From 8fa71b950645228fd8507953209963248263f17f Mon Sep 17 00:00:00 2001 From: Norman Barker Date: Mon, 13 Apr 2015 10:44:09 -0600 Subject: [PATCH 1/3] deleted spatialite 4.0.0 --- src/spatialite/AUTHORS | 13 - src/spatialite/Android.mk | 49 - src/spatialite/COPYING | 478 - src/spatialite/Doxyfile.in | 1691 -- src/spatialite/INSTALL | 183 - src/spatialite/Makefile.am | 20 - src/spatialite/Makefile.in | 846 - src/spatialite/README | 173 - src/spatialite/README.coverage | 12 - src/spatialite/aclocal.m4 | 1028 - src/spatialite/config-msvc.h | 222 - src/spatialite/config.guess | 1501 - src/spatialite/config.h.in | 216 - src/spatialite/config.sub | 1705 -- src/spatialite/configure | 20644 -------------- src/spatialite/configure.ac | 307 - src/spatialite/depcomp | 630 - src/spatialite/examples/Makefile.am | 8 - src/spatialite/examples/Makefile.in | 539 - src/spatialite/examples/demo1.c | 368 - src/spatialite/examples/demo2.c | 542 - src/spatialite/examples/demo3.c | 371 - src/spatialite/examples/demo4.c | 368 - src/spatialite/examples/demo5.c | 332 - src/spatialite/examples/examples.doxy | 611 - src/spatialite/install-sh | 520 - src/spatialite/ltmain.sh | 9636 ------- src/spatialite/m4/libtool.m4 | 7835 ------ src/spatialite/m4/ltoptions.m4 | 369 - src/spatialite/m4/ltsugar.m4 | 123 - src/spatialite/m4/ltversion.m4 | 23 - src/spatialite/m4/lt~obsolete.m4 | 98 - src/spatialite/mainpage.doxy | 140 - src/spatialite/makefile.vc | 97 - src/spatialite/missing | 376 - src/spatialite/nmake.opt | 12 - src/spatialite/spatialite-sql-latest.html | 2299 -- src/spatialite/spatialite.pc.in | 12 - src/spatialite/src/Makefile.am | 40 - src/spatialite/src/Makefile.in | 747 - src/spatialite/src/gaiaaux/Makefile.am | 10 - src/spatialite/src/gaiaaux/Makefile.in | 511 - src/spatialite/src/gaiaaux/gg_sqlaux.c | 802 - src/spatialite/src/gaiaaux/gg_utf8.c | 188 - src/spatialite/src/gaiaexif/Makefile.am | 9 - src/spatialite/src/gaiaexif/Makefile.in | 508 - src/spatialite/src/gaiaexif/gaia_exif.c | 2736 -- src/spatialite/src/gaiageo/Ewkt.c | 1951 -- src/spatialite/src/gaiageo/Ewkt.h | 21 - src/spatialite/src/gaiageo/Gml.c | 1053 - src/spatialite/src/gaiageo/Gml.h | 8 - src/spatialite/src/gaiageo/Kml.c | 1053 - src/spatialite/src/gaiageo/Kml.h | 8 - src/spatialite/src/gaiageo/Makefile.am | 35 - src/spatialite/src/gaiageo/Makefile.in | 704 - src/spatialite/src/gaiageo/flex/Makefile.am | 4 - src/spatialite/src/gaiageo/flex/Makefile.in | 392 - src/spatialite/src/gaiageo/flex/ReadMe.txt | 116 - src/spatialite/src/gaiageo/flex/ewktLexer.l | 89 - .../src/gaiageo/flex/geoJsonLexer.l | 94 - src/spatialite/src/gaiageo/flex/gmlLexer.l | 78 - src/spatialite/src/gaiageo/flex/kmlLexer.l | 78 - .../src/gaiageo/flex/vanuatuLexer.l | 145 - src/spatialite/src/gaiageo/geoJSON.c | 1808 -- src/spatialite/src/gaiageo/geoJSON.h | 24 - src/spatialite/src/gaiageo/gg_advanced.c | 2045 -- src/spatialite/src/gaiageo/gg_endian.c | 648 - src/spatialite/src/gaiageo/gg_ewkt.c | 2092 -- src/spatialite/src/gaiageo/gg_extras.c | 1189 - src/spatialite/src/gaiageo/gg_geoJSON.c | 1491 - src/spatialite/src/gaiageo/gg_geodesic.c | 405 - src/spatialite/src/gaiageo/gg_geometries.c | 4538 --- src/spatialite/src/gaiageo/gg_geoscvt.c | 1212 - src/spatialite/src/gaiageo/gg_gml.c | 3315 --- src/spatialite/src/gaiageo/gg_kml.c | 2136 -- src/spatialite/src/gaiageo/gg_lwgeom.c | 1762 -- src/spatialite/src/gaiageo/gg_relations.c | 4267 --- src/spatialite/src/gaiageo/gg_shape.c | 4903 ---- src/spatialite/src/gaiageo/gg_transform.c | 1934 -- src/spatialite/src/gaiageo/gg_vanuatu.c | 2103 -- src/spatialite/src/gaiageo/gg_voronoj.c | 1837 -- src/spatialite/src/gaiageo/gg_wkb.c | 6347 ----- src/spatialite/src/gaiageo/gg_wkt.c | 4174 --- src/spatialite/src/gaiageo/lemon/Ewkt.y | 852 - src/spatialite/src/gaiageo/lemon/Gml.y | 184 - src/spatialite/src/gaiageo/lemon/Kml.y | 184 - src/spatialite/src/gaiageo/lemon/Makefile.am | 5 - src/spatialite/src/gaiageo/lemon/Makefile.in | 590 - src/spatialite/src/gaiageo/lemon/ReadMe.txt | 161 - src/spatialite/src/gaiageo/lemon/geoJSON.y | 745 - .../src/gaiageo/lemon/lemon_src/Makefile.am | 3 - .../src/gaiageo/lemon/lemon_src/Makefile.in | 390 - .../src/gaiageo/lemon/lemon_src/lemon.c | 4889 ---- .../src/gaiageo/lemon/lemon_src/lempar.c | 842 - src/spatialite/src/gaiageo/lemon/vanuatuWkt.y | 901 - src/spatialite/src/gaiageo/lex.Ewkt.c | 2079 -- src/spatialite/src/gaiageo/lex.GeoJson.c | 2132 -- src/spatialite/src/gaiageo/lex.Gml.c | 1967 -- src/spatialite/src/gaiageo/lex.Kml.c | 1967 -- src/spatialite/src/gaiageo/lex.VanuatuWkt.c | 2219 -- src/spatialite/src/gaiageo/vanuatuWkt.c | 1940 -- src/spatialite/src/gaiageo/vanuatuWkt.h | 33 - src/spatialite/src/headers/Makefile.am | 16 - src/spatialite/src/headers/Makefile.in | 513 - src/spatialite/src/headers/spatialite.h | 529 - src/spatialite/src/headers/spatialite/debug.h | 77 - .../src/headers/spatialite/gaiaaux.h | 300 - .../src/headers/spatialite/gaiaexif.h | 648 - .../src/headers/spatialite/gaiageo.h | 76 - .../src/headers/spatialite/gg_advanced.h | 1578 -- .../src/headers/spatialite/gg_const.h | 573 - .../src/headers/spatialite/gg_core.h | 1781 -- .../src/headers/spatialite/gg_dynamic.h | 420 - .../src/headers/spatialite/gg_formats.h | 1534 -- .../src/headers/spatialite/gg_mbr.h | 464 - .../src/headers/spatialite/gg_structs.h | 820 - .../src/headers/spatialite/spatialite.h | 52 - .../src/headers/spatialite/sqlite.h | 58 - .../src/headers/spatialite_private.h | 179 - src/spatialite/src/shapefiles/Makefile.am | 9 - src/spatialite/src/shapefiles/Makefile.in | 508 - src/spatialite/src/shapefiles/shapefiles.c | 5026 ---- src/spatialite/src/spatialite/Makefile.am | 20 - src/spatialite/src/spatialite/Makefile.in | 606 - src/spatialite/src/spatialite/mbrcache.c | 1531 -- src/spatialite/src/spatialite/metatables.c | 5922 ---- src/spatialite/src/spatialite/spatialite.c | 22698 ---------------- src/spatialite/src/spatialite/statistics.c | 2169 -- src/spatialite/src/spatialite/virtualXL.c | 937 - src/spatialite/src/spatialite/virtualdbf.c | 906 - src/spatialite/src/spatialite/virtualfdo.c | 2196 -- .../src/spatialite/virtualnetwork.c | 2262 -- src/spatialite/src/spatialite/virtualshape.c | 1193 - .../src/spatialite/virtualspatialindex.c | 923 - src/spatialite/src/srsinit/Makefile.am | 60 - src/spatialite/src/srsinit/Makefile.in | 1121 - src/spatialite/src/srsinit/epsg_inlined_00.c | 3384 --- src/spatialite/src/srsinit/epsg_inlined_01.c | 3572 --- src/spatialite/src/srsinit/epsg_inlined_02.c | 3680 --- src/spatialite/src/srsinit/epsg_inlined_03.c | 3240 --- src/spatialite/src/srsinit/epsg_inlined_04.c | 3466 --- src/spatialite/src/srsinit/epsg_inlined_05.c | 3492 --- src/spatialite/src/srsinit/epsg_inlined_06.c | 3494 --- src/spatialite/src/srsinit/epsg_inlined_07.c | 3662 --- src/spatialite/src/srsinit/epsg_inlined_08.c | 3936 --- src/spatialite/src/srsinit/epsg_inlined_09.c | 3398 --- src/spatialite/src/srsinit/epsg_inlined_10.c | 3482 --- src/spatialite/src/srsinit/epsg_inlined_11.c | 3554 --- src/spatialite/src/srsinit/epsg_inlined_12.c | 3492 --- src/spatialite/src/srsinit/epsg_inlined_13.c | 3570 --- src/spatialite/src/srsinit/epsg_inlined_14.c | 3862 --- src/spatialite/src/srsinit/epsg_inlined_15.c | 3828 --- src/spatialite/src/srsinit/epsg_inlined_16.c | 3804 --- src/spatialite/src/srsinit/epsg_inlined_17.c | 3398 --- src/spatialite/src/srsinit/epsg_inlined_18.c | 2786 -- src/spatialite/src/srsinit/epsg_inlined_19.c | 2050 -- src/spatialite/src/srsinit/epsg_inlined_20.c | 1898 -- src/spatialite/src/srsinit/epsg_inlined_21.c | 3186 --- src/spatialite/src/srsinit/epsg_inlined_22.c | 2576 -- src/spatialite/src/srsinit/epsg_inlined_23.c | 1960 -- src/spatialite/src/srsinit/epsg_inlined_24.c | 2800 -- src/spatialite/src/srsinit/epsg_inlined_25.c | 3310 --- src/spatialite/src/srsinit/epsg_inlined_26.c | 3214 --- src/spatialite/src/srsinit/epsg_inlined_27.c | 3446 --- src/spatialite/src/srsinit/epsg_inlined_28.c | 3460 --- src/spatialite/src/srsinit/epsg_inlined_29.c | 3442 --- src/spatialite/src/srsinit/epsg_inlined_30.c | 3384 --- src/spatialite/src/srsinit/epsg_inlined_31.c | 3744 --- src/spatialite/src/srsinit/epsg_inlined_32.c | 3454 --- src/spatialite/src/srsinit/epsg_inlined_33.c | 3614 --- src/spatialite/src/srsinit/epsg_inlined_34.c | 3486 --- src/spatialite/src/srsinit/epsg_inlined_35.c | 3502 --- src/spatialite/src/srsinit/epsg_inlined_36.c | 3582 --- src/spatialite/src/srsinit/epsg_inlined_37.c | 3460 --- src/spatialite/src/srsinit/epsg_inlined_38.c | 3290 --- src/spatialite/src/srsinit/epsg_inlined_39.c | 3290 --- src/spatialite/src/srsinit/epsg_inlined_40.c | 122 - .../src/srsinit/epsg_inlined_extra.c | 243 - .../src/srsinit/epsg_inlined_prussian.c | 1152 - .../src/srsinit/epsg_inlined_wgs84_00.c | 2888 -- .../src/srsinit/epsg_inlined_wgs84_01.c | 842 - .../src/srsinit/epsg_update/Makefile.am | 3 - .../src/srsinit/epsg_update/Makefile.in | 390 - .../src/srsinit/epsg_update/README.txt | 57 - .../src/srsinit/epsg_update/auto_epsg.c | 2301 -- src/spatialite/src/srsinit/srs_init.c | 551 - src/spatialite/src/versioninfo/version.c | 61 - src/spatialite/src/virtualtext/Makefile.am | 9 - src/spatialite/src/virtualtext/Makefile.in | 508 - src/spatialite/src/virtualtext/virtualtext.c | 1803 -- src/spatialite/test/Makefile.am | 2784 -- src/spatialite/test/Makefile.in | 3669 --- src/spatialite/test/WritingSQLTestCase.txt | 195 - src/spatialite/test/asprintf4win.h | 80 - src/spatialite/test/check_bufovflw.c | 1627 -- src/spatialite/test/check_create.c | 143 - src/spatialite/test/check_dbf_load.c | 99 - src/spatialite/test/check_endian.c | 337 - src/spatialite/test/check_exif.c | 569 - src/spatialite/test/check_extension.c | 174 - .../test/check_extra_relations_fncts.c | 236 - src/spatialite/test/check_fdo1.c | 425 - src/spatialite/test/check_fdo2.c | 881 - src/spatialite/test/check_fdo3.c | 172 - src/spatialite/test/check_fdo_bufovflw.c | 294 - src/spatialite/test/check_gaia_utf8.c | 117 - src/spatialite/test/check_gaia_util.c | 413 - src/spatialite/test/check_geom_aux.c | 995 - src/spatialite/test/check_geometry_cols.c | 195 - src/spatialite/test/check_geoscvt_fncts.c | 101 - src/spatialite/test/check_init.c | 60 - src/spatialite/test/check_init2.c | 292 - src/spatialite/test/check_math_funcs.c | 95 - src/spatialite/test/check_mbrcache.c | 491 - src/spatialite/test/check_recover_geom.c | 1394 - src/spatialite/test/check_relations_fncts.c | 793 - src/spatialite/test/check_shp_load.c | 96 - src/spatialite/test/check_shp_load_3d.c | 506 - src/spatialite/test/check_spatialindex.c | 733 - src/spatialite/test/check_sql_stmt.c | 577 - src/spatialite/test/check_version.c | 62 - src/spatialite/test/check_virtual_ovflw.c | 329 - src/spatialite/test/check_virtualtable1.c | 347 - src/spatialite/test/check_virtualtable2.c | 824 - src/spatialite/test/check_virtualtable3.c | 587 - src/spatialite/test/check_virtualtable4.c | 350 - src/spatialite/test/check_virtualtable5.c | 174 - src/spatialite/test/check_virtualtable6.c | 217 - src/spatialite/test/check_xls_load.c | 130 - src/spatialite/test/fnmatch4win.h | 63 - src/spatialite/test/fnmatch_impl4win.h | 193 - src/spatialite/test/scandir4win.h | 168 - src/spatialite/test/shape_3d.c | 185 - src/spatialite/test/shape_cp1252.c | 136 - src/spatialite/test/shape_primitives.c | 673 - src/spatialite/test/shape_utf8_1.c | 341 - src/spatialite/test/shape_utf8_1ex.c | 342 - src/spatialite/test/shape_utf8_2.c | 189 - src/spatialite/test/shapetest1.dbf | Bin 199 -> 0 bytes src/spatialite/test/shapetest1.prj | 1 - src/spatialite/test/shapetest1.qpj | 1 - src/spatialite/test/shapetest1.shp | Bin 156 -> 0 bytes src/spatialite/test/shapetest1.shx | Bin 116 -> 0 bytes .../test/shp/foggia/local_councils.dbf | Bin 10297 -> 0 bytes .../test/shp/foggia/local_councils.prj | 1 - .../test/shp/foggia/local_councils.shp | Bin 935760 -> 0 bytes .../test/shp/foggia/local_councils.shx | Bin 588 -> 0 bytes src/spatialite/test/shp/gaza/aeroway.dbf | Bin 212 -> 0 bytes src/spatialite/test/shp/gaza/aeroway.prj | 1 - src/spatialite/test/shp/gaza/aeroway.shp | Bin 604 -> 0 bytes src/spatialite/test/shp/gaza/aeroway.shx | Bin 108 -> 0 bytes src/spatialite/test/shp/gaza/barrier.dbf | Bin 575 -> 0 bytes src/spatialite/test/shp/gaza/barrier.prj | 1 - src/spatialite/test/shp/gaza/barrier.shp | Bin 240 -> 0 bytes src/spatialite/test/shp/gaza/barrier.shx | Bin 140 -> 0 bytes src/spatialite/test/shp/gaza/route.dbf | Bin 220 -> 0 bytes src/spatialite/test/shp/gaza/route.prj | 1 - src/spatialite/test/shp/gaza/route.shp | Bin 11020 -> 0 bytes src/spatialite/test/shp/gaza/route.shx | Bin 116 -> 0 bytes src/spatialite/test/shp/merano-3d/points.dbf | Bin 7962 -> 0 bytes src/spatialite/test/shp/merano-3d/points.prj | 1 - src/spatialite/test/shp/merano-3d/points.shp | Bin 660 -> 0 bytes src/spatialite/test/shp/merano-3d/points.shx | Bin 260 -> 0 bytes .../test/shp/merano-3d/polygons.dbf | Bin 4382 -> 0 bytes .../test/shp/merano-3d/polygons.prj | 1 - .../test/shp/merano-3d/polygons.shp | Bin 7388 -> 0 bytes .../test/shp/merano-3d/polygons.shx | Bin 180 -> 0 bytes src/spatialite/test/shp/merano-3d/roads.dbf | Bin 7714 -> 0 bytes src/spatialite/test/shp/merano-3d/roads.prj | 1 - src/spatialite/test/shp/merano-3d/roads.shp | Bin 5716 -> 0 bytes src/spatialite/test/shp/merano-3d/roads.shx | Bin 244 -> 0 bytes .../test/shp/new-caledonia/buildings.dbf | Bin 952 -> 0 bytes .../test/shp/new-caledonia/buildings.prj | 1 - .../test/shp/new-caledonia/buildings.shp | Bin 2404 -> 0 bytes .../test/shp/new-caledonia/buildings.shx | Bin 180 -> 0 bytes .../test/shp/new-caledonia/points.dbf | Bin 1304 -> 0 bytes .../test/shp/new-caledonia/points.prj | 1 - .../test/shp/new-caledonia/points.shp | Bin 380 -> 0 bytes .../test/shp/new-caledonia/points.shx | Bin 180 -> 0 bytes .../test/shp/new-caledonia/railways.dbf | Bin 1117 -> 0 bytes .../test/shp/new-caledonia/railways.shp | Bin 2092 -> 0 bytes .../test/shp/new-caledonia/railways.shx | Bin 204 -> 0 bytes src/spatialite/test/shp/taiwan/hystoric.dbf | Bin 940 -> 0 bytes src/spatialite/test/shp/taiwan/hystoric.prj | 1 - src/spatialite/test/shp/taiwan/hystoric.shp | Bin 520 -> 0 bytes src/spatialite/test/shp/taiwan/hystoric.shx | Bin 220 -> 0 bytes src/spatialite/test/shp/taiwan/leisure.dbf | Bin 385 -> 0 bytes src/spatialite/test/shp/taiwan/leisure.prj | 1 - src/spatialite/test/shp/taiwan/leisure.shp | Bin 380 -> 0 bytes src/spatialite/test/shp/taiwan/leisure.shx | Bin 140 -> 0 bytes src/spatialite/test/shp/taiwan/route.dbf | Bin 302 -> 0 bytes src/spatialite/test/shp/taiwan/route.prj | 1 - src/spatialite/test/shp/taiwan/route.shp | Bin 9196 -> 0 bytes src/spatialite/test/shp/taiwan/route.shx | Bin 132 -> 0 bytes .../bdmpolyfromtext1.testcase | 9 - .../bdmpolyfromtext10.testcase | 9 - .../bdmpolyfromtext13.testcase | 9 - .../bdmpolyfromtext14.testcase | 9 - .../bdmpolyfromtext15.testcase | 8 - .../bdmpolyfromtext16.testcase | 8 - .../bdmpolyfromtext17.testcase | 9 - .../bdmpolyfromtext2.testcase | 9 - .../bdmpolyfromtext3.testcase | 9 - .../bdmpolyfromtext4.testcase | 9 - .../bdmpolyfromtext9.testcase | 9 - .../bdmpolyfromwkb1.testcase | 9 - .../bdmpolyfromwkb10.testcase | 9 - .../bdmpolyfromwkb11.testcase | 9 - .../bdmpolyfromwkb12.testcase | 9 - .../bdmpolyfromwkb13.testcase | 9 - .../bdmpolyfromwkb14.testcase | 9 - .../bdmpolyfromwkb15.testcase | 9 - .../bdmpolyfromwkb16.testcase | 8 - .../bdmpolyfromwkb17.testcase | 8 - .../bdmpolyfromwkb18.testcase | 8 - .../bdmpolyfromwkb19.testcase | 8 - .../bdmpolyfromwkb2.testcase | 9 - .../bdmpolyfromwkb3.testcase | 9 - .../bdmpolyfromwkb4.testcase | 9 - .../bdmpolyfromwkb5.testcase | 9 - .../bdmpolyfromwkb6.testcase | 9 - .../bdmpolyfromwkb7.testcase | 9 - .../bdmpolyfromwkb8.testcase | 9 - .../bdmpolyfromwkb9.testcase | 9 - .../bdpolyfromtext1.testcase | 9 - .../bdpolyfromtext10.testcase | 9 - .../bdpolyfromtext11.testcase | 9 - .../bdpolyfromtext12.testcase | 9 - .../bdpolyfromtext13.testcase | 9 - .../bdpolyfromtext14.testcase | 9 - .../bdpolyfromtext15.testcase | 9 - .../bdpolyfromtext16.testcase | 8 - .../bdpolyfromtext2.testcase | 9 - .../bdpolyfromtext3.testcase | 9 - .../bdpolyfromtext4.testcase | 9 - .../bdpolyfromtext5.testcase | 9 - .../bdpolyfromtext6.testcase | 9 - .../bdpolyfromtext7.testcase | 9 - .../bdpolyfromtext8.testcase | 9 - .../bdpolyfromtext9.testcase | 9 - .../bdpolyfromwkb1.testcase | 9 - .../bdpolyfromwkb10.testcase | 9 - .../bdpolyfromwkb11.testcase | 9 - .../bdpolyfromwkb12.testcase | 9 - .../bdpolyfromwkb13.testcase | 9 - .../bdpolyfromwkb14.testcase | 9 - .../bdpolyfromwkb15.testcase | 9 - .../bdpolyfromwkb16.testcase | 8 - .../bdpolyfromwkb17.testcase | 8 - .../bdpolyfromwkb18.testcase | 8 - .../bdpolyfromwkb19.testcase | 8 - .../bdpolyfromwkb2.testcase | 9 - .../bdpolyfromwkb3.testcase | 9 - .../bdpolyfromwkb4.testcase | 9 - .../bdpolyfromwkb5.testcase | 9 - .../bdpolyfromwkb6.testcase | 9 - .../bdpolyfromwkb7.testcase | 9 - .../bdpolyfromwkb8.testcase | 9 - .../bdpolyfromwkb9.testcase | 9 - .../sql_stmt_geos_tests/boundary1.testcase | 7 - .../sql_stmt_geos_tests/boundary2.testcase | 7 - .../sql_stmt_geos_tests/boundary3.testcase | 7 - .../sql_stmt_geos_tests/boundary4.testcase | 7 - .../sql_stmt_geos_tests/boundary5.testcase | 7 - .../sql_stmt_geos_tests/boundary6.testcase | 7 - .../sql_stmt_geos_tests/boundary7.testcase | 7 - .../sql_stmt_geos_tests/boundary8.testcase | 7 - .../sql_stmt_geos_tests/boundary9.testcase | 7 - .../test/sql_stmt_geos_tests/buffer1.testcase | 8 - .../sql_stmt_geos_tests/buffer10.testcase | 7 - .../test/sql_stmt_geos_tests/buffer2.testcase | 8 - .../test/sql_stmt_geos_tests/buffer3.testcase | 7 - .../test/sql_stmt_geos_tests/buffer4.testcase | 7 - .../test/sql_stmt_geos_tests/buffer5.testcase | 7 - .../test/sql_stmt_geos_tests/buffer6.testcase | 7 - .../test/sql_stmt_geos_tests/buffer7.testcase | 7 - .../test/sql_stmt_geos_tests/buffer8.testcase | 7 - .../test/sql_stmt_geos_tests/buffer9.testcase | 7 - .../sql_stmt_geos_tests/buildarea1.testcase | 7 - .../sql_stmt_geos_tests/buildarea2.testcase | 7 - .../sql_stmt_geos_tests/buildarea3.testcase | 7 - .../sql_stmt_geos_tests/buildarea4.testcase | 7 - .../sql_stmt_geos_tests/buildarea5.testcase | 7 - .../sql_stmt_geos_tests/buildarea6.testcase | 7 - .../sql_stmt_geos_tests/centroid1.testcase | 8 - .../sql_stmt_geos_tests/centroid2.testcase | 8 - .../sql_stmt_geos_tests/centroid3.testcase | 9 - .../sql_stmt_geos_tests/centroid4.testcase | 9 - .../sql_stmt_geos_tests/centroid5.testcase | 8 - .../sql_stmt_geos_tests/centroid6.testcase | 8 - .../sql_stmt_geos_tests/centroid7.testcase | 8 - .../sql_stmt_geos_tests/centroid8.testcase | 8 - .../sql_stmt_geos_tests/convexhull1.testcase | 7 - .../sql_stmt_geos_tests/convexhull10.testcase | 7 - .../sql_stmt_geos_tests/convexhull2.testcase | 7 - .../sql_stmt_geos_tests/convexhull3.testcase | 7 - .../sql_stmt_geos_tests/convexhull4.testcase | 7 - .../sql_stmt_geos_tests/convexhull5.testcase | 7 - .../sql_stmt_geos_tests/convexhull6.testcase | 7 - .../sql_stmt_geos_tests/convexhull7.testcase | 7 - .../sql_stmt_geos_tests/convexhull8.testcase | 7 - .../sql_stmt_geos_tests/convexhull9.testcase | 7 - .../sql_stmt_geos_tests/difference1.testcase | 9 - .../sql_stmt_geos_tests/difference10.testcase | 7 - .../sql_stmt_geos_tests/difference11.testcase | 8 - .../sql_stmt_geos_tests/difference12.testcase | 8 - .../sql_stmt_geos_tests/difference2.testcase | 7 - .../sql_stmt_geos_tests/difference3.testcase | 8 - .../sql_stmt_geos_tests/difference4.testcase | 8 - .../sql_stmt_geos_tests/difference6.testcase | 8 - .../sql_stmt_geos_tests/difference7.testcase | 8 - .../sql_stmt_geos_tests/difference8.testcase | 7 - .../sql_stmt_geos_tests/difference9.testcase | 7 - .../sql_stmt_geos_tests/distance1.testcase | 8 - .../sql_stmt_geos_tests/distance10.testcase | 8 - .../sql_stmt_geos_tests/distance2.testcase | 8 - .../sql_stmt_geos_tests/distance3.testcase | 8 - .../sql_stmt_geos_tests/distance4.testcase | 8 - .../sql_stmt_geos_tests/distance5.testcase | 8 - .../sql_stmt_geos_tests/distance6.testcase | 8 - .../sql_stmt_geos_tests/distance7.testcase | 8 - .../sql_stmt_geos_tests/distance8.testcase | 8 - .../sql_stmt_geos_tests/distance9.testcase | 8 - .../intersection1.testcase | 8 - .../intersection10.testcase | 8 - .../intersection11.testcase | 8 - .../intersection12.testcase | 8 - .../intersection2.testcase | 8 - .../intersection3.testcase | 8 - .../intersection4.testcase | 8 - .../intersection5.testcase | 8 - .../intersection6.testcase | 8 - .../intersection7.testcase | 8 - .../intersection8.testcase | 8 - .../intersection9.testcase | 8 - .../sql_stmt_geos_tests/isclosed1.testcase | 7 - .../sql_stmt_geos_tests/isclosed10.testcase | 7 - .../sql_stmt_geos_tests/isclosed2.testcase | 8 - .../sql_stmt_geos_tests/isclosed3.testcase | 7 - .../sql_stmt_geos_tests/isclosed4.testcase | 7 - .../sql_stmt_geos_tests/isclosed5.testcase | 7 - .../sql_stmt_geos_tests/isclosed6.testcase | 7 - .../sql_stmt_geos_tests/isclosed7.testcase | 7 - .../sql_stmt_geos_tests/isclosed8.testcase | 7 - .../sql_stmt_geos_tests/isclosed9.testcase | 7 - .../test/sql_stmt_geos_tests/isring1.testcase | 7 - .../test/sql_stmt_geos_tests/isring2.testcase | 8 - .../test/sql_stmt_geos_tests/isring3.testcase | 7 - .../test/sql_stmt_geos_tests/isring4.testcase | 7 - .../test/sql_stmt_geos_tests/isring5.testcase | 7 - .../test/sql_stmt_geos_tests/isring6.testcase | 7 - .../test/sql_stmt_geos_tests/isring7.testcase | 7 - .../test/sql_stmt_geos_tests/isring8.testcase | 7 - .../test/sql_stmt_geos_tests/isring9.testcase | 7 - .../sql_stmt_geos_tests/issimple1.testcase | 7 - .../sql_stmt_geos_tests/issimple2.testcase | 8 - .../sql_stmt_geos_tests/issimple3.testcase | 7 - .../sql_stmt_geos_tests/issimple4.testcase | 7 - .../sql_stmt_geos_tests/issimple5.testcase | 7 - .../sql_stmt_geos_tests/issimple6.testcase | 7 - .../sql_stmt_geos_tests/isvalid1.testcase | 7 - .../sql_stmt_geos_tests/isvalid10.testcase | 7 - .../sql_stmt_geos_tests/isvalid11.testcase | 7 - .../sql_stmt_geos_tests/isvalid12.testcase | 7 - .../sql_stmt_geos_tests/isvalid13.testcase | 7 - .../sql_stmt_geos_tests/isvalid14.testcase | 7 - .../sql_stmt_geos_tests/isvalid15.testcase | 7 - .../sql_stmt_geos_tests/isvalid16.testcase | 7 - .../sql_stmt_geos_tests/isvalid17.testcase | 7 - .../sql_stmt_geos_tests/isvalid18.testcase | 7 - .../sql_stmt_geos_tests/isvalid19.testcase | 7 - .../sql_stmt_geos_tests/isvalid2.testcase | 7 - .../sql_stmt_geos_tests/isvalid20.testcase | 7 - .../sql_stmt_geos_tests/isvalid3.testcase | 7 - .../sql_stmt_geos_tests/isvalid4.testcase | 7 - .../sql_stmt_geos_tests/isvalid5.testcase | 7 - .../sql_stmt_geos_tests/isvalid6.testcase | 7 - .../sql_stmt_geos_tests/isvalid7.testcase | 7 - .../sql_stmt_geos_tests/isvalid8.testcase | 7 - .../sql_stmt_geos_tests/isvalid9.testcase | 7 - .../pointonsurface1.testcase | 8 - .../pointonsurface2.testcase | 9 - .../pointonsurface3.testcase | 9 - .../pointonsurface4.testcase | 9 - .../pointonsurface5.testcase | 8 - .../pointonsurface6.testcase | 8 - .../pointonsurface7.testcase | 8 - .../sql_stmt_geos_tests/polygonize1.testcase | 10 - .../sql_stmt_geos_tests/polygonize10.testcase | 10 - .../sql_stmt_geos_tests/polygonize11.testcase | 10 - .../sql_stmt_geos_tests/polygonize12.testcase | 10 - .../sql_stmt_geos_tests/polygonize13.testcase | 10 - .../sql_stmt_geos_tests/polygonize14.testcase | 10 - .../sql_stmt_geos_tests/polygonize2.testcase | 10 - .../sql_stmt_geos_tests/polygonize3.testcase | 10 - .../sql_stmt_geos_tests/polygonize4.testcase | 10 - .../sql_stmt_geos_tests/polygonize5.testcase | 10 - .../sql_stmt_geos_tests/polygonize6.testcase | 10 - .../sql_stmt_geos_tests/polygonize7.testcase | 10 - .../sql_stmt_geos_tests/polygonize8.testcase | 10 - .../sql_stmt_geos_tests/polygonize9.testcase | 10 - .../ptdistancewithin1.testcase | 7 - .../ptdistancewithin10.testcase | 7 - .../ptdistancewithin11.testcase | 7 - .../ptdistancewithin12.testcase | 7 - .../ptdistancewithin13.testcase | 7 - .../ptdistancewithin14.testcase | 7 - .../ptdistancewithin15.testcase | 7 - .../ptdistancewithin16.testcase | 7 - .../ptdistancewithin17.testcase | 7 - .../ptdistancewithin18.testcase | 7 - .../ptdistancewithin2.testcase | 7 - .../ptdistancewithin3.testcase | 7 - .../ptdistancewithin4.testcase | 7 - .../ptdistancewithin5.testcase | 7 - .../ptdistancewithin6.testcase | 7 - .../ptdistancewithin7.testcase | 7 - .../ptdistancewithin8.testcase | 7 - .../ptdistancewithin9.testcase | 7 - .../ptdistwithin1.testcase | 7 - .../ptdistwithin10.testcase | 7 - .../ptdistwithin11.testcase | 7 - .../ptdistwithin12.testcase | 7 - .../ptdistwithin13.testcase | 7 - .../ptdistwithin14.testcase | 7 - .../ptdistwithin15.testcase | 7 - .../ptdistwithin16.testcase | 7 - .../ptdistwithin2.testcase | 7 - .../ptdistwithin3.testcase | 7 - .../ptdistwithin4.testcase | 7 - .../ptdistwithin5.testcase | 7 - .../ptdistwithin6.testcase | 7 - .../ptdistwithin7.testcase | 7 - .../ptdistwithin8.testcase | 7 - .../ptdistwithin9.testcase | 7 - .../test/sql_stmt_geos_tests/relate1.testcase | 11 - .../test/sql_stmt_geos_tests/relate2.testcase | 7 - .../test/sql_stmt_geos_tests/relate3.testcase | 7 - .../test/sql_stmt_geos_tests/relate4.testcase | 7 - .../test/sql_stmt_geos_tests/relate5.testcase | 7 - .../test/sql_stmt_geos_tests/relate6.testcase | 7 - .../test/sql_stmt_geos_tests/relate7.testcase | 7 - .../test/sql_stmt_geos_tests/relate8.testcase | 7 - .../test/sql_stmt_geos_tests/relate9.testcase | 7 - .../sql_stmt_geos_tests/relations1.testcase | 21 - .../sql_stmt_geos_tests/relations2.testcase | 21 - .../sql_stmt_geos_tests/relations3.testcase | 21 - .../sql_stmt_geos_tests/relations4.testcase | 21 - .../sql_stmt_geos_tests/relations5.testcase | 21 - .../sql_stmt_geos_tests/relations6.testcase | 21 - .../sql_stmt_geos_tests/relations7.testcase | 21 - .../sql_stmt_geos_tests/relations8.testcase | 21 - .../sql_stmt_geos_tests/routing6.testcase | 10 - .../sql_stmt_geos_tests/simplify1.testcase | 10 - .../sql_stmt_geos_tests/simplify10.testcase | 8 - .../sql_stmt_geos_tests/simplify11.testcase | 8 - .../sql_stmt_geos_tests/simplify12.testcase | 10 - .../sql_stmt_geos_tests/simplify13.testcase | 10 - .../sql_stmt_geos_tests/simplify14.testcase | 10 - .../sql_stmt_geos_tests/simplify15.testcase | 8 - .../sql_stmt_geos_tests/simplify16.testcase | 8 - .../sql_stmt_geos_tests/simplify2.testcase | 10 - .../sql_stmt_geos_tests/simplify3.testcase | 10 - .../sql_stmt_geos_tests/simplify4.testcase | 8 - .../sql_stmt_geos_tests/simplify5.testcase | 8 - .../sql_stmt_geos_tests/simplify6.testcase | 8 - .../sql_stmt_geos_tests/simplify7.testcase | 8 - .../sql_stmt_geos_tests/simplify8.testcase | 8 - .../sql_stmt_geos_tests/simplify9.testcase | 8 - .../sql_stmt_geos_tests/st_area1.testcase | 7 - .../sql_stmt_geos_tests/st_area2.testcase | 7 - .../sql_stmt_geos_tests/st_area3.testcase | 7 - .../sql_stmt_geos_tests/st_area4.testcase | 7 - .../sql_stmt_geos_tests/st_area5.testcase | 7 - .../sql_stmt_geos_tests/st_area6.testcase | 7 - .../sql_stmt_geos_tests/st_area7.testcase | 7 - .../sql_stmt_geos_tests/st_area8.testcase | 7 - .../sql_stmt_geos_tests/st_area9.testcase | 7 - .../sql_stmt_geos_tests/st_length1.testcase | 7 - .../sql_stmt_geos_tests/st_length10.testcase | 7 - .../sql_stmt_geos_tests/st_length11.testcase | 7 - .../sql_stmt_geos_tests/st_length12.testcase | 7 - .../sql_stmt_geos_tests/st_length13.testcase | 7 - .../sql_stmt_geos_tests/st_length14.testcase | 7 - .../sql_stmt_geos_tests/st_length15.testcase | 7 - .../sql_stmt_geos_tests/st_length16.testcase | 7 - .../sql_stmt_geos_tests/st_length17.testcase | 7 - .../sql_stmt_geos_tests/st_length18.testcase | 7 - .../sql_stmt_geos_tests/st_length2.testcase | 7 - .../sql_stmt_geos_tests/st_length3.testcase | 7 - .../sql_stmt_geos_tests/st_length4.testcase | 7 - .../sql_stmt_geos_tests/st_length5.testcase | 7 - .../sql_stmt_geos_tests/st_length6.testcase | 7 - .../sql_stmt_geos_tests/st_length7.testcase | 7 - .../sql_stmt_geos_tests/st_length8.testcase | 7 - .../sql_stmt_geos_tests/st_length9.testcase | 7 - .../st_perimeter1.testcase | 7 - .../st_perimeter10.testcase | 7 - .../st_perimeter11.testcase | 7 - .../st_perimeter12.testcase | 7 - .../st_perimeter13.testcase | 7 - .../st_perimeter14.testcase | 7 - .../st_perimeter15.testcase | 7 - .../st_perimeter16.testcase | 7 - .../st_perimeter17.testcase | 7 - .../st_perimeter18.testcase | 7 - .../st_perimeter2.testcase | 7 - .../st_perimeter3.testcase | 7 - .../st_perimeter4.testcase | 7 - .../st_perimeter5.testcase | 7 - .../st_perimeter6.testcase | 7 - .../st_perimeter7.testcase | 7 - .../st_perimeter8.testcase | 7 - .../st_perimeter9.testcase | 7 - .../symdifference1.testcase | 9 - .../symdifference10.testcase | 8 - .../symdifference11.testcase | 8 - .../symdifference2.testcase | 9 - .../symdifference3.testcase | 9 - .../symdifference4.testcase | 9 - .../symdifference5.testcase | 9 - .../symdifference6.testcase | 9 - .../symdifference7.testcase | 9 - .../symdifference8.testcase | 9 - .../symdifference9.testcase | 9 - .../test/sql_stmt_geos_tests/union1.testcase | 9 - .../test/sql_stmt_geos_tests/union10.testcase | 8 - .../test/sql_stmt_geos_tests/union11.testcase | 8 - .../test/sql_stmt_geos_tests/union12.testcase | 8 - .../test/sql_stmt_geos_tests/union13.testcase | 8 - .../test/sql_stmt_geos_tests/union14.testcase | 8 - .../test/sql_stmt_geos_tests/union15.testcase | 8 - .../test/sql_stmt_geos_tests/union16.testcase | 8 - .../test/sql_stmt_geos_tests/union17.testcase | 7 - .../test/sql_stmt_geos_tests/union18.testcase | 7 - .../test/sql_stmt_geos_tests/union19.testcase | 7 - .../test/sql_stmt_geos_tests/union2.testcase | 7 - .../test/sql_stmt_geos_tests/union20.testcase | 7 - .../test/sql_stmt_geos_tests/union21.testcase | 8 - .../test/sql_stmt_geos_tests/union22.testcase | 7 - .../test/sql_stmt_geos_tests/union23.testcase | 7 - .../test/sql_stmt_geos_tests/union24.testcase | 7 - .../test/sql_stmt_geos_tests/union25.testcase | 7 - .../test/sql_stmt_geos_tests/union26.testcase | 7 - .../test/sql_stmt_geos_tests/union27.testcase | 9 - .../test/sql_stmt_geos_tests/union28.testcase | 9 - .../test/sql_stmt_geos_tests/union29.testcase | 9 - .../test/sql_stmt_geos_tests/union3.testcase | 8 - .../test/sql_stmt_geos_tests/union4.testcase | 8 - .../test/sql_stmt_geos_tests/union5.testcase | 8 - .../test/sql_stmt_geos_tests/union6.testcase | 8 - .../test/sql_stmt_geos_tests/union7.testcase | 8 - .../test/sql_stmt_geos_tests/union8.testcase | 8 - .../test/sql_stmt_geos_tests/union9.testcase | 8 - .../closestpoint1.testcase | 8 - .../closestpoint10.testcase | 8 - .../closestpoint11.testcase | 8 - .../closestpoint12.testcase | 8 - .../closestpoint13.testcase | 8 - .../closestpoint14.testcase | 8 - .../closestpoint15.testcase | 8 - .../closestpoint16.testcase | 8 - .../closestpoint17.testcase | 8 - .../closestpoint18.testcase | 8 - .../closestpoint19.testcase | 8 - .../closestpoint2.testcase | 8 - .../closestpoint20.testcase | 8 - .../closestpoint21.testcase | 8 - .../closestpoint22.testcase | 8 - .../closestpoint3.testcase | 8 - .../closestpoint4.testcase | 8 - .../closestpoint5.testcase | 8 - .../closestpoint6.testcase | 8 - .../closestpoint7.testcase | 8 - .../closestpoint8.testcase | 8 - .../closestpoint9.testcase | 8 - .../coveredby1.testcase | 7 - .../coveredby2.testcase | 7 - .../covers1.testcase | 7 - .../covers2.testcase | 7 - .../covers_covered1.testcase | 17 - .../covers_covered2.testcase | 17 - .../covers_covered3.testcase | 17 - .../covers_covered4.testcase | 11 - .../covers_covered5.testcase | 11 - .../covers_covered6.testcase | 11 - .../covers_covered7.testcase | 11 - .../createtopo1.testcase | 7 - .../createtopo10.testcase | 7 - .../createtopo11.testcase | 7 - .../createtopo12.testcase | 7 - .../createtopo13.testcase | 7 - .../createtopo14.testcase | 7 - .../createtopo15.testcase | 7 - .../createtopo16.testcase | 7 - .../createtopo17.testcase | 7 - .../createtopo18.testcase | 7 - .../createtopo2.testcase | 7 - .../createtopo3.testcase | 7 - .../createtopo4.testcase | 7 - .../createtopo5.testcase | 7 - .../createtopo6.testcase | 7 - .../createtopo7.testcase | 7 - .../createtopo8.testcase | 7 - .../createtopo9.testcase | 7 - .../distance_geogr1.testcase | 8 - .../distance_geogr10.testcase | 8 - .../distance_geogr11.testcase | 8 - .../distance_geogr12.testcase | 8 - .../distance_geogr2.testcase | 8 - .../distance_geogr3.testcase | 8 - .../distance_geogr4.testcase | 8 - .../distance_geogr5.testcase | 8 - .../distance_geogr6.testcase | 8 - .../distance_geogr7.testcase | 8 - .../distance_geogr8.testcase | 8 - .../distance_geogr9.testcase | 8 - .../hausdorffdistance1.testcase | 8 - .../hausdorffdistance2.testcase | 8 - .../hausdorffdistance3.testcase | 8 - .../hausdorffdistance4.testcase | 8 - .../hausdorffdistance5.testcase | 8 - .../hausdorffdistance6.testcase | 8 - .../hausdorffdistance7.testcase | 8 - .../hexgrid1.testcase | 9 - .../hexgrid10.testcase | 9 - .../hexgrid11.testcase | 9 - .../hexgrid12.testcase | 9 - .../hexgrid13.testcase | 9 - .../hexgrid14.testcase | 9 - .../hexgrid15.testcase | 9 - .../hexgrid16.testcase | 9 - .../hexgrid17.testcase | 9 - .../hexgrid18.testcase | 9 - .../hexgrid19.testcase | 9 - .../hexgrid2.testcase | 9 - .../hexgrid20.testcase | 7 - .../hexgrid21.testcase | 10 - .../hexgrid22.testcase | 7 - .../hexgrid23.testcase | 7 - .../hexgrid3.testcase | 9 - .../hexgrid4.testcase | 9 - .../hexgrid5.testcase | 9 - .../hexgrid6.testcase | 9 - .../hexgrid7.testcase | 9 - .../hexgrid8.testcase | 9 - .../hexgrid9.testcase | 9 - .../interpolateequidistantpoint1.testcase | 7 - .../interpolateequidistantpoint10.testcase | 7 - .../interpolateequidistantpoint11.testcase | 7 - .../interpolateequidistantpoint12.testcase | 7 - .../interpolateequidistantpoint13.testcase | 7 - .../interpolateequidistantpoint14.testcase | 7 - .../interpolateequidistantpoint2.testcase | 7 - .../interpolateequidistantpoint3.testcase | 7 - .../interpolateequidistantpoint4.testcase | 7 - .../interpolateequidistantpoint5.testcase | 7 - .../interpolateequidistantpoint6.testcase | 7 - .../interpolateequidistantpoint7.testcase | 7 - .../interpolateequidistantpoint8.testcase | 7 - .../interpolateequidistantpoint9.testcase | 7 - .../interpolatepoint1.testcase | 7 - .../interpolatepoint10.testcase | 7 - .../interpolatepoint11.testcase | 7 - .../interpolatepoint12.testcase | 7 - .../interpolatepoint13.testcase | 7 - .../interpolatepoint14.testcase | 7 - .../interpolatepoint2.testcase | 7 - .../interpolatepoint3.testcase | 7 - .../interpolatepoint4.testcase | 7 - .../interpolatepoint5.testcase | 7 - .../interpolatepoint6.testcase | 7 - .../interpolatepoint7.testcase | 7 - .../interpolatepoint8.testcase | 7 - .../interpolatepoint9.testcase | 7 - .../linemerge1.testcase | 8 - .../linemerge10.testcase | 9 - .../linemerge2.testcase | 8 - .../linemerge3.testcase | 8 - .../linemerge4.testcase | 8 - .../linemerge5.testcase | 8 - .../linemerge6.testcase | 8 - .../linemerge7.testcase | 8 - .../linemerge8.testcase | 8 - .../linemerge9.testcase | 9 - .../linesnodes1.testcase | 7 - .../linesnodes10.testcase | 7 - .../linesnodes11.testcase | 7 - .../linesnodes12.testcase | 7 - .../linesnodes13.testcase | 7 - .../linesnodes14.testcase | 7 - .../linesnodes15.testcase | 7 - .../linesnodes16.testcase | 7 - .../linesnodes17.testcase | 7 - .../linesnodes18.testcase | 7 - .../linesnodes19.testcase | 7 - .../linesnodes2.testcase | 7 - .../linesnodes3.testcase | 7 - .../linesnodes4.testcase | 7 - .../linesnodes5.testcase | 7 - .../linesnodes6.testcase | 7 - .../linesnodes7.testcase | 7 - .../linesnodes8.testcase | 7 - .../linesnodes9.testcase | 7 - .../linesubstring1.testcase | 8 - .../linesubstring10.testcase | 8 - .../linesubstring11.testcase | 8 - .../linesubstring12.testcase | 8 - .../linesubstring13.testcase | 8 - .../linesubstring14.testcase | 8 - .../linesubstring15.testcase | 8 - .../linesubstring16.testcase | 8 - .../linesubstring17.testcase | 8 - .../linesubstring18.testcase | 8 - .../linesubstring19.testcase | 8 - .../linesubstring2.testcase | 8 - .../linesubstring20.testcase | 8 - .../linesubstring21.testcase | 8 - .../linesubstring22.testcase | 8 - .../linesubstring23.testcase | 8 - .../linesubstring24.testcase | 8 - .../linesubstring25.testcase | 8 - .../linesubstring26.testcase | 8 - .../linesubstring3.testcase | 8 - .../linesubstring4.testcase | 9 - .../linesubstring5.testcase | 8 - .../linesubstring6.testcase | 8 - .../linesubstring7.testcase | 9 - .../linesubstring8.testcase | 9 - .../linesubstring9.testcase | 9 - .../locatepoint1.testcase | 7 - .../locatepoint10.testcase | 7 - .../locatepoint11.testcase | 7 - .../locatepoint12.testcase | 7 - .../locatepoint2.testcase | 7 - .../locatepoint3.testcase | 7 - .../locatepoint4.testcase | 7 - .../locatepoint5.testcase | 7 - .../locatepoint6.testcase | 7 - .../locatepoint7.testcase | 7 - .../locatepoint8.testcase | 7 - .../locatepoint9.testcase | 7 - .../offsetcurve1.testcase | 9 - .../offsetcurve10.testcase | 9 - .../offsetcurve11.testcase | 9 - .../offsetcurve12.testcase | 9 - .../offsetcurve13.testcase | 9 - .../offsetcurve14.testcase | 9 - .../offsetcurve2.testcase | 10 - .../offsetcurve3.testcase | 10 - .../offsetcurve4.testcase | 9 - .../offsetcurve5.testcase | 9 - .../offsetcurve6.testcase | 9 - .../offsetcurve7.testcase | 10 - .../offsetcurve8.testcase | 9 - .../offsetcurve9.testcase | 9 - .../ringsnodes1.testcase | 7 - .../ringsnodes2.testcase | 7 - .../ringsnodes3.testcase | 7 - .../ringsnodes4.testcase | 7 - .../ringsnodes5.testcase | 7 - .../ringsnodes6.testcase | 7 - .../sharedpaths1.testcase | 7 - .../sharedpaths10.testcase | 7 - .../sharedpaths11.testcase | 7 - .../sharedpaths12.testcase | 7 - .../sharedpaths13.testcase | 7 - .../sharedpaths14.testcase | 7 - .../sharedpaths15.testcase | 7 - .../sharedpaths16.testcase | 7 - .../sharedpaths17.testcase | 7 - .../sharedpaths18.testcase | 7 - .../sharedpaths19.testcase | 7 - .../sharedpaths2.testcase | 7 - .../sharedpaths20.testcase | 7 - .../sharedpaths21.testcase | 7 - .../sharedpaths22.testcase | 7 - .../sharedpaths23.testcase | 7 - .../sharedpaths24.testcase | 7 - .../sharedpaths25.testcase | 7 - .../sharedpaths26.testcase | 7 - .../sharedpaths27.testcase | 7 - .../sharedpaths28.testcase | 7 - .../sharedpaths29.testcase | 7 - .../sharedpaths3.testcase | 7 - .../sharedpaths30.testcase | 7 - .../sharedpaths31.testcase | 7 - .../sharedpaths32.testcase | 7 - .../sharedpaths4.testcase | 7 - .../sharedpaths5.testcase | 7 - .../sharedpaths6.testcase | 7 - .../sharedpaths7.testcase | 7 - .../sharedpaths8.testcase | 7 - .../sharedpaths9.testcase | 7 - .../shortestline1.testcase | 8 - .../shortestline2.testcase | 8 - .../shortestline3.testcase | 8 - .../shortestline4.testcase | 8 - .../shortestline5.testcase | 8 - .../shortestline6.testcase | 8 - .../shortestline7.testcase | 8 - .../singlesidedbuffer1.testcase | 7 - .../singlesidedbuffer11.testcase | 7 - .../singlesidedbuffer12.testcase | 7 - .../singlesidedbuffer13.testcase | 7 - .../singlesidedbuffer14.testcase | 7 - .../singlesidedbuffer15.testcase | 7 - .../singlesidedbuffer16.testcase | 7 - .../singlesidedbuffer17.testcase | 7 - .../singlesidedbuffer2.testcase | 7 - .../singlesidedbuffer3.testcase | 7 - .../singlesidedbuffer4.testcase | 7 - .../singlesidedbuffer5.testcase | 7 - .../singlesidedbuffer6.testcase | 7 - .../singlesidedbuffer7.testcase | 7 - .../singlesidedbuffer8.testcase | 7 - .../singlesidedbuffer9.testcase | 7 - .../snap1.testcase | 7 - .../snap10.testcase | 7 - .../snap2.testcase | 7 - .../snap3.testcase | 7 - .../snap4.testcase | 7 - .../snap5.testcase | 7 - .../snap6.testcase | 7 - .../snap7.testcase | 7 - .../snap8.testcase | 7 - .../snap9.testcase | 7 - .../squaregrid1.testcase | 9 - .../squaregrid10.testcase | 9 - .../squaregrid11.testcase | 9 - .../squaregrid12.testcase | 9 - .../squaregrid13.testcase | 9 - .../squaregrid14.testcase | 9 - .../squaregrid15.testcase | 9 - .../squaregrid16.testcase | 9 - .../squaregrid17.testcase | 9 - .../squaregrid18.testcase | 9 - .../squaregrid19.testcase | 9 - .../squaregrid2.testcase | 9 - .../squaregrid20.testcase | 11 - .../squaregrid21.testcase | 9 - .../squaregrid22.testcase | 8 - .../squaregrid23.testcase | 7 - .../squaregrid3.testcase | 9 - .../squaregrid4.testcase | 9 - .../squaregrid5.testcase | 9 - .../squaregrid6.testcase | 9 - .../squaregrid7.testcase | 9 - .../squaregrid8.testcase | 9 - .../squaregrid9.testcase | 9 - .../trianggrid1.testcase | 9 - .../trianggrid10.testcase | 9 - .../trianggrid11.testcase | 9 - .../trianggrid12.testcase | 9 - .../trianggrid13.testcase | 9 - .../trianggrid14.testcase | 9 - .../trianggrid15.testcase | 9 - .../trianggrid16.testcase | 9 - .../trianggrid17.testcase | 9 - .../trianggrid18.testcase | 9 - .../trianggrid19.testcase | 9 - .../trianggrid2.testcase | 9 - .../trianggrid20.testcase | 10 - .../trianggrid21.testcase | 7 - .../trianggrid22.testcase | 10 - .../trianggrid23.testcase | 7 - .../trianggrid3.testcase | 9 - .../trianggrid4.testcase | 9 - .../trianggrid5.testcase | 9 - .../trianggrid6.testcase | 9 - .../trianggrid7.testcase | 9 - .../trianggrid8.testcase | 9 - .../trianggrid9.testcase | 9 - .../unaryunion1.testcase | 7 - .../unaryunion2.testcase | 7 - .../unaryunion3.testcase | 7 - .../unaryunion4.testcase | 7 - .../unaryunion5.testcase | 7 - .../unaryunion6.testcase | 7 - .../unaryunion7.testcase | 7 - .../unaryunion8.testcase | 7 - .../concave_hull1.testcase | 7 - .../concave_hull10.testcase | 7 - .../concave_hull11.testcase | 7 - .../concave_hull12.testcase | 7 - .../concave_hull13.testcase | 7 - .../concave_hull14.testcase | 7 - .../concave_hull15.testcase | 7 - .../concave_hull16.testcase | 7 - .../concave_hull17.testcase | 7 - .../concave_hull18.testcase | 7 - .../concave_hull19.testcase | 7 - .../concave_hull2.testcase | 7 - .../concave_hull3.testcase | 7 - .../concave_hull4.testcase | 7 - .../concave_hull5.testcase | 7 - .../concave_hull6.testcase | 7 - .../concave_hull7.testcase | 7 - .../concave_hull8.testcase | 7 - .../concave_hull9.testcase | 7 - .../delaunay1.testcase | 7 - .../delaunay10.testcase | 7 - .../delaunay11.testcase | 7 - .../delaunay12.testcase | 7 - .../delaunay13.testcase | 7 - .../delaunay14.testcase | 7 - .../delaunay15.testcase | 7 - .../delaunay16.testcase | 7 - .../delaunay17.testcase | 7 - .../delaunay18.testcase | 7 - .../delaunay19.testcase | 7 - .../delaunay2.testcase | 7 - .../delaunay3.testcase | 7 - .../delaunay4.testcase | 7 - .../delaunay5.testcase | 7 - .../delaunay6.testcase | 7 - .../delaunay7.testcase | 7 - .../delaunay8.testcase | 7 - .../delaunay9.testcase | 7 - .../voronoj1.testcase | 7 - .../voronoj10.testcase | 7 - .../voronoj11.testcase | 7 - .../voronoj12.testcase | 7 - .../voronoj13.testcase | 7 - .../voronoj14.testcase | 7 - .../voronoj15.testcase | 7 - .../voronoj16.testcase | 7 - .../voronoj17.testcase | 7 - .../voronoj18.testcase | 7 - .../voronoj19.testcase | 7 - .../voronoj2.testcase | 7 - .../voronoj20.testcase | 7 - .../voronoj3.testcase | 7 - .../voronoj4.testcase | 7 - .../voronoj5.testcase | 7 - .../voronoj6.testcase | 7 - .../voronoj8.testcase | 7 - .../voronoj9.testcase | 7 - .../3ddistance1.testcase | 8 - .../3ddistance10.testcase | 8 - .../3ddistance2.testcase | 8 - .../3ddistance3.testcase | 8 - .../3ddistance4.testcase | 8 - .../3ddistance5.testcase | 8 - .../3ddistance6.testcase | 8 - .../3ddistance7.testcase | 8 - .../3ddistance8.testcase | 8 - .../3ddistance9.testcase | 8 - .../3dmaxdistance1.testcase | 8 - .../3dmaxdistance10.testcase | 8 - .../3dmaxdistance2.testcase | 8 - .../3dmaxdistance3.testcase | 8 - .../3dmaxdistance4.testcase | 8 - .../3dmaxdistance5.testcase | 8 - .../3dmaxdistance6.testcase | 8 - .../3dmaxdistance7.testcase | 8 - .../3dmaxdistance8.testcase | 8 - .../3dmaxdistance9.testcase | 8 - .../maxdistance1.testcase | 8 - .../maxdistance10.testcase | 8 - .../maxdistance2.testcase | 8 - .../maxdistance3.testcase | 8 - .../maxdistance4.testcase | 8 - .../maxdistance5.testcase | 8 - .../maxdistance6.testcase | 8 - .../maxdistance7.testcase | 8 - .../maxdistance8.testcase | 8 - .../maxdistance9.testcase | 8 - .../sql_stmt_lwgeom_tests/st_asx3d1.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d10.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d11.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d12.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d13.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d14.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d15.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d16.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d17.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d18.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d19.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d2.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d20.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d21.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d22.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d23.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d24.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d25.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d26.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d27.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d28.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d29.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d3.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d30.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d4.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d5.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d6.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d7.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d8.testcase | 7 - .../sql_stmt_lwgeom_tests/st_asx3d9.testcase | 7 - .../st_azimuth1.testcase | 7 - .../st_azimuth10.testcase | 7 - .../st_azimuth11.testcase | 7 - .../st_azimuth12.testcase | 7 - .../st_azimuth13.testcase | 7 - .../st_azimuth14.testcase | 7 - .../st_azimuth15.testcase | 7 - .../st_azimuth16.testcase | 7 - .../st_azimuth17.testcase | 7 - .../st_azimuth2.testcase | 7 - .../st_azimuth3.testcase | 7 - .../st_azimuth4.testcase | 7 - .../st_azimuth5.testcase | 7 - .../st_azimuth6.testcase | 7 - .../st_azimuth7.testcase | 7 - .../st_azimuth8.testcase | 7 - .../st_azimuth9.testcase | 7 - .../st_geohash1.testcase | 7 - .../st_geohash10.testcase | 7 - .../st_geohash2.testcase | 7 - .../st_geohash3.testcase | 7 - .../st_geohash4.testcase | 7 - .../st_geohash5.testcase | 7 - .../st_geohash6.testcase | 7 - .../st_geohash7.testcase | 7 - .../st_geohash8.testcase | 7 - .../st_geohash9.testcase | 7 - .../st_makevalid1.testcase | 7 - .../st_makevalid2.testcase | 7 - .../st_makevalid3.testcase | 7 - .../st_makevalid4.testcase | 7 - .../st_makevalid5.testcase | 7 - .../st_makevalid6.testcase | 7 - .../st_makevalid7.testcase | 7 - .../st_makevalid8.testcase | 11 - .../st_makevaliddiscarded1.testcase | 7 - .../st_makevaliddiscarded2.testcase | 7 - .../st_makevaliddiscarded3.testcase | 7 - .../st_makevaliddiscarded4.testcase | 7 - .../st_makevaliddiscarded5.testcase | 7 - .../st_makevaliddiscarded6.testcase | 7 - .../st_makevaliddiscarded7.testcase | 7 - .../st_makevaliddiscarded8.testcase | 11 - .../st_segmentize1.testcase | 7 - .../st_segmentize10.testcase | 7 - .../st_segmentize11.testcase | 7 - .../st_segmentize12.testcase | 7 - .../st_segmentize13.testcase | 7 - .../st_segmentize14.testcase | 7 - .../st_segmentize16.testcase | 7 - .../st_segmentize17.testcase | 7 - .../st_segmentize18.testcase | 7 - .../st_segmentize19.testcase | 7 - .../st_segmentize2.testcase | 7 - .../st_segmentize20.testcase | 7 - .../st_segmentize21.testcase | 7 - .../st_segmentize22.testcase | 7 - .../st_segmentize23.testcase | 7 - .../st_segmentize24.testcase | 7 - .../st_segmentize25.testcase | 7 - .../st_segmentize26.testcase | 7 - .../st_segmentize27.testcase | 7 - .../st_segmentize28.testcase | 7 - .../st_segmentize29.testcase | 7 - .../st_segmentize3.testcase | 7 - .../st_segmentize30.testcase | 7 - .../st_segmentize31.testcase | 7 - .../st_segmentize4.testcase | 7 - .../st_segmentize5.testcase | 7 - .../st_segmentize6.testcase | 7 - .../st_segmentize7.testcase | 7 - .../st_segmentize8.testcase | 7 - .../st_segmentize9.testcase | 7 - .../st_snaptogrid1.testcase | 7 - .../st_snaptogrid10.testcase | 7 - .../st_snaptogrid11.testcase | 7 - .../st_snaptogrid12.testcase | 7 - .../st_snaptogrid13.testcase | 7 - .../st_snaptogrid14.testcase | 7 - .../st_snaptogrid15.testcase | 7 - .../st_snaptogrid16.testcase | 7 - .../st_snaptogrid17.testcase | 7 - .../st_snaptogrid18.testcase | 7 - .../st_snaptogrid19.testcase | 7 - .../st_snaptogrid2.testcase | 7 - .../st_snaptogrid20.testcase | 7 - .../st_snaptogrid21.testcase | 7 - .../st_snaptogrid22.testcase | 7 - .../st_snaptogrid23.testcase | 7 - .../st_snaptogrid24.testcase | 7 - .../st_snaptogrid25.testcase | 7 - .../st_snaptogrid26.testcase | 7 - .../st_snaptogrid27.testcase | 7 - .../st_snaptogrid28.testcase | 7 - .../st_snaptogrid29.testcase | 7 - .../st_snaptogrid3.testcase | 7 - .../st_snaptogrid30.testcase | 7 - .../st_snaptogrid31.testcase | 7 - .../st_snaptogrid32.testcase | 7 - .../st_snaptogrid33.testcase | 7 - .../st_snaptogrid34.testcase | 7 - .../st_snaptogrid35.testcase | 7 - .../st_snaptogrid36.testcase | 7 - .../st_snaptogrid37.testcase | 7 - .../st_snaptogrid38.testcase | 7 - .../st_snaptogrid39.testcase | 7 - .../st_snaptogrid4.testcase | 7 - .../st_snaptogrid40.testcase | 7 - .../st_snaptogrid41.testcase | 7 - .../st_snaptogrid42.testcase | 7 - .../st_snaptogrid43.testcase | 7 - .../st_snaptogrid44.testcase | 7 - .../st_snaptogrid45.testcase | 7 - .../st_snaptogrid46.testcase | 7 - .../st_snaptogrid47.testcase | 7 - .../st_snaptogrid48.testcase | 7 - .../st_snaptogrid49.testcase | 7 - .../st_snaptogrid5.testcase | 7 - .../st_snaptogrid50.testcase | 7 - .../st_snaptogrid51.testcase | 7 - .../st_snaptogrid52.testcase | 7 - .../st_snaptogrid53.testcase | 7 - .../st_snaptogrid54.testcase | 7 - .../st_snaptogrid55.testcase | 7 - .../st_snaptogrid56.testcase | 7 - .../st_snaptogrid57.testcase | 7 - .../st_snaptogrid58.testcase | 7 - .../st_snaptogrid59.testcase | 7 - .../st_snaptogrid6.testcase | 7 - .../st_snaptogrid60.testcase | 7 - .../st_snaptogrid61.testcase | 7 - .../st_snaptogrid62.testcase | 7 - .../st_snaptogrid63.testcase | 7 - .../st_snaptogrid64.testcase | 7 - .../st_snaptogrid65.testcase | 7 - .../st_snaptogrid7.testcase | 7 - .../st_snaptogrid8.testcase | 7 - .../st_snaptogrid9.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split1.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split10.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split11.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split12.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split13.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split14.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split15.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split16.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split17.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split18.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split19.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split2.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split20.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split21.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split22.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split23.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split24.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split25.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split26.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split27.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split28.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split29.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split3.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split30.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split31.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split32.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split33.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split34.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split35.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split36.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split37.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split38.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split39.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split4.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split40.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split41.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split42.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split43.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split44.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split45.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split46.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split47.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split48.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split49.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split5.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split6.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split7.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split8.testcase | 7 - .../sql_stmt_lwgeom_tests/st_split9.testcase | 7 - .../sql_stmt_mathsql_tests/acos-text.testcase | 7 - .../test/sql_stmt_mathsql_tests/acos.testcase | 7 - .../sql_stmt_mathsql_tests/acos10.testcase | 7 - .../sql_stmt_mathsql_tests/acos2.testcase | 7 - .../sql_stmt_mathsql_tests/acos20.testcase | 7 - .../sql_stmt_mathsql_tests/asin-text.testcase | 7 - .../sql_stmt_mathsql_tests/asin1.testcase | 7 - .../sql_stmt_mathsql_tests/asin10.testcase | 7 - .../sql_stmt_mathsql_tests/asin2.testcase | 7 - .../sql_stmt_mathsql_tests/asin20.testcase | 7 - .../sql_stmt_mathsql_tests/atan-text.testcase | 8 - .../sql_stmt_mathsql_tests/atan0.testcase | 7 - .../sql_stmt_mathsql_tests/atan00.testcase | 7 - .../sql_stmt_mathsql_tests/ceil-int.testcase | 7 - .../sql_stmt_mathsql_tests/ceilfloat.testcase | 7 - .../ceilfloat2.testcase | 7 - .../sql_stmt_mathsql_tests/ceilnull.testcase | 7 - .../sql_stmt_mathsql_tests/cos-text.testcase | 7 - .../test/sql_stmt_mathsql_tests/cos0.testcase | 7 - .../sql_stmt_mathsql_tests/cos00.testcase | 7 - .../sql_stmt_mathsql_tests/cot-text.testcase | 7 - .../test/sql_stmt_mathsql_tests/cot0.testcase | 7 - .../sql_stmt_mathsql_tests/cot00.testcase | 7 - .../sql_stmt_mathsql_tests/cotpi2.testcase | 7 - .../sql_stmt_mathsql_tests/degrees.testcase | 7 - .../sql_stmt_mathsql_tests/degrees45.testcase | 7 - .../degreestext.testcase | 7 - .../test/sql_stmt_mathsql_tests/exp0.testcase | 8 - .../sql_stmt_mathsql_tests/exp00.testcase | 8 - .../test/sql_stmt_mathsql_tests/exp1.testcase | 8 - .../sql_stmt_mathsql_tests/exp10.testcase | 8 - .../sql_stmt_mathsql_tests/expneg.testcase | 7 - .../sql_stmt_mathsql_tests/exptext.testcase | 8 - .../sql_stmt_mathsql_tests/floor32.testcase | 7 - .../sql_stmt_mathsql_tests/floorint.testcase | 7 - .../sql_stmt_mathsql_tests/floornull.testcase | 7 - .../sql_stmt_mathsql_tests/log10-0.0.testcase | 7 - .../log10-100.0.testcase | 7 - .../sql_stmt_mathsql_tests/log10-100.testcase | 7 - .../log10-text.testcase | 7 - .../sql_stmt_mathsql_tests/log2-0.0.testcase | 7 - .../sql_stmt_mathsql_tests/log2-0.testcase | 7 - .../sql_stmt_mathsql_tests/log2-4.0.testcase | 7 - .../sql_stmt_mathsql_tests/log2-4.testcase | 7 - .../sql_stmt_mathsql_tests/log2-text.testcase | 7 - .../sql_stmt_mathsql_tests/logn-text.testcase | 7 - .../sql_stmt_mathsql_tests/logn0.testcase | 7 - .../sql_stmt_mathsql_tests/logn00.testcase | 7 - .../sql_stmt_mathsql_tests/logn1.testcase | 7 - .../sql_stmt_mathsql_tests/logn10.testcase | 7 - .../sql_stmt_mathsql_tests/logn2-01.testcase | 7 - .../sql_stmt_mathsql_tests/logn2-02.testcase | 7 - .../sql_stmt_mathsql_tests/logn2-2.2.testcase | 7 - .../sql_stmt_mathsql_tests/logn2-4.2.testcase | 7 - .../logn2-4.2int.testcase | 7 - .../logn2-text.testcase | 7 - .../logn2-text2.testcase | 7 - .../logn2-text3.testcase | 7 - .../logn2-text4.testcase | 7 - .../test/sql_stmt_mathsql_tests/pi.testcase | 7 - .../pow-badarg1.testcase | 7 - .../pow-badarg2.testcase | 7 - .../sql_stmt_mathsql_tests/pow-edom.testcase | 7 - .../sql_stmt_mathsql_tests/pow-fp.testcase | 7 - .../sql_stmt_mathsql_tests/pow00-1.testcase | 7 - .../sql_stmt_mathsql_tests/pow00-2.testcase | 7 - .../sql_stmt_mathsql_tests/pow00.testcase | 7 - .../pow00double.testcase | 7 - .../sql_stmt_mathsql_tests/rad-text.testcase | 7 - .../test/sql_stmt_mathsql_tests/rad0.testcase | 7 - .../sql_stmt_mathsql_tests/radpi.testcase | 7 - .../sql_stmt_mathsql_tests/round-29.testcase | 7 - .../sql_stmt_mathsql_tests/round-31.testcase | 7 - .../round-text.testcase | 7 - .../sql_stmt_mathsql_tests/round0.testcase | 7 - .../sql_stmt_mathsql_tests/round29.testcase | 7 - .../sql_stmt_mathsql_tests/round3.testcase | 7 - .../sql_stmt_mathsql_tests/round30.testcase | 7 - .../sql_stmt_mathsql_tests/round31.testcase | 7 - .../sql_stmt_mathsql_tests/sign0.testcase | 7 - .../sql_stmt_mathsql_tests/sign00.testcase | 7 - .../sql_stmt_mathsql_tests/sign01.testcase | 7 - .../sql_stmt_mathsql_tests/sign10.testcase | 7 - .../sql_stmt_mathsql_tests/signeg.testcase | 7 - .../sql_stmt_mathsql_tests/signeg2.testcase | 7 - .../signeg2int.testcase | 7 - .../sql_stmt_mathsql_tests/signtext.testcase | 7 - .../sql_stmt_mathsql_tests/sin-pi.testcase | 7 - .../sql_stmt_mathsql_tests/sin-pi2.testcase | 7 - .../sql_stmt_mathsql_tests/sin-text.testcase | 7 - .../test/sql_stmt_mathsql_tests/sin0.testcase | 7 - .../sql_stmt_mathsql_tests/sin00.testcase | 7 - .../sql_stmt_mathsql_tests/sinpi.testcase | 7 - .../sql_stmt_mathsql_tests/sinpi2.testcase | 7 - .../sql_stmt_mathsql_tests/sqrt-1.testcase | 7 - .../sql_stmt_mathsql_tests/sqrt-10.testcase | 7 - .../sql_stmt_mathsql_tests/sqrt-64.testcase | 7 - .../sql_stmt_mathsql_tests/sqrt-640.testcase | 7 - .../sql_stmt_mathsql_tests/sqrt-text.testcase | 7 - .../sql_stmt_mathsql_tests/sqrt0.testcase | 7 - .../sql_stmt_mathsql_tests/sqrt00.testcase | 7 - .../sql_stmt_mathsql_tests/stddev.testcase | 21 - .../sql_stmt_mathsql_tests/tan-pi.testcase | 7 - .../sql_stmt_mathsql_tests/tan-text.testcase | 7 - .../test/sql_stmt_mathsql_tests/tan0.testcase | 7 - .../sql_stmt_mathsql_tests/tan00.testcase | 7 - .../sql_stmt_mathsql_tests/tanpi.testcase | 7 - .../sql_stmt_mathsql_tests/tanpi4.testcase | 7 - .../sql_stmt_mathsql_tests/variance.testcase | 21 - .../test/sql_stmt_proj_tests/askml1.testcase | 7 - .../test/sql_stmt_proj_tests/askml10.testcase | 7 - .../test/sql_stmt_proj_tests/askml11.testcase | 7 - .../test/sql_stmt_proj_tests/askml2.testcase | 7 - .../test/sql_stmt_proj_tests/askml3.testcase | 7 - .../test/sql_stmt_proj_tests/askml4.testcase | 8 - .../test/sql_stmt_proj_tests/askml5.testcase | 8 - .../test/sql_stmt_proj_tests/askml6.testcase | 8 - .../test/sql_stmt_proj_tests/askml7.testcase | 8 - .../test/sql_stmt_proj_tests/askml8.testcase | 8 - .../test/sql_stmt_proj_tests/askml9.testcase | 8 - .../sql_stmt_proj_tests/fromgml42.testcase | 7 - .../test/sql_stmt_proj_tests/output1.testcase | 18 - .../sql_stmt_proj_tests/output10.testcase | 19 - .../sql_stmt_proj_tests/output11.testcase | 19 - .../sql_stmt_proj_tests/output12.testcase | 19 - .../sql_stmt_proj_tests/output13.testcase | 19 - .../sql_stmt_proj_tests/output14.testcase | 19 - .../sql_stmt_proj_tests/output15.testcase | 19 - .../sql_stmt_proj_tests/output16.testcase | 19 - .../sql_stmt_proj_tests/output17.testcase | 19 - .../sql_stmt_proj_tests/output18.testcase | 19 - .../sql_stmt_proj_tests/output19.testcase | 19 - .../test/sql_stmt_proj_tests/output2.testcase | 20 - .../sql_stmt_proj_tests/output20.testcase | 19 - .../sql_stmt_proj_tests/output21.testcase | 19 - .../sql_stmt_proj_tests/output22.testcase | 19 - .../sql_stmt_proj_tests/output23.testcase | 19 - .../sql_stmt_proj_tests/output24.testcase | 19 - .../sql_stmt_proj_tests/output25.testcase | 19 - .../sql_stmt_proj_tests/output26.testcase | 19 - .../sql_stmt_proj_tests/output27.testcase | 19 - .../sql_stmt_proj_tests/output28.testcase | 19 - .../sql_stmt_proj_tests/output29.testcase | 19 - .../test/sql_stmt_proj_tests/output3.testcase | 20 - .../sql_stmt_proj_tests/output30.testcase | 19 - .../sql_stmt_proj_tests/output31.testcase | 19 - .../sql_stmt_proj_tests/output32.testcase | 19 - .../sql_stmt_proj_tests/output33.testcase | 19 - .../sql_stmt_proj_tests/output34.testcase | 19 - .../sql_stmt_proj_tests/output35.testcase | 19 - .../sql_stmt_proj_tests/output36.testcase | 19 - .../sql_stmt_proj_tests/output37.testcase | 19 - .../sql_stmt_proj_tests/output38.testcase | 8 - .../test/sql_stmt_proj_tests/output4.testcase | 20 - .../test/sql_stmt_proj_tests/output5.testcase | 20 - .../test/sql_stmt_proj_tests/output6.testcase | 20 - .../test/sql_stmt_proj_tests/output7.testcase | 19 - .../test/sql_stmt_proj_tests/output8.testcase | 18 - .../test/sql_stmt_proj_tests/output9.testcase | 18 - .../sql_stmt_proj_tests/transform1.testcase | 7 - .../sql_stmt_proj_tests/transform10.testcase | 7 - .../sql_stmt_proj_tests/transform11.testcase | 7 - .../sql_stmt_proj_tests/transform12.testcase | 7 - .../sql_stmt_proj_tests/transform13.testcase | 7 - .../sql_stmt_proj_tests/transform14.testcase | 7 - .../sql_stmt_proj_tests/transform15.testcase | 7 - .../sql_stmt_proj_tests/transform16.testcase | 7 - .../sql_stmt_proj_tests/transform17.testcase | 7 - .../sql_stmt_proj_tests/transform18.testcase | 7 - .../sql_stmt_proj_tests/transform19.testcase | 7 - .../sql_stmt_proj_tests/transform2.testcase | 7 - .../sql_stmt_proj_tests/transform20.testcase | 7 - .../sql_stmt_proj_tests/transform21.testcase | 7 - .../sql_stmt_proj_tests/transform3.testcase | 7 - .../sql_stmt_proj_tests/transform4.testcase | 7 - .../sql_stmt_proj_tests/transform5.testcase | 7 - .../sql_stmt_proj_tests/transform6.testcase | 7 - .../sql_stmt_proj_tests/transform7.testcase | 7 - .../sql_stmt_proj_tests/transform8.testcase | 7 - .../sql_stmt_proj_tests/transform9.testcase | 7 - .../blobfromfile1.testcase | 7 - .../blobfromfile2.testcase | 7 - .../blobfromfile3.testcase | 7 - .../blobfromfile4.testcase | 7 - .../sql_stmt_security_tests/isXblob1.testcase | 27 - .../sql_stmt_security_tests/isXblob2.testcase | 27 - .../sql_stmt_security_tests/isXblob3.testcase | 27 - .../sql_stmt_security_tests/isXblob4.testcase | 30 - .../sql_stmt_security_tests/isXblob8.testcase | 30 - .../sql_stmt_security_tests/isXblob9.testcase | 30 - .../test/sql_stmt_tests/DSCN0042.JPG | Bin 156695 -> 0 bytes .../test/sql_stmt_tests/DSC_1467.JPG | Bin 121505 -> 0 bytes .../La_folla_durante_il_Palio.jpg | Bin 130368 -> 0 bytes .../test/sql_stmt_tests/NumPoints.testcase | 7 - .../test/sql_stmt_tests/NumPoints2.testcase | 7 - .../test/sql_stmt_tests/NumPoints3.testcase | 7 - .../test/sql_stmt_tests/NumPoints4.testcase | 7 - .../test/sql_stmt_tests/NumPoints5.testcase | 7 - .../test/sql_stmt_tests/NumPoints6.testcase | 7 - .../test/sql_stmt_tests/NumPoints7.testcase | 7 - .../sql_stmt_tests/SridFromAuthCRS.testcase | 7 - .../sql_stmt_tests/SridFromAuthCRS2.testcase | 7 - .../sql_stmt_tests/SridFromAuthCRS3.testcase | 7 - .../sql_stmt_tests/SridFromAuthCRS4.testcase | 7 - .../sql_stmt_tests/SridFromAuthCRS5.testcase | 7 - .../sql_stmt_tests/SridFromAuthCRS6.testcase | 7 - .../test/sql_stmt_tests/asbinary1.testcase | 7 - .../test/sql_stmt_tests/asbinary10.testcase | 7 - .../test/sql_stmt_tests/asbinary11.testcase | 7 - .../test/sql_stmt_tests/asbinary12.testcase | 9 - .../test/sql_stmt_tests/asbinary13.testcase | 9 - .../test/sql_stmt_tests/asbinary14.testcase | 9 - .../test/sql_stmt_tests/asbinary15.testcase | 7 - .../test/sql_stmt_tests/asbinary16.testcase | 7 - .../test/sql_stmt_tests/asbinary17.testcase | 7 - .../test/sql_stmt_tests/asbinary2.testcase | 7 - .../test/sql_stmt_tests/asbinary3.testcase | 7 - .../test/sql_stmt_tests/asbinary4.testcase | 7 - .../test/sql_stmt_tests/asbinary5.testcase | 7 - .../test/sql_stmt_tests/asbinary6.testcase | 7 - .../test/sql_stmt_tests/asbinary7.testcase | 7 - .../test/sql_stmt_tests/asbinary8.testcase | 7 - .../test/sql_stmt_tests/asbinary9.testcase | 7 - .../test/sql_stmt_tests/asewkb1.testcase | 10 - .../test/sql_stmt_tests/asewkb10.testcase | 10 - .../test/sql_stmt_tests/asewkb11.testcase | 10 - .../test/sql_stmt_tests/asewkb12.testcase | 10 - .../test/sql_stmt_tests/asewkb13.testcase | 10 - .../test/sql_stmt_tests/asewkb14.testcase | 10 - .../test/sql_stmt_tests/asewkb15.testcase | 10 - .../test/sql_stmt_tests/asewkb16.testcase | 10 - .../test/sql_stmt_tests/asewkb17.testcase | 10 - .../test/sql_stmt_tests/asewkb2.testcase | 10 - .../test/sql_stmt_tests/asewkb3.testcase | 10 - .../test/sql_stmt_tests/asewkb4.testcase | 10 - .../test/sql_stmt_tests/asewkb5.testcase | 11 - .../test/sql_stmt_tests/asewkb6.testcase | 10 - .../test/sql_stmt_tests/asewkb7.testcase | 10 - .../test/sql_stmt_tests/asewkb8.testcase | 10 - .../test/sql_stmt_tests/asewkb9.testcase | 10 - .../test/sql_stmt_tests/asfgf1.testcase | 7 - .../test/sql_stmt_tests/asfgf2.testcase | 7 - .../test/sql_stmt_tests/asfgf3.testcase | 7 - .../test/sql_stmt_tests/asfgf4.testcase | 7 - .../test/sql_stmt_tests/asfgf5.testcase | 7 - .../test/sql_stmt_tests/asfgf6.testcase | 7 - .../test/sql_stmt_tests/asfgf7.testcase | 7 - .../test/sql_stmt_tests/asfgf8.testcase | 7 - .../test/sql_stmt_tests/asfgf9.testcase | 7 - .../test/sql_stmt_tests/asgeojson1.testcase | 7 - .../test/sql_stmt_tests/asgeojson2.testcase | 7 - .../test/sql_stmt_tests/asgeojson3.testcase | 7 - .../test/sql_stmt_tests/asgeojson4.testcase | 7 - .../test/sql_stmt_tests/asgeojson5.testcase | 7 - .../test/sql_stmt_tests/asgeojson6.testcase | 7 - .../test/sql_stmt_tests/asgeojson7.testcase | 7 - .../test/sql_stmt_tests/asgml1.testcase | 7 - .../test/sql_stmt_tests/asgml10.testcase | 7 - .../test/sql_stmt_tests/asgml11.testcase | 7 - .../test/sql_stmt_tests/asgml2.testcase | 7 - .../test/sql_stmt_tests/asgml3.testcase | 7 - .../test/sql_stmt_tests/asgml4.testcase | 7 - .../test/sql_stmt_tests/asgml5.testcase | 7 - .../test/sql_stmt_tests/asgml6.testcase | 7 - .../test/sql_stmt_tests/asgml7.testcase | 7 - .../test/sql_stmt_tests/asgml8.testcase | 7 - .../test/sql_stmt_tests/asgml9.testcase | 7 - .../test/sql_stmt_tests/assvg1.testcase | 7 - .../test/sql_stmt_tests/assvg17.testcase | 7 - .../test/sql_stmt_tests/assvg18.testcase | 9 - .../test/sql_stmt_tests/assvg19.testcase | 9 - .../test/sql_stmt_tests/assvg2.testcase | 7 - .../test/sql_stmt_tests/assvg20.testcase | 9 - .../test/sql_stmt_tests/assvg21.testcase | 9 - .../test/sql_stmt_tests/assvg22.testcase | 9 - .../test/sql_stmt_tests/assvg23.testcase | 9 - .../test/sql_stmt_tests/assvg24.testcase | 9 - .../test/sql_stmt_tests/assvg25.testcase | 9 - .../test/sql_stmt_tests/assvg26.testcase | 9 - .../test/sql_stmt_tests/assvg3.testcase | 7 - .../test/sql_stmt_tests/assvg4.testcase | 7 - .../test/sql_stmt_tests/assvg5.testcase | 7 - .../test/sql_stmt_tests/assvg6.testcase | 7 - .../test/sql_stmt_tests/assvg7.testcase | 7 - .../test/sql_stmt_tests/assvg8.testcase | 7 - .../test/sql_stmt_tests/assvg9.testcase | 7 - .../test/sql_stmt_tests/aswkt-text.testcase | 7 - .../test/sql_stmt_tests/badEWKT1.testcase | 7 - .../test/sql_stmt_tests/badEWKT2.testcase | 7 - .../test/sql_stmt_tests/badEWKT3.testcase | 7 - .../test/sql_stmt_tests/badEWKT4.testcase | 7 - .../test/sql_stmt_tests/badEWKT5.testcase | 7 - .../test/sql_stmt_tests/badEWKT6.testcase | 7 - .../test/sql_stmt_tests/badEWKT7.testcase | 7 - .../test/sql_stmt_tests/badEWKT8.testcase | 7 - .../test/sql_stmt_tests/badGML1.testcase | 7 - .../test/sql_stmt_tests/badGML2.testcase | 7 - .../test/sql_stmt_tests/badGML3.testcase | 7 - .../test/sql_stmt_tests/badGML4.testcase | 7 - .../test/sql_stmt_tests/badGML5.testcase | 7 - .../test/sql_stmt_tests/badGML6.testcase | 7 - .../test/sql_stmt_tests/badGML7.testcase | 7 - .../test/sql_stmt_tests/badGeoJSON1.testcase | 7 - .../test/sql_stmt_tests/badGeoJSON2.testcase | 7 - .../test/sql_stmt_tests/badGeoJSON3.testcase | 7 - .../test/sql_stmt_tests/badGeoJSON4.testcase | 7 - .../test/sql_stmt_tests/badGeoJSON5.testcase | 7 - .../test/sql_stmt_tests/badGeoJSON6.testcase | 7 - .../test/sql_stmt_tests/badGeoJSON7.testcase | 7 - .../test/sql_stmt_tests/badKML1.testcase | 7 - .../test/sql_stmt_tests/badKML2.testcase | 7 - .../test/sql_stmt_tests/badKML3.testcase | 7 - .../test/sql_stmt_tests/badKML4.testcase | 7 - .../test/sql_stmt_tests/badKML5.testcase | 7 - .../test/sql_stmt_tests/badKML6.testcase | 7 - .../test/sql_stmt_tests/badKML7.testcase | 7 - .../test/sql_stmt_tests/badwkt1.testcase | 7 - .../test/sql_stmt_tests/badwkt2.testcase | 7 - .../test/sql_stmt_tests/badwkt3.testcase | 7 - .../test/sql_stmt_tests/badwkt4.testcase | 7 - .../test/sql_stmt_tests/badwkt5.testcase | 7 - .../test/sql_stmt_tests/badwkt6.testcase | 7 - .../test/sql_stmt_tests/badwkt7.testcase | 7 - .../test/sql_stmt_tests/badwkt8.testcase | 7 - .../test/sql_stmt_tests/badwkt9.testcase | 7 - .../sql_stmt_tests/buildcirclembr1.testcase | 7 - .../sql_stmt_tests/buildcirclembr10.testcase | 7 - .../sql_stmt_tests/buildcirclembr11.testcase | 7 - .../sql_stmt_tests/buildcirclembr12.testcase | 7 - .../sql_stmt_tests/buildcirclembr2.testcase | 7 - .../sql_stmt_tests/buildcirclembr3.testcase | 7 - .../sql_stmt_tests/buildcirclembr4.testcase | 7 - .../sql_stmt_tests/buildcirclembr5.testcase | 7 - .../sql_stmt_tests/buildcirclembr6.testcase | 7 - .../sql_stmt_tests/buildcirclembr7.testcase | 7 - .../sql_stmt_tests/buildcirclembr8.testcase | 7 - .../sql_stmt_tests/buildcirclembr9.testcase | 7 - .../test/sql_stmt_tests/buildmbr1.testcase | 7 - .../test/sql_stmt_tests/buildmbr10.testcase | 7 - .../test/sql_stmt_tests/buildmbr11.testcase | 7 - .../test/sql_stmt_tests/buildmbr12.testcase | 7 - .../test/sql_stmt_tests/buildmbr13.testcase | 7 - .../test/sql_stmt_tests/buildmbr14.testcase | 7 - .../test/sql_stmt_tests/buildmbr2.testcase | 7 - .../test/sql_stmt_tests/buildmbr3.testcase | 7 - .../test/sql_stmt_tests/buildmbr4.testcase | 7 - .../test/sql_stmt_tests/buildmbr5.testcase | 7 - .../test/sql_stmt_tests/buildmbr6.testcase | 7 - .../test/sql_stmt_tests/buildmbr7.testcase | 7 - .../test/sql_stmt_tests/buildmbr8.testcase | 7 - .../test/sql_stmt_tests/buildmbr9.testcase | 7 - .../casttogeometrycollection.testcase | 7 - .../casttogeometrycollection2.testcase | 7 - .../casttogeometrycollection3.testcase | 7 - .../casttogeometrycollection4.testcase | 7 - .../casttogeometrycollection5.testcase | 7 - .../casttogeometrycollection6.testcase | 7 - .../sql_stmt_tests/casttolinestring1.testcase | 7 - .../sql_stmt_tests/casttolinestring2.testcase | 7 - .../sql_stmt_tests/casttolinestring3.testcase | 8 - .../sql_stmt_tests/casttolinestring4.testcase | 8 - .../sql_stmt_tests/casttolinestring5.testcase | 8 - .../sql_stmt_tests/casttolinestring6.testcase | 9 - .../sql_stmt_tests/casttolinestring7.testcase | 9 - .../sql_stmt_tests/casttolinestring8.testcase | 9 - .../test/sql_stmt_tests/casttomulti1.testcase | 7 - .../sql_stmt_tests/casttomulti11.testcase | 7 - .../test/sql_stmt_tests/casttomulti2.testcase | 7 - .../test/sql_stmt_tests/casttomulti3.testcase | 7 - .../test/sql_stmt_tests/casttomulti4.testcase | 7 - .../test/sql_stmt_tests/casttomulti5.testcase | 7 - .../test/sql_stmt_tests/casttomulti6.testcase | 7 - .../test/sql_stmt_tests/casttomulti7.testcase | 7 - .../test/sql_stmt_tests/casttomulti8.testcase | 7 - .../casttomultilinestring1.testcase | 7 - .../casttomultilinestring2.testcase | 7 - .../casttomultilinestring3.testcase | 7 - .../casttomultilinestring4.testcase | 7 - .../casttomultilinestring5.testcase | 7 - .../casttomultilinestring6.testcase | 9 - .../casttomultilinestring7.testcase | 9 - .../sql_stmt_tests/casttomultipoint1.testcase | 7 - .../sql_stmt_tests/casttomultipoint2.testcase | 7 - .../sql_stmt_tests/casttomultipoint3.testcase | 7 - .../sql_stmt_tests/casttomultipoint4.testcase | 7 - .../sql_stmt_tests/casttomultipoint5.testcase | 7 - .../sql_stmt_tests/casttomultipoint6.testcase | 7 - .../sql_stmt_tests/casttomultipoint7.testcase | 7 - .../sql_stmt_tests/casttomultipoint8.testcase | 7 - .../sql_stmt_tests/casttomultipoint9.testcase | 7 - .../casttomultipolygon1.testcase | 7 - .../casttomultipolygon2.testcase | 7 - .../casttomultipolygon3.testcase | 7 - .../casttomultipolygon4.testcase | 7 - .../casttomultipolygon5.testcase | 7 - .../test/sql_stmt_tests/casttopoint1.testcase | 7 - .../test/sql_stmt_tests/casttopoint2.testcase | 7 - .../test/sql_stmt_tests/casttopoint3.testcase | 7 - .../test/sql_stmt_tests/casttopoint4.testcase | 7 - .../test/sql_stmt_tests/casttopoint5.testcase | 7 - .../test/sql_stmt_tests/casttopoint6.testcase | 7 - .../test/sql_stmt_tests/casttopoint7.testcase | 7 - .../test/sql_stmt_tests/casttopoint8.testcase | 7 - .../test/sql_stmt_tests/casttopoly1.testcase | 7 - .../test/sql_stmt_tests/casttopoly2.testcase | 7 - .../test/sql_stmt_tests/casttopoly3.testcase | 7 - .../test/sql_stmt_tests/casttopoly4.testcase | 7 - .../test/sql_stmt_tests/casttopoly5.testcase | 7 - .../test/sql_stmt_tests/casttopoly6.testcase | 7 - .../test/sql_stmt_tests/casttopoly7.testcase | 7 - .../test/sql_stmt_tests/casttopoly8.testcase | 9 - .../sql_stmt_tests/casttosingle1.testcase | 7 - .../sql_stmt_tests/casttosingle10.testcase | 7 - .../sql_stmt_tests/casttosingle12.testcase | 7 - .../sql_stmt_tests/casttosingle2.testcase | 7 - .../sql_stmt_tests/casttosingle3.testcase | 7 - .../sql_stmt_tests/casttosingle4.testcase | 7 - .../sql_stmt_tests/casttosingle5.testcase | 7 - .../sql_stmt_tests/casttosingle6.testcase | 7 - .../sql_stmt_tests/casttosingle7.testcase | 7 - .../sql_stmt_tests/casttosingle8.testcase | 7 - .../sql_stmt_tests/casttosingle9.testcase | 8 - .../test/sql_stmt_tests/casttoxy1.testcase | 7 - .../test/sql_stmt_tests/casttoxy2.testcase | 7 - .../test/sql_stmt_tests/casttoxy3.testcase | 7 - .../test/sql_stmt_tests/casttoxym1.testcase | 7 - .../test/sql_stmt_tests/casttoxym2.testcase | 7 - .../test/sql_stmt_tests/casttoxym3.testcase | 7 - .../test/sql_stmt_tests/casttoxym4.testcase | 7 - .../test/sql_stmt_tests/casttoxym5.testcase | 7 - .../test/sql_stmt_tests/casttoxym6.testcase | 7 - .../test/sql_stmt_tests/casttoxyz1.testcase | 7 - .../test/sql_stmt_tests/casttoxyz2.testcase | 7 - .../test/sql_stmt_tests/casttoxyz3.testcase | 7 - .../test/sql_stmt_tests/casttoxyz4.testcase | 7 - .../test/sql_stmt_tests/casttoxyz5.testcase | 7 - .../test/sql_stmt_tests/casttoxyz6.testcase | 7 - .../test/sql_stmt_tests/casttoxyzm1.testcase | 7 - .../test/sql_stmt_tests/casttoxyzm2.testcase | 7 - .../test/sql_stmt_tests/casttoxyzm3.testcase | 7 - .../test/sql_stmt_tests/casttoxyzm4.testcase | 7 - .../test/sql_stmt_tests/casttoxyzm5.testcase | 7 - .../test/sql_stmt_tests/casttoxyzm6.testcase | 7 - .../test/sql_stmt_tests/ch_m.testcase | 7 - .../checkspatialmetadata1.testcase | 7 - .../checkspatialmetadata2.testcase | 7 - .../checkspatialmetadata3.testcase | 7 - .../checkspatialmetadata4.testcase | 7 - .../checkspatialmetadata5.testcase | 7 - .../test/sql_stmt_tests/cm_m.testcase | 7 - .../test/sql_stmt_tests/collect1.testcase | 8 - .../test/sql_stmt_tests/collect10.testcase | 8 - .../test/sql_stmt_tests/collect11.testcase | 8 - .../test/sql_stmt_tests/collect12.testcase | 8 - .../test/sql_stmt_tests/collect13.testcase | 8 - .../test/sql_stmt_tests/collect14.testcase | 8 - .../test/sql_stmt_tests/collect15.testcase | 8 - .../test/sql_stmt_tests/collect16.testcase | 8 - .../test/sql_stmt_tests/collect17.testcase | 8 - .../test/sql_stmt_tests/collect18.testcase | 8 - .../test/sql_stmt_tests/collect19.testcase | 8 - .../test/sql_stmt_tests/collect2.testcase | 8 - .../test/sql_stmt_tests/collect20.testcase | 8 - .../test/sql_stmt_tests/collect21.testcase | 8 - .../test/sql_stmt_tests/collect23.testcase | 8 - .../test/sql_stmt_tests/collect24.testcase | 8 - .../test/sql_stmt_tests/collect25.testcase | 8 - .../test/sql_stmt_tests/collect26.testcase | 8 - .../test/sql_stmt_tests/collect27.testcase | 8 - .../test/sql_stmt_tests/collect28.testcase | 8 - .../test/sql_stmt_tests/collect29.testcase | 8 - .../test/sql_stmt_tests/collect3.testcase | 8 - .../test/sql_stmt_tests/collect30.testcase | 8 - .../test/sql_stmt_tests/collect31.testcase | 8 - .../test/sql_stmt_tests/collect32.testcase | 8 - .../test/sql_stmt_tests/collect33.testcase | 8 - .../test/sql_stmt_tests/collect34.testcase | 8 - .../test/sql_stmt_tests/collect35.testcase | 8 - .../test/sql_stmt_tests/collect36.testcase | 8 - .../test/sql_stmt_tests/collect37.testcase | 8 - .../test/sql_stmt_tests/collect38.testcase | 8 - .../test/sql_stmt_tests/collect39.testcase | 8 - .../test/sql_stmt_tests/collect4.testcase | 8 - .../test/sql_stmt_tests/collect40.testcase | 8 - .../test/sql_stmt_tests/collect41.testcase | 8 - .../test/sql_stmt_tests/collect42.testcase | 8 - .../test/sql_stmt_tests/collect43.testcase | 8 - .../test/sql_stmt_tests/collect44.testcase | 8 - .../test/sql_stmt_tests/collect45.testcase | 8 - .../test/sql_stmt_tests/collect46.testcase | 8 - .../test/sql_stmt_tests/collect47.testcase | 8 - .../test/sql_stmt_tests/collect48.testcase | 8 - .../test/sql_stmt_tests/collect49.testcase | 8 - .../test/sql_stmt_tests/collect5.testcase | 8 - .../test/sql_stmt_tests/collect50.testcase | 8 - .../test/sql_stmt_tests/collect51.testcase | 8 - .../test/sql_stmt_tests/collect52.testcase | 8 - .../test/sql_stmt_tests/collect53.testcase | 8 - .../test/sql_stmt_tests/collect54.testcase | 8 - .../test/sql_stmt_tests/collect55.testcase | 8 - .../test/sql_stmt_tests/collect56.testcase | 8 - .../test/sql_stmt_tests/collect57.testcase | 7 - .../test/sql_stmt_tests/collect58.testcase | 7 - .../test/sql_stmt_tests/collect59.testcase | 7 - .../test/sql_stmt_tests/collect6.testcase | 7 - .../test/sql_stmt_tests/collect7.testcase | 7 - .../test/sql_stmt_tests/collect8.testcase | 8 - .../test/sql_stmt_tests/collect9.testcase | 8 - .../sql_stmt_tests/collectextract1.testcase | 8 - .../sql_stmt_tests/collectextract10.testcase | 8 - .../sql_stmt_tests/collectextract11.testcase | 8 - .../sql_stmt_tests/collectextract12.testcase | 8 - .../sql_stmt_tests/collectextract13.testcase | 8 - .../sql_stmt_tests/collectextract14.testcase | 8 - .../sql_stmt_tests/collectextract15.testcase | 9 - .../sql_stmt_tests/collectextract16.testcase | 9 - .../sql_stmt_tests/collectextract17.testcase | 9 - .../sql_stmt_tests/collectextract18.testcase | 9 - .../sql_stmt_tests/collectextract19.testcase | 9 - .../sql_stmt_tests/collectextract2.testcase | 8 - .../sql_stmt_tests/collectextract20.testcase | 9 - .../sql_stmt_tests/collectextract21.testcase | 9 - .../sql_stmt_tests/collectextract22.testcase | 9 - .../sql_stmt_tests/collectextract3.testcase | 8 - .../sql_stmt_tests/collectextract4.testcase | 8 - .../sql_stmt_tests/collectextract5.testcase | 8 - .../sql_stmt_tests/collectextract6.testcase | 8 - .../sql_stmt_tests/collectextract7.testcase | 8 - .../sql_stmt_tests/collectextract8.testcase | 8 - .../sql_stmt_tests/collectextract9.testcase | 8 - .../sql_stmt_tests/compressgeometry1.testcase | 7 - .../compressgeometry10.testcase | 9 - .../compressgeometry11.testcase | 11 - .../compressgeometry12.testcase | 8 - .../compressgeometry13.testcase | 9 - .../compressgeometry14.testcase | 8 - .../compressgeometry15.testcase | 10 - .../compressgeometry17.testcase | 7 - .../compressgeometry18.testcase | 7 - .../compressgeometry19.testcase | 7 - .../sql_stmt_tests/compressgeometry2.testcase | 7 - .../compressgeometry20.testcase | 7 - .../compressgeometry21.testcase | 8 - .../compressgeometry22.testcase | 9 - .../compressgeometry23.testcase | 7 - .../compressgeometry24.testcase | 7 - .../compressgeometry25.testcase | 8 - .../compressgeometry26.testcase | 7 - .../compressgeometry27.testcase | 7 - .../compressgeometry28.testcase | 7 - .../compressgeometry29.testcase | 7 - .../sql_stmt_tests/compressgeometry3.testcase | 7 - .../compressgeometry30.testcase | 7 - .../compressgeometry31.testcase | 7 - .../compressgeometry32.testcase | 7 - .../compressgeometry33.testcase | 7 - .../compressgeometry34.testcase | 7 - .../compressgeometry35.testcase | 7 - .../compressgeometry36.testcase | 7 - .../compressgeometry37.testcase | 7 - .../compressgeometry38.testcase | 7 - .../compressgeometry39.testcase | 7 - .../sql_stmt_tests/compressgeometry4.testcase | 7 - .../compressgeometry40.testcase | 7 - .../compressgeometry41.testcase | 7 - .../compressgeometry42.testcase | 7 - .../compressgeometry43.testcase | 7 - .../compressgeometry44.testcase | 7 - .../compressgeometry45.testcase | 7 - .../compressgeometry46.testcase | 7 - .../compressgeometry47.testcase | 7 - .../compressgeometry48.testcase | 7 - .../compressgeometry49.testcase | 7 - .../sql_stmt_tests/compressgeometry5.testcase | 8 - .../compressgeometry50.testcase | 7 - .../compressgeometry51.testcase | 7 - .../compressgeometry52.testcase | 7 - .../compressgeometry53.testcase | 7 - .../compressgeometry54.testcase | 7 - .../compressgeometry55.testcase | 7 - .../compressgeometry56.testcase | 7 - .../compressgeometry57.testcase | 7 - .../compressgeometry58.testcase | 7 - .../compressgeometry59.testcase | 7 - .../sql_stmt_tests/compressgeometry6.testcase | 9 - .../compressgeometry60.testcase | 7 - .../compressgeometry61.testcase | 7 - .../compressgeometry62.testcase | 7 - .../compressgeometry63.testcase | 7 - .../compressgeometry64.testcase | 7 - .../compressgeometry65.testcase | 7 - .../compressgeometry66.testcase | 7 - .../compressgeometry67.testcase | 7 - .../compressgeometry68.testcase | 7 - .../compressgeometry69.testcase | 7 - .../sql_stmt_tests/compressgeometry7.testcase | 10 - .../sql_stmt_tests/compressgeometry8.testcase | 8 - .../sql_stmt_tests/compressgeometry9.testcase | 8 - .../test/sql_stmt_tests/dimension1.testcase | 7 - .../test/sql_stmt_tests/dimension2.testcase | 7 - .../test/sql_stmt_tests/dimension3.testcase | 7 - .../test/sql_stmt_tests/dimension4.testcase | 7 - .../test/sql_stmt_tests/dimension5.testcase | 7 - .../test/sql_stmt_tests/dimension6.testcase | 7 - .../test/sql_stmt_tests/dimension7.testcase | 7 - .../test/sql_stmt_tests/dimension8.testcase | 7 - .../test/sql_stmt_tests/dissolve1.testcase | 9 - .../test/sql_stmt_tests/dissolve10.testcase | 9 - .../test/sql_stmt_tests/dissolve11.testcase | 9 - .../test/sql_stmt_tests/dissolve12.testcase | 9 - .../test/sql_stmt_tests/dissolve13.testcase | 9 - .../test/sql_stmt_tests/dissolve14.testcase | 9 - .../test/sql_stmt_tests/dissolve15.testcase | 9 - .../test/sql_stmt_tests/dissolve16.testcase | 9 - .../test/sql_stmt_tests/dissolve17.testcase | 9 - .../test/sql_stmt_tests/dissolve18.testcase | 9 - .../test/sql_stmt_tests/dissolve19.testcase | 9 - .../test/sql_stmt_tests/dissolve2.testcase | 7 - .../test/sql_stmt_tests/dissolve20.testcase | 9 - .../test/sql_stmt_tests/dissolve21.testcase | 9 - .../test/sql_stmt_tests/dissolve22.testcase | 9 - .../test/sql_stmt_tests/dissolve23.testcase | 9 - .../test/sql_stmt_tests/dissolve24.testcase | 9 - .../test/sql_stmt_tests/dissolve25.testcase | 9 - .../test/sql_stmt_tests/dissolve26.testcase | 9 - .../test/sql_stmt_tests/dissolve27.testcase | 9 - .../test/sql_stmt_tests/dissolve28.testcase | 9 - .../test/sql_stmt_tests/dissolve29.testcase | 9 - .../test/sql_stmt_tests/dissolve3.testcase | 7 - .../test/sql_stmt_tests/dissolve30.testcase | 9 - .../test/sql_stmt_tests/dissolve4.testcase | 7 - .../test/sql_stmt_tests/dissolve5.testcase | 7 - .../test/sql_stmt_tests/dissolve6.testcase | 7 - .../test/sql_stmt_tests/dissolve7.testcase | 7 - .../test/sql_stmt_tests/dissolve8.testcase | 9 - .../test/sql_stmt_tests/dissolve9.testcase | 9 - .../test/sql_stmt_tests/dm_m.testcase | 7 - .../test/sql_stmt_tests/emptyfile.txt | 0 .../test/sql_stmt_tests/endpoint1.testcase | 7 - .../test/sql_stmt_tests/envelope1.testcase | 7 - .../test/sql_stmt_tests/envelope2.testcase | 7 - .../test/sql_stmt_tests/envelope3.testcase | 7 - .../test/sql_stmt_tests/envelope4.testcase | 7 - .../test/sql_stmt_tests/envelope5.testcase | 7 - .../test/sql_stmt_tests/envelope6.testcase | 7 - .../test/sql_stmt_tests/envelope7.testcase | 7 - .../sql_stmt_tests/envintersects1.testcase | 7 - .../sql_stmt_tests/envintersects10.testcase | 7 - .../sql_stmt_tests/envintersects2.testcase | 7 - .../sql_stmt_tests/envintersects3.testcase | 7 - .../sql_stmt_tests/envintersects4.testcase | 7 - .../sql_stmt_tests/envintersects5.testcase | 7 - .../sql_stmt_tests/envintersects6.testcase | 7 - .../sql_stmt_tests/envintersects7.testcase | 7 - .../sql_stmt_tests/envintersects8.testcase | 7 - .../sql_stmt_tests/envintersects9.testcase | 7 - .../test/sql_stmt_tests/ewkb1.testcase | 7 - .../test/sql_stmt_tests/ewkb10.testcase | 7 - .../test/sql_stmt_tests/ewkb11.testcase | 7 - .../test/sql_stmt_tests/ewkb12.testcase | 7 - .../test/sql_stmt_tests/ewkb2.testcase | 7 - .../test/sql_stmt_tests/ewkb3.testcase | 7 - .../test/sql_stmt_tests/ewkb4.testcase | 7 - .../test/sql_stmt_tests/ewkb5.testcase | 7 - .../test/sql_stmt_tests/ewkb6.testcase | 7 - .../test/sql_stmt_tests/ewkb7.testcase | 7 - .../test/sql_stmt_tests/ewkb8.testcase | 7 - .../test/sql_stmt_tests/ewkb9.testcase | 7 - .../test/sql_stmt_tests/expand1.testcase | 7 - .../test/sql_stmt_tests/expand2.testcase | 7 - .../test/sql_stmt_tests/expand3.testcase | 7 - .../test/sql_stmt_tests/expand4.testcase | 7 - .../test/sql_stmt_tests/expand5.testcase | 7 - .../test/sql_stmt_tests/expand6.testcase | 7 - .../test/sql_stmt_tests/expand7.testcase | 7 - .../test/sql_stmt_tests/extent1.testcase | 8 - .../extractmultilinestring1.testcase | 7 - .../extractmultilinestring2.testcase | 7 - .../extractmultilinestring3.testcase | 7 - .../extractmultipoint1.testcase | 7 - .../extractmultipoint2.testcase | 7 - .../extractmultipoint3.testcase | 7 - .../extractmultipolygon1.testcase | 7 - .../extractmultipolygon2.testcase | 7 - .../extractmultipolygon3.testcase | 7 - .../test/sql_stmt_tests/fath_m.testcase | 7 - .../test/sql_stmt_tests/fdo-wkb.sqlite_RO | Bin 5120 -> 0 bytes .../test/sql_stmt_tests/fdo_ogr1.testcase | 7 - .../test/sql_stmt_tests/fdo_ogr2.testcase | 7 - .../test/sql_stmt_tests/fromWkb1.testcase | 8 - .../test/sql_stmt_tests/fromWkb10.testcase | 7 - .../test/sql_stmt_tests/fromWkb11.testcase | 7 - .../test/sql_stmt_tests/fromWkb12.testcase | 7 - .../test/sql_stmt_tests/fromWkb13.testcase | 7 - .../test/sql_stmt_tests/fromWkb14.testcase | 7 - .../test/sql_stmt_tests/fromWkb15.testcase | 8 - .../test/sql_stmt_tests/fromWkb16.testcase | 8 - .../test/sql_stmt_tests/fromWkb17.testcase | 8 - .../test/sql_stmt_tests/fromWkb18.testcase | 8 - .../test/sql_stmt_tests/fromWkb19.testcase | 8 - .../test/sql_stmt_tests/fromWkb2.testcase | 7 - .../test/sql_stmt_tests/fromWkb20.testcase | 8 - .../test/sql_stmt_tests/fromWkb21.testcase | 8 - .../test/sql_stmt_tests/fromWkb22.testcase | 9 - .../test/sql_stmt_tests/fromWkb23.testcase | 11 - .../test/sql_stmt_tests/fromWkb3.testcase | 7 - .../test/sql_stmt_tests/fromWkb4.testcase | 7 - .../test/sql_stmt_tests/fromWkb5.testcase | 8 - .../test/sql_stmt_tests/fromWkb6.testcase | 7 - .../test/sql_stmt_tests/fromWkb7.testcase | 8 - .../test/sql_stmt_tests/fromWkb8.testcase | 7 - .../test/sql_stmt_tests/fromWkb9.testcase | 8 - .../test/sql_stmt_tests/fromewkt1.testcase | 7 - .../test/sql_stmt_tests/fromewkt10.testcase | 7 - .../test/sql_stmt_tests/fromewkt11.testcase | 7 - .../test/sql_stmt_tests/fromewkt12.testcase | 7 - .../test/sql_stmt_tests/fromewkt13.testcase | 7 - .../test/sql_stmt_tests/fromewkt14.testcase | 7 - .../test/sql_stmt_tests/fromewkt15.testcase | 7 - .../test/sql_stmt_tests/fromewkt16.testcase | 7 - .../test/sql_stmt_tests/fromewkt17.testcase | 7 - .../test/sql_stmt_tests/fromewkt18.testcase | 7 - .../test/sql_stmt_tests/fromewkt19.testcase | 7 - .../test/sql_stmt_tests/fromewkt2.testcase | 7 - .../test/sql_stmt_tests/fromewkt20.testcase | 7 - .../test/sql_stmt_tests/fromewkt22.testcase | 7 - .../test/sql_stmt_tests/fromewkt23.testcase | 7 - .../test/sql_stmt_tests/fromewkt24.testcase | 7 - .../test/sql_stmt_tests/fromewkt25.testcase | 7 - .../test/sql_stmt_tests/fromewkt26.testcase | 7 - .../test/sql_stmt_tests/fromewkt27.testcase | 7 - .../test/sql_stmt_tests/fromewkt28.testcase | 7 - .../test/sql_stmt_tests/fromewkt29.testcase | 7 - .../test/sql_stmt_tests/fromewkt3.testcase | 7 - .../test/sql_stmt_tests/fromewkt30.testcase | 7 - .../test/sql_stmt_tests/fromewkt31.testcase | 7 - .../test/sql_stmt_tests/fromewkt32.testcase | 7 - .../test/sql_stmt_tests/fromewkt33.testcase | 7 - .../test/sql_stmt_tests/fromewkt34.testcase | 7 - .../test/sql_stmt_tests/fromewkt35.testcase | 7 - .../test/sql_stmt_tests/fromewkt36.testcase | 7 - .../test/sql_stmt_tests/fromewkt37.testcase | 7 - .../test/sql_stmt_tests/fromewkt38.testcase | 7 - .../test/sql_stmt_tests/fromewkt39.testcase | 7 - .../test/sql_stmt_tests/fromewkt4.testcase | 7 - .../test/sql_stmt_tests/fromewkt5.testcase | 7 - .../test/sql_stmt_tests/fromewkt6.testcase | 7 - .../test/sql_stmt_tests/fromewkt7.testcase | 7 - .../test/sql_stmt_tests/fromewkt8.testcase | 7 - .../test/sql_stmt_tests/fromewkt9.testcase | 7 - .../test/sql_stmt_tests/fromgeojson1.testcase | 7 - .../sql_stmt_tests/fromgeojson10.testcase | 7 - .../sql_stmt_tests/fromgeojson11.testcase | 7 - .../sql_stmt_tests/fromgeojson12.testcase | 7 - .../sql_stmt_tests/fromgeojson13.testcase | 7 - .../sql_stmt_tests/fromgeojson14.testcase | 7 - .../sql_stmt_tests/fromgeojson15.testcase | 7 - .../sql_stmt_tests/fromgeojson16.testcase | 7 - .../sql_stmt_tests/fromgeojson17.testcase | 8 - .../sql_stmt_tests/fromgeojson18.testcase | 8 - .../sql_stmt_tests/fromgeojson19.testcase | 9 - .../test/sql_stmt_tests/fromgeojson2.testcase | 7 - .../sql_stmt_tests/fromgeojson20.testcase | 7 - .../sql_stmt_tests/fromgeojson21.testcase | 7 - .../sql_stmt_tests/fromgeojson22.testcase | 8 - .../sql_stmt_tests/fromgeojson23.testcase | 8 - .../sql_stmt_tests/fromgeojson24.testcase | 9 - .../sql_stmt_tests/fromgeojson25.testcase | 8 - .../sql_stmt_tests/fromgeojson26.testcase | 8 - .../sql_stmt_tests/fromgeojson27.testcase | 7 - .../sql_stmt_tests/fromgeojson28.testcase | 8 - .../sql_stmt_tests/fromgeojson29.testcase | 7 - .../test/sql_stmt_tests/fromgeojson3.testcase | 7 - .../sql_stmt_tests/fromgeojson30.testcase | 7 - .../sql_stmt_tests/fromgeojson31.testcase | 8 - .../sql_stmt_tests/fromgeojson32.testcase | 7 - .../test/sql_stmt_tests/fromgeojson4.testcase | 7 - .../test/sql_stmt_tests/fromgeojson5.testcase | 7 - .../test/sql_stmt_tests/fromgeojson6.testcase | 7 - .../test/sql_stmt_tests/fromgeojson7.testcase | 7 - .../test/sql_stmt_tests/fromgeojson8.testcase | 7 - .../test/sql_stmt_tests/fromgeojson9.testcase | 8 - .../test/sql_stmt_tests/fromgml1.testcase | 7 - .../test/sql_stmt_tests/fromgml10.testcase | 7 - .../test/sql_stmt_tests/fromgml11.testcase | 7 - .../test/sql_stmt_tests/fromgml12.testcase | 7 - .../test/sql_stmt_tests/fromgml13.testcase | 7 - .../test/sql_stmt_tests/fromgml14.testcase | 7 - .../test/sql_stmt_tests/fromgml15.testcase | 7 - .../test/sql_stmt_tests/fromgml16.testcase | 7 - .../test/sql_stmt_tests/fromgml17.testcase | 7 - .../test/sql_stmt_tests/fromgml18.testcase | 7 - .../test/sql_stmt_tests/fromgml19.testcase | 7 - .../test/sql_stmt_tests/fromgml2.testcase | 7 - .../test/sql_stmt_tests/fromgml20.testcase | 7 - .../test/sql_stmt_tests/fromgml21.testcase | 7 - .../test/sql_stmt_tests/fromgml22.testcase | 7 - .../test/sql_stmt_tests/fromgml23.testcase | 7 - .../test/sql_stmt_tests/fromgml24.testcase | 7 - .../test/sql_stmt_tests/fromgml25.testcase | 7 - .../test/sql_stmt_tests/fromgml26.testcase | 7 - .../test/sql_stmt_tests/fromgml27.testcase | 7 - .../test/sql_stmt_tests/fromgml28.testcase | 7 - .../test/sql_stmt_tests/fromgml29.testcase | 7 - .../test/sql_stmt_tests/fromgml3.testcase | 7 - .../test/sql_stmt_tests/fromgml30.testcase | 7 - .../test/sql_stmt_tests/fromgml31.testcase | 7 - .../test/sql_stmt_tests/fromgml32.testcase | 7 - .../test/sql_stmt_tests/fromgml33.testcase | 7 - .../test/sql_stmt_tests/fromgml34.testcase | 7 - .../test/sql_stmt_tests/fromgml35.testcase | 8 - .../test/sql_stmt_tests/fromgml36.testcase | 8 - .../test/sql_stmt_tests/fromgml37.testcase | 8 - .../test/sql_stmt_tests/fromgml38.testcase | 8 - .../test/sql_stmt_tests/fromgml39.testcase | 7 - .../test/sql_stmt_tests/fromgml4.testcase | 7 - .../test/sql_stmt_tests/fromgml40.testcase | 7 - .../test/sql_stmt_tests/fromgml41.testcase | 7 - .../test/sql_stmt_tests/fromgml43.testcase | 7 - .../test/sql_stmt_tests/fromgml5.testcase | 7 - .../test/sql_stmt_tests/fromgml6.testcase | 7 - .../test/sql_stmt_tests/fromgml7.testcase | 7 - .../test/sql_stmt_tests/fromgml8.testcase | 7 - .../test/sql_stmt_tests/fromgml9.testcase | 7 - .../test/sql_stmt_tests/ft_m.testcase | 7 - .../test/sql_stmt_tests/garsmbr1.testcase | 8 - .../test/sql_stmt_tests/garsmbr10.testcase | 8 - .../test/sql_stmt_tests/garsmbr11.testcase | 7 - .../test/sql_stmt_tests/garsmbr12.testcase | 7 - .../test/sql_stmt_tests/garsmbr13.testcase | 7 - .../test/sql_stmt_tests/garsmbr14.testcase | 8 - .../test/sql_stmt_tests/garsmbr15.testcase | 8 - .../test/sql_stmt_tests/garsmbr16.testcase | 8 - .../test/sql_stmt_tests/garsmbr17.testcase | 8 - .../test/sql_stmt_tests/garsmbr18.testcase | 7 - .../test/sql_stmt_tests/garsmbr2.testcase | 7 - .../test/sql_stmt_tests/garsmbr20.testcase | 7 - .../test/sql_stmt_tests/garsmbr21.testcase | 7 - .../test/sql_stmt_tests/garsmbr22.testcase | 8 - .../test/sql_stmt_tests/garsmbr23.testcase | 8 - .../test/sql_stmt_tests/garsmbr24.testcase | 8 - .../test/sql_stmt_tests/garsmbr25.testcase | 8 - .../test/sql_stmt_tests/garsmbr26.testcase | 8 - .../test/sql_stmt_tests/garsmbr27.testcase | 8 - .../test/sql_stmt_tests/garsmbr28.testcase | 8 - .../test/sql_stmt_tests/garsmbr29.testcase | 8 - .../test/sql_stmt_tests/garsmbr3.testcase | 7 - .../test/sql_stmt_tests/garsmbr30.testcase | 7 - .../test/sql_stmt_tests/garsmbr31.testcase | 7 - .../test/sql_stmt_tests/garsmbr32.testcase | 7 - .../test/sql_stmt_tests/garsmbr33.testcase | 8 - .../test/sql_stmt_tests/garsmbr34.testcase | 8 - .../test/sql_stmt_tests/garsmbr35.testcase | 8 - .../test/sql_stmt_tests/garsmbr36.testcase | 8 - .../test/sql_stmt_tests/garsmbr4.testcase | 7 - .../test/sql_stmt_tests/garsmbr5.testcase | 7 - .../test/sql_stmt_tests/garsmbr6.testcase | 7 - .../test/sql_stmt_tests/garsmbr7.testcase | 7 - .../test/sql_stmt_tests/garsmbr8.testcase | 7 - .../test/sql_stmt_tests/garsmbr9.testcase | 8 - .../sql_stmt_tests/geodesic-len1.testcase | 7 - .../sql_stmt_tests/geodesic-len2.testcase | 7 - .../sql_stmt_tests/geodesic-len3.testcase | 7 - .../sql_stmt_tests/geodesic-len4.testcase | 7 - .../sql_stmt_tests/geodesic-len5.testcase | 7 - .../sql_stmt_tests/geodesic-len6.testcase | 7 - .../sql_stmt_tests/geodesic-len7.testcase | 7 - .../sql_stmt_tests/geodesic-len8.testcase | 7 - .../test/sql_stmt_tests/geojson1.testcase | 8 - .../test/sql_stmt_tests/geojson2.testcase | 8 - .../test/sql_stmt_tests/geojson3.testcase | 8 - .../test/sql_stmt_tests/geojson4.testcase | 8 - .../test/sql_stmt_tests/geojson5.testcase | 8 - .../test/sql_stmt_tests/geojson6.testcase | 8 - .../sql_stmt_tests/geomcollfromtext1.testcase | 7 - .../sql_stmt_tests/geomcollfromtext2.testcase | 7 - .../sql_stmt_tests/geomconstraints1.testcase | 8 - .../sql_stmt_tests/geomconstraints10.testcase | 8 - .../sql_stmt_tests/geomconstraints11.testcase | 8 - .../sql_stmt_tests/geomconstraints12.testcase | 8 - .../sql_stmt_tests/geomconstraints13.testcase | 8 - .../sql_stmt_tests/geomconstraints14.testcase | 8 - .../sql_stmt_tests/geomconstraints15.testcase | 8 - .../sql_stmt_tests/geomconstraints16.testcase | 8 - .../sql_stmt_tests/geomconstraints17.testcase | 8 - .../sql_stmt_tests/geomconstraints18.testcase | 8 - .../sql_stmt_tests/geomconstraints19.testcase | 8 - .../sql_stmt_tests/geomconstraints2.testcase | 8 - .../sql_stmt_tests/geomconstraints20.testcase | 8 - .../sql_stmt_tests/geomconstraints21.testcase | 8 - .../sql_stmt_tests/geomconstraints22.testcase | 8 - .../sql_stmt_tests/geomconstraints23.testcase | 8 - .../sql_stmt_tests/geomconstraints24.testcase | 8 - .../sql_stmt_tests/geomconstraints25.testcase | 8 - .../sql_stmt_tests/geomconstraints26.testcase | 8 - .../sql_stmt_tests/geomconstraints27.testcase | 8 - .../sql_stmt_tests/geomconstraints28.testcase | 8 - .../sql_stmt_tests/geomconstraints3.testcase | 8 - .../sql_stmt_tests/geomconstraints4.testcase | 8 - .../sql_stmt_tests/geomconstraints5.testcase | 8 - .../sql_stmt_tests/geomconstraints6.testcase | 8 - .../sql_stmt_tests/geomconstraints7.testcase | 8 - .../sql_stmt_tests/geomconstraints8.testcase | 8 - .../sql_stmt_tests/geomconstraints9.testcase | 8 - .../test/sql_stmt_tests/geometryn.testcase | 7 - .../test/sql_stmt_tests/geometryn1.testcase | 7 - .../test/sql_stmt_tests/geometryn10.testcase | 7 - .../test/sql_stmt_tests/geometryn11.testcase | 7 - .../test/sql_stmt_tests/geometryn12.testcase | 7 - .../test/sql_stmt_tests/geometryn13.testcase | 7 - .../test/sql_stmt_tests/geometryn14.testcase | 7 - .../test/sql_stmt_tests/geometryn15.testcase | 7 - .../test/sql_stmt_tests/geometryn16.testcase | 7 - .../test/sql_stmt_tests/geometryn17.testcase | 7 - .../test/sql_stmt_tests/geometryn18.testcase | 7 - .../test/sql_stmt_tests/geometryn19.testcase | 7 - .../test/sql_stmt_tests/geometryn2.testcase | 7 - .../test/sql_stmt_tests/geometryn20.testcase | 7 - .../test/sql_stmt_tests/geometryn3.testcase | 7 - .../test/sql_stmt_tests/geometryn4.testcase | 7 - .../test/sql_stmt_tests/geometryn5.testcase | 8 - .../test/sql_stmt_tests/geometryn6.testcase | 7 - .../test/sql_stmt_tests/geometryn7.testcase | 7 - .../test/sql_stmt_tests/geometryn8.testcase | 7 - .../test/sql_stmt_tests/geometryn9.testcase | 7 - .../sql_stmt_tests/geomfromewkb1.testcase | 7 - .../sql_stmt_tests/geomfromewkb2.testcase | 7 - .../test/sql_stmt_tests/geomfromkml1.testcase | 7 - .../sql_stmt_tests/geomfromkml10.testcase | 7 - .../sql_stmt_tests/geomfromkml11.testcase | 7 - .../sql_stmt_tests/geomfromkml12.testcase | 7 - .../sql_stmt_tests/geomfromkml13.testcase | 7 - .../sql_stmt_tests/geomfromkml14.testcase | 7 - .../sql_stmt_tests/geomfromkml15.testcase | 7 - .../sql_stmt_tests/geomfromkml16.testcase | 7 - .../sql_stmt_tests/geomfromkml17.testcase | 7 - .../sql_stmt_tests/geomfromkml18.testcase | 7 - .../sql_stmt_tests/geomfromkml19.testcase | 7 - .../test/sql_stmt_tests/geomfromkml2.testcase | 7 - .../sql_stmt_tests/geomfromkml20.testcase | 7 - .../sql_stmt_tests/geomfromkml21.testcase | 7 - .../sql_stmt_tests/geomfromkml22.testcase | 7 - .../sql_stmt_tests/geomfromkml23.testcase | 7 - .../test/sql_stmt_tests/geomfromkml3.testcase | 7 - .../test/sql_stmt_tests/geomfromkml4.testcase | 7 - .../test/sql_stmt_tests/geomfromkml5.testcase | 7 - .../test/sql_stmt_tests/geomfromkml6.testcase | 7 - .../test/sql_stmt_tests/geomfromkml7.testcase | 7 - .../test/sql_stmt_tests/geomfromkml8.testcase | 7 - .../test/sql_stmt_tests/geomfromkml9.testcase | 7 - .../sql_stmt_tests/geomfromtext1.testcase | 7 - .../sql_stmt_tests/geomfromtext10.testcase | 7 - .../sql_stmt_tests/geomfromtext11.testcase | 7 - .../sql_stmt_tests/geomfromtext12.testcase | 7 - .../sql_stmt_tests/geomfromtext13.testcase | 7 - .../sql_stmt_tests/geomfromtext14.testcase | 7 - .../sql_stmt_tests/geomfromtext15.testcase | 7 - .../sql_stmt_tests/geomfromtext16.testcase | 7 - .../sql_stmt_tests/geomfromtext17.testcase | 7 - .../sql_stmt_tests/geomfromtext18.testcase | 7 - .../sql_stmt_tests/geomfromtext19.testcase | 7 - .../sql_stmt_tests/geomfromtext2.testcase | 7 - .../sql_stmt_tests/geomfromtext20.testcase | 7 - .../sql_stmt_tests/geomfromtext21.testcase | 7 - .../sql_stmt_tests/geomfromtext22.testcase | 7 - .../sql_stmt_tests/geomfromtext23.testcase | 7 - .../sql_stmt_tests/geomfromtext24.testcase | 7 - .../sql_stmt_tests/geomfromtext25.testcase | 7 - .../sql_stmt_tests/geomfromtext26.testcase | 7 - .../sql_stmt_tests/geomfromtext27.testcase | 7 - .../sql_stmt_tests/geomfromtext28.testcase | 7 - .../sql_stmt_tests/geomfromtext29.testcase | 7 - .../sql_stmt_tests/geomfromtext3.testcase | 7 - .../sql_stmt_tests/geomfromtext30.testcase | 7 - .../sql_stmt_tests/geomfromtext31.testcase | 7 - .../sql_stmt_tests/geomfromtext32.testcase | 7 - .../sql_stmt_tests/geomfromtext33.testcase | 7 - .../sql_stmt_tests/geomfromtext34.testcase | 7 - .../sql_stmt_tests/geomfromtext35.testcase | 7 - .../sql_stmt_tests/geomfromtext36.testcase | 7 - .../sql_stmt_tests/geomfromtext37.testcase | 7 - .../sql_stmt_tests/geomfromtext38.testcase | 7 - .../sql_stmt_tests/geomfromtext39.testcase | 7 - .../sql_stmt_tests/geomfromtext4.testcase | 7 - .../sql_stmt_tests/geomfromtext40.testcase | 7 - .../sql_stmt_tests/geomfromtext41.testcase | 7 - .../sql_stmt_tests/geomfromtext42.testcase | 7 - .../sql_stmt_tests/geomfromtext43.testcase | 7 - .../sql_stmt_tests/geomfromtext44.testcase | 7 - .../sql_stmt_tests/geomfromtext45.testcase | 7 - .../sql_stmt_tests/geomfromtext5.testcase | 7 - .../sql_stmt_tests/geomfromtext6.testcase | 7 - .../sql_stmt_tests/geomfromtext7.testcase | 7 - .../sql_stmt_tests/geomfromtext8.testcase | 7 - .../sql_stmt_tests/geomfromtext9.testcase | 7 - .../test/sql_stmt_tests/geomtype1.testcase | 9 - .../test/sql_stmt_tests/geomtype10.testcase | 9 - .../test/sql_stmt_tests/geomtype11.testcase | 9 - .../test/sql_stmt_tests/geomtype12.testcase | 11 - .../test/sql_stmt_tests/geomtype13.testcase | 11 - .../test/sql_stmt_tests/geomtype14.testcase | 9 - .../test/sql_stmt_tests/geomtype15.testcase | 9 - .../test/sql_stmt_tests/geomtype16.testcase | 9 - .../test/sql_stmt_tests/geomtype17.testcase | 9 - .../test/sql_stmt_tests/geomtype18.testcase | 9 - .../test/sql_stmt_tests/geomtype19.testcase | 9 - .../test/sql_stmt_tests/geomtype2.testcase | 9 - .../test/sql_stmt_tests/geomtype20.testcase | 11 - .../test/sql_stmt_tests/geomtype21.testcase | 11 - .../test/sql_stmt_tests/geomtype22.testcase | 9 - .../test/sql_stmt_tests/geomtype23.testcase | 11 - .../test/sql_stmt_tests/geomtype24.testcase | 9 - .../test/sql_stmt_tests/geomtype25.testcase | 11 - .../test/sql_stmt_tests/geomtype26.testcase | 9 - .../test/sql_stmt_tests/geomtype27.testcase | 9 - .../test/sql_stmt_tests/geomtype28.testcase | 9 - .../test/sql_stmt_tests/geomtype29.testcase | 9 - .../test/sql_stmt_tests/geomtype3.testcase | 9 - .../test/sql_stmt_tests/geomtype30.testcase | 11 - .../test/sql_stmt_tests/geomtype31.testcase | 11 - .../test/sql_stmt_tests/geomtype32.testcase | 9 - .../test/sql_stmt_tests/geomtype33.testcase | 11 - .../test/sql_stmt_tests/geomtype34.testcase | 9 - .../test/sql_stmt_tests/geomtype35.testcase | 9 - .../test/sql_stmt_tests/geomtype36.testcase | 11 - .../test/sql_stmt_tests/geomtype37.testcase | 11 - .../test/sql_stmt_tests/geomtype38.testcase | 11 - .../test/sql_stmt_tests/geomtype39.testcase | 11 - .../test/sql_stmt_tests/geomtype4.testcase | 9 - .../test/sql_stmt_tests/geomtype40.testcase | 11 - .../test/sql_stmt_tests/geomtype41.testcase | 11 - .../test/sql_stmt_tests/geomtype42.testcase | 11 - .../test/sql_stmt_tests/geomtype43.testcase | 11 - .../test/sql_stmt_tests/geomtype44.testcase | 11 - .../test/sql_stmt_tests/geomtype45.testcase | 11 - .../test/sql_stmt_tests/geomtype46.testcase | 11 - .../test/sql_stmt_tests/geomtype47.testcase | 11 - .../test/sql_stmt_tests/geomtype48.testcase | 11 - .../test/sql_stmt_tests/geomtype49.testcase | 11 - .../test/sql_stmt_tests/geomtype5.testcase | 11 - .../test/sql_stmt_tests/geomtype50.testcase | 11 - .../test/sql_stmt_tests/geomtype51.testcase | 11 - .../test/sql_stmt_tests/geomtype52.testcase | 11 - .../test/sql_stmt_tests/geomtype53.testcase | 11 - .../test/sql_stmt_tests/geomtype54.testcase | 11 - .../test/sql_stmt_tests/geomtype55.testcase | 11 - .../test/sql_stmt_tests/geomtype56.testcase | 11 - .../test/sql_stmt_tests/geomtype57.testcase | 11 - .../test/sql_stmt_tests/geomtype58.testcase | 11 - .../test/sql_stmt_tests/geomtype59.testcase | 9 - .../test/sql_stmt_tests/geomtype6.testcase | 9 - .../test/sql_stmt_tests/geomtype60.testcase | 11 - .../test/sql_stmt_tests/geomtype61.testcase | 11 - .../test/sql_stmt_tests/geomtype62.testcase | 11 - .../test/sql_stmt_tests/geomtype63.testcase | 11 - .../test/sql_stmt_tests/geomtype64.testcase | 11 - .../test/sql_stmt_tests/geomtype65.testcase | 11 - .../test/sql_stmt_tests/geomtype66.testcase | 11 - .../test/sql_stmt_tests/geomtype67.testcase | 11 - .../test/sql_stmt_tests/geomtype68.testcase | 11 - .../test/sql_stmt_tests/geomtype69.testcase | 11 - .../test/sql_stmt_tests/geomtype7.testcase | 11 - .../test/sql_stmt_tests/geomtype8.testcase | 9 - .../test/sql_stmt_tests/geomtype9.testcase | 9 - .../test/sql_stmt_tests/gml1.testcase | 8 - .../test/sql_stmt_tests/gml10.testcase | 8 - .../test/sql_stmt_tests/gml11.testcase | 8 - .../test/sql_stmt_tests/gml12.testcase | 8 - .../test/sql_stmt_tests/gml13.testcase | 8 - .../test/sql_stmt_tests/gml14.testcase | 8 - .../test/sql_stmt_tests/gml15.testcase | 8 - .../test/sql_stmt_tests/gml16.testcase | 8 - .../test/sql_stmt_tests/gml2.testcase | 8 - .../test/sql_stmt_tests/gml3.testcase | 8 - .../test/sql_stmt_tests/gml4.testcase | 8 - .../test/sql_stmt_tests/gml5.testcase | 8 - .../test/sql_stmt_tests/gml6.testcase | 8 - .../test/sql_stmt_tests/gml7.testcase | 8 - .../test/sql_stmt_tests/gml8.testcase | 8 - .../test/sql_stmt_tests/gml9.testcase | 8 - .../greatcircle-badblob.testcase | 7 - .../sql_stmt_tests/greatcircle-poly.testcase | 7 - .../sql_stmt_tests/greatcircle-poly2.testcase | 7 - .../sql_stmt_tests/greatcircle-poly3.testcase | 7 - .../sql_stmt_tests/greatcircle-poly4.testcase | 7 - .../sql_stmt_tests/greatcircle-poly5.testcase | 7 - .../sql_stmt_tests/greatcircle-poly6.testcase | 7 - .../sql_stmt_tests/greatcircle-poly7.testcase | 7 - .../sql_stmt_tests/greatcircle-text.testcase | 7 - .../test/sql_stmt_tests/greatcircle.testcase | 7 - .../test/sql_stmt_tests/in_m.testcase | 7 - .../test/sql_stmt_tests/ind_ch_m.testcase | 7 - .../test/sql_stmt_tests/ind_ft_m.testcase | 7 - .../test/sql_stmt_tests/ind_yd_m.testcase | 7 - .../test/sql_stmt_tests/is3d1.testcase | 8 - .../test/sql_stmt_tests/is3d2.testcase | 8 - .../test/sql_stmt_tests/is3d3.testcase | 8 - .../test/sql_stmt_tests/is3d4.testcase | 8 - .../test/sql_stmt_tests/is3d5.testcase | 8 - .../test/sql_stmt_tests/is3d6.testcase | 8 - .../test/sql_stmt_tests/isXblob5.testcase | 27 - .../test/sql_stmt_tests/isXblob6.testcase | 27 - .../test/sql_stmt_tests/isXblob7.testcase | 25 - .../test/sql_stmt_tests/isempty.testcase | 7 - .../test/sql_stmt_tests/isempty2.testcase | 7 - .../test/sql_stmt_tests/isempty3.testcase | 7 - .../test/sql_stmt_tests/isempty4.testcase | 7 - .../test/sql_stmt_tests/ismeasured1.testcase | 8 - .../test/sql_stmt_tests/ismeasured2.testcase | 8 - .../test/sql_stmt_tests/ismeasured3.testcase | 8 - .../test/sql_stmt_tests/ismeasured4.testcase | 8 - .../test/sql_stmt_tests/ismeasured5.testcase | 8 - .../test/sql_stmt_tests/ismeasured6.testcase | 8 - .../test/sql_stmt_tests/k3b-icon.png | Bin 982 -> 0 bytes .../test/sql_stmt_tests/km_m.testcase | 7 - .../test/sql_stmt_tests/ktorrent_grad1.jpg | Bin 367 -> 0 bytes .../test/sql_stmt_tests/ktorrent_sidebar.gif | Bin 2077 -> 0 bytes .../test/sql_stmt_tests/lhr1.testcase | 7 - .../test/sql_stmt_tests/lhr2.testcase | 7 - .../test/sql_stmt_tests/lhr3.testcase | 7 - .../test/sql_stmt_tests/lhr4.testcase | 7 - .../test/sql_stmt_tests/lhr5.testcase | 7 - .../test/sql_stmt_tests/lhr6.testcase | 7 - .../sql_stmt_tests/linefromtext1.testcase | 7 - .../sql_stmt_tests/linefromtext2.testcase | 7 - .../sql_stmt_tests/linesfromrings1.testcase | 8 - .../sql_stmt_tests/linesfromrings2.testcase | 9 - .../sql_stmt_tests/linesfromrings3.testcase | 9 - .../sql_stmt_tests/linesfromrings4.testcase | 9 - .../sql_stmt_tests/linesfromrings5.testcase | 9 - .../sql_stmt_tests/linesfromrings6.testcase | 8 - .../sql_stmt_tests/linesfromrings7.testcase | 8 - .../test/sql_stmt_tests/link_m.testcase | 7 - .../sql_stmt_tests/locatemeasure1.testcase | 7 - .../sql_stmt_tests/locatemeasure10.testcase | 7 - .../sql_stmt_tests/locatemeasure11.testcase | 7 - .../sql_stmt_tests/locatemeasure12.testcase | 7 - .../sql_stmt_tests/locatemeasure13.testcase | 7 - .../sql_stmt_tests/locatemeasure14.testcase | 7 - .../sql_stmt_tests/locatemeasure15.testcase | 7 - .../sql_stmt_tests/locatemeasure16.testcase | 7 - .../sql_stmt_tests/locatemeasure17.testcase | 7 - .../sql_stmt_tests/locatemeasure2.testcase | 7 - .../sql_stmt_tests/locatemeasure3.testcase | 7 - .../sql_stmt_tests/locatemeasure4.testcase | 7 - .../sql_stmt_tests/locatemeasure5.testcase | 7 - .../sql_stmt_tests/locatemeasure6.testcase | 7 - .../sql_stmt_tests/locatemeasure7.testcase | 7 - .../sql_stmt_tests/locatemeasure8.testcase | 7 - .../sql_stmt_tests/locatemeasure9.testcase | 7 - .../test/sql_stmt_tests/m_ch.testcase | 7 - .../test/sql_stmt_tests/m_cm.testcase | 7 - .../test/sql_stmt_tests/m_dm.testcase | 7 - .../test/sql_stmt_tests/m_fath.testcase | 7 - .../test/sql_stmt_tests/m_ft-text.testcase | 7 - .../test/sql_stmt_tests/m_ft.testcase | 7 - .../test/sql_stmt_tests/m_in.testcase | 7 - .../test/sql_stmt_tests/m_in_us.testcase | 7 - .../test/sql_stmt_tests/m_ind_ch.testcase | 7 - .../test/sql_stmt_tests/m_ind_ft.testcase | 7 - .../test/sql_stmt_tests/m_ind_yd.testcase | 7 - .../test/sql_stmt_tests/m_km.testcase | 7 - .../test/sql_stmt_tests/m_ln.testcase | 7 - .../test/sql_stmt_tests/m_mi.testcase | 7 - .../test/sql_stmt_tests/m_mm.testcase | 7 - .../test/sql_stmt_tests/m_nm.testcase | 7 - .../test/sql_stmt_tests/m_us_ch.testcase | 7 - .../test/sql_stmt_tests/m_us_ft.testcase | 7 - .../test/sql_stmt_tests/m_usmi.testcase | 7 - .../test/sql_stmt_tests/m_yd.testcase | 7 - .../test/sql_stmt_tests/m_yd_us.testcase | 7 - .../test/sql_stmt_tests/makeline.testcase | 8 - .../test/sql_stmt_tests/makeline10.testcase | 8 - .../test/sql_stmt_tests/makeline11.testcase | 8 - .../test/sql_stmt_tests/makeline12.testcase | 8 - .../test/sql_stmt_tests/makeline13.testcase | 8 - .../test/sql_stmt_tests/makeline14.testcase | 8 - .../test/sql_stmt_tests/makeline15.testcase | 8 - .../test/sql_stmt_tests/makeline16.testcase | 8 - .../test/sql_stmt_tests/makeline17.testcase | 8 - .../test/sql_stmt_tests/makeline18.testcase | 8 - .../test/sql_stmt_tests/makeline19.testcase | 8 - .../test/sql_stmt_tests/makeline2.testcase | 8 - .../test/sql_stmt_tests/makeline20.testcase | 8 - .../test/sql_stmt_tests/makeline21.testcase | 8 - .../test/sql_stmt_tests/makeline22.testcase | 8 - .../test/sql_stmt_tests/makeline23.testcase | 8 - .../test/sql_stmt_tests/makeline24.testcase | 8 - .../test/sql_stmt_tests/makeline3.testcase | 8 - .../test/sql_stmt_tests/makeline4.testcase | 8 - .../test/sql_stmt_tests/makeline5.testcase | 8 - .../test/sql_stmt_tests/makeline6.testcase | 8 - .../test/sql_stmt_tests/makeline7.testcase | 8 - .../test/sql_stmt_tests/makeline8.testcase | 8 - .../test/sql_stmt_tests/makeline9.testcase | 8 - .../sql_stmt_tests/makepoint-null1.testcase | 7 - .../sql_stmt_tests/makepoint-null2.testcase | 7 - .../sql_stmt_tests/makepoint-null3.testcase | 7 - .../sql_stmt_tests/makepoint-null4.testcase | 7 - .../sql_stmt_tests/makepoint-null5.testcase | 7 - .../sql_stmt_tests/makepoint-null6.testcase | 7 - .../sql_stmt_tests/makepoint-null7.testcase | 7 - .../test/sql_stmt_tests/makepoint1.testcase | 7 - .../test/sql_stmt_tests/makepoint10.testcase | 7 - .../test/sql_stmt_tests/makepoint11.testcase | 7 - .../test/sql_stmt_tests/makepoint12.testcase | 7 - .../test/sql_stmt_tests/makepoint13.testcase | 7 - .../test/sql_stmt_tests/makepoint14.testcase | 7 - .../test/sql_stmt_tests/makepoint15.testcase | 7 - .../test/sql_stmt_tests/makepoint2.testcase | 7 - .../test/sql_stmt_tests/makepoint3.testcase | 7 - .../test/sql_stmt_tests/makepoint4.testcase | 7 - .../test/sql_stmt_tests/makepoint5.testcase | 7 - .../test/sql_stmt_tests/makepoint6.testcase | 7 - .../test/sql_stmt_tests/makepoint7.testcase | 7 - .../test/sql_stmt_tests/makepoint8.testcase | 7 - .../test/sql_stmt_tests/makepoint9.testcase | 7 - .../sql_stmt_tests/makepointm-null1.testcase | 7 - .../sql_stmt_tests/makepointm-null2.testcase | 7 - .../sql_stmt_tests/makepointm-null3.testcase | 7 - .../sql_stmt_tests/makepointm-null4.testcase | 7 - .../sql_stmt_tests/makepointm-null5.testcase | 7 - .../sql_stmt_tests/makepointm-null6.testcase | 7 - .../sql_stmt_tests/makepointm-null7.testcase | 7 - .../sql_stmt_tests/makepointm-null8.testcase | 7 - .../sql_stmt_tests/makepointz-null1.testcase | 7 - .../sql_stmt_tests/makepointz-null2.testcase | 7 - .../sql_stmt_tests/makepointz-null3.testcase | 7 - .../sql_stmt_tests/makepointz-null4.testcase | 7 - .../sql_stmt_tests/makepointz-null5.testcase | 7 - .../sql_stmt_tests/makepointz-null6.testcase | 7 - .../sql_stmt_tests/makepointz-null7.testcase | 7 - .../sql_stmt_tests/makepointz-null8.testcase | 7 - .../sql_stmt_tests/makepointzm-null1.testcase | 7 - .../makepointzm-null10.testcase | 7 - .../sql_stmt_tests/makepointzm-null2.testcase | 7 - .../sql_stmt_tests/makepointzm-null3.testcase | 7 - .../sql_stmt_tests/makepointzm-null4.testcase | 7 - .../sql_stmt_tests/makepointzm-null5.testcase | 7 - .../sql_stmt_tests/makepointzm-null6.testcase | 7 - .../sql_stmt_tests/makepointzm-null7.testcase | 7 - .../sql_stmt_tests/makepointzm-null8.testcase | 7 - .../sql_stmt_tests/makepointzm-null9.testcase | 7 - .../test/sql_stmt_tests/maxm1.testcase | 8 - .../test/sql_stmt_tests/maxm2.testcase | 8 - .../test/sql_stmt_tests/maxm3.testcase | 8 - .../test/sql_stmt_tests/maxm4.testcase | 8 - .../test/sql_stmt_tests/maxm5.testcase | 8 - .../test/sql_stmt_tests/maxm6.testcase | 8 - .../test/sql_stmt_tests/maxm7.testcase | 8 - .../test/sql_stmt_tests/maxz1.testcase | 8 - .../test/sql_stmt_tests/maxz2.testcase | 8 - .../test/sql_stmt_tests/maxz3.testcase | 8 - .../test/sql_stmt_tests/maxz4.testcase | 8 - .../test/sql_stmt_tests/maxz5.testcase | 8 - .../test/sql_stmt_tests/maxz6.testcase | 8 - .../test/sql_stmt_tests/maxz7.testcase | 8 - .../test/sql_stmt_tests/mbr1.testcase | 7 - .../test/sql_stmt_tests/mbr10.testcase | 7 - .../test/sql_stmt_tests/mbr11.testcase | 7 - .../test/sql_stmt_tests/mbr12.testcase | 7 - .../test/sql_stmt_tests/mbr13.testcase | 7 - .../test/sql_stmt_tests/mbr14.testcase | 7 - .../test/sql_stmt_tests/mbr15.testcase | 7 - .../test/sql_stmt_tests/mbr16.testcase | 7 - .../test/sql_stmt_tests/mbr17.testcase | 7 - .../test/sql_stmt_tests/mbr18.testcase | 7 - .../test/sql_stmt_tests/mbr19.testcase | 7 - .../test/sql_stmt_tests/mbr2.testcase | 7 - .../test/sql_stmt_tests/mbr20.testcase | 7 - .../test/sql_stmt_tests/mbr21.testcase | 7 - .../test/sql_stmt_tests/mbr22.testcase | 7 - .../test/sql_stmt_tests/mbr23.testcase | 7 - .../test/sql_stmt_tests/mbr24.testcase | 7 - .../test/sql_stmt_tests/mbr25.testcase | 7 - .../test/sql_stmt_tests/mbr26.testcase | 7 - .../test/sql_stmt_tests/mbr27.testcase | 7 - .../test/sql_stmt_tests/mbr28.testcase | 7 - .../test/sql_stmt_tests/mbr29.testcase | 7 - .../test/sql_stmt_tests/mbr3.testcase | 7 - .../test/sql_stmt_tests/mbr30.testcase | 7 - .../test/sql_stmt_tests/mbr31.testcase | 7 - .../test/sql_stmt_tests/mbr32.testcase | 7 - .../test/sql_stmt_tests/mbr4.testcase | 7 - .../test/sql_stmt_tests/mbr5.testcase | 7 - .../test/sql_stmt_tests/mbr6.testcase | 7 - .../test/sql_stmt_tests/mbr7.testcase | 7 - .../test/sql_stmt_tests/mbr8.testcase | 7 - .../test/sql_stmt_tests/mbr9.testcase | 7 - .../test/sql_stmt_tests/mbrminmax1.testcase | 8 - .../test/sql_stmt_tests/mbrminmax2.testcase | 8 - .../test/sql_stmt_tests/mbrminmax3.testcase | 8 - .../test/sql_stmt_tests/mbrminmax4.testcase | 8 - .../test/sql_stmt_tests/mbrminmax5.testcase | 8 - .../test/sql_stmt_tests/mbrminmax6.testcase | 8 - .../test/sql_stmt_tests/mbrminmax7.testcase | 8 - .../test/sql_stmt_tests/mbrminmax8.testcase | 8 - .../test/sql_stmt_tests/mi_m.testcase | 7 - .../test/sql_stmt_tests/minm1.testcase | 8 - .../test/sql_stmt_tests/minm2.testcase | 8 - .../test/sql_stmt_tests/minm3.testcase | 8 - .../test/sql_stmt_tests/minm4.testcase | 8 - .../test/sql_stmt_tests/minm5.testcase | 8 - .../test/sql_stmt_tests/minm6.testcase | 8 - .../test/sql_stmt_tests/minz1.testcase | 8 - .../test/sql_stmt_tests/minz2.testcase | 8 - .../test/sql_stmt_tests/minz3.testcase | 8 - .../test/sql_stmt_tests/minz4.testcase | 8 - .../test/sql_stmt_tests/minz5.testcase | 8 - .../test/sql_stmt_tests/minz6.testcase | 8 - .../sql_stmt_tests/mlinefromtext1.testcase | 7 - .../sql_stmt_tests/mlinefromtext2.testcase | 7 - .../test/sql_stmt_tests/mm_m.testcase | 7 - .../sql_stmt_tests/mpointfromtext1.testcase | 7 - .../sql_stmt_tests/mpointfromtext2.testcase | 7 - .../sql_stmt_tests/mpolygonfromtext1.testcase | 7 - .../sql_stmt_tests/mpolygonfromtext2.testcase | 7 - .../test/sql_stmt_tests/ndims1.testcase | 9 - .../test/sql_stmt_tests/ndims2.testcase | 9 - .../test/sql_stmt_tests/ndims3.testcase | 9 - .../test/sql_stmt_tests/ndims4.testcase | 9 - .../test/sql_stmt_tests/ndims5.testcase | 9 - .../test/sql_stmt_tests/ndims6.testcase | 9 - .../test/sql_stmt_tests/nm_m.testcase | 7 - .../sql_stmt_tests/normalizelonlat1.testcase | 7 - .../sql_stmt_tests/normalizelonlat10.testcase | 7 - .../sql_stmt_tests/normalizelonlat11.testcase | 7 - .../sql_stmt_tests/normalizelonlat12.testcase | 7 - .../sql_stmt_tests/normalizelonlat13.testcase | 7 - .../sql_stmt_tests/normalizelonlat14.testcase | 7 - .../sql_stmt_tests/normalizelonlat15.testcase | 7 - .../sql_stmt_tests/normalizelonlat16.testcase | 7 - .../sql_stmt_tests/normalizelonlat17.testcase | 7 - .../sql_stmt_tests/normalizelonlat18.testcase | 8 - .../sql_stmt_tests/normalizelonlat19.testcase | 8 - .../sql_stmt_tests/normalizelonlat2.testcase | 7 - .../sql_stmt_tests/normalizelonlat20.testcase | 8 - .../sql_stmt_tests/normalizelonlat21.testcase | 8 - .../sql_stmt_tests/normalizelonlat22.testcase | 8 - .../sql_stmt_tests/normalizelonlat23.testcase | 7 - .../sql_stmt_tests/normalizelonlat24.testcase | 7 - .../sql_stmt_tests/normalizelonlat25.testcase | 7 - .../sql_stmt_tests/normalizelonlat26.testcase | 7 - .../sql_stmt_tests/normalizelonlat27.testcase | 7 - .../sql_stmt_tests/normalizelonlat3.testcase | 7 - .../sql_stmt_tests/normalizelonlat4.testcase | 7 - .../sql_stmt_tests/normalizelonlat5.testcase | 7 - .../sql_stmt_tests/normalizelonlat6.testcase | 7 - .../sql_stmt_tests/normalizelonlat7.testcase | 7 - .../sql_stmt_tests/normalizelonlat8.testcase | 7 - .../sql_stmt_tests/normalizelonlat9.testcase | 7 - .../test/sql_stmt_tests/npoints1.testcase | 7 - .../test/sql_stmt_tests/npoints2.testcase | 7 - .../test/sql_stmt_tests/npoints3.testcase | 7 - .../test/sql_stmt_tests/npoints4.testcase | 7 - .../test/sql_stmt_tests/npoints5.testcase | 7 - .../test/sql_stmt_tests/npoints6.testcase | 7 - .../test/sql_stmt_tests/nrings1.testcase | 7 - .../test/sql_stmt_tests/nrings2.testcase | 7 - .../test/sql_stmt_tests/nrings3.testcase | 7 - .../test/sql_stmt_tests/nrings4.testcase | 7 - .../test/sql_stmt_tests/nrings5.testcase | 7 - .../test/sql_stmt_tests/nrings6.testcase | 7 - .../sql_stmt_tests/numgeometries1.testcase | 7 - .../sql_stmt_tests/numgeometries2.testcase | 7 - .../sql_stmt_tests/numgeometries3.testcase | 7 - .../sql_stmt_tests/numgeometries4.testcase | 7 - .../sql_stmt_tests/numgeometries5.testcase | 7 - .../sql_stmt_tests/numgeometries6.testcase | 7 - .../sql_stmt_tests/pointfromtext1.testcase | 7 - .../sql_stmt_tests/pointfromtext2.testcase | 7 - .../test/sql_stmt_tests/pointn1.testcase | 7 - .../test/sql_stmt_tests/pointn10.testcase | 7 - .../test/sql_stmt_tests/pointn11.testcase | 7 - .../test/sql_stmt_tests/pointn12.testcase | 7 - .../test/sql_stmt_tests/pointn13.testcase | 7 - .../test/sql_stmt_tests/pointn14.testcase | 7 - .../test/sql_stmt_tests/pointn15.testcase | 7 - .../test/sql_stmt_tests/pointn2.testcase | 7 - .../test/sql_stmt_tests/pointn3.testcase | 7 - .../test/sql_stmt_tests/pointn4.testcase | 7 - .../test/sql_stmt_tests/pointn5.testcase | 7 - .../test/sql_stmt_tests/pointn6.testcase | 7 - .../test/sql_stmt_tests/pointn7.testcase | 7 - .../test/sql_stmt_tests/pointn8.testcase | 7 - .../test/sql_stmt_tests/pointn9.testcase | 7 - .../sql_stmt_tests/polygonfromtext1.testcase | 7 - .../sql_stmt_tests/polygonfromtext2.testcase | 7 - .../sql_stmt_tests/reflectcoords1.testcase | 7 - .../sql_stmt_tests/reflectcoords10.testcase | 7 - .../sql_stmt_tests/reflectcoords11.testcase | 7 - .../sql_stmt_tests/reflectcoords12.testcase | 7 - .../sql_stmt_tests/reflectcoords13.testcase | 7 - .../sql_stmt_tests/reflectcoords14.testcase | 7 - .../sql_stmt_tests/reflectcoords15.testcase | 7 - .../sql_stmt_tests/reflectcoords16.testcase | 7 - .../sql_stmt_tests/reflectcoords17.testcase | 7 - .../sql_stmt_tests/reflectcoords2.testcase | 7 - .../sql_stmt_tests/reflectcoords3.testcase | 7 - .../sql_stmt_tests/reflectcoords4.testcase | 7 - .../sql_stmt_tests/reflectcoords5.testcase | 7 - .../sql_stmt_tests/reflectcoords6.testcase | 7 - .../sql_stmt_tests/reflectcoords7.testcase | 7 - .../sql_stmt_tests/reflectcoords8.testcase | 7 - .../sql_stmt_tests/reflectcoords9.testcase | 7 - .../test/sql_stmt_tests/reverse1.testcase | 7 - .../test/sql_stmt_tests/reverse2.testcase | 7 - .../test/sql_stmt_tests/reverse3.testcase | 7 - .../test/sql_stmt_tests/reverse4.testcase | 7 - .../test/sql_stmt_tests/reverse5.testcase | 7 - .../test/sql_stmt_tests/reverse6.testcase | 7 - .../test/sql_stmt_tests/ring1.testcase | 7 - .../test/sql_stmt_tests/ring10.testcase | 7 - .../test/sql_stmt_tests/ring11.testcase | 7 - .../test/sql_stmt_tests/ring12.testcase | 7 - .../test/sql_stmt_tests/ring13.testcase | 7 - .../test/sql_stmt_tests/ring14.testcase | 7 - .../test/sql_stmt_tests/ring15.testcase | 7 - .../test/sql_stmt_tests/ring16.testcase | 7 - .../test/sql_stmt_tests/ring17.testcase | 7 - .../test/sql_stmt_tests/ring18.testcase | 7 - .../test/sql_stmt_tests/ring19.testcase | 7 - .../test/sql_stmt_tests/ring2.testcase | 7 - .../test/sql_stmt_tests/ring20.testcase | 7 - .../test/sql_stmt_tests/ring21.testcase | 7 - .../test/sql_stmt_tests/ring22.testcase | 7 - .../test/sql_stmt_tests/ring23.testcase | 7 - .../test/sql_stmt_tests/ring24.testcase | 7 - .../test/sql_stmt_tests/ring25.testcase | 7 - .../test/sql_stmt_tests/ring26.testcase | 7 - .../test/sql_stmt_tests/ring27.testcase | 7 - .../test/sql_stmt_tests/ring28.testcase | 7 - .../test/sql_stmt_tests/ring3.testcase | 7 - .../test/sql_stmt_tests/ring4.testcase | 7 - .../test/sql_stmt_tests/ring5.testcase | 7 - .../test/sql_stmt_tests/ring6.testcase | 7 - .../test/sql_stmt_tests/ring7.testcase | 7 - .../test/sql_stmt_tests/ring8.testcase | 7 - .../test/sql_stmt_tests/ring9.testcase | 7 - .../sql_stmt_tests/rotatecoords1.testcase | 19 - .../sql_stmt_tests/rotatecoords10.testcase | 19 - .../sql_stmt_tests/rotatecoords11.testcase | 19 - .../sql_stmt_tests/rotatecoords12.testcase | 19 - .../sql_stmt_tests/rotatecoords13.testcase | 19 - .../sql_stmt_tests/rotatecoords14.testcase | 19 - .../sql_stmt_tests/rotatecoords2.testcase | 19 - .../sql_stmt_tests/rotatecoords3.testcase | 19 - .../sql_stmt_tests/rotatecoords4.testcase | 19 - .../sql_stmt_tests/rotatecoords5.testcase | 19 - .../sql_stmt_tests/rotatecoords6.testcase | 19 - .../sql_stmt_tests/rotatecoords7.testcase | 19 - .../sql_stmt_tests/rotatecoords8.testcase | 19 - .../sql_stmt_tests/rotatecoords9.testcase | 19 - .../test/sql_stmt_tests/routing1.testcase | 30 - .../test/sql_stmt_tests/routing2.testcase | 30 - .../test/sql_stmt_tests/routing3.testcase | 30 - .../test/sql_stmt_tests/routing4.testcase | 30 - .../test/sql_stmt_tests/routing5.testcase | 30 - src/spatialite/test/sql_stmt_tests/sandro.jpg | Bin 23003 -> 0 bytes .../sql_stmt_tests/sanitizeGeometry1.testcase | 9 - .../sanitizeGeometry10.testcase | 9 - .../sanitizeGeometry11.testcase | 9 - .../sanitizeGeometry12.testcase | 10 - .../sanitizeGeometry13.testcase | 9 - .../sanitizeGeometry14.testcase | 9 - .../sanitizeGeometry15.testcase | 9 - .../sanitizeGeometry16.testcase | 9 - .../sql_stmt_tests/sanitizeGeometry2.testcase | 10 - .../sql_stmt_tests/sanitizeGeometry3.testcase | 10 - .../sql_stmt_tests/sanitizeGeometry4.testcase | 9 - .../sql_stmt_tests/sanitizeGeometry5.testcase | 9 - .../sql_stmt_tests/sanitizeGeometry6.testcase | 9 - .../sql_stmt_tests/sanitizeGeometry7.testcase | 9 - .../sql_stmt_tests/sanitizeGeometry8.testcase | 9 - .../sql_stmt_tests/sanitizeGeometry9.testcase | 9 - .../test/sql_stmt_tests/scalecoords1.testcase | 21 - .../sql_stmt_tests/scalecoords10.testcase | 21 - .../sql_stmt_tests/scalecoords11.testcase | 21 - .../sql_stmt_tests/scalecoords12.testcase | 21 - .../sql_stmt_tests/scalecoords13.testcase | 21 - .../test/sql_stmt_tests/scalecoords2.testcase | 21 - .../test/sql_stmt_tests/scalecoords3.testcase | 21 - .../test/sql_stmt_tests/scalecoords4.testcase | 21 - .../test/sql_stmt_tests/scalecoords5.testcase | 21 - .../test/sql_stmt_tests/scalecoords6.testcase | 21 - .../test/sql_stmt_tests/scalecoords7.testcase | 21 - .../test/sql_stmt_tests/scalecoords8.testcase | 21 - .../test/sql_stmt_tests/scalecoords9.testcase | 21 - .../test/sql_stmt_tests/shiftcoords1.testcase | 7 - .../sql_stmt_tests/shiftcoords10.testcase | 7 - .../sql_stmt_tests/shiftcoords11.testcase | 7 - .../sql_stmt_tests/shiftcoords12.testcase | 7 - .../sql_stmt_tests/shiftcoords13.testcase | 7 - .../sql_stmt_tests/shiftcoords14.testcase | 7 - .../sql_stmt_tests/shiftcoords15.testcase | 7 - .../test/sql_stmt_tests/shiftcoords2.testcase | 7 - .../test/sql_stmt_tests/shiftcoords3.testcase | 7 - .../test/sql_stmt_tests/shiftcoords4.testcase | 7 - .../test/sql_stmt_tests/shiftcoords5.testcase | 10 - .../test/sql_stmt_tests/shiftcoords6.testcase | 7 - .../test/sql_stmt_tests/shiftcoords7.testcase | 7 - .../test/sql_stmt_tests/shiftcoords8.testcase | 7 - .../test/sql_stmt_tests/shiftcoords9.testcase | 7 - .../sql_stmt_tests/shiftlongitude1.testcase | 7 - .../sql_stmt_tests/shiftlongitude10.testcase | 7 - .../sql_stmt_tests/shiftlongitude11.testcase | 7 - .../sql_stmt_tests/shiftlongitude12.testcase | 7 - .../sql_stmt_tests/shiftlongitude13.testcase | 7 - .../sql_stmt_tests/shiftlongitude14.testcase | 7 - .../sql_stmt_tests/shiftlongitude15.testcase | 7 - .../sql_stmt_tests/shiftlongitude16.testcase | 7 - .../sql_stmt_tests/shiftlongitude17.testcase | 7 - .../sql_stmt_tests/shiftlongitude18.testcase | 7 - .../sql_stmt_tests/shiftlongitude19.testcase | 7 - .../sql_stmt_tests/shiftlongitude2.testcase | 7 - .../sql_stmt_tests/shiftlongitude20.testcase | 7 - .../sql_stmt_tests/shiftlongitude21.testcase | 7 - .../sql_stmt_tests/shiftlongitude22.testcase | 7 - .../sql_stmt_tests/shiftlongitude23.testcase | 7 - .../sql_stmt_tests/shiftlongitude24.testcase | 7 - .../sql_stmt_tests/shiftlongitude25.testcase | 7 - .../sql_stmt_tests/shiftlongitude26.testcase | 7 - .../sql_stmt_tests/shiftlongitude3.testcase | 7 - .../sql_stmt_tests/shiftlongitude4.testcase | 7 - .../sql_stmt_tests/shiftlongitude5.testcase | 7 - .../sql_stmt_tests/shiftlongitude6.testcase | 7 - .../sql_stmt_tests/shiftlongitude7.testcase | 7 - .../sql_stmt_tests/shiftlongitude8.testcase | 7 - .../sql_stmt_tests/shiftlongitude9.testcase | 7 - .../test/sql_stmt_tests/spatialindex.testcase | 8 - .../test/sql_stmt_tests/srid1.testcase | 7 - .../test/sql_stmt_tests/srid10.testcase | 7 - .../test/sql_stmt_tests/srid11.testcase | 7 - .../test/sql_stmt_tests/srid2.testcase | 7 - .../test/sql_stmt_tests/srid3.testcase | 7 - .../test/sql_stmt_tests/srid4.testcase | 7 - .../test/sql_stmt_tests/srid5.testcase | 7 - .../test/sql_stmt_tests/srid6.testcase | 7 - .../test/sql_stmt_tests/srid7.testcase | 7 - .../test/sql_stmt_tests/srid8.testcase | 7 - .../test/sql_stmt_tests/srid9.testcase | 7 - .../test/sql_stmt_tests/st_m1.testcase | 7 - .../test/sql_stmt_tests/st_m2.testcase | 8 - .../test/sql_stmt_tests/st_m3.testcase | 7 - .../test/sql_stmt_tests/st_m4.testcase | 7 - .../test/sql_stmt_tests/st_m5.testcase | 8 - .../test/sql_stmt_tests/st_m6.testcase | 8 - .../test/sql_stmt_tests/st_m8.testcase | 7 - .../test/sql_stmt_tests/st_x1.testcase | 7 - .../test/sql_stmt_tests/st_x2.testcase | 7 - .../test/sql_stmt_tests/st_x3.testcase | 7 - .../test/sql_stmt_tests/st_x4.testcase | 7 - .../test/sql_stmt_tests/st_x5.testcase | 8 - .../test/sql_stmt_tests/st_x6.testcase | 8 - .../test/sql_stmt_tests/st_x7.testcase | 7 - .../test/sql_stmt_tests/st_x8.testcase | 7 - .../test/sql_stmt_tests/st_x9.testcase | 7 - .../test/sql_stmt_tests/st_y1.testcase | 7 - .../test/sql_stmt_tests/st_y2.testcase | 7 - .../test/sql_stmt_tests/st_y3.testcase | 7 - .../test/sql_stmt_tests/st_y4.testcase | 8 - .../test/sql_stmt_tests/st_y5.testcase | 8 - .../test/sql_stmt_tests/st_y7.testcase | 7 - .../test/sql_stmt_tests/st_y8.testcase | 7 - .../test/sql_stmt_tests/st_y9.testcase | 7 - .../test/sql_stmt_tests/st_z1.testcase | 7 - .../test/sql_stmt_tests/st_z2.testcase | 7 - .../test/sql_stmt_tests/st_z3.testcase | 7 - .../test/sql_stmt_tests/st_z4.testcase | 7 - .../test/sql_stmt_tests/st_z5.testcase | 8 - .../test/sql_stmt_tests/st_z6.testcase | 8 - .../test/sql_stmt_tests/st_z7.testcase | 7 - .../test/sql_stmt_tests/st_z8.testcase | 7 - .../test/sql_stmt_tests/st_z9.testcase | 7 - .../test/sql_stmt_tests/startpoint1.testcase | 7 - .../test/sql_stmt_tests/startpoint2.testcase | 7 - .../test/sql_stmt_tests/startpoint3.testcase | 7 - .../test/sql_stmt_tests/swapcoords1.testcase | 7 - .../test/sql_stmt_tests/swapcoords10.testcase | 7 - .../test/sql_stmt_tests/swapcoords11.testcase | 7 - .../test/sql_stmt_tests/swapcoords2.testcase | 7 - .../test/sql_stmt_tests/swapcoords3.testcase | 7 - .../test/sql_stmt_tests/swapcoords4.testcase | 7 - .../test/sql_stmt_tests/swapcoords5.testcase | 7 - .../test/sql_stmt_tests/swapcoords6.testcase | 7 - .../test/sql_stmt_tests/swapcoords7.testcase | 7 - .../test/sql_stmt_tests/swapcoords8.testcase | 7 - .../test/sql_stmt_tests/swapcoords9.testcase | 7 - .../test/sql_stmt_tests/testFDO.sqlite | Bin 129024 -> 0 bytes .../test/sql_stmt_tests/testFGF.sqlite | Bin 229376 -> 0 bytes .../test/sql_stmt_tests/testdb1.sqlite | Bin 4213760 -> 0 bytes .../test/sql_stmt_tests/togars1.testcase | 7 - .../test/sql_stmt_tests/togars10.testcase | 7 - .../test/sql_stmt_tests/togars11.testcase | 7 - .../test/sql_stmt_tests/togars12.testcase | 7 - .../test/sql_stmt_tests/togars2.testcase | 7 - .../test/sql_stmt_tests/togars3.testcase | 7 - .../test/sql_stmt_tests/togars4.testcase | 7 - .../test/sql_stmt_tests/togars5.testcase | 7 - .../test/sql_stmt_tests/togars6.testcase | 7 - .../test/sql_stmt_tests/togars7.testcase | 7 - .../test/sql_stmt_tests/togars8.testcase | 7 - .../test/sql_stmt_tests/togars9.testcase | 7 - .../test/sql_stmt_tests/translate1.testcase | 7 - .../test/sql_stmt_tests/translate10.testcase | 7 - .../test/sql_stmt_tests/translate11.testcase | 7 - .../test/sql_stmt_tests/translate12.testcase | 7 - .../test/sql_stmt_tests/translate13.testcase | 7 - .../test/sql_stmt_tests/translate14.testcase | 7 - .../test/sql_stmt_tests/translate15.testcase | 7 - .../test/sql_stmt_tests/translate16.testcase | 7 - .../test/sql_stmt_tests/translate17.testcase | 7 - .../test/sql_stmt_tests/translate18.testcase | 7 - .../test/sql_stmt_tests/translate19.testcase | 7 - .../test/sql_stmt_tests/translate2.testcase | 7 - .../test/sql_stmt_tests/translate3.testcase | 7 - .../test/sql_stmt_tests/translate4.testcase | 7 - .../test/sql_stmt_tests/translate5.testcase | 10 - .../test/sql_stmt_tests/translate6.testcase | 7 - .../test/sql_stmt_tests/translate7.testcase | 7 - .../test/sql_stmt_tests/translate8.testcase | 7 - .../test/sql_stmt_tests/translate9.testcase | 7 - .../test/sql_stmt_tests/trivial.sqlite_RO | Bin 2048 -> 0 bytes .../sql_stmt_tests/uncompressgeom1.testcase | 7 - .../sql_stmt_tests/uncompressgeom2.testcase | 7 - .../sql_stmt_tests/uncompressgeom3.testcase | 7 - .../test/sql_stmt_tests/us_ch_m.testcase | 7 - .../test/sql_stmt_tests/us_ft_m.testcase | 7 - .../test/sql_stmt_tests/us_in_m.testcase | 7 - .../test/sql_stmt_tests/us_mi_m.testcase | 7 - .../test/sql_stmt_tests/us_yd_m.testcase | 7 - .../test/sql_stmt_tests/wkb1.testcase | 7 - .../test/sql_stmt_tests/wkb10.testcase | 7 - .../test/sql_stmt_tests/wkb11.testcase | 7 - .../test/sql_stmt_tests/wkb12.testcase | 7 - .../test/sql_stmt_tests/wkb13.testcase | 7 - .../test/sql_stmt_tests/wkb14.testcase | 7 - .../test/sql_stmt_tests/wkb15.testcase | 7 - .../test/sql_stmt_tests/wkb16.testcase | 7 - .../test/sql_stmt_tests/wkb17.testcase | 7 - .../test/sql_stmt_tests/wkb18.testcase | 7 - .../test/sql_stmt_tests/wkb19.testcase | 7 - .../test/sql_stmt_tests/wkb2.testcase | 7 - .../test/sql_stmt_tests/wkb20.testcase | 7 - .../test/sql_stmt_tests/wkb21.testcase | 7 - .../test/sql_stmt_tests/wkb22.testcase | 7 - .../test/sql_stmt_tests/wkb23.testcase | 7 - .../test/sql_stmt_tests/wkb24.testcase | 7 - .../test/sql_stmt_tests/wkb25.testcase | 7 - .../test/sql_stmt_tests/wkb26.testcase | 7 - .../test/sql_stmt_tests/wkb27.testcase | 7 - .../test/sql_stmt_tests/wkb28.testcase | 7 - .../test/sql_stmt_tests/wkb29.testcase | 7 - .../test/sql_stmt_tests/wkb3.testcase | 7 - .../test/sql_stmt_tests/wkb30.testcase | 7 - .../test/sql_stmt_tests/wkb31.testcase | 7 - .../test/sql_stmt_tests/wkb32.testcase | 7 - .../test/sql_stmt_tests/wkb33.testcase | 7 - .../test/sql_stmt_tests/wkb34.testcase | 7 - .../test/sql_stmt_tests/wkb35.testcase | 7 - .../test/sql_stmt_tests/wkb36.testcase | 7 - .../test/sql_stmt_tests/wkb4.testcase | 7 - .../test/sql_stmt_tests/wkb5.testcase | 7 - .../test/sql_stmt_tests/wkb6.testcase | 7 - .../test/sql_stmt_tests/wkb7.testcase | 7 - .../test/sql_stmt_tests/wkb8.testcase | 7 - .../test/sql_stmt_tests/wkb9.testcase | 7 - .../test/sql_stmt_tests/wkbtosql1.testcase | 7 - .../test/sql_stmt_tests/wkbtosql2.testcase | 7 - .../test/sql_stmt_tests/wkbtosql3.testcase | 7 - .../test/sql_stmt_tests/wkttosql1.testcase | 7 - .../test/sql_stmt_tests/wkttosql2.testcase | 7 - .../test/sql_stmt_tests/wkttosql3.testcase | 7 - .../test/sql_stmt_tests/yd_m.testcase | 7 - src/spatialite/test/test-legacy-2.3.1.sqlite | Bin 15360 -> 0 bytes src/spatialite/test/test-legacy-3.0.1.sqlite | Bin 32768 -> 0 bytes src/spatialite/test/test_under_valgrind.sh | 6 - src/spatialite/test/testcase1.csv | 17 - src/spatialite/test/testcase1.xls | Bin 16896 -> 0 bytes 2964 files changed, 383035 deletions(-) delete mode 100644 src/spatialite/AUTHORS delete mode 100644 src/spatialite/Android.mk delete mode 100644 src/spatialite/COPYING delete mode 100644 src/spatialite/Doxyfile.in delete mode 100644 src/spatialite/INSTALL delete mode 100644 src/spatialite/Makefile.am delete mode 100644 src/spatialite/Makefile.in delete mode 100644 src/spatialite/README delete mode 100644 src/spatialite/README.coverage delete mode 100644 src/spatialite/aclocal.m4 delete mode 100644 src/spatialite/config-msvc.h delete mode 100755 src/spatialite/config.guess delete mode 100644 src/spatialite/config.h.in delete mode 100755 src/spatialite/config.sub delete mode 100755 src/spatialite/configure delete mode 100644 src/spatialite/configure.ac delete mode 100755 src/spatialite/depcomp delete mode 100644 src/spatialite/examples/Makefile.am delete mode 100644 src/spatialite/examples/Makefile.in delete mode 100644 src/spatialite/examples/demo1.c delete mode 100644 src/spatialite/examples/demo2.c delete mode 100644 src/spatialite/examples/demo3.c delete mode 100644 src/spatialite/examples/demo4.c delete mode 100644 src/spatialite/examples/demo5.c delete mode 100644 src/spatialite/examples/examples.doxy delete mode 100755 src/spatialite/install-sh delete mode 100755 src/spatialite/ltmain.sh delete mode 100644 src/spatialite/m4/libtool.m4 delete mode 100644 src/spatialite/m4/ltoptions.m4 delete mode 100644 src/spatialite/m4/ltsugar.m4 delete mode 100644 src/spatialite/m4/ltversion.m4 delete mode 100644 src/spatialite/m4/lt~obsolete.m4 delete mode 100644 src/spatialite/mainpage.doxy delete mode 100644 src/spatialite/makefile.vc delete mode 100755 src/spatialite/missing delete mode 100644 src/spatialite/nmake.opt delete mode 100644 src/spatialite/spatialite-sql-latest.html delete mode 100644 src/spatialite/spatialite.pc.in delete mode 100644 src/spatialite/src/Makefile.am delete mode 100644 src/spatialite/src/Makefile.in delete mode 100644 src/spatialite/src/gaiaaux/Makefile.am delete mode 100644 src/spatialite/src/gaiaaux/Makefile.in delete mode 100644 src/spatialite/src/gaiaaux/gg_sqlaux.c delete mode 100644 src/spatialite/src/gaiaaux/gg_utf8.c delete mode 100644 src/spatialite/src/gaiaexif/Makefile.am delete mode 100644 src/spatialite/src/gaiaexif/Makefile.in delete mode 100644 src/spatialite/src/gaiaexif/gaia_exif.c delete mode 100644 src/spatialite/src/gaiageo/Ewkt.c delete mode 100644 src/spatialite/src/gaiageo/Ewkt.h delete mode 100644 src/spatialite/src/gaiageo/Gml.c delete mode 100644 src/spatialite/src/gaiageo/Gml.h delete mode 100644 src/spatialite/src/gaiageo/Kml.c delete mode 100644 src/spatialite/src/gaiageo/Kml.h delete mode 100644 src/spatialite/src/gaiageo/Makefile.am delete mode 100644 src/spatialite/src/gaiageo/Makefile.in delete mode 100644 src/spatialite/src/gaiageo/flex/Makefile.am delete mode 100644 src/spatialite/src/gaiageo/flex/Makefile.in delete mode 100644 src/spatialite/src/gaiageo/flex/ReadMe.txt delete mode 100644 src/spatialite/src/gaiageo/flex/ewktLexer.l delete mode 100644 src/spatialite/src/gaiageo/flex/geoJsonLexer.l delete mode 100644 src/spatialite/src/gaiageo/flex/gmlLexer.l delete mode 100644 src/spatialite/src/gaiageo/flex/kmlLexer.l delete mode 100644 src/spatialite/src/gaiageo/flex/vanuatuLexer.l delete mode 100644 src/spatialite/src/gaiageo/geoJSON.c delete mode 100644 src/spatialite/src/gaiageo/geoJSON.h delete mode 100644 src/spatialite/src/gaiageo/gg_advanced.c delete mode 100644 src/spatialite/src/gaiageo/gg_endian.c delete mode 100644 src/spatialite/src/gaiageo/gg_ewkt.c delete mode 100644 src/spatialite/src/gaiageo/gg_extras.c delete mode 100644 src/spatialite/src/gaiageo/gg_geoJSON.c delete mode 100644 src/spatialite/src/gaiageo/gg_geodesic.c delete mode 100644 src/spatialite/src/gaiageo/gg_geometries.c delete mode 100644 src/spatialite/src/gaiageo/gg_geoscvt.c delete mode 100644 src/spatialite/src/gaiageo/gg_gml.c delete mode 100644 src/spatialite/src/gaiageo/gg_kml.c delete mode 100644 src/spatialite/src/gaiageo/gg_lwgeom.c delete mode 100644 src/spatialite/src/gaiageo/gg_relations.c delete mode 100644 src/spatialite/src/gaiageo/gg_shape.c delete mode 100644 src/spatialite/src/gaiageo/gg_transform.c delete mode 100644 src/spatialite/src/gaiageo/gg_vanuatu.c delete mode 100644 src/spatialite/src/gaiageo/gg_voronoj.c delete mode 100644 src/spatialite/src/gaiageo/gg_wkb.c delete mode 100644 src/spatialite/src/gaiageo/gg_wkt.c delete mode 100644 src/spatialite/src/gaiageo/lemon/Ewkt.y delete mode 100644 src/spatialite/src/gaiageo/lemon/Gml.y delete mode 100644 src/spatialite/src/gaiageo/lemon/Kml.y delete mode 100644 src/spatialite/src/gaiageo/lemon/Makefile.am delete mode 100644 src/spatialite/src/gaiageo/lemon/Makefile.in delete mode 100644 src/spatialite/src/gaiageo/lemon/ReadMe.txt delete mode 100644 src/spatialite/src/gaiageo/lemon/geoJSON.y delete mode 100644 src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.am delete mode 100644 src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.in delete mode 100644 src/spatialite/src/gaiageo/lemon/lemon_src/lemon.c delete mode 100644 src/spatialite/src/gaiageo/lemon/lemon_src/lempar.c delete mode 100644 src/spatialite/src/gaiageo/lemon/vanuatuWkt.y delete mode 100644 src/spatialite/src/gaiageo/lex.Ewkt.c delete mode 100644 src/spatialite/src/gaiageo/lex.GeoJson.c delete mode 100644 src/spatialite/src/gaiageo/lex.Gml.c delete mode 100644 src/spatialite/src/gaiageo/lex.Kml.c delete mode 100644 src/spatialite/src/gaiageo/lex.VanuatuWkt.c delete mode 100644 src/spatialite/src/gaiageo/vanuatuWkt.c delete mode 100644 src/spatialite/src/gaiageo/vanuatuWkt.h delete mode 100644 src/spatialite/src/headers/Makefile.am delete mode 100644 src/spatialite/src/headers/Makefile.in delete mode 100644 src/spatialite/src/headers/spatialite.h delete mode 100644 src/spatialite/src/headers/spatialite/debug.h delete mode 100644 src/spatialite/src/headers/spatialite/gaiaaux.h delete mode 100644 src/spatialite/src/headers/spatialite/gaiaexif.h delete mode 100644 src/spatialite/src/headers/spatialite/gaiageo.h delete mode 100644 src/spatialite/src/headers/spatialite/gg_advanced.h delete mode 100644 src/spatialite/src/headers/spatialite/gg_const.h delete mode 100644 src/spatialite/src/headers/spatialite/gg_core.h delete mode 100644 src/spatialite/src/headers/spatialite/gg_dynamic.h delete mode 100644 src/spatialite/src/headers/spatialite/gg_formats.h delete mode 100644 src/spatialite/src/headers/spatialite/gg_mbr.h delete mode 100644 src/spatialite/src/headers/spatialite/gg_structs.h delete mode 100644 src/spatialite/src/headers/spatialite/spatialite.h delete mode 100644 src/spatialite/src/headers/spatialite/sqlite.h delete mode 100644 src/spatialite/src/headers/spatialite_private.h delete mode 100644 src/spatialite/src/shapefiles/Makefile.am delete mode 100644 src/spatialite/src/shapefiles/Makefile.in delete mode 100644 src/spatialite/src/shapefiles/shapefiles.c delete mode 100644 src/spatialite/src/spatialite/Makefile.am delete mode 100644 src/spatialite/src/spatialite/Makefile.in delete mode 100644 src/spatialite/src/spatialite/mbrcache.c delete mode 100644 src/spatialite/src/spatialite/metatables.c delete mode 100644 src/spatialite/src/spatialite/spatialite.c delete mode 100644 src/spatialite/src/spatialite/statistics.c delete mode 100644 src/spatialite/src/spatialite/virtualXL.c delete mode 100644 src/spatialite/src/spatialite/virtualdbf.c delete mode 100644 src/spatialite/src/spatialite/virtualfdo.c delete mode 100644 src/spatialite/src/spatialite/virtualnetwork.c delete mode 100644 src/spatialite/src/spatialite/virtualshape.c delete mode 100644 src/spatialite/src/spatialite/virtualspatialindex.c delete mode 100644 src/spatialite/src/srsinit/Makefile.am delete mode 100644 src/spatialite/src/srsinit/Makefile.in delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_00.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_01.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_02.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_03.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_04.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_05.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_06.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_07.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_08.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_09.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_10.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_11.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_12.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_13.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_14.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_15.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_16.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_17.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_18.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_19.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_20.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_21.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_22.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_23.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_24.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_25.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_26.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_27.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_28.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_29.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_30.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_31.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_32.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_33.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_34.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_35.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_36.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_37.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_38.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_39.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_40.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_extra.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_prussian.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_wgs84_00.c delete mode 100644 src/spatialite/src/srsinit/epsg_inlined_wgs84_01.c delete mode 100644 src/spatialite/src/srsinit/epsg_update/Makefile.am delete mode 100644 src/spatialite/src/srsinit/epsg_update/Makefile.in delete mode 100644 src/spatialite/src/srsinit/epsg_update/README.txt delete mode 100644 src/spatialite/src/srsinit/epsg_update/auto_epsg.c delete mode 100644 src/spatialite/src/srsinit/srs_init.c delete mode 100644 src/spatialite/src/versioninfo/version.c delete mode 100644 src/spatialite/src/virtualtext/Makefile.am delete mode 100644 src/spatialite/src/virtualtext/Makefile.in delete mode 100644 src/spatialite/src/virtualtext/virtualtext.c delete mode 100644 src/spatialite/test/Makefile.am delete mode 100644 src/spatialite/test/Makefile.in delete mode 100644 src/spatialite/test/WritingSQLTestCase.txt delete mode 100644 src/spatialite/test/asprintf4win.h delete mode 100644 src/spatialite/test/check_bufovflw.c delete mode 100644 src/spatialite/test/check_create.c delete mode 100644 src/spatialite/test/check_dbf_load.c delete mode 100644 src/spatialite/test/check_endian.c delete mode 100644 src/spatialite/test/check_exif.c delete mode 100644 src/spatialite/test/check_extension.c delete mode 100644 src/spatialite/test/check_extra_relations_fncts.c delete mode 100644 src/spatialite/test/check_fdo1.c delete mode 100644 src/spatialite/test/check_fdo2.c delete mode 100644 src/spatialite/test/check_fdo3.c delete mode 100644 src/spatialite/test/check_fdo_bufovflw.c delete mode 100644 src/spatialite/test/check_gaia_utf8.c delete mode 100644 src/spatialite/test/check_gaia_util.c delete mode 100644 src/spatialite/test/check_geom_aux.c delete mode 100644 src/spatialite/test/check_geometry_cols.c delete mode 100644 src/spatialite/test/check_geoscvt_fncts.c delete mode 100644 src/spatialite/test/check_init.c delete mode 100644 src/spatialite/test/check_init2.c delete mode 100644 src/spatialite/test/check_math_funcs.c delete mode 100644 src/spatialite/test/check_mbrcache.c delete mode 100644 src/spatialite/test/check_recover_geom.c delete mode 100644 src/spatialite/test/check_relations_fncts.c delete mode 100644 src/spatialite/test/check_shp_load.c delete mode 100644 src/spatialite/test/check_shp_load_3d.c delete mode 100644 src/spatialite/test/check_spatialindex.c delete mode 100644 src/spatialite/test/check_sql_stmt.c delete mode 100644 src/spatialite/test/check_version.c delete mode 100644 src/spatialite/test/check_virtual_ovflw.c delete mode 100644 src/spatialite/test/check_virtualtable1.c delete mode 100644 src/spatialite/test/check_virtualtable2.c delete mode 100644 src/spatialite/test/check_virtualtable3.c delete mode 100644 src/spatialite/test/check_virtualtable4.c delete mode 100644 src/spatialite/test/check_virtualtable5.c delete mode 100644 src/spatialite/test/check_virtualtable6.c delete mode 100644 src/spatialite/test/check_xls_load.c delete mode 100644 src/spatialite/test/fnmatch4win.h delete mode 100644 src/spatialite/test/fnmatch_impl4win.h delete mode 100644 src/spatialite/test/scandir4win.h delete mode 100644 src/spatialite/test/shape_3d.c delete mode 100644 src/spatialite/test/shape_cp1252.c delete mode 100644 src/spatialite/test/shape_primitives.c delete mode 100644 src/spatialite/test/shape_utf8_1.c delete mode 100644 src/spatialite/test/shape_utf8_1ex.c delete mode 100644 src/spatialite/test/shape_utf8_2.c delete mode 100644 src/spatialite/test/shapetest1.dbf delete mode 100644 src/spatialite/test/shapetest1.prj delete mode 100644 src/spatialite/test/shapetest1.qpj delete mode 100644 src/spatialite/test/shapetest1.shp delete mode 100644 src/spatialite/test/shapetest1.shx delete mode 100644 src/spatialite/test/shp/foggia/local_councils.dbf delete mode 100644 src/spatialite/test/shp/foggia/local_councils.prj delete mode 100644 src/spatialite/test/shp/foggia/local_councils.shp delete mode 100644 src/spatialite/test/shp/foggia/local_councils.shx delete mode 100644 src/spatialite/test/shp/gaza/aeroway.dbf delete mode 100644 src/spatialite/test/shp/gaza/aeroway.prj delete mode 100644 src/spatialite/test/shp/gaza/aeroway.shp delete mode 100644 src/spatialite/test/shp/gaza/aeroway.shx delete mode 100644 src/spatialite/test/shp/gaza/barrier.dbf delete mode 100644 src/spatialite/test/shp/gaza/barrier.prj delete mode 100644 src/spatialite/test/shp/gaza/barrier.shp delete mode 100644 src/spatialite/test/shp/gaza/barrier.shx delete mode 100644 src/spatialite/test/shp/gaza/route.dbf delete mode 100644 src/spatialite/test/shp/gaza/route.prj delete mode 100644 src/spatialite/test/shp/gaza/route.shp delete mode 100644 src/spatialite/test/shp/gaza/route.shx delete mode 100644 src/spatialite/test/shp/merano-3d/points.dbf delete mode 100644 src/spatialite/test/shp/merano-3d/points.prj delete mode 100644 src/spatialite/test/shp/merano-3d/points.shp delete mode 100644 src/spatialite/test/shp/merano-3d/points.shx delete mode 100644 src/spatialite/test/shp/merano-3d/polygons.dbf delete mode 100644 src/spatialite/test/shp/merano-3d/polygons.prj delete mode 100644 src/spatialite/test/shp/merano-3d/polygons.shp delete mode 100644 src/spatialite/test/shp/merano-3d/polygons.shx delete mode 100644 src/spatialite/test/shp/merano-3d/roads.dbf delete mode 100644 src/spatialite/test/shp/merano-3d/roads.prj delete mode 100644 src/spatialite/test/shp/merano-3d/roads.shp delete mode 100644 src/spatialite/test/shp/merano-3d/roads.shx delete mode 100644 src/spatialite/test/shp/new-caledonia/buildings.dbf delete mode 100644 src/spatialite/test/shp/new-caledonia/buildings.prj delete mode 100644 src/spatialite/test/shp/new-caledonia/buildings.shp delete mode 100644 src/spatialite/test/shp/new-caledonia/buildings.shx delete mode 100644 src/spatialite/test/shp/new-caledonia/points.dbf delete mode 100644 src/spatialite/test/shp/new-caledonia/points.prj delete mode 100644 src/spatialite/test/shp/new-caledonia/points.shp delete mode 100644 src/spatialite/test/shp/new-caledonia/points.shx delete mode 100644 src/spatialite/test/shp/new-caledonia/railways.dbf delete mode 100644 src/spatialite/test/shp/new-caledonia/railways.shp delete mode 100644 src/spatialite/test/shp/new-caledonia/railways.shx delete mode 100644 src/spatialite/test/shp/taiwan/hystoric.dbf delete mode 100644 src/spatialite/test/shp/taiwan/hystoric.prj delete mode 100644 src/spatialite/test/shp/taiwan/hystoric.shp delete mode 100644 src/spatialite/test/shp/taiwan/hystoric.shx delete mode 100644 src/spatialite/test/shp/taiwan/leisure.dbf delete mode 100644 src/spatialite/test/shp/taiwan/leisure.prj delete mode 100644 src/spatialite/test/shp/taiwan/leisure.shp delete mode 100644 src/spatialite/test/shp/taiwan/leisure.shx delete mode 100644 src/spatialite/test/shp/taiwan/route.dbf delete mode 100644 src/spatialite/test/shp/taiwan/route.prj delete mode 100644 src/spatialite/test/shp/taiwan/route.shp delete mode 100644 src/spatialite/test/shp/taiwan/route.shx delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb19.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb19.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buildarea1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buildarea2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buildarea3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buildarea4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buildarea5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/buildarea6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/issimple1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/issimple2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/issimple3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/issimple4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/issimple5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/issimple6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid19.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid20.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/pointonsurface1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/pointonsurface2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/pointonsurface3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/pointonsurface4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/pointonsurface5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/pointonsurface6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/pointonsurface7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/routing6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union19.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union20.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union21.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union22.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union23.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union24.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union25.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union26.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union27.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union28.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union29.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geos_tests/union9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint19.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint20.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint21.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint22.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/coveredby1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/coveredby2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/covers1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/covers2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid19.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid20.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid21.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid22.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid23.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes19.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring19.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring20.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring21.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring22.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring23.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring24.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring25.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring26.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths19.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths20.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths21.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths22.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths23.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths24.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths25.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths26.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths27.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths28.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths29.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths30.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths31.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths32.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/snap1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/snap10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/snap2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/snap3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/snap4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/snap5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/snap6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/snap7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/snap8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/snap9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid19.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid20.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid21.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid22.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid23.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid19.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid20.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid21.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid22.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid23.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull19.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay19.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay7.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/delaunay9.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj1.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj10.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj11.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj12.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj13.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj14.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj15.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj16.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj17.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj18.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj19.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj2.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj20.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj3.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj4.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj5.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj6.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj8.testcase delete mode 100644 src/spatialite/test/sql_stmt_geostrunk_tests/voronoj9.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance1.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance10.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance2.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance3.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance4.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance5.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance6.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance7.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance8.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance9.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance1.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance10.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance2.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance3.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance4.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance5.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance6.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance7.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance8.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance9.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance1.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance10.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance2.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance3.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance4.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance5.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance6.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance7.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance8.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance9.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d1.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d10.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d11.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d12.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d13.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d14.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d15.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d16.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d17.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d18.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d19.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d2.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d20.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d21.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d22.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d23.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d24.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d25.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d26.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d27.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d28.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d29.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d3.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d30.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d4.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d5.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d6.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d7.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d8.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d9.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth1.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth10.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth11.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth12.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth13.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth14.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth15.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth16.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth17.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth2.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth3.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth4.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth5.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth6.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth7.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth8.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth9.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash1.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash10.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash2.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash3.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash4.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash5.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash6.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash7.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash8.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash9.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid1.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid2.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid3.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid4.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid5.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid6.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid7.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid8.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded1.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded2.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded3.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded4.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded5.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded6.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded7.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded8.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize1.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize10.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize11.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize12.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize13.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize14.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize16.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize17.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize18.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize19.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize2.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize20.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize21.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize22.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize23.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize24.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize25.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize26.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize27.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize28.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize29.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize3.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize30.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize31.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize4.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize5.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize6.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize7.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize8.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize9.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid1.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid10.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid11.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid12.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid13.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid14.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid15.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid16.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid17.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid18.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid19.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid2.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid20.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid21.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid22.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid23.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid24.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid25.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid26.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid27.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid28.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid29.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid3.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid30.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid31.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid32.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid33.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid34.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid35.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid36.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid37.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid38.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid39.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid4.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid40.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid41.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid42.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid43.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid44.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid45.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid46.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid47.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid48.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid49.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid5.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid50.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid51.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid52.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid53.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid54.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid55.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid56.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid57.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid58.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid59.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid6.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid60.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid61.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid62.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid63.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid64.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid65.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid7.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid8.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid9.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split1.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split10.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split11.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split12.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split13.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split14.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split15.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split16.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split17.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split18.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split19.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split2.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split20.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split21.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split22.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split23.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split24.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split25.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split26.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split27.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split28.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split29.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split3.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split30.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split31.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split32.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split33.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split34.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split35.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split36.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split37.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split38.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split39.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split4.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split40.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split41.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split42.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split43.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split44.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split45.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split46.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split47.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split48.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split49.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split5.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split6.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split7.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split8.testcase delete mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split9.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/acos-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/acos.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/acos10.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/acos2.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/acos20.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/asin-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/asin1.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/asin10.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/asin2.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/asin20.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/atan-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/atan0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/atan00.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/ceil-int.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat2.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/ceilnull.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/cos-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/cos0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/cos00.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/cot-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/cot0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/cot00.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/cotpi2.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/degrees.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/degrees45.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/degreestext.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/exp0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/exp00.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/exp1.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/exp10.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/expneg.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/exptext.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/floor32.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/floorint.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/floornull.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log10-0.0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log10-100.0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log10-100.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log10-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log2-0.0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log2-0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log2-4.0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log2-4.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log2-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn00.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn1.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn10.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-01.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-02.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-2.2.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2int.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-text2.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-text3.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-text4.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pi.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg1.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg2.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow-edom.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow-fp.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow00-1.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow00-2.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow00.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow00double.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/rad-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/rad0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/radpi.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/round-29.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/round-31.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/round-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/round0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/round29.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/round3.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/round30.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/round31.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sign0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sign00.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sign01.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sign10.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/signeg.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/signeg2.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/signeg2int.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/signtext.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sin-pi.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sin-pi2.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sin-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sin0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sin00.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sinpi.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sinpi2.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sqrt-1.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sqrt-10.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sqrt-64.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sqrt-640.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sqrt-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sqrt0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sqrt00.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/stddev.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/tan-pi.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/tan-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/tan0.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/tan00.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/tanpi.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/tanpi4.testcase delete mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/variance.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml1.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml10.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml11.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml2.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml3.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml4.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml5.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml6.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml7.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml8.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml9.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/fromgml42.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output1.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output10.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output11.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output12.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output13.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output14.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output15.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output16.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output17.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output18.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output19.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output2.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output20.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output21.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output22.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output23.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output24.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output25.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output26.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output27.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output28.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output29.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output3.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output30.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output31.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output32.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output33.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output34.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output35.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output36.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output37.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output38.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output4.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output5.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output6.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output7.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output8.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/output9.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform1.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform10.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform11.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform12.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform13.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform14.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform15.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform16.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform17.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform18.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform19.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform2.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform20.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform21.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform3.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform4.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform5.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform6.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform7.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform8.testcase delete mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform9.testcase delete mode 100644 src/spatialite/test/sql_stmt_security_tests/blobfromfile1.testcase delete mode 100644 src/spatialite/test/sql_stmt_security_tests/blobfromfile2.testcase delete mode 100644 src/spatialite/test/sql_stmt_security_tests/blobfromfile3.testcase delete mode 100644 src/spatialite/test/sql_stmt_security_tests/blobfromfile4.testcase delete mode 100644 src/spatialite/test/sql_stmt_security_tests/isXblob1.testcase delete mode 100644 src/spatialite/test/sql_stmt_security_tests/isXblob2.testcase delete mode 100644 src/spatialite/test/sql_stmt_security_tests/isXblob3.testcase delete mode 100644 src/spatialite/test/sql_stmt_security_tests/isXblob4.testcase delete mode 100644 src/spatialite/test/sql_stmt_security_tests/isXblob8.testcase delete mode 100644 src/spatialite/test/sql_stmt_security_tests/isXblob9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/DSCN0042.JPG delete mode 100644 src/spatialite/test/sql_stmt_tests/DSC_1467.JPG delete mode 100644 src/spatialite/test/sql_stmt_tests/La_folla_durante_il_Palio.jpg delete mode 100644 src/spatialite/test/sql_stmt_tests/NumPoints.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/NumPoints2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/NumPoints3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/NumPoints4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/NumPoints5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/NumPoints6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/NumPoints7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/SridFromAuthCRS.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/SridFromAuthCRS2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/SridFromAuthCRS3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/SridFromAuthCRS4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/SridFromAuthCRS5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/SridFromAuthCRS6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asbinary9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asewkb9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asfgf1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asfgf2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asfgf3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asfgf4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asfgf5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asfgf6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asfgf7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asfgf8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asfgf9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgeojson1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgeojson2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgeojson3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgeojson4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgeojson5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgeojson6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgeojson7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgml1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgml10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgml11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgml2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgml3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgml4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgml5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgml6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgml7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgml8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/asgml9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/assvg9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/aswkt-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badGML1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badGML2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badGML3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badGML4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badGML5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badGML6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badGML7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badGeoJSON1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badGeoJSON2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badGeoJSON3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badGeoJSON4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badGeoJSON5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badGeoJSON6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badGeoJSON7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badKML1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badKML2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badKML3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badKML4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badKML5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badKML6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badKML7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badwkt1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badwkt2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badwkt3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badwkt4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badwkt5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badwkt6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badwkt7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badwkt8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/badwkt9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttogeometrycollection.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttogeometrycollection2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttogeometrycollection3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttogeometrycollection4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttogeometrycollection5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttogeometrycollection6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultilinestring1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultilinestring2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultilinestring3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultilinestring4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultilinestring5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultilinestring6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultilinestring7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipolygon1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipolygon2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipolygon3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipolygon4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipolygon5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxy1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxy2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxy3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxym1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxym2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxym3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxym4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxym5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxym6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyz1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyz2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyz3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyz4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyz5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyz6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyzm1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyzm2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyzm3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyzm4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyzm5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyzm6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ch_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/checkspatialmetadata1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/checkspatialmetadata2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/checkspatialmetadata3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/checkspatialmetadata4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/checkspatialmetadata5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/cm_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect27.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect28.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect29.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect30.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect31.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect32.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect33.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect34.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect35.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect36.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect37.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect38.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect39.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect40.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect41.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect42.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect43.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect44.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect45.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect46.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect47.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect48.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect49.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect50.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect51.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect52.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect53.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect54.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect55.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect56.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect57.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect58.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect59.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collect9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/collectextract9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry27.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry28.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry29.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry30.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry31.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry32.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry33.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry34.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry35.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry36.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry37.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry38.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry39.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry40.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry41.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry42.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry43.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry44.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry45.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry46.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry47.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry48.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry49.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry50.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry51.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry52.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry53.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry54.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry55.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry56.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry57.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry58.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry59.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry60.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry61.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry62.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry63.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry64.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry65.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry66.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry67.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry68.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry69.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dimension1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dimension2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dimension3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dimension4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dimension5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dimension6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dimension7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dimension8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve27.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve28.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve29.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve30.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dissolve9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/dm_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/emptyfile.txt delete mode 100644 src/spatialite/test/sql_stmt_tests/endpoint1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envelope1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envelope2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envelope3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envelope4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envelope5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envelope6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envelope7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envintersects1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envintersects10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envintersects2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envintersects3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envintersects4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envintersects5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envintersects6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envintersects7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envintersects8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/envintersects9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ewkb1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ewkb10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ewkb11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ewkb12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ewkb2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ewkb3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ewkb4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ewkb5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ewkb6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ewkb7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ewkb8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ewkb9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/expand1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/expand2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/expand3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/expand4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/expand5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/expand6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/expand7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/extent1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/extractmultilinestring1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/extractmultilinestring2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/extractmultilinestring3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/extractmultipoint1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/extractmultipoint2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/extractmultipoint3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/extractmultipolygon1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/extractmultipolygon2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/extractmultipolygon3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fath_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fdo-wkb.sqlite_RO delete mode 100644 src/spatialite/test/sql_stmt_tests/fdo_ogr1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fdo_ogr2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt27.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt28.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt29.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt30.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt31.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt32.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt33.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt34.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt35.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt36.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt37.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt38.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt39.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson27.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson28.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson29.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson30.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson31.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson32.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml27.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml28.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml29.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml30.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml31.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml32.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml33.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml34.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml35.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml36.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml37.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml38.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml39.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml40.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml41.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml43.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/fromgml9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ft_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr27.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr28.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr29.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr30.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr31.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr32.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr33.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr34.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr35.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr36.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geojson1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geojson2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geojson3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geojson4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geojson5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geojson6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomcollfromtext1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomcollfromtext2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints27.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints28.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geometryn9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromewkb1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromewkb2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext27.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext28.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext29.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext30.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext31.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext32.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext33.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext34.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext35.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext36.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext37.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext38.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext39.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext40.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext41.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext42.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext43.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext44.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext45.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype27.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype28.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype29.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype30.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype31.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype32.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype33.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype34.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype35.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype36.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype37.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype38.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype39.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype40.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype41.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype42.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype43.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype44.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype45.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype46.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype47.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype48.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype49.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype50.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype51.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype52.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype53.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype54.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype55.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype56.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype57.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype58.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype59.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype60.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype61.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype62.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype63.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype64.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype65.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype66.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype67.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype68.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype69.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/geomtype9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/gml9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-badblob.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-poly.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-poly2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-poly3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-poly4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-poly5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-poly6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-poly7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/in_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ind_ch_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ind_ft_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ind_yd_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/is3d1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/is3d2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/is3d3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/is3d4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/is3d5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/is3d6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/isXblob5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/isXblob6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/isXblob7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/isempty.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/isempty2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/isempty3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/isempty4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ismeasured1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ismeasured2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ismeasured3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ismeasured4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ismeasured5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ismeasured6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/k3b-icon.png delete mode 100644 src/spatialite/test/sql_stmt_tests/km_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ktorrent_grad1.jpg delete mode 100644 src/spatialite/test/sql_stmt_tests/ktorrent_sidebar.gif delete mode 100644 src/spatialite/test/sql_stmt_tests/lhr1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/lhr2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/lhr3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/lhr4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/lhr5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/lhr6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/linefromtext1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/linefromtext2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/linesfromrings1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/linesfromrings2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/linesfromrings3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/linesfromrings4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/linesfromrings5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/linesfromrings6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/linesfromrings7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/link_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_ch.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_cm.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_dm.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_fath.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_ft-text.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_ft.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_in.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_in_us.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_ind_ch.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_ind_ft.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_ind_yd.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_km.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_ln.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_mi.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_mm.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_nm.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_us_ch.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_us_ft.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_usmi.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_yd.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/m_yd_us.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makeline9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint-null1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint-null2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint-null3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint-null4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint-null5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint-null6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint-null7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepoint9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/maxm1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/maxm2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/maxm3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/maxm4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/maxm5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/maxm6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/maxm7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/maxz1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/maxz2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/maxz3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/maxz4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/maxz5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/maxz6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/maxz7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr27.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr28.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr29.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr30.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr31.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr32.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbr9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mi_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/minm1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/minm2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/minm3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/minm4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/minm5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/minm6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/minz1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/minz2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/minz3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/minz4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/minz5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/minz6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mlinefromtext1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mlinefromtext2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mm_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mpointfromtext1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mpointfromtext2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mpolygonfromtext1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/mpolygonfromtext2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ndims1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ndims2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ndims3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ndims4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ndims5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ndims6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/nm_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat27.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/npoints1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/npoints2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/npoints3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/npoints4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/npoints5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/npoints6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/nrings1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/nrings2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/nrings3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/nrings4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/nrings5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/nrings6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/numgeometries1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/numgeometries2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/numgeometries3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/numgeometries4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/numgeometries5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/numgeometries6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointfromtext1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointfromtext2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointn1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointn10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointn11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointn12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointn13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointn14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointn15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointn2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointn3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointn4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointn5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointn6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointn7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointn8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/pointn9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/polygonfromtext1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/polygonfromtext2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reverse1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reverse2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reverse3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reverse4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reverse5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/reverse6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring27.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring28.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/ring9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/routing1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/routing2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/routing3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/routing4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/routing5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sandro.jpg delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/spatialindex.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/srid1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/srid10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/srid11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/srid2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/srid3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/srid4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/srid5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/srid6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/srid7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/srid8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/srid9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_m1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_m2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_m3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_m4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_m5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_m6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_m8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_x1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_x2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_x3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_x4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_x5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_x6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_x7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_x8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_x9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_y1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_y2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_y3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_y4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_y5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_y7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_y8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_y9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_z1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_z2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_z3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_z4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_z5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_z6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_z7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_z8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/st_z9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/startpoint1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/startpoint2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/startpoint3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/testFDO.sqlite delete mode 100644 src/spatialite/test/sql_stmt_tests/testFGF.sqlite delete mode 100644 src/spatialite/test/sql_stmt_tests/testdb1.sqlite delete mode 100644 src/spatialite/test/sql_stmt_tests/togars1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/togars10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/togars11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/togars12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/togars2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/togars3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/togars4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/togars5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/togars6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/togars7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/togars8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/togars9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/translate9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/trivial.sqlite_RO delete mode 100644 src/spatialite/test/sql_stmt_tests/uncompressgeom1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/uncompressgeom2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/uncompressgeom3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/us_ch_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/us_ft_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/us_in_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/us_mi_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/us_yd_m.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb10.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb11.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb12.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb13.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb14.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb15.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb16.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb17.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb18.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb19.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb20.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb21.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb22.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb23.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb24.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb25.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb26.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb27.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb28.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb29.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb30.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb31.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb32.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb33.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb34.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb35.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb36.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb4.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb5.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb6.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb7.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb8.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkb9.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkbtosql1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkbtosql2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkbtosql3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkttosql1.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkttosql2.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/wkttosql3.testcase delete mode 100644 src/spatialite/test/sql_stmt_tests/yd_m.testcase delete mode 100644 src/spatialite/test/test-legacy-2.3.1.sqlite delete mode 100644 src/spatialite/test/test-legacy-3.0.1.sqlite delete mode 100755 src/spatialite/test/test_under_valgrind.sh delete mode 100644 src/spatialite/test/testcase1.csv delete mode 100644 src/spatialite/test/testcase1.xls diff --git a/src/spatialite/AUTHORS b/src/spatialite/AUTHORS deleted file mode 100644 index 475c203..0000000 --- a/src/spatialite/AUTHORS +++ /dev/null @@ -1,13 +0,0 @@ -Original Author: -Alessandro Furieri - -Contributors: -Klaus Foerster -Luigi Costalli -Ahmadou Dicko -Brad Hards -Pepijn Van Eeckhoudt - -The Vanuatu Team - University of Toronto - Supervisor: -Greg Wilson -[you can find the complete team composition in gg_wkt.c] diff --git a/src/spatialite/Android.mk b/src/spatialite/Android.mk deleted file mode 100644 index 063c051..0000000 --- a/src/spatialite/Android.mk +++ /dev/null @@ -1,49 +0,0 @@ -LOCAL_PATH:= $(call my-dir)/.. - -include ${CLEAR_VARS} - -LOCAL_SRC_FILES := \ - src/gaiaaux/gg_sqlaux.c \ - src/gaiaexif/gaia_exif.c \ - src/gaiageo/gg_advanced.c \ - src/gaiageo/gg_endian.c \ - src/gaiageo/gg_ewkt.c \ - src/gaiageo/gg_geodesic.c \ - src/gaiageo/gg_geoJSON.c \ - src/gaiageo/gg_geometries.c \ - src/gaiageo/gg_geoscvt.c \ - src/gaiageo/gg_gml.c \ - src/gaiageo/gg_kml.c \ - src/gaiageo/gg_relations.c \ - src/gaiageo/gg_transform.c \ - src/gaiageo/gg_vanuatu.c \ - src/gaiageo/gg_wkb.c \ - src/gaiageo/gg_wkt.c \ - src/spatialite/mbrcache.c \ - src/spatialite/spatialite.c \ - src/spatialite/virtualfdo.c \ - src/spatialite/virtualnetwork.c \ - src/spatialite/virtualspatialindex.c \ - src/srsinit/srs_init.c \ - src/versioninfo/version.c - -LOCAL_C_INCLUDES := \ - $(LOCAL_PATH)/jni/src/headers \ - $(LOCAL_PATH)/src/headers \ - $(LOCAL_PATH)/../SQLite - -LOCAL_MODULE := spatialite - -LOCAL_LDLIBS := -ldl -llog - -LOCAL_CFLAGS := \ - -fvisibility=hidden \ - -DOMIT_GEOCALLBACKS \ - -DOMIT_GEOS \ - -DOMIT_PROJ \ - -DOMIT_EPSG \ - -DOMIT_ICONV \ - -DVERSION="\"3.0.2\"" - -include $(BUILD_SHARED_LIBRARY) - diff --git a/src/spatialite/COPYING b/src/spatialite/COPYING deleted file mode 100644 index d9e23c0..0000000 --- a/src/spatialite/COPYING +++ /dev/null @@ -1,478 +0,0 @@ - MOZILLA PUBLIC LICENSE - Version 1.1 - - --------------- - -1. Definitions. - - 1.0.1. "Commercial Use" means distribution or otherwise making the - Covered Code available to a third party. - - 1.1. "Contributor" means each entity that creates or contributes to - the creation of Modifications. - - 1.2. "Contributor Version" means the combination of the Original - Code, prior Modifications used by a Contributor, and the Modifications - made by that particular Contributor. - - 1.3. "Covered Code" means the Original Code or Modifications or the - combination of the Original Code and Modifications, in each case - including portions thereof. - - 1.4. "Electronic Distribution Mechanism" means a mechanism generally - accepted in the software development community for the electronic - transfer of data. - - 1.5. "Executable" means Covered Code in any form other than Source - Code. - - 1.6. "Initial Developer" means the individual or entity identified - as the Initial Developer in the Source Code notice required by Exhibit - A. - - 1.7. "Larger Work" means a work which combines Covered Code or - portions thereof with code not governed by the terms of this License. - - 1.8. "License" means this document. - - 1.8.1. "Licensable" means having the right to grant, to the maximum - extent possible, whether at the time of the initial grant or - subsequently acquired, any and all of the rights conveyed herein. - - 1.9. "Modifications" means any addition to or deletion from the - substance or structure of either the Original Code or any previous - Modifications. When Covered Code is released as a series of files, a - Modification is: - A. Any addition to or deletion from the contents of a file - containing Original Code or previous Modifications. - - B. Any new file that contains any part of the Original Code or - previous Modifications. - - 1.10. "Original Code" means Source Code of computer software code - which is described in the Source Code notice required by Exhibit A as - Original Code, and which, at the time of its release under this - License is not already Covered Code governed by this License. - - 1.10.1. "Patent Claims" means any patent claim(s), now owned or - hereafter acquired, including without limitation, method, process, - and apparatus claims, in any patent Licensable by grantor. - - 1.11. "Source Code" means the preferred form of the Covered Code for - making modifications to it, including all modules it contains, plus - any associated interface definition files, scripts used to control - compilation and installation of an Executable, or source code - differential comparisons against either the Original Code or another - well known, available Covered Code of the Contributor's choice. The - Source Code can be in a compressed or archival form, provided the - appropriate decompression or de-archiving software is widely available - for no charge. - - 1.12. "You" (or "Your") means an individual or a legal entity - exercising rights under, and complying with all of the terms of, this - License or a future version of this License issued under Section 6.1. - For legal entities, "You" includes any entity which controls, is - controlled by, or is under common control with You. For purposes of - this definition, "control" means (a) the power, direct or indirect, - to cause the direction or management of such entity, whether by - contract or otherwise, or (b) ownership of more than fifty percent - (50%) of the outstanding shares or beneficial ownership of such - entity. - -2. Source Code License. - - 2.1. The Initial Developer Grant. - The Initial Developer hereby grants You a world-wide, royalty-free, - non-exclusive license, subject to third party intellectual property - claims: - (a) under intellectual property rights (other than patent or - trademark) Licensable by Initial Developer to use, reproduce, - modify, display, perform, sublicense and distribute the Original - Code (or portions thereof) with or without Modifications, and/or - as part of a Larger Work; and - - (b) under Patents Claims infringed by the making, using or - selling of Original Code, to make, have made, use, practice, - sell, and offer for sale, and/or otherwise dispose of the - Original Code (or portions thereof). - - (c) the licenses granted in this Section 2.1(a) and (b) are - effective on the date Initial Developer first distributes - Original Code under the terms of this License. - - (d) Notwithstanding Section 2.1(b) above, no patent license is - granted: 1) for code that You delete from the Original Code; 2) - separate from the Original Code; or 3) for infringements caused - by: i) the modification of the Original Code or ii) the - combination of the Original Code with other software or devices. - - 2.2. Contributor Grant. - Subject to third party intellectual property claims, each Contributor - hereby grants You a world-wide, royalty-free, non-exclusive license - - (a) under intellectual property rights (other than patent or - trademark) Licensable by Contributor, to use, reproduce, modify, - display, perform, sublicense and distribute the Modifications - created by such Contributor (or portions thereof) either on an - unmodified basis, with other Modifications, as Covered Code - and/or as part of a Larger Work; and - - (b) under Patent Claims infringed by the making, using, or - selling of Modifications made by that Contributor either alone - and/or in combination with its Contributor Version (or portions - of such combination), to make, use, sell, offer for sale, have - made, and/or otherwise dispose of: 1) Modifications made by that - Contributor (or portions thereof); and 2) the combination of - Modifications made by that Contributor with its Contributor - Version (or portions of such combination). - - (c) the licenses granted in Sections 2.2(a) and 2.2(b) are - effective on the date Contributor first makes Commercial Use of - the Covered Code. - - (d) Notwithstanding Section 2.2(b) above, no patent license is - granted: 1) for any code that Contributor has deleted from the - Contributor Version; 2) separate from the Contributor Version; - 3) for infringements caused by: i) third party modifications of - Contributor Version or ii) the combination of Modifications made - by that Contributor with other software (except as part of the - Contributor Version) or other devices; or 4) under Patent Claims - infringed by Covered Code in the absence of Modifications made by - that Contributor. - -3. Distribution Obligations. - - 3.1. Application of License. - The Modifications which You create or to which You contribute are - governed by the terms of this License, including without limitation - Section 2.2. The Source Code version of Covered Code may be - distributed only under the terms of this License or a future version - of this License released under Section 6.1, and You must include a - copy of this License with every copy of the Source Code You - distribute. You may not offer or impose any terms on any Source Code - version that alters or restricts the applicable version of this - License or the recipients' rights hereunder. However, You may include - an additional document offering the additional rights described in - Section 3.5. - - 3.2. Availability of Source Code. - Any Modification which You create or to which You contribute must be - made available in Source Code form under the terms of this License - either on the same media as an Executable version or via an accepted - Electronic Distribution Mechanism to anyone to whom you made an - Executable version available; and if made available via Electronic - Distribution Mechanism, must remain available for at least twelve (12) - months after the date it initially became available, or at least six - (6) months after a subsequent version of that particular Modification - has been made available to such recipients. You are responsible for - ensuring that the Source Code version remains available even if the - Electronic Distribution Mechanism is maintained by a third party. - - 3.3. Description of Modifications. - You must cause all Covered Code to which You contribute to contain a - file documenting the changes You made to create that Covered Code and - the date of any change. You must include a prominent statement that - the Modification is derived, directly or indirectly, from Original - Code provided by the Initial Developer and including the name of the - Initial Developer in (a) the Source Code, and (b) in any notice in an - Executable version or related documentation in which You describe the - origin or ownership of the Covered Code. - - 3.4. Intellectual Property Matters - (a) Third Party Claims. - If Contributor has knowledge that a license under a third party's - intellectual property rights is required to exercise the rights - granted by such Contributor under Sections 2.1 or 2.2, - Contributor must include a text file with the Source Code - distribution titled "LEGAL" which describes the claim and the - party making the claim in sufficient detail that a recipient will - know whom to contact. If Contributor obtains such knowledge after - the Modification is made available as described in Section 3.2, - Contributor shall promptly modify the LEGAL file in all copies - Contributor makes available thereafter and shall take other steps - (such as notifying appropriate mailing lists or newsgroups) - reasonably calculated to inform those who received the Covered - Code that new knowledge has been obtained. - - (b) Contributor APIs. - If Contributor's Modifications include an application programming - interface and Contributor has knowledge of patent licenses which - are reasonably necessary to implement that API, Contributor must - also include this information in the LEGAL file. - - (c) Representations. - Contributor represents that, except as disclosed pursuant to - Section 3.4(a) above, Contributor believes that Contributor's - Modifications are Contributor's original creation(s) and/or - Contributor has sufficient rights to grant the rights conveyed by - this License. - - 3.5. Required Notices. - You must duplicate the notice in Exhibit A in each file of the Source - Code. If it is not possible to put such notice in a particular Source - Code file due to its structure, then You must include such notice in a - location (such as a relevant directory) where a user would be likely - to look for such a notice. If You created one or more Modification(s) - You may add your name as a Contributor to the notice described in - Exhibit A. You must also duplicate this License in any documentation - for the Source Code where You describe recipients' rights or ownership - rights relating to Covered Code. You may choose to offer, and to - charge a fee for, warranty, support, indemnity or liability - obligations to one or more recipients of Covered Code. However, You - may do so only on Your own behalf, and not on behalf of the Initial - Developer or any Contributor. You must make it absolutely clear than - any such warranty, support, indemnity or liability obligation is - offered by You alone, and You hereby agree to indemnify the Initial - Developer and every Contributor for any liability incurred by the - Initial Developer or such Contributor as a result of warranty, - support, indemnity or liability terms You offer. - - 3.6. Distribution of Executable Versions. - You may distribute Covered Code in Executable form only if the - requirements of Section 3.1-3.5 have been met for that Covered Code, - and if You include a notice stating that the Source Code version of - the Covered Code is available under the terms of this License, - including a description of how and where You have fulfilled the - obligations of Section 3.2. The notice must be conspicuously included - in any notice in an Executable version, related documentation or - collateral in which You describe recipients' rights relating to the - Covered Code. You may distribute the Executable version of Covered - Code or ownership rights under a license of Your choice, which may - contain terms different from this License, provided that You are in - compliance with the terms of this License and that the license for the - Executable version does not attempt to limit or alter the recipient's - rights in the Source Code version from the rights set forth in this - License. If You distribute the Executable version under a different - license You must make it absolutely clear that any terms which differ - from this License are offered by You alone, not by the Initial - Developer or any Contributor. You hereby agree to indemnify the - Initial Developer and every Contributor for any liability incurred by - the Initial Developer or such Contributor as a result of any such - terms You offer. - - 3.7. Larger Works. - You may create a Larger Work by combining Covered Code with other code - not governed by the terms of this License and distribute the Larger - Work as a single product. In such a case, You must make sure the - requirements of this License are fulfilled for the Covered Code. - -4. Inability to Comply Due to Statute or Regulation. - - If it is impossible for You to comply with any of the terms of this - License with respect to some or all of the Covered Code due to - statute, judicial order, or regulation then You must: (a) comply with - the terms of this License to the maximum extent possible; and (b) - describe the limitations and the code they affect. Such description - must be included in the LEGAL file described in Section 3.4 and must - be included with all distributions of the Source Code. Except to the - extent prohibited by statute or regulation, such description must be - sufficiently detailed for a recipient of ordinary skill to be able to - understand it. - -5. Application of this License. - - This License applies to code to which the Initial Developer has - attached the notice in Exhibit A and to related Covered Code. - -6. Versions of the License. - - 6.1. New Versions. - Netscape Communications Corporation ("Netscape") may publish revised - and/or new versions of the License from time to time. Each version - will be given a distinguishing version number. - - 6.2. Effect of New Versions. - Once Covered Code has been published under a particular version of the - License, You may always continue to use it under the terms of that - version. You may also choose to use such Covered Code under the terms - of any subsequent version of the License published by Netscape. No one - other than Netscape has the right to modify the terms applicable to - Covered Code created under this License. - - 6.3. Derivative Works. - If You create or use a modified version of this License (which you may - only do in order to apply it to code which is not already Covered Code - governed by this License), You must (a) rename Your license so that - the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", - "MPL", "NPL" or any confusingly similar phrase do not appear in your - license (except to note that your license differs from this License) - and (b) otherwise make it clear that Your version of the license - contains terms which differ from the Mozilla Public License and - Netscape Public License. (Filling in the name of the Initial - Developer, Original Code or Contributor in the notice described in - Exhibit A shall not of themselves be deemed to be modifications of - this License.) - -7. DISCLAIMER OF WARRANTY. - - COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, - WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, - WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF - DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. - THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE - IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, - YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE - COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER - OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF - ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. - -8. TERMINATION. - - 8.1. This License and the rights granted hereunder will terminate - automatically if You fail to comply with terms herein and fail to cure - such breach within 30 days of becoming aware of the breach. All - sublicenses to the Covered Code which are properly granted shall - survive any termination of this License. Provisions which, by their - nature, must remain in effect beyond the termination of this License - shall survive. - - 8.2. If You initiate litigation by asserting a patent infringement - claim (excluding declatory judgment actions) against Initial Developer - or a Contributor (the Initial Developer or Contributor against whom - You file such action is referred to as "Participant") alleging that: - - (a) such Participant's Contributor Version directly or indirectly - infringes any patent, then any and all rights granted by such - Participant to You under Sections 2.1 and/or 2.2 of this License - shall, upon 60 days notice from Participant terminate prospectively, - unless if within 60 days after receipt of notice You either: (i) - agree in writing to pay Participant a mutually agreeable reasonable - royalty for Your past and future use of Modifications made by such - Participant, or (ii) withdraw Your litigation claim with respect to - the Contributor Version against such Participant. If within 60 days - of notice, a reasonable royalty and payment arrangement are not - mutually agreed upon in writing by the parties or the litigation claim - is not withdrawn, the rights granted by Participant to You under - Sections 2.1 and/or 2.2 automatically terminate at the expiration of - the 60 day notice period specified above. - - (b) any software, hardware, or device, other than such Participant's - Contributor Version, directly or indirectly infringes any patent, then - any rights granted to You by such Participant under Sections 2.1(b) - and 2.2(b) are revoked effective as of the date You first made, used, - sold, distributed, or had made, Modifications made by that - Participant. - - 8.3. If You assert a patent infringement claim against Participant - alleging that such Participant's Contributor Version directly or - indirectly infringes any patent where such claim is resolved (such as - by license or settlement) prior to the initiation of patent - infringement litigation, then the reasonable value of the licenses - granted by such Participant under Sections 2.1 or 2.2 shall be taken - into account in determining the amount or value of any payment or - license. - - 8.4. In the event of termination under Sections 8.1 or 8.2 above, - all end user license agreements (excluding distributors and resellers) - which have been validly granted by You or any distributor hereunder - prior to termination shall survive termination. - -9. LIMITATION OF LIABILITY. - - UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT - (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL - DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, - OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR - ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY - CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, - WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER - COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN - INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF - LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY - RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW - PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE - EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO - THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. - -10. U.S. GOVERNMENT END USERS. - - The Covered Code is a "commercial item," as that term is defined in - 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer - software" and "commercial computer software documentation," as such - terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 - C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), - all U.S. Government End Users acquire Covered Code with only those - rights set forth herein. - -11. MISCELLANEOUS. - - This License represents the complete agreement concerning subject - matter hereof. If any provision of this License is held to be - unenforceable, such provision shall be reformed only to the extent - necessary to make it enforceable. This License shall be governed by - California law provisions (except to the extent applicable law, if - any, provides otherwise), excluding its conflict-of-law provisions. - With respect to disputes in which at least one party is a citizen of, - or an entity chartered or registered to do business in the United - States of America, any litigation relating to this License shall be - subject to the jurisdiction of the Federal Courts of the Northern - District of California, with venue lying in Santa Clara County, - California, with the losing party responsible for costs, including - without limitation, court costs and reasonable attorneys' fees and - expenses. The application of the United Nations Convention on - Contracts for the International Sale of Goods is expressly excluded. - Any law or regulation which provides that the language of a contract - shall be construed against the drafter shall not apply to this - License. - -12. RESPONSIBILITY FOR CLAIMS. - - As between Initial Developer and the Contributors, each party is - responsible for claims and damages arising, directly or indirectly, - out of its utilization of rights under this License and You agree to - work with Initial Developer and Contributors to distribute such - responsibility on an equitable basis. Nothing herein is intended or - shall be deemed to constitute any admission of liability. - -13. MULTIPLE-LICENSED CODE. - - Initial Developer may designate portions of the Covered Code as - "Multiple-Licensed". "Multiple-Licensed" means that the Initial - Developer permits you to utilize portions of the Covered Code under - Your choice of the NPL or the alternative licenses, if any, specified - by the Initial Developer in the file described in Exhibit A. - -EXHIBIT A -Mozilla Public License. - - ``The contents of this file are subject to the Mozilla Public License - Version 1.1 (the "License"); you may not use this file except in - compliance with the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - - Software distributed under the License is distributed on an "AS IS" - basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the - License for the specific language governing rights and limitations - under the License. - - The Original Code is the SpatiaLite library. - - The Initial Developer of the Original Code is Alessandro Furieri. - Portions created by the Initial Developer are Copyright (C) 2008 - the Initial Developer. All Rights Reserved. - - Contributor(s): - Klaus Foerster [AsSvg()] - Luigi Costalli [Dijkstra's shortest path algorithm] - - The Vanuatu Team - University of Toronto [WKT parser] - Supervisor: Greg Wilson - [you can find the complete team composition in gg_wkt.c] - - - Alternatively, the contents of this file may be used under the terms of - either the GNU General Public License Version 2 or later (the "GPL"), or - the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), - in which case the provisions of the GPL or the LGPL are applicable instead - of those above. If you wish to allow use of your version of this file only - under the terms of either the GPL or the LGPL, and not to allow others to - use your version of this file under the terms of the MPL, indicate your - decision by deleting the provisions above and replace them with the notice - and other provisions required by the GPL or the LGPL. If you do not delete - the provisions above, a recipient may use your version of this file under - the terms of any one of the MPL, the GPL or the LGPL. - - [NOTE: The text of this Exhibit A may differ slightly from the text of - the notices in the Source Code files of the Original Code. You should - use the text of this Exhibit A rather than the text found in the - Original Code Source Code for Your Modifications.] - diff --git a/src/spatialite/Doxyfile.in b/src/spatialite/Doxyfile.in deleted file mode 100644 index 4e9fc64..0000000 --- a/src/spatialite/Doxyfile.in +++ /dev/null @@ -1,1691 +0,0 @@ -# Doxyfile 1.7.3 - -# This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. -# -# All text after a hash (#) is considered a comment and will be ignored. -# The format is: -# TAG = value [value, ...] -# For lists items can also be appended using: -# TAG += value [value, ...] -# Values that contain spaces should be placed between quotes (" "). - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- - -# This tag specifies the encoding used for all characters in the config file -# that follow. The default is UTF-8 which is also the encoding used for all -# text before the first occurrence of this tag. Doxygen uses libiconv (or the -# iconv built into libc) for the transcoding. See -# http://www.gnu.org/software/libiconv for the list of possible encodings. - -DOXYFILE_ENCODING = UTF-8 - -# The PROJECT_NAME tag is a single word (or a sequence of words surrounded -# by quotes) that should identify the project. - -PROJECT_NAME = SpatiaLite - -# The PROJECT_NUMBER tag can be used to enter a project or revision number. -# This could be handy for archiving the generated documentation or -# if some version control system is used. - -PROJECT_NUMBER = @VERSION@ - -# Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project. Keep the description short. - -PROJECT_BRIEF = - -# With the PROJECT_LOGO tag one can specify an logo or icon that is -# included in the documentation. The maximum height of the logo should not -# exceed 55 pixels and the maximum width should not exceed 200 pixels. -# Doxygen will copy the logo to the output directory. - -PROJECT_LOGO = - -# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) -# base path where the generated documentation will be put. -# If a relative path is entered, it will be relative to the location -# where doxygen was started. If left blank the current directory will be used. - -OUTPUT_DIRECTORY = - -# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create -# 4096 sub-directories (in 2 levels) under the output directory of each output -# format and will distribute the generated files over these directories. -# Enabling this option can be useful when feeding doxygen a huge amount of -# source files, where putting all generated files in the same directory would -# otherwise cause performance problems for the file system. - -CREATE_SUBDIRS = NO - -# The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all constant output in the proper language. -# The default language is English, other supported languages are: -# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, -# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, -# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English -# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, -# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, -# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. - -OUTPUT_LANGUAGE = English - -# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will -# include brief member descriptions after the members that are listed in -# the file and class documentation (similar to JavaDoc). -# Set to NO to disable this. - -BRIEF_MEMBER_DESC = YES - -# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend -# the brief description of a member or function before the detailed description. -# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the -# brief descriptions will be completely suppressed. - -REPEAT_BRIEF = YES - -# This tag implements a quasi-intelligent brief description abbreviator -# that is used to form the text in various listings. Each string -# in this list, if found as the leading text of the brief description, will be -# stripped from the text and the result after processing the whole list, is -# used as the annotated text. Otherwise, the brief description is used as-is. -# If left blank, the following values are used ("$name" is automatically -# replaced with the name of the entity): "The $name class" "The $name widget" -# "The $name file" "is" "provides" "specifies" "contains" -# "represents" "a" "an" "the" - -ABBREVIATE_BRIEF = - -# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# Doxygen will generate a detailed section even if there is only a brief -# description. - -ALWAYS_DETAILED_SEC = NO - -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all -# inherited members of a class in the documentation of that class as if those -# members were ordinary class members. Constructors, destructors and assignment -# operators of the base classes will not be shown. - -INLINE_INHERITED_MEMB = NO - -# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full -# path before files name in the file list and in the header files. If set -# to NO the shortest path that makes the file name unique will be used. - -FULL_PATH_NAMES = YES - -# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag -# can be used to strip a user-defined part of the path. Stripping is -# only done if one of the specified strings matches the left-hand part of -# the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the -# path to strip. - -STRIP_FROM_PATH = - -# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of -# the path mentioned in the documentation of a class, which tells -# the reader which header file to include in order to use a class. -# If left blank only the name of the header file containing the class -# definition is used. Otherwise one should specify the include paths that -# are normally passed to the compiler using the -I flag. - -STRIP_FROM_INC_PATH = - -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter -# (but less readable) file names. This can be useful if your file system -# doesn't support long names like on DOS, Mac, or CD-ROM. - -SHORT_NAMES = NO - -# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen -# will interpret the first line (until the first dot) of a JavaDoc-style -# comment as the brief description. If set to NO, the JavaDoc -# comments will behave just like regular Qt-style comments -# (thus requiring an explicit @brief command for a brief description.) - -JAVADOC_AUTOBRIEF = YES - -# If the QT_AUTOBRIEF tag is set to YES then Doxygen will -# interpret the first line (until the first dot) of a Qt-style -# comment as the brief description. If set to NO, the comments -# will behave just like regular Qt-style comments (thus requiring -# an explicit \brief command for a brief description.) - -QT_AUTOBRIEF = NO - -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen -# treat a multi-line C++ special comment block (i.e. a block of //! or /// -# comments) as a brief description. This used to be the default behaviour. -# The new default is to treat a multi-line C++ comment block as a detailed -# description. Set this tag to YES if you prefer the old behaviour instead. - -MULTILINE_CPP_IS_BRIEF = NO - -# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented -# member inherits the documentation from any documented member that it -# re-implements. - -INHERIT_DOCS = YES - -# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce -# a new page for each member. If set to NO, the documentation of a member will -# be part of the file/class/namespace that contains it. - -SEPARATE_MEMBER_PAGES = NO - -# The TAB_SIZE tag can be used to set the number of spaces in a tab. -# Doxygen uses this value to replace tabs by spaces in code fragments. - -TAB_SIZE = 8 - -# This tag can be used to specify a number of aliases that acts -# as commands in the documentation. An alias has the form "name=value". -# For example adding "sideeffect=\par Side Effects:\n" will allow you to -# put the command \sideeffect (or @sideeffect) in the documentation, which -# will result in a user-defined paragraph with heading "Side Effects:". -# You can put \n's in the value part of an alias to insert newlines. - -ALIASES = - -# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C -# sources only. Doxygen will then generate output that is more tailored for C. -# For instance, some of the names that are used will be different. The list -# of all members will be omitted, etc. - -OPTIMIZE_OUTPUT_FOR_C = YES - -# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java -# sources only. Doxygen will then generate output that is more tailored for -# Java. For instance, namespaces will be presented as packages, qualified -# scopes will look different, etc. - -OPTIMIZE_OUTPUT_JAVA = NO - -# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran -# sources only. Doxygen will then generate output that is more tailored for -# Fortran. - -OPTIMIZE_FOR_FORTRAN = NO - -# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL -# sources. Doxygen will then generate output that is tailored for -# VHDL. - -OPTIMIZE_OUTPUT_VHDL = NO - -# Doxygen selects the parser to use depending on the extension of the files it -# parses. With this tag you can assign which parser to use for a given extension. -# Doxygen has a built-in mapping, but you can override or extend it using this -# tag. The format is ext=language, where ext is a file extension, and language -# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, -# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make -# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C -# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions -# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. - -EXTENSION_MAPPING = - -# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want -# to include (a tag file for) the STL sources as input, then you should -# set this tag to YES in order to let doxygen match functions declarations and -# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. -# func(std::string) {}). This also makes the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. - -BUILTIN_STL_SUPPORT = NO - -# If you use Microsoft's C++/CLI language, you should set this option to YES to -# enable parsing support. - -CPP_CLI_SUPPORT = NO - -# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. -# Doxygen will parse them like normal C++ but will assume all classes use public -# instead of private inheritance when no explicit protection keyword is present. - -SIP_SUPPORT = NO - -# For Microsoft's IDL there are propget and propput attributes to indicate getter -# and setter methods for a property. Setting this option to YES (the default) -# will make doxygen replace the get and set methods by a property in the -# documentation. This will only work if the methods are indeed getting or -# setting a simple type. If this is not the case, or you want to show the -# methods anyway, you should set this option to NO. - -IDL_PROPERTY_SUPPORT = YES - -# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES, then doxygen will reuse the documentation of the first -# member in the group (if any) for the other members of the group. By default -# all members of a group must be documented explicitly. - -DISTRIBUTE_GROUP_DOC = NO - -# Set the SUBGROUPING tag to YES (the default) to allow class member groups of -# the same type (for instance a group of public functions) to be put as a -# subgroup of that type (e.g. under the Public Functions section). Set it to -# NO to prevent subgrouping. Alternatively, this can be done per class using -# the \nosubgrouping command. - -SUBGROUPING = YES - -# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum -# is documented as struct, union, or enum with the name of the typedef. So -# typedef struct TypeS {} TypeT, will appear in the documentation as a struct -# with name TypeT. When disabled the typedef will appear as a member of a file, -# namespace, or class. And the struct will be named TypeS. This can typically -# be useful for C code in case the coding convention dictates that all compound -# types are typedef'ed and only the typedef is referenced, never the tag name. - -TYPEDEF_HIDES_STRUCT = NO - -# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to -# determine which symbols to keep in memory and which to flush to disk. -# When the cache is full, less often used symbols will be written to disk. -# For small to medium size projects (<1000 input files) the default value is -# probably good enough. For larger projects a too small cache size can cause -# doxygen to be busy swapping symbols to and from disk most of the time -# causing a significant performance penalty. -# If the system has enough physical memory increasing the cache will improve the -# performance by keeping more symbols in memory. Note that the value works on -# a logarithmic scale so increasing the size by one will roughly double the -# memory usage. The cache size is given by this formula: -# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, -# corresponding to a cache size of 2^16 = 65536 symbols - -SYMBOL_CACHE_SIZE = 0 - -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- - -# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in -# documentation are documented, even if no documentation was available. -# Private class members and static file members will be hidden unless -# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES - -EXTRACT_ALL = NO - -# If the EXTRACT_PRIVATE tag is set to YES all private members of a class -# will be included in the documentation. - -EXTRACT_PRIVATE = NO - -# If the EXTRACT_STATIC tag is set to YES all static members of a file -# will be included in the documentation. - -EXTRACT_STATIC = NO - -# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) -# defined locally in source files will be included in the documentation. -# If set to NO only classes defined in header files are included. - -EXTRACT_LOCAL_CLASSES = YES - -# This flag is only useful for Objective-C code. When set to YES local -# methods, which are defined in the implementation section but not in -# the interface are included in the documentation. -# If set to NO (the default) only methods in the interface are included. - -EXTRACT_LOCAL_METHODS = NO - -# If this flag is set to YES, the members of anonymous namespaces will be -# extracted and appear in the documentation as a namespace called -# 'anonymous_namespace{file}', where file will be replaced with the base -# name of the file that contains the anonymous namespace. By default -# anonymous namespaces are hidden. - -EXTRACT_ANON_NSPACES = NO - -# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all -# undocumented members of documented classes, files or namespaces. -# If set to NO (the default) these members will be included in the -# various overviews, but no documentation section is generated. -# This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_MEMBERS = NO - -# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all -# undocumented classes that are normally visible in the class hierarchy. -# If set to NO (the default) these classes will be included in the various -# overviews. This option has no effect if EXTRACT_ALL is enabled. - -HIDE_UNDOC_CLASSES = NO - -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all -# friend (class|struct|union) declarations. -# If set to NO (the default) these declarations will be included in the -# documentation. - -HIDE_FRIEND_COMPOUNDS = NO - -# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any -# documentation blocks found inside the body of a function. -# If set to NO (the default) these blocks will be appended to the -# function's detailed documentation block. - -HIDE_IN_BODY_DOCS = NO - -# The INTERNAL_DOCS tag determines if documentation -# that is typed after a \internal command is included. If the tag is set -# to NO (the default) then the documentation will be excluded. -# Set it to YES to include the internal documentation. - -INTERNAL_DOCS = NO - -# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate -# file names in lower-case letters. If set to YES upper-case letters are also -# allowed. This is useful if you have classes or files whose names only differ -# in case and if your file system supports case sensitive file names. Windows -# and Mac users are advised to set this option to NO. - -CASE_SENSE_NAMES = YES - -# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen -# will show members with their full class and namespace scopes in the -# documentation. If set to YES the scope will be hidden. - -HIDE_SCOPE_NAMES = NO - -# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen -# will put a list of the files that are included by a file in the documentation -# of that file. - -SHOW_INCLUDE_FILES = YES - -# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen -# will list include files with double quotes in the documentation -# rather than with sharp brackets. - -FORCE_LOCAL_INCLUDES = NO - -# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] -# is inserted in the documentation for inline members. - -INLINE_INFO = YES - -# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen -# will sort the (detailed) documentation of file and class members -# alphabetically by member name. If set to NO the members will appear in -# declaration order. - -SORT_MEMBER_DOCS = YES - -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the -# brief documentation of file, namespace and class members alphabetically -# by member name. If set to NO (the default) the members will appear in -# declaration order. - -SORT_BRIEF_DOCS = NO - -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen -# will sort the (brief and detailed) documentation of class members so that -# constructors and destructors are listed first. If set to NO (the default) -# the constructors will appear in the respective orders defined by -# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. -# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO -# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. - -SORT_MEMBERS_CTORS_1ST = NO - -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the -# hierarchy of group names into alphabetical order. If set to NO (the default) -# the group names will appear in their defined order. - -SORT_GROUP_NAMES = NO - -# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be -# sorted by fully-qualified names, including namespaces. If set to -# NO (the default), the class list will be sorted only by class name, -# not including the namespace part. -# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. -# Note: This option applies only to the class list, not to the -# alphabetical list. - -SORT_BY_SCOPE_NAME = NO - -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper type resolution of all parameters of a function it will reject a -# match between the prototype and the implementation of a member function even if there is only one candidate or it is obvious which candidate to choose by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen -# will still accept a match between prototype and implementation in such cases. - -STRICT_PROTO_MATCHING = NO - -# The GENERATE_TODOLIST tag can be used to enable (YES) or -# disable (NO) the todo list. This list is created by putting \todo -# commands in the documentation. - -GENERATE_TODOLIST = YES - -# The GENERATE_TESTLIST tag can be used to enable (YES) or -# disable (NO) the test list. This list is created by putting \test -# commands in the documentation. - -GENERATE_TESTLIST = YES - -# The GENERATE_BUGLIST tag can be used to enable (YES) or -# disable (NO) the bug list. This list is created by putting \bug -# commands in the documentation. - -GENERATE_BUGLIST = YES - -# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or -# disable (NO) the deprecated list. This list is created by putting -# \deprecated commands in the documentation. - -GENERATE_DEPRECATEDLIST= YES - -# The ENABLED_SECTIONS tag can be used to enable conditional -# documentation sections, marked by \if sectionname ... \endif. - -ENABLED_SECTIONS = - -# The MAX_INITIALIZER_LINES tag determines the maximum number of lines -# the initial value of a variable or macro consists of for it to appear in -# the documentation. If the initializer consists of more lines than specified -# here it will be hidden. Use a value of 0 to hide initializers completely. -# The appearance of the initializer of individual variables and macros in the -# documentation can be controlled using \showinitializer or \hideinitializer -# command in the documentation regardless of this setting. - -MAX_INITIALIZER_LINES = 30 - -# Set the SHOW_USED_FILES tag to NO to disable the list of files generated -# at the bottom of the documentation of classes and structs. If set to YES the -# list will mention the files that were used to generate the documentation. - -SHOW_USED_FILES = YES - -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - -# Set the SHOW_FILES tag to NO to disable the generation of the Files page. -# This will remove the Files entry from the Quick Index and from the -# Folder Tree View (if specified). The default is YES. - -SHOW_FILES = YES - -# Set the SHOW_NAMESPACES tag to NO to disable the generation of the -# Namespaces page. -# This will remove the Namespaces entry from the Quick Index -# and from the Folder Tree View (if specified). The default is YES. - -SHOW_NAMESPACES = YES - -# The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from -# the version control system). Doxygen will invoke the program by executing (via -# popen()) the command , where is the value of -# the FILE_VERSION_FILTER tag, and is the name of an input file -# provided by doxygen. Whatever the program writes to standard output -# is used as the file version. See the manual for examples. - -FILE_VERSION_FILTER = - -# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated -# output files in an output format independent way. The create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. -# You can optionally specify a file name after the option, if omitted -# DoxygenLayout.xml will be used as the name of the layout file. - -LAYOUT_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- - -# The QUIET tag can be used to turn on/off the messages that are generated -# by doxygen. Possible values are YES and NO. If left blank NO is used. - -QUIET = NO - -# The WARNINGS tag can be used to turn on/off the warning messages that are -# generated by doxygen. Possible values are YES and NO. If left blank -# NO is used. - -WARNINGS = YES - -# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings -# for undocumented members. If EXTRACT_ALL is set to YES then this flag will -# automatically be disabled. - -WARN_IF_UNDOCUMENTED = YES - -# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some -# parameters in a documented function, or documenting parameters that -# don't exist or using markup commands wrongly. - -WARN_IF_DOC_ERROR = YES - -# The WARN_NO_PARAMDOC option can be enabled to get warnings for -# functions that are documented, but have no documentation for their parameters -# or return value. If set to NO (the default) doxygen will only warn about -# wrong or incomplete parameter documentation, but not about the absence of -# documentation. - -WARN_NO_PARAMDOC = NO - -# The WARN_FORMAT tag determines the format of the warning messages that -# doxygen can produce. The string should contain the $file, $line, and $text -# tags, which will be replaced by the file and line number from which the -# warning originated and the warning text. Optionally the format may contain -# $version, which will be replaced by the version of the file (if it could -# be obtained via FILE_VERSION_FILTER) - -WARN_FORMAT = "$file:$line: $text" - -# The WARN_LOGFILE tag can be used to specify a file to which warning -# and error messages should be written. If left blank the output is written -# to stderr. - -WARN_LOGFILE = - -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- - -# The INPUT tag can be used to specify the files and/or directories that contain -# documented source files. You may enter file names like "myfile.cpp" or -# directories like "/usr/src/myproject". Separate the files or directories -# with spaces. - -INPUT = src/headers/spatialite.h \ - src/headers/spatialite/gaiaaux.h \ - src/headers/spatialite/gaiaexif.h \ - src/headers/spatialite/gaiageo.h \ - src/headers/spatialite/gg_const.h \ - src/headers/spatialite/gg_structs.h \ - src/headers/spatialite/gg_core.h \ - src/headers/spatialite/gg_mbr.h \ - src/headers/spatialite/gg_formats.h \ - src/headers/spatialite/gg_dynamic.h \ - src/headers/spatialite/gg_advanced.h \ - examples/examples.doxy \ - mainpage.doxy - -# This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is -# also the default input encoding. Doxygen uses libiconv (or the iconv built -# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for -# the list of possible encodings. - -INPUT_ENCODING = UTF-8 - -# If the value of the INPUT tag contains directories, you can use the -# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank the following patterns are tested: -# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh -# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py -# *.f90 *.f *.for *.vhd *.vhdl - -FILE_PATTERNS = - -# The RECURSIVE tag can be used to turn specify whether or not subdirectories -# should be searched for input files as well. Possible values are YES and NO. -# If left blank NO is used. - -RECURSIVE = NO - -# The EXCLUDE tag can be used to specify files and/or directories that should -# excluded from the INPUT source files. This way you can easily exclude a -# subdirectory from a directory tree whose root is specified with the INPUT tag. - -EXCLUDE = - -# The EXCLUDE_SYMLINKS tag can be used select whether or not files or -# directories that are symbolic links (a Unix file system feature) are excluded -# from the input. - -EXCLUDE_SYMLINKS = NO - -# If the value of the INPUT tag contains directories, you can use the -# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude -# certain files from those directories. Note that the wildcards are matched -# against the file with absolute path, so to exclude all test directories -# for example use the pattern */test/* - -EXCLUDE_PATTERNS = - -# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names -# (namespaces, classes, functions, etc.) that should be excluded from the -# output. The symbol name can be a fully qualified name, a word, or if the -# wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test - -EXCLUDE_SYMBOLS = - -# The EXAMPLE_PATH tag can be used to specify one or more files or -# directories that contain example code fragments that are included (see -# the \include command). - -EXAMPLE_PATH = examples - -# If the value of the EXAMPLE_PATH tag contains directories, you can use the -# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp -# and *.h) to filter out the source-files in the directories. If left -# blank all files are included. - -EXAMPLE_PATTERNS = - -# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be -# searched for input files to be used with the \include or \dontinclude -# commands irrespective of the value of the RECURSIVE tag. -# Possible values are YES and NO. If left blank NO is used. - -EXAMPLE_RECURSIVE = NO - -# The IMAGE_PATH tag can be used to specify one or more files or -# directories that contain image that are included in the documentation (see -# the \image command). - -IMAGE_PATH = - -# The INPUT_FILTER tag can be used to specify a program that doxygen should -# invoke to filter for each input file. Doxygen will invoke the filter program -# by executing (via popen()) the command , where -# is the value of the INPUT_FILTER tag, and is the name of an -# input file. Doxygen will then use the output that the filter program writes -# to standard output. -# If FILTER_PATTERNS is specified, this tag will be -# ignored. - -INPUT_FILTER = - -# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern -# basis. -# Doxygen will compare the file name with each pattern and apply the -# filter if there is a match. -# The filters are a list of the form: -# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further -# info on how filters are used. If FILTER_PATTERNS is empty or if -# non of the patterns match the file name, INPUT_FILTER is applied. - -FILTER_PATTERNS = - -# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using -# INPUT_FILTER) will be used to filter the input files when producing source -# files to browse (i.e. when SOURCE_BROWSER is set to YES). - -FILTER_SOURCE_FILES = NO - -# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file -# pattern. A pattern will override the setting for FILTER_PATTERN (if any) -# and it is also possible to disable source filtering for a specific pattern -# using *.ext= (so without naming a filter). This option only has effect when -# FILTER_SOURCE_FILES is enabled. - -FILTER_SOURCE_PATTERNS = - -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- - -# If the SOURCE_BROWSER tag is set to YES then a list of source files will -# be generated. Documented entities will be cross-referenced with these sources. -# Note: To get rid of all source code in the generated output, make sure also -# VERBATIM_HEADERS is set to NO. - -SOURCE_BROWSER = NO - -# Setting the INLINE_SOURCES tag to YES will include the body -# of functions and classes directly in the documentation. - -INLINE_SOURCES = NO - -# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct -# doxygen to hide any special comment blocks from generated source code -# fragments. Normal C and C++ comments will always remain visible. - -STRIP_CODE_COMMENTS = YES - -# If the REFERENCED_BY_RELATION tag is set to YES -# then for each documented function all documented -# functions referencing it will be listed. - -REFERENCED_BY_RELATION = NO - -# If the REFERENCES_RELATION tag is set to YES -# then for each documented function all documented entities -# called/used by that function will be listed. - -REFERENCES_RELATION = NO - -# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) -# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from -# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will -# link to the source code. -# Otherwise they will link to the documentation. - -REFERENCES_LINK_SOURCE = YES - -# If the USE_HTAGS tag is set to YES then the references to source code -# will point to the HTML generated by the htags(1) tool instead of doxygen -# built-in source browser. The htags tool is part of GNU's global source -# tagging system (see http://www.gnu.org/software/global/global.html). You -# will need version 4.8.6 or higher. - -USE_HTAGS = NO - -# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen -# will generate a verbatim copy of the header file for each class for -# which an include is specified. Set to NO to disable this. - -VERBATIM_HEADERS = YES - -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- - -# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index -# of all compounds will be generated. Enable this if the project -# contains a lot of classes, structs, unions or interfaces. - -ALPHABETICAL_INDEX = YES - -# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then -# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns -# in which this list will be split (can be a number in the range [1..20]) - -COLS_IN_ALPHA_INDEX = 5 - -# In case all classes in a project start with a common prefix, all -# classes will be put under the same header in the alphabetical index. -# The IGNORE_PREFIX tag can be used to specify one or more prefixes that -# should be ignored while generating the index headers. - -IGNORE_PREFIX = - -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- - -# If the GENERATE_HTML tag is set to YES (the default) Doxygen will -# generate HTML output. - -GENERATE_HTML = YES - -# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `html' will be used as the default path. - -HTML_OUTPUT = html - -# The HTML_FILE_EXTENSION tag can be used to specify the file extension for -# each generated HTML page (for example: .htm,.php,.asp). If it is left blank -# doxygen will generate files with .html extension. - -HTML_FILE_EXTENSION = .html - -# The HTML_HEADER tag can be used to specify a personal HTML header for -# each generated HTML page. If it is left blank doxygen will generate a -# standard header. - -HTML_HEADER = - -# The HTML_FOOTER tag can be used to specify a personal HTML footer for -# each generated HTML page. If it is left blank doxygen will generate a -# standard footer. - -HTML_FOOTER = - -# The HTML_STYLESHEET tag can be used to specify a user-defined cascading -# style sheet that is used by each HTML page. It can be used to -# fine-tune the look of the HTML output. If the tag is left blank doxygen -# will generate a default style sheet. Note that doxygen will try to copy -# the style sheet file to the HTML output directory, so don't put your own -# stylesheet in the HTML output directory as well, or it will be erased! - -HTML_STYLESHEET = - -# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. -# Doxygen will adjust the colors in the stylesheet and background images -# according to this color. Hue is specified as an angle on a colorwheel, -# see http://en.wikipedia.org/wiki/Hue for more information. -# For instance the value 0 represents red, 60 is yellow, 120 is green, -# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. -# The allowed range is 0 to 359. - -HTML_COLORSTYLE_HUE = 220 - -# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of -# the colors in the HTML output. For a value of 0 the output will use -# grayscales only. A value of 255 will produce the most vivid colors. - -HTML_COLORSTYLE_SAT = 100 - -# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to -# the luminance component of the colors in the HTML output. Values below -# 100 gradually make the output lighter, whereas values above 100 make -# the output darker. The value divided by 100 is the actual gamma applied, -# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, -# and 100 does not change the gamma. - -HTML_COLORSTYLE_GAMMA = 80 - -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting -# this to NO can help when comparing the output of multiple runs. - -HTML_TIMESTAMP = YES - -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - -# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML -# documentation will contain sections that can be hidden and shown after the -# page has loaded. For this to work a browser that supports -# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox -# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). - -HTML_DYNAMIC_SECTIONS = NO - -# If the GENERATE_DOCSET tag is set to YES, additional index files -# will be generated that can be used as input for Apple's Xcode 3 -# integrated development environment, introduced with OSX 10.5 (Leopard). -# To create a documentation set, doxygen will generate a Makefile in the -# HTML output directory. Running make will produce the docset in that -# directory and running "make install" will install the docset in -# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find -# it at startup. -# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html -# for more information. - -GENERATE_DOCSET = NO - -# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the -# feed. A documentation feed provides an umbrella under which multiple -# documentation sets from a single provider (such as a company or product suite) -# can be grouped. - -DOCSET_FEEDNAME = "Doxygen generated docs" - -# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that -# should uniquely identify the documentation set bundle. This should be a -# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen -# will append .docset to the name. - -DOCSET_BUNDLE_ID = org.doxygen.Project - -# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify -# the documentation publisher. This should be a reverse domain-name style -# string, e.g. com.mycompany.MyDocSet.documentation. - -DOCSET_PUBLISHER_ID = org.doxygen.Publisher - -# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. - -DOCSET_PUBLISHER_NAME = Publisher - -# If the GENERATE_HTMLHELP tag is set to YES, additional index files -# will be generated that can be used as input for tools like the -# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) -# of the generated HTML documentation. - -GENERATE_HTMLHELP = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can -# be used to specify the file name of the resulting .chm file. You -# can add a path in front of the file if the result should not be -# written to the html output directory. - -CHM_FILE = - -# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can -# be used to specify the location (absolute path including file name) of -# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run -# the HTML help compiler on the generated index.hhp. - -HHC_LOCATION = - -# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag -# controls if a separate .chi index file is generated (YES) or that -# it should be included in the master .chm file (NO). - -GENERATE_CHI = NO - -# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING -# is used to encode HtmlHelp index (hhk), content (hhc) and project file -# content. - -CHM_INDEX_ENCODING = - -# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag -# controls whether a binary table of contents is generated (YES) or a -# normal table of contents (NO) in the .chm file. - -BINARY_TOC = NO - -# The TOC_EXPAND flag can be set to YES to add extra items for group members -# to the contents of the HTML help documentation and to the tree view. - -TOC_EXPAND = NO - -# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and -# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated -# that can be used as input for Qt's qhelpgenerator to generate a -# Qt Compressed Help (.qch) of the generated HTML documentation. - -GENERATE_QHP = NO - -# If the QHG_LOCATION tag is specified, the QCH_FILE tag can -# be used to specify the file name of the resulting .qch file. -# The path specified is relative to the HTML output folder. - -QCH_FILE = - -# The QHP_NAMESPACE tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#namespace - -QHP_NAMESPACE = org.doxygen.Project - -# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating -# Qt Help Project output. For more information please see -# http://doc.trolltech.com/qthelpproject.html#virtual-folders - -QHP_VIRTUAL_FOLDER = doc - -# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to -# add. For more information please see -# http://doc.trolltech.com/qthelpproject.html#custom-filters - -QHP_CUST_FILTER_NAME = - -# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the -# custom filter to add. For more information please see -# -# Qt Help Project / Custom Filters. - -QHP_CUST_FILTER_ATTRS = - -# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this -# project's -# filter section matches. -# -# Qt Help Project / Filter Attributes. - -QHP_SECT_FILTER_ATTRS = - -# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can -# be used to specify the location of Qt's qhelpgenerator. -# If non-empty doxygen will try to run qhelpgenerator on the generated -# .qhp file. - -QHG_LOCATION = - -# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files -# will be generated, which together with the HTML files, form an Eclipse help -# plugin. To install this plugin and make it available under the help contents -# menu in Eclipse, the contents of the directory containing the HTML and XML -# files needs to be copied into the plugins directory of eclipse. The name of -# the directory within the plugins directory should be the same as -# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before -# the help appears. - -GENERATE_ECLIPSEHELP = NO - -# A unique identifier for the eclipse help plugin. When installing the plugin -# the directory name containing the HTML and XML files should also have -# this name. - -ECLIPSE_DOC_ID = org.doxygen.Project - -# The DISABLE_INDEX tag can be used to turn on/off the condensed index at -# top of each HTML page. The value NO (the default) enables the index and -# the value YES disables it. - -DISABLE_INDEX = NO - -# This tag can be used to set the number of enum values (range [0,1..20]) -# that doxygen will group on one line in the generated HTML documentation. -# Note that a value of 0 will completely suppress the enum values from appearing in the overview section. - -ENUM_VALUES_PER_LINE = 4 - -# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index -# structure should be generated to display hierarchical information. -# If the tag value is set to YES, a side panel will be generated -# containing a tree-like index structure (just like the one that -# is generated for HTML Help). For this to work a browser that supports -# JavaScript, DHTML, CSS and frames is required (i.e. any modern browser). -# Windows users are probably better off using the HTML help feature. - -GENERATE_TREEVIEW = NO - -# By enabling USE_INLINE_TREES, doxygen will generate the Groups, Directories, -# and Class Hierarchy pages using a tree view instead of an ordered list. - -USE_INLINE_TREES = NO - -# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be -# used to set the initial width (in pixels) of the frame in which the tree -# is shown. - -TREEVIEW_WIDTH = 250 - -# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open -# links to external symbols imported via tag files in a separate window. - -EXT_LINKS_IN_WINDOW = NO - -# Use this tag to change the font size of Latex formulas included -# as images in the HTML documentation. The default is 10. Note that -# when you change the font size after a successful doxygen run you need -# to manually remove any form_*.png images from the HTML output directory -# to force them to be regenerated. - -FORMULA_FONTSIZE = 10 - -# Use the FORMULA_TRANPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are -# not supported properly for IE 6.0, but are supported on all modern browsers. -# Note that when changing this option you need to delete any form_*.png files -# in the HTML output before the changes have effect. - -FORMULA_TRANSPARENT = YES - -# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax -# (see http://www.mathjax.org) which uses client side Javascript for the -# rendering instead of using prerendered bitmaps. Use this if you do not -# have LaTeX installed or if you want to formulas look prettier in the HTML -# output. When enabled you also need to install MathJax separately and -# configure the path to it using the MATHJAX_RELPATH option. - -USE_MATHJAX = NO - -# When MathJax is enabled you need to specify the location relative to the -# HTML output directory using the MATHJAX_RELPATH option. The destination -# directory should contain the MathJax.js script. For instance, if the mathjax -# directory is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the mathjax.org site, so you can quickly see the result without installing -# MathJax, but it is strongly recommended to install a local copy of MathJax -# before deployment. - -MATHJAX_RELPATH = http://www.mathjax.org/mathjax - -# When the SEARCHENGINE tag is enabled doxygen will generate a search box -# for the HTML output. The underlying search engine uses javascript -# and DHTML and should work on any modern browser. Note that when using -# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets -# (GENERATE_DOCSET) there is already a search function so this one should -# typically be disabled. For large projects the javascript based search engine -# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. - -SEARCHENGINE = YES - -# When the SERVER_BASED_SEARCH tag is enabled the search engine will be -# implemented using a PHP enabled web server instead of at the web client -# using Javascript. Doxygen will generate the search PHP script and index -# file to put on the web server. The advantage of the server -# based approach is that it scales better to large projects and allows -# full text search. The disadvantages are that it is more difficult to setup -# and does not have live searching capabilities. - -SERVER_BASED_SEARCH = NO - -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- - -# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will -# generate Latex output. - -GENERATE_LATEX = YES - -# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `latex' will be used as the default path. - -LATEX_OUTPUT = latex - -# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be -# invoked. If left blank `latex' will be used as the default command name. -# Note that when enabling USE_PDFLATEX this option is only used for -# generating bitmaps for formulas in the HTML output, but not in the -# Makefile that is written to the output directory. - -LATEX_CMD_NAME = latex - -# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to -# generate index for LaTeX. If left blank `makeindex' will be used as the -# default command name. - -MAKEINDEX_CMD_NAME = makeindex - -# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact -# LaTeX documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_LATEX = NO - -# The PAPER_TYPE tag can be used to set the paper type that is used -# by the printer. Possible values are: a4, letter, legal and -# executive. If left blank a4wide will be used. - -PAPER_TYPE = a4 - -# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX -# packages that should be included in the LaTeX output. - -EXTRA_PACKAGES = - -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for -# the generated latex document. The header should contain everything until -# the first chapter. If it is left blank doxygen will generate a -# standard header. Notice: only use this tag if you know what you are doing! - -LATEX_HEADER = - -# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated -# is prepared for conversion to pdf (using ps2pdf). The pdf file will -# contain links (just like the HTML output) instead of page references -# This makes the output suitable for online browsing using a pdf viewer. - -PDF_HYPERLINKS = YES - -# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of -# plain latex in the generated Makefile. Set this option to YES to get a -# higher quality PDF documentation. - -USE_PDFLATEX = YES - -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. -# command to the generated LaTeX files. This will instruct LaTeX to keep -# running if errors occur, instead of asking the user for help. -# This option is also used when generating formulas in HTML. - -LATEX_BATCHMODE = NO - -# If LATEX_HIDE_INDICES is set to YES then doxygen will not -# include the index chapters (such as File Index, Compound Index, etc.) -# in the output. - -LATEX_HIDE_INDICES = NO - -# If LATEX_SOURCE_CODE is set to YES then doxygen will include -# source code with syntax highlighting in the LaTeX output. -# Note that which sources are shown also depends on other settings -# such as SOURCE_BROWSER. - -LATEX_SOURCE_CODE = NO - -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- - -# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output -# The RTF output is optimized for Word 97 and may not look very pretty with -# other RTF readers or editors. - -GENERATE_RTF = NO - -# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `rtf' will be used as the default path. - -RTF_OUTPUT = rtf - -# If the COMPACT_RTF tag is set to YES Doxygen generates more compact -# RTF documents. This may be useful for small projects and may help to -# save some trees in general. - -COMPACT_RTF = NO - -# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated -# will contain hyperlink fields. The RTF file will -# contain links (just like the HTML output) instead of page references. -# This makes the output suitable for online browsing using WORD or other -# programs which support those fields. -# Note: wordpad (write) and others do not support links. - -RTF_HYPERLINKS = NO - -# Load stylesheet definitions from file. Syntax is similar to doxygen's -# config file, i.e. a series of assignments. You only have to provide -# replacements, missing definitions are set to their default value. - -RTF_STYLESHEET_FILE = - -# Set optional variables used in the generation of an rtf document. -# Syntax is similar to doxygen's config file. - -RTF_EXTENSIONS_FILE = - -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- - -# If the GENERATE_MAN tag is set to YES (the default) Doxygen will -# generate man pages - -GENERATE_MAN = NO - -# The MAN_OUTPUT tag is used to specify where the man pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `man' will be used as the default path. - -MAN_OUTPUT = man - -# The MAN_EXTENSION tag determines the extension that is added to -# the generated man pages (default is the subroutine's section .3) - -MAN_EXTENSION = .3 - -# If the MAN_LINKS tag is set to YES and Doxygen generates man output, -# then it will generate one additional man file for each entity -# documented in the real man page(s). These additional files -# only source the real man page, but without them the man command -# would be unable to find the correct page. The default is NO. - -MAN_LINKS = NO - -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- - -# If the GENERATE_XML tag is set to YES Doxygen will -# generate an XML file that captures the structure of -# the code including all documentation. - -GENERATE_XML = NO - -# The XML_OUTPUT tag is used to specify where the XML pages will be put. -# If a relative path is entered the value of OUTPUT_DIRECTORY will be -# put in front of it. If left blank `xml' will be used as the default path. - -XML_OUTPUT = xml - -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - -# If the XML_PROGRAMLISTING tag is set to YES Doxygen will -# dump the program listings (including syntax highlighting -# and cross-referencing information) to the XML output. Note that -# enabling this will significantly increase the size of the XML output. - -XML_PROGRAMLISTING = YES - -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- - -# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will -# generate an AutoGen Definitions (see autogen.sf.net) file -# that captures the structure of the code including all -# documentation. Note that this feature is still experimental -# and incomplete at the moment. - -GENERATE_AUTOGEN_DEF = NO - -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- - -# If the GENERATE_PERLMOD tag is set to YES Doxygen will -# generate a Perl module file that captures the structure of -# the code including all documentation. Note that this -# feature is still experimental and incomplete at the -# moment. - -GENERATE_PERLMOD = NO - -# If the PERLMOD_LATEX tag is set to YES Doxygen will generate -# the necessary Makefile rules, Perl scripts and LaTeX code to be able -# to generate PDF and DVI output from the Perl module output. - -PERLMOD_LATEX = NO - -# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be -# nicely formatted so it can be parsed by a human reader. -# This is useful -# if you want to understand what is going on. -# On the other hand, if this -# tag is set to NO the size of the Perl module output will be much smaller -# and Perl will parse it just the same. - -PERLMOD_PRETTY = YES - -# The names of the make variables in the generated doxyrules.make file -# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. -# This is useful so different doxyrules.make files included by the same -# Makefile don't overwrite each other's variables. - -PERLMOD_MAKEVAR_PREFIX = - -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- - -# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will -# evaluate all C-preprocessor directives found in the sources and include -# files. - -ENABLE_PREPROCESSING = YES - -# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro -# names in the source code. If set to NO (the default) only conditional -# compilation will be performed. Macro expansion can be done in a controlled -# way by setting EXPAND_ONLY_PREDEF to YES. - -MACRO_EXPANSION = NO - -# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES -# then the macro expansion is limited to the macros specified with the -# PREDEFINED and EXPAND_AS_DEFINED tags. - -EXPAND_ONLY_PREDEF = NO - -# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files -# in the INCLUDE_PATH (see below) will be search if a #include is found. - -SEARCH_INCLUDES = YES - -# The INCLUDE_PATH tag can be used to specify one or more directories that -# contain include files that are not input files but should be processed by -# the preprocessor. - -INCLUDE_PATH = - -# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard -# patterns (like *.h and *.hpp) to filter out the header-files in the -# directories. If left blank, the patterns specified with FILE_PATTERNS will -# be used. - -INCLUDE_FILE_PATTERNS = - -# The PREDEFINED tag can be used to specify one or more macro names that -# are defined before the preprocessor is started (similar to the -D option of -# gcc). The argument of the tag is a list of macros of the form: name -# or name=definition (no spaces). If the definition and the = are -# omitted =1 is assumed. To prevent a macro definition from being -# undefined via #undef or recursively expanded use the := operator -# instead of the = operator. - -PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS - -# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then -# this tag can be used to specify a list of macro names that should be expanded. -# The macro definition that is found in the sources will be used. -# Use the PREDEFINED tag if you want to use a different macro definition that overrules the definition found in the source code. - -EXPAND_AS_DEFINED = - -# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then -# doxygen's preprocessor will remove all references to function-like macros -# that are alone on a line, have an all uppercase name, and do not end with a -# semicolon, because these will confuse the parser if not removed. - -SKIP_FUNCTION_MACROS = YES - -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- - -# The TAGFILES option can be used to specify one or more tagfiles. -# Optionally an initial location of the external documentation -# can be added for each tagfile. The format of a tag file without -# this location is as follows: -# -# TAGFILES = file1 file2 ... -# Adding location for the tag files is done as follows: -# -# TAGFILES = file1=loc1 "file2 = loc2" ... -# where "loc1" and "loc2" can be relative or absolute paths or -# URLs. If a location is present for each tag, the installdox tool -# does not have to be run to correct the links. -# Note that each tag file must have a unique name -# (where the name does NOT include the path) -# If a tag file is not located in the directory in which doxygen -# is run, you must also specify the path to the tagfile here. - -TAGFILES = - -# When a file name is specified after GENERATE_TAGFILE, doxygen will create -# a tag file that is based on the input files it reads. - -GENERATE_TAGFILE = - -# If the ALLEXTERNALS tag is set to YES all external classes will be listed -# in the class index. If set to NO only the inherited external classes -# will be listed. - -ALLEXTERNALS = NO - -# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will -# be listed. - -EXTERNAL_GROUPS = YES - -# The PERL_PATH should be the absolute path and name of the perl script -# interpreter (i.e. the result of `which perl'). - -PERL_PATH = /usr/bin/perl - -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- - -# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will -# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base -# or super classes. Setting the tag to NO turns the diagrams off. Note that -# this option also works with HAVE_DOT disabled, but it is recommended to -# install and use dot, since it yields more powerful graphs. - -CLASS_DIAGRAMS = YES - -# You can define message sequence charts within doxygen comments using the \msc -# command. Doxygen will then run the mscgen tool (see -# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the -# documentation. The MSCGEN_PATH tag allows you to specify the directory where -# the mscgen tool resides. If left empty the tool is assumed to be found in the -# default search path. - -MSCGEN_PATH = - -# If set to YES, the inheritance and collaboration graphs will hide -# inheritance and usage relations if the target is undocumented -# or is not a class. - -HIDE_UNDOC_RELATIONS = YES - -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is -# available from the path. This tool is part of Graphviz, a graph visualization -# toolkit from AT&T and Lucent Bell Labs. The other options in this section -# have no effect if this option is set to NO (the default) - -HAVE_DOT = YES - -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is -# allowed to run in parallel. When set to 0 (the default) doxygen will -# base this on the number of processors available in the system. You can set it -# explicitly to a value larger than 0 to get control over the balance -# between CPU load and processing speed. - -DOT_NUM_THREADS = 0 - -# By default doxygen will write a font called Helvetica to the output -# directory and reference it in all dot files that doxygen generates. -# When you want a differently looking font you can specify the font name -# using DOT_FONTNAME. You need to make sure dot is able to find the font, -# which can be done by putting it in a standard location or by setting the -# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory -# containing the font. - -DOT_FONTNAME = Helvetica - -# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. -# The default size is 10pt. - -DOT_FONTSIZE = 10 - -# By default doxygen will tell dot to use the output directory to look for the -# FreeSans.ttf font (which doxygen will put there itself). If you specify a -# different font using DOT_FONTNAME you can set the path where dot -# can find it using this tag. - -DOT_FONTPATH = - -# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect inheritance relations. Setting this tag to YES will force the -# the CLASS_DIAGRAMS tag to NO. - -CLASS_GRAPH = YES - -# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for each documented class showing the direct and -# indirect implementation dependencies (inheritance, containment, and -# class references variables) of the class with other documented classes. - -COLLABORATION_GRAPH = YES - -# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen -# will generate a graph for groups, showing the direct groups dependencies - -GROUP_GRAPHS = YES - -# If the UML_LOOK tag is set to YES doxygen will generate inheritance and -# collaboration diagrams in a style similar to the OMG's Unified Modeling -# Language. - -UML_LOOK = NO - -# If set to YES, the inheritance and collaboration graphs will show the -# relations between templates and their instances. - -TEMPLATE_RELATIONS = NO - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT -# tags are set to YES then doxygen will generate a graph for each documented -# file showing the direct and indirect include dependencies of the file with -# other documented files. - -INCLUDE_GRAPH = YES - -# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and -# HAVE_DOT tags are set to YES then doxygen will generate a graph for each -# documented header file showing the documented files that directly or -# indirectly include this file. - -INCLUDED_BY_GRAPH = YES - -# If the CALL_GRAPH and HAVE_DOT options are set to YES then -# doxygen will generate a call dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable call graphs -# for selected functions only using the \callgraph command. - -CALL_GRAPH = NO - -# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then -# doxygen will generate a caller dependency graph for every global function -# or class method. Note that enabling this option will significantly increase -# the time of a run. So in most cases it will be better to enable caller -# graphs for selected functions only using the \callergraph command. - -CALLER_GRAPH = NO - -# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen -# will generate a graphical hierarchy of all classes instead of a textual one. - -GRAPHICAL_HIERARCHY = YES - -# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES -# then doxygen will show the dependencies a directory has on other directories -# in a graphical way. The dependency relations are determined by the #include -# relations between the files in the directories. - -DIRECTORY_GRAPH = YES - -# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images -# generated by dot. Possible values are png, svg, gif or svg. -# If left blank png will be used. - -DOT_IMAGE_FORMAT = png - -# The tag DOT_PATH can be used to specify the path where the dot tool can be -# found. If left blank, it is assumed the dot tool can be found in the path. - -DOT_PATH = - -# The DOTFILE_DIRS tag can be used to specify one or more directories that -# contain dot files that are included in the documentation (see the -# \dotfile command). - -DOTFILE_DIRS = - -# The MSCFILE_DIRS tag can be used to specify one or more directories that -# contain msc files that are included in the documentation (see the -# \mscfile command). - -MSCFILE_DIRS = - -# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of -# nodes that will be shown in the graph. If the number of nodes in a graph -# becomes larger than this value, doxygen will truncate the graph, which is -# visualized by representing a node as a red box. Note that doxygen if the -# number of direct children of the root node in a graph is already larger than -# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note -# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. - -DOT_GRAPH_MAX_NODES = 50 - -# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the -# graphs generated by dot. A depth value of 3 means that only nodes reachable -# from the root by following a path via at most 3 edges will be shown. Nodes -# that lay further from the root node will be omitted. Note that setting this -# option to 1 or 2 may greatly reduce the computation time needed for large -# code bases. Also note that the size of a graph can be further restricted by -# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. - -MAX_DOT_GRAPH_DEPTH = 0 - -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not -# seem to support this out of the box. Warning: Depending on the platform used, -# enabling this option may lead to badly anti-aliased labels on the edges of -# a graph (i.e. they become hard to read). - -DOT_TRANSPARENT = NO - -# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output -# files in one run (i.e. multiple -o and -T options on the command line). This -# makes dot run faster, but since only newer versions of dot (>1.8.10) -# support this, this feature is disabled by default. - -DOT_MULTI_TARGETS = YES - -# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will -# generate a legend page explaining the meaning of the various boxes and -# arrows in the dot generated graphs. - -GENERATE_LEGEND = YES - -# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will -# remove the intermediate dot files that are used to generate -# the various graphs. - -DOT_CLEANUP = YES diff --git a/src/spatialite/INSTALL b/src/spatialite/INSTALL deleted file mode 100644 index 50dbe43..0000000 --- a/src/spatialite/INSTALL +++ /dev/null @@ -1,183 +0,0 @@ -Basic Installation -================== - - These are generic installation instructions. - - The `configure' shell script attempts to guess correct values for -various system-dependent variables used during compilation. It uses -those values to create a `Makefile' in each directory of the package. -It may also create one or more `.h' files containing system-dependent -definitions. Finally, it creates a shell script `config.status' that -you can run in the future to recreate the current configuration, a file -`config.cache' that saves the results of its tests to speed up -reconfiguring, and a file `config.log' containing compiler output -(useful mainly for debugging `configure'). - - If you need to do unusual things to compile the package, please try -to figure out how `configure' could check whether to do them, and mail -diffs or instructions to the address given in the `README' so they can -be considered for the next release. If at some point `config.cache' -contains results you don't want to keep, you may remove or edit it. - - The file `configure.in' is used to create `configure' by a program -called `autoconf'. You only need `configure.in' if you want to change -it or regenerate `configure' using a newer version of `autoconf'. - -The simplest way to compile this package is: - - 1. `cd' to the directory containing the package's source code and type - `./configure' to configure the package for your system. If you're - using `csh' on an old version of System V, you might need to type - `sh ./configure' instead to prevent `csh' from trying to execute - `configure' itself. - - Running `configure' takes awhile. While running, it prints some - messages telling which features it is checking for. - - 2. Type `make' to compile the package. - - 3. Optionally, type `make check' to run any self-tests that come with - the package. - - 4. Type `make install' to install the programs and any data files and - documentation. - - 5. You can remove the program binaries and object files from the - source code directory by typing `make clean'. To also remove the - files that `configure' created (so you can compile the package for - a different kind of computer), type `make distclean'. There is - also a `make maintainer-clean' target, but that is intended mainly - for the package's developers. If you use it, you may have to get - all sorts of other programs in order to regenerate files that came - with the distribution. - -Compilers and Options -===================== - - Some systems require unusual options for compilation or linking that -the `configure' script does not know about. You can give `configure' -initial values for variables by setting them in the environment. Using -a Bourne-compatible shell, you can do that on the command line like -this: - CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure - -Or on systems that have the `env' program, you can do it like this: - env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure - -Compiling For Multiple Architectures -==================================== - - You can compile the package for more than one kind of computer at the -same time, by placing the object files for each architecture in their -own directory. To do this, you must use a version of `make' that -supports the `VPATH' variable, such as GNU `make'. `cd' to the -directory where you want the object files and executables to go and run -the `configure' script. `configure' automatically checks for the -source code in the directory that `configure' is in and in `..'. - - If you have to use a `make' that does not supports the `VPATH' -variable, you have to compile the package for one architecture at a time -in the source code directory. After you have installed the package for -one architecture, use `make distclean' before reconfiguring for another -architecture. - -Installation Names -================== - - By default, `make install' will install the package's files in -`/usr/local/bin', `/usr/local/man', etc. You can specify an -installation prefix other than `/usr/local' by giving `configure' the -option `--prefix=PATH'. - - You can specify separate installation prefixes for -architecture-specific files and architecture-independent files. If you -give `configure' the option `--exec-prefix=PATH', the package will use -PATH as the prefix for installing programs and libraries. -Documentation and other data files will still use the regular prefix. - - In addition, if you use an unusual directory layout you can give -options like `--bindir=PATH' to specify different values for particular -kinds of files. Run `configure --help' for a list of the directories -you can set and what kinds of files go in them. - - If the package supports it, you can cause programs to be installed -with an extra prefix or suffix on their names by giving `configure' the -option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. - -Optional Features -================= - - Some packages pay attention to `--enable-FEATURE' options to -`configure', where FEATURE indicates an optional part of the package. -They may also pay attention to `--with-PACKAGE' options, where PACKAGE -is something like `gnu-as' or `x' (for the X Window System). The -`README' should mention any `--enable-' and `--with-' options that the -package recognizes. - - For packages that use the X Window System, `configure' can usually -find the X include and library files automatically, but if it doesn't, -you can use the `configure' options `--x-includes=DIR' and -`--x-libraries=DIR' to specify their locations. - -Specifying the System Type -========================== - - There may be some features `configure' can not figure out -automatically, but needs to determine by the type of host the package -will run on. Usually `configure' can figure that out, but if it prints -a message saying it can not guess the host type, give it the -`--host=TYPE' option. TYPE can either be a short name for the system -type, such as `sun4', or a canonical name with three fields: - CPU-COMPANY-SYSTEM - -See the file `config.sub' for the possible values of each field. If -`config.sub' isn't included in this package, then this package doesn't -need to know the host type. - - If you are building compiler tools for cross-compiling, you can also -use the `--target=TYPE' option to select the type of system they will -produce code for and the `--build=TYPE' option to select the type of -system on which you are compiling the package. - -Sharing Defaults -================ - - If you want to set default values for `configure' scripts to share, -you can create a site shell script called `config.site' that gives -default values for variables like `CC', `cache_file', and `prefix'. -`configure' looks for `PREFIX/share/config.site' if it exists, then -`PREFIX/etc/config.site' if it exists. Or, you can set the -`CONFIG_SITE' environment variable to the location of the site script. -A warning: not all `configure' scripts look for a site script. - -Operation Controls -================== - - `configure' recognizes the following options to control how it -operates. - -`--cache-file=FILE' - Use and save the results of the tests in FILE instead of - `./config.cache'. Set FILE to `/dev/null' to disable caching, for - debugging `configure'. - -`--help' - Print a summary of the options to `configure', and exit. - -`--quiet' -`--silent' -`-q' - Do not print messages saying which checks are being made. To - suppress all normal output, redirect it to `/dev/null' (any error - messages will still be shown). - -`--srcdir=DIR' - Look for the package's source code in directory DIR. Usually - `configure' can determine that directory automatically. - -`--version' - Print the version of Autoconf used to generate the `configure' - script, and exit. - -`configure' also accepts some other, not widely useful, options. - diff --git a/src/spatialite/Makefile.am b/src/spatialite/Makefile.am deleted file mode 100644 index be31752..0000000 --- a/src/spatialite/Makefile.am +++ /dev/null @@ -1,20 +0,0 @@ -ACLOCAL_AMFLAGS = -I m4 - -AUTOMAKE_OPTIONS = dist-zip - -EXTRA_DIST = makefile.vc nmake.opt Android.mk mainpage.doxy README.coverage \ - spatialite-sql-latest.html config-msvc.h - -SUBDIRS = src test examples - -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = spatialite.pc - -coverage-init: - lcov --directory src --capture --initial --output-file libspatialite_cov.info - -coverage:: - lcov --directory src --output-file libspatialite_cov.info --capture - genhtml -o covresults libspatialite_cov.info - -MOSTLYCLEANFILES = libspatialite_cov.info diff --git a/src/spatialite/Makefile.in b/src/spatialite/Makefile.in deleted file mode 100644 index 8c31c94..0000000 --- a/src/spatialite/Makefile.in +++ /dev/null @@ -1,846 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = . -DIST_COMMON = README $(am__configure_deps) $(srcdir)/Doxyfile.in \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/config.h.in $(srcdir)/spatialite.pc.in \ - $(top_srcdir)/configure AUTHORS COPYING INSTALL config.guess \ - config.sub depcomp install-sh ltmain.sh missing -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ - configure.lineno config.status.lineno -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = config.h -CONFIG_CLEAN_FILES = Doxyfile spatialite.pc -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(pkgconfigdir)" -DATA = $(pkgconfig_DATA) -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir dist dist-all distcheck -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -distdir = $(PACKAGE)-$(VERSION) -top_distdir = $(distdir) -am__remove_distdir = \ - if test -d "$(distdir)"; then \ - find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -rf "$(distdir)" \ - || { sleep 5 && rm -rf "$(distdir)"; }; \ - else :; fi -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -DIST_ARCHIVES = $(distdir).tar.gz $(distdir).zip -GZIP_ENV = --best -distuninstallcheck_listfiles = find . -type f -print -am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ - | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' -distcleancheck_listfiles = find . -type f -print -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -ACLOCAL_AMFLAGS = -I m4 -AUTOMAKE_OPTIONS = dist-zip -EXTRA_DIST = makefile.vc nmake.opt Android.mk mainpage.doxy README.coverage \ - spatialite-sql-latest.html config-msvc.h - -SUBDIRS = src test examples -pkgconfigdir = $(libdir)/pkgconfig -pkgconfig_DATA = spatialite.pc -MOSTLYCLEANFILES = libspatialite_cov.info -all: config.h - $(MAKE) $(AM_MAKEFLAGS) all-recursive - -.SUFFIXES: -am--refresh: Makefile - @: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ - $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ - && exit 0; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - echo ' $(SHELL) ./config.status'; \ - $(SHELL) ./config.status;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - $(SHELL) ./config.status --recheck - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - $(am__cd) $(srcdir) && $(AUTOCONF) -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) -$(am__aclocal_m4_deps): - -config.h: stamp-h1 - @if test ! -f $@; then rm -f stamp-h1; else :; fi - @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi - -stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status - @rm -f stamp-h1 - cd $(top_builddir) && $(SHELL) ./config.status config.h -$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) - rm -f stamp-h1 - touch $@ - -distclean-hdr: - -rm -f config.h stamp-h1 -Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in - cd $(top_builddir) && $(SHELL) ./config.status $@ -spatialite.pc: $(top_builddir)/config.status $(srcdir)/spatialite.pc.in - cd $(top_builddir) && $(SHELL) ./config.status $@ - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -distclean-libtool: - -rm -f libtool config.lt -install-pkgconfigDATA: $(pkgconfig_DATA) - @$(NORMAL_INSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ - fi; \ - for p in $$list; do \ - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ - echo "$$d$$p"; \ - done | $(am__base_list) | \ - while read files; do \ - echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ - $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ - done - -uninstall-pkgconfigDATA: - @$(NORMAL_UNINSTALL) - @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) config.h.in $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - $(am__remove_distdir) - test -d "$(distdir)" || mkdir "$(distdir)" - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done - -test -n "$(am__skip_mode_fix)" \ - || find "$(distdir)" -type d ! -perm -755 \ - -exec chmod u+rwx,go+rx {} \; -o \ - ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ - ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ - || chmod -R a+r "$(distdir)" -dist-gzip: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) - -dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 - $(am__remove_distdir) - -dist-lzip: distdir - tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz - $(am__remove_distdir) - -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) - -dist-xz: distdir - tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz - $(am__remove_distdir) - -dist-tarZ: distdir - tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) - -dist-shar: distdir - shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) -dist-zip: distdir - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - -rm -f $(distdir).zip - zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) - -# This target untars the dist file and tries a VPATH configuration. Then -# it guarantees that the distribution is self-contained by making another -# tarfile. -distcheck: dist - case '$(DIST_ARCHIVES)' in \ - *.tar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ - *.tar.bz2*) \ - bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ - *.tar.lz*) \ - lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ - *.tar.xz*) \ - xz -dc $(distdir).tar.xz | $(am__untar) ;;\ - *.tar.Z*) \ - uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ - *.shar.gz*) \ - GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ - *.zip*) \ - unzip $(distdir).zip ;;\ - esac - chmod -R a-w $(distdir); chmod u+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst - chmod a-w $(distdir) - test -d $(distdir)/_build || exit 0; \ - dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ - && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ - && am__cwd=`pwd` \ - && $(am__cd) $(distdir)/_build \ - && ../configure --srcdir=.. --prefix="$$dc_install_base" \ - $(AM_DISTCHECK_CONFIGURE_FLAGS) \ - $(DISTCHECK_CONFIGURE_FLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) \ - && $(MAKE) $(AM_MAKEFLAGS) dvi \ - && $(MAKE) $(AM_MAKEFLAGS) check \ - && $(MAKE) $(AM_MAKEFLAGS) install \ - && $(MAKE) $(AM_MAKEFLAGS) installcheck \ - && $(MAKE) $(AM_MAKEFLAGS) uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ - distuninstallcheck \ - && chmod -R a-w "$$dc_install_base" \ - && ({ \ - (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ - && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ - distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ - } || { rm -rf "$$dc_destdir"; exit 1; }) \ - && rm -rf "$$dc_destdir" \ - && $(MAKE) $(AM_MAKEFLAGS) dist \ - && rm -rf $(DIST_ARCHIVES) \ - && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ - && cd "$$am__cwd" \ - || exit 1 - $(am__remove_distdir) - @(echo "$(distdir) archives ready for distribution: "; \ - list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ - sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' -distuninstallcheck: - @test -n '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: trying to run $@ with an empty' \ - '$$(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - $(am__cd) '$(distuninstallcheck_dir)' || { \ - echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ - exit 1; \ - }; \ - test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left after uninstall:" ; \ - if test -n "$(DESTDIR)"; then \ - echo " (check DESTDIR support)"; \ - fi ; \ - $(distuninstallcheck_listfiles) ; \ - exit 1; } >&2 -distcleancheck: distclean - @if test '$(srcdir)' = . ; then \ - echo "ERROR: distcleancheck can only run from a VPATH build" ; \ - exit 1 ; \ - fi - @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ - || { echo "ERROR: files left in build directory after distclean:" ; \ - $(distcleancheck_listfiles) ; \ - exit 1; } >&2 -check-am: all-am -check: check-recursive -all-am: Makefile $(DATA) config.h -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-hdr \ - distclean-libtool distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: install-pkgconfigDATA - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f $(am__CONFIG_DISTCLEAN_FILES) - -rm -rf $(top_srcdir)/autom4te.cache - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-pkgconfigDATA - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all \ - ctags-recursive install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean clean-generic \ - clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \ - dist-gzip dist-lzip dist-lzma dist-shar dist-tarZ dist-xz \ - dist-zip distcheck distclean distclean-generic distclean-hdr \ - distclean-libtool distclean-tags distcleancheck distdir \ - distuninstallcheck dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-pkgconfigDATA install-ps \ - install-ps-am install-strip installcheck installcheck-am \ - installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am uninstall-pkgconfigDATA - - -coverage-init: - lcov --directory src --capture --initial --output-file libspatialite_cov.info - -coverage:: - lcov --directory src --output-file libspatialite_cov.info --capture - genhtml -o covresults libspatialite_cov.info - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/README b/src/spatialite/README deleted file mode 100644 index faa73ca..0000000 --- a/src/spatialite/README +++ /dev/null @@ -1,173 +0,0 @@ - --------------------- libspatialite ------------------------ - -PLEASE read the following information. - -1 - Installation -2 - Required dependencies -3 - Build notes - 3.1: Building on Linux - 3.2: Building on Mac OS X - 3.3: Building on Windows - 3.3.1: using MinGW / MSYS - 3.3.2: using Visual Studio .NET - -===================================================================== - -1. Installation: -================= - -The default destination path prefix for installed files is /usr/local. -Results from the installation script will be placed into subdirectories -include and lib. If this default path prefix is appropriate, then execute: - - ./configure - -If another path prefix is required, then execute: - - ./configure --prefix=/my/path - -In either case, the directory of the prefix path must exist and be -writable by the installer. - -After executing configure, execute: - - make - make install - -Or even better, you can *strip* any executable binary, in order -to eliminate any debugging symbol, and thus widely reducing -their size: - - make install-strip - -2. Required dependencies: -========================= - -The main external dependencies needed in order to build 'libspatialite' -are: - - SQLite 3 (http://www.sqlite.org) - This is a hard dependency - you can't build libspatialite without it. SQLite - version 3.7.3 or later is strongly preferred - if you have an earlier - version then you will need to pass --enable-geocallbacks=no to the - ./configure script. - - - PROJ.4 (http://trac.osgeo.org/proj/) - This is strongly recommended, unless you have a particular purpose in mind - for your libspatialite build, and know that you won't need it. It is usually - available as a package, and libspatialite is pretty flexible about versions. - - - GEOS (http://trac.osgeo.org/geos/) - This is strongly recommended, unless you have a particular purpose in mind - for your libspatialite build, and know that you won't need it. It is usually - available as a package, but libspatialite will have more capability if you - use version 3.3.0 or later so make sure that the package is recent enough. - Use --enable-geosadvanced=no argument to the ./configure script if you want - to use an earlier version of GEOS. - - - FreeXL (http://www.gaia-gis.it/FreeXL/) - This is recommended if you want to be able to import data from Microsoft - Excel format (.xls suffix) files. If you do not wish to use it, you will - need to pass --enable-freexl=no to the ./configure script. Version 0.0.4 - or later is required. - -Note that you need development code (e.g. -dev packages on Debian Linux and -derivatives such as Ubuntu, or -devel packages on most other Linux -distributions). - - -ICONV [Windows] ---------------- -When building on Windows, then you also need to provide iconv to ensure that -appropriate character set conversions are available. This dependency is not -usually an issue when building on Linux or Mac OS X, because these systems -provide iconv as a standard component. - -For Windows the preferred solution is to download and install the pre-built -iconv binaries and related files from: -http://gnuwin32.sourceforge.net/packages/libiconv.htm - -3 - Build notes -=============== - -3.1: Building on Linux and similar systems ------------------------------------------- - -Building libspatialite on Linux and similar systems such as BSD or other Unix -variants does not require any special settings. If you have unpacked the sources -as ./libspatialite-3.1.0, then the required steps are: - -# cd libspatialite-3.1.0 -# ./configure -# make -# sudo make install -# or (in order to save some disk space) -# sudo make install-strip - -3.2: Building on Mac OS X -------------------------- - -Building 'libspatialite' on Mac OS X very similar to Linux. You simply have to -set explicitly some environment variables. If you have unpacked the sources as -./libspatialite-3.1.0, then the required steps are: - -# cd libspatialite-3.1.0 -# export "CFLAGS=-I/opt/local/include" -# export "LDFLAGS=-I/opt/local/lib" -# ./configure -# make -# sudo make install -# or (in order to save some disk space) -# sudo make install-strip - -IMPORTANT NOTICE: this will build an executable for your specific platform. -That is, when building on a PPC Mac, the resulting binary will be be for PPC. -Similarly, when building on Intel Mac, resulting binary will be for Intel. - -3.3: Building on Windows ------------------------- - -On Windows systems you can choose using two different compilers: -- MinGW / MSYS - This represents a smart porting of a minimalistic Linux-like - development toolkit -- Microsoft Visual Studio .NET - This is the standard platform development toolkit from Microsoft. - -3.3.1: using MinGW / MSYS -------------------------- - -We assume that you have already installed the MinGW compiler and the MSYS shell. -Building 'libspatialite' under Windows is then more or less like building -on any other UNIX-like system. If you have unpacked the sources as -C:\libspatialite-3.1.0, then the required steps are: - -$ cd c:/libspatialite-3.1.0 -$ export "CFLAGS=-I/usr/local/include" -$ export "LDFLAGS=-L/usr/local/lib" -$ ./configure --target=mingw32 -$ make -$ make install-strip -$ or (in order to save some disk space) -$ make install-strip - - -3.3.2: using Microsoft Visual Studio .NET ------------------------------------------ - -We assume that you have already installed Visual Studio enabling the command -line tools. Note that you are expected to the Visual Studio command prompt shell -rather than the GUI build environment. If you have unpacked the sources as -C:\libspatialite-3.1.0, then the required steps are: - -> cd c:\libspatialite-3.1.0 -> nmake /f makefile.vc -> nmake /f makefile.vc install - -Please note: standard definitions in 'makefile.vc' assumes: -- enabling PROJ -- disabling GEOS - -If you want to alter the default behaviour then make modifications in -'makefile.vc'. Also note that 'libspatialite-geos.def' contains those external -symbols to be exported from the DLL when you build GEOS. - diff --git a/src/spatialite/README.coverage b/src/spatialite/README.coverage deleted file mode 100644 index 83a8ebb..0000000 --- a/src/spatialite/README.coverage +++ /dev/null @@ -1,12 +0,0 @@ -Coverage testing ----------------- -You need to have gcov and lcov installed. - -Process: -1. Use --enable-gcov=yes with configure script -2. Clean and rebuild. -3. make coverage-init -4. make check (or whatever other tests you want to check coverage for) -5. make coverage -6. check summary on command line output. -7. review detailed coverage results in covresults/index.html diff --git a/src/spatialite/aclocal.m4 b/src/spatialite/aclocal.m4 deleted file mode 100644 index 74f17ca..0000000 --- a/src/spatialite/aclocal.m4 +++ /dev/null @@ -1,1028 +0,0 @@ -# generated automatically by aclocal 1.11.6 -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, -# Inc. -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, -[m4_warning([this file was generated for autoconf 2.68. -You have another version of autoconf. It may work, but is not guaranteed to. -If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) - -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008, 2011 Free Software -# Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_AUTOMAKE_VERSION(VERSION) -# ---------------------------- -# Automake X.Y traces this macro to ensure aclocal.m4 has been -# generated from the m4 files accompanying Automake X.Y. -# (This private macro should not be called outside this file.) -AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.11' -dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to -dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.6], [], - [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl -]) - -# _AM_AUTOCONF_VERSION(VERSION) -# ----------------------------- -# aclocal traces this macro to find the Autoconf version. -# This is a private macro too. Using m4_define simplifies -# the logic in aclocal, which can simply ignore this definition. -m4_define([_AM_AUTOCONF_VERSION], []) - -# AM_SET_CURRENT_AUTOMAKE_VERSION -# ------------------------------- -# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. -# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. -AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.6])dnl -m4_ifndef([AC_AUTOCONF_VERSION], - [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) - -# AM_AUX_DIR_EXPAND -*- Autoconf -*- - -# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. -# -# Of course, Automake must honor this variable whenever it calls a -# tool from the auxiliary directory. The problem is that $srcdir (and -# therefore $ac_aux_dir as well) can be either absolute or relative, -# depending on how configure is run. This is pretty annoying, since -# it makes $ac_aux_dir quite unusable in subdirectories: in the top -# source directory, any form will work fine, but in subdirectories a -# relative path needs to be adjusted first. -# -# $ac_aux_dir/missing -# fails when called from a subdirectory if $ac_aux_dir is relative -# $top_srcdir/$ac_aux_dir/missing -# fails if $ac_aux_dir is absolute, -# fails when called from a subdirectory in a VPATH build with -# a relative $ac_aux_dir -# -# The reason of the latter failure is that $top_srcdir and $ac_aux_dir -# are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you -# start a VPATH build or use an absolute $srcdir. -# -# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, -# iff we strip the leading $srcdir from $ac_aux_dir. That would be: -# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` -# and then we would define $MISSING as -# MISSING="\${SHELL} $am_aux_dir/missing" -# This will work as long as MISSING is not called from configure, because -# unfortunately $(top_srcdir) has no meaning in configure. -# However there are other variables, like CC, which are often used in -# configure, and could therefore not use this "fixed" $ac_aux_dir. -# -# Another solution, used here, is to always expand $ac_aux_dir to an -# absolute PATH. The drawback is that using absolute paths prevent a -# configured tree to be moved without reconfiguration. - -AC_DEFUN([AM_AUX_DIR_EXPAND], -[dnl Rely on autoconf to set up CDPATH properly. -AC_PREREQ([2.50])dnl -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` -]) - -# AM_CONDITIONAL -*- Autoconf -*- - -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 9 - -# AM_CONDITIONAL(NAME, SHELL-CONDITION) -# ------------------------------------- -# Define a conditional. -AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl -AC_SUBST([$1_TRUE])dnl -AC_SUBST([$1_FALSE])dnl -_AM_SUBST_NOTMAKE([$1_TRUE])dnl -_AM_SUBST_NOTMAKE([$1_FALSE])dnl -m4_define([_AM_COND_VALUE_$1], [$2])dnl -if $2; then - $1_TRUE= - $1_FALSE='#' -else - $1_TRUE='#' - $1_FALSE= -fi -AC_CONFIG_COMMANDS_PRE( -[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then - AC_MSG_ERROR([[conditional "$1" was never defined. -Usually this means the macro was only invoked conditionally.]]) -fi])]) - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009, -# 2010, 2011 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 12 - -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be -# written in clear, in which case automake, when reading aclocal.m4, -# will think it sees a *use*, and therefore will trigger all it's -# C support machinery. Also note that it means that autoscan, seeing -# CC etc. in the Makefile, will ask for an AC_PROG_CC use... - - -# _AM_DEPENDENCIES(NAME) -# ---------------------- -# See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". -# We try a few techniques and use that to set a single cache variable. -# -# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was -# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular -# dependency, and given that the user is not expected to run this macro, -# just rely on AC_PROG_CC. -AC_DEFUN([_AM_DEPENDENCIES], -[AC_REQUIRE([AM_SET_DEPDIR])dnl -AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl -AC_REQUIRE([AM_MAKE_INCLUDE])dnl -AC_REQUIRE([AM_DEP_TRACK])dnl - -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) - -AC_CACHE_CHECK([dependency style of $depcc], - [am_cv_$1_dependencies_compiler_type], -[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_$1_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` - fi - am__universal=false - m4_case([$1], [CC], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac], - [CXX], - [case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac]) - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_$1_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_$1_dependencies_compiler_type=none -fi -]) -AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) -AM_CONDITIONAL([am__fastdep$1], [ - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) -]) - - -# AM_SET_DEPDIR -# ------------- -# Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES -AC_DEFUN([AM_SET_DEPDIR], -[AC_REQUIRE([AM_SET_LEADING_DOT])dnl -AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl -]) - - -# AM_DEP_TRACK -# ------------ -AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi -AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) -AC_SUBST([AMDEPBACKSLASH])dnl -_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl -AC_SUBST([am__nodep])dnl -_AM_SUBST_NOTMAKE([am__nodep])dnl -]) - -# Generate code to set up dependency tracking. -*- Autoconf -*- - -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -#serial 5 - -# _AM_OUTPUT_DEPENDENCY_COMMANDS -# ------------------------------ -AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], -[{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`AS_DIRNAME("$mf")` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`AS_DIRNAME(["$file"])` - AS_MKDIR_P([$dirpart/$fdir]) - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} -])# _AM_OUTPUT_DEPENDENCY_COMMANDS - - -# AM_OUTPUT_DEPENDENCY_COMMANDS -# ----------------------------- -# This macro should only be invoked once -- use via AC_REQUIRE. -# -# This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will -# need in order to bootstrap the dependency handling code. -AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], -[AC_CONFIG_COMMANDS([depfiles], - [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], - [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) -]) - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 8 - -# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS. -AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)]) - -# Do all the work for Automake. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 16 - -# This macro actually does too much. Some checks are only needed if -# your package does certain things. But this isn't really a big deal. - -# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) -# AM_INIT_AUTOMAKE([OPTIONS]) -# ----------------------------------------------- -# The call with PACKAGE and VERSION arguments is the old style -# call (pre autoconf-2.50), which is being phased out. PACKAGE -# and VERSION should now be passed to AC_INIT and removed from -# the call to AM_INIT_AUTOMAKE. -# We support both call styles for the transition. After -# the next Automake release, Autoconf can make the AC_INIT -# arguments mandatory, and then we can depend on a new Autoconf -# release and drop the old call support. -AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.62])dnl -dnl Autoconf wants to disallow AM_ names. We explicitly allow -dnl the ones we care about. -m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl -AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl -AC_REQUIRE([AC_PROG_INSTALL])dnl -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi -AC_SUBST([CYGPATH_W]) - -# Define the identity of the package. -dnl Distinguish between old-style and new-style calls. -m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl - AC_SUBST([PACKAGE], [$1])dnl - AC_SUBST([VERSION], [$2])], -[_AM_SET_OPTIONS([$1])dnl -dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, - [m4_fatal([AC_INIT should be called with package and version arguments])])dnl - AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl - AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl - -_AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl - -# Some tools Automake needs. -AC_REQUIRE([AM_SANITY_CHECK])dnl -AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) -AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([AC_PROG_MAKE_SET])dnl -AC_REQUIRE([AM_SET_LEADING_DOT])dnl -_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], - [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], - [_AM_PROG_TAR([v7])])]) -_AM_IF_OPTION([no-dependencies],, -[AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl -AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl -]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. -AC_CONFIG_COMMANDS_PRE(dnl -[m4_provide_if([_AM_COMPILER_EXEEXT], - [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) - -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not -dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further -dnl mangled by Autoconf and run in a shell conditional statement. -m4_define([_AC_COMPILER_EXEEXT], -m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - - -# When config.status generates a header, we must update the stamp-h file. -# This file resides in the same directory as the config header -# that is generated. The stamp files are numbered to have different names. - -# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the -# loop where config.status creates the headers, so we can generate -# our stamp files there. -AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], -[# Compute $1's index in $config_headers. -_am_arg=$1 -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) - -# Copyright (C) 2001, 2003, 2005, 2008, 2011 Free Software Foundation, -# Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_PROG_INSTALL_SH -# ------------------ -# Define $install_sh. -AC_DEFUN([AM_PROG_INSTALL_SH], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi -AC_SUBST(install_sh)]) - -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# Check whether the underlying file-system supports filenames -# with a leading dot. For instance MS-DOS doesn't. -AC_DEFUN([AM_SET_LEADING_DOT], -[rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null -AC_SUBST([am__leading_dot])]) - -# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- -# From Jim Meyering - -# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008, -# 2011 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# AM_MAINTAINER_MODE([DEFAULT-MODE]) -# ---------------------------------- -# Control maintainer-specific portions of Makefiles. -# Default is to disable them, unless `enable' is passed literally. -# For symmetry, `disable' may be passed as well. Anyway, the user -# can override the default with the --enable/--disable switch. -AC_DEFUN([AM_MAINTAINER_MODE], -[m4_case(m4_default([$1], [disable]), - [enable], [m4_define([am_maintainer_other], [disable])], - [disable], [m4_define([am_maintainer_other], [enable])], - [m4_define([am_maintainer_other], [enable]) - m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) -AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) - dnl maintainer-mode's default is 'disable' unless 'enable' is passed - AC_ARG_ENABLE([maintainer-mode], -[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - [USE_MAINTAINER_MODE=$enableval], - [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) - AC_MSG_RESULT([$USE_MAINTAINER_MODE]) - AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) - MAINT=$MAINTAINER_MODE_TRUE - AC_SUBST([MAINT])dnl -] -) - -AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) - -# Check to see how 'make' treats includes. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 4 - -# AM_MAKE_INCLUDE() -# ----------------- -# Check to see how make treats includes. -AC_DEFUN([AM_MAKE_INCLUDE], -[am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -AC_MSG_CHECKING([for style of include used by $am_make]) -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi -AC_SUBST([am__include]) -AC_SUBST([am__quote]) -AC_MSG_RESULT([$_am_result]) -rm -f confinc confmf -]) - -# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- - -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 6 - -# AM_MISSING_PROG(NAME, PROGRAM) -# ------------------------------ -AC_DEFUN([AM_MISSING_PROG], -[AC_REQUIRE([AM_MISSING_HAS_RUN]) -$1=${$1-"${am_missing_run}$2"} -AC_SUBST($1)]) - - -# AM_MISSING_HAS_RUN -# ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. -AC_DEFUN([AM_MISSING_HAS_RUN], -[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([missing])dnl -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) -fi -]) - -# Copyright (C) 2003, 2004, 2005, 2006, 2011 Free Software Foundation, -# Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - -# Helper functions for option handling. -*- Autoconf -*- - -# Copyright (C) 2001, 2002, 2003, 2005, 2008, 2010 Free Software -# Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# _AM_MANGLE_OPTION(NAME) -# ----------------------- -AC_DEFUN([_AM_MANGLE_OPTION], -[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) - -# _AM_SET_OPTION(NAME) -# -------------------- -# Set option NAME. Presently that only means defining a flag for this option. -AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) - -# _AM_SET_OPTIONS(OPTIONS) -# ------------------------ -# OPTIONS is a space-separated list of Automake options. -AC_DEFUN([_AM_SET_OPTIONS], -[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) - -# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) -# ------------------------------------------- -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -AC_DEFUN([_AM_IF_OPTION], -[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) - -# Check to make sure that the build environment is sane. -*- Autoconf -*- - -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 5 - -# AM_SANITY_CHECK -# --------------- -AC_DEFUN([AM_SANITY_CHECK], -[AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[[\\\"\#\$\&\'\`$am_lf]]*) - AC_MSG_ERROR([unsafe absolute working directory name]);; -esac -case $srcdir in - *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - - test "$[2]" = conftest.file - ) -then - # Ok. - : -else - AC_MSG_ERROR([newly created file is older than distributed files! -Check your system clock]) -fi -AC_MSG_RESULT(yes)]) - -# Copyright (C) 2001, 2003, 2005, 2011 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 1 - -# AM_PROG_INSTALL_STRIP -# --------------------- -# One issue with vendor `install' (even GNU) is that you can't -# specify the program used to strip binaries. This is especially -# annoying in cross-compiling environments, where the build's strip -# is unlikely to handle the host's binaries. -# Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize -# STRIPPROG with the value of the STRIP variable (set by the user). -AC_DEFUN([AM_PROG_INSTALL_STRIP], -[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. -if test "$cross_compiling" != no; then - AC_CHECK_TOOL([STRIP], [strip], :) -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" -AC_SUBST([INSTALL_STRIP_PROGRAM])]) - -# Copyright (C) 2006, 2008, 2010 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 3 - -# _AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- -# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. -# This macro is traced by Automake. -AC_DEFUN([_AM_SUBST_NOTMAKE]) - -# AM_SUBST_NOTMAKE(VARIABLE) -# -------------------------- -# Public sister of _AM_SUBST_NOTMAKE. -AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) - -# Check how to create a tarball. -*- Autoconf -*- - -# Copyright (C) 2004, 2005, 2012 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 2 - -# _AM_PROG_TAR(FORMAT) -# -------------------- -# Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. -# -# Substitute a variable $(am__tar) that is a command -# writing to stdout a FORMAT-tarball containing the directory -# $tardir. -# tardir=directory && $(am__tar) > result.tar -# -# Substitute a variable $(am__untar) that extract such -# a tarball read from stdin. -# $(am__untar) < result.tar -AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AC_SUBST([AMTAR], ['$${TAR-tar}']) -m4_if([$1], [v7], - [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. -_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break - - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) - rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir - -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) -AC_SUBST([am__tar]) -AC_SUBST([am__untar]) -]) # _AM_PROG_TAR - -m4_include([m4/libtool.m4]) -m4_include([m4/ltoptions.m4]) -m4_include([m4/ltsugar.m4]) -m4_include([m4/ltversion.m4]) -m4_include([m4/lt~obsolete.m4]) diff --git a/src/spatialite/config-msvc.h b/src/spatialite/config-msvc.h deleted file mode 100644 index 740f31c..0000000 --- a/src/spatialite/config-msvc.h +++ /dev/null @@ -1,222 +0,0 @@ -/* config.h. Generated from config.h.in by configure. */ -/* config.h.in. Generated from configure.ac by autoheader. */ -/* -/ Sandro: manually adjusted so to support the MSVC compiler -/ using the OsGeo4W libraries -*/ - -/* Should be defined in order to enable LWGEOM support. */ -#undef ENABLE_LWGEOM - -/* Should be defined in order to enable GEOS_ADVANCED support. */ -#define GEOS_ADVANCED 1 - -/* Should be defined in order to enable GEOS_TRUNK experimental support. */ -#undef GEOS_TRUNK - -/* Define to 1 if you have the header file. */ -/* #undef HAVE_DLFCN_H */ - -/* Define to 1 if you have the header file. */ -#define HAVE_FCNTL_H 1 - -/* Define to 1 if you have the `fdatasync' function. */ -/* #undef HAVE_FDATASYNC */ - -/* Define to 1 if you have the header file. */ -#define HAVE_FLOAT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_FREEXL_H 1 - -/* Define to 1 if you have the `ftruncate' function. */ -#define HAVE_FTRUNCATE 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_GEOS_C_H 1 - -/* Define to 1 if you have the `getcwd' function. */ -#define HAVE_GETCWD 1 - -/* Define to 1 if you have the `gettimeofday' function. */ -#define HAVE_GETTIMEOFDAY 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_ICONV_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_INTTYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_LIBLWGEOM_H 1 - -/* Define to 1 if you have the `sqlite3' library (-lsqlite3). */ -#define HAVE_LIBSQLITE3 1 - -/* Define to 1 if you have the `localtime_r' function. */ -/* #undef HAVE_LOCALTIME_R */ - -/* Define to 1 if `lstat' has the bug that it succeeds when given the - zero-length file name argument. */ -#define HAVE_LSTAT_EMPTY_STRING_BUG 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_MATH_H 1 - -/* Define to 1 if you have the `memmove' function. */ -#define HAVE_MEMMOVE 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_MEMORY_H 1 - -/* Define to 1 if you have the `memset' function. */ -#define HAVE_MEMSET 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_PROJ_API_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SQLITE3EXT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SQLITE3_H 1 - -/* Define to 1 if you have the `sqrt' function. */ -#define HAVE_SQRT 1 - -/* Define to 1 if `stat' has the bug that it succeeds when given the - zero-length file name argument. */ -/* #undef HAVE_STAT_EMPTY_STRING_BUG */ - -/* Define to 1 if you have the header file. */ -#define HAVE_STDDEF_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDINT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDIO_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STDLIB_H 1 - -/* Define to 1 if you have the `strcasecmp' function. */ -#define HAVE_STRCASECMP 1 - -/* Define to 1 if you have the `strerror' function. */ -#define HAVE_STRERROR 1 - -/* Define to 1 if you have the `strftime' function. */ -#define HAVE_STRFTIME 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRINGS_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_STRING_H 1 - -/* Define to 1 if you have the `strncasecmp' function. */ -#define HAVE_STRNCASECMP 1 - -/* Define to 1 if you have the `strstr' function. */ -#define HAVE_STRSTR 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_STAT_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TIME_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_SYS_TYPES_H 1 - -/* Define to 1 if you have the header file. */ -#define HAVE_UNISTD_H 0 -#define YY_NO_UNISTD_H 1 - -/* Define to 1 if `lstat' dereferences a symlink specified with a trailing - slash. */ -/* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ - -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -#define LT_OBJDIR ".libs/" - -/* Must be defined in order to disable debug mode. */ -#define NDEBUG 1 - -/* Should be defined in order to disable EPSG full support. */ -/* #undef OMIT_EPSG */ - -/* Should be defined in order to disable FREEXL support. */ -/* #undef OMIT_FREEXL */ - -/* Should be defined in order to disable GEOCALLBACKS support. */ -#define OMIT_GEOCALLBACKS 1 - -/* Should be defined in order to disable GEOS support. */ -/* #undef OMIT_GEOS */ - -/* Should be defined in order to disable ICONV support. */ -/* #undef OMIT_ICONV */ - -/* Should be defined in order to disable MATHSQL support. */ -/* #undef OMIT_MATHSQL */ - -/* Should be defined in order to disable PROJ.4 support. */ -/* #undef OMIT_PROJ */ - -/* Name of package */ -#define PACKAGE "libspatialite" - -/* Define to the address where bug reports for this package should be sent. */ -#define PACKAGE_BUGREPORT "a.furieri@lqt.it" - -/* Define to the full name of this package. */ -#define PACKAGE_NAME "libspatialite" - -/* Define to the full name and version of this package. */ -#define PACKAGE_STRING "libspatialite 4.0.0" - -/* Define to the one symbol short name of this package. */ -#define PACKAGE_TARNAME "libspatialite" - -/* Define to the home page for this package. */ -#define PACKAGE_URL "" - -/* Define to the version of this package. */ -#define PACKAGE_VERSION "4.0.0" - -/* Define to 1 if you have the ANSI C header files. */ -#define STDC_HEADERS 1 - -/* Define to 1 if you can safely include both and . */ -#define TIME_WITH_SYS_TIME 1 - -/* Define to 1 if your declares `struct tm'. */ -/* #undef TM_IN_SYS_TIME */ - -/* Version number of package */ -#define VERSION "4.0.0" - -/* Must be =64 in order to enable huge-file support. */ -#define _FILE_OFFSET_BITS 64 - -/* Must be defined in order to enable huge-file support. */ -#define _LARGEFILE_SOURCE 1 - -/* Must be defined in order to enable huge-file support. */ -#define _LARGE_FILE 1 - -/* Define to empty if `const' does not conform to ANSI C. */ -/* #undef const */ - -/* Define to `long int' if does not define. */ -/* #undef off_t */ - -/* Define to `unsigned int' if does not define. */ -/* #undef size_t */ - -/* Define to empty if the keyword `volatile' does not work. Warning: valid - code using `volatile' can become incorrect without. Disable with care. */ -/* #undef volatile */ diff --git a/src/spatialite/config.guess b/src/spatialite/config.guess deleted file mode 100755 index dc84c68..0000000 --- a/src/spatialite/config.guess +++ /dev/null @@ -1,1501 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 -# Free Software Foundation, Inc. - -timestamp='2009-11-20' - -# This file is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Originally written by Per Bothner. Please send patches (context -# diff format) to and include a ChangeLog -# entry. -# -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - exit ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[456]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi - echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-gnu - else - echo ${UNAME_MACHINE}-unknown-linux-gnueabi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - cris:Linux:*:*) - echo cris-axis-linux-gnu - exit ;; - crisv32:Linux:*:*) - echo crisv32-axis-linux-gnu - exit ;; - frv:Linux:*:*) - echo frv-unknown-linux-gnu - exit ;; - i*86:Linux:*:*) - LIBC=gnu - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #ifdef __dietlibc__ - LIBC=dietlibc - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` - echo "${UNAME_MACHINE}-pc-linux-${LIBC}" - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } - ;; - or32:Linux:*:*) - echo or32-unknown-linux-gnu - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-gnu - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-gnu - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-gnu ;; - PA8*) echo hppa2.0-unknown-linux-gnu ;; - *) echo hppa-unknown-linux-gnu ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-gnu - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-gnu - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-gnu - exit ;; - x86_64:Linux:*:*) - echo x86_64-unknown-linux-gnu - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-gnu - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - i386) - eval $set_cc_for_build - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - UNAME_PROCESSOR="x86_64" - fi - fi ;; - unknown) UNAME_PROCESSOR=powerpc ;; - esac - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NSE-?:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; -esac - -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - -eval $set_cc_for_build -cat >$dummy.c < -# include -#endif -main () -{ -#if defined (sony) -#if defined (MIPSEB) - /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, - I don't know.... */ - printf ("mips-sony-bsd\n"); exit (0); -#else -#include - printf ("m68k-sony-newsos%s\n", -#ifdef NEWSOS4 - "4" -#else - "" -#endif - ); exit (0); -#endif -#endif - -#if defined (__arm) && defined (__acorn) && defined (__unix) - printf ("arm-acorn-riscix\n"); exit (0); -#endif - -#if defined (hp300) && !defined (hpux) - printf ("m68k-hp-bsd\n"); exit (0); -#endif - -#if defined (NeXT) -#if !defined (__ARCHITECTURE__) -#define __ARCHITECTURE__ "m68k" -#endif - int version; - version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; - if (version < 4) - printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); - else - printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); - exit (0); -#endif - -#if defined (MULTIMAX) || defined (n16) -#if defined (UMAXV) - printf ("ns32k-encore-sysv\n"); exit (0); -#else -#if defined (CMU) - printf ("ns32k-encore-mach\n"); exit (0); -#else - printf ("ns32k-encore-bsd\n"); exit (0); -#endif -#endif -#endif - -#if defined (__386BSD__) - printf ("i386-pc-bsd\n"); exit (0); -#endif - -#if defined (sequent) -#if defined (i386) - printf ("i386-sequent-dynix\n"); exit (0); -#endif -#if defined (ns32000) - printf ("ns32k-sequent-dynix\n"); exit (0); -#endif -#endif - -#if defined (_SEQUENT_) - struct utsname un; - - uname(&un); - - if (strncmp(un.version, "V2", 2) == 0) { - printf ("i386-sequent-ptx2\n"); exit (0); - } - if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ - printf ("i386-sequent-ptx1\n"); exit (0); - } - printf ("i386-sequent-ptx\n"); exit (0); - -#endif - -#if defined (vax) -# if !defined (ultrix) -# include -# if defined (BSD) -# if BSD == 43 - printf ("vax-dec-bsd4.3\n"); exit (0); -# else -# if BSD == 199006 - printf ("vax-dec-bsd4.3reno\n"); exit (0); -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# endif -# else - printf ("vax-dec-bsd\n"); exit (0); -# endif -# else - printf ("vax-dec-ultrix\n"); exit (0); -# endif -#endif - -#if defined (alliant) && defined (i860) - printf ("i860-alliant-bsd\n"); exit (0); -#endif - - exit (1); -} -EOF - -$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - -# Apollos put the system type in the environment. - -test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } - -# Convex versions that predate uname can use getsysinfo(1) - -if [ -x /usr/convex/getsysinfo ] -then - case `getsysinfo -f cpu_type` in - c1*) - echo c1-convex-bsd - exit ;; - c2*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - c34*) - echo c34-convex-bsd - exit ;; - c38*) - echo c38-convex-bsd - exit ;; - c4*) - echo c4-convex-bsd - exit ;; - esac -fi - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/src/spatialite/config.h.in b/src/spatialite/config.h.in deleted file mode 100644 index 9b34a3a..0000000 --- a/src/spatialite/config.h.in +++ /dev/null @@ -1,216 +0,0 @@ -/* config.h.in. Generated from configure.ac by autoheader. */ - -/* Should be defined in order to enable LWGEOM support. */ -#undef ENABLE_LWGEOM - -/* Should be defined in order to enable GEOS_ADVANCED support. */ -#undef GEOS_ADVANCED - -/* Should be defined in order to enable GEOS_TRUNK experimental support. */ -#undef GEOS_TRUNK - -/* Define to 1 if you have the header file. */ -#undef HAVE_DLFCN_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_FCNTL_H - -/* Define to 1 if you have the `fdatasync' function. */ -#undef HAVE_FDATASYNC - -/* Define to 1 if you have the header file. */ -#undef HAVE_FLOAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_FREEXL_H - -/* Define to 1 if you have the `ftruncate' function. */ -#undef HAVE_FTRUNCATE - -/* Define to 1 if you have the header file. */ -#undef HAVE_GEOS_C_H - -/* Define to 1 if you have the `getcwd' function. */ -#undef HAVE_GETCWD - -/* Define to 1 if you have the `gettimeofday' function. */ -#undef HAVE_GETTIMEOFDAY - -/* Define to 1 if you have the header file. */ -#undef HAVE_ICONV_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_INTTYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_LIBLWGEOM_H - -/* Define to 1 if you have the `sqlite3' library (-lsqlite3). */ -#undef HAVE_LIBSQLITE3 - -/* Define to 1 if you have the `localtime_r' function. */ -#undef HAVE_LOCALTIME_R - -/* Define to 1 if `lstat' has the bug that it succeeds when given the - zero-length file name argument. */ -#undef HAVE_LSTAT_EMPTY_STRING_BUG - -/* Define to 1 if you have the header file. */ -#undef HAVE_MATH_H - -/* Define to 1 if you have the `memmove' function. */ -#undef HAVE_MEMMOVE - -/* Define to 1 if you have the header file. */ -#undef HAVE_MEMORY_H - -/* Define to 1 if you have the `memset' function. */ -#undef HAVE_MEMSET - -/* Define to 1 if you have the header file. */ -#undef HAVE_PROJ_API_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SQLITE3EXT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SQLITE3_H - -/* Define to 1 if you have the `sqrt' function. */ -#undef HAVE_SQRT - -/* Define to 1 if `stat' has the bug that it succeeds when given the - zero-length file name argument. */ -#undef HAVE_STAT_EMPTY_STRING_BUG - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDDEF_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDINT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDIO_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STDLIB_H - -/* Define to 1 if you have the `strcasecmp' function. */ -#undef HAVE_STRCASECMP - -/* Define to 1 if you have the `strerror' function. */ -#undef HAVE_STRERROR - -/* Define to 1 if you have the `strftime' function. */ -#undef HAVE_STRFTIME - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRINGS_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_STRING_H - -/* Define to 1 if you have the `strncasecmp' function. */ -#undef HAVE_STRNCASECMP - -/* Define to 1 if you have the `strstr' function. */ -#undef HAVE_STRSTR - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_STAT_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TIME_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_SYS_TYPES_H - -/* Define to 1 if you have the header file. */ -#undef HAVE_UNISTD_H - -/* Define to 1 if `lstat' dereferences a symlink specified with a trailing - slash. */ -#undef LSTAT_FOLLOWS_SLASHED_SYMLINK - -/* Define to the sub-directory in which libtool stores uninstalled libraries. - */ -#undef LT_OBJDIR - -/* Must be defined in order to disable debug mode. */ -#undef NDEBUG - -/* Should be defined in order to disable EPSG full support. */ -#undef OMIT_EPSG - -/* Should be defined in order to disable FREEXL support. */ -#undef OMIT_FREEXL - -/* Should be defined in order to disable GEOCALLBACKS support. */ -#undef OMIT_GEOCALLBACKS - -/* Should be defined in order to disable GEOS support. */ -#undef OMIT_GEOS - -/* Should be defined in order to disable ICONV support. */ -#undef OMIT_ICONV - -/* Should be defined in order to disable MATHSQL support. */ -#undef OMIT_MATHSQL - -/* Should be defined in order to disable PROJ.4 support. */ -#undef OMIT_PROJ - -/* Name of package */ -#undef PACKAGE - -/* Define to the address where bug reports for this package should be sent. */ -#undef PACKAGE_BUGREPORT - -/* Define to the full name of this package. */ -#undef PACKAGE_NAME - -/* Define to the full name and version of this package. */ -#undef PACKAGE_STRING - -/* Define to the one symbol short name of this package. */ -#undef PACKAGE_TARNAME - -/* Define to the home page for this package. */ -#undef PACKAGE_URL - -/* Define to the version of this package. */ -#undef PACKAGE_VERSION - -/* Define to 1 if you have the ANSI C header files. */ -#undef STDC_HEADERS - -/* Define to 1 if you can safely include both and . */ -#undef TIME_WITH_SYS_TIME - -/* Define to 1 if your declares `struct tm'. */ -#undef TM_IN_SYS_TIME - -/* Version number of package */ -#undef VERSION - -/* Must be =64 in order to enable huge-file support. */ -#undef _FILE_OFFSET_BITS - -/* Must be defined in order to enable huge-file support. */ -#undef _LARGEFILE_SOURCE - -/* Must be defined in order to enable huge-file support. */ -#undef _LARGE_FILE - -/* Define to empty if `const' does not conform to ANSI C. */ -#undef const - -/* Define to `long int' if does not define. */ -#undef off_t - -/* Define to `unsigned int' if does not define. */ -#undef size_t - -/* Define to empty if the keyword `volatile' does not work. Warning: valid - code using `volatile' can become incorrect without. Disable with care. */ -#undef volatile diff --git a/src/spatialite/config.sub b/src/spatialite/config.sub deleted file mode 100755 index 2a55a50..0000000 --- a/src/spatialite/config.sub +++ /dev/null @@ -1,1705 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 -# Free Software Foundation, Inc. - -timestamp='2009-11-20' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# This file is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Please send patches to . Submit a context -# diff and a properly formatted GNU ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, -2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. - -This is free software; see the source for copying conditions. There is NO -warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit ;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ - uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ - kopensolaris*-gnu* | \ - storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ - -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ - -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ - -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ - -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ - -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze) - os= - basic_machine=$1 - ;; - -bluegene*) - os=-cnk - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco5v6*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ - | bfin \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fido | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | lm32 \ - | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64octeon | mips64octeonel \ - | mips64orion | mips64orionel \ - | mips64r5900 | mips64r5900el \ - | mips64vr | mips64vrel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mips64vr5900 | mips64vr5900el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | moxie \ - | mt \ - | msp430 \ - | nios | nios2 \ - | ns16k | ns32k \ - | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | rx \ - | score \ - | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ - | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | ubicom32 \ - | v850 | v850e \ - | we32k \ - | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ - | z8k | z80) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12 | picochip) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - ms1) - basic_machine=mt-unknown - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* | avr32-* \ - | bfin-* | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | craynv-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | lm32-* \ - | m32c-* | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64octeon-* | mips64octeonel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64r5900-* | mips64r5900el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mips64vr5900-* | mips64vr5900el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | mmix-* \ - | mt-* \ - | msp430-* \ - | nios-* | nios2-* \ - | none-* | np1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* | rx-* \ - | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ - | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ - | tron-* \ - | ubicom32-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ - | xstormy16-* | xtensa*-* \ - | ymp-* \ - | z8k-* | z80-*) - ;; - # Recognize the basic CPU types without company name, with glob match. - xtensa*) - basic_machine=$basic_machine-unknown - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aros) - basic_machine=i386-pc - os=-aros - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - blackfin) - basic_machine=bfin-unknown - os=-linux - ;; - blackfin-*) - basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - bluegene*) - basic_machine=powerpc-ibm - os=-cnk - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - craynv) - basic_machine=craynv-cray - os=-unicosmp - ;; - cr16) - basic_machine=cr16-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - crisv32 | crisv32-* | etraxfs*) - basic_machine=crisv32-axis - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dicos) - basic_machine=i686-pc - os=-dicos - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux - ;; - m68knommu-*) - basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - microblaze) - basic_machine=microblaze-xilinx - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - mingw32ce) - basic_machine=arm-unknown - os=-mingw32ce - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - ms1-*) - basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - openrisc | openrisc-*) - basic_machine=or32-unknown - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux - ;; - parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pc98) - basic_machine=i386-pc - ;; - pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rdos) - basic_machine=i386-pc - os=-rdos - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sde) - basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh5el) - basic_machine=sh5le-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tic55x | c55x*) - basic_machine=tic55x-unknown - os=-coff - ;; - tic6x | c6x*) - basic_machine=tic6x-unknown - os=-coff - ;; - tile*) - basic_machine=tile-unknown - os=-linux-gnu - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - mmix) - basic_machine=mmix-knuth - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -auroraux) - os=-auroraux - ;; - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* | -aros* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ - | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ - | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - score-*) - os=-elf - ;; - spu-*) - os=-elf - ;; - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mep-*) - os=-elf - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-haiku) - os=-haiku - ;; - *-ibm) - os=-aix - ;; - *-knuth) - os=-mmixware - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -cnk*|-aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/src/spatialite/configure b/src/spatialite/configure deleted file mode 100755 index 5e4b9c7..0000000 --- a/src/spatialite/configure +++ /dev/null @@ -1,20644 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for libspatialite 4.0.0. -# -# Report bugs to . -# -# -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. -# -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -if test "x$CONFIG_SHELL" = x; then - as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi -" - as_required="as_fn_return () { (exit \$1); } -as_fn_success () { as_fn_return 0; } -as_fn_failure () { as_fn_return 1; } -as_fn_ret_success () { return 0; } -as_fn_ret_failure () { return 1; } - -exitcode=0 -as_fn_success || { exitcode=1; echo as_fn_success failed.; } -as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } -as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } -as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } -if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : - -else - exitcode=1; echo positional parameters were not saved. -fi -test x\$exitcode = x0 || exit 1" - as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO - as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO - eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && - test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 -test \$(( 1 + 1 )) = 2 || exit 1 - - test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ - || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" - if (eval "$as_required") 2>/dev/null; then : - as_have_required=yes -else - as_have_required=no -fi - if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : - -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -as_found=false -for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - as_found=: - case $as_dir in #( - /*) - for as_base in sh bash ksh sh5; do - # Try only shells that exist, to save several forks. - as_shell=$as_dir/$as_base - if { test -f "$as_shell" || test -f "$as_shell.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : - CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : - break 2 -fi -fi - done;; - esac - as_found=false -done -$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && - { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : - CONFIG_SHELL=$SHELL as_have_required=yes -fi; } -IFS=$as_save_IFS - - - if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - # Preserve -v and -x to the replacement shell. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; - esac - exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} -fi - - if test x$as_have_required = xno; then : - $as_echo "$0: This script requires a shell more modern than all" - $as_echo "$0: the shells that I found on your system." - if test x${ZSH_VERSION+set} = xset ; then - $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" - $as_echo "$0: be upgraded to zsh 4.3.4 or later." - else - $as_echo "$0: Please tell bug-autoconf@gnu.org and a.furieri@lqt.it -$0: about your system, including any error possibly output -$0: before this message. Then install a modern shell, or -$0: manually run the script under such a shell if you do -$0: have one." - fi - exit 1 -fi -fi -fi -SHELL=${CONFIG_SHELL-/bin/sh} -export SHELL -# Unset more variables known to interfere with behavior of common tools. -CLICOLOR_FORCE= GREP_OPTIONS= -unset CLICOLOR_FORCE GREP_OPTIONS - -## --------------------- ## -## M4sh Shell Functions. ## -## --------------------- ## -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - - - as_lineno_1=$LINENO as_lineno_1a=$LINENO - as_lineno_2=$LINENO as_lineno_2a=$LINENO - eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && - test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { - # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) - sed -n ' - p - /[$]LINENO/= - ' <$as_myself | - sed ' - s/[$]LINENO.*/&-/ - t lineno - b - :lineno - N - :loop - s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ - t loop - s/-\n.*// - ' >$as_me.lineno && - chmod +x "$as_me.lineno" || - { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } - - # Don't try to exec as it changes $[0], causing all sort of problems - # (the dirname of $[0] is not the place where we might find the - # original and so on. Autoconf is especially sensitive to this). - . "./$as_me.lineno" - # Exit status is that of the last command. - exit -} - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - -SHELL=${CONFIG_SHELL-/bin/sh} - - -test -n "$DJDIR" || exec 7<&0 &1 - -# Name of the host. -# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -# -# Initializations. -# -ac_default_prefix=/usr/local -ac_clean_files= -ac_config_libobj_dir=. -LIBOBJS= -cross_compiling=no -subdirs= -MFLAGS= -MAKEFLAGS= - -# Identity of this package. -PACKAGE_NAME='libspatialite' -PACKAGE_TARNAME='libspatialite' -PACKAGE_VERSION='4.0.0' -PACKAGE_STRING='libspatialite 4.0.0' -PACKAGE_BUGREPORT='a.furieri@lqt.it' -PACKAGE_URL='' - -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#ifdef HAVE_SYS_TYPES_H -# include -#endif -#ifdef HAVE_SYS_STAT_H -# include -#endif -#ifdef STDC_HEADERS -# include -# include -#else -# ifdef HAVE_STDLIB_H -# include -# endif -#endif -#ifdef HAVE_STRING_H -# if !defined STDC_HEADERS && defined HAVE_MEMORY_H -# include -# endif -# include -#endif -#ifdef HAVE_STRINGS_H -# include -#endif -#ifdef HAVE_INTTYPES_H -# include -#endif -#ifdef HAVE_STDINT_H -# include -#endif -#ifdef HAVE_UNISTD_H -# include -#endif" - -ac_subst_vars='am__EXEEXT_FALSE -am__EXEEXT_TRUE -LTLIBOBJS -ANDROID_FALSE -ANDROID_TRUE -MACOSX_FALSE -MACOSX_TRUE -MINGW_FALSE -MINGW_TRUE -GEOS_CFLAGS -GEOS_LDFLAGS -GEOSCONFIG -LIBOBJS -CXXCPP -OTOOL64 -OTOOL -LIPO -NMEDIT -DSYMUTIL -MANIFEST_TOOL -RANLIB -ac_ct_AR -AR -NM -ac_ct_DUMPBIN -DUMPBIN -LD -FGREP -SED -LIBTOOL -OBJDUMP -DLLTOOL -AS -host_os -host_vendor -host_cpu -host -build_os -build_vendor -build_cpu -build -LN_S -am__fastdepCXX_FALSE -am__fastdepCXX_TRUE -CXXDEPMODE -ac_ct_CXX -CXXFLAGS -CXX -EGREP -GREP -CPP -am__fastdepCC_FALSE -am__fastdepCC_TRUE -CCDEPMODE -am__nodep -AMDEPBACKSLASH -AMDEP_FALSE -AMDEP_TRUE -am__quote -am__include -DEPDIR -OBJEXT -EXEEXT -ac_ct_CC -CPPFLAGS -LDFLAGS -CFLAGS -CC -MAINT -MAINTAINER_MODE_FALSE -MAINTAINER_MODE_TRUE -am__untar -am__tar -AMTAR -am__leading_dot -SET_MAKE -AWK -mkdir_p -MKDIR_P -INSTALL_STRIP_PROGRAM -STRIP -install_sh -MAKEINFO -AUTOHEADER -AUTOMAKE -AUTOCONF -ACLOCAL -VERSION -PACKAGE -CYGPATH_W -am__isrc -INSTALL_DATA -INSTALL_SCRIPT -INSTALL_PROGRAM -target_alias -host_alias -build_alias -LIBS -ECHO_T -ECHO_N -ECHO_C -DEFS -mandir -localedir -libdir -psdir -pdfdir -dvidir -htmldir -infodir -docdir -oldincludedir -includedir -localstatedir -sharedstatedir -sysconfdir -datadir -datarootdir -libexecdir -sbindir -bindir -program_transform_name -prefix -exec_prefix -PACKAGE_URL -PACKAGE_BUGREPORT -PACKAGE_STRING -PACKAGE_VERSION -PACKAGE_TARNAME -PACKAGE_NAME -PATH_SEPARATOR -SHELL' -ac_subst_files='' -ac_user_opts=' -enable_option_checking -enable_maintainer_mode -enable_dependency_tracking -enable_shared -enable_static -with_pic -enable_fast_install -with_gnu_ld -with_sysroot -enable_libtool_lock -enable_mathsql -enable_geocallbacks -enable_proj -enable_iconv -enable_freexl -enable_epsg -enable_geos -with_geosconfig -enable_geosadvanced -enable_geostrunk -enable_lwgeom -enable_gcov -' - ac_precious_vars='build_alias -host_alias -target_alias -CC -CFLAGS -LDFLAGS -LIBS -CPPFLAGS -CPP -CXX -CXXFLAGS -CCC -CXXCPP' - - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -ac_unrecognized_opts= -ac_unrecognized_sep= -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -# (The list follows the same order as the GNU Coding Standards.) -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datarootdir='${prefix}/share' -datadir='${datarootdir}' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -includedir='${prefix}/include' -oldincludedir='/usr/include' -docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' -infodir='${datarootdir}/info' -htmldir='${docdir}' -dvidir='${docdir}' -pdfdir='${docdir}' -psdir='${docdir}' -libdir='${exec_prefix}/lib' -localedir='${datarootdir}/locale' -mandir='${datarootdir}/man' - -ac_prev= -ac_dashdash= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval $ac_prev=\$ac_option - ac_prev= - continue - fi - - case $ac_option in - *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; - *=) ac_optarg= ;; - *) ac_optarg=yes ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_dashdash$ac_option in - --) - ac_dashdash=yes ;; - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=*) - datadir=$ac_optarg ;; - - -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ - | --dataroo | --dataro | --datar) - ac_prev=datarootdir ;; - -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ - | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) - datarootdir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=no ;; - - -docdir | --docdir | --docdi | --doc | --do) - ac_prev=docdir ;; - -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) - docdir=$ac_optarg ;; - - -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) - ac_prev=dvidir ;; - -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) - dvidir=$ac_optarg ;; - - -enable-* | --enable-*) - ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid feature name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"enable_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval enable_$ac_useropt=\$ac_optarg ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) - ac_prev=htmldir ;; - -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ - | --ht=*) - htmldir=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localedir | --localedir | --localedi | --localed | --locale) - ac_prev=localedir ;; - -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) - localedir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst | --locals) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c | -n) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) - ac_prev=pdfdir ;; - -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) - pdfdir=$ac_optarg ;; - - -psdir | --psdir | --psdi | --psd | --ps) - ac_prev=psdir ;; - -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) - psdir=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=\$ac_optarg ;; - - -without-* | --without-*) - ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && - as_fn_error $? "invalid package name: $ac_useropt" - ac_useropt_orig=$ac_useropt - ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` - case $ac_user_opts in - *" -"with_$ac_useropt" -"*) ;; - *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" - ac_unrecognized_sep=', ';; - esac - eval with_$ac_useropt=no ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) as_fn_error $? "unrecognized option: \`$ac_option' -Try \`$0 --help' for more information" - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - case $ac_envvar in #( - '' | [0-9]* | *[!_$as_cr_alnum]* ) - as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; - esac - eval $ac_envvar=\$ac_optarg - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - as_fn_error $? "missing argument to $ac_option" -fi - -if test -n "$ac_unrecognized_opts"; then - case $enable_option_checking in - no) ;; - fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; - *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; - esac -fi - -# Check all directory arguments for consistency. -for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ - datadir sysconfdir sharedstatedir localstatedir includedir \ - oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ - libdir localedir mandir -do - eval ac_val=\$$ac_var - # Remove trailing slashes. - case $ac_val in - */ ) - ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` - eval $ac_var=\$ac_val;; - esac - # Be sure to have absolute directory names. - case $ac_val in - [\\/$]* | ?:[\\/]* ) continue;; - NONE | '' ) case $ac_var in *prefix ) continue;; esac;; - esac - as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -# FIXME: To remove some day. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: To remove some day. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used" >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - - -ac_pwd=`pwd` && test -n "$ac_pwd" && -ac_ls_di=`ls -di .` && -ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || - as_fn_error $? "working directory cannot be determined" -test "X$ac_ls_di" = "X$ac_pwd_ls_di" || - as_fn_error $? "pwd does not report name of working directory" - - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then the parent directory. - ac_confdir=`$as_dirname -- "$as_myself" || -$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_myself" : 'X\(//\)[^/]' \| \ - X"$as_myself" : 'X\(//\)$' \| \ - X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_myself" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - srcdir=$ac_confdir - if test ! -r "$srcdir/$ac_unique_file"; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r "$srcdir/$ac_unique_file"; then - test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." - as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" -fi -ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" -ac_abs_confdir=`( - cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" - pwd)` -# When building in place, set srcdir=. -if test "$ac_abs_confdir" = "$ac_pwd"; then - srcdir=. -fi -# Remove unnecessary trailing slashes from srcdir. -# Double slashes in file names in object file debugging info -# mess up M-x gdb in Emacs. -case $srcdir in -*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; -esac -for ac_var in $ac_precious_vars; do - eval ac_env_${ac_var}_set=\${${ac_var}+set} - eval ac_env_${ac_var}_value=\$${ac_var} - eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} - eval ac_cv_env_${ac_var}_value=\$${ac_var} -done - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat <<_ACEOF -\`configure' configures libspatialite 4.0.0 to adapt to many kinds of systems. - -Usage: $0 [OPTION]... [VAR=VALUE]... - -To assign environment variables (e.g., CC, CFLAGS...), specify them as -VAR=VALUE. See below for descriptions of some of the useful variables. - -Defaults for the options are specified in brackets. - -Configuration: - -h, --help display this help and exit - --help=short display options specific to this package - --help=recursive display the short help of all the included packages - -V, --version display version information and exit - -q, --quiet, --silent do not print \`checking ...' messages - --cache-file=FILE cache test results in FILE [disabled] - -C, --config-cache alias for \`--cache-file=config.cache' - -n, --no-create do not create output files - --srcdir=DIR find the sources in DIR [configure dir or \`..'] - -Installation directories: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [PREFIX] - -By default, \`make install' will install all the files in -\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify -an installation prefix other than \`$ac_default_prefix' using \`--prefix', -for instance \`--prefix=\$HOME'. - -For better control, use the options below. - -Fine tuning of the installation directories: - --bindir=DIR user executables [EPREFIX/bin] - --sbindir=DIR system admin executables [EPREFIX/sbin] - --libexecdir=DIR program executables [EPREFIX/libexec] - --sysconfdir=DIR read-only single-machine data [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] - --localstatedir=DIR modifiable single-machine data [PREFIX/var] - --libdir=DIR object code libraries [EPREFIX/lib] - --includedir=DIR C header files [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc [/usr/include] - --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] - --datadir=DIR read-only architecture-independent data [DATAROOTDIR] - --infodir=DIR info documentation [DATAROOTDIR/info] - --localedir=DIR locale-dependent data [DATAROOTDIR/locale] - --mandir=DIR man documentation [DATAROOTDIR/man] - --docdir=DIR documentation root [DATAROOTDIR/doc/libspatialite] - --htmldir=DIR html documentation [DOCDIR] - --dvidir=DIR dvi documentation [DOCDIR] - --pdfdir=DIR pdf documentation [DOCDIR] - --psdir=DIR ps documentation [DOCDIR] -_ACEOF - - cat <<\_ACEOF - -Program names: - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM run sed PROGRAM on installed program names - -System types: - --build=BUILD configure for building on BUILD [guessed] - --host=HOST cross-compile to build programs to run on HOST [BUILD] -_ACEOF -fi - -if test -n "$ac_init_help"; then - case $ac_init_help in - short | recursive ) echo "Configuration of libspatialite 4.0.0:";; - esac - cat <<\_ACEOF - -Optional Features: - --disable-option-checking ignore unrecognized --enable/--with options - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors - --enable-shared[=PKGS] build shared libraries [default=yes] - --enable-static[=PKGS] build static libraries [default=yes] - --enable-fast-install[=PKGS] - optimize for fast installation [default=yes] - --disable-libtool-lock avoid locking (might break parallel builds) - --enable-mathsql enables SQL math functions [default=yes] - --enable-geocallbacks enables geometry callbacks [default=no] - --enable-proj enables PROJ.4 inclusion [default=yes] - --enable-iconv enables ICONV inclusion [default=yes] - --enable-freexl enables FreeXL inclusion [default=yes] - --enable-epsg enables full EPSG dataset support [default=yes] - --enable-geos enables GEOS inclusion [default=yes] - --enable-geosadvanced enables GEOS advanced features [default=yes] - --enable-geostrunk enables GEOS-trunk experimental features - [default=no] - --enable-lwgeom enables LWGEOM support [default=no] - --enable-gcov turn on code coverage analysis tools - -Optional Packages: - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --with-pic try to use only PIC/non-PIC objects [default=use - both] - --with-gnu-ld assume the C compiler uses GNU ld [default=no] - --with-sysroot=DIR Search for dependent libraries within DIR - (or the compiler's sysroot if not specified). - --with-geosconfig=FILE specify an alternative geos-config file - -Some influential environment variables: - CC C compiler command - CFLAGS C compiler flags - LDFLAGS linker flags, e.g. -L if you have libraries in a - nonstandard directory - LIBS libraries to pass to the linker, e.g. -l - CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if - you have headers in a nonstandard directory - CPP C preprocessor - CXX C++ compiler command - CXXFLAGS C++ compiler flags - CXXCPP C++ preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -Report bugs to . -_ACEOF -ac_status=$? -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d "$ac_dir" || - { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || - continue - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - cd "$ac_dir" || { ac_status=$?; continue; } - # Check for guested configure. - if test -f "$ac_srcdir/configure.gnu"; then - echo && - $SHELL "$ac_srcdir/configure.gnu" --help=recursive - elif test -f "$ac_srcdir/configure"; then - echo && - $SHELL "$ac_srcdir/configure" --help=recursive - else - $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 - fi || ac_status=$? - cd "$ac_pwd" || { ac_status=$?; break; } - done -fi - -test -n "$ac_init_help" && exit $ac_status -if $ac_init_version; then - cat <<\_ACEOF -libspatialite configure 4.0.0 -generated by GNU Autoconf 2.68 - -Copyright (C) 2010 Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -_ACEOF - exit -fi - -## ------------------------ ## -## Autoconf initialization. ## -## ------------------------ ## - -# ac_fn_c_try_compile LINENO -# -------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_compile - -# ac_fn_c_try_cpp LINENO -# ---------------------- -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_cpp - -# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists, giving a warning if it cannot be compiled using -# the include files in INCLUDES and setting the cache variable VAR -# accordingly. -ac_fn_c_check_header_mongrel () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if eval \${$3+:} false; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -else - # Is the header compilable? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 -$as_echo_n "checking $2 usability... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_header_compiler=yes -else - ac_header_compiler=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 -$as_echo "$ac_header_compiler" >&6; } - -# Is the header present? -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 -$as_echo_n "checking $2 presence... " >&6; } -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include <$2> -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - ac_header_preproc=yes -else - ac_header_preproc=no -fi -rm -f conftest.err conftest.i conftest.$ac_ext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 -$as_echo "$ac_header_preproc" >&6; } - -# So? What about this header? -case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( - yes:no: ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 -$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} - ;; - no:yes:* ) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 -$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 -$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 -$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 -$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 -$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} -( $as_echo "## ------------------------------- ## -## Report this to a.furieri@lqt.it ## -## ------------------------------- ##" - ) | sed "s/^/$as_me: WARNING: /" >&2 - ;; -esac - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=\$ac_header_compiler" -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_mongrel - -# ac_fn_c_try_run LINENO -# ---------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes -# that executables *can* be run. -ac_fn_c_try_run () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then : - ac_retval=0 -else - $as_echo "$as_me: program exited with status $ac_status" >&5 - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=$ac_status -fi - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_run - -# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -# ------------------------------------------------------- -# Tests whether HEADER exists and can be compiled using the include files in -# INCLUDES, setting the cache variable VAR accordingly. -ac_fn_c_check_header_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -#include <$2> -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_header_compile - -# ac_fn_cxx_try_compile LINENO -# ---------------------------- -# Try to compile conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_compile () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext - if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest.$ac_objext; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_compile - -# ac_fn_c_try_link LINENO -# ----------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_c_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_c_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_c_try_link - -# ac_fn_c_check_func LINENO FUNC VAR -# ---------------------------------- -# Tests whether FUNC exists, setting the cache variable VAR accordingly -ac_fn_c_check_func () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -/* Define $2 to an innocuous variant, in case declares $2. - For example, HP-UX 11i declares gettimeofday. */ -#define $2 innocuous_$2 - -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $2 (); below. - Prefer to if __STDC__ is defined, since - exists even on freestanding compilers. */ - -#ifdef __STDC__ -# include -#else -# include -#endif - -#undef $2 - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char $2 (); -/* The GNU C library defines this for functions which it implements - to always fail with ENOSYS. Some functions are actually named - something starting with __ and the normal name is an alias. */ -#if defined __stub_$2 || defined __stub___$2 -choke me -#endif - -int -main () -{ -return $2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - eval "$3=yes" -else - eval "$3=no" -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_func - -# ac_fn_cxx_try_cpp LINENO -# ------------------------ -# Try to preprocess conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_cpp () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - if { { ac_try="$ac_cpp conftest.$ac_ext" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } > conftest.i && { - test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || - test ! -s conftest.err - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_cpp - -# ac_fn_cxx_try_link LINENO -# ------------------------- -# Try to link conftest.$ac_ext, and return whether this succeeded. -ac_fn_cxx_try_link () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - rm -f conftest.$ac_objext conftest$ac_exeext - if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - grep -v '^ *+' conftest.err >conftest.er1 - cat conftest.er1 >&5 - mv -f conftest.er1 conftest.err - fi - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && { - test -z "$ac_cxx_werror_flag" || - test ! -s conftest.err - } && test -s conftest$ac_exeext && { - test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext - }; then : - ac_retval=0 -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - - ac_retval=1 -fi - # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information - # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would - # interfere with the next link command; also delete a directory that is - # left behind by Apple's compiler. We do this before executing the actions. - rm -rf conftest.dSYM conftest_ipa8_conftest.oo - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - as_fn_set_status $ac_retval - -} # ac_fn_cxx_try_link - -# ac_fn_c_check_type LINENO TYPE VAR INCLUDES -# ------------------------------------------- -# Tests whether TYPE exists after having included INCLUDES, setting cache -# variable VAR accordingly. -ac_fn_c_check_type () -{ - as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -$as_echo_n "checking for $2... " >&6; } -if eval \${$3+:} false; then : - $as_echo_n "(cached) " >&6 -else - eval "$3=no" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof ($2)) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$4 -int -main () -{ -if (sizeof (($2))) - return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - eval "$3=yes" -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -eval ac_res=\$$3 - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -$as_echo "$ac_res" >&6; } - eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno - -} # ac_fn_c_check_type -cat >config.log <<_ACEOF -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by libspatialite $as_me 4.0.0, which was -generated by GNU Autoconf 2.68. Invocation command line was - - $ $0 $@ - -_ACEOF -exec 5>>config.log -{ -cat <<_ASUNAME -## --------- ## -## Platform. ## -## --------- ## - -hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -_ASUNAME - -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - $as_echo "PATH: $as_dir" - done -IFS=$as_save_IFS - -} >&5 - -cat >&5 <<_ACEOF - - -## ----------- ## -## Core tests. ## -## ----------- ## - -_ACEOF - - -# Keep a trace of the command line. -# Strip out --no-create and --no-recursion so they do not pile up. -# Strip out --silent because we don't want to record it for future runs. -# Also quote any args containing shell meta-characters. -# Make two passes to allow for proper duplicate-argument suppression. -ac_configure_args= -ac_configure_args0= -ac_configure_args1= -ac_must_keep_next=false -for ac_pass in 1 2 -do - for ac_arg - do - case $ac_arg in - -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - continue ;; - *\'*) - ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - case $ac_pass in - 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; - 2) - as_fn_append ac_configure_args1 " '$ac_arg'" - if test $ac_must_keep_next = true; then - ac_must_keep_next=false # Got value, back to normal. - else - case $ac_arg in - *=* | --config-cache | -C | -disable-* | --disable-* \ - | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ - | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ - | -with-* | --with-* | -without-* | --without-* | --x) - case "$ac_configure_args0 " in - "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; - esac - ;; - -* ) ac_must_keep_next=true ;; - esac - fi - as_fn_append ac_configure_args " '$ac_arg'" - ;; - esac - done -done -{ ac_configure_args0=; unset ac_configure_args0;} -{ ac_configure_args1=; unset ac_configure_args1;} - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -# WARNING: Use '\'' to represent an apostrophe within the trap. -# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - { - echo - - $as_echo "## ---------------- ## -## Cache variables. ## -## ---------------- ##" - echo - # The following way of writing the cache mishandles newlines in values, -( - for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - (set) 2>&1 | - case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - sed -n \ - "s/'\''/'\''\\\\'\'''\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" - ;; #( - *) - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) - echo - - $as_echo "## ----------------- ## -## Output variables. ## -## ----------------- ##" - echo - for ac_var in $ac_subst_vars - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - - if test -n "$ac_subst_files"; then - $as_echo "## ------------------- ## -## File substitutions. ## -## ------------------- ##" - echo - for ac_var in $ac_subst_files - do - eval ac_val=\$$ac_var - case $ac_val in - *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; - esac - $as_echo "$ac_var='\''$ac_val'\''" - done | sort - echo - fi - - if test -s confdefs.h; then - $as_echo "## ----------- ## -## confdefs.h. ## -## ----------- ##" - echo - cat confdefs.h - echo - fi - test "$ac_signal" != 0 && - $as_echo "$as_me: caught signal $ac_signal" - $as_echo "$as_me: exit $exit_status" - } >&5 - rm -f core *.core core.conftest.* && - rm -f -r conftest* confdefs* conf$$* $ac_clean_files && - exit $exit_status -' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -f -r conftest* confdefs.h - -$as_echo "/* confdefs.h */" > confdefs.h - -# Predefined preprocessor variables. - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_NAME "$PACKAGE_NAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_TARNAME "$PACKAGE_TARNAME" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_VERSION "$PACKAGE_VERSION" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_STRING "$PACKAGE_STRING" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" -_ACEOF - -cat >>confdefs.h <<_ACEOF -#define PACKAGE_URL "$PACKAGE_URL" -_ACEOF - - -# Let the site file select an alternate cache file if it wants to. -# Prefer an explicitly selected file to automatically selected ones. -ac_site_file1=NONE -ac_site_file2=NONE -if test -n "$CONFIG_SITE"; then - # We do not want a PATH search for config.site. - case $CONFIG_SITE in #(( - -*) ac_site_file1=./$CONFIG_SITE;; - */*) ac_site_file1=$CONFIG_SITE;; - *) ac_site_file1=./$CONFIG_SITE;; - esac -elif test "x$prefix" != xNONE; then - ac_site_file1=$prefix/share/config.site - ac_site_file2=$prefix/etc/config.site -else - ac_site_file1=$ac_default_prefix/share/config.site - ac_site_file2=$ac_default_prefix/etc/config.site -fi -for ac_site_file in "$ac_site_file1" "$ac_site_file2" -do - test "x$ac_site_file" = xNONE && continue - if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 -$as_echo "$as_me: loading site script $ac_site_file" >&6;} - sed 's/^/| /' "$ac_site_file" >&5 - . "$ac_site_file" \ - || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "failed to load site script $ac_site_file -See \`config.log' for more details" "$LINENO" 5; } - fi -done - -if test -r "$cache_file"; then - # Some versions of bash will fail to source /dev/null (special files - # actually), so we avoid doing that. DJGPP emulates it as a regular file. - if test /dev/null != "$cache_file" && test -f "$cache_file"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 -$as_echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . "$cache_file";; - *) . "./$cache_file";; - esac - fi -else - { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 -$as_echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in $ac_precious_vars; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val=\$ac_cv_env_${ac_var}_value - eval ac_new_val=\$ac_env_${ac_var}_value - case $ac_old_set,$ac_new_set in - set,) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,set) - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 -$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} - ac_cache_corrupted=: ;; - ,);; - *) - if test "x$ac_old_val" != "x$ac_new_val"; then - # differences in whitespace do not lead to failure. - ac_old_val_w=`echo x $ac_old_val` - ac_new_val_w=`echo x $ac_new_val` - if test "$ac_old_val_w" != "$ac_new_val_w"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 -$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} - ac_cache_corrupted=: - else - { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 -$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} - eval $ac_var=\$ac_old_val - fi - { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 -$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 -$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} - fi;; - esac - # Pass precious variables to config.status. - if test "$ac_new_set" = set; then - case $ac_new_val in - *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; - *) ac_arg=$ac_var=$ac_new_val ;; - esac - case " $ac_configure_args " in - *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. - *) as_fn_append ac_configure_args " '$ac_arg'" ;; - esac - fi -done -if $ac_cache_corrupted; then - { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} - { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 -$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} - as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 -fi -## -------------------- ## -## Main body of script. ## -## -------------------- ## - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - -am__api_version='1.11' - -ac_aux_dir= -for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do - if test -f "$ac_dir/install-sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f "$ac_dir/install.sh"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f "$ac_dir/shtool"; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 -fi - -# These three variables are undocumented and unsupported, -# and are intended to be withdrawn in a future Autoconf release. -# They can cause serious problems if a builder's source tree is in a directory -# whose full name contains unusual characters. -ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. -ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. -ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. - - -# Find a good install program. We prefer a C program (faster), -# so one script is as good as another. But avoid the broken or -# incompatible versions: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# AFS /usr/afsws/bin/install, which mishandles nonexistent args -# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" -# OS/2's system install, which has a completely different semantic -# ./install, which can be erroneously created by make from ./install.sh. -# Reject install programs that cannot install multiple files. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 -$as_echo_n "checking for a BSD-compatible install... " >&6; } -if test -z "$INSTALL"; then -if ${ac_cv_path_install+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - # Account for people who put trailing slashes in PATH elements. -case $as_dir/ in #(( - ./ | .// | /[cC]/* | \ - /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ - ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ - /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then - if test $ac_prog = install && - grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - rm -rf conftest.one conftest.two conftest.dir - echo one > conftest.one - echo two > conftest.two - mkdir conftest.dir - if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && - test -s conftest.one && test -s conftest.two && - test -s conftest.dir/conftest.one && - test -s conftest.dir/conftest.two - then - ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" - break 3 - fi - fi - fi - done - done - ;; -esac - - done -IFS=$as_save_IFS - -rm -rf conftest.one conftest.two conftest.dir - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. Don't cache a - # value for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - INSTALL=$ac_install_sh - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 -$as_echo "$INSTALL" >&6; } - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 -$as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file -# Reject unsafe characters in $srcdir or the absolute working directory -# name. Accept space and tab only in the latter. -am_lf=' -' -case `pwd` in - *[\\\"\#\$\&\'\`$am_lf]*) - as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; -esac -case $srcdir in - *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; -esac - -# Do `set' in a subshell so we don't clobber the current shell's -# arguments. Must try -L first in case configure is actually a -# symlink; some systems play weird games with the mod time of symlinks -# (eg FreeBSD returns the mod time of the symlink's containing -# directory). -if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi - - test "$2" = conftest.file - ) -then - # Ok. - : -else - as_fn_error $? "newly created file is older than distributed files! -Check your system clock" "$LINENO" 5 -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -test "$program_prefix" != NONE && - program_transform_name="s&^&$program_prefix&;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s&\$&$program_suffix&;$program_transform_name" -# Double any \ or $. -# By default was `s,x,x', remove it if useless. -ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' -program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` - -# expand $ac_aux_dir to an absolute path -am_aux_dir=`cd $ac_aux_dir && pwd` - -if test x"${MISSING+set}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; - *) - MISSING="\${SHELL} $am_aux_dir/missing" ;; - esac -fi -# Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " -else - am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} -fi - -if test x"${install_sh}" != xset; then - case $am_aux_dir in - *\ * | *\ *) - install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; - *) - install_sh="\${SHELL} $am_aux_dir/install-sh" - esac -fi - -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right -# tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -if test "$cross_compiling" != no; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -fi -INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 -$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } -if test -z "$MKDIR_P"; then - if ${ac_cv_path_mkdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in mkdir gmkdir; do - for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue - case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( - 'mkdir (GNU coreutils) '* | \ - 'mkdir (coreutils) '* | \ - 'mkdir (fileutils) '4.1*) - ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext - break 3;; - esac - done - done - done -IFS=$as_save_IFS - -fi - - test -d ./--version && rmdir ./--version - if test "${ac_cv_path_mkdir+set}" = set; then - MKDIR_P="$ac_cv_path_mkdir -p" - else - # As a last resort, use the slow shell script. Don't cache a - # value for MKDIR_P within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the value is a relative name. - MKDIR_P="$ac_install_sh -d" - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 -$as_echo "$MKDIR_P" >&6; } - -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - -for ac_prog in gawk mawk nawk awk -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AWK+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AWK="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 -$as_echo "$AWK" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AWK" && break -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -rm -rf .tst 2>/dev/null -mkdir .tst 2>/dev/null -if test -d .tst; then - am__leading_dot=. -else - am__leading_dot=_ -fi -rmdir .tst 2>/dev/null - -if test "`cd $srcdir && pwd`" != "`pwd`"; then - # Use -I$(srcdir) only when $(srcdir) != ., so that make's output - # is not polluted with repeated "-I." - am__isrc=' -I$(srcdir)' - # test to see if srcdir already configured - if test -f $srcdir/config.status; then - as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 - fi -fi - -# test whether we have cygpath -if test -z "$CYGPATH_W"; then - if (cygpath --version) >/dev/null 2>/dev/null; then - CYGPATH_W='cygpath -w' - else - CYGPATH_W=echo - fi -fi - - -# Define the identity of the package. - PACKAGE='libspatialite' - VERSION='4.0.0' - - -cat >>confdefs.h <<_ACEOF -#define PACKAGE "$PACKAGE" -_ACEOF - - -cat >>confdefs.h <<_ACEOF -#define VERSION "$VERSION" -_ACEOF - -# Some tools Automake needs. - -ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} - - -AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} - - -AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} - - -AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} - - -MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} - -# We need awk for the "check" target. The system "awk" is bad on -# some platforms. -# Always define AMTAR for backward compatibility. Yes, it's still used -# in the wild :-( We should find a proper way to deprecate it ... -AMTAR='$${TAR-tar}' - -am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 -$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } - # Check whether --enable-maintainer-mode was given. -if test "${enable_maintainer_mode+set}" = set; then : - enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval -else - USE_MAINTAINER_MODE=no -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 -$as_echo "$USE_MAINTAINER_MODE" >&6; } - if test $USE_MAINTAINER_MODE = yes; then - MAINTAINER_MODE_TRUE= - MAINTAINER_MODE_FALSE='#' -else - MAINTAINER_MODE_TRUE='#' - MAINTAINER_MODE_FALSE= -fi - - MAINT=$MAINTAINER_MODE_TRUE - - -ac_config_headers="$ac_config_headers config.h" - - -# enabling huge-file support (64 bit file pointers) - -$as_echo "#define _LARGE_FILE 1" >>confdefs.h - - -$as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h - - -$as_echo "#define _LARGEFILE_SOURCE 1" >>confdefs.h - - -# disablibg debug support - -$as_echo "#define NDEBUG 1" >>confdefs.h - - -# config depending options - - - - - - - - - - - -# Checks for header files. -DEPDIR="${am__leading_dot}deps" - -ac_config_commands="$ac_config_commands depfiles" - - -am_make=${MAKE-make} -cat > confinc << 'END' -am__doit: - @echo this is the am__doit target -.PHONY: am__doit -END -# If we don't find an include directive, just comment out the code. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 -$as_echo_n "checking for style of include used by $am_make... " >&6; } -am__include="#" -am__quote= -_am_result=none -# First try GNU make style include. -echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. -case `$am_make -s -f confmf 2> /dev/null` in #( -*the\ am__doit\ target*) - am__include=include - am__quote= - _am_result=GNU - ;; -esac -# Now try BSD make style include. -if test "$am__include" = "#"; then - echo '.include "confinc"' > confmf - case `$am_make -s -f confmf 2> /dev/null` in #( - *the\ am__doit\ target*) - am__include=.include - am__quote="\"" - _am_result=BSD - ;; - esac -fi - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 -$as_echo "$_am_result" >&6; } -rm -f confinc confmf - -# Check whether --enable-dependency-tracking was given. -if test "${enable_dependency_tracking+set}" = set; then : - enableval=$enable_dependency_tracking; -fi - -if test "x$enable_dependency_tracking" != xno; then - am_depcomp="$ac_aux_dir/depcomp" - AMDEPBACKSLASH='\' - am__nodep='_no' -fi - if test "x$enable_dependency_tracking" != xno; then - AMDEP_TRUE= - AMDEP_FALSE='#' -else - AMDEP_TRUE='#' - AMDEP_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" -# Try to create an executable without -o first, disregard a.out. -# It will help us diagnose broken compilers, and finding out an intuition -# of exeext. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 -$as_echo_n "checking whether the C compiler works... " >&6; } -ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` - -# The possible output files: -ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" - -ac_rmfiles= -for ac_file in $ac_files -do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - * ) ac_rmfiles="$ac_rmfiles $ac_file";; - esac -done -rm -f $ac_rmfiles - -if { { ac_try="$ac_link_default" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link_default") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. -# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' -# in a Makefile. We should not override ac_cv_exeext if it was cached, -# so that the user can short-circuit this test for compilers unknown to -# Autoconf. -for ac_file in $ac_files '' -do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) - ;; - [ab].out ) - # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) - if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; - then :; else - ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - fi - # We set ac_cv_exeext here because the later test for it is not - # safe: cross compilers may not add the suffix if given an `-o' - # argument, so we may need to know it at that point already. - # Even if this section looks crufty: it has the advantage of - # actually working. - break;; - * ) - break;; - esac -done -test "$ac_cv_exeext" = no && ac_cv_exeext= - -else - ac_file='' -fi -if test -z "$ac_file"; then : - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -$as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error 77 "C compiler cannot create executables -See \`config.log' for more details" "$LINENO" 5; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 -$as_echo_n "checking for C compiler default output file name... " >&6; } -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 -$as_echo "$ac_file" >&6; } -ac_exeext=$ac_cv_exeext - -rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 -$as_echo_n "checking for suffix of executables... " >&6; } -if { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - # If both `conftest.exe' and `conftest' are `present' (well, observable) -# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in conftest.exe conftest conftest.*; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac -done -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of executables: cannot compile and link -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest conftest$ac_cv_exeext -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 -$as_echo "$ac_cv_exeext" >&6; } - -rm -f conftest.$ac_ext -EXEEXT=$ac_cv_exeext -ac_exeext=$EXEEXT -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -int -main () -{ -FILE *f = fopen ("conftest.out", "w"); - return ferror (f) || fclose (f) != 0; - - ; - return 0; -} -_ACEOF -ac_clean_files="$ac_clean_files conftest.out" -# Check that the compiler produces executables we can run. If not, either -# the compiler is broken, or we cross compile. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 -$as_echo_n "checking whether we are cross compiling... " >&6; } -if test "$cross_compiling" != yes; then - { { ac_try="$ac_link" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_link") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if { ac_try='./conftest$ac_cv_exeext' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot run C compiled programs. -If you meant to cross compile, use \`--host'. -See \`config.log' for more details" "$LINENO" 5; } - fi - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 -$as_echo "$cross_compiling" >&6; } - -rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out -ac_clean_files=$ac_clean_files_save -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 -$as_echo_n "checking for suffix of object files... " >&6; } -if ${ac_cv_objext+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { { ac_try="$ac_compile" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compile") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then : - for ac_file in conftest.o conftest.obj conftest.*; do - test -f "$ac_file" || continue; - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - $as_echo "$as_me: failed program was:" >&5 -sed 's/^/| /' conftest.$ac_ext >&5 - -{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "cannot compute suffix of object files: cannot compile -See \`config.log' for more details" "$LINENO" 5; } -fi -rm -f conftest.$ac_cv_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 -$as_echo "$ac_cv_objext" >&6; } -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 -$as_echo_n "checking for grep that handles long lines and -e... " >&6; } -if ${ac_cv_path_GREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$GREP"; then - ac_path_GREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in grep ggrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue -# Check for GNU ac_path_GREP and select it if it is found. - # Check for GNU $ac_path_GREP -case `"$ac_path_GREP" --version 2>&1` in -*GNU*) - ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'GREP' >> "conftest.nl" - "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_GREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_GREP="$ac_path_GREP" - ac_path_GREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_GREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_GREP"; then - as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_GREP=$GREP -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 -$as_echo "$ac_cv_path_GREP" >&6; } - GREP="$ac_cv_path_GREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 -$as_echo_n "checking for egrep... " >&6; } -if ${ac_cv_path_EGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 - then ac_cv_path_EGREP="$GREP -E" - else - if test -z "$EGREP"; then - ac_path_EGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in egrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue -# Check for GNU ac_path_EGREP and select it if it is found. - # Check for GNU $ac_path_EGREP -case `"$ac_path_EGREP" --version 2>&1` in -*GNU*) - ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'EGREP' >> "conftest.nl" - "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_EGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_EGREP="$ac_path_EGREP" - ac_path_EGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_EGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_EGREP"; then - as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_EGREP=$EGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 -$as_echo "$ac_cv_path_EGREP" >&6; } - EGREP="$ac_cv_path_EGREP" - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 -$as_echo_n "checking for ANSI C header files... " >&6; } -if ${ac_cv_header_stdc+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_stdc=yes -else - ac_cv_header_stdc=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -if test $ac_cv_header_stdc = yes; then - # SunOS 4.x string.h does not declare mem*, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "memchr" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - $EGREP "free" >/dev/null 2>&1; then : - -else - ac_cv_header_stdc=no -fi -rm -f conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then : - : -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) \ - (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - return 2; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - -else - ac_cv_header_stdc=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 -$as_echo "$ac_cv_header_stdc" >&6; } -if test $ac_cv_header_stdc = yes; then - -$as_echo "#define STDC_HEADERS 1" >>confdefs.h - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. -for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ - inttypes.h stdint.h unistd.h -do : - as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` -ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default -" -if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 -_ACEOF - -fi - -done - - -for ac_header in stdlib.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" -if test "x$ac_cv_header_stdlib_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STDLIB_H 1 -_ACEOF - -else - as_fn_error $? "cannot find stdlib.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in stdio.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stdio.h" "ac_cv_header_stdio_h" "$ac_includes_default" -if test "x$ac_cv_header_stdio_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STDIO_H 1 -_ACEOF - -else - as_fn_error $? "cannot find stdio.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in string.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" -if test "x$ac_cv_header_string_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STRING_H 1 -_ACEOF - -else - as_fn_error $? "cannot find string.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in memory.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" -if test "x$ac_cv_header_memory_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MEMORY_H 1 -_ACEOF - -else - as_fn_error $? "cannot find memory.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in math.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "math.h" "ac_cv_header_math_h" "$ac_includes_default" -if test "x$ac_cv_header_math_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_MATH_H 1 -_ACEOF - -else - as_fn_error $? "cannot find math.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in float.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "float.h" "ac_cv_header_float_h" "$ac_includes_default" -if test "x$ac_cv_header_float_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FLOAT_H 1 -_ACEOF - -else - as_fn_error $? "cannot find float.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in fcntl.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" -if test "x$ac_cv_header_fcntl_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FCNTL_H 1 -_ACEOF - -else - as_fn_error $? "cannot find fcntl.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in inttypes.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" -if test "x$ac_cv_header_inttypes_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_INTTYPES_H 1 -_ACEOF - -else - as_fn_error $? "cannot find inttypes.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in stddef.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stddef.h" "ac_cv_header_stddef_h" "$ac_includes_default" -if test "x$ac_cv_header_stddef_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STDDEF_H 1 -_ACEOF - -else - as_fn_error $? "cannot find stddef.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in stdint.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" -if test "x$ac_cv_header_stdint_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STDINT_H 1 -_ACEOF - -else - as_fn_error $? "cannot find stdint.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in sys/time.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" -if test "x$ac_cv_header_sys_time_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SYS_TIME_H 1 -_ACEOF - -else - as_fn_error $? "cannot find sys/time.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in unistd.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" -if test "x$ac_cv_header_unistd_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_UNISTD_H 1 -_ACEOF - -else - as_fn_error $? "cannot find unistd.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in sqlite3.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sqlite3.h" "ac_cv_header_sqlite3_h" "$ac_includes_default" -if test "x$ac_cv_header_sqlite3_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SQLITE3_H 1 -_ACEOF - -else - as_fn_error $? "cannot find sqlite3.h, bailing out" "$LINENO" 5 -fi - -done - -for ac_header in sqlite3ext.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "sqlite3ext.h" "ac_cv_header_sqlite3ext_h" "$ac_includes_default" -if test "x$ac_cv_header_sqlite3ext_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_SQLITE3EXT_H 1 -_ACEOF - -else - as_fn_error $? "cannot find sqlite3ext.h, bailing out" "$LINENO" 5 -fi - -done - - - -# Checks for programs. -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -if test -z "$CXX"; then - if test -n "$CCC"; then - CXX=$CCC - else - if test -n "$ac_tool_prefix"; then - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 -$as_echo "$CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CXX="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 -$as_echo "$ac_ct_CXX" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CXX" && break -done - - if test "x$ac_ct_CXX" = x; then - CXX="g++" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CXX=$ac_ct_CXX - fi -fi - - fi -fi -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 -$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } -if ${ac_cv_cxx_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 -$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GXX=yes -else - GXX= -fi -ac_test_CXXFLAGS=${CXXFLAGS+set} -ac_save_CXXFLAGS=$CXXFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 -$as_echo_n "checking whether $CXX accepts -g... " >&6; } -if ${ac_cv_prog_cxx_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_cxx_werror_flag=$ac_cxx_werror_flag - ac_cxx_werror_flag=yes - ac_cv_prog_cxx_g=no - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -else - CXXFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - -else - ac_cxx_werror_flag=$ac_save_cxx_werror_flag - CXXFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_compile "$LINENO"; then : - ac_cv_prog_cxx_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_cxx_werror_flag=$ac_save_cxx_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 -$as_echo "$ac_cv_prog_cxx_g" >&6; } -if test "$ac_test_CXXFLAGS" = set; then - CXXFLAGS=$ac_save_CXXFLAGS -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -depcc="$CXX" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CXX_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CXX_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CXX_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CXX_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } -CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then - am__fastdepCXX_TRUE= - am__fastdepCXX_FALSE='#' -else - am__fastdepCXX_TRUE='#' - am__fastdepCXX_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="gcc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="${ac_tool_prefix}cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - fi -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue - fi - ac_cv_prog_CC="cc" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl.exe - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_CC="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 -$as_echo "$CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl.exe -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_CC+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_CC="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 -$as_echo "$ac_ct_CC" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_CC" && break -done - - if test "x$ac_ct_CC" = x; then - CC="" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - CC=$ac_ct_CC - fi -fi - -fi - - -test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "no acceptable C compiler found in \$PATH -See \`config.log' for more details" "$LINENO" 5; } - -# Provide some information about the compiler. -$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 -set X $ac_compile -ac_compiler=$2 -for ac_option in --version -v -V -qversion; do - { { ac_try="$ac_compiler $ac_option >&5" -case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_compiler $ac_option >&5") 2>conftest.err - ac_status=$? - if test -s conftest.err; then - sed '10a\ -... rest of stderr output deleted ... - 10q' conftest.err >conftest.er1 - cat conftest.er1 >&5 - fi - rm -f conftest.er1 conftest.err - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } -done - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 -$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } -if ${ac_cv_c_compiler_gnu+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_compiler_gnu=yes -else - ac_compiler_gnu=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 -$as_echo "$ac_cv_c_compiler_gnu" >&6; } -if test $ac_compiler_gnu = yes; then - GCC=yes -else - GCC= -fi -ac_test_CFLAGS=${CFLAGS+set} -ac_save_CFLAGS=$CFLAGS -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 -$as_echo_n "checking whether $CC accepts -g... " >&6; } -if ${ac_cv_prog_cc_g+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_save_c_werror_flag=$ac_c_werror_flag - ac_c_werror_flag=yes - ac_cv_prog_cc_g=no - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -else - CFLAGS="" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - -else - ac_c_werror_flag=$ac_save_c_werror_flag - CFLAGS="-g" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_g=yes -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - ac_c_werror_flag=$ac_save_c_werror_flag -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 -$as_echo "$ac_cv_prog_cc_g" >&6; } -if test "$ac_test_CFLAGS" = set; then - CFLAGS=$ac_save_CFLAGS -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 -$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } -if ${ac_cv_prog_cc_c89+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_cv_prog_cc_c89=no -ac_save_CC=$CC -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} - -/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has - function prototypes and stuff, but not '\xHH' hex character constants. - These don't provoke an error unfortunately, instead are silently treated - as 'x'. The following induces an error, until -std is added to get - proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an - array size at least. It's necessary to write '\x00'==0 to get something - that's true only with -std. */ -int osf4_cc_array ['\x00' == 0 ? 1 : -1]; - -/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters - inside strings and character constants. */ -#define FOO(x) 'x' -int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; - -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ - -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_prog_cc_c89=$ac_arg -fi -rm -f core conftest.err conftest.$ac_objext - test "x$ac_cv_prog_cc_c89" != "xno" && break -done -rm -f conftest.$ac_ext -CC=$ac_save_CC - -fi -# AC_CACHE_VAL -case "x$ac_cv_prog_cc_c89" in - x) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 -$as_echo "none needed" >&6; } ;; - xno) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 -$as_echo "unsupported" >&6; } ;; - *) - CC="$CC $ac_cv_prog_cc_c89" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 -$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; -esac -if test "x$ac_cv_prog_cc_c89" != xno; then : - -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -depcc="$CC" am_compiler_list= - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 -$as_echo_n "checking dependency style of $depcc... " >&6; } -if ${am_cv_CC_dependencies_compiler_type+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then - # We make a subdir and do the tests there. Otherwise we can end up - # making bogus files that we don't know about and never remove. For - # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. - rm -rf conftest.dir - mkdir conftest.dir - # Copy depcomp to subdir because otherwise we won't find it if we're - # using a relative directory. - cp "$am_depcomp" conftest.dir - cd conftest.dir - # We will build objects and dependencies in a subdirectory because - # it helps to detect inapplicable dependency modes. For instance - # both Tru64's cc and ICC support -MD to output dependencies as a - # side effect of compilation, but ICC will put the dependencies in - # the current directory while Tru64 will put them in the object - # directory. - mkdir sub - - am_cv_CC_dependencies_compiler_type=none - if test "$am_compiler_list" = ""; then - am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` - fi - am__universal=false - case " $depcc " in #( - *\ -arch\ *\ -arch\ *) am__universal=true ;; - esac - - for depmode in $am_compiler_list; do - # Setup a source with many dependencies, because some compilers - # like to wrap large dependency lists on column 80 (with \), and - # we should not choose a depcomp mode which is confused by this. - # - # We need to recreate these files for each test, as the compiler may - # overwrite some of them when testing with obscure command lines. - # This happens at least with the AIX C compiler. - : > sub/conftest.c - for i in 1 2 3 4 5 6; do - echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h - done - echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - - # We check with `-c' and `-o' for the sake of the "dashmstdout" - # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs - am__obj=sub/conftest.${OBJEXT-o} - am__minus_obj="-o $am__obj" - case $depmode in - gcc) - # This depmode causes a compiler race in universal mode. - test "$am__universal" = false || continue - ;; - nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested - if test "x$enable_dependency_tracking" = xyes; then - continue - else - break - fi - ;; - msvc7 | msvc7msys | msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has - # not run yet. These depmodes are late enough in the game, and - # so weak that their functioning should not be impacted. - am__obj=conftest.${OBJEXT-o} - am__minus_obj= - ;; - none) break ;; - esac - if depmode=$depmode \ - source=sub/conftest.c object=$am__obj \ - depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ - $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ - >/dev/null 2>conftest.err && - grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && - grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && - grep $am__obj sub/conftest.Po > /dev/null 2>&1 && - ${MAKE-make} -s -f confmf > /dev/null 2>&1; then - # icc doesn't choke on unknown options, it will just issue warnings - # or remarks (even with -Werror). So we grep stderr for any message - # that says an option was ignored or not supported. - # When given -MP, icc 7.0 and 7.1 complain thusly: - # icc: Command line warning: ignoring option '-M'; no argument required - # The diagnosis changed in icc 8.0: - # icc: Command line remark: option '-MP' not supported - if (grep 'ignoring option' conftest.err || - grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else - am_cv_CC_dependencies_compiler_type=$depmode - break - fi - fi - done - - cd .. - rm -rf conftest.dir -else - am_cv_CC_dependencies_compiler_type=none -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 -$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } -CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type - - if - test "x$enable_dependency_tracking" != xno \ - && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then - am__fastdepCC_TRUE= - am__fastdepCC_FALSE='#' -else - am__fastdepCC_TRUE='#' - am__fastdepCC_FALSE= -fi - - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 -$as_echo_n "checking how to run the C preprocessor... " >&6; } -# On Suns, sometimes $CPP names a directory. -if test -n "$CPP" && test -d "$CPP"; then - CPP= -fi -if test -z "$CPP"; then - if ${ac_cv_prog_CPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 -$as_echo "$CPP" >&6; } -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_c_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C preprocessor \"$CPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 -$as_echo_n "checking whether ln -s works... " >&6; } -LN_S=$as_ln_s -if test "$LN_S" = "ln -s"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 -$as_echo "no, using $LN_S" >&6; } -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 -$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } -set x ${MAKE-make} -ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` -if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat >conftest.make <<\_ACEOF -SHELL = /bin/sh -all: - @echo '@@@%%%=$(MAKE)=@@@%%%' -_ACEOF -# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. -case `${MAKE-make} -f conftest.make 2>/dev/null` in - *@@@%%%=?*=@@@%%%*) - eval ac_cv_prog_make_${ac_make}_set=yes;; - *) - eval ac_cv_prog_make_${ac_make}_set=no;; -esac -rm -f conftest.make -fi -if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - SET_MAKE= -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - SET_MAKE="MAKE=${MAKE-make}" -fi - -# Make sure we can run config.sub. -$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || - as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 -$as_echo_n "checking build system type... " >&6; } -if ${ac_cv_build+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_build_alias=$build_alias -test "x$ac_build_alias" = x && - ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` -test "x$ac_build_alias" = x && - as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 -ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 -$as_echo "$ac_cv_build" >&6; } -case $ac_cv_build in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; -esac -build=$ac_cv_build -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_build -shift -build_cpu=$1 -build_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -build_os=$* -IFS=$ac_save_IFS -case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 -$as_echo_n "checking host system type... " >&6; } -if ${ac_cv_host+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "x$host_alias" = x; then - ac_cv_host=$ac_cv_build -else - ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || - as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 -$as_echo "$ac_cv_host" >&6; } -case $ac_cv_host in -*-*-*) ;; -*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; -esac -host=$ac_cv_host -ac_save_IFS=$IFS; IFS='-' -set x $ac_cv_host -shift -host_cpu=$1 -host_vendor=$2 -shift; shift -# Remember, the first character of IFS is used to create $*, -# except with old shells: -host_os=$* -IFS=$ac_save_IFS -case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac - - -enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. -set dummy ${ac_tool_prefix}as; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AS"; then - ac_cv_prog_AS="$AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AS="${ac_tool_prefix}as" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AS=$ac_cv_prog_AS -if test -n "$AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 -$as_echo "$AS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_AS"; then - ac_ct_AS=$AS - # Extract the first word of "as", so it can be a program name with args. -set dummy as; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AS+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AS"; then - ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AS="as" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AS=$ac_cv_prog_ac_ct_AS -if test -n "$ac_ct_AS"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 -$as_echo "$ac_ct_AS" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_AS" = x; then - AS="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AS=$ac_ct_AS - fi -else - AS="$ac_cv_prog_AS" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - - ;; -esac - -test -z "$AS" && AS=as - - - - - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - - -case `pwd` in - *\ * | *\ *) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 -$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; -esac - - - -macro_version='2.4' -macro_revision='1.3293' - - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\(["`$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' - -ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 -$as_echo_n "checking how to print strings... " >&6; } -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "" -} - -case "$ECHO" in - printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 -$as_echo "printf" >&6; } ;; - print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 -$as_echo "print -r" >&6; } ;; - *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 -$as_echo "cat" >&6; } ;; -esac - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 -$as_echo_n "checking for a sed that does not truncate output... " >&6; } -if ${ac_cv_path_SED+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ - for ac_i in 1 2 3 4 5 6 7; do - ac_script="$ac_script$as_nl$ac_script" - done - echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed - { ac_script=; unset ac_script;} - if test -z "$SED"; then - ac_path_SED_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_SED" && $as_test_x "$ac_path_SED"; } || continue -# Check for GNU ac_path_SED and select it if it is found. - # Check for GNU $ac_path_SED -case `"$ac_path_SED" --version 2>&1` in -*GNU*) - ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo '' >> "conftest.nl" - "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_SED_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_SED="$ac_path_SED" - ac_path_SED_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_SED_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_SED"; then - as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 - fi -else - ac_cv_path_SED=$SED -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 -$as_echo "$ac_cv_path_SED" >&6; } - SED="$ac_cv_path_SED" - rm -f conftest.sed - -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 -$as_echo_n "checking for fgrep... " >&6; } -if ${ac_cv_path_FGREP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 - then ac_cv_path_FGREP="$GREP -F" - else - if test -z "$FGREP"; then - ac_path_FGREP_found=false - # Loop through the user's path and test for each of PROGNAME-LIST - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_prog in fgrep; do - for ac_exec_ext in '' $ac_executable_extensions; do - ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_FGREP" && $as_test_x "$ac_path_FGREP"; } || continue -# Check for GNU ac_path_FGREP and select it if it is found. - # Check for GNU $ac_path_FGREP -case `"$ac_path_FGREP" --version 2>&1` in -*GNU*) - ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; -*) - ac_count=0 - $as_echo_n 0123456789 >"conftest.in" - while : - do - cat "conftest.in" "conftest.in" >"conftest.tmp" - mv "conftest.tmp" "conftest.in" - cp "conftest.in" "conftest.nl" - $as_echo 'FGREP' >> "conftest.nl" - "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break - diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break - as_fn_arith $ac_count + 1 && ac_count=$as_val - if test $ac_count -gt ${ac_path_FGREP_max-0}; then - # Best one so far, save it but keep looking for a better one - ac_cv_path_FGREP="$ac_path_FGREP" - ac_path_FGREP_max=$ac_count - fi - # 10*(2^10) chars as input seems more than enough - test $ac_count -gt 10 && break - done - rm -f conftest.in conftest.tmp conftest.nl conftest.out;; -esac - - $ac_path_FGREP_found && break 3 - done - done - done -IFS=$as_save_IFS - if test -z "$ac_cv_path_FGREP"; then - as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 - fi -else - ac_cv_path_FGREP=$FGREP -fi - - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 -$as_echo "$ac_cv_path_FGREP" >&6; } - FGREP="$ac_cv_path_FGREP" - - -test -z "$GREP" && GREP=grep - - - - - - - - - - - - - - - - - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 -$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } -if ${lt_cv_path_NM+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 -$as_echo "$lt_cv_path_NM" >&6; } -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - if test -n "$ac_tool_prefix"; then - for ac_prog in dumpbin "link -dump" - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DUMPBIN"; then - ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DUMPBIN=$ac_cv_prog_DUMPBIN -if test -n "$DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 -$as_echo "$DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$DUMPBIN" && break - done -fi -if test -z "$DUMPBIN"; then - ac_ct_DUMPBIN=$DUMPBIN - for ac_prog in dumpbin "link -dump" -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DUMPBIN"; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN -if test -n "$ac_ct_DUMPBIN"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 -$as_echo "$ac_ct_DUMPBIN" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_DUMPBIN" && break -done - - if test "x$ac_ct_DUMPBIN" = x; then - DUMPBIN=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DUMPBIN=$ac_ct_DUMPBIN - fi -fi - - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 -$as_echo_n "checking the name lister ($NM) interface... " >&6; } -if ${lt_cv_nm_interface+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&5 - (eval echo "\"\$as_me:$LINENO: output\"" >&5) - cat conftest.out >&5 - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 -$as_echo "$lt_cv_nm_interface" >&6; } - -# find the maximum length of command line arguments -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 -$as_echo_n "checking the maximum length of command line arguments... " >&6; } -if ${lt_cv_sys_max_cmd_len+:} false; then : - $as_echo_n "(cached) " >&6 -else - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac - -fi - -if test -n $lt_cv_sys_max_cmd_len ; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 -$as_echo "$lt_cv_sys_max_cmd_len" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 -$as_echo "none" >&6; } -fi -max_cmd_len=$lt_cv_sys_max_cmd_len - - - - - - -: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 -$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 -$as_echo "$xsi_shell" >&6; } - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 -$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } -lt_shell_append=no -( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 -$as_echo "$lt_shell_append" >&6; } - - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi - - - - - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 -$as_echo_n "checking how to convert $build file names to $host format... " >&6; } -if ${lt_cv_to_host_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac - -fi - -to_host_file_cmd=$lt_cv_to_host_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 -$as_echo "$lt_cv_to_host_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 -$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } -if ${lt_cv_to_tool_file_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - #assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac - -fi - -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 -$as_echo "$lt_cv_to_tool_file_cmd" >&6; } - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 -$as_echo_n "checking for $LD option to reload object files... " >&6; } -if ${lt_cv_ld_reload_flag+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_reload_flag='-r' -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 -$as_echo "$lt_cv_ld_reload_flag" >&6; } -reload_flag=$lt_cv_ld_reload_flag -case $reload_flag in -"" | " "*) ;; -*) reload_flag=" $reload_flag" ;; -esac -reload_cmds='$LD$reload_flag -o $output$reload_objs' -case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - if test "$GCC" != yes; then - reload_cmds=false - fi - ;; - darwin*) - if test "$GCC" = yes; then - reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' - else - reload_cmds='$LD$reload_flag -o $output$reload_objs' - fi - ;; -esac - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. -set dummy ${ac_tool_prefix}objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OBJDUMP"; then - ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OBJDUMP=$ac_cv_prog_OBJDUMP -if test -n "$OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 -$as_echo "$OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OBJDUMP"; then - ac_ct_OBJDUMP=$OBJDUMP - # Extract the first word of "objdump", so it can be a program name with args. -set dummy objdump; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OBJDUMP"; then - ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OBJDUMP="objdump" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP -if test -n "$ac_ct_OBJDUMP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 -$as_echo "$ac_ct_OBJDUMP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OBJDUMP" = x; then - OBJDUMP="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OBJDUMP=$ac_ct_OBJDUMP - fi -else - OBJDUMP="$ac_cv_prog_OBJDUMP" -fi - -test -z "$OBJDUMP" && OBJDUMP=objdump - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 -$as_echo_n "checking how to recognize dependent libraries... " >&6; } -if ${lt_cv_deplibs_check_method+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_file_magic_cmd='$MAGIC_CMD' -lt_cv_file_magic_test_file= -lt_cv_deplibs_check_method='unknown' -# Need to set the preceding variable on all platforms that support -# interlibrary dependencies. -# 'none' -- dependencies not supported. -# `unknown' -- same as none, but documents that we really don't know. -# 'pass_all' -- all dependencies passed with no checks. -# 'test_compile' -- check by making test program. -# 'file_magic [[regex]]' -- check by looking for files in library path -# which responds to the $file_magic_cmd with a given extended regex. -# If you have `file' or equivalent on your system and you're not sure -# whether `pass_all' will *always* work, you probably want this one. - -case $host_os in -aix[4-9]*) - lt_cv_deplibs_check_method=pass_all - ;; - -beos*) - lt_cv_deplibs_check_method=pass_all - ;; - -bsdi[45]*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' - lt_cv_file_magic_cmd='/usr/bin/file -L' - lt_cv_file_magic_test_file=/shlib/libc.so - ;; - -cygwin*) - # func_win32_libid is a shell function defined in ltmain.sh - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - ;; - -mingw* | pw32*) - # Base MSYS/MinGW do not provide the 'file' command needed by - # func_win32_libid shell function, so use a weaker test based on 'objdump', - # unless we find 'file', for example because we are cross-compiling. - # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. - if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[3-9]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 -$as_echo "$lt_cv_deplibs_check_method" >&6; } - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - - - - - - - - - - - - - - - - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. -set dummy ${ac_tool_prefix}dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DLLTOOL"; then - ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DLLTOOL=$ac_cv_prog_DLLTOOL -if test -n "$DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 -$as_echo "$DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DLLTOOL"; then - ac_ct_DLLTOOL=$DLLTOOL - # Extract the first word of "dlltool", so it can be a program name with args. -set dummy dlltool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DLLTOOL"; then - ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DLLTOOL="dlltool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL -if test -n "$ac_ct_DLLTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 -$as_echo "$ac_ct_DLLTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DLLTOOL" = x; then - DLLTOOL="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DLLTOOL=$ac_ct_DLLTOOL - fi -else - DLLTOOL="$ac_cv_prog_DLLTOOL" -fi - -test -z "$DLLTOOL" && DLLTOOL=dlltool - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 -$as_echo_n "checking how to associate runtime and link libraries... " >&6; } -if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 -$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - - - - - - - -if test -n "$ac_tool_prefix"; then - for ac_prog in ar - do - # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. -set dummy $ac_tool_prefix$ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_AR="$ac_tool_prefix$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 -$as_echo "$AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$AR" && break - done -fi -if test -z "$AR"; then - ac_ct_AR=$AR - for ac_prog in ar -do - # Extract the first word of "$ac_prog", so it can be a program name with args. -set dummy $ac_prog; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_AR+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_AR="$ac_prog" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 -$as_echo "$ac_ct_AR" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - test -n "$ac_ct_AR" && break -done - - if test "x$ac_ct_AR" = x; then - AR="false" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - AR=$ac_ct_AR - fi -fi - -: ${AR=ar} -: ${AR_FLAGS=cru} - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 -$as_echo_n "checking for archiver @FILE support... " >&6; } -if ${lt_cv_ar_at_file+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ar_at_file=no - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 - (eval $lt_ar_try) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 -$as_echo "$lt_cv_ar_at_file" >&6; } - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi - - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. -set dummy ${ac_tool_prefix}strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$STRIP"; then - ac_cv_prog_STRIP="$STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_STRIP="${ac_tool_prefix}strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -STRIP=$ac_cv_prog_STRIP -if test -n "$STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 -$as_echo "$STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_STRIP"; then - ac_ct_STRIP=$STRIP - # Extract the first word of "strip", so it can be a program name with args. -set dummy strip; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_STRIP+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_STRIP"; then - ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_STRIP="strip" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP -if test -n "$ac_ct_STRIP"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 -$as_echo "$ac_ct_STRIP" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_STRIP" = x; then - STRIP=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - STRIP=$ac_ct_STRIP - fi -else - STRIP="$ac_cv_prog_STRIP" -fi - -test -z "$STRIP" && STRIP=: - - - - - - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. -set dummy ${ac_tool_prefix}ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 -$as_echo "$RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_RANLIB"; then - ac_ct_RANLIB=$RANLIB - # Extract the first word of "ranlib", so it can be a program name with args. -set dummy ranlib; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_RANLIB="ranlib" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 -$as_echo "$ac_ct_RANLIB" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_RANLIB" = x; then - RANLIB=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - RANLIB=$ac_ct_RANLIB - fi -else - RANLIB="$ac_cv_prog_RANLIB" -fi - -test -z "$RANLIB" && RANLIB=: - - - - - - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - -# Check for command to grab the raw symbol name followed by C symbol from nm. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 -$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } -if ${lt_cv_sys_global_symbol_pipe+:} false; then : - $as_echo_n "(cached) " >&6 -else - -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[BCDEGRST]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([_A-Za-z][_A-Za-z0-9]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[BCDT]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[ABCDGISTW]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[ABCDEGRST]' - fi - ;; -irix* | nonstopux*) - symcode='[BCDEGRST]' - ;; -osf*) - symcode='[BCDEGQRST]' - ;; -solaris*) - symcode='[BDRT]' - ;; -sco3.2v5*) - symcode='[DT]' - ;; -sysv4.2uw2*) - symcode='[DT]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[ABDT]' - ;; -sysv4) - symcode='[DFNSTU]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[ABCDGIRSTW]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK '"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Now try to grab the symbols. - nlist=conftest.nm - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 - (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&5 - fi - else - echo "cannot find nm_test_var in $nlist" >&5 - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 - fi - else - echo "$progname: failed program was:" >&5 - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done - -fi - -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 -$as_echo "failed" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 -$as_echo "ok" >&6; } -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 -$as_echo_n "checking for sysroot... " >&6; } - -# Check whether --with-sysroot was given. -if test "${with_sysroot+set}" = set; then : - withval=$with_sysroot; -else - with_sysroot=no -fi - - -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 -$as_echo "${with_sysroot}" >&6; } - as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 - ;; -esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 -$as_echo "${lt_sysroot:-no}" >&6; } - - - - - -# Check whether --enable-libtool-lock was given. -if test "${enable_libtool_lock+set}" = set; then : - enableval=$enable_libtool_lock; -fi - -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '#line '$LINENO' "configure"' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 -$as_echo_n "checking whether the C compiler needs -belf... " >&6; } -if ${lt_cv_cc_needs_belf+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_cc_needs_belf=yes -else - lt_cv_cc_needs_belf=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 -$as_echo "$lt_cv_cc_needs_belf" >&6; } - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" - -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. -set dummy ${ac_tool_prefix}mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$MANIFEST_TOOL"; then - ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL -if test -n "$MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 -$as_echo "$MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_MANIFEST_TOOL"; then - ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL - # Extract the first word of "mt", so it can be a program name with args. -set dummy mt; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_MANIFEST_TOOL"; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL -if test -n "$ac_ct_MANIFEST_TOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 -$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_MANIFEST_TOOL" = x; then - MANIFEST_TOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL - fi -else - MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" -fi - -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 -$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } -if ${lt_cv_path_mainfest_tool+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&5 - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest* -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 -$as_echo "$lt_cv_path_mainfest_tool" >&6; } -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi - - - - - - - case $host_os in - rhapsody* | darwin*) - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. -set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$DSYMUTIL"; then - ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -DSYMUTIL=$ac_cv_prog_DSYMUTIL -if test -n "$DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 -$as_echo "$DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_DSYMUTIL"; then - ac_ct_DSYMUTIL=$DSYMUTIL - # Extract the first word of "dsymutil", so it can be a program name with args. -set dummy dsymutil; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_DSYMUTIL"; then - ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL -if test -n "$ac_ct_DSYMUTIL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 -$as_echo "$ac_ct_DSYMUTIL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_DSYMUTIL" = x; then - DSYMUTIL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - DSYMUTIL=$ac_ct_DSYMUTIL - fi -else - DSYMUTIL="$ac_cv_prog_DSYMUTIL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. -set dummy ${ac_tool_prefix}nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$NMEDIT"; then - ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -NMEDIT=$ac_cv_prog_NMEDIT -if test -n "$NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 -$as_echo "$NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_NMEDIT"; then - ac_ct_NMEDIT=$NMEDIT - # Extract the first word of "nmedit", so it can be a program name with args. -set dummy nmedit; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_NMEDIT"; then - ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_NMEDIT="nmedit" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT -if test -n "$ac_ct_NMEDIT"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 -$as_echo "$ac_ct_NMEDIT" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_NMEDIT" = x; then - NMEDIT=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - NMEDIT=$ac_ct_NMEDIT - fi -else - NMEDIT="$ac_cv_prog_NMEDIT" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. -set dummy ${ac_tool_prefix}lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$LIPO"; then - ac_cv_prog_LIPO="$LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_LIPO="${ac_tool_prefix}lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -LIPO=$ac_cv_prog_LIPO -if test -n "$LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 -$as_echo "$LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_LIPO"; then - ac_ct_LIPO=$LIPO - # Extract the first word of "lipo", so it can be a program name with args. -set dummy lipo; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_LIPO+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_LIPO"; then - ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_LIPO="lipo" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO -if test -n "$ac_ct_LIPO"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 -$as_echo "$ac_ct_LIPO" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_LIPO" = x; then - LIPO=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - LIPO=$ac_ct_LIPO - fi -else - LIPO="$ac_cv_prog_LIPO" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL"; then - ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL="${ac_tool_prefix}otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL=$ac_cv_prog_OTOOL -if test -n "$OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 -$as_echo "$OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL"; then - ac_ct_OTOOL=$OTOOL - # Extract the first word of "otool", so it can be a program name with args. -set dummy otool; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL"; then - ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL="otool" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL -if test -n "$ac_ct_OTOOL"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 -$as_echo "$ac_ct_OTOOL" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL" = x; then - OTOOL=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL=$ac_ct_OTOOL - fi -else - OTOOL="$ac_cv_prog_OTOOL" -fi - - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. -set dummy ${ac_tool_prefix}otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$OTOOL64"; then - ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -OTOOL64=$ac_cv_prog_OTOOL64 -if test -n "$OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 -$as_echo "$OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - -fi -if test -z "$ac_cv_prog_OTOOL64"; then - ac_ct_OTOOL64=$OTOOL64 - # Extract the first word of "otool64", so it can be a program name with args. -set dummy otool64; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -n "$ac_ct_OTOOL64"; then - ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. -else -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_prog_ac_ct_OTOOL64="otool64" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - -fi -fi -ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 -if test -n "$ac_ct_OTOOL64"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 -$as_echo "$ac_ct_OTOOL64" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - if test "x$ac_ct_OTOOL64" = x; then - OTOOL64=":" - else - case $cross_compiling:$ac_tool_warned in -yes:) -{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 -$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} -ac_tool_warned=yes ;; -esac - OTOOL64=$ac_ct_OTOOL64 - fi -else - OTOOL64="$ac_cv_prog_OTOOL64" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 -$as_echo_n "checking for -single_module linker flag... " >&6; } -if ${lt_cv_apple_cc_single_mod+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&5 - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 -$as_echo "$lt_cv_apple_cc_single_mod" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 -$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } -if ${lt_cv_ld_exported_symbols_list+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_ld_exported_symbols_list=yes -else - lt_cv_ld_exported_symbols_list=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 -$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 -$as_echo_n "checking for -force_load linker flag... " >&6; } -if ${lt_cv_ld_force_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 - echo "$AR cru libconftest.a conftest.o" >&5 - $AR cru libconftest.a conftest.o 2>&5 - echo "$RANLIB libconftest.a" >&5 - $RANLIB libconftest.a 2>&5 - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&5 - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 -$as_echo "$lt_cv_ld_force_load" >&6; } - case $host_os in - rhapsody* | darwin1.[012]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[91]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[012]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac - -for ac_header in dlfcn.h -do : - ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default -" -if test "x$ac_cv_header_dlfcn_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_DLFCN_H 1 -_ACEOF - -fi - -done - - - - -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf - - - - - -# Set options - - - - enable_dlopen=no - - - - # Check whether --enable-shared was given. -if test "${enable_shared+set}" = set; then : - enableval=$enable_shared; p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi - - - - - - - - - - # Check whether --enable-static was given. -if test "${enable_static+set}" = set; then : - enableval=$enable_static; p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi - - - - - - - - - - -# Check whether --with-pic was given. -if test "${with_pic+set}" = set; then : - withval=$with_pic; pic_mode="$withval" -else - pic_mode=default -fi - - -test -z "$pic_mode" && pic_mode=default - - - - - - - - # Check whether --enable-fast-install was given. -if test "${enable_fast_install+set}" = set; then : - enableval=$enable_fast_install; p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi - - - - - - - - - - - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' - - - - - - - - - - - - - - - - - - - - - - - - - - -test -z "$LN_S" && LN_S="ln -s" - - - - - - - - - - - - - - -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 -$as_echo_n "checking for objdir... " >&6; } -if ${lt_cv_objdir+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 -$as_echo "$lt_cv_objdir" >&6; } -objdir=$lt_cv_objdir - - - - - -cat >>confdefs.h <<_ACEOF -#define LT_OBJDIR "$lt_cv_objdir/" -_ACEOF - - - - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 -$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/${ac_tool_prefix}file; then - lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - - - -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 -$as_echo_n "checking for file... " >&6; } -if ${lt_cv_path_MAGIC_CMD+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $MAGIC_CMD in -[\\/*] | ?:[\\/]*) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/file; then - lt_cv_path_MAGIC_CMD="$ac_dir/file" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac -fi - -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 -$as_echo "$MAGIC_CMD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - else - MAGIC_CMD=: - fi -fi - - fi - ;; -esac - -# Use C for the default configuration in the libtool script - -lt_save_CC="$CC" -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -objext=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - -lt_prog_compiler_no_builtin_flag= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; - *) - lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 -$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } -if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_rtti_exceptions=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="-fno-rtti -fno-exceptions" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_rtti_exceptions=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 -$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } - -if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then - lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" -else - : -fi - -fi - - - - - - - lt_prog_compiler_wl= -lt_prog_compiler_pic= -lt_prog_compiler_static= - - - if test "$GCC" = yes; then - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_static='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - ;; - - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - lt_prog_compiler_can_build_shared=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic=-Kconform_pic - fi - ;; - - *) - lt_prog_compiler_pic='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - lt_prog_compiler_wl='-Xlinker ' - lt_prog_compiler_pic='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - lt_prog_compiler_wl='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static='-Bstatic' - else - lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic='-DDLL_EXPORT' - ;; - - hpux9* | hpux10* | hpux11*) - lt_prog_compiler_wl='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - lt_prog_compiler_static='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - lt_prog_compiler_wl='-Wl,' - # PIC (with -KPIC) is the default. - lt_prog_compiler_static='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fPIC' - lt_prog_compiler_static='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='--shared' - lt_prog_compiler_static='--static' - ;; - nagfor*) - # NAG Fortran compiler - lt_prog_compiler_wl='-Wl,-Wl,,' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-fpic' - lt_prog_compiler_static='-Bstatic' - ;; - ccc*) - lt_prog_compiler_wl='-Wl,' - # All Alpha code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-qpic' - lt_prog_compiler_static='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='' - ;; - *Sun\ C*) - # Sun C 5.9 - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - lt_prog_compiler_wl='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - lt_prog_compiler_wl='-Wl,' - # All OSF/1 code is PIC. - lt_prog_compiler_static='-non_shared' - ;; - - rdos*) - lt_prog_compiler_static='-non_shared' - ;; - - solaris*) - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - lt_prog_compiler_wl='-Qoption ld ';; - *) - lt_prog_compiler_wl='-Wl,';; - esac - ;; - - sunos4*) - lt_prog_compiler_wl='-Qoption ld ' - lt_prog_compiler_pic='-PIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - lt_prog_compiler_pic='-Kconform_pic' - lt_prog_compiler_static='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_pic='-KPIC' - lt_prog_compiler_static='-Bstatic' - ;; - - unicos*) - lt_prog_compiler_wl='-Wl,' - lt_prog_compiler_can_build_shared=no - ;; - - uts4*) - lt_prog_compiler_pic='-pic' - lt_prog_compiler_static='-Bstatic' - ;; - - *) - lt_prog_compiler_can_build_shared=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic= - ;; - *) - lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic=$lt_prog_compiler_pic -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 -$as_echo "$lt_cv_prog_compiler_pic" >&6; } -lt_prog_compiler_pic=$lt_cv_prog_compiler_pic - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } -if ${lt_cv_prog_compiler_pic_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works" = xyes; then - case $lt_prog_compiler_pic in - "" | " "*) ;; - *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; - esac -else - lt_prog_compiler_pic= - lt_prog_compiler_can_build_shared=no -fi - -fi - - - - - - - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works=yes - fi - else - lt_cv_prog_compiler_static_works=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 -$as_echo "$lt_cv_prog_compiler_static_works" >&6; } - -if test x"$lt_cv_prog_compiler_static_works" = xyes; then - : -else - lt_prog_compiler_static= -fi - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 -$as_echo "$lt_cv_prog_compiler_c_o" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - runpath_var= - allow_undefined_flag= - always_export_symbols=no - archive_cmds= - archive_expsym_cmds= - compiler_needs_object=no - enable_shared_with_static_runtimes=no - export_dynamic_flag_spec= - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - hardcode_automatic=no - hardcode_direct=no - hardcode_direct_absolute=no - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld= - hardcode_libdir_separator= - hardcode_minus_L=no - hardcode_shlibpath_var=unsupported - inherit_rpath=no - link_all_deplibs=unknown - module_cmds= - module_expsym_cmds= - old_archive_from_new_cmds= - old_archive_from_expsyms_cmds= - thread_safe_flag_spec= - whole_archive_flag_spec= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - include_expsyms= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - ld_shlibs=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; - *\ \(GNU\ Binutils\)\ [3-9]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[3-9]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec='-L$libdir' - export_dynamic_flag_spec='${wl}--export-all-symbols' - allow_undefined_flag=unsupported - always_export_symbols=no - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs=no - fi - ;; - - haiku*) - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs=yes - ;; - - interix[3-9]*) - hardcode_direct=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - whole_archive_flag_spec= - tmp_sharedflag='--shared' ;; - xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' - hardcode_libdir_flag_spec= - hardcode_libdir_flag_spec_ld='-rpath $libdir' - archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - ld_shlibs=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) - ld_shlibs=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - ;; - - sunos4*) - archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - ld_shlibs=no - fi - ;; - esac - - if test "$ld_shlibs" = no; then - runpath_var= - hardcode_libdir_flag_spec= - export_dynamic_flag_spec= - whole_archive_flag_spec= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - allow_undefined_flag=unsupported - always_export_symbols=yes - archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - hardcode_minus_L=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - hardcode_direct=unsupported - fi - ;; - - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds='' - hardcode_direct=yes - hardcode_direct_absolute=yes - hardcode_libdir_separator=':' - link_all_deplibs=yes - file_list_spec='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L=yes - hardcode_libdir_flag_spec='-L$libdir' - hardcode_libdir_separator= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - always_export_symbols=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag="-z nodefs" - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath_+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath_"; then - lt_cv_aix_libpath_="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath_ -fi - - hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag=' ${wl}-bernotok' - allow_undefined_flag=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec='$convenience' - fi - archive_cmds_need_lc=yes - # This is similar to how AIX traditionally builds its shared libraries. - archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds='' - ;; - m68k) - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - ;; - esac - ;; - - bsdi[45]*) - export_dynamic_flag_spec=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - always_export_symbols=yes - file_list_spec='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, )='true' - enable_shared_with_static_runtimes=yes - export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - old_postinstall_cmds='chmod 644 $oldlib' - postlink_cmds='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - hardcode_libdir_flag_spec=' ' - allow_undefined_flag=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - old_archive_from_new_cmds='true' - # FIXME: Should let the user specify the lib program. - old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' - enable_shared_with_static_runtimes=yes - ;; - esac - ;; - - darwin* | rhapsody*) - - - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - whole_archive_flag_spec='' - fi - link_all_deplibs=yes - allow_undefined_flag="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - - else - ld_shlibs=no - fi - - ;; - - dgux*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - freebsd1*) - ld_shlibs=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - hpux9*) - if test "$GCC" = yes; then - archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - export_dynamic_flag_spec='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_flag_spec_ld='+b $libdir' - hardcode_libdir_separator=: - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 -$as_echo_n "checking if $CC understands -b... " >&6; } -if ${lt_cv_prog_compiler__b+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler__b=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -b" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler__b=yes - fi - else - lt_cv_prog_compiler__b=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 -$as_echo "$lt_cv_prog_compiler__b" >&6; } - -if test x"$lt_cv_prog_compiler__b" = xyes; then - archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' -else - archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' -fi - - ;; - esac - fi - if test "$with_gnu_ld" = no; then - hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' - hardcode_libdir_separator=: - - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct=no - hardcode_shlibpath_var=no - ;; - *) - hardcode_direct=yes - hardcode_direct_absolute=yes - export_dynamic_flag_spec='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - hardcode_minus_L=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 -$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } -if ${lt_cv_irix_exported_symbol+:} false; then : - $as_echo_n "(cached) " >&6 -else - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int foo (void) { return 0; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - lt_cv_irix_exported_symbol=yes -else - lt_cv_irix_exported_symbol=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS="$save_LDFLAGS" -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 -$as_echo "$lt_cv_irix_exported_symbol" >&6; } - if test "$lt_cv_irix_exported_symbol" = yes; then - archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - inherit_rpath=yes - link_all_deplibs=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_direct=yes - hardcode_shlibpath_var=no - ;; - - newsos6) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - hardcode_shlibpath_var=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac - fi - else - ld_shlibs=no - fi - ;; - - os2*) - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - allow_undefined_flag=unsupported - archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - archive_cmds_need_lc='no' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' - else - allow_undefined_flag=' -expect_unresolved \*' - archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - hardcode_libdir_flag_spec='-rpath $libdir' - fi - archive_cmds_need_lc='no' - hardcode_libdir_separator=: - ;; - - solaris*) - no_undefined_flag=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - hardcode_libdir_flag_spec='-R$libdir' - hardcode_shlibpath_var=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - whole_archive_flag_spec='-z allextract$convenience -z defaultextract' - fi - ;; - esac - link_all_deplibs=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - hardcode_libdir_flag_spec='-L$libdir' - hardcode_direct=yes - hardcode_minus_L=yes - hardcode_shlibpath_var=no - ;; - - sysv4) - case $host_vendor in - sni) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' - reload_cmds='$CC -r -o $output$reload_objs' - hardcode_direct=no - ;; - motorola) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_direct=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - hardcode_shlibpath_var=no - ;; - - sysv4.3*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - export_dynamic_flag_spec='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_shlibpath_var=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - ld_shlibs=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag='${wl}-z,text' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag='${wl}-z,text' - allow_undefined_flag='${wl}-z,nodefs' - archive_cmds_need_lc=no - hardcode_shlibpath_var=no - hardcode_libdir_flag_spec='${wl}-R,$libdir' - hardcode_libdir_separator=':' - link_all_deplibs=yes - export_dynamic_flag_spec='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_shlibpath_var=no - ;; - - *) - ld_shlibs=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - export_dynamic_flag_spec='${wl}-Blargedynsym' - ;; - esac - fi - fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 -$as_echo "$ld_shlibs" >&6; } -test "$ld_shlibs" = no && can_build_shared=no - -with_gnu_ld=$with_gnu_ld - - - - - - - - - - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl - pic_flag=$lt_prog_compiler_pic - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag - allow_undefined_flag= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc=no - else - lt_cv_archive_cmds_need_lc=yes - fi - allow_undefined_flag=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } - archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[lt_foo]++; } - if (lt_freq[lt_foo] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([A-Za-z]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action= -if test -n "$hardcode_libdir_flag_spec" || - test -n "$runpath_var" || - test "X$hardcode_automatic" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && - test "$hardcode_minus_L" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 -$as_echo "$hardcode_action" >&6; } - -if test "$hardcode_action" = relink || - test "$inherit_rpath" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - -fi - - ;; - - *) - ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" -if test "x$ac_cv_func_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 -$as_echo_n "checking for shl_load in -ldld... " >&6; } -if ${ac_cv_lib_dld_shl_load+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char shl_load (); -int -main () -{ -return shl_load (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_shl_load=yes -else - ac_cv_lib_dld_shl_load=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 -$as_echo "$ac_cv_lib_dld_shl_load" >&6; } -if test "x$ac_cv_lib_dld_shl_load" = xyes; then : - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" -else - ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" -if test "x$ac_cv_func_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 -$as_echo_n "checking for dlopen in -ldl... " >&6; } -if ${ac_cv_lib_dl_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dl_dlopen=yes -else - ac_cv_lib_dl_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 -$as_echo "$ac_cv_lib_dl_dlopen" >&6; } -if test "x$ac_cv_lib_dl_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 -$as_echo_n "checking for dlopen in -lsvld... " >&6; } -if ${ac_cv_lib_svld_dlopen+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsvld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dlopen (); -int -main () -{ -return dlopen (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_svld_dlopen=yes -else - ac_cv_lib_svld_dlopen=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 -$as_echo "$ac_cv_lib_svld_dlopen" >&6; } -if test "x$ac_cv_lib_svld_dlopen" = xyes; then : - lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 -$as_echo_n "checking for dld_link in -ldld... " >&6; } -if ${ac_cv_lib_dld_dld_link+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldld $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char dld_link (); -int -main () -{ -return dld_link (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_dld_dld_link=yes -else - ac_cv_lib_dld_dld_link=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 -$as_echo "$ac_cv_lib_dld_dld_link" >&6; } -if test "x$ac_cv_lib_dld_dld_link" = xyes; then : - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" -fi - - -fi - - -fi - - -fi - - -fi - - -fi - - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 -$as_echo_n "checking whether a program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 -$as_echo "$lt_cv_dlopen_self" >&6; } - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 -$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } -if ${lt_cv_dlopen_self_static+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - lt_cv_dlopen_self_static=cross -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -} -_LT_EOF - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 - (eval $ac_link) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&5 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; - x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; - esac - else : - # compilation failed - lt_cv_dlopen_self_static=no - fi -fi -rm -fr conftest* - - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 -$as_echo "$lt_cv_dlopen_self_static" >&6; } - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi - - - - - - - - - - - - - - - - - -striplib= -old_striplib= -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 -$as_echo_n "checking whether stripping libraries is possible... " >&6; } -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } - else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - fi - ;; - *) - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - ;; - esac -fi - - - - - - - - - - - - - # Report which library types will actually be built - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 -$as_echo_n "checking if libtool supports shared libraries... " >&6; } - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 -$as_echo "$can_build_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 -$as_echo_n "checking whether to build shared libraries... " >&6; } - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[4-9]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 -$as_echo "$enable_shared" >&6; } - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 -$as_echo_n "checking whether to build static libraries... " >&6; } - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 -$as_echo "$enable_static" >&6; } - - - - -fi -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -CC="$lt_save_CC" - - if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 -$as_echo_n "checking how to run the C++ preprocessor... " >&6; } -if test -z "$CXXCPP"; then - if ${ac_cv_prog_CXXCPP+:} false; then : - $as_echo_n "(cached) " >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - break -fi - - done - ac_cv_prog_CXXCPP=$CXXCPP - -fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 -$as_echo "$CXXCPP" >&6; } -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # Prefer to if __STDC__ is defined, since - # exists even on freestanding compilers. - # On the NeXT, cc -E runs the code through the compiler's parser, - # not just through cpp. "Syntax error" is here to catch this case. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#ifdef __STDC__ -# include -#else -# include -#endif - Syntax error -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - -else - # Broken: fails on valid input. -continue -fi -rm -f conftest.err conftest.i conftest.$ac_ext - - # OK, works on sane cases. Now check whether nonexistent headers - # can be detected and how. - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -_ACEOF -if ac_fn_cxx_try_cpp "$LINENO"; then : - # Broken: success on invalid input. -continue -else - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.i conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.i conftest.err conftest.$ac_ext -if $ac_preproc_ok; then : - -else - { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 -$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} -as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check -See \`config.log' for more details" "$LINENO" 5; } -fi - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - -else - _lt_caught_CXX_error=yes -fi - -ac_ext=cpp -ac_cpp='$CXXCPP $CPPFLAGS' -ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_cxx_compiler_gnu - -archive_cmds_need_lc_CXX=no -allow_undefined_flag_CXX= -always_export_symbols_CXX=no -archive_expsym_cmds_CXX= -compiler_needs_object_CXX=no -export_dynamic_flag_spec_CXX= -hardcode_direct_CXX=no -hardcode_direct_absolute_CXX=no -hardcode_libdir_flag_spec_CXX= -hardcode_libdir_flag_spec_ld_CXX= -hardcode_libdir_separator_CXX= -hardcode_minus_L_CXX=no -hardcode_shlibpath_var_CXX=unsupported -hardcode_automatic_CXX=no -inherit_rpath_CXX=no -module_cmds_CXX= -module_expsym_cmds_CXX= -link_all_deplibs_CXX=unknown -old_archive_cmds_CXX=$old_archive_cmds -reload_flag_CXX=$reload_flag -reload_cmds_CXX=$reload_cmds -no_undefined_flag_CXX= -whole_archive_flag_spec_CXX= -enable_shared_with_static_runtimes_CXX=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -objext_CXX=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - - - - - - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC - - - # save warnings/boilerplate of simple test code - ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* - - ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* - - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - compiler_CXX=$CC - for cc_temp in $compiler""; do - case $cc_temp in - compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; - distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` - - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' - else - lt_prog_compiler_no_builtin_flag_CXX= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - - -# Check whether --with-gnu-ld was given. -if test "${with_gnu_ld+set}" = set; then : - withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes -else - with_gnu_ld=no -fi - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 -$as_echo_n "checking for ld used by $CC... " >&6; } - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [\\/]* | ?:[\\/]*) - re_direlt='/[^/][^/]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 -$as_echo_n "checking for GNU ld... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 -$as_echo_n "checking for non-GNU ld... " >&6; } -fi -if ${lt_cv_path_LD+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &5 -$as_echo "$LD" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi -test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 -$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } -if ${lt_cv_prog_gnu_ld+:} false; then : - $as_echo_n "(cached) " >&6 -else - # I'd rather use --version here, but apparently some GNU lds only accept -v. -case `$LD -v 2>&1 &5 -$as_echo "$lt_cv_prog_gnu_ld" >&6; } -with_gnu_ld=$lt_cv_prog_gnu_ld - - - - - - - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - whole_archive_flag_spec_CXX= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - ld_shlibs_CXX=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aix[4-9]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - archive_cmds_CXX='' - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - file_list_spec_CXX='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[012]|aix4.[012].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - hardcode_direct_CXX=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - hardcode_minus_L_CXX=yes - hardcode_libdir_flag_spec_CXX='-L$libdir' - hardcode_libdir_separator_CXX= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - export_dynamic_flag_spec_CXX='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - always_export_symbols_CXX=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - allow_undefined_flag_CXX='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - - archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' - allow_undefined_flag_CXX="-z nodefs" - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - if ${lt_cv_aix_libpath__CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - - lt_aix_libpath_sed=' - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }' - lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - if test -z "$lt_cv_aix_libpath__CXX"; then - lt_cv_aix_libpath__CXX="/usr/lib:/lib" - fi - -fi - - aix_libpath=$lt_cv_aix_libpath__CXX -fi - - hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - no_undefined_flag_CXX=' ${wl}-bernotok' - allow_undefined_flag_CXX=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - whole_archive_flag_spec_CXX='$convenience' - fi - archive_cmds_need_lc_CXX=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - allow_undefined_flag_CXX=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - ld_shlibs_CXX=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - hardcode_libdir_flag_spec_CXX=' ' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=yes - file_list_spec_CXX='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' - enable_shared_with_static_runtimes_CXX=yes - # Don't use ranlib - old_postinstall_cmds_CXX='chmod 644 $oldlib' - postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, - # as there is no search path for DLLs. - hardcode_libdir_flag_spec_CXX='-L$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' - allow_undefined_flag_CXX=unsupported - always_export_symbols_CXX=no - enable_shared_with_static_runtimes_CXX=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - ld_shlibs_CXX=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - - - archive_cmds_need_lc_CXX=no - hardcode_direct_CXX=no - hardcode_automatic_CXX=yes - hardcode_shlibpath_var_CXX=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - whole_archive_flag_spec_CXX='' - fi - link_all_deplibs_CXX=yes - allow_undefined_flag_CXX="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - if test "$lt_cv_apple_cc_single_mod" != "yes"; then - archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi - - else - ld_shlibs_CXX=no - fi - - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - freebsd[12]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - ld_shlibs_CXX=no - ;; - - freebsd-elf*) - archive_cmds_need_lc_CXX=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - ld_shlibs_CXX=yes - ;; - - gnu*) - ;; - - haiku*) - archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - link_all_deplibs_CXX=yes - ;; - - hpux9*) - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - export_dynamic_flag_spec_CXX='${wl}-E' - hardcode_direct_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - export_dynamic_flag_spec_CXX='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - ;; - *) - hardcode_direct_CXX=yes - hardcode_direct_absolute_CXX=yes - hardcode_minus_L_CXX=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - interix[3-9]*) - hardcode_direct_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - link_all_deplibs_CXX=yes - ;; - esac - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - inherit_rpath_CXX=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - archive_cmds_need_lc_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [1-5].* | *pgcpp\ [1-5].*) - prelink_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - old_archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - archive_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - export_dynamic_flag_spec_CXX='${wl}--export-dynamic' - archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - hardcode_libdir_flag_spec_CXX='-R$libdir' - whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - compiler_needs_object_CXX=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - ld_shlibs_CXX=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - ld_shlibs_CXX=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - hardcode_direct_CXX=yes - hardcode_shlibpath_var_CXX=no - hardcode_direct_absolute_CXX=yes - archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - export_dynamic_flag_spec_CXX='${wl}-E' - whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - ld_shlibs_CXX=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' - hardcode_libdir_separator_CXX=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - cxx*) - case $host in - osf3*) - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - ;; - *) - allow_undefined_flag_CXX=' -expect_unresolved \*' - archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - hardcode_libdir_flag_spec_CXX='-rpath $libdir' - ;; - esac - - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' - hardcode_libdir_separator_CXX=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - archive_cmds_need_lc_CXX=yes - no_undefined_flag_CXX=' -zdefs' - archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - hardcode_libdir_flag_spec_CXX='-R$libdir' - hardcode_shlibpath_var_CXX=no - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' - ;; - esac - link_all_deplibs_CXX=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - no_undefined_flag_CXX=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' - case $host_os in - solaris2.[0-5] | solaris2.[0-5].*) ;; - *) - whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) - no_undefined_flag_CXX='${wl}-z,text' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - no_undefined_flag_CXX='${wl}-z,text' - allow_undefined_flag_CXX='${wl}-z,nodefs' - archive_cmds_need_lc_CXX=no - hardcode_shlibpath_var_CXX=no - hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' - hardcode_libdir_separator_CXX=':' - link_all_deplibs_CXX=yes - export_dynamic_flag_spec_CXX='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ - '"$old_archive_cmds_CXX" - reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ - '"$reload_cmds_CXX" - ;; - *) - archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - - *) - # FIXME: insert proper C++ library support - ld_shlibs_CXX=no - ;; - esac - - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } - test "$ld_shlibs_CXX" = no && can_build_shared=no - - GCC_CXX="$GXX" - LD_CXX="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - # Dependencies to place before and after the object being linked: -predep_objects_CXX= -postdep_objects_CXX= -predeps_CXX= -postdeps_CXX= -compiler_lib_search_path_CXX= - -cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF - - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -esac - -if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$compiler_lib_search_path_CXX"; then - compiler_lib_search_path_CXX="${prev}${p}" - else - compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$postdeps_CXX"; then - postdeps_CXX="${prev}${p}" - else - postdeps_CXX="${postdeps_CXX} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$predep_objects_CXX"; then - predep_objects_CXX="$p" - else - predep_objects_CXX="$predep_objects_CXX $p" - fi - else - if test -z "$postdep_objects_CXX"; then - postdep_objects_CXX="$p" - else - postdep_objects_CXX="$postdep_objects_CXX $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling CXX test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -case $host_os in -interix[3-9]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - predep_objects_CXX= - postdep_objects_CXX= - postdeps_CXX= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - postdeps_CXX='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac - - -case " $postdeps_CXX " in -*" -lc "*) archive_cmds_need_lc_CXX=no ;; -esac - compiler_lib_search_dirs_CXX= -if test -n "${compiler_lib_search_path_CXX}"; then - compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - lt_prog_compiler_wl_CXX= -lt_prog_compiler_pic_CXX= -lt_prog_compiler_static_CXX= - - - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - lt_prog_compiler_pic_CXX='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - lt_prog_compiler_pic_CXX='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - lt_prog_compiler_pic_CXX= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - lt_prog_compiler_static_CXX= - ;; - interix[3-9]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - lt_prog_compiler_pic_CXX=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - *) - lt_prog_compiler_pic_CXX='-fPIC' - ;; - esac - else - case $host_os in - aix[4-9]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - lt_prog_compiler_static_CXX='-Bstatic' - else - lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - lt_prog_compiler_pic_CXX='-DDLL_EXPORT' - ;; - dgux*) - case $cc_basename in - ec++*) - lt_prog_compiler_pic_CXX='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - lt_prog_compiler_pic_CXX='+Z' - fi - ;; - aCC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - lt_prog_compiler_pic_CXX='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_static_CXX='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - lt_prog_compiler_wl_CXX='--backend -Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fPIC' - lt_prog_compiler_static_CXX='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-fpic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-qpic' - lt_prog_compiler_static_CXX='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - lt_prog_compiler_pic_CXX='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - lt_prog_compiler_pic_CXX='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - lt_prog_compiler_wl_CXX='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - lt_prog_compiler_pic_CXX='-pic' - ;; - cxx*) - # Digital/Compaq C++ - lt_prog_compiler_wl_CXX='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - lt_prog_compiler_pic_CXX= - lt_prog_compiler_static_CXX='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - lt_prog_compiler_wl_CXX='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - lt_prog_compiler_pic_CXX='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - lt_prog_compiler_pic_CXX='-pic' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - lcc*) - # Lucid - lt_prog_compiler_pic_CXX='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - lt_prog_compiler_wl_CXX='-Wl,' - lt_prog_compiler_pic_CXX='-KPIC' - lt_prog_compiler_static_CXX='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - lt_prog_compiler_pic_CXX='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - lt_prog_compiler_can_build_shared_CXX=no - ;; - esac - fi - -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - lt_prog_compiler_pic_CXX= - ;; - *) - lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" - ;; -esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 -$as_echo_n "checking for $compiler option to produce PIC... " >&6; } -if ${lt_cv_prog_compiler_pic_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } -lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$lt_prog_compiler_pic_CXX"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 -$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } -if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_pic_works_CXX=no - ac_outfile=conftest.$ac_objext - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_pic_works_CXX=yes - fi - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then - case $lt_prog_compiler_pic_CXX in - "" | " "*) ;; - *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; - esac -else - lt_prog_compiler_pic_CXX= - lt_prog_compiler_can_build_shared_CXX=no -fi - -fi - - - - - -# -# Check to make sure the static flag actually works. -# -wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 -$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } -if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_static_works_CXX=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $lt_tmp_static_flag" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&5 - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - lt_cv_prog_compiler_static_works_CXX=yes - fi - else - lt_cv_prog_compiler_static_works_CXX=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } - -if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then - : -else - lt_prog_compiler_static_CXX= -fi - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 -$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } -if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_prog_compiler_c_o_CXX=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&5 - echo "$as_me:$LINENO: \$? = $ac_status" >&5 - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - lt_cv_prog_compiler_c_o_CXX=yes - fi - fi - chmod u+w . 2>&5 - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 -$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } - - - - -hard_links="nottested" -if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 -$as_echo_n "checking if we can lock with hard links... " >&6; } - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 -$as_echo "$hard_links" >&6; } - if test "$hard_links" = no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 -$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} - need_locks=warn - fi -else - need_locks=no -fi - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 -$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } - - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' - case $host_os in - aix[4-9]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - export_symbols_cmds_CXX="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' - exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' - ;; - esac - ;; - *) - export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac - -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 -$as_echo "$ld_shlibs_CXX" >&6; } -test "$ld_shlibs_CXX" = no && can_build_shared=no - -with_gnu_ld_CXX=$with_gnu_ld - - - - - - -# -# Do we need to explicitly link libc? -# -case "x$archive_cmds_need_lc_CXX" in -x|xyes) - # Assume -lc should be added - archive_cmds_need_lc_CXX=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $archive_cmds_CXX in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 -$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } -if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : - $as_echo_n "(cached) " >&6 -else - $RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$lt_prog_compiler_wl_CXX - pic_flag=$lt_prog_compiler_pic_CXX - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$allow_undefined_flag_CXX - allow_undefined_flag_CXX= - if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 - (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - then - lt_cv_archive_cmds_need_lc_CXX=no - else - lt_cv_archive_cmds_need_lc_CXX=yes - fi - allow_undefined_flag_CXX=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 -$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } - archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX - ;; - esac - fi - ;; -esac - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 -$as_echo_n "checking dynamic linker characteristics... " >&6; } - -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[4-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[01] | aix4.[01].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[45]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' - - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[123]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[01]* | freebsdelf3.[01]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ - freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[3-9]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - if ${lt_cv_shlibpath_overrides_runpath+:} false; then : - $as_echo_n "(cached) " >&6 -else - lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ - LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -if ac_fn_cxx_try_link "$LINENO"; then : - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : - lt_cv_shlibpath_overrides_runpath=yes -fi -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - -fi - - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[89] | openbsd2.[89].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 -$as_echo "$dynamic_linker" >&6; } -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 -$as_echo_n "checking how to hardcode library paths into programs... " >&6; } -hardcode_action_CXX= -if test -n "$hardcode_libdir_flag_spec_CXX" || - test -n "$runpath_var_CXX" || - test "X$hardcode_automatic_CXX" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$hardcode_direct_CXX" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && - test "$hardcode_minus_L_CXX" != no; then - # Linking always hardcodes the temporary library directory. - hardcode_action_CXX=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - hardcode_action_CXX=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - hardcode_action_CXX=unsupported -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 -$as_echo "$hardcode_action_CXX" >&6; } - -if test "$hardcode_action_CXX" = relink || - test "$inherit_rpath_CXX" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi - - - - - - - - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -ac_ext=c -ac_cpp='$CPP $CPPFLAGS' -ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' -ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' -ac_compiler_gnu=$ac_cv_c_compiler_gnu - - - - - - - - - - - - - - ac_config_commands="$ac_config_commands libtool" - - - - -# Only expand once: - - - -# Checks for typedefs, structures, and compiler characteristics. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 -$as_echo_n "checking for an ANSI C-conforming const... " >&6; } -if ${ac_cv_c_const+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - const charset cs; - /* SunOS 4.1.1 cc rejects this. */ - char const *const *pcpcc; - char **ppc; - /* NEC SVR4.0.2 mips cc rejects this. */ - struct point {int x, y;}; - static struct point const zero = {0,0}; - /* AIX XL C 1.02.0.0 rejects this. - It does not let you subtract one const X* pointer from another in - an arm of an if-expression whose if-part is not a constant - expression */ - const char *g = "string"; - pcpcc = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++pcpcc; - ppc = (char**) pcpcc; - pcpcc = (char const *const *) ppc; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - if (s) return 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - if (!foo) return 0; - } - return !cs[0] && !zero.x; -#endif - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_const=yes -else - ac_cv_c_const=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 -$as_echo "$ac_cv_c_const" >&6; } -if test $ac_cv_c_const = no; then - -$as_echo "#define const /**/" >>confdefs.h - -fi - -ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" -if test "x$ac_cv_type_off_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define off_t long int -_ACEOF - -fi - -ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" -if test "x$ac_cv_type_size_t" = xyes; then : - -else - -cat >>confdefs.h <<_ACEOF -#define size_t unsigned int -_ACEOF - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 -$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } -if ${ac_cv_header_time+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_header_time=yes -else - ac_cv_header_time=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 -$as_echo "$ac_cv_header_time" >&6; } -if test $ac_cv_header_time = yes; then - -$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 -$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } -if ${ac_cv_struct_tm+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -#include -#include - -int -main () -{ -struct tm tm; - int *p = &tm.tm_sec; - return !p; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_struct_tm=time.h -else - ac_cv_struct_tm=sys/time.h -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 -$as_echo "$ac_cv_struct_tm" >&6; } -if test $ac_cv_struct_tm = sys/time.h; then - -$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 -$as_echo_n "checking for working volatile... " >&6; } -if ${ac_cv_c_volatile+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - -volatile int x; -int * volatile y = (int *) 0; -return !x && !y; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_compile "$LINENO"; then : - ac_cv_c_volatile=yes -else - ac_cv_c_volatile=no -fi -rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 -$as_echo "$ac_cv_c_volatile" >&6; } -if test $ac_cv_c_volatile = no; then - -$as_echo "#define volatile /**/" >>confdefs.h - -fi - - -# Checks for library functions. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 -$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } -if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f conftest.sym conftest.file -echo >conftest.file -if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then - if test "$cross_compiling" = yes; then : - ac_cv_func_lstat_dereferences_slashed_symlink=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -struct stat sbuf; - /* Linux will dereference the symlink and fail, as required by POSIX. - That is better in the sense that it means we will not - have to compile and use the lstat wrapper. */ - return lstat ("conftest.sym/", &sbuf) == 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_lstat_dereferences_slashed_symlink=yes -else - ac_cv_func_lstat_dereferences_slashed_symlink=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -else - # If the `ln -s' command failed, then we probably don't even - # have an lstat function. - ac_cv_func_lstat_dereferences_slashed_symlink=no -fi -rm -f conftest.sym conftest.file - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 -$as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } - -test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && - -cat >>confdefs.h <<_ACEOF -#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 -_ACEOF - - -if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then - case " $LIBOBJS " in - *" lstat.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS lstat.$ac_objext" - ;; -esac - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat accepts an empty string" >&5 -$as_echo_n "checking whether lstat accepts an empty string... " >&6; } -if ${ac_cv_func_lstat_empty_string_bug+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_lstat_empty_string_bug=yes -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -struct stat sbuf; - return lstat ("", &sbuf) == 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_lstat_empty_string_bug=no -else - ac_cv_func_lstat_empty_string_bug=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_empty_string_bug" >&5 -$as_echo "$ac_cv_func_lstat_empty_string_bug" >&6; } -if test $ac_cv_func_lstat_empty_string_bug = yes; then - case " $LIBOBJS " in - *" lstat.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS lstat.$ac_objext" - ;; -esac - - -cat >>confdefs.h <<_ACEOF -#define HAVE_LSTAT_EMPTY_STRING_BUG 1 -_ACEOF - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 -$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } -if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then : - $as_echo_n "(cached) " >&6 -else - rm -f conftest.sym conftest.file -echo >conftest.file -if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then - if test "$cross_compiling" = yes; then : - ac_cv_func_lstat_dereferences_slashed_symlink=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -struct stat sbuf; - /* Linux will dereference the symlink and fail, as required by POSIX. - That is better in the sense that it means we will not - have to compile and use the lstat wrapper. */ - return lstat ("conftest.sym/", &sbuf) == 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_lstat_dereferences_slashed_symlink=yes -else - ac_cv_func_lstat_dereferences_slashed_symlink=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -else - # If the `ln -s' command failed, then we probably don't even - # have an lstat function. - ac_cv_func_lstat_dereferences_slashed_symlink=no -fi -rm -f conftest.sym conftest.file - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 -$as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } - -test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && - -cat >>confdefs.h <<_ACEOF -#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 -_ACEOF - - -if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then - case " $LIBOBJS " in - *" lstat.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS lstat.$ac_objext" - ;; -esac - -fi - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 -$as_echo_n "checking for working memcmp... " >&6; } -if ${ac_cv_func_memcmp_working+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_memcmp_working=no -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ - - /* Some versions of memcmp are not 8-bit clean. */ - char c0 = '\100', c1 = '\200', c2 = '\201'; - if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) - return 1; - - /* The Next x86 OpenStep bug shows up only when comparing 16 bytes - or more and with at least one buffer not starting on a 4-byte boundary. - William Lewis provided this test program. */ - { - char foo[21]; - char bar[21]; - int i; - for (i = 0; i < 4; i++) - { - char *a = foo + i; - char *b = bar + i; - strcpy (a, "--------01111111"); - strcpy (b, "--------10000000"); - if (memcmp (a, b, 16) >= 0) - return 1; - } - return 0; - } - - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_memcmp_working=yes -else - ac_cv_func_memcmp_working=no -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 -$as_echo "$ac_cv_func_memcmp_working" >&6; } -test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in - *" memcmp.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" - ;; -esac - - -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat accepts an empty string" >&5 -$as_echo_n "checking whether stat accepts an empty string... " >&6; } -if ${ac_cv_func_stat_empty_string_bug+:} false; then : - $as_echo_n "(cached) " >&6 -else - if test "$cross_compiling" = yes; then : - ac_cv_func_stat_empty_string_bug=yes -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -$ac_includes_default -int -main () -{ -struct stat sbuf; - return stat ("", &sbuf) == 0; - ; - return 0; -} -_ACEOF -if ac_fn_c_try_run "$LINENO"; then : - ac_cv_func_stat_empty_string_bug=no -else - ac_cv_func_stat_empty_string_bug=yes -fi -rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ - conftest.$ac_objext conftest.beam conftest.$ac_ext -fi - -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_stat_empty_string_bug" >&5 -$as_echo "$ac_cv_func_stat_empty_string_bug" >&6; } -if test $ac_cv_func_stat_empty_string_bug = yes; then - case " $LIBOBJS " in - *" stat.$ac_objext "* ) ;; - *) LIBOBJS="$LIBOBJS stat.$ac_objext" - ;; -esac - - -cat >>confdefs.h <<_ACEOF -#define HAVE_STAT_EMPTY_STRING_BUG 1 -_ACEOF - -fi - -for ac_func in strftime -do : - ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" -if test "x$ac_cv_func_strftime" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_STRFTIME 1 -_ACEOF - -else - # strftime is in -lintl on SCO UNIX. -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 -$as_echo_n "checking for strftime in -lintl... " >&6; } -if ${ac_cv_lib_intl_strftime+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lintl $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char strftime (); -int -main () -{ -return strftime (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_intl_strftime=yes -else - ac_cv_lib_intl_strftime=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 -$as_echo "$ac_cv_lib_intl_strftime" >&6; } -if test "x$ac_cv_lib_intl_strftime" = xyes; then : - $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h - -LIBS="-lintl $LIBS" -fi - -fi -done - -for ac_func in memset sqrt strcasecmp strerror strncasecmp strstr fdatasync ftruncate getcwd gettimeofday localtime_r memmove strerror -do : - as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` -ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" -if eval test \"x\$"$as_ac_var"\" = x"yes"; then : - cat >>confdefs.h <<_ACEOF -#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 -_ACEOF - -fi -done - - -# Checks for installed libraries -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_prepare_v2 in -lsqlite3" >&5 -$as_echo_n "checking for sqlite3_prepare_v2 in -lsqlite3... " >&6; } -if ${ac_cv_lib_sqlite3_sqlite3_prepare_v2+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsqlite3 -lm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char sqlite3_prepare_v2 (); -int -main () -{ -return sqlite3_prepare_v2 (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_sqlite3_sqlite3_prepare_v2=yes -else - ac_cv_lib_sqlite3_sqlite3_prepare_v2=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_prepare_v2" >&5 -$as_echo "$ac_cv_lib_sqlite3_sqlite3_prepare_v2" >&6; } -if test "x$ac_cv_lib_sqlite3_sqlite3_prepare_v2" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBSQLITE3 1 -_ACEOF - - LIBS="-lsqlite3 $LIBS" - -else - as_fn_error $? "'libsqlite3' is required but it doesn't seem to be installed on this system." "$LINENO" 5 -fi - - -ac_config_files="$ac_config_files Makefile src/Makefile src/headers/Makefile src/gaiaaux/Makefile src/gaiaexif/Makefile src/gaiageo/Makefile src/gaiageo/flex/Makefile src/gaiageo/lemon/Makefile src/gaiageo/lemon/lemon_src/Makefile src/spatialite/Makefile src/shapefiles/Makefile src/srsinit/Makefile src/srsinit/epsg_update/Makefile src/virtualtext/Makefile test/Makefile examples/Makefile Doxyfile spatialite.pc" - - -#----------------------------------------------------------------------- -# --enable-mathsql -# -# Check whether --enable-mathsql was given. -if test "${enable_mathsql+set}" = set; then : - enableval=$enable_mathsql; -else - enable_mathsql=yes -fi - -if test x"$enable_mathsql" != "xyes"; then - $as_echo "#define OMIT_MATHSQL 1" >>confdefs.h - -fi -#----------------------------------------------------------------------- - -#----------------------------------------------------------------------- -# --enable-geocallbacks -# -# Check whether --enable-geocallbacks was given. -if test "${enable_geocallbacks+set}" = set; then : - enableval=$enable_geocallbacks; -else - enable_geocallbacks=no -fi - -if test x"$enable_geocallbacks" == "xyes"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_rtree_geometry_callback in -lsqlite3" >&5 -$as_echo_n "checking for sqlite3_rtree_geometry_callback in -lsqlite3... " >&6; } -if ${ac_cv_lib_sqlite3_sqlite3_rtree_geometry_callback+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsqlite3 -lm $LIBS" -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char sqlite3_rtree_geometry_callback (); -int -main () -{ -return sqlite3_rtree_geometry_callback (); - ; - return 0; -} -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - ac_cv_lib_sqlite3_sqlite3_rtree_geometry_callback=yes -else - ac_cv_lib_sqlite3_sqlite3_rtree_geometry_callback=no -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_rtree_geometry_callback" >&5 -$as_echo "$ac_cv_lib_sqlite3_sqlite3_rtree_geometry_callback" >&6; } -if test "x$ac_cv_lib_sqlite3_sqlite3_rtree_geometry_callback" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBSQLITE3 1 -_ACEOF - - LIBS="-lsqlite3 $LIBS" - -else - as_fn_error $? "obsolete 'libsqlite3' (< v.3.7.3). please retry specifying: --disable-geocallbacks" "$LINENO" 5 -fi - -else - $as_echo "#define OMIT_GEOCALLBACKS 1" >>confdefs.h - -fi -#----------------------------------------------------------------------- - -#----------------------------------------------------------------------- -# --enable-proj -# -# Check whether --enable-proj was given. -if test "${enable_proj+set}" = set; then : - enableval=$enable_proj; -else - enable_proj=yes -fi - -if test x"$enable_proj" != "xno"; then - for ac_header in proj_api.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "proj_api.h" "ac_cv_header_proj_api_h" "$ac_includes_default" -if test "x$ac_cv_header_proj_api_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_PROJ_API_H 1 -_ACEOF - -else - as_fn_error $? "cannot find proj_api.h, bailing out" "$LINENO" 5 -fi - -done - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pj_init_plus" >&5 -$as_echo_n "checking for library containing pj_init_plus... " >&6; } -if ${ac_cv_search_pj_init_plus+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char pj_init_plus (); -int -main () -{ -return pj_init_plus (); - ; - return 0; -} -_ACEOF -for ac_lib in '' proj; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib -lm $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_pj_init_plus=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_pj_init_plus+:} false; then : - break -fi -done -if ${ac_cv_search_pj_init_plus+:} false; then : - -else - ac_cv_search_pj_init_plus=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pj_init_plus" >&5 -$as_echo "$ac_cv_search_pj_init_plus" >&6; } -ac_res=$ac_cv_search_pj_init_plus -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -else - as_fn_error $? "'libproj' is required but it doesn't seem to be installed on this system." "$LINENO" 5 -fi - -else - $as_echo "#define OMIT_PROJ 1" >>confdefs.h - -fi -#----------------------------------------------------------------------- - -#----------------------------------------------------------------------- -# --enable-iconv -# -# Check whether --enable-iconv was given. -if test "${enable_iconv+set}" = set; then : - enableval=$enable_iconv; -else - enable_iconv=yes -fi - -if test x"$enable_iconv" != "xno"; then - for ac_header in iconv.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "iconv.h" "ac_cv_header_iconv_h" "$ac_includes_default" -if test "x$ac_cv_header_iconv_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_ICONV_H 1 -_ACEOF - -else - as_fn_error $? "cannot find iconv.h, bailing out" "$LINENO" 5 -fi - -done - -# on some systems "iconv()" lives in libc. On others it lives in libiconv -# on older systems "libiconv()" lives in libiconv - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing iconv" >&5 -$as_echo_n "checking for library containing iconv... " >&6; } -if ${ac_cv_search_iconv+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char iconv (); -int -main () -{ -return iconv (); - ; - return 0; -} -_ACEOF -for ac_lib in '' iconv; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_iconv=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_iconv+:} false; then : - break -fi -done -if ${ac_cv_search_iconv+:} false; then : - -else - ac_cv_search_iconv=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_iconv" >&5 -$as_echo "$ac_cv_search_iconv" >&6; } -ac_res=$ac_cv_search_iconv -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing libiconv" >&5 -$as_echo_n "checking for library containing libiconv... " >&6; } -if ${ac_cv_search_libiconv+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char libiconv (); -int -main () -{ -return libiconv (); - ; - return 0; -} -_ACEOF -for ac_lib in '' iconv; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_libiconv=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_libiconv+:} false; then : - break -fi -done -if ${ac_cv_search_libiconv+:} false; then : - -else - ac_cv_search_libiconv=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_libiconv" >&5 -$as_echo "$ac_cv_search_libiconv" >&6; } -ac_res=$ac_cv_search_libiconv -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -else - as_fn_error $? "'libiconv' is required but it doesn't seem to be installed on this system." "$LINENO" 5 -fi - -fi - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing locale_charset" >&5 -$as_echo_n "checking for library containing locale_charset... " >&6; } -if ${ac_cv_search_locale_charset+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char locale_charset (); -int -main () -{ -return locale_charset (); - ; - return 0; -} -_ACEOF -for ac_lib in '' charset; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_locale_charset=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_locale_charset+:} false; then : - break -fi -done -if ${ac_cv_search_locale_charset+:} false; then : - -else - ac_cv_search_locale_charset=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_locale_charset" >&5 -$as_echo "$ac_cv_search_locale_charset" >&6; } -ac_res=$ac_cv_search_locale_charset -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing nl_langinfo" >&5 -$as_echo_n "checking for library containing nl_langinfo... " >&6; } -if ${ac_cv_search_nl_langinfo+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char nl_langinfo (); -int -main () -{ -return nl_langinfo (); - ; - return 0; -} -_ACEOF -for ac_lib in '' c; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_nl_langinfo=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_nl_langinfo+:} false; then : - break -fi -done -if ${ac_cv_search_nl_langinfo+:} false; then : - -else - ac_cv_search_nl_langinfo=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_nl_langinfo" >&5 -$as_echo "$ac_cv_search_nl_langinfo" >&6; } -ac_res=$ac_cv_search_nl_langinfo -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -else - as_fn_error $? "'libcharset' is required but it doesn't seem to be installed on this system." "$LINENO" 5 -fi - -fi - -else - $as_echo "#define OMIT_ICONV 1" >>confdefs.h - -fi - -#----------------------------------------------------------------------- -# --enable-freexl -# -# Check whether --enable-freexl was given. -if test "${enable_freexl+set}" = set; then : - enableval=$enable_freexl; -else - enable_freexl=yes -fi - -if test x"$enable_freexl" != "xno"; then - for ac_header in freexl.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "freexl.h" "ac_cv_header_freexl_h" "$ac_includes_default" -if test "x$ac_cv_header_freexl_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_FREEXL_H 1 -_ACEOF - -else - as_fn_error $? "cannot find freexl.h, bailing out" "$LINENO" 5 -fi - -done - - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing freexl_open" >&5 -$as_echo_n "checking for library containing freexl_open... " >&6; } -if ${ac_cv_search_freexl_open+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char freexl_open (); -int -main () -{ -return freexl_open (); - ; - return 0; -} -_ACEOF -for ac_lib in '' freexl; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib -lm $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_freexl_open=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_freexl_open+:} false; then : - break -fi -done -if ${ac_cv_search_freexl_open+:} false; then : - -else - ac_cv_search_freexl_open=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_freexl_open" >&5 -$as_echo "$ac_cv_search_freexl_open" >&6; } -ac_res=$ac_cv_search_freexl_open -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -else - as_fn_error $? "'libfreexl' is required but it doesn't seem to be installed on this system." "$LINENO" 5 -fi - -else - $as_echo "#define OMIT_FREEXL 1" >>confdefs.h - -fi -#----------------------------------------------------------------------- - -#----------------------------------------------------------------------- -# --enable-epsg -# -# Check whether --enable-epsg was given. -if test "${enable_epsg+set}" = set; then : - enableval=$enable_epsg; -else - enable_epsg=yes -fi - -if test x"$enable_epsg" != "xyes"; then - $as_echo "#define OMIT_EPSG 1" >>confdefs.h - -fi -#----------------------------------------------------------------------- - -#----------------------------------------------------------------------- -# --enable-geos -# -# Check whether --enable-geos was given. -if test "${enable_geos+set}" = set; then : - enableval=$enable_geos; -else - enable_geos=yes -fi - -if test x"$enable_geos" != "xno"; then - #----------------------------------------------------------------------- - # --with-geosconfig - # - -# Check whether --with-geosconfig was given. -if test "${with_geosconfig+set}" = set; then : - withval=$with_geosconfig; GEOSCONFIG="$withval" -else - GEOSCONFIG="" -fi - - if test "x$GEOSCONFIG" = "x"; then - # GEOSCONFIG was not specified, so search within the current path - # Extract the first word of "geos-config", so it can be a program name with args. -set dummy geos-config; ac_word=$2 -{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 -$as_echo_n "checking for $ac_word... " >&6; } -if ${ac_cv_path_GEOSCONFIG+:} false; then : - $as_echo_n "(cached) " >&6 -else - case $GEOSCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_GEOSCONFIG="$GEOSCONFIG" # Let the user override the test with a path. - ;; - *) - as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then - ac_cv_path_GEOSCONFIG="$as_dir/$ac_word$ac_exec_ext" - $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 - break 2 - fi -done - done -IFS=$as_save_IFS - - ;; -esac -fi -GEOSCONFIG=$ac_cv_path_GEOSCONFIG -if test -n "$GEOSCONFIG"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GEOSCONFIG" >&5 -$as_echo "$GEOSCONFIG" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } -fi - - - # If we couldn't find geos-config, display an error - if test "x$GEOSCONFIG" = "x"; then - as_fn_error $? "could not find geos-config within the current path. You may need to try re-running configure with a --with-geosconfig parameter." "$LINENO" 5 - fi - else - # GEOSCONFIG was specified; display a message to the user - if test "x$GEOSCONFIG" = "xyes"; then - as_fn_error $? "you must specify a parameter to --with-geosconfig, e.g. --with-geosconfig=/path/to/geos-config" "$LINENO" 5 - else - if test -f $GEOSCONFIG; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using user-specified geos-config file: $GEOSCONFIG" >&5 -$as_echo "Using user-specified geos-config file: $GEOSCONFIG" >&6; } - else - as_fn_error $? "the user-specified geos-config file $GEOSCONFIG does not exist" "$LINENO" 5 - fi - fi - fi - # Extract the linker and include flags - GEOS_LDFLAGS=`$GEOSCONFIG --ldflags` - GEOS_CFLAGS=-I`$GEOSCONFIG --includes` - - - # Ensure that we can parse geos_c.h - CPPFLAGS_SAVE="$CPPFLAGS" - CPPFLAGS="$GEOS_CFLAGS" - for ac_header in geos_c.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "geos_c.h" "ac_cv_header_geos_c_h" "$ac_includes_default" -if test "x$ac_cv_header_geos_c_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_GEOS_C_H 1 -_ACEOF - -else - as_fn_error $? "could not find geos_c.h - you may need to specify the directory of a geos-config file using --with-geosconfig" "$LINENO" 5 -fi - -done - - CPPFLAGS="$CPPFLAGS_SAVE" - # Ensure we can link against libgeos_c - LIBS_SAVE="$LIBS" - LIBS="$GEOS_LDFLAGS" - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing GEOSTopologyPreserveSimplify" >&5 -$as_echo_n "checking for library containing GEOSTopologyPreserveSimplify... " >&6; } -if ${ac_cv_search_GEOSTopologyPreserveSimplify+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char GEOSTopologyPreserveSimplify (); -int -main () -{ -return GEOSTopologyPreserveSimplify (); - ; - return 0; -} -_ACEOF -for ac_lib in '' geos_c; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_GEOSTopologyPreserveSimplify=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_GEOSTopologyPreserveSimplify+:} false; then : - break -fi -done -if ${ac_cv_search_GEOSTopologyPreserveSimplify+:} false; then : - -else - ac_cv_search_GEOSTopologyPreserveSimplify=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_GEOSTopologyPreserveSimplify" >&5 -$as_echo "$ac_cv_search_GEOSTopologyPreserveSimplify" >&6; } -ac_res=$ac_cv_search_GEOSTopologyPreserveSimplify -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -else - as_fn_error $? "could not find libgeos_c - you may need to specify the directory of a geos-config file using --with-geosconfig" "$LINENO" 5 -fi - - LIBS="$LIBS_SAVE" - LIBS=$LIBS$GEOS_LDFLAGS' -lgeos_c' - - #----------------------------------------------------------------------- - # --enable-geosadvanced - # - # Check whether --enable-geosadvanced was given. -if test "${enable_geosadvanced+set}" = set; then : - enableval=$enable_geosadvanced; -else - enable_geosadvanced=yes -fi - - if test x"$enable_geosadvanced" != "xno"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing GEOSCoveredBy" >&5 -$as_echo_n "checking for library containing GEOSCoveredBy... " >&6; } -if ${ac_cv_search_GEOSCoveredBy+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char GEOSCoveredBy (); -int -main () -{ -return GEOSCoveredBy (); - ; - return 0; -} -_ACEOF -for ac_lib in '' geos_c; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_GEOSCoveredBy=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_GEOSCoveredBy+:} false; then : - break -fi -done -if ${ac_cv_search_GEOSCoveredBy+:} false; then : - -else - ac_cv_search_GEOSCoveredBy=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_GEOSCoveredBy" >&5 -$as_echo "$ac_cv_search_GEOSCoveredBy" >&6; } -ac_res=$ac_cv_search_GEOSCoveredBy -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -else - as_fn_error $? "obsolete 'libgeos_c' (< v.3.3.0). please retry specifying: --disable-geosadvanced." "$LINENO" 5 -fi - - $as_echo "#define GEOS_ADVANCED 1" >>confdefs.h - - fi - - #----------------------------------------------------------------------- - # --enable-geostrunk - # - # Check whether --enable-geostrunk was given. -if test "${enable_geostrunk+set}" = set; then : - enableval=$enable_geostrunk; -else - enable_geostrunk=no -fi - - if test x"$enable_geostrunk" != "xno"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing GEOSDelaunayTriangulation" >&5 -$as_echo_n "checking for library containing GEOSDelaunayTriangulation... " >&6; } -if ${ac_cv_search_GEOSDelaunayTriangulation+:} false; then : - $as_echo_n "(cached) " >&6 -else - ac_func_search_save_LIBS=$LIBS -cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -/* Override any GCC internal prototype to avoid an error. - Use char because int might match the return type of a GCC - builtin and then its argument prototype would still apply. */ -#ifdef __cplusplus -extern "C" -#endif -char GEOSDelaunayTriangulation (); -int -main () -{ -return GEOSDelaunayTriangulation (); - ; - return 0; -} -_ACEOF -for ac_lib in '' geos_c; do - if test -z "$ac_lib"; then - ac_res="none required" - else - ac_res=-l$ac_lib - LIBS="-l$ac_lib $ac_func_search_save_LIBS" - fi - if ac_fn_c_try_link "$LINENO"; then : - ac_cv_search_GEOSDelaunayTriangulation=$ac_res -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext - if ${ac_cv_search_GEOSDelaunayTriangulation+:} false; then : - break -fi -done -if ${ac_cv_search_GEOSDelaunayTriangulation+:} false; then : - -else - ac_cv_search_GEOSDelaunayTriangulation=no -fi -rm conftest.$ac_ext -LIBS=$ac_func_search_save_LIBS -fi -{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_GEOSDelaunayTriangulation" >&5 -$as_echo "$ac_cv_search_GEOSDelaunayTriangulation" >&6; } -ac_res=$ac_cv_search_GEOSDelaunayTriangulation -if test "$ac_res" != no; then : - test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" - -else - as_fn_error $? "'libgeos_c' (>= v.3.4.0) is required but it doesn't seem to be installed on this system." "$LINENO" 5 -fi - - $as_echo "#define GEOS_TRUNK 1" >>confdefs.h - - fi - - #----------------------------------------------------------------------- - # --enable-lwgeom - # - # Check whether --enable-lwgeom was given. -if test "${enable_lwgeom+set}" = set; then : - enableval=$enable_lwgeom; -else - enable_lwgeom=no -fi - - if test x"$enable_lwgeom" != "xno"; then - for ac_header in liblwgeom.h -do : - ac_fn_c_check_header_mongrel "$LINENO" "liblwgeom.h" "ac_cv_header_liblwgeom_h" "$ac_includes_default" -if test "x$ac_cv_header_liblwgeom_h" = xyes; then : - cat >>confdefs.h <<_ACEOF -#define HAVE_LIBLWGEOM_H 1 -_ACEOF - -else - as_fn_error $? "cannot find liblwgeom.h, bailing out" "$LINENO" 5 -fi - -done - - _save_libs="$LIBS" - LIBS=$LIBS' -llwgeom -lgeos_c' - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ -int main() { return lwgeom_make_valid(); return 0; } - void lwgeom_init_allocators(void) { return; } -_ACEOF -if ac_fn_c_try_link "$LINENO"; then : - $as_echo "#define ENABLE_LWGEOM 1" >>confdefs.h - -else - as_fn_error $? "'liblwgeom' doesn't seem to be installed on this system; unsupported lwgeom_make_valid()." "$LINENO" 5 -fi -rm -f core conftest.err conftest.$ac_objext \ - conftest$ac_exeext conftest.$ac_ext - LIBS="$_save_libs" - LIBS=$LIBS' -llwgeom -lgeos_c' - fi -else - $as_echo "#define OMIT_GEOS 1" >>confdefs.h - -fi - -#----------------------------------------------------------------------- -# --enable-gcov -# -# Check whether --enable-gcov was given. -if test "${enable_gcov+set}" = set; then : - enableval=$enable_gcov; -fi - -if test "x$enable_gcov" = "xyes"; then - CFLAGS=$CFLAGS" -fprofile-arcs -ftest-coverage -g" - GCOV_FLAGS="-lgcov" -fi -#----------------------------------------------------------------------- - -# Checking for MinGW - if test "$target_alias" = "mingw32"; then - MINGW_TRUE= - MINGW_FALSE='#' -else - MINGW_TRUE='#' - MINGW_FALSE= -fi - -# Checking for Mac OsX - if test "$target_alias" = "macosx"; then - MACOSX_TRUE= - MACOSX_FALSE='#' -else - MACOSX_TRUE='#' - MACOSX_FALSE= -fi - -# Checking for Android - if test "$target_alias" = "android"; then - ANDROID_TRUE= - ANDROID_FALSE='#' -else - ANDROID_TRUE='#' - ANDROID_FALSE= -fi - - -cat >confcache <<\_ACEOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overridden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, we kill variables containing newlines. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -( - for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do - eval ac_val=\$$ac_var - case $ac_val in #( - *${as_nl}*) - case $ac_var in #( - *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 -$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; - esac - case $ac_var in #( - _ | IFS | as_nl) ;; #( - BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( - *) { eval $ac_var=; unset $ac_var;} ;; - esac ;; - esac - done - - (set) 2>&1 | - case $as_nl`(ac_space=' '; set) 2>&1` in #( - *${as_nl}ac_space=\ *) - # `set' does not quote correctly, so add quotes: double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \. - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; #( - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" - ;; - esac | - sort -) | - sed ' - /^ac_cv_env_/b end - t clear - :clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - :end' >>confcache -if diff "$cache_file" confcache >/dev/null 2>&1; then :; else - if test -w "$cache_file"; then - if test "x$cache_file" != "x/dev/null"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 -$as_echo "$as_me: updating cache $cache_file" >&6;} - if test ! -f "$cache_file" || test -h "$cache_file"; then - cat confcache >"$cache_file" - else - case $cache_file in #( - */* | ?:*) - mv -f confcache "$cache_file"$$ && - mv -f "$cache_file"$$ "$cache_file" ;; #( - *) - mv -f confcache "$cache_file" ;; - esac - fi - fi - else - { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 -$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -DEFS=-DHAVE_CONFIG_H - -ac_libobjs= -ac_ltlibobjs= -U= -for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue - # 1. Remove the extension, and $U if already installed. - ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' - ac_i=`$as_echo "$ac_i" | sed "$ac_script"` - # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR - # will be set to the directory where LIBOBJS objects are built. - as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" - as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' -done -LIBOBJS=$ac_libobjs - -LTLIBOBJS=$ac_ltlibobjs - - - if test -n "$EXEEXT"; then - am__EXEEXT_TRUE= - am__EXEEXT_FALSE='#' -else - am__EXEEXT_TRUE='#' - am__EXEEXT_FALSE= -fi - -if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then - as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then - as_fn_error $? "conditional \"AMDEP\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then - as_fn_error $? "conditional \"am__fastdepCC\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MINGW_TRUE}" && test -z "${MINGW_FALSE}"; then - as_fn_error $? "conditional \"MINGW\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${MACOSX_TRUE}" && test -z "${MACOSX_FALSE}"; then - as_fn_error $? "conditional \"MACOSX\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ANDROID_TRUE}" && test -z "${ANDROID_FALSE}"; then - as_fn_error $? "conditional \"ANDROID\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi - -: "${CONFIG_STATUS=./config.status}" -ac_write_fail=0 -ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $CONFIG_STATUS" -{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 -$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} -as_write_fail=0 -cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 -#! $SHELL -# Generated by $as_me. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -ac_cs_recheck=false -ac_cs_silent=false - -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 -## -------------------- ## -## M4sh Initialization. ## -## -------------------- ## - -# Be more Bourne compatible -DUALCASE=1; export DUALCASE # for MKS sh -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : - emulate sh - NULLCMD=: - # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in #( - *posix*) : - set -o posix ;; #( - *) : - ;; -esac -fi - - -as_nl=' -' -export as_nl -# Printing a long string crashes Solaris 7 /usr/bin/printf. -as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo -as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo -# Prefer a ksh shell builtin over an external printf program on Solaris, -# but without wasting forks for bash or zsh. -if test -z "$BASH_VERSION$ZSH_VERSION" \ - && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='print -r --' - as_echo_n='print -rn --' -elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then - as_echo='printf %s\n' - as_echo_n='printf %s' -else - if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then - as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' - as_echo_n='/usr/ucb/echo -n' - else - as_echo_body='eval expr "X$1" : "X\\(.*\\)"' - as_echo_n_body='eval - arg=$1; - case $arg in #( - *"$as_nl"*) - expr "X$arg" : "X\\(.*\\)$as_nl"; - arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; - esac; - expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" - ' - export as_echo_n_body - as_echo_n='sh -c $as_echo_n_body as_echo' - fi - export as_echo_body - as_echo='sh -c $as_echo_body as_echo' -fi - -# The user is always right. -if test "${PATH_SEPARATOR+set}" != set; then - PATH_SEPARATOR=: - (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { - (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || - PATH_SEPARATOR=';' - } -fi - - -# IFS -# We need space, tab and new line, in precisely that order. Quoting is -# there to prevent editors from complaining about space-tab. -# (If _AS_PATH_WALK were called with IFS unset, it would disable word -# splitting by setting IFS to empty value.) -IFS=" "" $as_nl" - -# Find who we are. Look in the path if we contain no directory separator. -as_myself= -case $0 in #(( - *[\\/]* ) as_myself=$0 ;; - *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break - done -IFS=$as_save_IFS - - ;; -esac -# We did not find ourselves, most probably we were run as `sh COMMAND' -# in which case we are not to be found in the path. -if test "x$as_myself" = x; then - as_myself=$0 -fi -if test ! -f "$as_myself"; then - $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 - exit 1 -fi - -# Unset variables that we do not need and which cause bugs (e.g. in -# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" -# suppresses any "Segmentation fault" message there. '((' could -# trigger a bug in pdksh 5.2.14. -for as_var in BASH_ENV ENV MAIL MAILPATH -do eval test x\${$as_var+set} = xset \ - && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : -done -PS1='$ ' -PS2='> ' -PS4='+ ' - -# NLS nuisances. -LC_ALL=C -export LC_ALL -LANGUAGE=C -export LANGUAGE - -# CDPATH. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - - -# as_fn_error STATUS ERROR [LINENO LOG_FD] -# ---------------------------------------- -# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are -# provided, also output the error to LOG_FD, referencing LINENO. Then exit the -# script with STATUS, using 1 if that was 0. -as_fn_error () -{ - as_status=$1; test $as_status -eq 0 && as_status=1 - if test "$4"; then - as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack - $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 - fi - $as_echo "$as_me: error: $2" >&2 - as_fn_exit $as_status -} # as_fn_error - - -# as_fn_set_status STATUS -# ----------------------- -# Set $? to STATUS, without forking. -as_fn_set_status () -{ - return $1 -} # as_fn_set_status - -# as_fn_exit STATUS -# ----------------- -# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. -as_fn_exit () -{ - set +e - as_fn_set_status $1 - exit $1 -} # as_fn_exit - -# as_fn_unset VAR -# --------------- -# Portably unset VAR. -as_fn_unset () -{ - { eval $1=; unset $1;} -} -as_unset=as_fn_unset -# as_fn_append VAR VALUE -# ---------------------- -# Append the text in VALUE to the end of the definition contained in VAR. Take -# advantage of any shell optimizations that allow amortized linear growth over -# repeated appends, instead of the typical quadratic growth present in naive -# implementations. -if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : - eval 'as_fn_append () - { - eval $1+=\$2 - }' -else - as_fn_append () - { - eval $1=\$$1\$2 - } -fi # as_fn_append - -# as_fn_arith ARG... -# ------------------ -# Perform arithmetic evaluation on the ARGs, and store the result in the -# global $as_val. Take advantage of shells that can avoid forks. The arguments -# must be portable across $(()) and expr. -if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : - eval 'as_fn_arith () - { - as_val=$(( $* )) - }' -else - as_fn_arith () - { - as_val=`expr "$@" || test $? -eq 1` - } -fi # as_fn_arith - - -if expr a : '\(a\)' >/dev/null 2>&1 && - test "X`expr 00001 : '.*\(...\)'`" = X001; then - as_expr=expr -else - as_expr=false -fi - -if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then - as_basename=basename -else - as_basename=false -fi - -if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then - as_dirname=dirname -else - as_dirname=false -fi - -as_me=`$as_basename -- "$0" || -$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ - X"$0" : 'X\(//\)$' \| \ - X"$0" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X/"$0" | - sed '/^.*\/\([^/][^/]*\)\/*$/{ - s//\1/ - q - } - /^X\/\(\/\/\)$/{ - s//\1/ - q - } - /^X\/\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -ECHO_C= ECHO_N= ECHO_T= -case `echo -n x` in #((((( --n*) - case `echo 'xy\c'` in - *c*) ECHO_T=' ';; # ECHO_T is single tab character. - xy) ECHO_C='\c';; - *) echo `echo ksh88 bug on AIX 6.1` > /dev/null - ECHO_T=' ';; - esac;; -*) - ECHO_N='-n';; -esac - -rm -f conf$$ conf$$.exe conf$$.file -if test -d conf$$.dir; then - rm -f conf$$.dir/conf$$.file -else - rm -f conf$$.dir - mkdir conf$$.dir 2>/dev/null -fi -if (echo >conf$$.file) 2>/dev/null; then - if ln -s conf$$.file conf$$ 2>/dev/null; then - as_ln_s='ln -s' - # ... but there are two gotchas: - # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. - # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. - ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' - elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln - else - as_ln_s='cp -p' - fi -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file -rmdir conf$$.dir 2>/dev/null - - -# as_fn_mkdir_p -# ------------- -# Create "$as_dir" as a directory, including parents if necessary. -as_fn_mkdir_p () -{ - - case $as_dir in #( - -*) as_dir=./$as_dir;; - esac - test -d "$as_dir" || eval $as_mkdir_p || { - as_dirs= - while :; do - case $as_dir in #( - *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( - *) as_qdir=$as_dir;; - esac - as_dirs="'$as_qdir' $as_dirs" - as_dir=`$as_dirname -- "$as_dir" || -$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$as_dir" : 'X\(//\)[^/]' \| \ - X"$as_dir" : 'X\(//\)$' \| \ - X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$as_dir" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - test -d "$as_dir" && break - done - test -z "$as_dirs" || eval "mkdir $as_dirs" - } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" - - -} # as_fn_mkdir_p -if mkdir -p . 2>/dev/null; then - as_mkdir_p='mkdir -p "$as_dir"' -else - test -d ./-p && rmdir ./-p - as_mkdir_p=false -fi - -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" - - -exec 6>&1 -## ----------------------------------- ## -## Main body of $CONFIG_STATUS script. ## -## ----------------------------------- ## -_ASEOF -test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# Save the log message, to keep $0 and so on meaningful, and to -# report actual input values of CONFIG_FILES etc. instead of their -# values after options handling. -ac_log=" -This file was extended by libspatialite $as_me 4.0.0, which was -generated by GNU Autoconf 2.68. Invocation command line was - - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - $ $0 $@ - -on `(hostname || uname -n) 2>/dev/null | sed 1q` -" - -_ACEOF - -case $ac_config_files in *" -"*) set x $ac_config_files; shift; ac_config_files=$*;; -esac - -case $ac_config_headers in *" -"*) set x $ac_config_headers; shift; ac_config_headers=$*;; -esac - - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# Files that config.status was made for. -config_files="$ac_config_files" -config_headers="$ac_config_headers" -config_commands="$ac_config_commands" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -ac_cs_usage="\ -\`$as_me' instantiates files and other configuration actions -from templates according to the current configuration. Unless the files -and actions are specified as TAGs, all are instantiated by default. - -Usage: $0 [OPTION]... [TAG]... - - -h, --help print this help, then exit - -V, --version print version number and configuration settings, then exit - --config print configuration, then exit - -q, --quiet, --silent - do not print progress messages - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to ." - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" -ac_cs_version="\\ -libspatialite config.status 4.0.0 -configured by $0, generated by GNU Autoconf 2.68, - with options \\"\$ac_cs_config\\" - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." - -ac_pwd='$ac_pwd' -srcdir='$srcdir' -INSTALL='$INSTALL' -MKDIR_P='$MKDIR_P' -AWK='$AWK' -test -n "\$AWK" || AWK=awk -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# The default lists apply if the user does not specify any file. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=?*) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` - ac_shift=: - ;; - --*=) - ac_option=`expr "X$1" : 'X\([^=]*\)='` - ac_optarg= - ac_shift=: - ;; - *) - ac_option=$1 - ac_optarg=$2 - ac_shift=shift - ;; - esac - - case $ac_option in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - ac_cs_recheck=: ;; - --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) - $as_echo "$ac_cs_version"; exit ;; - --config | --confi | --conf | --con | --co | --c ) - $as_echo "$ac_cs_config"; exit ;; - --debug | --debu | --deb | --de | --d | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - '') as_fn_error $? "missing file argument" ;; - esac - as_fn_append CONFIG_FILES " '$ac_optarg'" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - $ac_shift - case $ac_optarg in - *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; - esac - as_fn_append CONFIG_HEADERS " '$ac_optarg'" - ac_need_defaults=false;; - --he | --h) - # Conflict between --help and --header - as_fn_error $? "ambiguous option: \`$1' -Try \`$0 --help' for more information.";; - --help | --hel | -h ) - $as_echo "$ac_cs_usage"; exit ;; - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil | --si | --s) - ac_cs_silent=: ;; - - # This is an error. - -*) as_fn_error $? "unrecognized option: \`$1' -Try \`$0 --help' for more information." ;; - - *) as_fn_append ac_config_targets " $1" - ac_need_defaults=false ;; - - esac - shift -done - -ac_configure_extra_args= - -if $ac_cs_silent; then - exec 6>/dev/null - ac_configure_extra_args="$ac_configure_extra_args --silent" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion - shift - \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 - CONFIG_SHELL='$SHELL' - export CONFIG_SHELL - exec "\$@" -fi - -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -exec 5>>config.log -{ - echo - sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX -## Running $as_me. ## -_ASBOX - $as_echo "$ac_log" -} >&5 - -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -# -# INIT-COMMANDS -# -AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" - - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' -DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' -OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' -macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' -macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' -enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' -enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' -pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' -enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' -SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' -ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' -host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' -host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' -host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' -build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' -build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' -build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' -SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' -Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' -GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' -EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' -FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' -LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' -NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' -LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' -max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' -ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' -exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' -lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' -lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' -lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' -lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' -lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' -reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' -reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' -deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' -file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' -file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' -want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' -sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' -AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' -AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' -archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' -STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' -RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' -old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' -old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' -lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' -CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' -CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' -compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' -GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' -nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' -lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' -objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' -MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' -need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' -MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' -DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' -NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' -LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' -OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' -OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' -libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' -shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' -extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' -compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' -archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' -module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' -with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' -no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' -hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' -hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' -inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' -link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' -always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' -exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' -include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' -prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' -postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' -file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' -variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' -need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' -need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' -version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' -runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' -shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' -libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' -library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' -soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' -install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' -postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' -postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' -finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' -finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' -hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' -sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' -sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' -hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' -enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' -enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' -old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' -striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' -predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' -postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' -predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' -postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' -LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' -reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' -reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' -GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' -lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' -lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' -enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' -export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' -old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' -archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' -module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' -with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' -allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' -inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' -link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' -always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' -export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' -exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' -prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' -file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' -hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' -predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' -postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' -predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' -postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' -compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' - -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in AS \ -DLLTOOL \ -OBJDUMP \ -SHELL \ -ECHO \ -SED \ -GREP \ -EGREP \ -FGREP \ -LD \ -NM \ -LN_S \ -lt_SP2NL \ -lt_NL2SP \ -reload_flag \ -deplibs_check_method \ -file_magic_cmd \ -file_magic_glob \ -want_nocaseglob \ -sharedlib_from_linklib_cmd \ -AR \ -AR_FLAGS \ -archiver_list_spec \ -STRIP \ -RANLIB \ -CC \ -CFLAGS \ -compiler \ -lt_cv_sys_global_symbol_pipe \ -lt_cv_sys_global_symbol_to_cdecl \ -lt_cv_sys_global_symbol_to_c_name_address \ -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ -nm_file_list_spec \ -lt_prog_compiler_no_builtin_flag \ -lt_prog_compiler_pic \ -lt_prog_compiler_wl \ -lt_prog_compiler_static \ -lt_cv_prog_compiler_c_o \ -need_locks \ -MANIFEST_TOOL \ -DSYMUTIL \ -NMEDIT \ -LIPO \ -OTOOL \ -OTOOL64 \ -shrext_cmds \ -export_dynamic_flag_spec \ -whole_archive_flag_spec \ -compiler_needs_object \ -with_gnu_ld \ -allow_undefined_flag \ -no_undefined_flag \ -hardcode_libdir_flag_spec \ -hardcode_libdir_flag_spec_ld \ -hardcode_libdir_separator \ -exclude_expsyms \ -include_expsyms \ -file_list_spec \ -variables_saved_for_relink \ -libname_spec \ -library_names_spec \ -soname_spec \ -install_override_mode \ -finish_eval \ -old_striplib \ -striplib \ -compiler_lib_search_dirs \ -predep_objects \ -postdep_objects \ -predeps \ -postdeps \ -compiler_lib_search_path \ -LD_CXX \ -reload_flag_CXX \ -compiler_CXX \ -lt_prog_compiler_no_builtin_flag_CXX \ -lt_prog_compiler_pic_CXX \ -lt_prog_compiler_wl_CXX \ -lt_prog_compiler_static_CXX \ -lt_cv_prog_compiler_c_o_CXX \ -export_dynamic_flag_spec_CXX \ -whole_archive_flag_spec_CXX \ -compiler_needs_object_CXX \ -with_gnu_ld_CXX \ -allow_undefined_flag_CXX \ -no_undefined_flag_CXX \ -hardcode_libdir_flag_spec_CXX \ -hardcode_libdir_flag_spec_ld_CXX \ -hardcode_libdir_separator_CXX \ -exclude_expsyms_CXX \ -include_expsyms_CXX \ -file_list_spec_CXX \ -compiler_lib_search_dirs_CXX \ -predep_objects_CXX \ -postdep_objects_CXX \ -predeps_CXX \ -postdeps_CXX \ -compiler_lib_search_path_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in reload_cmds \ -old_postinstall_cmds \ -old_postuninstall_cmds \ -old_archive_cmds \ -extract_expsyms_cmds \ -old_archive_from_new_cmds \ -old_archive_from_expsyms_cmds \ -archive_cmds \ -archive_expsym_cmds \ -module_cmds \ -module_expsym_cmds \ -export_symbols_cmds \ -prelink_cmds \ -postlink_cmds \ -postinstall_cmds \ -postuninstall_cmds \ -finish_cmds \ -sys_lib_search_path_spec \ -sys_lib_dlsearch_path_spec \ -reload_cmds_CXX \ -old_archive_cmds_CXX \ -old_archive_from_new_cmds_CXX \ -old_archive_from_expsyms_cmds_CXX \ -archive_cmds_CXX \ -archive_expsym_cmds_CXX \ -module_cmds_CXX \ -module_expsym_cmds_CXX \ -export_symbols_cmds_CXX \ -prelink_cmds_CXX \ -postlink_cmds_CXX; do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[\\\\\\\`\\"\\\$]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -ac_aux_dir='$ac_aux_dir' -xsi_shell='$xsi_shell' -lt_shell_append='$lt_shell_append' - -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - - - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile' - - - - - - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - -# Handling of arguments. -for ac_config_target in $ac_config_targets -do - case $ac_config_target in - "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; - "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; - "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; - "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; - "src/headers/Makefile") CONFIG_FILES="$CONFIG_FILES src/headers/Makefile" ;; - "src/gaiaaux/Makefile") CONFIG_FILES="$CONFIG_FILES src/gaiaaux/Makefile" ;; - "src/gaiaexif/Makefile") CONFIG_FILES="$CONFIG_FILES src/gaiaexif/Makefile" ;; - "src/gaiageo/Makefile") CONFIG_FILES="$CONFIG_FILES src/gaiageo/Makefile" ;; - "src/gaiageo/flex/Makefile") CONFIG_FILES="$CONFIG_FILES src/gaiageo/flex/Makefile" ;; - "src/gaiageo/lemon/Makefile") CONFIG_FILES="$CONFIG_FILES src/gaiageo/lemon/Makefile" ;; - "src/gaiageo/lemon/lemon_src/Makefile") CONFIG_FILES="$CONFIG_FILES src/gaiageo/lemon/lemon_src/Makefile" ;; - "src/spatialite/Makefile") CONFIG_FILES="$CONFIG_FILES src/spatialite/Makefile" ;; - "src/shapefiles/Makefile") CONFIG_FILES="$CONFIG_FILES src/shapefiles/Makefile" ;; - "src/srsinit/Makefile") CONFIG_FILES="$CONFIG_FILES src/srsinit/Makefile" ;; - "src/srsinit/epsg_update/Makefile") CONFIG_FILES="$CONFIG_FILES src/srsinit/epsg_update/Makefile" ;; - "src/virtualtext/Makefile") CONFIG_FILES="$CONFIG_FILES src/virtualtext/Makefile" ;; - "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; - "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; - "Doxyfile") CONFIG_FILES="$CONFIG_FILES Doxyfile" ;; - "spatialite.pc") CONFIG_FILES="$CONFIG_FILES spatialite.pc" ;; - - *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; - esac -done - - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Have a temporary directory for convenience. Make it in the build tree -# simply because there is no reason against having it here, and in addition, -# creating and moving files from /tmp can sometimes cause problems. -# Hook for its removal unless debugging. -# Note that there is a small window in which the directory will not be cleaned: -# after its creation but before its name has been assigned to `$tmp'. -$debug || -{ - tmp= ac_tmp= - trap 'exit_status=$? - : "${ac_tmp:=$tmp}" - { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status -' 0 - trap 'as_fn_exit 1' 1 2 13 15 -} -# Create a (secure) tmp directory for tmp files. - -{ - tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && - test -d "$tmp" -} || -{ - tmp=./conf$$-$RANDOM - (umask 077 && mkdir "$tmp") -} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 -ac_tmp=$tmp - -# Set up the scripts for CONFIG_FILES section. -# No need to generate them if there are no CONFIG_FILES. -# This happens for instance with `./config.status config.h'. -if test -n "$CONFIG_FILES"; then - - -ac_cr=`echo X | tr X '\015'` -# On cygwin, bash can eat \r inside `` if the user requested igncr. -# But we know of no other shell where ac_cr would be empty at this -# point, so we can use a bashism as a fallback. -if test "x$ac_cr" = x; then - eval ac_cr=\$\'\\r\' -fi -ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` -if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then - ac_cs_awk_cr='\\r' -else - ac_cs_awk_cr=$ac_cr -fi - -echo 'BEGIN {' >"$ac_tmp/subs1.awk" && -_ACEOF - - -{ - echo "cat >conf$$subs.awk <<_ACEOF" && - echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && - echo "_ACEOF" -} >conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 -ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` -ac_delim='%!_!# ' -for ac_last_try in false false false false false :; do - . ./conf$$subs.sh || - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - - ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` - if test $ac_delim_n = $ac_delim_num; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done -rm -f conf$$subs.sh - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && -_ACEOF -sed -n ' -h -s/^/S["/; s/!.*/"]=/ -p -g -s/^[^!]*!// -:repl -t repl -s/'"$ac_delim"'$// -t delim -:nl -h -s/\(.\{148\}\)..*/\1/ -t more1 -s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ -p -n -b repl -:more1 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t nl -:delim -h -s/\(.\{148\}\)..*/\1/ -t more2 -s/["\\]/\\&/g; s/^/"/; s/$/"/ -p -b -:more2 -s/["\\]/\\&/g; s/^/"/; s/$/"\\/ -p -g -s/.\{148\}// -t delim -' >$CONFIG_STATUS || ac_write_fail=1 -rm -f conf$$subs.awk -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -_ACAWK -cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && - for (key in S) S_is_set[key] = 1 - FS = "" - -} -{ - line = $ 0 - nfields = split(line, field, "@") - substed = 0 - len = length(field[1]) - for (i = 2; i < nfields; i++) { - key = field[i] - keylen = length(key) - if (S_is_set[key]) { - value = S[key] - line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) - len += length(value) + length(field[++i]) - substed = 1 - } else - len += 1 + keylen - } - - print line -} - -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then - sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" -else - cat -fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ - || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 -_ACEOF - -# VPATH may cause trouble with some makes, so we remove sole $(srcdir), -# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ -h -s/// -s/^/:/ -s/[ ]*$/:/ -s/:\$(srcdir):/:/g -s/:\${srcdir}:/:/g -s/:@srcdir@:/:/g -s/^:*// -s/:*$// -x -s/\(=[ ]*\).*/\1/ -G -s/\n// -s/^[^=]*=[ ]*$// -}' -fi - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -fi # test -n "$CONFIG_FILES" - -# Set up the scripts for CONFIG_HEADERS section. -# No need to generate them if there are no CONFIG_HEADERS. -# This happens for instance with `./config.status Makefile'. -if test -n "$CONFIG_HEADERS"; then -cat >"$ac_tmp/defines.awk" <<\_ACAWK || -BEGIN { -_ACEOF - -# Transform confdefs.h into an awk script `defines.awk', embedded as -# here-document in config.status, that substitutes the proper values into -# config.h.in to produce config.h. - -# Create a delimiter string that does not exist in confdefs.h, to ease -# handling of long lines. -ac_delim='%!_!# ' -for ac_last_try in false false :; do - ac_tt=`sed -n "/$ac_delim/p" confdefs.h` - if test -z "$ac_tt"; then - break - elif $ac_last_try; then - as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 - else - ac_delim="$ac_delim!$ac_delim _$ac_delim!! " - fi -done - -# For the awk script, D is an array of macro values keyed by name, -# likewise P contains macro parameters if any. Preserve backslash -# newline sequences. - -ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* -sed -n ' -s/.\{148\}/&'"$ac_delim"'/g -t rset -:rset -s/^[ ]*#[ ]*define[ ][ ]*/ / -t def -d -:def -s/\\$// -t bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3"/p -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p -d -:bsnl -s/["\\]/\\&/g -s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ -D["\1"]=" \3\\\\\\n"\\/p -t cont -s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p -t cont -d -:cont -n -s/.\{148\}/&'"$ac_delim"'/g -t clear -:clear -s/\\$// -t bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/"/p -d -:bsnlc -s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p -b cont -' >$CONFIG_STATUS || ac_write_fail=1 - -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - for (key in D) D_is_set[key] = 1 - FS = "" -} -/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { - line = \$ 0 - split(line, arg, " ") - if (arg[1] == "#") { - defundef = arg[2] - mac1 = arg[3] - } else { - defundef = substr(arg[1], 2) - mac1 = arg[2] - } - split(mac1, mac2, "(") #) - macro = mac2[1] - prefix = substr(line, 1, index(line, defundef) - 1) - if (D_is_set[macro]) { - # Preserve the white space surrounding the "#". - print prefix "define", macro P[macro] D[macro] - next - } else { - # Replace #undef with comments. This is necessary, for example, - # in the case of _POSIX_SOURCE, which is predefined and required - # on some systems where configure will not decide to define it. - if (defundef == "undef") { - print "/*", prefix defundef, macro, "*/" - next - } - } -} -{ print } -_ACAWK -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 - as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 -fi # test -n "$CONFIG_HEADERS" - - -eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" -shift -for ac_tag -do - case $ac_tag in - :[FHLC]) ac_mode=$ac_tag; continue;; - esac - case $ac_mode$ac_tag in - :[FHL]*:*);; - :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; - :[FH]-) ac_tag=-:-;; - :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; - esac - ac_save_IFS=$IFS - IFS=: - set x $ac_tag - IFS=$ac_save_IFS - shift - ac_file=$1 - shift - - case $ac_mode in - :L) ac_source=$1;; - :[FH]) - ac_file_inputs= - for ac_f - do - case $ac_f in - -) ac_f="$ac_tmp/stdin";; - *) # Look for the file first in the build tree, then in the source tree - # (if the path is not absolute). The absolute path cannot be DOS-style, - # because $ac_f cannot contain `:'. - test -f "$ac_f" || - case $ac_f in - [\\/$]*) false;; - *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; - esac || - as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; - esac - case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac - as_fn_append ac_file_inputs " '$ac_f'" - done - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated by config.status. */ - configure_input='Generated from '` - $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' - `' by configure.' - if test x"$ac_file" != x-; then - configure_input="$ac_file. $configure_input" - { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 -$as_echo "$as_me: creating $ac_file" >&6;} - fi - # Neutralize special characters interpreted by sed in replacement strings. - case $configure_input in #( - *\&* | *\|* | *\\* ) - ac_sed_conf_input=`$as_echo "$configure_input" | - sed 's/[\\\\&|]/\\\\&/g'`;; #( - *) ac_sed_conf_input=$configure_input;; - esac - - case $ac_tag in - *:-:* | *:-) cat >"$ac_tmp/stdin" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; - esac - ;; - esac - - ac_dir=`$as_dirname -- "$ac_file" || -$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir="$ac_dir"; as_fn_mkdir_p - ac_builddir=. - -case "$ac_dir" in -.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; -*) - ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` - # A ".." for each directory in $ac_dir_suffix. - ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` - case $ac_top_builddir_sub in - "") ac_top_builddir_sub=. ac_top_build_prefix= ;; - *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; - esac ;; -esac -ac_abs_top_builddir=$ac_pwd -ac_abs_builddir=$ac_pwd$ac_dir_suffix -# for backward compatibility: -ac_top_builddir=$ac_top_build_prefix - -case $srcdir in - .) # We are building in place. - ac_srcdir=. - ac_top_srcdir=$ac_top_builddir_sub - ac_abs_top_srcdir=$ac_pwd ;; - [\\/]* | ?:[\\/]* ) # Absolute name. - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir - ac_abs_top_srcdir=$srcdir ;; - *) # Relative name. - ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_top_build_prefix$srcdir - ac_abs_top_srcdir=$ac_pwd/$srcdir ;; -esac -ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix - - - case $ac_mode in - :F) - # - # CONFIG_FILE - # - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; - esac - ac_MKDIR_P=$MKDIR_P - case $MKDIR_P in - [\\/$]* | ?:[\\/]* ) ;; - */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; - esac -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -# If the template does not know about datarootdir, expand it. -# FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack=; ac_datarootdir_seen= -ac_sed_dataroot=' -/datarootdir/ { - p - q -} -/@datadir@/p -/@docdir@/p -/@infodir@/p -/@localedir@/p -/@mandir@/p' -case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in -*datarootdir*) ac_datarootdir_seen=yes;; -*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 -$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} -_ACEOF -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 - ac_datarootdir_hack=' - s&@datadir@&$datadir&g - s&@docdir@&$docdir&g - s&@infodir@&$infodir&g - s&@localedir@&$localedir&g - s&@mandir@&$mandir&g - s&\\\${datarootdir}&$datarootdir&g' ;; -esac -_ACEOF - -# Neutralize VPATH when `$srcdir' = `.'. -# Shell code in configure.ac might set extrasub. -# FIXME: do we really want to maintain this feature? -cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 -ac_sed_extra="$ac_vpsub -$extrasub -_ACEOF -cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s|@configure_input@|$ac_sed_conf_input|;t t -s&@top_builddir@&$ac_top_builddir_sub&;t t -s&@top_build_prefix@&$ac_top_build_prefix&;t t -s&@srcdir@&$ac_srcdir&;t t -s&@abs_srcdir@&$ac_abs_srcdir&;t t -s&@top_srcdir@&$ac_top_srcdir&;t t -s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t -s&@builddir@&$ac_builddir&;t t -s&@abs_builddir@&$ac_abs_builddir&;t t -s&@abs_top_builddir@&$ac_abs_top_builddir&;t t -s&@INSTALL@&$ac_INSTALL&;t t -s&@MKDIR_P@&$ac_MKDIR_P&;t t -$ac_datarootdir_hack -" -eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ - >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - -test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && - { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && - { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ - "$ac_tmp/out"`; test -z "$ac_out"; } && - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&5 -$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' -which seems to be undefined. Please make sure it is defined" >&2;} - - rm -f "$ac_tmp/stdin" - case $ac_file in - -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; - *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; - esac \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - ;; - :H) - # - # CONFIG_HEADER - # - if test x"$ac_file" != x-; then - { - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" - } >"$ac_tmp/config.h" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then - { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 -$as_echo "$as_me: $ac_file is unchanged" >&6;} - else - rm -f "$ac_file" - mv "$ac_tmp/config.h" "$ac_file" \ - || as_fn_error $? "could not create $ac_file" "$LINENO" 5 - fi - else - $as_echo "/* $configure_input */" \ - && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ - || as_fn_error $? "could not create -" "$LINENO" 5 - fi -# Compute "$ac_file"'s index in $config_headers. -_am_arg="$ac_file" -_am_stamp_count=1 -for _am_header in $config_headers :; do - case $_am_header in - $_am_arg | $_am_arg:* ) - break ;; - * ) - _am_stamp_count=`expr $_am_stamp_count + 1` ;; - esac -done -echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || -$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$_am_arg" : 'X\(//\)[^/]' \| \ - X"$_am_arg" : 'X\(//\)$' \| \ - X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$_am_arg" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'`/stamp-h$_am_stamp_count - ;; - - :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 -$as_echo "$as_me: executing $ac_file commands" >&6;} - ;; - esac - - - case $ac_file$ac_mode in - "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files - # are listed without --file. Let's play safe and only enable the eval - # if we detect the quoting. - case $CONFIG_FILES in - *\'*) eval set x "$CONFIG_FILES" ;; - *) set x $CONFIG_FILES ;; - esac - shift - for mf - do - # Strip MF so we end up with the name of the file. - mf=`echo "$mf" | sed -e 's/:.*$//'` - # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but - # some people rename them; so instead we look at the file content. - # Grep'ing the first line is not enough: some people post-process - # each Makefile.in and add a new line on top of each file to say so. - # Grep'ing the whole file is not good either: AIX grep has a line - # limit of 2048, but all sed's we know have understand at least 4000. - if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then - dirpart=`$as_dirname -- "$mf" || -$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$mf" : 'X\(//\)[^/]' \| \ - X"$mf" : 'X\(//\)$' \| \ - X"$mf" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$mf" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - else - continue - fi - # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. - DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` - test -z "$DEPDIR" && continue - am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue - am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` - # Find all dependency output files, they are included files with - # $(DEPDIR) in their names. We invoke sed twice because it is the - # simplest approach to changing $(DEPDIR) to its actual value in the - # expansion. - for file in `sed -n " - s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do - # Make sure the directory exists. - test -f "$dirpart/$file" && continue - fdir=`$as_dirname -- "$file" || -$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$file" : 'X\(//\)[^/]' \| \ - X"$file" : 'X\(//\)$' \| \ - X"$file" : 'X\(/\)' \| . 2>/dev/null || -$as_echo X"$file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q'` - as_dir=$dirpart/$fdir; as_fn_mkdir_p - # echo "creating $dirpart/$file" - echo '# dummy' > "$dirpart/$file" - done - done -} - ;; - "libtool":C) - - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - - -# The names of the tagged configurations supported by this script. -available_tags="CXX " - -# ### BEGIN LIBTOOL CONFIG - -# Assembler program. -AS=$lt_AS - -# DLL creation program. -DLLTOOL=$lt_DLLTOOL - -# Object dumper program. -OBJDUMP=$lt_OBJDUMP - -# Which release of libtool.m4 was used? -macro_version=$macro_version -macro_revision=$macro_revision - -# Whether or not to build shared libraries. -build_libtool_libs=$enable_shared - -# Whether or not to build static libraries. -build_old_libs=$enable_static - -# What type of objects to build. -pic_mode=$pic_mode - -# Whether or not to optimize for fast installation. -fast_install=$enable_fast_install - -# Shell to use when invoking shell scripts. -SHELL=$lt_SHELL - -# An echo program that protects backslashes. -ECHO=$lt_ECHO - -# The host system. -host_alias=$host_alias -host=$host -host_os=$host_os - -# The build system. -build_alias=$build_alias -build=$build -build_os=$build_os - -# A sed program that does not truncate output. -SED=$lt_SED - -# Sed that helps us avoid accidentally triggering echo(1) options like -n. -Xsed="\$SED -e 1s/^X//" - -# A grep program that handles long lines. -GREP=$lt_GREP - -# An ERE matcher. -EGREP=$lt_EGREP - -# A literal string matcher. -FGREP=$lt_FGREP - -# A BSD- or MS-compatible name lister. -NM=$lt_NM - -# Whether we need soft or hard links. -LN_S=$lt_LN_S - -# What is the maximum length of a command? -max_cmd_len=$max_cmd_len - -# Object file suffix (normally "o"). -objext=$ac_objext - -# Executable file suffix (normally ""). -exeext=$exeext - -# whether the shell understands "unset". -lt_unset=$lt_unset - -# turn spaces into newlines. -SP2NL=$lt_lt_SP2NL - -# turn newlines into spaces. -NL2SP=$lt_lt_NL2SP - -# convert \$build file names to \$host format. -to_host_file_cmd=$lt_cv_to_host_file_cmd - -# convert \$build files to toolchain format. -to_tool_file_cmd=$lt_cv_to_tool_file_cmd - -# Method to check whether dependent libraries are shared objects. -deplibs_check_method=$lt_deplibs_check_method - -# Command to use when deplibs_check_method = "file_magic". -file_magic_cmd=$lt_file_magic_cmd - -# How to find potential files when deplibs_check_method = "file_magic". -file_magic_glob=$lt_file_magic_glob - -# Find potential files using nocaseglob when deplibs_check_method = "file_magic". -want_nocaseglob=$lt_want_nocaseglob - -# Command to associate shared and link libraries. -sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd - -# The archiver. -AR=$lt_AR - -# Flags to create an archive. -AR_FLAGS=$lt_AR_FLAGS - -# How to feed a file listing to the archiver. -archiver_list_spec=$lt_archiver_list_spec - -# A symbol stripping program. -STRIP=$lt_STRIP - -# Commands used to install an old-style archive. -RANLIB=$lt_RANLIB -old_postinstall_cmds=$lt_old_postinstall_cmds -old_postuninstall_cmds=$lt_old_postuninstall_cmds - -# Whether to use a lock for old archive extraction. -lock_old_archive_extraction=$lock_old_archive_extraction - -# A C compiler. -LTCC=$lt_CC - -# LTCC compiler flags. -LTCFLAGS=$lt_CFLAGS - -# Take the output of nm and produce a listing of raw symbols and C names. -global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe - -# Transform the output of nm in a proper C declaration. -global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl - -# Transform the output of nm in a C name address pair. -global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address - -# Transform the output of nm in a C name address pair when lib prefix is needed. -global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix - -# Specify filename containing input files for \$NM. -nm_file_list_spec=$lt_nm_file_list_spec - -# The root where to search for dependent libraries,and in which our libraries should be installed. -lt_sysroot=$lt_sysroot - -# The name of the directory that contains temporary libtool files. -objdir=$objdir - -# Used to examine libraries when file_magic_cmd begins with "file". -MAGIC_CMD=$MAGIC_CMD - -# Must we lock files when doing compilation? -need_locks=$lt_need_locks - -# Manifest tool. -MANIFEST_TOOL=$lt_MANIFEST_TOOL - -# Tool to manipulate archived DWARF debug symbol files on Mac OS X. -DSYMUTIL=$lt_DSYMUTIL - -# Tool to change global to local symbols on Mac OS X. -NMEDIT=$lt_NMEDIT - -# Tool to manipulate fat objects and archives on Mac OS X. -LIPO=$lt_LIPO - -# ldd/readelf like tool for Mach-O binaries on Mac OS X. -OTOOL=$lt_OTOOL - -# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. -OTOOL64=$lt_OTOOL64 - -# Old archive suffix (normally "a"). -libext=$libext - -# Shared library suffix (normally ".so"). -shrext_cmds=$lt_shrext_cmds - -# The commands to extract the exported symbol list from a shared archive. -extract_expsyms_cmds=$lt_extract_expsyms_cmds - -# Variables whose values should be saved in libtool wrapper scripts and -# restored at link time. -variables_saved_for_relink=$lt_variables_saved_for_relink - -# Do we need the "lib" prefix for modules? -need_lib_prefix=$need_lib_prefix - -# Do we need a version for libraries? -need_version=$need_version - -# Library versioning type. -version_type=$version_type - -# Shared library runtime path variable. -runpath_var=$runpath_var - -# Shared library path variable. -shlibpath_var=$shlibpath_var - -# Is shlibpath searched before the hard-coded library search path? -shlibpath_overrides_runpath=$shlibpath_overrides_runpath - -# Format of library name prefix. -libname_spec=$lt_libname_spec - -# List of archive names. First name is the real one, the rest are links. -# The last name is the one that the linker finds with -lNAME -library_names_spec=$lt_library_names_spec - -# The coded name of the library, if different from the real name. -soname_spec=$lt_soname_spec - -# Permission mode override for installation of shared libraries. -install_override_mode=$lt_install_override_mode - -# Command to use after installation of a shared archive. -postinstall_cmds=$lt_postinstall_cmds - -# Command to use after uninstallation of a shared archive. -postuninstall_cmds=$lt_postuninstall_cmds - -# Commands used to finish a libtool library installation in a directory. -finish_cmds=$lt_finish_cmds - -# As "finish_cmds", except a single script fragment to be evaled but -# not shown. -finish_eval=$lt_finish_eval - -# Whether we should hardcode library paths into libraries. -hardcode_into_libs=$hardcode_into_libs - -# Compile-time system search path for libraries. -sys_lib_search_path_spec=$lt_sys_lib_search_path_spec - -# Run-time system search path for libraries. -sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec - -# Whether dlopen is supported. -dlopen_support=$enable_dlopen - -# Whether dlopen of programs is supported. -dlopen_self=$enable_dlopen_self - -# Whether dlopen of statically linked programs is supported. -dlopen_self_static=$enable_dlopen_self_static - -# Commands to strip libraries. -old_striplib=$lt_old_striplib -striplib=$lt_striplib - - -# The linker used to build libraries. -LD=$lt_LD - -# How to create reloadable object files. -reload_flag=$lt_reload_flag -reload_cmds=$lt_reload_cmds - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds - -# A language specific compiler. -CC=$lt_compiler - -# Is the compiler the GNU compiler? -with_gcc=$GCC - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds -archive_expsym_cmds=$lt_archive_expsym_cmds - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds -module_expsym_cmds=$lt_module_expsym_cmds - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects -postdep_objects=$lt_postdep_objects -predeps=$lt_predeps -postdeps=$lt_postdeps - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path - -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - -ltmain="$ac_aux_dir/ltmain.sh" - - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - if test x"$xsi_shell" = xyes; then - sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ -func_dirname ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_basename ()$/,/^} # func_basename /c\ -func_basename ()\ -{\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ -func_dirname_and_basename ()\ -{\ -\ case ${1} in\ -\ */*) func_dirname_result="${1%/*}${2}" ;;\ -\ * ) func_dirname_result="${3}" ;;\ -\ esac\ -\ func_basename_result="${1##*/}"\ -} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ -func_stripname ()\ -{\ -\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ -\ # positional parameters, so assign one to ordinary parameter first.\ -\ func_stripname_result=${3}\ -\ func_stripname_result=${func_stripname_result#"${1}"}\ -\ func_stripname_result=${func_stripname_result%"${2}"}\ -} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ -func_split_long_opt ()\ -{\ -\ func_split_long_opt_name=${1%%=*}\ -\ func_split_long_opt_arg=${1#*=}\ -} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ -func_split_short_opt ()\ -{\ -\ func_split_short_opt_arg=${1#??}\ -\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ -} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ -func_lo2o ()\ -{\ -\ case ${1} in\ -\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ -\ *) func_lo2o_result=${1} ;;\ -\ esac\ -} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_xform ()$/,/^} # func_xform /c\ -func_xform ()\ -{\ - func_xform_result=${1%.*}.lo\ -} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_arith ()$/,/^} # func_arith /c\ -func_arith ()\ -{\ - func_arith_result=$(( $* ))\ -} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_len ()$/,/^} # func_len /c\ -func_len ()\ -{\ - func_len_result=${#1}\ -} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - -fi - -if test x"$lt_shell_append" = xyes; then - sed -e '/^func_append ()$/,/^} # func_append /c\ -func_append ()\ -{\ - eval "${1}+=\\${2}"\ -} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ -func_append_quoted ()\ -{\ -\ func_quote_for_eval "${2}"\ -\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ -} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: - - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 -$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} -fi - - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" - - - cat <<_LT_EOF >> "$ofile" - -# ### BEGIN LIBTOOL TAG CONFIG: CXX - -# The linker used to build libraries. -LD=$lt_LD_CXX - -# How to create reloadable object files. -reload_flag=$lt_reload_flag_CXX -reload_cmds=$lt_reload_cmds_CXX - -# Commands used to build an old-style archive. -old_archive_cmds=$lt_old_archive_cmds_CXX - -# A language specific compiler. -CC=$lt_compiler_CXX - -# Is the compiler the GNU compiler? -with_gcc=$GCC_CXX - -# Compiler flag to turn off builtin functions. -no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX - -# Additional compiler flags for building library objects. -pic_flag=$lt_lt_prog_compiler_pic_CXX - -# How to pass a linker flag through the compiler. -wl=$lt_lt_prog_compiler_wl_CXX - -# Compiler flag to prevent dynamic linking. -link_static_flag=$lt_lt_prog_compiler_static_CXX - -# Does compiler simultaneously support -c and -o options? -compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX - -# Whether or not to add -lc for building shared libraries. -build_libtool_need_lc=$archive_cmds_need_lc_CXX - -# Whether or not to disallow shared libs when runtime libs are static. -allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX - -# Compiler flag to allow reflexive dlopens. -export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX - -# Compiler flag to generate shared objects directly from archives. -whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX - -# Whether the compiler copes with passing no objects directly. -compiler_needs_object=$lt_compiler_needs_object_CXX - -# Create an old-style archive from a shared archive. -old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX - -# Create a temporary old-style archive to link instead of a shared archive. -old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX - -# Commands used to build a shared archive. -archive_cmds=$lt_archive_cmds_CXX -archive_expsym_cmds=$lt_archive_expsym_cmds_CXX - -# Commands used to build a loadable module if different from building -# a shared archive. -module_cmds=$lt_module_cmds_CXX -module_expsym_cmds=$lt_module_expsym_cmds_CXX - -# Whether we are building with GNU ld or not. -with_gnu_ld=$lt_with_gnu_ld_CXX - -# Flag that allows shared libraries with undefined symbols to be built. -allow_undefined_flag=$lt_allow_undefined_flag_CXX - -# Flag that enforces no undefined symbols. -no_undefined_flag=$lt_no_undefined_flag_CXX - -# Flag to hardcode \$libdir into a binary during linking. -# This must work even if \$libdir does not exist -hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX - -# If ld is used when linking, flag to hardcode \$libdir into a binary -# during linking. This must work even if \$libdir does not exist. -hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX - -# Whether we need a single "-rpath" flag with a separated argument. -hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary. -hardcode_direct=$hardcode_direct_CXX - -# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes -# DIR into the resulting binary and the resulting library dependency is -# "absolute",i.e impossible to change by setting \${shlibpath_var} if the -# library is relocated. -hardcode_direct_absolute=$hardcode_direct_absolute_CXX - -# Set to "yes" if using the -LDIR flag during linking hardcodes DIR -# into the resulting binary. -hardcode_minus_L=$hardcode_minus_L_CXX - -# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR -# into the resulting binary. -hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX - -# Set to "yes" if building a shared library automatically hardcodes DIR -# into the library and all subsequent libraries and executables linked -# against it. -hardcode_automatic=$hardcode_automatic_CXX - -# Set to yes if linker adds runtime paths of dependent libraries -# to runtime path list. -inherit_rpath=$inherit_rpath_CXX - -# Whether libtool must link a program against all its dependency libraries. -link_all_deplibs=$link_all_deplibs_CXX - -# Set to "yes" if exported symbols are required. -always_export_symbols=$always_export_symbols_CXX - -# The commands to list exported symbols. -export_symbols_cmds=$lt_export_symbols_cmds_CXX - -# Symbols that should not be listed in the preloaded symbols. -exclude_expsyms=$lt_exclude_expsyms_CXX - -# Symbols that must always be exported. -include_expsyms=$lt_include_expsyms_CXX - -# Commands necessary for linking programs (against libraries) with templates. -prelink_cmds=$lt_prelink_cmds_CXX - -# Commands necessary for finishing linking programs. -postlink_cmds=$lt_postlink_cmds_CXX - -# Specify filename containing input files. -file_list_spec=$lt_file_list_spec_CXX - -# How to hardcode a shared library path into an executable. -hardcode_action=$hardcode_action_CXX - -# The directories searched by this compiler when creating a shared library. -compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX - -# Dependencies to place before and after the objects being linked to -# create a shared library. -predep_objects=$lt_predep_objects_CXX -postdep_objects=$lt_postdep_objects_CXX -predeps=$lt_predeps_CXX -postdeps=$lt_postdeps_CXX - -# The library search path used internally by the compiler when linking -# a shared library. -compiler_lib_search_path=$lt_compiler_lib_search_path_CXX - -# ### END LIBTOOL TAG CONFIG: CXX -_LT_EOF - - ;; - - esac -done # for ac_tag - - -as_fn_exit 0 -_ACEOF -ac_clean_files=$ac_clean_files_save - -test $ac_write_fail = 0 || - as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 - - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - ac_config_status_args= - test "$silent" = yes && - ac_config_status_args="$ac_config_status_args --quiet" - exec 5>/dev/null - $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || as_fn_exit 1 -fi -if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 -$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} -fi - diff --git a/src/spatialite/configure.ac b/src/spatialite/configure.ac deleted file mode 100644 index 380d190..0000000 --- a/src/spatialite/configure.ac +++ /dev/null @@ -1,307 +0,0 @@ -# -*- Autoconf -*- -# Process this file with autoconf to produce a configure script. - -AC_PREREQ(2.61) -AC_INIT(libspatialite, 4.0.0, a.furieri@lqt.it) -AC_LANG(C) -AC_CONFIG_MACRO_DIR([m4]) - -AM_INIT_AUTOMAKE([foreign]) -AM_MAINTAINER_MODE -AM_CONFIG_HEADER(config.h) - -# enabling huge-file support (64 bit file pointers) -AH_TEMPLATE([_LARGE_FILE], - [Must be defined in order to enable huge-file support.]) -AC_DEFINE(_LARGE_FILE) -AH_TEMPLATE([_FILE_OFFSET_BITS], - [Must be =64 in order to enable huge-file support.]) -AC_DEFINE(_FILE_OFFSET_BITS, 64) -AH_TEMPLATE([_LARGEFILE_SOURCE], - [Must be defined in order to enable huge-file support.]) -AC_DEFINE(_LARGEFILE_SOURCE) - -# disablibg debug support -AH_TEMPLATE([NDEBUG], - [Must be defined in order to disable debug mode.]) -AC_DEFINE(NDEBUG) - -# config depending options -AH_TEMPLATE([OMIT_GEOS], - [Should be defined in order to disable GEOS support.]) -AH_TEMPLATE([GEOS_ADVANCED], - [Should be defined in order to enable GEOS_ADVANCED support.]) -AH_TEMPLATE([GEOS_TRUNK], - [Should be defined in order to enable GEOS_TRUNK experimental support.]) -AH_TEMPLATE([ENABLE_LWGEOM], - [Should be defined in order to enable LWGEOM support.]) -AH_TEMPLATE([OMIT_PROJ], - [Should be defined in order to disable PROJ.4 support.]) -AH_TEMPLATE([OMIT_ICONV], - [Should be defined in order to disable ICONV support.]) -AH_TEMPLATE([OMIT_MATHSQL], - [Should be defined in order to disable MATHSQL support.]) -AH_TEMPLATE([OMIT_EPSG], - [Should be defined in order to disable EPSG full support.]) -AH_TEMPLATE([OMIT_GEOCALLBACKS], - [Should be defined in order to disable GEOCALLBACKS support.]) -AH_TEMPLATE([OMIT_FREEXL], - [Should be defined in order to disable FREEXL support.]) - -# Checks for header files. -AC_CHECK_HEADERS(stdlib.h,, [AC_MSG_ERROR([cannot find stdlib.h, bailing out])]) -AC_CHECK_HEADERS(stdio.h,, [AC_MSG_ERROR([cannot find stdio.h, bailing out])]) -AC_CHECK_HEADERS(string.h,, [AC_MSG_ERROR([cannot find string.h, bailing out])]) -AC_CHECK_HEADERS(memory.h,, [AC_MSG_ERROR([cannot find memory.h, bailing out])]) -AC_CHECK_HEADERS(math.h,, [AC_MSG_ERROR([cannot find math.h, bailing out])]) -AC_CHECK_HEADERS(float.h,, [AC_MSG_ERROR([cannot find float.h, bailing out])]) -AC_CHECK_HEADERS(fcntl.h,, [AC_MSG_ERROR([cannot find fcntl.h, bailing out])]) -AC_CHECK_HEADERS(inttypes.h,, [AC_MSG_ERROR([cannot find inttypes.h, bailing out])]) -AC_CHECK_HEADERS(stddef.h,, [AC_MSG_ERROR([cannot find stddef.h, bailing out])]) -AC_CHECK_HEADERS(stdint.h,, [AC_MSG_ERROR([cannot find stdint.h, bailing out])]) -AC_CHECK_HEADERS(sys/time.h,, [AC_MSG_ERROR([cannot find sys/time.h, bailing out])]) -AC_CHECK_HEADERS(unistd.h,, [AC_MSG_ERROR([cannot find unistd.h, bailing out])]) -AC_CHECK_HEADERS(sqlite3.h,, [AC_MSG_ERROR([cannot find sqlite3.h, bailing out])]) -AC_CHECK_HEADERS(sqlite3ext.h,, [AC_MSG_ERROR([cannot find sqlite3ext.h, bailing out])]) - - -# Checks for programs. -AC_PROG_CXX -AC_PROG_CC -AC_PROG_CPP -AC_PROG_INSTALL -AC_PROG_LN_S -AC_PROG_MAKE_SET -AC_LIBTOOL_WIN32_DLL -AC_PROG_LIBTOOL - -# Checks for typedefs, structures, and compiler characteristics. -AC_C_CONST -AC_TYPE_OFF_T -AC_TYPE_SIZE_T -AC_HEADER_TIME -AC_STRUCT_TM -AC_C_VOLATILE - -# Checks for library functions. -AC_FUNC_LSTAT -AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK -AC_FUNC_MEMCMP -AC_FUNC_STAT -AC_FUNC_STRFTIME -AC_CHECK_FUNCS([memset sqrt strcasecmp strerror strncasecmp strstr fdatasync ftruncate getcwd gettimeofday localtime_r memmove strerror]) - -# Checks for installed libraries -AC_CHECK_LIB(sqlite3,sqlite3_prepare_v2,,AC_MSG_ERROR(['libsqlite3' is required but it doesn't seem to be installed on this system.]),-lm) - -AC_CONFIG_FILES([Makefile \ - src/Makefile \ - src/headers/Makefile \ - src/gaiaaux/Makefile \ - src/gaiaexif/Makefile \ - src/gaiageo/Makefile \ - src/gaiageo/flex/Makefile \ - src/gaiageo/lemon/Makefile \ - src/gaiageo/lemon/lemon_src/Makefile \ - src/spatialite/Makefile \ - src/shapefiles/Makefile \ - src/srsinit/Makefile \ - src/srsinit/epsg_update/Makefile \ - src/virtualtext/Makefile \ - test/Makefile \ - examples/Makefile \ - Doxyfile \ - spatialite.pc]) - -#----------------------------------------------------------------------- -# --enable-mathsql -# -AC_ARG_ENABLE(mathsql, [AS_HELP_STRING( - [--enable-mathsql], [enables SQL math functions [default=yes]])], - [], [enable_mathsql=yes]) -if test x"$enable_mathsql" != "xyes"; then - AC_DEFINE(OMIT_MATHSQL) -fi -#----------------------------------------------------------------------- - -#----------------------------------------------------------------------- -# --enable-geocallbacks -# -AC_ARG_ENABLE(geocallbacks, [AS_HELP_STRING( - [--enable-geocallbacks], [enables geometry callbacks [default=no]])], - [], [enable_geocallbacks=no]) -if test x"$enable_geocallbacks" == "xyes"; then - AC_CHECK_LIB(sqlite3,sqlite3_rtree_geometry_callback,,AC_MSG_ERROR([obsolete 'libsqlite3' (< v.3.7.3). please retry specifying: --disable-geocallbacks]),-lm) -else - AC_DEFINE(OMIT_GEOCALLBACKS) -fi -#----------------------------------------------------------------------- - -#----------------------------------------------------------------------- -# --enable-proj -# -AC_ARG_ENABLE(proj, [AS_HELP_STRING( - [--enable-proj], [enables PROJ.4 inclusion [default=yes]])], - [], [enable_proj=yes]) -if test x"$enable_proj" != "xno"; then - AC_CHECK_HEADERS(proj_api.h,, [AC_MSG_ERROR([cannot find proj_api.h, bailing out])]) - AC_SEARCH_LIBS(pj_init_plus,proj,,AC_MSG_ERROR(['libproj' is required but it doesn't seem to be installed on this system.]),-lm) -else - AC_DEFINE(OMIT_PROJ) -fi -#----------------------------------------------------------------------- - -#----------------------------------------------------------------------- -# --enable-iconv -# -AC_ARG_ENABLE(iconv, [AS_HELP_STRING( - [--enable-iconv], [enables ICONV inclusion [default=yes]])], - [], [enable_iconv=yes]) -if test x"$enable_iconv" != "xno"; then - AC_CHECK_HEADERS(iconv.h,, [AC_MSG_ERROR([cannot find iconv.h, bailing out])]) -# on some systems "iconv()" lives in libc. On others it lives in libiconv -# on older systems "libiconv()" lives in libiconv - AC_SEARCH_LIBS(iconv,iconv,, - AC_SEARCH_LIBS(libiconv,iconv,,AC_MSG_ERROR(['libiconv' is required but it doesn't seem to be installed on this system.]),)) - AC_SEARCH_LIBS(locale_charset,charset,, - AC_SEARCH_LIBS(nl_langinfo,c,,AC_MSG_ERROR(['libcharset' is required but it doesn't seem to be installed on this system.]),)) -else - AC_DEFINE(OMIT_ICONV) -fi - -#----------------------------------------------------------------------- -# --enable-freexl -# -AC_ARG_ENABLE(freexl, [AS_HELP_STRING( - [--enable-freexl], [enables FreeXL inclusion [default=yes]])], - [], [enable_freexl=yes]) -if test x"$enable_freexl" != "xno"; then - AC_CHECK_HEADERS(freexl.h,, [AC_MSG_ERROR([cannot find freexl.h, bailing out])]) - AC_SEARCH_LIBS(freexl_open,freexl,,AC_MSG_ERROR(['libfreexl' is required but it doesn't seem to be installed on this system.]),-lm) -else - AC_DEFINE(OMIT_FREEXL) -fi -#----------------------------------------------------------------------- - -#----------------------------------------------------------------------- -# --enable-epsg -# -AC_ARG_ENABLE(epsg, [AS_HELP_STRING( - [--enable-epsg], [enables full EPSG dataset support [default=yes]])], - [], [enable_epsg=yes]) -if test x"$enable_epsg" != "xyes"; then - AC_DEFINE(OMIT_EPSG) -fi -#----------------------------------------------------------------------- - -#----------------------------------------------------------------------- -# --enable-geos -# -AC_ARG_ENABLE(geos, [AS_HELP_STRING( - [--enable-geos], [enables GEOS inclusion [default=yes]])], - [], [enable_geos=yes]) -if test x"$enable_geos" != "xno"; then - #----------------------------------------------------------------------- - # --with-geosconfig - # - AC_ARG_WITH([geosconfig], - [AS_HELP_STRING([--with-geosconfig=FILE], [specify an alternative geos-config file])], - [GEOSCONFIG="$withval"], [GEOSCONFIG=""]) - if test "x$GEOSCONFIG" = "x"; then - # GEOSCONFIG was not specified, so search within the current path - AC_PATH_PROG([GEOSCONFIG], [geos-config]) - # If we couldn't find geos-config, display an error - if test "x$GEOSCONFIG" = "x"; then - AC_MSG_ERROR([could not find geos-config within the current path. You may need to try re-running configure with a --with-geosconfig parameter.]) - fi - else - # GEOSCONFIG was specified; display a message to the user - if test "x$GEOSCONFIG" = "xyes"; then - AC_MSG_ERROR([you must specify a parameter to --with-geosconfig, e.g. --with-geosconfig=/path/to/geos-config]) - else - if test -f $GEOSCONFIG; then - AC_MSG_RESULT([Using user-specified geos-config file: $GEOSCONFIG]) - else - AC_MSG_ERROR([the user-specified geos-config file $GEOSCONFIG does not exist]) - fi - fi - fi - # Extract the linker and include flags - GEOS_LDFLAGS=`$GEOSCONFIG --ldflags` - GEOS_CFLAGS=-I`$GEOSCONFIG --includes` - AC_SUBST([GEOS_LDFLAGS]) - AC_SUBST([GEOS_CFLAGS]) - # Ensure that we can parse geos_c.h - CPPFLAGS_SAVE="$CPPFLAGS" - CPPFLAGS="$GEOS_CFLAGS" - AC_CHECK_HEADERS([geos_c.h],, [AC_MSG_ERROR([could not find geos_c.h - you may need to specify the directory of a geos-config file using --with-geosconfig])]) - CPPFLAGS="$CPPFLAGS_SAVE" - # Ensure we can link against libgeos_c - LIBS_SAVE="$LIBS" - LIBS="$GEOS_LDFLAGS" - AC_SEARCH_LIBS(GEOSTopologyPreserveSimplify,geos_c,,AC_MSG_ERROR([could not find libgeos_c - you may need to specify the directory of a geos-config file using --with-geosconfig])) - LIBS="$LIBS_SAVE" - LIBS=$LIBS$GEOS_LDFLAGS' -lgeos_c' - - #----------------------------------------------------------------------- - # --enable-geosadvanced - # - AC_ARG_ENABLE(geosadvanced, [AS_HELP_STRING( - [--enable-geosadvanced], [enables GEOS advanced features [default=yes]])], - [], [enable_geosadvanced=yes]) - if test x"$enable_geosadvanced" != "xno"; then - AC_SEARCH_LIBS(GEOSCoveredBy,geos_c,,AC_MSG_ERROR([obsolete 'libgeos_c' (< v.3.3.0). please retry specifying: --disable-geosadvanced.])) - AC_DEFINE(GEOS_ADVANCED) - fi - - #----------------------------------------------------------------------- - # --enable-geostrunk - # - AC_ARG_ENABLE(geostrunk, [AS_HELP_STRING( - [--enable-geostrunk], [enables GEOS-trunk experimental features [default=no]])], - [], [enable_geostrunk=no]) - if test x"$enable_geostrunk" != "xno"; then - AC_SEARCH_LIBS(GEOSDelaunayTriangulation,geos_c,,AC_MSG_ERROR(['libgeos_c' (>= v.3.4.0) is required but it doesn't seem to be installed on this system.])) - AC_DEFINE(GEOS_TRUNK) - fi - - #----------------------------------------------------------------------- - # --enable-lwgeom - # - AC_ARG_ENABLE(lwgeom, [AS_HELP_STRING( - [--enable-lwgeom], [enables LWGEOM support [default=no]])], - [], [enable_lwgeom=no]) - if test x"$enable_lwgeom" != "xno"; then - AC_CHECK_HEADERS(liblwgeom.h,, [AC_MSG_ERROR([cannot find liblwgeom.h, bailing out])]) - _save_libs="$LIBS" - LIBS=$LIBS' -llwgeom -lgeos_c' - AC_LINK_IFELSE([AC_LANG_SOURCE([int main() { return lwgeom_make_valid(); return 0; } - void lwgeom_init_allocators(void) { return; } ])], - [AC_DEFINE(ENABLE_LWGEOM)], - [AC_MSG_ERROR(['liblwgeom' doesn't seem to be installed on this system; unsupported lwgeom_make_valid().])]) - LIBS="$_save_libs" - LIBS=$LIBS' -llwgeom -lgeos_c' - fi -else - AC_DEFINE(OMIT_GEOS) -fi - -#----------------------------------------------------------------------- -# --enable-gcov -# -AC_ARG_ENABLE(gcov, AC_HELP_STRING([--enable-gcov],[turn on code coverage analysis tools])) -if test "x$enable_gcov" = "xyes"; then - dnl Check for -fprofile-arcs and -ftest-coverage option - CFLAGS=$CFLAGS" -fprofile-arcs -ftest-coverage -g" - GCOV_FLAGS="-lgcov" -fi -#----------------------------------------------------------------------- - -# Checking for MinGW -AM_CONDITIONAL([MINGW], [test "$target_alias" = "mingw32"]) -# Checking for Mac OsX -AM_CONDITIONAL([MACOSX], [test "$target_alias" = "macosx"]) -# Checking for Android -AM_CONDITIONAL([ANDROID], [test "$target_alias" = "android"]) - -AC_OUTPUT diff --git a/src/spatialite/depcomp b/src/spatialite/depcomp deleted file mode 100755 index df8eea7..0000000 --- a/src/spatialite/depcomp +++ /dev/null @@ -1,630 +0,0 @@ -#! /bin/sh -# depcomp - compile a program generating dependencies as side-effects - -scriptversion=2009-04-28.21; # UTC - -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free -# Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Originally written by Alexandre Oliva . - -case $1 in - '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; - -h | --h*) - cat <<\EOF -Usage: depcomp [--help] [--version] PROGRAM [ARGS] - -Run PROGRAMS ARGS to compile a file, generating dependencies -as side-effects. - -Environment variables: - depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. - DEPDIR directory where to store dependencies. - depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. - libtool Whether libtool is used (yes/no). - -Report bugs to . -EOF - exit $? - ;; - -v | --v*) - echo "depcomp $scriptversion" - exit $? - ;; -esac - -if test -z "$depmode" || test -z "$source" || test -z "$object"; then - echo "depcomp: Variables source, object and depmode must be set" 1>&2 - exit 1 -fi - -# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. -depfile=${depfile-`echo "$object" | - sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} -tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} - -rm -f "$tmpdepfile" - -# Some modes work just like other modes, but use different flags. We -# parameterize here, but still list the modes in the big case below, -# to make depend.m4 easier to write. Note that we *cannot* use a case -# here, because this file can only contain one case statement. -if test "$depmode" = hp; then - # HP compiler uses -M and no extra arg. - gccflag=-M - depmode=gcc -fi - -if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout -fi - -cygpath_u="cygpath -u -f -" -if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u="sed s,\\\\\\\\,/,g" - depmode=msvisualcpp -fi - -case "$depmode" in -gcc3) -## gcc 3 implements dependency tracking that does exactly what -## we want. Yay! Note: for some reason libtool 1.4 doesn't like -## it if -MD -MP comes after the -MF stuff. Hmm. -## Unfortunately, FreeBSD c89 acceptance of flags depends upon -## the command line argument order; so add the flags where they -## appear in depend2.am. Note that the slowdown incurred here -## affects only configure: in makefiles, %FASTDEP% shortcuts this. - for arg - do - case $arg in - -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; - *) set fnord "$@" "$arg" ;; - esac - shift # fnord - shift # $arg - done - "$@" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - mv "$tmpdepfile" "$depfile" - ;; - -gcc) -## There are various ways to get dependency output from gcc. Here's -## why we pick this rather obscure method: -## - Don't want to use -MD because we'd like the dependencies to end -## up in a subdir. Having to rename by hand is ugly. -## (We might end up doing this anyway to support other compilers.) -## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). -## - Using -M directly means running the compiler twice (even worse -## than renaming). - if test -z "$gccflag"; then - gccflag=-MD, - fi - "$@" -Wp,"$gccflag$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. - sed -e 's/^[^:]*: / /' \ - -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. -## The problem is that when a header file which appears in a .P file -## is deleted, the dependency causes make to die (because there is -## typically no way to rebuild the header). We avoid this by adding -## dummy dependencies for each header file. Too bad gcc doesn't do -## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory -## that the space means something, we add a space to the output as -## well. -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -sgi) - if test "$libtool" = yes; then - "$@" "-Wp,-MDupdate,$tmpdepfile" - else - "$@" -MDupdate "$tmpdepfile" - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - - if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files - echo "$object : \\" > "$depfile" - - # Clip off the initial element (the dependent). Don't try to be - # clever and replace this with sed code, as IRIX sed won't handle - # lines with more than a fixed number of characters (4096 in - # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the - # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> "$depfile" - echo >> "$depfile" - - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -aix) - # The C for AIX Compiler uses -M and outputs the dependencies - # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the - # start of each line; $object doesn't have directory information. - # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.u - tmpdepfile2=$base.u - tmpdepfile3=$dir.libs/$base.u - "$@" -Wc,-M - else - tmpdepfile1=$dir$base.u - tmpdepfile2=$dir$base.u - tmpdepfile3=$dir$base.u - "$@" -M - fi - stat=$? - - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output - # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : - # foo.o: sub/foo.c ... \ - # sub/foo.h ... \ - # ... - - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile" - exit $stat - fi - rm -f "$depfile" - # Each line is of the form `foo.o: dependent.h', - # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" - # Some versions of the HPUX 10.20 sed can't process this invocation - # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -hp2) - # The "hp" stanza above does not work with aCC (C++) and HP's ia64 - # compilers, which have integrated preprocessors. The correct option - # to use with these is +Maked; it writes dependencies to a file named - # 'foo.d', which lands next to the object file, wherever that - # happens to be. - # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - if test "$libtool" = yes; then - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir.libs/$base.d - "$@" -Wc,+Maked - else - tmpdepfile1=$dir$base.d - tmpdepfile2=$dir$base.d - "$@" +Maked - fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. - sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" "$tmpdepfile2" - ;; - -tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi - - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; - -#nosideeffect) - # This comment above is used by automake to tell side-effect - # dependency tracking mechanisms from slower ones. - -dashmstdout) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout, regardless of -o. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' - # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. - "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -dashXmstdout) - # This case only exists to satisfy depend.m4. It is never actually - # run, as this mode is specially recognized in the preamble. - exit 1 - ;; - -makedepend) - "$@" || exit $? - # Remove any Libtool call - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - # X makedepend - shift - cleared=no eat=no - for arg - do - case $cleared in - no) - set ""; shift - cleared=yes ;; - esac - if test $eat = yes; then - eat=no - continue - fi - case "$arg" in - -D*|-I*) - set fnord "$@" "$arg"; shift ;; - # Strip any option that makedepend may not understand. Remove - # the object too, otherwise makedepend will parse it as a source file. - -arch) - eat=yes ;; - -*|$object) - ;; - *) - set fnord "$@" "$arg"; shift ;; - esac - done - obj_suffix=`echo "$object" | sed 's/^.*\././'` - touch "$tmpdepfile" - ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" - rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" "$tmpdepfile".bak - ;; - -cpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - # Remove `-o $object'. - IFS=" " - for arg - do - case $arg in - -o) - shift - ;; - $object) - shift - ;; - *) - set fnord "$@" "$arg" - shift # fnord - shift # $arg - ;; - esac - done - - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - cat < "$tmpdepfile" >> "$depfile" - sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvisualcpp) - # Important note: in order to support this mode, a compiler *must* - # always write the preprocessed file to stdout. - "$@" || exit $? - - # Remove the call to Libtool. - if test "$libtool" = yes; then - while test "X$1" != 'X--mode=compile'; do - shift - done - shift - fi - - IFS=" " - for arg - do - case "$arg" in - -o) - shift - ;; - $object) - shift - ;; - "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; - *) - set fnord "$@" "$arg" - shift - shift - ;; - esac - done - "$@" -E 2>/dev/null | - sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" - rm -f "$depfile" - echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" - rm -f "$tmpdepfile" - ;; - -msvcmsys) - # This case exists only to let depend.m4 do its work. It works by - # looking at the text of this script. This case will never be run, - # since it is checked for above. - exit 1 - ;; - -none) - exec "$@" - ;; - -*) - echo "Unknown depmode $depmode" 1>&2 - exit 1 - ;; -esac - -exit 0 - -# Local Variables: -# mode: shell-script -# sh-indentation: 2 -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/src/spatialite/examples/Makefile.am b/src/spatialite/examples/Makefile.am deleted file mode 100644 index 20df747..0000000 --- a/src/spatialite/examples/Makefile.am +++ /dev/null @@ -1,8 +0,0 @@ -noinst_PROGRAMS = demo1 demo2 demo3 demo4 demo5 - -AM_CFLAGS = -I@srcdir@/../src/headers -AM_LDFLAGS = -L../src -lspatialite -lm $(GCOV_FLAGS) - -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda - -EXTRA_DIST = examples.doxy diff --git a/src/spatialite/examples/Makefile.in b/src/spatialite/examples/Makefile.in deleted file mode 100644 index bf62ef1..0000000 --- a/src/spatialite/examples/Makefile.in +++ /dev/null @@ -1,539 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -noinst_PROGRAMS = demo1$(EXEEXT) demo2$(EXEEXT) demo3$(EXEEXT) \ - demo4$(EXEEXT) demo5$(EXEEXT) -subdir = examples -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -PROGRAMS = $(noinst_PROGRAMS) -demo1_SOURCES = demo1.c -demo1_OBJECTS = demo1.$(OBJEXT) -demo1_LDADD = $(LDADD) -demo2_SOURCES = demo2.c -demo2_OBJECTS = demo2.$(OBJEXT) -demo2_LDADD = $(LDADD) -demo3_SOURCES = demo3.c -demo3_OBJECTS = demo3.$(OBJEXT) -demo3_LDADD = $(LDADD) -demo4_SOURCES = demo4.c -demo4_OBJECTS = demo4.$(OBJEXT) -demo4_LDADD = $(LDADD) -demo5_SOURCES = demo5.c -demo5_OBJECTS = demo5.$(OBJEXT) -demo5_LDADD = $(LDADD) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = demo1.c demo2.c demo3.c demo4.c demo5.c -DIST_SOURCES = demo1.c demo2.c demo3.c demo4.c demo5.c -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -AM_CFLAGS = -I@srcdir@/../src/headers -AM_LDFLAGS = -L../src -lspatialite -lm $(GCOV_FLAGS) -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda -EXTRA_DIST = examples.doxy -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign examples/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign examples/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstPROGRAMS: - @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -demo1$(EXEEXT): $(demo1_OBJECTS) $(demo1_DEPENDENCIES) $(EXTRA_demo1_DEPENDENCIES) - @rm -f demo1$(EXEEXT) - $(LINK) $(demo1_OBJECTS) $(demo1_LDADD) $(LIBS) -demo2$(EXEEXT): $(demo2_OBJECTS) $(demo2_DEPENDENCIES) $(EXTRA_demo2_DEPENDENCIES) - @rm -f demo2$(EXEEXT) - $(LINK) $(demo2_OBJECTS) $(demo2_LDADD) $(LIBS) -demo3$(EXEEXT): $(demo3_OBJECTS) $(demo3_DEPENDENCIES) $(EXTRA_demo3_DEPENDENCIES) - @rm -f demo3$(EXEEXT) - $(LINK) $(demo3_OBJECTS) $(demo3_LDADD) $(LIBS) -demo4$(EXEEXT): $(demo4_OBJECTS) $(demo4_DEPENDENCIES) $(EXTRA_demo4_DEPENDENCIES) - @rm -f demo4$(EXEEXT) - $(LINK) $(demo4_OBJECTS) $(demo4_LDADD) $(LIBS) -demo5$(EXEEXT): $(demo5_OBJECTS) $(demo5_DEPENDENCIES) $(EXTRA_demo5_DEPENDENCIES) - @rm -f demo5$(EXEEXT) - $(LINK) $(demo5_OBJECTS) $(demo5_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/demo1.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/demo2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/demo3.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/demo4.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/demo5.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(PROGRAMS) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstPROGRAMS ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/examples/demo1.c b/src/spatialite/examples/demo1.c deleted file mode 100644 index c6fe557..0000000 --- a/src/spatialite/examples/demo1.c +++ /dev/null @@ -1,368 +0,0 @@ -/* - -demo1.c - -Author: Sandro Furieri a-furieri@lqt.it - -This software is provided 'as-is', without any express or implied -warranty. In no event will the author be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely - -*/ - -#include -#include -#include - -#include "config.h" - -/* -these headers are required in order to support -SQLite/SpatiaLite -*/ -#include -#include -#include - -int -main (int argc, char *argv[]) -{ - int ret; - sqlite3 *handle; - sqlite3_stmt *stmt; - gaiaGeomCollPtr geom; - char sql[256]; - int i; - int ic; - char **results; - int n_rows; - int n_columns; - char *err_msg = NULL; - int len; - char *table_name; - char **p_geotables = NULL; - int n_geotables = 0; - int row_no; - const void *blob; - int blob_size; - int geom_type; - double measure; - - - if (argc != 2) - { - fprintf (stderr, "usage: %s test_db_path\n", argv[0]); - return -1; - } - - - -/* -VERY IMPORTANT: -you must initialize the SpatiaLite extension [and related] -BEFORE attempting to perform any other SQLite call -*/ - spatialite_init (0); - - -/* showing the SQLite version */ - printf ("SQLite version: %s\n", sqlite3_libversion ()); -/* showing the SpatiaLite version */ - printf ("SpatiaLite version: %s\n", spatialite_version ()); - printf ("\n\n"); - - - -/* -trying to connect the test DB: -- this demo was designed in order to connect the standard - TEST-2.3.SQLITE sample DB -- but you can try to use any SQLite/SpatiaLite DB at your will - -Please notice: we'll establish a READ ONLY connection -*/ - ret = sqlite3_open_v2 (argv[1], &handle, SQLITE_OPEN_READONLY, NULL); - if (ret != SQLITE_OK) - { - printf ("cannot open '%s': %s\n", argv[1], sqlite3_errmsg (handle)); - sqlite3_close (handle); - return -1; - } - - - -/* -SQL query #1 -we'll retrieve GEOMETRY tables from Spatial Metadata -we are assuming this query will return only few rows, -so this time we'll use the sqlite3_get_table() interface - -this interface is very simple to use -the result set is returned as a rectangular array [rows/columns] -allocated in a temporary memory storage -so, this interface is well suited for small sized result sets, -but performs badly when accessing a large sized resul set - -as a side effect, each column value is returned as text, and -isn't possible at all to retrieve true column types -(INTEGER, FLOAT ...) -*/ - strcpy (sql, - "SELECT DISTINCT f_table_name FROM geometry_columns ORDER BY 1"); - ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, - &err_msg); - if (ret != SQLITE_OK) - { -/* some error occurred */ - printf ("query#1 SQL error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - if (n_rows > 1) - { -/* first row always contains column names and is meaningless in this context */ - n_geotables = n_rows; -/* allocating a dynamic pointer array to store geotable names */ - p_geotables = malloc (sizeof (char *) * n_geotables); - for (i = 1; i <= n_rows; i++) - { -/* -now we'll fetch one row at each time [and we have only one column to fetch] - -this one is is a simplified demo; but when writing a real application -you always must check for NULL values !!!! -*/ - table_name = results[(i * n_columns) + 0]; -/* and we'll store each geotable name into the dynamic pointer array */ - len = strlen (table_name); - p_geotables[i - 1] = malloc (len + 1); - strcpy (p_geotables[i - 1], table_name); - } -/* we can now free the table results */ - sqlite3_free_table (results); - } - - - - for (i = 0; i < n_geotables; i++) - { -/* now we'll scan each geotable we've found in Spatial Metadata */ - printf ("========= table '%s' ========================\n", - p_geotables[i]); - - - -/* -SQL query #2 -we'll retrieve any column from the current geotable -we are assuming this query will return lots of rows, -so we have to use sqlite3_prepare_v2() interface - -this interface is a more complex one, but is well -suited in order to access huge sized result sets -and true value type control is supported -*/ - sprintf (sql, "SELECT * FROM %s", p_geotables[i]); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { -/* some error occurred */ - printf ("query#2 SQL error: %s\n", sqlite3_errmsg (handle)); - goto abort; - } - -/* -the sqlite3_prepare_v2() call simply parses the SQL statement, -checking for syntax validity, allocating internal structs etc -but no result set row is really yet available -*/ - -/* we'll now save the #columns within the result set */ - n_columns = sqlite3_column_count (stmt); - row_no = 0; - - - while (1) - { -/* this is an infinite loop, intended to fetch any row */ - -/* we are now trying to fetch the next available row */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - { -/* there are no more rows to fetch - we can stop looping */ - break; - } - if (ret == SQLITE_ROW) - { -/* ok, we've just fetched a valid row to process */ - row_no++; - printf ("row #%d\n", row_no); - - - for (ic = 0; ic < n_columns; ic++) - { -/* -and now we'll fetch column values - -for each column we'll then get: -- the column name -- a column value, that can be of type: SQLITE_NULL, SQLITE_INTEGER, - SQLITE_FLOAT, SQLITE_TEXT or SQLITE_BLOB, according to internal DB storage type -*/ - printf ("\t%-10s = ", - sqlite3_column_name (stmt, ic)); - switch (sqlite3_column_type (stmt, ic)) - { - case SQLITE_NULL: - printf ("NULL"); - break; - case SQLITE_INTEGER: - printf ("%d", sqlite3_column_int (stmt, ic)); - break; - case SQLITE_FLOAT: - printf ("%1.4f", - sqlite3_column_double (stmt, ic)); - break; - case SQLITE_TEXT: - printf ("'%s'", - sqlite3_column_text (stmt, ic)); - break; - case SQLITE_BLOB: - blob = sqlite3_column_blob (stmt, ic); - blob_size = sqlite3_column_bytes (stmt, ic); - -/* checking if this BLOB actually is a GEOMETRY */ - geom = - gaiaFromSpatiaLiteBlobWkb (blob, - blob_size); - if (!geom) - { -/* for sure this one is not a GEOMETRY */ - printf ("BLOB [%d bytes]", blob_size); - } - else - { - geom_type = gaiaGeometryType (geom); - if (geom_type == GAIA_UNKNOWN) - printf ("EMPTY or NULL GEOMETRY"); - else - { - char *geom_name; - if (geom_type == GAIA_POINT) - geom_name = "POINT"; - if (geom_type == GAIA_LINESTRING) - geom_name = "LINESTRING"; - if (geom_type == GAIA_POLYGON) - geom_name = "POLYGON"; - if (geom_type == GAIA_MULTIPOINT) - geom_name = "MULTIPOINT"; - if (geom_type == - GAIA_MULTILINESTRING) - geom_name = "MULTILINESTRING"; - if (geom_type == - GAIA_MULTIPOLYGON) - geom_name = "MULTIPOLYGON"; - if (geom_type == - GAIA_GEOMETRYCOLLECTION) - geom_name = - "GEOMETRYCOLLECTION"; - printf ("%s SRID=%d", geom_name, - geom->Srid); - if (geom_type == GAIA_LINESTRING - || geom_type == - GAIA_MULTILINESTRING) - { -#ifndef OMIT_GEOS /* GEOS is required */ - gaiaGeomCollLength (geom, - &measure); - printf (" length=%1.2f", - measure); -#else - printf - (" length=?? [no GEOS support available]"); -#endif /* GEOS enabled/disabled */ - } - if (geom_type == GAIA_POLYGON || - geom_type == - GAIA_MULTIPOLYGON) - { -#ifndef OMIT_GEOS /* GEOS is required */ - gaiaGeomCollArea (geom, - &measure); - printf (" area=%1.2f", - measure); -#else - printf - ("area=?? [no GEOS support available]"); -#endif /* GEOS enabled/disabled */ - } - } -/* we have now to free the GEOMETRY */ - gaiaFreeGeomColl (geom); - } - - break; - }; - printf ("\n"); - } - - if (row_no >= 5) - { -/* we'll exit the loop after the first 5 rows - this is only a demo :-) */ - break; - } - } - else - { -/* some unexpected error occurred */ - printf ("sqlite3_step() error: %s\n", - sqlite3_errmsg (handle)); - sqlite3_finalize (stmt); - goto abort; - } - } -/* we have now to finalize the query [memory cleanup] */ - sqlite3_finalize (stmt); - printf ("\n\n"); - - } - - - -/* disconnecting the test DB */ - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) - { - printf ("close() error: %s\n", sqlite3_errmsg (handle)); - return -1; - } - printf ("\n\nsample successfully terminated\n"); -/* we have to free the dynamic pointer array used to store geotable names */ - for (i = 0; i < n_geotables; i++) - { -/* freeing each tablename */ - free (p_geotables[i]); - } - free (p_geotables); - return 0; - - abort: - sqlite3_close (handle); - spatialite_cleanup(); - if (p_geotables) - { -/* we have to free the dynamic pointer array used to store geotable names */ - for (i = 0; i < n_geotables; i++) - { -/* freeing each tablename */ - free (p_geotables[i]); - } - free (p_geotables); - } - return -1; -} diff --git a/src/spatialite/examples/demo2.c b/src/spatialite/examples/demo2.c deleted file mode 100644 index 652beca..0000000 --- a/src/spatialite/examples/demo2.c +++ /dev/null @@ -1,542 +0,0 @@ -/* - -demo2.c - -Author: Sandro Furieri a-furieri@lqt.it - -This software is provided 'as-is', without any express or implied -warranty. In no event will the author be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely - -*/ - -#include -#include -#include - -#include "config.h" - -/* -these headers are required in order to support -SQLite/SpatiaLite -*/ - -#include - -#include -#include -#include - -static char * -geom_type (int type) -{ -/* utility function returning corresponding GeometryType as a string */ - static char *name = "EMPTY / NULL GEOMETRY"; - if (type == GAIA_POINT) - name = "POINT"; - if (type == GAIA_LINESTRING) - name = "LINESTRING"; - if (type == GAIA_POLYGON) - name = "POLYGON"; - if (type == GAIA_MULTIPOINT) - name = "MULTIPOINT"; - if (type == GAIA_MULTILINESTRING) - name = "MULTILINESTRING"; - if (type == GAIA_MULTIPOLYGON) - name = "MULTIPOLYGON"; - if (type == GAIA_GEOMETRYCOLLECTION) - name = "GEOMETRYCOLLECTION"; - return name; -} - -static void -geometry_printout (gaiaGeomCollPtr geom) -{ -/* utility function printing a generic Geometry object */ - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - int n_pts = 0; - int n_lns = 0; - int n_pgs = 0; - int cnt; - int iv; - int ir; - double x; - double y; - - -/* we'll now count how many POINTs are there */ - pt = geom->FirstPoint; - while (pt) - { - n_pts++; - pt = pt->Next; - } -/* we'll now count how many LINESTRINGs are there */ - ln = geom->FirstLinestring; - while (ln) - { - n_lns++; - ln = ln->Next; - } -/* we'll now count how many POLYGONs are there */ - pg = geom->FirstPolygon; - while (pg) - { - n_pgs++; - pg = pg->Next; - } - - - - if (n_pts) - { -/* printing POINTs coordinates */ - cnt = 0; - pt = geom->FirstPoint; - while (pt) - { -/* we'll now scan the linked list of POINTs */ - printf ("\t\t\tPOINT %d/%d x=%1.4f y=%1.4f\n", - cnt, n_pts, pt->X, pt->Y); - cnt++; - pt = pt->Next; - } - } - - - if (n_lns) - { -/* printing LINESTRINGs coordinates */ - cnt = 0; - ln = geom->FirstLinestring; - while (ln) - { -/* we'll now scan the linked list of LINESTRINGs */ - printf ("\t\t\tLINESTRING %d/%d has %d vertices\n", - cnt, n_lns, ln->Points); - for (iv = 0; iv < ln->Points; iv++) - { -/* we'll now retrieve coordinates for each vertex */ - gaiaGetPoint (ln->Coords, iv, &x, &y); - printf ("\t\t\t\tvertex %d/%d x=%1.4f y=%1.4f\n", - iv, ln->Points, x, y); - } - cnt++; - ln = ln->Next; - } - } - - - if (n_pgs) - { -/* printing POLYGONs coordinates */ - cnt = 0; - pg = geom->FirstPolygon; - while (pg) - { -/* we'll now scan the linked list of POLYGONs */ - printf ("\t\t\tPOLYGON %d/%d has %d hole%c\n", - cnt, n_pgs, pg->NumInteriors, - (pg->NumInteriors == 1) ? ' ' : 's'); - -/* -now we'll print out the Exterior ring -[surely a POLYGON has an Exterior ring -*/ - rng = pg->Exterior; - printf ("\t\t\t\tExteriorRing has %d vertices\n", rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { -/* we'll now retrieve coordinates for each vertex */ - gaiaGetPoint (rng->Coords, iv, &x, &y); - printf ("\t\t\t\t\tvertex %d/%d x=%1.4f y=%1.4f\n", - iv, rng->Points, x, y); - } - - for (ir = 0; ir < pg->NumInteriors; ir++) - { -/* -a POLYGON can contain an arbitrary number of Interior rings (including zero) -*/ - rng = pg->Interiors + ir; - printf ("\t\t\t\tInteriorRing %d/%d has %d vertices\n", - ir, pg->NumInteriors, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { -/* we'll now retrieve coordinates for each vertex */ - gaiaGetPoint (rng->Coords, iv, &x, &y); - printf - ("\t\t\t\t\tvertex %d/%d x=%1.4f y=%1.4f\n", - iv, rng->Points, x, y); - } - } - - cnt++; - pg = pg->Next; - } - } -} - -int -main (int argc, char *argv[]) -{ - gaiaGeomCollPtr geo_pt = NULL; - gaiaGeomCollPtr geo_ln = NULL; - gaiaGeomCollPtr geo_pg = NULL; - gaiaGeomCollPtr geo_mpt = NULL; - gaiaGeomCollPtr geo_mln = NULL; - gaiaGeomCollPtr geo_mpg = NULL; - gaiaGeomCollPtr geo_coll = NULL; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - gaiaOutBuffer wkt; - int ret; - sqlite3 *handle; - - -/* - -this demo does not strictly require any DB connection to be established - -However you must initialize the SpatiaLite extension [and related] -and you *must* establish a "fake" DB connection in order to -properly initialize SpatiaLite and GEOS libraries - -*/ - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READONLY, NULL); - if (ret != SQLITE_OK) - { - printf ("cannot open '%s': %s\n", ":memory:", - sqlite3_errmsg (handle)); - sqlite3_close (handle); - return -1; - } - - -#ifndef OMIT_GEOS /* GEOS must be enabled */ - -/* -Step #1 -creating and checking a POINT Geometry -*/ - -/* we'll allocate a Geometry object */ - geo_pt = gaiaAllocGeomColl (); -/* then we insert a POINT, directly passing its coordinates */ - gaiaAddPointToGeomColl (geo_pt, 1.5, 2.75); -/* now we'll print the main attributes for this geometry */ - printf ("step#1: %s\t\tDimension=%d IsValid=%d\n", - geom_type (gaiaGeometryType (geo_pt)), - gaiaDimension (geo_pt), gaiaIsValid (geo_pt)); - geometry_printout (geo_pt); - - - -/* -Step #2 -creating and checking a LINESTRING Geometry -*/ - geo_ln = gaiaAllocGeomColl (); -/* then we insert a LINESTRING, specifying how many vertices it contains */ - line = gaiaAddLinestringToGeomColl (geo_ln, 5); -/* -we've got a pointer referencing the linestring we've just inserted -now we'll set coordinates for each vertex -*/ - gaiaSetPoint (line->Coords, 0, 1.0, 1.0); - gaiaSetPoint (line->Coords, 1, 2.0, 1.0); - gaiaSetPoint (line->Coords, 2, 2.0, 2.0); - gaiaSetPoint (line->Coords, 3, 100.0, 2.0); - gaiaSetPoint (line->Coords, 4, 100.0, 100.0); - - - printf ("\nstep#2: %s\tDimension=%d IsValid=%d\n", - geom_type (gaiaGeometryType (geo_ln)), - gaiaDimension (geo_ln), gaiaIsValid (geo_ln)); - geometry_printout (geo_ln); - - - -/* -Step #3 -creating and checking a POLYGON Geometry -*/ - geo_pg = gaiaAllocGeomColl (); -/* -then we insert a POLYGON, specifying: -- how many vertices have to be allocated for the Exterior Ring -- how many Interior Rings it has -*/ - polyg = gaiaAddPolygonToGeomColl (geo_pg, 5, 2); -/* -we've got a pointer referencing the polygon we've just inserted -now we'll get a pointer referencing its Exterior ring -*/ - ring = polyg->Exterior; - - -/* now we'll set coordinates for each Exterior ring vertex */ - gaiaSetPoint (ring->Coords, 0, 0.0, 0.0); - gaiaSetPoint (ring->Coords, 1, 50.0, 0.0); - gaiaSetPoint (ring->Coords, 2, 50.0, 50.0); - gaiaSetPoint (ring->Coords, 3, 0.0, 50.0); -/* please note: a Ring is a CLOSED figure, so last and first vertex have to be coincident */ - gaiaSetPoint (ring->Coords, 4, 0.0, 0.0); - - -/* -we'll now get a pointer referencing the FIRST interior ring, -specifying how vertices have to be allocated -*/ - ring = gaiaAddInteriorRing (polyg, 0, 5); -/* then setting coordinates for each Interior ring vertex */ - gaiaSetPoint (ring->Coords, 0, 40.0, 40.0); - gaiaSetPoint (ring->Coords, 1, 41.0, 40.0); - gaiaSetPoint (ring->Coords, 2, 41.0, 41.0); - gaiaSetPoint (ring->Coords, 3, 40.0, 41.0); - gaiaSetPoint (ring->Coords, 4, 40.0, 40.0); - - -/* -we'll now get a pointer referencing the SECOND interior ring, -specifying how vertices have to be allocated -*/ - ring = gaiaAddInteriorRing (polyg, 1, 5); -/* then setting coordinates for each Interior ring vertex */ - gaiaSetPoint (ring->Coords, 0, 30.0, 30.0); - gaiaSetPoint (ring->Coords, 1, 31.0, 30.0); - gaiaSetPoint (ring->Coords, 2, 31.0, 31.0); - gaiaSetPoint (ring->Coords, 3, 30.0, 31.0); - gaiaSetPoint (ring->Coords, 4, 30.0, 30.0); - - - printf ("\nstep#3: %s\tDimension=%d IsValid=%d\n", - geom_type (gaiaGeometryType (geo_pg)), - gaiaDimension (geo_pg), gaiaIsValid (geo_pg)); - geometry_printout (geo_pg); - - - -/* -Step #4 -creating and checking a MULTIPOINT Geometry -*/ - geo_mpt = gaiaAllocGeomColl (); -/* then we'll insert some POINTs */ - gaiaAddPointToGeomColl (geo_mpt, 5.0, 5.0); - gaiaAddPointToGeomColl (geo_mpt, 15.0, 5.0); - gaiaAddPointToGeomColl (geo_mpt, 5.0, 15.0); - gaiaAddPointToGeomColl (geo_mpt, 25.0, 5.0); - gaiaAddPointToGeomColl (geo_mpt, 5.0, 25.0); - printf ("\nstep#4: %s\tDimension=%d IsValid=%d\n", - geom_type (gaiaGeometryType (geo_mpt)), - gaiaDimension (geo_mpt), gaiaIsValid (geo_mpt)); - geometry_printout (geo_mpt); - - - -/* -Step #5 -creating and checking a MULTILINESTRING Geometry -*/ - geo_mln = gaiaAllocGeomColl (); - -/* then we'll insert two LINESTRINGs */ - line = gaiaAddLinestringToGeomColl (geo_mln, 2); - gaiaSetPoint (line->Coords, 0, 30.0, 10.0); - gaiaSetPoint (line->Coords, 1, 10.0, 30.0); - - line = gaiaAddLinestringToGeomColl (geo_mln, 2); - gaiaSetPoint (line->Coords, 0, 40.0, 50.0); - gaiaSetPoint (line->Coords, 1, 50.0, 40.0); - - printf ("\nstep#5: %s\tDimension=%d IsValid=%d\n", - geom_type (gaiaGeometryType (geo_mln)), - gaiaDimension (geo_mln), gaiaIsValid (geo_mln)); - geometry_printout (geo_mln); - - - -/* -Step #6 -creating and checking a MULTIPOLYGON Geometry -*/ - geo_mpg = gaiaAllocGeomColl (); - -/* then we'll insert two POLYGONs */ - polyg = gaiaAddPolygonToGeomColl (geo_mpg, 5, 0); - ring = polyg->Exterior; - gaiaSetPoint (ring->Coords, 0, 60.0, 60.0); - gaiaSetPoint (ring->Coords, 1, 70.0, 60.0); - gaiaSetPoint (ring->Coords, 2, 70.0, 70.0); - gaiaSetPoint (ring->Coords, 3, 60.0, 70.0); - gaiaSetPoint (ring->Coords, 4, 60.0, 60.0); - - polyg = gaiaAddPolygonToGeomColl (geo_mpg, 5, 0); - ring = polyg->Exterior; - gaiaSetPoint (ring->Coords, 0, 80.0, 80.0); - gaiaSetPoint (ring->Coords, 1, 90.0, 80.0); - gaiaSetPoint (ring->Coords, 2, 90.0, 90.0); - gaiaSetPoint (ring->Coords, 3, 80.0, 90.0); - gaiaSetPoint (ring->Coords, 4, 80.0, 80.0); - - printf ("\nstep#6: %s\tDimension=%d IsValid=%d\n", - geom_type (gaiaGeometryType (geo_mpg)), - gaiaDimension (geo_mpg), gaiaIsValid (geo_mpg)); - geometry_printout (geo_mpg); - - - -/* -Step #7 -creating and checking a GEOMETRYCOLLECTION Geometry -*/ - geo_coll = gaiaAllocGeomColl (); - -/* then we'll insert two POINTs */ - gaiaAddPointToGeomColl (geo_coll, 100.0, 100.0); - gaiaAddPointToGeomColl (geo_coll, 100.0, 0.0); - -/* then we'll insert two LINESTRINGs */ - line = gaiaAddLinestringToGeomColl (geo_coll, 2); - gaiaSetPoint (line->Coords, 0, 130.0, 110.0); - gaiaSetPoint (line->Coords, 1, 110.0, 130.0); - - line = gaiaAddLinestringToGeomColl (geo_coll, 2); - gaiaSetPoint (line->Coords, 0, 140.0, 150.0); - gaiaSetPoint (line->Coords, 1, 150.0, 140.0); - -/* then we'll insert two POLYGONs */ - polyg = gaiaAddPolygonToGeomColl (geo_coll, 5, 0); - ring = polyg->Exterior; - gaiaSetPoint (ring->Coords, 0, 160.0, 160.0); - gaiaSetPoint (ring->Coords, 1, 170.0, 160.0); - gaiaSetPoint (ring->Coords, 2, 170.0, 170.0); - gaiaSetPoint (ring->Coords, 3, 160.0, 170.0); - gaiaSetPoint (ring->Coords, 4, 160.0, 160.0); - - polyg = gaiaAddPolygonToGeomColl (geo_coll, 5, 0); - ring = polyg->Exterior; - gaiaSetPoint (ring->Coords, 0, 180.0, 180.0); - gaiaSetPoint (ring->Coords, 1, 190.0, 180.0); - gaiaSetPoint (ring->Coords, 2, 190.0, 190.0); - gaiaSetPoint (ring->Coords, 3, 180.0, 190.0); - gaiaSetPoint (ring->Coords, 4, 180.0, 180.0); - - printf ("\nstep#7: %s\tDimension=%d IsValid=%d\n", - geom_type (gaiaGeometryType (geo_coll)), - gaiaDimension (geo_coll), gaiaIsValid (geo_coll)); - geometry_printout (geo_coll); - - - - -/* -Step #8 -printing each geometry as Well Known Text (WKT) -*/ - - printf ("\nstep#8: checking WKT representations\n"); - -/* first we'll get the WKT corresponding to geometry */ - gaiaOutBufferInitialize (&wkt); - gaiaOutWkt (&wkt, geo_pt); -/* we have to check wkt is not NULL */ - if (wkt.Error == 0 && wkt.Buffer != NULL) - { -/* printing the WKT */ - printf ("\n%s\n", wkt.Buffer); - -/* finally freeing the wkt temporary storage allocation */ - gaiaOutBufferReset (&wkt); - } - - - gaiaOutBufferInitialize (&wkt); - gaiaOutWkt (&wkt, geo_ln); - if (wkt.Error == 0 && wkt.Buffer != NULL) - { - printf ("\n%s\n", wkt.Buffer); - gaiaOutBufferReset (&wkt); - } - - - gaiaOutBufferInitialize (&wkt); - gaiaOutWkt (&wkt, geo_pg); - if (wkt.Error == 0 && wkt.Buffer != NULL) - { - printf ("\n%s\n", wkt.Buffer); - gaiaOutBufferReset (&wkt); - } - - - gaiaOutBufferInitialize (&wkt); - gaiaOutWkt (&wkt, geo_mpt); - if (wkt.Error == 0 && wkt.Buffer != NULL) - { - printf ("\n%s\n", wkt.Buffer); - gaiaOutBufferReset (&wkt); - } - - - gaiaOutBufferInitialize (&wkt); - gaiaOutWkt (&wkt, geo_mln); - if (wkt.Error == 0 && wkt.Buffer != NULL) - { - printf ("\n%s\n", wkt.Buffer); - gaiaOutBufferReset (&wkt); - } - - - gaiaOutBufferInitialize (&wkt); - gaiaOutWkt (&wkt, geo_mpg); - if (wkt.Error == 0 && wkt.Buffer != NULL) - { - printf ("\n%s\n", wkt.Buffer); - gaiaOutBufferReset (&wkt); - } - - - gaiaOutBufferInitialize (&wkt); - gaiaOutWkt (&wkt, geo_coll); - if (wkt.Error == 0 && wkt.Buffer != NULL) - { - printf ("\n%s\n", wkt.Buffer); - gaiaOutBufferReset (&wkt); - } - -#else - printf ("no GEOS support available: skipping any test\n"); -#endif /* GEOS enabled/disabled */ - -/* -memory cleanup -we have to destroy each object using temporary storage before exit -*/ - if (geo_pt) - gaiaFreeGeomColl (geo_pt); - if (geo_ln) - gaiaFreeGeomColl (geo_ln); - if (geo_pg) - gaiaFreeGeomColl (geo_pg); - if (geo_mpt) - gaiaFreeGeomColl (geo_mpt); - if (geo_mln) - gaiaFreeGeomColl (geo_mln); - if (geo_mpg) - gaiaFreeGeomColl (geo_mpg); - if (geo_coll) - gaiaFreeGeomColl (geo_coll); - sqlite3_close (handle); - spatialite_cleanup(); - return 0; -} diff --git a/src/spatialite/examples/demo3.c b/src/spatialite/examples/demo3.c deleted file mode 100644 index 2ae6c5f..0000000 --- a/src/spatialite/examples/demo3.c +++ /dev/null @@ -1,371 +0,0 @@ -/* - -demo3.c - -Author: Sandro Furieri a-furieri@lqt.it - -This software is provided 'as-is', without any express or implied -warranty. In no event will the author be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely - -*/ - -#include -#include -#include -#include - -/* -these headers are required in order to support -SQLite/SpatiaLite -*/ -#include -#include -#include - -int -main (int argc, char *argv[]) -{ - int ret; - sqlite3 *handle; - sqlite3_stmt *stmt; - char sql[256]; - char *err_msg = NULL; - double x; - double y; - int pk; - int ix; - int iy; - gaiaGeomCollPtr geo = NULL; - unsigned char *blob; - int blob_size; - int i; - char **results; - int n_rows; - int n_columns; - char *count; - clock_t t0; - clock_t t1; - - - if (argc != 2) - { - fprintf (stderr, "usage: %s test_db_path\n", argv[0]); - return -1; - } - - -/* -VERY IMPORTANT: -you must initialize the SpatiaLite extension [and related] -BEFORE attempting to perform any other SQLite call -*/ - spatialite_init (0); - - -/* showing the SQLite version */ - printf ("SQLite version: %s\n", sqlite3_libversion ()); -/* showing the SpatiaLite version */ - printf ("SpatiaLite version: %s\n", spatialite_version ()); - printf ("\n\n"); - - - -/* -trying to connect the test DB: -- this demo is intended to create a new, empty database -*/ - ret = sqlite3_open_v2 (argv[1], &handle, - SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) - { - printf ("cannot open '%s': %s\n", argv[1], sqlite3_errmsg (handle)); - sqlite3_close (handle); - return -1; - } - - - -/* -we are supposing this one is an empty database, -so we have to create the Spatial Metadata -*/ - strcpy (sql, "SELECT InitSpatialMetadata()"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - - -/* -now we can create the test table -for simplicity we'll define only one column, the primary key -*/ - strcpy (sql, "CREATE TABLE test ("); - strcat (sql, "PK INTEGER NOT NULL PRIMARY KEY)"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("CREATE TABLE 'test' error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - - -/* -... we'll add a Geometry column of POINT type to the test table -*/ - strcpy (sql, "SELECT AddGeometryColumn('test', 'geom', 3003, 'POINT', 2)"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("AddGeometryColumn() error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - - -/* -and finally we'll enable this geo-column to have a Spatial Index based on R*Tree -*/ - strcpy (sql, "SELECT CreateSpatialIndex('test', 'geom')"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("CreateSpatialIndex() error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - - printf - ("\nnow we are going to insert 1 million POINTs; wait, please ...\n\n"); - - t0 = clock (); -/* -beginning a transaction - -*** this step is absolutely critical *** - -the SQLite engine is a TRANSACTIONAL one -the whole batch of INSERTs has to be performed as an unique transaction, -otherwise performance will be surely very poor -*/ - strcpy (sql, "BEGIN"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("BEGIN error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - - - -/* -preparing to populate the test table -we'll use a Prepared Statement we can reuse in order to insert each row -*/ - strcpy (sql, "INSERT INTO test (pk, geom) VALUES (?, ?)"); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("INSERT SQL error: %s\n", sqlite3_errmsg (handle)); - goto abort; - } - - pk = 0; - for (ix = 0; ix < 1000; ix++) - { - x = 1000000.0 + (ix * 10.0); - for (iy = 0; iy < 1000; iy++) - { -/* this double loop will insert 1 million rows into the the test table */ - - y = 4000000.0 + (iy * 10.0); - pk++; - if ((pk % 25000) == 0) - { - t1 = clock (); - printf ("insert row: %d\t\t[elapsed time: %1.3f]\n", - pk, (double) (t1 - t0) / CLOCKS_PER_SEC); - } - -/* preparing the geometry to insert */ - geo = gaiaAllocGeomColl (); - geo->Srid = 3003; - gaiaAddPointToGeomColl (geo, x, y); - -/* transforming this geometry into the SpatiaLite BLOB format */ - gaiaToSpatiaLiteBlobWkb (geo, &blob, &blob_size); - -/* we can now destroy the geometry object */ - gaiaFreeGeomColl (geo); - -/* resetting Prepared Statement and bindings */ - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - -/* binding parameters to Prepared Statement */ - sqlite3_bind_int64 (stmt, 1, pk); - sqlite3_bind_blob (stmt, 2, blob, blob_size, free); - -/* performing actual row insert */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { -/* an unexpected error occurred */ - printf ("sqlite3_step() error: %s\n", - sqlite3_errmsg (handle)); - sqlite3_finalize (stmt); - goto abort; - } - - } - } -/* we have now to finalize the query [memory cleanup] */ - sqlite3_finalize (stmt); - - - -/* -committing the transaction - -*** this step is absolutely critical *** - -if we don't confirm the still pending transaction, -any update will be lost -*/ - strcpy (sql, "COMMIT"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("COMMIT error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - - - -/* -now we'll optimize the table -*/ - strcpy (sql, "ANALYZE test"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("ANALYZE error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - - - for (ix = 0; ix < 3; ix++) - { - printf ("\nperforming test#%d - not using Spatial Index\n", ix); -/* -now we'll perform the spatial query WITHOUT using the Spatial Index -we'll loop 3 times in order to avoid buffering-caching side effects -*/ - strcpy (sql, "SELECT Count(*) FROM test "); - strcat (sql, "WHERE MbrWithin(geom, BuildMbr("); - strcat (sql, "1000400.5, 4000400.5, "); - strcat (sql, "1000450.5, 4000450.5))"); - t0 = clock (); - ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, - &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("NoSpatialIndex SQL error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - count = ""; - for (i = 1; i <= n_rows; i++) - { - count = results[(i * n_columns) + 0]; - } - t1 = clock (); - printf ("Count(*) = %d\t\t[elapsed time: %1.4f]\n", atoi (count), - (double) (t1 - t0) / CLOCKS_PER_SEC); -/* we can now free the table results */ - sqlite3_free_table (results); - } - - - for (ix = 0; ix < 3; ix++) - { - printf ("\nperforming test#%d - using the R*Tree Spatial Index\n", - ix); -/* -now we'll perform the spatial query USING the R*Tree Spatial Index -we'll loop 3 times in order to avoid buffering-caching side effects -*/ - strcpy (sql, "SELECT Count(*) FROM test "); - strcat (sql, "WHERE MbrWithin(geom, BuildMbr("); - strcat (sql, "1000400.5, 4000400.5, "); - strcat (sql, "1000450.5, 4000450.5)) AND ROWID IN ("); - strcat (sql, "SELECT pkid FROM idx_test_geom WHERE "); - strcat (sql, "xmin > 1000400.5 AND "); - strcat (sql, "xmax < 1000450.5 AND "); - strcat (sql, "ymin > 4000400.5 AND "); - strcat (sql, "ymax < 4000450.5)"); -/* -YES, this query is a very unhappy one -the idea is simply to simulate exactly the same conditions as above -*/ - t0 = clock (); - ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, - &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("SpatialIndex SQL error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - count = ""; - for (i = 1; i <= n_rows; i++) - { - count = results[(i * n_columns) + 0]; - } - t1 = clock (); - printf ("Count(*) = %d\t\t[elapsed time: %1.4f]\n", atoi (count), - (double) (t1 - t0) / CLOCKS_PER_SEC); -/* we can now free the table results */ - sqlite3_free_table (results); - } - - -/* disconnecting the test DB */ - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) - { - printf ("close() error: %s\n", sqlite3_errmsg (handle)); - return -1; - } - printf ("\n\nsample successfully terminated\n"); - return 0; - - abort: - sqlite3_close (handle); - spatialite_cleanup(); - return -1; -} diff --git a/src/spatialite/examples/demo4.c b/src/spatialite/examples/demo4.c deleted file mode 100644 index 5c020a1..0000000 --- a/src/spatialite/examples/demo4.c +++ /dev/null @@ -1,368 +0,0 @@ -/* - -demo4.c - -Author: Sandro Furieri a-furieri@lqt.it - -This software is provided 'as-is', without any express or implied -warranty. In no event will the author be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely - -*/ - -#include -#include -#include -#include - -/* -these headers are required in order to support -SQLite/SpatiaLite -*/ -#include -#include -#include - -int -main (int argc, char *argv[]) -{ - int ret; - sqlite3 *handle; - sqlite3_stmt *stmt; - char sql[256]; - char *err_msg = NULL; - double x; - double y; - int pk; - int ix; - int iy; - gaiaGeomCollPtr geo = NULL; - unsigned char *blob; - int blob_size; - int i; - char **results; - int n_rows; - int n_columns; - char *count; - clock_t t0; - clock_t t1; - - - if (argc != 2) - { - fprintf (stderr, "usage: %s test_db_path\n", argv[0]); - return -1; - } - - -/* -VERY IMPORTANT: -you must initialize the SpatiaLite extension [and related] -BEFORE attempting to perform any other SQLite call -*/ - spatialite_init (0); - - -/* showing the SQLite version */ - printf ("SQLite version: %s\n", sqlite3_libversion ()); -/* showing the SpatiaLite version */ - printf ("SpatiaLite version: %s\n", spatialite_version ()); - printf ("\n\n"); - - - -/* -trying to connect the test DB: -- this demo is intended to create a new, empty database -*/ - ret = sqlite3_open_v2 (argv[1], &handle, - SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) - { - printf ("cannot open '%s': %s\n", argv[1], sqlite3_errmsg (handle)); - sqlite3_close (handle); - return -1; - } - - - -/* -we are supposing this one is an empty database, -so we have to create the Spatial Metadata -*/ - strcpy (sql, "SELECT InitSpatialMetadata()"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) - { -/* some error occurred */ - printf ("InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - - -/* -now we can create the test table -for simplicity we'll define only one column, the primary key -*/ - strcpy (sql, "CREATE TABLE test ("); - strcat (sql, "PK INTEGER NOT NULL PRIMARY KEY)"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("CREATE TABLE 'test' error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - - -/* -... we'll add a Geometry column of POINT type to the test table -*/ - strcpy (sql, "SELECT AddGeometryColumn('test', 'geom', 3003, 'POINT', 2)"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("AddGeometryColumn() error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - - -/* -and finally we'll enable this geo-column to have a Spatial Index based on MBR caching -*/ - strcpy (sql, "SELECT CreateMbrCache('test', 'geom')"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("CreateMbrCache() error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - - printf - ("\nnow we are going to insert 1 million POINTs; wait, please ...\n\n"); - - t0 = clock (); -/* -beginning a transaction - -*** this step is absolutely critical *** - -the SQLite engine is a TRANSACTIONAL one -the whole batch of INSERTs has to be performed as an unique transaction, -otherwise performance will be surely very poor -*/ - strcpy (sql, "BEGIN"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("BEGIN error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - - - -/* -preparing to populate the test table -we'll use a Prepared Statement we can reuse in order to insert each row -*/ - strcpy (sql, "INSERT INTO test (pk, geom) VALUES (?, ?)"); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("INSERT SQL error: %s\n", sqlite3_errmsg (handle)); - goto abort; - } - - pk = 0; - for (ix = 0; ix < 1000; ix++) - { - x = 1000000.0 + (ix * 10.0); - for (iy = 0; iy < 1000; iy++) - { -/* this double loop will insert 1 million rows into the the test table */ - - y = 4000000.0 + (iy * 10.0); - pk++; - if ((pk % 25000) == 0) - { - t1 = clock (); - printf ("insert row: %d\t\t[elapsed time: %1.3f]\n", - pk, (double) (t1 - t0) / CLOCKS_PER_SEC); - } - -/* preparing the geometry to insert */ - geo = gaiaAllocGeomColl (); - geo->Srid = 3003; - gaiaAddPointToGeomColl (geo, x, y); - -/* transforming this geometry into the SpatiaLite BLOB format */ - gaiaToSpatiaLiteBlobWkb (geo, &blob, &blob_size); - -/* we can now destroy the geometry object */ - gaiaFreeGeomColl (geo); - -/* resetting Prepared Statement and bindings */ - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - -/* binding parameters to Prepared Statement */ - sqlite3_bind_int64 (stmt, 1, pk); - sqlite3_bind_blob (stmt, 2, blob, blob_size, free); - -/* performing actual row insert */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { -/* an unexpected error occurred */ - printf ("sqlite3_step() error: %s\n", - sqlite3_errmsg (handle)); - sqlite3_finalize (stmt); - goto abort; - } - - } - } -/* we have now to finalize the query [memory cleanup] */ - sqlite3_finalize (stmt); - - - -/* -committing the transaction - -*** this step is absolutely critical *** - -if we don't confirm the still pending transaction, -any update will be lost -*/ - strcpy (sql, "COMMIT"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("COMMIT error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - - - -/* -now we'll optimize the table -*/ - strcpy (sql, "ANALYZE test"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("ANALYZE error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - - - for (ix = 0; ix < 3; ix++) - { - printf ("\nperforming test#%d - not using Spatial Index\n", ix); -/* -now we'll perform the spatial query WITHOUT using the Spatial Index -we'll loop 3 times in order to avoid buffering-caching side effects -*/ - strcpy (sql, "SELECT Count(*) FROM test "); - strcat (sql, "WHERE MbrWithin(geom, BuildMbr("); - strcat (sql, "1000400.5, 4000400.5, "); - strcat (sql, "1000450.5, 4000450.5))"); - t0 = clock (); - ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, - &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("NoSpatialIndex SQL error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - count = ""; - for (i = 1; i <= n_rows; i++) - { - count = results[(i * n_columns) + 0]; - } - t1 = clock (); - printf ("Count(*) = %d\t\t[elapsed time: %1.4f]\n", atoi (count), - (double) (t1 - t0) / CLOCKS_PER_SEC); -/* we can now free the table results */ - sqlite3_free_table (results); - } - - - for (ix = 0; ix < 3; ix++) - { - printf ("\nperforming test#%d - using the MBR cache Spatial Index\n", - ix); -/* -now we'll perform the spatial query USING the MBR cache Spatial Index -we'll loop 3 times in order to avoid buffering-caching side effects -*/ - strcpy (sql, "SELECT Count(*) FROM test "); - strcat (sql, "WHERE ROWID IN ("); - strcat (sql, "SELECT rowid FROM cache_test_geom WHERE "); - strcat (sql, - "mbr = FilterMbrWithin(1000400.5, 4000400.5, 1000450.5, 4000450.5))"); - -/* -YES, this query is a very unhappy one -the idea is simply to simulate exactly the same conditions as above -*/ - t0 = clock (); - ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, - &err_msg); - if (ret != SQLITE_OK) - { -/* an error occurred */ - printf ("SpatialIndex SQL error: %s\n", err_msg); - sqlite3_free (err_msg); - goto abort; - } - count = ""; - for (i = 1; i <= n_rows; i++) - { - count = results[(i * n_columns) + 0]; - } - t1 = clock (); - printf ("Count(*) = %d\t\t[elapsed time: %1.4f]\n", atoi (count), - (double) (t1 - t0) / CLOCKS_PER_SEC); -/* we can now free the table results */ - sqlite3_free_table (results); - } - - -/* disconnecting the test DB */ - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) - { - printf ("close() error: %s\n", sqlite3_errmsg (handle)); - return -1; - } - printf ("\n\nsample successfully terminated\n"); - return 0; - - abort: - sqlite3_close (handle); - spatialite_cleanup(); - return -1; -} diff --git a/src/spatialite/examples/demo5.c b/src/spatialite/examples/demo5.c deleted file mode 100644 index 9d0cb83..0000000 --- a/src/spatialite/examples/demo5.c +++ /dev/null @@ -1,332 +0,0 @@ -/* - -demo5.c - -Author: Sandro Furieri a-furieri@lqt.it - -This software is provided 'as-is', without any express or implied -warranty. In no event will the author be held liable for any -damages arising from the use of this software. - -Permission is granted to anyone to use this software for any -purpose, including commercial applications, and to alter it and -redistribute it freely - -*/ - -#include -#include -#include -#include - -/* -these headers are required in order to support -SQLite/SpatiaLite -*/ -#include -#include -#include - -#define ARG_NONE 0 -#define ARG_DB_PATH 1 -#define ARG_TABLE 2 -#define ARG_GEOMETRY 3 - -static void -do_print_list (gaiaVectorLayersListPtr list, int n_mode) -{ -/* prints the layers list */ - gaiaVectorLayerPtr lyr; - gaiaLayerAttributeFieldPtr fld; - const char *mode = "FAST"; - if (n_mode == GAIA_VECTORS_LIST_OPTIMISTIC) - mode = "OPTIMISTIC"; - if (n_mode == GAIA_VECTORS_LIST_PESSIMISTIC) - mode = "PESSIMISTIC"; - - printf ("\n****** VectorLayersList (mode=%s) *********\n", mode); - if (list == NULL) - { - printf ("The VectorLayersList is empty !!!\n\n"); - return; - } - - lyr = list->First; - while (lyr) - { - /* printing the Layer Header */ - const char *lyr_type = "UnknownType"; - const char *geom_type = "UnknownType"; - const char *dims = "UnknownDims"; - switch (lyr->LayerType) - { - case GAIA_VECTOR_TABLE: - lyr_type = "BasedOnSqlTable"; - break; - case GAIA_VECTOR_VIEW: - lyr_type = "BasedOnSqlView"; - break; - case GAIA_VECTOR_VIRTUAL: - lyr_type = "BasedOnVirtualShape"; - break; - }; - switch (lyr->GeometryType) - { - case GAIA_VECTOR_GEOMETRY: - geom_type = "GEOMETRY"; - break; - case GAIA_VECTOR_POINT: - geom_type = "POINT"; - break; - case GAIA_VECTOR_LINESTRING: - geom_type = "LINESTRING"; - break; - case GAIA_VECTOR_POLYGON: - geom_type = "POLYGON"; - break; - case GAIA_VECTOR_MULTIPOINT: - geom_type = "MULTIPOINT"; - break; - case GAIA_VECTOR_MULTILINESTRING: - geom_type = "MULTILINESTRING"; - break; - case GAIA_VECTOR_MULTIPOLYGON: - geom_type = "MULTIPOLYGON"; - break; - case GAIA_VECTOR_GEOMETRYCOLLECTION: - geom_type = "GEOMETRYCOLLECTION"; - break; - }; - switch (lyr->Dimensions) - { - case GAIA_XY: - dims = "XY"; - break; - case GAIA_XY_Z: - dims = "XYZ"; - break; - case GAIA_XY_M: - dims = "XYM"; - break; - case GAIA_XY_Z_M: - dims = "XYXM"; - break; - }; - printf ("VectorLayer: Type=%s TableName=%s\n", lyr_type, - lyr->TableName); - printf ("\tGeometryName=%s SRID=%d GeometryType=%s Dims=%s\n", - lyr->GeometryName, lyr->Srid, geom_type, dims); - if (lyr->ExtentInfos) - { - printf ("\tRowCount=%d\n", lyr->ExtentInfos->Count); - printf ("\tExtentMin %f / %f\n\tExtentMax %f / %f\n", - lyr->ExtentInfos->MinX, - lyr->ExtentInfos->MinY, lyr->ExtentInfos->MaxX, - lyr->ExtentInfos->MaxY); - } - if (lyr->AuthInfos) - printf ("\tReadOnly=%s Hidden=%s\n", - (lyr->AuthInfos->IsReadOnly == 0) ? "FALSE" : "TRUE", - (lyr->AuthInfos->IsHidden == 0) ? "FALSE" : "TRUE"); - fld = lyr->First; - while (fld) - { - /* printing AttributeFields infos */ - printf ("\t\tField #%d) FieldName=%s\n", fld->Ordinal, - fld->AttributeFieldName); - printf ("\t\t\t"); - if (fld->NullValuesCount) - printf ("NullValues=%d ", fld->NullValuesCount); - if (fld->IntegerValuesCount) - printf ("IntegerValues=%d ", fld->IntegerValuesCount); - if (fld->DoubleValuesCount) - printf ("DoubleValues=%d ", fld->DoubleValuesCount); - if (fld->TextValuesCount) - printf ("TextValues=%d ", fld->TextValuesCount); - if (fld->BlobValuesCount) - printf ("BlobValues=%d ", fld->BlobValuesCount); - printf ("\n"); - if (fld->MaxSize) - printf ("\t\t\tMaxSize/Length=%d\n", fld->MaxSize->MaxSize); - if (fld->IntRange) -#if defined(_WIN32) || defined(__MINGW32__) -/* CAVEAT: M$ runtime doesn't supports %lld for 64 bits */ - printf ("\t\t\tIntRange %I64d / %I64d\n", -#else - printf ("\t\t\tIntRange %lld / %lld\n", -#endif - fld->IntRange->MinValue, fld->IntRange->MaxValue); - if (fld->DoubleRange) - printf ("\t\t\tDoubleRange %f / %f\n", - fld->DoubleRange->MinValue, - fld->DoubleRange->MaxValue); - fld = fld->Next; - } - lyr = lyr->Next; - } - printf ("\n"); -} - -static void -do_help () -{ -/* printing the argument list */ - fprintf (stderr, "\n\nusage: demo5 ARGLIST\n"); - fprintf (stderr, - "==============================================================\n"); - fprintf (stderr, "-d or --db-path pathname the SpatiaLite DB path\n"); - fprintf (stderr, - "-t or --table table-name the table to be checked\n"); - fprintf (stderr, - "-g or --geometry column_name geometry column [optional]\n\n"); - fprintf (stderr, "you can specify one of the following modes:\n"); - fprintf (stderr, "-f or --fast FAST mode [default]\n"); - fprintf (stderr, "-o or --optimistic OPTIMISTIC mode\n"); - fprintf (stderr, "-p or --pessimistic PESSIMISTIC mode\n"); -} - - -int -main (int argc, char *argv[]) -{ - int ret; - sqlite3 *handle; - int i; - int next_arg = ARG_NONE; - int mode = GAIA_VECTORS_LIST_FAST; - int error = 0; - const char *db_path = NULL; - const char *table = NULL; - const char *geometry = NULL; - gaiaVectorLayersListPtr list; - - for (i = 1; i < argc; i++) - { - /* parsing the invocation arguments */ - if (next_arg != ARG_NONE) - { - switch (next_arg) - { - case ARG_DB_PATH: - db_path = argv[i]; - break; - case ARG_TABLE: - table = argv[i]; - break; - case ARG_GEOMETRY: - geometry = argv[i]; - break; - }; - next_arg = ARG_NONE; - continue; - } - if (strcasecmp (argv[i], "--help") == 0 - || strcmp (argv[i], "-h") == 0) - { - do_help (); - return -1; - } - if (strcasecmp (argv[i], "-d") == 0 - || strcasecmp (argv[i], "--db-path") == 0) - { - next_arg = ARG_DB_PATH; - continue; - } - if (strcasecmp (argv[i], "-t") == 0 - || strcmp (argv[i], "--table") == 0) - { - next_arg = ARG_TABLE; - continue; - } - if (strcasecmp (argv[i], "-g") == 0 - || strcmp (argv[i], "--geometry") == 0) - { - next_arg = ARG_GEOMETRY; - continue; - } - if (strcasecmp (argv[i], "-p") == 0 - || strcmp (argv[i], "--pessimistic") == 0) - { - mode = GAIA_VECTORS_LIST_PESSIMISTIC; - next_arg = ARG_NONE; - continue; - } - if (strcasecmp (argv[i], "-f") == 0 - || strcmp (argv[i], "--fast") == 0) - { - mode = GAIA_VECTORS_LIST_FAST; - next_arg = ARG_NONE; - continue; - } - if (strcasecmp (argv[i], "-o") == 0 - || strcmp (argv[i], "--optimistic") == 0) - { - mode = GAIA_VECTORS_LIST_OPTIMISTIC; - next_arg = ARG_NONE; - continue; - } - fprintf (stderr, "unknown argument: %s\n", argv[i]); - error = 1; - } - if (error) - { - do_help (); - return -1; - } - -/* checking the arguments */ - if (!db_path) - { - fprintf (stderr, "did you forget setting the --db-path argument ?\n"); - error = 1; - } - - if (error) - { - do_help (); - return -1; - } - - -/* -VERY IMPORTANT: -you must initialize the SpatiaLite extension [and related] -BEFORE attempting to perform any other SQLite call -*/ - spatialite_init (0); - -/* showing the SQLite version */ - printf ("SQLite version: %s\n", sqlite3_libversion ()); -/* showing the SpatiaLite version */ - printf ("SpatiaLite version: %s\n", spatialite_version ()); - printf ("\n\n"); - -/* -trying to connect the test DB: -- this demo is intended to create an existing, already populated database -*/ - ret = sqlite3_open_v2 (db_path, &handle, - SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) - { - printf ("cannot open '%s': %s\n", argv[1], sqlite3_errmsg (handle)); - sqlite3_close (handle); - return -1; - } - -/* listing the requested layer(s) */ - list = gaiaGetVectorLayersList (handle, table, geometry, mode); - do_print_list (list, mode); - gaiaFreeVectorLayersList (list); - -/* disconnecting the test DB */ - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) - { - printf ("close() error: %s\n", sqlite3_errmsg (handle)); - return -1; - } - spatialite_cleanup (); - printf ("\n\nsample successfully terminated\n"); - return 0; -} diff --git a/src/spatialite/examples/examples.doxy b/src/spatialite/examples/examples.doxy deleted file mode 100644 index 8bd502c..0000000 --- a/src/spatialite/examples/examples.doxy +++ /dev/null @@ -1,611 +0,0 @@ -/** \example demo1.c - -This is a sample C source showing how to use SQLite / SpatiaLite -from C. - -This program shows the basic functionality that will be required for most -SpatiaLite programs: - - how to connect an SQLite+SpatiaLite database - - executing an SQL query - - fetching values from a result set - - transforming BLOB-values into GEOMETRY - - elementary processing GEOMETRY - -The typical output of this demo is shown below, when run against the sample -database. -\verbatim -$ ./demo1 test-2.3.sqlite -SQLite version: 3.7.4 -SpatiaLite version: 3.0.0-beta1 - - -========= table 'HighWays' ======================== -row #1 - PK_UID = 1 - Name = 'Unknown' - Geometry = LINESTRING SRID=32632 length=8697.57 -row #2 - PK_UID = 2 - Name = 'Unknown' - Geometry = LINESTRING SRID=32632 length=39.79 -row #3 - PK_UID = 3 - Name = 'Unknown' - Geometry = LINESTRING SRID=32632 length=14610.39 -row #4 - PK_UID = 4 - Name = 'Unknown' - Geometry = LINESTRING SRID=32632 length=878.01 -row #5 - PK_UID = 5 - Name = 'Unknown' - Geometry = LINESTRING SRID=32632 length=10.05 - - -========= table 'Regions' ======================== -row #1 - PK_UID = 1 - Name = 'VENETO' - Geometry = MULTIPOLYGON SRID=32632 area=646397.81 -row #2 - PK_UID = 2 - Name = 'VENETO' - Geometry = MULTIPOLYGON SRID=32632 area=1290337.69 -row #3 - PK_UID = 3 - Name = 'VENETO' - Geometry = MULTIPOLYGON SRID=32632 area=8784619.92 -row #4 - PK_UID = 4 - Name = 'VENETO' - Geometry = MULTIPOLYGON SRID=32632 area=530524.68 -row #5 - PK_UID = 5 - Name = 'LIGURIA' - Geometry = MULTIPOLYGON SRID=32632 area=5450277374.12 - - -========= table 'Towns' ======================== -row #1 - PK_UID = 1 - Name = 'Brozolo' - Peoples = 435 - LocalCounc = 1 - County = 0 - Region = 0 - Geometry = POINT SRID=32632 -row #2 - PK_UID = 2 - Name = 'Campiglione-Fenile' - Peoples = 1284 - LocalCounc = 1 - County = 0 - Region = 0 - Geometry = POINT SRID=32632 -row #3 - PK_UID = 3 - Name = 'Canischio' - Peoples = 274 - LocalCounc = 1 - County = 0 - Region = 0 - Geometry = POINT SRID=32632 -row #4 - PK_UID = 4 - Name = 'Cavagnolo' - Peoples = 2281 - LocalCounc = 1 - County = 0 - Region = 0 - Geometry = POINT SRID=32632 -row #5 - PK_UID = 5 - Name = 'Magliano Alfieri' - Peoples = 1674 - LocalCounc = 1 - County = 0 - Region = 0 - Geometry = POINT SRID=32632 - - - - -sample successfully terminated -\endverbatim - -*/ - -/** \example demo2.c - -This is a sample C source showing how to manipulate GEOMETRY within -Spatialite. It essentially follows on from the functionality shown in the -demo1.c example, and covers: - - creating geometries - - exploring geometries - - querying the basic properties of a geometry - - Note that this does not require a database command line argument. Here is a - typical run: -\verbatim -$ ./demo2 -step#1: POINT Dimension=0 IsValid=1 - POINT 0/1 x=1.5000 y=2.7500 - -step#2: LINESTRING Dimension=1 IsValid=1 - LINESTRING 0/1 has 5 vertices - vertex 0/5 x=1.0000 y=1.0000 - vertex 1/5 x=2.0000 y=1.0000 - vertex 2/5 x=2.0000 y=2.0000 - vertex 3/5 x=100.0000 y=2.0000 - vertex 4/5 x=100.0000 y=100.0000 - -step#3: POLYGON Dimension=2 IsValid=1 - POLYGON 0/1 has 2 holes - ExteriorRing has 5 vertices - vertex 0/5 x=0.0000 y=0.0000 - vertex 1/5 x=50.0000 y=0.0000 - vertex 2/5 x=50.0000 y=50.0000 - vertex 3/5 x=0.0000 y=50.0000 - vertex 4/5 x=0.0000 y=0.0000 - InteriorRing 0/2 has 5 vertices - vertex 0/5 x=40.0000 y=40.0000 - vertex 1/5 x=41.0000 y=40.0000 - vertex 2/5 x=41.0000 y=41.0000 - vertex 3/5 x=40.0000 y=41.0000 - vertex 4/5 x=40.0000 y=40.0000 - InteriorRing 1/2 has 5 vertices - vertex 0/5 x=30.0000 y=30.0000 - vertex 1/5 x=31.0000 y=30.0000 - vertex 2/5 x=31.0000 y=31.0000 - vertex 3/5 x=30.0000 y=31.0000 - vertex 4/5 x=30.0000 y=30.0000 - -step#4: MULTIPOINT Dimension=0 IsValid=1 - POINT 0/5 x=5.0000 y=5.0000 - POINT 1/5 x=15.0000 y=5.0000 - POINT 2/5 x=5.0000 y=15.0000 - POINT 3/5 x=25.0000 y=5.0000 - POINT 4/5 x=5.0000 y=25.0000 - -step#5: MULTILINESTRING Dimension=1 IsValid=1 - LINESTRING 0/2 has 2 vertices - vertex 0/2 x=30.0000 y=10.0000 - vertex 1/2 x=10.0000 y=30.0000 - LINESTRING 1/2 has 2 vertices - vertex 0/2 x=40.0000 y=50.0000 - vertex 1/2 x=50.0000 y=40.0000 - -step#6: MULTIPOLYGON Dimension=2 IsValid=1 - POLYGON 0/2 has 0 holes - ExteriorRing has 5 vertices - vertex 0/5 x=60.0000 y=60.0000 - vertex 1/5 x=70.0000 y=60.0000 - vertex 2/5 x=70.0000 y=70.0000 - vertex 3/5 x=60.0000 y=70.0000 - vertex 4/5 x=60.0000 y=60.0000 - POLYGON 1/2 has 0 holes - ExteriorRing has 5 vertices - vertex 0/5 x=80.0000 y=80.0000 - vertex 1/5 x=90.0000 y=80.0000 - vertex 2/5 x=90.0000 y=90.0000 - vertex 3/5 x=80.0000 y=90.0000 - vertex 4/5 x=80.0000 y=80.0000 - -step#7: GEOMETRYCOLLECTION Dimension=2 IsValid=1 - POINT 0/2 x=100.0000 y=100.0000 - POINT 1/2 x=100.0000 y=0.0000 - LINESTRING 0/2 has 2 vertices - vertex 0/2 x=130.0000 y=110.0000 - vertex 1/2 x=110.0000 y=130.0000 - LINESTRING 1/2 has 2 vertices - vertex 0/2 x=140.0000 y=150.0000 - vertex 1/2 x=150.0000 y=140.0000 - POLYGON 0/2 has 0 holes - ExteriorRing has 5 vertices - vertex 0/5 x=160.0000 y=160.0000 - vertex 1/5 x=170.0000 y=160.0000 - vertex 2/5 x=170.0000 y=170.0000 - vertex 3/5 x=160.0000 y=170.0000 - vertex 4/5 x=160.0000 y=160.0000 - POLYGON 1/2 has 0 holes - ExteriorRing has 5 vertices - vertex 0/5 x=180.0000 y=180.0000 - vertex 1/5 x=190.0000 y=180.0000 - vertex 2/5 x=190.0000 y=190.0000 - vertex 3/5 x=180.0000 y=190.0000 - vertex 4/5 x=180.0000 y=180.0000 - -step#8: checking WKT representations - -GEOMETRYCOLLECTION(POINT(1.5 2.75)) - -GEOMETRYCOLLECTION(LINESTRING(1 1, 2 1, 2 2, 100 2, 100 100)) - -GEOMETRYCOLLECTION(POLYGON((0 0, 50 0, 50 50, 0 50, 0 0), (40 40, 41 40, 41 41, 40 41, 40 40), (30 30, 31 30, 31 31, 30 31, 30 30))) - -GEOMETRYCOLLECTION(POINT(5 5), POINT(15 5), POINT(5 15), POINT(25 5), POINT(5 25)) - -GEOMETRYCOLLECTION(LINESTRING(30 10, 10 30), LINESTRING(40 50, 50 40)) - -GEOMETRYCOLLECTION(POLYGON((60 60, 70 60, 70 70, 60 70, 60 60)), POLYGON((80 80, 90 80, 90 90, 80 90, 80 80))) - -GEOMETRYCOLLECTION(POINT(100 100), POINT(100 0), LINESTRING(130 110, 110 130), LINESTRING(140 150, 150 140), POLYGON((160 160, 170 160, 170 170, 160 170, 160 160)), POLYGON((180 180, 190 180, 190 190, 180 190, 180 180))) -\endverbatim -*/ - -/** \example demo3.c - -This is a sample C source showing how to use the SQLite / SpatiaLite -Spatial Index [RTree]. - -It follows on from demo1.c. - -The main steps in this example are: - - creating a new database - - creating a sample geo-table - - inserting 1 million rows into this table - - performing some spatial queries without Spatial Indexing - - performing the same queries using the Spatial Index - -The typical output of this demo is shown below (where test.sqlite does not -exist before the run). - -\verbatim -$ ./demo3 test.sqlite -SQLite version: 3.7.4 -SpatiaLite version: 3.0.0-beta1 - - - -now we are going to insert 1 million POINTs; wait, please ... - -insert row: 25000 [elapsed time: 1.910] -insert row: 50000 [elapsed time: 4.050] -insert row: 75000 [elapsed time: 6.270] -insert row: 100000 [elapsed time: 8.460] -insert row: 125000 [elapsed time: 10.740] -insert row: 150000 [elapsed time: 12.910] -insert row: 175000 [elapsed time: 15.080] -insert row: 200000 [elapsed time: 17.350] -insert row: 225000 [elapsed time: 19.610] -insert row: 250000 [elapsed time: 21.890] -insert row: 275000 [elapsed time: 24.170] -insert row: 300000 [elapsed time: 26.380] -insert row: 325000 [elapsed time: 28.650] -insert row: 350000 [elapsed time: 30.900] -insert row: 375000 [elapsed time: 33.130] -insert row: 400000 [elapsed time: 35.340] -insert row: 425000 [elapsed time: 37.540] -insert row: 450000 [elapsed time: 39.760] -insert row: 475000 [elapsed time: 41.980] -insert row: 500000 [elapsed time: 44.220] -insert row: 525000 [elapsed time: 46.500] -insert row: 550000 [elapsed time: 48.740] -insert row: 575000 [elapsed time: 50.960] -insert row: 600000 [elapsed time: 53.190] -insert row: 625000 [elapsed time: 55.430] -insert row: 650000 [elapsed time: 57.670] -insert row: 675000 [elapsed time: 59.900] -insert row: 700000 [elapsed time: 62.130] -insert row: 725000 [elapsed time: 64.400] -insert row: 750000 [elapsed time: 66.660] -insert row: 775000 [elapsed time: 68.900] -insert row: 800000 [elapsed time: 71.140] -insert row: 825000 [elapsed time: 73.410] -insert row: 850000 [elapsed time: 75.670] -insert row: 875000 [elapsed time: 77.940] -insert row: 900000 [elapsed time: 80.230] -insert row: 925000 [elapsed time: 82.540] -insert row: 950000 [elapsed time: 84.840] -insert row: 975000 [elapsed time: 87.150] -insert row: 1000000 [elapsed time: 89.450] - -performing test#0 - not using Spatial Index -Count(*) = 25 [elapsed time: 1.2700] - -performing test#1 - not using Spatial Index -Count(*) = 25 [elapsed time: 1.2700] - -performing test#2 - not using Spatial Index -Count(*) = 25 [elapsed time: 1.2900] - -performing test#0 - using the R*Tree Spatial Index -Count(*) = 25 [elapsed time: 0.0000] - -performing test#1 - using the R*Tree Spatial Index -Count(*) = 25 [elapsed time: 0.0000] - -performing test#2 - using the R*Tree Spatial Index -Count(*) = 25 [elapsed time: 0.0000] - - -sample successfully terminated -\endverbatim - -Note the significant difference in elapsed time associated with use of an -appropriate index. - -*/ - -/** \example demo4.c - -This is a sample C source showing how to use the SQLite / SpatiaLite -Spatial Index [MbrCache]. - -It is very similar to demo3.c, but uses a different indexing approach - -The main steps in this example are: - - creating a new database - - creating a sample geo-table - - inserting 1 million rows into this table - - performing some spatial queries without Spatial Indexing - - performing the same queries using the Spatial Index - -The typical output of this demo is shown below (where test.sqlite does not -exist before the run). - -\verbatim -$ ./demo4 test.sqlite -SQLite version: 3.7.4 -SpatiaLite version: 3.0.0-beta1 - - - -now we are going to insert 1 million POINTs; wait, please ... - -insert row: 25000 [elapsed time: 0.370] -insert row: 50000 [elapsed time: 0.820] -insert row: 75000 [elapsed time: 1.280] -insert row: 100000 [elapsed time: 1.750] -insert row: 125000 [elapsed time: 2.210] -insert row: 150000 [elapsed time: 2.690] -insert row: 175000 [elapsed time: 3.180] -insert row: 200000 [elapsed time: 3.670] -insert row: 225000 [elapsed time: 4.210] -insert row: 250000 [elapsed time: 4.720] -insert row: 275000 [elapsed time: 5.240] -insert row: 300000 [elapsed time: 5.780] -insert row: 325000 [elapsed time: 6.330] -insert row: 350000 [elapsed time: 6.910] -insert row: 375000 [elapsed time: 7.510] -insert row: 400000 [elapsed time: 8.120] -insert row: 425000 [elapsed time: 8.750] -insert row: 450000 [elapsed time: 9.420] -insert row: 475000 [elapsed time: 10.120] -insert row: 500000 [elapsed time: 10.850] -insert row: 525000 [elapsed time: 11.610] -insert row: 550000 [elapsed time: 12.390] -insert row: 575000 [elapsed time: 13.200] -insert row: 600000 [elapsed time: 14.040] -insert row: 625000 [elapsed time: 14.900] -insert row: 650000 [elapsed time: 15.790] -insert row: 675000 [elapsed time: 16.700] -insert row: 700000 [elapsed time: 17.650] -insert row: 725000 [elapsed time: 18.620] -insert row: 750000 [elapsed time: 19.610] -insert row: 775000 [elapsed time: 20.650] -insert row: 800000 [elapsed time: 21.700] -insert row: 825000 [elapsed time: 22.760] -insert row: 850000 [elapsed time: 23.860] -insert row: 875000 [elapsed time: 25.060] -insert row: 900000 [elapsed time: 26.290] -insert row: 925000 [elapsed time: 27.480] -insert row: 950000 [elapsed time: 28.760] -insert row: 975000 [elapsed time: 30.020] -insert row: 1000000 [elapsed time: 31.280] - -performing test#0 - not using Spatial Index -Count(*) = 25 [elapsed time: 1.2500] - -performing test#1 - not using Spatial Index -Count(*) = 25 [elapsed time: 1.2400] - -performing test#2 - not using Spatial Index -Count(*) = 25 [elapsed time: 1.2400] - -performing test#0 - using the MBR cache Spatial Index -Count(*) = 25 [elapsed time: 0.0000] - -performing test#1 - using the MBR cache Spatial Index -Count(*) = 25 [elapsed time: 0.0000] - -performing test#2 - using the MBR cache Spatial Index -Count(*) = 25 [elapsed time: 0.0000] - - -sample successfully terminated -\endverbatim - -As for demo3.c, note the significant speed difference between the indexed -and non-indexed queries. -*/ - -/** \example demo5.c - -This is a sample C source showing how to use the SpatiaLite's API -gaiaGetVectorLayersList(), i.e. the one gathering statistic infos -for Vector Layers. -The typical output of this demo is shown below. - -By simply specifying a DB-path demo5 will print the complete list -of all Vector Layers found in that DB: - -\verbatim -$ ./demo5 /home/sandro/db-4.0.sqlite -SQLite version: 3.7.11 -SpatiaLite version: 4.0.0-RC2 - -****** VectorLayersList (mode=FAST) ********* -VectorLayer: Type=BasedOnSqlTable TableName=com2011 - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=8094 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220492.095518 - ReadOnly=FALSE Hidden=FALSE -VectorLayer: Type=BasedOnSqlTable TableName=prov2011 - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=110 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220491.200018 - ReadOnly=FALSE Hidden=FALSE -VectorLayer: Type=BasedOnSqlTable TableName=reg2011 - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=20 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220491.200018 - ReadOnly=FALSE Hidden=FALSE -VectorLayer: Type=BasedOnSqlView TableName=com_prov - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=8094 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220492.095518 - ReadOnly=FALSE Hidden=FALSE -VectorLayer: Type=BasedOnSqlView TableName=prov_reg - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=110 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220491.200018 - ReadOnly=TRUE Hidden=FALSE -VectorLayer: Type=BasedOnVirtualShape TableName=com2011a - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=8094 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220492.095518 -VectorLayer: Type=BasedOnVirtualShape TableName=prov2011a - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=110 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220491.200018 -VectorLayer: Type=BasedOnVirtualShape TableName=reg2011a - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=20 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220491.200018 - - -****** VectorLayersList (mode=PRECISE) ********* -VectorLayer: Type=BasedOnSqlTable TableName=com2011 - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=8094 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220492.095518 - ReadOnly=FALSE Hidden=FALSE -VectorLayer: Type=BasedOnSqlTable TableName=prov2011 - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=110 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220491.200018 - ReadOnly=FALSE Hidden=FALSE -VectorLayer: Type=BasedOnSqlTable TableName=reg2011 - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=20 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220491.200018 - ReadOnly=FALSE Hidden=FALSE -VectorLayer: Type=BasedOnSqlView TableName=com_prov - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=8094 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220492.095518 - ReadOnly=FALSE Hidden=FALSE -VectorLayer: Type=BasedOnSqlView TableName=prov_reg - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=110 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220491.200018 - ReadOnly=TRUE Hidden=FALSE -VectorLayer: Type=BasedOnVirtualShape TableName=com2011a - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=8094 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220492.095518 -VectorLayer: Type=BasedOnVirtualShape TableName=prov2011a - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=110 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220491.200018 -VectorLayer: Type=BasedOnVirtualShape TableName=reg2011a - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=20 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220491.200018 - -sample successfully terminated -\endverbatim - -By optionally specifying a Layer name demo5 will print a more detailed -list for that single Layer: - -\verbatim -$ ./demo5 /home/sandro/db-4.0.sqlite com2011 -SQLite version: 3.7.11 -SpatiaLite version: 4.0.0-RC2 - -****** VectorLayersList (mode=FAST) ********* -VectorLayer: Type=BasedOnSqlTable TableName=com2011 - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=8094 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220492.095518 - ReadOnly=FALSE Hidden=FALSE - Field #0) FieldName=PRO_COM - IntegerValues=8094 - IntRange 1001 / 110010 - Field #1) FieldName=COD_REG - IntegerValues=8094 - IntRange 1 / 20 - Field #2) FieldName=COD_PRO - IntegerValues=8094 - IntRange 1 / 110 - Field #3) FieldName=NOME_COM - TextValues=8094 - MaxSize/Length=35 - Field #4) FieldName=NOME_TED - TextValues=8094 - MaxSize/Length=36 - Field #5) FieldName=SHAPE_Leng - DoubleValues=8094 - DoubleRange 1566.303618 / 327044.574999 - Field #6) FieldName=SHAPE_Area - DoubleValues=8094 - DoubleRange 120613.967719 / 1287358944.600000 - Field #7) FieldName=Geometry - BlobValues=8094 - MaxSize/Length=222151 - - -****** VectorLayersList (mode=PRECISE) ********* -VectorLayer: Type=BasedOnSqlTable TableName=com2011 - GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY - RowCount=8094 - ExtentMin 313360.999831 / 3933878.175118 - ExtentMax 1312106.500031 / 5220492.095518 - ReadOnly=FALSE Hidden=FALSE - Field #0) FieldName=PRO_COM - IntegerValues=8094 - IntRange 1001 / 110010 - Field #1) FieldName=COD_REG - IntegerValues=8094 - IntRange 1 / 20 - Field #2) FieldName=COD_PRO - IntegerValues=8094 - IntRange 1 / 110 - Field #3) FieldName=NOME_COM - TextValues=8094 - MaxSize/Length=35 - Field #4) FieldName=NOME_TED - TextValues=8094 - MaxSize/Length=36 - Field #5) FieldName=SHAPE_Leng - DoubleValues=8094 - DoubleRange 1566.303618 / 327044.574999 - Field #6) FieldName=SHAPE_Area - DoubleValues=8094 - DoubleRange 120613.967719 / 1287358944.600000 - Field #7) FieldName=Geometry - BlobValues=8094 - MaxSize/Length=222151 - -sample successfully terminated -\endverbatim -*/ diff --git a/src/spatialite/install-sh b/src/spatialite/install-sh deleted file mode 100755 index 6781b98..0000000 --- a/src/spatialite/install-sh +++ /dev/null @@ -1,520 +0,0 @@ -#!/bin/sh -# install - install a program, script, or datafile - -scriptversion=2009-04-28.21; # UTC - -# This originates from X11R5 (mit/util/scripts/install.sh), which was -# later released in X11R6 (xc/config/util/install.sh) with the -# following copyright and license. -# -# Copyright (C) 1994 X Consortium -# -# 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 -# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN -# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- -# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -# -# Except as contained in this notice, the name of the X Consortium shall not -# be used in advertising or otherwise to promote the sale, use or other deal- -# ings in this Software without prior written authorization from the X Consor- -# tium. -# -# -# FSF changes to this file are in the public domain. -# -# Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it -# when there is no Makefile. -# -# This script is compatible with the BSD install script, but was written -# from scratch. - -nl=' -' -IFS=" "" $nl" - -# set DOITPROG to echo to test this script - -# Don't use :- since 4.3BSD and earlier shells don't like it. -doit=${DOITPROG-} -if test -z "$doit"; then - doit_exec=exec -else - doit_exec=$doit -fi - -# Put in absolute file names if you don't have them in your path; -# or use environment vars. - -chgrpprog=${CHGRPPROG-chgrp} -chmodprog=${CHMODPROG-chmod} -chownprog=${CHOWNPROG-chown} -cmpprog=${CMPPROG-cmp} -cpprog=${CPPROG-cp} -mkdirprog=${MKDIRPROG-mkdir} -mvprog=${MVPROG-mv} -rmprog=${RMPROG-rm} -stripprog=${STRIPPROG-strip} - -posix_glob='?' -initialize_posix_glob=' - test "$posix_glob" != "?" || { - if (set -f) 2>/dev/null; then - posix_glob= - else - posix_glob=: - fi - } -' - -posix_mkdir= - -# Desired mode of installed file. -mode=0755 - -chgrpcmd= -chmodcmd=$chmodprog -chowncmd= -mvcmd=$mvprog -rmcmd="$rmprog -f" -stripcmd= - -src= -dst= -dir_arg= -dst_arg= - -copy_on_change=false -no_target_directory= - -usage="\ -Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE - or: $0 [OPTION]... SRCFILES... DIRECTORY - or: $0 [OPTION]... -t DIRECTORY SRCFILES... - or: $0 [OPTION]... -d DIRECTORIES... - -In the 1st form, copy SRCFILE to DSTFILE. -In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. -In the 4th, create DIRECTORIES. - -Options: - --help display this help and exit. - --version display version info and exit. - - -c (ignored) - -C install only if different (preserve the last data modification time) - -d create directories instead of installing files. - -g GROUP $chgrpprog installed files to GROUP. - -m MODE $chmodprog installed files to MODE. - -o USER $chownprog installed files to USER. - -s $stripprog installed files. - -t DIRECTORY install into DIRECTORY. - -T report an error if DSTFILE is a directory. - -Environment variables override the default commands: - CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG - RMPROG STRIPPROG -" - -while test $# -ne 0; do - case $1 in - -c) ;; - - -C) copy_on_change=true;; - - -d) dir_arg=true;; - - -g) chgrpcmd="$chgrpprog $2" - shift;; - - --help) echo "$usage"; exit $?;; - - -m) mode=$2 - case $mode in - *' '* | *' '* | *' -'* | *'*'* | *'?'* | *'['*) - echo "$0: invalid mode: $mode" >&2 - exit 1;; - esac - shift;; - - -o) chowncmd="$chownprog $2" - shift;; - - -s) stripcmd=$stripprog;; - - -t) dst_arg=$2 - shift;; - - -T) no_target_directory=true;; - - --version) echo "$0 $scriptversion"; exit $?;; - - --) shift - break;; - - -*) echo "$0: invalid option: $1" >&2 - exit 1;; - - *) break;; - esac - shift -done - -if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then - # When -d is used, all remaining arguments are directories to create. - # When -t is used, the destination is already specified. - # Otherwise, the last argument is the destination. Remove it from $@. - for arg - do - if test -n "$dst_arg"; then - # $@ is not empty: it contains at least $arg. - set fnord "$@" "$dst_arg" - shift # fnord - fi - shift # arg - dst_arg=$arg - done -fi - -if test $# -eq 0; then - if test -z "$dir_arg"; then - echo "$0: no input file specified." >&2 - exit 1 - fi - # It's OK to call `install-sh -d' without argument. - # This can happen when creating conditional directories. - exit 0 -fi - -if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 - - # Set umask so as not to create temps with too-generous modes. - # However, 'strip' requires both read and write access to temps. - case $mode in - # Optimize common cases. - *644) cp_umask=133;; - *755) cp_umask=22;; - - *[0-7]) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw='% 200' - fi - cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; - *) - if test -z "$stripcmd"; then - u_plus_rw= - else - u_plus_rw=,u+rw - fi - cp_umask=$mode$u_plus_rw;; - esac -fi - -for src -do - # Protect names starting with `-'. - case $src in - -*) src=./$src;; - esac - - if test -n "$dir_arg"; then - dst=$src - dstdir=$dst - test -d "$dstdir" - dstdir_status=$? - else - - # Waiting for this to be detected by the "$cpprog $src $dsttmp" command - # might cause directories to be created, which would be especially bad - # if $src (and thus $dsttmp) contains '*'. - if test ! -f "$src" && test ! -d "$src"; then - echo "$0: $src does not exist." >&2 - exit 1 - fi - - if test -z "$dst_arg"; then - echo "$0: no destination specified." >&2 - exit 1 - fi - - dst=$dst_arg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst;; - esac - - # If destination is a directory, append the input filename; won't work - # if double slashes aren't ignored. - if test -d "$dst"; then - if test -n "$no_target_directory"; then - echo "$0: $dst_arg: Is a directory" >&2 - exit 1 - fi - dstdir=$dst - dst=$dstdir/`basename "$src"` - dstdir_status=0 - else - # Prefer dirname, but fall back on a substitute if dirname fails. - dstdir=` - (dirname "$dst") 2>/dev/null || - expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$dst" : 'X\(//\)[^/]' \| \ - X"$dst" : 'X\(//\)$' \| \ - X"$dst" : 'X\(/\)' \| . 2>/dev/null || - echo X"$dst" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ - s//\1/ - q - } - /^X\(\/\/\)[^/].*/{ - s//\1/ - q - } - /^X\(\/\/\)$/{ - s//\1/ - q - } - /^X\(\/\).*/{ - s//\1/ - q - } - s/.*/./; q' - ` - - test -d "$dstdir" - dstdir_status=$? - fi - fi - - obsolete_mkdir_used=false - - if test $dstdir_status != 0; then - case $posix_mkdir in - '') - # Create intermediate dirs using mode 755 as modified by the umask. - # This is like FreeBSD 'install' as of 1997-10-28. - umask=`umask` - case $stripcmd.$umask in - # Optimize common cases. - *[2367][2367]) mkdir_umask=$umask;; - .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; - - *[0-7]) - mkdir_umask=`expr $umask + 22 \ - - $umask % 100 % 40 + $umask % 20 \ - - $umask % 10 % 4 + $umask % 2 - `;; - *) mkdir_umask=$umask,go-w;; - esac - - # With -d, create the new directory with the user-specified mode. - # Otherwise, rely on $mkdir_umask. - if test -n "$dir_arg"; then - mkdir_mode=-m$mode - else - mkdir_mode= - fi - - posix_mkdir=false - case $umask in - *[123567][0-7][0-7]) - # POSIX mkdir -p sets u+wx bits regardless of umask, which - # is incompatible with FreeBSD 'install' when (umask & 300) != 0. - ;; - *) - tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ - trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 - - if (umask $mkdir_umask && - exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 - then - if test -z "$dir_arg" || { - # Check for POSIX incompatibilities with -m. - # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. - # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. - ls_ld_tmpdir=`ls -ld "$tmpdir"` - case $ls_ld_tmpdir in - d????-?r-*) different_mode=700;; - d????-?--*) different_mode=755;; - *) false;; - esac && - $mkdirprog -m$different_mode -p -- "$tmpdir" && { - ls_ld_tmpdir_1=`ls -ld "$tmpdir"` - test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" - } - } - then posix_mkdir=: - fi - rmdir "$tmpdir/d" "$tmpdir" - else - # Remove any dirs left behind by ancient mkdir implementations. - rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null - fi - trap '' 0;; - esac;; - esac - - if - $posix_mkdir && ( - umask $mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" - ) - then : - else - - # The umask is ridiculous, or mkdir does not conform to POSIX, - # or it failed possibly due to a race condition. Create the - # directory the slow way, step by step, checking for races as we go. - - case $dstdir in - /*) prefix='/';; - -*) prefix='./';; - *) prefix='';; - esac - - eval "$initialize_posix_glob" - - oIFS=$IFS - IFS=/ - $posix_glob set -f - set fnord $dstdir - shift - $posix_glob set +f - IFS=$oIFS - - prefixes= - - for d - do - test -z "$d" && continue - - prefix=$prefix$d - if test -d "$prefix"; then - prefixes= - else - if $posix_mkdir; then - (umask=$mkdir_umask && - $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break - # Don't fail if two instances are running concurrently. - test -d "$prefix" || exit 1 - else - case $prefix in - *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; - *) qprefix=$prefix;; - esac - prefixes="$prefixes '$qprefix'" - fi - fi - prefix=$prefix/ - done - - if test -n "$prefixes"; then - # Don't fail if two instances are running concurrently. - (umask $mkdir_umask && - eval "\$doit_exec \$mkdirprog $prefixes") || - test -d "$dstdir" || exit 1 - obsolete_mkdir_used=true - fi - fi - fi - - if test -n "$dir_arg"; then - { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && - { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || - test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 - else - - # Make a couple of temp file names in the proper directory. - dsttmp=$dstdir/_inst.$$_ - rmtmp=$dstdir/_rm.$$_ - - # Trap to clean up those temp files at exit. - trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 - - # Copy the file name to the temp name. - (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && - - # and set any options; do chmod last to preserve setuid bits. - # - # If any of these fail, we abort the whole thing. If we want to - # ignore errors from any of these, just make sure not to ignore - # errors from the above "$doit $cpprog $src $dsttmp" command. - # - { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && - { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && - { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && - { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && - - # If -C, don't bother to copy if it wouldn't change the file. - if $copy_on_change && - old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && - new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && - - eval "$initialize_posix_glob" && - $posix_glob set -f && - set X $old && old=:$2:$4:$5:$6 && - set X $new && new=:$2:$4:$5:$6 && - $posix_glob set +f && - - test "$old" = "$new" && - $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 - then - rm -f "$dsttmp" - else - # Rename the file to the real destination. - $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || - - # The rename failed, perhaps because mv can't rename something else - # to itself, or perhaps because mv is so ancient that it does not - # support -f. - { - # Now remove or move aside any old file at destination location. - # We try this two ways since rm can't unlink itself on some - # systems and the destination file might be busy for other - # reasons. In this case, the final cleanup might fail but the new - # file should still install successfully. - { - test ! -f "$dst" || - $doit $rmcmd -f "$dst" 2>/dev/null || - { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && - { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } - } || - { echo "$0: cannot unlink or rename $dst" >&2 - (exit 1); exit 1 - } - } && - - # Now rename the file to the real destination. - $doit $mvcmd "$dsttmp" "$dst" - } - fi || exit 1 - - trap '' 0 - fi -done - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/src/spatialite/ltmain.sh b/src/spatialite/ltmain.sh deleted file mode 100755 index 78cf017..0000000 --- a/src/spatialite/ltmain.sh +++ /dev/null @@ -1,9636 +0,0 @@ - -# libtool (GNU libtool) 2.4 -# Written by Gordon Matzigkeit , 1996 - -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, -# 2007, 2008, 2009, 2010 Free Software Foundation, Inc. -# This is free software; see the source for copying conditions. There is NO -# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. - -# GNU Libtool is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, -# or obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - -# Usage: $progname [OPTION]... [MODE-ARG]... -# -# Provide generalized library-building support services. -# -# --config show all configuration variables -# --debug enable verbose shell tracing -# -n, --dry-run display commands without modifying any files -# --features display basic configuration information and exit -# --mode=MODE use operation mode MODE -# --preserve-dup-deps don't remove duplicate dependency libraries -# --quiet, --silent don't print informational messages -# --no-quiet, --no-silent -# print informational messages (default) -# --tag=TAG use configuration variables from tag TAG -# -v, --verbose print more informational messages than default -# --no-verbose don't print the extra informational messages -# --version print version information -# -h, --help, --help-all print short, long, or detailed help message -# -# MODE must be one of the following: -# -# clean remove files from the build directory -# compile compile a source file into a libtool object -# execute automatically set library path, then run a program -# finish complete the installation of libtool libraries -# install install libraries or executables -# link create a library or an executable -# uninstall remove libraries from an installed directory -# -# MODE-ARGS vary depending on the MODE. When passed as first option, -# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. -# Try `$progname --help --mode=MODE' for a more detailed description of MODE. -# -# When reporting a bug, please describe a test case to reproduce it and -# include the following information: -# -# host-triplet: $host -# shell: $SHELL -# compiler: $LTCC -# compiler flags: $LTCFLAGS -# linker: $LD (gnu? $with_gnu_ld) -# $progname: (GNU libtool) 2.4 -# automake: $automake_version -# autoconf: $autoconf_version -# -# Report bugs to . -# GNU libtool home page: . -# General help using GNU software: . - -PROGRAM=libtool -PACKAGE=libtool -VERSION=2.4 -TIMESTAMP="" -package_revision=1.3293 - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which - # is contrary to our usage. Disable this feature. - alias -g '${1+"$@"}'='"$@"' - setopt NO_GLOB_SUBST -else - case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -$1 -_LTECHO_EOF' -} - -# NLS nuisances: We save the old values to restore during execute mode. -lt_user_locale= -lt_safe_locale= -for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES -do - eval "if test \"\${$lt_var+set}\" = set; then - save_$lt_var=\$$lt_var - $lt_var=C - export $lt_var - lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" - lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" - fi" -done -LC_ALL=C -LANGUAGE=C -export LANGUAGE LC_ALL - -$lt_unset CDPATH - - -# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh -# is ksh but when the shell is invoked as "sh" and the current value of -# the _XPG environment variable is not equal to 1 (one), the special -# positional parameter $0, within a function call, is the name of the -# function. -progpath="$0" - - - -: ${CP="cp -f"} -test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} -: ${EGREP="/bin/grep -E"} -: ${FGREP="/bin/grep -F"} -: ${GREP="/bin/grep"} -: ${LN_S="ln -s"} -: ${MAKE="make"} -: ${MKDIR="mkdir"} -: ${MV="mv -f"} -: ${RM="rm -f"} -: ${SED="/bin/sed"} -: ${SHELL="${CONFIG_SHELL-/bin/sh}"} -: ${Xsed="$SED -e 1s/^X//"} - -# Global variables: -EXIT_SUCCESS=0 -EXIT_FAILURE=1 -EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. -EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. - -exit_status=$EXIT_SUCCESS - -# Make sure IFS has a sensible default -lt_nl=' -' -IFS=" $lt_nl" - -dirname="s,/[^/]*$,," -basename="s,^.*/,," - -# func_dirname file append nondir_replacement -# Compute the dirname of FILE. If nonempty, add APPEND to the result, -# otherwise set result to NONDIR_REPLACEMENT. -func_dirname () -{ - func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi -} # func_dirname may be replaced by extended shell implementation - - -# func_basename file -func_basename () -{ - func_basename_result=`$ECHO "${1}" | $SED "$basename"` -} # func_basename may be replaced by extended shell implementation - - -# func_dirname_and_basename file append nondir_replacement -# perform func_basename and func_dirname in a single function -# call: -# dirname: Compute the dirname of FILE. If nonempty, -# add APPEND to the result, otherwise set result -# to NONDIR_REPLACEMENT. -# value returned in "$func_dirname_result" -# basename: Compute filename of FILE. -# value retuned in "$func_basename_result" -# Implementation must be kept synchronized with func_dirname -# and func_basename. For efficiency, we do not delegate to -# those functions but instead duplicate the functionality here. -func_dirname_and_basename () -{ - # Extract subdirectory from the argument. - func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` - if test "X$func_dirname_result" = "X${1}"; then - func_dirname_result="${3}" - else - func_dirname_result="$func_dirname_result${2}" - fi - func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` -} # func_dirname_and_basename may be replaced by extended shell implementation - - -# func_stripname prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# func_strip_suffix prefix name -func_stripname () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname may be replaced by extended shell implementation - - -# These SED scripts presuppose an absolute path with a trailing slash. -pathcar='s,^/\([^/]*\).*$,\1,' -pathcdr='s,^/[^/]*,,' -removedotparts=':dotsl - s@/\./@/@g - t dotsl - s,/\.$,/,' -collapseslashes='s@/\{1,\}@/@g' -finalslash='s,/*$,/,' - -# func_normal_abspath PATH -# Remove doubled-up and trailing slashes, "." path components, -# and cancel out any ".." path components in PATH after making -# it an absolute path. -# value returned in "$func_normal_abspath_result" -func_normal_abspath () -{ - # Start from root dir and reassemble the path. - func_normal_abspath_result= - func_normal_abspath_tpath=$1 - func_normal_abspath_altnamespace= - case $func_normal_abspath_tpath in - "") - # Empty path, that just means $cwd. - func_stripname '' '/' "`pwd`" - func_normal_abspath_result=$func_stripname_result - return - ;; - # The next three entries are used to spot a run of precisely - # two leading slashes without using negated character classes; - # we take advantage of case's first-match behaviour. - ///*) - # Unusual form of absolute path, do nothing. - ;; - //*) - # Not necessarily an ordinary path; POSIX reserves leading '//' - # and for example Cygwin uses it to access remote file shares - # over CIFS/SMB, so we conserve a leading double slash if found. - func_normal_abspath_altnamespace=/ - ;; - /*) - # Absolute path, do nothing. - ;; - *) - # Relative path, prepend $cwd. - func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath - ;; - esac - # Cancel out all the simple stuff to save iterations. We also want - # the path to end with a slash for ease of parsing, so make sure - # there is one (and only one) here. - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` - while :; do - # Processed it all yet? - if test "$func_normal_abspath_tpath" = / ; then - # If we ascended to the root using ".." the result may be empty now. - if test -z "$func_normal_abspath_result" ; then - func_normal_abspath_result=/ - fi - break - fi - func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcar"` - func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ - -e "$pathcdr"` - # Figure out what to do with it - case $func_normal_abspath_tcomponent in - "") - # Trailing empty path component, ignore it. - ;; - ..) - # Parent dir; strip last assembled component from result. - func_dirname "$func_normal_abspath_result" - func_normal_abspath_result=$func_dirname_result - ;; - *) - # Actual path component, append it. - func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent - ;; - esac - done - # Restore leading double-slash if one was found on entry. - func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result -} - -# func_relative_path SRCDIR DSTDIR -# generates a relative path from SRCDIR to DSTDIR, with a trailing -# slash if non-empty, suitable for immediately appending a filename -# without needing to append a separator. -# value returned in "$func_relative_path_result" -func_relative_path () -{ - func_relative_path_result= - func_normal_abspath "$1" - func_relative_path_tlibdir=$func_normal_abspath_result - func_normal_abspath "$2" - func_relative_path_tbindir=$func_normal_abspath_result - - # Ascend the tree starting from libdir - while :; do - # check if we have found a prefix of bindir - case $func_relative_path_tbindir in - $func_relative_path_tlibdir) - # found an exact match - func_relative_path_tcancelled= - break - ;; - $func_relative_path_tlibdir*) - # found a matching prefix - func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" - func_relative_path_tcancelled=$func_stripname_result - if test -z "$func_relative_path_result"; then - func_relative_path_result=. - fi - break - ;; - *) - func_dirname $func_relative_path_tlibdir - func_relative_path_tlibdir=${func_dirname_result} - if test "x$func_relative_path_tlibdir" = x ; then - # Have to descend all the way to the root! - func_relative_path_result=../$func_relative_path_result - func_relative_path_tcancelled=$func_relative_path_tbindir - break - fi - func_relative_path_result=../$func_relative_path_result - ;; - esac - done - - # Now calculate path; take care to avoid doubling-up slashes. - func_stripname '' '/' "$func_relative_path_result" - func_relative_path_result=$func_stripname_result - func_stripname '/' '/' "$func_relative_path_tcancelled" - if test "x$func_stripname_result" != x ; then - func_relative_path_result=${func_relative_path_result}/${func_stripname_result} - fi - - # Normalisation. If bindir is libdir, return empty string, - # else relative path ending with a slash; either way, target - # file name can be directly appended. - if test ! -z "$func_relative_path_result"; then - func_stripname './' '' "$func_relative_path_result/" - func_relative_path_result=$func_stripname_result - fi -} - -# The name of this program: -func_dirname_and_basename "$progpath" -progname=$func_basename_result - -# Make sure we have an absolute path for reexecution: -case $progpath in - [\\/]*|[A-Za-z]:\\*) ;; - *[\\/]*) - progdir=$func_dirname_result - progdir=`cd "$progdir" && pwd` - progpath="$progdir/$progname" - ;; - *) - save_IFS="$IFS" - IFS=: - for progdir in $PATH; do - IFS="$save_IFS" - test -x "$progdir/$progname" && break - done - IFS="$save_IFS" - test -n "$progdir" || progdir=`pwd` - progpath="$progdir/$progname" - ;; -esac - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -Xsed="${SED}"' -e 1s/^X//' -sed_quote_subst='s/\([`"$\\]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\(["`\\]\)/\\\1/g' - -# Sed substitution that turns a string into a regex matching for the -# string literally. -sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' - -# Sed substitution that converts a w32 file name or path -# which contains forward slashes, into one that contains -# (escaped) backslashes. A very naive implementation. -lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' - -# Re-`\' parameter expansions in output of double_quote_subst that were -# `\'-ed in input to the same. If an odd number of `\' preceded a '$' -# in input to double_quote_subst, that '$' was protected from expansion. -# Since each input `\' is now two `\'s, look for any number of runs of -# four `\'s followed by two `\'s and then a '$'. `\' that '$'. -bs='\\' -bs2='\\\\' -bs4='\\\\\\\\' -dollar='\$' -sed_double_backslash="\ - s/$bs4/&\\ -/g - s/^$bs2$dollar/$bs&/ - s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g - s/\n//g" - -# Standard options: -opt_dry_run=false -opt_help=false -opt_quiet=false -opt_verbose=false -opt_warning=: - -# func_echo arg... -# Echo program name prefixed message, along with the current mode -# name if it has been set yet. -func_echo () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }$*" -} - -# func_verbose arg... -# Echo program name prefixed message in verbose mode only. -func_verbose () -{ - $opt_verbose && func_echo ${1+"$@"} - - # A bug in bash halts the script if the last line of a function - # fails when set -e is in force, so we need another command to - # work around that: - : -} - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -# func_error arg... -# Echo program name prefixed message to standard error. -func_error () -{ - $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 -} - -# func_warning arg... -# Echo program name prefixed warning message to standard error. -func_warning () -{ - $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 - - # bash bug again: - : -} - -# func_fatal_error arg... -# Echo program name prefixed message to standard error, and exit. -func_fatal_error () -{ - func_error ${1+"$@"} - exit $EXIT_FAILURE -} - -# func_fatal_help arg... -# Echo program name prefixed message to standard error, followed by -# a help hint, and exit. -func_fatal_help () -{ - func_error ${1+"$@"} - func_fatal_error "$help" -} -help="Try \`$progname --help' for more information." ## default - - -# func_grep expression filename -# Check whether EXPRESSION matches any line of FILENAME, without output. -func_grep () -{ - $GREP "$1" "$2" >/dev/null 2>&1 -} - - -# func_mkdir_p directory-path -# Make sure the entire path to DIRECTORY-PATH is available. -func_mkdir_p () -{ - my_directory_path="$1" - my_dir_list= - - if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then - - # Protect directory names starting with `-' - case $my_directory_path in - -*) my_directory_path="./$my_directory_path" ;; - esac - - # While some portion of DIR does not yet exist... - while test ! -d "$my_directory_path"; do - # ...make a list in topmost first order. Use a colon delimited - # list incase some portion of path contains whitespace. - my_dir_list="$my_directory_path:$my_dir_list" - - # If the last portion added has no slash in it, the list is done - case $my_directory_path in */*) ;; *) break ;; esac - - # ...otherwise throw away the child directory and loop - my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` - done - my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` - - save_mkdir_p_IFS="$IFS"; IFS=':' - for my_dir in $my_dir_list; do - IFS="$save_mkdir_p_IFS" - # mkdir can fail with a `File exist' error if two processes - # try to create one of the directories concurrently. Don't - # stop in that case! - $MKDIR "$my_dir" 2>/dev/null || : - done - IFS="$save_mkdir_p_IFS" - - # Bail out if we (or some other process) failed to create a directory. - test -d "$my_directory_path" || \ - func_fatal_error "Failed to create \`$1'" - fi -} - - -# func_mktempdir [string] -# Make a temporary directory that won't clash with other running -# libtool processes, and avoids race conditions if possible. If -# given, STRING is the basename for that directory. -func_mktempdir () -{ - my_template="${TMPDIR-/tmp}/${1-$progname}" - - if test "$opt_dry_run" = ":"; then - # Return a directory name, but don't create it in dry-run mode - my_tmpdir="${my_template}-$$" - else - - # If mktemp works, use that first and foremost - my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` - - if test ! -d "$my_tmpdir"; then - # Failing that, at least try and use $RANDOM to avoid a race - my_tmpdir="${my_template}-${RANDOM-0}$$" - - save_mktempdir_umask=`umask` - umask 0077 - $MKDIR "$my_tmpdir" - umask $save_mktempdir_umask - fi - - # If we're not in dry-run mode, bomb out on failure - test -d "$my_tmpdir" || \ - func_fatal_error "cannot create temporary directory \`$my_tmpdir'" - fi - - $ECHO "$my_tmpdir" -} - - -# func_quote_for_eval arg -# Aesthetically quote ARG to be evaled later. -# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT -# is double-quoted, suitable for a subsequent eval, whereas -# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters -# which are still active within double quotes backslashified. -func_quote_for_eval () -{ - case $1 in - *[\\\`\"\$]*) - func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; - *) - func_quote_for_eval_unquoted_result="$1" ;; - esac - - case $func_quote_for_eval_unquoted_result in - # Double-quote args containing shell metacharacters to delay - # word splitting, command substitution and and variable - # expansion for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" - ;; - *) - func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" - esac -} - - -# func_quote_for_expand arg -# Aesthetically quote ARG to be evaled later; same as above, -# but do not quote variable references. -func_quote_for_expand () -{ - case $1 in - *[\\\`\"]*) - my_arg=`$ECHO "$1" | $SED \ - -e "$double_quote_subst" -e "$sed_double_backslash"` ;; - *) - my_arg="$1" ;; - esac - - case $my_arg in - # Double-quote args containing shell metacharacters to delay - # word splitting and command substitution for a subsequent eval. - # Many Bourne shells cannot handle close brackets correctly - # in scan sets, so we specify it separately. - *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") - my_arg="\"$my_arg\"" - ;; - esac - - func_quote_for_expand_result="$my_arg" -} - - -# func_show_eval cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. -func_show_eval () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$my_cmd" - my_status=$? - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - - -# func_show_eval_locale cmd [fail_exp] -# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is -# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP -# is given, then evaluate it. Use the saved locale for evaluation. -func_show_eval_locale () -{ - my_cmd="$1" - my_fail_exp="${2-:}" - - ${opt_silent-false} || { - func_quote_for_expand "$my_cmd" - eval "func_echo $func_quote_for_expand_result" - } - - if ${opt_dry_run-false}; then :; else - eval "$lt_user_locale - $my_cmd" - my_status=$? - eval "$lt_safe_locale" - if test "$my_status" -eq 0; then :; else - eval "(exit $my_status); $my_fail_exp" - fi - fi -} - -# func_tr_sh -# Turn $1 into a string suitable for a shell variable name. -# Result is stored in $func_tr_sh_result. All characters -# not in the set a-zA-Z0-9_ are replaced with '_'. Further, -# if $1 begins with a digit, a '_' is prepended as well. -func_tr_sh () -{ - case $1 in - [0-9]* | *[!a-zA-Z0-9_]*) - func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` - ;; - * ) - func_tr_sh_result=$1 - ;; - esac -} - - -# func_version -# Echo version message to standard output and exit. -func_version () -{ - $opt_debug - - $SED -n '/(C)/!b go - :more - /\./!{ - N - s/\n# / / - b more - } - :go - /^# '$PROGRAM' (GNU /,/# warranty; / { - s/^# // - s/^# *$// - s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ - p - }' < "$progpath" - exit $? -} - -# func_usage -# Echo short help message to standard output and exit. -func_usage () -{ - $opt_debug - - $SED -n '/^# Usage:/,/^# *.*--help/ { - s/^# // - s/^# *$// - s/\$progname/'$progname'/ - p - }' < "$progpath" - echo - $ECHO "run \`$progname --help | more' for full usage" - exit $? -} - -# func_help [NOEXIT] -# Echo long help message to standard output and exit, -# unless 'noexit' is passed as argument. -func_help () -{ - $opt_debug - - $SED -n '/^# Usage:/,/# Report bugs to/ { - :print - s/^# // - s/^# *$// - s*\$progname*'$progname'* - s*\$host*'"$host"'* - s*\$SHELL*'"$SHELL"'* - s*\$LTCC*'"$LTCC"'* - s*\$LTCFLAGS*'"$LTCFLAGS"'* - s*\$LD*'"$LD"'* - s/\$with_gnu_ld/'"$with_gnu_ld"'/ - s/\$automake_version/'"`(automake --version) 2>/dev/null |$SED 1q`"'/ - s/\$autoconf_version/'"`(autoconf --version) 2>/dev/null |$SED 1q`"'/ - p - d - } - /^# .* home page:/b print - /^# General help using/b print - ' < "$progpath" - ret=$? - if test -z "$1"; then - exit $ret - fi -} - -# func_missing_arg argname -# Echo program name prefixed message to standard error and set global -# exit_cmd. -func_missing_arg () -{ - $opt_debug - - func_error "missing argument for $1." - exit_cmd=exit -} - - -# func_split_short_opt shortopt -# Set func_split_short_opt_name and func_split_short_opt_arg shell -# variables after splitting SHORTOPT after the 2nd character. -func_split_short_opt () -{ - my_sed_short_opt='1s/^\(..\).*$/\1/;q' - my_sed_short_rest='1s/^..\(.*\)$/\1/;q' - - func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` - func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` -} # func_split_short_opt may be replaced by extended shell implementation - - -# func_split_long_opt longopt -# Set func_split_long_opt_name and func_split_long_opt_arg shell -# variables after splitting LONGOPT at the `=' sign. -func_split_long_opt () -{ - my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' - my_sed_long_arg='1s/^--[^=]*=//' - - func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` - func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` -} # func_split_long_opt may be replaced by extended shell implementation - -exit_cmd=: - - - - - -magic="%%%MAGIC variable%%%" -magic_exe="%%%MAGIC EXE variable%%%" - -# Global variables. -nonopt= -preserve_args= -lo2o="s/\\.lo\$/.${objext}/" -o2lo="s/\\.${objext}\$/.lo/" -extracted_archives= -extracted_serial=0 - -# If this variable is set in any of the actions, the command in it -# will be execed at the end. This prevents here-documents from being -# left over by shells. -exec_cmd= - -# func_append var value -# Append VALUE to the end of shell variable VAR. -func_append () -{ - eval "${1}=\$${1}\${2}" -} # func_append may be replaced by extended shell implementation - -# func_append_quoted var value -# Quote VALUE and append to the end of shell variable VAR, separated -# by a space. -func_append_quoted () -{ - func_quote_for_eval "${2}" - eval "${1}=\$${1}\\ \$func_quote_for_eval_result" -} # func_append_quoted may be replaced by extended shell implementation - - -# func_arith arithmetic-term... -func_arith () -{ - func_arith_result=`expr "${@}"` -} # func_arith may be replaced by extended shell implementation - - -# func_len string -# STRING may not start with a hyphen. -func_len () -{ - func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` -} # func_len may be replaced by extended shell implementation - - -# func_lo2o object -func_lo2o () -{ - func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` -} # func_lo2o may be replaced by extended shell implementation - - -# func_xform libobj-or-source -func_xform () -{ - func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` -} # func_xform may be replaced by extended shell implementation - - -# func_fatal_configuration arg... -# Echo program name prefixed message to standard error, followed by -# a configuration failure hint, and exit. -func_fatal_configuration () -{ - func_error ${1+"$@"} - func_error "See the $PACKAGE documentation for more information." - func_fatal_error "Fatal configuration error." -} - - -# func_config -# Display the configuration for all the tags in this script. -func_config () -{ - re_begincf='^# ### BEGIN LIBTOOL' - re_endcf='^# ### END LIBTOOL' - - # Default configuration. - $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" - - # Now print the configurations for the tags. - for tagname in $taglist; do - $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" - done - - exit $? -} - -# func_features -# Display the features supported by this script. -func_features () -{ - echo "host: $host" - if test "$build_libtool_libs" = yes; then - echo "enable shared libraries" - else - echo "disable shared libraries" - fi - if test "$build_old_libs" = yes; then - echo "enable static libraries" - else - echo "disable static libraries" - fi - - exit $? -} - -# func_enable_tag tagname -# Verify that TAGNAME is valid, and either flag an error and exit, or -# enable the TAGNAME tag. We also add TAGNAME to the global $taglist -# variable here. -func_enable_tag () -{ - # Global variable: - tagname="$1" - - re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" - re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" - sed_extractcf="/$re_begincf/,/$re_endcf/p" - - # Validate tagname. - case $tagname in - *[!-_A-Za-z0-9,/]*) - func_fatal_error "invalid tag name: $tagname" - ;; - esac - - # Don't test for the "default" C tag, as we know it's - # there but not specially marked. - case $tagname in - CC) ;; - *) - if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then - taglist="$taglist $tagname" - - # Evaluate the configuration. Be careful to quote the path - # and the sed script, to avoid splitting on whitespace, but - # also don't use non-portable quotes within backquotes within - # quotes we have to do it in 2 steps: - extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` - eval "$extractedcf" - else - func_error "ignoring unknown tag $tagname" - fi - ;; - esac -} - -# func_check_version_match -# Ensure that we are using m4 macros, and libtool script from the same -# release of libtool. -func_check_version_match () -{ - if test "$package_revision" != "$macro_revision"; then - if test "$VERSION" != "$macro_version"; then - if test -z "$macro_version"; then - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from an older release. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, but the -$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. -$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION -$progname: and run autoconf again. -_LT_EOF - fi - else - cat >&2 <<_LT_EOF -$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, -$progname: but the definition of this LT_INIT comes from revision $macro_revision. -$progname: You should recreate aclocal.m4 with macros from revision $package_revision -$progname: of $PACKAGE $VERSION and run autoconf again. -_LT_EOF - fi - - exit $EXIT_MISMATCH - fi -} - - -# Shorthand for --mode=foo, only valid as the first argument -case $1 in -clean|clea|cle|cl) - shift; set dummy --mode clean ${1+"$@"}; shift - ;; -compile|compil|compi|comp|com|co|c) - shift; set dummy --mode compile ${1+"$@"}; shift - ;; -execute|execut|execu|exec|exe|ex|e) - shift; set dummy --mode execute ${1+"$@"}; shift - ;; -finish|finis|fini|fin|fi|f) - shift; set dummy --mode finish ${1+"$@"}; shift - ;; -install|instal|insta|inst|ins|in|i) - shift; set dummy --mode install ${1+"$@"}; shift - ;; -link|lin|li|l) - shift; set dummy --mode link ${1+"$@"}; shift - ;; -uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) - shift; set dummy --mode uninstall ${1+"$@"}; shift - ;; -esac - - - -# Option defaults: -opt_debug=: -opt_dry_run=false -opt_config=false -opt_preserve_dup_deps=false -opt_features=false -opt_finish=false -opt_help=false -opt_help_all=false -opt_silent=: -opt_verbose=: -opt_silent=false -opt_verbose=false - - -# Parse options once, thoroughly. This comes as soon as possible in the -# script to make things like `--version' happen as quickly as we can. -{ - # this just eases exit handling - while test $# -gt 0; do - opt="$1" - shift - case $opt in - --debug|-x) opt_debug='set -x' - func_echo "enabling shell trace mode" - $opt_debug - ;; - --dry-run|--dryrun|-n) - opt_dry_run=: - ;; - --config) - opt_config=: -func_config - ;; - --dlopen|-dlopen) - optarg="$1" - opt_dlopen="${opt_dlopen+$opt_dlopen -}$optarg" - shift - ;; - --preserve-dup-deps) - opt_preserve_dup_deps=: - ;; - --features) - opt_features=: -func_features - ;; - --finish) - opt_finish=: -set dummy --mode finish ${1+"$@"}; shift - ;; - --help) - opt_help=: - ;; - --help-all) - opt_help_all=: -opt_help=': help-all' - ;; - --mode) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_mode="$optarg" -case $optarg in - # Valid mode arguments: - clean|compile|execute|finish|install|link|relink|uninstall) ;; - - # Catch anything else as an error - *) func_error "invalid argument for $opt" - exit_cmd=exit - break - ;; -esac - shift - ;; - --no-silent|--no-quiet) - opt_silent=false -func_append preserve_args " $opt" - ;; - --no-verbose) - opt_verbose=false -func_append preserve_args " $opt" - ;; - --silent|--quiet) - opt_silent=: -func_append preserve_args " $opt" - opt_verbose=false - ;; - --verbose|-v) - opt_verbose=: -func_append preserve_args " $opt" -opt_silent=false - ;; - --tag) - test $# = 0 && func_missing_arg $opt && break - optarg="$1" - opt_tag="$optarg" -func_append preserve_args " $opt $optarg" -func_enable_tag "$optarg" - shift - ;; - - -\?|-h) func_usage ;; - --help) func_help ;; - --version) func_version ;; - - # Separate optargs to long options: - --*=*) - func_split_long_opt "$opt" - set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} - shift - ;; - - # Separate non-argument short options: - -\?*|-h*|-n*|-v*) - func_split_short_opt "$opt" - set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} - shift - ;; - - --) break ;; - -*) func_fatal_help "unrecognized option \`$opt'" ;; - *) set dummy "$opt" ${1+"$@"}; shift; break ;; - esac - done - - # Validate options: - - # save first non-option argument - if test "$#" -gt 0; then - nonopt="$opt" - shift - fi - - # preserve --debug - test "$opt_debug" = : || func_append preserve_args " --debug" - - case $host in - *cygwin* | *mingw* | *pw32* | *cegcc*) - # don't eliminate duplications in $postdeps and $predeps - opt_duplicate_compiler_generated_deps=: - ;; - *) - opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps - ;; - esac - - $opt_help || { - # Sanity checks first: - func_check_version_match - - if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then - func_fatal_configuration "not configured to build any kind of library" - fi - - # Darwin sucks - eval std_shrext=\"$shrext_cmds\" - - # Only execute mode is allowed to have -dlopen flags. - if test -n "$opt_dlopen" && test "$opt_mode" != execute; then - func_error "unrecognized option \`-dlopen'" - $ECHO "$help" 1>&2 - exit $EXIT_FAILURE - fi - - # Change the help message to a mode-specific one. - generic_help="$help" - help="Try \`$progname --help --mode=$opt_mode' for more information." - } - - - # Bail if the options were screwed - $exit_cmd $EXIT_FAILURE -} - - - - -## ----------- ## -## Main. ## -## ----------- ## - -# func_lalib_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_lalib_p () -{ - test -f "$1" && - $SED -e 4q "$1" 2>/dev/null \ - | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 -} - -# func_lalib_unsafe_p file -# True iff FILE is a libtool `.la' library or `.lo' object file. -# This function implements the same check as func_lalib_p without -# resorting to external programs. To this end, it redirects stdin and -# closes it afterwards, without saving the original file descriptor. -# As a safety measure, use it only where a negative result would be -# fatal anyway. Works if `file' does not exist. -func_lalib_unsafe_p () -{ - lalib_p=no - if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then - for lalib_p_l in 1 2 3 4 - do - read lalib_p_line - case "$lalib_p_line" in - \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; - esac - done - exec 0<&5 5<&- - fi - test "$lalib_p" = yes -} - -# func_ltwrapper_script_p file -# True iff FILE is a libtool wrapper script -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_script_p () -{ - func_lalib_p "$1" -} - -# func_ltwrapper_executable_p file -# True iff FILE is a libtool wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_executable_p () -{ - func_ltwrapper_exec_suffix= - case $1 in - *.exe) ;; - *) func_ltwrapper_exec_suffix=.exe ;; - esac - $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 -} - -# func_ltwrapper_scriptname file -# Assumes file is an ltwrapper_executable -# uses $file to determine the appropriate filename for a -# temporary ltwrapper_script. -func_ltwrapper_scriptname () -{ - func_dirname_and_basename "$1" "" "." - func_stripname '' '.exe' "$func_basename_result" - func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" -} - -# func_ltwrapper_p file -# True iff FILE is a libtool wrapper script or wrapper executable -# This function is only a basic sanity check; it will hardly flush out -# determined imposters. -func_ltwrapper_p () -{ - func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" -} - - -# func_execute_cmds commands fail_cmd -# Execute tilde-delimited COMMANDS. -# If FAIL_CMD is given, eval that upon failure. -# FAIL_CMD may read-access the current command in variable CMD! -func_execute_cmds () -{ - $opt_debug - save_ifs=$IFS; IFS='~' - for cmd in $1; do - IFS=$save_ifs - eval cmd=\"$cmd\" - func_show_eval "$cmd" "${2-:}" - done - IFS=$save_ifs -} - - -# func_source file -# Source FILE, adding directory component if necessary. -# Note that it is not necessary on cygwin/mingw to append a dot to -# FILE even if both FILE and FILE.exe exist: automatic-append-.exe -# behavior happens only for exec(3), not for open(2)! Also, sourcing -# `FILE.' does not work on cygwin managed mounts. -func_source () -{ - $opt_debug - case $1 in - */* | *\\*) . "$1" ;; - *) . "./$1" ;; - esac -} - - -# func_resolve_sysroot PATH -# Replace a leading = in PATH with a sysroot. Store the result into -# func_resolve_sysroot_result -func_resolve_sysroot () -{ - func_resolve_sysroot_result=$1 - case $func_resolve_sysroot_result in - =*) - func_stripname '=' '' "$func_resolve_sysroot_result" - func_resolve_sysroot_result=$lt_sysroot$func_stripname_result - ;; - esac -} - -# func_replace_sysroot PATH -# If PATH begins with the sysroot, replace it with = and -# store the result into func_replace_sysroot_result. -func_replace_sysroot () -{ - case "$lt_sysroot:$1" in - ?*:"$lt_sysroot"*) - func_stripname "$lt_sysroot" '' "$1" - func_replace_sysroot_result="=$func_stripname_result" - ;; - *) - # Including no sysroot. - func_replace_sysroot_result=$1 - ;; - esac -} - -# func_infer_tag arg -# Infer tagged configuration to use if any are available and -# if one wasn't chosen via the "--tag" command line option. -# Only attempt this if the compiler in the base compile -# command doesn't match the default compiler. -# arg is usually of the form 'gcc ...' -func_infer_tag () -{ - $opt_debug - if test -n "$available_tags" && test -z "$tagname"; then - CC_quoted= - for arg in $CC; do - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case $@ in - # Blanks in the command may have been stripped by the calling shell, - # but not from the CC environment variable when configure was run. - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; - # Blanks at the start of $base_compile will cause this to fail - # if we don't check for them as well. - *) - for z in $available_tags; do - if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then - # Evaluate the configuration. - eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" - CC_quoted= - for arg in $CC; do - # Double-quote args containing other shell metacharacters. - func_append_quoted CC_quoted "$arg" - done - CC_expanded=`func_echo_all $CC` - CC_quoted_expanded=`func_echo_all $CC_quoted` - case "$@ " in - " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ - " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) - # The compiler in the base compile command matches - # the one in the tagged configuration. - # Assume this is the tagged configuration we want. - tagname=$z - break - ;; - esac - fi - done - # If $tagname still isn't set, then no tagged configuration - # was found and let the user know that the "--tag" command - # line option must be used. - if test -z "$tagname"; then - func_echo "unable to infer tagged configuration" - func_fatal_error "specify a tag with \`--tag'" -# else -# func_verbose "using $tagname tagged configuration" - fi - ;; - esac - fi -} - - - -# func_write_libtool_object output_name pic_name nonpic_name -# Create a libtool object file (analogous to a ".la" file), -# but don't create it if we're doing a dry run. -func_write_libtool_object () -{ - write_libobj=${1} - if test "$build_libtool_libs" = yes; then - write_lobj=\'${2}\' - else - write_lobj=none - fi - - if test "$build_old_libs" = yes; then - write_oldobj=\'${3}\' - else - write_oldobj=none - fi - - $opt_dry_run || { - cat >${write_libobj}T </dev/null` - if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then - func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | - $SED -e "$lt_sed_naive_backslashify"` - else - func_convert_core_file_wine_to_w32_result= - fi - fi -} -# end: func_convert_core_file_wine_to_w32 - - -# func_convert_core_path_wine_to_w32 ARG -# Helper function used by path conversion functions when $build is *nix, and -# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly -# configured wine environment available, with the winepath program in $build's -# $PATH. Assumes ARG has no leading or trailing path separator characters. -# -# ARG is path to be converted from $build format to win32. -# Result is available in $func_convert_core_path_wine_to_w32_result. -# Unconvertible file (directory) names in ARG are skipped; if no directory names -# are convertible, then the result may be empty. -func_convert_core_path_wine_to_w32 () -{ - $opt_debug - # unfortunately, winepath doesn't convert paths, only file names - func_convert_core_path_wine_to_w32_result="" - if test -n "$1"; then - oldIFS=$IFS - IFS=: - for func_convert_core_path_wine_to_w32_f in $1; do - IFS=$oldIFS - func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" - if test -n "$func_convert_core_file_wine_to_w32_result" ; then - if test -z "$func_convert_core_path_wine_to_w32_result"; then - func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" - else - func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" - fi - fi - done - IFS=$oldIFS - fi -} -# end: func_convert_core_path_wine_to_w32 - - -# func_cygpath ARGS... -# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when -# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) -# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or -# (2), returns the Cygwin file name or path in func_cygpath_result (input -# file name or path is assumed to be in w32 format, as previously converted -# from $build's *nix or MSYS format). In case (3), returns the w32 file name -# or path in func_cygpath_result (input file name or path is assumed to be in -# Cygwin format). Returns an empty string on error. -# -# ARGS are passed to cygpath, with the last one being the file name or path to -# be converted. -# -# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH -# environment variable; do not put it in $PATH. -func_cygpath () -{ - $opt_debug - if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then - func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` - if test "$?" -ne 0; then - # on failure, ensure result is empty - func_cygpath_result= - fi - else - func_cygpath_result= - func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" - fi -} -#end: func_cygpath - - -# func_convert_core_msys_to_w32 ARG -# Convert file name or path ARG from MSYS format to w32 format. Return -# result in func_convert_core_msys_to_w32_result. -func_convert_core_msys_to_w32 () -{ - $opt_debug - # awkward: cmd appends spaces to result - func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | - $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` -} -#end: func_convert_core_msys_to_w32 - - -# func_convert_file_check ARG1 ARG2 -# Verify that ARG1 (a file name in $build format) was converted to $host -# format in ARG2. Otherwise, emit an error message, but continue (resetting -# func_to_host_file_result to ARG1). -func_convert_file_check () -{ - $opt_debug - if test -z "$2" && test -n "$1" ; then - func_error "Could not determine host file name corresponding to" - func_error " \`$1'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback: - func_to_host_file_result="$1" - fi -} -# end func_convert_file_check - - -# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH -# Verify that FROM_PATH (a path in $build format) was converted to $host -# format in TO_PATH. Otherwise, emit an error message, but continue, resetting -# func_to_host_file_result to a simplistic fallback value (see below). -func_convert_path_check () -{ - $opt_debug - if test -z "$4" && test -n "$3"; then - func_error "Could not determine the host path corresponding to" - func_error " \`$3'" - func_error "Continuing, but uninstalled executables may not work." - # Fallback. This is a deliberately simplistic "conversion" and - # should not be "improved". See libtool.info. - if test "x$1" != "x$2"; then - lt_replace_pathsep_chars="s|$1|$2|g" - func_to_host_path_result=`echo "$3" | - $SED -e "$lt_replace_pathsep_chars"` - else - func_to_host_path_result="$3" - fi - fi -} -# end func_convert_path_check - - -# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG -# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT -# and appending REPL if ORIG matches BACKPAT. -func_convert_path_front_back_pathsep () -{ - $opt_debug - case $4 in - $1 ) func_to_host_path_result="$3$func_to_host_path_result" - ;; - esac - case $4 in - $2 ) func_append func_to_host_path_result "$3" - ;; - esac -} -# end func_convert_path_front_back_pathsep - - -################################################## -# $build to $host FILE NAME CONVERSION FUNCTIONS # -################################################## -# invoked via `$to_host_file_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# Result will be available in $func_to_host_file_result. - - -# func_to_host_file ARG -# Converts the file name ARG from $build format to $host format. Return result -# in func_to_host_file_result. -func_to_host_file () -{ - $opt_debug - $to_host_file_cmd "$1" -} -# end func_to_host_file - - -# func_to_tool_file ARG LAZY -# converts the file name ARG from $build format to toolchain format. Return -# result in func_to_tool_file_result. If the conversion in use is listed -# in (the comma separated) LAZY, no conversion takes place. -func_to_tool_file () -{ - $opt_debug - case ,$2, in - *,"$to_tool_file_cmd",*) - func_to_tool_file_result=$1 - ;; - *) - $to_tool_file_cmd "$1" - func_to_tool_file_result=$func_to_host_file_result - ;; - esac -} -# end func_to_tool_file - - -# func_convert_file_noop ARG -# Copy ARG to func_to_host_file_result. -func_convert_file_noop () -{ - func_to_host_file_result="$1" -} -# end func_convert_file_noop - - -# func_convert_file_msys_to_w32 ARG -# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_file_result. -func_convert_file_msys_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_to_host_file_result="$func_convert_core_msys_to_w32_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_w32 - - -# func_convert_file_cygwin_to_w32 ARG -# Convert file name ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_file_cygwin_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - # because $build is cygwin, we call "the" cygpath in $PATH; no need to use - # LT_CYGPATH in this case. - func_to_host_file_result=`cygpath -m "$1"` - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_cygwin_to_w32 - - -# func_convert_file_nix_to_w32 ARG -# Convert file name ARG from *nix to w32 format. Requires a wine environment -# and a working winepath. Returns result in func_to_host_file_result. -func_convert_file_nix_to_w32 () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_file_wine_to_w32 "$1" - func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_w32 - - -# func_convert_file_msys_to_cygwin ARG -# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_file_msys_to_cygwin () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - func_convert_core_msys_to_w32 "$1" - func_cygpath -u "$func_convert_core_msys_to_w32_result" - func_to_host_file_result="$func_cygpath_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_msys_to_cygwin - - -# func_convert_file_nix_to_cygwin ARG -# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed -# in a wine environment, working winepath, and LT_CYGPATH set. Returns result -# in func_to_host_file_result. -func_convert_file_nix_to_cygwin () -{ - $opt_debug - func_to_host_file_result="$1" - if test -n "$1"; then - # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. - func_convert_core_file_wine_to_w32 "$1" - func_cygpath -u "$func_convert_core_file_wine_to_w32_result" - func_to_host_file_result="$func_cygpath_result" - fi - func_convert_file_check "$1" "$func_to_host_file_result" -} -# end func_convert_file_nix_to_cygwin - - -############################################# -# $build to $host PATH CONVERSION FUNCTIONS # -############################################# -# invoked via `$to_host_path_cmd ARG' -# -# In each case, ARG is the path to be converted from $build to $host format. -# The result will be available in $func_to_host_path_result. -# -# Path separators are also converted from $build format to $host format. If -# ARG begins or ends with a path separator character, it is preserved (but -# converted to $host format) on output. -# -# All path conversion functions are named using the following convention: -# file name conversion function : func_convert_file_X_to_Y () -# path conversion function : func_convert_path_X_to_Y () -# where, for any given $build/$host combination the 'X_to_Y' value is the -# same. If conversion functions are added for new $build/$host combinations, -# the two new functions must follow this pattern, or func_init_to_host_path_cmd -# will break. - - -# func_init_to_host_path_cmd -# Ensures that function "pointer" variable $to_host_path_cmd is set to the -# appropriate value, based on the value of $to_host_file_cmd. -to_host_path_cmd= -func_init_to_host_path_cmd () -{ - $opt_debug - if test -z "$to_host_path_cmd"; then - func_stripname 'func_convert_file_' '' "$to_host_file_cmd" - to_host_path_cmd="func_convert_path_${func_stripname_result}" - fi -} - - -# func_to_host_path ARG -# Converts the path ARG from $build format to $host format. Return result -# in func_to_host_path_result. -func_to_host_path () -{ - $opt_debug - func_init_to_host_path_cmd - $to_host_path_cmd "$1" -} -# end func_to_host_path - - -# func_convert_path_noop ARG -# Copy ARG to func_to_host_path_result. -func_convert_path_noop () -{ - func_to_host_path_result="$1" -} -# end func_convert_path_noop - - -# func_convert_path_msys_to_w32 ARG -# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic -# conversion to w32 is not available inside the cwrapper. Returns result in -# func_to_host_path_result. -func_convert_path_msys_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # Remove leading and trailing path separator characters from ARG. MSYS - # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; - # and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_msys_to_w32_result" - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_msys_to_w32 - - -# func_convert_path_cygwin_to_w32 ARG -# Convert path ARG from Cygwin to w32 format. Returns result in -# func_to_host_file_result. -func_convert_path_cygwin_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_cygwin_to_w32 - - -# func_convert_path_nix_to_w32 ARG -# Convert path ARG from *nix to w32 format. Requires a wine environment and -# a working winepath. Returns result in func_to_host_file_result. -func_convert_path_nix_to_w32 () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" - func_convert_path_check : ";" \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" - fi -} -# end func_convert_path_nix_to_w32 - - -# func_convert_path_msys_to_cygwin ARG -# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. -# Returns result in func_to_host_file_result. -func_convert_path_msys_to_cygwin () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # See func_convert_path_msys_to_w32: - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_msys_to_w32_result" - func_to_host_path_result="$func_cygpath_result" - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_msys_to_cygwin - - -# func_convert_path_nix_to_cygwin ARG -# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a -# a wine environment, working winepath, and LT_CYGPATH set. Returns result in -# func_to_host_file_result. -func_convert_path_nix_to_cygwin () -{ - $opt_debug - func_to_host_path_result="$1" - if test -n "$1"; then - # Remove leading and trailing path separator characters from - # ARG. msys behavior is inconsistent here, cygpath turns them - # into '.;' and ';.', and winepath ignores them completely. - func_stripname : : "$1" - func_to_host_path_tmp1=$func_stripname_result - func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" - func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" - func_to_host_path_result="$func_cygpath_result" - func_convert_path_check : : \ - "$func_to_host_path_tmp1" "$func_to_host_path_result" - func_convert_path_front_back_pathsep ":*" "*:" : "$1" - fi -} -# end func_convert_path_nix_to_cygwin - - -# func_mode_compile arg... -func_mode_compile () -{ - $opt_debug - # Get the compilation command and the source file. - base_compile= - srcfile="$nonopt" # always keep a non-empty value in "srcfile" - suppress_opt=yes - suppress_output= - arg_mode=normal - libobj= - later= - pie_flag= - - for arg - do - case $arg_mode in - arg ) - # do not "continue". Instead, add this to base_compile - lastarg="$arg" - arg_mode=normal - ;; - - target ) - libobj="$arg" - arg_mode=normal - continue - ;; - - normal ) - # Accept any command-line options. - case $arg in - -o) - test -n "$libobj" && \ - func_fatal_error "you cannot specify \`-o' more than once" - arg_mode=target - continue - ;; - - -pie | -fpie | -fPIE) - func_append pie_flag " $arg" - continue - ;; - - -shared | -static | -prefer-pic | -prefer-non-pic) - func_append later " $arg" - continue - ;; - - -no-suppress) - suppress_opt=no - continue - ;; - - -Xcompiler) - arg_mode=arg # the next one goes into the "base_compile" arg list - continue # The current "srcfile" will either be retained or - ;; # replaced later. I would guess that would be a bug. - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - lastarg= - save_ifs="$IFS"; IFS=',' - for arg in $args; do - IFS="$save_ifs" - func_append_quoted lastarg "$arg" - done - IFS="$save_ifs" - func_stripname ' ' '' "$lastarg" - lastarg=$func_stripname_result - - # Add the arguments to base_compile. - func_append base_compile " $lastarg" - continue - ;; - - *) - # Accept the current argument as the source file. - # The previous "srcfile" becomes the current argument. - # - lastarg="$srcfile" - srcfile="$arg" - ;; - esac # case $arg - ;; - esac # case $arg_mode - - # Aesthetically quote the previous argument. - func_append_quoted base_compile "$lastarg" - done # for arg - - case $arg_mode in - arg) - func_fatal_error "you must specify an argument for -Xcompile" - ;; - target) - func_fatal_error "you must specify a target with \`-o'" - ;; - *) - # Get the name of the library object. - test -z "$libobj" && { - func_basename "$srcfile" - libobj="$func_basename_result" - } - ;; - esac - - # Recognize several different file suffixes. - # If the user specifies -o file.o, it is replaced with file.lo - case $libobj in - *.[cCFSifmso] | \ - *.ada | *.adb | *.ads | *.asm | \ - *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ - *.[fF][09]? | *.for | *.java | *.obj | *.sx | *.cu | *.cup) - func_xform "$libobj" - libobj=$func_xform_result - ;; - esac - - case $libobj in - *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; - *) - func_fatal_error "cannot determine name of library object from \`$libobj'" - ;; - esac - - func_infer_tag $base_compile - - for arg in $later; do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - continue - ;; - - -static) - build_libtool_libs=no - build_old_libs=yes - continue - ;; - - -prefer-pic) - pic_mode=yes - continue - ;; - - -prefer-non-pic) - pic_mode=no - continue - ;; - esac - done - - func_quote_for_eval "$libobj" - test "X$libobj" != "X$func_quote_for_eval_result" \ - && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ - && func_warning "libobj name \`$libobj' may not contain shell special characters." - func_dirname_and_basename "$obj" "/" "" - objname="$func_basename_result" - xdir="$func_dirname_result" - lobj=${xdir}$objdir/$objname - - test -z "$base_compile" && \ - func_fatal_help "you must specify a compilation command" - - # Delete any leftover library objects. - if test "$build_old_libs" = yes; then - removelist="$obj $lobj $libobj ${libobj}T" - else - removelist="$lobj $libobj ${libobj}T" - fi - - # On Cygwin there's no "real" PIC flag so we must build both object types - case $host_os in - cygwin* | mingw* | pw32* | os2* | cegcc*) - pic_mode=default - ;; - esac - if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then - # non-PIC code in shared libraries is not supported - pic_mode=default - fi - - # Calculate the filename of the output object if compiler does - # not support -o with -c - if test "$compiler_c_o" = no; then - output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} - lockfile="$output_obj.lock" - else - output_obj= - need_locks=no - lockfile= - fi - - # Lock this critical section if it is needed - # We use this script file to make the link, it avoids creating a new file - if test "$need_locks" = yes; then - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - elif test "$need_locks" = warn; then - if test -f "$lockfile"; then - $ECHO "\ -*** ERROR, $lockfile exists and contains: -`cat $lockfile 2>/dev/null` - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - func_append removelist " $output_obj" - $ECHO "$srcfile" > "$lockfile" - fi - - $opt_dry_run || $RM $removelist - func_append removelist " $lockfile" - trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 - - func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 - srcfile=$func_to_tool_file_result - func_quote_for_eval "$srcfile" - qsrcfile=$func_quote_for_eval_result - - # Only build a PIC object if we are building libtool libraries. - if test "$build_libtool_libs" = yes; then - # Without this assignment, base_compile gets emptied. - fbsd_hideous_sh_bug=$base_compile - - if test "$pic_mode" != no; then - command="$base_compile $qsrcfile $pic_flag" - else - # Don't build PIC code - command="$base_compile $qsrcfile" - fi - - func_mkdir_p "$xdir$objdir" - - if test -z "$output_obj"; then - # Place PIC objects in $objdir - func_append command " -o $lobj" - fi - - func_show_eval_locale "$command" \ - 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed, then go on to compile the next one - if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then - func_show_eval '$MV "$output_obj" "$lobj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - - # Allow error messages only from the first compilation. - if test "$suppress_opt" = yes; then - suppress_output=' >/dev/null 2>&1' - fi - fi - - # Only build a position-dependent object if we build old libraries. - if test "$build_old_libs" = yes; then - if test "$pic_mode" != yes; then - # Don't build PIC code - command="$base_compile $qsrcfile$pie_flag" - else - command="$base_compile $qsrcfile $pic_flag" - fi - if test "$compiler_c_o" = yes; then - func_append command " -o $obj" - fi - - # Suppress compiler output if we already did a PIC compilation. - func_append command "$suppress_output" - func_show_eval_locale "$command" \ - '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' - - if test "$need_locks" = warn && - test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then - $ECHO "\ -*** ERROR, $lockfile contains: -`cat $lockfile 2>/dev/null` - -but it should contain: -$srcfile - -This indicates that another process is trying to use the same -temporary object file, and libtool could not work around it because -your compiler does not support \`-c' and \`-o' together. If you -repeat this compilation, it may succeed, by chance, but you had better -avoid parallel builds (make -j) in this platform, or get a better -compiler." - - $opt_dry_run || $RM $removelist - exit $EXIT_FAILURE - fi - - # Just move the object if needed - if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then - func_show_eval '$MV "$output_obj" "$obj"' \ - 'error=$?; $opt_dry_run || $RM $removelist; exit $error' - fi - fi - - $opt_dry_run || { - func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" - - # Unlock the critical section if it was locked - if test "$need_locks" != no; then - removelist=$lockfile - $RM "$lockfile" - fi - } - - exit $EXIT_SUCCESS -} - -$opt_help || { - test "$opt_mode" = compile && func_mode_compile ${1+"$@"} -} - -func_mode_help () -{ - # We need to display help for each of the modes. - case $opt_mode in - "") - # Generic help is extracted from the usage comments - # at the start of this file. - func_help - ;; - - clean) - $ECHO \ -"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... - -Remove files from the build directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, object or program, all the files associated -with it are deleted. Otherwise, only FILE itself is deleted using RM." - ;; - - compile) - $ECHO \ -"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE - -Compile a source file into a libtool library object. - -This mode accepts the following additional options: - - -o OUTPUT-FILE set the output file name to OUTPUT-FILE - -no-suppress do not suppress compiler output for multiple passes - -prefer-pic try to build PIC objects only - -prefer-non-pic try to build non-PIC objects only - -shared do not build a \`.o' file suitable for static linking - -static only build a \`.o' file suitable for static linking - -Wc,FLAG pass FLAG directly to the compiler - -COMPILE-COMMAND is a command to be used in creating a \`standard' object file -from the given SOURCEFILE. - -The output file name is determined by removing the directory component from -SOURCEFILE, then substituting the C source code suffix \`.c' with the -library object suffix, \`.lo'." - ;; - - execute) - $ECHO \ -"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... - -Automatically set library path, then run a program. - -This mode accepts the following additional options: - - -dlopen FILE add the directory containing FILE to the library path - -This mode sets the library path environment variable according to \`-dlopen' -flags. - -If any of the ARGS are libtool executable wrappers, then they are translated -into their corresponding uninstalled binary, and any of their required library -directories are added to the library path. - -Then, COMMAND is executed, with ARGS as arguments." - ;; - - finish) - $ECHO \ -"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... - -Complete the installation of libtool libraries. - -Each LIBDIR is a directory that contains libtool libraries. - -The commands that this mode executes may require superuser privileges. Use -the \`--dry-run' option if you just want to see what would be executed." - ;; - - install) - $ECHO \ -"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... - -Install executables or libraries. - -INSTALL-COMMAND is the installation command. The first component should be -either the \`install' or \`cp' program. - -The following components of INSTALL-COMMAND are treated specially: - - -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation - -The rest of the components are interpreted as arguments to that command (only -BSD-compatible install options are recognized)." - ;; - - link) - $ECHO \ -"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... - -Link object files or libraries together to form another library, or to -create an executable program. - -LINK-COMMAND is a command using the C compiler that you would use to create -a program from several object files. - -The following components of LINK-COMMAND are treated specially: - - -all-static do not do any dynamic linking at all - -avoid-version do not add a version suffix if possible - -bindir BINDIR specify path to binaries directory (for systems where - libraries must be found in the PATH setting at runtime) - -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime - -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols - -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) - -export-symbols SYMFILE - try to export only the symbols listed in SYMFILE - -export-symbols-regex REGEX - try to export only the symbols matching REGEX - -LLIBDIR search LIBDIR for required installed libraries - -lNAME OUTPUT-FILE requires the installed library libNAME - -module build a library that can dlopened - -no-fast-install disable the fast-install mode - -no-install link a not-installable executable - -no-undefined declare that a library does not refer to external symbols - -o OUTPUT-FILE create OUTPUT-FILE from the specified objects - -objectlist FILE Use a list of object files found in FILE to specify objects - -precious-files-regex REGEX - don't remove output files matching REGEX - -release RELEASE specify package release information - -rpath LIBDIR the created library will eventually be installed in LIBDIR - -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries - -shared only do dynamic linking of libtool libraries - -shrext SUFFIX override the standard shared library file extension - -static do not do any dynamic linking of uninstalled libtool libraries - -static-libtool-libs - do not do any dynamic linking of libtool libraries - -version-info CURRENT[:REVISION[:AGE]] - specify library version info [each variable defaults to 0] - -weak LIBNAME declare that the target provides the LIBNAME interface - -Wc,FLAG - -Xcompiler FLAG pass linker-specific FLAG directly to the compiler - -Wl,FLAG - -Xlinker FLAG pass linker-specific FLAG directly to the linker - -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) - -All other options (arguments beginning with \`-') are ignored. - -Every other argument is treated as a filename. Files ending in \`.la' are -treated as uninstalled libtool libraries, other files are standard or library -object files. - -If the OUTPUT-FILE ends in \`.la', then a libtool library is created, -only library objects (\`.lo' files) may be specified, and \`-rpath' is -required, except when creating a convenience library. - -If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created -using \`ar' and \`ranlib', or on Windows using \`lib'. - -If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file -is created, otherwise an executable program is created." - ;; - - uninstall) - $ECHO \ -"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... - -Remove libraries from an installation directory. - -RM is the name of the program to use to delete files associated with each FILE -(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed -to RM. - -If FILE is a libtool library, all the files associated with it are deleted. -Otherwise, only FILE itself is deleted using RM." - ;; - - *) - func_fatal_help "invalid operation mode \`$opt_mode'" - ;; - esac - - echo - $ECHO "Try \`$progname --help' for more information about other modes." -} - -# Now that we've collected a possible --mode arg, show help if necessary -if $opt_help; then - if test "$opt_help" = :; then - func_mode_help - else - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - func_mode_help - done - } | sed -n '1p; 2,$s/^Usage:/ or: /p' - { - func_help noexit - for opt_mode in compile link execute install finish uninstall clean; do - echo - func_mode_help - done - } | - sed '1d - /^When reporting/,/^Report/{ - H - d - } - $x - /information about other modes/d - /more detailed .*MODE/d - s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' - fi - exit $? -fi - - -# func_mode_execute arg... -func_mode_execute () -{ - $opt_debug - # The first argument is the command name. - cmd="$nonopt" - test -z "$cmd" && \ - func_fatal_help "you must specify a COMMAND" - - # Handle -dlopen flags immediately. - for file in $opt_dlopen; do - test -f "$file" \ - || func_fatal_help "\`$file' is not a file" - - dir= - case $file in - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$lib' is not a valid libtool archive" - - # Read the libtool library. - dlname= - library_names= - func_source "$file" - - # Skip this library if it cannot be dlopened. - if test -z "$dlname"; then - # Warn if it was a shared library. - test -n "$library_names" && \ - func_warning "\`$file' was not linked with \`-export-dynamic'" - continue - fi - - func_dirname "$file" "" "." - dir="$func_dirname_result" - - if test -f "$dir/$objdir/$dlname"; then - func_append dir "/$objdir" - else - if test ! -f "$dir/$dlname"; then - func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" - fi - fi - ;; - - *.lo) - # Just add the directory containing the .lo file. - func_dirname "$file" "" "." - dir="$func_dirname_result" - ;; - - *) - func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" - continue - ;; - esac - - # Get the absolute pathname. - absdir=`cd "$dir" && pwd` - test -n "$absdir" && dir="$absdir" - - # Now add the directory to shlibpath_var. - if eval "test -z \"\$$shlibpath_var\""; then - eval "$shlibpath_var=\"\$dir\"" - else - eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" - fi - done - - # This variable tells wrapper scripts just to set shlibpath_var - # rather than running their programs. - libtool_execute_magic="$magic" - - # Check if any of the arguments is a wrapper script. - args= - for file - do - case $file in - -* | *.la | *.lo ) ;; - *) - # Do a test to see if this is really a libtool program. - if func_ltwrapper_script_p "$file"; then - func_source "$file" - # Transform arg to wrapped name. - file="$progdir/$program" - elif func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - func_source "$func_ltwrapper_scriptname_result" - # Transform arg to wrapped name. - file="$progdir/$program" - fi - ;; - esac - # Quote arguments (to preserve shell metacharacters). - func_append_quoted args "$file" - done - - if test "X$opt_dry_run" = Xfalse; then - if test -n "$shlibpath_var"; then - # Export the shlibpath_var. - eval "export $shlibpath_var" - fi - - # Restore saved environment variables - for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES - do - eval "if test \"\${save_$lt_var+set}\" = set; then - $lt_var=\$save_$lt_var; export $lt_var - else - $lt_unset $lt_var - fi" - done - - # Now prepare to actually exec the command. - exec_cmd="\$cmd$args" - else - # Display what would be done. - if test -n "$shlibpath_var"; then - eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" - echo "export $shlibpath_var" - fi - $ECHO "$cmd$args" - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = execute && func_mode_execute ${1+"$@"} - - -# func_mode_finish arg... -func_mode_finish () -{ - $opt_debug - libs= - libdirs= - admincmds= - - for opt in "$nonopt" ${1+"$@"} - do - if test -d "$opt"; then - func_append libdirs " $opt" - - elif test -f "$opt"; then - if func_lalib_unsafe_p "$opt"; then - func_append libs " $opt" - else - func_warning "\`$opt' is not a valid libtool archive" - fi - - else - func_fatal_error "invalid argument \`$opt'" - fi - done - - if test -n "$libs"; then - if test -n "$lt_sysroot"; then - sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` - sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" - else - sysroot_cmd= - fi - - # Remove sysroot references - if $opt_dry_run; then - for lib in $libs; do - echo "removing references to $lt_sysroot and \`=' prefixes from $lib" - done - else - tmpdir=`func_mktempdir` - for lib in $libs; do - sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ - > $tmpdir/tmp-la - mv -f $tmpdir/tmp-la $lib - done - ${RM}r "$tmpdir" - fi - fi - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - for libdir in $libdirs; do - if test -n "$finish_cmds"; then - # Do each command in the finish commands. - func_execute_cmds "$finish_cmds" 'admincmds="$admincmds -'"$cmd"'"' - fi - if test -n "$finish_eval"; then - # Do the single finish_eval. - eval cmds=\"$finish_eval\" - $opt_dry_run || eval "$cmds" || func_append admincmds " - $cmds" - fi - done - fi - - # Exit here if they wanted silent mode. - $opt_silent && exit $EXIT_SUCCESS - - if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then - echo "----------------------------------------------------------------------" - echo "Libraries have been installed in:" - for libdir in $libdirs; do - $ECHO " $libdir" - done - echo - echo "If you ever happen to want to link against installed libraries" - echo "in a given directory, LIBDIR, you must either use libtool, and" - echo "specify the full pathname of the library, or use the \`-LLIBDIR'" - echo "flag during linking and do at least one of the following:" - if test -n "$shlibpath_var"; then - echo " - add LIBDIR to the \`$shlibpath_var' environment variable" - echo " during execution" - fi - if test -n "$runpath_var"; then - echo " - add LIBDIR to the \`$runpath_var' environment variable" - echo " during linking" - fi - if test -n "$hardcode_libdir_flag_spec"; then - libdir=LIBDIR - eval flag=\"$hardcode_libdir_flag_spec\" - - $ECHO " - use the \`$flag' linker flag" - fi - if test -n "$admincmds"; then - $ECHO " - have your system administrator run these commands:$admincmds" - fi - if test -f /etc/ld.so.conf; then - echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" - fi - echo - - echo "See any operating system documentation about shared libraries for" - case $host in - solaris2.[6789]|solaris2.1[0-9]) - echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" - echo "pages." - ;; - *) - echo "more information, such as the ld(1) and ld.so(8) manual pages." - ;; - esac - echo "----------------------------------------------------------------------" - fi - exit $EXIT_SUCCESS -} - -test "$opt_mode" = finish && func_mode_finish ${1+"$@"} - - -# func_mode_install arg... -func_mode_install () -{ - $opt_debug - # There may be an optional sh(1) argument at the beginning of - # install_prog (especially on Windows NT). - if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || - # Allow the use of GNU shtool's install command. - case $nonopt in *shtool*) :;; *) false;; esac; then - # Aesthetically quote it. - func_quote_for_eval "$nonopt" - install_prog="$func_quote_for_eval_result " - arg=$1 - shift - else - install_prog= - arg=$nonopt - fi - - # The real first argument should be the name of the installation program. - # Aesthetically quote it. - func_quote_for_eval "$arg" - func_append install_prog "$func_quote_for_eval_result" - install_shared_prog=$install_prog - case " $install_prog " in - *[\\\ /]cp\ *) install_cp=: ;; - *) install_cp=false ;; - esac - - # We need to accept at least all the BSD install flags. - dest= - files= - opts= - prev= - install_type= - isdir=no - stripme= - no_mode=: - for arg - do - arg2= - if test -n "$dest"; then - func_append files " $dest" - dest=$arg - continue - fi - - case $arg in - -d) isdir=yes ;; - -f) - if $install_cp; then :; else - prev=$arg - fi - ;; - -g | -m | -o) - prev=$arg - ;; - -s) - stripme=" -s" - continue - ;; - -*) - ;; - *) - # If the previous option needed an argument, then skip it. - if test -n "$prev"; then - if test "x$prev" = x-m && test -n "$install_override_mode"; then - arg2=$install_override_mode - no_mode=false - fi - prev= - else - dest=$arg - continue - fi - ;; - esac - - # Aesthetically quote the argument. - func_quote_for_eval "$arg" - func_append install_prog " $func_quote_for_eval_result" - if test -n "$arg2"; then - func_quote_for_eval "$arg2" - fi - func_append install_shared_prog " $func_quote_for_eval_result" - done - - test -z "$install_prog" && \ - func_fatal_help "you must specify an install program" - - test -n "$prev" && \ - func_fatal_help "the \`$prev' option requires an argument" - - if test -n "$install_override_mode" && $no_mode; then - if $install_cp; then :; else - func_quote_for_eval "$install_override_mode" - func_append install_shared_prog " -m $func_quote_for_eval_result" - fi - fi - - if test -z "$files"; then - if test -z "$dest"; then - func_fatal_help "no file or destination specified" - else - func_fatal_help "you must specify a destination" - fi - fi - - # Strip any trailing slash from the destination. - func_stripname '' '/' "$dest" - dest=$func_stripname_result - - # Check to see that the destination is a directory. - test -d "$dest" && isdir=yes - if test "$isdir" = yes; then - destdir="$dest" - destname= - else - func_dirname_and_basename "$dest" "" "." - destdir="$func_dirname_result" - destname="$func_basename_result" - - # Not a directory, so check to see that there is only one file specified. - set dummy $files; shift - test "$#" -gt 1 && \ - func_fatal_help "\`$dest' is not a directory" - fi - case $destdir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - for file in $files; do - case $file in - *.lo) ;; - *) - func_fatal_help "\`$destdir' must be an absolute directory name" - ;; - esac - done - ;; - esac - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - staticlibs= - future_libdirs= - current_libdirs= - for file in $files; do - - # Do each installation. - case $file in - *.$libext) - # Do the static libraries later. - func_append staticlibs " $file" - ;; - - *.la) - func_resolve_sysroot "$file" - file=$func_resolve_sysroot_result - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$file" \ - || func_fatal_help "\`$file' is not a valid libtool archive" - - library_names= - old_library= - relink_command= - func_source "$file" - - # Add the libdir to current_libdirs if it is the destination. - if test "X$destdir" = "X$libdir"; then - case "$current_libdirs " in - *" $libdir "*) ;; - *) func_append current_libdirs " $libdir" ;; - esac - else - # Note the libdir as a future libdir. - case "$future_libdirs " in - *" $libdir "*) ;; - *) func_append future_libdirs " $libdir" ;; - esac - fi - - func_dirname "$file" "/" "" - dir="$func_dirname_result" - func_append dir "$objdir" - - if test -n "$relink_command"; then - # Determine the prefix the user has applied to our future dir. - inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` - - # Don't allow the user to place us outside of our expected - # location b/c this prevents finding dependent libraries that - # are installed to the same prefix. - # At present, this check doesn't affect windows .dll's that - # are installed into $libdir/../bin (currently, that works fine) - # but it's something to keep an eye on. - test "$inst_prefix_dir" = "$destdir" && \ - func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" - - if test -n "$inst_prefix_dir"; then - # Stick the inst_prefix_dir data into the link command. - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` - else - relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` - fi - - func_warning "relinking \`$file'" - func_show_eval "$relink_command" \ - 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' - fi - - # See the names of the shared library. - set dummy $library_names; shift - if test -n "$1"; then - realname="$1" - shift - - srcname="$realname" - test -n "$relink_command" && srcname="$realname"T - - # Install the shared library and build the symlinks. - func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ - 'exit $?' - tstripme="$stripme" - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - case $realname in - *.dll.a) - tstripme="" - ;; - esac - ;; - esac - if test -n "$tstripme" && test -n "$striplib"; then - func_show_eval "$striplib $destdir/$realname" 'exit $?' - fi - - if test "$#" -gt 0; then - # Delete the old symlinks, and create new ones. - # Try `ln -sf' first, because the `ln' binary might depend on - # the symlink we replace! Solaris /bin/ln does not understand -f, - # so we also need to try rm && ln -s. - for linkname - do - test "$linkname" != "$realname" \ - && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" - done - fi - - # Do each command in the postinstall commands. - lib="$destdir/$realname" - func_execute_cmds "$postinstall_cmds" 'exit $?' - fi - - # Install the pseudo-library for information purposes. - func_basename "$file" - name="$func_basename_result" - instname="$dir/$name"i - func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' - - # Maybe install the static library, too. - test -n "$old_library" && func_append staticlibs " $dir/$old_library" - ;; - - *.lo) - # Install (i.e. copy) a libtool object. - - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # Deduce the name of the destination old-style object file. - case $destfile in - *.lo) - func_lo2o "$destfile" - staticdest=$func_lo2o_result - ;; - *.$objext) - staticdest="$destfile" - destfile= - ;; - *) - func_fatal_help "cannot copy a libtool object to \`$destfile'" - ;; - esac - - # Install the libtool object if requested. - test -n "$destfile" && \ - func_show_eval "$install_prog $file $destfile" 'exit $?' - - # Install the old object if enabled. - if test "$build_old_libs" = yes; then - # Deduce the name of the old-style object file. - func_lo2o "$file" - staticobj=$func_lo2o_result - func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' - fi - exit $EXIT_SUCCESS - ;; - - *) - # Figure out destination file name, if it wasn't already specified. - if test -n "$destname"; then - destfile="$destdir/$destname" - else - func_basename "$file" - destfile="$func_basename_result" - destfile="$destdir/$destfile" - fi - - # If the file is missing, and there is a .exe on the end, strip it - # because it is most likely a libtool script we actually want to - # install - stripped_ext="" - case $file in - *.exe) - if test ! -f "$file"; then - func_stripname '' '.exe' "$file" - file=$func_stripname_result - stripped_ext=".exe" - fi - ;; - esac - - # Do a test to see if this is really a libtool program. - case $host in - *cygwin* | *mingw*) - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - wrapper=$func_ltwrapper_scriptname_result - else - func_stripname '' '.exe' "$file" - wrapper=$func_stripname_result - fi - ;; - *) - wrapper=$file - ;; - esac - if func_ltwrapper_script_p "$wrapper"; then - notinst_deplibs= - relink_command= - - func_source "$wrapper" - - # Check the variables that should have been set. - test -z "$generated_by_libtool_version" && \ - func_fatal_error "invalid libtool wrapper script \`$wrapper'" - - finalize=yes - for lib in $notinst_deplibs; do - # Check to see that each library is installed. - libdir= - if test -f "$lib"; then - func_source "$lib" - fi - libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test - if test -n "$libdir" && test ! -f "$libfile"; then - func_warning "\`$lib' has not been installed in \`$libdir'" - finalize=no - fi - done - - relink_command= - func_source "$wrapper" - - outputname= - if test "$fast_install" = no && test -n "$relink_command"; then - $opt_dry_run || { - if test "$finalize" = yes; then - tmpdir=`func_mktempdir` - func_basename "$file$stripped_ext" - file="$func_basename_result" - outputname="$tmpdir/$file" - # Replace the output file specification. - relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` - - $opt_silent || { - func_quote_for_expand "$relink_command" - eval "func_echo $func_quote_for_expand_result" - } - if eval "$relink_command"; then : - else - func_error "error: relink \`$file' with the above command before installing it" - $opt_dry_run || ${RM}r "$tmpdir" - continue - fi - file="$outputname" - else - func_warning "cannot relink \`$file'" - fi - } - else - # Install the binary that we compiled earlier. - file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` - fi - fi - - # remove .exe since cygwin /usr/bin/install will append another - # one anyway - case $install_prog,$host in - */usr/bin/install*,*cygwin*) - case $file:$destfile in - *.exe:*.exe) - # this is ok - ;; - *.exe:*) - destfile=$destfile.exe - ;; - *:*.exe) - func_stripname '' '.exe' "$destfile" - destfile=$func_stripname_result - ;; - esac - ;; - esac - func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' - $opt_dry_run || if test -n "$outputname"; then - ${RM}r "$tmpdir" - fi - ;; - esac - done - - for file in $staticlibs; do - func_basename "$file" - name="$func_basename_result" - - # Set up the ranlib parameters. - oldlib="$destdir/$name" - - func_show_eval "$install_prog \$file \$oldlib" 'exit $?' - - if test -n "$stripme" && test -n "$old_striplib"; then - func_show_eval "$old_striplib $oldlib" 'exit $?' - fi - - # Do each command in the postinstall commands. - func_execute_cmds "$old_postinstall_cmds" 'exit $?' - done - - test -n "$future_libdirs" && \ - func_warning "remember to run \`$progname --finish$future_libdirs'" - - if test -n "$current_libdirs"; then - # Maybe just do a dry run. - $opt_dry_run && current_libdirs=" -n$current_libdirs" - exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' - else - exit $EXIT_SUCCESS - fi -} - -test "$opt_mode" = install && func_mode_install ${1+"$@"} - - -# func_generate_dlsyms outputname originator pic_p -# Extract symbols from dlprefiles and create ${outputname}S.o with -# a dlpreopen symbol table. -func_generate_dlsyms () -{ - $opt_debug - my_outputname="$1" - my_originator="$2" - my_pic_p="${3-no}" - my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` - my_dlsyms= - - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - if test -n "$NM" && test -n "$global_symbol_pipe"; then - my_dlsyms="${my_outputname}S.c" - else - func_error "not configured to extract global symbols from dlpreopened files" - fi - fi - - if test -n "$my_dlsyms"; then - case $my_dlsyms in - "") ;; - *.c) - # Discover the nlist of each of the dlfiles. - nlist="$output_objdir/${my_outputname}.nm" - - func_show_eval "$RM $nlist ${nlist}S ${nlist}T" - - # Parse the name list into a source file. - func_verbose "creating $output_objdir/$my_dlsyms" - - $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ -/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ -/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ - -#ifdef __cplusplus -extern \"C\" { -#endif - -#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) -#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" -#endif - -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT_DLSYM_CONST -#else -# define LT_DLSYM_CONST const -#endif - -/* External symbol declarations for the compiler. */\ -" - - if test "$dlself" = yes; then - func_verbose "generating symbol list for \`$output'" - - $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" - - # Add our own program objects to the symbol list. - progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` - for progfile in $progfiles; do - func_to_tool_file "$progfile" func_convert_file_msys_to_w32 - func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" - $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" - done - - if test -n "$exclude_expsyms"; then - $opt_dry_run || { - eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - if test -n "$export_symbols_regex"; then - $opt_dry_run || { - eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - } - fi - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - export_symbols="$output_objdir/$outputname.exp" - $opt_dry_run || { - $RM $export_symbols - eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' - ;; - esac - } - else - $opt_dry_run || { - eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' - eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' - eval '$MV "$nlist"T "$nlist"' - case $host in - *cygwin* | *mingw* | *cegcc* ) - eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' - eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' - ;; - esac - } - fi - fi - - for dlprefile in $dlprefiles; do - func_verbose "extracting global C symbols from \`$dlprefile'" - func_basename "$dlprefile" - name="$func_basename_result" - case $host in - *cygwin* | *mingw* | *cegcc* ) - # if an import library, we need to obtain dlname - if func_win32_import_lib_p "$dlprefile"; then - func_tr_sh "$dlprefile" - eval "curr_lafile=\$libfile_$func_tr_sh_result" - dlprefile_dlbasename="" - if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then - # Use subshell, to avoid clobbering current variable values - dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` - if test -n "$dlprefile_dlname" ; then - func_basename "$dlprefile_dlname" - dlprefile_dlbasename="$func_basename_result" - else - # no lafile. user explicitly requested -dlpreopen . - $sharedlib_from_linklib_cmd "$dlprefile" - dlprefile_dlbasename=$sharedlib_from_linklib_result - fi - fi - $opt_dry_run || { - if test -n "$dlprefile_dlbasename" ; then - eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' - else - func_warning "Could not compute DLL name from $name" - eval '$ECHO ": $name " >> "$nlist"' - fi - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | - $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" - } - else # not an import lib - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - fi - ;; - *) - $opt_dry_run || { - eval '$ECHO ": $name " >> "$nlist"' - func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 - eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" - } - ;; - esac - done - - $opt_dry_run || { - # Make sure we have at least an empty file. - test -f "$nlist" || : > "$nlist" - - if test -n "$exclude_expsyms"; then - $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T - $MV "$nlist"T "$nlist" - fi - - # Try sorting and uniquifying the output. - if $GREP -v "^: " < "$nlist" | - if sort -k 3 /dev/null 2>&1; then - sort -k 3 - else - sort +2 - fi | - uniq > "$nlist"S; then - : - else - $GREP -v "^: " < "$nlist" > "$nlist"S - fi - - if test -f "$nlist"S; then - eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' - else - echo '/* NONE */' >> "$output_objdir/$my_dlsyms" - fi - - echo >> "$output_objdir/$my_dlsyms" "\ - -/* The mapping between symbol names and symbols. */ -typedef struct { - const char *name; - void *address; -} lt_dlsymlist; -extern LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[]; -LT_DLSYM_CONST lt_dlsymlist -lt_${my_prefix}_LTX_preloaded_symbols[] = -{\ - { \"$my_originator\", (void *) 0 }," - - case $need_lib_prefix in - no) - eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - *) - eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" - ;; - esac - echo >> "$output_objdir/$my_dlsyms" "\ - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt_${my_prefix}_LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif\ -" - } # !$opt_dry_run - - pic_flag_for_symtable= - case "$compile_command " in - *" -static "*) ;; - *) - case $host in - # compiling the symbol table file with pic_flag works around - # a FreeBSD bug that causes programs to crash when -lm is - # linked before any other PIC object. But we must not use - # pic_flag when linking with -static. The problem exists in - # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. - *-*-freebsd2*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) - pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; - *-*-hpux*) - pic_flag_for_symtable=" $pic_flag" ;; - *) - if test "X$my_pic_p" != Xno; then - pic_flag_for_symtable=" $pic_flag" - fi - ;; - esac - ;; - esac - symtab_cflags= - for arg in $LTCFLAGS; do - case $arg in - -pie | -fpie | -fPIE) ;; - *) func_append symtab_cflags " $arg" ;; - esac - done - - # Now compile the dynamic symbol file. - func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' - - # Clean up the generated files. - func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' - - # Transform the symbol file into the correct name. - symfileobj="$output_objdir/${my_outputname}S.$objext" - case $host in - *cygwin* | *mingw* | *cegcc* ) - if test -f "$output_objdir/$my_outputname.def"; then - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` - else - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - fi - ;; - *) - compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` - ;; - esac - ;; - *) - func_fatal_error "unknown suffix for \`$my_dlsyms'" - ;; - esac - else - # We keep going just in case the user didn't refer to - # lt_preloaded_symbols. The linker will fail if global_symbol_pipe - # really was required. - - # Nullify the symbol file. - compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` - finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` - fi -} - -# func_win32_libid arg -# return the library type of file 'arg' -# -# Need a lot of goo to handle *both* DLLs and import libs -# Has to be a shell function in order to 'eat' the argument -# that is supplied when $file_magic_command is called. -# Despite the name, also deal with 64 bit binaries. -func_win32_libid () -{ - $opt_debug - win32_libid_type="unknown" - win32_fileres=`file -L $1 2>/dev/null` - case $win32_fileres in - *ar\ archive\ import\ library*) # definitely import - win32_libid_type="x86 archive import" - ;; - *ar\ archive*) # could be an import, or static - # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. - if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | - $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then - func_to_tool_file "$1" func_convert_file_msys_to_w32 - win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | - $SED -n -e ' - 1,100{ - / I /{ - s,.*,import, - p - q - } - }'` - case $win32_nmres in - import*) win32_libid_type="x86 archive import";; - *) win32_libid_type="x86 archive static";; - esac - fi - ;; - *DLL*) - win32_libid_type="x86 DLL" - ;; - *executable*) # but shell scripts are "executable" too... - case $win32_fileres in - *MS\ Windows\ PE\ Intel*) - win32_libid_type="x86 DLL" - ;; - esac - ;; - esac - $ECHO "$win32_libid_type" -} - -# func_cygming_dll_for_implib ARG -# -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib () -{ - $opt_debug - sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` -} - -# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs -# -# The is the core of a fallback implementation of a -# platform-specific function to extract the name of the -# DLL associated with the specified import library LIBNAME. -# -# SECTION_NAME is either .idata$6 or .idata$7, depending -# on the platform and compiler that created the implib. -# -# Echos the name of the DLL associated with the -# specified import library. -func_cygming_dll_for_implib_fallback_core () -{ - $opt_debug - match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` - $OBJDUMP -s --section "$1" "$2" 2>/dev/null | - $SED '/^Contents of section '"$match_literal"':/{ - # Place marker at beginning of archive member dllname section - s/.*/====MARK====/ - p - d - } - # These lines can sometimes be longer than 43 characters, but - # are always uninteresting - /:[ ]*file format pe[i]\{,1\}-/d - /^In archive [^:]*:/d - # Ensure marker is printed - /^====MARK====/p - # Remove all lines with less than 43 characters - /^.\{43\}/!d - # From remaining lines, remove first 43 characters - s/^.\{43\}//' | - $SED -n ' - # Join marker and all lines until next marker into a single line - /^====MARK====/ b para - H - $ b para - b - :para - x - s/\n//g - # Remove the marker - s/^====MARK====// - # Remove trailing dots and whitespace - s/[\. \t]*$// - # Print - /./p' | - # we now have a list, one entry per line, of the stringified - # contents of the appropriate section of all members of the - # archive which possess that section. Heuristic: eliminate - # all those which have a first or second character that is - # a '.' (that is, objdump's representation of an unprintable - # character.) This should work for all archives with less than - # 0x302f exports -- but will fail for DLLs whose name actually - # begins with a literal '.' or a single character followed by - # a '.'. - # - # Of those that remain, print the first one. - $SED -e '/^\./d;/^.\./d;q' -} - -# func_cygming_gnu_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is a GNU/binutils-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_gnu_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` - test -n "$func_cygming_gnu_implib_tmp" -} - -# func_cygming_ms_implib_p ARG -# This predicate returns with zero status (TRUE) if -# ARG is an MS-style import library. Returns -# with nonzero status (FALSE) otherwise. -func_cygming_ms_implib_p () -{ - $opt_debug - func_to_tool_file "$1" func_convert_file_msys_to_w32 - func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` - test -n "$func_cygming_ms_implib_tmp" -} - -# func_cygming_dll_for_implib_fallback ARG -# Platform-specific function to extract the -# name of the DLL associated with the specified -# import library ARG. -# -# This fallback implementation is for use when $DLLTOOL -# does not support the --identify-strict option. -# Invoked by eval'ing the libtool variable -# $sharedlib_from_linklib_cmd -# Result is available in the variable -# $sharedlib_from_linklib_result -func_cygming_dll_for_implib_fallback () -{ - $opt_debug - if func_cygming_gnu_implib_p "$1" ; then - # binutils import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` - elif func_cygming_ms_implib_p "$1" ; then - # ms-generated import library - sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` - else - # unknown - sharedlib_from_linklib_result="" - fi -} - - -# func_extract_an_archive dir oldlib -func_extract_an_archive () -{ - $opt_debug - f_ex_an_ar_dir="$1"; shift - f_ex_an_ar_oldlib="$1" - if test "$lock_old_archive_extraction" = yes; then - lockfile=$f_ex_an_ar_oldlib.lock - until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do - func_echo "Waiting for $lockfile to be removed" - sleep 2 - done - fi - func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ - 'stat=$?; rm -f "$lockfile"; exit $stat' - if test "$lock_old_archive_extraction" = yes; then - $opt_dry_run || rm -f "$lockfile" - fi - if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then - : - else - func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" - fi -} - - -# func_extract_archives gentop oldlib ... -func_extract_archives () -{ - $opt_debug - my_gentop="$1"; shift - my_oldlibs=${1+"$@"} - my_oldobjs="" - my_xlib="" - my_xabs="" - my_xdir="" - - for my_xlib in $my_oldlibs; do - # Extract the objects. - case $my_xlib in - [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; - *) my_xabs=`pwd`"/$my_xlib" ;; - esac - func_basename "$my_xlib" - my_xlib="$func_basename_result" - my_xlib_u=$my_xlib - while :; do - case " $extracted_archives " in - *" $my_xlib_u "*) - func_arith $extracted_serial + 1 - extracted_serial=$func_arith_result - my_xlib_u=lt$extracted_serial-$my_xlib ;; - *) break ;; - esac - done - extracted_archives="$extracted_archives $my_xlib_u" - my_xdir="$my_gentop/$my_xlib_u" - - func_mkdir_p "$my_xdir" - - case $host in - *-darwin*) - func_verbose "Extracting $my_xabs" - # Do not bother doing anything if just a dry run - $opt_dry_run || { - darwin_orig_dir=`pwd` - cd $my_xdir || exit $? - darwin_archive=$my_xabs - darwin_curdir=`pwd` - darwin_base_archive=`basename "$darwin_archive"` - darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` - if test -n "$darwin_arches"; then - darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` - darwin_arch= - func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" - for darwin_arch in $darwin_arches ; do - func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" - $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" - cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" - func_extract_an_archive "`pwd`" "${darwin_base_archive}" - cd "$darwin_curdir" - $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" - done # $darwin_arches - ## Okay now we've a bunch of thin objects, gotta fatten them up :) - darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` - darwin_file= - darwin_files= - for darwin_file in $darwin_filelist; do - darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` - $LIPO -create -output "$darwin_file" $darwin_files - done # $darwin_filelist - $RM -rf unfat-$$ - cd "$darwin_orig_dir" - else - cd $darwin_orig_dir - func_extract_an_archive "$my_xdir" "$my_xabs" - fi # $darwin_arches - } # !$opt_dry_run - ;; - *) - func_extract_an_archive "$my_xdir" "$my_xabs" - ;; - esac - my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` - done - - func_extract_archives_result="$my_oldobjs" -} - - -# func_emit_wrapper [arg=no] -# -# Emit a libtool wrapper script on stdout. -# Don't directly open a file because we may want to -# incorporate the script contents within a cygwin/mingw -# wrapper executable. Must ONLY be called from within -# func_mode_link because it depends on a number of variables -# set therein. -# -# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR -# variable will take. If 'yes', then the emitted script -# will assume that the directory in which it is stored is -# the $objdir directory. This is a cygwin/mingw-specific -# behavior. -func_emit_wrapper () -{ - func_emit_wrapper_arg1=${1-no} - - $ECHO "\ -#! $SHELL - -# $output - temporary wrapper script for $objdir/$outputname -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# The $output program cannot be directly executed until all the libtool -# libraries that it depends on are installed. -# -# This wrapper script should never be moved out of the build directory. -# If it is, it will not operate correctly. - -# Sed substitution that helps us do robust quoting. It backslashifies -# metacharacters that are still active within double-quoted strings. -sed_quote_subst='$sed_quote_subst' - -# Be Bourne compatible -if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: - # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which - # is contrary to our usage. Disable this feature. - alias -g '\${1+\"\$@\"}'='\"\$@\"' - setopt NO_GLOB_SUBST -else - case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac -fi -BIN_SH=xpg4; export BIN_SH # for Tru64 -DUALCASE=1; export DUALCASE # for MKS sh - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -relink_command=\"$relink_command\" - -# This environment variable determines our operation mode. -if test \"\$libtool_install_magic\" = \"$magic\"; then - # install mode needs the following variables: - generated_by_libtool_version='$macro_version' - notinst_deplibs='$notinst_deplibs' -else - # When we are sourced in execute mode, \$file and \$ECHO are already set. - if test \"\$libtool_execute_magic\" != \"$magic\"; then - file=\"\$0\"" - - qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` - $ECHO "\ - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$1 -_LTECHO_EOF' -} - ECHO=\"$qECHO\" - fi - -# Very basic option parsing. These options are (a) specific to -# the libtool wrapper, (b) are identical between the wrapper -# /script/ and the wrapper /executable/ which is used only on -# windows platforms, and (c) all begin with the string "--lt-" -# (application programs are unlikely to have options which match -# this pattern). -# -# There are only two supported options: --lt-debug and -# --lt-dump-script. There is, deliberately, no --lt-help. -# -# The first argument to this parsing function should be the -# script's $0 value, followed by "$@". -lt_option_debug= -func_parse_lt_options () -{ - lt_script_arg0=\$0 - shift - for lt_opt - do - case \"\$lt_opt\" in - --lt-debug) lt_option_debug=1 ;; - --lt-dump-script) - lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` - test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. - lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` - cat \"\$lt_dump_D/\$lt_dump_F\" - exit 0 - ;; - --lt-*) - \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 - exit 1 - ;; - esac - done - - # Print the debug banner immediately: - if test -n \"\$lt_option_debug\"; then - echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 - fi -} - -# Used when --lt-debug. Prints its arguments to stdout -# (redirection is the responsibility of the caller) -func_lt_dump_args () -{ - lt_dump_args_N=1; - for lt_arg - do - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" - lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` - done -} - -# Core function for launching the target application -func_exec_program_core () -{ -" - case $host in - # Backslashes separate directories on plain windows - *-*-mingw | *-*-os2* | *-cegcc*) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} -" - ;; - - *) - $ECHO "\ - if test -n \"\$lt_option_debug\"; then - \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 - func_lt_dump_args \${1+\"\$@\"} 1>&2 - fi - exec \"\$progdir/\$program\" \${1+\"\$@\"} -" - ;; - esac - $ECHO "\ - \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 - exit 1 -} - -# A function to encapsulate launching the target application -# Strips options in the --lt-* namespace from \$@ and -# launches target application with the remaining arguments. -func_exec_program () -{ - for lt_wr_arg - do - case \$lt_wr_arg in - --lt-*) ;; - *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; - esac - shift - done - func_exec_program_core \${1+\"\$@\"} -} - - # Parse options - func_parse_lt_options \"\$0\" \${1+\"\$@\"} - - # Find the directory that this script lives in. - thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` - test \"x\$thisdir\" = \"x\$file\" && thisdir=. - - # Follow symbolic links until we get to the real thisdir. - file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` - while test -n \"\$file\"; do - destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` - - # If there was a directory component, then change thisdir. - if test \"x\$destdir\" != \"x\$file\"; then - case \"\$destdir\" in - [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; - *) thisdir=\"\$thisdir/\$destdir\" ;; - esac - fi - - file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` - file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` - done - - # Usually 'no', except on cygwin/mingw when embedded into - # the cwrapper. - WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 - if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then - # special case for '.' - if test \"\$thisdir\" = \".\"; then - thisdir=\`pwd\` - fi - # remove .libs from thisdir - case \"\$thisdir\" in - *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; - $objdir ) thisdir=. ;; - esac - fi - - # Try to get the absolute directory name. - absdir=\`cd \"\$thisdir\" && pwd\` - test -n \"\$absdir\" && thisdir=\"\$absdir\" -" - - if test "$fast_install" = yes; then - $ECHO "\ - program=lt-'$outputname'$exeext - progdir=\"\$thisdir/$objdir\" - - if test ! -f \"\$progdir/\$program\" || - { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ - test \"X\$file\" != \"X\$progdir/\$program\"; }; then - - file=\"\$\$-\$program\" - - if test ! -d \"\$progdir\"; then - $MKDIR \"\$progdir\" - else - $RM \"\$progdir/\$file\" - fi" - - $ECHO "\ - - # relink executable if necessary - if test -n \"\$relink_command\"; then - if relink_command_output=\`eval \$relink_command 2>&1\`; then : - else - $ECHO \"\$relink_command_output\" >&2 - $RM \"\$progdir/\$file\" - exit 1 - fi - fi - - $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || - { $RM \"\$progdir/\$program\"; - $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } - $RM \"\$progdir/\$file\" - fi" - else - $ECHO "\ - program='$outputname' - progdir=\"\$thisdir/$objdir\" -" - fi - - $ECHO "\ - - if test -f \"\$progdir/\$program\"; then" - - # fixup the dll searchpath if we need to. - # - # Fix the DLL searchpath if we need to. Do this before prepending - # to shlibpath, because on Windows, both are PATH and uninstalled - # libraries must come first. - if test -n "$dllsearchpath"; then - $ECHO "\ - # Add the dll search path components to the executable PATH - PATH=$dllsearchpath:\$PATH -" - fi - - # Export our shlibpath_var if we have one. - if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then - $ECHO "\ - # Add our own library path to $shlibpath_var - $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" - - # Some systems cannot cope with colon-terminated $shlibpath_var - # The second colon is a workaround for a bug in BeOS R4 sed - $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` - - export $shlibpath_var -" - fi - - $ECHO "\ - if test \"\$libtool_execute_magic\" != \"$magic\"; then - # Run the actual program with our arguments. - func_exec_program \${1+\"\$@\"} - fi - else - # The program doesn't exist. - \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 - \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 - \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 - exit 1 - fi -fi\ -" -} - - -# func_emit_cwrapperexe_src -# emit the source code for a wrapper executable on stdout -# Must ONLY be called from within func_mode_link because -# it depends on a number of variable set therein. -func_emit_cwrapperexe_src () -{ - cat < -#include -#ifdef _MSC_VER -# include -# include -# include -#else -# include -# include -# ifdef __CYGWIN__ -# include -# endif -#endif -#include -#include -#include -#include -#include -#include -#include -#include - -/* declarations of non-ANSI functions */ -#if defined(__MINGW32__) -# ifdef __STRICT_ANSI__ -int _putenv (const char *); -# endif -#elif defined(__CYGWIN__) -# ifdef __STRICT_ANSI__ -char *realpath (const char *, char *); -int putenv (char *); -int setenv (const char *, const char *, int); -# endif -/* #elif defined (other platforms) ... */ -#endif - -/* portability defines, excluding path handling macros */ -#if defined(_MSC_VER) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -# define S_IXUSR _S_IEXEC -# ifndef _INTPTR_T_DEFINED -# define _INTPTR_T_DEFINED -# define intptr_t int -# endif -#elif defined(__MINGW32__) -# define setmode _setmode -# define stat _stat -# define chmod _chmod -# define getcwd _getcwd -# define putenv _putenv -#elif defined(__CYGWIN__) -# define HAVE_SETENV -# define FOPEN_WB "wb" -/* #elif defined (other platforms) ... */ -#endif - -#if defined(PATH_MAX) -# define LT_PATHMAX PATH_MAX -#elif defined(MAXPATHLEN) -# define LT_PATHMAX MAXPATHLEN -#else -# define LT_PATHMAX 1024 -#endif - -#ifndef S_IXOTH -# define S_IXOTH 0 -#endif -#ifndef S_IXGRP -# define S_IXGRP 0 -#endif - -/* path handling portability macros */ -#ifndef DIR_SEPARATOR -# define DIR_SEPARATOR '/' -# define PATH_SEPARATOR ':' -#endif - -#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ - defined (__OS2__) -# define HAVE_DOS_BASED_FILE_SYSTEM -# define FOPEN_WB "wb" -# ifndef DIR_SEPARATOR_2 -# define DIR_SEPARATOR_2 '\\' -# endif -# ifndef PATH_SEPARATOR_2 -# define PATH_SEPARATOR_2 ';' -# endif -#endif - -#ifndef DIR_SEPARATOR_2 -# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) -#else /* DIR_SEPARATOR_2 */ -# define IS_DIR_SEPARATOR(ch) \ - (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) -#endif /* DIR_SEPARATOR_2 */ - -#ifndef PATH_SEPARATOR_2 -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) -#else /* PATH_SEPARATOR_2 */ -# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) -#endif /* PATH_SEPARATOR_2 */ - -#ifndef FOPEN_WB -# define FOPEN_WB "w" -#endif -#ifndef _O_BINARY -# define _O_BINARY 0 -#endif - -#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) -#define XFREE(stale) do { \ - if (stale) { free ((void *) stale); stale = 0; } \ -} while (0) - -#if defined(LT_DEBUGWRAPPER) -static int lt_debug = 1; -#else -static int lt_debug = 0; -#endif - -const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ - -void *xmalloc (size_t num); -char *xstrdup (const char *string); -const char *base_name (const char *name); -char *find_executable (const char *wrapper); -char *chase_symlinks (const char *pathspec); -int make_executable (const char *path); -int check_executable (const char *path); -char *strendzap (char *str, const char *pat); -void lt_debugprintf (const char *file, int line, const char *fmt, ...); -void lt_fatal (const char *file, int line, const char *message, ...); -static const char *nonnull (const char *s); -static const char *nonempty (const char *s); -void lt_setenv (const char *name, const char *value); -char *lt_extend_str (const char *orig_value, const char *add, int to_end); -void lt_update_exe_path (const char *name, const char *value); -void lt_update_lib_path (const char *name, const char *value); -char **prepare_spawn (char **argv); -void lt_dump_script (FILE *f); -EOF - - cat <= 0) - && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) - return 1; - else - return 0; -} - -int -make_executable (const char *path) -{ - int rval = 0; - struct stat st; - - lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", - nonempty (path)); - if ((!path) || (!*path)) - return 0; - - if (stat (path, &st) >= 0) - { - rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); - } - return rval; -} - -/* Searches for the full path of the wrapper. Returns - newly allocated full path name if found, NULL otherwise - Does not chase symlinks, even on platforms that support them. -*/ -char * -find_executable (const char *wrapper) -{ - int has_slash = 0; - const char *p; - const char *p_next; - /* static buffer for getcwd */ - char tmp[LT_PATHMAX + 1]; - int tmp_len; - char *concat_name; - - lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", - nonempty (wrapper)); - - if ((wrapper == NULL) || (*wrapper == '\0')) - return NULL; - - /* Absolute path? */ -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - else - { -#endif - if (IS_DIR_SEPARATOR (wrapper[0])) - { - concat_name = xstrdup (wrapper); - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } -#if defined (HAVE_DOS_BASED_FILE_SYSTEM) - } -#endif - - for (p = wrapper; *p; p++) - if (*p == '/') - { - has_slash = 1; - break; - } - if (!has_slash) - { - /* no slashes; search PATH */ - const char *path = getenv ("PATH"); - if (path != NULL) - { - for (p = path; *p; p = p_next) - { - const char *q; - size_t p_len; - for (q = p; *q; q++) - if (IS_PATH_SEPARATOR (*q)) - break; - p_len = q - p; - p_next = (*q == '\0' ? q : q + 1); - if (p_len == 0) - { - /* empty path: current directory */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = - XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - } - else - { - concat_name = - XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, p, p_len); - concat_name[p_len] = '/'; - strcpy (concat_name + p_len + 1, wrapper); - } - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - } - } - /* not found in PATH; assume curdir */ - } - /* Relative path | not found in path: prepend cwd */ - if (getcwd (tmp, LT_PATHMAX) == NULL) - lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", - nonnull (strerror (errno))); - tmp_len = strlen (tmp); - concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); - memcpy (concat_name, tmp, tmp_len); - concat_name[tmp_len] = '/'; - strcpy (concat_name + tmp_len + 1, wrapper); - - if (check_executable (concat_name)) - return concat_name; - XFREE (concat_name); - return NULL; -} - -char * -chase_symlinks (const char *pathspec) -{ -#ifndef S_ISLNK - return xstrdup (pathspec); -#else - char buf[LT_PATHMAX]; - struct stat s; - char *tmp_pathspec = xstrdup (pathspec); - char *p; - int has_symlinks = 0; - while (strlen (tmp_pathspec) && !has_symlinks) - { - lt_debugprintf (__FILE__, __LINE__, - "checking path component for symlinks: %s\n", - tmp_pathspec); - if (lstat (tmp_pathspec, &s) == 0) - { - if (S_ISLNK (s.st_mode) != 0) - { - has_symlinks = 1; - break; - } - - /* search backwards for last DIR_SEPARATOR */ - p = tmp_pathspec + strlen (tmp_pathspec) - 1; - while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - p--; - if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) - { - /* no more DIR_SEPARATORS left */ - break; - } - *p = '\0'; - } - else - { - lt_fatal (__FILE__, __LINE__, - "error accessing file \"%s\": %s", - tmp_pathspec, nonnull (strerror (errno))); - } - } - XFREE (tmp_pathspec); - - if (!has_symlinks) - { - return xstrdup (pathspec); - } - - tmp_pathspec = realpath (pathspec, buf); - if (tmp_pathspec == 0) - { - lt_fatal (__FILE__, __LINE__, - "could not follow symlinks for %s", pathspec); - } - return xstrdup (tmp_pathspec); -#endif -} - -char * -strendzap (char *str, const char *pat) -{ - size_t len, patlen; - - assert (str != NULL); - assert (pat != NULL); - - len = strlen (str); - patlen = strlen (pat); - - if (patlen <= len) - { - str += len - patlen; - if (strcmp (str, pat) == 0) - *str = '\0'; - } - return str; -} - -void -lt_debugprintf (const char *file, int line, const char *fmt, ...) -{ - va_list args; - if (lt_debug) - { - (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); - va_start (args, fmt); - (void) vfprintf (stderr, fmt, args); - va_end (args); - } -} - -static void -lt_error_core (int exit_status, const char *file, - int line, const char *mode, - const char *message, va_list ap) -{ - fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); - vfprintf (stderr, message, ap); - fprintf (stderr, ".\n"); - - if (exit_status >= 0) - exit (exit_status); -} - -void -lt_fatal (const char *file, int line, const char *message, ...) -{ - va_list ap; - va_start (ap, message); - lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); - va_end (ap); -} - -static const char * -nonnull (const char *s) -{ - return s ? s : "(null)"; -} - -static const char * -nonempty (const char *s) -{ - return (s && !*s) ? "(empty)" : nonnull (s); -} - -void -lt_setenv (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_setenv) setting '%s' to '%s'\n", - nonnull (name), nonnull (value)); - { -#ifdef HAVE_SETENV - /* always make a copy, for consistency with !HAVE_SETENV */ - char *str = xstrdup (value); - setenv (name, str, 1); -#else - int len = strlen (name) + 1 + strlen (value) + 1; - char *str = XMALLOC (char, len); - sprintf (str, "%s=%s", name, value); - if (putenv (str) != EXIT_SUCCESS) - { - XFREE (str); - } -#endif - } -} - -char * -lt_extend_str (const char *orig_value, const char *add, int to_end) -{ - char *new_value; - if (orig_value && *orig_value) - { - int orig_value_len = strlen (orig_value); - int add_len = strlen (add); - new_value = XMALLOC (char, add_len + orig_value_len + 1); - if (to_end) - { - strcpy (new_value, orig_value); - strcpy (new_value + orig_value_len, add); - } - else - { - strcpy (new_value, add); - strcpy (new_value + add_len, orig_value); - } - } - else - { - new_value = xstrdup (add); - } - return new_value; -} - -void -lt_update_exe_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - /* some systems can't cope with a ':'-terminated path #' */ - int len = strlen (new_value); - while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) - { - new_value[len-1] = '\0'; - } - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -void -lt_update_lib_path (const char *name, const char *value) -{ - lt_debugprintf (__FILE__, __LINE__, - "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", - nonnull (name), nonnull (value)); - - if (name && *name && value && *value) - { - char *new_value = lt_extend_str (getenv (name), value, 0); - lt_setenv (name, new_value); - XFREE (new_value); - } -} - -EOF - case $host_os in - mingw*) - cat <<"EOF" - -/* Prepares an argument vector before calling spawn(). - Note that spawn() does not by itself call the command interpreter - (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : - ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); - GetVersionEx(&v); - v.dwPlatformId == VER_PLATFORM_WIN32_NT; - }) ? "cmd.exe" : "command.com"). - Instead it simply concatenates the arguments, separated by ' ', and calls - CreateProcess(). We must quote the arguments since Win32 CreateProcess() - interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a - special way: - - Space and tab are interpreted as delimiters. They are not treated as - delimiters if they are surrounded by double quotes: "...". - - Unescaped double quotes are removed from the input. Their only effect is - that within double quotes, space and tab are treated like normal - characters. - - Backslashes not followed by double quotes are not special. - - But 2*n+1 backslashes followed by a double quote become - n backslashes followed by a double quote (n >= 0): - \" -> " - \\\" -> \" - \\\\\" -> \\" - */ -#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" -char ** -prepare_spawn (char **argv) -{ - size_t argc; - char **new_argv; - size_t i; - - /* Count number of arguments. */ - for (argc = 0; argv[argc] != NULL; argc++) - ; - - /* Allocate new argument vector. */ - new_argv = XMALLOC (char *, argc + 1); - - /* Put quoted arguments into the new argument vector. */ - for (i = 0; i < argc; i++) - { - const char *string = argv[i]; - - if (string[0] == '\0') - new_argv[i] = xstrdup ("\"\""); - else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) - { - int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); - size_t length; - unsigned int backslashes; - const char *s; - char *quoted_string; - char *p; - - length = 0; - backslashes = 0; - if (quote_around) - length++; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - length += backslashes + 1; - length++; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - length += backslashes + 1; - - quoted_string = XMALLOC (char, length + 1); - - p = quoted_string; - backslashes = 0; - if (quote_around) - *p++ = '"'; - for (s = string; *s != '\0'; s++) - { - char c = *s; - if (c == '"') - { - unsigned int j; - for (j = backslashes + 1; j > 0; j--) - *p++ = '\\'; - } - *p++ = c; - if (c == '\\') - backslashes++; - else - backslashes = 0; - } - if (quote_around) - { - unsigned int j; - for (j = backslashes; j > 0; j--) - *p++ = '\\'; - *p++ = '"'; - } - *p = '\0'; - - new_argv[i] = quoted_string; - } - else - new_argv[i] = (char *) string; - } - new_argv[argc] = NULL; - - return new_argv; -} -EOF - ;; - esac - - cat <<"EOF" -void lt_dump_script (FILE* f) -{ -EOF - func_emit_wrapper yes | - $SED -e 's/\([\\"]\)/\\\1/g' \ - -e 's/^/ fputs ("/' -e 's/$/\\n", f);/' - - cat <<"EOF" -} -EOF -} -# end: func_emit_cwrapperexe_src - -# func_win32_import_lib_p ARG -# True if ARG is an import lib, as indicated by $file_magic_cmd -func_win32_import_lib_p () -{ - $opt_debug - case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in - *import*) : ;; - *) false ;; - esac -} - -# func_mode_link arg... -func_mode_link () -{ - $opt_debug - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - # It is impossible to link a dll without this setting, and - # we shouldn't force the makefile maintainer to figure out - # which system we are compiling for in order to pass an extra - # flag for every libtool invocation. - # allow_undefined=no - - # FIXME: Unfortunately, there are problems with the above when trying - # to make a dll which has undefined symbols, in which case not - # even a static library is built. For now, we need to specify - # -no-undefined on the libtool link line when we can be certain - # that all symbols are satisfied, otherwise we get a static library. - allow_undefined=yes - ;; - *) - allow_undefined=yes - ;; - esac - libtool_args=$nonopt - base_compile="$nonopt $@" - compile_command=$nonopt - finalize_command=$nonopt - - compile_rpath= - finalize_rpath= - compile_shlibpath= - finalize_shlibpath= - convenience= - old_convenience= - deplibs= - old_deplibs= - compiler_flags= - linker_flags= - dllsearchpath= - lib_search_path=`pwd` - inst_prefix_dir= - new_inherited_linker_flags= - - avoid_version=no - bindir= - dlfiles= - dlprefiles= - dlself=no - export_dynamic=no - export_symbols= - export_symbols_regex= - generated= - libobjs= - ltlibs= - module=no - no_install=no - objs= - non_pic_objects= - precious_files_regex= - prefer_static_libs=no - preload=no - prev= - prevarg= - release= - rpath= - xrpath= - perm_rpath= - temp_rpath= - thread_safe=no - vinfo= - vinfo_number=no - weak_libs= - single_module="${wl}-single_module" - func_infer_tag $base_compile - - # We need to know -static, to get the right output filenames. - for arg - do - case $arg in - -shared) - test "$build_libtool_libs" != yes && \ - func_fatal_configuration "can not build a shared library" - build_old_libs=no - break - ;; - -all-static | -static | -static-libtool-libs) - case $arg in - -all-static) - if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then - func_warning "complete static linking is impossible in this configuration" - fi - if test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - -static) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=built - ;; - -static-libtool-libs) - if test -z "$pic_flag" && test -n "$link_static_flag"; then - dlopen_self=$dlopen_self_static - fi - prefer_static_libs=yes - ;; - esac - build_libtool_libs=no - build_old_libs=yes - break - ;; - esac - done - - # See if our shared archives depend on static archives. - test -n "$old_archive_from_new_cmds" && build_old_libs=yes - - # Go through the arguments, transforming them on the way. - while test "$#" -gt 0; do - arg="$1" - shift - func_quote_for_eval "$arg" - qarg=$func_quote_for_eval_unquoted_result - func_append libtool_args " $func_quote_for_eval_result" - - # If the previous option needs an argument, assign it. - if test -n "$prev"; then - case $prev in - output) - func_append compile_command " @OUTPUT@" - func_append finalize_command " @OUTPUT@" - ;; - esac - - case $prev in - bindir) - bindir="$arg" - prev= - continue - ;; - dlfiles|dlprefiles) - if test "$preload" = no; then - # Add the symbol object into the linking commands. - func_append compile_command " @SYMFILE@" - func_append finalize_command " @SYMFILE@" - preload=yes - fi - case $arg in - *.la | *.lo) ;; # We handle these cases below. - force) - if test "$dlself" = no; then - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - self) - if test "$prev" = dlprefiles; then - dlself=yes - elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then - dlself=yes - else - dlself=needless - export_dynamic=yes - fi - prev= - continue - ;; - *) - if test "$prev" = dlfiles; then - func_append dlfiles " $arg" - else - func_append dlprefiles " $arg" - fi - prev= - continue - ;; - esac - ;; - expsyms) - export_symbols="$arg" - test -f "$arg" \ - || func_fatal_error "symbol file \`$arg' does not exist" - prev= - continue - ;; - expsyms_regex) - export_symbols_regex="$arg" - prev= - continue - ;; - framework) - case $host in - *-*-darwin*) - case "$deplibs " in - *" $qarg.ltframework "*) ;; - *) func_append deplibs " $qarg.ltframework" # this is fixed later - ;; - esac - ;; - esac - prev= - continue - ;; - inst_prefix) - inst_prefix_dir="$arg" - prev= - continue - ;; - objectlist) - if test -f "$arg"; then - save_arg=$arg - moreargs= - for fil in `cat "$save_arg"` - do -# func_append moreargs " $fil" - arg=$fil - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - done - else - func_fatal_error "link input file \`$arg' does not exist" - fi - arg=$save_arg - prev= - continue - ;; - precious_regex) - precious_files_regex="$arg" - prev= - continue - ;; - release) - release="-$arg" - prev= - continue - ;; - rpath | xrpath) - # We need an absolute path. - case $arg in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - if test "$prev" = rpath; then - case "$rpath " in - *" $arg "*) ;; - *) func_append rpath " $arg" ;; - esac - else - case "$xrpath " in - *" $arg "*) ;; - *) func_append xrpath " $arg" ;; - esac - fi - prev= - continue - ;; - shrext) - shrext_cmds="$arg" - prev= - continue - ;; - weak) - func_append weak_libs " $arg" - prev= - continue - ;; - xcclinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xcompiler) - func_append compiler_flags " $qarg" - prev= - func_append compile_command " $qarg" - func_append finalize_command " $qarg" - continue - ;; - xlinker) - func_append linker_flags " $qarg" - func_append compiler_flags " $wl$qarg" - prev= - func_append compile_command " $wl$qarg" - func_append finalize_command " $wl$qarg" - continue - ;; - *) - eval "$prev=\"\$arg\"" - prev= - continue - ;; - esac - fi # test -n "$prev" - - prevarg="$arg" - - case $arg in - -all-static) - if test -n "$link_static_flag"; then - # See comment for -static flag below, for more details. - func_append compile_command " $link_static_flag" - func_append finalize_command " $link_static_flag" - fi - continue - ;; - - -allow-undefined) - # FIXME: remove this flag sometime in the future. - func_fatal_error "\`-allow-undefined' must not be used because it is the default" - ;; - - -avoid-version) - avoid_version=yes - continue - ;; - - -bindir) - prev=bindir - continue - ;; - - -dlopen) - prev=dlfiles - continue - ;; - - -dlpreopen) - prev=dlprefiles - continue - ;; - - -export-dynamic) - export_dynamic=yes - continue - ;; - - -export-symbols | -export-symbols-regex) - if test -n "$export_symbols" || test -n "$export_symbols_regex"; then - func_fatal_error "more than one -exported-symbols argument is not allowed" - fi - if test "X$arg" = "X-export-symbols"; then - prev=expsyms - else - prev=expsyms_regex - fi - continue - ;; - - -framework) - prev=framework - continue - ;; - - -inst-prefix-dir) - prev=inst_prefix - continue - ;; - - # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* - # so, if we see these flags be careful not to treat them like -L - -L[A-Z][A-Z]*:*) - case $with_gcc/$host in - no/*-*-irix* | /*-*-irix*) - func_append compile_command " $arg" - func_append finalize_command " $arg" - ;; - esac - continue - ;; - - -L*) - func_stripname "-L" '' "$arg" - if test -z "$func_stripname_result"; then - if test "$#" -gt 0; then - func_fatal_error "require no space between \`-L' and \`$1'" - else - func_fatal_error "need path for \`-L' option" - fi - fi - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - *) - absdir=`cd "$dir" && pwd` - test -z "$absdir" && \ - func_fatal_error "cannot determine absolute directory name of \`$dir'" - dir="$absdir" - ;; - esac - case "$deplibs " in - *" -L$dir "* | *" $arg "*) - # Will only happen for absolute or sysroot arguments - ;; - *) - # Preserve sysroot, but never include relative directories - case $dir in - [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; - *) func_append deplibs " -L$dir" ;; - esac - func_append lib_search_path " $dir" - ;; - esac - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$dir:"*) ;; - ::) dllsearchpath=$dir;; - *) func_append dllsearchpath ":$dir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - continue - ;; - - -l*) - if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) - # These systems don't actually have a C or math library (as such) - continue - ;; - *-*-os2*) - # These systems don't actually have a C library (as such) - test "X$arg" = "X-lc" && continue - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - test "X$arg" = "X-lc" && continue - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C and math libraries are in the System framework - func_append deplibs " System.ltframework" - continue - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - test "X$arg" = "X-lc" && continue - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - test "X$arg" = "X-lc" && continue - ;; - esac - elif test "X$arg" = "X-lc_r"; then - case $host in - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc_r directly, use -pthread flag. - continue - ;; - esac - fi - func_append deplibs " $arg" - continue - ;; - - -module) - module=yes - continue - ;; - - # Tru64 UNIX uses -model [arg] to determine the layout of C++ - # classes, name mangling, and exception handling. - # Darwin uses the -arch flag to determine output architecture. - -model|-arch|-isysroot|--sysroot) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - prev=xcompiler - continue - ;; - - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - func_append compiler_flags " $arg" - func_append compile_command " $arg" - func_append finalize_command " $arg" - case "$new_inherited_linker_flags " in - *" $arg "*) ;; - * ) func_append new_inherited_linker_flags " $arg" ;; - esac - continue - ;; - - -multi_module) - single_module="${wl}-multi_module" - continue - ;; - - -no-fast-install) - fast_install=no - continue - ;; - - -no-install) - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) - # The PATH hackery in wrapper scripts is required on Windows - # and Darwin in order for the loader to find any dlls it needs. - func_warning "\`-no-install' is ignored for $host" - func_warning "assuming \`-no-fast-install' instead" - fast_install=no - ;; - *) no_install=yes ;; - esac - continue - ;; - - -no-undefined) - allow_undefined=no - continue - ;; - - -objectlist) - prev=objectlist - continue - ;; - - -o) prev=output ;; - - -precious-files-regex) - prev=precious_regex - continue - ;; - - -release) - prev=release - continue - ;; - - -rpath) - prev=rpath - continue - ;; - - -R) - prev=xrpath - continue - ;; - - -R*) - func_stripname '-R' '' "$arg" - dir=$func_stripname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) ;; - =*) - func_stripname '=' '' "$dir" - dir=$lt_sysroot$func_stripname_result - ;; - *) - func_fatal_error "only absolute run-paths are allowed" - ;; - esac - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - continue - ;; - - -shared) - # The effects of -shared are defined in a previous loop. - continue - ;; - - -shrext) - prev=shrext - continue - ;; - - -static | -static-libtool-libs) - # The effects of -static are defined in a previous loop. - # We used to do the same as -all-static on platforms that - # didn't have a PIC flag, but the assumption that the effects - # would be equivalent was wrong. It would break on at least - # Digital Unix and AIX. - continue - ;; - - -thread-safe) - thread_safe=yes - continue - ;; - - -version-info) - prev=vinfo - continue - ;; - - -version-number) - prev=vinfo - vinfo_number=yes - continue - ;; - - -weak) - prev=weak - continue - ;; - - -Wc,*) - func_stripname '-Wc,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $func_quote_for_eval_result" - func_append compiler_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Wl,*) - func_stripname '-Wl,' '' "$arg" - args=$func_stripname_result - arg= - save_ifs="$IFS"; IFS=',' - for flag in $args; do - IFS="$save_ifs" - func_quote_for_eval "$flag" - func_append arg " $wl$func_quote_for_eval_result" - func_append compiler_flags " $wl$func_quote_for_eval_result" - func_append linker_flags " $func_quote_for_eval_result" - done - IFS="$save_ifs" - func_stripname ' ' '' "$arg" - arg=$func_stripname_result - ;; - - -Xcompiler) - prev=xcompiler - continue - ;; - - -Xlinker) - prev=xlinker - continue - ;; - - -XCClinker) - prev=xcclinker - continue - ;; - - # -msg_* for osf cc - -msg_*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - # Flags to be passed through unchanged, with rationale: - # -64, -mips[0-9] enable 64-bit mode for the SGI compiler - # -r[0-9][0-9]* specify processor for the SGI compiler - # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler - # +DA*, +DD* enable 64-bit mode for the HP compiler - # -q* compiler args for the IBM compiler - # -m*, -t[45]*, -txscale* architecture-specific flags for GCC - # -F/path path to uninstalled frameworks, gcc on darwin - # -p, -pg, --coverage, -fprofile-* profiling flags for GCC - # @file GCC response files - # -tp=* Portland pgcc target processor selection - # --sysroot=* for sysroot support - # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization - -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ - -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ - -O*|-flto*|-fwhopr*|-fuse-linker-plugin) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - func_append compile_command " $arg" - func_append finalize_command " $arg" - func_append compiler_flags " $arg" - continue - ;; - - # Some other compiler flag. - -* | +*) - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - - *.$objext) - # A standard object. - func_append objs " $arg" - ;; - - *.lo) - # A libtool-controlled object. - - # Check to see that this really is a libtool object. - if func_lalib_unsafe_p "$arg"; then - pic_object= - non_pic_object= - - # Read the .lo file - func_source "$arg" - - if test -z "$pic_object" || - test -z "$non_pic_object" || - test "$pic_object" = none && - test "$non_pic_object" = none; then - func_fatal_error "cannot find name of object for \`$arg'" - fi - - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - if test "$pic_object" != none; then - # Prepend the subdirectory the object is found in. - pic_object="$xdir$pic_object" - - if test "$prev" = dlfiles; then - if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then - func_append dlfiles " $pic_object" - prev= - continue - else - # If libtool objects are unsupported, then we need to preload. - prev=dlprefiles - fi - fi - - # CHECK ME: I think I busted this. -Ossama - if test "$prev" = dlprefiles; then - # Preload the old-style object. - func_append dlprefiles " $pic_object" - prev= - fi - - # A PIC object. - func_append libobjs " $pic_object" - arg="$pic_object" - fi - - # Non-PIC object. - if test "$non_pic_object" != none; then - # Prepend the subdirectory the object is found in. - non_pic_object="$xdir$non_pic_object" - - # A standard non-PIC object - func_append non_pic_objects " $non_pic_object" - if test -z "$pic_object" || test "$pic_object" = none ; then - arg="$non_pic_object" - fi - else - # If the PIC object exists, use it instead. - # $xdir was prepended to $pic_object above. - non_pic_object="$pic_object" - func_append non_pic_objects " $non_pic_object" - fi - else - # Only an error if not doing a dry-run. - if $opt_dry_run; then - # Extract subdirectory from the argument. - func_dirname "$arg" "/" "" - xdir="$func_dirname_result" - - func_lo2o "$arg" - pic_object=$xdir$objdir/$func_lo2o_result - non_pic_object=$xdir$func_lo2o_result - func_append libobjs " $pic_object" - func_append non_pic_objects " $non_pic_object" - else - func_fatal_error "\`$arg' is not a valid libtool object" - fi - fi - ;; - - *.$libext) - # An archive. - func_append deplibs " $arg" - func_append old_deplibs " $arg" - continue - ;; - - *.la) - # A libtool-controlled library. - - func_resolve_sysroot "$arg" - if test "$prev" = dlfiles; then - # This library was specified with -dlopen. - func_append dlfiles " $func_resolve_sysroot_result" - prev= - elif test "$prev" = dlprefiles; then - # The library was specified with -dlpreopen. - func_append dlprefiles " $func_resolve_sysroot_result" - prev= - else - func_append deplibs " $func_resolve_sysroot_result" - fi - continue - ;; - - # Some other compiler argument. - *) - # Unknown arguments in both finalize_command and compile_command need - # to be aesthetically quoted because they are evaled later. - func_quote_for_eval "$arg" - arg="$func_quote_for_eval_result" - ;; - esac # arg - - # Now actually substitute the argument into the commands. - if test -n "$arg"; then - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - done # argument parsing loop - - test -n "$prev" && \ - func_fatal_help "the \`$prevarg' option requires an argument" - - if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then - eval arg=\"$export_dynamic_flag_spec\" - func_append compile_command " $arg" - func_append finalize_command " $arg" - fi - - oldlibs= - # calculate the name of the file, without its directory - func_basename "$output" - outputname="$func_basename_result" - libobjs_save="$libobjs" - - if test -n "$shlibpath_var"; then - # get the directories listed in $shlibpath_var - eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` - else - shlib_search_path= - fi - eval sys_lib_search_path=\"$sys_lib_search_path_spec\" - eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" - - func_dirname "$output" "/" "" - output_objdir="$func_dirname_result$objdir" - func_to_tool_file "$output_objdir/" - tool_output_objdir=$func_to_tool_file_result - # Create the object directory. - func_mkdir_p "$output_objdir" - - # Determine the type of output - case $output in - "") - func_fatal_help "you must specify an output file" - ;; - *.$libext) linkmode=oldlib ;; - *.lo | *.$objext) linkmode=obj ;; - *.la) linkmode=lib ;; - *) linkmode=prog ;; # Anything else should be a program. - esac - - specialdeplibs= - - libs= - # Find all interdependent deplibs by searching for libraries - # that are linked more than once (e.g. -la -lb -la) - for deplib in $deplibs; do - if $opt_preserve_dup_deps ; then - case "$libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append libs " $deplib" - done - - if test "$linkmode" = lib; then - libs="$predeps $libs $compiler_lib_search_path $postdeps" - - # Compute libraries that are listed more than once in $predeps - # $postdeps and mark them as special (i.e., whose duplicates are - # not to be eliminated). - pre_post_deps= - if $opt_duplicate_compiler_generated_deps; then - for pre_post_dep in $predeps $postdeps; do - case "$pre_post_deps " in - *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; - esac - func_append pre_post_deps " $pre_post_dep" - done - fi - pre_post_deps= - fi - - deplibs= - newdependency_libs= - newlib_search_path= - need_relink=no # whether we're linking any uninstalled libtool libraries - notinst_deplibs= # not-installed libtool libraries - notinst_path= # paths that contain not-installed libtool libraries - - case $linkmode in - lib) - passes="conv dlpreopen link" - for file in $dlfiles $dlprefiles; do - case $file in - *.la) ;; - *) - func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" - ;; - esac - done - ;; - prog) - compile_deplibs= - finalize_deplibs= - alldeplibs=no - newdlfiles= - newdlprefiles= - passes="conv scan dlopen dlpreopen link" - ;; - *) passes="conv" - ;; - esac - - for pass in $passes; do - # The preopen pass in lib mode reverses $deplibs; put it back here - # so that -L comes before libs that need it for instance... - if test "$linkmode,$pass" = "lib,link"; then - ## FIXME: Find the place where the list is rebuilt in the wrong - ## order, and fix it there properly - tmp_deplibs= - for deplib in $deplibs; do - tmp_deplibs="$deplib $tmp_deplibs" - done - deplibs="$tmp_deplibs" - fi - - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan"; then - libs="$deplibs" - deplibs= - fi - if test "$linkmode" = prog; then - case $pass in - dlopen) libs="$dlfiles" ;; - dlpreopen) libs="$dlprefiles" ;; - link) libs="$deplibs %DEPLIBS% $dependency_libs" ;; - esac - fi - if test "$linkmode,$pass" = "lib,dlpreopen"; then - # Collect and forward deplibs of preopened libtool libs - for lib in $dlprefiles; do - # Ignore non-libtool-libs - dependency_libs= - func_resolve_sysroot "$lib" - case $lib in - *.la) func_source "$func_resolve_sysroot_result" ;; - esac - - # Collect preopened libtool deplibs, except any this library - # has declared as weak libs - for deplib in $dependency_libs; do - func_basename "$deplib" - deplib_base=$func_basename_result - case " $weak_libs " in - *" $deplib_base "*) ;; - *) func_append deplibs " $deplib" ;; - esac - done - done - libs="$dlprefiles" - fi - if test "$pass" = dlopen; then - # Collect dlpreopened libraries - save_deplibs="$deplibs" - deplibs= - fi - - for deplib in $libs; do - lib= - found=no - case $deplib in - -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append compiler_flags " $deplib" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -l*) - if test "$linkmode" != lib && test "$linkmode" != prog; then - func_warning "\`-l' is ignored for archives/objects" - continue - fi - func_stripname '-l' '' "$deplib" - name=$func_stripname_result - if test "$linkmode" = lib; then - searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" - else - searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" - fi - for searchdir in $searchdirs; do - for search_ext in .la $std_shrext .so .a; do - # Search the libtool library - lib="$searchdir/lib${name}${search_ext}" - if test -f "$lib"; then - if test "$search_ext" = ".la"; then - found=yes - else - found=no - fi - break 2 - fi - done - done - if test "$found" != yes; then - # deplib doesn't seem to be a libtool library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - else # deplib is a libtool library - # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, - # We need to do some special things here, and not later. - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $deplib "*) - if func_lalib_p "$lib"; then - library_names= - old_library= - func_source "$lib" - for l in $old_library $library_names; do - ll="$l" - done - if test "X$ll" = "X$old_library" ; then # only static version available - found=no - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - lib=$ladir/$old_library - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" - fi - continue - fi - fi - ;; - *) ;; - esac - fi - fi - ;; # -l - *.ltframework) - if test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - deplibs="$deplib $deplibs" - if test "$linkmode" = lib ; then - case "$new_inherited_linker_flags " in - *" $deplib "*) ;; - * ) func_append new_inherited_linker_flags " $deplib" ;; - esac - fi - fi - continue - ;; - -L*) - case $linkmode in - lib) - deplibs="$deplib $deplibs" - test "$pass" = conv && continue - newdependency_libs="$deplib $newdependency_libs" - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - prog) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - if test "$pass" = scan; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - *) - func_warning "\`-L' is ignored for archives/objects" - ;; - esac # linkmode - continue - ;; # -L - -R*) - if test "$pass" = link; then - func_stripname '-R' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - dir=$func_resolve_sysroot_result - # Make sure the xrpath contains only unique directories. - case "$xrpath " in - *" $dir "*) ;; - *) func_append xrpath " $dir" ;; - esac - fi - deplibs="$deplib $deplibs" - continue - ;; - *.la) - func_resolve_sysroot "$deplib" - lib=$func_resolve_sysroot_result - ;; - *.$libext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - continue - fi - case $linkmode in - lib) - # Linking convenience modules into shared libraries is allowed, - # but linking other static libraries is non-portable. - case " $dlpreconveniencelibs " in - *" $deplib "*) ;; - *) - valid_a_lib=no - case $deplibs_check_method in - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ - | $EGREP "$match_pattern_regex" > /dev/null; then - valid_a_lib=yes - fi - ;; - pass_all) - valid_a_lib=yes - ;; - esac - if test "$valid_a_lib" != yes; then - echo - $ECHO "*** Warning: Trying to link with static lib archive $deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because the file extensions .$libext of this argument makes me believe" - echo "*** that it is just a static archive that I should not use here." - else - echo - $ECHO "*** Warning: Linking the shared library $output against the" - $ECHO "*** static library $deplib is not portable!" - deplibs="$deplib $deplibs" - fi - ;; - esac - continue - ;; - prog) - if test "$pass" != link; then - deplibs="$deplib $deplibs" - else - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - fi - continue - ;; - esac # linkmode - ;; # *.$libext - *.lo | *.$objext) - if test "$pass" = conv; then - deplibs="$deplib $deplibs" - elif test "$linkmode" = prog; then - if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then - # If there is no dlopen support or we're linking statically, - # we need to preload. - func_append newdlprefiles " $deplib" - compile_deplibs="$deplib $compile_deplibs" - finalize_deplibs="$deplib $finalize_deplibs" - else - func_append newdlfiles " $deplib" - fi - fi - continue - ;; - %DEPLIBS%) - alldeplibs=yes - continue - ;; - esac # case $deplib - - if test "$found" = yes || test -f "$lib"; then : - else - func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" - fi - - # Check to see that this really is a libtool archive. - func_lalib_unsafe_p "$lib" \ - || func_fatal_error "\`$lib' is not a valid libtool archive" - - func_dirname "$lib" "" "." - ladir="$func_dirname_result" - - dlname= - dlopen= - dlpreopen= - libdir= - library_names= - old_library= - inherited_linker_flags= - # If the library was installed with an old release of libtool, - # it will not redefine variables installed, or shouldnotlink - installed=yes - shouldnotlink=no - avoidtemprpath= - - - # Read the .la file - func_source "$lib" - - # Convert "-framework foo" to "foo.ltframework" - if test -n "$inherited_linker_flags"; then - tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` - for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do - case " $new_inherited_linker_flags " in - *" $tmp_inherited_linker_flag "*) ;; - *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; - esac - done - fi - dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - if test "$linkmode,$pass" = "lib,link" || - test "$linkmode,$pass" = "prog,scan" || - { test "$linkmode" != prog && test "$linkmode" != lib; }; then - test -n "$dlopen" && func_append dlfiles " $dlopen" - test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" - fi - - if test "$pass" = conv; then - # Only check for convenience libraries - deplibs="$lib $deplibs" - if test -z "$libdir"; then - if test -z "$old_library"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - # It is a libtool convenience library, so add in its objects. - func_append convenience " $ladir/$objdir/$old_library" - func_append old_convenience " $ladir/$objdir/$old_library" - elif test "$linkmode" != prog && test "$linkmode" != lib; then - func_fatal_error "\`$lib' is not a convenience library" - fi - tmp_libs= - for deplib in $dependency_libs; do - deplibs="$deplib $deplibs" - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done - continue - fi # $pass = conv - - - # Get the name of the library we link against. - linklib= - if test -n "$old_library" && - { test "$prefer_static_libs" = yes || - test "$prefer_static_libs,$installed" = "built,no"; }; then - linklib=$old_library - else - for l in $old_library $library_names; do - linklib="$l" - done - fi - if test -z "$linklib"; then - func_fatal_error "cannot find name of link library for \`$lib'" - fi - - # This library was specified with -dlopen. - if test "$pass" = dlopen; then - if test -z "$libdir"; then - func_fatal_error "cannot -dlopen a convenience library: \`$lib'" - fi - if test -z "$dlname" || - test "$dlopen_support" != yes || - test "$build_libtool_libs" = no; then - # If there is no dlname, no dlopen support or we're linking - # statically, we need to preload. We also need to preload any - # dependent libraries so libltdl's deplib preloader doesn't - # bomb out in the load deplibs phase. - func_append dlprefiles " $lib $dependency_libs" - else - func_append newdlfiles " $lib" - fi - continue - fi # $pass = dlopen - - # We need an absolute path. - case $ladir in - [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; - *) - abs_ladir=`cd "$ladir" && pwd` - if test -z "$abs_ladir"; then - func_warning "cannot determine absolute directory name of \`$ladir'" - func_warning "passing it literally to the linker, although it might fail" - abs_ladir="$ladir" - fi - ;; - esac - func_basename "$lib" - laname="$func_basename_result" - - # Find the relevant object directory and library name. - if test "X$installed" = Xyes; then - if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then - func_warning "library \`$lib' was moved." - dir="$ladir" - absdir="$abs_ladir" - libdir="$abs_ladir" - else - dir="$lt_sysroot$libdir" - absdir="$lt_sysroot$libdir" - fi - test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes - else - if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then - dir="$ladir" - absdir="$abs_ladir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - else - dir="$ladir/$objdir" - absdir="$abs_ladir/$objdir" - # Remove this search path later - func_append notinst_path " $abs_ladir" - fi - fi # $installed = yes - func_stripname 'lib' '.la' "$laname" - name=$func_stripname_result - - # This library was specified with -dlpreopen. - if test "$pass" = dlpreopen; then - if test -z "$libdir" && test "$linkmode" = prog; then - func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" - fi - case "$host" in - # special handling for platforms with PE-DLLs. - *cygwin* | *mingw* | *cegcc* ) - # Linker will automatically link against shared library if both - # static and shared are present. Therefore, ensure we extract - # symbols from the import library if a shared library is present - # (otherwise, the dlopen module name will be incorrect). We do - # this by putting the import library name into $newdlprefiles. - # We recover the dlopen module name by 'saving' the la file - # name in a special purpose variable, and (later) extracting the - # dlname from the la file. - if test -n "$dlname"; then - func_tr_sh "$dir/$linklib" - eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" - func_append newdlprefiles " $dir/$linklib" - else - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - fi - ;; - * ) - # Prefer using a static library (so that no silly _DYNAMIC symbols - # are required to link). - if test -n "$old_library"; then - func_append newdlprefiles " $dir/$old_library" - # Keep a list of preopened convenience libraries to check - # that they are being used correctly in the link pass. - test -z "$libdir" && \ - func_append dlpreconveniencelibs " $dir/$old_library" - # Otherwise, use the dlname, so that lt_dlopen finds it. - elif test -n "$dlname"; then - func_append newdlprefiles " $dir/$dlname" - else - func_append newdlprefiles " $dir/$linklib" - fi - ;; - esac - fi # $pass = dlpreopen - - if test -z "$libdir"; then - # Link the convenience library - if test "$linkmode" = lib; then - deplibs="$dir/$old_library $deplibs" - elif test "$linkmode,$pass" = "prog,link"; then - compile_deplibs="$dir/$old_library $compile_deplibs" - finalize_deplibs="$dir/$old_library $finalize_deplibs" - else - deplibs="$lib $deplibs" # used for prog,scan pass - fi - continue - fi - - - if test "$linkmode" = prog && test "$pass" != link; then - func_append newlib_search_path " $ladir" - deplibs="$lib $deplibs" - - linkalldeplibs=no - if test "$link_all_deplibs" != no || test -z "$library_names" || - test "$build_libtool_libs" = no; then - linkalldeplibs=yes - fi - - tmp_libs= - for deplib in $dependency_libs; do - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result" - func_append newlib_search_path " $func_resolve_sysroot_result" - ;; - esac - # Need to link against all dependency_libs? - if test "$linkalldeplibs" = yes; then - deplibs="$deplib $deplibs" - else - # Need to hardcode shared library paths - # or/and link against static libraries - newdependency_libs="$deplib $newdependency_libs" - fi - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $deplib "*) func_append specialdeplibs " $deplib" ;; - esac - fi - func_append tmp_libs " $deplib" - done # for deplib - continue - fi # $linkmode = prog... - - if test "$linkmode,$pass" = "prog,link"; then - if test -n "$library_names" && - { { test "$prefer_static_libs" = no || - test "$prefer_static_libs,$installed" = "built,yes"; } || - test -z "$old_library"; }; then - # We need to hardcode the library path - if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then - # Make sure the rpath contains only unique directories. - case "$temp_rpath:" in - *"$absdir:"*) ;; - *) func_append temp_rpath "$absdir:" ;; - esac - fi - - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi # $linkmode,$pass = prog,link... - - if test "$alldeplibs" = yes && - { test "$deplibs_check_method" = pass_all || - { test "$build_libtool_libs" = yes && - test -n "$library_names"; }; }; then - # We only need to search for static libraries - continue - fi - fi - - link_static=no # Whether the deplib will be linked statically - use_static_libs=$prefer_static_libs - if test "$use_static_libs" = built && test "$installed" = yes; then - use_static_libs=no - fi - if test -n "$library_names" && - { test "$use_static_libs" = no || test -z "$old_library"; }; then - case $host in - *cygwin* | *mingw* | *cegcc*) - # No point in relinking DLLs because paths are not encoded - func_append notinst_deplibs " $lib" - need_relink=no - ;; - *) - if test "$installed" = no; then - func_append notinst_deplibs " $lib" - need_relink=yes - fi - ;; - esac - # This is a shared library - - # Warn about portability, can't link against -module's on some - # systems (darwin). Don't bleat about dlopened modules though! - dlopenmodule="" - for dlpremoduletest in $dlprefiles; do - if test "X$dlpremoduletest" = "X$lib"; then - dlopenmodule="$dlpremoduletest" - break - fi - done - if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then - echo - if test "$linkmode" = prog; then - $ECHO "*** Warning: Linking the executable $output against the loadable module" - else - $ECHO "*** Warning: Linking the shared library $output against the loadable module" - fi - $ECHO "*** $linklib is not portable!" - fi - if test "$linkmode" = lib && - test "$hardcode_into_libs" = yes; then - # Hardcode the library path. - # Skip directories that are in the system default run-time - # search path. - case " $sys_lib_dlsearch_path " in - *" $absdir "*) ;; - *) - case "$compile_rpath " in - *" $absdir "*) ;; - *) func_append compile_rpath " $absdir" ;; - esac - ;; - esac - case " $sys_lib_dlsearch_path " in - *" $libdir "*) ;; - *) - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - ;; - esac - fi - - if test -n "$old_archive_from_expsyms_cmds"; then - # figure out the soname - set dummy $library_names - shift - realname="$1" - shift - libname=`eval "\\$ECHO \"$libname_spec\""` - # use dlname if we got it. it's perfectly good, no? - if test -n "$dlname"; then - soname="$dlname" - elif test -n "$soname_spec"; then - # bleh windows - case $host in - *cygwin* | mingw* | *cegcc*) - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - esac - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - - # Make a new name for the extract_expsyms_cmds to use - soroot="$soname" - func_basename "$soroot" - soname="$func_basename_result" - func_stripname 'lib' '.dll' "$soname" - newlib=libimp-$func_stripname_result.a - - # If the library has no export list, then create one now - if test -f "$output_objdir/$soname-def"; then : - else - func_verbose "extracting exported symbol list from \`$soname'" - func_execute_cmds "$extract_expsyms_cmds" 'exit $?' - fi - - # Create $newlib - if test -f "$output_objdir/$newlib"; then :; else - func_verbose "generating import library for \`$soname'" - func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' - fi - # make sure the library variables are pointing to the new library - dir=$output_objdir - linklib=$newlib - fi # test -n "$old_archive_from_expsyms_cmds" - - if test "$linkmode" = prog || test "$opt_mode" != relink; then - add_shlibpath= - add_dir= - add= - lib_linked=yes - case $hardcode_action in - immediate | unsupported) - if test "$hardcode_direct" = no; then - add="$dir/$linklib" - case $host in - *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; - *-*-sysv4*uw2*) add_dir="-L$dir" ;; - *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ - *-*-unixware7*) add_dir="-L$dir" ;; - *-*-darwin* ) - # if the lib is a (non-dlopened) module then we can not - # link against it, someone is ignoring the earlier warnings - if /usr/bin/file -L $add 2> /dev/null | - $GREP ": [^:]* bundle" >/dev/null ; then - if test "X$dlopenmodule" != "X$lib"; then - $ECHO "*** Warning: lib $linklib is a module, not a shared library" - if test -z "$old_library" ; then - echo - echo "*** And there doesn't seem to be a static archive available" - echo "*** The link will probably fail, sorry" - else - add="$dir/$old_library" - fi - elif test -n "$old_library"; then - add="$dir/$old_library" - fi - fi - esac - elif test "$hardcode_minus_L" = no; then - case $host in - *-*-sunos*) add_shlibpath="$dir" ;; - esac - add_dir="-L$dir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = no; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - relink) - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$dir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$dir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - add_shlibpath="$dir" - add="-l$name" - else - lib_linked=no - fi - ;; - *) lib_linked=no ;; - esac - - if test "$lib_linked" != yes; then - func_fatal_configuration "unsupported hardcode properties" - fi - - if test -n "$add_shlibpath"; then - case :$compile_shlibpath: in - *":$add_shlibpath:"*) ;; - *) func_append compile_shlibpath "$add_shlibpath:" ;; - esac - fi - if test "$linkmode" = prog; then - test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" - test -n "$add" && compile_deplibs="$add $compile_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - if test "$hardcode_direct" != yes && - test "$hardcode_minus_L" != yes && - test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - fi - fi - fi - - if test "$linkmode" = prog || test "$opt_mode" = relink; then - add_shlibpath= - add_dir= - add= - # Finalize command for both is simple: just hardcode it. - if test "$hardcode_direct" = yes && - test "$hardcode_direct_absolute" = no; then - add="$libdir/$linklib" - elif test "$hardcode_minus_L" = yes; then - add_dir="-L$libdir" - add="-l$name" - elif test "$hardcode_shlibpath_var" = yes; then - case :$finalize_shlibpath: in - *":$libdir:"*) ;; - *) func_append finalize_shlibpath "$libdir:" ;; - esac - add="-l$name" - elif test "$hardcode_automatic" = yes; then - if test -n "$inst_prefix_dir" && - test -f "$inst_prefix_dir$libdir/$linklib" ; then - add="$inst_prefix_dir$libdir/$linklib" - else - add="$libdir/$linklib" - fi - else - # We cannot seem to hardcode it, guess we'll fake it. - add_dir="-L$libdir" - # Try looking first in the location we're being installed to. - if test -n "$inst_prefix_dir"; then - case $libdir in - [\\/]*) - func_append add_dir " -L$inst_prefix_dir$libdir" - ;; - esac - fi - add="-l$name" - fi - - if test "$linkmode" = prog; then - test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" - test -n "$add" && finalize_deplibs="$add $finalize_deplibs" - else - test -n "$add_dir" && deplibs="$add_dir $deplibs" - test -n "$add" && deplibs="$add $deplibs" - fi - fi - elif test "$linkmode" = prog; then - # Here we assume that one of hardcode_direct or hardcode_minus_L - # is not unsupported. This is valid on all known static and - # shared platforms. - if test "$hardcode_direct" != unsupported; then - test -n "$old_library" && linklib="$old_library" - compile_deplibs="$dir/$linklib $compile_deplibs" - finalize_deplibs="$dir/$linklib $finalize_deplibs" - else - compile_deplibs="-l$name -L$dir $compile_deplibs" - finalize_deplibs="-l$name -L$dir $finalize_deplibs" - fi - elif test "$build_libtool_libs" = yes; then - # Not a shared library - if test "$deplibs_check_method" != pass_all; then - # We're trying link a shared library against a static one - # but the system doesn't support it. - - # Just print a warning and add the library to dependency_libs so - # that the program can be linked against the static library. - echo - $ECHO "*** Warning: This system can not link to static lib archive $lib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have." - if test "$module" = yes; then - echo "*** But as you try to build a module library, libtool will still create " - echo "*** a static module, that should work as long as the dlopening application" - echo "*** is linked with the -dlopen flag to resolve symbols at runtime." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - else - deplibs="$dir/$old_library $deplibs" - link_static=yes - fi - fi # link shared/static library? - - if test "$linkmode" = lib; then - if test -n "$dependency_libs" && - { test "$hardcode_into_libs" != yes || - test "$build_old_libs" = yes || - test "$link_static" = yes; }; then - # Extract -R from dependency_libs - temp_deplibs= - for libdir in $dependency_libs; do - case $libdir in - -R*) func_stripname '-R' '' "$libdir" - temp_xrpath=$func_stripname_result - case " $xrpath " in - *" $temp_xrpath "*) ;; - *) func_append xrpath " $temp_xrpath";; - esac;; - *) func_append temp_deplibs " $libdir";; - esac - done - dependency_libs="$temp_deplibs" - fi - - func_append newlib_search_path " $absdir" - # Link against this library - test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" - # ... and its dependency_libs - tmp_libs= - for deplib in $dependency_libs; do - newdependency_libs="$deplib $newdependency_libs" - case $deplib in - -L*) func_stripname '-L' '' "$deplib" - func_resolve_sysroot "$func_stripname_result";; - *) func_resolve_sysroot "$deplib" ;; - esac - if $opt_preserve_dup_deps ; then - case "$tmp_libs " in - *" $func_resolve_sysroot_result "*) - func_append specialdeplibs " $func_resolve_sysroot_result" ;; - esac - fi - func_append tmp_libs " $func_resolve_sysroot_result" - done - - if test "$link_all_deplibs" != no; then - # Add the search paths of all dependency libraries - for deplib in $dependency_libs; do - path= - case $deplib in - -L*) path="$deplib" ;; - *.la) - func_resolve_sysroot "$deplib" - deplib=$func_resolve_sysroot_result - func_dirname "$deplib" "" "." - dir=$func_dirname_result - # We need an absolute path. - case $dir in - [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; - *) - absdir=`cd "$dir" && pwd` - if test -z "$absdir"; then - func_warning "cannot determine absolute directory name of \`$dir'" - absdir="$dir" - fi - ;; - esac - if $GREP "^installed=no" $deplib > /dev/null; then - case $host in - *-*-darwin*) - depdepl= - eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` - if test -n "$deplibrary_names" ; then - for tmp in $deplibrary_names ; do - depdepl=$tmp - done - if test -f "$absdir/$objdir/$depdepl" ; then - depdepl="$absdir/$objdir/$depdepl" - darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - if test -z "$darwin_install_name"; then - darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` - fi - func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" - func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" - path= - fi - fi - ;; - *) - path="-L$absdir/$objdir" - ;; - esac - else - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - test "$absdir" != "$libdir" && \ - func_warning "\`$deplib' seems to be moved" - - path="-L$absdir" - fi - ;; - esac - case " $deplibs " in - *" $path "*) ;; - *) deplibs="$path $deplibs" ;; - esac - done - fi # link_all_deplibs != no - fi # linkmode = lib - done # for deplib in $libs - if test "$pass" = link; then - if test "$linkmode" = "prog"; then - compile_deplibs="$new_inherited_linker_flags $compile_deplibs" - finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" - else - compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - fi - fi - dependency_libs="$newdependency_libs" - if test "$pass" = dlpreopen; then - # Link the dlpreopened libraries before other libraries - for deplib in $save_deplibs; do - deplibs="$deplib $deplibs" - done - fi - if test "$pass" != dlopen; then - if test "$pass" != conv; then - # Make sure lib_search_path contains only unique directories. - lib_search_path= - for dir in $newlib_search_path; do - case "$lib_search_path " in - *" $dir "*) ;; - *) func_append lib_search_path " $dir" ;; - esac - done - newlib_search_path= - fi - - if test "$linkmode,$pass" != "prog,link"; then - vars="deplibs" - else - vars="compile_deplibs finalize_deplibs" - fi - for var in $vars dependency_libs; do - # Add libraries to $var in reverse order - eval tmp_libs=\"\$$var\" - new_libs= - for deplib in $tmp_libs; do - # FIXME: Pedantically, this is the right thing to do, so - # that some nasty dependency loop isn't accidentally - # broken: - #new_libs="$deplib $new_libs" - # Pragmatically, this seems to cause very few problems in - # practice: - case $deplib in - -L*) new_libs="$deplib $new_libs" ;; - -R*) ;; - *) - # And here is the reason: when a library appears more - # than once as an explicit dependence of a library, or - # is implicitly linked in more than once by the - # compiler, it is considered special, and multiple - # occurrences thereof are not removed. Compare this - # with having the same library being listed as a - # dependency of multiple other libraries: in this case, - # we know (pedantically, we assume) the library does not - # need to be listed more than once, so we keep only the - # last copy. This is not always right, but it is rare - # enough that we require users that really mean to play - # such unportable linking tricks to link the library - # using -Wl,-lname, so that libtool does not consider it - # for duplicate removal. - case " $specialdeplibs " in - *" $deplib "*) new_libs="$deplib $new_libs" ;; - *) - case " $new_libs " in - *" $deplib "*) ;; - *) new_libs="$deplib $new_libs" ;; - esac - ;; - esac - ;; - esac - done - tmp_libs= - for deplib in $new_libs; do - case $deplib in - -L*) - case " $tmp_libs " in - *" $deplib "*) ;; - *) func_append tmp_libs " $deplib" ;; - esac - ;; - *) func_append tmp_libs " $deplib" ;; - esac - done - eval $var=\"$tmp_libs\" - done # for var - fi - # Last step: remove runtime libs from dependency_libs - # (they stay in deplibs) - tmp_libs= - for i in $dependency_libs ; do - case " $predeps $postdeps $compiler_lib_search_path " in - *" $i "*) - i="" - ;; - esac - if test -n "$i" ; then - func_append tmp_libs " $i" - fi - done - dependency_libs=$tmp_libs - done # for pass - if test "$linkmode" = prog; then - dlfiles="$newdlfiles" - fi - if test "$linkmode" = prog || test "$linkmode" = lib; then - dlprefiles="$newdlprefiles" - fi - - case $linkmode in - oldlib) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for archives" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for archives" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for archives" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for archives" - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for archives" - - test -n "$release" && \ - func_warning "\`-release' is ignored for archives" - - test -n "$export_symbols$export_symbols_regex" && \ - func_warning "\`-export-symbols' is ignored for archives" - - # Now set the variables for building old libraries. - build_libtool_libs=no - oldlibs="$output" - func_append objs "$old_deplibs" - ;; - - lib) - # Make sure we only generate libraries of the form `libNAME.la'. - case $outputname in - lib*) - func_stripname 'lib' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - ;; - *) - test "$module" = no && \ - func_fatal_help "libtool library \`$output' must begin with \`lib'" - - if test "$need_lib_prefix" != no; then - # Add the "lib" prefix for modules if required - func_stripname '' '.la' "$outputname" - name=$func_stripname_result - eval shared_ext=\"$shrext_cmds\" - eval libname=\"$libname_spec\" - else - func_stripname '' '.la' "$outputname" - libname=$func_stripname_result - fi - ;; - esac - - if test -n "$objs"; then - if test "$deplibs_check_method" != pass_all; then - func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" - else - echo - $ECHO "*** Warning: Linking the shared library $output against the non-libtool" - $ECHO "*** objects $objs is not portable!" - func_append libobjs " $objs" - fi - fi - - test "$dlself" != no && \ - func_warning "\`-dlopen self' is ignored for libtool libraries" - - set dummy $rpath - shift - test "$#" -gt 1 && \ - func_warning "ignoring multiple \`-rpath's for a libtool library" - - install_libdir="$1" - - oldlibs= - if test -z "$rpath"; then - if test "$build_libtool_libs" = yes; then - # Building a libtool convenience library. - # Some compilers have problems with a `.al' extension so - # convenience libraries should have the same extension an - # archive normally would. - oldlibs="$output_objdir/$libname.$libext $oldlibs" - build_libtool_libs=convenience - build_old_libs=yes - fi - - test -n "$vinfo" && \ - func_warning "\`-version-info/-version-number' is ignored for convenience libraries" - - test -n "$release" && \ - func_warning "\`-release' is ignored for convenience libraries" - else - - # Parse the version information argument. - save_ifs="$IFS"; IFS=':' - set dummy $vinfo 0 0 0 - shift - IFS="$save_ifs" - - test -n "$7" && \ - func_fatal_help "too many parameters to \`-version-info'" - - # convert absolute version numbers to libtool ages - # this retains compatibility with .la files and attempts - # to make the code below a bit more comprehensible - - case $vinfo_number in - yes) - number_major="$1" - number_minor="$2" - number_revision="$3" - # - # There are really only two kinds -- those that - # use the current revision as the major version - # and those that subtract age and use age as - # a minor version. But, then there is irix - # which has an extra 1 added just for fun - # - case $version_type in - darwin|linux|osf|windows|none) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_revision" - ;; - freebsd-aout|freebsd-elf|qnx|sunos) - current="$number_major" - revision="$number_minor" - age="0" - ;; - irix|nonstopux) - func_arith $number_major + $number_minor - current=$func_arith_result - age="$number_minor" - revision="$number_minor" - lt_irix_increment=no - ;; - esac - ;; - no) - current="$1" - revision="$2" - age="$3" - ;; - esac - - # Check that each of the things are valid numbers. - case $current in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "CURRENT \`$current' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $revision in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "REVISION \`$revision' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - case $age in - 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; - *) - func_error "AGE \`$age' must be a nonnegative integer" - func_fatal_error "\`$vinfo' is not valid version information" - ;; - esac - - if test "$age" -gt "$current"; then - func_error "AGE \`$age' is greater than the current interface number \`$current'" - func_fatal_error "\`$vinfo' is not valid version information" - fi - - # Calculate the version variables. - major= - versuffix= - verstring= - case $version_type in - none) ;; - - darwin) - # Like Linux, but with the current version available in - # verstring for coding it into the library header - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - # Darwin ld doesn't like 0 for these options... - func_arith $current + 1 - minor_current=$func_arith_result - xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" - verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" - ;; - - freebsd-aout) - major=".$current" - versuffix=".$current.$revision"; - ;; - - freebsd-elf) - major=".$current" - versuffix=".$current" - ;; - - irix | nonstopux) - if test "X$lt_irix_increment" = "Xno"; then - func_arith $current - $age - else - func_arith $current - $age + 1 - fi - major=$func_arith_result - - case $version_type in - nonstopux) verstring_prefix=nonstopux ;; - *) verstring_prefix=sgi ;; - esac - verstring="$verstring_prefix$major.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$revision - while test "$loop" -ne 0; do - func_arith $revision - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring_prefix$major.$iface:$verstring" - done - - # Before this point, $major must not contain `.'. - major=.$major - versuffix="$major.$revision" - ;; - - linux) - func_arith $current - $age - major=.$func_arith_result - versuffix="$major.$age.$revision" - ;; - - osf) - func_arith $current - $age - major=.$func_arith_result - versuffix=".$current.$age.$revision" - verstring="$current.$age.$revision" - - # Add in all the interfaces that we are compatible with. - loop=$age - while test "$loop" -ne 0; do - func_arith $current - $loop - iface=$func_arith_result - func_arith $loop - 1 - loop=$func_arith_result - verstring="$verstring:${iface}.0" - done - - # Make executables depend on our current version. - func_append verstring ":${current}.0" - ;; - - qnx) - major=".$current" - versuffix=".$current" - ;; - - sunos) - major=".$current" - versuffix=".$current.$revision" - ;; - - windows) - # Use '-' rather than '.', since we only want one - # extension on DOS 8.3 filesystems. - func_arith $current - $age - major=$func_arith_result - versuffix="-$major" - ;; - - *) - func_fatal_configuration "unknown library version type \`$version_type'" - ;; - esac - - # Clear the version info if we defaulted, and they specified a release. - if test -z "$vinfo" && test -n "$release"; then - major= - case $version_type in - darwin) - # we can't check for "0.0" in archive_cmds due to quoting - # problems, so we reset it completely - verstring= - ;; - *) - verstring="0.0" - ;; - esac - if test "$need_version" = no; then - versuffix= - else - versuffix=".0.0" - fi - fi - - # Remove version info from name if versioning should be avoided - if test "$avoid_version" = yes && test "$need_version" = no; then - major= - versuffix= - verstring="" - fi - - # Check to see if the archive will have undefined symbols. - if test "$allow_undefined" = yes; then - if test "$allow_undefined_flag" = unsupported; then - func_warning "undefined symbols not allowed in $host shared libraries" - build_libtool_libs=no - build_old_libs=yes - fi - else - # Don't allow undefined symbols. - allow_undefined_flag="$no_undefined_flag" - fi - - fi - - func_generate_dlsyms "$libname" "$libname" "yes" - func_append libobjs " $symfileobj" - test "X$libobjs" = "X " && libobjs= - - if test "$opt_mode" != relink; then - # Remove our outputs, but don't remove object files since they - # may have been created when compiling PIC objects. - removelist= - tempremovelist=`$ECHO "$output_objdir/*"` - for p in $tempremovelist; do - case $p in - *.$objext | *.gcno) - ;; - $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) - if test "X$precious_files_regex" != "X"; then - if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 - then - continue - fi - fi - func_append removelist " $p" - ;; - *) ;; - esac - done - test -n "$removelist" && \ - func_show_eval "${RM}r \$removelist" - fi - - # Now set the variables for building old libraries. - if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then - func_append oldlibs " $output_objdir/$libname.$libext" - - # Transform .lo files to .o files. - oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` - fi - - # Eliminate all temporary directories. - #for path in $notinst_path; do - # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` - # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` - # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` - #done - - if test -n "$xrpath"; then - # If the user specified any rpath flags, then add them. - temp_xrpath= - for libdir in $xrpath; do - func_replace_sysroot "$libdir" - func_append temp_xrpath " -R$func_replace_sysroot_result" - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then - dependency_libs="$temp_xrpath $dependency_libs" - fi - fi - - # Make sure dlfiles contains only unique files that won't be dlpreopened - old_dlfiles="$dlfiles" - dlfiles= - for lib in $old_dlfiles; do - case " $dlprefiles $dlfiles " in - *" $lib "*) ;; - *) func_append dlfiles " $lib" ;; - esac - done - - # Make sure dlprefiles contains only unique files - old_dlprefiles="$dlprefiles" - dlprefiles= - for lib in $old_dlprefiles; do - case "$dlprefiles " in - *" $lib "*) ;; - *) func_append dlprefiles " $lib" ;; - esac - done - - if test "$build_libtool_libs" = yes; then - if test -n "$rpath"; then - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) - # these systems don't actually have a c library (as such)! - ;; - *-*-rhapsody* | *-*-darwin1.[012]) - # Rhapsody C library is in the System framework - func_append deplibs " System.ltframework" - ;; - *-*-netbsd*) - # Don't link with libc until the a.out ld.so is fixed. - ;; - *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) - # Do not include libc due to us having libc/libc_r. - ;; - *-*-sco3.2v5* | *-*-sco5v6*) - # Causes problems with __ctype - ;; - *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) - # Compiler inserts libc in the correct place for threads to work - ;; - *) - # Add libc to deplibs on all other systems if necessary. - if test "$build_libtool_need_lc" = "yes"; then - func_append deplibs " -lc" - fi - ;; - esac - fi - - # Transform deplibs into only deplibs that can be linked in shared. - name_save=$name - libname_save=$libname - release_save=$release - versuffix_save=$versuffix - major_save=$major - # I'm not sure if I'm treating the release correctly. I think - # release should show up in the -l (ie -lgmp5) so we don't want to - # add it in twice. Is that correct? - release="" - versuffix="" - major="" - newdeplibs= - droppeddeps=no - case $deplibs_check_method in - pass_all) - # Don't check for shared/static. Everything works. - # This might be a little naive. We might want to check - # whether the library exists or not. But this is on - # osf3 & osf4 and I'm not really sure... Just - # implementing what was already the behavior. - newdeplibs=$deplibs - ;; - test_compile) - # This code stresses the "libraries are programs" paradigm to its - # limits. Maybe even breaks it. We compile a program, linking it - # against the deplibs as a proxy for the library. Then we can check - # whether they linked in statically or dynamically with ldd. - $opt_dry_run || $RM conftest.c - cat > conftest.c </dev/null` - $nocaseglob - else - potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` - fi - for potent_lib in $potential_libs; do - # Follow soft links. - if ls -lLd "$potent_lib" 2>/dev/null | - $GREP " -> " >/dev/null; then - continue - fi - # The statement above tries to avoid entering an - # endless loop below, in case of cyclic links. - # We might still enter an endless loop, since a link - # loop can be closed while we follow links, - # but so what? - potlib="$potent_lib" - while test -h "$potlib" 2>/dev/null; do - potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` - case $potliblink in - [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; - *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; - esac - done - if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | - $SED -e 10q | - $EGREP "$file_magic_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for file magic test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a file magic. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - match_pattern*) - set dummy $deplibs_check_method; shift - match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` - for a_deplib in $deplibs; do - case $a_deplib in - -l*) - func_stripname -l '' "$a_deplib" - name=$func_stripname_result - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - case " $predeps $postdeps " in - *" $a_deplib "*) - func_append newdeplibs " $a_deplib" - a_deplib="" - ;; - esac - fi - if test -n "$a_deplib" ; then - libname=`eval "\\$ECHO \"$libname_spec\""` - for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do - potential_libs=`ls $i/$libname[.-]* 2>/dev/null` - for potent_lib in $potential_libs; do - potlib="$potent_lib" # see symlink-check above in file_magic test - if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ - $EGREP "$match_pattern_regex" > /dev/null; then - func_append newdeplibs " $a_deplib" - a_deplib="" - break 2 - fi - done - done - fi - if test -n "$a_deplib" ; then - droppeddeps=yes - echo - $ECHO "*** Warning: linker path does not have real file for library $a_deplib." - echo "*** I have the capability to make that library automatically link in when" - echo "*** you link to this library. But I can only do this if you have a" - echo "*** shared version of the library, which you do not appear to have" - echo "*** because I did check the linker path looking for a file starting" - if test -z "$potlib" ; then - $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" - else - $ECHO "*** with $libname and none of the candidates passed a file format test" - $ECHO "*** using a regex pattern. Last file checked: $potlib" - fi - fi - ;; - *) - # Add a -L argument. - func_append newdeplibs " $a_deplib" - ;; - esac - done # Gone through all deplibs. - ;; - none | unknown | *) - newdeplibs="" - tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` - if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then - for i in $predeps $postdeps ; do - # can't use Xsed below, because $i might contain '/' - tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` - done - fi - case $tmp_deplibs in - *[!\ \ ]*) - echo - if test "X$deplibs_check_method" = "Xnone"; then - echo "*** Warning: inter-library dependencies are not supported in this platform." - else - echo "*** Warning: inter-library dependencies are not known to be supported." - fi - echo "*** All declared inter-library dependencies are being dropped." - droppeddeps=yes - ;; - esac - ;; - esac - versuffix=$versuffix_save - major=$major_save - release=$release_save - libname=$libname_save - name=$name_save - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library with the System framework - newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - if test "$droppeddeps" = yes; then - if test "$module" = yes; then - echo - echo "*** Warning: libtool could not satisfy all declared inter-library" - $ECHO "*** dependencies of module $libname. Therefore, libtool will create" - echo "*** a static module, that should work as long as the dlopening" - echo "*** application is linked with the -dlopen flag." - if test -z "$global_symbol_pipe"; then - echo - echo "*** However, this would only work if libtool was able to extract symbol" - echo "*** lists from a program, using \`nm' or equivalent, but libtool could" - echo "*** not find such a program. So, this module is probably useless." - echo "*** \`nm' from GNU binutils and a full rebuild may help." - fi - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - else - echo "*** The inter-library dependencies that have been dropped here will be" - echo "*** automatically added whenever a program is linked with this library" - echo "*** or is declared to -dlopen it." - - if test "$allow_undefined" = no; then - echo - echo "*** Since this library must not contain undefined symbols," - echo "*** because either the platform does not support them or" - echo "*** it was explicitly requested with -no-undefined," - echo "*** libtool will only create a static version of it." - if test "$build_old_libs" = no; then - oldlibs="$output_objdir/$libname.$libext" - build_libtool_libs=module - build_old_libs=yes - else - build_libtool_libs=no - fi - fi - fi - fi - # Done checking deplibs! - deplibs=$newdeplibs - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - case $host in - *-*-darwin*) - newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - deplibs="$new_libs" - - # All the library-specific variables (install_libdir is set above). - library_names= - old_library= - dlname= - - # Test again, we may have decided not to build it any more - if test "$build_libtool_libs" = yes; then - if test "$hardcode_into_libs" = yes; then - # Hardcode the library paths - hardcode_libdirs= - dep_rpath= - rpath="$finalize_rpath" - test "$opt_mode" != relink && rpath="$compile_rpath$rpath" - for libdir in $rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - func_replace_sysroot "$libdir" - libdir=$func_replace_sysroot_result - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append dep_rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - if test -n "$hardcode_libdir_flag_spec_ld"; then - eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" - else - eval dep_rpath=\"$hardcode_libdir_flag_spec\" - fi - fi - if test -n "$runpath_var" && test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" - fi - test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" - fi - - shlibpath="$finalize_shlibpath" - test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" - if test -n "$shlibpath"; then - eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" - fi - - # Get the real and link names of the library. - eval shared_ext=\"$shrext_cmds\" - eval library_names=\"$library_names_spec\" - set dummy $library_names - shift - realname="$1" - shift - - if test -n "$soname_spec"; then - eval soname=\"$soname_spec\" - else - soname="$realname" - fi - if test -z "$dlname"; then - dlname=$soname - fi - - lib="$output_objdir/$realname" - linknames= - for link - do - func_append linknames " $link" - done - - # Use standard objects if they are pic - test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` - test "X$libobjs" = "X " && libobjs= - - delfiles= - if test -n "$export_symbols" && test -n "$include_expsyms"; then - $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" - export_symbols="$output_objdir/$libname.uexp" - func_append delfiles " $export_symbols" - fi - - orig_export_symbols= - case $host_os in - cygwin* | mingw* | cegcc*) - if test -n "$export_symbols" && test -z "$export_symbols_regex"; then - # exporting using user supplied symfile - if test "x`$SED 1q $export_symbols`" != xEXPORTS; then - # and it's NOT already a .def file. Must figure out - # which of the given symbols are data symbols and tag - # them as such. So, trigger use of export_symbols_cmds. - # export_symbols gets reassigned inside the "prepare - # the list of exported symbols" if statement, so the - # include_expsyms logic still works. - orig_export_symbols="$export_symbols" - export_symbols= - always_export_symbols=yes - fi - fi - ;; - esac - - # Prepare the list of exported symbols - if test -z "$export_symbols"; then - if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - cmds=$export_symbols_cmds - save_ifs="$IFS"; IFS='~' - for cmd1 in $cmds; do - IFS="$save_ifs" - # Take the normal branch if the nm_file_list_spec branch - # doesn't work or if tool conversion is not needed. - case $nm_file_list_spec~$to_tool_file_cmd in - *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) - try_normal_branch=yes - eval cmd=\"$cmd1\" - func_len " $cmd" - len=$func_len_result - ;; - *) - try_normal_branch=no - ;; - esac - if test "$try_normal_branch" = yes \ - && { test "$len" -lt "$max_cmd_len" \ - || test "$max_cmd_len" -le -1; } - then - func_show_eval "$cmd" 'exit $?' - skipped_export=false - elif test -n "$nm_file_list_spec"; then - func_basename "$output" - output_la=$func_basename_result - save_libobjs=$libobjs - save_output=$output - output=${output_objdir}/${output_la}.nm - func_to_tool_file "$output" - libobjs=$nm_file_list_spec$func_to_tool_file_result - func_append delfiles " $output" - func_verbose "creating $NM input file list: $output" - for obj in $save_libobjs; do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > "$output" - eval cmd=\"$cmd1\" - func_show_eval "$cmd" 'exit $?' - output=$save_output - libobjs=$save_libobjs - skipped_export=false - else - # The command line is too long to execute in one step. - func_verbose "using reloadable object file for export list..." - skipped_export=: - # Break out early, otherwise skipped_export may be - # set to false by a later but shorter cmd. - break - fi - done - IFS="$save_ifs" - if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - fi - - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - - tmp_deplibs= - for test_deplib in $deplibs; do - case " $convenience " in - *" $test_deplib "*) ;; - *) - func_append tmp_deplibs " $test_deplib" - ;; - esac - done - deplibs="$tmp_deplibs" - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec" && - test "$compiler_needs_object" = yes && - test -z "$libobjs"; then - # extract the archives, so we have objects to list. - # TODO: could optimize this to just extract one archive. - whole_archive_flag_spec= - fi - if test -n "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - else - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - fi - - if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then - eval flag=\"$thread_safe_flag_spec\" - func_append linker_flags " $flag" - fi - - # Make a backup of the uninstalled library when relinking - if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? - fi - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - eval test_cmds=\"$module_expsym_cmds\" - cmds=$module_expsym_cmds - else - eval test_cmds=\"$module_cmds\" - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - eval test_cmds=\"$archive_expsym_cmds\" - cmds=$archive_expsym_cmds - else - eval test_cmds=\"$archive_cmds\" - cmds=$archive_cmds - fi - fi - - if test "X$skipped_export" != "X:" && - func_len " $test_cmds" && - len=$func_len_result && - test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - : - else - # The command line is too long to link in one step, link piecewise - # or, if using GNU ld and skipped_export is not :, use a linker - # script. - - # Save the value of $output and $libobjs because we want to - # use them later. If we have whole_archive_flag_spec, we - # want to use save_libobjs as it was before - # whole_archive_flag_spec was expanded, because we can't - # assume the linker understands whole_archive_flag_spec. - # This may have to be revisited, in case too many - # convenience libraries get linked in and end up exceeding - # the spec. - if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then - save_libobjs=$libobjs - fi - save_output=$output - func_basename "$output" - output_la=$func_basename_result - - # Clear the reloadable object creation command queue and - # initialize k to one. - test_cmds= - concat_cmds= - objlist= - last_robj= - k=1 - - if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then - output=${output_objdir}/${output_la}.lnkscript - func_verbose "creating GNU ld script: $output" - echo 'INPUT (' > $output - for obj in $save_libobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - echo ')' >> $output - func_append delfiles " $output" - func_to_tool_file "$output" - output=$func_to_tool_file_result - elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then - output=${output_objdir}/${output_la}.lnk - func_verbose "creating linker input file list: $output" - : > $output - set x $save_libobjs - shift - firstobj= - if test "$compiler_needs_object" = yes; then - firstobj="$1 " - shift - fi - for obj - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" >> $output - done - func_append delfiles " $output" - func_to_tool_file "$output" - output=$firstobj\"$file_list_spec$func_to_tool_file_result\" - else - if test -n "$save_libobjs"; then - func_verbose "creating reloadable object files..." - output=$output_objdir/$output_la-${k}.$objext - eval test_cmds=\"$reload_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - - # Loop over the list of objects to be linked. - for obj in $save_libobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - if test "X$objlist" = X || - test "$len" -lt "$max_cmd_len"; then - func_append objlist " $obj" - else - # The command $test_cmds is almost too long, add a - # command to the queue. - if test "$k" -eq 1 ; then - # The first file doesn't have a previous command to add. - reload_objs=$objlist - eval concat_cmds=\"$reload_cmds\" - else - # All subsequent reloadable object files will link in - # the last one created. - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" - fi - last_robj=$output_objdir/$output_la-${k}.$objext - func_arith $k + 1 - k=$func_arith_result - output=$output_objdir/$output_la-${k}.$objext - objlist=" $obj" - func_len " $last_robj" - func_arith $len0 + $func_len_result - len=$func_arith_result - fi - done - # Handle the remaining objects by creating one last - # reloadable object file. All subsequent reloadable object - # files will link in the last one created. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - reload_objs="$objlist $last_robj" - eval concat_cmds=\"\${concat_cmds}$reload_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" - fi - func_append delfiles " $output" - - else - output= - fi - - if ${skipped_export-false}; then - func_verbose "generating symbol list for \`$libname.la'" - export_symbols="$output_objdir/$libname.exp" - $opt_dry_run || $RM $export_symbols - libobjs=$output - # Append the command to create the export file. - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" - if test -n "$last_robj"; then - eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" - fi - fi - - test -n "$save_libobjs" && - func_verbose "creating a temporary reloadable object file: $output" - - # Loop through the commands generated above and execute them. - save_ifs="$IFS"; IFS='~' - for cmd in $concat_cmds; do - IFS="$save_ifs" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - if test -n "$export_symbols_regex" && ${skipped_export-false}; then - func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' - func_show_eval '$MV "${export_symbols}T" "$export_symbols"' - fi - fi - - if ${skipped_export-false}; then - if test -n "$export_symbols" && test -n "$include_expsyms"; then - tmp_export_symbols="$export_symbols" - test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" - $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' - fi - - if test -n "$orig_export_symbols"; then - # The given exports_symbols file has to be filtered, so filter it. - func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" - # FIXME: $output_objdir/$libname.filter potentially contains lots of - # 's' commands which not all seds can handle. GNU sed should be fine - # though. Also, the filter scales superlinearly with the number of - # global variables. join(1) would be nice here, but unfortunately - # isn't a blessed tool. - $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter - func_append delfiles " $export_symbols $output_objdir/$libname.filter" - export_symbols=$output_objdir/$libname.def - $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols - fi - fi - - libobjs=$output - # Restore the value of output. - output=$save_output - - if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then - eval libobjs=\"\$libobjs $whole_archive_flag_spec\" - test "X$libobjs" = "X " && libobjs= - fi - # Expand the library linking commands again to reset the - # value of $libobjs for piecewise linking. - - # Do each of the archive commands. - if test "$module" = yes && test -n "$module_cmds" ; then - if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then - cmds=$module_expsym_cmds - else - cmds=$module_cmds - fi - else - if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then - cmds=$archive_expsym_cmds - else - cmds=$archive_cmds - fi - fi - fi - - if test -n "$delfiles"; then - # Append the command to remove temporary files to $cmds. - eval cmds=\"\$cmds~\$RM $delfiles\" - fi - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append libobjs " $func_extract_archives_result" - test "X$libobjs" = "X " && libobjs= - fi - - save_ifs="$IFS"; IFS='~' - for cmd in $cmds; do - IFS="$save_ifs" - eval cmd=\"$cmd\" - $opt_silent || { - func_quote_for_expand "$cmd" - eval "func_echo $func_quote_for_expand_result" - } - $opt_dry_run || eval "$cmd" || { - lt_exit=$? - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - ( cd "$output_objdir" && \ - $RM "${realname}T" && \ - $MV "${realname}U" "$realname" ) - fi - - exit $lt_exit - } - done - IFS="$save_ifs" - - # Restore the uninstalled library and exit - if test "$opt_mode" = relink; then - $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? - - if test -n "$convenience"; then - if test -z "$whole_archive_flag_spec"; then - func_show_eval '${RM}r "$gentop"' - fi - fi - - exit $EXIT_SUCCESS - fi - - # Create links to the real library. - for linkname in $linknames; do - if test "$realname" != "$linkname"; then - func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' - fi - done - - # If -module or -export-dynamic was specified, set the dlname. - if test "$module" = yes || test "$export_dynamic" = yes; then - # On all known operating systems, these are identical. - dlname="$soname" - fi - fi - ;; - - obj) - if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then - func_warning "\`-dlopen' is ignored for objects" - fi - - case " $deplibs" in - *\ -l* | *\ -L*) - func_warning "\`-l' and \`-L' are ignored for objects" ;; - esac - - test -n "$rpath" && \ - func_warning "\`-rpath' is ignored for objects" - - test -n "$xrpath" && \ - func_warning "\`-R' is ignored for objects" - - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for objects" - - test -n "$release" && \ - func_warning "\`-release' is ignored for objects" - - case $output in - *.lo) - test -n "$objs$old_deplibs" && \ - func_fatal_error "cannot build library object \`$output' from non-libtool objects" - - libobj=$output - func_lo2o "$libobj" - obj=$func_lo2o_result - ;; - *) - libobj= - obj="$output" - ;; - esac - - # Delete the old objects. - $opt_dry_run || $RM $obj $libobj - - # Objects from convenience libraries. This assumes - # single-version convenience libraries. Whenever we create - # different ones for PIC/non-PIC, this we'll have to duplicate - # the extraction. - reload_conv_objs= - gentop= - # reload_cmds runs $LD directly, so let us get rid of - # -Wl from whole_archive_flag_spec and hope we can get by with - # turning comma into space.. - wl= - - if test -n "$convenience"; then - if test -n "$whole_archive_flag_spec"; then - eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" - reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` - else - gentop="$output_objdir/${obj}x" - func_append generated " $gentop" - - func_extract_archives $gentop $convenience - reload_conv_objs="$reload_objs $func_extract_archives_result" - fi - fi - - # If we're not building shared, we need to use non_pic_objs - test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" - - # Create the old-style object. - reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test - - output="$obj" - func_execute_cmds "$reload_cmds" 'exit $?' - - # Exit if we aren't doing a library object file. - if test -z "$libobj"; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - fi - - if test "$build_libtool_libs" != yes; then - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - # Create an invalid libtool object if no PIC, so that we don't - # accidentally link it into a program. - # $show "echo timestamp > $libobj" - # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? - exit $EXIT_SUCCESS - fi - - if test -n "$pic_flag" || test "$pic_mode" != default; then - # Only do commands if we really have different PIC objects. - reload_objs="$libobjs $reload_conv_objs" - output="$libobj" - func_execute_cmds "$reload_cmds" 'exit $?' - fi - - if test -n "$gentop"; then - func_show_eval '${RM}r "$gentop"' - fi - - exit $EXIT_SUCCESS - ;; - - prog) - case $host in - *cygwin*) func_stripname '' '.exe' "$output" - output=$func_stripname_result.exe;; - esac - test -n "$vinfo" && \ - func_warning "\`-version-info' is ignored for programs" - - test -n "$release" && \ - func_warning "\`-release' is ignored for programs" - - test "$preload" = yes \ - && test "$dlopen_support" = unknown \ - && test "$dlopen_self" = unknown \ - && test "$dlopen_self_static" = unknown && \ - func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." - - case $host in - *-*-rhapsody* | *-*-darwin1.[012]) - # On Rhapsody replace the C library is the System framework - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` - ;; - esac - - case $host in - *-*-darwin*) - # Don't allow lazy linking, it breaks C++ global constructors - # But is supposedly fixed on 10.4 or later (yay!). - if test "$tagname" = CXX ; then - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[0123]) - func_append compile_command " ${wl}-bind_at_load" - func_append finalize_command " ${wl}-bind_at_load" - ;; - esac - fi - # Time to change all our "foo.ltframework" stuff back to "-framework foo" - compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` - ;; - esac - - - # move library search paths that coincide with paths to not yet - # installed libraries to the beginning of the library search list - new_libs= - for path in $notinst_path; do - case " $new_libs " in - *" -L$path/$objdir "*) ;; - *) - case " $compile_deplibs " in - *" -L$path/$objdir "*) - func_append new_libs " -L$path/$objdir" ;; - esac - ;; - esac - done - for deplib in $compile_deplibs; do - case $deplib in - -L*) - case " $new_libs " in - *" $deplib "*) ;; - *) func_append new_libs " $deplib" ;; - esac - ;; - *) func_append new_libs " $deplib" ;; - esac - done - compile_deplibs="$new_libs" - - - func_append compile_command " $compile_deplibs" - func_append finalize_command " $finalize_deplibs" - - if test -n "$rpath$xrpath"; then - # If the user specified any rpath flags, then add them. - for libdir in $rpath $xrpath; do - # This is the magic to use -rpath. - case "$finalize_rpath " in - *" $libdir "*) ;; - *) func_append finalize_rpath " $libdir" ;; - esac - done - fi - - # Now hardcode the library paths - rpath= - hardcode_libdirs= - for libdir in $compile_rpath $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$perm_rpath " in - *" $libdir "*) ;; - *) func_append perm_rpath " $libdir" ;; - esac - fi - case $host in - *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) - testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` - case :$dllsearchpath: in - *":$libdir:"*) ;; - ::) dllsearchpath=$libdir;; - *) func_append dllsearchpath ":$libdir";; - esac - case :$dllsearchpath: in - *":$testbindir:"*) ;; - ::) dllsearchpath=$testbindir;; - *) func_append dllsearchpath ":$testbindir";; - esac - ;; - esac - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - compile_rpath="$rpath" - - rpath= - hardcode_libdirs= - for libdir in $finalize_rpath; do - if test -n "$hardcode_libdir_flag_spec"; then - if test -n "$hardcode_libdir_separator"; then - if test -z "$hardcode_libdirs"; then - hardcode_libdirs="$libdir" - else - # Just accumulate the unique libdirs. - case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in - *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) - ;; - *) - func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" - ;; - esac - fi - else - eval flag=\"$hardcode_libdir_flag_spec\" - func_append rpath " $flag" - fi - elif test -n "$runpath_var"; then - case "$finalize_perm_rpath " in - *" $libdir "*) ;; - *) func_append finalize_perm_rpath " $libdir" ;; - esac - fi - done - # Substitute the hardcoded libdirs into the rpath. - if test -n "$hardcode_libdir_separator" && - test -n "$hardcode_libdirs"; then - libdir="$hardcode_libdirs" - eval rpath=\" $hardcode_libdir_flag_spec\" - fi - finalize_rpath="$rpath" - - if test -n "$libobjs" && test "$build_old_libs" = yes; then - # Transform all the library objects into standard objects. - compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` - fi - - func_generate_dlsyms "$outputname" "@PROGRAM@" "no" - - # template prelinking step - if test -n "$prelink_cmds"; then - func_execute_cmds "$prelink_cmds" 'exit $?' - fi - - wrappers_required=yes - case $host in - *cegcc* | *mingw32ce*) - # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. - wrappers_required=no - ;; - *cygwin* | *mingw* ) - if test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - *) - if test "$need_relink" = no || test "$build_libtool_libs" != yes; then - wrappers_required=no - fi - ;; - esac - if test "$wrappers_required" = no; then - # Replace the output file specification. - compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - link_command="$compile_command$compile_rpath" - - # We have no uninstalled library dependencies, so finalize right now. - exit_status=0 - func_show_eval "$link_command" 'exit_status=$?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Delete the generated files. - if test -f "$output_objdir/${outputname}S.${objext}"; then - func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' - fi - - exit $exit_status - fi - - if test -n "$compile_shlibpath$finalize_shlibpath"; then - compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" - fi - if test -n "$finalize_shlibpath"; then - finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" - fi - - compile_var= - finalize_var= - if test -n "$runpath_var"; then - if test -n "$perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $perm_rpath; do - func_append rpath "$dir:" - done - compile_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - if test -n "$finalize_perm_rpath"; then - # We should set the runpath_var. - rpath= - for dir in $finalize_perm_rpath; do - func_append rpath "$dir:" - done - finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " - fi - fi - - if test "$no_install" = yes; then - # We don't need to create a wrapper script. - link_command="$compile_var$compile_command$compile_rpath" - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` - # Delete the old output file. - $opt_dry_run || $RM $output - # Link the executable and exit - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - exit $EXIT_SUCCESS - fi - - if test "$hardcode_action" = relink; then - # Fast installation is not supported - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - - func_warning "this platform does not like uninstalled shared libraries" - func_warning "\`$output' will be relinked during installation" - else - if test "$fast_install" != no; then - link_command="$finalize_var$compile_command$finalize_rpath" - if test "$fast_install" = yes; then - relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` - else - # fast_install is set to needless - relink_command= - fi - else - link_command="$compile_var$compile_command$compile_rpath" - relink_command="$finalize_var$finalize_command$finalize_rpath" - fi - fi - - # Replace the output file specification. - link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` - - # Delete the old output files. - $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname - - func_show_eval "$link_command" 'exit $?' - - if test -n "$postlink_cmds"; then - func_to_tool_file "$output_objdir/$outputname" - postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` - func_execute_cmds "$postlink_cmds" 'exit $?' - fi - - # Now create the wrapper script. - func_verbose "creating $output" - - # Quote the relink command for shipping. - if test -n "$relink_command"; then - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - relink_command="(cd `pwd`; $relink_command)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - fi - - # Only actually do things if not in dry run mode. - $opt_dry_run || { - # win32 will think the script is a binary if it has - # a .exe suffix, so we strip it off here. - case $output in - *.exe) func_stripname '' '.exe' "$output" - output=$func_stripname_result ;; - esac - # test for cygwin because mv fails w/o .exe extensions - case $host in - *cygwin*) - exeext=.exe - func_stripname '' '.exe' "$outputname" - outputname=$func_stripname_result ;; - *) exeext= ;; - esac - case $host in - *cygwin* | *mingw* ) - func_dirname_and_basename "$output" "" "." - output_name=$func_basename_result - output_path=$func_dirname_result - cwrappersource="$output_path/$objdir/lt-$output_name.c" - cwrapper="$output_path/$output_name.exe" - $RM $cwrappersource $cwrapper - trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 - - func_emit_cwrapperexe_src > $cwrappersource - - # The wrapper executable is built using the $host compiler, - # because it contains $host paths and files. If cross- - # compiling, it, like the target executable, must be - # executed on the $host or under an emulation environment. - $opt_dry_run || { - $LTCC $LTCFLAGS -o $cwrapper $cwrappersource - $STRIP $cwrapper - } - - # Now, create the wrapper script for func_source use: - func_ltwrapper_scriptname $cwrapper - $RM $func_ltwrapper_scriptname_result - trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 - $opt_dry_run || { - # note: this script will not be executed, so do not chmod. - if test "x$build" = "x$host" ; then - $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result - else - func_emit_wrapper no > $func_ltwrapper_scriptname_result - fi - } - ;; - * ) - $RM $output - trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 - - func_emit_wrapper no > $output - chmod +x $output - ;; - esac - } - exit $EXIT_SUCCESS - ;; - esac - - # See if we need to build an old-fashioned archive. - for oldlib in $oldlibs; do - - if test "$build_libtool_libs" = convenience; then - oldobjs="$libobjs_save $symfileobj" - addlibs="$convenience" - build_libtool_libs=no - else - if test "$build_libtool_libs" = module; then - oldobjs="$libobjs_save" - build_libtool_libs=no - else - oldobjs="$old_deplibs $non_pic_objects" - if test "$preload" = yes && test -f "$symfileobj"; then - func_append oldobjs " $symfileobj" - fi - fi - addlibs="$old_convenience" - fi - - if test -n "$addlibs"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $addlibs - func_append oldobjs " $func_extract_archives_result" - fi - - # Do each command in the archive commands. - if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then - cmds=$old_archive_from_new_cmds - else - - # Add any objects from preloaded convenience libraries - if test -n "$dlprefiles"; then - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - - func_extract_archives $gentop $dlprefiles - func_append oldobjs " $func_extract_archives_result" - fi - - # POSIX demands no paths to be encoded in archives. We have - # to avoid creating archives with duplicate basenames if we - # might have to extract them afterwards, e.g., when creating a - # static archive out of a convenience library, or when linking - # the entirety of a libtool archive into another (currently - # not supported by libtool). - if (for obj in $oldobjs - do - func_basename "$obj" - $ECHO "$func_basename_result" - done | sort | sort -uc >/dev/null 2>&1); then - : - else - echo "copying selected object files to avoid basename conflicts..." - gentop="$output_objdir/${outputname}x" - func_append generated " $gentop" - func_mkdir_p "$gentop" - save_oldobjs=$oldobjs - oldobjs= - counter=1 - for obj in $save_oldobjs - do - func_basename "$obj" - objbase="$func_basename_result" - case " $oldobjs " in - " ") oldobjs=$obj ;; - *[\ /]"$objbase "*) - while :; do - # Make sure we don't pick an alternate name that also - # overlaps. - newobj=lt$counter-$objbase - func_arith $counter + 1 - counter=$func_arith_result - case " $oldobjs " in - *[\ /]"$newobj "*) ;; - *) if test ! -f "$gentop/$newobj"; then break; fi ;; - esac - done - func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" - func_append oldobjs " $gentop/$newobj" - ;; - *) func_append oldobjs " $obj" ;; - esac - done - fi - eval cmds=\"$old_archive_cmds\" - - func_len " $cmds" - len=$func_len_result - if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then - cmds=$old_archive_cmds - elif test -n "$archiver_list_spec"; then - func_verbose "using command file archive linking..." - for obj in $oldobjs - do - func_to_tool_file "$obj" - $ECHO "$func_to_tool_file_result" - done > $output_objdir/$libname.libcmd - func_to_tool_file "$output_objdir/$libname.libcmd" - oldobjs=" $archiver_list_spec$func_to_tool_file_result" - cmds=$old_archive_cmds - else - # the command line is too long to link in one step, link in parts - func_verbose "using piecewise archive linking..." - save_RANLIB=$RANLIB - RANLIB=: - objlist= - concat_cmds= - save_oldobjs=$oldobjs - oldobjs= - # Is there a better way of finding the last object in the list? - for obj in $save_oldobjs - do - last_oldobj=$obj - done - eval test_cmds=\"$old_archive_cmds\" - func_len " $test_cmds" - len0=$func_len_result - len=$len0 - for obj in $save_oldobjs - do - func_len " $obj" - func_arith $len + $func_len_result - len=$func_arith_result - func_append objlist " $obj" - if test "$len" -lt "$max_cmd_len"; then - : - else - # the above command should be used before it gets too long - oldobjs=$objlist - if test "$obj" = "$last_oldobj" ; then - RANLIB=$save_RANLIB - fi - test -z "$concat_cmds" || concat_cmds=$concat_cmds~ - eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" - objlist= - len=$len0 - fi - done - RANLIB=$save_RANLIB - oldobjs=$objlist - if test "X$oldobjs" = "X" ; then - eval cmds=\"\$concat_cmds\" - else - eval cmds=\"\$concat_cmds~\$old_archive_cmds\" - fi - fi - fi - func_execute_cmds "$cmds" 'exit $?' - done - - test -n "$generated" && \ - func_show_eval "${RM}r$generated" - - # Now create the libtool archive. - case $output in - *.la) - old_library= - test "$build_old_libs" = yes && old_library="$libname.$libext" - func_verbose "creating $output" - - # Preserve any variables that may affect compiler behavior - for var in $variables_saved_for_relink; do - if eval test -z \"\${$var+set}\"; then - relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" - elif eval var_value=\$$var; test -z "$var_value"; then - relink_command="$var=; export $var; $relink_command" - else - func_quote_for_eval "$var_value" - relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" - fi - done - # Quote the link command for shipping. - relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" - relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` - if test "$hardcode_automatic" = yes ; then - relink_command= - fi - - # Only create the output if not a dry run. - $opt_dry_run || { - for installed in no yes; do - if test "$installed" = yes; then - if test -z "$install_libdir"; then - break - fi - output="$output_objdir/$outputname"i - # Replace all uninstalled libtool libraries with the installed ones - newdependency_libs= - for deplib in $dependency_libs; do - case $deplib in - *.la) - func_basename "$deplib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` - test -z "$libdir" && \ - func_fatal_error "\`$deplib' is not a valid libtool archive" - func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" - ;; - -L*) - func_stripname -L '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -L$func_replace_sysroot_result" - ;; - -R*) - func_stripname -R '' "$deplib" - func_replace_sysroot "$func_stripname_result" - func_append newdependency_libs " -R$func_replace_sysroot_result" - ;; - *) func_append newdependency_libs " $deplib" ;; - esac - done - dependency_libs="$newdependency_libs" - newdlfiles= - - for lib in $dlfiles; do - case $lib in - *.la) - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" - ;; - *) func_append newdlfiles " $lib" ;; - esac - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - *.la) - # Only pass preopened files to the pseudo-archive (for - # eventual linking with the app. that links it) if we - # didn't already link the preopened objects directly into - # the library: - func_basename "$lib" - name="$func_basename_result" - eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` - test -z "$libdir" && \ - func_fatal_error "\`$lib' is not a valid libtool archive" - func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" - ;; - esac - done - dlprefiles="$newdlprefiles" - else - newdlfiles= - for lib in $dlfiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlfiles " $abs" - done - dlfiles="$newdlfiles" - newdlprefiles= - for lib in $dlprefiles; do - case $lib in - [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; - *) abs=`pwd`"/$lib" ;; - esac - func_append newdlprefiles " $abs" - done - dlprefiles="$newdlprefiles" - fi - $RM $output - # place dlname in correct position for cygwin - # In fact, it would be nice if we could use this code for all target - # systems that can't hard-code library paths into their executables - # and that have no shared library path variable independent of PATH, - # but it turns out we can't easily determine that from inspecting - # libtool variables, so we have to hard-code the OSs to which it - # applies here; at the moment, that means platforms that use the PE - # object format with DLL files. See the long comment at the top of - # tests/bindir.at for full details. - tdlname=$dlname - case $host,$output,$installed,$module,$dlname in - *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) - # If a -bindir argument was supplied, place the dll there. - if test "x$bindir" != x ; - then - func_relative_path "$install_libdir" "$bindir" - tdlname=$func_relative_path_result$dlname - else - # Otherwise fall back on heuristic. - tdlname=../bin/$dlname - fi - ;; - esac - $ECHO > $output "\ -# $outputname - a libtool library file -# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION -# -# Please DO NOT delete this file! -# It is necessary for linking the library. - -# The name that we can dlopen(3). -dlname='$tdlname' - -# Names of this library. -library_names='$library_names' - -# The name of the static archive. -old_library='$old_library' - -# Linker flags that can not go in dependency_libs. -inherited_linker_flags='$new_inherited_linker_flags' - -# Libraries that this one depends upon. -dependency_libs='$dependency_libs' - -# Names of additional weak libraries provided by this library -weak_library_names='$weak_libs' - -# Version information for $libname. -current=$current -age=$age -revision=$revision - -# Is this an already installed library? -installed=$installed - -# Should we warn about portability when linking against -modules? -shouldnotlink=$module - -# Files to dlopen/dlpreopen -dlopen='$dlfiles' -dlpreopen='$dlprefiles' - -# Directory that this library needs to be installed in: -libdir='$install_libdir'" - if test "$installed" = no && test "$need_relink" = yes; then - $ECHO >> $output "\ -relink_command=\"$relink_command\"" - fi - done - } - - # Do a symbolic link so that the libtool archive can be found in - # LD_LIBRARY_PATH before the program is installed. - func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' - ;; - esac - exit $EXIT_SUCCESS -} - -{ test "$opt_mode" = link || test "$opt_mode" = relink; } && - func_mode_link ${1+"$@"} - - -# func_mode_uninstall arg... -func_mode_uninstall () -{ - $opt_debug - RM="$nonopt" - files= - rmforce= - exit_status=0 - - # This variable tells wrapper scripts just to set variables rather - # than running their programs. - libtool_install_magic="$magic" - - for arg - do - case $arg in - -f) func_append RM " $arg"; rmforce=yes ;; - -*) func_append RM " $arg" ;; - *) func_append files " $arg" ;; - esac - done - - test -z "$RM" && \ - func_fatal_help "you must specify an RM program" - - rmdirs= - - for file in $files; do - func_dirname "$file" "" "." - dir="$func_dirname_result" - if test "X$dir" = X.; then - odir="$objdir" - else - odir="$dir/$objdir" - fi - func_basename "$file" - name="$func_basename_result" - test "$opt_mode" = uninstall && odir="$dir" - - # Remember odir for removal later, being careful to avoid duplicates - if test "$opt_mode" = clean; then - case " $rmdirs " in - *" $odir "*) ;; - *) func_append rmdirs " $odir" ;; - esac - fi - - # Don't error if the file doesn't exist and rm -f was used. - if { test -L "$file"; } >/dev/null 2>&1 || - { test -h "$file"; } >/dev/null 2>&1 || - test -f "$file"; then - : - elif test -d "$file"; then - exit_status=1 - continue - elif test "$rmforce" = yes; then - continue - fi - - rmfiles="$file" - - case $name in - *.la) - # Possibly a libtool archive, so verify it. - if func_lalib_p "$file"; then - func_source $dir/$name - - # Delete the libtool libraries and symlinks. - for n in $library_names; do - func_append rmfiles " $odir/$n" - done - test -n "$old_library" && func_append rmfiles " $odir/$old_library" - - case "$opt_mode" in - clean) - case " $library_names " in - *" $dlname "*) ;; - *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; - esac - test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" - ;; - uninstall) - if test -n "$library_names"; then - # Do each command in the postuninstall commands. - func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - - if test -n "$old_library"; then - # Do each command in the old_postuninstall commands. - func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' - fi - # FIXME: should reinstall the best remaining shared library. - ;; - esac - fi - ;; - - *.lo) - # Possibly a libtool object, so verify it. - if func_lalib_p "$file"; then - - # Read the .lo file - func_source $dir/$name - - # Add PIC object to the list of files to remove. - if test -n "$pic_object" && - test "$pic_object" != none; then - func_append rmfiles " $dir/$pic_object" - fi - - # Add non-PIC object to the list of files to remove. - if test -n "$non_pic_object" && - test "$non_pic_object" != none; then - func_append rmfiles " $dir/$non_pic_object" - fi - fi - ;; - - *) - if test "$opt_mode" = clean ; then - noexename=$name - case $file in - *.exe) - func_stripname '' '.exe' "$file" - file=$func_stripname_result - func_stripname '' '.exe' "$name" - noexename=$func_stripname_result - # $file with .exe has already been added to rmfiles, - # add $file without .exe - func_append rmfiles " $file" - ;; - esac - # Do a test to see if this is a libtool program. - if func_ltwrapper_p "$file"; then - if func_ltwrapper_executable_p "$file"; then - func_ltwrapper_scriptname "$file" - relink_command= - func_source $func_ltwrapper_scriptname_result - func_append rmfiles " $func_ltwrapper_scriptname_result" - else - relink_command= - func_source $dir/$noexename - fi - - # note $name still contains .exe if it was in $file originally - # as does the version of $file that was added into $rmfiles - func_append rmfiles " $odir/$name $odir/${name}S.${objext}" - if test "$fast_install" = yes && test -n "$relink_command"; then - func_append rmfiles " $odir/lt-$name" - fi - if test "X$noexename" != "X$name" ; then - func_append rmfiles " $odir/lt-${noexename}.c" - fi - fi - fi - ;; - esac - func_show_eval "$RM $rmfiles" 'exit_status=1' - done - - # Try to remove the ${objdir}s in the directories where we deleted files - for dir in $rmdirs; do - if test -d "$dir"; then - func_show_eval "rmdir $dir >/dev/null 2>&1" - fi - done - - exit $exit_status -} - -{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && - func_mode_uninstall ${1+"$@"} - -test -z "$opt_mode" && { - help="$generic_help" - func_fatal_help "you must specify a MODE" -} - -test -z "$exec_cmd" && \ - func_fatal_help "invalid operation mode \`$opt_mode'" - -if test -n "$exec_cmd"; then - eval exec "$exec_cmd" - exit $EXIT_FAILURE -fi - -exit $exit_status - - -# The TAGs below are defined such that we never get into a situation -# in which we disable both kinds of libraries. Given conflicting -# choices, we go for a static library, that is the most portable, -# since we can't tell whether shared libraries were disabled because -# the user asked for that or because the platform doesn't support -# them. This is particularly important on AIX, because we don't -# support having both static and shared libraries enabled at the same -# time on that platform, so we default to a shared-only configuration. -# If a disable-shared tag is given, we'll fallback to a static-only -# configuration. But we'll never go from static-only to shared-only. - -# ### BEGIN LIBTOOL TAG CONFIG: disable-shared -build_libtool_libs=no -build_old_libs=yes -# ### END LIBTOOL TAG CONFIG: disable-shared - -# ### BEGIN LIBTOOL TAG CONFIG: disable-static -build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` -# ### END LIBTOOL TAG CONFIG: disable-static - -# Local Variables: -# mode:shell-script -# sh-indentation:2 -# End: -# vi:sw=2 - diff --git a/src/spatialite/m4/libtool.m4 b/src/spatialite/m4/libtool.m4 deleted file mode 100644 index 88de383..0000000 --- a/src/spatialite/m4/libtool.m4 +++ /dev/null @@ -1,7835 +0,0 @@ -# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- -# -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -m4_define([_LT_COPYING], [dnl -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, -# Inc. -# Written by Gordon Matzigkeit, 1996 -# -# This file is part of GNU Libtool. -# -# GNU Libtool is free software; you can redistribute it and/or -# modify it under the terms of the GNU General Public License as -# published by the Free Software Foundation; either version 2 of -# the License, or (at your option) any later version. -# -# As a special exception to the GNU General Public License, -# if you distribute this file as part of a program or library that -# is built using GNU Libtool, you may include this file under the -# same distribution terms that you use for the rest of that program. -# -# GNU Libtool is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Libtool; see the file COPYING. If not, a copy -# can be downloaded from http://www.gnu.org/licenses/gpl.html, or -# obtained by writing to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. -]) - -# serial 57 LT_INIT - - -# LT_PREREQ(VERSION) -# ------------------ -# Complain and exit if this libtool version is less that VERSION. -m4_defun([LT_PREREQ], -[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, - [m4_default([$3], - [m4_fatal([Libtool version $1 or higher is required], - 63)])], - [$2])]) - - -# _LT_CHECK_BUILDDIR -# ------------------ -# Complain if the absolute build directory name contains unusual characters -m4_defun([_LT_CHECK_BUILDDIR], -[case `pwd` in - *\ * | *\ *) - AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; -esac -]) - - -# LT_INIT([OPTIONS]) -# ------------------ -AC_DEFUN([LT_INIT], -[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT -AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl -AC_BEFORE([$0], [LT_LANG])dnl -AC_BEFORE([$0], [LT_OUTPUT])dnl -AC_BEFORE([$0], [LTDL_INIT])dnl -m4_require([_LT_CHECK_BUILDDIR])dnl - -dnl Autoconf doesn't catch unexpanded LT_ macros by default: -m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl -m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl -dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 -dnl unless we require an AC_DEFUNed macro: -AC_REQUIRE([LTOPTIONS_VERSION])dnl -AC_REQUIRE([LTSUGAR_VERSION])dnl -AC_REQUIRE([LTVERSION_VERSION])dnl -AC_REQUIRE([LTOBSOLETE_VERSION])dnl -m4_require([_LT_PROG_LTMAIN])dnl - -_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) - -dnl Parse OPTIONS -_LT_SET_OPTIONS([$0], [$1]) - -# This can be used to rebuild libtool when needed -LIBTOOL_DEPS="$ltmain" - -# Always use our own libtool. -LIBTOOL='$(SHELL) $(top_builddir)/libtool' -AC_SUBST(LIBTOOL)dnl - -_LT_SETUP - -# Only expand once: -m4_define([LT_INIT]) -])# LT_INIT - -# Old names: -AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) -AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PROG_LIBTOOL], []) -dnl AC_DEFUN([AM_PROG_LIBTOOL], []) - - -# _LT_CC_BASENAME(CC) -# ------------------- -# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. -m4_defun([_LT_CC_BASENAME], -[for cc_temp in $1""; do - case $cc_temp in - compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; - distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; - \-*) ;; - *) break;; - esac -done -cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` -]) - - -# _LT_FILEUTILS_DEFAULTS -# ---------------------- -# It is okay to use these file commands and assume they have been set -# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. -m4_defun([_LT_FILEUTILS_DEFAULTS], -[: ${CP="cp -f"} -: ${MV="mv -f"} -: ${RM="rm -f"} -])# _LT_FILEUTILS_DEFAULTS - - -# _LT_SETUP -# --------- -m4_defun([_LT_SETUP], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl - -_LT_DECL([], [host_alias], [0], [The host system])dnl -_LT_DECL([], [host], [0])dnl -_LT_DECL([], [host_os], [0])dnl -dnl -_LT_DECL([], [build_alias], [0], [The build system])dnl -_LT_DECL([], [build], [0])dnl -_LT_DECL([], [build_os], [0])dnl -dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -dnl -AC_REQUIRE([AC_PROG_LN_S])dnl -test -z "$LN_S" && LN_S="ln -s" -_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl -dnl -AC_REQUIRE([LT_CMD_MAX_LEN])dnl -_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl -_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl -dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl -m4_require([_LT_CMD_RELOAD])dnl -m4_require([_LT_CHECK_MAGIC_METHOD])dnl -m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl -m4_require([_LT_CMD_OLD_ARCHIVE])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_WITH_SYSROOT])dnl - -_LT_CONFIG_LIBTOOL_INIT([ -# See if we are running on zsh, and set the options which allow our -# commands through without removal of \ escapes INIT. -if test -n "\${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi -]) -if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST -fi - -_LT_CHECK_OBJDIR - -m4_require([_LT_TAG_COMPILER])dnl - -case $host_os in -aix3*) - # AIX sometimes has problems with the GCC collect2 program. For some - # reason, if we set the COLLECT_NAMES environment variable, the problems - # vanish in a puff of smoke. - if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES - fi - ;; -esac - -# Global variables: -ofile=libtool -can_build_shared=yes - -# All known linkers require a `.a' archive for static linking (except MSVC, -# which needs '.lib'). -libext=a - -with_gnu_ld="$lt_cv_prog_gnu_ld" - -old_CC="$CC" -old_CFLAGS="$CFLAGS" - -# Set sane defaults for various variables -test -z "$CC" && CC=cc -test -z "$LTCC" && LTCC=$CC -test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS -test -z "$LD" && LD=ld -test -z "$ac_objext" && ac_objext=o - -_LT_CC_BASENAME([$compiler]) - -# Only perform the check for file, if the check method requires it -test -z "$MAGIC_CMD" && MAGIC_CMD=file -case $deplibs_check_method in -file_magic*) - if test "$file_magic_cmd" = '$MAGIC_CMD'; then - _LT_PATH_MAGIC - fi - ;; -esac - -# Use C for the default configuration in the libtool script -LT_SUPPORTED_TAG([CC]) -_LT_LANG_C_CONFIG -_LT_LANG_DEFAULT_CONFIG -_LT_CONFIG_COMMANDS -])# _LT_SETUP - - -# _LT_PREPARE_SED_QUOTE_VARS -# -------------------------- -# Define a few sed substitution that help us do robust quoting. -m4_defun([_LT_PREPARE_SED_QUOTE_VARS], -[# Backslashify metacharacters that are still active within -# double-quoted strings. -sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' - -# Same as above, but do not quote variable references. -double_quote_subst='s/\([["`\\]]\)/\\\1/g' - -# Sed substitution to delay expansion of an escaped shell variable in a -# double_quote_subst'ed string. -delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' - -# Sed substitution to delay expansion of an escaped single quote. -delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' - -# Sed substitution to avoid accidental globbing in evaled expressions -no_glob_subst='s/\*/\\\*/g' -]) - -# _LT_PROG_LTMAIN -# --------------- -# Note that this code is called both from `configure', and `config.status' -# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, -# `config.status' has no value for ac_aux_dir unless we are using Automake, -# so we pass a copy along to make sure it has a sensible value anyway. -m4_defun([_LT_PROG_LTMAIN], -[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl -_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) -ltmain="$ac_aux_dir/ltmain.sh" -])# _LT_PROG_LTMAIN - - -## ------------------------------------- ## -## Accumulate code for creating libtool. ## -## ------------------------------------- ## - -# So that we can recreate a full libtool script including additional -# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS -# in macros and then make a single call at the end using the `libtool' -# label. - - -# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) -# ---------------------------------------- -# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL_INIT], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_INIT], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_INIT]) - - -# _LT_CONFIG_LIBTOOL([COMMANDS]) -# ------------------------------ -# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. -m4_define([_LT_CONFIG_LIBTOOL], -[m4_ifval([$1], - [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], - [$1 -])])]) - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) - - -# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) -# ----------------------------------------------------- -m4_defun([_LT_CONFIG_SAVE_COMMANDS], -[_LT_CONFIG_LIBTOOL([$1]) -_LT_CONFIG_LIBTOOL_INIT([$2]) -]) - - -# _LT_FORMAT_COMMENT([COMMENT]) -# ----------------------------- -# Add leading comment marks to the start of each line, and a trailing -# full-stop to the whole comment if one is not present already. -m4_define([_LT_FORMAT_COMMENT], -[m4_ifval([$1], [ -m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], - [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) -)]) - - - -## ------------------------ ## -## FIXME: Eliminate VARNAME ## -## ------------------------ ## - - -# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) -# ------------------------------------------------------------------- -# CONFIGNAME is the name given to the value in the libtool script. -# VARNAME is the (base) name used in the configure script. -# VALUE may be 0, 1 or 2 for a computed quote escaped value based on -# VARNAME. Any other value will be used directly. -m4_define([_LT_DECL], -[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], - [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], - [m4_ifval([$1], [$1], [$2])]) - lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) - m4_ifval([$4], - [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) - lt_dict_add_subkey([lt_decl_dict], [$2], - [tagged?], [m4_ifval([$5], [yes], [no])])]) -]) - - -# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) -# -------------------------------------------------------- -m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) - - -# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_tag_varnames], -[_lt_decl_filter([tagged?], [yes], $@)]) - - -# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) -# --------------------------------------------------------- -m4_define([_lt_decl_filter], -[m4_case([$#], - [0], [m4_fatal([$0: too few arguments: $#])], - [1], [m4_fatal([$0: too few arguments: $#: $1])], - [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], - [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], - [lt_dict_filter([lt_decl_dict], $@)])[]dnl -]) - - -# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) -# -------------------------------------------------- -m4_define([lt_decl_quote_varnames], -[_lt_decl_filter([value], [1], $@)]) - - -# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_dquote_varnames], -[_lt_decl_filter([value], [2], $@)]) - - -# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) -# --------------------------------------------------- -m4_define([lt_decl_varnames_tagged], -[m4_assert([$# <= 2])dnl -_$0(m4_quote(m4_default([$1], [[, ]])), - m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), - m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) -m4_define([_lt_decl_varnames_tagged], -[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) - - -# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) -# ------------------------------------------------ -m4_define([lt_decl_all_varnames], -[_$0(m4_quote(m4_default([$1], [[, ]])), - m4_if([$2], [], - m4_quote(lt_decl_varnames), - m4_quote(m4_shift($@))))[]dnl -]) -m4_define([_lt_decl_all_varnames], -[lt_join($@, lt_decl_varnames_tagged([$1], - lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl -]) - - -# _LT_CONFIG_STATUS_DECLARE([VARNAME]) -# ------------------------------------ -# Quote a variable value, and forward it to `config.status' so that its -# declaration there will have the same value as in `configure'. VARNAME -# must have a single quote delimited value for this to work. -m4_define([_LT_CONFIG_STATUS_DECLARE], -[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) - - -# _LT_CONFIG_STATUS_DECLARATIONS -# ------------------------------ -# We delimit libtool config variables with single quotes, so when -# we write them to config.status, we have to be sure to quote all -# embedded single quotes properly. In configure, this macro expands -# each variable declared with _LT_DECL (and _LT_TAGDECL) into: -# -# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' -m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], -[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), - [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAGS -# ---------------- -# Output comment and list of tags supported by the script -m4_defun([_LT_LIBTOOL_TAGS], -[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl -available_tags="_LT_TAGS"dnl -]) - - -# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) -# ----------------------------------- -# Extract the dictionary values for VARNAME (optionally with TAG) and -# expand to a commented shell variable setting: -# -# # Some comment about what VAR is for. -# visible_name=$lt_internal_name -m4_define([_LT_LIBTOOL_DECLARE], -[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], - [description])))[]dnl -m4_pushdef([_libtool_name], - m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl -m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), - [0], [_libtool_name=[$]$1], - [1], [_libtool_name=$lt_[]$1], - [2], [_libtool_name=$lt_[]$1], - [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl -m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl -]) - - -# _LT_LIBTOOL_CONFIG_VARS -# ----------------------- -# Produce commented declarations of non-tagged libtool config variables -# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' -# script. Tagged libtool config variables (even for the LIBTOOL CONFIG -# section) are produced by _LT_LIBTOOL_TAG_VARS. -m4_defun([_LT_LIBTOOL_CONFIG_VARS], -[m4_foreach([_lt_var], - m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) - - -# _LT_LIBTOOL_TAG_VARS(TAG) -# ------------------------- -m4_define([_LT_LIBTOOL_TAG_VARS], -[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), - [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) - - -# _LT_TAGVAR(VARNAME, [TAGNAME]) -# ------------------------------ -m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) - - -# _LT_CONFIG_COMMANDS -# ------------------- -# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of -# variables for single and double quote escaping we saved from calls -# to _LT_DECL, we can put quote escaped variables declarations -# into `config.status', and then the shell code to quote escape them in -# for loops in `config.status'. Finally, any additional code accumulated -# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. -m4_defun([_LT_CONFIG_COMMANDS], -[AC_PROVIDE_IFELSE([LT_OUTPUT], - dnl If the libtool generation code has been placed in $CONFIG_LT, - dnl instead of duplicating it all over again into config.status, - dnl then we will have config.status run $CONFIG_LT later, so it - dnl needs to know what name is stored there: - [AC_CONFIG_COMMANDS([libtool], - [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], - dnl If the libtool generation code is destined for config.status, - dnl expand the accumulated commands and init code now: - [AC_CONFIG_COMMANDS([libtool], - [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) -])#_LT_CONFIG_COMMANDS - - -# Initialize. -m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], -[ - -# The HP-UX ksh and POSIX shell print the target directory to stdout -# if CDPATH is set. -(unset CDPATH) >/dev/null 2>&1 && unset CDPATH - -sed_quote_subst='$sed_quote_subst' -double_quote_subst='$double_quote_subst' -delay_variable_subst='$delay_variable_subst' -_LT_CONFIG_STATUS_DECLARATIONS -LTCC='$LTCC' -LTCFLAGS='$LTCFLAGS' -compiler='$compiler_DEFAULT' - -# A function that is used when there is no print builtin or printf. -func_fallback_echo () -{ - eval 'cat <<_LTECHO_EOF -\$[]1 -_LTECHO_EOF' -} - -# Quote evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_quote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -# Double-quote double-evaled strings. -for var in lt_decl_all_varnames([[ \ -]], lt_decl_dquote_varnames); do - case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in - *[[\\\\\\\`\\"\\\$]]*) - eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" - ;; - *) - eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" - ;; - esac -done - -_LT_OUTPUT_LIBTOOL_INIT -]) - -# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) -# ------------------------------------ -# Generate a child script FILE with all initialization necessary to -# reuse the environment learned by the parent script, and make the -# file executable. If COMMENT is supplied, it is inserted after the -# `#!' sequence but before initialization text begins. After this -# macro, additional text can be appended to FILE to form the body of -# the child script. The macro ends with non-zero status if the -# file could not be fully written (such as if the disk is full). -m4_ifdef([AS_INIT_GENERATED], -[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], -[m4_defun([_LT_GENERATED_FILE_INIT], -[m4_require([AS_PREPARE])]dnl -[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl -[lt_write_fail=0 -cat >$1 <<_ASEOF || lt_write_fail=1 -#! $SHELL -# Generated by $as_me. -$2 -SHELL=\${CONFIG_SHELL-$SHELL} -export SHELL -_ASEOF -cat >>$1 <<\_ASEOF || lt_write_fail=1 -AS_SHELL_SANITIZE -_AS_PREPARE -exec AS_MESSAGE_FD>&1 -_ASEOF -test $lt_write_fail = 0 && chmod +x $1[]dnl -m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT - -# LT_OUTPUT -# --------- -# This macro allows early generation of the libtool script (before -# AC_OUTPUT is called), incase it is used in configure for compilation -# tests. -AC_DEFUN([LT_OUTPUT], -[: ${CONFIG_LT=./config.lt} -AC_MSG_NOTICE([creating $CONFIG_LT]) -_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], -[# Run this file to recreate a libtool stub with the current configuration.]) - -cat >>"$CONFIG_LT" <<\_LTEOF -lt_cl_silent=false -exec AS_MESSAGE_LOG_FD>>config.log -{ - echo - AS_BOX([Running $as_me.]) -} >&AS_MESSAGE_LOG_FD - -lt_cl_help="\ -\`$as_me' creates a local libtool stub from the current configuration, -for use in further configure time tests before the real libtool is -generated. - -Usage: $[0] [[OPTIONS]] - - -h, --help print this help, then exit - -V, --version print version number, then exit - -q, --quiet do not print progress messages - -d, --debug don't remove temporary files - -Report bugs to ." - -lt_cl_version="\ -m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl -m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) -configured by $[0], generated by m4_PACKAGE_STRING. - -Copyright (C) 2010 Free Software Foundation, Inc. -This config.lt script is free software; the Free Software Foundation -gives unlimited permision to copy, distribute and modify it." - -while test $[#] != 0 -do - case $[1] in - --version | --v* | -V ) - echo "$lt_cl_version"; exit 0 ;; - --help | --h* | -h ) - echo "$lt_cl_help"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --quiet | --q* | --silent | --s* | -q ) - lt_cl_silent=: ;; - - -*) AC_MSG_ERROR([unrecognized option: $[1] -Try \`$[0] --help' for more information.]) ;; - - *) AC_MSG_ERROR([unrecognized argument: $[1] -Try \`$[0] --help' for more information.]) ;; - esac - shift -done - -if $lt_cl_silent; then - exec AS_MESSAGE_FD>/dev/null -fi -_LTEOF - -cat >>"$CONFIG_LT" <<_LTEOF -_LT_OUTPUT_LIBTOOL_COMMANDS_INIT -_LTEOF - -cat >>"$CONFIG_LT" <<\_LTEOF -AC_MSG_NOTICE([creating $ofile]) -_LT_OUTPUT_LIBTOOL_COMMANDS -AS_EXIT(0) -_LTEOF -chmod +x "$CONFIG_LT" - -# configure is writing to config.log, but config.lt does its own redirection, -# appending to config.log, which fails on DOS, as config.log is still kept -# open by configure. Here we exec the FD to /dev/null, effectively closing -# config.log, so it can be properly (re)opened and appended to by config.lt. -lt_cl_success=: -test "$silent" = yes && - lt_config_lt_args="$lt_config_lt_args --quiet" -exec AS_MESSAGE_LOG_FD>/dev/null -$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false -exec AS_MESSAGE_LOG_FD>>config.log -$lt_cl_success || AS_EXIT(1) -])# LT_OUTPUT - - -# _LT_CONFIG(TAG) -# --------------- -# If TAG is the built-in tag, create an initial libtool script with a -# default configuration from the untagged config vars. Otherwise add code -# to config.status for appending the configuration named by TAG from the -# matching tagged config vars. -m4_defun([_LT_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_CONFIG_SAVE_COMMANDS([ - m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl - m4_if(_LT_TAG, [C], [ - # See if we are running on zsh, and set the options which allow our - # commands through without removal of \ escapes. - if test -n "${ZSH_VERSION+set}" ; then - setopt NO_GLOB_SUBST - fi - - cfgfile="${ofile}T" - trap "$RM \"$cfgfile\"; exit 1" 1 2 15 - $RM "$cfgfile" - - cat <<_LT_EOF >> "$cfgfile" -#! $SHELL - -# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION -# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# NOTE: Changes made to this file will be lost: look at ltmain.sh. -# -_LT_COPYING -_LT_LIBTOOL_TAGS - -# ### BEGIN LIBTOOL CONFIG -_LT_LIBTOOL_CONFIG_VARS -_LT_LIBTOOL_TAG_VARS -# ### END LIBTOOL CONFIG - -_LT_EOF - - case $host_os in - aix3*) - cat <<\_LT_EOF >> "$cfgfile" -# AIX sometimes has problems with the GCC collect2 program. For some -# reason, if we set the COLLECT_NAMES environment variable, the problems -# vanish in a puff of smoke. -if test "X${COLLECT_NAMES+set}" != Xset; then - COLLECT_NAMES= - export COLLECT_NAMES -fi -_LT_EOF - ;; - esac - - _LT_PROG_LTMAIN - - # We use sed instead of cat because bash on DJGPP gets confused if - # if finds mixed CR/LF and LF-only lines. Since sed operates in - # text mode, it properly converts lines to CR/LF. This bash problem - # is reportedly fixed, but why not run on old versions too? - sed '$q' "$ltmain" >> "$cfgfile" \ - || (rm -f "$cfgfile"; exit 1) - - _LT_PROG_REPLACE_SHELLFNS - - mv -f "$cfgfile" "$ofile" || - (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") - chmod +x "$ofile" -], -[cat <<_LT_EOF >> "$ofile" - -dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded -dnl in a comment (ie after a #). -# ### BEGIN LIBTOOL TAG CONFIG: $1 -_LT_LIBTOOL_TAG_VARS(_LT_TAG) -# ### END LIBTOOL TAG CONFIG: $1 -_LT_EOF -])dnl /m4_if -], -[m4_if([$1], [], [ - PACKAGE='$PACKAGE' - VERSION='$VERSION' - TIMESTAMP='$TIMESTAMP' - RM='$RM' - ofile='$ofile'], []) -])dnl /_LT_CONFIG_SAVE_COMMANDS -])# _LT_CONFIG - - -# LT_SUPPORTED_TAG(TAG) -# --------------------- -# Trace this macro to discover what tags are supported by the libtool -# --tag option, using: -# autoconf --trace 'LT_SUPPORTED_TAG:$1' -AC_DEFUN([LT_SUPPORTED_TAG], []) - - -# C support is built-in for now -m4_define([_LT_LANG_C_enabled], []) -m4_define([_LT_TAGS], []) - - -# LT_LANG(LANG) -# ------------- -# Enable libtool support for the given language if not already enabled. -AC_DEFUN([LT_LANG], -[AC_BEFORE([$0], [LT_OUTPUT])dnl -m4_case([$1], - [C], [_LT_LANG(C)], - [C++], [_LT_LANG(CXX)], - [Java], [_LT_LANG(GCJ)], - [Fortran 77], [_LT_LANG(F77)], - [Fortran], [_LT_LANG(FC)], - [Windows Resource], [_LT_LANG(RC)], - [m4_ifdef([_LT_LANG_]$1[_CONFIG], - [_LT_LANG($1)], - [m4_fatal([$0: unsupported language: "$1"])])])dnl -])# LT_LANG - - -# _LT_LANG(LANGNAME) -# ------------------ -m4_defun([_LT_LANG], -[m4_ifdef([_LT_LANG_]$1[_enabled], [], - [LT_SUPPORTED_TAG([$1])dnl - m4_append([_LT_TAGS], [$1 ])dnl - m4_define([_LT_LANG_]$1[_enabled], [])dnl - _LT_LANG_$1_CONFIG($1)])dnl -])# _LT_LANG - - -# _LT_LANG_DEFAULT_CONFIG -# ----------------------- -m4_defun([_LT_LANG_DEFAULT_CONFIG], -[AC_PROVIDE_IFELSE([AC_PROG_CXX], - [LT_LANG(CXX)], - [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) - -AC_PROVIDE_IFELSE([AC_PROG_F77], - [LT_LANG(F77)], - [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) - -AC_PROVIDE_IFELSE([AC_PROG_FC], - [LT_LANG(FC)], - [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) - -dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal -dnl pulling things in needlessly. -AC_PROVIDE_IFELSE([AC_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], - [LT_LANG(GCJ)], - [AC_PROVIDE_IFELSE([LT_PROG_GCJ], - [LT_LANG(GCJ)], - [m4_ifdef([AC_PROG_GCJ], - [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([A][M_PROG_GCJ], - [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) - m4_ifdef([LT_PROG_GCJ], - [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) - -AC_PROVIDE_IFELSE([LT_PROG_RC], - [LT_LANG(RC)], - [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) -])# _LT_LANG_DEFAULT_CONFIG - -# Obsolete macros: -AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) -AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) -AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) -AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) -AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_CXX], []) -dnl AC_DEFUN([AC_LIBTOOL_F77], []) -dnl AC_DEFUN([AC_LIBTOOL_FC], []) -dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) -dnl AC_DEFUN([AC_LIBTOOL_RC], []) - - -# _LT_TAG_COMPILER -# ---------------- -m4_defun([_LT_TAG_COMPILER], -[AC_REQUIRE([AC_PROG_CC])dnl - -_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl -_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl -_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl -_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl - -# If no C compiler was specified, use CC. -LTCC=${LTCC-"$CC"} - -# If no C compiler flags were specified, use CFLAGS. -LTCFLAGS=${LTCFLAGS-"$CFLAGS"} - -# Allow CC to be a program name with arguments. -compiler=$CC -])# _LT_TAG_COMPILER - - -# _LT_COMPILER_BOILERPLATE -# ------------------------ -# Check for compiler boilerplate output or warnings with -# the simple compiler test code. -m4_defun([_LT_COMPILER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_compile_test_code" >conftest.$ac_ext -eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_compiler_boilerplate=`cat conftest.err` -$RM conftest* -])# _LT_COMPILER_BOILERPLATE - - -# _LT_LINKER_BOILERPLATE -# ---------------------- -# Check for linker boilerplate output or warnings with -# the simple link test code. -m4_defun([_LT_LINKER_BOILERPLATE], -[m4_require([_LT_DECL_SED])dnl -ac_outfile=conftest.$ac_objext -echo "$lt_simple_link_test_code" >conftest.$ac_ext -eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err -_lt_linker_boilerplate=`cat conftest.err` -$RM -r conftest* -])# _LT_LINKER_BOILERPLATE - -# _LT_REQUIRED_DARWIN_CHECKS -# ------------------------- -m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ - case $host_os in - rhapsody* | darwin*) - AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) - AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) - AC_CHECK_TOOL([LIPO], [lipo], [:]) - AC_CHECK_TOOL([OTOOL], [otool], [:]) - AC_CHECK_TOOL([OTOOL64], [otool64], [:]) - _LT_DECL([], [DSYMUTIL], [1], - [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) - _LT_DECL([], [NMEDIT], [1], - [Tool to change global to local symbols on Mac OS X]) - _LT_DECL([], [LIPO], [1], - [Tool to manipulate fat objects and archives on Mac OS X]) - _LT_DECL([], [OTOOL], [1], - [ldd/readelf like tool for Mach-O binaries on Mac OS X]) - _LT_DECL([], [OTOOL64], [1], - [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) - - AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], - [lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi_module to the - # link flags. - rm -rf libconftest.dylib* - echo "int foo(void){return 1;}" > conftest.c - echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ --dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib -Wl,-single_module conftest.c 2>conftest.err - _lt_result=$? - if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then - lt_cv_apple_cc_single_mod=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -rf libconftest.dylib* - rm -f conftest.* - fi]) - AC_CACHE_CHECK([for -exported_symbols_list linker flag], - [lt_cv_ld_exported_symbols_list], - [lt_cv_ld_exported_symbols_list=no - save_LDFLAGS=$LDFLAGS - echo "_main" > conftest.sym - LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [lt_cv_ld_exported_symbols_list=yes], - [lt_cv_ld_exported_symbols_list=no]) - LDFLAGS="$save_LDFLAGS" - ]) - AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], - [lt_cv_ld_force_load=no - cat > conftest.c << _LT_EOF -int forced_loaded() { return 2;} -_LT_EOF - echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD - echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD - $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD - echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD - $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD - cat > conftest.c << _LT_EOF -int main() { return 0;} -_LT_EOF - echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD - $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err - _lt_result=$? - if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then - lt_cv_ld_force_load=yes - else - cat conftest.err >&AS_MESSAGE_LOG_FD - fi - rm -f conftest.err libconftest.a conftest conftest.c - rm -rf conftest.dSYM - ]) - case $host_os in - rhapsody* | darwin1.[[012]]) - _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; - darwin1.*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - darwin*) # darwin 5.x on - # if running on 10.5 or later, the deployment target defaults - # to the OS version, if on x86, and 10.4, the deployment - # target defaults to 10.4. Don't you love it? - case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in - 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - 10.[[012]]*) - _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; - 10.*) - _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; - esac - ;; - esac - if test "$lt_cv_apple_cc_single_mod" = "yes"; then - _lt_dar_single_mod='$single_module' - fi - if test "$lt_cv_ld_exported_symbols_list" = "yes"; then - _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' - else - _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then - _lt_dsymutil='~$DSYMUTIL $lib || :' - else - _lt_dsymutil= - fi - ;; - esac -]) - - -# _LT_DARWIN_LINKER_FEATURES -# -------------------------- -# Checks for linker and compiler features on darwin -m4_defun([_LT_DARWIN_LINKER_FEATURES], -[ - m4_require([_LT_REQUIRED_DARWIN_CHECKS]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_automatic, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - if test "$lt_cv_ld_force_load" = "yes"; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='' - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" - case $cc_basename in - ifort*) _lt_dar_can_shared=yes ;; - *) _lt_dar_can_shared=$GCC ;; - esac - if test "$_lt_dar_can_shared" = "yes"; then - output_verbose_link_cmd=func_echo_all - _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" - _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" - _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" - m4_if([$1], [CXX], -[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then - _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" - _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" - fi -],[]) - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi -]) - -# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) -# ---------------------------------- -# Links a minimal program and checks the executable -# for the system default hardcoded library path. In most cases, -# this is /usr/lib:/lib, but when the MPI compilers are used -# the location of the communication and MPI libs are included too. -# If we don't find anything, use the default library path according -# to the aix ld manual. -# Store the results from the different compilers for each TAGNAME. -# Allow to override them for all tags through lt_cv_aix_libpath. -m4_defun([_LT_SYS_MODULE_PATH_AIX], -[m4_require([_LT_DECL_SED])dnl -if test "${lt_cv_aix_libpath+set}" = set; then - aix_libpath=$lt_cv_aix_libpath -else - AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], - [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ - lt_aix_libpath_sed='[ - /Import File Strings/,/^$/ { - /^0/ { - s/^0 *\([^ ]*\) *$/\1/ - p - } - }]' - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - # Check for a 64-bit object if we didn't find anything. - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` - fi],[]) - if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then - _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" - fi - ]) - aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) -fi -])# _LT_SYS_MODULE_PATH_AIX - - -# _LT_SHELL_INIT(ARG) -# ------------------- -m4_define([_LT_SHELL_INIT], -[m4_divert_text([M4SH-INIT], [$1 -])])# _LT_SHELL_INIT - - - -# _LT_PROG_ECHO_BACKSLASH -# ----------------------- -# Find how we can fake an echo command that does not interpret backslash. -# In particular, with Autoconf 2.60 or later we add some code to the start -# of the generated configure script which will find a shell with a builtin -# printf (which we can use as an echo command). -m4_defun([_LT_PROG_ECHO_BACKSLASH], -[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO -ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - -AC_MSG_CHECKING([how to print strings]) -# Test print first, because it will be a builtin if present. -if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ - test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='print -r --' -elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then - ECHO='printf %s\n' -else - # Use this function as a fallback that always works. - func_fallback_echo () - { - eval 'cat <<_LTECHO_EOF -$[]1 -_LTECHO_EOF' - } - ECHO='func_fallback_echo' -fi - -# func_echo_all arg... -# Invoke $ECHO with all args, space-separated. -func_echo_all () -{ - $ECHO "$*" -} - -case "$ECHO" in - printf*) AC_MSG_RESULT([printf]) ;; - print*) AC_MSG_RESULT([print -r]) ;; - *) AC_MSG_RESULT([cat]) ;; -esac - -m4_ifdef([_AS_DETECT_SUGGESTED], -[_AS_DETECT_SUGGESTED([ - test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( - ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO - ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO - PATH=/empty FPATH=/empty; export PATH FPATH - test "X`printf %s $ECHO`" = "X$ECHO" \ - || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) - -_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) -_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) -])# _LT_PROG_ECHO_BACKSLASH - - -# _LT_WITH_SYSROOT -# ---------------- -AC_DEFUN([_LT_WITH_SYSROOT], -[AC_MSG_CHECKING([for sysroot]) -AC_ARG_WITH([sysroot], -[ --with-sysroot[=DIR] Search for dependent libraries within DIR - (or the compiler's sysroot if not specified).], -[], [with_sysroot=no]) - -dnl lt_sysroot will always be passed unquoted. We quote it here -dnl in case the user passed a directory name. -lt_sysroot= -case ${with_sysroot} in #( - yes) - if test "$GCC" = yes; then - lt_sysroot=`$CC --print-sysroot 2>/dev/null` - fi - ;; #( - /*) - lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` - ;; #( - no|'') - ;; #( - *) - AC_MSG_RESULT([${with_sysroot}]) - AC_MSG_ERROR([The sysroot must be an absolute path.]) - ;; -esac - - AC_MSG_RESULT([${lt_sysroot:-no}]) -_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl -[dependent libraries, and in which our libraries should be installed.])]) - -# _LT_ENABLE_LOCK -# --------------- -m4_defun([_LT_ENABLE_LOCK], -[AC_ARG_ENABLE([libtool-lock], - [AS_HELP_STRING([--disable-libtool-lock], - [avoid locking (might break parallel builds)])]) -test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes - -# Some flags need to be propagated to the compiler or linker for good -# libtool support. -case $host in -ia64-*-hpux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.$ac_objext` in - *ELF-32*) - HPUX_IA64_MODE="32" - ;; - *ELF-64*) - HPUX_IA64_MODE="64" - ;; - esac - fi - rm -rf conftest* - ;; -*-*-irix6*) - # Find out which ABI we are using. - echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - if test "$lt_cv_prog_gnu_ld" = yes; then - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -melf32bsmip" - ;; - *N32*) - LD="${LD-ld} -melf32bmipn32" - ;; - *64-bit*) - LD="${LD-ld} -melf64bmip" - ;; - esac - else - case `/usr/bin/file conftest.$ac_objext` in - *32-bit*) - LD="${LD-ld} -32" - ;; - *N32*) - LD="${LD-ld} -n32" - ;; - *64-bit*) - LD="${LD-ld} -64" - ;; - esac - fi - fi - rm -rf conftest* - ;; - -x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ -s390*-*linux*|s390*-*tpf*|sparc*-*linux*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *32-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_i386_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_i386" - ;; - ppc64-*linux*|powerpc64-*linux*) - LD="${LD-ld} -m elf32ppclinux" - ;; - s390x-*linux*) - LD="${LD-ld} -m elf_s390" - ;; - sparc64-*linux*) - LD="${LD-ld} -m elf32_sparc" - ;; - esac - ;; - *64-bit*) - case $host in - x86_64-*kfreebsd*-gnu) - LD="${LD-ld} -m elf_x86_64_fbsd" - ;; - x86_64-*linux*) - LD="${LD-ld} -m elf_x86_64" - ;; - ppc*-*linux*|powerpc*-*linux*) - LD="${LD-ld} -m elf64ppc" - ;; - s390*-*linux*|s390*-*tpf*) - LD="${LD-ld} -m elf64_s390" - ;; - sparc*-*linux*) - LD="${LD-ld} -m elf64_sparc" - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; - -*-*-sco3.2v5*) - # On SCO OpenServer 5, we need -belf to get full-featured binaries. - SAVE_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS -belf" - AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, - [AC_LANG_PUSH(C) - AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) - AC_LANG_POP]) - if test x"$lt_cv_cc_needs_belf" != x"yes"; then - # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf - CFLAGS="$SAVE_CFLAGS" - fi - ;; -sparc*-*solaris*) - # Find out which ABI we are using. - echo 'int i;' > conftest.$ac_ext - if AC_TRY_EVAL(ac_compile); then - case `/usr/bin/file conftest.o` in - *64-bit*) - case $lt_cv_prog_gnu_ld in - yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) - if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then - LD="${LD-ld} -64" - fi - ;; - esac - ;; - esac - fi - rm -rf conftest* - ;; -esac - -need_locks="$enable_libtool_lock" -])# _LT_ENABLE_LOCK - - -# _LT_PROG_AR -# ----------- -m4_defun([_LT_PROG_AR], -[AC_CHECK_TOOLS(AR, [ar], false) -: ${AR=ar} -: ${AR_FLAGS=cru} -_LT_DECL([], [AR], [1], [The archiver]) -_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) - -AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], - [lt_cv_ar_at_file=no - AC_COMPILE_IFELSE([AC_LANG_PROGRAM], - [echo conftest.$ac_objext > conftest.lst - lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -eq 0; then - # Ensure the archiver fails upon bogus file names. - rm -f conftest.$ac_objext libconftest.a - AC_TRY_EVAL([lt_ar_try]) - if test "$ac_status" -ne 0; then - lt_cv_ar_at_file=@ - fi - fi - rm -f conftest.* libconftest.a - ]) - ]) - -if test "x$lt_cv_ar_at_file" = xno; then - archiver_list_spec= -else - archiver_list_spec=$lt_cv_ar_at_file -fi -_LT_DECL([], [archiver_list_spec], [1], - [How to feed a file listing to the archiver]) -])# _LT_PROG_AR - - -# _LT_CMD_OLD_ARCHIVE -# ------------------- -m4_defun([_LT_CMD_OLD_ARCHIVE], -[_LT_PROG_AR - -AC_CHECK_TOOL(STRIP, strip, :) -test -z "$STRIP" && STRIP=: -_LT_DECL([], [STRIP], [1], [A symbol stripping program]) - -AC_CHECK_TOOL(RANLIB, ranlib, :) -test -z "$RANLIB" && RANLIB=: -_LT_DECL([], [RANLIB], [1], - [Commands used to install an old-style archive]) - -# Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' -old_postinstall_cmds='chmod 644 $oldlib' -old_postuninstall_cmds= - -if test -n "$RANLIB"; then - case $host_os in - openbsd*) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" - ;; - *) - old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" - ;; - esac - old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" -fi - -case $host_os in - darwin*) - lock_old_archive_extraction=yes ;; - *) - lock_old_archive_extraction=no ;; -esac -_LT_DECL([], [old_postinstall_cmds], [2]) -_LT_DECL([], [old_postuninstall_cmds], [2]) -_LT_TAGDECL([], [old_archive_cmds], [2], - [Commands used to build an old-style archive]) -_LT_DECL([], [lock_old_archive_extraction], [0], - [Whether to use a lock for old archive extraction]) -])# _LT_CMD_OLD_ARCHIVE - - -# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------------------- -# Check whether the given compiler option works -AC_DEFUN([_LT_COMPILER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - lt_compiler_flag="$3" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - # The option is referenced via a variable to avoid confusing sed. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>conftest.err) - ac_status=$? - cat conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s "$ac_outfile"; then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings other than the usual output. - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - fi - $RM conftest* -]) - -if test x"[$]$2" = xyes; then - m4_if([$5], , :, [$5]) -else - m4_if([$6], , :, [$6]) -fi -])# _LT_COMPILER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) - - -# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, -# [ACTION-SUCCESS], [ACTION-FAILURE]) -# ---------------------------------------------------- -# Check whether the given linker option works -AC_DEFUN([_LT_LINKER_OPTION], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_SED])dnl -AC_CACHE_CHECK([$1], [$2], - [$2=no - save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS $3" - echo "$lt_simple_link_test_code" > conftest.$ac_ext - if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then - # The linker can only warn and ignore the option if not recognized - # So say no if there are warnings - if test -s conftest.err; then - # Append any errors to the config.log. - cat conftest.err 1>&AS_MESSAGE_LOG_FD - $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp - $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 - if diff conftest.exp conftest.er2 >/dev/null; then - $2=yes - fi - else - $2=yes - fi - fi - $RM -r conftest* - LDFLAGS="$save_LDFLAGS" -]) - -if test x"[$]$2" = xyes; then - m4_if([$4], , :, [$4]) -else - m4_if([$5], , :, [$5]) -fi -])# _LT_LINKER_OPTION - -# Old name: -AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) - - -# LT_CMD_MAX_LEN -#--------------- -AC_DEFUN([LT_CMD_MAX_LEN], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -# find the maximum length of command line arguments -AC_MSG_CHECKING([the maximum length of command line arguments]) -AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl - i=0 - teststring="ABCD" - - case $build_os in - msdosdjgpp*) - # On DJGPP, this test can blow up pretty badly due to problems in libc - # (any single argument exceeding 2000 bytes causes a buffer overrun - # during glob expansion). Even if it were fixed, the result of this - # check would be larger than it should be. - lt_cv_sys_max_cmd_len=12288; # 12K is about right - ;; - - gnu*) - # Under GNU Hurd, this test is not required because there is - # no limit to the length of command line arguments. - # Libtool will interpret -1 as no limit whatsoever - lt_cv_sys_max_cmd_len=-1; - ;; - - cygwin* | mingw* | cegcc*) - # On Win9x/ME, this test blows up -- it succeeds, but takes - # about 5 minutes as the teststring grows exponentially. - # Worse, since 9x/ME are not pre-emptively multitasking, - # you end up with a "frozen" computer, even though with patience - # the test eventually succeeds (with a max line length of 256k). - # Instead, let's just punt: use the minimum linelength reported by - # all of the supported platforms: 8192 (on NT/2K/XP). - lt_cv_sys_max_cmd_len=8192; - ;; - - mint*) - # On MiNT this can take a long time and run out of memory. - lt_cv_sys_max_cmd_len=8192; - ;; - - amigaos*) - # On AmigaOS with pdksh, this test takes hours, literally. - # So we just punt and use a minimum line length of 8192. - lt_cv_sys_max_cmd_len=8192; - ;; - - netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) - # This has been around since 386BSD, at least. Likely further. - if test -x /sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` - elif test -x /usr/sbin/sysctl; then - lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` - else - lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs - fi - # And add a safety zone - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - ;; - - interix*) - # We know the value 262144 and hardcode it with a safety zone (like BSD) - lt_cv_sys_max_cmd_len=196608 - ;; - - osf*) - # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure - # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not - # nice to cause kernel panics so lets avoid the loop below. - # First set a reasonable default. - lt_cv_sys_max_cmd_len=16384 - # - if test -x /sbin/sysconfig; then - case `/sbin/sysconfig -q proc exec_disable_arg_limit` in - *1*) lt_cv_sys_max_cmd_len=-1 ;; - esac - fi - ;; - sco3.2v5*) - lt_cv_sys_max_cmd_len=102400 - ;; - sysv5* | sco5v6* | sysv4.2uw2*) - kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` - if test -n "$kargmax"; then - lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` - else - lt_cv_sys_max_cmd_len=32768 - fi - ;; - *) - lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` - if test -n "$lt_cv_sys_max_cmd_len"; then - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` - else - # Make teststring a little bigger before we do anything with it. - # a 1K string should be a reasonable start. - for i in 1 2 3 4 5 6 7 8 ; do - teststring=$teststring$teststring - done - SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} - # If test is not a shell built-in, we'll probably end up computing a - # maximum length that is only half of the actual maximum length, but - # we can't tell. - while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ - = "X$teststring$teststring"; } >/dev/null 2>&1 && - test $i != 17 # 1/2 MB should be enough - do - i=`expr $i + 1` - teststring=$teststring$teststring - done - # Only check the string length outside the loop. - lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` - teststring= - # Add a significant safety factor because C++ compilers can tack on - # massive amounts of additional arguments before passing them to the - # linker. It appears as though 1/2 is a usable value. - lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` - fi - ;; - esac -]) -if test -n $lt_cv_sys_max_cmd_len ; then - AC_MSG_RESULT($lt_cv_sys_max_cmd_len) -else - AC_MSG_RESULT(none) -fi -max_cmd_len=$lt_cv_sys_max_cmd_len -_LT_DECL([], [max_cmd_len], [0], - [What is the maximum length of a command?]) -])# LT_CMD_MAX_LEN - -# Old name: -AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) - - -# _LT_HEADER_DLFCN -# ---------------- -m4_defun([_LT_HEADER_DLFCN], -[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl -])# _LT_HEADER_DLFCN - - -# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, -# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) -# ---------------------------------------------------------------- -m4_defun([_LT_TRY_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "$cross_compiling" = yes; then : - [$4] -else - lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 - lt_status=$lt_dlunknown - cat > conftest.$ac_ext <<_LT_EOF -[#line $LINENO "configure" -#include "confdefs.h" - -#if HAVE_DLFCN_H -#include -#endif - -#include - -#ifdef RTLD_GLOBAL -# define LT_DLGLOBAL RTLD_GLOBAL -#else -# ifdef DL_GLOBAL -# define LT_DLGLOBAL DL_GLOBAL -# else -# define LT_DLGLOBAL 0 -# endif -#endif - -/* We may have to define LT_DLLAZY_OR_NOW in the command line if we - find out it does not work in some platform. */ -#ifndef LT_DLLAZY_OR_NOW -# ifdef RTLD_LAZY -# define LT_DLLAZY_OR_NOW RTLD_LAZY -# else -# ifdef DL_LAZY -# define LT_DLLAZY_OR_NOW DL_LAZY -# else -# ifdef RTLD_NOW -# define LT_DLLAZY_OR_NOW RTLD_NOW -# else -# ifdef DL_NOW -# define LT_DLLAZY_OR_NOW DL_NOW -# else -# define LT_DLLAZY_OR_NOW 0 -# endif -# endif -# endif -# endif -#endif - -/* When -fvisbility=hidden is used, assume the code has been annotated - correspondingly for the symbols needed. */ -#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) -int fnord () __attribute__((visibility("default"))); -#endif - -int fnord () { return 42; } -int main () -{ - void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); - int status = $lt_dlunknown; - - if (self) - { - if (dlsym (self,"fnord")) status = $lt_dlno_uscore; - else - { - if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; - else puts (dlerror ()); - } - /* dlclose (self); */ - } - else - puts (dlerror ()); - - return status; -}] -_LT_EOF - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then - (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null - lt_status=$? - case x$lt_status in - x$lt_dlno_uscore) $1 ;; - x$lt_dlneed_uscore) $2 ;; - x$lt_dlunknown|x*) $3 ;; - esac - else : - # compilation failed - $3 - fi -fi -rm -fr conftest* -])# _LT_TRY_DLOPEN_SELF - - -# LT_SYS_DLOPEN_SELF -# ------------------ -AC_DEFUN([LT_SYS_DLOPEN_SELF], -[m4_require([_LT_HEADER_DLFCN])dnl -if test "x$enable_dlopen" != xyes; then - enable_dlopen=unknown - enable_dlopen_self=unknown - enable_dlopen_self_static=unknown -else - lt_cv_dlopen=no - lt_cv_dlopen_libs= - - case $host_os in - beos*) - lt_cv_dlopen="load_add_on" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ;; - - mingw* | pw32* | cegcc*) - lt_cv_dlopen="LoadLibrary" - lt_cv_dlopen_libs= - ;; - - cygwin*) - lt_cv_dlopen="dlopen" - lt_cv_dlopen_libs= - ;; - - darwin*) - # if libdl is installed we need to link against it - AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ - lt_cv_dlopen="dyld" - lt_cv_dlopen_libs= - lt_cv_dlopen_self=yes - ]) - ;; - - *) - AC_CHECK_FUNC([shl_load], - [lt_cv_dlopen="shl_load"], - [AC_CHECK_LIB([dld], [shl_load], - [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], - [AC_CHECK_FUNC([dlopen], - [lt_cv_dlopen="dlopen"], - [AC_CHECK_LIB([dl], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], - [AC_CHECK_LIB([svld], [dlopen], - [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], - [AC_CHECK_LIB([dld], [dld_link], - [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) - ]) - ]) - ]) - ]) - ]) - ;; - esac - - if test "x$lt_cv_dlopen" != xno; then - enable_dlopen=yes - else - enable_dlopen=no - fi - - case $lt_cv_dlopen in - dlopen) - save_CPPFLAGS="$CPPFLAGS" - test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" - - save_LDFLAGS="$LDFLAGS" - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" - - save_LIBS="$LIBS" - LIBS="$lt_cv_dlopen_libs $LIBS" - - AC_CACHE_CHECK([whether a program can dlopen itself], - lt_cv_dlopen_self, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, - lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) - ]) - - if test "x$lt_cv_dlopen_self" = xyes; then - wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" - AC_CACHE_CHECK([whether a statically linked program can dlopen itself], - lt_cv_dlopen_self_static, [dnl - _LT_TRY_DLOPEN_SELF( - lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, - lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) - ]) - fi - - CPPFLAGS="$save_CPPFLAGS" - LDFLAGS="$save_LDFLAGS" - LIBS="$save_LIBS" - ;; - esac - - case $lt_cv_dlopen_self in - yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; - *) enable_dlopen_self=unknown ;; - esac - - case $lt_cv_dlopen_self_static in - yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; - *) enable_dlopen_self_static=unknown ;; - esac -fi -_LT_DECL([dlopen_support], [enable_dlopen], [0], - [Whether dlopen is supported]) -_LT_DECL([dlopen_self], [enable_dlopen_self], [0], - [Whether dlopen of programs is supported]) -_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], - [Whether dlopen of statically linked programs is supported]) -])# LT_SYS_DLOPEN_SELF - -# Old name: -AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) - - -# _LT_COMPILER_C_O([TAGNAME]) -# --------------------------- -# Check to see if options -c and -o are simultaneously supported by compiler. -# This macro does not hard code the compiler like AC_PROG_CC_C_O. -m4_defun([_LT_COMPILER_C_O], -[m4_require([_LT_DECL_SED])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no - $RM -r conftest 2>/dev/null - mkdir conftest - cd conftest - mkdir out - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - lt_compiler_flag="-o out/conftest2.$ac_objext" - # Insert the option either (1) after the last *FLAGS variable, or - # (2) before a word containing "conftest.", or (3) at the end. - # Note that $ac_compile itself does not contain backslashes and begins - # with a dollar sign (not a hyphen), so the echo should work correctly. - lt_compile=`echo "$ac_compile" | $SED \ - -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ - -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ - -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$lt_compile" 2>out/conftest.err) - ac_status=$? - cat out/conftest.err >&AS_MESSAGE_LOG_FD - echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD - if (exit $ac_status) && test -s out/conftest2.$ac_objext - then - # The compiler can only warn and ignore the option if not recognized - # So say no if there are warnings - $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp - $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 - if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then - _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - fi - fi - chmod u+w . 2>&AS_MESSAGE_LOG_FD - $RM conftest* - # SGI C++ compiler will create directory out/ii_files/ for - # template instantiation - test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files - $RM out/* && rmdir out - cd .. - $RM -r conftest - $RM conftest* -]) -_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], - [Does compiler simultaneously support -c and -o options?]) -])# _LT_COMPILER_C_O - - -# _LT_COMPILER_FILE_LOCKS([TAGNAME]) -# ---------------------------------- -# Check to see if we can do hard links to lock some files if needed -m4_defun([_LT_COMPILER_FILE_LOCKS], -[m4_require([_LT_ENABLE_LOCK])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -_LT_COMPILER_C_O([$1]) - -hard_links="nottested" -if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then - # do not overwrite the value of need_locks provided by the user - AC_MSG_CHECKING([if we can lock with hard links]) - hard_links=yes - $RM conftest* - ln conftest.a conftest.b 2>/dev/null && hard_links=no - touch conftest.a - ln conftest.a conftest.b 2>&5 || hard_links=no - ln conftest.a conftest.b 2>/dev/null && hard_links=no - AC_MSG_RESULT([$hard_links]) - if test "$hard_links" = no; then - AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) - need_locks=warn - fi -else - need_locks=no -fi -_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) -])# _LT_COMPILER_FILE_LOCKS - - -# _LT_CHECK_OBJDIR -# ---------------- -m4_defun([_LT_CHECK_OBJDIR], -[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], -[rm -f .libs 2>/dev/null -mkdir .libs 2>/dev/null -if test -d .libs; then - lt_cv_objdir=.libs -else - # MS-DOS does not allow filenames that begin with a dot. - lt_cv_objdir=_libs -fi -rmdir .libs 2>/dev/null]) -objdir=$lt_cv_objdir -_LT_DECL([], [objdir], [0], - [The name of the directory that contains temporary libtool files])dnl -m4_pattern_allow([LT_OBJDIR])dnl -AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", - [Define to the sub-directory in which libtool stores uninstalled libraries.]) -])# _LT_CHECK_OBJDIR - - -# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) -# -------------------------------------- -# Check hardcoding attributes. -m4_defun([_LT_LINKER_HARDCODE_LIBPATH], -[AC_MSG_CHECKING([how to hardcode library paths into programs]) -_LT_TAGVAR(hardcode_action, $1)= -if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || - test -n "$_LT_TAGVAR(runpath_var, $1)" || - test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then - - # We can hardcode non-existent directories. - if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && - # If the only mechanism to avoid hardcoding is shlibpath_var, we - # have to relink, otherwise we might link with an installed library - # when we should be linking with a yet-to-be-installed one - ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && - test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then - # Linking always hardcodes the temporary library directory. - _LT_TAGVAR(hardcode_action, $1)=relink - else - # We can link without hardcoding, and we can hardcode nonexisting dirs. - _LT_TAGVAR(hardcode_action, $1)=immediate - fi -else - # We cannot hardcode anything, or else we can only hardcode existing - # directories. - _LT_TAGVAR(hardcode_action, $1)=unsupported -fi -AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) - -if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || - test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then - # Fast installation is not supported - enable_fast_install=no -elif test "$shlibpath_overrides_runpath" = yes || - test "$enable_shared" = no; then - # Fast installation is not necessary - enable_fast_install=needless -fi -_LT_TAGDECL([], [hardcode_action], [0], - [How to hardcode a shared library path into an executable]) -])# _LT_LINKER_HARDCODE_LIBPATH - - -# _LT_CMD_STRIPLIB -# ---------------- -m4_defun([_LT_CMD_STRIPLIB], -[m4_require([_LT_DECL_EGREP]) -striplib= -old_striplib= -AC_MSG_CHECKING([whether stripping libraries is possible]) -if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then - test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" - test -z "$striplib" && striplib="$STRIP --strip-unneeded" - AC_MSG_RESULT([yes]) -else -# FIXME - insert some real tests, host_os isn't really good enough - case $host_os in - darwin*) - if test -n "$STRIP" ; then - striplib="$STRIP -x" - old_striplib="$STRIP -S" - AC_MSG_RESULT([yes]) - else - AC_MSG_RESULT([no]) - fi - ;; - *) - AC_MSG_RESULT([no]) - ;; - esac -fi -_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) -_LT_DECL([], [striplib], [1]) -])# _LT_CMD_STRIPLIB - - -# _LT_SYS_DYNAMIC_LINKER([TAG]) -# ----------------------------- -# PORTME Fill in your ld.so characteristics -m4_defun([_LT_SYS_DYNAMIC_LINKER], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_OBJDUMP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CHECK_SHELL_FEATURES])dnl -AC_MSG_CHECKING([dynamic linker characteristics]) -m4_if([$1], - [], [ -if test "$GCC" = yes; then - case $host_os in - darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; - *) lt_awk_arg="/^libraries:/" ;; - esac - case $host_os in - mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; - *) lt_sed_strip_eq="s,=/,/,g" ;; - esac - lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` - case $lt_search_path_spec in - *\;*) - # if the path contains ";" then we assume it to be the separator - # otherwise default to the standard path separator (i.e. ":") - it is - # assumed that no part of a normal pathname contains ";" but that should - # okay in the real world where ";" in dirpaths is itself problematic. - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` - ;; - *) - lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` - ;; - esac - # Ok, now we have the path, separated by spaces, we can step through it - # and add multilib dir if necessary. - lt_tmp_lt_search_path_spec= - lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` - for lt_sys_path in $lt_search_path_spec; do - if test -d "$lt_sys_path/$lt_multi_os_dir"; then - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" - else - test -d "$lt_sys_path" && \ - lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" - fi - done - lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' -BEGIN {RS=" "; FS="/|\n";} { - lt_foo=""; - lt_count=0; - for (lt_i = NF; lt_i > 0; lt_i--) { - if ($lt_i != "" && $lt_i != ".") { - if ($lt_i == "..") { - lt_count++; - } else { - if (lt_count == 0) { - lt_foo="/" $lt_i lt_foo; - } else { - lt_count--; - } - } - } - } - if (lt_foo != "") { lt_freq[[lt_foo]]++; } - if (lt_freq[[lt_foo]] == 1) { print lt_foo; } -}'` - # AWK program above erroneously prepends '/' to C:/dos/paths - # for these hosts. - case $host_os in - mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ - $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; - esac - sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` -else - sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" -fi]) -library_names_spec= -libname_spec='lib$name' -soname_spec= -shrext_cmds=".so" -postinstall_cmds= -postuninstall_cmds= -finish_cmds= -finish_eval= -shlibpath_var= -shlibpath_overrides_runpath=unknown -version_type=none -dynamic_linker="$host_os ld.so" -sys_lib_dlsearch_path_spec="/lib /usr/lib" -need_lib_prefix=unknown -hardcode_into_libs=no - -# when you set need_version to no, make sure it does not cause -set_version -# flags to be left without arguments -need_version=unknown - -case $host_os in -aix3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' - shlibpath_var=LIBPATH - - # AIX 3 has no versioning support, so we append a major version to the name. - soname_spec='${libname}${release}${shared_ext}$major' - ;; - -aix[[4-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - hardcode_into_libs=yes - if test "$host_cpu" = ia64; then - # AIX 5 supports IA64 - library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - else - # With GCC up to 2.95.x, collect2 would create an import file - # for dependence libraries. The import file would start with - # the line `#! .'. This would cause the generated library to - # depend on `.', always an invalid library. This was fixed in - # development snapshots of GCC prior to 3.0. - case $host_os in - aix4 | aix4.[[01]] | aix4.[[01]].*) - if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' - echo ' yes ' - echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then - : - else - can_build_shared=no - fi - ;; - esac - # AIX (on Power*) has no versioning support, so currently we can not hardcode correct - # soname into executable. Probably we can add versioning support to - # collect2, so additional links can be useful in future. - if test "$aix_use_runtimelinking" = yes; then - # If using run time linking (on AIX 4.2 or later) use lib.so - # instead of lib.a to let people know that these are not - # typical AIX shared libraries. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - else - # We preserve .a as extension for shared libraries through AIX4.2 - # and later when we are not doing run time linking. - library_names_spec='${libname}${release}.a $libname.a' - soname_spec='${libname}${release}${shared_ext}$major' - fi - shlibpath_var=LIBPATH - fi - ;; - -amigaos*) - case $host_cpu in - powerpc) - # Since July 2007 AmigaOS4 officially supports .so libraries. - # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - ;; - m68k) - library_names_spec='$libname.ixlibrary $libname.a' - # Create ${libname}_ixlibrary.a entries in /sys/libs. - finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - ;; - esac - ;; - -beos*) - library_names_spec='${libname}${shared_ext}' - dynamic_linker="$host_os ld.so" - shlibpath_var=LIBRARY_PATH - ;; - -bsdi[[45]]*) - version_type=linux - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" - sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" - # the default ld.so.conf also contains /usr/contrib/lib and - # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow - # libtool to hard-code these into programs - ;; - -cygwin* | mingw* | pw32* | cegcc*) - version_type=windows - shrext_cmds=".dll" - need_version=no - need_lib_prefix=no - - case $GCC,$cc_basename in - yes,*) - # gcc - library_names_spec='$libname.dll.a' - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname~ - chmod a+x \$dldir/$dlname~ - if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then - eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; - fi' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - - case $host_os in - cygwin*) - # Cygwin DLLs use 'cyg' prefix rather than 'lib' - soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) - ;; - mingw* | cegcc*) - # MinGW DLLs use traditional 'lib' prefix - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - pw32*) - # pw32 DLLs use 'pw' prefix rather than 'lib' - library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - ;; - esac - dynamic_linker='Win32 ld.exe' - ;; - - *,cl*) - # Native MSVC - libname_spec='$name' - soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' - library_names_spec='${libname}.dll.lib' - - case $build_os in - mingw*) - sys_lib_search_path_spec= - lt_save_ifs=$IFS - IFS=';' - for lt_path in $LIB - do - IFS=$lt_save_ifs - # Let DOS variable expansion print the short 8.3 style file name. - lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` - sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" - done - IFS=$lt_save_ifs - # Convert to MSYS style. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` - ;; - cygwin*) - # Convert to unix form, then to dos form, then back to unix form - # but this time dos style (no spaces!) so that the unix form looks - # like /cygdrive/c/PROGRA~1:/cygdr... - sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` - sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` - sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - ;; - *) - sys_lib_search_path_spec="$LIB" - if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then - # It is most probably a Windows format PATH. - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` - else - sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` - fi - # FIXME: find the short name or the path components, as spaces are - # common. (e.g. "Program Files" -> "PROGRA~1") - ;; - esac - - # DLL is installed to $(libdir)/../bin by postinstall_cmds - postinstall_cmds='base_file=`basename \${file}`~ - dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ - dldir=$destdir/`dirname \$dlpath`~ - test -d \$dldir || mkdir -p \$dldir~ - $install_prog $dir/$dlname \$dldir/$dlname' - postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ - dlpath=$dir/\$dldll~ - $RM \$dlpath' - shlibpath_overrides_runpath=yes - dynamic_linker='Win32 link.exe' - ;; - - *) - # Assume MSVC wrapper - library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' - dynamic_linker='Win32 ld.exe' - ;; - esac - # FIXME: first we should search . and the directory the executable is in - shlibpath_var=PATH - ;; - -darwin* | rhapsody*) - dynamic_linker="$host_os dyld" - version_type=darwin - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' - soname_spec='${libname}${release}${major}$shared_ext' - shlibpath_overrides_runpath=yes - shlibpath_var=DYLD_LIBRARY_PATH - shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' -m4_if([$1], [],[ - sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) - sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' - ;; - -dgux*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -freebsd1*) - dynamic_linker=no - ;; - -freebsd* | dragonfly*) - # DragonFly does not have aout. When/if they implement a new - # versioning mechanism, adjust this. - if test -x /usr/bin/objformat; then - objformat=`/usr/bin/objformat` - else - case $host_os in - freebsd[[123]]*) objformat=aout ;; - *) objformat=elf ;; - esac - fi - version_type=freebsd-$objformat - case $version_type in - freebsd-elf*) - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - need_version=no - need_lib_prefix=no - ;; - freebsd-*) - library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' - need_version=yes - ;; - esac - shlibpath_var=LD_LIBRARY_PATH - case $host_os in - freebsd2*) - shlibpath_overrides_runpath=yes - ;; - freebsd3.[[01]]* | freebsdelf3.[[01]]*) - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ - freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - *) # from 4.6 on, and DragonFly - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - esac - ;; - -gnu*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - hardcode_into_libs=yes - ;; - -haiku*) - version_type=linux - need_lib_prefix=no - need_version=no - dynamic_linker="$host_os runtime_loader" - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LIBRARY_PATH - shlibpath_overrides_runpath=yes - sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' - hardcode_into_libs=yes - ;; - -hpux9* | hpux10* | hpux11*) - # Give a soname corresponding to the major version so that dld.sl refuses to - # link against other versions. - version_type=sunos - need_lib_prefix=no - need_version=no - case $host_cpu in - ia64*) - shrext_cmds='.so' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.so" - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - if test "X$HPUX_IA64_MODE" = X32; then - sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" - else - sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" - fi - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - hppa*64*) - shrext_cmds='.sl' - hardcode_into_libs=yes - dynamic_linker="$host_os dld.sl" - shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH - shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" - sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec - ;; - *) - shrext_cmds='.sl' - dynamic_linker="$host_os dld.sl" - shlibpath_var=SHLIB_PATH - shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - ;; - esac - # HP-UX runs *really* slowly unless shared libraries are mode 555, ... - postinstall_cmds='chmod 555 $lib' - # or fails outright, so override atomically: - install_override_mode=555 - ;; - -interix[[3-9]]*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -irix5* | irix6* | nonstopux*) - case $host_os in - nonstopux*) version_type=nonstopux ;; - *) - if test "$lt_cv_prog_gnu_ld" = yes; then - version_type=linux - else - version_type=irix - fi ;; - esac - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' - case $host_os in - irix5* | nonstopux*) - libsuff= shlibsuff= - ;; - *) - case $LD in # libtool.m4 will add one of these switches to LD - *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") - libsuff= shlibsuff= libmagic=32-bit;; - *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") - libsuff=32 shlibsuff=N32 libmagic=N32;; - *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") - libsuff=64 shlibsuff=64 libmagic=64-bit;; - *) libsuff= shlibsuff= libmagic=never-match;; - esac - ;; - esac - shlibpath_var=LD_LIBRARY${shlibsuff}_PATH - shlibpath_overrides_runpath=no - sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" - sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" - hardcode_into_libs=yes - ;; - -# No shared lib support for Linux oldld, aout, or coff. -linux*oldld* | linux*aout* | linux*coff*) - dynamic_linker=no - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - - # Some binutils ld are patched to set DT_RUNPATH - AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], - [lt_cv_shlibpath_overrides_runpath=no - save_LDFLAGS=$LDFLAGS - save_libdir=$libdir - eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ - LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" - AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], - [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], - [lt_cv_shlibpath_overrides_runpath=yes])]) - LDFLAGS=$save_LDFLAGS - libdir=$save_libdir - ]) - shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath - - # This implies no fast_install, which is unacceptable. - # Some rework will be needed to allow for fast_install - # before this can be enabled. - hardcode_into_libs=yes - - # Add ABI-specific directories to the system library path. - sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" - - # Append ld.so.conf contents to the search path - if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` - sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" - - fi - - # We used to test for /lib/ld.so.1 and disable shared libraries on - # powerpc, because MkLinux only supported shared libraries with the - # GNU dynamic linker. Since this was broken with cross compilers, - # most powerpc-linux boxes support dynamic linking these days and - # people can always --disable-shared, the test was removed, and we - # assume the GNU/Linux dynamic linker is in use. - dynamic_linker='GNU/Linux ld.so' - ;; - -netbsd*) - version_type=sunos - need_lib_prefix=no - need_version=no - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - dynamic_linker='NetBSD (a.out) ld.so' - else - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - dynamic_linker='NetBSD ld.elf_so' - fi - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - ;; - -newsos6) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - ;; - -*nto* | *qnx*) - version_type=qnx - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - dynamic_linker='ldqnx.so' - ;; - -openbsd*) - version_type=sunos - sys_lib_dlsearch_path_spec="/usr/lib" - need_lib_prefix=no - # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. - case $host_os in - openbsd3.3 | openbsd3.3.*) need_version=yes ;; - *) need_version=no ;; - esac - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' - shlibpath_var=LD_LIBRARY_PATH - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - case $host_os in - openbsd2.[[89]] | openbsd2.[[89]].*) - shlibpath_overrides_runpath=no - ;; - *) - shlibpath_overrides_runpath=yes - ;; - esac - else - shlibpath_overrides_runpath=yes - fi - ;; - -os2*) - libname_spec='$name' - shrext_cmds=".dll" - need_lib_prefix=no - library_names_spec='$libname${shared_ext} $libname.a' - dynamic_linker='OS/2 ld.exe' - shlibpath_var=LIBPATH - ;; - -osf3* | osf4* | osf5*) - version_type=osf - need_lib_prefix=no - need_version=no - soname_spec='${libname}${release}${shared_ext}$major' - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" - sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" - ;; - -rdos*) - dynamic_linker=no - ;; - -solaris*) - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - # ldd complains unless libraries are executable - postinstall_cmds='chmod +x $lib' - ;; - -sunos4*) - version_type=sunos - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' - finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - if test "$with_gnu_ld" = yes; then - need_lib_prefix=no - fi - need_version=yes - ;; - -sysv4 | sysv4.3*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - case $host_vendor in - sni) - shlibpath_overrides_runpath=no - need_lib_prefix=no - runpath_var=LD_RUN_PATH - ;; - siemens) - need_lib_prefix=no - ;; - motorola) - need_lib_prefix=no - need_version=no - shlibpath_overrides_runpath=no - sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' - ;; - esac - ;; - -sysv4*MP*) - if test -d /usr/nec ;then - version_type=linux - library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' - soname_spec='$libname${shared_ext}.$major' - shlibpath_var=LD_LIBRARY_PATH - fi - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - version_type=freebsd-elf - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=yes - hardcode_into_libs=yes - if test "$with_gnu_ld" = yes; then - sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' - else - sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' - case $host_os in - sco3.2v5*) - sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" - ;; - esac - fi - sys_lib_dlsearch_path_spec='/usr/lib' - ;; - -tpf*) - # TPF is a cross-target only. Preferred cross-host = GNU/Linux. - version_type=linux - need_lib_prefix=no - need_version=no - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - shlibpath_var=LD_LIBRARY_PATH - shlibpath_overrides_runpath=no - hardcode_into_libs=yes - ;; - -uts4*) - version_type=linux - library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' - soname_spec='${libname}${release}${shared_ext}$major' - shlibpath_var=LD_LIBRARY_PATH - ;; - -*) - dynamic_linker=no - ;; -esac -AC_MSG_RESULT([$dynamic_linker]) -test "$dynamic_linker" = no && can_build_shared=no - -variables_saved_for_relink="PATH $shlibpath_var $runpath_var" -if test "$GCC" = yes; then - variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" -fi - -if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then - sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" -fi -if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then - sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" -fi - -_LT_DECL([], [variables_saved_for_relink], [1], - [Variables whose values should be saved in libtool wrapper scripts and - restored at link time]) -_LT_DECL([], [need_lib_prefix], [0], - [Do we need the "lib" prefix for modules?]) -_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) -_LT_DECL([], [version_type], [0], [Library versioning type]) -_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) -_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) -_LT_DECL([], [shlibpath_overrides_runpath], [0], - [Is shlibpath searched before the hard-coded library search path?]) -_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) -_LT_DECL([], [library_names_spec], [1], - [[List of archive names. First name is the real one, the rest are links. - The last name is the one that the linker finds with -lNAME]]) -_LT_DECL([], [soname_spec], [1], - [[The coded name of the library, if different from the real name]]) -_LT_DECL([], [install_override_mode], [1], - [Permission mode override for installation of shared libraries]) -_LT_DECL([], [postinstall_cmds], [2], - [Command to use after installation of a shared archive]) -_LT_DECL([], [postuninstall_cmds], [2], - [Command to use after uninstallation of a shared archive]) -_LT_DECL([], [finish_cmds], [2], - [Commands used to finish a libtool library installation in a directory]) -_LT_DECL([], [finish_eval], [1], - [[As "finish_cmds", except a single script fragment to be evaled but - not shown]]) -_LT_DECL([], [hardcode_into_libs], [0], - [Whether we should hardcode library paths into libraries]) -_LT_DECL([], [sys_lib_search_path_spec], [2], - [Compile-time system search path for libraries]) -_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], - [Run-time system search path for libraries]) -])# _LT_SYS_DYNAMIC_LINKER - - -# _LT_PATH_TOOL_PREFIX(TOOL) -# -------------------------- -# find a file program which can recognize shared library -AC_DEFUN([_LT_PATH_TOOL_PREFIX], -[m4_require([_LT_DECL_EGREP])dnl -AC_MSG_CHECKING([for $1]) -AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, -[case $MAGIC_CMD in -[[\\/*] | ?:[\\/]*]) - lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. - ;; -*) - lt_save_MAGIC_CMD="$MAGIC_CMD" - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR -dnl $ac_dummy forces splitting on constant user-supplied paths. -dnl POSIX.2 word splitting is done only on the output of word expansions, -dnl not every word. This closes a longstanding sh security hole. - ac_dummy="m4_if([$2], , $PATH, [$2])" - for ac_dir in $ac_dummy; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f $ac_dir/$1; then - lt_cv_path_MAGIC_CMD="$ac_dir/$1" - if test -n "$file_magic_test_file"; then - case $deplibs_check_method in - "file_magic "*) - file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` - MAGIC_CMD="$lt_cv_path_MAGIC_CMD" - if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | - $EGREP "$file_magic_regex" > /dev/null; then - : - else - cat <<_LT_EOF 1>&2 - -*** Warning: the command libtool uses to detect shared libraries, -*** $file_magic_cmd, produces output that libtool cannot recognize. -*** The result is that libtool may fail to recognize shared libraries -*** as such. This will affect the creation of libtool libraries that -*** depend on shared libraries, but programs linked with such libtool -*** libraries will work regardless of this problem. Nevertheless, you -*** may want to report the problem to your system manager and/or to -*** bug-libtool@gnu.org - -_LT_EOF - fi ;; - esac - fi - break - fi - done - IFS="$lt_save_ifs" - MAGIC_CMD="$lt_save_MAGIC_CMD" - ;; -esac]) -MAGIC_CMD="$lt_cv_path_MAGIC_CMD" -if test -n "$MAGIC_CMD"; then - AC_MSG_RESULT($MAGIC_CMD) -else - AC_MSG_RESULT(no) -fi -_LT_DECL([], [MAGIC_CMD], [0], - [Used to examine libraries when file_magic_cmd begins with "file"])dnl -])# _LT_PATH_TOOL_PREFIX - -# Old name: -AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) - - -# _LT_PATH_MAGIC -# -------------- -# find a file program which can recognize a shared library -m4_defun([_LT_PATH_MAGIC], -[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) -if test -z "$lt_cv_path_MAGIC_CMD"; then - if test -n "$ac_tool_prefix"; then - _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) - else - MAGIC_CMD=: - fi -fi -])# _LT_PATH_MAGIC - - -# LT_PATH_LD -# ---------- -# find the pathname to the GNU or non-GNU linker -AC_DEFUN([LT_PATH_LD], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PROG_ECHO_BACKSLASH])dnl - -AC_ARG_WITH([gnu-ld], - [AS_HELP_STRING([--with-gnu-ld], - [assume the C compiler uses GNU ld @<:@default=no@:>@])], - [test "$withval" = no || with_gnu_ld=yes], - [with_gnu_ld=no])dnl - -ac_prog=ld -if test "$GCC" = yes; then - # Check if gcc -print-prog-name=ld gives a path. - AC_MSG_CHECKING([for ld used by $CC]) - case $host in - *-*-mingw*) - # gcc leaves a trailing carriage return which upsets mingw - ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; - *) - ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; - esac - case $ac_prog in - # Accept absolute paths. - [[\\/]]* | ?:[[\\/]]*) - re_direlt='/[[^/]][[^/]]*/\.\./' - # Canonicalize the pathname of ld - ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` - while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do - ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` - done - test -z "$LD" && LD="$ac_prog" - ;; - "") - # If it fails, then pretend we aren't using GCC. - ac_prog=ld - ;; - *) - # If it is relative, then search for the first ld in PATH. - with_gnu_ld=unknown - ;; - esac -elif test "$with_gnu_ld" = yes; then - AC_MSG_CHECKING([for GNU ld]) -else - AC_MSG_CHECKING([for non-GNU ld]) -fi -AC_CACHE_VAL(lt_cv_path_LD, -[if test -z "$LD"; then - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then - lt_cv_path_LD="$ac_dir/$ac_prog" - # Check to see if the program is GNU ld. I'd rather use --version, - # but apparently some variants of GNU ld only accept -v. - # Break only if it was the GNU/non-GNU ld that we prefer. - case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then - lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' - lt_cv_file_magic_cmd='func_win32_libid' - else - # Keep this pattern in sync with the one in func_win32_libid. - lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' - lt_cv_file_magic_cmd='$OBJDUMP -f' - fi - ;; - -cegcc*) - # use the weaker test based on 'objdump'. See mingw*. - lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' - lt_cv_file_magic_cmd='$OBJDUMP -f' - ;; - -darwin* | rhapsody*) - lt_cv_deplibs_check_method=pass_all - ;; - -freebsd* | dragonfly*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - case $host_cpu in - i*86 ) - # Not sure whether the presence of OpenBSD here was a mistake. - # Let's accept both of them until this is cleared up. - lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` - ;; - esac - else - lt_cv_deplibs_check_method=pass_all - fi - ;; - -gnu*) - lt_cv_deplibs_check_method=pass_all - ;; - -haiku*) - lt_cv_deplibs_check_method=pass_all - ;; - -hpux10.20* | hpux11*) - lt_cv_file_magic_cmd=/usr/bin/file - case $host_cpu in - ia64*) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' - lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so - ;; - hppa*64*) - [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] - lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl - ;; - *) - lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' - lt_cv_file_magic_test_file=/usr/lib/libc.sl - ;; - esac - ;; - -interix[[3-9]]*) - # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' - ;; - -irix5* | irix6* | nonstopux*) - case $LD in - *-32|*"-32 ") libmagic=32-bit;; - *-n32|*"-n32 ") libmagic=N32;; - *-64|*"-64 ") libmagic=64-bit;; - *) libmagic=never-match;; - esac - lt_cv_deplibs_check_method=pass_all - ;; - -# This must be Linux ELF. -linux* | k*bsd*-gnu | kopensolaris*-gnu) - lt_cv_deplibs_check_method=pass_all - ;; - -netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' - fi - ;; - -newos6*) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' - lt_cv_file_magic_cmd=/usr/bin/file - lt_cv_file_magic_test_file=/usr/lib/libnls.so - ;; - -*nto* | *qnx*) - lt_cv_deplibs_check_method=pass_all - ;; - -openbsd*) - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' - else - lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' - fi - ;; - -osf3* | osf4* | osf5*) - lt_cv_deplibs_check_method=pass_all - ;; - -rdos*) - lt_cv_deplibs_check_method=pass_all - ;; - -solaris*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) - lt_cv_deplibs_check_method=pass_all - ;; - -sysv4 | sysv4.3*) - case $host_vendor in - motorola) - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' - lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` - ;; - ncr) - lt_cv_deplibs_check_method=pass_all - ;; - sequent) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' - ;; - sni) - lt_cv_file_magic_cmd='/bin/file' - lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" - lt_cv_file_magic_test_file=/lib/libc.so - ;; - siemens) - lt_cv_deplibs_check_method=pass_all - ;; - pc) - lt_cv_deplibs_check_method=pass_all - ;; - esac - ;; - -tpf*) - lt_cv_deplibs_check_method=pass_all - ;; -esac -]) - -file_magic_glob= -want_nocaseglob=no -if test "$build" = "$host"; then - case $host_os in - mingw* | pw32*) - if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then - want_nocaseglob=yes - else - file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` - fi - ;; - esac -fi - -file_magic_cmd=$lt_cv_file_magic_cmd -deplibs_check_method=$lt_cv_deplibs_check_method -test -z "$deplibs_check_method" && deplibs_check_method=unknown - -_LT_DECL([], [deplibs_check_method], [1], - [Method to check whether dependent libraries are shared objects]) -_LT_DECL([], [file_magic_cmd], [1], - [Command to use when deplibs_check_method = "file_magic"]) -_LT_DECL([], [file_magic_glob], [1], - [How to find potential files when deplibs_check_method = "file_magic"]) -_LT_DECL([], [want_nocaseglob], [1], - [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) -])# _LT_CHECK_MAGIC_METHOD - - -# LT_PATH_NM -# ---------- -# find the pathname to a BSD- or MS-compatible name lister -AC_DEFUN([LT_PATH_NM], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, -[if test -n "$NM"; then - # Let the user override the test. - lt_cv_path_NM="$NM" -else - lt_nm_to_check="${ac_tool_prefix}nm" - if test -n "$ac_tool_prefix" && test "$build" = "$host"; then - lt_nm_to_check="$lt_nm_to_check nm" - fi - for lt_tmp_nm in $lt_nm_to_check; do - lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR - for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do - IFS="$lt_save_ifs" - test -z "$ac_dir" && ac_dir=. - tmp_nm="$ac_dir/$lt_tmp_nm" - if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then - # Check to see if the nm accepts a BSD-compat flag. - # Adding the `sed 1q' prevents false positives on HP-UX, which says: - # nm: unknown option "B" ignored - # Tru64's nm complains that /dev/null is an invalid object file - case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in - */dev/null* | *'Invalid file or object type'*) - lt_cv_path_NM="$tmp_nm -B" - break - ;; - *) - case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in - */dev/null*) - lt_cv_path_NM="$tmp_nm -p" - break - ;; - *) - lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but - continue # so that we can try to find one that supports BSD flags - ;; - esac - ;; - esac - fi - done - IFS="$lt_save_ifs" - done - : ${lt_cv_path_NM=no} -fi]) -if test "$lt_cv_path_NM" != "no"; then - NM="$lt_cv_path_NM" -else - # Didn't find any BSD compatible name lister, look for dumpbin. - if test -n "$DUMPBIN"; then : - # Let the user override the test. - else - AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) - case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in - *COFF*) - DUMPBIN="$DUMPBIN -symbols" - ;; - *) - DUMPBIN=: - ;; - esac - fi - AC_SUBST([DUMPBIN]) - if test "$DUMPBIN" != ":"; then - NM="$DUMPBIN" - fi -fi -test -z "$NM" && NM=nm -AC_SUBST([NM]) -_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl - -AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], - [lt_cv_nm_interface="BSD nm" - echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) - (eval "$ac_compile" 2>conftest.err) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) - (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) - cat conftest.err >&AS_MESSAGE_LOG_FD - (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) - cat conftest.out >&AS_MESSAGE_LOG_FD - if $GREP 'External.*some_variable' conftest.out > /dev/null; then - lt_cv_nm_interface="MS dumpbin" - fi - rm -f conftest*]) -])# LT_PATH_NM - -# Old names: -AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) -AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_PROG_NM], []) -dnl AC_DEFUN([AC_PROG_NM], []) - -# _LT_CHECK_SHAREDLIB_FROM_LINKLIB -# -------------------------------- -# how to determine the name of the shared library -# associated with a specific link library. -# -- PORTME fill in with the dynamic library characteristics -m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], -[m4_require([_LT_DECL_EGREP]) -m4_require([_LT_DECL_OBJDUMP]) -m4_require([_LT_DECL_DLLTOOL]) -AC_CACHE_CHECK([how to associate runtime and link libraries], -lt_cv_sharedlib_from_linklib_cmd, -[lt_cv_sharedlib_from_linklib_cmd='unknown' - -case $host_os in -cygwin* | mingw* | pw32* | cegcc*) - # two different shell functions defined in ltmain.sh - # decide which to use based on capabilities of $DLLTOOL - case `$DLLTOOL --help 2>&1` in - *--identify-strict*) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib - ;; - *) - lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback - ;; - esac - ;; -*) - # fallback: assume linklib IS sharedlib - lt_cv_sharedlib_from_linklib_cmd="$ECHO" - ;; -esac -]) -sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd -test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO - -_LT_DECL([], [sharedlib_from_linklib_cmd], [1], - [Command to associate shared and link libraries]) -])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB - - -# _LT_PATH_MANIFEST_TOOL -# ---------------------- -# locate the manifest tool -m4_defun([_LT_PATH_MANIFEST_TOOL], -[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) -test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt -AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], - [lt_cv_path_mainfest_tool=no - echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD - $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out - cat conftest.err >&AS_MESSAGE_LOG_FD - if $GREP 'Manifest Tool' conftest.out > /dev/null; then - lt_cv_path_mainfest_tool=yes - fi - rm -f conftest*]) -if test "x$lt_cv_path_mainfest_tool" != xyes; then - MANIFEST_TOOL=: -fi -_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl -])# _LT_PATH_MANIFEST_TOOL - - -# LT_LIB_M -# -------- -# check for math library -AC_DEFUN([LT_LIB_M], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -LIBM= -case $host in -*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) - # These system don't have libm, or don't need it - ;; -*-ncr-sysv4.3*) - AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") - AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") - ;; -*) - AC_CHECK_LIB(m, cos, LIBM="-lm") - ;; -esac -AC_SUBST([LIBM]) -])# LT_LIB_M - -# Old name: -AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_CHECK_LIBM], []) - - -# _LT_COMPILER_NO_RTTI([TAGNAME]) -# ------------------------------- -m4_defun([_LT_COMPILER_NO_RTTI], -[m4_require([_LT_TAG_COMPILER])dnl - -_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - -if test "$GCC" = yes; then - case $cc_basename in - nvcc*) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; - *) - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; - esac - - _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], - lt_cv_prog_compiler_rtti_exceptions, - [-fno-rtti -fno-exceptions], [], - [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) -fi -_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], - [Compiler flag to turn off builtin functions]) -])# _LT_COMPILER_NO_RTTI - - -# _LT_CMD_GLOBAL_SYMBOLS -# ---------------------- -m4_defun([_LT_CMD_GLOBAL_SYMBOLS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_PROG_CC])dnl -AC_REQUIRE([AC_PROG_AWK])dnl -AC_REQUIRE([LT_PATH_NM])dnl -AC_REQUIRE([LT_PATH_LD])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_TAG_COMPILER])dnl - -# Check for command to grab the raw symbol name followed by C symbol from nm. -AC_MSG_CHECKING([command to parse $NM output from $compiler object]) -AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], -[ -# These are sane defaults that work on at least a few old systems. -# [They come from Ultrix. What could be older than Ultrix?!! ;)] - -# Character class describing NM global symbol codes. -symcode='[[BCDEGRST]]' - -# Regexp to match symbols that can be accessed directly from C. -sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' - -# Define system-specific variables. -case $host_os in -aix*) - symcode='[[BCDT]]' - ;; -cygwin* | mingw* | pw32* | cegcc*) - symcode='[[ABCDGISTW]]' - ;; -hpux*) - if test "$host_cpu" = ia64; then - symcode='[[ABCDEGRST]]' - fi - ;; -irix* | nonstopux*) - symcode='[[BCDEGRST]]' - ;; -osf*) - symcode='[[BCDEGQRST]]' - ;; -solaris*) - symcode='[[BDRT]]' - ;; -sco3.2v5*) - symcode='[[DT]]' - ;; -sysv4.2uw2*) - symcode='[[DT]]' - ;; -sysv5* | sco5v6* | unixware* | OpenUNIX*) - symcode='[[ABDT]]' - ;; -sysv4) - symcode='[[DFNSTU]]' - ;; -esac - -# If we're using GNU nm, then use its standard symbol codes. -case `$NM -V 2>&1` in -*GNU* | *'with BFD'*) - symcode='[[ABCDGIRSTW]]' ;; -esac - -# Transform an extracted symbol line into a proper C declaration. -# Some systems (esp. on ia64) link data and code symbols differently, -# so use this general approach. -lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" - -# Transform an extracted symbol line into symbol name and symbol address -lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" -lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" - -# Handle CRLF in mingw tool chain -opt_cr= -case $build_os in -mingw*) - opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp - ;; -esac - -# Try without a prefix underscore, then with it. -for ac_symprfx in "" "_"; do - - # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. - symxfrm="\\1 $ac_symprfx\\2 \\2" - - # Write the raw and C identifiers. - if test "$lt_cv_nm_interface" = "MS dumpbin"; then - # Fake it for dumpbin and say T for any non-static function - # and D for any global variable. - # Also find C++ and __fastcall symbols from MSVC++, - # which start with @ or ?. - lt_cv_sys_global_symbol_pipe="$AWK ['"\ -" {last_section=section; section=\$ 3};"\ -" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ -" \$ 0!~/External *\|/{next};"\ -" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ -" {if(hide[section]) next};"\ -" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ -" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ -" s[1]~/^[@?]/{print s[1], s[1]; next};"\ -" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ -" ' prfx=^$ac_symprfx]" - else - lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" - fi - lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" - - # Check to see that the pipe works correctly. - pipe_works=no - - rm -f conftest* - cat > conftest.$ac_ext <<_LT_EOF -#ifdef __cplusplus -extern "C" { -#endif -char nm_test_var; -void nm_test_func(void); -void nm_test_func(void){} -#ifdef __cplusplus -} -#endif -int main(){nm_test_var='a';nm_test_func();return(0);} -_LT_EOF - - if AC_TRY_EVAL(ac_compile); then - # Now try to grab the symbols. - nlist=conftest.nm - if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then - # Try sorting and uniquifying the output. - if sort "$nlist" | uniq > "$nlist"T; then - mv -f "$nlist"T "$nlist" - else - rm -f "$nlist"T - fi - - # Make sure that we snagged all the symbols we need. - if $GREP ' nm_test_var$' "$nlist" >/dev/null; then - if $GREP ' nm_test_func$' "$nlist" >/dev/null; then - cat <<_LT_EOF > conftest.$ac_ext -/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ -#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) -/* DATA imports from DLLs on WIN32 con't be const, because runtime - relocations are performed -- see ld's documentation on pseudo-relocs. */ -# define LT@&t@_DLSYM_CONST -#elif defined(__osf__) -/* This system does not cope well with relocations in const data. */ -# define LT@&t@_DLSYM_CONST -#else -# define LT@&t@_DLSYM_CONST const -#endif - -#ifdef __cplusplus -extern "C" { -#endif - -_LT_EOF - # Now generate the symbol file. - eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' - - cat <<_LT_EOF >> conftest.$ac_ext - -/* The mapping between symbol names and symbols. */ -LT@&t@_DLSYM_CONST struct { - const char *name; - void *address; -} -lt__PROGRAM__LTX_preloaded_symbols[[]] = -{ - { "@PROGRAM@", (void *) 0 }, -_LT_EOF - $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext - cat <<\_LT_EOF >> conftest.$ac_ext - {0, (void *) 0} -}; - -/* This works around a problem in FreeBSD linker */ -#ifdef FREEBSD_WORKAROUND -static const void *lt_preloaded_setup() { - return lt__PROGRAM__LTX_preloaded_symbols; -} -#endif - -#ifdef __cplusplus -} -#endif -_LT_EOF - # Now try linking the two files. - mv conftest.$ac_objext conftstm.$ac_objext - lt_globsym_save_LIBS=$LIBS - lt_globsym_save_CFLAGS=$CFLAGS - LIBS="conftstm.$ac_objext" - CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" - if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then - pipe_works=yes - fi - LIBS=$lt_globsym_save_LIBS - CFLAGS=$lt_globsym_save_CFLAGS - else - echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD - fi - else - echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD - fi - else - echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD - cat conftest.$ac_ext >&5 - fi - rm -rf conftest* conftst* - - # Do not use the global_symbol_pipe unless it works. - if test "$pipe_works" = yes; then - break - else - lt_cv_sys_global_symbol_pipe= - fi -done -]) -if test -z "$lt_cv_sys_global_symbol_pipe"; then - lt_cv_sys_global_symbol_to_cdecl= -fi -if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then - AC_MSG_RESULT(failed) -else - AC_MSG_RESULT(ok) -fi - -# Response file support. -if test "$lt_cv_nm_interface" = "MS dumpbin"; then - nm_file_list_spec='@' -elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then - nm_file_list_spec='@' -fi - -_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], - [Take the output of nm and produce a listing of raw symbols and C names]) -_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], - [Transform the output of nm in a proper C declaration]) -_LT_DECL([global_symbol_to_c_name_address], - [lt_cv_sys_global_symbol_to_c_name_address], [1], - [Transform the output of nm in a C name address pair]) -_LT_DECL([global_symbol_to_c_name_address_lib_prefix], - [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], - [Transform the output of nm in a C name address pair when lib prefix is needed]) -_LT_DECL([], [nm_file_list_spec], [1], - [Specify filename containing input files for $NM]) -]) # _LT_CMD_GLOBAL_SYMBOLS - - -# _LT_COMPILER_PIC([TAGNAME]) -# --------------------------- -m4_defun([_LT_COMPILER_PIC], -[m4_require([_LT_TAG_COMPILER])dnl -_LT_TAGVAR(lt_prog_compiler_wl, $1)= -_LT_TAGVAR(lt_prog_compiler_pic, $1)= -_LT_TAGVAR(lt_prog_compiler_static, $1)= - -m4_if([$1], [CXX], [ - # C++ specific cases for pic, static, wl, etc. - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - *djgpp*) - # DJGPP does not support shared libraries at all - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - else - case $host_os in - aix[[4-9]]*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - chorus*) - case $cc_basename in - cxch68*) - # Green Hills C++ Compiler - # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" - ;; - esac - ;; - mingw* | cygwin* | os2* | pw32* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - dgux*) - case $cc_basename in - ec++*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - ghcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - freebsd* | dragonfly*) - # FreeBSD uses GNU C++ - ;; - hpux9* | hpux10* | hpux11*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - if test "$host_cpu" != ia64; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - fi - ;; - aCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - ;; - *) - ;; - esac - ;; - interix*) - # This is c89, which is MS Visual C++ (no shared libs) - # Anyone wants to do a port? - ;; - irix5* | irix6* | nonstopux*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - # CC pic flag -KPIC is the default. - ;; - *) - ;; - esac - ;; - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # KAI C++ Compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - ecpc* ) - # old Intel C++ for x86_64 which still supported -KPIC. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - icpc* ) - # Intel C++, used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - cxx*) - # Compaq C++ - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) - # IBM XL 8.0, 9.0 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - esac - ;; - esac - ;; - lynxos*) - ;; - m88k*) - ;; - mvs*) - case $cc_basename in - cxx*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' - ;; - *) - ;; - esac - ;; - netbsd*) - ;; - *qnx* | *nto*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' - ;; - RCC*) - # Rational C++ 2.4.1 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - cxx*) - # Digital/Compaq C++ - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # Make sure the PIC flag is empty. It appears that all Alpha - # Linux and Compaq Tru64 Unix objects are PIC. - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - *) - ;; - esac - ;; - psos*) - ;; - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - ;; - *) - ;; - esac - ;; - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - lcc*) - # Lucid - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - ;; - *) - ;; - esac - ;; - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - case $cc_basename in - CC*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - esac - ;; - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - ;; - *) - ;; - esac - ;; - vxworks*) - ;; - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -], -[ - if test "$GCC" = yes; then - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - - case $host_os in - aix*) - # All AIX code is PIC. - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - m68k) - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' - ;; - esac - ;; - - beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) - # PIC is the default for these OSes. - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - # Although the cygwin gcc ignores -fPIC, still need this for old-style - # (--disable-auto-import) libraries - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - darwin* | rhapsody*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' - ;; - - haiku*) - # PIC is the default for Haiku. - # The "-static" flag exists, but is broken. - _LT_TAGVAR(lt_prog_compiler_static, $1)= - ;; - - hpux*) - # PIC is the default for 64-bit PA HP-UX, but not for 32-bit - # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag - # sets the default TLS model and affects inlining. - case $host_cpu in - hppa*64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - ;; - - interix[[3-9]]*) - # Interix 3.x gcc -fpic/-fPIC options generate broken code. - # Instead, we relocate shared libraries at runtime. - ;; - - msdosdjgpp*) - # Just because we use GCC doesn't mean we suddenly get shared libraries - # on systems that don't support them. - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - enable_shared=no - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic - fi - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - ;; - esac - - case $cc_basename in - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' - ;; - esac - else - # PORTME Check for flag to pass linker flags through the system compiler. - case $host_os in - aix*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - if test "$host_cpu" = ia64; then - # AIX 5 now supports IA64 processor - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - else - _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' - fi - ;; - - mingw* | cygwin* | pw32* | os2* | cegcc*) - # This hack is so that the source file can tell whether it is being - # built for inclusion in a dll (and should export symbols for example). - m4_if([$1], [GCJ], [], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) - ;; - - hpux9* | hpux10* | hpux11*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. - case $host_cpu in - hppa*64*|ia64*) - # +Z the default - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' - ;; - esac - # Is there a better lt_prog_compiler_static that works with the bundled CC? - _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' - ;; - - irix5* | irix6* | nonstopux*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # PIC (with -KPIC) is the default. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - # old Intel for x86_64 which still supported -KPIC. - ecc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # icc used to be incompatible with GCC. - # ICC 10 doesn't accept -KPIC any more. - icc* | ifort*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' - ;; - # Lahey Fortran 8.1. - lf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' - _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' - ;; - nagfor*) - # NAG Fortran compiler - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group compilers (*not* the Pentium gcc compiler, - # which looks to be a dead project) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - ccc*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All Alpha code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - xl* | bgxl* | bgf* | mpixl*) - # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ F* | *Sun*Fortran*) - # Sun Fortran 8.3 passes all unrecognized flags to the linker - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='' - ;; - *Sun\ C*) - # Sun C 5.9 - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - ;; - esac - ;; - esac - ;; - - newsos6) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *nto* | *qnx*) - # QNX uses GNU C++, but need to define -shared option too, otherwise - # it will coredump. - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' - ;; - - osf3* | osf4* | osf5*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - # All OSF/1 code is PIC. - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - rdos*) - _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' - ;; - - solaris*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - case $cc_basename in - f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; - *) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; - esac - ;; - - sunos4*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4 | sysv4.2uw2* | sysv4.3*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - sysv4*MP*) - if test -d /usr/nec ;then - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - fi - ;; - - sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - unicos*) - _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - - uts4*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' - _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' - ;; - - *) - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no - ;; - esac - fi -]) -case $host_os in - # For platforms which do not support PIC, -DPIC is meaningless: - *djgpp*) - _LT_TAGVAR(lt_prog_compiler_pic, $1)= - ;; - *) - _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" - ;; -esac - -AC_CACHE_CHECK([for $compiler option to produce PIC], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], - [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) -_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) - -# -# Check to make sure the PIC flag actually works. -# -if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then - _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], - [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], - [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], - [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in - "" | " "*) ;; - *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; - esac], - [_LT_TAGVAR(lt_prog_compiler_pic, $1)= - _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) -fi -_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], - [Additional compiler flags for building library objects]) - -_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], - [How to pass a linker flag through the compiler]) -# -# Check to make sure the static flag actually works. -# -wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" -_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], - _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), - $lt_tmp_static_flag, - [], - [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) -_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], - [Compiler flag to prevent dynamic linking]) -])# _LT_COMPILER_PIC - - -# _LT_LINKER_SHLIBS([TAGNAME]) -# ---------------------------- -# See if the linker supports building shared libraries. -m4_defun([_LT_LINKER_SHLIBS], -[AC_REQUIRE([LT_PATH_LD])dnl -AC_REQUIRE([LT_PATH_NM])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_DECL_SED])dnl -m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl -m4_require([_LT_TAG_COMPILER])dnl -AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) -m4_if([$1], [CXX], [ - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - case $host_os in - aix[[4-9]]*) - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global defined - # symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - ;; - pw32*) - _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" - ;; - cygwin* | mingw* | cegcc*) - case $cc_basename in - cl*) ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - ;; - esac - ;; - *) - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - ;; - esac -], [ - runpath_var= - _LT_TAGVAR(allow_undefined_flag, $1)= - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(archive_cmds, $1)= - _LT_TAGVAR(archive_expsym_cmds, $1)= - _LT_TAGVAR(compiler_needs_object, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(hardcode_automatic, $1)=no - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= - _LT_TAGVAR(hardcode_libdir_separator, $1)= - _LT_TAGVAR(hardcode_minus_L, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported - _LT_TAGVAR(inherit_rpath, $1)=no - _LT_TAGVAR(link_all_deplibs, $1)=unknown - _LT_TAGVAR(module_cmds, $1)= - _LT_TAGVAR(module_expsym_cmds, $1)= - _LT_TAGVAR(old_archive_from_new_cmds, $1)= - _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= - _LT_TAGVAR(thread_safe_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - # include_expsyms should be a list of space-separated symbols to be *always* - # included in the symbol list - _LT_TAGVAR(include_expsyms, $1)= - # exclude_expsyms can be an extended regexp of symbols to exclude - # it will be wrapped by ` (' and `)$', so one must not match beginning or - # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', - # as well as any symbol that contains `d'. - _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] - # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out - # platforms (ab)use it in PIC code, but their linkers get confused if - # the symbol is explicitly referenced. Since portable code cannot - # rely on this symbol name, it's probably fine to never include it in - # preloaded symbol tables. - # Exclude shared library initialization/finalization symbols. -dnl Note also adjust exclude_expsyms for C++ above. - extract_expsyms_cmds= - - case $host_os in - cygwin* | mingw* | pw32* | cegcc*) - # FIXME: the MSVC++ port hasn't been tested in a loooong time - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - if test "$GCC" != yes; then - with_gnu_ld=no - fi - ;; - interix*) - # we just hope/assume this is gcc and not c89 (= MSVC++) - with_gnu_ld=yes - ;; - openbsd*) - with_gnu_ld=no - ;; - esac - - _LT_TAGVAR(ld_shlibs, $1)=yes - - # On some targets, GNU ld is compatible enough with the native linker - # that we're better off using the native interface for both. - lt_use_gnu_ld_interface=no - if test "$with_gnu_ld" = yes; then - case $host_os in - aix*) - # The AIX port of GNU ld has always aspired to compatibility - # with the native linker. However, as the warning in the GNU ld - # block says, versions before 2.19.5* couldn't really create working - # shared libraries, regardless of the interface used. - case `$LD -v 2>&1` in - *\ \(GNU\ Binutils\)\ 2.19.5*) ;; - *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; - *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - ;; - *) - lt_use_gnu_ld_interface=yes - ;; - esac - fi - - if test "$lt_use_gnu_ld_interface" = yes; then - # If archive_cmds runs LD, not CC, wlarc should be empty - wlarc='${wl}' - - # Set some defaults for GNU ld with shared library support. These - # are reset later if shared libraries are not supported. Putting them - # here allows them to be overridden if necessary. - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - # ancient GNU ld didn't support --whole-archive et. al. - if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - supports_anon_versioning=no - case `$LD -v 2>&1` in - *GNU\ gold*) supports_anon_versioning=yes ;; - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 - *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... - *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... - *\ 2.11.*) ;; # other 2.11 versions - *) supports_anon_versioning=yes ;; - esac - - # See if GNU ld supports shared libraries. - case $host_os in - aix[[3-9]]*) - # On AIX/PPC, the GNU linker is very broken - if test "$host_cpu" != ia64; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: the GNU linker, at least up to release 2.19, is reported -*** to be unable to reliably create shared libraries on AIX. -*** Therefore, libtool is disabling shared libraries support. If you -*** really care for shared libraries, you may want to install binutils -*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. -*** You will then need to restart the configuration process. - -_LT_EOF - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' - _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - - gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) - tmp_diet=no - if test "$host_os" = linux-dietlibc; then - case $cc_basename in - diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) - esac - fi - if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ - && test "$tmp_diet" = no - then - tmp_addflag=' $pic_flag' - tmp_sharedflag='-shared' - case $cc_basename,$host_cpu in - pgcc*) # Portland Group C compiler - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag' - ;; - pgf77* | pgf90* | pgf95* | pgfortran*) - # Portland Group f77 and f90 compilers - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - tmp_addflag=' $pic_flag -Mnomain' ;; - ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 - tmp_addflag=' -i_dynamic' ;; - efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 - tmp_addflag=' -i_dynamic -nofor_main' ;; - ifc* | ifort*) # Intel Fortran compiler - tmp_addflag=' -nofor_main' ;; - lf95*) # Lahey Fortran 8.1 - _LT_TAGVAR(whole_archive_flag_spec, $1)= - tmp_sharedflag='--shared' ;; - xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) - tmp_sharedflag='-qmkshrobj' - tmp_addflag= ;; - nvcc*) # Cuda Compiler Driver 2.2 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - ;; - esac - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) # Sun C 5.9 - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - tmp_sharedflag='-G' ;; - *Sun\ F*) # Sun Fortran 8.3 - tmp_sharedflag='-G' ;; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - - case $cc_basename in - xlf* | bgf* | bgxlf* | mpixlf*) - # IBM XL Fortran 10.1 on PPC cannot create shared libs itself - _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' - _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' - fi - ;; - esac - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' - wlarc= - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - fi - ;; - - solaris*) - if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: The releases 2.8.* of the GNU linker cannot reliably -*** create shared libraries on Solaris systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.9.1 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) - case `$LD -v 2>&1` in - *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) - _LT_TAGVAR(ld_shlibs, $1)=no - cat <<_LT_EOF 1>&2 - -*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not -*** reliably create shared libraries on SCO systems. Therefore, libtool -*** is disabling shared libraries support. We urge you to upgrade GNU -*** binutils to release 2.16.91.0.3 or newer. Another option is to modify -*** your PATH or compiler configuration so that the native linker is -*** used, and then restart. - -_LT_EOF - ;; - *) - # For security reasons, it is highly recommended that you always - # use absolute paths for naming shared libraries, and exclude the - # DT_RUNPATH tag from executables and libraries. But doing so - # requires that you compile everything twice, which is a pain. - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - sunos4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - - if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then - runpath_var= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= - _LT_TAGVAR(export_dynamic_flag_spec, $1)= - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - # PORTME fill in a description of your system's linker (not GNU ld) - case $host_os in - aix3*) - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' - # Note: this linker hardcodes the directories in LIBPATH if there - # are no directories specified by -L. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then - # Neither direct hardcoding nor static linking is supported with a - # broken collect2. - _LT_TAGVAR(hardcode_direct, $1)=unsupported - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - # If we're using GNU nm, then we don't want the "-C" option. - # -C means demangle to AIX nm, but means don't demangle with GNU nm - # Also, AIX nm treats weak defined symbols like other global - # defined symbols, whereas GNU nm marks them as "W". - if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - else - _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' - fi - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then - aix_use_runtimelinking=yes - break - fi - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GCC" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - ;; - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - amigaos*) - case $host_cpu in - powerpc) - # see comment about AmigaOS4 .so support - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='' - ;; - m68k) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - ;; - - bsdi[[45]]*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic - ;; - - cygwin* | mingw* | pw32* | cegcc*) - # When not using gcc, we currently assume that we are using - # Microsoft Visual C++. - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - case $cc_basename in - cl*) - # Native MSVC - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # Assume MSVC wrapper - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' - # The linker will automatically build a .lib file if we build a DLL. - _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - # FIXME: Should let the user specify the lib program. - _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - ;; - esac - ;; - - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - freebsd1*) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor - # support. Future versions do this automatically, but an explicit c++rt0.o - # does not break anything, and helps significantly (at the cost of a little - # extra space). - freebsd2.2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # Unfortunately, older versions of FreeBSD 2 do not have this feature. - freebsd2*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - # FreeBSD 3 and greater uses gcc -shared to do shared libraries. - freebsd* | dragonfly*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - hpux9*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - - hpux10*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - fi - ;; - - hpux11*) - if test "$GCC" = yes && test "$with_gnu_ld" = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - else - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - m4_if($1, [], [ - # Older versions of the 11.00 compiler do not understand -b yet - # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) - _LT_LINKER_OPTION([if $CC understands -b], - _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], - [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], - [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) - ;; - esac - fi - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - - # hardcode_minus_L: Not really in the search PATH, - # but as the default location of the library. - _LT_TAGVAR(hardcode_minus_L, $1)=yes - ;; - esac - fi - ;; - - irix5* | irix6* | nonstopux*) - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - # Try to use the -exported_symbol ld option, if it does not - # work, assume that -exports_file does not work either and - # implicitly export all symbols. - # This should be the same for all languages, so no per-tag cache variable. - AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], - [lt_cv_irix_exported_symbol], - [save_LDFLAGS="$LDFLAGS" - LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" - AC_LINK_IFELSE( - [AC_LANG_SOURCE( - [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], - [C++], [[int foo (void) { return 0; }]], - [Fortran 77], [[ - subroutine foo - end]], - [Fortran], [[ - subroutine foo - end]])])], - [lt_cv_irix_exported_symbol=yes], - [lt_cv_irix_exported_symbol=no]) - LDFLAGS="$save_LDFLAGS"]) - if test "$lt_cv_irix_exported_symbol" = yes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' - fi - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out - else - _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - newsos6) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *nto* | *qnx*) - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - else - case $host_os in - openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - ;; - esac - fi - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - os2*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' - _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' - ;; - - osf3*) - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - osf4* | osf5*) # as osf3* with the addition of -msym flag - if test "$GCC" = yes; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - else - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ - $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' - - # Both c and cxx compiler support -rpath directly - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)='no' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - ;; - - solaris*) - _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' - if test "$GCC" = yes; then - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - else - case `$CC -V 2>&1` in - *"Compilers 5.0"*) - wlarc='' - _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' - ;; - *) - wlarc='${wl}' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' - ;; - esac - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. GCC discards it without `$wl', - # but is careful enough not to reorder. - # Supported since Solaris 2.6 (maybe 2.5.1?) - if test "$GCC" = yes; then - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - fi - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - sunos4*) - if test "x$host_vendor" = xsequent; then - # Use $CC to link under sequent, because it throws in some extra .o - # files that make .init and .fini sections work. - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' - fi - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4) - case $host_vendor in - sni) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? - ;; - siemens) - ## LD is ld it makes a PLAMLIB - ## CC just makes a GrossModule. - _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' - _LT_TAGVAR(hardcode_direct, $1)=no - ;; - motorola) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie - ;; - esac - runpath_var='LD_RUN_PATH' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - sysv4.3*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' - ;; - - sysv4*MP*) - if test -d /usr/nec; then - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var=LD_RUN_PATH - hardcode_runpath_var=yes - _LT_TAGVAR(ld_shlibs, $1)=yes - fi - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - if test "$GCC" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - fi - ;; - - uts4*) - _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - - *) - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - if test x$host_vendor = xsni; then - case $host in - sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' - ;; - esac - fi - fi -]) -AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) -test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - -_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld - -_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl -_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl -_LT_DECL([], [extract_expsyms_cmds], [2], - [The commands to extract the exported symbol list from a shared archive]) - -# -# Do we need to explicitly link libc? -# -case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in -x|xyes) - # Assume -lc should be added - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - - if test "$enable_shared" = yes && test "$GCC" = yes; then - case $_LT_TAGVAR(archive_cmds, $1) in - *'~'*) - # FIXME: we may have to deal with multi-command sequences. - ;; - '$CC '*) - # Test whether the compiler implicitly links with -lc since on some - # systems, -lgcc has to come before -lc. If gcc already passes -lc - # to ld, don't add -lc before -lgcc. - AC_CACHE_CHECK([whether -lc should be explicitly linked in], - [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), - [$RM conftest* - echo "$lt_simple_compile_test_code" > conftest.$ac_ext - - if AC_TRY_EVAL(ac_compile) 2>conftest.err; then - soname=conftest - lib=conftest - libobjs=conftest.$ac_objext - deplibs= - wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) - pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) - compiler_flags=-v - linker_flags=-v - verstring= - output_objdir=. - libname=conftest - lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) - _LT_TAGVAR(allow_undefined_flag, $1)= - if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) - then - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no - else - lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes - fi - _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag - else - cat conftest.err 1>&5 - fi - $RM conftest* - ]) - _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) - ;; - esac - fi - ;; -esac - -_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], - [Whether or not to add -lc for building shared libraries]) -_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], - [enable_shared_with_static_runtimes], [0], - [Whether or not to disallow shared libs when runtime libs are static]) -_LT_TAGDECL([], [export_dynamic_flag_spec], [1], - [Compiler flag to allow reflexive dlopens]) -_LT_TAGDECL([], [whole_archive_flag_spec], [1], - [Compiler flag to generate shared objects directly from archives]) -_LT_TAGDECL([], [compiler_needs_object], [1], - [Whether the compiler copes with passing no objects directly]) -_LT_TAGDECL([], [old_archive_from_new_cmds], [2], - [Create an old-style archive from a shared archive]) -_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], - [Create a temporary old-style archive to link instead of a shared archive]) -_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) -_LT_TAGDECL([], [archive_expsym_cmds], [2]) -_LT_TAGDECL([], [module_cmds], [2], - [Commands used to build a loadable module if different from building - a shared archive.]) -_LT_TAGDECL([], [module_expsym_cmds], [2]) -_LT_TAGDECL([], [with_gnu_ld], [1], - [Whether we are building with GNU ld or not]) -_LT_TAGDECL([], [allow_undefined_flag], [1], - [Flag that allows shared libraries with undefined symbols to be built]) -_LT_TAGDECL([], [no_undefined_flag], [1], - [Flag that enforces no undefined symbols]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], - [Flag to hardcode $libdir into a binary during linking. - This must work even if $libdir does not exist]) -_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], - [[If ld is used when linking, flag to hardcode $libdir into a binary - during linking. This must work even if $libdir does not exist]]) -_LT_TAGDECL([], [hardcode_libdir_separator], [1], - [Whether we need a single "-rpath" flag with a separated argument]) -_LT_TAGDECL([], [hardcode_direct], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary]) -_LT_TAGDECL([], [hardcode_direct_absolute], [0], - [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes - DIR into the resulting binary and the resulting library dependency is - "absolute", i.e impossible to change by setting ${shlibpath_var} if the - library is relocated]) -_LT_TAGDECL([], [hardcode_minus_L], [0], - [Set to "yes" if using the -LDIR flag during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_shlibpath_var], [0], - [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR - into the resulting binary]) -_LT_TAGDECL([], [hardcode_automatic], [0], - [Set to "yes" if building a shared library automatically hardcodes DIR - into the library and all subsequent libraries and executables linked - against it]) -_LT_TAGDECL([], [inherit_rpath], [0], - [Set to yes if linker adds runtime paths of dependent libraries - to runtime path list]) -_LT_TAGDECL([], [link_all_deplibs], [0], - [Whether libtool must link a program against all its dependency libraries]) -_LT_TAGDECL([], [always_export_symbols], [0], - [Set to "yes" if exported symbols are required]) -_LT_TAGDECL([], [export_symbols_cmds], [2], - [The commands to list exported symbols]) -_LT_TAGDECL([], [exclude_expsyms], [1], - [Symbols that should not be listed in the preloaded symbols]) -_LT_TAGDECL([], [include_expsyms], [1], - [Symbols that must always be exported]) -_LT_TAGDECL([], [prelink_cmds], [2], - [Commands necessary for linking programs (against libraries) with templates]) -_LT_TAGDECL([], [postlink_cmds], [2], - [Commands necessary for finishing linking programs]) -_LT_TAGDECL([], [file_list_spec], [1], - [Specify filename containing input files]) -dnl FIXME: Not yet implemented -dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], -dnl [Compiler flag to generate thread safe objects]) -])# _LT_LINKER_SHLIBS - - -# _LT_LANG_C_CONFIG([TAG]) -# ------------------------ -# Ensure that the configuration variables for a C compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_C_CONFIG], -[m4_require([_LT_DECL_EGREP])dnl -lt_save_CC="$CC" -AC_LANG_PUSH(C) - -# Source file extension for C test sources. -ac_ext=c - -# Object file extension for compiled C test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="int some_variable = 0;" - -# Code to be used in simple link tests -lt_simple_link_test_code='int main(){return(0);}' - -_LT_TAG_COMPILER -# Save the default compiler, since it gets overwritten when the other -# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. -compiler_DEFAULT=$CC - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - LT_SYS_DLOPEN_SELF - _LT_CMD_STRIPLIB - - # Report which library types will actually be built - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_CONFIG($1) -fi -AC_LANG_POP -CC="$lt_save_CC" -])# _LT_LANG_C_CONFIG - - -# _LT_LANG_CXX_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a C++ compiler are suitably -# defined. These variables are subsequently used by _LT_CONFIG to write -# the compiler configuration to `libtool'. -m4_defun([_LT_LANG_CXX_CONFIG], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -m4_require([_LT_DECL_EGREP])dnl -m4_require([_LT_PATH_MANIFEST_TOOL])dnl -if test -n "$CXX" && ( test "X$CXX" != "Xno" && - ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || - (test "X$CXX" != "Xg++"))) ; then - AC_PROG_CXXCPP -else - _lt_caught_CXX_error=yes -fi - -AC_LANG_PUSH(C++) -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(compiler_needs_object, $1)=no -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for C++ test sources. -ac_ext=cpp - -# Object file extension for compiled C++ test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the CXX compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_caught_CXX_error" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="int some_variable = 0;" - - # Code to be used in simple link tests - lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC=$CC - lt_save_CFLAGS=$CFLAGS - lt_save_LD=$LD - lt_save_GCC=$GCC - GCC=$GXX - lt_save_with_gnu_ld=$with_gnu_ld - lt_save_path_LD=$lt_cv_path_LD - if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then - lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx - else - $as_unset lt_cv_prog_gnu_ld - fi - if test -n "${lt_cv_path_LDCXX+set}"; then - lt_cv_path_LD=$lt_cv_path_LDCXX - else - $as_unset lt_cv_path_LD - fi - test -z "${LDCXX+set}" || LD=$LDCXX - CC=${CXX-"c++"} - CFLAGS=$CXXFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - # We don't want -fno-exception when compiling C++ code, so set the - # no_builtin_flag separately - if test "$GXX" = yes; then - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' - else - _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= - fi - - if test "$GXX" = yes; then - # Set up default GNU C++ configuration - - LT_PATH_LD - - # Check if GNU C++ uses GNU ld as the underlying linker, since the - # archiving commands below assume that GNU ld is being used. - if test "$with_gnu_ld" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # If archive_cmds runs LD, not CC, wlarc should be empty - # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to - # investigate it a little bit more. (MM) - wlarc='${wl}' - - # ancient GNU ld didn't support --whole-archive et. al. - if eval "`$CC -print-prog-name=ld` --help 2>&1" | - $GREP 'no-whole-archive' > /dev/null; then - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - else - _LT_TAGVAR(whole_archive_flag_spec, $1)= - fi - else - with_gnu_ld=no - wlarc= - - # A generic and very simple default shared library creation - # command for GNU C++ for the case where it uses the native - # linker, instead of GNU ld. If possible, this setting should - # overridden to take advantage of the native linker features on - # the platform it is being used on. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - fi - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - GXX=no - with_gnu_ld=no - wlarc= - fi - - # PORTME: fill in a description of your system's C++ link characteristics - AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) - _LT_TAGVAR(ld_shlibs, $1)=yes - case $host_os in - aix3*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aix[[4-9]]*) - if test "$host_cpu" = ia64; then - # On IA64, the linker does run time linking by default, so we don't - # have to do anything special. - aix_use_runtimelinking=no - exp_sym_flag='-Bexport' - no_entry_flag="" - else - aix_use_runtimelinking=no - - # Test if we are trying to use run time linking or normal - # AIX style linking. If -brtl is somewhere in LDFLAGS, we - # need to do runtime linking. - case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) - for ld_flag in $LDFLAGS; do - case $ld_flag in - *-brtl*) - aix_use_runtimelinking=yes - break - ;; - esac - done - ;; - esac - - exp_sym_flag='-bexport' - no_entry_flag='-bnoentry' - fi - - # When large executables or shared objects are built, AIX ld can - # have problems creating the table of contents. If linking a library - # or program results in "error TOC overflow" add -mminimal-toc to - # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not - # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. - - _LT_TAGVAR(archive_cmds, $1)='' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' - - if test "$GXX" = yes; then - case $host_os in aix4.[[012]]|aix4.[[012]].*) - # We only want to do this on AIX 4.2 and lower, the check - # below for broken collect2 doesn't work under 4.3+ - collect2name=`${CC} -print-prog-name=collect2` - if test -f "$collect2name" && - strings "$collect2name" | $GREP resolve_lib_name >/dev/null - then - # We have reworked collect2 - : - else - # We have old collect2 - _LT_TAGVAR(hardcode_direct, $1)=unsupported - # It fails to find uninstalled libraries when the uninstalled - # path is not listed in the libpath. Setting hardcode_minus_L - # to unsupported forces relinking - _LT_TAGVAR(hardcode_minus_L, $1)=yes - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)= - fi - esac - shared_flag='-shared' - if test "$aix_use_runtimelinking" = yes; then - shared_flag="$shared_flag "'${wl}-G' - fi - else - # not using gcc - if test "$host_cpu" = ia64; then - # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release - # chokes on -Wl,-G. The following line is correct: - shared_flag='-G' - else - if test "$aix_use_runtimelinking" = yes; then - shared_flag='${wl}-G' - else - shared_flag='${wl}-bM:SRE' - fi - fi - fi - - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' - # It seems that -bexpall does not export symbols beginning with - # underscore (_), so it is better to generate a list of symbols to - # export. - _LT_TAGVAR(always_export_symbols, $1)=yes - if test "$aix_use_runtimelinking" = yes; then - # Warning - without using the other runtime loading flags (-brtl), - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(allow_undefined_flag, $1)='-berok' - # Determine the default libpath from the value encoded in an empty - # executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" - else - if test "$host_cpu" = ia64; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' - _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" - else - # Determine the default libpath from the value encoded in an - # empty executable. - _LT_SYS_MODULE_PATH_AIX([$1]) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" - # Warning - without using the other run time loading flags, - # -berok will link without error, but may produce a broken library. - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' - if test "$with_gnu_ld" = yes; then - # We only use this code for GNU lds that support --whole-archive. - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - else - # Exported symbols can be pulled into shared objects from archives - _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' - fi - _LT_TAGVAR(archive_cmds_need_lc, $1)=yes - # This is similar to how AIX traditionally builds its shared - # libraries. - _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' - fi - fi - ;; - - beos*) - if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - # Joseph Beckenbach says some releases of gcc - # support --undefined. This deserves some investigation. FIXME - _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - chorus*) - case $cc_basename in - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - cygwin* | mingw* | pw32* | cegcc*) - case $GXX,$cc_basename in - ,cl* | no,cl*) - # Native MSVC - # hardcode_libdir_flag_spec is actually meaningless, as there is - # no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=yes - _LT_TAGVAR(file_list_spec, $1)='@' - # Tell ltmain to make .lib files, not .a files. - libext=lib - # Tell ltmain to make .dll files, not .so files. - shrext_cmds=".dll" - # FIXME: Setting linknames here is a bad hack. - _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; - else - $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; - fi~ - $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ - linknames=' - # The linker will not automatically build a static lib if we build a DLL. - # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - # Don't use ranlib - _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' - _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ - lt_tool_outputfile="@TOOL_OUTPUT@"~ - case $lt_outputfile in - *.exe|*.EXE) ;; - *) - lt_outputfile="$lt_outputfile.exe" - lt_tool_outputfile="$lt_tool_outputfile.exe" - ;; - esac~ - func_to_tool_file "$lt_outputfile"~ - if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then - $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; - $RM "$lt_outputfile.manifest"; - fi' - ;; - *) - # g++ - # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, - # as there is no search path for DLLs. - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' - _LT_TAGVAR(allow_undefined_flag, $1)=unsupported - _LT_TAGVAR(always_export_symbols, $1)=no - _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes - - if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - # If the export-symbols file already is a .def file (1st line - # is EXPORTS), use it as is; otherwise, prepend... - _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then - cp $export_symbols $output_objdir/$soname.def; - else - echo EXPORTS > $output_objdir/$soname.def; - cat $export_symbols >> $output_objdir/$soname.def; - fi~ - $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - darwin* | rhapsody*) - _LT_DARWIN_LINKER_FEATURES($1) - ;; - - dgux*) - case $cc_basename in - ec++*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - ghcx*) - # Green Hills C++ Compiler - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - freebsd[[12]]*) - # C++ shared libraries reported to be fairly broken before - # switch to ELF - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - freebsd-elf*) - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - ;; - - freebsd* | dragonfly*) - # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF - # conventions - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - gnu*) - ;; - - haiku*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - - hpux9*) - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - hpux10*|hpux11*) - if test $with_gnu_ld = no; then - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - case $host_cpu in - hppa*64*|ia64*) - ;; - *) - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - ;; - esac - fi - case $host_cpu in - hppa*64*|ia64*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - ;; - *) - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, - # but as the default - # location of the library. - ;; - esac - - case $cc_basename in - CC*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - aCC*) - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes; then - if test $with_gnu_ld = no; then - case $host_cpu in - hppa*64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - ia64*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - ;; - esac - fi - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - interix[[3-9]]*) - _LT_TAGVAR(hardcode_direct, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. - # Instead, shared libraries are loaded at an image base (0x10000000 by - # default) and relocated if they conflict, which is a slow very memory - # consuming and fragmenting process. To avoid this, we pick a random, - # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link - # time. Moving up from 0x10000000 also allows more sbrk(2) space. - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' - ;; - irix5* | irix6*) - case $cc_basename in - CC*) - # SGI C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - - # Archives containing C++ object files must be created using - # "CC -ar", where "CC" is the IRIX C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' - ;; - *) - if test "$GXX" = yes; then - if test "$with_gnu_ld" = no; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - else - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' - fi - fi - _LT_TAGVAR(link_all_deplibs, $1)=yes - ;; - esac - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - _LT_TAGVAR(inherit_rpath, $1)=yes - ;; - - linux* | k*bsd*-gnu | kopensolaris*-gnu) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - - # Archives containing C++ object files must be created using - # "CC -Bstatic", where "CC" is the KAI C++ compiler. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' - ;; - icpc* | ecpc* ) - # Intel C++ - with_gnu_ld=yes - # version 8.0 and above of icpc choke on multiply defined symbols - # if we add $predep_objects and $postdep_objects, however 7.1 and - # earlier do not add the objects themselves. - case `$CC -V 2>&1` in - *"Version 7."*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - *) # Version 8.0 or newer - tmp_idyn= - case $host_cpu in - ia64*) tmp_idyn=' -i_dynamic';; - esac - _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' - ;; - esac - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' - ;; - pgCC* | pgcpp*) - # Portland Group C++ compiler - case `$CC -V` in - *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) - _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ - compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' - _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ - $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ - $RANLIB $oldlib' - _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ - rm -rf $tpldir~ - $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ - $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - *) # Version 6 and above use weak symbols - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - ;; - cxx*) - # Compaq C++ - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' - - runpath_var=LD_RUN_PATH - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' - ;; - xl* | mpixl* | bgxl*) - # IBM XL 8.0 on PPC, with GNU ld - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' - _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' - if test "x$supports_anon_versioning" = xyes; then - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ - cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ - echo "local: *; };" >> $output_objdir/$libname.ver~ - $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' - fi - ;; - *) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' - _LT_TAGVAR(compiler_needs_object, $1)=yes - - # Not sure whether something based on - # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 - # would be better. - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - esac - ;; - esac - ;; - - lynxos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - m88k*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - mvs*) - case $cc_basename in - cxx*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - netbsd*) - if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' - wlarc= - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - fi - # Workaround some broken pre-1.5 toolchains - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' - ;; - - *nto* | *qnx*) - _LT_TAGVAR(ld_shlibs, $1)=yes - ;; - - openbsd2*) - # C++ shared libraries are fairly broken - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - openbsd*) - if test -f /usr/libexec/ld.so; then - _LT_TAGVAR(hardcode_direct, $1)=yes - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_direct_absolute, $1)=yes - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' - _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' - fi - output_verbose_link_cmd=func_echo_all - else - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - - osf3* | osf4* | osf5*) - case $cc_basename in - KCC*) - # Kuck and Associates, Inc. (KAI) C++ Compiler - - # KCC will only create a shared library if the output file - # ends with ".so" (or ".sl" for HP-UX), so rename the library - # to its proper name (with version) after linking. - _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Archives containing C++ object files must be created using - # the KAI C++ compiler. - case $host in - osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; - *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; - esac - ;; - RCC*) - # Rational C++ 2.4.1 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - cxx*) - case $host in - osf3*) - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - ;; - *) - _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' - _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ - echo "-hidden">> $lib.exp~ - $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ - $RM $lib.exp' - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - # - # There doesn't appear to be a way to prevent this compiler from - # explicitly linking system object files so we need to strip them - # from the output so that they don't get included in the library - # dependencies. - output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' - ;; - *) - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' - case $host in - osf3*) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' - ;; - esac - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=: - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - - else - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - fi - ;; - esac - ;; - - psos*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - sunos4*) - case $cc_basename in - CC*) - # Sun C++ 4.x - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - lcc*) - # Lucid - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - solaris*) - case $cc_basename in - CC* | sunCC*) - # Sun C++ 4.2, 5.x and Centerline C++ - _LT_TAGVAR(archive_cmds_need_lc,$1)=yes - _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' - _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - # The compiler driver will combine and reorder linker options, - # but understands `-z linker_flag'. - # Supported since Solaris 2.6 (maybe 2.5.1?) - _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' - ;; - esac - _LT_TAGVAR(link_all_deplibs, $1)=yes - - output_verbose_link_cmd='func_echo_all' - - # Archives containing C++ object files must be created using - # "CC -xar", where "CC" is the Sun C++ compiler. This is - # necessary to make sure instantiated templates are included - # in the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' - ;; - gcx*) - # Green Hills C++ Compiler - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - - # The C++ compiler must be used to create the archive. - _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' - ;; - *) - # GNU C++ compiler with Solaris linker - if test "$GXX" = yes && test "$with_gnu_ld" = no; then - _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' - if $CC --version | $GREP -v '^2\.7' > /dev/null; then - _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - else - # g++ 2.7 appears to require `-G' NOT `-shared' on this - # platform. - _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' - _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ - $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' - - # Commands to make compiler produce verbose output that lists - # what "hidden" libraries, object files and flags are used when - # linking a shared library. - output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' - fi - - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' - case $host_os in - solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; - *) - _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' - ;; - esac - fi - ;; - esac - ;; - - sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - sysv5* | sco3.2v5* | sco5v6*) - # Note: We can NOT use -z defs as we might desire, because we do not - # link with -lc, and that would cause any symbols used from libc to - # always be unresolved, which means just about no library would - # ever link correctly. If we're not using GNU ld we use -z text - # though, which does catch some bad symbols but isn't as heavy-handed - # as -z defs. - _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' - _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' - _LT_TAGVAR(archive_cmds_need_lc, $1)=no - _LT_TAGVAR(hardcode_shlibpath_var, $1)=no - _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' - _LT_TAGVAR(hardcode_libdir_separator, $1)=':' - _LT_TAGVAR(link_all_deplibs, $1)=yes - _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' - runpath_var='LD_RUN_PATH' - - case $cc_basename in - CC*) - _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ - '"$_LT_TAGVAR(old_archive_cmds, $1)" - _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ - '"$_LT_TAGVAR(reload_cmds, $1)" - ;; - *) - _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' - ;; - esac - ;; - - tandem*) - case $cc_basename in - NCC*) - # NonStop-UX NCC 3.20 - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - ;; - - vxworks*) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - - *) - # FIXME: insert proper C++ library support - _LT_TAGVAR(ld_shlibs, $1)=no - ;; - esac - - AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) - test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no - - _LT_TAGVAR(GCC, $1)="$GXX" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS - LDCXX=$LD - LD=$lt_save_LD - GCC=$lt_save_GCC - with_gnu_ld=$lt_save_with_gnu_ld - lt_cv_path_LDCXX=$lt_cv_path_LD - lt_cv_path_LD=$lt_save_path_LD - lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld - lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld -fi # test "$_lt_caught_CXX_error" != yes - -AC_LANG_POP -])# _LT_LANG_CXX_CONFIG - - -# _LT_FUNC_STRIPNAME_CNF -# ---------------------- -# func_stripname_cnf prefix suffix name -# strip PREFIX and SUFFIX off of NAME. -# PREFIX and SUFFIX must not contain globbing or regex special -# characters, hashes, percent signs, but SUFFIX may contain a leading -# dot (in which case that matches only a dot). -# -# This function is identical to the (non-XSI) version of func_stripname, -# except this one can be used by m4 code that may be executed by configure, -# rather than the libtool script. -m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl -AC_REQUIRE([_LT_DECL_SED]) -AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) -func_stripname_cnf () -{ - case ${2} in - .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; - *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; - esac -} # func_stripname_cnf -])# _LT_FUNC_STRIPNAME_CNF - -# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) -# --------------------------------- -# Figure out "hidden" library dependencies from verbose -# compiler output when linking a shared library. -# Parse the compiler output and extract the necessary -# objects, libraries and library flags. -m4_defun([_LT_SYS_HIDDEN_LIBDEPS], -[m4_require([_LT_FILEUTILS_DEFAULTS])dnl -AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl -# Dependencies to place before and after the object being linked: -_LT_TAGVAR(predep_objects, $1)= -_LT_TAGVAR(postdep_objects, $1)= -_LT_TAGVAR(predeps, $1)= -_LT_TAGVAR(postdeps, $1)= -_LT_TAGVAR(compiler_lib_search_path, $1)= - -dnl we can't use the lt_simple_compile_test_code here, -dnl because it contains code intended for an executable, -dnl not a library. It's possible we should let each -dnl tag define a new lt_????_link_test_code variable, -dnl but it's only used here... -m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF -int a; -void foo (void) { a = 0; } -_LT_EOF -], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF -class Foo -{ -public: - Foo (void) { a = 0; } -private: - int a; -}; -_LT_EOF -], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer*4 a - a=0 - return - end -_LT_EOF -], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF - subroutine foo - implicit none - integer a - a=0 - return - end -_LT_EOF -], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF -public class foo { - private int a; - public void bar (void) { - a = 0; - } -}; -_LT_EOF -]) - -_lt_libdeps_save_CFLAGS=$CFLAGS -case "$CC $CFLAGS " in #( -*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; -*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; -esac - -dnl Parse the compiler output and extract the necessary -dnl objects, libraries and library flags. -if AC_TRY_EVAL(ac_compile); then - # Parse the compiler output and extract the necessary - # objects, libraries and library flags. - - # Sentinel used to keep track of whether or not we are before - # the conftest object file. - pre_test_object_deps_done=no - - for p in `eval "$output_verbose_link_cmd"`; do - case ${prev}${p} in - - -L* | -R* | -l*) - # Some compilers place space between "-{L,R}" and the path. - # Remove the space. - if test $p = "-L" || - test $p = "-R"; then - prev=$p - continue - fi - - # Expand the sysroot to ease extracting the directories later. - if test -z "$prev"; then - case $p in - -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; - -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; - -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; - esac - fi - case $p in - =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; - esac - if test "$pre_test_object_deps_done" = no; then - case ${prev} in - -L | -R) - # Internal compiler library paths should come after those - # provided the user. The postdeps already come after the - # user supplied libs so there is no need to process them. - if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then - _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" - else - _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" - fi - ;; - # The "-l" case would never come before the object being - # linked, so don't bother handling this case. - esac - else - if test -z "$_LT_TAGVAR(postdeps, $1)"; then - _LT_TAGVAR(postdeps, $1)="${prev}${p}" - else - _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" - fi - fi - prev= - ;; - - *.lto.$objext) ;; # Ignore GCC LTO objects - *.$objext) - # This assumes that the test object file only shows up - # once in the compiler output. - if test "$p" = "conftest.$objext"; then - pre_test_object_deps_done=yes - continue - fi - - if test "$pre_test_object_deps_done" = no; then - if test -z "$_LT_TAGVAR(predep_objects, $1)"; then - _LT_TAGVAR(predep_objects, $1)="$p" - else - _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" - fi - else - if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then - _LT_TAGVAR(postdep_objects, $1)="$p" - else - _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" - fi - fi - ;; - - *) ;; # Ignore the rest. - - esac - done - - # Clean up. - rm -f a.out a.exe -else - echo "libtool.m4: error: problem compiling $1 test program" -fi - -$RM -f confest.$objext -CFLAGS=$_lt_libdeps_save_CFLAGS - -# PORTME: override above test on systems where it is broken -m4_if([$1], [CXX], -[case $host_os in -interix[[3-9]]*) - # Interix 3.5 installs completely hosed .la files for C++, so rather than - # hack all around it, let's just trust "g++" to DTRT. - _LT_TAGVAR(predep_objects,$1)= - _LT_TAGVAR(postdep_objects,$1)= - _LT_TAGVAR(postdeps,$1)= - ;; - -linux*) - case `$CC -V 2>&1 | sed 5q` in - *Sun\ C*) - # Sun C++ 5.9 - - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; - -solaris*) - case $cc_basename in - CC* | sunCC*) - # The more standards-conforming stlport4 library is - # incompatible with the Cstd library. Avoid specifying - # it if it's in CXXFLAGS. Ignore libCrun as - # -library=stlport4 depends on it. - case " $CXX $CXXFLAGS " in - *" -library=stlport4 "*) - solaris_use_stlport4=yes - ;; - esac - - # Adding this requires a known-good setup of shared libraries for - # Sun compiler versions before 5.6, else PIC objects from an old - # archive will be linked into the output, leading to subtle bugs. - if test "$solaris_use_stlport4" != yes; then - _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' - fi - ;; - esac - ;; -esac -]) - -case " $_LT_TAGVAR(postdeps, $1) " in -*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; -esac - _LT_TAGVAR(compiler_lib_search_dirs, $1)= -if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then - _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` -fi -_LT_TAGDECL([], [compiler_lib_search_dirs], [1], - [The directories searched by this compiler when creating a shared library]) -_LT_TAGDECL([], [predep_objects], [1], - [Dependencies to place before and after the objects being linked to - create a shared library]) -_LT_TAGDECL([], [postdep_objects], [1]) -_LT_TAGDECL([], [predeps], [1]) -_LT_TAGDECL([], [postdeps], [1]) -_LT_TAGDECL([], [compiler_lib_search_path], [1], - [The library search path used internally by the compiler when linking - a shared library]) -])# _LT_SYS_HIDDEN_LIBDEPS - - -# _LT_LANG_F77_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for a Fortran 77 compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_F77_CONFIG], -[AC_LANG_PUSH(Fortran 77) -if test -z "$F77" || test "X$F77" = "Xno"; then - _lt_disable_F77=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for f77 test sources. -ac_ext=f - -# Object file extension for compiled f77 test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the F77 compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_F77" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${F77-"f77"} - CFLAGS=$FFLAGS - compiler=$CC - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - GCC=$G77 - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$G77" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC="$lt_save_CC" - CFLAGS="$lt_save_CFLAGS" -fi # test "$_lt_disable_F77" != yes - -AC_LANG_POP -])# _LT_LANG_F77_CONFIG - - -# _LT_LANG_FC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for a Fortran compiler are -# suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_FC_CONFIG], -[AC_LANG_PUSH(Fortran) - -if test -z "$FC" || test "X$FC" = "Xno"; then - _lt_disable_FC=yes -fi - -_LT_TAGVAR(archive_cmds_need_lc, $1)=no -_LT_TAGVAR(allow_undefined_flag, $1)= -_LT_TAGVAR(always_export_symbols, $1)=no -_LT_TAGVAR(archive_expsym_cmds, $1)= -_LT_TAGVAR(export_dynamic_flag_spec, $1)= -_LT_TAGVAR(hardcode_direct, $1)=no -_LT_TAGVAR(hardcode_direct_absolute, $1)=no -_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= -_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= -_LT_TAGVAR(hardcode_libdir_separator, $1)= -_LT_TAGVAR(hardcode_minus_L, $1)=no -_LT_TAGVAR(hardcode_automatic, $1)=no -_LT_TAGVAR(inherit_rpath, $1)=no -_LT_TAGVAR(module_cmds, $1)= -_LT_TAGVAR(module_expsym_cmds, $1)= -_LT_TAGVAR(link_all_deplibs, $1)=unknown -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds -_LT_TAGVAR(no_undefined_flag, $1)= -_LT_TAGVAR(whole_archive_flag_spec, $1)= -_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no - -# Source file extension for fc test sources. -ac_ext=${ac_fc_srcext-f} - -# Object file extension for compiled fc test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# No sense in running all these tests if we already determined that -# the FC compiler isn't working. Some variables (like enable_shared) -# are currently assumed to apply to all compilers on this platform, -# and will be corrupted by setting them based on a non-working compiler. -if test "$_lt_disable_FC" != yes; then - # Code to be used in simple compile tests - lt_simple_compile_test_code="\ - subroutine t - return - end -" - - # Code to be used in simple link tests - lt_simple_link_test_code="\ - program t - end -" - - # ltmain only uses $CC for tagged configurations so make sure $CC is set. - _LT_TAG_COMPILER - - # save warnings/boilerplate of simple test code - _LT_COMPILER_BOILERPLATE - _LT_LINKER_BOILERPLATE - - # Allow CC to be a program name with arguments. - lt_save_CC="$CC" - lt_save_GCC=$GCC - lt_save_CFLAGS=$CFLAGS - CC=${FC-"f95"} - CFLAGS=$FCFLAGS - compiler=$CC - GCC=$ac_cv_fc_compiler_gnu - - _LT_TAGVAR(compiler, $1)=$CC - _LT_CC_BASENAME([$compiler]) - - if test -n "$compiler"; then - AC_MSG_CHECKING([if libtool supports shared libraries]) - AC_MSG_RESULT([$can_build_shared]) - - AC_MSG_CHECKING([whether to build shared libraries]) - test "$can_build_shared" = "no" && enable_shared=no - - # On AIX, shared libraries and static libraries use the same namespace, and - # are all built from PIC. - case $host_os in - aix3*) - test "$enable_shared" = yes && enable_static=no - if test -n "$RANLIB"; then - archive_cmds="$archive_cmds~\$RANLIB \$lib" - postinstall_cmds='$RANLIB $lib' - fi - ;; - aix[[4-9]]*) - if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then - test "$enable_shared" = yes && enable_static=no - fi - ;; - esac - AC_MSG_RESULT([$enable_shared]) - - AC_MSG_CHECKING([whether to build static libraries]) - # Make sure either enable_shared or enable_static is yes. - test "$enable_shared" = yes || enable_static=yes - AC_MSG_RESULT([$enable_static]) - - _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" - _LT_TAGVAR(LD, $1)="$LD" - - ## CAVEAT EMPTOR: - ## There is no encapsulation within the following macros, do not change - ## the running order or otherwise move them around unless you know exactly - ## what you are doing... - _LT_SYS_HIDDEN_LIBDEPS($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_SYS_DYNAMIC_LINKER($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) - fi # test -n "$compiler" - - GCC=$lt_save_GCC - CC=$lt_save_CC - CFLAGS=$lt_save_CFLAGS -fi # test "$_lt_disable_FC" != yes - -AC_LANG_POP -])# _LT_LANG_FC_CONFIG - - -# _LT_LANG_GCJ_CONFIG([TAG]) -# -------------------------- -# Ensure that the configuration variables for the GNU Java Compiler compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_GCJ_CONFIG], -[AC_REQUIRE([LT_PROG_GCJ])dnl -AC_LANG_SAVE - -# Source file extension for Java test sources. -ac_ext=java - -# Object file extension for compiled Java test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code="class foo {}" - -# Code to be used in simple link tests -lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC=$CC -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC=yes -CC=${GCJ-"gcj"} -CFLAGS=$GCJFLAGS -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_TAGVAR(LD, $1)="$LD" -_LT_CC_BASENAME([$compiler]) - -# GCJ did not exist at the time GCC didn't implicitly link libc in. -_LT_TAGVAR(archive_cmds_need_lc, $1)=no - -_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds -_LT_TAGVAR(reload_flag, $1)=$reload_flag -_LT_TAGVAR(reload_cmds, $1)=$reload_cmds - -## CAVEAT EMPTOR: -## There is no encapsulation within the following macros, do not change -## the running order or otherwise move them around unless you know exactly -## what you are doing... -if test -n "$compiler"; then - _LT_COMPILER_NO_RTTI($1) - _LT_COMPILER_PIC($1) - _LT_COMPILER_C_O($1) - _LT_COMPILER_FILE_LOCKS($1) - _LT_LINKER_SHLIBS($1) - _LT_LINKER_HARDCODE_LIBPATH($1) - - _LT_CONFIG($1) -fi - -AC_LANG_RESTORE - -GCC=$lt_save_GCC -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_GCJ_CONFIG - - -# _LT_LANG_RC_CONFIG([TAG]) -# ------------------------- -# Ensure that the configuration variables for the Windows resource compiler -# are suitably defined. These variables are subsequently used by _LT_CONFIG -# to write the compiler configuration to `libtool'. -m4_defun([_LT_LANG_RC_CONFIG], -[AC_REQUIRE([LT_PROG_RC])dnl -AC_LANG_SAVE - -# Source file extension for RC test sources. -ac_ext=rc - -# Object file extension for compiled RC test sources. -objext=o -_LT_TAGVAR(objext, $1)=$objext - -# Code to be used in simple compile tests -lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' - -# Code to be used in simple link tests -lt_simple_link_test_code="$lt_simple_compile_test_code" - -# ltmain only uses $CC for tagged configurations so make sure $CC is set. -_LT_TAG_COMPILER - -# save warnings/boilerplate of simple test code -_LT_COMPILER_BOILERPLATE -_LT_LINKER_BOILERPLATE - -# Allow CC to be a program name with arguments. -lt_save_CC="$CC" -lt_save_CFLAGS=$CFLAGS -lt_save_GCC=$GCC -GCC= -CC=${RC-"windres"} -CFLAGS= -compiler=$CC -_LT_TAGVAR(compiler, $1)=$CC -_LT_CC_BASENAME([$compiler]) -_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes - -if test -n "$compiler"; then - : - _LT_CONFIG($1) -fi - -GCC=$lt_save_GCC -AC_LANG_RESTORE -CC=$lt_save_CC -CFLAGS=$lt_save_CFLAGS -])# _LT_LANG_RC_CONFIG - - -# LT_PROG_GCJ -# ----------- -AC_DEFUN([LT_PROG_GCJ], -[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], - [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], - [AC_CHECK_TOOL(GCJ, gcj,) - test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" - AC_SUBST(GCJFLAGS)])])[]dnl -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_GCJ], []) - - -# LT_PROG_RC -# ---------- -AC_DEFUN([LT_PROG_RC], -[AC_CHECK_TOOL(RC, windres,) -]) - -# Old name: -AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_RC], []) - - -# _LT_DECL_EGREP -# -------------- -# If we don't have a new enough Autoconf to choose the best grep -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_EGREP], -[AC_REQUIRE([AC_PROG_EGREP])dnl -AC_REQUIRE([AC_PROG_FGREP])dnl -test -z "$GREP" && GREP=grep -_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) -_LT_DECL([], [EGREP], [1], [An ERE matcher]) -_LT_DECL([], [FGREP], [1], [A literal string matcher]) -dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too -AC_SUBST([GREP]) -]) - - -# _LT_DECL_OBJDUMP -# -------------- -# If we don't have a new enough Autoconf to choose the best objdump -# available, choose the one first in the user's PATH. -m4_defun([_LT_DECL_OBJDUMP], -[AC_CHECK_TOOL(OBJDUMP, objdump, false) -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) -AC_SUBST([OBJDUMP]) -]) - -# _LT_DECL_DLLTOOL -# ---------------- -# Ensure DLLTOOL variable is set. -m4_defun([_LT_DECL_DLLTOOL], -[AC_CHECK_TOOL(DLLTOOL, dlltool, false) -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) -AC_SUBST([DLLTOOL]) -]) - -# _LT_DECL_SED -# ------------ -# Check for a fully-functional sed program, that truncates -# as few characters as possible. Prefer GNU sed if found. -m4_defun([_LT_DECL_SED], -[AC_PROG_SED -test -z "$SED" && SED=sed -Xsed="$SED -e 1s/^X//" -_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) -_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], - [Sed that helps us avoid accidentally triggering echo(1) options like -n]) -])# _LT_DECL_SED - -m4_ifndef([AC_PROG_SED], [ -############################################################ -# NOTE: This macro has been submitted for inclusion into # -# GNU Autoconf as AC_PROG_SED. When it is available in # -# a released version of Autoconf we should remove this # -# macro and use it instead. # -############################################################ - -m4_defun([AC_PROG_SED], -[AC_MSG_CHECKING([for a sed that does not truncate output]) -AC_CACHE_VAL(lt_cv_path_SED, -[# Loop through the user's path and test for sed and gsed. -# Then use that list of sed's as ones to test for truncation. -as_save_IFS=$IFS; IFS=$PATH_SEPARATOR -for as_dir in $PATH -do - IFS=$as_save_IFS - test -z "$as_dir" && as_dir=. - for lt_ac_prog in sed gsed; do - for ac_exec_ext in '' $ac_executable_extensions; do - if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then - lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" - fi - done - done -done -IFS=$as_save_IFS -lt_ac_max=0 -lt_ac_count=0 -# Add /usr/xpg4/bin/sed as it is typically found on Solaris -# along with /bin/sed that truncates output. -for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do - test ! -f $lt_ac_sed && continue - cat /dev/null > conftest.in - lt_ac_count=0 - echo $ECHO_N "0123456789$ECHO_C" >conftest.in - # Check for GNU sed and select it if it is found. - if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then - lt_cv_path_SED=$lt_ac_sed - break - fi - while true; do - cat conftest.in conftest.in >conftest.tmp - mv conftest.tmp conftest.in - cp conftest.in conftest.nl - echo >>conftest.nl - $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break - cmp -s conftest.out conftest.nl || break - # 10000 chars as input seems more than enough - test $lt_ac_count -gt 10 && break - lt_ac_count=`expr $lt_ac_count + 1` - if test $lt_ac_count -gt $lt_ac_max; then - lt_ac_max=$lt_ac_count - lt_cv_path_SED=$lt_ac_sed - fi - done -done -]) -SED=$lt_cv_path_SED -AC_SUBST([SED]) -AC_MSG_RESULT([$SED]) -])#AC_PROG_SED -])#m4_ifndef - -# Old name: -AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([LT_AC_PROG_SED], []) - - -# _LT_CHECK_SHELL_FEATURES -# ------------------------ -# Find out whether the shell is Bourne or XSI compatible, -# or has some other useful features. -m4_defun([_LT_CHECK_SHELL_FEATURES], -[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) -# Try some XSI features -xsi_shell=no -( _lt_dummy="a/b/c" - test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,b/c, \ - && eval 'test $(( 1 + 1 )) -eq 2 \ - && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ - && xsi_shell=yes -AC_MSG_RESULT([$xsi_shell]) -_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) - -AC_MSG_CHECKING([whether the shell understands "+="]) -lt_shell_append=no -( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ - >/dev/null 2>&1 \ - && lt_shell_append=yes -AC_MSG_RESULT([$lt_shell_append]) -_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) - -if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then - lt_unset=unset -else - lt_unset=false -fi -_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl - -# test EBCDIC or ASCII -case `echo X|tr X '\101'` in - A) # ASCII based system - # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr - lt_SP2NL='tr \040 \012' - lt_NL2SP='tr \015\012 \040\040' - ;; - *) # EBCDIC based system - lt_SP2NL='tr \100 \n' - lt_NL2SP='tr \r\n \100\100' - ;; -esac -_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl -_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl -])# _LT_CHECK_SHELL_FEATURES - - -# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) -# ------------------------------------------------------ -# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and -# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. -m4_defun([_LT_PROG_FUNCTION_REPLACE], -[dnl { -sed -e '/^$1 ()$/,/^} # $1 /c\ -$1 ()\ -{\ -m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) -} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") -test 0 -eq $? || _lt_function_replace_fail=: -]) - - -# _LT_PROG_REPLACE_SHELLFNS -# ------------------------- -# Replace existing portable implementations of several shell functions with -# equivalent extended shell implementations where those features are available.. -m4_defun([_LT_PROG_REPLACE_SHELLFNS], -[if test x"$xsi_shell" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl - case ${1} in - */*) func_dirname_result="${1%/*}${2}" ;; - * ) func_dirname_result="${3}" ;; - esac - func_basename_result="${1##*/}"]) - - _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl - # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are - # positional parameters, so assign one to ordinary parameter first. - func_stripname_result=${3} - func_stripname_result=${func_stripname_result#"${1}"} - func_stripname_result=${func_stripname_result%"${2}"}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl - func_split_long_opt_name=${1%%=*} - func_split_long_opt_arg=${1#*=}]) - - _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl - func_split_short_opt_arg=${1#??} - func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) - - _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl - case ${1} in - *.lo) func_lo2o_result=${1%.lo}.${objext} ;; - *) func_lo2o_result=${1} ;; - esac]) - - _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) - - _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) - - _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) -fi - -if test x"$lt_shell_append" = xyes; then - _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) - - _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl - func_quote_for_eval "${2}" -dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ - eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) - - # Save a `func_append' function call where possible by direct use of '+=' - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -else - # Save a `func_append' function call even when '+=' is not available - sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ - && mv -f "$cfgfile.tmp" "$cfgfile" \ - || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") - test 0 -eq $? || _lt_function_replace_fail=: -fi - -if test x"$_lt_function_replace_fail" = x":"; then - AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) -fi -]) - -# _LT_PATH_CONVERSION_FUNCTIONS -# ----------------------------- -# Determine which file name conversion functions should be used by -# func_to_host_file (and, implicitly, by func_to_host_path). These are needed -# for certain cross-compile configurations and native mingw. -m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -AC_REQUIRE([AC_CANONICAL_BUILD])dnl -AC_MSG_CHECKING([how to convert $build file names to $host format]) -AC_CACHE_VAL(lt_cv_to_host_file_cmd, -[case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 - ;; - esac - ;; - *-*-cygwin* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin - ;; - *-*-cygwin* ) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; - * ) # otherwise, assume *nix - lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin - ;; - esac - ;; - * ) # unhandled hosts (and "normal" native builds) - lt_cv_to_host_file_cmd=func_convert_file_noop - ;; -esac -]) -to_host_file_cmd=$lt_cv_to_host_file_cmd -AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) -_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], - [0], [convert $build file names to $host format])dnl - -AC_MSG_CHECKING([how to convert $build file names to toolchain format]) -AC_CACHE_VAL(lt_cv_to_tool_file_cmd, -[#assume ordinary cross tools, or native build. -lt_cv_to_tool_file_cmd=func_convert_file_noop -case $host in - *-*-mingw* ) - case $build in - *-*-mingw* ) # actually msys - lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 - ;; - esac - ;; -esac -]) -to_tool_file_cmd=$lt_cv_to_tool_file_cmd -AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) -_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], - [0], [convert $build files to toolchain format])dnl -])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/src/spatialite/m4/ltoptions.m4 b/src/spatialite/m4/ltoptions.m4 deleted file mode 100644 index 17cfd51..0000000 --- a/src/spatialite/m4/ltoptions.m4 +++ /dev/null @@ -1,369 +0,0 @@ -# Helper functions for option handling. -*- Autoconf -*- -# -# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, -# Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 7 ltoptions.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) - - -# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) -# ------------------------------------------ -m4_define([_LT_MANGLE_OPTION], -[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) - - -# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) -# --------------------------------------- -# Set option OPTION-NAME for macro MACRO-NAME, and if there is a -# matching handler defined, dispatch to it. Other OPTION-NAMEs are -# saved as a flag. -m4_define([_LT_SET_OPTION], -[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl -m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), - _LT_MANGLE_DEFUN([$1], [$2]), - [m4_warning([Unknown $1 option `$2'])])[]dnl -]) - - -# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) -# ------------------------------------------------------------ -# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. -m4_define([_LT_IF_OPTION], -[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) - - -# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) -# ------------------------------------------------------- -# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME -# are set. -m4_define([_LT_UNLESS_OPTIONS], -[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), - [m4_define([$0_found])])])[]dnl -m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 -])[]dnl -]) - - -# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) -# ---------------------------------------- -# OPTION-LIST is a space-separated list of Libtool options associated -# with MACRO-NAME. If any OPTION has a matching handler declared with -# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about -# the unknown option and exit. -m4_defun([_LT_SET_OPTIONS], -[# Set options -m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), - [_LT_SET_OPTION([$1], _LT_Option)]) - -m4_if([$1],[LT_INIT],[ - dnl - dnl Simply set some default values (i.e off) if boolean options were not - dnl specified: - _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no - ]) - _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no - ]) - dnl - dnl If no reference was made to various pairs of opposing options, then - dnl we run the default mode handler for the pair. For example, if neither - dnl `shared' nor `disable-shared' was passed, we enable building of shared - dnl archives by default: - _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) - _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) - _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], - [_LT_ENABLE_FAST_INSTALL]) - ]) -])# _LT_SET_OPTIONS - - -## --------------------------------- ## -## Macros to handle LT_INIT options. ## -## --------------------------------- ## - -# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) -# ----------------------------------------- -m4_define([_LT_MANGLE_DEFUN], -[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) - - -# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) -# ----------------------------------------------- -m4_define([LT_OPTION_DEFINE], -[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl -])# LT_OPTION_DEFINE - - -# dlopen -# ------ -LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes -]) - -AU_DEFUN([AC_LIBTOOL_DLOPEN], -[_LT_SET_OPTION([LT_INIT], [dlopen]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `dlopen' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) - - -# win32-dll -# --------- -# Declare package support for building win32 dll's. -LT_OPTION_DEFINE([LT_INIT], [win32-dll], -[enable_win32_dll=yes - -case $host in -*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) - AC_CHECK_TOOL(AS, as, false) - AC_CHECK_TOOL(DLLTOOL, dlltool, false) - AC_CHECK_TOOL(OBJDUMP, objdump, false) - ;; -esac - -test -z "$AS" && AS=as -_LT_DECL([], [AS], [1], [Assembler program])dnl - -test -z "$DLLTOOL" && DLLTOOL=dlltool -_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl - -test -z "$OBJDUMP" && OBJDUMP=objdump -_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl -])# win32-dll - -AU_DEFUN([AC_LIBTOOL_WIN32_DLL], -[AC_REQUIRE([AC_CANONICAL_HOST])dnl -_LT_SET_OPTION([LT_INIT], [win32-dll]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `win32-dll' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) - - -# _LT_ENABLE_SHARED([DEFAULT]) -# ---------------------------- -# implement the --enable-shared flag, and supports the `shared' and -# `disable-shared' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_SHARED], -[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([shared], - [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], - [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) - - _LT_DECL([build_libtool_libs], [enable_shared], [0], - [Whether or not to build shared libraries]) -])# _LT_ENABLE_SHARED - -LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) -]) - -AC_DEFUN([AC_DISABLE_SHARED], -[_LT_SET_OPTION([LT_INIT], [disable-shared]) -]) - -AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) -AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_SHARED], []) -dnl AC_DEFUN([AM_DISABLE_SHARED], []) - - - -# _LT_ENABLE_STATIC([DEFAULT]) -# ---------------------------- -# implement the --enable-static flag, and support the `static' and -# `disable-static' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_STATIC], -[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([static], - [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], - [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_static=]_LT_ENABLE_STATIC_DEFAULT) - - _LT_DECL([build_old_libs], [enable_static], [0], - [Whether or not to build static libraries]) -])# _LT_ENABLE_STATIC - -LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) - -# Old names: -AC_DEFUN([AC_ENABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) -]) - -AC_DEFUN([AC_DISABLE_STATIC], -[_LT_SET_OPTION([LT_INIT], [disable-static]) -]) - -AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) -AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AM_ENABLE_STATIC], []) -dnl AC_DEFUN([AM_DISABLE_STATIC], []) - - - -# _LT_ENABLE_FAST_INSTALL([DEFAULT]) -# ---------------------------------- -# implement the --enable-fast-install flag, and support the `fast-install' -# and `disable-fast-install' LT_INIT options. -# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. -m4_define([_LT_ENABLE_FAST_INSTALL], -[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl -AC_ARG_ENABLE([fast-install], - [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], - [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], - [p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac], - [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) - -_LT_DECL([fast_install], [enable_fast_install], [0], - [Whether or not to optimize for fast installation])dnl -])# _LT_ENABLE_FAST_INSTALL - -LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) -LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) - -# Old names: -AU_DEFUN([AC_ENABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `fast-install' option into LT_INIT's first parameter.]) -]) - -AU_DEFUN([AC_DISABLE_FAST_INSTALL], -[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you put -the `disable-fast-install' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) -dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) - - -# _LT_WITH_PIC([MODE]) -# -------------------- -# implement the --with-pic flag, and support the `pic-only' and `no-pic' -# LT_INIT options. -# MODE is either `yes' or `no'. If omitted, it defaults to `both'. -m4_define([_LT_WITH_PIC], -[AC_ARG_WITH([pic], - [AS_HELP_STRING([--with-pic], - [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], - [pic_mode="$withval"], - [pic_mode=default]) - -test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) - -_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl -])# _LT_WITH_PIC - -LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) -LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) - -# Old name: -AU_DEFUN([AC_LIBTOOL_PICMODE], -[_LT_SET_OPTION([LT_INIT], [pic-only]) -AC_DIAGNOSE([obsolete], -[$0: Remove this warning and the call to _LT_SET_OPTION when you -put the `pic-only' option into LT_INIT's first parameter.]) -]) - -dnl aclocal-1.4 backwards compatibility: -dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) - -## ----------------- ## -## LTDL_INIT Options ## -## ----------------- ## - -m4_define([_LTDL_MODE], []) -LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], - [m4_define([_LTDL_MODE], [nonrecursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [recursive], - [m4_define([_LTDL_MODE], [recursive])]) -LT_OPTION_DEFINE([LTDL_INIT], [subproject], - [m4_define([_LTDL_MODE], [subproject])]) - -m4_define([_LTDL_TYPE], []) -LT_OPTION_DEFINE([LTDL_INIT], [installable], - [m4_define([_LTDL_TYPE], [installable])]) -LT_OPTION_DEFINE([LTDL_INIT], [convenience], - [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/src/spatialite/m4/ltsugar.m4 b/src/spatialite/m4/ltsugar.m4 deleted file mode 100644 index 9000a05..0000000 --- a/src/spatialite/m4/ltsugar.m4 +++ /dev/null @@ -1,123 +0,0 @@ -# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. -# Written by Gary V. Vaughan, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 6 ltsugar.m4 - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) - - -# lt_join(SEP, ARG1, [ARG2...]) -# ----------------------------- -# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their -# associated separator. -# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier -# versions in m4sugar had bugs. -m4_define([lt_join], -[m4_if([$#], [1], [], - [$#], [2], [[$2]], - [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) -m4_define([_lt_join], -[m4_if([$#$2], [2], [], - [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) - - -# lt_car(LIST) -# lt_cdr(LIST) -# ------------ -# Manipulate m4 lists. -# These macros are necessary as long as will still need to support -# Autoconf-2.59 which quotes differently. -m4_define([lt_car], [[$1]]) -m4_define([lt_cdr], -[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], - [$#], 1, [], - [m4_dquote(m4_shift($@))])]) -m4_define([lt_unquote], $1) - - -# lt_append(MACRO-NAME, STRING, [SEPARATOR]) -# ------------------------------------------ -# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. -# Note that neither SEPARATOR nor STRING are expanded; they are appended -# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). -# No SEPARATOR is output if MACRO-NAME was previously undefined (different -# than defined and empty). -# -# This macro is needed until we can rely on Autoconf 2.62, since earlier -# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. -m4_define([lt_append], -[m4_define([$1], - m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) - - - -# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) -# ---------------------------------------------------------- -# Produce a SEP delimited list of all paired combinations of elements of -# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list -# has the form PREFIXmINFIXSUFFIXn. -# Needed until we can rely on m4_combine added in Autoconf 2.62. -m4_define([lt_combine], -[m4_if(m4_eval([$# > 3]), [1], - [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl -[[m4_foreach([_Lt_prefix], [$2], - [m4_foreach([_Lt_suffix], - ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, - [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) - - -# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) -# ----------------------------------------------------------------------- -# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited -# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. -m4_define([lt_if_append_uniq], -[m4_ifdef([$1], - [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], - [lt_append([$1], [$2], [$3])$4], - [$5])], - [lt_append([$1], [$2], [$3])$4])]) - - -# lt_dict_add(DICT, KEY, VALUE) -# ----------------------------- -m4_define([lt_dict_add], -[m4_define([$1($2)], [$3])]) - - -# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) -# -------------------------------------------- -m4_define([lt_dict_add_subkey], -[m4_define([$1($2:$3)], [$4])]) - - -# lt_dict_fetch(DICT, KEY, [SUBKEY]) -# ---------------------------------- -m4_define([lt_dict_fetch], -[m4_ifval([$3], - m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), - m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) - - -# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) -# ----------------------------------------------------------------- -m4_define([lt_if_dict_fetch], -[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], - [$5], - [$6])]) - - -# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) -# -------------------------------------------------------------- -m4_define([lt_dict_filter], -[m4_if([$5], [], [], - [lt_join(m4_quote(m4_default([$4], [[, ]])), - lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), - [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl -]) diff --git a/src/spatialite/m4/ltversion.m4 b/src/spatialite/m4/ltversion.m4 deleted file mode 100644 index 9c7b5d4..0000000 --- a/src/spatialite/m4/ltversion.m4 +++ /dev/null @@ -1,23 +0,0 @@ -# ltversion.m4 -- version numbers -*- Autoconf -*- -# -# Copyright (C) 2004 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004 -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# @configure_input@ - -# serial 3293 ltversion.m4 -# This file is part of GNU Libtool - -m4_define([LT_PACKAGE_VERSION], [2.4]) -m4_define([LT_PACKAGE_REVISION], [1.3293]) - -AC_DEFUN([LTVERSION_VERSION], -[macro_version='2.4' -macro_revision='1.3293' -_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) -_LT_DECL(, macro_revision, 0) -]) diff --git a/src/spatialite/m4/lt~obsolete.m4 b/src/spatialite/m4/lt~obsolete.m4 deleted file mode 100644 index c573da9..0000000 --- a/src/spatialite/m4/lt~obsolete.m4 +++ /dev/null @@ -1,98 +0,0 @@ -# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- -# -# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. -# Written by Scott James Remnant, 2004. -# -# This file is free software; the Free Software Foundation gives -# unlimited permission to copy and/or distribute it, with or without -# modifications, as long as this notice is preserved. - -# serial 5 lt~obsolete.m4 - -# These exist entirely to fool aclocal when bootstrapping libtool. -# -# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) -# which have later been changed to m4_define as they aren't part of the -# exported API, or moved to Autoconf or Automake where they belong. -# -# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN -# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us -# using a macro with the same name in our local m4/libtool.m4 it'll -# pull the old libtool.m4 in (it doesn't see our shiny new m4_define -# and doesn't know about Autoconf macros at all.) -# -# So we provide this file, which has a silly filename so it's always -# included after everything else. This provides aclocal with the -# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything -# because those macros already exist, or will be overwritten later. -# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. -# -# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. -# Yes, that means every name once taken will need to remain here until -# we give up compatibility with versions before 1.7, at which point -# we need to keep only those names which we still refer to. - -# This is to help aclocal find these macros, as it can't see m4_define. -AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) - -m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) -m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) -m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) -m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) -m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) -m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) -m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) -m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) -m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) -m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) -m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) -m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) -m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) -m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) -m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) -m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) -m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) -m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) -m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) -m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) -m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) -m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) -m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) -m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) -m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) -m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) -m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) -m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) -m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) -m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) -m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) -m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) -m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) -m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) -m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) -m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) -m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) -m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) -m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) -m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) -m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) -m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) -m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) -m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) -m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) -m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) -m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) -m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) -m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) -m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) -m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) -m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) -m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) -m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) -m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/src/spatialite/mainpage.doxy b/src/spatialite/mainpage.doxy deleted file mode 100644 index 7ee1114..0000000 --- a/src/spatialite/mainpage.doxy +++ /dev/null @@ -1,140 +0,0 @@ -/** \mainpage Introduction - -\section Generalities - -SpatiaLite is an open source library intended to extend basic SQLite -core in order to support full fledged Spatial SQL capabilities. - -\n\n SQLite is intrinsically simple and lighweight: -- a single ligthweight library implementing the full SQL engine. -- standard SQL implementation: almost complete SQL-92. -- no complex client/server architecture. -- a whole database simply corresponds to a single monolithic file - [no size limits]. -- any DB-file can be safely exchanged across different platforms, because - the internal architecture is universally portable. -- no installation, no configuration. - -SpatiaLite is smoothly integrated into SQLite so to deploy a -complete and powerfull Spatial DBMS [mostly OGC-SFS compliant]. -\n All this fully preserving the lightness and simplicity typical -of SQLite itself. -\n That's not all: SpatiaLite supports direct SQL access to several -commonly used \e external \e datasources, this including: -- ESRI \b Shapefiles. -- \b DBF Archive Files. -- \b TXT/CSV structured text files. -- \b Spreadsheets [.xls format]. - -And SpatiaLite actively supports many alternative standard Geometry notations: -- \b WKT [Well Known Text] and \b WKB [Well Known Binary]. -- PostGIS own \b EWKT and \b EWKB [Extended WKT / WKB]. -- \b GML [Geography Markup Language, both v2 and v3]. -- \b KML [Keyhole Markup Language, used by Google Maps and Google Earth]. -- \b GeoJSON [Geometry Java Script Object Notation]. -- \b SVG [Scalable Vector Graphics]. - -Conclusion: using SQLite + SpatiaLite you can deploy an -alternative Spatial DBMS roughly equivalent to PostgreSQL + PostGIS. -\n The main difference between them isn't in powerness, but mainly -relies on architecture: -- PostgrSQL + PostGIS fully supports a client/server architecture. - \n This is well fit for complex and sophisticated Spatial Data - infrastructures, but surely implies a certain degree of complexity. -- SQLite + SpatiaLite supports a much more simplest personal architecture. - \n This is most appropriate for desktop, stand-alone, personal activities. - -Choosing the one or the other simply depends on your very specific -requirements: -- no one is better than the other one: - they are simply optimized for different envoronments. -- both them can roughly support the same Spatial Data processing capabilities. -- feel free to choose the best fit one accordingly to your effective goals. - -\section Building - -Building and installing the SpatiaLite library is straightforward: -\verbatim -./configure -make -make install -\endverbatim - -Please note: SpatiaLite depends on the following open source libraries: -- GNU \b ICONV - \n locale charset encodings support -- \b GEOS - \n Geometry engine -- \b PROJ.4 - \n Spatial Reference System handling [coordinate re-projection] -- \b FreeXL - \n Spreadsheet input support [.xls format] - -The library comes in two different flavors: -- \b libspatialite - \n standard, canonical library: the best and safest way to deploy SpatiaLite. - \n this obviously depends on \e external \b libsqlite: thus ensuring full - coherence between libraries. - \n warmly reccomended, mostly on Unix-like systems.\n -- \b libspatialite-amalgamation - \n The whole library is \e amalgamated into a single monolithic file - and includes an \e internal \e private \e copy of \b libsqlite. - \n Using the \e amalgamated library may strongly simplify any following - installation process, and nicely supports \b static \b linkage. - \n Anyway, you can safely apply the \e amalgamated approch only to - self-standing apps. - \n Attempting to use the \e amalgated library on complex frameworks or on - data connectors / language bindings - \n may easily cause serious conflicts. - -\section Deployment - -You can deploy SpatiaLite in two alternative ways: -- you can load the SpatiaLite library as a \b dynamic \b extension to SQLite. - \n This allows SQLite to support SQL Spatial Data [Geometry] and SQL - Spatial Functions. - \n Theorically, any generic tool or language connector supporting SQLite - can support this \e extension mechanism; - \n sadly enough, sometimes this feature is intentionally disabled: - I'm sorry for you if this is your specific case. - \n\n How to load SpatiaLite as a dynamic extension to SQLite: -\verbatim -SELECT load_extension('spatialite_dynamic_library_name'); -\endverbatim - \n -- you can directly link the SpatiaLite library to any application of your own. - \n This allows you to ship a complete, powerfull, self-contained Spatial - SQL engine directly supporting your app. - \n And such Spatial SQL engine doesn't requires any installation or - configuration at all. - \n That's not all: linking the SpatiaLite to your own C/C++ code you aren't - simply constrained to use SQL: - \n adopting this approach you can directly access the complete C API. - \n\n Linking SpatiaLite to your own code is usually simple: -\verbatim -gcc my_program.c -o my_program -lspatialite -\endverbatim - \n On some systems you may have to provide a slightly more complex arrangement: -\verbatim -gcc -I/usr/local/include my_program.c -o my_program \ - -L/usr/local/lib -lpsatialite -lsqlite -lgeos_c -lgeos \ - -lproj -lfreexl -liconv -lm -lstdc++ -\endverbatim - \n SpatiaLite also provides pkg-config support, so you can also do -\verbatim -gcc -I/usr/local/include my_program.c -o my_program \ - `pkg-config --libs spatialite` -\endverbatim - - -\section License - -SpatiaLite is licensed under the MPL tri-license terms: you are free to choose -the best-fit license between: - - the MPL 1.1 - - the GPL v2.0 or any subsequent version - - the LGPL v2.1 or any subsequent version - -Enjoy, and happy coding -*/ - diff --git a/src/spatialite/makefile.vc b/src/spatialite/makefile.vc deleted file mode 100644 index 6d9857e..0000000 --- a/src/spatialite/makefile.vc +++ /dev/null @@ -1,97 +0,0 @@ -# $Id: $ -# -# NMAKE Makefile to build libspatialite on Windows -# -!INCLUDE nmake.opt - -LIBOBJ = src\gaiaaux\gg_sqlaux.obj src\gaiaaux\gg_utf8.obj \ - src\gaiaexif\gaia_exif.obj src\gaiageo\gg_advanced.obj \ - src\gaiageo\gg_endian.obj src\gaiageo\gg_ewkt.obj \ - src\gaiageo\gg_geodesic.obj src\gaiageo\gg_geoJSON.obj \ - src\gaiageo\gg_geometries.obj src\gaiageo\gg_geoscvt.obj \ - src\gaiageo\gg_gml.obj src\gaiageo\gg_kml.obj \ - src\gaiageo\gg_relations.obj src\gaiageo\gg_shape.obj \ - src\gaiageo\gg_transform.obj src\gaiageo\gg_vanuatu.obj \ - src\gaiageo\gg_wkb.obj src\gaiageo\gg_wkt.obj src\gaiageo\gg_extras.obj \ - src\spatialite\mbrcache.obj src\shapefiles\shapefiles.obj \ - src\spatialite\spatialite.obj src\spatialite\virtualdbf.obj \ - src\spatialite\virtualfdo.obj src\spatialite\virtualnetwork.obj \ - src\spatialite\virtualshape.obj src\spatialite\virtualspatialindex.obj \ - src\spatialite\statistics.obj src\spatialite\metatables.obj \ - src\spatialite\virtualXL.obj src\srsinit\srs_init.obj \ - src\srsinit\epsg_inlined_00.obj src\srsinit\epsg_inlined_01.obj \ - src\srsinit\epsg_inlined_02.obj src\srsinit\epsg_inlined_03.obj \ - src\srsinit\epsg_inlined_04.obj src\srsinit\epsg_inlined_05.obj \ - src\srsinit\epsg_inlined_06.obj src\srsinit\epsg_inlined_07.obj \ - src\srsinit\epsg_inlined_08.obj src\srsinit\epsg_inlined_09.obj \ - src\srsinit\epsg_inlined_10.obj src\srsinit\epsg_inlined_11.obj \ - src\srsinit\epsg_inlined_12.obj src\srsinit\epsg_inlined_13.obj \ - src\srsinit\epsg_inlined_14.obj src\srsinit\epsg_inlined_15.obj \ - src\srsinit\epsg_inlined_16.obj src\srsinit\epsg_inlined_17.obj \ - src\srsinit\epsg_inlined_18.obj src\srsinit\epsg_inlined_19.obj \ - src\srsinit\epsg_inlined_20.obj src\srsinit\epsg_inlined_21.obj \ - src\srsinit\epsg_inlined_22.obj src\srsinit\epsg_inlined_23.obj \ - src\srsinit\epsg_inlined_24.obj src\srsinit\epsg_inlined_25.obj \ - src\srsinit\epsg_inlined_26.obj src\srsinit\epsg_inlined_27.obj \ - src\srsinit\epsg_inlined_28.obj src\srsinit\epsg_inlined_29.obj \ - src\srsinit\epsg_inlined_30.obj src\srsinit\epsg_inlined_31.obj \ - src\srsinit\epsg_inlined_32.obj src\srsinit\epsg_inlined_33.obj \ - src\srsinit\epsg_inlined_34.obj src\srsinit\epsg_inlined_35.obj \ - src\srsinit\epsg_inlined_36.obj src\srsinit\epsg_inlined_37.obj \ - src\srsinit\epsg_inlined_38.obj src\srsinit\epsg_inlined_39.obj \ - src\srsinit\epsg_inlined_40.obj src\srsinit\epsg_inlined_extra.obj \ - src\srsinit\epsg_inlined_prussian.obj \ - src\srsinit\epsg_inlined_wgs84_00.obj src\srsinit\epsg_inlined_wgs84_01.obj \ - src\versioninfo\version.obj src\virtualtext\virtualtext.obj -SPATIALITE_DLL = spatialite$(VERSION).dll - -CFLAGS = /nologo -I.\src\headers -I. -IC:\OSGeo4W\include $(OPTFLAGS) - -default: all - -all: spatialite.lib spatialite_i.lib -#$(EXIF_LOADER_EXE) - -spatialite.lib: $(LIBOBJ) - if exist spatialite.lib del spatialite.lib - lib /out:spatialite.lib $(LIBOBJ) - -$(SPATIALITE_DLL): spatialite_i.lib - -spatialite_i.lib: $(LIBOBJ) - link /debug /dll /out:$(SPATIALITE_DLL) \ - /implib:spatialite_i.lib $(LIBOBJ) \ - C:\OSGeo4W\lib\proj_i.lib C:\OSGeo4W\lib\geos_c_i.lib \ - C:\OSGeo4w\lib\freexl_i.lib C:\OSGeo4w\lib\iconv.lib \ - C:\OSGeo4W\lib\sqlite3_i.lib - if exist $(SPATIALITE_DLL).manifest mt -manifest \ - $(SPATIALITE_DLL).manifest -outputresource:$(SPATIALITE_DLL);2 - -.c.obj: - $(CC) $(CFLAGS) /c $*.c /Fo$@ - -clean: - del *.dll - del *.exp - del *.manifest - del *.lib - del src\gaiaaux\*.obj - del src\gaiaexif\*.obj - del src\gaiageo\*.obj - del src\spatialite\*.obj - del src\srsinit\*.obj - del src\versioninfo\*.obj - del src\virtualtext\*.obj - del *.pdb - -install: all - -mkdir $(INSTDIR) - -mkdir $(INSTDIR)\bin - -mkdir $(INSTDIR)\lib - -mkdir $(INSTDIR)\include - -mkdir $(INSTDIR)\include\spatialite - copy *.dll $(INSTDIR)\bin - copy *.lib $(INSTDIR)\lib - copy src\headers\spatialite.h $(INSTDIR)\include - copy src\headers\spatialite\*.h $(INSTDIR)\include\spatialite - diff --git a/src/spatialite/missing b/src/spatialite/missing deleted file mode 100755 index 28055d2..0000000 --- a/src/spatialite/missing +++ /dev/null @@ -1,376 +0,0 @@ -#! /bin/sh -# Common stub for a few missing GNU programs while installing. - -scriptversion=2009-04-28.21; # UTC - -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 -fi - -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi - -msg="missing on your system" - -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; - - -h|--h|--he|--hel|--help) - echo "\ -$0 [OPTION]... PROGRAM [ARGUMENT]... - -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. - -Options: - -h, --help display this help and exit - -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails - -Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - autom4te touch the output file, or create a stub one - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch] - -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. - -Send bug reports to ." - exit $? - ;; - - -v|--v|--ve|--ver|--vers|--versi|--versio|--version) - echo "missing $scriptversion (GNU Automake)" - exit $? - ;; - - -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" - exit 1 - ;; - -esac - -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; - - tar*) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; - - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; - - autom4te*) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - tar*) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case $firstarg in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case $firstarg in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac - -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "scriptversion=" -# time-stamp-format: "%:y-%02m-%02d.%02H" -# time-stamp-time-zone: "UTC" -# time-stamp-end: "; # UTC" -# End: diff --git a/src/spatialite/nmake.opt b/src/spatialite/nmake.opt deleted file mode 100644 index 304bdc6..0000000 --- a/src/spatialite/nmake.opt +++ /dev/null @@ -1,12 +0,0 @@ -# Directory tree where SpatiaLite will be installed. -INSTDIR=C:\OSGeo4W - -# Uncomment the first for an optimized build, or the second for debug. -OPTFLAGS= /nologo /Ox /fp:precise /W3 /MD /D_CRT_SECURE_NO_WARNINGS \ - /DDLL_EXPORT -#OPTFLAGS= /nologo /Zi /MD /Fdspatialite.pdb /DDLL_EXPORT - -# Set the version number for the DLL. Normally we leave this blank since -# we want software that is dynamically loading the DLL to have no problem -# with version numbers. -VERSION= diff --git a/src/spatialite/spatialite-sql-latest.html b/src/spatialite/spatialite-sql-latest.html deleted file mode 100644 index 709134a..0000000 --- a/src/spatialite/spatialite-sql-latest.html +++ /dev/null @@ -1,2299 +0,0 @@ - - - - - - SpatiaLite SQL functions reference list - - -

SpatiaLite 4.0.0          SQL functions reference list

- back - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-

SQL Version Info [and build options testing] functions

FunctionSyntaxSummary
spatialite_versionspatialite_version( void ) : Stringreturns the current SpatiaLite version as a text string
proj4_versionproj4_version( void ) : Stringreturns the current PROJ.4 version as a text string
- or NULL if PROJ.4 is currently unsupported
geos_versiongeos_version( void ) : Stringreturns the current GEOS version as a text string
- or NULL if GEOS is currently unsupported
lwgeom_versionlwgeom_version( void ) : Stringreturns the current LWGEOM version as a text string
- or NULL if LWGEOM is currently unsupported
HasIconvHasIconv( void ) : BooleanTRUE if the underlaying library was built enabling ICONV
HasMathSQLHasMathSQL( void ) : BooleanTRUE if the underlaying library was built enabling MATHSQL
HasGeoCallbacksHasGeoCallbacks( void ) : BooleanTRUE if the underlaying library was built enabling GEOCALLBACKS
HasProjHasProj( void ) : BooleanTRUE if the underlaying library was built enabling PROJ
HasGeosHasGeos( void ) : BooleanTRUE if the underlaying library was built enabling GEOS
HasGeosAdvancedHasGeosAdvanced( void ) : BooleanTRUE if the underlaying library was built enabling GEOSADVANCED
HasGeosTrunkHasGeosTrunk( void ) : BooleanTRUE if the underlaying library was built enabling GEOSTRUNK
HasLwGeomHasLwGeom( void ) : BooleanTRUE if the underlaying library was built enabling LWGEOM
HasEpsgHasEpsg( void ) : BooleanTRUE if the underlaying library was built enabling EPSG
HasFreeXLHasFreeXL( void ) : BooleanTRUE if the underlaying library was built enabling FREEXL
-

SQL math functions

FunctionSyntaxSummary
AbsAbs( x Double precision ) : Double precisionreturns the absolute value of x
AcosAcos( x Double precision ) : Double precisionreturns the arc cosine of x, that is, the value whose cosine is x
- returns NULL if x is not in the range -1 to 1
AsinAsin( x Double precision ) : Double precisionreturns the arc sine of x, that is, the value whose sine is x
- returns NULL if x is not in the range -1 to 1
AtanAtan( x Double precision ) : Double precisionreturns the arc tangent of x, that is, the value whose tangent is x
Ceil
Ceiling
Ceil( x Double precision ) : Double precision
- Ceiling( x Double precision ) : Double precision
returns the smallest integer value not less than x
CosCos( x Double precision ) : Double precisionreturns the cosine of x, where x is given in radians
CotCot( x Double precision ) : Double precisionreturns the cotangent of x, where x is given in radians
DegreesDegrees( x Double precision ) : Double precisionreturns the argument x, converted from radians to degrees
ExpExp( x Double precision ) : Double precisionreturns the value of e (the base of natural logarithms) raised to the power of x
- the inverse of this function is Log() (using a single argument only) or Ln()
FloorFloor( x Double precision ) : Double precisionreturns the largest integer value not greater than x
Ln
Log
Ln( x Double precision ) : Double precision
- Log( x Double precision ) : Double precision
returns the natural logarithm of x; that is, the base-e logarithm of x
- If x is less than or equal to 0, then NULL is returned
LogLog( b Double precision , x Double precision ) : Double precisionreturns the logarithm of x to the base b
- If x is less than or equal to 0, or if b is less than or equal to 1, then NULL is returned
- Log(b, x) is equivalent to Log(x) / Log(b)
Log2Log2( x Double precision ) : Double precisionreturns the base-2 logarithm of x
- Log2(x) is equivalent to Log(x) / Log(2)
Log10Log10( x Double precision ) : Double precisionreturns the base-10 logarithm of x
- Log10(x) is equivalent to Log(x) / Log(10)
PIPI( void ) : Double precisionreturns the value of PI
Pow
Power
Pow( x Double precision , y Double precision ) : Double precision
- Power( x Double precision , y Double precision ) : Double precision
returns the value of x raised to the power of y
RadiansRadians( x Double precision ) : Double precisionreturns the argument x, converted from degrees to radians
RoundRound( x Double precision ) : Double precisionreturns the integer value nearest to x
SignSign( x Double precision ) : Double precisionreturns the sign of the argument as -1, 0, or 1, - depending on whether x is negative, zero, or positive.
SinSin( x Double precision ) : Double precisionreturns the sine of x, where x is given in radians
SqrtSqrt( x Double precision ) : Double precisionreturns the square root of a non-negative number x
Stddev_popStddev_pop( x Double precision ) : Double precisionreturns the population standard deviation of the input values
aggregate function
Stddev_sampStddev_samp( x Double precision ) : Double precisionreturns the sample standard deviation of the input values
aggregate function
TanTan( x Double precision ) : Double precisionreturns the tangent of x, where x is given in radians
Var_popVar_pop( x Double precision ) : Double precisionreturns the population variance of the input values (square of the population standard deviation)
- aggregate function
Var_sampVar_samp( x Double precision ) : Double precisionreturns the sample variance of the input values (square of the sample standard deviation)
- aggregate function
-

SQL length/distance unit-conversion functions

FunctionSyntaxSummary
KilometerCvtToKm( x Double precision ) : Double precision
- CvtFromKm( x Double precision ) : Double precision
meters / kilometers
DecimeterCvtToDm( x Double precision ) : Double precision
- CvtFromDm( x Double precision ) : Double precision
meters / decimeters
CentimeterCvtToCm( x Double precision ) : Double precision
- CvtFromCm( x Double precision ) : Double precision
meters / centimeters
MillimeterCvtToMm( x Double precision ) : Double precision
- CvtFromMm( x Double precision ) : Double precision
meters / millimeters
International Nautical MileCvtToKmi( x Double precision ) : Double precision
- CvtFromKmi( x Double precision ) : Double precision
meters / international nautical miles
International InchCvtToIn( x Double precision ) : Double precision
- CvtFromIn( x Double precision ) : Double precision
meters / international inches
International FootCvtToFt( x Double precision ) : Double precision
- CvtFromFt( x Double precision ) : Double precision
meters / international feet
International YardCvtToYd( x Double precision ) : Double precision
- CvtFromYd( x Double precision ) : Double precision
meters / international yards
International Statute MileCvtToMi( x Double precision ) : Double precision
- CvtFromMi( x Double precision ) : Double precision
meters / international statute miles
International FathomCvtToFath( x Double precision ) : Double precision
- CvtFromFath( x Double precision ) : Double precision
meters / international fathoms
International ChainCvtToCh( x Double precision ) : Double precision
- CvtFromCh( x Double precision ) : Double precision
meters / international chains
International LinkCvtToLink( x Double precision ) : Double precision
- CvtFromLink( x Double precision ) : Double precision
meters / international links
U.S. InchCvtToUsIn( x Double precision ) : Double precision
- CvtFromUsIn( x Double precision ) : Double precision
meters / U.S. inches
U.S. FootCvtToUsFt( x Double precision ) : Double precision
- CvtFromUsFt( x Double precision ) : Double precision
meters / U.S. feet
U.S. YardCvtToUsYd( x Double precision ) : Double precision
- CvtFromUsYd( x Double precision ) : Double precision
meters / U.S. yards
U.S. Statute MileCvtToUsMi( x Double precision ) : Double precision
- CvtFromUsMi( x Double precision ) : Double precision
meters / U.S. statute miles
U.S. ChainCvtToUsCh( x Double precision ) : Double precision
- CvtFromUsCh( x Double precision ) : Double precision
meters / U.S. chains
Indian FootCvtToIndFt( x Double precision ) : Double precision
- CvtFromIndFt( x Double precision ) : Double precision
meters / indian feet
Indian YardCvtToIndYd( x Double precision ) : Double precision
- CvtFromIndYd( x Double precision ) : Double precision
meters / indian yards
Indian ChainCvtToIndCh( x Double precision ) : Double precision
- CvtFromIndCh( x Double precision ) : Double precision
meters / indian chains
-

SQL utility functions for BLOB objects

FunctionSyntaxSummary
IsZipBlobIsZipBlob( content BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN - corresponding to a function invocation on NULL or not-BLOB argument.
- TRUE if this BLOB object corresponds to a valid ZIP-compressed file
IsPdfBlobIsPdfBlob( content BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN - corresponding to a function invocation on NULL or not-BLOB argument.
- TRUE if this BLOB object corresponds to a valid PDF document
IsGifBlobIsGifBlob( image BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN - corresponding to a function invocation on NULL or not-BLOB argument.
- TRUE if this BLOB object corresponds to a valid GIF image
IsPngBlobIsPngBlob( image BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN - corresponding to a function invocation on NULL or not-BLOB argument.
- TRUE if this BLOB object corresponds to a valid PNG image
IsTiffBlobIsTiffBlob( image BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN - corresponding to a function invocation on NULL or not-BLOB argument.
- TRUE if this BLOB object corresponds to a valid TIFF image
IsJpegBlobIsJpegBlob( image BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN - corresponding to a function invocation on NULL or not-BLOB argument.
- TRUE if this BLOB object corresponds to a valid JPEG image
IsExifBlobIsExifBlob( image BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN - corresponding to a function invocation on NULL or not-BLOB argument.
- TRUE if this BLOB object corresponds to a valid EXIF image
- Please note: any valid EXIF image is a valid JPEG as well
IsExifGpsBlobIsExifGpsBlob( image BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN - corresponding to a function invocation on NULL or not-BLOB argument.
- TRUE if this BLOB object corresponds to a valid EXIF-GPS image
- Please note: any valid EXIF-GPS image is a valid EXIF and JPEG as well
IsWebpBlobIsWebpBlob( image BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN - corresponding to a function invocation on NULL or not-BLOB argument.
- TRUE if this BLOB object corresponds to a valid WebP image
BlobFromFileBlobFromFile( filepath String ) : BLOBIf filepath corresponds to some valid pathname, and the corresponding file - can be actually accessed in read mode, then the whole file content will be returned as a - BLOB value.
- Otherwise NULL will be returned.
- Please note: SQLite doesn't support BLOB values bigger than SQLITE_MAX_LENGTH (usually, 1 GB)
BlobToFileBlobToFile( payload BLOB , filepath String ) : IntegerIf payload is of the BLOB-type, and if filepath corresponds to some valid pathname - (accessible in write/create mode), then the corresponding file will be created/overwritten so to - contain the payload.
- The return type is Integer, with a return value of 1 for success, 0 for failure
-

SQL utility functions [non-standard] for geometric objects

FunctionSyntaxOGC
defined
required
module
Summary
GeomFromExifGpsBlobGeomFromExifGpsBlob( image BLOB ) : Geometrybasea POINT Geometry will be returned representing the GPS long/lat contained within EXIF-GPS metadata - for the BLOB image
- NULL will be returned if for any reason it's not possible to build such a POINT
MakePointMakePoint( x Double precision , y Double precision , - [ , SRID Integer] ) : Geometrybasea Geometry will be returned representing the POINT defined by [x y] coordinates
MakePointZMakePointZ( x Double precision , y Double precision , z Double precision , - [ , SRID Integer] ) : Geometrybasea Geometry will be returned representing the POINT Z defined by [x y z] coordinates
MakePointMMakePointM( x Double precision , y Double precision , m Double precision , - [ , SRID Integer] ) : Geometrybasea Geometry will be returned representing the POINT M defined by [x y m] coordinates
MakePointZMMakePointZM( x Double precision , y Double precision , z Double precision , - m Double precision [ , SRID Integer] ) : Geometrybasea Geometry will be returned representing the POINT ZM defined by [x y z m] coordinates
MakeLineMakeLine( pt1 PointGeometry , pt2 PointGeometry ) : LinestringGeometrybasea Linestring Geometry will be returned representing the segment connecting pt1 to pt2
- NULL will be returned if any error is encountered
MakeLineMakeLine( geom PointGeometry ) : LinestringGeometrybasea Linestring Geometry will be returned connecting all the input Points (accordingly to input sequence)
- aggregate function
- NULL will be returned if any error is encountered
SquareGridSquareGrid( geom ArealGeometry , size Double precision [ , edges_only Boolean , [ origing PointGeometry ] ] ) : Geometry
- ST_SquareGrid( geom ArealGeometry , size Double precision [ , edges_only Boolean , [ origing PointGeometry ] ] ) : Geometry
GEOS-advancedreturn a grid of square cells (having the edge length of size) precisely covering the input Geometry.
- The returned Geometry will usually be of the MultiPolygon type (a collection of Squares), but will be a MultiLinestring if the optional edges_only argument is set to TRUE
- If the optional origin argument (expected to be a Point) is not specified then the (0,0) grid origin will be assumed by default.
- NULL will be returned if any error is encountered.
TriangularGridTriangularGrid( geom ArealGeometry , size Double precision [ , edges_only Boolean , [ origing PointGeometry ] ] ) : Geometry
- ST_TriangularGrid( geom ArealGeometry , size Double precision [ , edges_only Boolean , [ origing PointGeometry ] ] ) : Geometry
GEOS-advancedreturn a grid of triangular cells (having the edge length of size) precisely covering the input Geometry.
- The returned Geometry will usually be of the MultiPolygon type (a collection of Squares), but will be a MultiLinestring if the optional edges_only argument is set to TRUE
- If the optional origin argument (expected to be a Point) is not specified then the (0,0) grid origin will be assumed by default.
- NULL will be returned if any error is encountered.
HexagonalGridHexagonalGrid( geom ArealGeometry , size Double precision [ , edges_only Boolean , [ origing PointGeometry ] ] ) : Geometry
- ST_HexagonalGrid( geom ArealGeometry , size Double precision [ , edges_only Boolean , [ origing PointGeometry ] ] ) : Geometry
GEOS-advancedreturn a grid of hexagonal cells (having the edge length of size) precisely covering the input Geometry.
- The returned Geometry will usually be of the MultiPolygon type (a collection of Squares), but will be a MultiLinestring if the optional edges_only argument is set to TRUE
- If the optional origin argument (expected to be a Point) is not specified then the (0,0) grid origin will be assumed by default.
- NULL will be returned if any error is encountered.
BuildMbrBuildMbr( x1 Double precision , y1 Double precision , - x2 Double precision , y2 Double precision [ , SRID Integer] ) : Geometrybase[x1 y1] and [x2 y2] are assumed to be Points identifying a line segment; -then a Geometry will be returned representing the MBR for this line segment
BuildCircleMbrBuildCircleMbr( x Double precision , y Double precision , - radius Double precision [ , SRID Integer] ) : Geometrybase[x y] is assumed to be the center of a circle of given radius; -then a Geometry will be returned representing the MBR for this circle
ExtentExtent( geom Geometry ) : Geometrybasereturn a geometric object representing the bounding box that encloses a set of input values
- aggregate function
ToGARSToGARS( geom Geometry ) : Stringbasegeom is expected to represent a POINT (longitude and latitude coordinates); - the corresponding GARS area designation code will be returned.
- NULL will be returned if any error is encountered.
GARSMbrGARSMbr( code String ) : Geometrybasecode is assumed to represent a valid GARS area designation code; -a Geometry will be returned representing the MBR for the corresponding GARS area.
- NULL will be returned if any error is encountered.
MbrMinXMbrMinX( geom Geometry) : Double precision
- ST_MbrMinX( geom Geometry) : Double precision
- ST_MinX( geom Geometry) : Double precision
basereturn the x-coordinate for geom MBR's leftmost side as a double precision number.
- NULL will be returned if geom isn't a valid Geometry.
MbrMinYMbrMinY( geom Geometry) : Double precision
- ST_MbrMinY( geom Geometry) : Double precision
- ST_MinY( geom Geometry) : Double precision
basereturn the y-coordinate for geom MBR's lowermost side as a double precision number.
- NULL will be returned if geom isn't a valid Geometry.
MbrMaxXMbrMaxX( geom Geometry) : Double precision
- ST_MbrMaxX( geom Geometry) : Double precision
- ST_MaxX( geom Geometry) : Double precision
basereturn the x-coordinate for geom MBR's rightmost side as a double precision number.
- NULL will be returned if geom isn't a valid Geometry.
MbrMaxYMbrMaxY( geom Geometry) : Double precision
- ST_MbrMaxY( geom Geometry) : Double precision
- ST_MaxY( geom Geometry) : Double precision
basereturn the y-coordinate for geom MBR's uppermost side as a double precision number.
- NULL will be returned if geom isn't a valid Geometry.
ST_MinZMinZ( geom Geometry) : Double precisionbasereturn the minimum Z-coordinate value for geom as a double precision number.
- NULL will be returned if geom isn't a valid Geometry or if geom has no Z dimension.
MaxZST_MaxZ( geom Geometry) : Double precisionbasereturn the maximum Z-coordinate value for geom as a double precision number.
- NULL will be returned if geom isn't a valid Geometry or if geom has no Z dimension.
MinMST_MinM( geom Geometry) : Double precisionbasereturn the minimum M-coordinate value for geom as a double precision number.
- NULL will be returned if geom isn't a valid Geometry or if geom has no M dimension.
MaxMST_MaxM( geom Geometry) : Double precisionbasereturn the maximum M-coordinate value for geom as a double precision number.
- NULL will be returned if geom isn't a valid Geometry or if geom has no M dimension.
-

SQL functions for constructing a geometric object given its Well-known Text Representation

FunctionSyntaxOGC
defined
required
module
Summary
GeomFromTextGeomFromText( wkt String [ , SRID Integer] ) : Geometry
- ST_GeomFromText( wkt String [ , SRID Integer] ) : Geometry
Xbaseconstruct a geometric object given its Well-known text Representation
ST_WKTToSQLST_WKTToSQL( wkt String ) : GeometrybaseSQL/MM compliant: simply an alias name for ST_GeomFromText
- Please note: SRID=0 is always assumed.
PointFromTextPointFromText( wktPoint String [ , SRID Integer] ) : Point
- ST_PointFromText( wktPoint String [ , SRID Integer] ) : Point
Xbaseconstruct a Point
LineFromText
LineStringFromText
LineFromText( wktLineString String [ , SRID Integer] ) : Linestring
- ST_LineFromText( wktLineString String [ , SRID Integer] ) : Linestring
- LineStringFromText( wktLineString String [ , SRID Integer] ) : Linestring
- ST_LineStringFromText( wktLineString String [ , SRID Integer] ) : Linestring
Xbaseconstruct a Linestring
PolyFromText
PolygonFromText
PolyFromText( wktPolygon String [ , SRID Integer] ) : Polygon
- ST_PolyFromText( wktPolygon String [ , SRID Integer] ) : Polygon
- PolygonFromText( wktPolygon String [ , SRID Integer] ) : Polygon
- ST_PolygonFromText( wktPolygon String [ , SRID Integer] ) : Polygon
Xbaseconstruct a Polygon
MPointFromText
MultiPointFromText
MPointFromText( wktMultiPoint String [ , SRID Integer] ) : MultiPoint
- ST_MPointFromText( wktMultiPoint String [ , SRID Integer] ) : MultiPoint
- MultiPointFromText( wktMultiPoint String [ , SRID Integer] ) : MultiPoint
- ST_MultiPointFromText( wktMultiPoint String [ , SRID Integer] ) : MultiPoint
Xbaseconstruct a MultiPoint
MLineFromText
MultiLineStringFromText
MLineFromText( wktMultiLineString String [ , SRID Integer] ) : MultiLinestring
- ST_MLineFromText( wktMultiLineString String [ , SRID Integer] ) : MultiLinestring
- MultiLineStringFromText( wktMultiLineString String [ , SRID Integer] ) : MultiLinestring
- ST_MultiLineStringFromText( wktMultiLineString String [ , SRID Integer] ) : MultiLinestring
Xbaseconstruct a MultiLinestring
MPolyFromText
MultiPolygonFromText
MPolyFromText( wktMultiPolygon String [ , SRID Integer] ) : MultiPolygon
- ST_MPolyFromText( wktMultiPolygon String [ , SRID Integer] ) : MultiPolygon
- MultiPolygonFromText( wktMultiPolygon String [ , SRID Integer] ) : MultiPolygon
- ST_MultiPolygonFromText( wktMultiPolygon String [ , SRID Integer] ) : MultiPolygon
Xbaseconstruct a MultiPolygon
GeomCollFromText
GeometryCollectionFromText
GeomCollFromText( wktGeometryCollection String [ , SRID Integer] ) : GeometryCollection
- ST_GeomCollFromText( wktGeometryCollection String [ , SRID Integer] ) : GeometryCollection
- GeometryCollectionFromText( wktGeometryCollection String [ , SRID Integer] ) : GeometryCollection
- ST_GeometryCollectionFromText( wktGeometryCollection String [ , SRID Integer] ) : GeometryCollection
Xbaseconstruct a GeometryCollection
BdPolyFromTextBdPolyFromText( wktMultilinestring String [ , SRID Integer] ) : Polygon
- ST_BdPolyFromText( wktMultilinestring String [ , SRID Integer] ) : Polygon
XGEOSConstruct a Polygon given an arbitrary collection of closed linestrings as a MultiLineString text representation. -
see also: BuildArea(), Polygonize()
BdMPolyFromTextBdMPolyFromText( wktMultilinestring String [ , SRID Integer] ) : MultiPolygon
- ST_BdMPolyFromText( wktMultilinestring String [ , SRID Integer] ) : MultiPolygon
XGEOSConstruct a MultiPolygon given an arbitrary collection of closed linestrings as a MultiLineString text representation. -
see also: BuildArea(), Polygonize()
-

SQL functions for constructing a geometric object given its Well-known Binary Representation

FunctionSyntaxOGC
defined
required
module
Summary
GeomFromWKBGeomFromWKB( wkbGeometry Binary [ , SRID Integer] ) : Geometry
- ST_GeomFromWKB( wkbGeometry Binary [ , SRID Integer] ) : Geometry
Xbaseconstruct a geometric object given its Well-known binary Representation
ST_WKBToSQLST_WKBToSQL( wkbGeometry Binary ) : GeometrybaseSQL/MM compliant: simply an alias name for ST_GeomFromWKB
- Please note: SRID=0 is always assumed.
PointFromWKBPointFromWKB( wkbPoint Binary [ , SRID Integer] ) : Point
- ST_PointFromWKB( wkbPoint Binary [ , SRID Integer] ) : Point
Xbaseconstruct a Point
LineFromWKB
LineStringFromWKB
LineFromWKB( wkbLineString Binary [ , SRID Integer] ) : Linestring
- ST_LineFromWKB( wkbLineString Binary [ , SRID Integer] ) : Linestring
- LineStringFromText( wkbLineString Binary [ , SRID Integer] ) : Linestring
- ST_LineStringFromText( wkbLineString Binary [ , SRID Integer] ) : Linestring
Xbaseconstruct a Linestring
PolyFromWKB
PolygonFromWKB
PolyFromWKB( wkbPolygon Binary [ , SRID Integer] ) : Polygon
- ST_PolyFromWKB( wkbPolygon Binary [ , SRID Integer] ) : Polygon
- PolygonFromWKB( wkbPolygon Binary [ , SRID Integer] ) : Polygon
- ST_PolygonFromWKB( wkbPolygon Binary [ , SRID Integer] ) : Polygon
Xbaseconstruct a Polygon
MPointFromWKB
MultiPointFromWKB
MPointFromWKB( wkbMultiPoint Binary [ , SRID Integer] ) : MultiPoint
- ST_MPointFromWKB( wkbMultiPoint Binary [ , SRID Integer] ) : MultiPoint
- MultiPointFromWKB( wkbMultiPoint Binary [ , SRID Integer] ) : MultiPoint - ST_MultiPointFromWKB( wkbMultiPoint Binary [ , SRID Integer] ) : MultiPoint
Xbaseconstruct a MultiPoint
MLineFromWKB
MultiLineStringFromWKB
MLineFromWKB( wkbMultiLineString Binary [ , SRID Integer] ) : MultiLinestring
- ST_MLineFromWKB( wkbMultiLineString Binary [ , SRID Integer] ) : MultiLinestring
- MultiLineStringFromWKB( wkbMultiLineString Binary [ , SRID Integer] ) : MultiLinestring
- ST_MultiLineStringFromWKB( wkbMultiLineString Binary [ , SRID Integer] ) : MultiLinestring
Xbaseconstruct a MultiLinestring
MPolyFromWKB
MultiPolygonFromWKB
MPolyFromWKB( wkbMultiPolygon Binary [ , SRID Integer] ) : MultiPolygon
- ST_MPolyFromWKB( wkbMultiPolygon Binary [ , SRID Integer] ) : MultiPolygon
- MultiPolygonFromWKB( wkbMultiPolygon Binary [ , SRID Integer] ) : MultiPolygon
- ST_MultiPolygonFromWKB( wkbMultiPolygon Binary [ , SRID Integer] ) : MultiPolygon
Xbaseconstruct a MultiPolygon
GeomCollFromWKB
GeometryCollectionFromWKB
GeomCollFromWKB( wkbGeometryCollection Binary [ , SRID Integer] ) : GeometryCollection
- ST_GeomCollFromWKB( wkbGeometryCollection Binary [ , SRID Integer] ) : GeometryCollection
- GeometryCollectionFromWKB( wkbGeometryCollection Binary [ , SRID Integer] ) : GeometryCollection
- ST_GeometryCollectionFromWKB( wkbGeometryCollection Binary [ , SRID Integer] ) : GeometryCollection
Xbaseconstruct a GeometryCollection
BdPolyFromWKBBdPolyFromWKB( wkbMultilinestring Binary [ , SRID Integer] ) : Polygon
- ST_BdPolyFromWKB( wkbMultilinestring Binary [ , SRID Integer] ) : Polygon
XGEOSConstruct a Polygon given an arbitrary collection of closed linestrings as a MultiLineString binary representation. -
see also: BuildArea(), Polygonize()
BdMPolyFromWKBBdMPolyFromWKB( wkbMultilinestring Binary [ , SRID Integer] ) : MultiPolygon
- ST_BdMPolyFromWKB( wkbMultilinestring Binary [ , SRID Integer] ) : MultiPolygon
XGEOSConstruct a MultiPolygon given an arbitrary collection of closed linestrings as a MultiLineString binary representation. -
see also: BuildArea(), Polygonize()
-

SQL functions for obtaining the Well-known Text / Well-known Binary Representation of a geometric object

FunctionSyntaxOGC
defined
required
module
Summary
AsTextAsText( geom Geometry ) : String
- ST_AsText( geom Geometry ) : String
Xbasereturns the Well-known Text representation
AsWKTAsWKT( geom Geometry [ , precision Integer ] ) : Stringbasereturns the Well-known Text representation
always return strictly conformant 2D WKT
AsBinaryAsBinary( geom Geometry ) : Binary
- ST_AsBinary( geom Geometry ) : Binary
Xbasereturns the Well-known Binary representation
-

SQL functions supporting exotic geometric formats

FunctionSyntaxOGC
defined
required
module
Summary
AsSVGAsSVG( geom Geometry [ , relative Integer [ , precision Integer ] ] ) : Stringbasereturns the SVG [Scalable Vector Graphics] representation
AsKmlAsKml( geom Geometry [ , precision Integer ] ) : String
- AsKml( name String, description String, geom Geometry [ , precision Integer ] ) : String
PROJ.4returns the KML [Keyhole Markup Language] representation
- The first form will simply generate the geometry element: the second form will generate a complete KML entity
GeomFromKmlGeomFromKml( KmlGeometry String ) : Geometrybaseconstruct a geometric object given its KML Representation
AsGmlAsGml( geom Geometry [ , precision Integer ] ) : String
- AsGml( version Integer, geom Geometry [ , precision Integer ] ) : String
basereturns the GML [Geography Markup Language] representation
- If version = 3 than GML 3.x is generated, otherwise the output format will be GML 2.x
GeomFromGMLGeomFromGML( gmlGeometry String ) : Geometrybaseconstruct a geometric object given its GML Representation
AsGeoJSONAsGeoJSON( geom Geometry [ , precision Integer [ , options Integer ] ] ) : Stringbasereturns the GeoJSON [Geographic JavaScript Object Notation] representation
- options can assume the following values: -
    -
  • 0 no options [default]
  • -
  • 1 GeoJSON BoundingBox
  • -
  • 2 GeoJSON CRS [short version]
  • -
  • 3 BoundingBox + short CRS
  • -
  • 4 GeoJSON CRS [long version]
  • -
  • 5 BoundingBox + long CRS
  • -
GeomFromGeoJSONGeomFromGeoJSON( geoJSONGeometry String ) : Geometrybaseconstruct a geometric object given its GeoJSON Representation
AsEWKBAsEWKB( geom Geometry ) : Stringbasereturns the EWKB [Extended Well Known Binary] representation (PostGIS compatibility)
GeomFromEWKBGeomFromEWKB( ewkbGeometry String ) : Geometrybaseconstruct a geometric object given its EWKB Representation
AsEWKTAsEWKT( geom Geometry ) : Stringbasereturns the EWKT [Extended Well Known Text] representation (PostGIS compatibility)
GeomFromEWKTGeomFromEWKT( ewktGeometry String ) : Geometrybaseconstruct a geometric object given its EWKT Representation
AsFGFAsFGF( geom Geometry ) : Binarybasereturns the FGF [FDO Geometry Binary Format] representation
GeomFromFGFGeomFromFGF( fgfGeometry Binary [ , SRID Integer] ) : Geometrybaseconstruct a geometric object given its FGF binary Representation
-

SQL functions on type Geometry

FunctionSyntaxOGC
defined
required
module
Summary
DimensionDimension( geom Geometry ) : Integer
- ST_Dimension( geom Geometry ) : Integer
Xbasereturns the dimension of the geometric object, which is less than or equal to the dimension - of the coordinate space
CoordDimensionCoordDimension( geom Geometry ) : Stringbasereturns the dimension model used by the geometric object as:
- 'XY', 'XYZ', 'XYM' or 'XYZM'
NDimsST_NDims( geom Geometry ) : Integerbasereturns the number of dimensions used by the geometric object as:
- 2, 3 or 4
Is3DST_Is3D( geom Geometry ) : IntegerbaseChecks if geom has the Z dimension.
- The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and -1 for UNKNOWN corresponding to a function invocation on invalid arguments.
IsMeasuredST_IsMeasured( geom Geometry ) : IntegerbaseCheck if geom has the M dimension.
- The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and -1 for UNKNOWN corresponding to a function invocation on invalid arguments.
GeometryTypeGeometryType( geom Geometry ) : String
- ST_GeometryType( geom Geometry ) : String
Xbasereturns the name of the instantiable subtype of Geometry of which this geometric object is a member, as a string
SRIDSRID( geom Geometry ) : Integer
- ST_SRID( geom Geometry ) : Integer
Xbasereturns the Spatial Reference System ID for this geometric object
SetSRIDSetSRID( geom Geometry , SRID Integer ) : Integerbasedirectly sets the Spatial Reference System ID for this geometric object [no reprojection is applied]
- The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN - corresponding to a function invocation on NULL arguments.
IsEmptyIsEmpty( geom Geometry ) : Integer
- ST_IsEmpty( geom Geometry ) : Integer
XbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN - corresponding to a function invocation on NULL arguments.
- TRUE if this geometric object corresponds to the empty set
IsSimpleIsSimple( geom Geometry ) : Integer
- ST_IsSimple( geom Geometry ) : Integer
XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN - corresponding to a function invocation on NULL arguments.
- TRUE if this geometric object is simple, as defined in the Geometry Model
IsValidIsValid( geom Geometry ) : Integer
- ST_IsValid( geom Geometry ) : Integer
GEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN - corresponding to a function invocation on NULL arguments.
- TRUE if this geometric object does not contains any topological error
BoundaryBoundary( geom Geometry ) : Geometry
- ST_Boundary( geom Geometry ) : Geometry
XGEOSreturns a geometric object that is the combinatorial boundary of g as defined in the Geometry Model
EnvelopeEnvelope( geom Geometry ) : Geometry
- ST_Envelope( geom Geometry ) : Geometry
Xbasereturns the rectangle bounding g as a Polygon. The Polygon is defined by the corner points of the bounding - box [(MINX, MINY),(MAXX, MINY), (MAXX, MAXY), (MINX, MAXY), (MINX, MINY)].
ExpandST_Expand( geom Geometry , amount Double precision ) : Geometrybasereturns the rectangle bounding g as a Polygon. The bounding rectangle is expanded in all directions by an amount - specified by the second argument.
NPointsST_NPoints( geom Geometry ) : Integerbasereturn the total number of Points (this including any Linestring/Polygon vertex).
NRingsST_NRings( geom Geometry ) : Integerbasereturn the total number of Rings (this including both Exterior and Interior Rings).
ReverseST_Reverse( geom Geometry ) : Geometrybasereturns a new Geometry [if a valid Geometry was supplied], or NULL in any other case.
- Any Linestring or Ring will be in reverse order (first vertex will be the last one, - and last vertex will be the first one).
ForceLHRST_ForceLHR( geom Geometry ) : Geometrybasereturns a new Geometry [if a valid Geometry was supplied], or NULL in any other case.
- Any Polygon Ring will be oriented accordingly to Left Hand Rule (Exterior - Ring will be clockwise oriented, and Interior Rings will be counter-clockwise oriented).
-

SQL functions attempting to repair malformed Geometries

FunctionSyntaxOGC
defined
required
module
Summary
SanitizeGeometrySanitizeGeometry( geom Geometry ) : geom Geometrybasereturns a (possibly) sanitized Geometry [if a valid Geometry was supplied], or NULL in any other case
- Please note: current implementations only affects:
    -
  • repeated vertices suppression
  • -
  • Ring's closure enforcement
  • -
-

SQL Geometry-compression functions

FunctionSyntaxOGC
defined
required
module
Summary
CompressGeometryCompressGeometry( geom Geometry ) : geom Geometrybasereturns a compressed Geometry [if a valid Geometry was supplied], or NULL in any other case
- Please note: geometry compression only affects LINESTRINGs and POLYGONs, not POINTs
UncompressGeometryUncompressGeometry( geom Geometry ) : geom Geometrybasereturns an uncompressed Geometry [if a valid Geometry was supplied], or NULL in any other case
-

SQL Geometry-type casting functions

FunctionSyntaxOGC
defined
required
module
Summary
CastToPointCastToPoint( geom Geometry ) : geom Geometrybasereturns a POINT-type Geometry [if type-conversion is possible], or NULL in any other case
- can be applied to any Geometry containing only a single POINT and no other elementary sub-geometry
CastToLinestringCastToLinestring( geom Geometry ) : geom Geometrybasereturns a LINESTRING-type Geometry [if type-conversion is possible], or NULL in any other case
- can be applied to any Geometry containing only a single LINESTRING and no other elementary sub-geometry
CastToPolygonCastToPolygon( geom Geometry ) : geom Geometrybasereturns a POLYGON-type Geometry [if type-conversion is possible], or NULL in any other case
- can be applied to any Geometry containing only a single POLYGON and no other elementary sub-geometry
CastToMultiPointCastToMultiPoint( geom Geometry ) : geom Geometrybasereturns a MULTIPOINT-type Geometry [if type-conversion is possible], or NULL in any other case
- can be applied to any Geometry containing one or more POINT(s) and no other elementary sub-geometry
CastToMultiLinestringCastToMultiLinestring( geom Geometry ) : geom Geometrybasereturns a MULTILINESTRING-type Geometry [if type-conversion is possible], or NULL in any other case
- can be applied to any Geometry containing one or more LINESTRING(s) and no other elementary sub-geometry
CastToMultiPolygonCastToMultiPolygon( geom Geometry ) : geom Geometrybasereturns a MULTIPOLYGON-type Geometry [if type-conversion is possible], or NULL in any other case
- can be applied to any Geometry containing one or more POLYGON(s) and no other elementary sub-geometry
CastToGeometyCollectionCastToGeometryCollection( geom Geometry ) : geom Geometrybasereturns a GEOMETRYCOLLECTION-type Geometry [if type-conversion is possible], or NULL in any other case
- can be applied to any valid Geometry
CastToMultiCastToMulti( geom Geometry ) : geom Geometry
- ST_Multi( geom Geometry ) : geom Geometry
basereturns a MULTIPOINT-, MULTILINESTRING- or MULTIPOLYGON-type Geometry [if type-conversion is possible], or NULL in any other case
-
    -
  • a MULTIPOINT will be returned for a Geometry containing one or more POINT(s) and no other elementary sub-geometry
  • -
  • a MULTILINESTRING will be returned for a Geometry containing one or more LINESTRING(s) and no other elementary sub-geometry
  • -
  • a MULTIPOLYGON will be returned for a Geometry containing one or more POLYGON(s) and no other elementary sub-geometry
  • -
  • a GEOMETRYCOLLECTION will be returned for any other valid Geometry
  • -
CastToSingleCastToSingle( geom Geometry ) : geom Geometrybasereturns a POINT-, LINESTRING- or POLYGON-type Geometry [if type-conversion is possible], or NULL in any other case
-
    -
  • a POINT will be returned for a Geometry containing only a single POINT and no other elementary sub-geometry
  • -
  • a LINESTRING will be returned for a Geometry containing only a single LINESTRING and no other elementary sub-geometry
  • -
  • a POLYGON will be returned for a Geometry containing only a single POLYGON and no other elementary sub-geometry
  • -
-

SQL Space-dimensions casting functions

FunctionSyntaxOGC
defined
required
module
Summary
CastToXYCastToXY( geom Geometry ) : geom Geometrybasereturns a Geometry using the [XY] space dimension
CastToXYZCastToXYZ( geom Geometry ) : geom Geometrybasereturns a Geometry using the [XYZ] space dimension
CastToXYMCastToXYM( geom Geometry ) : geom Geometrybasereturns a Geometry using the [XYZM] space dimension
CastToXYZMCastToXYZM( geom Geometry ) : geom Geometrybasereturns a Geometry using the [XYZM] space dimension
-

SQL functions on type Point

FunctionSyntaxOGC
defined
required
module
Summary
XX( pt Point ) : Double precision
- ST_X( pt Point ) : Double precision
Xbasereturn the x-coordinate of Point p as a double precision number
YY( pt Point ) : Double precision
- ST_Y( pt Point ) : Double precision
Xbasereturn the y-coordinate of Point p as a double precision number
ZZ( pt Point ) : Double precision
- ST_Z( pt Point ) : Double precision
Xbasereturn the z-coordinate of Point p as a double precision number
- or NULL is no z-coordinate is available
MM( pt Point ) : Double precision
- ST_M( pt Point ) : Double precision
Xbasereturn the m-coordinate of Point p as a double precision number
- or NULL is no m-coordinate is available
-

SQL functions on type Curve [Linestring or Ring]

FunctionSyntaxOGC
defined
required
module
Summary
StartPointStartPoint( c Curve ) : Point
- ST_StartPoint( c Curve ) : Point
Xbasereturn a Point containing the first Point of c
EndPointEndPoint( c Curve ) : Point
- ST_EndPoint( c Curve ) : Point
Xbasereturn a Point containing the last Point of c
LengthGLength( c Curve ) : Double precision -
- OpenGis name for this function is Length(), but it conflicts with an SQLite reserved keyword -

- ST_Length( c Curve ) : Double precision -
XGEOSreturn the length of c
-Starting since v.4.0.0 this function will simply consider Linestrings and MultiLinestrings, ignoring any Polygon or MultiPolygon
GLength( c Curve , use_ellipsoid Boolean ) : Double precision
- ST_Length( c Curve , use_ellipsoid Boolean ) : Double precision -
XGEOS-advancedreturn the length of c (measured in meters).
-If the use_ellipsoid argument is set to TRUE the precise (but slower) length will be computed on the Ellipsoid, otherwise will be computed on the Great Cicle (approximative, but faster).
-This function only supports Long/Lat coordinates, and will return NULL for any planar CRS
-Starting since v.4.0.0 this function will simply consider Linestrings and MultiLinestrings, ignoring any Polygon or MultiPolygon
PerimeterPerimeter( s Surface ) : Double precision - ST_Perimeter( s Surface ) : Double precision - XGEOSreturn the perimeter of s
-Starting since v.4.0.0 this function will simply consider Polygons and MultiPolygons, ignoring any Linestring or MultiLinestring
Perimeter( s Surface , use_ellipsoid Boolean ) : Double precision
- ST_Perimeter( s Surface , use_ellipsoid Boolean ) : Double precision -
XGEOS-advancedreturn the perimeter of s (measured in meters).
-If the use_ellipsoid argument is set to TRUE the precise (but slower) perimeter will be computed on the Ellipsoid, otherwise will be computed on the Great Cicle (approximative, but faster).
-This function only supports Long/Lat coordinates, and will return NULL for any planar CRS
-Starting since v.4.0.0 this function will simply consider Polygons and MultiPolygons, ignoring any Linestring or MultiLinestring
Geodesic LengthGeodesicLength( c Curve ) : Double precisionbaseIf [and only if] the SRID associated with c is a geographic one [i.e. one using longitude and latitude angles], - then returns the length of c measured on the Ellipsoid [such length is always expressed in meters]
- Otherwise NULL will be returned
- Please note: measuring lengths on the Ellipsoid requires complex geodesic calculations, and thus is an - intrinsically slow and time consuming task
Great Circle LengthGreatCircleLength( c Curve ) : Double precisionbaseIf [and only if] the SRID associated with c is a geographic one [i.e. one using longitude and latitude angles], - then returns the length of c measured on the Great Circle [such length is always expressed in meters]
- Otherwise NULL will be returned
- Please note: lengths measured on the Great Circle are less -precise than lengths measured on the Ellipsoid using complex geodesic -calculations; - but they are by far quickest to compute
IsClosedIsClosed( c Curve ) : Integer
- ST_IsClosed( c Curve ) : Integer
XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN - corresponding to a function invocation on NULL arguments;
- return TRUE if c is closed, i.e., if StartPoint(c) = EndPoint(c)
IsRingIsRing( c Curve ) : Integer
- ST_IsRing( c Curve ) : Integer
XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN - corresponding to a function invocation on NULL arguments.
- return TRUE if c is a ring, i.e., if c is closed and simple. A simple Curve does not pass through - the same Point more than once.
PointOnSurfacePointOnSurface( s Surface/Curve ) : Point
- ST_PointOnSurface( s Surface/Curve ) : Point
XGEOSreturn a Point guaranteed to lie on the Surface (or Curve)
SimplifySimplify( c Curve , tolerance Double precision ) : Curve
- ST_Generalize( c Curve , tolerance Double precision ) : Curve
GEOSreturn a geometric object representing a simplified version of c applying the Douglas-Peukert -algorithm with given tolerance
SimplifyPreserveTopologySimplifyPreserveTopology( c Curve , tolerance Double precision ) : CurveGEOSreturn a geometric object representing a simplified version of c applying the Douglas-Peukert -algorithm with given tolerance and respecting topology
-

SQL functions on type LineString

FunctionSyntaxOGC
defined
required
module
Summary
NumPointsNumPoints( line LineString ) : Integer
- ST_NumPoints( line LineString ) : Integer
Xbasereturn the number of Points in the LineString
PointNPointN( line LineString , n Integer ) : Point
- ST_PointN( line LineString , n Integer ) : Point
Xbasereturn a Point containing Point n of line
-

SQL functions on type Surface [Polygon or Ring]

FunctionSyntaxOGC
defined
required
module
Summary
CentroidCentroid( s Surface ) : Point
- ST_Centroid( s Surface ) : Point
XGEOSreturn the centroid of s, which may lie outside s
AreaArea( s Surface ) : Double precision
- ST_Area( s Surface ) : Double precision
XGEOSreturn the area of s
-

SQL functions on type Polygon

FunctionSyntaxOGC
defined
required moduleSummary
ExteriorRingExteriorRing( polyg Polygon ) : LineString
- ST_ExteriorRing( polyg Polygon ) : LineString
Xbasereturn the exteriorRing of p
NumInteriorRing
NumInteriorRings
NumInteriorRing( polyg Polygon ) : Integer
- NumInteriorRings( polyg Polygon ) : Integer
- ST_NumInteriorRing( polyg Polygon ) : Integer
Xbasereturn the number of interiorRings
InteriorRingNInteriorRingN( polyg Polygon , n Integer ) : LineString
- ST_InteriorRingN( polyg Polygon , n Integer ) : LineString
Xbasereturn the nth interiorRing. The order of Rings is not geometrically significant.
-

SQL functions on type GeomCollection

FunctionSyntaxOGC
defined
required
module
Summary
NumGeometriesNumGeometries( geom GeomCollection ) : Integer
- ST_NumGeometries( geom GeomCollection ) : Integer
Xbasereturn the number of interiorRings
GeometryNGeometryN( geom GeomCollection , n Integer ) : Geometry
- ST_GeometryN( geom GeomCollection , n Integer ) : Geometry
Xbasereturn the nth geometric object in the collection. - The order of the elements in the collection is not geometrically significant.
-

SQL functions that test approximate spatial relationships via MBRs

FunctionSyntaxOGC
defined
required
module
Summary
MbrEqualMbrEqual( geom1 Geometry , geom2 Geometry ) : IntegerbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
- TRUE if g1 and g2 have equal MBRs
MbrDisjointMbrDisjoint( geom1 Geometry , geom2 Geometry ) : IntegerbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
- TRUE if the intersection of g1 and g2 MBRs is the empty set
MbrTouchesMbrTouches( geom1 Geometry , geom2 Geometry ) : IntegerbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
- TRUE if the only Points in common between g1 and g2 MBRs lie in the union of the boundaries of g1 and g2
MbrWithinMbrWithin( geom1 Geometry , geom2 Geometry ) : IntegerbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
- TRUE if g1 MBR is completely contained in g2 MBR
MbrOverlapsMbrOverlaps( geom1 Geometry , geom2 Geometry ) : IntegerbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
- TRUE if the intersection of g1 and g2 MBRs results in a value of the same - dimension as g1 and g2 that is different from both g1 and g2
MbrIntersectsMbrIntersects( geom1 Geometry , geom2 Geometry ) : IntegerbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments;
- convenience predicate: TRUE if the intersection of g1 and g2 MBRs is not empty
EnvelopesIntersectsST_EnvIntersects( geom1 Geometry , geom2 Geometry ) : Integer
- ST_EnvelopesIntersects( geom1 Geometry , geom2 Geometry ) : Integer
- ST_EnvIntersects( geom1 Geometry , x1 Double precision , y1 Double precision , x2 Double precision , y2 Double precision ) : Integer
- ST_EnvelopesIntersects( geom1 Geometry , x1 Double precision , y1 Double precision , x2 Double precision , y2 Double precision ) : Integer
baseThe first form simply is an alias name for MbrIntersects; the other form allows to define the second MBR by two extreme points [x1, y1] and [x2, y2].
- The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on invalid arguments;
- convenience predicate: TRUE if the intersection of both MBRs is not empty
MbrContainsMbrContains( geom1 Geometry , geom2 Geometry ) : IntegerbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments;
- convenience predicate: TRUE if g2 MBR is completely contained in g1 MBR
-

SQL functions that test spatial relationships

FunctionSyntaxOGC
defined
required
module
Summary
EqualsEquals( geom1 Geometry , geom2 Geometry ) : Integer
- ST_Equals( geom1 Geometry , geom2 Geometry ) : Integer
XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
- TRUE if g1 and g2 are equal
DisjointDisjoint( geom1 Geometry , geom2 Geometry ) : Integer
- ST_Disjoint( geom1 Geometry , geom2 Geometry ) : Integer
XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
- TRUE if the intersection of g1 and g2 is the empty set
TouchesTouches( geom1 Geometry , geom2 Geometry ) : Integer
- ST_Touches( geom1 Geometry , geom2 Geometry ) : Integer
XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
- TRUE if the only Points in common between g1 and g2 lie in the union of the boundaries of g1 and g2
WithinWithin( geom1 Geometry , geom2 Geometry ) : Integer
- ST_Within( geom1 Geometry , geom2 Geometry ) : Integer
XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
- TRUE if g1 is completely contained in g2
OverlapsOverlaps( geom1 Geometry , geom2 Geometry ) : Integer
- ST_Overlaps( geom1 Geometry , geom2 Geometry ) : Integer
XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
- TRUE if the intersection of g1 and g2 results in a value of the same - dimension as g1 and g2 that is different from both g1 and g2
CrossesCrosses( geom1 Geometry , geom2 Geometry ) : Integer
- ST_Crosses( geom1 Geometry , geom2 Geometry ) : Integer
XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
- TRUE if the intersection of g1 and g2 results in a value whose dimension is less - than the maximum dimension of g1 and g2 and the intersection value includes Points - interior to both g1 and g2, and the intersection value is not equal to either g1 or g2
IntersectsIntersects( geom1 Geometry , geom2 Geometry ) : Integer
- ST_Intersects( geom1 Geometry , geom2 Geometry ) : Integer
XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments;
- convenience predicate: TRUE if the intersection of g1 and g2 is not empty
ContainsContains( geom1 Geometry , geom2 Geometry ) : Integer
- ST_Contains( geom1 Geometry , geom2 Geometry ) : Integer
XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments;
- convenience predicate: TRUE if g2 is completely contained in g1
CoversCovers( geom1 Geometry , geom2 Geometry ) : Integer
- ST_Covers( geom1 Geometry , geom2 Geometry ) : Integer
GEOS-advancedThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments;
- convenience predicate: TRUE if g1 completely covers g2
CoveredByCoveredBy( geom1 Geometry , geom2 Geometry ) : Integer
- ST_CoveredBy( geom1 Geometry , geom2 Geometry ) : Integer
GEOS-advancedThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments;
- convenience predicate: TRUE if g1 is completely covered by g2
RelateRelate( geom1 Geometry , geom2 Geometry , patternMatrix String ) : Integer
- ST_Relate( geom1 Geometry , geom2 Geometry , patternMatrix String ) : Integer
XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, - and –1 for UNKNOWN corresponding to a function invocation on NULL arguments;
- returns TRUE if the spatial relationship specified by the patternMatrix holds
-

SQL functions for distance relationships

FunctionSyntaxOGC
defined
required
module
Summary
DistanceDistance( geom1 Geometry , geom2 Geometry ) : Double precision
- ST_Distance( geom1 Geometry , geom2 Geometry ) : Double precision
XGEOSreturn the distance between geom1 and geom2 (always measured in CRS units).
Distance( geom1 Geometry , geom2 Geometry , use_ellipsoid Boolean ) : Double precision
- ST_Distance( geom1 Geometry , geom2 Geometry , use_ellipsoid Boolean ) : Double precision
XGEOS-advancedreturn the distance between geom1 and geom2 (measured in meters).
-If the use_ellipsoid argument is set to TRUE the precise (but slower) distance will be computed on the Ellipsoid, otherwise will be computed on the Great Cicle (approximative, but faster).
-This function only supports Long/Lat coordinates, and will return NULL for any planar CRS
PtDistWithinPtDistWithin( geom1 Geometry , geom2 Geometry, range Double precision [, use_spheroid Integer ] ) - : IntegerPROJ.4return TRUE (1) if the distance between geom1 and geom2 is within the given range.
- Usually distances are expressed in the length unit corresponding to the geoms own SRID: - but if both geoms are simple POINTs and their SRID is 4326 (i.e. WGS84), then distances are - expressed in meters.
- In this later case the optional arg use_spheroid can be used to select the distance - algorithm to be used: is use_spheroid = 1 the slowest but most accurate geodesic distance - will be evaluated: in any other case the simplest great circle distance will be used instead
-

SQL functions that implement spatial operators

FunctionSyntaxOGC
defined
required
module
Summary
IntersectionIntersection( geom1 Geometry , geom2 Geometry ) : Geometry
- ST_Intersection( geom1 Geometry , geom2 Geometry ) : Geometry
XGEOSreturn a geometric object that is the intersection of geometric objects geom1 and geom2
DifferenceDifference( geom1 Geometry , geom2 Geometry ) : Geometry
- ST_Difference( geom1 Geometry , geom2 Geometry ) : Geometry
XGEOSreturn a geometric object that is the closure of the set difference of geom1 and geom2
GUnionGUnion( geom1 Geometry , geom2 Geometry ) : Geometry -
- OpenGis name for this function is Union(), but it conflicts with an SQLite reserved keyword -

- ST_Union( geom1 Geometry , geom2 Geometry ) : Geometry -
XGEOSreturn a geometric object that is the set union of geom1 and geom2
GUnionGUnion( geom Geometry ) : Geometry
- ST_Union( geom Geometry ) : Geometry
XGEOSreturn a geometric object that is the set union of input values - aggregate function
SymDifferenceSymDifference( geom1 Geometry , geom2 Geometry ) : Geometry
- ST_SymDifference( geom1 Geometry , geom2 Geometry ) : Geometry
XGEOSreturn a geometric object that is the closure of the set symmetric difference of geom1 and geom2 - (logical XOR of space)
BufferBuffer( geom Geometry , dist Double precision ) : Geometry
- ST_Buffer( geom Geometry , dist Double precision ) : Geometry
XGEOSreturn a geometric object defined by buffering a distance d around geom, - where dist is in the distance units for the Spatial Reference of geom
ConvexHullConvexHull( geom Geometry ) : Geometry
- ST_ConvexHull( geom Geometry ) : Geometry
XGEOSreturn a geometric object that is the convex hull of geom
-

SQL functions that implement spatial operators
[GEOS advanced features]

HausdorffDistanceHausdorffDistance( geom1 Geometry , geom2 Geometry ) : Double precision
- ST_HausdorffDistance( geom1 Geometry , geom2 Geometry ) : Double precision
XGEOS-advancedreturn the Hausdorff distance between geom1 and geom2
-learn more
OffestCurveOffsetCurve( geom Curve , radius Double precision , left_or_right Integer ) : Curve
- ST_OffsetCurve( geom Curve , radius Double precision , left_or_right Integer ) : Curve
GEOS-advancedreturn a geometric object representing the corresponding left- (or right-sided) offset curve
- NULL is returned whenever is not possible deriving an offset curve from the original geometry
- [a single not-closed LINESTRING is expected as input]
SingleSidedBufferSingleSidedBuffer( geom Curve , radius Double precision , left_or_right Integer ) : Curve
- ST_SingleSidedBuffer( geom Curve , radius Double precision , left_or_right Integer ) : Curve
GEOS-advancedreturn a geometric object representing the corresponding left- (or right-sided) single-sided buffer
- NULL is returned whenever is not possible deriving a single-sided buffer from the original geometry
- [a single not-closed LINESTRING is expected as input]
SharedPathsSharedPaths( geom1 Geometry , geom2 Geomety ) : Geometry
- ST_SharedPaths( geom1 Geometry , geom2 Geomety ) : Geometry
GEOS-advancedreturn a geometric object (of the MULTILINESTRING type) representing any common lines shared by both geometries
- NULL is returned is no common line exists
Line_Interpolate_PointLine_Interpolate_Point( line Curve , fraction Double precision ) : Point
- ST_Line_Interpolate_Point( line Curve , fraction Double precision ) : Point
GEOS-advancedreturn a point interpolated along a line.
- Second argument (between 0.0 and 1.0) representing fraction of total length of linestring - the point has to be located.
- NULL is returned for invalid arguments
Line_Interpolate_Equidistant_PointsLine_Interpolate_Equidistant_Points( line Curve , distance Double precision) : MultiPoint
- ST_Line_Interpolate_Equidistant_Points( line Curve , distance Double precision ) : MultiPoint
GEOS-advancedreturn a set of equidistant points interpolated along a line; the returned geometry - always corresponds to a MULTIPOINT supporting the M coordinate (representing the - progressive distance for each interpolated Point).
- Second argument represents the regular distance between interpolated points.
- NULL is returned for invalid arguments
Line_Locate_PointLine_Locate_Point( line Curve , point Point ) : Double precision
- ST_Line_Locate_Point( line Curve , point Point ) : Double precision
GEOS-advancedreturn a number (between 0.0 and 1.0) representing the location of the closest - point on LineString to the given Point, as a fraction of total 2d line length.
- NULL is returned for invalid arguments
Line_SubstringLine_Substring( line Curve , start_fraction Double precision , - end_fraction Double precision ) : Curve
- ST_Line_Substring( line Curve , start_fraction Double precision , - end_fraction Double precision ) : Curve
GEOS-advancedReturn a Linestring being a substring of the input one starting and ending at the given fractions of total 2d length.
- Second and third arguments are expected to be in the range between 0.0 and 1.0.
- NULL is returned for invalid arguments
ClosestPointClosesetPoint( geom1 Geometry , geom2 Geometry ) : Point
- ST_ClosesetPoint( geom1 Geometry , geom2 Geometry ) : Point
GEOS-advancedReturns the Point on geom1 that is closest to geom2.
- NULL is returned for invalid arguments (or if distance is ZERO)
ShortestLineShortestLine( geom1 Geometry , geom2 Geometry ) : Curve
- ST_ShortestLine( geom1 Geometry , geom2 Geometry ) : Curve
GEOS-advancedReturns the shortest line between two geometries.
- NULL is returned for invalid arguments (or if distance is ZERO)
SnapSnap( geom1 Geometry , geom2 Geometry , tolerance Double precision ) : Geometry
- ST_Snap( geom1 Geometry , geom2 Geometry , tolerance Double precision ) : Geometry
GEOS-advancedReturns a new Geometry representing a modified geom1, so to "snap" vertices and segments to geom2 vertices; - a snap distance tolerance is used to control where snapping is performed.
- NULL is returned for invalid arguments
CollectCollect( geom1 Geometry , geom2 Geometry ) : Geometry
- ST_Collect( geom1 Geometry , geom2 Geometry ) : Geometry
GEOS-advanceda generic Geometry (possibly a GEOMETRYCOLLECTION) will be returned merging geom1 and geom2
- NULL will be returned if any error is encountered
CollectCollect( geom Geometry ) : Geometry
- ST_Collect( geom Geometry ) : Geometry
GEOS-advanceda generic Geometry (possibly a GEOMETRYCOLLECTION) will be returned merging input Geometries all together
- aggregate function
- NULL will be returned if any error is encountered
LineMergeLineMerge( geom Geometry ) : Geometry
- ST_LineMerge( geom Geometry ) : Geometry
GEOS-advanceda Geometry (actually corresponding to a LINESTRING or MULTILINESTRING) will be returned.
- The input Geometry is expected to represent a LINESTRING or a MULTILINESTRING.
- The input Geometry can be an arbitrary collection of sparse line fragments: this - function will then try to (possibly) reassemble them into one (or more) Linestring(s).
- NULL will be returned if any error is encountered
BuildAreaBuildArea( geom Geometry ) : Geometry
- ST_BuildArea( geom Geometry ) : Geometry
GEOS-advanceda Geometry (actually corresponding to a POLYGON or MULTIPOLYGON) will be returned.
- The input Geometry is expected to represent a LINESTRING or a MULTILINESTRING.
- The input Geometry can be an arbitrary collection of sparse Linestrings: this - function will then try to (possibly) reassemble them into one (or more) polygon(s).
- NULL will be returned if any error is encountered
PolygonizePolygonize( geom Geometry ) : Geometry
- ST_Polygonize( geom Geometry ) : Geometry
GEOS-advancedExactly the same as ST_BuildArea, but implemented as an aggregate function.
- NULL will be returned if any error is encountered
UnaryUnionUnaryUnion( geom Geometry ) : Geometry
- ST_UnaryUnion( geom Geometry ) : Geometry
GEOS-advancedExactely the same as ST_Union, but applied to a single Geometry.
- (set union of elementary Geometries within a MULTI- or GEOMETRYCOLLECTION complex Geometry)
- NULL will be returned if any error is encountered
DissolveSegmentsDissolveSegments( geom Geometry ) : Geometry
- ST_DissolveSegments( geom Geometry ) : Geometry
basea Geometry (actually corresponding to a LINESTRING, MULTILINESTRING or GEOMETRYCOLLECTION) - will be returned.
- The input Geometry is arbitrary: any POINT will remain unaffected, but any LINESTRING - or RING will be dissolved into elementary segments.
- NULL will be returned if any error is encountered
DissolvePointsDissolvePoints( geom Geometry ) : Geometry
- ST_DissolvePoints( geom Geometry ) : Geometry
basea Geometry (actually corresponding to a POINT or MULTIPOINT) - will be returned.
- The input Geometry is arbitrary: any POINT will remain unaffected, but any LINESTRING - or RING will be dissolved into elementary Points corresponding to each Vertex.
- NULL will be returned if any error is encountered
LinesFromRingsLinesFromRings( geom Geometry ) : Geometry
- ST_LinesFromRings( geom Geometry ) : Geometry
basea Geometry (actually corresponding to a LINESTRING or MULTILINESTRING) - will be returned.
- The input Geometry is expected to be a POLYGON or MULTIPOLYGON; - any RING will then be transformed into the corresponding LINESTRING.
- NULL will be returned if any error is encountered
LinesCutAtNodesLinesCutAtNodes( geom1 Geometry , geom2 Geometry ) : Geometry
- ST_LinesCutAtNodess( geom1 Geometry , geom2 Geometry ) : Geometry
basea Geometry (actually corresponding to a LINESTRING or MULTILINESTRING) - will be returned.
- The first input Geometry is expected to be a LINESTRING or MULTILINESTRING (Lines); - the second input Geometry is expected to be a POINT or MULTIPOINT (Nodes).
- any Line will then be possibly split in two halves where some vertex exactly intercepts a Node.
- NULL will be returned if any error is encountered
RingsCutAtNodesRingsCutAtNodes( geom Geometry ) : Geometry
- ST_RingsCutAtNodes( geom Geometry ) : Geometry
basea Geometry (actually corresponding to a LINESTRING or MULTILINESTRING) - will be returned.
- The input Geometry is expected to be a POLYGON or MULTIPOLYGON (Rings); - any self-intersection or intersection between Rings is assumed to represent a Node.
- any Ring will then be possibly split in two halves where some vertex exactly intercepts a Node.
- NULL will be returned if any error is encountered
CollectionExtractCollectionExtract( geom Geometry , type Integer ) : Geometry
- ST_CollectionExtract( geom Geometry , type Integer ) : Geometry
baseGiven a GEOMETRYCOLLECTION, returns a MULTI* geometry consisting only of the specified type. - Sub-geometries that are not the specified type are ignored.
-
    -
  • 1 = POINT-type
  • -
  • 2 = LINESTRING-type
  • -
  • 3 = POLYGON-type
  • -
- NULL will be returned if any error is encountered (or when no item of required type is found)
LocateAlongMeasureST_Locate_Along_Measure( geom Geometry , m_value Double precision ) : Geometry
- ST_LocateAlong( geom Geometry , m_value Double precision ) : Geometry
baseReturn a derived geometry collection value with elements that match the specified measure.
- NULL will be returned if any error is encountered (or when no element corresponding to the given measure is found).
- Please note: NULL will be returned if geom doesn't contain M-dimension, or if geom contains a Polygon, or if geom is a GeometryCollection.
LocateBetweenMeasuresST_Locate_Between_Measures( geom Geometry , m_start Double precision , m_end Double precision ) : Geometry
- ST_LocateBetween( geom Geometry , m_start Double precision , m_end Double precision ) : Geometry
baseReturn a derived geometry collection value with elements that match the specified range of measures.
- NULL will be returned if any error is encountered (or when no element corresponding to the given range of measures is found).
- Please note: NULL will be returned if geom doesn't contain M-dimension, or if geom contains a Polygon, or if geom is a GeometryCollection.
-

SQL functions that implement spatial operators
[GEOS trunk features]

FunctionSyntaxOGC
defined
required
module
Summary
DelaunayTriangulationDelaunayTriangulation( geom Geometry [ , edges_only Boolean [ , tolerance Double precision ] ] ) : Geometry
- ST_DelaunayTriangulation( geom Geometry [ , edges_only Boolean [ , tolerance Double precision ] ] ) : Geometry
GEOS-trunkreturn a geometric object representing the Delaunay Triangulation corresponding to the input Geometry
- The input Geometry could have any arbitrary type; eventually all Linestring's / Polygon's vertices will be dissolved into Points, so to implicitly always get a MultiPoint.
- The returned Geometry will usually be of the MultiPolygon type (a collection of Triangles), but will be a MultiLinestring if the optional edges_only argument is set to TRUE
- The optional argument tolerance is intended to normalize the input Geometry, suppressing repeated (or too close) Points.
- NULL is returned on failure.
VoronojDiagramVoronojDiagram( geom Geometry [ , edges_only Boolean [ , frame_extra_size Double precision [ , tolerance Double precision ] ] ] ) : Geometry
- ST_VoronojDiagram( geom Geometry [ , edges_only Boolean [ , frame_extra_size Double precision [ , tolerance Double precision ] ] ] ) : Geometry
GEOS-trunkreturn a geometric object representing the Voronoj Diagram corresponding to the input Geometry
- The input Geometry could have any arbitrary type; eventually all Linestring's / Polygon's vertices will be dissolved into Points, so to implicitly always get a MultiPoint.
- The returned Geometry will usually be of the MultiPolygon type, but will be a MultiLinestring if the optional edges_only argument is set to TRUE
- The optional argument extra_frame_size allows to arbitrarily set the percent extension of the bounding frame: the default value is 5%.
- The optional argument tolerance is intended to normalize the input Geometry, suppressing repeated (or too close) Points.
- NULL is returned on failure.
ConcaveHullConcaveHull( geom Geometry [ , factor Double precision [ , allow_holes Boolean [ , tolerance Double precision ] ] ] ) : Geometry
- ST_ConcaveHull( geom Geometry [ , factor Double precision [ , allow_holes Boolean [ , tolerance Double precision ] ] ] ) : Geometry
GEOS-trunkreturn a geometric object representing the ConcaveHull corresponding to the input Geometry
- The input Geometry could have any arbitrary type; eventually all Linestring's / Polygon's vertices will be dissolved into Points, so to implicitly always get a MultiPoint.
- The returned Geometry will always be of the Polygon or MultiPolygon type.
- The default factor applies a filtering; by declaring some lower factor you can get a more aggressive filtering effect.
- By setting the optional allow_holes argument to TRUE all interior holes will be preserved.
- The optional argument tolerance is intended to normalize the input Geometry, suppressing repeated (or too close) Points.
- NULL is returned on failure.
-

SQL functions that implement spatial operators
[LWGEOM features]

FunctionSyntaxOGC
defined
required
module
Summary
MakeValidMakeValid( geom Geometry ) : Geometry
- ST_MakeValid( geom Geometry ) : Geometry
LWGEOMreturn a geometric object representing the repaired version of the input Geometry.
- If the input Geometry was already valid, then it will be returned exactly as it was.
- NULL is returned on failure.
MakeValidDiscardedMakeValidDiscarded( geom Geometry ) : Geometry
- ST_MakeValidDiscarded( geom Geometry ) : Geometry
LWGEOMreturn a geometric object containing all elements that would be eventually discarded by ST_MakeValid() while validating the same input Geometry.
- NULL is returned on failure, or if no discarded item exists.
SegmentizeSegmentize( geom Geometry, dist Double precision ) : Geometry
- ST_Segmentize( geom Geometry , dist Double precision ) : Geometry
LWGEOMreturn a new Geometry corresponding to the input Geometry; as much Linestring / Ring vertices - as required will be eventually interpolated so to ensure that no segment will be longer than dist.
- NULL is returned on failure.
SplitSplit( geom Geometry, blade Geometry ) : Geometry
- ST_Split( geom Geometry , blade Geometry ) : Geometry
LWGEOMreturn a new Geometry collecting all items resulting by splitting the input Geometry by the blade.
- NULL is returned on failure.
SplitLeftSplitLeft( geom Geometry, blade Geometry ) : Geometry
- ST_SplitLeft( geom Geometry , blade Geometry ) : Geometry
LWGEOMreturn a new Geometry collecting all items resulting by splitting the input Geometry by the blade and falling on the left side.
- All items not affected by the split operation (i.e. not intersecting the blade) will be returned into the left collection.
- NULL is returned on failure.
SplitRightSplitRight( geom Geometry, blade Geometry ) : Geometry
- ST_SplitRight( geom Geometry , blade Geometry ) : Geometry
LWGEOMreturn a new Geometry collecting all items resulting by splitting the input Geometry by the blade and falling on the right side.
- NULL is returned on failure (or if the right side is empty).
AzimuthAzimuth( pt1 Geometry, pt2 Geometry ) : Double precision
- ST_Azimuth( pt1 Geometry , pt2 Geometry ) : Double precision
LWGEOMreturn the angle (in radians) from the horizontal of the vector defined by pt1 and pt2.
- Both pt1 and pt2 are expected to be simple Points.
- NULL is returned on failure.
- On the clock: 12=0; 3=PI/2; 6=PI; 9=3PI/2
SnapToGridSnapToGrid( geom Geometry , size Double precision ) : Geometry
- SnapToGrid( geom Geometry , size_x Double precision , size_y Double precision ) : Geometry
- SnapToGrid( geom Geometry , origin_x Double precision , origin_y Double precision , size_x Double precision , size_y Double precision ) : Geometry
- SnapToGrid( geom Geometry , origin Geometry , size_x Double precision , size_y Double precision , size_z Double precision , size_m Double precision ) : Geometry
- ST_SnapToGrid( geom Geometry , size Double precision ) : Geometry
- ST_SnapToGrid( geom Geometry , size_x Double precision , size_y Double precision ) ) : Geometry
- ST_SnapToGrid( geom Geometry , origin_x Double precision , origin_y Double precision , size_x Double precision , size_y Double precision ) ) : Geometry
- ST_SnapToGrid( geom Geometry , origin Geometry , size_x Double precision , size_y Double precision , size_z Double precision , size_m Double precision ) : Geometry
basereturn a new Geometry corresponding to the input Geometry; all points and vertices will be snapped to the grid defined by its origin and size(s).
- Removes all consecutive points falling on the same cell.
- All collapsed geometries will be stripped from the returned Geometry.
- NULL is returned on failure.
GeoHashGeoHash( geom Geometry ) : String
- ST_GeoHash( geom Geometry ) : String
LWGEOMReturn a GeoHash representation (geohash.org) of the geometry.
- A GeoHash encodes a point into a text form that is sortable and searchable based on prefixing.
- ST_GeoHash will not work with geometries that are not in geographic (lon/lat) coordinates
AsX3DAsX3D( geom Geometry ) : String
- AsX3D( geom Geometry , precision Integer ) : String
- AsX3D( geom Geometry , precision Integer , options Integer ) : String
- AsX3D( geom Geometry , precision Integer , options Integer , refid String ) : String
- ST_AsX3D( geom Geometry ) : String
- ST_AsX3D( geom Geometry , precision Integer ) : String
- ST_AsX3D( geom Geometry , precision Integer , options Integer ) : String
- ST_AsX3D( geom Geometry , precision Integer , options Integer , refid String ) : String -
LWGEOMReturns a geometry as an X3D XML formatted node element.
MaxDistanceMaxDistance( geom1 Geometry , geom2 Geometry ) : Double precision
- ST_MaxDistance( geom1 Geometry , geom2 Geometry ) : Double precision
LWGEOMreturn the max distance between geom1 and geom2
3DDistanceST_3DDistance( geom1 Geometry , geom2 Geometry ) : Double precisionLWGEOMreturn the 3D-distance between geom1 and geom2 (Z coordinates will be considered)
3DMaxDistanceST_3DMaxDistance( geom1 Geometry , geom2 Geometry ) : Double precisionLWGEOMreturn the max 3D-distance between geom1 and geom2 (Z coordinates will be considered)
-

SQL functions for coordinate transformations

FunctionSyntaxOGC
defined
required
module
Summary
TransformTransform( geom Geometry , newSRID Integer ) : Geometry
- ST_Transform( geom Geometry , newSRID Integer ) : Geometry
PROJ.4return a geometric object obtained by reprojecting coordinates into the Reference System identified by newSRID
SridFromAuthCRSSridFromAuthCRS( auth_name String , auth_SRID Integer ) : Integerbasereturn the internal SRID corresponding to auth_name and auth_SRID
- -1 will be returned if no such CRS is defined
ShiftCoords
ShiftCoordinates
ShiftCoords( geom Geometry , shiftX Double precision , shiftY Double precision ) : Geometry
- ShiftCoordinates( geom Geometry , shiftX Double precision , shiftY Double precision ) : Geometry
basereturn a geometric object obtained by translating coordinates according to shiftX and shiftY values
ST_TranslateST_Translate( geom Geometry , shiftX Double precision , shiftY Double precision , shiftZ Double precision ) : Geometrybasereturn a geometric object obtained by translating coordinates according to shiftX, shiftY and shiftZ values
ST_Shift_LongitudeST_Shift_Longitude( geom Geometry ) : Geometrybasereturn a geometric object obtained by translating any negative longitude by 360.
- Only meaningful for geographic (longitude/latitude) coordinates.
- Negative longitudes (-180/0) will be shifted by 360, thus allowing to represent longitudes in the 0/360 range and effectively crossing the International Date Line.
NormalizeLonLatNormalizeLonLat( geom Geometry ) : Geometrybasereturn a geometric object obtained by normalizing any longitude in the range - [-180 / +180] and any latitude in the range [-90 / + 90].
- Only meaningful for geographic (longitude/latitude) coordinates.
ScaleCoords
ScaleCoordinates
ScaleCoords( geom Geometry , scaleX Double precision [ , scaleY Double precision ] ) : Geometry
- ScaleCoordinates( geom Geometry , scaleX Double precision [ , scaleY Double precision ] ) : Geometry
basereturn a geometric object obtained by scaling coordinates according to scaleX and scaleY values
- if only one scale factor is specified, then an isotropic scaling occurs - [i.e. the same scale factor is applied to both axis]
- otherwise an anisotropic scaling occurs [i.e. each axis is scaled according to its own scale factor]
RotateCoords
RotateCoordinates
RotateCoords( geom Geometry , angleInDegrees Double precision ) : Geometry
- RotateCoordinates( geom Geometry , angleInDegrees Double precision ) : Geometry
basereturn a geometric object obtained by rotating coordinates according to angleInDegrees value.
-Positive angle = clockwise rotation.
-Negative angle = counterclockwise rotation.
ReflectCoords
ReflectCoordinates
ReflectCoords( geom Geometry , xAxis Integer , yAxis Integer ) : Geometry
- ReflectCoordinates( geom Geometry , xAxis Integer , yAxis Integer ) : Geometry
basereturn a geometric object obtained by reflecting coordinates according to xAxis and yAxis switches
- i.e. if xAxis is 0 (FALSE), then x-coordinates remains untouched; otherwise x-coordinates will be reflected
SwapCoords
SwapCoordinates
SwapCoords( geom Geometry ) : Geometry
- SwapCoordinates( geom Geometry ) : Geometry
basereturn a geometric object obtained by swapping x- and y-coordinates
-

SQL functions for Spatial-MetaData and Spatial-Index handling

FunctionSyntaxOGC
defined
required
module
Summary
InitSpatialMetaDataInitSpatialMetaData( void ) : Integer
- InitSpatialMetaData( mode String ) : Integer
baseCreates the geometry_columns and spatial_ref_sys metadata tables
-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE -
    -
  • the first form (no args) will automatically populate spatial_ref_sys inserting any possible ESPG SRID definition
  • -
  • if the arg 'WGS84' (alias 'WGS84_ONLY') is specified, then only WGS84-related EPSG SRIDs will be inserted
  • -
  • if the arg 'NONE' (alias 'EMPTY') is specified, no EPSG SRID will be inserted at all
  • -
InsertEpsgSridInsertEpsgSrid( srid Integer ) : IntegerbaseAttempts to insert into spatial_ref_sys the EPSG definition uniquely identified by srid
- [the corresponding EPSG SRID definition will be copied from the inlined dataset defined in libspatialite]
-the return type is Integer, with a return value of 1 for success or 0 for failure
AddGeometryColumnAddGeometryColumn( table String , column String , srid Integer , -geom_type String [ , dimension String [ , not_null Integer ] ] ) : IntegerXbaseCreates a new geometry column updating the Spatial Metadata tables and creating any -required trigger in order to enforce constraints
- geom_type has to be one of the followings:
    -
  • 'POINT', 'POINTZ', 'POINTM', 'POINTZM'
  • -
  • 'LINESTRING', 'LINESTRINGZ', 'LINESTRINGM', 'LINESTRINGZM'
  • -
  • 'POLYGON', 'POLYGONZ', 'POLYGONM', 'POLYGONZM'
  • -
  • 'MULTIPOINT', 'MULTIPOINTZ', 'MULTIPOINTM', 'MULTIPOINTZM'
  • -
  • 'MULTILINESTRING', 'MULTILINESTRINGZ', 'MULTILINESTRINGM', 'MULTILINESTRINGZM'
  • -
  • 'MULTIPOLYGON', 'MULTIPOLYGONZ', 'MULTIPOLYGONM', 'MULTIPOLYGONZM'
  • -
  • 'GEOMETRYCOLLECTION', 'GEOMETRYCOLLECTIONZ', 'GEOMETRYCOLLECTIONZM', 'GEOMETRYCOLLECTIONZM'
  • -
  • 'GEOMETRY', 'GEOMETRYZ', 'GEOMETRYM', 'GEOMETRYZM'
  • -
dimension has to be one of the followings: -
    -
  • 'XY' or 2: 2D points, identified by X and Y coordinates
  • -
  • 'XYM': 2D points, identified by X and Y coordinates. - Each point stores an M-value (measure) as well
  • -
  • 'XYZ' or 3: 3D points, identified by X, Y and Z coordinates
  • -
  • 'XYZM' or 4: 3D points, identified by X, Y and Z coordinates. - Each point stores an M-value (measure) as well
  • -
- Please note: the dimension argument is optional; anyway, if specified, iy's expected to be consistent with the declared geom_type
-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
-the optional 6th arg [not_null] is a non-standard extension required by the peculiar SQLite arch:
    -
  • if set to 0 [false], then the Geometry column will accept NULL values as well. - This is the default behaviour
  • -
  • if set to any <> 0 value [true], then the Geometry will be defined using a NOT NULL clause
  • -
RecoverGeometryColumnRecoverGeometryColumn( table String , column String , srid Integer , -geom_type String [ , dimension Integer ] ) : IntegerbaseValidates an existing ordinary column in order to possibly transform it in a real geometry column, -thus updating the Spatial Metadata tables and creating any required trigger in order to enforce constraints
-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
DiscardGeometryColumnDiscardGeometryColumn( table String , column String ) : IntegerbaseRemoves a geometry column from Spatial MetaData tables and drops any related trigger
-the column itself still continues to exist untouched as an ordinary, unconstrained column
-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
RegisterVirtualGeometryRegisterVirtualGeometry( table String ) : IntegerbaseRegisters a VirtualShape table into Spatial MetaData tables; the VirtualShape table should be previously created by invoking CREATE VIRTUAL TABLE ... USING VirtualShape(...)
-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
DropVirtualGeometryDropVirtualGeometry( table String ) : IntegerbaseRemoves a VirtualShape table from Spatial MetaData tables, dropping the VirtualShape table as well.
-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
CreateSpatialIndexCreateSpatialIndex( table String , column String ) : IntegerbaseBuilds an RTree Spatial Index on a geometry column, creating any required trigger -required in order to enforce full data coherency between the main table and Spatial Index
-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
CreateMbrCacheCreateMbrCache( table String , column String ) : IntegerbaseBuilds an MbrCache on a geometry column, creating any required trigger -required in order to enforce full data coherency between the main table and the MbrCache
-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
DisableSpatialIndexDisableSpatialIndex( table String , column String ) : IntegerbaseDisables an RTree Spatial Index or MbrCache, removing any related trigger
-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
CheckSpatialIndexCheckSpatialIndex( void ) : Integer
- CheckSpatialIndex( table String , column String ) : Integer
baseChecks an RTree Spatial Index for validity and consistency -
    -
  • if no arguments are passed, then any RTree defined into geometry_columns will be checked
  • -
  • otherwise only the RTree corresponding to table and column will be checked
  • -

-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
-NULL will be returned if the requested RTree doesn't exists
RecoverSpatialIndexRecoverSpatialIndex( [ no_check : Integer ] ) : Integer
- RecoverSpatialIndex( table String , column String [ , no_check : Integer ] ) : Integer
baseRecovers a (possibly broken) RTree Spatial Index -
    -
  • if no arguments are passed, then any RTree defined into geometry_columns will be recovered
  • -
  • otherwise only the RTree corresponding to table and column will be recovered
  • -
  • the optional argument no_check will be interpreted as follows: -
      -
    • if no_check = FALSE (default) the RTree will be checked first: - and only an invalid RTree will be then actually rebuilt
    • -
    • if no_check = TRUE the RTree will be unconditionally rebuilt from scratch
    • -
  • -

-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
-NULL will be returned if the requested RTree doesn't exists
UpdateLayerStatisticsUpdateLayerStatistics( [ void ) : Integer
- UpdateLayerStatistics( table String [ , column String ] ) : Integer
baseUpdates the internal Layer Statistics [Feature Count and Total Extent]
    -
  • if no arguments are passed, then internal statistics will be updated - for any possible Geometry Column defined in the current DB
  • -
  • otherwise statistics will be updated only for Geometry Columns - corresponding to the given table
  • -

-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
CreateTopologyTablesCreateTopologyTables( SRID Integer , dims : String ) : Integer
- CreateTopologyTables( prefix String , SRID Integer , dims : String ) : Integer
baseCreates a set of Topology tables -
    -
  • SRID argument is mandatory
  • -
  • dims argument must be 'XY' or 'XYZ':
    - 2 or 3 are valid aliases
  • -
  • the optional argument prefix can be used to support more Topology sets on the same DB:
    - if omitted a "topo_" prefix will be assumed by default
  • -

-the return type is Integer, with a return value of 1 for TRUE (success) or 0 for FALSE (failure)
-

SQL functions implementing FDO/OGR compatibility

FunctionSyntaxOGC
defined
required
module
Summary
CheckSpatialMetaDataCheckSpatialMetaData( void ) : IntegerbaseChecks the Spatial Metadata type, then returning:
    -
  • 0 - if the geometry_columns or spatial_ref_sys table does not exists, or if their actual layout doesn't corresponds to any known implementation
  • -
  • 1 - if both tables exist, and their layout is the one previously used by SpatiaLite legacy (older versions including 3.1.0 any earlier)
  • -
  • 2 - if both tables exist, and their layout is the one used by FDO/OGR
  • -
  • 3 - if both tables exist, and their layout is the one currently used by SpatiaLite (4.0.0 or any subsequent version)
  • -
AutoFDOStartAutoFDOStart( void ) : IntegerbaseThis function will inspect the Spatial Metadata, then automatically creating/refreshing a VirtualFDO - wrapper for each FDO/OGR geometry table
-the return type is Integer [how many VirtualFDO tables have been created]
AutoFDOStopAutoFDOStop( void ) : IntegerbaseThis function will inspect the Spatial Metadata, then automatically destroying any VirtualFDO - wrapper found
-the return type is Integer [how many VirtualFDO tables have been destroyed]
InitFDOSpatialMetaDataInitFDOSpatialMetaData( void ) : IntegerbaseCreates the geometry_columns and spatial_ref_sys metadata tables
-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
-Please note: Spatial Metadata created using this function will have the FDO/OGR layout, and not the standard SpatiaLite layout
AddFDOGeometryColumnAddFDOGeometryColumn( table String , column String , srid Integer , -geom_type Integer , dimension Integer, geometry_format String ) : Integer baseCreates a new geometry column updating the FDO/OGR Spatial Metadata tables
- geom_type has to be one of the followings:
    -
  • 1 POINT
  • -
  • 2 LINESTRING
  • -
  • 3 POLYGON
  • -
  • 4 MULTIPOINT
  • -
  • 5 MULTILINESTRING
  • -
  • 6 MULTIPOLYGON
  • -
  • 7 GEOMETRYCOLLECTION
  • -
dimension may be 2, 3 or 4, accordingly to OGR/FDO specs
- geometry_format has to be one of the followings:
    -
  • 'WBT'
  • -
  • 'WKT'
  • -
  • 'FGF'
  • -

-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
RecoverFDOGeometryColumnRecoverFDOGeometryColumn( table String , column String , srid Integer , -geom_type String , dimension Integer, geometry_format String ) : IntegerbaseValidates an existing ordinary column in order to possibly transform it in a real geometry column, -thus updating the FDO/OGR Spatial Metadata tables
-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
DiscardFDOGeometryColumnDiscardFDOGeometryColumn( table String , column String ) : IntegerbaseRemoves a geometry column from FDO/OGR Spatial MetaData tables
-the column itself still continues to exist untouched as an ordinary column
-the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
-

SQL functions for MbrCache-based queries

FunctionSyntaxOGC
defined
required
module
Summary
FilterMbrWithinFilterMbrWithin( x1 Double precision , y1 Double precision , - x2 Double precision , y2 Double precision )baseRetrieves from an MbrCache any entity whose MBR falls within - the rectangle identified by extreme points x1 y1 and x2 y2
FilterMbrContainsFilterMbrContains( x1 Double precision , y1 Double precision , - x2 Double precision , y2 Double precision )baseRetrieves from an MbrCache any entity whose MBR contains - the rectangle identified by extreme points x1 y1 and x2 y2
FilterMbrIntersectsFilterMbrIntersects( x1 Double precision , y1 Double precision , - x2 Double precision , y2 Double precision )baseRetrieves from an MbrCache any entity whose MBR intersects - the rectangle identified by extreme points x1 y1 and x2 y2
BuildMbrFilterBuildMbrFilter( x1 Double precision , y1 Double precision , - x2 Double precision , y2 Double precision )baseCreates an MBR identified by extreme points x1 y1 and x2 y2
- This fuction is used internally by triggers related to MbrCache management, - and is not intended for any other usage
-

SQL functions for R*Tree-based queries (Geometry Callbacks)

FunctionSyntaxOGC
defined
required
module
Summary
RTreeIntersectsRTreeIntersects( x1 Double precision , y1 Double precision , - x2 Double precision , y2 Double precision )geocallbacksRetrieves from an R*Tree Spatial Index any entity whose MBR intersect - the rectangle identified by extreme points x1 y1 and x2 y2
RTreeWithinRTreeWithin( x1 Double precision , y1 Double precision , - x2 Double precision , y2 Double precision )geocallbacksDeprecated function
- Still maintained so to avoid backward compatibility issues, but now simply is an - alias-name for RTreeIntersects
RTreeContainsRTreeContains( x1 Double precision , y1 Double precision , - x2 Double precision , y2 Double precision )geocallbacksDeprecated function
- Still maintained so to avoid backward compatibility issues, but now simply is an - alias-name for RTreeIntersects
RTreeDistWithinRTreeDistWithin( x Double precision , y Double precision , - radius Double precision )geocallbacksRetrieves from an R*Tree Spatial Index any entity whose MBR intersect - the square circumscribed on the given circle (x y center, radius)
- back - diff --git a/src/spatialite/spatialite.pc.in b/src/spatialite/spatialite.pc.in deleted file mode 100644 index f00fd8c..0000000 --- a/src/spatialite/spatialite.pc.in +++ /dev/null @@ -1,12 +0,0 @@ -# Package Information for pkg-config - -prefix=@prefix@ -exec_prefix=@exec_prefix@ -libdir=@libdir@ -includedir=@includedir@ - -Name: spatialite -Description: Spatial SQL database engine based on SQLite -Version: @VERSION@ -Libs: -L${libdir} -lspatialite -lsqlite3 -lm -Cflags: -I${includedir} diff --git a/src/spatialite/src/Makefile.am b/src/spatialite/src/Makefile.am deleted file mode 100644 index f5e1cdc..0000000 --- a/src/spatialite/src/Makefile.am +++ /dev/null @@ -1,40 +0,0 @@ - -SUBDIRS = headers \ - gaiaaux \ - gaiaexif \ - gaiageo \ - spatialite \ - shapefiles \ - srsinit \ - virtualtext - -INCLUDES = @CFLAGS@ -INCLUDES += -I$(top_srcdir)/src/headers -INCLUDES += -I$(top_srcdir) - -lib_LTLIBRARIES = libspatialite.la - -libspatialite_la_SOURCES = versioninfo/version.c - -libspatialite_la_LIBADD = ./gaiaaux/libgaiaaux.la \ - ./gaiaexif/libgaiaexif.la \ - ./gaiageo/libgaiageo.la \ - ./spatialite/libsplite.la \ - ./shapefiles/libshapefiles.la \ - ./srsinit/libsrsinit.la \ - ./virtualtext/libvirtualtext.la - - -if MINGW -libspatialite_la_LDFLAGS = -version-info 4:0:0 -no-undefined -else -if ANDROID -libspatialite_la_LDFLAGS = -version-info 5:1:0 -libspatialite_la_LIBADD += -ldl -else -libspatialite_la_LDFLAGS = -version-info 5:1:0 -libspatialite_la_LIBADD += -lpthread -ldl -endif -endif - -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda diff --git a/src/spatialite/src/Makefile.in b/src/spatialite/src/Makefile.in deleted file mode 100644 index ab4d4a9..0000000 --- a/src/spatialite/src/Makefile.in +++ /dev/null @@ -1,747 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -@ANDROID_TRUE@@MINGW_FALSE@am__append_1 = -ldl -@ANDROID_FALSE@@MINGW_FALSE@am__append_2 = -lpthread -ldl -subdir = src -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(libdir)" -LTLIBRARIES = $(lib_LTLIBRARIES) -am__DEPENDENCIES_1 = -libspatialite_la_DEPENDENCIES = ./gaiaaux/libgaiaaux.la \ - ./gaiaexif/libgaiaexif.la ./gaiageo/libgaiageo.la \ - ./spatialite/libsplite.la ./shapefiles/libshapefiles.la \ - ./srsinit/libsrsinit.la ./virtualtext/libvirtualtext.la \ - $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) -am_libspatialite_la_OBJECTS = version.lo -libspatialite_la_OBJECTS = $(am_libspatialite_la_OBJECTS) -libspatialite_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ - $(libspatialite_la_LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libspatialite_la_SOURCES) -DIST_SOURCES = $(libspatialite_la_SOURCES) -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = headers \ - gaiaaux \ - gaiaexif \ - gaiageo \ - spatialite \ - shapefiles \ - srsinit \ - virtualtext - -INCLUDES = @CFLAGS@ -I$(top_srcdir)/src/headers -I$(top_srcdir) -lib_LTLIBRARIES = libspatialite.la -libspatialite_la_SOURCES = versioninfo/version.c -libspatialite_la_LIBADD = ./gaiaaux/libgaiaaux.la \ - ./gaiaexif/libgaiaexif.la ./gaiageo/libgaiageo.la \ - ./spatialite/libsplite.la ./shapefiles/libshapefiles.la \ - ./srsinit/libsrsinit.la ./virtualtext/libvirtualtext.la \ - $(am__append_1) $(am__append_2) -@ANDROID_FALSE@@MINGW_FALSE@libspatialite_la_LDFLAGS = -version-info 5:1:0 -@ANDROID_TRUE@@MINGW_FALSE@libspatialite_la_LDFLAGS = -version-info 5:1:0 -@MINGW_TRUE@libspatialite_la_LDFLAGS = -version-info 4:0:0 -no-undefined -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda -all: all-recursive - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): -install-libLTLIBRARIES: $(lib_LTLIBRARIES) - @$(NORMAL_INSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - list2=; for p in $$list; do \ - if test -f $$p; then \ - list2="$$list2 $$p"; \ - else :; fi; \ - done; \ - test -z "$$list2" || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ - } - -uninstall-libLTLIBRARIES: - @$(NORMAL_UNINSTALL) - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ - for p in $$list; do \ - $(am__strip_dir) \ - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ - done - -clean-libLTLIBRARIES: - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libspatialite.la: $(libspatialite_la_OBJECTS) $(libspatialite_la_DEPENDENCIES) $(EXTRA_libspatialite_la_DEPENDENCIES) - $(libspatialite_la_LINK) -rpath $(libdir) $(libspatialite_la_OBJECTS) $(libspatialite_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -version.lo: versioninfo/version.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT version.lo -MD -MP -MF $(DEPDIR)/version.Tpo -c -o version.lo `test -f 'versioninfo/version.c' || echo '$(srcdir)/'`versioninfo/version.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/version.Tpo $(DEPDIR)/version.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='versioninfo/version.c' object='version.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o version.lo `test -f 'versioninfo/version.c' || echo '$(srcdir)/'`versioninfo/version.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile $(LTLIBRARIES) -installdirs: installdirs-recursive -installdirs-am: - for dir in "$(DESTDIR)$(libdir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ - mostlyclean-am - -distclean: distclean-recursive - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: install-libLTLIBRARIES - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: uninstall-libLTLIBRARIES - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic \ - clean-libLTLIBRARIES clean-libtool ctags ctags-recursive \ - distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-libLTLIBRARIES install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs installdirs-am \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ - uninstall-libLTLIBRARIES - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/src/gaiaaux/Makefile.am b/src/spatialite/src/gaiaaux/Makefile.am deleted file mode 100644 index acab16b..0000000 --- a/src/spatialite/src/gaiaaux/Makefile.am +++ /dev/null @@ -1,10 +0,0 @@ - -INCLUDES = @CFLAGS@ -INCLUDES += -I$(top_srcdir)/src/headers - -noinst_LTLIBRARIES = libgaiaaux.la - -libgaiaaux_la_SOURCES = gg_sqlaux.c \ - gg_utf8.c - -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda diff --git a/src/spatialite/src/gaiaaux/Makefile.in b/src/spatialite/src/gaiaaux/Makefile.in deleted file mode 100644 index e602992..0000000 --- a/src/spatialite/src/gaiaaux/Makefile.in +++ /dev/null @@ -1,511 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/gaiaaux -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libgaiaaux_la_LIBADD = -am_libgaiaaux_la_OBJECTS = gg_sqlaux.lo gg_utf8.lo -libgaiaaux_la_OBJECTS = $(am_libgaiaaux_la_OBJECTS) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libgaiaaux_la_SOURCES) -DIST_SOURCES = $(libgaiaaux_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = @CFLAGS@ -I$(top_srcdir)/src/headers -noinst_LTLIBRARIES = libgaiaaux.la -libgaiaaux_la_SOURCES = gg_sqlaux.c \ - gg_utf8.c - -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/gaiaaux/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/gaiaaux/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libgaiaaux.la: $(libgaiaaux_la_OBJECTS) $(libgaiaaux_la_DEPENDENCIES) $(EXTRA_libgaiaaux_la_DEPENDENCIES) - $(LINK) $(libgaiaaux_la_OBJECTS) $(libgaiaaux_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_sqlaux.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_utf8.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/src/gaiaaux/gg_sqlaux.c b/src/spatialite/src/gaiaaux/gg_sqlaux.c deleted file mode 100644 index 3154a82..0000000 --- a/src/spatialite/src/gaiaaux/gg_sqlaux.c +++ /dev/null @@ -1,802 +0,0 @@ -/* - - gg_sqlaux.c -- SQL ancillary functions - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include - -#include -#include - -#ifdef _WIN32 -#define strcasecmp _stricmp -#endif /* not WIN32 */ - -GAIAAUX_DECLARE int -gaiaIllegalSqlName (const char *name) -{ -/* checks if column-name is an SQL illegal name */ - int i; - int len; - if (!name) - return 1; - len = strlen (name); - if (len == 0) - return 1; - for (i = 0; i < len; i++) - { - if (name[i] >= 'a' && name[i] <= 'z') - continue; - if (name[i] >= 'A' && name[i] <= 'Z') - continue; - if (name[i] >= '0' && name[i] <= '9') - continue; - if (name[i] == '_') - continue; - /* the name contains an illegal char */ - return 1; - } - if (name[0] >= 'a' && name[0] <= 'z') - return 0; - if (name[0] >= 'A' && name[0] <= 'Z') - return 0; -/* the first char in the name isn't a letter */ - return 1; -} - -GAIAAUX_DECLARE int -gaiaIsReservedSqliteName (const char *name) -{ -/* checks if column-name is an SQLite reserved keyword */ - char *reserved[] = { - "ALL", - "ALTER", - "AND", - "AS", - "AUTOINCREMENT", - "BETWEEN", - "BLOB", - "BY", - "CASE", - "CHECK", - "COLLATE", - "COMMIT", - "CONSTRAINT", - "CREATE", - "CROSS", - "DATE", - "DATETIME", - "DEFAULT", - "DEFERRABLE", - "DELETE", - "DISTINCT", - "DOUBLE", - "DROP", - "ELSE", - "ESCAPE", - "EXCEPT", - "FOREIGN", - "FROM", - "FULL", - "GLOB", - "GROUP", - "HAVING", - "IN", - "INDEX", - "INNER", - "INSERT", - "INTEGER", - "INTERSECT", - "INTO", - "IS", - "ISNULL", - "JOIN", - "KEY", - "LEFT", - "LIKE", - "LIMIT", - "MATCH", - "NATURAL", - "NOT", - "NOTNULL", - "NULL", - "ON", - "OR", - "ORDER", - "OUTER", - "PRAGMA", - "PRIMARY", - "REFERENCES", - "REPLACE", - "RIGHT", - "ROLLBACK", - "SELECT", - "SET", - "TABLE", - "TEMP", - "TEMPORARY", - "THEN", - "TEXT", - "TIMESTAMP", - "TO", - "TRANSACTION", - "UNION", - "UNIQUE", - "UPDATE", - "USING", - "VALUES", - "VIEW", - "WHEN", - "WHERE", - NULL - }; - char **pw = reserved; - while (*pw != NULL) - { - if (strcasecmp (name, *pw) == 0) - return 1; - pw++; - } - return 0; -} - -GAIAAUX_DECLARE int -gaiaIsReservedSqlName (const char *name) -{ -/* checks if column-name is an SQL reserved keyword */ - char *reserved[] = { - "ABSOLUTE", - "ACTION", - "ADD", - "AFTER", - "ALL", - "ALLOCATE", - "ALTER", - "AND", - "ANY", - "ARE", - "ARRAY", - "AS", - "ASC", - "ASENSITIVE", - "ASSERTION", - "ASYMMETRIC", - "AT", - "ATOMIC", - "AUTHORIZATION", - "AVG", - "BEFORE", - "BEGIN", - "BETWEEN", - "BIGINT", - "BINARY", - "BIT", - "BIT_LENGTH", - "BLOB", - "BOOLEAN", - "BOTH", - "BREADTH", - "BY", - "CALL", - "CALLED", - "CASCADE", - "CASCADED", - "CASE", - "CAST", - "CATALOG", - "CHAR", - "CHARACTER", - "CHARACTER_LENGTH", - "CHAR_LENGTH", - "CHECK", - "CLOB", - "CLOSE", - "COALESCE", - "COLLATE", - "COLLATION", - "COLUMN", - "COMMIT", - "CONDITION", - "CONNECT", - "CONNECTION", - "CONSTRAINT", - "CONSTRAINTS", - "CONSTRUCTOR", - "CONTAINS", - "CONTINUE", - "CONVERT", - "CORRESPONDING", - "COUNT", - "CREATE", - "CROSS", - "CUBE", - "CURRENT", - "CURRENT_DATE", - "CURRENT_DEFAULT_TRANSFORM_GROUP", - "CURRENT_PATH", - "CURRENT_ROLE", - "CURRENT_TIME", - "CURRENT_TIMESTAMP", - "CURRENT_TRANSFORM_GROUP_FOR_TYPE", - "CURRENT_USER", - "CURSOR", - "CYCLE", - "DATA", - "DATE", - "DAY", - "DEALLOCATE", - "DEC", - "DECIMAL", - "DECLARE", - "DEFAULT", - "DEFERRABLE", - "DEFERRED", - "DELETE", - "DEPTH", - "DEREF", - "DESC", - "DESCRIBE", - "DESCRIPTOR", - "DETERMINISTIC", - "DIAGNOSTICS", - "DISCONNECT", - "DISTINCT", - "DO", - "DOMAIN", - "DOUBLE", - "DROP", - "DYNAMIC", - "EACH", - "ELEMENT", - "ELSE", - "ELSEIF", - "END", - "EQUALS", - "ESCAPE", - "EXCEPT", - "EXCEPTION", - "EXEC", - "EXECUTE", - "EXISTS", - "EXIT", - "external", - "EXTRACT", - "FALSE", - "FETCH", - "FILTER", - "FIRST", - "FLOAT", - "FOR", - "FOREIGN", - "FOUND", - "FREE", - "FROM", - "FULL", - "FUNCTION", - "GENERAL", - "GET", - "GLOBAL", - "GO", - "GOTO", - "GRANT", - "GROUP", - "GROUPING", - "HANDLER", - "HAVING", - "HOLD", - "HOUR", - "IDENTITY", - "IF", - "IMMEDIATE", - "IN", - "INDICATOR", - "INITIALLY", - "INNER", - "INOUT", - "INPUT", - "INSENSITIVE", - "INSERT", - "INT", - "INTEGER", - "INTERSECT", - "INTERVAL", - "INTO", - "IS", - "ISOLATION", - "ITERATE", - "JOIN", - "KEY", - "LANGUAGE", - "LARGE", - "LAST", - "LATERAL", - "LEADING", - "LEAVE", - "LEFT", - "LEVEL", - "LIKE", - "LOCAL", - "LOCALTIME", - "LOCALTIMESTAMP", - "LOCATOR", - "LOOP", - "LOWER", - "MAP", - "MATCH", - "MAX", - "MEMBER", - "MERGE", - "METHOD", - "MIN", - "MINUTE", - "MODIFIES", - "MODULE", - "MONTH", - "MULTISET", - "NAMES", - "NATIONAL", - "NATURAL", - "NCHAR", - "NCLOB", - "NEW", - "NEXT", - "NO", - "NONE", - "NOT", - "NULL", - "NULLIF", - "NUMERIC", - "OBJECT", - "OCTET_LENGTH", - "OF", - "OLD", - "ON", - "ONLY", - "OPEN", - "OPTION", - "OR", - "ORDER", - "ORDINALITY", - "OUT", - "OUTER", - "OUTPUT", - "OVER", - "OVERLAPS", - "PAD", - "PARAMETER", - "PARTIAL", - "PARTITION", - "PATH", - "POSITION", - "PRECISION", - "PREPARE", - "PRESERVE", - "PRIMARY", - "PRIOR", - "PRIVILEGES", - "PROCEDURE", - "PUBLIC", - "RANGE", - "READ", - "READS", - "REAL", - "RECURSIVE", - "REF", - "REFERENCES", - "REFERENCING", - "RELATIVE", - "RELEASE", - "REPEAT", - "RESIGNAL", - "RESTRICT", - "RESULT", - "RETURN", - "RETURNS", - "REVOKE", - "RIGHT", - "ROLE", - "ROLLBACK", - "ROLLUP", - "ROUTINE", - "ROW", - "ROWS", - "SAVEPOINT", - "SCHEMA", - "SCOPE", - "SCROLL", - "SEARCH", - "SECOND", - "SECTION", - "SELECT", - "SENSITIVE", - "SESSION", - "SESSION_USER", - "SET", - "SETS", - "SIGNAL", - "SIMILAR", - "SIZE", - "SMALLINT", - "SOME", - "SPACE", - "SPECIFIC", - "SPECIFICTYPE", - "SQL", - "SQLCODE", - "SQLERROR", - "SQLEXCEPTION", - "SQLSTATE", - "SQLWARNING", - "START", - "STATE", - "STATIC", - "SUBMULTISET", - "SUBSTRING", - "SUM", - "SYMMETRIC", - "SYSTEM", - "SYSTEM_USER", - "TABLE", - "TABLESAMPLE", - "TEMPORARY", - "THEN", - "TIME", - "TIMESTAMP", - "TIMEZONE_HOUR", - "TIMEZONE_MINUTE", - "TO", - "TRAILING", - "TRANSACTION", - "TRANSLATE", - "TRANSLATION", - "TREAT", - "TRIGGER", - "TRIM", - "TRUE", - "UNDER", - "UNDO", - "UNION", - "UNIQUE", - "UNKNOWN", - "UNNEST", - "UNTIL", - "UPDATE", - "UPPER", - "USAGE", - "USER", - "USING", - "VALUE", - "VALUES", - "VARCHAR", - "VARYING", - "VIEW", - "WHEN", - "WHENEVER", - "WHERE", - "WHILE", - "WINDOW", - "WITH", - "WITHIN", - "WITHOUT", - "WORK", - "WRITE", - "YEAR", - "ZONE", - NULL - }; - char **pw = reserved; - while (*pw != NULL) - { - if (strcasecmp (name, *pw) == 0) - return 1; - pw++; - } - return 0; -} - -GAIAAUX_DECLARE char * -gaiaDequotedSql (const char *value) -{ -/* -/ returns a well formatted TEXT value from SQL -/ 1] if the input string begins and ends with ' sigle quote will be the target -/ 2] if the input string begins and ends with " double quote will be the target -/ 3] in any othet case the string will simply be copied -*/ - const char *pi = value; - const char *start; - const char *end; - char *clean; - char *po; - int len; - char target; - int mark = 0; - if (value == NULL) - return NULL; - - len = strlen (value); - clean = malloc (len + 1); - if (*(value + 0) == '"' && *(value + len - 1) == '"') - target = '"'; - else if (*(value + 0) == '\'' && *(value + len - 1) == '\'') - target = '\''; - else - { - /* no dequoting; simply copying */ - strcpy (clean, value); - return clean; - } - start = value; - end = value + len - 1; - po = clean; - while (*pi != '\0') - { - if (mark) - { - if (*pi == target) - { - *po++ = *pi++; - mark = 0; - continue; - } - else - { - /* error: mismatching quote */ - free (clean); - return NULL; - } - } - if (*pi == target) - { - if (pi == start || pi == end) - { - /* first or last char */ - pi++; - continue; - } - /* found a quote marker */ - mark = 1; - pi++; - continue; - } - *po++ = *pi++; - } - *po = '\0'; - return clean; -} - -GAIAAUX_DECLARE char * -gaiaQuotedSql (const char *value, int quote) -{ -/* -/ returns a well formatted TEXT value for SQL -/ 1] strips trailing spaces -/ 2] masks any QUOTE inside the string, appending another QUOTE -/ 3] works for both SINGLE- and DOUBLE-QUOTE -*/ - const char *p_in; - const char *p_end; - char qt; - char *out; - char *p_out; - int len = 0; - int i; - - if (!value) - return NULL; - if (quote == GAIA_SQL_SINGLE_QUOTE) - qt = '\''; - else if (quote == GAIA_SQL_DOUBLE_QUOTE) - qt = '"'; - else - return NULL; - - p_end = value; - for (i = (strlen (value) - 1); i >= 0; i--) - { - /* stripping trailing spaces */ - p_end = value + i; - if (value[i] != ' ') - break; - } - - p_in = value; - while (p_in <= p_end) - { - /* computing the output length */ - len++; - if (*p_in == qt) - len++; - p_in++; - } - if (len == 1 && *value == ' ') - { - /* empty string */ - len = 0; - } - - out = malloc (len + 1); - if (!out) - return NULL; - - if (len == 0) - { - /* empty string */ - *out = '\0'; - return out; - } - - p_out = out; - p_in = value; - while (p_in <= p_end) - { - /* creating the output string */ - if (*p_in == qt) - *p_out++ = qt; - *p_out++ = *p_in++; - } - *p_out = '\0'; - return out; -} - -GAIAAUX_DECLARE char * -gaiaSingleQuotedSql (const char *value) -{ -/* convenience method supporting SINGLE-QUOTES */ - return gaiaQuotedSql (value, GAIA_SQL_SINGLE_QUOTE); -} - -GAIAAUX_DECLARE char * -gaiaDoubleQuotedSql (const char *value) -{ -/* convenience method supporting DOUBLE-QUOTES */ - return gaiaQuotedSql (value, GAIA_SQL_DOUBLE_QUOTE); -} - -GAIAAUX_DECLARE void -gaiaCleanSqlString (char *value) -{ -/* -/ returns a well formatted TEXT value for SQL -/ 1] strips trailing spaces -/ 2] masks any ' inside the string, appending another ' -*/ - char new_value[1024]; - char *p; - int len; - int i; - len = strlen (value); - for (i = (len - 1); i >= 0; i--) - { - /* stripping trailing spaces */ - if (value[i] == ' ') - value[i] = '\0'; - else - break; - } - p = new_value; - for (i = 0; i < len; i++) - { - if (value[i] == '\'') - *(p++) = '\''; - *(p++) = value[i]; - } - *p = '\0'; - strcpy (value, new_value); -} - -GAIAAUX_DECLARE void -gaiaInsertIntoSqlLog (sqlite3 * sqlite, const char *user_agent, - const char *utf8Sql, sqlite3_int64 * sqllog_pk) -{ -/* inserting an event into the SQL Log */ - char *sql_statement; - int ret; - - *sqllog_pk = -1; - if (checkSpatialMetaData (sqlite) != 3) - { -/* CURRENT db-schema (>= 4.0.0) required */ - return; - } - - sql_statement = sqlite3_mprintf ("INSERT INTO sql_statements_log " - "(id, time_start, user_agent, sql_statement) VALUES (" - "NULL, strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now'), %Q, %Q)", - user_agent, utf8Sql); - ret = sqlite3_exec (sqlite, sql_statement, NULL, 0, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return; - *sqllog_pk = sqlite3_last_insert_rowid (sqlite); -} - -GAIAAUX_DECLARE void -gaiaUpdateSqlLog (sqlite3 * sqlite, sqlite3_int64 sqllog_pk, int success, - const char *errMsg) -{ -/* completing an event already inserted into the SQL Log */ - char *sql_statement; - char dummy[64]; - - if (checkSpatialMetaData (sqlite) != 3) - { -/* CURRENT db-schema (>= 4.0.0) required */ - return; - } -#if defined(_WIN32) || defined(__MINGW32__) - /* CAVEAT - M$ runtime doesn't supports %lld for 64 bits */ - sprintf (dummy, "%I64d", sqllog_pk); -#else - sprintf (dummy, "%lld", sqllog_pk); -#endif - if (success) - { - sql_statement = sqlite3_mprintf ("UPDATE sql_statements_log SET " - "time_end = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now'), " - "success = 1, error_cause = 'success' WHERE id = %s", - dummy); - } - else - { - sql_statement = sqlite3_mprintf ("UPDATE sql_statements_log SET " - "time_end = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now'), " - "success = 0, error_cause = %Q WHERE id = %s", - (errMsg == NULL) - ? "UNKNOWN" : errMsg, dummy); - } - sqlite3_exec (sqlite, sql_statement, NULL, 0, NULL); - sqlite3_free (sql_statement); -} - diff --git a/src/spatialite/src/gaiaaux/gg_utf8.c b/src/spatialite/src/gaiaaux/gg_utf8.c deleted file mode 100644 index d413b61..0000000 --- a/src/spatialite/src/gaiaaux/gg_utf8.c +++ /dev/null @@ -1,188 +0,0 @@ -/* - - gg_utf8.c -- locale charset handling - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#if OMIT_ICONV == 0 /* ICONV is absolutely required */ - -#if defined(__MINGW32__) || defined(_WIN32) -#define LIBICONV_STATIC -#include -#define LIBCHARSET_STATIC -#ifdef _MSC_VER -/* isn't supported on OSGeo4W */ -/* applying a tricky workaround to fix this issue */ -extern const char *locale_charset (void); -#else /* sane Windows - not OSGeo4W */ -#include -#endif /* end localcharset */ -#else /* not MINGW32 - WIN32 */ -#if defined(__APPLE__) || defined(__ANDROID__) -#include -#include -#else /* neither Mac OsX nor Android */ -#include -#include -#endif -#endif - -#define iconv libiconv -#define iconv_open libiconv_open -#define iconv_close libiconv_close - -#include -#include - -GAIAAUX_DECLARE const char * -gaiaGetLocaleCharset () -{ -/* identifies the locale charset */ -#if defined(__MINGW32__) || defined(_WIN32) - return locale_charset (); -#else /* not MINGW32 - WIN32 */ -#if defined(__APPLE__) || defined(__ANDROID__) - return locale_charset (); -#else /* neither Mac OsX nor Android */ - return nl_langinfo (CODESET); -#endif -#endif -} - -GAIAAUX_DECLARE int -gaiaConvertCharset (char **buf, const char *fromCs, const char *toCs) -{ -/* converting a string from a charset to another "on-the-fly" */ - char utf8buf[65536]; -#if !defined(__MINGW32__) && defined(_WIN32) - const char *pBuf; -#else /* not WIN32 */ - char *pBuf; -#endif - size_t len; - size_t utf8len; - char *pUtf8buf; - iconv_t cvt = iconv_open (toCs, fromCs); - if (cvt == (iconv_t) (-1)) - goto unsupported; - len = strlen (*buf); - utf8len = 65536; - pBuf = *buf; - pUtf8buf = utf8buf; - if (iconv (cvt, &pBuf, &len, &pUtf8buf, &utf8len) == (size_t) (-1)) - goto error; - utf8buf[65536 - utf8len] = '\0'; - memcpy (*buf, utf8buf, (65536 - utf8len) + 1); - iconv_close (cvt); - return 1; - error: - iconv_close (cvt); - unsupported: - return 0; -} - -GAIAAUX_DECLARE void * -gaiaCreateUTF8Converter (const char *fromCS) -{ -/* creating a UTF8 converter and returning an opaque reference to it */ - iconv_t cvt = iconv_open ("UTF-8", fromCS); - if (cvt == (iconv_t) (-1)) - return NULL; - return cvt; -} - -GAIAAUX_DECLARE void -gaiaFreeUTF8Converter (void *cvtCS) -{ -/* destroying a UTF8 converter */ - if (cvtCS) - iconv_close (cvtCS); -} - -GAIAAUX_DECLARE char * -gaiaConvertToUTF8 (void *cvtCS, const char *buf, int buflen, int *err) -{ -/* converting a string to UTF8 */ - char *utf8buf = 0; -#if !defined(__MINGW32__) && defined(_WIN32) - const char *pBuf; -#else - char *pBuf; -#endif - size_t len; - size_t utf8len; - int maxlen = buflen * 4; - char *pUtf8buf; - *err = 0; - if (!cvtCS) - { - *err = 1; - return NULL; - } - utf8buf = malloc (maxlen); - len = buflen; - utf8len = maxlen; - pBuf = (char *) buf; - pUtf8buf = utf8buf; - if (iconv (cvtCS, &pBuf, &len, &pUtf8buf, &utf8len) == (size_t) (-1)) - { - free (utf8buf); - *err = 1; - return NULL; - } - utf8buf[maxlen - utf8len] = '\0'; - return utf8buf; -} - -#endif /* ICONV enabled/disabled */ diff --git a/src/spatialite/src/gaiaexif/Makefile.am b/src/spatialite/src/gaiaexif/Makefile.am deleted file mode 100644 index 9e48153..0000000 --- a/src/spatialite/src/gaiaexif/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ - -INCLUDES = @CFLAGS@ -INCLUDES += -I$(top_srcdir)/src/headers - -noinst_LTLIBRARIES = libgaiaexif.la - -libgaiaexif_la_SOURCES = gaia_exif.c - -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda diff --git a/src/spatialite/src/gaiaexif/Makefile.in b/src/spatialite/src/gaiaexif/Makefile.in deleted file mode 100644 index b1120dd..0000000 --- a/src/spatialite/src/gaiaexif/Makefile.in +++ /dev/null @@ -1,508 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/gaiaexif -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libgaiaexif_la_LIBADD = -am_libgaiaexif_la_OBJECTS = gaia_exif.lo -libgaiaexif_la_OBJECTS = $(am_libgaiaexif_la_OBJECTS) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libgaiaexif_la_SOURCES) -DIST_SOURCES = $(libgaiaexif_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = @CFLAGS@ -I$(top_srcdir)/src/headers -noinst_LTLIBRARIES = libgaiaexif.la -libgaiaexif_la_SOURCES = gaia_exif.c -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/gaiaexif/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/gaiaexif/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libgaiaexif.la: $(libgaiaexif_la_OBJECTS) $(libgaiaexif_la_DEPENDENCIES) $(EXTRA_libgaiaexif_la_DEPENDENCIES) - $(LINK) $(libgaiaexif_la_OBJECTS) $(libgaiaexif_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaia_exif.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/src/gaiaexif/gaia_exif.c b/src/spatialite/src/gaiaexif/gaia_exif.c deleted file mode 100644 index 4bece7c..0000000 --- a/src/spatialite/src/gaiaexif/gaia_exif.c +++ /dev/null @@ -1,2736 +0,0 @@ -/* - - gaia_exif.c -- Gaia EXIF support - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include - -#include -#include -#include - -#ifdef _WIN32 -#define strcasecmp _stricmp -#endif /* not WIN32 */ - -static void -exifTagName (char gps, unsigned short tag_id, char *str, int len) -{ -/* returns the canonical name corresponding to an EXIF TAG ID */ - int l; - char *name = "UNKNOWN"; - if (gps) - { - switch (tag_id) - { - case 0x00: - name = "GPSVersionID"; - break; - case 0x01: - name = "GPSLatitudeRef"; - break; - case 0x02: - name = "GPSLatitude"; - break; - case 0x03: - name = "GPSLongitudeRef"; - break; - case 0x04: - name = "GPSLongitude"; - break; - case 0x05: - name = "GPSAltitudeRef"; - break; - case 0x06: - name = "GPSAltitude"; - break; - case 0x07: - name = "GPSTimeStamp"; - break; - case 0x08: - name = "GPSSatellites"; - break; - case 0x09: - name = "GPSStatus"; - break; - case 0x0A: - name = "GPSMeasureMode"; - break; - case 0x0B: - name = "GPSDOP"; - break; - case 0x0C: - name = "GPSSpeedRef"; - break; - case 0x0D: - name = "GPSSpeed"; - break; - case 0x0E: - name = "GPSTrackRef"; - break; - case 0x0F: - name = "GPSTrack"; - break; - case 0x10: - name = "GPSImgDirectionRef"; - break; - case 0x11: - name = "GPSImgDirection"; - break; - case 0x12: - name = "GPSMapDatum"; - break; - case 0x13: - name = "GPSDestLatitudeRef"; - break; - case 0x14: - name = "GPSDestLatitude"; - break; - case 0x15: - name = "GPSDestLongitudeRef"; - break; - case 0x16: - name = "GPSDestLongitude"; - break; - case 0x17: - name = "GPSDestBearingRef"; - break; - case 0x18: - name = "GPSDestBearing"; - break; - case 0x19: - name = "GPSDestDistanceRef"; - break; - case 0x1A: - name = "GPSDestDistance"; - break; - case 0x1B: - name = "GPSProcessingMethod"; - break; - case 0x1C: - name = "GPSAreaInformation"; - break; - case 0x1D: - name = "GPSDateStamp"; - break; - case 0x1E: - name = "GPSDifferential"; - break; - }; - } - else - { - switch (tag_id) - { - case 0x000B: - name = "ACDComment"; - break; - case 0x00FE: - name = "NewSubFile"; - break; - case 0x00FF: - name = "SubFile"; - break; - case 0x0100: - name = "ImageWidth"; - break; - case 0x0101: - name = "ImageLength"; - break; - case 0x0102: - name = "BitsPerSample"; - break; - case 0x0103: - name = "Compression"; - break; - case 0x0106: - name = "PhotometricInterpretation"; - break; - case 0x010A: - name = "FillOrder"; - break; - case 0x010D: - name = "DocumentName"; - break; - case 0x010E: - name = "ImageDescription"; - break; - case 0x010F: - name = "Make"; - break; - case 0x0110: - name = "Model"; - break; - case 0x0111: - name = "StripOffsets"; - break; - case 0x0112: - name = "Orientation"; - break; - case 0x0115: - name = "SamplesPerPixel"; - break; - case 0x0116: - name = "RowsPerStrip"; - break; - case 0x0117: - name = "StripByteCounts"; - break; - case 0x0118: - name = "MinSampleValue"; - break; - case 0x0119: - name = "MaxSampleValue"; - break; - case 0x011A: - name = "XResolution"; - break; - case 0x011B: - name = "YResolution"; - break; - case 0x011C: - name = "PlanarConfiguration"; - break; - case 0x011D: - name = "PageName"; - break; - case 0x011E: - name = "XPosition"; - break; - case 0x011F: - name = "YPosition"; - break; - case 0x0120: - name = "FreeOffsets"; - break; - case 0x0121: - name = "FreeByteCounts"; - break; - case 0x0122: - name = "GrayResponseUnit"; - break; - case 0x0123: - name = "GrayResponseCurve"; - break; - case 0x0124: - name = "T4Options"; - break; - case 0x0125: - name = "T6Options"; - break; - case 0x0128: - name = "ResolutionUnit"; - break; - case 0x0129: - name = "PageNumber"; - break; - case 0x012D: - name = "TransferFunction"; - break; - case 0x0131: - name = "Software"; - break; - case 0x0132: - name = "DateTime"; - break; - case 0x013B: - name = "Artist"; - break; - case 0x013C: - name = "HostComputer"; - break; - case 0x013D: - name = "Predictor"; - break; - case 0x013E: - name = "WhitePoint"; - break; - case 0x013F: - name = "PrimaryChromaticities"; - break; - case 0x0140: - name = "ColorMap"; - break; - case 0x0141: - name = "HalfToneHints"; - break; - case 0x0142: - name = "TileWidth"; - break; - case 0x0143: - name = "TileLength"; - break; - case 0x0144: - name = "TileOffsets"; - break; - case 0x0145: - name = "TileByteCounts"; - break; - case 0x014A: - name = "SubIFD"; - break; - case 0x014C: - name = "InkSet"; - break; - case 0x014D: - name = "InkNames"; - break; - case 0x014E: - name = "NumberOfInks"; - break; - case 0x0150: - name = "DotRange"; - break; - case 0x0151: - name = "TargetPrinter"; - break; - case 0x0152: - name = "ExtraSample"; - break; - case 0x0153: - name = "SampleFormat"; - break; - case 0x0154: - name = "SMinSampleValue"; - break; - case 0x0155: - name = "SMaxSampleValue"; - break; - case 0x0156: - name = "TransferRange"; - break; - case 0x0157: - name = "ClipPath"; - break; - case 0x0158: - name = "XClipPathUnits"; - break; - case 0x0159: - name = "YClipPathUnits"; - break; - case 0x015A: - name = "Indexed"; - break; - case 0x015B: - name = "JPEGTables"; - break; - case 0x015F: - name = "OPIProxy"; - break; - case 0x0200: - name = "JPEGProc"; - break; - case 0x0201: - name = "JPEGInterchangeFormat"; - break; - case 0x0202: - name = "JPEGInterchangeFormatLength"; - break; - case 0x0203: - name = "JPEGRestartInterval"; - break; - case 0x0205: - name = "JPEGLosslessPredictors"; - break; - case 0x0206: - name = "JPEGPointTransforms"; - break; - case 0x0207: - name = "JPEGQTables"; - break; - case 0x0208: - name = "JPEGDCTables"; - break; - case 0x0209: - name = "JPEGACTables"; - break; - case 0x0211: - name = "YCbCrCoefficients"; - break; - case 0x0212: - name = "YCbCrSubSampling"; - break; - case 0x0213: - name = "YCbCrPositioning"; - break; - case 0x0214: - name = "ReferenceBlackWhite"; - break; - case 0x02BC: - name = "ExtensibleMetadataPlatform"; - break; - case 0x0301: - name = "Gamma"; - break; - case 0x0302: - name = "ICCProfileDescriptor"; - break; - case 0x0303: - name = "SRGBRenderingIntent"; - break; - case 0x0320: - name = "ImageTitle"; - break; - case 0x5001: - name = "ResolutionXUnit"; - break; - case 0x5002: - name = "ResolutionYUnit"; - break; - case 0x5003: - name = "ResolutionXLengthUnit"; - break; - case 0x5004: - name = "ResolutionYLengthUnit"; - break; - case 0x5005: - name = "PrintFlags"; - break; - case 0x5006: - name = "PrintFlagsVersion"; - break; - case 0x5007: - name = "PrintFlagsCrop"; - break; - case 0x5008: - name = "PrintFlagsBleedWidth"; - break; - case 0x5009: - name = "PrintFlagsBleedWidthScale"; - break; - case 0x500A: - name = "HalftoneLPI"; - break; - case 0x500B: - name = "HalftoneLPIUnit"; - break; - case 0x500C: - name = "HalftoneDegree"; - break; - case 0x500D: - name = "HalftoneShape"; - break; - case 0x500E: - name = "HalftoneMisc"; - break; - case 0x500F: - name = "HalftoneScreen"; - break; - case 0x5010: - name = "JPEGQuality"; - break; - case 0x5011: - name = "GridSize"; - break; - case 0x5012: - name = "ThumbnailFormat"; - break; - case 0x5013: - name = "ThumbnailWidth"; - break; - case 0x5014: - name = "ThumbnailHeight"; - break; - case 0x5015: - name = "ThumbnailColorDepth"; - break; - case 0x5016: - name = "ThumbnailPlanes"; - break; - case 0x5017: - name = "ThumbnailRawBytes"; - break; - case 0x5018: - name = "ThumbnailSize"; - break; - case 0x5019: - name = "ThumbnailCompressedSize"; - break; - case 0x501A: - name = "ColorTransferFunction"; - break; - case 0x501B: - name = "ThumbnailData"; - break; - case 0x5020: - name = "ThumbnailImageWidth"; - break; - case 0x5021: - name = "ThumbnailImageHeight"; - break; - case 0x5022: - name = "ThumbnailBitsPerSample"; - break; - case 0x5023: - name = "ThumbnailCompression"; - break; - case 0x5024: - name = "ThumbnailPhotometricInterp"; - break; - case 0x5025: - name = "ThumbnailImageDescription"; - break; - case 0x5026: - name = "ThumbnailEquipMake"; - break; - case 0x5027: - name = "ThumbnailEquipModel"; - break; - case 0x5028: - name = "ThumbnailStripOffsets"; - break; - case 0x5029: - name = "ThumbnailOrientation"; - break; - case 0x502A: - name = "ThumbnailSamplesPerPixel"; - break; - case 0x502B: - name = "ThumbnailRowsPerStrip"; - break; - case 0x502C: - name = "ThumbnailStripBytesCount"; - break; - case 0x502D: - name = "ThumbnailResolutionX"; - break; - case 0x502E: - name = "ThumbnailResolutionY"; - break; - case 0x502F: - name = "ThumbnailPlanarConfig"; - break; - case 0x5030: - name = "ThumbnailResolutionUnit"; - break; - case 0x5031: - name = "ThumbnailTransferFunction"; - break; - case 0x5032: - name = "ThumbnailSoftwareUsed"; - break; - case 0x5033: - name = "ThumbnailDateTime"; - break; - case 0x5034: - name = "ThumbnailArtist"; - break; - case 0x5035: - name = "ThumbnailWhitePoint"; - break; - case 0x5036: - name = "ThumbnailPrimaryChromaticities"; - break; - case 0x5037: - name = "ThumbnailYCbCrCoefficients"; - break; - case 0x5038: - name = "ThumbnailYCbCrSubsampling"; - break; - case 0x5039: - name = "ThumbnailYCbCrPositioning"; - break; - case 0x503A: - name = "ThumbnailRefBlackWhite"; - break; - case 0x503B: - name = "ThumbnailCopyRight"; - break; - case 0x5090: - name = "LuminanceTable"; - break; - case 0x5091: - name = "ChrominanceTable"; - break; - case 0x5100: - name = "FrameDelay"; - break; - case 0x5101: - name = "LoopCount"; - break; - case 0x5110: - name = "PixelUnit"; - break; - case 0x5111: - name = "PixelPerUnitX"; - break; - case 0x5112: - name = "PixelPerUnitY"; - break; - case 0x5113: - name = "PaletteHistogram"; - break; - case 0x1000: - name = "RelatedImageFileFormat"; - break; - case 0x800D: - name = "ImageID"; - break; - case 0x80E3: - name = "Matteing"; - break; - case 0x80E4: - name = "DataType"; - break; - case 0x80E5: - name = "ImageDepth"; - break; - case 0x80E6: - name = "TileDepth"; - break; - case 0x828D: - name = "CFARepeatPatternDim"; - break; - case 0x828E: - name = "CFAPattern"; - break; - case 0x828F: - name = "BatteryLevel"; - break; - case 0x8298: - name = "Copyright"; - break; - case 0x829A: - name = "ExposureTime"; - break; - case 0x829D: - name = "FNumber"; - break; - case 0x83BB: - name = "IPTC/NAA"; - break; - case 0x84E3: - name = "IT8RasterPadding"; - break; - case 0x84E5: - name = "IT8ColorTable"; - break; - case 0x8649: - name = "ImageResourceInformation"; - break; - case 0x8769: - name = "Exif IFD Pointer"; - break; - case 0x8773: - name = "ICC_Profile"; - break; - case 0x8822: - name = "ExposureProgram"; - break; - case 0x8824: - name = "SpectralSensitivity"; - break; - case 0x8825: - name = "GPSInfo IFD Pointer"; - break; - case 0x8827: - name = "ISOSpeedRatings"; - break; - case 0x8828: - name = "OECF"; - break; - case 0x9000: - name = "ExifVersion"; - break; - case 0x9003: - name = "DateTimeOriginal"; - break; - case 0x9004: - name = "DateTimeDigitized"; - break; - case 0x9101: - name = "ComponentsConfiguration"; - break; - case 0x9102: - name = "CompressedBitsPerPixel"; - break; - case 0x9201: - name = "ShutterSpeedValue"; - break; - case 0x9202: - name = "ApertureValue"; - break; - case 0x9203: - name = "BrightnessValue"; - break; - case 0x9204: - name = "ExposureBiasValue"; - break; - case 0x9205: - name = "MaxApertureValue"; - break; - case 0x9206: - name = "SubjectDistance"; - break; - case 0x9207: - name = "MeteringMode"; - break; - case 0x9208: - name = "LightSource"; - break; - case 0x9209: - name = "Flash"; - break; - case 0x920A: - name = "FocalLength"; - break; - case 0x920B: - case 0xA20B: - name = "FlashEnergy"; - break; - case 0x920C: - case 0xA20C: - name = "SpatialFrequencyResponse"; - break; - case 0x920D: - name = "Noise"; - break; - case 0x920E: - case 0xA20E: - name = "FocalPlaneXResolution"; - break; - case 0x920F: - case 0XA20F: - name = "FocalPlaneYResolution"; - break; - case 0x9210: - case 0xA210: - name = "FocalPlaneResolutionUnit"; - break; - case 0x9211: - name = "ImageNumber"; - break; - case 0x9212: - name = "SecurityClassification"; - break; - case 0x9213: - name = "ImageHistory"; - break; - case 0x9214: - case 0xA214: - name = "SubjectLocation"; - break; - case 0x9215: - case 0xA215: - name = "ExposureIndex"; - break; - case 0x9216: - name = "TIFF/EPStandardID"; - break; - case 0x9217: - case 0xA217: - name = "SensingMethod"; - break; - case 0x923F: - name = "StoNits"; - break; - case 0x927C: - name = "MakerNote"; - break; - case 0x9286: - name = "UserComment"; - break; - case 0x9290: - name = "SubSecTime"; - break; - case 0x9291: - name = "SubSecTimeOriginal"; - break; - case 0x9292: - name = "SubSecTimeDigitized"; - break; - case 0xA000: - name = "FlashpixVersion"; - break; - case 0xA001: - name = "ColorSpace"; - break; - case 0xA002: - name = "ExifImageWidth"; - break; - case 0xA003: - name = "ExifImageLength"; - break; - case 0xA004: - name = "RelatedSoundFile"; - break; - case 0xA005: - name = "Interoperability IFD Pointer"; - break; - case 0xA20D: - name = "Noise"; - break; - case 0xA211: - name = "ImageNumber"; - break; - case 0xA212: - name = "SecurityClassification"; - break; - case 0xA213: - name = "ImageHistory"; - break; - case 0xA216: - name = "TIFF/EPStandardID"; - break; - case 0xA300: - name = "FileSource"; - break; - case 0xA301: - name = "SceneType"; - break; - case 0xA302: - name = "CFAPattern"; - break; - case 0xA401: - name = "CustomRendered"; - break; - case 0xA402: - name = "ExposureMode"; - break; - case 0xA403: - name = "WhiteBalance"; - break; - case 0xA404: - name = "DigitalZoomRatio"; - break; - case 0xA405: - name = "FocalLengthIn35mmFilm"; - break; - case 0xA406: - name = "SceneCaptureType"; - break; - case 0xA407: - name = "GainControl"; - break; - case 0xA408: - name = "Contrast"; - break; - case 0xA409: - name = "Saturation"; - break; - case 0xA40A: - name = "Sharpness"; - break; - case 0xA40B: - name = "DeviceSettingDescription"; - break; - case 0xA40C: - name = "SubjectDistanceRange"; - break; - case 0xA420: - name = "ImageUniqueID"; - break; - }; - } - l = strlen (name); - if (len > l) - strcpy (str, name); - else - { - memset (str, '\0', len); - memcpy (str, name, len - 1); - } -} - -static unsigned short -exifImportU16 (const unsigned char *p, int little_endian, - int little_endian_arch) -{ -/* fetches an unsigned 16bit int from BLOB respecting declared endiannes */ - union cvt - { - unsigned char byte[2]; - unsigned short short_value; - } convert; - if (little_endian_arch) - { - /* Litte-Endian architecture [e.g. x86] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 1); - convert.byte[1] = *(p + 0); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - } - } - else - { - /* Big Endian architecture [e.g. PPC] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 1); - convert.byte[1] = *(p + 0); - } - } - return convert.short_value; -} - -static unsigned int -exifImportU32 (const unsigned char *p, int little_endian, - int little_endian_arch) -{ -/* fetches an unsigned 32bit int from BLOB respecting declared endiannes */ - union cvt - { - unsigned char byte[4]; - unsigned int int_value; - } convert; - if (little_endian_arch) - { - /* Litte-Endian architecture [e.g. x86] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 3); - convert.byte[1] = *(p + 2); - convert.byte[2] = *(p + 1); - convert.byte[3] = *(p + 0); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - convert.byte[2] = *(p + 2); - convert.byte[3] = *(p + 3); - } - } - else - { - /* Big Endian architecture [e.g. PPC] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - convert.byte[2] = *(p + 2); - convert.byte[3] = *(p + 3); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 3); - convert.byte[1] = *(p + 2); - convert.byte[2] = *(p + 1); - convert.byte[3] = *(p + 0); - } - } - return convert.int_value; -} - -static float -exifImportFloat32 (const unsigned char *p, int little_endian, - int little_endian_arch) -{ -/* fetches a 32bit FLOAT from BLOB respecting declared endiannes */ - union cvt - { - unsigned char byte[4]; - float float_value; - } convert; - if (little_endian_arch) - { - /* Litte-Endian architecture [e.g. x86] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 3); - convert.byte[1] = *(p + 2); - convert.byte[2] = *(p + 1); - convert.byte[3] = *(p + 0); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - convert.byte[2] = *(p + 2); - convert.byte[3] = *(p + 3); - } - } - else - { - /* Big Endian architecture [e.g. PPC] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - convert.byte[2] = *(p + 2); - convert.byte[3] = *(p + 3); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 3); - convert.byte[1] = *(p + 2); - convert.byte[2] = *(p + 1); - convert.byte[3] = *(p + 0); - } - } - return convert.float_value; -} - -static void -exifSetTagValue (gaiaExifTagPtr tag, const unsigned char *blob, int endian_mode, - int endian_arch, int app1_offset) -{ -/* setting the TAG value */ - int i; - int sz = 0; - unsigned int offset; - const unsigned char *ptr; - unsigned short short_value; - unsigned int int_value; - short sign_short_value; - int sign_int_value; - float float_value; - double double_value; - if (tag->Type == 1 || tag->Type == 2 || tag->Type == 6 || tag->Type == 7) - sz = tag->Count; - if (tag->Type == 3 || tag->Type == 8) - sz = tag->Count * 2; - if (tag->Type == 4 || tag->Type == 9 || tag->Type == 11) - sz = tag->Count * 4; - if (tag->Type == 5 || tag->Type == 10 || tag->Type == 12) - sz = tag->Count * 8; - if (sz <= 4) - { - /* TAG values is stored within the offset */ - ptr = tag->TagOffset; - } - else - { - /* jumping to offset */ - offset = exifImportU32 (tag->TagOffset, endian_mode, endian_arch); - offset += app1_offset + 10; - ptr = blob + offset; - } - if (tag->Type == 1 || tag->Type == 6 || tag->Type == 7) - { - /* BYTE type */ - tag->ByteValue = malloc (tag->Count); - memcpy (tag->ByteValue, ptr, tag->Count); - } - if (tag->Type == 2) - { - /* STRING type */ - tag->StringValue = malloc (tag->Count); - memcpy (tag->StringValue, ptr, tag->Count); - } - if (tag->Type == 3) - { - /* SHORT type */ - tag->ShortValues = malloc (tag->Count * sizeof (unsigned short)); - for (i = 0; i < tag->Count; i++) - { - short_value = - exifImportU16 (ptr + (i * 2), endian_mode, endian_arch); - *(tag->ShortValues + i) = short_value; - } - } - if (tag->Type == 4) - { - /* LONG type */ - tag->LongValues = malloc (tag->Count * sizeof (unsigned int)); - for (i = 0; i < tag->Count; i++) - { - int_value = - exifImportU32 (ptr + (i * 4), endian_mode, endian_arch); - *(tag->LongValues + i) = int_value; - } - } - if (tag->Type == 5) - { - /* RATIONAL type */ - tag->LongRationals1 = malloc (tag->Count * sizeof (unsigned int)); - tag->LongRationals2 = malloc (tag->Count * sizeof (unsigned int)); - for (i = 0; i < tag->Count; i++) - { - int_value = - exifImportU32 (ptr + (i * 8), endian_mode, endian_arch); - *(tag->LongRationals1 + i) = int_value; - int_value = - exifImportU32 (ptr + (i * 8) + 4, endian_mode, endian_arch); - *(tag->LongRationals2 + i) = int_value; - } - } - if (tag->Type == 8) - { - /* SSHORT type */ - tag->SignedShortValues = malloc (tag->Count * sizeof (short)); - for (i = 0; i < tag->Count; i++) - { - sign_short_value = - gaiaImport16 (ptr + (i * 2), endian_mode, endian_arch); - *(tag->SignedShortValues + i) = sign_short_value; - } - } - if (tag->Type == 9) - { - /* SIGNED LONG type */ - tag->SignedLongValues = malloc (tag->Count * sizeof (int)); - for (i = 0; i < tag->Count; i++) - { - sign_int_value = - gaiaImport32 (ptr + (i * 4), endian_mode, endian_arch); - *(tag->SignedLongValues + i) = sign_int_value; - } - } - if (tag->Type == 10) - { - /* SIGNED RATIONAL type */ - tag->SignedLongRationals1 = malloc (tag->Count * sizeof (int)); - tag->SignedLongRationals2 = malloc (tag->Count * sizeof (int)); - for (i = 0; i < tag->Count; i++) - { - sign_int_value = - gaiaImport32 (ptr + (i * 8), endian_mode, endian_arch); - *(tag->SignedLongRationals1 + i) = sign_int_value; - sign_int_value = - gaiaImport32 (ptr + (i * 8) + 4, endian_mode, endian_arch); - *(tag->SignedLongRationals2 + i) = sign_int_value; - } - } - if (tag->Type == 11) - { - /* FLOAT type */ - tag->FloatValues = malloc (tag->Count * sizeof (float)); - for (i = 0; i < tag->Count; i++) - { - float_value = - exifImportFloat32 (ptr + (i * 4), endian_mode, endian_arch); - *(tag->FloatValues + i) = float_value; - } - } - if (tag->Type == 12) - { - /* DOUBLE type */ - tag->DoubleValues = malloc (tag->Count * sizeof (double)); - for (i = 0; i < tag->Count; i++) - { - double_value = - gaiaImport64 (ptr + (i * 8), endian_mode, endian_arch); - *(tag->DoubleValues + i) = double_value; - } - } -} - -static void -exifParseTag (const unsigned char *blob, unsigned int offset, int endian_mode, - int endian_arch, gaiaExifTagListPtr list, int gps, - int app1_offset) -{ -/* parsing some TAG and inserting into the list */ - unsigned short tag_id; - unsigned short type; - unsigned int count; - gaiaExifTagPtr tag; - tag_id = exifImportU16 (blob + offset, endian_mode, endian_arch); - type = exifImportU16 (blob + offset + 2, endian_mode, endian_arch); - count = exifImportU32 (blob + offset + 4, endian_mode, endian_arch); - tag = malloc (sizeof (gaiaExifTag)); - tag->Gps = (char) gps; - tag->TagId = tag_id; - tag->Type = type; - tag->Count = (unsigned short) count; - memcpy (tag->TagOffset, blob + offset + 8, 4); - tag->ByteValue = NULL; - tag->StringValue = NULL; - tag->ShortValues = NULL; - tag->LongValues = NULL; - tag->LongRationals1 = NULL; - tag->LongRationals2 = NULL; - tag->SignedShortValues = NULL; - tag->SignedLongValues = NULL; - tag->SignedLongRationals1 = NULL; - tag->SignedLongRationals2 = NULL; - tag->FloatValues = NULL; - tag->DoubleValues = NULL; - exifSetTagValue (tag, blob, endian_mode, endian_arch, app1_offset); - tag->Next = NULL; - if (!(list->First)) - list->First = tag; - if (list->Last) - (list->Last)->Next = tag; - list->Last = tag; - (list->NumTags)++; -} - -static void -exifExpandIFD (gaiaExifTagListPtr list, const unsigned char *blob, - int endian_mode, int endian_arch, int app1_offset) -{ -/* trying to expand the EXIF-IFD */ - unsigned int offset; - unsigned short items; - unsigned short i; - gaiaExifTagPtr tag; - if (!list) - return; - tag = list->First; - while (tag) - { - if (tag->TagId == 34665) - { - /* ok, this one is an IFD pointer */ - offset = - exifImportU32 (tag->TagOffset, endian_mode, endian_arch); - offset += app1_offset + 10; - items = exifImportU16 (blob + offset, endian_mode, endian_arch); - offset += 2; - for (i = 0; i < items; i++) - { - /* fetching the TAGs */ - exifParseTag (blob, offset, endian_mode, endian_arch, - list, 0, app1_offset); - offset += 12; - } - } - tag = tag->Next; - } -} - -static void -exifExpandGPS (gaiaExifTagListPtr list, const unsigned char *blob, - int endian_mode, int endian_arch, int app1_offset) -{ -/* trying to expand the EXIF-GPS */ - unsigned int offset; - unsigned short items; - unsigned short i; - gaiaExifTagPtr tag; - if (!list) - return; - tag = list->First; - while (tag) - { - if (tag->TagId == 34853) - { - /* ok, this one is a GPSinfo-IFD pointer */ - offset = - exifImportU32 (tag->TagOffset, endian_mode, endian_arch); - offset += app1_offset + 10; - items = exifImportU16 (blob + offset, endian_mode, endian_arch); - offset += 2; - for (i = 0; i < items; i++) - { - /* fetching the TAGs */ - exifParseTag (blob, offset, endian_mode, endian_arch, - list, 1, app1_offset); - offset += 12; - } - } - tag = tag->Next; - } -} - -GAIAEXIF_DECLARE gaiaExifTagListPtr -gaiaGetExifTags (const unsigned char *blob, int size) -{ -/* trying to parse a BLOB as an EXIF photo */ - gaiaExifTagListPtr list; - int endian_arch = gaiaEndianArch (); - int endian_mode; - unsigned short app1_size; - unsigned int offset; - unsigned short items; - unsigned short i; - int x; - int app1_offset; - int app1_marker = 0; - gaiaExifTagPtr pT; - if (!blob) - goto error; - if (size < 14) - goto error; -/* cecking for SOI [Start Of Image] */ - if (*(blob + 0) == 0xff && *(blob + 1) == 0xd8) - ; - else - goto error; - app1_offset = 2; - for (x = 2; x < size; x++) - { - /* retrieving the APP1 Marker */ - if (*(blob + x) == 0xff) - app1_marker = 1; - if (*(blob + x) == 0xe1) - { - if (app1_marker) - { - app1_offset = x - 1; - break; - } - else - app1_marker = 0; - } - } -/* checking for APP1 Marker */ - if (*(blob + app1_offset) == 0xff && *(blob + app1_offset + 1) == 0xe1) - ; - else - goto error; -/* checking for EXIF identifier */ - if (memcmp (blob + app1_offset + 4, "Exif", 4) == 0) - ; - else - goto error; -/* checking for Pad */ - if (*(blob + app1_offset + 8) == 0x00 && *(blob + app1_offset + 9) == 0x00) - ; - else - goto error; - if (memcmp (blob + app1_offset + 10, "II", 2) == 0) - endian_mode = GAIA_LITTLE_ENDIAN; - else if (memcmp (blob + app1_offset + 10, "MM", 2) == 0) - endian_mode = GAIA_BIG_ENDIAN; - else - goto error; -/* OK: this BLOB seems to contain a valid EXIF */ - app1_size = - exifImportU16 (blob + app1_offset + 2, endian_mode, endian_arch); - if ((app1_size + app1_offset + 4) > size) - goto error; -/* checking for marker */ - if (endian_mode == GAIA_BIG_ENDIAN) - { - if (*(blob + app1_offset + 12) == 0x00 - && *(blob + app1_offset + 13) == 0x2a) - ; - else - goto error; - } - else - { - if (*(blob + app1_offset + 12) == 0x2a - && *(blob + app1_offset + 13) == 0x00) - ; - else - goto error; - } -/* allocating an EXIF TAG LIST */ - list = malloc (sizeof (gaiaExifTagList)); - list->First = NULL; - list->Last = NULL; - list->NumTags = 0; - list->TagsArray = NULL; - offset = exifImportU32 (blob + app1_offset + 14, endian_mode, endian_arch); - offset += app1_offset + 10; -/* jump to offset */ - items = exifImportU16 (blob + offset, endian_mode, endian_arch); - offset += 2; - for (i = 0; i < items; i++) - { -/* fetching the EXIF TAGs */ - exifParseTag (blob, offset, endian_mode, endian_arch, list, 0, - app1_offset); - offset += 12; - } -/* expanding the IFD and GPS tags */ - exifExpandIFD (list, blob, endian_mode, endian_arch, app1_offset); - exifExpandGPS (list, blob, endian_mode, endian_arch, app1_offset); - if (list->NumTags) - { - /* organizing the EXIF TAGS as an Array */ - list->TagsArray = malloc (sizeof (gaiaExifTagPtr) * list->NumTags); - pT = list->First; - i = 0; - while (pT) - { - *(list->TagsArray + i++) = pT; - pT = pT->Next; - } - } - return list; - error: - return NULL; -} - -GAIAEXIF_DECLARE void -gaiaExifTagsFree (gaiaExifTagListPtr p) -{ -/* memory cleanup; freeing the EXIF TAG list */ - gaiaExifTagPtr pT; - gaiaExifTagPtr pTn; - if (!p) - return; - pT = p->First; - while (pT) - { - pTn = pT->Next; - if (pT->ByteValue) - free (pT->ByteValue); - if (pT->StringValue) - free (pT->StringValue); - if (pT->ShortValues) - free (pT->ShortValues); - if (pT->LongValues) - free (pT->LongValues); - if (pT->LongRationals1) - free (pT->LongRationals1); - if (pT->LongRationals2) - free (pT->LongRationals2); - if (pT->SignedShortValues) - free (pT->SignedShortValues); - if (pT->SignedLongValues) - free (pT->SignedLongValues); - if (pT->SignedLongRationals1) - free (pT->SignedLongRationals1); - if (pT->SignedLongRationals2) - free (pT->SignedLongRationals2); - if (pT->FloatValues) - free (pT->FloatValues); - if (pT->DoubleValues) - free (pT->DoubleValues); - free (pT); - pT = pTn; - } - if (p->TagsArray) - free (p->TagsArray); - free (p); -} - -GAIAEXIF_DECLARE int -gaiaGetExifTagsCount (gaiaExifTagListPtr tag_list) -{ -/* returns the # TAGSs into this list */ - return tag_list->NumTags; -} - -GAIAEXIF_DECLARE gaiaExifTagPtr -gaiaGetExifTagByPos (gaiaExifTagListPtr tag_list, const int pos) -{ -/* returns the Nth TAG from this list */ - if (pos >= 0 && pos < tag_list->NumTags) - return *(tag_list->TagsArray + pos); - return NULL; -} - -GAIAEXIF_DECLARE gaiaExifTagPtr -gaiaGetExifTagById (const gaiaExifTagListPtr tag_list, - const unsigned short tag_id) -{ -/* returns a not-GPS TAG identified by its ID */ - gaiaExifTagPtr pT = tag_list->First; - while (pT) - { - if (!(pT->Gps) && pT->TagId == tag_id) - return pT; - pT = pT->Next; - } - return NULL; -} - -GAIAEXIF_DECLARE gaiaExifTagPtr -gaiaGetExifGpsTagById (const gaiaExifTagListPtr tag_list, - const unsigned short tag_id) -{ -/* returns a GPS TAG identified by its ID */ - gaiaExifTagPtr pT = tag_list->First; - while (pT) - { - if (pT->Gps && pT->TagId == tag_id) - return pT; - pT = pT->Next; - } - return NULL; -} - -GAIAEXIF_DECLARE gaiaExifTagPtr -gaiaGetExifTagByName (const gaiaExifTagListPtr tag_list, const char *tag_name) -{ -/* returns a TAG identified by its Name */ - char name[128]; - gaiaExifTagPtr pT = tag_list->First; - while (pT) - { - exifTagName (pT->Gps, pT->TagId, name, 128); - if (strcasecmp (name, tag_name) == 0) - return pT; - pT = pT->Next; - } - return NULL; -} - -GAIAEXIF_DECLARE unsigned short -gaiaExifTagGetId (const gaiaExifTagPtr tag) -{ -/* returns the TAG ID */ - return tag->TagId; -} - -GAIAEXIF_DECLARE int -gaiaIsExifGpsTag (const gaiaExifTagPtr tag) -{ -/* checks if this one is a GPS tag */ - return tag->Gps; -} - -GAIAEXIF_DECLARE void -gaiaExifTagGetName (const gaiaExifTagPtr tag, char *str, int len) -{ -/* returns the TAG symbolic Name */ - exifTagName (tag->Gps, tag->TagId, str, len); -} - -GAIAEXIF_DECLARE unsigned short -gaiaExifTagGetValueType (const gaiaExifTagPtr tag) -{ -/* returns the TAG value Type */ - return tag->Type; -} - -GAIAEXIF_DECLARE unsigned short -gaiaExifTagGetNumValues (const gaiaExifTagPtr tag) -{ -/* returns the # TAG Values */ - return tag->Count; -} - -GAIAEXIF_DECLARE unsigned char -gaiaExifTagGetByteValue (const gaiaExifTagPtr tag, const int ind, int *ok) -{ -/* returns the Nth Byte value */ - if (ind >= 0 - && ind < - tag->Count && (tag->Type == 1 || tag->Type == 6 || tag->Type == 7)) - { - *ok = 1; - return *(tag->ByteValue + ind); - } - *ok = 0; - return 0; -} - -GAIAEXIF_DECLARE void -gaiaExifTagGetStringValue (const gaiaExifTagPtr tag, char *str, int len, - int *ok) -{ -/* returns the String value */ - int l; - if (tag->Type == 2) - { - *ok = 1; - l = strlen (tag->StringValue); - if (len > l) - strcpy (str, tag->StringValue); - else - { - memset (str, '\0', len); - memcpy (str, tag->StringValue, len - 1); - } - return; - } - *ok = 0; -} - -GAIAEXIF_DECLARE unsigned short -gaiaExifTagGetShortValue (const gaiaExifTagPtr tag, const int ind, int *ok) -{ -/* returns the Nth Short value */ - if (ind >= 0 && ind < tag->Count && tag->Type == 3) - { - *ok = 1; - return *(tag->ShortValues + ind); - } - *ok = 0; - return 0; -} - -GAIAEXIF_DECLARE unsigned int -gaiaExifTagGetLongValue (const gaiaExifTagPtr tag, const int ind, int *ok) -{ -/* returns the Nth Long value */ - if (ind >= 0 && ind < tag->Count && tag->Type == 4) - { - *ok = 1; - return *(tag->LongValues + ind); - } - *ok = 0; - return 0; -} - -GAIAEXIF_DECLARE unsigned int -gaiaExifTagGetRational1Value (const gaiaExifTagPtr tag, const int ind, int *ok) -{ -/* returns the Nth Rational (1) value */ - if (ind >= 0 && ind < tag->Count && tag->Type == 5) - { - *ok = 1; - return *(tag->LongRationals1 + ind); - } - *ok = 0; - return 0; -} - -GAIAEXIF_DECLARE unsigned int -gaiaExifTagGetRational2Value (const gaiaExifTagPtr tag, const int ind, int *ok) -{ -/* returns the Nth Rational (2) value */ - if (ind >= 0 && ind < tag->Count && tag->Type == 5) - { - *ok = 1; - return *(tag->LongRationals2 + ind); - } - *ok = 0; - return 0; -} - -GAIAEXIF_DECLARE double -gaiaExifTagGetRationalValue (const gaiaExifTagPtr tag, const int ind, int *ok) -{ -/* returns the Nth Rational value as Double */ - double x; - if (ind >= 0 - && ind < tag->Count && tag->Type == 5 && *(tag->LongRationals2 + ind)) - { - *ok = 1; - x = (double) (*(tag->LongRationals1 + ind)) / - (double) (*(tag->LongRationals2 + ind)); - return x; - } - *ok = 0; - return 0; -} - -GAIAEXIF_DECLARE short -gaiaExifTagGetSignedShortValue (const gaiaExifTagPtr tag, const int ind, - int *ok) -{ -/* returns the Nth Signed Short value */ - if (ind >= 0 && ind < tag->Count && tag->Type == 8) - { - *ok = 1; - return *(tag->SignedShortValues + ind); - } - *ok = 0; - return 0; -} - -GAIAEXIF_DECLARE int -gaiaExifTagGetSignedLongValue (const gaiaExifTagPtr tag, const int ind, int *ok) -{ -/* returns the Nth Signed Long value */ - if (ind >= 0 && ind < tag->Count && tag->Type == 9) - { - *ok = 1; - return *(tag->SignedLongValues + ind); - } - *ok = 0; - return 0; -} - -GAIAEXIF_DECLARE int -gaiaExifTagGetSignedRational1Value (const gaiaExifTagPtr tag, const int ind, - int *ok) -{ -/* returns the Nth Signed Rational (1) value */ - if (ind >= 0 && ind < tag->Count && tag->Type == 10) - { - *ok = 1; - return *(tag->SignedLongRationals1 + ind); - } - *ok = 0; - return 0; -} - -GAIAEXIF_DECLARE int -gaiaExifTagGetSignedRational2Value (const gaiaExifTagPtr tag, const int ind, - int *ok) -{ -/* returns the Nth Signed Rational (2) value */ - if (ind >= 0 && ind < tag->Count && tag->Type == 10) - { - *ok = 1; - return *(tag->SignedLongRationals2 + ind); - } - *ok = 0; - return 0; -} - -GAIAEXIF_DECLARE double -gaiaExifTagGetSignedRationalValue (const gaiaExifTagPtr tag, const int ind, - int *ok) -{ -/* returns the Nth Signed Rational value as Double */ - double x; - if (ind >= 0 - && ind < - tag->Count && tag->Type == 10 && *(tag->SignedLongRationals2 + ind)) - { - *ok = 1; - x = (double) (*(tag->SignedLongRationals1 + ind)) / - (double) (*(tag->SignedLongRationals2 + ind)); - return x; - } - *ok = 0; - return 0; -} - -GAIAEXIF_DECLARE float -gaiaExifTagGetFloatValue (const gaiaExifTagPtr tag, const int ind, int *ok) -{ -/* returns the Nth Float value */ - if (ind >= 0 && ind < tag->Count && tag->Type == 11) - { - *ok = 1; - return *(tag->FloatValues + ind); - } - *ok = 0; - return 0; -} - -GAIAEXIF_DECLARE double -gaiaExifTagGetDoubleValue (const gaiaExifTagPtr tag, const int ind, int *ok) -{ -/* returns the Nth Double value */ - if (ind >= 0 && ind < tag->Count && tag->Type == 12) - { - *ok = 1; - return *(tag->DoubleValues + ind); - } - *ok = 0; - return 0; -} - -GAIAEXIF_DECLARE void -gaiaExifTagGetHumanReadable (const gaiaExifTagPtr tag, char *str, int len, - int *ok) -{ -/* returns the Human Readable value */ - char *human = ""; - char dummy[1024]; - int l; - int xok; - double dblval; - switch (tag->TagId) - { - case 0x0128: /* ResolutionUnit */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 2: - human = "Inches"; - break; - case 3: - human = "Centimeters"; - break; - }; - } - break; - case 0x8822: /* ExposureProgram */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 0: - human = "Not defined"; - break; - case 1: - human = "Manual"; - break; - case 2: - human = "Normal program"; - break; - case 3: - human = "Aperture priority"; - break; - case 4: - human = "Shutter priority"; - break; - case 5: - human = "Creative program (biased toward depth of field)"; - break; - case 6: - human = - "Action program (biased toward fast shutter speed)"; - break; - case 7: - human = - "Portrait mode (for closeup photos with the background out of focus)"; - break; - case 8: - human = - "Landscape mode (for landscape photos with the background in focus)"; - break; - }; - } - break; - case 0xA402: /* ExposureMode */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 0: - human = "Auto exposure"; - break; - case 1: - human = "Manual exposure"; - break; - case 2: - human = "Auto bracket"; - break; - }; - } - break; - case 0x0112: /* Orientation */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 1: - human = "Normal"; - break; - case 2: - human = "Mirrored"; - break; - case 3: - human = "Upsidedown"; - break; - case 4: - human = "Upsidedown Mirrored"; - break; - case 5: - human = "90 deg Clockwise Mirrored"; - break; - case 6: - human = "90 deg Counterclocwise"; - break; - case 7: - human = "90 deg Counterclocwise Mirrored"; - break; - case 8: - human = "90 deg Mirrored"; - break; - }; - } - break; - case 0x9207: /* MeteringMode */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 1: - human = "Average"; - break; - case 2: - human = "Center Weighted Average"; - break; - case 3: - human = "Spot"; - break; - case 4: - human = "MultiSpot"; - break; - case 5: - human = "MultiSegment"; - break; - case 6: - human = "Partial"; - break; - case 255: - human = "Other"; - break; - }; - } - break; - case 0xA403: /* WhiteBalance */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 0: - human = "Auto"; - break; - case 1: - human = "Sunny"; - break; - case 2: - human = "Cloudy"; - break; - case 3: - human = "Tungsten"; - break; - case 4: - human = "Fluorescent"; - break; - case 5: - human = "Flash"; - break; - case 6: - human = "Custom"; - break; - case 129: - human = "Manual"; - break; - }; - } - break; - case 0x9209: /* Flash */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 0: - case 16: - case 24: - case 32: - human = "No Flash"; - break; - case 1: - human = "Flash"; - break; - case 5: - human = "Flash, strobe return light not detected"; - break; - case 7: - human = "Flash, strobe return light detected"; - break; - case 9: - human = "Compulsory Flash"; - break; - case 13: - human = "Compulsory Flash, Return light not detected"; - break; - case 15: - human = "Compulsory Flash, Return light detected"; - break; - case 25: - human = "Flash, Auto-Mode"; - break; - case 29: - human = "Flash, Auto-Mode, Return light not detected"; - break; - case 31: - human = "Flash, Auto-Mode, Return light detected"; - break; - case 65: - human = "Red Eye"; - break; - case 69: - human = "Red Eye, Return light not detected"; - break; - case 71: - human = "Red Eye, Return light detected"; - break; - case 73: - human = "Red Eye, Compulsory Flash"; - break; - case 77: - human = - "Red Eye, Compulsory Flash, Return light not detected"; - break; - case 79: - human = - "Red Eye, Compulsory Flash, Return light detected"; - break; - case 89: - human = "Red Eye, Auto-Mode"; - break; - case 93: - human = "Red Eye, Auto-Mode, Return light not detected"; - break; - case 95: - human = "Red Eye, Auto-Mode, Return light detected"; - break; - }; - } - break; - case 0xA217: /* SensingMethod */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 1: - human = "Not defined"; - break; - case 2: - human = "One Chip Color Area Sensor"; - break; - case 3: - human = "Two Chip Color Area Sensor"; - break; - case 4: - human = "Three Chip Color Area Sensor"; - break; - case 5: - human = "Color Sequential Area Sensor"; - break; - case 7: - human = "Trilinear Sensor"; - break; - case 8: - human = "Color Sequential Linear Sensor"; - break; - }; - } - break; - case 0xA406: /* SceneCaptureType */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 0: - human = "Standard"; - break; - case 1: - human = "Landscape"; - break; - case 2: - human = "Portrait"; - break; - case 3: - human = "Night scene"; - break; - }; - } - break; - case 0xA407: /* GainControl */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 0: - human = "None"; - break; - case 1: - human = "Low gain up"; - break; - case 2: - human = "High gain up"; - break; - case 3: - human = "Low gain down"; - break; - case 4: - human = "High gain down"; - break; - }; - } - break; - case 0xA408: /* Contrast */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 0: - human = "Normal"; - break; - case 1: - human = "Soft"; - break; - case 2: - human = "Hard"; - break; - }; - } - break; - case 0xA409: /* Saturation */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 0: - human = "Normal"; - break; - case 1: - human = "Low saturation"; - break; - case 2: - human = "High saturation"; - break; - }; - } - break; - case 0xA40A: /* Sharpness */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 0: - human = "Normal"; - break; - case 1: - human = "Soft"; - break; - case 2: - human = "Hard"; - break; - }; - } - break; - case 0xA40C: /* SubjectDistanceRange */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 0: - human = "Unknown"; - break; - case 1: - human = "Macro"; - break; - case 2: - human = "Close view"; - break; - case 3: - human = "Distant view"; - break; - }; - } - break; - case 0x9208: /* LightSource */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 0: - human = "Unknown"; - break; - case 1: - human = "Daylight"; - break; - case 2: - human = "Fluorescent"; - break; - case 3: - human = "Tungsten (incandescent light)"; - break; - case 4: - human = "Flash"; - break; - case 9: - human = "Fine weather"; - break; - case 10: - human = "Cloudy weather"; - break; - case 11: - human = "Shade"; - case 12: - human = "Daylight fluorescent (D 5700 - 7100K)"; - break; - case 13: - human = "Day white fluorescent (N 4600 - 5400K)"; - break; - case 14: - human = "Cool white fluorescent (W 3900 - 4500K)"; - case 15: - human = "White fluorescent (WW 3200 - 3700K)"; - break; - case 17: - human = "Standard light A"; - break; - case 18: - human = "Standard light B"; - break; - case 19: - human = "Standard light C"; - break; - case 20: - human = "D55"; - break; - case 21: - human = "D65"; - break; - case 22: - human = "D75"; - break; - case 23: - human = "D50"; - break; - case 24: - human = "ISO studio tungsten"; - break; - case 255: - human = "other light source"; - break; - }; - } - break; - case 0xA001: /* ColorSpace */ - if (tag->Type == 3 && tag->Count == 1) - { - switch (*(tag->ShortValues + 0)) - { - case 1: - human = "sRGB"; - break; - case 0xffff: - human = "Uncalibrated"; - break; - }; - } - break; - case 0x8827: /* ISOSpeedRatings */ - if (tag->Type == 3 && tag->Count == 1) - { - sprintf (dummy, "%u ISO", *(tag->ShortValues + 0)); - human = dummy; - } - break; - case 0xA002: /* ExifImageWidth */ - case 0xA003: /* ExifImageLength */ - if (tag->Type == 3 && tag->Count == 1) - { - sprintf (dummy, "%u pixels", *(tag->ShortValues + 0)); - human = dummy; - } - else if (tag->Type == 4 && tag->Count == 1) - { - sprintf (dummy, "%u pixels", *(tag->LongValues + 0)); - human = dummy; - } - break; - case 0x829A: /* ExposureTime */ - if (tag->Type == 5 && tag->Count == 1) - { - dblval = gaiaExifTagGetRationalValue (tag, 0, &xok); - if (xok) - { - if (dblval < 1.0) - { - dblval = 1.0 / dblval; - sprintf (dummy, "1/%1.0f sec", dblval); - human = dummy; - } - else - { - sprintf (dummy, "%1.0f sec", dblval); - human = dummy; - } - } - } - break; - case 0x9201: /* ShutterSpeedValue */ - if (tag->Type == 10 && tag->Count == 1) - { - dblval = gaiaExifTagGetSignedRationalValue (tag, 0, &xok); - if (xok) - { - dblval = exp (dblval * log (2)); - if (dblval > 1.0) - dblval = floor (dblval); - if (dblval < 1.0) - { - dblval = math_round (1.0 / dblval); - sprintf (dummy, "%1.0f sec", dblval); - human = dummy; - } - else - { - sprintf (dummy, "1/%1.0f sec", dblval); - human = dummy; - } - } - } - break; - case 0x829D: /* FNumber */ - if (tag->Type == 5 && tag->Count == 1) - { - dblval = gaiaExifTagGetRationalValue (tag, 0, &xok); - if (xok) - { - sprintf (dummy, "F %1.1f", dblval); - human = dummy; - } - } - break; - case 0x9202: /* ApertureValue */ - case 0x9205: /* MaxApertureValue */ - if (tag->Type == 5 && tag->Count == 1) - { - dblval = gaiaExifTagGetRationalValue (tag, 0, &xok); - if (xok) - { - dblval = exp ((dblval * log (2)) / 2.0); - sprintf (dummy, "F %1.1f", dblval); - human = dummy; - } - } - break; - case 0x920A: /* FocalLength */ - if (tag->Type == 5 && tag->Count == 1) - { - dblval = gaiaExifTagGetRationalValue (tag, 0, &xok); - if (xok) - { - sprintf (dummy, "%1.1f mm", dblval); - human = dummy; - } - } - break; - case 0xA405: /* FocalLengthIn35mmFilm */ - if (tag->Type == 3 && tag->Count == 1) - { - sprintf (dummy, "%u mm", *(tag->ShortValues + 0)); - human = dummy; - } - break; - case 0x9204: /* ExposureBiasValue */ - if (tag->Type == 10 && tag->Count == 1) - { - dblval = gaiaExifTagGetSignedRationalValue (tag, 0, &xok); - if (xok) - { - sprintf (dummy, "%1.2f EV", dblval); - human = dummy; - } - } - break; - }; - l = strlen (human); - if (l > 0) - { - if (len > l) - strcpy (str, human); - else - { - memset (str, '\0', len); - memcpy (str, human, len - 1); - } - *ok = 1; - return; - } - *ok = 0; -} - -GAIAEXIF_DECLARE int -gaiaGuessBlobType (const unsigned char *blob, int size) -{ -/* returns the BLOB content type */ - int jpeg = 0; - int exif = 0; - int exif_gps = 0; - int geom = 1; - gaiaExifTagListPtr exif_list; - gaiaExifTagPtr pT; - unsigned char jpeg1_signature[2]; - unsigned char jpeg2_signature[2]; - unsigned char jpeg3_signature[4]; - unsigned char jfif_signature[4]; - unsigned char exif_signature[4]; - unsigned char png_signature[8]; - unsigned char zip_signature[4]; - unsigned char tiff_signature_little[4]; - unsigned char tiff_signature_big[4]; - unsigned char riff_signature[4]; - unsigned char webp_signature[8]; - jpeg1_signature[0] = 0xff; - jpeg1_signature[1] = 0xd8; - jpeg2_signature[0] = 0xff; - jpeg2_signature[1] = 0xd9; - jpeg3_signature[0] = 0xff; - jpeg3_signature[1] = 0xd8; - jpeg3_signature[2] = 0xff; - jpeg3_signature[3] = 0xe0; - jfif_signature[0] = 0x4a; - jfif_signature[1] = 0x46; - jfif_signature[2] = 0x49; - jfif_signature[3] = 0x46; - exif_signature[0] = 0x45; - exif_signature[1] = 0x78; - exif_signature[2] = 0x69; - exif_signature[3] = 0x66; - png_signature[0] = 0x89; - png_signature[1] = 0x50; - png_signature[2] = 0x4e; - png_signature[3] = 0x47; - png_signature[4] = 0x0d; - png_signature[5] = 0x0a; - png_signature[6] = 0x1a; - png_signature[7] = 0x0a; - zip_signature[0] = 0x50; - zip_signature[1] = 0x4b; - zip_signature[2] = 0x03; - zip_signature[3] = 0x04; - tiff_signature_little[0] = 'I'; - tiff_signature_little[1] = 'I'; - tiff_signature_little[2] = 0x2a; - tiff_signature_little[3] = 0x00; - tiff_signature_big[0] = 'M'; - tiff_signature_big[1] = 'M'; - tiff_signature_big[2] = 0x00; - tiff_signature_big[3] = 0x2a; - riff_signature[0] = 'R'; - riff_signature[1] = 'I'; - riff_signature[2] = 'F'; - riff_signature[3] = 'F'; - webp_signature[0] = 'W'; - webp_signature[1] = 'E'; - webp_signature[2] = 'B'; - webp_signature[3] = 'P'; - webp_signature[4] = 'V'; - webp_signature[5] = 'P'; - webp_signature[6] = '8'; - webp_signature[7] = ' '; - if (size < 1 || !blob) - return GAIA_HEX_BLOB; - if (size > 4) - { - if (memcmp (blob, tiff_signature_big, 4) == 0) - return GAIA_TIFF_BLOB; - if (memcmp (blob, tiff_signature_little, 4) == 0) - return GAIA_TIFF_BLOB; - } - if (size > 5) - { - if (strncmp ((char *) blob, "%PDF-", 5) == 0) - return GAIA_PDF_BLOB; - } - if (size > 4) - { - if (memcmp (blob, zip_signature, 4) == 0) - return GAIA_ZIP_BLOB; - } - if (size > 6) - { - if (strncmp ((char *) blob, "GIF87a", 6) == 0 - || strncmp ((char *) blob, "GIF89a", 6) == 0) - return GAIA_GIF_BLOB; - } - if (size > 8) - { - if (memcmp (blob, png_signature, 8) == 0) - return GAIA_PNG_BLOB; - } - if (size > 4) - { - if (memcmp (blob, jpeg1_signature, 2) == 0 - && memcmp (blob + size - 2, jpeg2_signature, 2) == 0) - jpeg = 1; /* this one is the standard JPEG signature */ - if (memcmp (blob, jpeg3_signature, 4) == 0) - jpeg = 1; /* another common JPEG signature */ - } - if (size > 10) - { - if (memcmp (blob + 6, jfif_signature, 4) == 0) - jpeg = 1; /* standard JFIF signature */ - if (memcmp (blob + 6, exif_signature, 4) == 0) - jpeg = 1; /* standard EXIF signature */ - } - if (jpeg) - { - exif_list = gaiaGetExifTags (blob, size); - if (exif_list) - { - exif = 1; - pT = exif_list->First; - while (pT) - { - if (pT->Gps) - { - exif_gps = 1; - break; - } - pT = pT->Next; - } - gaiaExifTagsFree (exif_list); - } - } - if (jpeg && exif && exif_gps) - return GAIA_EXIF_GPS_BLOB; - if (jpeg && exif) - return GAIA_EXIF_BLOB; - if (jpeg) - return GAIA_JPEG_BLOB; - if (size > 16) - { - if ((memcmp (blob, riff_signature, 4) == 0) && - (memcmp (blob + 8, webp_signature, 8) == 0)) - return GAIA_WEBP_BLOB; - } -/* testing for GEOMETRY */ - if (size < 45) - geom = 0; - else - { - if (*(blob + 0) != GAIA_MARK_START) - geom = 0; - if (*(blob + (size - 1)) != GAIA_MARK_END) - geom = 0; - if (*(blob + 38) != GAIA_MARK_MBR) - geom = 0; - if (*(blob + 1) == 0 || *(blob + 1) == 1) - ; - else - geom = 0; - } - if (geom) - return GAIA_GEOMETRY_BLOB; - return GAIA_HEX_BLOB; -} - -GAIAEXIF_DECLARE int -gaiaGetGpsCoords (const unsigned char *blob, int size, double *longitude, - double *latitude) -{ -/* returns the ExifGps coords, if they exists */ - gaiaExifTagListPtr exif_list; - gaiaExifTagPtr pT; - char lat_ref = '\0'; - char long_ref = '\0'; - double lat_degs = -DBL_MAX; - double lat_mins = -DBL_MAX; - double lat_secs = -DBL_MAX; - double long_degs = -DBL_MAX; - double long_mins = -DBL_MAX; - double long_secs = -DBL_MAX; - double dblval; - double sign; - int ok; - if (size < 1 || !blob) - return 0; - exif_list = gaiaGetExifTags (blob, size); - if (exif_list) - { - pT = exif_list->First; - while (pT) - { - if (pT->Gps && pT->TagId == 0x01) - { - /* ok, this one is the GPSLatitudeRef tag */ - if (pT->Type == 2) - lat_ref = *(pT->StringValue); - } - if (pT->Gps && pT->TagId == 0x03) - { - /* ok, this one is the GPSLongitudeRef tag */ - if (pT->Type == 2) - long_ref = *(pT->StringValue); - } - if (pT->Gps && pT->TagId == 0x02) - { - /* ok, this one is the GPSLatitude tag */ - if (pT->Type == 5 && pT->Count == 3) - { - dblval = gaiaExifTagGetRationalValue (pT, 0, &ok); - if (ok) - lat_degs = dblval; - dblval = gaiaExifTagGetRationalValue (pT, 1, &ok); - if (ok) - lat_mins = dblval; - dblval = gaiaExifTagGetRationalValue (pT, 2, &ok); - if (ok) - lat_secs = dblval; - } - } - if (pT->Gps && pT->TagId == 0x04) - { - /* ok, this one is the GPSLongitude tag */ - if (pT->Type == 5 && pT->Count == 3) - { - dblval = gaiaExifTagGetRationalValue (pT, 0, &ok); - if (ok) - long_degs = dblval; - dblval = gaiaExifTagGetRationalValue (pT, 1, &ok); - if (ok) - long_mins = dblval; - dblval = gaiaExifTagGetRationalValue (pT, 2, &ok); - if (ok) - long_secs = dblval; - } - } - pT = pT->Next; - } - gaiaExifTagsFree (exif_list); - if ((lat_ref == 'N' || lat_ref == 'S' || long_ref == 'E' - || long_ref == 'W') && lat_degs != -DBL_MAX - && lat_mins != -DBL_MAX && lat_secs != -DBL_MAX - && long_degs != -DBL_MAX && long_mins != -DBL_MAX - && long_secs != -DBL_MAX) - { - if (lat_ref == 'S') - sign = -1.0; - else - sign = 1.0; - lat_degs = math_round (lat_degs * 1000000.0); - lat_mins = math_round (lat_mins * 1000000.0); - lat_secs = math_round (lat_secs * 1000000.0); - dblval = - math_round (lat_degs + (lat_mins / 60.0) + - (lat_secs / 3600.0)) * (sign / 1000000.0); - *latitude = dblval; - if (long_ref == 'W') - sign = -1.0; - else - sign = 1.0; - long_degs = math_round (long_degs * 1000000.0); - long_mins = math_round (long_mins * 1000000.0); - long_secs = math_round (long_secs * 1000000.0); - dblval = - math_round (long_degs + (long_mins / 60.0) + - (long_secs / 3600.0)) * (sign / 1000000.0); - *longitude = dblval; - return 1; - } - } - return 0; -} - -GAIAEXIF_DECLARE int -gaiaGetGpsLatLong (const unsigned char *blob, int size, char *latlong, - int ll_size) -{ -/* returns the ExifGps Latitude and Longitude, if they exists */ - gaiaExifTagListPtr exif_list; - gaiaExifTagPtr pT; - char lat_ref = '\0'; - char long_ref = '\0'; - double lat_degs = -DBL_MAX; - double lat_mins = -DBL_MAX; - double lat_secs = -DBL_MAX; - double long_degs = -DBL_MAX; - double long_mins = -DBL_MAX; - double long_secs = -DBL_MAX; - double dblval; - int ok; - char ll[1024]; - int len; - *latlong = '\0'; - if (size < 1 || !blob) - return 0; - exif_list = gaiaGetExifTags (blob, size); - if (exif_list) - { - pT = exif_list->First; - while (pT) - { - if (pT->Gps && pT->TagId == 0x01) - { - /* ok, this one is the GPSLatitudeRef tag */ - if (pT->Type == 2) - lat_ref = *(pT->StringValue); - } - if (pT->Gps && pT->TagId == 0x03) - { - /* ok, this one is the GPSLongitudeRef tag */ - if (pT->Type == 2) - long_ref = *(pT->StringValue); - } - if (pT->Gps && pT->TagId == 0x02) - { - /* ok, this one is the GPSLatitude tag */ - if (pT->Type == 5 && pT->Count == 3) - { - dblval = gaiaExifTagGetRationalValue (pT, 0, &ok); - if (ok) - lat_degs = dblval; - dblval = gaiaExifTagGetRationalValue (pT, 1, &ok); - if (ok) - lat_mins = dblval; - dblval = gaiaExifTagGetRationalValue (pT, 2, &ok); - if (ok) - lat_secs = dblval; - } - } - if (pT->Gps && pT->TagId == 0x04) - { - /* ok, this one is the GPSLongitude tag */ - if (pT->Type == 5 && pT->Count == 3) - { - dblval = gaiaExifTagGetRationalValue (pT, 0, &ok); - if (ok) - long_degs = dblval; - dblval = gaiaExifTagGetRationalValue (pT, 1, &ok); - if (ok) - long_mins = dblval; - dblval = gaiaExifTagGetRationalValue (pT, 2, &ok); - if (ok) - long_secs = dblval; - } - } - pT = pT->Next; - } - gaiaExifTagsFree (exif_list); - if ((lat_ref == 'N' || lat_ref == 'S' || long_ref == 'E' - || long_ref == 'W') && lat_degs != -DBL_MAX - && lat_mins != -DBL_MAX && lat_secs != -DBL_MAX - && long_degs != -DBL_MAX && long_mins != -DBL_MAX - && long_secs != -DBL_MAX) - { - sprintf (ll, - "%c %1.2f %1.2f %1.2f / %c %1.2f %1.2f %1.2f", - lat_ref, lat_degs, lat_mins, lat_secs, long_ref, - long_degs, long_mins, long_secs); - len = strlen (ll); - if (len < ll_size) - strcpy (latlong, ll); - else - { - memcpy (latlong, ll, ll_size - 1); - latlong[ll_size] = '\0'; - } - return 1; - } - } - return 0; -} diff --git a/src/spatialite/src/gaiageo/Ewkt.c b/src/spatialite/src/gaiageo/Ewkt.c deleted file mode 100644 index 8fc5fdf..0000000 --- a/src/spatialite/src/gaiageo/Ewkt.c +++ /dev/null @@ -1,1951 +0,0 @@ -/* Driver template for the LEMON parser generator. -** The author disclaims copyright to this source code. -*/ -/* First off, code is included that follows the "include" declaration -** in the input grammar file. */ -#include - -/* Next is all token values, in a form suitable for use by makeheaders. -** This section will be null unless lemon is run with the -m switch. -*/ -/* -** These constants (all generated automatically by the parser generator) -** specify the various kinds of tokens (terminals) that the parser -** understands. -** -** Each symbol here is a terminal symbol in the grammar. -*/ -/* Make sure the INTERFACE macro is defined. -*/ -#ifndef INTERFACE -# define INTERFACE 1 -#endif -/* The next thing included is series of defines which control -** various aspects of the generated parser. -** YYCODETYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 terminals -** and nonterminals. "int" is used otherwise. -** YYNOCODE is a number of type YYCODETYPE which corresponds -** to no legal terminal or nonterminal number. This -** number is used to fill in empty slots of the hash -** table. -** YYFALLBACK If defined, this indicates that one or more tokens -** have fall-back values which should be used if the -** original value of the token will not parse. -** YYACTIONTYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 rules and -** states combined. "int" is used otherwise. -** ParseTOKENTYPE is the data type used for minor tokens given -** directly to the parser from the tokenizer. -** YYMINORTYPE is the data type used for all minor tokens. -** This is typically a union of many types, one of -** which is ParseTOKENTYPE. The entry in the union -** for base tokens is called "yy0". -** YYSTACKDEPTH is the maximum depth of the parser's stack. If -** zero the stack is dynamically sized using realloc() -** ParseARG_SDECL A static variable declaration for the %extra_argument -** ParseARG_PDECL A parameter declaration for the %extra_argument -** ParseARG_STORE Code to store %extra_argument into yypParser -** ParseARG_FETCH Code to extract %extra_argument from yypParser -** YYNSTATE the combined number of states. -** YYNRULE the number of rules in the grammar -** YYERRORSYMBOL is the code number of the error symbol. If not -** defined, then do no error processing. -*/ -#define YYCODETYPE unsigned char -#define YYNOCODE 117 -#define YYACTIONTYPE unsigned short int -#define ParseTOKENTYPE void * -typedef union { - int yyinit; - ParseTOKENTYPE yy0; -} YYMINORTYPE; -#ifndef YYSTACKDEPTH -#define YYSTACKDEPTH 1000000 -#endif -#define ParseARG_SDECL struct ewkt_data *p_data ; -#define ParseARG_PDECL , struct ewkt_data *p_data -#define ParseARG_FETCH struct ewkt_data *p_data = yypParser->p_data -#define ParseARG_STORE yypParser->p_data = p_data -#define YYNSTATE 508 -#define YYNRULE 199 -#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) -#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) -#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) - -/* The yyzerominor constant is used to initialize instances of -** YYMINORTYPE objects to zero. */ -static const YYMINORTYPE yyzerominor = { 0 }; - -/* Define the yytestcase() macro to be a no-op if is not already defined -** otherwise. -** -** Applications can choose to define yytestcase() in the %include section -** to a macro that can assist in verifying code coverage. For production -** code the yytestcase() macro should be turned off. But it is useful -** for testing. -*/ -#ifndef yytestcase -# define yytestcase(X) -#endif - - -/* Next are the tables used to determine what action to take based on the -** current state and lookahead token. These tables are used to implement -** functions that take a state number and lookahead value and return an -** action integer. -** -** Suppose the action integer is N. Then the action is determined as -** follows -** -** 0 <= N < YYNSTATE Shift N. That is, push the lookahead -** token onto the stack and goto state N. -** -** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. -** -** N == YYNSTATE+YYNRULE A syntax error has occurred. -** -** N == YYNSTATE+YYNRULE+1 The parser accepts its input. -** -** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused -** slots in the yy_action[] table. -** -** The action table is constructed as a single large table named yy_action[]. -** Given state S and lookahead X, the action is computed as -** -** yy_action[ yy_shift_ofst[S] + X ] -** -** If the index value yy_shift_ofst[S]+X is out of range or if the value -** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] -** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table -** and that yy_default[S] should be used instead. -** -** The formula above is for computing the action when the lookahead is -** a terminal symbol. If the lookahead is a non-terminal (as occurs after -** a reduce action) then the yy_reduce_ofst[] array is used in place of -** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of -** YY_SHIFT_USE_DFLT. -** -** The following are the tables generated in this section: -** -** yy_action[] A single table containing all actions. -** yy_lookahead[] A table containing the lookahead for each entry in -** yy_action. Used to detect hash collisions. -** yy_shift_ofst[] For each state, the offset into yy_action for -** shifting terminals. -** yy_reduce_ofst[] For each state, the offset into yy_action for -** shifting non-terminals after a reduce. -** yy_default[] Default action for each state. -*/ -static const YYACTIONTYPE yy_action[] = { - /* 0 */ 249, 336, 337, 338, 339, 340, 341, 342, 343, 344, - /* 10 */ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, - /* 20 */ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, - /* 30 */ 365, 366, 163, 201, 224, 178, 202, 225, 179, 203, - /* 40 */ 226, 180, 204, 227, 181, 205, 228, 182, 206, 229, - /* 50 */ 508, 101, 250, 128, 371, 254, 66, 129, 19, 80, - /* 60 */ 20, 95, 22, 124, 23, 141, 25, 158, 27, 232, - /* 70 */ 250, 254, 708, 1, 13, 80, 19, 95, 20, 124, - /* 80 */ 22, 141, 23, 158, 25, 247, 28, 103, 104, 371, - /* 90 */ 105, 106, 63, 305, 111, 117, 305, 255, 21, 164, - /* 100 */ 66, 165, 164, 166, 165, 167, 166, 169, 167, 177, - /* 110 */ 169, 313, 183, 374, 313, 375, 376, 187, 14, 188, - /* 120 */ 187, 189, 188, 190, 189, 192, 190, 200, 192, 321, - /* 130 */ 207, 404, 321, 405, 406, 210, 62, 211, 210, 212, - /* 140 */ 211, 213, 212, 215, 213, 223, 215, 254, 230, 3, - /* 150 */ 24, 80, 104, 95, 26, 124, 71, 141, 111, 158, - /* 160 */ 171, 240, 2, 172, 194, 163, 173, 195, 178, 174, - /* 170 */ 196, 179, 175, 197, 180, 176, 198, 181, 217, 199, - /* 180 */ 182, 218, 201, 125, 219, 202, 371, 220, 203, 224, - /* 190 */ 221, 204, 225, 222, 205, 226, 108, 206, 227, 371, - /* 200 */ 388, 228, 389, 390, 229, 284, 233, 242, 243, 244, - /* 210 */ 245, 246, 234, 235, 236, 237, 238, 239, 31, 113, - /* 220 */ 251, 252, 371, 253, 83, 63, 256, 258, 87, 260, - /* 230 */ 91, 63, 265, 270, 103, 275, 257, 63, 106, 68, - /* 240 */ 105, 78, 75, 75, 424, 117, 425, 426, 132, 119, - /* 250 */ 135, 138, 371, 436, 64, 437, 438, 146, 69, 150, - /* 260 */ 154, 65, 370, 68, 448, 70, 449, 450, 67, 184, - /* 270 */ 68, 186, 209, 73, 74, 373, 33, 71, 71, 79, - /* 280 */ 262, 75, 81, 66, 82, 66, 265, 66, 266, 267, - /* 290 */ 85, 68, 270, 68, 68, 68, 71, 271, 272, 89, - /* 300 */ 258, 71, 71, 71, 71, 275, 276, 75, 75, 277, - /* 310 */ 93, 75, 75, 280, 281, 282, 66, 66, 66, 377, - /* 320 */ 256, 99, 251, 378, 66, 68, 260, 68, 75, 252, - /* 330 */ 253, 72, 75, 71, 407, 408, 371, 371, 380, 76, - /* 340 */ 259, 77, 35, 36, 381, 38, 261, 383, 84, 263, - /* 350 */ 385, 386, 39, 88, 268, 43, 47, 92, 96, 273, - /* 360 */ 51, 98, 102, 278, 264, 86, 61, 283, 393, 269, - /* 370 */ 287, 285, 90, 400, 286, 396, 107, 97, 274, 94, - /* 380 */ 279, 399, 100, 289, 403, 108, 110, 413, 109, 288, - /* 390 */ 112, 291, 113, 114, 116, 118, 115, 290, 119, 15, - /* 400 */ 415, 419, 125, 120, 121, 123, 292, 122, 126, 130, - /* 410 */ 133, 127, 417, 296, 55, 136, 293, 428, 297, 56, - /* 420 */ 430, 131, 139, 298, 295, 57, 422, 294, 142, 148, - /* 430 */ 144, 147, 301, 152, 134, 151, 155, 137, 156, 140, - /* 440 */ 143, 159, 709, 145, 161, 16, 4, 168, 170, 149, - /* 450 */ 5, 17, 709, 6, 83, 153, 709, 191, 193, 433, - /* 460 */ 87, 709, 160, 157, 432, 299, 91, 162, 435, 374, - /* 470 */ 388, 7, 132, 709, 709, 709, 300, 709, 8, 440, - /* 480 */ 146, 404, 709, 18, 442, 214, 302, 445, 444, 216, - /* 490 */ 424, 709, 303, 709, 709, 709, 447, 709, 709, 709, - /* 500 */ 709, 436, 709, 709, 304, 709, 709, 375, 9, 709, - /* 510 */ 135, 709, 389, 709, 709, 709, 709, 452, 453, 454, - /* 520 */ 709, 455, 456, 709, 457, 185, 306, 312, 709, 150, - /* 530 */ 307, 308, 309, 310, 425, 184, 10, 11, 709, 405, - /* 540 */ 709, 709, 709, 311, 464, 709, 709, 709, 709, 709, - /* 550 */ 709, 709, 437, 709, 376, 466, 390, 709, 335, 709, - /* 560 */ 138, 709, 12, 709, 709, 367, 467, 154, 709, 29, - /* 570 */ 468, 208, 469, 470, 471, 406, 426, 314, 315, 316, - /* 580 */ 317, 318, 186, 319, 478, 368, 369, 372, 320, 379, - /* 590 */ 438, 30, 382, 32, 34, 384, 37, 387, 391, 40, - /* 600 */ 709, 392, 41, 42, 480, 481, 482, 394, 483, 44, - /* 610 */ 58, 45, 484, 46, 395, 48, 397, 485, 59, 231, - /* 620 */ 49, 50, 398, 52, 322, 401, 323, 53, 324, 54, - /* 630 */ 402, 409, 493, 325, 326, 327, 209, 492, 410, 328, - /* 640 */ 495, 496, 411, 412, 497, 498, 241, 499, 500, 501, - /* 650 */ 407, 329, 414, 330, 408, 416, 418, 331, 332, 420, - /* 660 */ 421, 423, 427, 429, 248, 431, 333, 434, 439, 334, - /* 670 */ 441, 443, 446, 451, 458, 459, 460, 461, 462, 463, - /* 680 */ 465, 472, 473, 474, 475, 476, 477, 479, 60, 709, - /* 690 */ 486, 487, 488, 489, 709, 490, 491, 494, 502, 709, - /* 700 */ 503, 504, 505, 506, 709, 507, -}; -static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, - /* 10 */ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, - /* 20 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, - /* 30 */ 53, 54, 27, 28, 29, 30, 31, 32, 33, 34, - /* 40 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, - /* 50 */ 0, 3, 2, 57, 6, 5, 60, 61, 8, 9, - /* 60 */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, - /* 70 */ 2, 5, 21, 22, 3, 9, 8, 11, 10, 13, - /* 80 */ 12, 15, 14, 17, 16, 19, 18, 55, 56, 6, - /* 90 */ 58, 59, 60, 2, 62, 63, 2, 57, 3, 8, - /* 100 */ 60, 10, 8, 12, 10, 14, 12, 16, 14, 18, - /* 110 */ 16, 2, 18, 72, 2, 74, 75, 8, 3, 10, - /* 120 */ 8, 12, 10, 14, 12, 16, 14, 18, 16, 2, - /* 130 */ 18, 88, 2, 90, 91, 8, 60, 10, 8, 12, - /* 140 */ 10, 14, 12, 16, 14, 18, 16, 5, 18, 3, - /* 150 */ 3, 9, 56, 11, 3, 13, 60, 15, 62, 17, - /* 160 */ 27, 19, 3, 30, 28, 27, 33, 31, 30, 36, - /* 170 */ 34, 33, 39, 37, 36, 42, 40, 39, 29, 43, - /* 180 */ 42, 32, 28, 3, 35, 31, 6, 38, 34, 29, - /* 190 */ 41, 37, 32, 44, 40, 35, 3, 43, 38, 6, - /* 200 */ 76, 41, 78, 79, 44, 60, 48, 49, 50, 51, - /* 210 */ 52, 53, 48, 49, 50, 51, 52, 53, 7, 3, - /* 220 */ 55, 56, 6, 58, 80, 60, 55, 56, 84, 58, - /* 230 */ 86, 60, 55, 56, 55, 58, 68, 60, 59, 60, - /* 240 */ 58, 58, 60, 60, 92, 63, 94, 95, 72, 3, - /* 250 */ 74, 75, 6, 100, 60, 102, 103, 76, 55, 78, - /* 260 */ 79, 60, 60, 60, 108, 55, 110, 111, 60, 108, - /* 270 */ 60, 110, 111, 56, 56, 60, 7, 60, 60, 58, - /* 280 */ 57, 60, 57, 60, 57, 60, 55, 60, 55, 55, - /* 290 */ 55, 60, 56, 60, 60, 60, 60, 56, 56, 56, - /* 300 */ 56, 60, 60, 60, 60, 58, 58, 60, 60, 58, - /* 310 */ 58, 60, 60, 57, 57, 57, 60, 60, 60, 60, - /* 320 */ 55, 57, 55, 68, 60, 60, 58, 60, 60, 56, - /* 330 */ 58, 60, 60, 60, 4, 4, 6, 6, 60, 60, - /* 340 */ 70, 60, 7, 3, 70, 7, 71, 71, 7, 69, - /* 350 */ 73, 69, 3, 7, 68, 3, 3, 7, 3, 70, - /* 360 */ 3, 7, 60, 71, 81, 80, 60, 69, 81, 85, - /* 370 */ 71, 68, 84, 77, 70, 85, 7, 82, 87, 86, - /* 380 */ 83, 87, 82, 64, 83, 3, 59, 64, 60, 60, - /* 390 */ 7, 66, 3, 60, 62, 7, 60, 60, 3, 3, - /* 400 */ 66, 89, 3, 60, 60, 63, 67, 60, 60, 7, - /* 410 */ 7, 60, 67, 96, 3, 7, 60, 96, 98, 3, - /* 420 */ 98, 61, 7, 99, 65, 3, 65, 69, 3, 3, - /* 430 */ 7, 7, 106, 3, 72, 7, 7, 74, 3, 75, - /* 440 */ 73, 3, 116, 73, 7, 3, 7, 3, 3, 76, - /* 450 */ 3, 3, 116, 7, 80, 78, 116, 3, 3, 93, - /* 460 */ 84, 116, 77, 79, 99, 97, 86, 77, 97, 72, - /* 470 */ 76, 3, 72, 116, 116, 116, 104, 116, 7, 104, - /* 480 */ 76, 88, 116, 3, 106, 3, 107, 101, 107, 3, - /* 490 */ 92, 116, 105, 116, 116, 116, 105, 116, 116, 116, - /* 500 */ 116, 100, 116, 116, 112, 116, 116, 74, 3, 116, - /* 510 */ 74, 116, 78, 116, 116, 116, 116, 112, 112, 112, - /* 520 */ 116, 112, 112, 116, 112, 108, 112, 114, 116, 78, - /* 530 */ 112, 112, 112, 112, 94, 108, 3, 7, 116, 90, - /* 540 */ 116, 116, 116, 112, 112, 116, 116, 116, 116, 116, - /* 550 */ 116, 116, 102, 116, 75, 114, 79, 116, 1, 116, - /* 560 */ 75, 116, 3, 116, 116, 4, 114, 79, 116, 3, - /* 570 */ 114, 110, 114, 114, 114, 91, 95, 114, 114, 114, - /* 580 */ 114, 114, 110, 114, 114, 4, 4, 4, 115, 4, - /* 590 */ 103, 7, 4, 7, 7, 4, 7, 4, 4, 7, - /* 600 */ 116, 4, 7, 7, 115, 115, 115, 4, 115, 7, - /* 610 */ 3, 7, 115, 7, 4, 7, 4, 115, 3, 111, - /* 620 */ 7, 7, 4, 7, 115, 4, 115, 7, 115, 7, - /* 630 */ 4, 4, 109, 115, 115, 115, 111, 115, 4, 113, - /* 640 */ 113, 113, 4, 4, 113, 113, 109, 113, 113, 113, - /* 650 */ 4, 113, 4, 113, 4, 4, 4, 113, 113, 4, - /* 660 */ 4, 4, 4, 4, 109, 4, 113, 4, 4, 113, - /* 670 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - /* 680 */ 4, 4, 4, 4, 4, 4, 4, 4, 3, 116, - /* 690 */ 4, 4, 4, 4, 116, 4, 4, 4, 4, 116, - /* 700 */ 4, 4, 4, 4, 116, 4, -}; -#define YY_SHIFT_USE_DFLT (-1) -#define YY_SHIFT_MAX 334 -static const short yy_shift_ofst[] = { - /* 0 */ -1, 50, 68, 48, 91, 94, 109, 112, 127, 130, - /* 10 */ 66, 142, 83, 83, 83, 180, 193, 216, 246, 71, - /* 20 */ 95, 115, 146, 147, 71, 151, 95, 159, 159, 83, - /* 30 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - /* 40 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - /* 50 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, - /* 60 */ 83, 330, 331, 83, 83, 83, 83, 83, 83, 211, - /* 70 */ 211, 83, 83, 269, 269, 83, 83, 83, 335, 335, - /* 80 */ 340, 338, 338, 341, 349, 211, 341, 346, 352, 269, - /* 90 */ 346, 350, 353, 335, 350, 355, 357, 354, 357, 338, - /* 100 */ 354, 83, 83, 211, 269, 335, 369, 382, 83, 83, - /* 110 */ 369, 383, 389, 83, 83, 83, 383, 388, 395, 83, - /* 120 */ 83, 83, 83, 388, 396, 83, 83, 83, 338, 402, - /* 130 */ 399, 402, 403, 411, 403, 408, 416, 408, 415, 422, - /* 140 */ 415, 425, 340, 423, 340, 423, 424, 426, 349, 424, - /* 150 */ 428, 430, 352, 428, 429, 435, 353, 429, 438, 355, - /* 160 */ 437, 355, 437, 439, 411, 426, 442, 444, 411, 445, - /* 170 */ 426, 439, 439, 439, 439, 439, 439, 447, 439, 439, - /* 180 */ 439, 439, 439, 447, 439, 439, 446, 416, 430, 448, - /* 190 */ 454, 416, 455, 430, 446, 446, 446, 446, 446, 446, - /* 200 */ 468, 446, 446, 446, 446, 446, 446, 468, 446, 471, - /* 210 */ 422, 435, 480, 482, 422, 486, 435, 471, 471, 471, - /* 220 */ 471, 471, 471, 505, 471, 471, 471, 471, 471, 471, - /* 230 */ 505, 471, 533, 530, 530, 530, 530, 530, 530, 530, - /* 240 */ 533, 530, 530, 530, 530, 530, 530, 533, 530, 557, - /* 250 */ 559, 561, 581, 582, 566, 583, 584, 585, 586, 588, - /* 260 */ 587, 591, 589, 593, 594, 592, 595, 596, 597, 603, - /* 270 */ 602, 604, 606, 610, 612, 608, 613, 614, 618, 621, - /* 280 */ 616, 620, 622, 626, 627, 634, 638, 639, 646, 648, - /* 290 */ 650, 651, 652, 655, 656, 657, 658, 659, 661, 663, - /* 300 */ 664, 666, 667, 668, 669, 607, 670, 671, 672, 673, - /* 310 */ 674, 675, 676, 615, 677, 678, 679, 680, 681, 682, - /* 320 */ 683, 685, 686, 687, 688, 689, 691, 692, 693, 694, - /* 330 */ 696, 697, 698, 699, 701, -}; -#define YY_REDUCE_USE_DFLT (-24) -#define YY_REDUCE_MAX 248 -static const short yy_reduce_ofst[] = { - /* 0 */ 51, -23, 5, 32, 133, 138, 136, 154, 149, 160, - /* 10 */ 158, 164, 165, 171, 177, -4, 179, 96, 182, 41, - /* 20 */ 124, 144, 43, 152, 176, 153, 181, 156, 161, 40, - /* 30 */ 203, 210, 217, 218, 183, 221, 223, 225, 227, 231, - /* 40 */ 233, 234, 235, 236, 241, 242, 243, 247, 248, 251, - /* 50 */ 252, 256, 257, 258, 264, 265, 244, 268, 267, 273, - /* 60 */ 272, 76, 145, 194, 201, 202, 208, 215, 259, 168, - /* 70 */ 255, 271, 278, 270, 274, 279, 281, 202, 275, 276, - /* 80 */ 277, 280, 282, 283, 285, 286, 287, 284, 288, 289, - /* 90 */ 290, 291, 293, 292, 294, 296, 295, 297, 300, 298, - /* 100 */ 301, 302, 306, 303, 304, 299, 319, 327, 328, 329, - /* 110 */ 323, 325, 332, 333, 336, 337, 334, 339, 342, 343, - /* 120 */ 344, 347, 145, 345, 312, 348, 351, 356, 358, 359, - /* 130 */ 360, 361, 317, 362, 321, 320, 363, 322, 324, 364, - /* 140 */ 365, 366, 367, 368, 370, 371, 372, 373, 374, 375, - /* 150 */ 326, 377, 376, 378, 379, 384, 380, 381, 386, 385, - /* 160 */ 387, 390, 391, 392, 397, 394, 393, 398, 400, 401, - /* 170 */ 404, 405, 406, 407, 409, 410, 412, 417, 414, 418, - /* 180 */ 419, 420, 421, 427, 431, 432, 413, 433, 434, 449, - /* 190 */ 440, 436, 450, 451, 441, 452, 456, 458, 459, 460, - /* 200 */ 461, 463, 464, 465, 466, 467, 469, 472, 470, 473, - /* 210 */ 479, 477, 484, 481, 485, 487, 488, 489, 490, 491, - /* 220 */ 493, 497, 502, 508, 509, 511, 513, 518, 519, 520, - /* 230 */ 525, 522, 523, 526, 527, 528, 531, 532, 534, 535, - /* 240 */ 537, 536, 538, 540, 544, 545, 553, 555, 556, -}; -static const YYACTIONTYPE yy_default[] = { - /* 0 */ 509, 707, 707, 707, 707, 707, 707, 707, 707, 707, - /* 10 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, - /* 20 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, - /* 30 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, - /* 40 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, - /* 50 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, - /* 60 */ 707, 707, 707, 707, 550, 552, 707, 707, 707, 563, - /* 70 */ 563, 707, 707, 567, 567, 707, 707, 707, 569, 569, - /* 80 */ 707, 565, 565, 588, 707, 563, 588, 594, 707, 567, - /* 90 */ 594, 597, 707, 569, 597, 707, 707, 591, 707, 565, - /* 100 */ 591, 707, 707, 563, 567, 569, 555, 707, 707, 707, - /* 110 */ 555, 559, 707, 707, 707, 707, 559, 561, 707, 707, - /* 120 */ 707, 707, 707, 561, 707, 707, 707, 707, 565, 557, - /* 130 */ 707, 557, 616, 707, 616, 622, 707, 622, 625, 707, - /* 140 */ 625, 707, 707, 619, 707, 619, 632, 707, 707, 632, - /* 150 */ 638, 707, 707, 638, 641, 707, 707, 641, 707, 707, - /* 160 */ 635, 707, 635, 654, 707, 707, 707, 707, 707, 707, - /* 170 */ 707, 654, 654, 654, 654, 654, 654, 707, 654, 654, - /* 180 */ 654, 654, 654, 707, 654, 654, 684, 707, 707, 707, - /* 190 */ 707, 707, 707, 707, 684, 684, 684, 684, 684, 684, - /* 200 */ 707, 684, 684, 684, 684, 684, 684, 707, 684, 699, - /* 210 */ 707, 707, 707, 707, 707, 707, 707, 699, 699, 699, - /* 220 */ 699, 699, 699, 707, 699, 699, 699, 699, 699, 699, - /* 230 */ 707, 699, 707, 669, 669, 669, 669, 669, 669, 669, - /* 240 */ 707, 669, 669, 669, 669, 669, 669, 707, 669, 707, - /* 250 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, - /* 260 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, - /* 270 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, - /* 280 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, - /* 290 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, - /* 300 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, - /* 310 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, - /* 320 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, - /* 330 */ 707, 707, 707, 707, 707, 510, 511, 512, 513, 514, - /* 340 */ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, - /* 350 */ 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, - /* 360 */ 535, 536, 537, 538, 539, 540, 541, 542, 543, 545, - /* 370 */ 553, 554, 544, 551, 571, 573, 574, 550, 564, 575, - /* 380 */ 552, 568, 577, 570, 578, 572, 566, 576, 579, 581, - /* 390 */ 582, 583, 587, 589, 585, 593, 595, 586, 596, 598, - /* 400 */ 580, 584, 590, 592, 599, 601, 602, 546, 548, 549, - /* 410 */ 603, 605, 606, 556, 607, 560, 609, 562, 610, 600, - /* 420 */ 547, 604, 558, 608, 611, 613, 614, 615, 617, 621, - /* 430 */ 623, 624, 626, 612, 618, 620, 627, 629, 630, 631, - /* 440 */ 633, 637, 639, 640, 642, 628, 634, 636, 643, 645, - /* 450 */ 646, 647, 655, 656, 657, 658, 659, 660, 648, 649, - /* 460 */ 650, 651, 652, 653, 661, 683, 685, 686, 687, 688, - /* 470 */ 689, 690, 677, 678, 679, 680, 681, 682, 691, 698, - /* 480 */ 700, 701, 702, 703, 704, 705, 692, 693, 694, 695, - /* 490 */ 696, 697, 706, 644, 662, 670, 671, 672, 673, 674, - /* 500 */ 675, 676, 663, 664, 665, 666, 667, 668, -}; -#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0])) - -/* The next table maps tokens into fallback tokens. If a construct -** like the following: -** -** %fallback ID X Y Z. -** -** appears in the grammar, then ID becomes a fallback token for X, Y, -** and Z. Whenever one of the tokens X, Y, or Z is input to the parser -** but it does not parse, the type of the token is changed to ID and -** the parse is retried before an error is thrown. -*/ -#ifdef YYFALLBACK -static const YYCODETYPE yyFallback[] = { -}; -#endif /* YYFALLBACK */ - -/* The following structure represents a single element of the -** parser's stack. Information stored includes: -** -** + The state number for the parser at this level of the stack. -** -** + The value of the token stored at this level of the stack. -** (In other words, the "major" token.) -** -** + The semantic value stored at this level of the stack. This is -** the information used by the action routines in the grammar. -** It is sometimes called the "minor" token. -*/ -struct yyStackEntry { - YYACTIONTYPE stateno; /* The state-number */ - YYCODETYPE major; /* The major token value. This is the code - ** number for the token at this stack level */ - YYMINORTYPE minor; /* The user-supplied minor token value. This - ** is the value of the token */ -}; -typedef struct yyStackEntry yyStackEntry; - -/* The state of the parser is completely contained in an instance of -** the following structure */ -struct yyParser { - int yyidx; /* Index of top element in stack */ -#ifdef YYTRACKMAXSTACKDEPTH - int yyidxMax; /* Maximum value of yyidx */ -#endif - int yyerrcnt; /* Shifts left before out of the error */ - ParseARG_SDECL /* A place to hold %extra_argument */ -#if YYSTACKDEPTH<=0 - int yystksz; /* Current side of the stack */ - yyStackEntry *yystack; /* The parser's stack */ -#else - yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ -#endif -}; -typedef struct yyParser yyParser; - -#ifndef NDEBUG -#include -static FILE *yyTraceFILE = 0; -static char *yyTracePrompt = 0; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* -** Turn parser tracing on by giving a stream to which to write the trace -** and a prompt to preface each trace message. Tracing is turned off -** by making either argument NULL -** -** Inputs: -**
    -**
  • A FILE* to which trace output should be written. -** If NULL, then tracing is turned off. -**
  • A prefix string written at the beginning of every -** line of trace output. If NULL, then tracing is -** turned off. -**
-** -** Outputs: -** None. -*/ -void ParseTrace(FILE *TraceFILE, char *zTracePrompt){ - yyTraceFILE = TraceFILE; - yyTracePrompt = zTracePrompt; - if( yyTraceFILE==0 ) yyTracePrompt = 0; - else if( yyTracePrompt==0 ) yyTraceFILE = 0; -} -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing shifts, the names of all terminals and nonterminals -** are required. The following table supplies these names */ -static const char *const yyTokenName[] = { - "$", "EWKT_NEWLINE", "EWKT_POINT", "EWKT_OPEN_BRACKET", - "EWKT_CLOSE_BRACKET", "EWKT_POINT_M", "EWKT_NUM", "EWKT_COMMA", - "EWKT_LINESTRING", "EWKT_LINESTRING_M", "EWKT_POLYGON", "EWKT_POLYGON_M", - "EWKT_MULTIPOINT", "EWKT_MULTIPOINT_M", "EWKT_MULTILINESTRING", "EWKT_MULTILINESTRING_M", - "EWKT_MULTIPOLYGON", "EWKT_MULTIPOLYGON_M", "EWKT_GEOMETRYCOLLECTION", "EWKT_GEOMETRYCOLLECTION_M", - "error", "main", "in", "state", - "program", "geo_text", "geo_textm", "point", - "pointz", "pointzm", "linestring", "linestringz", - "linestringzm", "polygon", "polygonz", "polygonzm", - "multipoint", "multipointz", "multipointzm", "multilinestring", - "multilinestringz", "multilinestringzm", "multipolygon", "multipolygonz", - "multipolygonzm", "geocoll", "geocollz", "geocollzm", - "pointm", "linestringm", "polygonm", "multipointm", - "multilinestringm", "multipolygonm", "geocollm", "point_coordxy", - "point_coordxyz", "point_coordxym", "point_coordxyzm", "point_brkt_coordxy", - "coord", "point_brkt_coordxym", "point_brkt_coordxyz", "point_brkt_coordxyzm", - "extra_brkt_pointsxy", "extra_brkt_pointsxym", "extra_brkt_pointsxyz", "extra_brkt_pointsxyzm", - "extra_pointsxy", "extra_pointsxym", "extra_pointsxyz", "extra_pointsxyzm", - "linestring_text", "linestring_textm", "linestring_textz", "linestring_textzm", - "polygon_text", "polygon_textm", "polygon_textz", "polygon_textzm", - "ring", "extra_rings", "ringm", "extra_ringsm", - "ringz", "extra_ringsz", "ringzm", "extra_ringszm", - "multipoint_text", "multipoint_textm", "multipoint_textz", "multipoint_textzm", - "multilinestring_text", "multilinestring_textm", "multilinestring_textz", "multilinestring_textzm", - "multilinestring_text2", "multilinestring_textm2", "multilinestring_textz2", "multilinestring_textzm2", - "multipolygon_text", "multipolygon_textm", "multipolygon_textz", "multipolygon_textzm", - "multipolygon_text2", "multipolygon_textm2", "multipolygon_textz2", "multipolygon_textzm2", - "geocoll_text", "geocoll_textm", "geocoll_textz", "geocoll_textzm", - "geocoll_text2", "geocoll_textm2", "geocoll_textz2", "geocoll_textzm2", -}; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing reduce actions, the names of all rules are required. -*/ -static const char *const yyRuleName[] = { - /* 0 */ "main ::= in", - /* 1 */ "in ::=", - /* 2 */ "in ::= in state EWKT_NEWLINE", - /* 3 */ "state ::= program", - /* 4 */ "program ::= geo_text", - /* 5 */ "program ::= geo_textm", - /* 6 */ "geo_text ::= point", - /* 7 */ "geo_text ::= pointz", - /* 8 */ "geo_text ::= pointzm", - /* 9 */ "geo_text ::= linestring", - /* 10 */ "geo_text ::= linestringz", - /* 11 */ "geo_text ::= linestringzm", - /* 12 */ "geo_text ::= polygon", - /* 13 */ "geo_text ::= polygonz", - /* 14 */ "geo_text ::= polygonzm", - /* 15 */ "geo_text ::= multipoint", - /* 16 */ "geo_text ::= multipointz", - /* 17 */ "geo_text ::= multipointzm", - /* 18 */ "geo_text ::= multilinestring", - /* 19 */ "geo_text ::= multilinestringz", - /* 20 */ "geo_text ::= multilinestringzm", - /* 21 */ "geo_text ::= multipolygon", - /* 22 */ "geo_text ::= multipolygonz", - /* 23 */ "geo_text ::= multipolygonzm", - /* 24 */ "geo_text ::= geocoll", - /* 25 */ "geo_text ::= geocollz", - /* 26 */ "geo_text ::= geocollzm", - /* 27 */ "geo_textm ::= pointm", - /* 28 */ "geo_textm ::= linestringm", - /* 29 */ "geo_textm ::= polygonm", - /* 30 */ "geo_textm ::= multipointm", - /* 31 */ "geo_textm ::= multilinestringm", - /* 32 */ "geo_textm ::= multipolygonm", - /* 33 */ "geo_textm ::= geocollm", - /* 34 */ "point ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxy EWKT_CLOSE_BRACKET", - /* 35 */ "pointz ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyz EWKT_CLOSE_BRACKET", - /* 36 */ "pointm ::= EWKT_POINT_M EWKT_OPEN_BRACKET point_coordxym EWKT_CLOSE_BRACKET", - /* 37 */ "pointzm ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyzm EWKT_CLOSE_BRACKET", - /* 38 */ "point_brkt_coordxy ::= EWKT_OPEN_BRACKET coord coord EWKT_CLOSE_BRACKET", - /* 39 */ "point_brkt_coordxym ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET", - /* 40 */ "point_brkt_coordxyz ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET", - /* 41 */ "point_brkt_coordxyzm ::= EWKT_OPEN_BRACKET coord coord coord coord EWKT_CLOSE_BRACKET", - /* 42 */ "point_coordxy ::= coord coord", - /* 43 */ "point_coordxym ::= coord coord coord", - /* 44 */ "point_coordxyz ::= coord coord coord", - /* 45 */ "point_coordxyzm ::= coord coord coord coord", - /* 46 */ "coord ::= EWKT_NUM", - /* 47 */ "extra_brkt_pointsxy ::=", - /* 48 */ "extra_brkt_pointsxy ::= EWKT_COMMA point_brkt_coordxy extra_brkt_pointsxy", - /* 49 */ "extra_brkt_pointsxym ::=", - /* 50 */ "extra_brkt_pointsxym ::= EWKT_COMMA point_brkt_coordxym extra_brkt_pointsxym", - /* 51 */ "extra_brkt_pointsxyz ::=", - /* 52 */ "extra_brkt_pointsxyz ::= EWKT_COMMA point_brkt_coordxyz extra_brkt_pointsxyz", - /* 53 */ "extra_brkt_pointsxyzm ::=", - /* 54 */ "extra_brkt_pointsxyzm ::= EWKT_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm", - /* 55 */ "extra_pointsxy ::=", - /* 56 */ "extra_pointsxy ::= EWKT_COMMA point_coordxy extra_pointsxy", - /* 57 */ "extra_pointsxym ::=", - /* 58 */ "extra_pointsxym ::= EWKT_COMMA point_coordxym extra_pointsxym", - /* 59 */ "extra_pointsxyz ::=", - /* 60 */ "extra_pointsxyz ::= EWKT_COMMA point_coordxyz extra_pointsxyz", - /* 61 */ "extra_pointsxyzm ::=", - /* 62 */ "extra_pointsxyzm ::= EWKT_COMMA point_coordxyzm extra_pointsxyzm", - /* 63 */ "linestring ::= EWKT_LINESTRING linestring_text", - /* 64 */ "linestringm ::= EWKT_LINESTRING_M linestring_textm", - /* 65 */ "linestringz ::= EWKT_LINESTRING linestring_textz", - /* 66 */ "linestringzm ::= EWKT_LINESTRING linestring_textzm", - /* 67 */ "linestring_text ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET", - /* 68 */ "linestring_textm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET", - /* 69 */ "linestring_textz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET", - /* 70 */ "linestring_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET", - /* 71 */ "polygon ::= EWKT_POLYGON polygon_text", - /* 72 */ "polygonm ::= EWKT_POLYGON_M polygon_textm", - /* 73 */ "polygonz ::= EWKT_POLYGON polygon_textz", - /* 74 */ "polygonzm ::= EWKT_POLYGON polygon_textzm", - /* 75 */ "polygon_text ::= EWKT_OPEN_BRACKET ring extra_rings EWKT_CLOSE_BRACKET", - /* 76 */ "polygon_textm ::= EWKT_OPEN_BRACKET ringm extra_ringsm EWKT_CLOSE_BRACKET", - /* 77 */ "polygon_textz ::= EWKT_OPEN_BRACKET ringz extra_ringsz EWKT_CLOSE_BRACKET", - /* 78 */ "polygon_textzm ::= EWKT_OPEN_BRACKET ringzm extra_ringszm EWKT_CLOSE_BRACKET", - /* 79 */ "ring ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET", - /* 80 */ "extra_rings ::=", - /* 81 */ "extra_rings ::= EWKT_COMMA ring extra_rings", - /* 82 */ "ringm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET", - /* 83 */ "extra_ringsm ::=", - /* 84 */ "extra_ringsm ::= EWKT_COMMA ringm extra_ringsm", - /* 85 */ "ringz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET", - /* 86 */ "extra_ringsz ::=", - /* 87 */ "extra_ringsz ::= EWKT_COMMA ringz extra_ringsz", - /* 88 */ "ringzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET", - /* 89 */ "extra_ringszm ::=", - /* 90 */ "extra_ringszm ::= EWKT_COMMA ringzm extra_ringszm", - /* 91 */ "multipoint ::= EWKT_MULTIPOINT multipoint_text", - /* 92 */ "multipointm ::= EWKT_MULTIPOINT_M multipoint_textm", - /* 93 */ "multipointz ::= EWKT_MULTIPOINT multipoint_textz", - /* 94 */ "multipointzm ::= EWKT_MULTIPOINT multipoint_textzm", - /* 95 */ "multipoint_text ::= EWKT_OPEN_BRACKET point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET", - /* 96 */ "multipoint_textm ::= EWKT_OPEN_BRACKET point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET", - /* 97 */ "multipoint_textz ::= EWKT_OPEN_BRACKET point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET", - /* 98 */ "multipoint_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET", - /* 99 */ "multipoint_text ::= EWKT_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy EWKT_CLOSE_BRACKET", - /* 100 */ "multipoint_textm ::= EWKT_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym EWKT_CLOSE_BRACKET", - /* 101 */ "multipoint_textz ::= EWKT_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz EWKT_CLOSE_BRACKET", - /* 102 */ "multipoint_textzm ::= EWKT_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm EWKT_CLOSE_BRACKET", - /* 103 */ "multilinestring ::= EWKT_MULTILINESTRING multilinestring_text", - /* 104 */ "multilinestringm ::= EWKT_MULTILINESTRING_M multilinestring_textm", - /* 105 */ "multilinestringz ::= EWKT_MULTILINESTRING multilinestring_textz", - /* 106 */ "multilinestringzm ::= EWKT_MULTILINESTRING multilinestring_textzm", - /* 107 */ "multilinestring_text ::= EWKT_OPEN_BRACKET linestring_text multilinestring_text2 EWKT_CLOSE_BRACKET", - /* 108 */ "multilinestring_text2 ::=", - /* 109 */ "multilinestring_text2 ::= EWKT_COMMA linestring_text multilinestring_text2", - /* 110 */ "multilinestring_textm ::= EWKT_OPEN_BRACKET linestring_textm multilinestring_textm2 EWKT_CLOSE_BRACKET", - /* 111 */ "multilinestring_textm2 ::=", - /* 112 */ "multilinestring_textm2 ::= EWKT_COMMA linestring_textm multilinestring_textm2", - /* 113 */ "multilinestring_textz ::= EWKT_OPEN_BRACKET linestring_textz multilinestring_textz2 EWKT_CLOSE_BRACKET", - /* 114 */ "multilinestring_textz2 ::=", - /* 115 */ "multilinestring_textz2 ::= EWKT_COMMA linestring_textz multilinestring_textz2", - /* 116 */ "multilinestring_textzm ::= EWKT_OPEN_BRACKET linestring_textzm multilinestring_textzm2 EWKT_CLOSE_BRACKET", - /* 117 */ "multilinestring_textzm2 ::=", - /* 118 */ "multilinestring_textzm2 ::= EWKT_COMMA linestring_textzm multilinestring_textzm2", - /* 119 */ "multipolygon ::= EWKT_MULTIPOLYGON multipolygon_text", - /* 120 */ "multipolygonm ::= EWKT_MULTIPOLYGON_M multipolygon_textm", - /* 121 */ "multipolygonz ::= EWKT_MULTIPOLYGON multipolygon_textz", - /* 122 */ "multipolygonzm ::= EWKT_MULTIPOLYGON multipolygon_textzm", - /* 123 */ "multipolygon_text ::= EWKT_OPEN_BRACKET polygon_text multipolygon_text2 EWKT_CLOSE_BRACKET", - /* 124 */ "multipolygon_text2 ::=", - /* 125 */ "multipolygon_text2 ::= EWKT_COMMA polygon_text multipolygon_text2", - /* 126 */ "multipolygon_textm ::= EWKT_OPEN_BRACKET polygon_textm multipolygon_textm2 EWKT_CLOSE_BRACKET", - /* 127 */ "multipolygon_textm2 ::=", - /* 128 */ "multipolygon_textm2 ::= EWKT_COMMA polygon_textm multipolygon_textm2", - /* 129 */ "multipolygon_textz ::= EWKT_OPEN_BRACKET polygon_textz multipolygon_textz2 EWKT_CLOSE_BRACKET", - /* 130 */ "multipolygon_textz2 ::=", - /* 131 */ "multipolygon_textz2 ::= EWKT_COMMA polygon_textz multipolygon_textz2", - /* 132 */ "multipolygon_textzm ::= EWKT_OPEN_BRACKET polygon_textzm multipolygon_textzm2 EWKT_CLOSE_BRACKET", - /* 133 */ "multipolygon_textzm2 ::=", - /* 134 */ "multipolygon_textzm2 ::= EWKT_COMMA polygon_textzm multipolygon_textzm2", - /* 135 */ "geocoll ::= EWKT_GEOMETRYCOLLECTION geocoll_text", - /* 136 */ "geocollm ::= EWKT_GEOMETRYCOLLECTION_M geocoll_textm", - /* 137 */ "geocollz ::= EWKT_GEOMETRYCOLLECTION geocoll_textz", - /* 138 */ "geocollzm ::= EWKT_GEOMETRYCOLLECTION geocoll_textzm", - /* 139 */ "geocoll_text ::= EWKT_OPEN_BRACKET point geocoll_text2 EWKT_CLOSE_BRACKET", - /* 140 */ "geocoll_text ::= EWKT_OPEN_BRACKET linestring geocoll_text2 EWKT_CLOSE_BRACKET", - /* 141 */ "geocoll_text ::= EWKT_OPEN_BRACKET polygon geocoll_text2 EWKT_CLOSE_BRACKET", - /* 142 */ "geocoll_text ::= EWKT_OPEN_BRACKET multipoint geocoll_text2 EWKT_CLOSE_BRACKET", - /* 143 */ "geocoll_text ::= EWKT_OPEN_BRACKET multilinestring geocoll_text2 EWKT_CLOSE_BRACKET", - /* 144 */ "geocoll_text ::= EWKT_OPEN_BRACKET multipolygon geocoll_text2 EWKT_CLOSE_BRACKET", - /* 145 */ "geocoll_text ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 EWKT_CLOSE_BRACKET", - /* 146 */ "geocoll_text2 ::=", - /* 147 */ "geocoll_text2 ::= EWKT_COMMA point geocoll_text2", - /* 148 */ "geocoll_text2 ::= EWKT_COMMA linestring geocoll_text2", - /* 149 */ "geocoll_text2 ::= EWKT_COMMA polygon geocoll_text2", - /* 150 */ "geocoll_text2 ::= EWKT_COMMA multipoint geocoll_text2", - /* 151 */ "geocoll_text2 ::= EWKT_COMMA multilinestring geocoll_text2", - /* 152 */ "geocoll_text2 ::= EWKT_COMMA multipolygon geocoll_text2", - /* 153 */ "geocoll_text2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2", - /* 154 */ "geocoll_textm ::= EWKT_OPEN_BRACKET pointm geocoll_textm2 EWKT_CLOSE_BRACKET", - /* 155 */ "geocoll_textm ::= EWKT_OPEN_BRACKET linestringm geocoll_textm2 EWKT_CLOSE_BRACKET", - /* 156 */ "geocoll_textm ::= EWKT_OPEN_BRACKET polygonm geocoll_textm2 EWKT_CLOSE_BRACKET", - /* 157 */ "geocoll_textm ::= EWKT_OPEN_BRACKET multipointm geocoll_textm2 EWKT_CLOSE_BRACKET", - /* 158 */ "geocoll_textm ::= EWKT_OPEN_BRACKET multilinestringm geocoll_textm2 EWKT_CLOSE_BRACKET", - /* 159 */ "geocoll_textm ::= EWKT_OPEN_BRACKET multipolygonm geocoll_textm2 EWKT_CLOSE_BRACKET", - /* 160 */ "geocoll_textm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 EWKT_CLOSE_BRACKET", - /* 161 */ "geocoll_textm2 ::=", - /* 162 */ "geocoll_textm2 ::= EWKT_COMMA pointm geocoll_textm2", - /* 163 */ "geocoll_textm2 ::= EWKT_COMMA linestringm geocoll_textm2", - /* 164 */ "geocoll_textm2 ::= EWKT_COMMA polygonm geocoll_textm2", - /* 165 */ "geocoll_textm2 ::= EWKT_COMMA multipointm geocoll_textm2", - /* 166 */ "geocoll_textm2 ::= EWKT_COMMA multilinestringm geocoll_textm2", - /* 167 */ "geocoll_textm2 ::= EWKT_COMMA multipolygonm geocoll_textm2", - /* 168 */ "geocoll_textm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2", - /* 169 */ "geocoll_textz ::= EWKT_OPEN_BRACKET pointz geocoll_textz2 EWKT_CLOSE_BRACKET", - /* 170 */ "geocoll_textz ::= EWKT_OPEN_BRACKET linestringz geocoll_textz2 EWKT_CLOSE_BRACKET", - /* 171 */ "geocoll_textz ::= EWKT_OPEN_BRACKET polygonz geocoll_textz2 EWKT_CLOSE_BRACKET", - /* 172 */ "geocoll_textz ::= EWKT_OPEN_BRACKET multipointz geocoll_textz2 EWKT_CLOSE_BRACKET", - /* 173 */ "geocoll_textz ::= EWKT_OPEN_BRACKET multilinestringz geocoll_textz2 EWKT_CLOSE_BRACKET", - /* 174 */ "geocoll_textz ::= EWKT_OPEN_BRACKET multipolygonz geocoll_textz2 EWKT_CLOSE_BRACKET", - /* 175 */ "geocoll_textz ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 EWKT_CLOSE_BRACKET", - /* 176 */ "geocoll_textz2 ::=", - /* 177 */ "geocoll_textz2 ::= EWKT_COMMA pointz geocoll_textz2", - /* 178 */ "geocoll_textz2 ::= EWKT_COMMA linestringz geocoll_textz2", - /* 179 */ "geocoll_textz2 ::= EWKT_COMMA polygonz geocoll_textz2", - /* 180 */ "geocoll_textz2 ::= EWKT_COMMA multipointz geocoll_textz2", - /* 181 */ "geocoll_textz2 ::= EWKT_COMMA multilinestringz geocoll_textz2", - /* 182 */ "geocoll_textz2 ::= EWKT_COMMA multipolygonz geocoll_textz2", - /* 183 */ "geocoll_textz2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2", - /* 184 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET pointzm geocoll_textzm2 EWKT_CLOSE_BRACKET", - /* 185 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET linestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET", - /* 186 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET polygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET", - /* 187 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET multipointzm geocoll_textzm2 EWKT_CLOSE_BRACKET", - /* 188 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET multilinestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET", - /* 189 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET multipolygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET", - /* 190 */ "geocoll_textzm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 EWKT_CLOSE_BRACKET", - /* 191 */ "geocoll_textzm2 ::=", - /* 192 */ "geocoll_textzm2 ::= EWKT_COMMA pointzm geocoll_textzm2", - /* 193 */ "geocoll_textzm2 ::= EWKT_COMMA linestringzm geocoll_textzm2", - /* 194 */ "geocoll_textzm2 ::= EWKT_COMMA polygonzm geocoll_textzm2", - /* 195 */ "geocoll_textzm2 ::= EWKT_COMMA multipointzm geocoll_textzm2", - /* 196 */ "geocoll_textzm2 ::= EWKT_COMMA multilinestringzm geocoll_textzm2", - /* 197 */ "geocoll_textzm2 ::= EWKT_COMMA multipolygonzm geocoll_textzm2", - /* 198 */ "geocoll_textzm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2", -}; -#endif /* NDEBUG */ - - -#if YYSTACKDEPTH<=0 -/* -** Try to increase the size of the parser stack. -*/ -static void yyGrowStack(yyParser *p){ - int newSize; - yyStackEntry *pNew; - - newSize = p->yystksz*2 + 100; - pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); - if( pNew ){ - p->yystack = pNew; - p->yystksz = newSize; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack grows to %d entries!\n", - yyTracePrompt, p->yystksz); - } -#endif - } -} -#endif - -/* -** This function allocates a new parser. -** The only argument is a pointer to a function which works like -** malloc. -** -** Inputs: -** A pointer to the function used to allocate memory. -** -** Outputs: -** A pointer to a parser. This pointer is used in subsequent calls -** to Parse and ParseFree. -*/ -void *ParseAlloc(void *(*mallocProc)(size_t)){ - yyParser *pParser; - pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) ); - if( pParser ){ - pParser->yyidx = -1; -#ifdef YYTRACKMAXSTACKDEPTH - pParser->yyidxMax = 0; -#endif -#if YYSTACKDEPTH<=0 - pParser->yystack = NULL; - pParser->yystksz = 0; - yyGrowStack(pParser); -#endif - } - return pParser; -} - -/* The following function deletes the value associated with a -** symbol. The symbol can be either a terminal or nonterminal. -** "yymajor" is the symbol code, and "yypminor" is a pointer to -** the value. -*/ -static void yy_destructor( - yyParser *yypParser, /* The parser */ - YYCODETYPE yymajor, /* Type code for object to destroy */ - YYMINORTYPE *yypminor /* The object to be destroyed */ -){ - ParseARG_FETCH; - switch( yymajor ){ - /* Here is inserted the actions which take place when a - ** terminal or non-terminal is destroyed. This can happen - ** when the symbol is popped from the stack during a - ** reduce or during error processing or when a parser is - ** being destroyed before it is finished parsing. - ** - ** Note: during a reduce, the only symbols destroyed are those - ** which appear on the RHS of the rule, but which are not used - ** inside the C code. - */ - default: break; /* If no destructor action specified: do nothing */ - } -} - -/* -** Pop the parser's stack once. -** -** If there is a destructor routine associated with the token which -** is popped from the stack, then call it. -** -** Return the major token number for the symbol popped. -*/ -static int yy_pop_parser_stack(yyParser *pParser){ - YYCODETYPE yymajor; - yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; - - if( pParser->yyidx<0 ) return 0; -#ifndef NDEBUG - if( yyTraceFILE && pParser->yyidx>=0 ){ - fprintf(yyTraceFILE,"%sPopping %s\n", - yyTracePrompt, - yyTokenName[yytos->major]); - } -#endif - yymajor = yytos->major; - yy_destructor(pParser, yymajor, &yytos->minor); - pParser->yyidx--; - return yymajor; -} - -/* -** Deallocate and destroy a parser. Destructors are all called for -** all stack elements before shutting the parser down. -** -** Inputs: -**
    -**
  • A pointer to the parser. This should be a pointer -** obtained from ParseAlloc. -**
  • A pointer to a function used to reclaim memory obtained -** from malloc. -**
-*/ -void ParseFree( - void *p, /* The parser to be deleted */ - void (*freeProc)(void*) /* Function used to reclaim memory */ -){ - yyParser *pParser = (yyParser*)p; - if( pParser==0 ) return; - while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser); -#if YYSTACKDEPTH<=0 - free(pParser->yystack); -#endif - (*freeProc)((void*)pParser); -} - -/* -** Return the peak depth of the stack for a parser. -*/ -#ifdef YYTRACKMAXSTACKDEPTH -int ParseStackPeak(void *p){ - yyParser *pParser = (yyParser*)p; - return pParser->yyidxMax; -} -#endif - -/* -** Find the appropriate action for a parser given the terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_shift_action( - yyParser *pParser, /* The parser */ - YYCODETYPE iLookAhead /* The look-ahead token */ -){ - int i; - int stateno = pParser->yystack[pParser->yyidx].stateno; - - if( stateno>YY_SHIFT_MAX || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){ - return yy_default[stateno]; - } - assert( iLookAhead!=YYNOCODE ); - i += iLookAhead; - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ - if( iLookAhead>0 ){ -#ifdef YYFALLBACK - YYCODETYPE iFallback; /* Fallback token */ - if( iLookAhead %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); - } -#endif - return yy_find_shift_action(pParser, iFallback); - } -#endif -#ifdef YYWILDCARD - { - int j = i - iLookAhead + YYWILDCARD; - if( j>=0 && j %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); - } -#endif /* NDEBUG */ - return yy_action[j]; - } - } -#endif /* YYWILDCARD */ - } - return yy_default[stateno]; - }else{ - return yy_action[i]; - } -} - -/* -** Find the appropriate action for a parser given the non-terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_reduce_action( - int stateno, /* Current state number */ - YYCODETYPE iLookAhead /* The look-ahead token */ -){ - int i; -#ifdef YYERRORSYMBOL - if( stateno>YY_REDUCE_MAX ){ - return yy_default[stateno]; - } -#else - assert( stateno<=YY_REDUCE_MAX ); -#endif - i = yy_reduce_ofst[stateno]; - assert( i!=YY_REDUCE_USE_DFLT ); - assert( iLookAhead!=YYNOCODE ); - i += iLookAhead; -#ifdef YYERRORSYMBOL - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ - return yy_default[stateno]; - } -#else - assert( i>=0 && iyyidx--; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will execute if the parser - ** stack every overflows */ - - spatialite_e( "Giving up. Parser stack overflow\n"); - ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ -} - -/* -** Perform a shift action. -*/ -static void yy_shift( - yyParser *yypParser, /* The parser to be shifted */ - int yyNewState, /* The new state to shift in */ - int yyMajor, /* The major token to shift in */ - YYMINORTYPE *yypMinor /* Pointer to the minor token to shift in */ -){ - yyStackEntry *yytos; - yypParser->yyidx++; -#ifdef YYTRACKMAXSTACKDEPTH - if( yypParser->yyidx>yypParser->yyidxMax ){ - yypParser->yyidxMax = yypParser->yyidx; - } -#endif -#if YYSTACKDEPTH>0 - if( yypParser->yyidx>=YYSTACKDEPTH ){ - yyStackOverflow(yypParser, yypMinor); - return; - } -#else - if( yypParser->yyidx>=yypParser->yystksz ){ - yyGrowStack(yypParser); - if( yypParser->yyidx>=yypParser->yystksz ){ - yyStackOverflow(yypParser, yypMinor); - return; - } - } -#endif - yytos = &yypParser->yystack[yypParser->yyidx]; - yytos->stateno = (YYACTIONTYPE)yyNewState; - yytos->major = (YYCODETYPE)yyMajor; - yytos->minor = *yypMinor; -#ifndef NDEBUG - if( yyTraceFILE && yypParser->yyidx>0 ){ - int i; - fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState); - fprintf(yyTraceFILE,"%sStack:",yyTracePrompt); - for(i=1; i<=yypParser->yyidx; i++) - fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]); - fprintf(yyTraceFILE,"\n"); - } -#endif -} - -/* The following table contains information about every rule that -** is used during the reduce. -*/ -static const struct { - YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ - unsigned char nrhs; /* Number of right-hand side symbols in the rule */ -} yyRuleInfo[] = { - { 21, 1 }, - { 22, 0 }, - { 22, 3 }, - { 23, 1 }, - { 24, 1 }, - { 24, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 25, 1 }, - { 26, 1 }, - { 26, 1 }, - { 26, 1 }, - { 26, 1 }, - { 26, 1 }, - { 26, 1 }, - { 26, 1 }, - { 27, 4 }, - { 28, 4 }, - { 48, 4 }, - { 29, 4 }, - { 59, 4 }, - { 61, 5 }, - { 62, 5 }, - { 63, 6 }, - { 55, 2 }, - { 57, 3 }, - { 56, 3 }, - { 58, 4 }, - { 60, 1 }, - { 64, 0 }, - { 64, 3 }, - { 65, 0 }, - { 65, 3 }, - { 66, 0 }, - { 66, 3 }, - { 67, 0 }, - { 67, 3 }, - { 68, 0 }, - { 68, 3 }, - { 69, 0 }, - { 69, 3 }, - { 70, 0 }, - { 70, 3 }, - { 71, 0 }, - { 71, 3 }, - { 30, 2 }, - { 49, 2 }, - { 31, 2 }, - { 32, 2 }, - { 72, 6 }, - { 73, 6 }, - { 74, 6 }, - { 75, 6 }, - { 33, 2 }, - { 50, 2 }, - { 34, 2 }, - { 35, 2 }, - { 76, 4 }, - { 77, 4 }, - { 78, 4 }, - { 79, 4 }, - { 80, 10 }, - { 81, 0 }, - { 81, 3 }, - { 82, 10 }, - { 83, 0 }, - { 83, 3 }, - { 84, 10 }, - { 85, 0 }, - { 85, 3 }, - { 86, 10 }, - { 87, 0 }, - { 87, 3 }, - { 36, 2 }, - { 51, 2 }, - { 37, 2 }, - { 38, 2 }, - { 88, 4 }, - { 89, 4 }, - { 90, 4 }, - { 91, 4 }, - { 88, 4 }, - { 89, 4 }, - { 90, 4 }, - { 91, 4 }, - { 39, 2 }, - { 52, 2 }, - { 40, 2 }, - { 41, 2 }, - { 92, 4 }, - { 96, 0 }, - { 96, 3 }, - { 93, 4 }, - { 97, 0 }, - { 97, 3 }, - { 94, 4 }, - { 98, 0 }, - { 98, 3 }, - { 95, 4 }, - { 99, 0 }, - { 99, 3 }, - { 42, 2 }, - { 53, 2 }, - { 43, 2 }, - { 44, 2 }, - { 100, 4 }, - { 104, 0 }, - { 104, 3 }, - { 101, 4 }, - { 105, 0 }, - { 105, 3 }, - { 102, 4 }, - { 106, 0 }, - { 106, 3 }, - { 103, 4 }, - { 107, 0 }, - { 107, 3 }, - { 45, 2 }, - { 54, 2 }, - { 46, 2 }, - { 47, 2 }, - { 108, 4 }, - { 108, 4 }, - { 108, 4 }, - { 108, 4 }, - { 108, 4 }, - { 108, 4 }, - { 108, 5 }, - { 112, 0 }, - { 112, 3 }, - { 112, 3 }, - { 112, 3 }, - { 112, 3 }, - { 112, 3 }, - { 112, 3 }, - { 112, 4 }, - { 109, 4 }, - { 109, 4 }, - { 109, 4 }, - { 109, 4 }, - { 109, 4 }, - { 109, 4 }, - { 109, 5 }, - { 113, 0 }, - { 113, 3 }, - { 113, 3 }, - { 113, 3 }, - { 113, 3 }, - { 113, 3 }, - { 113, 3 }, - { 113, 4 }, - { 110, 4 }, - { 110, 4 }, - { 110, 4 }, - { 110, 4 }, - { 110, 4 }, - { 110, 4 }, - { 110, 5 }, - { 114, 0 }, - { 114, 3 }, - { 114, 3 }, - { 114, 3 }, - { 114, 3 }, - { 114, 3 }, - { 114, 3 }, - { 114, 4 }, - { 111, 4 }, - { 111, 4 }, - { 111, 4 }, - { 111, 4 }, - { 111, 4 }, - { 111, 4 }, - { 111, 5 }, - { 115, 0 }, - { 115, 3 }, - { 115, 3 }, - { 115, 3 }, - { 115, 3 }, - { 115, 3 }, - { 115, 3 }, - { 115, 4 }, -}; - -static void yy_accept(yyParser*); /* Forward Declaration */ - -/* -** Perform a reduce action and the shift that must immediately -** follow the reduce. -*/ -static void yy_reduce( - yyParser *yypParser, /* The parser */ - int yyruleno /* Number of the rule by which to reduce */ -){ - int yygoto; /* The next state */ - int yyact; /* The next action */ - YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ - yyStackEntry *yymsp; /* The top of the parser's stack */ - int yysize; /* Amount to pop the stack */ - ParseARG_FETCH; - yymsp = &yypParser->yystack[yypParser->yyidx]; -#ifndef NDEBUG - if( yyTraceFILE && yyruleno>=0 - && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ - fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt, - yyRuleName[yyruleno]); - } -#endif /* NDEBUG */ - - /* Silence complaints from purify about yygotominor being uninitialized - ** in some cases when it is copied into the stack after the following - ** switch. yygotominor is uninitialized when a rule reduces that does - ** not set the value of its left-hand side nonterminal. Leaving the - ** value of the nonterminal uninitialized is utterly harmless as long - ** as the value is never used. So really the only thing this code - ** accomplishes is to quieten purify. - ** - ** 2007-01-16: The wireshark project (www.wireshark.org) reports that - ** without this code, their parser segfaults. I'm not sure what there - ** parser is doing to make this happen. This is the second bug report - ** from wireshark this week. Clearly they are stressing Lemon in ways - ** that it has not been previously stressed... (SQLite ticket #2172) - */ - /*memset(&yygotominor, 0, sizeof(yygotominor));*/ - yygotominor = yyzerominor; - - - switch( yyruleno ){ - /* Beginning here are the reduction cases. A typical example - ** follows: - ** case 0: - ** #line - ** { ... } // User supplied code - ** #line - ** break; - */ - case 6: /* geo_text ::= point */ - case 7: /* geo_text ::= pointz */ yytestcase(yyruleno==7); - case 8: /* geo_text ::= pointzm */ yytestcase(yyruleno==8); - case 9: /* geo_text ::= linestring */ yytestcase(yyruleno==9); - case 10: /* geo_text ::= linestringz */ yytestcase(yyruleno==10); - case 11: /* geo_text ::= linestringzm */ yytestcase(yyruleno==11); - case 12: /* geo_text ::= polygon */ yytestcase(yyruleno==12); - case 13: /* geo_text ::= polygonz */ yytestcase(yyruleno==13); - case 14: /* geo_text ::= polygonzm */ yytestcase(yyruleno==14); - case 15: /* geo_text ::= multipoint */ yytestcase(yyruleno==15); - case 16: /* geo_text ::= multipointz */ yytestcase(yyruleno==16); - case 17: /* geo_text ::= multipointzm */ yytestcase(yyruleno==17); - case 18: /* geo_text ::= multilinestring */ yytestcase(yyruleno==18); - case 19: /* geo_text ::= multilinestringz */ yytestcase(yyruleno==19); - case 20: /* geo_text ::= multilinestringzm */ yytestcase(yyruleno==20); - case 21: /* geo_text ::= multipolygon */ yytestcase(yyruleno==21); - case 22: /* geo_text ::= multipolygonz */ yytestcase(yyruleno==22); - case 23: /* geo_text ::= multipolygonzm */ yytestcase(yyruleno==23); - case 24: /* geo_text ::= geocoll */ yytestcase(yyruleno==24); - case 25: /* geo_text ::= geocollz */ yytestcase(yyruleno==25); - case 26: /* geo_text ::= geocollzm */ yytestcase(yyruleno==26); - case 27: /* geo_textm ::= pointm */ yytestcase(yyruleno==27); - case 28: /* geo_textm ::= linestringm */ yytestcase(yyruleno==28); - case 29: /* geo_textm ::= polygonm */ yytestcase(yyruleno==29); - case 30: /* geo_textm ::= multipointm */ yytestcase(yyruleno==30); - case 31: /* geo_textm ::= multilinestringm */ yytestcase(yyruleno==31); - case 32: /* geo_textm ::= multipolygonm */ yytestcase(yyruleno==32); - case 33: /* geo_textm ::= geocollm */ yytestcase(yyruleno==33); -{ p_data->result = yymsp[0].minor.yy0; } - break; - case 34: /* point ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxy EWKT_CLOSE_BRACKET */ - case 35: /* pointz ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyz EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==35); - case 37: /* pointzm ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyzm EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==37); -{ yygotominor.yy0 = ewkt_buildGeomFromPoint( p_data, (gaiaPointPtr)yymsp[-1].minor.yy0); } - break; - case 36: /* pointm ::= EWKT_POINT_M EWKT_OPEN_BRACKET point_coordxym EWKT_CLOSE_BRACKET */ -{ yygotominor.yy0 = ewkt_buildGeomFromPoint( p_data, (gaiaPointPtr)yymsp[-1].minor.yy0); } - break; - case 38: /* point_brkt_coordxy ::= EWKT_OPEN_BRACKET coord coord EWKT_CLOSE_BRACKET */ -{ yygotominor.yy0 = (void *) ewkt_point_xy( p_data, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } - break; - case 39: /* point_brkt_coordxym ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET */ -{ yygotominor.yy0 = (void *) ewkt_point_xym( p_data, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } - break; - case 40: /* point_brkt_coordxyz ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET */ -{ yygotominor.yy0 = (void *) ewkt_point_xyz( p_data, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } - break; - case 41: /* point_brkt_coordxyzm ::= EWKT_OPEN_BRACKET coord coord coord coord EWKT_CLOSE_BRACKET */ -{ yygotominor.yy0 = (void *) ewkt_point_xyzm( p_data, (double *)yymsp[-4].minor.yy0, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } - break; - case 42: /* point_coordxy ::= coord coord */ -{ yygotominor.yy0 = (void *) ewkt_point_xy( p_data, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } - break; - case 43: /* point_coordxym ::= coord coord coord */ -{ yygotominor.yy0 = (void *) ewkt_point_xym( p_data, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } - break; - case 44: /* point_coordxyz ::= coord coord coord */ -{ yygotominor.yy0 = (void *) ewkt_point_xyz( p_data, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } - break; - case 45: /* point_coordxyzm ::= coord coord coord coord */ -{ yygotominor.yy0 = (void *) ewkt_point_xyzm( p_data, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } - break; - case 46: /* coord ::= EWKT_NUM */ - case 91: /* multipoint ::= EWKT_MULTIPOINT multipoint_text */ yytestcase(yyruleno==91); - case 92: /* multipointm ::= EWKT_MULTIPOINT_M multipoint_textm */ yytestcase(yyruleno==92); - case 93: /* multipointz ::= EWKT_MULTIPOINT multipoint_textz */ yytestcase(yyruleno==93); - case 94: /* multipointzm ::= EWKT_MULTIPOINT multipoint_textzm */ yytestcase(yyruleno==94); - case 103: /* multilinestring ::= EWKT_MULTILINESTRING multilinestring_text */ yytestcase(yyruleno==103); - case 104: /* multilinestringm ::= EWKT_MULTILINESTRING_M multilinestring_textm */ yytestcase(yyruleno==104); - case 105: /* multilinestringz ::= EWKT_MULTILINESTRING multilinestring_textz */ yytestcase(yyruleno==105); - case 106: /* multilinestringzm ::= EWKT_MULTILINESTRING multilinestring_textzm */ yytestcase(yyruleno==106); - case 119: /* multipolygon ::= EWKT_MULTIPOLYGON multipolygon_text */ yytestcase(yyruleno==119); - case 120: /* multipolygonm ::= EWKT_MULTIPOLYGON_M multipolygon_textm */ yytestcase(yyruleno==120); - case 121: /* multipolygonz ::= EWKT_MULTIPOLYGON multipolygon_textz */ yytestcase(yyruleno==121); - case 122: /* multipolygonzm ::= EWKT_MULTIPOLYGON multipolygon_textzm */ yytestcase(yyruleno==122); - case 135: /* geocoll ::= EWKT_GEOMETRYCOLLECTION geocoll_text */ yytestcase(yyruleno==135); - case 136: /* geocollm ::= EWKT_GEOMETRYCOLLECTION_M geocoll_textm */ yytestcase(yyruleno==136); - case 137: /* geocollz ::= EWKT_GEOMETRYCOLLECTION geocoll_textz */ yytestcase(yyruleno==137); - case 138: /* geocollzm ::= EWKT_GEOMETRYCOLLECTION geocoll_textzm */ yytestcase(yyruleno==138); -{ yygotominor.yy0 = yymsp[0].minor.yy0; } - break; - case 47: /* extra_brkt_pointsxy ::= */ - case 49: /* extra_brkt_pointsxym ::= */ yytestcase(yyruleno==49); - case 51: /* extra_brkt_pointsxyz ::= */ yytestcase(yyruleno==51); - case 53: /* extra_brkt_pointsxyzm ::= */ yytestcase(yyruleno==53); - case 55: /* extra_pointsxy ::= */ yytestcase(yyruleno==55); - case 57: /* extra_pointsxym ::= */ yytestcase(yyruleno==57); - case 59: /* extra_pointsxyz ::= */ yytestcase(yyruleno==59); - case 61: /* extra_pointsxyzm ::= */ yytestcase(yyruleno==61); - case 80: /* extra_rings ::= */ yytestcase(yyruleno==80); - case 83: /* extra_ringsm ::= */ yytestcase(yyruleno==83); - case 86: /* extra_ringsz ::= */ yytestcase(yyruleno==86); - case 89: /* extra_ringszm ::= */ yytestcase(yyruleno==89); - case 108: /* multilinestring_text2 ::= */ yytestcase(yyruleno==108); - case 111: /* multilinestring_textm2 ::= */ yytestcase(yyruleno==111); - case 114: /* multilinestring_textz2 ::= */ yytestcase(yyruleno==114); - case 117: /* multilinestring_textzm2 ::= */ yytestcase(yyruleno==117); - case 124: /* multipolygon_text2 ::= */ yytestcase(yyruleno==124); - case 127: /* multipolygon_textm2 ::= */ yytestcase(yyruleno==127); - case 130: /* multipolygon_textz2 ::= */ yytestcase(yyruleno==130); - case 133: /* multipolygon_textzm2 ::= */ yytestcase(yyruleno==133); - case 146: /* geocoll_text2 ::= */ yytestcase(yyruleno==146); - case 161: /* geocoll_textm2 ::= */ yytestcase(yyruleno==161); - case 176: /* geocoll_textz2 ::= */ yytestcase(yyruleno==176); - case 191: /* geocoll_textzm2 ::= */ yytestcase(yyruleno==191); -{ yygotominor.yy0 = NULL; } - break; - case 48: /* extra_brkt_pointsxy ::= EWKT_COMMA point_brkt_coordxy extra_brkt_pointsxy */ - case 50: /* extra_brkt_pointsxym ::= EWKT_COMMA point_brkt_coordxym extra_brkt_pointsxym */ yytestcase(yyruleno==50); - case 52: /* extra_brkt_pointsxyz ::= EWKT_COMMA point_brkt_coordxyz extra_brkt_pointsxyz */ yytestcase(yyruleno==52); - case 54: /* extra_brkt_pointsxyzm ::= EWKT_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm */ yytestcase(yyruleno==54); - case 56: /* extra_pointsxy ::= EWKT_COMMA point_coordxy extra_pointsxy */ yytestcase(yyruleno==56); - case 58: /* extra_pointsxym ::= EWKT_COMMA point_coordxym extra_pointsxym */ yytestcase(yyruleno==58); - case 60: /* extra_pointsxyz ::= EWKT_COMMA point_coordxyz extra_pointsxyz */ yytestcase(yyruleno==60); - case 62: /* extra_pointsxyzm ::= EWKT_COMMA point_coordxyzm extra_pointsxyzm */ yytestcase(yyruleno==62); -{ ((gaiaPointPtr)yymsp[-1].minor.yy0)->Next = (gaiaPointPtr)yymsp[0].minor.yy0; yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 63: /* linestring ::= EWKT_LINESTRING linestring_text */ - case 64: /* linestringm ::= EWKT_LINESTRING_M linestring_textm */ yytestcase(yyruleno==64); - case 65: /* linestringz ::= EWKT_LINESTRING linestring_textz */ yytestcase(yyruleno==65); - case 66: /* linestringzm ::= EWKT_LINESTRING linestring_textzm */ yytestcase(yyruleno==66); -{ yygotominor.yy0 = ewkt_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)yymsp[0].minor.yy0); } - break; - case 67: /* linestring_text ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - yygotominor.yy0 = (void *) ewkt_linestring_xy( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); - } - break; - case 68: /* linestring_textm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - yygotominor.yy0 = (void *) ewkt_linestring_xym( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); - } - break; - case 69: /* linestring_textz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - yygotominor.yy0 = (void *) ewkt_linestring_xyz( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); - } - break; - case 70: /* linestring_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - yygotominor.yy0 = (void *) ewkt_linestring_xyzm( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); - } - break; - case 71: /* polygon ::= EWKT_POLYGON polygon_text */ - case 72: /* polygonm ::= EWKT_POLYGON_M polygon_textm */ yytestcase(yyruleno==72); - case 73: /* polygonz ::= EWKT_POLYGON polygon_textz */ yytestcase(yyruleno==73); - case 74: /* polygonzm ::= EWKT_POLYGON polygon_textzm */ yytestcase(yyruleno==74); -{ yygotominor.yy0 = ewkt_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)yymsp[0].minor.yy0); } - break; - case 75: /* polygon_text ::= EWKT_OPEN_BRACKET ring extra_rings EWKT_CLOSE_BRACKET */ -{ - ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_polygon_xy( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); - } - break; - case 76: /* polygon_textm ::= EWKT_OPEN_BRACKET ringm extra_ringsm EWKT_CLOSE_BRACKET */ -{ - ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_polygon_xym( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); - } - break; - case 77: /* polygon_textz ::= EWKT_OPEN_BRACKET ringz extra_ringsz EWKT_CLOSE_BRACKET */ -{ - ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_polygon_xyz( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); - } - break; - case 78: /* polygon_textzm ::= EWKT_OPEN_BRACKET ringzm extra_ringszm EWKT_CLOSE_BRACKET */ -{ - ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_polygon_xyzm( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); - } - break; - case 79: /* ring ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; - ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_ring_xy( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); - } - break; - case 81: /* extra_rings ::= EWKT_COMMA ring extra_rings */ - case 84: /* extra_ringsm ::= EWKT_COMMA ringm extra_ringsm */ yytestcase(yyruleno==84); - case 87: /* extra_ringsz ::= EWKT_COMMA ringz extra_ringsz */ yytestcase(yyruleno==87); - case 90: /* extra_ringszm ::= EWKT_COMMA ringzm extra_ringszm */ yytestcase(yyruleno==90); -{ - ((gaiaRingPtr)yymsp[-1].minor.yy0)->Next = (gaiaRingPtr)yymsp[0].minor.yy0; - yygotominor.yy0 = yymsp[-1].minor.yy0; - } - break; - case 82: /* ringm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; - ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_ring_xym( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); - } - break; - case 85: /* ringz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; - ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_ring_xyz( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); - } - break; - case 88: /* ringzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; - ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_ring_xyzm( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); - } - break; - case 95: /* multipoint_text ::= EWKT_OPEN_BRACKET point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ - case 99: /* multipoint_text ::= EWKT_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==99); -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_multipoint_xy( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); - } - break; - case 96: /* multipoint_textm ::= EWKT_OPEN_BRACKET point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ - case 100: /* multipoint_textm ::= EWKT_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==100); -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_multipoint_xym( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); - } - break; - case 97: /* multipoint_textz ::= EWKT_OPEN_BRACKET point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ - case 101: /* multipoint_textz ::= EWKT_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==101); -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_multipoint_xyz( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); - } - break; - case 98: /* multipoint_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ - case 102: /* multipoint_textzm ::= EWKT_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==102); -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_multipoint_xyzm( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); - } - break; - case 107: /* multilinestring_text ::= EWKT_OPEN_BRACKET linestring_text multilinestring_text2 EWKT_CLOSE_BRACKET */ -{ - ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_multilinestring_xy( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); - } - break; - case 109: /* multilinestring_text2 ::= EWKT_COMMA linestring_text multilinestring_text2 */ - case 112: /* multilinestring_textm2 ::= EWKT_COMMA linestring_textm multilinestring_textm2 */ yytestcase(yyruleno==112); - case 115: /* multilinestring_textz2 ::= EWKT_COMMA linestring_textz multilinestring_textz2 */ yytestcase(yyruleno==115); - case 118: /* multilinestring_textzm2 ::= EWKT_COMMA linestring_textzm multilinestring_textzm2 */ yytestcase(yyruleno==118); -{ ((gaiaLinestringPtr)yymsp[-1].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[0].minor.yy0; yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 110: /* multilinestring_textm ::= EWKT_OPEN_BRACKET linestring_textm multilinestring_textm2 EWKT_CLOSE_BRACKET */ -{ - ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_multilinestring_xym( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); - } - break; - case 113: /* multilinestring_textz ::= EWKT_OPEN_BRACKET linestring_textz multilinestring_textz2 EWKT_CLOSE_BRACKET */ -{ - ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_multilinestring_xyz( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); - } - break; - case 116: /* multilinestring_textzm ::= EWKT_OPEN_BRACKET linestring_textzm multilinestring_textzm2 EWKT_CLOSE_BRACKET */ -{ - ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_multilinestring_xyzm( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); - } - break; - case 123: /* multipolygon_text ::= EWKT_OPEN_BRACKET polygon_text multipolygon_text2 EWKT_CLOSE_BRACKET */ -{ - ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_multipolygon_xy( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); - } - break; - case 125: /* multipolygon_text2 ::= EWKT_COMMA polygon_text multipolygon_text2 */ - case 128: /* multipolygon_textm2 ::= EWKT_COMMA polygon_textm multipolygon_textm2 */ yytestcase(yyruleno==128); - case 131: /* multipolygon_textz2 ::= EWKT_COMMA polygon_textz multipolygon_textz2 */ yytestcase(yyruleno==131); - case 134: /* multipolygon_textzm2 ::= EWKT_COMMA polygon_textzm multipolygon_textzm2 */ yytestcase(yyruleno==134); -{ ((gaiaPolygonPtr)yymsp[-1].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[0].minor.yy0; yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 126: /* multipolygon_textm ::= EWKT_OPEN_BRACKET polygon_textm multipolygon_textm2 EWKT_CLOSE_BRACKET */ -{ - ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_multipolygon_xym( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); - } - break; - case 129: /* multipolygon_textz ::= EWKT_OPEN_BRACKET polygon_textz multipolygon_textz2 EWKT_CLOSE_BRACKET */ -{ - ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_multipolygon_xyz( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); - } - break; - case 132: /* multipolygon_textzm ::= EWKT_OPEN_BRACKET polygon_textzm multipolygon_textzm2 EWKT_CLOSE_BRACKET */ -{ - ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_multipolygon_xyzm( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); - } - break; - case 139: /* geocoll_text ::= EWKT_OPEN_BRACKET point geocoll_text2 EWKT_CLOSE_BRACKET */ - case 140: /* geocoll_text ::= EWKT_OPEN_BRACKET linestring geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==140); - case 141: /* geocoll_text ::= EWKT_OPEN_BRACKET polygon geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==141); - case 142: /* geocoll_text ::= EWKT_OPEN_BRACKET multipoint geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==142); - case 143: /* geocoll_text ::= EWKT_OPEN_BRACKET multilinestring geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==143); - case 144: /* geocoll_text ::= EWKT_OPEN_BRACKET multipolygon geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==144); - case 145: /* geocoll_text ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==145); -{ - ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); - } - break; - case 147: /* geocoll_text2 ::= EWKT_COMMA point geocoll_text2 */ - case 148: /* geocoll_text2 ::= EWKT_COMMA linestring geocoll_text2 */ yytestcase(yyruleno==148); - case 149: /* geocoll_text2 ::= EWKT_COMMA polygon geocoll_text2 */ yytestcase(yyruleno==149); - case 150: /* geocoll_text2 ::= EWKT_COMMA multipoint geocoll_text2 */ yytestcase(yyruleno==150); - case 151: /* geocoll_text2 ::= EWKT_COMMA multilinestring geocoll_text2 */ yytestcase(yyruleno==151); - case 152: /* geocoll_text2 ::= EWKT_COMMA multipolygon geocoll_text2 */ yytestcase(yyruleno==152); - case 153: /* geocoll_text2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 */ yytestcase(yyruleno==153); - case 162: /* geocoll_textm2 ::= EWKT_COMMA pointm geocoll_textm2 */ yytestcase(yyruleno==162); - case 163: /* geocoll_textm2 ::= EWKT_COMMA linestringm geocoll_textm2 */ yytestcase(yyruleno==163); - case 164: /* geocoll_textm2 ::= EWKT_COMMA polygonm geocoll_textm2 */ yytestcase(yyruleno==164); - case 165: /* geocoll_textm2 ::= EWKT_COMMA multipointm geocoll_textm2 */ yytestcase(yyruleno==165); - case 166: /* geocoll_textm2 ::= EWKT_COMMA multilinestringm geocoll_textm2 */ yytestcase(yyruleno==166); - case 167: /* geocoll_textm2 ::= EWKT_COMMA multipolygonm geocoll_textm2 */ yytestcase(yyruleno==167); - case 168: /* geocoll_textm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 */ yytestcase(yyruleno==168); - case 177: /* geocoll_textz2 ::= EWKT_COMMA pointz geocoll_textz2 */ yytestcase(yyruleno==177); - case 178: /* geocoll_textz2 ::= EWKT_COMMA linestringz geocoll_textz2 */ yytestcase(yyruleno==178); - case 179: /* geocoll_textz2 ::= EWKT_COMMA polygonz geocoll_textz2 */ yytestcase(yyruleno==179); - case 180: /* geocoll_textz2 ::= EWKT_COMMA multipointz geocoll_textz2 */ yytestcase(yyruleno==180); - case 181: /* geocoll_textz2 ::= EWKT_COMMA multilinestringz geocoll_textz2 */ yytestcase(yyruleno==181); - case 182: /* geocoll_textz2 ::= EWKT_COMMA multipolygonz geocoll_textz2 */ yytestcase(yyruleno==182); - case 183: /* geocoll_textz2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 */ yytestcase(yyruleno==183); - case 192: /* geocoll_textzm2 ::= EWKT_COMMA pointzm geocoll_textzm2 */ yytestcase(yyruleno==192); - case 193: /* geocoll_textzm2 ::= EWKT_COMMA linestringzm geocoll_textzm2 */ yytestcase(yyruleno==193); - case 194: /* geocoll_textzm2 ::= EWKT_COMMA polygonzm geocoll_textzm2 */ yytestcase(yyruleno==194); - case 195: /* geocoll_textzm2 ::= EWKT_COMMA multipointzm geocoll_textzm2 */ yytestcase(yyruleno==195); - case 196: /* geocoll_textzm2 ::= EWKT_COMMA multilinestringzm geocoll_textzm2 */ yytestcase(yyruleno==196); - case 197: /* geocoll_textzm2 ::= EWKT_COMMA multipolygonzm geocoll_textzm2 */ yytestcase(yyruleno==197); - case 198: /* geocoll_textzm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 */ yytestcase(yyruleno==198); -{ - ((gaiaGeomCollPtr)yymsp[-1].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[0].minor.yy0; - yygotominor.yy0 = yymsp[-1].minor.yy0; - } - break; - case 154: /* geocoll_textm ::= EWKT_OPEN_BRACKET pointm geocoll_textm2 EWKT_CLOSE_BRACKET */ - case 155: /* geocoll_textm ::= EWKT_OPEN_BRACKET linestringm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==155); - case 156: /* geocoll_textm ::= EWKT_OPEN_BRACKET polygonm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==156); - case 157: /* geocoll_textm ::= EWKT_OPEN_BRACKET multipointm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==157); - case 158: /* geocoll_textm ::= EWKT_OPEN_BRACKET multilinestringm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==158); - case 159: /* geocoll_textm ::= EWKT_OPEN_BRACKET multipolygonm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==159); - case 160: /* geocoll_textm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==160); -{ - ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); - } - break; - case 169: /* geocoll_textz ::= EWKT_OPEN_BRACKET pointz geocoll_textz2 EWKT_CLOSE_BRACKET */ - case 170: /* geocoll_textz ::= EWKT_OPEN_BRACKET linestringz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==170); - case 171: /* geocoll_textz ::= EWKT_OPEN_BRACKET polygonz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==171); - case 172: /* geocoll_textz ::= EWKT_OPEN_BRACKET multipointz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==172); - case 173: /* geocoll_textz ::= EWKT_OPEN_BRACKET multilinestringz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==173); - case 174: /* geocoll_textz ::= EWKT_OPEN_BRACKET multipolygonz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==174); - case 175: /* geocoll_textz ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==175); -{ - ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); - } - break; - case 184: /* geocoll_textzm ::= EWKT_OPEN_BRACKET pointzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ - case 185: /* geocoll_textzm ::= EWKT_OPEN_BRACKET linestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==185); - case 186: /* geocoll_textzm ::= EWKT_OPEN_BRACKET polygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==186); - case 187: /* geocoll_textzm ::= EWKT_OPEN_BRACKET multipointzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==187); - case 188: /* geocoll_textzm ::= EWKT_OPEN_BRACKET multilinestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==188); - case 189: /* geocoll_textzm ::= EWKT_OPEN_BRACKET multipolygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==189); - case 190: /* geocoll_textzm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ yytestcase(yyruleno==190); -{ - ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); - } - break; - default: - /* (0) main ::= in */ yytestcase(yyruleno==0); - /* (1) in ::= */ yytestcase(yyruleno==1); - /* (2) in ::= in state EWKT_NEWLINE */ yytestcase(yyruleno==2); - /* (3) state ::= program */ yytestcase(yyruleno==3); - /* (4) program ::= geo_text */ yytestcase(yyruleno==4); - /* (5) program ::= geo_textm */ yytestcase(yyruleno==5); - break; - }; - yygoto = yyRuleInfo[yyruleno].lhs; - yysize = yyRuleInfo[yyruleno].nrhs; - yypParser->yyidx -= yysize; - yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto); - if( yyact < YYNSTATE ){ -#ifdef NDEBUG - /* If we are not debugging and the reduce action popped at least - ** one element off the stack, then we can push the new element back - ** onto the stack here, and skip the stack overflow test in yy_shift(). - ** That gives a significant speed improvement. */ - if( yysize ){ - yypParser->yyidx++; - yymsp -= yysize-1; - yymsp->stateno = (YYACTIONTYPE)yyact; - yymsp->major = (YYCODETYPE)yygoto; - yymsp->minor = yygotominor; - }else -#endif - { - yy_shift(yypParser,yyact,yygoto,&yygotominor); - } - }else{ - assert( yyact == YYNSTATE + YYNRULE + 1 ); - yy_accept(yypParser); - } -} - -/* -** The following code executes when the parse fails -*/ -#ifndef YYNOERRORRECOVERY -static void yy_parse_failed( - yyParser *yypParser /* The parser */ -){ - ParseARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser fails */ - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} -#endif /* YYNOERRORRECOVERY */ - -/* -** The following code executes when a syntax error first occurs. -*/ -static void yy_syntax_error( - yyParser *yypParser, /* The parser */ - int yymajor, /* The major type of the error token */ - YYMINORTYPE yyminor /* The minor type of the error token */ -){ - ParseARG_FETCH; -#define TOKEN (yyminor.yy0) - -/* -** when the LEMON parser encounters an error -** then this global variable is set -*/ - p_data->ewkt_parse_error = 1; - p_data->result = NULL; - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* -** The following is executed when the parser accepts -*/ -static void yy_accept( - yyParser *yypParser /* The parser */ -){ - ParseARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser accepts */ - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* The main parser program. -** The first argument is a pointer to a structure obtained from -** "ParseAlloc" which describes the current state of the parser. -** The second argument is the major token number. The third is -** the minor token. The fourth optional argument is whatever the -** user wants (and specified in the grammar) and is available for -** use by the action routines. -** -** Inputs: -**
    -**
  • A pointer to the parser (an opaque structure.) -**
  • The major token number. -**
  • The minor token number. -**
  • An option argument of a grammar-specified type. -**
-** -** Outputs: -** None. -*/ -void Parse( - void *yyp, /* The parser */ - int yymajor, /* The major token code number */ - ParseTOKENTYPE yyminor /* The value for the token */ - ParseARG_PDECL /* Optional %extra_argument parameter */ -){ - YYMINORTYPE yyminorunion; - int yyact; /* The parser action. */ - int yyendofinput; /* True if we are at the end of input */ -#ifdef YYERRORSYMBOL - int yyerrorhit = 0; /* True if yymajor has invoked an error */ -#endif - yyParser *yypParser; /* The parser */ - - /* (re)initialize the parser, if necessary */ - yypParser = (yyParser*)yyp; - if( yypParser->yyidx<0 ){ -#if YYSTACKDEPTH<=0 - if( yypParser->yystksz <=0 ){ - /*memset(&yyminorunion, 0, sizeof(yyminorunion));*/ - yyminorunion = yyzerominor; - yyStackOverflow(yypParser, &yyminorunion); - return; - } -#endif - yypParser->yyidx = 0; - yypParser->yyerrcnt = -1; - yypParser->yystack[0].stateno = 0; - yypParser->yystack[0].major = 0; - } - yyminorunion.yy0 = yyminor; - yyendofinput = (yymajor==0); - ParseARG_STORE; - -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]); - } -#endif - - do{ - yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor); - if( yyactyyerrcnt--; - yymajor = YYNOCODE; - }else if( yyact < YYNSTATE + YYNRULE ){ - yy_reduce(yypParser,yyact-YYNSTATE); - }else{ - assert( yyact == YY_ERROR_ACTION ); -#ifdef YYERRORSYMBOL - int yymx; -#endif -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt); - } -#endif -#ifdef YYERRORSYMBOL - /* A syntax error has occurred. - ** The response to an error depends upon whether or not the - ** grammar defines an error token "ERROR". - ** - ** This is what we do if the grammar does define ERROR: - ** - ** * Call the %syntax_error function. - ** - ** * Begin popping the stack until we enter a state where - ** it is legal to shift the error symbol, then shift - ** the error symbol. - ** - ** * Set the error count to three. - ** - ** * Begin accepting and shifting new tokens. No new error - ** processing will occur until three tokens have been - ** shifted successfully. - ** - */ - if( yypParser->yyerrcnt<0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yymx = yypParser->yystack[yypParser->yyidx].major; - if( yymx==YYERRORSYMBOL || yyerrorhit ){ -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sDiscard input token %s\n", - yyTracePrompt,yyTokenName[yymajor]); - } -#endif - yy_destructor(yypParser, (YYCODETYPE)yymajor,&yyminorunion); - yymajor = YYNOCODE; - }else{ - while( - yypParser->yyidx >= 0 && - yymx != YYERRORSYMBOL && - (yyact = yy_find_reduce_action( - yypParser->yystack[yypParser->yyidx].stateno, - YYERRORSYMBOL)) >= YYNSTATE - ){ - yy_pop_parser_stack(yypParser); - } - if( yypParser->yyidx < 0 || yymajor==0 ){ - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - yy_parse_failed(yypParser); - yymajor = YYNOCODE; - }else if( yymx!=YYERRORSYMBOL ){ - YYMINORTYPE u2; - u2.YYERRSYMDT = 0; - yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2); - } - } - yypParser->yyerrcnt = 3; - yyerrorhit = 1; -#elif defined(YYNOERRORRECOVERY) - /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to - ** do any kind of error recovery. Instead, simply invoke the syntax - ** error routine and continue going as if nothing had happened. - ** - ** Applications can set this macro (for example inside %include) if - ** they intend to abandon the parse upon the first syntax error seen. - */ - yy_syntax_error(yypParser,yymajor,yyminorunion); - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - yymajor = YYNOCODE; - -#else /* YYERRORSYMBOL is not defined */ - /* This is what we do if the grammar does not define ERROR: - ** - ** * Report an error message, and throw away the input token. - ** - ** * If the input token is $, then fail the parse. - ** - ** As before, subsequent error messages are suppressed until - ** three input tokens have been successfully shifted. - */ - if( yypParser->yyerrcnt<=0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yypParser->yyerrcnt = 3; - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - if( yyendofinput ){ - yy_parse_failed(yypParser); - } - yymajor = YYNOCODE; -#endif - } - }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 ); - return; -} diff --git a/src/spatialite/src/gaiageo/Ewkt.h b/src/spatialite/src/gaiageo/Ewkt.h deleted file mode 100644 index 9670866..0000000 --- a/src/spatialite/src/gaiageo/Ewkt.h +++ /dev/null @@ -1,21 +0,0 @@ -#define EWKT_NEWLINE 1 -#define EWKT_POINT 2 -#define EWKT_OPEN_BRACKET 3 -#define EWKT_CLOSE_BRACKET 4 -#define EWKT_POINT_M 5 -#define EWKT_NUM 6 -#define EWKT_COMMA 7 -#define EWKT_LINESTRING 8 -#define EWKT_LINESTRING_M 9 -#define EWKT_POLYGON 10 -#define EWKT_POLYGON_M 11 -#define EWKT_MULTIPOINT 12 -#define EWKT_MULTIPOINT_M 13 -#define EWKT_MULTILINESTRING 14 -#define EWKT_MULTILINESTRING_M 15 -#define EWKT_MULTIPOLYGON 16 -#define EWKT_MULTIPOLYGON_M 17 -#define EWKT_GEOMETRYCOLLECTION 18 -#define EWKT_GEOMETRYCOLLECTION_M 19 -#define EWKT_GEOMETRYCOLLECTION_Z 20 -#define EWKT_GEOMETRYCOLLECTION_ZM 21 diff --git a/src/spatialite/src/gaiageo/Gml.c b/src/spatialite/src/gaiageo/Gml.c deleted file mode 100644 index 13e39da..0000000 --- a/src/spatialite/src/gaiageo/Gml.c +++ /dev/null @@ -1,1053 +0,0 @@ -/* Driver template for the LEMON parser generator. -** The author disclaims copyright to this source code. -*/ -/* First off, code is included that follows the "include" declaration -** in the input grammar file. */ -#include - -/* Next is all token values, in a form suitable for use by makeheaders. -** This section will be null unless lemon is run with the -m switch. -*/ -/* -** These constants (all generated automatically by the parser generator) -** specify the various kinds of tokens (terminals) that the parser -** understands. -** -** Each symbol here is a terminal symbol in the grammar. -*/ -/* Make sure the INTERFACE macro is defined. -*/ -#ifndef INTERFACE -# define INTERFACE 1 -#endif -/* The next thing included is series of defines which control -** various aspects of the generated parser. -** YYCODETYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 terminals -** and nonterminals. "int" is used otherwise. -** YYNOCODE is a number of type YYCODETYPE which corresponds -** to no legal terminal or nonterminal number. This -** number is used to fill in empty slots of the hash -** table. -** YYFALLBACK If defined, this indicates that one or more tokens -** have fall-back values which should be used if the -** original value of the token will not parse. -** YYACTIONTYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 rules and -** states combined. "int" is used otherwise. -** ParseTOKENTYPE is the data type used for minor tokens given -** directly to the parser from the tokenizer. -** YYMINORTYPE is the data type used for all minor tokens. -** This is typically a union of many types, one of -** which is ParseTOKENTYPE. The entry in the union -** for base tokens is called "yy0". -** YYSTACKDEPTH is the maximum depth of the parser's stack. If -** zero the stack is dynamically sized using realloc() -** ParseARG_SDECL A static variable declaration for the %extra_argument -** ParseARG_PDECL A parameter declaration for the %extra_argument -** ParseARG_STORE Code to store %extra_argument into yypParser -** ParseARG_FETCH Code to extract %extra_argument from yypParser -** YYNSTATE the combined number of states. -** YYNRULE the number of rules in the grammar -** YYERRORSYMBOL is the code number of the error symbol. If not -** defined, then do no error processing. -*/ -#define YYCODETYPE unsigned char -#define YYNOCODE 28 -#define YYACTIONTYPE unsigned char -#define ParseTOKENTYPE void * -typedef union { - int yyinit; - ParseTOKENTYPE yy0; -} YYMINORTYPE; -#ifndef YYSTACKDEPTH -#define YYSTACKDEPTH 1000000 -#endif -#define ParseARG_SDECL struct gml_data *p_data ; -#define ParseARG_PDECL , struct gml_data *p_data -#define ParseARG_FETCH struct gml_data *p_data = yypParser->p_data -#define ParseARG_STORE yypParser->p_data = p_data -#define YYNSTATE 49 -#define YYNRULE 34 -#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) -#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) -#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) - -/* The yyzerominor constant is used to initialize instances of -** YYMINORTYPE objects to zero. */ -static const YYMINORTYPE yyzerominor = { 0 }; - -/* Define the yytestcase() macro to be a no-op if is not already defined -** otherwise. -** -** Applications can choose to define yytestcase() in the %include section -** to a macro that can assist in verifying code coverage. For production -** code the yytestcase() macro should be turned off. But it is useful -** for testing. -*/ -#ifndef yytestcase -# define yytestcase(X) -#endif - - -/* Next are the tables used to determine what action to take based on the -** current state and lookahead token. These tables are used to implement -** functions that take a state number and lookahead value and return an -** action integer. -** -** Suppose the action integer is N. Then the action is determined as -** follows -** -** 0 <= N < YYNSTATE Shift N. That is, push the lookahead -** token onto the stack and goto state N. -** -** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. -** -** N == YYNSTATE+YYNRULE A syntax error has occurred. -** -** N == YYNSTATE+YYNRULE+1 The parser accepts its input. -** -** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused -** slots in the yy_action[] table. -** -** The action table is constructed as a single large table named yy_action[]. -** Given state S and lookahead X, the action is computed as -** -** yy_action[ yy_shift_ofst[S] + X ] -** -** If the index value yy_shift_ofst[S]+X is out of range or if the value -** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] -** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table -** and that yy_default[S] should be used instead. -** -** The formula above is for computing the action when the lookahead is -** a terminal symbol. If the lookahead is a non-terminal (as occurs after -** a reduce action) then the yy_reduce_ofst[] array is used in place of -** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of -** YY_SHIFT_USE_DFLT. -** -** The following are the tables generated in this section: -** -** yy_action[] A single table containing all actions. -** yy_lookahead[] A table containing the lookahead for each entry in -** yy_action. Used to detect hash collisions. -** yy_shift_ofst[] For each state, the offset into yy_action for -** shifting terminals. -** yy_reduce_ofst[] For each state, the offset into yy_action for -** shifting non-terminals after a reduce. -** yy_default[] Default action for each state. -*/ -static const YYACTIONTYPE yy_action[] = { - /* 0 */ 20, 28, 29, 4, 48, 5, 3, 3, 5, 5, - /* 10 */ 42, 84, 1, 42, 42, 47, 46, 2, 10, 5, - /* 20 */ 21, 12, 32, 23, 42, 38, 22, 6, 49, 23, - /* 30 */ 13, 19, 14, 15, 35, 8, 8, 10, 25, 11, - /* 40 */ 18, 34, 33, 45, 37, 16, 40, 17, 41, 14, - /* 50 */ 9, 23, 43, 7, 45, 27, 30, 26, 31, 36, - /* 60 */ 39, 44, 24, -}; -static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 12, 13, 14, 15, 16, 17, 15, 15, 17, 17, - /* 10 */ 22, 10, 11, 22, 22, 24, 24, 15, 18, 17, - /* 20 */ 2, 3, 8, 5, 22, 25, 2, 3, 0, 5, - /* 30 */ 18, 19, 4, 20, 21, 20, 20, 18, 2, 3, - /* 40 */ 2, 26, 26, 5, 25, 20, 21, 20, 21, 4, - /* 50 */ 18, 5, 23, 20, 5, 1, 3, 23, 3, 7, - /* 60 */ 3, 3, 6, -}; -#define YY_SHIFT_USE_DFLT (-1) -#define YY_SHIFT_MAX 26 -static const signed char yy_shift_ofst[] = { - /* 0 */ -1, 28, 45, 45, 45, 18, 14, 14, 14, 46, - /* 10 */ 46, 14, 14, 24, 38, 14, 14, 14, 49, 36, - /* 20 */ 54, 53, 55, 56, 52, 57, 58, -}; -#define YY_REDUCE_USE_DFLT (-13) -#define YY_REDUCE_MAX 18 -static const signed char yy_reduce_ofst[] = { - /* 0 */ 1, -12, -9, -8, 2, 12, 13, 15, 16, 0, - /* 10 */ 19, 25, 27, 32, 29, 33, 33, 33, 34, -}; -static const YYACTIONTYPE yy_default[] = { - /* 0 */ 50, 83, 72, 72, 54, 83, 60, 80, 80, 76, - /* 10 */ 76, 61, 59, 83, 83, 64, 66, 62, 83, 83, - /* 20 */ 83, 83, 83, 83, 83, 83, 83, 51, 52, 53, - /* 30 */ 56, 57, 79, 81, 82, 65, 75, 77, 78, 58, - /* 40 */ 67, 63, 68, 69, 70, 71, 73, 74, 55, -}; -#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0])) - -/* The next table maps tokens into fallback tokens. If a construct -** like the following: -** -** %fallback ID X Y Z. -** -** appears in the grammar, then ID becomes a fallback token for X, Y, -** and Z. Whenever one of the tokens X, Y, or Z is input to the parser -** but it does not parse, the type of the token is changed to ID and -** the parse is retried before an error is thrown. -*/ -#ifdef YYFALLBACK -static const YYCODETYPE yyFallback[] = { -}; -#endif /* YYFALLBACK */ - -/* The following structure represents a single element of the -** parser's stack. Information stored includes: -** -** + The state number for the parser at this level of the stack. -** -** + The value of the token stored at this level of the stack. -** (In other words, the "major" token.) -** -** + The semantic value stored at this level of the stack. This is -** the information used by the action routines in the grammar. -** It is sometimes called the "minor" token. -*/ -struct yyStackEntry { - YYACTIONTYPE stateno; /* The state-number */ - YYCODETYPE major; /* The major token value. This is the code - ** number for the token at this stack level */ - YYMINORTYPE minor; /* The user-supplied minor token value. This - ** is the value of the token */ -}; -typedef struct yyStackEntry yyStackEntry; - -/* The state of the parser is completely contained in an instance of -** the following structure */ -struct yyParser { - int yyidx; /* Index of top element in stack */ -#ifdef YYTRACKMAXSTACKDEPTH - int yyidxMax; /* Maximum value of yyidx */ -#endif - int yyerrcnt; /* Shifts left before out of the error */ - ParseARG_SDECL /* A place to hold %extra_argument */ -#if YYSTACKDEPTH<=0 - int yystksz; /* Current side of the stack */ - yyStackEntry *yystack; /* The parser's stack */ -#else - yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ -#endif -}; -typedef struct yyParser yyParser; - -#ifndef NDEBUG -#include -static FILE *yyTraceFILE = 0; -static char *yyTracePrompt = 0; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* -** Turn parser tracing on by giving a stream to which to write the trace -** and a prompt to preface each trace message. Tracing is turned off -** by making either argument NULL -** -** Inputs: -**
    -**
  • A FILE* to which trace output should be written. -** If NULL, then tracing is turned off. -**
  • A prefix string written at the beginning of every -** line of trace output. If NULL, then tracing is -** turned off. -**
-** -** Outputs: -** None. -*/ -void ParseTrace(FILE *TraceFILE, char *zTracePrompt){ - yyTraceFILE = TraceFILE; - yyTracePrompt = zTracePrompt; - if( yyTraceFILE==0 ) yyTracePrompt = 0; - else if( yyTracePrompt==0 ) yyTraceFILE = 0; -} -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing shifts, the names of all terminals and nonterminals -** are required. The following table supplies these names */ -static const char *const yyTokenName[] = { - "$", "GML_NEWLINE", "GML_END", "GML_CLOSE", - "GML_OPEN", "GML_KEYWORD", "GML_EQ", "GML_VALUE", - "GML_COORD", "error", "main", "in", - "state", "program", "gml_tree", "node", - "node_chain", "open_tag", "attr", "attributes", - "coord", "coord_chain", "close_tag", "keyword", - "extra_nodes", "extra_attr", "extra_coord", -}; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing reduce actions, the names of all rules are required. -*/ -static const char *const yyRuleName[] = { - /* 0 */ "main ::= in", - /* 1 */ "in ::=", - /* 2 */ "in ::= in state GML_NEWLINE", - /* 3 */ "state ::= program", - /* 4 */ "program ::= gml_tree", - /* 5 */ "gml_tree ::= node", - /* 6 */ "gml_tree ::= node_chain", - /* 7 */ "node ::= open_tag GML_END GML_CLOSE", - /* 8 */ "node ::= open_tag attr GML_END GML_CLOSE", - /* 9 */ "node ::= open_tag attributes GML_END GML_CLOSE", - /* 10 */ "node ::= open_tag GML_CLOSE", - /* 11 */ "node ::= open_tag attr GML_CLOSE", - /* 12 */ "node ::= open_tag attributes GML_CLOSE", - /* 13 */ "node ::= open_tag GML_CLOSE coord", - /* 14 */ "node ::= open_tag GML_CLOSE coord_chain", - /* 15 */ "node ::= open_tag attr GML_CLOSE coord", - /* 16 */ "node ::= open_tag attr GML_CLOSE coord_chain", - /* 17 */ "node ::= open_tag attributes GML_CLOSE coord", - /* 18 */ "node ::= open_tag attributes GML_CLOSE coord_chain", - /* 19 */ "node ::= close_tag", - /* 20 */ "open_tag ::= GML_OPEN keyword", - /* 21 */ "close_tag ::= GML_OPEN GML_END keyword GML_CLOSE", - /* 22 */ "keyword ::= GML_KEYWORD", - /* 23 */ "extra_nodes ::=", - /* 24 */ "extra_nodes ::= node extra_nodes", - /* 25 */ "node_chain ::= node node extra_nodes", - /* 26 */ "attr ::= GML_KEYWORD GML_EQ GML_VALUE", - /* 27 */ "extra_attr ::=", - /* 28 */ "extra_attr ::= attr extra_attr", - /* 29 */ "attributes ::= attr attr extra_attr", - /* 30 */ "coord ::= GML_COORD", - /* 31 */ "extra_coord ::=", - /* 32 */ "extra_coord ::= coord extra_coord", - /* 33 */ "coord_chain ::= coord coord extra_coord", -}; -#endif /* NDEBUG */ - - -#if YYSTACKDEPTH<=0 -/* -** Try to increase the size of the parser stack. -*/ -static void yyGrowStack(yyParser *p){ - int newSize; - yyStackEntry *pNew; - - newSize = p->yystksz*2 + 100; - pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); - if( pNew ){ - p->yystack = pNew; - p->yystksz = newSize; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack grows to %d entries!\n", - yyTracePrompt, p->yystksz); - } -#endif - } -} -#endif - -/* -** This function allocates a new parser. -** The only argument is a pointer to a function which works like -** malloc. -** -** Inputs: -** A pointer to the function used to allocate memory. -** -** Outputs: -** A pointer to a parser. This pointer is used in subsequent calls -** to Parse and ParseFree. -*/ -void *ParseAlloc(void *(*mallocProc)(size_t)){ - yyParser *pParser; - pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) ); - if( pParser ){ - pParser->yyidx = -1; -#ifdef YYTRACKMAXSTACKDEPTH - pParser->yyidxMax = 0; -#endif -#if YYSTACKDEPTH<=0 - pParser->yystack = NULL; - pParser->yystksz = 0; - yyGrowStack(pParser); -#endif - } - return pParser; -} - -/* The following function deletes the value associated with a -** symbol. The symbol can be either a terminal or nonterminal. -** "yymajor" is the symbol code, and "yypminor" is a pointer to -** the value. -*/ -static void yy_destructor( - yyParser *yypParser, /* The parser */ - YYCODETYPE yymajor, /* Type code for object to destroy */ - YYMINORTYPE *yypminor /* The object to be destroyed */ -){ - switch( yymajor ){ - /* Here is inserted the actions which take place when a - ** terminal or non-terminal is destroyed. This can happen - ** when the symbol is popped from the stack during a - ** reduce or during error processing or when a parser is - ** being destroyed before it is finished parsing. - ** - ** Note: during a reduce, the only symbols destroyed are those - ** which appear on the RHS of the rule, but which are not used - ** inside the C code. - */ - default: break; /* If no destructor action specified: do nothing */ - } -} - -/* -** Pop the parser's stack once. -** -** If there is a destructor routine associated with the token which -** is popped from the stack, then call it. -** -** Return the major token number for the symbol popped. -*/ -static int yy_pop_parser_stack(yyParser *pParser){ - YYCODETYPE yymajor; - yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; - - if( pParser->yyidx<0 ) return 0; -#ifndef NDEBUG - if( yyTraceFILE && pParser->yyidx>=0 ){ - fprintf(yyTraceFILE,"%sPopping %s\n", - yyTracePrompt, - yyTokenName[yytos->major]); - } -#endif - yymajor = yytos->major; - yy_destructor(pParser, yymajor, &yytos->minor); - pParser->yyidx--; - return yymajor; -} - -/* -** Deallocate and destroy a parser. Destructors are all called for -** all stack elements before shutting the parser down. -** -** Inputs: -**
    -**
  • A pointer to the parser. This should be a pointer -** obtained from ParseAlloc. -**
  • A pointer to a function used to reclaim memory obtained -** from malloc. -**
-*/ -void ParseFree( - void *p, /* The parser to be deleted */ - void (*freeProc)(void*) /* Function used to reclaim memory */ -){ - yyParser *pParser = (yyParser*)p; - if( pParser==0 ) return; - while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser); -#if YYSTACKDEPTH<=0 - free(pParser->yystack); -#endif - (*freeProc)((void*)pParser); -} - -/* -** Return the peak depth of the stack for a parser. -*/ -#ifdef YYTRACKMAXSTACKDEPTH -int ParseStackPeak(void *p){ - yyParser *pParser = (yyParser*)p; - return pParser->yyidxMax; -} -#endif - -/* -** Find the appropriate action for a parser given the terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_shift_action( - yyParser *pParser, /* The parser */ - YYCODETYPE iLookAhead /* The look-ahead token */ -){ - int i; - int stateno = pParser->yystack[pParser->yyidx].stateno; - - if( stateno>YY_SHIFT_MAX || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){ - return yy_default[stateno]; - } - assert( iLookAhead!=YYNOCODE ); - i += iLookAhead; - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ - if( iLookAhead>0 ){ -#ifdef YYFALLBACK - YYCODETYPE iFallback; /* Fallback token */ - if( iLookAhead %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); - } -#endif - return yy_find_shift_action(pParser, iFallback); - } -#endif -#ifdef YYWILDCARD - { - int j = i - iLookAhead + YYWILDCARD; - if( j>=0 && j %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); - } -#endif /* NDEBUG */ - return yy_action[j]; - } - } -#endif /* YYWILDCARD */ - } - return yy_default[stateno]; - }else{ - return yy_action[i]; - } -} - -/* -** Find the appropriate action for a parser given the non-terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_reduce_action( - int stateno, /* Current state number */ - YYCODETYPE iLookAhead /* The look-ahead token */ -){ - int i; -#ifdef YYERRORSYMBOL - if( stateno>YY_REDUCE_MAX ){ - return yy_default[stateno]; - } -#else - assert( stateno<=YY_REDUCE_MAX ); -#endif - i = yy_reduce_ofst[stateno]; - assert( i!=YY_REDUCE_USE_DFLT ); - assert( iLookAhead!=YYNOCODE ); - i += iLookAhead; -#ifdef YYERRORSYMBOL - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ - return yy_default[stateno]; - } -#else - assert( i>=0 && iyyidx--; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will execute if the parser - ** stack every overflows */ - - spatialite_e( "Giving up. Parser stack overflow\n"); - ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ -} - -/* -** Perform a shift action. -*/ -static void yy_shift( - yyParser *yypParser, /* The parser to be shifted */ - int yyNewState, /* The new state to shift in */ - int yyMajor, /* The major token to shift in */ - YYMINORTYPE *yypMinor /* Pointer to the minor token to shift in */ -){ - yyStackEntry *yytos; - yypParser->yyidx++; -#ifdef YYTRACKMAXSTACKDEPTH - if( yypParser->yyidx>yypParser->yyidxMax ){ - yypParser->yyidxMax = yypParser->yyidx; - } -#endif -#if YYSTACKDEPTH>0 - if( yypParser->yyidx>=YYSTACKDEPTH ){ - yyStackOverflow(yypParser, yypMinor); - return; - } -#else - if( yypParser->yyidx>=yypParser->yystksz ){ - yyGrowStack(yypParser); - if( yypParser->yyidx>=yypParser->yystksz ){ - yyStackOverflow(yypParser, yypMinor); - return; - } - } -#endif - yytos = &yypParser->yystack[yypParser->yyidx]; - yytos->stateno = (YYACTIONTYPE)yyNewState; - yytos->major = (YYCODETYPE)yyMajor; - yytos->minor = *yypMinor; -#ifndef NDEBUG - if( yyTraceFILE && yypParser->yyidx>0 ){ - int i; - fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState); - fprintf(yyTraceFILE,"%sStack:",yyTracePrompt); - for(i=1; i<=yypParser->yyidx; i++) - fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]); - fprintf(yyTraceFILE,"\n"); - } -#endif -} - -/* The following table contains information about every rule that -** is used during the reduce. -*/ -static const struct { - YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ - unsigned char nrhs; /* Number of right-hand side symbols in the rule */ -} yyRuleInfo[] = { - { 10, 1 }, - { 11, 0 }, - { 11, 3 }, - { 12, 1 }, - { 13, 1 }, - { 14, 1 }, - { 14, 1 }, - { 15, 3 }, - { 15, 4 }, - { 15, 4 }, - { 15, 2 }, - { 15, 3 }, - { 15, 3 }, - { 15, 3 }, - { 15, 3 }, - { 15, 4 }, - { 15, 4 }, - { 15, 4 }, - { 15, 4 }, - { 15, 1 }, - { 17, 2 }, - { 22, 4 }, - { 23, 1 }, - { 24, 0 }, - { 24, 2 }, - { 16, 3 }, - { 18, 3 }, - { 25, 0 }, - { 25, 2 }, - { 19, 3 }, - { 20, 1 }, - { 26, 0 }, - { 26, 2 }, - { 21, 3 }, -}; - -static void yy_accept(yyParser*); /* Forward Declaration */ - -/* -** Perform a reduce action and the shift that must immediately -** follow the reduce. -*/ -static void yy_reduce( - yyParser *yypParser, /* The parser */ - int yyruleno /* Number of the rule by which to reduce */ -){ - int yygoto; /* The next state */ - int yyact; /* The next action */ - YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ - yyStackEntry *yymsp; /* The top of the parser's stack */ - int yysize; /* Amount to pop the stack */ - ParseARG_FETCH; - yymsp = &yypParser->yystack[yypParser->yyidx]; -#ifndef NDEBUG - if( yyTraceFILE && yyruleno>=0 - && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ - fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt, - yyRuleName[yyruleno]); - } -#endif /* NDEBUG */ - - /* Silence complaints from purify about yygotominor being uninitialized - ** in some cases when it is copied into the stack after the following - ** switch. yygotominor is uninitialized when a rule reduces that does - ** not set the value of its left-hand side nonterminal. Leaving the - ** value of the nonterminal uninitialized is utterly harmless as long - ** as the value is never used. So really the only thing this code - ** accomplishes is to quieten purify. - ** - ** 2007-01-16: The wireshark project (www.wireshark.org) reports that - ** without this code, their parser segfaults. I'm not sure what there - ** parser is doing to make this happen. This is the second bug report - ** from wireshark this week. Clearly they are stressing Lemon in ways - ** that it has not been previously stressed... (SQLite ticket #2172) - */ - /*memset(&yygotominor, 0, sizeof(yygotominor));*/ - yygotominor = yyzerominor; - - - switch( yyruleno ){ - /* Beginning here are the reduction cases. A typical example - ** follows: - ** case 0: - ** #line - ** { ... } // User supplied code - ** #line - ** break; - */ - case 5: /* gml_tree ::= node */ - case 6: /* gml_tree ::= node_chain */ yytestcase(yyruleno==6); -{ p_data->result = yymsp[0].minor.yy0; } - break; - case 7: /* node ::= open_tag GML_END GML_CLOSE */ -{ yygotominor.yy0 = gml_createSelfClosedNode( p_data, (void *)yymsp[-2].minor.yy0, NULL); } - break; - case 8: /* node ::= open_tag attr GML_END GML_CLOSE */ - case 9: /* node ::= open_tag attributes GML_END GML_CLOSE */ yytestcase(yyruleno==9); -{ yygotominor.yy0 = gml_createSelfClosedNode( p_data, (void *)yymsp[-3].minor.yy0, (void *)yymsp[-2].minor.yy0); } - break; - case 10: /* node ::= open_tag GML_CLOSE */ -{ yygotominor.yy0 = gml_createNode( p_data, (void *)yymsp[-1].minor.yy0, NULL, NULL); } - break; - case 11: /* node ::= open_tag attr GML_CLOSE */ - case 12: /* node ::= open_tag attributes GML_CLOSE */ yytestcase(yyruleno==12); -{ yygotominor.yy0 = gml_createNode( p_data, (void *)yymsp[-2].minor.yy0, (void *)yymsp[-1].minor.yy0, NULL); } - break; - case 13: /* node ::= open_tag GML_CLOSE coord */ - case 14: /* node ::= open_tag GML_CLOSE coord_chain */ yytestcase(yyruleno==14); -{ yygotominor.yy0 = gml_createNode( p_data, (void *)yymsp[-2].minor.yy0, NULL, (void *)yymsp[0].minor.yy0); } - break; - case 15: /* node ::= open_tag attr GML_CLOSE coord */ - case 16: /* node ::= open_tag attr GML_CLOSE coord_chain */ yytestcase(yyruleno==16); - case 17: /* node ::= open_tag attributes GML_CLOSE coord */ yytestcase(yyruleno==17); - case 18: /* node ::= open_tag attributes GML_CLOSE coord_chain */ yytestcase(yyruleno==18); -{ yygotominor.yy0 = gml_createNode( p_data, (void *)yymsp[-3].minor.yy0, (void *)yymsp[-2].minor.yy0, (void *)yymsp[0].minor.yy0); } - break; - case 19: /* node ::= close_tag */ -{ yygotominor.yy0 = gml_closingNode( p_data, (void *)yymsp[0].minor.yy0); } - break; - case 20: /* open_tag ::= GML_OPEN keyword */ - case 22: /* keyword ::= GML_KEYWORD */ yytestcase(yyruleno==22); -{ yygotominor.yy0 = yymsp[0].minor.yy0; } - break; - case 21: /* close_tag ::= GML_OPEN GML_END keyword GML_CLOSE */ -{ yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 23: /* extra_nodes ::= */ - case 27: /* extra_attr ::= */ yytestcase(yyruleno==27); - case 31: /* extra_coord ::= */ yytestcase(yyruleno==31); -{ yygotominor.yy0 = NULL; } - break; - case 24: /* extra_nodes ::= node extra_nodes */ -{ ((gmlNodePtr)yymsp[-1].minor.yy0)->Next = (gmlNodePtr)yymsp[0].minor.yy0; yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 25: /* node_chain ::= node node extra_nodes */ -{ - ((gmlNodePtr)yymsp[-1].minor.yy0)->Next = (gmlNodePtr)yymsp[0].minor.yy0; - ((gmlNodePtr)yymsp[-2].minor.yy0)->Next = (gmlNodePtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = yymsp[-2].minor.yy0; - } - break; - case 26: /* attr ::= GML_KEYWORD GML_EQ GML_VALUE */ -{ yygotominor.yy0 = gml_attribute( p_data, (void *)yymsp[-2].minor.yy0, (void *)yymsp[0].minor.yy0); } - break; - case 28: /* extra_attr ::= attr extra_attr */ -{ ((gmlAttrPtr)yymsp[-1].minor.yy0)->Next = (gmlAttrPtr)yymsp[0].minor.yy0; yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 29: /* attributes ::= attr attr extra_attr */ -{ - ((gmlAttrPtr)yymsp[-1].minor.yy0)->Next = (gmlAttrPtr)yymsp[0].minor.yy0; - ((gmlAttrPtr)yymsp[-2].minor.yy0)->Next = (gmlAttrPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = yymsp[-2].minor.yy0; - } - break; - case 30: /* coord ::= GML_COORD */ -{ yygotominor.yy0 = gml_coord( p_data, (void *)yymsp[0].minor.yy0); } - break; - case 32: /* extra_coord ::= coord extra_coord */ -{ ((gmlCoordPtr)yymsp[-1].minor.yy0)->Next = (gmlCoordPtr)yymsp[0].minor.yy0; yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 33: /* coord_chain ::= coord coord extra_coord */ -{ - ((gmlCoordPtr)yymsp[-1].minor.yy0)->Next = (gmlCoordPtr)yymsp[0].minor.yy0; - ((gmlCoordPtr)yymsp[-2].minor.yy0)->Next = (gmlCoordPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = yymsp[-2].minor.yy0; - } - break; - default: - /* (0) main ::= in */ yytestcase(yyruleno==0); - /* (1) in ::= */ yytestcase(yyruleno==1); - /* (2) in ::= in state GML_NEWLINE */ yytestcase(yyruleno==2); - /* (3) state ::= program */ yytestcase(yyruleno==3); - /* (4) program ::= gml_tree */ yytestcase(yyruleno==4); - break; - }; - yygoto = yyRuleInfo[yyruleno].lhs; - yysize = yyRuleInfo[yyruleno].nrhs; - yypParser->yyidx -= yysize; - yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto); - if( yyact < YYNSTATE ){ -#ifdef NDEBUG - /* If we are not debugging and the reduce action popped at least - ** one element off the stack, then we can push the new element back - ** onto the stack here, and skip the stack overflow test in yy_shift(). - ** That gives a significant speed improvement. */ - if( yysize ){ - yypParser->yyidx++; - yymsp -= yysize-1; - yymsp->stateno = (YYACTIONTYPE)yyact; - yymsp->major = (YYCODETYPE)yygoto; - yymsp->minor = yygotominor; - }else -#endif - { - yy_shift(yypParser,yyact,yygoto,&yygotominor); - } - }else{ - assert( yyact == YYNSTATE + YYNRULE + 1 ); - yy_accept(yypParser); - } -} - -/* -** The following code executes when the parse fails -*/ -#ifndef YYNOERRORRECOVERY -static void yy_parse_failed( - yyParser *yypParser /* The parser */ -){ - ParseARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser fails */ - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} -#endif /* YYNOERRORRECOVERY */ - -/* -** The following code executes when a syntax error first occurs. -*/ -static void yy_syntax_error( - yyParser *yypParser, /* The parser */ - int yymajor, /* The major type of the error token */ - YYMINORTYPE yyminor /* The minor type of the error token */ -){ - ParseARG_FETCH; -#define TOKEN (yyminor.yy0) - -/* -** when the LEMON parser encounters an error -** then this global variable is set -*/ - p_data->gml_parse_error = 1; - p_data->result = NULL; - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* -** The following is executed when the parser accepts -*/ -static void yy_accept( - yyParser *yypParser /* The parser */ -){ - ParseARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser accepts */ - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* The main parser program. -** The first argument is a pointer to a structure obtained from -** "ParseAlloc" which describes the current state of the parser. -** The second argument is the major token number. The third is -** the minor token. The fourth optional argument is whatever the -** user wants (and specified in the grammar) and is available for -** use by the action routines. -** -** Inputs: -**
    -**
  • A pointer to the parser (an opaque structure.) -**
  • The major token number. -**
  • The minor token number. -**
  • An option argument of a grammar-specified type. -**
-** -** Outputs: -** None. -*/ -void Parse( - void *yyp, /* The parser */ - int yymajor, /* The major token code number */ - ParseTOKENTYPE yyminor /* The value for the token */ - ParseARG_PDECL /* Optional %extra_argument parameter */ -){ - YYMINORTYPE yyminorunion; - int yyact; /* The parser action. */ - int yyendofinput; /* True if we are at the end of input */ -#ifdef YYERRORSYMBOL - int yyerrorhit = 0; /* True if yymajor has invoked an error */ -#endif - yyParser *yypParser; /* The parser */ - - /* (re)initialize the parser, if necessary */ - yypParser = (yyParser*)yyp; - if( yypParser->yyidx<0 ){ -#if YYSTACKDEPTH<=0 - if( yypParser->yystksz <=0 ){ - /*memset(&yyminorunion, 0, sizeof(yyminorunion));*/ - yyminorunion = yyzerominor; - yyStackOverflow(yypParser, &yyminorunion); - return; - } -#endif - yypParser->yyidx = 0; - yypParser->yyerrcnt = -1; - yypParser->yystack[0].stateno = 0; - yypParser->yystack[0].major = 0; - } - yyminorunion.yy0 = yyminor; - yyendofinput = (yymajor==0); - ParseARG_STORE; - -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]); - } -#endif - - do{ - yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor); - if( yyactyyerrcnt--; - yymajor = YYNOCODE; - }else if( yyact < YYNSTATE + YYNRULE ){ - yy_reduce(yypParser,yyact-YYNSTATE); - }else{ - assert( yyact == YY_ERROR_ACTION ); -#ifdef YYERRORSYMBOL - int yymx; -#endif -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt); - } -#endif -#ifdef YYERRORSYMBOL - /* A syntax error has occurred. - ** The response to an error depends upon whether or not the - ** grammar defines an error token "ERROR". - ** - ** This is what we do if the grammar does define ERROR: - ** - ** * Call the %syntax_error function. - ** - ** * Begin popping the stack until we enter a state where - ** it is legal to shift the error symbol, then shift - ** the error symbol. - ** - ** * Set the error count to three. - ** - ** * Begin accepting and shifting new tokens. No new error - ** processing will occur until three tokens have been - ** shifted successfully. - ** - */ - if( yypParser->yyerrcnt<0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yymx = yypParser->yystack[yypParser->yyidx].major; - if( yymx==YYERRORSYMBOL || yyerrorhit ){ -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sDiscard input token %s\n", - yyTracePrompt,yyTokenName[yymajor]); - } -#endif - yy_destructor(yypParser, (YYCODETYPE)yymajor,&yyminorunion); - yymajor = YYNOCODE; - }else{ - while( - yypParser->yyidx >= 0 && - yymx != YYERRORSYMBOL && - (yyact = yy_find_reduce_action( - yypParser->yystack[yypParser->yyidx].stateno, - YYERRORSYMBOL)) >= YYNSTATE - ){ - yy_pop_parser_stack(yypParser); - } - if( yypParser->yyidx < 0 || yymajor==0 ){ - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - yy_parse_failed(yypParser); - yymajor = YYNOCODE; - }else if( yymx!=YYERRORSYMBOL ){ - YYMINORTYPE u2; - u2.YYERRSYMDT = 0; - yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2); - } - } - yypParser->yyerrcnt = 3; - yyerrorhit = 1; -#elif defined(YYNOERRORRECOVERY) - /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to - ** do any kind of error recovery. Instead, simply invoke the syntax - ** error routine and continue going as if nothing had happened. - ** - ** Applications can set this macro (for example inside %include) if - ** they intend to abandon the parse upon the first syntax error seen. - */ - yy_syntax_error(yypParser,yymajor,yyminorunion); - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - yymajor = YYNOCODE; - -#else /* YYERRORSYMBOL is not defined */ - /* This is what we do if the grammar does not define ERROR: - ** - ** * Report an error message, and throw away the input token. - ** - ** * If the input token is $, then fail the parse. - ** - ** As before, subsequent error messages are suppressed until - ** three input tokens have been successfully shifted. - */ - if( yypParser->yyerrcnt<=0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yypParser->yyerrcnt = 3; - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - if( yyendofinput ){ - yy_parse_failed(yypParser); - } - yymajor = YYNOCODE; -#endif - } - }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 ); - return; -} diff --git a/src/spatialite/src/gaiageo/Gml.h b/src/spatialite/src/gaiageo/Gml.h deleted file mode 100644 index 549d0d8..0000000 --- a/src/spatialite/src/gaiageo/Gml.h +++ /dev/null @@ -1,8 +0,0 @@ -#define GML_NEWLINE 1 -#define GML_END 2 -#define GML_CLOSE 3 -#define GML_OPEN 4 -#define GML_KEYWORD 5 -#define GML_EQ 6 -#define GML_VALUE 7 -#define GML_COORD 8 diff --git a/src/spatialite/src/gaiageo/Kml.c b/src/spatialite/src/gaiageo/Kml.c deleted file mode 100644 index e1b64f4..0000000 --- a/src/spatialite/src/gaiageo/Kml.c +++ /dev/null @@ -1,1053 +0,0 @@ -/* Driver template for the LEMON parser generator. -** The author disclaims copyright to this source code. -*/ -/* First off, code is included that follows the "include" declaration -** in the input grammar file. */ -#include - -/* Next is all token values, in a form suitable for use by makeheaders. -** This section will be null unless lemon is run with the -m switch. -*/ -/* -** These constants (all generated automatically by the parser generator) -** specify the various kinds of tokens (terminals) that the parser -** understands. -** -** Each symbol here is a terminal symbol in the grammar. -*/ -/* Make sure the INTERFACE macro is defined. -*/ -#ifndef INTERFACE -# define INTERFACE 1 -#endif -/* The next thing included is series of defines which control -** various aspects of the generated parser. -** YYCODETYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 terminals -** and nonterminals. "int" is used otherwise. -** YYNOCODE is a number of type YYCODETYPE which corresponds -** to no legal terminal or nonterminal number. This -** number is used to fill in empty slots of the hash -** table. -** YYFALLBACK If defined, this indicates that one or more tokens -** have fall-back values which should be used if the -** original value of the token will not parse. -** YYACTIONTYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 rules and -** states combined. "int" is used otherwise. -** ParseTOKENTYPE is the data type used for minor tokens given -** directly to the parser from the tokenizer. -** YYMINORTYPE is the data type used for all minor tokens. -** This is typically a union of many types, one of -** which is ParseTOKENTYPE. The entry in the union -** for base tokens is called "yy0". -** YYSTACKDEPTH is the maximum depth of the parser's stack. If -** zero the stack is dynamically sized using realloc() -** ParseARG_SDECL A static variable declaration for the %extra_argument -** ParseARG_PDECL A parameter declaration for the %extra_argument -** ParseARG_STORE Code to store %extra_argument into yypParser -** ParseARG_FETCH Code to extract %extra_argument from yypParser -** YYNSTATE the combined number of states. -** YYNRULE the number of rules in the grammar -** YYERRORSYMBOL is the code number of the error symbol. If not -** defined, then do no error processing. -*/ -#define YYCODETYPE unsigned char -#define YYNOCODE 28 -#define YYACTIONTYPE unsigned char -#define ParseTOKENTYPE void * -typedef union { - int yyinit; - ParseTOKENTYPE yy0; -} YYMINORTYPE; -#ifndef YYSTACKDEPTH -#define YYSTACKDEPTH 1000000 -#endif -#define ParseARG_SDECL struct kml_data *p_data ; -#define ParseARG_PDECL , struct kml_data *p_data -#define ParseARG_FETCH struct kml_data *p_data = yypParser->p_data -#define ParseARG_STORE yypParser->p_data = p_data -#define YYNSTATE 49 -#define YYNRULE 34 -#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) -#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) -#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) - -/* The yyzerominor constant is used to initialize instances of -** YYMINORTYPE objects to zero. */ -static const YYMINORTYPE yyzerominor = { 0 }; - -/* Define the yytestcase() macro to be a no-op if is not already defined -** otherwise. -** -** Applications can choose to define yytestcase() in the %include section -** to a macro that can assist in verifying code coverage. For production -** code the yytestcase() macro should be turned off. But it is useful -** for testing. -*/ -#ifndef yytestcase -# define yytestcase(X) -#endif - - -/* Next are the tables used to determine what action to take based on the -** current state and lookahead token. These tables are used to implement -** functions that take a state number and lookahead value and return an -** action integer. -** -** Suppose the action integer is N. Then the action is determined as -** follows -** -** 0 <= N < YYNSTATE Shift N. That is, push the lookahead -** token onto the stack and goto state N. -** -** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. -** -** N == YYNSTATE+YYNRULE A syntax error has occurred. -** -** N == YYNSTATE+YYNRULE+1 The parser accepts its input. -** -** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused -** slots in the yy_action[] table. -** -** The action table is constructed as a single large table named yy_action[]. -** Given state S and lookahead X, the action is computed as -** -** yy_action[ yy_shift_ofst[S] + X ] -** -** If the index value yy_shift_ofst[S]+X is out of range or if the value -** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] -** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table -** and that yy_default[S] should be used instead. -** -** The formula above is for computing the action when the lookahead is -** a terminal symbol. If the lookahead is a non-terminal (as occurs after -** a reduce action) then the yy_reduce_ofst[] array is used in place of -** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of -** YY_SHIFT_USE_DFLT. -** -** The following are the tables generated in this section: -** -** yy_action[] A single table containing all actions. -** yy_lookahead[] A table containing the lookahead for each entry in -** yy_action. Used to detect hash collisions. -** yy_shift_ofst[] For each state, the offset into yy_action for -** shifting terminals. -** yy_reduce_ofst[] For each state, the offset into yy_action for -** shifting non-terminals after a reduce. -** yy_default[] Default action for each state. -*/ -static const YYACTIONTYPE yy_action[] = { - /* 0 */ 20, 28, 29, 4, 48, 5, 3, 3, 5, 5, - /* 10 */ 42, 84, 1, 42, 42, 47, 46, 2, 10, 5, - /* 20 */ 21, 12, 32, 23, 42, 38, 22, 6, 49, 23, - /* 30 */ 13, 19, 14, 15, 35, 8, 8, 10, 25, 11, - /* 40 */ 18, 34, 33, 45, 37, 16, 40, 17, 41, 14, - /* 50 */ 9, 23, 43, 7, 45, 27, 30, 26, 31, 36, - /* 60 */ 39, 44, 24, -}; -static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 12, 13, 14, 15, 16, 17, 15, 15, 17, 17, - /* 10 */ 22, 10, 11, 22, 22, 24, 24, 15, 18, 17, - /* 20 */ 2, 3, 8, 5, 22, 25, 2, 3, 0, 5, - /* 30 */ 18, 19, 4, 20, 21, 20, 20, 18, 2, 3, - /* 40 */ 2, 26, 26, 5, 25, 20, 21, 20, 21, 4, - /* 50 */ 18, 5, 23, 20, 5, 1, 3, 23, 3, 7, - /* 60 */ 3, 3, 6, -}; -#define YY_SHIFT_USE_DFLT (-1) -#define YY_SHIFT_MAX 26 -static const signed char yy_shift_ofst[] = { - /* 0 */ -1, 28, 45, 45, 45, 18, 14, 14, 14, 46, - /* 10 */ 46, 14, 14, 24, 38, 14, 14, 14, 49, 36, - /* 20 */ 54, 53, 55, 56, 52, 57, 58, -}; -#define YY_REDUCE_USE_DFLT (-13) -#define YY_REDUCE_MAX 18 -static const signed char yy_reduce_ofst[] = { - /* 0 */ 1, -12, -9, -8, 2, 12, 13, 15, 16, 0, - /* 10 */ 19, 25, 27, 32, 29, 33, 33, 33, 34, -}; -static const YYACTIONTYPE yy_default[] = { - /* 0 */ 50, 83, 72, 72, 54, 83, 60, 80, 80, 76, - /* 10 */ 76, 61, 59, 83, 83, 64, 66, 62, 83, 83, - /* 20 */ 83, 83, 83, 83, 83, 83, 83, 51, 52, 53, - /* 30 */ 56, 57, 79, 81, 82, 65, 75, 77, 78, 58, - /* 40 */ 67, 63, 68, 69, 70, 71, 73, 74, 55, -}; -#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0])) - -/* The next table maps tokens into fallback tokens. If a construct -** like the following: -** -** %fallback ID X Y Z. -** -** appears in the grammar, then ID becomes a fallback token for X, Y, -** and Z. Whenever one of the tokens X, Y, or Z is input to the parser -** but it does not parse, the type of the token is changed to ID and -** the parse is retried before an error is thrown. -*/ -#ifdef YYFALLBACK -static const YYCODETYPE yyFallback[] = { -}; -#endif /* YYFALLBACK */ - -/* The following structure represents a single element of the -** parser's stack. Information stored includes: -** -** + The state number for the parser at this level of the stack. -** -** + The value of the token stored at this level of the stack. -** (In other words, the "major" token.) -** -** + The semantic value stored at this level of the stack. This is -** the information used by the action routines in the grammar. -** It is sometimes called the "minor" token. -*/ -struct yyStackEntry { - YYACTIONTYPE stateno; /* The state-number */ - YYCODETYPE major; /* The major token value. This is the code - ** number for the token at this stack level */ - YYMINORTYPE minor; /* The user-supplied minor token value. This - ** is the value of the token */ -}; -typedef struct yyStackEntry yyStackEntry; - -/* The state of the parser is completely contained in an instance of -** the following structure */ -struct yyParser { - int yyidx; /* Index of top element in stack */ -#ifdef YYTRACKMAXSTACKDEPTH - int yyidxMax; /* Maximum value of yyidx */ -#endif - int yyerrcnt; /* Shifts left before out of the error */ - ParseARG_SDECL /* A place to hold %extra_argument */ -#if YYSTACKDEPTH<=0 - int yystksz; /* Current side of the stack */ - yyStackEntry *yystack; /* The parser's stack */ -#else - yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ -#endif -}; -typedef struct yyParser yyParser; - -#ifndef NDEBUG -#include -static FILE *yyTraceFILE = 0; -static char *yyTracePrompt = 0; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* -** Turn parser tracing on by giving a stream to which to write the trace -** and a prompt to preface each trace message. Tracing is turned off -** by making either argument NULL -** -** Inputs: -**
    -**
  • A FILE* to which trace output should be written. -** If NULL, then tracing is turned off. -**
  • A prefix string written at the beginning of every -** line of trace output. If NULL, then tracing is -** turned off. -**
-** -** Outputs: -** None. -*/ -void ParseTrace(FILE *TraceFILE, char *zTracePrompt){ - yyTraceFILE = TraceFILE; - yyTracePrompt = zTracePrompt; - if( yyTraceFILE==0 ) yyTracePrompt = 0; - else if( yyTracePrompt==0 ) yyTraceFILE = 0; -} -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing shifts, the names of all terminals and nonterminals -** are required. The following table supplies these names */ -static const char *const yyTokenName[] = { - "$", "KML_NEWLINE", "KML_END", "KML_CLOSE", - "KML_OPEN", "KML_KEYWORD", "KML_EQ", "KML_VALUE", - "KML_COORD", "error", "main", "in", - "state", "program", "kml_tree", "node", - "node_chain", "open_tag", "attr", "attributes", - "coord", "coord_chain", "close_tag", "keyword", - "extra_nodes", "extra_attr", "extra_coord", -}; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing reduce actions, the names of all rules are required. -*/ -static const char *const yyRuleName[] = { - /* 0 */ "main ::= in", - /* 1 */ "in ::=", - /* 2 */ "in ::= in state KML_NEWLINE", - /* 3 */ "state ::= program", - /* 4 */ "program ::= kml_tree", - /* 5 */ "kml_tree ::= node", - /* 6 */ "kml_tree ::= node_chain", - /* 7 */ "node ::= open_tag KML_END KML_CLOSE", - /* 8 */ "node ::= open_tag attr KML_END KML_CLOSE", - /* 9 */ "node ::= open_tag attributes KML_END KML_CLOSE", - /* 10 */ "node ::= open_tag KML_CLOSE", - /* 11 */ "node ::= open_tag attr KML_CLOSE", - /* 12 */ "node ::= open_tag attributes KML_CLOSE", - /* 13 */ "node ::= open_tag KML_CLOSE coord", - /* 14 */ "node ::= open_tag KML_CLOSE coord_chain", - /* 15 */ "node ::= open_tag attr KML_CLOSE coord", - /* 16 */ "node ::= open_tag attr KML_CLOSE coord_chain", - /* 17 */ "node ::= open_tag attributes KML_CLOSE coord", - /* 18 */ "node ::= open_tag attributes KML_CLOSE coord_chain", - /* 19 */ "node ::= close_tag", - /* 20 */ "open_tag ::= KML_OPEN keyword", - /* 21 */ "close_tag ::= KML_OPEN KML_END keyword KML_CLOSE", - /* 22 */ "keyword ::= KML_KEYWORD", - /* 23 */ "extra_nodes ::=", - /* 24 */ "extra_nodes ::= node extra_nodes", - /* 25 */ "node_chain ::= node node extra_nodes", - /* 26 */ "attr ::= KML_KEYWORD KML_EQ KML_VALUE", - /* 27 */ "extra_attr ::=", - /* 28 */ "extra_attr ::= attr extra_attr", - /* 29 */ "attributes ::= attr attr extra_attr", - /* 30 */ "coord ::= KML_COORD", - /* 31 */ "extra_coord ::=", - /* 32 */ "extra_coord ::= coord extra_coord", - /* 33 */ "coord_chain ::= coord coord extra_coord", -}; -#endif /* NDEBUG */ - - -#if YYSTACKDEPTH<=0 -/* -** Try to increase the size of the parser stack. -*/ -static void yyGrowStack(yyParser *p){ - int newSize; - yyStackEntry *pNew; - - newSize = p->yystksz*2 + 100; - pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); - if( pNew ){ - p->yystack = pNew; - p->yystksz = newSize; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack grows to %d entries!\n", - yyTracePrompt, p->yystksz); - } -#endif - } -} -#endif - -/* -** This function allocates a new parser. -** The only argument is a pointer to a function which works like -** malloc. -** -** Inputs: -** A pointer to the function used to allocate memory. -** -** Outputs: -** A pointer to a parser. This pointer is used in subsequent calls -** to Parse and ParseFree. -*/ -void *ParseAlloc(void *(*mallocProc)(size_t)){ - yyParser *pParser; - pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) ); - if( pParser ){ - pParser->yyidx = -1; -#ifdef YYTRACKMAXSTACKDEPTH - pParser->yyidxMax = 0; -#endif -#if YYSTACKDEPTH<=0 - pParser->yystack = NULL; - pParser->yystksz = 0; - yyGrowStack(pParser); -#endif - } - return pParser; -} - -/* The following function deletes the value associated with a -** symbol. The symbol can be either a terminal or nonterminal. -** "yymajor" is the symbol code, and "yypminor" is a pointer to -** the value. -*/ -static void yy_destructor( - yyParser *yypParser, /* The parser */ - YYCODETYPE yymajor, /* Type code for object to destroy */ - YYMINORTYPE *yypminor /* The object to be destroyed */ -){ - switch( yymajor ){ - /* Here is inserted the actions which take place when a - ** terminal or non-terminal is destroyed. This can happen - ** when the symbol is popped from the stack during a - ** reduce or during error processing or when a parser is - ** being destroyed before it is finished parsing. - ** - ** Note: during a reduce, the only symbols destroyed are those - ** which appear on the RHS of the rule, but which are not used - ** inside the C code. - */ - default: break; /* If no destructor action specified: do nothing */ - } -} - -/* -** Pop the parser's stack once. -** -** If there is a destructor routine associated with the token which -** is popped from the stack, then call it. -** -** Return the major token number for the symbol popped. -*/ -static int yy_pop_parser_stack(yyParser *pParser){ - YYCODETYPE yymajor; - yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; - - if( pParser->yyidx<0 ) return 0; -#ifndef NDEBUG - if( yyTraceFILE && pParser->yyidx>=0 ){ - fprintf(yyTraceFILE,"%sPopping %s\n", - yyTracePrompt, - yyTokenName[yytos->major]); - } -#endif - yymajor = yytos->major; - yy_destructor(pParser, yymajor, &yytos->minor); - pParser->yyidx--; - return yymajor; -} - -/* -** Deallocate and destroy a parser. Destructors are all called for -** all stack elements before shutting the parser down. -** -** Inputs: -**
    -**
  • A pointer to the parser. This should be a pointer -** obtained from ParseAlloc. -**
  • A pointer to a function used to reclaim memory obtained -** from malloc. -**
-*/ -void ParseFree( - void *p, /* The parser to be deleted */ - void (*freeProc)(void*) /* Function used to reclaim memory */ -){ - yyParser *pParser = (yyParser*)p; - if( pParser==0 ) return; - while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser); -#if YYSTACKDEPTH<=0 - free(pParser->yystack); -#endif - (*freeProc)((void*)pParser); -} - -/* -** Return the peak depth of the stack for a parser. -*/ -#ifdef YYTRACKMAXSTACKDEPTH -int ParseStackPeak(void *p){ - yyParser *pParser = (yyParser*)p; - return pParser->yyidxMax; -} -#endif - -/* -** Find the appropriate action for a parser given the terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_shift_action( - yyParser *pParser, /* The parser */ - YYCODETYPE iLookAhead /* The look-ahead token */ -){ - int i; - int stateno = pParser->yystack[pParser->yyidx].stateno; - - if( stateno>YY_SHIFT_MAX || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){ - return yy_default[stateno]; - } - assert( iLookAhead!=YYNOCODE ); - i += iLookAhead; - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ - if( iLookAhead>0 ){ -#ifdef YYFALLBACK - YYCODETYPE iFallback; /* Fallback token */ - if( iLookAhead %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); - } -#endif - return yy_find_shift_action(pParser, iFallback); - } -#endif -#ifdef YYWILDCARD - { - int j = i - iLookAhead + YYWILDCARD; - if( j>=0 && j %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); - } -#endif /* NDEBUG */ - return yy_action[j]; - } - } -#endif /* YYWILDCARD */ - } - return yy_default[stateno]; - }else{ - return yy_action[i]; - } -} - -/* -** Find the appropriate action for a parser given the non-terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_reduce_action( - int stateno, /* Current state number */ - YYCODETYPE iLookAhead /* The look-ahead token */ -){ - int i; -#ifdef YYERRORSYMBOL - if( stateno>YY_REDUCE_MAX ){ - return yy_default[stateno]; - } -#else - assert( stateno<=YY_REDUCE_MAX ); -#endif - i = yy_reduce_ofst[stateno]; - assert( i!=YY_REDUCE_USE_DFLT ); - assert( iLookAhead!=YYNOCODE ); - i += iLookAhead; -#ifdef YYERRORSYMBOL - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ - return yy_default[stateno]; - } -#else - assert( i>=0 && iyyidx--; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will execute if the parser - ** stack every overflows */ - - spatialite_e( "Giving up. Parser stack overflow\n"); - ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ -} - -/* -** Perform a shift action. -*/ -static void yy_shift( - yyParser *yypParser, /* The parser to be shifted */ - int yyNewState, /* The new state to shift in */ - int yyMajor, /* The major token to shift in */ - YYMINORTYPE *yypMinor /* Pointer to the minor token to shift in */ -){ - yyStackEntry *yytos; - yypParser->yyidx++; -#ifdef YYTRACKMAXSTACKDEPTH - if( yypParser->yyidx>yypParser->yyidxMax ){ - yypParser->yyidxMax = yypParser->yyidx; - } -#endif -#if YYSTACKDEPTH>0 - if( yypParser->yyidx>=YYSTACKDEPTH ){ - yyStackOverflow(yypParser, yypMinor); - return; - } -#else - if( yypParser->yyidx>=yypParser->yystksz ){ - yyGrowStack(yypParser); - if( yypParser->yyidx>=yypParser->yystksz ){ - yyStackOverflow(yypParser, yypMinor); - return; - } - } -#endif - yytos = &yypParser->yystack[yypParser->yyidx]; - yytos->stateno = (YYACTIONTYPE)yyNewState; - yytos->major = (YYCODETYPE)yyMajor; - yytos->minor = *yypMinor; -#ifndef NDEBUG - if( yyTraceFILE && yypParser->yyidx>0 ){ - int i; - fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState); - fprintf(yyTraceFILE,"%sStack:",yyTracePrompt); - for(i=1; i<=yypParser->yyidx; i++) - fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]); - fprintf(yyTraceFILE,"\n"); - } -#endif -} - -/* The following table contains information about every rule that -** is used during the reduce. -*/ -static const struct { - YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ - unsigned char nrhs; /* Number of right-hand side symbols in the rule */ -} yyRuleInfo[] = { - { 10, 1 }, - { 11, 0 }, - { 11, 3 }, - { 12, 1 }, - { 13, 1 }, - { 14, 1 }, - { 14, 1 }, - { 15, 3 }, - { 15, 4 }, - { 15, 4 }, - { 15, 2 }, - { 15, 3 }, - { 15, 3 }, - { 15, 3 }, - { 15, 3 }, - { 15, 4 }, - { 15, 4 }, - { 15, 4 }, - { 15, 4 }, - { 15, 1 }, - { 17, 2 }, - { 22, 4 }, - { 23, 1 }, - { 24, 0 }, - { 24, 2 }, - { 16, 3 }, - { 18, 3 }, - { 25, 0 }, - { 25, 2 }, - { 19, 3 }, - { 20, 1 }, - { 26, 0 }, - { 26, 2 }, - { 21, 3 }, -}; - -static void yy_accept(yyParser*); /* Forward Declaration */ - -/* -** Perform a reduce action and the shift that must immediately -** follow the reduce. -*/ -static void yy_reduce( - yyParser *yypParser, /* The parser */ - int yyruleno /* Number of the rule by which to reduce */ -){ - int yygoto; /* The next state */ - int yyact; /* The next action */ - YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ - yyStackEntry *yymsp; /* The top of the parser's stack */ - int yysize; /* Amount to pop the stack */ - ParseARG_FETCH; - yymsp = &yypParser->yystack[yypParser->yyidx]; -#ifndef NDEBUG - if( yyTraceFILE && yyruleno>=0 - && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ - fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt, - yyRuleName[yyruleno]); - } -#endif /* NDEBUG */ - - /* Silence complaints from purify about yygotominor being uninitialized - ** in some cases when it is copied into the stack after the following - ** switch. yygotominor is uninitialized when a rule reduces that does - ** not set the value of its left-hand side nonterminal. Leaving the - ** value of the nonterminal uninitialized is utterly harmless as long - ** as the value is never used. So really the only thing this code - ** accomplishes is to quieten purify. - ** - ** 2007-01-16: The wireshark project (www.wireshark.org) reports that - ** without this code, their parser segfaults. I'm not sure what there - ** parser is doing to make this happen. This is the second bug report - ** from wireshark this week. Clearly they are stressing Lemon in ways - ** that it has not been previously stressed... (SQLite ticket #2172) - */ - /*memset(&yygotominor, 0, sizeof(yygotominor));*/ - yygotominor = yyzerominor; - - - switch( yyruleno ){ - /* Beginning here are the reduction cases. A typical example - ** follows: - ** case 0: - ** #line - ** { ... } // User supplied code - ** #line - ** break; - */ - case 5: /* kml_tree ::= node */ - case 6: /* kml_tree ::= node_chain */ yytestcase(yyruleno==6); -{ p_data->result = yymsp[0].minor.yy0; } - break; - case 7: /* node ::= open_tag KML_END KML_CLOSE */ -{ yygotominor.yy0 = kml_createSelfClosedNode( p_data, (void *)yymsp[-2].minor.yy0, NULL); } - break; - case 8: /* node ::= open_tag attr KML_END KML_CLOSE */ - case 9: /* node ::= open_tag attributes KML_END KML_CLOSE */ yytestcase(yyruleno==9); -{ yygotominor.yy0 = kml_createSelfClosedNode( p_data, (void *)yymsp[-3].minor.yy0, (void *)yymsp[-2].minor.yy0); } - break; - case 10: /* node ::= open_tag KML_CLOSE */ -{ yygotominor.yy0 = kml_createNode( p_data, (void *)yymsp[-1].minor.yy0, NULL, NULL); } - break; - case 11: /* node ::= open_tag attr KML_CLOSE */ - case 12: /* node ::= open_tag attributes KML_CLOSE */ yytestcase(yyruleno==12); -{ yygotominor.yy0 = kml_createNode( p_data, (void *)yymsp[-2].minor.yy0, (void *)yymsp[-1].minor.yy0, NULL); } - break; - case 13: /* node ::= open_tag KML_CLOSE coord */ - case 14: /* node ::= open_tag KML_CLOSE coord_chain */ yytestcase(yyruleno==14); -{ yygotominor.yy0 = kml_createNode( p_data, (void *)yymsp[-2].minor.yy0, NULL, (void *)yymsp[0].minor.yy0); } - break; - case 15: /* node ::= open_tag attr KML_CLOSE coord */ - case 16: /* node ::= open_tag attr KML_CLOSE coord_chain */ yytestcase(yyruleno==16); - case 17: /* node ::= open_tag attributes KML_CLOSE coord */ yytestcase(yyruleno==17); - case 18: /* node ::= open_tag attributes KML_CLOSE coord_chain */ yytestcase(yyruleno==18); -{ yygotominor.yy0 = kml_createNode( p_data, (void *)yymsp[-3].minor.yy0, (void *)yymsp[-2].minor.yy0, (void *)yymsp[0].minor.yy0); } - break; - case 19: /* node ::= close_tag */ -{ yygotominor.yy0 = kml_closingNode( p_data, (void *)yymsp[0].minor.yy0); } - break; - case 20: /* open_tag ::= KML_OPEN keyword */ - case 22: /* keyword ::= KML_KEYWORD */ yytestcase(yyruleno==22); -{ yygotominor.yy0 = yymsp[0].minor.yy0; } - break; - case 21: /* close_tag ::= KML_OPEN KML_END keyword KML_CLOSE */ -{ yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 23: /* extra_nodes ::= */ - case 27: /* extra_attr ::= */ yytestcase(yyruleno==27); - case 31: /* extra_coord ::= */ yytestcase(yyruleno==31); -{ yygotominor.yy0 = NULL; } - break; - case 24: /* extra_nodes ::= node extra_nodes */ -{ ((kmlNodePtr)yymsp[-1].minor.yy0)->Next = (kmlNodePtr)yymsp[0].minor.yy0; yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 25: /* node_chain ::= node node extra_nodes */ -{ - ((kmlNodePtr)yymsp[-1].minor.yy0)->Next = (kmlNodePtr)yymsp[0].minor.yy0; - ((kmlNodePtr)yymsp[-2].minor.yy0)->Next = (kmlNodePtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = yymsp[-2].minor.yy0; - } - break; - case 26: /* attr ::= KML_KEYWORD KML_EQ KML_VALUE */ -{ yygotominor.yy0 = kml_attribute( p_data, (void *)yymsp[-2].minor.yy0, (void *)yymsp[0].minor.yy0); } - break; - case 28: /* extra_attr ::= attr extra_attr */ -{ ((kmlAttrPtr)yymsp[-1].minor.yy0)->Next = (kmlAttrPtr)yymsp[0].minor.yy0; yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 29: /* attributes ::= attr attr extra_attr */ -{ - ((kmlAttrPtr)yymsp[-1].minor.yy0)->Next = (kmlAttrPtr)yymsp[0].minor.yy0; - ((kmlAttrPtr)yymsp[-2].minor.yy0)->Next = (kmlAttrPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = yymsp[-2].minor.yy0; - } - break; - case 30: /* coord ::= KML_COORD */ -{ yygotominor.yy0 = kml_coord( p_data, (void *)yymsp[0].minor.yy0); } - break; - case 32: /* extra_coord ::= coord extra_coord */ -{ ((kmlCoordPtr)yymsp[-1].minor.yy0)->Next = (kmlCoordPtr)yymsp[0].minor.yy0; yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 33: /* coord_chain ::= coord coord extra_coord */ -{ - ((kmlCoordPtr)yymsp[-1].minor.yy0)->Next = (kmlCoordPtr)yymsp[0].minor.yy0; - ((kmlCoordPtr)yymsp[-2].minor.yy0)->Next = (kmlCoordPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = yymsp[-2].minor.yy0; - } - break; - default: - /* (0) main ::= in */ yytestcase(yyruleno==0); - /* (1) in ::= */ yytestcase(yyruleno==1); - /* (2) in ::= in state KML_NEWLINE */ yytestcase(yyruleno==2); - /* (3) state ::= program */ yytestcase(yyruleno==3); - /* (4) program ::= kml_tree */ yytestcase(yyruleno==4); - break; - }; - yygoto = yyRuleInfo[yyruleno].lhs; - yysize = yyRuleInfo[yyruleno].nrhs; - yypParser->yyidx -= yysize; - yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto); - if( yyact < YYNSTATE ){ -#ifdef NDEBUG - /* If we are not debugging and the reduce action popped at least - ** one element off the stack, then we can push the new element back - ** onto the stack here, and skip the stack overflow test in yy_shift(). - ** That gives a significant speed improvement. */ - if( yysize ){ - yypParser->yyidx++; - yymsp -= yysize-1; - yymsp->stateno = (YYACTIONTYPE)yyact; - yymsp->major = (YYCODETYPE)yygoto; - yymsp->minor = yygotominor; - }else -#endif - { - yy_shift(yypParser,yyact,yygoto,&yygotominor); - } - }else{ - assert( yyact == YYNSTATE + YYNRULE + 1 ); - yy_accept(yypParser); - } -} - -/* -** The following code executes when the parse fails -*/ -#ifndef YYNOERRORRECOVERY -static void yy_parse_failed( - yyParser *yypParser /* The parser */ -){ - ParseARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser fails */ - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} -#endif /* YYNOERRORRECOVERY */ - -/* -** The following code executes when a syntax error first occurs. -*/ -static void yy_syntax_error( - yyParser *yypParser, /* The parser */ - int yymajor, /* The major type of the error token */ - YYMINORTYPE yyminor /* The minor type of the error token */ -){ - ParseARG_FETCH; -#define TOKEN (yyminor.yy0) - -/* -** when the LEMON parser encounters an error -** then this global variable is set -*/ - p_data->kml_parse_error = 1; - p_data->result = NULL; - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* -** The following is executed when the parser accepts -*/ -static void yy_accept( - yyParser *yypParser /* The parser */ -){ - ParseARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser accepts */ - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* The main parser program. -** The first argument is a pointer to a structure obtained from -** "ParseAlloc" which describes the current state of the parser. -** The second argument is the major token number. The third is -** the minor token. The fourth optional argument is whatever the -** user wants (and specified in the grammar) and is available for -** use by the action routines. -** -** Inputs: -**
    -**
  • A pointer to the parser (an opaque structure.) -**
  • The major token number. -**
  • The minor token number. -**
  • An option argument of a grammar-specified type. -**
-** -** Outputs: -** None. -*/ -void Parse( - void *yyp, /* The parser */ - int yymajor, /* The major token code number */ - ParseTOKENTYPE yyminor /* The value for the token */ - ParseARG_PDECL /* Optional %extra_argument parameter */ -){ - YYMINORTYPE yyminorunion; - int yyact; /* The parser action. */ - int yyendofinput; /* True if we are at the end of input */ -#ifdef YYERRORSYMBOL - int yyerrorhit = 0; /* True if yymajor has invoked an error */ -#endif - yyParser *yypParser; /* The parser */ - - /* (re)initialize the parser, if necessary */ - yypParser = (yyParser*)yyp; - if( yypParser->yyidx<0 ){ -#if YYSTACKDEPTH<=0 - if( yypParser->yystksz <=0 ){ - /*memset(&yyminorunion, 0, sizeof(yyminorunion));*/ - yyminorunion = yyzerominor; - yyStackOverflow(yypParser, &yyminorunion); - return; - } -#endif - yypParser->yyidx = 0; - yypParser->yyerrcnt = -1; - yypParser->yystack[0].stateno = 0; - yypParser->yystack[0].major = 0; - } - yyminorunion.yy0 = yyminor; - yyendofinput = (yymajor==0); - ParseARG_STORE; - -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]); - } -#endif - - do{ - yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor); - if( yyactyyerrcnt--; - yymajor = YYNOCODE; - }else if( yyact < YYNSTATE + YYNRULE ){ - yy_reduce(yypParser,yyact-YYNSTATE); - }else{ - assert( yyact == YY_ERROR_ACTION ); -#ifdef YYERRORSYMBOL - int yymx; -#endif -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt); - } -#endif -#ifdef YYERRORSYMBOL - /* A syntax error has occurred. - ** The response to an error depends upon whether or not the - ** grammar defines an error token "ERROR". - ** - ** This is what we do if the grammar does define ERROR: - ** - ** * Call the %syntax_error function. - ** - ** * Begin popping the stack until we enter a state where - ** it is legal to shift the error symbol, then shift - ** the error symbol. - ** - ** * Set the error count to three. - ** - ** * Begin accepting and shifting new tokens. No new error - ** processing will occur until three tokens have been - ** shifted successfully. - ** - */ - if( yypParser->yyerrcnt<0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yymx = yypParser->yystack[yypParser->yyidx].major; - if( yymx==YYERRORSYMBOL || yyerrorhit ){ -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sDiscard input token %s\n", - yyTracePrompt,yyTokenName[yymajor]); - } -#endif - yy_destructor(yypParser, (YYCODETYPE)yymajor,&yyminorunion); - yymajor = YYNOCODE; - }else{ - while( - yypParser->yyidx >= 0 && - yymx != YYERRORSYMBOL && - (yyact = yy_find_reduce_action( - yypParser->yystack[yypParser->yyidx].stateno, - YYERRORSYMBOL)) >= YYNSTATE - ){ - yy_pop_parser_stack(yypParser); - } - if( yypParser->yyidx < 0 || yymajor==0 ){ - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - yy_parse_failed(yypParser); - yymajor = YYNOCODE; - }else if( yymx!=YYERRORSYMBOL ){ - YYMINORTYPE u2; - u2.YYERRSYMDT = 0; - yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2); - } - } - yypParser->yyerrcnt = 3; - yyerrorhit = 1; -#elif defined(YYNOERRORRECOVERY) - /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to - ** do any kind of error recovery. Instead, simply invoke the syntax - ** error routine and continue going as if nothing had happened. - ** - ** Applications can set this macro (for example inside %include) if - ** they intend to abandon the parse upon the first syntax error seen. - */ - yy_syntax_error(yypParser,yymajor,yyminorunion); - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - yymajor = YYNOCODE; - -#else /* YYERRORSYMBOL is not defined */ - /* This is what we do if the grammar does not define ERROR: - ** - ** * Report an error message, and throw away the input token. - ** - ** * If the input token is $, then fail the parse. - ** - ** As before, subsequent error messages are suppressed until - ** three input tokens have been successfully shifted. - */ - if( yypParser->yyerrcnt<=0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yypParser->yyerrcnt = 3; - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - if( yyendofinput ){ - yy_parse_failed(yypParser); - } - yymajor = YYNOCODE; -#endif - } - }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 ); - return; -} diff --git a/src/spatialite/src/gaiageo/Kml.h b/src/spatialite/src/gaiageo/Kml.h deleted file mode 100644 index afd14fe..0000000 --- a/src/spatialite/src/gaiageo/Kml.h +++ /dev/null @@ -1,8 +0,0 @@ -#define KML_NEWLINE 1 -#define KML_END 2 -#define KML_CLOSE 3 -#define KML_OPEN 4 -#define KML_KEYWORD 5 -#define KML_EQ 6 -#define KML_VALUE 7 -#define KML_COORD 8 diff --git a/src/spatialite/src/gaiageo/Makefile.am b/src/spatialite/src/gaiageo/Makefile.am deleted file mode 100644 index c54ece5..0000000 --- a/src/spatialite/src/gaiageo/Makefile.am +++ /dev/null @@ -1,35 +0,0 @@ - -SUBDIRS = flex lemon - -INCLUDES = @CFLAGS@ @GEOS_CFLAGS@ -INCLUDES += -I$(top_srcdir)/src/headers - -noinst_LTLIBRARIES = libgaiageo.la - -libgaiageo_la_SOURCES = gg_advanced.c \ - gg_endian.c \ - gg_geodesic.c \ - gg_geometries.c \ - gg_geoscvt.c \ - gg_relations.c \ - gg_lwgeom.c \ - gg_extras.c \ - gg_shape.c \ - gg_transform.c \ - gg_wkb.c \ - gg_wkt.c \ - gg_vanuatu.c \ - gg_ewkt.c \ - gg_geoJSON.c \ - gg_kml.c \ - gg_gml.c \ - gg_voronoj.c - -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda - -EXTRA_DIST = Ewkt.h Ewkt.c lex.Ewkt.c \ - geoJSON.h geoJSON.c lex.GeoJson.c \ - Gml.h Gml.c lex.Gml.c \ - Kml.h Kml.c lex.Kml.c \ - vanuatuWkt.h vanuatuWkt.c lex.VanuatuWkt.c - diff --git a/src/spatialite/src/gaiageo/Makefile.in b/src/spatialite/src/gaiageo/Makefile.in deleted file mode 100644 index e4d4c43..0000000 --- a/src/spatialite/src/gaiageo/Makefile.in +++ /dev/null @@ -1,704 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/gaiageo -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libgaiageo_la_LIBADD = -am_libgaiageo_la_OBJECTS = gg_advanced.lo gg_endian.lo gg_geodesic.lo \ - gg_geometries.lo gg_geoscvt.lo gg_relations.lo gg_lwgeom.lo \ - gg_extras.lo gg_shape.lo gg_transform.lo gg_wkb.lo gg_wkt.lo \ - gg_vanuatu.lo gg_ewkt.lo gg_geoJSON.lo gg_kml.lo gg_gml.lo \ - gg_voronoj.lo -libgaiageo_la_OBJECTS = $(am_libgaiageo_la_OBJECTS) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libgaiageo_la_SOURCES) -DIST_SOURCES = $(libgaiageo_la_SOURCES) -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = flex lemon -INCLUDES = @CFLAGS@ @GEOS_CFLAGS@ -I$(top_srcdir)/src/headers -noinst_LTLIBRARIES = libgaiageo.la -libgaiageo_la_SOURCES = gg_advanced.c \ - gg_endian.c \ - gg_geodesic.c \ - gg_geometries.c \ - gg_geoscvt.c \ - gg_relations.c \ - gg_lwgeom.c \ - gg_extras.c \ - gg_shape.c \ - gg_transform.c \ - gg_wkb.c \ - gg_wkt.c \ - gg_vanuatu.c \ - gg_ewkt.c \ - gg_geoJSON.c \ - gg_kml.c \ - gg_gml.c \ - gg_voronoj.c - -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda -EXTRA_DIST = Ewkt.h Ewkt.c lex.Ewkt.c \ - geoJSON.h geoJSON.c lex.GeoJson.c \ - Gml.h Gml.c lex.Gml.c \ - Kml.h Kml.c lex.Kml.c \ - vanuatuWkt.h vanuatuWkt.c lex.VanuatuWkt.c - -all: all-recursive - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/gaiageo/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/gaiageo/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libgaiageo.la: $(libgaiageo_la_OBJECTS) $(libgaiageo_la_DEPENDENCIES) $(EXTRA_libgaiageo_la_DEPENDENCIES) - $(LINK) $(libgaiageo_la_OBJECTS) $(libgaiageo_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_advanced.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_endian.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_ewkt.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_extras.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_geoJSON.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_geodesic.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_geometries.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_geoscvt.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_gml.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_kml.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_lwgeom.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_relations.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_shape.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_transform.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_vanuatu.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_voronoj.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_wkb.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_wkt.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile $(LTLIBRARIES) -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-recursive - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/src/gaiageo/flex/Makefile.am b/src/spatialite/src/gaiageo/flex/Makefile.am deleted file mode 100644 index cb58ef8..0000000 --- a/src/spatialite/src/gaiageo/flex/Makefile.am +++ /dev/null @@ -1,4 +0,0 @@ - -EXTRA_DIST = ewktLexer.l geoJsonLexer.l gmlLexer.l \ - kmlLexer.l vanuatuLexer.l ReadMe.txt - diff --git a/src/spatialite/src/gaiageo/flex/Makefile.in b/src/spatialite/src/gaiageo/flex/Makefile.in deleted file mode 100644 index a6edc0f..0000000 --- a/src/spatialite/src/gaiageo/flex/Makefile.in +++ /dev/null @@ -1,392 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/gaiageo/flex -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -EXTRA_DIST = ewktLexer.l geoJsonLexer.l gmlLexer.l \ - kmlLexer.l vanuatuLexer.l ReadMe.txt - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/gaiageo/flex/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/gaiageo/flex/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/src/gaiageo/flex/ReadMe.txt b/src/spatialite/src/gaiageo/flex/ReadMe.txt deleted file mode 100644 index f601aa6..0000000 --- a/src/spatialite/src/gaiageo/flex/ReadMe.txt +++ /dev/null @@ -1,116 +0,0 @@ -The Vanuatu WKT lexer: -====================== -1) in order to make any change to the lexer -you have to edit first the definitions file -vanuatuLexer.l - -2) then run: -flex -L vanuatuLexer.l - -3) a source file named "lex.VanuatuWkt.c" will be -generated during the above step. - -3.1) IMPORTANT NOTICE: carefully check the generated *.c -code; you should manually replace any occurrence of: -fprintf(stderr, ..... -with: -spatialite_e(..... - -3.2) now you should copy this file into the parent dir: -cp lex.VanuatuWkt.c .. - - - - -The EWKT lexer: -================ -1) in order to make any change to the lexer -you have to edit first the definitions file -ewktLexer.l - -2) then run: -flex -L ewktLexer.l - -3) a source file named "lex.Ewkt.c" will be -generated during the above step. - -3.1) IMPORTANT NOTICE: carefully check the generated *.c -code; you should manually replace any occurrence of: -fprintf(stderr, ..... -with: -spatialite_e(..... - -3.2) now you should copy this file into the parent dir: -cp lex.Ewkt.c .. - - - - -The GeoJSON lexer: -================ -1) in order to make any change to the lexer -you have to edit first the definitions file -geoJsonLexer.l - -2) then run: -flex -L geoJsonLexer.l - -3) a source file named "lex.GeoJson.c" will be -generated during the above step. - -3.1) IMPORTANT NOTICE: carefully check the generated *.c -code; you should manually replace any occurrence of: -fprintf(stderr, ..... -with: -spatialite_e(..... - -3.2) now you should copy this file into the parent dir: -cp lex.geoJsonLexer.c .. - - - - -The KML lexer: -================ -1) in order to make any change to the lexer -you have to edit first the definitions file -kmlLexer.l - -2) then run: -flex -L kmlLexer.l - -3) a source file named "lex.Kml.c" will be -generated during the above step. - -3.1) IMPORTANT NOTICE: carefully check the generated *.c -code; you should manually replace any occurrence of: -fprintf(stderr, ..... -with: -spatialite_e(..... - -3.2) now you should copy this file into the parent dir: -cp lex.Kml.c .. - - - - -The GML lexer: -================ -1) in order to make any change to the lexer -you have to edit first the definitions file -gmlLexer.l - -2) then run: -flex -L gmlLexer.l - -3) a source file named "lex.Gml.c" will be -generated during the above step. - -3.1) IMPORTANT NOTICE: carefully check the generated *.c -code; you should manually replace any occurrence of: -fprintf(stderr, ..... -with: -spatialite_e(..... - -3.2) now you should copy this file into the parent dir: -cp lex.Gml.c .. diff --git a/src/spatialite/src/gaiageo/flex/ewktLexer.l b/src/spatialite/src/gaiageo/flex/ewktLexer.l deleted file mode 100644 index e61148b..0000000 --- a/src/spatialite/src/gaiageo/flex/ewktLexer.l +++ /dev/null @@ -1,89 +0,0 @@ -/* - EwktLexer.l -- EWKT parser - FLEX config - - version 2.4, 2011 May 14 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -%option prefix="Ewkt" -%option reentrant -%option extra-type="struct ewkt_data *" -%option nounput -%option noinput - -/** -* The main string-token matcher. -* The lower case part is probably not needed. We should really be converting -* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. -* What Flex will do is, For the input string, beginning from the front, Flex -* will try to match with any of the defined tokens from below. Flex will -* then match the string of longest length. Suppose the string is: POINTM, -* Flex would match both POINT and POINTM, but since POINTM is the longer -* of the two tokens, FLEX will match POINTM. -*/ -%% --?[0-9]+|-?[0-9]+"."[0-9]*|"+"?[0-9]+|"+"?[0-9]+"."[0-9]* { Ewktget_extra(yyscanner)->ewkt_col += (int) strlen(yytext); EwktLval.dval = atof(yytext); return EWKT_NUM; } -"," { EwktLval.dval = 0; return EWKT_COMMA; } -"(" { EwktLval.dval = 0; return EWKT_OPEN_BRACKET; } -")" { EwktLval.dval = 0; return EWKT_CLOSE_BRACKET; } -(?i:"point") { EwktLval.dval = 0; return EWKT_POINT; } -(?i:"pointm") { EwktLval.dval = 0; return EWKT_POINT_M; } -(?i:"linestring") { EwktLval.dval = 0; return EWKT_LINESTRING; } -(?i:"linestringm") { EwktLval.dval = 0; return EWKT_LINESTRING_M; } -(?i:"polygon") { EwktLval.dval = 0; return EWKT_POLYGON; } -(?i:"polygonm") { EwktLval.dval = 0; return EWKT_POLYGON_M; } -(?i:"multipoint") { EwktLval.dval = 0; return EWKT_MULTIPOINT; } -(?i:"multipointm") { EwktLval.dval = 0; return EWKT_MULTIPOINT_M; } -(?i:"multilinestring") { EwktLval.dval = 0; return EWKT_MULTILINESTRING; } -(?i:"multilinestringm") { EwktLval.dval = 0; return EWKT_MULTILINESTRING_M; } -(?i:"multipolygon") { EwktLval.dval = 0; return EWKT_MULTIPOLYGON; } -(?i:"multipolygonm") { EwktLval.dval = 0; return EWKT_MULTIPOLYGON_M; } -(?i:"geometrycollection") { EwktLval.dval = 0; return EWKT_GEOMETRYCOLLECTION; } -(?i:"geometrycollectionm") { EwktLval.dval = 0; return EWKT_GEOMETRYCOLLECTION_M; } - -[ \t] { Ewktget_extra(yyscanner)->ewkt_col += (int) strlen(yytext); } /* ignore but count white space */ - -\n { Ewktget_extra(yyscanner)->ewkt_col = 0; Ewktget_extra(yyscanner)->ewkt_line++; } - -. { Ewktget_extra(yyscanner)->ewkt_col += (int) strlen(yytext); return -1; } -%% - -int yywrap(yyscan_t yyscanner ) -{ - return 1; -} diff --git a/src/spatialite/src/gaiageo/flex/geoJsonLexer.l b/src/spatialite/src/gaiageo/flex/geoJsonLexer.l deleted file mode 100644 index 4a13446..0000000 --- a/src/spatialite/src/gaiageo/flex/geoJsonLexer.l +++ /dev/null @@ -1,94 +0,0 @@ -/* - geoJsonLexer.l -- GeoJSON parser - FLEX config - - version 2.4, 2011 May 16 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -%option prefix="GeoJson" -%option reentrant -%option extra-type="struct geoJson_data *" -%option nounput -%option noinput - -/** -* The main string-token matcher. -* The lower case part is probably not needed. We should really be converting -* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. -* What Flex will do is, For the input string, beginning from the front, Flex -* will try to match with any of the defined tokens from below. Flex will -* then match the string of longest length. Suppose the string is: POINTM, -* Flex would match both POINT and POINTM, but since POINTM is the longer -* of the two tokens, FLEX will match POINTM. -*/ -%% --?[0-9]+|-?[0-9]+"."[0-9]*|"+"?[0-9]+|"+"?[0-9]+"."[0-9]* { GeoJsonget_extra(yyscanner)->geoJson_col += (int) strlen(yytext); GeoJsonLval.dval = atof(yytext); return GEOJSON_NUM; } --?"\""EPSG:-?[0-9]+"\"" { GeoJsonget_extra(yyscanner)->geoJson_col += (int) strlen(yytext); GeoJsonLval.ival = atoi(yytext+6); return GEOJSON_SHORT_SRID; } --?"\""urn:ogc:def:crs:EPSG:-?[0-9]+"\"" { GeoJsonget_extra(yyscanner)->geoJson_col += (int) strlen(yytext); GeoJsonLval.ival = atoi(yytext+22); return GEOJSON_LONG_SRID; } -"," { GeoJsonLval.dval = 0; return GEOJSON_COMMA; } -":" { GeoJsonLval.dval = 0; return GEOJSON_COLON; } -"{" { GeoJsonLval.dval = 0; return GEOJSON_OPEN_BRACE; } -"}" { GeoJsonLval.dval = 0; return GEOJSON_CLOSE_BRACE; } -"[" { GeoJsonLval.dval = 0; return GEOJSON_OPEN_BRACKET; } -"]" { GeoJsonLval.dval = 0; return GEOJSON_CLOSE_BRACKET; } -(?-i:"\"type\"") { GeoJsonLval.dval = 0; return GEOJSON_TYPE; } -(?-i:"\"coordinates\"") { GeoJsonLval.dval = 0; return GEOJSON_COORDS; } -(?-i:"\"geometries\"") { GeoJsonLval.dval = 0; return GEOJSON_GEOMS; } -(?-i:"\"bbox\"") { GeoJsonLval.dval = 0; return GEOJSON_BBOX; } -(?-i:"\"name\"") { GeoJsonLval.dval = 0; return GEOJSON_NAME; } -(?-i:"\"properties\"") { GeoJsonLval.dval = 0; return GEOJSON_PROPS; } -(?-i:"\"crs\"") { GeoJsonLval.dval = 0; return GEOJSON_CRS; } -(?-i:"\"Point\"") { GeoJsonLval.dval = 0; return GEOJSON_POINT; } -(?-i:"\"LineString\"") { GeoJsonLval.dval = 0; return GEOJSON_LINESTRING; } -(?-i:"\"Polygon\"") { GeoJsonLval.dval = 0; return GEOJSON_POLYGON; } -(?-i:"\"MultiPoint\"") { GeoJsonLval.dval = 0; return GEOJSON_MULTIPOINT; } -(?-i:"\"MultiLineString\"") { GeoJsonLval.dval = 0; return GEOJSON_MULTILINESTRING; } -(?-i:"\"MultiPolygon\"") { GeoJsonLval.dval = 0; return GEOJSON_MULTIPOLYGON; } -(?-i:"\"GeometryCollection\"") { GeoJsonLval.dval = 0; return GEOJSON_GEOMETRYCOLLECTION; } - -[ \t] { GeoJsonget_extra(yyscanner)->geoJson_col += (int) strlen(yytext); } /* ignore but count white space */ - -\n { GeoJsonget_extra(yyscanner)->geoJson_col = 0; GeoJsonget_extra(yyscanner)->geoJson_line++; } - -. { GeoJsonget_extra(yyscanner)->geoJson_col += (int) strlen(yytext); return -1; } -%% - -int yywrap(yyscan_t yyscanner ) -{ - return 1; -} diff --git a/src/spatialite/src/gaiageo/flex/gmlLexer.l b/src/spatialite/src/gaiageo/flex/gmlLexer.l deleted file mode 100644 index 827d3ca..0000000 --- a/src/spatialite/src/gaiageo/flex/gmlLexer.l +++ /dev/null @@ -1,78 +0,0 @@ -/* - gmlLexer.l -- GML parser - FLEX config - - version 2.4, 2011 June 3 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -%option prefix="Gml" -%option reentrant -%option extra-type="struct gml_data *" -%option noinput -%option nounput - -/** -* The main string-token matcher. -* The lower case part is probably not needed. We should really be converting -* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. -* What Flex will do is, For the input string, beginning from the front, Flex -* will try to match with any of the defined tokens from below. Flex will -* then match the string of longest length. Suppose the string is: POINTM, -* Flex would match both POINT and POINTM, but since POINTM is the longer -* of the two tokens, FLEX will match POINTM. -*/ -%% -"/" { gml_freeString(&(GmlLval.pval)); return GML_END; } -"=" { gml_freeString(&(GmlLval.pval)); return GML_EQ; } -"<" { gml_freeString(&(GmlLval.pval)); return GML_OPEN; } -">" { gml_freeString(&(GmlLval.pval)); return GML_CLOSE; } -[0-9,\.\+-]* { gml_saveString(&(GmlLval.pval), yytext); return GML_COORD; } -\"[^<>\"]*\" { gml_saveString(&(GmlLval.pval), yytext); return GML_VALUE; } -[a-zA-Z_][a-zA-Z_:0-9]* { gml_saveString(&(GmlLval.pval), yytext); return GML_KEYWORD; } - -[ \t] { gml_freeString(&(GmlLval.pval)); Gmlget_extra(yyscanner)->gml_col += (int) strlen(yytext); } /* ignore but count white space */ - -\n { gml_freeString(&(GmlLval.pval)); Gmlget_extra(yyscanner)->gml_col = 0; Gmlget_extra(yyscanner)->gml_line++; } - -. { gml_freeString(&(GmlLval.pval)); Gmlget_extra(yyscanner)->gml_col += (int) strlen(yytext); return -1; } -%% - -int yywrap(yyscan_t yyscanner ) -{ - return 1; -} diff --git a/src/spatialite/src/gaiageo/flex/kmlLexer.l b/src/spatialite/src/gaiageo/flex/kmlLexer.l deleted file mode 100644 index 5e374eb..0000000 --- a/src/spatialite/src/gaiageo/flex/kmlLexer.l +++ /dev/null @@ -1,78 +0,0 @@ -/* - kmlLexer.l -- KML parser - FLEX config - - version 2.4, 2011 June 14 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -%option prefix="Kml" -%option reentrant -%option extra-type="struct kml_data *" -%option noinput -%option nounput - -/** -* The main string-token matcher. -* The lower case part is probably not needed. We should really be converting -* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. -* What Flex will do is, For the input string, beginning from the front, Flex -* will try to match with any of the defined tokens from below. Flex will -* then match the string of longest length. Suppose the string is: POINTM, -* Flex would match both POINT and POINTM, but since POINTM is the longer -* of the two tokens, FLEX will match POINTM. -*/ -%% -"/" { kml_freeString(&(KmlLval.pval)); return KML_END; } -"=" { kml_freeString(&(KmlLval.pval)); return KML_EQ; } -"<" { kml_freeString(&(KmlLval.pval)); return KML_OPEN; } -">" { kml_freeString(&(KmlLval.pval)); return KML_CLOSE; } -[0-9,\.\+-]* { kml_saveString(&(KmlLval.pval), yytext); return KML_COORD; } -\"[^<>\"]*\" { kml_saveString(&(KmlLval.pval), yytext); return KML_VALUE; } -[a-zA-Z_][a-zA-Z_:0-9]* { kml_saveString(&(KmlLval.pval), yytext); return KML_KEYWORD; } - -[ \t] { kml_freeString(&(KmlLval.pval)); Kmlget_extra(yyscanner)->kml_col += (int) strlen(yytext); } /* ignore but count white space */ - -\n { kml_freeString(&(KmlLval.pval)); Kmlget_extra(yyscanner)->kml_col = 0; Kmlget_extra(yyscanner)->kml_line++; } - -. { kml_freeString(&(KmlLval.pval)); Kmlget_extra(yyscanner)->kml_col += (int) strlen(yytext); return -1; } -%% - -int yywrap(yyscan_t yyscanner ) -{ - return 1; -} diff --git a/src/spatialite/src/gaiageo/flex/vanuatuLexer.l b/src/spatialite/src/gaiageo/flex/vanuatuLexer.l deleted file mode 100644 index ca9f033..0000000 --- a/src/spatialite/src/gaiageo/flex/vanuatuLexer.l +++ /dev/null @@ -1,145 +0,0 @@ -/* - vanuatuLexer.l -- Vanuatu WKT parser - FLEX config - - version 2.4, 2010 April 2 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): -The Vanuatu Team - University of Toronto - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -/****************************************************************************** -** The following code was created by Team Vanuatu of The University of Toronto. - -Authors: -Ruppi Rana ruppi.rana@gmail.com -Dev Tanna dev.tanna@gmail.com -Elias Adum elias.adum@gmail.com -Benton Hui benton.hui@gmail.com -Abhayan Sundararajan abhayan@gmail.com -Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com -Nikola Banovic nikola.banovic@gmail.com -Yong Jian yong.jian@utoronto.ca - -Supervisor: -Greg Wilson gvwilson@cs.toronto.ca - -------------------------------------------------------------------------------- -*/ - -%option prefix="VanuatuWkt" -%option reentrant -%option extra-type="struct vanuatu_data *" -%option nounput -%option noinput - -/** -* The main string-token matcher. -* The lower case part is probably not needed. We should really be converting -* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. -* What Flex will do is, For the input string, beginning from the front, Flex -* will try to match with any of the defined tokens from below. Flex will -* then match the string of longest length. Suppose the string is: POINT ZM, -* Flex would match both POINT Z and POINT ZM, but since POINT ZM is the longer -* of the two tokens, FLEX will match POINT ZM. -*/ -%% --?[0-9]+|-?[0-9]+"."[0-9]*|"+"?[0-9]+|"+"?[0-9]+"."[0-9]* { VanuatuWktget_extra(yyscanner)->vanuatu_col += (int) strlen(yytext); VanuatuWktlval.dval = atof(yytext); return VANUATU_NUM; } -"," { VanuatuWktlval.dval = 0; return VANUATU_COMMA; } -"(" { VanuatuWktlval.dval = 0; return VANUATU_OPEN_BRACKET; } -")" { VanuatuWktlval.dval = 0; return VANUATU_CLOSE_BRACKET; } -(?i:"point") { VanuatuWktlval.dval = 0; return VANUATU_POINT; } -(?i:"point"[ \t\n]*"z") { VanuatuWktlval.dval = 0; return VANUATU_POINT_Z; } -(?i:"point"[ \t\n]*"m") { VanuatuWktlval.dval = 0; return VANUATU_POINT_M; } -(?i:"point"[ \t\n]*"zm") { VanuatuWktlval.dval = 0; return VANUATU_POINT_ZM; } -(?i:"linestring") { VanuatuWktlval.dval = 0; return VANUATU_LINESTRING; } -(?i:"linestring"[ \t\n]*"z") { VanuatuWktlval.dval = 0; return VANUATU_LINESTRING_Z; } -(?i:"linestring"[ \t\n]*"m") { VanuatuWktlval.dval = 0; return VANUATU_LINESTRING_M; } -(?i:"linestring"[ \t\n]*"zm") { VanuatuWktlval.dval = 0; return VANUATU_LINESTRING_ZM; } -(?i:"polygon") { VanuatuWktlval.dval = 0; return VANUATU_POLYGON; } -(?i:"polygon"[ \t\n]*"z") { VanuatuWktlval.dval = 0; return VANUATU_POLYGON_Z; } -(?i:"polygon"[ \t\n]*"m") { VanuatuWktlval.dval = 0; return VANUATU_POLYGON_M; } -(?i:"polygon"[ \t\n]*"zm") { VanuatuWktlval.dval = 0; return VANUATU_POLYGON_ZM; } -(?i:"multipoint") { VanuatuWktlval.dval = 0; return VANUATU_MULTIPOINT; } -(?i:"multipoint"[ \t\n]*"z") { VanuatuWktlval.dval = 0; return VANUATU_MULTIPOINT_Z; } -(?i:"multipoint"[ \t\n]*"m") { VanuatuWktlval.dval = 0; return VANUATU_MULTIPOINT_M; } -(?i:"multipoint"[ \t\n]*"zm") { VanuatuWktlval.dval = 0; return VANUATU_MULTIPOINT_ZM; } -(?i:"multilinestring") { VanuatuWktlval.dval = 0; return VANUATU_MULTILINESTRING; } -(?i:"multilinestring"[ \t\n]*"z") { VanuatuWktlval.dval = 0; return VANUATU_MULTILINESTRING_Z; } -(?i:"multilinestring"[ \t\n]*"m") { VanuatuWktlval.dval = 0; return VANUATU_MULTILINESTRING_M; } -(?i:"multilinestring"[ \t\n]*"zm") { VanuatuWktlval.dval = 0; return VANUATU_MULTILINESTRING_ZM; } -(?i:"multipolygon") { VanuatuWktlval.dval = 0; return VANUATU_MULTIPOLYGON; } -(?i:"multipolygon"[ \t\n]*"z") { VanuatuWktlval.dval = 0; return VANUATU_MULTIPOLYGON_Z; } -(?i:"multipolygon"[ \t\n]*"m") { VanuatuWktlval.dval = 0; return VANUATU_MULTIPOLYGON_M; } -(?i:"multipolygon"[ \t\n]*"zm") { VanuatuWktlval.dval = 0; return VANUATU_MULTIPOLYGON_ZM; } -(?i:"geometrycollection") { VanuatuWktlval.dval = 0; return VANUATU_GEOMETRYCOLLECTION; } -(?i:"geometrycollection"[ \t\n]*"z") { VanuatuWktlval.dval = 0; return VANUATU_GEOMETRYCOLLECTION_Z; } -(?i:"geometrycollection"[ \t\n]*"m") { VanuatuWktlval.dval = 0; return VANUATU_GEOMETRYCOLLECTION_M; } -(?i:"geometrycollection"[ \t\n]*"zm") { VanuatuWktlval.dval = 0; return VANUATU_GEOMETRYCOLLECTION_ZM; } - -[ \t] { VanuatuWktget_extra(yyscanner)->vanuatu_col += (int) strlen(yytext); } /* ignore but count white space */ - -\n { VanuatuWktget_extra(yyscanner)->vanuatu_col = 0; VanuatuWktget_extra(yyscanner)->vanuatu_line++; } - -. { VanuatuWktget_extra(yyscanner)->vanuatu_col += (int) strlen(yytext); return -1; } -%% - -int yywrap(yyscan_t yyscanner ) -{ - return 1; -} - -/****************************************************************************** -** This is the end of the code that was created by Team Vanuatu -** of The University of Toronto. - -Authors: -Ruppi Rana ruppi.rana@gmail.com -Dev Tanna dev.tanna@gmail.com -Elias Adum elias.adum@gmail.com -Benton Hui benton.hui@gmail.com -Abhayan Sundararajan abhayan@gmail.com -Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com -Nikola Banovic nikola.banovic@gmail.com -Yong Jian yong.jian@utoronto.ca - -Supervisor: -Greg Wilson gvwilson@cs.toronto.ca - -------------------------------------------------------------------------------- -*/ diff --git a/src/spatialite/src/gaiageo/geoJSON.c b/src/spatialite/src/gaiageo/geoJSON.c deleted file mode 100644 index 79bf7c3..0000000 --- a/src/spatialite/src/gaiageo/geoJSON.c +++ /dev/null @@ -1,1808 +0,0 @@ -/* Driver template for the LEMON parser generator. -** The author disclaims copyright to this source code. -*/ -/* First off, code is included that follows the "include" declaration -** in the input grammar file. */ -#include - -/* Next is all token values, in a form suitable for use by makeheaders. -** This section will be null unless lemon is run with the -m switch. -*/ -/* -** These constants (all generated automatically by the parser generator) -** specify the various kinds of tokens (terminals) that the parser -** understands. -** -** Each symbol here is a terminal symbol in the grammar. -*/ -/* Make sure the INTERFACE macro is defined. -*/ -#ifndef INTERFACE -# define INTERFACE 1 -#endif -/* The next thing included is series of defines which control -** various aspects of the generated parser. -** YYCODETYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 terminals -** and nonterminals. "int" is used otherwise. -** YYNOCODE is a number of type YYCODETYPE which corresponds -** to no legal terminal or nonterminal number. This -** number is used to fill in empty slots of the hash -** table. -** YYFALLBACK If defined, this indicates that one or more tokens -** have fall-back values which should be used if the -** original value of the token will not parse. -** YYACTIONTYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 rules and -** states combined. "int" is used otherwise. -** ParseTOKENTYPE is the data type used for minor tokens given -** directly to the parser from the tokenizer. -** YYMINORTYPE is the data type used for all minor tokens. -** This is typically a union of many types, one of -** which is ParseTOKENTYPE. The entry in the union -** for base tokens is called "yy0". -** YYSTACKDEPTH is the maximum depth of the parser's stack. If -** zero the stack is dynamically sized using realloc() -** ParseARG_SDECL A static variable declaration for the %extra_argument -** ParseARG_PDECL A parameter declaration for the %extra_argument -** ParseARG_STORE Code to store %extra_argument into yypParser -** ParseARG_FETCH Code to extract %extra_argument from yypParser -** YYNSTATE the combined number of states. -** YYNRULE the number of rules in the grammar -** YYERRORSYMBOL is the code number of the error symbol. If not -** defined, then do no error processing. -*/ -#define YYCODETYPE unsigned char -#define YYNOCODE 84 -#define YYACTIONTYPE unsigned short int -#define ParseTOKENTYPE void * -typedef union { - int yyinit; - ParseTOKENTYPE yy0; -} YYMINORTYPE; -#ifndef YYSTACKDEPTH -#define YYSTACKDEPTH 1000000 -#endif -#define ParseARG_SDECL struct geoJson_data *p_data ; -#define ParseARG_PDECL , struct geoJson_data *p_data -#define ParseARG_FETCH struct geoJson_data *p_data = yypParser->p_data -#define ParseARG_STORE yypParser->p_data = p_data -#define YYNSTATE 679 -#define YYNRULE 159 -#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) -#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) -#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) - -/* The yyzerominor constant is used to initialize instances of -** YYMINORTYPE objects to zero. */ -static const YYMINORTYPE yyzerominor = { 0 }; - -/* Define the yytestcase() macro to be a no-op if is not already defined -** otherwise. -** -** Applications can choose to define yytestcase() in the %include section -** to a macro that can assist in verifying code coverage. For production -** code the yytestcase() macro should be turned off. But it is useful -** for testing. -*/ -#ifndef yytestcase -# define yytestcase(X) -#endif - - -/* Next are the tables used to determine what action to take based on the -** current state and lookahead token. These tables are used to implement -** functions that take a state number and lookahead value and return an -** action integer. -** -** Suppose the action integer is N. Then the action is determined as -** follows -** -** 0 <= N < YYNSTATE Shift N. That is, push the lookahead -** token onto the stack and goto state N. -** -** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. -** -** N == YYNSTATE+YYNRULE A syntax error has occurred. -** -** N == YYNSTATE+YYNRULE+1 The parser accepts its input. -** -** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused -** slots in the yy_action[] table. -** -** The action table is constructed as a single large table named yy_action[]. -** Given state S and lookahead X, the action is computed as -** -** yy_action[ yy_shift_ofst[S] + X ] -** -** If the index value yy_shift_ofst[S]+X is out of range or if the value -** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] -** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table -** and that yy_default[S] should be used instead. -** -** The formula above is for computing the action when the lookahead is -** a terminal symbol. If the lookahead is a non-terminal (as occurs after -** a reduce action) then the yy_reduce_ofst[] array is used in place of -** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of -** YY_SHIFT_USE_DFLT. -** -** The following are the tables generated in this section: -** -** yy_action[] A single table containing all actions. -** yy_lookahead[] A table containing the lookahead for each entry in -** yy_action. Used to detect hash collisions. -** yy_shift_ofst[] For each state, the offset into yy_action for -** shifting terminals. -** yy_reduce_ofst[] For each state, the offset into yy_action for -** shifting non-terminals after a reduce. -** yy_default[] Default action for each state. -*/ -static const YYACTIONTYPE yy_action[] = { - /* 0 */ 184, 533, 534, 535, 536, 537, 538, 539, 540, 541, - /* 10 */ 542, 543, 544, 545, 546, 547, 548, 187, 139, 189, - /* 20 */ 146, 147, 148, 190, 155, 156, 679, 104, 185, 112, - /* 30 */ 242, 287, 334, 373, 412, 451, 139, 195, 146, 147, - /* 40 */ 140, 201, 141, 142, 512, 149, 88, 150, 151, 157, - /* 50 */ 148, 551, 155, 156, 496, 188, 243, 193, 254, 509, - /* 60 */ 204, 262, 455, 288, 335, 301, 340, 471, 309, 348, - /* 70 */ 507, 374, 413, 379, 418, 457, 387, 426, 482, 191, - /* 80 */ 498, 480, 452, 567, 568, 839, 1, 169, 461, 465, - /* 90 */ 93, 486, 490, 501, 504, 238, 240, 211, 199, 207, - /* 100 */ 86, 201, 200, 208, 101, 244, 245, 215, 205, 217, - /* 110 */ 553, 216, 223, 219, 227, 99, 201, 220, 228, 246, - /* 120 */ 229, 19, 256, 250, 263, 275, 201, 260, 261, 95, - /* 130 */ 30, 269, 31, 265, 266, 201, 273, 274, 277, 278, - /* 140 */ 281, 285, 286, 42, 201, 292, 289, 290, 303, 297, - /* 150 */ 307, 308, 201, 310, 322, 312, 313, 96, 316, 328, - /* 160 */ 320, 321, 201, 201, 324, 325, 332, 333, 206, 120, - /* 170 */ 209, 336, 337, 121, 342, 192, 349, 361, 201, 53, - /* 180 */ 346, 347, 351, 352, 355, 64, 359, 360, 201, 363, - /* 190 */ 364, 367, 375, 376, 2, 201, 381, 371, 372, 394, - /* 200 */ 201, 122, 126, 201, 385, 386, 388, 400, 390, 391, - /* 210 */ 414, 415, 398, 399, 402, 403, 406, 410, 411, 420, - /* 220 */ 201, 130, 134, 201, 424, 425, 427, 439, 433, 429, - /* 230 */ 430, 218, 201, 221, 437, 438, 441, 442, 445, 477, - /* 240 */ 478, 202, 201, 449, 450, 473, 460, 468, 493, 201, - /* 250 */ 485, 464, 489, 508, 520, 514, 510, 511, 524, 201, - /* 260 */ 518, 519, 522, 523, 526, 203, 530, 531, 201, 264, - /* 270 */ 276, 267, 279, 521, 311, 323, 314, 326, 350, 362, - /* 280 */ 353, 365, 389, 401, 392, 404, 428, 440, 431, 443, - /* 290 */ 556, 247, 248, 97, 99, 251, 249, 571, 102, 105, - /* 300 */ 252, 253, 103, 292, 106, 573, 291, 295, 113, 293, - /* 310 */ 294, 111, 123, 114, 110, 589, 125, 124, 296, 297, - /* 320 */ 119, 127, 298, 299, 377, 840, 118, 620, 592, 128, - /* 330 */ 246, 131, 300, 132, 338, 135, 339, 250, 136, 4, - /* 340 */ 3, 5, 129, 532, 6, 158, 186, 133, 8, 552, - /* 350 */ 104, 378, 159, 549, 460, 622, 137, 550, 112, 87, - /* 360 */ 416, 194, 9, 10, 197, 464, 636, 196, 417, 468, - /* 370 */ 485, 638, 198, 453, 554, 555, 489, 454, 89, 90, - /* 380 */ 651, 652, 493, 91, 653, 11, 170, 469, 12, 470, - /* 390 */ 557, 558, 210, 213, 479, 13, 662, 663, 664, 214, - /* 400 */ 212, 14, 494, 559, 560, 678, 171, 495, 15, 561, - /* 410 */ 562, 222, 225, 16, 17, 226, 224, 563, 230, 564, - /* 420 */ 231, 236, 235, 233, 20, 232, 7, 234, 456, 239, - /* 430 */ 840, 565, 241, 237, 566, 569, 160, 18, 840, 551, - /* 440 */ 570, 92, 94, 98, 100, 572, 88, 255, 840, 21, - /* 450 */ 258, 840, 574, 257, 259, 22, 575, 270, 576, 172, - /* 460 */ 23, 268, 577, 578, 271, 25, 840, 272, 26, 24, - /* 470 */ 579, 580, 173, 581, 280, 840, 582, 840, 283, 27, - /* 480 */ 284, 28, 282, 583, 32, 29, 161, 584, 840, 840, - /* 490 */ 585, 586, 107, 108, 109, 587, 304, 840, 840, 115, - /* 500 */ 116, 117, 588, 590, 302, 33, 840, 591, 305, 840, - /* 510 */ 306, 840, 593, 594, 174, 34, 36, 35, 840, 39, - /* 520 */ 315, 476, 595, 596, 318, 37, 75, 840, 317, 840, - /* 530 */ 319, 329, 597, 598, 599, 175, 40, 38, 327, 600, - /* 540 */ 840, 330, 840, 331, 41, 601, 602, 603, 162, 840, - /* 550 */ 840, 341, 604, 840, 840, 840, 605, 606, 43, 344, - /* 560 */ 343, 840, 44, 356, 345, 45, 840, 607, 608, 176, - /* 570 */ 46, 358, 840, 609, 354, 840, 610, 357, 48, 47, - /* 580 */ 611, 49, 840, 612, 177, 366, 840, 613, 614, 840, - /* 590 */ 840, 369, 50, 370, 163, 368, 51, 615, 52, 840, - /* 600 */ 840, 616, 840, 617, 618, 840, 380, 840, 619, 621, - /* 610 */ 382, 383, 840, 178, 54, 55, 384, 840, 623, 56, - /* 620 */ 624, 57, 625, 393, 626, 840, 840, 59, 396, 840, - /* 630 */ 58, 397, 395, 627, 840, 179, 628, 60, 405, 629, - /* 640 */ 630, 840, 840, 62, 408, 840, 61, 409, 407, 631, - /* 650 */ 840, 164, 632, 63, 840, 633, 634, 419, 840, 840, - /* 660 */ 481, 635, 840, 637, 65, 423, 840, 421, 422, 66, - /* 670 */ 840, 81, 639, 67, 640, 840, 180, 68, 69, 840, - /* 680 */ 840, 432, 641, 642, 840, 435, 70, 840, 840, 434, - /* 690 */ 436, 840, 643, 181, 644, 71, 517, 840, 645, 444, - /* 700 */ 840, 646, 840, 183, 72, 447, 840, 446, 647, 448, - /* 710 */ 73, 840, 674, 648, 165, 138, 840, 649, 166, 143, - /* 720 */ 840, 650, 458, 84, 840, 459, 462, 654, 840, 463, - /* 730 */ 144, 655, 840, 466, 145, 467, 840, 840, 840, 656, - /* 740 */ 472, 840, 840, 657, 840, 658, 474, 475, 529, 840, - /* 750 */ 74, 840, 659, 85, 660, 167, 665, 840, 661, 483, - /* 760 */ 152, 840, 484, 487, 153, 840, 488, 154, 840, 666, - /* 770 */ 491, 840, 492, 840, 497, 667, 840, 168, 840, 668, - /* 780 */ 840, 669, 499, 670, 76, 500, 840, 840, 502, 77, - /* 790 */ 503, 840, 505, 840, 78, 79, 506, 840, 840, 182, - /* 800 */ 80, 513, 840, 671, 840, 840, 82, 516, 840, 840, - /* 810 */ 840, 515, 672, 840, 840, 673, 83, 840, 840, 527, - /* 820 */ 525, 675, 840, 528, 840, 840, 840, 840, 676, 677, -}; -static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, - /* 10 */ 38, 39, 40, 41, 42, 43, 44, 5, 75, 45, - /* 20 */ 77, 78, 79, 49, 81, 82, 0, 59, 2, 61, - /* 30 */ 18, 19, 20, 21, 22, 23, 75, 46, 77, 78, - /* 40 */ 75, 50, 77, 78, 9, 79, 6, 81, 82, 23, - /* 50 */ 79, 11, 81, 82, 2, 7, 7, 9, 9, 24, - /* 60 */ 12, 12, 2, 7, 7, 9, 9, 9, 12, 12, - /* 70 */ 12, 7, 7, 9, 9, 5, 12, 12, 5, 50, - /* 80 */ 5, 2, 24, 16, 17, 26, 27, 50, 18, 19, - /* 90 */ 10, 18, 19, 18, 19, 51, 52, 46, 45, 45, - /* 100 */ 10, 50, 49, 49, 49, 55, 56, 45, 47, 48, - /* 110 */ 15, 49, 46, 45, 45, 10, 50, 49, 49, 45, - /* 120 */ 2, 10, 46, 49, 47, 48, 50, 55, 56, 45, - /* 130 */ 10, 46, 10, 55, 56, 50, 55, 56, 55, 56, - /* 140 */ 46, 55, 56, 10, 50, 45, 57, 58, 46, 49, - /* 150 */ 57, 58, 50, 47, 48, 57, 58, 6, 46, 46, - /* 160 */ 57, 58, 50, 50, 57, 58, 57, 58, 7, 45, - /* 170 */ 9, 63, 64, 49, 46, 50, 47, 48, 50, 10, - /* 180 */ 63, 64, 63, 64, 46, 10, 63, 64, 50, 63, - /* 190 */ 64, 46, 65, 66, 10, 50, 46, 63, 64, 46, - /* 200 */ 50, 55, 56, 50, 65, 66, 47, 48, 65, 66, - /* 210 */ 69, 70, 65, 66, 65, 66, 46, 65, 66, 46, - /* 220 */ 50, 57, 58, 50, 69, 70, 47, 48, 46, 69, - /* 230 */ 70, 7, 50, 9, 69, 70, 69, 70, 46, 73, - /* 240 */ 74, 50, 50, 69, 70, 46, 45, 57, 58, 50, - /* 250 */ 49, 55, 56, 47, 48, 46, 73, 74, 9, 50, - /* 260 */ 73, 74, 73, 74, 46, 50, 73, 74, 50, 7, - /* 270 */ 7, 9, 9, 24, 7, 7, 9, 9, 7, 7, - /* 280 */ 9, 9, 7, 7, 9, 9, 7, 7, 9, 9, - /* 290 */ 50, 50, 50, 45, 10, 50, 53, 53, 6, 6, - /* 300 */ 50, 54, 49, 45, 10, 54, 60, 53, 6, 45, - /* 310 */ 45, 59, 6, 10, 45, 60, 55, 10, 62, 49, - /* 320 */ 61, 6, 49, 49, 67, 83, 49, 67, 62, 10, - /* 330 */ 45, 6, 54, 10, 53, 6, 54, 49, 10, 6, - /* 340 */ 10, 6, 56, 1, 10, 4, 3, 57, 4, 11, - /* 350 */ 59, 68, 6, 8, 45, 68, 58, 8, 61, 6, - /* 360 */ 71, 4, 10, 4, 6, 55, 71, 11, 72, 57, - /* 370 */ 49, 72, 7, 73, 8, 8, 56, 76, 6, 6, - /* 380 */ 76, 76, 58, 6, 76, 4, 6, 76, 4, 76, - /* 390 */ 8, 8, 4, 6, 80, 10, 80, 80, 80, 7, - /* 400 */ 11, 4, 80, 8, 8, 74, 6, 80, 4, 8, - /* 410 */ 8, 4, 6, 10, 4, 7, 11, 8, 3, 8, - /* 420 */ 4, 2, 4, 6, 10, 13, 4, 14, 3, 8, - /* 430 */ 83, 8, 8, 13, 8, 8, 6, 4, 83, 11, - /* 440 */ 8, 6, 6, 6, 6, 11, 6, 4, 83, 4, - /* 450 */ 6, 83, 11, 11, 7, 4, 8, 11, 8, 6, - /* 460 */ 4, 4, 8, 8, 6, 4, 83, 7, 4, 10, - /* 470 */ 8, 8, 6, 8, 4, 83, 8, 83, 6, 10, - /* 480 */ 7, 4, 11, 8, 10, 4, 6, 8, 83, 83, - /* 490 */ 8, 8, 6, 6, 6, 11, 11, 83, 83, 6, - /* 500 */ 6, 6, 11, 11, 4, 4, 83, 11, 6, 83, - /* 510 */ 7, 83, 8, 8, 6, 4, 10, 4, 83, 10, - /* 520 */ 4, 24, 8, 8, 6, 4, 4, 83, 11, 83, - /* 530 */ 7, 11, 8, 8, 8, 6, 4, 4, 4, 8, - /* 540 */ 83, 6, 83, 7, 4, 8, 8, 8, 6, 83, - /* 550 */ 83, 4, 8, 83, 83, 83, 11, 11, 10, 6, - /* 560 */ 11, 83, 4, 11, 7, 4, 83, 8, 8, 6, - /* 570 */ 4, 7, 83, 8, 4, 83, 8, 6, 4, 10, - /* 580 */ 8, 4, 83, 8, 6, 4, 83, 8, 8, 83, - /* 590 */ 83, 6, 10, 7, 6, 11, 4, 8, 4, 83, - /* 600 */ 83, 8, 83, 8, 8, 83, 4, 83, 11, 11, - /* 610 */ 11, 6, 83, 6, 10, 4, 7, 83, 8, 4, - /* 620 */ 8, 4, 8, 4, 8, 83, 83, 4, 6, 83, - /* 630 */ 10, 7, 11, 8, 83, 6, 8, 4, 4, 8, - /* 640 */ 8, 83, 83, 4, 6, 83, 10, 7, 11, 8, - /* 650 */ 83, 6, 8, 4, 83, 8, 8, 4, 83, 83, - /* 660 */ 3, 11, 83, 11, 10, 7, 83, 11, 6, 4, - /* 670 */ 83, 10, 8, 4, 8, 83, 6, 4, 10, 83, - /* 680 */ 83, 4, 8, 8, 83, 6, 4, 83, 83, 11, - /* 690 */ 7, 83, 8, 6, 8, 4, 24, 83, 8, 4, - /* 700 */ 83, 8, 83, 6, 10, 6, 83, 11, 8, 7, - /* 710 */ 4, 83, 8, 8, 6, 4, 83, 8, 4, 4, - /* 720 */ 83, 11, 6, 10, 83, 7, 6, 8, 83, 7, - /* 730 */ 4, 8, 83, 6, 4, 7, 83, 83, 83, 8, - /* 740 */ 4, 83, 83, 11, 83, 11, 11, 6, 24, 83, - /* 750 */ 10, 83, 8, 4, 8, 4, 8, 83, 11, 6, - /* 760 */ 4, 83, 7, 6, 4, 83, 7, 4, 83, 8, - /* 770 */ 6, 83, 7, 83, 3, 8, 83, 4, 83, 11, - /* 780 */ 83, 11, 6, 8, 4, 7, 83, 83, 6, 4, - /* 790 */ 7, 83, 6, 83, 4, 4, 7, 83, 83, 6, - /* 800 */ 4, 4, 83, 8, 83, 83, 4, 6, 83, 83, - /* 810 */ 83, 11, 8, 83, 83, 8, 4, 83, 83, 11, - /* 820 */ 4, 8, 83, 6, 83, 83, 83, 83, 8, 8, -}; -#define YY_SHIFT_USE_DFLT (-1) -#define YY_SHIFT_MAX 531 -static const short yy_shift_ofst[] = { - /* 0 */ -1, 26, 52, 60, 60, 79, 79, 67, 90, 95, - /* 10 */ 90, 118, 90, 95, 90, 90, 95, 90, 111, 90, - /* 20 */ 95, 111, 118, 111, 95, 111, 111, 95, 111, 120, - /* 30 */ 122, 90, 95, 120, 118, 120, 95, 120, 120, 95, - /* 40 */ 120, 133, 90, 95, 133, 118, 133, 95, 133, 133, - /* 50 */ 95, 133, 169, 111, 95, 169, 118, 169, 95, 169, - /* 60 */ 169, 95, 169, 175, 120, 95, 175, 118, 175, 95, - /* 70 */ 175, 175, 95, 175, 95, 184, 90, 111, 120, 118, - /* 80 */ 184, 95, 184, 184, 95, 184, 95, 95, 95, 95, - /* 90 */ 95, 95, 80, 95, 95, 151, 80, 151, 284, 95, - /* 100 */ 95, 292, 105, 292, 293, 294, 80, 80, 80, 80, - /* 110 */ 151, 293, 302, 303, 105, 105, 105, 105, 292, 302, - /* 120 */ 151, 292, 306, 307, 80, 306, 315, 319, 105, 315, - /* 130 */ 325, 323, 294, 325, 329, 328, 303, 329, 330, 333, - /* 140 */ 333, 333, 333, 80, 307, 323, 333, 333, 335, 335, - /* 150 */ 335, 335, 105, 319, 328, 335, 335, 334, 12, 48, - /* 160 */ 49, 56, 57, 64, 65, 58, 70, 73, 75, 40, - /* 170 */ 161, 224, 262, 263, 267, 268, 271, 272, 275, 276, - /* 180 */ 279, 280, 35, 249, 342, 343, 341, 346, 344, 345, - /* 190 */ 349, 353, 338, 357, 352, 356, 358, 365, 359, 366, - /* 200 */ 367, 372, 373, 377, 381, 380, 384, 382, 383, 388, - /* 210 */ 385, 389, 387, 392, 397, 395, 396, 400, 404, 401, - /* 220 */ 402, 407, 403, 405, 406, 408, 410, 409, 411, 415, - /* 230 */ 416, 412, 417, 413, 418, 419, 420, 422, 421, 423, - /* 240 */ 424, 426, 430, 433, 427, 432, 435, 436, 428, 434, - /* 250 */ 437, 438, 440, 441, 443, 414, 442, 444, 447, 445, - /* 260 */ 448, 450, 451, 453, 456, 454, 455, 457, 459, 446, - /* 270 */ 458, 460, 461, 462, 463, 466, 464, 465, 468, 470, - /* 280 */ 469, 471, 472, 473, 477, 475, 479, 480, 481, 482, - /* 290 */ 483, 484, 486, 487, 488, 491, 492, 493, 494, 495, - /* 300 */ 496, 500, 474, 485, 502, 503, 501, 504, 505, 511, - /* 310 */ 508, 513, 514, 515, 516, 506, 517, 518, 523, 521, - /* 320 */ 524, 525, 529, 533, 526, 531, 534, 509, 520, 535, - /* 330 */ 536, 532, 537, 538, 542, 540, 539, 544, 545, 546, - /* 340 */ 547, 548, 549, 553, 557, 558, 559, 560, 561, 563, - /* 350 */ 566, 565, 568, 570, 569, 552, 571, 564, 574, 572, - /* 360 */ 575, 578, 577, 579, 580, 581, 582, 584, 585, 586, - /* 370 */ 592, 589, 593, 588, 594, 595, 596, 597, 598, 602, - /* 380 */ 604, 599, 605, 609, 611, 610, 612, 615, 607, 617, - /* 390 */ 614, 616, 619, 620, 621, 622, 624, 623, 625, 628, - /* 400 */ 629, 633, 631, 632, 634, 636, 637, 638, 640, 639, - /* 410 */ 641, 644, 645, 649, 647, 648, 650, 652, 653, 654, - /* 420 */ 656, 662, 658, 665, 664, 666, 669, 670, 673, 674, - /* 430 */ 675, 677, 668, 678, 679, 683, 682, 684, 686, 687, - /* 440 */ 691, 690, 693, 695, 694, 696, 699, 702, 706, 700, - /* 450 */ 705, 708, 711, 709, 710, 425, 714, 716, 718, 715, - /* 460 */ 719, 720, 722, 726, 723, 727, 728, 730, 731, 732, - /* 470 */ 734, 736, 740, 735, 741, 497, 522, 744, 746, 747, - /* 480 */ 657, 751, 753, 755, 756, 748, 757, 759, 760, 761, - /* 490 */ 764, 765, 763, 767, 768, 770, 771, 773, 776, 778, - /* 500 */ 780, 782, 783, 785, 786, 789, 790, 791, 793, 796, - /* 510 */ 775, 795, 797, 661, 800, 801, 672, 802, 804, 807, - /* 520 */ 697, 812, 704, 813, 816, 713, 808, 817, 724, 749, - /* 530 */ 820, 821, -}; -#define YY_REDUCE_USE_DFLT (-58) -#define YY_REDUCE_MAX 157 -static const short yy_reduce_ofst[] = { - /* 0 */ 59, -28, -57, -39, -35, -34, -29, 44, -26, -9, - /* 10 */ 53, 61, 54, 51, 62, 68, 66, 69, 50, 74, - /* 20 */ 76, 72, 77, 78, 85, 81, 83, 94, 86, 89, - /* 30 */ -32, 100, 102, 93, 106, 98, 112, 103, 107, 113, - /* 40 */ 109, 108, 124, 128, 117, 129, 119, 138, 123, 126, - /* 50 */ 145, 134, 127, 146, 150, 139, 159, 143, 153, 147, - /* 60 */ 149, 170, 152, 141, 164, 173, 155, 179, 160, 182, - /* 70 */ 165, 167, 192, 174, 199, 166, 201, 196, 190, 206, - /* 80 */ 183, 209, 187, 189, 218, 193, 29, 37, 125, 191, - /* 90 */ 215, 240, 84, 241, 242, 243, 248, 244, 55, 245, - /* 100 */ 250, 247, 253, 251, 246, 252, 258, 264, 265, 269, - /* 110 */ 254, 255, 256, 259, 270, 273, 274, 277, 278, 266, - /* 120 */ 281, 282, 257, 261, 285, 260, 283, 286, 288, 287, - /* 130 */ 289, 290, 291, 295, 296, 298, 297, 299, 300, 301, - /* 140 */ 304, 305, 308, 309, 310, 312, 311, 313, 314, 316, - /* 150 */ 317, 318, 321, 320, 324, 322, 327, 331, -}; -static const YYACTIONTYPE yy_default[] = { - /* 0 */ 680, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 10 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 20 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 30 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 40 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 50 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 60 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 70 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 80 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 90 */ 838, 838, 838, 838, 838, 718, 838, 718, 838, 838, - /* 100 */ 838, 720, 838, 720, 751, 838, 838, 838, 838, 838, - /* 110 */ 718, 751, 754, 838, 838, 838, 838, 838, 720, 754, - /* 120 */ 718, 720, 783, 838, 838, 783, 786, 838, 838, 786, - /* 130 */ 801, 838, 838, 801, 804, 838, 838, 804, 838, 821, - /* 140 */ 821, 821, 821, 838, 838, 838, 821, 821, 828, 828, - /* 150 */ 828, 828, 838, 838, 838, 828, 828, 838, 838, 838, - /* 160 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 170 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 180 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 190 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 200 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 210 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 220 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 230 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 240 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 250 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 260 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 270 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 280 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 290 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 300 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 310 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 320 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 330 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 340 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 350 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 360 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 370 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 380 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 390 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 400 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 410 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 420 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 430 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 440 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 450 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 460 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 470 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 480 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 490 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 500 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 510 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 520 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, - /* 530 */ 838, 838, 681, 682, 683, 684, 685, 686, 687, 688, - /* 540 */ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, - /* 550 */ 704, 713, 714, 715, 699, 705, 710, 700, 706, 702, - /* 560 */ 708, 701, 707, 703, 709, 711, 712, 716, 717, 722, - /* 570 */ 728, 719, 734, 721, 735, 723, 729, 724, 730, 726, - /* 580 */ 732, 725, 731, 727, 733, 736, 742, 748, 750, 752, - /* 590 */ 749, 753, 755, 737, 743, 738, 744, 740, 746, 739, - /* 600 */ 745, 741, 747, 756, 762, 768, 769, 757, 763, 758, - /* 610 */ 764, 760, 766, 759, 765, 761, 767, 770, 776, 782, - /* 620 */ 784, 785, 787, 771, 777, 772, 778, 774, 780, 773, - /* 630 */ 779, 775, 781, 788, 794, 800, 802, 803, 805, 789, - /* 640 */ 795, 790, 796, 792, 798, 791, 797, 793, 799, 806, - /* 650 */ 818, 822, 823, 824, 832, 834, 836, 819, 820, 807, - /* 660 */ 813, 825, 829, 830, 831, 833, 835, 837, 826, 827, - /* 670 */ 808, 814, 810, 816, 809, 815, 811, 817, 812, -}; -#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0])) - -/* The next table maps tokens into fallback tokens. If a construct -** like the following: -** -** %fallback ID X Y Z. -** -** appears in the grammar, then ID becomes a fallback token for X, Y, -** and Z. Whenever one of the tokens X, Y, or Z is input to the parser -** but it does not parse, the type of the token is changed to ID and -** the parse is retried before an error is thrown. -*/ -#ifdef YYFALLBACK -static const YYCODETYPE yyFallback[] = { -}; -#endif /* YYFALLBACK */ - -/* The following structure represents a single element of the -** parser's stack. Information stored includes: -** -** + The state number for the parser at this level of the stack. -** -** + The value of the token stored at this level of the stack. -** (In other words, the "major" token.) -** -** + The semantic value stored at this level of the stack. This is -** the information used by the action routines in the grammar. -** It is sometimes called the "minor" token. -*/ -struct yyStackEntry { - YYACTIONTYPE stateno; /* The state-number */ - YYCODETYPE major; /* The major token value. This is the code - ** number for the token at this stack level */ - YYMINORTYPE minor; /* The user-supplied minor token value. This - ** is the value of the token */ -}; -typedef struct yyStackEntry yyStackEntry; - -/* The state of the parser is completely contained in an instance of -** the following structure */ -struct yyParser { - int yyidx; /* Index of top element in stack */ -#ifdef YYTRACKMAXSTACKDEPTH - int yyidxMax; /* Maximum value of yyidx */ -#endif - int yyerrcnt; /* Shifts left before out of the error */ - ParseARG_SDECL /* A place to hold %extra_argument */ -#if YYSTACKDEPTH<=0 - int yystksz; /* Current side of the stack */ - yyStackEntry *yystack; /* The parser's stack */ -#else - yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ -#endif -}; -typedef struct yyParser yyParser; - -#ifndef NDEBUG -#include -static FILE *yyTraceFILE = 0; -static char *yyTracePrompt = 0; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* -** Turn parser tracing on by giving a stream to which to write the trace -** and a prompt to preface each trace message. Tracing is turned off -** by making either argument NULL -** -** Inputs: -**
    -**
  • A FILE* to which trace output should be written. -** If NULL, then tracing is turned off. -**
  • A prefix string written at the beginning of every -** line of trace output. If NULL, then tracing is -** turned off. -**
-** -** Outputs: -** None. -*/ -void ParseTrace(FILE *TraceFILE, char *zTracePrompt){ - yyTraceFILE = TraceFILE; - yyTracePrompt = zTracePrompt; - if( yyTraceFILE==0 ) yyTracePrompt = 0; - else if( yyTracePrompt==0 ) yyTraceFILE = 0; -} -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing shifts, the names of all terminals and nonterminals -** are required. The following table supplies these names */ -static const char *const yyTokenName[] = { - "$", "GEOJSON_NEWLINE", "GEOJSON_OPEN_BRACE", "GEOJSON_TYPE", - "GEOJSON_COLON", "GEOJSON_POINT", "GEOJSON_COMMA", "GEOJSON_COORDS", - "GEOJSON_CLOSE_BRACE", "GEOJSON_BBOX", "GEOJSON_OPEN_BRACKET", "GEOJSON_CLOSE_BRACKET", - "GEOJSON_CRS", "GEOJSON_NAME", "GEOJSON_PROPS", "GEOJSON_NUM", - "GEOJSON_SHORT_SRID", "GEOJSON_LONG_SRID", "GEOJSON_LINESTRING", "GEOJSON_POLYGON", - "GEOJSON_MULTIPOINT", "GEOJSON_MULTILINESTRING", "GEOJSON_MULTIPOLYGON", "GEOJSON_GEOMETRYCOLLECTION", - "GEOJSON_GEOMS", "error", "main", "in", - "state", "program", "geo_text", "point", - "pointz", "linestring", "linestringz", "polygon", - "polygonz", "multipoint", "multipointz", "multilinestring", - "multilinestringz", "multipolygon", "multipolygonz", "geocoll", - "geocollz", "point_coordxy", "bbox", "short_crs", - "long_crs", "point_coordxyz", "coord", "short_srid", - "long_srid", "extra_pointsxy", "extra_pointsxyz", "linestring_text", - "linestring_textz", "polygon_text", "polygon_textz", "ring", - "extra_rings", "ringz", "extra_ringsz", "multipoint_text", - "multipoint_textz", "multilinestring_text", "multilinestring_textz", "multilinestring_text2", - "multilinestring_textz2", "multipolygon_text", "multipolygon_textz", "multipolygon_text2", - "multipolygon_textz2", "geocoll_text", "geocoll_textz", "coll_point", - "geocoll_text2", "coll_linestring", "coll_polygon", "coll_pointz", - "geocoll_textz2", "coll_linestringz", "coll_polygonz", -}; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing reduce actions, the names of all rules are required. -*/ -static const char *const yyRuleName[] = { - /* 0 */ "main ::= in", - /* 1 */ "in ::=", - /* 2 */ "in ::= in state GEOJSON_NEWLINE", - /* 3 */ "state ::= program", - /* 4 */ "program ::= geo_text", - /* 5 */ "geo_text ::= point", - /* 6 */ "geo_text ::= pointz", - /* 7 */ "geo_text ::= linestring", - /* 8 */ "geo_text ::= linestringz", - /* 9 */ "geo_text ::= polygon", - /* 10 */ "geo_text ::= polygonz", - /* 11 */ "geo_text ::= multipoint", - /* 12 */ "geo_text ::= multipointz", - /* 13 */ "geo_text ::= multilinestring", - /* 14 */ "geo_text ::= multilinestringz", - /* 15 */ "geo_text ::= multipolygon", - /* 16 */ "geo_text ::= multipolygonz", - /* 17 */ "geo_text ::= geocoll", - /* 18 */ "geo_text ::= geocollz", - /* 19 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", - /* 20 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", - /* 21 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", - /* 22 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", - /* 23 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", - /* 24 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", - /* 25 */ "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", - /* 26 */ "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", - /* 27 */ "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", - /* 28 */ "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", - /* 29 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", - /* 30 */ "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", - /* 31 */ "bbox ::= coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_COMMA coord", - /* 32 */ "short_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON short_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE", - /* 33 */ "long_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON long_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE", - /* 34 */ "point_coordxy ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET", - /* 35 */ "point_coordxyz ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET", - /* 36 */ "coord ::= GEOJSON_NUM", - /* 37 */ "short_srid ::= GEOJSON_SHORT_SRID", - /* 38 */ "long_srid ::= GEOJSON_LONG_SRID", - /* 39 */ "extra_pointsxy ::=", - /* 40 */ "extra_pointsxy ::= GEOJSON_COMMA point_coordxy extra_pointsxy", - /* 41 */ "extra_pointsxyz ::=", - /* 42 */ "extra_pointsxyz ::= GEOJSON_COMMA point_coordxyz extra_pointsxyz", - /* 43 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", - /* 44 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", - /* 45 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", - /* 46 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", - /* 47 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", - /* 48 */ "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", - /* 49 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", - /* 50 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", - /* 51 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", - /* 52 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", - /* 53 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", - /* 54 */ "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", - /* 55 */ "linestring_text ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET", - /* 56 */ "linestring_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET", - /* 57 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", - /* 58 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", - /* 59 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", - /* 60 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", - /* 61 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", - /* 62 */ "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", - /* 63 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", - /* 64 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", - /* 65 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", - /* 66 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", - /* 67 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", - /* 68 */ "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", - /* 69 */ "polygon_text ::= GEOJSON_OPEN_BRACKET ring extra_rings GEOJSON_CLOSE_BRACKET", - /* 70 */ "polygon_textz ::= GEOJSON_OPEN_BRACKET ringz extra_ringsz GEOJSON_CLOSE_BRACKET", - /* 71 */ "ring ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET", - /* 72 */ "extra_rings ::=", - /* 73 */ "extra_rings ::= GEOJSON_COMMA ring extra_rings", - /* 74 */ "ringz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET", - /* 75 */ "extra_ringsz ::=", - /* 76 */ "extra_ringsz ::= GEOJSON_COMMA ringz extra_ringsz", - /* 77 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", - /* 78 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", - /* 79 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", - /* 80 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", - /* 81 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", - /* 82 */ "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", - /* 83 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", - /* 84 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", - /* 85 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", - /* 86 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", - /* 87 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", - /* 88 */ "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", - /* 89 */ "multipoint_text ::= GEOJSON_OPEN_BRACKET point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET", - /* 90 */ "multipoint_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET", - /* 91 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", - /* 92 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", - /* 93 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", - /* 94 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", - /* 95 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", - /* 96 */ "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", - /* 97 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", - /* 98 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", - /* 99 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", - /* 100 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", - /* 101 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", - /* 102 */ "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", - /* 103 */ "multilinestring_text ::= GEOJSON_OPEN_BRACKET linestring_text multilinestring_text2 GEOJSON_CLOSE_BRACKET", - /* 104 */ "multilinestring_text2 ::=", - /* 105 */ "multilinestring_text2 ::= GEOJSON_COMMA linestring_text multilinestring_text2", - /* 106 */ "multilinestring_textz ::= GEOJSON_OPEN_BRACKET linestring_textz multilinestring_textz2 GEOJSON_CLOSE_BRACKET", - /* 107 */ "multilinestring_textz2 ::=", - /* 108 */ "multilinestring_textz2 ::= GEOJSON_COMMA linestring_textz multilinestring_textz2", - /* 109 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", - /* 110 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", - /* 111 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", - /* 112 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", - /* 113 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", - /* 114 */ "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", - /* 115 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", - /* 116 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", - /* 117 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", - /* 118 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", - /* 119 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", - /* 120 */ "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", - /* 121 */ "multipolygon_text ::= GEOJSON_OPEN_BRACKET polygon_text multipolygon_text2 GEOJSON_CLOSE_BRACKET", - /* 122 */ "multipolygon_text2 ::=", - /* 123 */ "multipolygon_text2 ::= GEOJSON_COMMA polygon_text multipolygon_text2", - /* 124 */ "multipolygon_textz ::= GEOJSON_OPEN_BRACKET polygon_textz multipolygon_textz2 GEOJSON_CLOSE_BRACKET", - /* 125 */ "multipolygon_textz2 ::=", - /* 126 */ "multipolygon_textz2 ::= GEOJSON_COMMA polygon_textz multipolygon_textz2", - /* 127 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", - /* 128 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", - /* 129 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", - /* 130 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", - /* 131 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", - /* 132 */ "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", - /* 133 */ "geocollz ::= GEOJSON_GEOMETRYCOLLECTION geocoll_textz", - /* 134 */ "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", - /* 135 */ "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", - /* 136 */ "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", - /* 137 */ "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", - /* 138 */ "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", - /* 139 */ "geocoll_text ::= GEOJSON_OPEN_BRACKET coll_point geocoll_text2 GEOJSON_CLOSE_BRACKET", - /* 140 */ "geocoll_text ::= GEOJSON_OPEN_BRACKET coll_linestring geocoll_text2 GEOJSON_CLOSE_BRACKET", - /* 141 */ "geocoll_text ::= GEOJSON_OPEN_BRACKET coll_polygon geocoll_text2 GEOJSON_CLOSE_BRACKET", - /* 142 */ "geocoll_text2 ::=", - /* 143 */ "geocoll_text2 ::= GEOJSON_COMMA coll_point geocoll_text2", - /* 144 */ "geocoll_text2 ::= GEOJSON_COMMA coll_linestring geocoll_text2", - /* 145 */ "geocoll_text2 ::= GEOJSON_COMMA coll_polygon geocoll_text2", - /* 146 */ "geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_pointz geocoll_textz2 GEOJSON_CLOSE_BRACKET", - /* 147 */ "geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_linestringz geocoll_textz2 GEOJSON_CLOSE_BRACKET", - /* 148 */ "geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_polygonz geocoll_textz2 GEOJSON_CLOSE_BRACKET", - /* 149 */ "geocoll_textz2 ::=", - /* 150 */ "geocoll_textz2 ::= GEOJSON_COMMA coll_pointz geocoll_textz2", - /* 151 */ "geocoll_textz2 ::= GEOJSON_COMMA coll_linestringz geocoll_textz2", - /* 152 */ "geocoll_textz2 ::= GEOJSON_COMMA coll_polygonz geocoll_textz2", - /* 153 */ "coll_point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", - /* 154 */ "coll_pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", - /* 155 */ "coll_linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", - /* 156 */ "coll_linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", - /* 157 */ "coll_polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", - /* 158 */ "coll_polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", -}; -#endif /* NDEBUG */ - - -#if YYSTACKDEPTH<=0 -/* -** Try to increase the size of the parser stack. -*/ -static void yyGrowStack(yyParser *p){ - int newSize; - yyStackEntry *pNew; - - newSize = p->yystksz*2 + 100; - pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); - if( pNew ){ - p->yystack = pNew; - p->yystksz = newSize; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack grows to %d entries!\n", - yyTracePrompt, p->yystksz); - } -#endif - } -} -#endif - -/* -** This function allocates a new parser. -** The only argument is a pointer to a function which works like -** malloc. -** -** Inputs: -** A pointer to the function used to allocate memory. -** -** Outputs: -** A pointer to a parser. This pointer is used in subsequent calls -** to Parse and ParseFree. -*/ -void *ParseAlloc(void *(*mallocProc)(size_t)){ - yyParser *pParser; - pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) ); - if( pParser ){ - pParser->yyidx = -1; -#ifdef YYTRACKMAXSTACKDEPTH - pParser->yyidxMax = 0; -#endif -#if YYSTACKDEPTH<=0 - pParser->yystack = NULL; - pParser->yystksz = 0; - yyGrowStack(pParser); -#endif - } - return pParser; -} - -/* The following function deletes the value associated with a -** symbol. The symbol can be either a terminal or nonterminal. -** "yymajor" is the symbol code, and "yypminor" is a pointer to -** the value. -*/ -static void yy_destructor( - yyParser *yypParser, /* The parser */ - YYCODETYPE yymajor, /* Type code for object to destroy */ - YYMINORTYPE *yypminor /* The object to be destroyed */ -){ - switch( yymajor ){ - /* Here is inserted the actions which take place when a - ** terminal or non-terminal is destroyed. This can happen - ** when the symbol is popped from the stack during a - ** reduce or during error processing or when a parser is - ** being destroyed before it is finished parsing. - ** - ** Note: during a reduce, the only symbols destroyed are those - ** which appear on the RHS of the rule, but which are not used - ** inside the C code. - */ - default: break; /* If no destructor action specified: do nothing */ - } -} - -/* -** Pop the parser's stack once. -** -** If there is a destructor routine associated with the token which -** is popped from the stack, then call it. -** -** Return the major token number for the symbol popped. -*/ -static int yy_pop_parser_stack(yyParser *pParser){ - YYCODETYPE yymajor; - yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; - - if( pParser->yyidx<0 ) return 0; -#ifndef NDEBUG - if( yyTraceFILE && pParser->yyidx>=0 ){ - fprintf(yyTraceFILE,"%sPopping %s\n", - yyTracePrompt, - yyTokenName[yytos->major]); - } -#endif - yymajor = yytos->major; - yy_destructor(pParser, yymajor, &yytos->minor); - pParser->yyidx--; - return yymajor; -} - -/* -** Deallocate and destroy a parser. Destructors are all called for -** all stack elements before shutting the parser down. -** -** Inputs: -**
    -**
  • A pointer to the parser. This should be a pointer -** obtained from ParseAlloc. -**
  • A pointer to a function used to reclaim memory obtained -** from malloc. -**
-*/ -void ParseFree( - void *p, /* The parser to be deleted */ - void (*freeProc)(void*) /* Function used to reclaim memory */ -){ - yyParser *pParser = (yyParser*)p; - if( pParser==0 ) return; - while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser); -#if YYSTACKDEPTH<=0 - free(pParser->yystack); -#endif - (*freeProc)((void*)pParser); -} - -/* -** Return the peak depth of the stack for a parser. -*/ -#ifdef YYTRACKMAXSTACKDEPTH -int ParseStackPeak(void *p){ - yyParser *pParser = (yyParser*)p; - return pParser->yyidxMax; -} -#endif - -/* -** Find the appropriate action for a parser given the terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_shift_action( - yyParser *pParser, /* The parser */ - YYCODETYPE iLookAhead /* The look-ahead token */ -){ - int i; - int stateno = pParser->yystack[pParser->yyidx].stateno; - - if( stateno>YY_SHIFT_MAX || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){ - return yy_default[stateno]; - } - assert( iLookAhead!=YYNOCODE ); - i += iLookAhead; - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ - if( iLookAhead>0 ){ -#ifdef YYFALLBACK - YYCODETYPE iFallback; /* Fallback token */ - if( iLookAhead %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); - } -#endif - return yy_find_shift_action(pParser, iFallback); - } -#endif -#ifdef YYWILDCARD - { - int j = i - iLookAhead + YYWILDCARD; - if( j>=0 && j %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); - } -#endif /* NDEBUG */ - return yy_action[j]; - } - } -#endif /* YYWILDCARD */ - } - return yy_default[stateno]; - }else{ - return yy_action[i]; - } -} - -/* -** Find the appropriate action for a parser given the non-terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_reduce_action( - int stateno, /* Current state number */ - YYCODETYPE iLookAhead /* The look-ahead token */ -){ - int i; -#ifdef YYERRORSYMBOL - if( stateno>YY_REDUCE_MAX ){ - return yy_default[stateno]; - } -#else - assert( stateno<=YY_REDUCE_MAX ); -#endif - i = yy_reduce_ofst[stateno]; - assert( i!=YY_REDUCE_USE_DFLT ); - assert( iLookAhead!=YYNOCODE ); - i += iLookAhead; -#ifdef YYERRORSYMBOL - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ - return yy_default[stateno]; - } -#else - assert( i>=0 && iyyidx--; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will execute if the parser - ** stack every overflows */ - - spatialite_e( "Giving up. Parser stack overflow\n"); - ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ -} - -/* -** Perform a shift action. -*/ -static void yy_shift( - yyParser *yypParser, /* The parser to be shifted */ - int yyNewState, /* The new state to shift in */ - int yyMajor, /* The major token to shift in */ - YYMINORTYPE *yypMinor /* Pointer to the minor token to shift in */ -){ - yyStackEntry *yytos; - yypParser->yyidx++; -#ifdef YYTRACKMAXSTACKDEPTH - if( yypParser->yyidx>yypParser->yyidxMax ){ - yypParser->yyidxMax = yypParser->yyidx; - } -#endif -#if YYSTACKDEPTH>0 - if( yypParser->yyidx>=YYSTACKDEPTH ){ - yyStackOverflow(yypParser, yypMinor); - return; - } -#else - if( yypParser->yyidx>=yypParser->yystksz ){ - yyGrowStack(yypParser); - if( yypParser->yyidx>=yypParser->yystksz ){ - yyStackOverflow(yypParser, yypMinor); - return; - } - } -#endif - yytos = &yypParser->yystack[yypParser->yyidx]; - yytos->stateno = (YYACTIONTYPE)yyNewState; - yytos->major = (YYCODETYPE)yyMajor; - yytos->minor = *yypMinor; -#ifndef NDEBUG - if( yyTraceFILE && yypParser->yyidx>0 ){ - int i; - fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState); - fprintf(yyTraceFILE,"%sStack:",yyTracePrompt); - for(i=1; i<=yypParser->yyidx; i++) - fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]); - fprintf(yyTraceFILE,"\n"); - } -#endif -} - -/* The following table contains information about every rule that -** is used during the reduce. -*/ -static const struct { - YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ - unsigned char nrhs; /* Number of right-hand side symbols in the rule */ -} yyRuleInfo[] = { - { 26, 1 }, - { 27, 0 }, - { 27, 3 }, - { 28, 1 }, - { 29, 1 }, - { 30, 1 }, - { 30, 1 }, - { 30, 1 }, - { 30, 1 }, - { 30, 1 }, - { 30, 1 }, - { 30, 1 }, - { 30, 1 }, - { 30, 1 }, - { 30, 1 }, - { 30, 1 }, - { 30, 1 }, - { 30, 1 }, - { 30, 1 }, - { 31, 9 }, - { 31, 15 }, - { 31, 13 }, - { 31, 13 }, - { 31, 19 }, - { 31, 19 }, - { 32, 9 }, - { 32, 15 }, - { 32, 13 }, - { 32, 13 }, - { 31, 19 }, - { 31, 19 }, - { 46, 7 }, - { 47, 13 }, - { 48, 13 }, - { 45, 5 }, - { 49, 7 }, - { 50, 1 }, - { 51, 1 }, - { 52, 1 }, - { 53, 0 }, - { 53, 3 }, - { 54, 0 }, - { 54, 3 }, - { 33, 9 }, - { 33, 15 }, - { 33, 13 }, - { 33, 13 }, - { 33, 19 }, - { 33, 19 }, - { 34, 9 }, - { 34, 15 }, - { 34, 13 }, - { 34, 13 }, - { 34, 19 }, - { 34, 19 }, - { 55, 6 }, - { 56, 6 }, - { 35, 9 }, - { 35, 15 }, - { 35, 13 }, - { 35, 13 }, - { 35, 19 }, - { 35, 19 }, - { 36, 9 }, - { 36, 15 }, - { 36, 13 }, - { 36, 13 }, - { 36, 19 }, - { 36, 19 }, - { 57, 4 }, - { 58, 4 }, - { 59, 10 }, - { 60, 0 }, - { 60, 3 }, - { 61, 10 }, - { 62, 0 }, - { 62, 3 }, - { 37, 9 }, - { 37, 15 }, - { 37, 13 }, - { 37, 13 }, - { 37, 19 }, - { 37, 19 }, - { 38, 9 }, - { 38, 15 }, - { 38, 13 }, - { 38, 13 }, - { 38, 19 }, - { 38, 19 }, - { 63, 4 }, - { 64, 4 }, - { 39, 9 }, - { 39, 15 }, - { 39, 13 }, - { 39, 13 }, - { 39, 19 }, - { 39, 19 }, - { 40, 9 }, - { 40, 15 }, - { 40, 13 }, - { 40, 13 }, - { 40, 19 }, - { 40, 19 }, - { 65, 4 }, - { 67, 0 }, - { 67, 3 }, - { 66, 4 }, - { 68, 0 }, - { 68, 3 }, - { 41, 9 }, - { 41, 15 }, - { 41, 13 }, - { 41, 13 }, - { 41, 19 }, - { 41, 19 }, - { 42, 9 }, - { 42, 15 }, - { 42, 13 }, - { 42, 13 }, - { 42, 19 }, - { 42, 19 }, - { 69, 4 }, - { 71, 0 }, - { 71, 3 }, - { 70, 4 }, - { 72, 0 }, - { 72, 3 }, - { 43, 9 }, - { 43, 15 }, - { 43, 13 }, - { 43, 13 }, - { 43, 19 }, - { 43, 19 }, - { 44, 2 }, - { 44, 15 }, - { 44, 13 }, - { 44, 13 }, - { 44, 19 }, - { 44, 19 }, - { 73, 4 }, - { 73, 4 }, - { 73, 4 }, - { 76, 0 }, - { 76, 3 }, - { 76, 3 }, - { 76, 3 }, - { 74, 4 }, - { 74, 4 }, - { 74, 4 }, - { 80, 0 }, - { 80, 3 }, - { 80, 3 }, - { 80, 3 }, - { 75, 9 }, - { 79, 9 }, - { 77, 9 }, - { 81, 9 }, - { 78, 9 }, - { 82, 9 }, -}; - -static void yy_accept(yyParser*); /* Forward Declaration */ - -/* -** Perform a reduce action and the shift that must immediately -** follow the reduce. -*/ -static void yy_reduce( - yyParser *yypParser, /* The parser */ - int yyruleno /* Number of the rule by which to reduce */ -){ - int yygoto; /* The next state */ - int yyact; /* The next action */ - YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ - yyStackEntry *yymsp; /* The top of the parser's stack */ - int yysize; /* Amount to pop the stack */ - ParseARG_FETCH; - yymsp = &yypParser->yystack[yypParser->yyidx]; -#ifndef NDEBUG - if( yyTraceFILE && yyruleno>=0 - && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ - fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt, - yyRuleName[yyruleno]); - } -#endif /* NDEBUG */ - - /* Silence complaints from purify about yygotominor being uninitialized - ** in some cases when it is copied into the stack after the following - ** switch. yygotominor is uninitialized when a rule reduces that does - ** not set the value of its left-hand side nonterminal. Leaving the - ** value of the nonterminal uninitialized is utterly harmless as long - ** as the value is never used. So really the only thing this code - ** accomplishes is to quieten purify. - ** - ** 2007-01-16: The wireshark project (www.wireshark.org) reports that - ** without this code, their parser segfaults. I'm not sure what there - ** parser is doing to make this happen. This is the second bug report - ** from wireshark this week. Clearly they are stressing Lemon in ways - ** that it has not been previously stressed... (SQLite ticket #2172) - */ - /*memset(&yygotominor, 0, sizeof(yygotominor));*/ - yygotominor = yyzerominor; - - - switch( yyruleno ){ - /* Beginning here are the reduction cases. A typical example - ** follows: - ** case 0: - ** #line - ** { ... } // User supplied code - ** #line - ** break; - */ - case 5: /* geo_text ::= point */ - case 6: /* geo_text ::= pointz */ yytestcase(yyruleno==6); - case 7: /* geo_text ::= linestring */ yytestcase(yyruleno==7); - case 8: /* geo_text ::= linestringz */ yytestcase(yyruleno==8); - case 9: /* geo_text ::= polygon */ yytestcase(yyruleno==9); - case 10: /* geo_text ::= polygonz */ yytestcase(yyruleno==10); - case 11: /* geo_text ::= multipoint */ yytestcase(yyruleno==11); - case 12: /* geo_text ::= multipointz */ yytestcase(yyruleno==12); - case 13: /* geo_text ::= multilinestring */ yytestcase(yyruleno==13); - case 14: /* geo_text ::= multilinestringz */ yytestcase(yyruleno==14); - case 15: /* geo_text ::= multipolygon */ yytestcase(yyruleno==15); - case 16: /* geo_text ::= multipolygonz */ yytestcase(yyruleno==16); - case 17: /* geo_text ::= geocoll */ yytestcase(yyruleno==17); - case 18: /* geo_text ::= geocollz */ yytestcase(yyruleno==18); -{ p_data->result = yymsp[0].minor.yy0; } - break; - case 19: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ - case 20: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==20); - case 25: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==25); - case 26: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==26); -{ yygotominor.yy0 = geoJSON_buildGeomFromPoint( p_data, (gaiaPointPtr)yymsp[-1].minor.yy0); } - break; - case 21: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ - case 22: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==22); - case 27: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==27); - case 28: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==28); -{ yygotominor.yy0 = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)yymsp[-1].minor.yy0, (int *)yymsp[-5].minor.yy0); } - break; - case 23: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ - case 24: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==24); - case 29: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==29); - case 30: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==30); -{ yygotominor.yy0 = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)yymsp[-1].minor.yy0, (int *)yymsp[-11].minor.yy0); } - break; - case 32: /* short_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON short_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE */ - case 33: /* long_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON long_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==33); -{ yygotominor.yy0 = yymsp[-2].minor.yy0; } - break; - case 34: /* point_coordxy ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET */ -{ yygotominor.yy0 = (void *) geoJSON_point_xy( p_data, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-1].minor.yy0); } - break; - case 35: /* point_coordxyz ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET */ -{ yygotominor.yy0 = (void *) geoJSON_point_xyz( p_data, (double *)yymsp[-5].minor.yy0, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-1].minor.yy0); } - break; - case 36: /* coord ::= GEOJSON_NUM */ - case 37: /* short_srid ::= GEOJSON_SHORT_SRID */ yytestcase(yyruleno==37); - case 38: /* long_srid ::= GEOJSON_LONG_SRID */ yytestcase(yyruleno==38); - case 133: /* geocollz ::= GEOJSON_GEOMETRYCOLLECTION geocoll_textz */ yytestcase(yyruleno==133); -{ yygotominor.yy0 = yymsp[0].minor.yy0; } - break; - case 39: /* extra_pointsxy ::= */ - case 41: /* extra_pointsxyz ::= */ yytestcase(yyruleno==41); - case 72: /* extra_rings ::= */ yytestcase(yyruleno==72); - case 75: /* extra_ringsz ::= */ yytestcase(yyruleno==75); - case 104: /* multilinestring_text2 ::= */ yytestcase(yyruleno==104); - case 107: /* multilinestring_textz2 ::= */ yytestcase(yyruleno==107); - case 122: /* multipolygon_text2 ::= */ yytestcase(yyruleno==122); - case 125: /* multipolygon_textz2 ::= */ yytestcase(yyruleno==125); - case 142: /* geocoll_text2 ::= */ yytestcase(yyruleno==142); - case 149: /* geocoll_textz2 ::= */ yytestcase(yyruleno==149); -{ yygotominor.yy0 = NULL; } - break; - case 40: /* extra_pointsxy ::= GEOJSON_COMMA point_coordxy extra_pointsxy */ - case 42: /* extra_pointsxyz ::= GEOJSON_COMMA point_coordxyz extra_pointsxyz */ yytestcase(yyruleno==42); -{ ((gaiaPointPtr)yymsp[-1].minor.yy0)->Next = (gaiaPointPtr)yymsp[0].minor.yy0; yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 43: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ - case 44: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==44); - case 49: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==49); - case 50: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==50); -{ yygotominor.yy0 = geoJSON_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)yymsp[-1].minor.yy0); } - break; - case 45: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ - case 46: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==46); - case 51: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==51); - case 52: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==52); -{ yygotominor.yy0 = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)yymsp[-1].minor.yy0, (int *)yymsp[-5].minor.yy0); } - break; - case 47: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ - case 48: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==48); - case 53: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==53); - case 54: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==54); -{ yygotominor.yy0 = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)yymsp[-1].minor.yy0, (int *)yymsp[-11].minor.yy0); } - break; - case 55: /* linestring_text ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - yygotominor.yy0 = (void *) geoJSON_linestring_xy( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); - } - break; - case 56: /* linestring_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - yygotominor.yy0 = (void *) geoJSON_linestring_xyz( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); - } - break; - case 57: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ - case 58: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==58); - case 63: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==63); - case 64: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==64); -{ yygotominor.yy0 = geoJSON_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)yymsp[-1].minor.yy0); } - break; - case 59: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ - case 60: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==60); - case 65: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==65); - case 66: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==66); -{ yygotominor.yy0 = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)yymsp[-1].minor.yy0, (int *)yymsp[-5].minor.yy0); } - break; - case 61: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ - case 62: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==62); - case 67: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==67); - case 68: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==68); -{ yygotominor.yy0 = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)yymsp[-1].minor.yy0, (int *)yymsp[-11].minor.yy0); } - break; - case 69: /* polygon_text ::= GEOJSON_OPEN_BRACKET ring extra_rings GEOJSON_CLOSE_BRACKET */ -{ - ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) geoJSON_polygon_xy(p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); - } - break; - case 70: /* polygon_textz ::= GEOJSON_OPEN_BRACKET ringz extra_ringsz GEOJSON_CLOSE_BRACKET */ -{ - ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) geoJSON_polygon_xyz(p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); - } - break; - case 71: /* ring ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; - ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) geoJSON_ring_xy(p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); - } - break; - case 73: /* extra_rings ::= GEOJSON_COMMA ring extra_rings */ - case 76: /* extra_ringsz ::= GEOJSON_COMMA ringz extra_ringsz */ yytestcase(yyruleno==76); -{ - ((gaiaRingPtr)yymsp[-1].minor.yy0)->Next = (gaiaRingPtr)yymsp[0].minor.yy0; - yygotominor.yy0 = yymsp[-1].minor.yy0; - } - break; - case 74: /* ringz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; - ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) geoJSON_ring_xyz(p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); - } - break; - case 77: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ - case 78: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==78); - case 83: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==83); - case 84: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==84); - case 91: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==91); - case 92: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==92); - case 97: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==97); - case 98: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==98); - case 109: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==109); - case 110: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==110); - case 115: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==115); - case 116: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==116); - case 127: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==127); - case 128: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==128); - case 134: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==134); -{ yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 79: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ - case 80: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==80); - case 85: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==85); - case 86: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==86); - case 93: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==93); - case 94: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==94); - case 99: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==99); - case 100: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==100); - case 111: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==111); - case 112: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==112); - case 117: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==117); - case 118: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==118); - case 129: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==129); - case 130: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==130); - case 135: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==135); - case 136: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==136); -{ yygotominor.yy0 = (void *) geoJSON_setSrid((gaiaGeomCollPtr)yymsp[-1].minor.yy0, (int *)yymsp[-5].minor.yy0); } - break; - case 81: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ - case 82: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==82); - case 87: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==87); - case 88: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==88); - case 95: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==95); - case 96: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==96); - case 101: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==101); - case 102: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==102); - case 113: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==113); - case 114: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==114); - case 119: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==119); - case 120: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==120); - case 131: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==131); - case 132: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==132); - case 137: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==137); - case 138: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==138); -{ yygotominor.yy0 = (void *) geoJSON_setSrid((gaiaGeomCollPtr)yymsp[-1].minor.yy0, (int *)yymsp[-11].minor.yy0); } - break; - case 89: /* multipoint_text ::= GEOJSON_OPEN_BRACKET point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) geoJSON_multipoint_xy(p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); - } - break; - case 90: /* multipoint_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) geoJSON_multipoint_xyz(p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); - } - break; - case 103: /* multilinestring_text ::= GEOJSON_OPEN_BRACKET linestring_text multilinestring_text2 GEOJSON_CLOSE_BRACKET */ -{ - ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) geoJSON_multilinestring_xy( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); - } - break; - case 105: /* multilinestring_text2 ::= GEOJSON_COMMA linestring_text multilinestring_text2 */ - case 108: /* multilinestring_textz2 ::= GEOJSON_COMMA linestring_textz multilinestring_textz2 */ yytestcase(yyruleno==108); -{ ((gaiaLinestringPtr)yymsp[-1].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[0].minor.yy0; yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 106: /* multilinestring_textz ::= GEOJSON_OPEN_BRACKET linestring_textz multilinestring_textz2 GEOJSON_CLOSE_BRACKET */ -{ - ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) geoJSON_multilinestring_xyz(p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); - } - break; - case 121: /* multipolygon_text ::= GEOJSON_OPEN_BRACKET polygon_text multipolygon_text2 GEOJSON_CLOSE_BRACKET */ -{ - ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) geoJSON_multipolygon_xy(p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); - } - break; - case 123: /* multipolygon_text2 ::= GEOJSON_COMMA polygon_text multipolygon_text2 */ - case 126: /* multipolygon_textz2 ::= GEOJSON_COMMA polygon_textz multipolygon_textz2 */ yytestcase(yyruleno==126); -{ ((gaiaPolygonPtr)yymsp[-1].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[0].minor.yy0; yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 124: /* multipolygon_textz ::= GEOJSON_OPEN_BRACKET polygon_textz multipolygon_textz2 GEOJSON_CLOSE_BRACKET */ -{ - ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) geoJSON_multipolygon_xyz(p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); - } - break; - case 139: /* geocoll_text ::= GEOJSON_OPEN_BRACKET coll_point geocoll_text2 GEOJSON_CLOSE_BRACKET */ - case 140: /* geocoll_text ::= GEOJSON_OPEN_BRACKET coll_linestring geocoll_text2 GEOJSON_CLOSE_BRACKET */ yytestcase(yyruleno==140); - case 141: /* geocoll_text ::= GEOJSON_OPEN_BRACKET coll_polygon geocoll_text2 GEOJSON_CLOSE_BRACKET */ yytestcase(yyruleno==141); -{ - ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) geoJSON_geomColl_xy(p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); - } - break; - case 143: /* geocoll_text2 ::= GEOJSON_COMMA coll_point geocoll_text2 */ - case 144: /* geocoll_text2 ::= GEOJSON_COMMA coll_linestring geocoll_text2 */ yytestcase(yyruleno==144); - case 145: /* geocoll_text2 ::= GEOJSON_COMMA coll_polygon geocoll_text2 */ yytestcase(yyruleno==145); - case 150: /* geocoll_textz2 ::= GEOJSON_COMMA coll_pointz geocoll_textz2 */ yytestcase(yyruleno==150); - case 151: /* geocoll_textz2 ::= GEOJSON_COMMA coll_linestringz geocoll_textz2 */ yytestcase(yyruleno==151); - case 152: /* geocoll_textz2 ::= GEOJSON_COMMA coll_polygonz geocoll_textz2 */ yytestcase(yyruleno==152); -{ - ((gaiaGeomCollPtr)yymsp[-1].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[0].minor.yy0; - yygotominor.yy0 = yymsp[-1].minor.yy0; - } - break; - case 146: /* geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_pointz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ - case 147: /* geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_linestringz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ yytestcase(yyruleno==147); - case 148: /* geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_polygonz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ yytestcase(yyruleno==148); -{ - ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) geoJSON_geomColl_xyz(p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); - } - break; - case 153: /* coll_point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ - case 154: /* coll_pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==154); -{ yygotominor.yy0 = geoJSON_buildGeomFromPoint(p_data, (gaiaPointPtr)yymsp[-1].minor.yy0); } - break; - case 155: /* coll_linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ - case 156: /* coll_linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==156); -{ yygotominor.yy0 = geoJSON_buildGeomFromLinestring(p_data, (gaiaLinestringPtr)yymsp[-1].minor.yy0); } - break; - case 157: /* coll_polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ - case 158: /* coll_polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ yytestcase(yyruleno==158); -{ yygotominor.yy0 = geoJSON_buildGeomFromPolygon(p_data, (gaiaPolygonPtr)yymsp[-1].minor.yy0); } - break; - default: - /* (0) main ::= in */ yytestcase(yyruleno==0); - /* (1) in ::= */ yytestcase(yyruleno==1); - /* (2) in ::= in state GEOJSON_NEWLINE */ yytestcase(yyruleno==2); - /* (3) state ::= program */ yytestcase(yyruleno==3); - /* (4) program ::= geo_text */ yytestcase(yyruleno==4); - /* (31) bbox ::= coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_COMMA coord */ yytestcase(yyruleno==31); - break; - }; - yygoto = yyRuleInfo[yyruleno].lhs; - yysize = yyRuleInfo[yyruleno].nrhs; - yypParser->yyidx -= yysize; - yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto); - if( yyact < YYNSTATE ){ -#ifdef NDEBUG - /* If we are not debugging and the reduce action popped at least - ** one element off the stack, then we can push the new element back - ** onto the stack here, and skip the stack overflow test in yy_shift(). - ** That gives a significant speed improvement. */ - if( yysize ){ - yypParser->yyidx++; - yymsp -= yysize-1; - yymsp->stateno = (YYACTIONTYPE)yyact; - yymsp->major = (YYCODETYPE)yygoto; - yymsp->minor = yygotominor; - }else -#endif - { - yy_shift(yypParser,yyact,yygoto,&yygotominor); - } - }else{ - assert( yyact == YYNSTATE + YYNRULE + 1 ); - yy_accept(yypParser); - } -} - -/* -** The following code executes when the parse fails -*/ -#ifndef YYNOERRORRECOVERY -static void yy_parse_failed( - yyParser *yypParser /* The parser */ -){ - ParseARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser fails */ - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} -#endif /* YYNOERRORRECOVERY */ - -/* -** The following code executes when a syntax error first occurs. -*/ -static void yy_syntax_error( - yyParser *yypParser, /* The parser */ - int yymajor, /* The major type of the error token */ - YYMINORTYPE yyminor /* The minor type of the error token */ -){ - ParseARG_FETCH; -#define TOKEN (yyminor.yy0) - -/* -** when the LEMON parser encounters an error -** then this global variable is set -*/ - p_data->geoJson_parse_error = 1; - p_data->result = NULL; - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* -** The following is executed when the parser accepts -*/ -static void yy_accept( - yyParser *yypParser /* The parser */ -){ - ParseARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser accepts */ - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* The main parser program. -** The first argument is a pointer to a structure obtained from -** "ParseAlloc" which describes the current state of the parser. -** The second argument is the major token number. The third is -** the minor token. The fourth optional argument is whatever the -** user wants (and specified in the grammar) and is available for -** use by the action routines. -** -** Inputs: -**
    -**
  • A pointer to the parser (an opaque structure.) -**
  • The major token number. -**
  • The minor token number. -**
  • An option argument of a grammar-specified type. -**
-** -** Outputs: -** None. -*/ -void Parse( - void *yyp, /* The parser */ - int yymajor, /* The major token code number */ - ParseTOKENTYPE yyminor /* The value for the token */ - ParseARG_PDECL /* Optional %extra_argument parameter */ -){ - YYMINORTYPE yyminorunion; - int yyact; /* The parser action. */ - int yyendofinput; /* True if we are at the end of input */ -#ifdef YYERRORSYMBOL - int yyerrorhit = 0; /* True if yymajor has invoked an error */ -#endif - yyParser *yypParser; /* The parser */ - - /* (re)initialize the parser, if necessary */ - yypParser = (yyParser*)yyp; - if( yypParser->yyidx<0 ){ -#if YYSTACKDEPTH<=0 - if( yypParser->yystksz <=0 ){ - /*memset(&yyminorunion, 0, sizeof(yyminorunion));*/ - yyminorunion = yyzerominor; - yyStackOverflow(yypParser, &yyminorunion); - return; - } -#endif - yypParser->yyidx = 0; - yypParser->yyerrcnt = -1; - yypParser->yystack[0].stateno = 0; - yypParser->yystack[0].major = 0; - } - yyminorunion.yy0 = yyminor; - yyendofinput = (yymajor==0); - ParseARG_STORE; - -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]); - } -#endif - - do{ - yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor); - if( yyactyyerrcnt--; - yymajor = YYNOCODE; - }else if( yyact < YYNSTATE + YYNRULE ){ - yy_reduce(yypParser,yyact-YYNSTATE); - }else{ - assert( yyact == YY_ERROR_ACTION ); -#ifdef YYERRORSYMBOL - int yymx; -#endif -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt); - } -#endif -#ifdef YYERRORSYMBOL - /* A syntax error has occurred. - ** The response to an error depends upon whether or not the - ** grammar defines an error token "ERROR". - ** - ** This is what we do if the grammar does define ERROR: - ** - ** * Call the %syntax_error function. - ** - ** * Begin popping the stack until we enter a state where - ** it is legal to shift the error symbol, then shift - ** the error symbol. - ** - ** * Set the error count to three. - ** - ** * Begin accepting and shifting new tokens. No new error - ** processing will occur until three tokens have been - ** shifted successfully. - ** - */ - if( yypParser->yyerrcnt<0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yymx = yypParser->yystack[yypParser->yyidx].major; - if( yymx==YYERRORSYMBOL || yyerrorhit ){ -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sDiscard input token %s\n", - yyTracePrompt,yyTokenName[yymajor]); - } -#endif - yy_destructor(yypParser, (YYCODETYPE)yymajor,&yyminorunion); - yymajor = YYNOCODE; - }else{ - while( - yypParser->yyidx >= 0 && - yymx != YYERRORSYMBOL && - (yyact = yy_find_reduce_action( - yypParser->yystack[yypParser->yyidx].stateno, - YYERRORSYMBOL)) >= YYNSTATE - ){ - yy_pop_parser_stack(yypParser); - } - if( yypParser->yyidx < 0 || yymajor==0 ){ - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - yy_parse_failed(yypParser); - yymajor = YYNOCODE; - }else if( yymx!=YYERRORSYMBOL ){ - YYMINORTYPE u2; - u2.YYERRSYMDT = 0; - yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2); - } - } - yypParser->yyerrcnt = 3; - yyerrorhit = 1; -#elif defined(YYNOERRORRECOVERY) - /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to - ** do any kind of error recovery. Instead, simply invoke the syntax - ** error routine and continue going as if nothing had happened. - ** - ** Applications can set this macro (for example inside %include) if - ** they intend to abandon the parse upon the first syntax error seen. - */ - yy_syntax_error(yypParser,yymajor,yyminorunion); - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - yymajor = YYNOCODE; - -#else /* YYERRORSYMBOL is not defined */ - /* This is what we do if the grammar does not define ERROR: - ** - ** * Report an error message, and throw away the input token. - ** - ** * If the input token is $, then fail the parse. - ** - ** As before, subsequent error messages are suppressed until - ** three input tokens have been successfully shifted. - */ - if( yypParser->yyerrcnt<=0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yypParser->yyerrcnt = 3; - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - if( yyendofinput ){ - yy_parse_failed(yypParser); - } - yymajor = YYNOCODE; -#endif - } - }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 ); - return; -} diff --git a/src/spatialite/src/gaiageo/geoJSON.h b/src/spatialite/src/gaiageo/geoJSON.h deleted file mode 100644 index 15e55c8..0000000 --- a/src/spatialite/src/gaiageo/geoJSON.h +++ /dev/null @@ -1,24 +0,0 @@ -#define GEOJSON_NEWLINE 1 -#define GEOJSON_OPEN_BRACE 2 -#define GEOJSON_TYPE 3 -#define GEOJSON_COLON 4 -#define GEOJSON_POINT 5 -#define GEOJSON_COMMA 6 -#define GEOJSON_COORDS 7 -#define GEOJSON_CLOSE_BRACE 8 -#define GEOJSON_BBOX 9 -#define GEOJSON_OPEN_BRACKET 10 -#define GEOJSON_CLOSE_BRACKET 11 -#define GEOJSON_CRS 12 -#define GEOJSON_NAME 13 -#define GEOJSON_PROPS 14 -#define GEOJSON_NUM 15 -#define GEOJSON_SHORT_SRID 16 -#define GEOJSON_LONG_SRID 17 -#define GEOJSON_LINESTRING 18 -#define GEOJSON_POLYGON 19 -#define GEOJSON_MULTIPOINT 20 -#define GEOJSON_MULTILINESTRING 21 -#define GEOJSON_MULTIPOLYGON 22 -#define GEOJSON_GEOMETRYCOLLECTION 23 -#define GEOJSON_GEOMS 24 diff --git a/src/spatialite/src/gaiageo/gg_advanced.c b/src/spatialite/src/gaiageo/gg_advanced.c deleted file mode 100644 index a3e8f75..0000000 --- a/src/spatialite/src/gaiageo/gg_advanced.c +++ /dev/null @@ -1,2045 +0,0 @@ -/* - - gg_advanced.c -- Gaia advanced geometric operations - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include - -#include - -GAIAGEO_DECLARE double -gaiaMeasureLength (int dims, double *coords, int vert) -{ -/* computes the total length */ - double lung = 0.0; - double xx1; - double xx2; - double yy1; - double yy2; - double x; - double y; - double z; - double m; - double dist; - int ind; - if (vert <= 0) - return lung; - if (dims == GAIA_XY_Z) - { - gaiaGetPointXYZ (coords, 0, &xx1, &yy1, &z); - } - else if (dims == GAIA_XY_M) - { - gaiaGetPointXYM (coords, 0, &xx1, &yy1, &m); - } - else if (dims == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (coords, 0, &xx1, &yy1, &z, &m); - } - else - { - gaiaGetPoint (coords, 0, &xx1, &yy1); - } - for (ind = 1; ind < vert; ind++) - { - if (dims == GAIA_XY_Z) - { - gaiaGetPointXYZ (coords, ind, &xx2, &yy2, &z); - } - else if (dims == GAIA_XY_M) - { - gaiaGetPointXYM (coords, ind, &xx2, &yy2, &m); - } - else if (dims == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (coords, ind, &xx2, &yy2, &z, &m); - } - else - { - gaiaGetPoint (coords, ind, &xx2, &yy2); - } - x = xx1 - xx2; - y = yy1 - yy2; - dist = sqrt ((x * x) + (y * y)); - lung += dist; - xx1 = xx2; - yy1 = yy2; - } - return lung; -} - -GAIAGEO_DECLARE double -gaiaMeasureArea (gaiaRingPtr ring) -{ -/* computes the area */ - int iv; - double xx; - double yy; - double x; - double y; - double z; - double m; - double area = 0.0; - if (!ring) - return 0.0; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, 0, &xx, &yy, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, 0, &xx, &yy, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, 0, &xx, &yy, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, 0, &xx, &yy); - } - for (iv = 1; iv < ring->Points; iv++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - area += ((xx * y) - (x * yy)); - xx = x; - yy = y; - } - area /= 2.0; - return fabs (area); -} - -GAIAGEO_DECLARE void -gaiaRingCentroid (gaiaRingPtr ring, double *rx, double *ry) -{ -/* computes the simple ring centroid */ - double cx = 0.0; - double cy = 0.0; - double xx; - double yy; - double x; - double y; - double z; - double m; - double coeff; - double area; - double term; - int iv; - if (!ring) - { - *rx = -DBL_MAX; - *ry = -DBL_MAX; - return; - } - area = gaiaMeasureArea (ring); - coeff = 1.0 / (area * 6.0); - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, 0, &xx, &yy, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, 0, &xx, &yy, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, 0, &xx, &yy, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, 0, &xx, &yy); - } - for (iv = 1; iv < ring->Points; iv++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - term = (xx * y) - (x * yy); - cx += (xx + x) * term; - cy += (yy + y) * term; - xx = x; - yy = y; - } - *rx = fabs (cx * coeff); - *ry = fabs (cy * coeff); -} - -GAIAGEO_DECLARE void -gaiaClockwise (gaiaRingPtr p) -{ -/* determines clockwise or anticlockwise direction */ - int ind; - int ix; - double xx; - double yy; - double x; - double y; - double z; - double m; - double area = 0.0; - for (ind = 0; ind < p->Points; ind++) - { - if (p->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (p->Coords, ind, &xx, &yy, &z); - } - else if (p->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (p->Coords, ind, &xx, &yy, &m); - } - else if (p->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (p->Coords, ind, &xx, &yy, &z, &m); - } - else - { - gaiaGetPoint (p->Coords, ind, &xx, &yy); - } - ix = (ind + 1) % p->Points; - if (p->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (p->Coords, ix, &x, &y, &z); - } - else if (p->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (p->Coords, ix, &x, &y, &m); - } - else if (p->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (p->Coords, ix, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (p->Coords, ix, &x, &y); - } - area += ((xx * y) - (x * yy)); - } - area /= 2.0; - if (area >= 0.0) - p->Clockwise = 0; - else - p->Clockwise = 1; -} - -GAIAGEO_DECLARE int -gaiaIsPointOnRingSurface (gaiaRingPtr ring, double pt_x, double pt_y) -{ -/* tests if a POINT falls inside a RING */ - int isInternal = 0; - int cnt; - int i; - int j; - double x; - double y; - double z; - double m; - double *vert_x; - double *vert_y; - double minx = DBL_MAX; - double miny = DBL_MAX; - double maxx = -DBL_MAX; - double maxy = -DBL_MAX; - cnt = ring->Points; - cnt--; /* ignoring last vertex because surely identical to the first one */ - if (cnt < 2) - return 0; -/* allocating and loading an array of vertices */ - vert_x = malloc (sizeof (double) * (cnt)); - vert_y = malloc (sizeof (double) * (cnt)); - for (i = 0; i < cnt; i++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, i, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, i, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, i, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, i, &x, &y); - } - vert_x[i] = x; - vert_y[i] = y; - if (x < minx) - minx = x; - if (x > maxx) - maxx = x; - if (y < miny) - miny = y; - if (y > maxy) - maxy = y; - } - if (pt_x < minx || pt_x > maxx) - goto end; /* outside the bounding box (x axis) */ - if (pt_y < miny || pt_y > maxy) - goto end; /* outside the bounding box (y axis) */ - for (i = 0, j = cnt - 1; i < cnt; j = i++) - { -/* The definitive reference is "Point in Polyon Strategies" by -/ Eric Haines [Gems IV] pp. 24-46. -/ The code in the Sedgewick book Algorithms (2nd Edition, p.354) is -/ incorrect. -*/ - if ((((vert_y[i] <= pt_y) && (pt_y < vert_y[j])) - || ((vert_y[j] <= pt_y) && (pt_y < vert_y[i]))) - && (pt_x < - (vert_x[j] - vert_x[i]) * (pt_y - vert_y[i]) / (vert_y[j] - - vert_y[i]) + - vert_x[i])) - isInternal = !isInternal; - } - end: - free (vert_x); - free (vert_y); - return isInternal; -} - -GAIAGEO_DECLARE double -gaiaMinDistance (double x0, double y0, int dims, double *coords, int n_vert) -{ -/* computing minimal distance between a POINT and a linestring/ring */ - double x; - double y; - double z; - double m; - double ox; - double oy; - double lineMag; - double u; - double px; - double py; - double dist; - double min_dist = DBL_MAX; - int iv; - if (n_vert < 2) - return min_dist; /* not a valid linestring */ -/* computing distance from first vertex */ - ox = *(coords + 0); - oy = *(coords + 1); - min_dist = sqrt (((x0 - ox) * (x0 - ox)) + ((y0 - oy) * (y0 - oy))); - for (iv = 1; iv < n_vert; iv++) - { - /* segment start-end coordinates */ - if (dims == GAIA_XY_Z) - { - gaiaGetPointXYZ (coords, iv - 1, &ox, &oy, &z); - gaiaGetPointXYZ (coords, iv, &x, &y, &z); - } - else if (dims == GAIA_XY_M) - { - gaiaGetPointXYM (coords, iv - 1, &ox, &oy, &m); - gaiaGetPointXYM (coords, iv, &x, &y, &m); - } - else if (dims == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (coords, iv - 1, &ox, &oy, &z, &m); - gaiaGetPointXYZM (coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (coords, iv - 1, &ox, &oy); - gaiaGetPoint (coords, iv, &x, &y); - } - /* computing distance from vertex */ - dist = sqrt (((x0 - x) * (x0 - x)) + ((y0 - y) * (y0 - y))); - if (dist < min_dist) - min_dist = dist; - /* computing a projection */ - lineMag = ((x - ox) * (x - ox)) + ((y - oy) * (y - oy)); - u = (((x0 - ox) * (x - ox)) + ((y0 - oy) * (y - oy))) / lineMag; - if (u < 0.0 || u > 1.0) - ; /* closest point does not fall within the line segment */ - else - { - px = ox + u * (x - ox); - py = oy + u * (y - oy); - dist = sqrt (((x0 - px) * (x0 - px)) + ((y0 - py) * (y0 - py))); - if (dist < min_dist) - min_dist = dist; - } - } - return min_dist; -} - -GAIAGEO_DECLARE int -gaiaIsPointOnPolygonSurface (gaiaPolygonPtr polyg, double x, double y) -{ -/* tests if a POINT falls inside a POLYGON */ - int ib; - gaiaRingPtr ring = polyg->Exterior; - if (gaiaIsPointOnRingSurface (ring, x, y)) - { - /* ok, the POINT falls inside the polygon */ - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - if (gaiaIsPointOnRingSurface (ring, x, y)) - { - /* no, the POINT fall inside some hole */ - return 0; - } - } - return 1; - } - return 0; -} - -GAIAGEO_DECLARE int -gaiaIntersect (double *x0, double *y0, double x1, double y1, double x2, - double y2, double x3, double y3, double x4, double y4) -{ -/* computes intersection [if any] between two line segments -/ the intersection POINT has coordinates (x0, y0) -/ first line is identified by(x1, y1) and (x2, y2) -/ second line is identified by (x3, y3) and (x4, y4) -*/ - double x; - double y; - double a1; - double b1; - double c1; - double a2; - double b2; - double c2; - double m1; - double m2; - double p; - double det_inv; - double minx1; - double miny1; - double maxx1; - double maxy1; - double minx2; - double miny2; - double maxx2; - double maxy2; - int ok1 = 0; - int ok2 = 0; -/* building line segment's MBRs */ - if (x2 < x1) - { - minx1 = x2; - maxx1 = x1; - } - else - { - minx1 = x1; - maxx1 = x2; - } - if (y2 < y1) - { - miny1 = y2; - maxy1 = y1; - } - else - { - miny1 = y1; - maxy1 = y2; - } - if (x4 < x3) - { - minx2 = x4; - maxx2 = x3; - } - else - { - minx2 = x3; - maxx2 = x4; - } - if (y4 < y3) - { - miny2 = y4; - maxy2 = y3; - } - else - { - miny2 = y3; - maxy2 = y4; - } -/* checking MBRs first */ - if (minx1 > maxx2) - return 0; - if (miny1 > maxy2) - return 0; - if (maxx1 < minx2) - return 0; - if (maxy1 < miny2) - return 0; - if (minx2 > maxx1) - return 0; - if (miny2 > maxy1) - return 0; - if (maxx2 < minx1) - return 0; - if (maxy2 < miny1) - return 0; -/* there is an MBRs intersection - proceeding */ - if ((x2 - x1) != 0.0) - m1 = (y2 - y1) / (x2 - x1); - else - m1 = DBL_MAX; - if ((x4 - x3) != 0) - m2 = (y4 - y3) / (x4 - x3); - else - m2 = DBL_MAX; - if (m1 == m2) /* parallel lines */ - return 0; - if (m1 == DBL_MAX) - c1 = y1; - else - c1 = (y1 - m1 * x1); - if (m2 == DBL_MAX) - c2 = y3; - else - c2 = (y3 - m2 * x3); - if (m1 == DBL_MAX) - { - x = x1; - p = m2 * x1; - y = p + c2; /* first line is vertical */ - goto check_bbox; - } - if (m2 == DBL_MAX) - { - x = x3; - p = m1 * x3; - y = p + c1; /* second line is vertical */ - goto check_bbox; - } - a1 = m1; - a2 = m2; - b1 = -1; - b2 = -1; - det_inv = 1 / (a1 * b2 - a2 * b1); - x = ((b1 * c2 - b2 * c1) * det_inv); - y = ((a2 * c1 - a1 * c2) * det_inv); -/* now checking if intersection falls within both segment boundaries */ - check_bbox: - if (x >= minx1 && x <= maxx1 && y >= miny1 && y <= maxy1) - ok1 = 1; - if (x >= minx2 && x <= maxx2 && y >= miny2 && y <= maxy2) - ok2 = 1; - if (ok1 && ok2) - { - /* intersection point falls within the segments */ - *x0 = x; - *y0 = y; - return 1; - } - return 0; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaSanitize (gaiaGeomCollPtr geom) -{ -/* -/ sanitizes a GEOMETRYCOLLECTION: -/ - repeated vertices are omitted -/ - ring closure is enforced anyway -*/ - int iv; - int ib; - double x = 0.0; - double y = 0.0; - double z = 0.0; - double m = 0.0; - double last_x = 0.0; - double last_y = 0.0; - double last_z = 0.0; - int points; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaLinestringPtr new_line; - gaiaPolygonPtr polyg; - gaiaPolygonPtr new_polyg; - gaiaGeomCollPtr new_geom; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - if (!geom) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - new_geom = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - new_geom = gaiaAllocGeomCollXYM (); - else if (geom->DimensionModel == GAIA_XY_Z_M) - new_geom = gaiaAllocGeomCollXYZM (); - else - new_geom = gaiaAllocGeomColl (); - new_geom->Srid = geom->Srid; - new_geom->DeclaredType = geom->DeclaredType; - point = geom->FirstPoint; - while (point) - { - /* copying POINTs */ - gaiaAddPointToGeomCollXYZM (new_geom, point->X, point->Y, point->Z, - point->M); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* sanitizing LINESTRINGs */ - points = 0; - for (iv = 0; iv < line->Points; iv++) - { - /* PASS I - checking points */ - z = 0.0; - m = 0.0; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - if (iv > 0) - { - if (last_x == x && last_y == y && last_z == z) - ; - else - points++; - } - else - points++; - last_x = x; - last_y = y; - last_z = z; - } - if (points < 2) - { - /* illegal LINESTRING - copying the original one */ - new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); - gaiaCopyLinestringCoords (new_line, line); - } - else - { - /* valid LINESTRING - sanitizing */ - new_line = gaiaAddLinestringToGeomColl (new_geom, points); - points = 0; - for (iv = 0; iv < line->Points; iv++) - { - /* PASS II - inserting points */ - z = 0.0; - m = 0.0; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - if (iv > 0) - { - if (last_x == x && last_y == y && last_z == z) - ; - else - { - if (new_line->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (new_line->Coords, - points, x, y, z); - } - else if (new_line->DimensionModel == - GAIA_XY_M) - { - gaiaSetPointXYM (new_line->Coords, - points, x, y, m); - } - else if (new_line->DimensionModel == - GAIA_XY_Z_M) - { - gaiaSetPointXYZM (new_line->Coords, - points, x, y, z, m); - } - else - { - gaiaSetPoint (new_line->Coords, points, - x, y); - } - points++; - } - } - else - { - if (new_line->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (new_line->Coords, points, x, - y, z); - } - else if (new_line->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (new_line->Coords, points, x, - y, m); - } - else if (new_line->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (new_line->Coords, points, x, - y, z, m); - } - else - { - gaiaSetPoint (new_line->Coords, points, x, y); - } - points++; - } - last_x = x; - last_y = y; - last_z = z; - } - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* copying POLYGONs */ - i_ring = polyg->Exterior; - /* sanitizing EXTERIOR RING */ - points = 0; - for (iv = 0; iv < i_ring->Points; iv++) - { - /* PASS I - checking points */ - z = 0.0; - m = 0.0; - if (i_ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (i_ring->Coords, iv, &x, &y, &z); - } - else if (i_ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (i_ring->Coords, iv, &x, &y, &m); - } - else if (i_ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (i_ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (i_ring->Coords, iv, &x, &y); - } - if (iv > 0) - { - if (last_x == x && last_y == y && last_z == z) - ; - else - points++; - } - else - points++; - last_x = x; - last_y = y; - last_z = z; - } - if (last_x == x && last_y == y && last_z == z) - ; - else - { - /* forcing RING closure */ - points++; - } - if (points < 4) - { - /* illegal RING - copying the original one */ - new_polyg = - gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, - polyg->NumInteriors); - o_ring = new_polyg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - } - else - { - /* valid RING - sanitizing */ - new_polyg = - gaiaAddPolygonToGeomColl (new_geom, points, - polyg->NumInteriors); - o_ring = new_polyg->Exterior; - points = 0; - for (iv = 0; iv < i_ring->Points; iv++) - { - /* PASS II - inserting points */ - z = 0.0; - m = 0.0; - if (i_ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (i_ring->Coords, iv, &x, &y, &z); - } - else if (i_ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (i_ring->Coords, iv, &x, &y, &m); - } - else if (i_ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (i_ring->Coords, iv, &x, &y, &z, - &m); - } - else - { - gaiaGetPoint (i_ring->Coords, iv, &x, &y); - } - if (iv > 0) - { - if (last_x == x && last_y == y && last_z == z) - ; - else - { - if (o_ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (o_ring->Coords, points, - x, y, z); - } - else if (o_ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (o_ring->Coords, points, - x, y, m); - } - else if (o_ring->DimensionModel == - GAIA_XY_Z_M) - { - gaiaSetPointXYZM (o_ring->Coords, - points, x, y, z, m); - } - else - { - gaiaSetPoint (o_ring->Coords, points, x, - y); - } - points++; - } - } - else - { - if (o_ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (o_ring->Coords, points, x, - y, z); - } - else if (o_ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (o_ring->Coords, points, x, - y, m); - } - else if (o_ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (o_ring->Coords, points, x, - y, z, m); - } - else - { - gaiaSetPoint (o_ring->Coords, points, x, y); - } - points++; - } - last_x = x; - last_y = y; - last_z = z; - } - } - /* PASS III - forcing RING closure */ - z = 0.0; - m = 0.0; - if (i_ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (i_ring->Coords, 0, &x, &y, &z); - } - else if (i_ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (i_ring->Coords, 0, &x, &y, &m); - } - else if (i_ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (i_ring->Coords, 0, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (i_ring->Coords, 0, &x, &y); - } - points = o_ring->Points - 1; - if (o_ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (o_ring->Coords, points, x, y, z); - } - else if (o_ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (o_ring->Coords, points, x, y, m); - } - else if (o_ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (o_ring->Coords, points, x, y, z, m); - } - else - { - gaiaSetPoint (o_ring->Coords, points, x, y); - } - for (ib = 0; ib < new_polyg->NumInteriors; ib++) - { - /* copying each INTERIOR RING [if any] */ - i_ring = polyg->Interiors + ib; - /* sanitizing an INTERIOR RING */ - points = 0; - for (iv = 0; iv < i_ring->Points; iv++) - { - /* PASS I - checking points */ - z = 0.0; - m = 0.0; - if (i_ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (i_ring->Coords, iv, &x, &y, &z); - } - else if (i_ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (i_ring->Coords, iv, &x, &y, &m); - } - else if (i_ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (i_ring->Coords, iv, &x, &y, &z, - &m); - } - else - { - gaiaGetPoint (i_ring->Coords, iv, &x, &y); - } - if (iv > 0) - { - if (last_x == x && last_y == y && last_z == z) - ; - else - points++; - } - else - points++; - last_x = x; - last_y = y; - last_z = z; - } - if (last_x == x && last_y == y && last_z == z) - ; - else - { - /* forcing RING closure */ - points++; - } - if (points < 4) - { - /* illegal RING - copying the original one */ - o_ring = - gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - else - { - /* valid RING - sanitizing */ - o_ring = gaiaAddInteriorRing (new_polyg, ib, points); - points = 0; - for (iv = 0; iv < i_ring->Points; iv++) - { - /* PASS II - inserting points */ - z = 0.0; - m = 0.0; - if (i_ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (i_ring->Coords, iv, &x, &y, - &z); - } - else if (i_ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (i_ring->Coords, iv, &x, &y, - &m); - } - else if (i_ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (i_ring->Coords, iv, &x, &y, - &z, &m); - } - else - { - gaiaGetPoint (i_ring->Coords, iv, &x, &y); - } - if (iv > 0) - { - if (last_x == x && last_y == y && last_z == z) - ; - else - { - if (o_ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (o_ring->Coords, - points, x, y, z); - } - else if (o_ring->DimensionModel == - GAIA_XY_M) - { - gaiaSetPointXYM (o_ring->Coords, - points, x, y, m); - } - else if (o_ring->DimensionModel == - GAIA_XY_Z_M) - { - gaiaSetPointXYZM (o_ring->Coords, - points, x, y, z, - m); - } - else - { - gaiaSetPoint (o_ring->Coords, - points, x, y); - } - points++; - } - } - else - { - if (o_ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (o_ring->Coords, points, - x, y, z); - } - else if (o_ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (o_ring->Coords, points, - x, y, m); - } - else if (o_ring->DimensionModel == - GAIA_XY_Z_M) - { - gaiaSetPointXYZM (o_ring->Coords, - points, x, y, z, m); - } - else - { - gaiaSetPoint (o_ring->Coords, points, x, - y); - } - points++; - } - last_x = x; - last_y = y; - last_z = z; - } - /* PASS III - forcing RING closure */ - z = 0.0; - m = 0.0; - if (i_ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (i_ring->Coords, 0, &x, &y, &z); - } - else if (i_ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (i_ring->Coords, 0, &x, &y, &m); - } - else if (i_ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (i_ring->Coords, 0, &x, &y, &z, - &m); - } - else - { - gaiaGetPoint (i_ring->Coords, 0, &x, &y); - } - points = o_ring->Points - 1; - if (o_ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (o_ring->Coords, points, x, y, z); - } - else if (o_ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (o_ring->Coords, points, x, y, m); - } - else if (o_ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (o_ring->Coords, points, x, y, z, - m); - } - else - { - gaiaSetPoint (o_ring->Coords, points, x, y); - } - } - } - polyg = polyg->Next; - } - return new_geom; -} - -static int -gaiaIsToxicLinestring (gaiaLinestringPtr line) -{ -/* checking a Linestring */ - if (line->Points < 2) - return 1; - return 0; - -/* not a valid Linestring, simply a degenerated Point */ - return 1; -} - -static int -gaiaIsToxicRing (gaiaRingPtr ring) -{ -/* checking a Ring */ - if (ring->Points < 4) - return 1; - return 0; -} - -GAIAGEO_DECLARE int -gaiaIsToxic (gaiaGeomCollPtr geom) -{ -/* -/ identifying toxic geometries -/ i.e. geoms making GEOS to crash !!! -*/ - int ib; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - if (!geom) - return 0; - if (gaiaIsEmpty (geom)) - return 1; - point = geom->FirstPoint; - while (point) - { - /* checking POINTs */ - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* checking LINESTRINGs */ - if (gaiaIsToxicLinestring (line)) - { - gaiaSetGeosErrorMsg ("gaiaIsToxic detected a toxic Linestring"); - return 1; - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* checking POLYGONs */ - ring = polyg->Exterior; - if (gaiaIsToxicRing (ring)) - { - gaiaSetGeosErrorMsg ("gaiaIsToxic detected a toxic Ring"); - return 1; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - if (gaiaIsToxicRing (ring)) - { - gaiaSetGeosErrorMsg ("gaiaIsToxic detected a toxic Ring"); - return 1; - } - } - polyg = polyg->Next; - } - return 0; -} - -GAIAGEO_DECLARE int -gaiaIsNotClosedRing (gaiaRingPtr ring) -{ -/* checking a Ring for closure */ - double x0; - double y0; - double z0; - double m0; - double x1; - double y1; - double z1; - double m1; - gaiaRingGetPoint (ring, 0, &x0, &y0, &z0, &m0); - gaiaRingGetPoint (ring, ring->Points - 1, &x1, &y1, &z1, &m1); - if (x0 == x1 && y0 == y1 && z0 == z1 && m0 == m1) - return 0; - else - return 1; -} - -GAIAGEO_DECLARE int -gaiaIsNotClosedGeomColl (gaiaGeomCollPtr geom) -{ -/* -/ identifying not properly closed Rings -/ i.e. geoms making GEOS to crash !!! -*/ - int ib; - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - if (!geom) - return 0; - polyg = geom->FirstPolygon; - while (polyg) - { - /* checking POLYGONs */ - ring = polyg->Exterior; - if (gaiaIsNotClosedRing (ring)) - return 1; - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - if (gaiaIsNotClosedRing (ring)) - return 1; - } - polyg = polyg->Next; - } - return 0; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaLinearize (gaiaGeomCollPtr geom, int force_multi) -{ -/* attempts to rearrange a generic Geometry into a (multi)linestring */ - int pts = 0; - int lns = 0; - gaiaGeomCollPtr result; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaLinestringPtr new_ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - int iv; - int ib; - double x; - double y; - double m; - double z; - if (!geom) - return NULL; - pt = geom->FirstPoint; - while (pt) - { - pts++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - lns++; - ln = ln->Next; - } - if (pts || lns) - return NULL; - - if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else - result = gaiaAllocGeomColl (); - result->Srid = geom->Srid; - if (force_multi) - result->DeclaredType = GAIA_MULTILINESTRING; - - pg = geom->FirstPolygon; - while (pg) - { - /* dissolving any POLYGON as simple LINESTRINGs (rings) */ - rng = pg->Exterior; - new_ln = gaiaAddLinestringToGeomColl (result, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - /* copying the EXTERIOR RING as LINESTRING */ - if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); - } - else if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - gaiaSetPoint (new_ln->Coords, iv, x, y); - } - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - rng = pg->Interiors + ib; - new_ln = gaiaAddLinestringToGeomColl (result, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - /* copying an INTERIOR RING as LINESTRING */ - if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); - } - else if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - gaiaSetPoint (new_ln->Coords, iv, x, y); - } - } - } - pg = pg->Next; - } - if (result->FirstLinestring == NULL) - { - gaiaFreeGeomColl (result); - return NULL; - } - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaDissolveSegments (gaiaGeomCollPtr geom) -{ -/* attempts to dissolve a Geometry into segments */ - gaiaGeomCollPtr result; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaLinestringPtr segment; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - int iv; - int ib; - double x; - double y; - double z; - double m; - double x0; - double y0; - double z0; - double m0; - if (!geom) - return NULL; - - if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else - result = gaiaAllocGeomColl (); - pt = geom->FirstPoint; - while (pt) - { - if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (result, pt->X, pt->Y, pt->Z, pt->M); - else if (geom->DimensionModel == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (result, pt->X, pt->Y, pt->Z); - else if (geom->DimensionModel == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (result, pt->X, pt->Y, pt->M); - else - gaiaAddPointToGeomColl (result, pt->X, pt->Y); - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - for (iv = 0; iv < ln->Points; iv++) - { - if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - } - else if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - if (iv > 0) - { - if (geom->DimensionModel == GAIA_XY_Z_M) - { - if (x != x0 || y != y0 || z != z0 || m != m0) - { - segment = - gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPointXYZM (segment->Coords, 0, x0, y0, - z0, m0); - gaiaSetPointXYZM (segment->Coords, 1, x, y, z, - m); - } - } - else if (geom->DimensionModel == GAIA_XY_Z) - { - if (x != x0 || y != y0 || z != z0) - { - segment = - gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPointXYZ (segment->Coords, 0, x0, y0, - z0); - gaiaSetPointXYZ (segment->Coords, 1, x, y, z); - } - } - else if (geom->DimensionModel == GAIA_XY_M) - { - if (x != x0 || y != y0 || m != m0) - { - segment = - gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPointXYM (segment->Coords, 0, x0, y0, - m0); - gaiaSetPointXYM (segment->Coords, 1, x, y, m); - } - } - else - { - if (x != x0 || y != y0) - { - segment = - gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (segment->Coords, 0, x0, y0); - gaiaSetPoint (segment->Coords, 1, x, y); - } - } - } - x0 = x; - y0 = y; - z0 = z; - m0 = m; - } - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - rng = pg->Exterior; - for (iv = 0; iv < rng->Points; iv++) - { - /* exterior Ring */ - if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - if (iv > 0) - { - if (geom->DimensionModel == GAIA_XY_Z_M) - { - if (x != x0 || y != y0 || z != z0 || m != m0) - { - segment = - gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPointXYZM (segment->Coords, 0, x0, y0, - z0, m0); - gaiaSetPointXYZM (segment->Coords, 1, x, y, z, - m); - } - } - else if (geom->DimensionModel == GAIA_XY_Z) - { - if (x != x0 || y != y0 || z != z0) - { - segment = - gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPointXYZ (segment->Coords, 0, x0, y0, - z0); - gaiaSetPointXYZ (segment->Coords, 1, x, y, z); - } - } - else if (geom->DimensionModel == GAIA_XY_M) - { - if (x != x0 || y != y0 || m != m0) - { - segment = - gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPointXYM (segment->Coords, 0, x0, y0, - m0); - gaiaSetPointXYM (segment->Coords, 1, x, y, m); - } - } - else - { - if (x != x0 || y != y0) - { - segment = - gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (segment->Coords, 0, x0, y0); - gaiaSetPoint (segment->Coords, 1, x, y); - } - } - } - x0 = x; - y0 = y; - z0 = z; - m0 = m; - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - rng = pg->Interiors + ib; - for (iv = 0; iv < rng->Points; iv++) - { - /* interior Ring */ - if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - if (iv > 0) - { - if (geom->DimensionModel == GAIA_XY_Z_M) - { - if (x != x0 || y != y0 || z != z0 || m != m0) - { - segment = - gaiaAddLinestringToGeomColl (result, - 2); - gaiaSetPointXYZM (segment->Coords, 0, - x0, y0, z0, m0); - gaiaSetPointXYZM (segment->Coords, 1, x, - y, z, m); - } - } - else if (geom->DimensionModel == GAIA_XY_Z) - { - if (x != x0 || y != y0 || z != z0) - { - segment = - gaiaAddLinestringToGeomColl (result, - 2); - gaiaSetPointXYZ (segment->Coords, 0, x0, - y0, z0); - gaiaSetPointXYZ (segment->Coords, 1, x, - y, z); - } - } - else if (geom->DimensionModel == GAIA_XY_M) - { - if (x != x0 || y != y0 || m != m0) - { - segment = - gaiaAddLinestringToGeomColl (result, - 2); - gaiaSetPointXYM (segment->Coords, 0, x0, - y0, m0); - gaiaSetPointXYM (segment->Coords, 1, x, - y, m); - } - } - else - { - if (x != x0 || y != y0) - { - segment = - gaiaAddLinestringToGeomColl (result, - 2); - gaiaSetPoint (segment->Coords, 0, x0, - y0); - gaiaSetPoint (segment->Coords, 1, x, y); - } - } - } - x0 = x; - y0 = y; - z0 = z; - m0 = m; - } - } - pg = pg->Next; - } - result->Srid = geom->Srid; - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaDissolvePoints (gaiaGeomCollPtr geom) -{ -/* attempts to dissolve a Geometry into points */ - gaiaGeomCollPtr result; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - int iv; - int ib; - double x; - double y; - double z; - double m; - if (!geom) - return NULL; - - if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else - result = gaiaAllocGeomColl (); - pt = geom->FirstPoint; - while (pt) - { - if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (result, pt->X, pt->Y, pt->Z, pt->M); - else if (geom->DimensionModel == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (result, pt->X, pt->Y, pt->Z); - else if (geom->DimensionModel == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (result, pt->X, pt->Y, pt->M); - else - gaiaAddPointToGeomColl (result, pt->X, pt->Y); - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - for (iv = 0; iv < ln->Points; iv++) - { - if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - } - else if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (result, x, y, z, m); - else if (geom->DimensionModel == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (result, x, y, z); - else if (geom->DimensionModel == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (result, x, y, m); - else - gaiaAddPointToGeomColl (result, x, y); - } - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - rng = pg->Exterior; - for (iv = 0; iv < rng->Points; iv++) - { - /* exterior Ring */ - if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (result, x, y, z, m); - else if (geom->DimensionModel == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (result, x, y, z); - else if (geom->DimensionModel == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (result, x, y, m); - else - gaiaAddPointToGeomColl (result, x, y); - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - rng = pg->Interiors + ib; - for (iv = 0; iv < rng->Points; iv++) - { - /* interior Ring */ - if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (result, x, y, z, m); - else if (geom->DimensionModel == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (result, x, y, z); - else if (geom->DimensionModel == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (result, x, y, m); - else - gaiaAddPointToGeomColl (result, x, y); - } - } - pg = pg->Next; - } - result->Srid = geom->Srid; - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaExtractPointsFromGeomColl (gaiaGeomCollPtr geom) -{ -/* extracts any POINT from a GeometryCollection */ - gaiaGeomCollPtr result; - gaiaPointPtr pt; - int pts = 0; - if (!geom) - return NULL; - - pt = geom->FirstPoint; - while (pt) - { - pts++; - pt = pt->Next; - } - if (!pts) - return NULL; - - if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else - result = gaiaAllocGeomColl (); - pt = geom->FirstPoint; - while (pt) - { - if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (result, pt->X, pt->Y, pt->Z, pt->M); - else if (geom->DimensionModel == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (result, pt->X, pt->Y, pt->Z); - else if (geom->DimensionModel == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (result, pt->X, pt->Y, pt->M); - else - gaiaAddPointToGeomColl (result, pt->X, pt->Y); - pt = pt->Next; - } - result->Srid = geom->Srid; - result->DeclaredType = GAIA_MULTIPOINT; - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaExtractLinestringsFromGeomColl (gaiaGeomCollPtr geom) -{ -/* extracts any LINESTRING from a GeometryCollection */ - gaiaGeomCollPtr result; - gaiaLinestringPtr ln; - gaiaLinestringPtr new_ln; - int lns = 0; - int iv; - double x; - double y; - double z; - double m; - if (!geom) - return NULL; - - ln = geom->FirstLinestring; - while (ln) - { - lns++; - ln = ln->Next; - } - if (!lns) - return NULL; - - if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else - result = gaiaAllocGeomColl (); - ln = geom->FirstLinestring; - while (ln) - { - new_ln = gaiaAddLinestringToGeomColl (result, ln->Points); - for (iv = 0; iv < ln->Points; iv++) - { - if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); - } - else if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - gaiaSetPoint (new_ln->Coords, iv, x, y); - } - } - ln = ln->Next; - } - result->Srid = geom->Srid; - result->DeclaredType = GAIA_MULTILINESTRING; - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaExtractPolygonsFromGeomColl (gaiaGeomCollPtr geom) -{ -/* extracts any POLYGON from a GeometryCollection */ - gaiaGeomCollPtr result; - gaiaPolygonPtr pg; - gaiaPolygonPtr new_pg; - gaiaRingPtr rng; - gaiaRingPtr new_rng; - int pgs = 0; - int iv; - int ib; - double x; - double y; - double z; - double m; - if (!geom) - return NULL; - - pg = geom->FirstPolygon; - while (pg) - { - pgs++; - pg = pg->Next; - } - if (!pgs) - return NULL; - - if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else - result = gaiaAllocGeomColl (); - pg = geom->FirstPolygon; - while (pg) - { - rng = pg->Exterior; - new_pg = - gaiaAddPolygonToGeomColl (result, rng->Points, pg->NumInteriors); - new_rng = new_pg->Exterior; - for (iv = 0; iv < rng->Points; iv++) - { - if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (new_rng->Coords, iv, x, y, z, m); - } - else if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (new_rng->Coords, iv, x, y, z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (new_rng->Coords, iv, x, y, m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - gaiaSetPoint (new_rng->Coords, iv, x, y); - } - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - rng = pg->Interiors + ib; - new_rng = gaiaAddInteriorRing (new_pg, ib, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (new_rng->Coords, iv, x, y, z, m); - } - else if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (new_rng->Coords, iv, x, y, z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (new_rng->Coords, iv, x, y, m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - gaiaSetPoint (new_rng->Coords, iv, x, y); - } - } - } - pg = pg->Next; - } - result->Srid = geom->Srid; - result->DeclaredType = GAIA_MULTIPOLYGON; - return result; -} diff --git a/src/spatialite/src/gaiageo/gg_endian.c b/src/spatialite/src/gaiageo/gg_endian.c deleted file mode 100644 index 0f8f3a5..0000000 --- a/src/spatialite/src/gaiageo/gg_endian.c +++ /dev/null @@ -1,648 +0,0 @@ -/* - - gg_endian.c -- Gaia functions for litte/big endian values handling - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include - -#include - -GAIAGEO_DECLARE int -gaiaEndianArch () -{ -/* checking if target CPU is a little-endian one */ - union cvt - { - unsigned char byte[4]; - int int_value; - } convert; - convert.int_value = 1; - if (convert.byte[0] == 0) - return 0; - return 1; -} - -GAIAGEO_DECLARE short -gaiaImport16 (const unsigned char *p, int little_endian, int little_endian_arch) -{ -/* fetches a 16bit int from BLOB respecting declared endiannes */ - union cvt - { - unsigned char byte[2]; - short short_value; - } convert; - if (little_endian_arch) - { - /* Litte-Endian architecture [e.g. x86] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 1); - convert.byte[1] = *(p + 0); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - } - } - else - { - /* Big Endian architecture [e.g. PPC] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 1); - convert.byte[1] = *(p + 0); - } - } - return convert.short_value; -} - -GAIAGEO_DECLARE int -gaiaImport32 (const unsigned char *p, int little_endian, int little_endian_arch) -{ -/* fetches a 32bit int from BLOB respecting declared endiannes */ - union cvt - { - unsigned char byte[4]; - int int_value; - } convert; - if (little_endian_arch) - { - /* Litte-Endian architecture [e.g. x86] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 3); - convert.byte[1] = *(p + 2); - convert.byte[2] = *(p + 1); - convert.byte[3] = *(p + 0); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - convert.byte[2] = *(p + 2); - convert.byte[3] = *(p + 3); - } - } - else - { - /* Big Endian architecture [e.g. PPC] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - convert.byte[2] = *(p + 2); - convert.byte[3] = *(p + 3); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 3); - convert.byte[1] = *(p + 2); - convert.byte[2] = *(p + 1); - convert.byte[3] = *(p + 0); - } - } - return convert.int_value; -} - -GAIAGEO_DECLARE float -gaiaImportF32 (const unsigned char *p, int little_endian, - int little_endian_arch) -{ -/* fetches a 32bit float from BLOB respecting declared endiannes */ - union cvt - { - unsigned char byte[4]; - float flt_value; - } convert; - if (little_endian_arch) - { - /* Litte-Endian architecture [e.g. x86] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 3); - convert.byte[1] = *(p + 2); - convert.byte[2] = *(p + 1); - convert.byte[3] = *(p + 0); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - convert.byte[2] = *(p + 2); - convert.byte[3] = *(p + 3); - } - } - else - { - /* Big Endian architecture [e.g. PPC] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - convert.byte[2] = *(p + 2); - convert.byte[3] = *(p + 3); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 3); - convert.byte[1] = *(p + 2); - convert.byte[2] = *(p + 1); - convert.byte[3] = *(p + 0); - } - } - return convert.flt_value; -} - -GAIAGEO_DECLARE double -gaiaImport64 (const unsigned char *p, int little_endian, int little_endian_arch) -{ -/* fetches a 64bit double from BLOB respecting declared endiannes */ - union cvt - { - unsigned char byte[8]; - double double_value; - } convert; - if (little_endian_arch) - { -/* Litte-Endian architecture [e.g. x86] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 7); - convert.byte[1] = *(p + 6); - convert.byte[2] = *(p + 5); - convert.byte[3] = *(p + 4); - convert.byte[4] = *(p + 3); - convert.byte[5] = *(p + 2); - convert.byte[6] = *(p + 1); - convert.byte[7] = *(p + 0); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - convert.byte[2] = *(p + 2); - convert.byte[3] = *(p + 3); - convert.byte[4] = *(p + 4); - convert.byte[5] = *(p + 5); - convert.byte[6] = *(p + 6); - convert.byte[7] = *(p + 7); - } - } - else - { - /* Big Endian architecture [e.g. PPC] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - convert.byte[2] = *(p + 2); - convert.byte[3] = *(p + 3); - convert.byte[4] = *(p + 4); - convert.byte[5] = *(p + 5); - convert.byte[6] = *(p + 6); - convert.byte[7] = *(p + 7); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 7); - convert.byte[1] = *(p + 6); - convert.byte[2] = *(p + 5); - convert.byte[3] = *(p + 4); - convert.byte[4] = *(p + 3); - convert.byte[5] = *(p + 2); - convert.byte[6] = *(p + 1); - convert.byte[7] = *(p + 0); - } - } - return convert.double_value; -} - -GAIAGEO_DECLARE sqlite3_int64 -gaiaImportI64 (const unsigned char *p, int little_endian, - int little_endian_arch) -{ -/* fetches a 64bit INT from BLOB respecting declared endiannes */ - union cvt - { - unsigned char byte[8]; - sqlite3_int64 int64_value; - } convert; - if (little_endian_arch) - { -/* Litte-Endian architecture [e.g. x86] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 7); - convert.byte[1] = *(p + 6); - convert.byte[2] = *(p + 5); - convert.byte[3] = *(p + 4); - convert.byte[4] = *(p + 3); - convert.byte[5] = *(p + 2); - convert.byte[6] = *(p + 1); - convert.byte[7] = *(p + 0); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - convert.byte[2] = *(p + 2); - convert.byte[3] = *(p + 3); - convert.byte[4] = *(p + 4); - convert.byte[5] = *(p + 5); - convert.byte[6] = *(p + 6); - convert.byte[7] = *(p + 7); - } - } - else - { - /* Big Endian architecture [e.g. PPC] */ - if (!little_endian) - { - /* Big Endian data */ - convert.byte[0] = *(p + 0); - convert.byte[1] = *(p + 1); - convert.byte[2] = *(p + 2); - convert.byte[3] = *(p + 3); - convert.byte[4] = *(p + 4); - convert.byte[5] = *(p + 5); - convert.byte[6] = *(p + 6); - convert.byte[7] = *(p + 7); - } - else - { - /* Little Endian data */ - convert.byte[0] = *(p + 7); - convert.byte[1] = *(p + 6); - convert.byte[2] = *(p + 5); - convert.byte[3] = *(p + 4); - convert.byte[4] = *(p + 3); - convert.byte[5] = *(p + 2); - convert.byte[6] = *(p + 1); - convert.byte[7] = *(p + 0); - } - } - return convert.int64_value; -} - -GAIAGEO_DECLARE void -gaiaExport16 (unsigned char *p, short value, int little_endian, - int little_endian_arch) -{ -/* stores a 16bit int into a BLOB respecting declared endiannes */ - union cvt - { - unsigned char byte[2]; - short short_value; - } convert; - convert.short_value = value; - if (little_endian_arch) - { - /* Litte-Endian architecture [e.g. x86] */ - if (!little_endian) - { - /* Big Endian data */ - *(p + 1) = convert.byte[1]; - *(p + 0) = convert.byte[0]; - } - else - { - /* Little Endian data */ - *(p + 0) = convert.byte[0]; - *(p + 1) = convert.byte[1]; - } - } - else - { - /* Big Endian architecture [e.g. PPC] */ - if (!little_endian) - { - /* Big Endian data */ - *(p + 0) = convert.byte[0]; - *(p + 1) = convert.byte[1]; - } - else - { - /* Little Endian data */ - *(p + 1) = convert.byte[0]; - *(p + 0) = convert.byte[1]; - } - } -} - -GAIAGEO_DECLARE void -gaiaExport32 (unsigned char *p, int value, int little_endian, - int little_endian_arch) -{ -/* stores a 32bit int into a BLOB respecting declared endiannes */ - union cvt - { - unsigned char byte[4]; - int int_value; - } convert; - convert.int_value = value; - if (little_endian_arch) - { - /* Litte-Endian architecture [e.g. x86] */ - if (!little_endian) - { - /* Big Endian data */ - *(p + 3) = convert.byte[0]; - *(p + 2) = convert.byte[1]; - *(p + 1) = convert.byte[2]; - *(p + 0) = convert.byte[3]; - } - else - { - /* Little Endian data */ - *(p + 0) = convert.byte[0]; - *(p + 1) = convert.byte[1]; - *(p + 2) = convert.byte[2]; - *(p + 3) = convert.byte[3]; - } - } - else - { - /* Big Endian architecture [e.g. PPC] */ - if (!little_endian) - { - /* Big Endian data */ - *(p + 0) = convert.byte[0]; - *(p + 1) = convert.byte[1]; - *(p + 2) = convert.byte[2]; - *(p + 3) = convert.byte[3]; - } - else - { - /* Little Endian data */ - *(p + 3) = convert.byte[0]; - *(p + 2) = convert.byte[1]; - *(p + 1) = convert.byte[2]; - *(p + 0) = convert.byte[3]; - } - } -} - -GAIAGEO_DECLARE void -gaiaExportF32 (unsigned char *p, float value, int little_endian, - int little_endian_arch) -{ -/* stores a 32bit float into a BLOB respecting declared endiannes */ - union cvt - { - unsigned char byte[4]; - float flt_value; - } convert; - convert.flt_value = value; - if (little_endian_arch) - { - /* Litte-Endian architecture [e.g. x86] */ - if (!little_endian) - { - /* Big Endian data */ - *(p + 3) = convert.byte[0]; - *(p + 2) = convert.byte[1]; - *(p + 1) = convert.byte[2]; - *(p + 0) = convert.byte[3]; - } - else - { - /* Little Endian data */ - *(p + 0) = convert.byte[0]; - *(p + 1) = convert.byte[1]; - *(p + 2) = convert.byte[2]; - *(p + 3) = convert.byte[3]; - } - } - else - { - /* Big Endian architecture [e.g. PPC] */ - if (!little_endian) - { - /* Big Endian data */ - *(p + 0) = convert.byte[0]; - *(p + 1) = convert.byte[1]; - *(p + 2) = convert.byte[2]; - *(p + 3) = convert.byte[3]; - } - else - { - /* Little Endian data */ - *(p + 3) = convert.byte[0]; - *(p + 2) = convert.byte[1]; - *(p + 1) = convert.byte[2]; - *(p + 0) = convert.byte[3]; - } - } -} - -GAIAGEO_DECLARE void -gaiaExport64 (unsigned char *p, double value, int little_endian, - int little_endian_arch) -{ -/* stores a 64bit double into a BLOB respecting declared endiannes */ - union cvt - { - unsigned char byte[8]; - double double_value; - } convert; - convert.double_value = value; - if (little_endian_arch) - { -/* Litte-Endian architecture [e.g. x86] */ - if (!little_endian) - { - /* Big Endian data */ - *(p + 7) = convert.byte[0]; - *(p + 6) = convert.byte[1]; - *(p + 5) = convert.byte[2]; - *(p + 4) = convert.byte[3]; - *(p + 3) = convert.byte[4]; - *(p + 2) = convert.byte[5]; - *(p + 1) = convert.byte[6]; - *(p + 0) = convert.byte[7]; - } - else - { - /* Little Endian data */ - *(p + 0) = convert.byte[0]; - *(p + 1) = convert.byte[1]; - *(p + 2) = convert.byte[2]; - *(p + 3) = convert.byte[3]; - *(p + 4) = convert.byte[4]; - *(p + 5) = convert.byte[5]; - *(p + 6) = convert.byte[6]; - *(p + 7) = convert.byte[7]; - } - } - else - { - /* Big Endian architecture [e.g. PPC] */ - if (!little_endian) - { - /* Big Endian data */ - *(p + 0) = convert.byte[0]; - *(p + 1) = convert.byte[1]; - *(p + 2) = convert.byte[2]; - *(p + 3) = convert.byte[3]; - *(p + 4) = convert.byte[4]; - *(p + 5) = convert.byte[5]; - *(p + 6) = convert.byte[6]; - *(p + 7) = convert.byte[7]; - } - else - { - /* Little Endian data */ - *(p + 7) = convert.byte[0]; - *(p + 6) = convert.byte[1]; - *(p + 5) = convert.byte[2]; - *(p + 4) = convert.byte[3]; - *(p + 3) = convert.byte[4]; - *(p + 2) = convert.byte[5]; - *(p + 1) = convert.byte[6]; - *(p + 0) = convert.byte[7]; - } - } -} - -GAIAGEO_DECLARE void -gaiaExportI64 (unsigned char *p, sqlite3_int64 value, int little_endian, - int little_endian_arch) -{ -/* stores a 64bit INT into a BLOB respecting declared endiannes */ - union cvt - { - unsigned char byte[8]; - sqlite3_int64 int64_value; - } convert; - convert.int64_value = value; - if (little_endian_arch) - { -/* Litte-Endian architecture [e.g. x86] */ - if (!little_endian) - { - /* Big Endian data */ - *(p + 7) = convert.byte[0]; - *(p + 6) = convert.byte[1]; - *(p + 5) = convert.byte[2]; - *(p + 4) = convert.byte[3]; - *(p + 3) = convert.byte[4]; - *(p + 2) = convert.byte[5]; - *(p + 1) = convert.byte[6]; - *(p + 0) = convert.byte[7]; - } - else - { - /* Little Endian data */ - *(p + 0) = convert.byte[0]; - *(p + 1) = convert.byte[1]; - *(p + 2) = convert.byte[2]; - *(p + 3) = convert.byte[3]; - *(p + 4) = convert.byte[4]; - *(p + 5) = convert.byte[5]; - *(p + 6) = convert.byte[6]; - *(p + 7) = convert.byte[7]; - } - } - else - { - /* Big Endian architecture [e.g. PPC] */ - if (!little_endian) - { - /* Big Endian data */ - *(p + 0) = convert.byte[0]; - *(p + 1) = convert.byte[1]; - *(p + 2) = convert.byte[2]; - *(p + 3) = convert.byte[3]; - *(p + 4) = convert.byte[4]; - *(p + 5) = convert.byte[5]; - *(p + 6) = convert.byte[6]; - *(p + 7) = convert.byte[7]; - } - else - { - /* Little Endian data */ - *(p + 7) = convert.byte[0]; - *(p + 6) = convert.byte[1]; - *(p + 5) = convert.byte[2]; - *(p + 4) = convert.byte[3]; - *(p + 3) = convert.byte[4]; - *(p + 2) = convert.byte[5]; - *(p + 1) = convert.byte[6]; - *(p + 0) = convert.byte[7]; - } - } -} diff --git a/src/spatialite/src/gaiageo/gg_ewkt.c b/src/spatialite/src/gaiageo/gg_ewkt.c deleted file mode 100644 index b85406c..0000000 --- a/src/spatialite/src/gaiageo/gg_ewkt.c +++ /dev/null @@ -1,2092 +0,0 @@ -/* - - gg_ewkt.c -- EWKT parser/lexer - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011-2012 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include - -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include -#include - -#include - -#ifdef _WIN32 -#define strcasecmp _stricmp -#define strncasecmp _strnicmp -#define atoll _atoi64 -#endif /* not WIN32 */ - -#if defined(_WIN32) || defined(WIN32) -#include -#ifndef isatty -#define isatty _isatty -#endif -#ifndef fileno -#define fileno _fileno -#endif -#endif - -#define EWKT_DYN_NONE 0 -#define EWKT_DYN_POINT 1 -#define EWKT_DYN_LINESTRING 2 -#define EWKT_DYN_POLYGON 3 -#define EWKT_DYN_RING 4 -#define EWKT_DYN_GEOMETRY 5 - -#define EWKT_DYN_BLOCK 1024 - -struct ewkt_dyn_block -{ -/* a struct taking trace of dynamic allocations */ - int type[EWKT_DYN_BLOCK]; - void *ptr[EWKT_DYN_BLOCK]; - int index; - struct ewkt_dyn_block *next; -}; - -struct ewkt_data -{ -/* a struct used to make the lexer-parser reentrant and thread-safe */ - int ewkt_parse_error; - int ewkt_line; - int ewkt_col; - struct ewkt_dyn_block *ewkt_first_dyn_block; - struct ewkt_dyn_block *ewkt_last_dyn_block; - gaiaGeomCollPtr result; -}; - -static struct ewkt_dyn_block * -ewktCreateDynBlock (void) -{ -/* allocating a new block to trace dynamic allocations */ - int i; - struct ewkt_dyn_block *p = malloc (sizeof (struct ewkt_dyn_block)); - for (i = 0; i < EWKT_DYN_BLOCK; i++) - { - /* initializing map entries */ - p->type[i] = EWKT_DYN_NONE; - p->ptr[i] = NULL; - } - p->index = 0; - p->next = NULL; - return p; -} - -static void -ewktMapDynAlloc (struct ewkt_data *p_data, int type, void *ptr) -{ -/* appending a dynamic allocation into the map */ - struct ewkt_dyn_block *p; - if (p_data->ewkt_first_dyn_block == NULL) - { - /* inserting the first block of the map */ - p = ewktCreateDynBlock (); - p_data->ewkt_first_dyn_block = p; - p_data->ewkt_last_dyn_block = p; - } - if (p_data->ewkt_last_dyn_block->index >= EWKT_DYN_BLOCK) - { - /* adding a further block to the map */ - p = ewktCreateDynBlock (); - p_data->ewkt_last_dyn_block->next = p; - p_data->ewkt_last_dyn_block = p; - } - p_data->ewkt_last_dyn_block->type[p_data->ewkt_last_dyn_block->index] = - type; - p_data->ewkt_last_dyn_block->ptr[p_data->ewkt_last_dyn_block->index] = ptr; - p_data->ewkt_last_dyn_block->index++; -} - -static void -ewktMapDynClean (struct ewkt_data *p_data, void *ptr) -{ -/* deleting a dynamic allocation from the map */ - int i; - struct ewkt_dyn_block *p = p_data->ewkt_first_dyn_block; - while (p) - { - for (i = 0; i < EWKT_DYN_BLOCK; i++) - { - switch (p->type[i]) - { - case EWKT_DYN_POINT: - case EWKT_DYN_LINESTRING: - case EWKT_DYN_POLYGON: - case EWKT_DYN_RING: - case EWKT_DYN_GEOMETRY: - if (p->ptr[i] == ptr) - { - p->type[i] = EWKT_DYN_NONE; - return; - } - break; - }; - } - p = p->next; - } -} - -static void -ewktCleanMapDynAlloc (struct ewkt_data *p_data, int clean_all) -{ -/* cleaning the dynamic allocations map */ - int i; - struct ewkt_dyn_block *pn; - struct ewkt_dyn_block *p = p_data->ewkt_first_dyn_block; - while (p) - { - if (clean_all) - { - for (i = 0; i < EWKT_DYN_BLOCK; i++) - { - /* deleting Geometry objects */ - switch (p->type[i]) - { - case EWKT_DYN_POINT: - gaiaFreePoint ((gaiaPointPtr) (p->ptr[i])); - break; - case EWKT_DYN_LINESTRING: - gaiaFreeLinestring ((gaiaLinestringPtr) - (p->ptr[i])); - break; - case EWKT_DYN_POLYGON: - gaiaFreePolygon ((gaiaPolygonPtr) (p->ptr[i])); - break; - case EWKT_DYN_RING: - gaiaFreeRing ((gaiaRingPtr) (p->ptr[i])); - break; - case EWKT_DYN_GEOMETRY: - gaiaFreeGeomColl ((gaiaGeomCollPtr) (p->ptr[i])); - break; - }; - } - } - /* deleting the map block */ - pn = p->next; - free (p); - p = pn; - } -} - -static int -ewktCheckValidity (gaiaGeomCollPtr geom) -{ -/* checks if this one is a degenerated geometry */ - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - int ib; - int entities = 0; - pt = geom->FirstPoint; - while (pt) - { - /* checking points */ - entities++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - /* checking linestrings */ - if (ln->Points < 2) - return 0; - entities++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - /* checking polygons */ - rng = pg->Exterior; - if (rng->Points < 4) - return 0; - for (ib = 0; ib < pg->NumInteriors; ib++) - { - rng = pg->Interiors + ib; - if (rng->Points < 4) - return 0; - } - entities++; - pg = pg->Next; - } - if (!entities) - return 0; - return 1; -} - -static gaiaGeomCollPtr -gaiaEwktGeometryFromPoint (struct ewkt_data *p_data, gaiaPointPtr point) -{ -/* builds a GEOMETRY containing a POINT */ - gaiaGeomCollPtr geom = NULL; - geom = gaiaAllocGeomColl (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_POINT; - gaiaAddPointToGeomColl (geom, point->X, point->Y); - ewktMapDynClean (p_data, point); - gaiaFreePoint (point); - return geom; -} - -static gaiaGeomCollPtr -gaiaEwktGeometryFromPointZ (struct ewkt_data *p_data, gaiaPointPtr point) -{ -/* builds a GEOMETRY containing a POINTZ */ - gaiaGeomCollPtr geom = NULL; - geom = gaiaAllocGeomCollXYZ (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_POINTZ; - gaiaAddPointToGeomCollXYZ (geom, point->X, point->Y, point->Z); - ewktMapDynClean (p_data, point); - gaiaFreePoint (point); - return geom; -} - -static gaiaGeomCollPtr -gaiaEwktGeometryFromPointM (struct ewkt_data *p_data, gaiaPointPtr point) -{ -/* builds a GEOMETRY containing a POINTM */ - gaiaGeomCollPtr geom = NULL; - geom = gaiaAllocGeomCollXYM (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_POINTM; - gaiaAddPointToGeomCollXYM (geom, point->X, point->Y, point->M); - ewktMapDynClean (p_data, point); - gaiaFreePoint (point); - return geom; -} - -static gaiaGeomCollPtr -gaiaEwktGeometryFromPointZM (struct ewkt_data *p_data, gaiaPointPtr point) -{ -/* builds a GEOMETRY containing a POINTZM */ - gaiaGeomCollPtr geom = NULL; - geom = gaiaAllocGeomCollXYZM (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_POINTZM; - gaiaAddPointToGeomCollXYZM (geom, point->X, point->Y, point->Z, point->M); - ewktMapDynClean (p_data, point); - gaiaFreePoint (point); - return geom; -} - -static gaiaGeomCollPtr -gaiaEwktGeometryFromLinestring (struct ewkt_data *p_data, - gaiaLinestringPtr line) -{ -/* builds a GEOMETRY containing a LINESTRING */ - gaiaGeomCollPtr geom = NULL; - gaiaLinestringPtr line2; - int iv; - double x; - double y; - geom = gaiaAllocGeomColl (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_LINESTRING; - line2 = gaiaAddLinestringToGeomColl (geom, line->Points); - for (iv = 0; iv < line2->Points; iv++) - { - /* sets the POINTS for the exterior ring */ - gaiaGetPoint (line->Coords, iv, &x, &y); - gaiaSetPoint (line2->Coords, iv, x, y); - } - ewktMapDynClean (p_data, line); - gaiaFreeLinestring (line); - return geom; -} - -static gaiaGeomCollPtr -gaiaEwktGeometryFromLinestringZ (struct ewkt_data *p_data, - gaiaLinestringPtr line) -{ -/* builds a GEOMETRY containing a LINESTRINGZ */ - gaiaGeomCollPtr geom = NULL; - gaiaLinestringPtr line2; - int iv; - double x; - double y; - double z; - geom = gaiaAllocGeomCollXYZ (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_LINESTRING; - line2 = gaiaAddLinestringToGeomColl (geom, line->Points); - for (iv = 0; iv < line2->Points; iv++) - { - /* sets the POINTS for the exterior ring */ - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (line2->Coords, iv, x, y, z); - } - ewktMapDynClean (p_data, line); - gaiaFreeLinestring (line); - return geom; -} - - -static gaiaGeomCollPtr -gaiaEwktGeometryFromLinestringM (struct ewkt_data *p_data, - gaiaLinestringPtr line) -{ -/* builds a GEOMETRY containing a LINESTRINGM */ - gaiaGeomCollPtr geom = NULL; - gaiaLinestringPtr line2; - int iv; - double x; - double y; - double m; - geom = gaiaAllocGeomCollXYM (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_LINESTRING; - line2 = gaiaAddLinestringToGeomColl (geom, line->Points); - for (iv = 0; iv < line2->Points; iv++) - { - /* sets the POINTS for the exterior ring */ - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (line2->Coords, iv, x, y, m); - } - ewktMapDynClean (p_data, line); - gaiaFreeLinestring (line); - return geom; -} - -static gaiaGeomCollPtr -gaiaEwktGeometryFromLinestringZM (struct ewkt_data *p_data, - gaiaLinestringPtr line) -{ -/* builds a GEOMETRY containing a LINESTRINGZM */ - gaiaGeomCollPtr geom = NULL; - gaiaLinestringPtr line2; - int iv; - double x; - double y; - double z; - double m; - geom = gaiaAllocGeomCollXYZM (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_LINESTRING; - line2 = gaiaAddLinestringToGeomColl (geom, line->Points); - for (iv = 0; iv < line2->Points; iv++) - { - /* sets the POINTS for the exterior ring */ - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (line2->Coords, iv, x, y, z, m); - } - ewktMapDynClean (p_data, line); - gaiaFreeLinestring (line); - return geom; -} - -static gaiaPointPtr -ewkt_point_xy (struct ewkt_data *p_data, double *x, double *y) -{ - gaiaPointPtr pt = gaiaAllocPoint (*x, *y); - ewktMapDynAlloc (p_data, EWKT_DYN_POINT, pt); - return pt; -} - -/* - * Creates a 3D (xyz) point in SpatiaLite - * x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. - * Returns a gaiaPointPtr representing the created point. - * - * Creates a 3D (xyz) point. This is a parser helper function which is called when 3D coordinates are encountered. - * Parameters x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. - * Returns a gaiaPointPtr pointing to the 3D created point. - */ -static gaiaPointPtr -ewkt_point_xyz (struct ewkt_data *p_data, double *x, double *y, double *z) -{ - gaiaPointPtr pt = gaiaAllocPointXYZ (*x, *y, *z); - ewktMapDynAlloc (p_data, EWKT_DYN_POINT, pt); - return pt; -} - -/* - * Creates a 2D (xy) point with an m value which is a part of the linear reference system. This is a parser helper - * function which is called when 2D *coordinates with an m value are encountered. - * Parameters x and y are pointers to doubles which represent the x and y coordinates of the point to be created. - * Parameter m is a pointer to a double which represents the part of the linear reference system. - * Returns a gaiaPointPtr pointing to the created 2D point with an m value. - */ -static gaiaPointPtr -ewkt_point_xym (struct ewkt_data *p_data, double *x, double *y, double *m) -{ - gaiaPointPtr pt = gaiaAllocPointXYM (*x, *y, *m); - ewktMapDynAlloc (p_data, EWKT_DYN_POINT, pt); - return pt; -} - -/* - * Creates a 4D (xyz) point with an m value which is a part of the linear reference system. This is a parser helper - * function which is called when *4Dcoordinates with an m value are encountered - * Parameters x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. - * Parameter m is a pointer to a double which represents the part of the linear reference system. - * Returns a gaiaPointPtr pointing the created 4D point with an m value. - */ -gaiaPointPtr -ewkt_point_xyzm (struct ewkt_data * p_data, double *x, double *y, double *z, - double *m) -{ - gaiaPointPtr pt = gaiaAllocPointXYZM (*x, *y, *z, *m); - ewktMapDynAlloc (p_data, EWKT_DYN_POINT, pt); - return pt; -} - -/* - * Builds a geometry collection from a point. The geometry collection should contain only one element ? the point. - * The correct geometry type must be *decided based on the point type. The parser should call this function when the - * ?POINT? WKT expression is encountered. - * Parameter point is a pointer to a 2D, 3D, 2D with an m value, or 4D with an m value point. - * Returns a geometry collection containing the point. The geometry must have FirstPoint and LastPoint pointing to the - * same place as point. *DimensionModel must be the same as the model of the point and DimensionType must be GAIA_TYPE_POINT. - */ -static gaiaGeomCollPtr -ewkt_buildGeomFromPoint (struct ewkt_data *p_data, gaiaPointPtr point) -{ - switch (point->DimensionModel) - { - case GAIA_XY: - return gaiaEwktGeometryFromPoint (p_data, point); - case GAIA_XY_Z: - return gaiaEwktGeometryFromPointZ (p_data, point); - case GAIA_XY_M: - return gaiaEwktGeometryFromPointM (p_data, point); - case GAIA_XY_Z_M: - return gaiaEwktGeometryFromPointZM (p_data, point); - } - return NULL; -} - -/* - * Creates a 2D (xy) linestring from a list of 2D points. - * - * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. - * All of the points in the list must be 2D (xy) points. There must be at least 2 points in the list. - * - * Returns a pointer to linestring containing all of the points in the list. - */ -static gaiaLinestringPtr -ewkt_linestring_xy (struct ewkt_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - int points = 0; - int i = 0; - gaiaLinestringPtr linestring; - - while (p != NULL) - { - p = p->Next; - points++; - } - - linestring = gaiaAllocLinestring (points); - ewktMapDynAlloc (p_data, EWKT_DYN_LINESTRING, linestring); - - p = first; - while (p != NULL) - { - gaiaSetPoint (linestring->Coords, i, p->X, p->Y); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - i++; - } - - return linestring; -} - -/* - * Creates a 3D (xyz) linestring from a list of 3D points. - * - * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. - * All of the points in the list must be 3D (xyz) points. There must be at least 2 points in the list. - * - * Returns a pointer to linestring containing all of the points in the list. - */ -static gaiaLinestringPtr -ewkt_linestring_xyz (struct ewkt_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - int points = 0; - int i = 0; - gaiaLinestringPtr linestring; - - while (p != NULL) - { - p = p->Next; - points++; - } - - linestring = gaiaAllocLinestringXYZ (points); - ewktMapDynAlloc (p_data, EWKT_DYN_LINESTRING, linestring); - - p = first; - while (p != NULL) - { - gaiaSetPointXYZ (linestring->Coords, i, p->X, p->Y, p->Z); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - i++; - } - - return linestring; -} - -/* - * Creates a 2D (xy) with m value linestring from a list of 2D with m value points. - * - * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. - * All of the points in the list must be 2D (xy) with m value points. There must be at least 2 points in the list. - * - * Returns a pointer to linestring containing all of the points in the list. - */ -static gaiaLinestringPtr -ewkt_linestring_xym (struct ewkt_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - int points = 0; - int i = 0; - gaiaLinestringPtr linestring; - - while (p != NULL) - { - p = p->Next; - points++; - } - - linestring = gaiaAllocLinestringXYM (points); - ewktMapDynAlloc (p_data, EWKT_DYN_LINESTRING, linestring); - - p = first; - while (p != NULL) - { - gaiaSetPointXYM (linestring->Coords, i, p->X, p->Y, p->M); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - i++; - } - - return linestring; -} - -/* - * Creates a 4D (xyz) with m value linestring from a list of 4D with m value points. - * - * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. - * All of the points in the list must be 4D (xyz) with m value points. There must be at least 2 points in the list. - * - * Returns a pointer to linestring containing all of the points in the list. - */ -static gaiaLinestringPtr -ewkt_linestring_xyzm (struct ewkt_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - int points = 0; - int i = 0; - gaiaLinestringPtr linestring; - - while (p != NULL) - { - p = p->Next; - points++; - } - - linestring = gaiaAllocLinestringXYZM (points); - ewktMapDynAlloc (p_data, EWKT_DYN_LINESTRING, linestring); - - p = first; - while (p != NULL) - { - gaiaSetPointXYZM (linestring->Coords, i, p->X, p->Y, p->Z, p->M); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - i++; - } - - return linestring; -} - -/* - * Builds a geometry collection from a linestring. - */ -static gaiaGeomCollPtr -ewkt_buildGeomFromLinestring (struct ewkt_data *p_data, gaiaLinestringPtr line) -{ - switch (line->DimensionModel) - { - case GAIA_XY: - return gaiaEwktGeometryFromLinestring (p_data, line); - case GAIA_XY_Z: - return gaiaEwktGeometryFromLinestringZ (p_data, line); - case GAIA_XY_M: - return gaiaEwktGeometryFromLinestringM (p_data, line); - case GAIA_XY_Z_M: - return gaiaEwktGeometryFromLinestringZM (p_data, line); - } - return NULL; -} - -/* - * Helper function that determines the number of points in the linked list. - */ -static int -ewkt_count_points (gaiaPointPtr first) -{ - /* Counts the number of points in the ring. */ - gaiaPointPtr p = first; - int numpoints = 0; - while (p != NULL) - { - numpoints++; - p = p->Next; - } - return numpoints; -} - -/* - * Creates a 2D (xy) ring in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. - * All of the points given to the function are 2D (xy) points. There will be at least 4 points in the list. - * - * Returns the ring defined by the points given to the function. - */ -static gaiaRingPtr -ewkt_ring_xy (struct ewkt_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaRingPtr ring = NULL; - int numpoints; - int index; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Counts the number of points in the ring. */ - numpoints = ewkt_count_points (first); - if (numpoints < 4) - return NULL; - - /* Creates and allocates a ring structure. */ - ring = gaiaAllocRing (numpoints); - if (ring == NULL) - return NULL; - ewktMapDynAlloc (p_data, EWKT_DYN_RING, ring); - - /* Adds every point into the ring structure. */ - p = first; - for (index = 0; index < numpoints; index++) - { - gaiaSetPoint (ring->Coords, index, p->X, p->Y); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - - return ring; -} - -/* - * Creates a 3D (xyz) ring in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. - * All of the points given to the function are 3D (xyz) points. There will be at least 4 points in the list. - * - * Returns the ring defined by the points given to the function. - */ -static gaiaRingPtr -ewkt_ring_xyz (struct ewkt_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaRingPtr ring = NULL; - int numpoints; - int index; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Counts the number of points in the ring. */ - numpoints = ewkt_count_points (first); - if (numpoints < 4) - return NULL; - - /* Creates and allocates a ring structure. */ - ring = gaiaAllocRingXYZ (numpoints); - if (ring == NULL) - return NULL; - ewktMapDynAlloc (p_data, EWKT_DYN_RING, ring); - - /* Adds every point into the ring structure. */ - p = first; - for (index = 0; index < numpoints; index++) - { - gaiaSetPointXYZ (ring->Coords, index, p->X, p->Y, p->Z); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - - return ring; -} - -/* - * Creates a 2D (xym) ring in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. - * All of the points given to the function are 2D (xym) points. There will be at least 4 points in the list. - * - * Returns the ring defined by the points given to the function. - */ -static gaiaRingPtr -ewkt_ring_xym (struct ewkt_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaRingPtr ring = NULL; - int numpoints; - int index; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Counts the number of points in the ring. */ - numpoints = ewkt_count_points (first); - if (numpoints < 4) - return NULL; - - /* Creates and allocates a ring structure. */ - ring = gaiaAllocRingXYM (numpoints); - if (ring == NULL) - return NULL; - ewktMapDynAlloc (p_data, EWKT_DYN_RING, ring); - - /* Adds every point into the ring structure. */ - p = first; - for (index = 0; index < numpoints; index++) - { - gaiaSetPointXYM (ring->Coords, index, p->X, p->Y, p->M); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - - return ring; -} - -/* - * Creates a 3D (xyzm) ring in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. - * All of the points given to the function are 3D (xyzm) points. There will be at least 4 points in the list. - * - * Returns the ring defined by the points given to the function. - */ -static gaiaRingPtr -ewkt_ring_xyzm (struct ewkt_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaRingPtr ring = NULL; - int numpoints; - int index; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Counts the number of points in the ring. */ - numpoints = ewkt_count_points (first); - if (numpoints < 4) - return NULL; - - /* Creates and allocates a ring structure. */ - ring = gaiaAllocRingXYZM (numpoints); - if (ring == NULL) - return NULL; - ewktMapDynAlloc (p_data, EWKT_DYN_RING, ring); - - /* Adds every point into the ring structure. */ - p = first; - for (index = 0; index < numpoints; index++) - { - gaiaSetPointXYZM (ring->Coords, index, p->X, p->Y, p->Z, p->M); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - - return ring; -} - -/* - * Helper function that will create any type of polygon (xy, xym, xyz, xyzm) in SpatiaLite. - * - * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. - * The first ring in the linked list is the external ring while the rest (if any) are internal rings. - * All of the rings given to the function are of the same type. There will be at least 1 ring in the list. - * - * Returns the polygon defined by the rings given to the function. - */ -static gaiaPolygonPtr -ewkt_polygon_any_type (struct ewkt_data *p_data, gaiaRingPtr first) -{ - gaiaRingPtr p; - gaiaRingPtr p_n; - gaiaPolygonPtr polygon; - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Creates and allocates a polygon structure with the exterior ring. */ - polygon = gaiaCreatePolygon (first); - if (polygon == NULL) - return NULL; - ewktMapDynAlloc (p_data, EWKT_DYN_POLYGON, polygon); - - /* Adds all interior rings into the polygon structure. */ - p = first; - while (p != NULL) - { - p_n = p->Next; - ewktMapDynClean (p_data, p); - if (p == first) - gaiaFreeRing (p); - else - gaiaAddRingToPolyg (polygon, p); - p = p_n; - } - - return polygon; -} - -/* - * Creates a 2D (xy) polygon in SpatiaLite - * - * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. - * The first ring in the linked list is the external ring while the rest (if any) are internal rings. - * All of the rings given to the function are 2D (xy) rings. There will be at least 1 ring in the list. - * - * Returns the polygon defined by the rings given to the function. - */ -static gaiaPolygonPtr -ewkt_polygon_xy (struct ewkt_data *p_data, gaiaRingPtr first) -{ - return ewkt_polygon_any_type (p_data, first); -} - -/* - * Creates a 3D (xyz) polygon in SpatiaLite - * - * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. - * The first ring in the linked list is the external ring while the rest (if any) are internal rings. - * All of the rings given to the function are 3D (xyz) rings. There will be at least 1 ring in the list. - * - * Returns the polygon defined by the rings given to the function. - */ -static gaiaPolygonPtr -ewkt_polygon_xyz (struct ewkt_data *p_data, gaiaRingPtr first) -{ - return ewkt_polygon_any_type (p_data, first); -} - -/* - * Creates a 2D (xym) polygon in SpatiaLite - * - * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. - * The first ring in the linked list is the external ring while the rest (if any) are internal rings. - * All of the rings given to the function are 2D (xym) rings. There will be at least 1 ring in the list. - * - * Returns the polygon defined by the rings given to the function. - */ -static gaiaPolygonPtr -ewkt_polygon_xym (struct ewkt_data *p_data, gaiaRingPtr first) -{ - return ewkt_polygon_any_type (p_data, first); -} - -/* - * Creates a 3D (xyzm) polygon in SpatiaLite - * - * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. - * The first ring in the linked list is the external ring while the rest (if any) are internal rings. - * All of the rings given to the function are 3D (xyzm) rings. There will be at least 1 ring in the list. - * - * Returns the polygon defined by the rings given to the function. - */ -static gaiaPolygonPtr -ewkt_polygon_xyzm (struct ewkt_data *p_data, gaiaRingPtr first) -{ - return ewkt_polygon_any_type (p_data, first); -} - -/* - * Builds a geometry collection from a polygon. - * NOTE: This function may already be implemented in the SpatiaLite code base. If it is, make sure that we - * can use it (ie. it doesn't use any other variables or anything else set by Sandro's parser). If you find - * that we can use an existing function then ignore this one. - */ -static gaiaGeomCollPtr -ewkt_buildGeomFromPolygon (struct ewkt_data *p_data, gaiaPolygonPtr polygon) -{ - gaiaGeomCollPtr geom = NULL; - - /* If no pointers are given, return. */ - if (polygon == NULL) - { - return NULL; - } - - /* Creates and allocates a geometry collection containing a multipoint. */ - switch (polygon->DimensionModel) - { - case GAIA_XY: - geom = gaiaAllocGeomColl (); - break; - case GAIA_XY_Z: - geom = gaiaAllocGeomCollXYZ (); - break; - case GAIA_XY_M: - geom = gaiaAllocGeomCollXYM (); - break; - case GAIA_XY_Z_M: - geom = gaiaAllocGeomCollXYZM (); - break; - } - if (geom == NULL) - { - return NULL; - } - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_POLYGON; - - /* Stores the location of the first and last polygons in the linked list. */ - geom->FirstPolygon = polygon; - while (polygon != NULL) - { - ewktMapDynClean (p_data, polygon); - geom->LastPolygon = polygon; - polygon = polygon->Next; - } - return geom; -} - -/* - * Creates a 2D (xy) multipoint object in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points. - * All of the points given to the function are 2D (xy) points. There will be at least 1 point in the list. - * - * Returns a geometry collection containing the created multipoint object. - */ -static gaiaGeomCollPtr -ewkt_multipoint_xy (struct ewkt_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaGeomCollPtr geom = NULL; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Creates and allocates a geometry collection containing a multipoint. */ - geom = gaiaAllocGeomColl (); - if (geom == NULL) - return NULL; - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_MULTIPOINT; - - /* For every 2D (xy) point, add it to the geometry collection. */ - while (p != NULL) - { - gaiaAddPointToGeomColl (geom, p->X, p->Y); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - return geom; -} - -/* - * Creates a 3D (xyz) multipoint object in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points. - * All of the points given to the function are 3D (xyz) points. There will be at least 1 point in the list. - * - * Returns a geometry collection containing the created multipoint object. - */ -static gaiaGeomCollPtr -ewkt_multipoint_xyz (struct ewkt_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaGeomCollPtr geom = NULL; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Creates and allocates a geometry collection containing a multipoint. */ - geom = gaiaAllocGeomCollXYZ (); - if (geom == NULL) - return NULL; - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_MULTIPOINT; - - /* For every 3D (xyz) point, add it to the geometry collection. */ - while (p != NULL) - { - gaiaAddPointToGeomCollXYZ (geom, p->X, p->Y, p->Z); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - return geom; -} - -/* - * Creates a 2D (xym) multipoint object in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points. - * All of the points given to the function are 2D (xym) points. There will be at least 1 point in the list. - * - * Returns a geometry collection containing the created multipoint object. - */ -static gaiaGeomCollPtr -ewkt_multipoint_xym (struct ewkt_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaGeomCollPtr geom = NULL; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Creates and allocates a geometry collection containing a multipoint. */ - geom = gaiaAllocGeomCollXYM (); - if (geom == NULL) - return NULL; - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_MULTIPOINT; - - /* For every 2D (xym) point, add it to the geometry collection. */ - while (p != NULL) - { - gaiaAddPointToGeomCollXYM (geom, p->X, p->Y, p->M); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - return geom; -} - -/* - * Creates a 3D (xyzm) multipoint object in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. - * All of the points given to the function are 3D (xyzm) points. There will be at least 1 point in the list. - * - * Returns a geometry collection containing the created multipoint object. - */ -static gaiaGeomCollPtr -ewkt_multipoint_xyzm (struct ewkt_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaGeomCollPtr geom = NULL; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Creates and allocates a geometry collection containing a multipoint. */ - geom = gaiaAllocGeomCollXYZM (); - if (geom == NULL) - return NULL; - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_MULTIPOINT; - - /* For every 3D (xyzm) point, add it to the geometry collection. */ - while (p != NULL) - { - gaiaAddPointToGeomCollXYZM (geom, p->X, p->Y, p->Z, p->M); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - return geom; -} - -/* - * Creates a geometry collection containing 2D (xy) linestrings. - * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the - * collection. All of the *linestrings in the list must be 2D (xy) linestrings. There must be at least 1 linestring in the list. - * Returns a pointer to the created geometry collection of 2D linestrings. The geometry must have FirstLinestring pointing to the - * first linestring in the list pointed by first and LastLinestring pointing to the last element of the same list. DimensionModel - * must be GAIA_XY and DimensionType must be *GAIA_TYPE_LINESTRING. - */ - -static gaiaGeomCollPtr -ewkt_multilinestring_xy (struct ewkt_data *p_data, gaiaLinestringPtr first) -{ - gaiaLinestringPtr p = first; - gaiaLinestringPtr p_n; - gaiaLinestringPtr new_line; - gaiaGeomCollPtr a = gaiaAllocGeomColl (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, a); - a->DeclaredType = GAIA_MULTILINESTRING; - a->DimensionModel = GAIA_XY; - - while (p) - { - new_line = gaiaAddLinestringToGeomColl (a, p->Points); - gaiaCopyLinestringCoords (new_line, p); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreeLinestring (p); - p = p_n; - } - - return a; -} - -/* - * Returns a geometry collection containing the created multilinestring object (?). - * Creates a geometry collection containing 3D (xyz) linestrings. - * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the - * collection. All of the *linestrings in the list must be 3D (xyz) linestrings. There must be at least 1 linestring in the list. - * Returns a pointer to the created geometry collection of 3D linestrings. The geometry must have FirstLinestring pointing to the - * first linestring in the *list pointed by first and LastLinestring pointing to the last element of the same list. DimensionModel - * must be GAIA_XYZ and DimensionType must be *GAIA_TYPE_LINESTRING. - */ -static gaiaGeomCollPtr -ewkt_multilinestring_xyz (struct ewkt_data *p_data, gaiaLinestringPtr first) -{ - gaiaLinestringPtr p = first; - gaiaLinestringPtr p_n; - gaiaLinestringPtr new_line; - gaiaGeomCollPtr a = gaiaAllocGeomCollXYZ (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, a); - a->DeclaredType = GAIA_MULTILINESTRING; - a->DimensionModel = GAIA_XY_Z; - - while (p) - { - new_line = gaiaAddLinestringToGeomColl (a, p->Points); - gaiaCopyLinestringCoords (new_line, p); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreeLinestring (p); - p = p_n; - } - return a; -} - -/* - * Creates a geometry collection containing 2D (xy) with m value linestrings. - * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the - * collection. All of the *linestrings in the list must be 2D (xy) with m value linestrings. There must be at least 1 linestring - * in the list. - * Returns a pointer to the created geometry collection of 2D with m value linestrings. The geometry must have FirstLinestring - * pointing to the first *linestring in the list pointed by first and LastLinestring pointing to the last element of the same list. - * DimensionModel must be GAIA_XYM and *DimensionType must be GAIA_TYPE_LINESTRING. - */ -static gaiaGeomCollPtr -ewkt_multilinestring_xym (struct ewkt_data *p_data, gaiaLinestringPtr first) -{ - gaiaLinestringPtr p = first; - gaiaLinestringPtr p_n; - gaiaLinestringPtr new_line; - gaiaGeomCollPtr a = gaiaAllocGeomCollXYM (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, a); - a->DeclaredType = GAIA_MULTILINESTRING; - a->DimensionModel = GAIA_XY_M; - - while (p) - { - new_line = gaiaAddLinestringToGeomColl (a, p->Points); - gaiaCopyLinestringCoords (new_line, p); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreeLinestring (p); - p = p_n; - } - - return a; -} - -/* - * Creates a geometry collection containing 4D (xyz) with m value linestrings. - * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the - * collection. All of the *linestrings in the list must be 4D (xyz) with m value linestrings. There must be at least 1 linestring - * in the list. - * Returns a pointer to the created geometry collection of 4D with m value linestrings. The geometry must have FirstLinestring - * pointing to the first *linestring in the list pointed by first and LastLinestring pointing to the last element of the same list. - * DimensionModel must be GAIA_XYZM and *DimensionType must be GAIA_TYPE_LINESTRING. - */ -static gaiaGeomCollPtr -ewkt_multilinestring_xyzm (struct ewkt_data *p_data, gaiaLinestringPtr first) -{ - gaiaLinestringPtr p = first; - gaiaLinestringPtr p_n; - gaiaLinestringPtr new_line; - gaiaGeomCollPtr a = gaiaAllocGeomCollXYZM (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, a); - a->DeclaredType = GAIA_MULTILINESTRING; - a->DimensionModel = GAIA_XY_Z_M; - - while (p) - { - new_line = gaiaAddLinestringToGeomColl (a, p->Points); - gaiaCopyLinestringCoords (new_line, p); - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreeLinestring (p); - p = p_n; - } - return a; -} - -/* - * Creates a geometry collection containing 2D (xy) polygons. - * - * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should - * be added to the collection. All of the polygons in the list must be 2D (xy) polygons. There must be - * at least 1 polygon in the list. - * - * Returns a pointer to the created geometry collection of 2D polygons. The geometry must have - * FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing - * to the last element of the same list. DimensionModel must be GAIA_XY and DimensionType must - * be GAIA_TYPE_POLYGON. - * - */ -static gaiaGeomCollPtr -ewkt_multipolygon_xy (struct ewkt_data *p_data, gaiaPolygonPtr first) -{ - gaiaPolygonPtr p = first; - gaiaPolygonPtr p_n; - int i = 0; - gaiaPolygonPtr new_polyg; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - gaiaGeomCollPtr geom = gaiaAllocGeomColl (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - - geom->DeclaredType = GAIA_MULTIPOLYGON; - - while (p) - { - i_ring = p->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); - o_ring = new_polyg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - - for (i = 0; i < new_polyg->NumInteriors; i++) - { - i_ring = p->Interiors + i; - o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePolygon (p); - p = p_n; - } - - return geom; -} - -/* - * Creates a geometry collection containing 3D (xyz) polygons. - * - * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should be - * added to the collection. All of the polygons in the list must be 3D (xyz) polygons. There must be at - * least 1 polygon in the list. - * - * Returns a pointer to the created geometry collection of 3D polygons. The geometry must have - * FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing to - * the last element of the same list. DimensionModel must be GAIA_XYZ and DimensionType must - * be GAIA_TYPE_POLYGON. - * - */ -static gaiaGeomCollPtr -ewkt_multipolygon_xyz (struct ewkt_data *p_data, gaiaPolygonPtr first) -{ - gaiaPolygonPtr p = first; - gaiaPolygonPtr p_n; - int i = 0; - gaiaPolygonPtr new_polyg; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - gaiaGeomCollPtr geom = gaiaAllocGeomCollXYZ (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - - geom->DeclaredType = GAIA_MULTIPOLYGON; - - while (p) - { - i_ring = p->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); - o_ring = new_polyg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - - for (i = 0; i < new_polyg->NumInteriors; i++) - { - i_ring = p->Interiors + i; - o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePolygon (p); - p = p_n; - } - - return geom; -} - -/* - * Creates a geometry collection containing 2D (xy) with m value polygons. - * - * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should - * be added to the collection. All of the polygons in the list must be 2D (xy) with m value polygons. - * There must be at least 1 polygon in the list. - * - * Returns a pointer to the created geometry collection of 2D with m value polygons. The geometry - * must have FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon - * pointing to the last element of the same list. DimensionModel must be GAIA_XYM and DimensionType - * must be GAIA_TYPE_POLYGON. - * - */ -static gaiaGeomCollPtr -ewkt_multipolygon_xym (struct ewkt_data *p_data, gaiaPolygonPtr first) -{ - gaiaPolygonPtr p = first; - gaiaPolygonPtr p_n; - int i = 0; - gaiaPolygonPtr new_polyg; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - gaiaGeomCollPtr geom = gaiaAllocGeomCollXYM (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - - geom->DeclaredType = GAIA_MULTIPOLYGON; - - while (p) - { - i_ring = p->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); - o_ring = new_polyg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - - for (i = 0; i < new_polyg->NumInteriors; i++) - { - i_ring = p->Interiors + i; - o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePolygon (p); - p = p_n; - } - - return geom; -} - -/* - * Creates a geometry collection containing 4D (xyz) with m value polygons. - * - * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should be - * added to the collection. All of the polygons in the list must be 4D (xyz) with m value polygons. - * There must be at least 1 polygon in the list. - * - * Returns a pointer to the created geometry collection of 4D with m value polygons. The geometry must - * have FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing -// * to the last element of the same list. DimensionModel must be GAIA_XYZM and DimensionType must - * be GAIA_TYPE_POLYGON. - * - */ -static gaiaGeomCollPtr -ewkt_multipolygon_xyzm (struct ewkt_data *p_data, gaiaPolygonPtr first) -{ - gaiaPolygonPtr p = first; - gaiaPolygonPtr p_n; - int i = 0; - gaiaPolygonPtr new_polyg; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - gaiaGeomCollPtr geom = gaiaAllocGeomCollXYZM (); - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - - geom->DeclaredType = GAIA_MULTIPOLYGON; - - while (p) - { - i_ring = p->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); - o_ring = new_polyg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - - for (i = 0; i < new_polyg->NumInteriors; i++) - { - i_ring = p->Interiors + i; - o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - - p_n = p->Next; - ewktMapDynClean (p_data, p); - gaiaFreePolygon (p); - p = p_n; - } - - return geom; -} - -static void -ewkt_geomColl_common (struct ewkt_data *p_data, gaiaGeomCollPtr org, - gaiaGeomCollPtr dst) -{ -/* -/ helper function: xfers entities between the Origin and Destination -/ Sandro Furieri: 2010 October 12 -*/ - gaiaGeomCollPtr p = org; - gaiaGeomCollPtr p_n; - gaiaPointPtr pt; - gaiaPointPtr pt_n; - gaiaLinestringPtr ln; - gaiaLinestringPtr ln_n; - gaiaPolygonPtr pg; - gaiaPolygonPtr pg_n; - while (p) - { - pt = p->FirstPoint; - while (pt) - { - pt_n = pt->Next; - pt->Next = NULL; - if (dst->FirstPoint == NULL) - dst->FirstPoint = pt; - if (dst->LastPoint != NULL) - dst->LastPoint->Next = pt; - dst->LastPoint = pt; - pt = pt_n; - } - ln = p->FirstLinestring; - while (ln) - { - ln_n = ln->Next; - ln->Next = NULL; - if (dst->FirstLinestring == NULL) - dst->FirstLinestring = ln; - if (dst->LastLinestring != NULL) - dst->LastLinestring->Next = ln; - dst->LastLinestring = ln; - ln = ln_n; - } - pg = p->FirstPolygon; - while (pg) - { - pg_n = pg->Next; - pg->Next = NULL; - if (dst->FirstPolygon == NULL) - dst->FirstPolygon = pg; - if (dst->LastPolygon != NULL) - dst->LastPolygon->Next = pg; - dst->LastPolygon = pg; - pg = pg_n; - } - p_n = p->Next; - p->FirstPoint = NULL; - p->LastPoint = NULL; - p->FirstLinestring = NULL; - p->LastLinestring = NULL; - p->FirstPolygon = NULL; - p->LastPolygon = NULL; - ewktMapDynClean (p_data, p); - gaiaFreeGeomColl (p); - p = p_n; - } -} - -/* Creates a 2D (xy) geometry collection in SpatiaLite - * - * first is the first geometry collection in a linked list of geometry collections. - * Each geometry collection represents a single type of object (eg. one could be a POINT, - * another could be a LINESTRING, another could be a MULTILINESTRING, etc.). - * - * The type of object represented by any geometry collection is stored in the declaredType - * field of its struct. For example, if first->declaredType = GAIA_POINT, then first represents a point. - * If first->declaredType = GAIA_MULTIPOINT, then first represents a multipoint. - * - * NOTE: geometry collections cannot contain other geometry collections (have to confirm this - * with Sandro). - * - * The goal of this function is to take the information from all of the structs in the linked list and - * return one geomColl struct containing all of that information. - * - * The integers used for 'declaredType' are defined in gaiageo.h. In this function, the only values - * contained in 'declaredType' that will be encountered will be: - * - * GAIA_POINT, GAIA_LINESTRING, GAIA_POLYGON, - * GAIA_MULTIPOINT, GAIA_MULTILINESTRING, GAIA_MULTIPOLYGON - */ -static gaiaGeomCollPtr -ewkt_geomColl_xy (struct ewkt_data *p_data, gaiaGeomCollPtr first) -{ - gaiaGeomCollPtr geom = gaiaAllocGeomColl (); - if (geom == NULL) - return NULL; - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - geom->DimensionModel = GAIA_XY; - ewkt_geomColl_common (p_data, first, geom); - return geom; -} - -/* - * See geomColl_xy for description. - * - * The only difference between this function and geomColl_xy is that the 'declaredType' field of the structs - * in the linked list for this function will only contain the following types: - * - * GAIA_POINTZ, GAIA_LINESTRINGZ, GAIA_POLYGONZ, - * GAIA_MULTIPOINTZ, GAIA_MULTILINESTRINGZ, GAIA_MULTIPOLYGONZ - */ -static gaiaGeomCollPtr -ewkt_geomColl_xyz (struct ewkt_data *p_data, gaiaGeomCollPtr first) -{ - gaiaGeomCollPtr geom = gaiaAllocGeomColl (); - if (geom == NULL) - return NULL; - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - geom->DimensionModel = GAIA_XY_Z; - ewkt_geomColl_common (p_data, first, geom); - return geom; -} - -/* - * See geomColl_xy for description. - * - * The only difference between this function and geomColl_xy is that the 'declaredType' field of the structs - * in the linked list for this function will only contain the following types: - * - * GAIA_POINTM, GAIA_LINESTRINGM, GAIA_POLYGONM, - * GAIA_MULTIPOINTM, GAIA_MULTILINESTRINGM, GAIA_MULTIPOLYGONM - */ -static gaiaGeomCollPtr -ewkt_geomColl_xym (struct ewkt_data *p_data, gaiaGeomCollPtr first) -{ - gaiaGeomCollPtr geom = gaiaAllocGeomColl (); - if (geom == NULL) - return NULL; - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - geom->DimensionModel = GAIA_XY_M; - ewkt_geomColl_common (p_data, first, geom); - return geom; -} - -/* - * See geomColl_xy for description. - * - * The only difference between this function and geomColl_xy is that the 'declaredType' field of the structs - * in the linked list for this function will only contain the following types: - * - * GAIA_POINTZM, GAIA_LINESTRINGZM, GAIA_POLYGONZM, - * GAIA_MULTIPOINTZM, GAIA_MULTILINESTRINGZM, GAIA_MULTIPOLYGONZM - */ -static gaiaGeomCollPtr -ewkt_geomColl_xyzm (struct ewkt_data *p_data, gaiaGeomCollPtr first) -{ - gaiaGeomCollPtr geom = gaiaAllocGeomColl (); - if (geom == NULL) - return NULL; - ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - geom->DimensionModel = GAIA_XY_Z_M; - ewkt_geomColl_common (p_data, first, geom); - return geom; -} - - - -/* -** CAVEAT: we must redefine any Lemon/Flex own macro -*/ -#define YYMINORTYPE EWKT_MINORTYPE -#define YY_CHAR EWKT_YY_CHAR -#define input ewkt_input -#define ParseAlloc ewktParseAlloc -#define ParseFree ewktParseFree -#define ParseStackPeak ewktParseStackPeak -#define Parse ewktParse -#define yyStackEntry ewkt_yyStackEntry -#define yyzerominor ewkt_yyzerominor -#define yy_accept ewkt_yy_accept -#define yy_action ewkt_yy_action -#define yy_base ewkt_yy_base -#define yy_buffer_stack ewkt_yy_buffer_stack -#define yy_buffer_stack_max ewkt_yy_buffer_stack_max -#define yy_buffer_stack_top ewkt_yy_buffer_stack_top -#define yy_c_buf_p ewkt_yy_c_buf_p -#define yy_chk ewkt_yy_chk -#define yy_def ewkt_yy_def -#define yy_default ewkt_yy_default -#define yy_destructor ewkt_yy_destructor -#define yy_ec ewkt_yy_ec -#define yy_fatal_error ewkt_yy_fatal_error -#define yy_find_reduce_action ewkt_yy_find_reduce_action -#define yy_find_shift_action ewkt_yy_find_shift_action -#define yy_get_next_buffer ewkt_yy_get_next_buffer -#define yy_get_previous_state ewkt_yy_get_previous_state -#define yy_init ewkt_yy_init -#define yy_init_globals ewkt_yy_init_globals -#define yy_lookahead ewkt_yy_lookahead -#define yy_meta ewkt_yy_meta -#define yy_nxt ewkt_yy_nxt -#define yy_parse_failed ewkt_yy_parse_failed -#define yy_pop_parser_stack ewkt_yy_pop_parser_stack -#define yy_reduce ewkt_yy_reduce -#define yy_reduce_ofst ewkt_yy_reduce_ofst -#define yy_shift ewkt_yy_shift -#define yy_shift_ofst ewkt_yy_shift_ofst -#define yy_start ewkt_yy_start -#define yy_state_type ewkt_yy_state_type -#define yy_syntax_error ewkt_yy_syntax_error -#define yy_trans_info ewkt_yy_trans_info -#define yy_try_NUL_trans ewkt_yy_try_NUL_trans -#define yyParser ewkt_yyParser -#define yyStackEntry ewkt_yyStackEntry -#define yyStackOverflow ewkt_yyStackOverflow -#define yyRuleInfo ewkt_yyRuleInfo -#define yyunput ewkt_yyunput -#define yyzerominor ewkt_yyzerominor -#define yyTraceFILE ewkt_yyTraceFILE -#define yyTracePrompt ewkt_yyTracePrompt -#define yyTokenName ewkt_yyTokenName -#define yyRuleName ewkt_yyRuleName -#define ParseTrace ewkt_ParseTrace - -#define yylex ewky_yylex -#define YY_DECL int yylex (yyscan_t yyscanner) - - -/* including LEMON generated header */ -#include "Ewkt.h" - - -typedef union -{ - double dval; - struct symtab *symp; -} ewkt_yystype; -#define YYSTYPE ewkt_yystype - -/* extern YYSTYPE yylval; */ -YYSTYPE EwktLval; - - - -/* including LEMON generated code */ -#include "Ewkt.c" - - - -/* -** CAVEAT: there is an incompatibility between LEMON and FLEX -** this macro resolves the issue -*/ -#undef yy_accept -#define yy_accept yy_ewkt_flex_accept - - - - -/* including FLEX generated code */ -#include "lex.Ewkt.c" - -#line 3 "lex.Ewkt.c" - -#define YY_INT_ALIGNED short int - - - -/* -** This is a linked-list struct to store all the values for each token. -** All tokens will have a value of 0, except tokens denoted as NUM. -** NUM tokens are geometry coordinates and will contain the floating -** point number. -*/ -typedef struct ewktFlexTokenStruct -{ - double value; - struct ewktFlexTokenStruct *Next; -} ewktFlexToken; - -/* -** Function to clean up the linked-list of token values. -*/ -static int -ewkt_cleanup (ewktFlexToken * token) -{ - ewktFlexToken *ptok; - ewktFlexToken *ptok_n; - if (token == NULL) - return 0; - ptok = token; - while (ptok) - { - ptok_n = ptok->Next; - free (ptok); - ptok = ptok_n; - } - return 0; -} - -static int -findEwktSrid (const char *buffer, int *base_offset) -{ -/* attempting to identify the EWKT SRID */ - char dummy[1024]; - char *out; - const char *in = buffer; - int end = -1; - int i; - *base_offset = 0; - - while (*in != '\0') - { - /* searching the first semi-colon [srid delimiter] */ - if (*in == ';') - { - end = in - buffer; - break; - } - in++; - } - if (end < 0) - return -1; - in = buffer; - out = dummy; - for (i = 0; i < end; i++) - { - /* normalizing whitespaces */ - char c = *in; - if (c == ' ' || c == '\t' || c == '\n') - { - in++; - continue; - } - *out++ = *in++; - } - *out = '\0'; - if (strncasecmp (dummy, "SRID=", 5) != 0) - return -1; - for (i = 5; i < (int) strlen (dummy); i++) - { - if (i == 5) - { - if (dummy[i] == '-' || dummy[i] == '+') - continue; - } - if (dummy[i] >= '0' && dummy[i] <= '9') - continue; - return -1; - } - *base_offset = end + 1; - return atoi (dummy + 5); -} - -gaiaGeomCollPtr -gaiaParseEWKT (const unsigned char *dirty_buffer) -{ - void *pParser = ParseAlloc (malloc); - /* Linked-list of token values */ - ewktFlexToken *tokens = malloc (sizeof (ewktFlexToken)); - /* Pointer to the head of the list */ - ewktFlexToken *head = tokens; - int yv; - int srid; - int base_offset; - yyscan_t scanner; - struct ewkt_data str_data; - -/* initializing the helper structs */ - str_data.ewkt_line = 1; - str_data.ewkt_col = 1; - str_data.ewkt_parse_error = 0; - str_data.ewkt_first_dyn_block = NULL; - str_data.ewkt_last_dyn_block = NULL; - str_data.result = NULL; - -/* initializing the scanner state */ - Ewktlex_init_extra (&str_data, &scanner); - tokens->Next = NULL; - - srid = findEwktSrid ((char *) dirty_buffer, &base_offset); - Ewkt_scan_string ((char *) dirty_buffer + base_offset, scanner); - - /* - / Keep tokenizing until we reach the end - / yylex() will return the next matching Token for us. - */ - while ((yv = yylex (scanner)) != 0) - { - if (yv == -1) - { - str_data.ewkt_parse_error = 1; - break; - } - tokens->Next = malloc (sizeof (ewktFlexToken)); - tokens->Next->Next = NULL; - /* - /EwktLval is a global variable from FLEX. - /EwktLval is defined in ewktLexglobal.h - */ - tokens->Next->value = EwktLval.dval; - /* Pass the token to the wkt parser created from lemon */ - Parse (pParser, yv, &(tokens->Next->value), &str_data); - tokens = tokens->Next; - } - /* This denotes the end of a line as well as the end of the parser */ - Parse (pParser, EWKT_NEWLINE, 0, &str_data); - ParseFree (pParser, free); - Ewktlex_destroy (scanner); - - /* Assigning the token as the end to avoid seg faults while cleaning */ - tokens->Next = NULL; - ewkt_cleanup (head); - - if (str_data.ewkt_parse_error) - { - if (str_data.result) - { - /* if a Geometry-result has been produced, the stack is already cleaned */ - gaiaFreeGeomColl (str_data.result); - ewktCleanMapDynAlloc (&str_data, 0); - } - else - { - /* otherwise we are required to clean the stack */ - ewktCleanMapDynAlloc (&str_data, 1); - } - return NULL; - } - - ewktCleanMapDynAlloc (&str_data, 0); - - if (str_data.result == NULL) - return NULL; - if (!ewktCheckValidity (str_data.result)) - { - gaiaFreeGeomColl (str_data.result); - return NULL; - } - - gaiaMbrGeometry (str_data.result); - str_data.result->Srid = srid; - - return str_data.result; -} - - -/* -** CAVEAT: we must now undefine any Lemon/Flex own macro -*/ -#undef YYNOCODE -#undef YYNSTATE -#undef YYNRULE -#undef YY_SHIFT_MAX -#undef YY_SHIFT_USE_DFLT -#undef YY_REDUCE_USE_DFLT -#undef YY_REDUCE_MAX -#undef YY_FLUSH_BUFFER -#undef YY_DO_BEFORE_ACTION -#undef YY_NUM_RULES -#undef YY_END_OF_BUFFER -#undef YY_END_FILE -#undef YYACTIONTYPE -#undef YY_SZ_ACTTAB -#undef YY_NEW_FILE -#undef BEGIN -#undef YY_START -#undef YY_CURRENT_BUFFER -#undef YY_CURRENT_BUFFER_LVALUE -#undef YY_STATE_BUF_SIZE -#undef YY_DECL -#undef YY_FATAL_ERROR -#undef YYMINORTYPE -#undef YY_CHAR -#undef YYSTYPE -#undef input -#undef ParseAlloc -#undef ParseFree -#undef ParseStackPeak -#undef Parse -#undef yyalloc -#undef yyfree -#undef yyin -#undef yyleng -#undef yyless -#undef yylex -#undef yylineno -#undef yyout -#undef yyrealloc -#undef yyrestart -#undef yyStackEntry -#undef yytext -#undef yywrap -#undef yyzerominor -#undef yy_accept -#undef yy_action -#undef yy_base -#undef yy_buffer_stack -#undef yy_buffer_stack_max -#undef yy_buffer_stack_top -#undef yy_c_buf_p -#undef yy_chk -#undef yy_create_buffer -#undef yy_def -#undef yy_default -#undef yy_delete_buffer -#undef yy_destructor -#undef yy_ec -#undef yy_fatal_error -#undef yy_find_reduce_action -#undef yy_find_shift_action -#undef yy_flex_debug -#undef yy_flush_buffer -#undef yy_get_next_buffer -#undef yy_get_previous_state -#undef yy_init -#undef yy_init_buffer -#undef yy_init_globals -#undef yy_load_buffer -#undef yy_load_buffer_state -#undef yy_lookahead -#undef yy_meta -#undef yy_new_buffer -#undef yy_nxt -#undef yy_parse_failed -#undef yy_pop_parser_stack -#undef yy_reduce -#undef yy_reduce_ofst -#undef yy_set_bol -#undef yy_set_interactive -#undef yy_shift -#undef yy_shift_ofst -#undef yy_start -#undef yy_state_type -#undef yy_switch_to_buffer -#undef yy_syntax_error -#undef yy_trans_info -#undef yy_try_NUL_trans -#undef yyParser -#undef yyStackEntry -#undef yyStackOverflow -#undef yyRuleInfo -#undef yytext_ptr -#undef yyunput -#undef yyzerominor -#undef ParseARG_SDECL -#undef ParseARG_PDECL -#undef ParseARG_FETCH -#undef ParseARG_STORE -#undef REJECT -#undef yymore -#undef YY_MORE_ADJ -#undef YY_RESTORE_YY_MORE_OFFSET -#undef YY_LESS_LINENO -#undef yyTracePrompt -#undef yyTraceFILE -#undef yyTokenName -#undef yyRuleName -#undef ParseTrace - -#undef yylex -#undef YY_DECL diff --git a/src/spatialite/src/gaiageo/gg_extras.c b/src/spatialite/src/gaiageo/gg_extras.c deleted file mode 100644 index add4411..0000000 --- a/src/spatialite/src/gaiageo/gg_extras.c +++ /dev/null @@ -1,1189 +0,0 @@ -/* - - gg_extras.c -- Gaia extra functions support - - version 4.0, 2012 August 19 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -static double -rint(double x) -{ - return floor(x + 0.5); -} -#endif - -static void -auxGridSnapPoint (int dimension_model, gaiaPointPtr pt, gaiaGeomCollPtr result, - double origin_x, double origin_y, double origin_z, - double origin_m, double size_x, double size_y, double size_z, - double size_m) -{ -/* snapping a Point to a regular Grid */ - double x = pt->X; - double y = pt->Y; - double z = 0.0; - double m = 0.0; - int has_z = 0; - int has_m = 0; - gaiaPointPtr ptx; - - if (pt == NULL || result == NULL) - return; - if (dimension_model == GAIA_XY_Z || dimension_model == GAIA_XY_Z_M) - has_z = 1; - if (dimension_model == GAIA_XY_M || dimension_model == GAIA_XY_Z_M) - has_m = 1; - if (has_z) - z = pt->Z; - if (has_m) - m = pt->M; - -/* snapping coords to the given grid */ - if (size_x > 0.0) - x = rint ((x - origin_x) / size_x) * size_x + origin_x; - if (size_y > 0.0) - y = rint ((y - origin_y) / size_y) * size_y + origin_y; - if (has_z && size_z > 0.0) - z = rint ((z - origin_z) / size_z) * size_z + origin_z; - if (has_m && size_m > 0.0) - m = rint ((m - origin_m) / size_m) * size_m + origin_m; - - ptx = result->FirstPoint; - while (ptx) - { - /* checking if already defined */ - if (has_z && has_m) - { - if (ptx->X == x && ptx->Y == y && ptx->Z == z && ptx->M == m) - return; - } - else if (has_z) - { - if (ptx->X == x && ptx->Y == y && ptx->Z == z) - return; - } - else if (has_m) - { - if (ptx->X == x && ptx->Y == y && ptx->M == m) - return; - } - else - { - if (ptx->X == x && ptx->Y == y) - return; - } - ptx = ptx->Next; - } - -/* inserting the snapped Point into the result Geometry */ - if (has_z && has_m) - gaiaAddPointToGeomCollXYZM (result, x, y, z, m); - else if (has_z) - gaiaAddPointToGeomCollXYZ (result, x, y, z); - else if (has_m) - gaiaAddPointToGeomCollXYM (result, x, y, m); - else - gaiaAddPointToGeomColl (result, x, y); -} - -static void -auxGridSnapLinestring (gaiaLinestringPtr ln, gaiaGeomCollPtr result, - double origin_x, double origin_y, double origin_z, - double origin_m, double size_x, double size_y, - double size_z, double size_m) -{ -/* snapping a Linestring to a regular Grid */ - double x; - double y; - double z; - double m; - int has_z = 0; - int has_m = 0; - int iv; - gaiaDynamicLinePtr dyn; - gaiaPointPtr pt; - gaiaLinestringPtr lnx; - int count = 0; - - if (ln == NULL || result == NULL) - return; - if (ln->DimensionModel == GAIA_XY_Z || ln->DimensionModel == GAIA_XY_Z_M) - has_z = 1; - if (ln->DimensionModel == GAIA_XY_M || ln->DimensionModel == GAIA_XY_Z_M) - has_m = 1; - dyn = gaiaAllocDynamicLine (); - - for (iv = 0; iv < ln->Points; iv++) - { - /* snapping each Vertex to the given grid */ - int to_be_inserted = 0; - z = 0.0; - m = 0.0; - if (has_z && has_m) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - } - else if (has_z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - } - else if (has_m) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - /* snapping coords to the given grid */ - if (size_x > 0.0) - x = rint ((x - origin_x) / size_x) * size_x + origin_x; - if (size_y > 0.0) - y = rint ((y - origin_y) / size_y) * size_y + origin_y; - if (has_z && size_z > 0.0) - z = rint ((z - origin_z) / size_z) * size_z + origin_z; - if (has_m && size_m > 0.0) - m = rint ((m - origin_m) / size_m) * size_m + origin_m; - - if (dyn->Last == NULL) - to_be_inserted = 1; - else - { - /* skipping repeated points */ - pt = dyn->Last; - if (has_z && has_m) - { - if (pt->X == x && pt->Y == y && pt->Z == z && pt->M == m) - ; - else - to_be_inserted = 1; - } - else if (has_z) - { - if (pt->X == x && pt->Y == y && pt->Z == z) - ; - else - to_be_inserted = 1; - } - else if (has_m) - { - if (pt->X == x && pt->Y == y && pt->M == m) - ; - else - to_be_inserted = 1; - } - else - { - if (pt->X == x && pt->Y == y) - ; - else - to_be_inserted = 1; - } - } - if (to_be_inserted) - { - if (has_z && has_m) - gaiaAppendPointZMToDynamicLine (dyn, x, y, z, m); - else if (has_z) - gaiaAppendPointZToDynamicLine (dyn, x, y, z); - else if (has_m) - gaiaAppendPointMToDynamicLine (dyn, x, y, m); - else - gaiaAppendPointToDynamicLine (dyn, x, y); - } - } - -/* checking for validity */ - pt = dyn->First; - while (pt) - { - /* counting how many points are there */ - count++; - pt = pt->Next; - } - if (count < 2) - { - /* skipping any collapsed line */ - gaiaFreeDynamicLine (dyn); - return; - } - -/* inserting into the result Geometry */ - lnx = gaiaAddLinestringToGeomColl (result, count); - iv = 0; - pt = dyn->First; - while (pt) - { - /* copying points */ - if (lnx->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (lnx->Coords, iv, pt->X, pt->Y, pt->Z); - } - else if (lnx->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (lnx->Coords, iv, pt->X, pt->Y, pt->M); - } - else if (lnx->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (lnx->Coords, iv, pt->X, pt->Y, pt->Z, pt->M); - } - else - { - gaiaSetPoint (lnx->Coords, iv, pt->X, pt->Y); - } - iv++; - pt = pt->Next; - } - gaiaFreeDynamicLine (dyn); -} - -static gaiaDynamicLinePtr -auxGridSnapRing (gaiaRingPtr rng, double origin_x, double origin_y, - double origin_z, double origin_m, double size_x, double size_y, - double size_z, double size_m) -{ -/* snapping a Ring to a regular Grid */ - double x; - double y; - double z; - double m; - int has_z = 0; - int has_m = 0; - int iv; - gaiaDynamicLinePtr dyn; - gaiaPointPtr pt0; - gaiaPointPtr pt; - int count = 0; - - if (rng == NULL) - return NULL; - if (rng->DimensionModel == GAIA_XY_Z || rng->DimensionModel == GAIA_XY_Z_M) - has_z = 1; - if (rng->DimensionModel == GAIA_XY_M || rng->DimensionModel == GAIA_XY_Z_M) - has_m = 1; - dyn = gaiaAllocDynamicLine (); - - for (iv = 0; iv < rng->Points; iv++) - { - /* snapping each Vertex to the given grid */ - int to_be_inserted = 0; - z = 0.0; - m = 0.0; - if (has_z && has_m) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else if (has_z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (has_m) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - /* snapping coords to the given grid */ - if (size_x > 0.0) - x = rint ((x - origin_x) / size_x) * size_x + origin_x; - if (size_y > 0.0) - y = rint ((y - origin_y) / size_y) * size_y + origin_y; - if (has_z && size_z > 0.0) - z = rint ((z - origin_z) / size_z) * size_z + origin_z; - if (has_m && size_m > 0.0) - m = rint ((m - origin_m) / size_m) * size_m + origin_m; - - if (dyn->Last == NULL) - to_be_inserted = 1; - else - { - /* skipping repeated points */ - pt = dyn->Last; - if (has_z && has_m) - { - if (pt->X == x && pt->Y == y && pt->Z == z && pt->M == m) - ; - else - to_be_inserted = 1; - } - else if (has_z) - { - if (pt->X == x && pt->Y == y && pt->Z == z) - ; - else - to_be_inserted = 1; - } - else if (has_m) - { - if (pt->X == x && pt->Y == y && pt->M == m) - ; - else - to_be_inserted = 1; - } - else - { - if (pt->X == x && pt->Y == y) - ; - else - to_be_inserted = 1; - } - } - if (to_be_inserted) - { - if (has_z && has_m) - gaiaAppendPointZMToDynamicLine (dyn, x, y, z, m); - else if (has_z) - gaiaAppendPointZToDynamicLine (dyn, x, y, z); - else if (has_m) - gaiaAppendPointMToDynamicLine (dyn, x, y, m); - else - gaiaAppendPointToDynamicLine (dyn, x, y); - } - } -/* ensuring for Ring closure */ - pt0 = dyn->First; - pt = dyn->Last; - if (has_z && has_m) - { - if (pt0->X == pt->X && pt0->Y == pt->Y && pt0->Z == pt->Z - && pt0->M == pt->M) - ; - else - gaiaAppendPointZMToDynamicLine (dyn, pt->X, pt->Y, pt->Z, pt->M); - } - else if (has_z) - { - if (pt0->X == pt->X && pt0->Y == pt->Y && pt0->Z == pt->Z) - ; - else - gaiaAppendPointZToDynamicLine (dyn, pt->X, pt->Y, pt->Z); - } - else if (has_m) - { - if (pt0->X == pt->X && pt0->Y == pt->Y && pt0->M == pt->M) - ; - else - gaiaAppendPointMToDynamicLine (dyn, pt->X, pt->Y, pt->M); - } - else - { - if (pt0->X == pt->X && pt0->Y == pt->Y) - ; - else - gaiaAppendPointToDynamicLine (dyn, pt->X, pt->Y); - } - -/* checking for validity */ - pt = dyn->First; - while (pt) - { - /* counting how many points are there */ - count++; - pt = pt->Next; - } - if (count < 4) - { - /* skipping any collapsed ring */ - gaiaFreeDynamicLine (dyn); - return NULL; - } - return dyn; -} - -static void -auxGridSnapPolygon (gaiaPolygonPtr pg, gaiaGeomCollPtr result, double origin_x, - double origin_y, double origin_z, double origin_m, - double size_x, double size_y, double size_z, double size_m) -{ -/* snapping a Polygon to a regular Grid */ - int ib; - int holes = 0; - int count; - int next_hole = 0; - int iv; - gaiaRingPtr rng; - gaiaPolygonPtr pgx; - gaiaPointPtr pt; - gaiaDynamicLinePtr rng_ext; - gaiaDynamicLinePtr dyn; - gaiaDynamicLinePtr *rng_ints = NULL; - - if (pg == NULL || result == NULL) - return; -/* snapping the Exterior Ring */ - rng = pg->Exterior; - rng_ext = - auxGridSnapRing (rng, origin_x, origin_y, origin_z, origin_m, size_x, - size_y, size_z, size_m); - if (rng_ext == NULL) /* skipping any collaped Polygon */ - return; - - if (pg->NumInteriors) - { - /* snapping any Interior Ring */ - rng_ints = malloc (sizeof (gaiaRingPtr *) * pg->NumInteriors); - for (ib = 0; ib < pg->NumInteriors; ib++) - { - rng = pg->Interiors + ib; - *(rng_ints + ib) = - auxGridSnapRing (rng, origin_x, origin_y, origin_z, - origin_m, size_x, size_y, size_z, size_m); - if (*(rng_ints + ib) != NULL) - holes++; - } - } - -/* inserting into the result Geometry */ - pt = rng_ext->First; - count = 0; - while (pt) - { - /* counting how many points are in the Exterior Ring */ - count++; - pt = pt->Next; - } - pgx = gaiaAddPolygonToGeomColl (result, count, holes); - rng = pgx->Exterior; - iv = 0; - pt = rng_ext->First; - while (pt) - { - /* copying Exterior Ring points */ - if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (rng->Coords, iv, pt->X, pt->Y, pt->Z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (rng->Coords, iv, pt->X, pt->Y, pt->M); - } - else if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (rng->Coords, iv, pt->X, pt->Y, pt->Z, pt->M); - } - else - { - gaiaSetPoint (rng->Coords, iv, pt->X, pt->Y); - } - iv++; - pt = pt->Next; - } - if (holes > 0) - { - /* setting up any not-collapsed Hole */ - for (ib = 0; ib < pg->NumInteriors; ib++) - { - if (*(rng_ints + ib) == NULL) - continue; - dyn = *(rng_ints + ib); - pt = dyn->First; - count = 0; - while (pt) - { - /* counting how many points are in the Exterior Ring */ - count++; - pt = pt->Next; - } - rng = gaiaAddInteriorRing (pgx, next_hole++, count); - iv = 0; - pt = dyn->First; - while (pt) - { - /* copying Interior Ring points */ - if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (rng->Coords, iv, pt->X, pt->Y, - pt->Z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (rng->Coords, iv, pt->X, pt->Y, - pt->M); - } - else if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (rng->Coords, iv, pt->X, pt->Y, - pt->Z, pt->M); - } - else - { - gaiaSetPoint (rng->Coords, iv, pt->X, pt->Y); - } - iv++; - pt = pt->Next; - } - } - } - -/* memory clean-up */ - gaiaFreeDynamicLine (rng_ext); - if (rng_ints) - { - for (ib = 0; ib < pg->NumInteriors; ib++) - { - dyn = *(rng_ints + ib); - if (dyn) - gaiaFreeDynamicLine (dyn); - } - free (rng_ints); - } -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaSnapToGrid (gaiaGeomCollPtr geom, double origin_x, double origin_y, - double origin_z, double origin_m, double size_x, double size_y, - double size_z, double size_m) -{ -/* creating a Geometry snapped to a regular Grid */ - gaiaGeomCollPtr result; - int pts = 0; - int lns = 0; - int pgs = 0; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - - if (!geom) - return NULL; - -/* creating the output Geometry */ - if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else - result = gaiaAllocGeomColl (); - -/* snapping elementary Geometries to the given Grid */ - pt = geom->FirstPoint; - while (pt) - { - /* snapping POINTs */ - auxGridSnapPoint (geom->DimensionModel, pt, result, origin_x, - origin_y, origin_z, origin_m, size_x, size_y, - size_z, size_m); - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - /* snapping LINESTRINGs */ - auxGridSnapLinestring (ln, result, origin_x, origin_y, origin_z, - origin_m, size_x, size_y, size_z, size_m); - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - /* snapping POLYGONs */ - auxGridSnapPolygon (pg, result, origin_x, origin_y, origin_z, - origin_m, size_x, size_y, size_z, size_m); - pg = pg->Next; - } - -/* validating the output Geometry */ - pt = result->FirstPoint; - while (pt) - { - /* counting how many POINTs are there */ - pts++; - pt = pt->Next; - } - ln = result->FirstLinestring; - while (ln) - { - /* counting how many LINESTRINGs are there */ - lns++; - ln = ln->Next; - } - pg = result->FirstPolygon; - while (pg) - { - /* counting how many POLYGONs are there */ - pgs++; - pg = pg->Next; - } - if (pts == 0 && lns == 0 && pgs == 0) - { - /* empty result */ - gaiaFreeGeomColl (result); - return NULL; - } - -/* final adjustment */ - result->Srid = geom->Srid; - if (pts == 1 && lns == 0 && pgs == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - result->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else if (geom->DeclaredType == GAIA_MULTIPOINT) - result->DeclaredType = GAIA_MULTIPOINT; - else - result->DeclaredType = GAIA_POINT; - } - else if (pts == 0 && lns == 1 && pgs == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - result->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else if (geom->DeclaredType == GAIA_MULTILINESTRING) - result->DeclaredType = GAIA_MULTILINESTRING; - else - result->DeclaredType = GAIA_LINESTRING; - } - else if (pts == 0 && lns == 0 && pgs == 1) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - result->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else if (geom->DeclaredType == GAIA_MULTIPOLYGON) - result->DeclaredType = GAIA_MULTIPOLYGON; - else - result->DeclaredType = GAIA_POLYGON; - } - else if (pts > 1 && lns == 0 && pgs == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - result->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - result->DeclaredType = GAIA_MULTIPOINT; - } - else if (pts == 0 && lns > 1 && pgs == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - result->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - result->DeclaredType = GAIA_MULTILINESTRING; - } - else if (pts == 0 && lns == 0 && pgs > 1) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - result->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - result->DeclaredType = GAIA_MULTIPOLYGON; - } - else - result->DeclaredType = GAIA_GEOMETRYCOLLECTION; - return result; -} - -#ifdef GEOS_ADVANCED /* GEOS advanced features */ - -static void -get_grid_bbox (gaiaGeomCollPtr geom, double *min_x, double *min_y, - double *max_x, double *max_y) -{ -/* extracting the BBOX representing the input geometry */ - gaiaMbrGeometry (geom); - *min_x = geom->MinX; - *min_y = geom->MinY; - *max_x = geom->MaxX; - *max_y = geom->MaxY; -} - -static void -get_grid_base (double min_x, double min_y, double origin_x, double origin_y, - double size, double *base_x, double *base_y) -{ -/* determining the grid base-point [MinX/MinY] */ - double x = rint ((min_x - origin_x) / size) * size + origin_x; - double y = rint ((min_y - origin_y) / size) * size + origin_y; - if (x > min_x) - *base_x = x - size; - else - *base_x = x; - if (y > min_y) - *base_y = y - size; - else - *base_y = y; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaSquareGrid (gaiaGeomCollPtr geom, double origin_x, double origin_y, - double size, int edges_only) -{ -/* creating a regular grid [Square cells] */ - double min_x; - double min_y; - double max_x; - double max_y; - double base_x; - double base_y; - double x1; - double y1; - double x2; - double y2; - double x3; - double y3; - double x4; - double y4; - int count = 0; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - gaiaLinestringPtr ln; - gaiaGeomCollPtr result = NULL; - gaiaGeomCollPtr item = NULL; - - if (size <= 0.0) - return NULL; - - result = gaiaAllocGeomColl (); - result->Srid = geom->Srid; - get_grid_bbox (geom, &min_x, &min_y, &max_x, &max_y); - get_grid_base (min_x, min_y, origin_x, origin_y, size, &base_x, &base_y); - while (base_y < max_y) - { - /* looping on grid rows */ - x1 = base_x; - y1 = base_y; - x2 = x1 + size; - y2 = y1; - x3 = x2; - y3 = y1 + size; - x4 = x1; - y4 = y3; - while (x1 < max_x) - { - /* looping on grid columns */ - item = gaiaAllocGeomColl (); - - pg = gaiaAddPolygonToGeomColl (item, 5, 0); - rng = pg->Exterior; - gaiaSetPoint (rng->Coords, 0, x1, y1); - gaiaSetPoint (rng->Coords, 1, x2, y2); - gaiaSetPoint (rng->Coords, 2, x3, y3); - gaiaSetPoint (rng->Coords, 3, x4, y4); - gaiaSetPoint (rng->Coords, 4, x1, y1); - - if (gaiaGeomCollIntersects (geom, item) == 1) - { - /* ok, inserting a valid cell */ - count++; - if (edges_only) - { - /* multilinestring */ - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x1, y1); - gaiaSetPoint (ln->Coords, 1, x2, y2); - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x2, y2); - gaiaSetPoint (ln->Coords, 1, x3, y3); - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x3, y3); - gaiaSetPoint (ln->Coords, 1, x4, y4); - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x4, y4); - gaiaSetPoint (ln->Coords, 1, x1, y1); - } - else - { - /* polygon */ - pg = gaiaAddPolygonToGeomColl (result, 5, 0); - rng = pg->Exterior; - gaiaSetPoint (rng->Coords, 0, x1, y1); - gaiaSetPoint (rng->Coords, 1, x2, y2); - gaiaSetPoint (rng->Coords, 2, x3, y3); - gaiaSetPoint (rng->Coords, 3, x4, y4); - gaiaSetPoint (rng->Coords, 4, x1, y1); - } - } - gaiaFreeGeomColl (item); - x1 += size; - x2 += size; - x3 += size; - x4 += size; - } - base_y += size; - } - -/* final check */ - if (!count) - { - /* empty grid */ - gaiaFreeGeomColl (result); - return NULL; - } - if (!edges_only) - { - result->DeclaredType = GAIA_MULTIPOLYGON; - return result; - } - - item = result; - result = gaiaUnaryUnion (item); - gaiaFreeGeomColl (item); - result->Srid = geom->Srid; - result->DeclaredType = GAIA_LINESTRING; - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaTriangularGrid (gaiaGeomCollPtr geom, double origin_x, double origin_y, - double size, int edges_only) -{ -/* creating a regular grid [Triangular cells] */ - double min_x; - double min_y; - double max_x; - double max_y; - double base_x; - double base_y; - double x1; - double y1; - double x2; - double y2; - double x3; - double y3; - double x4; - double y4; - int count = 0; - int odd_even = 0; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - gaiaLinestringPtr ln; - gaiaGeomCollPtr result = NULL; - gaiaGeomCollPtr item = NULL; - - if (size <= 0.0) - return NULL; - - result = gaiaAllocGeomColl (); - result->Srid = geom->Srid; - get_grid_bbox (geom, &min_x, &min_y, &max_x, &max_y); - get_grid_base (min_x, min_y, origin_x, origin_y, size, &base_x, &base_y); - while (base_y < max_y) - { - /* looping on grid rows */ - if (odd_even) - x1 = base_x - (size / 2.0); - else - x1 = base_x; - y1 = base_y; - x2 = x1 + size; - y2 = y1; - x3 = x1 + (size / 2.0); - y3 = y1 + (size * sin (3.14159265358979323846 / 3.0)); - x4 = x3 + size; - y4 = y3; - while (x1 < max_x) - { - /* looping on grid columns */ - item = gaiaAllocGeomColl (); - - pg = gaiaAddPolygonToGeomColl (item, 4, 0); - rng = pg->Exterior; - gaiaSetPoint (rng->Coords, 0, x1, y1); - gaiaSetPoint (rng->Coords, 1, x2, y2); - gaiaSetPoint (rng->Coords, 2, x3, y3); - gaiaSetPoint (rng->Coords, 3, x1, y1); - - if (gaiaGeomCollIntersects (geom, item) == 1) - { - /* ok, inserting a valid cell [pointing upside] */ - count++; - if (edges_only) - { - /* multilinestring */ - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x1, y1); - gaiaSetPoint (ln->Coords, 1, x2, y2); - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x2, y2); - gaiaSetPoint (ln->Coords, 1, x3, y3); - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x3, y3); - gaiaSetPoint (ln->Coords, 1, x1, y1); - } - else - { - /* polygon */ - pg = gaiaAddPolygonToGeomColl (result, 4, 0); - rng = pg->Exterior; - gaiaSetPoint (rng->Coords, 0, x1, y1); - gaiaSetPoint (rng->Coords, 1, x2, y2); - gaiaSetPoint (rng->Coords, 2, x3, y3); - gaiaSetPoint (rng->Coords, 3, x1, y1); - } - } - gaiaFreeGeomColl (item); - - item = gaiaAllocGeomColl (); - - pg = gaiaAddPolygonToGeomColl (item, 4, 0); - rng = pg->Exterior; - gaiaSetPoint (rng->Coords, 0, x3, y3); - gaiaSetPoint (rng->Coords, 1, x2, y2); - gaiaSetPoint (rng->Coords, 2, x4, y4); - gaiaSetPoint (rng->Coords, 3, x3, y3); - - if (gaiaGeomCollIntersects (geom, item) == 1) - { - /* ok, inserting a valid cell [pointing downside] */ - count++; - if (edges_only) - { - /* multilinestring */ - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x1, y1); - gaiaSetPoint (ln->Coords, 1, x2, y2); - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x2, y2); - gaiaSetPoint (ln->Coords, 1, x3, y3); - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x3, y3); - gaiaSetPoint (ln->Coords, 1, x1, y1); - } - else - { - /* polygon */ - pg = gaiaAddPolygonToGeomColl (result, 4, 0); - rng = pg->Exterior; - gaiaSetPoint (rng->Coords, 0, x3, y3); - gaiaSetPoint (rng->Coords, 1, x2, y2); - gaiaSetPoint (rng->Coords, 2, x4, y4); - gaiaSetPoint (rng->Coords, 3, x3, y3); - } - } - gaiaFreeGeomColl (item); - - x1 += size; - x2 += size; - x3 += size; - x4 += size; - } - base_y += (size * sin (3.14159265358979323846 / 3.0)); - if (odd_even) - odd_even = 0; - else - odd_even = 1; - } - -/* final check */ - if (!count) - { - /* empty grid */ - gaiaFreeGeomColl (result); - return NULL; - } - if (!edges_only) - { - result->DeclaredType = GAIA_MULTIPOLYGON; - return result; - } - - item = result; - result = gaiaUnaryUnion (item); - gaiaFreeGeomColl (item); - result->Srid = geom->Srid; - result->DeclaredType = GAIA_LINESTRING; - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaHexagonalGrid (gaiaGeomCollPtr geom, double origin_x, double origin_y, - double size, int edges_only) -{ -/* creating a regular grid [Hexagonal cells] */ - double min_x; - double min_y; - double max_x; - double max_y; - double base_x; - double base_y; - double x1; - double y1; - double x2; - double y2; - double x3; - double y3; - double x4; - double y4; - double x5; - double y5; - double x6; - double y6; - int count = 0; - int odd_even = 0; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - gaiaLinestringPtr ln; - gaiaGeomCollPtr result = NULL; - gaiaGeomCollPtr item = NULL; - double shift; - - if (size <= 0.0) - return NULL; - shift = size * sin (3.14159265358979323846 / 3.0); - - result = gaiaAllocGeomColl (); - result->Srid = geom->Srid; - get_grid_bbox (geom, &min_x, &min_y, &max_x, &max_y); - get_grid_base (min_x, min_y, origin_x, origin_y, size, &base_x, &base_y); - while ((base_y - shift) < max_y) - { - /* looping on grid rows */ - if (odd_even) - x1 = base_x - (size + (size / 2.0)); - else - x1 = base_x; - y1 = base_y; - x2 = x1 + (size / 2.0); - y2 = y1 - shift; - x3 = x2 + size; - y3 = y2; - x4 = x1 + (size * 2.0); - y4 = y1; - x5 = x3; - y5 = y1 + shift; - x6 = x2; - y6 = y5; - while (x1 < max_x) - { - /* looping on grid columns */ - item = gaiaAllocGeomColl (); - - pg = gaiaAddPolygonToGeomColl (item, 7, 0); - rng = pg->Exterior; - gaiaSetPoint (rng->Coords, 0, x1, y1); - gaiaSetPoint (rng->Coords, 1, x2, y2); - gaiaSetPoint (rng->Coords, 2, x3, y3); - gaiaSetPoint (rng->Coords, 3, x4, y4); - gaiaSetPoint (rng->Coords, 4, x5, y5); - gaiaSetPoint (rng->Coords, 5, x6, y6); - gaiaSetPoint (rng->Coords, 6, x1, y1); - - if (gaiaGeomCollIntersects (geom, item) == 1) - { - /* ok, inserting a valid cell */ - count++; - if (edges_only) - { - /* multilinestring */ - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x1, y1); - gaiaSetPoint (ln->Coords, 1, x2, y2); - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x2, y2); - gaiaSetPoint (ln->Coords, 1, x3, y3); - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x3, y3); - gaiaSetPoint (ln->Coords, 1, x4, y4); - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x4, y4); - gaiaSetPoint (ln->Coords, 1, x5, y5); - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x5, y5); - gaiaSetPoint (ln->Coords, 1, x6, y6); - ln = gaiaAddLinestringToGeomColl (result, 2); - gaiaSetPoint (ln->Coords, 0, x6, y6); - gaiaSetPoint (ln->Coords, 1, x1, y1); - } - else - { - /* polygon */ - pg = gaiaAddPolygonToGeomColl (result, 7, 0); - rng = pg->Exterior; - gaiaSetPoint (rng->Coords, 0, x1, y1); - gaiaSetPoint (rng->Coords, 1, x2, y2); - gaiaSetPoint (rng->Coords, 2, x3, y3); - gaiaSetPoint (rng->Coords, 3, x4, y4); - gaiaSetPoint (rng->Coords, 4, x5, y5); - gaiaSetPoint (rng->Coords, 5, x6, y6); - gaiaSetPoint (rng->Coords, 6, x1, y1); - } - } - gaiaFreeGeomColl (item); - - x1 += size * 3.0; - x2 += size * 3.0; - x3 += size * 3.0; - x4 += size * 3.0; - x5 += size * 3.0; - x6 += size * 3.0; - } - base_y += (size * sin (3.14159265358979323846 / 3.0)); - if (odd_even) - odd_even = 0; - else - odd_even = 1; - } - -/* final check */ - if (!count) - { - /* empty grid */ - gaiaFreeGeomColl (result); - return NULL; - } - if (!edges_only) - { - result->DeclaredType = GAIA_MULTIPOLYGON; - return result; - } - - item = result; - result = gaiaUnaryUnion (item); - gaiaFreeGeomColl (item); - result->Srid = geom->Srid; - result->DeclaredType = GAIA_LINESTRING; - return result; -} - -#endif /* end including GEOS */ diff --git a/src/spatialite/src/gaiageo/gg_geoJSON.c b/src/spatialite/src/gaiageo/gg_geoJSON.c deleted file mode 100644 index 2576322..0000000 --- a/src/spatialite/src/gaiageo/gg_geoJSON.c +++ /dev/null @@ -1,1491 +0,0 @@ -/* - - gg_geoJSON.c -- GeoJSON parser/lexer - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011-2012 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include - -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include -#include - -#include - -#define GEOJSON_DYN_NONE 0 -#define GEOJSON_DYN_POINT 1 -#define GEOJSON_DYN_LINESTRING 2 -#define GEOJSON_DYN_POLYGON 3 -#define GEOJSON_DYN_RING 4 -#define GEOJSON_DYN_GEOMETRY 5 - -#define GEOJSON_DYN_BLOCK 1024 - -struct geoJson_dyn_block -{ -/* a struct taking trace of dynamic allocations */ - int type[GEOJSON_DYN_BLOCK]; - void *ptr[GEOJSON_DYN_BLOCK]; - int index; - struct geoJson_dyn_block *next; -}; - -struct geoJson_data -{ -/* a struct used to make the lexer-parser reentrant and thread-safe */ - int geoJson_parse_error; - int geoJson_line; - int geoJson_col; - struct geoJson_dyn_block *geoJson_first_dyn_block; - struct geoJson_dyn_block *geoJson_last_dyn_block; - gaiaGeomCollPtr result; -}; - -static struct geoJson_dyn_block * -geoJsonCreateDynBlock (void) -{ -/* allocating a new block to trace dynamic allocations */ - int i; - struct geoJson_dyn_block *p = malloc (sizeof (struct geoJson_dyn_block)); - for (i = 0; i < GEOJSON_DYN_BLOCK; i++) - { - /* initializing map entries */ - p->type[i] = GEOJSON_DYN_NONE; - p->ptr[i] = NULL; - } - p->index = 0; - p->next = NULL; - return p; -} - -static void -geoJsonMapDynAlloc (struct geoJson_data *p_data, int type, void *ptr) -{ -/* appending a dynamic allocation into the map */ - struct geoJson_dyn_block *p; - if (p_data->geoJson_first_dyn_block == NULL) - { - /* inserting the first block of the map */ - p = geoJsonCreateDynBlock (); - p_data->geoJson_first_dyn_block = p; - p_data->geoJson_last_dyn_block = p; - } - if (p_data->geoJson_last_dyn_block->index >= GEOJSON_DYN_BLOCK) - { - /* adding a further block to the map */ - p = geoJsonCreateDynBlock (); - p_data->geoJson_last_dyn_block->next = p; - p_data->geoJson_last_dyn_block = p; - } - p_data->geoJson_last_dyn_block->type[p_data->geoJson_last_dyn_block-> - index] = type; - p_data->geoJson_last_dyn_block->ptr[p_data->geoJson_last_dyn_block->index] = - ptr; - p_data->geoJson_last_dyn_block->index++; -} - -static void -geoJsonMapDynClean (struct geoJson_data *p_data, void *ptr) -{ -/* deleting a dynamic allocation from the map */ - int i; - struct geoJson_dyn_block *p = p_data->geoJson_first_dyn_block; - while (p) - { - for (i = 0; i < GEOJSON_DYN_BLOCK; i++) - { - switch (p->type[i]) - { - case GEOJSON_DYN_POINT: - case GEOJSON_DYN_LINESTRING: - case GEOJSON_DYN_POLYGON: - case GEOJSON_DYN_RING: - case GEOJSON_DYN_GEOMETRY: - if (p->ptr[i] == ptr) - { - p->type[i] = GEOJSON_DYN_NONE; - return; - } - break; - }; - } - p = p->next; - } -} - -static void -geoJsonCleanMapDynAlloc (struct geoJson_data *p_data, int clean_all) -{ -/* cleaning the dynamic allocations map */ - int i; - struct geoJson_dyn_block *pn; - struct geoJson_dyn_block *p = p_data->geoJson_first_dyn_block; - while (p) - { - if (clean_all) - { - for (i = 0; i < GEOJSON_DYN_BLOCK; i++) - { - /* deleting Geometry objects */ - switch (p->type[i]) - { - case GEOJSON_DYN_POINT: - gaiaFreePoint ((gaiaPointPtr) (p->ptr[i])); - break; - case GEOJSON_DYN_LINESTRING: - gaiaFreeLinestring ((gaiaLinestringPtr) - (p->ptr[i])); - break; - case GEOJSON_DYN_POLYGON: - gaiaFreePolygon ((gaiaPolygonPtr) (p->ptr[i])); - break; - case GEOJSON_DYN_RING: - gaiaFreeRing ((gaiaRingPtr) (p->ptr[i])); - break; - case GEOJSON_DYN_GEOMETRY: - gaiaFreeGeomColl ((gaiaGeomCollPtr) (p->ptr[i])); - break; - }; - } - } - /* deleting the map block */ - pn = p->next; - free (p); - p = pn; - } -} - -static int -geoJsonCheckValidity (gaiaGeomCollPtr geom) -{ -/* checks if this one is a degenerated geometry */ - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - int ib; - int entities = 0; - pt = geom->FirstPoint; - while (pt) - { - /* checking points */ - entities++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - /* checking linestrings */ - if (ln->Points < 2) - return 0; - entities++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - /* checking polygons */ - rng = pg->Exterior; - if (rng->Points < 4) - return 0; - for (ib = 0; ib < pg->NumInteriors; ib++) - { - rng = pg->Interiors + ib; - if (rng->Points < 4) - return 0; - } - entities++; - pg = pg->Next; - } - if (!entities) - return 0; - return 1; -} - -static gaiaGeomCollPtr -geoJSON_setSrid (gaiaGeomCollPtr geom, int *srid) -{ -/* setting up the SRID */ - if (!geom) - return NULL; - geom->Srid = *srid; - return geom; -} - -static gaiaGeomCollPtr -gaiaGeoJsonGeometryFromPoint (struct geoJson_data *p_data, gaiaPointPtr point, - int srid) -{ -/* builds a GEOMETRY containing a POINT */ - gaiaGeomCollPtr geom = NULL; - geom = gaiaAllocGeomColl (); - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_POINT; - geom->Srid = srid; - gaiaAddPointToGeomColl (geom, point->X, point->Y); - geoJsonMapDynClean (p_data, point); - gaiaFreePoint (point); - return geom; -} - -static gaiaGeomCollPtr -gaiaGeoJsonGeometryFromPointZ (struct geoJson_data *p_data, gaiaPointPtr point, - int srid) -{ -/* builds a GEOMETRY containing a POINTZ */ - gaiaGeomCollPtr geom = NULL; - geom = gaiaAllocGeomCollXYZ (); - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_POINTZ; - geom->Srid = srid; - gaiaAddPointToGeomCollXYZ (geom, point->X, point->Y, point->Z); - geoJsonMapDynClean (p_data, point); - gaiaFreePoint (point); - return geom; -} - -static gaiaGeomCollPtr -gaiaGeoJsonGeometryFromLinestring (struct geoJson_data *p_data, - gaiaLinestringPtr line, int srid) -{ -/* builds a GEOMETRY containing a LINESTRING */ - gaiaGeomCollPtr geom = NULL; - gaiaLinestringPtr line2; - int iv; - double x; - double y; - geom = gaiaAllocGeomColl (); - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_LINESTRING; - geom->Srid = srid; - line2 = gaiaAddLinestringToGeomColl (geom, line->Points); - for (iv = 0; iv < line2->Points; iv++) - { - /* sets the POINTS for the exterior ring */ - gaiaGetPoint (line->Coords, iv, &x, &y); - gaiaSetPoint (line2->Coords, iv, x, y); - } - geoJsonMapDynClean (p_data, line); - gaiaFreeLinestring (line); - return geom; -} - -static gaiaGeomCollPtr -gaiaGeoJsonGeometryFromLinestringZ (struct geoJson_data *p_data, - gaiaLinestringPtr line, int srid) -{ -/* builds a GEOMETRY containing a LINESTRINGZ */ - gaiaGeomCollPtr geom = NULL; - gaiaLinestringPtr line2; - int iv; - double x; - double y; - double z; - geom = gaiaAllocGeomCollXYZ (); - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_LINESTRING; - geom->Srid = srid; - line2 = gaiaAddLinestringToGeomColl (geom, line->Points); - for (iv = 0; iv < line2->Points; iv++) - { - /* sets the POINTS for the exterior ring */ - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (line2->Coords, iv, x, y, z); - } - geoJsonMapDynClean (p_data, line); - gaiaFreeLinestring (line); - return geom; -} - -static gaiaPointPtr -geoJSON_point_xy (struct geoJson_data *p_data, double *x, double *y) -{ - gaiaPointPtr pt = gaiaAllocPoint (*x, *y); - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_POINT, pt); - return pt; -} - -/* - * Creates a 3D (xyz) point in SpatiaLite - * x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. - * Returns a gaiaPointPtr representing the created point. - * - * Creates a 3D (xyz) point. This is a parser helper function which is called when 3D coordinates are encountered. - * Parameters x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. - * Returns a gaiaPointPtr pointing to the 3D created point. - */ -static gaiaPointPtr -geoJSON_point_xyz (struct geoJson_data *p_data, double *x, double *y, double *z) -{ - gaiaPointPtr pt = gaiaAllocPointXYZ (*x, *y, *z); - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_POINT, pt); - return pt; -} - -/* - * Builds a geometry collection from a point. The geometry collection should contain only one element ? the point. - * The correct geometry type must be *decided based on the point type. The parser should call this function when the - * ?POINT? WKT expression is encountered. - * Parameter point is a pointer to a 2D, 3D, 2D with an m value, or 4D with an m value point. - * Returns a geometry collection containing the point. The geometry must have FirstPoint and LastPoint pointing to the - * same place as point. *DimensionModel must be the same as the model of the point and DimensionType must be GAIA_TYPE_POINT. - */ -static gaiaGeomCollPtr -geoJSON_buildGeomFromPoint (struct geoJson_data *p_data, gaiaPointPtr point) -{ - switch (point->DimensionModel) - { - case GAIA_XY: - return gaiaGeoJsonGeometryFromPoint (p_data, point, -1); - case GAIA_XY_Z: - return gaiaGeoJsonGeometryFromPointZ (p_data, point, -1); - } - return NULL; -} - -static gaiaGeomCollPtr -geoJSON_buildGeomFromPointSrid (struct geoJson_data *p_data, gaiaPointPtr point, - int *srid) -{ - switch (point->DimensionModel) - { - case GAIA_XY: - return gaiaGeoJsonGeometryFromPoint (p_data, point, *srid); - case GAIA_XY_Z: - return gaiaGeoJsonGeometryFromPointZ (p_data, point, *srid); - } - return NULL; -} - - -/* - * Creates a 2D (xy) linestring from a list of 2D points. - * - * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. - * All of the points in the list must be 2D (xy) points. There must be at least 2 points in the list. - * - * Returns a pointer to linestring containing all of the points in the list. - */ -static gaiaLinestringPtr -geoJSON_linestring_xy (struct geoJson_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - int points = 0; - int i = 0; - gaiaLinestringPtr linestring; - - while (p != NULL) - { - p = p->Next; - points++; - } - - linestring = gaiaAllocLinestring (points); - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_LINESTRING, linestring); - - p = first; - while (p != NULL) - { - gaiaSetPoint (linestring->Coords, i, p->X, p->Y); - p_n = p->Next; - geoJsonMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - i++; - } - - return linestring; -} - -/* - * Creates a 3D (xyz) linestring from a list of 3D points. - * - * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. - * All of the points in the list must be 3D (xyz) points. There must be at least 2 points in the list. - * - * Returns a pointer to linestring containing all of the points in the list. - */ -static gaiaLinestringPtr -geoJSON_linestring_xyz (struct geoJson_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - int points = 0; - int i = 0; - gaiaLinestringPtr linestring; - - while (p != NULL) - { - p = p->Next; - points++; - } - - linestring = gaiaAllocLinestringXYZ (points); - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_LINESTRING, linestring); - - p = first; - while (p != NULL) - { - gaiaSetPointXYZ (linestring->Coords, i, p->X, p->Y, p->Z); - p_n = p->Next; - geoJsonMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - i++; - } - - return linestring; -} - -/* - * Builds a geometry collection from a linestring. - */ -static gaiaGeomCollPtr -geoJSON_buildGeomFromLinestring (struct geoJson_data *p_data, - gaiaLinestringPtr line) -{ - switch (line->DimensionModel) - { - case GAIA_XY: - return gaiaGeoJsonGeometryFromLinestring (p_data, line, -1); - case GAIA_XY_Z: - return gaiaGeoJsonGeometryFromLinestringZ (p_data, line, -1); - } - return NULL; -} - -static gaiaGeomCollPtr -geoJSON_buildGeomFromLinestringSrid (struct geoJson_data *p_data, - gaiaLinestringPtr line, int *srid) -{ - switch (line->DimensionModel) - { - case GAIA_XY: - return gaiaGeoJsonGeometryFromLinestring (p_data, line, *srid); - case GAIA_XY_Z: - return gaiaGeoJsonGeometryFromLinestringZ (p_data, line, *srid); - } - return NULL; -} - -/* - * Helper function that determines the number of points in the linked list. - */ -static int -geoJSON_count_points (gaiaPointPtr first) -{ - /* Counts the number of points in the ring. */ - gaiaPointPtr p = first; - int numpoints = 0; - while (p != NULL) - { - numpoints++; - p = p->Next; - } - return numpoints; -} - -/* - * Creates a 2D (xy) ring in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. - * All of the points given to the function are 2D (xy) points. There will be at least 4 points in the list. - * - * Returns the ring defined by the points given to the function. - */ -static gaiaRingPtr -geoJSON_ring_xy (struct geoJson_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaRingPtr ring = NULL; - int numpoints; - int index; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Counts the number of points in the ring. */ - numpoints = geoJSON_count_points (first); - if (numpoints < 4) - return NULL; - - /* Creates and allocates a ring structure. */ - ring = gaiaAllocRing (numpoints); - if (ring == NULL) - return NULL; - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_RING, ring); - - /* Adds every point into the ring structure. */ - p = first; - for (index = 0; index < numpoints; index++) - { - gaiaSetPoint (ring->Coords, index, p->X, p->Y); - p_n = p->Next; - geoJsonMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - - return ring; -} - -/* - * Creates a 3D (xyz) ring in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. - * All of the points given to the function are 3D (xyz) points. There will be at least 4 points in the list. - * - * Returns the ring defined by the points given to the function. - */ -static gaiaRingPtr -geoJSON_ring_xyz (struct geoJson_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaRingPtr ring = NULL; - int numpoints; - int index; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Counts the number of points in the ring. */ - numpoints = geoJSON_count_points (first); - if (numpoints < 4) - return NULL; - - /* Creates and allocates a ring structure. */ - ring = gaiaAllocRingXYZ (numpoints); - if (ring == NULL) - return NULL; - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_RING, ring); - - /* Adds every point into the ring structure. */ - p = first; - for (index = 0; index < numpoints; index++) - { - gaiaSetPointXYZ (ring->Coords, index, p->X, p->Y, p->Z); - p_n = p->Next; - geoJsonMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - - return ring; -} - -/* - * Helper function that will create any type of polygon (xy, xyz) in SpatiaLite. - * - * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. - * The first ring in the linked list is the external ring while the rest (if any) are internal rings. - * All of the rings given to the function are of the same type. There will be at least 1 ring in the list. - * - * Returns the polygon defined by the rings given to the function. - */ -static gaiaPolygonPtr -geoJSON_polygon_any_type (struct geoJson_data *p_data, gaiaRingPtr first) -{ - gaiaRingPtr p; - gaiaRingPtr p_n; - gaiaPolygonPtr polygon; - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Creates and allocates a polygon structure with the exterior ring. */ - polygon = gaiaCreatePolygon (first); - if (polygon == NULL) - return NULL; - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_POLYGON, polygon); - - /* Adds all interior rings into the polygon structure. */ - p = first; - while (p != NULL) - { - p_n = p->Next; - geoJsonMapDynClean (p_data, p); - if (p == first) - gaiaFreeRing (p); - else - gaiaAddRingToPolyg (polygon, p); - p = p_n; - } - - return polygon; -} - -/* - * Creates a 2D (xy) polygon in SpatiaLite - * - * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. - * The first ring in the linked list is the external ring while the rest (if any) are internal rings. - * All of the rings given to the function are 2D (xy) rings. There will be at least 1 ring in the list. - * - * Returns the polygon defined by the rings given to the function. - */ -static gaiaPolygonPtr -geoJSON_polygon_xy (struct geoJson_data *p_data, gaiaRingPtr first) -{ - return geoJSON_polygon_any_type (p_data, first); -} - -/* - * Creates a 3D (xyz) polygon in SpatiaLite - * - * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. - * The first ring in the linked list is the external ring while the rest (if any) are internal rings. - * All of the rings given to the function are 3D (xyz) rings. There will be at least 1 ring in the list. - * - * Returns the polygon defined by the rings given to the function. - */ -static gaiaPolygonPtr -geoJSON_polygon_xyz (struct geoJson_data *p_data, gaiaRingPtr first) -{ - return geoJSON_polygon_any_type (p_data, first); -} - -/* - * Builds a geometry collection from a polygon. - * NOTE: This function may already be implemented in the SpatiaLite code base. If it is, make sure that we - * can use it (ie. it doesn't use any other variables or anything else set by Sandro's parser). If you find - * that we can use an existing function then ignore this one. - */ -static gaiaGeomCollPtr -geoJSON_buildGeomFromPolygon (struct geoJson_data *p_data, - gaiaPolygonPtr polygon) -{ - gaiaGeomCollPtr geom = NULL; - - /* If no pointers are given, return. */ - if (polygon == NULL) - { - return NULL; - } - - /* Creates and allocates a geometry collection containing a multipoint. */ - switch (polygon->DimensionModel) - { - case GAIA_XY: - geom = gaiaAllocGeomColl (); - break; - case GAIA_XY_Z: - geom = gaiaAllocGeomCollXYZ (); - break; - } - if (geom == NULL) - { - return NULL; - } - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_POLYGON; - - /* Stores the location of the first and last polygons in the linked list. */ - geom->FirstPolygon = polygon; - while (polygon != NULL) - { - geoJsonMapDynClean (p_data, polygon); - geom->LastPolygon = polygon; - polygon = polygon->Next; - } - return geom; -} - -static gaiaGeomCollPtr -geoJSON_buildGeomFromPolygonSrid (struct geoJson_data *p_data, - gaiaPolygonPtr polygon, int *srid) -{ - gaiaGeomCollPtr geom = NULL; - - /* If no pointers are given, return. */ - if (polygon == NULL) - { - return NULL; - } - - /* Creates and allocates a geometry collection containing a multipoint. */ - switch (polygon->DimensionModel) - { - case GAIA_XY: - geom = gaiaAllocGeomColl (); - break; - case GAIA_XY_Z: - geom = gaiaAllocGeomCollXYZ (); - break; - } - if (geom == NULL) - { - return NULL; - } - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_POLYGON; - geom->Srid = *srid; - - /* Stores the location of the first and last polygons in the linked list. */ - geom->FirstPolygon = polygon; - while (polygon != NULL) - { - geoJsonMapDynClean (p_data, polygon); - geom->LastPolygon = polygon; - polygon = polygon->Next; - } - return geom; -} - -/* - * Creates a 2D (xy) multipoint object in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points. - * All of the points given to the function are 2D (xy) points. There will be at least 1 point in the list. - * - * Returns a geometry collection containing the created multipoint object. - */ -static gaiaGeomCollPtr -geoJSON_multipoint_xy (struct geoJson_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaGeomCollPtr geom = NULL; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Creates and allocates a geometry collection containing a multipoint. */ - geom = gaiaAllocGeomColl (); - if (geom == NULL) - return NULL; - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_MULTIPOINT; - - /* For every 2D (xy) point, add it to the geometry collection. */ - while (p != NULL) - { - gaiaAddPointToGeomColl (geom, p->X, p->Y); - p_n = p->Next; - geoJsonMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - return geom; -} - -/* - * Creates a 3D (xyz) multipoint object in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points. - * All of the points given to the function are 3D (xyz) points. There will be at least 1 point in the list. - * - * Returns a geometry collection containing the created multipoint object. - */ -static gaiaGeomCollPtr -geoJSON_multipoint_xyz (struct geoJson_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaGeomCollPtr geom = NULL; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Creates and allocates a geometry collection containing a multipoint. */ - geom = gaiaAllocGeomCollXYZ (); - if (geom == NULL) - return NULL; - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_MULTIPOINT; - - /* For every 3D (xyz) point, add it to the geometry collection. */ - while (p != NULL) - { - gaiaAddPointToGeomCollXYZ (geom, p->X, p->Y, p->Z); - p_n = p->Next; - geoJsonMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - return geom; -} - -/* - * Creates a geometry collection containing 2D (xy) linestrings. - * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the - * collection. All of the *linestrings in the list must be 2D (xy) linestrings. There must be at least 1 linestring in the list. - * Returns a pointer to the created geometry collection of 2D linestrings. The geometry must have FirstLinestring pointing to the - * first linestring in the list pointed by first and LastLinestring pointing to the last element of the same list. DimensionModel - * must be GAIA_XY and DimensionType must be *GAIA_TYPE_LINESTRING. - */ - -static gaiaGeomCollPtr -geoJSON_multilinestring_xy (struct geoJson_data *p_data, - gaiaLinestringPtr first) -{ - gaiaLinestringPtr p = first; - gaiaLinestringPtr p_n; - gaiaLinestringPtr new_line; - gaiaGeomCollPtr a = gaiaAllocGeomColl (); - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, a); - a->DeclaredType = GAIA_MULTILINESTRING; - a->DimensionModel = GAIA_XY; - - while (p) - { - new_line = gaiaAddLinestringToGeomColl (a, p->Points); - gaiaCopyLinestringCoords (new_line, p); - p_n = p->Next; - geoJsonMapDynClean (p_data, p); - gaiaFreeLinestring (p); - p = p_n; - } - - return a; -} - -/* - * Returns a geometry collection containing the created multilinestring object (?). - * Creates a geometry collection containing 3D (xyz) linestrings. - * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the - * collection. All of the *linestrings in the list must be 3D (xyz) linestrings. There must be at least 1 linestring in the list. - * Returns a pointer to the created geometry collection of 3D linestrings. The geometry must have FirstLinestring pointing to the - * first linestring in the *list pointed by first and LastLinestring pointing to the last element of the same list. DimensionModel - * must be GAIA_XYZ and DimensionType must be *GAIA_TYPE_LINESTRING. - */ -static gaiaGeomCollPtr -geoJSON_multilinestring_xyz (struct geoJson_data *p_data, - gaiaLinestringPtr first) -{ - gaiaLinestringPtr p = first; - gaiaLinestringPtr p_n; - gaiaLinestringPtr new_line; - gaiaGeomCollPtr a = gaiaAllocGeomCollXYZ (); - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, a); - a->DeclaredType = GAIA_MULTILINESTRING; - a->DimensionModel = GAIA_XY_Z; - - while (p) - { - new_line = gaiaAddLinestringToGeomColl (a, p->Points); - gaiaCopyLinestringCoords (new_line, p); - p_n = p->Next; - geoJsonMapDynClean (p_data, p); - gaiaFreeLinestring (p); - p = p_n; - } - return a; -} - -/* - * Creates a geometry collection containing 2D (xy) polygons. - * - * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should - * be added to the collection. All of the polygons in the list must be 2D (xy) polygons. There must be - * at least 1 polygon in the list. - * - * Returns a pointer to the created geometry collection of 2D polygons. The geometry must have - * FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing - * to the last element of the same list. DimensionModel must be GAIA_XY and DimensionType must - * be GAIA_TYPE_POLYGON. - * - */ -static gaiaGeomCollPtr -geoJSON_multipolygon_xy (struct geoJson_data *p_data, gaiaPolygonPtr first) -{ - gaiaPolygonPtr p = first; - gaiaPolygonPtr p_n; - int i = 0; - gaiaPolygonPtr new_polyg; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - gaiaGeomCollPtr geom = gaiaAllocGeomColl (); - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); - - geom->DeclaredType = GAIA_MULTIPOLYGON; - - while (p) - { - i_ring = p->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); - o_ring = new_polyg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - - for (i = 0; i < new_polyg->NumInteriors; i++) - { - i_ring = p->Interiors + i; - o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - - p_n = p->Next; - geoJsonMapDynClean (p_data, p); - gaiaFreePolygon (p); - p = p_n; - } - - return geom; -} - -/* - * Creates a geometry collection containing 3D (xyz) polygons. - * - * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should be - * added to the collection. All of the polygons in the list must be 3D (xyz) polygons. There must be at - * least 1 polygon in the list. - * - * Returns a pointer to the created geometry collection of 3D polygons. The geometry must have - * FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing to - * the last element of the same list. DimensionModel must be GAIA_XYZ and DimensionType must - * be GAIA_TYPE_POLYGON. - * - */ -static gaiaGeomCollPtr -geoJSON_multipolygon_xyz (struct geoJson_data *p_data, gaiaPolygonPtr first) -{ - gaiaPolygonPtr p = first; - gaiaPolygonPtr p_n; - int i = 0; - gaiaPolygonPtr new_polyg; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - gaiaGeomCollPtr geom = gaiaAllocGeomCollXYZ (); - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); - - geom->DeclaredType = GAIA_MULTIPOLYGON; - - while (p) - { - i_ring = p->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); - o_ring = new_polyg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - - for (i = 0; i < new_polyg->NumInteriors; i++) - { - i_ring = p->Interiors + i; - o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - - p_n = p->Next; - geoJsonMapDynClean (p_data, p); - gaiaFreePolygon (p); - p = p_n; - } - - return geom; -} - -static void -geoJSON_geomColl_common (struct geoJson_data *p_data, gaiaGeomCollPtr org, - gaiaGeomCollPtr dst) -{ -/* -/ helper function: xfers entities between the Origin and Destination -/ Sandro Furieri: 2010 October 12 -*/ - gaiaGeomCollPtr p = org; - gaiaGeomCollPtr p_n; - gaiaPointPtr pt; - gaiaPointPtr pt_n; - gaiaLinestringPtr ln; - gaiaLinestringPtr ln_n; - gaiaPolygonPtr pg; - gaiaPolygonPtr pg_n; - while (p) - { - pt = p->FirstPoint; - while (pt) - { - pt_n = pt->Next; - pt->Next = NULL; - if (dst->FirstPoint == NULL) - dst->FirstPoint = pt; - if (dst->LastPoint != NULL) - dst->LastPoint->Next = pt; - dst->LastPoint = pt; - pt = pt_n; - } - ln = p->FirstLinestring; - while (ln) - { - ln_n = ln->Next; - ln->Next = NULL; - if (dst->FirstLinestring == NULL) - dst->FirstLinestring = ln; - if (dst->LastLinestring != NULL) - dst->LastLinestring->Next = ln; - dst->LastLinestring = ln; - ln = ln_n; - } - pg = p->FirstPolygon; - while (pg) - { - pg_n = pg->Next; - pg->Next = NULL; - if (dst->FirstPolygon == NULL) - dst->FirstPolygon = pg; - if (dst->LastPolygon != NULL) - dst->LastPolygon->Next = pg; - dst->LastPolygon = pg; - pg = pg_n; - } - p_n = p->Next; - p->FirstPoint = NULL; - p->LastPoint = NULL; - p->FirstLinestring = NULL; - p->LastLinestring = NULL; - p->FirstPolygon = NULL; - p->LastPolygon = NULL; - geoJsonMapDynClean (p_data, p); - gaiaFreeGeomColl (p); - p = p_n; - } -} - -/* Creates a 2D (xy) geometry collection in SpatiaLite - * - * first is the first geometry collection in a linked list of geometry collections. - * Each geometry collection represents a single type of object (eg. one could be a POINT, - * another could be a LINESTRING, another could be a MULTILINESTRING, etc.). - * - * The type of object represented by any geometry collection is stored in the declaredType - * field of its struct. For example, if first->declaredType = GAIA_POINT, then first represents a point. - * If first->declaredType = GAIA_MULTIPOINT, then first represents a multipoint. - * - * NOTE: geometry collections cannot contain other geometry collections (have to confirm this - * with Sandro). - * - * The goal of this function is to take the information from all of the structs in the linked list and - * return one geomColl struct containing all of that information. - * - * The integers used for 'declaredType' are defined in gaiageo.h. In this function, the only values - * contained in 'declaredType' that will be encountered will be: - * - * GAIA_POINT, GAIA_LINESTRING, GAIA_POLYGON, - * GAIA_MULTIPOINT, GAIA_MULTILINESTRING, GAIA_MULTIPOLYGON - */ -static gaiaGeomCollPtr -geoJSON_geomColl_xy (struct geoJson_data *p_data, gaiaGeomCollPtr first) -{ - gaiaGeomCollPtr geom = gaiaAllocGeomColl (); - if (geom == NULL) - return NULL; - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - geom->DimensionModel = GAIA_XY; - geoJSON_geomColl_common (p_data, first, geom); - return geom; -} - -/* - * See geomColl_xy for description. - * - * The only difference between this function and geomColl_xy is that the 'declaredType' field of the structs - * in the linked list for this function will only contain the following types: - * - * GAIA_POINTZ, GAIA_LINESTRINGZ, GAIA_POLYGONZ, - * GAIA_MULTIPOINTZ, GAIA_MULTILINESTRINGZ, GAIA_MULTIPOLYGONZ - */ -static gaiaGeomCollPtr -geoJSON_geomColl_xyz (struct geoJson_data *p_data, gaiaGeomCollPtr first) -{ - gaiaGeomCollPtr geom = gaiaAllocGeomColl (); - if (geom == NULL) - return NULL; - geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - geom->DimensionModel = GAIA_XY_Z; - geoJSON_geomColl_common (p_data, first, geom); - return geom; -} - - - -/* -** CAVEAT: we must redefine any Lemon/Flex own macro -*/ -#define YYMINORTYPE GEO_JSON_MINORTYPE -#define YY_CHAR GEO_JSON_YY_CHAR -#define input geoJSON_input -#define ParseAlloc geoJSONParseAlloc -#define ParseFree geoJSONParseFree -#define ParseStackPeak geoJSONParseStackPeak -#define Parse geoJSONParse -#define yyStackEntry geoJSON_yyStackEntry -#define yyzerominor geoJSON_yyzerominor -#define yy_accept geoJSON_yy_accept -#define yy_action geoJSON_yy_action -#define yy_base geoJSON_yy_base -#define yy_buffer_stack geoJSON_yy_buffer_stack -#define yy_buffer_stack_max geoJSON_yy_buffer_stack_max -#define yy_buffer_stack_top geoJSON_yy_buffer_stack_top -#define yy_c_buf_p geoJSON_yy_c_buf_p -#define yy_chk geoJSON_yy_chk -#define yy_def geoJSON_yy_def -#define yy_default geoJSON_yy_default -#define yy_destructor geoJSON_yy_destructor -#define yy_ec geoJSON_yy_ec -#define yy_fatal_error geoJSON_yy_fatal_error -#define yy_find_reduce_action geoJSON_yy_find_reduce_action -#define yy_find_shift_action geoJSON_yy_find_shift_action -#define yy_get_next_buffer geoJSON_yy_get_next_buffer -#define yy_get_previous_state geoJSON_yy_get_previous_state -#define yy_init geoJSON_yy_init -#define yy_init_globals geoJSON_yy_init_globals -#define yy_lookahead geoJSON_yy_lookahead -#define yy_meta geoJSON_yy_meta -#define yy_nxt geoJSON_yy_nxt -#define yy_parse_failed geoJSON_yy_parse_failed -#define yy_pop_parser_stack geoJSON_yy_pop_parser_stack -#define yy_reduce geoJSON_yy_reduce -#define yy_reduce_ofst geoJSON_yy_reduce_ofst -#define yy_shift geoJSON_yy_shift -#define yy_shift_ofst geoJSON_yy_shift_ofst -#define yy_start geoJSON_yy_start -#define yy_state_type geoJSON_yy_state_type -#define yy_syntax_error geoJSON_yy_syntax_error -#define yy_trans_info geoJSON_yy_trans_info -#define yy_try_NUL_trans geoJSON_yy_try_NUL_trans -#define yyParser geoJSON_yyParser -#define yyStackEntry geoJSON_yyStackEntry -#define yyStackOverflow geoJSON_yyStackOverflow -#define yyRuleInfo geoJSON_yyRuleInfo -#define yyunput geoJSON_yyunput -#define yyzerominor geoJSON_yyzerominor -#define yyTraceFILE geoJSON_yyTraceFILE -#define yyTracePrompt geoJSON_yyTracePrompt -#define yyTokenName geoJSON_yyTokenName -#define yyRuleName geoJSON_yyRuleName -#define ParseTrace geoJSON_ParseTrace - -#define yylex geoJSON_yylex -#define YY_DECL int yylex (yyscan_t yyscanner) - - -/* including LEMON generated header */ -#include "geoJSON.h" - - -typedef union -{ - double dval; - int ival; - struct symtab *symp; -} geoJSON_yystype; -#define YYSTYPE geoJSON_yystype - - -/* extern YYSTYPE yylval; */ -YYSTYPE GeoJsonLval; - - - -/* including LEMON generated code */ -#include "geoJSON.c" - - - -/* -** CAVEAT: there is an incompatibility between LEMON and FLEX -** this macro resolves the issue -*/ -#undef yy_accept -#define yy_accept yy_geo_json_flex_accept - - - -/* including FLEX generated code */ -#include "lex.GeoJson.c" - - - -/* -** This is a linked-list struct to store all the values for each token. -** All tokens will have a value of 0, except tokens denoted as NUM. -** NUM tokens are geometry coordinates and will contain the floating -** point number. -*/ -typedef struct geoJsonFlexTokenStruct -{ - double value; - struct geoJsonFlexTokenStruct *Next; -} geoJsonFlexToken; - -/* -** Function to clean up the linked-list of token values. -*/ -static int -geoJSON_cleanup (geoJsonFlexToken * token) -{ - geoJsonFlexToken *ptok; - geoJsonFlexToken *ptok_n; - if (token == NULL) - return 0; - ptok = token; - while (ptok) - { - ptok_n = ptok->Next; - free (ptok); - ptok = ptok_n; - } - return 0; -} - -gaiaGeomCollPtr -gaiaParseGeoJSON (const unsigned char *dirty_buffer) -{ - void *pParser = ParseAlloc (malloc); - /* Linked-list of token values */ - geoJsonFlexToken *tokens = malloc (sizeof (geoJsonFlexToken)); - /* Pointer to the head of the list */ - geoJsonFlexToken *head = tokens; - int yv; - yyscan_t scanner; - struct geoJson_data str_data; - -/* initializing the helper structs */ - str_data.geoJson_line = 1; - str_data.geoJson_col = 1; - str_data.geoJson_parse_error = 0; - str_data.geoJson_first_dyn_block = NULL; - str_data.geoJson_last_dyn_block = NULL; - str_data.result = NULL; - -/* initializing the scanner state */ - GeoJsonlex_init_extra (&str_data, &scanner); - - tokens->Next = NULL; - - GeoJson_scan_string ((char *) dirty_buffer, scanner); - - /* - / Keep tokenizing until we reach the end - / yylex() will return the next matching Token for us. - */ - while ((yv = yylex (scanner)) != 0) - { - if (yv == -1) - { - str_data.geoJson_parse_error = 1; - break; - } - tokens->Next = malloc (sizeof (geoJsonFlexToken)); - tokens->Next->Next = NULL; - /* - /GeoJsonLval is a global variable from FLEX. - /GeoJsonLval is defined in geoJsonLexglobal.h - */ - tokens->Next->value = GeoJsonLval.dval; - /* Pass the token to the wkt parser created from lemon */ - Parse (pParser, yv, &(tokens->Next->value), &str_data); - tokens = tokens->Next; - } - /* This denotes the end of a line as well as the end of the parser */ - Parse (pParser, GEOJSON_NEWLINE, 0, &str_data); - ParseFree (pParser, free); - GeoJsonlex_destroy (scanner); - - /* Assigning the token as the end to avoid seg faults while cleaning */ - tokens->Next = NULL; - geoJSON_cleanup (head); - - if (str_data.geoJson_parse_error) - { - if (str_data.result) - { - /* if a Geometry-result has been produced, the stack is already cleaned */ - gaiaFreeGeomColl (str_data.result); - geoJsonCleanMapDynAlloc (&str_data, 0); - } - else - { - /* otherwise we are required to clean the stack */ - geoJsonCleanMapDynAlloc (&str_data, 1); - } - return NULL; - } - - geoJsonCleanMapDynAlloc (&str_data, 0); - - if (str_data.result == NULL) - return NULL; - if (!geoJsonCheckValidity (str_data.result)) - { - gaiaFreeGeomColl (str_data.result); - return NULL; - } - - gaiaMbrGeometry (str_data.result); - - return str_data.result; -} - - -/* -** CAVEAT: we must now undefine any Lemon/Flex own macro -*/ -#undef YYNOCODE -#undef YYNSTATE -#undef YYNRULE -#undef YY_SHIFT_MAX -#undef YY_SHIFT_USE_DFLT -#undef YY_REDUCE_USE_DFLT -#undef YY_REDUCE_MAX -#undef YY_FLUSH_BUFFER -#undef YY_DO_BEFORE_ACTION -#undef YY_NUM_RULES -#undef YY_END_OF_BUFFER -#undef YY_END_FILE -#undef YYACTIONTYPE -#undef YY_SZ_ACTTAB -#undef YY_NEW_FILE -#undef BEGIN -#undef YY_START -#undef YY_CURRENT_BUFFER -#undef YY_CURRENT_BUFFER_LVALUE -#undef YY_STATE_BUF_SIZE -#undef YY_DECL -#undef YY_FATAL_ERROR -#undef YYMINORTYPE -#undef YY_CHAR -#undef YYSTYPE -#undef input -#undef ParseAlloc -#undef ParseFree -#undef ParseStackPeak -#undef Parse -#undef yyalloc -#undef yyfree -#undef yyin -#undef yyleng -#undef yyless -#undef yylex -#undef yylineno -#undef yyout -#undef yyrealloc -#undef yyrestart -#undef yyStackEntry -#undef yytext -#undef yywrap -#undef yyzerominor -#undef yy_accept -#undef yy_action -#undef yy_base -#undef yy_buffer_stack -#undef yy_buffer_stack_max -#undef yy_buffer_stack_top -#undef yy_c_buf_p -#undef yy_chk -#undef yy_create_buffer -#undef yy_def -#undef yy_default -#undef yy_delete_buffer -#undef yy_destructor -#undef yy_ec -#undef yy_fatal_error -#undef yy_find_reduce_action -#undef yy_find_shift_action -#undef yy_flex_debug -#undef yy_flush_buffer -#undef yy_get_next_buffer -#undef yy_get_previous_state -#undef yy_init -#undef yy_init_buffer -#undef yy_init_globals -#undef yy_load_buffer -#undef yy_load_buffer_state -#undef yy_lookahead -#undef yy_meta -#undef yy_new_buffer -#undef yy_nxt -#undef yy_parse_failed -#undef yy_pop_parser_stack -#undef yy_reduce -#undef yy_reduce_ofst -#undef yy_set_bol -#undef yy_set_interactive -#undef yy_shift -#undef yy_shift_ofst -#undef yy_start -#undef yy_state_type -#undef yy_switch_to_buffer -#undef yy_syntax_error -#undef yy_trans_info -#undef yy_try_NUL_trans -#undef yyParser -#undef yyStackEntry -#undef yyStackOverflow -#undef yyRuleInfo -#undef yytext_ptr -#undef yyunput -#undef yyzerominor -#undef ParseARG_SDECL -#undef ParseARG_PDECL -#undef ParseARG_FETCH -#undef ParseARG_STORE -#undef REJECT -#undef yymore -#undef YY_MORE_ADJ -#undef YY_RESTORE_YY_MORE_OFFSET -#undef YY_LESS_LINENO -#undef yyTracePrompt -#undef yyTraceFILE -#undef yyTokenName -#undef yyRuleName -#undef ParseTrace - -#undef yylex -#undef YY_DECL diff --git a/src/spatialite/src/gaiageo/gg_geodesic.c b/src/spatialite/src/gaiageo/gg_geodesic.c deleted file mode 100644 index d57ba4c..0000000 --- a/src/spatialite/src/gaiageo/gg_geodesic.c +++ /dev/null @@ -1,405 +0,0 @@ -/* - - gg_geodesic.c -- Gaia functions for geodesic calculations - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include - -#include - -#define DEG2RAD 0.0174532925199432958 -#define PI 3.14159265358979323846 - -struct ellipses -{ - char *name; - double a; /* equatorial radius - meters */ - double rf; /* reverse flattening */ - double b; /* polar radius - meters */ -}; - -#if defined(_WIN32) && !defined(__MINGW32__) -#define isnan _isnan -#endif /* not WIN32-MSVC */ - -GAIAGEO_DECLARE int -gaiaEllipseParams (const char *name, double *a, double *b, double *rf) -{ -/* trying to find ellipse params */ - struct ellipses ellps_list[] = { - {"MERIT", 6378137.0, 298.257, -1.0}, - {"SGS85", 6378136.0, 298.257, -1.0}, - {"GRS80", 6378137.0, 298.257222101, -1.0}, - {"IAU76", 6378140.0, 298.257, -1.0}, - {"airy", 6377563.396, -1.0, 6356256.910}, - {"APL4.9", 6378137.0, 298.25, -1.0}, - {"NWL9D", 6378145.0, 298.25, -1.0}, - {"mod_airy", 6377340.189, -1.0, 6356034.446}, - {"andrae", 6377104.43, 300.0, -1.0}, - {"aust_SA", 378160.0, 298.25, -1.0}, - {"GRS67", 6378160.0, 298.2471674270, -1.0}, - {"bessel", 6377397.155, 299.1528128, -1.0}, - {"bess_nam", 6377483.865, 299.1528128, -1.0}, - {"clrk66", 6378206.4, -1.0, 6356583.8}, - {"clrk80", 6378249.145, 293.4663, -1.0}, - {"CPM", 6375738.7, 334.29, -1.0}, - {"delmbr", 6376428.0, 311.5, -1.0}, - {"engelis", 6378136.05, 298.2566, -1.0}, - {"evrst30", 6377276.345, 300.8017, -1.0}, - {"evrst48", 6377304.063, 300.8017, -1.0}, - {"evrst56", 6377301.243, 300.8017, -1.0}, - {"evrst69", 6377295.664, 300.8017, -1.0}, - {"evrstSS", 6377298.556, 300.8017, -1.0}, - {"fschr60", 6378166.0, 298.3, -1.0}, - {"fschr60m", 6378155.0, 298.3, -1.0}, - {"fschr68", 6378150.0, 298.3, -1.0}, - {"helmert", 6378200.0, 298.3, -1.0}, - {"hough", 6378270.0, 297.0, -1.0}, - {"intl", 6378388.0, 297.0, -1.0}, - {"krass", 6378245.0, 298.3, -1.0}, - {"kaula", 6378163.0, 298.24, -1.0}, - {"lerch", 6378139.0, 298.257, -1.0}, - {"mprts", 6397300.0, 191.0, -1.0}, - {"new_intl", 6378157.5, -1.0, 6356772.2}, - {"plessis", 6376523.0, -1.0, 6355863.0}, - {"SEasia", 6378155.0, -1.0, 6356773.3205}, - {"walbeck", 6376896.0, -1.0, 6355834.8467}, - {"WGS60", 6378165.0, 298.3, -1.0}, - {"WGS66", 6378145.0, 298.25, -1.0}, - {"WGS72", 6378135.0, 298.26, -1.0}, - {"WGS84", 6378137.0, 298.257223563, -1.0}, - {"sphere", 6370997.0, -1.0, 6370997.0}, - {NULL, -1.0, -1.0, -1.0} - }; - struct ellipses *pe = ellps_list; - while (1) - { - if (pe->name == NULL) - break; - if (strcmp (pe->name, name) == 0) - { - *a = pe->a; - if (pe->rf < 0.0) - { - *b = pe->b; - *rf = 1.0 / ((pe->a - pe->b) / pe->a); - } - else - { - *b = (pe->a * (1.0 - (1.0 / pe->rf))); - *rf = pe->rf; - } - return 1; - } - pe++; - } - return 0; -} - -GAIAGEO_DECLARE double -gaiaGreatCircleDistance (double a, double b, double lat1, double lon1, - double lat2, double lon2) -{ -/* -/ Calculate great-circle distance (in m) between two points specified by -/ latitude/longitude (in decimal degrees) using Aviation Formulary -/ -/ http://williams.best.vwh.net/avform.htm#Dist -/ -*/ - double latrad1 = lat1 * DEG2RAD; - double lonrad1 = lon1 * DEG2RAD; - double latrad2 = lat2 * DEG2RAD; - double lonrad2 = lon2 * DEG2RAD; - double avg_radius; - double k1 = (sin ((latrad1 - latrad2) / 2.0)); - double k2 = (sin ((lonrad1 - lonrad2) / 2.0)); - double dist; - dist = - 2.0 * asin (sqrt (k1 * k1 + cos (latrad1) * cos (latrad2) * k2 * k2)); - if (dist < 0.0) - dist = dist + PI; - if (a == b) - avg_radius = a; - else - avg_radius = (2.0 * a + b) / 3.0; - dist = dist * avg_radius; - return dist; -} - -GAIAGEO_DECLARE double -gaiaGeodesicDistance (double a, double b, double rf, double lat1, double lon1, - double lat2, double lon2) -{ -/* -/ Calculate geodesic distance (in m) -/ between two points specified by latitude/longitude -/ (in decimal degrees) using Vincenty inverse formula for ellipsoids -/ -/ based on original JavaScript by (c) Chris Veness 2002-2008 -/ http://www.movable-type.co.uk/scripts/latlong-vincenty.html -/ -*/ - double f = 1.0 / rf; - double L = (lon2 - lon1) * DEG2RAD; - double U1 = atan ((1.0 - f) * tan (lat1 * DEG2RAD)); - double U2 = atan ((1.0 - f) * tan (lat2 * DEG2RAD)); - double sinU1 = sin (U1); - double cosU1 = cos (U1); - double sinU2 = sin (U2); - double cosU2 = cos (U2); - double lambda = L; - double lambdaP; - double sinLambda; - double cosLambda; - double sinSigma; - double cosSigma; - double sigma; - double sinAlpha; - double cosSqAlpha; - double cos2SigmaM; - double C; - double uSq; - double A; - double B; - double deltaSigma; - double s; - int iterLimit = 100; - do - { - sinLambda = sin (lambda); - cosLambda = cos (lambda); - sinSigma = - sqrt ((cosU2 * sinLambda) * (cosU2 * sinLambda) + - (cosU1 * sinU2 - - sinU1 * cosU2 * cosLambda) * (cosU1 * sinU2 - - sinU1 * cosU2 * cosLambda)); - if (sinSigma == 0.0) - return 0.0; /* co-incident points */ - cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda; - sigma = atan2 (sinSigma, cosSigma); - sinAlpha = cosU1 * cosU2 * sinLambda / sinSigma; - cosSqAlpha = 1.0 - sinAlpha * sinAlpha; - cos2SigmaM = cosSigma - 2.0 * sinU1 * sinU2 / cosSqAlpha; - if (isnan (cos2SigmaM)) - cos2SigmaM = 0; /* equatorial line */ - C = f / 16.0 * cosSqAlpha * (4.0 + f * (4.0 - 3.0 * cosSqAlpha)); - lambdaP = lambda; - lambda = - L + (1.0 - C) * f * sinAlpha * (sigma + - C * sinSigma * (cos2SigmaM + - C * cosSigma * - (-1.0 + - 2.0 * - cos2SigmaM * - cos2SigmaM))); - } - while (fabs (lambda - lambdaP) > 1e-12 && --iterLimit > 0); - if (iterLimit == 0) - return -1.0; /* formula failed to converge */ - uSq = cosSqAlpha * (a * a - b * b) / (b * b); - A = 1.0 + uSq / 16384.0 * (4096.0 + - uSq * (-768.0 + uSq * (320.0 - 175.0 * uSq))); - B = uSq / 1024.0 * (256.0 + uSq * (-128.0 + uSq * (74.0 - 47.0 * uSq))); - deltaSigma = - B * sinSigma * (cos2SigmaM + - B / 4.0 * (cosSigma * - (-1.0 + 2.0 * cos2SigmaM * cos2SigmaM) - - B / 6.0 * cos2SigmaM * (-3.0 + - 4.0 * sinSigma * - sinSigma) * (-3.0 + - 4.0 * - cos2SigmaM - * - cos2SigmaM))); - s = b * A * (sigma - deltaSigma); - return s; -} - -GAIAGEO_DECLARE void -gaiaFree (void *ptr) -{ -/* freeing a generic memory allocation */ - if (!ptr) - return; - free (ptr); -} - -GAIAGEO_DECLARE double -gaiaGreatCircleTotalLength (double a, double b, int dims, double *coords, - int vert) -{ -/* computing the GreatCircle total length for some Linestring/Ring */ - int iv; - double x1 = 0.0; - double y1 = 0.0; - double x2; - double y2; - double z; - double m; - double len = 0.0; - for (iv = 0; iv < vert; iv++) - { - if (dims == GAIA_XY_Z) - { - gaiaGetPointXYZ (coords, iv, &x2, &y2, &z); - } - else if (dims == GAIA_XY_M) - { - gaiaGetPointXYM (coords, iv, &x2, &y2, &m); - } - else if (dims == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (coords, iv, &x2, &y2, &z, &m); - } - else - { - gaiaGetPoint (coords, iv, &x2, &y2); - } - if (iv > 0) - len += gaiaGreatCircleDistance (a, b, y1, x1, y2, x2); - x1 = x2; - y1 = y2; - } - return len; -} - -GAIAGEO_DECLARE double -gaiaGeodesicTotalLength (double a, double b, double rf, int dims, - double *coords, int vert) -{ -/* computing the Geodesic total length for some Linestring/Ring */ - int iv; - double x1 = 0.0; - double y1 = 0.0; - double x2; - double y2; - double z; - double m; - double l; - double len = 0.0; - for (iv = 0; iv < vert; iv++) - { - if (dims == GAIA_XY_Z) - { - gaiaGetPointXYZ (coords, iv, &x2, &y2, &z); - } - else if (dims == GAIA_XY_M) - { - gaiaGetPointXYM (coords, iv, &x2, &y2, &m); - } - else if (dims == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (coords, iv, &x2, &y2, &z, &m); - } - else - { - gaiaGetPoint (coords, iv, &x2, &y2); - } - if (iv > 0) - { - l = gaiaGeodesicDistance (a, b, rf, y1, x1, y2, x2); - if (l < 0.0) - return -1.0; - len += l; - } - x1 = x2; - y1 = y2; - } - return len; -} - -GAIAGEO_DECLARE int -gaiaConvertLength (double value, int unit_from, int unit_to, double *cvt) -{ -/* converting length from one unit to another */ - double m; - double factors[] = { - 1000.0, 1.0, 0.1, 0.01, 0.001, 1852.0, 0.0254, 0.3048, 0.9144, - 1609.344, 1.8288, 20.1168, 0.201168, 1.0, 0.304800609601219, - 0.914401828803658, 20.11684023368047, 1609.347218694437, 0.91439523, - 0.30479841, 20.11669506 - }; - factors[GAIA_US_IN] /= 39.37; - if (unit_from < GAIA_MIN_UNIT || unit_from > GAIA_MAX_UNIT) - return 0; - if (unit_to < GAIA_MIN_UNIT || unit_to > GAIA_MAX_UNIT) - return 0; - if (unit_from == unit_to) - { - /* same unit */ - *cvt = value; - } - else if (unit_from == GAIA_M) - { - /* from Meters to .. */ - *cvt = value / factors[unit_to]; - } - else if (unit_to == GAIA_M) - { - /* from .. to Meters */ - *cvt = value * factors[unit_from]; - } - else - { - m = value * factors[unit_from]; - *cvt = m / factors[unit_to]; - } - return 1; -} - -#undef DEG2RAD -#undef PI diff --git a/src/spatialite/src/gaiageo/gg_geometries.c b/src/spatialite/src/gaiageo/gg_geometries.c deleted file mode 100644 index ae8ceb2..0000000 --- a/src/spatialite/src/gaiageo/gg_geometries.c +++ /dev/null @@ -1,4538 +0,0 @@ -/* - - gg_geometries.c -- Gaia geometric objects - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include - -#include - -GAIAGEO_DECLARE gaiaPointPtr -gaiaAllocPoint (double x, double y) -{ -/* POINT object constructor */ - gaiaPointPtr p = malloc (sizeof (gaiaPoint)); - p->X = x; - p->Y = y; - p->Z = 0.0; - p->M = 0.0; - p->DimensionModel = GAIA_XY; - p->Next = NULL; - p->Prev = NULL; - return p; -} - -GAIAGEO_DECLARE gaiaPointPtr -gaiaAllocPointXYZ (double x, double y, double z) -{ -/* POINT object constructor */ - gaiaPointPtr p = malloc (sizeof (gaiaPoint)); - p->X = x; - p->Y = y; - p->Z = z; - p->M = 0.0; - p->DimensionModel = GAIA_XY_Z; - p->Next = NULL; - p->Prev = NULL; - return p; -} - -GAIAGEO_DECLARE gaiaPointPtr -gaiaAllocPointXYM (double x, double y, double m) -{ -/* POINT object constructor */ - gaiaPointPtr p = malloc (sizeof (gaiaPoint)); - p->X = x; - p->Y = y; - p->Z = 0.0; - p->M = m; - p->DimensionModel = GAIA_XY_M; - p->Next = NULL; - p->Prev = NULL; - return p; -} - -GAIAGEO_DECLARE gaiaPointPtr -gaiaAllocPointXYZM (double x, double y, double z, double m) -{ -/* POINT object constructor */ - gaiaPointPtr p = malloc (sizeof (gaiaPoint)); - p->X = x; - p->Y = y; - p->Z = z; - p->M = m; - p->DimensionModel = GAIA_XY_Z_M; - p->Next = NULL; - p->Prev = NULL; - return p; -} - -GAIAGEO_DECLARE void -gaiaFreePoint (gaiaPointPtr ptr) -{ -/* POINT object destructor */ - if (ptr != NULL) - free (ptr); -} - -GAIAGEO_DECLARE gaiaLinestringPtr -gaiaAllocLinestring (int vert) -{ -/* LINESTRING object constructor */ - gaiaLinestringPtr p = malloc (sizeof (gaiaLinestring)); - p->Coords = malloc (sizeof (double) * (vert * 2)); - p->Points = vert; - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY; - p->Next = NULL; - return p; -} - -GAIAGEO_DECLARE gaiaLinestringPtr -gaiaAllocLinestringXYZ (int vert) -{ -/* LINESTRING object constructor */ - gaiaLinestringPtr p = malloc (sizeof (gaiaLinestring)); - p->Coords = malloc (sizeof (double) * (vert * 3)); - p->Points = vert; - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY_Z; - p->Next = NULL; - return p; -} - -GAIAGEO_DECLARE gaiaLinestringPtr -gaiaAllocLinestringXYM (int vert) -{ -/* LINESTRING object constructor */ - gaiaLinestringPtr p = malloc (sizeof (gaiaLinestring)); - p->Coords = malloc (sizeof (double) * (vert * 3)); - p->Points = vert; - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY_M; - p->Next = NULL; - return p; -} - -GAIAGEO_DECLARE gaiaLinestringPtr -gaiaAllocLinestringXYZM (int vert) -{ -/* LINESTRING object constructor */ - gaiaLinestringPtr p = malloc (sizeof (gaiaLinestring)); - p->Coords = malloc (sizeof (double) * (vert * 4)); - p->Points = vert; - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY_Z_M; - p->Next = NULL; - return p; -} - -GAIAGEO_DECLARE void -gaiaFreeLinestring (gaiaLinestringPtr ptr) -{ -/* LINESTRING object desctructror */ - if (ptr) - { - if (ptr->Coords) - free (ptr->Coords); - free (ptr); - } -} - -GAIAGEO_DECLARE int -gaiaLineGetPoint (gaiaLinestringPtr ln, int v, double *x, double *y, double *z, - double *m) -{ -/* SAFE - getting coords for a vertex in LINESTRING */ - double vx; - double vy; - double vz; - double vm; - *x = 0.0; - *y = 0.0; - *z = 0.0; - *m = 0.0; - if (!ln) - return 0; - if (v < 0 || v >= ln->Points) - return 0; - switch (ln->DimensionModel) - { - case GAIA_XY: - gaiaGetPoint (ln->Coords, v, &vx, &vy); - *x = vx; - *y = vy; - break; - case GAIA_XY_Z: - gaiaGetPointXYZ (ln->Coords, v, &vx, &vy, &vz); - *x = vx; - *y = vy; - *z = vz; - break; - case GAIA_XY_M: - gaiaGetPointXYM (ln->Coords, v, &vx, &vy, &vm); - *x = vx; - *y = vy; - *m = vm; - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (ln->Coords, v, &vx, &vy, &vz, &vm); - *x = vx; - *y = vy; - *z = vz; - *m = vm; - break; - default: - return 0; - }; - return 1; -} - -GAIAGEO_DECLARE int -gaiaLineSetPoint (gaiaLinestringPtr ln, int v, double x, double y, double z, - double m) -{ -/* SAFE - setting coords for a vertex in RING */ - if (!ln) - return 0; - if (v < 0 || v >= ln->Points) - return 0; - switch (ln->DimensionModel) - { - case GAIA_XY: - gaiaSetPoint (ln->Coords, v, x, y); - break; - case GAIA_XY_Z: - gaiaSetPointXYZ (ln->Coords, v, x, y, z); - break; - case GAIA_XY_M: - gaiaSetPointXYM (ln->Coords, v, x, y, m); - break; - case GAIA_XY_Z_M: - gaiaSetPointXYZM (ln->Coords, v, x, y, z, m); - break; - default: - return 0; - }; - return 1; -} - -GAIAGEO_DECLARE void -gaiaCopyLinestringCoords (gaiaLinestringPtr dst, gaiaLinestringPtr src) -{ -/* -/ copying coords from one Linestring to another -/ maybe, converting from one Dimension Model to a different one -*/ - int iv; - double x; - double y; - double z; - double m; - if (!src) - return; - if (!dst) - return; - if (src->Points != dst->Points) - return; - for (iv = 0; iv < dst->Points; iv++) - { - z = 0.0; - m = 0.0; - if (src->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (src->Coords, iv, &x, &y, &z); - } - else if (src->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (src->Coords, iv, &x, &y, &m); - } - else if (src->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (src->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (src->Coords, iv, &x, &y); - } - if (dst->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (dst->Coords, iv, x, y, z); - } - else if (dst->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (dst->Coords, iv, x, y, m); - } - else if (dst->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (dst->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (dst->Coords, iv, x, y); - } - } -} - -GAIAGEO_DECLARE gaiaLinestringPtr -gaiaCloneLinestring (gaiaLinestringPtr line) -{ -/* clones a LINESTRING */ - gaiaLinestringPtr new_line; - if (!line) - return NULL; - if (line->DimensionModel == GAIA_XY_Z) - new_line = gaiaAllocLinestringXYZ (line->Points); - else if (line->DimensionModel == GAIA_XY_M) - new_line = gaiaAllocLinestringXYM (line->Points); - else if (line->DimensionModel == GAIA_XY_Z_M) - new_line = gaiaAllocLinestringXYZM (line->Points); - else - new_line = gaiaAllocLinestring (line->Points); - gaiaCopyLinestringCoords (new_line, line); - return new_line; -} - -GAIAGEO_DECLARE void -gaiaCopyLinestringCoordsReverse (gaiaLinestringPtr dst, gaiaLinestringPtr src) -{ -/* -/ copying coords from one Linestring to another in reverse order -/ maybe, converting from one Dimension Model to a different one -*/ - int iv; - int iv2 = 0; - double x; - double y; - double z; - double m; - if (!src) - return; - if (!dst) - return; - if (src->Points != dst->Points) - return; - for (iv = src->Points - 1; iv >= 0; iv--) - { - z = 0.0; - m = 0.0; - if (src->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (src->Coords, iv, &x, &y, &z); - } - else if (src->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (src->Coords, iv, &x, &y, &m); - } - else if (src->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (src->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (src->Coords, iv, &x, &y); - } - if (dst->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (dst->Coords, iv2, x, y, z); - } - else if (dst->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (dst->Coords, iv2, x, y, m); - } - else if (dst->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (dst->Coords, iv2, x, y, z, m); - } - else - { - gaiaSetPoint (dst->Coords, iv2, x, y); - } - iv2++; - } -} - -GAIAGEO_DECLARE gaiaLinestringPtr -gaiaCloneLinestringSpecial (gaiaLinestringPtr line, int mode) -{ -/* clones a LINESTRING (special) */ - gaiaLinestringPtr new_line; - if (!line) - return NULL; - if (mode != GAIA_REVERSE_ORDER) - return gaiaCloneLinestring (line); - - if (line->DimensionModel == GAIA_XY_Z) - new_line = gaiaAllocLinestringXYZ (line->Points); - else if (line->DimensionModel == GAIA_XY_M) - new_line = gaiaAllocLinestringXYM (line->Points); - else if (line->DimensionModel == GAIA_XY_Z_M) - new_line = gaiaAllocLinestringXYZM (line->Points); - else - new_line = gaiaAllocLinestring (line->Points); - gaiaCopyLinestringCoordsReverse (new_line, line); - return new_line; -} - -GAIAGEO_DECLARE gaiaRingPtr -gaiaAllocRing (int vert) -{ -/* ring object constructor */ - gaiaRingPtr p = malloc (sizeof (gaiaRing)); - p->Coords = malloc (sizeof (double) * (vert * 2)); - p->Points = vert; - p->Link = NULL; - p->Clockwise = 0; - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY; - p->Next = NULL; - return p; -} - -GAIAGEO_DECLARE gaiaRingPtr -gaiaAllocRingXYZ (int vert) -{ -/* ring object constructor */ - gaiaRingPtr p = malloc (sizeof (gaiaRing)); - p->Coords = malloc (sizeof (double) * (vert * 3)); - p->Points = vert; - p->Link = NULL; - p->Clockwise = 0; - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY_Z; - p->Next = NULL; - return p; -} - -GAIAGEO_DECLARE gaiaRingPtr -gaiaAllocRingXYM (int vert) -{ -/* ring object constructor */ - gaiaRingPtr p = malloc (sizeof (gaiaRing)); - p->Coords = malloc (sizeof (double) * (vert * 3)); - p->Points = vert; - p->Link = NULL; - p->Clockwise = 0; - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY_M; - p->Next = NULL; - return p; -} - -GAIAGEO_DECLARE gaiaRingPtr -gaiaAllocRingXYZM (int vert) -{ -/* ring object constructor */ - gaiaRingPtr p = malloc (sizeof (gaiaRing)); - p->Coords = malloc (sizeof (double) * (vert * 4)); - p->Points = vert; - p->Link = NULL; - p->Clockwise = 0; - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY_Z_M; - p->Next = NULL; - return p; -} - -GAIAGEO_DECLARE void -gaiaFreeRing (gaiaRingPtr ptr) -{ -/* ring object destructor */ - if (ptr) - { - if (ptr->Coords) - free (ptr->Coords); - free (ptr); - } -} - -GAIAGEO_DECLARE int -gaiaRingGetPoint (gaiaRingPtr rng, int v, double *x, double *y, double *z, - double *m) -{ -/* SAFE - getting coords for a vertex in RING */ - double vx; - double vy; - double vz; - double vm; - *x = 0.0; - *y = 0.0; - *z = 0.0; - *m = 0.0; - if (!rng) - return 0; - if (v < 0 || v >= rng->Points) - return 0; - switch (rng->DimensionModel) - { - case GAIA_XY: - gaiaGetPoint (rng->Coords, v, &vx, &vy); - *x = vx; - *y = vy; - break; - case GAIA_XY_Z: - gaiaGetPointXYZ (rng->Coords, v, &vx, &vy, &vz); - *x = vx; - *y = vy; - *z = vz; - break; - case GAIA_XY_M: - gaiaGetPointXYM (rng->Coords, v, &vx, &vy, &vm); - *x = vx; - *y = vy; - *m = vm; - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (rng->Coords, v, &vx, &vy, &vz, &vm); - *x = vx; - *y = vy; - *z = vz; - *m = vm; - break; - default: - return 0; - }; - return 1; -} - -GAIAGEO_DECLARE int -gaiaRingSetPoint (gaiaRingPtr rng, int v, double x, double y, double z, - double m) -{ -/* SAFE - getting coords for a vertex in RING */ - if (!rng) - return 0; - if (v < 0 || v >= rng->Points) - return 0; - switch (rng->DimensionModel) - { - case GAIA_XY: - gaiaSetPoint (rng->Coords, v, x, y); - break; - case GAIA_XY_Z: - gaiaSetPointXYZ (rng->Coords, v, x, y, z); - break; - case GAIA_XY_M: - gaiaSetPointXYM (rng->Coords, v, x, y, m); - break; - case GAIA_XY_Z_M: - gaiaSetPointXYZM (rng->Coords, v, x, y, z, m); - break; - default: - return 0; - }; - return 1; -} - -GAIAGEO_DECLARE void -gaiaCopyRingCoords (gaiaRingPtr dst, gaiaRingPtr src) -{ -/* -/ copying coords from one Ring to another -/ maybe, converting from one Dimension Model to a different one -*/ - int iv; - double x; - double y; - double z; - double m; - if (!src) - return; - if (!dst) - return; - if (src->Points != dst->Points) - return; - for (iv = 0; iv < dst->Points; iv++) - { - z = 0.0; - m = 0.0; - if (src->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (src->Coords, iv, &x, &y, &z); - } - else if (src->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (src->Coords, iv, &x, &y, &m); - } - else if (src->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (src->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (src->Coords, iv, &x, &y); - } - if (dst->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (dst->Coords, iv, x, y, z); - } - else if (dst->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (dst->Coords, iv, x, y, m); - } - else if (dst->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (dst->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (dst->Coords, iv, x, y); - } - } -} - -GAIAGEO_DECLARE gaiaRingPtr -gaiaCloneRing (gaiaRingPtr ring) -{ -/* clones a RING */ - gaiaRingPtr new_ring; - if (!ring) - return NULL; - if (ring->DimensionModel == GAIA_XY_Z) - new_ring = gaiaAllocRingXYZ (ring->Points); - else if (ring->DimensionModel == GAIA_XY_M) - new_ring = gaiaAllocRingXYM (ring->Points); - else if (ring->DimensionModel == GAIA_XY_Z_M) - new_ring = gaiaAllocRingXYZM (ring->Points); - else - new_ring = gaiaAllocRing (ring->Points); - gaiaCopyRingCoords (new_ring, ring); - return new_ring; -} - -GAIAGEO_DECLARE void -gaiaCopyRingCoordsReverse (gaiaRingPtr dst, gaiaRingPtr src) -{ -/* -/ copying coords from one Ring to another in reverse order -/ maybe, converting from one Dimension Model to a different one -*/ - int iv; - int iv2 = 0; - double x; - double y; - double z; - double m; - if (!src) - return; - if (!dst) - return; - if (src->Points != dst->Points) - return; - for (iv = src->Points - 1; iv >= 0; iv--) - { - z = 0.0; - m = 0.0; - if (src->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (src->Coords, iv, &x, &y, &z); - } - else if (src->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (src->Coords, iv, &x, &y, &m); - } - else if (src->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (src->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (src->Coords, iv, &x, &y); - } - if (dst->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (dst->Coords, iv2, x, y, z); - } - else if (dst->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (dst->Coords, iv2, x, y, m); - } - else if (dst->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (dst->Coords, iv2, x, y, z, m); - } - else - { - gaiaSetPoint (dst->Coords, iv2, x, y); - } - iv2++; - } -} - -GAIAGEO_DECLARE gaiaRingPtr -gaiaCloneRingSpecial (gaiaRingPtr ring, int mode) -{ -/* clones a RING (special) */ - gaiaRingPtr new_ring; - if (!ring) - return NULL; - if (mode != GAIA_REVERSE_ORDER) - return gaiaCloneRing (ring); - - if (ring->DimensionModel == GAIA_XY_Z) - new_ring = gaiaAllocRingXYZ (ring->Points); - else if (ring->DimensionModel == GAIA_XY_M) - new_ring = gaiaAllocRingXYM (ring->Points); - else if (ring->DimensionModel == GAIA_XY_Z_M) - new_ring = gaiaAllocRingXYZM (ring->Points); - else - new_ring = gaiaAllocRing (ring->Points); - gaiaCopyRingCoordsReverse (new_ring, ring); - return new_ring; -} - -GAIAGEO_DECLARE gaiaPolygonPtr -gaiaClonePolygon (gaiaPolygonPtr polyg) -{ -/* clones a POLYGON */ - int ib; - gaiaPolygonPtr new_polyg; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - if (!polyg) - return NULL; - i_ring = polyg->Exterior; - if (polyg->DimensionModel == GAIA_XY_Z) - new_polyg = gaiaAllocPolygonXYZ (i_ring->Points, polyg->NumInteriors); - else if (polyg->DimensionModel == GAIA_XY_M) - new_polyg = gaiaAllocPolygonXYM (i_ring->Points, polyg->NumInteriors); - else if (polyg->DimensionModel == GAIA_XY_Z_M) - new_polyg = gaiaAllocPolygonXYZM (i_ring->Points, polyg->NumInteriors); - else - new_polyg = gaiaAllocPolygon (i_ring->Points, polyg->NumInteriors); - o_ring = new_polyg->Exterior; -/* copying points for the EXTERIOR RING */ - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < new_polyg->NumInteriors; ib++) - { - /* copying each INTERIOR RING [if any] */ - i_ring = polyg->Interiors + ib; - o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - return new_polyg; -} - -GAIAGEO_DECLARE gaiaPolygonPtr -gaiaClonePolygonSpecial (gaiaPolygonPtr polyg, int mode) -{ -/* clones a POLYGON (special) */ - int ib; - gaiaPolygonPtr new_polyg; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - if (!polyg) - return NULL; - if (mode == GAIA_REVERSE_ORDER || mode == GAIA_LHR_ORDER) - ; - else - return gaiaClonePolygon (polyg); - - i_ring = polyg->Exterior; - if (polyg->DimensionModel == GAIA_XY_Z) - new_polyg = gaiaAllocPolygonXYZ (i_ring->Points, polyg->NumInteriors); - else if (polyg->DimensionModel == GAIA_XY_M) - new_polyg = gaiaAllocPolygonXYM (i_ring->Points, polyg->NumInteriors); - else if (polyg->DimensionModel == GAIA_XY_Z_M) - new_polyg = gaiaAllocPolygonXYZM (i_ring->Points, polyg->NumInteriors); - else - new_polyg = gaiaAllocPolygon (i_ring->Points, polyg->NumInteriors); - o_ring = new_polyg->Exterior; -/* copying points for the EXTERIOR RING */ - if (mode == GAIA_REVERSE_ORDER) - gaiaCopyRingCoordsReverse (o_ring, i_ring); - else - { - gaiaClockwise (i_ring); - if (i_ring->Clockwise) - gaiaCopyRingCoords (o_ring, i_ring); - else - gaiaCopyRingCoordsReverse (o_ring, i_ring); - } - for (ib = 0; ib < new_polyg->NumInteriors; ib++) - { - /* copying each INTERIOR RING [if any] */ - i_ring = polyg->Interiors + ib; - o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); - if (mode == GAIA_REVERSE_ORDER) - gaiaCopyRingCoordsReverse (o_ring, i_ring); - else - { - gaiaClockwise (i_ring); - if (i_ring->Clockwise) - gaiaCopyRingCoordsReverse (o_ring, i_ring); - else - gaiaCopyRingCoords (o_ring, i_ring); - } - } - return new_polyg; -} - -GAIAGEO_DECLARE gaiaPolygonPtr -gaiaAllocPolygon (int vert, int excl) -{ -/* POLYGON object constructor */ - gaiaPolygonPtr p; - gaiaRingPtr pP; - int ind; - p = malloc (sizeof (gaiaPolygon)); - p->Exterior = gaiaAllocRing (vert); - p->NumInteriors = excl; - p->NextInterior = 0; - p->Next = NULL; - if (excl == 0) - p->Interiors = NULL; - else - p->Interiors = malloc (sizeof (gaiaRing) * excl); - for (ind = 0; ind < p->NumInteriors; ind++) - { - pP = p->Interiors + ind; - pP->Points = 0; - pP->Coords = NULL; - pP->Next = NULL; - pP->Link = 0; - } - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY; - return p; -} - -GAIAGEO_DECLARE gaiaPolygonPtr -gaiaAllocPolygonXYZ (int vert, int excl) -{ -/* POLYGON object constructor */ - gaiaPolygonPtr p; - gaiaRingPtr pP; - int ind; - p = malloc (sizeof (gaiaPolygon)); - p->Exterior = gaiaAllocRingXYZ (vert); - p->NumInteriors = excl; - p->NextInterior = 0; - p->Next = NULL; - if (excl == 0) - p->Interiors = NULL; - else - p->Interiors = malloc (sizeof (gaiaRing) * excl); - for (ind = 0; ind < p->NumInteriors; ind++) - { - pP = p->Interiors + ind; - pP->Points = 0; - pP->Coords = NULL; - pP->Next = NULL; - pP->Link = 0; - } - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY_Z; - return p; -} - -GAIAGEO_DECLARE gaiaPolygonPtr -gaiaAllocPolygonXYM (int vert, int excl) -{ -/* POLYGON object constructor */ - gaiaPolygonPtr p; - gaiaRingPtr pP; - int ind; - p = malloc (sizeof (gaiaPolygon)); - p->Exterior = gaiaAllocRingXYM (vert); - p->NumInteriors = excl; - p->NextInterior = 0; - p->Next = NULL; - if (excl == 0) - p->Interiors = NULL; - else - p->Interiors = malloc (sizeof (gaiaRing) * excl); - for (ind = 0; ind < p->NumInteriors; ind++) - { - pP = p->Interiors + ind; - pP->Points = 0; - pP->Coords = NULL; - pP->Next = NULL; - pP->Link = 0; - } - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY_M; - return p; -} - -GAIAGEO_DECLARE gaiaPolygonPtr -gaiaAllocPolygonXYZM (int vert, int excl) -{ -/* POLYGON object constructor */ - gaiaPolygonPtr p; - gaiaRingPtr pP; - int ind; - p = malloc (sizeof (gaiaPolygon)); - p->Exterior = gaiaAllocRingXYZM (vert); - p->NumInteriors = excl; - p->NextInterior = 0; - p->Next = NULL; - if (excl == 0) - p->Interiors = NULL; - else - p->Interiors = malloc (sizeof (gaiaRing) * excl); - for (ind = 0; ind < p->NumInteriors; ind++) - { - pP = p->Interiors + ind; - pP->Points = 0; - pP->Coords = NULL; - pP->Next = NULL; - pP->Link = 0; - } - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY_Z_M; - return p; -} - -GAIAGEO_DECLARE gaiaPolygonPtr -gaiaCreatePolygon (gaiaRingPtr ring) -{ -/* POLYGON object constructor */ - gaiaPolygonPtr p; - p = malloc (sizeof (gaiaPolygon)); - p->DimensionModel = ring->DimensionModel; - if (ring->DimensionModel == GAIA_XY_Z) - p->Exterior = gaiaAllocRingXYZ (ring->Points); - else if (ring->DimensionModel == GAIA_XY_M) - p->Exterior = gaiaAllocRingXYM (ring->Points); - else if (ring->DimensionModel == GAIA_XY_Z_M) - p->Exterior = gaiaAllocRingXYZM (ring->Points); - else - p->Exterior = gaiaAllocRing (ring->Points); - p->NumInteriors = 0; - p->NextInterior = 0; - p->Next = NULL; - p->Interiors = NULL; - gaiaCopyRingCoords (p->Exterior, ring); - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - return p; -} - -GAIAGEO_DECLARE void -gaiaFreePolygon (gaiaPolygonPtr p) -{ -/* POLYGON object destructor */ - gaiaRingPtr pP; - int ind; - if (p->Exterior) - gaiaFreeRing (p->Exterior); - for (ind = 0; ind < p->NumInteriors; ind++) - { - pP = p->Interiors + ind; - if (pP->Coords) - free (pP->Coords); - } - if (p->Interiors) - free (p->Interiors); - free (p); -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaCloneGeomColl (gaiaGeomCollPtr geom) -{ -/* clones a GEOMETRYCOLLECTION */ - int ib; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaLinestringPtr new_line; - gaiaPolygonPtr polyg; - gaiaPolygonPtr new_polyg; - gaiaGeomCollPtr new_geom; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - if (!geom) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - new_geom = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - new_geom = gaiaAllocGeomCollXYM (); - else if (geom->DimensionModel == GAIA_XY_Z_M) - new_geom = gaiaAllocGeomCollXYZM (); - else - new_geom = gaiaAllocGeomColl (); - new_geom->Srid = geom->Srid; - new_geom->DeclaredType = geom->DeclaredType; - point = geom->FirstPoint; - while (point) - { - /* copying POINTs */ - if (geom->DimensionModel == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (new_geom, point->X, point->Y, - point->Z); - else if (geom->DimensionModel == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (new_geom, point->X, point->Y, - point->M); - else if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (new_geom, point->X, point->Y, - point->Z, point->M); - else - gaiaAddPointToGeomColl (new_geom, point->X, point->Y); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* copying LINESTRINGs */ - new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); - gaiaCopyLinestringCoords (new_line, line); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* copying POLYGONs */ - i_ring = polyg->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, - polyg->NumInteriors); - o_ring = new_polyg->Exterior; - /* copying points for the EXTERIOR RING */ - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < new_polyg->NumInteriors; ib++) - { - /* copying each INTERIOR RING [if any] */ - i_ring = polyg->Interiors + ib; - o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - polyg = polyg->Next; - } - return new_geom; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaCloneGeomCollSpecial (gaiaGeomCollPtr geom, int mode) -{ -/* clones a GEOMETRYCOLLECTION (special) */ - int ib; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaLinestringPtr new_line; - gaiaPolygonPtr polyg; - gaiaPolygonPtr new_polyg; - gaiaGeomCollPtr new_geom; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - if (!geom) - return NULL; - if (mode == GAIA_REVERSE_ORDER || mode == GAIA_LHR_ORDER) - ; - else - return gaiaCloneGeomColl (geom); - - if (geom->DimensionModel == GAIA_XY_Z) - new_geom = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - new_geom = gaiaAllocGeomCollXYM (); - else if (geom->DimensionModel == GAIA_XY_Z_M) - new_geom = gaiaAllocGeomCollXYZM (); - else - new_geom = gaiaAllocGeomColl (); - new_geom->Srid = geom->Srid; - new_geom->DeclaredType = geom->DeclaredType; - point = geom->FirstPoint; - while (point) - { - /* copying POINTs */ - if (geom->DimensionModel == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (new_geom, point->X, point->Y, - point->Z); - else if (geom->DimensionModel == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (new_geom, point->X, point->Y, - point->M); - else if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (new_geom, point->X, point->Y, - point->Z, point->M); - else - gaiaAddPointToGeomColl (new_geom, point->X, point->Y); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* copying LINESTRINGs */ - new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); - if (mode == GAIA_REVERSE_ORDER) - gaiaCopyLinestringCoordsReverse (new_line, line); - else - gaiaCopyLinestringCoords (new_line, line); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* copying POLYGONs */ - i_ring = polyg->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, - polyg->NumInteriors); - o_ring = new_polyg->Exterior; - /* copying points for the EXTERIOR RING */ - if (mode == GAIA_REVERSE_ORDER) - gaiaCopyRingCoordsReverse (o_ring, i_ring); - else - { - gaiaClockwise (i_ring); - if (i_ring->Clockwise) - gaiaCopyRingCoords (o_ring, i_ring); - else - gaiaCopyRingCoordsReverse (o_ring, i_ring); - } - for (ib = 0; ib < new_polyg->NumInteriors; ib++) - { - /* copying each INTERIOR RING [if any] */ - i_ring = polyg->Interiors + ib; - o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); - if (mode == GAIA_REVERSE_ORDER) - gaiaCopyRingCoordsReverse (o_ring, i_ring); - else - { - gaiaClockwise (i_ring); - if (i_ring->Clockwise) - gaiaCopyRingCoordsReverse (o_ring, i_ring); - else - gaiaCopyRingCoords (o_ring, i_ring); - } - } - polyg = polyg->Next; - } - return new_geom; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaCloneGeomCollPoints (gaiaGeomCollPtr geom) -{ -/* clones a GEOMETRYCOLLECTION (Points only) */ - gaiaPointPtr point; - gaiaGeomCollPtr new_geom; - if (!geom) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - new_geom = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - new_geom = gaiaAllocGeomCollXYM (); - else if (geom->DimensionModel == GAIA_XY_Z_M) - new_geom = gaiaAllocGeomCollXYZM (); - else - new_geom = gaiaAllocGeomColl (); - new_geom->Srid = geom->Srid; - new_geom->DeclaredType = GAIA_MULTIPOINT; - point = geom->FirstPoint; - while (point) - { - /* copying POINTs */ - if (geom->DimensionModel == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (new_geom, point->X, point->Y, - point->Z); - else if (geom->DimensionModel == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (new_geom, point->X, point->Y, - point->M); - else if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (new_geom, point->X, point->Y, - point->Z, point->M); - else - gaiaAddPointToGeomColl (new_geom, point->X, point->Y); - point = point->Next; - } - return new_geom; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaCloneGeomCollLinestrings (gaiaGeomCollPtr geom) -{ -/* clones a GEOMETRYCOLLECTION (Linestrings only) */ - gaiaLinestringPtr line; - gaiaLinestringPtr new_line; - gaiaGeomCollPtr new_geom; - if (!geom) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - new_geom = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - new_geom = gaiaAllocGeomCollXYM (); - else if (geom->DimensionModel == GAIA_XY_Z_M) - new_geom = gaiaAllocGeomCollXYZM (); - else - new_geom = gaiaAllocGeomColl (); - new_geom->Srid = geom->Srid; - new_geom->DeclaredType = GAIA_MULTILINESTRING; - line = geom->FirstLinestring; - while (line) - { - /* copying LINESTRINGs */ - new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); - gaiaCopyLinestringCoords (new_line, line); - line = line->Next; - } - return new_geom; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaCloneGeomCollPolygons (gaiaGeomCollPtr geom) -{ -/* clones a GEOMETRYCOLLECTION (Polygons only) */ - int ib; - gaiaPolygonPtr polyg; - gaiaPolygonPtr new_polyg; - gaiaGeomCollPtr new_geom; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - if (!geom) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - new_geom = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - new_geom = gaiaAllocGeomCollXYM (); - else if (geom->DimensionModel == GAIA_XY_Z_M) - new_geom = gaiaAllocGeomCollXYZM (); - else - new_geom = gaiaAllocGeomColl (); - new_geom->Srid = geom->Srid; - new_geom->DeclaredType = GAIA_MULTIPOLYGON; - polyg = geom->FirstPolygon; - while (polyg) - { - /* copying POLYGONs */ - i_ring = polyg->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, - polyg->NumInteriors); - o_ring = new_polyg->Exterior; - /* copying points for the EXTERIOR RING */ - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < new_polyg->NumInteriors; ib++) - { - /* copying each INTERIOR RING [if any] */ - i_ring = polyg->Interiors + ib; - o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - polyg = polyg->Next; - } - return new_geom; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaCastGeomCollToXY (gaiaGeomCollPtr geom) -{ -/* clones a GEOMETRYCOLLECTION converting to XY-dimensions */ - int ib; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaLinestringPtr new_line; - gaiaPolygonPtr polyg; - gaiaPolygonPtr new_polyg; - gaiaGeomCollPtr new_geom; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - if (!geom) - return NULL; - new_geom = gaiaAllocGeomColl (); - new_geom->Srid = geom->Srid; - new_geom->DeclaredType = geom->DeclaredType; - point = geom->FirstPoint; - while (point) - { - /* copying POINTs */ - gaiaAddPointToGeomColl (new_geom, point->X, point->Y); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* copying LINESTRINGs */ - new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); - gaiaCopyLinestringCoords (new_line, line); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* copying POLYGONs */ - i_ring = polyg->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, - polyg->NumInteriors); - o_ring = new_polyg->Exterior; - /* copying points for the EXTERIOR RING */ - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < new_polyg->NumInteriors; ib++) - { - /* copying each INTERIOR RING [if any] */ - i_ring = polyg->Interiors + ib; - o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - polyg = polyg->Next; - } - return new_geom; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaCastGeomCollToXYZ (gaiaGeomCollPtr geom) -{ -/* clones a GEOMETRYCOLLECTION converting to XYZ-dimensions */ - int ib; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaLinestringPtr new_line; - gaiaPolygonPtr polyg; - gaiaPolygonPtr new_polyg; - gaiaGeomCollPtr new_geom; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - if (!geom) - return NULL; - new_geom = gaiaAllocGeomCollXYZ (); - new_geom->Srid = geom->Srid; - new_geom->DeclaredType = geom->DeclaredType; - point = geom->FirstPoint; - while (point) - { - /* copying POINTs */ - gaiaAddPointToGeomCollXYZ (new_geom, point->X, point->Y, point->Z); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* copying LINESTRINGs */ - new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); - gaiaCopyLinestringCoords (new_line, line); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* copying POLYGONs */ - i_ring = polyg->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, - polyg->NumInteriors); - o_ring = new_polyg->Exterior; - /* copying points for the EXTERIOR RING */ - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < new_polyg->NumInteriors; ib++) - { - /* copying each INTERIOR RING [if any] */ - i_ring = polyg->Interiors + ib; - o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - polyg = polyg->Next; - } - return new_geom; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaCastGeomCollToXYM (gaiaGeomCollPtr geom) -{ -/* clones a GEOMETRYCOLLECTION converting to XYM-dimensions */ - int ib; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaLinestringPtr new_line; - gaiaPolygonPtr polyg; - gaiaPolygonPtr new_polyg; - gaiaGeomCollPtr new_geom; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - if (!geom) - return NULL; - new_geom = gaiaAllocGeomCollXYM (); - new_geom->Srid = geom->Srid; - new_geom->DeclaredType = geom->DeclaredType; - point = geom->FirstPoint; - while (point) - { - /* copying POINTs */ - gaiaAddPointToGeomCollXYM (new_geom, point->X, point->Y, point->M); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* copying LINESTRINGs */ - new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); - gaiaCopyLinestringCoords (new_line, line); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* copying POLYGONs */ - i_ring = polyg->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, - polyg->NumInteriors); - o_ring = new_polyg->Exterior; - /* copying points for the EXTERIOR RING */ - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < new_polyg->NumInteriors; ib++) - { - /* copying each INTERIOR RING [if any] */ - i_ring = polyg->Interiors + ib; - o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - polyg = polyg->Next; - } - return new_geom; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaCastGeomCollToXYZM (gaiaGeomCollPtr geom) -{ -/* clones a GEOMETRYCOLLECTION converting to XYZM-dimensions */ - int ib; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaLinestringPtr new_line; - gaiaPolygonPtr polyg; - gaiaPolygonPtr new_polyg; - gaiaGeomCollPtr new_geom; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - if (!geom) - return NULL; - new_geom = gaiaAllocGeomCollXYZM (); - new_geom->Srid = geom->Srid; - new_geom->DeclaredType = geom->DeclaredType; - point = geom->FirstPoint; - while (point) - { - /* copying POINTs */ - gaiaAddPointToGeomCollXYZM (new_geom, point->X, point->Y, point->Z, - point->M); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* copying LINESTRINGs */ - new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); - gaiaCopyLinestringCoords (new_line, line); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* copying POLYGONs */ - i_ring = polyg->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, - polyg->NumInteriors); - o_ring = new_polyg->Exterior; - /* copying points for the EXTERIOR RING */ - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < new_polyg->NumInteriors; ib++) - { - /* copying each INTERIOR RING [if any] */ - i_ring = polyg->Interiors + ib; - o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - polyg = polyg->Next; - } - return new_geom; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaAllocGeomColl () -{ -/* GEOMETRYCOLLECTION object constructor */ - gaiaGeomCollPtr p = malloc (sizeof (gaiaGeomColl)); - p->Srid = 0; - p->endian = ' '; - p->offset = 0; - p->FirstPoint = NULL; - p->LastPoint = NULL; - p->FirstLinestring = NULL; - p->LastLinestring = NULL; - p->FirstPolygon = NULL; - p->LastPolygon = NULL; - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY; - p->DeclaredType = GAIA_UNKNOWN; - p->Next = NULL; - return p; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaAllocGeomCollXYZ () -{ -/* GEOMETRYCOLLECTION object constructor */ - gaiaGeomCollPtr p = malloc (sizeof (gaiaGeomColl)); - p->Srid = 0; - p->endian = ' '; - p->offset = 0; - p->FirstPoint = NULL; - p->LastPoint = NULL; - p->FirstLinestring = NULL; - p->LastLinestring = NULL; - p->FirstPolygon = NULL; - p->LastPolygon = NULL; - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY_Z; - p->DeclaredType = GAIA_UNKNOWN; - p->Next = NULL; - return p; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaAllocGeomCollXYM () -{ -/* GEOMETRYCOLLECTION object constructor */ - gaiaGeomCollPtr p = malloc (sizeof (gaiaGeomColl)); - p->Srid = 0; - p->endian = ' '; - p->offset = 0; - p->FirstPoint = NULL; - p->LastPoint = NULL; - p->FirstLinestring = NULL; - p->LastLinestring = NULL; - p->FirstPolygon = NULL; - p->LastPolygon = NULL; - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY_M; - p->DeclaredType = GAIA_UNKNOWN; - p->Next = NULL; - return p; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaAllocGeomCollXYZM () -{ -/* GEOMETRYCOLLECTION object constructor */ - gaiaGeomCollPtr p = malloc (sizeof (gaiaGeomColl)); - p->Srid = 0; - p->endian = ' '; - p->offset = 0; - p->FirstPoint = NULL; - p->LastPoint = NULL; - p->FirstLinestring = NULL; - p->LastLinestring = NULL; - p->FirstPolygon = NULL; - p->LastPolygon = NULL; - p->MinX = DBL_MAX; - p->MinY = DBL_MAX; - p->MaxX = -DBL_MAX; - p->MaxY = -DBL_MAX; - p->DimensionModel = GAIA_XY_Z_M; - p->DeclaredType = GAIA_UNKNOWN; - p->Next = NULL; - return p; -} - -GAIAGEO_DECLARE void -gaiaFreeGeomColl (gaiaGeomCollPtr p) -{ -/* GEOMETRYCOLLECTION object destructor */ - gaiaPointPtr pP; - gaiaPointPtr pPn; - gaiaLinestringPtr pL; - gaiaLinestringPtr pLn; - gaiaPolygonPtr pA; - gaiaPolygonPtr pAn; - if (!p) - return; - pP = p->FirstPoint; - while (pP != NULL) - { - pPn = pP->Next; - gaiaFreePoint (pP); - pP = pPn; - } - pL = p->FirstLinestring; - while (pL != NULL) - { - pLn = pL->Next; - gaiaFreeLinestring (pL); - pL = pLn; - } - pA = p->FirstPolygon; - while (pA != NULL) - { - pAn = pA->Next; - gaiaFreePolygon (pA); - pA = pAn; - } - free (p); -} - -GAIAGEO_DECLARE void -gaiaAddPointToGeomColl (gaiaGeomCollPtr p, double x, double y) -{ -/* adding a POINT to this GEOMETRYCOLLECTION */ - gaiaPointPtr point = gaiaAllocPoint (x, y); - if (p->FirstPoint == NULL) - p->FirstPoint = point; - if (p->LastPoint != NULL) - p->LastPoint->Next = point; - p->LastPoint = point; -} - -GAIAGEO_DECLARE void -gaiaAddPointToGeomCollXYZ (gaiaGeomCollPtr p, double x, double y, double z) -{ -/* adding a POINT to this GEOMETRYCOLLECTION */ - gaiaPointPtr point = gaiaAllocPointXYZ (x, y, z); - if (p->FirstPoint == NULL) - p->FirstPoint = point; - if (p->LastPoint != NULL) - p->LastPoint->Next = point; - p->LastPoint = point; -} - -GAIAGEO_DECLARE void -gaiaAddPointToGeomCollXYM (gaiaGeomCollPtr p, double x, double y, double m) -{ -/* adding a POINT to this GEOMETRYCOLLECTION */ - gaiaPointPtr point = gaiaAllocPointXYM (x, y, m); - if (p->FirstPoint == NULL) - p->FirstPoint = point; - if (p->LastPoint != NULL) - p->LastPoint->Next = point; - p->LastPoint = point; -} - -GAIAGEO_DECLARE void -gaiaAddPointToGeomCollXYZM (gaiaGeomCollPtr p, double x, double y, double z, - double m) -{ -/* adding a POINT to this GEOMETRYCOLLECTION */ - gaiaPointPtr point = gaiaAllocPointXYZM (x, y, z, m); - if (p->FirstPoint == NULL) - p->FirstPoint = point; - if (p->LastPoint != NULL) - p->LastPoint->Next = point; - p->LastPoint = point; -} - -GAIAGEO_DECLARE gaiaLinestringPtr -gaiaAddLinestringToGeomColl (gaiaGeomCollPtr p, int vert) -{ -/* adding a LINESTRING to this GEOMETRYCOLLECTION */ - gaiaLinestringPtr line; - if (p->DimensionModel == GAIA_XY_Z) - line = gaiaAllocLinestringXYZ (vert); - else if (p->DimensionModel == GAIA_XY_M) - line = gaiaAllocLinestringXYM (vert); - else if (p->DimensionModel == GAIA_XY_Z_M) - line = gaiaAllocLinestringXYZM (vert); - else - line = gaiaAllocLinestring (vert); - if (p->FirstLinestring == NULL) - p->FirstLinestring = line; - if (p->LastLinestring != NULL) - p->LastLinestring->Next = line; - p->LastLinestring = line; - return line; -} - -GAIAGEO_DECLARE void -gaiaInsertLinestringInGeomColl (gaiaGeomCollPtr p, gaiaLinestringPtr line) -{ -/* adding an existing LINESTRING to this GEOMETRYCOLLECTION */ - if (p->FirstLinestring == NULL) - p->FirstLinestring = line; - if (p->LastLinestring != NULL) - p->LastLinestring->Next = line; - p->LastLinestring = line; -} - -GAIAGEO_DECLARE gaiaPolygonPtr -gaiaAddPolygonToGeomColl (gaiaGeomCollPtr p, int vert, int interiors) -{ -/* adding a POLYGON to this GEOMETRYCOLLECTION */ - gaiaPolygonPtr polyg; - if (p->DimensionModel == GAIA_XY_Z) - polyg = gaiaAllocPolygonXYZ (vert, interiors); - else if (p->DimensionModel == GAIA_XY_M) - polyg = gaiaAllocPolygonXYM (vert, interiors); - else if (p->DimensionModel == GAIA_XY_Z_M) - polyg = gaiaAllocPolygonXYZM (vert, interiors); - else - polyg = gaiaAllocPolygon (vert, interiors); - if (p->FirstPolygon == NULL) - p->FirstPolygon = polyg; - if (p->LastPolygon != NULL) - p->LastPolygon->Next = polyg; - p->LastPolygon = polyg; - return polyg; -} - -GAIAGEO_DECLARE gaiaPolygonPtr -gaiaInsertPolygonInGeomColl (gaiaGeomCollPtr p, gaiaRingPtr ring) -{ -/* adding a POLYGON to this GEOMETRYCOLLECTION */ - gaiaPolygonPtr polyg; - polyg = malloc (sizeof (gaiaPolygon)); - polyg->Exterior = ring; - polyg->NumInteriors = 0; - polyg->NextInterior = 0; - polyg->DimensionModel = ring->DimensionModel; - polyg->Next = NULL; - polyg->Interiors = NULL; - polyg->MinX = DBL_MAX; - polyg->MinY = DBL_MAX; - polyg->MaxX = -DBL_MAX; - polyg->MaxY = -DBL_MAX; - if (p->FirstPolygon == NULL) - p->FirstPolygon = polyg; - if (p->LastPolygon != NULL) - p->LastPolygon->Next = polyg; - p->LastPolygon = polyg; - return polyg; -} - -GAIAGEO_DECLARE gaiaRingPtr -gaiaAddInteriorRing (gaiaPolygonPtr p, int pos, int vert) -{ -/* adding an interior ring to some polygon */ - gaiaRingPtr pP = p->Interiors + pos; - pP->Points = vert; - pP->DimensionModel = p->DimensionModel; - if (pP->DimensionModel == GAIA_XY_Z) - pP->Coords = malloc (sizeof (double) * (vert * 3)); - else if (pP->DimensionModel == GAIA_XY_M) - pP->Coords = malloc (sizeof (double) * (vert * 3)); - else if (pP->DimensionModel == GAIA_XY_Z_M) - pP->Coords = malloc (sizeof (double) * (vert * 4)); - else - pP->Coords = malloc (sizeof (double) * (vert * 2)); - return pP; -} - -GAIAGEO_DECLARE void -gaiaInsertInteriorRing (gaiaPolygonPtr p, gaiaRingPtr ring) -{ -/* adding an interior ring to some polygon */ - gaiaRingPtr hole; - if (p->NumInteriors == 0) - { - /* this one is the first interior ring */ - p->NumInteriors++; - p->Interiors = malloc (sizeof (gaiaRing)); - hole = p->Interiors; - } - else - { - /* some interior ring is already defined */ - gaiaRingPtr save = p->Interiors; - p->Interiors = malloc (sizeof (gaiaRing) * (p->NumInteriors + 1)); - memcpy (p->Interiors, save, (sizeof (gaiaRing) * p->NumInteriors)); - free (save); - hole = p->Interiors + p->NumInteriors; - p->NumInteriors++; - } - hole->Points = ring->Points; - hole->DimensionModel = p->DimensionModel; - if (hole->DimensionModel == GAIA_XY_Z) - hole->Coords = malloc (sizeof (double) * (hole->Points * 3)); - else if (hole->DimensionModel == GAIA_XY_M) - hole->Coords = malloc (sizeof (double) * (hole->Points * 3)); - else if (hole->DimensionModel == GAIA_XY_Z_M) - hole->Coords = malloc (sizeof (double) * (hole->Points * 4)); - else - hole->Coords = malloc (sizeof (double) * (hole->Points * 2)); - gaiaCopyRingCoords (hole, ring); -} - -GAIAGEO_DECLARE void -gaiaAddRingToPolyg (gaiaPolygonPtr polyg, gaiaRingPtr ring) -{ -/* adds an interior ring to this POLYGON */ - gaiaRingPtr old_interiors = NULL; - if (!(polyg->Interiors)) - { - /* this one is the first interior ring */ - polyg->Interiors = ring; - polyg->NumInteriors = 1; - } - else - { - /* adding another interior ring */ - old_interiors = polyg->Interiors; - polyg->Interiors = - malloc (sizeof (gaiaRing) * (polyg->NumInteriors + 1)); - memcpy (polyg->Interiors, old_interiors, - (sizeof (gaiaRing) * polyg->NumInteriors)); - memcpy (polyg->Interiors + polyg->NumInteriors, ring, - sizeof (gaiaRing)); - (polyg->NumInteriors)++; - free (old_interiors); - free (ring); - } -} - -GAIAGEO_DECLARE gaiaDynamicLinePtr -gaiaAllocDynamicLine () -{ -/* DYNAMIC LINE object constructor */ - gaiaDynamicLinePtr p = malloc (sizeof (gaiaDynamicLine)); - p->Error = 0; - p->Srid = 0; - p->First = NULL; - p->Last = NULL; - return p; -} - -GAIAGEO_DECLARE void -gaiaFreeDynamicLine (gaiaDynamicLinePtr p) -{ -/* DYNAMIC LINE object destructor */ - gaiaPointPtr pP; - gaiaPointPtr pPn; - pP = p->First; - while (pP != NULL) - { - pPn = pP->Next; - gaiaFreePoint (pP); - pP = pPn; - } - free (p); -} - -GAIAGEO_DECLARE gaiaPointPtr -gaiaAppendPointToDynamicLine (gaiaDynamicLinePtr p, double x, double y) -{ -/* inserts a new POINT to this DYNAMIC LINE after the last one */ - gaiaPointPtr point = gaiaAllocPoint (x, y); - point->Prev = p->Last; - if (p->First == NULL) - p->First = point; - if (p->Last != NULL) - p->Last->Next = point; - p->Last = point; - return point; -} - -GAIAGEO_DECLARE gaiaPointPtr -gaiaAppendPointZToDynamicLine (gaiaDynamicLinePtr p, double x, double y, - double z) -{ -/* inserts a new POINT to this DYNAMIC LINE after the last one */ - gaiaPointPtr point = gaiaAllocPointXYZ (x, y, z); - point->Prev = p->Last; - if (p->First == NULL) - p->First = point; - if (p->Last != NULL) - p->Last->Next = point; - p->Last = point; - return point; -} - -GAIAGEO_DECLARE gaiaPointPtr -gaiaAppendPointMToDynamicLine (gaiaDynamicLinePtr p, double x, double y, - double m) -{ -/* inserts a new POINT to this DYNAMIC LINE after the last one */ - gaiaPointPtr point = gaiaAllocPointXYM (x, y, m); - point->Prev = p->Last; - if (p->First == NULL) - p->First = point; - if (p->Last != NULL) - p->Last->Next = point; - p->Last = point; - return point; -} - -GAIAGEO_DECLARE gaiaPointPtr -gaiaAppendPointZMToDynamicLine (gaiaDynamicLinePtr p, double x, double y, - double z, double m) -{ -/* inserts a new POINT to this DYNAMIC LINE after the last one */ - gaiaPointPtr point = gaiaAllocPointXYZM (x, y, z, m); - point->Prev = p->Last; - if (p->First == NULL) - p->First = point; - if (p->Last != NULL) - p->Last->Next = point; - p->Last = point; - return point; -} - -GAIAGEO_DECLARE gaiaPointPtr -gaiaPrependPointToDynamicLine (gaiaDynamicLinePtr p, double x, double y) -{ -/* inserts a new POINT to this DYNAMIC LINE before the first one */ - gaiaPointPtr point = gaiaAllocPoint (x, y); - point->Next = p->First; - if (p->Last == NULL) - p->Last = point; - if (p->First != NULL) - p->First->Prev = point; - p->First = point; - return point; -} - -GAIAGEO_DECLARE gaiaPointPtr -gaiaPrependPointZToDynamicLine (gaiaDynamicLinePtr p, double x, double y, - double z) -{ -/* inserts a new POINT to this DYNAMIC LINE before the first one */ - gaiaPointPtr point = gaiaAllocPointXYZ (x, y, z); - point->Next = p->First; - if (p->Last == NULL) - p->Last = point; - if (p->First != NULL) - p->First->Prev = point; - p->First = point; - return point; -} - -GAIAGEO_DECLARE gaiaPointPtr -gaiaPrependPointMToDynamicLine (gaiaDynamicLinePtr p, double x, double y, - double m) -{ -/* inserts a new POINT to this DYNAMIC LINE before the first one */ - gaiaPointPtr point = gaiaAllocPointXYM (x, y, m); - point->Next = p->First; - if (p->Last == NULL) - p->Last = point; - if (p->First != NULL) - p->First->Prev = point; - p->First = point; - return point; -} - -GAIAGEO_DECLARE gaiaPointPtr -gaiaPrependPointZMToDynamicLine (gaiaDynamicLinePtr p, double x, double y, - double z, double m) -{ -/* inserts a new POINT to this DYNAMIC LINE before the first one */ - gaiaPointPtr point = gaiaAllocPointXYZM (x, y, z, m); - point->Next = p->First; - if (p->Last == NULL) - p->Last = point; - if (p->First != NULL) - p->First->Prev = point; - p->First = point; - return point; -} - -GAIAGEO_DECLARE gaiaPointPtr -gaiaDynamicLineInsertAfter (gaiaDynamicLinePtr p, gaiaPointPtr pt, double x, - double y) -{ -/* inserts a new POINT to this DYNAMIC LINE after the referenced POINT */ - gaiaPointPtr point = gaiaAllocPoint (x, y); - point->Prev = pt; - point->Next = pt->Next; - if (pt->Next) - pt->Next->Prev = point; - pt->Next = point; - if (pt == p->Last) - p->Last = point; - return point; -} - -GAIAGEO_DECLARE gaiaPointPtr -gaiaDynamicLineInsertBefore (gaiaDynamicLinePtr p, gaiaPointPtr pt, double x, - double y) -{ -/* inserts a new POINT to this DYNAMIC LINE before the referenced POINT */ - gaiaPointPtr point = gaiaAllocPoint (x, y); - point->Next = pt; - point->Prev = pt->Prev; - if (pt->Prev) - pt->Prev->Next = point; - pt->Prev = point; - if (pt == p->First) - p->First = point; - return point; -} - -GAIAGEO_DECLARE void -gaiaDynamicLineDeletePoint (gaiaDynamicLinePtr p, gaiaPointPtr pt) -{ -/* deletes a POINT from this DYNAMIC LINE */ - if (pt->Prev) - pt->Prev->Next = pt->Next; - if (pt->Next) - pt->Next->Prev = pt->Prev; - if (pt == p->First) - p->First = pt->Next; - if (pt == p->Last) - p->Last = pt->Prev; - gaiaFreePoint (pt); -} - -GAIAGEO_DECLARE gaiaDynamicLinePtr -gaiaCloneDynamicLine (gaiaDynamicLinePtr org) -{ -/* creates a new line obtained by simply copying the current one */ - gaiaPointPtr pt; - gaiaDynamicLinePtr dst = gaiaAllocDynamicLine (); - pt = org->First; - while (pt) - { - gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); - pt = pt->Next; - } - return dst; -} - -GAIAGEO_DECLARE gaiaDynamicLinePtr -gaiaReverseDynamicLine (gaiaDynamicLinePtr org) -{ -/* creates a new line obtained by inverting the current one */ - gaiaPointPtr pt; - gaiaDynamicLinePtr dst = gaiaAllocDynamicLine (); - pt = org->Last; - while (pt) - { - gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); - pt = pt->Prev; - } - return dst; -} - -GAIAGEO_DECLARE gaiaDynamicLinePtr -gaiaDynamicLineSplitBefore (gaiaDynamicLinePtr org, gaiaPointPtr point) -{ -/* creates a new line obtained by cutting the current one in two */ - gaiaDynamicLinePtr dst = gaiaAllocDynamicLine (); - dst->First = org->First; - dst->Last = point->Prev; - point->Prev->Next = NULL; - org->First = point; - point->Prev = NULL; - return dst; -} - -GAIAGEO_DECLARE gaiaDynamicLinePtr -gaiaDynamicLineSplitAfter (gaiaDynamicLinePtr org, gaiaPointPtr point) -{ -/* creates a new line obtained by cutting the current one in two */ - gaiaDynamicLinePtr dst = gaiaAllocDynamicLine (); - dst->First = point->Next; - dst->Last = org->Last; - point->Next->Prev = NULL; - org->Last = point; - point->Next = NULL; - return dst; -} - -GAIAGEO_DECLARE gaiaDynamicLinePtr -gaiaDynamicLineJoinAfter (gaiaDynamicLinePtr org, gaiaPointPtr point, - gaiaDynamicLinePtr toJoin) -{ -/* creates a new line obtained by joining the current one with another one */ - gaiaPointPtr pt; - gaiaDynamicLinePtr dst = gaiaAllocDynamicLine (); - pt = org->First; - while (pt) - { - /* inserting the first slice since the delimiting POINT included */ - gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); - if (pt == point) - break; - pt = pt->Next; - } - pt = toJoin->First; - while (pt) - { - /* inserting the other line */ - gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); - pt = pt->Next; - } - pt = point->Next; - while (pt) - { - /* inserting the second slice after the delimiting POINT */ - gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); - pt = pt->Next; - } - return dst; -} - -GAIAGEO_DECLARE gaiaDynamicLinePtr -gaiaDynamicLineJoinBefore (gaiaDynamicLinePtr org, gaiaPointPtr point, - gaiaDynamicLinePtr toJoin) -{ -/* creates a new line obtained by joining the current one with another one */ - gaiaPointPtr pt; - gaiaDynamicLinePtr dst = gaiaAllocDynamicLine (); - pt = org->First; - while (pt) - { - /* inserting the first slice since the delimiting POINT excluded */ - if (pt == point) - break; - gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); - pt = pt->Next; - } - pt = toJoin->First; - while (pt) - { - /* inserting the other line */ - gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); - pt = pt->Next; - } - pt = point; - while (pt) - { - /* inserting the second slice beginning from the delimiting POINT */ - gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); - pt = pt->Next; - } - return dst; -} - -GAIAGEO_DECLARE gaiaPointPtr -gaiaDynamicLineFindByCoords (gaiaDynamicLinePtr p, double x, double y) -{ -/* finds a POINT inside this DYNAMIC LINE */ - gaiaPointPtr pP; - pP = p->First; - while (pP != NULL) - { - if (pP->X == x && pP->Y == y) - return pP; - pP = pP->Next; - } - return NULL; -} - -GAIAGEO_DECLARE gaiaPointPtr -gaiaDynamicLineFindByPos (gaiaDynamicLinePtr p, int pos) -{ -/* finds a POINT inside this DYNAMIC LINE */ - int n = 0; - gaiaPointPtr pP; - pP = p->First; - while (pP != NULL) - { - if (pos == n) - return pP; - n++; - pP = pP->Next; - } - return NULL; -} - -GAIAGEO_DECLARE gaiaDynamicLinePtr -gaiaCreateDynamicLine (double *coords, int points) -{ -/* creates a DynamicLine from an array of coordinates */ - int iv; - double x; - double y; - gaiaDynamicLinePtr line = gaiaAllocDynamicLine (); - for (iv = 0; iv < points; iv++) - { - gaiaGetPoint (coords, iv, &x, &y); - gaiaAppendPointToDynamicLine (line, x, y); - } - return line; -} - -GAIAGEO_DECLARE void -gaiaMbrLinestring (gaiaLinestringPtr line) -{ -/* computes the MBR for this linestring */ - int iv; - double x; - double y; - double z; - double m; - line->MinX = DBL_MAX; - line->MinY = DBL_MAX; - line->MaxX = -DBL_MAX; - line->MaxY = -DBL_MAX; - for (iv = 0; iv < line->Points; iv++) - { - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - if (x < line->MinX) - line->MinX = x; - if (y < line->MinY) - line->MinY = y; - if (x > line->MaxX) - line->MaxX = x; - if (y > line->MaxY) - line->MaxY = y; - } -} - -GAIAGEO_DECLARE void -gaiaMbrRing (gaiaRingPtr rng) -{ -/* computes the MBR for this ring */ - int iv; - double x; - double y; - double z; - double m; - rng->MinX = DBL_MAX; - rng->MinY = DBL_MAX; - rng->MaxX = -DBL_MAX; - rng->MaxY = -DBL_MAX; - for (iv = 0; iv < rng->Points; iv++) - { - if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - if (x < rng->MinX) - rng->MinX = x; - if (y < rng->MinY) - rng->MinY = y; - if (x > rng->MaxX) - rng->MaxX = x; - if (y > rng->MaxY) - rng->MaxY = y; - } -} - -GAIAGEO_DECLARE void -gaiaMbrPolygon (gaiaPolygonPtr polyg) -{ -/* computes the MBR for this polygon */ - gaiaRingPtr rng; - polyg->MinX = DBL_MAX; - polyg->MinY = DBL_MAX; - polyg->MaxX = -DBL_MAX; - polyg->MaxY = -DBL_MAX; - rng = polyg->Exterior; - gaiaMbrRing (rng); - if (rng->MinX < polyg->MinX) - polyg->MinX = rng->MinX; - if (rng->MinY < polyg->MinY) - polyg->MinY = rng->MinY; - if (rng->MaxX > polyg->MaxX) - polyg->MaxX = rng->MaxX; - if (rng->MaxY > polyg->MaxY) - polyg->MaxY = rng->MaxY; -} - -GAIAGEO_DECLARE void -gaiaMbrGeometry (gaiaGeomCollPtr geom) -{ -/* computes the MBR for this geometry */ - gaiaPointPtr point = NULL; - gaiaLinestringPtr line = NULL; - gaiaPolygonPtr polyg = NULL; - geom->MinX = DBL_MAX; - geom->MinY = DBL_MAX; - geom->MaxX = -DBL_MAX; - geom->MaxY = -DBL_MAX; - point = geom->FirstPoint; - while (point) - { - if (point->X < geom->MinX) - geom->MinX = point->X; - if (point->Y < geom->MinY) - geom->MinY = point->Y; - if (point->X > geom->MaxX) - geom->MaxX = point->X; - if (point->Y > geom->MaxY) - geom->MaxY = point->Y; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - gaiaMbrLinestring (line); - if (line->MinX < geom->MinX) - geom->MinX = line->MinX; - if (line->MinY < geom->MinY) - geom->MinY = line->MinY; - if (line->MaxX > geom->MaxX) - geom->MaxX = line->MaxX; - if (line->MaxY > geom->MaxY) - geom->MaxY = line->MaxY; - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - gaiaMbrPolygon (polyg); - if (polyg->MinX < geom->MinX) - geom->MinX = polyg->MinX; - if (polyg->MinY < geom->MinY) - geom->MinY = polyg->MinY; - if (polyg->MaxX > geom->MaxX) - geom->MaxX = polyg->MaxX; - if (polyg->MaxY > geom->MaxY) - geom->MaxY = polyg->MaxY; - polyg = polyg->Next; - } -} - -GAIAGEO_DECLARE void -gaiaMRangeLinestring (gaiaLinestringPtr line, double *min, double *max) -{ -/* computes the M-range [min/max] for this linestring */ - int iv; - double x; - double y; - double z; - double m; - *min = DBL_MAX; - *max = -DBL_MAX; - for (iv = 0; iv < line->Points; iv++) - { - m = 0.0; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - if (m < *min) - *min = m; - if (m > *max) - *max = m; - } -} - -GAIAGEO_DECLARE void -gaiaMRangeRing (gaiaRingPtr rng, double *min, double *max) -{ -/* computes the M-range [min/max] for this ring */ - int iv; - double x; - double y; - double z; - double m; - *min = DBL_MAX; - *max = -DBL_MAX; - for (iv = 0; iv < rng->Points; iv++) - { - m = 0.0; - if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - if (m < *min) - *min = m; - if (m > *max) - *max = m; - } -} - -GAIAGEO_DECLARE void -gaiaMRangePolygon (gaiaPolygonPtr polyg, double *min, double *max) -{ -/* computes the M-range [min/max] for this polygon */ - gaiaRingPtr rng; - int ib; - double r_min; - double r_max; - *min = DBL_MAX; - *max = -DBL_MAX; - rng = polyg->Exterior; - gaiaMRangeRing (rng, &r_min, &r_max); - if (r_min < *min) - *min = r_min; - if (r_max > *max) - *max = r_max; - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaMRangeRing (rng, &r_min, &r_max); - if (r_min < *min) - *min = r_min; - if (r_max > *max) - *max = r_max; - } -} - -GAIAGEO_DECLARE void -gaiaMRangeGeometry (gaiaGeomCollPtr geom, double *min, double *max) -{ -/* computes the M-range [min/max] for this geometry */ - gaiaPointPtr point = NULL; - gaiaLinestringPtr line = NULL; - gaiaPolygonPtr polyg = NULL; - double m; - double r_min; - double r_max; - *min = DBL_MAX; - *max = -DBL_MAX; - point = geom->FirstPoint; - while (point) - { - m = 0.0; - if (point->DimensionModel == GAIA_XY_M - || point->DimensionModel == GAIA_XY_Z_M) - m = point->M; - if (m < *min) - *min = m; - if (m > *max) - *max = m; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - gaiaMRangeLinestring (line, &r_min, &r_max); - if (r_min < *min) - *min = r_min; - if (r_max > *max) - *max = r_max; - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - gaiaMRangePolygon (polyg, &r_min, &r_max); - if (r_min < *min) - *min = r_min; - if (r_max > *max) - *max = r_max; - polyg = polyg->Next; - } -} - -GAIAGEO_DECLARE void -gaiaZRangeLinestring (gaiaLinestringPtr line, double *min, double *max) -{ -/* computes the Z-range [min/max] for this linestring */ - int iv; - double x; - double y; - double z; - double m; - *min = DBL_MAX; - *max = -DBL_MAX; - for (iv = 0; iv < line->Points; iv++) - { - z = 0.0; - m = 0.0; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - if (z < *min) - *min = z; - if (z > *max) - *max = z; - } -} - -GAIAGEO_DECLARE void -gaiaZRangeRing (gaiaRingPtr rng, double *min, double *max) -{ -/* computes the Z-range [min/max] for this ring */ - int iv; - double x; - double y; - double z; - double m; - *min = DBL_MAX; - *max = -DBL_MAX; - for (iv = 0; iv < rng->Points; iv++) - { - z = 0.0; - m = 0.0; - if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - if (z < *min) - *min = z; - if (z > *max) - *max = z; - } -} - -GAIAGEO_DECLARE void -gaiaZRangePolygon (gaiaPolygonPtr polyg, double *min, double *max) -{ -/* computes the Z-range [min/max] for this polygon */ - gaiaRingPtr rng; - int ib; - double r_min; - double r_max; - *min = DBL_MAX; - *max = -DBL_MAX; - rng = polyg->Exterior; - gaiaZRangeRing (rng, &r_min, &r_max); - if (r_min < *min) - *min = r_min; - if (r_max > *max) - *max = r_max; - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaZRangeRing (rng, &r_min, &r_max); - if (r_min < *min) - *min = r_min; - if (r_max > *max) - *max = r_max; - } -} - -GAIAGEO_DECLARE void -gaiaZRangeGeometry (gaiaGeomCollPtr geom, double *min, double *max) -{ -/* computes the Z-range [min/max] for this geometry */ - gaiaPointPtr point = NULL; - gaiaLinestringPtr line = NULL; - gaiaPolygonPtr polyg = NULL; - double z; - double r_min; - double r_max; - *min = DBL_MAX; - *max = -DBL_MAX; - point = geom->FirstPoint; - while (point) - { - z = 0.0; - if (point->DimensionModel == GAIA_XY_Z - || point->DimensionModel == GAIA_XY_Z_M) - z = point->Z; - if (z < *min) - *min = z; - if (z > *max) - *max = z; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - gaiaZRangeLinestring (line, &r_min, &r_max); - if (r_min < *min) - *min = r_min; - if (r_max > *max) - *max = r_max; - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - gaiaZRangePolygon (polyg, &r_min, &r_max); - if (r_min < *min) - *min = r_min; - if (r_max > *max) - *max = r_max; - polyg = polyg->Next; - } -} - -GAIAGEO_DECLARE int -gaiaDimension (gaiaGeomCollPtr geom) -{ -/* determines the Dimension for this geometry */ - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - int n_points = 0; - int n_linestrings = 0; - int n_polygons = 0; - if (!geom) - return -1; - point = geom->FirstPoint; - while (point) - { - /* counts how many points are there */ - n_points++; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* counts how many linestrings are there */ - n_linestrings++; - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* counts how many polygons are there */ - n_polygons++; - polyg = polyg->Next; - } - if (n_points == 0 && n_linestrings == 0 && n_polygons == 0) - return -1; - if (n_points > 0 && n_linestrings == 0 && n_polygons == 0) - return 0; - if (n_linestrings > 0 && n_polygons == 0) - return 1; - return 2; -} - -GAIAGEO_DECLARE int -gaiaGeometryType (gaiaGeomCollPtr geom) -{ -/* determines the Class for this geometry */ - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - int ib; - int n_points = 0; - int n_linestrings = 0; - int n_polygons = 0; - int dm = GAIA_XY; - if (!geom) - return GAIA_UNKNOWN; - point = geom->FirstPoint; - while (point) - { - /* counts how many points are there */ - n_points++; - if (point->DimensionModel == GAIA_XY_Z) - { - if (dm == GAIA_XY) - dm = GAIA_XY_Z; - else if (dm == GAIA_XY_M) - dm = GAIA_XY_Z_M; - } - else if (point->DimensionModel == GAIA_XY_M) - { - if (dm == GAIA_XY) - dm = GAIA_XY_M; - else if (dm == GAIA_XY_Z) - dm = GAIA_XY_Z_M; - } - else if (point->DimensionModel == GAIA_XY_Z_M) - dm = GAIA_XY_Z_M; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* counts how many linestrings are there */ - n_linestrings++; - if (line->DimensionModel == GAIA_XY_Z) - { - if (dm == GAIA_XY) - dm = GAIA_XY_Z; - else if (dm == GAIA_XY_M) - dm = GAIA_XY_Z_M; - } - else if (line->DimensionModel == GAIA_XY_M) - { - if (dm == GAIA_XY) - dm = GAIA_XY_M; - else if (dm == GAIA_XY_Z) - dm = GAIA_XY_Z_M; - } - else if (line->DimensionModel == GAIA_XY_Z_M) - dm = GAIA_XY_Z_M; - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* counts how many polygons are there */ - n_polygons++; - ring = polyg->Exterior; - if (ring->DimensionModel == GAIA_XY_Z) - { - if (dm == GAIA_XY) - dm = GAIA_XY_Z; - else if (dm == GAIA_XY_M) - dm = GAIA_XY_Z_M; - } - else if (ring->DimensionModel == GAIA_XY_M) - { - if (dm == GAIA_XY) - dm = GAIA_XY_M; - else if (dm == GAIA_XY_Z) - dm = GAIA_XY_Z_M; - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - dm = GAIA_XY_Z_M; - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - if (ring->DimensionModel == GAIA_XY_Z) - { - if (dm == GAIA_XY) - dm = GAIA_XY_Z; - else if (dm == GAIA_XY_M) - dm = GAIA_XY_Z_M; - } - else if (ring->DimensionModel == GAIA_XY_M) - { - if (dm == GAIA_XY) - dm = GAIA_XY_M; - else if (dm == GAIA_XY_Z) - dm = GAIA_XY_Z_M; - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - dm = GAIA_XY_Z_M; - } - polyg = polyg->Next; - } - if (n_points == 0 && n_linestrings == 0 && n_polygons == 0) - return GAIA_UNKNOWN; - if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTIPOINT) - { - if (dm == GAIA_XY_Z) - return GAIA_MULTIPOINTZ; - if (dm == GAIA_XY_M) - return GAIA_MULTIPOINTM; - if (dm == GAIA_XY_Z_M) - return GAIA_MULTIPOINTZM; - else - return GAIA_MULTIPOINT; - } - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (dm == GAIA_XY_Z) - return GAIA_GEOMETRYCOLLECTIONZ; - if (dm == GAIA_XY_M) - return GAIA_GEOMETRYCOLLECTIONM; - if (dm == GAIA_XY_Z_M) - return GAIA_GEOMETRYCOLLECTIONZM; - else - return GAIA_GEOMETRYCOLLECTION; - } - else - { - if (dm == GAIA_XY_Z) - return GAIA_POINTZ; - if (dm == GAIA_XY_M) - return GAIA_POINTM; - if (dm == GAIA_XY_Z_M) - return GAIA_POINTZM; - else - return GAIA_POINT; - } - } - if (n_points > 0 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (dm == GAIA_XY_Z) - return GAIA_GEOMETRYCOLLECTIONZ; - if (dm == GAIA_XY_M) - return GAIA_GEOMETRYCOLLECTIONM; - if (dm == GAIA_XY_Z_M) - return GAIA_GEOMETRYCOLLECTIONZM; - else - return GAIA_GEOMETRYCOLLECTION; - } - else - { - if (dm == GAIA_XY_Z) - return GAIA_MULTIPOINTZ; - if (dm == GAIA_XY_M) - return GAIA_MULTIPOINTM; - if (dm == GAIA_XY_Z_M) - return GAIA_MULTIPOINTZM; - else - return GAIA_MULTIPOINT; - } - } - if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTILINESTRING) - { - if (dm == GAIA_XY_Z) - return GAIA_MULTILINESTRINGZ; - if (dm == GAIA_XY_M) - return GAIA_MULTILINESTRINGM; - if (dm == GAIA_XY_Z_M) - return GAIA_MULTILINESTRINGZM; - else - return GAIA_MULTILINESTRING; - } - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (dm == GAIA_XY_Z) - return GAIA_GEOMETRYCOLLECTIONZ; - if (dm == GAIA_XY_M) - return GAIA_GEOMETRYCOLLECTIONM; - if (dm == GAIA_XY_Z_M) - return GAIA_GEOMETRYCOLLECTIONZM; - else - return GAIA_GEOMETRYCOLLECTION; - } - else - { - if (dm == GAIA_XY_Z) - return GAIA_LINESTRINGZ; - if (dm == GAIA_XY_M) - return GAIA_LINESTRINGM; - if (dm == GAIA_XY_Z_M) - return GAIA_LINESTRINGZM; - else - return GAIA_LINESTRING; - } - } - if (n_points == 0 && n_linestrings > 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (dm == GAIA_XY_Z) - return GAIA_GEOMETRYCOLLECTIONZ; - if (dm == GAIA_XY_M) - return GAIA_GEOMETRYCOLLECTIONM; - if (dm == GAIA_XY_Z_M) - return GAIA_GEOMETRYCOLLECTIONZM; - else - return GAIA_GEOMETRYCOLLECTION; - } - else - { - if (dm == GAIA_XY_Z) - return GAIA_MULTILINESTRINGZ; - if (dm == GAIA_XY_M) - return GAIA_MULTILINESTRINGM; - if (dm == GAIA_XY_Z_M) - return GAIA_MULTILINESTRINGZM; - else - return GAIA_MULTILINESTRING; - } - } - if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) - { - if (geom->DeclaredType == GAIA_MULTIPOLYGON) - { - if (dm == GAIA_XY_Z) - return GAIA_MULTIPOLYGONZ; - if (dm == GAIA_XY_M) - return GAIA_MULTIPOLYGONM; - if (dm == GAIA_XY_Z_M) - return GAIA_MULTIPOLYGONZM; - else - return GAIA_MULTIPOLYGON; - } - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (dm == GAIA_XY_Z) - return GAIA_GEOMETRYCOLLECTIONZ; - if (dm == GAIA_XY_M) - return GAIA_GEOMETRYCOLLECTIONM; - if (dm == GAIA_XY_Z_M) - return GAIA_GEOMETRYCOLLECTIONZM; - else - return GAIA_GEOMETRYCOLLECTION; - } - else - { - if (dm == GAIA_XY_Z) - return GAIA_POLYGONZ; - if (dm == GAIA_XY_M) - return GAIA_POLYGONM; - if (dm == GAIA_XY_Z_M) - return GAIA_POLYGONZM; - else - return GAIA_POLYGON; - } - } - if (n_points == 0 && n_linestrings == 0 && n_polygons > 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (dm == GAIA_XY_Z) - return GAIA_GEOMETRYCOLLECTIONZ; - if (dm == GAIA_XY_M) - return GAIA_GEOMETRYCOLLECTIONM; - if (dm == GAIA_XY_Z_M) - return GAIA_GEOMETRYCOLLECTIONZM; - else - return GAIA_GEOMETRYCOLLECTION; - } - else - { - if (dm == GAIA_XY_Z) - return GAIA_MULTIPOLYGONZ; - if (dm == GAIA_XY_M) - return GAIA_MULTIPOLYGONM; - if (dm == GAIA_XY_Z_M) - return GAIA_MULTIPOLYGONZM; - else - return GAIA_MULTIPOLYGON; - } - } - if (dm == GAIA_XY_Z) - return GAIA_GEOMETRYCOLLECTIONZ; - if (dm == GAIA_XY_M) - return GAIA_GEOMETRYCOLLECTIONM; - if (dm == GAIA_XY_Z_M) - return GAIA_GEOMETRYCOLLECTIONZM; - else - return GAIA_GEOMETRYCOLLECTION; -} - -GAIAGEO_DECLARE int -gaiaGeometryAliasType (gaiaGeomCollPtr geom) -{ -/* determines the AliasClass for this geometry */ - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - int n_points = 0; - int n_linestrings = 0; - int n_polygons = 0; - if (!geom) - return GAIA_UNKNOWN; - point = geom->FirstPoint; - while (point) - { - /* counts how many points are there */ - n_points++; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* counts how many linestrings are there */ - n_linestrings++; - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* counts how many polygons are there */ - n_polygons++; - polyg = polyg->Next; - } - if (n_points == 0 && n_linestrings == 0 && n_polygons == 0) - return GAIA_UNKNOWN; - if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTIPOINT) - return GAIA_MULTIPOINT; - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - return GAIA_GEOMETRYCOLLECTION; - else - return GAIA_POINT; - } - if (n_points >= 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - return GAIA_GEOMETRYCOLLECTION; - else - return GAIA_MULTIPOINT; - } - if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTILINESTRING) - return GAIA_MULTILINESTRING; - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - return GAIA_GEOMETRYCOLLECTION; - else - return GAIA_LINESTRING; - } - if (n_points == 0 && n_linestrings >= 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - return GAIA_GEOMETRYCOLLECTION; - else - return GAIA_MULTILINESTRING; - } - if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) - { - if (geom->DeclaredType == GAIA_MULTIPOLYGON) - return GAIA_MULTIPOLYGON; - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - return GAIA_GEOMETRYCOLLECTION; - else - return GAIA_POLYGON; - } - if (n_points == 0 && n_linestrings == 0 && n_polygons >= 1) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - return GAIA_GEOMETRYCOLLECTION; - else - return GAIA_MULTIPOLYGON; - } - return GAIA_GEOMETRYCOLLECTION; -} - -GAIAGEO_DECLARE int -gaiaIsEmpty (gaiaGeomCollPtr geom) -{ -/* checks if this GEOMETRYCOLLECTION is an empty one */ - if (!geom) - return 1; - if (geom->FirstPoint != NULL) - { - /* there is at least one point */ - return 0; - } - if (geom->FirstLinestring != NULL) - { - /* there is at least one linestring */ - return 0; - } - if (geom->FirstPolygon != NULL) - { - /* there is at least one polygon */ - return 0; - } - return 1; -} - -GAIAGEO_DECLARE int -gaiaIsClosed (gaiaLinestringPtr line) -{ -/* checks if this linestring is a closed one */ - double x0; - double y0; - double x1; - double y1; - double z; - double m; - if (!line) - return 0; - if (line->Points < 3) - return 0; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, 0, &x0, &y0, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, 0, &x0, &y0, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, 0, &x0, &y0, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, 0, &x0, &y0); - } - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, (line->Points - 1), &x1, &y1, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, (line->Points - 1), &x1, &y1, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, (line->Points - 1), &x1, &y1, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, (line->Points - 1), &x1, &y1); - } - if (x0 == x1 && y0 == y1) - return 1; - return 0; -} - -GAIAGEO_DECLARE int -gaiaMbrsEqual (gaiaGeomCollPtr mbr1, gaiaGeomCollPtr mbr2) -{ -/* -/ checks if two MBRs are identical -/ -/ returns 1 if TRUE -/ 0 if FALSE -*/ - if (mbr1->MinX != mbr2->MinX) - return 0; - if (mbr1->MinY != mbr2->MinY) - return 0; - if (mbr1->MaxX != mbr2->MaxX) - return 0; - if (mbr1->MaxY != mbr2->MaxY) - return 0; - return 1; -} - -GAIAGEO_DECLARE int -gaiaMbrsDisjoint (gaiaGeomCollPtr mbr1, gaiaGeomCollPtr mbr2) -{ -/* -/ checks if two MBRs are disjoint -/ -/ returns 1 if TRUE -/ 0 if FALSE -*/ - if (mbr1->MinX > mbr2->MaxX) - return 1; - if (mbr1->MinY > mbr2->MaxY) - return 1; - if (mbr1->MaxX < mbr2->MinX) - return 1; - if (mbr1->MaxY < mbr2->MinY) - return 1; - if (mbr2->MinX > mbr1->MaxX) - return 1; - if (mbr2->MinY > mbr1->MaxY) - return 1; - if (mbr2->MaxX < mbr1->MinX) - return 1; - if (mbr2->MaxY < mbr1->MinY) - return 1; - return 0; -} - -GAIAGEO_DECLARE int -gaiaMbrsTouches (gaiaGeomCollPtr mbr1, gaiaGeomCollPtr mbr2) -{ -/* -/ checks if two MBRs touches -/ -/ returns 1 if TRUE -/ 0 if FALSE -*/ - if (mbr1->MinX == mbr2->MinX) - return 1; - if (mbr1->MinY == mbr2->MinY) - return 1; - if (mbr1->MaxX == mbr2->MaxX) - return 1; - if (mbr1->MaxY == mbr2->MaxY) - return 1; - return 0; -} - -GAIAGEO_DECLARE int -gaiaMbrsIntersects (gaiaGeomCollPtr mbr1, gaiaGeomCollPtr mbr2) -{ -/* -/ checks if two MBRs intersect -/ -/ returns 1 if TRUE -/ 0 if FALSE -*/ - if (gaiaMbrsDisjoint (mbr1, mbr2)) - return 0; - return 1; -} - -GAIAGEO_DECLARE int -gaiaMbrsOverlaps (gaiaGeomCollPtr mbr1, gaiaGeomCollPtr mbr2) -{ -/* -/ checks if two MBRs overlap -/ -/ returns 1 if TRUE -/ 0 if FALSE -*/ - if (gaiaMbrsDisjoint (mbr1, mbr2)) - return 0; - if (mbr1->MinX >= mbr2->MinX && mbr1->MinX <= mbr2->MaxX) - return 1; - if (mbr1->MaxX >= mbr2->MinX && mbr1->MaxX <= mbr2->MaxX) - return 1; - if (mbr1->MinY >= mbr2->MinY && mbr1->MinY <= mbr2->MaxY) - return 1; - if (mbr1->MaxY >= mbr2->MinY && mbr1->MaxY <= mbr2->MaxY) - return 1; - return 0; -} - -GAIAGEO_DECLARE int -gaiaMbrsContains (gaiaGeomCollPtr mbr1, gaiaGeomCollPtr mbr2) -{ -/* -/ checks if MBR-1 completely contains MBR-2 -/ -/ returns 1 if TRUE -/ 0 if FALSE -*/ - int ok_1 = 0; - int ok_2 = 0; - int ok_3 = 0; - int ok_4 = 0; - if (mbr2->MinX >= mbr1->MinX && mbr2->MinX <= mbr1->MaxX) - ok_1 = 1; - if (mbr2->MaxX >= mbr1->MinX && mbr2->MaxX <= mbr1->MaxX) - ok_2 = 1; - if (mbr2->MinY >= mbr1->MinY && mbr2->MinY <= mbr1->MaxY) - ok_3 = 1; - if (mbr2->MaxY >= mbr1->MinY && mbr2->MaxY <= mbr1->MaxY) - ok_4 = 1; - if (ok_1 && ok_2 && ok_3 && ok_4) - return 1; - return 0; -} - -GAIAGEO_DECLARE int -gaiaMbrsWithin (gaiaGeomCollPtr mbr1, gaiaGeomCollPtr mbr2) -{ -/* -/ checks if MBR-2 completely contains MBR-1 -/ -/ returns 1 if TRUE -/ 0 if FALSE -*/ - int ok_1 = 0; - int ok_2 = 0; - int ok_3 = 0; - int ok_4 = 0; - if (mbr1->MinX >= mbr2->MinX && mbr1->MinX <= mbr2->MaxX) - ok_1 = 1; - if (mbr1->MaxX >= mbr2->MinX && mbr1->MaxX <= mbr2->MaxX) - ok_2 = 1; - if (mbr1->MinY >= mbr2->MinY && mbr1->MinY <= mbr2->MaxY) - ok_3 = 1; - if (mbr1->MaxY >= mbr2->MinY && mbr1->MaxY <= mbr2->MaxY) - ok_4 = 1; - if (ok_1 && ok_2 && ok_3 && ok_4) - return 1; - return 0; -} - -GAIAGEO_DECLARE void -gaiaMakePoint (double x, double y, int srid, unsigned char **result, int *size) -{ -/* build a Blob encoded Geometry representing a POINT */ - unsigned char *ptr; - int endian_arch = gaiaEndianArch (); -/* computing the Blob size and then allocating it */ - *size = 44; /* header size */ - *size += (sizeof (double) * 2); /* [x,y] coords */ - *result = malloc (*size); - ptr = *result; -/* setting the Blob value */ - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, x, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, y, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, x, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, y, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POINT, 1, endian_arch); /* class POINT */ - gaiaExport64 (ptr + 43, x, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 51, y, 1, endian_arch); /* Y */ - *(ptr + 59) = GAIA_MARK_END; /* END signature */ -} - -GAIAGEO_DECLARE void -gaiaMakePointZ (double x, double y, double z, int srid, unsigned char **result, - int *size) -{ -/* build a Blob encoded Geometry representing a POINT Z */ - unsigned char *ptr; - int endian_arch = gaiaEndianArch (); -/* computing the Blob size and then allocating it */ - *size = 44; /* header size */ - *size += (sizeof (double) * 3); /* [x,y,z] coords */ - *result = malloc (*size); - ptr = *result; -/* setting the Blob value */ - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, x, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, y, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, x, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, y, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POINTZ, 1, endian_arch); /* class POINT */ - gaiaExport64 (ptr + 43, x, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 51, y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 59, z, 1, endian_arch); /* Z */ - *(ptr + 67) = GAIA_MARK_END; /* END signature */ -} - -GAIAGEO_DECLARE void -gaiaMakePointM (double x, double y, double m, int srid, unsigned char **result, - int *size) -{ -/* build a Blob encoded Geometry representing a POINT M */ - unsigned char *ptr; - int endian_arch = gaiaEndianArch (); -/* computing the Blob size and then allocating it */ - *size = 44; /* header size */ - *size += (sizeof (double) * 3); /* [x,y,z] coords */ - *result = malloc (*size); - ptr = *result; -/* setting the Blob value */ - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, x, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, y, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, x, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, y, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POINTM, 1, endian_arch); /* class POINT */ - gaiaExport64 (ptr + 43, x, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 51, y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 59, m, 1, endian_arch); /* M */ - *(ptr + 67) = GAIA_MARK_END; /* END signature */ -} - -GAIAGEO_DECLARE void -gaiaMakePointZM (double x, double y, double z, double m, int srid, - unsigned char **result, int *size) -{ -/* build a Blob encoded Geometry representing a POINT ZM */ - unsigned char *ptr; - int endian_arch = gaiaEndianArch (); -/* computing the Blob size and then allocating it */ - *size = 44; /* header size */ - *size += (sizeof (double) * 4); /* [x,y,z,m] coords */ - *result = malloc (*size); - ptr = *result; -/* setting the Blob value */ - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, x, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, y, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, x, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, y, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POINTZM, 1, endian_arch); /* class POINT */ - gaiaExport64 (ptr + 43, x, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 51, y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 59, z, 1, endian_arch); /* Z */ - gaiaExport64 (ptr + 67, m, 1, endian_arch); /* M */ - *(ptr + 75) = GAIA_MARK_END; /* END signature */ -} - -GAIAGEO_DECLARE void -gaiaMakeLine (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, - unsigned char **result, int *size) -{ -/* build a Blob encoded Geometry representing a LINESTRING (segment) */ - int pts; - int lns; - int pgs; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaGeomCollPtr g; - int dims0; - int dims1; - int dims; - double x0; - double y0; - double z0; - double m0; - double x1; - double y1; - double z1; - double m1; - -/* checking if GEOM-1 simply is a POINT */ - if (geom1 == NULL) - { - *result = NULL; - *size = 0; - return; - } - pts = 0; - lns = 0; - pgs = 0; - pt = geom1->FirstPoint; - while (pt) - { - pts++; - x0 = pt->X; - y0 = pt->Y; - z0 = pt->Z; - m0 = pt->M; - dims0 = pt->DimensionModel; - pt = pt->Next; - } - ln = geom1->FirstLinestring; - while (ln) - { - lns++; - ln = ln->Next; - } - pg = geom1->FirstPolygon; - while (pg) - { - pgs++; - pg = pg->Next; - } - if (pts == 1 && lns == 0 && pgs == 0) - ; - else - { - /* failure: not a simple POINT */ - *result = NULL; - *size = 0; - return; - } - -/* checking if GEOM-2 simply is a POINT */ - if (geom2 == NULL) - { - *result = NULL; - *size = 0; - return; - } - pts = 0; - lns = 0; - pgs = 0; - pt = geom2->FirstPoint; - while (pt) - { - pts++; - x1 = pt->X; - y1 = pt->Y; - z1 = pt->Z; - m1 = pt->M; - dims1 = pt->DimensionModel; - pt = pt->Next; - } - ln = geom2->FirstLinestring; - while (ln) - { - lns++; - ln = ln->Next; - } - pg = geom2->FirstPolygon; - while (pg) - { - pgs++; - pg = pg->Next; - } - if (pts == 1 && lns == 0 && pgs == 0) - ; - else - { - /* failure: not a simple POINT */ - *result = NULL; - *size = 0; - return; - } - -/* building a new Geometry */ - if (dims0 == dims1) - dims = dims0; - else - { - if (dims0 == GAIA_XY_Z_M || dims1 == GAIA_XY_Z_M) - dims = GAIA_XY_Z_M; - else if (dims0 == GAIA_XY_Z && dims1 == GAIA_XY_M) - dims = GAIA_XY_Z_M; - else if (dims0 == GAIA_XY_M && dims1 == GAIA_XY_Z) - dims = GAIA_XY_Z_M; - else if (dims0 == GAIA_XY_Z) - dims = GAIA_XY_Z; - else if (dims1 == GAIA_XY_Z) - dims = GAIA_XY_Z; - else if (dims0 == GAIA_XY_M) - dims = GAIA_XY_M; - else if (dims1 == GAIA_XY_M) - dims = GAIA_XY_M; - else - dims = GAIA_XY; - } - if (dims == GAIA_XY_Z_M) - g = gaiaAllocGeomCollXYZM (); - else if (dims == GAIA_XY_Z) - g = gaiaAllocGeomCollXYZ (); - else if (dims == GAIA_XY_M) - g = gaiaAllocGeomCollXYM (); - else - g = gaiaAllocGeomColl (); - g->Srid = geom1->Srid; - g->DeclaredType = GAIA_LINESTRING; - ln = gaiaAddLinestringToGeomColl (g, 2); - if (dims == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, 0, x0, y0, z0, m0); - gaiaSetPointXYZM (ln->Coords, 1, x1, y1, z1, m1); - } - else if (dims == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, 0, x0, y0, z0); - gaiaSetPointXYZ (ln->Coords, 1, x1, y1, z1); - } - else if (dims == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, 0, x0, y0, m0); - gaiaSetPointXYM (ln->Coords, 1, x1, y1, m1); - } - else - { - gaiaSetPoint (ln->Coords, 0, x0, y0); - gaiaSetPoint (ln->Coords, 1, x1, y1); - } -/* converting to Binary Blob */ - gaiaToSpatiaLiteBlobWkb (g, result, size); - gaiaFreeGeomColl (g); -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaMergeGeometries (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* mergine two generic Geometries into a single one */ - gaiaGeomCollPtr result; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaLinestringPtr new_ln; - gaiaPolygonPtr pg; - gaiaPolygonPtr new_pg; - gaiaRingPtr rng; - gaiaRingPtr new_rng; - int dims1; - int dims2; - int dims; - double x; - double y; - double z; - double m; - int iv; - int ib; - - if (geom1 == NULL || geom2 == NULL) - return NULL; - if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) - return NULL; - dims1 = geom1->DimensionModel; - dims2 = geom2->DimensionModel; -/* building a new Geometry */ - if (dims1 == dims2) - dims = dims1; - else - { - if (dims1 == GAIA_XY_Z_M || dims2 == GAIA_XY_Z_M) - dims = GAIA_XY_Z_M; - else if (dims1 == GAIA_XY_Z && dims2 == GAIA_XY_M) - dims = GAIA_XY_Z_M; - else if (dims1 == GAIA_XY_M && dims2 == GAIA_XY_Z) - dims = GAIA_XY_Z_M; - else if (dims1 == GAIA_XY_Z) - dims = GAIA_XY_Z; - else if (dims2 == GAIA_XY_Z) - dims = GAIA_XY_Z; - else if (dims1 == GAIA_XY_M) - dims = GAIA_XY_M; - else if (dims2 == GAIA_XY_M) - dims = GAIA_XY_M; - else - dims = GAIA_XY; - } - if (dims == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else if (dims == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (dims == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else - result = gaiaAllocGeomColl (); - result->Srid = geom1->Srid; - - pt = geom1->FirstPoint; - while (pt) - { - /* copying POINTs from GEOM-1 */ - z = 0.0; - m = 0.0; - if (pt->DimensionModel == GAIA_XY_Z_M) - { - x = pt->X; - y = pt->Y; - z = pt->Z; - m = pt->M; - } - else if (pt->DimensionModel == GAIA_XY_Z) - { - x = pt->X; - y = pt->Y; - z = pt->Z; - } - else if (pt->DimensionModel == GAIA_XY_M) - { - x = pt->X; - y = pt->Y; - m = pt->M; - } - else - { - x = pt->X; - y = pt->Y; - } - if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaAddPointToGeomCollXYZM (result, x, y, z, m); - } - else if (result->DimensionModel == GAIA_XY_Z) - { - gaiaAddPointToGeomCollXYZ (result, x, y, z); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaAddPointToGeomCollXYM (result, x, y, m); - } - else - { - gaiaAddPointToGeomColl (result, x, y); - } - pt = pt->Next; - } - - pt = geom2->FirstPoint; - while (pt) - { - /* copying POINTs from GEOM-2 */ - z = 0.0; - m = 0.0; - if (pt->DimensionModel == GAIA_XY_Z_M) - { - x = pt->X; - y = pt->Y; - z = pt->Z; - m = pt->M; - } - else if (pt->DimensionModel == GAIA_XY_Z) - { - x = pt->X; - y = pt->Y; - z = pt->Z; - } - else if (pt->DimensionModel == GAIA_XY_M) - { - x = pt->X; - y = pt->Y; - m = pt->M; - } - else - { - x = pt->X; - y = pt->Y; - } - if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaAddPointToGeomCollXYZM (result, x, y, z, m); - } - else if (result->DimensionModel == GAIA_XY_Z) - { - gaiaAddPointToGeomCollXYZ (result, x, y, z); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaAddPointToGeomCollXYM (result, x, y, m); - } - else - { - gaiaAddPointToGeomColl (result, x, y); - } - pt = pt->Next; - } - - ln = geom1->FirstLinestring; - while (ln) - { - /* copying LINESTRINGs from GEOM-1 */ - new_ln = gaiaAddLinestringToGeomColl (result, ln->Points); - for (iv = 0; iv < ln->Points; iv++) - { - z = 0.0; - m = 0.0; - if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - } - else if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - if (new_ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); - } - else if (new_ln->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); - } - else if (new_ln->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); - } - else - { - gaiaSetPoint (new_ln->Coords, iv, x, y); - } - } - ln = ln->Next; - } - - ln = geom2->FirstLinestring; - while (ln) - { - /* copying LINESTRINGs from GEOM-2 */ - new_ln = gaiaAddLinestringToGeomColl (result, ln->Points); - for (iv = 0; iv < ln->Points; iv++) - { - z = 0.0; - m = 0.0; - if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - } - else if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - if (new_ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); - } - else if (new_ln->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); - } - else if (new_ln->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); - } - else - { - gaiaSetPoint (new_ln->Coords, iv, x, y); - } - } - ln = ln->Next; - } - - pg = geom1->FirstPolygon; - while (pg) - { - /* copying POLYGONs from GEOM-1 */ - rng = pg->Exterior; - new_pg = - gaiaAddPolygonToGeomColl (result, rng->Points, pg->NumInteriors); - new_rng = new_pg->Exterior; - for (iv = 0; iv < rng->Points; iv++) - { - /* Exterior Ring */ - z = 0.0; - m = 0.0; - if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - if (new_rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (new_rng->Coords, iv, x, y, z, m); - } - else if (new_rng->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (new_rng->Coords, iv, x, y, z); - } - else if (new_rng->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (new_rng->Coords, iv, x, y, m); - } - else - { - gaiaSetPoint (new_rng->Coords, iv, x, y); - } - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - /* Interior Rings */ - rng = pg->Interiors + ib; - new_rng = gaiaAddInteriorRing (new_pg, ib, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - z = 0.0; - m = 0.0; - if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - if (new_rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (new_rng->Coords, iv, x, y, z, m); - } - else if (new_rng->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (new_rng->Coords, iv, x, y, z); - } - else if (new_rng->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (new_rng->Coords, iv, x, y, m); - } - else - { - gaiaSetPoint (new_rng->Coords, iv, x, y); - } - } - } - pg = pg->Next; - } - - pg = geom2->FirstPolygon; - while (pg) - { - /* copying POLYGONs from GEOM-2 */ - rng = pg->Exterior; - new_pg = - gaiaAddPolygonToGeomColl (result, rng->Points, pg->NumInteriors); - new_rng = new_pg->Exterior; - for (iv = 0; iv < rng->Points; iv++) - { - /* Exterior Ring */ - z = 0.0; - m = 0.0; - if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - if (new_rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (new_rng->Coords, iv, x, y, z, m); - } - else if (new_rng->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (new_rng->Coords, iv, x, y, z); - } - else if (new_rng->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (new_rng->Coords, iv, x, y, m); - } - else - { - gaiaSetPoint (new_rng->Coords, iv, x, y); - } - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - /* Interior Rings */ - rng = pg->Interiors + ib; - new_rng = gaiaAddInteriorRing (new_pg, ib, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - z = 0.0; - m = 0.0; - if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - if (new_rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (new_rng->Coords, iv, x, y, z, m); - } - else if (new_rng->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (new_rng->Coords, iv, x, y, z); - } - else if (new_rng->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (new_rng->Coords, iv, x, y, m); - } - else - { - gaiaSetPoint (new_rng->Coords, iv, x, y); - } - } - } - pg = pg->Next; - } - - return result; -} - -GAIAGEO_DECLARE void -gaiaBuildMbr (double x1, double y1, double x2, double y2, int srid, - unsigned char **result, int *size) -{ -/* build a Blob encoded Geometry representing an MBR */ - unsigned char *ptr; - double minx; - double maxx; - double miny; - double maxy; - int endian_arch = gaiaEndianArch (); -/* computing MinMax coords */ - if (x1 > x2) - { - maxx = x1; - minx = x2; - } - else - { - minx = x1; - maxx = x2; - } - if (y1 > y2) - { - maxy = y1; - miny = y2; - } - else - { - miny = y1; - maxy = y2; - } -/* computing the Blob size and then allocating it */ - *size = 44; /* header size */ - *size += (8 + ((sizeof (double) * 2) * 5)); /* # rings + # points + [x.y] array - exterior ring */ - *result = malloc (*size); - ptr = *result; -/* setting the Blob value */ - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, minx, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, miny, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, maxx, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, maxy, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POLYGON, 1, endian_arch); /* class POLYGON */ - gaiaExport32 (ptr + 43, 1, 1, endian_arch); /* # rings */ - gaiaExport32 (ptr + 47, 5, 1, endian_arch); /* # points - exterior ring */ - ptr += 51; -/* setting Envelope points */ - gaiaExport64 (ptr, minx, 1, endian_arch); - gaiaExport64 (ptr + 8, miny, 1, endian_arch); - ptr += 16; - gaiaExport64 (ptr, maxx, 1, endian_arch); - gaiaExport64 (ptr + 8, miny, 1, endian_arch); - ptr += 16; - gaiaExport64 (ptr, maxx, 1, endian_arch); - gaiaExport64 (ptr + 8, maxy, 1, endian_arch); - ptr += 16; - gaiaExport64 (ptr, minx, 1, endian_arch); - gaiaExport64 (ptr + 8, maxy, 1, endian_arch); - ptr += 16; - gaiaExport64 (ptr, minx, 1, endian_arch); - gaiaExport64 (ptr + 8, miny, 1, endian_arch); - ptr += 16; - *ptr = GAIA_MARK_END; /* END signature */ -} - -GAIAGEO_DECLARE void -gaiaBuildCircleMbr (double x, double y, double radius, int srid, - unsigned char **result, int *size) -{ -/* build a Blob encoded Geometry representing an MBR */ - int sz; - unsigned char *res = NULL; - double minx = x - radius; - double maxx = x + radius; - double miny = y - radius; - double maxy = y + radius; - gaiaBuildMbr (minx, miny, maxx, maxy, srid, &res, &sz); - if (!res) - { - *result = NULL; - *size = 0; - } - else - { - *result = res; - *size = sz; - } -} - -GAIAGEO_DECLARE void -gaiaBuildFilterMbr (double x1, double y1, double x2, double y2, int mode, - unsigned char **result, int *size) -{ -/* build a filter for an MBR */ - unsigned char *ptr; - double minx; - double maxx; - double miny; - double maxy; - int endian_arch = gaiaEndianArch (); - char filter = GAIA_FILTER_MBR_WITHIN; - if (mode == GAIA_FILTER_MBR_CONTAINS) - filter = GAIA_FILTER_MBR_CONTAINS; - if (mode == GAIA_FILTER_MBR_INTERSECTS) - filter = GAIA_FILTER_MBR_INTERSECTS; - if (mode == GAIA_FILTER_MBR_DECLARE) - filter = GAIA_FILTER_MBR_DECLARE; -/* computing MinMax coords */ - if (x1 > x2) - { - maxx = x1; - minx = x2; - } - else - { - minx = x1; - maxx = x2; - } - if (y1 > y2) - { - maxy = y1; - miny = y2; - } - else - { - miny = y1; - maxy = y2; - } -/* computing the Blob size and then allocating it */ - *size = 37; /* MBR filter size */ - *result = malloc (*size); - ptr = *result; -/* setting the Blob value */ - *ptr = filter; /* signature */ - ptr++; - gaiaExport64 (ptr, minx, 1, endian_arch); /* MBR - minimum X */ - ptr += 8; - *ptr = filter; /* signature */ - ptr++; - gaiaExport64 (ptr, miny, 1, endian_arch); /* MBR - minimum Y */ - ptr += 8; - *ptr = filter; /* signature */ - ptr++; - gaiaExport64 (ptr, maxx, 1, endian_arch); /* MBR - maximum X */ - ptr += 8; - *ptr = filter; /* signature */ - ptr++; - gaiaExport64 (ptr, maxy, 1, endian_arch); /* MBR - maximum Y */ - ptr += 8; - *ptr = filter; /* signature */ -} - - -GAIAGEO_DECLARE int -gaiaParseFilterMbr (unsigned char *ptr, int size, double *minx, double *miny, - double *maxx, double *maxy, int *mode) -{ -/* parsing a filter for an MBR */ - char decl_mode; - int endian_arch = gaiaEndianArch (); - if (size != 37) - return 0; /* cannot be an MBR Filter */ - if (!ptr) - return 0; /* cannot be an MBR Filter */ - decl_mode = *(ptr + 0); - if (decl_mode == GAIA_FILTER_MBR_WITHIN) - ; - else if (decl_mode == GAIA_FILTER_MBR_CONTAINS) - ; - else if (decl_mode == GAIA_FILTER_MBR_INTERSECTS) - ; - else if (decl_mode == GAIA_FILTER_MBR_DECLARE) - ; - else - return 0; /* cannot be an MBR Filter */ - if (*(ptr + 9) - == decl_mode - && *(ptr + - 18) == - decl_mode && *(ptr + 27) == decl_mode && *(ptr + 36) == decl_mode) - ; - else - return 0; /* cannot be an MBR Filter */ - *mode = decl_mode; - *minx = gaiaImport64 (ptr + 1, 1, endian_arch); - *miny = gaiaImport64 (ptr + 10, 1, endian_arch); - *maxx = gaiaImport64 (ptr + 19, 1, endian_arch); - *maxy = gaiaImport64 (ptr + 28, 1, endian_arch); - return 1; -} - -GAIAGEO_DECLARE int -gaiaGetMbrMinX (const unsigned char *blob, unsigned int size, double *minx) -{ -/* returns the MinX coordinate value for a Blob encoded Geometry */ - int little_endian; - int endian_arch = gaiaEndianArch (); - if (size < 45) - return 0; /* cannot be an internal BLOB WKB geometry */ - if (*(blob + 0) != GAIA_MARK_START) - return 0; /* failed to recognize START signature */ - if (*(blob + (size - 1)) != GAIA_MARK_END) - return 0; /* failed to recognize END signature */ - if (*(blob + 38) != GAIA_MARK_MBR) - return 0; /* failed to recognize MBR signature */ - if (*(blob + 1) == GAIA_LITTLE_ENDIAN) - little_endian = 1; - else if (*(blob + 1) == GAIA_BIG_ENDIAN) - little_endian = 0; - else - return 0; /* unknown encoding; neither little-endian nor big-endian */ - *minx = gaiaImport64 (blob + 6, little_endian, endian_arch); - return 1; -} - -GAIAGEO_DECLARE int -gaiaGetMbrMaxX (const unsigned char *blob, unsigned int size, double *maxx) -{ -/* returns the MaxX coordinate value for a Blob encoded Geometry */ - int little_endian; - int endian_arch = gaiaEndianArch (); - if (size < 45) - return 0; /* cannot be an internal BLOB WKB geometry */ - if (*(blob + 0) != GAIA_MARK_START) - return 0; /* failed to recognize START signature */ - if (*(blob + (size - 1)) != GAIA_MARK_END) - return 0; /* failed to recognize END signature */ - if (*(blob + 38) != GAIA_MARK_MBR) - return 0; /* failed to recognize MBR signature */ - if (*(blob + 1) == GAIA_LITTLE_ENDIAN) - little_endian = 1; - else if (*(blob + 1) == GAIA_BIG_ENDIAN) - little_endian = 0; - else - return 0; /* unknown encoding; neither little-endian nor big-endian */ - *maxx = gaiaImport64 (blob + 22, little_endian, endian_arch); - return 1; -} - -GAIAGEO_DECLARE int -gaiaGetMbrMinY (const unsigned char *blob, unsigned int size, double *miny) -{ -/* returns the MinY coordinate value for a Blob encoded Geometry */ - int little_endian; - int endian_arch = gaiaEndianArch (); - if (size < 45) - return 0; /* cannot be an internal BLOB WKB geometry */ - if (*(blob + 0) != GAIA_MARK_START) - return 0; /* failed to recognize START signature */ - if (*(blob + (size - 1)) != GAIA_MARK_END) - return 0; /* failed to recognize END signature */ - if (*(blob + 38) != GAIA_MARK_MBR) - return 0; /* failed to recognize MBR signature */ - if (*(blob + 1) == GAIA_LITTLE_ENDIAN) - little_endian = 1; - else if (*(blob + 1) == GAIA_BIG_ENDIAN) - little_endian = 0; - else - return 0; /* unknown encoding; neither little-endian nor big-endian */ - *miny = gaiaImport64 (blob + 14, little_endian, endian_arch); - return 1; -} - -GAIAGEO_DECLARE int -gaiaGetMbrMaxY (const unsigned char *blob, unsigned int size, double *maxy) -{ -/* returns the MaxY coordinate value for a Blob encoded Geometry */ - int little_endian; - int endian_arch = gaiaEndianArch (); - if (size < 45) - return 0; /* cannot be an internal BLOB WKB geometry */ - if (*(blob + 0) != GAIA_MARK_START) - return 0; /* failed to recognize START signature */ - if (*(blob + (size - 1)) != GAIA_MARK_END) - return 0; /* failed to recognize END signature */ - if (*(blob + 38) != GAIA_MARK_MBR) - return 0; /* failed to recognize MBR signature */ - if (*(blob + 1) == GAIA_LITTLE_ENDIAN) - little_endian = 1; - else if (*(blob + 1) == GAIA_BIG_ENDIAN) - little_endian = 0; - else - return 0; /* unknown encoding; neither little-endian nor big-endian */ - *maxy = gaiaImport64 (blob + 30, little_endian, endian_arch); - return 1; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaLocateBetweenMeasures (gaiaGeomCollPtr geom, double m_start, double m_end) -{ -/* extracts points/linestrings accordingly to a range of measures */ - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaLinestringPtr new_line; - gaiaGeomCollPtr new_geom = NULL; - gaiaDynamicLinePtr dyn = NULL; - int iv; - double x; - double y; - double z; - double m; - if (!geom) - return NULL; - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - return NULL; - if (geom->FirstPolygon != NULL) - return NULL; - if (geom->DimensionModel == GAIA_XY_M) - new_geom = gaiaAllocGeomCollXYM (); - else if (geom->DimensionModel == GAIA_XY_Z_M) - new_geom = gaiaAllocGeomCollXYZM (); - else - return NULL; - new_geom->Srid = geom->Srid; - new_geom->DeclaredType = geom->DeclaredType; - pt = geom->FirstPoint; - while (pt) - { - /* extracting POINTs */ - if (pt->M >= m_start && pt->M <= m_end) - { - if (geom->DimensionModel == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (new_geom, pt->X, pt->Y, pt->M); - else if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (new_geom, pt->X, pt->Y, - pt->Z, pt->M); - } - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - /* extracting LINESTRINGs */ - for (iv = 0; iv < ln->Points; iv++) - { - z = 0.0; - if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - } - if (m >= m_start && m <= m_end) - { - /* found a valid vertex */ - if (dyn == NULL) - dyn = gaiaAllocDynamicLine (); - if (ln->DimensionModel == GAIA_XY_Z_M) - gaiaAppendPointZMToDynamicLine (dyn, x, y, z, m); - else - gaiaAppendPointMToDynamicLine (dyn, x, y, m); - } - else - { - if (dyn != NULL) - { - /* evaluting the latest sequence found */ - int cnt = 0; - pt = dyn->First; - while (pt) - { - /* counting how many points are there */ - cnt++; - pt = pt->Next; - } - if (cnt > 1) - { - /* creating a Linestring */ - new_line = - gaiaAddLinestringToGeomColl (new_geom, - cnt); - cnt = 0; - pt = dyn->First; - while (pt) - { - - if (new_line->DimensionModel == - GAIA_XY_Z_M) - { - gaiaSetPointXYZM - (new_line->Coords, cnt, pt->X, - pt->Y, pt->Z, pt->M); - } - else - { - gaiaSetPointXYM (new_line->Coords, - cnt, pt->X, - pt->Y, pt->M); - } - cnt++; - pt = pt->Next; - } - } - else if (cnt == 1) - { - /* creating a Point */ - pt = dyn->First; - if (geom->DimensionModel == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (new_geom, - pt->X, pt->Y, - pt->M); - else if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (new_geom, - pt->X, pt->Y, - pt->Z, pt->M); - } - gaiaFreeDynamicLine (dyn); - dyn = NULL; - } - } - } - if (dyn != NULL) - { - /* evaluting the latest sequence found */ - int cnt = 0; - pt = dyn->First; - while (pt) - { - /* counting how many points are there */ - cnt++; - pt = pt->Next; - } - if (cnt > 1) - { - /* creating a Linestring */ - new_line = gaiaAddLinestringToGeomColl (new_geom, cnt); - cnt = 0; - pt = dyn->First; - while (pt) - { - - if (new_line->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (new_line->Coords, cnt, - pt->X, pt->Y, pt->Z, pt->M); - } - else - { - gaiaSetPointXYM (new_line->Coords, - cnt, pt->X, pt->Y, pt->M); - } - cnt++; - pt = pt->Next; - } - } - else if (cnt == 1) - { - /* creating a Point */ - pt = dyn->First; - if (geom->DimensionModel == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (new_geom, - pt->X, pt->Y, pt->M); - else if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (new_geom, - pt->X, pt->Y, - pt->Z, pt->M); - } - gaiaFreeDynamicLine (dyn); - dyn = NULL; - } - ln = ln->Next; - } - if (new_geom->FirstPoint == NULL && new_geom->FirstLinestring == NULL) - { - /* empty result: returning NULL */ - gaiaFreeGeomColl (new_geom); - return NULL; - } - return new_geom; -} diff --git a/src/spatialite/src/gaiageo/gg_geoscvt.c b/src/spatialite/src/gaiageo/gg_geoscvt.c deleted file mode 100644 index 0813ec4..0000000 --- a/src/spatialite/src/gaiageo/gg_geoscvt.c +++ /dev/null @@ -1,1212 +0,0 @@ -/* - - gg_geoscvt.c -- Gaia / GEOS conversion [Geometry] - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#ifndef OMIT_GEOS /* including GEOS */ -#include -#endif - -#include - -#include - -#ifndef OMIT_GEOS /* including GEOS */ - -static GEOSGeometry * -toGeosGeometry (const gaiaGeomCollPtr gaia, int mode) -{ -/* converting a GAIA Geometry into a GEOS Geometry */ - int pts = 0; - int lns = 0; - int pgs = 0; - int type; - int geos_type; - unsigned int dims; - int iv; - int ib; - int nItem; - double x; - double y; - double z; - double m; - double x0; - double y0; - double z0; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - GEOSGeometry *geos; - GEOSGeometry *geos_ext; - GEOSGeometry *geos_int; - GEOSGeometry *geos_item; - GEOSGeometry **geos_holes; - GEOSGeometry **geos_coll; - GEOSCoordSequence *cs; - int ring_points; - int n_items; - if (!gaia) - return NULL; - pt = gaia->FirstPoint; - while (pt) - { - /* counting how many POINTs are there */ - pts++; - pt = pt->Next; - } - ln = gaia->FirstLinestring; - while (ln) - { - /* counting how many LINESTRINGs are there */ - lns++; - ln = ln->Next; - } - pg = gaia->FirstPolygon; - while (pg) - { - /* counting how many POLYGONs are there */ - pgs++; - pg = pg->Next; - } - if (mode == GAIA2GEOS_ONLY_POINTS && pts == 0) - return NULL; - if (mode == GAIA2GEOS_ONLY_LINESTRINGS && lns == 0) - return NULL; - if (mode == GAIA2GEOS_ONLY_POLYGONS && pgs == 0) - return NULL; - if (pts == 0 && lns == 0 && pgs == 0) - return NULL; - else if (pts == 1 && lns == 0 && pgs == 0) - { - if (gaia->DeclaredType == GAIA_MULTIPOINT) - type = GAIA_MULTIPOINT; - else if (gaia->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_POINT; - } - else if (pts == 0 && lns == 1 && pgs == 0) - { - if (gaia->DeclaredType == GAIA_MULTILINESTRING) - type = GAIA_MULTILINESTRING; - else if (gaia->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_LINESTRING; - } - else if (pts == 0 && lns == 0 && pgs == 1) - { - if (gaia->DeclaredType == GAIA_MULTIPOLYGON) - type = GAIA_MULTIPOLYGON; - else if (gaia->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_POLYGON; - } - else if (pts > 1 && lns == 0 && pgs == 0) - { - if (gaia->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_MULTIPOINT; - } - else if (pts == 0 && lns > 1 && pgs == 0) - { - if (gaia->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_MULTILINESTRING; - } - else if (pts == 0 && lns == 0 && pgs > 1) - { - if (gaia->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_MULTIPOLYGON; - } - else - type = GAIA_GEOMETRYCOLLECTION; - switch (gaia->DimensionModel) - { - case GAIA_XY_Z: - case GAIA_XY_Z_M: - dims = 3; - break; - default: - dims = 2; - break; - }; - switch (type) - { - case GAIA_POINT: - if (mode == GAIA2GEOS_ALL || mode == GAIA2GEOS_ONLY_POINTS) - { - pt = gaia->FirstPoint; - cs = GEOSCoordSeq_create (1, dims); - switch (gaia->DimensionModel) - { - case GAIA_XY_Z: - case GAIA_XY_Z_M: - GEOSCoordSeq_setX (cs, 0, pt->X); - GEOSCoordSeq_setY (cs, 0, pt->Y); - GEOSCoordSeq_setZ (cs, 0, pt->Z); - break; - default: - GEOSCoordSeq_setX (cs, 0, pt->X); - GEOSCoordSeq_setY (cs, 0, pt->Y); - break; - }; - geos = GEOSGeom_createPoint (cs); - } - break; - case GAIA_LINESTRING: - if (mode == GAIA2GEOS_ALL || mode == GAIA2GEOS_ONLY_LINESTRINGS) - { - ln = gaia->FirstLinestring; - cs = GEOSCoordSeq_create (ln->Points, dims); - for (iv = 0; iv < ln->Points; iv++) - { - switch (ln->DimensionModel) - { - case GAIA_XY_Z: - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - GEOSCoordSeq_setZ (cs, iv, z); - break; - case GAIA_XY_M: - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - GEOSCoordSeq_setZ (cs, iv, z); - break; - default: - gaiaGetPoint (ln->Coords, iv, &x, &y); - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - break; - }; - } - geos = GEOSGeom_createLineString (cs); - } - break; - case GAIA_POLYGON: - if (mode == GAIA2GEOS_ALL || mode == GAIA2GEOS_ONLY_POLYGONS) - { - pg = gaia->FirstPolygon; - rng = pg->Exterior; - /* exterior ring */ - ring_points = rng->Points; - if (gaiaIsNotClosedRing (rng)) - ring_points++; - cs = GEOSCoordSeq_create (ring_points, dims); - for (iv = 0; iv < rng->Points; iv++) - { - switch (rng->DimensionModel) - { - case GAIA_XY_Z: - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - z0 = z; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - GEOSCoordSeq_setZ (cs, iv, z); - break; - case GAIA_XY_M: - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - z0 = z; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - GEOSCoordSeq_setZ (cs, iv, z); - break; - default: - gaiaGetPoint (rng->Coords, iv, &x, &y); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - break; - }; - } - if (ring_points > rng->Points) - { - /* ensuring Ring's closure */ - iv = ring_points - 1; - switch (rng->DimensionModel) - { - case GAIA_XY_Z: - case GAIA_XY_Z_M: - GEOSCoordSeq_setX (cs, iv, x0); - GEOSCoordSeq_setY (cs, iv, y0); - GEOSCoordSeq_setZ (cs, iv, z0); - break; - default: - GEOSCoordSeq_setX (cs, iv, x0); - GEOSCoordSeq_setY (cs, iv, y0); - break; - }; - } - geos_ext = GEOSGeom_createLinearRing (cs); - geos_holes = NULL; - if (pg->NumInteriors > 0) - { - geos_holes = - malloc (sizeof (GEOSGeometry *) * pg->NumInteriors); - for (ib = 0; ib < pg->NumInteriors; ib++) - { - /* interior ring */ - rng = pg->Interiors + ib; - ring_points = rng->Points; - if (gaiaIsNotClosedRing (rng)) - ring_points++; - cs = GEOSCoordSeq_create (ring_points, dims); - for (iv = 0; iv < rng->Points; iv++) - { - switch (rng->DimensionModel) - { - case GAIA_XY_Z: - gaiaGetPointXYZ (rng->Coords, iv, &x, - &y, &z); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - z0 = z; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - GEOSCoordSeq_setZ (cs, iv, z); - break; - case GAIA_XY_M: - gaiaGetPointXYM (rng->Coords, iv, &x, - &y, &m); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (rng->Coords, iv, &x, - &y, &z, &m); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - z0 = z; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - GEOSCoordSeq_setZ (cs, iv, z); - break; - default: - gaiaGetPoint (rng->Coords, iv, &x, &y); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - break; - }; - } - if (ring_points > rng->Points) - { - /* ensuring Ring's closure */ - iv = ring_points - 1; - switch (rng->DimensionModel) - { - case GAIA_XY_Z: - case GAIA_XY_Z_M: - GEOSCoordSeq_setX (cs, iv, x0); - GEOSCoordSeq_setY (cs, iv, y0); - GEOSCoordSeq_setZ (cs, iv, z0); - break; - default: - GEOSCoordSeq_setX (cs, iv, x0); - GEOSCoordSeq_setY (cs, iv, y0); - break; - }; - } - geos_int = GEOSGeom_createLinearRing (cs); - *(geos_holes + ib) = geos_int; - } - } - geos = - GEOSGeom_createPolygon (geos_ext, geos_holes, - pg->NumInteriors); - if (geos_holes) - free (geos_holes); - } - break; - case GAIA_MULTIPOINT: - case GAIA_MULTILINESTRING: - case GAIA_MULTIPOLYGON: - case GAIA_GEOMETRYCOLLECTION: - nItem = 0; - if (mode == GAIA2GEOS_ONLY_POINTS) - { - geos_coll = malloc (sizeof (GEOSGeometry *) * (pts)); - n_items = pts; - } - else if (mode == GAIA2GEOS_ONLY_LINESTRINGS) - { - geos_coll = malloc (sizeof (GEOSGeometry *) * (lns)); - n_items = lns; - } - else if (mode == GAIA2GEOS_ONLY_POLYGONS) - { - geos_coll = malloc (sizeof (GEOSGeometry *) * (pgs)); - n_items = pgs; - } - else - { - geos_coll = - malloc (sizeof (GEOSGeometry *) * (pts + lns + pgs)); - n_items = pts + lns + pgs; - } - if (mode == GAIA2GEOS_ALL || mode == GAIA2GEOS_ONLY_POINTS) - { - pt = gaia->FirstPoint; - while (pt) - { - cs = GEOSCoordSeq_create (1, dims); - switch (pt->DimensionModel) - { - case GAIA_XY_Z: - case GAIA_XY_Z_M: - GEOSCoordSeq_setX (cs, 0, pt->X); - GEOSCoordSeq_setY (cs, 0, pt->Y); - GEOSCoordSeq_setZ (cs, 0, pt->Z); - break; - default: - GEOSCoordSeq_setX (cs, 0, pt->X); - GEOSCoordSeq_setY (cs, 0, pt->Y); - break; - }; - geos_item = GEOSGeom_createPoint (cs); - *(geos_coll + nItem++) = geos_item; - pt = pt->Next; - } - } - if (mode == GAIA2GEOS_ALL || mode == GAIA2GEOS_ONLY_LINESTRINGS) - { - ln = gaia->FirstLinestring; - while (ln) - { - cs = GEOSCoordSeq_create (ln->Points, dims); - for (iv = 0; iv < ln->Points; iv++) - { - switch (ln->DimensionModel) - { - case GAIA_XY_Z: - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - GEOSCoordSeq_setZ (cs, iv, z); - break; - case GAIA_XY_M: - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, - &m); - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - GEOSCoordSeq_setZ (cs, iv, z); - break; - default: - gaiaGetPoint (ln->Coords, iv, &x, &y); - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - break; - }; - } - geos_item = GEOSGeom_createLineString (cs); - *(geos_coll + nItem++) = geos_item; - ln = ln->Next; - } - } - if (mode == GAIA2GEOS_ALL || mode == GAIA2GEOS_ONLY_POLYGONS) - { - pg = gaia->FirstPolygon; - while (pg) - { - rng = pg->Exterior; - /* exterior ring */ - ring_points = rng->Points; - if (gaiaIsNotClosedRing (rng)) - ring_points++; - cs = GEOSCoordSeq_create (ring_points, dims); - for (iv = 0; iv < rng->Points; iv++) - { - switch (rng->DimensionModel) - { - case GAIA_XY_Z: - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - z0 = z; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - GEOSCoordSeq_setZ (cs, iv, z); - break; - case GAIA_XY_M: - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, - &m); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - z0 = z; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - GEOSCoordSeq_setZ (cs, iv, z); - break; - default: - gaiaGetPoint (rng->Coords, iv, &x, &y); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - break; - }; - } - if (ring_points > rng->Points) - { - /* ensuring Ring's closure */ - iv = ring_points - 1; - switch (rng->DimensionModel) - { - case GAIA_XY_Z: - case GAIA_XY_Z_M: - GEOSCoordSeq_setX (cs, iv, x0); - GEOSCoordSeq_setY (cs, iv, y0); - GEOSCoordSeq_setZ (cs, iv, z0); - break; - default: - GEOSCoordSeq_setX (cs, iv, x0); - GEOSCoordSeq_setY (cs, iv, y0); - break; - }; - } - geos_ext = GEOSGeom_createLinearRing (cs); - geos_holes = NULL; - if (pg->NumInteriors > 0) - { - geos_holes = - malloc (sizeof (GEOSGeometry *) * - pg->NumInteriors); - for (ib = 0; ib < pg->NumInteriors; ib++) - { - /* interior ring */ - rng = pg->Interiors + ib; - ring_points = rng->Points; - if (gaiaIsNotClosedRing (rng)) - ring_points++; - cs = GEOSCoordSeq_create (ring_points, dims); - for (iv = 0; iv < rng->Points; iv++) - { - switch (rng->DimensionModel) - { - case GAIA_XY_Z: - gaiaGetPointXYZ (rng->Coords, iv, - &x, &y, &z); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - z0 = z; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - GEOSCoordSeq_setZ (cs, iv, z); - break; - case GAIA_XY_M: - gaiaGetPointXYM (rng->Coords, iv, - &x, &y, &m); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (rng->Coords, iv, - &x, &y, &z, &m); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - z0 = z; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - GEOSCoordSeq_setZ (cs, iv, z); - break; - default: - gaiaGetPoint (rng->Coords, iv, &x, - &y); - if (iv == 0) - { - /* saving the first vertex */ - x0 = x; - y0 = y; - } - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - break; - }; - } - if (ring_points > rng->Points) - { - /* ensuring Ring's closure */ - iv = ring_points - 1; - switch (rng->DimensionModel) - { - case GAIA_XY_Z: - case GAIA_XY_Z_M: - GEOSCoordSeq_setX (cs, iv, x0); - GEOSCoordSeq_setY (cs, iv, y0); - GEOSCoordSeq_setZ (cs, iv, z0); - break; - default: - GEOSCoordSeq_setX (cs, iv, x0); - GEOSCoordSeq_setY (cs, iv, y0); - break; - }; - } - geos_int = GEOSGeom_createLinearRing (cs); - *(geos_holes + ib) = geos_int; - } - } - geos_item = - GEOSGeom_createPolygon (geos_ext, geos_holes, - pg->NumInteriors); - if (geos_holes) - free (geos_holes); - *(geos_coll + nItem++) = geos_item; - pg = pg->Next; - } - } - geos_type = GEOS_GEOMETRYCOLLECTION; - if (type == GAIA_MULTIPOINT) - geos_type = GEOS_MULTIPOINT; - if (type == GAIA_MULTILINESTRING) - geos_type = GEOS_MULTILINESTRING; - if (type == GAIA_MULTIPOLYGON) - geos_type = GEOS_MULTIPOLYGON; - geos = GEOSGeom_createCollection (geos_type, geos_coll, n_items); - if (geos_coll) - free (geos_coll); - break; - default: - geos = NULL; - }; - if (geos) - GEOSSetSRID (geos, gaia->Srid); - return geos; -} - -static gaiaGeomCollPtr -fromGeosGeometry (const GEOSGeometry * geos, const int dimension_model) -{ -/* converting a GEOS Geometry into a GAIA Geometry */ - int type; - int itemType; - unsigned int dims; - int iv; - int ib; - int it; - int sub_it; - int nItems; - int nSubItems; - int holes; - unsigned int points; - double x; - double y; - double z; - const GEOSCoordSequence *cs; - const GEOSGeometry *geos_ring; - const GEOSGeometry *geos_item; - const GEOSGeometry *geos_sub_item; - gaiaGeomCollPtr gaia = NULL; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - if (!geos) - return NULL; - type = GEOSGeomTypeId (geos); - switch (type) - { - case GEOS_POINT: - if (dimension_model == GAIA_XY_Z) - gaia = gaiaAllocGeomCollXYZ (); - else if (dimension_model == GAIA_XY_M) - gaia = gaiaAllocGeomCollXYM (); - else if (dimension_model == GAIA_XY_Z_M) - gaia = gaiaAllocGeomCollXYZM (); - else - gaia = gaiaAllocGeomColl (); - gaia->DeclaredType = GAIA_POINT; - gaia->Srid = GEOSGetSRID (geos); - cs = GEOSGeom_getCoordSeq (geos); - GEOSCoordSeq_getDimensions (cs, &dims); - if (dims == 3) - { - GEOSCoordSeq_getX (cs, 0, &x); - GEOSCoordSeq_getY (cs, 0, &y); - GEOSCoordSeq_getZ (cs, 0, &z); - } - else - { - GEOSCoordSeq_getX (cs, 0, &x); - GEOSCoordSeq_getY (cs, 0, &y); - z = 0.0; - } - if (dimension_model == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (gaia, x, y, z); - else if (dimension_model == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (gaia, x, y, 0.0); - else if (dimension_model == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (gaia, x, y, z, 0.0); - else - gaiaAddPointToGeomColl (gaia, x, y); - break; - case GEOS_LINESTRING: - if (dimension_model == GAIA_XY_Z) - gaia = gaiaAllocGeomCollXYZ (); - else if (dimension_model == GAIA_XY_M) - gaia = gaiaAllocGeomCollXYM (); - else if (dimension_model == GAIA_XY_Z_M) - gaia = gaiaAllocGeomCollXYZM (); - else - gaia = gaiaAllocGeomColl (); - gaia->DeclaredType = GAIA_LINESTRING; - gaia->Srid = GEOSGetSRID (geos); - cs = GEOSGeom_getCoordSeq (geos); - GEOSCoordSeq_getDimensions (cs, &dims); - GEOSCoordSeq_getSize (cs, &points); - ln = gaiaAddLinestringToGeomColl (gaia, points); - for (iv = 0; iv < (int) points; iv++) - { - if (dims == 3) - { - GEOSCoordSeq_getX (cs, iv, &x); - GEOSCoordSeq_getY (cs, iv, &y); - GEOSCoordSeq_getZ (cs, iv, &z); - } - else - { - GEOSCoordSeq_getX (cs, iv, &x); - GEOSCoordSeq_getY (cs, iv, &y); - z = 0.0; - } - if (dimension_model == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, iv, x, y, z); - } - else if (dimension_model == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, iv, x, y, 0.0); - } - else if (dimension_model == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, iv, x, y, z, 0.0); - } - else - { - gaiaSetPoint (ln->Coords, iv, x, y); - } - } - break; - case GEOS_POLYGON: - if (dimension_model == GAIA_XY_Z) - gaia = gaiaAllocGeomCollXYZ (); - else if (dimension_model == GAIA_XY_M) - gaia = gaiaAllocGeomCollXYM (); - else if (dimension_model == GAIA_XY_Z_M) - gaia = gaiaAllocGeomCollXYZM (); - else - gaia = gaiaAllocGeomColl (); - gaia->DeclaredType = GAIA_POLYGON; - gaia->Srid = GEOSGetSRID (geos); - /* exterior ring */ - holes = GEOSGetNumInteriorRings (geos); - geos_ring = GEOSGetExteriorRing (geos); - cs = GEOSGeom_getCoordSeq (geos_ring); - GEOSCoordSeq_getDimensions (cs, &dims); - GEOSCoordSeq_getSize (cs, &points); - pg = gaiaAddPolygonToGeomColl (gaia, points, holes); - rng = pg->Exterior; - for (iv = 0; iv < (int) points; iv++) - { - if (dims == 3) - { - GEOSCoordSeq_getX (cs, iv, &x); - GEOSCoordSeq_getY (cs, iv, &y); - GEOSCoordSeq_getZ (cs, iv, &z); - } - else - { - GEOSCoordSeq_getX (cs, iv, &x); - GEOSCoordSeq_getY (cs, iv, &y); - z = 0.0; - } - if (dimension_model == GAIA_XY_Z) - { - gaiaSetPointXYZ (rng->Coords, iv, x, y, z); - } - else if (dimension_model == GAIA_XY_M) - { - gaiaSetPointXYM (rng->Coords, iv, x, y, 0.0); - } - else if (dimension_model == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (rng->Coords, iv, x, y, z, 0.0); - } - else - { - gaiaSetPoint (rng->Coords, iv, x, y); - } - } - for (ib = 0; ib < holes; ib++) - { - /* interior rings */ - geos_ring = GEOSGetInteriorRingN (geos, ib); - cs = GEOSGeom_getCoordSeq (geos_ring); - GEOSCoordSeq_getDimensions (cs, &dims); - GEOSCoordSeq_getSize (cs, &points); - rng = gaiaAddInteriorRing (pg, ib, points); - for (iv = 0; iv < (int) points; iv++) - { - if (dims == 3) - { - GEOSCoordSeq_getX (cs, iv, &x); - GEOSCoordSeq_getY (cs, iv, &y); - GEOSCoordSeq_getZ (cs, iv, &z); - } - else - { - GEOSCoordSeq_getX (cs, iv, &x); - GEOSCoordSeq_getY (cs, iv, &y); - z = 0.0; - } - if (dimension_model == GAIA_XY_Z) - { - gaiaSetPointXYZ (rng->Coords, iv, x, y, z); - } - else if (dimension_model == GAIA_XY_M) - { - gaiaSetPointXYM (rng->Coords, iv, x, y, 0.0); - } - else if (dimension_model == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (rng->Coords, iv, x, y, z, 0.0); - } - else - { - gaiaSetPoint (rng->Coords, iv, x, y); - } - } - } - break; - case GEOS_MULTIPOINT: - case GEOS_MULTILINESTRING: - case GEOS_MULTIPOLYGON: - case GEOS_GEOMETRYCOLLECTION: - if (dimension_model == GAIA_XY_Z) - gaia = gaiaAllocGeomCollXYZ (); - else if (dimension_model == GAIA_XY_M) - gaia = gaiaAllocGeomCollXYM (); - else if (dimension_model == GAIA_XY_Z_M) - gaia = gaiaAllocGeomCollXYZM (); - else - gaia = gaiaAllocGeomColl (); - if (type == GEOS_MULTIPOINT) - gaia->DeclaredType = GAIA_MULTIPOINT; - else if (type == GEOS_MULTILINESTRING) - gaia->DeclaredType = GAIA_MULTILINESTRING; - else if (type == GEOS_MULTIPOLYGON) - gaia->DeclaredType = GAIA_MULTIPOLYGON; - else - gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; - gaia->Srid = GEOSGetSRID (geos); - nItems = GEOSGetNumGeometries (geos); - for (it = 0; it < nItems; it++) - { - /* looping on elementaty geometries */ - geos_item = GEOSGetGeometryN (geos, it); - itemType = GEOSGeomTypeId (geos_item); - switch (itemType) - { - case GEOS_POINT: - cs = GEOSGeom_getCoordSeq (geos_item); - GEOSCoordSeq_getDimensions (cs, &dims); - if (dims == 3) - { - GEOSCoordSeq_getX (cs, 0, &x); - GEOSCoordSeq_getY (cs, 0, &y); - GEOSCoordSeq_getZ (cs, 0, &z); - } - else - { - GEOSCoordSeq_getX (cs, 0, &x); - GEOSCoordSeq_getY (cs, 0, &y); - z = 0.0; - } - if (dimension_model == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (gaia, x, y, z); - else if (dimension_model == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (gaia, x, y, 0.0); - else if (dimension_model == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (gaia, x, y, z, 0.0); - else - gaiaAddPointToGeomColl (gaia, x, y); - break; - case GEOS_LINESTRING: - cs = GEOSGeom_getCoordSeq (geos_item); - GEOSCoordSeq_getDimensions (cs, &dims); - GEOSCoordSeq_getSize (cs, &points); - ln = gaiaAddLinestringToGeomColl (gaia, points); - for (iv = 0; iv < (int) points; iv++) - { - if (dims == 3) - { - GEOSCoordSeq_getX (cs, iv, &x); - GEOSCoordSeq_getY (cs, iv, &y); - GEOSCoordSeq_getZ (cs, iv, &z); - } - else - { - GEOSCoordSeq_getX (cs, iv, &x); - GEOSCoordSeq_getY (cs, iv, &y); - z = 0.0; - } - if (dimension_model == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, iv, x, y, z); - } - else if (dimension_model == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, iv, x, y, 0.0); - } - else if (dimension_model == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, iv, x, y, z, - 0.0); - } - else - { - gaiaSetPoint (ln->Coords, iv, x, y); - } - } - break; - case GEOS_MULTILINESTRING: - nSubItems = GEOSGetNumGeometries (geos_item); - for (sub_it = 0; sub_it < nSubItems; sub_it++) - { - /* looping on elementaty geometries */ - geos_sub_item = - GEOSGetGeometryN (geos_item, sub_it); - cs = GEOSGeom_getCoordSeq (geos_sub_item); - GEOSCoordSeq_getDimensions (cs, &dims); - GEOSCoordSeq_getSize (cs, &points); - ln = gaiaAddLinestringToGeomColl (gaia, points); - for (iv = 0; iv < (int) points; iv++) - { - if (dims == 3) - { - GEOSCoordSeq_getX (cs, iv, &x); - GEOSCoordSeq_getY (cs, iv, &y); - GEOSCoordSeq_getZ (cs, iv, &z); - } - else - { - GEOSCoordSeq_getX (cs, iv, &x); - GEOSCoordSeq_getY (cs, iv, &y); - z = 0.0; - } - if (dimension_model == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, iv, x, y, - z); - } - else if (dimension_model == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, iv, x, y, - 0.0); - } - else if (dimension_model == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, iv, x, y, - z, 0.0); - } - else - { - gaiaSetPoint (ln->Coords, iv, x, y); - } - } - } - break; - case GEOS_POLYGON: - /* exterior ring */ - holes = GEOSGetNumInteriorRings (geos_item); - geos_ring = GEOSGetExteriorRing (geos_item); - cs = GEOSGeom_getCoordSeq (geos_ring); - GEOSCoordSeq_getDimensions (cs, &dims); - GEOSCoordSeq_getSize (cs, &points); - pg = gaiaAddPolygonToGeomColl (gaia, points, holes); - rng = pg->Exterior; - for (iv = 0; iv < (int) points; iv++) - { - if (dims == 3) - { - GEOSCoordSeq_getX (cs, iv, &x); - GEOSCoordSeq_getY (cs, iv, &y); - GEOSCoordSeq_getZ (cs, iv, &z); - } - else - { - GEOSCoordSeq_getX (cs, iv, &x); - GEOSCoordSeq_getY (cs, iv, &y); - z = 0.0; - } - if (dimension_model == GAIA_XY_Z) - { - gaiaSetPointXYZ (rng->Coords, iv, x, y, z); - } - else if (dimension_model == GAIA_XY_M) - { - gaiaSetPointXYM (rng->Coords, iv, x, y, 0.0); - } - else if (dimension_model == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (rng->Coords, iv, x, y, z, - 0.0); - } - else - { - gaiaSetPoint (rng->Coords, iv, x, y); - } - } - for (ib = 0; ib < holes; ib++) - { - /* interior rings */ - geos_ring = GEOSGetInteriorRingN (geos_item, ib); - cs = GEOSGeom_getCoordSeq (geos_ring); - GEOSCoordSeq_getDimensions (cs, &dims); - GEOSCoordSeq_getSize (cs, &points); - rng = gaiaAddInteriorRing (pg, ib, points); - for (iv = 0; iv < (int) points; iv++) - { - if (dims == 3) - { - GEOSCoordSeq_getX (cs, iv, &x); - GEOSCoordSeq_getY (cs, iv, &y); - GEOSCoordSeq_getZ (cs, iv, &z); - } - else - { - GEOSCoordSeq_getX (cs, iv, &x); - GEOSCoordSeq_getY (cs, iv, &y); - z = 0.0; - } - if (dimension_model == GAIA_XY_Z) - { - gaiaSetPointXYZ (rng->Coords, iv, x, y, - z); - } - else if (dimension_model == GAIA_XY_M) - { - gaiaSetPointXYM (rng->Coords, iv, x, y, - 0.0); - } - else if (dimension_model == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (rng->Coords, iv, x, y, - z, 0.0); - } - else - { - gaiaSetPoint (rng->Coords, iv, x, y); - } - } - } - break; - }; - } - break; - }; - return gaia; -} - -GAIAGEO_DECLARE void * -gaiaToGeos (const gaiaGeomCollPtr gaia) -{ -/* converting a GAIA Geometry into a GEOS Geometry */ - return toGeosGeometry (gaia, GAIA2GEOS_ALL); -} - -GAIAGEO_DECLARE void * -gaiaToGeosSelective (const gaiaGeomCollPtr gaia, int mode) -{ -/* converting a GAIA Geometry into a GEOS Geometry (selected type) */ - if (mode == GAIA2GEOS_ONLY_POINTS || mode == GAIA2GEOS_ONLY_LINESTRINGS - || mode == GAIA2GEOS_ONLY_POLYGONS) - ; - else - mode = GAIA2GEOS_ALL; - return toGeosGeometry (gaia, mode); -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaFromGeos_XY (const void *xgeos) -{ -/* converting a GEOS Geometry into a GAIA Geometry [XY] */ - const GEOSGeometry *geos = xgeos; - return fromGeosGeometry (geos, GAIA_XY); -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaFromGeos_XYZ (const void *xgeos) -{ -/* converting a GEOS Geometry into a GAIA Geometry [XYZ] */ - const GEOSGeometry *geos = xgeos; - return fromGeosGeometry (geos, GAIA_XY_Z); -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaFromGeos_XYM (const void *xgeos) -{ -/* converting a GEOS Geometry into a GAIA Geometry [XYM] */ - const GEOSGeometry *geos = xgeos; - return fromGeosGeometry (geos, GAIA_XY_M); -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaFromGeos_XYZM (const void *xgeos) -{ -/* converting a GEOS Geometry into a GAIA Geometry [XYZM] */ - const GEOSGeometry *geos = xgeos; - return fromGeosGeometry (geos, GAIA_XY_Z_M); -} - -#endif /* end including GEOS */ diff --git a/src/spatialite/src/gaiageo/gg_gml.c b/src/spatialite/src/gaiageo/gg_gml.c deleted file mode 100644 index 19068f8..0000000 --- a/src/spatialite/src/gaiageo/gg_gml.c +++ /dev/null @@ -1,3315 +0,0 @@ -/* - - gg_gml.c -- GML parser/lexer - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011-2012 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include - -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include -#include - -#include -#include - -#if defined(_WIN32) || defined(WIN32) -#include -#ifndef isatty -#define isatty _isatty -#endif -#ifndef fileno -#define fileno _fileno -#endif -#endif - -#define GML_PARSER_OPEN_NODE 1 -#define GML_PARSER_SELF_CLOSED_NODE 2 -#define GML_PARSER_CLOSED_NODE 3 - -#define GAIA_GML_UNKNOWN 0 -#define GAIA_GML_POINT 1 -#define GAIA_GML_LINESTRING 2 -#define GAIA_GML_CURVE 3 -#define GAIA_GML_POLYGON 4 -#define GAIA_GML_MULTIPOINT 5 -#define GAIA_GML_MULTILINESTRING 6 -#define GAIA_GML_MULTICURVE 7 -#define GAIA_GML_MULTIPOLYGON 8 -#define GAIA_GML_MULTISURFACE 9 -#define GAIA_GML_MULTIGEOMETRY 10 - -#define GML_DYN_NONE 0 -#define GML_DYN_DYNLINE 1 -#define GML_DYN_GEOM 2 -#define GML_DYN_DYNPG 3 -#define GML_DYN_NODE 4 -#define GML_DYN_COORD 5 -#define GML_DYN_ATTRIB 6 - -#define GML_DYN_BLOCK 1024 - -/* -** This is a linked-list struct to store all the values for each token. -*/ -typedef struct gmlFlexTokenStruct -{ - char *value; - struct gmlFlexTokenStruct *Next; -} gmlFlexToken; - -typedef struct gml_coord -{ - char *Value; - struct gml_coord *Next; -} gmlCoord; -typedef gmlCoord *gmlCoordPtr; - -typedef struct gml_attr -{ - char *Key; - char *Value; - struct gml_attr *Next; -} gmlAttr; -typedef gmlAttr *gmlAttrPtr; - -typedef struct gml_node -{ - char *Tag; - int Type; - int Error; - struct gml_attr *Attributes; - struct gml_coord *Coordinates; - struct gml_node *Next; -} gmlNode; -typedef gmlNode *gmlNodePtr; - -typedef struct gml_dynamic_ring -{ - gaiaDynamicLinePtr ring; - int interior; - int has_z; - struct gml_dynamic_ring *next; -} gmlDynamicRing; -typedef gmlDynamicRing *gmlDynamicRingPtr; - -typedef struct gml_dynamic_polygon -{ - struct gml_dynamic_ring *first; - struct gml_dynamic_ring *last; -} gmlDynamicPolygon; -typedef gmlDynamicPolygon *gmlDynamicPolygonPtr; - -struct gml_dyn_block -{ -/* a struct taking trace of dynamic allocations */ - int type[GML_DYN_BLOCK]; - void *ptr[GML_DYN_BLOCK]; - int index; - struct gml_dyn_block *next; -}; - -struct gml_data -{ -/* a struct used to make the lexer-parser reentrant and thread-safe */ - int gml_parse_error; - int gml_line; - int gml_col; - struct gml_dyn_block *gml_first_dyn_block; - struct gml_dyn_block *gml_last_dyn_block; - gmlNodePtr result; -}; - -static struct gml_dyn_block * -gmlCreateDynBlock (void) -{ -/* allocating a new block to trace dynamic allocations */ - int i; - struct gml_dyn_block *p = malloc (sizeof (struct gml_dyn_block)); - for (i = 0; i < GML_DYN_BLOCK; i++) - { - /* initializing map entries */ - p->type[i] = GML_DYN_NONE; - p->ptr[i] = NULL; - } - p->index = 0; - p->next = NULL; - return p; -} - -static void -gmlMapDynAlloc (struct gml_data *p_data, int type, void *ptr) -{ -/* appending a dynamic allocation into the map */ - struct gml_dyn_block *p; - if (p_data->gml_first_dyn_block == NULL) - { - /* inserting the first block of the map */ - p = gmlCreateDynBlock (); - p_data->gml_first_dyn_block = p; - p_data->gml_last_dyn_block = p; - } - if (p_data->gml_last_dyn_block->index >= GML_DYN_BLOCK) - { - /* adding a further block to the map */ - p = gmlCreateDynBlock (); - p_data->gml_last_dyn_block->next = p; - p_data->gml_last_dyn_block = p; - } - p_data->gml_last_dyn_block->type[p_data->gml_last_dyn_block->index] = type; - p_data->gml_last_dyn_block->ptr[p_data->gml_last_dyn_block->index] = ptr; - p_data->gml_last_dyn_block->index++; -} - -static void -gmlMapDynClean (struct gml_data *p_data, void *ptr) -{ -/* deleting a dynamic allocation from the map */ - int i; - struct gml_dyn_block *p = p_data->gml_first_dyn_block; - while (p) - { - for (i = 0; i < GML_DYN_BLOCK; i++) - { - switch (p->type[i]) - { - case GML_DYN_DYNLINE: - case GML_DYN_GEOM: - case GML_DYN_DYNPG: - case GML_DYN_NODE: - case GML_DYN_COORD: - case GML_DYN_ATTRIB: - if (p->ptr[i] == ptr) - { - p->type[i] = GML_DYN_NONE; - return; - } - break; - }; - } - p = p->next; - } -} - -static void -gml_free_dyn_polygon (gmlDynamicPolygonPtr dyn) -{ -/* deleting a dynamic polygon (ring collection) */ - gmlDynamicRingPtr r; - gmlDynamicRingPtr rn; - if (!dyn) - return; - r = dyn->first; - while (r) - { - rn = r->next; - if (r->ring) - gaiaFreeDynamicLine (r->ring); - free (r); - r = rn; - } - free (dyn); -} - -static void -gml_free_coord (gmlCoordPtr c) -{ -/* deleting a GML coordinate */ - if (c == NULL) - return; - if (c->Value) - free (c->Value); - free (c); -} - -static void -gml_free_attrib (gmlAttrPtr a) -{ -/* deleting a GML attribute */ - if (a == NULL) - return; - if (a->Key) - free (a->Key); - if (a->Value) - free (a->Value); - free (a); -} - -static void -gml_free_node (gmlNodePtr n) -{ -/* deleting a GML node */ - gmlAttrPtr a; - gmlAttrPtr an; - gmlCoordPtr c; - gmlCoordPtr cn; - if (n == NULL) - return; - a = n->Attributes; - while (a) - { - an = a->Next; - gml_free_attrib (a); - a = an; - } - c = n->Coordinates; - while (c) - { - cn = c->Next; - gml_free_coord (c); - c = cn; - } - if (n->Tag) - free (n->Tag); - free (n); -} - -static void -gmlCleanMapDynAlloc (struct gml_data *p_data, int clean_all) -{ -/* cleaning the dynamic allocations map */ - int i; - struct gml_dyn_block *pn; - struct gml_dyn_block *p = p_data->gml_first_dyn_block; - while (p) - { - if (clean_all) - { - for (i = 0; i < GML_DYN_BLOCK; i++) - { - /* deleting Geometry objects */ - switch (p->type[i]) - { - case GML_DYN_DYNLINE: - gaiaFreeDynamicLine ((gaiaDynamicLinePtr) - (p->ptr[i])); - break; - case GML_DYN_GEOM: - gaiaFreeGeomColl ((gaiaGeomCollPtr) (p->ptr[i])); - break; - case GML_DYN_DYNPG: - gml_free_dyn_polygon ((gmlDynamicPolygonPtr) - (p->ptr[i])); - break; - case GML_DYN_NODE: - gml_free_node ((gmlNodePtr) (p->ptr[i])); - break; - case GML_DYN_COORD: - gml_free_coord ((gmlCoordPtr) (p->ptr[i])); - break; - case GML_DYN_ATTRIB: - gml_free_attrib ((gmlAttrPtr) (p->ptr[i])); - break; - }; - } - } - /* deleting the map block */ - pn = p->next; - free (p); - p = pn; - } -} - -static gmlDynamicPolygonPtr -gml_alloc_dyn_polygon (struct gml_data *p_data) -{ -/* creating a dynamic polygon (ring collection) */ - gmlDynamicPolygonPtr p = malloc (sizeof (gmlDynamicPolygon)); - gmlMapDynAlloc (p_data, GML_DYN_DYNPG, p); - p->first = NULL; - p->last = NULL; - return p; -} - -static void -gml_add_polygon_ring (struct gml_data *p_data, gmlDynamicPolygonPtr dyn_pg, - gaiaDynamicLinePtr dyn, int interior, int has_z) -{ -/* inserting a further ring into the collection (dynamic polygon) */ - gmlDynamicRingPtr p = malloc (sizeof (gmlDynamicRing)); - p->ring = dyn; - p->interior = interior; - p->has_z = has_z; - p->next = NULL; - if (dyn_pg->first == NULL) - dyn_pg->first = p; - if (dyn_pg->last != NULL) - dyn_pg->last->next = p; - dyn_pg->last = p; - gmlMapDynClean (p_data, p); -} - -static void -gml_freeString (char **ptr) -{ -/* releasing a string from the lexer */ - if (*ptr != NULL) - free (*ptr); - *ptr = NULL; -} - -static void -gml_saveString (char **ptr, const char *str) -{ -/* saving a string from the lexer */ - int len = strlen (str); - gml_freeString (ptr); - *ptr = malloc (len + 1); - strcpy (*ptr, str); -} - -static gmlCoordPtr -gml_coord (struct gml_data *p_data, void *value) -{ -/* creating a coord Item */ - int len; - gmlFlexToken *tok = (gmlFlexToken *) value; - gmlCoordPtr c = malloc (sizeof (gmlCoord)); - gmlMapDynAlloc (p_data, GML_DYN_COORD, c); - len = strlen (tok->value); - c->Value = malloc (len + 1); - strcpy (c->Value, tok->value); - c->Next = NULL; - return c; -} - -static gmlAttrPtr -gml_attribute (struct gml_data *p_data, void *key, void *value) -{ -/* creating an attribute */ - int len; - gmlFlexToken *k_tok = (gmlFlexToken *) key; - gmlFlexToken *v_tok = (gmlFlexToken *) value; - gmlAttrPtr a = malloc (sizeof (gmlAttr)); - gmlMapDynAlloc (p_data, GML_DYN_ATTRIB, a); - len = strlen (k_tok->value); - a->Key = malloc (len + 1); - strcpy (a->Key, k_tok->value); - len = strlen (v_tok->value); -/* we need to de-quote the string, removing first and last ".." */ - if (*(v_tok->value + 0) == '"' && *(v_tok->value + len - 1) == '"') - { - int bytesToCopy = len - 2; - char *startingPointForCopy = v_tok->value + 1; - a->Value = malloc (bytesToCopy + 1); - memcpy (a->Value, startingPointForCopy, bytesToCopy); - *(a->Value + bytesToCopy) = '\0'; - } - else - { - a->Value = malloc (len + 1); - strcpy (a->Value, v_tok->value); - } - a->Next = NULL; - return a; -} - -static void -gml_freeTree (struct gml_data *p_data, gmlNodePtr t) -{ -/* deleting a GML tree */ - gmlNodePtr n; - gmlNodePtr nn; - n = t; - while (n) - { - nn = n->Next; - gmlMapDynClean (p_data, n); - gml_free_node (n); - n = nn; - } -} - -static gmlNodePtr -gml_createNode (struct gml_data *p_data, void *tag, void *attributes, - void *coords) -{ -/* creating a node */ - gmlAttrPtr a; - gmlCoordPtr c; - int len; - gmlFlexToken *tok = (gmlFlexToken *) tag; - gmlNodePtr n = malloc (sizeof (gmlNode)); - gmlMapDynAlloc (p_data, GML_DYN_NODE, n); - len = strlen (tok->value); - n->Tag = malloc (len + 1); - strcpy (n->Tag, tok->value); - n->Type = GML_PARSER_OPEN_NODE; - n->Error = 0; - a = (gmlAttrPtr) attributes; - while (a) - { - /* transferring ownership of attributes */ - gmlMapDynClean (p_data, a); - a = a->Next; - } - n->Attributes = attributes; - c = (gmlCoordPtr) coords; - while (c) - { - /* transferring ownership of attributes */ - gmlMapDynClean (p_data, c); - c = c->Next; - } - n->Coordinates = coords; - n->Next = NULL; - return n; -} - -static gmlNodePtr -gml_createSelfClosedNode (struct gml_data *p_data, void *tag, void *attributes) -{ -/* creating a self-closed node */ - gmlAttrPtr a; - int len; - gmlFlexToken *tok = (gmlFlexToken *) tag; - gmlNodePtr n = malloc (sizeof (gmlNode)); - gmlMapDynAlloc (p_data, GML_DYN_NODE, n); - len = strlen (tok->value); - n->Tag = malloc (len + 1); - strcpy (n->Tag, tok->value); - n->Type = GML_PARSER_SELF_CLOSED_NODE; - n->Error = 0; - a = (gmlAttrPtr) attributes; - while (a) - { - /* transferring ownership of attributes */ - gmlMapDynClean (p_data, a); - a = a->Next; - } - n->Attributes = attributes; - n->Coordinates = NULL; - n->Next = NULL; - return n; -} - -static gmlNodePtr -gml_closingNode (struct gml_data *p_data, void *tag) -{ -/* creating a closing node */ - int len; - gmlFlexToken *tok = (gmlFlexToken *) tag; - gmlNodePtr n = malloc (sizeof (gmlNode)); - gmlMapDynAlloc (p_data, GML_DYN_NODE, n); - len = strlen (tok->value); - n->Tag = malloc (len + 1); - strcpy (n->Tag, tok->value); - n->Type = GML_PARSER_CLOSED_NODE; - n->Error = 0; - n->Attributes = NULL; - n->Coordinates = NULL; - n->Next = NULL; - return n; -} - -static int -gml_cleanup (gmlFlexToken * token) -{ - gmlFlexToken *ptok; - gmlFlexToken *ptok_n; - if (token == NULL) - return 0; - ptok = token; - while (ptok) - { - ptok_n = ptok->Next; - if (ptok->value != NULL) - free (ptok->value); - free (ptok); - ptok = ptok_n; - } - return 0; -} - -static void -gml_xferString (char **p, const char *str) -{ -/* saving some token */ - int len; - if (str == NULL) - { - *p = NULL; - return; - } - len = strlen (str); - *p = malloc (len + 1); - strcpy (*p, str); -} - -static int -guessGmlSrid (gmlNodePtr node) -{ -/* attempting to guess the SRID */ - int len; - gmlAttrPtr attr = node->Attributes; - while (attr) - { - if (strcmp (attr->Key, "srsName") == 0) - { - len = strlen (attr->Value); - if (len > 5) - { - if (strncmp (attr->Value, "EPSG:", 5) == 0) - return atoi (attr->Value + 5); - } - if (len > 21) - { - if (strncmp (attr->Value, "urn:ogc:def:crs:EPSG:", 21) == - 0) - { - int i = strlen (attr->Value) - 1; - for (; i >= 0; i--) - { - if (*(attr->Value + i) == ':') - return atoi (attr->Value + i + 1); - } - } - } - } - attr = attr->Next; - } - return -1; -} - -static int -gml_get_srsDimension (gmlNodePtr node) -{ -/* attempting to establis if there is a Z coordinate */ - gmlAttrPtr attr = node->Attributes; - while (attr) - { - if (strcmp (attr->Key, "srsDimension") == 0) - { - if (atoi (attr->Value) == 3) - return 1; - else - return 0; - } - attr = attr->Next; - } - return 0; -} - -static int -guessGmlGeometryType (gmlNodePtr node) -{ -/* attempting to guess the Geometry Type for a GML node */ - int type = GAIA_GML_UNKNOWN; - if (strcmp (node->Tag, "gml:Point") == 0 - || strcmp (node->Tag, "Point") == 0) - type = GAIA_GML_POINT; - if (strcmp (node->Tag, "gml:LineString") == 0 - || strcmp (node->Tag, "LineString") == 0) - type = GAIA_GML_LINESTRING; - if (strcmp (node->Tag, "gml:Curve") == 0 - || strcmp (node->Tag, "Curve") == 0) - type = GAIA_GML_CURVE; - if (strcmp (node->Tag, "gml:Polygon") == 0 - || strcmp (node->Tag, "Polygon") == 0) - type = GAIA_GML_POLYGON; - if (strcmp (node->Tag, "gml:MultiPoint") == 0 - || strcmp (node->Tag, "MultiPoint") == 0) - type = GAIA_GML_MULTIPOINT; - if (strcmp (node->Tag, "gml:MultiLineString") == 0 - || strcmp (node->Tag, "MultiLineString") == 0) - type = GAIA_GML_MULTILINESTRING; - if (strcmp (node->Tag, "gml:MultiCurve") == 0 - || strcmp (node->Tag, "MultiCurve") == 0) - type = GAIA_GML_MULTICURVE; - if (strcmp (node->Tag, "gml:MultiPolygon") == 0 - || strcmp (node->Tag, "MultiPolygon") == 0) - type = GAIA_GML_MULTIPOLYGON; - if (strcmp (node->Tag, "gml:MultiSurface") == 0 - || strcmp (node->Tag, "MultiSurface") == 0) - type = GAIA_GML_MULTISURFACE; - if (strcmp (node->Tag, "gml:MultiGeometry") == 0 - || strcmp (node->Tag, "MultiGeometry") == 0) - type = GAIA_GML_MULTIGEOMETRY; - return type; -} - -static int -gml_check_coord (const char *value) -{ -/* checking a GML coordinate */ - int decimal = 0; - const char *p = value; - if (*p == '+' || *p == '-') - p++; - while (*p != '\0') - { - if (*p == '.') - { - if (!decimal) - decimal = 1; - else - return 0; - } - else if (*p >= '0' && *p <= '9') - ; - else - return 0; - p++; - } - return 1; -} - -static int -gml_extract_coords (const char *value, double *x, double *y, double *z, - int *count) -{ -/* extracting GML v2.x coords from a comma-separated string */ - const char *in = value; - char buf[1024]; - char *out = buf; - *out = '\0'; - - while (*in != '\0') - { - if (*in == ',') - { - *out = '\0'; - if (*buf != '\0') - { - if (!gml_check_coord (buf)) - return 0; - switch (*count) - { - case 0: - *x = atof (buf); - *count += 1; - break; - case 1: - *y = atof (buf); - *count += 1; - break; - case 2: - *z = atof (buf); - *count += 1; - break; - default: - *count += 1; - break; - }; - } - in++; - out = buf; - *out = '\0'; - continue; - } - *out++ = *in++; - } - *out = '\0'; -/* parsing the last item */ - if (*buf != '\0') - { - if (!gml_check_coord (buf)) - return 0; - switch (*count) - { - case 0: - *x = atof (buf); - *count += 1; - break; - case 1: - *y = atof (buf); - *count += 1; - break; - case 2: - *z = atof (buf); - *count += 1; - break; - default: - *count += 1; - break; - }; - } - return 1; -} - -static int -gml_parse_point_v2 (gmlCoordPtr coord, double *x, double *y, double *z, - int *has_z) -{ -/* parsing GML v2.x [Point] */ - int count = 0; - gmlCoordPtr c = coord; - while (c) - { - if (!gml_extract_coords (c->Value, x, y, z, &count)) - return 0; - c = c->Next; - } - if (count == 2) - { - *has_z = 0; - return 1; - } - if (count == 3) - { - *has_z = 1; - return 1; - } - return 0; -} - -static int -gml_parse_point_v3 (gmlCoordPtr coord, double *x, double *y, double *z, - int *has_z) -{ -/* parsing GML v2.x [Point] */ - int count = 0; - gmlCoordPtr c = coord; - while (c) - { - if (!gml_check_coord (c->Value)) - return 0; - switch (count) - { - case 0: - *x = atof (c->Value); - count++; - break; - case 1: - *y = atof (c->Value); - count++; - break; - case 2: - *z = atof (c->Value); - count++; - break; - default: - count++; - break; - }; - c = c->Next; - } - if (count == 2) - { - *has_z = 0; - return 1; - } - if (count == 3) - { - *has_z = 1; - return 1; - } - return 0; -} - -static int -gml_parse_point (struct gml_data *p_data, gaiaGeomCollPtr geom, gmlNodePtr node, - int srid, gmlNodePtr * next) -{ -/* parsing a */ - double x; - double y; - double z; - int has_z; - gaiaGeomCollPtr pt; - gaiaGeomCollPtr last; - - if (strcmp (node->Tag, "gml:coordinates") == 0 - || strcmp (node->Tag, "coordinates") == 0) - { - /* parsing a GML v.2.x */ - if (!gml_parse_point_v2 (node->Coordinates, &x, &y, &z, &has_z)) - return 0; - node = node->Next; - if (node == NULL) - return 0; - if (strcmp (node->Tag, "gml:coordinates") == 0 - || strcmp (node->Tag, "coordinates") == 0) - ; - else - return 0; - node = node->Next; - if (node == NULL) - return 0; - if (strcmp (node->Tag, "gml:Point") == 0 - || strcmp (node->Tag, "Point") == 0) - ; - else - return 0; - *next = node->Next; - goto ok; - } - if (strcmp (node->Tag, "gml:pos") == 0 || strcmp (node->Tag, "pos") == 0) - { - /* parsing a GML v.3.x */ - if (!gml_parse_point_v3 (node->Coordinates, &x, &y, &z, &has_z)) - return 0; - node = node->Next; - if (node == NULL) - return 0; - if (strcmp (node->Tag, "gml:pos") == 0 - || strcmp (node->Tag, "pos") == 0) - ; - else - return 0; - node = node->Next; - if (node == NULL) - return 0; - if (strcmp (node->Tag, "gml:Point") == 0 - || strcmp (node->Tag, "Point") == 0) - ; - else - return 0; - *next = node->Next; - goto ok; - } - return 0; - - ok: -/* ok, GML nodes match as expected */ - if (has_z) - { - pt = gaiaAllocGeomCollXYZ (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, pt); - pt->Srid = srid; - gaiaAddPointToGeomCollXYZ (pt, x, y, z); - } - else - { - pt = gaiaAllocGeomColl (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, pt); - pt->Srid = srid; - gaiaAddPointToGeomColl (pt, x, y); - } - last = geom; - while (1) - { - /* searching the last Geometry within chain */ - if (last->Next == NULL) - break; - last = last->Next; - } - last->Next = pt; - return 1; -} - -static int -gml_extract_multi_coord (const char *value, double *x, double *y, double *z, - int *count, int *follow) -{ -/* extracting GML v2.x coords from a comma-separated string */ - const char *in = value; - char buf[1024]; - char *out = buf; - int last; - *out = '\0'; - while (*in != '\0') - { - last = *in; - if (*in == ',') - { - *out = '\0'; - if (*buf != '\0') - { - if (!gml_check_coord (buf)) - return 0; - switch (*count) - { - case 0: - *x = atof (buf); - *count += 1; - break; - case 1: - *y = atof (buf); - *count += 1; - break; - case 2: - *z = atof (buf); - *count += 1; - break; - default: - *count += 1; - break; - }; - } - in++; - out = buf; - *out = '\0'; - continue; - } - *out++ = *in++; - } - *out = '\0'; -/* parsing the last item */ - if (*buf != '\0') - { - if (!gml_check_coord (buf)) - return 0; - switch (*count) - { - case 0: - *x = atof (buf); - *count += 1; - break; - case 1: - *y = atof (buf); - *count += 1; - break; - case 2: - *z = atof (buf); - *count += 1; - break; - default: - *count += 1; - break; - }; - } - if (last == ',') - *follow = 1; - else - *follow = 0; - return 1; -} - -static int -gml_extract_multi_coords (gmlCoordPtr coord, double *x, double *y, double *z, - int *count, gmlCoordPtr * next) -{ -/* extracting GML v2.x coords from a comma-separated string */ - int follow; - gmlCoordPtr c = coord; - while (c) - { - if (!gml_extract_multi_coord (c->Value, x, y, z, count, &follow)) - return 0; - if (!follow && c->Next != NULL) - { - if (*(c->Next->Value) == ',') - follow = 1; - } - if (follow) - c = c->Next; - else - { - *next = c->Next; - break; - } - } - return 1; -} - -static void -gml_add_point_to_line (gaiaDynamicLinePtr dyn, double x, double y) -{ -/* appending a point */ - gaiaAppendPointToDynamicLine (dyn, x, y); -} - -static void -gml_add_point_to_lineZ (gaiaDynamicLinePtr dyn, double x, double y, double z) -{ -/* appending a point */ - gaiaAppendPointZToDynamicLine (dyn, x, y, z); -} - -static int -gml_parse_coordinates (gmlCoordPtr coord, gaiaDynamicLinePtr dyn, int *has_z) -{ -/* parsing GML v2.x [Linestring or Ring] */ - int count = 0; - double x; - double y; - double z; - gmlCoordPtr next; - gmlCoordPtr c = coord; - while (c) - { - if (!gml_extract_multi_coords (c, &x, &y, &z, &count, &next)) - return 0; - if (count == 2) - { - *has_z = 0; - gml_add_point_to_line (dyn, x, y); - count = 0; - } - else if (count == 3) - { - gml_add_point_to_lineZ (dyn, x, y, z); - count = 0; - } - else - return 0; - c = next; - } - return 1; -} - -static int -gml_parse_posList (gmlCoordPtr coord, gaiaDynamicLinePtr dyn, int has_z) -{ -/* parsing GML v3.x [Linestring or Ring] */ - int count = 0; - double x; - double y; - double z; - gmlCoordPtr c = coord; - while (c) - { - if (!gml_check_coord (c->Value)) - return 0; - if (!has_z) - { - switch (count) - { - case 0: - x = atof (c->Value); - count++; - break; - case 1: - y = atof (c->Value); - gml_add_point_to_line (dyn, x, y); - count = 0; - break; - }; - } - else - { - switch (count) - { - case 0: - x = atof (c->Value); - count++; - break; - case 1: - y = atof (c->Value); - count++; - break; - case 2: - z = atof (c->Value); - gml_add_point_to_lineZ (dyn, x, y, z); - count = 0; - break; - }; - } - c = c->Next; - } - if (count != 0) - return 0; - return 1; -} - -static int -gml_count_dyn_points (gaiaDynamicLinePtr dyn) -{ -/* count how many vertices are into sone linestring/ring */ - int iv = 0; - gaiaPointPtr pt = dyn->First; - while (pt) - { - iv++; - pt = pt->Next; - } - return iv; -} - -static int -gml_parse_linestring (struct gml_data *p_data, gaiaGeomCollPtr geom, - gmlNodePtr node, int srid, gmlNodePtr * next) -{ -/* parsing a */ - gaiaGeomCollPtr ln; - gaiaGeomCollPtr last; - gaiaLinestringPtr new_ln; - gaiaPointPtr pt; - int iv; - int has_z = 1; - int points = 0; - gaiaDynamicLinePtr dyn = gaiaAllocDynamicLine (); - gmlMapDynAlloc (p_data, GML_DYN_DYNLINE, dyn); - - if (strcmp (node->Tag, "gml:coordinates") == 0 - || strcmp (node->Tag, "coordinates") == 0) - { - /* parsing a GML v.2.x */ - if (!gml_parse_coordinates (node->Coordinates, dyn, &has_z)) - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:coordinates") == 0 - || strcmp (node->Tag, "coordinates") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:LineString") == 0 - || strcmp (node->Tag, "LineString") == 0) - ; - else - goto error; - *next = node->Next; - goto ok; - } - if (strcmp (node->Tag, "gml:posList") == 0 - || strcmp (node->Tag, "posList") == 0) - { - /* parsing a GML v.3.x */ - has_z = gml_get_srsDimension (node); - if (!gml_parse_posList (node->Coordinates, dyn, has_z)) - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:posList") == 0 - || strcmp (node->Tag, "posList") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:LineString") == 0 - || strcmp (node->Tag, "LineString") == 0) - ; - else - goto error; - *next = node->Next; - goto ok; - } - goto error; - - ok: -/* ok, GML nodes match as expected */ - points = gml_count_dyn_points (dyn); - if (points < 2) - goto error; - if (has_z) - { - ln = gaiaAllocGeomCollXYZ (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, ln); - ln->Srid = srid; - new_ln = gaiaAddLinestringToGeomColl (ln, points); - pt = dyn->First; - iv = 0; - while (pt) - { - gaiaSetPointXYZ (new_ln->Coords, iv, pt->X, pt->Y, pt->Z); - iv++; - pt = pt->Next; - } - } - else - { - ln = gaiaAllocGeomColl (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, ln); - ln->Srid = srid; - new_ln = gaiaAddLinestringToGeomColl (ln, points); - pt = dyn->First; - iv = 0; - while (pt) - { - gaiaSetPoint (new_ln->Coords, iv, pt->X, pt->Y); - iv++; - pt = pt->Next; - } - } - last = geom; - while (1) - { - /* searching the last Geometry within chain */ - if (last->Next == NULL) - break; - last = last->Next; - } - last->Next = ln; - gmlMapDynClean (p_data, dyn); - gaiaFreeDynamicLine (dyn); - return 1; - - error: - gmlMapDynClean (p_data, dyn); - gaiaFreeDynamicLine (dyn); - return 0; -} - -static int -gml_parse_curve (struct gml_data *p_data, gaiaGeomCollPtr geom, gmlNodePtr node, - int srid, gmlNodePtr * next) -{ -/* parsing a */ - gaiaGeomCollPtr ln; - gaiaGeomCollPtr last; - gaiaLinestringPtr new_ln; - gaiaPointPtr pt; - int iv; - int has_z = 1; - int points = 0; - gaiaDynamicLinePtr dyn = gaiaAllocDynamicLine (); - gmlMapDynAlloc (p_data, GML_DYN_DYNLINE, dyn); - - if (strcmp (node->Tag, "gml:segments") == 0 - || strcmp (node->Tag, "segments") == 0) - { - /* parsing a GML v.3.x */ - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:LineStringSegment") == 0 - || strcmp (node->Tag, "LineStringSegment") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:posList") == 0 - || strcmp (node->Tag, "posList") == 0) - ; - else - goto error; - has_z = gml_get_srsDimension (node); - if (!gml_parse_posList (node->Coordinates, dyn, has_z)) - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:posList") == 0 - || strcmp (node->Tag, "posList") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:LineStringSegment") == 0 - || strcmp (node->Tag, "LineStringSegment") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:segments") == 0 - || strcmp (node->Tag, "segments") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:Curve") == 0 - || strcmp (node->Tag, "Curve") == 0) - ; - else - goto error; - *next = node->Next; - goto ok; - } - goto error; - - ok: -/* ok, GML nodes match as expected */ - points = gml_count_dyn_points (dyn); - if (points < 2) - goto error; - if (has_z) - { - ln = gaiaAllocGeomCollXYZ (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, ln); - ln->Srid = srid; - new_ln = gaiaAddLinestringToGeomColl (ln, points); - pt = dyn->First; - iv = 0; - while (pt) - { - gaiaSetPointXYZ (new_ln->Coords, iv, pt->X, pt->Y, pt->Z); - iv++; - pt = pt->Next; - } - } - else - { - ln = gaiaAllocGeomColl (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, ln); - ln->Srid = srid; - new_ln = gaiaAddLinestringToGeomColl (ln, points); - pt = dyn->First; - iv = 0; - while (pt) - { - gaiaSetPoint (new_ln->Coords, iv, pt->X, pt->Y); - iv++; - pt = pt->Next; - } - } - last = geom; - while (1) - { - /* searching the last Geometry within chain */ - if (last->Next == NULL) - break; - last = last->Next; - } - last->Next = ln; - gmlMapDynClean (p_data, dyn); - gaiaFreeDynamicLine (dyn); - return 1; - - error: - gmlMapDynClean (p_data, dyn); - gaiaFreeDynamicLine (dyn); - return 0; -} - -static gaiaDynamicLinePtr -gml_parse_ring (struct gml_data *p_data, gmlNodePtr node, int *interior, - int *has_z, gmlNodePtr * next) -{ -/* parsing a generic GML ring */ - gaiaDynamicLinePtr dyn = gaiaAllocDynamicLine (); - gmlMapDynAlloc (p_data, GML_DYN_DYNLINE, dyn); - *has_z = 1; - - if (strcmp (node->Tag, "gml:outerBoundaryIs") == 0 - || strcmp (node->Tag, "outerBoundaryIs") == 0) - { - /* parsing a GML v.2.x */ - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:LinearRing") == 0 - || strcmp (node->Tag, "LinearRing") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:coordinates") == 0 - || strcmp (node->Tag, "coordinates") == 0) - { - /* parsing a GML v.2.x */ - if (!gml_parse_coordinates (node->Coordinates, dyn, has_z)) - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:coordinates") == 0 - || strcmp (node->Tag, "coordinates") == 0) - ; - else - goto error; - } - else if (strcmp (node->Tag, "gml:posList") == 0 - || strcmp (node->Tag, "posList") == 0) - { - /* parsing a GML v.3.x */ - *has_z = gml_get_srsDimension (node); - if (!gml_parse_posList (node->Coordinates, dyn, *has_z)) - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:posList") == 0 - || strcmp (node->Tag, "posList") == 0) - ; - else - goto error; - } - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:LinearRing") == 0 - || strcmp (node->Tag, "LinearRing") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:outerBoundaryIs") == 0 - || strcmp (node->Tag, "outerBoundaryIs") == 0) - ; - else - goto error; - *interior = 0; - *next = node->Next; - return dyn; - } - if (strcmp (node->Tag, "gml:innerBoundaryIs") == 0 - || strcmp (node->Tag, "innerBoundaryIs") == 0) - { - /* parsing a GML v.2.x */ - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:LinearRing") == 0 - || strcmp (node->Tag, "LinearRing") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:coordinates") == 0 - || strcmp (node->Tag, "coordinates") == 0) - { - /* parsing a GML v.2.x */ - if (!gml_parse_coordinates (node->Coordinates, dyn, has_z)) - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:coordinates") == 0 - || strcmp (node->Tag, "coordinates") == 0) - ; - else - goto error; - } - else if (strcmp (node->Tag, "gml:posList") == 0 - || strcmp (node->Tag, "posList") == 0) - { - /* parsing a GML v.3.x */ - *has_z = gml_get_srsDimension (node); - if (!gml_parse_posList (node->Coordinates, dyn, *has_z)) - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:posList") == 0 - || strcmp (node->Tag, "posList") == 0) - ; - else - goto error; - } - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:LinearRing") == 0 - || strcmp (node->Tag, "LinearRing") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:innerBoundaryIs") == 0 - || strcmp (node->Tag, "innerBoundaryIs") == 0) - ; - else - goto error; - *interior = 1; - *next = node->Next; - return dyn; - } - if (strcmp (node->Tag, "gml:exterior") == 0 - || strcmp (node->Tag, "exterior") == 0) - { - /* parsing a GML v.3.x */ - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:LinearRing") == 0 - || strcmp (node->Tag, "LinearRing") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:posList") == 0 - || strcmp (node->Tag, "posList") == 0) - ; - else - goto error; - *has_z = gml_get_srsDimension (node); - if (!gml_parse_posList (node->Coordinates, dyn, *has_z)) - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:posList") == 0 - || strcmp (node->Tag, "posList") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:LinearRing") == 0 - || strcmp (node->Tag, "LinearRing") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:exterior") == 0 - || strcmp (node->Tag, "exterior") == 0) - ; - else - goto error; - *interior = 0; - *next = node->Next; - return dyn; - } - if (strcmp (node->Tag, "gml:interior") == 0 - || strcmp (node->Tag, "interior") == 0) - { - /* parsing a GML v.3.x */ - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:LinearRing") == 0 - || strcmp (node->Tag, "LinearRing") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:posList") == 0 - || strcmp (node->Tag, "posList") == 0) - ; - else - goto error; - *has_z = gml_get_srsDimension (node); - if (!gml_parse_posList (node->Coordinates, dyn, *has_z)) - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:posList") == 0 - || strcmp (node->Tag, "posList") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:LinearRing") == 0 - || strcmp (node->Tag, "LinearRing") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "gml:interior") == 0 - || strcmp (node->Tag, "interior") == 0) - ; - else - goto error; - *interior = 1; - *next = node->Next; - return dyn; - } - - error: - gmlMapDynClean (p_data, dyn); - gaiaFreeDynamicLine (dyn); - return 0; -} - -static int -gml_parse_polygon (struct gml_data *p_data, gaiaGeomCollPtr geom, - gmlNodePtr node, int srid, gmlNodePtr * next_n) -{ -/* parsing a */ - int interior; - int has_z; - int inners; - int outers; - int points; - int iv; - int ib = 0; - gaiaGeomCollPtr pg; - gaiaGeomCollPtr last_g; - gaiaPolygonPtr new_pg; - gaiaRingPtr ring; - gaiaDynamicLinePtr dyn; - gaiaPointPtr pt; - gaiaDynamicLinePtr exterior_ring; - gmlNodePtr next; - gmlDynamicRingPtr dyn_rng; - gmlDynamicPolygonPtr dyn_pg = gml_alloc_dyn_polygon (p_data); - gmlNodePtr n = node; - while (n) - { - /* looping on rings */ - if (strcmp (n->Tag, "gml:Polygon") == 0 - || strcmp (n->Tag, "Polygon") == 0) - { - *next_n = n->Next; - break; - } - dyn = gml_parse_ring (p_data, n, &interior, &has_z, &next); - if (dyn == NULL) - goto error; - if (gml_count_dyn_points (dyn) < 4) - { - /* cannot be a valid ring */ - goto error; - } - /* checking if the ring is closed */ - if (has_z) - { - if (dyn->First->X == dyn->Last->X - && dyn->First->Y == dyn->Last->Y - && dyn->First->Z == dyn->Last->Z) - ; - else - goto error; - } - else - { - if (dyn->First->X == dyn->Last->X - && dyn->First->Y == dyn->Last->Y) - ; - else - goto error; - } - gml_add_polygon_ring (p_data, dyn_pg, dyn, interior, has_z); - n = next; - } -/* ok, GML nodes match as expected */ - inners = 0; - outers = 0; - has_z = 1; - dyn_rng = dyn_pg->first; - while (dyn_rng) - { - /* verifying the rings collection */ - if (dyn_rng->has_z == 0) - has_z = 0; - if (dyn_rng->interior) - inners++; - else - { - outers++; - points = gml_count_dyn_points (dyn_rng->ring); - exterior_ring = dyn_rng->ring; - } - dyn_rng = dyn_rng->next; - } - if (outers != 1) /* no exterior ring declared */ - goto error; - - if (has_z) - { - pg = gaiaAllocGeomCollXYZ (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, pg); - pg->Srid = srid; - new_pg = gaiaAddPolygonToGeomColl (pg, points, inners); - /* initializing the EXTERIOR RING */ - ring = new_pg->Exterior; - pt = exterior_ring->First; - iv = 0; - while (pt) - { - gaiaSetPointXYZ (ring->Coords, iv, pt->X, pt->Y, pt->Z); - iv++; - pt = pt->Next; - } - dyn_rng = dyn_pg->first; - while (dyn_rng) - { - /* initializing any INTERIOR RING */ - if (dyn_rng->interior == 0) - { - dyn_rng = dyn_rng->next; - continue; - } - points = gml_count_dyn_points (dyn_rng->ring); - ring = gaiaAddInteriorRing (new_pg, ib, points); - ib++; - pt = dyn_rng->ring->First; - iv = 0; - while (pt) - { - gaiaSetPointXYZ (ring->Coords, iv, pt->X, pt->Y, pt->Z); - iv++; - pt = pt->Next; - } - dyn_rng = dyn_rng->next; - } - } - else - { - pg = gaiaAllocGeomColl (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, pg); - pg->Srid = srid; - new_pg = gaiaAddPolygonToGeomColl (pg, points, inners); - /* initializing the EXTERIOR RING */ - ring = new_pg->Exterior; - pt = exterior_ring->First; - iv = 0; - while (pt) - { - gaiaSetPoint (ring->Coords, iv, pt->X, pt->Y); - iv++; - pt = pt->Next; - } - dyn_rng = dyn_pg->first; - while (dyn_rng) - { - /* initializing any INTERIOR RING */ - if (dyn_rng->interior == 0) - { - dyn_rng = dyn_rng->next; - continue; - } - points = gml_count_dyn_points (dyn_rng->ring); - ring = gaiaAddInteriorRing (new_pg, ib, points); - ib++; - pt = dyn_rng->ring->First; - iv = 0; - while (pt) - { - gaiaSetPoint (ring->Coords, iv, pt->X, pt->Y); - iv++; - pt = pt->Next; - } - dyn_rng = dyn_rng->next; - } - } - - last_g = geom; - while (1) - { - /* searching the last Geometry within chain */ - if (last_g->Next == NULL) - break; - last_g = last_g->Next; - } - last_g->Next = pg; - gml_free_dyn_polygon (dyn_pg); - return 1; - - error: - gml_free_dyn_polygon (dyn_pg); - return 0; -} - -static int -gml_parse_multi_point (struct gml_data *p_data, gaiaGeomCollPtr geom, - gmlNodePtr node) -{ -/* parsing a */ - int srid; - gmlNodePtr next; - gmlNodePtr n = node; - while (n) - { - /* looping on Point Members */ - if (n->Next == NULL) - { - /* verifying the last GML node */ - if (strcmp (n->Tag, "gml:MultiPoint") == 0 - || strcmp (n->Tag, "MultiPoint") == 0) - break; - else - return 0; - } - if (strcmp (n->Tag, "gml:pointMember") == 0 - || strcmp (n->Tag, "pointMember") == 0) - ; - else - return 0; - n = n->Next; - if (n == NULL) - return 0; - if (strcmp (n->Tag, "gml:Point") == 0 - || strcmp (n->Tag, "Point") == 0) - ; - else - return 0; - srid = guessGmlSrid (n); - n = n->Next; - if (n == NULL) - return 0; - if (!gml_parse_point (p_data, geom, n, srid, &next)) - return 0; - n = next; - if (n == NULL) - return 0; - if (strcmp (n->Tag, "gml:pointMember") == 0 - || strcmp (n->Tag, "pointMember") == 0) - ; - else - return 0; - n = n->Next; - } - return 1; -} - -static int -gml_parse_multi_linestring (struct gml_data *p_data, gaiaGeomCollPtr geom, - gmlNodePtr node) -{ -/* parsing a */ - int srid; - gmlNodePtr next; - gmlNodePtr n = node; - while (n) - { - /* looping on LineString Members */ - if (n->Next == NULL) - { - /* verifying the last GML node */ - if (strcmp (n->Tag, "gml:MultiLineString") == 0 - || strcmp (n->Tag, "MultiLineString") == 0) - break; - else - return 0; - } - if (strcmp (n->Tag, "gml:lineStringMember") == 0 - || strcmp (n->Tag, "lineStringMember") == 0) - ; - else - return 0; - n = n->Next; - if (n == NULL) - return 0; - if (strcmp (n->Tag, "gml:LineString") == 0 - || strcmp (n->Tag, "LineString") == 0) - ; - else - return 0; - srid = guessGmlSrid (n); - n = n->Next; - if (n == NULL) - return 0; - if (!gml_parse_linestring (p_data, geom, n, srid, &next)) - return 0; - n = next; - if (n == NULL) - return 0; - if (strcmp (n->Tag, "gml:lineStringMember") == 0 - || strcmp (n->Tag, "lineStringMember") == 0) - ; - else - return 0; - n = n->Next; - } - return 1; -} - -static int -gml_parse_multi_curve (struct gml_data *p_data, gaiaGeomCollPtr geom, - gmlNodePtr node) -{ -/* parsing a */ - int srid; - gmlNodePtr next; - gmlNodePtr n = node; - while (n) - { - /* looping on Curve Members */ - if (n->Next == NULL) - { - /* verifying the last GML node */ - if (strcmp (n->Tag, "gml:MultiCurve") == 0 - || strcmp (n->Tag, "MultiCurve") == 0) - break; - else - return 0; - } - if (strcmp (n->Tag, "gml:curveMember") == 0 - || strcmp (n->Tag, "curveMember") == 0) - ; - else - return 0; - n = n->Next; - if (n == NULL) - return 0; - if (strcmp (n->Tag, "gml:Curve") == 0 - || strcmp (n->Tag, "Curve") == 0) - ; - else - return 0; - srid = guessGmlSrid (n); - n = n->Next; - if (n == NULL) - return 0; - if (!gml_parse_curve (p_data, geom, n, srid, &next)) - return 0; - n = next; - if (n == NULL) - return 0; - if (strcmp (n->Tag, "gml:curveMember") == 0 - || strcmp (n->Tag, "curveMember") == 0) - ; - else - return 0; - n = n->Next; - } - return 1; -} - -static int -gml_parse_multi_polygon (struct gml_data *p_data, gaiaGeomCollPtr geom, - gmlNodePtr node) -{ -/* parsing a */ - int srid; - gmlNodePtr next; - gmlNodePtr n = node; - while (n) - { - /* looping on Polygon Members */ - if (n->Next == NULL) - { - /* verifying the last GML node */ - if (strcmp (n->Tag, "gml:MultiPolygon") == 0 - || strcmp (n->Tag, "MultiPolygon") == 0) - break; - else - return 0; - } - if (strcmp (n->Tag, "gml:polygonMember") == 0 - || strcmp (n->Tag, "polygonMember") == 0) - ; - else - return 0; - n = n->Next; - if (n == NULL) - return 0; - if (strcmp (n->Tag, "gml:Polygon") == 0 - || strcmp (n->Tag, "Polygon") == 0) - ; - else - return 0; - srid = guessGmlSrid (n); - n = n->Next; - if (n == NULL) - return 0; - if (!gml_parse_polygon (p_data, geom, n, srid, &next)) - return 0; - n = next; - if (n == NULL) - return 0; - if (strcmp (n->Tag, "gml:polygonMember") == 0 - || strcmp (n->Tag, "polygonMember") == 0) - ; - else - return 0; - n = n->Next; - } - return 1; -} - -static int -gml_parse_multi_surface (struct gml_data *p_data, gaiaGeomCollPtr geom, - gmlNodePtr node) -{ -/* parsing a */ - int srid; - gmlNodePtr next; - gmlNodePtr n = node; - while (n) - { - /* looping on Surface Members */ - if (n->Next == NULL) - { - /* verifying the last GML node */ - if (strcmp (n->Tag, "gml:MultiSurface") == 0 - || strcmp (n->Tag, "MultiSurface") == 0) - break; - else - return 0; - } - if (strcmp (n->Tag, "gml:surfaceMember") == 0 - || strcmp (n->Tag, "surfaceMember") == 0) - ; - else - return 0; - n = n->Next; - if (n == NULL) - return 0; - if (strcmp (n->Tag, "gml:Polygon") == 0 - || strcmp (n->Tag, "Polygon") == 0) - ; - else - return 0; - srid = guessGmlSrid (n); - n = n->Next; - if (n == NULL) - return 0; - if (!gml_parse_polygon (p_data, geom, n, srid, &next)) - return 0; - n = next; - if (n == NULL) - return 0; - if (strcmp (n->Tag, "gml:surfaceMember") == 0 - || strcmp (n->Tag, "surfaceMember") == 0) - ; - else - return 0; - n = n->Next; - } - return 1; -} - -static int -gml_parse_multi_geometry (struct gml_data *p_data, gaiaGeomCollPtr geom, - gmlNodePtr node) -{ -/* parsing a */ - int srid; - gmlNodePtr next; - gmlNodePtr n = node; - while (n) - { - /* looping on Geometry Members */ - if (n->Next == NULL) - { - /* verifying the last GML node */ - if (strcmp (n->Tag, "gml:MultiGeometry") == 0 - || strcmp (n->Tag, "MultiGeometry") == 0) - break; - else - return 0; - } - if (strcmp (n->Tag, "gml:geometryMember") == 0 - || strcmp (n->Tag, "geometryMember") == 0) - ; - else - return 0; - n = n->Next; - if (n == NULL) - return 0; - if (strcmp (n->Tag, "gml:Point") == 0 - || strcmp (n->Tag, "Point") == 0) - { - srid = guessGmlSrid (n); - n = n->Next; - if (n == NULL) - return 0; - if (!gml_parse_point (p_data, geom, n, srid, &next)) - return 0; - n = next; - } - else if (strcmp (n->Tag, "gml:LineString") == 0 - || strcmp (n->Tag, "LineString") == 0) - { - srid = guessGmlSrid (n); - n = n->Next; - if (n == NULL) - return 0; - if (!gml_parse_linestring (p_data, geom, n, srid, &next)) - return 0; - n = next; - } - else if (strcmp (n->Tag, "gml:Curve") == 0 - || strcmp (n->Tag, "Curve") == 0) - { - srid = guessGmlSrid (n); - n = n->Next; - if (n == NULL) - return 0; - if (!gml_parse_curve (p_data, geom, n, srid, &next)) - return 0; - n = next; - } - else if (strcmp (n->Tag, "gml:Polygon") == 0 - || strcmp (n->Tag, "Polygon") == 0) - { - srid = guessGmlSrid (n); - n = n->Next; - if (n == NULL) - return 0; - if (!gml_parse_polygon (p_data, geom, n, srid, &next)) - return 0; - n = next; - } - else - return 0; - if (n == NULL) - return 0; - if (strcmp (n->Tag, "gml:geometryMember") == 0 - || strcmp (n->Tag, "geometryMember") == 0) - ; - else - return 0; - n = n->Next; - } - return 1; -} - -static gaiaGeomCollPtr -gml_validate_geometry (struct gml_data *p_data, gaiaGeomCollPtr chain, - sqlite3 * sqlite_handle) -{ - int xy = 0; - int xyz = 0; - int pts = 0; - int lns = 0; - int pgs = 0; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaPointPtr save_pt; - gaiaLinestringPtr save_ln; - gaiaPolygonPtr save_pg; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - int ib; - int delete_g2; - gaiaGeomCollPtr g; - gaiaGeomCollPtr g2; - gaiaGeomCollPtr geom; - char *proj_from; - char *proj_to; - - g = chain; - while (g) - { - if (g != chain) - { - if (g->DimensionModel == GAIA_XY) - xy++; - if (g->DimensionModel == GAIA_XY_Z) - xyz++; - } - pt = g->FirstPoint; - while (pt) - { - pts++; - save_pt = pt; - pt = pt->Next; - } - ln = g->FirstLinestring; - while (ln) - { - lns++; - save_ln = ln; - ln = ln->Next; - } - pg = g->FirstPolygon; - while (pg) - { - pgs++; - save_pg = pg; - pg = pg->Next; - } - g = g->Next; - } - if (pts == 1 && lns == 0 && pgs == 0) - { - /* POINT */ - if (xy > 0) - { - /* 2D [XY] */ - geom = gaiaAllocGeomColl (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); - geom->Srid = chain->Srid; - if (chain->DeclaredType == GAIA_MULTIPOINT) - geom->DeclaredType = GAIA_MULTIPOINT; - else if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - geom->DeclaredType = GAIA_POINT; - gaiaAddPointToGeomColl (geom, save_pt->X, save_pt->Y); - return geom; - } - else - { - /* 3D [XYZ] */ - geom = gaiaAllocGeomCollXYZ (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); - geom->Srid = chain->Srid; - if (chain->DeclaredType == GAIA_MULTIPOINT) - geom->DeclaredType = GAIA_MULTIPOINT; - else if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - geom->DeclaredType = GAIA_POINT; - gaiaAddPointToGeomCollXYZ (geom, save_pt->X, save_pt->Y, - save_pt->Z); - return geom; - } - } - if (pts == 0 && lns == 1 && pgs == 0) - { - /* LINESTRING */ - if (xy > 0) - { - /* 2D [XY] */ - geom = gaiaAllocGeomColl (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); - } - else - { - /* 3D [XYZ] */ - geom = gaiaAllocGeomCollXYZ (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); - } - geom->Srid = chain->Srid; - if (chain->DeclaredType == GAIA_MULTILINESTRING) - geom->DeclaredType = GAIA_MULTILINESTRING; - else if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - geom->DeclaredType = GAIA_LINESTRING; - ln = gaiaAddLinestringToGeomColl (geom, save_ln->Points); - gaiaCopyLinestringCoords (ln, save_ln); - return geom; - } - if (pts == 0 && lns == 0 && pgs == 1) - { - /* POLYGON */ - if (xy > 0) - { - /* 2D [XY] */ - geom = gaiaAllocGeomColl (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); - } - else - { - /* 3D [XYZ] */ - geom = gaiaAllocGeomCollXYZ (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); - } - geom->Srid = chain->Srid; - if (chain->DeclaredType == GAIA_MULTIPOLYGON) - geom->DeclaredType = GAIA_MULTIPOLYGON; - else if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - geom->DeclaredType = GAIA_POLYGON; - i_ring = save_pg->Exterior; - pg = gaiaAddPolygonToGeomColl (geom, i_ring->Points, - save_pg->NumInteriors); - o_ring = pg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < save_pg->NumInteriors; ib++) - { - i_ring = save_pg->Interiors + ib; - o_ring = gaiaAddInteriorRing (pg, ib, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - return geom; - } - if (pts >= 1 && lns == 0 && pgs == 0) - { - /* MULTIPOINT */ - if (xy > 0) - { - /* 2D [XY] */ - geom = gaiaAllocGeomColl (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); - geom->Srid = chain->Srid; - if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - geom->DeclaredType = GAIA_MULTIPOINT; - g = chain; - while (g) - { - if (geom->Srid <= 0) - { - /* we haven't yet set any SRID */ - geom->Srid = g->Srid; - } - g2 = g; - delete_g2 = 0; - if (g->Srid != geom->Srid && g->Srid > 0 - && sqlite_handle != NULL) - { - /* we'll try to apply a reprojection */ -#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ - getProjParams (sqlite_handle, g->Srid, &proj_from); - getProjParams (sqlite_handle, geom->Srid, &proj_to); - if (proj_to == NULL || proj_from == NULL) - ; - else - { - g2 = gaiaTransform (g, proj_from, proj_to); - if (!g2) - g2 = g; - else - delete_g2 = 1; - } - if (proj_from) - free (proj_from); - if (proj_to) - free (proj_to); -#endif - } - pt = g2->FirstPoint; - while (pt) - { - gaiaAddPointToGeomColl (geom, pt->X, pt->Y); - pt = pt->Next; - } - if (delete_g2) - { - gmlMapDynClean (p_data, g2); - gaiaFreeGeomColl (g2); - } - g = g->Next; - } - return geom; - } - else - { - /* 3D [XYZ] */ - geom = gaiaAllocGeomCollXYZ (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); - geom->Srid = chain->Srid; - if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - geom->DeclaredType = GAIA_MULTIPOINT; - g = chain; - while (g) - { - if (geom->Srid <= 0) - { - /* we haven't yet a SRID set */ - geom->Srid = g->Srid; - } - g2 = g; - delete_g2 = 0; - if (g->Srid != geom->Srid && g->Srid > 0 - && sqlite_handle != NULL) - { - /* we'll try to apply a reprojection */ -#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ - getProjParams (sqlite_handle, g->Srid, &proj_from); - getProjParams (sqlite_handle, geom->Srid, &proj_to); - if (proj_to == NULL || proj_from == NULL) - ; - else - { - g2 = gaiaTransform (g, proj_from, proj_to); - if (!g2) - g2 = g; - else - delete_g2 = 1; - } - if (proj_from) - free (proj_from); - if (proj_to) - free (proj_to); -#endif - } - pt = g2->FirstPoint; - while (pt) - { - gaiaAddPointToGeomCollXYZ (geom, pt->X, pt->Y, - pt->Z); - pt = pt->Next; - } - if (delete_g2) - { - gmlMapDynClean (p_data, g2); - gaiaFreeGeomColl (g2); - } - g = g->Next; - } - return geom; - } - } - if (pts == 0 && lns >= 1 && pgs == 0) - { - /* MULTILINESTRING */ - if (xy > 0) - { - /* 2D [XY] */ - geom = gaiaAllocGeomColl (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); - geom->Srid = chain->Srid; - if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - geom->DeclaredType = GAIA_MULTILINESTRING; - g = chain; - while (g) - { - if (geom->Srid <= 0) - { - /* we haven't yet set any SRID */ - geom->Srid = g->Srid; - } - g2 = g; - delete_g2 = 0; - if (g->Srid != geom->Srid && g->Srid > 0 - && sqlite_handle != NULL) - { - /* we'll try to apply a reprojection */ -#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ - getProjParams (sqlite_handle, g->Srid, &proj_from); - getProjParams (sqlite_handle, geom->Srid, &proj_to); - if (proj_to == NULL || proj_from == NULL) - ; - else - { - g2 = gaiaTransform (g, proj_from, proj_to); - if (!g2) - g2 = g; - else - delete_g2 = 1; - } - if (proj_from) - free (proj_from); - if (proj_to) - free (proj_to); -#endif - } - ln = g2->FirstLinestring; - while (ln) - { - save_ln = - gaiaAddLinestringToGeomColl (geom, ln->Points); - gaiaCopyLinestringCoords (save_ln, ln); - ln = ln->Next; - } - if (delete_g2) - { - gmlMapDynClean (p_data, g2); - gaiaFreeGeomColl (g2); - } - g = g->Next; - } - return geom; - } - else - { - /* 3D [XYZ] */ - geom = gaiaAllocGeomCollXYZ (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); - geom->Srid = chain->Srid; - if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - geom->DeclaredType = GAIA_MULTILINESTRING; - g = chain; - while (g) - { - if (geom->Srid <= 0) - { - /* we haven't yet a SRID set */ - geom->Srid = g->Srid; - } - g2 = g; - delete_g2 = 0; - if (g->Srid != geom->Srid && g->Srid > 0 - && sqlite_handle != NULL) - { - /* we'll try to apply a reprojection */ -#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ - getProjParams (sqlite_handle, g->Srid, &proj_from); - getProjParams (sqlite_handle, geom->Srid, &proj_to); - if (proj_to == NULL || proj_from == NULL) - ; - else - { - g2 = gaiaTransform (g, proj_from, proj_to); - if (!g2) - g2 = g; - else - delete_g2 = 1; - } - if (proj_from) - free (proj_from); - if (proj_to) - free (proj_to); -#endif - } - ln = g2->FirstLinestring; - while (ln) - { - save_ln = - gaiaAddLinestringToGeomColl (geom, ln->Points); - gaiaCopyLinestringCoords (save_ln, ln); - ln = ln->Next; - } - if (delete_g2) - { - gmlMapDynClean (p_data, g2); - gaiaFreeGeomColl (g2); - } - g = g->Next; - } - return geom; - } - } - if (pts == 0 && lns == 0 && pgs >= 1) - { - /* MULTIPOLYGON */ - if (xy > 0) - { - /* 2D [XY] */ - geom = gaiaAllocGeomColl (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); - geom->Srid = chain->Srid; - if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - geom->DeclaredType = GAIA_MULTIPOLYGON; - g = chain; - while (g) - { - if (geom->Srid <= 0) - { - /* we haven't yet set any SRID */ - geom->Srid = g->Srid; - } - g2 = g; - delete_g2 = 0; - if (g->Srid != geom->Srid && g->Srid > 0 - && sqlite_handle != NULL) - { - /* we'll try to apply a reprojection */ -#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ - getProjParams (sqlite_handle, g->Srid, &proj_from); - getProjParams (sqlite_handle, geom->Srid, &proj_to); - if (proj_to == NULL || proj_from == NULL) - ; - else - { - g2 = gaiaTransform (g, proj_from, proj_to); - if (!g2) - g2 = g; - else - delete_g2 = 1; - } - if (proj_from) - free (proj_from); - if (proj_to) - free (proj_to); -#endif - } - pg = g2->FirstPolygon; - while (pg) - { - i_ring = pg->Exterior; - save_pg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, - pg->NumInteriors); - o_ring = save_pg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < pg->NumInteriors; ib++) - { - i_ring = pg->Interiors + ib; - o_ring = - gaiaAddInteriorRing (save_pg, ib, - i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - pg = pg->Next; - } - if (delete_g2) - { - gmlMapDynClean (p_data, g2); - gaiaFreeGeomColl (g2); - } - g = g->Next; - } - return geom; - } - else - { - /* 3D [XYZ] */ - geom = gaiaAllocGeomCollXYZ (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); - geom->Srid = chain->Srid; - if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - geom->DeclaredType = GAIA_MULTIPOLYGON; - g = chain; - while (g) - { - if (geom->Srid <= 0) - { - /* we haven't yet a SRID set */ - geom->Srid = g->Srid; - } - g2 = g; - delete_g2 = 0; - if (g->Srid != geom->Srid && g->Srid > 0 - && sqlite_handle != NULL) - { - /* we'll try to apply a reprojection */ -#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ - getProjParams (sqlite_handle, g->Srid, &proj_from); - getProjParams (sqlite_handle, geom->Srid, &proj_to); - if (proj_to == NULL || proj_from == NULL) - ; - else - { - g2 = gaiaTransform (g, proj_from, proj_to); - if (!g2) - g2 = g; - else - delete_g2 = 1; - } - if (proj_from) - free (proj_from); - if (proj_to) - free (proj_to); -#endif - } - pg = g2->FirstPolygon; - while (pg) - { - i_ring = pg->Exterior; - save_pg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, - pg->NumInteriors); - o_ring = save_pg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < pg->NumInteriors; ib++) - { - i_ring = pg->Interiors + ib; - o_ring = - gaiaAddInteriorRing (save_pg, ib, - i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - pg = pg->Next; - } - if (delete_g2) - { - gmlMapDynClean (p_data, g2); - gaiaFreeGeomColl (g2); - } - g = g->Next; - } - return geom; - } - } - if ((pts + lns + pgs) > 0) - { - /* GEOMETRYCOLLECTION */ - if (xy > 0) - { - /* 2D [XY] */ - geom = gaiaAllocGeomColl (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); - geom->Srid = chain->Srid; - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - g = chain; - while (g) - { - if (geom->Srid <= 0) - { - /* we haven't yet set any SRID */ - geom->Srid = g->Srid; - } - g2 = g; - delete_g2 = 0; - if (g->Srid != geom->Srid && g->Srid > 0 - && sqlite_handle != NULL) - { - /* we'll try to apply a reprojection */ -#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ - getProjParams (sqlite_handle, g->Srid, &proj_from); - getProjParams (sqlite_handle, geom->Srid, &proj_to); - if (proj_to == NULL || proj_from == NULL) - ; - else - { - g2 = gaiaTransform (g, proj_from, proj_to); - if (!g2) - g2 = g; - else - delete_g2 = 1; - } - if (proj_from) - free (proj_from); - if (proj_to) - free (proj_to); -#endif - } - pt = g2->FirstPoint; - while (pt) - { - gaiaAddPointToGeomColl (geom, pt->X, pt->Y); - pt = pt->Next; - } - ln = g2->FirstLinestring; - while (ln) - { - save_ln = - gaiaAddLinestringToGeomColl (geom, ln->Points); - gaiaCopyLinestringCoords (save_ln, ln); - ln = ln->Next; - } - pg = g2->FirstPolygon; - while (pg) - { - i_ring = pg->Exterior; - save_pg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, - pg->NumInteriors); - o_ring = save_pg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < pg->NumInteriors; ib++) - { - i_ring = pg->Interiors + ib; - o_ring = - gaiaAddInteriorRing (save_pg, ib, - i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - pg = pg->Next; - } - if (delete_g2) - { - gmlMapDynClean (p_data, g2); - gaiaFreeGeomColl (g2); - } - g = g->Next; - } - return geom; - } - else - { - /* 3D [XYZ] */ - geom = gaiaAllocGeomCollXYZ (); - gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); - geom->Srid = chain->Srid; - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - g = chain; - while (g) - { - if (geom->Srid <= 0) - { - /* we haven't yet a SRID set */ - geom->Srid = g->Srid; - } - g2 = g; - delete_g2 = 0; - if (g->Srid != geom->Srid && g->Srid > 0 - && sqlite_handle != NULL) - { - /* we'll try to apply a reprojection */ -#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ - getProjParams (sqlite_handle, g->Srid, &proj_from); - getProjParams (sqlite_handle, geom->Srid, &proj_to); - if (*proj_to == '\0' || *proj_from == '\0') - ; - else - { - g2 = gaiaTransform (g, proj_from, proj_to); - if (!g2) - g2 = g; - else - delete_g2 = 1; - } - if (proj_from) - free (proj_from); - if (proj_to) - free (proj_to); -#endif - } - pt = g2->FirstPoint; - while (pt) - { - gaiaAddPointToGeomCollXYZ (geom, pt->X, pt->Y, - pt->Z); - pt = pt->Next; - } - ln = g2->FirstLinestring; - while (ln) - { - save_ln = - gaiaAddLinestringToGeomColl (geom, ln->Points); - gaiaCopyLinestringCoords (save_ln, ln); - ln = ln->Next; - } - pg = g2->FirstPolygon; - while (pg) - { - i_ring = pg->Exterior; - save_pg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, - pg->NumInteriors); - o_ring = save_pg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < pg->NumInteriors; ib++) - { - i_ring = pg->Interiors + ib; - o_ring = - gaiaAddInteriorRing (save_pg, ib, - i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - pg = pg->Next; - } - if (delete_g2) - { - gmlMapDynClean (p_data, g2); - gaiaFreeGeomColl (g2); - } - g = g->Next; - } - return geom; - } - } - return NULL; -} - -static void -gml_free_geom_chain (struct gml_data *p_data, gaiaGeomCollPtr geom) -{ -/* deleting a chain of preliminary geometries */ - gaiaGeomCollPtr gn; - while (geom) - { - gn = geom->Next; - gmlMapDynClean (p_data, geom); - gaiaFreeGeomColl (geom); - geom = gn; - } -} - -static gaiaGeomCollPtr -gml_build_geometry (struct gml_data *p_data, gmlNodePtr tree, - sqlite3 * sqlite_handle) -{ -/* attempting to build a geometry from GML nodes */ - gaiaGeomCollPtr geom; - gaiaGeomCollPtr result; - int geom_type; - gmlNodePtr next; - - if (tree == NULL) - return NULL; - geom_type = guessGmlGeometryType (tree); - if (geom_type == GAIA_GML_UNKNOWN) - { - /* unsupported main geometry type */ - return NULL; - } -/* creating the main geometry */ - geom = gaiaAllocGeomColl (); - geom->Srid = guessGmlSrid (tree); - - switch (geom_type) - { - /* parsing GML nodes accordingly with declared GML type */ - case GAIA_GML_POINT: - geom->DeclaredType = GAIA_POINT; - if (!gml_parse_point (p_data, geom, tree->Next, geom->Srid, &next)) - goto error; - break; - case GAIA_GML_LINESTRING: - geom->DeclaredType = GAIA_LINESTRING; - if (!gml_parse_linestring - (p_data, geom, tree->Next, geom->Srid, &next)) - goto error; - break; - case GAIA_GML_CURVE: - geom->DeclaredType = GAIA_LINESTRING; - if (!gml_parse_curve (p_data, geom, tree->Next, geom->Srid, &next)) - goto error; - break; - case GAIA_GML_POLYGON: - geom->DeclaredType = GAIA_POLYGON; - if (!gml_parse_polygon (p_data, geom, tree->Next, geom->Srid, &next)) - goto error; - if (next != NULL) - goto error; - break; - case GAIA_GML_MULTIPOINT: - geom->DeclaredType = GAIA_MULTIPOINT; - if (!gml_parse_multi_point (p_data, geom, tree->Next)) - goto error; - break; - case GAIA_GML_MULTILINESTRING: - geom->DeclaredType = GAIA_MULTILINESTRING; - if (!gml_parse_multi_linestring (p_data, geom, tree->Next)) - goto error; - break; - case GAIA_GML_MULTICURVE: - geom->DeclaredType = GAIA_MULTILINESTRING; - if (!gml_parse_multi_curve (p_data, geom, tree->Next)) - goto error; - break; - case GAIA_GML_MULTIPOLYGON: - geom->DeclaredType = GAIA_MULTIPOLYGON; - if (!gml_parse_multi_polygon (p_data, geom, tree->Next)) - goto error; - break; - case GAIA_GML_MULTISURFACE: - geom->DeclaredType = GAIA_MULTIPOLYGON; - if (!gml_parse_multi_surface (p_data, geom, tree->Next)) - goto error; - break; - case GAIA_GML_MULTIGEOMETRY: - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - if (!gml_parse_multi_geometry (p_data, geom, tree->Next)) - goto error; - break; - }; - -/* attempting to build the final geometry */ - result = gml_validate_geometry (p_data, geom, sqlite_handle); - if (result == NULL) - goto error; - gml_free_geom_chain (p_data, geom); - return result; - - error: - gml_free_geom_chain (p_data, geom); - return NULL; -} - - - -/* -** CAVEAT: we must redefine any Lemon/Flex own macro -*/ -#define YYMINORTYPE GML_MINORTYPE -#define YY_CHAR GML_YY_CHAR -#define input gml_input -#define ParseAlloc gmlParseAlloc -#define ParseFree gmlParseFree -#define ParseStackPeak gmlParseStackPeak -#define Parse gmlParse -#define yyStackEntry gml_yyStackEntry -#define yyzerominor gml_yyzerominor -#define yy_accept gml_yy_accept -#define yy_action gml_yy_action -#define yy_base gml_yy_base -#define yy_buffer_stack gml_yy_buffer_stack -#define yy_buffer_stack_max gml_yy_buffer_stack_max -#define yy_buffer_stack_top gml_yy_buffer_stack_top -#define yy_c_buf_p gml_yy_c_buf_p -#define yy_chk gml_yy_chk -#define yy_def gml_yy_def -#define yy_default gml_yy_default -#define yy_destructor gml_yy_destructor -#define yy_ec gml_yy_ec -#define yy_fatal_error gml_yy_fatal_error -#define yy_find_reduce_action gml_yy_find_reduce_action -#define yy_find_shift_action gml_yy_find_shift_action -#define yy_get_next_buffer gml_yy_get_next_buffer -#define yy_get_previous_state gml_yy_get_previous_state -#define yy_init gml_yy_init -#define yy_init_globals gml_yy_init_globals -#define yy_lookahead gml_yy_lookahead -#define yy_meta gml_yy_meta -#define yy_nxt gml_yy_nxt -#define yy_parse_failed gml_yy_parse_failed -#define yy_pop_parser_stack gml_yy_pop_parser_stack -#define yy_reduce gml_yy_reduce -#define yy_reduce_ofst gml_yy_reduce_ofst -#define yy_shift gml_yy_shift -#define yy_shift_ofst gml_yy_shift_ofst -#define yy_start gml_yy_start -#define yy_state_type gml_yy_state_type -#define yy_syntax_error gml_yy_syntax_error -#define yy_trans_info gml_yy_trans_info -#define yy_try_NUL_trans gml_yy_try_NUL_trans -#define yyParser gml_yyParser -#define yyStackEntry gml_yyStackEntry -#define yyStackOverflow gml_yyStackOverflow -#define yyRuleInfo gml_yyRuleInfo -#define yyunput gml_yyunput -#define yyzerominor gml_yyzerominor -#define yyTraceFILE gml_yyTraceFILE -#define yyTracePrompt gml_yyTracePrompt -#define yyTokenName gml_yyTokenName -#define yyRuleName gml_yyRuleName -#define ParseTrace gml_ParseTrace - -#define yylex gml_yylex -#define YY_DECL int yylex (yyscan_t yyscanner) - - -/* include LEMON generated header */ -#include "Gml.h" - - -typedef union -{ - char *pval; - struct symtab *symp; -} gml_yystype; -#define YYSTYPE gml_yystype - - -/* extern YYSTYPE yylval; */ -YYSTYPE GmlLval; - - - -/* including LEMON generated code */ -#include "Gml.c" - - - -/* -** CAVEAT: there is an incompatibility between LEMON and FLEX -** this macro resolves the issue -*/ -#undef yy_accept -#define yy_accept yy_gml_flex_accept - - - -/* including FLEX generated code */ -#include "lex.Gml.c" - - - -gaiaGeomCollPtr -gaiaParseGml (const unsigned char *dirty_buffer, sqlite3 * sqlite_handle) -{ - void *pParser = ParseAlloc (malloc); - /* Linked-list of token values */ - gmlFlexToken *tokens = malloc (sizeof (gmlFlexToken)); - /* Pointer to the head of the list */ - gmlFlexToken *head = tokens; - int yv; - gaiaGeomCollPtr geom = NULL; - yyscan_t scanner; - struct gml_data str_data; - -/* initializing the helper structs */ - str_data.gml_line = 1; - str_data.gml_col = 1; - str_data.gml_parse_error = 0; - str_data.gml_first_dyn_block = NULL; - str_data.gml_last_dyn_block = NULL; - str_data.result = NULL; - -/* initializing the scanner state */ - Gmllex_init_extra (&str_data, &scanner); - - GmlLval.pval = NULL; - tokens->value = NULL; - tokens->Next = NULL; - Gml_scan_string ((char *) dirty_buffer, scanner); - - /* - / Keep tokenizing until we reach the end - / yylex() will return the next matching Token for us. - */ - while ((yv = yylex (scanner)) != 0) - { - if (yv == -1) - { - str_data.gml_parse_error = 1; - break; - } - tokens->Next = malloc (sizeof (gmlFlexToken)); - tokens->Next->Next = NULL; - /* - /GmlLval is a global variable from FLEX. - /GmlLval is defined in gmlLexglobal.h - */ - gml_xferString (&(tokens->Next->value), GmlLval.pval); - /* Pass the token to the wkt parser created from lemon */ - Parse (pParser, yv, &(tokens->Next->value), &str_data); - tokens = tokens->Next; - } - /* This denotes the end of a line as well as the end of the parser */ - Parse (pParser, GML_NEWLINE, 0, &str_data); - ParseFree (pParser, free); - Gmllex_destroy (scanner); - - /* Assigning the token as the end to avoid seg faults while cleaning */ - tokens->Next = NULL; - gml_cleanup (head); - gml_freeString (&(GmlLval.pval)); - - if (str_data.gml_parse_error) - { - if (str_data.result) - { - /* if a Geometry-result has been produced, the stack is already cleaned */ - gml_freeTree (&str_data, str_data.result); - gmlCleanMapDynAlloc (&str_data, 0); - } - else - { - /* otherwise we are required to clean the stack */ - gmlCleanMapDynAlloc (&str_data, 1); - } - return NULL; - } - - if (str_data.result == NULL) - { - gmlCleanMapDynAlloc (&str_data, 0); - return NULL; - } - - /* attempting to build a geometry from GML */ - geom = gml_build_geometry (&str_data, str_data.result, sqlite_handle); - gml_freeTree (&str_data, str_data.result); - gmlCleanMapDynAlloc (&str_data, 0); - return geom; -} - - -/* -** CAVEAT: we must now undefine any Lemon/Flex own macro -*/ -#undef YYNOCODE -#undef YYNSTATE -#undef YYNRULE -#undef YY_SHIFT_MAX -#undef YY_SHIFT_USE_DFLT -#undef YY_REDUCE_USE_DFLT -#undef YY_REDUCE_MAX -#undef YY_FLUSH_BUFFER -#undef YY_DO_BEFORE_ACTION -#undef YY_NUM_RULES -#undef YY_END_OF_BUFFER -#undef YY_END_FILE -#undef YYACTIONTYPE -#undef YY_SZ_ACTTAB -#undef YY_NEW_FILE -#undef BEGIN -#undef YY_START -#undef YY_CURRENT_BUFFER -#undef YY_CURRENT_BUFFER_LVALUE -#undef YY_STATE_BUF_SIZE -#undef YY_DECL -#undef YY_FATAL_ERROR -#undef YYMINORTYPE -#undef YY_CHAR -#undef YYSTYPE -#undef input -#undef ParseAlloc -#undef ParseFree -#undef ParseStackPeak -#undef Parse -#undef yyalloc -#undef yyfree -#undef yyin -#undef yyleng -#undef yyless -#undef yylex -#undef yylineno -#undef yyout -#undef yyrealloc -#undef yyrestart -#undef yyStackEntry -#undef yytext -#undef yywrap -#undef yyzerominor -#undef yy_accept -#undef yy_action -#undef yy_base -#undef yy_buffer_stack -#undef yy_buffer_stack_max -#undef yy_buffer_stack_top -#undef yy_c_buf_p -#undef yy_chk -#undef yy_create_buffer -#undef yy_def -#undef yy_default -#undef yy_delete_buffer -#undef yy_destructor -#undef yy_ec -#undef yy_fatal_error -#undef yy_find_reduce_action -#undef yy_find_shift_action -#undef yy_flex_debug -#undef yy_flush_buffer -#undef yy_get_next_buffer -#undef yy_get_previous_state -#undef yy_init -#undef yy_init_buffer -#undef yy_init_globals -#undef yy_load_buffer -#undef yy_load_buffer_state -#undef yy_lookahead -#undef yy_meta -#undef yy_new_buffer -#undef yy_nxt -#undef yy_parse_failed -#undef yy_pop_parser_stack -#undef yy_reduce -#undef yy_reduce_ofst -#undef yy_set_bol -#undef yy_set_interactive -#undef yy_shift -#undef yy_shift_ofst -#undef yy_start -#undef yy_state_type -#undef yy_switch_to_buffer -#undef yy_syntax_error -#undef yy_trans_info -#undef yy_try_NUL_trans -#undef yyParser -#undef yyStackEntry -#undef yyStackOverflow -#undef yyRuleInfo -#undef yytext_ptr -#undef yyunput -#undef yyzerominor -#undef ParseARG_SDECL -#undef ParseARG_PDECL -#undef ParseARG_FETCH -#undef ParseARG_STORE -#undef REJECT -#undef yymore -#undef YY_MORE_ADJ -#undef YY_RESTORE_YY_MORE_OFFSET -#undef YY_LESS_LINENO -#undef yyTracePrompt -#undef yyTraceFILE -#undef yyTokenName -#undef yyRuleName -#undef ParseTrace - -#undef yylex -#undef YY_DECL diff --git a/src/spatialite/src/gaiageo/gg_kml.c b/src/spatialite/src/gaiageo/gg_kml.c deleted file mode 100644 index 4879b1f..0000000 --- a/src/spatialite/src/gaiageo/gg_kml.c +++ /dev/null @@ -1,2136 +0,0 @@ -/* - - gg_kml.c -- KML parser/lexer - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011-2012 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include - -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include -#include - -#include - -#if defined(_WIN32) || defined(WIN32) -#include -#ifndef isatty -#define isatty _isatty -#endif -#ifndef fileno -#define fileno _fileno -#endif -#endif - -#define KML_PARSER_OPEN_NODE 1 -#define KML_PARSER_SELF_CLOSED_NODE 2 -#define KML_PARSER_CLOSED_NODE 3 - -#define GAIA_KML_UNKNOWN 0 -#define GAIA_KML_POINT 1 -#define GAIA_KML_LINESTRING 2 -#define GAIA_KML_POLYGON 3 -#define GAIA_KML_MULTIGEOMETRY 4 - -#define KML_DYN_NONE 0 -#define KML_DYN_DYNLINE 1 -#define KML_DYN_GEOM 2 -#define KML_DYN_DYNPG 3 -#define KML_DYN_NODE 4 -#define KML_DYN_COORD 5 -#define KML_DYN_ATTRIB 6 - -#define KML_DYN_BLOCK 1024 - -/* -** This is a linked-list struct to store all the values for each token. -*/ -typedef struct kmlFlexTokenStruct -{ - char *value; - struct kmlFlexTokenStruct *Next; -} kmlFlexToken; - -typedef struct kml_coord -{ - char *Value; - struct kml_coord *Next; -} kmlCoord; - -typedef kmlCoord *kmlCoordPtr; - -typedef struct kml_attr -{ - char *Key; - char *Value; - struct kml_attr *Next; -} kmlAttr; -typedef kmlAttr *kmlAttrPtr; - -typedef struct kml_node -{ - char *Tag; - int Type; - int Error; - struct kml_attr *Attributes; - struct kml_coord *Coordinates; - struct kml_node *Next; -} kmlNode; -typedef kmlNode *kmlNodePtr; - -typedef struct kml_dynamic_ring -{ - gaiaDynamicLinePtr ring; - int interior; - int has_z; - struct kml_dynamic_ring *next; -} kmlDynamicRing; -typedef kmlDynamicRing *kmlDynamicRingPtr; - -typedef struct kml_dynamic_polygon -{ - struct kml_dynamic_ring *first; - struct kml_dynamic_ring *last; -} kmlDynamicPolygon; -typedef kmlDynamicPolygon *kmlDynamicPolygonPtr; - -struct kml_dyn_block -{ -/* a struct taking trace of dynamic allocations */ - int type[KML_DYN_BLOCK]; - void *ptr[KML_DYN_BLOCK]; - int index; - struct kml_dyn_block *next; -}; - -struct kml_data -{ -/* a struct used to make the lexer-parser reentrant and thread-safe */ - int kml_parse_error; - int kml_line; - int kml_col; - struct kml_dyn_block *kml_first_dyn_block; - struct kml_dyn_block *kml_last_dyn_block; - kmlNodePtr result; -}; - -static struct kml_dyn_block * -kmlCreateDynBlock (void) -{ -/* allocating a new block to trace dynamic allocations */ - int i; - struct kml_dyn_block *p = malloc (sizeof (struct kml_dyn_block)); - for (i = 0; i < KML_DYN_BLOCK; i++) - { - /* initializing map entries */ - p->type[i] = KML_DYN_NONE; - p->ptr[i] = NULL; - } - p->index = 0; - p->next = NULL; - return p; -} - -static void -kmlMapDynAlloc (struct kml_data *p_data, int type, void *ptr) -{ -/* appending a dynamic allocation into the map */ - struct kml_dyn_block *p; - if (p_data->kml_first_dyn_block == NULL) - { - /* inserting the first block of the map */ - p = kmlCreateDynBlock (); - p_data->kml_first_dyn_block = p; - p_data->kml_last_dyn_block = p; - } - if (p_data->kml_last_dyn_block->index >= KML_DYN_BLOCK) - { - /* adding a further block to the map */ - p = kmlCreateDynBlock (); - p_data->kml_last_dyn_block->next = p; - p_data->kml_last_dyn_block = p; - } - p_data->kml_last_dyn_block->type[p_data->kml_last_dyn_block->index] = type; - p_data->kml_last_dyn_block->ptr[p_data->kml_last_dyn_block->index] = ptr; - p_data->kml_last_dyn_block->index++; -} - -static void -kmlMapDynClean (struct kml_data *p_data, void *ptr) -{ -/* deleting a dynamic allocation from the map */ - int i; - struct kml_dyn_block *p = p_data->kml_first_dyn_block; - while (p) - { - for (i = 0; i < KML_DYN_BLOCK; i++) - { - switch (p->type[i]) - { - case KML_DYN_DYNLINE: - case KML_DYN_GEOM: - case KML_DYN_DYNPG: - case KML_DYN_NODE: - case KML_DYN_COORD: - case KML_DYN_ATTRIB: - if (p->ptr[i] == ptr) - { - p->type[i] = KML_DYN_NONE; - return; - } - break; - }; - } - p = p->next; - } -} - -static void -kml_free_dyn_polygon (kmlDynamicPolygonPtr dyn) -{ -/* deleting a dynamic polygon (ring collection) */ - kmlDynamicRingPtr r; - kmlDynamicRingPtr rn; - if (!dyn) - return; - r = dyn->first; - while (r) - { - rn = r->next; - if (r->ring) - gaiaFreeDynamicLine (r->ring); - free (r); - r = rn; - } - free (dyn); -} - -static void -kml_free_coord (kmlCoordPtr c) -{ -/* deleting a KML coordinate */ - if (c == NULL) - return; - if (c->Value) - free (c->Value); - free (c); -} - -static void -kml_free_attrib (kmlAttrPtr a) -{ -/* deleting a KML attribute */ - if (a == NULL) - return; - if (a->Key) - free (a->Key); - if (a->Value) - free (a->Value); - free (a); -} - -static void -kml_free_node (kmlNodePtr n) -{ -/* deleting a KML node */ - kmlAttrPtr a; - kmlAttrPtr an; - kmlCoordPtr c; - kmlCoordPtr cn; - if (n == NULL) - return; - a = n->Attributes; - while (a) - { - an = a->Next; - kml_free_attrib (a); - a = an; - } - c = n->Coordinates; - while (c) - { - cn = c->Next; - kml_free_coord (c); - c = cn; - } - if (n->Tag) - free (n->Tag); - free (n); -} - -static void -kmlCleanMapDynAlloc (struct kml_data *p_data, int clean_all) -{ -/* cleaning the dynamic allocations map */ - int i; - struct kml_dyn_block *pn; - struct kml_dyn_block *p = p_data->kml_first_dyn_block; - while (p) - { - if (clean_all) - { - for (i = 0; i < KML_DYN_BLOCK; i++) - { - /* deleting Geometry objects */ - switch (p->type[i]) - { - case KML_DYN_DYNLINE: - gaiaFreeDynamicLine ((gaiaDynamicLinePtr) - (p->ptr[i])); - break; - case KML_DYN_GEOM: - gaiaFreeGeomColl ((gaiaGeomCollPtr) (p->ptr[i])); - break; - case KML_DYN_DYNPG: - kml_free_dyn_polygon ((kmlDynamicPolygonPtr) - (p->ptr[i])); - break; - case KML_DYN_NODE: - kml_free_node ((kmlNodePtr) (p->ptr[i])); - break; - case KML_DYN_COORD: - kml_free_coord ((kmlCoordPtr) (p->ptr[i])); - break; - case KML_DYN_ATTRIB: - kml_free_attrib ((kmlAttrPtr) (p->ptr[i])); - break; - }; - } - } - /* deleting the map block */ - pn = p->next; - free (p); - p = pn; - } -} - -static kmlDynamicPolygonPtr -kml_alloc_dyn_polygon (struct kml_data *p_data) -{ -/* creating a dynamic polygon (ring collection) */ - kmlDynamicPolygonPtr p = malloc (sizeof (kmlDynamicPolygon)); - kmlMapDynAlloc (p_data, KML_DYN_DYNPG, p); - p->first = NULL; - p->last = NULL; - return p; -} - -static void -kml_add_polygon_ring (kmlDynamicPolygonPtr dyn_pg, gaiaDynamicLinePtr dyn, - int interior, int has_z) -{ -/* inserting a further ring into the collection (dynamic polygon) */ - kmlDynamicRingPtr p = malloc (sizeof (kmlDynamicRing)); - p->ring = dyn; - p->interior = interior; - p->has_z = has_z; - p->next = NULL; - if (dyn_pg->first == NULL) - dyn_pg->first = p; - if (dyn_pg->last != NULL) - dyn_pg->last->next = p; - dyn_pg->last = p; -} - -static void -kml_freeString (char **ptr) -{ -/* releasing a string from the lexer */ - if (*ptr != NULL) - free (*ptr); - *ptr = NULL; -} - -static void -kml_saveString (char **ptr, const char *str) -{ -/* saving a string from the lexer */ - int len = strlen (str); - kml_freeString (ptr); - *ptr = malloc (len + 1); - strcpy (*ptr, str); -} - -static kmlCoordPtr -kml_coord (struct kml_data *p_data, void *value) -{ -/* creating a coord Item */ - int len; - kmlFlexToken *tok = (kmlFlexToken *) value; - kmlCoordPtr c = malloc (sizeof (kmlCoord)); - kmlMapDynAlloc (p_data, KML_DYN_COORD, c); - len = strlen (tok->value); - c->Value = malloc (len + 1); - strcpy (c->Value, tok->value); - c->Next = NULL; - return c; -} - -static kmlAttrPtr -kml_attribute (struct kml_data *p_data, void *key, void *value) -{ -/* creating an attribute */ - int len; - kmlFlexToken *k_tok = (kmlFlexToken *) key; - kmlFlexToken *v_tok = (kmlFlexToken *) value; - kmlAttrPtr a = malloc (sizeof (kmlAttr)); - kmlMapDynAlloc (p_data, KML_DYN_ATTRIB, a); - len = strlen (k_tok->value); - a->Key = malloc (len + 1); - strcpy (a->Key, k_tok->value); - len = strlen (v_tok->value); -/* we need to de-quote the string, removing first and last ".." */ - if (*(v_tok->value + 0) == '"' && *(v_tok->value + len - 1) == '"') - { - a->Value = malloc (len - 1); - memcpy (a->Value, v_tok->value + 1, len - 1); - *(a->Value + len - 1) = '\0'; - } - else - { - a->Value = malloc (len + 1); - strcpy (a->Value, v_tok->value); - } - a->Next = NULL; - return a; -} - -static void -kml_freeTree (kmlNodePtr t) -{ -/* deleting a KML tree */ - kmlNodePtr n; - kmlNodePtr nn; - n = t; - while (n) - { - nn = n->Next; - kml_free_node (n); - n = nn; - } -} - -static kmlNodePtr -kml_createNode (struct kml_data *p_data, void *tag, void *attributes, - void *coords) -{ -/* creating a node */ - kmlAttrPtr a; - kmlCoordPtr c; - int len; - kmlFlexToken *tok = (kmlFlexToken *) tag; - kmlNodePtr n = malloc (sizeof (kmlNode)); - kmlMapDynAlloc (p_data, KML_DYN_NODE, n); - len = strlen (tok->value); - n->Tag = malloc (len + 1); - strcpy (n->Tag, tok->value); - n->Type = KML_PARSER_OPEN_NODE; - n->Error = 0; - a = (kmlAttrPtr) attributes; - while (a) - { - /* transferring ownership of attributes */ - kmlMapDynClean (p_data, a); - a = a->Next; - } - n->Attributes = attributes; - c = (kmlCoordPtr) coords; - while (c) - { - /* transferring ownership of attributes */ - kmlMapDynClean (p_data, c); - c = c->Next; - } - n->Coordinates = coords; - n->Next = NULL; - return n; -} - -static kmlNodePtr -kml_createSelfClosedNode (struct kml_data *p_data, void *tag, void *attributes) -{ -/* creating a self-closed node */ - kmlAttrPtr a; - int len; - kmlFlexToken *tok = (kmlFlexToken *) tag; - kmlNodePtr n = malloc (sizeof (kmlNode)); - kmlMapDynAlloc (p_data, KML_DYN_NODE, n); - len = strlen (tok->value); - n->Tag = malloc (len + 1); - strcpy (n->Tag, tok->value); - n->Type = KML_PARSER_SELF_CLOSED_NODE; - n->Error = 0; - a = (kmlAttrPtr) attributes; - while (a) - { - /* transferring ownership of attributes */ - kmlMapDynClean (p_data, a); - a = a->Next; - } - n->Attributes = attributes; - n->Coordinates = NULL; - n->Next = NULL; - return n; -} - -static kmlNodePtr -kml_closingNode (struct kml_data *p_data, void *tag) -{ -/* creating a closing node */ - int len; - kmlFlexToken *tok = (kmlFlexToken *) tag; - kmlNodePtr n = malloc (sizeof (kmlNode)); - kmlMapDynAlloc (p_data, KML_DYN_NODE, n); - len = strlen (tok->value); - n->Tag = malloc (len + 1); - strcpy (n->Tag, tok->value); - n->Type = KML_PARSER_CLOSED_NODE; - n->Error = 0; - n->Attributes = NULL; - n->Coordinates = NULL; - n->Next = NULL; - return n; -} - -static int -kml_cleanup (kmlFlexToken * token) -{ - kmlFlexToken *ptok; - kmlFlexToken *ptok_n; - if (token == NULL) - return 0; - ptok = token; - while (ptok) - { - ptok_n = ptok->Next; - if (ptok->value != NULL) - free (ptok->value); - free (ptok); - ptok = ptok_n; - } - return 0; -} - -static void -kml_xferString (char **p, const char *str) -{ -/* saving some token */ - int len; - if (str == NULL) - { - *p = NULL; - return; - } - len = strlen (str); - *p = malloc (len + 1); - strcpy (*p, str); -} - -static int -guessKmlGeometryType (kmlNodePtr node) -{ -/* attempting to guess the Geometry Type for a KML node */ - int type = GAIA_KML_UNKNOWN; - if (strcmp (node->Tag, "Point") == 0) - type = GAIA_KML_POINT; - if (strcmp (node->Tag, "LineString") == 0) - type = GAIA_KML_LINESTRING; - if (strcmp (node->Tag, "Polygon") == 0) - type = GAIA_KML_POLYGON; - if (strcmp (node->Tag, "MultiGeometry") == 0) - type = GAIA_KML_MULTIGEOMETRY; - return type; -} - -static int -kml_check_coord (const char *value) -{ -/* checking a KML coordinate */ - int decimal = 0; - const char *p = value; - if (*p == '+' || *p == '-') - p++; - while (*p != '\0') - { - if (*p == '.') - { - if (!decimal) - decimal = 1; - else - return 0; - } - else if (*p >= '0' && *p <= '9') - ; - else - return 0; - p++; - } - return 1; -} - -static int -kml_extract_coords (const char *value, double *x, double *y, double *z, - int *count) -{ -/* extracting KML coords from a comma-separated string */ - const char *in = value; - char buf[1024]; - char *out = buf; - *out = '\0'; - - while (*in != '\0') - { - if (*in == ',') - { - *out = '\0'; - if (*buf != '\0') - { - if (!kml_check_coord (buf)) - return 0; - switch (*count) - { - case 0: - *x = atof (buf); - *count += 1; - break; - case 1: - *y = atof (buf); - *count += 1; - break; - case 2: - *z = atof (buf); - *count += 1; - break; - default: - *count += 1; - break; - }; - } - in++; - out = buf; - *out = '\0'; - continue; - } - *out++ = *in++; - } - *out = '\0'; -/* parsing the last item */ - if (*buf != '\0') - { - if (!kml_check_coord (buf)) - return 0; - switch (*count) - { - case 0: - *x = atof (buf); - *count += 1; - break; - case 1: - *y = atof (buf); - *count += 1; - break; - case 2: - *z = atof (buf); - *count += 1; - break; - default: - *count += 1; - break; - }; - } - return 1; -} - -static int -kml_parse_point_v2 (kmlCoordPtr coord, double *x, double *y, double *z, - int *has_z) -{ -/* parsing KML [Point] */ - int count = 0; - kmlCoordPtr c = coord; - while (c) - { - if (!kml_extract_coords (c->Value, x, y, z, &count)) - return 0; - c = c->Next; - } - if (count == 2) - { - *has_z = 0; - return 1; - } - if (count == 3) - { - *has_z = 1; - return 1; - } - return 0; -} - -static int -kml_parse_point (struct kml_data *p_data, gaiaGeomCollPtr geom, kmlNodePtr node, - kmlNodePtr * next) -{ -/* parsing a */ - double x; - double y; - double z; - int has_z; - gaiaGeomCollPtr pt; - gaiaGeomCollPtr last; - - if (strcmp (node->Tag, "coordinates") == 0) - { - /* parsing a KML */ - if (!kml_parse_point_v2 (node->Coordinates, &x, &y, &z, &has_z)) - return 0; - node = node->Next; - if (node == NULL) - return 0; - if (strcmp (node->Tag, "coordinates") == 0) - ; - else - return 0; - node = node->Next; - if (node == NULL) - return 0; - if (strcmp (node->Tag, "Point") == 0) - ; - else - return 0; - *next = node->Next; - goto ok; - } - return 0; - - ok: -/* ok, KML nodes match as expected */ - if (has_z) - { - pt = gaiaAllocGeomCollXYZ (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pt); - gaiaAddPointToGeomCollXYZ (pt, x, y, z); - } - else - { - pt = gaiaAllocGeomColl (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pt); - gaiaAddPointToGeomColl (pt, x, y); - } - last = geom; - while (1) - { - /* searching the last Geometry within chain */ - if (last->Next == NULL) - break; - last = last->Next; - } - last->Next = pt; - return 1; -} - -static int -kml_extract_multi_coord (const char *value, double *x, double *y, double *z, - int *count, int *follow) -{ -/* extracting KML coords from a comma-separated string */ - const char *in = value; - char buf[1024]; - char *out = buf; - int last; - *out = '\0'; - while (*in != '\0') - { - last = *in; - if (*in == ',') - { - *out = '\0'; - if (*buf != '\0') - { - if (!kml_check_coord (buf)) - return 0; - switch (*count) - { - case 0: - *x = atof (buf); - *count += 1; - break; - case 1: - *y = atof (buf); - *count += 1; - break; - case 2: - *z = atof (buf); - *count += 1; - break; - default: - *count += 1; - break; - }; - } - in++; - out = buf; - *out = '\0'; - continue; - } - *out++ = *in++; - } - *out = '\0'; -/* parsing the last item */ - if (*buf != '\0') - { - if (!kml_check_coord (buf)) - return 0; - switch (*count) - { - case 0: - *x = atof (buf); - *count += 1; - break; - case 1: - *y = atof (buf); - *count += 1; - break; - case 2: - *z = atof (buf); - *count += 1; - break; - default: - *count += 1; - break; - }; - } - if (last == ',') - *follow = 1; - else - *follow = 0; - return 1; -} - -static int -kml_extract_multi_coords (kmlCoordPtr coord, double *x, double *y, double *z, - int *count, kmlCoordPtr * next) -{ -/* extracting KML coords from a comma-separated string */ - int follow; - kmlCoordPtr c = coord; - while (c) - { - if (!kml_extract_multi_coord (c->Value, x, y, z, count, &follow)) - return 0; - if (!follow && c->Next != NULL) - { - if (*(c->Next->Value) == ',') - follow = 1; - } - if (follow) - c = c->Next; - else - { - *next = c->Next; - break; - } - } - return 1; -} - -static void -kml_add_point_to_line (gaiaDynamicLinePtr dyn, double x, double y) -{ -/* appending a point */ - gaiaAppendPointToDynamicLine (dyn, x, y); -} - -static void -kml_add_point_to_lineZ (gaiaDynamicLinePtr dyn, double x, double y, double z) -{ -/* appending a point */ - gaiaAppendPointZToDynamicLine (dyn, x, y, z); -} - -static int -kml_parse_coordinates (kmlCoordPtr coord, gaiaDynamicLinePtr dyn, int *has_z) -{ -/* parsing KML [Linestring or Ring] */ - int count = 0; - double x; - double y; - double z; - kmlCoordPtr next; - kmlCoordPtr c = coord; - while (c) - { - if (!kml_extract_multi_coords (c, &x, &y, &z, &count, &next)) - return 0; - if (count == 2) - { - *has_z = 0; - kml_add_point_to_line (dyn, x, y); - count = 0; - } - else if (count == 3) - { - kml_add_point_to_lineZ (dyn, x, y, z); - count = 0; - } - else - return 0; - c = next; - } - return 1; -} - -static int -kml_count_dyn_points (gaiaDynamicLinePtr dyn) -{ -/* count how many vertices are into sone linestring/ring */ - int iv = 0; - gaiaPointPtr pt = dyn->First; - while (pt) - { - iv++; - pt = pt->Next; - } - return iv; -} - -static int -kml_parse_linestring (struct kml_data *p_data, gaiaGeomCollPtr geom, - kmlNodePtr node, kmlNodePtr * next) -{ -/* parsing a */ - gaiaGeomCollPtr ln; - gaiaGeomCollPtr last; - gaiaLinestringPtr new_ln; - gaiaPointPtr pt; - int iv; - int has_z = 1; - int points = 0; - gaiaDynamicLinePtr dyn = gaiaAllocDynamicLine (); - kmlMapDynAlloc (p_data, KML_DYN_DYNLINE, dyn); - - if (strcmp (node->Tag, "coordinates") == 0) - { - /* parsing a KML */ - if (!kml_parse_coordinates (node->Coordinates, dyn, &has_z)) - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "coordinates") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "LineString") == 0) - ; - else - goto error; - *next = node->Next; - } - -/* ok, KML nodes match as expected */ - points = kml_count_dyn_points (dyn); - if (points < 2) - goto error; - if (has_z) - { - ln = gaiaAllocGeomCollXYZ (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, ln); - new_ln = gaiaAddLinestringToGeomColl (ln, points); - pt = dyn->First; - iv = 0; - while (pt) - { - gaiaSetPointXYZ (new_ln->Coords, iv, pt->X, pt->Y, pt->Z); - iv++; - pt = pt->Next; - } - } - else - { - ln = gaiaAllocGeomColl (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, ln); - new_ln = gaiaAddLinestringToGeomColl (ln, points); - pt = dyn->First; - iv = 0; - while (pt) - { - gaiaSetPoint (new_ln->Coords, iv, pt->X, pt->Y); - iv++; - pt = pt->Next; - } - } - last = geom; - while (1) - { - /* searching the last Geometry within chain */ - if (last->Next == NULL) - break; - last = last->Next; - } - last->Next = ln; - gaiaFreeDynamicLine (dyn); - return 1; - - error: - gaiaFreeDynamicLine (dyn); - return 0; -} - -static gaiaDynamicLinePtr -kml_parse_ring (kmlNodePtr node, int *interior, int *has_z, kmlNodePtr * next) -{ -/* parsing a generic KML ring */ - gaiaDynamicLinePtr dyn = gaiaAllocDynamicLine (); - *has_z = 1; - - if (strcmp (node->Tag, "outerBoundaryIs") == 0) - { - /* parsing a KML */ - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "LinearRing") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "coordinates") == 0) - { - /* parsing a KML */ - if (!kml_parse_coordinates (node->Coordinates, dyn, has_z)) - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "coordinates") == 0) - ; - else - goto error; - } - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "LinearRing") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "outerBoundaryIs") == 0) - ; - else - goto error; - *interior = 0; - *next = node->Next; - return dyn; - } - if (strcmp (node->Tag, "innerBoundaryIs") == 0) - { - /* parsing a KML */ - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "LinearRing") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "coordinates") == 0) - { - /* parsing a KML */ - if (!kml_parse_coordinates (node->Coordinates, dyn, has_z)) - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "coordinates") == 0) - ; - else - goto error; - } - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "LinearRing") == 0) - ; - else - goto error; - node = node->Next; - if (node == NULL) - goto error; - if (strcmp (node->Tag, "innerBoundaryIs") == 0) - ; - else - goto error; - *interior = 1; - *next = node->Next; - return dyn; - } - - error: - gaiaFreeDynamicLine (dyn); - return 0; -} - -static int -kml_parse_polygon (struct kml_data *p_data, gaiaGeomCollPtr geom, - kmlNodePtr node, kmlNodePtr * next_n) -{ -/* parsing a */ - int interior; - int has_z; - int inners; - int outers; - int points; - int iv; - int ib = 0; - gaiaGeomCollPtr pg; - gaiaGeomCollPtr last_g; - gaiaPolygonPtr new_pg; - gaiaRingPtr ring; - gaiaDynamicLinePtr dyn; - gaiaPointPtr pt; - gaiaDynamicLinePtr exterior_ring; - kmlNodePtr next; - kmlDynamicRingPtr dyn_rng; - kmlDynamicPolygonPtr dyn_pg = kml_alloc_dyn_polygon (p_data); - kmlNodePtr n = node; - while (n) - { - /* looping on rings */ - if (strcmp (n->Tag, "Polygon") == 0) - { - *next_n = n->Next; - break; - } - dyn = kml_parse_ring (n, &interior, &has_z, &next); - if (dyn == NULL) - goto error; - if (kml_count_dyn_points (dyn) < 4) - { - /* cannot be a valid ring */ - goto error; - } - /* checking if the ring is closed */ - if (has_z) - { - if (dyn->First->X == dyn->Last->X - && dyn->First->Y == dyn->Last->Y - && dyn->First->Z == dyn->Last->Z) - ; - else - goto error; - } - else - { - if (dyn->First->X == dyn->Last->X - && dyn->First->Y == dyn->Last->Y) - ; - else - goto error; - } - kml_add_polygon_ring (dyn_pg, dyn, interior, has_z); - n = next; - } -/* ok, KML nodes match as expected */ - inners = 0; - outers = 0; - has_z = 1; - dyn_rng = dyn_pg->first; - while (dyn_rng) - { - /* verifying the rings collection */ - if (dyn_rng->has_z == 0) - has_z = 0; - if (dyn_rng->interior) - inners++; - else - { - outers++; - points = kml_count_dyn_points (dyn_rng->ring); - exterior_ring = dyn_rng->ring; - } - dyn_rng = dyn_rng->next; - } - if (outers != 1) /* no exterior ring declared */ - goto error; - - if (has_z) - { - pg = gaiaAllocGeomCollXYZ (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - new_pg = gaiaAddPolygonToGeomColl (pg, points, inners); - /* initializing the EXTERIOR RING */ - ring = new_pg->Exterior; - pt = exterior_ring->First; - iv = 0; - while (pt) - { - gaiaSetPointXYZ (ring->Coords, iv, pt->X, pt->Y, pt->Z); - iv++; - pt = pt->Next; - } - dyn_rng = dyn_pg->first; - while (dyn_rng) - { - /* initializing any INTERIOR RING */ - if (dyn_rng->interior == 0) - { - dyn_rng = dyn_rng->next; - continue; - } - points = kml_count_dyn_points (dyn_rng->ring); - ring = gaiaAddInteriorRing (new_pg, ib, points); - ib++; - pt = dyn_rng->ring->First; - iv = 0; - while (pt) - { - gaiaSetPointXYZ (ring->Coords, iv, pt->X, pt->Y, pt->Z); - iv++; - pt = pt->Next; - } - dyn_rng = dyn_rng->next; - } - } - else - { - pg = gaiaAllocGeomColl (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - new_pg = gaiaAddPolygonToGeomColl (pg, points, inners); - /* initializing the EXTERIOR RING */ - ring = new_pg->Exterior; - pt = exterior_ring->First; - iv = 0; - while (pt) - { - gaiaSetPoint (ring->Coords, iv, pt->X, pt->Y); - iv++; - pt = pt->Next; - } - dyn_rng = dyn_pg->first; - while (dyn_rng) - { - /* initializing any INTERIOR RING */ - if (dyn_rng->interior == 0) - { - dyn_rng = dyn_rng->next; - continue; - } - points = kml_count_dyn_points (dyn_rng->ring); - ring = gaiaAddInteriorRing (new_pg, ib, points); - ib++; - pt = dyn_rng->ring->First; - iv = 0; - while (pt) - { - gaiaSetPoint (ring->Coords, iv, pt->X, pt->Y); - iv++; - pt = pt->Next; - } - dyn_rng = dyn_rng->next; - } - } - - last_g = geom; - while (1) - { - /* searching the last Geometry within chain */ - if (last_g->Next == NULL) - break; - last_g = last_g->Next; - } - last_g->Next = pg; - kml_free_dyn_polygon (dyn_pg); - return 1; - - error: - kml_free_dyn_polygon (dyn_pg); - return 0; -} - -static int -kml_parse_multi_geometry (struct kml_data *p_data, gaiaGeomCollPtr geom, - kmlNodePtr node) -{ -/* parsing a */ - kmlNodePtr next; - kmlNodePtr n = node; - while (n) - { - /* looping on Geometry Members */ - if (n->Next == NULL) - { - /* verifying the last KML node */ - if (strcmp (n->Tag, "MultiGeometry") == 0) - break; - else - return 0; - } - if (strcmp (n->Tag, "Point") == 0) - { - n = n->Next; - if (n == NULL) - return 0; - if (!kml_parse_point (p_data, geom, n, &next)) - return 0; - n = next; - continue; - } - else if (strcmp (n->Tag, "LineString") == 0) - { - n = n->Next; - if (n == NULL) - return 0; - if (!kml_parse_linestring (p_data, geom, n, &next)) - return 0; - n = next; - continue; - } - else if (strcmp (n->Tag, "Polygon") == 0) - { - n = n->Next; - if (n == NULL) - return 0; - if (!kml_parse_polygon (p_data, geom, n, &next)) - return 0; - n = next; - continue; - } - else - return 0; - } - return 1; -} - -static gaiaGeomCollPtr -kml_validate_geometry (struct kml_data *p_data, gaiaGeomCollPtr chain) -{ - int xy = 0; - int xyz = 0; - int pts = 0; - int lns = 0; - int pgs = 0; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaPointPtr save_pt; - gaiaLinestringPtr save_ln; - gaiaPolygonPtr save_pg; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - int ib; - gaiaGeomCollPtr g; - gaiaGeomCollPtr geom; - - g = chain; - while (g) - { - if (g != chain) - { - if (g->DimensionModel == GAIA_XY) - xy++; - if (g->DimensionModel == GAIA_XY_Z) - xyz++; - } - pt = g->FirstPoint; - while (pt) - { - pts++; - save_pt = pt; - pt = pt->Next; - } - ln = g->FirstLinestring; - while (ln) - { - lns++; - save_ln = ln; - ln = ln->Next; - } - pg = g->FirstPolygon; - while (pg) - { - pgs++; - save_pg = pg; - pg = pg->Next; - } - g = g->Next; - } - if (pts == 1 && lns == 0 && pgs == 0) - { - /* POINT */ - if (xy > 0) - { - /* 2D [XY] */ - geom = gaiaAllocGeomColl (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) - geom->DeclaredType = GAIA_MULTIPOINT; - else - geom->DeclaredType = GAIA_POINT; - gaiaAddPointToGeomColl (geom, save_pt->X, save_pt->Y); - return geom; - } - else - { - /* 3D [XYZ] */ - geom = gaiaAllocGeomCollXYZ (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) - geom->DeclaredType = GAIA_MULTIPOINT; - else - geom->DeclaredType = GAIA_POINT; - gaiaAddPointToGeomCollXYZ (geom, save_pt->X, save_pt->Y, - save_pt->Z); - return geom; - } - } - if (pts == 0 && lns == 1 && pgs == 0) - { - /* LINESTRING */ - if (xy > 0) - { - /* 2D [XY] */ - geom = gaiaAllocGeomColl (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - } - else - { - /* 3D [XYZ] */ - geom = gaiaAllocGeomCollXYZ (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - } - if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) - geom->DeclaredType = GAIA_MULTILINESTRING; - else - geom->DeclaredType = GAIA_LINESTRING; - ln = gaiaAddLinestringToGeomColl (geom, save_ln->Points); - gaiaCopyLinestringCoords (ln, save_ln); - return geom; - } - if (pts == 0 && lns == 0 && pgs == 1) - { - /* POLYGON */ - if (xy > 0) - { - /* 2D [XY] */ - geom = gaiaAllocGeomColl (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - } - else - { - /* 3D [XYZ] */ - geom = gaiaAllocGeomCollXYZ (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - } - if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) - geom->DeclaredType = GAIA_MULTIPOLYGON; - else - geom->DeclaredType = GAIA_POLYGON; - i_ring = save_pg->Exterior; - pg = gaiaAddPolygonToGeomColl (geom, i_ring->Points, - save_pg->NumInteriors); - o_ring = pg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < save_pg->NumInteriors; ib++) - { - i_ring = save_pg->Interiors + ib; - o_ring = gaiaAddInteriorRing (pg, ib, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - return geom; - } - if (pts >= 1 && lns == 0 && pgs == 0) - { - /* MULTIPOINT */ - if (xy > 0) - { - /* 2D [XY] */ - geom = gaiaAllocGeomColl (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - geom->DeclaredType = GAIA_MULTIPOINT; - g = chain; - while (g) - { - pt = g->FirstPoint; - while (pt) - { - gaiaAddPointToGeomColl (geom, pt->X, pt->Y); - pt = pt->Next; - } - g = g->Next; - } - return geom; - } - else - { - /* 3D [XYZ] */ - geom = gaiaAllocGeomCollXYZ (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - geom->DeclaredType = GAIA_MULTIPOINT; - g = chain; - while (g) - { - pt = g->FirstPoint; - while (pt) - { - gaiaAddPointToGeomCollXYZ (geom, pt->X, pt->Y, - pt->Z); - pt = pt->Next; - } - g = g->Next; - } - return geom; - } - } - if (pts == 0 && lns >= 1 && pgs == 0) - { - /* MULTILINESTRING */ - if (xy > 0) - { - /* 2D [XY] */ - geom = gaiaAllocGeomColl (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - geom->DeclaredType = GAIA_MULTILINESTRING; - g = chain; - while (g) - { - ln = g->FirstLinestring; - while (ln) - { - save_ln = - gaiaAddLinestringToGeomColl (geom, ln->Points); - gaiaCopyLinestringCoords (save_ln, ln); - ln = ln->Next; - } - g = g->Next; - } - return geom; - } - else - { - /* 3D [XYZ] */ - geom = gaiaAllocGeomCollXYZ (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - geom->DeclaredType = GAIA_MULTILINESTRING; - g = chain; - while (g) - { - ln = g->FirstLinestring; - while (ln) - { - save_ln = - gaiaAddLinestringToGeomColl (geom, ln->Points); - gaiaCopyLinestringCoords (save_ln, ln); - ln = ln->Next; - } - g = g->Next; - } - return geom; - } - } - if (pts == 0 && lns == 0 && pgs >= 1) - { - /* MULTIPOLYGON */ - if (xy > 0) - { - /* 2D [XY] */ - geom = gaiaAllocGeomColl (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - geom->DeclaredType = GAIA_MULTIPOLYGON; - g = chain; - while (g) - { - pg = g->FirstPolygon; - while (pg) - { - i_ring = pg->Exterior; - save_pg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, - pg->NumInteriors); - o_ring = save_pg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < pg->NumInteriors; ib++) - { - i_ring = pg->Interiors + ib; - o_ring = - gaiaAddInteriorRing (save_pg, ib, - i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - pg = pg->Next; - } - g = g->Next; - } - return geom; - } - else - { - /* 3D [XYZ] */ - geom = gaiaAllocGeomCollXYZ (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - geom->DeclaredType = GAIA_MULTIPOLYGON; - g = chain; - while (g) - { - pg = g->FirstPolygon; - while (pg) - { - i_ring = pg->Exterior; - save_pg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, - pg->NumInteriors); - o_ring = save_pg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < pg->NumInteriors; ib++) - { - i_ring = pg->Interiors + ib; - o_ring = - gaiaAddInteriorRing (save_pg, ib, - i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - pg = pg->Next; - } - g = g->Next; - } - return geom; - } - } - if ((pts + lns + pgs) > 0) - { - /* GEOMETRYCOLLECTION */ - if (xy > 0) - { - /* 2D [XY] */ - geom = gaiaAllocGeomColl (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - g = chain; - while (g) - { - pt = g->FirstPoint; - while (pt) - { - gaiaAddPointToGeomColl (geom, pt->X, pt->Y); - pt = pt->Next; - } - ln = g->FirstLinestring; - while (ln) - { - save_ln = - gaiaAddLinestringToGeomColl (geom, ln->Points); - gaiaCopyLinestringCoords (save_ln, ln); - ln = ln->Next; - } - pg = g->FirstPolygon; - while (pg) - { - i_ring = pg->Exterior; - save_pg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, - pg->NumInteriors); - o_ring = save_pg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < pg->NumInteriors; ib++) - { - i_ring = pg->Interiors + ib; - o_ring = - gaiaAddInteriorRing (save_pg, ib, - i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - pg = pg->Next; - } - g = g->Next; - } - return geom; - } - else - { - /* 3D [XYZ] */ - geom = gaiaAllocGeomCollXYZ (); - kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - g = chain; - while (g) - { - pt = g->FirstPoint; - while (pt) - { - gaiaAddPointToGeomCollXYZ (geom, pt->X, pt->Y, - pt->Z); - pt = pt->Next; - } - ln = g->FirstLinestring; - while (ln) - { - save_ln = - gaiaAddLinestringToGeomColl (geom, ln->Points); - gaiaCopyLinestringCoords (save_ln, ln); - ln = ln->Next; - } - pg = g->FirstPolygon; - while (pg) - { - i_ring = pg->Exterior; - save_pg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, - pg->NumInteriors); - o_ring = save_pg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - for (ib = 0; ib < pg->NumInteriors; ib++) - { - i_ring = pg->Interiors + ib; - o_ring = - gaiaAddInteriorRing (save_pg, ib, - i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - pg = pg->Next; - } - g = g->Next; - } - return geom; - } - } - return NULL; -} - -static void -kml_free_geom_chain (gaiaGeomCollPtr geom) -{ -/* deleting a chain of preliminary geometries */ - gaiaGeomCollPtr gn; - while (geom) - { - gn = geom->Next; - gaiaFreeGeomColl (geom); - geom = gn; - } -} - -static gaiaGeomCollPtr -kml_build_geometry (struct kml_data *p_data, kmlNodePtr tree) -{ -/* attempting to build a geometry from KML nodes */ - gaiaGeomCollPtr geom; - gaiaGeomCollPtr result; - int geom_type; - kmlNodePtr next; - - if (tree == NULL) - return NULL; - geom_type = guessKmlGeometryType (tree); - if (geom_type == GAIA_KML_UNKNOWN) - { - /* unsupported main geometry type */ - return NULL; - } -/* creating the main geometry */ - geom = gaiaAllocGeomColl (); - - switch (geom_type) - { - /* parsing KML nodes accordingly with declared KML type */ - case GAIA_KML_POINT: - geom->DeclaredType = GAIA_POINT; - if (!kml_parse_point (p_data, geom, tree->Next, &next)) - goto error; - break; - case GAIA_KML_LINESTRING: - geom->DeclaredType = GAIA_LINESTRING; - if (!kml_parse_linestring (p_data, geom, tree->Next, &next)) - goto error; - break; - case GAIA_KML_POLYGON: - geom->DeclaredType = GAIA_POLYGON; - if (!kml_parse_polygon (p_data, geom, tree->Next, &next)) - goto error; - if (next != NULL) - goto error; - break; - case GAIA_KML_MULTIGEOMETRY: - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - if (!kml_parse_multi_geometry (p_data, geom, tree->Next)) - goto error; - break; - }; - -/* attempting to build the final geometry */ - result = kml_validate_geometry (p_data, geom); - if (result == NULL) - goto error; - kml_free_geom_chain (geom); - return result; - - error: - kml_free_geom_chain (geom); - return NULL; -} - - - -/* -** CAVEAT: we must redefine any Lemon/Flex own macro -*/ -#define YYMINORTYPE KML_MINORTYPE -#define YY_CHAR KML_YY_CHAR -#define input kml_input -#define ParseAlloc kmlParseAlloc -#define ParseFree kmlParseFree -#define ParseStackPeak kmlParseStackPeak -#define Parse kmlParse -#define yyStackEntry kml_yyStackEntry -#define yyzerominor kml_yyzerominor -#define yy_accept kml_yy_accept -#define yy_action kml_yy_action -#define yy_base kml_yy_base -#define yy_buffer_stack kml_yy_buffer_stack -#define yy_buffer_stack_max kml_yy_buffer_stack_max -#define yy_buffer_stack_top kml_yy_buffer_stack_top -#define yy_c_buf_p kml_yy_c_buf_p -#define yy_chk kml_yy_chk -#define yy_def kml_yy_def -#define yy_default kml_yy_default -#define yy_destructor kml_yy_destructor -#define yy_ec kml_yy_ec -#define yy_fatal_error kml_yy_fatal_error -#define yy_find_reduce_action kml_yy_find_reduce_action -#define yy_find_shift_action kml_yy_find_shift_action -#define yy_get_next_buffer kml_yy_get_next_buffer -#define yy_get_previous_state kml_yy_get_previous_state -#define yy_init kml_yy_init -#define yy_init_globals kml_yy_init_globals -#define yy_lookahead kml_yy_lookahead -#define yy_meta kml_yy_meta -#define yy_nxt kml_yy_nxt -#define yy_parse_failed kml_yy_parse_failed -#define yy_pop_parser_stack kml_yy_pop_parser_stack -#define yy_reduce kml_yy_reduce -#define yy_reduce_ofst kml_yy_reduce_ofst -#define yy_shift kml_yy_shift -#define yy_shift_ofst kml_yy_shift_ofst -#define yy_start kml_yy_start -#define yy_state_type kml_yy_state_type -#define yy_syntax_error kml_yy_syntax_error -#define yy_trans_info kml_yy_trans_info -#define yy_try_NUL_trans kml_yy_try_NUL_trans -#define yyParser kml_yyParser -#define yyStackEntry kml_yyStackEntry -#define yyStackOverflow kml_yyStackOverflow -#define yyRuleInfo kml_yyRuleInfo -#define yyunput kml_yyunput -#define yyzerominor kml_yyzerominor -#define yyTraceFILE kml_yyTraceFILE -#define yyTracePrompt kml_yyTracePrompt -#define yyTokenName kml_yyTokenName -#define yyRuleName kml_yyRuleName -#define ParseTrace kml_ParseTrace - -#define yylex kml_yylex -#define YY_DECL int yylex (yyscan_t yyscanner) - - -/* including LEMON generated header */ -#include "Kml.h" - - -typedef union -{ - char *pval; - struct symtab *symp; -} kml_yystype; -#define YYSTYPE kml_yystype - - -/* extern YYSTYPE yylval; */ -YYSTYPE KmlLval; - - - -/* including LEMON generated code */ -#include "Kml.c" - - - -/* -** CAVEAT: there is an incompatibility between LEMON and FLEX -** this macro resolves the issue -*/ -#undef yy_accept -#define yy_accept yy_kml_flex_accept - - - -/* including FLEX generated code */ -#include "lex.Kml.c" - - - -gaiaGeomCollPtr -gaiaParseKml (const unsigned char *dirty_buffer) -{ - void *pParser = ParseAlloc (malloc); - /* Linked-list of token values */ - kmlFlexToken *tokens = malloc (sizeof (kmlFlexToken)); - /* Pointer to the head of the list */ - kmlFlexToken *head = tokens; - int yv; - gaiaGeomCollPtr geom = NULL; - yyscan_t scanner; - struct kml_data str_data; - -/* initializing the helper structs */ - str_data.kml_line = 1; - str_data.kml_col = 1; - str_data.kml_parse_error = 0; - str_data.kml_first_dyn_block = NULL; - str_data.kml_last_dyn_block = NULL; - str_data.result = NULL; - -/* initializing the scanner state */ - Kmllex_init_extra (&str_data, &scanner); - - KmlLval.pval = NULL; - tokens->value = NULL; - tokens->Next = NULL; - Kml_scan_string ((char *) dirty_buffer, scanner); - - /* - / Keep tokenizing until we reach the end - / yylex() will return the next matching Token for us. - */ - while ((yv = yylex (scanner)) != 0) - { - if (yv == -1) - { - str_data.kml_parse_error = 1; - break; - } - tokens->Next = malloc (sizeof (kmlFlexToken)); - tokens->Next->Next = NULL; - /* - /KmlLval is a global variable from FLEX. - /KmlLval is defined in kmlLexglobal.h - */ - kml_xferString (&(tokens->Next->value), KmlLval.pval); - /* Pass the token to the wkt parser created from lemon */ - Parse (pParser, yv, &(tokens->Next->value), &str_data); - tokens = tokens->Next; - } - /* This denotes the end of a line as well as the end of the parser */ - Parse (pParser, KML_NEWLINE, 0, &str_data); - ParseFree (pParser, free); - Kmllex_destroy (scanner); - - /* Assigning the token as the end to avoid seg faults while cleaning */ - tokens->Next = NULL; - kml_cleanup (head); - kml_freeString (&(KmlLval.pval)); - - if (str_data.kml_parse_error) - { - if (str_data.result) - { - /* if a Geometry-result has been produced, the stack is already cleaned */ - kml_freeTree (str_data.result); - kmlCleanMapDynAlloc (&str_data, 0); - } - else - { - /* otherwise we are required to clean the stack */ - kmlCleanMapDynAlloc (&str_data, 1); - } - return NULL; - } - - if (str_data.result == NULL) - { - kmlCleanMapDynAlloc (&str_data, 0); - return NULL; - } - - /* attempting to build a geometry from KML */ - geom = kml_build_geometry (&str_data, str_data.result); - geom->Srid = 4326; - kml_freeTree (str_data.result); - kmlCleanMapDynAlloc (&str_data, 0); - return geom; -} - - -/* -** CAVEAT: we must now undefine any Lemon/Flex own macro -*/ -#undef YYNOCODE -#undef YYNSTATE -#undef YYNRULE -#undef YY_SHIFT_MAX -#undef YY_REDUCE_USE_DFLT -#undef YY_REDUCE_MAX -#undef YY_FLUSH_BUFFER -#undef YY_DO_BEFORE_ACTION -#undef YY_NUM_RULES -#undef YY_END_OF_BUFFER -#undef YY_END_FILE -#undef YYACTIONTYPE -#undef YY_SZ_ACTTAB -#undef YY_NEW_FILE -#undef BEGIN -#undef YY_START -#undef YY_CURRENT_BUFFER -#undef YY_CURRENT_BUFFER_LVALUE -#undef YY_STATE_BUF_SIZE -#undef YY_DECL -#undef YY_FATAL_ERROR -#undef YYMINORTYPE -#undef YY_CHAR -#undef YYSTYPE -#undef input -#undef ParseAlloc -#undef ParseFree -#undef ParseStackPeak -#undef Parse -#undef yyalloc -#undef yyfree -#undef yyin -#undef yyleng -#undef yyless -#undef yylex -#undef yylineno -#undef yyout -#undef yyrealloc -#undef yyrestart -#undef yyStackEntry -#undef yytext -#undef yywrap -#undef yyzerominor -#undef yy_accept -#undef yy_action -#undef yy_base -#undef yy_buffer_stack -#undef yy_buffer_stack_max -#undef yy_buffer_stack_top -#undef yy_c_buf_p -#undef yy_chk -#undef yy_create_buffer -#undef yy_def -#undef yy_default -#undef yy_delete_buffer -#undef yy_destructor -#undef yy_ec -#undef yy_fatal_error -#undef yy_find_reduce_action -#undef yy_find_shift_action -#undef yy_flex_debug -#undef yy_flush_buffer -#undef yy_get_next_buffer -#undef yy_get_previous_state -#undef yy_init -#undef yy_init_buffer -#undef yy_init_globals -#undef yy_load_buffer -#undef yy_load_buffer_state -#undef yy_lookahead -#undef yy_meta -#undef yy_new_buffer -#undef yy_nxt -#undef yy_parse_failed -#undef yy_pop_parser_stack -#undef yy_reduce -#undef yy_reduce_ofst -#undef yy_set_bol -#undef yy_set_interactive -#undef yy_shift -#undef yy_shift_ofst -#undef yy_start -#undef yy_state_type -#undef yy_switch_to_buffer -#undef yy_syntax_error -#undef yy_trans_info -#undef yy_try_NUL_trans -#undef yyParser -#undef yyStackEntry -#undef yyStackOverflow -#undef yyRuleInfo -#undef yytext_ptr -#undef yyunput -#undef yyzerominor -#undef ParseARG_SDECL -#undef ParseARG_PDECL -#undef ParseARG_FETCH -#undef ParseARG_STORE -#undef REJECT -#undef yymore -#undef YY_MORE_ADJ -#undef YY_RESTORE_YY_MORE_OFFSET -#undef YY_LESS_LINENO -#undef yyTracePrompt -#undef yyTraceFILE -#undef yyTokenName -#undef yyRuleName -#undef ParseTrace - -#undef yylex -#undef YY_DECL diff --git a/src/spatialite/src/gaiageo/gg_lwgeom.c b/src/spatialite/src/gaiageo/gg_lwgeom.c deleted file mode 100644 index 11875a5..0000000 --- a/src/spatialite/src/gaiageo/gg_lwgeom.c +++ /dev/null @@ -1,1762 +0,0 @@ -/* - - gg_lwgeom.c -- Gaia LWGEOM support - - version 4.0, 2012 August 19 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -/* - -CREDITS: - -this module (wrapping liblwgeom APIs) has been entierely funded by: -Regione Toscana - Settore Sistema Informativo Territoriale ed Ambientale - -*/ - -#include "config.h" - -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include -#include -#include -#include - -#ifdef ENABLE_LWGEOM /* enabling LWGEOM support */ - -#include - -const char splitelwgeomversion[] = LIBLWGEOM_VERSION; - -SPATIALITE_PRIVATE const char * -splite_lwgeom_version (void) -{ - return splitelwgeomversion; -} - -void -lwgeom_init_allocators (void) -{ -/* Set up liblwgeom to run in stand-alone mode using the -* usual system memory handling functions. */ - lwalloc_var = default_allocator; - lwrealloc_var = default_reallocator; - lwfree_var = default_freeor; - lwnotice_var = default_noticereporter; - lwerror_var = default_errorreporter; -} - -static LWGEOM * -toLWGeom (const gaiaGeomCollPtr gaia) -{ -/* converting a GAIA Geometry into a LWGEOM Geometry */ - int pts = 0; - int lns = 0; - int pgs = 0; - int has_z; - int has_m; - int ngeoms; - int numg; - int ib; - int iv; - int type; - double x; - double y; - double z; - double m; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - POINTARRAY *pa; - POINTARRAY **ppaa; - POINT4D point; - LWGEOM **geoms; - - if (!gaia) - return NULL; - pt = gaia->FirstPoint; - while (pt) - { - /* counting how many POINTs are there */ - pts++; - pt = pt->Next; - } - ln = gaia->FirstLinestring; - while (ln) - { - /* counting how many LINESTRINGs are there */ - lns++; - ln = ln->Next; - } - pg = gaia->FirstPolygon; - while (pg) - { - /* counting how many POLYGONs are there */ - pgs++; - pg = pg->Next; - } - if (pts == 0 && lns == 0 && pgs == 0) - return NULL; - - if (pts == 1 && lns == 0 && pgs == 0) - { - /* single Point */ - pt = gaia->FirstPoint; - has_z = 0; - has_m = 0; - if (gaia->DimensionModel == GAIA_XY_Z - || gaia->DimensionModel == GAIA_XY_Z_M) - has_z = 1; - if (gaia->DimensionModel == GAIA_XY_M - || gaia->DimensionModel == GAIA_XY_Z_M) - has_m = 1; - pa = ptarray_construct (has_z, has_m, 1); - point.x = pt->X; - point.y = pt->Y; - if (has_z) - point.z = pt->Z; - if (has_m) - point.m = pt->M; - ptarray_set_point4d (pa, 0, &point); - return (LWGEOM *) lwpoint_construct (gaia->Srid, NULL, pa); - } - else if (pts == 0 && lns == 1 && pgs == 0) - { - /* single Linestring */ - ln = gaia->FirstLinestring; - has_z = 0; - has_m = 0; - if (gaia->DimensionModel == GAIA_XY_Z - || gaia->DimensionModel == GAIA_XY_Z_M) - has_z = 1; - if (gaia->DimensionModel == GAIA_XY_M - || gaia->DimensionModel == GAIA_XY_Z_M) - has_m = 1; - pa = ptarray_construct (has_z, has_m, ln->Points); - for (iv = 0; iv < ln->Points; iv++) - { - /* copying vertices */ - if (gaia->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - } - else if (gaia->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - } - else if (gaia->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - point.x = x; - point.y = y; - if (has_z) - point.z = z; - if (has_m) - point.m = m; - ptarray_set_point4d (pa, iv, &point); - } - return (LWGEOM *) lwline_construct (gaia->Srid, NULL, pa); - } - else if (pts == 0 && lns == 0 && pgs == 1) - { - /* single Polygon */ - pg = gaia->FirstPolygon; - has_z = 0; - has_m = 0; - if (gaia->DimensionModel == GAIA_XY_Z - || gaia->DimensionModel == GAIA_XY_Z_M) - has_z = 1; - if (gaia->DimensionModel == GAIA_XY_M - || gaia->DimensionModel == GAIA_XY_Z_M) - has_m = 1; - ngeoms = pg->NumInteriors; - ppaa = lwalloc (sizeof (POINTARRAY *) * (ngeoms + 1)); - rng = pg->Exterior; - ppaa[0] = ptarray_construct (has_z, has_m, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - /* copying vertices - Exterior Ring */ - if (gaia->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (gaia->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (gaia->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - point.x = x; - point.y = y; - if (has_z) - point.z = z; - if (has_m) - point.m = m; - ptarray_set_point4d (ppaa[0], iv, &point); - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - /* copying vertices - Interior Rings */ - rng = pg->Interiors + ib; - ppaa[1 + ib] = ptarray_construct (has_z, has_m, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - if (gaia->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (gaia->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (gaia->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - point.x = x; - point.y = y; - if (has_z) - point.z = z; - if (has_m) - point.m = m; - ptarray_set_point4d (ppaa[1 + ib], iv, &point); - } - } - return (LWGEOM *) lwpoly_construct (gaia->Srid, NULL, ngeoms + 1, - ppaa); - } - else - { - /* some Collection */ - switch (gaia->DeclaredType) - { - case GAIA_POINT: - type = POINTTYPE; - break; - case GAIA_LINESTRING: - type = LINETYPE; - break; - case GAIA_POLYGON: - type = POLYGONTYPE; - break; - case GAIA_MULTIPOINT: - type = MULTIPOINTTYPE; - break; - case GAIA_MULTILINESTRING: - type = MULTILINETYPE; - break; - case GAIA_MULTIPOLYGON: - type = MULTIPOLYGONTYPE; - break; - case GAIA_GEOMETRYCOLLECTION: - type = COLLECTIONTYPE; - break; - default: - if (lns == 0 && pgs == 0) - type = MULTIPOINTTYPE; - else if (pts == 0 && pgs == 0) - type = MULTILINETYPE; - else if (pts == 0 && lns == 0) - type = MULTIPOLYGONTYPE; - else - type = COLLECTIONTYPE; - break; - }; - numg = pts + lns + pgs; - geoms = lwalloc (sizeof (LWGEOM *) * numg); - - numg = 0; - pt = gaia->FirstPoint; - while (pt) - { - /* copying POINTs */ - has_z = 0; - has_m = 0; - if (gaia->DimensionModel == GAIA_XY_Z - || gaia->DimensionModel == GAIA_XY_Z_M) - has_z = 1; - if (gaia->DimensionModel == GAIA_XY_M - || gaia->DimensionModel == GAIA_XY_Z_M) - has_m = 1; - pa = ptarray_construct (has_z, has_m, 1); - point.x = pt->X; - point.y = pt->Y; - if (has_z) - point.z = pt->Z; - if (has_m) - point.m = pt->M; - ptarray_set_point4d (pa, 0, &point); - geoms[numg++] = - (LWGEOM *) lwpoint_construct (gaia->Srid, NULL, pa); - pt = pt->Next; - } - ln = gaia->FirstLinestring; - while (ln) - { - /* copying LINESTRINGs */ - has_z = 0; - has_m = 0; - if (gaia->DimensionModel == GAIA_XY_Z - || gaia->DimensionModel == GAIA_XY_Z_M) - has_z = 1; - if (gaia->DimensionModel == GAIA_XY_M - || gaia->DimensionModel == GAIA_XY_Z_M) - has_m = 1; - pa = ptarray_construct (has_z, has_m, ln->Points); - for (iv = 0; iv < ln->Points; iv++) - { - /* copying vertices */ - if (gaia->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - } - else if (gaia->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - } - else if (gaia->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - point.x = x; - point.y = y; - if (has_z) - point.z = z; - if (has_m) - point.m = m; - ptarray_set_point4d (pa, iv, &point); - } - geoms[numg++] = - (LWGEOM *) lwline_construct (gaia->Srid, NULL, pa); - ln = ln->Next; - } - pg = gaia->FirstPolygon; - while (pg) - { - /* copying POLYGONs */ - has_z = 0; - has_m = 0; - if (gaia->DimensionModel == GAIA_XY_Z - || gaia->DimensionModel == GAIA_XY_Z_M) - has_z = 1; - if (gaia->DimensionModel == GAIA_XY_M - || gaia->DimensionModel == GAIA_XY_Z_M) - has_m = 1; - ngeoms = pg->NumInteriors; - ppaa = lwalloc (sizeof (POINTARRAY *) * (ngeoms + 1)); - rng = pg->Exterior; - ppaa[0] = ptarray_construct (has_z, has_m, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - /* copying vertices - Exterior Ring */ - if (gaia->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (gaia->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (gaia->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - point.x = x; - point.y = y; - if (has_z) - point.z = z; - if (has_m) - point.m = m; - ptarray_set_point4d (ppaa[0], iv, &point); - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - /* copying vertices - Interior Rings */ - rng = pg->Interiors + ib; - ppaa[1 + ib] = - ptarray_construct (has_z, has_m, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - if (gaia->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (gaia->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (gaia->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, - &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - point.x = x; - point.y = y; - if (has_z) - point.z = z; - if (has_m) - point.m = m; - ptarray_set_point4d (ppaa[1 + ib], iv, &point); - } - } - geoms[numg++] = - (LWGEOM *) lwpoly_construct (gaia->Srid, NULL, ngeoms + 1, - ppaa); - pg = pg->Next; - } - return (LWGEOM *) lwcollection_construct (type, gaia->Srid, NULL, - numg, geoms); - } - return NULL; -} - -static gaiaGeomCollPtr -fromLWGeomIncremental (gaiaGeomCollPtr gaia, const LWGEOM * lwgeom) -{ -/* converting a LWGEOM Geometry into a GAIA Geometry */ - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - int dimension_model = gaia->DimensionModel; - int declared_type = gaia->DeclaredType; - LWGEOM *lwg2 = NULL; - LWPOINT *lwp = NULL; - LWLINE *lwl = NULL; - LWPOLY *lwpoly = NULL; - LWCOLLECTION *lwc = NULL; - POINTARRAY *pa; - POINT4D pt4d; - int has_z; - int has_m; - int iv; - int ib; - int ngeoms; - int ng; - double x; - double y; - double z; - double m; - - if (lwgeom == NULL) - return NULL; - if (lwgeom_is_empty (lwgeom)) - return NULL; - - switch (lwgeom->type) - { - case POINTTYPE: - lwp = (LWPOINT *) lwgeom; - has_z = 0; - has_m = 0; - pa = lwp->point; - if (FLAGS_GET_Z (pa->flags)) - has_z = 1; - if (FLAGS_GET_M (pa->flags)) - has_m = 1; - getPoint4d_p (pa, 0, &pt4d); - x = pt4d.x; - y = pt4d.y; - if (has_z) - z = pt4d.z; - else - z = 0.0; - if (has_m) - m = pt4d.m; - else - m = 0.0; - if (dimension_model == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (gaia, x, y, z); - else if (dimension_model == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (gaia, x, y, m); - else if (dimension_model == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (gaia, x, y, z, m); - else - gaiaAddPointToGeomColl (gaia, x, y); - if (declared_type == GAIA_MULTIPOINT) - gaia->DeclaredType = GAIA_MULTIPOINT; - else if (declared_type == GAIA_GEOMETRYCOLLECTION) - gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - gaia->DeclaredType = GAIA_POINT; - break; - case LINETYPE: - lwl = (LWLINE *) lwgeom; - has_z = 0; - has_m = 0; - pa = lwl->points; - if (FLAGS_GET_Z (pa->flags)) - has_z = 1; - if (FLAGS_GET_M (pa->flags)) - has_m = 1; - ln = gaiaAddLinestringToGeomColl (gaia, pa->npoints); - for (iv = 0; iv < pa->npoints; iv++) - { - /* copying LINESTRING vertices */ - getPoint4d_p (pa, iv, &pt4d); - x = pt4d.x; - y = pt4d.y; - if (has_z) - z = pt4d.z; - else - z = 0.0; - if (has_m) - m = pt4d.m; - else - m = 0.0; - if (dimension_model == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, iv, x, y, z); - } - else if (dimension_model == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, iv, x, y, m); - } - else if (dimension_model == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ln->Coords, iv, x, y); - } - } - if (declared_type == GAIA_MULTILINESTRING) - gaia->DeclaredType = GAIA_MULTILINESTRING; - else if (declared_type == GAIA_GEOMETRYCOLLECTION) - gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - gaia->DeclaredType = GAIA_LINESTRING; - break; - case POLYGONTYPE: - lwpoly = (LWPOLY *) lwgeom; - has_z = 0; - has_m = 0; - pa = lwpoly->rings[0]; - if (FLAGS_GET_Z (pa->flags)) - has_z = 1; - if (FLAGS_GET_M (pa->flags)) - has_m = 1; - pg = gaiaAddPolygonToGeomColl (gaia, pa->npoints, lwpoly->nrings - 1); - rng = pg->Exterior; - for (iv = 0; iv < pa->npoints; iv++) - { - /* copying Exterion Ring vertices */ - getPoint4d_p (pa, iv, &pt4d); - x = pt4d.x; - y = pt4d.y; - if (has_z) - z = pt4d.z; - else - z = 0.0; - if (has_m) - m = pt4d.m; - else - m = 0.0; - if (dimension_model == GAIA_XY_Z) - { - gaiaSetPointXYZ (rng->Coords, iv, x, y, z); - } - else if (dimension_model == GAIA_XY_M) - { - gaiaSetPointXYM (rng->Coords, iv, x, y, m); - } - else if (dimension_model == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (rng->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (rng->Coords, iv, x, y); - } - } - for (ib = 1; ib < lwpoly->nrings; ib++) - { - has_z = 0; - has_m = 0; - pa = lwpoly->rings[ib]; - if (FLAGS_GET_Z (pa->flags)) - has_z = 1; - if (FLAGS_GET_M (pa->flags)) - has_m = 1; - rng = gaiaAddInteriorRing (pg, ib - 1, pa->npoints); - for (iv = 0; iv < pa->npoints; iv++) - { - /* copying Exterion Ring vertices */ - getPoint4d_p (pa, iv, &pt4d); - x = pt4d.x; - y = pt4d.y; - if (has_z) - z = pt4d.z; - else - z = 0.0; - if (has_m) - m = pt4d.m; - else - m = 0.0; - if (dimension_model == GAIA_XY_Z) - { - gaiaSetPointXYZ (rng->Coords, iv, x, y, z); - } - else if (dimension_model == GAIA_XY_M) - { - gaiaSetPointXYM (rng->Coords, iv, x, y, m); - } - else if (dimension_model == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (rng->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (rng->Coords, iv, x, y); - } - } - } - if (declared_type == GAIA_MULTIPOLYGON) - gaia->DeclaredType = GAIA_MULTIPOLYGON; - else if (declared_type == GAIA_GEOMETRYCOLLECTION) - gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - gaia->DeclaredType = GAIA_POLYGON; - break; - case MULTIPOINTTYPE: - case MULTILINETYPE: - case MULTIPOLYGONTYPE: - case COLLECTIONTYPE: - if (lwgeom->type == MULTIPOINTTYPE) - { - if (declared_type == GAIA_GEOMETRYCOLLECTION) - gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - gaia->DeclaredType = GAIA_MULTIPOINT; - } - else if (lwgeom->type == MULTILINETYPE) - { - if (declared_type == GAIA_GEOMETRYCOLLECTION) - gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - gaia->DeclaredType = GAIA_MULTILINESTRING; - } - else if (lwgeom->type == MULTIPOLYGONTYPE) - { - if (declared_type == GAIA_GEOMETRYCOLLECTION) - gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; - else - gaia->DeclaredType = GAIA_MULTIPOLYGON; - } - else - gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; - - lwc = (LWCOLLECTION *) lwgeom; - ngeoms = lwc->ngeoms; - if (ngeoms == 0) - { - gaiaFreeGeomColl (gaia); - gaia = NULL; - break; - } - for (ng = 0; ng < ngeoms; ++ng) - { - /* looping on elementary geometries */ - lwg2 = lwc->geoms[ng]; - switch (lwg2->type) - { - case POINTTYPE: - lwp = (LWPOINT *) lwg2; - has_z = 0; - has_m = 0; - pa = lwp->point; - if (FLAGS_GET_Z (pa->flags)) - has_z = 1; - if (FLAGS_GET_M (pa->flags)) - has_m = 1; - getPoint4d_p (pa, 0, &pt4d); - x = pt4d.x; - y = pt4d.y; - if (has_z) - z = pt4d.z; - else - z = 0.0; - if (has_m) - m = pt4d.m; - else - m = 0.0; - if (dimension_model == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (gaia, x, y, z); - else if (dimension_model == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (gaia, x, y, m); - else if (dimension_model == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (gaia, x, y, z, m); - else - gaiaAddPointToGeomColl (gaia, x, y); - break; - case LINETYPE: - lwl = (LWLINE *) lwg2; - has_z = 0; - has_m = 0; - pa = lwl->points; - if (FLAGS_GET_Z (pa->flags)) - has_z = 1; - if (FLAGS_GET_M (pa->flags)) - has_m = 1; - ln = gaiaAddLinestringToGeomColl (gaia, pa->npoints); - for (iv = 0; iv < pa->npoints; iv++) - { - /* copying LINESTRING vertices */ - getPoint4d_p (pa, iv, &pt4d); - x = pt4d.x; - y = pt4d.y; - if (has_z) - z = pt4d.z; - else - z = 0.0; - if (has_m) - m = pt4d.m; - else - m = 0.0; - if (dimension_model == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, iv, x, y, z); - } - else if (dimension_model == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, iv, x, y, m); - } - else if (dimension_model == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ln->Coords, iv, x, y); - } - } - break; - case POLYGONTYPE: - lwpoly = (LWPOLY *) lwg2; - has_z = 0; - has_m = 0; - pa = lwpoly->rings[0]; - if (FLAGS_GET_Z (pa->flags)) - has_z = 1; - if (FLAGS_GET_M (pa->flags)) - has_m = 1; - pg = gaiaAddPolygonToGeomColl (gaia, pa->npoints, - lwpoly->nrings - 1); - rng = pg->Exterior; - for (iv = 0; iv < pa->npoints; iv++) - { - /* copying Exterion Ring vertices */ - getPoint4d_p (pa, iv, &pt4d); - x = pt4d.x; - y = pt4d.y; - if (has_z) - z = pt4d.z; - else - z = 0.0; - if (has_m) - m = pt4d.m; - else - m = 0.0; - if (dimension_model == GAIA_XY_Z) - { - gaiaSetPointXYZ (rng->Coords, iv, x, y, z); - } - else if (dimension_model == GAIA_XY_M) - { - gaiaSetPointXYM (rng->Coords, iv, x, y, m); - } - else if (dimension_model == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (rng->Coords, iv, x, y, z, - m); - } - else - { - gaiaSetPoint (rng->Coords, iv, x, y); - } - } - for (ib = 1; ib < lwpoly->nrings; ib++) - { - has_z = 0; - has_m = 0; - pa = lwpoly->rings[ib]; - if (FLAGS_GET_Z (pa->flags)) - has_z = 1; - if (FLAGS_GET_M (pa->flags)) - has_m = 1; - rng = gaiaAddInteriorRing (pg, ib - 1, pa->npoints); - for (iv = 0; iv < pa->npoints; iv++) - { - /* copying Exterion Ring vertices */ - getPoint4d_p (pa, iv, &pt4d); - x = pt4d.x; - y = pt4d.y; - if (has_z) - z = pt4d.z; - else - z = 0.0; - if (has_m) - m = pt4d.m; - else - m = 0.0; - if (dimension_model == GAIA_XY_Z) - { - gaiaSetPointXYZ (rng->Coords, iv, x, - y, z); - } - else if (dimension_model == GAIA_XY_M) - { - gaiaSetPointXYM (rng->Coords, iv, x, - y, m); - } - else if (dimension_model == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (rng->Coords, iv, x, - y, z, m); - } - else - { - gaiaSetPoint (rng->Coords, iv, x, y); - } - } - } - break; - }; - } - break; - default: - gaiaFreeGeomColl (gaia); - gaia = NULL; - break; - }; - - return gaia; -} - -static gaiaGeomCollPtr -fromLWGeom (const LWGEOM * lwgeom, const int dimension_model, - const int declared_type) -{ -/* converting a LWGEOM Geometry into a GAIA Geometry */ - gaiaGeomCollPtr gaia = NULL; - - if (lwgeom == NULL) - return NULL; - if (lwgeom_is_empty (lwgeom)) - return NULL; - - if (dimension_model == GAIA_XY_Z) - gaia = gaiaAllocGeomCollXYZ (); - else if (dimension_model == GAIA_XY_M) - gaia = gaiaAllocGeomCollXYM (); - else if (dimension_model == GAIA_XY_Z_M) - gaia = gaiaAllocGeomCollXYZM (); - else - gaia = gaiaAllocGeomColl (); - gaia->DeclaredType = declared_type; - fromLWGeomIncremental (gaia, lwgeom); - - return gaia; -} - -static gaiaGeomCollPtr -fromLWGeomValidated (const LWGEOM * lwgeom, const int dimension_model, - const int declared_type) -{ -/* -/ converting a LWGEOM Geometry into a GAIA Geometry -/ first collection - validated items -*/ - gaiaGeomCollPtr gaia = NULL; - LWGEOM *lwg2 = NULL; - LWCOLLECTION *lwc = NULL; - int ngeoms; - - if (lwgeom == NULL) - return NULL; - if (lwgeom_is_empty (lwgeom)) - return NULL; - - switch (lwgeom->type) - { - case COLLECTIONTYPE: - lwc = (LWCOLLECTION *) lwgeom; - ngeoms = lwc->ngeoms; - if (ngeoms <= 2) - { - lwg2 = lwc->geoms[0]; - gaia = fromLWGeom (lwg2, dimension_model, declared_type); - } - break; - default: - gaia = fromLWGeom (lwgeom, dimension_model, declared_type); - break; - } - - return gaia; -} - -static gaiaGeomCollPtr -fromLWGeomDiscarded (const LWGEOM * lwgeom, const int dimension_model, - const int declared_type) -{ -/* -/ converting a LWGEOM Geometry into a GAIA Geometry -/ second collection - discarded items -*/ - gaiaGeomCollPtr gaia = NULL; - LWGEOM *lwg2 = NULL; - LWCOLLECTION *lwc = NULL; - int ngeoms; - - if (lwgeom == NULL) - return NULL; - if (lwgeom_is_empty (lwgeom)) - return NULL; - - if (lwgeom->type == COLLECTIONTYPE) - { - lwc = (LWCOLLECTION *) lwgeom; - ngeoms = lwc->ngeoms; - if (ngeoms >= 2) - { - lwg2 = lwc->geoms[1]; - gaia = fromLWGeom (lwg2, dimension_model, declared_type); - } - } - - return gaia; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaMakeValid (gaiaGeomCollPtr geom) -{ -/* wrapping LWGEOM MakeValid [collecting valid items] */ - LWGEOM *g1; - LWGEOM *g2; - gaiaGeomCollPtr result; - - if (!geom) - return NULL; - g1 = toLWGeom (geom); - g2 = lwgeom_make_valid (g1); - if (!g2) - { - lwgeom_free (g1); - return NULL; - } - result = fromLWGeomValidated (g2, geom->DimensionModel, geom->DeclaredType); - spatialite_init_geos (); - lwgeom_free (g1); - lwgeom_free (g2); - if (result == NULL) - return NULL; - result->Srid = geom->Srid; - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaMakeValidDiscarded (gaiaGeomCollPtr geom) -{ -/* wrapping LWGEOM MakeValid [collecting discarder items] */ - LWGEOM *g1; - LWGEOM *g2; - gaiaGeomCollPtr result; - - if (!geom) - return NULL; - g1 = toLWGeom (geom); - g2 = lwgeom_make_valid (g1); - if (!g2) - { - lwgeom_free (g1); - return NULL; - } - result = fromLWGeomDiscarded (g2, geom->DimensionModel, geom->DeclaredType); - spatialite_init_geos (); - lwgeom_free (g1); - lwgeom_free (g2); - if (result == NULL) - return NULL; - result->Srid = geom->Srid; - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaSegmentize (gaiaGeomCollPtr geom, double dist) -{ -/* wrapping LWGEOM Segmentize */ - LWGEOM *g1; - LWGEOM *g2; - gaiaGeomCollPtr result; - - if (!geom) - return NULL; - if (dist <= 0.0) - return NULL; - g1 = toLWGeom (geom); - g2 = lwgeom_segmentize2d (g1, dist); - if (!g2) - { - lwgeom_free (g1); - return NULL; - } - result = fromLWGeom (g2, geom->DimensionModel, geom->DeclaredType); - spatialite_init_geos (); - lwgeom_free (g1); - lwgeom_free (g2); - if (result == NULL) - return NULL; - result->Srid = geom->Srid; - return result; -} - -static int -check_split_args (gaiaGeomCollPtr input, gaiaGeomCollPtr blade) -{ -/* testing Split arguments */ - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - int i_lns = 0; - int i_pgs = 0; - int b_pts = 0; - int b_lns = 0; - - if (!input) - return 0; - if (!blade) - return 0; - -/* testing the Input type */ - if (input->FirstPoint != NULL) - { - /* Point(s) on Input is forbidden !!!! */ - return 0; - } - ln = input->FirstLinestring; - while (ln) - { - /* counting how many Linestrings are there */ - i_lns++; - ln = ln->Next; - } - pg = input->FirstPolygon; - while (pg) - { - /* counting how many Polygons are there */ - i_pgs++; - pg = pg->Next; - } - if (i_lns + i_pgs == 0) - { - /* empty Input */ - return 0; - } - -/* testing the Blade type */ - pt = blade->FirstPoint; - while (pt) - { - /* counting how many Points are there */ - b_pts++; - pt = pt->Next; - } - if (b_pts > 1) - { - /* MultiPoint on Blade is forbidden !!!! */ - return 0; - } - ln = blade->FirstLinestring; - while (ln) - { - /* counting how many Linestrings are there */ - b_lns++; - ln = ln->Next; - } - if (b_lns > 1) - { - /* MultiLinestring on Blade is forbidden !!!! */ - return 0; - } - if (blade->FirstPolygon != NULL) - { - /* Polygon(s) on Blade is forbidden !!!! */ - return 0; - } - if (b_pts + b_lns == 0) - { - /* empty Blade */ - return 0; - } - if (b_pts + b_lns > 1) - { - /* invalid Blade [point + linestring] */ - return 0; - } - -/* compatibility check */ - if (b_lns == 1) - { - /* Linestring blade is always valid */ - return 1; - } - if (i_lns >= 1 && b_pts == 1) - { - /* Linestring or MultiLinestring input and Point blade is allowed */ - return 1; - } - - return 0; -} - -static void -set_split_gtype (gaiaGeomCollPtr geom) -{ -/* assignign the actual geometry type */ - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - int pts = 0; - int lns = 0; - int pgs = 0; - - pt = geom->FirstPoint; - while (pt) - { - /* counting how many Points are there */ - pts++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - /* counting how many Linestrings are there */ - lns++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - /* counting how many Polygons are there */ - pgs++; - pg = pg->Next; - } - - if (pts == 1 && lns == 0 && pgs == 0) - { - geom->DeclaredType = GAIA_POINT; - return; - } - if (pts > 1 && lns == 0 && pgs == 0) - { - geom->DeclaredType = GAIA_MULTIPOINT; - return; - } - if (pts == 0 && lns == 1 && pgs == 0) - { - geom->DeclaredType = GAIA_LINESTRING; - return; - } - if (pts == 0 && lns > 1 && pgs == 0) - { - geom->DeclaredType = GAIA_MULTILINESTRING; - return; - } - if (pts == 0 && lns == 0 && pgs == 1) - { - geom->DeclaredType = GAIA_POLYGON; - return; - } - if (pts == 0 && lns == 0 && pgs > 1) - { - geom->DeclaredType = GAIA_MULTIPOLYGON; - return; - } - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; -} - -static LWGEOM * -toLWGeomLinestring (gaiaLinestringPtr ln, int srid) -{ -/* converting a GAIA Linestring into a LWGEOM Geometry */ - int iv; - double x; - double y; - double z; - double m; - int has_z = 0; - int has_m = 0; - POINTARRAY *pa; - POINT4D point; - - if (ln->DimensionModel == GAIA_XY_Z || ln->DimensionModel == GAIA_XY_Z_M) - has_z = 1; - if (ln->DimensionModel == GAIA_XY_M || ln->DimensionModel == GAIA_XY_Z_M) - has_m = 1; - pa = ptarray_construct (has_z, has_m, ln->Points); - for (iv = 0; iv < ln->Points; iv++) - { - /* copying vertices */ - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - point.x = x; - point.y = y; - if (has_z) - point.z = z; - if (has_m) - point.m = m; - ptarray_set_point4d (pa, iv, &point); - } - return (LWGEOM *) lwline_construct (srid, NULL, pa); -} - -static LWGEOM * -toLWGeomPolygon (gaiaPolygonPtr pg, int srid) -{ -/* converting a GAIA Linestring into a LWGEOM Geometry */ - int iv; - int ib; - double x; - double y; - double z; - double m; - int ngeoms; - int has_z = 0; - int has_m = 0; - gaiaRingPtr rng; - POINTARRAY **ppaa; - POINT4D point; - - if (pg->DimensionModel == GAIA_XY_Z || pg->DimensionModel == GAIA_XY_Z_M) - has_z = 1; - if (pg->DimensionModel == GAIA_XY_M || pg->DimensionModel == GAIA_XY_Z_M) - has_m = 1; - ngeoms = pg->NumInteriors; - ppaa = lwalloc (sizeof (POINTARRAY *) * (ngeoms + 1)); - rng = pg->Exterior; - ppaa[0] = ptarray_construct (has_z, has_m, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - /* copying vertices - Exterior Ring */ - if (pg->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (pg->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (pg->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - point.x = x; - point.y = y; - if (has_z) - point.z = z; - if (has_m) - point.m = m; - ptarray_set_point4d (ppaa[0], iv, &point); - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - /* copying vertices - Interior Rings */ - rng = pg->Interiors + ib; - ppaa[1 + ib] = ptarray_construct (has_z, has_m, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - if (pg->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (pg->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (pg->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - point.x = x; - point.y = y; - if (has_z) - point.z = z; - if (has_m) - point.m = m; - ptarray_set_point4d (ppaa[1 + ib], iv, &point); - } - } - return (LWGEOM *) lwpoly_construct (srid, NULL, ngeoms + 1, ppaa); -} - -static gaiaGeomCollPtr -fromLWGeomLeft (gaiaGeomCollPtr gaia, const LWGEOM * lwgeom) -{ -/* -/ converting a LWGEOM Geometry into a GAIA Geometry -/ collecting "left side" items -*/ - LWGEOM *lwg2 = NULL; - LWCOLLECTION *lwc = NULL; - int ngeoms; - int ig; - - if (lwgeom == NULL) - return NULL; - if (lwgeom_is_empty (lwgeom)) - return NULL; - - if (lwgeom->type == COLLECTIONTYPE) - { - lwc = (LWCOLLECTION *) lwgeom; - ngeoms = lwc->ngeoms; - for (ig = 0; ig < ngeoms; ig += 2) - { - lwg2 = lwc->geoms[ig]; - fromLWGeomIncremental (gaia, lwg2); - } - } - else - gaia = fromLWGeom (lwgeom, gaia->DimensionModel, gaia->DeclaredType); - - return gaia; -} - -static gaiaGeomCollPtr -fromLWGeomRight (gaiaGeomCollPtr gaia, const LWGEOM * lwgeom) -{ -/* -/ converting a LWGEOM Geometry into a GAIA Geometry -/ collecting "right side" items -*/ - LWGEOM *lwg2 = NULL; - LWCOLLECTION *lwc = NULL; - int ngeoms; - int ig; - - if (lwgeom == NULL) - return NULL; - if (lwgeom_is_empty (lwgeom)) - return NULL; - - if (lwgeom->type == COLLECTIONTYPE) - { - lwc = (LWCOLLECTION *) lwgeom; - ngeoms = lwc->ngeoms; - for (ig = 1; ig < ngeoms; ig += 2) - { - lwg2 = lwc->geoms[ig]; - fromLWGeomIncremental (gaia, lwg2); - } - } - - return gaia; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaSplit (gaiaGeomCollPtr input, gaiaGeomCollPtr blade) -{ -/* wrapping LWGEOM Split */ - LWGEOM *g1; - LWGEOM *g2; - LWGEOM *g3; - gaiaGeomCollPtr result; - - if (!check_split_args (input, blade)) - return NULL; - - g1 = toLWGeom (input); - g2 = toLWGeom (blade); - g3 = lwgeom_split (g1, g2); - if (!g3) - { - lwgeom_free (g1); - lwgeom_free (g2); - return NULL; - } - result = fromLWGeom (g3, input->DimensionModel, input->DeclaredType); - spatialite_init_geos (); - lwgeom_free (g1); - lwgeom_free (g2); - lwgeom_free (g3); - if (result == NULL) - return NULL; - result->Srid = input->Srid; - set_split_gtype (result); - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaSplitLeft (gaiaGeomCollPtr input, gaiaGeomCollPtr blade) -{ -/* wrapping LWGEOM Split [left half] */ - LWGEOM *g1; - LWGEOM *g2; - LWGEOM *g3; - gaiaGeomCollPtr result = NULL; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - - if (!check_split_args (input, blade)) - return NULL; - - if (input->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (input->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else if (input->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else - result = gaiaAllocGeomColl (); - - g2 = toLWGeom (blade); - - ln = input->FirstLinestring; - while (ln) - { - /* splitting some Linestring */ - g1 = toLWGeomLinestring (ln, input->Srid); - g3 = lwgeom_split (g1, g2); - if (g3) - { - result = fromLWGeomLeft (result, g3); - lwgeom_free (g3); - } - spatialite_init_geos (); - lwgeom_free (g1); - ln = ln->Next; - } - pg = input->FirstPolygon; - while (pg) - { - /* splitting some Polygon */ - g1 = toLWGeomPolygon (pg, input->Srid); - g3 = lwgeom_split (g1, g2); - if (g3) - { - result = fromLWGeomLeft (result, g3); - lwgeom_free (g3); - } - spatialite_init_geos (); - lwgeom_free (g1); - pg = pg->Next; - } - - lwgeom_free (g2); - if (result == NULL) - return NULL; - if (result->FirstPoint == NULL && result->FirstLinestring == NULL - && result->FirstPolygon == NULL) - { - gaiaFreeGeomColl (result); - return NULL; - } - result->Srid = input->Srid; - set_split_gtype (result); - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaSplitRight (gaiaGeomCollPtr input, gaiaGeomCollPtr blade) -{ -/* wrapping LWGEOM Split [right half] */ - LWGEOM *g1; - LWGEOM *g2; - LWGEOM *g3; - gaiaGeomCollPtr result = NULL; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - - if (!check_split_args (input, blade)) - return NULL; - - if (input->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (input->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else if (input->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else - result = gaiaAllocGeomColl (); - - g2 = toLWGeom (blade); - - ln = input->FirstLinestring; - while (ln) - { - /* splitting some Linestring */ - g1 = toLWGeomLinestring (ln, input->Srid); - g3 = lwgeom_split (g1, g2); - if (g3) - { - result = fromLWGeomRight (result, g3); - lwgeom_free (g3); - } - spatialite_init_geos (); - lwgeom_free (g1); - ln = ln->Next; - } - pg = input->FirstPolygon; - while (pg) - { - /* splitting some Polygon */ - g1 = toLWGeomPolygon (pg, input->Srid); - g3 = lwgeom_split (g1, g2); - if (g3) - { - result = fromLWGeomRight (result, g3); - lwgeom_free (g3); - } - spatialite_init_geos (); - lwgeom_free (g1); - pg = pg->Next; - } - - lwgeom_free (g2); - if (result == NULL) - return NULL; - if (result->FirstPoint == NULL && result->FirstLinestring == NULL - && result->FirstPolygon == NULL) - { - gaiaFreeGeomColl (result); - return NULL; - } - result->Srid = input->Srid; - set_split_gtype (result); - return result; -} - -GAIAGEO_DECLARE int -gaiaAzimuth (double xa, double ya, double xb, double yb, double *azimuth) -{ -/* wrapping LWGEOM Azimuth */ - POINT2D pt1; - POINT2D pt2; - double az; - pt1.x = xa; - pt1.y = ya; - pt2.x = xb; - pt2.y = yb; - if (!azimuth_pt_pt (&pt1, &pt2, &az)) - return 0; - *azimuth = az; - return 1; -} - -GAIAGEO_DECLARE char * -gaiaGeoHash (gaiaGeomCollPtr geom, int precision) -{ -/* wrapping LWGEOM GeoHash */ - LWGEOM *g; - char *result; - char *geo_hash; - int len; - - if (!geom) - return NULL; - gaiaMbrGeometry (geom); - if (geom->MinX < -180.0 || geom->MaxX > 180.0 || geom->MinY < -90.0 - || geom->MaxY > 90.0) - return NULL; - g = toLWGeom (geom); - result = lwgeom_geohash (g, precision); - lwgeom_free (g); - if (result == NULL) - return NULL; - len = strlen (result); - if (len == 0) - { - lwfree (result); - return NULL; - } - geo_hash = malloc (len + 1); - strcpy (geo_hash, result); - lwfree (result); - return geo_hash; -} - -GAIAGEO_DECLARE char * -gaiaAsX3D (gaiaGeomCollPtr geom, const char *srs, int precision, int options, - const char *defid) -{ -/* wrapping LWGEOM AsX3D */ - LWGEOM *g; - char *result; - char *x3d; - int len; - - if (!geom) - return NULL; - gaiaMbrGeometry (geom); - g = toLWGeom (geom); - result = lwgeom_to_x3d3 (g, (char *) srs, precision, options, defid); - lwgeom_free (g); - if (result == NULL) - return NULL; - len = strlen (result); - if (len == 0) - { - lwfree (result); - return NULL; - } - x3d = malloc (len + 1); - strcpy (x3d, result); - lwfree (result); - return x3d; -} - -GAIAGEO_DECLARE int -gaia3DDistance (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, double *dist) -{ -/* wrapping LWGEOM mindistance3d */ - LWGEOM *g1; - LWGEOM *g2; - double d; - - g1 = toLWGeom (geom1); - g2 = toLWGeom (geom2); - - d = lwgeom_mindistance3d (g1, g2); - lwgeom_free (g1); - lwgeom_free (g2); - *dist = d; - return 1; -} - -GAIAGEO_DECLARE int -gaiaMaxDistance (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, double *dist) -{ -/* wrapping LWGEOM maxdistance2d */ - LWGEOM *g1; - LWGEOM *g2; - double d; - - g1 = toLWGeom (geom1); - g2 = toLWGeom (geom2); - - d = lwgeom_maxdistance2d (g1, g2); - lwgeom_free (g1); - lwgeom_free (g2); - *dist = d; - return 1; -} - -GAIAGEO_DECLARE int -gaia3DMaxDistance (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, double *dist) -{ -/* wrapping LWGEOM maxdistance2d */ - LWGEOM *g1; - LWGEOM *g2; - double d; - - g1 = toLWGeom (geom1); - g2 = toLWGeom (geom2); - - d = lwgeom_maxdistance3d (g1, g2); - lwgeom_free (g1); - lwgeom_free (g2); - *dist = d; - return 1; -} - -#endif /* end enabling LWGEOM support */ diff --git a/src/spatialite/src/gaiageo/gg_relations.c b/src/spatialite/src/gaiageo/gg_relations.c deleted file mode 100644 index bf11f32..0000000 --- a/src/spatialite/src/gaiageo/gg_relations.c +++ /dev/null @@ -1,4267 +0,0 @@ -/* - - gg_relations.c -- Gaia spatial relations - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#ifndef OMIT_GEOS /* including GEOS */ -#include -#endif - -#include -#include - -#include - -/* GLOBAL variables */ -char gaia_geos_error_msg[2048]; -char gaia_geos_warning_msg[2048]; - -GAIAGEO_DECLARE void -gaiaResetGeosMsg () -{ -/* resets the GEOS error and warning messages */ - *gaia_geos_error_msg = '\0'; - *gaia_geos_warning_msg = '\0'; -} - -GAIAGEO_DECLARE const char * -gaiaGetGeosErrorMsg () -{ -/* return the latest GEOS error message */ - return gaia_geos_error_msg; -} - -GAIAGEO_DECLARE const char * -gaiaGetGeosWarningMsg () -{ -/* return the latest GEOS error message */ - return gaia_geos_warning_msg; -} - -GAIAGEO_DECLARE void -gaiaSetGeosErrorMsg (const char *msg) -{ -/* return the latest GEOS error message */ - strcpy (gaia_geos_error_msg, msg); -} - -GAIAGEO_DECLARE void -gaiaSetGeosWarningMsg (const char *msg) -{ -/* return the latest GEOS error message */ - strcpy (gaia_geos_warning_msg, msg); -} - -static int -check_point (double *coords, int points, double x, double y) -{ -/* checks if [X,Y] point is defined into this coordinate array [Linestring or Ring] */ - int iv; - double xx; - double yy; - for (iv = 0; iv < points; iv++) - { - gaiaGetPoint (coords, iv, &xx, &yy); - if (xx == x && yy == y) - return 1; - } - return 0; -} - -GAIAGEO_DECLARE int -gaiaLinestringEquals (gaiaLinestringPtr line1, gaiaLinestringPtr line2) -{ -/* checks if two Linestrings are "spatially equal" */ - int iv; - double x; - double y; - if (line1->Points != line2->Points) - return 0; - for (iv = 0; iv < line1->Points; iv++) - { - gaiaGetPoint (line1->Coords, iv, &x, &y); - if (!check_point (line2->Coords, line2->Points, x, y)) - return 0; - } - return 1; -} - -GAIAGEO_DECLARE int -gaiaPolygonEquals (gaiaPolygonPtr polyg1, gaiaPolygonPtr polyg2) -{ -/* checks if two Polygons are "spatially equal" */ - int ib; - int ib2; - int iv; - int ok2; - double x; - double y; - gaiaRingPtr ring1; - gaiaRingPtr ring2; - if (polyg1->NumInteriors != polyg2->NumInteriors) - return 0; -/* checking the EXTERIOR RINGs */ - ring1 = polyg1->Exterior; - ring2 = polyg2->Exterior; - if (ring1->Points != ring2->Points) - return 0; - for (iv = 0; iv < ring1->Points; iv++) - { - gaiaGetPoint (ring1->Coords, iv, &x, &y); - if (!check_point (ring2->Coords, ring2->Points, x, y)) - return 0; - } - for (ib = 0; ib < polyg1->NumInteriors; ib++) - { - /* checking the INTERIOR RINGS */ - int ok = 0; - ring1 = polyg1->Interiors + ib; - for (ib2 = 0; ib2 < polyg2->NumInteriors; ib2++) - { - ok2 = 1; - ring2 = polyg2->Interiors + ib2; - for (iv = 0; iv < ring1->Points; iv++) - { - gaiaGetPoint (ring1->Coords, iv, &x, &y); - if (!check_point (ring2->Coords, ring2->Points, x, y)) - { - ok2 = 0; - break; - } - } - if (ok2) - { - ok = 1; - break; - } - } - if (!ok) - return 0; - } - return 1; -} - -#ifndef OMIT_GEOS /* including GEOS */ - -GAIAGEO_DECLARE int -gaiaGeomCollEquals (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* checks if two Geometries are "spatially equal" */ - int ret; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom1 || !geom2) - return -1; - if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) - return -1; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - ret = GEOSEquals (g1, g2); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - return ret; -} - -GAIAGEO_DECLARE int -gaiaGeomCollIntersects (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* checks if two Geometries do "spatially intersects" */ - int ret; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom1 || !geom2) - return -1; - if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) - return -1; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - ret = GEOSIntersects (g1, g2); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - return ret; -} - -GAIAGEO_DECLARE int -gaiaGeomCollDisjoint (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* checks if two Geometries are "spatially disjoint" */ - int ret; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom1 || !geom2) - return -1; - if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) - return -1; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - ret = GEOSDisjoint (g1, g2); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - return ret; -} - -GAIAGEO_DECLARE int -gaiaGeomCollOverlaps (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* checks if two Geometries do "spatially overlaps" */ - int ret; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom1 || !geom2) - return -1; - if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) - return -1; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - ret = GEOSOverlaps (g1, g2); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - return ret; -} - -GAIAGEO_DECLARE int -gaiaGeomCollCrosses (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* checks if two Geometries do "spatially crosses" */ - int ret; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom1 || !geom2) - return -1; - if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) - return -1; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - ret = GEOSCrosses (g1, g2); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - return ret; -} - -GAIAGEO_DECLARE int -gaiaGeomCollTouches (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* checks if two Geometries do "spatially touches" */ - int ret; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom1 || !geom2) - return -1; - if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) - return -1; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - ret = GEOSTouches (g1, g2); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - return ret; -} - -GAIAGEO_DECLARE int -gaiaGeomCollWithin (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* checks if GEOM-1 is completely contained within GEOM-2 */ - int ret; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom1 || !geom2) - return -1; - if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) - return -1; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - ret = GEOSWithin (g1, g2); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - return ret; -} - -GAIAGEO_DECLARE int -gaiaGeomCollContains (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* checks if GEOM-1 completely contains GEOM-2 */ - int ret; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom1 || !geom2) - return -1; - if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) - return -1; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - ret = GEOSContains (g1, g2); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - return ret; -} - -GAIAGEO_DECLARE int -gaiaGeomCollRelate (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, - const char *pattern) -{ -/* checks if if GEOM-1 and GEOM-2 have a spatial relationship as specified by the pattern Matrix */ - int ret; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom1 || !geom2) - return -1; - if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) - return -1; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - ret = GEOSRelatePattern (g1, g2, pattern); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - if (ret == 2) - return -1; - return ret; -} - -GAIAGEO_DECLARE int -gaiaGeomCollLength (gaiaGeomCollPtr geom, double *xlength) -{ -/* computes the total length for this Geometry */ - double length; - int ret; - GEOSGeometry *g; - if (!geom) - return 0; - if (gaiaIsToxic (geom)) - return 0; - g = gaiaToGeos (geom); - ret = GEOSLength (g, &length); - GEOSGeom_destroy (g); - if (ret) - *xlength = length; - return ret; -} - -GAIAGEO_DECLARE int -gaiaGeomCollLengthOrPerimeter (gaiaGeomCollPtr geom, int perimeter, - double *xlength) -{ -/* computes the total length or perimeter for this Geometry */ - double length; - int ret; - GEOSGeometry *g; - int mode = GAIA2GEOS_ONLY_LINESTRINGS; - if (perimeter) - mode = GAIA2GEOS_ONLY_POLYGONS; - if (!geom) - return 0; - if (gaiaIsToxic (geom)) - return 0; - g = gaiaToGeosSelective (geom, mode); - if (g == NULL) - { - *xlength = 0.0; - return 1; - } - ret = GEOSLength (g, &length); - GEOSGeom_destroy (g); - if (ret) - *xlength = length; - return ret; -} - -GAIAGEO_DECLARE int -gaiaGeomCollArea (gaiaGeomCollPtr geom, double *xarea) -{ -/* computes the total area for this Geometry */ - double area; - int ret; - GEOSGeometry *g; - if (!geom) - return 0; - if (gaiaIsToxic (geom)) - return 0; - g = gaiaToGeos (geom); - ret = GEOSArea (g, &area); - GEOSGeom_destroy (g); - if (ret) - *xarea = area; - return ret; -} - -GAIAGEO_DECLARE int -gaiaGeomCollDistance (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, - double *xdist) -{ -/* computes the minimum distance intercurring between GEOM-1 and GEOM-2 */ - double dist; - int ret; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom1 || !geom2) - return 0; - if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) - return 0; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - ret = GEOSDistance (g1, g2, &dist); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - if (ret) - *xdist = dist; - return ret; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaGeometryIntersection (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* builds a new geometry representing the "spatial intersection" of GEOM-1 and GEOM-2 */ - gaiaGeomCollPtr geo; - GEOSGeometry *g1; - GEOSGeometry *g2; - GEOSGeometry *g3; - if (!geom1 || !geom2) - return NULL; - if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) - return NULL; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - g3 = GEOSIntersection (g1, g2); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - if (!g3) - return NULL; - if (geom1->DimensionModel == GAIA_XY_Z) - geo = gaiaFromGeos_XYZ (g3); - else if (geom1->DimensionModel == GAIA_XY_M) - geo = gaiaFromGeos_XYM (g3); - else if (geom1->DimensionModel == GAIA_XY_Z_M) - geo = gaiaFromGeos_XYZM (g3); - else - geo = gaiaFromGeos_XY (g3); - GEOSGeom_destroy (g3); - if (geo == NULL) - return NULL; - geo->Srid = geom1->Srid; - return geo; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaGeometryUnion (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* builds a new geometry representing the "spatial union" of GEOM-1 and GEOM-2 */ - gaiaGeomCollPtr geo; - GEOSGeometry *g1; - GEOSGeometry *g2; - GEOSGeometry *g3; - if (!geom1 || !geom2) - return NULL; - if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) - return NULL; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - g3 = GEOSUnion (g1, g2); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - if (geom1->DimensionModel == GAIA_XY_Z) - geo = gaiaFromGeos_XYZ (g3); - else if (geom1->DimensionModel == GAIA_XY_M) - geo = gaiaFromGeos_XYM (g3); - else if (geom1->DimensionModel == GAIA_XY_Z_M) - geo = gaiaFromGeos_XYZM (g3); - else - geo = gaiaFromGeos_XY (g3); - GEOSGeom_destroy (g3); - if (geo == NULL) - return NULL; - geo->Srid = geom1->Srid; - if (geo->DeclaredType == GAIA_POINT && - geom1->DeclaredType == GAIA_MULTIPOINT) - geo->DeclaredType = GAIA_MULTIPOINT; - if (geo->DeclaredType == GAIA_LINESTRING && - geom1->DeclaredType == GAIA_MULTILINESTRING) - geo->DeclaredType = GAIA_MULTILINESTRING; - if (geo->DeclaredType == GAIA_POLYGON && - geom1->DeclaredType == GAIA_MULTIPOLYGON) - geo->DeclaredType = GAIA_MULTIPOLYGON; - return geo; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaUnionCascaded (gaiaGeomCollPtr geom) -{ -/* UnionCascaded (single Collection of polygons) */ - GEOSGeometry *g1; - GEOSGeometry *g2; - gaiaGeomCollPtr result; - int pts = 0; - int lns = 0; - int pgs = 0; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - if (!geom) - return NULL; - if (gaiaIsToxic (geom)) - return NULL; - -/* testing if geom only contains Polygons */ - pt = geom->FirstPoint; - while (pt) - { - pts++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - lns++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - pgs++; - pg = pg->Next; - } - if (pts || lns) - return NULL; - if (!pgs) - return NULL; - - g1 = gaiaToGeos (geom); - g2 = GEOSUnionCascaded (g1); - GEOSGeom_destroy (g1); - if (!g2) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaFromGeos_XYZ (g2); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaFromGeos_XYM (g2); - else if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaFromGeos_XYZM (g2); - else - result = gaiaFromGeos_XY (g2); - GEOSGeom_destroy (g2); - if (result == NULL) - return NULL; - result->Srid = geom->Srid; - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaGeometryDifference (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* builds a new geometry representing the "spatial difference" of GEOM-1 and GEOM-2 */ - gaiaGeomCollPtr geo; - GEOSGeometry *g1; - GEOSGeometry *g2; - GEOSGeometry *g3; - if (!geom1 || !geom2) - return NULL; - if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) - return NULL; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - g3 = GEOSDifference (g1, g2); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - if (!g3) - return NULL; - if (geom1->DimensionModel == GAIA_XY_Z) - geo = gaiaFromGeos_XYZ (g3); - else if (geom1->DimensionModel == GAIA_XY_M) - geo = gaiaFromGeos_XYM (g3); - else if (geom1->DimensionModel == GAIA_XY_Z_M) - geo = gaiaFromGeos_XYZM (g3); - else - geo = gaiaFromGeos_XY (g3); - GEOSGeom_destroy (g3); - if (geo == NULL) - return NULL; - geo->Srid = geom1->Srid; - return geo; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaGeometrySymDifference (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* builds a new geometry representing the "spatial symmetric difference" of GEOM-1 and GEOM-2 */ - gaiaGeomCollPtr geo; - GEOSGeometry *g1; - GEOSGeometry *g2; - GEOSGeometry *g3; - if (!geom1 || !geom2) - return NULL; - if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) - return NULL; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - g3 = GEOSSymDifference (g1, g2); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - if (!g3) - return NULL; - if (geom1->DimensionModel == GAIA_XY_Z) - geo = gaiaFromGeos_XYZ (g3); - else if (geom1->DimensionModel == GAIA_XY_M) - geo = gaiaFromGeos_XYM (g3); - else if (geom1->DimensionModel == GAIA_XY_Z_M) - geo = gaiaFromGeos_XYZM (g3); - else - geo = gaiaFromGeos_XY (g3); - GEOSGeom_destroy (g3); - if (geo == NULL) - return NULL; - geo->Srid = geom1->Srid; - return geo; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaBoundary (gaiaGeomCollPtr geom) -{ -/* builds a new geometry representing the combinatorial boundary of GEOM */ - gaiaGeomCollPtr geo; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom) - return NULL; - if (gaiaIsToxic (geom)) - return NULL; - g1 = gaiaToGeos (geom); - g2 = GEOSBoundary (g1); - GEOSGeom_destroy (g1); - if (!g2) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - geo = gaiaFromGeos_XYZ (g2); - else if (geom->DimensionModel == GAIA_XY_M) - geo = gaiaFromGeos_XYM (g2); - else if (geom->DimensionModel == GAIA_XY_Z_M) - geo = gaiaFromGeos_XYZM (g2); - else - geo = gaiaFromGeos_XY (g2); - GEOSGeom_destroy (g2); - if (geo == NULL) - return NULL; - geo->Srid = geom->Srid; - return geo; -} - -GAIAGEO_DECLARE int -gaiaGeomCollCentroid (gaiaGeomCollPtr geom, double *x, double *y) -{ -/* returns a Point representing the centroid for this Geometry */ - gaiaGeomCollPtr geo; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom) - return 0; - if (gaiaIsToxic (geom)) - { - return 0; - } - g1 = gaiaToGeos (geom); - g2 = GEOSGetCentroid (g1); - GEOSGeom_destroy (g1); - if (!g2) - return 0; - if (geom->DimensionModel == GAIA_XY_Z) - geo = gaiaFromGeos_XYZ (g2); - else if (geom->DimensionModel == GAIA_XY_M) - geo = gaiaFromGeos_XYM (g2); - else if (geom->DimensionModel == GAIA_XY_Z_M) - geo = gaiaFromGeos_XYZM (g2); - else - geo = gaiaFromGeos_XY (g2); - GEOSGeom_destroy (g2); - if (geo == NULL) - return 0; - if (geo->FirstPoint) - { - *x = geo->FirstPoint->X; - *y = geo->FirstPoint->Y; - gaiaFreeGeomColl (geo); - return 1; - } - gaiaFreeGeomColl (geo); - return 0; -} - -GAIAGEO_DECLARE int -gaiaGetPointOnSurface (gaiaGeomCollPtr geom, double *x, double *y) -{ -/* returns a Point guaranteed to lie on the Surface */ - gaiaGeomCollPtr geo; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom) - return 0; - if (gaiaIsToxic (geom)) - { - return 0; - } - g1 = gaiaToGeos (geom); - g2 = GEOSPointOnSurface (g1); - GEOSGeom_destroy (g1); - if (!g2) - return 0; - if (geom->DimensionModel == GAIA_XY_Z) - geo = gaiaFromGeos_XYZ (g2); - else if (geom->DimensionModel == GAIA_XY_M) - geo = gaiaFromGeos_XYM (g2); - else if (geom->DimensionModel == GAIA_XY_Z_M) - geo = gaiaFromGeos_XYZM (g2); - else - geo = gaiaFromGeos_XY (g2); - GEOSGeom_destroy (g2); - if (geo == NULL) - return 0; - if (geo->FirstPoint) - { - *x = geo->FirstPoint->X; - *y = geo->FirstPoint->Y; - gaiaFreeGeomColl (geo); - return 1; - } - gaiaFreeGeomColl (geo); - return 0; -} - -GAIAGEO_DECLARE int -gaiaIsSimple (gaiaGeomCollPtr geom) -{ -/* checks if this GEOMETRYCOLLECTION is a simple one */ - int ret; - GEOSGeometry *g; - if (!geom) - return -1; - if (gaiaIsToxic (geom)) - return 0; - g = gaiaToGeos (geom); - ret = GEOSisSimple (g); - GEOSGeom_destroy (g); - if (ret == 2) - return -1; - return ret; -} - -GAIAGEO_DECLARE int -gaiaIsRing (gaiaLinestringPtr line) -{ -/* checks if this LINESTRING can be a valid RING */ - gaiaGeomCollPtr geo; - gaiaLinestringPtr line2; - int ret; - int iv; - double x; - double y; - double z; - double m; - GEOSGeometry *g; - if (!line) - return -1; - if (line->DimensionModel == GAIA_XY_Z) - geo = gaiaAllocGeomCollXYZ (); - else if (line->DimensionModel == GAIA_XY_M) - geo = gaiaAllocGeomCollXYM (); - else if (line->DimensionModel == GAIA_XY_Z_M) - geo = gaiaAllocGeomCollXYZM (); - else - geo = gaiaAllocGeomColl (); - line2 = gaiaAddLinestringToGeomColl (geo, line->Points); - for (iv = 0; iv < line2->Points; iv++) - { - z = 0.0; - m = 0.0; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - if (line2->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (line2->Coords, iv, x, y, z); - } - else if (line2->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (line2->Coords, iv, x, y, m); - } - else if (line2->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (line2->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (line2->Coords, iv, x, y); - } - } - if (gaiaIsToxic (geo)) - { - gaiaFreeGeomColl (geo); - return -1; - } - g = gaiaToGeos (geo); - gaiaFreeGeomColl (geo); - ret = GEOSisRing (g); - GEOSGeom_destroy (g); - if (ret == 2) - return -1; - return ret; -} - -GAIAGEO_DECLARE int -gaiaIsValid (gaiaGeomCollPtr geom) -{ -/* checks if this GEOMETRYCOLLECTION is a valid one */ - int ret; - GEOSGeometry *g; - gaiaResetGeosMsg (); - if (!geom) - return -1; - if (gaiaIsToxic (geom)) - return 0; - if (gaiaIsNotClosedGeomColl (geom)) - return 0; - g = gaiaToGeos (geom); - ret = GEOSisValid (g); - GEOSGeom_destroy (g); - if (ret == 2) - return -1; - return ret; -} - -GAIAGEO_DECLARE int -gaiaIsClosedGeom (gaiaGeomCollPtr geom) -{ -/* checks if this geometry is a closed linestring (or multilinestring) */ - int ret = 0; - gaiaLinestringPtr ln; - if (!geom) - return -1; - if (gaiaIsToxic (geom)) - return 0; - ln = geom->FirstLinestring; - while (ln) - { - /* unhappily GEOS v3.2.2 [system package on Debian Lenny and Ubuntu 12.04] - * doesn't exposes the GEOSisClosed() API at all !!!! - * - GEOSGeometry *g; - gaiaGeomCollPtr geoColl = gaiaAllocGeomColl(); - gaiaInsertLinestringInGeomColl(geoColl, gaiaCloneLinestring(ln)); - g = gaiaToGeos (geoColl); - ret = GEOSisClosed (g); - GEOSGeom_destroy (g); - gaiaFreeGeomColl(geoColl); - */ - - /* so we'll use this internal default in order to circumvent the above issue */ - double x1; - double y1; - double z1; - double m1; - double x2; - double y2; - double z2; - double m2; - gaiaLineGetPoint (ln, 0, &x1, &y1, &z1, &m1); - gaiaLineGetPoint (ln, ln->Points - 1, &x2, &y2, &z2, &m2); - if (x1 == x2 && y1 == y2 && z1 == z2) - ret = 1; - else - ret = 0; - if (ret == 0) - { - /* this line isn't closed, so we don't need to continue */ - break; - } - ln = ln->Next; - } - if (ret == 2) - return -1; - return ret; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaGeomCollSimplify (gaiaGeomCollPtr geom, double tolerance) -{ -/* builds a simplified geometry using the Douglas-Peuker algorihtm */ - gaiaGeomCollPtr geo; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom) - return NULL; - if (gaiaIsToxic (geom)) - return NULL; - g1 = gaiaToGeos (geom); - g2 = GEOSSimplify (g1, tolerance); - GEOSGeom_destroy (g1); - if (!g2) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - geo = gaiaFromGeos_XYZ (g2); - else if (geom->DimensionModel == GAIA_XY_M) - geo = gaiaFromGeos_XYM (g2); - else if (geom->DimensionModel == GAIA_XY_Z_M) - geo = gaiaFromGeos_XYZM (g2); - else - geo = gaiaFromGeos_XY (g2); - GEOSGeom_destroy (g2); - if (geo == NULL) - return NULL; - geo->Srid = geom->Srid; - return geo; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaGeomCollSimplifyPreserveTopology (gaiaGeomCollPtr geom, double tolerance) -{ -/* builds a simplified geometry using the Douglas-Peuker algorihtm [preserving topology] */ - gaiaGeomCollPtr geo; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom) - return NULL; - if (gaiaIsToxic (geom)) - return NULL; - g1 = gaiaToGeos (geom); - g2 = GEOSTopologyPreserveSimplify (g1, tolerance); - GEOSGeom_destroy (g1); - if (!g2) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - geo = gaiaFromGeos_XYZ (g2); - else if (geom->DimensionModel == GAIA_XY_M) - geo = gaiaFromGeos_XYM (g2); - else if (geom->DimensionModel == GAIA_XY_Z_M) - geo = gaiaFromGeos_XYZM (g2); - else - geo = gaiaFromGeos_XY (g2); - GEOSGeom_destroy (g2); - if (geo == NULL) - return NULL; - geo->Srid = geom->Srid; - return geo; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaConvexHull (gaiaGeomCollPtr geom) -{ -/* builds a geometry that is the convex hull of GEOM */ - gaiaGeomCollPtr geo; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom) - return NULL; - if (gaiaIsToxic (geom)) - return NULL; - g1 = gaiaToGeos (geom); - g2 = GEOSConvexHull (g1); - GEOSGeom_destroy (g1); - if (!g2) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - geo = gaiaFromGeos_XYZ (g2); - else if (geom->DimensionModel == GAIA_XY_M) - geo = gaiaFromGeos_XYM (g2); - else if (geom->DimensionModel == GAIA_XY_Z_M) - geo = gaiaFromGeos_XYZM (g2); - else - geo = gaiaFromGeos_XY (g2); - GEOSGeom_destroy (g2); - if (geo == NULL) - return NULL; - geo->Srid = geom->Srid; - return geo; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaGeomCollBuffer (gaiaGeomCollPtr geom, double radius, int points) -{ -/* builds a geometry that is the GIS buffer of GEOM */ - gaiaGeomCollPtr geo; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom) - return NULL; - if (gaiaIsToxic (geom)) - return NULL; - g1 = gaiaToGeos (geom); - g2 = GEOSBuffer (g1, radius, points); - GEOSGeom_destroy (g1); - if (!g2) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - geo = gaiaFromGeos_XYZ (g2); - else if (geom->DimensionModel == GAIA_XY_M) - geo = gaiaFromGeos_XYM (g2); - else if (geom->DimensionModel == GAIA_XY_Z_M) - geo = gaiaFromGeos_XYZM (g2); - else - geo = gaiaFromGeos_XY (g2); - GEOSGeom_destroy (g2); - if (geo == NULL) - return NULL; - geo->Srid = geom->Srid; - return geo; -} - -static void -auxFromGeosPolygon (const GEOSGeometry * geos, gaiaGeomCollPtr result) -{ -/* converting a Polygon from GEOS to SpatiaLite */ - const GEOSGeometry *geos_ring; - const GEOSCoordSequence *coords; - unsigned int pts; - unsigned int geos_dims; - int interiors; - int iv; - int ib; - double x; - double y; - double z; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - - geos_ring = GEOSGetExteriorRing (geos); - interiors = GEOSGetNumInteriorRings (geos); - coords = GEOSGeom_getCoordSeq (geos_ring); - GEOSCoordSeq_getDimensions (coords, &geos_dims); - GEOSCoordSeq_getSize (coords, &pts); - - pg = gaiaAddPolygonToGeomColl (result, pts, interiors); -/* setting up the Exterior ring */ - rng = pg->Exterior; - for (iv = 0; iv < (int) pts; iv++) - { - if (geos_dims == 3) - { - GEOSCoordSeq_getX (coords, iv, &x); - GEOSCoordSeq_getY (coords, iv, &y); - GEOSCoordSeq_getZ (coords, iv, &z); - } - else - { - GEOSCoordSeq_getX (coords, iv, &x); - GEOSCoordSeq_getY (coords, iv, &y); - z = 0.0; - } - if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (rng->Coords, iv, x, y, z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (rng->Coords, iv, x, y, 0.0); - } - else if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (rng->Coords, iv, x, y, z, 0.0); - } - else - { - gaiaSetPoint (rng->Coords, iv, x, y); - } - } - - for (ib = 0; ib < interiors; ib++) - { - /* setting up any interior ring */ - geos_ring = GEOSGetInteriorRingN (geos, ib); - coords = GEOSGeom_getCoordSeq (geos_ring); - GEOSCoordSeq_getDimensions (coords, &geos_dims); - GEOSCoordSeq_getSize (coords, &pts); - rng = gaiaAddInteriorRing (pg, ib, pts); - for (iv = 0; iv < (int) pts; iv++) - { - if (geos_dims == 3) - { - GEOSCoordSeq_getX (coords, iv, &x); - GEOSCoordSeq_getY (coords, iv, &y); - GEOSCoordSeq_getZ (coords, iv, &z); - } - else - { - GEOSCoordSeq_getX (coords, iv, &x); - GEOSCoordSeq_getY (coords, iv, &y); - z = 0.0; - } - if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (rng->Coords, iv, x, y, z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (rng->Coords, iv, x, y, 0.0); - } - else if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (rng->Coords, iv, x, y, z, 0.0); - } - else - { - gaiaSetPoint (rng->Coords, iv, x, y); - } - } - } -} - -static void -auxGeosMbr (const GEOSCoordSequence * cs, unsigned int pts, double *min_x, - double *min_y, double *max_x, double *max_y) -{ -/* computing the MBR */ - int iv; - double x; - double y; - *min_x = DBL_MAX; - *min_y = DBL_MAX; - *max_x = 0 - DBL_MAX; - *max_y = 0 - DBL_MAX; - for (iv = 0; iv < (int) pts; iv++) - { - GEOSCoordSeq_getX (cs, iv, &x); - GEOSCoordSeq_getY (cs, iv, &y); - if (x < *min_x) - *min_x = x; - if (x > *max_x) - *max_x = x; - if (y < *min_y) - *min_y = y; - if (y > *max_y) - *max_y = y; - } -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaPolygonize (gaiaGeomCollPtr geom, int force_multi) -{ -/* attempts to rearrange a generic Geometry into a (multi)polygon */ - int ig; - int ib; - int iv; - int interiors; - int geos_dims = 2; - int pts = 0; - int lns = 0; - int pgs = 0; - int items; - int error; - double x; - double y; - double z; - double m; - gaiaGeomCollPtr result = NULL; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - GEOSCoordSequence *cs; - const GEOSGeometry *const *geos_list = NULL; - GEOSGeometry **p_item; - GEOSGeometry *geos; - const GEOSGeometry *geos_item; - const GEOSGeometry *geos_item2; - const GEOSGeometry *geos_ring; - char *valid_polygons = NULL; - const GEOSCoordSequence *coords; - unsigned int pts1; - unsigned int pts2; - double min_x1; - double max_x1; - double min_y1; - double max_y1; - double min_x2; - double max_x2; - double min_y2; - double max_y2; - - if (!geom) - return NULL; - if (gaiaIsToxic (geom)) - return NULL; - pt = geom->FirstPoint; - while (pt) - { - pts++; - pt = pt->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - pgs++; - pg = pg->Next; - } - if (pts || pgs) - return NULL; - ln = geom->FirstLinestring; - while (ln) - { - lns++; - ln = ln->Next; - } - if (!lns) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_Z_M) - geos_dims = 3; - -/* allocating GEOS linestrings */ - geos_list = malloc (sizeof (const GEOSGeometry * const *) * lns); - p_item = (GEOSGeometry **) geos_list; - for (iv = 0; iv < lns; iv++) - { - /* initializing to NULL */ - *p_item++ = NULL; - } - p_item = (GEOSGeometry **) geos_list; - -/* initializing GEOS linestrings */ - ln = geom->FirstLinestring; - while (ln) - { - cs = GEOSCoordSeq_create (ln->Points, geos_dims); - for (iv = 0; iv < ln->Points; iv++) - { - /* exterior ring segments */ - z = 0.0; - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - if (geos_dims == 3) - { - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - GEOSCoordSeq_setZ (cs, iv, z); - } - else - { - GEOSCoordSeq_setX (cs, iv, x); - GEOSCoordSeq_setY (cs, iv, y); - } - } - *p_item++ = GEOSGeom_createLineString (cs); - ln = ln->Next; - } - -/* calling GEOSPolygonize */ - geos = GEOSPolygonize (geos_list, lns); - if (geos == NULL) - goto cleanup; - -/* -/ -/ GEOSPolygonize is expected to return a collection of Polygons -/ -/ CAVEAT: internal holes are returned as such (interior rings in -/ some Polygon), but are returned as distinct Polygons too -/ -/ we must check this, so to *not* return Polygons representing holes -/ -*/ - error = 0; - items = GEOSGetNumGeometries (geos); - for (ig = 0; ig < items; ig++) - { - /* looping on elementaty GEOS geometries */ - geos_item = GEOSGetGeometryN (geos, ig); - if (GEOSGeomTypeId (geos_item) != GEOS_POLYGON) - { - /* not a Polygon ... ouch ... */ - error = 1; - goto cleanup; - } - } - -/* identifying valid Polygons [excluding holes] */ - valid_polygons = malloc (items); - for (ig = 0; ig < items; ig++) - valid_polygons[ig] = 'Y'; - for (ig = 0; ig < items; ig++) - { - /* looping on elementaty GEOS Polygons */ - geos_item = GEOSGetGeometryN (geos, ig); - interiors = GEOSGetNumInteriorRings (geos_item); - for (ib = 0; ib < interiors; ib++) - { - /* looping on any interior ring */ - geos_ring = GEOSGetInteriorRingN (geos_item, ib); - coords = GEOSGeom_getCoordSeq (geos_ring); - GEOSCoordSeq_getSize (coords, &pts1); - auxGeosMbr (coords, pts1, &min_x1, &min_y1, &max_x1, &max_y1); - for (iv = 0; iv < items; iv++) - { - if (iv == ig) - { - /* skipping the Polygon itself */ - continue; - } - if (valid_polygons[iv] == 'N') - { - /* skipping any already invalid Polygon */ - continue; - } - geos_item2 = GEOSGetGeometryN (geos, iv); - if (GEOSGetNumInteriorRings (geos_item2) > 0) - { - /* this Polygon contains holes [surely valid] */ - continue; - } - geos_ring = GEOSGetExteriorRing (geos_item2); - coords = GEOSGeom_getCoordSeq (geos_ring); - GEOSCoordSeq_getSize (coords, &pts2); - if (pts1 == pts2) - { - auxGeosMbr (coords, pts2, &min_x2, &min_y2, &max_x2, - &max_y2); - if (min_x1 == min_x2 && min_y1 == min_y2 - && max_x1 == max_x2 && max_y1 == max_y2) - { - /* same #points, same MBRs: invalidating */ - valid_polygons[iv] = 'N'; - } - } - } - } - } - -/* creating the Geometry to be returned */ - if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else - result = gaiaAllocGeomColl (); - if (result == NULL) - return NULL; - result->Srid = geom->Srid; - if (force_multi) - result->DeclaredType = GAIA_MULTIPOLYGON; - - for (ig = 0; ig < items; ig++) - { - /* looping on GEOS Polygons */ - geos_item = GEOSGetGeometryN (geos, ig); - if (valid_polygons[ig] == 'Y') - auxFromGeosPolygon (geos_item, result); - } - - cleanup: - if (valid_polygons != NULL) - free (valid_polygons); - if (geos_list != NULL) - { - /* memory cleanup */ - p_item = (GEOSGeometry **) geos_list; - for (iv = 0; iv < lns; iv++) - { - if (*p_item != NULL) - GEOSGeom_destroy (*p_item); - p_item++; - } - p_item = (GEOSGeometry **) geos_list; - free (p_item); - } - if (geos != NULL) - GEOSGeom_destroy (geos); - if (error || result->FirstPolygon == NULL) - { - gaiaFreeGeomColl (result); - return NULL; - } - return result; -} - -#ifdef GEOS_ADVANCED /* GEOS advanced features */ - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaOffsetCurve (gaiaGeomCollPtr geom, double radius, int points, - int left_right) -{ -/* -// builds a geometry that is the OffsetCurve of GEOM -// (which is expected to be of the LINESTRING type) -// -*/ - gaiaGeomCollPtr geo; - GEOSGeometry *g1; - GEOSGeometry *g2; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - int pts = 0; - int lns = 0; - int pgs = 0; - int closed = 0; - if (!geom) - return NULL; - -/* checking the input geometry for validity */ - pt = geom->FirstPoint; - while (pt) - { - /* counting how many POINTs are there */ - pts++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - /* counting how many LINESTRINGs are there */ - lns++; - if (gaiaIsClosed (ln)) - closed++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - /* counting how many POLYGON are there */ - pgs++; - pg = pg->Next; - } - if (pts > 0 || pgs > 0 || lns > 1 || closed > 0) - return NULL; - -/* all right: this one simply is a LINESTRING */ - geom->DeclaredType = GAIA_LINESTRING; - - g1 = gaiaToGeos (geom); - g2 = GEOSSingleSidedBuffer (g1, radius, points, GEOSBUF_JOIN_ROUND, 5.0, - left_right); - GEOSGeom_destroy (g1); - if (!g2) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - geo = gaiaFromGeos_XYZ (g2); - else if (geom->DimensionModel == GAIA_XY_M) - geo = gaiaFromGeos_XYM (g2); - else if (geom->DimensionModel == GAIA_XY_Z_M) - geo = gaiaFromGeos_XYZM (g2); - else - geo = gaiaFromGeos_XY (g2); - GEOSGeom_destroy (g2); - if (geo == NULL) - return NULL; - geo->Srid = geom->Srid; - return geo; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaSingleSidedBuffer (gaiaGeomCollPtr geom, double radius, int points, - int left_right) -{ -/* -// builds a geometry that is the SingleSided BUFFER of GEOM -// (which is expected to be of the LINESTRING type) -// -*/ - gaiaGeomCollPtr geo; - GEOSGeometry *g1; - GEOSGeometry *g2; - GEOSBufferParams *params = NULL; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - int pts = 0; - int lns = 0; - int pgs = 0; - int closed = 0; - if (!geom) - return NULL; - -/* checking the input geometry for validity */ - pt = geom->FirstPoint; - while (pt) - { - /* counting how many POINTs are there */ - pts++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - /* counting how many LINESTRINGs are there */ - lns++; - if (gaiaIsClosed (ln)) - closed++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - /* counting how many POLYGON are there */ - pgs++; - pg = pg->Next; - } - if (pts > 0 || pgs > 0 || lns > 1 || closed > 0) - return NULL; - -/* all right: this one simply is a LINESTRING */ - geom->DeclaredType = GAIA_LINESTRING; - - g1 = gaiaToGeos (geom); -/* setting up Buffer params */ - params = GEOSBufferParams_create (); - GEOSBufferParams_setJoinStyle (params, GEOSBUF_JOIN_ROUND); - GEOSBufferParams_setMitreLimit (params, 5.0); - GEOSBufferParams_setQuadrantSegments (params, points); - GEOSBufferParams_setSingleSided (params, 1); - -/* creating the SingleSided Buffer */ - if (left_right == 0) - { - /* right-sided requires NEGATIVE radius */ - radius *= -1.0; - } - g2 = GEOSBufferWithParams (g1, params, radius); - GEOSGeom_destroy (g1); - GEOSBufferParams_destroy (params); - if (!g2) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - geo = gaiaFromGeos_XYZ (g2); - else if (geom->DimensionModel == GAIA_XY_M) - geo = gaiaFromGeos_XYM (g2); - else if (geom->DimensionModel == GAIA_XY_Z_M) - geo = gaiaFromGeos_XYZM (g2); - else - geo = gaiaFromGeos_XY (g2); - GEOSGeom_destroy (g2); - if (geo == NULL) - return NULL; - geo->Srid = geom->Srid; - return geo; -} - -GAIAGEO_DECLARE int -gaiaHausdorffDistance (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, - double *xdist) -{ -/* -/ computes the (discrete) Hausdorff distance intercurring -/ between GEOM-1 and GEOM-2 -*/ - double dist; - int ret; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom1 || !geom2) - return 0; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - ret = GEOSHausdorffDistance (g1, g2, &dist); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - if (ret) - *xdist = dist; - return ret; -} - -static gaiaGeomCollPtr -geom_as_lines (gaiaGeomCollPtr geom) -{ -/* transforms a Geometry into a LINESTRING/MULTILINESTRING (if possible) */ - gaiaGeomCollPtr result; - gaiaLinestringPtr ln; - gaiaLinestringPtr new_ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - int iv; - int ib; - double x; - double y; - double z; - double m; - - if (!geom) - return NULL; - if (geom->FirstPoint != NULL) - { - /* invalid: GEOM contains at least one POINT */ - return NULL; - } - - switch (geom->DimensionModel) - { - case GAIA_XY_Z_M: - result = gaiaAllocGeomCollXYZM (); - break; - case GAIA_XY_Z: - result = gaiaAllocGeomCollXYZ (); - break; - case GAIA_XY_M: - result = gaiaAllocGeomCollXYM (); - break; - default: - result = gaiaAllocGeomColl (); - break; - }; - result->Srid = geom->Srid; - ln = geom->FirstLinestring; - while (ln) - { - /* copying any Linestring */ - new_ln = gaiaAddLinestringToGeomColl (result, ln->Points); - for (iv = 0; iv < ln->Points; iv++) - { - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - gaiaSetPoint (new_ln->Coords, iv, x, y); - } - } - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - /* copying any Polygon Ring (as Linestring) */ - rng = pg->Exterior; - new_ln = gaiaAddLinestringToGeomColl (result, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - /* exterior Ring */ - if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); - } - else if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - gaiaSetPoint (new_ln->Coords, iv, x, y); - } - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - rng = pg->Interiors + ib; - new_ln = gaiaAddLinestringToGeomColl (result, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - /* any interior Ring */ - if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); - } - else if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - gaiaSetPoint (new_ln->Coords, iv, x, y); - } - } - } - pg = pg->Next; - } - return result; -} - -static void -add_shared_linestring (gaiaGeomCollPtr geom, gaiaDynamicLinePtr dyn) -{ -/* adding a LINESTRING from Dynamic Line */ - int count = 0; - gaiaLinestringPtr ln; - gaiaPointPtr pt; - int iv; - - if (!geom) - return; - if (!dyn) - return; - pt = dyn->First; - while (pt) - { - /* counting how many Points are there */ - count++; - pt = pt->Next; - } - if (count == 0) - return; - ln = gaiaAddLinestringToGeomColl (geom, count); - iv = 0; - pt = dyn->First; - while (pt) - { - /* copying points into the LINESTRING */ - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, iv, pt->X, pt->Y, pt->Z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, iv, pt->X, pt->Y, pt->M); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, iv, pt->X, pt->Y, pt->Z, pt->M); - } - else - { - gaiaSetPoint (ln->Coords, iv, pt->X, pt->Y); - } - iv++; - pt = pt->Next; - } -} - -static void -append_shared_path (gaiaDynamicLinePtr dyn, gaiaLinestringPtr ln, int order) -{ -/* appends a Shared Path item to Dynamic Line */ - int iv; - double x; - double y; - double z; - double m; - if (order) - { - /* reversed order */ - for (iv = ln->Points - 1; iv >= 0; iv--) - { - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - if (x == dyn->Last->X && y == dyn->Last->Y - && z == dyn->Last->Z) - ; - else - gaiaAppendPointZToDynamicLine (dyn, x, y, z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - if (x == dyn->Last->X && y == dyn->Last->Y - && m == dyn->Last->M) - ; - else - gaiaAppendPointMToDynamicLine (dyn, x, y, m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - if (x == dyn->Last->X && y == dyn->Last->Y - && z == dyn->Last->Z && m == dyn->Last->M) - ; - else - gaiaAppendPointZMToDynamicLine (dyn, x, y, z, m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - if (x == dyn->Last->X && y == dyn->Last->Y) - ; - else - gaiaAppendPointToDynamicLine (dyn, x, y); - } - } - } - else - { - /* conformant order */ - for (iv = 0; iv < ln->Points; iv++) - { - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - if (x == dyn->Last->X && y == dyn->Last->Y - && z == dyn->Last->Z) - ; - else - gaiaAppendPointZToDynamicLine (dyn, x, y, z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - if (x == dyn->Last->X && y == dyn->Last->Y - && m == dyn->Last->M) - ; - else - gaiaAppendPointMToDynamicLine (dyn, x, y, m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - if (x == dyn->Last->X && y == dyn->Last->Y - && z == dyn->Last->Z && m == dyn->Last->M) - ; - else - gaiaAppendPointZMToDynamicLine (dyn, x, y, z, m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - if (x == dyn->Last->X && y == dyn->Last->Y) - ; - else - gaiaAppendPointToDynamicLine (dyn, x, y); - } - } - } -} - -static void -prepend_shared_path (gaiaDynamicLinePtr dyn, gaiaLinestringPtr ln, int order) -{ -/* prepends a Shared Path item to Dynamic Line */ - int iv; - double x; - double y; - double z; - double m; - if (order) - { - /* reversed order */ - for (iv = 0; iv < ln->Points; iv++) - { - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - if (x == dyn->First->X && y == dyn->First->Y - && z == dyn->First->Z) - ; - else - gaiaPrependPointZToDynamicLine (dyn, x, y, z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - if (x == dyn->First->X && y == dyn->First->Y - && m == dyn->First->M) - ; - else - gaiaPrependPointMToDynamicLine (dyn, x, y, m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - if (x == dyn->First->X && y == dyn->First->Y - && z == dyn->First->Z && m == dyn->First->M) - ; - else - gaiaPrependPointZMToDynamicLine (dyn, x, y, z, m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - if (x == dyn->First->X && y == dyn->First->Y) - ; - else - gaiaPrependPointToDynamicLine (dyn, x, y); - } - } - } - else - { - /* conformant order */ - for (iv = ln->Points - 1; iv >= 0; iv--) - { - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - if (x == dyn->First->X && y == dyn->First->Y - && z == dyn->First->Z) - ; - else - gaiaPrependPointZToDynamicLine (dyn, x, y, z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - if (x == dyn->First->X && y == dyn->First->Y - && m == dyn->First->M) - ; - else - gaiaPrependPointMToDynamicLine (dyn, x, y, m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - if (x == dyn->First->X && y == dyn->First->Y - && z == dyn->First->Z && m == dyn->First->M) - ; - else - gaiaPrependPointZMToDynamicLine (dyn, x, y, z, m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - if (x == dyn->First->X && y == dyn->First->Y) - ; - else - gaiaPrependPointToDynamicLine (dyn, x, y); - } - } - } -} - -static gaiaGeomCollPtr -arrange_shared_paths (gaiaGeomCollPtr geom) -{ -/* final aggregation step for shared paths */ - gaiaLinestringPtr ln; - gaiaLinestringPtr *ln_array; - gaiaGeomCollPtr result; - gaiaDynamicLinePtr dyn; - int count; - int i; - int i2; - int iv; - double x; - double y; - double z; - double m; - int ok; - int ok2; - - if (!geom) - return NULL; - count = 0; - ln = geom->FirstLinestring; - while (ln) - { - /* counting how many Linestrings are there */ - count++; - ln = ln->Next; - } - if (count == 0) - return NULL; - - ln_array = malloc (sizeof (gaiaLinestringPtr) * count); - i = 0; - ln = geom->FirstLinestring; - while (ln) - { - /* populating the Linestring references array */ - ln_array[i++] = ln; - ln = ln->Next; - } - -/* allocating a new Geometry [MULTILINESTRING] */ - switch (geom->DimensionModel) - { - case GAIA_XY_Z_M: - result = gaiaAllocGeomCollXYZM (); - break; - case GAIA_XY_Z: - result = gaiaAllocGeomCollXYZ (); - break; - case GAIA_XY_M: - result = gaiaAllocGeomCollXYM (); - break; - default: - result = gaiaAllocGeomColl (); - break; - }; - result->Srid = geom->Srid; - result->DeclaredType = GAIA_MULTILINESTRING; - - ok = 1; - while (ok) - { - /* looping until we have processed any input item */ - ok = 0; - for (i = 0; i < count; i++) - { - if (ln_array[i] != NULL) - { - /* starting a new LINESTRING */ - dyn = gaiaAllocDynamicLine (); - ln = ln_array[i]; - ln_array[i] = NULL; - for (iv = 0; iv < ln->Points; iv++) - { - /* inserting the 'seed' path */ - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - gaiaAppendPointZToDynamicLine (dyn, x, y, z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - gaiaAppendPointMToDynamicLine (dyn, x, y, m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, - &m); - gaiaAppendPointZMToDynamicLine (dyn, x, y, z, - m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - gaiaAppendPointToDynamicLine (dyn, x, y); - } - } - ok2 = 1; - while (ok2) - { - /* looping until we have checked any other item */ - ok2 = 0; - for (i2 = 0; i2 < count; i2++) - { - /* expanding the 'seed' path */ - if (ln_array[i2] == NULL) - continue; - ln = ln_array[i2]; - /* checking the first vertex */ - iv = 0; - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, - &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, - &m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, - &y, &z, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - if (x == dyn->Last->X && y == dyn->Last->Y) - { - /* appending this item to the 'seed' (conformant order) */ - append_shared_path (dyn, ln, 0); - ln_array[i2] = NULL; - ok2 = 1; - continue; - } - if (x == dyn->First->X && y == dyn->First->Y) - { - /* prepending this item to the 'seed' (reversed order) */ - prepend_shared_path (dyn, ln, 1); - ln_array[i2] = NULL; - ok2 = 1; - continue; - } - /* checking the last vertex */ - iv = ln->Points - 1; - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, - &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, - &m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, - &y, &z, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - if (x == dyn->Last->X && y == dyn->Last->Y) - { - /* appending this item to the 'seed' (reversed order) */ - append_shared_path (dyn, ln, 1); - ln_array[i2] = NULL; - ok2 = 1; - continue; - } - if (x == dyn->First->X && y == dyn->First->Y) - { - /* prepending this item to the 'seed' (conformant order) */ - prepend_shared_path (dyn, ln, 0); - ln_array[i2] = NULL; - ok2 = 1; - continue; - } - } - } - add_shared_linestring (result, dyn); - gaiaFreeDynamicLine (dyn); - ok = 1; - break; - } - } - } - free (ln_array); - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaSharedPaths (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* -// builds a geometry containing Shared Paths commons to GEOM1 & GEOM2 -// (which are expected to be of the LINESTRING/MULTILINESTRING type) -// -*/ - gaiaGeomCollPtr geo; - gaiaGeomCollPtr result; - gaiaGeomCollPtr line1; - gaiaGeomCollPtr line2; - GEOSGeometry *g1; - GEOSGeometry *g2; - GEOSGeometry *g3; - if (!geom1) - return NULL; - if (!geom2) - return NULL; -/* transforming input geoms as Lines */ - line1 = geom_as_lines (geom1); - line2 = geom_as_lines (geom2); - if (line1 == NULL || line2 == NULL) - { - if (line1) - gaiaFreeGeomColl (line1); - if (line2) - gaiaFreeGeomColl (line2); - return NULL; - } - - g1 = gaiaToGeos (line1); - g2 = gaiaToGeos (line2); - gaiaFreeGeomColl (line1); - gaiaFreeGeomColl (line2); - g3 = GEOSSharedPaths (g1, g2); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - if (!g3) - return NULL; - if (geom1->DimensionModel == GAIA_XY_Z) - geo = gaiaFromGeos_XYZ (g3); - else if (geom1->DimensionModel == GAIA_XY_M) - geo = gaiaFromGeos_XYM (g3); - else if (geom1->DimensionModel == GAIA_XY_Z_M) - geo = gaiaFromGeos_XYZM (g3); - else - geo = gaiaFromGeos_XY (g3); - GEOSGeom_destroy (g3); - if (geo == NULL) - return NULL; - geo->Srid = geom1->Srid; - result = arrange_shared_paths (geo); - gaiaFreeGeomColl (geo); - return result; -} - -GAIAGEO_DECLARE int -gaiaGeomCollCovers (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* checks if geom1 "spatially covers" geom2 */ - int ret; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom1 || !geom2) - return -1; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - ret = GEOSCovers (g1, g2); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - if (ret == 2) - return -1; - return ret; -} - -GAIAGEO_DECLARE int -gaiaGeomCollCoveredBy (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* checks if geom1 is "spatially covered by" geom2 */ - int ret; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom1 || !geom2) - return -1; - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - ret = GEOSCoveredBy (g1, g2); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - if (ret == 2) - return -1; - return ret; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaLineInterpolatePoint (gaiaGeomCollPtr geom, double fraction) -{ -/* - * attempts to intepolate a point on line at dist "fraction" - * - * the fraction is expressed into the range from 0.0 to 1.0 - */ - int pts = 0; - int lns = 0; - int pgs = 0; - gaiaGeomCollPtr result; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - GEOSGeometry *g; - GEOSGeometry *g_pt; - double length; - double projection; - if (!geom) - return NULL; - -/* checking if a single Linestring has been passed */ - pt = geom->FirstPoint; - while (pt) - { - pts++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - lns++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - pgs++; - pg = pg->Next; - } - if (pts == 0 && lns == 1 && pgs == 0) - ; - else - return NULL; - - g = gaiaToGeos (geom); - if (GEOSLength (g, &length)) - { - /* transforming fraction to length */ - if (fraction < 0.0) - fraction = 0.0; - if (fraction > 1.0) - fraction = 1.0; - projection = length * fraction; - } - else - { - GEOSGeom_destroy (g); - return NULL; - } - g_pt = GEOSInterpolate (g, projection); - GEOSGeom_destroy (g); - if (!g_pt) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaFromGeos_XYZ (g_pt); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaFromGeos_XYM (g_pt); - else if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaFromGeos_XYZM (g_pt); - else - result = gaiaFromGeos_XY (g_pt); - GEOSGeom_destroy (g_pt); - if (result == NULL) - return NULL; - result->Srid = geom->Srid; - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaLineInterpolateEquidistantPoints (gaiaGeomCollPtr geom, double distance) -{ -/* - * attempts to intepolate a set of points on line at regular distances - */ - int pts = 0; - int lns = 0; - int pgs = 0; - gaiaGeomCollPtr result; - gaiaGeomCollPtr xpt; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - GEOSGeometry *g; - GEOSGeometry *g_pt; - double length; - double current_length = 0.0; - if (!geom) - return NULL; - if (distance <= 0.0) - return NULL; - -/* checking if a single Linestring has been passed */ - pt = geom->FirstPoint; - while (pt) - { - pts++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - lns++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - pgs++; - pg = pg->Next; - } - if (pts == 0 && lns == 1 && pgs == 0) - ; - else - return NULL; - - g = gaiaToGeos (geom); - if (GEOSLength (g, &length)) - { - if (length <= distance) - { - /* the line is too short to apply interpolation */ - GEOSGeom_destroy (g); - return NULL; - } - } - else - { - GEOSGeom_destroy (g); - return NULL; - } - -/* creating the MultiPoint [always supporting M] */ - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else - result = gaiaAllocGeomCollXYM (); - if (result == NULL) - { - GEOSGeom_destroy (g); - return NULL; - } - - while (1) - { - /* increasing the current distance */ - current_length += distance; - if (current_length >= length) - break; - /* interpolating a point */ - g_pt = GEOSInterpolate (g, current_length); - if (!g_pt) - goto error; - if (geom->DimensionModel == GAIA_XY_Z) - { - xpt = gaiaFromGeos_XYZ (g_pt); - if (!xpt) - goto error; - pt = xpt->FirstPoint; - if (!pt) - goto error; - gaiaAddPointToGeomCollXYZM (result, pt->X, pt->Y, pt->Z, - current_length); - } - else if (geom->DimensionModel == GAIA_XY_M) - { - xpt = gaiaFromGeos_XYM (g_pt); - if (!xpt) - goto error; - pt = xpt->FirstPoint; - if (!pt) - goto error; - gaiaAddPointToGeomCollXYM (result, pt->X, pt->Y, - current_length); - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - xpt = gaiaFromGeos_XYZM (g_pt); - if (!xpt) - goto error; - pt = xpt->FirstPoint; - if (!pt) - goto error; - gaiaAddPointToGeomCollXYZM (result, pt->X, pt->Y, pt->Z, - current_length); - } - else - { - xpt = gaiaFromGeos_XY (g_pt); - if (!xpt) - goto error; - pt = xpt->FirstPoint; - if (!pt) - goto error; - gaiaAddPointToGeomCollXYM (result, pt->X, pt->Y, - current_length); - } - GEOSGeom_destroy (g_pt); - gaiaFreeGeomColl (xpt); - } - GEOSGeom_destroy (g); - result->Srid = geom->Srid; - result->DeclaredType = GAIA_MULTIPOINT; - return result; - - error: - if (g_pt) - GEOSGeom_destroy (g_pt); - GEOSGeom_destroy (g); - gaiaFreeGeomColl (result); - return NULL; -} - -GAIAGEO_DECLARE double -gaiaLineLocatePoint (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* - * attempts to compute the location of the closest point on LineString - * to the given Point, as a fraction of total 2d line length - * - * the fraction is expressed into the range from 0.0 to 1.0 - */ - int pts1 = 0; - int lns1 = 0; - int pgs1 = 0; - int pts2 = 0; - int lns2 = 0; - int pgs2 = 0; - double length; - double projection; - double result; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - GEOSGeometry *g1; - GEOSGeometry *g2; - if (!geom1 || !geom2) - return -1.0; - -/* checking if a single Linestring has been passed */ - pt = geom1->FirstPoint; - while (pt) - { - pts1++; - pt = pt->Next; - } - ln = geom1->FirstLinestring; - while (ln) - { - lns1++; - ln = ln->Next; - } - pg = geom1->FirstPolygon; - while (pg) - { - pgs1++; - pg = pg->Next; - } - if (pts1 == 0 && lns1 >= 1 && pgs1 == 0) - ; - else - return -1.0; - -/* checking if a single Point has been passed */ - pt = geom2->FirstPoint; - while (pt) - { - pts2++; - pt = pt->Next; - } - ln = geom2->FirstLinestring; - while (ln) - { - lns2++; - ln = ln->Next; - } - pg = geom2->FirstPolygon; - while (pg) - { - pgs2++; - pg = pg->Next; - } - if (pts2 == 1 && lns2 == 0 && pgs2 == 0) - ; - else - return -1.0; - - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - projection = GEOSProject (g1, g2); - if (GEOSLength (g1, &length)) - { - /* normalizing as a fraction between 0.0 and 1.0 */ - result = projection / length; - } - else - result = -1.0; - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaLineSubstring (gaiaGeomCollPtr geom, double start_fraction, - double end_fraction) -{ -/* - * attempts to build a new Linestring being a substring of the input one starting - * and ending at the given fractions of total 2d length - */ - int pts = 0; - int lns = 0; - int pgs = 0; - gaiaGeomCollPtr result; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaLinestringPtr out; - gaiaPolygonPtr pg; - GEOSGeometry *g; - GEOSGeometry *g_start; - GEOSGeometry *g_end; - GEOSCoordSequence *cs; - const GEOSCoordSequence *in_cs; - GEOSGeometry *segm; - double length; - double total = 0.0; - double start; - double end; - int iv; - int i_start = -1; - int i_end = -1; - int points; - double x; - double y; - double z; - double m; - unsigned int dims; - if (!geom) - return NULL; - -/* checking if a single Linestring has been passed */ - pt = geom->FirstPoint; - while (pt) - { - pts++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - lns++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - pgs++; - pg = pg->Next; - } - if (pts == 0 && lns == 1 && pgs == 0) - ; - else - return NULL; - - if (start_fraction < 0.0) - start_fraction = 0.0; - if (start_fraction > 1.0) - start_fraction = 1.0; - if (end_fraction < 0.0) - end_fraction = 0.0; - if (end_fraction > 1.0) - end_fraction = 1.0; - if (start_fraction >= end_fraction) - return NULL; - g = gaiaToGeos (geom); - if (GEOSLength (g, &length)) - { - start = length * start_fraction; - end = length * end_fraction; - } - else - { - GEOSGeom_destroy (g); - return NULL; - } - g_start = GEOSInterpolate (g, start); - g_end = GEOSInterpolate (g, end); - GEOSGeom_destroy (g); - if (!g_start || !g_end) - return NULL; - -/* identifying first and last valid vertex */ - ln = geom->FirstLinestring; - for (iv = 0; iv < ln->Points; iv++) - { - - double x0; - double y0; - switch (ln->DimensionModel) - { - case GAIA_XY_Z: - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - break; - case GAIA_XY_M: - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - break; - default: - gaiaGetPoint (ln->Coords, iv, &x, &y); - break; - }; - - if (iv > 0) - { - cs = GEOSCoordSeq_create (2, 2); - GEOSCoordSeq_setX (cs, 0, x0); - GEOSCoordSeq_setY (cs, 0, y0); - GEOSCoordSeq_setX (cs, 1, x); - GEOSCoordSeq_setY (cs, 1, y); - segm = GEOSGeom_createLineString (cs); - GEOSLength (segm, &length); - total += length; - GEOSGeom_destroy (segm); - if (total > start && i_start < 0) - i_start = iv; - if (total < end) - i_end = iv; - } - x0 = x; - y0 = y; - } - if (i_start < 0 || i_end < 0) - { - i_start = -1; - i_end = -1; - points = 2; - } - else - points = i_end - i_start + 3; - -/* creating the output geometry */ - switch (ln->DimensionModel) - { - case GAIA_XY_Z: - result = gaiaAllocGeomCollXYZ (); - break; - case GAIA_XY_M: - result = gaiaAllocGeomCollXYM (); - break; - case GAIA_XY_Z_M: - result = gaiaAllocGeomCollXYZM (); - break; - default: - result = gaiaAllocGeomColl (); - break; - }; - result->Srid = geom->Srid; - out = gaiaAddLinestringToGeomColl (result, points); - -/* start vertex */ - points = 0; - in_cs = GEOSGeom_getCoordSeq (g_start); - GEOSCoordSeq_getDimensions (in_cs, &dims); - if (dims == 3) - { - GEOSCoordSeq_getX (in_cs, 0, &x); - GEOSCoordSeq_getY (in_cs, 0, &y); - GEOSCoordSeq_getZ (in_cs, 0, &z); - m = 0.0; - } - else - { - GEOSCoordSeq_getX (in_cs, 0, &x); - GEOSCoordSeq_getY (in_cs, 0, &y); - z = 0.0; - m = 0.0; - } - GEOSGeom_destroy (g_start); - switch (out->DimensionModel) - { - case GAIA_XY_Z: - gaiaSetPointXYZ (out->Coords, points, x, y, z); - break; - case GAIA_XY_M: - gaiaSetPointXYM (out->Coords, points, x, y, 0.0); - break; - case GAIA_XY_Z_M: - gaiaSetPointXYZM (out->Coords, points, x, y, z, 0.0); - break; - default: - gaiaSetPoint (out->Coords, points, x, y); - break; - }; - points++; - - if (i_start < 0 || i_end < 0) - ; - else - { - for (iv = i_start; iv <= i_end; iv++) - { - z = 0.0; - m = 0.0; - switch (ln->DimensionModel) - { - case GAIA_XY_Z: - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - break; - case GAIA_XY_M: - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - break; - default: - gaiaGetPoint (ln->Coords, iv, &x, &y); - break; - }; - switch (out->DimensionModel) - { - case GAIA_XY_Z: - gaiaSetPointXYZ (out->Coords, points, x, y, z); - break; - case GAIA_XY_M: - gaiaSetPointXYM (out->Coords, points, x, y, 0.0); - break; - case GAIA_XY_Z_M: - gaiaSetPointXYZM (out->Coords, points, x, y, z, 0.0); - break; - default: - gaiaSetPoint (out->Coords, points, x, y); - break; - }; - points++; - } - } - -/* end vertex */ - in_cs = GEOSGeom_getCoordSeq (g_end); - GEOSCoordSeq_getDimensions (in_cs, &dims); - if (dims == 3) - { - GEOSCoordSeq_getX (in_cs, 0, &x); - GEOSCoordSeq_getY (in_cs, 0, &y); - GEOSCoordSeq_getZ (in_cs, 0, &z); - m = 0.0; - } - else - { - GEOSCoordSeq_getX (in_cs, 0, &x); - GEOSCoordSeq_getY (in_cs, 0, &y); - z = 0.0; - m = 0.0; - } - GEOSGeom_destroy (g_end); - switch (out->DimensionModel) - { - case GAIA_XY_Z: - gaiaSetPointXYZ (out->Coords, points, x, y, z); - break; - case GAIA_XY_M: - gaiaSetPointXYM (out->Coords, points, x, y, 0.0); - break; - case GAIA_XY_Z_M: - gaiaSetPointXYZM (out->Coords, points, x, y, z, 0.0); - break; - default: - gaiaSetPoint (out->Coords, points, x, y); - break; - }; - return result; -} - -static GEOSGeometry * -buildGeosPoints (const gaiaGeomCollPtr gaia) -{ -/* converting a GAIA Geometry into a GEOS Geometry of POINTS */ - int pts = 0; - unsigned int dims; - int iv; - int ib; - int nItem; - double x; - double y; - double z; - double m; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - GEOSGeometry *geos; - GEOSGeometry *geos_item; - GEOSGeometry **geos_coll; - GEOSCoordSequence *cs; - if (!gaia) - return NULL; - pt = gaia->FirstPoint; - while (pt) - { - /* counting how many POINTs are there */ - pts++; - pt = pt->Next; - } - ln = gaia->FirstLinestring; - while (ln) - { - /* counting how many POINTs are there */ - pts += ln->Points; - ln = ln->Next; - } - pg = gaia->FirstPolygon; - while (pg) - { - /* counting how many POINTs are there */ - rng = pg->Exterior; - pts += rng->Points - 1; /* exterior ring */ - for (ib = 0; ib < pg->NumInteriors; ib++) - { - /* interior ring */ - rng = pg->Interiors + ib; - pts += rng->Points - 1; - } - pg = pg->Next; - } - if (pts == 0) - return NULL; - switch (gaia->DimensionModel) - { - case GAIA_XY_Z: - case GAIA_XY_Z_M: - dims = 3; - break; - default: - dims = 2; - break; - }; - nItem = 0; - geos_coll = malloc (sizeof (GEOSGeometry *) * (pts)); - pt = gaia->FirstPoint; - while (pt) - { - cs = GEOSCoordSeq_create (1, dims); - switch (pt->DimensionModel) - { - case GAIA_XY_Z: - case GAIA_XY_Z_M: - GEOSCoordSeq_setX (cs, 0, pt->X); - GEOSCoordSeq_setY (cs, 0, pt->Y); - GEOSCoordSeq_setZ (cs, 0, pt->Z); - break; - default: - GEOSCoordSeq_setX (cs, 0, pt->X); - GEOSCoordSeq_setY (cs, 0, pt->Y); - break; - }; - geos_item = GEOSGeom_createPoint (cs); - *(geos_coll + nItem++) = geos_item; - pt = pt->Next; - } - ln = gaia->FirstLinestring; - while (ln) - { - for (iv = 0; iv < ln->Points; iv++) - { - z = 0.0; - m = 0.0; - switch (ln->DimensionModel) - { - case GAIA_XY_Z: - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - break; - case GAIA_XY_M: - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - break; - default: - gaiaGetPoint (ln->Coords, iv, &x, &y); - break; - }; - cs = GEOSCoordSeq_create (1, dims); - if (dims == 3) - { - GEOSCoordSeq_setX (cs, 0, x); - GEOSCoordSeq_setY (cs, 0, y); - GEOSCoordSeq_setZ (cs, 0, z); - } - else - { - GEOSCoordSeq_setX (cs, 0, x); - GEOSCoordSeq_setY (cs, 0, y); - } - geos_item = GEOSGeom_createPoint (cs); - *(geos_coll + nItem++) = geos_item; - } - ln = ln->Next; - } - pg = gaia->FirstPolygon; - while (pg) - { - rng = pg->Exterior; - for (iv = 1; iv < rng->Points; iv++) - { - /* exterior ring */ - z = 0.0; - m = 0.0; - switch (rng->DimensionModel) - { - case GAIA_XY_Z: - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - break; - case GAIA_XY_M: - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - break; - default: - gaiaGetPoint (rng->Coords, iv, &x, &y); - break; - }; - cs = GEOSCoordSeq_create (1, dims); - if (dims == 3) - { - GEOSCoordSeq_setX (cs, 0, x); - GEOSCoordSeq_setY (cs, 0, y); - GEOSCoordSeq_setZ (cs, 0, z); - } - else - { - GEOSCoordSeq_setX (cs, 0, x); - GEOSCoordSeq_setY (cs, 0, y); - } - geos_item = GEOSGeom_createPoint (cs); - *(geos_coll + nItem++) = geos_item; - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - /* interior ring */ - rng = pg->Interiors + ib; - for (iv = 1; iv < rng->Points; iv++) - { - /* exterior ring */ - z = 0.0; - m = 0.0; - switch (rng->DimensionModel) - { - case GAIA_XY_Z: - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - break; - case GAIA_XY_M: - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - break; - default: - gaiaGetPoint (rng->Coords, iv, &x, &y); - break; - }; - cs = GEOSCoordSeq_create (1, dims); - if (dims == 3) - { - GEOSCoordSeq_setX (cs, 0, x); - GEOSCoordSeq_setY (cs, 0, y); - GEOSCoordSeq_setZ (cs, 0, z); - } - else - { - GEOSCoordSeq_setX (cs, 0, x); - GEOSCoordSeq_setY (cs, 0, y); - } - geos_item = GEOSGeom_createPoint (cs); - *(geos_coll + nItem++) = geos_item; - } - } - pg = pg->Next; - } - geos = GEOSGeom_createCollection (GEOS_MULTIPOINT, geos_coll, pts); - free (geos_coll); - GEOSSetSRID (geos, gaia->Srid); - return geos; -} - -static GEOSGeometry * -buildGeosSegments (const gaiaGeomCollPtr gaia) -{ -/* converting a GAIA Geometry into a GEOS Geometry of SEGMENTS */ - int segms = 0; - unsigned int dims; - int iv; - int ib; - int nItem; - double x; - double y; - double z; - double m; - double x0; - double y0; - double z0; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - GEOSGeometry *geos; - GEOSGeometry *geos_item; - GEOSGeometry **geos_coll; - GEOSCoordSequence *cs; - if (!gaia) - return NULL; - ln = gaia->FirstLinestring; - while (ln) - { - /* counting how many SEGMENTs are there */ - segms += ln->Points - 1; - ln = ln->Next; - } - pg = gaia->FirstPolygon; - while (pg) - { - /* counting how many SEGMENTs are there */ - rng = pg->Exterior; - segms += rng->Points - 1; /* exterior ring */ - for (ib = 0; ib < pg->NumInteriors; ib++) - { - /* interior ring */ - rng = pg->Interiors + ib; - segms += rng->Points - 1; - } - pg = pg->Next; - } - if (segms == 0) - return NULL; - switch (gaia->DimensionModel) - { - case GAIA_XY_Z: - case GAIA_XY_Z_M: - dims = 3; - break; - default: - dims = 2; - break; - }; - nItem = 0; - geos_coll = malloc (sizeof (GEOSGeometry *) * (segms)); - ln = gaia->FirstLinestring; - while (ln) - { - for (iv = 0; iv < ln->Points; iv++) - { - z = 0.0; - m = 0.0; - switch (ln->DimensionModel) - { - case GAIA_XY_Z: - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - break; - case GAIA_XY_M: - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - break; - default: - gaiaGetPoint (ln->Coords, iv, &x, &y); - break; - }; - if (iv > 0) - { - cs = GEOSCoordSeq_create (2, dims); - if (dims == 3) - { - GEOSCoordSeq_setX (cs, 0, x0); - GEOSCoordSeq_setY (cs, 0, y0); - GEOSCoordSeq_setZ (cs, 0, z0); - GEOSCoordSeq_setX (cs, 1, x); - GEOSCoordSeq_setY (cs, 1, y); - GEOSCoordSeq_setZ (cs, 1, z); - } - else - { - GEOSCoordSeq_setX (cs, 0, x0); - GEOSCoordSeq_setY (cs, 0, y0); - GEOSCoordSeq_setX (cs, 1, x); - GEOSCoordSeq_setY (cs, 1, y); - } - geos_item = GEOSGeom_createLineString (cs); - *(geos_coll + nItem++) = geos_item; - } - x0 = x; - y0 = y; - z0 = z; - } - ln = ln->Next; - } - pg = gaia->FirstPolygon; - while (pg) - { - rng = pg->Exterior; - for (iv = 0; iv < rng->Points; iv++) - { - /* exterior ring */ - z = 0.0; - m = 0.0; - switch (rng->DimensionModel) - { - case GAIA_XY_Z: - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - break; - case GAIA_XY_M: - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - break; - default: - gaiaGetPoint (rng->Coords, iv, &x, &y); - break; - }; - if (iv > 0) - { - cs = GEOSCoordSeq_create (2, dims); - if (dims == 3) - { - GEOSCoordSeq_setX (cs, 0, x0); - GEOSCoordSeq_setY (cs, 0, y0); - GEOSCoordSeq_setZ (cs, 0, z0); - GEOSCoordSeq_setX (cs, 1, x); - GEOSCoordSeq_setY (cs, 1, y); - GEOSCoordSeq_setZ (cs, 1, z); - } - else - { - GEOSCoordSeq_setX (cs, 0, x0); - GEOSCoordSeq_setY (cs, 0, y0); - GEOSCoordSeq_setX (cs, 1, x); - GEOSCoordSeq_setY (cs, 1, y); - } - geos_item = GEOSGeom_createLineString (cs); - *(geos_coll + nItem++) = geos_item; - } - x0 = x; - y0 = y; - z0 = z; - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - /* interior ring */ - rng = pg->Interiors + ib; - for (iv = 0; iv < rng->Points; iv++) - { - /* exterior ring */ - z = 0.0; - m = 0.0; - switch (rng->DimensionModel) - { - case GAIA_XY_Z: - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - break; - case GAIA_XY_M: - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - break; - case GAIA_XY_Z_M: - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - break; - default: - gaiaGetPoint (rng->Coords, iv, &x, &y); - break; - }; - if (iv > 0) - { - cs = GEOSCoordSeq_create (2, dims); - if (dims == 3) - { - GEOSCoordSeq_setX (cs, 0, x0); - GEOSCoordSeq_setY (cs, 0, y0); - GEOSCoordSeq_setZ (cs, 0, z0); - GEOSCoordSeq_setX (cs, 1, x); - GEOSCoordSeq_setY (cs, 1, y); - GEOSCoordSeq_setZ (cs, 1, z); - } - else - { - GEOSCoordSeq_setX (cs, 0, x0); - GEOSCoordSeq_setY (cs, 0, y0); - GEOSCoordSeq_setX (cs, 1, x); - GEOSCoordSeq_setY (cs, 1, y); - } - geos_item = GEOSGeom_createLineString (cs); - *(geos_coll + nItem++) = geos_item; - } - x0 = x; - y0 = y; - z0 = z; - } - } - pg = pg->Next; - } - geos = GEOSGeom_createCollection (GEOS_MULTILINESTRING, geos_coll, segms); - free (geos_coll); - GEOSSetSRID (geos, gaia->Srid); - return geos; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaShortestLine (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* attempts to compute the the shortest line between two geometries */ - GEOSGeometry *g1_points; - GEOSGeometry *g1_segments; - const GEOSGeometry *g1_item; - GEOSGeometry *g2_points; - GEOSGeometry *g2_segments; - const GEOSGeometry *g2_item; - const GEOSCoordSequence *cs; - GEOSGeometry *g_pt; - gaiaGeomCollPtr result; - gaiaLinestringPtr ln; - int nItems1; - int nItems2; - int it1; - int it2; - unsigned int dims; - double x_ini; - double y_ini; - double z_ini; - double x_fin; - double y_fin; - double z_fin; - double dist; - double min_dist = DBL_MAX; - double projection; - if (!geom1 || !geom2) - return NULL; - - g1_points = buildGeosPoints (geom1); - g1_segments = buildGeosSegments (geom1); - g2_points = buildGeosPoints (geom2); - g2_segments = buildGeosSegments (geom2); - - if (g1_points && g2_points) - { - /* computing distances between POINTs */ - nItems1 = GEOSGetNumGeometries (g1_points); - nItems2 = GEOSGetNumGeometries (g2_points); - for (it1 = 0; it1 < nItems1; it1++) - { - g1_item = GEOSGetGeometryN (g1_points, it1); - for (it2 = 0; it2 < nItems2; it2++) - { - g2_item = GEOSGetGeometryN (g2_points, it2); - if (GEOSDistance (g1_item, g2_item, &dist)) - { - if (dist < min_dist) - { - /* saving min-dist points */ - min_dist = dist; - cs = GEOSGeom_getCoordSeq (g1_item); - GEOSCoordSeq_getDimensions (cs, &dims); - if (dims == 3) - { - GEOSCoordSeq_getX (cs, 0, &x_ini); - GEOSCoordSeq_getY (cs, 0, &y_ini); - GEOSCoordSeq_getZ (cs, 0, &z_ini); - } - else - { - GEOSCoordSeq_getX (cs, 0, &x_ini); - GEOSCoordSeq_getY (cs, 0, &y_ini); - z_ini = 0.0; - } - cs = GEOSGeom_getCoordSeq (g2_item); - GEOSCoordSeq_getDimensions (cs, &dims); - if (dims == 3) - { - GEOSCoordSeq_getX (cs, 0, &x_fin); - GEOSCoordSeq_getY (cs, 0, &y_fin); - GEOSCoordSeq_getZ (cs, 0, &z_fin); - } - else - { - GEOSCoordSeq_getX (cs, 0, &x_fin); - GEOSCoordSeq_getY (cs, 0, &y_fin); - z_fin = 0.0; - } - } - } - } - } - } - - if (g1_points && g2_segments) - { - /* computing distances between POINTs (g1) and SEGMENTs (g2) */ - nItems1 = GEOSGetNumGeometries (g1_points); - nItems2 = GEOSGetNumGeometries (g2_segments); - for (it1 = 0; it1 < nItems1; it1++) - { - g1_item = GEOSGetGeometryN (g1_points, it1); - for (it2 = 0; it2 < nItems2; it2++) - { - g2_item = GEOSGetGeometryN (g2_segments, it2); - if (GEOSDistance (g1_item, g2_item, &dist)) - { - if (dist < min_dist) - { - /* saving min-dist points */ - projection = GEOSProject (g2_item, g1_item); - g_pt = GEOSInterpolate (g2_item, projection); - if (g_pt) - { - min_dist = dist; - cs = GEOSGeom_getCoordSeq (g1_item); - GEOSCoordSeq_getDimensions (cs, &dims); - if (dims == 3) - { - GEOSCoordSeq_getX (cs, 0, &x_ini); - GEOSCoordSeq_getY (cs, 0, &y_ini); - GEOSCoordSeq_getZ (cs, 0, &z_ini); - } - else - { - GEOSCoordSeq_getX (cs, 0, &x_ini); - GEOSCoordSeq_getY (cs, 0, &y_ini); - z_ini = 0.0; - } - cs = GEOSGeom_getCoordSeq (g_pt); - GEOSCoordSeq_getDimensions (cs, &dims); - if (dims == 3) - { - GEOSCoordSeq_getX (cs, 0, &x_fin); - GEOSCoordSeq_getY (cs, 0, &y_fin); - GEOSCoordSeq_getZ (cs, 0, &z_fin); - } - else - { - GEOSCoordSeq_getX (cs, 0, &x_fin); - GEOSCoordSeq_getY (cs, 0, &y_fin); - z_fin = 0.0; - } - GEOSGeom_destroy (g_pt); - } - } - } - } - } - } - - if (g1_segments && g2_points) - { - /* computing distances between SEGMENTs (g1) and POINTs (g2) */ - nItems1 = GEOSGetNumGeometries (g1_segments); - nItems2 = GEOSGetNumGeometries (g2_points); - for (it1 = 0; it1 < nItems1; it1++) - { - g1_item = GEOSGetGeometryN (g1_segments, it1); - for (it2 = 0; it2 < nItems2; it2++) - { - g2_item = GEOSGetGeometryN (g2_points, it2); - if (GEOSDistance (g1_item, g2_item, &dist)) - { - if (dist < min_dist) - { - /* saving min-dist points */ - projection = GEOSProject (g1_item, g2_item); - g_pt = GEOSInterpolate (g1_item, projection); - if (g_pt) - { - min_dist = dist; - cs = GEOSGeom_getCoordSeq (g_pt); - GEOSCoordSeq_getDimensions (cs, &dims); - if (dims == 3) - { - GEOSCoordSeq_getX (cs, 0, &x_ini); - GEOSCoordSeq_getY (cs, 0, &y_ini); - GEOSCoordSeq_getZ (cs, 0, &z_ini); - } - else - { - GEOSCoordSeq_getX (cs, 0, &x_ini); - GEOSCoordSeq_getY (cs, 0, &y_ini); - z_ini = 0.0; - } - cs = GEOSGeom_getCoordSeq (g2_item); - GEOSCoordSeq_getDimensions (cs, &dims); - if (dims == 3) - { - GEOSCoordSeq_getX (cs, 0, &x_fin); - GEOSCoordSeq_getY (cs, 0, &y_fin); - GEOSCoordSeq_getZ (cs, 0, &z_fin); - } - else - { - GEOSCoordSeq_getX (cs, 0, &x_fin); - GEOSCoordSeq_getY (cs, 0, &y_fin); - z_fin = 0.0; - } - GEOSGeom_destroy (g_pt); - } - } - } - } - } - } - if (g1_points) - GEOSGeom_destroy (g1_points); - if (g1_segments) - GEOSGeom_destroy (g1_segments); - if (g2_points) - GEOSGeom_destroy (g2_points); - if (g2_segments) - GEOSGeom_destroy (g2_segments); - if (min_dist == DBL_MAX || min_dist <= 0.0) - return NULL; - -/* building the shortest line */ - switch (geom1->DimensionModel) - { - case GAIA_XY_Z: - result = gaiaAllocGeomCollXYZ (); - break; - case GAIA_XY_M: - result = gaiaAllocGeomCollXYM (); - break; - case GAIA_XY_Z_M: - result = gaiaAllocGeomCollXYZM (); - break; - default: - result = gaiaAllocGeomColl (); - break; - }; - result->Srid = geom1->Srid; - ln = gaiaAddLinestringToGeomColl (result, 2); - switch (ln->DimensionModel) - { - case GAIA_XY_Z: - gaiaSetPointXYZ (ln->Coords, 0, x_ini, y_ini, z_ini); - gaiaSetPointXYZ (ln->Coords, 1, x_fin, y_fin, z_fin); - break; - case GAIA_XY_M: - gaiaSetPointXYM (ln->Coords, 0, x_ini, y_ini, 0.0); - gaiaSetPointXYM (ln->Coords, 1, x_fin, y_fin, 0.0); - break; - case GAIA_XY_Z_M: - gaiaSetPointXYZM (ln->Coords, 0, x_ini, y_ini, z_ini, 0.0); - gaiaSetPointXYZM (ln->Coords, 1, x_fin, y_fin, z_fin, 0.0); - break; - default: - gaiaSetPoint (ln->Coords, 0, x_ini, y_ini); - gaiaSetPoint (ln->Coords, 1, x_fin, y_fin); - break; - }; - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaSnap (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, double tolerance) -{ -/* attempts to "snap" geom1 on geom2 using the given tolerance */ - GEOSGeometry *g1; - GEOSGeometry *g2; - GEOSGeometry *g3; - gaiaGeomCollPtr result; - if (!geom1 || !geom2) - return NULL; - - g1 = gaiaToGeos (geom1); - g2 = gaiaToGeos (geom2); - g3 = GEOSSnap (g1, g2, tolerance); - GEOSGeom_destroy (g1); - GEOSGeom_destroy (g2); - if (!g3) - return NULL; - if (geom1->DimensionModel == GAIA_XY_Z) - result = gaiaFromGeos_XYZ (g3); - else if (geom1->DimensionModel == GAIA_XY_M) - result = gaiaFromGeos_XYM (g3); - else if (geom1->DimensionModel == GAIA_XY_Z_M) - result = gaiaFromGeos_XYZM (g3); - else - result = gaiaFromGeos_XY (g3); - GEOSGeom_destroy (g3); - if (result == NULL) - return NULL; - result->Srid = geom1->Srid; - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaLineMerge (gaiaGeomCollPtr geom) -{ -/* attempts to reassemble lines from a collection of sparse fragments */ - GEOSGeometry *g1; - GEOSGeometry *g2; - gaiaGeomCollPtr result; - if (!geom) - return NULL; - if (gaiaIsToxic (geom)) - return NULL; - - g1 = gaiaToGeos (geom); - g2 = GEOSLineMerge (g1); - GEOSGeom_destroy (g1); - if (!g2) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaFromGeos_XYZ (g2); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaFromGeos_XYM (g2); - else if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaFromGeos_XYZM (g2); - else - result = gaiaFromGeos_XY (g2); - GEOSGeom_destroy (g2); - if (result == NULL) - return NULL; - result->Srid = geom->Srid; - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaUnaryUnion (gaiaGeomCollPtr geom) -{ -/* Unary Union (single Collection) */ - GEOSGeometry *g1; - GEOSGeometry *g2; - gaiaGeomCollPtr result; - if (!geom) - return NULL; - if (gaiaIsToxic (geom)) - return NULL; - g1 = gaiaToGeos (geom); - g2 = GEOSUnaryUnion (g1); - GEOSGeom_destroy (g1); - if (!g2) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaFromGeos_XYZ (g2); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaFromGeos_XYM (g2); - else if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaFromGeos_XYZM (g2); - else - result = gaiaFromGeos_XY (g2); - GEOSGeom_destroy (g2); - if (result == NULL) - return NULL; - result->Srid = geom->Srid; - return result; -} - -static void -rotateRingBeforeCut (gaiaLinestringPtr ln, gaiaPointPtr node) -{ -/* rotating a Ring, so to ensure that Start/End points match the node */ - int io = 0; - int iv; - int copy = 0; - int base_idx = -1; - double x; - double y; - double z; - double m; - gaiaLinestringPtr new_ln = NULL; - - if (ln->DimensionModel == GAIA_XY_Z) - new_ln = gaiaAllocLinestringXYZ (ln->Points); - else if (ln->DimensionModel == GAIA_XY_M) - new_ln = gaiaAllocLinestringXYM (ln->Points); - else if (ln->DimensionModel == GAIA_XY_Z_M) - new_ln = gaiaAllocLinestringXYZM (ln->Points); - else - new_ln = gaiaAllocLinestring (ln->Points); - -/* first pass */ - for (iv = 0; iv < ln->Points; iv++) - { - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - if (!copy) /* CAZZO */ - { - if (ln->DimensionModel == GAIA_XY_Z - || ln->DimensionModel == GAIA_XY_Z_M) - { - if (node->X == x && node->Y == y && node->Z == z) - { - base_idx = iv; - copy = 1; - } - } - else if (node->X == x && node->Y == y) - { - base_idx = iv; - copy = 1; - } - } - if (copy) - { - /* copying points */ - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (new_ln->Coords, io, x, y, z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (new_ln->Coords, io, x, y, m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (new_ln->Coords, io, x, y, z, m); - } - else - { - gaiaSetPoint (new_ln->Coords, io, x, y); - } - io++; - } - } - if (base_idx <= 0) - { - gaiaFreeLinestring (new_ln); - return; - } - -/* second pass */ - for (iv = 1; iv <= base_idx; iv++) - { - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (new_ln->Coords, io, x, y, z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (new_ln->Coords, io, x, y, m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (new_ln->Coords, io, x, y, z, m); - } - else - { - gaiaSetPoint (new_ln->Coords, io, x, y); - } - io++; - } - -/* copying back */ - for (iv = 0; iv < new_ln->Points; iv++) - { - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (new_ln->Coords, iv, &x, &y, &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (new_ln->Coords, iv, &x, &y, &m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (new_ln->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (new_ln->Coords, iv, &x, &y); - } - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, iv, x, y, z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, iv, x, y, m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ln->Coords, iv, x, y); - } - } - gaiaFreeLinestring (new_ln); -} - -static void -extractSubLine (gaiaGeomCollPtr result, gaiaLinestringPtr ln, int i_start, - int i_end) -{ -/* extracting s SubLine */ - int iv; - int io = 0; - int pts = i_end - i_start + 1; - gaiaLinestringPtr new_ln = NULL; - double x; - double y; - double z; - double m; - - new_ln = gaiaAddLinestringToGeomColl (result, pts); - - for (iv = i_start; iv <= i_end; iv++) - { - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (new_ln->Coords, io, x, y, z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (new_ln->Coords, io, x, y, m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (new_ln->Coords, io, x, y, z, m); - } - else - { - gaiaSetPoint (new_ln->Coords, io, x, y); - } - io++; - } -} - -static void -cutLineAtNodes (gaiaLinestringPtr ln, gaiaPointPtr pt_base, - gaiaGeomCollPtr result) -{ -/* attempts to cut a single Line accordingly to given nodes */ - int closed = 0; - int match = 0; - int iv; - int i_start; - double x; - double y; - double z; - double m; - gaiaPointPtr pt; - gaiaPointPtr node = NULL; - - if (gaiaIsClosed (ln)) - closed = 1; -/* pre-check */ - for (iv = 0; iv < ln->Points; iv++) - { - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - pt = pt_base; - while (pt) - { - if (ln->DimensionModel == GAIA_XY_Z - || ln->DimensionModel == GAIA_XY_Z_M) - { - if (pt->X == x && pt->Y == y && pt->Z == z) - { - node = pt; - match++; - } - } - else if (pt->X == x && pt->Y == y) - { - node = pt; - match++; - } - pt = pt->Next; - } - } - - if (closed && node) - rotateRingBeforeCut (ln, node); - - i_start = 0; - for (iv = 1; iv < ln->Points - 1; iv++) - { - /* identifying sub-linestrings */ - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - } - match = 0; - pt = pt_base; - while (pt) - { - if (ln->DimensionModel == GAIA_XY_Z - || ln->DimensionModel == GAIA_XY_Z_M) - { - if (pt->X == x && pt->Y == y && pt->Z == z) - { - match = 1; - break; - } - } - else if (pt->X == x && pt->Y == y) - { - match = 1; - break; - } - pt = pt->Next; - } - if (match) - { - /* cutting the line */ - extractSubLine (result, ln, i_start, iv); - i_start = iv; - } - } - if (i_start != 0 && i_start != ln->Points - 1) - { - /* extracting the last SubLine */ - extractSubLine (result, ln, i_start, ln->Points - 1); - } - else - { - /* cloning the untouched Line */ - extractSubLine (result, ln, 0, ln->Points - 1); - } -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaLinesCutAtNodes (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) -{ -/* attempts to cut lines accordingly to nodes */ - int pts1 = 0; - int lns1 = 0; - int pgs1 = 0; - int pts2 = 0; - int lns2 = 0; - int pgs2 = 0; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaGeomCollPtr result = NULL; - - if (!geom1) - return NULL; - if (!geom2) - return NULL; - -/* both Geometryes should have identical Dimensions */ - if (geom1->DimensionModel != geom2->DimensionModel) - return NULL; - - pt = geom1->FirstPoint; - while (pt) - { - pts1++; - pt = pt->Next; - } - ln = geom1->FirstLinestring; - while (ln) - { - lns1++; - ln = ln->Next; - } - pg = geom1->FirstPolygon; - while (pg) - { - pgs1++; - pg = pg->Next; - } - pt = geom2->FirstPoint; - while (pt) - { - pts2++; - pt = pt->Next; - } - ln = geom2->FirstLinestring; - while (ln) - { - lns2++; - ln = ln->Next; - } - pg = geom2->FirstPolygon; - while (pg) - { - pgs2++; - pg = pg->Next; - } - -/* the first Geometry is expected to contain one or more Linestring(s) */ - if (pts1 == 0 && lns1 > 0 && pgs1 == 0) - ; - else - return NULL; -/* the second Geometry is expected to contain one or more Point(s) */ - if (pts2 > 0 && lns2 == 0 && pgs2 == 0) - ; - else - return NULL; - -/* attempting to cut Lines accordingly to Nodes */ - if (geom1->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (geom1->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else if (geom1->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else - result = gaiaAllocGeomColl (); - ln = geom1->FirstLinestring; - while (ln) - { - cutLineAtNodes (ln, geom2->FirstPoint, result); - ln = ln->Next; - } - if (result->FirstLinestring == NULL) - { - gaiaFreeGeomColl (result); - return NULL; - } - result->Srid = geom1->Srid; - return result; -} - -#endif /* end GEOS advanced features */ - -#ifdef GEOS_TRUNK /* GEOS experimental features */ - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaDelaunayTriangulation (gaiaGeomCollPtr geom, double tolerance, - int only_edges) -{ -/* Delaunay Triangulation */ - GEOSGeometry *g1; - GEOSGeometry *g2; - gaiaGeomCollPtr result; - if (!geom) - return NULL; - g1 = gaiaToGeos (geom); - g2 = GEOSDelaunayTriangulation (g1, tolerance, only_edges); - GEOSGeom_destroy (g1); - if (!g2) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaFromGeos_XYZ (g2); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaFromGeos_XYM (g2); - else if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaFromGeos_XYZM (g2); - else - result = gaiaFromGeos_XY (g2); - GEOSGeom_destroy (g2); - if (result == NULL) - return NULL; - result->Srid = geom->Srid; - if (only_edges) - result->DeclaredType = GAIA_MULTILINESTRING; - else - result->DeclaredType = GAIA_MULTIPOLYGON; - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaVoronojDiagram (gaiaGeomCollPtr geom, double extra_frame_size, - double tolerance, int only_edges) -{ -/* Voronoj Diagram */ - GEOSGeometry *g1; - GEOSGeometry *g2; - gaiaGeomCollPtr result; - gaiaPolygonPtr pg; - int pgs = 0; - int errs = 0; - void *voronoj; - if (!geom) - return NULL; - g1 = gaiaToGeos (geom); - g2 = GEOSDelaunayTriangulation (g1, tolerance, 0); - GEOSGeom_destroy (g1); - if (!g2) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaFromGeos_XYZ (g2); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaFromGeos_XYM (g2); - else if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaFromGeos_XYZM (g2); - else - result = gaiaFromGeos_XY (g2); - GEOSGeom_destroy (g2); - if (result == NULL) - return NULL; - pg = result->FirstPolygon; - while (pg) - { - /* counting how many triangles are in Delaunay */ - if (delaunay_triangle_check (pg)) - pgs++; - else - errs++; - pg = pg->Next; - } - if (pgs == 0 || errs) - { - gaiaFreeGeomColl (result); - return NULL; - } - -/* building the Voronoj Diagram from Delaunay */ - voronoj = voronoj_build (pgs, result->FirstPolygon, extra_frame_size); - gaiaFreeGeomColl (result); - -/* creating the Geometry representing Voronoj */ - if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else - result = gaiaAllocGeomColl (); - result = voronoj_export (voronoj, result, only_edges); - voronoj_free (voronoj); - - result->Srid = geom->Srid; - if (only_edges) - result->DeclaredType = GAIA_MULTILINESTRING; - else - result->DeclaredType = GAIA_MULTIPOLYGON; - return result; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaConcaveHull (gaiaGeomCollPtr geom, double factor, double tolerance, - int allow_holes) -{ -/* Concave Hull */ - GEOSGeometry *g1; - GEOSGeometry *g2; - gaiaGeomCollPtr result; - gaiaGeomCollPtr concave_hull; - gaiaPolygonPtr pg; - int pgs = 0; - int errs = 0; - if (!geom) - return NULL; - g1 = gaiaToGeos (geom); - g2 = GEOSDelaunayTriangulation (g1, tolerance, 0); - GEOSGeom_destroy (g1); - if (!g2) - return NULL; - if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaFromGeos_XYZ (g2); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaFromGeos_XYM (g2); - else if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaFromGeos_XYZM (g2); - else - result = gaiaFromGeos_XY (g2); - GEOSGeom_destroy (g2); - if (result == NULL) - return NULL; - pg = result->FirstPolygon; - while (pg) - { - /* counting how many triangles are in Delaunay */ - if (delaunay_triangle_check (pg)) - pgs++; - else - errs++; - pg = pg->Next; - } - if (pgs == 0 || errs) - { - gaiaFreeGeomColl (result); - return NULL; - } - -/* building the Concave Hull from Delaunay */ - concave_hull = - concave_hull_build (result->FirstPolygon, geom->DimensionModel, factor, - allow_holes); - gaiaFreeGeomColl (result); - if (!concave_hull) - return NULL; - result = concave_hull; - - result->Srid = geom->Srid; - return result; -} - -#endif /* end GEOS experimental features */ - -#endif /* end including GEOS */ diff --git a/src/spatialite/src/gaiageo/gg_shape.c b/src/spatialite/src/gaiageo/gg_shape.c deleted file mode 100644 index 91ecf59..0000000 --- a/src/spatialite/src/gaiageo/gg_shape.c +++ /dev/null @@ -1,4903 +0,0 @@ -/* - - gg_shape.c -- Gaia shapefile handling - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#if OMIT_ICONV == 0 /* if ICONV is disabled no SHP support is available */ - -#if defined(__MINGW32__) || defined(_WIN32) -#define LIBICONV_STATIC -#include -#define LIBCHARSET_STATIC -#ifdef _MSC_VER -/* isn't supported on OSGeo4W */ -/* applying a tricky workaround to fix this issue */ -extern const char *locale_charset (void); -#else /* sane Windows - not OSGeo4W */ -#include -#endif /* end localcharset */ -#else /* not MINGW32 */ -#if defined(__APPLE__) || defined(__ANDROID__) -#include -#include -#else /* neither Mac OsX nor Android */ -#include -#include -#endif -#endif - -#define iconv libiconv -#define iconv_open libiconv_open -#define iconv_close libiconv_close - -#include - -#include - -#ifdef _WIN32 -#define atoll _atoi64 -#endif /* not WIN32 */ - -#define SHAPEFILE_NO_DATA 1e-38 - -GAIAGEO_DECLARE void -gaiaFreeValue (gaiaValuePtr p) -{ -/* frees all memory allocations for this DBF Field value */ - if (!p) - return; - if (p->TxtValue) - free (p->TxtValue); - free (p); -} - -GAIAGEO_DECLARE void -gaiaSetNullValue (gaiaDbfFieldPtr field) -{ -/* assignes a NULL value to some DBF field */ - if (field->Value) - gaiaFreeValue (field->Value); - field->Value = malloc (sizeof (gaiaValue)); - field->Value->Type = GAIA_NULL_VALUE; - field->Value->TxtValue = NULL; -} - -GAIAGEO_DECLARE void -gaiaSetIntValue (gaiaDbfFieldPtr field, sqlite3_int64 value) -{ -/* assignes an INTEGER value to some DBF field */ - if (field->Value) - gaiaFreeValue (field->Value); - field->Value = malloc (sizeof (gaiaValue)); - field->Value->Type = GAIA_INT_VALUE; - field->Value->TxtValue = NULL; - field->Value->IntValue = value; -} - -GAIAGEO_DECLARE void -gaiaSetDoubleValue (gaiaDbfFieldPtr field, double value) -{ -/* assignes a DOUBLE value to some DBF field */ - if (field->Value) - gaiaFreeValue (field->Value); - field->Value = malloc (sizeof (gaiaValue)); - field->Value->Type = GAIA_DOUBLE_VALUE; - field->Value->TxtValue = NULL; - field->Value->DblValue = value; -} - -GAIAGEO_DECLARE void -gaiaSetStrValue (gaiaDbfFieldPtr field, char *str) -{ -/* assignes a STRING value to some DBF field */ - int len = strlen (str); - if (field->Value) - gaiaFreeValue (field->Value); - field->Value = malloc (sizeof (gaiaValue)); - field->Value->Type = GAIA_TEXT_VALUE; - field->Value->TxtValue = malloc (len + 1); - strcpy (field->Value->TxtValue, str); -} - -GAIAGEO_DECLARE gaiaDbfFieldPtr -gaiaAllocDbfField (char *name, unsigned char type, - int offset, unsigned char length, unsigned char decimals) -{ -/* allocates and initializes a DBF Field definition */ - gaiaDbfFieldPtr p = malloc (sizeof (gaiaDbfField)); - int len = strlen (name); - p->Name = malloc (len + 1); - strcpy (p->Name, name); - p->Type = type; - p->Offset = offset; - p->Length = length; - p->Decimals = decimals; - p->Value = NULL; - p->Next = NULL; - return p; -} - -GAIAGEO_DECLARE void -gaiaFreeDbfField (gaiaDbfFieldPtr p) -{ -/* frees all memory allocations for this DBF Field definition */ - if (!p) - return; - if (p->Name) - free (p->Name); - if (p->Value) - gaiaFreeValue (p->Value); - free (p); -} - -GAIAGEO_DECLARE gaiaDbfFieldPtr -gaiaCloneDbfField (gaiaDbfFieldPtr org) -{ -/* creating a new DBF LIST copied from the original one */ - gaiaDbfFieldPtr p = malloc (sizeof (gaiaDbfField)); - int len = strlen (org->Name); - p->Name = malloc (len + 1); - strcpy (p->Name, org->Name); - p->Type = org->Type; - p->Offset = org->Offset; - p->Length = org->Length; - p->Decimals = org->Decimals; - p->Value = gaiaCloneValue (org->Value); - p->Next = NULL; - return p; -} - -GAIAGEO_DECLARE gaiaDbfListPtr -gaiaAllocDbfList () -{ -/* allocates and initializes the DBF Fields list */ - gaiaDbfListPtr list = malloc (sizeof (gaiaDbfList)); - list->RowId = 0; - list->Geometry = NULL; - list->First = NULL; - list->Last = NULL; - return list; -} - -GAIAGEO_DECLARE void -gaiaFreeDbfList (gaiaDbfListPtr list) -{ -/* frees all memory allocations related to DBF Fields list */ - gaiaDbfFieldPtr p; - gaiaDbfFieldPtr pn; - if (!list) - return; - p = list->First; - while (p) - { - pn = p->Next; - gaiaFreeDbfField (p); - p = pn; - } - if (list->Geometry) - gaiaFreeGeomColl (list->Geometry); - free (list); -} - -GAIAGEO_DECLARE int -gaiaIsValidDbfList (gaiaDbfListPtr list) -{ -/* checks if the DBF fields list contains any invalid data type */ - gaiaDbfFieldPtr p; - if (!list) - return 0; - p = list->First; - while (p) - { - if (p->Type == 'N' || p->Type == 'C' || p->Type == 'L' - || p->Type == 'D' || p->Type == 'F') - ; - else - return 0; - p = p->Next; - } - return 1; -} - -GAIAGEO_DECLARE gaiaDbfFieldPtr -gaiaAddDbfField (gaiaDbfListPtr list, char *name, unsigned char type, - int offset, unsigned char length, unsigned char decimals) -{ -/* inserts a Field in the DBF Fields list */ - gaiaDbfFieldPtr p; - if (!list) - return NULL; - p = gaiaAllocDbfField (name, type, offset, length, decimals); - if (!(list->First)) - list->First = p; - if (list->Last) - list->Last->Next = p; - list->Last = p; - return p; -} - -GAIAGEO_DECLARE void -gaiaResetDbfEntity (gaiaDbfListPtr list) -{ -/* resets data values */ - gaiaDbfFieldPtr p; - if (!list) - return; - p = list->First; - while (p) - { - if (p->Value) - gaiaFreeValue (p->Value); - p->Value = NULL; - p = p->Next; - } - if (list->Geometry) - gaiaFreeGeomColl (list->Geometry); - list->Geometry = NULL; -} - -GAIAGEO_DECLARE gaiaValuePtr -gaiaCloneValue (gaiaValuePtr org) -{ -/* creating a new VARIANT value copied from the original one */ - gaiaValuePtr value; - int len; - value = malloc (sizeof (gaiaValue)); - value->Type = GAIA_NULL_VALUE; - value->TxtValue = NULL; - switch (org->Type) - { - case GAIA_INT_VALUE: - value->Type = GAIA_INT_VALUE; - value->IntValue = org->IntValue; - break; - case GAIA_DOUBLE_VALUE: - value->Type = GAIA_DOUBLE_VALUE; - value->DblValue = org->DblValue; - break; - case GAIA_TEXT_VALUE: - value->Type = GAIA_TEXT_VALUE; - len = strlen (org->TxtValue); - value->TxtValue = malloc (len + 1); - strcpy (value->TxtValue, org->TxtValue); - }; - return value; -} - -GAIAGEO_DECLARE gaiaDbfListPtr -gaiaCloneDbfEntity (gaiaDbfListPtr org) -{ -/* creating a new DBF LIST copied from the original one */ - gaiaDbfFieldPtr p; - gaiaDbfFieldPtr newFld; - gaiaDbfListPtr entity = gaiaAllocDbfList (); - entity->RowId = org->RowId; - if (org->Geometry) - entity->Geometry = gaiaCloneGeomColl (org->Geometry); - p = org->First; - while (p) - { - newFld = - gaiaAddDbfField (entity, p->Name, p->Type, p->Offset, p->Length, - p->Decimals); - if (p->Value) - newFld->Value = gaiaCloneValue (p->Value); - p = p->Next; - } - return entity; -} - -GAIAGEO_DECLARE gaiaShapefilePtr -gaiaAllocShapefile () -{ -/* allocates and initializes the Shapefile object */ - gaiaShapefilePtr shp = malloc (sizeof (gaiaShapefile)); - shp->endian_arch = 1; - shp->Path = NULL; - shp->Shape = -1; - shp->EffectiveType = GAIA_UNKNOWN; - shp->EffectiveDims = GAIA_XY; - shp->flShp = NULL; - shp->flShx = NULL; - shp->flDbf = NULL; - shp->Dbf = NULL; - shp->BufShp = NULL; - shp->ShpBfsz = 0; - shp->BufDbf = NULL; - shp->DbfHdsz = 0; - shp->DbfReclen = 0; - shp->DbfSize = 0; - shp->DbfRecno = 0; - shp->ShpSize = 0; - shp->ShxSize = 0; - shp->MinX = DBL_MAX; - shp->MinY = DBL_MAX; - shp->MaxX = -DBL_MAX; - shp->MaxY = -DBL_MAX; - shp->Valid = 0; - shp->IconvObj = NULL; - shp->LastError = NULL; - return shp; -} - -GAIAGEO_DECLARE void -gaiaFreeShapefile (gaiaShapefilePtr shp) -{ -/* frees all memory allocations related to the Shapefile object */ - if (shp->Path) - free (shp->Path); - if (shp->flShp) - fclose (shp->flShp); - if (shp->flShx) - fclose (shp->flShx); - if (shp->flDbf) - fclose (shp->flDbf); - if (shp->Dbf) - gaiaFreeDbfList (shp->Dbf); - if (shp->BufShp) - free (shp->BufShp); - if (shp->BufDbf) - free (shp->BufDbf); - if (shp->IconvObj) - iconv_close ((iconv_t) shp->IconvObj); - if (shp->LastError) - free (shp->LastError); - free (shp); -} - -GAIAGEO_DECLARE void -gaiaOpenShpRead (gaiaShapefilePtr shp, const char *path, const char *charFrom, - const char *charTo) -{ -/* trying to open the shapefile and initial checkings */ - FILE *fl_shx = NULL; - FILE *fl_shp = NULL; - FILE *fl_dbf = NULL; - char xpath[1024]; - int rd; - unsigned char buf_shx[256]; - unsigned char *buf_shp = NULL; - int buf_size = 1024; - int shape; - unsigned char bf[1024]; - int dbf_size; - int dbf_reclen = 0; - int off_dbf; - int ind; - char field_name[2048]; - char *sys_err; - char errMsg[1024]; - iconv_t iconv_ret; - char utf8buf[2048]; -#if !defined(__MINGW32__) && defined(_WIN32) - const char *pBuf; -#else /* not WIN32 */ - char *pBuf; -#endif - size_t len; - size_t utf8len; - char *pUtf8buf; - int endian_arch = gaiaEndianArch (); - gaiaDbfListPtr dbf_list = NULL; - if (charFrom && charTo) - { - iconv_ret = iconv_open (charTo, charFrom); - if (iconv_ret == (iconv_t) (-1)) - { - sprintf (errMsg, "conversion from '%s' to '%s' not available\n", - charFrom, charTo); - goto unsupported_conversion; - } - shp->IconvObj = iconv_ret; - } - else - { - sprintf (errMsg, "a NULL charset-name was passed\n"); - goto unsupported_conversion; - } - if (shp->flShp != NULL || shp->flShx != NULL || shp->flDbf != NULL) - { - sprintf (errMsg, - "attempting to reopen an already opened Shapefile\n"); - goto unsupported_conversion; - } - sprintf (xpath, "%s.shx", path); - fl_shx = fopen (xpath, "rb"); - if (!fl_shx) - { - sys_err = strerror (errno); - sprintf (errMsg, "unable to open '%s' for reading: %s", xpath, - sys_err); - goto no_file; - } - sprintf (xpath, "%s.shp", path); - fl_shp = fopen (xpath, "rb"); - if (!fl_shp) - { - sys_err = strerror (errno); - sprintf (errMsg, "unable to open '%s' for reading: %s", xpath, - sys_err); - goto no_file; - } - sprintf (xpath, "%s.dbf", path); - fl_dbf = fopen (xpath, "rb"); - if (!fl_dbf) - { - sys_err = strerror (errno); - sprintf (errMsg, "unable to open '%s' for reading: %s", xpath, - sys_err); - goto no_file; - } -/* reading SHX file header */ - rd = fread (buf_shx, sizeof (unsigned char), 100, fl_shx); - if (rd != 100) - goto error; - if (gaiaImport32 (buf_shx + 0, GAIA_BIG_ENDIAN, endian_arch) != 9994) /* checks the SHX magic number */ - goto error; -/* reading SHP file header */ - buf_shp = malloc (sizeof (unsigned char) * buf_size); - rd = fread (buf_shp, sizeof (unsigned char), 100, fl_shp); - if (rd != 100) - goto error; - if (gaiaImport32 (buf_shp + 0, GAIA_BIG_ENDIAN, endian_arch) != 9994) /* checks the SHP magic number */ - goto error; - shape = gaiaImport32 (buf_shp + 32, GAIA_LITTLE_ENDIAN, endian_arch); - if (shape == GAIA_SHP_POINT || shape == GAIA_SHP_POINTZ - || shape == GAIA_SHP_POINTM || shape == GAIA_SHP_POLYLINE - || shape == GAIA_SHP_POLYLINEZ || shape == GAIA_SHP_POLYLINEM - || shape == GAIA_SHP_POLYGON || shape == GAIA_SHP_POLYGONZ - || shape == GAIA_SHP_POLYGONM || shape == GAIA_SHP_MULTIPOINT - || shape == GAIA_SHP_MULTIPOINTZ || shape == GAIA_SHP_MULTIPOINTM) - ; - else - goto unsupported; -/* reading DBF file header */ - rd = fread (bf, sizeof (unsigned char), 32, fl_dbf); - if (rd != 32) - goto error; - if (*bf != 0x03) /* checks the DBF magic number */ - goto error; - dbf_size = gaiaImport16 (bf + 8, GAIA_LITTLE_ENDIAN, endian_arch); - dbf_reclen = gaiaImport16 (bf + 10, GAIA_LITTLE_ENDIAN, endian_arch); - dbf_size--; - off_dbf = 0; - dbf_list = gaiaAllocDbfList (); - for (ind = 32; ind < dbf_size; ind += 32) - { - /* fetches DBF fields definitions */ - rd = fread (bf, sizeof (unsigned char), 32, fl_dbf); - if (rd != 32) - goto error; - memcpy (field_name, bf, 11); - field_name[11] = '\0'; - len = strlen ((char *) field_name); - utf8len = 2048; - pBuf = (char *) field_name; - pUtf8buf = utf8buf; - if (iconv - ((iconv_t) (shp->IconvObj), &pBuf, &len, &pUtf8buf, - &utf8len) == (size_t) (-1)) - goto conversion_error; - memcpy (field_name, utf8buf, 2048 - utf8len); - field_name[2048 - utf8len] = '\0'; - gaiaAddDbfField (dbf_list, field_name, *(bf + 11), off_dbf, - *(bf + 16), *(bf + 17)); - off_dbf += *(bf + 16); - } - if (!gaiaIsValidDbfList (dbf_list)) - { - /* invalid DBF */ - goto illegal_dbf; - } - len = strlen (path); - shp->Path = malloc (len + 1); - strcpy (shp->Path, path); - shp->ReadOnly = 1; - shp->Shape = shape; - switch (shape) - { - /* setting up a prudential geometry type */ - case GAIA_SHP_POINT: - case GAIA_SHP_POINTZ: - case GAIA_SHP_POINTM: - shp->EffectiveType = GAIA_POINT; - break; - case GAIA_SHP_POLYLINE: - case GAIA_SHP_POLYLINEZ: - case GAIA_SHP_POLYLINEM: - shp->EffectiveType = GAIA_MULTILINESTRING; - break; - case GAIA_SHP_POLYGON: - case GAIA_SHP_POLYGONZ: - case GAIA_SHP_POLYGONM: - shp->EffectiveType = GAIA_MULTIPOLYGON; - break; - case GAIA_SHP_MULTIPOINT: - case GAIA_SHP_MULTIPOINTZ: - case GAIA_SHP_MULTIPOINTM: - shp->EffectiveType = GAIA_MULTIPOINT; - break; - } - switch (shape) - { - /* setting up a prudential dimension model */ - case GAIA_SHP_POINTZ: - case GAIA_SHP_POLYLINEZ: - case GAIA_SHP_POLYGONZ: - case GAIA_SHP_MULTIPOINTZ: - shp->EffectiveDims = GAIA_XY_Z_M; - break; - case GAIA_SHP_POINTM: - case GAIA_SHP_POLYLINEM: - case GAIA_SHP_POLYGONM: - case GAIA_SHP_MULTIPOINTM: - shp->EffectiveDims = GAIA_XY_M; - break; - default: - shp->EffectiveDims = GAIA_XY; - break; - } - shp->flShp = fl_shp; - shp->flShx = fl_shx; - shp->flDbf = fl_dbf; - shp->Dbf = dbf_list; -/* saving the SHP buffer */ - shp->BufShp = buf_shp; - shp->ShpBfsz = buf_size; -/* allocating DBF buffer */ - shp->BufDbf = malloc (sizeof (unsigned char) * dbf_reclen); - shp->DbfHdsz = dbf_size + 1; - shp->DbfReclen = dbf_reclen; - shp->Valid = 1; - shp->endian_arch = endian_arch; - return; - unsupported_conversion: -/* illegal charset */ - if (shp->LastError) - free (shp->LastError); - len = strlen (errMsg); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, errMsg); - return; - no_file: -/* one of shapefile's files can't be accessed */ - if (shp->LastError) - free (shp->LastError); - len = strlen (errMsg); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, errMsg); - if (fl_shx) - fclose (fl_shx); - if (fl_shp) - fclose (fl_shp); - if (fl_dbf) - fclose (fl_dbf); - return; - error: -/* the shapefile is invalid or corrupted */ - if (shp->LastError) - free (shp->LastError); - sprintf (errMsg, "'%s' is corrupted / has invalid format", path); - len = strlen (errMsg); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, errMsg); - gaiaFreeDbfList (dbf_list); - if (buf_shp) - free (buf_shp); - fclose (fl_shx); - fclose (fl_shp); - fclose (fl_dbf); - return; - unsupported: -/* the shapefile has an unrecognized shape type */ - if (shp->LastError) - free (shp->LastError); - sprintf (errMsg, "'%s' shape=%d is not supported", path, shape); - len = strlen (errMsg); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, errMsg); - gaiaFreeDbfList (dbf_list); - if (buf_shp) - free (buf_shp); - fclose (fl_shx); - fclose (fl_shp); - if (fl_dbf) - fclose (fl_dbf); - return; - illegal_dbf: -/* the DBF-file contains unsupported data types */ - if (shp->LastError) - free (shp->LastError); - sprintf (errMsg, "'%s.dbf' contains unsupported data types", path); - len = strlen (errMsg); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, errMsg); - gaiaFreeDbfList (dbf_list); - if (buf_shp) - free (buf_shp); - fclose (fl_shx); - fclose (fl_shp); - if (fl_dbf) - fclose (fl_dbf); - return; - conversion_error: -/* libiconv error */ - if (shp->LastError) - free (shp->LastError); - sprintf (errMsg, "'%s.dbf' field name: invalid character sequence", path); - len = strlen (errMsg); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, errMsg); - gaiaFreeDbfList (dbf_list); - if (buf_shp) - free (buf_shp); - fclose (fl_shx); - fclose (fl_shp); - if (fl_dbf) - fclose (fl_dbf); - return; -} - -GAIAGEO_DECLARE void -gaiaOpenShpWrite (gaiaShapefilePtr shp, const char *path, int shape, - gaiaDbfListPtr dbf_list, const char *charFrom, - const char *charTo) -{ -/* trying to create the shapefile */ - FILE *fl_shx = NULL; - FILE *fl_shp = NULL; - FILE *fl_dbf = NULL; - char xpath[1024]; - unsigned char *buf_shp = NULL; - int buf_size = 1024; - unsigned char *dbf_buf = NULL; - gaiaDbfFieldPtr fld; - char *sys_err; - char errMsg[1024]; - short dbf_reclen = 0; - int shp_size = 0; - int shx_size = 0; - unsigned short dbf_size = 0; - iconv_t iconv_ret; - int endian_arch = gaiaEndianArch (); - char buf[2048]; - char utf8buf[2048]; -#if !defined(__MINGW32__) && defined(_WIN32) - const char *pBuf; -#else /* not WIN32 */ - char *pBuf; -#endif - size_t len; - size_t utf8len; - char *pUtf8buf; - int defaultId = 1; - if (charFrom && charTo) - { - iconv_ret = iconv_open (charTo, charFrom); - if (iconv_ret == (iconv_t) (-1)) - { - sprintf (errMsg, "conversion from '%s' to '%s' not available\n", - charFrom, charTo); - goto unsupported_conversion; - } - shp->IconvObj = iconv_ret; - } - else - { - sprintf (errMsg, "a NULL charset-name was passed\n"); - goto unsupported_conversion; - } - if (shp->flShp != NULL || shp->flShx != NULL || shp->flDbf != NULL) - { - sprintf (errMsg, - "attempting to reopen an already opened Shapefile\n"); - goto unsupported_conversion; - } - buf_shp = malloc (buf_size); -/* trying to open shapefile files */ - sprintf (xpath, "%s.shx", path); - fl_shx = fopen (xpath, "wb"); - if (!fl_shx) - { - sys_err = strerror (errno); - sprintf (errMsg, "unable to open '%s' for writing: %s", xpath, - sys_err); - goto no_file; - } - sprintf (xpath, "%s.shp", path); - fl_shp = fopen (xpath, "wb"); - if (!fl_shp) - { - sys_err = strerror (errno); - sprintf (errMsg, "unable to open '%s' for writing: %s", xpath, - sys_err); - goto no_file; - } - sprintf (xpath, "%s.dbf", path); - fl_dbf = fopen (xpath, "wb"); - if (!fl_dbf) - { - sys_err = strerror (errno); - sprintf (errMsg, "unable to open '%s' for writing: %s", xpath, - sys_err); - goto no_file; - } -/* allocating DBF buffer */ - dbf_reclen = 1; /* an extra byte is needed because in DBF rows first byte is a marker for deletion */ - fld = dbf_list->First; - while (fld) - { - /* computing the DBF record length */ - dbf_reclen += fld->Length; - fld = fld->Next; - } - dbf_buf = malloc (dbf_reclen); -/* writing an empty SHP file header */ - memset (buf_shp, 0, 100); - fwrite (buf_shp, 1, 100, fl_shp); - shp_size = 50; /* note: shapefile [SHP and SHX] counts sizes in WORDS of 16 bits, not in bytes of 8 bits !!!! */ -/* writing an empty SHX file header */ - memset (buf_shp, 0, 100); - fwrite (buf_shp, 1, 100, fl_shx); - shx_size = 50; -/* writing the DBF file header */ - memset (buf_shp, '\0', 32); - fwrite (buf_shp, 1, 32, fl_dbf); - dbf_size = 32; /* note: DBF counts sizes in bytes */ - fld = dbf_list->First; - while (fld) - { - /* exporting DBF Fields specifications */ - memset (buf_shp, 0, 32); - strcpy (buf, fld->Name); - len = strlen (buf); - utf8len = 2048; - pBuf = buf; - pUtf8buf = utf8buf; - if (iconv - ((iconv_t) (shp->IconvObj), &pBuf, &len, &pUtf8buf, - &utf8len) == (size_t) (-1)) - sprintf (buf, "FLD#%d", defaultId++); - else - { - memcpy (buf, utf8buf, 2048 - utf8len); - buf[2048 - utf8len] = '\0'; - if (strlen (buf) > 10) - sprintf (buf, "FLD#%d", defaultId++); - } - memcpy (buf_shp, buf, strlen (buf)); - *(buf_shp + 11) = fld->Type; - *(buf_shp + 16) = fld->Length; - *(buf_shp + 17) = fld->Decimals; - fwrite (buf_shp, 1, 32, fl_dbf); - dbf_size += 32; - fld = fld->Next; - } - fwrite ("\r", 1, 1, fl_dbf); /* this one is a special DBF delimiter that closes file header */ - dbf_size++; -/* setting up the SHP struct */ - len = strlen (path); - shp->Path = malloc (len + 1); - strcpy (shp->Path, path); - shp->ReadOnly = 0; - switch (shape) - { - /* setting up SHAPE and dimensions */ - case GAIA_POINT: - shp->Shape = GAIA_SHP_POINT; - shp->EffectiveType = GAIA_POINT; - shp->EffectiveDims = GAIA_XY; - break; - case GAIA_POINTZ: - shp->Shape = GAIA_SHP_POINTZ; - shp->EffectiveType = GAIA_POINT; - shp->EffectiveDims = GAIA_XY_Z; - break; - case GAIA_POINTM: - shp->Shape = GAIA_SHP_POINTM; - shp->EffectiveType = GAIA_POINT; - shp->EffectiveDims = GAIA_XY_M; - break; - case GAIA_POINTZM: - shp->Shape = GAIA_SHP_POINTZ; - shp->EffectiveType = GAIA_POINT; - shp->EffectiveDims = GAIA_XY_Z_M; - break; - case GAIA_MULTIPOINT: - shp->Shape = GAIA_SHP_MULTIPOINT; - shp->EffectiveType = GAIA_MULTIPOINT; - shp->EffectiveDims = GAIA_XY; - break; - case GAIA_MULTIPOINTZ: - shp->Shape = GAIA_SHP_MULTIPOINTZ; - shp->EffectiveType = GAIA_MULTIPOINT; - shp->EffectiveDims = GAIA_XY_Z; - break; - case GAIA_MULTIPOINTM: - shp->Shape = GAIA_SHP_MULTIPOINTM; - shp->EffectiveType = GAIA_MULTIPOINT; - shp->EffectiveDims = GAIA_XY_M; - break; - case GAIA_MULTIPOINTZM: - shp->Shape = GAIA_SHP_MULTIPOINTZ; - shp->EffectiveType = GAIA_MULTIPOINT; - shp->EffectiveDims = GAIA_XY_Z_M; - break; - case GAIA_LINESTRING: - shp->Shape = GAIA_SHP_POLYLINE; - shp->EffectiveType = GAIA_LINESTRING; - shp->EffectiveDims = GAIA_XY; - break; - case GAIA_LINESTRINGZ: - shp->Shape = GAIA_SHP_POLYLINEZ; - shp->EffectiveType = GAIA_LINESTRING; - shp->EffectiveDims = GAIA_XY_Z; - break; - case GAIA_LINESTRINGM: - shp->Shape = GAIA_SHP_POLYLINEM; - shp->EffectiveType = GAIA_LINESTRING; - shp->EffectiveDims = GAIA_XY_M; - break; - case GAIA_LINESTRINGZM: - shp->Shape = GAIA_SHP_POLYLINEZ; - shp->EffectiveType = GAIA_LINESTRING; - shp->EffectiveDims = GAIA_XY_Z_M; - break; - case GAIA_MULTILINESTRING: - shp->Shape = GAIA_SHP_POLYLINE; - shp->EffectiveType = GAIA_MULTILINESTRING; - shp->EffectiveDims = GAIA_XY; - break; - case GAIA_MULTILINESTRINGZ: - shp->Shape = GAIA_SHP_POLYLINEZ; - shp->EffectiveType = GAIA_MULTILINESTRING; - shp->EffectiveDims = GAIA_XY_Z; - break; - case GAIA_MULTILINESTRINGM: - shp->Shape = GAIA_SHP_POLYLINEM; - shp->EffectiveType = GAIA_MULTILINESTRING; - shp->EffectiveDims = GAIA_XY_M; - break; - case GAIA_MULTILINESTRINGZM: - shp->Shape = GAIA_SHP_POLYLINEZ; - shp->EffectiveType = GAIA_MULTILINESTRING; - shp->EffectiveDims = GAIA_XY_Z_M; - break; - case GAIA_POLYGON: - shp->Shape = GAIA_SHP_POLYGON; - shp->EffectiveType = GAIA_POLYGON; - shp->EffectiveDims = GAIA_XY; - break; - case GAIA_POLYGONZ: - shp->Shape = GAIA_SHP_POLYGONZ; - shp->EffectiveType = GAIA_POLYGON; - shp->EffectiveDims = GAIA_XY_Z; - break; - case GAIA_POLYGONM: - shp->Shape = GAIA_SHP_POLYGONM; - shp->EffectiveType = GAIA_POLYGON; - shp->EffectiveDims = GAIA_XY_M; - break; - case GAIA_POLYGONZM: - shp->Shape = GAIA_SHP_POLYGONZ; - shp->EffectiveType = GAIA_POLYGON; - shp->EffectiveDims = GAIA_XY_Z_M; - break; - case GAIA_MULTIPOLYGON: - shp->Shape = GAIA_SHP_POLYGON; - shp->EffectiveType = GAIA_MULTIPOLYGON; - shp->EffectiveDims = GAIA_XY; - break; - case GAIA_MULTIPOLYGONZ: - shp->Shape = GAIA_SHP_POLYGONZ; - shp->EffectiveType = GAIA_MULTIPOLYGON; - shp->EffectiveDims = GAIA_XY_Z; - break; - case GAIA_MULTIPOLYGONM: - shp->Shape = GAIA_SHP_POLYGONM; - shp->EffectiveType = GAIA_MULTIPOLYGON; - shp->EffectiveDims = GAIA_XY_M; - break; - case GAIA_MULTIPOLYGONZM: - shp->Shape = GAIA_SHP_POLYGONZ; - shp->EffectiveType = GAIA_MULTIPOLYGON; - shp->EffectiveDims = GAIA_XY_Z_M; - break; - }; - shp->flShp = fl_shp; - shp->flShx = fl_shx; - shp->flDbf = fl_dbf; - shp->Dbf = dbf_list; - shp->BufShp = buf_shp; - shp->ShpBfsz = buf_size; - shp->BufDbf = dbf_buf; - shp->DbfHdsz = dbf_size + 1; - shp->DbfReclen = dbf_reclen; - shp->DbfSize = dbf_size; - shp->DbfRecno = 0; - shp->ShpSize = shp_size; - shp->ShxSize = shx_size; - shp->MinX = DBL_MAX; - shp->MinY = DBL_MAX; - shp->MaxX = -DBL_MAX; - shp->MaxY = -DBL_MAX; - shp->Valid = 1; - shp->endian_arch = endian_arch; - return; - unsupported_conversion: -/* illegal charset */ - if (shp->LastError) - free (shp->LastError); - len = strlen (errMsg); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, errMsg); - return; - no_file: -/* one of shapefile's files can't be created/opened */ - if (shp->LastError) - free (shp->LastError); - len = strlen (errMsg); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, errMsg); - if (buf_shp) - free (buf_shp); - if (fl_shx) - fclose (fl_shx); - if (fl_shp) - fclose (fl_shp); - if (fl_dbf) - fclose (fl_dbf); - return; -} - -static double -to_sqlite_julian_date (int year, int month, int day, double *julian) -{ -/* trying to convert an 'YYYY-MM-DD' date into a JulianDate [double] */ - int Y; - int M; - int D; - int A; - int B; - int X1; - int X2; - if (year < 1900 || year > 2400) - return 0; - if (month < 1 || month > 12) - return 0; - if (day < 1) - return 0; - switch (month) - { - case 2: - if ((year / 4) == 0) - { - if (day > 29) - return 0; - } - else - { - if (day > 28) - return 0; - } - break; - case 4: - case 6: - case 9: - case 11: - if (day > 30) - return 0; - break; - default: - if (day > 31) - return 0; - }; -/* computing the Julian date */ - Y = year; - M = month; - D = day; - if (M <= 2) - { - Y--; - M += 12; - } - A = Y / 100; - B = 2 - A + (A / 4); - X1 = 36525 * (Y + 4716) / 100; - X2 = 306001 * (M + 1) / 10000; - *julian = (double) (X1 + X2 + D + B - 1524.5); - return 1; -} - -static int -parseDbfField (unsigned char *buf_dbf, void *iconv_obj, gaiaDbfFieldPtr pFld) -{ -/* parsing a generic DBF field */ - unsigned char buf[512]; - char utf8buf[2048]; -#if !defined(__MINGW32__) && defined(_WIN32) - const char *pBuf; -#else /* not WIN32 */ - char *pBuf; -#endif - size_t len; - size_t utf8len; - char *pUtf8buf; - int i; - memcpy (buf, buf_dbf + pFld->Offset + 1, pFld->Length); - buf[pFld->Length] = '\0'; - if (*buf == '\0') - gaiaSetNullValue (pFld); - else - { - if (pFld->Type == 'N') - { - /* NUMERIC value */ - if (pFld->Decimals > 0 || pFld->Length > 18) - gaiaSetDoubleValue (pFld, atof ((char *) buf)); - else - gaiaSetIntValue (pFld, atoll ((char *) buf)); - } - else if (pFld->Type == 'F') - { - /* FLOAT value */ - gaiaSetDoubleValue (pFld, atof ((char *) buf)); - } - else if (pFld->Type == 'D') - { - /* DATE value */ - if (strlen ((char *) buf) != 8) - gaiaSetNullValue (pFld); - else - { - /* converting into a Julian Date */ - double julian; - char date[5]; - int year = 0; - int month = 0; - int day = 0; - date[0] = buf[0]; - date[1] = buf[1]; - date[2] = buf[2]; - date[3] = buf[3]; - date[4] = '\0'; - year = atoi (date); - date[0] = buf[4]; - date[1] = buf[5]; - date[2] = '\0'; - month = atoi (date); - date[0] = buf[6]; - date[1] = buf[7]; - date[2] = '\0'; - day = atoi (date); - if (to_sqlite_julian_date (year, month, day, &julian)) - gaiaSetDoubleValue (pFld, julian); - else - gaiaSetNullValue (pFld); - } - } - else if (pFld->Type == 'L') - { - /* LOGICAL [aka Boolean] value */ - if (*buf == '1' || *buf == 't' || *buf == 'T' - || *buf == 'Y' || *buf == 'y') - gaiaSetIntValue (pFld, 1); - else - gaiaSetIntValue (pFld, 0); - } - else - { - /* CHARACTER [aka String, Text] value */ - for (i = strlen ((char *) buf) - 1; i > 1; i--) - { - /* cleaning up trailing spaces */ - if (buf[i] == ' ') - buf[i] = '\0'; - else - break; - } - len = strlen ((char *) buf); - utf8len = 2048; - pBuf = (char *) buf; - pUtf8buf = utf8buf; - if (iconv - ((iconv_t) (iconv_obj), &pBuf, &len, &pUtf8buf, - &utf8len) == (size_t) (-1)) - return 0; - memcpy (buf, utf8buf, 2048 - utf8len); - buf[2048 - utf8len] = '\0'; - gaiaSetStrValue (pFld, (char *) buf); - } - } - return 1; -} - -struct shp_ring_item -{ -/* a RING item [to be reassembled into a (Multi)Polygon] */ - gaiaRingPtr Ring; - int IsExterior; - gaiaRingPtr Mother; - struct shp_ring_item *Next; -}; - -struct shp_ring_collection -{ -/* a collection of RING items */ - struct shp_ring_item *First; - struct shp_ring_item *Last; -}; - -static void -shp_free_rings (struct shp_ring_collection *ringsColl) -{ -/* memory cleanup: rings collection */ - struct shp_ring_item *p; - struct shp_ring_item *pN; - p = ringsColl->First; - while (p) - { - pN = p->Next; - if (p->Ring) - gaiaFreeRing (p->Ring); - free (p); - p = pN; - } -} - -static void -shp_add_ring (struct shp_ring_collection *ringsColl, gaiaRingPtr ring) -{ -/* inserting a ring into the rings collection */ - struct shp_ring_item *p = malloc (sizeof (struct shp_ring_item)); - p->Ring = ring; - gaiaMbrRing (ring); - gaiaClockwise (ring); -/* accordingly to SHP rules interior/exterior depends on direction */ - p->IsExterior = ring->Clockwise; - p->Mother = NULL; - p->Next = NULL; -/* updating the linked list */ - if (ringsColl->First == NULL) - ringsColl->First = p; - if (ringsColl->Last != NULL) - ringsColl->Last->Next = p; - ringsColl->Last = p; -} - -static int -shp_check_rings (gaiaRingPtr exterior, gaiaRingPtr candidate) -{ -/* -/ speditively checks if the candidate could be an interior Ring -/ contained into the exterior Ring -*/ - double z; - double m; - double x0; - double y0; - double x1; - double y1; - int mid; - int ret0; - int ret1; - if (candidate->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (candidate->Coords, 0, &x0, &y0, &z); - } - else if (candidate->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (candidate->Coords, 0, &x0, &y0, &m); - } - else if (candidate->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (candidate->Coords, 0, &x0, &y0, &z, &m); - } - else - { - gaiaGetPoint (candidate->Coords, 0, &x0, &y0); - } - mid = candidate->Points / 2; - if (candidate->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (candidate->Coords, mid, &x1, &y1, &z); - } - else if (candidate->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (candidate->Coords, mid, &x1, &y1, &m); - } - else if (candidate->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (candidate->Coords, mid, &x1, &y1, &z, &m); - } - else - { - gaiaGetPoint (candidate->Coords, mid, &x1, &y1); - } - -/* testing if the first point falls on the exterior ring surface */ - ret0 = gaiaIsPointOnRingSurface (exterior, x0, y0); -/* testing if the second point falls on the exterior ring surface */ - ret1 = gaiaIsPointOnRingSurface (exterior, x1, y1); - if (ret0 || ret1) - return 1; - return 0; -} - -static int -shp_mbr_contains (gaiaRingPtr r1, gaiaRingPtr r2) -{ -/* checks if the first Ring contains the second one - MBR based */ - int ok_1 = 0; - int ok_2 = 0; - int ok_3 = 0; - int ok_4 = 0; - if (r2->MinX >= r1->MinX && r2->MinX <= r1->MaxX) - ok_1 = 1; - if (r2->MaxX >= r1->MinX && r2->MaxX <= r1->MaxX) - ok_2 = 1; - if (r2->MinY >= r1->MinY && r2->MinY <= r1->MaxY) - ok_3 = 1; - if (r2->MaxY >= r1->MinY && r2->MaxY <= r1->MaxY) - ok_4 = 1; - if (ok_1 && ok_2 && ok_3 && ok_4) - return 1; - return 0; -} - -static void -shp_arrange_rings (struct shp_ring_collection *ringsColl) -{ -/* -/ arranging Rings so to associate any interior ring -/ to the containing exterior ring -*/ - struct shp_ring_item *pInt; - struct shp_ring_item *pExt; - pExt = ringsColl->First; - while (pExt != NULL) - { - /* looping on Exterior Rings */ - if (pExt->IsExterior) - { - pInt = ringsColl->First; - while (pInt != NULL) - { - /* looping on Interior Rings */ - if (pInt->IsExterior == 0 && pInt->Mother == NULL - && shp_mbr_contains (pExt->Ring, pInt->Ring)) - { - /* ok, matches */ - if (shp_check_rings (pExt->Ring, pInt->Ring)) - pInt->Mother = pExt->Ring; - } - pInt = pInt->Next; - } - } - pExt = pExt->Next; - } - pExt = ringsColl->First; - while (pExt != NULL) - { - if (pExt->IsExterior == 0 && pExt->Mother == NULL) - { - /* orphan ring: promoting to Exterior */ - pExt->IsExterior = 1; - } - pExt = pExt->Next; - } -} - -static void -shp_build_area (struct shp_ring_collection *ringsColl, gaiaGeomCollPtr geom) -{ -/* building the final (Multi)Polygon Geometry */ - gaiaPolygonPtr polyg; - struct shp_ring_item *pExt; - struct shp_ring_item *pInt; - pExt = ringsColl->First; - while (pExt != NULL) - { - if (pExt->IsExterior) - { - /* creating a new Polygon */ - polyg = gaiaInsertPolygonInGeomColl (geom, pExt->Ring); - pInt = ringsColl->First; - while (pInt != NULL) - { - if (pExt->Ring == pInt->Mother) - { - /* adding an interior ring to current POLYGON */ - gaiaAddRingToPolyg (polyg, pInt->Ring); - /* releasing Ring ownership */ - pInt->Ring = NULL; - } - pInt = pInt->Next; - } - /* releasing Ring ownership */ - pExt->Ring = NULL; - } - pExt = pExt->Next; - } -} - -GAIAGEO_DECLARE int -gaiaReadShpEntity (gaiaShapefilePtr shp, int current_row, int srid) -{ -/* trying to read an entity from shapefile */ - unsigned char buf[512]; - int len; - int rd; - int skpos; - int offset; - int off_shp; - int sz; - int shape; - double x; - double y; - double z; - double m; - int points; - int n; - int n1; - int base; - int baseZ; - int baseM; - int start; - int end; - int iv; - int ind; - int max_size; - int min_size; - int hasM; - char errMsg[1024]; - gaiaGeomCollPtr geom = NULL; - gaiaLinestringPtr line = NULL; - gaiaRingPtr ring = NULL; - gaiaDbfFieldPtr pFld; - struct shp_ring_collection ringsColl; -/* initializing the RING collection */ - ringsColl.First = NULL; - ringsColl.Last = NULL; -/* positioning and reading the SHX file */ - offset = 100 + (current_row * 8); /* 100 bytes for the header + current row displacement; each SHX row = 8 bytes */ - skpos = fseek (shp->flShx, offset, SEEK_SET); - if (skpos != 0) - goto eof; - rd = fread (buf, sizeof (unsigned char), 8, shp->flShx); - if (rd != 8) - goto eof; - off_shp = gaiaImport32 (buf, GAIA_BIG_ENDIAN, shp->endian_arch); -/* positioning and reading the DBF file */ - offset = shp->DbfHdsz + (current_row * shp->DbfReclen); - skpos = fseek (shp->flDbf, offset, SEEK_SET); - if (skpos != 0) - goto error; - rd = fread (shp->BufDbf, sizeof (unsigned char), shp->DbfReclen, - shp->flDbf); - if (rd != shp->DbfReclen) - goto error; -/* positioning and reading corresponding SHP entity - geometry */ - offset = off_shp * 2; - skpos = fseek (shp->flShp, offset, SEEK_SET); - if (skpos != 0) - goto error; - rd = fread (buf, sizeof (unsigned char), 12, shp->flShp); - if (rd != 12) - goto error; - sz = gaiaImport32 (buf + 4, GAIA_BIG_ENDIAN, shp->endian_arch); - shape = gaiaImport32 (buf + 8, GAIA_LITTLE_ENDIAN, shp->endian_arch); - if (shape == GAIA_SHP_NULL) - { - /* handling a NULL shape */ - goto null_shape; - } - else if (shape != shp->Shape) - goto error; - if ((sz * 2) > shp->ShpBfsz) - { - /* current buffer is too small; we need to allocate a bigger buffer */ - free (shp->BufShp); - shp->ShpBfsz = sz * 2; - shp->BufShp = malloc (sizeof (unsigned char) * shp->ShpBfsz); - } - if (shape == GAIA_SHP_POINT) - { - /* shape point */ - rd = fread (shp->BufShp, sizeof (unsigned char), 16, shp->flShp); - if (rd != 16) - goto error; - x = gaiaImport64 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); - y = gaiaImport64 (shp->BufShp + 8, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - if (shp->EffectiveDims == GAIA_XY_Z) - { - geom = gaiaAllocGeomCollXYZ (); - gaiaAddPointToGeomCollXYZ (geom, x, y, 0.0); - } - else if (shp->EffectiveDims == GAIA_XY_M) - { - geom = gaiaAllocGeomCollXYM (); - gaiaAddPointToGeomCollXYM (geom, x, y, 0.0); - } - else if (shp->EffectiveDims == GAIA_XY_Z_M) - { - geom = gaiaAllocGeomCollXYZM (); - gaiaAddPointToGeomCollXYZM (geom, x, y, 0.0, 0.0); - } - else - { - geom = gaiaAllocGeomColl (); - gaiaAddPointToGeomColl (geom, x, y); - } - geom->DeclaredType = GAIA_POINT; - geom->Srid = srid; - } - if (shape == GAIA_SHP_POINTZ) - { - /* shape point Z */ - rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); - if (rd != 32) - { - /* required by some buggish SHP (e.g. the GDAL/OGR ones) */ - if (rd != 24) - goto error; - } - x = gaiaImport64 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); - y = gaiaImport64 (shp->BufShp + 8, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - z = gaiaImport64 (shp->BufShp + 16, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - if (rd == 24) - m = 0.0; - else - m = gaiaImport64 (shp->BufShp + 24, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - if (shp->EffectiveDims == GAIA_XY_Z) - { - geom = gaiaAllocGeomCollXYZ (); - gaiaAddPointToGeomCollXYZ (geom, x, y, z); - } - else if (shp->EffectiveDims == GAIA_XY_M) - { - geom = gaiaAllocGeomCollXYM (); - gaiaAddPointToGeomCollXYM (geom, x, y, m); - } - else if (shp->EffectiveDims == GAIA_XY_Z_M) - { - geom = gaiaAllocGeomCollXYZM (); - gaiaAddPointToGeomCollXYZM (geom, x, y, z, m); - } - else - { - geom = gaiaAllocGeomColl (); - gaiaAddPointToGeomColl (geom, x, y); - } - geom->DeclaredType = GAIA_POINT; - geom->Srid = srid; - } - if (shape == GAIA_SHP_POINTM) - { - /* shape point M */ - rd = fread (shp->BufShp, sizeof (unsigned char), 24, shp->flShp); - if (rd != 24) - goto error; - x = gaiaImport64 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); - y = gaiaImport64 (shp->BufShp + 8, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - m = gaiaImport64 (shp->BufShp + 16, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - if (shp->EffectiveDims == GAIA_XY_Z) - { - geom = gaiaAllocGeomCollXYZ (); - gaiaAddPointToGeomCollXYZ (geom, x, y, 0.0); - } - else if (shp->EffectiveDims == GAIA_XY_M) - { - geom = gaiaAllocGeomCollXYM (); - gaiaAddPointToGeomCollXYM (geom, x, y, m); - } - else if (shp->EffectiveDims == GAIA_XY_Z_M) - { - geom = gaiaAllocGeomCollXYZM (); - gaiaAddPointToGeomCollXYZM (geom, x, y, 0.0, m); - } - else - { - geom = gaiaAllocGeomColl (); - gaiaAddPointToGeomColl (geom, x, y); - } - geom->DeclaredType = GAIA_POINT; - geom->Srid = srid; - } - if (shape == GAIA_SHP_POLYLINE) - { - /* shape polyline */ - rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); - if (rd != 32) - goto error; - rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, - shp->flShp); - if (rd != (sz * 2) - 36) - goto error; - n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); - n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - base = 8 + (n * 4); - start = 0; - for (ind = 0; ind < n; ind++) - { - if (ind < (n - 1)) - end = - gaiaImport32 (shp->BufShp + 8 + ((ind + 1) * 4), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - else - end = n1; - points = end - start; - if (shp->EffectiveDims == GAIA_XY_Z) - line = gaiaAllocLinestringXYZ (points); - else if (shp->EffectiveDims == GAIA_XY_M) - line = gaiaAllocLinestringXYM (points); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - line = gaiaAllocLinestringXYZM (points); - else - line = gaiaAllocLinestring (points); - points = 0; - for (iv = start; iv < end; iv++) - { - x = gaiaImport64 (shp->BufShp + base + (iv * 16), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - y = gaiaImport64 (shp->BufShp + base + (iv * 16) + - 8, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - if (shp->EffectiveDims == GAIA_XY_Z) - { - gaiaSetPointXYZ (line->Coords, points, x, y, 0.0); - } - else if (shp->EffectiveDims == GAIA_XY_M) - { - gaiaSetPointXYM (line->Coords, points, x, y, 0.0); - } - else if (shp->EffectiveDims == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (line->Coords, points, x, y, - 0.0, 0.0); - } - else - { - gaiaSetPoint (line->Coords, points, x, y); - } - start++; - points++; - } - if (!geom) - { - if (shp->EffectiveDims == GAIA_XY_Z) - geom = gaiaAllocGeomCollXYZ (); - else if (shp->EffectiveDims == GAIA_XY_M) - geom = gaiaAllocGeomCollXYM (); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - geom = gaiaAllocGeomCollXYZM (); - else - geom = gaiaAllocGeomColl (); - if (shp->EffectiveType == GAIA_LINESTRING) - geom->DeclaredType = GAIA_LINESTRING; - else - geom->DeclaredType = GAIA_MULTILINESTRING; - geom->Srid = srid; - } - gaiaInsertLinestringInGeomColl (geom, line); - } - } - if (shape == GAIA_SHP_POLYLINEZ) - { - /* shape polyline Z */ - rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); - if (rd != 32) - goto error; - rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, - shp->flShp); - if (rd != (sz * 2) - 36) - goto error; - n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); - n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - hasM = 0; - max_size = 38 + (2 * n) + (n1 * 16); /* size [in 16 bits words !!!] ZM */ - min_size = 30 + (2 * n) + (n1 * 12); /* size [in 16 bits words !!!] Z-only */ - if (sz < min_size) - goto error; - if (sz == max_size) - hasM = 1; - base = 8 + (n * 4); - baseZ = base + (n1 * 16) + 16; - baseM = baseZ + (n1 * 8) + 16; - start = 0; - for (ind = 0; ind < n; ind++) - { - if (ind < (n - 1)) - end = - gaiaImport32 (shp->BufShp + 8 + ((ind + 1) * 4), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - else - end = n1; - points = end - start; - if (shp->EffectiveDims == GAIA_XY_Z) - line = gaiaAllocLinestringXYZ (points); - else if (shp->EffectiveDims == GAIA_XY_M) - line = gaiaAllocLinestringXYM (points); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - line = gaiaAllocLinestringXYZM (points); - else - line = gaiaAllocLinestring (points); - points = 0; - for (iv = start; iv < end; iv++) - { - x = gaiaImport64 (shp->BufShp + base + (iv * 16), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - y = gaiaImport64 (shp->BufShp + base + (iv * 16) + - 8, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - z = gaiaImport64 (shp->BufShp + baseZ + (iv * 8), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - if (hasM) - m = gaiaImport64 (shp->BufShp + baseM + - (iv * 8), GAIA_LITTLE_ENDIAN, - shp->endian_arch); - else - m = 0.0; - if (m < SHAPEFILE_NO_DATA) - m = 0.0; - if (shp->EffectiveDims == GAIA_XY_Z) - { - gaiaSetPointXYZ (line->Coords, points, x, y, z); - } - else if (shp->EffectiveDims == GAIA_XY_M) - { - gaiaSetPointXYM (line->Coords, points, x, y, m); - } - else if (shp->EffectiveDims == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (line->Coords, points, x, y, z, m); - } - else - { - gaiaSetPoint (line->Coords, points, x, y); - } - start++; - points++; - } - if (!geom) - { - if (shp->EffectiveDims == GAIA_XY_Z) - geom = gaiaAllocGeomCollXYZ (); - else if (shp->EffectiveDims == GAIA_XY_M) - geom = gaiaAllocGeomCollXYM (); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - geom = gaiaAllocGeomCollXYZM (); - else - geom = gaiaAllocGeomColl (); - if (shp->EffectiveType == GAIA_LINESTRING) - geom->DeclaredType = GAIA_LINESTRING; - else - geom->DeclaredType = GAIA_MULTILINESTRING; - geom->Srid = srid; - } - gaiaInsertLinestringInGeomColl (geom, line); - } - } - if (shape == GAIA_SHP_POLYLINEM) - { - /* shape polyline M */ - rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); - if (rd != 32) - goto error; - rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, - shp->flShp); - if (rd != (sz * 2) - 36) - goto error; - n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); - n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - hasM = 0; - max_size = 30 + (2 * n) + (n1 * 12); /* size [in 16 bits words !!!] M */ - min_size = 22 + (2 * n) + (n1 * 8); /* size [in 16 bits words !!!] no-M */ - if (sz < min_size) - goto error; - if (sz == max_size) - hasM = 1; - base = 8 + (n * 4); - baseM = base + (n1 * 16) + 16; - start = 0; - for (ind = 0; ind < n; ind++) - { - if (ind < (n - 1)) - end = - gaiaImport32 (shp->BufShp + 8 + ((ind + 1) * 4), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - else - end = n1; - points = end - start; - if (shp->EffectiveDims == GAIA_XY_Z) - line = gaiaAllocLinestringXYZ (points); - else if (shp->EffectiveDims == GAIA_XY_M) - line = gaiaAllocLinestringXYM (points); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - line = gaiaAllocLinestringXYZM (points); - else - line = gaiaAllocLinestring (points); - points = 0; - for (iv = start; iv < end; iv++) - { - x = gaiaImport64 (shp->BufShp + base + (iv * 16), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - y = gaiaImport64 (shp->BufShp + base + (iv * 16) + - 8, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - if (hasM) - m = gaiaImport64 (shp->BufShp + baseM + - (iv * 8), GAIA_LITTLE_ENDIAN, - shp->endian_arch); - else - m = 0.0; - if (m < SHAPEFILE_NO_DATA) - m = 0.0; - if (shp->EffectiveDims == GAIA_XY_Z) - { - gaiaSetPointXYZ (line->Coords, points, x, y, 0.0); - } - else if (shp->EffectiveDims == GAIA_XY_M) - { - gaiaSetPointXYM (line->Coords, points, x, y, m); - } - else if (shp->EffectiveDims == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (line->Coords, points, x, y, - 0.0, m); - } - else - { - gaiaSetPoint (line->Coords, points, x, y); - } - start++; - points++; - } - if (!geom) - { - if (shp->EffectiveDims == GAIA_XY_Z) - geom = gaiaAllocGeomCollXYZ (); - else if (shp->EffectiveDims == GAIA_XY_M) - geom = gaiaAllocGeomCollXYM (); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - geom = gaiaAllocGeomCollXYZM (); - else - geom = gaiaAllocGeomColl (); - if (shp->EffectiveType == GAIA_LINESTRING) - geom->DeclaredType = GAIA_LINESTRING; - else - geom->DeclaredType = GAIA_MULTILINESTRING; - geom->Srid = srid; - } - gaiaInsertLinestringInGeomColl (geom, line); - } - } - if (shape == GAIA_SHP_POLYGON) - { - /* shape polygon */ - rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); - if (rd != 32) - goto error; - rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, - shp->flShp); - if (rd != (sz * 2) - 36) - goto error; - n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); - n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - base = 8 + (n * 4); - start = 0; - for (ind = 0; ind < n; ind++) - { - if (ind < (n - 1)) - end = - gaiaImport32 (shp->BufShp + 8 + ((ind + 1) * 4), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - else - end = n1; - points = end - start; - if (shp->EffectiveDims == GAIA_XY_Z) - ring = gaiaAllocRingXYZ (points); - else if (shp->EffectiveDims == GAIA_XY_M) - ring = gaiaAllocRingXYM (points); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - ring = gaiaAllocRingXYZM (points); - else - ring = gaiaAllocRing (points); - points = 0; - for (iv = start; iv < end; iv++) - { - x = gaiaImport64 (shp->BufShp + base + (iv * 16), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - y = gaiaImport64 (shp->BufShp + base + (iv * 16) + - 8, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - if (shp->EffectiveDims == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, points, x, y, 0.0); - } - else if (shp->EffectiveDims == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, points, x, y, 0.0); - } - else if (shp->EffectiveDims == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, points, x, y, - 0.0, 0.0); - } - else - { - gaiaSetPoint (ring->Coords, points, x, y); - } - start++; - points++; - } - shp_add_ring (&ringsColl, ring); - } - shp_arrange_rings (&ringsColl); - /* allocating the final geometry */ - if (shp->EffectiveDims == GAIA_XY_Z) - geom = gaiaAllocGeomCollXYZ (); - else if (shp->EffectiveDims == GAIA_XY_M) - geom = gaiaAllocGeomCollXYM (); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - geom = gaiaAllocGeomCollXYZM (); - else - geom = gaiaAllocGeomColl (); - if (shp->EffectiveType == GAIA_POLYGON) - geom->DeclaredType = GAIA_POLYGON; - else - geom->DeclaredType = GAIA_MULTIPOLYGON; - geom->Srid = srid; - shp_build_area (&ringsColl, geom); - } - if (shape == GAIA_SHP_POLYGONZ) - { - /* shape polygon Z */ - rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); - if (rd != 32) - goto error; - rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, - shp->flShp); - if (rd != (sz * 2) - 36) - goto error; - n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); - n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - hasM = 0; - max_size = 38 + (2 * n) + (n1 * 16); /* size [in 16 bits words !!!] ZM */ - min_size = 30 + (2 * n) + (n1 * 12); /* size [in 16 bits words !!!] Z-only */ - if (sz < min_size) - goto error; - if (sz == max_size) - hasM = 1; - base = 8 + (n * 4); - baseZ = base + (n1 * 16) + 16; - baseM = baseZ + (n1 * 8) + 16; - start = 0; - for (ind = 0; ind < n; ind++) - { - if (ind < (n - 1)) - end = - gaiaImport32 (shp->BufShp + 8 + ((ind + 1) * 4), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - else - end = n1; - points = end - start; - if (shp->EffectiveDims == GAIA_XY_Z) - ring = gaiaAllocRingXYZ (points); - else if (shp->EffectiveDims == GAIA_XY_M) - ring = gaiaAllocRingXYM (points); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - ring = gaiaAllocRingXYZM (points); - else - ring = gaiaAllocRing (points); - points = 0; - for (iv = start; iv < end; iv++) - { - x = gaiaImport64 (shp->BufShp + base + (iv * 16), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - y = gaiaImport64 (shp->BufShp + base + (iv * 16) + - 8, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - z = gaiaImport64 (shp->BufShp + baseZ + (iv * 8), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - if (hasM) - m = gaiaImport64 (shp->BufShp + baseM + - (iv * 8), GAIA_LITTLE_ENDIAN, - shp->endian_arch); - else - m = 0.0; - if (m < SHAPEFILE_NO_DATA) - m = 0.0; - if (shp->EffectiveDims == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, points, x, y, z); - } - else if (shp->EffectiveDims == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, points, x, y, m); - } - else if (shp->EffectiveDims == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, points, x, y, z, m); - } - else - { - gaiaSetPoint (ring->Coords, points, x, y); - } - start++; - points++; - } - shp_add_ring (&ringsColl, ring); - } - shp_arrange_rings (&ringsColl); - /* allocating the final geometry */ - if (shp->EffectiveDims == GAIA_XY_Z) - geom = gaiaAllocGeomCollXYZ (); - else if (shp->EffectiveDims == GAIA_XY_M) - geom = gaiaAllocGeomCollXYM (); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - geom = gaiaAllocGeomCollXYZM (); - else - geom = gaiaAllocGeomColl (); - if (shp->EffectiveType == GAIA_POLYGON) - geom->DeclaredType = GAIA_POLYGON; - else - geom->DeclaredType = GAIA_MULTIPOLYGON; - geom->Srid = srid; - shp_build_area (&ringsColl, geom); - } - if (shape == GAIA_SHP_POLYGONM) - { - /* shape polygon M */ - rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); - if (rd != 32) - goto error; - rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, - shp->flShp); - if (rd != (sz * 2) - 36) - goto error; - n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); - n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - hasM = 0; - max_size = 30 + (2 * n) + (n1 * 12); /* size [in 16 bits words !!!] M */ - min_size = 22 + (2 * n) + (n1 * 8); /* size [in 16 bits words !!!] no-M */ - if (sz < min_size) - goto error; - if (sz == max_size) - hasM = 1; - base = 8 + (n * 4); - baseM = base + (n1 * 16) + 16; - start = 0; - for (ind = 0; ind < n; ind++) - { - if (ind < (n - 1)) - end = - gaiaImport32 (shp->BufShp + 8 + ((ind + 1) * 4), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - else - end = n1; - points = end - start; - if (shp->EffectiveDims == GAIA_XY_Z) - ring = gaiaAllocRingXYZ (points); - else if (shp->EffectiveDims == GAIA_XY_M) - ring = gaiaAllocRingXYM (points); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - ring = gaiaAllocRingXYZM (points); - else - ring = gaiaAllocRing (points); - points = 0; - for (iv = start; iv < end; iv++) - { - x = gaiaImport64 (shp->BufShp + base + (iv * 16), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - y = gaiaImport64 (shp->BufShp + base + (iv * 16) + - 8, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - if (hasM) - m = gaiaImport64 (shp->BufShp + baseM + - (iv * 8), GAIA_LITTLE_ENDIAN, - shp->endian_arch); - m = 0.0; - if (m < SHAPEFILE_NO_DATA) - m = 0.0; - if (shp->EffectiveDims == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, points, x, y, 0.0); - } - else if (shp->EffectiveDims == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, points, x, y, m); - } - else if (shp->EffectiveDims == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, points, x, y, - 0.0, m); - } - else - { - gaiaSetPoint (ring->Coords, points, x, y); - } - start++; - points++; - } - shp_add_ring (&ringsColl, ring); - } - shp_arrange_rings (&ringsColl); - /* allocating the final geometry */ - if (shp->EffectiveDims == GAIA_XY_Z) - geom = gaiaAllocGeomCollXYZ (); - else if (shp->EffectiveDims == GAIA_XY_M) - geom = gaiaAllocGeomCollXYM (); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - geom = gaiaAllocGeomCollXYZM (); - else - geom = gaiaAllocGeomColl (); - if (shp->EffectiveType == GAIA_POLYGON) - geom->DeclaredType = GAIA_POLYGON; - else - geom->DeclaredType = GAIA_MULTIPOLYGON; - geom->Srid = srid; - shp_build_area (&ringsColl, geom); - } - if (shape == GAIA_SHP_MULTIPOINT) - { - /* shape multipoint */ - rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); - if (rd != 32) - goto error; - rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, - shp->flShp); - if (rd != (sz * 2) - 36) - goto error; - n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); - if (shp->EffectiveDims == GAIA_XY_Z) - geom = gaiaAllocGeomCollXYZ (); - else if (shp->EffectiveDims == GAIA_XY_M) - geom = gaiaAllocGeomCollXYM (); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - geom = gaiaAllocGeomCollXYZM (); - else - geom = gaiaAllocGeomColl (); - geom->DeclaredType = GAIA_MULTIPOINT; - geom->Srid = srid; - for (iv = 0; iv < n; iv++) - { - x = gaiaImport64 (shp->BufShp + 4 + (iv * 16), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - y = gaiaImport64 (shp->BufShp + 4 + (iv * 16) + 8, - GAIA_LITTLE_ENDIAN, shp->endian_arch); - if (shp->EffectiveDims == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (geom, x, y, 0.0); - else if (shp->EffectiveDims == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (geom, x, y, 0.0); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (geom, x, y, 0.0, 0.0); - else - gaiaAddPointToGeomColl (geom, x, y); - } - } - if (shape == GAIA_SHP_MULTIPOINTZ) - { - /* shape multipoint Z */ - rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); - if (rd != 32) - goto error; - rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, - shp->flShp); - if (rd != (sz * 2) - 36) - goto error; - n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); - hasM = 0; - max_size = 38 + (n * 16); /* size [in 16 bits words !!!] ZM */ - min_size = 30 + (n * 12); /* size [in 16 bits words !!!] Z-only */ - if (sz < min_size) - goto error; - if (sz == max_size) - hasM = 1; - baseZ = 4 + (n * 16) + 16; - baseM = baseZ + (n * 8) + 16; - if (shp->EffectiveDims == GAIA_XY_Z) - geom = gaiaAllocGeomCollXYZ (); - else if (shp->EffectiveDims == GAIA_XY_M) - geom = gaiaAllocGeomCollXYM (); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - geom = gaiaAllocGeomCollXYZM (); - else - geom = gaiaAllocGeomColl (); - geom->DeclaredType = GAIA_MULTIPOINT; - geom->Srid = srid; - for (iv = 0; iv < n; iv++) - { - x = gaiaImport64 (shp->BufShp + 4 + (iv * 16), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - y = gaiaImport64 (shp->BufShp + 4 + (iv * 16) + 8, - GAIA_LITTLE_ENDIAN, shp->endian_arch); - z = gaiaImport64 (shp->BufShp + baseZ + (iv * 8), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - if (hasM) - m = gaiaImport64 (shp->BufShp + baseM + (iv * 8), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - else - m = 0.0; - if (m < SHAPEFILE_NO_DATA) - m = 0.0; - if (shp->EffectiveDims == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (geom, x, y, z); - else if (shp->EffectiveDims == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (geom, x, y, m); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (geom, x, y, z, m); - else - gaiaAddPointToGeomColl (geom, x, y); - } - } - if (shape == GAIA_SHP_MULTIPOINTM) - { - /* shape multipoint M */ - rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); - if (rd != 32) - goto error; - rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, - shp->flShp); - if (rd != (sz * 2) - 36) - goto error; - n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); - hasM = 0; - max_size = 30 + (n * 12); /* size [in 16 bits words !!!] M */ - min_size = 22 + (n * 8); /* size [in 16 bits words !!!] no-M */ - if (sz < min_size) - goto error; - if (sz == max_size) - hasM = 1; - baseM = 4 + (n * 16) + 16; - if (shp->EffectiveDims == GAIA_XY_Z) - geom = gaiaAllocGeomCollXYZ (); - else if (shp->EffectiveDims == GAIA_XY_M) - geom = gaiaAllocGeomCollXYM (); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - geom = gaiaAllocGeomCollXYZM (); - else - geom = gaiaAllocGeomColl (); - geom->DeclaredType = GAIA_MULTIPOINT; - geom->Srid = srid; - for (iv = 0; iv < n; iv++) - { - x = gaiaImport64 (shp->BufShp + 4 + (iv * 16), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - y = gaiaImport64 (shp->BufShp + 4 + (iv * 16) + 8, - GAIA_LITTLE_ENDIAN, shp->endian_arch); - if (hasM) - m = gaiaImport64 (shp->BufShp + baseM + (iv * 8), - GAIA_LITTLE_ENDIAN, shp->endian_arch); - else - m = 0.0; - if (m < SHAPEFILE_NO_DATA) - m = 0.0; - if (shp->EffectiveDims == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (geom, x, y, 0.0); - else if (shp->EffectiveDims == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (geom, x, y, m); - else if (shp->EffectiveDims == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (geom, x, y, 0.0, m); - else - gaiaAddPointToGeomColl (geom, x, y); - } - } -/* setting up the current SHP ENTITY */ - null_shape: - gaiaResetDbfEntity (shp->Dbf); - shp->Dbf->RowId = current_row; - shp->Dbf->Geometry = geom; -/* fetching the DBF values */ - pFld = shp->Dbf->First; - while (pFld) - { - if (!parseDbfField (shp->BufDbf, shp->IconvObj, pFld)) - goto conversion_error; - pFld = pFld->Next; - } - if (shp->LastError) - free (shp->LastError); - shp->LastError = NULL; - shp_free_rings (&ringsColl); - return 1; - eof: - if (shp->LastError) - free (shp->LastError); - shp->LastError = NULL; - shp_free_rings (&ringsColl); - return 0; - error: - if (shp->LastError) - free (shp->LastError); - sprintf (errMsg, "'%s' is corrupted / has invalid format", shp->Path); - len = strlen (errMsg); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, errMsg); - shp_free_rings (&ringsColl); - return 0; - conversion_error: - if (shp->LastError) - free (shp->LastError); - sprintf (errMsg, "Invalid character sequence"); - len = strlen (errMsg); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, errMsg); - shp_free_rings (&ringsColl); - return 0; -} - -static void -gaiaSaneClockwise (gaiaPolygonPtr polyg) -{ -/* -/ when exporting POLYGONs to SHAPEFILE, we must guarantee that: -/ - all EXTERIOR RING must be clockwise -/ - all INTERIOR RING must be anti-clockwise -/ -/ this function checks for the above conditions, -/ and if needed inverts the rings -*/ - int ib; - int iv; - int iv2; - double x; - double y; - double z; - double m; - gaiaRingPtr new_ring; - gaiaRingPtr ring = polyg->Exterior; - gaiaClockwise (ring); - if (!(ring->Clockwise)) - { - /* exterior ring needs inversion */ - if (ring->DimensionModel == GAIA_XY_Z) - new_ring = gaiaAllocRingXYZ (ring->Points); - else if (ring->DimensionModel == GAIA_XY_M) - new_ring = gaiaAllocRingXYM (ring->Points); - else if (ring->DimensionModel == GAIA_XY_Z_M) - new_ring = gaiaAllocRingXYZM (ring->Points); - else - new_ring = gaiaAllocRing (ring->Points); - iv2 = 0; - for (iv = ring->Points - 1; iv >= 0; iv--) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (new_ring->Coords, iv2, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (new_ring->Coords, iv2, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (new_ring->Coords, iv2, x, y, z, m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - gaiaSetPoint (new_ring->Coords, iv2, x, y); - } - iv2++; - } - polyg->Exterior = new_ring; - gaiaFreeRing (ring); - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - gaiaClockwise (ring); - if (ring->Clockwise) - { - /* interior ring needs inversion */ - if (ring->DimensionModel == GAIA_XY_Z) - new_ring = gaiaAllocRingXYZ (ring->Points); - else if (ring->DimensionModel == GAIA_XY_M) - new_ring = gaiaAllocRingXYM (ring->Points); - else if (ring->DimensionModel == GAIA_XY_Z_M) - new_ring = gaiaAllocRingXYZM (ring->Points); - else - new_ring = gaiaAllocRing (ring->Points); - iv2 = 0; - for (iv = ring->Points - 1; iv >= 0; iv--) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (new_ring->Coords, iv2, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (new_ring->Coords, iv2, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (new_ring->Coords, iv2, x, y, - z, m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - gaiaSetPoint (new_ring->Coords, iv2, x, y); - } - iv2++; - } - for (iv = 0; iv < ring->Points; iv++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (new_ring->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (new_ring->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (new_ring->Coords, iv, &x, &y, - &z, &m); - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - else - { - gaiaGetPoint (new_ring->Coords, iv, &x, &y); - gaiaSetPoint (ring->Coords, iv, x, y); - } - } - gaiaFreeRing (new_ring); - } - } -} - -GAIAGEO_DECLARE int -gaiaWriteShpEntity (gaiaShapefilePtr shp, gaiaDbfListPtr entity) -{ -/* trying to write an entity into shapefile */ - char dummy[128]; - char fmt[16]; - int endian_arch = shp->endian_arch; - gaiaDbfFieldPtr fld; - int iv; - int tot_ln; - int tot_v; - int tot_pts; - int this_size; - int ix; - double x; - double y; - double z; - double m; - int hasM; - double minZ; - double maxZ; - double minM; - double maxM; -#if !defined(__MINGW32__) && defined(_WIN32) - const char *pBuf; -#else /* not WIN32 */ - char *pBuf; -#endif - size_t len; - size_t utf8len; - char *pUtf8buf; - char buf[512]; - char utf8buf[2048]; -/* writing the DBF record */ - memset (shp->BufDbf, '\0', shp->DbfReclen); - *(shp->BufDbf) = ' '; /* in DBF first byte of each row marks for validity or deletion */ - fld = entity->First; - while (fld) - { - /* transferring field values */ - switch (fld->Type) - { - case 'L': - if (!(fld->Value)) - *(shp->BufDbf + fld->Offset) = '?'; - else if (fld->Value->Type != GAIA_INT_VALUE) - *(shp->BufDbf + fld->Offset + 1) = '?'; - else - { - if (fld->Value->IntValue == 0) - *(shp->BufDbf + fld->Offset + 1) = 'N'; - else - *(shp->BufDbf + fld->Offset + 1) = 'Y'; - } - break; - case 'D': - memset (shp->BufDbf + fld->Offset + 1, '0', 8); - if (fld->Value) - { - if (fld->Value->Type == GAIA_TEXT_VALUE) - { - if (strlen (fld->Value->TxtValue) == 8) - memcpy (shp->BufDbf + fld->Offset + 1, - fld->Value->TxtValue, 8); - } - } - break; - case 'C': - memset (shp->BufDbf + fld->Offset + 1, ' ', fld->Length); - if (fld->Value) - { - if (fld->Value->Type == GAIA_TEXT_VALUE) - { - strcpy (buf, fld->Value->TxtValue); - len = strlen (buf); - utf8len = 2048; - pBuf = buf; - pUtf8buf = utf8buf; - if (iconv - ((iconv_t) (shp->IconvObj), &pBuf, &len, - &pUtf8buf, &utf8len) == (size_t) (-1)) - goto conversion_error; - memcpy (buf, utf8buf, 2048 - utf8len); - buf[2048 - utf8len] = '\0'; - if (strlen (buf) < fld->Length) - memcpy (shp->BufDbf + fld->Offset + 1, buf, - strlen (buf)); - else - memcpy (shp->BufDbf + fld->Offset + 1, buf, - fld->Length); - } - } - break; - case 'N': - memset (shp->BufDbf + fld->Offset + 1, '\0', fld->Length); - if (fld->Value) - { - if (fld->Value->Type == GAIA_INT_VALUE) - { -#if defined(_WIN32) || defined(__MINGW32__) -/* CAVEAT - M$ runtime doesn't supports %lld for 64 bits */ - sprintf (dummy, "%I64d", fld->Value->IntValue); -#else - sprintf (dummy, "%lld", fld->Value->IntValue); -#endif - if (strlen (dummy) <= fld->Length) - memcpy (shp->BufDbf + fld->Offset + 1, - dummy, strlen (dummy)); - } - if (fld->Value->Type == GAIA_DOUBLE_VALUE) - { - sprintf (fmt, "%%1.%df", fld->Decimals); - sprintf (dummy, fmt, fld->Value->DblValue); - if (strlen (dummy) <= fld->Length) - memcpy (shp->BufDbf + fld->Offset + 1, - dummy, strlen (dummy)); - } - } - break; - }; - fld = fld->Next; - } - if (!(entity->Geometry)) - { - /* exporting a NULL Shape */ - gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ - gaiaExport32 (shp->BufShp + 4, 2, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ - fwrite (shp->BufShp, 1, 8, shp->flShx); - (shp->ShxSize) += 4; /* updating current SHX file position [in 16 bits words !!!] */ - gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ - gaiaExport32 (shp->BufShp + 4, 2, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ - gaiaExport32 (shp->BufShp + 8, GAIA_SHP_NULL, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = NULL */ - fwrite (shp->BufShp, 1, 12, shp->flShp); - (shp->ShpSize) += 6; /* updating current SHP file position [in 16 bits words !!!] */ - } - else - { - /* updates the shapefile main MBR-BBOX */ - gaiaMbrGeometry (entity->Geometry); - if (entity->Geometry->MinX < shp->MinX) - shp->MinX = entity->Geometry->MinX; - if (entity->Geometry->MaxX > shp->MaxX) - shp->MaxX = entity->Geometry->MaxX; - if (entity->Geometry->MinY < shp->MinY) - shp->MinY = entity->Geometry->MinY; - if (entity->Geometry->MaxY > shp->MaxY) - shp->MaxY = entity->Geometry->MaxY; - if (shp->Shape == GAIA_SHP_POINT) - { - /* this one is expected to be a POINT */ - gaiaPointPtr pt = entity->Geometry->FirstPoint; - if (!pt) - { - strcpy (dummy, - "a POINT is expected, but there is no POINT in geometry"); - if (shp->LastError) - free (shp->LastError); - len = strlen (dummy); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, dummy); - return 0; - } - /* inserting POINT entity into SHX file */ - gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ - gaiaExport32 (shp->BufShp + 4, 10, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ - fwrite (shp->BufShp, 1, 8, shp->flShx); - (shp->ShxSize) += 4; /* updating current SHX file position [in 16 bits words !!!] */ - /* inserting POINT into SHP file */ - gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ - gaiaExport32 (shp->BufShp + 4, 10, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ - gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POINT, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POINT */ - gaiaExport64 (shp->BufShp + 12, pt->X, GAIA_LITTLE_ENDIAN, endian_arch); /* exports X coordinate */ - gaiaExport64 (shp->BufShp + 20, pt->Y, GAIA_LITTLE_ENDIAN, endian_arch); /* exports Y coordinate */ - fwrite (shp->BufShp, 1, 28, shp->flShp); - (shp->ShpSize) += 14; /* updating current SHP file position [in 16 bits words !!!] */ - } - if (shp->Shape == GAIA_SHP_POINTZ) - { - /* this one is expected to be a POINT Z */ - gaiaPointPtr pt = entity->Geometry->FirstPoint; - if (!pt) - { - strcpy (dummy, - "a POINT is expected, but there is no POINT in geometry"); - if (shp->LastError) - free (shp->LastError); - len = strlen (dummy); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, dummy); - return 0; - } - /* inserting POINT Z entity into SHX file */ - gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ - gaiaExport32 (shp->BufShp + 4, 18, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ - fwrite (shp->BufShp, 1, 8, shp->flShx); - (shp->ShxSize) += 4; /* updating current SHX file position [in 16 bits words !!!] */ - /* inserting POINT into SHP file */ - gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ - gaiaExport32 (shp->BufShp + 4, 18, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ - gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POINTZ, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POINT Z */ - gaiaExport64 (shp->BufShp + 12, pt->X, GAIA_LITTLE_ENDIAN, endian_arch); /* exports X coordinate */ - gaiaExport64 (shp->BufShp + 20, pt->Y, GAIA_LITTLE_ENDIAN, endian_arch); /* exports Y coordinate */ - gaiaExport64 (shp->BufShp + 28, pt->Z, GAIA_LITTLE_ENDIAN, endian_arch); /* exports Z coordinate */ - gaiaExport64 (shp->BufShp + 36, pt->M, GAIA_LITTLE_ENDIAN, endian_arch); /* exports M coordinate */ - fwrite (shp->BufShp, 1, 44, shp->flShp); - (shp->ShpSize) += 22; /* updating current SHP file position [in 16 bits words !!!] */ - } - if (shp->Shape == GAIA_SHP_POINTM) - { - /* this one is expected to be a POINT M */ - gaiaPointPtr pt = entity->Geometry->FirstPoint; - if (!pt) - { - strcpy (dummy, - "a POINT is expected, but there is no POINT in geometry"); - if (shp->LastError) - free (shp->LastError); - len = strlen (dummy); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, dummy); - return 0; - } - /* inserting POINT entity into SHX file */ - gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ - gaiaExport32 (shp->BufShp + 4, 14, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ - fwrite (shp->BufShp, 1, 8, shp->flShx); - (shp->ShxSize) += 4; /* updating current SHX file position [in 16 bits words !!!] */ - /* inserting POINT into SHP file */ - gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ - gaiaExport32 (shp->BufShp + 4, 14, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ - gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POINTM, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POINT M */ - gaiaExport64 (shp->BufShp + 12, pt->X, GAIA_LITTLE_ENDIAN, endian_arch); /* exports X coordinate */ - gaiaExport64 (shp->BufShp + 20, pt->Y, GAIA_LITTLE_ENDIAN, endian_arch); /* exports Y coordinate */ - gaiaExport64 (shp->BufShp + 28, pt->Y, GAIA_LITTLE_ENDIAN, endian_arch); /* exports M coordinate */ - fwrite (shp->BufShp, 1, 36, shp->flShp); - (shp->ShpSize) += 18; /* updating current SHP file position [in 16 bits words !!!] */ - } - if (shp->Shape == GAIA_SHP_POLYLINE) - { - /* this one is expected to be a LINESTRING / MULTILINESTRING */ - gaiaLinestringPtr line; - tot_ln = 0; - tot_v = 0; - line = entity->Geometry->FirstLinestring; - while (line) - { - /* computes # lines and total # points */ - tot_v += line->Points; - tot_ln++; - line = line->Next; - } - if (!tot_ln) - { - strcpy (dummy, - "a LINESTRING is expected, but there is no LINESTRING in geometry"); - if (shp->LastError) - free (shp->LastError); - len = strlen (dummy); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, dummy); - return 0; - } - this_size = 22 + (2 * tot_ln) + (tot_v * 8); /* size [in 16 bits words !!!] for this SHP entity */ - if ((this_size * 2) + 1024 > shp->ShpBfsz) - { - /* current buffer is too small; we need to allocate a bigger one */ - free (shp->BufShp); - shp->ShpBfsz = (this_size * 2) + 1024; - shp->BufShp = malloc (shp->ShpBfsz); - } - /* inserting LINESTRING or MULTILINESTRING in SHX file */ - gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ - fwrite (shp->BufShp, 1, 8, shp->flShx); - (shp->ShxSize) += 4; - /* inserting LINESTRING or MULTILINESTRING in SHP file */ - gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ - gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POLYLINE, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POLYLINE */ - gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ - gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport32 (shp->BufShp + 44, tot_ln, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # lines in this polyline */ - gaiaExport32 (shp->BufShp + 48, tot_v, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ - tot_v = 0; /* resets points counter */ - ix = 52; /* sets current buffer offset */ - line = entity->Geometry->FirstLinestring; - while (line) - { - /* exports start point index for each line */ - gaiaExport32 (shp->BufShp + ix, tot_v, - GAIA_LITTLE_ENDIAN, endian_arch); - tot_v += line->Points; - ix += 4; - line = line->Next; - } - line = entity->Geometry->FirstLinestring; - while (line) - { - /* exports points for each line */ - for (iv = 0; iv < line->Points; iv++) - { - /* exports a POINT [x,y] */ - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, - &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, - &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, - &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, x, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, y, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - } - line = line->Next; - } - fwrite (shp->BufShp, 1, ix, shp->flShp); - (shp->ShpSize) += (ix / 2); /* updating current SHP file position [in 16 bits words !!!] */ - } - if (shp->Shape == GAIA_SHP_POLYLINEZ) - { - /* this one is expected to be a LINESTRING / MULTILINESTRING Z */ - gaiaLinestringPtr line; - gaiaZRangeGeometry (entity->Geometry, &minZ, &maxZ); - gaiaMRangeGeometry (entity->Geometry, &minM, &maxM); - tot_ln = 0; - tot_v = 0; - line = entity->Geometry->FirstLinestring; - while (line) - { - /* computes # lines and total # points */ - tot_v += line->Points; - tot_ln++; - line = line->Next; - } - if (!tot_ln) - { - strcpy (dummy, - "a LINESTRING is expected, but there is no LINESTRING in geometry"); - if (shp->LastError) - free (shp->LastError); - len = strlen (dummy); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, dummy); - return 0; - } - hasM = 0; - if (shp->EffectiveDims == GAIA_XY_M - || shp->EffectiveDims == GAIA_XY_Z_M) - hasM = 1; - if (hasM) - this_size = 38 + (2 * tot_ln) + (tot_v * 16); /* size [in 16 bits words !!!] ZM */ - else - this_size = 30 + (2 * tot_ln) + (tot_v * 12); /* size [in 16 bits words !!!] Z-only */ - if ((this_size * 2) + 1024 > shp->ShpBfsz) - { - /* current buffer is too small; we need to allocate a bigger one */ - free (shp->BufShp); - shp->ShpBfsz = (this_size * 2) + 1024; - shp->BufShp = malloc (shp->ShpBfsz); - } - /* inserting LINESTRING or MULTILINESTRING in SHX file */ - gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ - fwrite (shp->BufShp, 1, 8, shp->flShx); - (shp->ShxSize) += 4; - /* inserting LINESTRING or MULTILINESTRING in SHP file */ - gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ - gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POLYLINEZ, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POLYLINE Z */ - gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ - gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport32 (shp->BufShp + 44, tot_ln, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # lines in this polyline */ - gaiaExport32 (shp->BufShp + 48, tot_v, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ - tot_v = 0; /* resets points counter */ - ix = 52; /* sets current buffer offset */ - line = entity->Geometry->FirstLinestring; - while (line) - { - /* exports start point index for each line */ - gaiaExport32 (shp->BufShp + ix, tot_v, - GAIA_LITTLE_ENDIAN, endian_arch); - tot_v += line->Points; - ix += 4; - line = line->Next; - } - line = entity->Geometry->FirstLinestring; - while (line) - { - /* exports points for each line */ - for (iv = 0; iv < line->Points; iv++) - { - /* exports a POINT [x,y] */ - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, - &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, - &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, - &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, x, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, y, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - } - line = line->Next; - } - /* exporting the Z-range [min/max] */ - gaiaExport64 (shp->BufShp + ix, minZ, GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, maxZ, GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - line = entity->Geometry->FirstLinestring; - while (line) - { - /* exports Z-values for each line */ - for (iv = 0; iv < line->Points; iv++) - { - /* exports Z-value */ - z = 0.0; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, - &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, - &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, - &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, z, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - } - line = line->Next; - } - if (hasM) - { - /* exporting the M-range [min/max] */ - gaiaExport64 (shp->BufShp + ix, minM, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, maxM, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - line = entity->Geometry->FirstLinestring; - while (line) - { - /* exports M-values for each line */ - for (iv = 0; iv < line->Points; iv++) - { - /* exports M-value */ - m = 0.0; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, - &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, - &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, - &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, m, - GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - } - line = line->Next; - } - } - fwrite (shp->BufShp, 1, ix, shp->flShp); - (shp->ShpSize) += (ix / 2); /* updating current SHP file position [in 16 bits words !!!] */ - } - if (shp->Shape == GAIA_SHP_POLYLINEM) - { - /* this one is expected to be a LINESTRING / MULTILINESTRING M */ - gaiaLinestringPtr line; - gaiaMRangeGeometry (entity->Geometry, &minM, &maxM); - tot_ln = 0; - tot_v = 0; - line = entity->Geometry->FirstLinestring; - while (line) - { - /* computes # lines and total # points */ - tot_v += line->Points; - tot_ln++; - line = line->Next; - } - if (!tot_ln) - { - strcpy (dummy, - "a LINESTRING is expected, but there is no LINESTRING in geometry"); - if (shp->LastError) - free (shp->LastError); - len = strlen (dummy); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, dummy); - return 0; - } - this_size = 30 + (2 * tot_ln) + (tot_v * 12); /* size [in 16 bits words !!!] for this SHP entity */ - if ((this_size * 2) + 1024 > shp->ShpBfsz) - { - /* current buffer is too small; we need to allocate a bigger one */ - free (shp->BufShp); - shp->ShpBfsz = (this_size * 2) + 1024; - shp->BufShp = malloc (shp->ShpBfsz); - } - /* inserting LINESTRING or MULTILINESTRING in SHX file */ - gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ - fwrite (shp->BufShp, 1, 8, shp->flShx); - (shp->ShxSize) += 4; - /* inserting LINESTRING or MULTILINESTRING in SHP file */ - gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ - gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POLYLINEM, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POLYLINE M */ - gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ - gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport32 (shp->BufShp + 44, tot_ln, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # lines in this polyline */ - gaiaExport32 (shp->BufShp + 48, tot_v, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ - tot_v = 0; /* resets points counter */ - ix = 52; /* sets current buffer offset */ - line = entity->Geometry->FirstLinestring; - while (line) - { - /* exports start point index for each line */ - gaiaExport32 (shp->BufShp + ix, tot_v, - GAIA_LITTLE_ENDIAN, endian_arch); - tot_v += line->Points; - ix += 4; - line = line->Next; - } - line = entity->Geometry->FirstLinestring; - while (line) - { - /* exports points for each line */ - for (iv = 0; iv < line->Points; iv++) - { - /* exports a POINT [x,y] */ - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, - &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, - &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, - &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, x, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, y, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - } - line = line->Next; - } - /* exporting the M-range [min/max] */ - gaiaExport64 (shp->BufShp + ix, minM, GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, maxM, GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - line = entity->Geometry->FirstLinestring; - while (line) - { - /* exports M-values for each line */ - for (iv = 0; iv < line->Points; iv++) - { - /* exports M-value */ - m = 0.0; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, - &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, - &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, - &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, m, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - } - line = line->Next; - } - fwrite (shp->BufShp, 1, ix, shp->flShp); - (shp->ShpSize) += (ix / 2); /* updating current SHP file position [in 16 bits words !!!] */ - } - if (shp->Shape == GAIA_SHP_POLYGON) - { - /* this one is expected to be a POLYGON or a MULTIPOLYGON */ - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - int ib; - tot_ln = 0; - tot_v = 0; - polyg = entity->Geometry->FirstPolygon; - while (polyg) - { - /* computes # rings and total # points */ - gaiaSaneClockwise (polyg); /* we must assure that exterior ring is clockwise, and interior rings are anti-clockwise */ - ring = polyg->Exterior; /* this one is the exterior ring */ - tot_v += ring->Points; - tot_ln++; - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* that ones are the interior rings */ - ring = polyg->Interiors + ib; - tot_v += ring->Points; - tot_ln++; - } - polyg = polyg->Next; - } - if (!tot_ln) - { - strcpy (dummy, - "a POLYGON is expected, but there is no POLYGON in geometry"); - if (shp->LastError) - free (shp->LastError); - len = strlen (dummy); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, dummy); - return 0; - } - this_size = 22 + (2 * tot_ln) + (tot_v * 8); /* size [in 16 bits words !!!] for this SHP entity */ - if ((this_size * 2) + 1024 > shp->ShpBfsz) - { - /* current buffer is too small; we need to allocate a bigger one */ - free (shp->BufShp); - shp->ShpBfsz = (this_size * 2) + 1024; - shp->BufShp = malloc (shp->ShpBfsz); - } - /* inserting POLYGON or MULTIPOLYGON in SHX file */ - gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ - fwrite (shp->BufShp, 1, 8, shp->flShx); - (shp->ShxSize) += 4; - /* inserting POLYGON or MULTIPOLYGON in SHP file */ - gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ - gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POLYGON, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POLYGON */ - gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ - gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport32 (shp->BufShp + 44, tot_ln, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # rings in this polygon */ - gaiaExport32 (shp->BufShp + 48, tot_v, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ - tot_v = 0; /* resets points counter */ - ix = 52; /* sets current buffer offset */ - polyg = entity->Geometry->FirstPolygon; - while (polyg) - { - /* exports start point index for each line */ - ring = polyg->Exterior; /* this one is the exterior ring */ - gaiaExport32 (shp->BufShp + ix, tot_v, - GAIA_LITTLE_ENDIAN, endian_arch); - tot_v += ring->Points; - ix += 4; - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* that ones are the interior rings */ - ring = polyg->Interiors + ib; - gaiaExport32 (shp->BufShp + ix, tot_v, - GAIA_LITTLE_ENDIAN, endian_arch); - tot_v += ring->Points; - ix += 4; - } - polyg = polyg->Next; - } - polyg = entity->Geometry->FirstPolygon; - while (polyg) - { - /* exports points for each ring */ - ring = polyg->Exterior; /* this one is the exterior ring */ - for (iv = 0; iv < ring->Points; iv++) - { - /* exports a POINT [x,y] - exterior ring */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, - &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, - &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, - &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, x, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, y, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* that ones are the interior rings */ - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - /* exports a POINT [x,y] - interior ring */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, - &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, - &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, - &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, x, - GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, y, - GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - } - } - polyg = polyg->Next; - } - fwrite (shp->BufShp, 1, ix, shp->flShp); - (shp->ShpSize) += (ix / 2); - } - if (shp->Shape == GAIA_SHP_POLYGONZ) - { - /* this one is expected to be a POLYGON or a MULTIPOLYGON Z */ - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - int ib; - gaiaZRangeGeometry (entity->Geometry, &minZ, &maxZ); - gaiaMRangeGeometry (entity->Geometry, &minM, &maxM); - tot_ln = 0; - tot_v = 0; - polyg = entity->Geometry->FirstPolygon; - while (polyg) - { - /* computes # rings and total # points */ - gaiaSaneClockwise (polyg); /* we must assure that exterior ring is clockwise, and interior rings are anti-clockwise */ - ring = polyg->Exterior; /* this one is the exterior ring */ - tot_v += ring->Points; - tot_ln++; - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* that ones are the interior rings */ - ring = polyg->Interiors + ib; - tot_v += ring->Points; - tot_ln++; - } - polyg = polyg->Next; - } - if (!tot_ln) - { - strcpy (dummy, - "a POLYGON is expected, but there is no POLYGON in geometry"); - if (shp->LastError) - free (shp->LastError); - len = strlen (dummy); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, dummy); - return 0; - } - hasM = 0; - if (shp->EffectiveDims == GAIA_XY_M - || shp->EffectiveDims == GAIA_XY_Z_M) - hasM = 1; - if (hasM) - this_size = 38 + (2 * tot_ln) + (tot_v * 16); /* size [in 16 bits words !!!] ZM */ - else - this_size = 30 + (2 * tot_ln) + (tot_v * 12); /* size [in 16 bits words !!!] Z-only */ - if ((this_size * 2) + 1024 > shp->ShpBfsz) - { - /* current buffer is too small; we need to allocate a bigger one */ - free (shp->BufShp); - shp->ShpBfsz = (this_size * 2) + 1024; - shp->BufShp = malloc (shp->ShpBfsz); - } - /* inserting POLYGON or MULTIPOLYGON in SHX file */ - gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ - fwrite (shp->BufShp, 1, 8, shp->flShx); - (shp->ShxSize) += 4; - /* inserting POLYGON or MULTIPOLYGON in SHP file */ - gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ - gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POLYGONZ, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POLYGON Z */ - gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ - gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport32 (shp->BufShp + 44, tot_ln, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # rings in this polygon */ - gaiaExport32 (shp->BufShp + 48, tot_v, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ - tot_v = 0; /* resets points counter */ - ix = 52; /* sets current buffer offset */ - polyg = entity->Geometry->FirstPolygon; - while (polyg) - { - /* exports start point index for each line */ - ring = polyg->Exterior; /* this one is the exterior ring */ - gaiaExport32 (shp->BufShp + ix, tot_v, - GAIA_LITTLE_ENDIAN, endian_arch); - tot_v += ring->Points; - ix += 4; - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* that ones are the interior rings */ - ring = polyg->Interiors + ib; - gaiaExport32 (shp->BufShp + ix, tot_v, - GAIA_LITTLE_ENDIAN, endian_arch); - tot_v += ring->Points; - ix += 4; - } - polyg = polyg->Next; - } - polyg = entity->Geometry->FirstPolygon; - while (polyg) - { - /* exports points for each ring */ - ring = polyg->Exterior; /* this one is the exterior ring */ - for (iv = 0; iv < ring->Points; iv++) - { - /* exports a POINT [x,y] - exterior ring */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, - &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, - &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, - &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, x, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, y, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* that ones are the interior rings */ - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - /* exports a POINT [x,y] - interior ring */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, - &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, - &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, - &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, x, - GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, y, - GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - } - } - polyg = polyg->Next; - } - /* exporting the Z-range [min/max] */ - gaiaExport64 (shp->BufShp + ix, minZ, GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, maxZ, GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - polyg = entity->Geometry->FirstPolygon; - while (polyg) - { - /* exports Z-values for each ring */ - ring = polyg->Exterior; /* this one is the exterior ring */ - for (iv = 0; iv < ring->Points; iv++) - { - /* exports Z-values - exterior ring */ - z = 0.0; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, - &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, - &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, - &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, z, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* that ones are the interior rings */ - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - /* exports Z-values - interior ring */ - z = 0.0; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, - &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, - &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, - &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, z, - GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - } - } - polyg = polyg->Next; - } - if (hasM) - { - /* exporting the M-range [min/max] */ - gaiaExport64 (shp->BufShp + ix, minM, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, maxM, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - polyg = entity->Geometry->FirstPolygon; - while (polyg) - { - /* exports M-values for each ring */ - ring = polyg->Exterior; /* this one is the exterior ring */ - for (iv = 0; iv < ring->Points; iv++) - { - /* exports M-values - exterior ring */ - m = 0.0; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, - &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, - &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, - &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, m, - GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* that ones are the interior rings */ - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - /* exports M-values - interior ring */ - m = 0.0; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, - iv, &x, &y, &z); - } - else if (ring->DimensionModel == - GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, - iv, &x, &y, &m); - } - else if (ring->DimensionModel == - GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, - iv, &x, &y, &z, - &m); - } - else - { - gaiaGetPoint (ring->Coords, - iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, m, - GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - } - } - polyg = polyg->Next; - } - } - fwrite (shp->BufShp, 1, ix, shp->flShp); - (shp->ShpSize) += (ix / 2); - } - if (shp->Shape == GAIA_SHP_POLYGONM) - { - /* this one is expected to be a POLYGON or a MULTIPOLYGON M */ - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - int ib; - gaiaMRangeGeometry (entity->Geometry, &minM, &maxM); - tot_ln = 0; - tot_v = 0; - polyg = entity->Geometry->FirstPolygon; - while (polyg) - { - /* computes # rings and total # points */ - gaiaSaneClockwise (polyg); /* we must assure that exterior ring is clockwise, and interior rings are anti-clockwise */ - ring = polyg->Exterior; /* this one is the exterior ring */ - tot_v += ring->Points; - tot_ln++; - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* that ones are the interior rings */ - ring = polyg->Interiors + ib; - tot_v += ring->Points; - tot_ln++; - } - polyg = polyg->Next; - } - if (!tot_ln) - { - strcpy (dummy, - "a POLYGON is expected, but there is no POLYGON in geometry"); - if (shp->LastError) - free (shp->LastError); - len = strlen (dummy); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, dummy); - return 0; - } - this_size = 30 + (2 * tot_ln) + (tot_v * 12); /* size [in 16 bits words !!!] for this SHP entity */ - if ((this_size * 2) + 1024 > shp->ShpBfsz) - { - /* current buffer is too small; we need to allocate a bigger one */ - free (shp->BufShp); - shp->ShpBfsz = (this_size * 2) + 1024; - shp->BufShp = malloc (shp->ShpBfsz); - } - /* inserting POLYGON or MULTIPOLYGON in SHX file */ - gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ - fwrite (shp->BufShp, 1, 8, shp->flShx); - (shp->ShxSize) += 4; - /* inserting POLYGON or MULTIPOLYGON in SHP file */ - gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ - gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POLYGONM, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POLYGON M */ - gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ - gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport32 (shp->BufShp + 44, tot_ln, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # rings in this polygon */ - gaiaExport32 (shp->BufShp + 48, tot_v, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ - tot_v = 0; /* resets points counter */ - ix = 52; /* sets current buffer offset */ - polyg = entity->Geometry->FirstPolygon; - while (polyg) - { - /* exports start point index for each line */ - ring = polyg->Exterior; /* this one is the exterior ring */ - gaiaExport32 (shp->BufShp + ix, tot_v, - GAIA_LITTLE_ENDIAN, endian_arch); - tot_v += ring->Points; - ix += 4; - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* that ones are the interior rings */ - ring = polyg->Interiors + ib; - gaiaExport32 (shp->BufShp + ix, tot_v, - GAIA_LITTLE_ENDIAN, endian_arch); - tot_v += ring->Points; - ix += 4; - } - polyg = polyg->Next; - } - polyg = entity->Geometry->FirstPolygon; - while (polyg) - { - /* exports points for each ring */ - ring = polyg->Exterior; /* this one is the exterior ring */ - for (iv = 0; iv < ring->Points; iv++) - { - /* exports a POINT [x,y] - exterior ring */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, - &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, - &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, - &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, x, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, y, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* that ones are the interior rings */ - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - /* exports a POINT [x,y] - interior ring */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, - &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, - &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, - &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, x, - GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, y, - GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - } - } - polyg = polyg->Next; - } - /* exporting the M-range [min/max] */ - gaiaExport64 (shp->BufShp + ix, minM, GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, maxM, GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - polyg = entity->Geometry->FirstPolygon; - while (polyg) - { - /* exports M-values for each ring */ - ring = polyg->Exterior; /* this one is the exterior ring */ - for (iv = 0; iv < ring->Points; iv++) - { - /* exports M-values - exterior ring */ - m = 0.0; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, - &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, - &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, - &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, m, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* that ones are the interior rings */ - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - /* exports M-values - interior ring */ - m = 0.0; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, - &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, - &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, - &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - gaiaExport64 (shp->BufShp + ix, m, - GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - } - } - polyg = polyg->Next; - } - fwrite (shp->BufShp, 1, ix, shp->flShp); - (shp->ShpSize) += (ix / 2); - } - if (shp->Shape == GAIA_SHP_MULTIPOINT) - { - /* this one is expected to be a MULTIPOINT */ - gaiaPointPtr pt; - tot_pts = 0; - pt = entity->Geometry->FirstPoint; - while (pt) - { - /* computes # points */ - tot_pts++; - pt = pt->Next; - } - if (!tot_pts) - { - strcpy (dummy, - "a MULTIPOINT is expected, but there is no POINT/MULTIPOINT in geometry"); - if (shp->LastError) - free (shp->LastError); - len = strlen (dummy); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, dummy); - return 0; - } - this_size = 20 + (tot_pts * 8); /* size [in 16 bits words !!!] for this SHP entity */ - if ((this_size * 2) + 1024 > shp->ShpBfsz) - { - /* current buffer is too small; we need to allocate a bigger one */ - free (shp->BufShp); - shp->ShpBfsz = (this_size * 2) + 1024; - shp->BufShp = malloc (shp->ShpBfsz); - } - /* inserting MULTIPOINT in SHX file */ - gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ - fwrite (shp->BufShp, 1, 8, shp->flShx); - (shp->ShxSize) += 4; - /* inserting MULTIPOINT in SHP file */ - gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ - gaiaExport32 (shp->BufShp + 8, GAIA_SHP_MULTIPOINT, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = MULTIPOINT */ - gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ - gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport32 (shp->BufShp + 44, tot_pts, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ - ix = 48; /* sets current buffer offset */ - pt = entity->Geometry->FirstPoint; - while (pt) - { - /* exports each point */ - gaiaExport64 (shp->BufShp + ix, pt->X, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, pt->Y, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - pt = pt->Next; - } - fwrite (shp->BufShp, 1, ix, shp->flShp); - (shp->ShpSize) += (ix / 2); /* updating current SHP file position [in 16 bits words !!!] */ - } - if (shp->Shape == GAIA_SHP_MULTIPOINTZ) - { - /* this one is expected to be a MULTIPOINT Z */ - gaiaPointPtr pt; - gaiaZRangeGeometry (entity->Geometry, &minZ, &maxZ); - gaiaMRangeGeometry (entity->Geometry, &minM, &maxM); - tot_pts = 0; - pt = entity->Geometry->FirstPoint; - while (pt) - { - /* computes # points */ - tot_pts++; - pt = pt->Next; - } - if (!tot_pts) - { - strcpy (dummy, - "a MULTIPOINT is expected, but there is no POINT/MULTIPOINT in geometry"); - if (shp->LastError) - free (shp->LastError); - len = strlen (dummy); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, dummy); - return 0; - } - hasM = 0; - if (shp->EffectiveDims == GAIA_XY_M - || shp->EffectiveDims == GAIA_XY_Z_M) - hasM = 1; - if (hasM) - this_size = 36 + (tot_pts * 16); /* size [in 16 bits words !!!] ZM */ - else - this_size = 28 + (tot_pts * 12); /* size [in 16 bits words !!!] Z-only */ - if ((this_size * 2) + 1024 > shp->ShpBfsz) - { - /* current buffer is too small; we need to allocate a bigger one */ - free (shp->BufShp); - shp->ShpBfsz = (this_size * 2) + 1024; - shp->BufShp = malloc (shp->ShpBfsz); - } - /* inserting MULTIPOINT in SHX file */ - gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ - fwrite (shp->BufShp, 1, 8, shp->flShx); - (shp->ShxSize) += 4; - /* inserting MULTIPOINT in SHP file */ - gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ - gaiaExport32 (shp->BufShp + 8, GAIA_SHP_MULTIPOINTZ, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = MULTIPOINT Z */ - gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ - gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport32 (shp->BufShp + 44, tot_pts, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ - ix = 48; /* sets current buffer offset */ - pt = entity->Geometry->FirstPoint; - while (pt) - { - /* exports each point */ - gaiaExport64 (shp->BufShp + ix, pt->X, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, pt->Y, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - pt = pt->Next; - } - /* exporting the Z-range [min/max] */ - gaiaExport64 (shp->BufShp + ix, minZ, GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, maxZ, GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - pt = entity->Geometry->FirstPoint; - while (pt) - { - /* exports Z-values */ - gaiaExport64 (shp->BufShp + ix, pt->Z, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - pt = pt->Next; - } - if (hasM) - { - /* exporting the M-range [min/max] */ - gaiaExport64 (shp->BufShp + ix, minM, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, maxM, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - pt = entity->Geometry->FirstPoint; - while (pt) - { - /* exports M-values */ - gaiaExport64 (shp->BufShp + ix, pt->M, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - pt = pt->Next; - } - } - fwrite (shp->BufShp, 1, ix, shp->flShp); - (shp->ShpSize) += (ix / 2); /* updating current SHP file position [in 16 bits words !!!] */ - } - if (shp->Shape == GAIA_SHP_MULTIPOINTM) - { - /* this one is expected to be a MULTIPOINT M */ - gaiaPointPtr pt; - gaiaMRangeGeometry (entity->Geometry, &minM, &maxM); - tot_pts = 0; - pt = entity->Geometry->FirstPoint; - while (pt) - { - /* computes # points */ - tot_pts++; - pt = pt->Next; - } - if (!tot_pts) - { - strcpy (dummy, - "a MULTIPOINT is expected, but there is no POINT/MULTIPOINT in geometry"); - if (shp->LastError) - free (shp->LastError); - len = strlen (dummy); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, dummy); - return 0; - } - this_size = 28 + (tot_pts * 12); /* size [in 16 bits words !!!] for this SHP entity */ - if ((this_size * 2) + 1024 > shp->ShpBfsz) - { - /* current buffer is too small; we need to allocate a bigger one */ - free (shp->BufShp); - shp->ShpBfsz = (this_size * 2) + 1024; - shp->BufShp = malloc (shp->ShpBfsz); - } - /* inserting MULTIPOINT in SHX file */ - gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ - fwrite (shp->BufShp, 1, 8, shp->flShx); - (shp->ShxSize) += 4; - /* inserting MULTIPOINT in SHP file */ - gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ - gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ - gaiaExport32 (shp->BufShp + 8, GAIA_SHP_MULTIPOINTM, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = MULTIPOINT M */ - gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ - gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, - GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport32 (shp->BufShp + 44, tot_pts, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ - ix = 48; /* sets current buffer offset */ - pt = entity->Geometry->FirstPoint; - while (pt) - { - /* exports each point */ - gaiaExport64 (shp->BufShp + ix, pt->X, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, pt->Y, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - pt = pt->Next; - } - /* exporting the M-range [min/max] */ - gaiaExport64 (shp->BufShp + ix, minM, GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - gaiaExport64 (shp->BufShp + ix, maxM, GAIA_LITTLE_ENDIAN, - endian_arch); - ix += 8; - pt = entity->Geometry->FirstPoint; - while (pt) - { - /* exports M-values */ - gaiaExport64 (shp->BufShp + ix, pt->M, - GAIA_LITTLE_ENDIAN, endian_arch); - ix += 8; - pt = pt->Next; - } - fwrite (shp->BufShp, 1, ix, shp->flShp); - (shp->ShpSize) += (ix / 2); /* updating current SHP file position [in 16 bits words !!!] */ - } - } -/* inserting entity in DBF file */ - fwrite (shp->BufDbf, 1, shp->DbfReclen, shp->flDbf); - (shp->DbfRecno)++; - return 1; - conversion_error: - if (shp->LastError) - free (shp->LastError); - sprintf (dummy, "Invalid character sequence"); - len = strlen (dummy); - shp->LastError = malloc (len + 1); - strcpy (shp->LastError, dummy); - return 0; -} - -GAIAGEO_DECLARE void -gaiaFlushShpHeaders (gaiaShapefilePtr shp) -{ -/* updates the various file headers */ - FILE *fl_shp = shp->flShp; - FILE *fl_shx = shp->flShx; - FILE *fl_dbf = shp->flDbf; - int shp_size = shp->ShpSize; - int shx_size = shp->ShxSize; - int dbf_size = shp->DbfSize; - int dbf_reclen = shp->DbfReclen; - int dbf_recno = shp->DbfRecno; - int endian_arch = shp->endian_arch; - double minx = shp->MinX; - double miny = shp->MinY; - double maxx = shp->MaxX; - double maxy = shp->MaxY; - unsigned char *buf_shp = shp->BufShp; -/* writing the SHP file header */ - fseek (fl_shp, 0, SEEK_SET); /* repositioning at SHP file start */ - gaiaExport32 (buf_shp, 9994, GAIA_BIG_ENDIAN, endian_arch); /* SHP magic number */ - gaiaExport32 (buf_shp + 4, 0, GAIA_BIG_ENDIAN, endian_arch); - gaiaExport32 (buf_shp + 8, 0, GAIA_BIG_ENDIAN, endian_arch); - gaiaExport32 (buf_shp + 12, 0, GAIA_BIG_ENDIAN, endian_arch); - gaiaExport32 (buf_shp + 16, 0, GAIA_BIG_ENDIAN, endian_arch); - gaiaExport32 (buf_shp + 20, 0, GAIA_BIG_ENDIAN, endian_arch); - gaiaExport32 (buf_shp + 24, shp_size, GAIA_BIG_ENDIAN, endian_arch); /* SHP file size - measured in 16 bits words !!! */ - gaiaExport32 (buf_shp + 28, 1000, GAIA_LITTLE_ENDIAN, endian_arch); /* version */ - gaiaExport32 (buf_shp + 32, shp->Shape, GAIA_LITTLE_ENDIAN, endian_arch); /* ESRI shape */ - gaiaExport64 (buf_shp + 36, minx, GAIA_LITTLE_ENDIAN, endian_arch); /* the MBR/BBOX for the whole shapefile */ - gaiaExport64 (buf_shp + 44, miny, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (buf_shp + 52, maxx, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (buf_shp + 60, maxy, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (buf_shp + 68, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (buf_shp + 76, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (buf_shp + 84, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (buf_shp + 92, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); - fwrite (buf_shp, 1, 100, fl_shp); -/* writing the SHX file header */ - fseek (fl_shx, 0, SEEK_SET); /* repositioning at SHX file start */ - gaiaExport32 (buf_shp, 9994, GAIA_BIG_ENDIAN, endian_arch); /* SHP magic number */ - gaiaExport32 (buf_shp + 4, 0, GAIA_BIG_ENDIAN, endian_arch); - gaiaExport32 (buf_shp + 8, 0, GAIA_BIG_ENDIAN, endian_arch); - gaiaExport32 (buf_shp + 12, 0, GAIA_BIG_ENDIAN, endian_arch); - gaiaExport32 (buf_shp + 16, 0, GAIA_BIG_ENDIAN, endian_arch); - gaiaExport32 (buf_shp + 20, 0, GAIA_BIG_ENDIAN, endian_arch); - gaiaExport32 (buf_shp + 24, shx_size, GAIA_BIG_ENDIAN, endian_arch); /* SHXfile size - measured in 16 bits words !!! */ - gaiaExport32 (buf_shp + 28, 1000, GAIA_LITTLE_ENDIAN, endian_arch); /* version */ - gaiaExport32 (buf_shp + 32, shp->Shape, GAIA_LITTLE_ENDIAN, endian_arch); /* ESRI shape */ - gaiaExport64 (buf_shp + 36, minx, GAIA_LITTLE_ENDIAN, endian_arch); /* the MBR for the whole shapefile */ - gaiaExport64 (buf_shp + 44, miny, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (buf_shp + 52, maxx, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (buf_shp + 60, maxy, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (buf_shp + 68, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (buf_shp + 76, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (buf_shp + 84, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaExport64 (buf_shp + 92, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); - fwrite (buf_shp, 1, 100, fl_shx); -/* writing the DBF file header */ - *buf_shp = 0x1a; /* DBF - this is theEOF marker */ - fwrite (buf_shp, 1, 1, fl_dbf); - fseek (fl_dbf, 0, SEEK_SET); /* repositioning at DBF file start */ - memset (buf_shp, '\0', 32); - *buf_shp = 0x03; /* DBF magic number */ - *(buf_shp + 1) = 1; /* this is supposed to be the last update date [Year, Month, Day], but we ignore it at all */ - *(buf_shp + 2) = 1; - *(buf_shp + 3) = 1; - gaiaExport32 (buf_shp + 4, dbf_recno, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # records in this DBF */ - gaiaExport16 (buf_shp + 8, (short) dbf_size, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the file header size */ - gaiaExport16 (buf_shp + 10, (short) dbf_reclen, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the record length */ - fwrite (buf_shp, 1, 32, fl_dbf); -} - -GAIAGEO_DECLARE void -gaiaShpAnalyze (gaiaShapefilePtr shp) -{ -/* analyzing the SHP content, in order to detect if there are LINESTRINGS or MULTILINESTRINGS -/ the same check is needed in order to detect if there are POLYGONS or MULTIPOLYGONS - */ - unsigned char buf[512]; - int rd; - int skpos; - int offset; - int off_shp; - int sz; - int shape; - int points; - int n; - int n1; - int base; - int start; - int end; - int iv; - int ind; - double x; - double y; - int polygons; - int ZM_size; - int multi = 0; - int hasM = 0; - int current_row = 0; - - gaiaRingPtr ring = NULL; - while (1) - { - /* positioning and reading the SHX file */ - offset = 100 + (current_row * 8); /* 100 bytes for the header + current row displacement; each SHX row = 8 bytes */ - skpos = fseek (shp->flShx, offset, SEEK_SET); - if (skpos != 0) - goto exit; - rd = fread (buf, sizeof (unsigned char), 8, shp->flShx); - if (rd != 8) - goto exit; - off_shp = gaiaImport32 (buf, GAIA_BIG_ENDIAN, shp->endian_arch); - /* positioning and reading corresponding SHP entity - geometry */ - offset = off_shp * 2; - skpos = fseek (shp->flShp, offset, SEEK_SET); - if (skpos != 0) - goto exit; - rd = fread (buf, sizeof (unsigned char), 12, shp->flShp); - if (rd != 12) - goto exit; - sz = gaiaImport32 (buf + 4, GAIA_BIG_ENDIAN, shp->endian_arch); - shape = gaiaImport32 (buf + 8, GAIA_LITTLE_ENDIAN, shp->endian_arch); - if ((sz * 2) > shp->ShpBfsz) - { - /* current buffer is too small; we need to allocate a bigger buffer */ - free (shp->BufShp); - shp->ShpBfsz = sz * 2; - shp->BufShp = malloc (sizeof (unsigned char) * shp->ShpBfsz); - } - if (shape == GAIA_SHP_POLYLINE || shape == GAIA_SHP_POLYLINEZ - || shape == GAIA_SHP_POLYLINEM) - { - /* shape polyline */ - rd = fread (shp->BufShp, sizeof (unsigned char), 32, - shp->flShp); - if (rd != 32) - goto exit; - rd = fread (shp->BufShp, sizeof (unsigned char), - (sz * 2) - 36, shp->flShp); - if (rd != (sz * 2) - 36) - goto exit; - n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - if (n > 1) - multi++; - if (shape == GAIA_SHP_POLYLINEZ) - { - ZM_size = 38 + (2 * n) + (n1 * 16); /* size [in 16 bits words !!!] ZM */ - if (sz == ZM_size) - hasM = 1; - } - } - if (shape == GAIA_SHP_POLYGON || shape == GAIA_SHP_POLYGONZ - || shape == GAIA_SHP_POLYGONM) - { - /* shape polygon */ - struct shp_ring_item *pExt; - struct shp_ring_collection ringsColl; - /* initializing the RING collection */ - ringsColl.First = NULL; - ringsColl.Last = NULL; - - rd = fread (shp->BufShp, sizeof (unsigned char), 32, - shp->flShp); - if (rd != 32) - goto exit; - rd = fread (shp->BufShp, sizeof (unsigned char), - (sz * 2) - 36, shp->flShp); - if (rd != (sz * 2) - 36) - goto exit; - n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - base = 8 + (n * 4); - start = 0; - for (ind = 0; ind < n; ind++) - { - if (ind < (n - 1)) - end = - gaiaImport32 (shp->BufShp + 8 + - ((ind + 1) * 4), - GAIA_LITTLE_ENDIAN, - shp->endian_arch); - else - end = n1; - points = end - start; - ring = gaiaAllocRing (points); - points = 0; - for (iv = start; iv < end; iv++) - { - x = gaiaImport64 (shp->BufShp + base + - (iv * 16), GAIA_LITTLE_ENDIAN, - shp->endian_arch); - y = gaiaImport64 (shp->BufShp + base + - (iv * 16) + 8, - GAIA_LITTLE_ENDIAN, - shp->endian_arch); - gaiaSetPoint (ring->Coords, points, x, y); - start++; - points++; - } - shp_add_ring (&ringsColl, ring); - ring = NULL; - } - shp_arrange_rings (&ringsColl); - pExt = ringsColl.First; - polygons = 0; - while (pExt != NULL) - { - if (pExt->IsExterior) - polygons++; - pExt = pExt->Next; - } - shp_free_rings (&ringsColl); - - if (polygons > 1) - multi++; - if (shape == GAIA_SHP_POLYGONZ) - { - ZM_size = 38 + (2 * n) + (n1 * 16); /* size [in 16 bits words !!!] ZM */ - if (sz == ZM_size) - hasM = 1; - } - } - if (shape == GAIA_SHP_MULTIPOINTZ) - { - /* shape multipoint Z */ - rd = fread (shp->BufShp, sizeof (unsigned char), 32, - shp->flShp); - if (rd != 32) - goto exit; - rd = fread (shp->BufShp, sizeof (unsigned char), - (sz * 2) - 36, shp->flShp); - if (rd != (sz * 2) - 36) - goto exit; - n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, - shp->endian_arch); - ZM_size = 38 + (n * 16); /* size [in 16 bits words !!!] ZM */ - if (sz == ZM_size) - hasM = 1; - } - current_row++; - } - exit: - if (ring) - gaiaFreeRing (ring); - if (shp->LastError) - free (shp->LastError); - shp->LastError = NULL; -/* setting the EffectiveType, as determined by this analysis */ - if (shp->Shape == GAIA_SHP_POLYLINE || shp->Shape == GAIA_SHP_POLYLINEZ - || shp->Shape == GAIA_SHP_POLYLINEM) - { - /* SHAPE polyline */ - if (multi) - shp->EffectiveType = GAIA_MULTILINESTRING; - else - shp->EffectiveType = GAIA_LINESTRING; - } - if (shp->Shape == GAIA_SHP_POLYGON || shp->Shape == GAIA_SHP_POLYGONZ - || shp->Shape == GAIA_SHP_POLYGONM) - { - /* SHAPE polygon */ - if (multi) - shp->EffectiveType = GAIA_MULTIPOLYGON; - else - shp->EffectiveType = GAIA_POLYGON; - } - if (shp->Shape == GAIA_SHP_POLYLINEZ || shp->Shape == GAIA_SHP_POLYGONZ - || shp->Shape == GAIA_SHP_MULTIPOINTZ) - { - if (hasM) - shp->EffectiveDims = GAIA_XY_Z_M; - else - shp->EffectiveDims = GAIA_XY_Z; - } -} - -GAIAGEO_DECLARE gaiaDbfPtr -gaiaAllocDbf () -{ -/* allocates and initializes the DBF object */ - gaiaDbfPtr dbf = malloc (sizeof (gaiaDbf)); - dbf->endian_arch = 1; - dbf->Path = NULL; - dbf->flDbf = NULL; - dbf->Dbf = NULL; - dbf->BufDbf = NULL; - dbf->DbfHdsz = 0; - dbf->DbfReclen = 0; - dbf->DbfSize = 0; - dbf->DbfRecno = 0; - dbf->Valid = 0; - dbf->IconvObj = NULL; - dbf->LastError = NULL; - return dbf; -} - -GAIAGEO_DECLARE void -gaiaFreeDbf (gaiaDbfPtr dbf) -{ -/* frees all memory allocations related to the DBF object */ - if (dbf->Path) - free (dbf->Path); - if (dbf->flDbf) - fclose (dbf->flDbf); - if (dbf->Dbf) - gaiaFreeDbfList (dbf->Dbf); - if (dbf->BufDbf) - free (dbf->BufDbf); - if (dbf->IconvObj) - iconv_close ((iconv_t) dbf->IconvObj); - if (dbf->LastError) - free (dbf->LastError); - free (dbf); -} - -GAIAGEO_DECLARE void -gaiaOpenDbfRead (gaiaDbfPtr dbf, const char *path, const char *charFrom, - const char *charTo) -{ -/* trying to open the DBF and initial checkings */ - FILE *fl_dbf = NULL; - int rd; - unsigned char bf[1024]; - int dbf_size; - int dbf_reclen = 0; - int off_dbf; - int ind; - char field_name[2048]; - char *sys_err; - char errMsg[1024]; - iconv_t iconv_ret; - char utf8buf[2048]; -#if !defined(__MINGW32__) && defined(_WIN32) - const char *pBuf; -#else /* not WIN32 */ - char *pBuf; -#endif - size_t len; - size_t utf8len; - char *pUtf8buf; - int endian_arch = gaiaEndianArch (); - gaiaDbfListPtr dbf_list = NULL; - if (charFrom && charTo) - { - iconv_ret = iconv_open (charTo, charFrom); - if (iconv_ret == (iconv_t) (-1)) - { - sprintf (errMsg, - "conversion from '%s' to '%s' not available\n", - charFrom, charTo); - goto unsupported_conversion; - } - dbf->IconvObj = iconv_ret; - } - else - { - sprintf (errMsg, "a NULL charset-name was passed\n"); - goto unsupported_conversion; - } - if (dbf->flDbf != NULL) - { - sprintf (errMsg, "attempting to reopen an already opened DBF\n"); - goto unsupported_conversion; - } - fl_dbf = fopen (path, "rb"); - if (!fl_dbf) - { - sys_err = strerror (errno); - sprintf (errMsg, "unable to open '%s' for reading: %s", path, - sys_err); - goto no_file; - } -/* reading DBF file header */ - rd = fread (bf, sizeof (unsigned char), 32, fl_dbf); - if (rd != 32) - goto error; - if (*bf != 0x03) /* checks the DBF magic number */ - goto error; - dbf_size = gaiaImport16 (bf + 8, GAIA_LITTLE_ENDIAN, endian_arch); - dbf_reclen = gaiaImport16 (bf + 10, GAIA_LITTLE_ENDIAN, endian_arch); - dbf_size--; - off_dbf = 0; - dbf_list = gaiaAllocDbfList (); - for (ind = 32; ind < dbf_size; ind += 32) - { - /* fetches DBF fields definitions */ - rd = fread (bf, sizeof (unsigned char), 32, fl_dbf); - if (rd != 32) - goto error; - memcpy (field_name, bf, 11); - field_name[11] = '\0'; - len = strlen ((char *) field_name); - utf8len = 2048; - pBuf = (char *) field_name; - pUtf8buf = utf8buf; - if (iconv - ((iconv_t) (dbf->IconvObj), &pBuf, &len, &pUtf8buf, - &utf8len) == (size_t) (-1)) - goto conversion_error; - memcpy (field_name, utf8buf, 2048 - utf8len); - field_name[2048 - utf8len] = '\0'; - gaiaAddDbfField (dbf_list, field_name, *(bf + 11), off_dbf, - *(bf + 16), *(bf + 17)); - off_dbf += *(bf + 16); - } - if (!gaiaIsValidDbfList (dbf_list)) - { - /* invalid DBF */ - goto illegal_dbf; - } - len = strlen (path); - dbf->Path = malloc (len + 1); - strcpy (dbf->Path, path); - dbf->flDbf = fl_dbf; - dbf->Dbf = dbf_list; -/* allocating DBF buffer */ - dbf->BufDbf = malloc (sizeof (unsigned char) * dbf_reclen); - dbf->DbfHdsz = dbf_size + 1; - dbf->DbfReclen = dbf_reclen; - dbf->Valid = 1; - dbf->endian_arch = endian_arch; - return; - unsupported_conversion: -/* illegal charset */ - if (dbf->LastError) - free (dbf->LastError); - len = strlen (errMsg); - dbf->LastError = malloc (len + 1); - strcpy (dbf->LastError, errMsg); - return; - no_file: -/* the DBF file can't be accessed */ - if (dbf->LastError) - free (dbf->LastError); - len = strlen (errMsg); - dbf->LastError = malloc (len + 1); - strcpy (dbf->LastError, errMsg); - if (fl_dbf) - fclose (fl_dbf); - return; - error: -/* the DBF is invalid or corrupted */ - if (dbf->LastError) - free (dbf->LastError); - sprintf (errMsg, "'%s' is corrupted / has invalid format", path); - len = strlen (errMsg); - dbf->LastError = malloc (len + 1); - strcpy (dbf->LastError, errMsg); - gaiaFreeDbfList (dbf_list); - fclose (fl_dbf); - return; - illegal_dbf: -/* the DBF-file contains unsupported data types */ - if (dbf->LastError) - free (dbf->LastError); - sprintf (errMsg, "'%s' contains unsupported data types", path); - len = strlen (errMsg); - dbf->LastError = malloc (len + 1); - strcpy (dbf->LastError, errMsg); - gaiaFreeDbfList (dbf_list); - if (fl_dbf) - fclose (fl_dbf); - return; - conversion_error: -/* libiconv error */ - if (dbf->LastError) - free (dbf->LastError); - sprintf (errMsg, "'%s' field name: invalid character sequence", path); - len = strlen (errMsg); - dbf->LastError = malloc (len + 1); - strcpy (dbf->LastError, errMsg); - gaiaFreeDbfList (dbf_list); - if (fl_dbf) - fclose (fl_dbf); - return; -} - -GAIAGEO_DECLARE void -gaiaOpenDbfWrite (gaiaDbfPtr dbf, const char *path, const char *charFrom, - const char *charTo) -{ -/* trying to create the DBF file */ - FILE *fl_dbf = NULL; - unsigned char bf[1024]; - unsigned char *dbf_buf = NULL; - gaiaDbfFieldPtr fld; - char *sys_err; - char errMsg[1024]; - short dbf_reclen = 0; - unsigned short dbf_size = 0; - iconv_t iconv_ret; - char buf[2048]; - char utf8buf[2048]; -#if !defined(__MINGW32__) && defined(_WIN32) - const char *pBuf; -#else /* not WIN32 */ - char *pBuf; -#endif - size_t len; - size_t utf8len; - char *pUtf8buf; - int defaultId = 1; - if (charFrom && charTo) - { - iconv_ret = iconv_open (charTo, charFrom); - if (iconv_ret == (iconv_t) (-1)) - { - sprintf (errMsg, "conversion from '%s' to '%s' not available\n", - charFrom, charTo); - goto unsupported_conversion; - } - dbf->IconvObj = iconv_ret; - } - else - { - sprintf (errMsg, "a NULL charset-name was passed\n"); - goto unsupported_conversion; - } - if (dbf->flDbf != NULL) - { - sprintf (errMsg, "attempting to reopen an already opened DBF file\n"); - goto unsupported_conversion; - } -/* trying to open the DBF file */ - fl_dbf = fopen (path, "wb"); - if (!fl_dbf) - { - sys_err = strerror (errno); - sprintf (errMsg, "unable to open '%s' for writing: %s", path, - sys_err); - goto no_file; - } -/* allocating DBF buffer */ - dbf_reclen = 1; /* an extra byte is needed because in DBF rows first byte is a marker for deletion */ - fld = dbf->Dbf->First; - while (fld) - { - /* computing the DBF record length */ - dbf_reclen += fld->Length; - fld = fld->Next; - } - dbf_buf = malloc (dbf_reclen); -/* writing the DBF file header */ - memset (bf, '\0', 32); - fwrite (bf, 1, 32, fl_dbf); - dbf_size = 32; /* note: DBF counts sizes in bytes */ - fld = dbf->Dbf->First; - while (fld) - { - /* exporting DBF Fields specifications */ - memset (bf, 0, 32); - strcpy (buf, fld->Name); - len = strlen (buf); - utf8len = 2048; - pBuf = buf; - pUtf8buf = utf8buf; - if (iconv - ((iconv_t) (dbf->IconvObj), &pBuf, &len, &pUtf8buf, - &utf8len) == (size_t) (-1)) - sprintf (buf, "FLD#%d", defaultId++); - else - { - memcpy (buf, utf8buf, 2048 - utf8len); - buf[2048 - utf8len] = '\0'; - if (strlen (buf) > 10) - sprintf (buf, "FLD#%d", defaultId++); - } - memcpy (bf, buf, strlen (buf)); - *(bf + 11) = fld->Type; - *(bf + 16) = fld->Length; - *(bf + 17) = fld->Decimals; - fwrite (bf, 1, 32, fl_dbf); - dbf_size += 32; - fld = fld->Next; - } - fwrite ("\r", 1, 1, fl_dbf); /* this one is a special DBF delimiter that closes file header */ - dbf_size++; - dbf->Valid = 1; - dbf->flDbf = fl_dbf; - dbf->BufDbf = dbf_buf; - dbf->DbfHdsz = dbf_size + 1; - dbf->DbfReclen = dbf_reclen; - dbf->DbfSize = dbf_size; - dbf->DbfRecno = 0; - return; - unsupported_conversion: -/* illegal charset */ - if (dbf->LastError) - free (dbf->LastError); - len = strlen (errMsg); - dbf->LastError = malloc (len + 1); - strcpy (dbf->LastError, errMsg); - return; - no_file: -/* the DBF file can't be created/opened */ - if (dbf->LastError) - free (dbf->LastError); - len = strlen (errMsg); - dbf->LastError = malloc (len + 1); - strcpy (dbf->LastError, errMsg); - if (dbf_buf) - free (dbf_buf); - if (fl_dbf) - fclose (fl_dbf); - return; -} - -GAIAGEO_DECLARE int -gaiaWriteDbfEntity (gaiaDbfPtr dbf, gaiaDbfListPtr entity) -{ -/* trying to write an entity into some DBF file */ - char dummy[128]; - char fmt[16]; - gaiaDbfFieldPtr fld; -#if !defined(__MINGW32__) && defined(_WIN32) - const char *pBuf; -#else /* not WIN32 */ - char *pBuf; -#endif - size_t len; - size_t utf8len; - char *pUtf8buf; - char buf[512]; - char utf8buf[2048]; -/* writing the DBF record */ - memset (dbf->BufDbf, '\0', dbf->DbfReclen); - *(dbf->BufDbf) = ' '; /* in DBF first byte of each row marks for validity or deletion */ - fld = entity->First; - while (fld) - { - /* transferring field values */ - switch (fld->Type) - { - case 'L': - if (!(fld->Value)) - *(dbf->BufDbf + fld->Offset) = '?'; - else if (fld->Value->Type != GAIA_INT_VALUE) - *(dbf->BufDbf + fld->Offset + 1) = '?'; - else - { - if (fld->Value->IntValue == 0) - *(dbf->BufDbf + fld->Offset + 1) = 'N'; - else - *(dbf->BufDbf + fld->Offset + 1) = 'Y'; - } - break; - case 'D': - memset (dbf->BufDbf + fld->Offset + 1, '0', 8); - if (fld->Value) - { - if (fld->Value->Type == GAIA_TEXT_VALUE) - { - if (strlen (fld->Value->TxtValue) == 8) - memcpy (dbf->BufDbf + fld->Offset + 1, - fld->Value->TxtValue, 8); - } - } - break; - case 'C': - memset (dbf->BufDbf + fld->Offset + 1, ' ', fld->Length); - if (fld->Value) - { - if (fld->Value->Type == GAIA_TEXT_VALUE) - { - strcpy (buf, fld->Value->TxtValue); - len = strlen (buf); - utf8len = 2048; - pBuf = buf; - pUtf8buf = utf8buf; - if (iconv - ((iconv_t) (dbf->IconvObj), &pBuf, &len, - &pUtf8buf, &utf8len) == (size_t) (-1)) - goto conversion_error; - memcpy (buf, utf8buf, 2048 - utf8len); - buf[2048 - utf8len] = '\0'; - if (strlen (buf) < fld->Length) - memcpy (dbf->BufDbf + fld->Offset + 1, buf, - strlen (buf)); - else - memcpy (dbf->BufDbf + fld->Offset + 1, buf, - fld->Length); - } - } - break; - case 'N': - memset (dbf->BufDbf + fld->Offset + 1, '\0', fld->Length); - if (fld->Value) - { - if (fld->Value->Type == GAIA_INT_VALUE) - { -#if defined(_WIN32) || defined(__MINGW32__) -/* CAVEAT - M$ runtime doesn't supports %lld for 64 bits */ - sprintf (dummy, "%I64d", fld->Value->IntValue); -#else - sprintf (dummy, "%lld", fld->Value->IntValue); -#endif - if (strlen (dummy) <= fld->Length) - memcpy (dbf->BufDbf + fld->Offset + 1, - dummy, strlen (dummy)); - } - if (fld->Value->Type == GAIA_DOUBLE_VALUE) - { - sprintf (fmt, "%%1.%df", fld->Decimals); - sprintf (dummy, fmt, fld->Value->DblValue); - if (strlen (dummy) <= fld->Length) - memcpy (dbf->BufDbf + fld->Offset + 1, - dummy, strlen (dummy)); - } - } - break; - }; - fld = fld->Next; - } -/* inserting entity in DBF file */ - fwrite (dbf->BufDbf, 1, dbf->DbfReclen, dbf->flDbf); - (dbf->DbfRecno)++; - return 1; - conversion_error: - if (dbf->LastError) - free (dbf->LastError); - sprintf (dummy, "Invalid character sequence"); - len = strlen (dummy); - dbf->LastError = malloc (len + 1); - strcpy (dbf->LastError, dummy); - return 0; -} - -GAIAGEO_DECLARE void -gaiaFlushDbfHeader (gaiaDbfPtr dbf) -{ -/* updates the DBF file header */ - FILE *fl_dbf = dbf->flDbf; - int dbf_size = dbf->DbfSize; - int dbf_reclen = dbf->DbfReclen; - int dbf_recno = dbf->DbfRecno; - int endian_arch = dbf->endian_arch; - unsigned char bf[64]; -/* writing the DBF file header */ - *bf = 0x1a; /* DBF - this is theEOF marker */ - fwrite (bf, 1, 1, fl_dbf); - fseek (fl_dbf, 0, SEEK_SET); /* repositioning at DBF file start */ - memset (bf, '\0', 32); - *bf = 0x03; /* DBF magic number */ - *(bf + 1) = 1; /* this is supposed to be the last update date [Year, Month, Day], but we ignore it at all */ - *(bf + 2) = 1; - *(bf + 3) = 1; - gaiaExport32 (bf + 4, dbf_recno, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # records in this DBF */ - gaiaExport16 (bf + 8, (short) dbf_size, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the file header size */ - gaiaExport16 (bf + 10, (short) dbf_reclen, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the record length */ - fwrite (bf, 1, 32, fl_dbf); -} - -GAIAGEO_DECLARE int -gaiaReadDbfEntity (gaiaDbfPtr dbf, int current_row, int *deleted) -{ -/* trying to read an entity from DBF */ - int rd; - int skpos; - int offset; - int len; - char errMsg[1024]; - gaiaDbfFieldPtr pFld; -/* positioning and reading the DBF file */ - offset = dbf->DbfHdsz + (current_row * dbf->DbfReclen); - skpos = fseek (dbf->flDbf, offset, SEEK_SET); - if (skpos != 0) - goto eof; - rd = fread (dbf->BufDbf, sizeof (unsigned char), dbf->DbfReclen, - dbf->flDbf); - if (rd != dbf->DbfReclen) - goto eof; -/* setting up the current DBF ENTITY */ - gaiaResetDbfEntity (dbf->Dbf); - dbf->Dbf->RowId = current_row; - if (*(dbf->BufDbf) == '*') - { - /* deleted row */ - *deleted = 1; - if (dbf->LastError) - free (dbf->LastError); - dbf->LastError = NULL; - return 1; - } -/* fetching the DBF values */ - pFld = dbf->Dbf->First; - while (pFld) - { - if (!parseDbfField (dbf->BufDbf, dbf->IconvObj, pFld)) - goto conversion_error; - pFld = pFld->Next; - } - if (dbf->LastError) - free (dbf->LastError); - dbf->LastError = NULL; - *deleted = 0; - return 1; - eof: - if (dbf->LastError) - free (dbf->LastError); - dbf->LastError = NULL; - return 0; - conversion_error: - if (dbf->LastError) - free (dbf->LastError); - sprintf (errMsg, "Invalid character sequence"); - len = strlen (errMsg); - dbf->LastError = malloc (len + 1); - strcpy (dbf->LastError, errMsg); - return 0; -} - -#endif /* ICONV enabled/disabled */ diff --git a/src/spatialite/src/gaiageo/gg_transform.c b/src/spatialite/src/gaiageo/gg_transform.c deleted file mode 100644 index 6ad447d..0000000 --- a/src/spatialite/src/gaiageo/gg_transform.c +++ /dev/null @@ -1,1934 +0,0 @@ -/* - - gg_transform.c -- Gaia PROJ.4 wrapping - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#ifndef OMIT_PROJ /* including PROJ.4 */ -#include -#endif - -#include - -#include - -GAIAGEO_DECLARE void -gaiaShiftCoords (gaiaGeomCollPtr geom, double shift_x, double shift_y) -{ -/* returns a geometry that is the old geometry with required shifting applied to coordinates */ - int ib; - int iv; - double x; - double y; - double z; - double m; - gaiaPointPtr point; - gaiaPolygonPtr polyg; - gaiaLinestringPtr line; - gaiaRingPtr ring; - if (!geom) - return; - point = geom->FirstPoint; - while (point) - { - /* shifting POINTs */ - point->X += shift_x; - point->Y += shift_y; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* shifting LINESTRINGs */ - for (iv = 0; iv < line->Points; iv++) - { - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - x += shift_x; - y += shift_y; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (line->Coords, iv, x, y, z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (line->Coords, iv, x, y, m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (line->Coords, iv, x, y); - } - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* shifting POLYGONs */ - ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - /* shifting the EXTERIOR RING */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - x += shift_x; - y += shift_y; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, x, y); - } - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* shifting the INTERIOR RINGs */ - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - x += shift_x; - y += shift_y; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, x, y); - } - } - } - polyg = polyg->Next; - } - gaiaMbrGeometry (geom); -} - -GAIAGEO_DECLARE void -gaiaShiftCoords3D (gaiaGeomCollPtr geom, double shift_x, double shift_y, - double shift_z) -{ -/* returns a geometry that is the old geometry with required shifting applied to coordinates */ - int ib; - int iv; - double x; - double y; - double z; - double m; - gaiaPointPtr point; - gaiaPolygonPtr polyg; - gaiaLinestringPtr line; - gaiaRingPtr ring; - if (!geom) - return; - point = geom->FirstPoint; - while (point) - { - /* shifting POINTs */ - point->X += shift_x; - point->Y += shift_y; - if (point->DimensionModel == GAIA_XY_Z - || point->DimensionModel == GAIA_XY_Z_M) - point->Z += shift_z; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* shifting LINESTRINGs */ - for (iv = 0; iv < line->Points; iv++) - { - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - x += shift_x; - y += shift_y; - z += shift_z; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (line->Coords, iv, x, y, z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (line->Coords, iv, x, y, m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (line->Coords, iv, x, y); - } - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* shifting POLYGONs */ - ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - /* shifting the EXTERIOR RING */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - x += shift_x; - y += shift_y; - z += shift_z; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, x, y); - } - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* shifting the INTERIOR RINGs */ - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - x += shift_x; - y += shift_y; - z += shift_z; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, x, y); - } - } - } - polyg = polyg->Next; - } - gaiaMbrGeometry (geom); -} - -GAIAGEO_DECLARE void -gaiaShiftLongitude (gaiaGeomCollPtr geom) -{ -/* returns a geometry that is the old geometry with negative longitudes shift by 360 */ - int ib; - int iv; - double x; - double y; - double z; - double m; - gaiaPointPtr point; - gaiaPolygonPtr polyg; - gaiaLinestringPtr line; - gaiaRingPtr ring; - if (!geom) - return; - point = geom->FirstPoint; - while (point) - { - /* shifting POINTs */ - if (point->X < 0) - { - point->X += 360.0; - } - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* shifting LINESTRINGs */ - for (iv = 0; iv < line->Points; iv++) - { - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - if (x < 0) - { - x += 360.0; - } - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (line->Coords, iv, x, y, z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (line->Coords, iv, x, y, m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (line->Coords, iv, x, y); - } - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* shifting POLYGONs */ - ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - /* shifting the EXTERIOR RING */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - if (x < 0) - { - x += 360.0; - } - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, x, y); - } - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* shifting the INTERIOR RINGs */ - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - if (x < 0) - { - x += 360.0; - } - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, x, y); - } - } - } - polyg = polyg->Next; - } - gaiaMbrGeometry (geom); -} - -static void -normalizePoint (double *x, double *y) -{ - if ((-180.0 <= *x) && (*x <= 180.0) && (-90.0 <= *y) && (*y <= 90.0)) - { - /* then this point is already OK */ - return; - } - if ((*x > 180.0) || (*x < -180.0)) - { - int numCycles = (int) (*x / 360.0); - *x -= numCycles * 360.0; - } - if (*x > 180.0) - { - *x -= 360.0; - } - if (*x < -180.0) - { - *x += 360.0; - } - if ((*y > 90.0) || (*y < -90.0)) - { - int numCycles = (int) (*y / 360.0); - *y -= numCycles * 360.0; - } - if (*y > 180.0) - { - *y = -1.0 * (*y - 180.0); - } - if (*y < -180.0) - { - *y = -1.0 * (*y + 180.0); - } - if (*y > 90.0) - { - *y = 180 - *y; - } - if (*y < -90.0) - { - *y = -180.0 - *y; - } -} - -GAIAGEO_DECLARE void -gaiaNormalizeLonLat (gaiaGeomCollPtr geom) -{ -/* returns a geometry that is the old geometry with all latitudes shifted - into the range -90 to 90, and all longitudes shifted into the range -180 to - 180. -*/ - int ib; - int iv; - double x; - double y; - double z; - double m; - gaiaPointPtr point; - gaiaPolygonPtr polyg; - gaiaLinestringPtr line; - gaiaRingPtr ring; - if (!geom) - return; - point = geom->FirstPoint; - while (point) - { - normalizePoint (&(point->X), &(point->Y)); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* shifting LINESTRINGs */ - for (iv = 0; iv < line->Points; iv++) - { - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - normalizePoint (&x, &y); - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (line->Coords, iv, x, y, z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (line->Coords, iv, x, y, m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (line->Coords, iv, x, y); - } - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* shifting POLYGONs */ - ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - /* shifting the EXTERIOR RING */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - normalizePoint (&x, &y); - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, x, y); - } - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* shifting the INTERIOR RINGs */ - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - normalizePoint (&x, &y); - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, x, y); - } - } - } - polyg = polyg->Next; - } - gaiaMbrGeometry (geom); -} - -GAIAGEO_DECLARE void -gaiaScaleCoords (gaiaGeomCollPtr geom, double scale_x, double scale_y) -{ -/* returns a geometry that is the old geometry with required scaling applied to coordinates */ - int ib; - int iv; - double x; - double y; - double z; - double m; - gaiaPointPtr point; - gaiaPolygonPtr polyg; - gaiaLinestringPtr line; - gaiaRingPtr ring; - if (!geom) - return; - point = geom->FirstPoint; - while (point) - { - /* scaling POINTs */ - point->X *= scale_x; - point->Y *= scale_y; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* scaling LINESTRINGs */ - for (iv = 0; iv < line->Points; iv++) - { - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - x *= scale_x; - y *= scale_y; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (line->Coords, iv, x, y, z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (line->Coords, iv, x, y, m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (line->Coords, iv, x, y); - } - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* scaling POLYGONs */ - ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - /* scaling the EXTERIOR RING */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - x *= scale_x; - y *= scale_y; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, x, y); - } - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* scaling the INTERIOR RINGs */ - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - x *= scale_x; - y *= scale_y; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, x, y); - } - } - } - polyg = polyg->Next; - } - gaiaMbrGeometry (geom); -} - -GAIAGEO_DECLARE void -gaiaRotateCoords (gaiaGeomCollPtr geom, double angle) -{ -/* returns a geometry that is the old geometry with required rotation applied to coordinates */ - int ib; - int iv; - double x; - double y; - double z; - double m; - double nx; - double ny; - double rad = angle * 0.0174532925199432958; - double cosine = cos (rad); - double sine = sin (rad); - gaiaPointPtr point; - gaiaPolygonPtr polyg; - gaiaLinestringPtr line; - gaiaRingPtr ring; - if (!geom) - return; - point = geom->FirstPoint; - while (point) - { - /* shifting POINTs */ - x = point->X; - y = point->Y; - point->X = (x * cosine) + (y * sine); - point->Y = (y * cosine) - (x * sine); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* rotating LINESTRINGs */ - for (iv = 0; iv < line->Points; iv++) - { - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - nx = (x * cosine) + (y * sine); - ny = (y * cosine) - (x * sine); - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (line->Coords, iv, nx, ny, z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (line->Coords, iv, nx, ny, m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (line->Coords, iv, nx, ny, z, m); - } - else - { - gaiaSetPoint (line->Coords, iv, nx, ny); - } - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* rotating POLYGONs */ - ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - /* rotating the EXTERIOR RING */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - nx = (x * cosine) + (y * sine); - ny = (y * cosine) - (x * sine); - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, nx, ny, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, nx, ny, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, nx, ny, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, nx, ny); - } - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* rotating the INTERIOR RINGs */ - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - nx = (x * cosine) + (y * sine); - ny = (y * cosine) - (x * sine); - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, nx, ny, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, nx, ny, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, nx, ny, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, nx, ny); - } - } - } - polyg = polyg->Next; - } - gaiaMbrGeometry (geom); -} - -GAIAGEO_DECLARE void -gaiaReflectCoords (gaiaGeomCollPtr geom, int x_axis, int y_axis) -{ -/* returns a geometry that is the old geometry with required reflection applied to coordinates */ - int ib; - int iv; - double x; - double y; - double z = 0.0; - double m = 0.0; - gaiaPointPtr point; - gaiaPolygonPtr polyg; - gaiaLinestringPtr line; - gaiaRingPtr ring; - if (!geom) - return; - point = geom->FirstPoint; - while (point) - { - /* reflecting POINTs */ - if (x_axis) - point->X *= -1.0; - if (y_axis) - point->Y *= -1.0; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* reflecting LINESTRINGs */ - for (iv = 0; iv < line->Points; iv++) - { - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - if (x_axis) - x *= -1.0; - if (y_axis) - y *= -1.0; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (line->Coords, iv, x, y, z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (line->Coords, iv, x, y, m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (line->Coords, iv, x, y); - } - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* reflecting POLYGONs */ - ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - /* reflecting the EXTERIOR RING */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - if (x_axis) - x *= -1.0; - if (y_axis) - y *= -1.0; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, x, y); - } - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* reflecting the INTERIOR RINGs */ - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - if (x_axis) - x *= -1.0; - if (y_axis) - y *= -1.0; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, x, y); - } - } - } - polyg = polyg->Next; - } - gaiaMbrGeometry (geom); -} - -GAIAGEO_DECLARE void -gaiaSwapCoords (gaiaGeomCollPtr geom) -{ -/* returns a geometry that is the old geometry with swapped x- and y-coordinates */ - int ib; - int iv; - double x; - double y; - double z; - double m; - double sv; - gaiaPointPtr point; - gaiaPolygonPtr polyg; - gaiaLinestringPtr line; - gaiaRingPtr ring; - if (!geom) - return; - point = geom->FirstPoint; - while (point) - { - /* swapping POINTs */ - sv = point->X; - point->X = point->Y; - point->Y = sv; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* swapping LINESTRINGs */ - for (iv = 0; iv < line->Points; iv++) - { - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - sv = x; - x = y; - y = sv; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (line->Coords, iv, x, y, z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (line->Coords, iv, x, y, m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (line->Coords, iv, x, y); - } - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* swapping POLYGONs */ - ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - /* shifting the EXTERIOR RING */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - sv = x; - x = y; - y = sv; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, x, y); - } - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* swapping the INTERIOR RINGs */ - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - sv = x; - x = y; - y = sv; - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - else - { - gaiaSetPoint (ring->Coords, iv, x, y); - } - } - } - polyg = polyg->Next; - } - gaiaMbrGeometry (geom); -} - -#ifndef OMIT_PROJ /* including PROJ.4 */ - -static int -gaiaIsLongLat (char *str) -{ -/* checks if we have to do with ANGLES if +proj=longlat is defined */ - if (strstr (str, "+proj=longlat") != NULL) - return 1; - return 0; -} - -GAIAGEO_DECLARE double -gaiaRadsToDegs (double rads) -{ -/* converts an ANGLE from radians to degrees */ - return rads * RAD_TO_DEG; -} - -GAIAGEO_DECLARE double -gaiaDegsToRads (double degs) -{ -/* converts an ANGLE from degrees to radians */ - return degs * DEG_TO_RAD; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaTransform (gaiaGeomCollPtr org, char *proj_from, char *proj_to) -{ -/* creates a new GEOMETRY reprojecting coordinates from the original one */ - int ib; - int cnt; - int i; - double *xx; - double *yy; - double *zz; - double *mm = NULL; - double x; - double y; - double z = 0.0; - double m = 0.0; - int error = 0; - int from_angle; - int to_angle; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaLinestringPtr dst_ln; - gaiaPolygonPtr pg; - gaiaPolygonPtr dst_pg; - gaiaRingPtr rng; - gaiaRingPtr dst_rng; - projPJ from_cs = pj_init_plus (proj_from); - projPJ to_cs = pj_init_plus (proj_to); - gaiaGeomCollPtr dst; - if (!from_cs) - { - if (to_cs) - pj_free (to_cs); - return NULL; - } - if (!to_cs) - { - pj_free (from_cs); - return NULL; - } - if (org->DimensionModel == GAIA_XY_Z) - dst = gaiaAllocGeomCollXYZ (); - else if (org->DimensionModel == GAIA_XY_M) - dst = gaiaAllocGeomCollXYM (); - else if (org->DimensionModel == GAIA_XY_Z_M) - dst = gaiaAllocGeomCollXYZM (); - else - dst = gaiaAllocGeomColl (); -/* setting up projection parameters */ - from_angle = gaiaIsLongLat (proj_from); - to_angle = gaiaIsLongLat (proj_to); - cnt = 0; - pt = org->FirstPoint; - while (pt) - { - /* counting POINTs */ - cnt++; - pt = pt->Next; - } - if (cnt) - { - /* reprojecting POINTs */ - xx = malloc (sizeof (double) * cnt); - yy = malloc (sizeof (double) * cnt); - zz = malloc (sizeof (double) * cnt); - if (org->DimensionModel == GAIA_XY_M - || org->DimensionModel == GAIA_XY_Z_M) - mm = malloc (sizeof (double) * cnt); - i = 0; - pt = org->FirstPoint; - while (pt) - { - /* inserting points to be converted in temporary arrays */ - if (from_angle) - { - xx[i] = gaiaDegsToRads (pt->X); - yy[i] = gaiaDegsToRads (pt->Y); - } - else - { - xx[i] = pt->X; - yy[i] = pt->Y; - } - if (org->DimensionModel == GAIA_XY_Z - || org->DimensionModel == GAIA_XY_Z_M) - zz[i] = pt->Z; - else - zz[i] = 0.0; - if (org->DimensionModel == GAIA_XY_M - || org->DimensionModel == GAIA_XY_Z_M) - mm[i] = pt->M; - i++; - pt = pt->Next; - } - /* applying reprojection */ - if (pj_transform (from_cs, to_cs, cnt, 0, xx, yy, zz) == 0) - { - /* inserting the reprojected POINTs in the new GEOMETRY */ - for (i = 0; i < cnt; i++) - { - if (to_angle) - { - x = gaiaRadsToDegs (xx[i]); - y = gaiaRadsToDegs (yy[i]); - } - else - { - x = xx[i]; - y = yy[i]; - } - if (org->DimensionModel == GAIA_XY_Z - || org->DimensionModel == GAIA_XY_Z_M) - z = zz[i]; - else - z = 0.0; - if (org->DimensionModel == GAIA_XY_M - || org->DimensionModel == GAIA_XY_Z_M) - m = mm[i]; - else - m = 0.0; - if (dst->DimensionModel == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (dst, x, y, z); - else if (dst->DimensionModel == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (dst, x, y, m); - else if (dst->DimensionModel == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (dst, x, y, z, m); - else - gaiaAddPointToGeomColl (dst, x, y); - } - } - else - error = 1; - free (xx); - free (yy); - free (zz); - if (org->DimensionModel == GAIA_XY_M - || org->DimensionModel == GAIA_XY_Z_M) - free (mm); - } - if (error) - goto stop; - ln = org->FirstLinestring; - while (ln) - { - /* reprojecting LINESTRINGs */ - cnt = ln->Points; - xx = malloc (sizeof (double) * cnt); - yy = malloc (sizeof (double) * cnt); - zz = malloc (sizeof (double) * cnt); - if (ln->DimensionModel == GAIA_XY_M - || ln->DimensionModel == GAIA_XY_Z_M) - mm = malloc (sizeof (double) * cnt); - for (i = 0; i < cnt; i++) - { - /* inserting points to be converted in temporary arrays */ - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, i, &x, &y, &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, i, &x, &y, &m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, i, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ln->Coords, i, &x, &y); - } - if (from_angle) - { - xx[i] = gaiaDegsToRads (x); - yy[i] = gaiaDegsToRads (y); - } - else - { - xx[i] = x; - yy[i] = y; - } - if (ln->DimensionModel == GAIA_XY_Z - || ln->DimensionModel == GAIA_XY_Z_M) - zz[i] = z; - else - zz[i] = 0.0; - if (ln->DimensionModel == GAIA_XY_M - || ln->DimensionModel == GAIA_XY_Z_M) - mm[i] = m; - } - /* applying reprojection */ - if (pj_transform (from_cs, to_cs, cnt, 0, xx, yy, zz) == 0) - { - /* inserting the reprojected LINESTRING in the new GEOMETRY */ - dst_ln = gaiaAddLinestringToGeomColl (dst, cnt); - for (i = 0; i < cnt; i++) - { - /* setting LINESTRING points */ - if (to_angle) - { - x = gaiaRadsToDegs (xx[i]); - y = gaiaRadsToDegs (yy[i]); - } - else - { - x = xx[i]; - y = yy[i]; - } - if (ln->DimensionModel == GAIA_XY_Z - || ln->DimensionModel == GAIA_XY_Z_M) - z = zz[i]; - else - z = 0.0; - if (ln->DimensionModel == GAIA_XY_M - || ln->DimensionModel == GAIA_XY_Z_M) - m = mm[i]; - else - m = 0.0; - if (dst_ln->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (dst_ln->Coords, i, x, y, z); - } - else if (dst_ln->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (dst_ln->Coords, i, x, y, m); - } - else if (dst_ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (dst_ln->Coords, i, x, y, z, m); - } - else - { - gaiaSetPoint (dst_ln->Coords, i, x, y); - } - } - } - else - error = 1; - free (xx); - free (yy); - free (zz); - if (ln->DimensionModel == GAIA_XY_M - || ln->DimensionModel == GAIA_XY_Z_M) - free (mm); - if (error) - goto stop; - ln = ln->Next; - } - pg = org->FirstPolygon; - while (pg) - { - /* reprojecting POLYGONs */ - rng = pg->Exterior; - cnt = rng->Points; - dst_pg = gaiaAddPolygonToGeomColl (dst, cnt, pg->NumInteriors); - xx = malloc (sizeof (double) * cnt); - yy = malloc (sizeof (double) * cnt); - zz = malloc (sizeof (double) * cnt); - if (rng->DimensionModel == GAIA_XY_M - || rng->DimensionModel == GAIA_XY_Z_M) - mm = malloc (sizeof (double) * cnt); - for (i = 0; i < cnt; i++) - { - /* inserting points to be converted in temporary arrays [EXTERIOR RING] */ - if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, i, &x, &y, &z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, i, &x, &y, &m); - } - else if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, i, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, i, &x, &y); - } - if (from_angle) - { - xx[i] = gaiaDegsToRads (x); - yy[i] = gaiaDegsToRads (y); - } - else - { - xx[i] = x; - yy[i] = y; - } - if (rng->DimensionModel == GAIA_XY_Z - || rng->DimensionModel == GAIA_XY_Z_M) - zz[i] = z; - else - zz[i] = 0.0; - if (rng->DimensionModel == GAIA_XY_M - || rng->DimensionModel == GAIA_XY_Z_M) - mm[i] = m; - } - /* applying reprojection */ - if (pj_transform (from_cs, to_cs, cnt, 0, xx, yy, zz) == 0) - { - /* inserting the reprojected POLYGON in the new GEOMETRY */ - dst_rng = dst_pg->Exterior; - for (i = 0; i < cnt; i++) - { - /* setting EXTERIOR RING points */ - if (to_angle) - { - x = gaiaRadsToDegs (xx[i]); - y = gaiaRadsToDegs (yy[i]); - } - else - { - x = xx[i]; - y = yy[i]; - } - if (rng->DimensionModel == GAIA_XY_Z - || rng->DimensionModel == GAIA_XY_Z_M) - z = zz[i]; - else - z = 0.0; - if (rng->DimensionModel == GAIA_XY_M - || rng->DimensionModel == GAIA_XY_Z_M) - m = mm[i]; - else - m = 0.0; - if (dst_rng->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (dst_rng->Coords, i, x, y, z); - } - else if (dst_rng->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (dst_rng->Coords, i, x, y, m); - } - else if (dst_rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (dst_rng->Coords, i, x, y, z, m); - } - else - { - gaiaSetPoint (dst_rng->Coords, i, x, y); - } - } - } - else - error = 1; - free (xx); - free (yy); - free (zz); - if (rng->DimensionModel == GAIA_XY_M - || rng->DimensionModel == GAIA_XY_Z_M) - free (mm); - if (error) - goto stop; - for (ib = 0; ib < pg->NumInteriors; ib++) - { - /* processing INTERIOR RINGS */ - rng = pg->Interiors + ib; - cnt = rng->Points; - xx = malloc (sizeof (double) * cnt); - yy = malloc (sizeof (double) * cnt); - zz = malloc (sizeof (double) * cnt); - if (rng->DimensionModel == GAIA_XY_M - || rng->DimensionModel == GAIA_XY_Z_M) - mm = malloc (sizeof (double) * cnt); - for (i = 0; i < cnt; i++) - { - /* inserting points to be converted in temporary arrays [INTERIOR RING] */ - if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, i, &x, &y, &z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, i, &x, &y, &m); - } - else if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, i, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, i, &x, &y); - } - if (from_angle) - { - xx[i] = gaiaDegsToRads (x); - yy[i] = gaiaDegsToRads (y); - } - else - { - xx[i] = x; - yy[i] = y; - } - if (rng->DimensionModel == GAIA_XY_Z - || rng->DimensionModel == GAIA_XY_Z_M) - zz[i] = z; - else - zz[i] = 0.0; - if (rng->DimensionModel == GAIA_XY_M - || rng->DimensionModel == GAIA_XY_Z_M) - mm[i] = m; - } - /* applying reprojection */ - if (pj_transform (from_cs, to_cs, cnt, 0, xx, yy, zz) == 0) - { - /* inserting the reprojected POLYGON in the new GEOMETRY */ - dst_rng = gaiaAddInteriorRing (dst_pg, ib, cnt); - for (i = 0; i < cnt; i++) - { - /* setting INTERIOR RING points */ - if (to_angle) - { - x = gaiaRadsToDegs (xx[i]); - y = gaiaRadsToDegs (yy[i]); - } - else - { - x = xx[i]; - y = yy[i]; - } - if (rng->DimensionModel == GAIA_XY_Z - || rng->DimensionModel == GAIA_XY_Z_M) - z = zz[i]; - else - z = 0.0; - if (rng->DimensionModel == GAIA_XY_M - || rng->DimensionModel == GAIA_XY_Z_M) - m = mm[i]; - else - m = 0.0; - if (dst_rng->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (dst_rng->Coords, i, x, y, z); - } - else if (dst_rng->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (dst_rng->Coords, i, x, y, m); - } - else if (dst_rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (dst_rng->Coords, i, x, y, z, - m); - } - else - { - gaiaSetPoint (dst_rng->Coords, i, x, y); - } - } - } - else - error = 1; - free (xx); - free (yy); - free (zz); - if (rng->DimensionModel == GAIA_XY_M - || rng->DimensionModel == GAIA_XY_Z_M) - free (mm); - if (error) - goto stop; - } - pg = pg->Next; - } -/* destroying the PROJ4 params */ - stop: - pj_free (from_cs); - pj_free (to_cs); - if (error) - { - /* some error occurred */ - gaiaPointPtr pP; - gaiaPointPtr pPn; - gaiaLinestringPtr pL; - gaiaLinestringPtr pLn; - gaiaPolygonPtr pA; - gaiaPolygonPtr pAn; - pP = dst->FirstPoint; - while (pP != NULL) - { - pPn = pP->Next; - gaiaFreePoint (pP); - pP = pPn; - } - pL = dst->FirstLinestring; - while (pL != NULL) - { - pLn = pL->Next; - gaiaFreeLinestring (pL); - pL = pLn; - } - pA = dst->FirstPolygon; - while (pA != NULL) - { - pAn = pA->Next; - gaiaFreePolygon (pA); - pA = pAn; - } - dst->FirstPoint = NULL; - dst->LastPoint = NULL; - dst->FirstLinestring = NULL; - dst->LastLinestring = NULL; - dst->FirstPolygon = NULL; - dst->LastPolygon = NULL; - } - if (dst) - { - gaiaMbrGeometry (dst); - dst->DeclaredType = org->DeclaredType; - } - return dst; -} - -#endif /* end including PROJ.4 */ diff --git a/src/spatialite/src/gaiageo/gg_vanuatu.c b/src/spatialite/src/gaiageo/gg_vanuatu.c deleted file mode 100644 index 593139b..0000000 --- a/src/spatialite/src/gaiageo/gg_vanuatu.c +++ /dev/null @@ -1,2103 +0,0 @@ -/* - - gg_vanuatu.c -- WKT parser/lexer - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -The Vanuatu Team - University of Toronto - Supervisor: -Greg Wilson gvwilson@cs.toronto.ca - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include - -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include -#include - -#include - -#if defined(_WIN32) || defined(WIN32) -#include -#ifndef isatty -#define isatty _isatty -#endif -#ifndef fileno -#define fileno _fileno -#endif -#endif - -#define VANUATU_DYN_NONE 0 -#define VANUATU_DYN_POINT 1 -#define VANUATU_DYN_LINESTRING 2 -#define VANUATU_DYN_POLYGON 3 -#define VANUATU_DYN_RING 4 -#define VANUATU_DYN_GEOMETRY 5 - -#define VANUATU_DYN_BLOCK 1024 - -struct vanuatu_dyn_block -{ -/* a struct taking trace of dynamic allocations */ - int type[VANUATU_DYN_BLOCK]; - void *ptr[VANUATU_DYN_BLOCK]; - int index; - struct vanuatu_dyn_block *next; -}; - -struct vanuatu_data -{ -/* a struct used to make the lexer-parser reentrant and thread-safe */ - int vanuatu_parse_error; - int vanuatu_line; - int vanuatu_col; - struct vanuatu_dyn_block *vanuatu_first_dyn_block; - struct vanuatu_dyn_block *vanuatu_last_dyn_block; - gaiaGeomCollPtr result; -}; - -static struct vanuatu_dyn_block * -vanuatuCreateDynBlock (void) -{ -/* allocating a new block to trace dynamic allocations */ - int i; - struct vanuatu_dyn_block *p = malloc (sizeof (struct vanuatu_dyn_block)); - for (i = 0; i < VANUATU_DYN_BLOCK; i++) - { - /* initializing map entries */ - p->type[i] = VANUATU_DYN_NONE; - p->ptr[i] = NULL; - } - p->index = 0; - p->next = NULL; - return p; -} - -static void -vanuatuMapDynAlloc (struct vanuatu_data *p_data, int type, void *ptr) -{ -/* appending a dynamic allocation into the map */ - struct vanuatu_dyn_block *p; - if (p_data->vanuatu_first_dyn_block == NULL) - { - /* inserting the first block of the map */ - p = vanuatuCreateDynBlock (); - p_data->vanuatu_first_dyn_block = p; - p_data->vanuatu_last_dyn_block = p; - } - if (p_data->vanuatu_last_dyn_block->index >= VANUATU_DYN_BLOCK) - { - /* adding a further block to the map */ - p = vanuatuCreateDynBlock (); - p_data->vanuatu_last_dyn_block->next = p; - p_data->vanuatu_last_dyn_block = p; - } - p_data->vanuatu_last_dyn_block->type[p_data-> - vanuatu_last_dyn_block->index] = type; - p_data->vanuatu_last_dyn_block->ptr[p_data->vanuatu_last_dyn_block->index] = - ptr; - p_data->vanuatu_last_dyn_block->index++; -} - -static void -vanuatuMapDynClean (struct vanuatu_data *p_data, void *ptr) -{ -/* deleting a dynamic allocation from the map */ - int i; - struct vanuatu_dyn_block *p = p_data->vanuatu_first_dyn_block; - while (p) - { - for (i = 0; i < VANUATU_DYN_BLOCK; i++) - { - switch (p->type[i]) - { - case VANUATU_DYN_POINT: - case VANUATU_DYN_LINESTRING: - case VANUATU_DYN_POLYGON: - case VANUATU_DYN_RING: - case VANUATU_DYN_GEOMETRY: - if (p->ptr[i] == ptr) - { - p->type[i] = VANUATU_DYN_NONE; - return; - } - break; - }; - } - p = p->next; - } -} - -static void -vanuatuCleanMapDynAlloc (struct vanuatu_data *p_data, int clean_all) -{ -/* cleaning the dynamic allocations map */ - int i; - struct vanuatu_dyn_block *pn; - struct vanuatu_dyn_block *p = p_data->vanuatu_first_dyn_block; - while (p) - { - if (clean_all) - { - for (i = 0; i < VANUATU_DYN_BLOCK; i++) - { - /* deleting Geometry objects */ - switch (p->type[i]) - { - case VANUATU_DYN_POINT: - gaiaFreePoint ((gaiaPointPtr) (p->ptr[i])); - break; - case VANUATU_DYN_LINESTRING: - gaiaFreeLinestring ((gaiaLinestringPtr) - (p->ptr[i])); - break; - case VANUATU_DYN_POLYGON: - gaiaFreePolygon ((gaiaPolygonPtr) (p->ptr[i])); - break; - case VANUATU_DYN_RING: - gaiaFreeRing ((gaiaRingPtr) (p->ptr[i])); - break; - case VANUATU_DYN_GEOMETRY: - gaiaFreeGeomColl ((gaiaGeomCollPtr) (p->ptr[i])); - break; - }; - } - } - /* deleting the map block */ - pn = p->next; - free (p); - p = pn; - } -} - -static int -vanuatuCheckValidity (gaiaGeomCollPtr geom) -{ -/* checks if this one is a degenerated geometry */ - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - int ib; - int entities = 0; - pt = geom->FirstPoint; - while (pt) - { - /* checking points */ - entities++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - /* checking linestrings */ - if (ln->Points < 2) - return 0; - entities++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - /* checking polygons */ - rng = pg->Exterior; - if (rng->Points < 4) - return 0; - for (ib = 0; ib < pg->NumInteriors; ib++) - { - rng = pg->Interiors + ib; - if (rng->Points < 4) - return 0; - } - entities++; - pg = pg->Next; - } - if (!entities) - return 0; - return 1; -} - -static gaiaGeomCollPtr -gaiaGeometryFromPoint (struct vanuatu_data *p_data, gaiaPointPtr point) -{ -/* builds a GEOMETRY containing a POINT */ - gaiaGeomCollPtr geom = NULL; - geom = gaiaAllocGeomColl (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_POINT; - gaiaAddPointToGeomColl (geom, point->X, point->Y); - vanuatuMapDynClean (p_data, point); - gaiaFreePoint (point); - return geom; -} - -static gaiaGeomCollPtr -gaiaGeometryFromPointZ (struct vanuatu_data *p_data, gaiaPointPtr point) -{ -/* builds a GEOMETRY containing a POINTZ */ - gaiaGeomCollPtr geom = NULL; - geom = gaiaAllocGeomCollXYZ (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_POINTZ; - gaiaAddPointToGeomCollXYZ (geom, point->X, point->Y, point->Z); - vanuatuMapDynClean (p_data, point); - gaiaFreePoint (point); - return geom; -} - -static gaiaGeomCollPtr -gaiaGeometryFromPointM (struct vanuatu_data *p_data, gaiaPointPtr point) -{ -/* builds a GEOMETRY containing a POINTM */ - gaiaGeomCollPtr geom = NULL; - geom = gaiaAllocGeomCollXYM (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_POINTM; - gaiaAddPointToGeomCollXYM (geom, point->X, point->Y, point->M); - vanuatuMapDynClean (p_data, point); - gaiaFreePoint (point); - return geom; -} - -static gaiaGeomCollPtr -gaiaGeometryFromPointZM (struct vanuatu_data *p_data, gaiaPointPtr point) -{ -/* builds a GEOMETRY containing a POINTZM */ - gaiaGeomCollPtr geom = NULL; - geom = gaiaAllocGeomCollXYZM (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_POINTZM; - gaiaAddPointToGeomCollXYZM (geom, point->X, point->Y, point->Z, point->M); - vanuatuMapDynClean (p_data, point); - gaiaFreePoint (point); - return geom; -} - -static gaiaGeomCollPtr -gaiaGeometryFromLinestring (struct vanuatu_data *p_data, gaiaLinestringPtr line) -{ -/* builds a GEOMETRY containing a LINESTRING */ - gaiaGeomCollPtr geom = NULL; - gaiaLinestringPtr line2; - int iv; - double x; - double y; - geom = gaiaAllocGeomColl (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_LINESTRING; - line2 = gaiaAddLinestringToGeomColl (geom, line->Points); - for (iv = 0; iv < line2->Points; iv++) - { - /* sets the POINTS for the exterior ring */ - gaiaGetPoint (line->Coords, iv, &x, &y); - gaiaSetPoint (line2->Coords, iv, x, y); - } - vanuatuMapDynClean (p_data, line); - gaiaFreeLinestring (line); - return geom; -} - -static gaiaGeomCollPtr -gaiaGeometryFromLinestringZ (struct vanuatu_data *p_data, - gaiaLinestringPtr line) -{ -/* builds a GEOMETRY containing a LINESTRINGZ */ - gaiaGeomCollPtr geom = NULL; - gaiaLinestringPtr line2; - int iv; - double x; - double y; - double z; - geom = gaiaAllocGeomCollXYZ (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_LINESTRING; - line2 = gaiaAddLinestringToGeomColl (geom, line->Points); - for (iv = 0; iv < line2->Points; iv++) - { - /* sets the POINTS for the exterior ring */ - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (line2->Coords, iv, x, y, z); - } - vanuatuMapDynClean (p_data, line); - gaiaFreeLinestring (line); - return geom; -} - - -static gaiaGeomCollPtr -gaiaGeometryFromLinestringM (struct vanuatu_data *p_data, - gaiaLinestringPtr line) -{ -/* builds a GEOMETRY containing a LINESTRINGM */ - gaiaGeomCollPtr geom = NULL; - gaiaLinestringPtr line2; - int iv; - double x; - double y; - double m; - geom = gaiaAllocGeomCollXYM (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_LINESTRING; - line2 = gaiaAddLinestringToGeomColl (geom, line->Points); - for (iv = 0; iv < line2->Points; iv++) - { - /* sets the POINTS for the exterior ring */ - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (line2->Coords, iv, x, y, m); - } - vanuatuMapDynClean (p_data, line); - gaiaFreeLinestring (line); - return geom; -} - -static gaiaGeomCollPtr -gaiaGeometryFromLinestringZM (struct vanuatu_data *p_data, - gaiaLinestringPtr line) -{ -/* builds a GEOMETRY containing a LINESTRINGZM */ - gaiaGeomCollPtr geom = NULL; - gaiaLinestringPtr line2; - int iv; - double x; - double y; - double z; - double m; - geom = gaiaAllocGeomCollXYZM (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_LINESTRING; - line2 = gaiaAddLinestringToGeomColl (geom, line->Points); - for (iv = 0; iv < line2->Points; iv++) - { - /* sets the POINTS for the exterior ring */ - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (line2->Coords, iv, x, y, z, m); - } - vanuatuMapDynClean (p_data, line); - gaiaFreeLinestring (line); - return geom; -} - -/****************************************************************************** -** The following code was created by Team Vanuatu of The University of Toronto. -** It is responsible for handling the parsing of wkt expressions. The parser -** is built using LEMON and the cooresponding methods were written by the -** students. - -Authors: -Ruppi Rana ruppi.rana@gmail.com -Dev Tanna dev.tanna@gmail.com -Elias Adum elias.adum@gmail.com -Benton Hui benton.hui@gmail.com -Abhayan Sundararajan abhayan@gmail.com -Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com -Nikola Banovic nikola.banovic@gmail.com -Yong Jian yong.jian@utoronto.ca - -Supervisor: -Greg Wilson gvwilson@cs.toronto.ca - -------------------------------------------------------------------------------- -*/ - -/* - * Creates a 2D (xy) point in SpatiaLite - * x and y are pointers to doubles which represent the x and y coordinates of the point to be created. - * Returns a gaiaPointPtr representing the created point. - * - * Creates a 2D (xy) point. This is a parser helper function which is called when 2D coordinates are encountered. - * Parameters x and y are pointers to doubles which represent the x and y coordinates of the point to be created. - * Returns a gaiaPointPtr pointing to the created 2D point. - */ -static gaiaPointPtr -vanuatu_point_xy (struct vanuatu_data *p_data, double *x, double *y) -{ - gaiaPointPtr pt = gaiaAllocPoint (*x, *y); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_POINT, pt); - return pt; -} - -/* - * Creates a 3D (xyz) point in SpatiaLite - * x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. - * Returns a gaiaPointPtr representing the created point. - * - * Creates a 3D (xyz) point. This is a parser helper function which is called when 3D coordinates are encountered. - * Parameters x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. - * Returns a gaiaPointPtr pointing to the 3D created point. - */ -static gaiaPointPtr -vanuatu_point_xyz (struct vanuatu_data *p_data, double *x, double *y, double *z) -{ - gaiaPointPtr pt = gaiaAllocPointXYZ (*x, *y, *z); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_POINT, pt); - return pt; -} - -/* - * Creates a 2D (xy) point with an m value which is a part of the linear reference system. This is a parser helper - * function which is called when 2D *coordinates with an m value are encountered. - * Parameters x and y are pointers to doubles which represent the x and y coordinates of the point to be created. - * Parameter m is a pointer to a double which represents the part of the linear reference system. - * Returns a gaiaPointPtr pointing to the created 2D point with an m value. - */ -static gaiaPointPtr -vanuatu_point_xym (struct vanuatu_data *p_data, double *x, double *y, double *m) -{ - gaiaPointPtr pt = gaiaAllocPointXYM (*x, *y, *m); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_POINT, pt); - return pt; -} - -/* - * Creates a 4D (xyz) point with an m value which is a part of the linear reference system. This is a parser helper - * function which is called when *4Dcoordinates with an m value are encountered - * Parameters x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. - * Parameter m is a pointer to a double which represents the part of the linear reference system. - * Returns a gaiaPointPtr pointing the created 4D point with an m value. - */ -gaiaPointPtr -vanuatu_point_xyzm (struct vanuatu_data * p_data, double *x, double *y, - double *z, double *m) -{ - gaiaPointPtr pt = gaiaAllocPointXYZM (*x, *y, *z, *m); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_POINT, pt); - return pt; -} - -/* - * Builds a geometry collection from a point. The geometry collection should contain only one element ? the point. - * The correct geometry type must be *decided based on the point type. The parser should call this function when the - * ?POINT? WKT expression is encountered. - * Parameter point is a pointer to a 2D, 3D, 2D with an m value, or 4D with an m value point. - * Returns a geometry collection containing the point. The geometry must have FirstPoint and LastPoint pointing to the - * same place as point. *DimensionModel must be the same as the model of the point and DimensionType must be GAIA_TYPE_POINT. - */ -static gaiaGeomCollPtr -vanuatu_buildGeomFromPoint (struct vanuatu_data *p_data, gaiaPointPtr point) -{ - switch (point->DimensionModel) - { - case GAIA_XY: - return gaiaGeometryFromPoint (p_data, point); - case GAIA_XY_Z: - return gaiaGeometryFromPointZ (p_data, point); - case GAIA_XY_M: - return gaiaGeometryFromPointM (p_data, point); - case GAIA_XY_Z_M: - return gaiaGeometryFromPointZM (p_data, point); - } - return NULL; -} - -/* - * Creates a 2D (xy) linestring from a list of 2D points. - * - * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. - * All of the points in the list must be 2D (xy) points. There must be at least 2 points in the list. - * - * Returns a pointer to linestring containing all of the points in the list. - */ -static gaiaLinestringPtr -vanuatu_linestring_xy (struct vanuatu_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - int points = 0; - int i = 0; - gaiaLinestringPtr linestring; - - while (p != NULL) - { - p = p->Next; - points++; - } - - linestring = gaiaAllocLinestring (points); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_LINESTRING, linestring); - - p = first; - while (p != NULL) - { - gaiaSetPoint (linestring->Coords, i, p->X, p->Y); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - i++; - } - - return linestring; -} - -/* - * Creates a 3D (xyz) linestring from a list of 3D points. - * - * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. - * All of the points in the list must be 3D (xyz) points. There must be at least 2 points in the list. - * - * Returns a pointer to linestring containing all of the points in the list. - */ -static gaiaLinestringPtr -vanuatu_linestring_xyz (struct vanuatu_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - int points = 0; - int i = 0; - gaiaLinestringPtr linestring; - - while (p != NULL) - { - p = p->Next; - points++; - } - - linestring = gaiaAllocLinestringXYZ (points); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_LINESTRING, linestring); - - p = first; - while (p != NULL) - { - gaiaSetPointXYZ (linestring->Coords, i, p->X, p->Y, p->Z); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - i++; - } - - return linestring; -} - -/* - * Creates a 2D (xy) with m value linestring from a list of 2D with m value points. - * - * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. - * All of the points in the list must be 2D (xy) with m value points. There must be at least 2 points in the list. - * - * Returns a pointer to linestring containing all of the points in the list. - */ -static gaiaLinestringPtr -vanuatu_linestring_xym (struct vanuatu_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - int points = 0; - int i = 0; - gaiaLinestringPtr linestring; - - while (p != NULL) - { - p = p->Next; - points++; - } - - linestring = gaiaAllocLinestringXYM (points); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_LINESTRING, linestring); - - p = first; - while (p != NULL) - { - gaiaSetPointXYM (linestring->Coords, i, p->X, p->Y, p->M); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - i++; - } - - return linestring; -} - -/* - * Creates a 4D (xyz) with m value linestring from a list of 4D with m value points. - * - * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. - * All of the points in the list must be 4D (xyz) with m value points. There must be at least 2 points in the list. - * - * Returns a pointer to linestring containing all of the points in the list. - */ -static gaiaLinestringPtr -vanuatu_linestring_xyzm (struct vanuatu_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - int points = 0; - int i = 0; - gaiaLinestringPtr linestring; - - while (p != NULL) - { - p = p->Next; - points++; - } - - linestring = gaiaAllocLinestringXYZM (points); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_LINESTRING, linestring); - - p = first; - while (p != NULL) - { - gaiaSetPointXYZM (linestring->Coords, i, p->X, p->Y, p->Z, p->M); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - i++; - } - - return linestring; -} - -/* - * Builds a geometry collection from a linestring. - */ -static gaiaGeomCollPtr -vanuatu_buildGeomFromLinestring (struct vanuatu_data *p_data, - gaiaLinestringPtr line) -{ - switch (line->DimensionModel) - { - case GAIA_XY: - return gaiaGeometryFromLinestring (p_data, line); - case GAIA_XY_Z: - return gaiaGeometryFromLinestringZ (p_data, line); - case GAIA_XY_M: - return gaiaGeometryFromLinestringM (p_data, line); - case GAIA_XY_Z_M: - return gaiaGeometryFromLinestringZM (p_data, line); - } - return NULL; -} - -/* - * Helper function that determines the number of points in the linked list. - */ -static int -vanuatu_count_points (gaiaPointPtr first) -{ - /* Counts the number of points in the ring. */ - gaiaPointPtr p = first; - int numpoints = 0; - while (p != NULL) - { - numpoints++; - p = p->Next; - } - return numpoints; -} - -/* - * Creates a 2D (xy) ring in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. - * All of the points given to the function are 2D (xy) points. There will be at least 4 points in the list. - * - * Returns the ring defined by the points given to the function. - */ -static gaiaRingPtr -vanuatu_ring_xy (struct vanuatu_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaRingPtr ring = NULL; - int numpoints; - int index; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Counts the number of points in the ring. */ - numpoints = vanuatu_count_points (first); - if (numpoints < 4) - return NULL; - - /* Creates and allocates a ring structure. */ - ring = gaiaAllocRing (numpoints); - if (ring == NULL) - return NULL; - vanuatuMapDynAlloc (p_data, VANUATU_DYN_RING, ring); - - /* Adds every point into the ring structure. */ - p = first; - for (index = 0; index < numpoints; index++) - { - gaiaSetPoint (ring->Coords, index, p->X, p->Y); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - - return ring; -} - -/* - * Creates a 3D (xyz) ring in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. - * All of the points given to the function are 3D (xyz) points. There will be at least 4 points in the list. - * - * Returns the ring defined by the points given to the function. - */ -static gaiaRingPtr -vanuatu_ring_xyz (struct vanuatu_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaRingPtr ring = NULL; - int numpoints; - int index; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Counts the number of points in the ring. */ - numpoints = vanuatu_count_points (first); - if (numpoints < 4) - return NULL; - - /* Creates and allocates a ring structure. */ - ring = gaiaAllocRingXYZ (numpoints); - if (ring == NULL) - return NULL; - vanuatuMapDynAlloc (p_data, VANUATU_DYN_RING, ring); - - /* Adds every point into the ring structure. */ - p = first; - for (index = 0; index < numpoints; index++) - { - gaiaSetPointXYZ (ring->Coords, index, p->X, p->Y, p->Z); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - - return ring; -} - -/* - * Creates a 2D (xym) ring in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. - * All of the points given to the function are 2D (xym) points. There will be at least 4 points in the list. - * - * Returns the ring defined by the points given to the function. - */ -static gaiaRingPtr -vanuatu_ring_xym (struct vanuatu_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaRingPtr ring = NULL; - int numpoints; - int index; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Counts the number of points in the ring. */ - numpoints = vanuatu_count_points (first); - if (numpoints < 4) - return NULL; - - /* Creates and allocates a ring structure. */ - ring = gaiaAllocRingXYM (numpoints); - if (ring == NULL) - return NULL; - vanuatuMapDynAlloc (p_data, VANUATU_DYN_RING, ring); - - /* Adds every point into the ring structure. */ - p = first; - for (index = 0; index < numpoints; index++) - { - gaiaSetPointXYM (ring->Coords, index, p->X, p->Y, p->M); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - - return ring; -} - -/* - * Creates a 3D (xyzm) ring in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. - * All of the points given to the function are 3D (xyzm) points. There will be at least 4 points in the list. - * - * Returns the ring defined by the points given to the function. - */ -static gaiaRingPtr -vanuatu_ring_xyzm (struct vanuatu_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaRingPtr ring = NULL; - int numpoints; - int index; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Counts the number of points in the ring. */ - numpoints = vanuatu_count_points (first); - if (numpoints < 4) - return NULL; - - /* Creates and allocates a ring structure. */ - ring = gaiaAllocRingXYZM (numpoints); - if (ring == NULL) - return NULL; - vanuatuMapDynAlloc (p_data, VANUATU_DYN_RING, ring); - - /* Adds every point into the ring structure. */ - p = first; - for (index = 0; index < numpoints; index++) - { - gaiaSetPointXYZM (ring->Coords, index, p->X, p->Y, p->Z, p->M); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - - return ring; -} - -/* - * Helper function that will create any type of polygon (xy, xym, xyz, xyzm) in SpatiaLite. - * - * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. - * The first ring in the linked list is the external ring while the rest (if any) are internal rings. - * All of the rings given to the function are of the same type. There will be at least 1 ring in the list. - * - * Returns the polygon defined by the rings given to the function. - */ -static gaiaPolygonPtr -vanuatu_polygon_any_type (struct vanuatu_data *p_data, gaiaRingPtr first) -{ - gaiaRingPtr p; - gaiaRingPtr p_n; - gaiaPolygonPtr polygon; - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Creates and allocates a polygon structure with the exterior ring. */ - polygon = gaiaCreatePolygon (first); - if (polygon == NULL) - return NULL; - vanuatuMapDynAlloc (p_data, VANUATU_DYN_POLYGON, polygon); - - /* Adds all interior rings into the polygon structure. */ - p = first; - while (p != NULL) - { - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - if (p == first) - gaiaFreeRing (p); - else - gaiaAddRingToPolyg (polygon, p); - p = p_n; - } - - return polygon; -} - -/* - * Creates a 2D (xy) polygon in SpatiaLite - * - * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. - * The first ring in the linked list is the external ring while the rest (if any) are internal rings. - * All of the rings given to the function are 2D (xy) rings. There will be at least 1 ring in the list. - * - * Returns the polygon defined by the rings given to the function. - */ -static gaiaPolygonPtr -vanuatu_polygon_xy (struct vanuatu_data *p_data, gaiaRingPtr first) -{ - return vanuatu_polygon_any_type (p_data, first); -} - -/* - * Creates a 3D (xyz) polygon in SpatiaLite - * - * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. - * The first ring in the linked list is the external ring while the rest (if any) are internal rings. - * All of the rings given to the function are 3D (xyz) rings. There will be at least 1 ring in the list. - * - * Returns the polygon defined by the rings given to the function. - */ -static gaiaPolygonPtr -vanuatu_polygon_xyz (struct vanuatu_data *p_data, gaiaRingPtr first) -{ - return vanuatu_polygon_any_type (p_data, first); -} - -/* - * Creates a 2D (xym) polygon in SpatiaLite - * - * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. - * The first ring in the linked list is the external ring while the rest (if any) are internal rings. - * All of the rings given to the function are 2D (xym) rings. There will be at least 1 ring in the list. - * - * Returns the polygon defined by the rings given to the function. - */ -static gaiaPolygonPtr -vanuatu_polygon_xym (struct vanuatu_data *p_data, gaiaRingPtr first) -{ - return vanuatu_polygon_any_type (p_data, first); -} - -/* - * Creates a 3D (xyzm) polygon in SpatiaLite - * - * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. - * The first ring in the linked list is the external ring while the rest (if any) are internal rings. - * All of the rings given to the function are 3D (xyzm) rings. There will be at least 1 ring in the list. - * - * Returns the polygon defined by the rings given to the function. - */ -static gaiaPolygonPtr -vanuatu_polygon_xyzm (struct vanuatu_data *p_data, gaiaRingPtr first) -{ - return vanuatu_polygon_any_type (p_data, first); -} - -/* - * Builds a geometry collection from a polygon. - * NOTE: This function may already be implemented in the SpatiaLite code base. If it is, make sure that we - * can use it (ie. it doesn't use any other variables or anything else set by Sandro's parser). If you find - * that we can use an existing function then ignore this one. - */ -static gaiaGeomCollPtr -vanuatu_buildGeomFromPolygon (struct vanuatu_data *p_data, - gaiaPolygonPtr polygon) -{ - gaiaGeomCollPtr geom = NULL; - - /* If no pointers are given, return. */ - if (polygon == NULL) - { - return NULL; - } - - /* Creates and allocates a geometry collection containing a multipoint. */ - switch (polygon->DimensionModel) - { - case GAIA_XY: - geom = gaiaAllocGeomColl (); - break; - case GAIA_XY_Z: - geom = gaiaAllocGeomCollXYZ (); - break; - case GAIA_XY_M: - geom = gaiaAllocGeomCollXYM (); - break; - case GAIA_XY_Z_M: - geom = gaiaAllocGeomCollXYZM (); - break; - } - if (geom == NULL) - { - return NULL; - } - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_POLYGON; - - /* Stores the location of the first and last polygons in the linked list. */ - geom->FirstPolygon = polygon; - while (polygon != NULL) - { - vanuatuMapDynClean (p_data, polygon); - geom->LastPolygon = polygon; - polygon = polygon->Next; - } - return geom; -} - -/* - * Creates a 2D (xy) multipoint object in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points. - * All of the points given to the function are 2D (xy) points. There will be at least 1 point in the list. - * - * Returns a geometry collection containing the created multipoint object. - */ -static gaiaGeomCollPtr -vanuatu_multipoint_xy (struct vanuatu_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaGeomCollPtr geom = NULL; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Creates and allocates a geometry collection containing a multipoint. */ - geom = gaiaAllocGeomColl (); - if (geom == NULL) - return NULL; - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_MULTIPOINT; - - /* For every 2D (xy) point, add it to the geometry collection. */ - while (p != NULL) - { - gaiaAddPointToGeomColl (geom, p->X, p->Y); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - return geom; -} - -/* - * Creates a 3D (xyz) multipoint object in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points. - * All of the points given to the function are 3D (xyz) points. There will be at least 1 point in the list. - * - * Returns a geometry collection containing the created multipoint object. - */ -static gaiaGeomCollPtr -vanuatu_multipoint_xyz (struct vanuatu_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaGeomCollPtr geom = NULL; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Creates and allocates a geometry collection containing a multipoint. */ - geom = gaiaAllocGeomCollXYZ (); - if (geom == NULL) - return NULL; - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_MULTIPOINT; - - /* For every 3D (xyz) point, add it to the geometry collection. */ - while (p != NULL) - { - gaiaAddPointToGeomCollXYZ (geom, p->X, p->Y, p->Z); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - return geom; -} - -/* - * Creates a 2D (xym) multipoint object in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points. - * All of the points given to the function are 2D (xym) points. There will be at least 1 point in the list. - * - * Returns a geometry collection containing the created multipoint object. - */ -static gaiaGeomCollPtr -vanuatu_multipoint_xym (struct vanuatu_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaGeomCollPtr geom = NULL; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Creates and allocates a geometry collection containing a multipoint. */ - geom = gaiaAllocGeomCollXYM (); - if (geom == NULL) - return NULL; - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_MULTIPOINT; - - /* For every 2D (xym) point, add it to the geometry collection. */ - while (p != NULL) - { - gaiaAddPointToGeomCollXYM (geom, p->X, p->Y, p->M); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - return geom; -} - -/* - * Creates a 3D (xyzm) multipoint object in SpatiaLite - * - * first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. - * All of the points given to the function are 3D (xyzm) points. There will be at least 1 point in the list. - * - * Returns a geometry collection containing the created multipoint object. - */ -static gaiaGeomCollPtr -vanuatu_multipoint_xyzm (struct vanuatu_data *p_data, gaiaPointPtr first) -{ - gaiaPointPtr p = first; - gaiaPointPtr p_n; - gaiaGeomCollPtr geom = NULL; - - /* If no pointers are given, return. */ - if (first == NULL) - return NULL; - - /* Creates and allocates a geometry collection containing a multipoint. */ - geom = gaiaAllocGeomCollXYZM (); - if (geom == NULL) - return NULL; - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_MULTIPOINT; - - /* For every 3D (xyzm) point, add it to the geometry collection. */ - while (p != NULL) - { - gaiaAddPointToGeomCollXYZM (geom, p->X, p->Y, p->Z, p->M); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePoint (p); - p = p_n; - } - return geom; -} - -/* - * Creates a geometry collection containing 2D (xy) linestrings. - * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the - * collection. All of the *linestrings in the list must be 2D (xy) linestrings. There must be at least 1 linestring in the list. - * Returns a pointer to the created geometry collection of 2D linestrings. The geometry must have FirstLinestring pointing to the - * first linestring in the list pointed by first and LastLinestring pointing to the last element of the same list. DimensionModel - * must be GAIA_XY and DimensionType must be *GAIA_TYPE_LINESTRING. - */ - -static gaiaGeomCollPtr -vanuatu_multilinestring_xy (struct vanuatu_data *p_data, - gaiaLinestringPtr first) -{ - gaiaLinestringPtr p = first; - gaiaLinestringPtr p_n; - gaiaLinestringPtr new_line; - gaiaGeomCollPtr a = gaiaAllocGeomColl (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, a); - a->DeclaredType = GAIA_MULTILINESTRING; - a->DimensionModel = GAIA_XY; - - while (p) - { - new_line = gaiaAddLinestringToGeomColl (a, p->Points); - gaiaCopyLinestringCoords (new_line, p); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreeLinestring (p); - p = p_n; - } - - return a; -} - -/* - * Returns a geometry collection containing the created multilinestring object (?). - * Creates a geometry collection containing 3D (xyz) linestrings. - * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the - * collection. All of the *linestrings in the list must be 3D (xyz) linestrings. There must be at least 1 linestring in the list. - * Returns a pointer to the created geometry collection of 3D linestrings. The geometry must have FirstLinestring pointing to the - * first linestring in the *list pointed by first and LastLinestring pointing to the last element of the same list. DimensionModel - * must be GAIA_XYZ and DimensionType must be *GAIA_TYPE_LINESTRING. - */ -static gaiaGeomCollPtr -vanuatu_multilinestring_xyz (struct vanuatu_data *p_data, - gaiaLinestringPtr first) -{ - gaiaLinestringPtr p = first; - gaiaLinestringPtr p_n; - gaiaLinestringPtr new_line; - gaiaGeomCollPtr a = gaiaAllocGeomCollXYZ (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, a); - a->DeclaredType = GAIA_MULTILINESTRING; - a->DimensionModel = GAIA_XY_Z; - - while (p) - { - new_line = gaiaAddLinestringToGeomColl (a, p->Points); - gaiaCopyLinestringCoords (new_line, p); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreeLinestring (p); - p = p_n; - } - return a; -} - -/* - * Creates a geometry collection containing 2D (xy) with m value linestrings. - * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the - * collection. All of the *linestrings in the list must be 2D (xy) with m value linestrings. There must be at least 1 linestring - * in the list. - * Returns a pointer to the created geometry collection of 2D with m value linestrings. The geometry must have FirstLinestring - * pointing to the first *linestring in the list pointed by first and LastLinestring pointing to the last element of the same list. - * DimensionModel must be GAIA_XYM and *DimensionType must be GAIA_TYPE_LINESTRING. - */ -static gaiaGeomCollPtr -vanuatu_multilinestring_xym (struct vanuatu_data *p_data, - gaiaLinestringPtr first) -{ - gaiaLinestringPtr p = first; - gaiaLinestringPtr p_n; - gaiaLinestringPtr new_line; - gaiaGeomCollPtr a = gaiaAllocGeomCollXYM (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, a); - a->DeclaredType = GAIA_MULTILINESTRING; - a->DimensionModel = GAIA_XY_M; - - while (p) - { - new_line = gaiaAddLinestringToGeomColl (a, p->Points); - gaiaCopyLinestringCoords (new_line, p); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreeLinestring (p); - p = p_n; - } - - return a; -} - -/* - * Creates a geometry collection containing 4D (xyz) with m value linestrings. - * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the - * collection. All of the *linestrings in the list must be 4D (xyz) with m value linestrings. There must be at least 1 linestring - * in the list. - * Returns a pointer to the created geometry collection of 4D with m value linestrings. The geometry must have FirstLinestring - * pointing to the first *linestring in the list pointed by first and LastLinestring pointing to the last element of the same list. - * DimensionModel must be GAIA_XYZM and *DimensionType must be GAIA_TYPE_LINESTRING. - */ -static gaiaGeomCollPtr -vanuatu_multilinestring_xyzm (struct vanuatu_data *p_data, - gaiaLinestringPtr first) -{ - gaiaLinestringPtr p = first; - gaiaLinestringPtr p_n; - gaiaLinestringPtr new_line; - gaiaGeomCollPtr a = gaiaAllocGeomCollXYZM (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, a); - a->DeclaredType = GAIA_MULTILINESTRING; - a->DimensionModel = GAIA_XY_Z_M; - - while (p) - { - new_line = gaiaAddLinestringToGeomColl (a, p->Points); - gaiaCopyLinestringCoords (new_line, p); - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreeLinestring (p); - p = p_n; - } - return a; -} - -/* - * Creates a geometry collection containing 2D (xy) polygons. - * - * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should - * be added to the collection. All of the polygons in the list must be 2D (xy) polygons. There must be - * at least 1 polygon in the list. - * - * Returns a pointer to the created geometry collection of 2D polygons. The geometry must have - * FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing - * to the last element of the same list. DimensionModel must be GAIA_XY and DimensionType must - * be GAIA_TYPE_POLYGON. - * - */ -static gaiaGeomCollPtr -vanuatu_multipolygon_xy (struct vanuatu_data *p_data, gaiaPolygonPtr first) -{ - gaiaPolygonPtr p = first; - gaiaPolygonPtr p_n; - int i = 0; - gaiaPolygonPtr new_polyg; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - gaiaGeomCollPtr geom = gaiaAllocGeomColl (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - - geom->DeclaredType = GAIA_MULTIPOLYGON; - - while (p) - { - i_ring = p->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); - o_ring = new_polyg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - - for (i = 0; i < new_polyg->NumInteriors; i++) - { - i_ring = p->Interiors + i; - o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePolygon (p); - p = p_n; - } - - return geom; -} - -/* - * Creates a geometry collection containing 3D (xyz) polygons. - * - * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should be - * added to the collection. All of the polygons in the list must be 3D (xyz) polygons. There must be at - * least 1 polygon in the list. - * - * Returns a pointer to the created geometry collection of 3D polygons. The geometry must have - * FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing to - * the last element of the same list. DimensionModel must be GAIA_XYZ and DimensionType must - * be GAIA_TYPE_POLYGON. - * - */ -static gaiaGeomCollPtr -vanuatu_multipolygon_xyz (struct vanuatu_data *p_data, gaiaPolygonPtr first) -{ - gaiaPolygonPtr p = first; - gaiaPolygonPtr p_n; - int i = 0; - gaiaPolygonPtr new_polyg; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - gaiaGeomCollPtr geom = gaiaAllocGeomCollXYZ (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - - geom->DeclaredType = GAIA_MULTIPOLYGON; - - while (p) - { - i_ring = p->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); - o_ring = new_polyg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - - for (i = 0; i < new_polyg->NumInteriors; i++) - { - i_ring = p->Interiors + i; - o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePolygon (p); - p = p_n; - } - - return geom; -} - -/* - * Creates a geometry collection containing 2D (xy) with m value polygons. - * - * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should - * be added to the collection. All of the polygons in the list must be 2D (xy) with m value polygons. - * There must be at least 1 polygon in the list. - * - * Returns a pointer to the created geometry collection of 2D with m value polygons. The geometry - * must have FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon - * pointing to the last element of the same list. DimensionModel must be GAIA_XYM and DimensionType - * must be GAIA_TYPE_POLYGON. - * - */ -static gaiaGeomCollPtr -vanuatu_multipolygon_xym (struct vanuatu_data *p_data, gaiaPolygonPtr first) -{ - gaiaPolygonPtr p = first; - gaiaPolygonPtr p_n; - int i = 0; - gaiaPolygonPtr new_polyg; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - gaiaGeomCollPtr geom = gaiaAllocGeomCollXYM (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - - geom->DeclaredType = GAIA_MULTIPOLYGON; - - while (p) - { - i_ring = p->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); - o_ring = new_polyg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - - for (i = 0; i < new_polyg->NumInteriors; i++) - { - i_ring = p->Interiors + i; - o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePolygon (p); - p = p_n; - } - - return geom; -} - -/* - * Creates a geometry collection containing 4D (xyz) with m value polygons. - * - * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should be - * added to the collection. All of the polygons in the list must be 4D (xyz) with m value polygons. - * There must be at least 1 polygon in the list. - * - * Returns a pointer to the created geometry collection of 4D with m value polygons. The geometry must - * have FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing -// * to the last element of the same list. DimensionModel must be GAIA_XYZM and DimensionType must - * be GAIA_TYPE_POLYGON. - * - */ -static gaiaGeomCollPtr -vanuatu_multipolygon_xyzm (struct vanuatu_data *p_data, gaiaPolygonPtr first) -{ - gaiaPolygonPtr p = first; - gaiaPolygonPtr p_n; - int i = 0; - gaiaPolygonPtr new_polyg; - gaiaRingPtr i_ring; - gaiaRingPtr o_ring; - gaiaGeomCollPtr geom = gaiaAllocGeomCollXYZM (); - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - - geom->DeclaredType = GAIA_MULTIPOLYGON; - - while (p) - { - i_ring = p->Exterior; - new_polyg = - gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); - o_ring = new_polyg->Exterior; - gaiaCopyRingCoords (o_ring, i_ring); - - for (i = 0; i < new_polyg->NumInteriors; i++) - { - i_ring = p->Interiors + i; - o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); - gaiaCopyRingCoords (o_ring, i_ring); - } - - p_n = p->Next; - vanuatuMapDynClean (p_data, p); - gaiaFreePolygon (p); - p = p_n; - } - - return geom; -} - -static void -vanuatu_geomColl_common (struct vanuatu_data *p_data, gaiaGeomCollPtr org, - gaiaGeomCollPtr dst) -{ -/* -/ helper function: xfers entities between the Origin and Destination -/ Sandro Furieri: 2010 October 12 -*/ - gaiaGeomCollPtr p = org; - gaiaGeomCollPtr p_n; - gaiaPointPtr pt; - gaiaPointPtr pt_n; - gaiaLinestringPtr ln; - gaiaLinestringPtr ln_n; - gaiaPolygonPtr pg; - gaiaPolygonPtr pg_n; - while (p) - { - pt = p->FirstPoint; - while (pt) - { - pt_n = pt->Next; - pt->Next = NULL; - if (dst->FirstPoint == NULL) - dst->FirstPoint = pt; - if (dst->LastPoint != NULL) - dst->LastPoint->Next = pt; - dst->LastPoint = pt; - pt = pt_n; - } - ln = p->FirstLinestring; - while (ln) - { - ln_n = ln->Next; - ln->Next = NULL; - if (dst->FirstLinestring == NULL) - dst->FirstLinestring = ln; - if (dst->LastLinestring != NULL) - dst->LastLinestring->Next = ln; - dst->LastLinestring = ln; - ln = ln_n; - } - pg = p->FirstPolygon; - while (pg) - { - pg_n = pg->Next; - pg->Next = NULL; - if (dst->FirstPolygon == NULL) - dst->FirstPolygon = pg; - if (dst->LastPolygon != NULL) - dst->LastPolygon->Next = pg; - dst->LastPolygon = pg; - pg = pg_n; - } - p_n = p->Next; - p->FirstPoint = NULL; - p->LastPoint = NULL; - p->FirstLinestring = NULL; - p->LastLinestring = NULL; - p->FirstPolygon = NULL; - p->LastPolygon = NULL; - vanuatuMapDynClean (p_data, p); - gaiaFreeGeomColl (p); - p = p_n; - } -} - -/* Creates a 2D (xy) geometry collection in SpatiaLite - * - * first is the first geometry collection in a linked list of geometry collections. - * Each geometry collection represents a single type of object (eg. one could be a POINT, - * another could be a LINESTRING, another could be a MULTILINESTRING, etc.). - * - * The type of object represented by any geometry collection is stored in the declaredType - * field of its struct. For example, if first->declaredType = GAIA_POINT, then first represents a point. - * If first->declaredType = GAIA_MULTIPOINT, then first represents a multipoint. - * - * NOTE: geometry collections cannot contain other geometry collections (have to confirm this - * with Sandro). - * - * The goal of this function is to take the information from all of the structs in the linked list and - * return one geomColl struct containing all of that information. - * - * The integers used for 'declaredType' are defined in gaiageo.h. In this function, the only values - * contained in 'declaredType' that will be encountered will be: - * - * GAIA_POINT, GAIA_LINESTRING, GAIA_POLYGON, - * GAIA_MULTIPOINT, GAIA_MULTILINESTRING, GAIA_MULTIPOLYGON - */ -static gaiaGeomCollPtr -vanuatu_geomColl_xy (struct vanuatu_data *p_data, gaiaGeomCollPtr first) -{ - gaiaGeomCollPtr geom = gaiaAllocGeomColl (); - if (geom == NULL) - return NULL; - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - geom->DimensionModel = GAIA_XY; - vanuatu_geomColl_common (p_data, first, geom); - return geom; -} - -/* - * See geomColl_xy for description. - * - * The only difference between this function and geomColl_xy is that the 'declaredType' field of the structs - * in the linked list for this function will only contain the following types: - * - * GAIA_POINTZ, GAIA_LINESTRINGZ, GAIA_POLYGONZ, - * GAIA_MULTIPOINTZ, GAIA_MULTILINESTRINGZ, GAIA_MULTIPOLYGONZ - */ -static gaiaGeomCollPtr -vanuatu_geomColl_xyz (struct vanuatu_data *p_data, gaiaGeomCollPtr first) -{ - gaiaGeomCollPtr geom = gaiaAllocGeomColl (); - if (geom == NULL) - return NULL; - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - geom->DimensionModel = GAIA_XY_Z; - vanuatu_geomColl_common (p_data, first, geom); - return geom; -} - -/* - * See geomColl_xy for description. - * - * The only difference between this function and geomColl_xy is that the 'declaredType' field of the structs - * in the linked list for this function will only contain the following types: - * - * GAIA_POINTM, GAIA_LINESTRINGM, GAIA_POLYGONM, - * GAIA_MULTIPOINTM, GAIA_MULTILINESTRINGM, GAIA_MULTIPOLYGONM - */ -static gaiaGeomCollPtr -vanuatu_geomColl_xym (struct vanuatu_data *p_data, gaiaGeomCollPtr first) -{ - gaiaGeomCollPtr geom = gaiaAllocGeomColl (); - if (geom == NULL) - return NULL; - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - geom->DimensionModel = GAIA_XY_M; - vanuatu_geomColl_common (p_data, first, geom); - return geom; -} - -/* - * See geomColl_xy for description. - * - * The only difference between this function and geomColl_xy is that the 'declaredType' field of the structs - * in the linked list for this function will only contain the following types: - * - * GAIA_POINTZM, GAIA_LINESTRINGZM, GAIA_POLYGONZM, - * GAIA_MULTIPOINTZM, GAIA_MULTILINESTRINGZM, GAIA_MULTIPOLYGONZM - */ -static gaiaGeomCollPtr -vanuatu_geomColl_xyzm (struct vanuatu_data *p_data, gaiaGeomCollPtr first) -{ - gaiaGeomCollPtr geom = gaiaAllocGeomColl (); - if (geom == NULL) - return NULL; - vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); - geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; - geom->DimensionModel = GAIA_XY_Z_M; - vanuatu_geomColl_common (p_data, first, geom); - return geom; -} - - - -/* -** CAVEAT: we must redefine any Lemon/Flex own macro -*/ -#define YYMINORTYPE VANUATU_MINORTYPE -#define YY_CHAR VANUATU_YY_CHAR -#define input vanuatu_input -#define ParseAlloc vanuatuParseAlloc -#define ParseFree vanuatuParseFree -#define ParseStackPeak vanuatuParseStackPeak -#define Parse vanuatuParse -#define yyStackEntry vanuatu_yyStackEntry -#define yyzerominor vanuatu_yyzerominor -#define yy_accept vanuatu_yy_accept -#define yy_action vanuatu_yy_action -#define yy_base vanuatu_yy_base -#define yy_buffer_stack vanuatu_yy_buffer_stack -#define yy_buffer_stack_max vanuatu_yy_buffer_stack_max -#define yy_buffer_stack_top vanuatu_yy_buffer_stack_top -#define yy_c_buf_p vanuatu_yy_c_buf_p -#define yy_chk vanuatu_yy_chk -#define yy_def vanuatu_yy_def -#define yy_default vanuatu_yy_default -#define yy_destructor vanuatu_yy_destructor -#define yy_ec vanuatu_yy_ec -#define yy_fatal_error vanuatu_yy_fatal_error -#define yy_find_reduce_action vanuatu_yy_find_reduce_action -#define yy_find_shift_action vanuatu_yy_find_shift_action -#define yy_get_next_buffer vanuatu_yy_get_next_buffer -#define yy_get_previous_state vanuatu_yy_get_previous_state -#define yy_init vanuatu_yy_init -#define yy_init_globals vanuatu_yy_init_globals -#define yy_lookahead vanuatu_yy_lookahead -#define yy_meta vanuatu_yy_meta -#define yy_nxt vanuatu_yy_nxt -#define yy_parse_failed vanuatu_yy_parse_failed -#define yy_pop_parser_stack vanuatu_yy_pop_parser_stack -#define yy_reduce vanuatu_yy_reduce -#define yy_reduce_ofst vanuatu_yy_reduce_ofst -#define yy_shift vanuatu_yy_shift -#define yy_shift_ofst vanuatu_yy_shift_ofst -#define yy_start vanuatu_yy_start -#define yy_state_type vanuatu_yy_state_type -#define yy_syntax_error vanuatu_yy_syntax_error -#define yy_trans_info vanuatu_yy_trans_info -#define yy_try_NUL_trans vanuatu_yy_try_NUL_trans -#define yyParser vanuatu_yyParser -#define yyStackEntry vanuatu_yyStackEntry -#define yyStackOverflow vanuatu_yyStackOverflow -#define yyRuleInfo vanuatu_yyRuleInfo -#define yyunput vanuatu_yyunput -#define yyzerominor vanuatu_yyzerominor -#define yyTraceFILE vanuatu_yyTraceFILE -#define yyTracePrompt vanuatu_yyTracePrompt -#define yyTokenName vanuatu_yyTokenName -#define yyRuleName vanuatu_yyRuleName -#define ParseTrace vanuatu_ParseTrace - -#define yylex vanuatu_yylex -#define YY_DECL int yylex (yyscan_t yyscanner) - - -/* including LEMON generated header */ -#include "vanuatuWkt.h" - - - -typedef union -{ - double dval; - struct symtab *symp; -} vanuatu_yystype; -#define YYSTYPE vanuatu_yystype - -/* extern YYSTYPE yylval; */ -YYSTYPE VanuatuWktlval; - - - -/* including LEMON generated code */ -#include "vanuatuWkt.c" - - - -/* -** CAVEAT: there is an incompatibility between LEMON and FLEX -** this macro resolves the issue -*/ -#undef yy_accept -#define yy_accept yy_vanuatu_flex_accept - - - -/* including FLEX generated code */ -#include "lex.VanuatuWkt.c" - - - -/* -** This is a linked-list struct to store all the values for each token. -** All tokens will have a value of 0, except tokens denoted as NUM. -** NUM tokens are geometry coordinates and will contain the floating -** point number. -*/ -typedef struct vanuatuFlexTokenStruct -{ - double value; - struct vanuatuFlexTokenStruct *Next; -} vanuatuFlexToken; - -/* -** Function to clean up the linked-list of token values. -*/ -static int -vanuatu_cleanup (vanuatuFlexToken * token) -{ - vanuatuFlexToken *ptok; - vanuatuFlexToken *ptok_n; - if (token == NULL) - return 0; - ptok = token; - while (ptok) - { - ptok_n = ptok->Next; - free (ptok); - ptok = ptok_n; - } - return 0; -} - -gaiaGeomCollPtr -gaiaParseWkt (const unsigned char *dirty_buffer, short type) -{ - void *pParser = ParseAlloc (malloc); - /* Linked-list of token values */ - vanuatuFlexToken *tokens = malloc (sizeof (vanuatuFlexToken)); - /* Pointer to the head of the list */ - vanuatuFlexToken *head = tokens; - int yv; - yyscan_t scanner; - struct vanuatu_data str_data; - -/* initializing the helper structs */ - str_data.vanuatu_line = 1; - str_data.vanuatu_col = 1; - str_data.vanuatu_parse_error = 0; - str_data.vanuatu_first_dyn_block = NULL; - str_data.vanuatu_last_dyn_block = NULL; - str_data.result = NULL; - -/* initializing the scanner state */ - VanuatuWktlex_init_extra (&str_data, &scanner); - - tokens->Next = NULL; - - VanuatuWkt_scan_string ((char *) dirty_buffer, scanner); - - /* - / Keep tokenizing until we reach the end - / yylex() will return the next matching Token for us. - */ - while ((yv = yylex (scanner)) != 0) - { - if (yv == -1) - { - str_data.vanuatu_parse_error = 1; - break; - } - tokens->Next = malloc (sizeof (vanuatuFlexToken)); - tokens->Next->Next = NULL; - /* - /VanuatuWktlval is a global variable from FLEX. - /VanuatuWktlval is defined in vanuatuLexglobal.h - */ - tokens->Next->value = VanuatuWktlval.dval; - /* Pass the token to the wkt parser created from lemon */ - Parse (pParser, yv, &(tokens->Next->value), &str_data); - tokens = tokens->Next; - } - /* This denotes the end of a line as well as the end of the parser */ - Parse (pParser, VANUATU_NEWLINE, 0, &str_data); - ParseFree (pParser, free); - VanuatuWktlex_destroy (scanner); - - /* Assigning the token as the end to avoid seg faults while cleaning */ - tokens->Next = NULL; - vanuatu_cleanup (head); - - /* - ** Sandro Furieri 2010 Apr 4 - ** checking if any parsing error was encountered - */ - if (str_data.vanuatu_parse_error) - { - if (str_data.result != NULL) - { - /* if a Geometry-result has been produced, the stack is already cleaned */ - gaiaFreeGeomColl (str_data.result); - vanuatuCleanMapDynAlloc (&str_data, 0); - } - else - { - /* otherwise we are required to clean the stack */ - vanuatuCleanMapDynAlloc (&str_data, 1); - } - return NULL; - } - - vanuatuCleanMapDynAlloc (&str_data, 0); - /* - ** Sandro Furieri 2010 Apr 4 - ** final checkup for validity - */ - if (str_data.result == NULL) - return NULL; - if (!vanuatuCheckValidity (str_data.result)) - { - gaiaFreeGeomColl (str_data.result); - return NULL; - } - if (type < 0) - ; /* no restrinction about GEOMETRY CLASS TYPE */ - else - { - if (str_data.result->DeclaredType != type) - { - /* invalid CLASS TYPE for request */ - gaiaFreeGeomColl (str_data.result); - return NULL; - } - } - - gaiaMbrGeometry (str_data.result); - - return str_data.result; -} - -/****************************************************************************** -** This is the end of the code that was created by Team Vanuatu -** of The University of Toronto. - -Authors: -Ruppi Rana ruppi.rana@gmail.com -Dev Tanna dev.tanna@gmail.com -Elias Adum elias.adum@gmail.com -Benton Hui benton.hui@gmail.com -Abhayan Sundararajan abhayan@gmail.com -Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com -Nikola Banovic nikola.banovic@gmail.com -Yong Jian yong.jian@utoronto.ca - -Supervisor: -Greg Wilson gvwilson@cs.toronto.ca - -------------------------------------------------------------------------------- - -*/ - -/* -** CAVEAT: we must now undefine any Lemon/Flex own macro -*/ -#undef YYNOCODE -#undef YYNSTATE -#undef YYNRULE -#undef YY_SHIFT_MAX -#undef YY_SHIFT_USE_DFLT -#undef YY_REDUCE_USE_DFLT -#undef YY_REDUCE_MAX -#undef YY_FLUSH_BUFFER -#undef YY_DO_BEFORE_ACTION -#undef YY_NUM_RULES -#undef YY_END_OF_BUFFER -#undef YY_END_FILE -#undef YYACTIONTYPE -#undef YY_SZ_ACTTAB -#undef YY_NEW_FILE -#undef BEGIN -#undef YY_START -#undef YY_CURRENT_BUFFER -#undef YY_CURRENT_BUFFER_LVALUE -#undef YY_STATE_BUF_SIZE -#undef YY_DECL -#undef YY_FATAL_ERROR -#undef YYMINORTYPE -#undef YY_CHAR -#undef YYSTYPE -#undef input -#undef ParseAlloc -#undef ParseFree -#undef ParseStackPeak -#undef Parse -#undef yyalloc -#undef yyfree -#undef yyin -#undef yyleng -#undef yyless -#undef yylex -#undef yylineno -#undef yyout -#undef yyrealloc -#undef yyrestart -#undef yyStackEntry -#undef yytext -#undef yywrap -#undef yyzerominor -#undef yy_accept -#undef yy_action -#undef yy_base -#undef yy_buffer_stack -#undef yy_buffer_stack_max -#undef yy_buffer_stack_top -#undef yy_c_buf_p -#undef yy_chk -#undef yy_create_buffer -#undef yy_def -#undef yy_default -#undef yy_delete_buffer -#undef yy_destructor -#undef yy_ec -#undef yy_fatal_error -#undef yy_find_reduce_action -#undef yy_find_shift_action -#undef yy_flex_debug -#undef yy_flush_buffer -#undef yy_get_next_buffer -#undef yy_get_previous_state -#undef yy_init -#undef yy_init_buffer -#undef yy_init_globals -#undef yy_load_buffer -#undef yy_load_buffer_state -#undef yy_lookahead -#undef yy_meta -#undef yy_new_buffer -#undef yy_nxt -#undef yy_parse_failed -#undef yy_pop_parser_stack -#undef yy_reduce -#undef yy_reduce_ofst -#undef yy_set_bol -#undef yy_set_interactive -#undef yy_shift -#undef yy_shift_ofst -#undef yy_start -#undef yy_state_type -#undef yy_switch_to_buffer -#undef yy_syntax_error -#undef yy_trans_info -#undef yy_try_NUL_trans -#undef yyParser -#undef yyStackEntry -#undef yyStackOverflow -#undef yyRuleInfo -#undef yytext_ptr -#undef yyunput -#undef yyzerominor -#undef ParseARG_SDECL -#undef ParseARG_PDECL -#undef ParseARG_FETCH -#undef ParseARG_STORE -#undef REJECT -#undef yymore -#undef YY_MORE_ADJ -#undef YY_RESTORE_YY_MORE_OFFSET -#undef YY_LESS_LINENO -#undef yyTracePrompt -#undef yyTraceFILE -#undef yyTokenName -#undef yyRuleName -#undef ParseTrace - -#undef yylex -#undef YY_DECL diff --git a/src/spatialite/src/gaiageo/gg_voronoj.c b/src/spatialite/src/gaiageo/gg_voronoj.c deleted file mode 100644 index 39ff892..0000000 --- a/src/spatialite/src/gaiageo/gg_voronoj.c +++ /dev/null @@ -1,1837 +0,0 @@ -/* - - gg_voronoj.c -- Voronoj Diagram implementation - - version 4.0, 2012 August 26 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include -#include - -#include - -#ifdef GEOS_TRUNK /* GEOS experimental features */ - -struct voronoj_triangle -{ -/* a struct representing a Delaunay triangle */ - double x1; /* vertex #1 */ - double y1; - double x2; /* vertex #2 */ - double y2; - double x3; /* vertex #3 */ - double y3; - double cx; /* circumcenter */ - double cy; - double x_1_2; /* vertex on the frame - edge #1-#2 */ - double y_1_2; - double x_2_3; /* vertex on the frame - edge #2-#3 */ - double y_2_3; - double x_3_1; /* vertex on the frame - edge #3-#1 */ - double y_3_1; - - struct voronoj_triangle *tri_1_2; /* triangle sharing edge #1-#2 */ - struct voronoj_triangle *tri_2_3; /* triangle sharing edge #2-#3 */ - struct voronoj_triangle *tri_3_1; /* triangle sharing edge #3-#1 */ - char trace_1_2; /* flags: to be traced */ - char trace_2_3; - char trace_3_1; -}; - -struct voronoj_point -{ -/* an auxiliary struct - point on Voronoj's frame */ - double coord; - struct voronoj_point *next; -}; - -struct voronoj_aux -{ -/* an auxiliary struct supporting Voronoj */ - struct voronoj_triangle *array; /* array of Triangles */ - int count; /* number of Triangles */ - double minx; /* the frame extent */ - double miny; - double maxx; - double maxy; - struct voronoj_point *first_up; /* linked list: horz-up frame's edge */ - struct voronoj_point *last_up; - struct voronoj_point *first_low; /* linked list: horz-down frame's edge */ - struct voronoj_point *last_low; - struct voronoj_point *first_left; /* linked list: vert-left frame's edge */ - struct voronoj_point *last_left; - struct voronoj_point *first_right; /* linked list: vert-right frame's edge */ - struct voronoj_point *last_right; -}; - -struct concave_hull_str -{ -/* a struct to implement StandardVariation and Variance for Concave Hull */ - double mean; - double quot; - double count; -}; - -static double * -voronoj_sorted_up (struct voronoj_aux *voronoj, int *count) -{ -/* returning a sorted array of coordinates */ - double *array = NULL; - int cnt = 0; - int ok = 1; - int i; - struct voronoj_point *pt = voronoj->first_up; - while (pt) - { - /* counting how many points are there */ - cnt++; - pt = pt->next; - } - *count = cnt; - if (cnt == 0) - return NULL; - -/* allocating and populating the array */ - array = malloc (sizeof (double) * *count); - cnt = 0; - pt = voronoj->first_up; - while (pt) - { - *(array + cnt++) = pt->coord; - pt = pt->next; - } - -/* sorting the array */ - while (ok) - { - ok = 0; - for (i = 1; i < *count; i++) - { - if (*(array + i - 1) > *(array + i)) - { - /* swapping two values */ - double save = *(array + i - 1); - *(array + i - 1) = *(array + i); - *(array + i) = save; - ok = 1; - } - } - } - return array; -} - -static double * -voronoj_sorted_low (struct voronoj_aux *voronoj, int *count) -{ -/* returning a sorted array of coordinates */ - double *array = NULL; - int cnt = 0; - int ok = 1; - int i; - struct voronoj_point *pt = voronoj->first_low; - while (pt) - { - /* counting how many points are there */ - cnt++; - pt = pt->next; - } - *count = cnt; - if (cnt == 0) - return NULL; - -/* allocating and populating the array */ - array = malloc (sizeof (double) * *count); - cnt = 0; - pt = voronoj->first_low; - while (pt) - { - *(array + cnt++) = pt->coord; - pt = pt->next; - } - -/* sorting the array */ - while (ok) - { - ok = 0; - for (i = 1; i < *count; i++) - { - if (*(array + i - 1) > *(array + i)) - { - /* swapping two values */ - double save = *(array + i - 1); - *(array + i - 1) = *(array + i); - *(array + i) = save; - ok = 1; - } - } - } - return array; -} - -static double * -voronoj_sorted_left (struct voronoj_aux *voronoj, int *count) -{ -/* returning a sorted array of coordinates */ - double *array = NULL; - int cnt = 0; - int ok = 1; - int i; - struct voronoj_point *pt = voronoj->first_left; - while (pt) - { - /* counting how many points are there */ - cnt++; - pt = pt->next; - } - *count = cnt; - if (cnt == 0) - return NULL; - -/* allocating and populating the array */ - array = malloc (sizeof (double) * *count); - cnt = 0; - pt = voronoj->first_left; - while (pt) - { - *(array + cnt++) = pt->coord; - pt = pt->next; - } - -/* sorting the array */ - while (ok) - { - ok = 0; - for (i = 1; i < *count; i++) - { - if (*(array + i - 1) > *(array + i)) - { - /* swapping two values */ - double save = *(array + i - 1); - *(array + i - 1) = *(array + i); - *(array + i) = save; - ok = 1; - } - } - } - return array; -} - -static double * -voronoj_sorted_right (struct voronoj_aux *voronoj, int *count) -{ -/* returning a sorted array of coordinates */ - double *array = NULL; - int cnt = 0; - int ok = 1; - int i; - struct voronoj_point *pt = voronoj->first_right; - while (pt) - { - /* counting how many points are there */ - cnt++; - pt = pt->next; - } - *count = cnt; - if (cnt == 0) - return NULL; - -/* allocating and populating the array */ - array = malloc (sizeof (double) * *count); - cnt = 0; - pt = voronoj->first_right; - while (pt) - { - *(array + cnt++) = pt->coord; - pt = pt->next; - } - -/* sorting the array */ - while (ok) - { - ok = 0; - for (i = 1; i < *count; i++) - { - if (*(array + i - 1) > *(array + i)) - { - /* swapping two values */ - double save = *(array + i - 1); - *(array + i - 1) = *(array + i); - *(array + i) = save; - ok = 1; - } - } - } - return array; -} - -static void -voronoj_add_frame_point (struct voronoj_aux *voronoj, double x, double y) -{ -/* adding some frame point */ - struct voronoj_point *pt = NULL; - -/* skipping any corner */ - if (x == voronoj->minx && y == voronoj->miny) - return; - if (x == voronoj->minx && y == voronoj->maxy) - return; - if (x == voronoj->maxx && y == voronoj->miny) - return; - if (x == voronoj->maxx && y == voronoj->maxy) - return; - - if (x == voronoj->minx) - { - pt = malloc (sizeof (struct voronoj_point)); - pt->coord = y; - pt->next = NULL; - if (voronoj->first_left == NULL) - voronoj->first_left = pt; - if (voronoj->last_left != NULL) - voronoj->last_left->next = pt; - voronoj->last_left = pt; - } - if (x == voronoj->maxx) - { - pt = malloc (sizeof (struct voronoj_point)); - pt->coord = y; - pt->next = NULL; - if (voronoj->first_right == NULL) - voronoj->first_right = pt; - if (voronoj->last_right != NULL) - voronoj->last_right->next = pt; - voronoj->last_right = pt; - } - if (y == voronoj->miny) - { - pt = malloc (sizeof (struct voronoj_point)); - pt->coord = x; - pt->next = NULL; - if (voronoj->first_low == NULL) - voronoj->first_low = pt; - if (voronoj->last_low != NULL) - voronoj->last_low->next = pt; - voronoj->last_low = pt; - } - if (y == voronoj->maxy) - { - pt = malloc (sizeof (struct voronoj_point)); - pt->coord = x; - pt->next = NULL; - if (voronoj->first_up == NULL) - voronoj->first_up = pt; - if (voronoj->last_up != NULL) - voronoj->last_up->next = pt; - voronoj->last_up = pt; - } -} - -static int -voronoj_same_edge (double ax1, double ay1, double ax2, double ay2, double bx1, - double by1, double bx2, double by2) -{ -/* testing if two segments are the same */ - if (ax1 == bx1 && ay1 == by1 && ax2 == bx2 && ay2 == by2) - return 1; - if (ax1 == bx2 && ay1 == by2 && ax2 == bx1 && ay2 == by1) - return 1; - return 0; -} - -static int -voronoj_internal (struct voronoj_triangle *triangle) -{ -/* checking if the circumcenter falls inside the triangle */ - int ret; - gaiaGeomCollPtr pt = gaiaAllocGeomColl (); - gaiaGeomCollPtr tri = gaiaAllocGeomColl (); - gaiaPolygonPtr pg = gaiaAddPolygonToGeomColl (tri, 4, 0); - gaiaRingPtr rng = pg->Exterior; - gaiaSetPoint (rng->Coords, 0, triangle->x1, triangle->y1); - gaiaSetPoint (rng->Coords, 1, triangle->x2, triangle->y2); - gaiaSetPoint (rng->Coords, 2, triangle->x3, triangle->y3); - gaiaSetPoint (rng->Coords, 3, triangle->x1, triangle->y1); - gaiaAddPointToGeomColl (pt, triangle->cx, triangle->cy); - ret = gaiaGeomCollIntersects (tri, pt); - gaiaFreeGeomColl (pt); - gaiaFreeGeomColl (tri); - return ret; -} - -static double -voronoj_test_point (double x1, double y1, double x2, double y2, double x, - double y) -{ -/* point-segment distance */ - double dist; - gaiaGeomCollPtr pt = gaiaAllocGeomColl (); - gaiaGeomCollPtr segm = gaiaAllocGeomColl (); - gaiaLinestringPtr ln = gaiaAddLinestringToGeomColl (segm, 2); - gaiaSetPoint (ln->Coords, 0, x1, y1); - gaiaSetPoint (ln->Coords, 1, x2, y2); - gaiaAddPointToGeomColl (pt, x, y); - gaiaGeomCollDistance (segm, pt, &dist); - gaiaFreeGeomColl (pt); - gaiaFreeGeomColl (segm); - return dist; -} - -static int -voronoj_check_nearest_edge (struct voronoj_triangle *tri, int which) -{ -/* testing if direction outside */ - double d_1_2; - double d_2_3; - double d_3_1; - gaiaGeomCollPtr pt = gaiaAllocGeomColl (); - gaiaGeomCollPtr segm = gaiaAllocGeomColl (); - gaiaLinestringPtr ln = gaiaAddLinestringToGeomColl (segm, 2); - gaiaSetPoint (ln->Coords, 0, tri->x1, tri->y1); - gaiaSetPoint (ln->Coords, 1, tri->x2, tri->y2); - gaiaAddPointToGeomColl (pt, tri->cx, tri->cy); - gaiaGeomCollDistance (segm, pt, &d_1_2); - gaiaFreeGeomColl (segm); - segm = gaiaAllocGeomColl (); - ln = gaiaAddLinestringToGeomColl (segm, 2); - gaiaSetPoint (ln->Coords, 0, tri->x2, tri->y2); - gaiaSetPoint (ln->Coords, 1, tri->x3, tri->y3); - gaiaGeomCollDistance (segm, pt, &d_2_3); - gaiaFreeGeomColl (segm); - segm = gaiaAllocGeomColl (); - ln = gaiaAddLinestringToGeomColl (segm, 2); - gaiaSetPoint (ln->Coords, 0, tri->x3, tri->y3); - gaiaSetPoint (ln->Coords, 1, tri->x1, tri->y1); - gaiaGeomCollDistance (segm, pt, &d_3_1); - gaiaFreeGeomColl (segm); - gaiaFreeGeomColl (pt); - - if (which == 12 && d_1_2 < d_2_3 && d_1_2 < d_3_1) - return 0; - if (which == 23 && d_2_3 < d_1_2 && d_2_3 < d_3_1) - return 0; - if (which == 31 && d_3_1 < d_1_2 && d_3_1 < d_2_3) - return 0; - return 1; -} - -static void -voronoj_minmax (double x, double y, double *minx, double *miny, double *maxx, - double *maxy) -{ -/* updating the frame extent */ - if (x < *minx) - *minx = x; - if (y < *miny) - *miny = y; - if (x > *maxx) - *maxx = x; - if (y > *maxy) - *maxy = y; -} - -static void -voronoj_frame_point (double intercept, double slope, - struct voronoj_aux *voronoj, double cx, double cy, - double mx, double my, int direct, double *x, double *y) -{ -/* determining a vertex on the frame */ - double x_up; - double x_low; - double y_left; - double y_right; - double pre_x1 = DBL_MAX; - double pre_y1 = DBL_MAX; - double pre_x2 = DBL_MAX; - double pre_y2 = DBL_MAX; - double d1; - double d2; - - if (slope == DBL_MAX) - { - x_up = cx; - x_low = cx; - y_left = DBL_MAX; - y_right = DBL_MAX; - } - else - { - x_up = (voronoj->maxy - intercept) / slope; - x_low = (voronoj->miny - intercept) / slope; - y_left = (slope * voronoj->minx) + intercept; - y_right = (slope * voronoj->maxx) + intercept; - } - - if (x_up >= voronoj->minx && x_up <= voronoj->maxx) - { - if (pre_x1 == DBL_MAX && pre_y1 == DBL_MAX) - { - pre_x1 = x_up; - pre_y1 = voronoj->maxy; - } - else if (pre_x2 == DBL_MAX && pre_y2 == DBL_MAX) - { - pre_x2 = x_up; - pre_y2 = voronoj->maxy; - } - } - if (x_low >= voronoj->minx && x_low <= voronoj->maxx) - { - if (pre_x1 == DBL_MAX && pre_y1 == DBL_MAX) - { - pre_x1 = x_low; - pre_y1 = voronoj->miny; - } - else if (pre_x2 == DBL_MAX && pre_y2 == DBL_MAX) - { - pre_x2 = x_low; - pre_y2 = voronoj->miny; - } - } - if (y_left >= voronoj->miny && y_left <= voronoj->maxy) - { - if (pre_x1 == DBL_MAX && pre_y1 == DBL_MAX) - { - pre_x1 = voronoj->minx; - pre_y1 = y_left; - } - else if (pre_x2 == DBL_MAX && pre_y2 == DBL_MAX) - { - pre_x2 = voronoj->minx; - pre_y2 = y_left; - } - } - if (y_right >= voronoj->miny && y_right <= voronoj->maxy) - { - if (pre_x1 == DBL_MAX && pre_y1 == DBL_MAX) - { - pre_x1 = voronoj->maxx; - pre_y1 = y_right; - } - else if (pre_x2 == DBL_MAX && pre_y2 == DBL_MAX) - { - pre_x2 = voronoj->maxx; - pre_y2 = y_right; - } - } - -/* choosing wich point has to be returned */ - if (direct) - { - /* cutting the edge in two */ - d1 = voronoj_test_point (cx, cy, pre_x1, pre_y1, mx, my); - d2 = voronoj_test_point (cx, cy, pre_x2, pre_y2, mx, my); - if (d1 < d2) - { - *x = pre_x1; - *y = pre_y1; - } - else - { - *x = pre_x2; - *y = pre_y2; - } - } - else - { - /* going outside */ - d1 = voronoj_test_point (cx, cy, pre_x1, pre_y1, mx, my); - d2 = voronoj_test_point (cx, cy, pre_x2, pre_y2, mx, my); - if (d1 > d2) - { - *x = pre_x1; - *y = pre_y1; - } - else - { - *x = pre_x2; - *y = pre_y2; - } - } -} - -SPATIALITE_PRIVATE void * -voronoj_build (int count, void *p_first, double extra_frame_size) -{ -/* building the Voronoj auxiliary struct */ - gaiaPolygonPtr first = (gaiaPolygonPtr) p_first; - struct voronoj_aux *voronoj = NULL; - struct voronoj_triangle *triangle; - struct voronoj_triangle *tri2; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - int ind = 0; - int i2; - int direct; - double x; - double y; - double z; - double m; - double xba; - double yba; - double xca; - double yca; - double bl; - double cl; - double d; - double mx; - double my; - double slope; - double intercept; - double minx = DBL_MAX; - double miny = DBL_MAX; - double maxx = DBL_MIN; - double maxy = DBL_MIN; - double ext_x; - double ext_y; - double delta; - double delta2; - -/* allocating the Voronoj struct */ - voronoj = malloc (sizeof (struct voronoj_aux)); - voronoj->count = count; - voronoj->first_up = NULL; - voronoj->last_up = NULL; - voronoj->first_low = NULL; - voronoj->last_low = NULL; - voronoj->first_left = NULL; - voronoj->last_left = NULL; - voronoj->first_right = NULL; - voronoj->last_right = NULL; - voronoj->array = malloc (sizeof (struct voronoj_triangle) * count); - -/* initializing the Voronoj struct */ - pg = first; - while (pg) - { - rng = pg->Exterior; - triangle = voronoj->array + ind; - if (pg->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, 0, &x, &y, &z); - triangle->x1 = x; - triangle->y1 = y; - gaiaGetPointXYZ (rng->Coords, 1, &x, &y, &z); - triangle->x2 = x; - triangle->y2 = y; - gaiaGetPointXYZ (rng->Coords, 2, &x, &y, &z); - triangle->x3 = x; - triangle->y3 = y; - } - else if (pg->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, 0, &x, &y, &m); - triangle->x1 = x; - triangle->y1 = y; - gaiaGetPointXYM (rng->Coords, 1, &x, &y, &m); - triangle->x2 = x; - triangle->y2 = y; - gaiaGetPointXYM (rng->Coords, 2, &x, &y, &m); - triangle->x3 = x; - triangle->y3 = y; - } - else if (pg->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, 0, &x, &y, &z, &m); - triangle->x1 = x; - triangle->y1 = y; - gaiaGetPointXYZM (rng->Coords, 1, &x, &y, &z, &m); - triangle->x2 = x; - triangle->y2 = y; - gaiaGetPointXYZM (rng->Coords, 2, &x, &y, &z, &m); - triangle->x3 = x; - triangle->y3 = y; - } - else - { - gaiaGetPoint (rng->Coords, 0, &x, &y); - triangle->x1 = x; - triangle->y1 = y; - gaiaGetPoint (rng->Coords, 1, &x, &y); - triangle->x2 = x; - triangle->y2 = y; - gaiaGetPoint (rng->Coords, 2, &x, &y); - triangle->x3 = x; - triangle->y3 = y; - } - - /* computing the triangle circumcenter */ - xba = triangle->x2 - triangle->x1; - yba = triangle->y2 - triangle->y1; - xca = triangle->x3 - triangle->x1; - yca = triangle->y3 - triangle->y1; - bl = xba * xba + yba * yba; - cl = xca * xca + yca * yca; - d = 0.5 / (xba * yca - yba * xca); - triangle->cx = triangle->x1 + ((yca * bl - yba * cl) * d); - triangle->cy = triangle->y1 + ((xba * cl - xca * bl) * d); - /* adjusting the frame extent */ - voronoj_minmax (triangle->x1, triangle->y1, &minx, &miny, &maxx, - &maxy); - voronoj_minmax (triangle->x2, triangle->y2, &minx, &miny, &maxx, - &maxy); - voronoj_minmax (triangle->x3, triangle->y3, &minx, &miny, &maxx, - &maxy); - voronoj_minmax (triangle->cx, triangle->cy, &minx, &miny, &maxx, - &maxy); - - triangle->tri_1_2 = NULL; - triangle->tri_2_3 = NULL; - triangle->tri_3_1 = NULL; - triangle->trace_1_2 = 0; - triangle->trace_2_3 = 0; - triangle->trace_3_1 = 0; - ind++; - pg = pg->Next; - } - -/* setting the frame extent */ - if (extra_frame_size < 0.0) - extra_frame_size = 5.0; - ext_x = maxx - minx; - ext_y = maxy - miny; - delta = (ext_x * extra_frame_size) / 100.0; - delta2 = (ext_y * extra_frame_size) / 100.0; - if (delta2 > delta) - delta = delta2; - voronoj->minx = minx - delta; - voronoj->miny = miny - delta; - voronoj->maxx = maxx + delta; - voronoj->maxy = maxy + delta; - -/* identifying triangles sharing the same edge */ - for (ind = 0; ind < voronoj->count; ind++) - { - triangle = voronoj->array + ind; - for (i2 = ind + 1; i2 < voronoj->count; i2++) - { - tri2 = voronoj->array + i2; - if (triangle->tri_1_2 == NULL && tri2->tri_1_2 == NULL) - { - if (voronoj_same_edge - (triangle->x1, triangle->y1, triangle->x2, - triangle->y2, tri2->x1, tri2->y1, tri2->x2, - tri2->y2)) - { - triangle->tri_1_2 = tri2; - triangle->trace_1_2 = 1; - tri2->tri_1_2 = triangle; - } - } - if (triangle->tri_1_2 == NULL && tri2->tri_2_3 == NULL) - { - if (voronoj_same_edge - (triangle->x1, triangle->y1, triangle->x2, - triangle->y2, tri2->x2, tri2->y2, tri2->x3, - tri2->y3)) - { - triangle->tri_1_2 = tri2; - triangle->trace_1_2 = 1; - tri2->tri_2_3 = triangle; - } - } - if (triangle->tri_1_2 == NULL && tri2->tri_3_1 == NULL) - { - if (voronoj_same_edge - (triangle->x1, triangle->y1, triangle->x2, - triangle->y2, tri2->x3, tri2->y3, tri2->x1, - tri2->y1)) - { - triangle->tri_1_2 = tri2; - triangle->trace_1_2 = 1; - tri2->tri_3_1 = triangle; - } - } - if (triangle->tri_2_3 == NULL && tri2->tri_1_2 == NULL) - { - if (voronoj_same_edge - (triangle->x2, triangle->y2, triangle->x3, - triangle->y3, tri2->x1, tri2->y1, tri2->x2, - tri2->y2)) - { - triangle->tri_2_3 = tri2; - triangle->trace_2_3 = 1; - tri2->tri_1_2 = triangle; - } - } - if (triangle->tri_2_3 == NULL && tri2->tri_2_3 == NULL) - { - if (voronoj_same_edge - (triangle->x2, triangle->y2, triangle->x3, - triangle->y3, tri2->x2, tri2->y2, tri2->x3, - tri2->y3)) - { - triangle->tri_2_3 = tri2; - triangle->trace_2_3 = 1; - tri2->tri_2_3 = triangle; - } - } - if (triangle->tri_2_3 == NULL && tri2->tri_3_1 == NULL) - { - if (voronoj_same_edge - (triangle->x2, triangle->y2, triangle->x3, - triangle->y3, tri2->x3, tri2->y3, tri2->x1, - tri2->y1)) - { - triangle->tri_2_3 = tri2; - triangle->trace_2_3 = 1; - tri2->tri_3_1 = triangle; - } - } - if (triangle->tri_3_1 == NULL && tri2->tri_1_2 == NULL) - { - if (voronoj_same_edge - (triangle->x3, triangle->y3, triangle->x1, - triangle->y1, tri2->x1, tri2->y1, tri2->x2, - tri2->y2)) - { - triangle->tri_3_1 = tri2; - triangle->trace_3_1 = 1; - tri2->tri_1_2 = triangle; - } - } - if (triangle->tri_3_1 == NULL && tri2->tri_2_3 == NULL) - { - if (voronoj_same_edge - (triangle->x3, triangle->y3, triangle->x1, - triangle->y1, tri2->x2, tri2->y2, tri2->x3, - tri2->y3)) - { - triangle->tri_3_1 = tri2; - triangle->trace_3_1 = 1; - tri2->tri_2_3 = triangle; - } - } - if (triangle->tri_3_1 == NULL && tri2->tri_3_1 == NULL) - { - if (voronoj_same_edge - (triangle->x3, triangle->y3, triangle->x1, - triangle->y1, tri2->x3, tri2->y3, tri2->x1, - tri2->y1)) - { - triangle->tri_3_1 = tri2; - triangle->trace_3_1 = 1; - tri2->tri_3_1 = triangle; - } - } - } - - /* identifying vertices on the frame */ - if (triangle->tri_1_2 == NULL) - { - mx = (triangle->x1 + triangle->x2) / 2.0; - my = (triangle->y1 + triangle->y2) / 2.0; - if (mx == triangle->cx) - slope = DBL_MAX; - else - { - slope = (my - triangle->cy) / (mx - triangle->cx); - intercept = my - (slope * mx); - } - direct = 1; - if (!voronoj_internal (triangle)) - direct = voronoj_check_nearest_edge (triangle, 12); - voronoj_frame_point (intercept, slope, voronoj, triangle->cx, - triangle->cy, mx, my, direct, &x, &y); - triangle->x_1_2 = x; - triangle->y_1_2 = y; - } - if (triangle->tri_2_3 == NULL) - { - mx = (triangle->x2 + triangle->x3) / 2.0; - my = (triangle->y2 + triangle->y3) / 2.0; - if (mx == triangle->cx) - slope = DBL_MAX; - else - { - slope = (my - triangle->cy) / (mx - triangle->cx); - intercept = my - (slope * mx); - } - direct = 1; - if (!voronoj_internal (triangle)) - direct = voronoj_check_nearest_edge (triangle, 23); - voronoj_frame_point (intercept, slope, voronoj, triangle->cx, - triangle->cy, mx, my, direct, &x, &y); - triangle->x_2_3 = x; - triangle->y_2_3 = y; - } - if (triangle->tri_3_1 == NULL) - { - mx = (triangle->x3 + triangle->x1) / 2.0; - my = (triangle->y3 + triangle->y1) / 2.0; - if (mx == triangle->cx) - slope = DBL_MAX; - else - { - slope = (my - triangle->cy) / (mx - triangle->cx); - intercept = my - (slope * mx); - } - direct = 1; - if (!voronoj_internal (triangle)) - direct = voronoj_check_nearest_edge (triangle, 31); - voronoj_frame_point (intercept, slope, voronoj, triangle->cx, - triangle->cy, mx, my, direct, &x, &y); - triangle->x_3_1 = x; - triangle->y_3_1 = y; - } - } - return voronoj; -} - -SPATIALITE_PRIVATE void * -voronoj_export (void *p_voronoj, void *p_result, int only_edges) -{ -/* building the Geometry representing Voronoj */ - gaiaGeomCollPtr result = (gaiaGeomCollPtr) p_result; - gaiaGeomCollPtr lines; - struct voronoj_aux *voronoj = (struct voronoj_aux *) p_voronoj; - int ind; - gaiaLinestringPtr ln; - struct voronoj_triangle *triangle; - struct voronoj_triangle *tri2; - int i; - int count; - double last; - double *array; - - for (ind = 0; ind < voronoj->count; ind++) - { - triangle = voronoj->array + ind; - - /* segments connecting two circumcenters */ - if (triangle->tri_1_2 && triangle->trace_1_2) - { - tri2 = triangle->tri_1_2; - ln = gaiaAddLinestringToGeomColl (result, 2); - if (result->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0); - gaiaSetPointXYZ (ln->Coords, 1, tri2->cx, tri2->cy, 0.0); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0); - gaiaSetPointXYM (ln->Coords, 1, tri2->cx, tri2->cy, 0.0); - } - else if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0, 0.0); - gaiaSetPointXYZM (ln->Coords, 1, tri2->cx, tri2->cy, 0.0, - 0.0); - } - else - { - gaiaSetPoint (ln->Coords, 0, triangle->cx, triangle->cy); - gaiaSetPoint (ln->Coords, 1, tri2->cx, tri2->cy); - } - } - if (triangle->tri_2_3 && triangle->trace_2_3) - { - tri2 = triangle->tri_2_3; - ln = gaiaAddLinestringToGeomColl (result, 2); - if (result->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0); - gaiaSetPointXYZ (ln->Coords, 1, tri2->cx, tri2->cy, 0.0); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0); - gaiaSetPointXYM (ln->Coords, 1, tri2->cx, tri2->cy, 0.0); - } - else if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0, 0.0); - gaiaSetPointXYZM (ln->Coords, 1, tri2->cx, tri2->cy, 0.0, - 0.0); - } - else - { - gaiaSetPoint (ln->Coords, 0, triangle->cx, triangle->cy); - gaiaSetPoint (ln->Coords, 1, tri2->cx, tri2->cy); - } - } - if (triangle->tri_3_1 && triangle->trace_3_1) - { - tri2 = triangle->tri_3_1; - ln = gaiaAddLinestringToGeomColl (result, 2); - if (result->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0); - gaiaSetPointXYZ (ln->Coords, 1, tri2->cx, tri2->cy, 0.0); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0); - gaiaSetPointXYM (ln->Coords, 1, tri2->cx, tri2->cy, 0.0); - } - else if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0, 0.0); - gaiaSetPointXYZM (ln->Coords, 1, tri2->cx, tri2->cy, 0.0, - 0.0); - } - else - { - gaiaSetPoint (ln->Coords, 0, triangle->cx, triangle->cy); - gaiaSetPoint (ln->Coords, 1, tri2->cx, tri2->cy); - } - } - - /* segments connecting a circumcenter to the frame */ - if (triangle->tri_1_2 == NULL) - { - ln = gaiaAddLinestringToGeomColl (result, 2); - if (result->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0); - gaiaSetPointXYZ (ln->Coords, 1, triangle->x_1_2, - triangle->y_1_2, 0.0); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0); - gaiaSetPointXYM (ln->Coords, 1, triangle->x_1_2, - triangle->y_1_2, 0.0); - } - else if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0, 0.0); - gaiaSetPointXYZM (ln->Coords, 1, triangle->x_1_2, - triangle->y_1_2, 0.0, 0.0); - } - else - { - gaiaSetPoint (ln->Coords, 0, triangle->cx, triangle->cy); - gaiaSetPoint (ln->Coords, 1, triangle->x_1_2, - triangle->y_1_2); - } - if (!only_edges) - voronoj_add_frame_point (voronoj, triangle->x_1_2, - triangle->y_1_2); - } - if (triangle->tri_2_3 == NULL) - { - ln = gaiaAddLinestringToGeomColl (result, 2); - if (result->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0); - gaiaSetPointXYZ (ln->Coords, 1, triangle->x_2_3, - triangle->y_2_3, 0.0); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0); - gaiaSetPointXYM (ln->Coords, 1, triangle->x_2_3, - triangle->y_2_3, 0.0); - } - else if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0, 0.0); - gaiaSetPointXYZM (ln->Coords, 1, triangle->x_2_3, - triangle->y_2_3, 0.0, 0.0); - } - else - { - gaiaSetPoint (ln->Coords, 0, triangle->cx, triangle->cy); - gaiaSetPoint (ln->Coords, 1, triangle->x_2_3, - triangle->y_2_3); - } - if (!only_edges) - voronoj_add_frame_point (voronoj, triangle->x_2_3, - triangle->y_2_3); - } - if (triangle->tri_3_1 == NULL) - { - ln = gaiaAddLinestringToGeomColl (result, 2); - if (result->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0); - gaiaSetPointXYZ (ln->Coords, 1, triangle->x_3_1, - triangle->y_3_1, 0.0); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0); - gaiaSetPointXYM (ln->Coords, 1, triangle->x_3_1, - triangle->y_3_1, 0.0); - } - else if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, 0, triangle->cx, - triangle->cy, 0.0, 0.0); - gaiaSetPointXYZM (ln->Coords, 1, triangle->x_3_1, - triangle->y_3_1, 0.0, 0.0); - } - else - { - gaiaSetPoint (ln->Coords, 0, triangle->cx, triangle->cy); - gaiaSetPoint (ln->Coords, 1, triangle->x_3_1, - triangle->y_3_1); - } - if (!only_edges) - voronoj_add_frame_point (voronoj, triangle->x_3_1, - triangle->y_3_1); - } - } - - if (only_edges) - return result; - -/* setting up the frame's upper edge */ - last = voronoj->minx; - array = voronoj_sorted_up (voronoj, &count); - if (array) - { - for (i = 0; i < count; i++) - { - ln = gaiaAddLinestringToGeomColl (result, 2); - if (result->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, 0, last, voronoj->maxy, 0.0); - gaiaSetPointXYZ (ln->Coords, 1, *(array + i), - voronoj->maxy, 0.0); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, 0, last, voronoj->maxy, 0.0); - gaiaSetPointXYM (ln->Coords, 1, *(array + i), - voronoj->maxy, 0.0); - } - else if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, 0, last, - voronoj->maxy, 0.0, 0.0); - gaiaSetPointXYZM (ln->Coords, 1, *(array + i), - voronoj->maxy, 0.0, 0.0); - } - else - { - gaiaSetPoint (ln->Coords, 0, last, voronoj->maxy); - gaiaSetPoint (ln->Coords, 1, *(array + i), voronoj->maxy); - } - last = *(array + i); - } - free (array); - } - -/* closing the frame's upper edge */ - ln = gaiaAddLinestringToGeomColl (result, 2); - if (result->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, 0, last, voronoj->maxy, 0.0); - gaiaSetPointXYZ (ln->Coords, 1, voronoj->maxx, voronoj->maxy, 0.0); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, 0, last, voronoj->maxy, 0.0); - gaiaSetPointXYM (ln->Coords, 1, voronoj->maxx, voronoj->maxy, 0.0); - } - else if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, 0, last, voronoj->maxy, 0.0, 0.0); - gaiaSetPointXYZM (ln->Coords, 1, voronoj->maxx, - voronoj->maxy, 0.0, 0.0); - } - else - { - gaiaSetPoint (ln->Coords, 0, last, voronoj->maxy); - gaiaSetPoint (ln->Coords, 1, voronoj->maxx, voronoj->maxy); - } - -/* setting up the frame's lower edge */ - last = voronoj->minx; - array = voronoj_sorted_low (voronoj, &count); - if (array) - { - for (i = 0; i < count; i++) - { - ln = gaiaAddLinestringToGeomColl (result, 2); - if (result->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, 0, last, voronoj->miny, 0.0); - gaiaSetPointXYZ (ln->Coords, 1, *(array + i), - voronoj->miny, 0.0); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, 0, last, voronoj->miny, 0.0); - gaiaSetPointXYM (ln->Coords, 1, *(array + i), - voronoj->miny, 0.0); - } - else if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, 0, last, - voronoj->miny, 0.0, 0.0); - gaiaSetPointXYZM (ln->Coords, 1, *(array + i), - voronoj->miny, 0.0, 0.0); - } - else - { - gaiaSetPoint (ln->Coords, 0, last, voronoj->miny); - gaiaSetPoint (ln->Coords, 1, *(array + i), voronoj->miny); - } - last = *(array + i); - } - free (array); - } - -/* closing the frame's lower edge */ - ln = gaiaAddLinestringToGeomColl (result, 2); - if (result->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, 0, last, voronoj->miny, 0.0); - gaiaSetPointXYZ (ln->Coords, 1, voronoj->maxx, voronoj->miny, 0.0); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, 0, last, voronoj->miny, 0.0); - gaiaSetPointXYM (ln->Coords, 1, voronoj->maxx, voronoj->miny, 0.0); - } - else if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, 0, last, voronoj->miny, 0.0, 0.0); - gaiaSetPointXYZM (ln->Coords, 1, voronoj->maxx, - voronoj->miny, 0.0, 0.0); - } - else - { - gaiaSetPoint (ln->Coords, 0, last, voronoj->miny); - gaiaSetPoint (ln->Coords, 1, voronoj->maxx, voronoj->miny); - } - -/* setting up the frame's left edge */ - last = voronoj->miny; - array = voronoj_sorted_left (voronoj, &count); - if (array) - { - for (i = 0; i < count; i++) - { - ln = gaiaAddLinestringToGeomColl (result, 2); - if (result->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, 0, voronoj->minx, last, 0.0); - gaiaSetPointXYZ (ln->Coords, 1, voronoj->minx, - *(array + i), 0.0); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, 0, voronoj->minx, last, 0.0); - gaiaSetPointXYM (ln->Coords, 1, voronoj->minx, - *(array + i), 0.0); - } - else if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, 0, voronoj->minx, - last, 0.0, 0.0); - gaiaSetPointXYZM (ln->Coords, 1, voronoj->minx, - *(array + i), 0.0, 0.0); - } - else - { - gaiaSetPoint (ln->Coords, 0, voronoj->minx, last); - gaiaSetPoint (ln->Coords, 1, voronoj->minx, *(array + i)); - } - last = *(array + i); - } - free (array); - } - -/* closing the frame's left edge */ - ln = gaiaAddLinestringToGeomColl (result, 2); - if (result->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, 0, voronoj->minx, last, 0.0); - gaiaSetPointXYZ (ln->Coords, 1, voronoj->minx, voronoj->maxy, 0.0); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, 0, voronoj->minx, last, 0.0); - gaiaSetPointXYM (ln->Coords, 1, voronoj->minx, voronoj->maxy, 0.0); - } - else if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, 0, voronoj->minx, last, 0.0, 0.0); - gaiaSetPointXYZM (ln->Coords, 1, voronoj->minx, - voronoj->maxy, 0.0, 0.0); - } - else - { - gaiaSetPoint (ln->Coords, 0, voronoj->minx, last); - gaiaSetPoint (ln->Coords, 1, voronoj->minx, voronoj->maxy); - } - - /* setting up the frame's right edge */ - last = voronoj->miny; - array = voronoj_sorted_right (voronoj, &count); - if (array) - { - for (i = 0; i < count; i++) - { - ln = gaiaAddLinestringToGeomColl (result, 2); - if (result->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, 0, voronoj->maxx, last, 0.0); - gaiaSetPointXYZ (ln->Coords, 1, voronoj->maxx, - *(array + i), 0.0); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, 0, voronoj->maxx, last, 0.0); - gaiaSetPointXYM (ln->Coords, 1, voronoj->maxx, - *(array + i), 0.0); - } - else if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, 0, voronoj->maxx, - last, 0.0, 0.0); - gaiaSetPointXYZM (ln->Coords, 1, voronoj->maxx, - *(array + i), 0.0, 0.0); - } - else - { - gaiaSetPoint (ln->Coords, 0, voronoj->maxx, last); - gaiaSetPoint (ln->Coords, 1, voronoj->maxx, *(array + i)); - } - last = *(array + i); - } - free (array); - } - -/* closing the frame's right edge */ - ln = gaiaAddLinestringToGeomColl (result, 2); - if (result->DimensionModel == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, 0, voronoj->maxx, last, 0.0); - gaiaSetPointXYZ (ln->Coords, 1, voronoj->maxx, voronoj->maxy, 0.0); - } - else if (result->DimensionModel == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, 0, voronoj->maxx, last, 0.0); - gaiaSetPointXYM (ln->Coords, 1, voronoj->maxx, voronoj->maxy, 0.0); - } - else if (result->DimensionModel == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, 0, voronoj->maxx, last, 0.0, 0.0); - gaiaSetPointXYZM (ln->Coords, 1, voronoj->maxx, - voronoj->maxy, 0.0, 0.0); - } - else - { - gaiaSetPoint (ln->Coords, 0, voronoj->maxx, last); - gaiaSetPoint (ln->Coords, 1, voronoj->maxx, voronoj->maxy); - } - -/* building Polygons */ - lines = result; - result = gaiaPolygonize (lines, 1); - gaiaFreeGeomColl (lines); - return result; -} - -SPATIALITE_PRIVATE void -voronoj_free (void *p_voronoj) -{ -/* memory cleanup: destroying the Voronoj auxiliary struct */ - struct voronoj_aux *voronoj = (struct voronoj_aux *) p_voronoj; - struct voronoj_point *pt; - struct voronoj_point *ptn; - free (voronoj->array); - pt = voronoj->first_up; - while (pt) - { - ptn = pt->next; - free (pt); - pt = ptn; - } - pt = voronoj->first_low; - while (pt) - { - ptn = pt->next; - free (pt); - pt = ptn; - } - pt = voronoj->first_left; - while (pt) - { - ptn = pt->next; - free (pt); - pt = ptn; - } - pt = voronoj->first_right; - while (pt) - { - ptn = pt->next; - free (pt); - pt = ptn; - } - free (voronoj); -} - -SPATIALITE_PRIVATE int -delaunay_triangle_check (void *ppg) -{ -/* test if it's really a triangle */ - gaiaPolygonPtr pg = (gaiaPolygonPtr) ppg; - gaiaRingPtr rng = pg->Exterior; - if (rng->Points == 4 && pg->NumInteriors == 0) - return 1; - return 0; -} - -static void -concave_hull_stats (struct concave_hull_str *concave, double length) -{ -/* update concave hull statistics */ - if (concave->count == 0) - { - concave->count = 1.0; - concave->mean = length; - return; - } - - concave->count += 1.0; - concave->quot = concave->quot + (((concave->count - 1.0) * - ((length - concave->mean) * - (length - concave->mean))) / - concave->count); - concave->mean = concave->mean + ((length - concave->mean) / concave->count); -} - -static int -concave_hull_filter (double x1, double y1, double x2, double y2, double x3, - double y3, double limit) -{ -/* filtering triangles to be inserted into the Concave Hull */ - gaiaGeomCollPtr segm; - gaiaLinestringPtr ln; - double length; - - segm = gaiaAllocGeomColl (); - ln = gaiaAddLinestringToGeomColl (segm, 2); - gaiaSetPoint (ln->Coords, 0, x1, y1); - gaiaSetPoint (ln->Coords, 1, x2, y2); - gaiaGeomCollLength (segm, &length); - gaiaFreeGeomColl (segm); - if (length >= limit) - return 0; - - segm = gaiaAllocGeomColl (); - ln = gaiaAddLinestringToGeomColl (segm, 2); - gaiaSetPoint (ln->Coords, 0, x2, y2); - gaiaSetPoint (ln->Coords, 1, x3, y3); - gaiaGeomCollLength (segm, &length); - gaiaFreeGeomColl (segm); - if (length >= limit) - return 0; - - segm = gaiaAllocGeomColl (); - ln = gaiaAddLinestringToGeomColl (segm, 2); - gaiaSetPoint (ln->Coords, 0, x3, y3); - gaiaSetPoint (ln->Coords, 1, x1, y1); - gaiaGeomCollLength (segm, &length); - gaiaFreeGeomColl (segm); - if (length >= limit) - return 0; - - return 1; -} - -static gaiaGeomCollPtr -concave_hull_no_holes (gaiaGeomCollPtr in) -{ -/* returning a Polygon surely not containing any hole */ - gaiaGeomCollPtr out = NULL; - gaiaPolygonPtr pg_in; - gaiaPolygonPtr pg_out; - gaiaRingPtr rng_in; - gaiaRingPtr rng_out; - int iv; - double x; - double y; - double z; - double m; - - if (in->DimensionModel == GAIA_XY_Z) - out = gaiaAllocGeomCollXYZ (); - else if (in->DimensionModel == GAIA_XY_M) - out = gaiaAllocGeomCollXYM (); - else if (in->DimensionModel == GAIA_XY_Z_M) - out = gaiaAllocGeomCollXYZM (); - else - out = gaiaAllocGeomColl (); - out->Srid = in->Srid; - - pg_in = in->FirstPolygon; - while (pg_in) - { - rng_in = pg_in->Exterior; - pg_out = gaiaAddPolygonToGeomColl (out, rng_in->Points, 0); - rng_out = pg_out->Exterior; - for (iv = 0; iv < rng_in->Points; iv++) - { - /* copying Exterior Ring vertices */ - if (in->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng_in->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (rng_out->Coords, iv, x, y, z); - } - else if (in->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng_in->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (rng_out->Coords, iv, x, y, m); - } - else if (in->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng_in->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (rng_out->Coords, iv, x, y, z, m); - } - else - { - gaiaGetPoint (rng_in->Coords, iv, &x, &y); - gaiaSetPoint (rng_out->Coords, iv, x, y); - } - } - pg_in = pg_in->Next; - } - return out; -} - -SPATIALITE_PRIVATE void * -concave_hull_build (void *p_first, int dimension_model, double factor, - int allow_holes) -{ -/* building the Concave Hull */ - struct concave_hull_str concave; - gaiaPolygonPtr first = (gaiaPolygonPtr) p_first; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - gaiaPolygonPtr pg_out; - gaiaRingPtr rng_out; - gaiaGeomCollPtr segm; - gaiaGeomCollPtr result; - gaiaLinestringPtr ln; - double x; - double y; - double z; - double m; - double x1; - double y1; - double x2; - double y2; - double x3; - double y3; - double length; - double std_dev; - int count; - -/* initializing the struct for mean and standard deviation */ - concave.mean = 0.0; - concave.quot = 0.0; - concave.count = 0.0; - - pg = first; - while (pg) - { - /* examining each triangle / computing statistics distribution */ - rng = pg->Exterior; - if (pg->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, 0, &x, &y, &z); - x1 = x; - y1 = y; - gaiaGetPointXYZ (rng->Coords, 1, &x, &y, &z); - x2 = x; - y2 = y; - gaiaGetPointXYZ (rng->Coords, 2, &x, &y, &z); - x3 = x; - y3 = y; - } - else if (pg->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, 0, &x, &y, &m); - x1 = x; - y1 = y; - gaiaGetPointXYM (rng->Coords, 1, &x, &y, &m); - x2 = x; - y2 = y; - gaiaGetPointXYM (rng->Coords, 2, &x, &y, &m); - x3 = x; - y3 = y; - } - else if (pg->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, 0, &x, &y, &z, &m); - x1 = x; - y1 = y; - gaiaGetPointXYZM (rng->Coords, 1, &x, &y, &z, &m); - x2 = x; - y2 = y; - gaiaGetPointXYZM (rng->Coords, 2, &x, &y, &z, &m); - x3 = x; - y3 = y; - } - else - { - gaiaGetPoint (rng->Coords, 0, &x, &y); - x1 = x; - y1 = y; - gaiaGetPoint (rng->Coords, 1, &x, &y); - x2 = x; - y2 = y; - gaiaGetPoint (rng->Coords, 2, &x, &y); - x3 = x; - y3 = y; - } - - segm = gaiaAllocGeomColl (); - ln = gaiaAddLinestringToGeomColl (segm, 2); - gaiaSetPoint (ln->Coords, 0, x1, y1); - gaiaSetPoint (ln->Coords, 1, x2, y2); - gaiaGeomCollLength (segm, &length); - gaiaFreeGeomColl (segm); - concave_hull_stats (&concave, length); - - segm = gaiaAllocGeomColl (); - ln = gaiaAddLinestringToGeomColl (segm, 2); - gaiaSetPoint (ln->Coords, 0, x2, y2); - gaiaSetPoint (ln->Coords, 1, x3, y3); - gaiaGeomCollLength (segm, &length); - gaiaFreeGeomColl (segm); - concave_hull_stats (&concave, length); - - segm = gaiaAllocGeomColl (); - ln = gaiaAddLinestringToGeomColl (segm, 2); - gaiaSetPoint (ln->Coords, 0, x3, y3); - gaiaSetPoint (ln->Coords, 1, x1, y1); - gaiaGeomCollLength (segm, &length); - gaiaFreeGeomColl (segm); - concave_hull_stats (&concave, length); - - pg = pg->Next; - } - - std_dev = sqrt (concave.quot / concave.count); - -/* creating the Geometry representing the Concave Hull */ - if (dimension_model == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (dimension_model == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else if (dimension_model == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else - result = gaiaAllocGeomColl (); - - count = 0; - pg = first; - while (pg) - { - /* selecting triangles to be inserted */ - rng = pg->Exterior; - if (pg->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, 0, &x, &y, &z); - x1 = x; - y1 = y; - gaiaGetPointXYZ (rng->Coords, 1, &x, &y, &z); - x2 = x; - y2 = y; - gaiaGetPointXYZ (rng->Coords, 2, &x, &y, &z); - x3 = x; - y3 = y; - } - else if (pg->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, 0, &x, &y, &m); - x1 = x; - y1 = y; - gaiaGetPointXYM (rng->Coords, 1, &x, &y, &m); - x2 = x; - y2 = y; - gaiaGetPointXYM (rng->Coords, 2, &x, &y, &m); - x3 = x; - y3 = y; - } - else if (pg->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, 0, &x, &y, &z, &m); - x1 = x; - y1 = y; - gaiaGetPointXYZM (rng->Coords, 1, &x, &y, &z, &m); - x2 = x; - y2 = y; - gaiaGetPointXYZM (rng->Coords, 2, &x, &y, &z, &m); - x3 = x; - y3 = y; - } - else - { - gaiaGetPoint (rng->Coords, 0, &x, &y); - x1 = x; - y1 = y; - gaiaGetPoint (rng->Coords, 1, &x, &y); - x2 = x; - y2 = y; - gaiaGetPoint (rng->Coords, 2, &x, &y); - x3 = x; - y3 = y; - } - - if (concave_hull_filter (x1, y1, x2, y2, x3, y3, std_dev * factor)) - { - /* inserting this triangle into the Concave Hull */ - pg_out = gaiaAddPolygonToGeomColl (result, 4, 0); - rng_out = pg_out->Exterior; - if (pg->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, 0, &x, &y, &z); - gaiaSetPointXYZ (rng_out->Coords, 0, x, y, z); - gaiaGetPointXYZ (rng->Coords, 1, &x, &y, &z); - gaiaSetPointXYZ (rng_out->Coords, 1, x, y, z); - gaiaGetPointXYZ (rng->Coords, 2, &x, &y, &z); - gaiaSetPointXYZ (rng_out->Coords, 2, x, y, z); - gaiaGetPointXYZ (rng->Coords, 3, &x, &y, &z); - gaiaSetPointXYZ (rng_out->Coords, 3, x, y, z); - } - else if (pg->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, 0, &x, &y, &m); - gaiaSetPointXYM (rng_out->Coords, 0, x, y, m); - gaiaGetPointXYM (rng->Coords, 1, &x, &y, &m); - gaiaSetPointXYM (rng_out->Coords, 1, x, y, m); - gaiaGetPointXYM (rng->Coords, 2, &x, &y, &m); - gaiaSetPointXYM (rng_out->Coords, 2, x, y, m); - gaiaGetPointXYM (rng->Coords, 3, &x, &y, &m); - gaiaSetPointXYM (rng_out->Coords, 3, x, y, m); - } - else if (pg->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, 0, &x, &y, &z, &m); - gaiaSetPointXYZM (rng_out->Coords, 0, x, y, z, m); - gaiaGetPointXYZM (rng->Coords, 1, &x, &y, &z, &m); - gaiaSetPointXYZM (rng_out->Coords, 1, x, y, z, m); - gaiaGetPointXYZM (rng->Coords, 2, &x, &y, &z, &m); - gaiaSetPointXYZM (rng_out->Coords, 2, x, y, z, m); - gaiaGetPointXYZM (rng->Coords, 3, &x, &y, &z, &m); - gaiaSetPointXYZM (rng_out->Coords, 3, x, y, z, m); - } - else - { - gaiaGetPoint (rng->Coords, 0, &x, &y); - gaiaSetPoint (rng_out->Coords, 0, x, y); - gaiaGetPoint (rng->Coords, 1, &x, &y); - gaiaSetPoint (rng_out->Coords, 1, x, y); - gaiaGetPoint (rng->Coords, 2, &x, &y); - gaiaSetPoint (rng_out->Coords, 2, x, y); - gaiaGetPoint (rng->Coords, 3, &x, &y); - gaiaSetPoint (rng_out->Coords, 3, x, y); - } - count++; - } - - pg = pg->Next; - } - - if (count == 0) - { - gaiaFreeGeomColl (result); - return NULL; - } - -/* merging all triangles into the Concave Hull */ - segm = result; - result = gaiaUnaryUnion (segm); - gaiaFreeGeomColl (segm); - if (!result) - return NULL; - if (result->FirstPolygon == NULL) - { - gaiaFreeGeomColl (result); - return NULL; - } - if (allow_holes) - return result; - -/* suppressing any interior hole */ - segm = result; - result = concave_hull_no_holes (segm); - gaiaFreeGeomColl (segm); - if (!result) - return NULL; - if (result->FirstPolygon == NULL) - { - gaiaFreeGeomColl (result); - return NULL; - } - return result; -} - -#endif /* end GEOS experimental features */ diff --git a/src/spatialite/src/gaiageo/gg_wkb.c b/src/spatialite/src/gaiageo/gg_wkb.c deleted file mode 100644 index df2e518..0000000 --- a/src/spatialite/src/gaiageo/gg_wkb.c +++ /dev/null @@ -1,6347 +0,0 @@ -/* - - gg_wkb.c -- Gaia common support for WKB encoded geometries - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include - -#include - -static void -ParseWkbPoint (gaiaGeomCollPtr geo) -{ -/* decodes a POINT from WKB */ - double x; - double y; - if (geo->size < geo->offset + 16) - return; - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - geo->offset += 16; - gaiaAddPointToGeomColl (geo, x, y); -} - -static void -ParseWkbPointZ (gaiaGeomCollPtr geo) -{ -/* decodes a POINTZ from WKB */ - double x; - double y; - double z; - if (geo->size < geo->offset + 24) - return; - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, - geo->endian_arch); - geo->offset += 24; - gaiaAddPointToGeomCollXYZ (geo, x, y, z); -} - -static void -ParseWkbPointM (gaiaGeomCollPtr geo) -{ -/* decodes a POINTM from WKB */ - double x; - double y; - double m; - if (geo->size < geo->offset + 24) - return; - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - m = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, - geo->endian_arch); - geo->offset += 24; - gaiaAddPointToGeomCollXYM (geo, x, y, m); -} - -static void -ParseWkbPointZM (gaiaGeomCollPtr geo) -{ -/* decodes a POINTZM from WKB */ - double x; - double y; - double z; - double m; - if (geo->size < geo->offset + 32) - return; - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, - geo->endian_arch); - m = gaiaImport64 (geo->blob + (geo->offset + 24), geo->endian, - geo->endian_arch); - geo->offset += 32; - gaiaAddPointToGeomCollXYZM (geo, x, y, z, m); -} - -static void -ParseWkbLine (gaiaGeomCollPtr geo) -{ -/* decodes a LINESTRING from WKB */ - int points; - int iv; - double x; - double y; - gaiaLinestringPtr line; - if (geo->size < geo->offset + 4) - return; - points = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (16 * points)) - return; - line = gaiaAddLinestringToGeomColl (geo, points); - for (iv = 0; iv < points; iv++) - { - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - gaiaSetPoint (line->Coords, iv, x, y); - geo->offset += 16; - } -} - -static void -ParseWkbLineZ (gaiaGeomCollPtr geo) -{ -/* decodes a LINESTRINGZ from WKB */ - int points; - int iv; - double x; - double y; - double z; - gaiaLinestringPtr line; - if (geo->size < geo->offset + 4) - return; - points = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (24 * points)) - return; - line = gaiaAddLinestringToGeomColl (geo, points); - for (iv = 0; iv < points; iv++) - { - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, - geo->endian_arch); - gaiaSetPointXYZ (line->Coords, iv, x, y, z); - geo->offset += 24; - } -} - -static void -ParseWkbLineM (gaiaGeomCollPtr geo) -{ -/* decodes a LINESTRINGM from WKB */ - int points; - int iv; - double x; - double y; - double m; - gaiaLinestringPtr line; - if (geo->size < geo->offset + 4) - return; - points = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (24 * points)) - return; - line = gaiaAddLinestringToGeomColl (geo, points); - for (iv = 0; iv < points; iv++) - { - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - m = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, - geo->endian_arch); - gaiaSetPointXYM (line->Coords, iv, x, y, m); - geo->offset += 24; - } -} - -static void -ParseWkbLineZM (gaiaGeomCollPtr geo) -{ -/* decodes a LINESTRINGZM from WKB */ - int points; - int iv; - double x; - double y; - double z; - double m; - gaiaLinestringPtr line; - if (geo->size < geo->offset + 4) - return; - points = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (32 * points)) - return; - line = gaiaAddLinestringToGeomColl (geo, points); - for (iv = 0; iv < points; iv++) - { - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, - geo->endian_arch); - m = gaiaImport64 (geo->blob + (geo->offset + 24), geo->endian, - geo->endian_arch); - gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); - geo->offset += 32; - } -} - -static void -ParseWkbPolygon (gaiaGeomCollPtr geo) -{ -/* decodes a POLYGON from WKB */ - int rings; - int nverts; - int iv; - int ib; - double x; - double y; - gaiaPolygonPtr polyg = NULL; - gaiaRingPtr ring; - if (geo->size < geo->offset + 4) - return; - rings = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - for (ib = 0; ib < rings; ib++) - { - if (geo->size < geo->offset + 4) - return; - nverts = - gaiaImport32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (16 * nverts)) - return; - if (ib == 0) - { - polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); - ring = polyg->Exterior; - } - else - ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); - for (iv = 0; iv < nverts; iv++) - { - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - geo->offset += 16; - gaiaSetPoint (ring->Coords, iv, x, y); - } - } -} - -static void -ParseWkbPolygonZ (gaiaGeomCollPtr geo) -{ -/* decodes a POLYGONZ from WKB */ - int rings; - int nverts; - int iv; - int ib; - double x; - double y; - double z; - gaiaPolygonPtr polyg = NULL; - gaiaRingPtr ring; - if (geo->size < geo->offset + 4) - return; - rings = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - for (ib = 0; ib < rings; ib++) - { - if (geo->size < geo->offset + 4) - return; - nverts = - gaiaImport32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (24 * nverts)) - return; - if (ib == 0) - { - polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); - ring = polyg->Exterior; - } - else - ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); - for (iv = 0; iv < nverts; iv++) - { - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, - geo->endian_arch); - geo->offset += 24; - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - } - } -} - -static void -ParseWkbPolygonM (gaiaGeomCollPtr geo) -{ -/* decodes a POLYGONM from WKB */ - int rings; - int nverts; - int iv; - int ib; - double x; - double y; - double m; - gaiaPolygonPtr polyg = NULL; - gaiaRingPtr ring; - if (geo->size < geo->offset + 4) - return; - rings = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - for (ib = 0; ib < rings; ib++) - { - if (geo->size < geo->offset + 4) - return; - nverts = - gaiaImport32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (24 * nverts)) - return; - if (ib == 0) - { - polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); - ring = polyg->Exterior; - } - else - ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); - for (iv = 0; iv < nverts; iv++) - { - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - m = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, - geo->endian_arch); - geo->offset += 24; - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - } - } -} - -static void -ParseWkbPolygonZM (gaiaGeomCollPtr geo) -{ -/* decodes a POLYGONZM from WKB */ - int rings; - int nverts; - int iv; - int ib; - double x; - double y; - double z; - double m; - gaiaPolygonPtr polyg = NULL; - gaiaRingPtr ring; - if (geo->size < geo->offset + 4) - return; - rings = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - for (ib = 0; ib < rings; ib++) - { - if (geo->size < geo->offset + 4) - return; - nverts = - gaiaImport32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (32 * nverts)) - return; - if (ib == 0) - { - polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); - ring = polyg->Exterior; - } - else - ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); - for (iv = 0; iv < nverts; iv++) - { - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, - geo->endian_arch); - m = gaiaImport64 (geo->blob + (geo->offset + 24), geo->endian, - geo->endian_arch); - geo->offset += 32; - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - } - } -} - -static void -ParseCompressedWkbLine (gaiaGeomCollPtr geo) -{ -/* decodes a COMPRESSED LINESTRING from WKB */ - int points; - int iv; - double x; - double y; - double last_x = 0.0; - double last_y = 0.0; - float fx; - float fy; - gaiaLinestringPtr line; - if (geo->size < geo->offset + 4) - return; - points = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (8 * points) + 16) - return; - line = gaiaAddLinestringToGeomColl (geo, points); - for (iv = 0; iv < points; iv++) - { - if (iv == 0 || iv == (points - 1)) - { - /* first and last vertices are uncompressed */ - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - geo->offset += 16; - } - else - { - /* any other intermediate vertex is compressed */ - fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - fy = gaiaImportF32 (geo->blob + (geo->offset + 4), geo->endian, - geo->endian_arch); - x = last_x + fx; - y = last_y + fy; - geo->offset += 8; - } - gaiaSetPoint (line->Coords, iv, x, y); - last_x = x; - last_y = y; - } -} - -static void -ParseCompressedWkbLineZ (gaiaGeomCollPtr geo) -{ -/* decodes a COMPRESSED LINESTRINGZ from WKB */ - int points; - int iv; - double x; - double y; - double z; - double last_x = 0.0; - double last_y = 0.0; - double last_z = 0.0; - float fx; - float fy; - float fz; - gaiaLinestringPtr line; - if (geo->size < geo->offset + 4) - return; - points = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (12 * points) + 24) - return; - line = gaiaAddLinestringToGeomColl (geo, points); - for (iv = 0; iv < points; iv++) - { - if (iv == 0 || iv == (points - 1)) - { - /* first and last vertices are uncompressed */ - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, - geo->endian_arch); - geo->offset += 24; - } - else - { - /* any other intermediate vertex is compressed */ - fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - fy = gaiaImportF32 (geo->blob + (geo->offset + 4), geo->endian, - geo->endian_arch); - fz = gaiaImportF32 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - x = last_x + fx; - y = last_y + fy; - z = last_z + fz; - geo->offset += 12; - } - gaiaSetPointXYZ (line->Coords, iv, x, y, z); - last_x = x; - last_y = y; - last_z = z; - } -} - -static void -ParseCompressedWkbLineM (gaiaGeomCollPtr geo) -{ -/* decodes a COMPRESSED LINESTRINGM from WKB */ - int points; - int iv; - double x; - double y; - double m; - double last_x = 0.0; - double last_y = 0.0; - float fx; - float fy; - gaiaLinestringPtr line; - if (geo->size < geo->offset + 4) - return; - points = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (16 * points) + 16) - return; - line = gaiaAddLinestringToGeomColl (geo, points); - for (iv = 0; iv < points; iv++) - { - if (iv == 0 || iv == (points - 1)) - { - /* first and last vertices are uncompressed */ - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - m = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, - geo->endian_arch); - geo->offset += 24; - } - else - { - /* any other intermediate vertex is compressed */ - fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - fy = gaiaImportF32 (geo->blob + (geo->offset + 4), geo->endian, - geo->endian_arch); - m = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - x = last_x + fx; - y = last_y + fy; - geo->offset += 16; - } - gaiaSetPointXYM (line->Coords, iv, x, y, m); - last_x = x; - last_y = y; - } -} - -static void -ParseCompressedWkbLineZM (gaiaGeomCollPtr geo) -{ -/* decodes a COMPRESSED LINESTRINGZM from WKB */ - int points; - int iv; - double x; - double y; - double z; - double m; - double last_x = 0.0; - double last_y = 0.0; - double last_z = 0.0; - float fx; - float fy; - float fz; - gaiaLinestringPtr line; - if (geo->size < geo->offset + 4) - return; - points = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (20 * points) + 24) - return; - line = gaiaAddLinestringToGeomColl (geo, points); - for (iv = 0; iv < points; iv++) - { - if (iv == 0 || iv == (points - 1)) - { - /* first and last vertices are uncompressed */ - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, - geo->endian_arch); - m = gaiaImport64 (geo->blob + (geo->offset + 24), geo->endian, - geo->endian_arch); - geo->offset += 32; - } - else - { - /* any other intermediate vertex is compressed */ - fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - fy = gaiaImportF32 (geo->blob + (geo->offset + 4), geo->endian, - geo->endian_arch); - fz = gaiaImportF32 (geo->blob + (geo->offset + 8), geo->endian, - geo->endian_arch); - m = gaiaImport64 (geo->blob + (geo->offset + 12), geo->endian, - geo->endian_arch); - x = last_x + fx; - y = last_y + fy; - z = last_z + fz; - geo->offset += 20; - } - gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); - last_x = x; - last_y = y; - last_z = z; - } -} - -static void -ParseCompressedWkbPolygon (gaiaGeomCollPtr geo) -{ -/* decodes a COMPRESSED POLYGON from WKB */ - int rings; - int nverts; - int iv; - int ib; - double x; - double y; - double last_x = 0.0; - double last_y = 0.0; - float fx; - float fy; - gaiaPolygonPtr polyg = NULL; - gaiaRingPtr ring; - if (geo->size < geo->offset + 4) - return; - rings = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - for (ib = 0; ib < rings; ib++) - { - if (geo->size < geo->offset + 4) - return; - nverts = - gaiaImport32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (8 * nverts) + 16) - return; - if (ib == 0) - { - polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); - ring = polyg->Exterior; - } - else - ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); - for (iv = 0; iv < nverts; iv++) - { - if (iv == 0 || iv == (nverts - 1)) - { - /* first and last vertices are uncompressed */ - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), - geo->endian, geo->endian_arch); - geo->offset += 16; - } - else - { - /* any other intermediate vertex is compressed */ - fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - fy = gaiaImportF32 (geo->blob + (geo->offset + 4), - geo->endian, geo->endian_arch); - x = last_x + fx; - y = last_y + fy; - geo->offset += 8; - } - gaiaSetPoint (ring->Coords, iv, x, y); - last_x = x; - last_y = y; - } - } -} - -static void -ParseCompressedWkbPolygonZ (gaiaGeomCollPtr geo) -{ -/* decodes a COMPRESSED POLYGONZ from WKB */ - int rings; - int nverts; - int iv; - int ib; - double x; - double y; - double z; - double last_x = 0.0; - double last_y = 0.0; - double last_z = 0.0; - float fx; - float fy; - float fz; - gaiaPolygonPtr polyg = NULL; - gaiaRingPtr ring; - if (geo->size < geo->offset + 4) - return; - rings = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - for (ib = 0; ib < rings; ib++) - { - if (geo->size < geo->offset + 4) - return; - nverts = - gaiaImport32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (12 * nverts) + 24) - return; - if (ib == 0) - { - polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); - ring = polyg->Exterior; - } - else - ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); - for (iv = 0; iv < nverts; iv++) - { - if (iv == 0 || iv == (nverts - 1)) - { - /* first and last vertices are uncompressed */ - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), - geo->endian, geo->endian_arch); - z = gaiaImport64 (geo->blob + (geo->offset + 16), - geo->endian, geo->endian_arch); - geo->offset += 24; - } - else - { - /* any other intermediate vertex is compressed */ - fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - fy = gaiaImportF32 (geo->blob + (geo->offset + 4), - geo->endian, geo->endian_arch); - fz = gaiaImportF32 (geo->blob + (geo->offset + 8), - geo->endian, geo->endian_arch); - x = last_x + fx; - y = last_y + fy; - z = last_z + fz; - geo->offset += 12; - } - gaiaSetPointXYZ (ring->Coords, iv, x, y, z); - last_x = x; - last_y = y; - last_z = z; - } - } -} - -static void -ParseCompressedWkbPolygonM (gaiaGeomCollPtr geo) -{ -/* decodes a COMPRESSED POLYGONM from WKB */ - int rings; - int nverts; - int iv; - int ib; - double x; - double y; - double m; - double last_x = 0.0; - double last_y = 0.0; - float fx; - float fy; - gaiaPolygonPtr polyg = NULL; - gaiaRingPtr ring; - if (geo->size < geo->offset + 4) - return; - rings = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - for (ib = 0; ib < rings; ib++) - { - if (geo->size < geo->offset + 4) - return; - nverts = - gaiaImport32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (16 * nverts) + 16) - return; - if (ib == 0) - { - polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); - ring = polyg->Exterior; - } - else - ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); - for (iv = 0; iv < nverts; iv++) - { - if (iv == 0 || iv == (nverts - 1)) - { - /* first and last vertices are uncompressed */ - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), - geo->endian, geo->endian_arch); - m = gaiaImport64 (geo->blob + (geo->offset + 16), - geo->endian, geo->endian_arch); - geo->offset += 24; - } - else - { - /* any other intermediate vertex is compressed */ - fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - fy = gaiaImportF32 (geo->blob + (geo->offset + 4), - geo->endian, geo->endian_arch); - m = gaiaImport64 (geo->blob + (geo->offset + 8), - geo->endian, geo->endian_arch); - x = last_x + fx; - y = last_y + fy; - geo->offset += 16; - } - gaiaSetPointXYM (ring->Coords, iv, x, y, m); - last_x = x; - last_y = y; - } - } -} - -static void -ParseCompressedWkbPolygonZM (gaiaGeomCollPtr geo) -{ -/* decodes a COMPRESSED POLYGONZM from WKB */ - int rings; - int nverts; - int iv; - int ib; - double x; - double y; - double z; - double m; - double last_x = 0.0; - double last_y = 0.0; - double last_z = 0.0; - float fx; - float fy; - float fz; - gaiaPolygonPtr polyg = NULL; - gaiaRingPtr ring; - if (geo->size < geo->offset + 4) - return; - rings = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - for (ib = 0; ib < rings; ib++) - { - if (geo->size < geo->offset + 4) - return; - nverts = - gaiaImport32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - geo->offset += 4; - if (geo->size < geo->offset + (20 * nverts) + 24) - return; - if (ib == 0) - { - polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); - ring = polyg->Exterior; - } - else - ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); - for (iv = 0; iv < nverts; iv++) - { - if (iv == 0 || iv == (nverts - 1)) - { - /* first and last vertices are uncompressed */ - x = gaiaImport64 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - y = gaiaImport64 (geo->blob + (geo->offset + 8), - geo->endian, geo->endian_arch); - z = gaiaImport64 (geo->blob + (geo->offset + 16), - geo->endian, geo->endian_arch); - m = gaiaImport64 (geo->blob + (geo->offset + 24), - geo->endian, geo->endian_arch); - geo->offset += 32; - } - else - { - /* any other intermediate vertex is compressed */ - fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, - geo->endian_arch); - fy = gaiaImportF32 (geo->blob + (geo->offset + 4), - geo->endian, geo->endian_arch); - fz = gaiaImportF32 (geo->blob + (geo->offset + 8), - geo->endian, geo->endian_arch); - m = gaiaImport64 (geo->blob + (geo->offset + 12), - geo->endian, geo->endian_arch); - x = last_x + fx; - y = last_y + fy; - z = last_z + fz; - geo->offset += 20; - } - gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); - last_x = x; - last_y = y; - last_z = z; - } - } -} - -static void -ParseWkbGeometry (gaiaGeomCollPtr geo) -{ -/* decodes a MULTIxx or GEOMETRYCOLLECTION from SpatiaLite BLOB */ - int entities; - int type; - int ie; - if (geo->size < geo->offset + 4) - return; - entities = - gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); - geo->offset += 4; - for (ie = 0; ie < entities; ie++) - { - if (geo->size < geo->offset + 5) - return; - type = - gaiaImport32 (geo->blob + geo->offset + 1, geo->endian, - geo->endian_arch); - geo->offset += 5; - switch (type) - { - case GAIA_POINT: - ParseWkbPoint (geo); - break; - case GAIA_POINTZ: - case GAIA_GEOSWKB_POINTZ: - ParseWkbPointZ (geo); - break; - case GAIA_POINTM: - ParseWkbPointM (geo); - break; - case GAIA_POINTZM: - ParseWkbPointZM (geo); - break; - case GAIA_LINESTRING: - ParseWkbLine (geo); - break; - case GAIA_LINESTRINGZ: - case GAIA_GEOSWKB_LINESTRINGZ: - ParseWkbLineZ (geo); - break; - case GAIA_LINESTRINGM: - ParseWkbLineM (geo); - break; - case GAIA_LINESTRINGZM: - ParseWkbLineZM (geo); - break; - case GAIA_POLYGON: - ParseWkbPolygon (geo); - break; - case GAIA_POLYGONZ: - case GAIA_GEOSWKB_POLYGONZ: - ParseWkbPolygonZ (geo); - break; - case GAIA_POLYGONM: - ParseWkbPolygonM (geo); - break; - case GAIA_POLYGONZM: - ParseWkbPolygonZM (geo); - break; - case GAIA_COMPRESSED_LINESTRING: - ParseCompressedWkbLine (geo); - break; - case GAIA_COMPRESSED_LINESTRINGZ: - ParseCompressedWkbLineZ (geo); - break; - case GAIA_COMPRESSED_LINESTRINGM: - ParseCompressedWkbLineM (geo); - break; - case GAIA_COMPRESSED_LINESTRINGZM: - ParseCompressedWkbLineZM (geo); - break; - case GAIA_COMPRESSED_POLYGON: - ParseCompressedWkbPolygon (geo); - break; - case GAIA_COMPRESSED_POLYGONZ: - ParseCompressedWkbPolygonZ (geo); - break; - case GAIA_COMPRESSED_POLYGONM: - ParseCompressedWkbPolygonM (geo); - break; - case GAIA_COMPRESSED_POLYGONZM: - ParseCompressedWkbPolygonZM (geo); - break; - default: - break; - }; - } -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaFromSpatiaLiteBlobWkb (const unsigned char *blob, unsigned int size) -{ -/* decoding from SpatiaLite BLOB to GEOMETRY */ - int type; - int little_endian; - int endian_arch = gaiaEndianArch (); - gaiaGeomCollPtr geo = NULL; - if (size < 45) - return NULL; /* cannot be an internal BLOB WKB geometry */ - if (*(blob + 0) != GAIA_MARK_START) - return NULL; /* failed to recognize START signature */ - if (*(blob + (size - 1)) != GAIA_MARK_END) - return NULL; /* failed to recognize END signature */ - if (*(blob + 38) != GAIA_MARK_MBR) - return NULL; /* failed to recognize MBR signature */ - if (*(blob + 1) == GAIA_LITTLE_ENDIAN) - little_endian = 1; - else if (*(blob + 1) == GAIA_BIG_ENDIAN) - little_endian = 0; - else - return NULL; /* unknown encoding; nor litte-endian neither big-endian */ - type = gaiaImport32 (blob + 39, little_endian, endian_arch); - geo = gaiaAllocGeomColl (); - geo->Srid = gaiaImport32 (blob + 2, little_endian, endian_arch); - geo->endian_arch = (char) endian_arch; - geo->endian = (char) little_endian; - geo->blob = blob; - geo->size = size; - geo->offset = 43; - switch (type) - { - /* setting up DimensionModel */ - case GAIA_POINTZ: - case GAIA_LINESTRINGZ: - case GAIA_POLYGONZ: - case GAIA_MULTIPOINTZ: - case GAIA_MULTILINESTRINGZ: - case GAIA_MULTIPOLYGONZ: - case GAIA_GEOMETRYCOLLECTIONZ: - case GAIA_COMPRESSED_LINESTRINGZ: - case GAIA_COMPRESSED_POLYGONZ: - geo->DimensionModel = GAIA_XY_Z; - break; - case GAIA_POINTM: - case GAIA_LINESTRINGM: - case GAIA_POLYGONM: - case GAIA_MULTIPOINTM: - case GAIA_MULTILINESTRINGM: - case GAIA_MULTIPOLYGONM: - case GAIA_GEOMETRYCOLLECTIONM: - case GAIA_COMPRESSED_LINESTRINGM: - case GAIA_COMPRESSED_POLYGONM: - geo->DimensionModel = GAIA_XY_M; - break; - case GAIA_POINTZM: - case GAIA_LINESTRINGZM: - case GAIA_POLYGONZM: - case GAIA_MULTIPOINTZM: - case GAIA_MULTILINESTRINGZM: - case GAIA_MULTIPOLYGONZM: - case GAIA_GEOMETRYCOLLECTIONZM: - case GAIA_COMPRESSED_LINESTRINGZM: - case GAIA_COMPRESSED_POLYGONZM: - geo->DimensionModel = GAIA_XY_Z_M; - break; - default: - geo->DimensionModel = GAIA_XY; - break; - }; - switch (type) - { - /* parsing elementary geometries */ - case GAIA_POINT: - ParseWkbPoint (geo); - break; - case GAIA_POINTZ: - ParseWkbPointZ (geo); - break; - case GAIA_POINTM: - ParseWkbPointM (geo); - break; - case GAIA_POINTZM: - ParseWkbPointZM (geo); - break; - case GAIA_LINESTRING: - ParseWkbLine (geo); - break; - case GAIA_LINESTRINGZ: - ParseWkbLineZ (geo); - break; - case GAIA_LINESTRINGM: - ParseWkbLineM (geo); - break; - case GAIA_LINESTRINGZM: - ParseWkbLineZM (geo); - break; - case GAIA_POLYGON: - ParseWkbPolygon (geo); - break; - case GAIA_POLYGONZ: - ParseWkbPolygonZ (geo); - break; - case GAIA_POLYGONM: - ParseWkbPolygonM (geo); - break; - case GAIA_POLYGONZM: - ParseWkbPolygonZM (geo); - break; - case GAIA_COMPRESSED_LINESTRING: - ParseCompressedWkbLine (geo); - break; - case GAIA_COMPRESSED_LINESTRINGZ: - ParseCompressedWkbLineZ (geo); - break; - case GAIA_COMPRESSED_LINESTRINGM: - ParseCompressedWkbLineM (geo); - break; - case GAIA_COMPRESSED_LINESTRINGZM: - ParseCompressedWkbLineZM (geo); - break; - case GAIA_COMPRESSED_POLYGON: - ParseCompressedWkbPolygon (geo); - break; - case GAIA_COMPRESSED_POLYGONZ: - ParseCompressedWkbPolygonZ (geo); - break; - case GAIA_COMPRESSED_POLYGONM: - ParseCompressedWkbPolygonM (geo); - break; - case GAIA_COMPRESSED_POLYGONZM: - ParseCompressedWkbPolygonZM (geo); - break; - case GAIA_MULTIPOINT: - case GAIA_MULTIPOINTZ: - case GAIA_MULTIPOINTM: - case GAIA_MULTIPOINTZM: - case GAIA_MULTILINESTRING: - case GAIA_MULTILINESTRINGZ: - case GAIA_MULTILINESTRINGM: - case GAIA_MULTILINESTRINGZM: - case GAIA_MULTIPOLYGON: - case GAIA_MULTIPOLYGONZ: - case GAIA_MULTIPOLYGONM: - case GAIA_MULTIPOLYGONZM: - case GAIA_GEOMETRYCOLLECTION: - case GAIA_GEOMETRYCOLLECTIONZ: - case GAIA_GEOMETRYCOLLECTIONM: - case GAIA_GEOMETRYCOLLECTIONZM: - ParseWkbGeometry (geo); - break; - default: - break; - }; - geo->MinX = gaiaImport64 (blob + 6, little_endian, endian_arch); - geo->MinY = gaiaImport64 (blob + 14, little_endian, endian_arch); - geo->MaxX = gaiaImport64 (blob + 22, little_endian, endian_arch); - geo->MaxY = gaiaImport64 (blob + 30, little_endian, endian_arch); - switch (type) - { - /* setting up DeclaredType */ - case GAIA_POINT: - case GAIA_POINTZ: - case GAIA_POINTM: - case GAIA_POINTZM: - geo->DeclaredType = GAIA_POINT; - break; - case GAIA_LINESTRING: - case GAIA_LINESTRINGZ: - case GAIA_LINESTRINGM: - case GAIA_LINESTRINGZM: - case GAIA_COMPRESSED_LINESTRING: - case GAIA_COMPRESSED_LINESTRINGZ: - case GAIA_COMPRESSED_LINESTRINGM: - case GAIA_COMPRESSED_LINESTRINGZM: - geo->DeclaredType = GAIA_LINESTRING; - break; - case GAIA_POLYGON: - case GAIA_POLYGONZ: - case GAIA_POLYGONM: - case GAIA_POLYGONZM: - case GAIA_COMPRESSED_POLYGON: - case GAIA_COMPRESSED_POLYGONZ: - case GAIA_COMPRESSED_POLYGONM: - case GAIA_COMPRESSED_POLYGONZM: - geo->DeclaredType = GAIA_POLYGON; - break; - case GAIA_MULTIPOINT: - case GAIA_MULTIPOINTZ: - case GAIA_MULTIPOINTM: - case GAIA_MULTIPOINTZM: - geo->DeclaredType = GAIA_MULTIPOINT; - break; - case GAIA_MULTILINESTRING: - case GAIA_MULTILINESTRINGZ: - case GAIA_MULTILINESTRINGM: - case GAIA_MULTILINESTRINGZM: - geo->DeclaredType = GAIA_MULTILINESTRING; - break; - case GAIA_MULTIPOLYGON: - case GAIA_MULTIPOLYGONZ: - case GAIA_MULTIPOLYGONM: - case GAIA_MULTIPOLYGONZM: - geo->DeclaredType = GAIA_MULTIPOLYGON; - break; - case GAIA_GEOMETRYCOLLECTION: - case GAIA_GEOMETRYCOLLECTIONZ: - case GAIA_GEOMETRYCOLLECTIONM: - case GAIA_GEOMETRYCOLLECTIONZM: - geo->DeclaredType = GAIA_GEOMETRYCOLLECTION; - break; - default: - geo->DeclaredType = GAIA_UNKNOWN; - break; - }; - return geo; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaFromSpatiaLiteBlobMbr (const unsigned char *blob, unsigned int size) -{ -/* decoding from SpatiaLite BLOB to GEOMETRY [MBR only] */ - int little_endian; - int endian_arch = gaiaEndianArch (); - double minx; - double miny; - double maxx; - double maxy; - gaiaGeomCollPtr geo = NULL; - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - if (size < 45) - return NULL; /* cannot be an internal BLOB WKB geometry */ - if (*(blob + 0) != GAIA_MARK_START) - return NULL; /* failed to recognize START signature */ - if (*(blob + (size - 1)) != GAIA_MARK_END) - return NULL; /* failed to recognize END signature */ - if (*(blob + 38) != GAIA_MARK_MBR) - return NULL; /* failed to recognize MBR signature */ - if (*(blob + 1) == GAIA_LITTLE_ENDIAN) - little_endian = 1; - else if (*(blob + 1) == GAIA_BIG_ENDIAN) - little_endian = 0; - else - return NULL; /* unknown encoding; nor litte-endian neither big-endian */ - geo = gaiaAllocGeomColl (); - polyg = gaiaAddPolygonToGeomColl (geo, 5, 0); - ring = polyg->Exterior; - minx = gaiaImport64 (blob + 6, little_endian, endian_arch); - miny = gaiaImport64 (blob + 14, little_endian, endian_arch); - maxx = gaiaImport64 (blob + 22, little_endian, endian_arch); - maxy = gaiaImport64 (blob + 30, little_endian, endian_arch); - gaiaSetPoint (ring->Coords, 0, minx, miny); /* vertex # 1 */ - gaiaSetPoint (ring->Coords, 1, maxx, miny); /* vertex # 2 */ - gaiaSetPoint (ring->Coords, 2, maxx, maxy); /* vertex # 3 */ - gaiaSetPoint (ring->Coords, 3, minx, maxy); /* vertex # 4 */ - gaiaSetPoint (ring->Coords, 4, minx, miny); /* vertex # 5 [same as vertex # 1 to close the polygon] */ - return geo; -} - -GAIAGEO_DECLARE void -gaiaToSpatiaLiteBlobWkb (gaiaGeomCollPtr geom, unsigned char **result, - int *size) -{ -/* builds the SpatiaLite BLOB representation for this GEOMETRY */ - int ib; - int iv; - double x; - double y; - double z = 0.0; - double m = 0.0; - int entities = 0; - int n_points = 0; - int n_linestrings = 0; - int n_polygons = 0; - int type; - unsigned char *ptr; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - gaiaPointPtr point = NULL; - gaiaLinestringPtr line = NULL; - gaiaPolygonPtr polyg = NULL; - int endian_arch = gaiaEndianArch (); - gaiaMbrGeometry (geom); -/* how many entities, and of what kind, do we have ? */ - pt = geom->FirstPoint; - while (pt) - { - point = pt; - entities++; - n_points++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - line = ln; - entities++; - n_linestrings++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - polyg = pg; - entities++; - n_polygons++; - pg = pg->Next; - } - *size = 0; - *result = NULL; - if (n_points == 0 && n_polygons == 0 && n_linestrings == 0) - return; -/* ok, we can determine the geometry class */ - if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTIPOINT) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTIPOINTZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTIPOINTM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTIPOINTZM; - else - type = GAIA_MULTIPOINT; - } - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_POINTZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_POINTM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_POINTZM; - else - type = GAIA_POINT; - } - } - else if (n_points > 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTIPOINTZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTIPOINTM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTIPOINTZM; - else - type = GAIA_MULTIPOINT; - } - } - else if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTILINESTRING) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTILINESTRINGZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTILINESTRINGM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTILINESTRINGZM; - else - type = GAIA_MULTILINESTRING; - } - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_LINESTRINGZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_LINESTRINGM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_LINESTRINGZM; - else - type = GAIA_LINESTRING; - } - } - else if (n_points == 0 && n_linestrings > 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTILINESTRINGZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTILINESTRINGM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTILINESTRINGZM; - else - type = GAIA_MULTILINESTRING; - } - } - else if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) - { - if (geom->DeclaredType == GAIA_MULTIPOLYGON) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTIPOLYGONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTIPOLYGONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTIPOLYGONZM; - else - type = GAIA_MULTIPOLYGON; - } - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_POLYGONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_POLYGONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_POLYGONZM; - else - type = GAIA_POLYGON; - } - } - else if (n_points == 0 && n_linestrings == 0 && n_polygons > 1) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTIPOLYGONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTIPOLYGONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTIPOLYGONZM; - else - type = GAIA_MULTIPOLYGON; - } - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } -/* and now we compute the size of BLOB */ - *size = 44; /* header size */ - switch (type) - { - case GAIA_POINT: - *size += (sizeof (double) * 2); /* [x,y] coords */ - break; - case GAIA_POINTZ: - *size += (sizeof (double) * 3); /* [x,y,z] coords */ - break; - case GAIA_POINTM: - *size += (sizeof (double) * 3); /* [x,y,m] coords */ - break; - case GAIA_POINTZM: - *size += (sizeof (double) * 4); /* [x,y,z,m] coords */ - break; - case GAIA_LINESTRING: - *size += (4 + ((sizeof (double) * 2) * line->Points)); /* # points + [x,y] for each vertex */ - break; - case GAIA_LINESTRINGZ: - *size += (4 + ((sizeof (double) * 3) * line->Points)); /* # points + [x,y,z] for each vertex */ - break; - case GAIA_LINESTRINGM: - *size += (4 + ((sizeof (double) * 3) * line->Points)); /* # points + [x,y,m] for each vertex */ - break; - case GAIA_LINESTRINGZM: - *size += (4 + ((sizeof (double) * 4) * line->Points)); /* # points + [x,y,z,m] for each vertex */ - break; - case GAIA_POLYGON: - rng = polyg->Exterior; - *size += (8 + ((sizeof (double) * 2) * rng->Points)); /* # rings + # points + [x.y] array - exterior ring */ - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - *size += (4 + ((sizeof (double) * 2) * rng->Points)); /* # points + [x,y] array - interior ring */ - } - break; - case GAIA_POLYGONZ: - rng = polyg->Exterior; - *size += (8 + ((sizeof (double) * 3) * rng->Points)); /* # rings + # points + [x,y,z] array - exterior ring */ - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - *size += (4 + ((sizeof (double) * 3) * rng->Points)); /* # points + [x,y,z] array - interior ring */ - } - break; - case GAIA_POLYGONM: - rng = polyg->Exterior; - *size += (8 + ((sizeof (double) * 3) * rng->Points)); /* # rings + # points + [x,y,m] array - exterior ring */ - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - *size += (4 + ((sizeof (double) * 3) * rng->Points)); /* # points + [x,y,m] array - interior ring */ - } - break; - case GAIA_POLYGONZM: - rng = polyg->Exterior; - *size += (8 + ((sizeof (double) * 4) * rng->Points)); /* # rings + # points + [x,y,z,m] array - exterior ring */ - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - *size += (4 + ((sizeof (double) * 4) * rng->Points)); /* # points + [x,y,z,m] array - interior ring */ - } - break; - default: - /* this one is not a simple geometry; should be a MULTIxxxx or a GEOMETRYCOLLECTION */ - *size += 4; /* # entities */ - point = geom->FirstPoint; - while (point) - { - *size += 5; /* entity header */ - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_M) - *size += (sizeof (double) * 3); /* three doubles for each POINT */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - *size += (sizeof (double) * 4); /* four doubles for each POINT */ - else - *size += (sizeof (double) * 2); /* two doubles for each POINT */ - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - *size += 5; /* entity header */ - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_M) - *size += (4 + ((sizeof (double) * 3) * line->Points)); /* # points + [x,y,z] for each vertex */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - *size += (4 + ((sizeof (double) * 4) * line->Points)); /* # points + [x,y,z,m] for each vertex */ - else - *size += (4 + ((sizeof (double) * 2) * line->Points)); /* # points + [x,y] for each vertex */ - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - *size += 5; /* entity header */ - rng = polyg->Exterior; - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_M) - *size += (8 + ((sizeof (double) * 3) * rng->Points)); /* # rings + # points + [x,y,z] array - exterior ring */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - *size += (8 + ((sizeof (double) * 4) * rng->Points)); /* # rings + # points + [x,y,z,m] array - exterior ring */ - else - *size += (8 + ((sizeof (double) * 2) * rng->Points)); /* # rings + # points + [x,y] array - exterior ring */ - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_M) - *size += (4 + ((sizeof (double) * 3) * rng->Points)); /* # points + [x,y,z] array - interior ring */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - *size += (4 + ((sizeof (double) * 4) * rng->Points)); /* # points + [x,y,z,m] array - interior ring */ - else - *size += (4 + ((sizeof (double) * 2) * rng->Points)); /* # points + [x,y] array - interior ring */ - } - polyg = polyg->Next; - } - }; - *result = malloc (*size); - ptr = *result; -/* and finally we build the BLOB */ - switch (type) - { - case GAIA_POINT: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POINT, 1, endian_arch); /* class POINT */ - gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ - *(ptr + 59) = GAIA_MARK_END; /* END signature */ - break; - case GAIA_POINTZ: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POINTZ, 1, endian_arch); /* class POINT XYZ */ - gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 59, point->Z, 1, endian_arch); /* Z */ - *(ptr + 67) = GAIA_MARK_END; /* END signature */ - break; - case GAIA_POINTM: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POINTM, 1, endian_arch); /* class POINT XYM */ - gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 59, point->M, 1, endian_arch); /* M */ - *(ptr + 67) = GAIA_MARK_END; /* END signature */ - break; - case GAIA_POINTZM: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POINTZM, 1, endian_arch); /* class POINT XYZM */ - gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 59, point->Z, 1, endian_arch); /* M */ - gaiaExport64 (ptr + 67, point->M, 1, endian_arch); /* Z */ - *(ptr + 75) = GAIA_MARK_END; /* END signature */ - break; - case GAIA_LINESTRING: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_LINESTRING, 1, endian_arch); /* class LINESTRING */ - gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ - ptr += 47; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPoint (line->Coords, iv, &x, &y); - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - ptr += 16; - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - case GAIA_LINESTRINGZ: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_LINESTRINGZ, 1, endian_arch); /* class LINESTRING XYZ */ - gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ - ptr += 47; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - gaiaExport64 (ptr + 16, z, 1, endian_arch); - ptr += 24; - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - case GAIA_LINESTRINGM: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_LINESTRINGM, 1, endian_arch); /* class LINESTRING XYM */ - gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ - ptr += 47; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - gaiaExport64 (ptr + 16, m, 1, endian_arch); - ptr += 24; - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - case GAIA_LINESTRINGZM: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_LINESTRINGZM, 1, endian_arch); /* class LINESTRING XYZM */ - gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ - ptr += 47; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - gaiaExport64 (ptr + 16, z, 1, endian_arch); - gaiaExport64 (ptr + 24, m, 1, endian_arch); - ptr += 32; - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - case GAIA_POLYGON: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POLYGON, 1, endian_arch); /* class POLYGON */ - gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ - rng = polyg->Exterior; - gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ - ptr += 51; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ - ptr += 16; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ - ptr += 4; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ - ptr += 16; - } - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - case GAIA_POLYGONZ: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POLYGONZ, 1, endian_arch); /* class POLYGON XYZ */ - gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ - rng = polyg->Exterior; - gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ - ptr += 51; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ - gaiaExport64 (ptr + 16, z, 1, endian_arch); /* Z - exterior ring */ - ptr += 24; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ - ptr += 4; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ - gaiaExport64 (ptr + 16, z, 1, endian_arch); /* Z - interior ring */ - ptr += 24; - } - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - case GAIA_POLYGONM: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POLYGONM, 1, endian_arch); /* class POLYGON XYM */ - gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ - rng = polyg->Exterior; - gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ - ptr += 51; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ - gaiaExport64 (ptr + 16, m, 1, endian_arch); /* M - exterior ring */ - ptr += 24; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ - ptr += 4; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ - gaiaExport64 (ptr + 16, m, 1, endian_arch); /* M - interior ring */ - ptr += 24; - } - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - case GAIA_POLYGONZM: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POLYGONZM, 1, endian_arch); /* class POLYGON */ - gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ - rng = polyg->Exterior; - gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ - ptr += 51; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ - gaiaExport64 (ptr + 16, z, 1, endian_arch); /* Z - exterior ring */ - gaiaExport64 (ptr + 24, m, 1, endian_arch); /* M - exterior ring */ - ptr += 32; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ - ptr += 4; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ - gaiaExport64 (ptr + 16, z, 1, endian_arch); /* Z - exterior ring */ - gaiaExport64 (ptr + 24, m, 1, endian_arch); /* M - exterior ring */ - ptr += 32; - } - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - default: - /* this one is a MULTIxxxx or a GEOMETRYCOLLECTION - building the main header */ - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, type, 1, endian_arch); /* geometric class */ - gaiaExport32 (ptr + 43, entities, 1, endian_arch); /* # entities */ - ptr += 47; - point = geom->FirstPoint; - while (point) - { - *ptr = GAIA_MARK_ENTITY; /* ENTITY signature */ - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaExport32 (ptr + 1, GAIA_POINTZ, 1, endian_arch); /* class POINT XYZ */ - gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 21, point->Z, 1, endian_arch); /* Z */ - ptr += 29; - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaExport32 (ptr + 1, GAIA_POINTM, 1, endian_arch); /* class POINT XYM */ - gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 21, point->M, 1, endian_arch); /* M */ - ptr += 29; - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaExport32 (ptr + 1, GAIA_POINTZM, 1, endian_arch); /* class POINT XYZM */ - gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 21, point->Z, 1, endian_arch); /* Z */ - gaiaExport64 (ptr + 29, point->M, 1, endian_arch); /* M */ - ptr += 37; - } - else - { - gaiaExport32 (ptr + 1, GAIA_POINT, 1, endian_arch); /* class POINT */ - gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ - ptr += 21; - } - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - *ptr = GAIA_MARK_ENTITY; /* ENTITY signature */ - if (geom->DimensionModel == GAIA_XY_Z) - gaiaExport32 (ptr + 1, GAIA_LINESTRINGZ, 1, endian_arch); /* class LINESTRING XYZ */ - else if (geom->DimensionModel == GAIA_XY_M) - gaiaExport32 (ptr + 1, GAIA_LINESTRINGM, 1, endian_arch); /* class LINESTRING XYM */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaExport32 (ptr + 1, GAIA_LINESTRINGZM, 1, endian_arch); /* class LINESTRING XYZM */ - else - gaiaExport32 (ptr + 1, GAIA_LINESTRING, 1, endian_arch); /* class LINESTRING */ - gaiaExport32 (ptr + 5, line->Points, 1, endian_arch); /* # points */ - ptr += 9; - for (iv = 0; iv < line->Points; iv++) - { - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - gaiaExport64 (ptr, x, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y */ - ptr += 16; - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ - ptr += 8; - } - if (geom->DimensionModel == GAIA_XY_M) - { - gaiaExport64 (ptr, m, 1, endian_arch); /* M */ - ptr += 8; - } - if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ - gaiaExport64 (ptr + 8, m, 1, endian_arch); /* M */ - ptr += 16; - } - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - *ptr = GAIA_MARK_ENTITY; /* ENTITY signature */ - if (geom->DimensionModel == GAIA_XY_Z) - gaiaExport32 (ptr + 1, GAIA_POLYGONZ, 1, endian_arch); /* class POLYGON XYZ */ - else if (geom->DimensionModel == GAIA_XY_M) - gaiaExport32 (ptr + 1, GAIA_POLYGONM, 1, endian_arch); /* class POLYGON XYM */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaExport32 (ptr + 1, GAIA_POLYGONZM, 1, endian_arch); /* class POLYGON XYZM */ - else - gaiaExport32 (ptr + 1, GAIA_POLYGON, 1, endian_arch); /* class POLYGON */ - gaiaExport32 (ptr + 5, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ - rng = polyg->Exterior; - gaiaExport32 (ptr + 9, rng->Points, 1, endian_arch); /* # points - exterior ring */ - ptr += 13; - for (iv = 0; iv < rng->Points; iv++) - { - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ - ptr += 16; - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ - ptr += 8; - } - if (geom->DimensionModel == GAIA_XY_M) - { - gaiaExport64 (ptr, m, 1, endian_arch); /* M */ - ptr += 8; - } - if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ - gaiaExport64 (ptr + 8, m, 1, endian_arch); /* M */ - ptr += 16; - } - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ - ptr += 4; - for (iv = 0; iv < rng->Points; iv++) - { - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, - &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ - ptr += 16; - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ - ptr += 8; - } - if (geom->DimensionModel == GAIA_XY_M) - { - gaiaExport64 (ptr, m, 1, endian_arch); /* M */ - ptr += 8; - } - if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ - gaiaExport64 (ptr + 8, m, 1, endian_arch); /* M */ - ptr += 16; - } - } - } - polyg = polyg->Next; - } - *ptr = GAIA_MARK_END; /* END signature */ - }; -} - -GAIAGEO_DECLARE void -gaiaToCompressedBlobWkb (gaiaGeomCollPtr geom, unsigned char **result, - int *size) -{ -/* -/ builds the SpatiaLite BLOB representation for this GEOMETRY -/ geometry-compression will be applied to LINESTRINGs and RINGs -*/ - int ib; - int iv; - double x; - double y; - double z; - double m; - double last_x = 0.0; - double last_y = 0.0; - double last_z = 0.0; - float fx; - float fy; - float fz; - int entities = 0; - int n_points = 0; - int n_linestrings = 0; - int n_polygons = 0; - int type; - unsigned char *ptr; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - gaiaPointPtr point = NULL; - gaiaLinestringPtr line = NULL; - gaiaPolygonPtr polyg = NULL; - int endian_arch = gaiaEndianArch (); - gaiaMbrGeometry (geom); -/* how many entities, and of what kind, do we have ? */ - pt = geom->FirstPoint; - while (pt) - { - point = pt; - entities++; - n_points++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - line = ln; - entities++; - n_linestrings++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - polyg = pg; - entities++; - n_polygons++; - pg = pg->Next; - } - *size = 0; - *result = NULL; - if (n_points == 0 && n_polygons == 0 && n_linestrings == 0) - return; -/* ok, we can determine the geometry class */ - if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTIPOINT) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTIPOINTZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTIPOINTM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTIPOINTZM; - else - type = GAIA_MULTIPOINT; - } - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_POINTZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_POINTM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_POINTZM; - else - type = GAIA_POINT; - } - } - else if (n_points > 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTIPOINTZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTIPOINTM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTIPOINTZM; - else - type = GAIA_MULTIPOINT; - } - } - else if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTILINESTRING) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTILINESTRINGZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTILINESTRINGM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTILINESTRINGZM; - else - type = GAIA_MULTILINESTRING; - } - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_LINESTRINGZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_LINESTRINGM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_LINESTRINGZM; - else - type = GAIA_LINESTRING; - } - } - else if (n_points == 0 && n_linestrings > 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTILINESTRINGZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTILINESTRINGM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTILINESTRINGZM; - else - type = GAIA_MULTILINESTRING; - } - } - else if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) - { - if (geom->DeclaredType == GAIA_MULTIPOLYGON) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTIPOLYGONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTIPOLYGONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTIPOLYGONZM; - else - type = GAIA_MULTIPOLYGON; - } - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_POLYGONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_POLYGONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_POLYGONZM; - else - type = GAIA_POLYGON; - } - } - else if (n_points == 0 && n_linestrings == 0 && n_polygons > 1) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTIPOLYGONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTIPOLYGONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTIPOLYGONZM; - else - type = GAIA_MULTIPOLYGON; - } - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } -/* and now we compute the size of BLOB */ - *size = 44; /* header size */ - switch (type) - { - case GAIA_POINT: - *size += (sizeof (double) * 2); /* [x,y] coords */ - break; - case GAIA_POINTZ: - *size += (sizeof (double) * 3); /* [x,y,z] coords */ - break; - case GAIA_POINTM: - *size += (sizeof (double) * 3); /* [x,y,m] coords */ - break; - case GAIA_POINTZM: - *size += (sizeof (double) * 4); /* [x,y,z,m] coords */ - break; - case GAIA_LINESTRING: - *size += (4 + (8 * line->Points) + 16); /* # points + [x,y] for each vertex */ - break; - case GAIA_LINESTRINGZ: - *size += (4 + (12 * line->Points) + 24); /* # points + [x,y,z] for each vertex */ - break; - case GAIA_LINESTRINGM: - *size += (4 + (16 * line->Points) + 16); /* # points + [x,y,m] for each vertex */ - break; - case GAIA_LINESTRINGZM: - *size += (4 + (20 * line->Points) + 24); /* # points + [x,y,z,m] for each vertex */ - break; - case GAIA_POLYGON: - rng = polyg->Exterior; - *size += (8 + (8 * rng->Points) + 16); /* # rings + # points + [x.y] array - exterior ring */ - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - *size += (4 + (8 * rng->Points) + 16); /* # points + [x,y] array - interior ring */ - } - break; - case GAIA_POLYGONZ: - rng = polyg->Exterior; - *size += (8 + (12 * rng->Points) + 24); /* # rings + # points + [x,y,z] array - exterior ring */ - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - *size += (4 + (12 * rng->Points) + 24); /* # points + [x,y,z] array - interior ring */ - } - break; - case GAIA_POLYGONM: - rng = polyg->Exterior; - *size += (8 + (16 * rng->Points) + 16); /* # rings + # points + [x,y,m] array - exterior ring */ - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - *size += (4 + (16 * rng->Points) + 16); /* # points + [x,y,m] array - interior ring */ - } - break; - case GAIA_POLYGONZM: - rng = polyg->Exterior; - *size += (8 + (20 * rng->Points) + 24); /* # rings + # points + [x,y,z,m] array - exterior ring */ - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - *size += (4 + (20 * rng->Points) + 24); /* # points + [x,y,z,m] array - interior ring */ - } - break; - default: - /* this one is not a simple geometry; should be a MULTIxxxx or a GEOMETRYCOLLECTION */ - *size += 4; /* # entities */ - point = geom->FirstPoint; - while (point) - { - *size += 5; /* entity header */ - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_M) - *size += (sizeof (double) * 3); /* three doubles for each POINT */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - *size += (sizeof (double) * 4); /* four doubles for each POINT */ - else - *size += (sizeof (double) * 2); /* two doubles for each POINT */ - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - *size += 5; /* entity header */ - if (geom->DimensionModel == GAIA_XY_Z) - *size += (4 + (12 * line->Points) + 24); /* # points + [x,y,z] for each vertex */ - else if (geom->DimensionModel == GAIA_XY_M) - *size += (4 + (16 * line->Points) + 16); /* # points + [x,y,m] for each vertex */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - *size += (4 + (20 * line->Points) + 24); /* # points + [x,y,z,m] for each vertex */ - else - *size += (4 + (8 * line->Points) + 16); /* # points + [x,y] for each vertex */ - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - *size += 5; /* entity header */ - rng = polyg->Exterior; - if (geom->DimensionModel == GAIA_XY_Z) - *size += (8 + (12 * rng->Points) + 24); /* # rings + # points + [x,y,z] array - exterior ring */ - else if (geom->DimensionModel == GAIA_XY_M) - *size += (8 + (16 * rng->Points) + 16); /* # rings + # points + [x,y,m] array - exterior ring */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - *size += (8 + (20 * rng->Points) + 24); /* # rings + # points + [x,y,z,m] array - exterior ring */ - else - *size += (8 + (8 * rng->Points) + 16); /* # rings + # points + [x,y] array - exterior ring */ - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - if (geom->DimensionModel == GAIA_XY_Z) - *size += (4 + (12 * rng->Points) + 24); /* # points + [x,y,z] array - interior ring */ - else if (geom->DimensionModel == GAIA_XY_M) - *size += (4 + (16 * rng->Points) + 16); /* # points + [x,y,m] array - interior ring */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - *size += (4 + (20 * rng->Points) + 24); /* # points + [x,y,z,m] array - interior ring */ - else - *size += (4 + (8 * rng->Points) + 16); /* # points + [x,y] array - interior ring */ - } - polyg = polyg->Next; - } - }; - *result = malloc (*size); - ptr = *result; -/* and finally we build the BLOB */ - switch (type) - { - case GAIA_POINT: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POINT, 1, endian_arch); /* class POINT */ - gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ - *(ptr + 59) = GAIA_MARK_END; /* END signature */ - break; - case GAIA_POINTZ: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POINTZ, 1, endian_arch); /* class POINT XYZ */ - gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 59, point->Z, 1, endian_arch); /* Z */ - *(ptr + 67) = GAIA_MARK_END; /* END signature */ - break; - case GAIA_POINTM: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POINTM, 1, endian_arch); /* class POINT XYM */ - gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 59, point->M, 1, endian_arch); /* M */ - *(ptr + 67) = GAIA_MARK_END; /* END signature */ - break; - case GAIA_POINTZM: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_POINTZM, 1, endian_arch); /* class POINT XYZM */ - gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 59, point->Z, 1, endian_arch); /* M */ - gaiaExport64 (ptr + 67, point->M, 1, endian_arch); /* Z */ - *(ptr + 75) = GAIA_MARK_END; /* END signature */ - break; - case GAIA_LINESTRING: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_COMPRESSED_LINESTRING, 1, endian_arch); /* class LINESTRING */ - gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ - ptr += 47; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPoint (line->Coords, iv, &x, &y); - if (iv == 0 || iv == (line->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - ptr += 16; - } - else - { - /* compressing any other intermediate vertex */ - fx = (float) (x - last_x); - fy = (float) (y - last_y); - gaiaExportF32 (ptr, fx, 1, endian_arch); - gaiaExportF32 (ptr + 4, fy, 1, endian_arch); - ptr += 8; - } - last_x = x; - last_y = y; - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - case GAIA_LINESTRINGZ: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_COMPRESSED_LINESTRINGZ, 1, endian_arch); /* class LINESTRING XYZ */ - gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ - ptr += 47; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - if (iv == 0 || iv == (line->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - gaiaExport64 (ptr + 16, z, 1, endian_arch); - ptr += 24; - } - else - { - /* compressing any other intermediate vertex */ - fx = (float) (x - last_x); - fy = (float) (y - last_y); - fz = (float) (z - last_z); - gaiaExportF32 (ptr, fx, 1, endian_arch); - gaiaExportF32 (ptr + 4, fy, 1, endian_arch); - gaiaExportF32 (ptr + 8, fz, 1, endian_arch); - ptr += 12; - } - last_x = x; - last_y = y; - last_z = z; - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - case GAIA_LINESTRINGM: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_COMPRESSED_LINESTRINGM, 1, endian_arch); /* class LINESTRING XYM */ - gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ - ptr += 47; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - if (iv == 0 || iv == (line->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - gaiaExport64 (ptr + 16, m, 1, endian_arch); - ptr += 24; - } - else - { - /* compressing any other intermediate vertex */ - fx = (float) (x - last_x); - fy = (float) (y - last_y); - gaiaExportF32 (ptr, fx, 1, endian_arch); - gaiaExportF32 (ptr + 4, fy, 1, endian_arch); - gaiaExport64 (ptr + 8, m, 1, endian_arch); - ptr += 16; - } - last_x = x; - last_y = y; - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - case GAIA_LINESTRINGZM: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_COMPRESSED_LINESTRINGZM, 1, endian_arch); /* class LINESTRING XYZM */ - gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ - ptr += 47; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - if (iv == 0 || iv == (line->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - gaiaExport64 (ptr + 16, z, 1, endian_arch); - gaiaExport64 (ptr + 24, m, 1, endian_arch); - ptr += 32; - } - else - { - /* compressing any other intermediate vertex */ - fx = (float) (x - last_x); - fy = (float) (y - last_y); - fz = (float) (z - last_z); - gaiaExportF32 (ptr, fx, 1, endian_arch); - gaiaExportF32 (ptr + 4, fy, 1, endian_arch); - gaiaExportF32 (ptr + 8, fz, 1, endian_arch); - gaiaExport64 (ptr + 12, m, 1, endian_arch); - ptr += 20; - } - last_x = x; - last_y = y; - last_z = z; - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - case GAIA_POLYGON: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_COMPRESSED_POLYGON, 1, endian_arch); /* class POLYGON */ - gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ - rng = polyg->Exterior; - gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ - ptr += 51; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - if (iv == 0 || iv == (rng->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - ptr += 16; - } - else - { - /* compressing any other intermediate vertex */ - fx = (float) (x - last_x); - fy = (float) (y - last_y); - gaiaExportF32 (ptr, fx, 1, endian_arch); - gaiaExportF32 (ptr + 4, fy, 1, endian_arch); - ptr += 8; - } - last_x = x; - last_y = y; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ - ptr += 4; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - if (iv == 0 || iv == (rng->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - ptr += 16; - } - else - { - /* compressing any other intermediate vertex */ - fx = (float) (x - last_x); - fy = (float) (y - last_y); - gaiaExportF32 (ptr, fx, 1, endian_arch); - gaiaExportF32 (ptr + 4, fy, 1, endian_arch); - ptr += 8; - } - last_x = x; - last_y = y; - } - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - case GAIA_POLYGONZ: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_COMPRESSED_POLYGONZ, 1, endian_arch); /* class POLYGON XYZ */ - gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ - rng = polyg->Exterior; - gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ - ptr += 51; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - if (iv == 0 || iv == (rng->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - gaiaExport64 (ptr + 16, z, 1, endian_arch); - ptr += 24; - } - else - { - /* compressing any other intermediate vertex */ - fx = (float) (x - last_x); - fy = (float) (y - last_y); - fz = (float) (z - last_z); - gaiaExportF32 (ptr, fx, 1, endian_arch); - gaiaExportF32 (ptr + 4, fy, 1, endian_arch); - gaiaExportF32 (ptr + 8, fz, 1, endian_arch); - ptr += 12; - } - last_x = x; - last_y = y; - last_z = z; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ - ptr += 4; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - if (iv == 0 || iv == (rng->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - gaiaExport64 (ptr + 16, z, 1, endian_arch); - ptr += 24; - } - else - { - /* compressing any other intermediate vertex */ - fx = (float) (x - last_x); - fy = (float) (y - last_y); - fz = (float) (z - last_z); - gaiaExportF32 (ptr, fx, 1, endian_arch); - gaiaExportF32 (ptr + 4, fy, 1, endian_arch); - gaiaExportF32 (ptr + 8, fz, 1, endian_arch); - ptr += 12; - } - last_x = x; - last_y = y; - last_z = z; - } - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - case GAIA_POLYGONM: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_COMPRESSED_POLYGONM, 1, endian_arch); /* class POLYGON XYM */ - gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ - rng = polyg->Exterior; - gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ - ptr += 51; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - if (iv == 0 || iv == (rng->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - gaiaExport64 (ptr + 16, m, 1, endian_arch); - ptr += 24; - } - else - { - /* compressing any other intermediate vertex */ - fx = (float) (x - last_x); - fy = (float) (y - last_y); - gaiaExportF32 (ptr, fx, 1, endian_arch); - gaiaExportF32 (ptr + 4, fy, 1, endian_arch); - gaiaExport64 (ptr + 8, m, 1, endian_arch); - ptr += 16; - } - last_x = x; - last_y = y; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ - ptr += 4; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - if (iv == 0 || iv == (rng->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - gaiaExport64 (ptr + 16, m, 1, endian_arch); - ptr += 24; - } - else - { - /* compressing any other intermediate vertex */ - fx = (float) (x - last_x); - fy = (float) (y - last_y); - gaiaExportF32 (ptr, fx, 1, endian_arch); - gaiaExportF32 (ptr + 4, fy, 1, endian_arch); - gaiaExport64 (ptr + 8, m, 1, endian_arch); - ptr += 16; - } - last_x = x; - last_y = y; - } - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - case GAIA_POLYGONZM: - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, GAIA_COMPRESSED_POLYGONZM, 1, endian_arch); /* class POLYGON */ - gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ - rng = polyg->Exterior; - gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ - ptr += 51; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - if (iv == 0 || iv == (rng->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - gaiaExport64 (ptr + 16, z, 1, endian_arch); - gaiaExport64 (ptr + 24, m, 1, endian_arch); - ptr += 32; - } - else - { - /* compressing any other intermediate vertex */ - fx = (float) (x - last_x); - fy = (float) (y - last_y); - fz = (float) (z - last_z); - gaiaExportF32 (ptr, fx, 1, endian_arch); - gaiaExportF32 (ptr + 4, fy, 1, endian_arch); - gaiaExportF32 (ptr + 8, fz, 1, endian_arch); - gaiaExport64 (ptr + 12, m, 1, endian_arch); - ptr += 20; - } - last_x = x; - last_y = y; - last_z = z; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ - ptr += 4; - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - if (iv == 0 || iv == (rng->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, x, 1, endian_arch); - gaiaExport64 (ptr + 8, y, 1, endian_arch); - gaiaExport64 (ptr + 16, z, 1, endian_arch); - gaiaExport64 (ptr + 24, m, 1, endian_arch); - ptr += 32; - } - else - { - /* compressing any other intermediate vertex */ - fx = (float) (x - last_x); - fy = (float) (y - last_y); - fz = (float) (z - last_z); - gaiaExportF32 (ptr, fx, 1, endian_arch); - gaiaExportF32 (ptr + 4, fy, 1, endian_arch); - gaiaExportF32 (ptr + 8, fz, 1, endian_arch); - gaiaExport64 (ptr + 12, m, 1, endian_arch); - ptr += 20; - } - last_x = x; - last_y = y; - last_z = z; - } - } - *ptr = GAIA_MARK_END; /* END signature */ - break; - default: - /* this one is a MULTIxxxx or a GEOMETRYCOLLECTION - building the main header */ - *ptr = GAIA_MARK_START; /* START signature */ - *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ - gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ - gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ - gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ - gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ - gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ - *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ - gaiaExport32 (ptr + 39, type, 1, endian_arch); /* geometric class */ - gaiaExport32 (ptr + 43, entities, 1, endian_arch); /* # entities */ - ptr += 47; - point = geom->FirstPoint; - while (point) - { - *ptr = GAIA_MARK_ENTITY; /* ENTITY signature */ - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaExport32 (ptr + 1, GAIA_POINTZ, 1, endian_arch); /* class POINT XYZ */ - gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 21, point->Z, 1, endian_arch); /* Z */ - ptr += 29; - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaExport32 (ptr + 1, GAIA_POINTM, 1, endian_arch); /* class POINT XYM */ - gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 21, point->M, 1, endian_arch); /* M */ - ptr += 29; - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaExport32 (ptr + 1, GAIA_POINTZM, 1, endian_arch); /* class POINT XYZM */ - gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 21, point->Z, 1, endian_arch); /* Z */ - gaiaExport64 (ptr + 29, point->M, 1, endian_arch); /* M */ - ptr += 37; - } - else - { - gaiaExport32 (ptr + 1, GAIA_POINT, 1, endian_arch); /* class POINT */ - gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ - ptr += 21; - } - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - *ptr = GAIA_MARK_ENTITY; /* ENTITY signature */ - if (geom->DimensionModel == GAIA_XY_Z) - gaiaExport32 (ptr + 1, GAIA_COMPRESSED_LINESTRINGZ, 1, endian_arch); /* class LINESTRING XYZ */ - else if (geom->DimensionModel == GAIA_XY_M) - gaiaExport32 (ptr + 1, GAIA_COMPRESSED_LINESTRINGM, 1, endian_arch); /* class LINESTRING XYM */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaExport32 (ptr + 1, GAIA_COMPRESSED_LINESTRINGZM, 1, endian_arch); /* class LINESTRING XYZM */ - else - gaiaExport32 (ptr + 1, GAIA_COMPRESSED_LINESTRING, 1, endian_arch); /* class LINESTRING */ - gaiaExport32 (ptr + 5, line->Points, 1, endian_arch); /* # points */ - ptr += 9; - for (iv = 0; iv < line->Points; iv++) - { - z = 0.0; - m = 0.0; - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - if (iv == 0 || iv == (line->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, x, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y */ - ptr += 16; - } - else - { - /* compressing any other intermediate vertex */ - fx = (float) (x - last_x); - fy = (float) (y - last_y); - gaiaExportF32 (ptr, fx, 1, endian_arch); /* X */ - gaiaExportF32 (ptr + 4, fy, 1, endian_arch); /* Y */ - ptr += 8; - } - if (geom->DimensionModel == GAIA_XY_Z) - { - if (iv == 0 || iv == (line->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ - ptr += 8; - } - else - { - /* compressing any other intermediate vertex */ - fz = (float) (z - last_z); - gaiaExportF32 (ptr, fz, 1, endian_arch); /* Z */ - ptr += 4; - } - } - if (geom->DimensionModel == GAIA_XY_M) - { - gaiaExport64 (ptr, m, 1, endian_arch); /* M */ - ptr += 8; - } - if (geom->DimensionModel == GAIA_XY_Z_M) - { - if (iv == 0 || iv == (line->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ - ptr += 8; - } - else - { - /* compressing any other intermediate vertex */ - fz = (float) (z - last_z); - gaiaExportF32 (ptr, fz, 1, endian_arch); /* Z */ - ptr += 4; - } - gaiaExport64 (ptr, m, 1, endian_arch); /* M */ - ptr += 8; - } - last_x = x; - last_y = y; - last_z = z; - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - *ptr = GAIA_MARK_ENTITY; /* ENTITY signature */ - if (geom->DimensionModel == GAIA_XY_Z) - gaiaExport32 (ptr + 1, GAIA_COMPRESSED_POLYGONZ, 1, endian_arch); /* class POLYGON XYZ */ - else if (geom->DimensionModel == GAIA_XY_M) - gaiaExport32 (ptr + 1, GAIA_COMPRESSED_POLYGONM, 1, endian_arch); /* class POLYGON XYM */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaExport32 (ptr + 1, GAIA_COMPRESSED_POLYGONZM, 1, endian_arch); /* class POLYGON XYZM */ - else - gaiaExport32 (ptr + 1, GAIA_COMPRESSED_POLYGON, 1, endian_arch); /* class POLYGON */ - gaiaExport32 (ptr + 5, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ - rng = polyg->Exterior; - gaiaExport32 (ptr + 9, rng->Points, 1, endian_arch); /* # points - exterior ring */ - ptr += 13; - for (iv = 0; iv < rng->Points; iv++) - { - z = 0.0; - m = 0.0; - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - if (iv == 0 || iv == (rng->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ - ptr += 16; - } - else - { - /* compressing any other intermediate vertex */ - fx = (float) (x - last_x); - fy = (float) (y - last_y); - gaiaExportF32 (ptr, fx, 1, endian_arch); /* X */ - gaiaExportF32 (ptr + 4, fy, 1, endian_arch); /* Y */ - ptr += 8; - } - if (geom->DimensionModel == GAIA_XY_Z) - { - if (iv == 0 || iv == (rng->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ - ptr += 8; - } - else - { - /* compressing any other intermediate vertex */ - fz = (float) (z - last_z); - gaiaExportF32 (ptr, fz, 1, endian_arch); /* Z */ - ptr += 4; - } - } - if (geom->DimensionModel == GAIA_XY_M) - { - gaiaExport64 (ptr, m, 1, endian_arch); /* M */ - ptr += 8; - } - if (geom->DimensionModel == GAIA_XY_Z_M) - { - if (iv == 0 || iv == (rng->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ - ptr += 8; - } - else - { - /* compressing any other intermediate vertex */ - fz = (float) (z - last_z); - gaiaExportF32 (ptr, fz, 1, endian_arch); /* Z */ - ptr += 4; - } - gaiaExport64 (ptr, m, 1, endian_arch); /* M */ - ptr += 8; - } - last_x = x; - last_y = y; - last_z = z; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ - ptr += 4; - for (iv = 0; iv < rng->Points; iv++) - { - z = 0.0; - m = 0.0; - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, - &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - if (iv == 0 || iv == (rng->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ - ptr += 16; - } - else - { - /* compressing any other intermediate vertex */ - fx = (float) (x - last_x); - fy = (float) (y - last_y); - gaiaExportF32 (ptr, fx, 1, endian_arch); /* X */ - gaiaExportF32 (ptr + 4, fy, 1, endian_arch); /* Y */ - ptr += 8; - } - if (geom->DimensionModel == GAIA_XY_Z) - { - if (iv == 0 || iv == (rng->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ - ptr += 8; - } - else - { - /* compressing any other intermediate vertex */ - fz = (float) (z - last_z); - gaiaExportF32 (ptr, fz, 1, endian_arch); /* Z */ - ptr += 4; - } - } - if (geom->DimensionModel == GAIA_XY_M) - { - gaiaExport64 (ptr, m, 1, endian_arch); /* M */ - ptr += 8; - } - if (geom->DimensionModel == GAIA_XY_Z_M) - { - if (iv == 0 || iv == (rng->Points - 1)) - { - /* first and last vertices are uncompressed */ - gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ - ptr += 8; - } - else - { - /* compressing any other intermediate vertex */ - fz = (float) (z - last_z); - gaiaExportF32 (ptr, fz, 1, endian_arch); /* Z */ - ptr += 4; - } - gaiaExport64 (ptr, m, 1, endian_arch); /* M */ - ptr += 8; - } - last_x = x; - last_y = y; - last_z = z; - } - } - polyg = polyg->Next; - } - *ptr = GAIA_MARK_END; /* END signature */ - }; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaFromWkb (const unsigned char *blob, unsigned int size) -{ -/* decoding from WKB to GEOMETRY */ - int type; - int little_endian; - gaiaGeomCollPtr geo = NULL; - int endian_arch = gaiaEndianArch (); - if (size < 5) - return NULL; - if (*(blob + 0) == 0x01) - little_endian = GAIA_LITTLE_ENDIAN; - else - little_endian = GAIA_BIG_ENDIAN; - type = gaiaImport32 (blob + 1, little_endian, endian_arch); - if (type == GAIA_POINTZ || type == GAIA_LINESTRINGZ || type == GAIA_POLYGONZ - || type == GAIA_MULTIPOINTZ || type == GAIA_MULTILINESTRINGZ - || type == GAIA_MULTIPOLYGONZ || type == GAIA_GEOMETRYCOLLECTIONZ - || type == GAIA_GEOSWKB_POINTZ || type == GAIA_GEOSWKB_LINESTRINGZ - || type == GAIA_GEOSWKB_POLYGONZ || type == GAIA_GEOSWKB_MULTIPOINTZ - || type == GAIA_GEOSWKB_MULTILINESTRINGZ - || type == GAIA_GEOSWKB_MULTIPOLYGONZ - || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) - geo = gaiaAllocGeomCollXYZ (); - else if (type == GAIA_POINTM || type == GAIA_LINESTRINGM - || type == GAIA_POLYGONM || type == GAIA_MULTIPOINTM - || type == GAIA_MULTILINESTRINGM || type == GAIA_MULTIPOLYGONM - || type == GAIA_GEOMETRYCOLLECTIONM) - geo = gaiaAllocGeomCollXYM (); - else if (type == GAIA_POINTZM || type == GAIA_LINESTRINGZM - || type == GAIA_POLYGONZM || type == GAIA_MULTIPOINTZM - || type == GAIA_MULTILINESTRINGZM || type == GAIA_MULTIPOLYGONZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - geo = gaiaAllocGeomCollXYZM (); - else - geo = gaiaAllocGeomColl (); - geo->Srid = 0; - geo->endian_arch = (char) endian_arch; - geo->endian = (char) little_endian; - geo->blob = blob; - geo->size = size; - geo->offset = 5; - switch (type) - { - case GAIA_POINT: - ParseWkbPoint (geo); - break; - case GAIA_POINTZ: - case GAIA_GEOSWKB_POINTZ: - ParseWkbPointZ (geo); - break; - case GAIA_POINTM: - ParseWkbPointM (geo); - break; - case GAIA_POINTZM: - ParseWkbPointZM (geo); - break; - case GAIA_LINESTRING: - ParseWkbLine (geo); - break; - case GAIA_LINESTRINGZ: - case GAIA_GEOSWKB_LINESTRINGZ: - ParseWkbLineZ (geo); - break; - case GAIA_LINESTRINGM: - ParseWkbLineM (geo); - break; - case GAIA_LINESTRINGZM: - ParseWkbLineZM (geo); - break; - case GAIA_POLYGON: - ParseWkbPolygon (geo); - break; - case GAIA_POLYGONZ: - case GAIA_GEOSWKB_POLYGONZ: - ParseWkbPolygonZ (geo); - break; - case GAIA_POLYGONM: - ParseWkbPolygonM (geo); - break; - case GAIA_POLYGONZM: - ParseWkbPolygonZM (geo); - break; - case GAIA_MULTIPOINT: - case GAIA_MULTILINESTRING: - case GAIA_MULTIPOLYGON: - case GAIA_GEOMETRYCOLLECTION: - case GAIA_MULTIPOINTZ: - case GAIA_MULTILINESTRINGZ: - case GAIA_MULTIPOLYGONZ: - case GAIA_GEOMETRYCOLLECTIONZ: - case GAIA_GEOSWKB_MULTIPOINTZ: - case GAIA_GEOSWKB_MULTILINESTRINGZ: - case GAIA_GEOSWKB_MULTIPOLYGONZ: - case GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ: - case GAIA_MULTIPOINTM: - case GAIA_MULTILINESTRINGM: - case GAIA_MULTIPOLYGONM: - case GAIA_GEOMETRYCOLLECTIONM: - case GAIA_MULTIPOINTZM: - case GAIA_MULTILINESTRINGZM: - case GAIA_MULTIPOLYGONZM: - case GAIA_GEOMETRYCOLLECTIONZM: - ParseWkbGeometry (geo); - break; - default: - break; - }; - gaiaMbrGeometry (geo); - switch (type) - { - case GAIA_POINT: - case GAIA_POINTZ: - case GAIA_GEOSWKB_POINTZ: - case GAIA_POINTM: - case GAIA_POINTZM: - geo->DeclaredType = GAIA_POINT; - break; - case GAIA_LINESTRING: - case GAIA_LINESTRINGZ: - case GAIA_GEOSWKB_LINESTRINGZ: - case GAIA_LINESTRINGM: - case GAIA_LINESTRINGZM: - geo->DeclaredType = GAIA_LINESTRING; - break; - case GAIA_POLYGON: - case GAIA_POLYGONZ: - case GAIA_GEOSWKB_POLYGONZ: - case GAIA_POLYGONM: - case GAIA_POLYGONZM: - geo->DeclaredType = GAIA_POLYGON; - break; - case GAIA_MULTIPOINT: - case GAIA_MULTIPOINTZ: - case GAIA_GEOSWKB_MULTIPOINTZ: - case GAIA_MULTIPOINTM: - case GAIA_MULTIPOINTZM: - geo->DeclaredType = GAIA_MULTIPOINT; - break; - case GAIA_MULTILINESTRING: - case GAIA_MULTILINESTRINGZ: - case GAIA_GEOSWKB_MULTILINESTRINGZ: - case GAIA_MULTILINESTRINGM: - case GAIA_MULTILINESTRINGZM: - geo->DeclaredType = GAIA_MULTILINESTRING; - break; - case GAIA_MULTIPOLYGON: - case GAIA_MULTIPOLYGONZ: - case GAIA_GEOSWKB_MULTIPOLYGONZ: - case GAIA_MULTIPOLYGONM: - case GAIA_MULTIPOLYGONZM: - geo->DeclaredType = GAIA_MULTIPOLYGON; - break; - case GAIA_GEOMETRYCOLLECTION: - case GAIA_GEOMETRYCOLLECTIONZ: - case GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ: - case GAIA_GEOMETRYCOLLECTIONM: - case GAIA_GEOMETRYCOLLECTIONZM: - geo->DeclaredType = GAIA_GEOMETRYCOLLECTION; - break; - } - return geo; -} - -GAIAGEO_DECLARE char * -gaiaToHexWkb (gaiaGeomCollPtr geom) -{ -/* builds the hexadecimal WKB representation for this GEOMETRY */ - unsigned char *wkb = NULL; - int size = 0; - char *hexbuf = NULL; - int i; - char hex[16]; - char *p; - gaiaToWkb (geom, &wkb, &size); - if (!wkb) - return NULL; - hexbuf = malloc ((size * 2) + 1); - p = hexbuf; - for (i = 0; i < size; i++) - { - sprintf (hex, "%02X", *(wkb + i)); - *p++ = hex[0]; - *p++ = hex[1]; - } - *p = '\0'; - return hexbuf; -} - -GAIAGEO_DECLARE void -gaiaToWkb (gaiaGeomCollPtr geom, unsigned char **result, int *size) -{ -/* builds the WKB representation for this GEOMETRY */ - int ib; - int iv; - double x; - double y; - double z = 0.0; - double m = 0.0; - int entities = 0; - int n_points = 0; - int n_linestrings = 0; - int n_polygons = 0; - int type; - unsigned char *ptr; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - gaiaPointPtr point = NULL; - gaiaLinestringPtr line = NULL; - gaiaPolygonPtr polyg = NULL; - int endian_arch = gaiaEndianArch (); - gaiaMbrGeometry (geom); -/* how many entities, and of what kind, do we have ? */ - pt = geom->FirstPoint; - while (pt) - { - point = pt; - entities++; - n_points++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - line = ln; - entities++; - n_linestrings++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - polyg = pg; - entities++; - n_polygons++; - pg = pg->Next; - } - *size = 0; - *result = NULL; - if (n_points == 0 && n_polygons == 0 && n_linestrings == 0) - return; -/* ok, we can determine the geometry class */ - if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTIPOINT) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTIPOINTZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTIPOINTM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTIPOINTZM; - else - type = GAIA_MULTIPOINT; - } - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_POINTZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_POINTM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_POINTZM; - else - type = GAIA_POINT; - } - } - else if (n_points > 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTIPOINTZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTIPOINTM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTIPOINTZM; - else - type = GAIA_MULTIPOINT; - } - } - else if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTILINESTRING) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTILINESTRINGZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTILINESTRINGM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTILINESTRINGZM; - else - type = GAIA_MULTILINESTRING; - } - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_LINESTRINGZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_LINESTRINGM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_LINESTRINGZM; - else - type = GAIA_LINESTRING; - } - } - else if (n_points == 0 && n_linestrings > 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTILINESTRINGZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTILINESTRINGM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTILINESTRINGZM; - else - type = GAIA_MULTILINESTRING; - } - } - else if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) - { - if (geom->DeclaredType == GAIA_MULTIPOLYGON) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTIPOLYGONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTIPOLYGONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTIPOLYGONZM; - else - type = GAIA_MULTIPOLYGON; - } - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_POLYGONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_POLYGONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_POLYGONZM; - else - type = GAIA_POLYGON; - } - } - else if (n_points == 0 && n_linestrings == 0 && n_polygons > 1) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_MULTIPOLYGONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_MULTIPOLYGONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_MULTIPOLYGONZM; - else - type = GAIA_MULTIPOLYGON; - } - } - else - { - if (geom->DimensionModel == GAIA_XY_Z) - type = GAIA_GEOMETRYCOLLECTIONZ; - else if (geom->DimensionModel == GAIA_XY_M) - type = GAIA_GEOMETRYCOLLECTIONM; - else if (geom->DimensionModel == GAIA_XY_Z_M) - type = GAIA_GEOMETRYCOLLECTIONZM; - else - type = GAIA_GEOMETRYCOLLECTION; - } -/* and now we compute the size of WKB */ - *size = 5; /* header size */ - if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING - || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION - || type == GAIA_MULTIPOINTZ || type == GAIA_MULTILINESTRINGZ - || type == GAIA_MULTIPOLYGONZ || type == GAIA_GEOMETRYCOLLECTIONZ - || type == GAIA_MULTIPOINTM || type == GAIA_MULTILINESTRINGM - || type == GAIA_MULTIPOLYGONM || type == GAIA_GEOMETRYCOLLECTIONM - || type == GAIA_MULTIPOINTZM || type == GAIA_MULTILINESTRINGZM - || type == GAIA_MULTIPOLYGONZM || type == GAIA_GEOMETRYCOLLECTIONZM) - *size += 4; - point = geom->FirstPoint; - while (point) - { - if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING - || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION - || type == GAIA_MULTIPOINTZ || type == GAIA_MULTILINESTRINGZ - || type == GAIA_MULTIPOLYGONZ || type == GAIA_GEOMETRYCOLLECTIONZ - || type == GAIA_MULTIPOINTM || type == GAIA_MULTILINESTRINGM - || type == GAIA_MULTIPOLYGONM || type == GAIA_GEOMETRYCOLLECTIONM - || type == GAIA_MULTIPOINTZM || type == GAIA_MULTILINESTRINGZM - || type == GAIA_MULTIPOLYGONZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - *size += 5; - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_M) - *size += (sizeof (double) * 3); /* three doubles for each POINT */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - *size += (sizeof (double) * 4); /* four doubles for each POINT */ - else - *size += (sizeof (double) * 2); /* two doubles for each POINT */ - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING - || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION - || type == GAIA_MULTIPOINTZ || type == GAIA_MULTILINESTRINGZ - || type == GAIA_MULTIPOLYGONZ || type == GAIA_GEOMETRYCOLLECTIONZ - || type == GAIA_MULTIPOINTM || type == GAIA_MULTILINESTRINGM - || type == GAIA_MULTIPOLYGONM || type == GAIA_GEOMETRYCOLLECTIONM - || type == GAIA_MULTIPOINTZM || type == GAIA_MULTILINESTRINGZM - || type == GAIA_MULTIPOLYGONZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - *size += 5; - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_M) - *size += (4 + ((sizeof (double) * 3) * line->Points)); /* # points + [x,y,z] for each vertex */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - *size += (4 + ((sizeof (double) * 4) * line->Points)); /* # points + [x,y,z,m] for each vertex */ - else - *size += (4 + ((sizeof (double) * 2) * line->Points)); /* # points + [x,y] for each vertex */ - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING - || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION - || type == GAIA_MULTIPOINTZ || type == GAIA_MULTILINESTRINGZ - || type == GAIA_MULTIPOLYGONZ || type == GAIA_GEOMETRYCOLLECTIONZ - || type == GAIA_MULTIPOINTM || type == GAIA_MULTILINESTRINGM - || type == GAIA_MULTIPOLYGONM || type == GAIA_GEOMETRYCOLLECTIONM - || type == GAIA_MULTIPOINTZM || type == GAIA_MULTILINESTRINGZM - || type == GAIA_MULTIPOLYGONZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - *size += 5; - rng = polyg->Exterior; - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_M) - *size += (8 + ((sizeof (double) * 3) * rng->Points)); /* # rings + # points + [x,y,z] array - exterior ring */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - *size += (8 + ((sizeof (double) * 4) * rng->Points)); /* # rings + # points + [x,y,z,m] array - exterior ring */ - else - *size += (8 + ((sizeof (double) * 2) * rng->Points)); /* # rings + # points + [x,y] array - exterior ring */ - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_M) - *size += (4 + ((sizeof (double) * 3) * rng->Points)); /* # points + [x,y,z] array - interior ring */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - *size += (4 + ((sizeof (double) * 4) * rng->Points)); /* # points + [x,y,z,m] array - interior ring */ - else - *size += (4 + ((sizeof (double) * 2) * rng->Points)); /* # points + [x,y] array - interior ring */ - } - polyg = polyg->Next; - } - *result = malloc (*size); - ptr = *result; -/* and finally we build the WKB */ - *ptr = 0x01; /* little endian byte order */ - gaiaExport32 (ptr + 1, type, 1, endian_arch); /* the main CLASS TYPE */ - ptr += 5; - if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING - || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION - || type == GAIA_MULTIPOINTZ || type == GAIA_MULTILINESTRINGZ - || type == GAIA_MULTIPOLYGONZ || type == GAIA_GEOMETRYCOLLECTIONZ - || type == GAIA_MULTIPOINTM || type == GAIA_MULTILINESTRINGM - || type == GAIA_MULTIPOLYGONM || type == GAIA_GEOMETRYCOLLECTIONM - || type == GAIA_MULTIPOINTZM || type == GAIA_MULTILINESTRINGZM - || type == GAIA_MULTIPOLYGONZM || type == GAIA_GEOMETRYCOLLECTIONZM) - { - gaiaExport32 (ptr, entities, 1, endian_arch); /* it's a collection; # entities */ - ptr += 4; - } - point = geom->FirstPoint; - while (point) - { - if (type == GAIA_MULTIPOINT || type == GAIA_GEOMETRYCOLLECTION - || type == GAIA_MULTIPOINTZ || type == GAIA_GEOMETRYCOLLECTIONZ - || type == GAIA_MULTIPOINTM || type == GAIA_GEOMETRYCOLLECTIONM - || type == GAIA_MULTIPOINTZM || type == GAIA_GEOMETRYCOLLECTIONZM) - { - *ptr = 0x01; - /* it's a collection: the CLASS TYPE for this element */ - if (type == GAIA_MULTIPOINTZ - || type == GAIA_GEOMETRYCOLLECTIONZ) - gaiaExport32 (ptr + 1, GAIA_POINTZ, 1, endian_arch); - else if (type == GAIA_MULTIPOINTM - || type == GAIA_GEOMETRYCOLLECTIONM) - gaiaExport32 (ptr + 1, GAIA_POINTM, 1, endian_arch); - else if (type == GAIA_MULTIPOINTZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - gaiaExport32 (ptr + 1, GAIA_POINTZM, 1, endian_arch); - else - gaiaExport32 (ptr + 1, GAIA_POINT, 1, endian_arch); - ptr += 5; - } - gaiaExport64 (ptr, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 8, point->Y, 1, endian_arch); /* Y */ - ptr += 16; - if (type == GAIA_POINTZ || type == GAIA_MULTIPOINTZ - || type == GAIA_GEOMETRYCOLLECTIONZ) - { - gaiaExport64 (ptr, point->Z, 1, endian_arch); /* Z */ - ptr += 8; - } - if (type == GAIA_POINTM || type == GAIA_MULTIPOINTM - || type == GAIA_GEOMETRYCOLLECTIONM) - { - gaiaExport64 (ptr, point->M, 1, endian_arch); /* M */ - ptr += 8; - } - if (type == GAIA_POINTZM || type == GAIA_MULTIPOINTZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - { - gaiaExport64 (ptr, point->Z, 1, endian_arch); /* Z */ - gaiaExport64 (ptr + 8, point->M, 1, endian_arch); /* M */ - ptr += 16; - } - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - if (type == GAIA_MULTILINESTRING || type == GAIA_GEOMETRYCOLLECTION - || type == GAIA_MULTILINESTRINGZ - || type == GAIA_GEOMETRYCOLLECTIONZ - || type == GAIA_MULTILINESTRINGM - || type == GAIA_GEOMETRYCOLLECTIONM - || type == GAIA_MULTILINESTRINGZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - { - *ptr = 0x01; - /* it's a collection: the CLASS TYPE for this element */ - if (type == GAIA_MULTILINESTRINGZ - || type == GAIA_GEOMETRYCOLLECTIONZ) - gaiaExport32 (ptr + 1, GAIA_LINESTRINGZ, 1, endian_arch); - else if (type == GAIA_MULTILINESTRINGM - || type == GAIA_GEOMETRYCOLLECTIONM) - gaiaExport32 (ptr + 1, GAIA_LINESTRINGM, 1, endian_arch); - else if (type == GAIA_MULTILINESTRINGZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - gaiaExport32 (ptr + 1, GAIA_LINESTRINGZM, 1, endian_arch); - else - gaiaExport32 (ptr + 1, GAIA_LINESTRING, 1, endian_arch); - ptr += 5; - } - gaiaExport32 (ptr, line->Points, 1, endian_arch); /* # points */ - ptr += 4; - for (iv = 0; iv < line->Points; iv++) - { - if (type == GAIA_LINESTRINGZ || type == GAIA_MULTILINESTRINGZ - || type == GAIA_GEOMETRYCOLLECTIONZ) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (type == GAIA_LINESTRINGM - || type == GAIA_MULTILINESTRINGM - || type == GAIA_GEOMETRYCOLLECTIONM) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (type == GAIA_LINESTRINGZM - || type == GAIA_MULTILINESTRINGZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - gaiaExport64 (ptr, x, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y */ - ptr += 16; - if (type == GAIA_LINESTRINGZ || type == GAIA_MULTILINESTRINGZ - || type == GAIA_GEOMETRYCOLLECTIONZ) - { - gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ - ptr += 8; - } - if (type == GAIA_LINESTRINGM || type == GAIA_MULTILINESTRINGM - || type == GAIA_GEOMETRYCOLLECTIONM) - { - gaiaExport64 (ptr, m, 1, endian_arch); /* M */ - ptr += 8; - } - if (type == GAIA_LINESTRINGZM || type == GAIA_MULTILINESTRINGZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - { - gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ - gaiaExport64 (ptr + 8, m, 1, endian_arch); /* M */ - ptr += 16; - } - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - if (type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION - || type == GAIA_MULTIPOLYGONZ || type == GAIA_GEOMETRYCOLLECTIONZ - || type == GAIA_MULTIPOLYGONM || type == GAIA_GEOMETRYCOLLECTIONM - || type == GAIA_MULTIPOLYGONZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - { - *ptr = 0x01; - /* it's a collection: the CLASS TYPE for this element */ - if (type == GAIA_MULTIPOLYGONZ - || type == GAIA_GEOMETRYCOLLECTIONZ) - gaiaExport32 (ptr + 1, GAIA_POLYGONZ, 1, endian_arch); - else if (type == GAIA_MULTIPOLYGONM - || type == GAIA_GEOMETRYCOLLECTIONM) - gaiaExport32 (ptr + 1, GAIA_POLYGONM, 1, endian_arch); - else if (type == GAIA_MULTIPOLYGONZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - gaiaExport32 (ptr + 1, GAIA_POLYGONZM, 1, endian_arch); - else - gaiaExport32 (ptr + 1, GAIA_POLYGON, 1, endian_arch); - ptr += 5; - } - gaiaExport32 (ptr, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ - rng = polyg->Exterior; - gaiaExport32 (ptr + 4, rng->Points, 1, endian_arch); /* # points - exterior ring */ - ptr += 8; - for (iv = 0; iv < rng->Points; iv++) - { - if (type == GAIA_POLYGONZ || type == GAIA_MULTIPOLYGONZ - || type == GAIA_GEOMETRYCOLLECTIONZ) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (type == GAIA_POLYGONM || type == GAIA_MULTIPOLYGONM - || type == GAIA_GEOMETRYCOLLECTIONM) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (type == GAIA_POLYGONZM || type == GAIA_MULTIPOLYGONZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ - ptr += 16; - if (type == GAIA_POLYGONZ || type == GAIA_MULTIPOLYGONZ - || type == GAIA_GEOMETRYCOLLECTIONZ) - { - gaiaExport64 (ptr, z, 1, endian_arch); /* Z - exterior ring */ - ptr += 8; - } - if (type == GAIA_POLYGONM || type == GAIA_MULTIPOLYGONM - || type == GAIA_GEOMETRYCOLLECTIONM) - { - gaiaExport64 (ptr, m, 1, endian_arch); /* M - exterior ring */ - ptr += 8; - } - if (type == GAIA_POLYGONZM || type == GAIA_MULTIPOLYGONZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - { - gaiaExport64 (ptr, z, 1, endian_arch); /* Z - exterior ring */ - gaiaExport64 (ptr + 8, m, 1, endian_arch); /* M - exterior ring */ - ptr += 16; - } - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ - ptr += 4; - for (iv = 0; iv < rng->Points; iv++) - { - if (type == GAIA_POLYGONZ || type == GAIA_MULTIPOLYGONZ - || type == GAIA_GEOMETRYCOLLECTIONZ) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (type == GAIA_POLYGONM - || type == GAIA_MULTIPOLYGONM - || type == GAIA_GEOMETRYCOLLECTIONM) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (type == GAIA_POLYGONZM - || type == GAIA_MULTIPOLYGONZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ - ptr += 16; - if (type == GAIA_POLYGONZ || type == GAIA_MULTIPOLYGONZ - || type == GAIA_GEOMETRYCOLLECTIONZ) - { - gaiaExport64 (ptr, z, 1, endian_arch); /* Z - exterior ring */ - ptr += 8; - } - if (type == GAIA_POLYGONM || type == GAIA_MULTIPOLYGONM - || type == GAIA_GEOMETRYCOLLECTIONM) - { - gaiaExport64 (ptr, m, 1, endian_arch); /* M - exterior ring */ - ptr += 8; - } - if (type == GAIA_POLYGONZM || type == GAIA_MULTIPOLYGONZM - || type == GAIA_GEOMETRYCOLLECTIONZM) - { - gaiaExport64 (ptr, z, 1, endian_arch); /* Z - exterior ring */ - gaiaExport64 (ptr + 8, m, 1, endian_arch); /* M - exterior ring */ - ptr += 16; - } - } - } - polyg = polyg->Next; - } -} - -GAIAGEO_DECLARE int -gaiaEwkbGetPoint (gaiaGeomCollPtr geom, unsigned char *blob, - int offset, int blob_size, int endian, int endian_arch, - int dims) -{ -/* decodes a POINT from PostGIS EWKB binary GEOMETRY */ - double x; - double y; - double z; - double m; - switch (dims) - { - case GAIA_XY_Z_M: - if (blob_size < offset + 32) - return -1; - break; - case GAIA_XY_Z: - case GAIA_XY_M: - if (blob_size < offset + 24) - return -1; - break; - default: - if (blob_size < offset + 16) - return -1; - break; - } - x = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - y = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - if (dims == GAIA_XY_Z_M) - { - z = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - m = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - gaiaAddPointToGeomCollXYZM (geom, x, y, z, m); - } - else if (dims == GAIA_XY_Z) - { - z = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - gaiaAddPointToGeomCollXYZ (geom, x, y, z); - } - else if (dims == GAIA_XY_M) - { - m = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - gaiaAddPointToGeomCollXYM (geom, x, y, m); - } - else - gaiaAddPointToGeomColl (geom, x, y); - return offset; -} - -GAIAGEO_DECLARE int -gaiaEwkbGetLinestring (gaiaGeomCollPtr geom, unsigned char *blob, - int offset, int blob_size, int endian, - int endian_arch, int dims) -{ -/* decodes a LINESTRING from PostGIS binary GEOMETRY */ - int npoints; - int iv; - double x; - double y; - double z; - double m; - gaiaLinestringPtr ln; - if (blob_size < offset + 4) - return -1; - npoints = gaiaImport32 (blob + offset, endian, endian_arch); - offset += 4; - switch (dims) - { - case GAIA_XY_Z_M: - if (blob_size < offset + (32 * npoints)) - return -1; - break; - case GAIA_XY_Z: - case GAIA_XY_M: - if (blob_size < offset + (24 * npoints)) - return -1; - break; - default: - if (blob_size < offset + (16 * npoints)) - return -1; - break; - } - ln = gaiaAddLinestringToGeomColl (geom, npoints); - for (iv = 0; iv < npoints; iv++) - { - x = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - y = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - if (dims == GAIA_XY_Z_M) - { - z = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - m = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - gaiaSetPointXYZM (ln->Coords, iv, x, y, z, m); - } - else if (dims == GAIA_XY_Z) - { - z = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - gaiaSetPointXYZ (ln->Coords, iv, x, y, z); - } - else if (dims == GAIA_XY_M) - { - m = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - gaiaSetPointXYM (ln->Coords, iv, x, y, m); - } - else - gaiaSetPoint (ln->Coords, iv, x, y); - } - return offset; -} - -GAIAGEO_DECLARE int -gaiaEwkbGetPolygon (gaiaGeomCollPtr geom, unsigned char *blob, - int offset, int blob_size, int endian, - int endian_arch, int dims) -{ -/* decodes a POLYGON from PostGIS binary GEOMETRY */ - int rings; - int npoints; - int iv; - int ib; - double x; - double y; - double z; - double m; - gaiaPolygonPtr polyg = NULL; - gaiaRingPtr rng; - if (blob_size < offset + 4) - return -1; - rings = gaiaImport32 (blob + offset, endian, endian_arch); - offset += 4; - for (ib = 0; ib < rings; ib++) - { - if (blob_size < offset + 4) - return -1; - npoints = gaiaImport32 (blob + offset, endian, endian_arch); - offset += 4; - switch (dims) - { - case GAIA_XY_Z_M: - if (blob_size < offset + (32 * npoints)) - return -1; - break; - case GAIA_XY_Z: - case GAIA_XY_M: - if (blob_size < offset + (24 * npoints)) - return -1; - break; - default: - if (blob_size < offset + (16 * npoints)) - return -1; - break; - } - if (ib == 0) - { - polyg = gaiaAddPolygonToGeomColl (geom, npoints, rings - 1); - rng = polyg->Exterior; - } - else - rng = gaiaAddInteriorRing (polyg, ib - 1, npoints); - for (iv = 0; iv < npoints; iv++) - { - x = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - y = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - if (dims == GAIA_XY_Z_M) - { - z = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - m = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - gaiaSetPointXYZM (rng->Coords, iv, x, y, z, m); - } - else if (dims == GAIA_XY_Z) - { - z = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - gaiaSetPointXYZ (rng->Coords, iv, x, y, z); - } - else if (dims == GAIA_XY_M) - { - m = gaiaImport64 (blob + offset, endian, endian_arch); - offset += 8; - gaiaSetPointXYM (rng->Coords, iv, x, y, m); - } - else - gaiaSetPoint (rng->Coords, iv, x, y); - } - } - return offset; -} - -GAIAGEO_DECLARE int -gaiaEwkbGetMultiGeometry (gaiaGeomCollPtr geom, unsigned char *blob, - int offset, int blob_size, int endian, - int endian_arch, int dims) -{ -/* decodes a MultiGeometry from PostGIS EWKB binary GEOMETRY */ - int entities; - int type; - unsigned char xtype[4]; - int ie; - int off; - if (blob_size < offset + 4) - return -1; - entities = gaiaImport32 (blob + offset, endian, endian_arch); - offset += 4; - for (ie = 0; ie < entities; ie++) - { - if (blob_size < offset + 5) - return -1; - memcpy (xtype, blob + offset + 1, 4); - if (endian) - xtype[3] = 0x00; - else - xtype[0] = 0x00; - type = gaiaImport32 (xtype, endian, endian_arch); - offset += 5; - switch (type) - { - case GAIA_POINT: - off = - gaiaEwkbGetPoint (geom, blob, offset, blob_size, endian, - endian_arch, dims); - if (off < 0) - return -1; - offset = off; - break; - case GAIA_LINESTRING: - off = - gaiaEwkbGetLinestring (geom, blob, offset, blob_size, - endian, endian_arch, dims); - if (off < 0) - return -1; - offset = off; - break; - case GAIA_POLYGON: - off = - gaiaEwkbGetPolygon (geom, blob, offset, blob_size, endian, - endian_arch, dims); - if (off < 0) - return -1; - offset = off; - break; - default: /* unexpected: invalid EWKB */ - return -1; - }; - } - return offset; -} - -static int -parseHexEwkbByte (const unsigned char high, const unsigned char low, - unsigned char *byte) -{ -/* parsing an Hexadecimal byte */ - unsigned char hex; - switch (high) - { - case '0': - hex = 16 * 0; - break; - case '1': - hex = 16 * 1; - break; - case '2': - hex = 16 * 2; - break; - case '3': - hex = 16 * 3; - break; - case '4': - hex = 16 * 4; - break; - case '5': - hex = 16 * 5; - break; - case '6': - hex = 16 * 6; - break; - case '7': - hex = 16 * 7; - break; - case '8': - hex = 16 * 8; - break; - case '9': - hex = 16 * 9; - break; - case 'A': - case 'a': - hex = 16 * 10; - break; - case 'B': - case 'b': - hex = 16 * 11; - break; - case 'C': - case 'c': - hex = 16 * 12; - break; - case 'D': - case 'd': - hex = 16 * 13; - break; - case 'E': - case 'e': - hex = 16 * 14; - break; - case 'F': - case 'f': - hex = 16 * 15; - break; - default: - return 0; - }; - switch (low) - { - case '0': - hex += 0; - break; - case '1': - hex += 1; - break; - case '2': - hex += 2; - break; - case '3': - hex += 3; - break; - case '4': - hex += 4; - break; - case '5': - hex += 5; - break; - case '6': - hex += 6; - break; - case '7': - hex += 7; - break; - case '8': - hex += 8; - break; - case '9': - hex += 9; - break; - case 'A': - case 'a': - hex += 10; - break; - case 'B': - case 'b': - hex += 11; - break; - case 'C': - case 'c': - hex += 12; - break; - case 'D': - case 'd': - hex += 13; - break; - case 'E': - case 'e': - hex += 14; - break; - case 'F': - case 'f': - hex += 15; - break; - default: - return 0; - }; - *byte = hex; - return 1; -} - -GAIAGEO_DECLARE unsigned char * -gaiaParseHexEWKB (const unsigned char *blob_hex, int *blob_size) -{ -/* parsing an Hexadecimal EWKB Geometry */ - unsigned char *blob; - unsigned char *p_out; - const unsigned char *p_in; - char high; - char low; - unsigned char hex; - int size; - int len = strlen ((const char *) blob_hex); - size = len / 2; - if (size * 2 != len) - return NULL; - blob = malloc (size); - if (!blob) - return NULL; - *blob_size = size; - p_in = blob_hex; - p_out = blob; - while (*p_in != '\0') - { - high = *p_in++; - low = *p_in++; - if (!parseHexEwkbByte (high, low, &hex)) - { - free (blob); - return NULL; - } - *p_out++ = hex; - } - *blob_size = size; - return blob; -} - -gaiaGeomCollPtr -gaiaFromEWKB (const unsigned char *in_buffer) -{ -/* creates a Gaia own Geometry from GEOS/PostGIS EWKB */ - unsigned char *blob; - int blob_size; - unsigned char xtype[4]; - unsigned char xdims; - int type; - int has_z = 0; - int has_m = 0; - int dims = GAIA_XY; - int srid; - int ret; - int endian; - int endian_arch = gaiaEndianArch (); - gaiaGeomCollPtr geom = NULL; - blob = gaiaParseHexEWKB (in_buffer, &blob_size); - if (!blob) - return NULL; - if (blob_size < 9) - { - free (blob); - return NULL; - } - if (*(blob + 0) == 0x01) - endian = 1; - else - endian = 0; - memcpy (xtype, blob + 1, 4); - if (endian) - { - xdims = xtype[3]; - xtype[3] = 0x00; - } - else - { - xdims = xtype[0]; - xtype[0] = 0x00; - } - type = gaiaImport32 (xtype, endian, endian_arch); - if (xdims & 0x40) - has_m = 1; - if (xdims & 0x80) - has_z = 1; - if (has_m && has_z) - { - dims = GAIA_XY_Z_M; - geom = gaiaAllocGeomCollXYZM (); - } - else if (has_m) - { - dims = GAIA_XY_M; - geom = gaiaAllocGeomCollXYM (); - } - else if (has_z) - { - dims = GAIA_XY_Z; - geom = gaiaAllocGeomCollXYZ (); - } - else - { - dims = GAIA_XY; - geom = gaiaAllocGeomColl (); - } - srid = gaiaImport32 (blob + 5, endian, endian_arch); - geom->Srid = srid; - if (geom->Srid <= 0) - geom->Srid = 0; - switch (type) - { - case GAIA_POINT: - ret = - gaiaEwkbGetPoint (geom, blob, 9, blob_size, endian, endian_arch, - dims); - break; - case GAIA_LINESTRING: - ret = - gaiaEwkbGetLinestring (geom, blob, 9, blob_size, endian, - endian_arch, dims); - break; - case GAIA_POLYGON: - ret = - gaiaEwkbGetPolygon (geom, blob, 9, blob_size, endian, endian_arch, - dims); - break; - default: - ret = - gaiaEwkbGetMultiGeometry (geom, blob, 9, blob_size, endian, - endian_arch, dims); - break; - }; - free (blob); - if (ret < 0) - { - /* invalid EWKB !!! */ - gaiaFreeGeomColl (geom); - return NULL; - } - return geom; -} - -GAIAGEO_DECLARE void -gaiaToEWKB (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom) -{ -/* prints the GEOS/PostGIS EWKB text representation of current geometry */ - char buf[2048]; - unsigned char endian_buf[16]; - char byte[3]; - char *ptr; - int size; - int type; - int entities = 0; - int n_points = 0; - int n_linestrings = 0; - int n_polygons = 0; - int i; - int iv; - int ib; - double x; - double y; - double z; - double m; - int endian_arch = gaiaEndianArch (); - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - gaiaPointPtr point = NULL; - gaiaLinestringPtr line = NULL; - gaiaPolygonPtr polyg = NULL; - -/* precomputing the required size */ - sprintf (buf, "SRID=%d;", geom->Srid); - size = strlen (buf); /* the header size */ - size++; /* terminating '\0' */ - pt = geom->FirstPoint; - while (pt) - { - point = pt; - entities++; - n_points++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - line = ln; - entities++; - n_linestrings++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - polyg = pg; - entities++; - n_polygons++; - pg = pg->Next; - } - if (n_points == 0 && n_polygons == 0 && n_linestrings == 0) - return; -/* ok, we can determine the geometry class */ - if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTIPOINT) - type = GAIA_MULTIPOINT; - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_POINT; - } - else if (n_points > 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_MULTIPOINT; - } - else if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTILINESTRING) - type = GAIA_MULTILINESTRING; - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_LINESTRING; - } - else if (n_points == 0 && n_linestrings > 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_MULTILINESTRING; - } - else if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) - { - if (geom->DeclaredType == GAIA_MULTIPOLYGON) - type = GAIA_MULTIPOLYGON; - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_POLYGON; - } - else if (n_points == 0 && n_linestrings == 0 && n_polygons > 1) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_MULTIPOLYGON; - } - else - type = GAIA_GEOMETRYCOLLECTION; -/* and now we compute the size of EWKB */ - size += 10; /* header size */ - if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING - || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) - size += 8; - point = geom->FirstPoint; - while (point) - { - if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING - || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) - size += 10; - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_M) - size += 48; /* three doubles for each POINT */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - size += 64; /* four doubles for each POINT */ - else - size += 32; /* two doubles for each POINT */ - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING - || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) - size += 10; - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_M) - size += 8 + (line->Points * 48); /* three doubles for each VERTEX */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - size += 8 + (line->Points * 64); /* four doubles for each VERTEX */ - else - size += 8 + (line->Points * 32); /* two doubles for each VERTEX */ - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING - || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) - size += 10; - rng = polyg->Exterior; - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_M) - size += 16 + (rng->Points * 48); /* three doubles for each VERTEX */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - size += 16 + (rng->Points * 64); /* four doubles for each VERTEX */ - else - size += 16 + (rng->Points * 32); /* two doubles for each VERTEX */ - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_M) - size += 8 + (rng->Points * 48); /* three doubles for each VERTEX */ - else if (geom->DimensionModel == GAIA_XY_Z_M) - size += 8 + (rng->Points * 64); /* four doubles for each VERTEX */ - else - size += 8 + (rng->Points * 32); /* two doubles for each VERTEX */ - } - polyg = polyg->Next; - } -/* and finally we build the EWKB expression */ - sprintf (buf, "SRID=%d;", geom->Srid); - gaiaAppendToOutBuffer (out_buf, buf); - ptr = buf; - - *ptr++ = '0'; /* little endian byte order */ - *ptr++ = '1'; - gaiaExport32 (endian_buf, type, 1, endian_arch); /* the main CLASS TYPE */ - for (i = 0; i < 3; i++) - { - /* CAVEAT: the 4th byte in PostGIS encodes M/Z presence !!!! */ - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } -/* marking M/Z presence */ - if (geom->DimensionModel == GAIA_XY_Z) - *ptr++ = '8'; - else if (geom->DimensionModel == GAIA_XY_M) - *ptr++ = '4'; - else if (geom->DimensionModel == GAIA_XY_Z_M) - *ptr++ = 'C'; - else - *ptr++ = '0'; - *ptr++ = '0'; - *ptr++ = '\0'; - gaiaAppendToOutBuffer (out_buf, buf); - ptr = buf; - if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING - || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) - { - gaiaExport32 (endian_buf, entities, 1, endian_arch); /* it's a collection; # entities */ - for (i = 0; i < 4; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - } - point = geom->FirstPoint; - while (point) - { - if ((ptr - buf) > 1024) - { - /* flushing the internal buffer */ - *ptr++ = '\0'; - gaiaAppendToOutBuffer (out_buf, buf); - ptr = buf; - } - if (type == GAIA_MULTIPOINT || type == GAIA_GEOMETRYCOLLECTION) - { - *ptr++ = '0'; - *ptr++ = '1'; - /* it's a collection: the CLASS TYPE for this element */ - gaiaExport32 (endian_buf, GAIA_POINT, 1, endian_arch); - for (i = 0; i < 3; i++) - { - /* CAVEAT: the 4th byte in PostGIS encodes M/Z presence !!!! */ - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - /* marking M/Z presence */ - if (geom->DimensionModel == GAIA_XY_Z) - *ptr++ = '8'; - else if (geom->DimensionModel == GAIA_XY_M) - *ptr++ = '4'; - else if (geom->DimensionModel == GAIA_XY_Z_M) - *ptr++ = 'C'; - else - *ptr++ = '0'; - *ptr++ = '0'; - } - gaiaExport64 (endian_buf, point->X, 1, endian_arch); /* X */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - gaiaExport64 (endian_buf, point->Y, 1, endian_arch); /* Y */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaExport64 (endian_buf, point->Z, 1, endian_arch); /* Z */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaExport64 (endian_buf, point->M, 1, endian_arch); /* M */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaExport64 (endian_buf, point->Z, 1, endian_arch); /* Z */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - gaiaExport64 (endian_buf, point->M, 1, endian_arch); /* M */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - } - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - if ((ptr - buf) > 1024) - { - /* flushing the internal buffer */ - *ptr++ = '\0'; - gaiaAppendToOutBuffer (out_buf, buf); - ptr = buf; - } - if (type == GAIA_MULTILINESTRING || type == GAIA_GEOMETRYCOLLECTION) - { - *ptr++ = '0'; - *ptr++ = '1'; - /* it's a collection: the CLASS TYPE for this element */ - gaiaExport32 (endian_buf, GAIA_LINESTRING, 1, endian_arch); - for (i = 0; i < 3; i++) - { - /* CAVEAT: the 4th byte in PostGIS encodes M/Z presence !!!! */ - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - /* marking M/Z presence */ - if (geom->DimensionModel == GAIA_XY_Z) - *ptr++ = '8'; - else if (geom->DimensionModel == GAIA_XY_M) - *ptr++ = '4'; - else if (geom->DimensionModel == GAIA_XY_Z_M) - *ptr++ = 'C'; - else - *ptr++ = '0'; - *ptr++ = '0'; - } - gaiaExport32 (endian_buf, line->Points, 1, endian_arch); /* # points */ - for (i = 0; i < 4; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - for (iv = 0; iv < line->Points; iv++) - { - if ((ptr - buf) > 1024) - { - /* flushing the internal buffer */ - *ptr++ = '\0'; - gaiaAppendToOutBuffer (out_buf, buf); - ptr = buf; - } - gaiaLineGetPoint (line, iv, &x, &y, &z, &m); - gaiaExport64 (endian_buf, x, 1, endian_arch); /* X */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - gaiaExport64 (endian_buf, y, 1, endian_arch); /* Y */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaExport64 (endian_buf, z, 1, endian_arch); /* Z */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaExport64 (endian_buf, m, 1, endian_arch); /* M */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaExport64 (endian_buf, z, 1, endian_arch); /* Z */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - gaiaExport64 (endian_buf, m, 1, endian_arch); /* M */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - } - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - if ((ptr - buf) > 1024) - { - /* flushing the internal buffer */ - *ptr++ = '\0'; - gaiaAppendToOutBuffer (out_buf, buf); - ptr = buf; - } - if (type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) - { - *ptr++ = '0'; - *ptr++ = '1'; - /* it's a collection: the CLASS TYPE for this element */ - gaiaExport32 (endian_buf, GAIA_POLYGON, 1, endian_arch); - for (i = 0; i < 3; i++) - { - /* CAVEAT: the 4th byte in PostGIS encodes M/Z presence !!!! */ - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - /* marking M/Z presence */ - if (geom->DimensionModel == GAIA_XY_Z) - *ptr++ = '8'; - else if (geom->DimensionModel == GAIA_XY_M) - *ptr++ = '4'; - else if (geom->DimensionModel == GAIA_XY_Z_M) - *ptr++ = 'C'; - else - *ptr++ = '0'; - *ptr++ = '0'; - } - gaiaExport32 (endian_buf, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ - for (i = 0; i < 4; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - rng = polyg->Exterior; - gaiaExport32 (endian_buf, rng->Points, 1, endian_arch); /* # points - exterior ring */ - for (i = 0; i < 4; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - for (iv = 0; iv < rng->Points; iv++) - { - if ((ptr - buf) > 1024) - { - /* flushing the internal buffer */ - *ptr++ = '\0'; - gaiaAppendToOutBuffer (out_buf, buf); - ptr = buf; - } - gaiaRingGetPoint (rng, iv, &x, &y, &z, &m); - gaiaExport64 (endian_buf, x, 1, endian_arch); /* X - exterior ring */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - gaiaExport64 (endian_buf, y, 1, endian_arch); /* Y - exterior ring */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaExport64 (endian_buf, z, 1, endian_arch); /* Z */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaExport64 (endian_buf, m, 1, endian_arch); /* M */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaExport64 (endian_buf, z, 1, endian_arch); /* Z */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - gaiaExport64 (endian_buf, m, 1, endian_arch); /* M */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - } - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaExport32 (endian_buf, rng->Points, 1, endian_arch); /* # points - interior ring */ - for (i = 0; i < 4; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - for (iv = 0; iv < rng->Points; iv++) - { - if ((ptr - buf) > 1024) - { - /* flushing the internal buffer */ - *ptr++ = '\0'; - gaiaAppendToOutBuffer (out_buf, buf); - ptr = buf; - } - gaiaRingGetPoint (rng, iv, &x, &y, &z, &m); - gaiaExport64 (endian_buf, x, 1, endian_arch); /* X - interior ring */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - gaiaExport64 (endian_buf, y, 1, endian_arch); /* Y - interior ring */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaExport64 (endian_buf, z, 1, endian_arch); /* Z */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaExport64 (endian_buf, m, 1, endian_arch); /* M */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaExport64 (endian_buf, z, 1, endian_arch); /* Z */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - gaiaExport64 (endian_buf, m, 1, endian_arch); /* M */ - for (i = 0; i < 8; i++) - { - sprintf (byte, "%02X", endian_buf[i]); - *ptr++ = byte[0]; - *ptr++ = byte[1]; - } - } - } - } - polyg = polyg->Next; - } - -/* terminating the EWKB string */ - *ptr = '\0'; - gaiaAppendToOutBuffer (out_buf, buf); -} - -static int -coordDimsFromFgf (int endian_arch, const unsigned char *blob, unsigned int size, - int *type) -{ -/* decoding the coordinate Dimensions for an FGF Geometry */ - int coord_dims; - if (size < 4) - return 0; - coord_dims = gaiaImport32 (blob, GAIA_LITTLE_ENDIAN, endian_arch); - *type = coord_dims; - switch (coord_dims) - { - case GAIA_XY: - return 2; - case GAIA_XY_M: - case GAIA_XY_Z: - return 3; - case GAIA_XY_Z_M: - return 4; - default: - return 0; - } -} - -static int -pointFromFgf (gaiaGeomCollPtr geom, int endian_arch, const unsigned char *blob, - unsigned int size, unsigned int *consumed) -{ -/* decoding a POINT Geometry from FGF */ - double x; - double y; - double z; - double m; - unsigned int sz = size; - const unsigned char *ptr = blob; - int coord_dims; - int type; -/* checking Geometry Type */ - if (sz < 4) - return 0; - if (gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch) != GAIA_POINT) - return 0; - ptr += 4; - sz -= 4; -/* checking size */ - if (sz < 4) - return 0; - coord_dims = coordDimsFromFgf (endian_arch, ptr, size, &type); - if (!coord_dims) - return 0; - ptr += 4; - sz -= 4; - if (sz < (coord_dims * sizeof (double))) - return 0; - if (consumed) - *consumed = coord_dims * sizeof (double); - if (type == GAIA_XY_Z) - { - /* building the POINTZ */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - y = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); - z = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaAddPointToGeomCollXYZ (geom, x, y, z); - } - else if (type == GAIA_XY_M) - { - /* building the POINTM */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - y = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); - m = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaAddPointToGeomCollXYM (geom, x, y, m); - } - else if (type == GAIA_XY_Z_M) - { - /* building the POINTZM */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - y = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); - z = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); - m = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaAddPointToGeomCollXYZM (geom, x, y, z, m); - } - else - { - /* building the POINT */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - y = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); - gaiaAddPointToGeomColl (geom, x, y); - } - return 1; -} - -static int -linestringFromFgf (gaiaGeomCollPtr geom, int endian_arch, - const unsigned char *blob, unsigned int size, - unsigned int *consumed) -{ -/* decoding a LINESTRING Geometry from FGF */ - gaiaLinestringPtr ln; - int pts; - int iv; - double x; - double y; - unsigned int ln_sz; - unsigned int sz = size; - const unsigned char *ptr = blob; - int coord_dims; - int type; -/* checking Geometry Type */ - if (sz < 4) - return 0; - if (gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch) != GAIA_LINESTRING) - return 0; - ptr += 4; - sz -= 4; -/* checking size */ - coord_dims = coordDimsFromFgf (endian_arch, ptr, size, &type); - if (!coord_dims) - return 0; - ptr += 4; - sz -= 4; -/* how many points are there ? */ - if (sz < 4) - return 0; - pts = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - ptr += 4; - sz -= 4; - if (pts < 2) - return 0; - ln_sz = pts * coord_dims * sizeof (double); - if (sz < ln_sz) - return 0; - if (consumed) - *consumed = (12 + ln_sz); - if (type == GAIA_XY_Z) - { - /* building the LINESTRINGZ */ - geom->DimensionModel = GAIA_XY_Z; - ln = gaiaAddLinestringToGeomColl (geom, pts); - for (iv = 0; iv < pts; iv++) - { - /* inserting vertices into the linestring */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - y = gaiaImport64 (ptr + sizeof (double), GAIA_LITTLE_ENDIAN, - endian_arch); - ptr += (coord_dims * sizeof (double)); - gaiaSetPoint (ln->Coords, iv, x, y); - } - } - else if (type == GAIA_XY_M) - { - /* building the LINESTRINGM */ - geom->DimensionModel = GAIA_XY_M; - ln = gaiaAddLinestringToGeomColl (geom, pts); - for (iv = 0; iv < pts; iv++) - { - /* inserting vertices into the linestring */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - y = gaiaImport64 (ptr + sizeof (double), GAIA_LITTLE_ENDIAN, - endian_arch); - ptr += (coord_dims * sizeof (double)); - gaiaSetPoint (ln->Coords, iv, x, y); - } - } - else if (type == GAIA_XY_Z_M) - { - /* building the LINESTRINGZM */ - geom->DimensionModel = GAIA_XY_Z_M; - ln = gaiaAddLinestringToGeomColl (geom, pts); - for (iv = 0; iv < pts; iv++) - { - /* inserting vertices into the linestring */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - y = gaiaImport64 (ptr + sizeof (double), GAIA_LITTLE_ENDIAN, - endian_arch); - ptr += (coord_dims * sizeof (double)); - gaiaSetPoint (ln->Coords, iv, x, y); - } - } - else - { - /* building the LINESTRING */ - geom->DimensionModel = GAIA_XY; - ln = gaiaAddLinestringToGeomColl (geom, pts); - for (iv = 0; iv < pts; iv++) - { - /* inserting vertices into the linestring */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - y = gaiaImport64 (ptr + sizeof (double), GAIA_LITTLE_ENDIAN, - endian_arch); - ptr += (coord_dims * sizeof (double)); - gaiaSetPoint (ln->Coords, iv, x, y); - } - } - return 1; -} - -static int -polygonFromFgf (gaiaGeomCollPtr geom, int endian_arch, - const unsigned char *blob, unsigned int size, - unsigned int *consumed) -{ -/* decoding a POLYGON Geometry from FGF */ - gaiaPolygonPtr pg = NULL; - gaiaRingPtr rng; - int rings; - int ir; - int pts; - int iv; - double x; - double y; - double z; - double m; - unsigned int rng_sz; - unsigned int sz = size; - const unsigned char *ptr = blob; - int coord_dims; - int type; - unsigned int bytes = 0; -/* checking Geometry Type */ - if (sz < 4) - return 0; - if (gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch) != GAIA_POLYGON) - return 0; - ptr += 4; - sz -= 4; - bytes += 4; -/* checking size */ - coord_dims = coordDimsFromFgf (endian_arch, ptr, size, &type); - if (!coord_dims) - return 0; - ptr += 4; - sz -= 4; - bytes += 4; -/* how many rings are there ? */ - if (sz < 4) - return 0; - rings = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - ptr += 4; - sz -= 4; - bytes += 4; - if (rings < 1) - return 0; - for (ir = 0; ir < rings; ir++) - { - /* fetching Polygon's rings */ - if (sz < 4) - return 0; - pts = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - ptr += 4; - sz -= 4; - bytes += 4; - if (pts < 4) - return 0; - rng_sz = pts * coord_dims * sizeof (double); - if (sz < rng_sz) - return 0; - bytes += rng_sz; - if (type == GAIA_XY_Z) - { - /* POLYGONZ */ - geom->DimensionModel = GAIA_XY_Z; - if (ir == 0) - { - /* building the EXTERIOR RING */ - pg = gaiaAddPolygonToGeomColl (geom, pts, rings - 1); - rng = pg->Exterior; - for (iv = 0; iv < pts; iv++) - { - /* inserting vertices into the EXTERIOR Ring */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, - endian_arch); - y = gaiaImport64 (ptr + sizeof (double), - GAIA_LITTLE_ENDIAN, endian_arch); - z = gaiaImport64 (ptr + (sizeof (double) * 2), - GAIA_LITTLE_ENDIAN, endian_arch); - ptr += (coord_dims * sizeof (double)); - gaiaSetPointXYZ (rng->Coords, iv, x, y, z); - } - } - else - { - /* building an INTERIOR RING */ - rng = gaiaAddInteriorRing (pg, ir - 1, pts); - for (iv = 0; iv < pts; iv++) - { - /* inserting vertices into some INTERIOR Ring */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, - endian_arch); - y = gaiaImport64 (ptr + sizeof (double), - GAIA_LITTLE_ENDIAN, endian_arch); - z = gaiaImport64 (ptr + (sizeof (double) * 2), - GAIA_LITTLE_ENDIAN, endian_arch); - ptr += (coord_dims * sizeof (double)); - gaiaSetPointXYZ (rng->Coords, iv, x, y, z); - } - } - } - if (type == GAIA_XY_M) - { - /* POLYGONM */ - geom->DimensionModel = GAIA_XY_M; - if (ir == 0) - { - /* building the EXTERIOR RING */ - pg = gaiaAddPolygonToGeomColl (geom, pts, rings - 1); - rng = pg->Exterior; - for (iv = 0; iv < pts; iv++) - { - /* inserting vertices into the EXTERIOR Ring */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, - endian_arch); - y = gaiaImport64 (ptr + sizeof (double), - GAIA_LITTLE_ENDIAN, endian_arch); - m = gaiaImport64 (ptr + (sizeof (double) * 2), - GAIA_LITTLE_ENDIAN, endian_arch); - ptr += (coord_dims * sizeof (double)); - gaiaSetPointXYM (rng->Coords, iv, x, y, m); - } - } - else - { - /* building an INTERIOR RING */ - rng = gaiaAddInteriorRing (pg, ir - 1, pts); - for (iv = 0; iv < pts; iv++) - { - /* inserting vertices into some INTERIOR Ring */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, - endian_arch); - y = gaiaImport64 (ptr + sizeof (double), - GAIA_LITTLE_ENDIAN, endian_arch); - m = gaiaImport64 (ptr + (sizeof (double) * 2), - GAIA_LITTLE_ENDIAN, endian_arch); - ptr += (coord_dims * sizeof (double)); - gaiaSetPointXYM (rng->Coords, iv, x, y, m); - } - } - } - else if (type == GAIA_XY_Z_M) - { - /* POLYGONZM */ - geom->DimensionModel = GAIA_XY_Z_M; - if (ir == 0) - { - /* building the EXTERIOR RING */ - pg = gaiaAddPolygonToGeomColl (geom, pts, rings - 1); - rng = pg->Exterior; - for (iv = 0; iv < pts; iv++) - { - /* inserting vertices into the EXTERIOR Ring */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, - endian_arch); - y = gaiaImport64 (ptr + sizeof (double), - GAIA_LITTLE_ENDIAN, endian_arch); - z = gaiaImport64 (ptr + (sizeof (double) * 2), - GAIA_LITTLE_ENDIAN, endian_arch); - m = gaiaImport64 (ptr + (sizeof (double) * 3), - GAIA_LITTLE_ENDIAN, endian_arch); - ptr += (coord_dims * sizeof (double)); - gaiaSetPointXYZM (rng->Coords, iv, x, y, z, m); - } - } - else - { - /* building an INTERIOR RING */ - rng = gaiaAddInteriorRing (pg, ir - 1, pts); - for (iv = 0; iv < pts; iv++) - { - /* inserting vertices into some INTERIOR Ring */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, - endian_arch); - y = gaiaImport64 (ptr + sizeof (double), - GAIA_LITTLE_ENDIAN, endian_arch); - z = gaiaImport64 (ptr + (sizeof (double) * 2), - GAIA_LITTLE_ENDIAN, endian_arch); - m = gaiaImport64 (ptr + (sizeof (double) * 3), - GAIA_LITTLE_ENDIAN, endian_arch); - ptr += (coord_dims * sizeof (double)); - gaiaSetPointXYZM (rng->Coords, iv, x, y, z, m); - } - } - } - else - { - /* POLYGON */ - geom->DimensionModel = GAIA_XY; - if (ir == 0) - { - /* building the EXTERIOR RING */ - pg = gaiaAddPolygonToGeomColl (geom, pts, rings - 1); - rng = pg->Exterior; - for (iv = 0; iv < pts; iv++) - { - /* inserting vertices into the EXTERIOR Ring */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, - endian_arch); - y = gaiaImport64 (ptr + sizeof (double), - GAIA_LITTLE_ENDIAN, endian_arch); - ptr += (coord_dims * sizeof (double)); - gaiaSetPoint (rng->Coords, iv, x, y); - } - } - else - { - /* building an INTERIOR RING */ - rng = gaiaAddInteriorRing (pg, ir - 1, pts); - for (iv = 0; iv < pts; iv++) - { - /* inserting vertices into some INTERIOR Ring */ - x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, - endian_arch); - y = gaiaImport64 (ptr + sizeof (double), - GAIA_LITTLE_ENDIAN, endian_arch); - ptr += (coord_dims * sizeof (double)); - gaiaSetPoint (rng->Coords, iv, x, y); - } - } - } - sz -= rng_sz; - } - if (consumed) - *consumed = bytes; - return 1; -} - -static int -multiPointFromFgf (gaiaGeomCollPtr geom, int endian_arch, - const unsigned char *blob, unsigned int size) -{ -/* decoding a MULTIPOINT Geometry from FGF */ - int pts; - int ipt; - unsigned int sz = size; - const unsigned char *ptr = blob; - unsigned int consumed; -/* checking Geometry Type */ - if (sz < 4) - return 0; - if (gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch) != GAIA_MULTIPOINT) - return 0; - ptr += 4; - sz -= 4; -/* how many points are there ? */ - if (sz < 4) - return 0; - pts = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - ptr += 4; - sz -= 4; - if (pts < 1) - return 0; - for (ipt = 0; ipt < pts; ipt++) - { - /* fetching individual Points from FGF */ - if (!pointFromFgf (geom, endian_arch, ptr, sz, &consumed)) - return 0; - ptr += consumed; - sz -= consumed; - } - return 1; -} - -static int -multiLinestringFromFgf (gaiaGeomCollPtr geom, int endian_arch, - const unsigned char *blob, unsigned int size) -{ -/* decoding a MULTILINESTRING Geometry from FGF */ - int lns; - int iln; - unsigned int sz = size; - const unsigned char *ptr = blob; - unsigned int consumed; -/* checking Geometry Type */ - if (sz < 4) - return 0; - if (gaiaImport32 - (ptr, GAIA_LITTLE_ENDIAN, endian_arch) != GAIA_MULTILINESTRING) - return 0; - ptr += 4; - sz -= 4; -/* how many linestrings are there ? */ - if (sz < 4) - return 0; - lns = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - ptr += 4; - sz -= 4; - if (lns < 1) - return 0; - for (iln = 0; iln < lns; iln++) - { - /* fetching individual Linestrings from FGF */ - if (!linestringFromFgf (geom, endian_arch, ptr, sz, &consumed)) - return 0; - ptr += consumed; - sz -= consumed; - } - return 1; -} - -static int -multiPolygonFromFgf (gaiaGeomCollPtr geom, int endian_arch, - const unsigned char *blob, unsigned int size) -{ -/* decoding a MULTIPOLYGON Geometry from FGF */ - int pgs; - int ipg; - unsigned int sz = size; - const unsigned char *ptr = blob; - unsigned int consumed; -/* checking Geometry Type */ - if (sz < 4) - return 0; - if (gaiaImport32 - (ptr, GAIA_LITTLE_ENDIAN, endian_arch) != GAIA_MULTIPOLYGON) - return 0; - ptr += 4; - sz -= 4; -/* how many polygons are there ? */ - if (sz < 4) - return 0; - pgs = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - ptr += 4; - sz -= 4; - if (pgs < 1) - return 0; - for (ipg = 0; ipg < pgs; ipg++) - { - /* fetching individual Polygons from FGF */ - if (!polygonFromFgf (geom, endian_arch, ptr, sz, &consumed)) - return 0; - ptr += consumed; - sz -= consumed; - } - return 1; -} - -static int -geomCollectionFromFgf (gaiaGeomCollPtr geom, int endian_arch, - const unsigned char *blob, unsigned int size) -{ -/* decoding a GEOMETRYCOLLECTION Geometry from FGF */ - int geoms; - int ig; - int geom_type; - unsigned int sz = size; - const unsigned char *ptr = blob; - unsigned int consumed; -/* checking Geometry Type */ - if (sz < 4) - return 0; - if (gaiaImport32 - (ptr, GAIA_LITTLE_ENDIAN, endian_arch) != GAIA_GEOMETRYCOLLECTION) - return 0; - ptr += 4; - sz -= 4; -/* how many individual Geometries are there ? */ - if (sz < 4) - return 0; - geoms = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - ptr += 4; - sz -= 4; - if (geoms < 1) - return 0; - for (ig = 0; ig < geoms; ig++) - { - /* fetching individual Geometries from FGF */ - if (sz < 4) - return 0; - geom_type = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); - switch (geom_type) - { - case GAIA_POINT: - if (!pointFromFgf (geom, endian_arch, ptr, sz, &consumed)) - return 0; - break; - case GAIA_LINESTRING: - if (!linestringFromFgf (geom, endian_arch, ptr, sz, &consumed)) - return 0; - break; - case GAIA_POLYGON: - if (!polygonFromFgf (geom, endian_arch, ptr, sz, &consumed)) - return 0; - break; - default: /* unsupported geometry type */ - return 0; - break; - }; - ptr += consumed; - sz -= consumed; - } - return 1; -} - -GAIAGEO_DECLARE gaiaGeomCollPtr -gaiaFromFgf (const unsigned char *blob, unsigned int size) -{ -/* decoding from FGF to GEOMETRY */ - gaiaGeomCollPtr geom = NULL; - int geom_type; - int endian_arch = gaiaEndianArch (); - if (size < 4) - return NULL; -/* checking FGF type */ - geom_type = gaiaImport32 (blob, GAIA_LITTLE_ENDIAN, endian_arch); - geom = gaiaAllocGeomColl (); - geom->DeclaredType = geom_type; - switch (geom_type) - { - case GAIA_POINT: - if (pointFromFgf (geom, endian_arch, blob, size, NULL)) - return geom; - break; - case GAIA_LINESTRING: - if (linestringFromFgf (geom, endian_arch, blob, size, NULL)) - return geom; - break; - case GAIA_POLYGON: - if (polygonFromFgf (geom, endian_arch, blob, size, NULL)) - return geom; - break; - case GAIA_MULTIPOINT: - if (multiPointFromFgf (geom, endian_arch, blob, size)) - return geom; - break; - case GAIA_MULTILINESTRING: - if (multiLinestringFromFgf (geom, endian_arch, blob, size)) - return geom; - break; - case GAIA_MULTIPOLYGON: - if (multiPolygonFromFgf (geom, endian_arch, blob, size)) - return geom; - break; - case GAIA_GEOMETRYCOLLECTION: - if (geomCollectionFromFgf (geom, endian_arch, blob, size)) - return geom; - break; - default: /* unsupported geometry type */ - break; - }; - gaiaFreeGeomColl (geom); - return NULL; -} - -GAIAGEO_DECLARE void -gaiaToFgf (gaiaGeomCollPtr geom, unsigned char **result, int *size, - int coord_dims) -{ -/* builds the FGF representation for this GEOMETRY */ - int ib; - int iv; - double x; - double y; - double z; - double m; - int entities = 0; - int n_points = 0; - int n_linestrings = 0; - int n_polygons = 0; - int type; - int n_coords; - unsigned char *ptr; - int sz = 0; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - gaiaPointPtr point = NULL; - gaiaLinestringPtr line = NULL; - gaiaPolygonPtr polyg = NULL; - int endian_arch = gaiaEndianArch (); - gaiaMbrGeometry (geom); - switch (coord_dims) - { - case GAIA_XY: - n_coords = 2; - break; - case GAIA_XY_M: - case GAIA_XY_Z: - n_coords = 3; - break; - case GAIA_XY_Z_M: - n_coords = 4; - break; - default: - n_coords = 0; - break; - } -/* how many entities, and of what kind, do we have ? */ - pt = geom->FirstPoint; - while (pt) - { - point = pt; - entities++; - n_points++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - line = ln; - entities++; - n_linestrings++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - polyg = pg; - entities++; - n_polygons++; - pg = pg->Next; - } - *size = 0; - sz = 0; - *result = NULL; - if (n_points == 0 && n_polygons == 0 && n_linestrings == 0) - return; -/* ok, we can determine the geometry class */ - if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTIPOINT) - type = GAIA_MULTIPOINT; - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_POINT; - } - else if (n_points > 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_MULTIPOINT; - } - else if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTILINESTRING) - type = GAIA_MULTILINESTRING; - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_LINESTRING; - } - else if (n_points == 0 && n_linestrings > 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_MULTILINESTRING; - } - else if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) - { - if (geom->DeclaredType == GAIA_MULTIPOLYGON) - type = GAIA_MULTIPOLYGON; - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_POLYGON; - } - else if (n_points == 0 && n_linestrings == 0 && n_polygons > 1) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOMETRYCOLLECTION; - else - type = GAIA_MULTIPOLYGON; - } - else - type = GAIA_GEOMETRYCOLLECTION; -/* and now we compute the size of FGF */ - if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING - || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) - sz += 8; - point = geom->FirstPoint; - while (point) - { - sz += (8 + (n_coords * sizeof (double))); /* the size of each POINT */ - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - sz += (12 + ((n_coords * sizeof (double)) * line->Points)); /* # points + [x,y] for each vertex */ - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - rng = polyg->Exterior; - sz += (16 + ((n_coords * sizeof (double)) * rng->Points)); /* # rings + # points + [x.y] array - exterior ring */ - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - sz += (4 + ((n_coords * sizeof (double)) * rng->Points)); /* # points + [x,y] array - interior ring */ - } - polyg = polyg->Next; - } - *size = sz; - ptr = malloc (sz); - *result = ptr; -/* and finally we build the FGF */ - if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING - || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) - { - gaiaExport32 (ptr, type, GAIA_LITTLE_ENDIAN, endian_arch); /* Geometry Type */ - ptr += 4; - gaiaExport32 (ptr, entities, GAIA_LITTLE_ENDIAN, endian_arch); /* it's a collection; # entities */ - ptr += 4; - } - point = geom->FirstPoint; - while (point) - { - gaiaExport32 (ptr, GAIA_POINT, GAIA_LITTLE_ENDIAN, endian_arch); /* the CLASS TYPE for this element */ - ptr += 4; - gaiaExport32 (ptr, coord_dims, GAIA_LITTLE_ENDIAN, endian_arch); /* the CoordDimension */ - ptr += 4; - gaiaExport64 (ptr, point->X, GAIA_LITTLE_ENDIAN, endian_arch); /* X */ - ptr += 8; - gaiaExport64 (ptr, point->Y, GAIA_LITTLE_ENDIAN, endian_arch); /* Y */ - ptr += 8; - if (n_coords > 2) - { - /* the third coordinate [Z or M] */ - if (coord_dims == GAIA_XY_Z || coord_dims == GAIA_XY_Z_M) - gaiaExport64 (ptr, point->Z, GAIA_LITTLE_ENDIAN, - endian_arch); - else - gaiaExport64 (ptr, point->M, GAIA_LITTLE_ENDIAN, - endian_arch); - ptr += 8; - } - if (n_coords > 3) - { - /* the fourth coordinate [M] */ - gaiaExport64 (ptr, point->M, GAIA_LITTLE_ENDIAN, endian_arch); - ptr += 8; - } - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - gaiaExport32 (ptr, GAIA_LINESTRING, GAIA_LITTLE_ENDIAN, endian_arch); /* the CLASS TYPE for this element */ - ptr += 4; - gaiaExport32 (ptr, coord_dims, GAIA_LITTLE_ENDIAN, endian_arch); /* the CoordDimension */ - ptr += 4; - gaiaExport32 (ptr, line->Points, GAIA_LITTLE_ENDIAN, endian_arch); /* # points */ - ptr += 4; - for (iv = 0; iv < line->Points; iv++) - { - z = 0.0; - m = 0.0; - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - gaiaExport64 (ptr, x, GAIA_LITTLE_ENDIAN, endian_arch); /* X */ - ptr += 8; - gaiaExport64 (ptr, y, GAIA_LITTLE_ENDIAN, endian_arch); /* Y */ - ptr += 8; - if (n_coords > 2) - { - /* the third coordinate [Z or M] */ - if (coord_dims == GAIA_XY_Z || coord_dims == GAIA_XY_Z_M) - gaiaExport64 (ptr, z, GAIA_LITTLE_ENDIAN, - endian_arch); - else - gaiaExport64 (ptr, m, GAIA_LITTLE_ENDIAN, - endian_arch); - ptr += 8; - } - if (n_coords > 3) - { - /* the fourth coordinate [M]; */ - gaiaExport64 (ptr, m, GAIA_LITTLE_ENDIAN, endian_arch); - ptr += 8; - } - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - gaiaExport32 (ptr, GAIA_POLYGON, GAIA_LITTLE_ENDIAN, endian_arch); /* the CLASS TYPE for this element */ - ptr += 4; - gaiaExport32 (ptr, coord_dims, GAIA_LITTLE_ENDIAN, endian_arch); /* the CoordDimension */ - ptr += 4; - gaiaExport32 (ptr, polyg->NumInteriors + 1, GAIA_LITTLE_ENDIAN, endian_arch); /* # rings */ - ptr += 4; - rng = polyg->Exterior; - gaiaExport32 (ptr, rng->Points, GAIA_LITTLE_ENDIAN, endian_arch); /* # points - exterior ring */ - ptr += 4; - for (iv = 0; iv < rng->Points; iv++) - { - z = 0.0; - m = 0.0; - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - gaiaExport64 (ptr, x, GAIA_LITTLE_ENDIAN, endian_arch); /* X - exterior ring */ - ptr += 8; - gaiaExport64 (ptr, y, GAIA_LITTLE_ENDIAN, endian_arch); /* Y - exterior ring */ - ptr += 8; - if (n_coords > 2) - { - /* the third coordinate [Z or M] */ - if (coord_dims == GAIA_XY_Z || coord_dims == GAIA_XY_Z_M) - gaiaExport64 (ptr, z, GAIA_LITTLE_ENDIAN, - endian_arch); - else - gaiaExport64 (ptr, m, GAIA_LITTLE_ENDIAN, - endian_arch); - ptr += 8; - } - if (n_coords > 3) - { - /* the fourth coordinate [M] */ - gaiaExport64 (ptr, m, GAIA_LITTLE_ENDIAN, endian_arch); - ptr += 8; - } - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ - ptr += 4; - for (iv = 0; iv < rng->Points; iv++) - { - z = 0.0; - m = 0.0; - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - gaiaExport64 (ptr, x, GAIA_LITTLE_ENDIAN, endian_arch); /* X - interior ring */ - ptr += 8; - gaiaExport64 (ptr, y, GAIA_LITTLE_ENDIAN, endian_arch); /* Y - interior ring */ - ptr += 8; - if (n_coords > 2) - { - /* the third coordinate [Z or M]; defaulting to ZERO */ - if (coord_dims == GAIA_XY_Z - || coord_dims == GAIA_XY_Z_M) - gaiaExport64 (ptr, z, GAIA_LITTLE_ENDIAN, - endian_arch); - else - gaiaExport64 (ptr, m, GAIA_LITTLE_ENDIAN, - endian_arch); - ptr += 8; - } - if (n_coords > 3) - { - /* the fourth coordinate [M] */ - gaiaExport64 (ptr, m, GAIA_LITTLE_ENDIAN, - endian_arch); - ptr += 8; - } - } - } - polyg = polyg->Next; - } -} diff --git a/src/spatialite/src/gaiageo/gg_wkt.c b/src/spatialite/src/gaiageo/gg_wkt.c deleted file mode 100644 index b71e2e2..0000000 --- a/src/spatialite/src/gaiageo/gg_wkt.c +++ /dev/null @@ -1,4174 +0,0 @@ -/* - - gg_wkt.c -- Gaia common support for WKT encoded geometries - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Klaus Foerster klaus.foerster@svg.cc - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include - -#include - -static void -gaiaOutClean (char *buffer) -{ -/* cleans unneeded trailing zeros */ - int i; - for (i = strlen (buffer) - 1; i > 0; i--) - { - if (buffer[i] == '0') - buffer[i] = '\0'; - else - break; - } - if (buffer[i] == '.') - buffer[i] = '\0'; - if (strcmp (buffer, "-0") == 0) - { - /* avoiding to return embarassing NEGATIVE ZEROes */ - strcpy (buffer, "0"); - } - - if (strcmp (buffer, "-1.#QNAN") == 0 || strcmp (buffer, "NaN") == 0 - || strcmp (buffer, "1.#QNAN") == 0 - || strcmp (buffer, "-1.#IND") == 0 || strcmp (buffer, "1.#IND") == 0) - { - /* on Windows a NaN could be represented in "odd" ways */ - /* this is intended to restore a consistent behaviour */ - strcpy (buffer, "nan"); - } -} - -GAIAGEO_DECLARE void -gaiaOutBufferInitialize (gaiaOutBufferPtr buf) -{ -/* initializing a dynamically growing output buffer */ - buf->Buffer = NULL; - buf->WriteOffset = 0; - buf->BufferSize = 0; - buf->Error = 0; -} - -GAIAGEO_DECLARE void -gaiaOutBufferReset (gaiaOutBufferPtr buf) -{ -/* cleaning a dynamically growing output buffer */ - if (buf->Buffer) - free (buf->Buffer); - buf->Buffer = NULL; - buf->WriteOffset = 0; - buf->BufferSize = 0; - buf->Error = 0; -} - -GAIAGEO_DECLARE void -gaiaAppendToOutBuffer (gaiaOutBufferPtr buf, const char *text) -{ -/* appending a text string */ - int len = strlen (text); - int free_size = buf->BufferSize - buf->WriteOffset; - if ((len + 1) > free_size) - { - /* we must allocate a bigger buffer */ - int new_size; - char *new_buf; - if (buf->BufferSize == 0) - new_size = (len + 1) + 1024; - else if (buf->BufferSize <= 4196) - new_size = buf->BufferSize + (len + 1) + 4196; - else if (buf->BufferSize <= 65536) - new_size = buf->BufferSize + (len + 1) + 65536; - else - new_size = buf->BufferSize + (len + 1) + (1024 * 1024); - new_buf = malloc (new_size); - if (!new_buf) - { - buf->Error = 1; - return; - } - memcpy (new_buf, buf->Buffer, buf->WriteOffset); - if (buf->Buffer) - free (buf->Buffer); - buf->Buffer = new_buf; - buf->BufferSize = new_size; - } - strcpy (buf->Buffer + buf->WriteOffset, text); - buf->WriteOffset += len; -} - -static void -gaiaOutPointStrict (gaiaOutBufferPtr out_buf, gaiaPointPtr point, int precision) -{ -/* formats a WKT POINT [Strict 2D] */ - char *buf_x; - char *buf_y; - char *buf; - buf_x = sqlite3_mprintf ("%.*f", precision, point->X); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, point->Y); - gaiaOutClean (buf_y); - buf = sqlite3_mprintf ("%s %s", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); -} - -static void -gaiaOutPoint (gaiaOutBufferPtr out_buf, gaiaPointPtr point) -{ -/* formats a WKT POINT */ - char *buf_x; - char *buf_y; - char *buf; - buf_x = sqlite3_mprintf ("%1.6f", point->X); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", point->Y); - gaiaOutClean (buf_y); - buf = sqlite3_mprintf ("%s %s", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); -} - -GAIAGEO_DECLARE void -gaiaOutPointZ (gaiaOutBufferPtr out_buf, gaiaPointPtr point) -{ -/* formats a WKT POINTZ */ - char *buf_x; - char *buf_y; - char *buf_z; - char *buf; - buf_x = sqlite3_mprintf ("%1.6f", point->X); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", point->Y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.6f", point->Z); - gaiaOutClean (buf_z); - buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); -} - -static void -gaiaOutPointM (gaiaOutBufferPtr out_buf, gaiaPointPtr point) -{ -/* formats a WKT POINTM */ - char *buf_x; - char *buf_y; - char *buf_m; - char *buf; - buf_x = sqlite3_mprintf ("%1.6f", point->X); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", point->Y); - gaiaOutClean (buf_y); - buf_m = sqlite3_mprintf ("%1.6f", point->M); - gaiaOutClean (buf_m); - buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); -} - -static void -gaiaOutPointZM (gaiaOutBufferPtr out_buf, gaiaPointPtr point) -{ -/* formats a WKT POINTZM */ - char *buf_x; - char *buf_y; - char *buf_z; - char *buf_m; - char *buf; - buf_x = sqlite3_mprintf ("%1.6f", point->X); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", point->Y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.6f", point->Z); - gaiaOutClean (buf_z); - buf_m = sqlite3_mprintf ("%1.6f", point->M); - gaiaOutClean (buf_m); - buf = sqlite3_mprintf ("%s %s %s %s", buf_x, buf_y, buf_z, buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); -} - -static void -gaiaOutEwktPoint (gaiaOutBufferPtr out_buf, gaiaPointPtr point) -{ -/* formats an EWKT POINT */ - char *buf_x; - char *buf_y; - char *buf; - buf_x = sqlite3_mprintf ("%1.15f", point->X); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", point->Y); - gaiaOutClean (buf_y); - buf = sqlite3_mprintf ("%s %s", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); -} - -GAIAGEO_DECLARE void -gaiaOutEwktPointZ (gaiaOutBufferPtr out_buf, gaiaPointPtr point) -{ -/* formats an EWKT POINTZ */ - char *buf_x; - char *buf_y; - char *buf_z; - char *buf; - buf_x = sqlite3_mprintf ("%1.15f", point->X); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", point->Y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.15f", point->Z); - gaiaOutClean (buf_z); - buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); -} - -static void -gaiaOutEwktPointM (gaiaOutBufferPtr out_buf, gaiaPointPtr point) -{ -/* formats an EWKT POINTM */ - char *buf_x; - char *buf_y; - char *buf_m; - char *buf; - buf_x = sqlite3_mprintf ("%1.15f", point->X); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", point->Y); - gaiaOutClean (buf_y); - buf_m = sqlite3_mprintf ("%1.15f", point->M); - gaiaOutClean (buf_m); - buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); -} - -static void -gaiaOutEwktPointZM (gaiaOutBufferPtr out_buf, gaiaPointPtr point) -{ -/* formats an EWKT POINTZM */ - char *buf_x; - char *buf_y; - char *buf_z; - char *buf_m; - char *buf; - buf_x = sqlite3_mprintf ("%1.15f", point->X); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", point->Y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.15f", point->Z); - gaiaOutClean (buf_z); - buf_m = sqlite3_mprintf ("%1.15f", point->M); - gaiaOutClean (buf_m); - buf = sqlite3_mprintf ("%s %s %s %s", buf_x, buf_y, buf_z, buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); -} - -static void -gaiaOutLinestringStrict (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line, - int precision) -{ -/* formats a WKT LINESTRING [Strict 2D] */ - char *buf_x; - char *buf_y; - char *buf; - double x; - double y; - double z; - double m; - int iv; - for (iv = 0; iv < line->Points; iv++) - { - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - if (iv > 0) - buf = sqlite3_mprintf (",%s %s", buf_x, buf_y); - else - buf = sqlite3_mprintf ("%s %s", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } -} - -static void -gaiaOutLinestring (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) -{ -/* formats a WKT LINESTRING */ - char *buf_x; - char *buf_y; - char *buf; - double x; - double y; - int iv; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPoint (line->Coords, iv, &x, &y); - buf_x = sqlite3_mprintf ("%1.6f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", y); - gaiaOutClean (buf_y); - if (iv > 0) - buf = sqlite3_mprintf (", %s %s", buf_x, buf_y); - else - buf = sqlite3_mprintf ("%s %s", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } -} - -GAIAGEO_DECLARE void -gaiaOutLinestringZ (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) -{ -/* formats a WKT LINESTRINGZ */ - char *buf_x; - char *buf_y; - char *buf_z; - char *buf; - double x; - double y; - double z; - int iv; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - buf_x = sqlite3_mprintf ("%1.6f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.6f", z); - gaiaOutClean (buf_z); - if (iv > 0) - buf = sqlite3_mprintf (", %s %s %s", buf_x, buf_y, buf_z); - else - buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } -} - -static void -gaiaOutLinestringM (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) -{ -/* formats a WKT LINESTRINGM */ - char *buf_x; - char *buf_y; - char *buf_m; - char *buf; - double x; - double y; - double m; - int iv; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - buf_x = sqlite3_mprintf ("%1.6f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", y); - gaiaOutClean (buf_y); - buf_m = sqlite3_mprintf ("%1.6f", m); - gaiaOutClean (buf_m); - if (iv > 0) - buf = sqlite3_mprintf (", %s %s %s", buf_x, buf_y, buf_m); - else - buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } -} - -static void -gaiaOutLinestringZM (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) -{ -/* formats a WKT LINESTRINGZM */ - char *buf_x; - char *buf_y; - char *buf_z; - char *buf_m; - char *buf; - double x; - double y; - double z; - double m; - int iv; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - buf_x = sqlite3_mprintf ("%1.6f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.6f", z); - gaiaOutClean (buf_z); - buf_m = sqlite3_mprintf ("%1.6f", m); - gaiaOutClean (buf_m); - if (iv > 0) - buf = - sqlite3_mprintf (", %s %s %s %s", buf_x, buf_y, buf_z, buf_m); - else - buf = sqlite3_mprintf ("%s %s %s %s", buf_x, buf_y, buf_z, buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } -} - -static void -gaiaOutEwktLinestring (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) -{ -/* formats an EWKT LINESTRING */ - char *buf_x; - char *buf_y; - char *buf; - double x; - double y; - int iv; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPoint (line->Coords, iv, &x, &y); - buf_x = sqlite3_mprintf ("%1.15f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", y); - gaiaOutClean (buf_y); - if (iv > 0) - buf = sqlite3_mprintf (",%s %s", buf_x, buf_y); - else - buf = sqlite3_mprintf ("%s %s", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } -} - -GAIAGEO_DECLARE void -gaiaOutEwktLinestringZ (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) -{ -/* formats an EWKT LINESTRINGZ */ - char *buf_x; - char *buf_y; - char *buf_z; - char *buf; - double x; - double y; - double z; - int iv; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - buf_x = sqlite3_mprintf ("%1.15f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.15f", z); - gaiaOutClean (buf_z); - if (iv > 0) - buf = sqlite3_mprintf (",%s %s %s", buf_x, buf_y, buf_z); - else - buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } -} - -static void -gaiaOutEwktLinestringM (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) -{ -/* formats an EWKT LINESTRINGM */ - char *buf_x; - char *buf_y; - char *buf_m; - char *buf; - double x; - double y; - double m; - int iv; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - buf_x = sqlite3_mprintf ("%1.15f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", y); - gaiaOutClean (buf_y); - buf_m = sqlite3_mprintf ("%1.15f", m); - gaiaOutClean (buf_m); - if (iv > 0) - buf = sqlite3_mprintf (",%s %s %s", buf_x, buf_y, buf_m); - else - buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } -} - -static void -gaiaOutEwktLinestringZM (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) -{ -/* formats an EWKT LINESTRINGZM */ - char *buf_x; - char *buf_y; - char *buf_z; - char *buf_m; - char *buf; - double x; - double y; - double z; - double m; - int iv; - for (iv = 0; iv < line->Points; iv++) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - buf_x = sqlite3_mprintf ("%1.15f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.15f", z); - gaiaOutClean (buf_z); - buf_m = sqlite3_mprintf ("%1.15f", m); - gaiaOutClean (buf_m); - if (iv > 0) - buf = - sqlite3_mprintf (",%s %s %s %s", buf_x, buf_y, buf_z, buf_m); - else - buf = sqlite3_mprintf ("%s %s %s %s", buf_x, buf_y, buf_z, buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } -} - -static void -gaiaOutPolygonStrict (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg, - int precision) -{ -/* formats a WKT POLYGON [Strict 2D] */ - char *buf_x; - char *buf_y; - char *buf; - int ib; - int iv; - double x; - double y; - double z; - double m; - gaiaRingPtr ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - if (iv == 0) - buf = sqlite3_mprintf ("(%s %s", buf_x, buf_y); - else if (iv == (ring->Points - 1)) - buf = sqlite3_mprintf (",%s %s)", buf_x, buf_y); - else - buf = sqlite3_mprintf (",%s %s", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - if (iv == 0) - buf = sqlite3_mprintf (",(%s %s", buf_x, buf_y); - else if (iv == (ring->Points - 1)) - buf = sqlite3_mprintf (",%s %s)", buf_x, buf_y); - else - buf = sqlite3_mprintf (",%s %s", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - } -} - -static void -gaiaOutPolygon (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) -{ -/* formats a WKT POLYGON */ - char *buf_x; - char *buf_y; - char *buf; - int ib; - int iv; - double x; - double y; - gaiaRingPtr ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - buf_x = sqlite3_mprintf ("%1.6f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", y); - gaiaOutClean (buf_y); - if (iv == 0) - buf = sqlite3_mprintf ("(%s %s", buf_x, buf_y); - else if (iv == (ring->Points - 1)) - buf = sqlite3_mprintf (", %s %s)", buf_x, buf_y); - else - buf = sqlite3_mprintf (", %s %s", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - buf_x = sqlite3_mprintf ("%1.6f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", y); - gaiaOutClean (buf_y); - if (iv == 0) - buf = sqlite3_mprintf (", (%s %s", buf_x, buf_y); - else if (iv == (ring->Points - 1)) - buf = sqlite3_mprintf (", %s %s)", buf_x, buf_y); - else - buf = sqlite3_mprintf (", %s %s", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - } -} - -GAIAGEO_DECLARE void -gaiaOutPolygonZ (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) -{ -/* formats a WKT POLYGONZ */ - char *buf_x; - char *buf_y; - char *buf_z; - char *buf; - int ib; - int iv; - double x; - double y; - double z; - gaiaRingPtr ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - buf_x = sqlite3_mprintf ("%1.6f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.6f", z); - gaiaOutClean (buf_z); - if (iv == 0) - buf = sqlite3_mprintf ("(%s %s %s", buf_x, buf_y, buf_z); - else if (iv == (ring->Points - 1)) - buf = sqlite3_mprintf (", %s %s %s)", buf_x, buf_y, buf_z); - else - buf = sqlite3_mprintf (", %s %s %s", buf_x, buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - buf_x = sqlite3_mprintf ("%1.6f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.6f", z); - gaiaOutClean (buf_z); - if (iv == 0) - buf = sqlite3_mprintf (", (%s %s %s", buf_x, buf_y, buf_z); - else if (iv == (ring->Points - 1)) - buf = sqlite3_mprintf (", %s %s %s)", buf_x, buf_y, buf_z); - else - buf = sqlite3_mprintf (", %s %s %s", buf_x, buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - } -} - -static void -gaiaOutPolygonM (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) -{ -/* formats a WKT POLYGONM */ - char *buf_x; - char *buf_y; - char *buf_m; - char *buf; - int ib; - int iv; - double x; - double y; - double m; - gaiaRingPtr ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - buf_x = sqlite3_mprintf ("%1.6f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", y); - gaiaOutClean (buf_y); - buf_m = sqlite3_mprintf ("%1.6f", m); - gaiaOutClean (buf_m); - if (iv == 0) - buf = sqlite3_mprintf ("(%s %s %s", buf_x, buf_y, buf_m); - else if (iv == (ring->Points - 1)) - buf = sqlite3_mprintf (", %s %s %s)", buf_x, buf_y, buf_m); - else - buf = sqlite3_mprintf (", %s %s %s", buf_x, buf_y, buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - buf_x = sqlite3_mprintf ("%1.6f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", y); - gaiaOutClean (buf_y); - buf_m = sqlite3_mprintf ("%1.6f", m); - gaiaOutClean (buf_m); - if (iv == 0) - buf = sqlite3_mprintf (", (%s %s %s", buf_x, buf_y, buf_m); - else if (iv == (ring->Points - 1)) - buf = sqlite3_mprintf (", %s %s %s)", buf_x, buf_y, buf_m); - else - buf = sqlite3_mprintf (", %s %s %s", buf_x, buf_y, buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - } -} - -static void -gaiaOutPolygonZM (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) -{ -/* formats a WKT POLYGONZM */ - char *buf_x; - char *buf_y; - char *buf_z; - char *buf_m; - char *buf; - int ib; - int iv; - double x; - double y; - double z; - double m; - gaiaRingPtr ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - buf_x = sqlite3_mprintf ("%1.6f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.6f", z); - gaiaOutClean (buf_z); - buf_m = sqlite3_mprintf ("%1.6f", m); - gaiaOutClean (buf_m); - if (iv == 0) - buf = - sqlite3_mprintf ("(%s %s %s %s", buf_x, buf_y, buf_z, buf_m); - else if (iv == (ring->Points - 1)) - buf = - sqlite3_mprintf (", %s %s %s %s)", buf_x, buf_y, buf_z, - buf_m); - else - buf = - sqlite3_mprintf (", %s %s %s %s", buf_x, buf_y, buf_z, buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - buf_x = sqlite3_mprintf ("%1.6f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.6f", y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.6f", z); - gaiaOutClean (buf_z); - buf_m = sqlite3_mprintf ("%1.6f", m); - gaiaOutClean (buf_m); - if (iv == 0) - buf = - sqlite3_mprintf (", (%s %s %s %s", buf_x, buf_y, buf_z, - buf_m); - else if (iv == (ring->Points - 1)) - buf = - sqlite3_mprintf (", %s %s %s %s)", buf_x, buf_y, buf_z, - buf_m); - else - buf = - sqlite3_mprintf (", %s %s %s %s", buf_x, buf_y, buf_z, - buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - } -} - -static void -gaiaOutEwktPolygon (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) -{ -/* formats an EWKT POLYGON */ - char *buf_x; - char *buf_y; - char *buf; - int ib; - int iv; - double x; - double y; - gaiaRingPtr ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - buf_x = sqlite3_mprintf ("%1.15f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", y); - gaiaOutClean (buf_y); - if (iv == 0) - buf = sqlite3_mprintf ("(%s %s", buf_x, buf_y); - else if (iv == (ring->Points - 1)) - buf = sqlite3_mprintf (",%s %s)", buf_x, buf_y); - else - buf = sqlite3_mprintf (",%s %s", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - buf_x = sqlite3_mprintf ("%1.15f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", y); - gaiaOutClean (buf_y); - if (iv == 0) - buf = sqlite3_mprintf (",(%s %s", buf_x, buf_y); - else if (iv == (ring->Points - 1)) - buf = sqlite3_mprintf (",%s %s)", buf_x, buf_y); - else - buf = sqlite3_mprintf (",%s %s", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - } -} - -GAIAGEO_DECLARE void -gaiaOutEwktPolygonZ (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) -{ -/* formats an EWKT POLYGONZ */ - char *buf_x; - char *buf_y; - char *buf_z; - char *buf; - int ib; - int iv; - double x; - double y; - double z; - gaiaRingPtr ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - buf_x = sqlite3_mprintf ("%1.15f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.15f", z); - gaiaOutClean (buf_z); - if (iv == 0) - buf = sqlite3_mprintf ("(%s %s %s", buf_x, buf_y, buf_z); - else if (iv == (ring->Points - 1)) - buf = sqlite3_mprintf (",%s %s %s)", buf_x, buf_y, buf_z); - else - buf = sqlite3_mprintf (",%s %s %s", buf_x, buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - buf_x = sqlite3_mprintf ("%1.15f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.15f", z); - gaiaOutClean (buf_z); - if (iv == 0) - buf = sqlite3_mprintf (",(%s %s %s", buf_x, buf_y, buf_z); - else if (iv == (ring->Points - 1)) - buf = sqlite3_mprintf (",%s %s %s)", buf_x, buf_y, buf_z); - else - buf = sqlite3_mprintf (",%s %s %s", buf_x, buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - } -} - -static void -gaiaOutEwktPolygonM (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) -{ -/* formats an EWKT POLYGONM */ - char *buf_x; - char *buf_y; - char *buf_m; - char *buf; - int ib; - int iv; - double x; - double y; - double m; - gaiaRingPtr ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - buf_x = sqlite3_mprintf ("%1.15f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", y); - gaiaOutClean (buf_y); - buf_m = sqlite3_mprintf ("%1.15f", m); - gaiaOutClean (buf_m); - if (iv == 0) - buf = sqlite3_mprintf ("(%s %s %s", buf_x, buf_y, buf_m); - else if (iv == (ring->Points - 1)) - buf = sqlite3_mprintf (",%s %s %s)", buf_x, buf_y, buf_m); - else - buf = sqlite3_mprintf (",%s %s %s", buf_x, buf_y, buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - buf_x = sqlite3_mprintf ("%1.15f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", y); - gaiaOutClean (buf_y); - buf_m = sqlite3_mprintf ("%1.15f", m); - gaiaOutClean (buf_m); - if (iv == 0) - buf = sqlite3_mprintf (",(%s %s %s", buf_x, buf_y, buf_m); - else if (iv == (ring->Points - 1)) - buf = sqlite3_mprintf (",%s %s %s)", buf_x, buf_y, buf_m); - else - buf = sqlite3_mprintf (",%s %s %s", buf_x, buf_y, buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - } -} - -static void -gaiaOutEwktPolygonZM (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) -{ -/* formats an EWKT POLYGONZM */ - char *buf_x; - char *buf_y; - char *buf_z; - char *buf_m; - char *buf; - int ib; - int iv; - double x; - double y; - double z; - double m; - gaiaRingPtr ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - buf_x = sqlite3_mprintf ("%1.15f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.15f", z); - gaiaOutClean (buf_z); - buf_m = sqlite3_mprintf ("%1.15f", m); - gaiaOutClean (buf_m); - if (iv == 0) - buf = - sqlite3_mprintf ("(%s %s %s %s", buf_x, buf_y, buf_z, buf_m); - else if (iv == (ring->Points - 1)) - buf = - sqlite3_mprintf (",%s %s %s %s)", buf_x, buf_y, buf_z, buf_m); - else - buf = - sqlite3_mprintf (",%s %s %s %s", buf_x, buf_y, buf_z, buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - buf_x = sqlite3_mprintf ("%1.15f", x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%1.15f", y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%1.15f", z); - gaiaOutClean (buf_z); - buf_m = sqlite3_mprintf ("%1.15f", m); - gaiaOutClean (buf_m); - if (iv == 0) - buf = - sqlite3_mprintf (",(%s %s %s %s", buf_x, buf_y, buf_z, - buf_m); - else if (iv == (ring->Points - 1)) - buf = - sqlite3_mprintf (",%s %s %s %s)", buf_x, buf_y, buf_z, - buf_m); - else - buf = - sqlite3_mprintf (",%s %s %s %s", buf_x, buf_y, buf_z, - buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - sqlite3_free (buf_m); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - } -} - -GAIAGEO_DECLARE void -gaiaOutWkt (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom) -{ -/* prints the WKT representation of current geometry */ - int pts = 0; - int lns = 0; - int pgs = 0; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - if (!geom) - return; - point = geom->FirstPoint; - while (point) - { - /* counting how many POINTs are there */ - pts++; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* counting how many LINESTRINGs are there */ - lns++; - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* counting how many POLYGONs are there */ - pgs++; - polyg = polyg->Next; - } - if ((pts + lns + pgs) == 1 - && (geom->DeclaredType == GAIA_POINT - || geom->DeclaredType == GAIA_LINESTRING - || geom->DeclaredType == GAIA_POLYGON)) - { - /* we have only one elementary geometry */ - point = geom->FirstPoint; - while (point) - { - if (point->DimensionModel == GAIA_XY_Z) - { - /* processing POINTZ */ - gaiaAppendToOutBuffer (out_buf, "POINT Z("); - gaiaOutPointZ (out_buf, point); - } - else if (point->DimensionModel == GAIA_XY_M) - { - /* processing POINTM */ - gaiaAppendToOutBuffer (out_buf, "POINT M("); - gaiaOutPointM (out_buf, point); - } - else if (point->DimensionModel == GAIA_XY_Z_M) - { - /* processing POINTZM */ - gaiaAppendToOutBuffer (out_buf, "POINT ZM("); - gaiaOutPointZM (out_buf, point); - } - else - { - /* processing POINT */ - gaiaAppendToOutBuffer (out_buf, "POINT("); - gaiaOutPoint (out_buf, point); - } - gaiaAppendToOutBuffer (out_buf, ")"); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - if (line->DimensionModel == GAIA_XY_Z) - { - /* processing LINESTRINGZ */ - gaiaAppendToOutBuffer (out_buf, "LINESTRING Z("); - gaiaOutLinestringZ (out_buf, line); - } - else if (line->DimensionModel == GAIA_XY_M) - { - /* processing LINESTRINGM */ - gaiaAppendToOutBuffer (out_buf, "LINESTRING M("); - gaiaOutLinestringM (out_buf, line); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - /* processing LINESTRINGZM */ - gaiaAppendToOutBuffer (out_buf, "LINESTRING ZM("); - gaiaOutLinestringZM (out_buf, line); - } - else - { - /* processing LINESTRING */ - gaiaAppendToOutBuffer (out_buf, "LINESTRING("); - gaiaOutLinestring (out_buf, line); - } - gaiaAppendToOutBuffer (out_buf, ")"); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - if (polyg->DimensionModel == GAIA_XY_Z) - { - /* processing POLYGONZ */ - gaiaAppendToOutBuffer (out_buf, "POLYGON Z("); - gaiaOutPolygonZ (out_buf, polyg); - } - else if (polyg->DimensionModel == GAIA_XY_M) - { - /* processing POLYGONM */ - gaiaAppendToOutBuffer (out_buf, "POLYGON M("); - gaiaOutPolygonM (out_buf, polyg); - } - else if (polyg->DimensionModel == GAIA_XY_Z_M) - { - /* processing POLYGONZM */ - gaiaAppendToOutBuffer (out_buf, "POLYGON ZM("); - gaiaOutPolygonZM (out_buf, polyg); - } - else - { - /* processing POLYGON */ - gaiaAppendToOutBuffer (out_buf, "POLYGON("); - gaiaOutPolygon (out_buf, polyg); - } - gaiaAppendToOutBuffer (out_buf, ")"); - polyg = polyg->Next; - } - } - else - { - /* we have some kind of complex geometry */ - if (pts > 0 && lns == 0 && pgs == 0 - && geom->DeclaredType == GAIA_MULTIPOINT) - { - /* some kind of MULTIPOINT */ - if (geom->DimensionModel == GAIA_XY_Z) - gaiaAppendToOutBuffer (out_buf, "MULTIPOINT Z("); - else if (geom->DimensionModel == GAIA_XY_M) - gaiaAppendToOutBuffer (out_buf, "MULTIPOINT M("); - else if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAppendToOutBuffer (out_buf, "MULTIPOINT ZM("); - else - gaiaAppendToOutBuffer (out_buf, "MULTIPOINT("); - point = geom->FirstPoint; - while (point) - { - if (point->DimensionModel == GAIA_XY_Z) - { - if (point != geom->FirstPoint) - gaiaAppendToOutBuffer (out_buf, ", "); - gaiaOutPointZ (out_buf, point); - } - else if (point->DimensionModel == GAIA_XY_M) - { - if (point != geom->FirstPoint) - gaiaAppendToOutBuffer (out_buf, ", "); - gaiaOutPointM (out_buf, point); - } - else if (point->DimensionModel == GAIA_XY_Z_M) - { - if (point != geom->FirstPoint) - gaiaAppendToOutBuffer (out_buf, ", "); - gaiaOutPointZM (out_buf, point); - } - else - { - if (point != geom->FirstPoint) - gaiaAppendToOutBuffer (out_buf, ", "); - gaiaOutPoint (out_buf, point); - } - point = point->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (pts == 0 && lns > 0 && pgs == 0 - && geom->DeclaredType == GAIA_MULTILINESTRING) - { - /* some kind of MULTILINESTRING */ - if (geom->DimensionModel == GAIA_XY_Z) - gaiaAppendToOutBuffer (out_buf, "MULTILINESTRING Z("); - else if (geom->DimensionModel == GAIA_XY_M) - gaiaAppendToOutBuffer (out_buf, "MULTILINESTRING M("); - else if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAppendToOutBuffer (out_buf, "MULTILINESTRING ZM("); - else - gaiaAppendToOutBuffer (out_buf, "MULTILINESTRING("); - line = geom->FirstLinestring; - while (line) - { - if (line != geom->FirstLinestring) - gaiaAppendToOutBuffer (out_buf, ", ("); - else - gaiaAppendToOutBuffer (out_buf, "("); - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaOutLinestringZ (out_buf, line); - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaOutLinestringM (out_buf, line); - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaOutLinestringZM (out_buf, line); - gaiaAppendToOutBuffer (out_buf, ")"); - } - else - { - gaiaOutLinestring (out_buf, line); - gaiaAppendToOutBuffer (out_buf, ")"); - } - line = line->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (pts == 0 && lns == 0 && pgs > 0 - && geom->DeclaredType == GAIA_MULTIPOLYGON) - { - /* some kind of MULTIPOLYGON */ - if (geom->DimensionModel == GAIA_XY_Z) - gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGON Z("); - else if (geom->DimensionModel == GAIA_XY_M) - gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGON M("); - else if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGON ZM("); - else - gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGON("); - polyg = geom->FirstPolygon; - while (polyg) - { - if (polyg != geom->FirstPolygon) - gaiaAppendToOutBuffer (out_buf, ", ("); - else - gaiaAppendToOutBuffer (out_buf, "("); - if (polyg->DimensionModel == GAIA_XY_Z) - { - gaiaOutPolygonZ (out_buf, polyg); - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (polyg->DimensionModel == GAIA_XY_M) - { - gaiaOutPolygonM (out_buf, polyg); - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (polyg->DimensionModel == GAIA_XY_Z_M) - { - gaiaOutPolygonZM (out_buf, polyg); - gaiaAppendToOutBuffer (out_buf, ")"); - } - else - { - gaiaOutPolygon (out_buf, polyg); - gaiaAppendToOutBuffer (out_buf, ")"); - } - polyg = polyg->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - else - { - /* some kind of GEOMETRYCOLLECTION */ - int ie = 0; - if (geom->DimensionModel == GAIA_XY_Z) - gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTION Z("); - else if (geom->DimensionModel == GAIA_XY_M) - gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTION M("); - else if (geom->DimensionModel == GAIA_XY_Z_M) - gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTION ZM("); - else - gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTION("); - point = geom->FirstPoint; - while (point) - { - /* processing POINTs */ - if (ie > 0) - gaiaAppendToOutBuffer (out_buf, ", "); - ie++; - if (point->DimensionModel == GAIA_XY_Z) - { - gaiaAppendToOutBuffer (out_buf, "POINT Z("); - gaiaOutPointZ (out_buf, point); - } - else if (point->DimensionModel == GAIA_XY_M) - { - gaiaAppendToOutBuffer (out_buf, "POINT M("); - gaiaOutPointM (out_buf, point); - } - else if (point->DimensionModel == GAIA_XY_Z_M) - { - gaiaAppendToOutBuffer (out_buf, "POINT ZM("); - gaiaOutPointZM (out_buf, point); - } - else - { - gaiaAppendToOutBuffer (out_buf, "POINT("); - gaiaOutPoint (out_buf, point); - } - gaiaAppendToOutBuffer (out_buf, ")"); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* processing LINESTRINGs */ - if (ie > 0) - gaiaAppendToOutBuffer (out_buf, ", "); - ie++; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaAppendToOutBuffer (out_buf, "LINESTRING Z("); - gaiaOutLinestringZ (out_buf, line); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaAppendToOutBuffer (out_buf, "LINESTRING M("); - gaiaOutLinestringM (out_buf, line); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaAppendToOutBuffer (out_buf, "LINESTRING ZM("); - gaiaOutLinestringZM (out_buf, line); - } - else - { - gaiaAppendToOutBuffer (out_buf, "LINESTRING("); - gaiaOutLinestring (out_buf, line); - } - gaiaAppendToOutBuffer (out_buf, ")"); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* processing POLYGONs */ - if (ie > 0) - gaiaAppendToOutBuffer (out_buf, ", "); - ie++; - if (polyg->DimensionModel == GAIA_XY_Z) - { - gaiaAppendToOutBuffer (out_buf, "POLYGON Z("); - gaiaOutPolygonZ (out_buf, polyg); - } - else if (polyg->DimensionModel == GAIA_XY_M) - { - gaiaAppendToOutBuffer (out_buf, "POLYGON M("); - gaiaOutPolygonM (out_buf, polyg); - } - else if (polyg->DimensionModel == GAIA_XY_Z_M) - { - gaiaAppendToOutBuffer (out_buf, "POLYGON ZM("); - gaiaOutPolygonZM (out_buf, polyg); - } - else - { - gaiaAppendToOutBuffer (out_buf, "POLYGON("); - gaiaOutPolygon (out_buf, polyg); - } - gaiaAppendToOutBuffer (out_buf, ")"); - polyg = polyg->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - } -} - -GAIAGEO_DECLARE void -gaiaOutWktStrict (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom, int precision) -{ -/* - * prints the WKT representation of current geometry - * strictly conformant 2D WKT implementation -*/ - int pts = 0; - int lns = 0; - int pgs = 0; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - if (precision > 18) - precision = 18; - if (!geom) - return; - point = geom->FirstPoint; - while (point) - { - /* counting how many POINTs are there */ - pts++; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* counting how many LINESTRINGs are there */ - lns++; - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* counting how many POLYGONs are there */ - pgs++; - polyg = polyg->Next; - } - if ((pts + lns + pgs) == 1 - && (geom->DeclaredType == GAIA_POINT - || geom->DeclaredType == GAIA_LINESTRING - || geom->DeclaredType == GAIA_POLYGON)) - { - /* we have only one elementary geometry */ - point = geom->FirstPoint; - while (point) - { - /* processing POINT */ - gaiaAppendToOutBuffer (out_buf, "POINT("); - gaiaOutPointStrict (out_buf, point, precision); - gaiaAppendToOutBuffer (out_buf, ")"); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* processing LINESTRING */ - gaiaAppendToOutBuffer (out_buf, "LINESTRING("); - gaiaOutLinestringStrict (out_buf, line, precision); - gaiaAppendToOutBuffer (out_buf, ")"); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* processing POLYGON */ - gaiaAppendToOutBuffer (out_buf, "POLYGON("); - gaiaOutPolygonStrict (out_buf, polyg, precision); - gaiaAppendToOutBuffer (out_buf, ")"); - polyg = polyg->Next; - } - } - else - { - /* we have some kind of complex geometry */ - if (pts > 0 && lns == 0 && pgs == 0 - && geom->DeclaredType == GAIA_MULTIPOINT) - { - /* some kind of MULTIPOINT */ - gaiaAppendToOutBuffer (out_buf, "MULTIPOINT("); - point = geom->FirstPoint; - while (point) - { - if (point != geom->FirstPoint) - gaiaAppendToOutBuffer (out_buf, ","); - gaiaOutPointStrict (out_buf, point, precision); - point = point->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (pts == 0 && lns > 0 && pgs == 0 - && geom->DeclaredType == GAIA_MULTILINESTRING) - { - /* some kind of MULTILINESTRING */ - gaiaAppendToOutBuffer (out_buf, "MULTILINESTRING("); - line = geom->FirstLinestring; - while (line) - { - if (line != geom->FirstLinestring) - gaiaAppendToOutBuffer (out_buf, ",("); - else - gaiaAppendToOutBuffer (out_buf, "("); - gaiaOutLinestringStrict (out_buf, line, precision); - gaiaAppendToOutBuffer (out_buf, ")"); - line = line->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (pts == 0 && lns == 0 && pgs > 0 - && geom->DeclaredType == GAIA_MULTIPOLYGON) - { - /* some kind of MULTIPOLYGON */ - gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGON("); - polyg = geom->FirstPolygon; - while (polyg) - { - if (polyg != geom->FirstPolygon) - gaiaAppendToOutBuffer (out_buf, ",("); - else - gaiaAppendToOutBuffer (out_buf, "("); - gaiaOutPolygonStrict (out_buf, polyg, precision); - gaiaAppendToOutBuffer (out_buf, ")"); - polyg = polyg->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - else - { - /* some kind of GEOMETRYCOLLECTION */ - int ie = 0; - gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTION("); - point = geom->FirstPoint; - while (point) - { - /* processing POINTs */ - if (ie > 0) - gaiaAppendToOutBuffer (out_buf, ","); - ie++; - gaiaAppendToOutBuffer (out_buf, "POINT("); - gaiaOutPointStrict (out_buf, point, precision); - gaiaAppendToOutBuffer (out_buf, ")"); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* processing LINESTRINGs */ - if (ie > 0) - gaiaAppendToOutBuffer (out_buf, ","); - ie++; - gaiaAppendToOutBuffer (out_buf, "LINESTRING("); - gaiaOutLinestringStrict (out_buf, line, precision); - gaiaAppendToOutBuffer (out_buf, ")"); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* processing POLYGONs */ - if (ie > 0) - gaiaAppendToOutBuffer (out_buf, ","); - ie++; - gaiaAppendToOutBuffer (out_buf, "POLYGON("); - gaiaOutPolygonStrict (out_buf, polyg, precision); - gaiaAppendToOutBuffer (out_buf, ")"); - polyg = polyg->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - } -} - -GAIAGEO_DECLARE void -gaiaToEWKT (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom) -{ -/* prints the EWKT representation of current geometry */ - char buf[128]; - int pts = 0; - int lns = 0; - int pgs = 0; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - if (!geom) - return; - sprintf (buf, "SRID=%d;", geom->Srid); - gaiaAppendToOutBuffer (out_buf, buf); - point = geom->FirstPoint; - while (point) - { - /* counting how many POINTs are there */ - pts++; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* counting how many LINESTRINGs are there */ - lns++; - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* counting how many POLYGONs are there */ - pgs++; - polyg = polyg->Next; - } - if ((pts + lns + pgs) == 1 - && (geom->DeclaredType == GAIA_POINT - || geom->DeclaredType == GAIA_LINESTRING - || geom->DeclaredType == GAIA_POLYGON)) - { - /* we have only one elementary geometry */ - point = geom->FirstPoint; - while (point) - { - if (point->DimensionModel == GAIA_XY_Z) - { - /* processing POINTZ */ - gaiaAppendToOutBuffer (out_buf, "POINT("); - gaiaOutEwktPointZ (out_buf, point); - } - else if (point->DimensionModel == GAIA_XY_M) - { - /* processing POINTM */ - gaiaAppendToOutBuffer (out_buf, "POINTM("); - gaiaOutEwktPointM (out_buf, point); - } - else if (point->DimensionModel == GAIA_XY_Z_M) - { - /* processing POINTZM */ - gaiaAppendToOutBuffer (out_buf, "POINT("); - gaiaOutEwktPointZM (out_buf, point); - } - else - { - /* processing POINT */ - gaiaAppendToOutBuffer (out_buf, "POINT("); - gaiaOutEwktPoint (out_buf, point); - } - gaiaAppendToOutBuffer (out_buf, ")"); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - if (line->DimensionModel == GAIA_XY_Z) - { - /* processing LINESTRINGZ */ - gaiaAppendToOutBuffer (out_buf, "LINESTRING("); - gaiaOutEwktLinestringZ (out_buf, line); - } - else if (line->DimensionModel == GAIA_XY_M) - { - /* processing LINESTRINGM */ - gaiaAppendToOutBuffer (out_buf, "LINESTRINGM("); - gaiaOutEwktLinestringM (out_buf, line); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - /* processing LINESTRINGZM */ - gaiaAppendToOutBuffer (out_buf, "LINESTRING("); - gaiaOutEwktLinestringZM (out_buf, line); - } - else - { - /* processing LINESTRING */ - gaiaAppendToOutBuffer (out_buf, "LINESTRING("); - gaiaOutEwktLinestring (out_buf, line); - } - gaiaAppendToOutBuffer (out_buf, ")"); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - if (polyg->DimensionModel == GAIA_XY_Z) - { - /* processing POLYGONZ */ - gaiaAppendToOutBuffer (out_buf, "POLYGON("); - gaiaOutEwktPolygonZ (out_buf, polyg); - } - else if (polyg->DimensionModel == GAIA_XY_M) - { - /* processing POLYGONM */ - gaiaAppendToOutBuffer (out_buf, "POLYGONM("); - gaiaOutEwktPolygonM (out_buf, polyg); - } - else if (polyg->DimensionModel == GAIA_XY_Z_M) - { - /* processing POLYGONZM */ - gaiaAppendToOutBuffer (out_buf, "POLYGON("); - gaiaOutEwktPolygonZM (out_buf, polyg); - } - else - { - /* processing POLYGON */ - gaiaAppendToOutBuffer (out_buf, "POLYGON("); - gaiaOutEwktPolygon (out_buf, polyg); - } - gaiaAppendToOutBuffer (out_buf, ")"); - polyg = polyg->Next; - } - } - else - { - /* we have some kind of complex geometry */ - if (pts > 0 && lns == 0 && pgs == 0 - && geom->DeclaredType == GAIA_MULTIPOINT) - { - /* some kind of MULTIPOINT */ - if (geom->DimensionModel == GAIA_XY_M) - gaiaAppendToOutBuffer (out_buf, "MULTIPOINTM("); - else - gaiaAppendToOutBuffer (out_buf, "MULTIPOINT("); - point = geom->FirstPoint; - while (point) - { - if (point->DimensionModel == GAIA_XY_Z) - { - if (point != geom->FirstPoint) - gaiaAppendToOutBuffer (out_buf, ","); - gaiaOutEwktPointZ (out_buf, point); - } - else if (point->DimensionModel == GAIA_XY_M) - { - if (point != geom->FirstPoint) - gaiaAppendToOutBuffer (out_buf, ","); - gaiaOutEwktPointM (out_buf, point); - } - else if (point->DimensionModel == GAIA_XY_Z_M) - { - if (point != geom->FirstPoint) - gaiaAppendToOutBuffer (out_buf, ","); - gaiaOutEwktPointZM (out_buf, point); - } - else - { - if (point != geom->FirstPoint) - gaiaAppendToOutBuffer (out_buf, ","); - gaiaOutEwktPoint (out_buf, point); - } - point = point->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (pts == 0 && lns > 0 && pgs == 0 - && geom->DeclaredType == GAIA_MULTILINESTRING) - { - /* some kind of MULTILINESTRING */ - if (geom->DimensionModel == GAIA_XY_M) - gaiaAppendToOutBuffer (out_buf, "MULTILINESTRINGM("); - else - gaiaAppendToOutBuffer (out_buf, "MULTILINESTRING("); - line = geom->FirstLinestring; - while (line) - { - if (line != geom->FirstLinestring) - gaiaAppendToOutBuffer (out_buf, ",("); - else - gaiaAppendToOutBuffer (out_buf, "("); - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaOutEwktLinestringZ (out_buf, line); - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaOutEwktLinestringM (out_buf, line); - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaOutEwktLinestringZM (out_buf, line); - gaiaAppendToOutBuffer (out_buf, ")"); - } - else - { - gaiaOutEwktLinestring (out_buf, line); - gaiaAppendToOutBuffer (out_buf, ")"); - } - line = line->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (pts == 0 && lns == 0 && pgs > 0 - && geom->DeclaredType == GAIA_MULTIPOLYGON) - { - /* some kind of MULTIPOLYGON */ - if (geom->DimensionModel == GAIA_XY_M) - gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGONM("); - else - gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGON("); - polyg = geom->FirstPolygon; - while (polyg) - { - if (polyg != geom->FirstPolygon) - gaiaAppendToOutBuffer (out_buf, ",("); - else - gaiaAppendToOutBuffer (out_buf, "("); - if (polyg->DimensionModel == GAIA_XY_Z) - { - gaiaOutEwktPolygonZ (out_buf, polyg); - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (polyg->DimensionModel == GAIA_XY_M) - { - gaiaOutEwktPolygonM (out_buf, polyg); - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (polyg->DimensionModel == GAIA_XY_Z_M) - { - gaiaOutEwktPolygonZM (out_buf, polyg); - gaiaAppendToOutBuffer (out_buf, ")"); - } - else - { - gaiaOutEwktPolygon (out_buf, polyg); - gaiaAppendToOutBuffer (out_buf, ")"); - } - polyg = polyg->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - else - { - /* some kind of GEOMETRYCOLLECTION */ - int ie = 0; - if (geom->DimensionModel == GAIA_XY_M) - gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTIONM("); - else - gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTION("); - point = geom->FirstPoint; - while (point) - { - /* processing POINTs */ - if (ie > 0) - gaiaAppendToOutBuffer (out_buf, ","); - ie++; - if (point->DimensionModel == GAIA_XY_Z) - { - gaiaAppendToOutBuffer (out_buf, "POINT("); - gaiaOutEwktPointZ (out_buf, point); - } - else if (point->DimensionModel == GAIA_XY_M) - { - gaiaAppendToOutBuffer (out_buf, "POINTM("); - gaiaOutEwktPointM (out_buf, point); - } - else if (point->DimensionModel == GAIA_XY_Z_M) - { - gaiaAppendToOutBuffer (out_buf, "POINT("); - gaiaOutEwktPointZM (out_buf, point); - } - else - { - gaiaAppendToOutBuffer (out_buf, "POINT("); - gaiaOutEwktPoint (out_buf, point); - } - gaiaAppendToOutBuffer (out_buf, ")"); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* processing LINESTRINGs */ - if (ie > 0) - gaiaAppendToOutBuffer (out_buf, ","); - ie++; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaAppendToOutBuffer (out_buf, "LINESTRING("); - gaiaOutEwktLinestringZ (out_buf, line); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaAppendToOutBuffer (out_buf, "LINESTRINGM("); - gaiaOutEwktLinestringM (out_buf, line); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaAppendToOutBuffer (out_buf, "LINESTRING("); - gaiaOutEwktLinestringZM (out_buf, line); - } - else - { - gaiaAppendToOutBuffer (out_buf, "LINESTRING("); - gaiaOutEwktLinestring (out_buf, line); - } - gaiaAppendToOutBuffer (out_buf, ")"); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* processing POLYGONs */ - if (ie > 0) - gaiaAppendToOutBuffer (out_buf, ","); - ie++; - if (polyg->DimensionModel == GAIA_XY_Z) - { - gaiaAppendToOutBuffer (out_buf, "POLYGON("); - gaiaOutEwktPolygonZ (out_buf, polyg); - } - else if (polyg->DimensionModel == GAIA_XY_M) - { - gaiaAppendToOutBuffer (out_buf, "POLYGONM("); - gaiaOutEwktPolygonM (out_buf, polyg); - } - else if (polyg->DimensionModel == GAIA_XY_Z_M) - { - gaiaAppendToOutBuffer (out_buf, "POLYGON("); - gaiaOutEwktPolygonZM (out_buf, polyg); - } - else - { - gaiaAppendToOutBuffer (out_buf, "POLYGON("); - gaiaOutEwktPolygon (out_buf, polyg); - } - gaiaAppendToOutBuffer (out_buf, ")"); - polyg = polyg->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - } -} - -/* -/ -/ Gaia common support for SVG encoded geometries -/ -//////////////////////////////////////////////////////////// -/ -/ Author: Klaus Foerster klaus.foerster@svg.cc -/ version 0.9. 2008 September 21 - / - */ - -static void -SvgCoords (gaiaOutBufferPtr out_buf, gaiaPointPtr point, int precision) -{ -/* formats POINT as SVG-attributes x,y */ - char *buf_x; - char *buf_y; - char *buf; - buf_x = sqlite3_mprintf ("%.*f", precision, point->X); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, point->Y * -1); - gaiaOutClean (buf_y); - buf = sqlite3_mprintf ("x=\"%s\" y=\"%s\"", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); -} - -static void -SvgCircle (gaiaOutBufferPtr out_buf, gaiaPointPtr point, int precision) -{ -/* formats POINT as SVG-attributes cx,cy */ - char *buf_x; - char *buf_y; - char *buf; - buf_x = sqlite3_mprintf ("%.*f", precision, point->X); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, point->Y * -1); - gaiaOutClean (buf_y); - buf = sqlite3_mprintf ("cx=\"%s\" cy=\"%s\"", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); -} - -static void -SvgPathRelative (gaiaOutBufferPtr out_buf, int dims, int points, double *coords, - int precision, int closePath) -{ -/* formats LINESTRING as SVG-path d-attribute with relative coordinate moves */ - char *buf_x; - char *buf_y; - char *buf; - double x; - double y; - double z; - double m; - double lastX = 0.0; - double lastY = 0.0; - int iv; - for (iv = 0; iv < points; iv++) - { - if (dims == GAIA_XY_Z) - { - gaiaGetPointXYZ (coords, iv, &x, &y, &z); - } - else if (dims == GAIA_XY_M) - { - gaiaGetPointXYM (coords, iv, &x, &y, &m); - } - else if (dims == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (coords, iv, &x, &y); - } - buf_x = sqlite3_mprintf ("%.*f", precision, x - lastX); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, (y - lastY) * -1); - gaiaOutClean (buf_y); - if (iv == 0) - buf = sqlite3_mprintf ("M %s %s l ", buf_x, buf_y); - else - buf = sqlite3_mprintf ("%s %s ", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - lastX = x; - lastY = y; - if (iv == points - 1 && closePath == 1) - gaiaAppendToOutBuffer (out_buf, "z "); - else - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } -} - -static void -SvgPathAbsolute (gaiaOutBufferPtr out_buf, int dims, int points, double *coords, - int precision, int closePath) -{ -/* formats LINESTRING as SVG-path d-attribute with relative coordinate moves */ - char *buf_x; - char *buf_y; - char *buf; - double x; - double y; - double z; - double m; - int iv; - for (iv = 0; iv < points; iv++) - { - if (dims == GAIA_XY_Z) - { - gaiaGetPointXYZ (coords, iv, &x, &y, &z); - } - else if (dims == GAIA_XY_M) - { - gaiaGetPointXYM (coords, iv, &x, &y, &m); - } - else if (dims == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (coords, iv, &x, &y); - } - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y * -1); - gaiaOutClean (buf_y); - if (iv == 0) - buf = sqlite3_mprintf ("M %s %s L ", buf_x, buf_y); - else - buf = sqlite3_mprintf ("%s %s ", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - if (iv == points - 1 && closePath == 1) - gaiaAppendToOutBuffer (out_buf, "z "); - else - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } -} - -GAIAGEO_DECLARE void -gaiaOutSvg (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom, int relative, - int precision) -{ -/* prints the SVG representation of current geometry */ - int pts = 0; - int lns = 0; - int pgs = 0; - int ib; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - if (precision > 18) - precision = 18; - if (!geom) - return; - point = geom->FirstPoint; - while (point) - { - /* counting how many POINTs are there */ - pts++; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* counting how many LINESTRINGs are there */ - lns++; - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* counting how many POLYGONs are there */ - pgs++; - polyg = polyg->Next; - } - - if ((pts + lns + pgs) == 1) - { - /* we have only one elementary geometry */ - point = geom->FirstPoint; - while (point) - { - /* processing POINT */ - if (relative == 1) - SvgCoords (out_buf, point, precision); - else - SvgCircle (out_buf, point, precision); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* processing LINESTRING */ - if (relative == 1) - SvgPathRelative (out_buf, line->DimensionModel, - line->Points, line->Coords, precision, 0); - else - SvgPathAbsolute (out_buf, line->DimensionModel, - line->Points, line->Coords, precision, 0); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* process exterior and interior rings */ - ring = polyg->Exterior; - if (relative == 1) - { - SvgPathRelative (out_buf, ring->DimensionModel, - ring->Points, ring->Coords, precision, - 1); - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - SvgPathRelative (out_buf, ring->DimensionModel, - ring->Points, ring->Coords, - precision, 1); - } - } - else - { - SvgPathAbsolute (out_buf, ring->DimensionModel, - ring->Points, ring->Coords, precision, - 1); - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - SvgPathAbsolute (out_buf, ring->DimensionModel, - ring->Points, ring->Coords, - precision, 1); - } - } - polyg = polyg->Next; - } - } - else - { - /* we have some kind of complex geometry */ - if (pts > 0 && lns == 0 && pgs == 0) - { - /* this one is a MULTIPOINT */ - point = geom->FirstPoint; - while (point) - { - /* processing POINTs */ - if (point != geom->FirstPoint) - gaiaAppendToOutBuffer (out_buf, ","); - if (relative == 1) - SvgCoords (out_buf, point, precision); - else - SvgCircle (out_buf, point, precision); - point = point->Next; - } - } - else if (pts == 0 && lns > 0 && pgs == 0) - { - /* this one is a MULTILINESTRING */ - line = geom->FirstLinestring; - while (line) - { - /* processing LINESTRINGs */ - if (relative == 1) - SvgPathRelative (out_buf, line->DimensionModel, - line->Points, line->Coords, - precision, 0); - else - SvgPathAbsolute (out_buf, line->DimensionModel, - line->Points, line->Coords, - precision, 0); - line = line->Next; - } - } - else if (pts == 0 && lns == 0 && pgs > 0) - { - /* this one is a MULTIPOLYGON */ - polyg = geom->FirstPolygon; - while (polyg) - { - /* processing POLYGONs */ - ring = polyg->Exterior; - if (relative == 1) - { - SvgPathRelative (out_buf, ring->DimensionModel, - ring->Points, ring->Coords, - precision, 1); - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - SvgPathRelative (out_buf, - ring->DimensionModel, - ring->Points, ring->Coords, - precision, 1); - } - } - else - { - SvgPathAbsolute (out_buf, ring->DimensionModel, - ring->Points, ring->Coords, - precision, 1); - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - SvgPathAbsolute (out_buf, - ring->DimensionModel, - ring->Points, ring->Coords, - precision, 1); - } - } - polyg = polyg->Next; - } - } - else - { - /* this one is a GEOMETRYCOLLECTION */ - int ie = 0; - point = geom->FirstPoint; - while (point) - { - /* processing POINTs */ - if (ie > 0) - { - gaiaAppendToOutBuffer (out_buf, ";"); - } - ie++; - if (relative == 1) - SvgCoords (out_buf, point, precision); - else - SvgCircle (out_buf, point, precision); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* processing LINESTRINGs */ - if (ie > 0) - gaiaAppendToOutBuffer (out_buf, ";"); - ie++; - if (relative == 1) - SvgPathRelative (out_buf, line->DimensionModel, - line->Points, line->Coords, - precision, 0); - else - SvgPathAbsolute (out_buf, line->DimensionModel, - line->Points, line->Coords, - precision, 0); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* processing POLYGONs */ - ie++; - /* process exterior and interior rings */ - ring = polyg->Exterior; - if (relative == 1) - { - SvgPathRelative (out_buf, ring->DimensionModel, - ring->Points, ring->Coords, - precision, 1); - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - SvgPathRelative (out_buf, - ring->DimensionModel, - ring->Points, ring->Coords, - precision, 1); - } - } - else - { - SvgPathAbsolute (out_buf, ring->DimensionModel, - ring->Points, ring->Coords, - precision, 1); - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - ring = polyg->Interiors + ib; - SvgPathAbsolute (out_buf, - ring->DimensionModel, - ring->Points, ring->Coords, - precision, 1); - } - } - polyg = polyg->Next; - } - } - } - - if (out_buf->Error == 0 && out_buf->WriteOffset > 0) - { - /* sandro 2012-02-23 cleaning extra trailing spaces */ - int i; - for (i = out_buf->WriteOffset - 1; i >= 0; i--) - { - if (*(out_buf->Buffer + i) == ' ') - { - *(out_buf->Buffer + i) = '\0'; - out_buf->WriteOffset -= 1; - } - else - break; - } - } -} - -/* END of Klaus Foerster SVG implementation */ - - -static char * -XmlClean (const char *string) -{ -/* well formatting a text string for XML */ - int ind; - char *clean; - char *p_out; - int len = strlen (string); - clean = malloc (len * 3); - if (!clean) - return NULL; - p_out = clean; - for (ind = 0; ind < len; ind++) - { - /* masking XML special chars */ - switch (string[ind]) - { - case '&': - *p_out++ = '&'; - *p_out++ = 'a'; - *p_out++ = 'm'; - *p_out++ = 'p'; - *p_out++ = ';'; - break; - case '<': - *p_out++ = '&'; - *p_out++ = 'l'; - *p_out++ = 't'; - *p_out++ = ';'; - break; - case '>': - *p_out++ = '&'; - *p_out++ = 'g'; - *p_out++ = 't'; - *p_out++ = ';'; - break; - case '"': - *p_out++ = '&'; - *p_out++ = 'q'; - *p_out++ = 'u'; - *p_out++ = 'o'; - *p_out++ = 't'; - *p_out++ = ';'; - break; - default: - *p_out++ = string[ind]; - break; - }; - } - *p_out = '\0'; - return clean; -} - -static void -out_kml_point (gaiaOutBufferPtr out_buf, gaiaPointPtr point, int precision) -{ -/* formats POINT as KML [x,y] */ - char *buf_x; - char *buf_y; - char *buf_z; - char *buf; - buf_x = sqlite3_mprintf ("%.*f", precision, point->X); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, point->Y); - gaiaOutClean (buf_y); - if (point->DimensionModel == GAIA_XY_Z - || point->DimensionModel == GAIA_XY_Z_M) - { - buf_z = sqlite3_mprintf ("%.*f", precision, point->Z); - gaiaOutClean (buf_z); - } - gaiaAppendToOutBuffer (out_buf, ""); - if (point->DimensionModel == GAIA_XY_Z - || point->DimensionModel == GAIA_XY_Z_M) - { - buf = sqlite3_mprintf ("%s,%s,%s", buf_x, buf_y, buf_z); - sqlite3_free (buf_z); - } - else - buf = sqlite3_mprintf ("%s,%s", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - gaiaAppendToOutBuffer (out_buf, ""); -} - -static void -out_kml_linestring (gaiaOutBuffer * out_buf, int dims, int points, - double *coords, int precision) -{ -/* formats LINESTRING as KML [x,y] */ - char *buf_x; - char *buf_y; - char *buf_z; - char *buf; - int iv; - double x; - double y; - double z; - double m; - gaiaAppendToOutBuffer (out_buf, ""); - for (iv = 0; iv < points; iv++) - { - /* exporting vertices */ - if (dims == GAIA_XY_Z) - { - gaiaGetPointXYZ (coords, iv, &x, &y, &z); - } - else if (dims == GAIA_XY_M) - { - gaiaGetPointXYM (coords, iv, &x, &y, &m); - } - else if (dims == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (coords, iv, &x, &y); - } - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - if (dims == GAIA_XY_Z || dims == GAIA_XY_Z_M) - { - buf_z = sqlite3_mprintf ("%.*f", precision, z); - gaiaOutClean (buf_z); - if (iv == 0) - buf = sqlite3_mprintf ("%s,%s,%s", buf_x, buf_y, buf_z); - else - buf = sqlite3_mprintf (" %s,%s,%s", buf_x, buf_y, buf_z); - sqlite3_free (buf_z); - } - else - { - if (iv == 0) - buf = sqlite3_mprintf ("%s,%s", buf_x, buf_y); - else - buf = sqlite3_mprintf (" %s,%s", buf_x, buf_y); - } - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - gaiaAppendToOutBuffer (out_buf, ""); -} - -static void -out_kml_polygon (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polygon, - int precision) -{ -/* formats POLYGON as KML [x,y] */ - char *buf_x; - char *buf_y; - char *buf_z; - char *buf; - gaiaRingPtr ring; - int iv; - int ib; - double x; - double y; - double z; - double m; - gaiaAppendToOutBuffer (out_buf, ""); - gaiaAppendToOutBuffer (out_buf, - ""); - ring = polygon->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - /* exporting vertices [Exterior Ring] */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - if (ring->DimensionModel == GAIA_XY_Z - || ring->DimensionModel == GAIA_XY_Z_M) - { - buf_z = sqlite3_mprintf ("%.*f", precision, z); - gaiaOutClean (buf_z); - if (iv == 0) - buf = sqlite3_mprintf ("%s,%s,%s", buf_x, buf_y, buf_z); - else - buf = sqlite3_mprintf (" %s,%s,%s", buf_x, buf_y, buf_z); - sqlite3_free (buf_z); - } - else - { - if (iv == 0) - buf = sqlite3_mprintf ("%s,%s", buf_x, buf_y); - else - buf = sqlite3_mprintf (" %s,%s", buf_x, buf_y); - } - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - gaiaAppendToOutBuffer (out_buf, - ""); - for (ib = 0; ib < polygon->NumInteriors; ib++) - { - /* interior rings */ - ring = polygon->Interiors + ib; - gaiaAppendToOutBuffer (out_buf, - ""); - for (iv = 0; iv < ring->Points; iv++) - { - /* exporting vertices [Interior Ring] */ - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - if (ring->DimensionModel == GAIA_XY_Z - || ring->DimensionModel == GAIA_XY_Z_M) - { - buf_z = sqlite3_mprintf ("%.*f", precision, z); - gaiaOutClean (buf_z); - if (iv == 0) - buf = - sqlite3_mprintf ("%s,%s,%s", buf_x, buf_y, buf_z); - else - buf = - sqlite3_mprintf (" %s,%s,%s", buf_x, buf_y, - buf_z); - sqlite3_free (buf_z); - } - else - { - if (iv == 0) - buf = sqlite3_mprintf ("%s,%s", buf_x, buf_y); - else - buf = sqlite3_mprintf (" %s,%s", buf_x, buf_y); - } - sqlite3_free (buf_x); - sqlite3_free (buf_y); - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - gaiaAppendToOutBuffer (out_buf, - ""); - } - gaiaAppendToOutBuffer (out_buf, ""); -} - -GAIAGEO_DECLARE void -gaiaOutFullKml (gaiaOutBufferPtr out_buf, const char *name, const char *desc, - gaiaGeomCollPtr geom, int precision) -{ -/* prints the 'full' KML representation of current geometry */ - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - int count = 0; - char *xml_clean; - if (!geom) - return; - if (precision > 18) - precision = 18; - -/* counting how many elementary geometries are there */ - point = geom->FirstPoint; - while (point) - { - count++; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - count++; - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - count++; - polyg = polyg->Next; - } - if (count == 1) - { - if (geom->DeclaredType == GAIA_MULTIPOINT || - geom->DeclaredType == GAIA_MULTILINESTRING || - geom->DeclaredType == GAIA_MULTIPOLYGON || - geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - count = 2; - } - - gaiaAppendToOutBuffer (out_buf, ""); - xml_clean = XmlClean (name); - if (xml_clean) - { - gaiaAppendToOutBuffer (out_buf, xml_clean); - free (xml_clean); - } - else - gaiaAppendToOutBuffer (out_buf, " "); - gaiaAppendToOutBuffer (out_buf, ""); - xml_clean = XmlClean (desc); - if (xml_clean) - { - gaiaAppendToOutBuffer (out_buf, xml_clean); - free (xml_clean); - } - else - gaiaAppendToOutBuffer (out_buf, " "); - gaiaAppendToOutBuffer (out_buf, ""); - - if (count > 1) - { - /* MultiGeometry start */ - gaiaAppendToOutBuffer (out_buf, ""); - } - - point = geom->FirstPoint; - while (point) - { - /* processing POINT */ - out_kml_point (out_buf, point, precision); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* processing LINESTRING */ - out_kml_linestring (out_buf, line->DimensionModel, - line->Points, line->Coords, precision); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* processing POLYGON */ - out_kml_polygon (out_buf, polyg, precision); - polyg = polyg->Next; - } - - if (count > 1) - { - /* MultiGeometry end */ - gaiaAppendToOutBuffer (out_buf, ""); - } - gaiaAppendToOutBuffer (out_buf, ""); -} - -GAIAGEO_DECLARE void -gaiaOutBareKml (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom, int precision) -{ -/* prints the 'bare' KML representation of current geometry */ - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - int count = 0; - if (!geom) - return; - if (precision > 18) - precision = 18; - -/* counting how many elementary geometries are there */ - point = geom->FirstPoint; - while (point) - { - count++; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - count++; - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - count++; - polyg = polyg->Next; - } - if (count == 1) - { - if (geom->DeclaredType == GAIA_MULTIPOINT || - geom->DeclaredType == GAIA_MULTILINESTRING || - geom->DeclaredType == GAIA_MULTIPOLYGON || - geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - count = 2; - } - - if (count > 1) - { - /* MultiGeometry start */ - gaiaAppendToOutBuffer (out_buf, ""); - } - - point = geom->FirstPoint; - while (point) - { - /* processing POINT */ - out_kml_point (out_buf, point, precision); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* processing LINESTRING */ - out_kml_linestring (out_buf, line->DimensionModel, line->Points, - line->Coords, precision); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* processing POLYGON */ - out_kml_polygon (out_buf, polyg, precision); - polyg = polyg->Next; - } - - if (count > 1) - { - /* MultiGeometry end */ - gaiaAppendToOutBuffer (out_buf, ""); - } -} - -GAIAGEO_DECLARE void -gaiaOutGml (gaiaOutBufferPtr out_buf, int version, int precision, - gaiaGeomCollPtr geom) -{ -/* -/ prints the GML representation of current geometry -/ *result* returns the encoded GML or NULL if any error is encountered -*/ - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - int iv; - int ib; - double x; - double y; - double z; - double m; - int has_z; - int is_multi = 1; - int is_coll = 0; - char buf[2048]; - char *xbuf; - char *buf_x; - char *buf_y; - char *buf_z; - if (!geom) - return; - if (precision > 18) - precision = 18; - - switch (geom->DeclaredType) - { - case GAIA_POINT: - case GAIA_LINESTRING: - case GAIA_POLYGON: - *buf = '\0'; - is_multi = 0; - break; - case GAIA_MULTIPOINT: - if (geom->Srid <= 0) - strcpy (buf, ""); - else - sprintf (buf, "", geom->Srid); - break; - case GAIA_MULTILINESTRING: - if (version == 3) - { - if (geom->Srid <= 0) - strcpy (buf, ""); - else - sprintf (buf, "", - geom->Srid); - } - else - { - if (geom->Srid <= 0) - strcpy (buf, ""); - else - sprintf (buf, - "", - geom->Srid); - } - break; - case GAIA_MULTIPOLYGON: - if (version == 3) - { - if (geom->Srid <= 0) - strcpy (buf, ""); - else - sprintf (buf, "", - geom->Srid); - } - else - { - if (geom->Srid <= 0) - strcpy (buf, ""); - else - sprintf (buf, "", - geom->Srid); - } - break; - default: - if (geom->Srid <= 0) - strcpy (buf, ""); - else - sprintf (buf, "", - geom->Srid); - is_coll = 1; - break; - }; - gaiaAppendToOutBuffer (out_buf, buf); - point = geom->FirstPoint; - while (point) - { - /* processing POINT */ - if (is_multi) - { - if (is_coll) - strcpy (buf, ""); - else - strcpy (buf, ""); - strcat (buf, ""); - } - else - { - if (geom->Srid <= 0) - strcpy (buf, ""); - else - sprintf (buf, "", - geom->Srid); - } - if (version == 3) - { - if (point->DimensionModel == GAIA_XY_Z - || point->DimensionModel == GAIA_XY_Z_M) - strcat (buf, ""); - else - strcat (buf, ""); - } - else - strcat (buf, ""); - gaiaAppendToOutBuffer (out_buf, buf); - buf_x = sqlite3_mprintf ("%.*f", precision, point->X); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, point->Y); - gaiaOutClean (buf_y); - if (point->DimensionModel == GAIA_XY_Z - || point->DimensionModel == GAIA_XY_Z_M) - { - buf_z = sqlite3_mprintf ("%.*f", precision, point->Z); - gaiaOutClean (buf_z); - if (version == 3) - { - xbuf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - } - else - { - xbuf = sqlite3_mprintf ("%s,%s,%s", buf_x, buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - } - } - else - { - if (version == 3) - { - xbuf = sqlite3_mprintf ("%s %s", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - } - else - { - xbuf = sqlite3_mprintf ("%s,%s", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - } - } - gaiaAppendToOutBuffer (out_buf, xbuf); - sqlite3_free (xbuf); - if (version == 3) - strcpy (buf, ""); - else - strcpy (buf, ""); - if (is_multi) - { - strcat (buf, ""); - if (is_coll) - strcat (buf, ""); - else - strcat (buf, ""); - } - else - strcat (buf, ""); - gaiaAppendToOutBuffer (out_buf, buf); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* processing LINESTRING */ - if (is_multi) - { - if (version == 3) - { - if (is_coll) - strcpy (buf, ""); - else - strcpy (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - if (line->DimensionModel == GAIA_XY_Z - || line->DimensionModel == GAIA_XY_Z_M) - strcat (buf, ""); - else - strcat (buf, ""); - } - else - { - if (is_coll) - strcpy (buf, ""); - else - strcpy (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - } - } - else - { - if (version == 3) - { - if (geom->Srid <= 0) - strcpy (buf, ""); - else - sprintf (buf, "", - geom->Srid); - strcat (buf, ""); - strcat (buf, ""); - if (line->DimensionModel == GAIA_XY_Z - || line->DimensionModel == GAIA_XY_Z_M) - strcat (buf, ""); - else - strcat (buf, ""); - } - else - { - if (geom->Srid <= 0) - strcpy (buf, ""); - else - sprintf (buf, "", - geom->Srid); - strcat (buf, ""); - } - } - gaiaAppendToOutBuffer (out_buf, buf); - for (iv = 0; iv < line->Points; iv++) - { - /* exporting vertices */ - has_z = 0; - if (line->DimensionModel == GAIA_XY_Z) - { - has_z = 1; - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - has_z = 1; - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - if (iv == 0) - *buf = '\0'; - else - strcpy (buf, " "); - if (has_z) - { - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%.*f", precision, z); - gaiaOutClean (buf_z); - if (version == 3) - { - xbuf = - sqlite3_mprintf ("%s%s %s %s", buf, buf_x, - buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - } - else - { - xbuf = - sqlite3_mprintf ("%s%s,%s,%s", buf, buf_x, - buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - } - } - else - { - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - if (version == 3) - { - xbuf = - sqlite3_mprintf ("%s%s %s", buf, buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - } - else - { - xbuf = - sqlite3_mprintf ("%s%s,%s", buf, buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - } - } - gaiaAppendToOutBuffer (out_buf, xbuf); - sqlite3_free (xbuf); - } - if (is_multi) - { - if (version == 3) - { - strcpy (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - if (is_coll) - strcat (buf, ""); - else - strcat (buf, ""); - } - else - { - strcpy (buf, ""); - strcat (buf, ""); - if (is_coll) - strcat (buf, ""); - else - strcat (buf, ""); - } - } - else - { - if (version == 3) - { - strcpy (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - } - else - { - strcpy (buf, ""); - strcat (buf, ""); - } - } - gaiaAppendToOutBuffer (out_buf, buf); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* processing POLYGON */ - ring = polyg->Exterior; - if (is_multi) - { - if (version == 3) - { - if (is_coll) - strcpy (buf, ""); - else - strcpy (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - if (ring->DimensionModel == GAIA_XY_Z - || ring->DimensionModel == GAIA_XY_Z_M) - strcat (buf, ""); - else - strcat (buf, ""); - } - else - { - if (is_coll) - strcpy (buf, ""); - else - strcpy (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - } - } - else - { - if (geom->Srid <= 0) - strcpy (buf, ""); - else - sprintf (buf, "", - geom->Srid); - if (version == 3) - { - strcat (buf, ""); - strcat (buf, ""); - if (ring->DimensionModel == GAIA_XY_Z - || ring->DimensionModel == GAIA_XY_Z_M) - strcat (buf, ""); - else - strcat (buf, ""); - } - else - { - strcat (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - } - } - gaiaAppendToOutBuffer (out_buf, buf); - for (iv = 0; iv < ring->Points; iv++) - { - /* exporting vertices [Interior Ring] */ - has_z = 0; - if (ring->DimensionModel == GAIA_XY_Z) - { - has_z = 1; - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - has_z = 1; - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - if (iv == 0) - *buf = '\0'; - else - strcpy (buf, " "); - if (has_z) - { - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%.*f", precision, z); - gaiaOutClean (buf_z); - if (version == 3) - { - xbuf = - sqlite3_mprintf ("%s%s %s %s", buf, buf_x, - buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - } - else - { - xbuf = - sqlite3_mprintf ("%s%s,%s,%s", buf, buf_x, - buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - } - } - else - { - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - if (version == 3) - { - xbuf = - sqlite3_mprintf ("%s%s %s", buf, buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - } - else - { - xbuf = - sqlite3_mprintf ("%s%s,%s", buf, buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - } - } - gaiaAppendToOutBuffer (out_buf, xbuf); - sqlite3_free (xbuf); - } - /* closing the Exterior Ring */ - if (version == 3) - { - strcpy (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - } - else - { - strcpy (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - } - gaiaAppendToOutBuffer (out_buf, buf); - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* interior rings */ - ring = polyg->Interiors + ib; - if (version == 3) - { - strcpy (buf, ""); - strcat (buf, ""); - if (ring->DimensionModel == GAIA_XY_Z - || ring->DimensionModel == GAIA_XY_Z_M) - strcat (buf, ""); - else - strcat (buf, ""); - } - else - { - strcpy (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - } - gaiaAppendToOutBuffer (out_buf, buf); - for (iv = 0; iv < ring->Points; iv++) - { - /* exporting vertices [Interior Ring] */ - has_z = 0; - if (ring->DimensionModel == GAIA_XY_Z) - { - has_z = 1; - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - has_z = 1; - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - if (iv == 0) - *buf = '\0'; - else - strcpy (buf, " "); - if (has_z) - { - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%.*f", precision, z); - gaiaOutClean (buf_z); - if (version == 3) - { - xbuf = - sqlite3_mprintf ("%s%s %s %s", buf, buf_x, - buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - } - else - { - xbuf = - sqlite3_mprintf ("%s%s,%s,%s", buf, buf_x, - buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - } - } - else - { - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - if (version == 3) - { - xbuf = - sqlite3_mprintf ("%s%s %s", buf, buf_x, - buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - } - else - { - xbuf = - sqlite3_mprintf ("%s%s,%s", buf, buf_x, - buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - } - } - gaiaAppendToOutBuffer (out_buf, xbuf); - sqlite3_free (xbuf); - } - /* closing the Interior Ring */ - if (version == 3) - { - strcpy (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - } - else - { - strcpy (buf, ""); - strcat (buf, ""); - strcat (buf, ""); - } - gaiaAppendToOutBuffer (out_buf, buf); - } - /* closing the Polygon */ - if (is_multi) - { - if (version == 3) - { - strcpy (buf, ""); - if (is_coll) - strcat (buf, ""); - else - strcat (buf, ""); - } - else - { - strcpy (buf, ""); - if (is_coll) - strcat (buf, ""); - else - strcat (buf, ""); - } - } - else - strcpy (buf, ""); - gaiaAppendToOutBuffer (out_buf, buf); - polyg = polyg->Next; - } - switch (geom->DeclaredType) - { - case GAIA_POINT: - case GAIA_LINESTRING: - case GAIA_POLYGON: - *buf = '\0'; - break; - case GAIA_MULTIPOINT: - sprintf (buf, ""); - break; - case GAIA_MULTILINESTRING: - if (version == 3) - sprintf (buf, ""); - else - sprintf (buf, ""); - break; - case GAIA_MULTIPOLYGON: - if (version == 3) - sprintf (buf, ""); - else - sprintf (buf, ""); - break; - default: - sprintf (buf, ""); - break; - }; - gaiaAppendToOutBuffer (out_buf, buf); -} - -GAIAGEO_DECLARE void -gaiaOutGeoJSON (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom, int precision, - int options) -{ -/* -/ prints the GeoJSON representation of current geometry -/ *result* returns the encoded GeoJSON or NULL if any error is encountered -*/ - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - int iv; - int ib; - double x; - double y; - double z; - double m; - int has_z; - int is_multi = 0; - int multi_count = 0; - char *bbox; - char crs[2048]; - char *buf; - char *buf_x; - char *buf_y; - char *buf_m; - char *buf_z; - char endJson[16]; - if (!geom) - return; - if (precision > 18) - precision = 18; - - if (options != 0) - { - bbox = NULL; - *crs = '\0'; - if (geom->Srid > 0) - { - if (options == 2 || options == 3) - { - /* including short CRS */ - sprintf (crs, - ",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:%d\"}}", - geom->Srid); - } - if (options == 4 || options == 5) - { - /* including long CRS */ - sprintf (crs, - ",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"urn:ogc:def:crs:EPSG:%d\"}}", - geom->Srid); - } - } - if (options == 1 || options == 3 || options == 5) - { - /* including BBOX */ - gaiaMbrGeometry (geom); - buf_x = sqlite3_mprintf ("%.*f", precision, geom->MinX); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, geom->MinY); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%.*f", precision, geom->MaxX); - gaiaOutClean (buf_z); - buf_m = sqlite3_mprintf ("%.*f", precision, geom->MaxY); - gaiaOutClean (buf_m); - bbox = - sqlite3_mprintf (",\"bbox\":[%s,%s,%s,%s]", buf_x, buf_y, - buf_z, buf_m); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - sqlite3_free (buf_m); - } - switch (geom->DeclaredType) - { - case GAIA_POINT: - buf = - sqlite3_mprintf ("{\"type\":\"Point\"%s%s,\"coordinates\":", - crs, bbox); - strcpy (endJson, "}"); - break; - case GAIA_LINESTRING: - buf = - sqlite3_mprintf - ("{\"type\":\"LineString\"%s%s,\"coordinates\":[", crs, - bbox); - strcpy (endJson, "}"); - break; - case GAIA_POLYGON: - buf = - sqlite3_mprintf - ("{\"type\":\"Polygon\"%s%s,\"coordinates\":[", crs, bbox); - strcpy (endJson, "}"); - break; - case GAIA_MULTIPOINT: - buf = - sqlite3_mprintf - ("{\"type\":\"MultiPoint\"%s%s,\"coordinates\":[", crs, - bbox); - strcpy (endJson, "]}"); - break; - case GAIA_MULTILINESTRING: - buf = - sqlite3_mprintf - ("{\"type\":\"MultiLineString\"%s%s,\"coordinates\":[[", - crs, bbox); - strcpy (endJson, "]}"); - break; - case GAIA_MULTIPOLYGON: - buf = - sqlite3_mprintf - ("{\"type\":\"MultiPolygon\"%s%s,\"coordinates\":[[", crs, - bbox); - strcpy (endJson, "]}"); - break; - default: - buf = - sqlite3_mprintf - ("{\"type\":\"GeometryCollection\"%s%s,\"geometries\":[", - crs, bbox); - strcpy (endJson, "]}"); - is_multi = 1; - break; - }; - if (bbox) - sqlite3_free (bbox); - } - else - { - /* omitting BBOX */ - switch (geom->DeclaredType) - { - case GAIA_POINT: - buf = sqlite3_mprintf ("{\"type\":\"Point\",\"coordinates\":"); - strcpy (endJson, "}"); - break; - case GAIA_LINESTRING: - buf = - sqlite3_mprintf - ("{\"type\":\"LineString\",\"coordinates\":["); - strcpy (endJson, "}"); - break; - case GAIA_POLYGON: - buf = - sqlite3_mprintf ("{\"type\":\"Polygon\",\"coordinates\":["); - strcpy (endJson, "}"); - break; - case GAIA_MULTIPOINT: - buf = - sqlite3_mprintf - ("{\"type\":\"MultiPoint\",\"coordinates\":["); - strcpy (endJson, "]}"); - break; - case GAIA_MULTILINESTRING: - buf = - sqlite3_mprintf - ("{\"type\":\"MultiLineString\",\"coordinates\":[["); - strcpy (endJson, "]}"); - break; - case GAIA_MULTIPOLYGON: - buf = - sqlite3_mprintf - ("{\"type\":\"MultiPolygon\",\"coordinates\":[["); - strcpy (endJson, "]}"); - break; - default: - buf = - sqlite3_mprintf - ("{\"type\":\"GeometryCollection\",\"geometries\":["); - strcpy (endJson, "]}"); - is_multi = 1; - break; - }; - } - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - point = geom->FirstPoint; - while (point) - { - /* processing POINT */ - if (is_multi) - { - if (multi_count > 0) - buf = ",{\"type\":\"Point\",\"coordinates\":"; - else - buf = "{\"type\":\"Point\",\"coordinates\":"; - gaiaAppendToOutBuffer (out_buf, buf); - } - else if (point != geom->FirstPoint) - { - /* adding a further Point */ - gaiaAppendToOutBuffer (out_buf, ","); - } - buf_x = sqlite3_mprintf ("%.*f", precision, point->X); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, point->Y); - gaiaOutClean (buf_y); - has_z = 0; - if (point->DimensionModel == GAIA_XY_Z - || point->DimensionModel == GAIA_XY_Z_M) - { - buf_z = sqlite3_mprintf ("%.*f", precision, point->Z); - gaiaOutClean (buf_z); - has_z = 1; - } - if (has_z) - { - buf = sqlite3_mprintf ("[%s,%s,%s]", buf_x, buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - } - else - { - buf = sqlite3_mprintf ("[%s,%s]", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - } - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - if (is_multi) - { - gaiaAppendToOutBuffer (out_buf, "}"); - multi_count++; - } - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* processing LINESTRING */ - if (is_multi) - { - if (multi_count > 0) - buf = ",{\"type\":\"LineString\",\"coordinates\":["; - else - buf = "{\"type\":\"LineString\",\"coordinates\":["; - gaiaAppendToOutBuffer (out_buf, buf); - } - else if (line != geom->FirstLinestring) - { - /* opening a further LineString */ - gaiaAppendToOutBuffer (out_buf, ",["); - } - for (iv = 0; iv < line->Points; iv++) - { - /* exporting vertices */ - has_z = 0; - if (line->DimensionModel == GAIA_XY_Z) - { - has_z = 1; - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - has_z = 1; - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - if (has_z) - { - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%.*f", precision, z); - gaiaOutClean (buf_z); - if (iv == 0) - buf = - sqlite3_mprintf ("[%s,%s,%s]", buf_x, buf_y, - buf_z); - else - buf = - sqlite3_mprintf (",[%s,%s,%s]", buf_x, buf_y, - buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - } - else - { - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - if (iv == 0) - buf = sqlite3_mprintf ("[%s,%s]", buf_x, buf_y); - else - buf = sqlite3_mprintf (",[%s,%s]", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - } - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - /* closing the LineString */ - gaiaAppendToOutBuffer (out_buf, "]"); - if (is_multi) - { - gaiaAppendToOutBuffer (out_buf, "}"); - multi_count++; - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* processing POLYGON */ - if (is_multi) - { - if (multi_count > 0) - buf = ",{\"type\":\"Polygon\",\"coordinates\":["; - else - buf = "{\"type\":\"Polygon\",\"coordinates\":["; - gaiaAppendToOutBuffer (out_buf, buf); - } - else if (polyg != geom->FirstPolygon) - { - /* opening a further Polygon */ - gaiaAppendToOutBuffer (out_buf, ",["); - } - ring = polyg->Exterior; - for (iv = 0; iv < ring->Points; iv++) - { - /* exporting vertices [Interior Ring] */ - has_z = 0; - if (ring->DimensionModel == GAIA_XY_Z) - { - has_z = 1; - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - has_z = 1; - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - if (has_z) - { - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%.*f", precision, z); - gaiaOutClean (buf_z); - if (iv == 0) - buf = - sqlite3_mprintf ("[[%s,%s,%s]", buf_x, buf_y, - buf_z); - else - buf = - sqlite3_mprintf (",[%s,%s,%s]", buf_x, buf_y, - buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - } - else - { - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - if (iv == 0) - buf = sqlite3_mprintf ("[[%s,%s]", buf_x, buf_y); - else - buf = sqlite3_mprintf (",[%s,%s]", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - } - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - /* closing the Exterior Ring */ - gaiaAppendToOutBuffer (out_buf, "]"); - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* interior rings */ - ring = polyg->Interiors + ib; - for (iv = 0; iv < ring->Points; iv++) - { - /* exporting vertices [Interior Ring] */ - has_z = 0; - if (ring->DimensionModel == GAIA_XY_Z) - { - has_z = 1; - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - has_z = 1; - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - } - if (has_z) - { - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - buf_z = sqlite3_mprintf ("%.*f", precision, z); - gaiaOutClean (buf_z); - if (iv == 0) - buf = - sqlite3_mprintf (",[[%s,%s,%s]", buf_x, - buf_y, buf_z); - else - buf = - sqlite3_mprintf (",[%s,%s,%s]", buf_x, - buf_y, buf_z); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - sqlite3_free (buf_z); - } - else - { - buf_x = sqlite3_mprintf ("%.*f", precision, x); - gaiaOutClean (buf_x); - buf_y = sqlite3_mprintf ("%.*f", precision, y); - gaiaOutClean (buf_y); - if (iv == 0) - buf = - sqlite3_mprintf (",[[%s,%s]", buf_x, buf_y); - else - buf = - sqlite3_mprintf (",[%s,%s]", buf_x, buf_y); - sqlite3_free (buf_x); - sqlite3_free (buf_y); - } - gaiaAppendToOutBuffer (out_buf, buf); - sqlite3_free (buf); - } - /* closing the Interior Ring */ - gaiaAppendToOutBuffer (out_buf, "]"); - } - /* closing the Polygon */ - gaiaAppendToOutBuffer (out_buf, "]"); - if (is_multi) - { - gaiaAppendToOutBuffer (out_buf, "}"); - multi_count++; - } - polyg = polyg->Next; - } - gaiaAppendToOutBuffer (out_buf, endJson); -} diff --git a/src/spatialite/src/gaiageo/lemon/Ewkt.y b/src/spatialite/src/gaiageo/lemon/Ewkt.y deleted file mode 100644 index a93df49..0000000 --- a/src/spatialite/src/gaiageo/lemon/Ewkt.y +++ /dev/null @@ -1,852 +0,0 @@ -/* - Ewkt.y -- EWKT parser - LEMON config - - version 2.4, 2011 May 14 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -// Tokens are void pointers (so we can cast them to whatever we want) -%token_type {void *} - -// Output to stderr when stack overflows -%stack_overflow { - spatialite_e( "Giving up. Parser stack overflow\n"); -} - -// Increase this number if necessary -%stack_size 1000000 - -// Header files to be included in Ewkt.c -%include { -} - -// Set the return value of gaiaParseEWKT in the following pointer: -%extra_argument { struct ewkt_data *p_data } - -// Invalid syntax (ie. no rules matched) -%syntax_error { -/* -** when the LEMON parser encounters an error -** then this global variable is set -*/ - p_data->ewkt_parse_error = 1; - p_data->result = NULL; -} - - /* This is to terminate with a new line */ - main ::= in. - in ::= . - in ::= in state EWKT_NEWLINE. - - state ::= program. - - /* - * program is the start node. All strings matched by this CFG must be one of - * geo_text (text describing a geometry), - * geo_textm (text describing a 2D geometry with a measure) - */ - -program ::= geo_text. -program ::= geo_textm. - -// geometries (2D, 3D and 3D with a measure): -geo_text ::= point(P). { p_data->result = P; } // P is a geometry collection containing a point -geo_text ::= pointz(P). { p_data->result = P; } // P is a geometry collection containing a point -geo_text ::= pointzm(P). { p_data->result = P; } // P is a geometry collection containing a point -geo_text ::= linestring(L). { p_data->result = L; } // L is a geometry collection containing a linestring -geo_text ::= linestringz(L). { p_data->result = L; } // L is a geometry collection containing a linestring -geo_text ::= linestringzm(L). { p_data->result = L; } // L is a geometry collection containing a linestring -geo_text ::= polygon(P). { p_data->result = P; } // P is a geometry collection containing a polygon -geo_text ::= polygonz(P). { p_data->result = P; } // P is a geometry collection containing a polygon -geo_text ::= polygonzm(P). { p_data->result = P; } // P is a geometry collection containing a polygon -geo_text ::= multipoint(M). { p_data->result = M; } // M is a geometry collection containing a multipoint -geo_text ::= multipointz(M). { p_data->result = M; } // M is a geometry collection containing a multipoint -geo_text ::= multipointzm(M). { p_data->result = M; } // M is a geometry collection containing a multipoint -geo_text ::= multilinestring(M). { p_data->result = M; } // M is a geometry collection containing a multilinestring -geo_text ::= multilinestringz(M). { p_data->result = M; } // M is a geometry collection containing a multilinestring -geo_text ::= multilinestringzm(M). { p_data->result = M; } // M is a geometry collection containing a multilinestring -geo_text ::= multipolygon(M). { p_data->result = M; } // M is a geometry collection containing a multipolygon -geo_text ::= multipolygonz(M). { p_data->result = M; } // M is a geometry collection containing a multipolygon -geo_text ::= multipolygonzm(M). { p_data->result = M; } // M is a geometry collection containing a multipolygon -geo_text ::= geocoll(H). { p_data->result = H; } // H is a geometry collection created from user input -geo_text ::= geocollz(H). { p_data->result = H; } // H is a geometry collection created from user input -geo_text ::= geocollzm(H). { p_data->result = H; } // H is a geometry collection created from user input - -// 2D geometries (with a measure): -geo_textm ::= pointm(P). { p_data->result = P; } -geo_textm ::= linestringm(L). { p_data->result = L; } -geo_textm ::= polygonm(P). { p_data->result = P; } -geo_textm ::= multipointm(M). { p_data->result = M; } -geo_textm ::= multilinestringm(M). { p_data->result = M; } -geo_textm ::= multipolygonm(M). { p_data->result = M; } -geo_textm ::= geocollm(H). { p_data->result = H; } - - -// Syntax for a "point" object: -// The functions called build a geometry collection from a gaiaPointPtr -point(P) ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxy(Q) EWKT_CLOSE_BRACKET. - { P = ewkt_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } -pointz(P) ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyz(Q) EWKT_CLOSE_BRACKET. - { P = ewkt_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } -pointm(P) ::= EWKT_POINT_M EWKT_OPEN_BRACKET point_coordxym(Q) EWKT_CLOSE_BRACKET. - { P = ewkt_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } -pointzm(P) ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyzm(Q) EWKT_CLOSE_BRACKET. - { P = ewkt_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } - -// Point coordinates in different dimensions: MultiPoint((pt),(pt)) -// Create the point by calling the proper function in SpatiaLite : -point_brkt_coordxy(P) ::= EWKT_OPEN_BRACKET coord(X) coord(Y) EWKT_CLOSE_BRACKET. - { P = (void *) ewkt_point_xy( p_data, (double *)X, (double *)Y); } -point_brkt_coordxym(P) ::= EWKT_OPEN_BRACKET coord(X) coord(Y) coord(M) EWKT_CLOSE_BRACKET. - { P = (void *) ewkt_point_xym( p_data, (double *)X, (double *)Y, (double *)M); } -point_brkt_coordxyz(P) ::= EWKT_OPEN_BRACKET coord(X) coord(Y) coord(Z) EWKT_CLOSE_BRACKET. - { P = (void *) ewkt_point_xyz( p_data, (double *)X, (double *)Y, (double *)Z); } -point_brkt_coordxyzm(P) ::= EWKT_OPEN_BRACKET coord(X) coord(Y) coord(Z) coord(M) EWKT_CLOSE_BRACKET. - { P = (void *) ewkt_point_xyzm( p_data, (double *)X, (double *)Y, (double *)Z, (double *)M); } - -// Point coordinates in different dimensions. -// Create the point by calling the proper function in SpatiaLite : -point_coordxy(P) ::= coord(X) coord(Y). - { P = (void *) ewkt_point_xy( p_data, (double *)X, (double *)Y); } -point_coordxym(P) ::= coord(X) coord(Y) coord(M). - { P = (void *) ewkt_point_xym( p_data, (double *)X, (double *)Y, (double *)M); } -point_coordxyz(P) ::= coord(X) coord(Y) coord(Z). - { P = (void *) ewkt_point_xyz( p_data, (double *)X, (double *)Y, (double *)Z); } -point_coordxyzm(P) ::= coord(X) coord(Y) coord(Z) coord(M). - { P = (void *) ewkt_point_xyzm( p_data, (double *)X, (double *)Y, (double *)Z, (double *)M); } - -// All coordinates are assumed to be doubles (guaranteed by the flex tokenizer). -coord(A) ::= EWKT_NUM(B). { A = B; } - - -// Rules to match an infinite number of points: MultiPoint((pt), (pt)) -// Also links the generated gaiaPointPtrs together -extra_brkt_pointsxy(A) ::= . { A = NULL; } -extra_brkt_pointsxy(A) ::= EWKT_COMMA point_brkt_coordxy(P) extra_brkt_pointsxy(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - -extra_brkt_pointsxym(A) ::= . { A = NULL; } -extra_brkt_pointsxym(A) ::= EWKT_COMMA point_brkt_coordxym(P) extra_brkt_pointsxym(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - -extra_brkt_pointsxyz(A) ::= . { A = NULL; } -extra_brkt_pointsxyz(A) ::= EWKT_COMMA point_brkt_coordxyz(P) extra_brkt_pointsxyz(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - -extra_brkt_pointsxyzm(A) ::= . { A = NULL; } -extra_brkt_pointsxyzm(A) ::= EWKT_COMMA point_brkt_coordxyzm(P) extra_brkt_pointsxyzm(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - - -// Rules to match an infinite number of points: -// Also links the generated gaiaPointPtrs together -extra_pointsxy(A) ::= . { A = NULL; } -extra_pointsxy(A) ::= EWKT_COMMA point_coordxy(P) extra_pointsxy(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - -extra_pointsxym(A) ::= . { A = NULL; } -extra_pointsxym(A) ::= EWKT_COMMA point_coordxym(P) extra_pointsxym(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - -extra_pointsxyz(A) ::= . { A = NULL; } -extra_pointsxyz(A) ::= EWKT_COMMA point_coordxyz(P) extra_pointsxyz(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - -extra_pointsxyzm(A) ::= . { A = NULL; } -extra_pointsxyzm(A) ::= EWKT_COMMA point_coordxyzm(P) extra_pointsxyzm(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - - -// Syntax for a "linestring" object: -// The functions called build a geometry collection from a gaiaLinestringPtr -linestring(L) ::= EWKT_LINESTRING linestring_text(X). - { L = ewkt_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } -linestringm(L) ::= EWKT_LINESTRING_M linestring_textm(X). - { L = ewkt_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } -linestringz(L) ::= EWKT_LINESTRING linestring_textz(X). - { L = ewkt_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } -linestringzm(L) ::= EWKT_LINESTRING linestring_textzm(X). - { L = ewkt_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } - -// A valid linestring must have at least two vertices: -// The functions called build a gaiaLinestring from a linked list of points -linestring_text(L) ::= EWKT_OPEN_BRACKET point_coordxy(P) EWKT_COMMA point_coordxy(Q) extra_pointsxy(R) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - L = (void *) ewkt_linestring_xy( p_data, (gaiaPointPtr)P); - } - -linestring_textm(L) ::= EWKT_OPEN_BRACKET point_coordxym(P) EWKT_COMMA point_coordxym(Q) extra_pointsxym(R) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - L = (void *) ewkt_linestring_xym( p_data, (gaiaPointPtr)P); - } - -linestring_textz(L) ::= EWKT_OPEN_BRACKET point_coordxyz(P) EWKT_COMMA point_coordxyz(Q) extra_pointsxyz(R) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - L = (void *) ewkt_linestring_xyz( p_data, (gaiaPointPtr)P); - } - -linestring_textzm(L) ::= EWKT_OPEN_BRACKET point_coordxyzm(P) EWKT_COMMA point_coordxyzm(Q) extra_pointsxyzm(R) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - L = (void *) ewkt_linestring_xyzm( p_data, (gaiaPointPtr)P); - } - - -// Syntax for a "polygon" object: -// The functions called build a geometry collection from a gaiaPolygonPtr -polygon(P) ::= EWKT_POLYGON polygon_text(X). - { P = ewkt_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } -polygonm(P) ::= EWKT_POLYGON_M polygon_textm(X). - { P = ewkt_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } -polygonz(P) ::= EWKT_POLYGON polygon_textz(X). - { P = ewkt_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } -polygonzm(P) ::= EWKT_POLYGON polygon_textzm(X). - { P = ewkt_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } - -// A valid polygon must have at least one ring: -// The functions called build a gaiaPolygonPtr from a linked list of gaiaRingPtrs -polygon_text(P) ::= EWKT_OPEN_BRACKET ring(R) extra_rings(E) EWKT_CLOSE_BRACKET. - { - ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; - P = (void *) ewkt_polygon_xy( p_data, (gaiaRingPtr)R); - } - -polygon_textm(P) ::= EWKT_OPEN_BRACKET ringm(R) extra_ringsm(E) EWKT_CLOSE_BRACKET. - { - ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; - P = (void *) ewkt_polygon_xym( p_data, (gaiaRingPtr)R); - } - -polygon_textz(P) ::= EWKT_OPEN_BRACKET ringz(R) extra_ringsz(E) EWKT_CLOSE_BRACKET. - { - ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; - P = (void *) ewkt_polygon_xyz( p_data, (gaiaRingPtr)R); - } - -polygon_textzm(P) ::= EWKT_OPEN_BRACKET ringzm(R) extra_ringszm(E) EWKT_CLOSE_BRACKET. - { - ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; - P = (void *) ewkt_polygon_xyzm( p_data, (gaiaRingPtr)R); - } - -// A valid ring must have at least 4 points -// The functions called build a gaiaRingPtr from a linked list of gaiaPointPtrs -ring(R) ::= EWKT_OPEN_BRACKET point_coordxy(A) EWKT_COMMA point_coordxy(B) EWKT_COMMA point_coordxy(C) EWKT_COMMA point_coordxy(D) extra_pointsxy(E) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; - ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; - ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; - ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; - R = (void *) ewkt_ring_xy( p_data, (gaiaPointPtr)A); - } - -// To match more than one 2D ring: -extra_rings(R) ::= . { R = NULL; } -extra_rings(R) ::= EWKT_COMMA ring(S) extra_rings(T). - { - ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; - R = S; - } - -ringm(R) ::= EWKT_OPEN_BRACKET point_coordxym(A) EWKT_COMMA point_coordxym(B) EWKT_COMMA point_coordxym(C) EWKT_COMMA point_coordxym(D) extra_pointsxym(E) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; - ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; - ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; - ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; - R = (void *) ewkt_ring_xym( p_data, (gaiaPointPtr)A); - } - -// To match more than one 2D (with a measure) ring: -extra_ringsm(R) ::= . { R = NULL; } -extra_ringsm(R) ::= EWKT_COMMA ringm(S) extra_ringsm(T). - { - ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; - R = S; - } - -ringz(R) ::= EWKT_OPEN_BRACKET point_coordxyz(A) EWKT_COMMA point_coordxyz(B) EWKT_COMMA point_coordxyz(C) EWKT_COMMA point_coordxyz(D) extra_pointsxyz(E) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; - ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; - ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; - ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; - R = (void *) ewkt_ring_xyz( p_data, (gaiaPointPtr)A); - } - -// To match more than one 3D ring: -extra_ringsz(R) ::= . { R = NULL; } -extra_ringsz(R) ::= EWKT_COMMA ringz(S) extra_ringsz(T). - { - ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; - R = S; - } - -ringzm(R) ::= EWKT_OPEN_BRACKET point_coordxyzm(A) EWKT_COMMA point_coordxyzm(B) EWKT_COMMA point_coordxyzm(C) EWKT_COMMA point_coordxyzm(D) extra_pointsxyzm(E) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; - ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; - ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; - ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; - R = (void *) ewkt_ring_xyzm( p_data, (gaiaPointPtr)A); - } - -// To match more than one 3D (with a measure) ring: -extra_ringszm(R) ::= . { R = NULL; } -extra_ringszm(R) ::= EWKT_COMMA ringzm(S) extra_ringszm(T). - { - ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; - R = S; - } - -// Syntax for a "multipoint" object: -// X in the following lines is a geometry collection containing a multipoint -multipoint(M) ::= EWKT_MULTIPOINT multipoint_text(X). { M = X; } -multipointm(M) ::= EWKT_MULTIPOINT_M multipoint_textm(X). { M = X; } -multipointz(M) ::= EWKT_MULTIPOINT multipoint_textz(X). { M = X; } -multipointzm(M) ::= EWKT_MULTIPOINT multipoint_textzm(X). { M = X; } - -// Multipoints can contain any number of points (but at least one): -// The functions called build a geometry collection containing a multipoint -multipoint_text(M) ::= EWKT_OPEN_BRACKET point_coordxy(P) extra_pointsxy(Q) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) ewkt_multipoint_xy( p_data, (gaiaPointPtr)P); - } -multipoint_textm(M) ::= EWKT_OPEN_BRACKET point_coordxym(P) extra_pointsxym(Q) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) ewkt_multipoint_xym( p_data, (gaiaPointPtr)P); - } -multipoint_textz(M) ::= EWKT_OPEN_BRACKET point_coordxyz(P) extra_pointsxyz(Q) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) ewkt_multipoint_xyz( p_data, (gaiaPointPtr)P); - } -multipoint_textzm(M) ::= EWKT_OPEN_BRACKET point_coordxyzm(P) extra_pointsxyzm(Q) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) ewkt_multipoint_xyzm( p_data, (gaiaPointPtr)P); - } -multipoint_text(M) ::= EWKT_OPEN_BRACKET point_brkt_coordxy(P) extra_brkt_pointsxy(Q) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) ewkt_multipoint_xy( p_data, (gaiaPointPtr)P); - } -multipoint_textm(M) ::= EWKT_OPEN_BRACKET point_brkt_coordxym(P) extra_brkt_pointsxym(Q) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) ewkt_multipoint_xym( p_data, (gaiaPointPtr)P); - } -multipoint_textz(M) ::= EWKT_OPEN_BRACKET point_brkt_coordxyz(P) extra_brkt_pointsxyz(Q) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) ewkt_multipoint_xyz( p_data, (gaiaPointPtr)P); - } -multipoint_textzm(M) ::= EWKT_OPEN_BRACKET point_brkt_coordxyzm(P) extra_brkt_pointsxyzm(Q) EWKT_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) ewkt_multipoint_xyzm( p_data, (gaiaPointPtr)P); - } - - -// Syntax for a "multilinestring" object: -// X in the following lines refers to a geometry collection containing a multilinestring -multilinestring(M) ::= EWKT_MULTILINESTRING multilinestring_text(X). { M = X; } -multilinestringm(M) ::= EWKT_MULTILINESTRING_M multilinestring_textm(X). { M = X; } -multilinestringz(M) ::= EWKT_MULTILINESTRING multilinestring_textz(X). { M = X; } -multilinestringzm(M) ::= EWKT_MULTILINESTRING multilinestring_textzm(X). { M = X; } - -// Multilinestrings can contain any number of linestrings (but at least one): -// The functions called build a geometry collection containing a multilinestring -multilinestring_text(M) ::= EWKT_OPEN_BRACKET linestring_text(L) multilinestring_text2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; - M = (void *) ewkt_multilinestring_xy( p_data, (gaiaLinestringPtr)L); - } - -// Extra linestrings -multilinestring_text2(X) ::= . { X = NULL; } -multilinestring_text2(X) ::= EWKT_COMMA linestring_text(L) multilinestring_text2(Y). - { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } - -multilinestring_textm(M) ::= EWKT_OPEN_BRACKET linestring_textm(L) multilinestring_textm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; - M = (void *) ewkt_multilinestring_xym( p_data, (gaiaLinestringPtr)L); - } - -multilinestring_textm2(X) ::= . { X = NULL; } -multilinestring_textm2(X) ::= EWKT_COMMA linestring_textm(L) multilinestring_textm2(Y). - { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } - -multilinestring_textz(M) ::= EWKT_OPEN_BRACKET linestring_textz(L) multilinestring_textz2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; - M = (void *) ewkt_multilinestring_xyz( p_data, (gaiaLinestringPtr)L); - } - -multilinestring_textz2(X) ::= . { X = NULL; } -multilinestring_textz2(X) ::= EWKT_COMMA linestring_textz(L) multilinestring_textz2(Y). - { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } - -multilinestring_textzm(M) ::= EWKT_OPEN_BRACKET linestring_textzm(L) multilinestring_textzm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; - M = (void *) ewkt_multilinestring_xyzm( p_data, (gaiaLinestringPtr)L); - } - -multilinestring_textzm2(X) ::= . { X = NULL; } -multilinestring_textzm2(X) ::= EWKT_COMMA linestring_textzm(L) multilinestring_textzm2(Y). - { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } - - -// Syntax for a "multipolygon" object -// X in the following lines refers to a geometry collection containing a multipolygon -multipolygon(M) ::= EWKT_MULTIPOLYGON multipolygon_text(X). { M = X; } -multipolygonm(M) ::= EWKT_MULTIPOLYGON_M multipolygon_textm(X). { M = X; } -multipolygonz(M) ::= EWKT_MULTIPOLYGON multipolygon_textz(X). { M = X; } -multipolygonzm(M) ::= EWKT_MULTIPOLYGON multipolygon_textzm(X). { M = X; } - -// Multipolygons can contain any number of polygons (but at least one): -// The functions called build a geometry collection containing a multipolygon -multipolygon_text(M) ::= EWKT_OPEN_BRACKET polygon_text(P) multipolygon_text2(Q) EWKT_CLOSE_BRACKET. - { - ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; - M = (void *) ewkt_multipolygon_xy( p_data, (gaiaPolygonPtr)P); - } - -// Extra polygons -multipolygon_text2(Q) ::= . { Q = NULL; } -multipolygon_text2(A) ::= EWKT_COMMA polygon_text(P) multipolygon_text2(B). - { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } - -multipolygon_textm(M) ::= EWKT_OPEN_BRACKET polygon_textm(P) multipolygon_textm2(Q) EWKT_CLOSE_BRACKET. - { - ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; - M = (void *) ewkt_multipolygon_xym( p_data, (gaiaPolygonPtr)P); - } - -multipolygon_textm2(Q) ::= . { Q = NULL; } -multipolygon_textm2(A) ::= EWKT_COMMA polygon_textm(P) multipolygon_textm2(B). - { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } - -multipolygon_textz(M) ::= EWKT_OPEN_BRACKET polygon_textz(P) multipolygon_textz2(Q) EWKT_CLOSE_BRACKET. - { - ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; - M = (void *) ewkt_multipolygon_xyz( p_data, (gaiaPolygonPtr)P); - } - -multipolygon_textz2(Q) ::= . { Q = NULL; } -multipolygon_textz2(A) ::= EWKT_COMMA polygon_textz(P) multipolygon_textz2(B). - { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } - -multipolygon_textzm(M) ::= EWKT_OPEN_BRACKET polygon_textzm(P) multipolygon_textzm2(Q) EWKT_CLOSE_BRACKET. - { - ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; - M = (void *) ewkt_multipolygon_xyzm( p_data, (gaiaPolygonPtr)P); - } - -multipolygon_textzm2(Q) ::= . { Q = NULL; } -multipolygon_textzm2(A) ::= EWKT_COMMA polygon_textzm(P) multipolygon_textzm2(B). - { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } - - -// Syntax for a "geometrycollection" object: -// X in the following lines refers to a geometry collection generated based on user input -geocoll(G) ::= EWKT_GEOMETRYCOLLECTION geocoll_text(X). { G = X; } -geocollm(G) ::= EWKT_GEOMETRYCOLLECTION_M geocoll_textm(X). { G = X; } -geocollz(G) ::= EWKT_GEOMETRYCOLLECTION geocoll_textz(X). { G = X; } -geocollzm(G) ::= EWKT_GEOMETRYCOLLECTION geocoll_textzm(X). { G = X; } - -// Geometry collections can contain any number of points, linestrings, or polygons (but at least one): -geocoll_text(G) ::= EWKT_OPEN_BRACKET point(P) geocoll_text2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_text(G) ::= EWKT_OPEN_BRACKET linestring(L) geocoll_text2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_text(G) ::= EWKT_OPEN_BRACKET polygon(P) geocoll_text2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_text(G) ::= EWKT_OPEN_BRACKET multipoint(P) geocoll_text2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_text(G) ::= EWKT_OPEN_BRACKET multilinestring(L) geocoll_text2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_text(G) ::= EWKT_OPEN_BRACKET multipolygon(P) geocoll_text2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_text(G) ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_text(C) geocoll_text2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)C); - } - -// Extra points, linestrings, or polygons -geocoll_text2(X) ::= . { X = NULL; } -geocoll_text2(X) ::= EWKT_COMMA point(P) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_text2(X) ::= EWKT_COMMA linestring(L) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_text2(X) ::= EWKT_COMMA polygon(P) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_text2(X) ::= EWKT_COMMA multipoint(P) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_text2(X) ::= EWKT_COMMA multilinestring(L) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_text2(X) ::= EWKT_COMMA multipolygon(P) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_text2(X) ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_text(C) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; - X = C; - } - - -geocoll_textm(G) ::= EWKT_OPEN_BRACKET pointm(P) geocoll_textm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textm(G) ::= EWKT_OPEN_BRACKET linestringm(L) geocoll_textm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_textm(G) ::= EWKT_OPEN_BRACKET polygonm(P) geocoll_textm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textm(G) ::= EWKT_OPEN_BRACKET multipointm(P) geocoll_textm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textm(G) ::= EWKT_OPEN_BRACKET multilinestringm(L) geocoll_textm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_textm(G) ::= EWKT_OPEN_BRACKET multipolygonm(P) geocoll_textm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textm(G) ::= -EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION_M geocoll_textm(C) geocoll_textm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)C); - } - -geocoll_textm2(X) ::= . { X = NULL; } -geocoll_textm2(X) ::= EWKT_COMMA pointm(P) geocoll_textm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textm2(X) ::= EWKT_COMMA linestringm(L) geocoll_textm2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_textm2(X) ::= EWKT_COMMA polygonm(P) geocoll_textm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textm2(X) ::= EWKT_COMMA multipointm(P) geocoll_textm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textm2(X) ::= EWKT_COMMA multilinestringm(L) geocoll_textm2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_textm2(X) ::= EWKT_COMMA multipolygonm(P) geocoll_textm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textm2(X) ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION_M geocoll_textm(C) geocoll_textm2(Y). - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; - X = C; - } - - -geocoll_textz(G) ::= EWKT_OPEN_BRACKET pointz(P) geocoll_textz2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textz(G) ::= EWKT_OPEN_BRACKET linestringz(L) geocoll_textz2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_textz(G) ::= EWKT_OPEN_BRACKET polygonz(P) geocoll_textz2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textz(G) ::= EWKT_OPEN_BRACKET multipointz(P) geocoll_textz2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textz(G) ::= EWKT_OPEN_BRACKET multilinestringz(L) geocoll_textz2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_textz(G) ::= EWKT_OPEN_BRACKET multipolygonz(P) geocoll_textz2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textz(G) ::= -EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textz(C) geocoll_textz2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)C); - } - - -geocoll_textz2(X) ::= . { X = NULL; } -geocoll_textz2(X) ::= EWKT_COMMA pointz(P) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textz2(X) ::= EWKT_COMMA linestringz(L) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_textz2(X) ::= EWKT_COMMA polygonz(P) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textz2(X) ::= EWKT_COMMA multipointz(P) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textz2(X) ::= EWKT_COMMA multilinestringz(L) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_textz2(X) ::= EWKT_COMMA multipolygonz(P) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textz2(X) ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textz(C) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; - X = C; - } - - -geocoll_textzm(G) ::= EWKT_OPEN_BRACKET pointzm(P) geocoll_textzm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textzm(G) ::= EWKT_OPEN_BRACKET linestringzm(L) geocoll_textzm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_textzm(G) ::= EWKT_OPEN_BRACKET polygonzm(P) geocoll_textzm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textzm(G) ::= EWKT_OPEN_BRACKET multipointzm(P) geocoll_textzm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textzm(G) ::= EWKT_OPEN_BRACKET multilinestringzm(L) geocoll_textzm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_textzm(G) ::= EWKT_OPEN_BRACKET multipolygonzm(P) geocoll_textzm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textzm(G) ::= -EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textzm(C) geocoll_textzm2(X) EWKT_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; - G = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)C); - } - - -geocoll_textzm2(X) ::= . { X = NULL; } -geocoll_textzm2(X) ::= EWKT_COMMA pointzm(P) geocoll_textzm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textzm2(X) ::= EWKT_COMMA linestringzm(L) geocoll_textzm2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_textzm2(X) ::= EWKT_COMMA polygonzm(P) geocoll_textzm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textzm2(X) ::= EWKT_COMMA multipointzm(P) geocoll_textzm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textzm2(X) ::= EWKT_COMMA multilinestringzm(L) geocoll_textzm2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_textzm2(X) ::= EWKT_COMMA multipolygonzm(P) geocoll_textzm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textzm2(X) ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textzm(C) geocoll_textzm2(Y). - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; - X = C; - } diff --git a/src/spatialite/src/gaiageo/lemon/Gml.y b/src/spatialite/src/gaiageo/lemon/Gml.y deleted file mode 100644 index e0a93f1..0000000 --- a/src/spatialite/src/gaiageo/lemon/Gml.y +++ /dev/null @@ -1,184 +0,0 @@ -/* - gml.y -- GML parser - LEMON config - - version 2.4, 2011 June 3 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -// Tokens are void pointers (so we can cast them to whatever we want) -%token_type {void *} - -// Output to stderr when stack overflows -%stack_overflow { - spatialite_e( "Giving up. Parser stack overflow\n"); -} - -// Increase this number if necessary -%stack_size 1000000 - -// Header files to be included in gml.c -%include { -} - -// Set the return value of gaiaParseGML in the following pointer: -%extra_argument { struct gml_data *p_data } - -// Invalid syntax (ie. no rules matched) -%syntax_error { -/* -** when the LEMON parser encounters an error -** then this global variable is set -*/ - p_data->gml_parse_error = 1; - p_data->result = NULL; -} - - /* This is to terminate with a new line */ - main ::= in. - in ::= . - in ::= in state GML_NEWLINE. - - state ::= program. - - /* - * program is the start node. - */ - -program ::= gml_tree. - -// GML node: -gml_tree ::= node(N). { p_data->result = N; } // N is a GML node -gml_tree ::= node_chain(C). { p_data->result = C; } // C is a chain of GML nodes - - -// syntax for a GML node object: -node(N) ::= open_tag(K) GML_END GML_CLOSE. - { N = gml_createSelfClosedNode( p_data, (void *)K, NULL); } -node(N) ::= open_tag(K) attr(A) GML_END GML_CLOSE. - { N = gml_createSelfClosedNode( p_data, (void *)K, (void *)A); } -node(N) ::= open_tag(K) attributes(A) GML_END GML_CLOSE. - { N = gml_createSelfClosedNode( p_data, (void *)K, (void *)A); } -node(N) ::= open_tag(K) GML_CLOSE. - { N = gml_createNode( p_data, (void *)K, NULL, NULL); } -node(N) ::= open_tag(K) attr(A) GML_CLOSE. - { N = gml_createNode( p_data, (void *)K, (void *)A, NULL); } -node(N) ::= open_tag(K) attributes(A) GML_CLOSE. - { N = gml_createNode( p_data, (void *)K, (void *)A, NULL); } -node(N) ::= open_tag(K) GML_CLOSE coord(C). - { N = gml_createNode( p_data, (void *)K, NULL, (void *)C); } -node(N) ::= open_tag(K) GML_CLOSE coord_chain(C). - { N = gml_createNode( p_data, (void *)K, NULL, (void *)C); } -node(N) ::= open_tag(K) attr(A) GML_CLOSE coord(C). - { N = gml_createNode( p_data, (void *)K, (void *)A, (void *)C); } -node(N) ::= open_tag(K) attr(A) GML_CLOSE coord_chain(C). - { N = gml_createNode( p_data, (void *)K, (void *)A, (void *)C); } -node(N) ::= open_tag(K) attributes(A) GML_CLOSE coord(C). - { N = gml_createNode( p_data, (void *)K, (void *)A, (void *)C); } -node(N) ::= open_tag(K) attributes(A) GML_CLOSE coord_chain(C). - { N = gml_createNode( p_data, (void *)K, (void *)A, (void *)C); } -node(N) ::= close_tag(K). - { N = gml_closingNode( p_data, (void *)K); } - - -// syntax for a GML tag object: -open_tag(T) ::= GML_OPEN keyword(K). { T = K; } -close_tag(T) ::= GML_OPEN GML_END keyword(K) GML_CLOSE. { T = K; } - - -// Keyword. -keyword(A) ::= GML_KEYWORD(B). { A = B; } - - -// Rules to match an infinite number of GML nodes: -// Also links the generated gmlNodePtrs together -extra_nodes(A) ::= . { A = NULL; } -extra_nodes(A) ::= node(P) extra_nodes(B). - { ((gmlNodePtr)P)->Next = (gmlNodePtr)B; A = P; } - - -// a chain can contain any number of GML Nodes (but at least two): -node_chain(C) ::= node(A) node(B) extra_nodes(Q). - { - ((gmlNodePtr)B)->Next = (gmlNodePtr)Q; - ((gmlNodePtr)A)->Next = (gmlNodePtr)B; - C = A; - } - - -// syntax for a GML attribute: -attr(A) ::= GML_KEYWORD(K) GML_EQ GML_VALUE(V). - { A = gml_attribute( p_data, (void *)K, (void *)V); } - - -// Rules to match an infinite number of GML attributes: -// Also links the generated gmlAttrPtrs together -extra_attr(A) ::= . { A = NULL; } -extra_attr(A) ::= attr(P) extra_attr(B). - { ((gmlAttrPtr)P)->Next = (gmlAttrPtr)B; A = P; } - - -// a chain can contain any number of GML Attributes (but at least two): -attributes(C) ::= attr(A) attr(B) extra_attr(Q). - { - ((gmlAttrPtr)B)->Next = (gmlAttrPtr)Q; - ((gmlAttrPtr)A)->Next = (gmlAttrPtr)B; - C = A; - } - - -// syntax for a GML coordinate: -coord(C) ::= GML_COORD(V). - { C = gml_coord( p_data, (void *)V); } - - -// Rules to match an infinite number of GML coords: -// Also links the generated gmlCoordPtrs together -extra_coord(A) ::= . { A = NULL; } -extra_coord(A) ::= coord(P) extra_coord(B). - { ((gmlCoordPtr)P)->Next = (gmlCoordPtr)B; A = P; } - - -// a chain can contain any number of GML Coordinates (but at least two): -coord_chain(C) ::= coord(A) coord(B) extra_coord(Q). - { - ((gmlCoordPtr)B)->Next = (gmlCoordPtr)Q; - ((gmlCoordPtr)A)->Next = (gmlCoordPtr)B; - C = A; - } - - diff --git a/src/spatialite/src/gaiageo/lemon/Kml.y b/src/spatialite/src/gaiageo/lemon/Kml.y deleted file mode 100644 index 058ec52..0000000 --- a/src/spatialite/src/gaiageo/lemon/Kml.y +++ /dev/null @@ -1,184 +0,0 @@ -/* - kml.y -- KML parser - LEMON config - - version 2.4, 2011 June 14 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -// Tokens are void pointers (so we can cast them to whatever we want) -%token_type {void *} - -// Output to stderr when stack overflows -%stack_overflow { - spatialite_e( "Giving up. Parser stack overflow\n"); -} - -// Increase this number if necessary -%stack_size 1000000 - -// Header files to be included in kml.c -%include { -} - -// Set the return value of gaiaParseKML in the following pointer: -%extra_argument { struct kml_data *p_data } - -// Invalid syntax (ie. no rules matched) -%syntax_error { -/* -** when the LEMON parser encounters an error -** then this global variable is set -*/ - p_data->kml_parse_error = 1; - p_data->result = NULL; -} - - /* This is to terminate with a new line */ - main ::= in. - in ::= . - in ::= in state KML_NEWLINE. - - state ::= program. - - /* - * program is the start node. - */ - -program ::= kml_tree. - -// KML node: -kml_tree ::= node(N). { p_data->result = N; } // N is a KML node -kml_tree ::= node_chain(C). { p_data->result = C; } // C is a chain of KML nodes - - -// syntax for a KML node object: -node(N) ::= open_tag(K) KML_END KML_CLOSE. - { N = kml_createSelfClosedNode( p_data, (void *)K, NULL); } -node(N) ::= open_tag(K) attr(A) KML_END KML_CLOSE. - { N = kml_createSelfClosedNode( p_data, (void *)K, (void *)A); } -node(N) ::= open_tag(K) attributes(A) KML_END KML_CLOSE. - { N = kml_createSelfClosedNode( p_data, (void *)K, (void *)A); } -node(N) ::= open_tag(K) KML_CLOSE. - { N = kml_createNode( p_data, (void *)K, NULL, NULL); } -node(N) ::= open_tag(K) attr(A) KML_CLOSE. - { N = kml_createNode( p_data, (void *)K, (void *)A, NULL); } -node(N) ::= open_tag(K) attributes(A) KML_CLOSE. - { N = kml_createNode( p_data, (void *)K, (void *)A, NULL); } -node(N) ::= open_tag(K) KML_CLOSE coord(C). - { N = kml_createNode( p_data, (void *)K, NULL, (void *)C); } -node(N) ::= open_tag(K) KML_CLOSE coord_chain(C). - { N = kml_createNode( p_data, (void *)K, NULL, (void *)C); } -node(N) ::= open_tag(K) attr(A) KML_CLOSE coord(C). - { N = kml_createNode( p_data, (void *)K, (void *)A, (void *)C); } -node(N) ::= open_tag(K) attr(A) KML_CLOSE coord_chain(C). - { N = kml_createNode( p_data, (void *)K, (void *)A, (void *)C); } -node(N) ::= open_tag(K) attributes(A) KML_CLOSE coord(C). - { N = kml_createNode( p_data, (void *)K, (void *)A, (void *)C); } -node(N) ::= open_tag(K) attributes(A) KML_CLOSE coord_chain(C). - { N = kml_createNode( p_data, (void *)K, (void *)A, (void *)C); } -node(N) ::= close_tag(K). - { N = kml_closingNode( p_data, (void *)K); } - - -// syntax for a KML tag object: -open_tag(T) ::= KML_OPEN keyword(K). { T = K; } -close_tag(T) ::= KML_OPEN KML_END keyword(K) KML_CLOSE. { T = K; } - - -// Keyword. -keyword(A) ::= KML_KEYWORD(B). { A = B; } - - -// Rules to match an infinite number of KML nodes: -// Also links the generated kmlNodePtrs together -extra_nodes(A) ::= . { A = NULL; } -extra_nodes(A) ::= node(P) extra_nodes(B). - { ((kmlNodePtr)P)->Next = (kmlNodePtr)B; A = P; } - - -// a chain can contain any number of KML Nodes (but at least two): -node_chain(C) ::= node(A) node(B) extra_nodes(Q). - { - ((kmlNodePtr)B)->Next = (kmlNodePtr)Q; - ((kmlNodePtr)A)->Next = (kmlNodePtr)B; - C = A; - } - - -// syntax for a KML attribute: -attr(A) ::= KML_KEYWORD(K) KML_EQ KML_VALUE(V). - { A = kml_attribute( p_data, (void *)K, (void *)V); } - - -// Rules to match an infinite number of KML attributes: -// Also links the generated kmlAttrPtrs together -extra_attr(A) ::= . { A = NULL; } -extra_attr(A) ::= attr(P) extra_attr(B). - { ((kmlAttrPtr)P)->Next = (kmlAttrPtr)B; A = P; } - - -// a chain can contain any number of KML Attributes (but at least two): -attributes(C) ::= attr(A) attr(B) extra_attr(Q). - { - ((kmlAttrPtr)B)->Next = (kmlAttrPtr)Q; - ((kmlAttrPtr)A)->Next = (kmlAttrPtr)B; - C = A; - } - - -// syntax for a KML coordinate: -coord(C) ::= KML_COORD(V). - { C = kml_coord( p_data, (void *)V); } - - -// Rules to match an infinite number of KML coords: -// Also links the generated kmlCoordPtrs together -extra_coord(A) ::= . { A = NULL; } -extra_coord(A) ::= coord(P) extra_coord(B). - { ((kmlCoordPtr)P)->Next = (kmlCoordPtr)B; A = P; } - - -// a chain can contain any number of KML Coordinates (but at least two): -coord_chain(C) ::= coord(A) coord(B) extra_coord(Q). - { - ((kmlCoordPtr)B)->Next = (kmlCoordPtr)Q; - ((kmlCoordPtr)A)->Next = (kmlCoordPtr)B; - C = A; - } - - diff --git a/src/spatialite/src/gaiageo/lemon/Makefile.am b/src/spatialite/src/gaiageo/lemon/Makefile.am deleted file mode 100644 index 2733aed..0000000 --- a/src/spatialite/src/gaiageo/lemon/Makefile.am +++ /dev/null @@ -1,5 +0,0 @@ - -SUBDIRS = lemon_src - -EXTRA_DIST = Ewkt.y geoJSON.y Gml.y Kml.y vanuatuWkt.y ReadMe.txt - diff --git a/src/spatialite/src/gaiageo/lemon/Makefile.in b/src/spatialite/src/gaiageo/lemon/Makefile.in deleted file mode 100644 index 2ce5f27..0000000 --- a/src/spatialite/src/gaiageo/lemon/Makefile.in +++ /dev/null @@ -1,590 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/gaiageo/lemon -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = lemon_src -EXTRA_DIST = Ewkt.y geoJSON.y Gml.y Kml.y vanuatuWkt.y ReadMe.txt -all: all-recursive - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/gaiageo/lemon/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/gaiageo/lemon/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-recursive - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - ctags ctags-recursive distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs installdirs-am maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/src/gaiageo/lemon/ReadMe.txt b/src/spatialite/src/gaiageo/lemon/ReadMe.txt deleted file mode 100644 index f9bcacf..0000000 --- a/src/spatialite/src/gaiageo/lemon/ReadMe.txt +++ /dev/null @@ -1,161 +0,0 @@ -What is the LEMON parser ? -========================== -Please see: http://www.hwaci.com/sw/lemon/ - -in a very few words: the LEMON parser is -internally used by the SQLite's development -team, so using it for SpatiaLite as well -seems to be fully appropriate. - - -How to get the LEMON parser executable: -======================================= -you can get the latest LEMON sources consulting -the above URL: anyway, for the sake of simplicity, -you can directly found a copy of LEMON sources -into the "lemon_src" directory. - -in order to get the LEMON executable you have -to build it by yourself: that's not at all difficult, -simply type: - -cd lemon_src -gcc lemon.c -o lemon - - - - -The Vanuatu WKT parser: -======================= -1) in order to make any change to the WKT parser -you have to edit first the definitions file -vanuatuWkt.y - -2) then run: -lemon_src/lemon -l vanuatuWkt.y - -3) during the above step the following files will be -generated: -vanuatuWkt.c [the C code implementing the parser] -vanuatuWkt.h [C header file] -vanuatuWkt.out [check file - useful for debugging] - -3.1] IMPORTANT NOTICE: carefully check the generated *.c -code; you should manually replace any occurrence of: -fprintf(stderr, ..... -with: -spatialite_e(..... - -3.2] and finally you must copy both generated files -into the parent dir: -cp vanuatuWkt.h .. -cp vanuatuWkt.c .. - - -The EWKT parser: -================ -1) in order to make any change to the EWKT parser -you have to edit first the definitions file -Ewkt.y - -2) then run: -lemon_src/lemon -l Ewkt.y - -3) during the above step the following files will be -generated: -Ewkt.c [the C code implementing the parser] -Ewkt.h [C header file] -Ewkt.out [check file - useful for debugging] - -3.1] IMPORTANT NOTICE: carefully check the generated *.c -code; you should manually replace any occurrence of: -fprintf(stderr, ..... -with: -spatialite_e(..... - -3.2] and finally you must copy both generated files -into the parent dir: -cp Ewkt.h .. -cp Ewkt.c .. - - -The GeoJSON parser: -================ -1) in order to make any change to the GeoJSON parser -you have to edit first the definitions file -geoJSON.y - -2) then run: -lemon_src/lemon -l geoJSON.y - -3) during the above step the following files will be -generated: -geoJSON.c [the C code implementing the parser] -geoJSON.h [C header file] -geoJSON.out [check file - useful for debugging] - -3.1] IMPORTANT NOTICE: carefully check the generated *.c -code; you should manually replace any occurrence of: -fprintf(stderr, ..... -with: -spatialite_e(..... - -3.2] and finally you must copy both generated files -into the parent dir: -cp geoJSON.h .. -cp geoJSON.c .. - - -The KML parser: -================ -1) in order to make any change to the KML parser -you have to edit first the definitions file -Kml.y - -2) then run: -lemon_src/lemon -l Kml.y - -3) during the above step the following files will be -generated: -Kml.c [the C code implementing the parser] -Kml.h [C header file] -Kml.out [check file - useful for debugging] - -3.1] IMPORTANT NOTICE: carefully check the generated *.c -code; you should manually replace any occurrence of: -fprintf(stderr, ..... -with: -spatialite_e(..... - -3.2] and finally you must copy both generated files -into the -/lemon/include dir: -cp Kml.h .. -cp Kml.c .. - - -The GML parser: -================ -1) in order to make any change to the GML parser -you have to edit first the definitions file -Gml.y - -2) then run: -lemon_src/lemon -l Gml.y - -3) during the above step the following files will be -generated: -Gml.c [the C code implementing the parser] -Gml.h [C header file] -Gml.out [check file - useful for debugging] - -3.1] IMPORTANT NOTICE: carefully check the generated *.c -code; you should manually replace any occurrence of: -fprintf(stderr, ..... -with: -spatialite_e(..... - -3.2] and finally you must copy both generated files -into the -/lemon/include dir: -cp Gml.h .. -cp Gml.c .. - diff --git a/src/spatialite/src/gaiageo/lemon/geoJSON.y b/src/spatialite/src/gaiageo/lemon/geoJSON.y deleted file mode 100644 index 995494f..0000000 --- a/src/spatialite/src/gaiageo/lemon/geoJSON.y +++ /dev/null @@ -1,745 +0,0 @@ -/* - geoJSON.y -- GeoJSON parser - LEMON config - - version 2.4, 2011 May 16 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -// Tokens are void pointers (so we can cast them to whatever we want) -%token_type {void *} - -// Output to stderr when stack overflows -%stack_overflow { - spatialite_e( "Giving up. Parser stack overflow\n"); -} - -// Increase this number if necessary -%stack_size 1000000 - -// Header files to be included in geoJSON.c -%include { -} - -// Set the return value of gaiaParseGeoJSON in the following pointer: -%extra_argument { struct geoJson_data *p_data } - -// Invalid syntax (ie. no rules matched) -%syntax_error { -/* -** when the LEMON parser encounters an error -** then this global variable is set -*/ - p_data->geoJson_parse_error = 1; - p_data->result = NULL; -} - - /* This is to terminate with a new line */ - main ::= in. - in ::= . - in ::= in state GEOJSON_NEWLINE. - - state ::= program. - - /* - * program is the start node. All strings matched by this CFG must be one of - * geo_text (text describing a geometry) - */ - -program ::= geo_text. - -// geometries (2D and 3D): -geo_text ::= point(P). { p_data->result = P; } // P is a geometry collection containing a point -geo_text ::= pointz(P). { p_data->result = P; } // P is a geometry collection containing a point -geo_text ::= linestring(L). { p_data->result = L; } // L is a geometry collection containing a linestring -geo_text ::= linestringz(L). { p_data->result = L; } // L is a geometry collection containing a linestring -geo_text ::= polygon(P). { p_data->result = P; } // P is a geometry collection containing a polygon -geo_text ::= polygonz(P). { p_data->result = P; } // P is a geometry collection containing a polygon -geo_text ::= multipoint(M). { p_data->result = M; } // M is a geometry collection containing a multipoint -geo_text ::= multipointz(M). { p_data->result = M; } // M is a geometry collection containing a multipoint -geo_text ::= multilinestring(M). { p_data->result = M; } // M is a geometry collection containing a multilinestring -geo_text ::= multilinestringz(M). { p_data->result = M; } // M is a geometry collection containing a multilinestring -geo_text ::= multipolygon(M). { p_data->result = M; } // M is a geometry collection containing a multipolygon -geo_text ::= multipolygonz(M). { p_data->result = M; } // M is a geometry collection containing a multipolygon -geo_text ::= geocoll(H). { p_data->result = H; } // H is a geometry collection created from user input -geo_text ::= geocollz(H). { p_data->result = H; } // H is a geometry collection created from user input - - -// Syntax for a "point" object: -// The functions called build a geometry collection from a gaiaPointPtr -point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON point_coordxy(Q) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } // Point (2D) [simple] -point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA - GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON point_coordxy(Q) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } // Point (2D) [with BBOX] -point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON point_coordxy(Q) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (2D) [with short SRS] -point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON point_coordxy(Q) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (2D) [with long SRS] -point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON point_coordxy(Q) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (2D) [with BBOX & short SRS] -point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON point_coordxy(Q) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (2D) [with BBOX & long SRS] -pointz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON point_coordxyz(Q) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } // Point (3D) [simple] -pointz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA - GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON point_coordxyz(Q) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } // Point (3D) [with BBOX] -pointz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON point_coordxyz(Q) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (3D) [with short SRS] -pointz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON point_coordxyz(Q) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (3D) [with long SRS] -point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON point_coordxyz(Q) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (3D) [with BBOX & short SRS] -point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON point_coordxyz(Q) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (3D) [with BBOX & long SRS] - -// GeoJSON Bounding Box -bbox ::= coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_COMMA coord. - -// GeoJSON short-format SRS -short_crs(A) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA - GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON - short_srid(B) GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE. - { A = B; } - -// GeoJSON long-format SRS -long_crs(A) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA - GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON - long_srid(B) GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE. - { A = B; } - -// Point coordinates in different dimensions. -// Create the point by calling the proper function in SpatiaLite : -point_coordxy(P) ::= GEOJSON_OPEN_BRACKET coord(X) GEOJSON_COMMA coord(Y) GEOJSON_CLOSE_BRACKET. - { P = (void *) geoJSON_point_xy( p_data, (double *)X, (double *)Y); } -point_coordxyz(P) ::= GEOJSON_OPEN_BRACKET coord(X) GEOJSON_COMMA coord(Y) GEOJSON_COMMA coord(Z) GEOJSON_CLOSE_BRACKET. - { P = (void *) geoJSON_point_xyz( p_data, (double *)X, (double *)Y, (double *)Z); } - -// All coordinates are assumed to be doubles (guaranteed by the flex tokenizer). -coord(A) ::= GEOJSON_NUM(B). { A = B; } - -// short-format SRID. -short_srid(A) ::= GEOJSON_SHORT_SRID(B). { A = B; } - -// long-format SRID. -long_srid(A) ::= GEOJSON_LONG_SRID(B). { A = B; } - - -// Rules to match an infinite number of points: -// Also links the generated gaiaPointPtrs together -extra_pointsxy(A) ::= . { A = NULL; } -extra_pointsxy(A) ::= GEOJSON_COMMA point_coordxy(P) extra_pointsxy(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - -extra_pointsxyz(A) ::= . { A = NULL; } -extra_pointsxyz(A) ::= GEOJSON_COMMA point_coordxyz(P) extra_pointsxyz(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - - -// Syntax for a "linestring" object: -// The functions called build a geometry collection from a gaiaLinestringPtr -linestring(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON linestring_text(X) GEOJSON_CLOSE_BRACE. - { L = geoJSON_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } // LineString (2D) [simple] -linestring(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA - GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON linestring_text(X) GEOJSON_CLOSE_BRACE. - { L = geoJSON_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } // LineString (2D) [with BBOX] -linestring(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON linestring_text(X) GEOJSON_CLOSE_BRACE. - { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (2D) [with short SRS] -linestring(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON linestring_text(X) GEOJSON_CLOSE_BRACE. - { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (2D) [with long SRS] -linestring(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON linestring_text(X) GEOJSON_CLOSE_BRACE. - { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (2D) [with BBOX & short SRS] -linestring(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON linestring_text(X) GEOJSON_CLOSE_BRACE. - { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (2D) [with BBOX & long SRS] -linestringz(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON linestring_textz(X) GEOJSON_CLOSE_BRACE. - { L = geoJSON_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } // LineString (3D) [simple] -linestringz(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA - GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON linestring_textz(X) GEOJSON_CLOSE_BRACE. - { L = geoJSON_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } // LineString (3D) [with BBOX] -linestringz(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON linestring_textz(X) GEOJSON_CLOSE_BRACE. - { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (3D) [with short SRS] -linestringz(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON linestring_textz(X) GEOJSON_CLOSE_BRACE. - { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (3D) [with long SRS] -linestringz(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON linestring_textz(X) GEOJSON_CLOSE_BRACE. - { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (3D) [with BBOX & short SRS] -linestringz(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON linestring_textz(X) GEOJSON_CLOSE_BRACE. - { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (3D) [with BBOX & long SRS] - -// A valid linestring must have at least two vertices: -// The functions called build a gaiaLinestring from a linked list of points -linestring_text(L) ::= GEOJSON_OPEN_BRACKET point_coordxy(P) GEOJSON_COMMA point_coordxy(Q) extra_pointsxy(R) GEOJSON_CLOSE_BRACKET. - { - ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - L = (void *) geoJSON_linestring_xy( p_data, (gaiaPointPtr)P); - } - -linestring_textz(L) ::= GEOJSON_OPEN_BRACKET point_coordxyz(P) GEOJSON_COMMA point_coordxyz(Q) extra_pointsxyz(R) GEOJSON_CLOSE_BRACKET. - { - ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - L = (void *) geoJSON_linestring_xyz( p_data, (gaiaPointPtr)P); - } - - -// Syntax for a "polygon" object: -// The functions called build a geometry collection from a gaiaPolygonPtr -polygon(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON polygon_text(X) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } // Polygon (2D) [simple] -polygon(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA - GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON polygon_text(X) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } // Polygon (2D) [with BBOX] -polygon(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON polygon_text(X) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (2D) [with short SRS] -polygon(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON polygon_text(X) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (2D) [with long SRS] -polygon(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON polygon_text(X) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (2D) [with BBOX & short SRS] -polygon(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON polygon_text(X) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (2D) [with BBOX & long SRS] -polygonz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON polygon_textz(X) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } // Polygon (3D) [simple] -polygonz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA - GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON polygon_textz(X) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } // Polygon (3D) [with BBOX] -polygonz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON polygon_textz(X) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (3D) [with short SRS] -polygonz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON polygon_textz(X) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (3D) [with long SRS] -polygonz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON polygon_textz(X) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (3D) [with BBOX & short SRS] -polygonz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON polygon_textz(X) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (3D) [with BBOX & long SRS] - -// A valid polygon must have at least one ring: -// The functions called build a gaiaPolygonPtr from a linked list of gaiaRingPtrs -polygon_text(P) ::= GEOJSON_OPEN_BRACKET ring(R) extra_rings(E) GEOJSON_CLOSE_BRACKET. - { - ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; - P = (void *) geoJSON_polygon_xy(p_data, (gaiaRingPtr)R); - } - -polygon_textz(P) ::= GEOJSON_OPEN_BRACKET ringz(R) extra_ringsz(E) GEOJSON_CLOSE_BRACKET. - { - ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; - P = (void *) geoJSON_polygon_xyz(p_data, (gaiaRingPtr)R); - } - -// A valid ring must have at least 4 points -// The functions called build a gaiaRingPtr from a linked list of gaiaPointPtrs -ring(R) ::= GEOJSON_OPEN_BRACKET point_coordxy(A) GEOJSON_COMMA point_coordxy(B) - GEOJSON_COMMA point_coordxy(C) GEOJSON_COMMA point_coordxy(D) extra_pointsxy(E) GEOJSON_CLOSE_BRACKET. - { - ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; - ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; - ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; - ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; - R = (void *) geoJSON_ring_xy(p_data, (gaiaPointPtr)A); - } - -// To match more than one 2D ring: -extra_rings(R) ::= . { R = NULL; } -extra_rings(R) ::= GEOJSON_COMMA ring(S) extra_rings(T). - { - ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; - R = S; - } - -ringz(R) ::= GEOJSON_OPEN_BRACKET point_coordxyz(A) GEOJSON_COMMA point_coordxyz(B) - GEOJSON_COMMA point_coordxyz(C) GEOJSON_COMMA point_coordxyz(D) extra_pointsxyz(E) GEOJSON_CLOSE_BRACKET. - { - ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; - ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; - ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; - ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; - R = (void *) geoJSON_ring_xyz(p_data, (gaiaPointPtr)A); - } - -// To match more than one 3D ring: -extra_ringsz(R) ::= . { R = NULL; } -extra_ringsz(R) ::= GEOJSON_COMMA ringz(S) extra_ringsz(T). - { - ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; - R = S; - } - -// Syntax for a "multipoint" object: -// X in the following lines is a geometry collection containing a multipoint -multipoint(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipoint_text(X) GEOJSON_CLOSE_BRACE. - { M = X; } // MultiPoint (2D) [simple] -multipoint(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA - GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipoint_text(X) GEOJSON_CLOSE_BRACE. - { M = X; } // MultiPoint (2D) [with BBOX] -multipoint(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipoint_text(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (2D) [with short SRS] -multipoint(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipoint_text(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (2D) [with long SRS] -multipoint(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON multipoint_text(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (2D) [with BBOX & short SRS] -multipoint(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON multipoint_text(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (2D) [with BBOX & long SRS] -multipointz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipoint_textz(X) GEOJSON_CLOSE_BRACE. - { M = X; } // MultiPoint (3D) [simple] -multipointz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA - GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipoint_textz(X) GEOJSON_CLOSE_BRACE. - { M = X; } // MultiPoint (3D) [with BBOX] -multipointz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipoint_textz(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (3D) [with short SRS] -multipointz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipoint_textz(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (3D) [with long SRS] -multipointz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON multipoint_textz(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (3D) [with BBOX & short SRS] -multipointz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON multipoint_textz(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (3D) [with BBOX & long SRS] - -// Multipoints can contain any number of points (but at least one): -// The functions called build a geometry collection containing a multipoint -multipoint_text(M) ::= GEOJSON_OPEN_BRACKET point_coordxy(P) extra_pointsxy(Q) GEOJSON_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) geoJSON_multipoint_xy(p_data, (gaiaPointPtr)P); - } -multipoint_textz(M) ::= GEOJSON_OPEN_BRACKET point_coordxyz(P) extra_pointsxyz(Q) GEOJSON_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) geoJSON_multipoint_xyz(p_data, (gaiaPointPtr)P); - } - - -// Syntax for a "multilinestring" object: -// X in the following lines refers to a geometry collection containing a multilinestring -multilinestring(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multilinestring_text(X) GEOJSON_CLOSE_BRACE. - { M = X; } // MultiLineString (2D) [simple] -multilinestring(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA - GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multilinestring_text(X) GEOJSON_CLOSE_BRACE. - { M = X; } // MultiLineString (2D) [with BBOX] -multilinestring(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multilinestring_text(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (2D) [with short SRS] -multilinestring(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multilinestring_text(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (2D) [with long SRS] -multilinestring(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON multilinestring_text(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (2D) [with BBOX & short SRS] -multilinestring(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON multilinestring_text(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (2D) [with BBOX & long SRS] -multilinestringz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multilinestring_textz(X) GEOJSON_CLOSE_BRACE. - { M = X; } // MultiLineString (3D) [simple] -multilinestringz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA - GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multilinestring_textz(X) GEOJSON_CLOSE_BRACE. - { M = X; } // MultiLineString (3D) [with BBOX] -multilinestringz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multilinestring_textz(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (3D) [with short SRS] -multilinestringz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multilinestring_textz(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (3D) [with long SRS] -multilinestringz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON multilinestring_textz(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (3D) [with BBOX & short SRS] -multilinestringz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON multilinestring_textz(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (3D) [with BBOX & long SRS] - -// Multilinestrings can contain any number of linestrings (but at least one): -// The functions called build a geometry collection containing a multilinestring -multilinestring_text(M) ::= GEOJSON_OPEN_BRACKET linestring_text(L) multilinestring_text2(X) GEOJSON_CLOSE_BRACKET. - { - ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; - M = (void *) geoJSON_multilinestring_xy( p_data, (gaiaLinestringPtr)L); - } - -// Extra linestrings -multilinestring_text2(X) ::= . { X = NULL; } -multilinestring_text2(X) ::= GEOJSON_COMMA linestring_text(L) multilinestring_text2(Y). - { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } - -multilinestring_textz(M) ::= GEOJSON_OPEN_BRACKET linestring_textz(L) multilinestring_textz2(X) GEOJSON_CLOSE_BRACKET. - { - ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; - M = (void *) geoJSON_multilinestring_xyz(p_data, (gaiaLinestringPtr)L); - } - -multilinestring_textz2(X) ::= . { X = NULL; } -multilinestring_textz2(X) ::= GEOJSON_COMMA linestring_textz(L) multilinestring_textz2(Y). - { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } - - -// Syntax for a "multipolygon" object -// X in the following lines refers to a geometry collection containing a multipolygon -multipolygon(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipolygon_text(X) GEOJSON_CLOSE_BRACE. - { M = X; } // MultiPolygon (2D) [simple] -multipolygon(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA - GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipolygon_text(X) GEOJSON_CLOSE_BRACE. - { M = X; } // MultiPolygon (2D) [with BBOX] -multipolygon(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipolygon_text(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (2D) [with short SRS] -multipolygon(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipolygon_text(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (2D) [with long SRS] -multipolygon(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON multipolygon_text(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (2D) [with BBOX & short SRS] -multipolygon(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON multipolygon_text(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (2D) [with BBOX & long SRS] -multipolygonz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipolygon_textz(X) GEOJSON_CLOSE_BRACE. - { M = X; } // MultiPolygon (3D) [simple] -multipolygonz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA - GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipolygon_textz(X) GEOJSON_CLOSE_BRACE. - { M = X; } // MultiPolygon (3D) [with BBOX] -multipolygonz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipolygon_textz(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (3D) [with short SRS] -multipolygonz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON multipolygon_textz(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (3D) [with long SRS] -multipolygonz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON multipolygon_textz(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (3D) [with BBOX & short SRS] -multipolygonz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS - GEOJSON_COLON multipolygon_textz(X) GEOJSON_CLOSE_BRACE. - { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (3D) [with BBOX & long SRS] - -// Multipolygons can contain any number of polygons (but at least one): -// The functions called build a geometry collection containing a multipolygon -multipolygon_text(M) ::= GEOJSON_OPEN_BRACKET polygon_text(P) multipolygon_text2(Q) GEOJSON_CLOSE_BRACKET. - { - ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; - M = (void *) geoJSON_multipolygon_xy(p_data, (gaiaPolygonPtr)P); - } - -// Extra polygons -multipolygon_text2(Q) ::= . { Q = NULL; } -multipolygon_text2(A) ::= GEOJSON_COMMA polygon_text(P) multipolygon_text2(B). - { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } - -multipolygon_textz(M) ::= GEOJSON_OPEN_BRACKET polygon_textz(P) multipolygon_textz2(Q) GEOJSON_CLOSE_BRACKET. - { - ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; - M = (void *) geoJSON_multipolygon_xyz(p_data, (gaiaPolygonPtr)P); - } - -multipolygon_textz2(Q) ::= . { Q = NULL; } -multipolygon_textz2(A) ::= GEOJSON_COMMA polygon_textz(P) multipolygon_textz2(B). - { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } - - -// Syntax for a "geometrycollection" object: -// X in the following lines refers to a geometry collection generated based on user input -geocoll(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA - GEOJSON_GEOMS GEOJSON_COLON geocoll_text(X) GEOJSON_CLOSE_BRACE. - { G = X; } // GeomColl (2D) [simple] -geocoll(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA - GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA - GEOJSON_GEOMS GEOJSON_COLON geocoll_text(X) GEOJSON_CLOSE_BRACE. - { G = X; } // GeomColl (2D) [with BBOX] -geocoll(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA - GEOJSON_GEOMS GEOJSON_COLON geocoll_text(X) GEOJSON_CLOSE_BRACE. - { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (2D) [with short SRS] -geocoll(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA - GEOJSON_GEOMS GEOJSON_COLON geocoll_text(X) GEOJSON_CLOSE_BRACE. - { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (2D) [with long SRS] -geocoll(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS - GEOJSON_COLON geocoll_text(X) GEOJSON_CLOSE_BRACE. - { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (2D) [with BBOX & short SRS] -geocoll(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS - GEOJSON_COLON geocoll_text(X) GEOJSON_CLOSE_BRACE. - { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (2D) [with BBOX & long SRS] -geocollz(G) ::= GEOJSON_GEOMETRYCOLLECTION geocoll_textz(X). - { G = X; } // GeomColl (3D) [simple] -geocollz(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA - GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA - GEOJSON_GEOMS GEOJSON_COLON geocoll_textz(X) GEOJSON_CLOSE_BRACE. - { G = X; } // GeomColl (3D) [with BBOX] -geocollz(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA - GEOJSON_GEOMS GEOJSON_COLON geocoll_textz(X) GEOJSON_CLOSE_BRACE. - { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (3D) [with short SRS] -geocollz(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA - GEOJSON_GEOMS GEOJSON_COLON geocoll_textz(X) GEOJSON_CLOSE_BRACE. - { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (3D) [with long SRS] -geocollz(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS - GEOJSON_COLON geocoll_textz(X) GEOJSON_CLOSE_BRACE. - { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (3D) [with BBOX & short SRS] -geocollz(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA - GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON - GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS - GEOJSON_COLON geocoll_textz(X) GEOJSON_CLOSE_BRACE. - { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (3D) [with BBOX & long SRS] - -// Geometry collections can contain any number of points, linestrings, or polygons (but at least one): -geocoll_text(G) ::= GEOJSON_OPEN_BRACKET coll_point(P) geocoll_text2(X) GEOJSON_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) geoJSON_geomColl_xy(p_data, (gaiaGeomCollPtr)P); - } - -geocoll_text(G) ::= GEOJSON_OPEN_BRACKET coll_linestring(L) geocoll_text2(X) GEOJSON_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) geoJSON_geomColl_xy(p_data, (gaiaGeomCollPtr)L); - } - -geocoll_text(G) ::= GEOJSON_OPEN_BRACKET coll_polygon(P) geocoll_text2(X) GEOJSON_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) geoJSON_geomColl_xy(p_data, (gaiaGeomCollPtr)P); - } - -// Extra points, linestrings, or polygons -geocoll_text2(X) ::= . { X = NULL; } -geocoll_text2(X) ::= GEOJSON_COMMA coll_point(P) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_text2(X) ::= GEOJSON_COMMA coll_linestring(L) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_text2(X) ::= GEOJSON_COMMA coll_polygon(P) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - - -geocoll_textz(G) ::= GEOJSON_OPEN_BRACKET coll_pointz(P) geocoll_textz2(X) GEOJSON_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) geoJSON_geomColl_xyz(p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textz(G) ::= GEOJSON_OPEN_BRACKET coll_linestringz(L) geocoll_textz2(X) GEOJSON_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) geoJSON_geomColl_xyz(p_data, (gaiaGeomCollPtr)L); - } - -geocoll_textz(G) ::= GEOJSON_OPEN_BRACKET coll_polygonz(P) geocoll_textz2(X) GEOJSON_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) geoJSON_geomColl_xyz(p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textz2(X) ::= . { X = NULL; } -geocoll_textz2(X) ::= GEOJSON_COMMA coll_pointz(P) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textz2(X) ::= GEOJSON_COMMA coll_linestringz(L) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_textz2(X) ::= GEOJSON_COMMA coll_polygonz(P) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -coll_point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON point_coordxy(Q) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPoint(p_data, (gaiaPointPtr)Q); } - -coll_pointz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON point_coordxyz(Q) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPoint(p_data, (gaiaPointPtr)Q); } - -coll_linestring(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON linestring_text(X) GEOJSON_CLOSE_BRACE. - { L = geoJSON_buildGeomFromLinestring(p_data, (gaiaLinestringPtr)X); } - -coll_linestringz(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON linestring_textz(X) GEOJSON_CLOSE_BRACE. - { L = geoJSON_buildGeomFromLinestring(p_data, (gaiaLinestringPtr)X); } - -coll_polygon(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON polygon_text(X) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPolygon(p_data, (gaiaPolygonPtr)X); } - -coll_polygonz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA - GEOJSON_COORDS GEOJSON_COLON polygon_textz(X) GEOJSON_CLOSE_BRACE. - { P = geoJSON_buildGeomFromPolygon(p_data, (gaiaPolygonPtr)X); } diff --git a/src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.am b/src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.am deleted file mode 100644 index 1c42165..0000000 --- a/src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ - -EXTRA_DIST = lemon.c lempar.c - diff --git a/src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.in b/src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.in deleted file mode 100644 index fa7c4a4..0000000 --- a/src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.in +++ /dev/null @@ -1,390 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/gaiageo/lemon/lemon_src -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -EXTRA_DIST = lemon.c lempar.c -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/gaiageo/lemon/lemon_src/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/gaiageo/lemon/lemon_src/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/src/gaiageo/lemon/lemon_src/lemon.c b/src/spatialite/src/gaiageo/lemon/lemon_src/lemon.c deleted file mode 100644 index 8336e9a..0000000 --- a/src/spatialite/src/gaiageo/lemon/lemon_src/lemon.c +++ /dev/null @@ -1,4889 +0,0 @@ -/* -** This file contains all sources (including headers) to the LEMON -** LALR(1) parser generator. The sources have been combined into a -** single file to make it easy to include LEMON in the source tree -** and Makefile of another program. -** -** The author of this program disclaims copyright. -*/ -#include -#include -#include -#include -#include -#include - -#ifndef __WIN32__ -# if defined(_WIN32) || defined(WIN32) -# define __WIN32__ -# endif -#endif - -#ifdef __WIN32__ -extern int access(); -#else -#include -#endif - -/* #define PRIVATE static */ -#define PRIVATE - -#ifdef TEST -#define MAXRHS 5 /* Set low to exercise exception code */ -#else -#define MAXRHS 1000 -#endif - -static char *msort(char*,char**,int(*)(const char*,const char*)); - -/* -** Compilers are getting increasingly pedantic about type conversions -** as C evolves ever closer to Ada.... To work around the latest problems -** we have to define the following variant of strlen(). -*/ -#define lemonStrlen(X) ((int)strlen(X)) - -static struct action *Action_new(void); -static struct action *Action_sort(struct action *); - -/********** From the file "build.h" ************************************/ -void FindRulePrecedences(); -void FindFirstSets(); -void FindStates(); -void FindLinks(); -void FindFollowSets(); -void FindActions(); - -/********* From the file "configlist.h" *********************************/ -void Configlist_init(/* void */); -struct config *Configlist_add(/* struct rule *, int */); -struct config *Configlist_addbasis(/* struct rule *, int */); -void Configlist_closure(/* void */); -void Configlist_sort(/* void */); -void Configlist_sortbasis(/* void */); -struct config *Configlist_return(/* void */); -struct config *Configlist_basis(/* void */); -void Configlist_eat(/* struct config * */); -void Configlist_reset(/* void */); - -/********* From the file "error.h" ***************************************/ -void ErrorMsg(const char *, int,const char *, ...); - -/****** From the file "option.h" ******************************************/ -struct s_options { - enum { OPT_FLAG=1, OPT_INT, OPT_DBL, OPT_STR, - OPT_FFLAG, OPT_FINT, OPT_FDBL, OPT_FSTR} type; - char *label; - char *arg; - char *message; -}; -int OptInit(/* char**,struct s_options*,FILE* */); -int OptNArgs(/* void */); -char *OptArg(/* int */); -void OptErr(/* int */); -void OptPrint(/* void */); - -/******** From the file "parse.h" *****************************************/ -void Parse(/* struct lemon *lemp */); - -/********* From the file "plink.h" ***************************************/ -struct plink *Plink_new(/* void */); -void Plink_add(/* struct plink **, struct config * */); -void Plink_copy(/* struct plink **, struct plink * */); -void Plink_delete(/* struct plink * */); - -/********** From the file "report.h" *************************************/ -void Reprint(/* struct lemon * */); -void ReportOutput(/* struct lemon * */); -void ReportTable(/* struct lemon * */); -void ReportHeader(/* struct lemon * */); -void CompressTables(/* struct lemon * */); -void ResortStates(/* struct lemon * */); - -/********** From the file "set.h" ****************************************/ -void SetSize(/* int N */); /* All sets will be of size N */ -char *SetNew(/* void */); /* A new set for element 0..N */ -void SetFree(/* char* */); /* Deallocate a set */ - -int SetAdd(/* char*,int */); /* Add element to a set */ -int SetUnion(/* char *A,char *B */); /* A <- A U B, thru element N */ - -#define SetFind(X,Y) (X[Y]) /* True if Y is in set X */ - -/********** From the file "struct.h" *************************************/ -/* -** Principal data structures for the LEMON parser generator. -*/ - -typedef enum {LEMON_FALSE=0, LEMON_TRUE} Boolean; - -/* Symbols (terminals and nonterminals) of the grammar are stored -** in the following: */ -struct symbol { - char *name; /* Name of the symbol */ - int index; /* Index number for this symbol */ - enum { - TERMINAL, - NONTERMINAL, - MULTITERMINAL - } type; /* Symbols are all either TERMINALS or NTs */ - struct rule *rule; /* Linked list of rules of this (if an NT) */ - struct symbol *fallback; /* fallback token in case this token doesn't parse */ - int prec; /* Precedence if defined (-1 otherwise) */ - enum e_assoc { - LEFT, - RIGHT, - NONE, - UNK - } assoc; /* Associativity if precedence is defined */ - char *firstset; /* First-set for all rules of this symbol */ - Boolean lambda; /* True if NT and can generate an empty string */ - int useCnt; /* Number of times used */ - char *destructor; /* Code which executes whenever this symbol is - ** popped from the stack during error processing */ - int destLineno; /* Line number for start of destructor */ - char *datatype; /* The data type of information held by this - ** object. Only used if type==NONTERMINAL */ - int dtnum; /* The data type number. In the parser, the value - ** stack is a union. The .yy%d element of this - ** union is the correct data type for this object */ - /* The following fields are used by MULTITERMINALs only */ - int nsubsym; /* Number of constituent symbols in the MULTI */ - struct symbol **subsym; /* Array of constituent symbols */ -}; - -/* Each production rule in the grammar is stored in the following -** structure. */ -struct rule { - struct symbol *lhs; /* Left-hand side of the rule */ - char *lhsalias; /* Alias for the LHS (NULL if none) */ - int lhsStart; /* True if left-hand side is the start symbol */ - int ruleline; /* Line number for the rule */ - int nrhs; /* Number of RHS symbols */ - struct symbol **rhs; /* The RHS symbols */ - char **rhsalias; /* An alias for each RHS symbol (NULL if none) */ - int line; /* Line number at which code begins */ - char *code; /* The code executed when this rule is reduced */ - struct symbol *precsym; /* Precedence symbol for this rule */ - int index; /* An index number for this rule */ - Boolean canReduce; /* True if this rule is ever reduced */ - struct rule *nextlhs; /* Next rule with the same LHS */ - struct rule *next; /* Next rule in the global list */ -}; - -/* A configuration is a production rule of the grammar together with -** a mark (dot) showing how much of that rule has been processed so far. -** Configurations also contain a follow-set which is a list of terminal -** symbols which are allowed to immediately follow the end of the rule. -** Every configuration is recorded as an instance of the following: */ -struct config { - struct rule *rp; /* The rule upon which the configuration is based */ - int dot; /* The parse point */ - char *fws; /* Follow-set for this configuration only */ - struct plink *fplp; /* Follow-set forward propagation links */ - struct plink *bplp; /* Follow-set backwards propagation links */ - struct state *stp; /* Pointer to state which contains this */ - enum { - COMPLETE, /* The status is used during followset and */ - INCOMPLETE /* shift computations */ - } status; - struct config *next; /* Next configuration in the state */ - struct config *bp; /* The next basis configuration */ -}; - -/* Every shift or reduce operation is stored as one of the following */ -struct action { - struct symbol *sp; /* The look-ahead symbol */ - enum e_action { - SHIFT, - ACCEPT, - REDUCE, - ERROR, - SSCONFLICT, /* A shift/shift conflict */ - SRCONFLICT, /* Was a reduce, but part of a conflict */ - RRCONFLICT, /* Was a reduce, but part of a conflict */ - SH_RESOLVED, /* Was a shift. Precedence resolved conflict */ - RD_RESOLVED, /* Was reduce. Precedence resolved conflict */ - NOT_USED /* Deleted by compression */ - } type; - union { - struct state *stp; /* The new state, if a shift */ - struct rule *rp; /* The rule, if a reduce */ - } x; - struct action *next; /* Next action for this state */ - struct action *collide; /* Next action with the same hash */ -}; - -/* Each state of the generated parser's finite state machine -** is encoded as an instance of the following structure. */ -struct state { - struct config *bp; /* The basis configurations for this state */ - struct config *cfp; /* All configurations in this set */ - int statenum; /* Sequential number for this state */ - struct action *ap; /* Array of actions for this state */ - int nTknAct, nNtAct; /* Number of actions on terminals and nonterminals */ - int iTknOfst, iNtOfst; /* yy_action[] offset for terminals and nonterms */ - int iDflt; /* Default action */ -}; -#define NO_OFFSET (-2147483647) - -/* A followset propagation link indicates that the contents of one -** configuration followset should be propagated to another whenever -** the first changes. */ -struct plink { - struct config *cfp; /* The configuration to which linked */ - struct plink *next; /* The next propagate link */ -}; - -/* The state vector for the entire parser generator is recorded as -** follows. (LEMON uses no global variables and makes little use of -** static variables. Fields in the following structure can be thought -** of as begin global variables in the program.) */ -struct lemon { - struct state **sorted; /* Table of states sorted by state number */ - struct rule *rule; /* List of all rules */ - int nstate; /* Number of states */ - int nrule; /* Number of rules */ - int nsymbol; /* Number of terminal and nonterminal symbols */ - int nterminal; /* Number of terminal symbols */ - struct symbol **symbols; /* Sorted array of pointers to symbols */ - int errorcnt; /* Number of errors */ - struct symbol *errsym; /* The error symbol */ - struct symbol *wildcard; /* Token that matches anything */ - char *name; /* Name of the generated parser */ - char *arg; /* Declaration of the 3th argument to parser */ - char *tokentype; /* Type of terminal symbols in the parser stack */ - char *vartype; /* The default type of non-terminal symbols */ - char *start; /* Name of the start symbol for the grammar */ - char *stacksize; /* Size of the parser stack */ - char *include; /* Code to put at the start of the C file */ - char *error; /* Code to execute when an error is seen */ - char *overflow; /* Code to execute on a stack overflow */ - char *failure; /* Code to execute on parser failure */ - char *accept; /* Code to execute when the parser excepts */ - char *extracode; /* Code appended to the generated file */ - char *tokendest; /* Code to execute to destroy token data */ - char *vardest; /* Code for the default non-terminal destructor */ - char *filename; /* Name of the input file */ - char *outname; /* Name of the current output file */ - char *tokenprefix; /* A prefix added to token names in the .h file */ - int nconflict; /* Number of parsing conflicts */ - int tablesize; /* Size of the parse tables */ - int basisflag; /* Print only basis configurations */ - int has_fallback; /* True if any %fallback is seen in the grammar */ - int nolinenosflag; /* True if #line statements should not be printed */ - char *argv0; /* Name of the program */ -}; - -#define MemoryCheck(X) if((X)==0){ \ - extern void memory_error(); \ - memory_error(); \ -} - -/**************** From the file "table.h" *********************************/ -/* -** All code in this file has been automatically generated -** from a specification in the file -** "table.q" -** by the associative array code building program "aagen". -** Do not edit this file! Instead, edit the specification -** file, then rerun aagen. -*/ -/* -** Code for processing tables in the LEMON parser generator. -*/ - -/* Routines for handling a strings */ - -char *Strsafe(); - -void Strsafe_init(/* void */); -int Strsafe_insert(/* char * */); -char *Strsafe_find(/* char * */); - -/* Routines for handling symbols of the grammar */ - -struct symbol *Symbol_new(); -int Symbolcmpp(/* struct symbol **, struct symbol ** */); -void Symbol_init(/* void */); -int Symbol_insert(/* struct symbol *, char * */); -struct symbol *Symbol_find(/* char * */); -struct symbol *Symbol_Nth(/* int */); -int Symbol_count(/* */); -struct symbol **Symbol_arrayof(/* */); - -/* Routines to manage the state table */ - -int Configcmp(/* struct config *, struct config * */); -struct state *State_new(); -void State_init(/* void */); -int State_insert(/* struct state *, struct config * */); -struct state *State_find(/* struct config * */); -struct state **State_arrayof(/* */); - -/* Routines used for efficiency in Configlist_add */ - -void Configtable_init(/* void */); -int Configtable_insert(/* struct config * */); -struct config *Configtable_find(/* struct config * */); -void Configtable_clear(/* int(*)(struct config *) */); -/****************** From the file "action.c" *******************************/ -/* -** Routines processing parser actions in the LEMON parser generator. -*/ - -/* Allocate a new parser action */ -static struct action *Action_new(void){ - static struct action *freelist = 0; - struct action *new; - - if( freelist==0 ){ - int i; - int amt = 100; - freelist = (struct action *)calloc(amt, sizeof(struct action)); - if( freelist==0 ){ - fprintf(stderr,"Unable to allocate memory for a new parser action."); - exit(1); - } - for(i=0; inext; - return new; -} - -/* Compare two actions for sorting purposes. Return negative, zero, or -** positive if the first action is less than, equal to, or greater than -** the first -*/ -static int actioncmp( - struct action *ap1, - struct action *ap2 -){ - int rc; - rc = ap1->sp->index - ap2->sp->index; - if( rc==0 ){ - rc = (int)ap1->type - (int)ap2->type; - } - if( rc==0 && ap1->type==REDUCE ){ - rc = ap1->x.rp->index - ap2->x.rp->index; - } - return rc; -} - -/* Sort parser actions */ -static struct action *Action_sort( - struct action *ap -){ - ap = (struct action *)msort((char *)ap,(char **)&ap->next, - (int(*)(const char*,const char*))actioncmp); - return ap; -} - -void Action_add(app,type,sp,arg) -struct action **app; -enum e_action type; -struct symbol *sp; -char *arg; -{ - struct action *new; - new = Action_new(); - new->next = *app; - *app = new; - new->type = type; - new->sp = sp; - if( type==SHIFT ){ - new->x.stp = (struct state *)arg; - }else{ - new->x.rp = (struct rule *)arg; - } -} -/********************** New code to implement the "acttab" module ***********/ -/* -** This module implements routines use to construct the yy_action[] table. -*/ - -/* -** The state of the yy_action table under construction is an instance of -** the following structure -*/ -typedef struct acttab acttab; -struct acttab { - int nAction; /* Number of used slots in aAction[] */ - int nActionAlloc; /* Slots allocated for aAction[] */ - struct { - int lookahead; /* Value of the lookahead token */ - int action; /* Action to take on the given lookahead */ - } *aAction, /* The yy_action[] table under construction */ - *aLookahead; /* A single new transaction set */ - int mnLookahead; /* Minimum aLookahead[].lookahead */ - int mnAction; /* Action associated with mnLookahead */ - int mxLookahead; /* Maximum aLookahead[].lookahead */ - int nLookahead; /* Used slots in aLookahead[] */ - int nLookaheadAlloc; /* Slots allocated in aLookahead[] */ -}; - -/* Return the number of entries in the yy_action table */ -#define acttab_size(X) ((X)->nAction) - -/* The value for the N-th entry in yy_action */ -#define acttab_yyaction(X,N) ((X)->aAction[N].action) - -/* The value for the N-th entry in yy_lookahead */ -#define acttab_yylookahead(X,N) ((X)->aAction[N].lookahead) - -/* Free all memory associated with the given acttab */ -void acttab_free(acttab *p){ - free( p->aAction ); - free( p->aLookahead ); - free( p ); -} - -/* Allocate a new acttab structure */ -acttab *acttab_alloc(void){ - acttab *p = calloc( 1, sizeof(*p) ); - if( p==0 ){ - fprintf(stderr,"Unable to allocate memory for a new acttab."); - exit(1); - } - memset(p, 0, sizeof(*p)); - return p; -} - -/* Add a new action to the current transaction set -*/ -void acttab_action(acttab *p, int lookahead, int action){ - if( p->nLookahead>=p->nLookaheadAlloc ){ - p->nLookaheadAlloc += 25; - p->aLookahead = realloc( p->aLookahead, - sizeof(p->aLookahead[0])*p->nLookaheadAlloc ); - if( p->aLookahead==0 ){ - fprintf(stderr,"malloc failed\n"); - exit(1); - } - } - if( p->nLookahead==0 ){ - p->mxLookahead = lookahead; - p->mnLookahead = lookahead; - p->mnAction = action; - }else{ - if( p->mxLookaheadmxLookahead = lookahead; - if( p->mnLookahead>lookahead ){ - p->mnLookahead = lookahead; - p->mnAction = action; - } - } - p->aLookahead[p->nLookahead].lookahead = lookahead; - p->aLookahead[p->nLookahead].action = action; - p->nLookahead++; -} - -/* -** Add the transaction set built up with prior calls to acttab_action() -** into the current action table. Then reset the transaction set back -** to an empty set in preparation for a new round of acttab_action() calls. -** -** Return the offset into the action table of the new transaction. -*/ -int acttab_insert(acttab *p){ - int i, j, k, n; - assert( p->nLookahead>0 ); - - /* Make sure we have enough space to hold the expanded action table - ** in the worst case. The worst case occurs if the transaction set - ** must be appended to the current action table - */ - n = p->mxLookahead + 1; - if( p->nAction + n >= p->nActionAlloc ){ - int oldAlloc = p->nActionAlloc; - p->nActionAlloc = p->nAction + n + p->nActionAlloc + 20; - p->aAction = realloc( p->aAction, - sizeof(p->aAction[0])*p->nActionAlloc); - if( p->aAction==0 ){ - fprintf(stderr,"malloc failed\n"); - exit(1); - } - for(i=oldAlloc; inActionAlloc; i++){ - p->aAction[i].lookahead = -1; - p->aAction[i].action = -1; - } - } - - /* Scan the existing action table looking for an offset where we can - ** insert the current transaction set. Fall out of the loop when that - ** offset is found. In the worst case, we fall out of the loop when - ** i reaches p->nAction, which means we append the new transaction set. - ** - ** i is the index in p->aAction[] where p->mnLookahead is inserted. - */ - for(i=0; inAction+p->mnLookahead; i++){ - if( p->aAction[i].lookahead<0 ){ - for(j=0; jnLookahead; j++){ - k = p->aLookahead[j].lookahead - p->mnLookahead + i; - if( k<0 ) break; - if( p->aAction[k].lookahead>=0 ) break; - } - if( jnLookahead ) continue; - for(j=0; jnAction; j++){ - if( p->aAction[j].lookahead==j+p->mnLookahead-i ) break; - } - if( j==p->nAction ){ - break; /* Fits in empty slots */ - } - }else if( p->aAction[i].lookahead==p->mnLookahead ){ - if( p->aAction[i].action!=p->mnAction ) continue; - for(j=0; jnLookahead; j++){ - k = p->aLookahead[j].lookahead - p->mnLookahead + i; - if( k<0 || k>=p->nAction ) break; - if( p->aLookahead[j].lookahead!=p->aAction[k].lookahead ) break; - if( p->aLookahead[j].action!=p->aAction[k].action ) break; - } - if( jnLookahead ) continue; - n = 0; - for(j=0; jnAction; j++){ - if( p->aAction[j].lookahead<0 ) continue; - if( p->aAction[j].lookahead==j+p->mnLookahead-i ) n++; - } - if( n==p->nLookahead ){ - break; /* Same as a prior transaction set */ - } - } - } - /* Insert transaction set at index i. */ - for(j=0; jnLookahead; j++){ - k = p->aLookahead[j].lookahead - p->mnLookahead + i; - p->aAction[k] = p->aLookahead[j]; - if( k>=p->nAction ) p->nAction = k+1; - } - p->nLookahead = 0; - - /* Return the offset that is added to the lookahead in order to get the - ** index into yy_action of the action */ - return i - p->mnLookahead; -} - -/********************** From the file "build.c" *****************************/ -/* -** Routines to construction the finite state machine for the LEMON -** parser generator. -*/ - -/* Find a precedence symbol of every rule in the grammar. -** -** Those rules which have a precedence symbol coded in the input -** grammar using the "[symbol]" construct will already have the -** rp->precsym field filled. Other rules take as their precedence -** symbol the first RHS symbol with a defined precedence. If there -** are not RHS symbols with a defined precedence, the precedence -** symbol field is left blank. -*/ -void FindRulePrecedences(xp) -struct lemon *xp; -{ - struct rule *rp; - for(rp=xp->rule; rp; rp=rp->next){ - if( rp->precsym==0 ){ - int i, j; - for(i=0; inrhs && rp->precsym==0; i++){ - struct symbol *sp = rp->rhs[i]; - if( sp->type==MULTITERMINAL ){ - for(j=0; jnsubsym; j++){ - if( sp->subsym[j]->prec>=0 ){ - rp->precsym = sp->subsym[j]; - break; - } - } - }else if( sp->prec>=0 ){ - rp->precsym = rp->rhs[i]; - } - } - } - } - return; -} - -/* Find all nonterminals which will generate the empty string. -** Then go back and compute the first sets of every nonterminal. -** The first set is the set of all terminal symbols which can begin -** a string generated by that nonterminal. -*/ -void FindFirstSets(lemp) -struct lemon *lemp; -{ - int i, j; - struct rule *rp; - int progress; - - for(i=0; insymbol; i++){ - lemp->symbols[i]->lambda = LEMON_FALSE; - } - for(i=lemp->nterminal; insymbol; i++){ - lemp->symbols[i]->firstset = SetNew(); - } - - /* First compute all lambdas */ - do{ - progress = 0; - for(rp=lemp->rule; rp; rp=rp->next){ - if( rp->lhs->lambda ) continue; - for(i=0; inrhs; i++){ - struct symbol *sp = rp->rhs[i]; - if( sp->type!=TERMINAL || sp->lambda==LEMON_FALSE ) break; - } - if( i==rp->nrhs ){ - rp->lhs->lambda = LEMON_TRUE; - progress = 1; - } - } - }while( progress ); - - /* Now compute all first sets */ - do{ - struct symbol *s1, *s2; - progress = 0; - for(rp=lemp->rule; rp; rp=rp->next){ - s1 = rp->lhs; - for(i=0; inrhs; i++){ - s2 = rp->rhs[i]; - if( s2->type==TERMINAL ){ - progress += SetAdd(s1->firstset,s2->index); - break; - }else if( s2->type==MULTITERMINAL ){ - for(j=0; jnsubsym; j++){ - progress += SetAdd(s1->firstset,s2->subsym[j]->index); - } - break; - }else if( s1==s2 ){ - if( s1->lambda==LEMON_FALSE ) break; - }else{ - progress += SetUnion(s1->firstset,s2->firstset); - if( s2->lambda==LEMON_FALSE ) break; - } - } - } - }while( progress ); - return; -} - -/* Compute all LR(0) states for the grammar. Links -** are added to between some states so that the LR(1) follow sets -** can be computed later. -*/ -PRIVATE struct state *getstate(/* struct lemon * */); /* forward reference */ -void FindStates(lemp) -struct lemon *lemp; -{ - struct symbol *sp; - struct rule *rp; - - Configlist_init(); - - /* Find the start symbol */ - if( lemp->start ){ - sp = Symbol_find(lemp->start); - if( sp==0 ){ - ErrorMsg(lemp->filename,0, -"The specified start symbol \"%s\" is not \ -in a nonterminal of the grammar. \"%s\" will be used as the start \ -symbol instead.",lemp->start,lemp->rule->lhs->name); - lemp->errorcnt++; - sp = lemp->rule->lhs; - } - }else{ - sp = lemp->rule->lhs; - } - - /* Make sure the start symbol doesn't occur on the right-hand side of - ** any rule. Report an error if it does. (YACC would generate a new - ** start symbol in this case.) */ - for(rp=lemp->rule; rp; rp=rp->next){ - int i; - for(i=0; inrhs; i++){ - if( rp->rhs[i]==sp ){ /* FIX ME: Deal with multiterminals */ - ErrorMsg(lemp->filename,0, -"The start symbol \"%s\" occurs on the \ -right-hand side of a rule. This will result in a parser which \ -does not work properly.",sp->name); - lemp->errorcnt++; - } - } - } - - /* The basis configuration set for the first state - ** is all rules which have the start symbol as their - ** left-hand side */ - for(rp=sp->rule; rp; rp=rp->nextlhs){ - struct config *newcfp; - rp->lhsStart = 1; - newcfp = Configlist_addbasis(rp,0); - SetAdd(newcfp->fws,0); - } - - /* Compute the first state. All other states will be - ** computed automatically during the computation of the first one. - ** The returned pointer to the first state is not used. */ - (void)getstate(lemp); - return; -} - -/* Return a pointer to a state which is described by the configuration -** list which has been built from calls to Configlist_add. -*/ -PRIVATE void buildshifts(/* struct lemon *, struct state * */); /* Forwd ref */ -PRIVATE struct state *getstate(lemp) -struct lemon *lemp; -{ - struct config *cfp, *bp; - struct state *stp; - - /* Extract the sorted basis of the new state. The basis was constructed - ** by prior calls to "Configlist_addbasis()". */ - Configlist_sortbasis(); - bp = Configlist_basis(); - - /* Get a state with the same basis */ - stp = State_find(bp); - if( stp ){ - /* A state with the same basis already exists! Copy all the follow-set - ** propagation links from the state under construction into the - ** preexisting state, then return a pointer to the preexisting state */ - struct config *x, *y; - for(x=bp, y=stp->bp; x && y; x=x->bp, y=y->bp){ - Plink_copy(&y->bplp,x->bplp); - Plink_delete(x->fplp); - x->fplp = x->bplp = 0; - } - cfp = Configlist_return(); - Configlist_eat(cfp); - }else{ - /* This really is a new state. Construct all the details */ - Configlist_closure(lemp); /* Compute the configuration closure */ - Configlist_sort(); /* Sort the configuration closure */ - cfp = Configlist_return(); /* Get a pointer to the config list */ - stp = State_new(); /* A new state structure */ - MemoryCheck(stp); - stp->bp = bp; /* Remember the configuration basis */ - stp->cfp = cfp; /* Remember the configuration closure */ - stp->statenum = lemp->nstate++; /* Every state gets a sequence number */ - stp->ap = 0; /* No actions, yet. */ - State_insert(stp,stp->bp); /* Add to the state table */ - buildshifts(lemp,stp); /* Recursively compute successor states */ - } - return stp; -} - -/* -** Return true if two symbols are the same. -*/ -int same_symbol(a,b) -struct symbol *a; -struct symbol *b; -{ - int i; - if( a==b ) return 1; - if( a->type!=MULTITERMINAL ) return 0; - if( b->type!=MULTITERMINAL ) return 0; - if( a->nsubsym!=b->nsubsym ) return 0; - for(i=0; insubsym; i++){ - if( a->subsym[i]!=b->subsym[i] ) return 0; - } - return 1; -} - -/* Construct all successor states to the given state. A "successor" -** state is any state which can be reached by a shift action. -*/ -PRIVATE void buildshifts(lemp,stp) -struct lemon *lemp; -struct state *stp; /* The state from which successors are computed */ -{ - struct config *cfp; /* For looping thru the config closure of "stp" */ - struct config *bcfp; /* For the inner loop on config closure of "stp" */ - struct config *new; /* */ - struct symbol *sp; /* Symbol following the dot in configuration "cfp" */ - struct symbol *bsp; /* Symbol following the dot in configuration "bcfp" */ - struct state *newstp; /* A pointer to a successor state */ - - /* Each configuration becomes complete after it contibutes to a successor - ** state. Initially, all configurations are incomplete */ - for(cfp=stp->cfp; cfp; cfp=cfp->next) cfp->status = INCOMPLETE; - - /* Loop through all configurations of the state "stp" */ - for(cfp=stp->cfp; cfp; cfp=cfp->next){ - if( cfp->status==COMPLETE ) continue; /* Already used by inner loop */ - if( cfp->dot>=cfp->rp->nrhs ) continue; /* Can't shift this config */ - Configlist_reset(); /* Reset the new config set */ - sp = cfp->rp->rhs[cfp->dot]; /* Symbol after the dot */ - - /* For every configuration in the state "stp" which has the symbol "sp" - ** following its dot, add the same configuration to the basis set under - ** construction but with the dot shifted one symbol to the right. */ - for(bcfp=cfp; bcfp; bcfp=bcfp->next){ - if( bcfp->status==COMPLETE ) continue; /* Already used */ - if( bcfp->dot>=bcfp->rp->nrhs ) continue; /* Can't shift this one */ - bsp = bcfp->rp->rhs[bcfp->dot]; /* Get symbol after dot */ - if( !same_symbol(bsp,sp) ) continue; /* Must be same as for "cfp" */ - bcfp->status = COMPLETE; /* Mark this config as used */ - new = Configlist_addbasis(bcfp->rp,bcfp->dot+1); - Plink_add(&new->bplp,bcfp); - } - - /* Get a pointer to the state described by the basis configuration set - ** constructed in the preceding loop */ - newstp = getstate(lemp); - - /* The state "newstp" is reached from the state "stp" by a shift action - ** on the symbol "sp" */ - if( sp->type==MULTITERMINAL ){ - int i; - for(i=0; insubsym; i++){ - Action_add(&stp->ap,SHIFT,sp->subsym[i],(char*)newstp); - } - }else{ - Action_add(&stp->ap,SHIFT,sp,(char *)newstp); - } - } -} - -/* -** Construct the propagation links -*/ -void FindLinks(lemp) -struct lemon *lemp; -{ - int i; - struct config *cfp, *other; - struct state *stp; - struct plink *plp; - - /* Housekeeping detail: - ** Add to every propagate link a pointer back to the state to - ** which the link is attached. */ - for(i=0; instate; i++){ - stp = lemp->sorted[i]; - for(cfp=stp->cfp; cfp; cfp=cfp->next){ - cfp->stp = stp; - } - } - - /* Convert all backlinks into forward links. Only the forward - ** links are used in the follow-set computation. */ - for(i=0; instate; i++){ - stp = lemp->sorted[i]; - for(cfp=stp->cfp; cfp; cfp=cfp->next){ - for(plp=cfp->bplp; plp; plp=plp->next){ - other = plp->cfp; - Plink_add(&other->fplp,cfp); - } - } - } -} - -/* Compute all followsets. -** -** A followset is the set of all symbols which can come immediately -** after a configuration. -*/ -void FindFollowSets(lemp) -struct lemon *lemp; -{ - int i; - struct config *cfp; - struct plink *plp; - int progress; - int change; - - for(i=0; instate; i++){ - for(cfp=lemp->sorted[i]->cfp; cfp; cfp=cfp->next){ - cfp->status = INCOMPLETE; - } - } - - do{ - progress = 0; - for(i=0; instate; i++){ - for(cfp=lemp->sorted[i]->cfp; cfp; cfp=cfp->next){ - if( cfp->status==COMPLETE ) continue; - for(plp=cfp->fplp; plp; plp=plp->next){ - change = SetUnion(plp->cfp->fws,cfp->fws); - if( change ){ - plp->cfp->status = INCOMPLETE; - progress = 1; - } - } - cfp->status = COMPLETE; - } - } - }while( progress ); -} - -static int resolve_conflict(); - -/* Compute the reduce actions, and resolve conflicts. -*/ -void FindActions(lemp) -struct lemon *lemp; -{ - int i,j; - struct config *cfp; - struct state *stp; - struct symbol *sp; - struct rule *rp; - - /* Add all of the reduce actions - ** A reduce action is added for each element of the followset of - ** a configuration which has its dot at the extreme right. - */ - for(i=0; instate; i++){ /* Loop over all states */ - stp = lemp->sorted[i]; - for(cfp=stp->cfp; cfp; cfp=cfp->next){ /* Loop over all configurations */ - if( cfp->rp->nrhs==cfp->dot ){ /* Is dot at extreme right? */ - for(j=0; jnterminal; j++){ - if( SetFind(cfp->fws,j) ){ - /* Add a reduce action to the state "stp" which will reduce by the - ** rule "cfp->rp" if the lookahead symbol is "lemp->symbols[j]" */ - Action_add(&stp->ap,REDUCE,lemp->symbols[j],(char *)cfp->rp); - } - } - } - } - } - - /* Add the accepting token */ - if( lemp->start ){ - sp = Symbol_find(lemp->start); - if( sp==0 ) sp = lemp->rule->lhs; - }else{ - sp = lemp->rule->lhs; - } - /* Add to the first state (which is always the starting state of the - ** finite state machine) an action to ACCEPT if the lookahead is the - ** start nonterminal. */ - Action_add(&lemp->sorted[0]->ap,ACCEPT,sp,0); - - /* Resolve conflicts */ - for(i=0; instate; i++){ - struct action *ap, *nap; - struct state *stp; - stp = lemp->sorted[i]; - /* assert( stp->ap ); */ - stp->ap = Action_sort(stp->ap); - for(ap=stp->ap; ap && ap->next; ap=ap->next){ - for(nap=ap->next; nap && nap->sp==ap->sp; nap=nap->next){ - /* The two actions "ap" and "nap" have the same lookahead. - ** Figure out which one should be used */ - lemp->nconflict += resolve_conflict(ap,nap,lemp->errsym); - } - } - } - - /* Report an error for each rule that can never be reduced. */ - for(rp=lemp->rule; rp; rp=rp->next) rp->canReduce = LEMON_FALSE; - for(i=0; instate; i++){ - struct action *ap; - for(ap=lemp->sorted[i]->ap; ap; ap=ap->next){ - if( ap->type==REDUCE ) ap->x.rp->canReduce = LEMON_TRUE; - } - } - for(rp=lemp->rule; rp; rp=rp->next){ - if( rp->canReduce ) continue; - ErrorMsg(lemp->filename,rp->ruleline,"This rule can not be reduced.\n"); - lemp->errorcnt++; - } -} - -/* Resolve a conflict between the two given actions. If the -** conflict can't be resolved, return non-zero. -** -** NO LONGER TRUE: -** To resolve a conflict, first look to see if either action -** is on an error rule. In that case, take the action which -** is not associated with the error rule. If neither or both -** actions are associated with an error rule, then try to -** use precedence to resolve the conflict. -** -** If either action is a SHIFT, then it must be apx. This -** function won't work if apx->type==REDUCE and apy->type==SHIFT. -*/ -static int resolve_conflict(apx,apy,errsym) -struct action *apx; -struct action *apy; -struct symbol *errsym; /* The error symbol (if defined. NULL otherwise) */ -{ - struct symbol *spx, *spy; - int errcnt = 0; - assert( apx->sp==apy->sp ); /* Otherwise there would be no conflict */ - if( apx->type==SHIFT && apy->type==SHIFT ){ - apy->type = SSCONFLICT; - errcnt++; - } - if( apx->type==SHIFT && apy->type==REDUCE ){ - spx = apx->sp; - spy = apy->x.rp->precsym; - if( spy==0 || spx->prec<0 || spy->prec<0 ){ - /* Not enough precedence information. */ - apy->type = SRCONFLICT; - errcnt++; - }else if( spx->prec>spy->prec ){ /* Lower precedence wins */ - apy->type = RD_RESOLVED; - }else if( spx->precprec ){ - apx->type = SH_RESOLVED; - }else if( spx->prec==spy->prec && spx->assoc==RIGHT ){ /* Use operator */ - apy->type = RD_RESOLVED; /* associativity */ - }else if( spx->prec==spy->prec && spx->assoc==LEFT ){ /* to break tie */ - apx->type = SH_RESOLVED; - }else{ - assert( spx->prec==spy->prec && spx->assoc==NONE ); - apy->type = SRCONFLICT; - errcnt++; - } - }else if( apx->type==REDUCE && apy->type==REDUCE ){ - spx = apx->x.rp->precsym; - spy = apy->x.rp->precsym; - if( spx==0 || spy==0 || spx->prec<0 || - spy->prec<0 || spx->prec==spy->prec ){ - apy->type = RRCONFLICT; - errcnt++; - }else if( spx->prec>spy->prec ){ - apy->type = RD_RESOLVED; - }else if( spx->precprec ){ - apx->type = RD_RESOLVED; - } - }else{ - assert( - apx->type==SH_RESOLVED || - apx->type==RD_RESOLVED || - apx->type==SSCONFLICT || - apx->type==SRCONFLICT || - apx->type==RRCONFLICT || - apy->type==SH_RESOLVED || - apy->type==RD_RESOLVED || - apy->type==SSCONFLICT || - apy->type==SRCONFLICT || - apy->type==RRCONFLICT - ); - /* The REDUCE/SHIFT case cannot happen because SHIFTs come before - ** REDUCEs on the list. If we reach this point it must be because - ** the parser conflict had already been resolved. */ - } - return errcnt; -} -/********************* From the file "configlist.c" *************************/ -/* -** Routines to processing a configuration list and building a state -** in the LEMON parser generator. -*/ - -static struct config *freelist = 0; /* List of free configurations */ -static struct config *current = 0; /* Top of list of configurations */ -static struct config **currentend = 0; /* Last on list of configs */ -static struct config *basis = 0; /* Top of list of basis configs */ -static struct config **basisend = 0; /* End of list of basis configs */ - -/* Return a pointer to a new configuration */ -PRIVATE struct config *newconfig(){ - struct config *new; - if( freelist==0 ){ - int i; - int amt = 3; - freelist = (struct config *)calloc( amt, sizeof(struct config) ); - if( freelist==0 ){ - fprintf(stderr,"Unable to allocate memory for a new configuration."); - exit(1); - } - for(i=0; inext; - return new; -} - -/* The configuration "old" is no longer used */ -PRIVATE void deleteconfig(old) -struct config *old; -{ - old->next = freelist; - freelist = old; -} - -/* Initialized the configuration list builder */ -void Configlist_init(){ - current = 0; - currentend = ¤t; - basis = 0; - basisend = &basis; - Configtable_init(); - return; -} - -/* Initialized the configuration list builder */ -void Configlist_reset(){ - current = 0; - currentend = ¤t; - basis = 0; - basisend = &basis; - Configtable_clear(0); - return; -} - -/* Add another configuration to the configuration list */ -struct config *Configlist_add(rp,dot) -struct rule *rp; /* The rule */ -int dot; /* Index into the RHS of the rule where the dot goes */ -{ - struct config *cfp, model; - - assert( currentend!=0 ); - model.rp = rp; - model.dot = dot; - cfp = Configtable_find(&model); - if( cfp==0 ){ - cfp = newconfig(); - cfp->rp = rp; - cfp->dot = dot; - cfp->fws = SetNew(); - cfp->stp = 0; - cfp->fplp = cfp->bplp = 0; - cfp->next = 0; - cfp->bp = 0; - *currentend = cfp; - currentend = &cfp->next; - Configtable_insert(cfp); - } - return cfp; -} - -/* Add a basis configuration to the configuration list */ -struct config *Configlist_addbasis(rp,dot) -struct rule *rp; -int dot; -{ - struct config *cfp, model; - - assert( basisend!=0 ); - assert( currentend!=0 ); - model.rp = rp; - model.dot = dot; - cfp = Configtable_find(&model); - if( cfp==0 ){ - cfp = newconfig(); - cfp->rp = rp; - cfp->dot = dot; - cfp->fws = SetNew(); - cfp->stp = 0; - cfp->fplp = cfp->bplp = 0; - cfp->next = 0; - cfp->bp = 0; - *currentend = cfp; - currentend = &cfp->next; - *basisend = cfp; - basisend = &cfp->bp; - Configtable_insert(cfp); - } - return cfp; -} - -/* Compute the closure of the configuration list */ -void Configlist_closure(lemp) -struct lemon *lemp; -{ - struct config *cfp, *newcfp; - struct rule *rp, *newrp; - struct symbol *sp, *xsp; - int i, dot; - - assert( currentend!=0 ); - for(cfp=current; cfp; cfp=cfp->next){ - rp = cfp->rp; - dot = cfp->dot; - if( dot>=rp->nrhs ) continue; - sp = rp->rhs[dot]; - if( sp->type==NONTERMINAL ){ - if( sp->rule==0 && sp!=lemp->errsym ){ - ErrorMsg(lemp->filename,rp->line,"Nonterminal \"%s\" has no rules.", - sp->name); - lemp->errorcnt++; - } - for(newrp=sp->rule; newrp; newrp=newrp->nextlhs){ - newcfp = Configlist_add(newrp,0); - for(i=dot+1; inrhs; i++){ - xsp = rp->rhs[i]; - if( xsp->type==TERMINAL ){ - SetAdd(newcfp->fws,xsp->index); - break; - }else if( xsp->type==MULTITERMINAL ){ - int k; - for(k=0; knsubsym; k++){ - SetAdd(newcfp->fws, xsp->subsym[k]->index); - } - break; - }else{ - SetUnion(newcfp->fws,xsp->firstset); - if( xsp->lambda==LEMON_FALSE ) break; - } - } - if( i==rp->nrhs ) Plink_add(&cfp->fplp,newcfp); - } - } - } - return; -} - -/* Sort the configuration list */ -void Configlist_sort(){ - current = (struct config *)msort((char *)current,(char **)&(current->next),Configcmp); - currentend = 0; - return; -} - -/* Sort the basis configuration list */ -void Configlist_sortbasis(){ - basis = (struct config *)msort((char *)current,(char **)&(current->bp),Configcmp); - basisend = 0; - return; -} - -/* Return a pointer to the head of the configuration list and -** reset the list */ -struct config *Configlist_return(){ - struct config *old; - old = current; - current = 0; - currentend = 0; - return old; -} - -/* Return a pointer to the head of the configuration list and -** reset the list */ -struct config *Configlist_basis(){ - struct config *old; - old = basis; - basis = 0; - basisend = 0; - return old; -} - -/* Free all elements of the given configuration list */ -void Configlist_eat(cfp) -struct config *cfp; -{ - struct config *nextcfp; - for(; cfp; cfp=nextcfp){ - nextcfp = cfp->next; - assert( cfp->fplp==0 ); - assert( cfp->bplp==0 ); - if( cfp->fws ) SetFree(cfp->fws); - deleteconfig(cfp); - } - return; -} -/***************** From the file "error.c" *********************************/ -/* -** Code for printing error message. -*/ - -/* Find a good place to break "msg" so that its length is at least "min" -** but no more than "max". Make the point as close to max as possible. -*/ -static int findbreak(msg,min,max) -char *msg; -int min; -int max; -{ - int i,spot; - char c; - for(i=spot=min; i<=max; i++){ - c = msg[i]; - if( c=='\t' ) msg[i] = ' '; - if( c=='\n' ){ msg[i] = ' '; spot = i; break; } - if( c==0 ){ spot = i; break; } - if( c=='-' && i0 ){ - sprintf(prefix,"%.*s:%d: ",PREFIXLIMIT-10,filename,lineno); - }else{ - sprintf(prefix,"%.*s: ",PREFIXLIMIT-10,filename); - } - prefixsize = lemonStrlen(prefix); - availablewidth = LINEWIDTH - prefixsize; - - /* Generate the error message */ - vsprintf(errmsg,format,ap); - va_end(ap); - errmsgsize = lemonStrlen(errmsg); - /* Remove trailing '\n's from the error message. */ - while( errmsgsize>0 && errmsg[errmsgsize-1]=='\n' ){ - errmsg[--errmsgsize] = 0; - } - - /* Print the error message */ - base = 0; - while( errmsg[base]!=0 ){ - end = restart = findbreak(&errmsg[base],0,availablewidth); - restart += base; - while( errmsg[restart]==' ' ) restart++; - fprintf(stdout,"%s%.*s\n",prefix,end,&errmsg[base]); - base = restart; - } -} -/**************** From the file "main.c" ************************************/ -/* -** Main program file for the LEMON parser generator. -*/ - -/* Report an out-of-memory condition and abort. This function -** is used mostly by the "MemoryCheck" macro in struct.h -*/ -void memory_error(){ - fprintf(stderr,"Out of memory. Aborting...\n"); - exit(1); -} - -static int nDefine = 0; /* Number of -D options on the command line */ -static char **azDefine = 0; /* Name of the -D macros */ - -/* This routine is called with the argument to each -D command-line option. -** Add the macro defined to the azDefine array. -*/ -static void handle_D_option(char *z){ - char **paz; - nDefine++; - azDefine = realloc(azDefine, sizeof(azDefine[0])*nDefine); - if( azDefine==0 ){ - fprintf(stderr,"out of memory\n"); - exit(1); - } - paz = &azDefine[nDefine-1]; - *paz = malloc( lemonStrlen(z)+1 ); - if( *paz==0 ){ - fprintf(stderr,"out of memory\n"); - exit(1); - } - strcpy(*paz, z); - for(z=*paz; *z && *z!='='; z++){} - *z = 0; -} - - -/* The main program. Parse the command line and do it... */ -int main(argc,argv) -int argc; -char **argv; -{ - static int version = 0; - static int rpflag = 0; - static int basisflag = 0; - static int compress = 0; - static int quiet = 0; - static int statistics = 0; - static int mhflag = 0; - static int nolinenosflag = 0; - static struct s_options options[] = { - {OPT_FLAG, "b", (char*)&basisflag, "Print only the basis in report."}, - {OPT_FLAG, "c", (char*)&compress, "Don't compress the action table."}, - {OPT_FSTR, "D", (char*)handle_D_option, "Define an %ifdef macro."}, - {OPT_FLAG, "g", (char*)&rpflag, "Print grammar without actions."}, - {OPT_FLAG, "m", (char*)&mhflag, "Output a makeheaders compatible file."}, - {OPT_FLAG, "l", (char*)&nolinenosflag, "Do not print #line statements."}, - {OPT_FLAG, "q", (char*)&quiet, "(Quiet) Don't print the report file."}, - {OPT_FLAG, "s", (char*)&statistics, - "Print parser stats to standard output."}, - {OPT_FLAG, "x", (char*)&version, "Print the version number."}, - {OPT_FLAG,0,0,0} - }; - int i; - struct lemon lem; - - OptInit(argv,options,stderr); - if( version ){ - printf("Lemon version 1.0\n"); - exit(0); - } - if( OptNArgs()!=1 ){ - fprintf(stderr,"Exactly one filename argument is required.\n"); - exit(1); - } - memset(&lem, 0, sizeof(lem)); - lem.errorcnt = 0; - - /* Initialize the machine */ - Strsafe_init(); - Symbol_init(); - State_init(); - lem.argv0 = argv[0]; - lem.filename = OptArg(0); - lem.basisflag = basisflag; - lem.nolinenosflag = nolinenosflag; - Symbol_new("$"); - lem.errsym = Symbol_new("error"); - lem.errsym->useCnt = 0; - - /* Parse the input file */ - Parse(&lem); - if( lem.errorcnt ) exit(lem.errorcnt); - if( lem.nrule==0 ){ - fprintf(stderr,"Empty grammar.\n"); - exit(1); - } - - /* Count and index the symbols of the grammar */ - lem.nsymbol = Symbol_count(); - Symbol_new("{default}"); - lem.symbols = Symbol_arrayof(); - for(i=0; i<=lem.nsymbol; i++) lem.symbols[i]->index = i; - qsort(lem.symbols,lem.nsymbol+1,sizeof(struct symbol*), - (int(*)())Symbolcmpp); - for(i=0; i<=lem.nsymbol; i++) lem.symbols[i]->index = i; - for(i=1; isupper(lem.symbols[i]->name[0]); i++); - lem.nterminal = i; - - /* Generate a reprint of the grammar, if requested on the command line */ - if( rpflag ){ - Reprint(&lem); - }else{ - /* Initialize the size for all follow and first sets */ - SetSize(lem.nterminal+1); - - /* Find the precedence for every production rule (that has one) */ - FindRulePrecedences(&lem); - - /* Compute the lambda-nonterminals and the first-sets for every - ** nonterminal */ - FindFirstSets(&lem); - - /* Compute all LR(0) states. Also record follow-set propagation - ** links so that the follow-set can be computed later */ - lem.nstate = 0; - FindStates(&lem); - lem.sorted = State_arrayof(); - - /* Tie up loose ends on the propagation links */ - FindLinks(&lem); - - /* Compute the follow set of every reducible configuration */ - FindFollowSets(&lem); - - /* Compute the action tables */ - FindActions(&lem); - - /* Compress the action tables */ - if( compress==0 ) CompressTables(&lem); - - /* Reorder and renumber the states so that states with fewer choices - ** occur at the end. */ - ResortStates(&lem); - - /* Generate a report of the parser generated. (the "y.output" file) */ - if( !quiet ) ReportOutput(&lem); - - /* Generate the source code for the parser */ - ReportTable(&lem, mhflag); - - /* Produce a header file for use by the scanner. (This step is - ** omitted if the "-m" option is used because makeheaders will - ** generate the file for us.) */ - if( !mhflag ) ReportHeader(&lem); - } - if( statistics ){ - printf("Parser statistics: %d terminals, %d nonterminals, %d rules\n", - lem.nterminal, lem.nsymbol - lem.nterminal, lem.nrule); - printf(" %d states, %d parser table entries, %d conflicts\n", - lem.nstate, lem.tablesize, lem.nconflict); - } - if( lem.nconflict ){ - fprintf(stderr,"%d parsing conflicts.\n",lem.nconflict); - } - exit(lem.errorcnt + lem.nconflict); - return (lem.errorcnt + lem.nconflict); -} -/******************** From the file "msort.c" *******************************/ -/* -** A generic merge-sort program. -** -** USAGE: -** Let "ptr" be a pointer to some structure which is at the head of -** a null-terminated list. Then to sort the list call: -** -** ptr = msort(ptr,&(ptr->next),cmpfnc); -** -** In the above, "cmpfnc" is a pointer to a function which compares -** two instances of the structure and returns an integer, as in -** strcmp. The second argument is a pointer to the pointer to the -** second element of the linked list. This address is used to compute -** the offset to the "next" field within the structure. The offset to -** the "next" field must be constant for all structures in the list. -** -** The function returns a new pointer which is the head of the list -** after sorting. -** -** ALGORITHM: -** Merge-sort. -*/ - -/* -** Return a pointer to the next structure in the linked list. -*/ -#define NEXT(A) (*(char**)(((unsigned long)A)+offset)) - -/* -** Inputs: -** a: A sorted, null-terminated linked list. (May be null). -** b: A sorted, null-terminated linked list. (May be null). -** cmp: A pointer to the comparison function. -** offset: Offset in the structure to the "next" field. -** -** Return Value: -** A pointer to the head of a sorted list containing the elements -** of both a and b. -** -** Side effects: -** The "next" pointers for elements in the lists a and b are -** changed. -*/ -static char *merge( - char *a, - char *b, - int (*cmp)(const char*,const char*), - int offset -){ - char *ptr, *head; - - if( a==0 ){ - head = b; - }else if( b==0 ){ - head = a; - }else{ - if( (*cmp)(a,b)<0 ){ - ptr = a; - a = NEXT(a); - }else{ - ptr = b; - b = NEXT(b); - } - head = ptr; - while( a && b ){ - if( (*cmp)(a,b)<0 ){ - NEXT(ptr) = a; - ptr = a; - a = NEXT(a); - }else{ - NEXT(ptr) = b; - ptr = b; - b = NEXT(b); - } - } - if( a ) NEXT(ptr) = a; - else NEXT(ptr) = b; - } - return head; -} - -/* -** Inputs: -** list: Pointer to a singly-linked list of structures. -** next: Pointer to pointer to the second element of the list. -** cmp: A comparison function. -** -** Return Value: -** A pointer to the head of a sorted list containing the elements -** orginally in list. -** -** Side effects: -** The "next" pointers for elements in list are changed. -*/ -#define LISTSIZE 30 -static char *msort( - char *list, - char **next, - int (*cmp)(const char*,const char*) -){ - unsigned long offset; - char *ep; - char *set[LISTSIZE]; - int i; - offset = (unsigned long)next - (unsigned long)list; - for(i=0; istate = WAITING_FOR_DECL_KEYWORD; - }else if( islower(x[0]) ){ - psp->lhs = Symbol_new(x); - psp->nrhs = 0; - psp->lhsalias = 0; - psp->state = WAITING_FOR_ARROW; - }else if( x[0]=='{' ){ - if( psp->prevrule==0 ){ - ErrorMsg(psp->filename,psp->tokenlineno, -"There is no prior rule opon which to attach the code \ -fragment which begins on this line."); - psp->errorcnt++; - }else if( psp->prevrule->code!=0 ){ - ErrorMsg(psp->filename,psp->tokenlineno, -"Code fragment beginning on this line is not the first \ -to follow the previous rule."); - psp->errorcnt++; - }else{ - psp->prevrule->line = psp->tokenlineno; - psp->prevrule->code = &x[1]; - } - }else if( x[0]=='[' ){ - psp->state = PRECEDENCE_MARK_1; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Token \"%s\" should be either \"%%\" or a nonterminal name.", - x); - psp->errorcnt++; - } - break; - case PRECEDENCE_MARK_1: - if( !isupper(x[0]) ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "The precedence symbol must be a terminal."); - psp->errorcnt++; - }else if( psp->prevrule==0 ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "There is no prior rule to assign precedence \"[%s]\".",x); - psp->errorcnt++; - }else if( psp->prevrule->precsym!=0 ){ - ErrorMsg(psp->filename,psp->tokenlineno, -"Precedence mark on this line is not the first \ -to follow the previous rule."); - psp->errorcnt++; - }else{ - psp->prevrule->precsym = Symbol_new(x); - } - psp->state = PRECEDENCE_MARK_2; - break; - case PRECEDENCE_MARK_2: - if( x[0]!=']' ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "Missing \"]\" on precedence mark."); - psp->errorcnt++; - } - psp->state = WAITING_FOR_DECL_OR_RULE; - break; - case WAITING_FOR_ARROW: - if( x[0]==':' && x[1]==':' && x[2]=='=' ){ - psp->state = IN_RHS; - }else if( x[0]=='(' ){ - psp->state = LHS_ALIAS_1; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Expected to see a \":\" following the LHS symbol \"%s\".", - psp->lhs->name); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - } - break; - case LHS_ALIAS_1: - if( isalpha(x[0]) ){ - psp->lhsalias = x; - psp->state = LHS_ALIAS_2; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "\"%s\" is not a valid alias for the LHS \"%s\"\n", - x,psp->lhs->name); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - } - break; - case LHS_ALIAS_2: - if( x[0]==')' ){ - psp->state = LHS_ALIAS_3; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Missing \")\" following LHS alias name \"%s\".",psp->lhsalias); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - } - break; - case LHS_ALIAS_3: - if( x[0]==':' && x[1]==':' && x[2]=='=' ){ - psp->state = IN_RHS; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Missing \"->\" following: \"%s(%s)\".", - psp->lhs->name,psp->lhsalias); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - } - break; - case IN_RHS: - if( x[0]=='.' ){ - struct rule *rp; - rp = (struct rule *)calloc( sizeof(struct rule) + - sizeof(struct symbol*)*psp->nrhs + sizeof(char*)*psp->nrhs, 1); - if( rp==0 ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "Can't allocate enough memory for this rule."); - psp->errorcnt++; - psp->prevrule = 0; - }else{ - int i; - rp->ruleline = psp->tokenlineno; - rp->rhs = (struct symbol**)&rp[1]; - rp->rhsalias = (char**)&(rp->rhs[psp->nrhs]); - for(i=0; inrhs; i++){ - rp->rhs[i] = psp->rhs[i]; - rp->rhsalias[i] = psp->alias[i]; - } - rp->lhs = psp->lhs; - rp->lhsalias = psp->lhsalias; - rp->nrhs = psp->nrhs; - rp->code = 0; - rp->precsym = 0; - rp->index = psp->gp->nrule++; - rp->nextlhs = rp->lhs->rule; - rp->lhs->rule = rp; - rp->next = 0; - if( psp->firstrule==0 ){ - psp->firstrule = psp->lastrule = rp; - }else{ - psp->lastrule->next = rp; - psp->lastrule = rp; - } - psp->prevrule = rp; - } - psp->state = WAITING_FOR_DECL_OR_RULE; - }else if( isalpha(x[0]) ){ - if( psp->nrhs>=MAXRHS ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "Too many symbols on RHS of rule beginning at \"%s\".", - x); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - }else{ - psp->rhs[psp->nrhs] = Symbol_new(x); - psp->alias[psp->nrhs] = 0; - psp->nrhs++; - } - }else if( (x[0]=='|' || x[0]=='/') && psp->nrhs>0 ){ - struct symbol *msp = psp->rhs[psp->nrhs-1]; - if( msp->type!=MULTITERMINAL ){ - struct symbol *origsp = msp; - msp = calloc(1,sizeof(*msp)); - memset(msp, 0, sizeof(*msp)); - msp->type = MULTITERMINAL; - msp->nsubsym = 1; - msp->subsym = calloc(1,sizeof(struct symbol*)); - msp->subsym[0] = origsp; - msp->name = origsp->name; - psp->rhs[psp->nrhs-1] = msp; - } - msp->nsubsym++; - msp->subsym = realloc(msp->subsym, sizeof(struct symbol*)*msp->nsubsym); - msp->subsym[msp->nsubsym-1] = Symbol_new(&x[1]); - if( islower(x[1]) || islower(msp->subsym[0]->name[0]) ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "Cannot form a compound containing a non-terminal"); - psp->errorcnt++; - } - }else if( x[0]=='(' && psp->nrhs>0 ){ - psp->state = RHS_ALIAS_1; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Illegal character on RHS of rule: \"%s\".",x); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - } - break; - case RHS_ALIAS_1: - if( isalpha(x[0]) ){ - psp->alias[psp->nrhs-1] = x; - psp->state = RHS_ALIAS_2; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "\"%s\" is not a valid alias for the RHS symbol \"%s\"\n", - x,psp->rhs[psp->nrhs-1]->name); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - } - break; - case RHS_ALIAS_2: - if( x[0]==')' ){ - psp->state = IN_RHS; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Missing \")\" following LHS alias name \"%s\".",psp->lhsalias); - psp->errorcnt++; - psp->state = RESYNC_AFTER_RULE_ERROR; - } - break; - case WAITING_FOR_DECL_KEYWORD: - if( isalpha(x[0]) ){ - psp->declkeyword = x; - psp->declargslot = 0; - psp->decllinenoslot = 0; - psp->insertLineMacro = 1; - psp->state = WAITING_FOR_DECL_ARG; - if( strcmp(x,"name")==0 ){ - psp->declargslot = &(psp->gp->name); - psp->insertLineMacro = 0; - }else if( strcmp(x,"include")==0 ){ - psp->declargslot = &(psp->gp->include); - }else if( strcmp(x,"code")==0 ){ - psp->declargslot = &(psp->gp->extracode); - }else if( strcmp(x,"token_destructor")==0 ){ - psp->declargslot = &psp->gp->tokendest; - }else if( strcmp(x,"default_destructor")==0 ){ - psp->declargslot = &psp->gp->vardest; - }else if( strcmp(x,"token_prefix")==0 ){ - psp->declargslot = &psp->gp->tokenprefix; - psp->insertLineMacro = 0; - }else if( strcmp(x,"syntax_error")==0 ){ - psp->declargslot = &(psp->gp->error); - }else if( strcmp(x,"parse_accept")==0 ){ - psp->declargslot = &(psp->gp->accept); - }else if( strcmp(x,"parse_failure")==0 ){ - psp->declargslot = &(psp->gp->failure); - }else if( strcmp(x,"stack_overflow")==0 ){ - psp->declargslot = &(psp->gp->overflow); - }else if( strcmp(x,"extra_argument")==0 ){ - psp->declargslot = &(psp->gp->arg); - psp->insertLineMacro = 0; - }else if( strcmp(x,"token_type")==0 ){ - psp->declargslot = &(psp->gp->tokentype); - psp->insertLineMacro = 0; - }else if( strcmp(x,"default_type")==0 ){ - psp->declargslot = &(psp->gp->vartype); - psp->insertLineMacro = 0; - }else if( strcmp(x,"stack_size")==0 ){ - psp->declargslot = &(psp->gp->stacksize); - psp->insertLineMacro = 0; - }else if( strcmp(x,"start_symbol")==0 ){ - psp->declargslot = &(psp->gp->start); - psp->insertLineMacro = 0; - }else if( strcmp(x,"left")==0 ){ - psp->preccounter++; - psp->declassoc = LEFT; - psp->state = WAITING_FOR_PRECEDENCE_SYMBOL; - }else if( strcmp(x,"right")==0 ){ - psp->preccounter++; - psp->declassoc = RIGHT; - psp->state = WAITING_FOR_PRECEDENCE_SYMBOL; - }else if( strcmp(x,"nonassoc")==0 ){ - psp->preccounter++; - psp->declassoc = NONE; - psp->state = WAITING_FOR_PRECEDENCE_SYMBOL; - }else if( strcmp(x,"destructor")==0 ){ - psp->state = WAITING_FOR_DESTRUCTOR_SYMBOL; - }else if( strcmp(x,"type")==0 ){ - psp->state = WAITING_FOR_DATATYPE_SYMBOL; - }else if( strcmp(x,"fallback")==0 ){ - psp->fallback = 0; - psp->state = WAITING_FOR_FALLBACK_ID; - }else if( strcmp(x,"wildcard")==0 ){ - psp->state = WAITING_FOR_WILDCARD_ID; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Unknown declaration keyword: \"%%%s\".",x); - psp->errorcnt++; - psp->state = RESYNC_AFTER_DECL_ERROR; - } - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Illegal declaration keyword: \"%s\".",x); - psp->errorcnt++; - psp->state = RESYNC_AFTER_DECL_ERROR; - } - break; - case WAITING_FOR_DESTRUCTOR_SYMBOL: - if( !isalpha(x[0]) ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "Symbol name missing after %destructor keyword"); - psp->errorcnt++; - psp->state = RESYNC_AFTER_DECL_ERROR; - }else{ - struct symbol *sp = Symbol_new(x); - psp->declargslot = &sp->destructor; - psp->decllinenoslot = &sp->destLineno; - psp->insertLineMacro = 1; - psp->state = WAITING_FOR_DECL_ARG; - } - break; - case WAITING_FOR_DATATYPE_SYMBOL: - if( !isalpha(x[0]) ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "Symbol name missing after %destructor keyword"); - psp->errorcnt++; - psp->state = RESYNC_AFTER_DECL_ERROR; - }else{ - struct symbol *sp = Symbol_new(x); - psp->declargslot = &sp->datatype; - psp->insertLineMacro = 0; - psp->state = WAITING_FOR_DECL_ARG; - } - break; - case WAITING_FOR_PRECEDENCE_SYMBOL: - if( x[0]=='.' ){ - psp->state = WAITING_FOR_DECL_OR_RULE; - }else if( isupper(x[0]) ){ - struct symbol *sp; - sp = Symbol_new(x); - if( sp->prec>=0 ){ - ErrorMsg(psp->filename,psp->tokenlineno, - "Symbol \"%s\" has already be given a precedence.",x); - psp->errorcnt++; - }else{ - sp->prec = psp->preccounter; - sp->assoc = psp->declassoc; - } - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Can't assign a precedence to \"%s\".",x); - psp->errorcnt++; - } - break; - case WAITING_FOR_DECL_ARG: - if( x[0]=='{' || x[0]=='\"' || isalnum(x[0]) ){ - char *zOld, *zNew, *zBuf, *z; - int nOld, n, nLine, nNew, nBack; - int addLineMacro; - char zLine[50]; - zNew = x; - if( zNew[0]=='"' || zNew[0]=='{' ) zNew++; - nNew = lemonStrlen(zNew); - if( *psp->declargslot ){ - zOld = *psp->declargslot; - }else{ - zOld = ""; - } - nOld = lemonStrlen(zOld); - n = nOld + nNew + 20; - addLineMacro = !psp->gp->nolinenosflag && psp->insertLineMacro && - (psp->decllinenoslot==0 || psp->decllinenoslot[0]!=0); - if( addLineMacro ){ - for(z=psp->filename, nBack=0; *z; z++){ - if( *z=='\\' ) nBack++; - } - sprintf(zLine, "#line %d ", psp->tokenlineno); - nLine = lemonStrlen(zLine); - n += nLine + lemonStrlen(psp->filename) + nBack; - } - *psp->declargslot = zBuf = realloc(*psp->declargslot, n); - zBuf += nOld; - if( addLineMacro ){ - if( nOld && zBuf[-1]!='\n' ){ - *(zBuf++) = '\n'; - } - memcpy(zBuf, zLine, nLine); - zBuf += nLine; - *(zBuf++) = '"'; - for(z=psp->filename; *z; z++){ - if( *z=='\\' ){ - *(zBuf++) = '\\'; - } - *(zBuf++) = *z; - } - *(zBuf++) = '"'; - *(zBuf++) = '\n'; - } - if( psp->decllinenoslot && psp->decllinenoslot[0]==0 ){ - psp->decllinenoslot[0] = psp->tokenlineno; - } - memcpy(zBuf, zNew, nNew); - zBuf += nNew; - *zBuf = 0; - psp->state = WAITING_FOR_DECL_OR_RULE; - }else{ - ErrorMsg(psp->filename,psp->tokenlineno, - "Illegal argument to %%%s: %s",psp->declkeyword,x); - psp->errorcnt++; - psp->state = RESYNC_AFTER_DECL_ERROR; - } - break; - case WAITING_FOR_FALLBACK_ID: - if( x[0]=='.' ){ - psp->state = WAITING_FOR_DECL_OR_RULE; - }else if( !isupper(x[0]) ){ - ErrorMsg(psp->filename, psp->tokenlineno, - "%%fallback argument \"%s\" should be a token", x); - psp->errorcnt++; - }else{ - struct symbol *sp = Symbol_new(x); - if( psp->fallback==0 ){ - psp->fallback = sp; - }else if( sp->fallback ){ - ErrorMsg(psp->filename, psp->tokenlineno, - "More than one fallback assigned to token %s", x); - psp->errorcnt++; - }else{ - sp->fallback = psp->fallback; - psp->gp->has_fallback = 1; - } - } - break; - case WAITING_FOR_WILDCARD_ID: - if( x[0]=='.' ){ - psp->state = WAITING_FOR_DECL_OR_RULE; - }else if( !isupper(x[0]) ){ - ErrorMsg(psp->filename, psp->tokenlineno, - "%%wildcard argument \"%s\" should be a token", x); - psp->errorcnt++; - }else{ - struct symbol *sp = Symbol_new(x); - if( psp->gp->wildcard==0 ){ - psp->gp->wildcard = sp; - }else{ - ErrorMsg(psp->filename, psp->tokenlineno, - "Extra wildcard to token: %s", x); - psp->errorcnt++; - } - } - break; - case RESYNC_AFTER_RULE_ERROR: -/* if( x[0]=='.' ) psp->state = WAITING_FOR_DECL_OR_RULE; -** break; */ - case RESYNC_AFTER_DECL_ERROR: - if( x[0]=='.' ) psp->state = WAITING_FOR_DECL_OR_RULE; - if( x[0]=='%' ) psp->state = WAITING_FOR_DECL_KEYWORD; - break; - } -} - -/* Run the preprocessor over the input file text. The global variables -** azDefine[0] through azDefine[nDefine-1] contains the names of all defined -** macros. This routine looks for "%ifdef" and "%ifndef" and "%endif" and -** comments them out. Text in between is also commented out as appropriate. -*/ -static void preprocess_input(char *z){ - int i, j, k, n; - int exclude = 0; - int start = 0; - int lineno = 1; - int start_lineno = 1; - for(i=0; z[i]; i++){ - if( z[i]=='\n' ) lineno++; - if( z[i]!='%' || (i>0 && z[i-1]!='\n') ) continue; - if( strncmp(&z[i],"%endif",6)==0 && isspace(z[i+6]) ){ - if( exclude ){ - exclude--; - if( exclude==0 ){ - for(j=start; jfilename; - ps.errorcnt = 0; - ps.state = INITIALIZE; - - /* Begin by reading the input file */ - fp = fopen(ps.filename,"rb"); - if( fp==0 ){ - ErrorMsg(ps.filename,0,"Can't open this file for reading."); - gp->errorcnt++; - return; - } - fseek(fp,0,2); - filesize = ftell(fp); - rewind(fp); - filebuf = (char *)malloc( filesize+1 ); - if( filebuf==0 ){ - ErrorMsg(ps.filename,0,"Can't allocate %d of memory to hold this file.", - filesize+1); - gp->errorcnt++; - return; - } - if( fread(filebuf,1,filesize,fp)!=filesize ){ - ErrorMsg(ps.filename,0,"Can't read in all %d bytes of this file.", - filesize); - free(filebuf); - gp->errorcnt++; - return; - } - fclose(fp); - filebuf[filesize] = 0; - - /* Make an initial pass through the file to handle %ifdef and %ifndef */ - preprocess_input(filebuf); - - /* Now scan the text of the input file */ - lineno = 1; - for(cp=filebuf; (c= *cp)!=0; ){ - if( c=='\n' ) lineno++; /* Keep track of the line number */ - if( isspace(c) ){ cp++; continue; } /* Skip all white space */ - if( c=='/' && cp[1]=='/' ){ /* Skip C++ style comments */ - cp+=2; - while( (c= *cp)!=0 && c!='\n' ) cp++; - continue; - } - if( c=='/' && cp[1]=='*' ){ /* Skip C style comments */ - cp+=2; - while( (c= *cp)!=0 && (c!='/' || cp[-1]!='*') ){ - if( c=='\n' ) lineno++; - cp++; - } - if( c ) cp++; - continue; - } - ps.tokenstart = cp; /* Mark the beginning of the token */ - ps.tokenlineno = lineno; /* Linenumber on which token begins */ - if( c=='\"' ){ /* String literals */ - cp++; - while( (c= *cp)!=0 && c!='\"' ){ - if( c=='\n' ) lineno++; - cp++; - } - if( c==0 ){ - ErrorMsg(ps.filename,startline, -"String starting on this line is not terminated before the end of the file."); - ps.errorcnt++; - nextcp = cp; - }else{ - nextcp = cp+1; - } - }else if( c=='{' ){ /* A block of C code */ - int level; - cp++; - for(level=1; (c= *cp)!=0 && (level>1 || c!='}'); cp++){ - if( c=='\n' ) lineno++; - else if( c=='{' ) level++; - else if( c=='}' ) level--; - else if( c=='/' && cp[1]=='*' ){ /* Skip comments */ - int prevc; - cp = &cp[2]; - prevc = 0; - while( (c= *cp)!=0 && (c!='/' || prevc!='*') ){ - if( c=='\n' ) lineno++; - prevc = c; - cp++; - } - }else if( c=='/' && cp[1]=='/' ){ /* Skip C++ style comments too */ - cp = &cp[2]; - while( (c= *cp)!=0 && c!='\n' ) cp++; - if( c ) lineno++; - }else if( c=='\'' || c=='\"' ){ /* String a character literals */ - int startchar, prevc; - startchar = c; - prevc = 0; - for(cp++; (c= *cp)!=0 && (c!=startchar || prevc=='\\'); cp++){ - if( c=='\n' ) lineno++; - if( prevc=='\\' ) prevc = 0; - else prevc = c; - } - } - } - if( c==0 ){ - ErrorMsg(ps.filename,ps.tokenlineno, -"C code starting on this line is not terminated before the end of the file."); - ps.errorcnt++; - nextcp = cp; - }else{ - nextcp = cp+1; - } - }else if( isalnum(c) ){ /* Identifiers */ - while( (c= *cp)!=0 && (isalnum(c) || c=='_') ) cp++; - nextcp = cp; - }else if( c==':' && cp[1]==':' && cp[2]=='=' ){ /* The operator "::=" */ - cp += 3; - nextcp = cp; - }else if( (c=='/' || c=='|') && isalpha(cp[1]) ){ - cp += 2; - while( (c = *cp)!=0 && (isalnum(c) || c=='_') ) cp++; - nextcp = cp; - }else{ /* All other (one character) operators */ - cp++; - nextcp = cp; - } - c = *cp; - *cp = 0; /* Null terminate the token */ - parseonetoken(&ps); /* Parse the token */ - *cp = c; /* Restore the buffer */ - cp = nextcp; - } - free(filebuf); /* Release the buffer after parsing */ - gp->rule = ps.firstrule; - gp->errorcnt = ps.errorcnt; -} -/*************************** From the file "plink.c" *********************/ -/* -** Routines processing configuration follow-set propagation links -** in the LEMON parser generator. -*/ -static struct plink *plink_freelist = 0; - -/* Allocate a new plink */ -struct plink *Plink_new(){ - struct plink *new; - - if( plink_freelist==0 ){ - int i; - int amt = 100; - plink_freelist = (struct plink *)calloc( amt, sizeof(struct plink) ); - if( plink_freelist==0 ){ - fprintf(stderr, - "Unable to allocate memory for a new follow-set propagation link.\n"); - exit(1); - } - for(i=0; inext; - return new; -} - -/* Add a plink to a plink list */ -void Plink_add(plpp,cfp) -struct plink **plpp; -struct config *cfp; -{ - struct plink *new; - new = Plink_new(); - new->next = *plpp; - *plpp = new; - new->cfp = cfp; -} - -/* Transfer every plink on the list "from" to the list "to" */ -void Plink_copy(to,from) -struct plink **to; -struct plink *from; -{ - struct plink *nextpl; - while( from ){ - nextpl = from->next; - from->next = *to; - *to = from; - from = nextpl; - } -} - -/* Delete every plink on the list */ -void Plink_delete(plp) -struct plink *plp; -{ - struct plink *nextpl; - - while( plp ){ - nextpl = plp->next; - plp->next = plink_freelist; - plink_freelist = plp; - plp = nextpl; - } -} -/*********************** From the file "report.c" **************************/ -/* -** Procedures for generating reports and tables in the LEMON parser generator. -*/ - -/* Generate a filename with the given suffix. Space to hold the -** name comes from malloc() and must be freed by the calling -** function. -*/ -PRIVATE char *file_makename(lemp,suffix) -struct lemon *lemp; -char *suffix; -{ - char *name; - char *cp; - - name = malloc( lemonStrlen(lemp->filename) + lemonStrlen(suffix) + 5 ); - if( name==0 ){ - fprintf(stderr,"Can't allocate space for a filename.\n"); - exit(1); - } - strcpy(name,lemp->filename); - cp = strrchr(name,'.'); - if( cp ) *cp = 0; - strcat(name,suffix); - return name; -} - -/* Open a file with a name based on the name of the input file, -** but with a different (specified) suffix, and return a pointer -** to the stream */ -PRIVATE FILE *file_open(lemp,suffix,mode) -struct lemon *lemp; -char *suffix; -char *mode; -{ - FILE *fp; - - if( lemp->outname ) free(lemp->outname); - lemp->outname = file_makename(lemp, suffix); - fp = fopen(lemp->outname,mode); - if( fp==0 && *mode=='w' ){ - fprintf(stderr,"Can't open file \"%s\".\n",lemp->outname); - lemp->errorcnt++; - return 0; - } - return fp; -} - -/* Duplicate the input file without comments and without actions -** on rules */ -void Reprint(lemp) -struct lemon *lemp; -{ - struct rule *rp; - struct symbol *sp; - int i, j, maxlen, len, ncolumns, skip; - printf("// Reprint of input file \"%s\".\n// Symbols:\n",lemp->filename); - maxlen = 10; - for(i=0; insymbol; i++){ - sp = lemp->symbols[i]; - len = lemonStrlen(sp->name); - if( len>maxlen ) maxlen = len; - } - ncolumns = 76/(maxlen+5); - if( ncolumns<1 ) ncolumns = 1; - skip = (lemp->nsymbol + ncolumns - 1)/ncolumns; - for(i=0; insymbol; j+=skip){ - sp = lemp->symbols[j]; - assert( sp->index==j ); - printf(" %3d %-*.*s",j,maxlen,maxlen,sp->name); - } - printf("\n"); - } - for(rp=lemp->rule; rp; rp=rp->next){ - printf("%s",rp->lhs->name); - /* if( rp->lhsalias ) printf("(%s)",rp->lhsalias); */ - printf(" ::="); - for(i=0; inrhs; i++){ - sp = rp->rhs[i]; - printf(" %s", sp->name); - if( sp->type==MULTITERMINAL ){ - for(j=1; jnsubsym; j++){ - printf("|%s", sp->subsym[j]->name); - } - } - /* if( rp->rhsalias[i] ) printf("(%s)",rp->rhsalias[i]); */ - } - printf("."); - if( rp->precsym ) printf(" [%s]",rp->precsym->name); - /* if( rp->code ) printf("\n %s",rp->code); */ - printf("\n"); - } -} - -void ConfigPrint(fp,cfp) -FILE *fp; -struct config *cfp; -{ - struct rule *rp; - struct symbol *sp; - int i, j; - rp = cfp->rp; - fprintf(fp,"%s ::=",rp->lhs->name); - for(i=0; i<=rp->nrhs; i++){ - if( i==cfp->dot ) fprintf(fp," *"); - if( i==rp->nrhs ) break; - sp = rp->rhs[i]; - fprintf(fp," %s", sp->name); - if( sp->type==MULTITERMINAL ){ - for(j=1; jnsubsym; j++){ - fprintf(fp,"|%s",sp->subsym[j]->name); - } - } - } -} - -/* #define TEST */ -#if 0 -/* Print a set */ -PRIVATE void SetPrint(out,set,lemp) -FILE *out; -char *set; -struct lemon *lemp; -{ - int i; - char *spacer; - spacer = ""; - fprintf(out,"%12s[",""); - for(i=0; interminal; i++){ - if( SetFind(set,i) ){ - fprintf(out,"%s%s",spacer,lemp->symbols[i]->name); - spacer = " "; - } - } - fprintf(out,"]\n"); -} - -/* Print a plink chain */ -PRIVATE void PlinkPrint(out,plp,tag) -FILE *out; -struct plink *plp; -char *tag; -{ - while( plp ){ - fprintf(out,"%12s%s (state %2d) ","",tag,plp->cfp->stp->statenum); - ConfigPrint(out,plp->cfp); - fprintf(out,"\n"); - plp = plp->next; - } -} -#endif - -/* Print an action to the given file descriptor. Return FALSE if -** nothing was actually printed. -*/ -int PrintAction(struct action *ap, FILE *fp, int indent){ - int result = 1; - switch( ap->type ){ - case SHIFT: - fprintf(fp,"%*s shift %d",indent,ap->sp->name,ap->x.stp->statenum); - break; - case REDUCE: - fprintf(fp,"%*s reduce %d",indent,ap->sp->name,ap->x.rp->index); - break; - case ACCEPT: - fprintf(fp,"%*s accept",indent,ap->sp->name); - break; - case ERROR: - fprintf(fp,"%*s error",indent,ap->sp->name); - break; - case SRCONFLICT: - case RRCONFLICT: - fprintf(fp,"%*s reduce %-3d ** Parsing conflict **", - indent,ap->sp->name,ap->x.rp->index); - break; - case SSCONFLICT: - fprintf(fp,"%*s shift %d ** Parsing conflict **", - indent,ap->sp->name,ap->x.stp->statenum); - break; - case SH_RESOLVED: - case RD_RESOLVED: - case NOT_USED: - result = 0; - break; - } - return result; -} - -/* Generate the "y.output" log file */ -void ReportOutput(lemp) -struct lemon *lemp; -{ - int i; - struct state *stp; - struct config *cfp; - struct action *ap; - FILE *fp; - - fp = file_open(lemp,".out","wb"); - if( fp==0 ) return; - for(i=0; instate; i++){ - stp = lemp->sorted[i]; - fprintf(fp,"State %d:\n",stp->statenum); - if( lemp->basisflag ) cfp=stp->bp; - else cfp=stp->cfp; - while( cfp ){ - char buf[20]; - if( cfp->dot==cfp->rp->nrhs ){ - sprintf(buf,"(%d)",cfp->rp->index); - fprintf(fp," %5s ",buf); - }else{ - fprintf(fp," "); - } - ConfigPrint(fp,cfp); - fprintf(fp,"\n"); -#if 0 - SetPrint(fp,cfp->fws,lemp); - PlinkPrint(fp,cfp->fplp,"To "); - PlinkPrint(fp,cfp->bplp,"From"); -#endif - if( lemp->basisflag ) cfp=cfp->bp; - else cfp=cfp->next; - } - fprintf(fp,"\n"); - for(ap=stp->ap; ap; ap=ap->next){ - if( PrintAction(ap,fp,30) ) fprintf(fp,"\n"); - } - fprintf(fp,"\n"); - } - fprintf(fp, "----------------------------------------------------\n"); - fprintf(fp, "Symbols:\n"); - for(i=0; insymbol; i++){ - int j; - struct symbol *sp; - - sp = lemp->symbols[i]; - fprintf(fp, " %3d: %s", i, sp->name); - if( sp->type==NONTERMINAL ){ - fprintf(fp, ":"); - if( sp->lambda ){ - fprintf(fp, " "); - } - for(j=0; jnterminal; j++){ - if( sp->firstset && SetFind(sp->firstset, j) ){ - fprintf(fp, " %s", lemp->symbols[j]->name); - } - } - } - fprintf(fp, "\n"); - } - fclose(fp); - return; -} - -/* Search for the file "name" which is in the same directory as -** the exacutable */ -PRIVATE char *pathsearch(argv0,name,modemask) -char *argv0; -char *name; -int modemask; -{ - char *pathlist; - char *path,*cp; - char c; - -#ifdef __WIN32__ - cp = strrchr(argv0,'\\'); -#else - cp = strrchr(argv0,'/'); -#endif - if( cp ){ - c = *cp; - *cp = 0; - path = (char *)malloc( lemonStrlen(argv0) + lemonStrlen(name) + 2 ); - if( path ) sprintf(path,"%s/%s",argv0,name); - *cp = c; - }else{ - extern char *getenv(); - pathlist = getenv("PATH"); - if( pathlist==0 ) pathlist = ".:/bin:/usr/bin"; - path = (char *)malloc( lemonStrlen(pathlist)+lemonStrlen(name)+2 ); - if( path!=0 ){ - while( *pathlist ){ - cp = strchr(pathlist,':'); - if( cp==0 ) cp = &pathlist[lemonStrlen(pathlist)]; - c = *cp; - *cp = 0; - sprintf(path,"%s/%s",pathlist,name); - *cp = c; - if( c==0 ) pathlist = ""; - else pathlist = &cp[1]; - if( access(path,modemask)==0 ) break; - } - } - } - return path; -} - -/* Given an action, compute the integer value for that action -** which is to be put in the action table of the generated machine. -** Return negative if no action should be generated. -*/ -PRIVATE int compute_action(lemp,ap) -struct lemon *lemp; -struct action *ap; -{ - int act; - switch( ap->type ){ - case SHIFT: act = ap->x.stp->statenum; break; - case REDUCE: act = ap->x.rp->index + lemp->nstate; break; - case ERROR: act = lemp->nstate + lemp->nrule; break; - case ACCEPT: act = lemp->nstate + lemp->nrule + 1; break; - default: act = -1; break; - } - return act; -} - -#define LINESIZE 1000 -/* The next cluster of routines are for reading the template file -** and writing the results to the generated parser */ -/* The first function transfers data from "in" to "out" until -** a line is seen which begins with "%%". The line number is -** tracked. -** -** if name!=0, then any word that begin with "Parse" is changed to -** begin with *name instead. -*/ -PRIVATE void tplt_xfer(name,in,out,lineno) -char *name; -FILE *in; -FILE *out; -int *lineno; -{ - int i, iStart; - char line[LINESIZE]; - while( fgets(line,LINESIZE,in) && (line[0]!='%' || line[1]!='%') ){ - (*lineno)++; - iStart = 0; - if( name ){ - for(i=0; line[i]; i++){ - if( line[i]=='P' && strncmp(&line[i],"Parse",5)==0 - && (i==0 || !isalpha(line[i-1])) - ){ - if( i>iStart ) fprintf(out,"%.*s",i-iStart,&line[iStart]); - fprintf(out,"%s",name); - i += 4; - iStart = i+1; - } - } - } - fprintf(out,"%s",&line[iStart]); - } -} - -/* The next function finds the template file and opens it, returning -** a pointer to the opened file. */ -PRIVATE FILE *tplt_open(lemp) -struct lemon *lemp; -{ - static char templatename[] = "lempar.c"; - char buf[1000]; - FILE *in; - char *tpltname; - char *cp; - - cp = strrchr(lemp->filename,'.'); - if( cp ){ - sprintf(buf,"%.*s.lt",(int)(cp-lemp->filename),lemp->filename); - }else{ - sprintf(buf,"%s.lt",lemp->filename); - } - if( access(buf,004)==0 ){ - tpltname = buf; - }else if( access(templatename,004)==0 ){ - tpltname = templatename; - }else{ - tpltname = pathsearch(lemp->argv0,templatename,0); - } - if( tpltname==0 ){ - fprintf(stderr,"Can't find the parser driver template file \"%s\".\n", - templatename); - lemp->errorcnt++; - return 0; - } - in = fopen(tpltname,"rb"); - if( in==0 ){ - fprintf(stderr,"Can't open the template file \"%s\".\n",templatename); - lemp->errorcnt++; - return 0; - } - return in; -} - -/* Print a #line directive line to the output file. */ -PRIVATE void tplt_linedir(out,lineno,filename) -FILE *out; -int lineno; -char *filename; -{ - fprintf(out,"#line %d \"",lineno); - while( *filename ){ - if( *filename == '\\' ) putc('\\',out); - putc(*filename,out); - filename++; - } - fprintf(out,"\"\n"); -} - -/* Print a string to the file and keep the linenumber up to date */ -PRIVATE void tplt_print(out,lemp,str,lineno) -FILE *out; -struct lemon *lemp; -char *str; -int *lineno; -{ - if( str==0 ) return; - while( *str ){ - putc(*str,out); - if( *str=='\n' ) (*lineno)++; - str++; - } - if( str[-1]!='\n' ){ - putc('\n',out); - (*lineno)++; - } - if (!lemp->nolinenosflag) { - (*lineno)++; tplt_linedir(out,*lineno,lemp->outname); - } - return; -} - -/* -** The following routine emits code for the destructor for the -** symbol sp -*/ -void emit_destructor_code(out,sp,lemp,lineno) -FILE *out; -struct symbol *sp; -struct lemon *lemp; -int *lineno; -{ - char *cp = 0; - - if( sp->type==TERMINAL ){ - cp = lemp->tokendest; - if( cp==0 ) return; - fprintf(out,"{\n"); (*lineno)++; - }else if( sp->destructor ){ - cp = sp->destructor; - fprintf(out,"{\n"); (*lineno)++; - if (!lemp->nolinenosflag) { (*lineno)++; tplt_linedir(out,sp->destLineno,lemp->filename); } - }else if( lemp->vardest ){ - cp = lemp->vardest; - if( cp==0 ) return; - fprintf(out,"{\n"); (*lineno)++; - }else{ - assert( 0 ); /* Cannot happen */ - } - for(; *cp; cp++){ - if( *cp=='$' && cp[1]=='$' ){ - fprintf(out,"(yypminor->yy%d)",sp->dtnum); - cp++; - continue; - } - if( *cp=='\n' ) (*lineno)++; - fputc(*cp,out); - } - fprintf(out,"\n"); (*lineno)++; - if (!lemp->nolinenosflag) { - (*lineno)++; tplt_linedir(out,*lineno,lemp->outname); - } - fprintf(out,"}\n"); (*lineno)++; - return; -} - -/* -** Return TRUE (non-zero) if the given symbol has a destructor. -*/ -int has_destructor(sp, lemp) -struct symbol *sp; -struct lemon *lemp; -{ - int ret; - if( sp->type==TERMINAL ){ - ret = lemp->tokendest!=0; - }else{ - ret = lemp->vardest!=0 || sp->destructor!=0; - } - return ret; -} - -/* -** Append text to a dynamically allocated string. If zText is 0 then -** reset the string to be empty again. Always return the complete text -** of the string (which is overwritten with each call). -** -** n bytes of zText are stored. If n==0 then all of zText up to the first -** \000 terminator is stored. zText can contain up to two instances of -** %d. The values of p1 and p2 are written into the first and second -** %d. -** -** If n==-1, then the previous character is overwritten. -*/ -PRIVATE char *append_str(char *zText, int n, int p1, int p2){ - static char *z = 0; - static int alloced = 0; - static int used = 0; - int c; - char zInt[40]; - - if( zText==0 ){ - used = 0; - return z; - } - if( n<=0 ){ - if( n<0 ){ - used += n; - assert( used>=0 ); - } - n = lemonStrlen(zText); - } - if( n+sizeof(zInt)*2+used >= alloced ){ - alloced = n + sizeof(zInt)*2 + used + 200; - z = realloc(z, alloced); - } - if( z==0 ) return ""; - while( n-- > 0 ){ - c = *(zText++); - if( c=='%' && n>0 && zText[0]=='d' ){ - sprintf(zInt, "%d", p1); - p1 = p2; - strcpy(&z[used], zInt); - used += lemonStrlen(&z[used]); - zText++; - n--; - }else{ - z[used++] = c; - } - } - z[used] = 0; - return z; -} - -/* -** zCode is a string that is the action associated with a rule. Expand -** the symbols in this string so that the refer to elements of the parser -** stack. -*/ -PRIVATE void translate_code(struct lemon *lemp, struct rule *rp){ - char *cp, *xp; - int i; - char lhsused = 0; /* True if the LHS element has been used */ - char used[MAXRHS]; /* True for each RHS element which is used */ - - for(i=0; inrhs; i++) used[i] = 0; - lhsused = 0; - - if( rp->code==0 ){ - rp->code = "\n"; - rp->line = rp->ruleline; - } - - append_str(0,0,0,0); - for(cp=rp->code; *cp; cp++){ - if( isalpha(*cp) && (cp==rp->code || (!isalnum(cp[-1]) && cp[-1]!='_')) ){ - char saved; - for(xp= &cp[1]; isalnum(*xp) || *xp=='_'; xp++); - saved = *xp; - *xp = 0; - if( rp->lhsalias && strcmp(cp,rp->lhsalias)==0 ){ - append_str("yygotominor.yy%d",0,rp->lhs->dtnum,0); - cp = xp; - lhsused = 1; - }else{ - for(i=0; inrhs; i++){ - if( rp->rhsalias[i] && strcmp(cp,rp->rhsalias[i])==0 ){ - if( cp!=rp->code && cp[-1]=='@' ){ - /* If the argument is of the form @X then substituted - ** the token number of X, not the value of X */ - append_str("yymsp[%d].major",-1,i-rp->nrhs+1,0); - }else{ - struct symbol *sp = rp->rhs[i]; - int dtnum; - if( sp->type==MULTITERMINAL ){ - dtnum = sp->subsym[0]->dtnum; - }else{ - dtnum = sp->dtnum; - } - append_str("yymsp[%d].minor.yy%d",0,i-rp->nrhs+1, dtnum); - } - cp = xp; - used[i] = 1; - break; - } - } - } - *xp = saved; - } - append_str(cp, 1, 0, 0); - } /* End loop */ - - /* Check to make sure the LHS has been used */ - if( rp->lhsalias && !lhsused ){ - ErrorMsg(lemp->filename,rp->ruleline, - "Label \"%s\" for \"%s(%s)\" is never used.", - rp->lhsalias,rp->lhs->name,rp->lhsalias); - lemp->errorcnt++; - } - - /* Generate destructor code for RHS symbols which are not used in the - ** reduce code */ - for(i=0; inrhs; i++){ - if( rp->rhsalias[i] && !used[i] ){ - ErrorMsg(lemp->filename,rp->ruleline, - "Label %s for \"%s(%s)\" is never used.", - rp->rhsalias[i],rp->rhs[i]->name,rp->rhsalias[i]); - lemp->errorcnt++; - }else if( rp->rhsalias[i]==0 ){ - if( has_destructor(rp->rhs[i],lemp) ){ - append_str(" yy_destructor(yypParser,%d,&yymsp[%d].minor);\n", 0, - rp->rhs[i]->index,i-rp->nrhs+1); - }else{ - /* No destructor defined for this term */ - } - } - } - if( rp->code ){ - cp = append_str(0,0,0,0); - rp->code = Strsafe(cp?cp:""); - } -} - -/* -** Generate code which executes when the rule "rp" is reduced. Write -** the code to "out". Make sure lineno stays up-to-date. -*/ -PRIVATE void emit_code(out,rp,lemp,lineno) -FILE *out; -struct rule *rp; -struct lemon *lemp; -int *lineno; -{ - char *cp; - - /* Generate code to do the reduce action */ - if( rp->code ){ - if (!lemp->nolinenosflag) { (*lineno)++; tplt_linedir(out,rp->line,lemp->filename); } - fprintf(out,"{%s",rp->code); - for(cp=rp->code; *cp; cp++){ - if( *cp=='\n' ) (*lineno)++; - } /* End loop */ - fprintf(out,"}\n"); (*lineno)++; - if (!lemp->nolinenosflag) { (*lineno)++; tplt_linedir(out,*lineno,lemp->outname); } - } /* End if( rp->code ) */ - - return; -} - -/* -** Print the definition of the union used for the parser's data stack. -** This union contains fields for every possible data type for tokens -** and nonterminals. In the process of computing and printing this -** union, also set the ".dtnum" field of every terminal and nonterminal -** symbol. -*/ -void print_stack_union(out,lemp,plineno,mhflag) -FILE *out; /* The output stream */ -struct lemon *lemp; /* The main info structure for this parser */ -int *plineno; /* Pointer to the line number */ -int mhflag; /* True if generating makeheaders output */ -{ - int lineno = *plineno; /* The line number of the output */ - char **types; /* A hash table of datatypes */ - int arraysize; /* Size of the "types" array */ - int maxdtlength; /* Maximum length of any ".datatype" field. */ - char *stddt; /* Standardized name for a datatype */ - int i,j; /* Loop counters */ - int hash; /* For hashing the name of a type */ - char *name; /* Name of the parser */ - - /* Allocate and initialize types[] and allocate stddt[] */ - arraysize = lemp->nsymbol * 2; - types = (char**)calloc( arraysize, sizeof(char*) ); - for(i=0; ivartype ){ - maxdtlength = lemonStrlen(lemp->vartype); - } - for(i=0; insymbol; i++){ - int len; - struct symbol *sp = lemp->symbols[i]; - if( sp->datatype==0 ) continue; - len = lemonStrlen(sp->datatype); - if( len>maxdtlength ) maxdtlength = len; - } - stddt = (char*)malloc( maxdtlength*2 + 1 ); - if( types==0 || stddt==0 ){ - fprintf(stderr,"Out of memory.\n"); - exit(1); - } - - /* Build a hash table of datatypes. The ".dtnum" field of each symbol - ** is filled in with the hash index plus 1. A ".dtnum" value of 0 is - ** used for terminal symbols. If there is no %default_type defined then - ** 0 is also used as the .dtnum value for nonterminals which do not specify - ** a datatype using the %type directive. - */ - for(i=0; insymbol; i++){ - struct symbol *sp = lemp->symbols[i]; - char *cp; - if( sp==lemp->errsym ){ - sp->dtnum = arraysize+1; - continue; - } - if( sp->type!=NONTERMINAL || (sp->datatype==0 && lemp->vartype==0) ){ - sp->dtnum = 0; - continue; - } - cp = sp->datatype; - if( cp==0 ) cp = lemp->vartype; - j = 0; - while( isspace(*cp) ) cp++; - while( *cp ) stddt[j++] = *cp++; - while( j>0 && isspace(stddt[j-1]) ) j--; - stddt[j] = 0; - if( lemp->tokentype && strcmp(stddt, lemp->tokentype)==0 ){ - sp->dtnum = 0; - continue; - } - hash = 0; - for(j=0; stddt[j]; j++){ - hash = hash*53 + stddt[j]; - } - hash = (hash & 0x7fffffff)%arraysize; - while( types[hash] ){ - if( strcmp(types[hash],stddt)==0 ){ - sp->dtnum = hash + 1; - break; - } - hash++; - if( hash>=arraysize ) hash = 0; - } - if( types[hash]==0 ){ - sp->dtnum = hash + 1; - types[hash] = (char*)malloc( lemonStrlen(stddt)+1 ); - if( types[hash]==0 ){ - fprintf(stderr,"Out of memory.\n"); - exit(1); - } - strcpy(types[hash],stddt); - } - } - - /* Print out the definition of YYTOKENTYPE and YYMINORTYPE */ - name = lemp->name ? lemp->name : "Parse"; - lineno = *plineno; - if( mhflag ){ fprintf(out,"#if INTERFACE\n"); lineno++; } - fprintf(out,"#define %sTOKENTYPE %s\n",name, - lemp->tokentype?lemp->tokentype:"void*"); lineno++; - if( mhflag ){ fprintf(out,"#endif\n"); lineno++; } - fprintf(out,"typedef union {\n"); lineno++; - fprintf(out," int yyinit;\n"); lineno++; - fprintf(out," %sTOKENTYPE yy0;\n",name); lineno++; - for(i=0; ierrsym->useCnt ){ - fprintf(out," int yy%d;\n",lemp->errsym->dtnum); lineno++; - } - free(stddt); - free(types); - fprintf(out,"} YYMINORTYPE;\n"); lineno++; - *plineno = lineno; -} - -/* -** Return the name of a C datatype able to represent values between -** lwr and upr, inclusive. -*/ -static const char *minimum_size_type(int lwr, int upr){ - if( lwr>=0 ){ - if( upr<=255 ){ - return "unsigned char"; - }else if( upr<65535 ){ - return "unsigned short int"; - }else{ - return "unsigned int"; - } - }else if( lwr>=-127 && upr<=127 ){ - return "signed char"; - }else if( lwr>=-32767 && upr<32767 ){ - return "short"; - }else{ - return "int"; - } -} - -/* -** Each state contains a set of token transaction and a set of -** nonterminal transactions. Each of these sets makes an instance -** of the following structure. An array of these structures is used -** to order the creation of entries in the yy_action[] table. -*/ -struct axset { - struct state *stp; /* A pointer to a state */ - int isTkn; /* True to use tokens. False for non-terminals */ - int nAction; /* Number of actions */ -}; - -/* -** Compare to axset structures for sorting purposes -*/ -static int axset_compare(const void *a, const void *b){ - struct axset *p1 = (struct axset*)a; - struct axset *p2 = (struct axset*)b; - return p2->nAction - p1->nAction; -} - -/* -** Write text on "out" that describes the rule "rp". -*/ -static void writeRuleText(FILE *out, struct rule *rp){ - int j; - fprintf(out,"%s ::=", rp->lhs->name); - for(j=0; jnrhs; j++){ - struct symbol *sp = rp->rhs[j]; - fprintf(out," %s", sp->name); - if( sp->type==MULTITERMINAL ){ - int k; - for(k=1; knsubsym; k++){ - fprintf(out,"|%s",sp->subsym[k]->name); - } - } - } -} - - -/* Generate C source code for the parser */ -void ReportTable(lemp, mhflag) -struct lemon *lemp; -int mhflag; /* Output in makeheaders format if true */ -{ - FILE *out, *in; - char line[LINESIZE]; - int lineno; - struct state *stp; - struct action *ap; - struct rule *rp; - struct acttab *pActtab; - int i, j, n; - char *name; - int mnTknOfst, mxTknOfst; - int mnNtOfst, mxNtOfst; - struct axset *ax; - - in = tplt_open(lemp); - if( in==0 ) return; - out = file_open(lemp,".c","wb"); - if( out==0 ){ - fclose(in); - return; - } - lineno = 1; - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate the include code, if any */ - tplt_print(out,lemp,lemp->include,&lineno); - if( mhflag ){ - char *name = file_makename(lemp, ".h"); - fprintf(out,"#include \"%s\"\n", name); lineno++; - free(name); - } - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate #defines for all tokens */ - if( mhflag ){ - char *prefix; - fprintf(out,"#if INTERFACE\n"); lineno++; - if( lemp->tokenprefix ) prefix = lemp->tokenprefix; - else prefix = ""; - for(i=1; interminal; i++){ - fprintf(out,"#define %s%-30s %2d\n",prefix,lemp->symbols[i]->name,i); - lineno++; - } - fprintf(out,"#endif\n"); lineno++; - } - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate the defines */ - fprintf(out,"#define YYCODETYPE %s\n", - minimum_size_type(0, lemp->nsymbol+1)); lineno++; - fprintf(out,"#define YYNOCODE %d\n",lemp->nsymbol+1); lineno++; - fprintf(out,"#define YYACTIONTYPE %s\n", - minimum_size_type(0, lemp->nstate+lemp->nrule+5)); lineno++; - if( lemp->wildcard ){ - fprintf(out,"#define YYWILDCARD %d\n", - lemp->wildcard->index); lineno++; - } - print_stack_union(out,lemp,&lineno,mhflag); - fprintf(out, "#ifndef YYSTACKDEPTH\n"); lineno++; - if( lemp->stacksize ){ - fprintf(out,"#define YYSTACKDEPTH %s\n",lemp->stacksize); lineno++; - }else{ - fprintf(out,"#define YYSTACKDEPTH 100\n"); lineno++; - } - fprintf(out, "#endif\n"); lineno++; - if( mhflag ){ - fprintf(out,"#if INTERFACE\n"); lineno++; - } - name = lemp->name ? lemp->name : "Parse"; - if( lemp->arg && lemp->arg[0] ){ - int i; - i = lemonStrlen(lemp->arg); - while( i>=1 && isspace(lemp->arg[i-1]) ) i--; - while( i>=1 && (isalnum(lemp->arg[i-1]) || lemp->arg[i-1]=='_') ) i--; - fprintf(out,"#define %sARG_SDECL %s;\n",name,lemp->arg); lineno++; - fprintf(out,"#define %sARG_PDECL ,%s\n",name,lemp->arg); lineno++; - fprintf(out,"#define %sARG_FETCH %s = yypParser->%s\n", - name,lemp->arg,&lemp->arg[i]); lineno++; - fprintf(out,"#define %sARG_STORE yypParser->%s = %s\n", - name,&lemp->arg[i],&lemp->arg[i]); lineno++; - }else{ - fprintf(out,"#define %sARG_SDECL\n",name); lineno++; - fprintf(out,"#define %sARG_PDECL\n",name); lineno++; - fprintf(out,"#define %sARG_FETCH\n",name); lineno++; - fprintf(out,"#define %sARG_STORE\n",name); lineno++; - } - if( mhflag ){ - fprintf(out,"#endif\n"); lineno++; - } - fprintf(out,"#define YYNSTATE %d\n",lemp->nstate); lineno++; - fprintf(out,"#define YYNRULE %d\n",lemp->nrule); lineno++; - if( lemp->errsym->useCnt ){ - fprintf(out,"#define YYERRORSYMBOL %d\n",lemp->errsym->index); lineno++; - fprintf(out,"#define YYERRSYMDT yy%d\n",lemp->errsym->dtnum); lineno++; - } - if( lemp->has_fallback ){ - fprintf(out,"#define YYFALLBACK 1\n"); lineno++; - } - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate the action table and its associates: - ** - ** yy_action[] A single table containing all actions. - ** yy_lookahead[] A table containing the lookahead for each entry in - ** yy_action. Used to detect hash collisions. - ** yy_shift_ofst[] For each state, the offset into yy_action for - ** shifting terminals. - ** yy_reduce_ofst[] For each state, the offset into yy_action for - ** shifting non-terminals after a reduce. - ** yy_default[] Default action for each state. - */ - - /* Compute the actions on all states and count them up */ - ax = calloc(lemp->nstate*2, sizeof(ax[0])); - if( ax==0 ){ - fprintf(stderr,"malloc failed\n"); - exit(1); - } - for(i=0; instate; i++){ - stp = lemp->sorted[i]; - ax[i*2].stp = stp; - ax[i*2].isTkn = 1; - ax[i*2].nAction = stp->nTknAct; - ax[i*2+1].stp = stp; - ax[i*2+1].isTkn = 0; - ax[i*2+1].nAction = stp->nNtAct; - } - mxTknOfst = mnTknOfst = 0; - mxNtOfst = mnNtOfst = 0; - - /* Compute the action table. In order to try to keep the size of the - ** action table to a minimum, the heuristic of placing the largest action - ** sets first is used. - */ - qsort(ax, lemp->nstate*2, sizeof(ax[0]), axset_compare); - pActtab = acttab_alloc(); - for(i=0; instate*2 && ax[i].nAction>0; i++){ - stp = ax[i].stp; - if( ax[i].isTkn ){ - for(ap=stp->ap; ap; ap=ap->next){ - int action; - if( ap->sp->index>=lemp->nterminal ) continue; - action = compute_action(lemp, ap); - if( action<0 ) continue; - acttab_action(pActtab, ap->sp->index, action); - } - stp->iTknOfst = acttab_insert(pActtab); - if( stp->iTknOfstiTknOfst; - if( stp->iTknOfst>mxTknOfst ) mxTknOfst = stp->iTknOfst; - }else{ - for(ap=stp->ap; ap; ap=ap->next){ - int action; - if( ap->sp->indexnterminal ) continue; - if( ap->sp->index==lemp->nsymbol ) continue; - action = compute_action(lemp, ap); - if( action<0 ) continue; - acttab_action(pActtab, ap->sp->index, action); - } - stp->iNtOfst = acttab_insert(pActtab); - if( stp->iNtOfstiNtOfst; - if( stp->iNtOfst>mxNtOfst ) mxNtOfst = stp->iNtOfst; - } - } - free(ax); - - /* Output the yy_action table */ - fprintf(out,"static const YYACTIONTYPE yy_action[] = {\n"); lineno++; - n = acttab_size(pActtab); - for(i=j=0; instate + lemp->nrule + 2; - if( j==0 ) fprintf(out," /* %5d */ ", i); - fprintf(out, " %4d,", action); - if( j==9 || i==n-1 ){ - fprintf(out, "\n"); lineno++; - j = 0; - }else{ - j++; - } - } - fprintf(out, "};\n"); lineno++; - - /* Output the yy_lookahead table */ - fprintf(out,"static const YYCODETYPE yy_lookahead[] = {\n"); lineno++; - for(i=j=0; insymbol; - if( j==0 ) fprintf(out," /* %5d */ ", i); - fprintf(out, " %4d,", la); - if( j==9 || i==n-1 ){ - fprintf(out, "\n"); lineno++; - j = 0; - }else{ - j++; - } - } - fprintf(out, "};\n"); lineno++; - - /* Output the yy_shift_ofst[] table */ - fprintf(out, "#define YY_SHIFT_USE_DFLT (%d)\n", mnTknOfst-1); lineno++; - n = lemp->nstate; - while( n>0 && lemp->sorted[n-1]->iTknOfst==NO_OFFSET ) n--; - fprintf(out, "#define YY_SHIFT_MAX %d\n", n-1); lineno++; - fprintf(out, "static const %s yy_shift_ofst[] = {\n", - minimum_size_type(mnTknOfst-1, mxTknOfst)); lineno++; - for(i=j=0; isorted[i]; - ofst = stp->iTknOfst; - if( ofst==NO_OFFSET ) ofst = mnTknOfst - 1; - if( j==0 ) fprintf(out," /* %5d */ ", i); - fprintf(out, " %4d,", ofst); - if( j==9 || i==n-1 ){ - fprintf(out, "\n"); lineno++; - j = 0; - }else{ - j++; - } - } - fprintf(out, "};\n"); lineno++; - - /* Output the yy_reduce_ofst[] table */ - fprintf(out, "#define YY_REDUCE_USE_DFLT (%d)\n", mnNtOfst-1); lineno++; - n = lemp->nstate; - while( n>0 && lemp->sorted[n-1]->iNtOfst==NO_OFFSET ) n--; - fprintf(out, "#define YY_REDUCE_MAX %d\n", n-1); lineno++; - fprintf(out, "static const %s yy_reduce_ofst[] = {\n", - minimum_size_type(mnNtOfst-1, mxNtOfst)); lineno++; - for(i=j=0; isorted[i]; - ofst = stp->iNtOfst; - if( ofst==NO_OFFSET ) ofst = mnNtOfst - 1; - if( j==0 ) fprintf(out," /* %5d */ ", i); - fprintf(out, " %4d,", ofst); - if( j==9 || i==n-1 ){ - fprintf(out, "\n"); lineno++; - j = 0; - }else{ - j++; - } - } - fprintf(out, "};\n"); lineno++; - - /* Output the default action table */ - fprintf(out, "static const YYACTIONTYPE yy_default[] = {\n"); lineno++; - n = lemp->nstate; - for(i=j=0; isorted[i]; - if( j==0 ) fprintf(out," /* %5d */ ", i); - fprintf(out, " %4d,", stp->iDflt); - if( j==9 || i==n-1 ){ - fprintf(out, "\n"); lineno++; - j = 0; - }else{ - j++; - } - } - fprintf(out, "};\n"); lineno++; - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate the table of fallback tokens. - */ - if( lemp->has_fallback ){ - int mx = lemp->nterminal - 1; - while( mx>0 && lemp->symbols[mx]->fallback==0 ){ mx--; } - for(i=0; i<=mx; i++){ - struct symbol *p = lemp->symbols[i]; - if( p->fallback==0 ){ - fprintf(out, " 0, /* %10s => nothing */\n", p->name); - }else{ - fprintf(out, " %3d, /* %10s => %s */\n", p->fallback->index, - p->name, p->fallback->name); - } - lineno++; - } - } - tplt_xfer(lemp->name, in, out, &lineno); - - /* Generate a table containing the symbolic name of every symbol - */ - for(i=0; insymbol; i++){ - sprintf(line,"\"%s\",",lemp->symbols[i]->name); - fprintf(out," %-15s",line); - if( (i&3)==3 ){ fprintf(out,"\n"); lineno++; } - } - if( (i&3)!=0 ){ fprintf(out,"\n"); lineno++; } - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate a table containing a text string that describes every - ** rule in the rule set of the grammar. This information is used - ** when tracing REDUCE actions. - */ - for(i=0, rp=lemp->rule; rp; rp=rp->next, i++){ - assert( rp->index==i ); - fprintf(out," /* %3d */ \"", i); - writeRuleText(out, rp); - fprintf(out,"\",\n"); lineno++; - } - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate code which executes every time a symbol is popped from - ** the stack while processing errors or while destroying the parser. - ** (In other words, generate the %destructor actions) - */ - if( lemp->tokendest ){ - int once = 1; - for(i=0; insymbol; i++){ - struct symbol *sp = lemp->symbols[i]; - if( sp==0 || sp->type!=TERMINAL ) continue; - if( once ){ - fprintf(out, " /* TERMINAL Destructor */\n"); lineno++; - once = 0; - } - fprintf(out," case %d: /* %s */\n", sp->index, sp->name); lineno++; - } - for(i=0; insymbol && lemp->symbols[i]->type!=TERMINAL; i++); - if( insymbol ){ - emit_destructor_code(out,lemp->symbols[i],lemp,&lineno); - fprintf(out," break;\n"); lineno++; - } - } - if( lemp->vardest ){ - struct symbol *dflt_sp = 0; - int once = 1; - for(i=0; insymbol; i++){ - struct symbol *sp = lemp->symbols[i]; - if( sp==0 || sp->type==TERMINAL || - sp->index<=0 || sp->destructor!=0 ) continue; - if( once ){ - fprintf(out, " /* Default NON-TERMINAL Destructor */\n"); lineno++; - once = 0; - } - fprintf(out," case %d: /* %s */\n", sp->index, sp->name); lineno++; - dflt_sp = sp; - } - if( dflt_sp!=0 ){ - emit_destructor_code(out,dflt_sp,lemp,&lineno); - } - fprintf(out," break;\n"); lineno++; - } - for(i=0; insymbol; i++){ - struct symbol *sp = lemp->symbols[i]; - if( sp==0 || sp->type==TERMINAL || sp->destructor==0 ) continue; - fprintf(out," case %d: /* %s */\n", sp->index, sp->name); lineno++; - - /* Combine duplicate destructors into a single case */ - for(j=i+1; jnsymbol; j++){ - struct symbol *sp2 = lemp->symbols[j]; - if( sp2 && sp2->type!=TERMINAL && sp2->destructor - && sp2->dtnum==sp->dtnum - && strcmp(sp->destructor,sp2->destructor)==0 ){ - fprintf(out," case %d: /* %s */\n", - sp2->index, sp2->name); lineno++; - sp2->destructor = 0; - } - } - - emit_destructor_code(out,lemp->symbols[i],lemp,&lineno); - fprintf(out," break;\n"); lineno++; - } - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate code which executes whenever the parser stack overflows */ - tplt_print(out,lemp,lemp->overflow,&lineno); - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate the table of rule information - ** - ** Note: This code depends on the fact that rules are number - ** sequentually beginning with 0. - */ - for(rp=lemp->rule; rp; rp=rp->next){ - fprintf(out," { %d, %d },\n",rp->lhs->index,rp->nrhs); lineno++; - } - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate code which execution during each REDUCE action */ - for(rp=lemp->rule; rp; rp=rp->next){ - translate_code(lemp, rp); - } - /* First output rules other than the default: rule */ - for(rp=lemp->rule; rp; rp=rp->next){ - struct rule *rp2; /* Other rules with the same action */ - if( rp->code==0 ) continue; - if( rp->code[0]=='\n' && rp->code[1]==0 ) continue; /* Will be default: */ - fprintf(out," case %d: /* ", rp->index); - writeRuleText(out, rp); - fprintf(out, " */\n"); lineno++; - for(rp2=rp->next; rp2; rp2=rp2->next){ - if( rp2->code==rp->code ){ - fprintf(out," case %d: /* ", rp2->index); - writeRuleText(out, rp2); - fprintf(out," */ yytestcase(yyruleno==%d);\n", rp2->index); lineno++; - rp2->code = 0; - } - } - emit_code(out,rp,lemp,&lineno); - fprintf(out," break;\n"); lineno++; - rp->code = 0; - } - /* Finally, output the default: rule. We choose as the default: all - ** empty actions. */ - fprintf(out," default:\n"); lineno++; - for(rp=lemp->rule; rp; rp=rp->next){ - if( rp->code==0 ) continue; - assert( rp->code[0]=='\n' && rp->code[1]==0 ); - fprintf(out," /* (%d) ", rp->index); - writeRuleText(out, rp); - fprintf(out, " */ yytestcase(yyruleno==%d);\n", rp->index); lineno++; - } - fprintf(out," break;\n"); lineno++; - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate code which executes if a parse fails */ - tplt_print(out,lemp,lemp->failure,&lineno); - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate code which executes when a syntax error occurs */ - tplt_print(out,lemp,lemp->error,&lineno); - tplt_xfer(lemp->name,in,out,&lineno); - - /* Generate code which executes when the parser accepts its input */ - tplt_print(out,lemp,lemp->accept,&lineno); - tplt_xfer(lemp->name,in,out,&lineno); - - /* Append any addition code the user desires */ - tplt_print(out,lemp,lemp->extracode,&lineno); - - fclose(in); - fclose(out); - return; -} - -/* Generate a header file for the parser */ -void ReportHeader(lemp) -struct lemon *lemp; -{ - FILE *out, *in; - char *prefix; - char line[LINESIZE]; - char pattern[LINESIZE]; - int i; - - if( lemp->tokenprefix ) prefix = lemp->tokenprefix; - else prefix = ""; - in = file_open(lemp,".h","rb"); - if( in ){ - for(i=1; interminal && fgets(line,LINESIZE,in); i++){ - sprintf(pattern,"#define %s%-30s %2d\n",prefix,lemp->symbols[i]->name,i); - if( strcmp(line,pattern) ) break; - } - fclose(in); - if( i==lemp->nterminal ){ - /* No change in the file. Don't rewrite it. */ - return; - } - } - out = file_open(lemp,".h","wb"); - if( out ){ - for(i=1; interminal; i++){ - fprintf(out,"#define %s%-30s %2d\n",prefix,lemp->symbols[i]->name,i); - } - fclose(out); - } - return; -} - -/* Reduce the size of the action tables, if possible, by making use -** of defaults. -** -** In this version, we take the most frequent REDUCE action and make -** it the default. Except, there is no default if the wildcard token -** is a possible look-ahead. -*/ -void CompressTables(lemp) -struct lemon *lemp; -{ - struct state *stp; - struct action *ap, *ap2; - struct rule *rp, *rp2, *rbest; - int nbest, n; - int i; - int usesWildcard; - - for(i=0; instate; i++){ - stp = lemp->sorted[i]; - nbest = 0; - rbest = 0; - usesWildcard = 0; - - for(ap=stp->ap; ap; ap=ap->next){ - if( ap->type==SHIFT && ap->sp==lemp->wildcard ){ - usesWildcard = 1; - } - if( ap->type!=REDUCE ) continue; - rp = ap->x.rp; - if( rp->lhsStart ) continue; - if( rp==rbest ) continue; - n = 1; - for(ap2=ap->next; ap2; ap2=ap2->next){ - if( ap2->type!=REDUCE ) continue; - rp2 = ap2->x.rp; - if( rp2==rbest ) continue; - if( rp2==rp ) n++; - } - if( n>nbest ){ - nbest = n; - rbest = rp; - } - } - - /* Do not make a default if the number of rules to default - ** is not at least 1 or if the wildcard token is a possible - ** lookahead. - */ - if( nbest<1 || usesWildcard ) continue; - - - /* Combine matching REDUCE actions into a single default */ - for(ap=stp->ap; ap; ap=ap->next){ - if( ap->type==REDUCE && ap->x.rp==rbest ) break; - } - assert( ap ); - ap->sp = Symbol_new("{default}"); - for(ap=ap->next; ap; ap=ap->next){ - if( ap->type==REDUCE && ap->x.rp==rbest ) ap->type = NOT_USED; - } - stp->ap = Action_sort(stp->ap); - } -} - - -/* -** Compare two states for sorting purposes. The smaller state is the -** one with the most non-terminal actions. If they have the same number -** of non-terminal actions, then the smaller is the one with the most -** token actions. -*/ -static int stateResortCompare(const void *a, const void *b){ - const struct state *pA = *(const struct state**)a; - const struct state *pB = *(const struct state**)b; - int n; - - n = pB->nNtAct - pA->nNtAct; - if( n==0 ){ - n = pB->nTknAct - pA->nTknAct; - } - return n; -} - - -/* -** Renumber and resort states so that states with fewer choices -** occur at the end. Except, keep state 0 as the first state. -*/ -void ResortStates(lemp) -struct lemon *lemp; -{ - int i; - struct state *stp; - struct action *ap; - - for(i=0; instate; i++){ - stp = lemp->sorted[i]; - stp->nTknAct = stp->nNtAct = 0; - stp->iDflt = lemp->nstate + lemp->nrule; - stp->iTknOfst = NO_OFFSET; - stp->iNtOfst = NO_OFFSET; - for(ap=stp->ap; ap; ap=ap->next){ - if( compute_action(lemp,ap)>=0 ){ - if( ap->sp->indexnterminal ){ - stp->nTknAct++; - }else if( ap->sp->indexnsymbol ){ - stp->nNtAct++; - }else{ - stp->iDflt = compute_action(lemp, ap); - } - } - } - } - qsort(&lemp->sorted[1], lemp->nstate-1, sizeof(lemp->sorted[0]), - stateResortCompare); - for(i=0; instate; i++){ - lemp->sorted[i]->statenum = i; - } -} - - -/***************** From the file "set.c" ************************************/ -/* -** Set manipulation routines for the LEMON parser generator. -*/ - -static int size = 0; - -/* Set the set size */ -void SetSize(n) -int n; -{ - size = n+1; -} - -/* Allocate a new set */ -char *SetNew(){ - char *s; - s = (char*)calloc( size, 1); - if( s==0 ){ - extern void memory_error(); - memory_error(); - } - return s; -} - -/* Deallocate a set */ -void SetFree(s) -char *s; -{ - free(s); -} - -/* Add a new element to the set. Return TRUE if the element was added -** and FALSE if it was already there. */ -int SetAdd(s,e) -char *s; -int e; -{ - int rv; - assert( e>=0 && esize = 1024; - x1a->count = 0; - x1a->tbl = (x1node*)malloc( - (sizeof(x1node) + sizeof(x1node*))*1024 ); - if( x1a->tbl==0 ){ - free(x1a); - x1a = 0; - }else{ - int i; - x1a->ht = (x1node**)&(x1a->tbl[1024]); - for(i=0; i<1024; i++) x1a->ht[i] = 0; - } - } -} -/* Insert a new record into the array. Return TRUE if successful. -** Prior data with the same key is NOT overwritten */ -int Strsafe_insert(data) -char *data; -{ - x1node *np; - int h; - int ph; - - if( x1a==0 ) return 0; - ph = strhash(data); - h = ph & (x1a->size-1); - np = x1a->ht[h]; - while( np ){ - if( strcmp(np->data,data)==0 ){ - /* An existing entry with the same key is found. */ - /* Fail because overwrite is not allows. */ - return 0; - } - np = np->next; - } - if( x1a->count>=x1a->size ){ - /* Need to make the hash table bigger */ - int i,size; - struct s_x1 array; - array.size = size = x1a->size*2; - array.count = x1a->count; - array.tbl = (x1node*)malloc( - (sizeof(x1node) + sizeof(x1node*))*size ); - if( array.tbl==0 ) return 0; /* Fail due to malloc failure */ - array.ht = (x1node**)&(array.tbl[size]); - for(i=0; icount; i++){ - x1node *oldnp, *newnp; - oldnp = &(x1a->tbl[i]); - h = strhash(oldnp->data) & (size-1); - newnp = &(array.tbl[i]); - if( array.ht[h] ) array.ht[h]->from = &(newnp->next); - newnp->next = array.ht[h]; - newnp->data = oldnp->data; - newnp->from = &(array.ht[h]); - array.ht[h] = newnp; - } - free(x1a->tbl); - *x1a = array; - } - /* Insert the new data */ - h = ph & (x1a->size-1); - np = &(x1a->tbl[x1a->count++]); - np->data = data; - if( x1a->ht[h] ) x1a->ht[h]->from = &(np->next); - np->next = x1a->ht[h]; - x1a->ht[h] = np; - np->from = &(x1a->ht[h]); - return 1; -} - -/* Return a pointer to data assigned to the given key. Return NULL -** if no such key. */ -char *Strsafe_find(key) -char *key; -{ - int h; - x1node *np; - - if( x1a==0 ) return 0; - h = strhash(key) & (x1a->size-1); - np = x1a->ht[h]; - while( np ){ - if( strcmp(np->data,key)==0 ) break; - np = np->next; - } - return np ? np->data : 0; -} - -/* Return a pointer to the (terminal or nonterminal) symbol "x". -** Create a new symbol if this is the first time "x" has been seen. -*/ -struct symbol *Symbol_new(x) -char *x; -{ - struct symbol *sp; - - sp = Symbol_find(x); - if( sp==0 ){ - sp = (struct symbol *)calloc(1, sizeof(struct symbol) ); - MemoryCheck(sp); - sp->name = Strsafe(x); - sp->type = isupper(*x) ? TERMINAL : NONTERMINAL; - sp->rule = 0; - sp->fallback = 0; - sp->prec = -1; - sp->assoc = UNK; - sp->firstset = 0; - sp->lambda = LEMON_FALSE; - sp->destructor = 0; - sp->destLineno = 0; - sp->datatype = 0; - sp->useCnt = 0; - Symbol_insert(sp,sp->name); - } - sp->useCnt++; - return sp; -} - -/* Compare two symbols for working purposes -** -** Symbols that begin with upper case letters (terminals or tokens) -** must sort before symbols that begin with lower case letters -** (non-terminals). Other than that, the order does not matter. -** -** We find experimentally that leaving the symbols in their original -** order (the order they appeared in the grammar file) gives the -** smallest parser tables in SQLite. -*/ -int Symbolcmpp(struct symbol **a, struct symbol **b){ - int i1 = (**a).index + 10000000*((**a).name[0]>'Z'); - int i2 = (**b).index + 10000000*((**b).name[0]>'Z'); - return i1-i2; -} - -/* There is one instance of the following structure for each -** associative array of type "x2". -*/ -struct s_x2 { - int size; /* The number of available slots. */ - /* Must be a power of 2 greater than or */ - /* equal to 1 */ - int count; /* Number of currently slots filled */ - struct s_x2node *tbl; /* The data stored here */ - struct s_x2node **ht; /* Hash table for lookups */ -}; - -/* There is one instance of this structure for every data element -** in an associative array of type "x2". -*/ -typedef struct s_x2node { - struct symbol *data; /* The data */ - char *key; /* The key */ - struct s_x2node *next; /* Next entry with the same hash */ - struct s_x2node **from; /* Previous link */ -} x2node; - -/* There is only one instance of the array, which is the following */ -static struct s_x2 *x2a; - -/* Allocate a new associative array */ -void Symbol_init(){ - if( x2a ) return; - x2a = (struct s_x2*)malloc( sizeof(struct s_x2) ); - if( x2a ){ - x2a->size = 128; - x2a->count = 0; - x2a->tbl = (x2node*)malloc( - (sizeof(x2node) + sizeof(x2node*))*128 ); - if( x2a->tbl==0 ){ - free(x2a); - x2a = 0; - }else{ - int i; - x2a->ht = (x2node**)&(x2a->tbl[128]); - for(i=0; i<128; i++) x2a->ht[i] = 0; - } - } -} -/* Insert a new record into the array. Return TRUE if successful. -** Prior data with the same key is NOT overwritten */ -int Symbol_insert(data,key) -struct symbol *data; -char *key; -{ - x2node *np; - int h; - int ph; - - if( x2a==0 ) return 0; - ph = strhash(key); - h = ph & (x2a->size-1); - np = x2a->ht[h]; - while( np ){ - if( strcmp(np->key,key)==0 ){ - /* An existing entry with the same key is found. */ - /* Fail because overwrite is not allows. */ - return 0; - } - np = np->next; - } - if( x2a->count>=x2a->size ){ - /* Need to make the hash table bigger */ - int i,size; - struct s_x2 array; - array.size = size = x2a->size*2; - array.count = x2a->count; - array.tbl = (x2node*)malloc( - (sizeof(x2node) + sizeof(x2node*))*size ); - if( array.tbl==0 ) return 0; /* Fail due to malloc failure */ - array.ht = (x2node**)&(array.tbl[size]); - for(i=0; icount; i++){ - x2node *oldnp, *newnp; - oldnp = &(x2a->tbl[i]); - h = strhash(oldnp->key) & (size-1); - newnp = &(array.tbl[i]); - if( array.ht[h] ) array.ht[h]->from = &(newnp->next); - newnp->next = array.ht[h]; - newnp->key = oldnp->key; - newnp->data = oldnp->data; - newnp->from = &(array.ht[h]); - array.ht[h] = newnp; - } - free(x2a->tbl); - *x2a = array; - } - /* Insert the new data */ - h = ph & (x2a->size-1); - np = &(x2a->tbl[x2a->count++]); - np->key = key; - np->data = data; - if( x2a->ht[h] ) x2a->ht[h]->from = &(np->next); - np->next = x2a->ht[h]; - x2a->ht[h] = np; - np->from = &(x2a->ht[h]); - return 1; -} - -/* Return a pointer to data assigned to the given key. Return NULL -** if no such key. */ -struct symbol *Symbol_find(key) -char *key; -{ - int h; - x2node *np; - - if( x2a==0 ) return 0; - h = strhash(key) & (x2a->size-1); - np = x2a->ht[h]; - while( np ){ - if( strcmp(np->key,key)==0 ) break; - np = np->next; - } - return np ? np->data : 0; -} - -/* Return the n-th data. Return NULL if n is out of range. */ -struct symbol *Symbol_Nth(n) -int n; -{ - struct symbol *data; - if( x2a && n>0 && n<=x2a->count ){ - data = x2a->tbl[n-1].data; - }else{ - data = 0; - } - return data; -} - -/* Return the size of the array */ -int Symbol_count() -{ - return x2a ? x2a->count : 0; -} - -/* Return an array of pointers to all data in the table. -** The array is obtained from malloc. Return NULL if memory allocation -** problems, or if the array is empty. */ -struct symbol **Symbol_arrayof() -{ - struct symbol **array; - int i,size; - if( x2a==0 ) return 0; - size = x2a->count; - array = (struct symbol **)calloc(size, sizeof(struct symbol *)); - if( array ){ - for(i=0; itbl[i].data; - } - return array; -} - -/* Compare two configurations */ -int Configcmp(a,b) -struct config *a; -struct config *b; -{ - int x; - x = a->rp->index - b->rp->index; - if( x==0 ) x = a->dot - b->dot; - return x; -} - -/* Compare two states */ -PRIVATE int statecmp(a,b) -struct config *a; -struct config *b; -{ - int rc; - for(rc=0; rc==0 && a && b; a=a->bp, b=b->bp){ - rc = a->rp->index - b->rp->index; - if( rc==0 ) rc = a->dot - b->dot; - } - if( rc==0 ){ - if( a ) rc = 1; - if( b ) rc = -1; - } - return rc; -} - -/* Hash a state */ -PRIVATE int statehash(a) -struct config *a; -{ - int h=0; - while( a ){ - h = h*571 + a->rp->index*37 + a->dot; - a = a->bp; - } - return h; -} - -/* Allocate a new state structure */ -struct state *State_new() -{ - struct state *new; - new = (struct state *)calloc(1, sizeof(struct state) ); - MemoryCheck(new); - return new; -} - -/* There is one instance of the following structure for each -** associative array of type "x3". -*/ -struct s_x3 { - int size; /* The number of available slots. */ - /* Must be a power of 2 greater than or */ - /* equal to 1 */ - int count; /* Number of currently slots filled */ - struct s_x3node *tbl; /* The data stored here */ - struct s_x3node **ht; /* Hash table for lookups */ -}; - -/* There is one instance of this structure for every data element -** in an associative array of type "x3". -*/ -typedef struct s_x3node { - struct state *data; /* The data */ - struct config *key; /* The key */ - struct s_x3node *next; /* Next entry with the same hash */ - struct s_x3node **from; /* Previous link */ -} x3node; - -/* There is only one instance of the array, which is the following */ -static struct s_x3 *x3a; - -/* Allocate a new associative array */ -void State_init(){ - if( x3a ) return; - x3a = (struct s_x3*)malloc( sizeof(struct s_x3) ); - if( x3a ){ - x3a->size = 128; - x3a->count = 0; - x3a->tbl = (x3node*)malloc( - (sizeof(x3node) + sizeof(x3node*))*128 ); - if( x3a->tbl==0 ){ - free(x3a); - x3a = 0; - }else{ - int i; - x3a->ht = (x3node**)&(x3a->tbl[128]); - for(i=0; i<128; i++) x3a->ht[i] = 0; - } - } -} -/* Insert a new record into the array. Return TRUE if successful. -** Prior data with the same key is NOT overwritten */ -int State_insert(data,key) -struct state *data; -struct config *key; -{ - x3node *np; - int h; - int ph; - - if( x3a==0 ) return 0; - ph = statehash(key); - h = ph & (x3a->size-1); - np = x3a->ht[h]; - while( np ){ - if( statecmp(np->key,key)==0 ){ - /* An existing entry with the same key is found. */ - /* Fail because overwrite is not allows. */ - return 0; - } - np = np->next; - } - if( x3a->count>=x3a->size ){ - /* Need to make the hash table bigger */ - int i,size; - struct s_x3 array; - array.size = size = x3a->size*2; - array.count = x3a->count; - array.tbl = (x3node*)malloc( - (sizeof(x3node) + sizeof(x3node*))*size ); - if( array.tbl==0 ) return 0; /* Fail due to malloc failure */ - array.ht = (x3node**)&(array.tbl[size]); - for(i=0; icount; i++){ - x3node *oldnp, *newnp; - oldnp = &(x3a->tbl[i]); - h = statehash(oldnp->key) & (size-1); - newnp = &(array.tbl[i]); - if( array.ht[h] ) array.ht[h]->from = &(newnp->next); - newnp->next = array.ht[h]; - newnp->key = oldnp->key; - newnp->data = oldnp->data; - newnp->from = &(array.ht[h]); - array.ht[h] = newnp; - } - free(x3a->tbl); - *x3a = array; - } - /* Insert the new data */ - h = ph & (x3a->size-1); - np = &(x3a->tbl[x3a->count++]); - np->key = key; - np->data = data; - if( x3a->ht[h] ) x3a->ht[h]->from = &(np->next); - np->next = x3a->ht[h]; - x3a->ht[h] = np; - np->from = &(x3a->ht[h]); - return 1; -} - -/* Return a pointer to data assigned to the given key. Return NULL -** if no such key. */ -struct state *State_find(key) -struct config *key; -{ - int h; - x3node *np; - - if( x3a==0 ) return 0; - h = statehash(key) & (x3a->size-1); - np = x3a->ht[h]; - while( np ){ - if( statecmp(np->key,key)==0 ) break; - np = np->next; - } - return np ? np->data : 0; -} - -/* Return an array of pointers to all data in the table. -** The array is obtained from malloc. Return NULL if memory allocation -** problems, or if the array is empty. */ -struct state **State_arrayof() -{ - struct state **array; - int i,size; - if( x3a==0 ) return 0; - size = x3a->count; - array = (struct state **)malloc( sizeof(struct state *)*size ); - if( array ){ - for(i=0; itbl[i].data; - } - return array; -} - -/* Hash a configuration */ -PRIVATE int confighash(a) -struct config *a; -{ - int h=0; - h = h*571 + a->rp->index*37 + a->dot; - return h; -} - -/* There is one instance of the following structure for each -** associative array of type "x4". -*/ -struct s_x4 { - int size; /* The number of available slots. */ - /* Must be a power of 2 greater than or */ - /* equal to 1 */ - int count; /* Number of currently slots filled */ - struct s_x4node *tbl; /* The data stored here */ - struct s_x4node **ht; /* Hash table for lookups */ -}; - -/* There is one instance of this structure for every data element -** in an associative array of type "x4". -*/ -typedef struct s_x4node { - struct config *data; /* The data */ - struct s_x4node *next; /* Next entry with the same hash */ - struct s_x4node **from; /* Previous link */ -} x4node; - -/* There is only one instance of the array, which is the following */ -static struct s_x4 *x4a; - -/* Allocate a new associative array */ -void Configtable_init(){ - if( x4a ) return; - x4a = (struct s_x4*)malloc( sizeof(struct s_x4) ); - if( x4a ){ - x4a->size = 64; - x4a->count = 0; - x4a->tbl = (x4node*)malloc( - (sizeof(x4node) + sizeof(x4node*))*64 ); - if( x4a->tbl==0 ){ - free(x4a); - x4a = 0; - }else{ - int i; - x4a->ht = (x4node**)&(x4a->tbl[64]); - for(i=0; i<64; i++) x4a->ht[i] = 0; - } - } -} -/* Insert a new record into the array. Return TRUE if successful. -** Prior data with the same key is NOT overwritten */ -int Configtable_insert(data) -struct config *data; -{ - x4node *np; - int h; - int ph; - - if( x4a==0 ) return 0; - ph = confighash(data); - h = ph & (x4a->size-1); - np = x4a->ht[h]; - while( np ){ - if( Configcmp(np->data,data)==0 ){ - /* An existing entry with the same key is found. */ - /* Fail because overwrite is not allows. */ - return 0; - } - np = np->next; - } - if( x4a->count>=x4a->size ){ - /* Need to make the hash table bigger */ - int i,size; - struct s_x4 array; - array.size = size = x4a->size*2; - array.count = x4a->count; - array.tbl = (x4node*)malloc( - (sizeof(x4node) + sizeof(x4node*))*size ); - if( array.tbl==0 ) return 0; /* Fail due to malloc failure */ - array.ht = (x4node**)&(array.tbl[size]); - for(i=0; icount; i++){ - x4node *oldnp, *newnp; - oldnp = &(x4a->tbl[i]); - h = confighash(oldnp->data) & (size-1); - newnp = &(array.tbl[i]); - if( array.ht[h] ) array.ht[h]->from = &(newnp->next); - newnp->next = array.ht[h]; - newnp->data = oldnp->data; - newnp->from = &(array.ht[h]); - array.ht[h] = newnp; - } - free(x4a->tbl); - *x4a = array; - } - /* Insert the new data */ - h = ph & (x4a->size-1); - np = &(x4a->tbl[x4a->count++]); - np->data = data; - if( x4a->ht[h] ) x4a->ht[h]->from = &(np->next); - np->next = x4a->ht[h]; - x4a->ht[h] = np; - np->from = &(x4a->ht[h]); - return 1; -} - -/* Return a pointer to data assigned to the given key. Return NULL -** if no such key. */ -struct config *Configtable_find(key) -struct config *key; -{ - int h; - x4node *np; - - if( x4a==0 ) return 0; - h = confighash(key) & (x4a->size-1); - np = x4a->ht[h]; - while( np ){ - if( Configcmp(np->data,key)==0 ) break; - np = np->next; - } - return np ? np->data : 0; -} - -/* Remove all data from the table. Pass each data to the function "f" -** as it is removed. ("f" may be null to avoid this step.) */ -void Configtable_clear(f) -int(*f)(/* struct config * */); -{ - int i; - if( x4a==0 || x4a->count==0 ) return; - if( f ) for(i=0; icount; i++) (*f)(x4a->tbl[i].data); - for(i=0; isize; i++) x4a->ht[i] = 0; - x4a->count = 0; - return; -} diff --git a/src/spatialite/src/gaiageo/lemon/lemon_src/lempar.c b/src/spatialite/src/gaiageo/lemon/lemon_src/lempar.c deleted file mode 100644 index 774b875..0000000 --- a/src/spatialite/src/gaiageo/lemon/lemon_src/lempar.c +++ /dev/null @@ -1,842 +0,0 @@ -/* Driver template for the LEMON parser generator. -** The author disclaims copyright to this source code. -*/ -/* First off, code is included that follows the "include" declaration -** in the input grammar file. */ -#include -%% -/* Next is all token values, in a form suitable for use by makeheaders. -** This section will be null unless lemon is run with the -m switch. -*/ -/* -** These constants (all generated automatically by the parser generator) -** specify the various kinds of tokens (terminals) that the parser -** understands. -** -** Each symbol here is a terminal symbol in the grammar. -*/ -%% -/* Make sure the INTERFACE macro is defined. -*/ -#ifndef INTERFACE -# define INTERFACE 1 -#endif -/* The next thing included is series of defines which control -** various aspects of the generated parser. -** YYCODETYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 terminals -** and nonterminals. "int" is used otherwise. -** YYNOCODE is a number of type YYCODETYPE which corresponds -** to no legal terminal or nonterminal number. This -** number is used to fill in empty slots of the hash -** table. -** YYFALLBACK If defined, this indicates that one or more tokens -** have fall-back values which should be used if the -** original value of the token will not parse. -** YYACTIONTYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 rules and -** states combined. "int" is used otherwise. -** ParseTOKENTYPE is the data type used for minor tokens given -** directly to the parser from the tokenizer. -** YYMINORTYPE is the data type used for all minor tokens. -** This is typically a union of many types, one of -** which is ParseTOKENTYPE. The entry in the union -** for base tokens is called "yy0". -** YYSTACKDEPTH is the maximum depth of the parser's stack. If -** zero the stack is dynamically sized using realloc() -** ParseARG_SDECL A static variable declaration for the %extra_argument -** ParseARG_PDECL A parameter declaration for the %extra_argument -** ParseARG_STORE Code to store %extra_argument into yypParser -** ParseARG_FETCH Code to extract %extra_argument from yypParser -** YYNSTATE the combined number of states. -** YYNRULE the number of rules in the grammar -** YYERRORSYMBOL is the code number of the error symbol. If not -** defined, then do no error processing. -*/ -%% -#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) -#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) -#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) - -/* The yyzerominor constant is used to initialize instances of -** YYMINORTYPE objects to zero. */ -static const YYMINORTYPE yyzerominor = { 0 }; - -/* Define the yytestcase() macro to be a no-op if is not already defined -** otherwise. -** -** Applications can choose to define yytestcase() in the %include section -** to a macro that can assist in verifying code coverage. For production -** code the yytestcase() macro should be turned off. But it is useful -** for testing. -*/ -#ifndef yytestcase -# define yytestcase(X) -#endif - - -/* Next are the tables used to determine what action to take based on the -** current state and lookahead token. These tables are used to implement -** functions that take a state number and lookahead value and return an -** action integer. -** -** Suppose the action integer is N. Then the action is determined as -** follows -** -** 0 <= N < YYNSTATE Shift N. That is, push the lookahead -** token onto the stack and goto state N. -** -** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. -** -** N == YYNSTATE+YYNRULE A syntax error has occurred. -** -** N == YYNSTATE+YYNRULE+1 The parser accepts its input. -** -** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused -** slots in the yy_action[] table. -** -** The action table is constructed as a single large table named yy_action[]. -** Given state S and lookahead X, the action is computed as -** -** yy_action[ yy_shift_ofst[S] + X ] -** -** If the index value yy_shift_ofst[S]+X is out of range or if the value -** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] -** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table -** and that yy_default[S] should be used instead. -** -** The formula above is for computing the action when the lookahead is -** a terminal symbol. If the lookahead is a non-terminal (as occurs after -** a reduce action) then the yy_reduce_ofst[] array is used in place of -** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of -** YY_SHIFT_USE_DFLT. -** -** The following are the tables generated in this section: -** -** yy_action[] A single table containing all actions. -** yy_lookahead[] A table containing the lookahead for each entry in -** yy_action. Used to detect hash collisions. -** yy_shift_ofst[] For each state, the offset into yy_action for -** shifting terminals. -** yy_reduce_ofst[] For each state, the offset into yy_action for -** shifting non-terminals after a reduce. -** yy_default[] Default action for each state. -*/ -%% -#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0])) - -/* The next table maps tokens into fallback tokens. If a construct -** like the following: -** -** %fallback ID X Y Z. -** -** appears in the grammar, then ID becomes a fallback token for X, Y, -** and Z. Whenever one of the tokens X, Y, or Z is input to the parser -** but it does not parse, the type of the token is changed to ID and -** the parse is retried before an error is thrown. -*/ -#ifdef YYFALLBACK -static const YYCODETYPE yyFallback[] = { -%% -}; -#endif /* YYFALLBACK */ - -/* The following structure represents a single element of the -** parser's stack. Information stored includes: -** -** + The state number for the parser at this level of the stack. -** -** + The value of the token stored at this level of the stack. -** (In other words, the "major" token.) -** -** + The semantic value stored at this level of the stack. This is -** the information used by the action routines in the grammar. -** It is sometimes called the "minor" token. -*/ -struct yyStackEntry { - YYACTIONTYPE stateno; /* The state-number */ - YYCODETYPE major; /* The major token value. This is the code - ** number for the token at this stack level */ - YYMINORTYPE minor; /* The user-supplied minor token value. This - ** is the value of the token */ -}; -typedef struct yyStackEntry yyStackEntry; - -/* The state of the parser is completely contained in an instance of -** the following structure */ -struct yyParser { - int yyidx; /* Index of top element in stack */ -#ifdef YYTRACKMAXSTACKDEPTH - int yyidxMax; /* Maximum value of yyidx */ -#endif - int yyerrcnt; /* Shifts left before out of the error */ - ParseARG_SDECL /* A place to hold %extra_argument */ -#if YYSTACKDEPTH<=0 - int yystksz; /* Current side of the stack */ - yyStackEntry *yystack; /* The parser's stack */ -#else - yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ -#endif -}; -typedef struct yyParser yyParser; - -#ifndef NDEBUG -#include -static FILE *yyTraceFILE = 0; -static char *yyTracePrompt = 0; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* -** Turn parser tracing on by giving a stream to which to write the trace -** and a prompt to preface each trace message. Tracing is turned off -** by making either argument NULL -** -** Inputs: -**
    -**
  • A FILE* to which trace output should be written. -** If NULL, then tracing is turned off. -**
  • A prefix string written at the beginning of every -** line of trace output. If NULL, then tracing is -** turned off. -**
-** -** Outputs: -** None. -*/ -void ParseTrace(FILE *TraceFILE, char *zTracePrompt){ - yyTraceFILE = TraceFILE; - yyTracePrompt = zTracePrompt; - if( yyTraceFILE==0 ) yyTracePrompt = 0; - else if( yyTracePrompt==0 ) yyTraceFILE = 0; -} -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing shifts, the names of all terminals and nonterminals -** are required. The following table supplies these names */ -static const char *const yyTokenName[] = { -%% -}; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing reduce actions, the names of all rules are required. -*/ -static const char *const yyRuleName[] = { -%% -}; -#endif /* NDEBUG */ - - -#if YYSTACKDEPTH<=0 -/* -** Try to increase the size of the parser stack. -*/ -static void yyGrowStack(yyParser *p){ - int newSize; - yyStackEntry *pNew; - - newSize = p->yystksz*2 + 100; - pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); - if( pNew ){ - p->yystack = pNew; - p->yystksz = newSize; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack grows to %d entries!\n", - yyTracePrompt, p->yystksz); - } -#endif - } -} -#endif - -/* -** This function allocates a new parser. -** The only argument is a pointer to a function which works like -** malloc. -** -** Inputs: -** A pointer to the function used to allocate memory. -** -** Outputs: -** A pointer to a parser. This pointer is used in subsequent calls -** to Parse and ParseFree. -*/ -void *ParseAlloc(void *(*mallocProc)(size_t)){ - yyParser *pParser; - pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) ); - if( pParser ){ - pParser->yyidx = -1; -#ifdef YYTRACKMAXSTACKDEPTH - pParser->yyidxMax = 0; -#endif -#if YYSTACKDEPTH<=0 - pParser->yystack = NULL; - pParser->yystksz = 0; - yyGrowStack(pParser); -#endif - } - return pParser; -} - -/* The following function deletes the value associated with a -** symbol. The symbol can be either a terminal or nonterminal. -** "yymajor" is the symbol code, and "yypminor" is a pointer to -** the value. -*/ -static void yy_destructor( - yyParser *yypParser, /* The parser */ - YYCODETYPE yymajor, /* Type code for object to destroy */ - YYMINORTYPE *yypminor /* The object to be destroyed */ -){ - ParseARG_FETCH; - switch( yymajor ){ - /* Here is inserted the actions which take place when a - ** terminal or non-terminal is destroyed. This can happen - ** when the symbol is popped from the stack during a - ** reduce or during error processing or when a parser is - ** being destroyed before it is finished parsing. - ** - ** Note: during a reduce, the only symbols destroyed are those - ** which appear on the RHS of the rule, but which are not used - ** inside the C code. - */ -%% - default: break; /* If no destructor action specified: do nothing */ - } -} - -/* -** Pop the parser's stack once. -** -** If there is a destructor routine associated with the token which -** is popped from the stack, then call it. -** -** Return the major token number for the symbol popped. -*/ -static int yy_pop_parser_stack(yyParser *pParser){ - YYCODETYPE yymajor; - yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; - - if( pParser->yyidx<0 ) return 0; -#ifndef NDEBUG - if( yyTraceFILE && pParser->yyidx>=0 ){ - fprintf(yyTraceFILE,"%sPopping %s\n", - yyTracePrompt, - yyTokenName[yytos->major]); - } -#endif - yymajor = yytos->major; - yy_destructor(pParser, yymajor, &yytos->minor); - pParser->yyidx--; - return yymajor; -} - -/* -** Deallocate and destroy a parser. Destructors are all called for -** all stack elements before shutting the parser down. -** -** Inputs: -**
    -**
  • A pointer to the parser. This should be a pointer -** obtained from ParseAlloc. -**
  • A pointer to a function used to reclaim memory obtained -** from malloc. -**
-*/ -void ParseFree( - void *p, /* The parser to be deleted */ - void (*freeProc)(void*) /* Function used to reclaim memory */ -){ - yyParser *pParser = (yyParser*)p; - if( pParser==0 ) return; - while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser); -#if YYSTACKDEPTH<=0 - free(pParser->yystack); -#endif - (*freeProc)((void*)pParser); -} - -/* -** Return the peak depth of the stack for a parser. -*/ -#ifdef YYTRACKMAXSTACKDEPTH -int ParseStackPeak(void *p){ - yyParser *pParser = (yyParser*)p; - return pParser->yyidxMax; -} -#endif - -/* -** Find the appropriate action for a parser given the terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_shift_action( - yyParser *pParser, /* The parser */ - YYCODETYPE iLookAhead /* The look-ahead token */ -){ - int i; - int stateno = pParser->yystack[pParser->yyidx].stateno; - - if( stateno>YY_SHIFT_MAX || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){ - return yy_default[stateno]; - } - assert( iLookAhead!=YYNOCODE ); - i += iLookAhead; - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ - if( iLookAhead>0 ){ -#ifdef YYFALLBACK - YYCODETYPE iFallback; /* Fallback token */ - if( iLookAhead %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); - } -#endif - return yy_find_shift_action(pParser, iFallback); - } -#endif -#ifdef YYWILDCARD - { - int j = i - iLookAhead + YYWILDCARD; - if( j>=0 && j %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); - } -#endif /* NDEBUG */ - return yy_action[j]; - } - } -#endif /* YYWILDCARD */ - } - return yy_default[stateno]; - }else{ - return yy_action[i]; - } -} - -/* -** Find the appropriate action for a parser given the non-terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_reduce_action( - int stateno, /* Current state number */ - YYCODETYPE iLookAhead /* The look-ahead token */ -){ - int i; -#ifdef YYERRORSYMBOL - if( stateno>YY_REDUCE_MAX ){ - return yy_default[stateno]; - } -#else - assert( stateno<=YY_REDUCE_MAX ); -#endif - i = yy_reduce_ofst[stateno]; - assert( i!=YY_REDUCE_USE_DFLT ); - assert( iLookAhead!=YYNOCODE ); - i += iLookAhead; -#ifdef YYERRORSYMBOL - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ - return yy_default[stateno]; - } -#else - assert( i>=0 && iyyidx--; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will execute if the parser - ** stack every overflows */ -%% - ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ -} - -/* -** Perform a shift action. -*/ -static void yy_shift( - yyParser *yypParser, /* The parser to be shifted */ - int yyNewState, /* The new state to shift in */ - int yyMajor, /* The major token to shift in */ - YYMINORTYPE *yypMinor /* Pointer to the minor token to shift in */ -){ - yyStackEntry *yytos; - yypParser->yyidx++; -#ifdef YYTRACKMAXSTACKDEPTH - if( yypParser->yyidx>yypParser->yyidxMax ){ - yypParser->yyidxMax = yypParser->yyidx; - } -#endif -#if YYSTACKDEPTH>0 - if( yypParser->yyidx>=YYSTACKDEPTH ){ - yyStackOverflow(yypParser, yypMinor); - return; - } -#else - if( yypParser->yyidx>=yypParser->yystksz ){ - yyGrowStack(yypParser); - if( yypParser->yyidx>=yypParser->yystksz ){ - yyStackOverflow(yypParser, yypMinor); - return; - } - } -#endif - yytos = &yypParser->yystack[yypParser->yyidx]; - yytos->stateno = (YYACTIONTYPE)yyNewState; - yytos->major = (YYCODETYPE)yyMajor; - yytos->minor = *yypMinor; -#ifndef NDEBUG - if( yyTraceFILE && yypParser->yyidx>0 ){ - int i; - fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState); - fprintf(yyTraceFILE,"%sStack:",yyTracePrompt); - for(i=1; i<=yypParser->yyidx; i++) - fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]); - fprintf(yyTraceFILE,"\n"); - } -#endif -} - -/* The following table contains information about every rule that -** is used during the reduce. -*/ -static const struct { - YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ - unsigned char nrhs; /* Number of right-hand side symbols in the rule */ -} yyRuleInfo[] = { -%% -}; - -static void yy_accept(yyParser*); /* Forward Declaration */ - -/* -** Perform a reduce action and the shift that must immediately -** follow the reduce. -*/ -static void yy_reduce( - yyParser *yypParser, /* The parser */ - int yyruleno /* Number of the rule by which to reduce */ -){ - int yygoto; /* The next state */ - int yyact; /* The next action */ - YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ - yyStackEntry *yymsp; /* The top of the parser's stack */ - int yysize; /* Amount to pop the stack */ - ParseARG_FETCH; - yymsp = &yypParser->yystack[yypParser->yyidx]; -#ifndef NDEBUG - if( yyTraceFILE && yyruleno>=0 - && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ - fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt, - yyRuleName[yyruleno]); - } -#endif /* NDEBUG */ - - /* Silence complaints from purify about yygotominor being uninitialized - ** in some cases when it is copied into the stack after the following - ** switch. yygotominor is uninitialized when a rule reduces that does - ** not set the value of its left-hand side nonterminal. Leaving the - ** value of the nonterminal uninitialized is utterly harmless as long - ** as the value is never used. So really the only thing this code - ** accomplishes is to quieten purify. - ** - ** 2007-01-16: The wireshark project (www.wireshark.org) reports that - ** without this code, their parser segfaults. I'm not sure what there - ** parser is doing to make this happen. This is the second bug report - ** from wireshark this week. Clearly they are stressing Lemon in ways - ** that it has not been previously stressed... (SQLite ticket #2172) - */ - /*memset(&yygotominor, 0, sizeof(yygotominor));*/ - yygotominor = yyzerominor; - - - switch( yyruleno ){ - /* Beginning here are the reduction cases. A typical example - ** follows: - ** case 0: - ** #line - ** { ... } // User supplied code - ** #line - ** break; - */ -%% - }; - yygoto = yyRuleInfo[yyruleno].lhs; - yysize = yyRuleInfo[yyruleno].nrhs; - yypParser->yyidx -= yysize; - yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto); - if( yyact < YYNSTATE ){ -#ifdef NDEBUG - /* If we are not debugging and the reduce action popped at least - ** one element off the stack, then we can push the new element back - ** onto the stack here, and skip the stack overflow test in yy_shift(). - ** That gives a significant speed improvement. */ - if( yysize ){ - yypParser->yyidx++; - yymsp -= yysize-1; - yymsp->stateno = (YYACTIONTYPE)yyact; - yymsp->major = (YYCODETYPE)yygoto; - yymsp->minor = yygotominor; - }else -#endif - { - yy_shift(yypParser,yyact,yygoto,&yygotominor); - } - }else{ - assert( yyact == YYNSTATE + YYNRULE + 1 ); - yy_accept(yypParser); - } -} - -/* -** The following code executes when the parse fails -*/ -#ifndef YYNOERRORRECOVERY -static void yy_parse_failed( - yyParser *yypParser /* The parser */ -){ - ParseARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser fails */ -%% - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} -#endif /* YYNOERRORRECOVERY */ - -/* -** The following code executes when a syntax error first occurs. -*/ -static void yy_syntax_error( - yyParser *yypParser, /* The parser */ - int yymajor, /* The major type of the error token */ - YYMINORTYPE yyminor /* The minor type of the error token */ -){ - ParseARG_FETCH; -#define TOKEN (yyminor.yy0) -%% - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* -** The following is executed when the parser accepts -*/ -static void yy_accept( - yyParser *yypParser /* The parser */ -){ - ParseARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser accepts */ -%% - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* The main parser program. -** The first argument is a pointer to a structure obtained from -** "ParseAlloc" which describes the current state of the parser. -** The second argument is the major token number. The third is -** the minor token. The fourth optional argument is whatever the -** user wants (and specified in the grammar) and is available for -** use by the action routines. -** -** Inputs: -**
    -**
  • A pointer to the parser (an opaque structure.) -**
  • The major token number. -**
  • The minor token number. -**
  • An option argument of a grammar-specified type. -**
-** -** Outputs: -** None. -*/ -void Parse( - void *yyp, /* The parser */ - int yymajor, /* The major token code number */ - ParseTOKENTYPE yyminor /* The value for the token */ - ParseARG_PDECL /* Optional %extra_argument parameter */ -){ - YYMINORTYPE yyminorunion; - int yyact; /* The parser action. */ - int yyendofinput; /* True if we are at the end of input */ -#ifdef YYERRORSYMBOL - int yyerrorhit = 0; /* True if yymajor has invoked an error */ -#endif - yyParser *yypParser; /* The parser */ - - /* (re)initialize the parser, if necessary */ - yypParser = (yyParser*)yyp; - if( yypParser->yyidx<0 ){ -#if YYSTACKDEPTH<=0 - if( yypParser->yystksz <=0 ){ - /*memset(&yyminorunion, 0, sizeof(yyminorunion));*/ - yyminorunion = yyzerominor; - yyStackOverflow(yypParser, &yyminorunion); - return; - } -#endif - yypParser->yyidx = 0; - yypParser->yyerrcnt = -1; - yypParser->yystack[0].stateno = 0; - yypParser->yystack[0].major = 0; - } - yyminorunion.yy0 = yyminor; - yyendofinput = (yymajor==0); - ParseARG_STORE; - -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]); - } -#endif - - do{ - yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor); - if( yyactyyerrcnt--; - yymajor = YYNOCODE; - }else if( yyact < YYNSTATE + YYNRULE ){ - yy_reduce(yypParser,yyact-YYNSTATE); - }else{ - assert( yyact == YY_ERROR_ACTION ); -#ifdef YYERRORSYMBOL - int yymx; -#endif -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt); - } -#endif -#ifdef YYERRORSYMBOL - /* A syntax error has occurred. - ** The response to an error depends upon whether or not the - ** grammar defines an error token "ERROR". - ** - ** This is what we do if the grammar does define ERROR: - ** - ** * Call the %syntax_error function. - ** - ** * Begin popping the stack until we enter a state where - ** it is legal to shift the error symbol, then shift - ** the error symbol. - ** - ** * Set the error count to three. - ** - ** * Begin accepting and shifting new tokens. No new error - ** processing will occur until three tokens have been - ** shifted successfully. - ** - */ - if( yypParser->yyerrcnt<0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yymx = yypParser->yystack[yypParser->yyidx].major; - if( yymx==YYERRORSYMBOL || yyerrorhit ){ -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sDiscard input token %s\n", - yyTracePrompt,yyTokenName[yymajor]); - } -#endif - yy_destructor(yypParser, (YYCODETYPE)yymajor,&yyminorunion); - yymajor = YYNOCODE; - }else{ - while( - yypParser->yyidx >= 0 && - yymx != YYERRORSYMBOL && - (yyact = yy_find_reduce_action( - yypParser->yystack[yypParser->yyidx].stateno, - YYERRORSYMBOL)) >= YYNSTATE - ){ - yy_pop_parser_stack(yypParser); - } - if( yypParser->yyidx < 0 || yymajor==0 ){ - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - yy_parse_failed(yypParser); - yymajor = YYNOCODE; - }else if( yymx!=YYERRORSYMBOL ){ - YYMINORTYPE u2; - u2.YYERRSYMDT = 0; - yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2); - } - } - yypParser->yyerrcnt = 3; - yyerrorhit = 1; -#elif defined(YYNOERRORRECOVERY) - /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to - ** do any kind of error recovery. Instead, simply invoke the syntax - ** error routine and continue going as if nothing had happened. - ** - ** Applications can set this macro (for example inside %include) if - ** they intend to abandon the parse upon the first syntax error seen. - */ - yy_syntax_error(yypParser,yymajor,yyminorunion); - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - yymajor = YYNOCODE; - -#else /* YYERRORSYMBOL is not defined */ - /* This is what we do if the grammar does not define ERROR: - ** - ** * Report an error message, and throw away the input token. - ** - ** * If the input token is $, then fail the parse. - ** - ** As before, subsequent error messages are suppressed until - ** three input tokens have been successfully shifted. - */ - if( yypParser->yyerrcnt<=0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yypParser->yyerrcnt = 3; - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - if( yyendofinput ){ - yy_parse_failed(yypParser); - } - yymajor = YYNOCODE; -#endif - } - }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 ); - return; -} diff --git a/src/spatialite/src/gaiageo/lemon/vanuatuWkt.y b/src/spatialite/src/gaiageo/lemon/vanuatuWkt.y deleted file mode 100644 index e7a5916..0000000 --- a/src/spatialite/src/gaiageo/lemon/vanuatuWkt.y +++ /dev/null @@ -1,901 +0,0 @@ -/* - vanuatuWkt.y -- Vanuatu WKT parser - LEMON config - - version 2.4, 2010 April 2 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): -The Vanuatu Team - University of Toronto - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -/****************************************************************************** -** The following code was created by Team Vanuatu of The University of Toronto. - -Authors: -Ruppi Rana ruppi.rana@gmail.com -Dev Tanna dev.tanna@gmail.com -Elias Adum elias.adum@gmail.com -Benton Hui benton.hui@gmail.com -Abhayan Sundararajan abhayan@gmail.com -Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com -Nikola Banovic nikola.banovic@gmail.com -Yong Jian yong.jian@utoronto.ca - -Supervisor: -Greg Wilson gvwilson@cs.toronto.ca - -------------------------------------------------------------------------------- -*/ - -// Tokens are void pointers (so we can cast them to whatever we want) -%token_type {void *} - -// Output to stderr when stack overflows -%stack_overflow { - spatialite_e( "Giving up. Parser stack overflow\n"); -} - -// Increase this number if necessary -%stack_size 1000000 - -// Header files to be included in vanuatuWkt.c -%include { -} - -// Set the return value of gaiaParseWkt in the following pointer: -%extra_argument { struct vanuatu_data *p_data } - -// Invalid syntax (ie. no rules matched) -%syntax_error { -/* -** Sandro Furieri 2010 Apr 4 -** when the LEMON parser encounters an error -** then this global variable is set -*/ - p_data->vanuatu_parse_error = 1; - p_data->result = NULL; -} - - /* This is to terminate with a new line */ - main ::= in. - in ::= . - in ::= in state VANUATU_NEWLINE. - - state ::= program. - - /* - * program is the start node. All strings matched by this CFG must be one of - * geo_text (text describing a 2D geometry), - * geo_textz (text describing a 3D geometry), - * geo_textm (text describing a 2D geometry with a measure) - * geo_textzm (text describing a 3D geometry with a measure) - */ - -program ::= geo_text. -program ::= geo_textz. -program ::= geo_textm. -program ::= geo_textzm. - -// 2D geometries (no measure): -geo_text ::= point(P). { p_data->result = P; } // P is a geometry collection containing a point -geo_text ::= linestring(L). { p_data->result = L; } // L is a geometry collection containing a linestring -geo_text ::= polygon(P). { p_data->result = P; } // P is a geometry collection containing a polygon -geo_text ::= multipoint(M). { p_data->result = M; } // M is a geometry collection containing a multipoint -geo_text ::= multilinestring(M). { p_data->result = M; } // M is a geometry collection containing a multilinestring -geo_text ::= multipolygon(M). { p_data->result = M; } // M is a geometry collection containing a multipolygon -geo_text ::= geocoll(H). { p_data->result = H; } // H is a geometry collection created from user input - -// 3D geometries (no measure): -geo_textz ::= pointz(P). { p_data->result = P; } -geo_textz ::= linestringz(L). { p_data->result = L; } -geo_textz ::= polygonz(P). { p_data->result = P; } -geo_textz ::= multipointz(M). { p_data->result = M; } -geo_textz ::= multilinestringz(M). { p_data->result = M; } -geo_textz ::= multipolygonz(M). { p_data->result = M; } -geo_textz ::= geocollz(H). { p_data->result = H; } - -// 2D geometries (with a measure): -geo_textm ::= pointm(P). { p_data->result = P; } -geo_textm ::= linestringm(L). { p_data->result = L; } -geo_textm ::= polygonm(P). { p_data->result = P; } -geo_textm ::= multipointm(M). { p_data->result = M; } -geo_textm ::= multilinestringm(M). { p_data->result = M; } -geo_textm ::= multipolygonm(M). { p_data->result = M; } -geo_textm ::= geocollm(H). { p_data->result = H; } - -// 3D geometries (with a measure): -geo_textzm ::= pointzm(P). { p_data->result = P; } -geo_textzm ::= linestringzm(L). { p_data->result = L; } -geo_textzm ::= polygonzm(P). { p_data->result = P; } -geo_textzm ::= multipointzm(M). { p_data->result = M; } -geo_textzm ::= multilinestringzm(M). { p_data->result = M; } -geo_textzm ::= multipolygonzm(M). { p_data->result = M; } -geo_textzm ::= geocollzm(H). { p_data->result = H; } - - -// Syntax for a "point" object: -// The functions called build a geometry collection from a gaiaPointPtr -point(P) ::= VANUATU_POINT VANUATU_OPEN_BRACKET point_coordxy(Q) VANUATU_CLOSE_BRACKET. - { P = vanuatu_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } -pointm(P) ::= VANUATU_POINT_M VANUATU_OPEN_BRACKET point_coordxym(Q) VANUATU_CLOSE_BRACKET. - { P = vanuatu_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } -pointz(P) ::= VANUATU_POINT_Z VANUATU_OPEN_BRACKET point_coordxyz(Q) VANUATU_CLOSE_BRACKET. - { P = vanuatu_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } -pointzm(P) ::= VANUATU_POINT_ZM VANUATU_OPEN_BRACKET point_coordxyzm(Q) VANUATU_CLOSE_BRACKET. - { P = vanuatu_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } - -// Point coordinates in different dimensions: MultiPoint((pt),(pt)) -// Create the point by calling the proper function in SpatiaLite : -point_brkt_coordxy(P) ::= VANUATU_OPEN_BRACKET coord(X) coord(Y) VANUATU_CLOSE_BRACKET. - { P = (void *) vanuatu_point_xy( p_data, (double *)X, (double *)Y); } -point_brkt_coordxym(P) ::= VANUATU_OPEN_BRACKET coord(X) coord(Y) coord(M) VANUATU_CLOSE_BRACKET. - { P = (void *) vanuatu_point_xym( p_data, (double *)X, (double *)Y, (double *)M); } -point_brkt_coordxyz(P) ::= VANUATU_OPEN_BRACKET coord(X) coord(Y) coord(Z) VANUATU_CLOSE_BRACKET. - { P = (void *) vanuatu_point_xyz( p_data, (double *)X, (double *)Y, (double *)Z); } -point_brkt_coordxyzm(P) ::= VANUATU_OPEN_BRACKET coord(X) coord(Y) coord(Z) coord(M) VANUATU_CLOSE_BRACKET. - { P = (void *) vanuatu_point_xyzm( p_data, (double *)X, (double *)Y, (double *)Z, (double *)M); } - -// Point coordinates in different dimensions. -// Create the point by calling the proper function in SpatiaLite : -point_coordxy(P) ::= coord(X) coord(Y). - { P = (void *) vanuatu_point_xy( p_data, (double *)X, (double *)Y); } -point_coordxym(P) ::= coord(X) coord(Y) coord(M). - { P = (void *) vanuatu_point_xym( p_data, (double *)X, (double *)Y, (double *)M); } -point_coordxyz(P) ::= coord(X) coord(Y) coord(Z). - { P = (void *) vanuatu_point_xyz( p_data, (double *)X, (double *)Y, (double *)Z); } -point_coordxyzm(P) ::= coord(X) coord(Y) coord(Z) coord(M). - { P = (void *) vanuatu_point_xyzm( p_data, (double *)X, (double *)Y, (double *)Z, (double *)M); } - -// All coordinates are assumed to be doubles (guaranteed by the flex tokenizer). -coord(A) ::= VANUATU_NUM(B). { A = B; } - - -// Rules to match an infinite number of points: MultiPoint((pt), (pt)) -// Also links the generated gaiaPointPtrs together -extra_brkt_pointsxy(A) ::= . { A = NULL; } -extra_brkt_pointsxy(A) ::= VANUATU_COMMA point_brkt_coordxy(P) extra_brkt_pointsxy(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - -extra_brkt_pointsxym(A) ::= . { A = NULL; } -extra_brkt_pointsxym(A) ::= VANUATU_COMMA point_brkt_coordxym(P) extra_brkt_pointsxym(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - -extra_brkt_pointsxyz(A) ::= . { A = NULL; } -extra_brkt_pointsxyz(A) ::= VANUATU_COMMA point_brkt_coordxyz(P) extra_brkt_pointsxyz(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - -extra_brkt_pointsxyzm(A) ::= . { A = NULL; } -extra_brkt_pointsxyzm(A) ::= VANUATU_COMMA point_brkt_coordxyzm(P) extra_brkt_pointsxyzm(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - - -// Rules to match an infinite number of points: -// Also links the generated gaiaPointPtrs together -extra_pointsxy(A) ::= . { A = NULL; } -extra_pointsxy(A) ::= VANUATU_COMMA point_coordxy(P) extra_pointsxy(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - -extra_pointsxym(A) ::= . { A = NULL; } -extra_pointsxym(A) ::= VANUATU_COMMA point_coordxym(P) extra_pointsxym(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - -extra_pointsxyz(A) ::= . { A = NULL; } -extra_pointsxyz(A) ::= VANUATU_COMMA point_coordxyz(P) extra_pointsxyz(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - -extra_pointsxyzm(A) ::= . { A = NULL; } -extra_pointsxyzm(A) ::= VANUATU_COMMA point_coordxyzm(P) extra_pointsxyzm(B). - { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } - - -// Syntax for a "linestring" object: -// The functions called build a geometry collection from a gaiaLinestringPtr -linestring(L) ::= VANUATU_LINESTRING linestring_text(X). - { L = vanuatu_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } -linestringm(L) ::= VANUATU_LINESTRING_M linestring_textm(X). - { L = vanuatu_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } -linestringz(L) ::= VANUATU_LINESTRING_Z linestring_textz(X). - { L = vanuatu_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } -linestringzm(L) ::= VANUATU_LINESTRING_ZM linestring_textzm(X). - { L = vanuatu_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } - -// A valid linestring must have at least two vertices: -// The functions called build a gaiaLinestring from a linked list of points -linestring_text(L) ::= VANUATU_OPEN_BRACKET point_coordxy(P) VANUATU_COMMA point_coordxy(Q) extra_pointsxy(R) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - L = (void *) vanuatu_linestring_xy( p_data, (gaiaPointPtr)P); - } - -linestring_textm(L) ::= VANUATU_OPEN_BRACKET point_coordxym(P) VANUATU_COMMA point_coordxym(Q) extra_pointsxym(R) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - L = (void *) vanuatu_linestring_xym( p_data, (gaiaPointPtr)P); - } - -linestring_textz(L) ::= VANUATU_OPEN_BRACKET point_coordxyz(P) VANUATU_COMMA point_coordxyz(Q) extra_pointsxyz(R) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - L = (void *) vanuatu_linestring_xyz( p_data, (gaiaPointPtr)P); - } - -linestring_textzm(L) ::= VANUATU_OPEN_BRACKET point_coordxyzm(P) VANUATU_COMMA point_coordxyzm(Q) extra_pointsxyzm(R) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - L = (void *) vanuatu_linestring_xyzm( p_data, (gaiaPointPtr)P); - } - - -// Syntax for a "polygon" object: -// The functions called build a geometry collection from a gaiaPolygonPtr -polygon(P) ::= VANUATU_POLYGON polygon_text(X). - { P = vanuatu_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } -polygonm(P) ::= VANUATU_POLYGON_M polygon_textm(X). - { P = vanuatu_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } -polygonz(P) ::= VANUATU_POLYGON_Z polygon_textz(X). - { P = vanuatu_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } -polygonzm(P) ::= VANUATU_POLYGON_ZM polygon_textzm(X). - { P = vanuatu_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } - -// A valid polygon must have at least one ring: -// The functions called build a gaiaPolygonPtr from a linked list of gaiaRingPtrs -polygon_text(P) ::= VANUATU_OPEN_BRACKET ring(R) extra_rings(E) VANUATU_CLOSE_BRACKET. - { - ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; - P = (void *) vanuatu_polygon_xy( p_data, (gaiaRingPtr)R); - } - -polygon_textm(P) ::= VANUATU_OPEN_BRACKET ringm(R) extra_ringsm(E) VANUATU_CLOSE_BRACKET. - { - ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; - P = (void *) vanuatu_polygon_xym( p_data, (gaiaRingPtr)R); - } - -polygon_textz(P) ::= VANUATU_OPEN_BRACKET ringz(R) extra_ringsz(E) VANUATU_CLOSE_BRACKET. - { - ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; - P = (void *) vanuatu_polygon_xyz( p_data, (gaiaRingPtr)R); - } - -polygon_textzm(P) ::= VANUATU_OPEN_BRACKET ringzm(R) extra_ringszm(E) VANUATU_CLOSE_BRACKET. - { - ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; - P = (void *) vanuatu_polygon_xyzm( p_data, (gaiaRingPtr)R); - } - -// A valid ring must have at least 4 points -// The functions called build a gaiaRingPtr from a linked list of gaiaPointPtrs -ring(R) ::= VANUATU_OPEN_BRACKET point_coordxy(A) VANUATU_COMMA point_coordxy(B) VANUATU_COMMA point_coordxy(C) VANUATU_COMMA point_coordxy(D) extra_pointsxy(E) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; - ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; - ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; - ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; - R = (void *) vanuatu_ring_xy( p_data, (gaiaPointPtr)A); - } - -// To match more than one 2D ring: -extra_rings(R) ::= . { R = NULL; } -extra_rings(R) ::= VANUATU_COMMA ring(S) extra_rings(T). - { - ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; - R = S; - } - -ringm(R) ::= VANUATU_OPEN_BRACKET point_coordxym(A) VANUATU_COMMA point_coordxym(B) VANUATU_COMMA point_coordxym(C) VANUATU_COMMA point_coordxym(D) extra_pointsxym(E) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; - ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; - ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; - ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; - R = (void *) vanuatu_ring_xym( p_data, (gaiaPointPtr)A); - } - -// To match more than one 2D (with a measure) ring: -extra_ringsm(R) ::= . { R = NULL; } -extra_ringsm(R) ::= VANUATU_COMMA ringm(S) extra_ringsm(T). - { - ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; - R = S; - } - -ringz(R) ::= VANUATU_OPEN_BRACKET point_coordxyz(A) VANUATU_COMMA point_coordxyz(B) VANUATU_COMMA point_coordxyz(C) VANUATU_COMMA point_coordxyz(D) extra_pointsxyz(E) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; - ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; - ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; - ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; - R = (void *) vanuatu_ring_xyz( p_data, (gaiaPointPtr)A); - } - -// To match more than one 3D ring: -extra_ringsz(R) ::= . { R = NULL; } -extra_ringsz(R) ::= VANUATU_COMMA ringz(S) extra_ringsz(T). - { - ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; - R = S; - } - -ringzm(R) ::= VANUATU_OPEN_BRACKET point_coordxyzm(A) VANUATU_COMMA point_coordxyzm(B) VANUATU_COMMA point_coordxyzm(C) VANUATU_COMMA point_coordxyzm(D) extra_pointsxyzm(E) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; - ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; - ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; - ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; - R = (void *) vanuatu_ring_xyzm( p_data, (gaiaPointPtr)A); - } - -// To match more than one 3D (with a measure) ring: -extra_ringszm(R) ::= . { R = NULL; } -extra_ringszm(R) ::= VANUATU_COMMA ringzm(S) extra_ringszm(T). - { - ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; - R = S; - } - -// Syntax for a "multipoint" object: -// X in the following lines is a geometry collection containing a multipoint -multipoint(M) ::= VANUATU_MULTIPOINT multipoint_text(X). { M = X; } -multipointm(M) ::= VANUATU_MULTIPOINT_M multipoint_textm(X). { M = X; } -multipointz(M) ::= VANUATU_MULTIPOINT_Z multipoint_textz(X). { M = X; } -multipointzm(M) ::= VANUATU_MULTIPOINT_ZM multipoint_textzm(X). { M = X; } - -// Multipoints can contain any number of points (but at least one): -// The functions called build a geometry collection containing a multipoint -multipoint_text(M) ::= VANUATU_OPEN_BRACKET point_coordxy(P) extra_pointsxy(Q) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) vanuatu_multipoint_xy( p_data, (gaiaPointPtr)P); - } -multipoint_textm(M) ::= VANUATU_OPEN_BRACKET point_coordxym(P) extra_pointsxym(Q) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) vanuatu_multipoint_xym( p_data, (gaiaPointPtr)P); - } -multipoint_textz(M) ::= VANUATU_OPEN_BRACKET point_coordxyz(P) extra_pointsxyz(Q) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) vanuatu_multipoint_xyz( p_data, (gaiaPointPtr)P); - } -multipoint_textzm(M) ::= VANUATU_OPEN_BRACKET point_coordxyzm(P) extra_pointsxyzm(Q) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) vanuatu_multipoint_xyzm( p_data, (gaiaPointPtr)P); - } -multipoint_text(M) ::= VANUATU_OPEN_BRACKET point_brkt_coordxy(P) extra_brkt_pointsxy(Q) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) vanuatu_multipoint_xy( p_data, (gaiaPointPtr)P); - } -multipoint_textm(M) ::= VANUATU_OPEN_BRACKET point_brkt_coordxym(P) extra_brkt_pointsxym(Q) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) vanuatu_multipoint_xym( p_data, (gaiaPointPtr)P); - } -multipoint_textz(M) ::= VANUATU_OPEN_BRACKET point_brkt_coordxyz(P) extra_brkt_pointsxyz(Q) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) vanuatu_multipoint_xyz( p_data, (gaiaPointPtr)P); - } -multipoint_textzm(M) ::= VANUATU_OPEN_BRACKET point_brkt_coordxyzm(P) extra_brkt_pointsxyzm(Q) VANUATU_CLOSE_BRACKET. - { - ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; - M = (void *) vanuatu_multipoint_xyzm( p_data, (gaiaPointPtr)P); - } - - -// Syntax for a "multilinestring" object: -// X in the following lines refers to a geometry collection containing a multilinestring -multilinestring(M) ::= VANUATU_MULTILINESTRING multilinestring_text(X). { M = X; } -multilinestringm(M) ::= VANUATU_MULTILINESTRING_M multilinestring_textm(X). { M = X; } -multilinestringz(M) ::= VANUATU_MULTILINESTRING_Z multilinestring_textz(X). { M = X; } -multilinestringzm(M) ::= VANUATU_MULTILINESTRING_ZM multilinestring_textzm(X). { M = X; } - -// Multilinestrings can contain any number of linestrings (but at least one): -// The functions called build a geometry collection containing a multilinestring -multilinestring_text(M) ::= VANUATU_OPEN_BRACKET linestring_text(L) multilinestring_text2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; - M = (void *) vanuatu_multilinestring_xy( p_data, (gaiaLinestringPtr)L); - } - -// Extra linestrings -multilinestring_text2(X) ::= . { X = NULL; } -multilinestring_text2(X) ::= VANUATU_COMMA linestring_text(L) multilinestring_text2(Y). - { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } - -multilinestring_textm(M) ::= VANUATU_OPEN_BRACKET linestring_textm(L) multilinestring_textm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; - M = (void *) vanuatu_multilinestring_xym( p_data, (gaiaLinestringPtr)L); - } - -multilinestring_textm2(X) ::= . { X = NULL; } -multilinestring_textm2(X) ::= VANUATU_COMMA linestring_textm(L) multilinestring_textm2(Y). - { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } - -multilinestring_textz(M) ::= VANUATU_OPEN_BRACKET linestring_textz(L) multilinestring_textz2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; - M = (void *) vanuatu_multilinestring_xyz( p_data, (gaiaLinestringPtr)L); - } - -multilinestring_textz2(X) ::= . { X = NULL; } -multilinestring_textz2(X) ::= VANUATU_COMMA linestring_textz(L) multilinestring_textz2(Y). - { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } - -multilinestring_textzm(M) ::= VANUATU_OPEN_BRACKET linestring_textzm(L) multilinestring_textzm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; - M = (void *) vanuatu_multilinestring_xyzm( p_data, (gaiaLinestringPtr)L); - } - -multilinestring_textzm2(X) ::= . { X = NULL; } -multilinestring_textzm2(X) ::= VANUATU_COMMA linestring_textzm(L) multilinestring_textzm2(Y). - { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } - - -// Syntax for a "multipolygon" object -// X in the following lines refers to a geometry collection containing a multipolygon -multipolygon(M) ::= VANUATU_MULTIPOLYGON multipolygon_text(X). { M = X; } -multipolygonm(M) ::= VANUATU_MULTIPOLYGON_M multipolygon_textm(X). { M = X; } -multipolygonz(M) ::= VANUATU_MULTIPOLYGON_Z multipolygon_textz(X). { M = X; } -multipolygonzm(M) ::= VANUATU_MULTIPOLYGON_ZM multipolygon_textzm(X). { M = X; } - -// Multipolygons can contain any number of polygons (but at least one): -// The functions called build a geometry collection containing a multipolygon -multipolygon_text(M) ::= VANUATU_OPEN_BRACKET polygon_text(P) multipolygon_text2(Q) VANUATU_CLOSE_BRACKET. - { - ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; - M = (void *) vanuatu_multipolygon_xy( p_data, (gaiaPolygonPtr)P); - } - -// Extra polygons -multipolygon_text2(Q) ::= . { Q = NULL; } -multipolygon_text2(A) ::= VANUATU_COMMA polygon_text(P) multipolygon_text2(B). - { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } - -multipolygon_textm(M) ::= VANUATU_OPEN_BRACKET polygon_textm(P) multipolygon_textm2(Q) VANUATU_CLOSE_BRACKET. - { - ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; - M = (void *) vanuatu_multipolygon_xym( p_data, (gaiaPolygonPtr)P); - } - -multipolygon_textm2(Q) ::= . { Q = NULL; } -multipolygon_textm2(A) ::= VANUATU_COMMA polygon_textm(P) multipolygon_textm2(B). - { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } - -multipolygon_textz(M) ::= VANUATU_OPEN_BRACKET polygon_textz(P) multipolygon_textz2(Q) VANUATU_CLOSE_BRACKET. - { - ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; - M = (void *) vanuatu_multipolygon_xyz( p_data, (gaiaPolygonPtr)P); - } - -multipolygon_textz2(Q) ::= . { Q = NULL; } -multipolygon_textz2(A) ::= VANUATU_COMMA polygon_textz(P) multipolygon_textz2(B). - { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } - -multipolygon_textzm(M) ::= VANUATU_OPEN_BRACKET polygon_textzm(P) multipolygon_textzm2(Q) VANUATU_CLOSE_BRACKET. - { - ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; - M = (void *) vanuatu_multipolygon_xyzm( p_data, (gaiaPolygonPtr)P); - } - -multipolygon_textzm2(Q) ::= . { Q = NULL; } -multipolygon_textzm2(A) ::= VANUATU_COMMA polygon_textzm(P) multipolygon_textzm2(B). - { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } - - -// Syntax for a "geometrycollection" object: -// X in the following lines refers to a geometry collection generated based on user input -geocoll(G) ::= VANUATU_GEOMETRYCOLLECTION geocoll_text(X). { G = X; } -geocollm(G) ::= VANUATU_GEOMETRYCOLLECTION_M geocoll_textm(X). { G = X; } -geocollz(G) ::= VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz(X). { G = X; } -geocollzm(G) ::= VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm(X). { G = X; } - -// Geometry collections can contain any number of points, linestrings, or polygons (but at least one): -geocoll_text(G) ::= VANUATU_OPEN_BRACKET point(P) geocoll_text2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_text(G) ::= VANUATU_OPEN_BRACKET linestring(L) geocoll_text2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_text(G) ::= VANUATU_OPEN_BRACKET polygon(P) geocoll_text2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_text(G) ::= VANUATU_OPEN_BRACKET multipoint(P) geocoll_text2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_text(G) ::= VANUATU_OPEN_BRACKET multilinestring(L) geocoll_text2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_text(G) ::= VANUATU_OPEN_BRACKET multipolygon(P) geocoll_text2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_text(G) ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION geocoll_text(C) geocoll_text2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)C); - } - -// Extra points, linestrings, or polygons -geocoll_text2(X) ::= . { X = NULL; } -geocoll_text2(X) ::= VANUATU_COMMA point(P) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_text2(X) ::= VANUATU_COMMA linestring(L) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_text2(X) ::= VANUATU_COMMA polygon(P) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_text2(X) ::= VANUATU_COMMA multipoint(P) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_text2(X) ::= VANUATU_COMMA multilinestring(L) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_text2(X) ::= VANUATU_COMMA multipolygon(P) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_text2(X) ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION geocoll_text(C) geocoll_text2(Y). - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; - X = C; - } - - -geocoll_textm(G) ::= VANUATU_OPEN_BRACKET pointm(P) geocoll_textm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textm(G) ::= VANUATU_OPEN_BRACKET linestringm(L) geocoll_textm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_textm(G) ::= VANUATU_OPEN_BRACKET polygonm(P) geocoll_textm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)P); - } -geocoll_textm(G) ::= VANUATU_OPEN_BRACKET multipointm(P) geocoll_textm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textm(G) ::= VANUATU_OPEN_BRACKET multilinestringm(L) geocoll_textm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_textm(G) ::= VANUATU_OPEN_BRACKET multipolygonm(P) geocoll_textm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textm(G) ::= -VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_M geocoll_textm(C) geocoll_textm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)C); - } - -geocoll_textm2(X) ::= . { X = NULL; } -geocoll_textm2(X) ::= VANUATU_COMMA pointm(P) geocoll_textm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textm2(X) ::= VANUATU_COMMA linestringm(L) geocoll_textm2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_textm2(X) ::= VANUATU_COMMA polygonm(P) geocoll_textm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textm2(X) ::= VANUATU_COMMA multipointm(P) geocoll_textm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textm2(X) ::= VANUATU_COMMA multilinestringm(L) geocoll_textm2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_textm2(X) ::= VANUATU_COMMA multipolygonm(P) geocoll_textm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textm2(X) ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_M geocoll_textm(C) geocoll_textm2(Y). - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; - X = C; - } - - -geocoll_textz(G) ::= VANUATU_OPEN_BRACKET pointz(P) geocoll_textz2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textz(G) ::= VANUATU_OPEN_BRACKET linestringz(L) geocoll_textz2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_textz(G) ::= VANUATU_OPEN_BRACKET polygonz(P) geocoll_textz2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textz(G) ::= VANUATU_OPEN_BRACKET multipointz(P) geocoll_textz2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textz(G) ::= VANUATU_OPEN_BRACKET multilinestringz(L) geocoll_textz2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_textz(G) ::= VANUATU_OPEN_BRACKET multipolygonz(P) geocoll_textz2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textz(G) ::= -VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz(C) geocoll_textz2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)C); - } - -geocoll_textz2(X) ::= . { X = NULL; } -geocoll_textz2(X) ::= VANUATU_COMMA pointz(P) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textz2(X) ::= VANUATU_COMMA linestringz(L) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_textz2(X) ::= VANUATU_COMMA polygonz(P) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textz2(X) ::= VANUATU_COMMA multipointz(P) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textz2(X) ::= VANUATU_COMMA multilinestringz(L) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_textz2(X) ::= VANUATU_COMMA multipolygonz(P) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textz2(X) ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz(C) geocoll_textz2(Y). - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; - X = C; - } - - -geocoll_textzm(G) ::= VANUATU_OPEN_BRACKET pointzm(P) geocoll_textzm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textzm(G) ::= VANUATU_OPEN_BRACKET linestringzm(L) geocoll_textzm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_textzm(G) ::= VANUATU_OPEN_BRACKET polygonzm(P) geocoll_textzm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textzm(G) ::= VANUATU_OPEN_BRACKET multipointzm(P) geocoll_textzm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textzm(G) ::= VANUATU_OPEN_BRACKET multilinestringzm(L) geocoll_textzm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)L); - } - -geocoll_textzm(G) ::= VANUATU_OPEN_BRACKET multipolygonzm(P) geocoll_textzm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); - } - -geocoll_textzm(G) ::= -VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm(C) geocoll_textzm2(X) VANUATU_CLOSE_BRACKET. - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; - G = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)C); - } - -geocoll_textzm2(X) ::= . { X = NULL; } -geocoll_textzm2(X) ::= VANUATU_COMMA pointzm(P) geocoll_textzm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textzm2(X) ::= VANUATU_COMMA linestringzm(L) geocoll_textzm2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_textzm2(X) ::= VANUATU_COMMA polygonzm(P) geocoll_textzm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textzm2(X) ::= VANUATU_COMMA multipointzm(P) geocoll_textzm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textzm2(X) ::= VANUATU_COMMA multilinestringzm(L) geocoll_textzm2(Y). - { - ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; - X = L; - } - -geocoll_textzm2(X) ::= VANUATU_COMMA multipolygonzm(P) geocoll_textzm2(Y). - { - ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; - X = P; - } - -geocoll_textzm2(X) ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm(C) geocoll_textzm2(Y). - { - ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; - X = C; - } - - -/****************************************************************************** -** This is the end of the code that was created by Team Vanuatu -** of The University of Toronto. - -Authors: -Ruppi Rana ruppi.rana@gmail.com -Dev Tanna dev.tanna@gmail.com -Elias Adum elias.adum@gmail.com -Benton Hui benton.hui@gmail.com -Abhayan Sundararajan abhayan@gmail.com -Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com -Nikola Banovic nikola.banovic@gmail.com -Yong Jian yong.jian@utoronto.ca - -Supervisor: -Greg Wilson gvwilson@cs.toronto.ca - -------------------------------------------------------------------------------- -*/ diff --git a/src/spatialite/src/gaiageo/lex.Ewkt.c b/src/spatialite/src/gaiageo/lex.Ewkt.c deleted file mode 100644 index 9a30671..0000000 --- a/src/spatialite/src/gaiageo/lex.Ewkt.c +++ /dev/null @@ -1,2079 +0,0 @@ - -#line 3 "lex.Ewkt.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* An opaque pointer. */ -#ifndef YY_TYPEDEF_YY_SCANNER_T -#define YY_TYPEDEF_YY_SCANNER_T -typedef void* yyscan_t; -#endif - -/* For convenience, these vars (plus the bison vars far below) - are macros in the reentrant scanner. */ -#define yyin yyg->yyin_r -#define yyout yyg->yyout_r -#define yyextra yyg->yyextra_r -#define yyleng yyg->yyleng_r -#define yytext yyg->yytext_r -#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) -#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) -#define yy_flex_debug yyg->yy_flex_debug_r - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN yyg->yy_start = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START ((yyg->yy_start - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE Ewktrestart(yyin ,yyscanner ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = yyg->yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via Ewktrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ - ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] - -void Ewktrestart (FILE *input_file ,yyscan_t yyscanner ); -void Ewkt_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); -YY_BUFFER_STATE Ewkt_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); -void Ewkt_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); -void Ewkt_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); -void Ewktpush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); -void Ewktpop_buffer_state (yyscan_t yyscanner ); - -static void Ewktensure_buffer_stack (yyscan_t yyscanner ); -static void Ewkt_load_buffer_state (yyscan_t yyscanner ); -static void Ewkt_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); - -#define YY_FLUSH_BUFFER Ewkt_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) - -YY_BUFFER_STATE Ewkt_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); -YY_BUFFER_STATE Ewkt_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); -YY_BUFFER_STATE Ewkt_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); - -void *Ewktalloc (yy_size_t ,yyscan_t yyscanner ); -void *Ewktrealloc (void *,yy_size_t ,yyscan_t yyscanner ); -void Ewktfree (void * ,yyscan_t yyscanner ); - -#define yy_new_buffer Ewkt_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - Ewktensure_buffer_stack (yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = \ - Ewkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - Ewktensure_buffer_stack (yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = \ - Ewkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -typedef unsigned char YY_CHAR; - -typedef int yy_state_type; - -#define yytext_ptr yytext_r - -static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); -static int yy_get_next_buffer (yyscan_t yyscanner ); -static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yyg->yytext_ptr = yy_bp; \ - yyleng = (size_t) (yy_cp - yy_bp); \ - yyg->yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yyg->yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 22 -#define YY_END_OF_BUFFER 23 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[93] = - { 0, - 0, 0, 23, 21, 19, 20, 3, 4, 21, 2, - 21, 1, 21, 21, 21, 21, 1, 1, 1, 1, - 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, - 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 5, 0, 0, 0, 0, 0, 6, 0, - 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, - 10, 0, 0, 0, 0, 0, 0, 7, 0, 11, - 0, 0, 8, 0, 12, 0, 0, 0, 15, 0, - 0, 16, 0, 0, 0, 13, 0, 14, 0, 17, - 18, 0 - - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, - 5, 1, 6, 7, 8, 9, 1, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 11, 1, 12, 1, - 13, 1, 14, 1, 1, 15, 16, 17, 18, 19, - 1, 20, 21, 22, 23, 1, 1, 1, 24, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 25, 1, - - 26, 1, 27, 1, 28, 1, 1, 29, 30, 31, - 32, 33, 1, 34, 35, 36, 37, 1, 1, 1, - 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst flex_int32_t yy_meta[39] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1 - } ; - -static yyconst flex_int16_t yy_base[93] = - { 0, - 0, 0, 187, 188, 188, 188, 188, 188, 174, 188, - 173, 30, 29, 28, 20, 26, 36, 38, 172, 40, - 33, 35, 38, 45, 171, 166, 165, 38, 49, 40, - 46, 40, 164, 163, 57, 49, 57, 50, 66, 58, - 59, 72, 66, 70, 69, 70, 78, 79, 188, 81, - 75, 86, 90, 94, 94, 104, 99, 105, 101, 95, - 188, 102, 112, 105, 105, 115, 120, 120, 115, 122, - 125, 129, 188, 125, 188, 129, 135, 134, 137, 143, - 138, 188, 134, 150, 150, 149, 148, 188, 154, 156, - 188, 188 - - } ; - -static yyconst flex_int16_t yy_def[93] = - { 0, - 92, 1, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 0 - - } ; - -static yyconst flex_int16_t yy_nxt[227] = - { 0, - 4, 5, 6, 7, 8, 9, 10, 11, 4, 12, - 4, 4, 13, 4, 14, 15, 4, 4, 16, 4, - 4, 4, 4, 4, 4, 4, 13, 4, 14, 15, - 4, 4, 16, 4, 4, 4, 4, 4, 19, 20, - 21, 22, 23, 24, 25, 17, 26, 18, 19, 20, - 28, 29, 30, 35, 21, 22, 23, 24, 31, 32, - 36, 37, 38, 39, 28, 29, 30, 35, 40, 41, - 42, 43, 31, 32, 36, 37, 38, 39, 44, 45, - 46, 49, 40, 41, 42, 43, 47, 50, 51, 52, - 48, 53, 44, 45, 46, 49, 54, 55, 56, 57, - - 47, 50, 51, 52, 48, 53, 58, 59, 60, 61, - 54, 55, 56, 57, 62, 63, 64, 65, 66, 67, - 58, 59, 60, 61, 68, 69, 70, 71, 62, 63, - 64, 65, 66, 67, 72, 73, 74, 75, 68, 69, - 70, 71, 76, 77, 78, 79, 80, 81, 72, 73, - 74, 75, 82, 83, 84, 85, 76, 77, 78, 79, - 80, 81, 86, 87, 88, 89, 82, 83, 84, 85, - 90, 91, 34, 33, 27, 34, 86, 87, 88, 89, - 33, 27, 18, 17, 90, 91, 92, 3, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92 - } ; - -static yyconst flex_int16_t yy_chk[227] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, - 13, 14, 15, 16, 17, 17, 18, 18, 20, 20, - 21, 22, 23, 28, 13, 14, 15, 16, 24, 24, - 29, 30, 31, 32, 21, 22, 23, 28, 35, 36, - 37, 38, 24, 24, 29, 30, 31, 32, 39, 40, - 41, 43, 35, 36, 37, 38, 42, 44, 45, 46, - 42, 47, 39, 40, 41, 43, 48, 50, 51, 52, - - 42, 44, 45, 46, 42, 47, 53, 54, 54, 55, - 48, 50, 51, 52, 56, 57, 58, 59, 60, 62, - 53, 54, 54, 55, 63, 64, 65, 66, 56, 57, - 58, 59, 60, 62, 67, 68, 69, 70, 63, 64, - 65, 66, 71, 72, 74, 76, 77, 78, 67, 68, - 69, 70, 79, 80, 81, 83, 71, 72, 74, 76, - 77, 78, 84, 85, 86, 87, 79, 80, 81, 83, - 89, 90, 34, 33, 27, 26, 84, 85, 86, 87, - 25, 19, 11, 9, 89, 90, 3, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, - 92, 92, 92, 92, 92, 92 - } ; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -/* - EwktLexer.l -- EWKT parser - FLEX config - - version 2.4, 2011 May 14 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#define YY_NO_INPUT 1 -/** -* The main string-token matcher. -* The lower case part is probably not needed. We should really be converting -* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. -* What Flex will do is, For the input string, beginning from the front, Flex -* will try to match with any of the defined tokens from below. Flex will -* then match the string of longest length. Suppose the string is: POINTM, -* Flex would match both POINT and POINTM, but since POINTM is the longer -* of the two tokens, FLEX will match POINTM. -*/ - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#define YY_EXTRA_TYPE struct ewkt_data * - -/* Holds the entire state of the reentrant scanner. */ -struct yyguts_t - { - - /* User-defined. Not touched by flex. */ - YY_EXTRA_TYPE yyextra_r; - - /* The rest are the same as the globals declared in the non-reentrant scanner. */ - FILE *yyin_r, *yyout_r; - size_t yy_buffer_stack_top; /**< index of top of stack. */ - size_t yy_buffer_stack_max; /**< capacity of stack. */ - YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ - char yy_hold_char; - int yy_n_chars; - int yyleng_r; - char *yy_c_buf_p; - int yy_init; - int yy_start; - int yy_did_buffer_switch_on_eof; - int yy_start_stack_ptr; - int yy_start_stack_depth; - int *yy_start_stack; - yy_state_type yy_last_accepting_state; - char* yy_last_accepting_cpos; - - int yylineno_r; - int yy_flex_debug_r; - - char *yytext_r; - int yy_more_flag; - int yy_more_len; - - }; /* end struct yyguts_t */ - -static int yy_init_globals (yyscan_t yyscanner ); - -int Ewktlex_init (yyscan_t* scanner); - -int Ewktlex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int Ewktlex_destroy (yyscan_t yyscanner ); - -int Ewktget_debug (yyscan_t yyscanner ); - -void Ewktset_debug (int debug_flag ,yyscan_t yyscanner ); - -YY_EXTRA_TYPE Ewktget_extra (yyscan_t yyscanner ); - -void Ewktset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); - -FILE *Ewktget_in (yyscan_t yyscanner ); - -void Ewktset_in (FILE * in_str ,yyscan_t yyscanner ); - -FILE *Ewktget_out (yyscan_t yyscanner ); - -void Ewktset_out (FILE * out_str ,yyscan_t yyscanner ); - -int Ewktget_leng (yyscan_t yyscanner ); - -char *Ewktget_text (yyscan_t yyscanner ); - -int Ewktget_lineno (yyscan_t yyscanner ); - -void Ewktset_lineno (int line_number ,yyscan_t yyscanner ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int Ewktwrap (yyscan_t yyscanner ); -#else -extern int Ewktwrap (yyscan_t yyscanner ); -#endif -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (yyscan_t yyscanner ); -#else -static int input (yyscan_t yyscanner ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - size_t n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int Ewktlex (yyscan_t yyscanner); - -#define YY_DECL int Ewktlex (yyscan_t yyscanner) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( !yyg->yy_init ) - { - yyg->yy_init = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yyg->yy_start ) - yyg->yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - Ewktensure_buffer_stack (yyscanner); - YY_CURRENT_BUFFER_LVALUE = - Ewkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); - } - - Ewkt_load_buffer_state(yyscanner ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yyg->yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yyg->yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yyg->yy_start; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 93 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 188 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yyg->yy_hold_char; - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - goto yy_find_action; - -case 1: -YY_RULE_SETUP -{ Ewktget_extra(yyscanner)->ewkt_col += (int) strlen(yytext); EwktLval.dval = atof(yytext); return EWKT_NUM; } - YY_BREAK -case 2: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_COMMA; } - YY_BREAK -case 3: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_OPEN_BRACKET; } - YY_BREAK -case 4: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_CLOSE_BRACKET; } - YY_BREAK -case 5: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_POINT; } - YY_BREAK -case 6: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_POINT_M; } - YY_BREAK -case 7: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_LINESTRING; } - YY_BREAK -case 8: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_LINESTRING_M; } - YY_BREAK -case 9: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_POLYGON; } - YY_BREAK -case 10: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_POLYGON_M; } - YY_BREAK -case 11: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_MULTIPOINT; } - YY_BREAK -case 12: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_MULTIPOINT_M; } - YY_BREAK -case 13: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_MULTILINESTRING; } - YY_BREAK -case 14: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_MULTILINESTRING_M; } - YY_BREAK -case 15: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_MULTIPOLYGON; } - YY_BREAK -case 16: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_MULTIPOLYGON_M; } - YY_BREAK -case 17: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_GEOMETRYCOLLECTION; } - YY_BREAK -case 18: -YY_RULE_SETUP -{ EwktLval.dval = 0; return EWKT_GEOMETRYCOLLECTION_M; } - YY_BREAK -case 19: -YY_RULE_SETUP -{ Ewktget_extra(yyscanner)->ewkt_col += (int) strlen(yytext); } /* ignore but count white space */ - YY_BREAK -case 20: -/* rule 20 can match eol */ -YY_RULE_SETUP -{ Ewktget_extra(yyscanner)->ewkt_col = 0; Ewktget_extra(yyscanner)->ewkt_line++; } - YY_BREAK -case 21: -YY_RULE_SETUP -{ Ewktget_extra(yyscanner)->ewkt_col += (int) strlen(yytext); return -1; } - YY_BREAK -case 22: -YY_RULE_SETUP -ECHO; - YY_BREAK -case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yyg->yy_hold_char; - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * Ewktlex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( yyscanner ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); - - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++yyg->yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yyg->yy_c_buf_p; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_END_OF_FILE: - { - yyg->yy_did_buffer_switch_on_eof = 0; - - if ( Ewktwrap(yyscanner ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = - yyg->yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( yyscanner ); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yyg->yy_c_buf_p = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; - - yy_current_state = yy_get_previous_state( yyscanner ); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of Ewktlex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = yyg->yytext_ptr; - register int number_to_move, i; - int ret_val; - - if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - - int yy_c_buf_p_offset = - (int) (yyg->yy_c_buf_p - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - Ewktrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - yyg->yy_n_chars, (size_t) num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - if ( yyg->yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - Ewktrestart(yyin ,yyscanner); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) Ewktrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - } - - yyg->yy_n_chars += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (yyscan_t yyscanner) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - yy_current_state = yyg->yy_start; - - for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 93 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) -{ - register int yy_is_jam; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ - register char *yy_cp = yyg->yy_c_buf_p; - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 93 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 92); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (yyscan_t yyscanner) -#else - static int input (yyscan_t yyscanner) -#endif - -{ - int c; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - *yyg->yy_c_buf_p = yyg->yy_hold_char; - - if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) - /* This was really a NUL. */ - *yyg->yy_c_buf_p = '\0'; - - else - { /* need more input */ - int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; - ++yyg->yy_c_buf_p; - - switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - Ewktrestart(yyin ,yyscanner); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( Ewktwrap(yyscanner ) ) - return EOF; - - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(yyscanner); -#else - return input(yyscanner); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = yyg->yytext_ptr + offset; - break; - } - } - } - - c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ - *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ - yyg->yy_hold_char = *++yyg->yy_c_buf_p; - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * @param yyscanner The scanner object. - * @note This function does not reset the start condition to @c INITIAL . - */ - void Ewktrestart (FILE * input_file , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( ! YY_CURRENT_BUFFER ){ - Ewktensure_buffer_stack (yyscanner); - YY_CURRENT_BUFFER_LVALUE = - Ewkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); - } - - Ewkt_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); - Ewkt_load_buffer_state(yyscanner ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * @param yyscanner The scanner object. - */ - void Ewkt_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* TODO. We should be able to replace this entire function body - * with - * Ewktpop_buffer_state(); - * Ewktpush_buffer_state(new_buffer); - */ - Ewktensure_buffer_stack (yyscanner); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - Ewkt_load_buffer_state(yyscanner ); - - /* We don't actually know whether we did this switch during - * EOF (Ewktwrap()) processing, but the only time this flag - * is looked at is after Ewktwrap() is called, so it's safe - * to go ahead and always set it. - */ - yyg->yy_did_buffer_switch_on_eof = 1; -} - -static void Ewkt_load_buffer_state (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - yyg->yy_hold_char = *yyg->yy_c_buf_p; -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * @param yyscanner The scanner object. - * @return the allocated buffer state. - */ - YY_BUFFER_STATE Ewkt_create_buffer (FILE * file, int size , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) Ewktalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in Ewkt_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) Ewktalloc(b->yy_buf_size + 2 ,yyscanner ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in Ewkt_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - Ewkt_init_buffer(b,file ,yyscanner); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with Ewkt_create_buffer() - * @param yyscanner The scanner object. - */ - void Ewkt_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - Ewktfree((void *) b->yy_ch_buf ,yyscanner ); - - Ewktfree((void *) b ,yyscanner ); -} - -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a Ewktrestart() or at EOF. - */ - static void Ewkt_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) - -{ - int oerrno = errno; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - Ewkt_flush_buffer(b ,yyscanner); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then Ewkt_init_buffer was _probably_ - * called from Ewktrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * @param yyscanner The scanner object. - */ - void Ewkt_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - Ewkt_load_buffer_state(yyscanner ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * @param yyscanner The scanner object. - */ -void Ewktpush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (new_buffer == NULL) - return; - - Ewktensure_buffer_stack(yyscanner); - - /* This block is copied from Ewkt_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - yyg->yy_buffer_stack_top++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from Ewkt_switch_to_buffer. */ - Ewkt_load_buffer_state(yyscanner ); - yyg->yy_did_buffer_switch_on_eof = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * @param yyscanner The scanner object. - */ -void Ewktpop_buffer_state (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (!YY_CURRENT_BUFFER) - return; - - Ewkt_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); - YY_CURRENT_BUFFER_LVALUE = NULL; - if (yyg->yy_buffer_stack_top > 0) - --yyg->yy_buffer_stack_top; - - if (YY_CURRENT_BUFFER) { - Ewkt_load_buffer_state(yyscanner ); - yyg->yy_did_buffer_switch_on_eof = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void Ewktensure_buffer_stack (yyscan_t yyscanner) -{ - int num_to_alloc; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (!yyg->yy_buffer_stack) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - yyg->yy_buffer_stack = (struct yy_buffer_state**)Ewktalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); - if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in Ewktensure_buffer_stack()" ); - - memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - yyg->yy_buffer_stack_max = num_to_alloc; - yyg->yy_buffer_stack_top = 0; - return; - } - - if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = yyg->yy_buffer_stack_max + grow_size; - yyg->yy_buffer_stack = (struct yy_buffer_state**)Ewktrealloc - (yyg->yy_buffer_stack, - num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); - if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in Ewktensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); - yyg->yy_buffer_stack_max = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE Ewkt_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) Ewktalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in Ewkt_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - Ewkt_switch_to_buffer(b ,yyscanner ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to Ewktlex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * Ewkt_scan_bytes() instead. - */ -YY_BUFFER_STATE Ewkt_scan_string (yyconst char * yystr , yyscan_t yyscanner) -{ - - return Ewkt_scan_bytes(yystr,strlen(yystr) ,yyscanner); -} - -/** Setup the input buffer state to scan the given bytes. The next call to Ewktlex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE Ewkt_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; - buf = (char *) Ewktalloc(n ,yyscanner ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in Ewkt_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = Ewkt_scan_buffer(buf,n ,yyscanner); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in Ewkt_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) -{ - (void) spatialite_e( "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = yyg->yy_hold_char; \ - yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ - yyg->yy_hold_char = *yyg->yy_c_buf_p; \ - *yyg->yy_c_buf_p = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the user-defined data for this scanner. - * @param yyscanner The scanner object. - */ -YY_EXTRA_TYPE Ewktget_extra (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyextra; -} - -/** Get the current line number. - * @param yyscanner The scanner object. - */ -int Ewktget_lineno (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (! YY_CURRENT_BUFFER) - return 0; - - return yylineno; -} - -/** Get the current column number. - * @param yyscanner The scanner object. - */ -int Ewktget_column (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (! YY_CURRENT_BUFFER) - return 0; - - return yycolumn; -} - -/** Get the input stream. - * @param yyscanner The scanner object. - */ -FILE *Ewktget_in (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyin; -} - -/** Get the output stream. - * @param yyscanner The scanner object. - */ -FILE *Ewktget_out (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyout; -} - -/** Get the length of the current token. - * @param yyscanner The scanner object. - */ -int Ewktget_leng (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyleng; -} - -/** Get the current token. - * @param yyscanner The scanner object. - */ - -char *Ewktget_text (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yytext; -} - -/** Set the user-defined data. This data is never touched by the scanner. - * @param user_defined The data to be associated with this scanner. - * @param yyscanner The scanner object. - */ -void Ewktset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyextra = user_defined ; -} - -/** Set the current line number. - * @param line_number - * @param yyscanner The scanner object. - */ -void Ewktset_lineno (int line_number , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* lineno is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "Ewktset_lineno called with no buffer" , yyscanner); - - yylineno = line_number; -} - -/** Set the current column. - * @param line_number - * @param yyscanner The scanner object. - */ -void Ewktset_column (int column_no , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* column is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "Ewktset_column called with no buffer" , yyscanner); - - yycolumn = column_no; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * @param yyscanner The scanner object. - * @see Ewkt_switch_to_buffer - */ -void Ewktset_in (FILE * in_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyin = in_str ; -} - -void Ewktset_out (FILE * out_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyout = out_str ; -} - -int Ewktget_debug (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yy_flex_debug; -} - -void Ewktset_debug (int bdebug , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yy_flex_debug = bdebug ; -} - -/* Accessor methods for yylval and yylloc */ - -/* User-visible API */ - -/* Ewktlex_init is special because it creates the scanner itself, so it is - * the ONLY reentrant function that doesn't take the scanner as the last argument. - * That's why we explicitly handle the declaration, instead of using our macros. - */ - -int Ewktlex_init(yyscan_t* ptr_yy_globals) - -{ - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } - - *ptr_yy_globals = (yyscan_t) Ewktalloc ( sizeof( struct yyguts_t ), NULL ); - - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } - - /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - - return yy_init_globals ( *ptr_yy_globals ); -} - -/* Ewktlex_init_extra has the same functionality as Ewktlex_init, but follows the - * convention of taking the scanner as the last argument. Note however, that - * this is a *pointer* to a scanner, as it will be allocated by this call (and - * is the reason, too, why this function also must handle its own declaration). - * The user defined value in the first argument will be available to Ewktalloc in - * the yyextra field. - */ - -int Ewktlex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) - -{ - struct yyguts_t dummy_yyguts; - - Ewktset_extra (yy_user_defined, &dummy_yyguts); - - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } - - *ptr_yy_globals = (yyscan_t) Ewktalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); - - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } - - /* By setting to 0xAA, we expose bugs in - yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - - Ewktset_extra (yy_user_defined, *ptr_yy_globals); - - return yy_init_globals ( *ptr_yy_globals ); -} - -static int yy_init_globals (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from Ewktlex_destroy(), so don't allocate here. - */ - - yyg->yy_buffer_stack = 0; - yyg->yy_buffer_stack_top = 0; - yyg->yy_buffer_stack_max = 0; - yyg->yy_c_buf_p = (char *) 0; - yyg->yy_init = 0; - yyg->yy_start = 0; - - yyg->yy_start_stack_ptr = 0; - yyg->yy_start_stack_depth = 0; - yyg->yy_start_stack = NULL; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = (FILE *) 0; - yyout = (FILE *) 0; -#endif - - /* For future reference: Set errno on error, since we are called by - * Ewktlex_init() - */ - return 0; -} - -/* Ewktlex_destroy is for both reentrant and non-reentrant scanners. */ -int Ewktlex_destroy (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - Ewkt_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); - YY_CURRENT_BUFFER_LVALUE = NULL; - Ewktpop_buffer_state(yyscanner); - } - - /* Destroy the stack itself. */ - Ewktfree(yyg->yy_buffer_stack ,yyscanner); - yyg->yy_buffer_stack = NULL; - - /* Destroy the start condition stack. */ - Ewktfree(yyg->yy_start_stack ,yyscanner ); - yyg->yy_start_stack = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * Ewktlex() is called, initialization will occur. */ - yy_init_globals( yyscanner); - - /* Destroy the main struct (reentrant only). */ - Ewktfree ( yyscanner , yyscanner ); - yyscanner = NULL; - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *Ewktalloc (yy_size_t size , yyscan_t yyscanner) -{ - return (void *) malloc( size ); -} - -void *Ewktrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void Ewktfree (void * ptr , yyscan_t yyscanner) -{ - free( (char *) ptr ); /* see Ewktrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -int Ewktwrap(yyscan_t yyscanner ) -{ - return 1; -} - diff --git a/src/spatialite/src/gaiageo/lex.GeoJson.c b/src/spatialite/src/gaiageo/lex.GeoJson.c deleted file mode 100644 index b2a1426..0000000 --- a/src/spatialite/src/gaiageo/lex.GeoJson.c +++ /dev/null @@ -1,2132 +0,0 @@ - -#line 3 "lex.GeoJson.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* An opaque pointer. */ -#ifndef YY_TYPEDEF_YY_SCANNER_T -#define YY_TYPEDEF_YY_SCANNER_T -typedef void* yyscan_t; -#endif - -/* For convenience, these vars (plus the bison vars far below) - are macros in the reentrant scanner. */ -#define yyin yyg->yyin_r -#define yyout yyg->yyout_r -#define yyextra yyg->yyextra_r -#define yyleng yyg->yyleng_r -#define yytext yyg->yytext_r -#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) -#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) -#define yy_flex_debug yyg->yy_flex_debug_r - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN yyg->yy_start = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START ((yyg->yy_start - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE GeoJsonrestart(yyin ,yyscanner ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = yyg->yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via GeoJsonrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ - ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] - -void GeoJsonrestart (FILE *input_file ,yyscan_t yyscanner ); -void GeoJson_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); -YY_BUFFER_STATE GeoJson_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); -void GeoJson_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); -void GeoJson_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); -void GeoJsonpush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); -void GeoJsonpop_buffer_state (yyscan_t yyscanner ); - -static void GeoJsonensure_buffer_stack (yyscan_t yyscanner ); -static void GeoJson_load_buffer_state (yyscan_t yyscanner ); -static void GeoJson_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); - -#define YY_FLUSH_BUFFER GeoJson_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) - -YY_BUFFER_STATE GeoJson_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); -YY_BUFFER_STATE GeoJson_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); -YY_BUFFER_STATE GeoJson_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); - -void *GeoJsonalloc (yy_size_t ,yyscan_t yyscanner ); -void *GeoJsonrealloc (void *,yy_size_t ,yyscan_t yyscanner ); -void GeoJsonfree (void * ,yyscan_t yyscanner ); - -#define yy_new_buffer GeoJson_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - GeoJsonensure_buffer_stack (yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = \ - GeoJson_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - GeoJsonensure_buffer_stack (yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = \ - GeoJson_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -typedef unsigned char YY_CHAR; - -typedef int yy_state_type; - -#define yytext_ptr yytext_r - -static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); -static int yy_get_next_buffer (yyscan_t yyscanner ); -static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yyg->yytext_ptr = yy_bp; \ - yyleng = (size_t) (yy_cp - yy_bp); \ - yyg->yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yyg->yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 27 -#define YY_END_OF_BUFFER 28 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[182] = - { 0, - 0, 0, 28, 26, 24, 25, 26, 26, 4, 26, - 1, 5, 8, 9, 6, 7, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, - 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, - 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 13, 0, 0, 14, 0, - 10, 0, 0, 0, 0, 0, 0, 0, 17, 0, - - 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 18, 0, 20, 0, 0, 12, 15, - 0, 0, 0, 0, 11, 0, 0, 0, 22, 0, - 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, - 0, 0, 0, 23, 0, 0, 0, 0, 0, 3, - 0 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 4, 1, 1, 1, 1, 1, 1, - 1, 1, 5, 6, 7, 8, 1, 9, 9, 9, - 9, 9, 9, 9, 9, 9, 9, 10, 1, 1, - 1, 1, 1, 1, 1, 1, 11, 1, 12, 1, - 13, 1, 1, 1, 1, 14, 15, 1, 1, 16, - 1, 1, 17, 1, 1, 1, 1, 1, 1, 1, - 18, 1, 19, 1, 1, 1, 20, 21, 22, 23, - - 24, 25, 26, 1, 27, 1, 1, 28, 29, 30, - 31, 32, 1, 33, 34, 35, 36, 1, 1, 37, - 38, 1, 39, 1, 40, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst flex_int32_t yy_meta[41] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 - } ; - -static yyconst flex_int16_t yy_base[183] = - { 0, - 0, 39, 203, 204, 204, 204, 68, 193, 204, 4, - 3, 204, 204, 204, 204, 204, 185, 176, 172, 162, - 166, 175, 0, 171, 174, 160, 154, 158, 6, 11, - 8, 181, 12, 172, 157, 157, 158, 0, 154, 153, - 149, 151, 152, 149, 147, 148, 168, 167, 166, 161, - 144, 148, 136, 140, 131, 131, 134, 162, 136, 140, - 131, 138, 151, 151, 150, 148, 133, 139, 128, 119, - 127, 148, 128, 204, 126, 145, 124, 143, 115, 15, - 110, 109, 16, 139, 111, 204, 114, 105, 204, 106, - 204, 112, 128, 25, 103, 102, 107, 102, 204, 102, - - 101, 97, 94, 106, 204, 89, 99, 95, 8, 120, - 103, 95, 94, 110, 108, 88, 93, 86, 77, 204, - 79, 89, 88, 88, 79, 83, 91, 72, 80, 81, - 68, 67, 75, 69, 92, 60, 89, 61, 57, 84, - 83, 61, 57, 204, 44, 204, 46, 71, 204, 204, - 64, 49, 45, 67, 204, 48, 47, 38, 204, 34, - 31, 39, 30, 36, 58, 51, 29, 204, 47, 25, - 38, 49, 21, 204, 24, 16, 43, 16, 47, 204, - 204, 0 - } ; - -static yyconst flex_int16_t yy_def[183] = - { 0, - 182, 182, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 0, 181 - } ; - -static yyconst flex_int16_t yy_nxt[245] = - { 0, - 4, 5, 6, 7, 8, 9, 10, 30, 11, 12, - 32, 33, 31, 47, 29, 48, 31, 13, 14, 32, - 33, 93, 17, 94, 179, 177, 54, 55, 105, 97, - 40, 98, 41, 94, 118, 119, 176, 175, 15, 16, - 5, 6, 7, 8, 9, 10, 28, 11, 12, 178, - 180, 179, 174, 173, 172, 179, 13, 14, 171, 170, - 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, - 159, 158, 157, 156, 155, 154, 153, 15, 16, 17, - 18, 19, 20, 21, 152, 151, 150, 149, 22, 23, - 148, 147, 146, 24, 145, 144, 143, 25, 142, 26, - - 141, 140, 27, 28, 139, 138, 137, 136, 135, 134, - 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, - 123, 122, 121, 120, 117, 116, 115, 114, 113, 112, - 111, 110, 109, 108, 107, 106, 94, 104, 103, 102, - 101, 100, 99, 96, 95, 92, 91, 90, 89, 88, - 87, 86, 85, 84, 83, 82, 81, 80, 65, 64, - 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, - 69, 68, 67, 66, 49, 65, 64, 63, 62, 61, - 60, 59, 58, 57, 56, 53, 52, 51, 50, 49, - 46, 45, 44, 43, 42, 39, 38, 37, 36, 35, - - 34, 29, 181, 3, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181 - } ; - -static yyconst flex_int16_t yy_chk[245] = - { 0, - 182, 1, 1, 1, 1, 1, 1, 10, 1, 1, - 11, 11, 10, 29, 29, 31, 31, 1, 1, 33, - 33, 80, 30, 80, 178, 176, 38, 38, 94, 83, - 23, 83, 23, 94, 109, 109, 175, 173, 1, 1, - 2, 2, 2, 2, 2, 2, 30, 2, 2, 177, - 179, 177, 172, 171, 170, 179, 2, 2, 169, 167, - 166, 165, 164, 163, 162, 161, 160, 158, 157, 156, - 154, 153, 152, 151, 148, 147, 145, 2, 2, 7, - 7, 7, 7, 7, 143, 142, 141, 140, 7, 7, - 139, 138, 137, 7, 136, 135, 134, 7, 133, 7, - - 132, 131, 7, 7, 130, 129, 128, 127, 126, 125, - 124, 123, 122, 121, 119, 118, 117, 116, 115, 114, - 113, 112, 111, 110, 108, 107, 106, 104, 103, 102, - 101, 100, 98, 97, 96, 95, 93, 92, 90, 88, - 87, 85, 84, 82, 81, 79, 78, 77, 76, 75, - 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, - 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, - 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, - 43, 42, 41, 40, 39, 37, 36, 35, 34, 32, - 28, 27, 26, 25, 24, 22, 21, 20, 19, 18, - - 17, 8, 3, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, - 181, 181, 181, 181 - } ; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -/* - geoJsonLexer.l -- GeoJSON parser - FLEX config - - version 2.4, 2011 May 16 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#define YY_NO_INPUT 1 -/** -* The main string-token matcher. -* The lower case part is probably not needed. We should really be converting -* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. -* What Flex will do is, For the input string, beginning from the front, Flex -* will try to match with any of the defined tokens from below. Flex will -* then match the string of longest length. Suppose the string is: POINTM, -* Flex would match both POINT and POINTM, but since POINTM is the longer -* of the two tokens, FLEX will match POINTM. -*/ - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#ifndef _MSC_VER -#include -#endif -#endif - -#define YY_EXTRA_TYPE struct geoJson_data * - -/* Holds the entire state of the reentrant scanner. */ -struct yyguts_t - { - - /* User-defined. Not touched by flex. */ - YY_EXTRA_TYPE yyextra_r; - - /* The rest are the same as the globals declared in the non-reentrant scanner. */ - FILE *yyin_r, *yyout_r; - size_t yy_buffer_stack_top; /**< index of top of stack. */ - size_t yy_buffer_stack_max; /**< capacity of stack. */ - YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ - char yy_hold_char; - int yy_n_chars; - int yyleng_r; - char *yy_c_buf_p; - int yy_init; - int yy_start; - int yy_did_buffer_switch_on_eof; - int yy_start_stack_ptr; - int yy_start_stack_depth; - int *yy_start_stack; - yy_state_type yy_last_accepting_state; - char* yy_last_accepting_cpos; - - int yylineno_r; - int yy_flex_debug_r; - - char *yytext_r; - int yy_more_flag; - int yy_more_len; - - }; /* end struct yyguts_t */ - -static int yy_init_globals (yyscan_t yyscanner ); - -int GeoJsonlex_init (yyscan_t* scanner); - -int GeoJsonlex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int GeoJsonlex_destroy (yyscan_t yyscanner ); - -int GeoJsonget_debug (yyscan_t yyscanner ); - -void GeoJsonset_debug (int debug_flag ,yyscan_t yyscanner ); - -YY_EXTRA_TYPE GeoJsonget_extra (yyscan_t yyscanner ); - -void GeoJsonset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); - -FILE *GeoJsonget_in (yyscan_t yyscanner ); - -void GeoJsonset_in (FILE * in_str ,yyscan_t yyscanner ); - -FILE *GeoJsonget_out (yyscan_t yyscanner ); - -void GeoJsonset_out (FILE * out_str ,yyscan_t yyscanner ); - -int GeoJsonget_leng (yyscan_t yyscanner ); - -char *GeoJsonget_text (yyscan_t yyscanner ); - -int GeoJsonget_lineno (yyscan_t yyscanner ); - -void GeoJsonset_lineno (int line_number ,yyscan_t yyscanner ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int GeoJsonwrap (yyscan_t yyscanner ); -#else -extern int GeoJsonwrap (yyscan_t yyscanner ); -#endif -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (yyscan_t yyscanner ); -#else -static int input (yyscan_t yyscanner ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - size_t n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int GeoJsonlex (yyscan_t yyscanner); - -#define YY_DECL int GeoJsonlex (yyscan_t yyscanner) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( !yyg->yy_init ) - { - yyg->yy_init = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yyg->yy_start ) - yyg->yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - GeoJsonensure_buffer_stack (yyscanner); - YY_CURRENT_BUFFER_LVALUE = - GeoJson_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); - } - - GeoJson_load_buffer_state(yyscanner ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yyg->yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yyg->yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yyg->yy_start; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 182 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 204 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yyg->yy_hold_char; - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - goto yy_find_action; - -case 1: -YY_RULE_SETUP -{ GeoJsonget_extra(yyscanner)->geoJson_col += (int) strlen(yytext); GeoJsonLval.dval = atof(yytext); return GEOJSON_NUM; } - YY_BREAK -case 2: -YY_RULE_SETUP -{ GeoJsonget_extra(yyscanner)->geoJson_col += (int) strlen(yytext); GeoJsonLval.ival = atoi(yytext+6); return GEOJSON_SHORT_SRID; } - YY_BREAK -case 3: -YY_RULE_SETUP -{ GeoJsonget_extra(yyscanner)->geoJson_col += (int) strlen(yytext); GeoJsonLval.ival = atoi(yytext+22); return GEOJSON_LONG_SRID; } - YY_BREAK -case 4: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_COMMA; } - YY_BREAK -case 5: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_COLON; } - YY_BREAK -case 6: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_OPEN_BRACE; } - YY_BREAK -case 7: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_CLOSE_BRACE; } - YY_BREAK -case 8: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_OPEN_BRACKET; } - YY_BREAK -case 9: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_CLOSE_BRACKET; } - YY_BREAK -case 10: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_TYPE; } - YY_BREAK -case 11: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_COORDS; } - YY_BREAK -case 12: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_GEOMS; } - YY_BREAK -case 13: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_BBOX; } - YY_BREAK -case 14: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_NAME; } - YY_BREAK -case 15: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_PROPS; } - YY_BREAK -case 16: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_CRS; } - YY_BREAK -case 17: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_POINT; } - YY_BREAK -case 18: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_LINESTRING; } - YY_BREAK -case 19: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_POLYGON; } - YY_BREAK -case 20: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_MULTIPOINT; } - YY_BREAK -case 21: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_MULTILINESTRING; } - YY_BREAK -case 22: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_MULTIPOLYGON; } - YY_BREAK -case 23: -YY_RULE_SETUP -{ GeoJsonLval.dval = 0; return GEOJSON_GEOMETRYCOLLECTION; } - YY_BREAK -case 24: -YY_RULE_SETUP -{ GeoJsonget_extra(yyscanner)->geoJson_col += (int) strlen(yytext); } /* ignore but count white space */ - YY_BREAK -case 25: -/* rule 25 can match eol */ -YY_RULE_SETUP -{ GeoJsonget_extra(yyscanner)->geoJson_col = 0; GeoJsonget_extra(yyscanner)->geoJson_line++; } - YY_BREAK -case 26: -YY_RULE_SETUP -{ GeoJsonget_extra(yyscanner)->geoJson_col += (int) strlen(yytext); return -1; } - YY_BREAK -case 27: -YY_RULE_SETUP -ECHO; - YY_BREAK -case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yyg->yy_hold_char; - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * GeoJsonlex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( yyscanner ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); - - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++yyg->yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yyg->yy_c_buf_p; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_END_OF_FILE: - { - yyg->yy_did_buffer_switch_on_eof = 0; - - if ( GeoJsonwrap(yyscanner ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = - yyg->yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( yyscanner ); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yyg->yy_c_buf_p = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; - - yy_current_state = yy_get_previous_state( yyscanner ); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of GeoJsonlex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = yyg->yytext_ptr; - register int number_to_move, i; - int ret_val; - - if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - - int yy_c_buf_p_offset = - (int) (yyg->yy_c_buf_p - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - GeoJsonrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - yyg->yy_n_chars, (size_t) num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - if ( yyg->yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - GeoJsonrestart(yyin ,yyscanner); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) GeoJsonrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - } - - yyg->yy_n_chars += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (yyscan_t yyscanner) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - yy_current_state = yyg->yy_start; - - for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 182 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) -{ - register int yy_is_jam; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ - register char *yy_cp = yyg->yy_c_buf_p; - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 182 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 181); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (yyscan_t yyscanner) -#else - static int input (yyscan_t yyscanner) -#endif - -{ - int c; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - *yyg->yy_c_buf_p = yyg->yy_hold_char; - - if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) - /* This was really a NUL. */ - *yyg->yy_c_buf_p = '\0'; - - else - { /* need more input */ - int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; - ++yyg->yy_c_buf_p; - - switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - GeoJsonrestart(yyin ,yyscanner); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( GeoJsonwrap(yyscanner ) ) - return EOF; - - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(yyscanner); -#else - return input(yyscanner); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = yyg->yytext_ptr + offset; - break; - } - } - } - - c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ - *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ - yyg->yy_hold_char = *++yyg->yy_c_buf_p; - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * @param yyscanner The scanner object. - * @note This function does not reset the start condition to @c INITIAL . - */ - void GeoJsonrestart (FILE * input_file , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( ! YY_CURRENT_BUFFER ){ - GeoJsonensure_buffer_stack (yyscanner); - YY_CURRENT_BUFFER_LVALUE = - GeoJson_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); - } - - GeoJson_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); - GeoJson_load_buffer_state(yyscanner ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * @param yyscanner The scanner object. - */ - void GeoJson_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* TODO. We should be able to replace this entire function body - * with - * GeoJsonpop_buffer_state(); - * GeoJsonpush_buffer_state(new_buffer); - */ - GeoJsonensure_buffer_stack (yyscanner); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - GeoJson_load_buffer_state(yyscanner ); - - /* We don't actually know whether we did this switch during - * EOF (GeoJsonwrap()) processing, but the only time this flag - * is looked at is after GeoJsonwrap() is called, so it's safe - * to go ahead and always set it. - */ - yyg->yy_did_buffer_switch_on_eof = 1; -} - -static void GeoJson_load_buffer_state (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - yyg->yy_hold_char = *yyg->yy_c_buf_p; -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * @param yyscanner The scanner object. - * @return the allocated buffer state. - */ - YY_BUFFER_STATE GeoJson_create_buffer (FILE * file, int size , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) GeoJsonalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in GeoJson_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) GeoJsonalloc(b->yy_buf_size + 2 ,yyscanner ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in GeoJson_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - GeoJson_init_buffer(b,file ,yyscanner); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with GeoJson_create_buffer() - * @param yyscanner The scanner object. - */ - void GeoJson_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - GeoJsonfree((void *) b->yy_ch_buf ,yyscanner ); - - GeoJsonfree((void *) b ,yyscanner ); -} - -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a GeoJsonrestart() or at EOF. - */ - static void GeoJson_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) - -{ - int oerrno = errno; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - GeoJson_flush_buffer(b ,yyscanner); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then GeoJson_init_buffer was _probably_ - * called from GeoJsonrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * @param yyscanner The scanner object. - */ - void GeoJson_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - GeoJson_load_buffer_state(yyscanner ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * @param yyscanner The scanner object. - */ -void GeoJsonpush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (new_buffer == NULL) - return; - - GeoJsonensure_buffer_stack(yyscanner); - - /* This block is copied from GeoJson_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - yyg->yy_buffer_stack_top++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from GeoJson_switch_to_buffer. */ - GeoJson_load_buffer_state(yyscanner ); - yyg->yy_did_buffer_switch_on_eof = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * @param yyscanner The scanner object. - */ -void GeoJsonpop_buffer_state (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (!YY_CURRENT_BUFFER) - return; - - GeoJson_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); - YY_CURRENT_BUFFER_LVALUE = NULL; - if (yyg->yy_buffer_stack_top > 0) - --yyg->yy_buffer_stack_top; - - if (YY_CURRENT_BUFFER) { - GeoJson_load_buffer_state(yyscanner ); - yyg->yy_did_buffer_switch_on_eof = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void GeoJsonensure_buffer_stack (yyscan_t yyscanner) -{ - int num_to_alloc; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (!yyg->yy_buffer_stack) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - yyg->yy_buffer_stack = (struct yy_buffer_state**)GeoJsonalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); - if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in GeoJsonensure_buffer_stack()" ); - - memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - yyg->yy_buffer_stack_max = num_to_alloc; - yyg->yy_buffer_stack_top = 0; - return; - } - - if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = yyg->yy_buffer_stack_max + grow_size; - yyg->yy_buffer_stack = (struct yy_buffer_state**)GeoJsonrealloc - (yyg->yy_buffer_stack, - num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); - if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in GeoJsonensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); - yyg->yy_buffer_stack_max = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE GeoJson_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) GeoJsonalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in GeoJson_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - GeoJson_switch_to_buffer(b ,yyscanner ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to GeoJsonlex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * GeoJson_scan_bytes() instead. - */ -YY_BUFFER_STATE GeoJson_scan_string (yyconst char * yystr , yyscan_t yyscanner) -{ - - return GeoJson_scan_bytes(yystr,strlen(yystr) ,yyscanner); -} - -/** Setup the input buffer state to scan the given bytes. The next call to GeoJsonlex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE GeoJson_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; - buf = (char *) GeoJsonalloc(n ,yyscanner ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in GeoJson_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = GeoJson_scan_buffer(buf,n ,yyscanner); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in GeoJson_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) -{ - (void) spatialite_e( "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = yyg->yy_hold_char; \ - yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ - yyg->yy_hold_char = *yyg->yy_c_buf_p; \ - *yyg->yy_c_buf_p = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the user-defined data for this scanner. - * @param yyscanner The scanner object. - */ -YY_EXTRA_TYPE GeoJsonget_extra (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyextra; -} - -/** Get the current line number. - * @param yyscanner The scanner object. - */ -int GeoJsonget_lineno (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (! YY_CURRENT_BUFFER) - return 0; - - return yylineno; -} - -/** Get the current column number. - * @param yyscanner The scanner object. - */ -int GeoJsonget_column (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (! YY_CURRENT_BUFFER) - return 0; - - return yycolumn; -} - -/** Get the input stream. - * @param yyscanner The scanner object. - */ -FILE *GeoJsonget_in (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyin; -} - -/** Get the output stream. - * @param yyscanner The scanner object. - */ -FILE *GeoJsonget_out (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyout; -} - -/** Get the length of the current token. - * @param yyscanner The scanner object. - */ -int GeoJsonget_leng (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyleng; -} - -/** Get the current token. - * @param yyscanner The scanner object. - */ - -char *GeoJsonget_text (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yytext; -} - -/** Set the user-defined data. This data is never touched by the scanner. - * @param user_defined The data to be associated with this scanner. - * @param yyscanner The scanner object. - */ -void GeoJsonset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyextra = user_defined ; -} - -/** Set the current line number. - * @param line_number - * @param yyscanner The scanner object. - */ -void GeoJsonset_lineno (int line_number , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* lineno is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "GeoJsonset_lineno called with no buffer" , yyscanner); - - yylineno = line_number; -} - -/** Set the current column. - * @param line_number - * @param yyscanner The scanner object. - */ -void GeoJsonset_column (int column_no , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* column is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "GeoJsonset_column called with no buffer" , yyscanner); - - yycolumn = column_no; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * @param yyscanner The scanner object. - * @see GeoJson_switch_to_buffer - */ -void GeoJsonset_in (FILE * in_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyin = in_str ; -} - -void GeoJsonset_out (FILE * out_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyout = out_str ; -} - -int GeoJsonget_debug (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yy_flex_debug; -} - -void GeoJsonset_debug (int bdebug , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yy_flex_debug = bdebug ; -} - -/* Accessor methods for yylval and yylloc */ - -/* User-visible API */ - -/* GeoJsonlex_init is special because it creates the scanner itself, so it is - * the ONLY reentrant function that doesn't take the scanner as the last argument. - * That's why we explicitly handle the declaration, instead of using our macros. - */ - -int GeoJsonlex_init(yyscan_t* ptr_yy_globals) - -{ - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } - - *ptr_yy_globals = (yyscan_t) GeoJsonalloc ( sizeof( struct yyguts_t ), NULL ); - - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } - - /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - - return yy_init_globals ( *ptr_yy_globals ); -} - -/* GeoJsonlex_init_extra has the same functionality as GeoJsonlex_init, but follows the - * convention of taking the scanner as the last argument. Note however, that - * this is a *pointer* to a scanner, as it will be allocated by this call (and - * is the reason, too, why this function also must handle its own declaration). - * The user defined value in the first argument will be available to GeoJsonalloc in - * the yyextra field. - */ - -int GeoJsonlex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) - -{ - struct yyguts_t dummy_yyguts; - - GeoJsonset_extra (yy_user_defined, &dummy_yyguts); - - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } - - *ptr_yy_globals = (yyscan_t) GeoJsonalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); - - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } - - /* By setting to 0xAA, we expose bugs in - yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - - GeoJsonset_extra (yy_user_defined, *ptr_yy_globals); - - return yy_init_globals ( *ptr_yy_globals ); -} - -static int yy_init_globals (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from GeoJsonlex_destroy(), so don't allocate here. - */ - - yyg->yy_buffer_stack = 0; - yyg->yy_buffer_stack_top = 0; - yyg->yy_buffer_stack_max = 0; - yyg->yy_c_buf_p = (char *) 0; - yyg->yy_init = 0; - yyg->yy_start = 0; - - yyg->yy_start_stack_ptr = 0; - yyg->yy_start_stack_depth = 0; - yyg->yy_start_stack = NULL; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = (FILE *) 0; - yyout = (FILE *) 0; -#endif - - /* For future reference: Set errno on error, since we are called by - * GeoJsonlex_init() - */ - return 0; -} - -/* GeoJsonlex_destroy is for both reentrant and non-reentrant scanners. */ -int GeoJsonlex_destroy (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - GeoJson_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); - YY_CURRENT_BUFFER_LVALUE = NULL; - GeoJsonpop_buffer_state(yyscanner); - } - - /* Destroy the stack itself. */ - GeoJsonfree(yyg->yy_buffer_stack ,yyscanner); - yyg->yy_buffer_stack = NULL; - - /* Destroy the start condition stack. */ - GeoJsonfree(yyg->yy_start_stack ,yyscanner ); - yyg->yy_start_stack = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * GeoJsonlex() is called, initialization will occur. */ - yy_init_globals( yyscanner); - - /* Destroy the main struct (reentrant only). */ - GeoJsonfree ( yyscanner , yyscanner ); - yyscanner = NULL; - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *GeoJsonalloc (yy_size_t size , yyscan_t yyscanner) -{ - return (void *) malloc( size ); -} - -void *GeoJsonrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void GeoJsonfree (void * ptr , yyscan_t yyscanner) -{ - free( (char *) ptr ); /* see GeoJsonrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -int GeoJsonwrap(yyscan_t yyscanner ) -{ - return 1; -} - diff --git a/src/spatialite/src/gaiageo/lex.Gml.c b/src/spatialite/src/gaiageo/lex.Gml.c deleted file mode 100644 index b25a1c4..0000000 --- a/src/spatialite/src/gaiageo/lex.Gml.c +++ /dev/null @@ -1,1967 +0,0 @@ - -#line 3 "lex.Gml.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* An opaque pointer. */ -#ifndef YY_TYPEDEF_YY_SCANNER_T -#define YY_TYPEDEF_YY_SCANNER_T -typedef void* yyscan_t; -#endif - -/* For convenience, these vars (plus the bison vars far below) - are macros in the reentrant scanner. */ -#define yyin yyg->yyin_r -#define yyout yyg->yyout_r -#define yyextra yyg->yyextra_r -#define yyleng yyg->yyleng_r -#define yytext yyg->yytext_r -#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) -#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) -#define yy_flex_debug yyg->yy_flex_debug_r - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN yyg->yy_start = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START ((yyg->yy_start - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE Gmlrestart(yyin ,yyscanner ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = yyg->yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via Gmlrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ - ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] - -void Gmlrestart (FILE *input_file ,yyscan_t yyscanner ); -void Gml_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); -YY_BUFFER_STATE Gml_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); -void Gml_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); -void Gml_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); -void Gmlpush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); -void Gmlpop_buffer_state (yyscan_t yyscanner ); - -static void Gmlensure_buffer_stack (yyscan_t yyscanner ); -static void Gml_load_buffer_state (yyscan_t yyscanner ); -static void Gml_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); - -#define YY_FLUSH_BUFFER Gml_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) - -YY_BUFFER_STATE Gml_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); -YY_BUFFER_STATE Gml_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); -YY_BUFFER_STATE Gml_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); - -void *Gmlalloc (yy_size_t ,yyscan_t yyscanner ); -void *Gmlrealloc (void *,yy_size_t ,yyscan_t yyscanner ); -void Gmlfree (void * ,yyscan_t yyscanner ); - -#define yy_new_buffer Gml_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - Gmlensure_buffer_stack (yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = \ - Gml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - Gmlensure_buffer_stack (yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = \ - Gml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -typedef unsigned char YY_CHAR; - -typedef int yy_state_type; - -#define yytext_ptr yytext_r - -static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); -static int yy_get_next_buffer (yyscan_t yyscanner ); -static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yyg->yytext_ptr = yy_bp; \ - yyleng = (size_t) (yy_cp - yy_bp); \ - yyg->yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yyg->yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 11 -#define YY_END_OF_BUFFER 12 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[19] = - { 0, - 5, 5, 12, 10, 8, 9, 10, 5, 1, 3, - 2, 4, 7, 0, 6, 5, 7, 0 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 4, 1, 1, 1, 1, 1, 1, - 1, 1, 5, 5, 5, 5, 6, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 8, 1, 9, - 10, 11, 1, 1, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 1, 1, 1, 1, 12, 1, 12, 12, 12, 12, - - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst flex_int32_t yy_meta[13] = - { 0, - 1, 1, 1, 1, 2, 1, 3, 4, 5, 1, - 5, 4 - } ; - -static yyconst flex_int16_t yy_base[22] = - { 0, - 0, 0, 23, 24, 24, 24, 18, 0, 24, 24, - 24, 24, 0, 17, 24, 0, 0, 24, 12, 15, - 16 - } ; - -static yyconst flex_int16_t yy_def[22] = - { 0, - 18, 1, 18, 18, 18, 18, 19, 20, 18, 18, - 18, 18, 21, 19, 18, 20, 21, 0, 18, 18, - 18 - } ; - -static yyconst flex_int16_t yy_nxt[37] = - { 0, - 4, 5, 6, 7, 8, 9, 8, 4, 10, 11, - 12, 13, 14, 14, 14, 14, 16, 16, 17, 17, - 15, 15, 18, 3, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18 - } ; - -static yyconst flex_int16_t yy_chk[37] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 19, 19, 19, 19, 20, 20, 21, 21, - 14, 7, 3, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18 - } ; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -/* - gmlLexer.l -- GML parser - FLEX config - - version 2.4, 2011 June 3 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#define YY_NO_INPUT 1 -/** -* The main string-token matcher. -* The lower case part is probably not needed. We should really be converting -* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. -* What Flex will do is, For the input string, beginning from the front, Flex -* will try to match with any of the defined tokens from below. Flex will -* then match the string of longest length. Suppose the string is: POINTM, -* Flex would match both POINT and POINTM, but since POINTM is the longer -* of the two tokens, FLEX will match POINTM. -*/ - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#define YY_EXTRA_TYPE struct gml_data * - -/* Holds the entire state of the reentrant scanner. */ -struct yyguts_t - { - - /* User-defined. Not touched by flex. */ - YY_EXTRA_TYPE yyextra_r; - - /* The rest are the same as the globals declared in the non-reentrant scanner. */ - FILE *yyin_r, *yyout_r; - size_t yy_buffer_stack_top; /**< index of top of stack. */ - size_t yy_buffer_stack_max; /**< capacity of stack. */ - YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ - char yy_hold_char; - int yy_n_chars; - int yyleng_r; - char *yy_c_buf_p; - int yy_init; - int yy_start; - int yy_did_buffer_switch_on_eof; - int yy_start_stack_ptr; - int yy_start_stack_depth; - int *yy_start_stack; - yy_state_type yy_last_accepting_state; - char* yy_last_accepting_cpos; - - int yylineno_r; - int yy_flex_debug_r; - - char *yytext_r; - int yy_more_flag; - int yy_more_len; - - }; /* end struct yyguts_t */ - -static int yy_init_globals (yyscan_t yyscanner ); - -int Gmllex_init (yyscan_t* scanner); - -int Gmllex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int Gmllex_destroy (yyscan_t yyscanner ); - -int Gmlget_debug (yyscan_t yyscanner ); - -void Gmlset_debug (int debug_flag ,yyscan_t yyscanner ); - -YY_EXTRA_TYPE Gmlget_extra (yyscan_t yyscanner ); - -void Gmlset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); - -FILE *Gmlget_in (yyscan_t yyscanner ); - -void Gmlset_in (FILE * in_str ,yyscan_t yyscanner ); - -FILE *Gmlget_out (yyscan_t yyscanner ); - -void Gmlset_out (FILE * out_str ,yyscan_t yyscanner ); - -int Gmlget_leng (yyscan_t yyscanner ); - -char *Gmlget_text (yyscan_t yyscanner ); - -int Gmlget_lineno (yyscan_t yyscanner ); - -void Gmlset_lineno (int line_number ,yyscan_t yyscanner ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int Gmlwrap (yyscan_t yyscanner ); -#else -extern int Gmlwrap (yyscan_t yyscanner ); -#endif -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (yyscan_t yyscanner ); -#else -static int input (yyscan_t yyscanner ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - size_t n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int Gmllex (yyscan_t yyscanner); - -#define YY_DECL int Gmllex (yyscan_t yyscanner) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( !yyg->yy_init ) - { - yyg->yy_init = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yyg->yy_start ) - yyg->yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - Gmlensure_buffer_stack (yyscanner); - YY_CURRENT_BUFFER_LVALUE = - Gml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); - } - - Gml_load_buffer_state(yyscanner ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yyg->yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yyg->yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yyg->yy_start; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 19 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 24 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yyg->yy_hold_char; - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - goto yy_find_action; - -case 1: -YY_RULE_SETUP -{ gml_freeString(&(GmlLval.pval)); return GML_END; } - YY_BREAK -case 2: -YY_RULE_SETUP -{ gml_freeString(&(GmlLval.pval)); return GML_EQ; } - YY_BREAK -case 3: -YY_RULE_SETUP -{ gml_freeString(&(GmlLval.pval)); return GML_OPEN; } - YY_BREAK -case 4: -YY_RULE_SETUP -{ gml_freeString(&(GmlLval.pval)); return GML_CLOSE; } - YY_BREAK -case 5: -YY_RULE_SETUP -{ gml_saveString(&(GmlLval.pval), yytext); return GML_COORD; } - YY_BREAK -case 6: -/* rule 6 can match eol */ -YY_RULE_SETUP -{ gml_saveString(&(GmlLval.pval), yytext); return GML_VALUE; } - YY_BREAK -case 7: -YY_RULE_SETUP -{ gml_saveString(&(GmlLval.pval), yytext); return GML_KEYWORD; } - YY_BREAK -case 8: -YY_RULE_SETUP -{ gml_freeString(&(GmlLval.pval)); Gmlget_extra(yyscanner)->gml_col += (int) strlen(yytext); } /* ignore but count white space */ - YY_BREAK -case 9: -/* rule 9 can match eol */ -YY_RULE_SETUP -{ gml_freeString(&(GmlLval.pval)); Gmlget_extra(yyscanner)->gml_col = 0; Gmlget_extra(yyscanner)->gml_line++; } - YY_BREAK -case 10: -YY_RULE_SETUP -{ gml_freeString(&(GmlLval.pval)); Gmlget_extra(yyscanner)->gml_col += (int) strlen(yytext); return -1; } - YY_BREAK -case 11: -YY_RULE_SETUP -ECHO; - YY_BREAK -case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yyg->yy_hold_char; - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * Gmllex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( yyscanner ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); - - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++yyg->yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yyg->yy_c_buf_p; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_END_OF_FILE: - { - yyg->yy_did_buffer_switch_on_eof = 0; - - if ( Gmlwrap(yyscanner ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = - yyg->yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( yyscanner ); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yyg->yy_c_buf_p = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; - - yy_current_state = yy_get_previous_state( yyscanner ); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of Gmllex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = yyg->yytext_ptr; - register int number_to_move, i; - int ret_val; - - if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - - int yy_c_buf_p_offset = - (int) (yyg->yy_c_buf_p - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - Gmlrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - yyg->yy_n_chars, (size_t) num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - if ( yyg->yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - Gmlrestart(yyin ,yyscanner); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) Gmlrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - } - - yyg->yy_n_chars += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (yyscan_t yyscanner) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - yy_current_state = yyg->yy_start; - - for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 19 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) -{ - register int yy_is_jam; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ - register char *yy_cp = yyg->yy_c_buf_p; - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 19 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 18); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (yyscan_t yyscanner) -#else - static int input (yyscan_t yyscanner) -#endif - -{ - int c; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - *yyg->yy_c_buf_p = yyg->yy_hold_char; - - if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) - /* This was really a NUL. */ - *yyg->yy_c_buf_p = '\0'; - - else - { /* need more input */ - int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; - ++yyg->yy_c_buf_p; - - switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - Gmlrestart(yyin ,yyscanner); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( Gmlwrap(yyscanner ) ) - return EOF; - - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(yyscanner); -#else - return input(yyscanner); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = yyg->yytext_ptr + offset; - break; - } - } - } - - c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ - *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ - yyg->yy_hold_char = *++yyg->yy_c_buf_p; - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * @param yyscanner The scanner object. - * @note This function does not reset the start condition to @c INITIAL . - */ - void Gmlrestart (FILE * input_file , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( ! YY_CURRENT_BUFFER ){ - Gmlensure_buffer_stack (yyscanner); - YY_CURRENT_BUFFER_LVALUE = - Gml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); - } - - Gml_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); - Gml_load_buffer_state(yyscanner ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * @param yyscanner The scanner object. - */ - void Gml_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* TODO. We should be able to replace this entire function body - * with - * Gmlpop_buffer_state(); - * Gmlpush_buffer_state(new_buffer); - */ - Gmlensure_buffer_stack (yyscanner); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - Gml_load_buffer_state(yyscanner ); - - /* We don't actually know whether we did this switch during - * EOF (Gmlwrap()) processing, but the only time this flag - * is looked at is after Gmlwrap() is called, so it's safe - * to go ahead and always set it. - */ - yyg->yy_did_buffer_switch_on_eof = 1; -} - -static void Gml_load_buffer_state (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - yyg->yy_hold_char = *yyg->yy_c_buf_p; -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * @param yyscanner The scanner object. - * @return the allocated buffer state. - */ - YY_BUFFER_STATE Gml_create_buffer (FILE * file, int size , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) Gmlalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in Gml_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) Gmlalloc(b->yy_buf_size + 2 ,yyscanner ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in Gml_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - Gml_init_buffer(b,file ,yyscanner); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with Gml_create_buffer() - * @param yyscanner The scanner object. - */ - void Gml_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - Gmlfree((void *) b->yy_ch_buf ,yyscanner ); - - Gmlfree((void *) b ,yyscanner ); -} - -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a Gmlrestart() or at EOF. - */ - static void Gml_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) - -{ - int oerrno = errno; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - Gml_flush_buffer(b ,yyscanner); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then Gml_init_buffer was _probably_ - * called from Gmlrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * @param yyscanner The scanner object. - */ - void Gml_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - Gml_load_buffer_state(yyscanner ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * @param yyscanner The scanner object. - */ -void Gmlpush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (new_buffer == NULL) - return; - - Gmlensure_buffer_stack(yyscanner); - - /* This block is copied from Gml_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - yyg->yy_buffer_stack_top++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from Gml_switch_to_buffer. */ - Gml_load_buffer_state(yyscanner ); - yyg->yy_did_buffer_switch_on_eof = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * @param yyscanner The scanner object. - */ -void Gmlpop_buffer_state (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (!YY_CURRENT_BUFFER) - return; - - Gml_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); - YY_CURRENT_BUFFER_LVALUE = NULL; - if (yyg->yy_buffer_stack_top > 0) - --yyg->yy_buffer_stack_top; - - if (YY_CURRENT_BUFFER) { - Gml_load_buffer_state(yyscanner ); - yyg->yy_did_buffer_switch_on_eof = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void Gmlensure_buffer_stack (yyscan_t yyscanner) -{ - int num_to_alloc; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (!yyg->yy_buffer_stack) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - yyg->yy_buffer_stack = (struct yy_buffer_state**)Gmlalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); - if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in Gmlensure_buffer_stack()" ); - - memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - yyg->yy_buffer_stack_max = num_to_alloc; - yyg->yy_buffer_stack_top = 0; - return; - } - - if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = yyg->yy_buffer_stack_max + grow_size; - yyg->yy_buffer_stack = (struct yy_buffer_state**)Gmlrealloc - (yyg->yy_buffer_stack, - num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); - if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in Gmlensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); - yyg->yy_buffer_stack_max = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE Gml_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) Gmlalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in Gml_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - Gml_switch_to_buffer(b ,yyscanner ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to Gmllex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * Gml_scan_bytes() instead. - */ -YY_BUFFER_STATE Gml_scan_string (yyconst char * yystr , yyscan_t yyscanner) -{ - - return Gml_scan_bytes(yystr,strlen(yystr) ,yyscanner); -} - -/** Setup the input buffer state to scan the given bytes. The next call to Gmllex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE Gml_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; - buf = (char *) Gmlalloc(n ,yyscanner ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in Gml_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = Gml_scan_buffer(buf,n ,yyscanner); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in Gml_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) -{ - (void) spatialite_e( "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = yyg->yy_hold_char; \ - yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ - yyg->yy_hold_char = *yyg->yy_c_buf_p; \ - *yyg->yy_c_buf_p = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the user-defined data for this scanner. - * @param yyscanner The scanner object. - */ -YY_EXTRA_TYPE Gmlget_extra (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyextra; -} - -/** Get the current line number. - * @param yyscanner The scanner object. - */ -int Gmlget_lineno (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (! YY_CURRENT_BUFFER) - return 0; - - return yylineno; -} - -/** Get the current column number. - * @param yyscanner The scanner object. - */ -int Gmlget_column (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (! YY_CURRENT_BUFFER) - return 0; - - return yycolumn; -} - -/** Get the input stream. - * @param yyscanner The scanner object. - */ -FILE *Gmlget_in (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyin; -} - -/** Get the output stream. - * @param yyscanner The scanner object. - */ -FILE *Gmlget_out (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyout; -} - -/** Get the length of the current token. - * @param yyscanner The scanner object. - */ -int Gmlget_leng (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyleng; -} - -/** Get the current token. - * @param yyscanner The scanner object. - */ - -char *Gmlget_text (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yytext; -} - -/** Set the user-defined data. This data is never touched by the scanner. - * @param user_defined The data to be associated with this scanner. - * @param yyscanner The scanner object. - */ -void Gmlset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyextra = user_defined ; -} - -/** Set the current line number. - * @param line_number - * @param yyscanner The scanner object. - */ -void Gmlset_lineno (int line_number , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* lineno is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "Gmlset_lineno called with no buffer" , yyscanner); - - yylineno = line_number; -} - -/** Set the current column. - * @param line_number - * @param yyscanner The scanner object. - */ -void Gmlset_column (int column_no , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* column is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "Gmlset_column called with no buffer" , yyscanner); - - yycolumn = column_no; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * @param yyscanner The scanner object. - * @see Gml_switch_to_buffer - */ -void Gmlset_in (FILE * in_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyin = in_str ; -} - -void Gmlset_out (FILE * out_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyout = out_str ; -} - -int Gmlget_debug (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yy_flex_debug; -} - -void Gmlset_debug (int bdebug , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yy_flex_debug = bdebug ; -} - -/* Accessor methods for yylval and yylloc */ - -/* User-visible API */ - -/* Gmllex_init is special because it creates the scanner itself, so it is - * the ONLY reentrant function that doesn't take the scanner as the last argument. - * That's why we explicitly handle the declaration, instead of using our macros. - */ - -int Gmllex_init(yyscan_t* ptr_yy_globals) - -{ - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } - - *ptr_yy_globals = (yyscan_t) Gmlalloc ( sizeof( struct yyguts_t ), NULL ); - - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } - - /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - - return yy_init_globals ( *ptr_yy_globals ); -} - -/* Gmllex_init_extra has the same functionality as Gmllex_init, but follows the - * convention of taking the scanner as the last argument. Note however, that - * this is a *pointer* to a scanner, as it will be allocated by this call (and - * is the reason, too, why this function also must handle its own declaration). - * The user defined value in the first argument will be available to Gmlalloc in - * the yyextra field. - */ - -int Gmllex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) - -{ - struct yyguts_t dummy_yyguts; - - Gmlset_extra (yy_user_defined, &dummy_yyguts); - - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } - - *ptr_yy_globals = (yyscan_t) Gmlalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); - - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } - - /* By setting to 0xAA, we expose bugs in - yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - - Gmlset_extra (yy_user_defined, *ptr_yy_globals); - - return yy_init_globals ( *ptr_yy_globals ); -} - -static int yy_init_globals (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from Gmllex_destroy(), so don't allocate here. - */ - - yyg->yy_buffer_stack = 0; - yyg->yy_buffer_stack_top = 0; - yyg->yy_buffer_stack_max = 0; - yyg->yy_c_buf_p = (char *) 0; - yyg->yy_init = 0; - yyg->yy_start = 0; - - yyg->yy_start_stack_ptr = 0; - yyg->yy_start_stack_depth = 0; - yyg->yy_start_stack = NULL; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = (FILE *) 0; - yyout = (FILE *) 0; -#endif - - /* For future reference: Set errno on error, since we are called by - * Gmllex_init() - */ - return 0; -} - -/* Gmllex_destroy is for both reentrant and non-reentrant scanners. */ -int Gmllex_destroy (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - Gml_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); - YY_CURRENT_BUFFER_LVALUE = NULL; - Gmlpop_buffer_state(yyscanner); - } - - /* Destroy the stack itself. */ - Gmlfree(yyg->yy_buffer_stack ,yyscanner); - yyg->yy_buffer_stack = NULL; - - /* Destroy the start condition stack. */ - Gmlfree(yyg->yy_start_stack ,yyscanner ); - yyg->yy_start_stack = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * Gmllex() is called, initialization will occur. */ - yy_init_globals( yyscanner); - - /* Destroy the main struct (reentrant only). */ - Gmlfree ( yyscanner , yyscanner ); - yyscanner = NULL; - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *Gmlalloc (yy_size_t size , yyscan_t yyscanner) -{ - return (void *) malloc( size ); -} - -void *Gmlrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void Gmlfree (void * ptr , yyscan_t yyscanner) -{ - free( (char *) ptr ); /* see Gmlrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -int Gmlwrap(yyscan_t yyscanner ) -{ - return 1; -} - diff --git a/src/spatialite/src/gaiageo/lex.Kml.c b/src/spatialite/src/gaiageo/lex.Kml.c deleted file mode 100644 index 356b95c..0000000 --- a/src/spatialite/src/gaiageo/lex.Kml.c +++ /dev/null @@ -1,1967 +0,0 @@ - -#line 3 "lex.Kml.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* An opaque pointer. */ -#ifndef YY_TYPEDEF_YY_SCANNER_T -#define YY_TYPEDEF_YY_SCANNER_T -typedef void* yyscan_t; -#endif - -/* For convenience, these vars (plus the bison vars far below) - are macros in the reentrant scanner. */ -#define yyin yyg->yyin_r -#define yyout yyg->yyout_r -#define yyextra yyg->yyextra_r -#define yyleng yyg->yyleng_r -#define yytext yyg->yytext_r -#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) -#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) -#define yy_flex_debug yyg->yy_flex_debug_r - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN yyg->yy_start = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START ((yyg->yy_start - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE Kmlrestart(yyin ,yyscanner ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = yyg->yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via Kmlrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ - ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] - -void Kmlrestart (FILE *input_file ,yyscan_t yyscanner ); -void Kml_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); -YY_BUFFER_STATE Kml_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); -void Kml_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); -void Kml_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); -void Kmlpush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); -void Kmlpop_buffer_state (yyscan_t yyscanner ); - -static void Kmlensure_buffer_stack (yyscan_t yyscanner ); -static void Kml_load_buffer_state (yyscan_t yyscanner ); -static void Kml_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); - -#define YY_FLUSH_BUFFER Kml_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) - -YY_BUFFER_STATE Kml_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); -YY_BUFFER_STATE Kml_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); -YY_BUFFER_STATE Kml_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); - -void *Kmlalloc (yy_size_t ,yyscan_t yyscanner ); -void *Kmlrealloc (void *,yy_size_t ,yyscan_t yyscanner ); -void Kmlfree (void * ,yyscan_t yyscanner ); - -#define yy_new_buffer Kml_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - Kmlensure_buffer_stack (yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = \ - Kml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - Kmlensure_buffer_stack (yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = \ - Kml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -typedef unsigned char YY_CHAR; - -typedef int yy_state_type; - -#define yytext_ptr yytext_r - -static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); -static int yy_get_next_buffer (yyscan_t yyscanner ); -static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yyg->yytext_ptr = yy_bp; \ - yyleng = (size_t) (yy_cp - yy_bp); \ - yyg->yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yyg->yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 11 -#define YY_END_OF_BUFFER 12 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[19] = - { 0, - 5, 5, 12, 10, 8, 9, 10, 5, 1, 3, - 2, 4, 7, 0, 6, 5, 7, 0 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 4, 1, 1, 1, 1, 1, 1, - 1, 1, 5, 5, 5, 5, 6, 7, 7, 7, - 7, 7, 7, 7, 7, 7, 7, 8, 1, 9, - 10, 11, 1, 1, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 1, 1, 1, 1, 12, 1, 12, 12, 12, 12, - - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst flex_int32_t yy_meta[13] = - { 0, - 1, 1, 1, 1, 2, 1, 3, 4, 5, 1, - 5, 4 - } ; - -static yyconst flex_int16_t yy_base[22] = - { 0, - 0, 0, 23, 24, 24, 24, 18, 0, 24, 24, - 24, 24, 0, 17, 24, 0, 0, 24, 12, 15, - 16 - } ; - -static yyconst flex_int16_t yy_def[22] = - { 0, - 18, 1, 18, 18, 18, 18, 19, 20, 18, 18, - 18, 18, 21, 19, 18, 20, 21, 0, 18, 18, - 18 - } ; - -static yyconst flex_int16_t yy_nxt[37] = - { 0, - 4, 5, 6, 7, 8, 9, 8, 4, 10, 11, - 12, 13, 14, 14, 14, 14, 16, 16, 17, 17, - 15, 15, 18, 3, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18 - } ; - -static yyconst flex_int16_t yy_chk[37] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 19, 19, 19, 19, 20, 20, 21, 21, - 14, 7, 3, 18, 18, 18, 18, 18, 18, 18, - 18, 18, 18, 18, 18, 18 - } ; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -/* - kmlLexer.l -- KML parser - FLEX config - - version 2.4, 2011 June 14 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#define YY_NO_INPUT 1 -/** -* The main string-token matcher. -* The lower case part is probably not needed. We should really be converting -* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. -* What Flex will do is, For the input string, beginning from the front, Flex -* will try to match with any of the defined tokens from below. Flex will -* then match the string of longest length. Suppose the string is: POINTM, -* Flex would match both POINT and POINTM, but since POINTM is the longer -* of the two tokens, FLEX will match POINTM. -*/ - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#define YY_EXTRA_TYPE struct kml_data * - -/* Holds the entire state of the reentrant scanner. */ -struct yyguts_t - { - - /* User-defined. Not touched by flex. */ - YY_EXTRA_TYPE yyextra_r; - - /* The rest are the same as the globals declared in the non-reentrant scanner. */ - FILE *yyin_r, *yyout_r; - size_t yy_buffer_stack_top; /**< index of top of stack. */ - size_t yy_buffer_stack_max; /**< capacity of stack. */ - YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ - char yy_hold_char; - int yy_n_chars; - int yyleng_r; - char *yy_c_buf_p; - int yy_init; - int yy_start; - int yy_did_buffer_switch_on_eof; - int yy_start_stack_ptr; - int yy_start_stack_depth; - int *yy_start_stack; - yy_state_type yy_last_accepting_state; - char* yy_last_accepting_cpos; - - int yylineno_r; - int yy_flex_debug_r; - - char *yytext_r; - int yy_more_flag; - int yy_more_len; - - }; /* end struct yyguts_t */ - -static int yy_init_globals (yyscan_t yyscanner ); - -int Kmllex_init (yyscan_t* scanner); - -int Kmllex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int Kmllex_destroy (yyscan_t yyscanner ); - -int Kmlget_debug (yyscan_t yyscanner ); - -void Kmlset_debug (int debug_flag ,yyscan_t yyscanner ); - -YY_EXTRA_TYPE Kmlget_extra (yyscan_t yyscanner ); - -void Kmlset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); - -FILE *Kmlget_in (yyscan_t yyscanner ); - -void Kmlset_in (FILE * in_str ,yyscan_t yyscanner ); - -FILE *Kmlget_out (yyscan_t yyscanner ); - -void Kmlset_out (FILE * out_str ,yyscan_t yyscanner ); - -int Kmlget_leng (yyscan_t yyscanner ); - -char *Kmlget_text (yyscan_t yyscanner ); - -int Kmlget_lineno (yyscan_t yyscanner ); - -void Kmlset_lineno (int line_number ,yyscan_t yyscanner ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int Kmlwrap (yyscan_t yyscanner ); -#else -extern int Kmlwrap (yyscan_t yyscanner ); -#endif -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (yyscan_t yyscanner ); -#else -static int input (yyscan_t yyscanner ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - size_t n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int Kmllex (yyscan_t yyscanner); - -#define YY_DECL int Kmllex (yyscan_t yyscanner) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( !yyg->yy_init ) - { - yyg->yy_init = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yyg->yy_start ) - yyg->yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - Kmlensure_buffer_stack (yyscanner); - YY_CURRENT_BUFFER_LVALUE = - Kml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); - } - - Kml_load_buffer_state(yyscanner ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yyg->yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yyg->yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yyg->yy_start; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 19 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 24 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yyg->yy_hold_char; - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - goto yy_find_action; - -case 1: -YY_RULE_SETUP -{ kml_freeString(&(KmlLval.pval)); return KML_END; } - YY_BREAK -case 2: -YY_RULE_SETUP -{ kml_freeString(&(KmlLval.pval)); return KML_EQ; } - YY_BREAK -case 3: -YY_RULE_SETUP -{ kml_freeString(&(KmlLval.pval)); return KML_OPEN; } - YY_BREAK -case 4: -YY_RULE_SETUP -{ kml_freeString(&(KmlLval.pval)); return KML_CLOSE; } - YY_BREAK -case 5: -YY_RULE_SETUP -{ kml_saveString(&(KmlLval.pval), yytext); return KML_COORD; } - YY_BREAK -case 6: -/* rule 6 can match eol */ -YY_RULE_SETUP -{ kml_saveString(&(KmlLval.pval), yytext); return KML_VALUE; } - YY_BREAK -case 7: -YY_RULE_SETUP -{ kml_saveString(&(KmlLval.pval), yytext); return KML_KEYWORD; } - YY_BREAK -case 8: -YY_RULE_SETUP -{ kml_freeString(&(KmlLval.pval)); Kmlget_extra(yyscanner)->kml_col += (int) strlen(yytext); } /* ignore but count white space */ - YY_BREAK -case 9: -/* rule 9 can match eol */ -YY_RULE_SETUP -{ kml_freeString(&(KmlLval.pval)); Kmlget_extra(yyscanner)->kml_col = 0; Kmlget_extra(yyscanner)->kml_line++; } - YY_BREAK -case 10: -YY_RULE_SETUP -{ kml_freeString(&(KmlLval.pval)); Kmlget_extra(yyscanner)->kml_col += (int) strlen(yytext); return -1; } - YY_BREAK -case 11: -YY_RULE_SETUP -ECHO; - YY_BREAK -case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yyg->yy_hold_char; - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * Kmllex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( yyscanner ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); - - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++yyg->yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yyg->yy_c_buf_p; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_END_OF_FILE: - { - yyg->yy_did_buffer_switch_on_eof = 0; - - if ( Kmlwrap(yyscanner ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = - yyg->yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( yyscanner ); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yyg->yy_c_buf_p = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; - - yy_current_state = yy_get_previous_state( yyscanner ); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of Kmllex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = yyg->yytext_ptr; - register int number_to_move, i; - int ret_val; - - if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - - int yy_c_buf_p_offset = - (int) (yyg->yy_c_buf_p - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - Kmlrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - yyg->yy_n_chars, (size_t) num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - if ( yyg->yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - Kmlrestart(yyin ,yyscanner); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) Kmlrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - } - - yyg->yy_n_chars += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (yyscan_t yyscanner) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - yy_current_state = yyg->yy_start; - - for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 19 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) -{ - register int yy_is_jam; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ - register char *yy_cp = yyg->yy_c_buf_p; - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 19 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 18); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (yyscan_t yyscanner) -#else - static int input (yyscan_t yyscanner) -#endif - -{ - int c; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - *yyg->yy_c_buf_p = yyg->yy_hold_char; - - if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) - /* This was really a NUL. */ - *yyg->yy_c_buf_p = '\0'; - - else - { /* need more input */ - int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; - ++yyg->yy_c_buf_p; - - switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - Kmlrestart(yyin ,yyscanner); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( Kmlwrap(yyscanner ) ) - return EOF; - - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(yyscanner); -#else - return input(yyscanner); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = yyg->yytext_ptr + offset; - break; - } - } - } - - c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ - *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ - yyg->yy_hold_char = *++yyg->yy_c_buf_p; - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * @param yyscanner The scanner object. - * @note This function does not reset the start condition to @c INITIAL . - */ - void Kmlrestart (FILE * input_file , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( ! YY_CURRENT_BUFFER ){ - Kmlensure_buffer_stack (yyscanner); - YY_CURRENT_BUFFER_LVALUE = - Kml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); - } - - Kml_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); - Kml_load_buffer_state(yyscanner ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * @param yyscanner The scanner object. - */ - void Kml_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* TODO. We should be able to replace this entire function body - * with - * Kmlpop_buffer_state(); - * Kmlpush_buffer_state(new_buffer); - */ - Kmlensure_buffer_stack (yyscanner); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - Kml_load_buffer_state(yyscanner ); - - /* We don't actually know whether we did this switch during - * EOF (Kmlwrap()) processing, but the only time this flag - * is looked at is after Kmlwrap() is called, so it's safe - * to go ahead and always set it. - */ - yyg->yy_did_buffer_switch_on_eof = 1; -} - -static void Kml_load_buffer_state (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - yyg->yy_hold_char = *yyg->yy_c_buf_p; -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * @param yyscanner The scanner object. - * @return the allocated buffer state. - */ - YY_BUFFER_STATE Kml_create_buffer (FILE * file, int size , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) Kmlalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in Kml_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) Kmlalloc(b->yy_buf_size + 2 ,yyscanner ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in Kml_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - Kml_init_buffer(b,file ,yyscanner); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with Kml_create_buffer() - * @param yyscanner The scanner object. - */ - void Kml_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - Kmlfree((void *) b->yy_ch_buf ,yyscanner ); - - Kmlfree((void *) b ,yyscanner ); -} - -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a Kmlrestart() or at EOF. - */ - static void Kml_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) - -{ - int oerrno = errno; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - Kml_flush_buffer(b ,yyscanner); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then Kml_init_buffer was _probably_ - * called from Kmlrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * @param yyscanner The scanner object. - */ - void Kml_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - Kml_load_buffer_state(yyscanner ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * @param yyscanner The scanner object. - */ -void Kmlpush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (new_buffer == NULL) - return; - - Kmlensure_buffer_stack(yyscanner); - - /* This block is copied from Kml_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - yyg->yy_buffer_stack_top++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from Kml_switch_to_buffer. */ - Kml_load_buffer_state(yyscanner ); - yyg->yy_did_buffer_switch_on_eof = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * @param yyscanner The scanner object. - */ -void Kmlpop_buffer_state (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (!YY_CURRENT_BUFFER) - return; - - Kml_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); - YY_CURRENT_BUFFER_LVALUE = NULL; - if (yyg->yy_buffer_stack_top > 0) - --yyg->yy_buffer_stack_top; - - if (YY_CURRENT_BUFFER) { - Kml_load_buffer_state(yyscanner ); - yyg->yy_did_buffer_switch_on_eof = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void Kmlensure_buffer_stack (yyscan_t yyscanner) -{ - int num_to_alloc; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (!yyg->yy_buffer_stack) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - yyg->yy_buffer_stack = (struct yy_buffer_state**)Kmlalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); - if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in Kmlensure_buffer_stack()" ); - - memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - yyg->yy_buffer_stack_max = num_to_alloc; - yyg->yy_buffer_stack_top = 0; - return; - } - - if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = yyg->yy_buffer_stack_max + grow_size; - yyg->yy_buffer_stack = (struct yy_buffer_state**)Kmlrealloc - (yyg->yy_buffer_stack, - num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); - if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in Kmlensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); - yyg->yy_buffer_stack_max = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE Kml_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) Kmlalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in Kml_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - Kml_switch_to_buffer(b ,yyscanner ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to Kmllex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * Kml_scan_bytes() instead. - */ -YY_BUFFER_STATE Kml_scan_string (yyconst char * yystr , yyscan_t yyscanner) -{ - - return Kml_scan_bytes(yystr,strlen(yystr) ,yyscanner); -} - -/** Setup the input buffer state to scan the given bytes. The next call to Kmllex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE Kml_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; - buf = (char *) Kmlalloc(n ,yyscanner ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in Kml_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = Kml_scan_buffer(buf,n ,yyscanner); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in Kml_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) -{ - (void) spatialite_e( "%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = yyg->yy_hold_char; \ - yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ - yyg->yy_hold_char = *yyg->yy_c_buf_p; \ - *yyg->yy_c_buf_p = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the user-defined data for this scanner. - * @param yyscanner The scanner object. - */ -YY_EXTRA_TYPE Kmlget_extra (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyextra; -} - -/** Get the current line number. - * @param yyscanner The scanner object. - */ -int Kmlget_lineno (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (! YY_CURRENT_BUFFER) - return 0; - - return yylineno; -} - -/** Get the current column number. - * @param yyscanner The scanner object. - */ -int Kmlget_column (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (! YY_CURRENT_BUFFER) - return 0; - - return yycolumn; -} - -/** Get the input stream. - * @param yyscanner The scanner object. - */ -FILE *Kmlget_in (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyin; -} - -/** Get the output stream. - * @param yyscanner The scanner object. - */ -FILE *Kmlget_out (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyout; -} - -/** Get the length of the current token. - * @param yyscanner The scanner object. - */ -int Kmlget_leng (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyleng; -} - -/** Get the current token. - * @param yyscanner The scanner object. - */ - -char *Kmlget_text (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yytext; -} - -/** Set the user-defined data. This data is never touched by the scanner. - * @param user_defined The data to be associated with this scanner. - * @param yyscanner The scanner object. - */ -void Kmlset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyextra = user_defined ; -} - -/** Set the current line number. - * @param line_number - * @param yyscanner The scanner object. - */ -void Kmlset_lineno (int line_number , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* lineno is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "Kmlset_lineno called with no buffer" , yyscanner); - - yylineno = line_number; -} - -/** Set the current column. - * @param line_number - * @param yyscanner The scanner object. - */ -void Kmlset_column (int column_no , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* column is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "Kmlset_column called with no buffer" , yyscanner); - - yycolumn = column_no; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * @param yyscanner The scanner object. - * @see Kml_switch_to_buffer - */ -void Kmlset_in (FILE * in_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyin = in_str ; -} - -void Kmlset_out (FILE * out_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyout = out_str ; -} - -int Kmlget_debug (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yy_flex_debug; -} - -void Kmlset_debug (int bdebug , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yy_flex_debug = bdebug ; -} - -/* Accessor methods for yylval and yylloc */ - -/* User-visible API */ - -/* Kmllex_init is special because it creates the scanner itself, so it is - * the ONLY reentrant function that doesn't take the scanner as the last argument. - * That's why we explicitly handle the declaration, instead of using our macros. - */ - -int Kmllex_init(yyscan_t* ptr_yy_globals) - -{ - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } - - *ptr_yy_globals = (yyscan_t) Kmlalloc ( sizeof( struct yyguts_t ), NULL ); - - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } - - /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - - return yy_init_globals ( *ptr_yy_globals ); -} - -/* Kmllex_init_extra has the same functionality as Kmllex_init, but follows the - * convention of taking the scanner as the last argument. Note however, that - * this is a *pointer* to a scanner, as it will be allocated by this call (and - * is the reason, too, why this function also must handle its own declaration). - * The user defined value in the first argument will be available to Kmlalloc in - * the yyextra field. - */ - -int Kmllex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) - -{ - struct yyguts_t dummy_yyguts; - - Kmlset_extra (yy_user_defined, &dummy_yyguts); - - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } - - *ptr_yy_globals = (yyscan_t) Kmlalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); - - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } - - /* By setting to 0xAA, we expose bugs in - yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - - Kmlset_extra (yy_user_defined, *ptr_yy_globals); - - return yy_init_globals ( *ptr_yy_globals ); -} - -static int yy_init_globals (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from Kmllex_destroy(), so don't allocate here. - */ - - yyg->yy_buffer_stack = 0; - yyg->yy_buffer_stack_top = 0; - yyg->yy_buffer_stack_max = 0; - yyg->yy_c_buf_p = (char *) 0; - yyg->yy_init = 0; - yyg->yy_start = 0; - - yyg->yy_start_stack_ptr = 0; - yyg->yy_start_stack_depth = 0; - yyg->yy_start_stack = NULL; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = (FILE *) 0; - yyout = (FILE *) 0; -#endif - - /* For future reference: Set errno on error, since we are called by - * Kmllex_init() - */ - return 0; -} - -/* Kmllex_destroy is for both reentrant and non-reentrant scanners. */ -int Kmllex_destroy (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - Kml_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); - YY_CURRENT_BUFFER_LVALUE = NULL; - Kmlpop_buffer_state(yyscanner); - } - - /* Destroy the stack itself. */ - Kmlfree(yyg->yy_buffer_stack ,yyscanner); - yyg->yy_buffer_stack = NULL; - - /* Destroy the start condition stack. */ - Kmlfree(yyg->yy_start_stack ,yyscanner ); - yyg->yy_start_stack = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * Kmllex() is called, initialization will occur. */ - yy_init_globals( yyscanner); - - /* Destroy the main struct (reentrant only). */ - Kmlfree ( yyscanner , yyscanner ); - yyscanner = NULL; - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *Kmlalloc (yy_size_t size , yyscan_t yyscanner) -{ - return (void *) malloc( size ); -} - -void *Kmlrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void Kmlfree (void * ptr , yyscan_t yyscanner) -{ - free( (char *) ptr ); /* see Kmlrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -int Kmlwrap(yyscan_t yyscanner ) -{ - return 1; -} - diff --git a/src/spatialite/src/gaiageo/lex.VanuatuWkt.c b/src/spatialite/src/gaiageo/lex.VanuatuWkt.c deleted file mode 100644 index 35fc882..0000000 --- a/src/spatialite/src/gaiageo/lex.VanuatuWkt.c +++ /dev/null @@ -1,2219 +0,0 @@ - -#line 3 "lex.VanuatuWkt.c" - -#define YY_INT_ALIGNED short int - -/* A lexical scanner generated by flex */ - -#define FLEX_SCANNER -#define YY_FLEX_MAJOR_VERSION 2 -#define YY_FLEX_MINOR_VERSION 5 -#define YY_FLEX_SUBMINOR_VERSION 35 -#if YY_FLEX_SUBMINOR_VERSION > 0 -#define FLEX_BETA -#endif - -/* First, we deal with platform-specific or compiler-specific issues. */ - -/* begin standard C headers. */ -#include -#include -#include -#include - -/* end standard C headers. */ - -/* flex integer type definitions */ - -#ifndef FLEXINT_H -#define FLEXINT_H - -/* C99 systems have . Non-C99 systems may or may not. */ - -#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L - -/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, - * if you want the limit (max/min) macros for int types. - */ -#ifndef __STDC_LIMIT_MACROS -#define __STDC_LIMIT_MACROS 1 -#endif - -#include -typedef int8_t flex_int8_t; -typedef uint8_t flex_uint8_t; -typedef int16_t flex_int16_t; -typedef uint16_t flex_uint16_t; -typedef int32_t flex_int32_t; -typedef uint32_t flex_uint32_t; -#else -typedef signed char flex_int8_t; -typedef short int flex_int16_t; -typedef int flex_int32_t; -typedef unsigned char flex_uint8_t; -typedef unsigned short int flex_uint16_t; -typedef unsigned int flex_uint32_t; - -/* Limits of integral types. */ -#ifndef INT8_MIN -#define INT8_MIN (-128) -#endif -#ifndef INT16_MIN -#define INT16_MIN (-32767-1) -#endif -#ifndef INT32_MIN -#define INT32_MIN (-2147483647-1) -#endif -#ifndef INT8_MAX -#define INT8_MAX (127) -#endif -#ifndef INT16_MAX -#define INT16_MAX (32767) -#endif -#ifndef INT32_MAX -#define INT32_MAX (2147483647) -#endif -#ifndef UINT8_MAX -#define UINT8_MAX (255U) -#endif -#ifndef UINT16_MAX -#define UINT16_MAX (65535U) -#endif -#ifndef UINT32_MAX -#define UINT32_MAX (4294967295U) -#endif - -#endif /* ! C99 */ - -#endif /* ! FLEXINT_H */ - -#ifdef __cplusplus - -/* The "const" storage-class-modifier is valid. */ -#define YY_USE_CONST - -#else /* ! __cplusplus */ - -/* C99 requires __STDC__ to be defined as 1. */ -#if defined (__STDC__) - -#define YY_USE_CONST - -#endif /* defined (__STDC__) */ -#endif /* ! __cplusplus */ - -#ifdef YY_USE_CONST -#define yyconst const -#else -#define yyconst -#endif - -/* Returned upon end-of-file. */ -#define YY_NULL 0 - -/* Promotes a possibly negative, possibly signed char to an unsigned - * integer for use as an array index. If the signed char is negative, - * we want to instead treat it as an 8-bit unsigned char, hence the - * double cast. - */ -#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) - -/* An opaque pointer. */ -#ifndef YY_TYPEDEF_YY_SCANNER_T -#define YY_TYPEDEF_YY_SCANNER_T -typedef void* yyscan_t; -#endif - -/* For convenience, these vars (plus the bison vars far below) - are macros in the reentrant scanner. */ -#define yyin yyg->yyin_r -#define yyout yyg->yyout_r -#define yyextra yyg->yyextra_r -#define yyleng yyg->yyleng_r -#define yytext yyg->yytext_r -#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) -#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) -#define yy_flex_debug yyg->yy_flex_debug_r - -/* Enter a start condition. This macro really ought to take a parameter, - * but we do it the disgusting crufty way forced on us by the ()-less - * definition of BEGIN. - */ -#define BEGIN yyg->yy_start = 1 + 2 * - -/* Translate the current start state into a value that can be later handed - * to BEGIN to return to the state. The YYSTATE alias is for lex - * compatibility. - */ -#define YY_START ((yyg->yy_start - 1) / 2) -#define YYSTATE YY_START - -/* Action number for EOF rule of a given start state. */ -#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) - -/* Special action meaning "start processing a new file". */ -#define YY_NEW_FILE VanuatuWktrestart(yyin ,yyscanner ) - -#define YY_END_OF_BUFFER_CHAR 0 - -/* Size of default input buffer. */ -#ifndef YY_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k. - * Moreover, YY_BUF_SIZE is 2*YY_READ_BUF_SIZE in the general case. - * Ditto for the __ia64__ case accordingly. - */ -#define YY_BUF_SIZE 32768 -#else -#define YY_BUF_SIZE 16384 -#endif /* __ia64__ */ -#endif - -/* The state buf must be large enough to hold one state per character in the main buffer. - */ -#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) - -#ifndef YY_TYPEDEF_YY_BUFFER_STATE -#define YY_TYPEDEF_YY_BUFFER_STATE -typedef struct yy_buffer_state *YY_BUFFER_STATE; -#endif - -#define EOB_ACT_CONTINUE_SCAN 0 -#define EOB_ACT_END_OF_FILE 1 -#define EOB_ACT_LAST_MATCH 2 - - #define YY_LESS_LINENO(n) - -/* Return all but the first "n" matched characters back to the input stream. */ -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - *yy_cp = yyg->yy_hold_char; \ - YY_RESTORE_YY_MORE_OFFSET \ - yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ - YY_DO_BEFORE_ACTION; /* set up yytext again */ \ - } \ - while ( 0 ) - -#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) - -#ifndef YY_TYPEDEF_YY_SIZE_T -#define YY_TYPEDEF_YY_SIZE_T -typedef size_t yy_size_t; -#endif - -#ifndef YY_STRUCT_YY_BUFFER_STATE -#define YY_STRUCT_YY_BUFFER_STATE -struct yy_buffer_state - { - FILE *yy_input_file; - - char *yy_ch_buf; /* input buffer */ - char *yy_buf_pos; /* current position in input buffer */ - - /* Size of input buffer in bytes, not including room for EOB - * characters. - */ - yy_size_t yy_buf_size; - - /* Number of characters read into yy_ch_buf, not including EOB - * characters. - */ - int yy_n_chars; - - /* Whether we "own" the buffer - i.e., we know we created it, - * and can realloc() it to grow it, and should free() it to - * delete it. - */ - int yy_is_our_buffer; - - /* Whether this is an "interactive" input source; if so, and - * if we're using stdio for input, then we want to use getc() - * instead of fread(), to make sure we stop fetching input after - * each newline. - */ - int yy_is_interactive; - - /* Whether we're considered to be at the beginning of a line. - * If so, '^' rules will be active on the next match, otherwise - * not. - */ - int yy_at_bol; - - int yy_bs_lineno; /**< The line count. */ - int yy_bs_column; /**< The column count. */ - - /* Whether to try to fill the input buffer when we reach the - * end of it. - */ - int yy_fill_buffer; - - int yy_buffer_status; - -#define YY_BUFFER_NEW 0 -#define YY_BUFFER_NORMAL 1 - /* When an EOF's been seen but there's still some text to process - * then we mark the buffer as YY_EOF_PENDING, to indicate that we - * shouldn't try reading from the input source any more. We might - * still have a bunch of tokens to match, though, because of - * possible backing-up. - * - * When we actually see the EOF, we change the status to "new" - * (via VanuatuWktrestart()), so that the user can continue scanning by - * just pointing yyin at a new input file. - */ -#define YY_BUFFER_EOF_PENDING 2 - - }; -#endif /* !YY_STRUCT_YY_BUFFER_STATE */ - -/* We provide macros for accessing buffer states in case in the - * future we want to put the buffer states in a more general - * "scanner state". - * - * Returns the top of the stack, or NULL. - */ -#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ - ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ - : NULL) - -/* Same as previous macro, but useful when we know that the buffer stack is not - * NULL or when we need an lvalue. For internal use only. - */ -#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] - -void VanuatuWktrestart (FILE *input_file ,yyscan_t yyscanner ); -void VanuatuWkt_switch_to_buffer (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); -YY_BUFFER_STATE VanuatuWkt_create_buffer (FILE *file,int size ,yyscan_t yyscanner ); -void VanuatuWkt_delete_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); -void VanuatuWkt_flush_buffer (YY_BUFFER_STATE b ,yyscan_t yyscanner ); -void VanuatuWktpush_buffer_state (YY_BUFFER_STATE new_buffer ,yyscan_t yyscanner ); -void VanuatuWktpop_buffer_state (yyscan_t yyscanner ); - -static void VanuatuWktensure_buffer_stack (yyscan_t yyscanner ); -static void VanuatuWkt_load_buffer_state (yyscan_t yyscanner ); -static void VanuatuWkt_init_buffer (YY_BUFFER_STATE b,FILE *file ,yyscan_t yyscanner ); - -#define YY_FLUSH_BUFFER VanuatuWkt_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) - -YY_BUFFER_STATE VanuatuWkt_scan_buffer (char *base,yy_size_t size ,yyscan_t yyscanner ); -YY_BUFFER_STATE VanuatuWkt_scan_string (yyconst char *yy_str ,yyscan_t yyscanner ); -YY_BUFFER_STATE VanuatuWkt_scan_bytes (yyconst char *bytes,int len ,yyscan_t yyscanner ); - -void *VanuatuWktalloc (yy_size_t ,yyscan_t yyscanner ); -void *VanuatuWktrealloc (void *,yy_size_t ,yyscan_t yyscanner ); -void VanuatuWktfree (void * ,yyscan_t yyscanner ); - -#define yy_new_buffer VanuatuWkt_create_buffer - -#define yy_set_interactive(is_interactive) \ - { \ - if ( ! YY_CURRENT_BUFFER ){ \ - VanuatuWktensure_buffer_stack (yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = \ - VanuatuWkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ - } - -#define yy_set_bol(at_bol) \ - { \ - if ( ! YY_CURRENT_BUFFER ){\ - VanuatuWktensure_buffer_stack (yyscanner); \ - YY_CURRENT_BUFFER_LVALUE = \ - VanuatuWkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ - } \ - YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ - } - -#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) - -/* Begin user sect3 */ - -typedef unsigned char YY_CHAR; - -typedef int yy_state_type; - -#define yytext_ptr yytext_r - -static yy_state_type yy_get_previous_state (yyscan_t yyscanner ); -static yy_state_type yy_try_NUL_trans (yy_state_type current_state ,yyscan_t yyscanner); -static int yy_get_next_buffer (yyscan_t yyscanner ); -static void yy_fatal_error (yyconst char msg[] ,yyscan_t yyscanner ); - -/* Done after the current pattern has been matched and before the - * corresponding action - sets up yytext. - */ -#define YY_DO_BEFORE_ACTION \ - yyg->yytext_ptr = yy_bp; \ - yyleng = (size_t) (yy_cp - yy_bp); \ - yyg->yy_hold_char = *yy_cp; \ - *yy_cp = '\0'; \ - yyg->yy_c_buf_p = yy_cp; - -#define YY_NUM_RULES 36 -#define YY_END_OF_BUFFER 37 -/* This struct is not used in this scanner, - but its presence is necessary. */ -struct yy_trans_info - { - flex_int32_t yy_verify; - flex_int32_t yy_nxt; - }; -static yyconst flex_int16_t yy_accept[114] = - { 0, - 0, 0, 37, 35, 33, 34, 3, 4, 35, 2, - 35, 1, 35, 35, 35, 35, 1, 1, 1, 1, - 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, - 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, - 0, 0, 5, 0, 0, 0, 0, 0, 0, 7, - 6, 0, 0, 0, 0, 0, 8, 13, 0, 0, - 0, 0, 0, 0, 15, 14, 0, 0, 0, 0, - 0, 16, 0, 9, 0, 17, 0, 0, 0, 11, - 10, 0, 0, 19, 18, 0, 0, 12, 0, 20, - 25, 0, 0, 0, 27, 26, 0, 0, 28, 0, - - 21, 0, 0, 23, 22, 0, 24, 29, 0, 31, - 30, 32, 0 - } ; - -static yyconst flex_int32_t yy_ec[256] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, - 5, 1, 6, 7, 8, 9, 1, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 11, 1, 12, 1, - 13, 1, 14, 1, 1, 15, 16, 17, 18, 19, - 1, 20, 21, 22, 23, 1, 1, 1, 24, 25, - 1, 1, 1, 1, 1, 1, 1, 1, 26, 1, - - 27, 1, 28, 1, 29, 1, 1, 30, 31, 32, - 33, 34, 1, 35, 36, 37, 38, 1, 1, 1, - 39, 40, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1 - } ; - -static yyconst flex_int32_t yy_meta[41] = - { 0, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 - } ; - -static yyconst flex_int16_t yy_base[115] = - { 0, - 0, 33, 211, 255, 255, 255, 255, 255, 192, 255, - 191, 2, 2, 3, 4, 0, 11, 13, 185, 15, - 26, 28, 32, 36, 162, 161, 154, 37, 42, 33, - 39, 33, 71, 16, 46, 53, 61, 54, 64, 56, - 57, 65, 80, 67, 66, 67, 74, 79, 0, 255, - 82, 87, 82, 93, 91, 95, 255, 112, 105, 100, - 106, 109, 103, 0, 255, 113, 112, 121, 114, 114, - 125, 255, 124, 144, 118, 154, 130, 143, 0, 255, - 143, 141, 0, 255, 146, 148, 154, 255, 153, 255, - 184, 157, 161, 0, 255, 172, 167, 177, 255, 177, - - 194, 174, 0, 255, 182, 182, 255, 214, 0, 255, - 192, 255, 255, 0 - } ; - -static yyconst flex_int16_t yy_def[115] = - { 0, - 114, 114, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 43, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 58, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 74, 113, - 113, 113, 76, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 91, 113, 113, 113, 113, 113, 113, - - 113, 113, 101, 113, 113, 113, 113, 113, 108, 113, - 113, 113, 0, 113 - } ; - -static yyconst flex_int16_t yy_nxt[296] = - { 0, - 4, 5, 6, 7, 8, 9, 10, 11, 113, 12, - 19, 20, 13, 21, 14, 15, 22, 24, 16, 25, - 17, 26, 18, 19, 20, 34, 23, 13, 21, 14, - 15, 22, 24, 16, 5, 6, 7, 8, 9, 10, - 11, 23, 12, 28, 29, 13, 30, 14, 15, 31, - 32, 16, 35, 36, 37, 38, 39, 40, 28, 29, - 13, 30, 14, 15, 31, 32, 16, 35, 36, 37, - 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, - 33, 49, 49, 48, 52, 53, 54, 55, 41, 42, - 43, 44, 45, 46, 47, 50, 56, 57, 48, 52, - - 53, 54, 55, 58, 51, 59, 60, 61, 62, 63, - 50, 56, 57, 64, 64, 67, 68, 69, 58, 51, - 59, 60, 61, 62, 63, 70, 71, 65, 72, 73, - 67, 68, 69, 74, 75, 76, 66, 77, 78, 82, - 70, 71, 65, 72, 73, 79, 79, 86, 74, 75, - 76, 66, 77, 78, 82, 83, 83, 87, 88, 80, - 89, 90, 86, 27, 91, 92, 93, 97, 81, 84, - 34, 33, 87, 88, 80, 89, 90, 98, 85, 91, - 92, 93, 97, 81, 84, 94, 94, 99, 100, 101, - 102, 106, 98, 85, 27, 103, 103, 107, 108, 95, - - 18, 17, 99, 100, 101, 102, 106, 112, 96, 104, - 113, 113, 107, 108, 95, 109, 109, 113, 105, 113, - 113, 113, 112, 96, 104, 113, 113, 113, 113, 110, - 113, 113, 113, 105, 113, 113, 113, 113, 111, 113, - 113, 113, 113, 113, 110, 113, 113, 113, 113, 113, - 113, 113, 113, 111, 3, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113 - - } ; - -static yyconst flex_int16_t yy_chk[296] = - { 0, - 114, 1, 1, 1, 1, 1, 1, 1, 0, 1, - 12, 12, 1, 13, 1, 1, 14, 16, 1, 17, - 17, 18, 18, 20, 20, 34, 15, 1, 13, 1, - 1, 14, 16, 1, 2, 2, 2, 2, 2, 2, - 2, 15, 2, 21, 22, 2, 23, 2, 2, 24, - 24, 2, 28, 29, 30, 31, 32, 35, 21, 22, - 2, 23, 2, 2, 24, 24, 2, 28, 29, 30, - 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, - 33, 43, 43, 42, 44, 45, 46, 47, 36, 37, - 38, 39, 40, 41, 42, 43, 48, 51, 42, 44, - - 45, 46, 47, 52, 43, 53, 54, 55, 56, 56, - 43, 48, 51, 58, 58, 59, 60, 61, 52, 43, - 53, 54, 55, 56, 56, 62, 63, 58, 66, 67, - 59, 60, 61, 68, 69, 70, 58, 71, 73, 75, - 62, 63, 58, 66, 67, 74, 74, 77, 68, 69, - 70, 58, 71, 73, 75, 76, 76, 78, 81, 74, - 82, 85, 77, 27, 86, 87, 89, 92, 74, 76, - 26, 25, 78, 81, 74, 82, 85, 93, 76, 86, - 87, 89, 92, 74, 76, 91, 91, 96, 97, 98, - 100, 102, 93, 76, 19, 101, 101, 105, 106, 91, - - 11, 9, 96, 97, 98, 100, 102, 111, 91, 101, - 3, 0, 105, 106, 91, 108, 108, 0, 101, 0, - 0, 0, 111, 91, 101, 0, 0, 0, 0, 108, - 0, 0, 0, 101, 0, 0, 0, 0, 108, 0, - 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, - 0, 0, 0, 108, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, - 113, 113, 113, 113, 113 - - } ; - -/* The intent behind this definition is that it'll catch - * any uses of REJECT which flex missed. - */ -#define REJECT reject_used_but_not_detected -#define yymore() yymore_used_but_not_detected -#define YY_MORE_ADJ 0 -#define YY_RESTORE_YY_MORE_OFFSET -/* - vanuatuLexer.l -- Vanuatu WKT parser - FLEX config - - version 2.4, 2010 April 2 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): -The Vanuatu Team - University of Toronto - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -/****************************************************************************** -** The following code was created by Team Vanuatu of The University of Toronto. - -Authors: -Ruppi Rana ruppi.rana@gmail.com -Dev Tanna dev.tanna@gmail.com -Elias Adum elias.adum@gmail.com -Benton Hui benton.hui@gmail.com -Abhayan Sundararajan abhayan@gmail.com -Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com -Nikola Banovic nikola.banovic@gmail.com -Yong Jian yong.jian@utoronto.ca - -Supervisor: -Greg Wilson gvwilson@cs.toronto.ca - -------------------------------------------------------------------------------- -*/ -#define YY_NO_INPUT 1 -/** -* The main string-token matcher. -* The lower case part is probably not needed. We should really be converting -* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. -* What Flex will do is, For the input string, beginning from the front, Flex -* will try to match with any of the defined tokens from below. Flex will -* then match the string of longest length. Suppose the string is: POINT ZM, -* Flex would match both POINT Z and POINT ZM, but since POINT ZM is the longer -* of the two tokens, FLEX will match POINT ZM. -*/ - -#define INITIAL 0 - -#ifndef YY_NO_UNISTD_H -/* Special case for "unistd.h", since it is non-ANSI. We include it way - * down here because we want the user's section 1 to have been scanned first. - * The user has a chance to override it with an option. - */ -#include -#endif - -#define YY_EXTRA_TYPE struct vanuatu_data * - -/* Holds the entire state of the reentrant scanner. */ -struct yyguts_t - { - - /* User-defined. Not touched by flex. */ - YY_EXTRA_TYPE yyextra_r; - - /* The rest are the same as the globals declared in the non-reentrant scanner. */ - FILE *yyin_r, *yyout_r; - size_t yy_buffer_stack_top; /**< index of top of stack. */ - size_t yy_buffer_stack_max; /**< capacity of stack. */ - YY_BUFFER_STATE * yy_buffer_stack; /**< Stack as an array. */ - char yy_hold_char; - int yy_n_chars; - int yyleng_r; - char *yy_c_buf_p; - int yy_init; - int yy_start; - int yy_did_buffer_switch_on_eof; - int yy_start_stack_ptr; - int yy_start_stack_depth; - int *yy_start_stack; - yy_state_type yy_last_accepting_state; - char* yy_last_accepting_cpos; - - int yylineno_r; - int yy_flex_debug_r; - - char *yytext_r; - int yy_more_flag; - int yy_more_len; - - }; /* end struct yyguts_t */ - -static int yy_init_globals (yyscan_t yyscanner ); - -int VanuatuWktlex_init (yyscan_t* scanner); - -int VanuatuWktlex_init_extra (YY_EXTRA_TYPE user_defined,yyscan_t* scanner); - -/* Accessor methods to globals. - These are made visible to non-reentrant scanners for convenience. */ - -int VanuatuWktlex_destroy (yyscan_t yyscanner ); - -int VanuatuWktget_debug (yyscan_t yyscanner ); - -void VanuatuWktset_debug (int debug_flag ,yyscan_t yyscanner ); - -YY_EXTRA_TYPE VanuatuWktget_extra (yyscan_t yyscanner ); - -void VanuatuWktset_extra (YY_EXTRA_TYPE user_defined ,yyscan_t yyscanner ); - -FILE *VanuatuWktget_in (yyscan_t yyscanner ); - -void VanuatuWktset_in (FILE * in_str ,yyscan_t yyscanner ); - -FILE *VanuatuWktget_out (yyscan_t yyscanner ); - -void VanuatuWktset_out (FILE * out_str ,yyscan_t yyscanner ); - -int VanuatuWktget_leng (yyscan_t yyscanner ); - -char *VanuatuWktget_text (yyscan_t yyscanner ); - -int VanuatuWktget_lineno (yyscan_t yyscanner ); - -void VanuatuWktset_lineno (int line_number ,yyscan_t yyscanner ); - -/* Macros after this point can all be overridden by user definitions in - * section 1. - */ - -#ifndef YY_SKIP_YYWRAP -#ifdef __cplusplus -extern "C" int VanuatuWktwrap (yyscan_t yyscanner ); -#else -extern int VanuatuWktwrap (yyscan_t yyscanner ); -#endif -#endif - -#ifndef yytext_ptr -static void yy_flex_strncpy (char *,yyconst char *,int ,yyscan_t yyscanner); -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * ,yyscan_t yyscanner); -#endif - -#ifndef YY_NO_INPUT - -#ifdef __cplusplus -static int yyinput (yyscan_t yyscanner ); -#else -static int input (yyscan_t yyscanner ); -#endif - -#endif - -/* Amount of stuff to slurp up with each read. */ -#ifndef YY_READ_BUF_SIZE -#ifdef __ia64__ -/* On IA-64, the buffer size is 16k, not 8k */ -#define YY_READ_BUF_SIZE 16384 -#else -#define YY_READ_BUF_SIZE 8192 -#endif /* __ia64__ */ -#endif - -/* Copy whatever the last rule matched to the standard output. */ -#ifndef ECHO -/* This used to be an fputs(), but since the string might contain NUL's, - * we now use fwrite(). - */ -#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) -#endif - -/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, - * is returned in "result". - */ -#ifndef YY_INPUT -#define YY_INPUT(buf,result,max_size) \ - if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ - { \ - int c = '*'; \ - size_t n; \ - for ( n = 0; n < max_size && \ - (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ - buf[n] = (char) c; \ - if ( c == '\n' ) \ - buf[n++] = (char) c; \ - if ( c == EOF && ferror( yyin ) ) \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - result = n; \ - } \ - else \ - { \ - errno=0; \ - while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ - { \ - if( errno != EINTR) \ - { \ - YY_FATAL_ERROR( "input in flex scanner failed" ); \ - break; \ - } \ - errno=0; \ - clearerr(yyin); \ - } \ - }\ -\ - -#endif - -/* No semi-colon after return; correct usage is to write "yyterminate();" - - * we don't want an extra ';' after the "return" because that will cause - * some compilers to complain about unreachable statements. - */ -#ifndef yyterminate -#define yyterminate() return YY_NULL -#endif - -/* Number of entries by which start-condition stack grows. */ -#ifndef YY_START_STACK_INCR -#define YY_START_STACK_INCR 25 -#endif - -/* Report a fatal error. */ -#ifndef YY_FATAL_ERROR -#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) -#endif - -/* end tables serialization structures and prototypes */ - -/* Default declaration of generated scanner - a define so the user can - * easily add parameters. - */ -#ifndef YY_DECL -#define YY_DECL_IS_OURS 1 - -extern int VanuatuWktlex (yyscan_t yyscanner); - -#define YY_DECL int VanuatuWktlex (yyscan_t yyscanner) -#endif /* !YY_DECL */ - -/* Code executed at the beginning of each rule, after yytext and yyleng - * have been set up. - */ -#ifndef YY_USER_ACTION -#define YY_USER_ACTION -#endif - -/* Code executed at the end of each rule. */ -#ifndef YY_BREAK -#define YY_BREAK break; -#endif - -#define YY_RULE_SETUP \ - YY_USER_ACTION - -/** The main scanner function which does all the work. - */ -YY_DECL -{ - register yy_state_type yy_current_state; - register char *yy_cp, *yy_bp; - register int yy_act; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( !yyg->yy_init ) - { - yyg->yy_init = 1; - -#ifdef YY_USER_INIT - YY_USER_INIT; -#endif - - if ( ! yyg->yy_start ) - yyg->yy_start = 1; /* first start state */ - - if ( ! yyin ) - yyin = stdin; - - if ( ! yyout ) - yyout = stdout; - - if ( ! YY_CURRENT_BUFFER ) { - VanuatuWktensure_buffer_stack (yyscanner); - YY_CURRENT_BUFFER_LVALUE = - VanuatuWkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); - } - - VanuatuWkt_load_buffer_state(yyscanner ); - } - - while ( 1 ) /* loops until end-of-file is reached */ - { - yy_cp = yyg->yy_c_buf_p; - - /* Support of yytext. */ - *yy_cp = yyg->yy_hold_char; - - /* yy_bp points to the position in yy_ch_buf of the start of - * the current run. - */ - yy_bp = yy_cp; - - yy_current_state = yyg->yy_start; -yy_match: - do - { - register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)]; - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 114 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - ++yy_cp; - } - while ( yy_base[yy_current_state] != 255 ); - -yy_find_action: - yy_act = yy_accept[yy_current_state]; - if ( yy_act == 0 ) - { /* have to back up */ - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - yy_act = yy_accept[yy_current_state]; - } - - YY_DO_BEFORE_ACTION; - -do_action: /* This label is used only to access EOF actions. */ - - switch ( yy_act ) - { /* beginning of action switch */ - case 0: /* must back up */ - /* undo the effects of YY_DO_BEFORE_ACTION */ - *yy_cp = yyg->yy_hold_char; - yy_cp = yyg->yy_last_accepting_cpos; - yy_current_state = yyg->yy_last_accepting_state; - goto yy_find_action; - -case 1: -YY_RULE_SETUP -{ VanuatuWktget_extra(yyscanner)->vanuatu_col += (int) strlen(yytext); VanuatuWktlval.dval = atof(yytext); return VANUATU_NUM; } - YY_BREAK -case 2: -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_COMMA; } - YY_BREAK -case 3: -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_OPEN_BRACKET; } - YY_BREAK -case 4: -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_CLOSE_BRACKET; } - YY_BREAK -case 5: -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_POINT; } - YY_BREAK -case 6: -/* rule 6 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_POINT_Z; } - YY_BREAK -case 7: -/* rule 7 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_POINT_M; } - YY_BREAK -case 8: -/* rule 8 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_POINT_ZM; } - YY_BREAK -case 9: -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_LINESTRING; } - YY_BREAK -case 10: -/* rule 10 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_LINESTRING_Z; } - YY_BREAK -case 11: -/* rule 11 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_LINESTRING_M; } - YY_BREAK -case 12: -/* rule 12 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_LINESTRING_ZM; } - YY_BREAK -case 13: -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_POLYGON; } - YY_BREAK -case 14: -/* rule 14 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_POLYGON_Z; } - YY_BREAK -case 15: -/* rule 15 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_POLYGON_M; } - YY_BREAK -case 16: -/* rule 16 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_POLYGON_ZM; } - YY_BREAK -case 17: -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_MULTIPOINT; } - YY_BREAK -case 18: -/* rule 18 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_MULTIPOINT_Z; } - YY_BREAK -case 19: -/* rule 19 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_MULTIPOINT_M; } - YY_BREAK -case 20: -/* rule 20 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_MULTIPOINT_ZM; } - YY_BREAK -case 21: -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_MULTILINESTRING; } - YY_BREAK -case 22: -/* rule 22 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_MULTILINESTRING_Z; } - YY_BREAK -case 23: -/* rule 23 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_MULTILINESTRING_M; } - YY_BREAK -case 24: -/* rule 24 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_MULTILINESTRING_ZM; } - YY_BREAK -case 25: -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_MULTIPOLYGON; } - YY_BREAK -case 26: -/* rule 26 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_MULTIPOLYGON_Z; } - YY_BREAK -case 27: -/* rule 27 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_MULTIPOLYGON_M; } - YY_BREAK -case 28: -/* rule 28 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_MULTIPOLYGON_ZM; } - YY_BREAK -case 29: -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_GEOMETRYCOLLECTION; } - YY_BREAK -case 30: -/* rule 30 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_GEOMETRYCOLLECTION_Z; } - YY_BREAK -case 31: -/* rule 31 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_GEOMETRYCOLLECTION_M; } - YY_BREAK -case 32: -/* rule 32 can match eol */ -YY_RULE_SETUP -{ VanuatuWktlval.dval = 0; return VANUATU_GEOMETRYCOLLECTION_ZM; } - YY_BREAK -case 33: -YY_RULE_SETUP -{ VanuatuWktget_extra(yyscanner)->vanuatu_col += (int) strlen(yytext); } /* ignore but count white space */ - YY_BREAK -case 34: -/* rule 34 can match eol */ -YY_RULE_SETUP -{ VanuatuWktget_extra(yyscanner)->vanuatu_col = 0; VanuatuWktget_extra(yyscanner)->vanuatu_line++; } - YY_BREAK -case 35: -YY_RULE_SETUP -{ VanuatuWktget_extra(yyscanner)->vanuatu_col += (int) strlen(yytext); return -1; } - YY_BREAK -case 36: -YY_RULE_SETUP -ECHO; - YY_BREAK -case YY_STATE_EOF(INITIAL): - yyterminate(); - - case YY_END_OF_BUFFER: - { - /* Amount of text matched not including the EOB char. */ - int yy_amount_of_matched_text = (int) (yy_cp - yyg->yytext_ptr) - 1; - - /* Undo the effects of YY_DO_BEFORE_ACTION. */ - *yy_cp = yyg->yy_hold_char; - YY_RESTORE_YY_MORE_OFFSET - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_NEW ) - { - /* We're scanning a new file or input source. It's - * possible that this happened because the user - * just pointed yyin at a new source and called - * VanuatuWktlex(). If so, then we have to assure - * consistency between YY_CURRENT_BUFFER and our - * globals. Here is the right place to do so, because - * this is the first action (other than possibly a - * back-up) that will match for the new input source. - */ - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = YY_BUFFER_NORMAL; - } - - /* Note that here we test for yy_c_buf_p "<=" to the position - * of the first EOB in the buffer, since yy_c_buf_p will - * already have been incremented past the NUL character - * (since all states make transitions on EOB to the - * end-of-buffer state). Contrast this with the test - * in input(). - */ - if ( yyg->yy_c_buf_p <= &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) - { /* This was really a NUL. */ - yy_state_type yy_next_state; - - yyg->yy_c_buf_p = yyg->yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( yyscanner ); - - /* Okay, we're now positioned to make the NUL - * transition. We couldn't have - * yy_get_previous_state() go ahead and do it - * for us because it doesn't know how to deal - * with the possibility of jamming (and we don't - * want to build jamming into it because then it - * will run more slowly). - */ - - yy_next_state = yy_try_NUL_trans( yy_current_state , yyscanner); - - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - - if ( yy_next_state ) - { - /* Consume the NUL. */ - yy_cp = ++yyg->yy_c_buf_p; - yy_current_state = yy_next_state; - goto yy_match; - } - - else - { - yy_cp = yyg->yy_c_buf_p; - goto yy_find_action; - } - } - - else switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_END_OF_FILE: - { - yyg->yy_did_buffer_switch_on_eof = 0; - - if ( VanuatuWktwrap(yyscanner ) ) - { - /* Note: because we've taken care in - * yy_get_next_buffer() to have set up - * yytext, we can now set up - * yy_c_buf_p so that if some total - * hoser (like flex itself) wants to - * call the scanner after we return the - * YY_NULL, it'll still work - another - * YY_NULL will get returned. - */ - yyg->yy_c_buf_p = yyg->yytext_ptr + YY_MORE_ADJ; - - yy_act = YY_STATE_EOF(YY_START); - goto do_action; - } - - else - { - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; - } - break; - } - - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = - yyg->yytext_ptr + yy_amount_of_matched_text; - - yy_current_state = yy_get_previous_state( yyscanner ); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_match; - - case EOB_ACT_LAST_MATCH: - yyg->yy_c_buf_p = - &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]; - - yy_current_state = yy_get_previous_state( yyscanner ); - - yy_cp = yyg->yy_c_buf_p; - yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; - goto yy_find_action; - } - break; - } - - default: - YY_FATAL_ERROR( - "fatal flex scanner internal error--no action found" ); - } /* end of action switch */ - } /* end of scanning one token */ -} /* end of VanuatuWktlex */ - -/* yy_get_next_buffer - try to read in a new buffer - * - * Returns a code representing an action: - * EOB_ACT_LAST_MATCH - - * EOB_ACT_CONTINUE_SCAN - continue scanning from current position - * EOB_ACT_END_OF_FILE - end of file - */ -static int yy_get_next_buffer (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; - register char *source = yyg->yytext_ptr; - register int number_to_move, i; - int ret_val; - - if ( yyg->yy_c_buf_p > &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] ) - YY_FATAL_ERROR( - "fatal flex scanner internal error--end of buffer missed" ); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0 ) - { /* Don't try to fill the buffer, so this is an EOF. */ - if ( yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1 ) - { - /* We matched a single character, the EOB, so - * treat this as a final EOF. - */ - return EOB_ACT_END_OF_FILE; - } - - else - { - /* We matched some text prior to the EOB, first - * process it. - */ - return EOB_ACT_LAST_MATCH; - } - } - - /* Try to read more data. */ - - /* First move last chars to start of buffer. */ - number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; - - for ( i = 0; i < number_to_move; ++i ) - *(dest++) = *(source++); - - if ( YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING ) - /* don't do the read, it's not guaranteed to return an EOF, - * just force an EOF - */ - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; - - else - { - int num_to_read = - YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; - - while ( num_to_read <= 0 ) - { /* Not enough room in the buffer - grow it. */ - - /* just a shorter name for the current buffer */ - YY_BUFFER_STATE b = YY_CURRENT_BUFFER; - - int yy_c_buf_p_offset = - (int) (yyg->yy_c_buf_p - b->yy_ch_buf); - - if ( b->yy_is_our_buffer ) - { - int new_size = b->yy_buf_size * 2; - - if ( new_size <= 0 ) - b->yy_buf_size += b->yy_buf_size / 8; - else - b->yy_buf_size *= 2; - - b->yy_ch_buf = (char *) - /* Include room in for 2 EOB chars. */ - VanuatuWktrealloc((void *) b->yy_ch_buf,b->yy_buf_size + 2 ,yyscanner ); - } - else - /* Can't grow it, we don't own it. */ - b->yy_ch_buf = 0; - - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( - "fatal error - scanner input buffer overflow" ); - - yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; - - num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - - number_to_move - 1; - - } - - if ( num_to_read > YY_READ_BUF_SIZE ) - num_to_read = YY_READ_BUF_SIZE; - - /* Read in more data. */ - YY_INPUT( (&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), - yyg->yy_n_chars, (size_t) num_to_read ); - - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - if ( yyg->yy_n_chars == 0 ) - { - if ( number_to_move == YY_MORE_ADJ ) - { - ret_val = EOB_ACT_END_OF_FILE; - VanuatuWktrestart(yyin ,yyscanner); - } - - else - { - ret_val = EOB_ACT_LAST_MATCH; - YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = - YY_BUFFER_EOF_PENDING; - } - } - - else - ret_val = EOB_ACT_CONTINUE_SCAN; - - if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > YY_CURRENT_BUFFER_LVALUE->yy_buf_size) { - /* Extend the array by 50%, plus the number we really need. */ - yy_size_t new_size = yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = (char *) VanuatuWktrealloc((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf,new_size ,yyscanner ); - if ( ! YY_CURRENT_BUFFER_LVALUE->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in yy_get_next_buffer()" ); - } - - yyg->yy_n_chars += number_to_move; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = YY_END_OF_BUFFER_CHAR; - YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = YY_END_OF_BUFFER_CHAR; - - yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; - - return ret_val; -} - -/* yy_get_previous_state - get the state just before the EOB char was reached */ - - static yy_state_type yy_get_previous_state (yyscan_t yyscanner) -{ - register yy_state_type yy_current_state; - register char *yy_cp; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - yy_current_state = yyg->yy_start; - - for ( yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; ++yy_cp ) - { - register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 1); - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 114 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - } - - return yy_current_state; -} - -/* yy_try_NUL_trans - try to make a transition on the NUL character - * - * synopsis - * next_state = yy_try_NUL_trans( current_state ); - */ - static yy_state_type yy_try_NUL_trans (yy_state_type yy_current_state , yyscan_t yyscanner) -{ - register int yy_is_jam; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; /* This var may be unused depending upon options. */ - register char *yy_cp = yyg->yy_c_buf_p; - - register YY_CHAR yy_c = 1; - if ( yy_accept[yy_current_state] ) - { - yyg->yy_last_accepting_state = yy_current_state; - yyg->yy_last_accepting_cpos = yy_cp; - } - while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state ) - { - yy_current_state = (int) yy_def[yy_current_state]; - if ( yy_current_state >= 114 ) - yy_c = yy_meta[(unsigned int) yy_c]; - } - yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; - yy_is_jam = (yy_current_state == 113); - - return yy_is_jam ? 0 : yy_current_state; -} - -#ifndef YY_NO_INPUT -#ifdef __cplusplus - static int yyinput (yyscan_t yyscanner) -#else - static int input (yyscan_t yyscanner) -#endif - -{ - int c; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - *yyg->yy_c_buf_p = yyg->yy_hold_char; - - if ( *yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR ) - { - /* yy_c_buf_p now points to the character we want to return. - * If this occurs *before* the EOB characters, then it's a - * valid NUL; if not, then we've hit the end of the buffer. - */ - if ( yyg->yy_c_buf_p < &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] ) - /* This was really a NUL. */ - *yyg->yy_c_buf_p = '\0'; - - else - { /* need more input */ - int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; - ++yyg->yy_c_buf_p; - - switch ( yy_get_next_buffer( yyscanner ) ) - { - case EOB_ACT_LAST_MATCH: - /* This happens because yy_g_n_b() - * sees that we've accumulated a - * token and flags that we need to - * try matching the token before - * proceeding. But for input(), - * there's no matching to consider. - * So convert the EOB_ACT_LAST_MATCH - * to EOB_ACT_END_OF_FILE. - */ - - /* Reset buffer status. */ - VanuatuWktrestart(yyin ,yyscanner); - - /*FALLTHROUGH*/ - - case EOB_ACT_END_OF_FILE: - { - if ( VanuatuWktwrap(yyscanner ) ) - return EOF; - - if ( ! yyg->yy_did_buffer_switch_on_eof ) - YY_NEW_FILE; -#ifdef __cplusplus - return yyinput(yyscanner); -#else - return input(yyscanner); -#endif - } - - case EOB_ACT_CONTINUE_SCAN: - yyg->yy_c_buf_p = yyg->yytext_ptr + offset; - break; - } - } - } - - c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ - *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ - yyg->yy_hold_char = *++yyg->yy_c_buf_p; - - return c; -} -#endif /* ifndef YY_NO_INPUT */ - -/** Immediately switch to a different input stream. - * @param input_file A readable stream. - * @param yyscanner The scanner object. - * @note This function does not reset the start condition to @c INITIAL . - */ - void VanuatuWktrestart (FILE * input_file , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( ! YY_CURRENT_BUFFER ){ - VanuatuWktensure_buffer_stack (yyscanner); - YY_CURRENT_BUFFER_LVALUE = - VanuatuWkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); - } - - VanuatuWkt_init_buffer(YY_CURRENT_BUFFER,input_file ,yyscanner); - VanuatuWkt_load_buffer_state(yyscanner ); -} - -/** Switch to a different input buffer. - * @param new_buffer The new input buffer. - * @param yyscanner The scanner object. - */ - void VanuatuWkt_switch_to_buffer (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* TODO. We should be able to replace this entire function body - * with - * VanuatuWktpop_buffer_state(); - * VanuatuWktpush_buffer_state(new_buffer); - */ - VanuatuWktensure_buffer_stack (yyscanner); - if ( YY_CURRENT_BUFFER == new_buffer ) - return; - - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - YY_CURRENT_BUFFER_LVALUE = new_buffer; - VanuatuWkt_load_buffer_state(yyscanner ); - - /* We don't actually know whether we did this switch during - * EOF (VanuatuWktwrap()) processing, but the only time this flag - * is looked at is after VanuatuWktwrap() is called, so it's safe - * to go ahead and always set it. - */ - yyg->yy_did_buffer_switch_on_eof = 1; -} - -static void VanuatuWkt_load_buffer_state (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; - yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; - yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; - yyg->yy_hold_char = *yyg->yy_c_buf_p; -} - -/** Allocate and initialize an input buffer state. - * @param file A readable stream. - * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. - * @param yyscanner The scanner object. - * @return the allocated buffer state. - */ - YY_BUFFER_STATE VanuatuWkt_create_buffer (FILE * file, int size , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - - b = (YY_BUFFER_STATE) VanuatuWktalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in VanuatuWkt_create_buffer()" ); - - b->yy_buf_size = size; - - /* yy_ch_buf has to be 2 characters longer than the size given because - * we need to put in 2 end-of-buffer characters. - */ - b->yy_ch_buf = (char *) VanuatuWktalloc(b->yy_buf_size + 2 ,yyscanner ); - if ( ! b->yy_ch_buf ) - YY_FATAL_ERROR( "out of dynamic memory in VanuatuWkt_create_buffer()" ); - - b->yy_is_our_buffer = 1; - - VanuatuWkt_init_buffer(b,file ,yyscanner); - - return b; -} - -/** Destroy the buffer. - * @param b a buffer created with VanuatuWkt_create_buffer() - * @param yyscanner The scanner object. - */ - void VanuatuWkt_delete_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if ( ! b ) - return; - - if ( b == YY_CURRENT_BUFFER ) /* Not sure if we should pop here. */ - YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; - - if ( b->yy_is_our_buffer ) - VanuatuWktfree((void *) b->yy_ch_buf ,yyscanner ); - - VanuatuWktfree((void *) b ,yyscanner ); -} - -#ifndef __cplusplus -extern int isatty (int ); -#endif /* __cplusplus */ - -/* Initializes or reinitializes a buffer. - * This function is sometimes called more than once on the same buffer, - * such as during a VanuatuWktrestart() or at EOF. - */ - static void VanuatuWkt_init_buffer (YY_BUFFER_STATE b, FILE * file , yyscan_t yyscanner) - -{ - int oerrno = errno; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - VanuatuWkt_flush_buffer(b ,yyscanner); - - b->yy_input_file = file; - b->yy_fill_buffer = 1; - - /* If b is the current buffer, then VanuatuWkt_init_buffer was _probably_ - * called from VanuatuWktrestart() or through yy_get_next_buffer. - * In that case, we don't want to reset the lineno or column. - */ - if (b != YY_CURRENT_BUFFER){ - b->yy_bs_lineno = 1; - b->yy_bs_column = 0; - } - - b->yy_is_interactive = file ? (isatty( fileno(file) ) > 0) : 0; - - errno = oerrno; -} - -/** Discard all buffered characters. On the next scan, YY_INPUT will be called. - * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. - * @param yyscanner The scanner object. - */ - void VanuatuWkt_flush_buffer (YY_BUFFER_STATE b , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if ( ! b ) - return; - - b->yy_n_chars = 0; - - /* We always need two end-of-buffer characters. The first causes - * a transition to the end-of-buffer state. The second causes - * a jam in that state. - */ - b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; - b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; - - b->yy_buf_pos = &b->yy_ch_buf[0]; - - b->yy_at_bol = 1; - b->yy_buffer_status = YY_BUFFER_NEW; - - if ( b == YY_CURRENT_BUFFER ) - VanuatuWkt_load_buffer_state(yyscanner ); -} - -/** Pushes the new state onto the stack. The new state becomes - * the current state. This function will allocate the stack - * if necessary. - * @param new_buffer The new state. - * @param yyscanner The scanner object. - */ -void VanuatuWktpush_buffer_state (YY_BUFFER_STATE new_buffer , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (new_buffer == NULL) - return; - - VanuatuWktensure_buffer_stack(yyscanner); - - /* This block is copied from VanuatuWkt_switch_to_buffer. */ - if ( YY_CURRENT_BUFFER ) - { - /* Flush out information for old buffer. */ - *yyg->yy_c_buf_p = yyg->yy_hold_char; - YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; - YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; - } - - /* Only push if top exists. Otherwise, replace top. */ - if (YY_CURRENT_BUFFER) - yyg->yy_buffer_stack_top++; - YY_CURRENT_BUFFER_LVALUE = new_buffer; - - /* copied from VanuatuWkt_switch_to_buffer. */ - VanuatuWkt_load_buffer_state(yyscanner ); - yyg->yy_did_buffer_switch_on_eof = 1; -} - -/** Removes and deletes the top of the stack, if present. - * The next element becomes the new top. - * @param yyscanner The scanner object. - */ -void VanuatuWktpop_buffer_state (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - if (!YY_CURRENT_BUFFER) - return; - - VanuatuWkt_delete_buffer(YY_CURRENT_BUFFER ,yyscanner); - YY_CURRENT_BUFFER_LVALUE = NULL; - if (yyg->yy_buffer_stack_top > 0) - --yyg->yy_buffer_stack_top; - - if (YY_CURRENT_BUFFER) { - VanuatuWkt_load_buffer_state(yyscanner ); - yyg->yy_did_buffer_switch_on_eof = 1; - } -} - -/* Allocates the stack if it does not exist. - * Guarantees space for at least one push. - */ -static void VanuatuWktensure_buffer_stack (yyscan_t yyscanner) -{ - int num_to_alloc; - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (!yyg->yy_buffer_stack) { - - /* First allocation is just for 2 elements, since we don't know if this - * scanner will even need a stack. We use 2 instead of 1 to avoid an - * immediate realloc on the next call. - */ - num_to_alloc = 1; - yyg->yy_buffer_stack = (struct yy_buffer_state**)VanuatuWktalloc - (num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); - if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in VanuatuWktensure_buffer_stack()" ); - - memset(yyg->yy_buffer_stack, 0, num_to_alloc * sizeof(struct yy_buffer_state*)); - - yyg->yy_buffer_stack_max = num_to_alloc; - yyg->yy_buffer_stack_top = 0; - return; - } - - if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1){ - - /* Increase the buffer to prepare for a possible push. */ - int grow_size = 8 /* arbitrary grow size */; - - num_to_alloc = yyg->yy_buffer_stack_max + grow_size; - yyg->yy_buffer_stack = (struct yy_buffer_state**)VanuatuWktrealloc - (yyg->yy_buffer_stack, - num_to_alloc * sizeof(struct yy_buffer_state*) - , yyscanner); - if ( ! yyg->yy_buffer_stack ) - YY_FATAL_ERROR( "out of dynamic memory in VanuatuWktensure_buffer_stack()" ); - - /* zero only the new slots.*/ - memset(yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, grow_size * sizeof(struct yy_buffer_state*)); - yyg->yy_buffer_stack_max = num_to_alloc; - } -} - -/** Setup the input buffer state to scan directly from a user-specified character buffer. - * @param base the character buffer - * @param size the size in bytes of the character buffer - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE VanuatuWkt_scan_buffer (char * base, yy_size_t size , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - - if ( size < 2 || - base[size-2] != YY_END_OF_BUFFER_CHAR || - base[size-1] != YY_END_OF_BUFFER_CHAR ) - /* They forgot to leave room for the EOB's. */ - return 0; - - b = (YY_BUFFER_STATE) VanuatuWktalloc(sizeof( struct yy_buffer_state ) ,yyscanner ); - if ( ! b ) - YY_FATAL_ERROR( "out of dynamic memory in VanuatuWkt_scan_buffer()" ); - - b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ - b->yy_buf_pos = b->yy_ch_buf = base; - b->yy_is_our_buffer = 0; - b->yy_input_file = 0; - b->yy_n_chars = b->yy_buf_size; - b->yy_is_interactive = 0; - b->yy_at_bol = 1; - b->yy_fill_buffer = 0; - b->yy_buffer_status = YY_BUFFER_NEW; - - VanuatuWkt_switch_to_buffer(b ,yyscanner ); - - return b; -} - -/** Setup the input buffer state to scan a string. The next call to VanuatuWktlex() will - * scan from a @e copy of @a str. - * @param yystr a NUL-terminated string to scan - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - * @note If you want to scan bytes that may contain NUL values, then use - * VanuatuWkt_scan_bytes() instead. - */ -YY_BUFFER_STATE VanuatuWkt_scan_string (yyconst char * yystr , yyscan_t yyscanner) -{ - - return VanuatuWkt_scan_bytes(yystr,strlen(yystr) ,yyscanner); -} - -/** Setup the input buffer state to scan the given bytes. The next call to VanuatuWktlex() will - * scan from a @e copy of @a bytes. - * @param yybytes the byte buffer to scan - * @param _yybytes_len the number of bytes in the buffer pointed to by @a bytes. - * @param yyscanner The scanner object. - * @return the newly allocated buffer state object. - */ -YY_BUFFER_STATE VanuatuWkt_scan_bytes (yyconst char * yybytes, int _yybytes_len , yyscan_t yyscanner) -{ - YY_BUFFER_STATE b; - char *buf; - yy_size_t n; - int i; - - /* Get memory for full buffer, including space for trailing EOB's. */ - n = _yybytes_len + 2; - buf = (char *) VanuatuWktalloc(n ,yyscanner ); - if ( ! buf ) - YY_FATAL_ERROR( "out of dynamic memory in VanuatuWkt_scan_bytes()" ); - - for ( i = 0; i < _yybytes_len; ++i ) - buf[i] = yybytes[i]; - - buf[_yybytes_len] = buf[_yybytes_len+1] = YY_END_OF_BUFFER_CHAR; - - b = VanuatuWkt_scan_buffer(buf,n ,yyscanner); - if ( ! b ) - YY_FATAL_ERROR( "bad buffer in VanuatuWkt_scan_bytes()" ); - - /* It's okay to grow etc. this buffer, and we should throw it - * away when we're done. - */ - b->yy_is_our_buffer = 1; - - return b; -} - -#ifndef YY_EXIT_FAILURE -#define YY_EXIT_FAILURE 2 -#endif - -static void yy_fatal_error (yyconst char* msg , yyscan_t yyscanner) -{ - (void) spatialite_e("%s\n", msg ); - exit( YY_EXIT_FAILURE ); -} - -/* Redefine yyless() so it works in section 3 code. */ - -#undef yyless -#define yyless(n) \ - do \ - { \ - /* Undo effects of setting up yytext. */ \ - int yyless_macro_arg = (n); \ - YY_LESS_LINENO(yyless_macro_arg);\ - yytext[yyleng] = yyg->yy_hold_char; \ - yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ - yyg->yy_hold_char = *yyg->yy_c_buf_p; \ - *yyg->yy_c_buf_p = '\0'; \ - yyleng = yyless_macro_arg; \ - } \ - while ( 0 ) - -/* Accessor methods (get/set functions) to struct members. */ - -/** Get the user-defined data for this scanner. - * @param yyscanner The scanner object. - */ -YY_EXTRA_TYPE VanuatuWktget_extra (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyextra; -} - -/** Get the current line number. - * @param yyscanner The scanner object. - */ -int VanuatuWktget_lineno (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (! YY_CURRENT_BUFFER) - return 0; - - return yylineno; -} - -/** Get the current column number. - * @param yyscanner The scanner object. - */ -int VanuatuWktget_column (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - if (! YY_CURRENT_BUFFER) - return 0; - - return yycolumn; -} - -/** Get the input stream. - * @param yyscanner The scanner object. - */ -FILE *VanuatuWktget_in (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyin; -} - -/** Get the output stream. - * @param yyscanner The scanner object. - */ -FILE *VanuatuWktget_out (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyout; -} - -/** Get the length of the current token. - * @param yyscanner The scanner object. - */ -int VanuatuWktget_leng (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yyleng; -} - -/** Get the current token. - * @param yyscanner The scanner object. - */ - -char *VanuatuWktget_text (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yytext; -} - -/** Set the user-defined data. This data is never touched by the scanner. - * @param user_defined The data to be associated with this scanner. - * @param yyscanner The scanner object. - */ -void VanuatuWktset_extra (YY_EXTRA_TYPE user_defined , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyextra = user_defined ; -} - -/** Set the current line number. - * @param line_number - * @param yyscanner The scanner object. - */ -void VanuatuWktset_lineno (int line_number , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* lineno is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "VanuatuWktset_lineno called with no buffer" , yyscanner); - - yylineno = line_number; -} - -/** Set the current column. - * @param line_number - * @param yyscanner The scanner object. - */ -void VanuatuWktset_column (int column_no , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* column is only valid if an input buffer exists. */ - if (! YY_CURRENT_BUFFER ) - yy_fatal_error( "VanuatuWktset_column called with no buffer" , yyscanner); - - yycolumn = column_no; -} - -/** Set the input stream. This does not discard the current - * input buffer. - * @param in_str A readable stream. - * @param yyscanner The scanner object. - * @see VanuatuWkt_switch_to_buffer - */ -void VanuatuWktset_in (FILE * in_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyin = in_str ; -} - -void VanuatuWktset_out (FILE * out_str , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yyout = out_str ; -} - -int VanuatuWktget_debug (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - return yy_flex_debug; -} - -void VanuatuWktset_debug (int bdebug , yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - yy_flex_debug = bdebug ; -} - -/* Accessor methods for yylval and yylloc */ - -/* User-visible API */ - -/* VanuatuWktlex_init is special because it creates the scanner itself, so it is - * the ONLY reentrant function that doesn't take the scanner as the last argument. - * That's why we explicitly handle the declaration, instead of using our macros. - */ - -int VanuatuWktlex_init(yyscan_t* ptr_yy_globals) - -{ - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } - - *ptr_yy_globals = (yyscan_t) VanuatuWktalloc ( sizeof( struct yyguts_t ), NULL ); - - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } - - /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - - return yy_init_globals ( *ptr_yy_globals ); -} - -/* VanuatuWktlex_init_extra has the same functionality as VanuatuWktlex_init, but follows the - * convention of taking the scanner as the last argument. Note however, that - * this is a *pointer* to a scanner, as it will be allocated by this call (and - * is the reason, too, why this function also must handle its own declaration). - * The user defined value in the first argument will be available to VanuatuWktalloc in - * the yyextra field. - */ - -int VanuatuWktlex_init_extra(YY_EXTRA_TYPE yy_user_defined,yyscan_t* ptr_yy_globals ) - -{ - struct yyguts_t dummy_yyguts; - - VanuatuWktset_extra (yy_user_defined, &dummy_yyguts); - - if (ptr_yy_globals == NULL){ - errno = EINVAL; - return 1; - } - - *ptr_yy_globals = (yyscan_t) VanuatuWktalloc ( sizeof( struct yyguts_t ), &dummy_yyguts ); - - if (*ptr_yy_globals == NULL){ - errno = ENOMEM; - return 1; - } - - /* By setting to 0xAA, we expose bugs in - yy_init_globals. Leave at 0x00 for releases. */ - memset(*ptr_yy_globals,0x00,sizeof(struct yyguts_t)); - - VanuatuWktset_extra (yy_user_defined, *ptr_yy_globals); - - return yy_init_globals ( *ptr_yy_globals ); -} - -static int yy_init_globals (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - /* Initialization is the same as for the non-reentrant scanner. - * This function is called from VanuatuWktlex_destroy(), so don't allocate here. - */ - - yyg->yy_buffer_stack = 0; - yyg->yy_buffer_stack_top = 0; - yyg->yy_buffer_stack_max = 0; - yyg->yy_c_buf_p = (char *) 0; - yyg->yy_init = 0; - yyg->yy_start = 0; - - yyg->yy_start_stack_ptr = 0; - yyg->yy_start_stack_depth = 0; - yyg->yy_start_stack = NULL; - -/* Defined in main.c */ -#ifdef YY_STDINIT - yyin = stdin; - yyout = stdout; -#else - yyin = (FILE *) 0; - yyout = (FILE *) 0; -#endif - - /* For future reference: Set errno on error, since we are called by - * VanuatuWktlex_init() - */ - return 0; -} - -/* VanuatuWktlex_destroy is for both reentrant and non-reentrant scanners. */ -int VanuatuWktlex_destroy (yyscan_t yyscanner) -{ - struct yyguts_t * yyg = (struct yyguts_t*)yyscanner; - - /* Pop the buffer stack, destroying each element. */ - while(YY_CURRENT_BUFFER){ - VanuatuWkt_delete_buffer(YY_CURRENT_BUFFER ,yyscanner ); - YY_CURRENT_BUFFER_LVALUE = NULL; - VanuatuWktpop_buffer_state(yyscanner); - } - - /* Destroy the stack itself. */ - VanuatuWktfree(yyg->yy_buffer_stack ,yyscanner); - yyg->yy_buffer_stack = NULL; - - /* Destroy the start condition stack. */ - VanuatuWktfree(yyg->yy_start_stack ,yyscanner ); - yyg->yy_start_stack = NULL; - - /* Reset the globals. This is important in a non-reentrant scanner so the next time - * VanuatuWktlex() is called, initialization will occur. */ - yy_init_globals( yyscanner); - - /* Destroy the main struct (reentrant only). */ - VanuatuWktfree ( yyscanner , yyscanner ); - yyscanner = NULL; - return 0; -} - -/* - * Internal utility routines. - */ - -#ifndef yytext_ptr -static void yy_flex_strncpy (char* s1, yyconst char * s2, int n , yyscan_t yyscanner) -{ - register int i; - for ( i = 0; i < n; ++i ) - s1[i] = s2[i]; -} -#endif - -#ifdef YY_NEED_STRLEN -static int yy_flex_strlen (yyconst char * s , yyscan_t yyscanner) -{ - register int n; - for ( n = 0; s[n]; ++n ) - ; - - return n; -} -#endif - -void *VanuatuWktalloc (yy_size_t size , yyscan_t yyscanner) -{ - return (void *) malloc( size ); -} - -void *VanuatuWktrealloc (void * ptr, yy_size_t size , yyscan_t yyscanner) -{ - /* The cast to (char *) in the following accommodates both - * implementations that use char* generic pointers, and those - * that use void* generic pointers. It works with the latter - * because both ANSI C and C++ allow castless assignment from - * any pointer type to void*, and deal with argument conversions - * as though doing an assignment. - */ - return (void *) realloc( (char *) ptr, size ); -} - -void VanuatuWktfree (void * ptr , yyscan_t yyscanner) -{ - free( (char *) ptr ); /* see VanuatuWktrealloc() for (char *) cast */ -} - -#define YYTABLES_NAME "yytables" - -int VanuatuWktwrap(yyscan_t yyscanner ) -{ - return 1; -} - -/****************************************************************************** -** This is the end of the code that was created by Team Vanuatu -** of The University of Toronto. - -Authors: -Ruppi Rana ruppi.rana@gmail.com -Dev Tanna dev.tanna@gmail.com -Elias Adum elias.adum@gmail.com -Benton Hui benton.hui@gmail.com -Abhayan Sundararajan abhayan@gmail.com -Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com -Nikola Banovic nikola.banovic@gmail.com -Yong Jian yong.jian@utoronto.ca - -Supervisor: -Greg Wilson gvwilson@cs.toronto.ca - -------------------------------------------------------------------------------- -*/ - diff --git a/src/spatialite/src/gaiageo/vanuatuWkt.c b/src/spatialite/src/gaiageo/vanuatuWkt.c deleted file mode 100644 index a4b875e..0000000 --- a/src/spatialite/src/gaiageo/vanuatuWkt.c +++ /dev/null @@ -1,1940 +0,0 @@ -/* Driver template for the LEMON parser generator. -** The author disclaims copyright to this source code. -*/ -/* First off, code is included that follows the "include" declaration -** in the input grammar file. */ -#include - -/* Next is all token values, in a form suitable for use by makeheaders. -** This section will be null unless lemon is run with the -m switch. -*/ -/* -** These constants (all generated automatically by the parser generator) -** specify the various kinds of tokens (terminals) that the parser -** understands. -** -** Each symbol here is a terminal symbol in the grammar. -*/ -/* Make sure the INTERFACE macro is defined. -*/ -#ifndef INTERFACE -# define INTERFACE 1 -#endif -/* The next thing included is series of defines which control -** various aspects of the generated parser. -** YYCODETYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 terminals -** and nonterminals. "int" is used otherwise. -** YYNOCODE is a number of type YYCODETYPE which corresponds -** to no legal terminal or nonterminal number. This -** number is used to fill in empty slots of the hash -** table. -** YYFALLBACK If defined, this indicates that one or more tokens -** have fall-back values which should be used if the -** original value of the token will not parse. -** YYACTIONTYPE is the data type used for storing terminal -** and nonterminal numbers. "unsigned char" is -** used if there are fewer than 250 rules and -** states combined. "int" is used otherwise. -** ParseTOKENTYPE is the data type used for minor tokens given -** directly to the parser from the tokenizer. -** YYMINORTYPE is the data type used for all minor tokens. -** This is typically a union of many types, one of -** which is ParseTOKENTYPE. The entry in the union -** for base tokens is called "yy0". -** YYSTACKDEPTH is the maximum depth of the parser's stack. If -** zero the stack is dynamically sized using realloc() -** ParseARG_SDECL A static variable declaration for the %extra_argument -** ParseARG_PDECL A parameter declaration for the %extra_argument -** ParseARG_STORE Code to store %extra_argument into yypParser -** ParseARG_FETCH Code to extract %extra_argument from yypParser -** YYNSTATE the combined number of states. -** YYNRULE the number of rules in the grammar -** YYERRORSYMBOL is the code number of the error symbol. If not -** defined, then do no error processing. -*/ -#define YYCODETYPE unsigned char -#define YYNOCODE 133 -#define YYACTIONTYPE unsigned short int -#define ParseTOKENTYPE void * -typedef union { - int yyinit; - ParseTOKENTYPE yy0; -} YYMINORTYPE; -#ifndef YYSTACKDEPTH -#define YYSTACKDEPTH 1000000 -#endif -#define ParseARG_SDECL struct vanuatu_data *p_data ; -#define ParseARG_PDECL , struct vanuatu_data *p_data -#define ParseARG_FETCH struct vanuatu_data *p_data = yypParser->p_data -#define ParseARG_STORE yypParser->p_data = p_data -#define YYNSTATE 490 -#define YYNRULE 201 -#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) -#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) -#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) - -/* The yyzerominor constant is used to initialize instances of -** YYMINORTYPE objects to zero. */ -static const YYMINORTYPE yyzerominor = { 0 }; - -/* Define the yytestcase() macro to be a no-op if is not already defined -** otherwise. -** -** Applications can choose to define yytestcase() in the %include section -** to a macro that can assist in verifying code coverage. For production -** code the yytestcase() macro should be turned off. But it is useful -** for testing. -*/ -#ifndef yytestcase -# define yytestcase(X) -#endif - - -/* Next are the tables used to determine what action to take based on the -** current state and lookahead token. These tables are used to implement -** functions that take a state number and lookahead value and return an -** action integer. -** -** Suppose the action integer is N. Then the action is determined as -** follows -** -** 0 <= N < YYNSTATE Shift N. That is, push the lookahead -** token onto the stack and goto state N. -** -** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. -** -** N == YYNSTATE+YYNRULE A syntax error has occurred. -** -** N == YYNSTATE+YYNRULE+1 The parser accepts its input. -** -** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused -** slots in the yy_action[] table. -** -** The action table is constructed as a single large table named yy_action[]. -** Given state S and lookahead X, the action is computed as -** -** yy_action[ yy_shift_ofst[S] + X ] -** -** If the index value yy_shift_ofst[S]+X is out of range or if the value -** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] -** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table -** and that yy_default[S] should be used instead. -** -** The formula above is for computing the action when the lookahead is -** a terminal symbol. If the lookahead is a non-terminal (as occurs after -** a reduce action) then the yy_reduce_ofst[] array is used in place of -** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of -** YY_SHIFT_USE_DFLT. -** -** The following are the tables generated in this section: -** -** yy_action[] A single table containing all actions. -** yy_lookahead[] A table containing the lookahead for each entry in -** yy_action. Used to detect hash collisions. -** yy_shift_ofst[] For each state, the offset into yy_action for -** shifting terminals. -** yy_reduce_ofst[] For each state, the offset into yy_action for -** shifting non-terminals after a reduce. -** yy_default[] Default action for each state. -*/ -static const YYACTIONTYPE yy_action[] = { - /* 0 */ 230, 316, 317, 318, 319, 320, 321, 322, 323, 324, - /* 10 */ 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, - /* 20 */ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, - /* 30 */ 345, 346, 347, 348, 490, 238, 231, 51, 93, 233, - /* 40 */ 235, 237, 94, 46, 54, 57, 60, 63, 66, 72, - /* 50 */ 78, 84, 90, 97, 105, 113, 122, 127, 132, 137, - /* 60 */ 142, 147, 152, 157, 162, 179, 196, 213, 231, 231, - /* 70 */ 101, 351, 350, 233, 47, 102, 54, 54, 234, 57, - /* 80 */ 66, 66, 47, 72, 90, 90, 241, 97, 122, 122, - /* 90 */ 47, 127, 142, 142, 233, 147, 177, 170, 58, 194, - /* 100 */ 57, 235, 47, 235, 72, 692, 1, 60, 97, 60, - /* 110 */ 59, 78, 127, 78, 47, 105, 147, 105, 253, 132, - /* 120 */ 187, 132, 47, 152, 237, 152, 48, 211, 91, 204, - /* 130 */ 63, 237, 254, 351, 84, 98, 47, 63, 113, 106, - /* 140 */ 351, 84, 137, 114, 351, 113, 157, 232, 351, 137, - /* 150 */ 228, 109, 46, 157, 49, 236, 110, 221, 49, 163, - /* 160 */ 172, 173, 174, 175, 176, 164, 165, 166, 167, 168, - /* 170 */ 169, 180, 189, 190, 191, 192, 193, 181, 182, 183, - /* 180 */ 184, 185, 186, 353, 50, 197, 206, 207, 208, 209, - /* 190 */ 210, 355, 198, 199, 200, 201, 202, 203, 18, 52, - /* 200 */ 358, 20, 214, 223, 224, 225, 226, 227, 21, 53, - /* 210 */ 215, 216, 217, 218, 219, 220, 239, 118, 55, 51, - /* 220 */ 56, 46, 119, 46, 243, 46, 61, 49, 62, 49, - /* 230 */ 245, 49, 51, 64, 65, 51, 51, 248, 249, 250, - /* 240 */ 70, 357, 46, 46, 46, 46, 255, 76, 240, 258, - /* 250 */ 47, 47, 49, 259, 260, 82, 49, 49, 49, 361, - /* 260 */ 263, 264, 51, 51, 265, 88, 51, 51, 359, 23, - /* 270 */ 242, 24, 26, 362, 27, 29, 67, 30, 69, 364, - /* 280 */ 244, 73, 365, 34, 367, 246, 368, 79, 251, 370, - /* 290 */ 75, 38, 81, 85, 256, 374, 68, 42, 247, 71, - /* 300 */ 87, 261, 10, 373, 92, 74, 378, 252, 77, 267, - /* 310 */ 377, 266, 95, 80, 382, 257, 83, 269, 381, 268, - /* 320 */ 86, 91, 96, 262, 89, 386, 385, 11, 389, 99, - /* 330 */ 391, 100, 270, 272, 271, 103, 98, 12, 104, 394, - /* 340 */ 396, 107, 106, 108, 111, 274, 273, 13, 401, 277, - /* 350 */ 120, 114, 123, 112, 275, 115, 125, 279, 399, 406, - /* 360 */ 278, 116, 117, 276, 128, 404, 408, 130, 121, 133, - /* 370 */ 280, 135, 138, 409, 140, 143, 145, 148, 153, 150, - /* 380 */ 124, 126, 155, 158, 129, 131, 160, 2, 3, 4, - /* 390 */ 134, 5, 136, 693, 693, 693, 693, 139, 693, 141, - /* 400 */ 693, 693, 693, 144, 693, 146, 693, 6, 412, 7, - /* 410 */ 411, 693, 149, 151, 693, 281, 415, 154, 414, 156, - /* 420 */ 693, 693, 282, 693, 417, 159, 418, 161, 693, 693, - /* 430 */ 693, 8, 283, 421, 420, 693, 284, 693, 423, 424, - /* 440 */ 693, 693, 9, 693, 285, 693, 693, 427, 693, 426, - /* 450 */ 693, 693, 286, 693, 429, 693, 693, 693, 693, 693, - /* 460 */ 430, 693, 693, 693, 693, 287, 432, 693, 433, 693, - /* 470 */ 434, 435, 693, 436, 437, 171, 315, 14, 438, 15, - /* 480 */ 288, 289, 290, 291, 292, 293, 460, 178, 294, 445, - /* 490 */ 349, 352, 16, 19, 354, 17, 693, 447, 360, 356, - /* 500 */ 448, 693, 22, 363, 693, 449, 693, 450, 366, 25, - /* 510 */ 451, 693, 452, 188, 453, 28, 295, 369, 296, 297, - /* 520 */ 298, 299, 300, 195, 371, 31, 32, 33, 372, 375, - /* 530 */ 35, 36, 37, 376, 379, 39, 301, 40, 462, 463, - /* 540 */ 464, 465, 205, 466, 467, 41, 380, 468, 302, 303, - /* 550 */ 304, 383, 212, 305, 43, 306, 384, 307, 44, 475, - /* 560 */ 45, 387, 388, 390, 392, 308, 477, 393, 478, 395, - /* 570 */ 479, 480, 397, 398, 481, 222, 482, 400, 402, 403, - /* 580 */ 405, 483, 407, 410, 309, 413, 310, 416, 419, 422, - /* 590 */ 425, 428, 311, 431, 439, 440, 229, 312, 313, 441, - /* 600 */ 442, 443, 314, 444, 446, 454, 455, 456, 457, 458, - /* 610 */ 459, 461, 469, 470, 471, 472, 473, 474, 476, 484, - /* 620 */ 485, 486, 487, 488, 489, -}; -static const YYCODETYPE yy_lookahead[] = { - /* 0 */ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, - /* 10 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, - /* 20 */ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, - /* 30 */ 67, 68, 69, 70, 0, 74, 2, 76, 71, 5, - /* 40 */ 6, 7, 75, 76, 10, 11, 12, 13, 14, 15, - /* 50 */ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, - /* 60 */ 26, 27, 28, 29, 30, 31, 32, 33, 2, 2, - /* 70 */ 72, 8, 76, 5, 76, 77, 10, 10, 72, 11, - /* 80 */ 14, 14, 76, 15, 18, 18, 72, 19, 22, 22, - /* 90 */ 76, 23, 26, 26, 5, 27, 30, 30, 72, 31, - /* 100 */ 11, 6, 76, 6, 15, 35, 36, 12, 19, 12, - /* 110 */ 72, 16, 23, 16, 76, 20, 27, 20, 72, 24, - /* 120 */ 31, 24, 76, 28, 7, 28, 76, 32, 3, 32, - /* 130 */ 13, 7, 72, 8, 17, 3, 76, 13, 21, 3, - /* 140 */ 8, 17, 25, 3, 8, 21, 29, 71, 8, 25, - /* 150 */ 33, 73, 76, 29, 76, 73, 78, 33, 76, 43, - /* 160 */ 44, 45, 46, 47, 48, 43, 44, 45, 46, 47, - /* 170 */ 48, 57, 58, 59, 60, 61, 62, 57, 58, 59, - /* 180 */ 60, 61, 62, 76, 76, 50, 51, 52, 53, 54, - /* 190 */ 55, 76, 50, 51, 52, 53, 54, 55, 3, 76, - /* 200 */ 88, 9, 64, 65, 66, 67, 68, 69, 3, 76, - /* 210 */ 64, 65, 66, 67, 68, 69, 71, 74, 71, 76, - /* 220 */ 71, 76, 79, 76, 73, 76, 73, 76, 73, 76, - /* 230 */ 74, 76, 76, 74, 74, 76, 76, 71, 71, 71, - /* 240 */ 71, 76, 76, 76, 76, 76, 72, 72, 84, 73, - /* 250 */ 76, 76, 76, 73, 73, 73, 76, 76, 76, 89, - /* 260 */ 74, 74, 76, 76, 74, 74, 76, 76, 84, 9, - /* 270 */ 85, 3, 9, 85, 3, 9, 3, 3, 9, 90, - /* 280 */ 86, 3, 86, 3, 91, 87, 87, 3, 84, 92, - /* 290 */ 9, 3, 9, 3, 85, 93, 96, 3, 97, 96, - /* 300 */ 9, 86, 3, 97, 76, 98, 94, 99, 98, 76, - /* 310 */ 99, 87, 9, 100, 95, 101, 100, 80, 101, 84, - /* 320 */ 102, 3, 75, 103, 102, 104, 103, 3, 80, 76, - /* 330 */ 105, 76, 76, 81, 85, 9, 3, 3, 77, 81, - /* 340 */ 106, 76, 3, 76, 9, 86, 76, 3, 107, 87, - /* 350 */ 9, 3, 3, 78, 82, 76, 9, 112, 82, 108, - /* 360 */ 83, 76, 76, 76, 3, 83, 112, 9, 79, 3, - /* 370 */ 113, 9, 3, 109, 9, 3, 9, 3, 3, 9, - /* 380 */ 88, 88, 9, 3, 89, 89, 9, 3, 9, 3, - /* 390 */ 90, 9, 90, 132, 132, 132, 132, 91, 132, 91, - /* 400 */ 132, 132, 132, 92, 132, 92, 132, 3, 110, 9, - /* 410 */ 113, 132, 93, 93, 132, 114, 111, 94, 114, 94, - /* 420 */ 132, 132, 115, 132, 115, 95, 116, 95, 132, 132, - /* 430 */ 132, 3, 120, 117, 120, 132, 121, 132, 121, 118, - /* 440 */ 132, 132, 9, 132, 122, 132, 132, 119, 132, 122, - /* 450 */ 132, 132, 123, 132, 123, 132, 132, 132, 132, 132, - /* 460 */ 124, 132, 132, 132, 132, 128, 128, 132, 128, 132, - /* 470 */ 128, 128, 132, 128, 128, 124, 1, 3, 128, 3, - /* 480 */ 128, 128, 128, 128, 128, 128, 126, 124, 129, 125, - /* 490 */ 4, 4, 3, 9, 4, 3, 132, 129, 4, 4, - /* 500 */ 129, 132, 9, 4, 132, 129, 132, 129, 4, 9, - /* 510 */ 129, 132, 129, 125, 129, 9, 129, 4, 129, 129, - /* 520 */ 129, 129, 129, 125, 4, 9, 9, 9, 4, 4, - /* 530 */ 9, 9, 9, 4, 4, 9, 130, 9, 130, 130, - /* 540 */ 130, 130, 126, 130, 130, 9, 4, 130, 130, 130, - /* 550 */ 130, 4, 126, 130, 9, 130, 4, 130, 9, 127, - /* 560 */ 9, 4, 4, 4, 4, 131, 131, 4, 131, 4, - /* 570 */ 131, 131, 4, 4, 131, 127, 131, 4, 4, 4, - /* 580 */ 4, 131, 4, 4, 131, 4, 131, 4, 4, 4, - /* 590 */ 4, 4, 131, 4, 4, 4, 127, 131, 131, 4, - /* 600 */ 4, 4, 131, 4, 4, 4, 4, 4, 4, 4, - /* 610 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, - /* 620 */ 4, 4, 4, 4, 4, -}; -#define YY_SHIFT_USE_DFLT (-1) -#define YY_SHIFT_MAX 314 -static const short yy_shift_ofst[] = { - /* 0 */ -1, 34, 66, 67, 68, 89, 95, 97, 117, 124, - /* 10 */ 125, 132, 136, 140, 63, 63, 63, 63, 63, 63, - /* 20 */ 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - /* 30 */ 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - /* 40 */ 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, - /* 50 */ 63, 63, 63, 63, 195, 192, 192, 205, 260, 260, - /* 60 */ 268, 263, 263, 271, 266, 266, 273, 274, 269, 274, - /* 70 */ 192, 269, 278, 280, 281, 280, 260, 281, 284, 288, - /* 80 */ 283, 288, 263, 283, 290, 294, 291, 294, 266, 291, - /* 90 */ 299, 63, 63, 192, 303, 318, 303, 324, 63, 63, - /* 100 */ 63, 260, 326, 333, 326, 334, 63, 63, 63, 263, - /* 110 */ 335, 339, 335, 344, 63, 63, 63, 63, 266, 341, - /* 120 */ 348, 341, 349, 195, 347, 195, 347, 361, 205, 358, - /* 130 */ 205, 358, 366, 268, 362, 268, 362, 369, 271, 365, - /* 140 */ 271, 365, 372, 273, 367, 273, 367, 374, 278, 370, - /* 150 */ 278, 370, 375, 284, 373, 284, 373, 380, 290, 377, - /* 160 */ 290, 377, 384, 379, 379, 379, 379, 379, 379, 379, - /* 170 */ 384, 379, 379, 379, 379, 379, 379, 384, 379, 386, - /* 180 */ 382, 382, 382, 382, 382, 382, 382, 386, 382, 382, - /* 190 */ 382, 382, 382, 382, 386, 382, 404, 400, 400, 400, - /* 200 */ 400, 400, 400, 400, 404, 400, 400, 400, 400, 400, - /* 210 */ 400, 404, 400, 428, 433, 433, 433, 433, 433, 433, - /* 220 */ 433, 428, 433, 433, 433, 433, 433, 433, 428, 433, - /* 230 */ 475, 474, 486, 476, 487, 489, 490, 492, 495, 484, - /* 240 */ 494, 493, 499, 500, 504, 506, 513, 520, 516, 517, - /* 250 */ 518, 524, 525, 521, 522, 523, 529, 530, 526, 528, - /* 260 */ 536, 542, 547, 545, 549, 551, 552, 557, 558, 559, - /* 270 */ 560, 563, 565, 568, 569, 573, 574, 575, 576, 578, - /* 280 */ 579, 581, 583, 584, 585, 586, 587, 589, 590, 591, - /* 290 */ 595, 596, 597, 599, 600, 601, 602, 603, 604, 605, - /* 300 */ 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, - /* 310 */ 616, 617, 618, 619, 620, -}; -#define YY_REDUCE_USE_DFLT (-40) -#define YY_REDUCE_MAX 229 -static const short yy_reduce_ofst[] = { - /* 0 */ 70, -37, 116, 122, 114, 120, 135, 142, 138, 146, - /* 10 */ -33, -2, 78, 143, 76, 6, 82, -39, 145, 147, - /* 20 */ 149, 14, 26, 38, 151, 153, 155, 156, 159, 160, - /* 30 */ 166, 167, 168, 169, 46, 60, 174, 175, 176, 180, - /* 40 */ 181, 182, 186, 187, 190, 191, -4, 50, 107, 108, - /* 50 */ 115, 123, 133, 165, 112, 164, 184, 170, 185, 188, - /* 60 */ 189, 194, 196, 193, 198, 199, 197, 200, 201, 203, - /* 70 */ 204, 206, 202, 207, 208, 210, 209, 211, 212, 213, - /* 80 */ 214, 216, 215, 217, 219, 218, 220, 222, 224, 223, - /* 90 */ 221, 228, 233, 235, 237, 247, 248, 225, 253, 255, - /* 100 */ 256, 249, 252, 261, 258, 234, 265, 267, 270, 259, - /* 110 */ 272, 275, 276, 241, 279, 285, 286, 287, 262, 277, - /* 120 */ 289, 282, 251, 292, 245, 293, 254, 264, 295, 257, - /* 130 */ 296, 297, 298, 300, 301, 302, 304, 305, 306, 307, - /* 140 */ 308, 309, 310, 311, 312, 313, 314, 316, 319, 315, - /* 150 */ 320, 317, 321, 323, 322, 325, 327, 328, 330, 329, - /* 160 */ 332, 331, 336, 337, 338, 340, 342, 343, 345, 346, - /* 170 */ 351, 350, 352, 353, 354, 355, 356, 363, 357, 364, - /* 180 */ 359, 368, 371, 376, 378, 381, 383, 388, 385, 387, - /* 190 */ 389, 390, 391, 392, 398, 393, 360, 406, 408, 409, - /* 200 */ 410, 411, 413, 414, 416, 417, 418, 419, 420, 423, - /* 210 */ 425, 426, 427, 432, 434, 435, 437, 439, 440, 443, - /* 220 */ 445, 448, 450, 453, 455, 461, 466, 467, 469, 471, -}; -static const YYACTIONTYPE yy_default[] = { - /* 0 */ 491, 691, 691, 691, 691, 691, 691, 691, 691, 691, - /* 10 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, - /* 20 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, - /* 30 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, - /* 40 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, - /* 50 */ 691, 691, 691, 691, 691, 547, 547, 691, 549, 549, - /* 60 */ 691, 551, 551, 691, 553, 553, 691, 691, 572, 691, - /* 70 */ 547, 572, 691, 691, 575, 691, 549, 575, 691, 691, - /* 80 */ 578, 691, 551, 578, 691, 691, 581, 691, 553, 581, - /* 90 */ 691, 691, 691, 547, 539, 691, 539, 691, 691, 691, - /* 100 */ 691, 549, 541, 691, 541, 691, 691, 691, 691, 551, - /* 110 */ 543, 691, 543, 691, 691, 691, 691, 691, 553, 545, - /* 120 */ 691, 545, 691, 691, 600, 691, 600, 691, 691, 603, - /* 130 */ 691, 603, 691, 691, 606, 691, 606, 691, 691, 609, - /* 140 */ 691, 609, 691, 691, 616, 691, 616, 691, 691, 619, - /* 150 */ 691, 619, 691, 691, 622, 691, 622, 691, 691, 625, - /* 160 */ 691, 625, 691, 638, 638, 638, 638, 638, 638, 638, - /* 170 */ 691, 638, 638, 638, 638, 638, 638, 691, 638, 691, - /* 180 */ 653, 653, 653, 653, 653, 653, 653, 691, 653, 653, - /* 190 */ 653, 653, 653, 653, 691, 653, 691, 668, 668, 668, - /* 200 */ 668, 668, 668, 668, 691, 668, 668, 668, 668, 668, - /* 210 */ 668, 691, 668, 691, 683, 683, 683, 683, 683, 683, - /* 220 */ 683, 691, 683, 683, 683, 683, 683, 683, 691, 683, - /* 230 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, - /* 240 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, - /* 250 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, - /* 260 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, - /* 270 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, - /* 280 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, - /* 290 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, - /* 300 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, - /* 310 */ 691, 691, 691, 691, 691, 492, 493, 494, 495, 496, - /* 320 */ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, - /* 330 */ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, - /* 340 */ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, - /* 350 */ 534, 538, 527, 535, 528, 536, 529, 537, 555, 548, - /* 360 */ 559, 556, 550, 560, 557, 552, 561, 558, 554, 562, - /* 370 */ 563, 567, 571, 573, 564, 568, 574, 576, 565, 569, - /* 380 */ 577, 579, 566, 570, 580, 582, 583, 530, 587, 540, - /* 390 */ 591, 584, 531, 588, 542, 592, 585, 532, 589, 544, - /* 400 */ 593, 586, 533, 590, 546, 594, 595, 599, 601, 596, - /* 410 */ 602, 604, 597, 605, 607, 598, 608, 610, 611, 615, - /* 420 */ 617, 612, 618, 620, 613, 621, 623, 614, 624, 626, - /* 430 */ 627, 631, 639, 640, 641, 642, 643, 644, 645, 632, - /* 440 */ 633, 634, 635, 636, 637, 628, 646, 654, 655, 656, - /* 450 */ 657, 658, 659, 660, 647, 648, 649, 650, 651, 652, - /* 460 */ 629, 661, 669, 670, 671, 672, 673, 674, 675, 662, - /* 470 */ 663, 664, 665, 666, 667, 630, 676, 684, 685, 686, - /* 480 */ 687, 688, 689, 690, 677, 678, 679, 680, 681, 682, -}; -#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0])) - -/* The next table maps tokens into fallback tokens. If a construct -** like the following: -** -** %fallback ID X Y Z. -** -** appears in the grammar, then ID becomes a fallback token for X, Y, -** and Z. Whenever one of the tokens X, Y, or Z is input to the parser -** but it does not parse, the type of the token is changed to ID and -** the parse is retried before an error is thrown. -*/ -#ifdef YYFALLBACK -static const YYCODETYPE yyFallback[] = { -}; -#endif /* YYFALLBACK */ - -/* The following structure represents a single element of the -** parser's stack. Information stored includes: -** -** + The state number for the parser at this level of the stack. -** -** + The value of the token stored at this level of the stack. -** (In other words, the "major" token.) -** -** + The semantic value stored at this level of the stack. This is -** the information used by the action routines in the grammar. -** It is sometimes called the "minor" token. -*/ -struct yyStackEntry { - YYACTIONTYPE stateno; /* The state-number */ - YYCODETYPE major; /* The major token value. This is the code - ** number for the token at this stack level */ - YYMINORTYPE minor; /* The user-supplied minor token value. This - ** is the value of the token */ -}; -typedef struct yyStackEntry yyStackEntry; - -/* The state of the parser is completely contained in an instance of -** the following structure */ -struct yyParser { - int yyidx; /* Index of top element in stack */ -#ifdef YYTRACKMAXSTACKDEPTH - int yyidxMax; /* Maximum value of yyidx */ -#endif - int yyerrcnt; /* Shifts left before out of the error */ - ParseARG_SDECL /* A place to hold %extra_argument */ -#if YYSTACKDEPTH<=0 - int yystksz; /* Current side of the stack */ - yyStackEntry *yystack; /* The parser's stack */ -#else - yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ -#endif -}; -typedef struct yyParser yyParser; - -#ifndef NDEBUG -#include -static FILE *yyTraceFILE = 0; -static char *yyTracePrompt = 0; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* -** Turn parser tracing on by giving a stream to which to write the trace -** and a prompt to preface each trace message. Tracing is turned off -** by making either argument NULL -** -** Inputs: -**
    -**
  • A FILE* to which trace output should be written. -** If NULL, then tracing is turned off. -**
  • A prefix string written at the beginning of every -** line of trace output. If NULL, then tracing is -** turned off. -**
-** -** Outputs: -** None. -*/ -void ParseTrace(FILE *TraceFILE, char *zTracePrompt){ - yyTraceFILE = TraceFILE; - yyTracePrompt = zTracePrompt; - if( yyTraceFILE==0 ) yyTracePrompt = 0; - else if( yyTracePrompt==0 ) yyTraceFILE = 0; -} -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing shifts, the names of all terminals and nonterminals -** are required. The following table supplies these names */ -static const char *const yyTokenName[] = { - "$", "VANUATU_NEWLINE", "VANUATU_POINT", "VANUATU_OPEN_BRACKET", - "VANUATU_CLOSE_BRACKET", "VANUATU_POINT_M", "VANUATU_POINT_Z", "VANUATU_POINT_ZM", - "VANUATU_NUM", "VANUATU_COMMA", "VANUATU_LINESTRING", "VANUATU_LINESTRING_M", - "VANUATU_LINESTRING_Z", "VANUATU_LINESTRING_ZM", "VANUATU_POLYGON", "VANUATU_POLYGON_M", - "VANUATU_POLYGON_Z", "VANUATU_POLYGON_ZM", "VANUATU_MULTIPOINT", "VANUATU_MULTIPOINT_M", - "VANUATU_MULTIPOINT_Z", "VANUATU_MULTIPOINT_ZM", "VANUATU_MULTILINESTRING", "VANUATU_MULTILINESTRING_M", - "VANUATU_MULTILINESTRING_Z", "VANUATU_MULTILINESTRING_ZM", "VANUATU_MULTIPOLYGON", "VANUATU_MULTIPOLYGON_M", - "VANUATU_MULTIPOLYGON_Z", "VANUATU_MULTIPOLYGON_ZM", "VANUATU_GEOMETRYCOLLECTION", "VANUATU_GEOMETRYCOLLECTION_M", - "VANUATU_GEOMETRYCOLLECTION_Z", "VANUATU_GEOMETRYCOLLECTION_ZM", "error", "main", - "in", "state", "program", "geo_text", - "geo_textz", "geo_textm", "geo_textzm", "point", - "linestring", "polygon", "multipoint", "multilinestring", - "multipolygon", "geocoll", "pointz", "linestringz", - "polygonz", "multipointz", "multilinestringz", "multipolygonz", - "geocollz", "pointm", "linestringm", "polygonm", - "multipointm", "multilinestringm", "multipolygonm", "geocollm", - "pointzm", "linestringzm", "polygonzm", "multipointzm", - "multilinestringzm", "multipolygonzm", "geocollzm", "point_coordxy", - "point_coordxym", "point_coordxyz", "point_coordxyzm", "point_brkt_coordxy", - "coord", "point_brkt_coordxym", "point_brkt_coordxyz", "point_brkt_coordxyzm", - "extra_brkt_pointsxy", "extra_brkt_pointsxym", "extra_brkt_pointsxyz", "extra_brkt_pointsxyzm", - "extra_pointsxy", "extra_pointsxym", "extra_pointsxyz", "extra_pointsxyzm", - "linestring_text", "linestring_textm", "linestring_textz", "linestring_textzm", - "polygon_text", "polygon_textm", "polygon_textz", "polygon_textzm", - "ring", "extra_rings", "ringm", "extra_ringsm", - "ringz", "extra_ringsz", "ringzm", "extra_ringszm", - "multipoint_text", "multipoint_textm", "multipoint_textz", "multipoint_textzm", - "multilinestring_text", "multilinestring_textm", "multilinestring_textz", "multilinestring_textzm", - "multilinestring_text2", "multilinestring_textm2", "multilinestring_textz2", "multilinestring_textzm2", - "multipolygon_text", "multipolygon_textm", "multipolygon_textz", "multipolygon_textzm", - "multipolygon_text2", "multipolygon_textm2", "multipolygon_textz2", "multipolygon_textzm2", - "geocoll_text", "geocoll_textm", "geocoll_textz", "geocoll_textzm", - "geocoll_text2", "geocoll_textm2", "geocoll_textz2", "geocoll_textzm2", -}; -#endif /* NDEBUG */ - -#ifndef NDEBUG -/* For tracing reduce actions, the names of all rules are required. -*/ -static const char *const yyRuleName[] = { - /* 0 */ "main ::= in", - /* 1 */ "in ::=", - /* 2 */ "in ::= in state VANUATU_NEWLINE", - /* 3 */ "state ::= program", - /* 4 */ "program ::= geo_text", - /* 5 */ "program ::= geo_textz", - /* 6 */ "program ::= geo_textm", - /* 7 */ "program ::= geo_textzm", - /* 8 */ "geo_text ::= point", - /* 9 */ "geo_text ::= linestring", - /* 10 */ "geo_text ::= polygon", - /* 11 */ "geo_text ::= multipoint", - /* 12 */ "geo_text ::= multilinestring", - /* 13 */ "geo_text ::= multipolygon", - /* 14 */ "geo_text ::= geocoll", - /* 15 */ "geo_textz ::= pointz", - /* 16 */ "geo_textz ::= linestringz", - /* 17 */ "geo_textz ::= polygonz", - /* 18 */ "geo_textz ::= multipointz", - /* 19 */ "geo_textz ::= multilinestringz", - /* 20 */ "geo_textz ::= multipolygonz", - /* 21 */ "geo_textz ::= geocollz", - /* 22 */ "geo_textm ::= pointm", - /* 23 */ "geo_textm ::= linestringm", - /* 24 */ "geo_textm ::= polygonm", - /* 25 */ "geo_textm ::= multipointm", - /* 26 */ "geo_textm ::= multilinestringm", - /* 27 */ "geo_textm ::= multipolygonm", - /* 28 */ "geo_textm ::= geocollm", - /* 29 */ "geo_textzm ::= pointzm", - /* 30 */ "geo_textzm ::= linestringzm", - /* 31 */ "geo_textzm ::= polygonzm", - /* 32 */ "geo_textzm ::= multipointzm", - /* 33 */ "geo_textzm ::= multilinestringzm", - /* 34 */ "geo_textzm ::= multipolygonzm", - /* 35 */ "geo_textzm ::= geocollzm", - /* 36 */ "point ::= VANUATU_POINT VANUATU_OPEN_BRACKET point_coordxy VANUATU_CLOSE_BRACKET", - /* 37 */ "pointm ::= VANUATU_POINT_M VANUATU_OPEN_BRACKET point_coordxym VANUATU_CLOSE_BRACKET", - /* 38 */ "pointz ::= VANUATU_POINT_Z VANUATU_OPEN_BRACKET point_coordxyz VANUATU_CLOSE_BRACKET", - /* 39 */ "pointzm ::= VANUATU_POINT_ZM VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_CLOSE_BRACKET", - /* 40 */ "point_brkt_coordxy ::= VANUATU_OPEN_BRACKET coord coord VANUATU_CLOSE_BRACKET", - /* 41 */ "point_brkt_coordxym ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET", - /* 42 */ "point_brkt_coordxyz ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET", - /* 43 */ "point_brkt_coordxyzm ::= VANUATU_OPEN_BRACKET coord coord coord coord VANUATU_CLOSE_BRACKET", - /* 44 */ "point_coordxy ::= coord coord", - /* 45 */ "point_coordxym ::= coord coord coord", - /* 46 */ "point_coordxyz ::= coord coord coord", - /* 47 */ "point_coordxyzm ::= coord coord coord coord", - /* 48 */ "coord ::= VANUATU_NUM", - /* 49 */ "extra_brkt_pointsxy ::=", - /* 50 */ "extra_brkt_pointsxy ::= VANUATU_COMMA point_brkt_coordxy extra_brkt_pointsxy", - /* 51 */ "extra_brkt_pointsxym ::=", - /* 52 */ "extra_brkt_pointsxym ::= VANUATU_COMMA point_brkt_coordxym extra_brkt_pointsxym", - /* 53 */ "extra_brkt_pointsxyz ::=", - /* 54 */ "extra_brkt_pointsxyz ::= VANUATU_COMMA point_brkt_coordxyz extra_brkt_pointsxyz", - /* 55 */ "extra_brkt_pointsxyzm ::=", - /* 56 */ "extra_brkt_pointsxyzm ::= VANUATU_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm", - /* 57 */ "extra_pointsxy ::=", - /* 58 */ "extra_pointsxy ::= VANUATU_COMMA point_coordxy extra_pointsxy", - /* 59 */ "extra_pointsxym ::=", - /* 60 */ "extra_pointsxym ::= VANUATU_COMMA point_coordxym extra_pointsxym", - /* 61 */ "extra_pointsxyz ::=", - /* 62 */ "extra_pointsxyz ::= VANUATU_COMMA point_coordxyz extra_pointsxyz", - /* 63 */ "extra_pointsxyzm ::=", - /* 64 */ "extra_pointsxyzm ::= VANUATU_COMMA point_coordxyzm extra_pointsxyzm", - /* 65 */ "linestring ::= VANUATU_LINESTRING linestring_text", - /* 66 */ "linestringm ::= VANUATU_LINESTRING_M linestring_textm", - /* 67 */ "linestringz ::= VANUATU_LINESTRING_Z linestring_textz", - /* 68 */ "linestringzm ::= VANUATU_LINESTRING_ZM linestring_textzm", - /* 69 */ "linestring_text ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET", - /* 70 */ "linestring_textm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET", - /* 71 */ "linestring_textz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET", - /* 72 */ "linestring_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET", - /* 73 */ "polygon ::= VANUATU_POLYGON polygon_text", - /* 74 */ "polygonm ::= VANUATU_POLYGON_M polygon_textm", - /* 75 */ "polygonz ::= VANUATU_POLYGON_Z polygon_textz", - /* 76 */ "polygonzm ::= VANUATU_POLYGON_ZM polygon_textzm", - /* 77 */ "polygon_text ::= VANUATU_OPEN_BRACKET ring extra_rings VANUATU_CLOSE_BRACKET", - /* 78 */ "polygon_textm ::= VANUATU_OPEN_BRACKET ringm extra_ringsm VANUATU_CLOSE_BRACKET", - /* 79 */ "polygon_textz ::= VANUATU_OPEN_BRACKET ringz extra_ringsz VANUATU_CLOSE_BRACKET", - /* 80 */ "polygon_textzm ::= VANUATU_OPEN_BRACKET ringzm extra_ringszm VANUATU_CLOSE_BRACKET", - /* 81 */ "ring ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET", - /* 82 */ "extra_rings ::=", - /* 83 */ "extra_rings ::= VANUATU_COMMA ring extra_rings", - /* 84 */ "ringm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET", - /* 85 */ "extra_ringsm ::=", - /* 86 */ "extra_ringsm ::= VANUATU_COMMA ringm extra_ringsm", - /* 87 */ "ringz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET", - /* 88 */ "extra_ringsz ::=", - /* 89 */ "extra_ringsz ::= VANUATU_COMMA ringz extra_ringsz", - /* 90 */ "ringzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET", - /* 91 */ "extra_ringszm ::=", - /* 92 */ "extra_ringszm ::= VANUATU_COMMA ringzm extra_ringszm", - /* 93 */ "multipoint ::= VANUATU_MULTIPOINT multipoint_text", - /* 94 */ "multipointm ::= VANUATU_MULTIPOINT_M multipoint_textm", - /* 95 */ "multipointz ::= VANUATU_MULTIPOINT_Z multipoint_textz", - /* 96 */ "multipointzm ::= VANUATU_MULTIPOINT_ZM multipoint_textzm", - /* 97 */ "multipoint_text ::= VANUATU_OPEN_BRACKET point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET", - /* 98 */ "multipoint_textm ::= VANUATU_OPEN_BRACKET point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET", - /* 99 */ "multipoint_textz ::= VANUATU_OPEN_BRACKET point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET", - /* 100 */ "multipoint_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET", - /* 101 */ "multipoint_text ::= VANUATU_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy VANUATU_CLOSE_BRACKET", - /* 102 */ "multipoint_textm ::= VANUATU_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym VANUATU_CLOSE_BRACKET", - /* 103 */ "multipoint_textz ::= VANUATU_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz VANUATU_CLOSE_BRACKET", - /* 104 */ "multipoint_textzm ::= VANUATU_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm VANUATU_CLOSE_BRACKET", - /* 105 */ "multilinestring ::= VANUATU_MULTILINESTRING multilinestring_text", - /* 106 */ "multilinestringm ::= VANUATU_MULTILINESTRING_M multilinestring_textm", - /* 107 */ "multilinestringz ::= VANUATU_MULTILINESTRING_Z multilinestring_textz", - /* 108 */ "multilinestringzm ::= VANUATU_MULTILINESTRING_ZM multilinestring_textzm", - /* 109 */ "multilinestring_text ::= VANUATU_OPEN_BRACKET linestring_text multilinestring_text2 VANUATU_CLOSE_BRACKET", - /* 110 */ "multilinestring_text2 ::=", - /* 111 */ "multilinestring_text2 ::= VANUATU_COMMA linestring_text multilinestring_text2", - /* 112 */ "multilinestring_textm ::= VANUATU_OPEN_BRACKET linestring_textm multilinestring_textm2 VANUATU_CLOSE_BRACKET", - /* 113 */ "multilinestring_textm2 ::=", - /* 114 */ "multilinestring_textm2 ::= VANUATU_COMMA linestring_textm multilinestring_textm2", - /* 115 */ "multilinestring_textz ::= VANUATU_OPEN_BRACKET linestring_textz multilinestring_textz2 VANUATU_CLOSE_BRACKET", - /* 116 */ "multilinestring_textz2 ::=", - /* 117 */ "multilinestring_textz2 ::= VANUATU_COMMA linestring_textz multilinestring_textz2", - /* 118 */ "multilinestring_textzm ::= VANUATU_OPEN_BRACKET linestring_textzm multilinestring_textzm2 VANUATU_CLOSE_BRACKET", - /* 119 */ "multilinestring_textzm2 ::=", - /* 120 */ "multilinestring_textzm2 ::= VANUATU_COMMA linestring_textzm multilinestring_textzm2", - /* 121 */ "multipolygon ::= VANUATU_MULTIPOLYGON multipolygon_text", - /* 122 */ "multipolygonm ::= VANUATU_MULTIPOLYGON_M multipolygon_textm", - /* 123 */ "multipolygonz ::= VANUATU_MULTIPOLYGON_Z multipolygon_textz", - /* 124 */ "multipolygonzm ::= VANUATU_MULTIPOLYGON_ZM multipolygon_textzm", - /* 125 */ "multipolygon_text ::= VANUATU_OPEN_BRACKET polygon_text multipolygon_text2 VANUATU_CLOSE_BRACKET", - /* 126 */ "multipolygon_text2 ::=", - /* 127 */ "multipolygon_text2 ::= VANUATU_COMMA polygon_text multipolygon_text2", - /* 128 */ "multipolygon_textm ::= VANUATU_OPEN_BRACKET polygon_textm multipolygon_textm2 VANUATU_CLOSE_BRACKET", - /* 129 */ "multipolygon_textm2 ::=", - /* 130 */ "multipolygon_textm2 ::= VANUATU_COMMA polygon_textm multipolygon_textm2", - /* 131 */ "multipolygon_textz ::= VANUATU_OPEN_BRACKET polygon_textz multipolygon_textz2 VANUATU_CLOSE_BRACKET", - /* 132 */ "multipolygon_textz2 ::=", - /* 133 */ "multipolygon_textz2 ::= VANUATU_COMMA polygon_textz multipolygon_textz2", - /* 134 */ "multipolygon_textzm ::= VANUATU_OPEN_BRACKET polygon_textzm multipolygon_textzm2 VANUATU_CLOSE_BRACKET", - /* 135 */ "multipolygon_textzm2 ::=", - /* 136 */ "multipolygon_textzm2 ::= VANUATU_COMMA polygon_textzm multipolygon_textzm2", - /* 137 */ "geocoll ::= VANUATU_GEOMETRYCOLLECTION geocoll_text", - /* 138 */ "geocollm ::= VANUATU_GEOMETRYCOLLECTION_M geocoll_textm", - /* 139 */ "geocollz ::= VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz", - /* 140 */ "geocollzm ::= VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm", - /* 141 */ "geocoll_text ::= VANUATU_OPEN_BRACKET point geocoll_text2 VANUATU_CLOSE_BRACKET", - /* 142 */ "geocoll_text ::= VANUATU_OPEN_BRACKET linestring geocoll_text2 VANUATU_CLOSE_BRACKET", - /* 143 */ "geocoll_text ::= VANUATU_OPEN_BRACKET polygon geocoll_text2 VANUATU_CLOSE_BRACKET", - /* 144 */ "geocoll_text ::= VANUATU_OPEN_BRACKET multipoint geocoll_text2 VANUATU_CLOSE_BRACKET", - /* 145 */ "geocoll_text ::= VANUATU_OPEN_BRACKET multilinestring geocoll_text2 VANUATU_CLOSE_BRACKET", - /* 146 */ "geocoll_text ::= VANUATU_OPEN_BRACKET multipolygon geocoll_text2 VANUATU_CLOSE_BRACKET", - /* 147 */ "geocoll_text ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 VANUATU_CLOSE_BRACKET", - /* 148 */ "geocoll_text2 ::=", - /* 149 */ "geocoll_text2 ::= VANUATU_COMMA point geocoll_text2", - /* 150 */ "geocoll_text2 ::= VANUATU_COMMA linestring geocoll_text2", - /* 151 */ "geocoll_text2 ::= VANUATU_COMMA polygon geocoll_text2", - /* 152 */ "geocoll_text2 ::= VANUATU_COMMA multipoint geocoll_text2", - /* 153 */ "geocoll_text2 ::= VANUATU_COMMA multilinestring geocoll_text2", - /* 154 */ "geocoll_text2 ::= VANUATU_COMMA multipolygon geocoll_text2", - /* 155 */ "geocoll_text2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2", - /* 156 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET pointm geocoll_textm2 VANUATU_CLOSE_BRACKET", - /* 157 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET linestringm geocoll_textm2 VANUATU_CLOSE_BRACKET", - /* 158 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET polygonm geocoll_textm2 VANUATU_CLOSE_BRACKET", - /* 159 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET multipointm geocoll_textm2 VANUATU_CLOSE_BRACKET", - /* 160 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET multilinestringm geocoll_textm2 VANUATU_CLOSE_BRACKET", - /* 161 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET multipolygonm geocoll_textm2 VANUATU_CLOSE_BRACKET", - /* 162 */ "geocoll_textm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 VANUATU_CLOSE_BRACKET", - /* 163 */ "geocoll_textm2 ::=", - /* 164 */ "geocoll_textm2 ::= VANUATU_COMMA pointm geocoll_textm2", - /* 165 */ "geocoll_textm2 ::= VANUATU_COMMA linestringm geocoll_textm2", - /* 166 */ "geocoll_textm2 ::= VANUATU_COMMA polygonm geocoll_textm2", - /* 167 */ "geocoll_textm2 ::= VANUATU_COMMA multipointm geocoll_textm2", - /* 168 */ "geocoll_textm2 ::= VANUATU_COMMA multilinestringm geocoll_textm2", - /* 169 */ "geocoll_textm2 ::= VANUATU_COMMA multipolygonm geocoll_textm2", - /* 170 */ "geocoll_textm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2", - /* 171 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET pointz geocoll_textz2 VANUATU_CLOSE_BRACKET", - /* 172 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET linestringz geocoll_textz2 VANUATU_CLOSE_BRACKET", - /* 173 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET polygonz geocoll_textz2 VANUATU_CLOSE_BRACKET", - /* 174 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET multipointz geocoll_textz2 VANUATU_CLOSE_BRACKET", - /* 175 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET multilinestringz geocoll_textz2 VANUATU_CLOSE_BRACKET", - /* 176 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET multipolygonz geocoll_textz2 VANUATU_CLOSE_BRACKET", - /* 177 */ "geocoll_textz ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 VANUATU_CLOSE_BRACKET", - /* 178 */ "geocoll_textz2 ::=", - /* 179 */ "geocoll_textz2 ::= VANUATU_COMMA pointz geocoll_textz2", - /* 180 */ "geocoll_textz2 ::= VANUATU_COMMA linestringz geocoll_textz2", - /* 181 */ "geocoll_textz2 ::= VANUATU_COMMA polygonz geocoll_textz2", - /* 182 */ "geocoll_textz2 ::= VANUATU_COMMA multipointz geocoll_textz2", - /* 183 */ "geocoll_textz2 ::= VANUATU_COMMA multilinestringz geocoll_textz2", - /* 184 */ "geocoll_textz2 ::= VANUATU_COMMA multipolygonz geocoll_textz2", - /* 185 */ "geocoll_textz2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2", - /* 186 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET pointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", - /* 187 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET linestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", - /* 188 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET polygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", - /* 189 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET multipointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", - /* 190 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET multilinestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", - /* 191 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET multipolygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", - /* 192 */ "geocoll_textzm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", - /* 193 */ "geocoll_textzm2 ::=", - /* 194 */ "geocoll_textzm2 ::= VANUATU_COMMA pointzm geocoll_textzm2", - /* 195 */ "geocoll_textzm2 ::= VANUATU_COMMA linestringzm geocoll_textzm2", - /* 196 */ "geocoll_textzm2 ::= VANUATU_COMMA polygonzm geocoll_textzm2", - /* 197 */ "geocoll_textzm2 ::= VANUATU_COMMA multipointzm geocoll_textzm2", - /* 198 */ "geocoll_textzm2 ::= VANUATU_COMMA multilinestringzm geocoll_textzm2", - /* 199 */ "geocoll_textzm2 ::= VANUATU_COMMA multipolygonzm geocoll_textzm2", - /* 200 */ "geocoll_textzm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2", -}; -#endif /* NDEBUG */ - - -#if YYSTACKDEPTH<=0 -/* -** Try to increase the size of the parser stack. -*/ -static void yyGrowStack(yyParser *p){ - int newSize; - yyStackEntry *pNew; - - newSize = p->yystksz*2 + 100; - pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); - if( pNew ){ - p->yystack = pNew; - p->yystksz = newSize; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack grows to %d entries!\n", - yyTracePrompt, p->yystksz); - } -#endif - } -} -#endif - -/* -** This function allocates a new parser. -** The only argument is a pointer to a function which works like -** malloc. -** -** Inputs: -** A pointer to the function used to allocate memory. -** -** Outputs: -** A pointer to a parser. This pointer is used in subsequent calls -** to Parse and ParseFree. -*/ -void *ParseAlloc(void *(*mallocProc)(size_t)){ - yyParser *pParser; - pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) ); - if( pParser ){ - pParser->yyidx = -1; -#ifdef YYTRACKMAXSTACKDEPTH - pParser->yyidxMax = 0; -#endif -#if YYSTACKDEPTH<=0 - pParser->yystack = NULL; - pParser->yystksz = 0; - yyGrowStack(pParser); -#endif - } - return pParser; -} - -/* The following function deletes the value associated with a -** symbol. The symbol can be either a terminal or nonterminal. -** "yymajor" is the symbol code, and "yypminor" is a pointer to -** the value. -*/ -static void yy_destructor( - yyParser *yypParser, /* The parser */ - YYCODETYPE yymajor, /* Type code for object to destroy */ - YYMINORTYPE *yypminor /* The object to be destroyed */ -){ - ParseARG_FETCH; - switch( yymajor ){ - /* Here is inserted the actions which take place when a - ** terminal or non-terminal is destroyed. This can happen - ** when the symbol is popped from the stack during a - ** reduce or during error processing or when a parser is - ** being destroyed before it is finished parsing. - ** - ** Note: during a reduce, the only symbols destroyed are those - ** which appear on the RHS of the rule, but which are not used - ** inside the C code. - */ - default: break; /* If no destructor action specified: do nothing */ - } -} - -/* -** Pop the parser's stack once. -** -** If there is a destructor routine associated with the token which -** is popped from the stack, then call it. -** -** Return the major token number for the symbol popped. -*/ -static int yy_pop_parser_stack(yyParser *pParser){ - YYCODETYPE yymajor; - yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; - - if( pParser->yyidx<0 ) return 0; -#ifndef NDEBUG - if( yyTraceFILE && pParser->yyidx>=0 ){ - fprintf(yyTraceFILE,"%sPopping %s\n", - yyTracePrompt, - yyTokenName[yytos->major]); - } -#endif - yymajor = yytos->major; - yy_destructor(pParser, yymajor, &yytos->minor); - pParser->yyidx--; - return yymajor; -} - -/* -** Deallocate and destroy a parser. Destructors are all called for -** all stack elements before shutting the parser down. -** -** Inputs: -**
    -**
  • A pointer to the parser. This should be a pointer -** obtained from ParseAlloc. -**
  • A pointer to a function used to reclaim memory obtained -** from malloc. -**
-*/ -void ParseFree( - void *p, /* The parser to be deleted */ - void (*freeProc)(void*) /* Function used to reclaim memory */ -){ - yyParser *pParser = (yyParser*)p; - if( pParser==0 ) return; - while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser); -#if YYSTACKDEPTH<=0 - free(pParser->yystack); -#endif - (*freeProc)((void*)pParser); -} - -/* -** Return the peak depth of the stack for a parser. -*/ -#ifdef YYTRACKMAXSTACKDEPTH -int ParseStackPeak(void *p){ - yyParser *pParser = (yyParser*)p; - return pParser->yyidxMax; -} -#endif - -/* -** Find the appropriate action for a parser given the terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_shift_action( - yyParser *pParser, /* The parser */ - YYCODETYPE iLookAhead /* The look-ahead token */ -){ - int i; - int stateno = pParser->yystack[pParser->yyidx].stateno; - - if( stateno>YY_SHIFT_MAX || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){ - return yy_default[stateno]; - } - assert( iLookAhead!=YYNOCODE ); - i += iLookAhead; - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ - if( iLookAhead>0 ){ -#ifdef YYFALLBACK - YYCODETYPE iFallback; /* Fallback token */ - if( iLookAhead %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); - } -#endif - return yy_find_shift_action(pParser, iFallback); - } -#endif -#ifdef YYWILDCARD - { - int j = i - iLookAhead + YYWILDCARD; - if( j>=0 && j %s\n", - yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); - } -#endif /* NDEBUG */ - return yy_action[j]; - } - } -#endif /* YYWILDCARD */ - } - return yy_default[stateno]; - }else{ - return yy_action[i]; - } -} - -/* -** Find the appropriate action for a parser given the non-terminal -** look-ahead token iLookAhead. -** -** If the look-ahead token is YYNOCODE, then check to see if the action is -** independent of the look-ahead. If it is, return the action, otherwise -** return YY_NO_ACTION. -*/ -static int yy_find_reduce_action( - int stateno, /* Current state number */ - YYCODETYPE iLookAhead /* The look-ahead token */ -){ - int i; -#ifdef YYERRORSYMBOL - if( stateno>YY_REDUCE_MAX ){ - return yy_default[stateno]; - } -#else - assert( stateno<=YY_REDUCE_MAX ); -#endif - i = yy_reduce_ofst[stateno]; - assert( i!=YY_REDUCE_USE_DFLT ); - assert( iLookAhead!=YYNOCODE ); - i += iLookAhead; -#ifdef YYERRORSYMBOL - if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ - return yy_default[stateno]; - } -#else - assert( i>=0 && iyyidx--; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will execute if the parser - ** stack every overflows */ - - spatialite_e( "Giving up. Parser stack overflow\n"); - ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ -} - -/* -** Perform a shift action. -*/ -static void yy_shift( - yyParser *yypParser, /* The parser to be shifted */ - int yyNewState, /* The new state to shift in */ - int yyMajor, /* The major token to shift in */ - YYMINORTYPE *yypMinor /* Pointer to the minor token to shift in */ -){ - yyStackEntry *yytos; - yypParser->yyidx++; -#ifdef YYTRACKMAXSTACKDEPTH - if( yypParser->yyidx>yypParser->yyidxMax ){ - yypParser->yyidxMax = yypParser->yyidx; - } -#endif -#if YYSTACKDEPTH>0 - if( yypParser->yyidx>=YYSTACKDEPTH ){ - yyStackOverflow(yypParser, yypMinor); - return; - } -#else - if( yypParser->yyidx>=yypParser->yystksz ){ - yyGrowStack(yypParser); - if( yypParser->yyidx>=yypParser->yystksz ){ - yyStackOverflow(yypParser, yypMinor); - return; - } - } -#endif - yytos = &yypParser->yystack[yypParser->yyidx]; - yytos->stateno = (YYACTIONTYPE)yyNewState; - yytos->major = (YYCODETYPE)yyMajor; - yytos->minor = *yypMinor; -#ifndef NDEBUG - if( yyTraceFILE && yypParser->yyidx>0 ){ - int i; - fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState); - fprintf(yyTraceFILE,"%sStack:",yyTracePrompt); - for(i=1; i<=yypParser->yyidx; i++) - fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]); - fprintf(yyTraceFILE,"\n"); - } -#endif -} - -/* The following table contains information about every rule that -** is used during the reduce. -*/ -static const struct { - YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ - unsigned char nrhs; /* Number of right-hand side symbols in the rule */ -} yyRuleInfo[] = { - { 35, 1 }, - { 36, 0 }, - { 36, 3 }, - { 37, 1 }, - { 38, 1 }, - { 38, 1 }, - { 38, 1 }, - { 38, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 39, 1 }, - { 40, 1 }, - { 40, 1 }, - { 40, 1 }, - { 40, 1 }, - { 40, 1 }, - { 40, 1 }, - { 40, 1 }, - { 41, 1 }, - { 41, 1 }, - { 41, 1 }, - { 41, 1 }, - { 41, 1 }, - { 41, 1 }, - { 41, 1 }, - { 42, 1 }, - { 42, 1 }, - { 42, 1 }, - { 42, 1 }, - { 42, 1 }, - { 42, 1 }, - { 42, 1 }, - { 43, 4 }, - { 57, 4 }, - { 50, 4 }, - { 64, 4 }, - { 75, 4 }, - { 77, 5 }, - { 78, 5 }, - { 79, 6 }, - { 71, 2 }, - { 72, 3 }, - { 73, 3 }, - { 74, 4 }, - { 76, 1 }, - { 80, 0 }, - { 80, 3 }, - { 81, 0 }, - { 81, 3 }, - { 82, 0 }, - { 82, 3 }, - { 83, 0 }, - { 83, 3 }, - { 84, 0 }, - { 84, 3 }, - { 85, 0 }, - { 85, 3 }, - { 86, 0 }, - { 86, 3 }, - { 87, 0 }, - { 87, 3 }, - { 44, 2 }, - { 58, 2 }, - { 51, 2 }, - { 65, 2 }, - { 88, 6 }, - { 89, 6 }, - { 90, 6 }, - { 91, 6 }, - { 45, 2 }, - { 59, 2 }, - { 52, 2 }, - { 66, 2 }, - { 92, 4 }, - { 93, 4 }, - { 94, 4 }, - { 95, 4 }, - { 96, 10 }, - { 97, 0 }, - { 97, 3 }, - { 98, 10 }, - { 99, 0 }, - { 99, 3 }, - { 100, 10 }, - { 101, 0 }, - { 101, 3 }, - { 102, 10 }, - { 103, 0 }, - { 103, 3 }, - { 46, 2 }, - { 60, 2 }, - { 53, 2 }, - { 67, 2 }, - { 104, 4 }, - { 105, 4 }, - { 106, 4 }, - { 107, 4 }, - { 104, 4 }, - { 105, 4 }, - { 106, 4 }, - { 107, 4 }, - { 47, 2 }, - { 61, 2 }, - { 54, 2 }, - { 68, 2 }, - { 108, 4 }, - { 112, 0 }, - { 112, 3 }, - { 109, 4 }, - { 113, 0 }, - { 113, 3 }, - { 110, 4 }, - { 114, 0 }, - { 114, 3 }, - { 111, 4 }, - { 115, 0 }, - { 115, 3 }, - { 48, 2 }, - { 62, 2 }, - { 55, 2 }, - { 69, 2 }, - { 116, 4 }, - { 120, 0 }, - { 120, 3 }, - { 117, 4 }, - { 121, 0 }, - { 121, 3 }, - { 118, 4 }, - { 122, 0 }, - { 122, 3 }, - { 119, 4 }, - { 123, 0 }, - { 123, 3 }, - { 49, 2 }, - { 63, 2 }, - { 56, 2 }, - { 70, 2 }, - { 124, 4 }, - { 124, 4 }, - { 124, 4 }, - { 124, 4 }, - { 124, 4 }, - { 124, 4 }, - { 124, 5 }, - { 128, 0 }, - { 128, 3 }, - { 128, 3 }, - { 128, 3 }, - { 128, 3 }, - { 128, 3 }, - { 128, 3 }, - { 128, 4 }, - { 125, 4 }, - { 125, 4 }, - { 125, 4 }, - { 125, 4 }, - { 125, 4 }, - { 125, 4 }, - { 125, 5 }, - { 129, 0 }, - { 129, 3 }, - { 129, 3 }, - { 129, 3 }, - { 129, 3 }, - { 129, 3 }, - { 129, 3 }, - { 129, 4 }, - { 126, 4 }, - { 126, 4 }, - { 126, 4 }, - { 126, 4 }, - { 126, 4 }, - { 126, 4 }, - { 126, 5 }, - { 130, 0 }, - { 130, 3 }, - { 130, 3 }, - { 130, 3 }, - { 130, 3 }, - { 130, 3 }, - { 130, 3 }, - { 130, 4 }, - { 127, 4 }, - { 127, 4 }, - { 127, 4 }, - { 127, 4 }, - { 127, 4 }, - { 127, 4 }, - { 127, 5 }, - { 131, 0 }, - { 131, 3 }, - { 131, 3 }, - { 131, 3 }, - { 131, 3 }, - { 131, 3 }, - { 131, 3 }, - { 131, 4 }, -}; - -static void yy_accept(yyParser*); /* Forward Declaration */ - -/* -** Perform a reduce action and the shift that must immediately -** follow the reduce. -*/ -static void yy_reduce( - yyParser *yypParser, /* The parser */ - int yyruleno /* Number of the rule by which to reduce */ -){ - int yygoto; /* The next state */ - int yyact; /* The next action */ - YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ - yyStackEntry *yymsp; /* The top of the parser's stack */ - int yysize; /* Amount to pop the stack */ - ParseARG_FETCH; - yymsp = &yypParser->yystack[yypParser->yyidx]; -#ifndef NDEBUG - if( yyTraceFILE && yyruleno>=0 - && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ - fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt, - yyRuleName[yyruleno]); - } -#endif /* NDEBUG */ - - /* Silence complaints from purify about yygotominor being uninitialized - ** in some cases when it is copied into the stack after the following - ** switch. yygotominor is uninitialized when a rule reduces that does - ** not set the value of its left-hand side nonterminal. Leaving the - ** value of the nonterminal uninitialized is utterly harmless as long - ** as the value is never used. So really the only thing this code - ** accomplishes is to quieten purify. - ** - ** 2007-01-16: The wireshark project (www.wireshark.org) reports that - ** without this code, their parser segfaults. I'm not sure what there - ** parser is doing to make this happen. This is the second bug report - ** from wireshark this week. Clearly they are stressing Lemon in ways - ** that it has not been previously stressed... (SQLite ticket #2172) - */ - /*memset(&yygotominor, 0, sizeof(yygotominor));*/ - yygotominor = yyzerominor; - - - switch( yyruleno ){ - /* Beginning here are the reduction cases. A typical example - ** follows: - ** case 0: - ** #line - ** { ... } // User supplied code - ** #line - ** break; - */ - case 8: /* geo_text ::= point */ - case 9: /* geo_text ::= linestring */ yytestcase(yyruleno==9); - case 10: /* geo_text ::= polygon */ yytestcase(yyruleno==10); - case 11: /* geo_text ::= multipoint */ yytestcase(yyruleno==11); - case 12: /* geo_text ::= multilinestring */ yytestcase(yyruleno==12); - case 13: /* geo_text ::= multipolygon */ yytestcase(yyruleno==13); - case 14: /* geo_text ::= geocoll */ yytestcase(yyruleno==14); - case 15: /* geo_textz ::= pointz */ yytestcase(yyruleno==15); - case 16: /* geo_textz ::= linestringz */ yytestcase(yyruleno==16); - case 17: /* geo_textz ::= polygonz */ yytestcase(yyruleno==17); - case 18: /* geo_textz ::= multipointz */ yytestcase(yyruleno==18); - case 19: /* geo_textz ::= multilinestringz */ yytestcase(yyruleno==19); - case 20: /* geo_textz ::= multipolygonz */ yytestcase(yyruleno==20); - case 21: /* geo_textz ::= geocollz */ yytestcase(yyruleno==21); - case 22: /* geo_textm ::= pointm */ yytestcase(yyruleno==22); - case 23: /* geo_textm ::= linestringm */ yytestcase(yyruleno==23); - case 24: /* geo_textm ::= polygonm */ yytestcase(yyruleno==24); - case 25: /* geo_textm ::= multipointm */ yytestcase(yyruleno==25); - case 26: /* geo_textm ::= multilinestringm */ yytestcase(yyruleno==26); - case 27: /* geo_textm ::= multipolygonm */ yytestcase(yyruleno==27); - case 28: /* geo_textm ::= geocollm */ yytestcase(yyruleno==28); - case 29: /* geo_textzm ::= pointzm */ yytestcase(yyruleno==29); - case 30: /* geo_textzm ::= linestringzm */ yytestcase(yyruleno==30); - case 31: /* geo_textzm ::= polygonzm */ yytestcase(yyruleno==31); - case 32: /* geo_textzm ::= multipointzm */ yytestcase(yyruleno==32); - case 33: /* geo_textzm ::= multilinestringzm */ yytestcase(yyruleno==33); - case 34: /* geo_textzm ::= multipolygonzm */ yytestcase(yyruleno==34); - case 35: /* geo_textzm ::= geocollzm */ yytestcase(yyruleno==35); -{ p_data->result = yymsp[0].minor.yy0; } - break; - case 36: /* point ::= VANUATU_POINT VANUATU_OPEN_BRACKET point_coordxy VANUATU_CLOSE_BRACKET */ -{ yygotominor.yy0 = vanuatu_buildGeomFromPoint( p_data, (gaiaPointPtr)yymsp[-1].minor.yy0); } - break; - case 37: /* pointm ::= VANUATU_POINT_M VANUATU_OPEN_BRACKET point_coordxym VANUATU_CLOSE_BRACKET */ - case 38: /* pointz ::= VANUATU_POINT_Z VANUATU_OPEN_BRACKET point_coordxyz VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==38); - case 39: /* pointzm ::= VANUATU_POINT_ZM VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==39); -{ yygotominor.yy0 = vanuatu_buildGeomFromPoint( p_data, (gaiaPointPtr)yymsp[-1].minor.yy0); } - break; - case 40: /* point_brkt_coordxy ::= VANUATU_OPEN_BRACKET coord coord VANUATU_CLOSE_BRACKET */ -{ yygotominor.yy0 = (void *) vanuatu_point_xy( p_data, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } - break; - case 41: /* point_brkt_coordxym ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET */ -{ yygotominor.yy0 = (void *) vanuatu_point_xym( p_data, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } - break; - case 42: /* point_brkt_coordxyz ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET */ -{ yygotominor.yy0 = (void *) vanuatu_point_xyz( p_data, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } - break; - case 43: /* point_brkt_coordxyzm ::= VANUATU_OPEN_BRACKET coord coord coord coord VANUATU_CLOSE_BRACKET */ -{ yygotominor.yy0 = (void *) vanuatu_point_xyzm( p_data, (double *)yymsp[-4].minor.yy0, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0); } - break; - case 44: /* point_coordxy ::= coord coord */ -{ yygotominor.yy0 = (void *) vanuatu_point_xy( p_data, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } - break; - case 45: /* point_coordxym ::= coord coord coord */ -{ yygotominor.yy0 = (void *) vanuatu_point_xym( p_data, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } - break; - case 46: /* point_coordxyz ::= coord coord coord */ -{ yygotominor.yy0 = (void *) vanuatu_point_xyz( p_data, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } - break; - case 47: /* point_coordxyzm ::= coord coord coord coord */ -{ yygotominor.yy0 = (void *) vanuatu_point_xyzm( p_data, (double *)yymsp[-3].minor.yy0, (double *)yymsp[-2].minor.yy0, (double *)yymsp[-1].minor.yy0, (double *)yymsp[0].minor.yy0); } - break; - case 48: /* coord ::= VANUATU_NUM */ - case 93: /* multipoint ::= VANUATU_MULTIPOINT multipoint_text */ yytestcase(yyruleno==93); - case 94: /* multipointm ::= VANUATU_MULTIPOINT_M multipoint_textm */ yytestcase(yyruleno==94); - case 95: /* multipointz ::= VANUATU_MULTIPOINT_Z multipoint_textz */ yytestcase(yyruleno==95); - case 96: /* multipointzm ::= VANUATU_MULTIPOINT_ZM multipoint_textzm */ yytestcase(yyruleno==96); - case 105: /* multilinestring ::= VANUATU_MULTILINESTRING multilinestring_text */ yytestcase(yyruleno==105); - case 106: /* multilinestringm ::= VANUATU_MULTILINESTRING_M multilinestring_textm */ yytestcase(yyruleno==106); - case 107: /* multilinestringz ::= VANUATU_MULTILINESTRING_Z multilinestring_textz */ yytestcase(yyruleno==107); - case 108: /* multilinestringzm ::= VANUATU_MULTILINESTRING_ZM multilinestring_textzm */ yytestcase(yyruleno==108); - case 121: /* multipolygon ::= VANUATU_MULTIPOLYGON multipolygon_text */ yytestcase(yyruleno==121); - case 122: /* multipolygonm ::= VANUATU_MULTIPOLYGON_M multipolygon_textm */ yytestcase(yyruleno==122); - case 123: /* multipolygonz ::= VANUATU_MULTIPOLYGON_Z multipolygon_textz */ yytestcase(yyruleno==123); - case 124: /* multipolygonzm ::= VANUATU_MULTIPOLYGON_ZM multipolygon_textzm */ yytestcase(yyruleno==124); - case 137: /* geocoll ::= VANUATU_GEOMETRYCOLLECTION geocoll_text */ yytestcase(yyruleno==137); - case 138: /* geocollm ::= VANUATU_GEOMETRYCOLLECTION_M geocoll_textm */ yytestcase(yyruleno==138); - case 139: /* geocollz ::= VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz */ yytestcase(yyruleno==139); - case 140: /* geocollzm ::= VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm */ yytestcase(yyruleno==140); -{ yygotominor.yy0 = yymsp[0].minor.yy0; } - break; - case 49: /* extra_brkt_pointsxy ::= */ - case 51: /* extra_brkt_pointsxym ::= */ yytestcase(yyruleno==51); - case 53: /* extra_brkt_pointsxyz ::= */ yytestcase(yyruleno==53); - case 55: /* extra_brkt_pointsxyzm ::= */ yytestcase(yyruleno==55); - case 57: /* extra_pointsxy ::= */ yytestcase(yyruleno==57); - case 59: /* extra_pointsxym ::= */ yytestcase(yyruleno==59); - case 61: /* extra_pointsxyz ::= */ yytestcase(yyruleno==61); - case 63: /* extra_pointsxyzm ::= */ yytestcase(yyruleno==63); - case 82: /* extra_rings ::= */ yytestcase(yyruleno==82); - case 85: /* extra_ringsm ::= */ yytestcase(yyruleno==85); - case 88: /* extra_ringsz ::= */ yytestcase(yyruleno==88); - case 91: /* extra_ringszm ::= */ yytestcase(yyruleno==91); - case 110: /* multilinestring_text2 ::= */ yytestcase(yyruleno==110); - case 113: /* multilinestring_textm2 ::= */ yytestcase(yyruleno==113); - case 116: /* multilinestring_textz2 ::= */ yytestcase(yyruleno==116); - case 119: /* multilinestring_textzm2 ::= */ yytestcase(yyruleno==119); - case 126: /* multipolygon_text2 ::= */ yytestcase(yyruleno==126); - case 129: /* multipolygon_textm2 ::= */ yytestcase(yyruleno==129); - case 132: /* multipolygon_textz2 ::= */ yytestcase(yyruleno==132); - case 135: /* multipolygon_textzm2 ::= */ yytestcase(yyruleno==135); - case 148: /* geocoll_text2 ::= */ yytestcase(yyruleno==148); - case 163: /* geocoll_textm2 ::= */ yytestcase(yyruleno==163); - case 178: /* geocoll_textz2 ::= */ yytestcase(yyruleno==178); - case 193: /* geocoll_textzm2 ::= */ yytestcase(yyruleno==193); -{ yygotominor.yy0 = NULL; } - break; - case 50: /* extra_brkt_pointsxy ::= VANUATU_COMMA point_brkt_coordxy extra_brkt_pointsxy */ - case 52: /* extra_brkt_pointsxym ::= VANUATU_COMMA point_brkt_coordxym extra_brkt_pointsxym */ yytestcase(yyruleno==52); - case 54: /* extra_brkt_pointsxyz ::= VANUATU_COMMA point_brkt_coordxyz extra_brkt_pointsxyz */ yytestcase(yyruleno==54); - case 56: /* extra_brkt_pointsxyzm ::= VANUATU_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm */ yytestcase(yyruleno==56); - case 58: /* extra_pointsxy ::= VANUATU_COMMA point_coordxy extra_pointsxy */ yytestcase(yyruleno==58); - case 60: /* extra_pointsxym ::= VANUATU_COMMA point_coordxym extra_pointsxym */ yytestcase(yyruleno==60); - case 62: /* extra_pointsxyz ::= VANUATU_COMMA point_coordxyz extra_pointsxyz */ yytestcase(yyruleno==62); - case 64: /* extra_pointsxyzm ::= VANUATU_COMMA point_coordxyzm extra_pointsxyzm */ yytestcase(yyruleno==64); -{ ((gaiaPointPtr)yymsp[-1].minor.yy0)->Next = (gaiaPointPtr)yymsp[0].minor.yy0; yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 65: /* linestring ::= VANUATU_LINESTRING linestring_text */ - case 66: /* linestringm ::= VANUATU_LINESTRING_M linestring_textm */ yytestcase(yyruleno==66); - case 67: /* linestringz ::= VANUATU_LINESTRING_Z linestring_textz */ yytestcase(yyruleno==67); - case 68: /* linestringzm ::= VANUATU_LINESTRING_ZM linestring_textzm */ yytestcase(yyruleno==68); -{ yygotominor.yy0 = vanuatu_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)yymsp[0].minor.yy0); } - break; - case 69: /* linestring_text ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_linestring_xy( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); - } - break; - case 70: /* linestring_textm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_linestring_xym( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); - } - break; - case 71: /* linestring_textz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_linestring_xyz( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); - } - break; - case 72: /* linestring_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_linestring_xyzm( p_data, (gaiaPointPtr)yymsp[-4].minor.yy0); - } - break; - case 73: /* polygon ::= VANUATU_POLYGON polygon_text */ - case 74: /* polygonm ::= VANUATU_POLYGON_M polygon_textm */ yytestcase(yyruleno==74); - case 75: /* polygonz ::= VANUATU_POLYGON_Z polygon_textz */ yytestcase(yyruleno==75); - case 76: /* polygonzm ::= VANUATU_POLYGON_ZM polygon_textzm */ yytestcase(yyruleno==76); -{ yygotominor.yy0 = vanuatu_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)yymsp[0].minor.yy0); } - break; - case 77: /* polygon_text ::= VANUATU_OPEN_BRACKET ring extra_rings VANUATU_CLOSE_BRACKET */ -{ - ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_polygon_xy( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); - } - break; - case 78: /* polygon_textm ::= VANUATU_OPEN_BRACKET ringm extra_ringsm VANUATU_CLOSE_BRACKET */ -{ - ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_polygon_xym( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); - } - break; - case 79: /* polygon_textz ::= VANUATU_OPEN_BRACKET ringz extra_ringsz VANUATU_CLOSE_BRACKET */ -{ - ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_polygon_xyz( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); - } - break; - case 80: /* polygon_textzm ::= VANUATU_OPEN_BRACKET ringzm extra_ringszm VANUATU_CLOSE_BRACKET */ -{ - ((gaiaRingPtr)yymsp[-2].minor.yy0)->Next = (gaiaRingPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_polygon_xyzm( p_data, (gaiaRingPtr)yymsp[-2].minor.yy0); - } - break; - case 81: /* ring ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; - ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_ring_xy( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); - } - break; - case 83: /* extra_rings ::= VANUATU_COMMA ring extra_rings */ - case 86: /* extra_ringsm ::= VANUATU_COMMA ringm extra_ringsm */ yytestcase(yyruleno==86); - case 89: /* extra_ringsz ::= VANUATU_COMMA ringz extra_ringsz */ yytestcase(yyruleno==89); - case 92: /* extra_ringszm ::= VANUATU_COMMA ringzm extra_ringszm */ yytestcase(yyruleno==92); -{ - ((gaiaRingPtr)yymsp[-1].minor.yy0)->Next = (gaiaRingPtr)yymsp[0].minor.yy0; - yygotominor.yy0 = yymsp[-1].minor.yy0; - } - break; - case 84: /* ringm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; - ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_ring_xym( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); - } - break; - case 87: /* ringz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; - ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_ring_xyz( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); - } - break; - case 90: /* ringzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ -{ - ((gaiaPointPtr)yymsp[-8].minor.yy0)->Next = (gaiaPointPtr)yymsp[-6].minor.yy0; - ((gaiaPointPtr)yymsp[-6].minor.yy0)->Next = (gaiaPointPtr)yymsp[-4].minor.yy0; - ((gaiaPointPtr)yymsp[-4].minor.yy0)->Next = (gaiaPointPtr)yymsp[-2].minor.yy0; - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_ring_xyzm( p_data, (gaiaPointPtr)yymsp[-8].minor.yy0); - } - break; - case 97: /* multipoint_text ::= VANUATU_OPEN_BRACKET point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ - case 101: /* multipoint_text ::= VANUATU_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==101); -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_multipoint_xy( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); - } - break; - case 98: /* multipoint_textm ::= VANUATU_OPEN_BRACKET point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ - case 102: /* multipoint_textm ::= VANUATU_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==102); -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_multipoint_xym( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); - } - break; - case 99: /* multipoint_textz ::= VANUATU_OPEN_BRACKET point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ - case 103: /* multipoint_textz ::= VANUATU_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==103); -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_multipoint_xyz( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); - } - break; - case 100: /* multipoint_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ - case 104: /* multipoint_textzm ::= VANUATU_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==104); -{ - ((gaiaPointPtr)yymsp[-2].minor.yy0)->Next = (gaiaPointPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_multipoint_xyzm( p_data, (gaiaPointPtr)yymsp[-2].minor.yy0); - } - break; - case 109: /* multilinestring_text ::= VANUATU_OPEN_BRACKET linestring_text multilinestring_text2 VANUATU_CLOSE_BRACKET */ -{ - ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_multilinestring_xy( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); - } - break; - case 111: /* multilinestring_text2 ::= VANUATU_COMMA linestring_text multilinestring_text2 */ - case 114: /* multilinestring_textm2 ::= VANUATU_COMMA linestring_textm multilinestring_textm2 */ yytestcase(yyruleno==114); - case 117: /* multilinestring_textz2 ::= VANUATU_COMMA linestring_textz multilinestring_textz2 */ yytestcase(yyruleno==117); - case 120: /* multilinestring_textzm2 ::= VANUATU_COMMA linestring_textzm multilinestring_textzm2 */ yytestcase(yyruleno==120); -{ ((gaiaLinestringPtr)yymsp[-1].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[0].minor.yy0; yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 112: /* multilinestring_textm ::= VANUATU_OPEN_BRACKET linestring_textm multilinestring_textm2 VANUATU_CLOSE_BRACKET */ -{ - ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_multilinestring_xym( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); - } - break; - case 115: /* multilinestring_textz ::= VANUATU_OPEN_BRACKET linestring_textz multilinestring_textz2 VANUATU_CLOSE_BRACKET */ -{ - ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_multilinestring_xyz( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); - } - break; - case 118: /* multilinestring_textzm ::= VANUATU_OPEN_BRACKET linestring_textzm multilinestring_textzm2 VANUATU_CLOSE_BRACKET */ -{ - ((gaiaLinestringPtr)yymsp[-2].minor.yy0)->Next = (gaiaLinestringPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_multilinestring_xyzm( p_data, (gaiaLinestringPtr)yymsp[-2].minor.yy0); - } - break; - case 125: /* multipolygon_text ::= VANUATU_OPEN_BRACKET polygon_text multipolygon_text2 VANUATU_CLOSE_BRACKET */ -{ - ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_multipolygon_xy( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); - } - break; - case 127: /* multipolygon_text2 ::= VANUATU_COMMA polygon_text multipolygon_text2 */ - case 130: /* multipolygon_textm2 ::= VANUATU_COMMA polygon_textm multipolygon_textm2 */ yytestcase(yyruleno==130); - case 133: /* multipolygon_textz2 ::= VANUATU_COMMA polygon_textz multipolygon_textz2 */ yytestcase(yyruleno==133); - case 136: /* multipolygon_textzm2 ::= VANUATU_COMMA polygon_textzm multipolygon_textzm2 */ yytestcase(yyruleno==136); -{ ((gaiaPolygonPtr)yymsp[-1].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[0].minor.yy0; yygotominor.yy0 = yymsp[-1].minor.yy0; } - break; - case 128: /* multipolygon_textm ::= VANUATU_OPEN_BRACKET polygon_textm multipolygon_textm2 VANUATU_CLOSE_BRACKET */ -{ - ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_multipolygon_xym( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); - } - break; - case 131: /* multipolygon_textz ::= VANUATU_OPEN_BRACKET polygon_textz multipolygon_textz2 VANUATU_CLOSE_BRACKET */ -{ - ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_multipolygon_xyz( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); - } - break; - case 134: /* multipolygon_textzm ::= VANUATU_OPEN_BRACKET polygon_textzm multipolygon_textzm2 VANUATU_CLOSE_BRACKET */ -{ - ((gaiaPolygonPtr)yymsp[-2].minor.yy0)->Next = (gaiaPolygonPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_multipolygon_xyzm( p_data, (gaiaPolygonPtr)yymsp[-2].minor.yy0); - } - break; - case 141: /* geocoll_text ::= VANUATU_OPEN_BRACKET point geocoll_text2 VANUATU_CLOSE_BRACKET */ - case 142: /* geocoll_text ::= VANUATU_OPEN_BRACKET linestring geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==142); - case 143: /* geocoll_text ::= VANUATU_OPEN_BRACKET polygon geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==143); - case 144: /* geocoll_text ::= VANUATU_OPEN_BRACKET multipoint geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==144); - case 145: /* geocoll_text ::= VANUATU_OPEN_BRACKET multilinestring geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==145); - case 146: /* geocoll_text ::= VANUATU_OPEN_BRACKET multipolygon geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==146); - case 147: /* geocoll_text ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==147); -{ - ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); - } - break; - case 149: /* geocoll_text2 ::= VANUATU_COMMA point geocoll_text2 */ - case 150: /* geocoll_text2 ::= VANUATU_COMMA linestring geocoll_text2 */ yytestcase(yyruleno==150); - case 151: /* geocoll_text2 ::= VANUATU_COMMA polygon geocoll_text2 */ yytestcase(yyruleno==151); - case 152: /* geocoll_text2 ::= VANUATU_COMMA multipoint geocoll_text2 */ yytestcase(yyruleno==152); - case 153: /* geocoll_text2 ::= VANUATU_COMMA multilinestring geocoll_text2 */ yytestcase(yyruleno==153); - case 154: /* geocoll_text2 ::= VANUATU_COMMA multipolygon geocoll_text2 */ yytestcase(yyruleno==154); - case 155: /* geocoll_text2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 */ yytestcase(yyruleno==155); - case 164: /* geocoll_textm2 ::= VANUATU_COMMA pointm geocoll_textm2 */ yytestcase(yyruleno==164); - case 165: /* geocoll_textm2 ::= VANUATU_COMMA linestringm geocoll_textm2 */ yytestcase(yyruleno==165); - case 166: /* geocoll_textm2 ::= VANUATU_COMMA polygonm geocoll_textm2 */ yytestcase(yyruleno==166); - case 167: /* geocoll_textm2 ::= VANUATU_COMMA multipointm geocoll_textm2 */ yytestcase(yyruleno==167); - case 168: /* geocoll_textm2 ::= VANUATU_COMMA multilinestringm geocoll_textm2 */ yytestcase(yyruleno==168); - case 169: /* geocoll_textm2 ::= VANUATU_COMMA multipolygonm geocoll_textm2 */ yytestcase(yyruleno==169); - case 170: /* geocoll_textm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 */ yytestcase(yyruleno==170); - case 179: /* geocoll_textz2 ::= VANUATU_COMMA pointz geocoll_textz2 */ yytestcase(yyruleno==179); - case 180: /* geocoll_textz2 ::= VANUATU_COMMA linestringz geocoll_textz2 */ yytestcase(yyruleno==180); - case 181: /* geocoll_textz2 ::= VANUATU_COMMA polygonz geocoll_textz2 */ yytestcase(yyruleno==181); - case 182: /* geocoll_textz2 ::= VANUATU_COMMA multipointz geocoll_textz2 */ yytestcase(yyruleno==182); - case 183: /* geocoll_textz2 ::= VANUATU_COMMA multilinestringz geocoll_textz2 */ yytestcase(yyruleno==183); - case 184: /* geocoll_textz2 ::= VANUATU_COMMA multipolygonz geocoll_textz2 */ yytestcase(yyruleno==184); - case 185: /* geocoll_textz2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 */ yytestcase(yyruleno==185); - case 194: /* geocoll_textzm2 ::= VANUATU_COMMA pointzm geocoll_textzm2 */ yytestcase(yyruleno==194); - case 195: /* geocoll_textzm2 ::= VANUATU_COMMA linestringzm geocoll_textzm2 */ yytestcase(yyruleno==195); - case 196: /* geocoll_textzm2 ::= VANUATU_COMMA polygonzm geocoll_textzm2 */ yytestcase(yyruleno==196); - case 197: /* geocoll_textzm2 ::= VANUATU_COMMA multipointzm geocoll_textzm2 */ yytestcase(yyruleno==197); - case 198: /* geocoll_textzm2 ::= VANUATU_COMMA multilinestringzm geocoll_textzm2 */ yytestcase(yyruleno==198); - case 199: /* geocoll_textzm2 ::= VANUATU_COMMA multipolygonzm geocoll_textzm2 */ yytestcase(yyruleno==199); - case 200: /* geocoll_textzm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 */ yytestcase(yyruleno==200); -{ - ((gaiaGeomCollPtr)yymsp[-1].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[0].minor.yy0; - yygotominor.yy0 = yymsp[-1].minor.yy0; - } - break; - case 156: /* geocoll_textm ::= VANUATU_OPEN_BRACKET pointm geocoll_textm2 VANUATU_CLOSE_BRACKET */ - case 157: /* geocoll_textm ::= VANUATU_OPEN_BRACKET linestringm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==157); - case 158: /* geocoll_textm ::= VANUATU_OPEN_BRACKET polygonm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==158); - case 159: /* geocoll_textm ::= VANUATU_OPEN_BRACKET multipointm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==159); - case 160: /* geocoll_textm ::= VANUATU_OPEN_BRACKET multilinestringm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==160); - case 161: /* geocoll_textm ::= VANUATU_OPEN_BRACKET multipolygonm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==161); - case 162: /* geocoll_textm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==162); -{ - ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); - } - break; - case 171: /* geocoll_textz ::= VANUATU_OPEN_BRACKET pointz geocoll_textz2 VANUATU_CLOSE_BRACKET */ - case 172: /* geocoll_textz ::= VANUATU_OPEN_BRACKET linestringz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==172); - case 173: /* geocoll_textz ::= VANUATU_OPEN_BRACKET polygonz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==173); - case 174: /* geocoll_textz ::= VANUATU_OPEN_BRACKET multipointz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==174); - case 175: /* geocoll_textz ::= VANUATU_OPEN_BRACKET multilinestringz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==175); - case 176: /* geocoll_textz ::= VANUATU_OPEN_BRACKET multipolygonz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==176); - case 177: /* geocoll_textz ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==177); -{ - ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); - } - break; - case 186: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET pointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ - case 187: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET linestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==187); - case 188: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET polygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==188); - case 189: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET multipointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==189); - case 190: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET multilinestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==190); - case 191: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET multipolygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==191); - case 192: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ yytestcase(yyruleno==192); -{ - ((gaiaGeomCollPtr)yymsp[-2].minor.yy0)->Next = (gaiaGeomCollPtr)yymsp[-1].minor.yy0; - yygotominor.yy0 = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)yymsp[-2].minor.yy0); - } - break; - default: - /* (0) main ::= in */ yytestcase(yyruleno==0); - /* (1) in ::= */ yytestcase(yyruleno==1); - /* (2) in ::= in state VANUATU_NEWLINE */ yytestcase(yyruleno==2); - /* (3) state ::= program */ yytestcase(yyruleno==3); - /* (4) program ::= geo_text */ yytestcase(yyruleno==4); - /* (5) program ::= geo_textz */ yytestcase(yyruleno==5); - /* (6) program ::= geo_textm */ yytestcase(yyruleno==6); - /* (7) program ::= geo_textzm */ yytestcase(yyruleno==7); - break; - }; - yygoto = yyRuleInfo[yyruleno].lhs; - yysize = yyRuleInfo[yyruleno].nrhs; - yypParser->yyidx -= yysize; - yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto); - if( yyact < YYNSTATE ){ -#ifdef NDEBUG - /* If we are not debugging and the reduce action popped at least - ** one element off the stack, then we can push the new element back - ** onto the stack here, and skip the stack overflow test in yy_shift(). - ** That gives a significant speed improvement. */ - if( yysize ){ - yypParser->yyidx++; - yymsp -= yysize-1; - yymsp->stateno = (YYACTIONTYPE)yyact; - yymsp->major = (YYCODETYPE)yygoto; - yymsp->minor = yygotominor; - }else -#endif - { - yy_shift(yypParser,yyact,yygoto,&yygotominor); - } - }else{ - assert( yyact == YYNSTATE + YYNRULE + 1 ); - yy_accept(yypParser); - } -} - -/* -** The following code executes when the parse fails -*/ -#ifndef YYNOERRORRECOVERY -static void yy_parse_failed( - yyParser *yypParser /* The parser */ -){ - ParseARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser fails */ - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} -#endif /* YYNOERRORRECOVERY */ - -/* -** The following code executes when a syntax error first occurs. -*/ -static void yy_syntax_error( - yyParser *yypParser, /* The parser */ - int yymajor, /* The major type of the error token */ - YYMINORTYPE yyminor /* The minor type of the error token */ -){ - ParseARG_FETCH; -#define TOKEN (yyminor.yy0) - -/* -** Sandro Furieri 2010 Apr 4 -** when the LEMON parser encounters an error -** then this global variable is set -*/ - p_data->vanuatu_parse_error = 1; - p_data->result = NULL; - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* -** The following is executed when the parser accepts -*/ -static void yy_accept( - yyParser *yypParser /* The parser */ -){ - ParseARG_FETCH; -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); - } -#endif - while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); - /* Here code is inserted which will be executed whenever the - ** parser accepts */ - ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ -} - -/* The main parser program. -** The first argument is a pointer to a structure obtained from -** "ParseAlloc" which describes the current state of the parser. -** The second argument is the major token number. The third is -** the minor token. The fourth optional argument is whatever the -** user wants (and specified in the grammar) and is available for -** use by the action routines. -** -** Inputs: -**
    -**
  • A pointer to the parser (an opaque structure.) -**
  • The major token number. -**
  • The minor token number. -**
  • An option argument of a grammar-specified type. -**
-** -** Outputs: -** None. -*/ -void Parse( - void *yyp, /* The parser */ - int yymajor, /* The major token code number */ - ParseTOKENTYPE yyminor /* The value for the token */ - ParseARG_PDECL /* Optional %extra_argument parameter */ -){ - YYMINORTYPE yyminorunion; - int yyact; /* The parser action. */ - int yyendofinput; /* True if we are at the end of input */ -#ifdef YYERRORSYMBOL - int yyerrorhit = 0; /* True if yymajor has invoked an error */ -#endif - yyParser *yypParser; /* The parser */ - - /* (re)initialize the parser, if necessary */ - yypParser = (yyParser*)yyp; - if( yypParser->yyidx<0 ){ -#if YYSTACKDEPTH<=0 - if( yypParser->yystksz <=0 ){ - /*memset(&yyminorunion, 0, sizeof(yyminorunion));*/ - yyminorunion = yyzerominor; - yyStackOverflow(yypParser, &yyminorunion); - return; - } -#endif - yypParser->yyidx = 0; - yypParser->yyerrcnt = -1; - yypParser->yystack[0].stateno = 0; - yypParser->yystack[0].major = 0; - } - yyminorunion.yy0 = yyminor; - yyendofinput = (yymajor==0); - ParseARG_STORE; - -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]); - } -#endif - - do{ - yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor); - if( yyactyyerrcnt--; - yymajor = YYNOCODE; - }else if( yyact < YYNSTATE + YYNRULE ){ - yy_reduce(yypParser,yyact-YYNSTATE); - }else{ - assert( yyact == YY_ERROR_ACTION ); -#ifdef YYERRORSYMBOL - int yymx; -#endif -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt); - } -#endif -#ifdef YYERRORSYMBOL - /* A syntax error has occurred. - ** The response to an error depends upon whether or not the - ** grammar defines an error token "ERROR". - ** - ** This is what we do if the grammar does define ERROR: - ** - ** * Call the %syntax_error function. - ** - ** * Begin popping the stack until we enter a state where - ** it is legal to shift the error symbol, then shift - ** the error symbol. - ** - ** * Set the error count to three. - ** - ** * Begin accepting and shifting new tokens. No new error - ** processing will occur until three tokens have been - ** shifted successfully. - ** - */ - if( yypParser->yyerrcnt<0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yymx = yypParser->yystack[yypParser->yyidx].major; - if( yymx==YYERRORSYMBOL || yyerrorhit ){ -#ifndef NDEBUG - if( yyTraceFILE ){ - fprintf(yyTraceFILE,"%sDiscard input token %s\n", - yyTracePrompt,yyTokenName[yymajor]); - } -#endif - yy_destructor(yypParser, (YYCODETYPE)yymajor,&yyminorunion); - yymajor = YYNOCODE; - }else{ - while( - yypParser->yyidx >= 0 && - yymx != YYERRORSYMBOL && - (yyact = yy_find_reduce_action( - yypParser->yystack[yypParser->yyidx].stateno, - YYERRORSYMBOL)) >= YYNSTATE - ){ - yy_pop_parser_stack(yypParser); - } - if( yypParser->yyidx < 0 || yymajor==0 ){ - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - yy_parse_failed(yypParser); - yymajor = YYNOCODE; - }else if( yymx!=YYERRORSYMBOL ){ - YYMINORTYPE u2; - u2.YYERRSYMDT = 0; - yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2); - } - } - yypParser->yyerrcnt = 3; - yyerrorhit = 1; -#elif defined(YYNOERRORRECOVERY) - /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to - ** do any kind of error recovery. Instead, simply invoke the syntax - ** error routine and continue going as if nothing had happened. - ** - ** Applications can set this macro (for example inside %include) if - ** they intend to abandon the parse upon the first syntax error seen. - */ - yy_syntax_error(yypParser,yymajor,yyminorunion); - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - yymajor = YYNOCODE; - -#else /* YYERRORSYMBOL is not defined */ - /* This is what we do if the grammar does not define ERROR: - ** - ** * Report an error message, and throw away the input token. - ** - ** * If the input token is $, then fail the parse. - ** - ** As before, subsequent error messages are suppressed until - ** three input tokens have been successfully shifted. - */ - if( yypParser->yyerrcnt<=0 ){ - yy_syntax_error(yypParser,yymajor,yyminorunion); - } - yypParser->yyerrcnt = 3; - yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); - if( yyendofinput ){ - yy_parse_failed(yypParser); - } - yymajor = YYNOCODE; -#endif - } - }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 ); - return; -} diff --git a/src/spatialite/src/gaiageo/vanuatuWkt.h b/src/spatialite/src/gaiageo/vanuatuWkt.h deleted file mode 100644 index f723c93..0000000 --- a/src/spatialite/src/gaiageo/vanuatuWkt.h +++ /dev/null @@ -1,33 +0,0 @@ -#define VANUATU_NEWLINE 1 -#define VANUATU_POINT 2 -#define VANUATU_OPEN_BRACKET 3 -#define VANUATU_CLOSE_BRACKET 4 -#define VANUATU_POINT_M 5 -#define VANUATU_POINT_Z 6 -#define VANUATU_POINT_ZM 7 -#define VANUATU_NUM 8 -#define VANUATU_COMMA 9 -#define VANUATU_LINESTRING 10 -#define VANUATU_LINESTRING_M 11 -#define VANUATU_LINESTRING_Z 12 -#define VANUATU_LINESTRING_ZM 13 -#define VANUATU_POLYGON 14 -#define VANUATU_POLYGON_M 15 -#define VANUATU_POLYGON_Z 16 -#define VANUATU_POLYGON_ZM 17 -#define VANUATU_MULTIPOINT 18 -#define VANUATU_MULTIPOINT_M 19 -#define VANUATU_MULTIPOINT_Z 20 -#define VANUATU_MULTIPOINT_ZM 21 -#define VANUATU_MULTILINESTRING 22 -#define VANUATU_MULTILINESTRING_M 23 -#define VANUATU_MULTILINESTRING_Z 24 -#define VANUATU_MULTILINESTRING_ZM 25 -#define VANUATU_MULTIPOLYGON 26 -#define VANUATU_MULTIPOLYGON_M 27 -#define VANUATU_MULTIPOLYGON_Z 28 -#define VANUATU_MULTIPOLYGON_ZM 29 -#define VANUATU_GEOMETRYCOLLECTION 30 -#define VANUATU_GEOMETRYCOLLECTION_M 31 -#define VANUATU_GEOMETRYCOLLECTION_Z 32 -#define VANUATU_GEOMETRYCOLLECTION_ZM 33 diff --git a/src/spatialite/src/headers/Makefile.am b/src/spatialite/src/headers/Makefile.am deleted file mode 100644 index 492cef7..0000000 --- a/src/spatialite/src/headers/Makefile.am +++ /dev/null @@ -1,16 +0,0 @@ - -noinst_HEADERS = spatialite_private.h -nobase_include_HEADERS = spatialite.h \ - spatialite/gaiaexif.h \ - spatialite/gaiaaux.h \ - spatialite/gaiageo.h \ - spatialite/gg_const.h \ - spatialite/gg_structs.h \ - spatialite/gg_core.h \ - spatialite/gg_mbr.h \ - spatialite/gg_formats.h \ - spatialite/gg_dynamic.h \ - spatialite/gg_advanced.h \ - spatialite/spatialite.h \ - spatialite/sqlite.h \ - spatialite/debug.h diff --git a/src/spatialite/src/headers/Makefile.in b/src/spatialite/src/headers/Makefile.in deleted file mode 100644 index 888bd69..0000000 --- a/src/spatialite/src/headers/Makefile.in +++ /dev/null @@ -1,513 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/headers -DIST_COMMON = $(nobase_include_HEADERS) $(noinst_HEADERS) \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; -am__vpath_adj = case $$p in \ - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ - *) f=$$p;; \ - esac; -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; -am__install_max = 40 -am__nobase_strip_setup = \ - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` -am__nobase_strip = \ - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" -am__nobase_list = $(am__nobase_strip_setup); \ - for p in $$list; do echo "$$p $$p"; done | \ - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ - if (++n[$$2] == $(am__install_max)) \ - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ - END { for (dir in files) print dir, files[dir] }' -am__base_list = \ - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' -am__uninstall_files_from_dir = { \ - test -z "$$files" \ - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ - $(am__cd) "$$dir" && rm -f $$files; }; \ - } -am__installdirs = "$(DESTDIR)$(includedir)" -HEADERS = $(nobase_include_HEADERS) $(noinst_HEADERS) -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -noinst_HEADERS = spatialite_private.h -nobase_include_HEADERS = spatialite.h \ - spatialite/gaiaexif.h \ - spatialite/gaiaaux.h \ - spatialite/gaiageo.h \ - spatialite/gg_const.h \ - spatialite/gg_structs.h \ - spatialite/gg_core.h \ - spatialite/gg_mbr.h \ - spatialite/gg_formats.h \ - spatialite/gg_dynamic.h \ - spatialite/gg_advanced.h \ - spatialite/spatialite.h \ - spatialite/sqlite.h \ - spatialite/debug.h - -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/headers/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/headers/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -install-nobase_includeHEADERS: $(nobase_include_HEADERS) - @$(NORMAL_INSTALL) - @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ - if test -n "$$list"; then \ - echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ - $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ - fi; \ - $(am__nobase_list) | while read dir files; do \ - xfiles=; for file in $$files; do \ - if test -f "$$file"; then xfiles="$$xfiles $$file"; \ - else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ - test -z "$$xfiles" || { \ - test "x$$dir" = x. || { \ - echo " $(MKDIR_P) '$(DESTDIR)$(includedir)/$$dir'"; \ - $(MKDIR_P) "$(DESTDIR)$(includedir)/$$dir"; }; \ - echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(includedir)/$$dir'"; \ - $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(includedir)/$$dir" || exit $$?; }; \ - done - -uninstall-nobase_includeHEADERS: - @$(NORMAL_UNINSTALL) - @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ - $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ - dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(HEADERS) -installdirs: - for dir in "$(DESTDIR)$(includedir)"; do \ - test -z "$$dir" || $(MKDIR_P) "$$dir"; \ - done -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: install-nobase_includeHEADERS - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: uninstall-nobase_includeHEADERS - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool ctags distclean distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-nobase_includeHEADERS \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-nobase_includeHEADERS - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/src/headers/spatialite.h b/src/spatialite/src/headers/spatialite.h deleted file mode 100644 index 64bfdcd..0000000 --- a/src/spatialite/src/headers/spatialite.h +++ /dev/null @@ -1,529 +0,0 @@ -/* - spatialite.h -- Gaia spatial support for SQLite - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -/** - \file spatialite.h - - Main SpatiaLite header file - */ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#ifdef _WIN32 -#ifdef DLL_EXPORT -#define SPATIALITE_DECLARE __declspec(dllexport) -#else -#define SPATIALITE_DECLARE extern -#endif -#else -#define SPATIALITE_DECLARE __attribute__ ((visibility("default"))) -#endif -#endif - -#ifndef _SPATIALITE_H -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#define _SPATIALITE_H -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - -#include - -/** - Return the current library version. - */ - SPATIALITE_DECLARE const char *spatialite_version (void); - -/** - Initializes the library. - - \param verbose if TRUE a short start-up message is shown on stderr - - \note You absolutely must invoke this function before attempting to perform - any other SpatiaLite's call. - - */ - SPATIALITE_DECLARE void spatialite_init (int verbose); - -/** - Initializes the GEOS library. - - \note You are never supposed to invoke this function (internally handled). - - */ - SPATIALITE_DECLARE void spatialite_init_geos (void); - -/** - Cleanup spatialite - - This function performs general cleanup, essentially undoing the effect - of spatialite_init(). - - \sa spatialite_init -*/ - SPATIALITE_DECLARE void spatialite_cleanup (void); - -/** - Dumps a full geometry-table into an external Shapefile - - \param sqlite handle to current DB connection - \param table the name of the table to be exported - \param column the name of the geometry column - \param shp_path pathname of the Shapefile to be exported (no suffix) - \param charset a valid GNU ICONV charset to be used for DBF text strings - \param geom_type "POINT", "LINESTRING", "POLYGON", "MULTIPOLYGON" or NULL - \param verbose if TRUE a short report is shown on stderr - \param rows on completion will contain the total number of actually exported rows - \param err_msg on completion will contain an error message (if any) - - \return 0 on failure, any other value on success - */ - SPATIALITE_DECLARE int dump_shapefile (sqlite3 * sqlite, char *table, - char *column, char *shp_path, - char *charset, char *geom_type, - int verbose, int *rows, - char *err_msg); - -/** - Loads an external Shapefile into a newly created table - - \param sqlite handle to current DB connection - \param shp_path pathname of the Shapefile to be imported (no suffix) - \param table the name of the table to be created - \param charset a valid GNU ICONV charset to be used for DBF text strings - \param srid the SRID to be set for Geometries - \param column the name of the geometry column - \param coerce2d if TRUE any Geometry will be casted to 2D [XY] - \param compressed if TRUE compressed Geometries will be created - \param verbose if TRUE a short report is shown on stderr - \param spatial_index if TRUE an R*Tree Spatial Index will be created - \param rows on completion will contain the total number of actually exported rows - \param err_msg on completion will contain an error message (if any) - - \return 0 on failure, any other value on success - - \sa load_shapefile_ex - - \note this function simply calls load_shapefile_ex by passing - implicit gype="AUTO" and pk_column=NULL arguments - */ - SPATIALITE_DECLARE int load_shapefile (sqlite3 * sqlite, char *shp_path, - char *table, char *charset, int srid, - char *column, int coerce2d, - int compressed, int verbose, - int spatial_index, int *rows, - char *err_msg); - -/** - Loads an external Shapefile into a newly created table - - \param sqlite handle to current DB connection - \param shp_path pathname of the Shapefile to be imported (no suffix) - \param table the name of the table to be created - \param charset a valid GNU ICONV charset to be used for DBF text strings - \param srid the SRID to be set for Geometries - \param geo_column the name of the geometry column - \param gtype expected to be one of: "LINESTRING", "LINESTRINGZ", - "LINESTRINGM", "LINESTRINGZM", "MULTILINESTRING", "MULTILINESTRINGZ", - "MULTILINESTRINGM", "MULTILINESTRINGZM", "POLYGON", "POLYGONZ", "POLYGONM", - "POLYGONZM", "MULTIPOLYGON", "MULTIPOLYGONZ", "MULTIPOLYGONM", - "MULTIPOLYGONZM" or "AUTO". - \param pk_column name of the Primary Key column; if NULL or mismatching - then "PK_UID" will be assumed by default. - \param coerce2d if TRUE any Geometry will be casted to 2D [XY] - \param compressed if TRUE compressed Geometries will be created - \param verbose if TRUE a short report is shown on stderr - \param spatial_index if TRUE an R*Tree Spatial Index will be created - \param rows on completion will contain the total number of actually exported rows - \param err_msg on completion will contain an error message (if any) - - \return 0 on failure, any other value on success - - \sa load_shapefile - - \note the Shapefile format doesn't supports any distinction between - LINESTRINGs and MULTILINESTRINGs, or between POLYGONs and MULTIPOLYGONs; - as does not allows to clearly distinguish if the M-measure is required. - \n So a first preliminary scan of the Shapefile is required in order to - correctly identify the actual payload (gtype = "AUTO", default case). - \n By explicitly specifying some expected geometry type this first scan - will be skipped at all thus introducing a noticeable performance gain. - \n Anyway, declaring a mismatching geometry type will surely cause a failure. - */ - SPATIALITE_DECLARE int load_shapefile_ex (sqlite3 * sqlite, char *shp_path, - char *table, char *charset, - int srid, char *geo_column, - char *gtype, char *pk_column, - int coerce2d, int compressed, - int verbose, int spatial_index, - int *rows, char *err_msg); - -/** - Loads an external DBF file into a newly created table - - \param sqlite handle to current DB connection - \param dbf_path pathname of the DBF file to be imported - \param table the name of the table to be created - \param charset a valid GNU ICONV charset to be used for DBF text strings - \param verbose if TRUE a short report is shown on stderr - \param rows on completion will contain the total number of actually exported rows - \param err_msg on completion will contain an error message (if any) - - \sa load_dbf_ex - - \note this function simply calls load_dbf_ex by passing an - implicit pk_column=NULL argument - - \return 0 on failure, any other value on success - */ - SPATIALITE_DECLARE int load_dbf (sqlite3 * sqlite, char *dbf_path, - char *table, char *charset, int verbose, - int *rows, char *err_msg); - -/** - Loads an external DBF file into a newly created table - - \param sqlite handle to current DB connection - \param dbf_path pathname of the DBF file to be imported - \param table the name of the table to be created - \param pk_column name of the Primary Key column; if NULL or mismatching - then "PK_UID" will be assumed by default. - \param charset a valid GNU ICONV charset to be used for DBF text strings - \param verbose if TRUE a short report is shown on stderr - \param rows on completion will contain the total number of actually exported rows - \param err_msg on completion will contain an error message (if any) - - \sa load_shapefile - - \return 0 on failure, any other value on success - */ - SPATIALITE_DECLARE int load_dbf_ex (sqlite3 * sqlite, char *dbf_path, - char *table, char *pk_column, - char *charset, int verbose, int *rows, - char *err_msg); - - -/** - Dumps a full table into an external DBF file - - \param sqlite handle to current DB connection - \param table the name of the table to be exported - \param dbf_path pathname of the DBF to be exported - \param charset a valid GNU ICONV charset to be used for DBF text strings - \param err_msg on completion will contain an error message (if any) - - \return 0 on failure, any other value on success - */ - SPATIALITE_DECLARE int dump_dbf (sqlite3 * sqlite, char *table, - char *dbf_path, char *charset, - char *err_msg); - -/** - Loads an external spreadsheet (.xls) file into a newly created table - - \param sqlite handle to current DB connection - \param path pathname of the spreadsheet file to be imported - \param table the name of the table to be created - \param worksheetIndex the index identifying the worksheet to be imported - \param first_titles if TRUE the first line is assumed to contain column names - \param rows on completion will contain the total number of actually exported rows - \param err_msg on completion will contain an error message (if any) - - \return 0 on failure, any other value on success - */ - SPATIALITE_DECLARE int load_XL (sqlite3 * sqlite, const char *path, - const char *table, - unsigned int worksheetIndex, - int first_titles, unsigned int *rows, - char *err_msg); - -/** - A portable replacement for C99 round() - - \param value a double value - - \return the nearest integeral value - */ - SPATIALITE_DECLARE double math_round (double value); - -/** - A portable replacement for C99 llabs() - - \param value a 64 bit integer value - - \return the corresponding absolute value - */ - SPATIALITE_DECLARE sqlite3_int64 math_llabs (sqlite3_int64 value); - -/** - Inserts the inlined EPSG dataset into the "spatial_ref_sys" table - - \param sqlite handle to current DB connection - \param verbose if TRUE a short report is shown on stderr - - \return 0 on failure, any other value on success - - \sa spatial_ref_sys_init2 - - \note this function is internally invoked by the SQL function - InitSpatialMetadata(), and is not usually intended for direct use. - This functions is now deprecated, and will simply call - spatial_ref_sys_init2(sqlite, GAIA_EPSG_ANY, verbose). - */ - SPATIALITE_DECLARE int spatial_ref_sys_init (sqlite3 * sqlite, int verbose); - -/** - Inserts the inlined EPSG dataset into the "spatial_ref_sys" table - - \param sqlite handle to current DB connection - \param mode can be one of GAIA_EPSG_ANY, GAIA_EPSG_NONE or GAIA_EPSG_WGS84_ONLY - \param verbose if TRUE a short report is shown on stderr - - \return 0 on failure, any other value on success - - \note this function is internally invoked by the SQL function - InitSpatialMetadata(), and is not usually intended for direct use. - */ - SPATIALITE_DECLARE int spatial_ref_sys_init2 (sqlite3 * sqlite, int mode, - int verbose); - -/** - Inserts some inlined EPSG definition into the "spatial_ref_sys" table - - \param sqlite handle to current DB connection - \param srid the SRID value uniquely identifying the required EPSG definition - - \return 0 on failure, any other value on success - */ - SPATIALITE_DECLARE int insert_epsg_srid (sqlite3 * sqlite, int srid); - -/** - Checks if a column is actually defined into the given table - - \param sqlite handle to current DB connection - \param table the table to be checked - \param column the column to be checked - - \return 0 on success, any other value on success - - \note internally used to detect if some KML attribute defaults to a constant value - */ - SPATIALITE_DECLARE int - is_kml_constant (sqlite3 * sqlite, char *table, char *column); - -/** - Dumps a full geometry-table into an external KML file - - \param sqlite handle to current DB connection - \param table the name of the table to be exported - \param geom_col the name of the geometry column - \param kml_path pathname of the KML file to be exported - \param name_col column to be used for KML "name" (may be null) - \param desc_col column to be used for KML "description" (may be null) - \param precision number of decimal digits for coordinates - - \return 0 on failure, any other value on success - */ - SPATIALITE_DECLARE int dump_kml (sqlite3 * sqlite, char *table, - char *geom_col, char *kml_path, - char *name_col, char *desc_col, - int precision); - -/** - Checks for duplicated rows into the same table - - \param sqlite handle to current DB connection - \param table name of the table to be checked - \param dupl_count on completion will contain the number of duplicated rows found - - \sa remove_duplicated_rows - \note two (or more) rows are assumed to be duplicated if any column - - value (excluding any Primary Key column) is exacly the same - */ - SPATIALITE_DECLARE void check_duplicated_rows (sqlite3 * sqlite, - char *table, - int *dupl_count); - -/** - Remove duplicated rows from a table - - \param sqlite handle to current DB connection - \param table name of the table to be cleaned - - \sa check_duplicated_rows - - \note when two (or more) duplicated rows exist, only the first occurence - will be preserved, then deleting any further occurrence. - */ - SPATIALITE_DECLARE void remove_duplicated_rows (sqlite3 * sqlite, - char *table); - -/** - Creates a derived table surely containing elementary Geometries - - \param sqlite handle to current DB connection - \param inTable name of the input table - \param geometry name of the Geometry column - \param outTable name of the output table to be created - \param pKey name of the Primary Key column in the output table - \param multiId name of the column identifying origins in the output table - - \note if the input table contains some kind of complex Geometry - (MULTIPOINT, MULTILINESTRING, MULTIPOLYGON or GEOMETRYCOLLECTION), - then many rows are inserted into the output table: each single - row will contain the same attributes and an elementaty Geometry. - All the rows created by expanding the same input row will expose - the same value in the "multiId" column. - */ - SPATIALITE_DECLARE void elementary_geometries (sqlite3 * sqlite, - char *inTable, - char *geometry, - char *outTable, char *pKey, - char *multiId); - -/** - Dumps a full geometry-table into an external GeoJSON file - - \param sqlite handle to current DB connection - \param table the name of the table to be exported - \param geom_col the name of the geometry column - \param outfile_path pathname for the GeoJSON file to be written to - \param precision number of decimal digits for coordinates - \param option the format to use for output - - \note valid values for option are: - - 0 no option - - 1 GeoJSON MBR - - 2 GeoJSON Short CRS (e.g EPSG:4326) - - 3 MBR + Short CRS - - 4 GeoJSON Long CRS (e.g urn:ogc:def:crs:EPSG::4326) - - 5 MBR + Long CRS - - \return 0 on failure, any other value on success - */ - SPATIALITE_DECLARE int dump_geojson (sqlite3 * sqlite, char *table, - char *geom_col, char *outfile_path, - int precision, int option); - -/** - Updates the LAYER_STATICS metadata table - - \param sqlite handle to current DB connection - \param table name of the table to be processed - \param column name of the geometry to be processed - - \note this function will explore the given table/geometry determining - the number of rows and the full layer extent; a corresponding table/geometry - entry is expected to be already declared in the GEOMETRY_COLUMNS table. - These informations will be permanently stored into the LAYER_STATISTICS - table; if such table does not yet exists will be implicitly created. - - if table is NULL, any entry found within GEOMETRY_COLUMNS - will be processed. - - if table is not NULL and column is NULL, any geometry - belonging to the given table will be processed. - - if both table and column are not NULL, then only the - given entry will be processed. - - \return 0 on failure, the total count of processed entries on success - */ - SPATIALITE_DECLARE int update_layer_statistics (sqlite3 * sqlite, - const char *table, - const char *column); - -/** - Queries the Metadata tables supporting Vector Layers - - \param handle SQLite handle to current DB connection. - \param table VectorLayer Table (or View, or VirtualShape). - \param geometry Geometry Column name. - \param mode one of GAIA_VECTORS_LIST_LOOSE or GAIA_VECTORS_LIST_STRICT. - - \return the pointer to the newly created VectorLayersList object: NULL on failure - - \sa gaiaFreeVectorLayersList - - \note you are responsible to destroy (before or after) any allocated - VectorLayersList returned by gaiaGetVectorLayersList(). - \n If the table arg is NULL all VectorLayers defined within the DB will be reported; - otherwise only a single Layer will be reported (if existing). - \n By defining the geometry arg (not NULL) you can further restrict the returned report. - \n When the mode arg is set to GAIA_VECTORS_LIST_FAST (default) then the returned infos - will be simply retrieved from the staticized statistic tables (faster, but could be inaccurate). - \n If the mode arg is set to GAIA_VECTORS_LIST_PRECISE a preliminary attempt to update the - statistic tables will be always performed (probably slower, but surely accurate). - */ - SPATIALITE_DECLARE gaiaVectorLayersListPtr gaiaGetVectorLayersList (sqlite3 * - handle, const char *table, const char *geometry, int mode); - -/** - Destroys a VectorLayersList object - - \param ptr pointer to the VectorLayersList object to be destroyed - - \sa gaiaGetVectorLayersList - */ - SPATIALITE_DECLARE void gaiaFreeVectorLayersList (gaiaVectorLayersListPtr ptr); - -/** - Drops a layer-table, removing any related dependency - - \param sqlite handle to current DB connection - \param table name of the table to be removed - - \note this function will drop a SpatialTable, SpatialView or VirtualShape being - properly registered within the Metadata tables. - \n an eventual Spatial Index will be dropped as well, and any row referring the - selected table will be removed from the Metadata tables. - - \return 0 on failure, any other value on success - */ - SPATIALITE_DECLARE int gaiaDropTable (sqlite3 * sqlite, const char *table); - -#ifdef __cplusplus -} -#endif - -#endif /* _SPATIALITE_H */ diff --git a/src/spatialite/src/headers/spatialite/debug.h b/src/spatialite/src/headers/spatialite/debug.h deleted file mode 100644 index 39127cb..0000000 --- a/src/spatialite/src/headers/spatialite/debug.h +++ /dev/null @@ -1,77 +0,0 @@ -/* - debug.h -- abstract defs for standard output functions - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Pepijn Van Eeckhoudt - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#ifndef SPATIALITE_DEBUG_H -#define SPATIALITE_DEBUG_H - -#ifdef __ANDROID__ /* Android specific */ - -#include - -#ifdef DEBUG -#define spatialite_d(...) -#else -#define spatialite_d(...) __android_log_print(ANDROID_LOG_DEBUG, "Spatialite", __VA_ARGS__) -#endif - -#define spatialite_i(...) __android_log_print(ANDROID_LOG_INFO, "Spatialite", __VA_ARGS__) -#define spatialite_e(...) __android_log_print(ANDROID_LOG_ERROR, "Spatialite", __VA_ARGS__) - -#else /* any other standard platform (Win, Linux, Mac) */ - -#include - -#ifdef DEBUG -#define spatialite_d(...) -#else -#define spatialite_d(...) fprintf(stdout, __VA_ARGS__) -#endif - -#define spatialite_i(...) fprintf(stdout, __VA_ARGS__) -#define spatialite_e(...) fprintf(stderr, __VA_ARGS__) - -#endif /* platform specific */ - -#endif diff --git a/src/spatialite/src/headers/spatialite/gaiaaux.h b/src/spatialite/src/headers/spatialite/gaiaaux.h deleted file mode 100644 index d1332f3..0000000 --- a/src/spatialite/src/headers/spatialite/gaiaaux.h +++ /dev/null @@ -1,300 +0,0 @@ -/* - gaiaaux.h -- Gaia common utility functions - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -/** - \file gaiaaux.h - - Auxiliary/helper functions - */ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#ifdef DLL_EXPORT -#define GAIAAUX_DECLARE __declspec(dllexport) -#else -#define GAIAAUX_DECLARE extern -#endif -#endif - -#ifndef _GAIAAUX_H -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#define _GAIAAUX_H -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* constants */ -/** SQL single quoted string (text constant) */ -#define GAIA_SQL_SINGLE_QUOTE 1001 -/** SQL double quoted string (SQL name) */ -#define GAIA_SQL_DOUBLE_QUOTE 1002 - -/* function prototypes */ - -/** - Retrieves the Locale Charset - - \return the GNU ICONV name identifying the locale charset - */ - GAIAAUX_DECLARE const char *gaiaGetLocaleCharset (void); - -/** - Converts a text string from one charset to another - - \param buf the text string to be converted - \param fromCs the GNU ICONV name identifying the input charset - \param toCs the GNU ICONV name identifying the output charset - - \return 0 on failure, any other value on success. - - \note this function uses an internal buffer limited to 64KB; - so it's not safe passing extremely huge-sized text string. - */ - GAIAAUX_DECLARE int gaiaConvertCharset (char **buf, const char *fromCs, - const char *toCs); - -/** - Creates a persistent UTF8 converter object - - \param fromCS the GNU ICONV name identifying the input charset - - \return the handle of the converter object, or NULL on failure - - \sa gaiaFreeUTF8Converter - - \note you must properly destroy the converter object - when it isn't any longer used. - */ - GAIAAUX_DECLARE void *gaiaCreateUTF8Converter (const char *fromCS); - -/** - Destroys an UTF8 converter object - - \param cvtCS the handle identifying the UTF8 convert object - (returned by a previous call to gaiaCreateUTF8Converter). - - \sa gaiaCreateUTF8Converter - */ - GAIAAUX_DECLARE void gaiaFreeUTF8Converter (void *cvtCS); - -/** - Converts a text string to UTF8 - - \param cvtCS the handle identifying the UTF8 convert object - (returned by a previous call to gaiaCreateUTF8Converter). - \param buf the input text string - \param len length (in bytes) of input string - \param err on completion will contain 0 on success, any other value on failure - - \return the null-terminated UTF8 encoded string: NULL on failure - - \sa gaiaCreateUTF8Converter, gaiaFreeUTF8Converter - - \note this function can safely handle strings of arbitrary length, - and will return the converted string into a dynamically allocated buffer - created by malloc(). - You are required to explicitly free() any string returned by this function. - */ - GAIAAUX_DECLARE char *gaiaConvertToUTF8 (void *cvtCS, const char *buf, - int len, int *err); - -/** - Checks if a name is a reserved SQLite name - - \param name the name to be checked - - \return 0 if no: any other value if yes - - \sa gaiaIsReservedSqlName, gaiaIllegalSqlName - */ - GAIAAUX_DECLARE int gaiaIsReservedSqliteName (const char *name); - -/** - Checks if a name is a reserved SQL name - - \param name the name to be checked - - \return 0 if no: any other value if yes - - \sa gaiaIsReservedSqliteName, gaiaIllegalSqlName - */ - GAIAAUX_DECLARE int gaiaIsReservedSqlName (const char *name); - -/** - Checks if a name is an illegal SQL name - - \param name the name to be checked - - \return 0 if no: any other value if yes - - \sa gaiaIsReservedSqliteName, gaiaIsReservedSqlName - */ - GAIAAUX_DECLARE int gaiaIllegalSqlName (const char *name); - -/** - Properly formats an SQL text constant - - \param value the text string to be formatted - - \return the formatted string: NULL on failure - - \sa gaiaQuotedSql, gaiaDequotedSql - - \note this function simply is a convenience method corresponding to: - gaiaQuotedSQL(value, GAIA_SQL_SINGLE_QUOTE); - - \remark passing a string like "Sant'Andrea" will return 'Sant''Andrea' - */ - GAIAAUX_DECLARE char *gaiaSingleQuotedSql (const char *value); - -/** - Properly formats an SQL name - - \param value the SQL name to be formatted - - \return the formatted string: NULL on failure - - \sa gaiaQuotedSql, gaiaDequotedSql - - \note this function simply is a convenience method corresponding to: - gaiaQuotedSQL(value, GAIA_SQL_DOUBLE_QUOTE); - - \remark passing a string like "Sant\"Andrea" will return "Sant""Andrea" - */ - GAIAAUX_DECLARE char *gaiaDoubleQuotedSql (const char *value); - -/** - Properly formats an SQL generic string - - \param value the string to be formatted - \param quote GAIA_SQL_SINGLE_QUOTE or GAIA_SQL_DOUBLE_QUOTE - - \return the formatted string: NULL on failure - - \sa gaiaSingleQuotedSql, gaiaDoubleQuotedSql, gaiaDequotedSql - - \note this function can safely handle strings of arbitrary length, - and will return the formatted string into a dynamically allocated buffer - created by malloc(). - You are required to explicitly free() any string returned by this function. - */ - GAIAAUX_DECLARE char *gaiaQuotedSql (const char *value, int quote); - -/** - Properly formats an SQL generic string (dequoting) - - \param value the string to be dequoted - - \return the formatted string: NULL on failure - - \sa gaiaSingleQuotedSql, gaiaDoubleQuotedSql, gaiaQuotedSql - - \note this function can safely handle strings of arbitrary length, - and will return the formatted string into a dynamically allocated buffer - created by malloc(). - You are required to explicitly free() any string returned by this function. - */ - GAIAAUX_DECLARE char *gaiaDequotedSql (const char *value); - -/* -/ DEPRECATED FUNCTION: gaiaCleanSqlString() -/ this function must not be used for any new project -/ it's still maintained for backward compatibility, -/ but will be probably removed in future versions -*/ - -/** - deprecated function - - \param value the string to be formatted - - \sa gaiaQuotedSql - - \note this function is still supported simply for backward compatibility. - it's intrinsically unsafe (passing huge strings potentially leads to - buffer overflows) and you are strongly encouraged to use gaiaQuotedSql() - as a safest replacement. - */ - GAIAAUX_DECLARE void gaiaCleanSqlString (char *value); - -/** - SQL log: statement start - - \param sqlite handle of the current DB connection - \param user_agent name of the invoking application, e.g. "spatialite_gui" or "spatialite CLI" - \param utf8Sql the SQL statement bein executed - \param sqllog_pk after completion this variable will contain the value - of the Primary Key identifying the corresponding Log event - - \sa gaiaUpdateSqlLog - - \note this function inserts an \i event into the SQL Log, and - is expected to be invoked immediately \b before executing the SQL - statement itself. - */ - GAIAAUX_DECLARE void gaiaInsertIntoSqlLog(sqlite3 *sqlite, const char *user_agent, const char *utf8Sql, sqlite3_int64 *sqllog_pk); - -/** - SQL log: statement start - - \param sqlite handle of the current DB connection - \param sqllog_pk the Primary Key identifying the corresponding Log event. - \n expected to be exactely the same returned by the most recent call to gaiaInsertIntoSqlLog() - \param success expected to be TRUE if the SQL statement was succesfully executed. - \param errMsg expected to be the error message returned by SQLite on failure, NULL on success. - - \sa gaiaInsertIntoSqlLog - - \note this function completes an \i event inserted into the SQL Log, and - is expected to be invoked immediately \b after executing the SQL - statement itself. - */ - GAIAAUX_DECLARE void gaiaUpdateSqlLog(sqlite3 *sqlite, sqlite3_int64 sqllog_pk, int success, const char *errMsg); - -#ifdef __cplusplus -} -#endif - -#endif /* _GAIAAUX_H */ diff --git a/src/spatialite/src/headers/spatialite/gaiaexif.h b/src/spatialite/src/headers/spatialite/gaiaexif.h deleted file mode 100644 index 8c7970b..0000000 --- a/src/spatialite/src/headers/spatialite/gaiaexif.h +++ /dev/null @@ -1,648 +0,0 @@ -/* - gaiaexif.h -- Gaia common EXIF Metadata reading functions - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -/** - \file gaiaexif.h - - EXIF/image: supporting functions and constants - */ - -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#ifdef DLL_EXPORT -#define GAIAEXIF_DECLARE __declspec(dllexport) -#else -#define GAIAEXIF_DECLARE extern -#endif -#endif - -#ifndef _GAIAEXIF_H -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#define _GAIAEXIF_H -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* constants used for BLOB value types */ -/** generic hexadecimal BLOB */ -#define GAIA_HEX_BLOB 0 -/** this BLOB does actually contain a GIF image */ -#define GAIA_GIF_BLOB 1 -/** this BLOB does actually containt a PNG image */ -#define GAIA_PNG_BLOB 2 -/** this BLOB does actually contain a generic JPEG image */ -#define GAIA_JPEG_BLOB 3 -/** this BLOB does actually contain a JPEG-EXIF image */ -#define GAIA_EXIF_BLOB 4 -/** this BLOB does actually contain a JPEG-EXIF image including GPS data */ -#define GAIA_EXIF_GPS_BLOB 5 -/** this BLOB does actually contain a ZIP compressed file */ -#define GAIA_ZIP_BLOB 6 -/** this BLOB does actually contain a PDF document */ -#define GAIA_PDF_BLOB 7 -/** this BLOB does actually contain a SpatiaLite Geometry */ -#define GAIA_GEOMETRY_BLOB 8 -/** this BLOB does actually contain a TIFF image */ -#define GAIA_TIFF_BLOB 9 -/** this BLOB does actually contain a WebP image */ -#define GAIA_WEBP_BLOB 10 - -/* constants used for EXIF value types */ -/** unrecognized EXIF value */ -#define GAIA_EXIF_NONE 0 -/** EXIF value of the BYTE type */ -#define GAIA_EXIF_BYTE 1 -/** EXIF value of the SHORT type */ -#define GAIA_EXIF_SHORT 2 -/** EXIF value of the STRING type */ -#define GAIA_EXIF_STRING 3 -/** EXIF value of the LONG type */ -#define GAIA_EXIF_LONG 4 -/** EXIF value of the RATIONAL type */ -#define GAIA_EXIF_RATIONAL 5 -/** EXIF value of the SLONG type */ -#define GAIA_EXIF_SLONG 9 -/** EXIF value of the SRATIONAL type */ -#define GAIA_EXIF_SRATIONAL 10 - -/** - Container for an EXIF tag - */ - typedef struct gaiaExifTagStruct - { -/* an EXIF TAG */ - /** GPS data included (0/1) */ - char Gps; - /** EXIF tag ID */ - unsigned short TagId; - /** EXIF value type */ - unsigned short Type; - /** number of values */ - unsigned short Count; - /** tag offset [big- little-endian encoded] */ - unsigned char TagOffset[4]; - /** array of BYTE values */ - unsigned char *ByteValue; - /** array of STRING values */ - char *StringValue; - /** array of SHORT values */ - unsigned short *ShortValues; - /** array of LONG values ] */ - unsigned int *LongValues; - /** array of RATIONAL values [numerators] */ - unsigned int *LongRationals1; - /** array of RATIONAL values [denominators] */ - unsigned int *LongRationals2; - /** array of Signed SHORT values */ - short *SignedShortValues; - /** array of Signed LONG values */ - int *SignedLongValues; - /** array of Signed RATIONAL values [numerators] */ - int *SignedLongRationals1; - /** array of Signed RATIONAL values [denominators] */ - int *SignedLongRationals2; - /** array of FLOAT values */ - float *FloatValues; - /** array of DOUBLE values */ - double *DoubleValues; - /** pointer to next item into the linked list */ - struct gaiaExifTagStruct *Next; - } gaiaExifTag; -/** - Typedef for EXIF tag structure. - - \sa gaiaExifTagStruct - */ - typedef gaiaExifTag *gaiaExifTagPtr; - -/** - Container for a list of EXIF tags - */ - typedef struct gaiaExifTagListStruct - { -/* an EXIF TAG LIST */ - /** pointer to first item into the linked list */ - gaiaExifTagPtr First; - /** pointer to the last item into the linked list */ - gaiaExifTagPtr Last; - /** number of items */ - int NumTags; - /** an array of pointers to items */ - gaiaExifTagPtr *TagsArray; - } gaiaExifTagList; -/** - Typedef for EXIF tag structure - - \sa gaiaExifTagListStruct - */ - typedef gaiaExifTagList *gaiaExifTagListPtr; - -/* function prototipes */ - -/** - Creates a list of EXIF tags by parsing a BLOB of the JPEG-EXIF type - - \param blob the BLOB to be parsed - \param size the BLOB size (in bytes) - - \return a list of EXIF tags: or NULL if any error is encountered - - \sa gaiaExifTagsFree - - \note you must explicitly destroy the list when it's any longer used. - */ - GAIAEXIF_DECLARE gaiaExifTagListPtr gaiaGetExifTags (const unsigned char - *blob, int size); - -/** - Destroy a list of EXIF tags - - \param tag_list the list to be destroied - - \sa gaiaGetExifTags - - \note the pointer passed to this function must be one returned by a - previous call to gaiaGetExifTags - */ - GAIAEXIF_DECLARE void gaiaExifTagsFree (gaiaExifTagListPtr tag_list); - -/** - Return the total number of EXIF tags into the list - - \param tag_list pointer to an EXIF tag list. - - \return the EXIF tag count. - - \sa gaiaGetExifTags, gaiaExifTagsFree - */ - GAIAEXIF_DECLARE int gaiaGetExifTagsCount (gaiaExifTagListPtr tag_list); - -/** - Retrieves an EXIF tag by its relative position into the list - - \param tag_list pointer to an EXIF tag list. - \param pos relative item position [first item is 0] - - \return a pointer to the corresponding EXIF tag: NULL if not found - - \sa gaiaGetExifTags, gaiaExifTagsFree, gaiaExifTagsCount - */ - GAIAEXIF_DECLARE gaiaExifTagPtr gaiaGetExifTagByPos (gaiaExifTagListPtr - tag_list, - const int pos); - -/** - Return the total number of EXIF tags into the list - - \param tag_list pointer to an EXIF tag list. - - \return the EXIF tag count. - - \sa gaiaGetExifTags, gaiaExifTagsFree - */ - GAIAEXIF_DECLARE int gaiaGetExifTagsCount (gaiaExifTagListPtr tag_list); - -/** - Retrieves an EXIF tag by its Tag ID - - \param tag_list pointer to an EXIF tag list. - \param tag_id the Tag ID to be found - - \return a pointer to the corresponding EXIF tag: NULL if not found - - \sa gaiaGetExifTags, gaiaExifTagsFree - */ - GAIAEXIF_DECLARE gaiaExifTagPtr gaiaGetExifTagById (const gaiaExifTagListPtr - tag_list, - const unsigned short - tag_id); - -/** - Retrieves an EXIF-GPS tag by its Tag ID - - \param tag_list pointer to an EXIF tag list. - \param tag_id the GPS Tag ID to be found - - \return a pointer to the corresponding EXIF tag: NULL if not found - - \sa gaiaGetExifTags, gaiaExifTagsFree - */ - GAIAEXIF_DECLARE gaiaExifTagPtr gaiaGetExifGpsTagById (const - gaiaExifTagListPtr - tag_list, - const unsigned short - tag_id); - -/** - Retrieves an EXIF tag by its name - - \param tag_list pointer to an EXIF tag list. - \param tag_name the Tag Name to be found - - \return a pointer to the corresponding EXIF tag: NULL if not found - - \sa gaiaGetExifTags, gaiaExifTagsFree - */ - GAIAEXIF_DECLARE gaiaExifTagPtr gaiaGetExifTagByName (const - gaiaExifTagListPtr - tag_list, - const char *tag_name); - -/** - Return the Tag ID from an EXIF tag - - \param tag pointer to an EXIF tag - - \return the Tag ID - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName - */ - GAIAEXIF_DECLARE unsigned short gaiaExifTagGetId (const gaiaExifTagPtr tag); - -/** - Return the Tag Name from an EXIF tag - - \param tag pointer to an EXIF tag - \param tag_name receiving buffer: the Tag Name will be copied here - \param len length of the receiving buffer - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName - */ - GAIAEXIF_DECLARE void gaiaExifTagGetName (const gaiaExifTagPtr tag, - char *tag_name, int len); - -/** - Checks if an EXIF tag actually is an EXIF-GPS tag - - \param tag pointer to an EXIF tag - - \return 0 if false: any other value if true - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName - */ - GAIAEXIF_DECLARE int gaiaIsExifGpsTag (const gaiaExifTagPtr tag); - -/** - Return the value type for an EXIF tag - - \param tag pointer to an EXIF tag - - \return the value type: one of GAIA_EXIF_NONE, GAIA_EXIF_BYTE, - GAIA_EXIF_SHORT, GAIA_EXIF_STRING, GAIA_EXIF_LONG, GAIA_EXIF_RATIONAL, - GAIA_EXIF_SLONG, GAIA_EXIF_SRATIONAL - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName - */ - GAIAEXIF_DECLARE unsigned short gaiaExifTagGetValueType (const - gaiaExifTagPtr - tag); - -/** - Return the total count of values from an EXIF tag - - \param tag pointer to an EXIF tag - - \return the number of available values - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName - */ - GAIAEXIF_DECLARE unsigned short gaiaExifTagGetNumValues (const - gaiaExifTagPtr - tag); - -/** - Return a BYTE value from an EXIF tag - - \param tag pointer to an EXIF tag. - \param ind value index [first value has index 0]. - \param ok on completion will contain 0 on failure: any other value on success. - - \return the BYTE value - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaExifTagGetValueType, gaiaExifTagGetNumValues - */ - GAIAEXIF_DECLARE unsigned char gaiaExifTagGetByteValue (const gaiaExifTagPtr - tag, const int ind, - int *ok); - -/** - Return a STRING value from an EXIF tag - - \param tag pointer to an EXIF tag. - \param str receiving buffer: the STRING value will be copied here. - \param len length of the receiving buffer - \param ok on completion will contain 0 on failure: any other value on success. - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaExifTagGetValueType, gaiaExifTagGetNumValues - */ - GAIAEXIF_DECLARE void gaiaExifTagGetStringValue (const gaiaExifTagPtr tag, - char *str, int len, - int *ok); - -/** - Return a SHORT value from an EXIF tag - - \param tag pointer to an EXIF tag. - \param ind value index [first value has index 0]. - \param ok on completion will contain 0 on failure: any other value on success. - - \return the SHORT value - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaExifTagGetValueType, gaiaExifTagGetNumValues - */ - GAIAEXIF_DECLARE unsigned short gaiaExifTagGetShortValue (const - gaiaExifTagPtr - tag, - const int ind, - int *ok); - -/** - Return a LONG value from an EXIF tag - - \param tag pointer to an EXIF tag. - \param ind value index [first value has index 0]. - \param ok on completion will contain 0 on failure: any other value on success. - - \return the LONG value - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaExifTagGetValueType, gaiaExifTagGetNumValues - */ - GAIAEXIF_DECLARE unsigned int gaiaExifTagGetLongValue (const gaiaExifTagPtr - tag, const int ind, - int *ok); - -/** - Return a RATIONAL [numerator] value from an EXIF tag - - \param tag pointer to an EXIF tag. - \param ind value index [first value has index 0]. - \param ok on completion will contain 0 on failure: any other value on success. - - \return the RATIONAL [numerator] value - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaExifTagGetValueType, gaiaExifTagGetNumValues - */ - GAIAEXIF_DECLARE unsigned int gaiaExifTagGetRational1Value (const - gaiaExifTagPtr - tag, - const int ind, - int *ok); - -/** - Return a RATIONAL [denominator] value from an EXIF tag - - \param tag pointer to an EXIF tag. - \param ind value index [first value has index 0]. - \param ok on completion will contain 0 on failure: any other value on success. - - \return the RATIONAL [denominator] value - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaExifTagGetValueType, gaiaExifTagGetNumValues - */ - GAIAEXIF_DECLARE unsigned int gaiaExifTagGetRational2Value (const - gaiaExifTagPtr - tag, - const int ind, - int *ok); - -/** - Return a RATIONAL value from an EXIF tag - - \param tag pointer to an EXIF tag. - \param ind value index [first value has index 0]. - \param ok on completion will contain 0 on failure: any other value on success. - - \return the RATIONAL value - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaExifTagGetValueType, gaiaExifTagGetNumValues - */ - GAIAEXIF_DECLARE double gaiaExifTagGetRationalValue (const gaiaExifTagPtr - tag, const int ind, - int *ok); - -/** - Return a Signed SHORT value from an EXIF tag - - \param tag pointer to an EXIF tag. - \param ind value index [first value has index 0]. - \param ok on completion will contain 0 on failure: any other value on success. - - \return the Signed SHORT value - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaExifTagGetValueType, gaiaExifTagGetNumValues - */ - GAIAEXIF_DECLARE short gaiaExifTagGetSignedShortValue (const gaiaExifTagPtr - tag, const int ind, - int *ok); - -/** - Return a Signed LONG value from an EXIF tag - - \param tag pointer to an EXIF tag. - \param ind value index [first value has index 0]. - \param ok on completion will contain 0 on failure: any other value on success. - - \return the Signed LONG value - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaExifTagGetValueType, gaiaExifTagGetNumValues - */ - GAIAEXIF_DECLARE int gaiaExifTagGetSignedLongValue (const gaiaExifTagPtr - tag, const int ind, - int *ok); - -/** - Return a SRATIONAL [numerator] value from an EXIF tag - - \param tag pointer to an EXIF tag. - \param ind value index [first value has index 0]. - \param ok on completion will contain 0 on failure: any other value on success. - - \return the SRATIONAL [numerator] value - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaExifTagGetValueType, gaiaExifTagGetNumValues - */ - GAIAEXIF_DECLARE int gaiaExifTagGetSignedRational1Value (const - gaiaExifTagPtr tag, - const int ind, - int *ok); - -/** - Return a SRATIONAL [denominator] value from an EXIF tag - - \param tag pointer to an EXIF tag. - \param ind value index [first value has index 0]. - \param ok on completion will contain 0 on failure: any other value on success. - - \return the SRATIONAL [denominator] value - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaExifTagGetValueType, gaiaExifTagGetNumValues - */ - GAIAEXIF_DECLARE int gaiaExifTagGetSignedRational2Value (const - gaiaExifTagPtr tag, - const int ind, - int *ok); - -/** - Return a Signed RATIONAL value from an EXIF tag - - \param tag pointer to an EXIF tag. - \param ind value index [first value has index 0]. - \param ok on completion will contain 0 on failure: any other value on success. - - \return the Signed RATIONAL value - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaExifTagGetValueType, gaiaExifTagGetNumValues - */ - GAIAEXIF_DECLARE double gaiaExifTagGetSignedRationalValue (const - gaiaExifTagPtr - tag, - const int ind, - int *ok); - -/** - Return a FLOAT value from an EXIF tag - - \param tag pointer to an EXIF tag. - \param ind value index [first value has index 0]. - \param ok on completion will contain 0 on failure: any other value on success. - - \return the FLOAT value - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaExifTagGetValueType, gaiaExifTagGetNumValues - */ - GAIAEXIF_DECLARE float gaiaExifTagGetFloatValue (const gaiaExifTagPtr tag, - const int ind, int *ok); - -/** - Return a DOUBLE value from an EXIF tag - - \param tag pointer to an EXIF tag. - \param ind value index [first value has index 0]. - \param ok on completion will contain 0 on failure: any other value on success. - - \return the DOUBLE value - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaExifTagGetValueType, gaiaExifTagGetNumValues - */ - GAIAEXIF_DECLARE double gaiaExifTagGetDoubleValue (const gaiaExifTagPtr tag, - const int ind, int *ok); - -/** - Return a human readable description from an EXIF tag - - \param tag pointer to an EXIF tag. - \param str receiving buffer: the STRING value will be copied here. - \param len length of the receiving buffer - \param ok on completion will contain 0 on failure: any other value on success. - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName - */ - GAIAEXIF_DECLARE void gaiaExifTagGetHumanReadable (const gaiaExifTagPtr tag, - char *str, int len, - int *ok); - -/** - Attempts to guess the actual content-type of some BLOB - - \param blob the BLOB to be parsed - \param size length of the BLOB (in bytes) - - \return the BLOB type: one of GAIA_HEX_BLOB, GAIA_GIF_BLOB, GAIA_PNG_BLOB, - GAIA_JPEG_BLOB, GAIA_EXIF_BLOB, GAIA_EXIF_GPS_BLOB, GAIA_ZIP_BLOB, - GAIA_PDF_BLOB, GAIA_GEOMETRY_BLOB, GAIA_TIFF_BLOB - */ - GAIAEXIF_DECLARE int gaiaGuessBlobType (const unsigned char *blob, - int size); -/** - Return longitude and latitude from an EXIF-GPS tag - - \param blob the BLOB to be parsed - \param size length of the BLOB (in bytes) - \param longitude on success will contain the longitude coordinate - \param latitude on success will contain the latitude coordinate - - \return 0 on failure: any other value on success - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaIsExifGpsTag - */ - GAIAEXIF_DECLARE int gaiaGetGpsCoords (const unsigned char *blob, int size, - double *longitude, double *latitude); -/** - Return a text string representing DMS coordinates from an EXIF-GPS tag - - \param blob the BLOB to be parsed - \param size length of the BLOB (in bytes) - \param latlong receiving buffer: the text string will be copied here. - \param ll_size length of the receiving buffer - - \return 0 on failure: any other value on success - - \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, - gaiaIsExifGpsTag - */ - GAIAEXIF_DECLARE int gaiaGetGpsLatLong (const unsigned char *blob, int size, - char *latlong, int ll_size); - -#ifdef __cplusplus -} -#endif - -#endif /* _GAIAEXIF_H */ diff --git a/src/spatialite/src/headers/spatialite/gaiageo.h b/src/spatialite/src/headers/spatialite/gaiageo.h deleted file mode 100644 index 163f210..0000000 --- a/src/spatialite/src/headers/spatialite/gaiageo.h +++ /dev/null @@ -1,76 +0,0 @@ -/* - gaiageo.h -- Gaia common support for geometries - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Klaus Foerster klaus.foerster@svg.cc - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - - -/** - \file gaiageo.h - - Geometry handling functions and constants - */ - -#ifndef DOXYGEN_SHOULD_SKIP_THIS -/* stdio.h included for FILE objects. */ -#include -#ifdef DLL_EXPORT -#define GAIAGEO_DECLARE __declspec(dllexport) -#else -#define GAIAGEO_DECLARE extern -#endif -#endif - -#ifndef _GAIAGEO_H -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#define _GAIAGEO_H -#endif - -#include "gg_const.h" -#include "gg_structs.h" -#include "gg_core.h" -#include "gg_mbr.h" -#include "gg_formats.h" -#include "gg_dynamic.h" -#include "gg_advanced.h" - -#endif /* _GAIAGEO_H */ diff --git a/src/spatialite/src/headers/spatialite/gg_advanced.h b/src/spatialite/src/headers/spatialite/gg_advanced.h deleted file mode 100644 index 45d1da1..0000000 --- a/src/spatialite/src/headers/spatialite/gg_advanced.h +++ /dev/null @@ -1,1578 +0,0 @@ -/* - gg_advanced.h -- Gaia common support for geometries: advanced - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -/* - -CREDITS: - -this module has been partly funded by: -Regione Toscana - Settore Sistema Informativo Territoriale ed Ambientale -(wrapping liblwgeom APIs) - -*/ - - -/** - \file gg_advanced.h - - Geometry handling functions: advanced - */ - -#ifndef _GG_ADVANCED_H -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#define _GG_ADVANCED_H -#endif - -#define GAIA2GEOS_ALL 0 -#define GAIA2GEOS_ONLY_POINTS 1 -#define GAIA2GEOS_ONLY_LINESTRINGS 2 -#define GAIA2GEOS_ONLY_POLYGONS 3 - -#ifdef __cplusplus -extern "C" -{ -#endif - -#ifndef OMIT_PROJ /* including PROJ.4 */ - -/** - Converts and angle from Radians into Degrees - \param rads the angle measured in Radians. - - \return the angle measured in Degrees. - - \sa gaiaDegsToRads - - \remark \b PROJ.4 support required - */ - GAIAGEO_DECLARE double gaiaRadsToDegs (double rads); - -/** - Converts and angle from Degrees into Radians - \param degs the angle measured in Degrees. - - \return the angle measured in Radians. - - \sa gaiaRadsToDegs - - \remark \b PROJ.4 support required - */ - GAIAGEO_DECLARE double gaiaDegsToRads (double degs); - -/** - Tansforms a Geometry object into a different Reference System - [aka Reprojection] - \param org pointer to input Geometry object. - \param proj_from geodetic parameters string [EPSG format] qualifying the - input Reference System - \param proj_to geodetic parameters string [EPSG format] qualifying the - output Reference System - - \return the pointer to newly created Geometry object: NULL on failure. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, this including any Geometry returned by gaiaGeometryTransform() - - \remark \b PROJ.4 support required - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaTransform (gaiaGeomCollPtr org, - char *proj_from, - char *proj_to); - -#endif /* end including PROJ.4 */ - -#ifndef OMIT_GEOS /* including GEOS */ - -/** - Resets the GEOS error and warning messages to an empty state - - \sa gaiaGetGeosErrorMsg, gaiaGetGeosWarningMsg, gaiaSetGeosErrorMsg, - gaiaSetGeosWarningMsg - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE void gaiaResetGeosMsg (void); - -/** - Return the latest GEOS error message (if any) - - \return the latest GEOS error message: an empty string if no error was - previoysly found. - - \sa gaiaResetGeosMsg, gaiaGetGeosWarningMsg, gaiaSetGeosErrorMsg, - gaiaSetGeosWarningMsg - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE const char *gaiaGetGeosErrorMsg (void); - -/** - Return the latest GEOS warning message (if any) - - \return the latest GEOS warning message: an empty string if no warning was - previoysly found. - - \sa gaiaResetGeosMsg, gaiaGetGeosErrorMsg, gaiaSetGeosErrorMsg, - gaiaSetGeosWarningMsg - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE const char *gaiaGetGeosWarningMsg (void); - -/** - Set the current GEOS error message - - \param msg the error message to be set. - - \sa gaiaResetGeosMsg, gaiaGetGeosErrorMsg, gaiaGetGeosWarningMsg, - gaiaSetGeosWarningMsg - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE void gaiaSetGeosErrorMsg (const char *msg); - -/** - Set the current GEOS warning message - - \param msg the warning message to be set. - - \sa gaiaResetGeosMsg, gaiaGetGeosErrorMsg, gaiaGetGeosWarningMsg, - gaiaSetGeosErrorMsg - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE void gaiaSetGeosWarningMsg (const char *msg); - -/** - Converts a Geometry object into a GEOS Geometry - - \param gaia pointer to Geometry object - - \return handle to GEOS Geometry - - \sa gaiaFromGeos_XY, gaiaFromGeos_XYZ, gaiaFromGeos_XYM, gaiaFromGeos_XYZM, - gaiaToGeosSelective - - \note convenience method, simply defaulting to gaiaToGeos(geom, GAIA2GEOS_ALL) - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE void *gaiaToGeos (const gaiaGeomCollPtr gaia); - -/** - Converts a Geometry object into a GEOS Geometry - - \param gaia pointer to Geometry object - \param mode one of GAIA2GEOS_ALL, GAIA2GEOS_ONLY_POINTS, - GAIA2GEOS_ONLY_LINESTRINGS or GAIA2GEOS_ONLY_POLYGONS - - \return handle to GEOS Geometry - - \sa gaiaFromGeos_XY, gaiaFromGeos_XYZ, gaiaFromGeos_XYM, gaiaFromGeos_XYZM - - \note if the mode argument is not GAIA2GEOS_ALL only elementary geometries - of the selected type will be passed to GEOS, ignoring any other. - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE void *gaiaToGeosSelective (const gaiaGeomCollPtr gaia, - int mode); - -/** - Converts a GEOS Geometry into a Geometry object [XY dims] - - \param geos handle to GEOS Geometry - - \return the pointer to the newly created Geometry object - - \sa gaiaToGeos, gaiaFromGeos_XYZ, gaiaFromGeos_XYM, gaiaFromGeos_XYZM - - \note you are responsible to destroy (before or after) any allocated - Geometry, this including any Geometry returned by gaiaFromGeos_XY() - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromGeos_XY (const void *geos); - -/** - Converts a GEOS Geometry into a Geometry object [XYZ dims] - - \param geos handle to GEOS Geometry - - \return the pointer to the newly created Geometry object - - \sa gaiaToGeos, gaiaFromGeos_XY, gaiaFromGeos_XYM, gaiaFromGeos_XYZM - - \note you are responsible to destroy (before or after) any allocated - Geometry, this including any Geometry returned by gaiaFromGeos_XYZ() - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromGeos_XYZ (const void *geos); - -/** - Converts a GEOS Geometry into a Geometry object [XYM dims] - - \param geos handle to GEOS Geometry - - \return the pointer to the newly created Geometry object - - \sa gaiaToGeos, gaiaFromGeos_XY, gaiaFromGeos_XYZ, gaiaFromGeos_XYZM - - \note you are responsible to destroy (before or after) any allocated - Geometry, this including any Geometry returned by gaiaFromGeos_XYM() - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromGeos_XYM (const void *geos); - -/** - Converts a GEOS Geometry into a Geometry object [XYZM dims] - - \param geos handle to GEOS Geometry - - \return the pointer to the newly created Geometry object - - \sa gaiaToGeos, gaiaFromGeos_XY, gaiaFromGeos_XYZ, gaiaFromGeos_XYM - - \note you are responsible to destroy (before or after) any allocated - Geometry, this including any Geometry returned by gaiaFromGeos_XYZM() - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromGeos_XYZM (const void *geos); - -/** - Checks if a Geometry object represents an OGC Simple Geometry - - \param geom pointer to Geometry object. - - \return 0 if false; any other value if true - - \sa gaiaIsClosed, gaiaIsRing, gaiaIsValid - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaIsSimple (gaiaGeomCollPtr geom); - -/** - Checks if a Linestring object represents an OGC Closed Geometry - - This function only works on a single linestring - if you pass in a multi-line - linestring geometry, it will return 0 (false). See gaiaIsClosedGeom for an - alternative. - - \param line pointer to Linestring object. - - \return 0 if false; any other value if true - - \sa gaiaIsSimple, gaiaIsRing, gaiaIsValid, gaiaIsClosedGeom - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaIsClosed (gaiaLinestringPtr line); - -/** - Checks if a Geometry object represents an OGC Closed Linestring - - \param line pointer to Geometry object. - - \return 0 if false; any other value if true - - \sa gaiaIsSimple, gaiaIsRing, gaiaIsValid, gaiaIsClosed - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaIsClosedGeom (gaiaGeomCollPtr geom); - -/** - Checks if a Linestring object represents an OGC Ring Geometry - - \param line pointer to Geometry object. - - \return 0 if false; any other value if true - - \sa gaiaIsSimple, gaiaIsClosed, gaiaIsValid - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaIsRing (gaiaLinestringPtr line); - -/** - Checks if a Geometry object represents an OGC Valid Geometry - - \param geom pointer to Geometry object. - - \return 0 if false; any other value if true - - \sa gaiaIsSimple, gaiaIsClosed, gaiaIsRing - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaIsValid (gaiaGeomCollPtr geom); - -/** - Measures the total Length for a Geometry object - - \param geom pointer to Geometry object - \param length on completion this variable will contain the measured length - - \return 0 on failure: any other value on success - - \sa gaiaGeomCollArea, gaiaMeasureLength, gaiaGeomCollLengthOrPerimeter - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollLength (gaiaGeomCollPtr geom, - double *length); - -/** - Measures the total Length or Perimeter for a Geometry object - - \param geom pointer to Geometry object - \param perimeter if TRUE only Polygons will be considered, ignoring any Linesting - \n the opposite if FALSE (considering only Linestrings and ignoring any Polygon) - \param length on completion this variable will contain the measured length - or perimeter - - \return 0 on failure: any other value on success - - \sa gaiaGeomCollArea, gaiaMeasureLength, gaiaGeomCollLength - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollLengthOrPerimeter (gaiaGeomCollPtr geom, - int perimeter, - double *length); -/** - Measures the total Area for a Geometry object - - \param geom pointer to Geometry object - \param area on completion this variable will contain the measured area - - \return 0 on failure: any other value on success - - \sa gaiaGeomCollLength, gaiaMeasureArea - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollArea (gaiaGeomCollPtr geom, double *area); - - -/** - Attempts to rearrange a generic Geometry object into a Polygon or MultiPolygon - - \param geom the input Geometry object - \param force_multi if not set to 0, then an eventual Polygon will be - returned casted to MultiPolygon - - \return the pointer to newly created Geometry object representing a - Polygon or MultiPolygon Geometry: NULL on failure. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaPolygonize() - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaPolygonize (gaiaGeomCollPtr geom, - int force_multi); -/** - Spatial relationship evalution: Equals - - \param geom1 the first Geometry object to be evaluated - \param geom2 the second Geometry object to be evaluated - - \return 0 if false: any other value if true - - \sa gaiaGeomCollDisjoint, gaiaGeomCollIntersects, gaiaGeomCollOverlaps, - gaiaGeomCollCrosses, gaiaGeomCollContains, gaiaGeomCollWithin, - gaiaGeomCollTouches, gaiaGeomCollRelate - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollEquals (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2); - -/** - Spatial relationship evalution: Disjoint - - \param geom1 the first Geometry object to be evaluated - \param geom2 the second Geometry object to be evaluated - - \return 0 if false: any other value if true - - \sa gaiaGeomCollEquals, gaiaGeomCollIntersects, gaiaGeomCollOverlaps, - gaiaGeomCollCrosses, gaiaGeomCollContains, gaiaGeomCollWithin, - gaiaGeomCollTouches, gaiaGeomCollRelate - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollDisjoint (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2); - -/** - Spatial relationship evalution: Intesects - - \param geom1 the first Geometry object to be evaluated - \param geom2 the second Geometry object to be evaluated - - \return 0 if false: any other value if true - - \sa gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollOverlaps, - gaiaGeomCollCrosses, gaiaGeomCollContains, gaiaGeomCollWithin, - gaiaGeomCollTouches, gaiaGeomCollRelate - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollIntersects (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2); - -/** - Spatial relationship evalution: Overlaps - - \param geom1 the first Geometry object to be evaluated - \param geom2 the second Geometry object to be evaluated - - \return 0 if false: any other value if true - - \sa gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, - gaiaGeomCollCrosses, gaiaGeomCollContains, gaiaGeomCollWithin, - gaiaGeomCollTouches, gaiaGeomCollRelate - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollOverlaps (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2); - -/** - Spatial relationship evalution: Crosses - - \param geom1 the first Geometry object to be evaluated - \param geom2 the second Geometry object to be evaluated - - \return 0 if false: any other value if true - - \sa gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, - gaiaGeomCollOverlaps, gaiaGeomCollContains, gaiaGeomCollWithin, - gaiaGeomCollTouches, gaiaGeomCollRelate - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollCrosses (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2); - -/** - Spatial relationship evalution: Contains - - \param geom1 the first Geometry object to be evaluated - \param geom2 the second Geometry object to be evaluated - - \return 0 if false: any other value if true - - \sa gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, - gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollWithin, - gaiaGeomCollTouches, gaiaGeomCollRelate - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollContains (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2); - -/** - Spatial relationship evalution: Within - - \param geom1 the first Geometry object to be evaluated - \param geom2 the second Geometry object to be evaluated - - \return 0 if false: any other value if true - - \sa gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, - gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollContains, - gaiaGeomCollTouches, gaiaGeomCollRelate - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollWithin (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2); - -/** - Spatial relationship evalution: Touches - - \param geom1 the first Geometry object to be evaluated - \param geom2 the second Geometry object to be evaluated - - \return 0 if false: any other value if true - - \sa gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, - gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollContains, - gaiaGeomCollWithin, gaiaGeomCollRelate - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollTouches (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2); - -/** - Spatial relationship evalution: Relate - - \param geom1 the first Geometry object to be evaluated - \param geom2 the second Geometry object to be evaluated - \param pattern intersection matrix pattern [DE-9IM] - - \return 0 if false: any other value if true - - \sa gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, - gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollContains, - gaiaGeomCollWithin, gaiaGeomCollTouches - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollRelate (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2, - const char *pattern); - -/** - Calculates the maximum distance intercurring between two Geometry objects - - \param geom1 the first Geometry object - \param geom2 the second Geometry object - \param dist on completion this variable will contain the calculated distance - - \return 0 on failure: any other value on success. - - \sa gaia3DDistance, gaiaMaxDistance, gaia3DMaxDistance - - \note this function always computes the 2D cartesian distance. - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollDistance (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2, - double *dist); - -/** - Spatial operator: Intersection - - \param geom1 the first Geometry object - \param geom2 the second Geometry object - - \return the pointer to newly created Geometry object representing the - geometry Intersection of both input Geometries: NULL on failure. - - \sa gaiaFreeGeomColl, gaiaGeometryUnion, gaiaGeometryDifference, - gaiaGeometrySymDifference, gaiaBoundary - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaGeometryIntersection() - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeometryIntersection (gaiaGeomCollPtr - geom1, - gaiaGeomCollPtr - geom2); - -/** - Spatial operator: Union - - \param geom1 the first Geometry object - \param geom2 the second Geometry object - - \return the pointer to newly created Geometry object representing the - geometry Union of both input Geometries: NULL on failure. - - \sa gaiaFreeGeomColl, gaiaUnaryUnion, gaiaUnionCascaded - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaGeometryUnion() - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeometryUnion (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2); - -/** - Spatial operator: Union Cascaded - - \param geom the input Geometry object. - - \return the pointer to newly created Geometry object: NULL on failure. - \n this function is similar to gaiaUnaryUnion, but it only accepts Polygons and - MultiPolygons and it's now deprecated; anyway it's supported on older GEOS versions. - NULL on failure. - - \sa gaiaFreeGeomColl, gaiaGeometryUnion, gaiaUnionUnion - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaUnionCascaded() - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaUnionCascaded (gaiaGeomCollPtr geom); - -/** - Spatial operator: Difference - - \param geom1 the first Geometry object - \param geom2 the second Geometry object - - \return the pointer to newly created Geometry object representing the - geometry Difference of both input Geometries: NULL on failure. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaGeometryDifference() - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeometryDifference (gaiaGeomCollPtr - geom1, - gaiaGeomCollPtr - geom2); - -/** - Spatial operator: SymDifference - - \param geom1 the first Geometry object - \param geom2 the second Geometry object - - \return the pointer to newly created Geometry object representing the - geometry SymDifference of both input Geometries: NULL on failure. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaGeometrySymDifference() - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeometrySymDifference (gaiaGeomCollPtr - geom1, - gaiaGeomCollPtr - geom2); - -/** - Spatial operator: Boundary - - \param geom the Geometry object to be evaluated - - \return the pointer to newly created Geometry object representing the - geometry Boundary of the input Geometry: NULL on failure. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaBoundary() - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaBoundary (gaiaGeomCollPtr geom); - -/** - Spatial operator: Centroid - - \param geom pointer to Geometry object. - \param x on completion this variable will contain the centroid X coordinate - \param y on completion this variable will contain the centroid Y coordinate - - \return 0 on failure: any other value on success - - \sa gaiaRingCentroid - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollCentroid (gaiaGeomCollPtr geom, double *x, - double *y); - -/** - Spatial operator: PointOnSurface - - \param geom pointer to Geometry object. - \param x on completion this variable will contain the Point X coordinate - \param y on completion this variable will contain the Point Y coordinate - - \return 0 on failure: any other value on success - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE int gaiaGetPointOnSurface (gaiaGeomCollPtr geom, double *x, - double *y); - -/** - Spatial operator: Simplify - - \param geom the input Geometry object - \param tolerance approximation threshold - - \return the pointer to newly created Geometry object representing the - simplified Geometry [applying the Douglas-Peucker algorithm]: NULL on failure. - - \sa gaiaFreeGeomColl, gaiaGeomCollSimplifyPreserveTopology - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaGeomCollSimplify() - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeomCollSimplify (gaiaGeomCollPtr geom, - double tolerance); - -/** - Spatial operator: Simplify [preserving topology] - - \param geom the input Geometry object - \param tolerance approximation threshold - - \return the pointer to newly created Geometry object representing the - simplified Geometry [applying the Douglas-Peucker algorithm]: NULL on failure. - - \sa gaiaFreeGeomColl, gaiaGeomCollSimplify - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaGeomCollSimplify() - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr - gaiaGeomCollSimplifyPreserveTopology (gaiaGeomCollPtr geom, - double tolerance); - -/** - Spatial operator: ConvexHull - - \param geom the input Geometry object - - \return the pointer to newly created Geometry object representing the - ConvexHull of input Geometry: NULL on failure. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaConvexHull() - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaConvexHull (gaiaGeomCollPtr geom); - -/** - Spatial operator: Buffer - - \param geom the input Geometry object - \param radius the buffer's radius - \param points number of points (aka vertices) to be used in order to - approximate a circular arc. - - \return the pointer to newly created Geometry object representing the - Buffer of input Geometry: NULL on failure. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaGeomCollBuffer() - - \remark \b GEOS support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeomCollBuffer (gaiaGeomCollPtr geom, - double radius, - int points); - -#ifndef DOXYGEN_SHOULD_IGNORE_THIS -#ifdef GEOS_ADVANCED -#endif - -/** - Calculates the Hausdorff distance intercurring between two Geometry objects - - \param geom1 pointer to first Geometry object - \param geom2 pointer to second Geometry object - \param dist on completion this variable will contain the calculated Hausdorff - distance - - \return 0 on failure: any other value on success. - - \remark \b GEOS-ADVANCED support required. - */ - GAIAGEO_DECLARE int gaiaHausdorffDistance (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2, - double *dist); - -/** - Spatial operator: Offset Curve - - \param geom the input Geometry object - \param radius the buffer's radius - \param points number of points (aka vertices) to be used in order to - approximate a circular arc. - \param left_right if set to 1 the left-sided OffsetCurve will be returned; - otherwise the right-sided one. - - \return the pointer to newly created Geometry object representing the - OffsetCurve of input Geometry: NULL on failure. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaOffsetCurve() - - \remark \b GEOS-ADVANCED support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaOffsetCurve (gaiaGeomCollPtr geom, - double radius, int points, - int left_right); - -/** - Spatial operator: Single Sided Buffer - - \param geom the input Geometry object - \param radius the buffer's radius - \param points number of points (aka vertices) to be used in order to - approximate a circular arc. - \param left_right if set to 1 the left-sided Buffer will be returned; - otherwise the right-sided one. - - \return the pointer to newly created Geometry object representing the - single-sided Buffer of input Geometry: NULL on failure. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaSingleSidedBuffer() - - \remark \b GEOS-ADVANCED support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSingleSidedBuffer (gaiaGeomCollPtr geom, - double radius, - int points, - int left_right); - -/** - Spatial operator: Shared Paths - - \param geom1 pointer to first Geometry object - \param geom2 pointer to second Geometry object - - \return the pointer to newly created Geometry object representing any - Share Path common to both input geometries: NULL on failure. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaSharedPaths() - - \remark \b GEOS-ADVANCED support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSharedPaths (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2); - -/** - Spatial operator: Line Interpolate Point - - \param ln_geom the input Geometry object [expected to be of lineal type] - \param fraction total length fraction [in the range 0.0 / 1.0] - - \return the pointer to newly created Geometry object representing a Point - laying on the input Geometry and positioned at the given length fraction: - NULL on failure. - - \sa gaiaLineInterpolateEquidistantPoints - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaLineInterpolatePoint() - - \remark \b GEOS-ADVANCED support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaLineInterpolatePoint (gaiaGeomCollPtr - ln_geom, - double fraction); - -/** - Spatial operator: Line Interpolate Equidistant Points - - \param ln_geom the input Geometry object [expected to be of lineal type] - \param distance regular distance between interpolated points - - \return the pointer to newly created Geometry object representing a MultiPoint; - such MultiPoint always supports the M coordinate (the corresponding value - representing the progressive distance for each interpolated Point). - individual Points will be regularly spaced by the given distance: - NULL on failure. - - \sa gaiaLineInterpolatePoint - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaLineInterpolateEquidistantPoints() - - \remark \b GEOS-ADVANCED support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr - gaiaLineInterpolateEquidistantPoints (gaiaGeomCollPtr ln_geom, - double distance); - -/** - Spatial operator: Line Substring - - \param ln_geom the input Geometry object [expected to be of lineal type] - \param start_fraction substring start, expressed as total length fraction - [in the range 0.0 / 1.0] - \param end_fraction substring end, expressed as total length fraction - - \return the pointer to newly created Geometry object representing a Linestring - laying on the input Geometry. - \n this Linestring will begin (and stop) at given total length fractions. - NULL on failure. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaLineSubstring() - - \remark \b GEOS-ADVANCED support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaLineSubstring (gaiaGeomCollPtr ln_geom, - double start_fraction, - double end_fraction); - -/** - Spatial operator: Shortest Line - - \param geom1 pointer to the first Geometry object. - \param geom2 pointer to the second Geometry object. - - \return the pointer to newly created Geometry object representing a Linestring; - NULL on failure. - \n the returned Linestring graphically represents the minimum distance - intercurrinng between both input geometries. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaShortestLine() - - \remark \b GEOS-ADVANCED support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaShortestLine (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2); - -/** - Spatial operator: Shortest Line - - \param geom1 pointer to the first Geometry object. - \param geom2 pointer to the second Geometry object. - \param tolerance approximation factor - - \return the pointer to newly created Geometry object; NULL on failure. - \n the returned Geometry represents the first input Geometry (nicely - \e snapped to the second input Geometry, whenever is possible). - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaShortestLine() - - \remark \b GEOS-ADVANCED support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSnap (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2, - double tolerance); - -/** - Spatial operator: Line Merge - - \param geom pointer to input Geometry object. - - \return the pointer to newly created Geometry object; NULL on failure. - \n if possible, this representing a reassembled Linestring or MultiLinestring. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaLineMerge() - - \remark \b GEOS-ADVANCED support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaLineMerge (gaiaGeomCollPtr geom); - -/** - Spatial operator: Line Cut At Nodes - - \param geom1 pointer to input Geometry object [Linestring or MultiLinestring]. - \param geom2 pointer to input Geometry object [Point or MultiPoint]. - - \return the pointer to newly created Geometry object; NULL on failure. - \n if possible, any input Linestring will be split accordingly to given Node(s): - no point will be interpolated, existing Linestring Vertices will be evaluated. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaLinesCutAtNodes() - - \remark \b GEOS-ADVANCED support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaLinesCutAtNodes (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2); - -/** - Spatial operator: Unary Union - - \param geom the input Geometry object. - - \return the pointer to newly created Geometry object: NULL on failure. - \n this function is the same as gaiaGeometryUnion, except in that this - works internally to the input Geometry itself. - NULL on failure. - - \sa gaiaFreeGeomColl, gaiaGeometryUnion, gaiaUnionCascaded - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaUnaryUnion() - - \remark \b GEOS-ADVANCED support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaUnaryUnion (gaiaGeomCollPtr geom); - -/** - Determines the location of the closest Point on Linestring to the given Point - - \param ln_geom pointer to first input Geometry object [expected to be of - the lineal type]. - \param pt_geom pointer to second input Geometry object [expected to be a - Point]. - - \return the fraction [in the range 0.0 / 1.0] of ln_geom total length - where the closest Point to pt_geom lays. - - \remark \b GEOS-ADVANCED support required. - */ - GAIAGEO_DECLARE double gaiaLineLocatePoint (gaiaGeomCollPtr ln_geom, - gaiaGeomCollPtr pt_geom); - -/** - Topology check: test if a Geometry covers another one - - \param geom1 pointer to first input Geometry object. - \param geom2 pointer to second input Geometry object. - - \return 0 if false; any other value if geom1 \e spatially \e covers geom2. - - \sa gaiaGeomCollCoveredBy - - \remark \b GEOS-ADVANCED support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollCovers (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2); - -/** - Topology check: test if a Geometry is covered by another one - - \param geom1 pointer to first input Geometry object. - \param geom2 pointer to second input Geometry object. - - \return 0 if false; any other value if geom2 is \e spatially \e covered \e by - geom1. - - \sa gaiaGeomCollCovers - - \remark \b GEOS-ADVANCED support required. - */ - GAIAGEO_DECLARE int gaiaGeomCollCoveredBy (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2); - -/** - Utility function: SquareGrid - - \param geom the Geometry to be covered by the Grid. - \param origin_x the X ccordinate identifying the Grid Origin. - \param origin_y the Y coordinate identifiying the Grid Origin. - \param size the Grid cell-side size. - \param only_edges if non-zero will return a MULTILINESTRING, otherwise it will - return a MULTIPOLYGON containing square POLYGONs. - - \return the pointer to newly created Geometry object: NULL on failure. - \n this function will always return a MultiPolygon - \n NULL will be returned if any argument is invalid. - - \sa gaiaFreeGeomColl, gaiaTriangularGrid, gaiaHexagonalGrid - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaSquareGrid() - - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSquareGrid (gaiaGeomCollPtr geom, - double origin_x, - double origin_y, - double size, - int only_edges); - -/** - Utility function: TriangularGrid - - \param geom the Geometry to be covered by the Grid. - \param origin_x the X ccordinate identifying the Grid Origin. - \param origin_y the Y coordinate identifiying the Grid Origin. - \param size the Grid cell-side size. - \param only_edges if non-zero will return a MULTILINESTRING, otherwise it will - return a MULTIPOLYGON containing triangular POLYGONs. - - \return the pointer to newly created Geometry object: NULL on failure. - \n this function will always return a MultiPolygon - \n NULL will be returned if any argument is invalid. - - \sa gaiaFreeGeomColl, gaiaSquareGrid, gaiaHexagonalGrid - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaTriangularGrid() - - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaTriangularGrid (gaiaGeomCollPtr geom, - double origin_x, - double origin_y, - double size, - int only_edges); - -/** - Utility function: HexagonalGrid - - \param geom the Geometry to be covered by the Grid. - \param origin_x the X ccordinate identifying the Grid Origin. - \param origin_y the Y coordinate identifiying the Grid Origin. - \param size the Grid cell-side size. - \param only_edges if non-zero will return a MULTILINESTRING, otherwise it will - return a MULTIPOLYGON containing hexagonal POLYGONs. - - \return the pointer to newly created Geometry object: NULL on failure. - \n this function will always return a MultiPolygon - \n NULL will be returned if any argument is invalid. - - \sa gaiaFreeGeomColl, gaiaSquareGrid, gaiaTriangularGrid - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaHexagonalGrid() - - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaHexagonalGrid (gaiaGeomCollPtr geom, - double origin_x, - double origin_y, - double size, - int only_edges); - -#endif /* end GEOS advanced features */ - -#ifndef DOXYGEN_SHOULD_IGNORE_THIS -#ifdef GEOS_TRUNK -#endif - -/** - Delaunay Triangulation - - \param geom pointer to input Geometry object. - \param tolerance optional snapping tolerance. - \param only_edges if non-zero will return a MULTILINESTRING, otherwise it will - return a MULTIPOLYGON containing triangular POLYGONs. - - \return the pointer to newly created Geometry object: NULL on failure. - \n NULL will be returned if any argument is invalid. - - \sa gaiaFreeGeomColl, gaiaVoronojDiagram, gaiaConcaveHull - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaDelaunayTriangulation() - - \remark \b GEOS-TRUNK support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaDelaunayTriangulation (gaiaGeomCollPtr - geom, - double tolerance, - int only_edges); - -/** - Voronoj Diagram - - \param geom pointer to input Geometry object. - \param extra_frame_size percent factor expanding the BBOX of input Geometry - \param tolerance optional snapping tolerance. - \param only_edges if non-zero will return a MULTILINESTRING, otherwise it will - return a MULTIPOLYGON. - - \return the pointer to newly created Geometry object: NULL on failure. - \n NULL will be returned if any argument is invalid. - - \sa gaiaFreeGeomColl, gaiaDelaunayTriangulation - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaVoronojDiagram() - - \remark \b GEOS-TRUNK support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaVoronojDiagram (gaiaGeomCollPtr geom, - double extra_frame_size, - double tolerance, - int only_edges); - -/** - Concave Hull - - \param geom pointer to input Geometry object. - \param factor multiplier used for filtering Delaunay triangles: please read the note. - \param tolerance optional snapping tolerance. - \param allow_hows if FALSE any interior hole will be suppressed. - - \return the pointer to newly created Geometry object (always of the Polygon type): - NULL on failure. - \n NULL will be returned if any argument is invalid. - - \sa gaiaFreeGeomColl, gaiaDelaunayTriangulation - - \note This function will first create the Delauany Triangulation corresponding - to input Geometry, determining at the same time the \b standard \b deviation - for all edge's lengths. - \n Then in a second pass all Delaunay's triangles will be filtered, and all - triangles presenting at least one edge longer than \b standard \b deviation - \b * \b factor will be discarded. - \n All filtered triangles will then be merged altogether so to create the Concave Hull. - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaConcaveHull() - - \remark \b GEOS-TRUNK support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaConcaveHull (gaiaGeomCollPtr geom, - double factor, - double tolerance, - int allow_holes); - -#endif /* end GEOS experimental features */ - -#ifndef DOXYGEN_SHOULD_IGNORE_THIS -#ifdef ENABLE_LWGEOM -#endif - -/** - Utility function: MakeValid - - \param geom the input Geometry object. - - \return the pointer to newly created Geometry object: NULL on failure. - \n this function will attempt to create a valid representation of a given - invalid geometry without loosing any of the input vertices. - \n Already-valid geometries are returned without further intervention. - \n NULL will be returned if the passed argument is invalid. - - \sa gaiaFreeGeomColl, gaiaMakeValidDiscarded - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaMakeValid() - - \remark \b LWGEOM support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMakeValid (gaiaGeomCollPtr geom); - -/** - Utility function: MakeValidDiscarded - - \param geom the input Geometry object. - - \return the pointer to newly created Geometry object: NULL on failure. - \n this function will attempt to collect any invalid item (offending - geometries) discarded by gaiaMakeValid while building a valid Geometry. - \n Saving any discarded item could be useful for a finer (manual) adjustment. - \n NULL will be returned if gaiaMakeValid hasn't identified any offending item - to be discarded during the validation. - - \sa gaiaFreeGeomColl, gaiaMakeValid - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaMakeValidDiscarded() - - \remark \b LWGEOM support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMakeValidDiscarded (gaiaGeomCollPtr - geom); - -/** - Utility function: Segmentize - - \param geom the input Geometry object. - \param dist the meximum segment length. - - \return the pointer to newly created Geometry object: NULL on failure. - \n this function will return a modified geometry having no segment longer than the given distance. - \n Distance computation is performed in 2d only. - \n all Points or segments shorter than 'dist' will be returned without further intervention. - \n NULL will be returned if the passed argument is invalid. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaSegmentize() - - \remark \b LWGEOM support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSegmentize (gaiaGeomCollPtr geom, - double dist); - -/** - Utility function: Azimuth - - \param xa the X ccordinate of PointA. - \param ya the Y coordinate of PointA. - \param xb the X ccordinate of PointB. - \param yb the Y coordinate of PointB. - \param azimuth on completion this variable will contain the angle in radians from - the horizontal of the vector defined by pointA and pointB. - \n Angle is computed clockwise from down-to-up: on the clock: 12=0; 3=PI/2; 6=PI; 9=3PI/2. - - \return 0 on failure: any other value on success - - \remark \b LWGEOM support required. - */ - GAIAGEO_DECLARE int gaiaAzimuth (double xa, double ya, double xb, - double yb, double *azimuth); - -/** - Utility function: GeoHash - - \param geom the input geometry. - \param precision the expected precision: if <= 0 will be automatically determined. - - \return NULL on failure: a null-terminated text string on success - - \note you are responsible to free (before or after) any text string returned - by gaiaGeoHash() - - \remark \b LWGEOM support required. - */ - GAIAGEO_DECLARE char *gaiaGeoHash (gaiaGeomCollPtr geom, int precision); - -/** - Utility function: AsX3D - - \param geom the input geometry. - \param srs the WKT SRS definition. - \param precision the expected precision (coord decimal digits). - \param options - \param refid the X3D namespace - - \return NULL on failure: a null-terminated text string on success - - \note you are responsible to free (before or after) any text string returned - by gaiaAsX3D() - - \remark \b LWGEOM support required. - */ - GAIAGEO_DECLARE char *gaiaAsX3D (gaiaGeomCollPtr geom, const char *srs, - int precision, int options, - const char *defid); - -/** - Calculates the minimum 3D distance intercurring between two Geometry objects - - \param geom1 the first Geometry object - \param geom2 the second Geometry object - \param dist on completion this variable will contain the calculated distance - - \return 0 on failure: any other value on success. - - \sa gaiaGeomCollDistance, gaiaMaxDistance, gaia3DMaxDisance - - \note this function computes the 3D cartesian distance (if Z is supported) - - \remark \b LWGEOM support required. - */ - GAIAGEO_DECLARE int gaia3DDistance (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2, double *dist); - -/** - Calculates the maximum 2D distance intercurring between two Geometry objects - - \param geom1 the first Geometry object - \param geom2 the second Geometry object - \param dist on completion this variable will contain the calculated distance - - \return 0 on failure: any other value on success. - - \sa gaiaGeomCollDistance, gaia3DDistance, gaia3DMaxDistance - - \note this function computes the 2D maximum cartesian distance (Z is always ignored) - - \remark \b LWGEOM support required. - */ - GAIAGEO_DECLARE int gaiaMaxDistance (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2, double *dist); - -/** - Calculates the maximum 3D distance intercurring between two Geometry objects - - \param geom1 the first Geometry object - \param geom2 the second Geometry object - \param dist on completion this variable will contain the calculated distance - - \return 0 on failure: any other value on success. - - \sa gaiaGeomCollDistance, gaia3DDistance, gaiaMaxDistance - - \note this function computes the 3D maximum cartesian distance (if Z is supported) - - \remark \b LWGEOM support required. - */ - GAIAGEO_DECLARE int gaia3DMaxDistance (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2, double *dist); - -/** - Utility function: Split - - \param input the input Geometry object. - \param blade the blade Geometry object. - - \return the pointer to newly created Geometry object: NULL on failure. - \n The function supports splitting a line by point, a line by line, a polygon by line. - - \sa gaiaFreeGeomColl, gaiaSplitLeft, gaiaSplitRight - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaSplit() - - \note gaiaSplit will return both the \b left and the \b right split halves at the same time. - - \remark \b LWGEOM support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSplit (gaiaGeomCollPtr input, - gaiaGeomCollPtr blade); - -/** - Utility function: SplitLeft - - \param input the input Geometry object. - \param blade the blade Geometry object. - - \return the pointer to newly created Geometry object: NULL on failure. - \n The function supports splitting a line by point, a line by line, a polygon by line. - - \sa gaiaFreeGeomColl, gaiaSplit, gaiaSplitRight - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaSplitLeft() - - \note gaiaSplitLeft will only return the \b left split half; NULL may be eventually - returned if empty. - - \remark \b LWGEOM support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSplitLeft (gaiaGeomCollPtr input, - gaiaGeomCollPtr blade); - -/** - Utility function: SplitRight - - \param input the input Geometry object. - \param blade the blade Geometry object. - - \return the pointer to newly created Geometry object: NULL on failure. - \n The function supports splitting a line by point, a line by line, a polygon by line. - - \sa gaiaFreeGeomColl, gaiaSplit, gaiaSplitLeft - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaSplitRight() - - \note gaiaSplitLeft will only return the \b right split half; NULL may be eventually - returned if empty. - - \remark \b LWGEOM support required. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSplitRight (gaiaGeomCollPtr input, - gaiaGeomCollPtr blade); - - -#endif /* end LWGEOM support */ - -#endif /* end including GEOS */ - -/** - Utility function: SnapToGrid - - \param origin_x the X ccordinate identifying the Grid Origin. - \param origin_y the Y coordinate identifiying the Grid Origin. - \param size_x Grid cell size (X axis). - \param size_y Grid cell size (Y axis). - \param size_z Grid cell size (Z axis). - \param size_m Grid cell size (M axis). - - \return the pointer to newly created Geometry object: NULL on failure. - \n this function will return a modified geometry having all points snapped to a regular Grid - defined by its origin and cell size. - \n Consecutive points falling on the same cell will be removed, eventually returning NULL if - \n output points are not enough to define a geometry of the given type. - \n Collapsed geometries in a collection are stripped from it. - \n Specify 0 as size for any dimension you don't want to snap to a grid. - \n NULL will be returned if the passed argument is invalid. - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry returned by gaiaSnapToGrid() - - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSnapToGrid (gaiaGeomCollPtr geom, - double origin_x, - double origin_y, - double origin_z, - double origin_m, - double size_x, - double size_y, - double size_z, - double size_m); - -#ifdef __cplusplus -} -#endif - -#endif /* _GG_ADVANCED_H */ diff --git a/src/spatialite/src/headers/spatialite/gg_const.h b/src/spatialite/src/headers/spatialite/gg_const.h deleted file mode 100644 index 4665eba..0000000 --- a/src/spatialite/src/headers/spatialite/gg_const.h +++ /dev/null @@ -1,573 +0,0 @@ -/* - gg_const.h -- Gaia common support for geometries: constants - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Klaus Foerster klaus.foerster@svg.cc - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - - -/** - \file gg_const.h - - Geometry constants and macros - */ - -#ifndef _GG_CONST_H -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#define _GG_CONST_H -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* constant values for getVectorLayersList modes */ - -/** mode: FAST */ -#define GAIA_VECTORS_LIST_FAST 0 - -/** mode: OPTIMISTIC */ -#define GAIA_VECTORS_LIST_OPTIMISTIC 1 - -/** mode: PESSIMISTIC */ -#define GAIA_VECTORS_LIST_PESSIMISTIC 2 - -/* constant values for Vector Layer Types */ - -/** Vector Layer: unknown type */ -#define GAIA_VECTOR_UNKNOWN -1 -/** Vector Layer: Spatial Table */ -#define GAIA_VECTOR_TABLE 1 -/** Vector Layer: Spatial View */ -#define GAIA_VECTOR_VIEW 2 -/** Vector Layer: Virtual Shape */ -#define GAIA_VECTOR_VIRTUAL 3 - -/* constant values for Vector Layer Geometry Types */ - -/** Vector Layer Geometry: Geometry */ -#define GAIA_VECTOR_GEOMETRY 0 -/** Vector Layer Geometry: Point */ -#define GAIA_VECTOR_POINT 1 -/** Vector Layer Geometry: Linestring */ -#define GAIA_VECTOR_LINESTRING 2 -/** Vector Layer Geometry: Polygon */ -#define GAIA_VECTOR_POLYGON 3 -/** Vector Layer Geometry: MultiPoint */ -#define GAIA_VECTOR_MULTIPOINT 4 -/** Vector Layer Geometry: MultiLinestring */ -#define GAIA_VECTOR_MULTILINESTRING 5 -/** Vector Layer Geometry: MultiPolygon */ -#define GAIA_VECTOR_MULTIPOLYGON 6 -/** Vector Layer Geometry: GeometryCollection */ -#define GAIA_VECTOR_GEOMETRYCOLLECTION 7 - -/* constant values for Spatial Index */ - -/** Vector Layer: no Spatial Index */ -#define GAIA_SPATIAL_INDEX_NONE 0 -/** Vector Layer: Spatial Index RTree */ -#define GAIA_SPATIAL_INDEX_RTREE 1 -/** Vector Layer: Spatial Index MbrCache */ -#define GAIA_SPATIAL_INDEX_MBRCACHE 2 - -/* constant values for generic geometry classes */ - -/** WKT parser: unknown Geometry type */ -#define GAIA_TYPE_NONE 0 -/** WKT parser: Point Geometry type */ -#define GAIA_TYPE_POINT 1 -/** WKT parser: Linestring Geometry type */ -#define GAIA_TYPE_LINESTRING 2 -/** WKT parser: Polygon Geometry type */ -#define GAIA_TYPE_POLYGON 3 - -/* constants that defines byte storage order */ -/** Big-Endian marker */ -#define GAIA_BIG_ENDIAN 0 -/** Little-Endian marker */ -#define GAIA_LITTLE_ENDIAN 1 - -/* constants that defines special markers used for encoding of SpatiaLite internal BLOB geometries */ -/** BLOB-Geometry internal marker: START */ -#define GAIA_MARK_START 0x00 -/** BLOB-Geometry internal marker: END */ -#define GAIA_MARK_END 0xFE -/** BLOB-Geometry internal marker: MBR */ -#define GAIA_MARK_MBR 0x7C -/** BLOB-Geometry internal marker: ENTITY */ -#define GAIA_MARK_ENTITY 0x69 - -/* constants that defines GEOMETRY CLASSes */ -/** BLOB-Geometry CLASS: unknown */ -#define GAIA_UNKNOWN 0 -/** BLOB-Geometry CLASS: POINT */ -#define GAIA_POINT 1 -/** BLOB-Geometry CLASS: LINESTRING */ -#define GAIA_LINESTRING 2 -/** BLOB-Geometry CLASS: POLYGON */ -#define GAIA_POLYGON 3 -/** BLOB-Geometry CLASS: MULTIPOINT */ -#define GAIA_MULTIPOINT 4 -/** BLOB-Geometry CLASS: MULTILINESTRING */ -#define GAIA_MULTILINESTRING 5 -/** BLOB-Geometry CLASS: MULTIPOLYGON */ -#define GAIA_MULTIPOLYGON 6 -#define GAIA_MULTIPOLYGON 6 -/** BLOB-Geometry CLASS: GEOMETRYCOLLECTION */ -#define GAIA_GEOMETRYCOLLECTION 7 -/** BLOB-Geometry CLASS: POINT Z */ -#define GAIA_POINTZ 1001 -/** BLOB-Geometry CLASS: LINESTRING Z */ -#define GAIA_LINESTRINGZ 1002 -/** BLOB-Geometry CLASS: POLYGON Z */ -#define GAIA_POLYGONZ 1003 -/** BLOB-Geometry CLASS: MULTIPOINT Z */ -#define GAIA_MULTIPOINTZ 1004 -/** BLOB-Geometry CLASS: MULTILINESTRING Z */ -#define GAIA_MULTILINESTRINGZ 1005 -/** BLOB-Geometry CLASS: MULTIPOLYGON Z */ -#define GAIA_MULTIPOLYGONZ 1006 -/** BLOB-Geometry CLASS: GEOMETRYCOLLECTION Z */ -#define GAIA_GEOMETRYCOLLECTIONZ 1007 -/** BLOB-Geometry CLASS: POINT M */ -#define GAIA_POINTM 2001 -/** BLOB-Geometry CLASS: LINESTRING M */ -#define GAIA_LINESTRINGM 2002 -/** BLOB-Geometry CLASS: POLYGON M */ -#define GAIA_POLYGONM 2003 -/** BLOB-Geometry CLASS: MULTIPOINT M */ -#define GAIA_MULTIPOINTM 2004 -/** BLOB-Geometry CLASS: MULTILINESTRING M */ -#define GAIA_MULTILINESTRINGM 2005 -/** BLOB-Geometry CLASS: MULTIPOLYGON M */ -#define GAIA_MULTIPOLYGONM 2006 -/** BLOB-Geometry CLASS: GEOMETRYCOLLECTION M */ -#define GAIA_GEOMETRYCOLLECTIONM 2007 -/** BLOB-Geometry CLASS: POINT ZM */ -#define GAIA_POINTZM 3001 -/** BLOB-Geometry CLASS: LINESTRING ZM */ -#define GAIA_LINESTRINGZM 3002 -/** BLOB-Geometry CLASS: POLYGON ZM */ -#define GAIA_POLYGONZM 3003 -/** BLOB-Geometry CLASS: MULTIPOINT ZM */ -#define GAIA_MULTIPOINTZM 3004 -/** BLOB-Geometry CLASS: MULTILINESTRING ZM */ -#define GAIA_MULTILINESTRINGZM 3005 -/** BLOB-Geometry CLASS: MULTIPOLYGON ZM */ -#define GAIA_MULTIPOLYGONZM 3006 -/** BLOB-Geometry CLASS: GEOMETRYCOLLECTION ZM */ -#define GAIA_GEOMETRYCOLLECTIONZM 3007 - -/* constants that defines Compressed GEOMETRY CLASSes */ -/** BLOB-Geometry CLASS: compressed LINESTRING */ -#define GAIA_COMPRESSED_LINESTRING 1000002 -/** BLOB-Geometry CLASS: compressed POLYGON */ -#define GAIA_COMPRESSED_POLYGON 1000003 -/** BLOB-Geometry CLASS: compressed LINESTRING Z */ -#define GAIA_COMPRESSED_LINESTRINGZ 1001002 -/** BLOB-Geometry CLASS: compressed POLYGON Z */ -#define GAIA_COMPRESSED_POLYGONZ 1001003 -/** BLOB-Geometry CLASS: compressed LINESTRING M */ -#define GAIA_COMPRESSED_LINESTRINGM 1002002 -/** BLOB-Geometry CLASS: compressed POLYGON M */ -#define GAIA_COMPRESSED_POLYGONM 1002003 -/** BLOB-Geometry CLASS: compressed LINESTRING ZM */ -#define GAIA_COMPRESSED_LINESTRINGZM 1003002 -/** BLOB-Geometry CLASS: compressed POLYGON ZM */ -#define GAIA_COMPRESSED_POLYGONZM 1003003 - -/* constants that defines GEOS-WKB 3D CLASSes */ -/** GEOS-WKB 3D CLASS: POINT Z */ -#define GAIA_GEOSWKB_POINTZ -2147483647 -/** GEOS-WKB 3D CLASS: LINESTRING Z */ -#define GAIA_GEOSWKB_LINESTRINGZ -2147483646 -/** GEOS-WKB 3D CLASS: POLYGON Z */ -#define GAIA_GEOSWKB_POLYGONZ -2147483645 -/** GEOS-WKB 3D CLASS: MULTIPOINT Z */ -#define GAIA_GEOSWKB_MULTIPOINTZ -2147483644 -/** GEOS-WKB 3D CLASS: MULTILINESTRING Z */ -#define GAIA_GEOSWKB_MULTILINESTRINGZ -2147483643 -/** GEOS-WKB 3D CLASS: MULTIPOLYGON Z */ -#define GAIA_GEOSWKB_MULTIPOLYGONZ -2147483642 -/** GEOS-WKB 3D CLASS: POINT Z */ -#define GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ -2147483641 - -/* constants that defines multitype values */ -/** DBF data type: NULL */ -#define GAIA_NULL_VALUE 0 -/** DBF data type: TEXT */ -#define GAIA_TEXT_VALUE 1 -/** DBF data type: INT */ -#define GAIA_INT_VALUE 2 -/** DBF data type: DOUBLE */ -#define GAIA_DOUBLE_VALUE 3 - -/* constants that defines POINT index for LINESTRING */ -/** Linestring/Ring functions: START POINT */ -#define GAIA_START_POINT 1 -/** Linestring/Ring functions: END POINT */ -#define GAIA_END_POINT 2 -/** Linestring/Ring functions: POINTN */ -#define GAIA_POINTN 3 - -/* constants that defines MBRs spatial relationships */ -/** MBR relationships: CONTAINS */ -#define GAIA_MBR_CONTAINS 1 -/** MBR relationships: DISJOINT */ -#define GAIA_MBR_DISJOINT 2 -/** MBR relationships: EQUAL */ -#define GAIA_MBR_EQUAL 3 -/** MBR relationships: INTERSECTS */ -#define GAIA_MBR_INTERSECTS 4 -/** MBR relationships: OVERLAP */ -#define GAIA_MBR_OVERLAPS 5 -/** MBR relationships: TOUCHES */ -#define GAIA_MBR_TOUCHES 6 -/** MBR relationships: WITHIN */ -#define GAIA_MBR_WITHIN 7 - -/* constants used for FilterMBR */ -/** FilerMBR relationships: WITHIN */ -#define GAIA_FILTER_MBR_WITHIN 74 -/** FilerMBR relationships: CONTAINS */ -#define GAIA_FILTER_MBR_CONTAINS 77 -/** FilerMBR relationships: INTERSECTS */ -#define GAIA_FILTER_MBR_INTERSECTS 79 -/** FilerMBR relationships: DECLARE */ -#define GAIA_FILTER_MBR_DECLARE 89 - -/* constants defining SVG default values */ -/** SVG precision: RELATIVE */ -#define GAIA_SVG_DEFAULT_RELATIVE 0 -/** SVG precision: DEFAULT */ -#define GAIA_SVG_DEFAULT_PRECISION 6 -/** SVG precision: MAX */ -#define GAIA_SVG_DEFAULT_MAX_PRECISION 15 - -/* constants used for VirtualNetwork */ -/** VirtualNetwork internal markers: START */ -#define GAIA_NET_START 0x67 -/** VirtualNetwork internal markers: 64 bit START */ -#define GAIA_NET64_START 0x68 -/** VirtualNetwork internal markers: A-Stat START */ -#define GAIA_NET64_A_STAR_START 0x69 -/** VirtualNetwork internal markers: END */ -#define GAIA_NET_END 0x87 -/** VirtualNetwork internal markers: HEADER */ -#define GAIA_NET_HEADER 0xc0 -/** VirtualNetwork internal markers: CODE */ -#define GAIA_NET_CODE 0xa6 -/** VirtualNetwork internal markers: ID */ -#define GAIA_NET_ID 0xb5 -/** VirtualNetwork internal markers: NODE */ -#define GAIA_NET_NODE 0xde -/** VirtualNetwork internal markers: ARC */ -#define GAIA_NET_ARC 0x54 -/** VirtualNetwork internal markers: TABLE */ -#define GAIA_NET_TABLE 0xa0 -/** VirtualNetwork internal markers: FROM */ -#define GAIA_NET_FROM 0xa1 -/** VirtualNetwork internal markers: TO */ -#define GAIA_NET_TO 0xa2 -/** VirtualNetwork internal markers: GEOM */ -#define GAIA_NET_GEOM 0xa3 -/** VirtualNetwork internal markers: NAME */ -#define GAIA_NET_NAME 0xa4 -/** VirtualNetwork internal markers: COEFF */ -#define GAIA_NET_A_STAR_COEFF 0xa5 -/** VirtualNetwork internal markers: BLOCK */ -#define GAIA_NET_BLOCK 0xed - -/* constants used for Coordinate Dimensions */ -/** Coordinate Dimensions: XY */ -#define GAIA_XY 0x00 -/** Coordinate Dimensions: XYZ */ -#define GAIA_XY_Z 0x01 -/** Coordinate Dimensions: XYM */ -#define GAIA_XY_M 0x02 -/** Coordinate Dimensions: XYZM */ -#define GAIA_XY_Z_M 0x03 - -/* constants used for length unit conversion */ -/** Length unit conversion: Kilometer */ -#define GAIA_KM 0 -/** Length unit conversion: Meter */ -#define GAIA_M 1 -/** Length unit conversion: Decimeter */ -#define GAIA_DM 2 -/** Length unit conversion: Centimeter */ -#define GAIA_CM 3 -/** Length unit conversion: Millimeter */ -#define GAIA_MM 4 -/** Length unit conversion: International Nautical Mile */ -#define GAIA_KMI 5 -/** Length unit conversion: Inch */ -#define GAIA_IN 6 -/** Length unit conversion: Feet */ -#define GAIA_FT 7 -/** Length unit conversion: Yard */ -#define GAIA_YD 8 -/** Length unit conversion: Mile */ -#define GAIA_MI 9 -/** Length unit conversion: Fathom */ -#define GAIA_FATH 10 -/** Length unit conversion: Chain */ -#define GAIA_CH 11 -/** Length unit conversion: Link */ -#define GAIA_LINK 12 -/** Length unit conversion: US Inch */ -#define GAIA_US_IN 13 -/** Length unit conversion: US Feet */ -#define GAIA_US_FT 14 -/** Length unit conversion: US Yard */ -#define GAIA_US_YD 15 -/** Length unit conversion: US Chain */ -#define GAIA_US_CH 16 -/** Length unit conversion: US Mile */ -#define GAIA_US_MI 17 -/** Length unit conversion: Indian Yard */ -#define GAIA_IND_YD 18 -/** Length unit conversion: Indian Feet */ -#define GAIA_IND_FT 19 -/** Length unit conversion: Indian Chain */ -#define GAIA_IND_CH 20 -/** Length unit conversion: MIN */ -#define GAIA_MIN_UNIT GAIA_KM -/** Length unit conversion: MAX */ -#define GAIA_MAX_UNIT GAIA_IND_CH - -/* constants used for SHAPES */ -/** SHP shape: unknown */ -#define GAIA_SHP_NULL 0 -/** SHP shape: POINT */ -#define GAIA_SHP_POINT 1 -/** SHP shape: POLYLINE */ -#define GAIA_SHP_POLYLINE 3 -/** SHP shape: POLYGON */ -#define GAIA_SHP_POLYGON 5 -/** SHP shape: MULTIPOINT */ -#define GAIA_SHP_MULTIPOINT 8 -/** SHP shape: POINT Z */ -#define GAIA_SHP_POINTZ 11 -/** SHP shape: POLYLINE Z */ -#define GAIA_SHP_POLYLINEZ 13 -/** SHP shape: POLYGON Z */ -#define GAIA_SHP_POLYGONZ 15 -/** SHP shape: MULTIPOINT Z */ -#define GAIA_SHP_MULTIPOINTZ 18 -/** SHP shape: POINT M */ -#define GAIA_SHP_POINTM 21 -/** SHP shape: POLYLINE M */ -#define GAIA_SHP_POLYLINEM 23 -/** SHP shape: POLYGON M */ -#define GAIA_SHP_POLYGONM 25 -/** SHP shape: MULTIPOINT M */ -#define GAIA_SHP_MULTIPOINTM 28 - -/* constants used for Clone Special modes */ -/** Clone Special Mode: Same Order as input */ -#define GAIA_SAME_ORDER 0 -/** Clone Special Mode: Reversed Order */ -#define GAIA_REVERSE_ORDER -1 -/** Clone Special Mode: apply Left Handle Rule to Polygon Rings */ -#define GAIA_LHR_ORDER -2 - -/* macros */ -/** - macro extracting XY coordinates - - \param xy pointer [const void *] to COORD mem-array - \param v [int] point index [first point has index 0] - \param x [double *] X coordinate - \param y [double *] Y coordinate - - \sa gaiaLineGetPoint, gaiaRingGetPoint - - \note using this macro on behalf of COORDs not of [XY] dims may cause serious - problems - */ -#define gaiaGetPoint(xy,v,x,y) \ - {*x = xy[(v) * 2]; \ - *y = xy[(v) * 2 + 1];} - -/** - macro setting XY coordinates - - \param xy pointer [const void *] to COORD mem-array - \param v [int] point index [first point has index 0] - \param x [double] X coordinate - \param y [double] Y coordinate - - \sa gaiaLineSetPoint, gaiaRingSetPoint - - \note using this macro on behalf on COORDs not of [XY] dims may cause - serious problems - */ -#define gaiaSetPoint(xy,v,x,y) \ - {xy[(v) * 2] = x; \ - xy[(v) * 2 + 1] = y;} - -/** - macro extracting XYZ coordinates - - \param xyz pointer [const void *] to COORD mem-array - \param v [int] point index [first point has index 0] - \param x [double *] X coordinate - \param y [double *] Y coordinate - \param z [double *] Z coordinate - - \sa gaiaLineGetPoint, gaiaRingGetPoint - - \note using this macro on behalf of COORDs not of [XYZ] dims may cause serious - problems - */ -#define gaiaGetPointXYZ(xyz,v,x,y,z) \ - {*x = xyz[(v) * 3]; \ - *y = xyz[(v) * 3 + 1]; \ - *z = xyz[(v) * 3 + 2];} - -/** - macro setting XYZ coordinates - - \param xyz pointer [const void *] to COORD mem-array - \param v [int] point index [first point has index 0] - \param x [double] X coordinate - \param y [double] Y coordinate - \param z [double] Z coordinate - - \sa gaiaLineSetPoint, gaiaRingSetPoint - - \note using this macro on behalf on COORDs not of [XYZ] dims may cause - serious problems - */ -#define gaiaSetPointXYZ(xyz,v,x,y,z) \ - {xyz[(v) * 3] = x; \ - xyz[(v) * 3 + 1] = y; \ - xyz[(v) * 3 + 2] = z;} - -/** - macro extracting XYM coordinates - - \param xym pointer [const void *] to COORD mem-array - \param v [int] point index [first point has index 0] - \param x [double *] X coordinate - \param y [double *] Y coordinate - \param m [double *] M measure - - \sa gaiaLineGetPoint, gaiaRingGetPoint - - \note using this macro on behalf of COORDs not of [XYM] dims may cause serious - problems - */ -#define gaiaGetPointXYM(xym,v,x,y,m) \ - {*x = xym[(v) * 3]; \ - *y = xym[(v) * 3 + 1]; \ - *m = xym[(v) * 3 + 2];} - -/** - macro setting XYM coordinates - - \param xym pointer [const void *] to COORD mem-array - \param v [int] point index [first point has index 0] - \param x [double] X coordinate - \param y [double] Y coordinate - \param m [double] M measure - - \sa gaiaLineSetPoint, gaiaRingSetPoint - - \note using this macro on behalf on COORDs not of [XYM] dims may cause - serious problems - */ -#define gaiaSetPointXYM(xym,v,x,y,m) \ - {xym[(v) * 3] = x; \ - xym[(v) * 3 + 1] = y; \ - xym[(v) * 3 + 2] = m;} - -/** - macro extracting XYZM coordinates - - \param xyzm pointer [const void *] to COORD mem-array - \param v [int] point index [first point has index 0] - \param x [double *] X coordinate - \param y [double *] Y coordinate - \param z [double *] Z coordinate - \param m [double *] M measure - - \sa gaiaLineGetPoint, gaiaRingGetPoint - - \note using this macro on behalf of COORDs not of [XYZM] dims may cause serious - problems - */ -#define gaiaGetPointXYZM(xyzm,v,x,y,z,m) \ - {*x = xyzm[(v) * 4]; \ - *y = xyzm[(v) * 4 + 1]; \ - *z = xyzm[(v) * 4 + 2]; \ - *m = xyzm[(v) * 4 + 3];} - -/** - macro setting XYZM coordinates - - \param xyzm pointer [const void *] to COORD mem-array - \param v [int] point index [first point has index 0] - \param x [double] X coordinate - \param y [double] Y coordinate - \param z [double] Z coordinate - \param m [double] M measure - - \sa gaiaLineSetPoint, gaiaRingSetPoint - - \note using this macro on behalf on COORDs not of [XYZM] dims may cause - serious problems - */ -#define gaiaSetPointXYZM(xyzm,v,x,y,z,m) \ - {xyzm[(v) * 4] = x; \ - xyzm[(v) * 4 + 1] = y; \ - xyzm[(v) * 4 + 2] = z; \ - xyzm[(v) * 4 + 3] = m;} - - -#ifdef __cplusplus -} -#endif - -#endif /* _GG_CONST_H */ diff --git a/src/spatialite/src/headers/spatialite/gg_core.h b/src/spatialite/src/headers/spatialite/gg_core.h deleted file mode 100644 index 7a2d848..0000000 --- a/src/spatialite/src/headers/spatialite/gg_core.h +++ /dev/null @@ -1,1781 +0,0 @@ -/* - gg_core.h -- Gaia common support for geometries: core functions - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - - -/** - \file gg_core.h - - Geometry handling functions: core - */ - -#ifndef _GG_CORE_H -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#define _GG_CORE_H -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* function prototypes */ - -/** - Safely frees any dynamic memory block allocated by the library itself - - \param ptr pointer to dynamically allocated memory - - \note on some platforms (most notably, Microsoft Windows) many different - runtime libraries may actually support the same process. - \n attempting to free() a memory block allocated by a different runtime - module may easily cause fatal memory corruption. - */ - GAIAGEO_DECLARE void gaiaFree (void *ptr); - -/** - Allocates a 2D POINT [XY] - - \param x the X coordinate. - \param y the Y coordinate. - - \return the pointer to the newly created POINT object: NULL on failure - - \sa gaiaFreePoint - - \note you are responsible to destroy (before or after) any allocated - POINT, unless you've passed ownership of the POINT object to some - further object: in this case destroying the higher order object will - implicitly destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaPointPtr gaiaAllocPoint (double x, double y); - -/** - Allocates a 3D POINT [XYZ] - - \param x the X coordinate. - \param y the Y coordinate. - \param z the Z coordinate. - - \return the pointer to the newly created POINT object: NULL on failure - - \sa gaiaFreePoint - - \note you are responsible to destroy (before or after) any allocated - POINT, unless you've passed ownership of the POINT object to some - further object: in this case destroying the higher order object will - implicitly destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaPointPtr gaiaAllocPointXYZ (double x, double y, - double z); - -/** - Allocates a 2D POINT [XYM] - - \param x the X coordinate. - \param y the Y coordinate. - \param m the M measure. - - \return the pointer to the newly created POINT object: NULL on failure - - \sa gaiaFreePoint - - \note you are responsible to destroy (before or after) any allocated - POINT, unless you've passed ownership of the POINT object to some - further object: in this case destroying the higher order object will - implicitly destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaPointPtr gaiaAllocPointXYM (double x, double y, - double m); - -/** - Allocates a 3D POINT [XYZM] - - \param x the X coordinate. - \param y the Y coordinate. - \param z the Z coordinate. - \param m the M measure. - - \return the pointer to the newly created POINT object: NULL on failure - - \sa gaiaFreePoint - - \note you are responsible to destroy (before or after) any allocated - POINT, unless you've passed ownership of the POINT object to some - further object: in this case destroying the higher order object will - implicitly destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaPointPtr gaiaAllocPointXYZM (double x, double y, - double z, double m); - -/** - Destroys a POINT object - - \param ptr pointer to the POINT object to be destroyed - - \sa gaiaAllocPoint, gaiaAllocPointXYZ, gaiaAllocPointXYM, gaiaAllocPointXYZM - - \note attempting to destroy any POINT object whose ownership has already - been transferred to some other (higher order) object is a serious - error, and will easily cause severe memory corruption. - */ - GAIAGEO_DECLARE void gaiaFreePoint (gaiaPointPtr ptr); - -/** - Allocates a 2D LINESTRING [XY] - - \param vert number of points [aka vertices] into the Linestring - - \return the pointer to newly created LINESTRING object: NULL on failure - - \sa gaiaFreeLinestring, gaiaLineSetPoint, gaiaLineGetPoint, gaiaSetPoint, - gaiaGetPoint - - \note you are responsible to destroy (before or after) any allocated LINESTRING, - unless you've passed ownership of the LINESTRING object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaLinestringPtr gaiaAllocLinestring (int vert); - -/** - Allocates a 3D LINESTRING [XYZ] - - \param vert number of points [aka vertices] into the Linestring - - \return the pointer to newly created LINESTRING object: NULL on failure - - \sa gaiaFreeLinestring, gaiaLineSetPoint, gaiaLineGetPoint, gaiaSetPointXYZ, - gaiaGetPointXYZ - - \note you are responsible to destroy (before or after) any allocated LINESTRING, - unless you've passed ownership of the LINESTRING object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaLinestringPtr gaiaAllocLinestringXYZ (int vert); - -/** - Allocates a 2D LINESTRING [XYM] - - \param vert number of points [aka vertices] into the Linestring - - \return the pointer to newly created LINESTRING object: NULL on failure - - \sa gaiaFreeLinestring, gaiaLineSetPoint, gaiaLineGetPoint, gaiaSetPointXYM, - gaiaGetPointXYM - - \note you are responsible to destroy (before or after) any allocated LINESTRING, - unless you've passed ownership of the LINESTRING object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaLinestringPtr gaiaAllocLinestringXYM (int vert); - -/** - Allocates a 3D LINESTRING [XYZM] - - \param vert number of points [aka vertices] into the Linestring - - \return the pointer to newly created LINESTRING object: NULL on failure - - \sa gaiaFreeLinestring, gaiaLineSetPoint, gaiaLineGetPoint, gaiaSetPointXYZM, - gaiaGetPointXYZM - - \note you are responsible to destroy (before or after) any allocated LINESTRING, - unless you've passed ownership of the LINESTRING object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaLinestringPtr gaiaAllocLinestringXYZM (int vert); - -/** - Destroys a LINESTRING object - - \param ptr pointer to the LINESTRING object to be destroyed - - \sa gaiaAllocLinestring, gaiaAllocLinestringXYZ, gaiaAllocLinestringXYM, - gaiaAllocLinestringXYZM - - \note attempting to destroy any LINESTRING object whose ownnership has already - been transferred to some other (higher order) object is a serious - error, and will easily cause severe memory corruption. - */ - GAIAGEO_DECLARE void gaiaFreeLinestring (gaiaLinestringPtr ptr); - -/** - Copies coordinates between two LINESTRING objects - - \param dst destination LINESTRING [output] - \param src origin LINESTRING [input] - - \sa gaiaCopyLinestringCoordsReverse - - \note both LINESTRING objects must have exactly the same number of points: - if dimensions aren't the same for both objects, then the appropriate - conversion will be silently applied. - */ - GAIAGEO_DECLARE void gaiaCopyLinestringCoords (gaiaLinestringPtr dst, - gaiaLinestringPtr src); - -/** - Copies coordinates between two LINESTRING objects in reverse order - - \param dst destination LINESTRING [output] - \param src origin LINESTRING [input] - - \sa gaiaCopyLinestringCoords - - \note both LINESTRING objects must have exactly the same number of points: - if dimensions aren't the same for both objects, then the appropriate - conversion will be silently applied. - */ - GAIAGEO_DECLARE void gaiaCopyLinestringCoordsReverse (gaiaLinestringPtr dst, - gaiaLinestringPtr - src); - -/** - Allocates a 2D RING [XY] - - \param vert number of points [aka vertices] into the Ring - - \return the pointer to newly created RING object: NULL on failure - - \sa gaiaFreeRing, gaiaRingSetPoint, gaiaRingGetPoint, gaiaSetPoint, - gaiaGetPoint - - \note you are responsible to destroy (before or after) any allocated RING, - unless you've passed ownership of the RING object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaRingPtr gaiaAllocRing (int vert); - -/** - Allocates a 3D RING [XYZ] - - \param vert number of points [aka vertices] into the Ring - - \return the pointer to newly created RING object: NULL on failure - - \sa gaiaFreeRing, gaiaRingSetPoint, gaiaRingGetPoint, gaiaSetPointXYZ, - gaiaGetPointXYZ - - \note you are responsible to destroy (before or after) any allocated RING, - unless you've passed ownership of the RING object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaRingPtr gaiaAllocRingXYZ (int vert); - -/** - Allocates 2D RING [XYM] - - \param vert number of points [aka vertices] into the Ring - - \return the pointer to newly created RING object: NULL on failure - - \sa gaiaFreeRing, gaiaRingSetPoint, gaiaRingGetPoint, gaiaSetPointXYM, - gaiaGetPointXYM - - \note you are responsible to destroy (before or after) any allocated RING, - unless you've passed ownership of the RING object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaRingPtr gaiaAllocRingXYM (int vert); - -/** - Allocates a 3D RING [XYZM] - - \param vert number of points [aka vertices] into the Ring - - \return the pointer to newly created RING object: NULL on failure - - \sa gaiaFreeRing, gaiaRingSetPoint, gaiaRingGetPoint, gaiaSetPointXYZM, - gaiaSetPointXYZM - - \note you are responsible to destroy (before or after) any allocated RING, - unless you've passed ownership of the RING object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaRingPtr gaiaAllocRingXYZM (int vert); - -/** - Destroys a RING object - - \param ptr pointer to the RING object to be destroyed - - \sa gaiaAllocRing, gaiaAllocRingXYZ, gaiaAllocRingXYM, - gaiaAllocRingXYZM - - \note attempting to destroy any RING object whose ownership has already - been transferred to some other (higher order) object is a serious - error, and will easily cause severe memory corruption. - */ - GAIAGEO_DECLARE void gaiaFreeRing (gaiaRingPtr ptr); - -/** - Copies coordinates between two RING objects - - \param dst destination RING [output] - \param src origin RING [input] - - \sa gaiaCopyRingCoordsReverse - - \note both RING objects must have exactly the same number of points: - if dimensions aren't the same for both objects, then the appropriate - conversion will be silently applied. - */ - GAIAGEO_DECLARE void gaiaCopyRingCoords (gaiaRingPtr dst, gaiaRingPtr src); - -/** - Copies coordinates between two RING objects in reverse order - - \param dst destination RING [output] - \param src origin RING [input] - - \sa gaiaCopyRingCoords - - \note both RING objects must have exactly the same number of points: - if dimensions aren't the same for both objects, then the appropriate - conversion will be silently applied. - */ - GAIAGEO_DECLARE void gaiaCopyRingCoordsReverse (gaiaRingPtr dst, - gaiaRingPtr src); - -/** - Allocates a 2D POLYGON [XY] - - \param vert number of points [aka vertices] into the Exterior Ring. - \param holes number of Interior Rings [0, if no Interior Ring is required]. - - \return the pointer to newly created POLYGON object: NULL on failure - - \sa gaiaFreePolygon - - \note you are responsible to destroy (before or after) any allocated POLYGON, - unless you've passed ownership of the POLYGON object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaPolygonPtr gaiaAllocPolygon (int vert, int holes); - -/** - Allocates a 3D POLYGON [XYZ] - - \param vert number of points [aka vertices] into the Exterior Ring. - \param holes number of Interior Rings [0, if no Interior Ring is required]. - - \return the pointer to newly created POLYGON object: NULL on failure - - \sa gaiaFreePolygon - - \note you are responsible to destroy (before or after) any allocated POLYGON, - unless you've passed ownership of the POLYGON object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaPolygonPtr gaiaAllocPolygonXYZ (int vert, int holes); - -/** - Allocates a 2D POLYGON [XYM] - - \param vert number of points [aka vertices] into the Exterior Ring. - \param holes number of Interior Rings [0, if no Interior Ring is required]. - - \return the pointer to newly created POLYGON object: NULL on failure - - \sa gaiaFreePolygon - - \note you are responsible to destroy (before or after) any allocated POLYGON, - unless you've passed ownership of the POLYGON object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaPolygonPtr gaiaAllocPolygonXYM (int vert, int holes); - -/** - Allocates a 3D POLYGON [XYZM] - - \param vert number of points [aka vertices] into the Exterior Ring. - \param holes number of Interior Rings [may by 0, if no Interior Ring is required]. - - \return the pointer to newly created POLYGON object: NULL on failure - - \sa gaiaFreePolygon - - \note you are responsible to destroy (before or after) any allocated POLYGON, - unless you've passed ownership of the POLYGON object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaPolygonPtr gaiaAllocPolygonXYZM (int vert, int holes); - -/** - Allocates a POLYGON - - \param ring pointer to a valid RING object: assumed to be the Polygon's - Exterior Ring. - - \return the pointer to newly created POLYGON object: NULL on failure - - \sa gaiaAllocRing, gaiaAllocRingXYZ, gaiaAllocRingXYM, gaiaAllocRingXYZM, - gaiaFreePolygon - - \note you are responsible to destroy (before or after) any allocated POLYGON, - unless you've passed ownership of the POLYGON object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - \n Ownership of passed Ring object will be transferred to the - Polygon object being created. - */ - GAIAGEO_DECLARE gaiaPolygonPtr gaiaCreatePolygon (gaiaRingPtr ring); - -/** - Destroys a POLYGON object - - \param polyg pointer to the POLYGON object to be destroyed - - \sa gaiaAllocPolygon, gaiaAllocPolygonXYZ, gaiaAllocPolygonXYM, - gaiaAllocPolygonXYZM, gaiaCreatePolygon - - \note attempting to destroy any POLYGON object whose ownership has already - been transferred to some other (higher order) object is a serious - error, and will easily cause severe memory corruption. - \n Ownership of each RING object referenced by a POLYGON object always belongs - to the POLYGON itself, so destroying the POLYGON will surely destroy - any related RING as well. - */ - GAIAGEO_DECLARE void gaiaFreePolygon (gaiaPolygonPtr polyg); - -/** - Allocates a 2D Geometry [XY] - - \return the pointer to newly created Geometry object: NULL on failure - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - unless you've passed ownership of the Geometry object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaAllocGeomColl (void); - -/** - Allocates a 3D Geometry [XYZ] - - \return the pointer to newly created Geometry object: NULL on failure - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - unless you've passed ownership of the Geometry object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaAllocGeomCollXYZ (void); - -/** - Allocates a 2D Geometry [XYM] - - \return the pointer to newly created Geometry object: NULL on failure - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - unless you've passed ownership of the Geometry object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaAllocGeomCollXYM (void); - -/** - Allocates a 3D Geometry [XYZM] - - \return the pointer to newly created Geometry object: NULL on failure - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - unless you've passed ownership of the Geometry object to some further - object: in this case destroying the higher order object will implicitly - destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaAllocGeomCollXYZM (void); - -/** - Destroys a Geometry object - - \param geom pointer to the Geometry object to be destroyed - - \sa gaiaAllocGeomColl, gaiaAllocGeomCollXYZ, gaiaAllocGeomCollXYM, - gaiaAllocGeomCollXYZM - - \note attempting to destroy any Geometry object whose ownership has already - been transferred to some other (higher order) object is a serious - error, and will easily cause severe memory corruption. - \n Ownership of each POINT, LINESTRING or POLYGON object referenced by a - Geometry object always belongs to the Geometry itself, so destroying the - Geometry will surely destroy any related elementary geometry item as well. - */ - GAIAGEO_DECLARE void gaiaFreeGeomColl (gaiaGeomCollPtr geom); - -/** - Creates a new 2D Point [XY] object into a Geometry object - - \param p pointer to the Geometry object - \param x X coordinate of the Point to be created - \param y X coordinate of the Point to be created - - \note ownership of the newly created POINT object belongs to the Geometry - object. - */ - GAIAGEO_DECLARE void gaiaAddPointToGeomColl (gaiaGeomCollPtr p, double x, - double y); - -/** - Creates a new 3D Point [XYZ] object into a Geometry object - - \param p pointer to the Geometry object - \param x X coordinate of the Point to be created - \param y X coordinate of the Point to be created - \param z Z coordinate of the Point to be created - - \note ownership of the newly created POINT object belongs to the Geometry - object. - */ - GAIAGEO_DECLARE void gaiaAddPointToGeomCollXYZ (gaiaGeomCollPtr p, double x, - double y, double z); - -/** - Creates a new 2D Point [XYM] object into a Geometry object - - \param p pointer to the Geometry object - \param x X coordinate of the Point to be created - \param y X coordinate of the Point to be created - \param m M measure of the Point to be created - - \note ownership of the newly created POINT object belongs to the Geometry - object. - */ - GAIAGEO_DECLARE void gaiaAddPointToGeomCollXYM (gaiaGeomCollPtr p, double x, - double y, double m); - -/** - Creates a new 3D Point [XYZM] object into a Geometry object - - \param p pointer to the Geometry object - \param x X coordinate of the Point to be created - \param y X coordinate of the Point to be created - \param z Z coordinate of the Point to be created - \param m M measure of the Point to be created - - \note ownership of the newly created POINT object belongs to the Geometry - object. - */ - GAIAGEO_DECLARE void gaiaAddPointToGeomCollXYZM (gaiaGeomCollPtr p, - double x, double y, - double z, double m); - -/** - Creates a new Linestring object into a Geometry object - - \param p pointer to the Geometry object. - \param vert number of points [aka vertices] into the Linestring. - - \return the pointer to newly created Linestring: NULL on failure. - - \note ownership of the newly created Linestring object belongs to the Geometry object. - \n the newly created Linestring will have the same dimensions as the Geometry has. - */ - GAIAGEO_DECLARE gaiaLinestringPtr - gaiaAddLinestringToGeomColl (gaiaGeomCollPtr p, int vert); - -/** - Inserts an already existing Linestring object into a Geometry object - - \param p pointer to the Geometry object. - \param line pointer to the Linestring object. - - \note ownership of the Linestring object will be transferred to the - Geometry object. - */ - GAIAGEO_DECLARE void gaiaInsertLinestringInGeomColl (gaiaGeomCollPtr p, - gaiaLinestringPtr - line); - -/** - Creates a new Polygon object into a Geometry object - - \param p pointer to the Geometry object. - \param vert number of points [aka vertices] into the Polygon's Exterior Ring. - \param interiors number of Interiors Rings [0, if no Interior Ring is required] - - \return the pointer to newly created Polygon: NULL on failure. - - \note ownership of the newly created Polygon object belongs to the Geometry object. - \n the newly created Polygon will have the same dimensions as the Geometry has. - */ - GAIAGEO_DECLARE gaiaPolygonPtr gaiaAddPolygonToGeomColl (gaiaGeomCollPtr p, - int vert, - int interiors); - -/** - Creates a new Polygon object into a Geometry object starting from an - already existing Ring object - - \param p pointer to the Geometry object. - \param ring pointer to the Ring object [assumed to represent to Polygon's - Exterior Ring]. - - \return the pointer to the newly created Polygon object: NULL on failure. - - \note ownership of the Ring object will be transferred to the - Polygon object, and the Polygon object ownerships belongs to the Geometry object. - \n the Polygon object will have the same dimensions as the Ring object has. - */ - GAIAGEO_DECLARE gaiaPolygonPtr gaiaInsertPolygonInGeomColl (gaiaGeomCollPtr - p, - gaiaRingPtr - ring); - -/** - Creates a new Interior Ring object into a Polygon object - - \param p pointer to the Polygon object. - \param pos relative position index [first Interior Ring has index 0]. - \param vert number of points (aka vertices) into the Ring. - - \return the pointer to the newly created Ring object: NULL on failure. - - \sa gaiaAllocPolygon, gaiaAllocPolygonXYZ, gaiaAllocPolygonXYM, - gaiaAllocPolygonXYZM - - \note ownership of the Ring object belongs to the Polygon object. - \n the newly created Ring will have the same dimensions the Polygon has. - */ - GAIAGEO_DECLARE gaiaRingPtr gaiaAddInteriorRing (gaiaPolygonPtr p, int pos, - int vert); - -/** - Inserts an already existing Ring object into a Polygon object - - \param p pointer to the Polygon object - \param ring pointer to the Ring object - - \sa gaiaAddRingToPolygon - - \note ownership of the Ring object still remains to the calling procedure - (a duplicated copy of the original Ring will be inserted into the Polygon). - \n the newly created Polygon will have the same dimensions as the Ring has. - \n if required the Polygon's Interior Rings count could be increased. - */ - GAIAGEO_DECLARE void gaiaInsertInteriorRing (gaiaPolygonPtr p, - gaiaRingPtr ring); - -/** - Inserts an already existing Ring object into a Polygon object - - \param polyg pointer to the Polygon object - \param ring pointer to the Ring object - - \sa gaiaInsertInteriorRing - - \note ownership of the Ring object will be transferred to the Polygon object. - \n the newly created Polygon will have the same dimensions as the Ring has. - \n if required the Polygon's Interior Rings count could be increased. - */ - GAIAGEO_DECLARE void gaiaAddRingToPolyg (gaiaPolygonPtr polyg, - gaiaRingPtr ring); - -/** - Duplicates a Linestring object - - \param line pointer to Linestring object [origin]. - - \return the pointer to newly created Linestring object: NULL on failure. - - \sa gaiaCloneRing, gaiaClonePolygon, gaiaCloneGeomColl, - gaiaCloneGeomCollPoints, gaiaCloneGeomCollLinestrings, - gaiaCloneGeomCollPolygons, gaiaCloneLinestringSpecial - - \note the newly created object is an exact copy of the original one. - */ - GAIAGEO_DECLARE gaiaLinestringPtr gaiaCloneLinestring (gaiaLinestringPtr - line); -/** - Duplicates a Linestring object (special) - - \param line pointer to Linestring object [origin]. - \param mode one of GAIA_SAME_ORDER or GAIA_REVERSE_ORDER. - - \return the pointer to newly created Linestring object: NULL on failure. - - \sa gaiaCloneLinestring, gaiaCloneGeomCollSpecial - - \note if GAIA_REVERSE_ORDER is specified, then any vertex into the newly created - object will be in reverse order [first vertex will be last one, and last vertex - will be the first one]. In any other case this function will simply default to - gaiaCloneLinestring. - */ - GAIAGEO_DECLARE gaiaLinestringPtr - gaiaCloneLinestringSpecial (gaiaLinestringPtr line, int mode); - -/** - Duplicates a Ring object - - \param ring pointer to Ring object [origin]. - - \return the pointer to newly created Ring object: NULL on failure. - - \sa gaiaCloneLinestring, gaiaClonePolygon, gaiaCloneGeomColl, - gaiaCloneGeomCollPoints, gaiaCloneGeomCollLinestrings, - gaiaCloneGeomCollPolygons, gaiaCloneRingSpecial - - \note the newly created object is an exact copy of the original one. - */ - GAIAGEO_DECLARE gaiaRingPtr gaiaCloneRing (gaiaRingPtr ring); - -/** - Duplicates a Ring object (special) - - \param ring pointer to Ring object [origin]. - \param mode one of GAIA_SAME_ORDER or GAIA_REVERSE_ORDER. - - \return the pointer to newly created Ring object: NULL on failure. - - \sa gaiaCloneRing, gaiaClonePolygonSpecial - - \note if GAIA_REVERSE_ORDER is specified, then any vertex into the newly created - object will be in reverse order [first vertex will be last one, and last vertex - will be the first one]. In any other case this function will simply default to - gaiaCloneRing. - */ - GAIAGEO_DECLARE gaiaRingPtr gaiaCloneRingSpecial (gaiaRingPtr ring, - int mode); - -/** - Duplicates a Polygon object - - \param polyg pointer to Polygon object [origin]. - - \return the pointer to newly created Polygon object: NULL on failure. - - \sa gaiaCloneLinestring, gaiaCloneRing, gaiaCloneGeomColl, - gaiaCloneGeomCollPoints, gaiaCloneGeomCollLinestrings, - gaiaCloneGeomCollPolygons, gaiaClonePolygonSpecial - - \note the newly created object is an exact copy of the original one. - */ - GAIAGEO_DECLARE gaiaPolygonPtr gaiaClonePolygon (gaiaPolygonPtr polyg); - -/** - Duplicates a Polygon object (special) - - \param polyg pointer to Polygon object [origin]. - \param mode one of GAIA_SAME_ORDER, GAIA_REVERSE_ORDER or GAIA_LHR_ORDER. - - \return the pointer to newly created Polygon object: NULL on failure. - - \sa gaiaClonePolygon, gaiaCloneGeomCollSpecial - - \note if GAIA_REVERSE_ORDER is specified, then any Ring into the newly created - object will be in reverse order. If GAIA_LHR_ORDER is specified instead, any - Exterior Ring will have clockwise orientation, and any Interior Ring will have - counter-clockwise orientation. In any other case this function will simply - default to gaiaClonePolygon. - */ - GAIAGEO_DECLARE gaiaPolygonPtr gaiaClonePolygonSpecial (gaiaPolygonPtr - polyg, int mode); - -/** - Duplicates a Geometry object - - \param geom pointer to Geometry object [origin]. - - \return the pointer to newly created Geometry object: NULL on failure. - - \sa gaiaCloneLinestring, gaiaCloneRing, gaiaClonePolygon, - gaiaCloneGeomCollPoints, gaiaCloneGeomCollLinestrings, - gaiaCloneGeomCollPolygons, gaiaCastGeomCollToXY, gaiaCastGeomCollToXYZ, - gaiaCastGeomCollToXYM, gaiaCastGeomCollToXYZM, gaiaExtractPointsFromGeomColl, - gaiaExtractLinestringsFromGeomColl, gaiaExtractPolygonsFromGeomColl, - gaiaMergeGeometries, gaiaCloneGeomCollSpecial - - \note the newly created object is an exact copy of the original one. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCloneGeomColl (gaiaGeomCollPtr geom); - -/** - Duplicates a Geometry object (special) - - \param geom pointer to Geometry object [origin]. - \param mode one of GAIA_SAME_ORDER, GAIA_REVERSE_ORDER or GAIA_LHR_ORDER. - - \return the pointer to newly created Geometry object: NULL on failure. - - \sa gaiaCloneLinestringSpecial, gaiaCloneRingSpecial, gaiaClonePolygonSpecial, - gaiaCloneGeomColl - - \note if GAIA_REVERSE_ORDER is specified, then any Linestring and/or Ring into - the newly created object will be in reverse order. If GAIA_LHR_ORDER is specified - instead, any Polygong will have the Exterior Ring in clockwise orientation, and any - Interior Ring int counter-clockwise orientation. In any other case this function will - simply default to gaiaCloneGeomColl. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCloneGeomCollSpecial (gaiaGeomCollPtr - geom, int mode); - -/** - Duplicates a Geometry object [Points only] - - \param geom pointer to Geometry object [origin]. - - \return the pointer to newly created Geometry object: NULL on failure. - - \sa gaiaCloneLinestring, gaiaCloneRing, gaiaClonePolygon, gaiaCloneGeomColl, - gaiaCloneGeomCollLinestrings, - gaiaCloneGeomCollPolygons - - \note the newly created object is an exact copy of the original one; except - in that only Point objects will be copied. - \n Caveat: an empty Geometry could be returned. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCloneGeomCollPoints (gaiaGeomCollPtr - geom); - -/** - Duplicates a Geometry object [Linestrings only] - - \param geom pointer to Geometry object [origin]. - - \return the pointer to newly created Geometry object: NULL on failure. - - \sa gaiaCloneLinestring, gaiaCloneRing, gaiaClonePolygon, gaiaCloneGeomColl, - gaiaCloneGeomCollPoints, gaiaCloneGeomCollPolygons - - \note the newly created object is an exact copy of the original one; except - in that only Linestrings objects will be copied. - \n Caveat: an empty Geometry could be returned. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr - gaiaCloneGeomCollLinestrings (gaiaGeomCollPtr geom); - -/** - Duplicates a Geometry object [Polygons only] - - \param geom pointer to Geometry object [origin]. - - \return the pointer to newly created Geometry object: NULL on failure. - - \sa gaiaCloneLinestring, gaiaCloneRing, gaiaClonePolygon, gaiaCloneGeomColl, - gaiaCloneGeomCollPoints, gaiaCloneGeomCollLinestrings - - \note the newly created object is an exact copy of the original one; except - in that only Polygons objects will be copied. - \n Caveat: an empty Geometry could be returned. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCloneGeomCollPolygons (gaiaGeomCollPtr - geom); - -/** - Duplicates a Geometry object [casting dimensions to 2D XY] - - \param geom pointer to Geometry object [origin]. - - \return the pointer to newly created Geometry object: NULL on failure. - - \sa gaiaCloneGeomColl, gaiaCastGeomCollToXYZ, - gaiaCastGeomCollToXYM, gaiaCastGeomCollToXYZM - - \note the newly created object is an exact copy of the original one; except - in that any elementary item will be casted to 2D [XY] dimensions. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCastGeomCollToXY (gaiaGeomCollPtr geom); - -/** - Duplicates a Geometry object [casting dimensions to 3D XYZ] - - \param geom pointer to Geometry object [origin]. - - \return the pointer to newly created Geometry object: NULL on failure. - - \sa gaiaCloneGeomColl, gaiaCastGeomCollToXY, - gaiaCastGeomCollToXYM, gaiaCastGeomCollToXYZM - - \note the newly created object is an exact copy of the original one; except - in that any elementary item will be cast to 3D [XYZ] dimensions. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCastGeomCollToXYZ (gaiaGeomCollPtr - geom); - -/** - Duplicates a Geometry object [casting dimensions to 2D XYM] - - \param geom pointer to Geometry object [origin]. - - \return the pointer to newly created Geometry object: NULL on failure. - - \sa gaiaCloneGeomColl, gaiaCastGeomCollToXY, gaiaCastGeomCollToXYZ, - gaiaCastGeomCollToXYZM - - \note the newly created object is an exact copy of the original one; except - in that any elementary item will be cast to 2D [XYM] dimensions. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCastGeomCollToXYM (gaiaGeomCollPtr - geom); - -/** - Duplicates a Geometry object [casting dimensions to 3D XYZM] - - \param geom pointer to Geometry object [origin]. - - \return the pointer to newly created Geometry object: NULL on failure. - - \sa gaiaCloneGeomColl, gaiaCastGeomCollToXY, gaiaCastGeomCollToXYZ, - gaiaCastGeomCollToXYM - - \note the newly created object is an exact copy of the original one; except - in that any elementary item will be cast to 3D [XYZM] dimensions. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCastGeomCollToXYZM (gaiaGeomCollPtr - geom); - -/** - Gets coodinates from a Linestring's Point - - \param ln pointer to Linestring object. - \param v relative position of Point: first Point has index 0 - \param x on completion this variable will contain the Point X coordinate. - \param y on completion this variable will contain the Point Y coordinate. - \param z on completion this variable will contain the Point Z coordinate. - \param m on completion this variable will contain the Point M measure. - - \return 0 on failure: any other different value on success. - - \sa gaiaLineSetPoint, gaiaGetPoint, gaiaGetPointXYZ, gaiaGetPointXYM, - gaiaGetPointXYZM - - \note this function perform the same identical task performed by - gaiaGetPoint(), gaiaGetPointXYZ(), gaiaGetPointXYM() and gaiaGetPointXYZM() - macros. - \n using the gaiaLineGetPoint() function is a little bit slower but is - intrinsically safest, because misused macros can easily cause severe - memory corruption. - \n gaiaLineGetPoint() instead will always ensure that the appropriate - dimensions (as declared by the Linestring object) will be correctly used. - */ - GAIAGEO_DECLARE int gaiaLineGetPoint (gaiaLinestringPtr ln, int v, - double *x, double *y, double *z, - double *m); - -/** - Sets coordinates for a Linestring's Point - - \param ln pointer to Linestring object. - \param v relative position of Point: first Point has index 0 - \param x the Point's X coordinate. - \param y the Point's Y coordinate. - \param z the Point's Z coordinate. - \param m the Point's M measure. - - \return 0 on failure: any other different value on success. - - \sa gaiaLineGetPoint, gaiaSetPoint, gaiaSetPointXYZ, gaiaSetPointXYM, - gaiaSetPointXYZM - - \note this function perform the same identical task performed by - gaiaSetPoint(), gaiaSetPointXYZ(), gaiaSetPointXYM() and gaiaSetPointXYZM() - macros. - \n using the gaiaLineSetPoint() function is a little bit slower but is - intrinsically safest, because misused macros can easily cause severe - memory corruption. - \n gaiaLineSetPoint() instead will always ensure that the appropriate - dimensions (as declared by the Linestring object) will be correctly used. - */ - GAIAGEO_DECLARE int gaiaLineSetPoint (gaiaLinestringPtr ln, int v, double x, - double y, double z, double m); - -/** - Gets coordinates from a Ring's Point - - \param rng pointer to Ring object. - \param v relative position of Point: first Point has index 0 - \param x on completion this variable will contain the Point X coordinate. - \param y on completion this variable will contain the Point Y coordinate. - \param z on completion this variable will contain the Point Z coordinate. - \param m on completion this variable will contain the Point M measure. - - \return 0 on failure: any other different value on success. - - \sa gaiaRingSetPoint, gaiaGetPoint, gaiaGetPointXYZ, gaiaGetPointXYM, - gaiaGetPointXYZM - - \note this function perform the same identical task performed by - gaiaGetPoint(), gaiaGetPointXYZ(), gaiaGetPointXYM() and gaiaGetPointXYZM() - macros. - \n using the gaiaRingGetPoint() function is a little bit slower but is - intrinsically safest, because misused macros can easily cause severe - memory corruption. - \n gaiaRingGetPoint() instead will always ensure that the appropriate - dimensions (as declared by the Ring object) will be correctly used. - */ - GAIAGEO_DECLARE int gaiaRingGetPoint (gaiaRingPtr rng, int v, double *x, - double *y, double *z, double *m); - -/** - Sets coodinates for a Ring's Point - - \param rng pointer to Ring object. - \param v relative position of Point: first Point has index 0 - \param x the Point's X coordinate. - \param y the Point's Y coordinate. - \param z the Point's Z coordinate. - \param m the Point's M measure. - - \return 0 on failure: any other different value on success. - - \sa gaiaRingGetPoint, gaiaGetPoint, gaiaGetPointXYZ, gaiaSetPointXYM, - gaiaSetPointXYZM - - \note this function perform the same identical task performed by - gaiaSetPoint(), gaiaSetPointXYZ(), gaiaSetPointXYM() and gaiaSetPointXYZM() - macros. - \n using the gaiaRingSetPoint() function is a little bit slower but is - intrinsically safest, because misused macros can easily cause severe - memory corruption. - \n gaiaRingSetPoint() instead will always ensure that the appropriate - dimensions (as declared by the Ring object) will be correctly used. - */ - GAIAGEO_DECLARE int gaiaRingSetPoint (gaiaRingPtr rng, int v, double x, - double y, double z, double m); - -/** - Determines OGC dimensions for a Geometry object - - \param geom pointer to Geometry object - - \return OGC dimensions - - \note OGC dimensions are defined as follows: - \li if the Geometry doesn't contain any elementary item: \b -1 - \li if the Geometry only contains Point items: \b 0 - \li if the Geometry only contains Point / Linestring items: \b 1 - \li if the Geometry contains some Polygon item: \b 2 - */ - GAIAGEO_DECLARE int gaiaDimension (gaiaGeomCollPtr geom); - -/** - Determines the corresponding Type for a Geometry object - - \param geom pointer to Geometry object - - \return the corresponding Geometry Type - - \note Type is one of: GAIA_POINT, GAIA_LINESTRING, GAIA_POLYGON, - GAIA_MULTIPOINT, GAIA_MULTILINESTRING, GAIA_MULTIPOLYGON, - GAIA_GEOMETRYCOLLECTION, GAIA_POINTZ, GAIA_LINESTRINGZ, GAIA_POLYGONZ, - GAIA_MULTIPOINTZ, GAIA_MULTILINESTRINGZ, GAIA_MULTIPOLYGONZ, - GAIA_GEOMETRYCOLLECTIONZ, GAIA_POINTM, GAIA_LINESTRINGM, GAIA_POLYGONM, - GAIA_MULTIPOINTM, GAIA_MULTILINESTRINGM, GAIA_MULTIPOLYGONM, - GAIA_GEOMETRYCOLLECTIONM, GAIA_POINTZM, GAIA_LINESTRINGZM, GAIA_POLYGONZM, - GAIA_MULTIPOINTZM, GAIA_MULTILINESTRINGZM, GAIA_MULTIPOLYGONZM, - GAIA_GEOMETRYCOLLECTIONZM - \n on failure GAIA_NONE will be returned. - */ - GAIAGEO_DECLARE int gaiaGeometryType (gaiaGeomCollPtr geom); - -/** - Determines the corresponding Type for a Geometry object - - \param geom pointer to Geometry object - - \return the corresponding Geometry Type - - \sa gaiaGeometryType - - \note Type is one of: GAIA_POINT, GAIA_LINESTRING, GAIA_POLYGON, - GAIA_MULTIPOINT, GAIA_MULTILINESTRING, GAIA_MULTIPOLYGON, - GAIA_GEOMETRYCOLLECTION - \n on failure GAIA_NONE will be returned. - - \remark deprecated function (used in earlier SpatiaLite versions). - */ - GAIAGEO_DECLARE int gaiaGeometryAliasType (gaiaGeomCollPtr geom); - -/** - Checks for empty Geometry object - - \param geom pointer to Geometry object - - \return 0 if the Geometry is empty: otherwise any other different value. - - \note an empty Geometry is a Geometry not containing any elementary - item: i.e. no Points, no Linestrings and no Polygons at all. - */ - GAIAGEO_DECLARE int gaiaIsEmpty (gaiaGeomCollPtr geom); - -/** - Checks for toxic Geometry object - - \param geom pointer to Geometry object - - \return 0 if the Geometry is not toxic: otherwise any other different value. - - \sa gaiaSanitize - - \note a \b toxic Geometry is a Geometry containing severely malformed - Polygons: i.e. containing less than 4 Points. - \n Or containing severely malformed Linestrings: i.e. containing less - than 2 Points. - \n Attempting to pass any toxic Geometry to GEOS supported functions - will easily cause a crash. - */ - GAIAGEO_DECLARE int gaiaIsToxic (gaiaGeomCollPtr geom); - -/** - Checks for not-closed Rings - - \param ring pointer to Ring object - - \return 0 if the Ring in unclosed: otherwise any other different value. - - \sa gaiaIsToxic, gaiaIsNotClosedGeomColl - - \note unclosed Rings cause GEOS supported functions to crash. - \n SpatiaLite will always carefully check any Ring before passing it - to GEOS, eventually silently inserting a further point required so - to properly close the figure. - \n This function allows to explicitly identify any unclosed Ring. - */ - GAIAGEO_DECLARE int gaiaIsNotClosedRing (gaiaRingPtr ring); - -/** - Checks for not-closed Rings in a Geometry object - - \param geom pointer to Geometry object - - \return 0 if the Geometry has no unclosed Rings: otherwise any other different value. - - \sa gaiaIsToxic, gaiaIsNotClosedRing - - \note This function allows to explicitly identify any Geometry containing - at least one unclosed Ring. - */ - GAIAGEO_DECLARE int gaiaIsNotClosedGeomColl (gaiaGeomCollPtr geom); - -/** - Attempts to sanitize a possibly malformed Geometry object - - \param org pointer to Geometry object. - - \return the pointer to newly created Geometry: NULL on failure. - - \sa gaiaIsToxic - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry created by gaiaSanitize() - \n the output Geometry will surely have: - \li no repeated Points on Linestrings or Rings (i.e. consecutive Points - sharing exactly the same coordinates): any repeated Point will be suppressed, - simply leaving only the first occurrence. - \li proper Ring closure: for sure any Ring will have exactly coinciding - first and last Points. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSanitize (gaiaGeomCollPtr org); - - -/** - Attempts to resolve a (Multi)Linestring from a Geometry object - - \param geom pointer to Geometry object. - \param force_multi: 0 if the returned Geometry could represent a Linestring: - any other value if casting to MultiLinestring is required unconditionally. - - \return the pointer to newly created Geometry: NULL on failure. - - \sa gaiaDissolveSegments, gaiaDissolvePoints - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry created by gaiaLinearize() - \n the input Geometry is expected to contain Polygons only: then any Ring - will be transformed into the corresponding Linestring. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaLinearize (gaiaGeomCollPtr geom, - int force_multi); - -/** - Attempts to resolve a collection of Segments from a Geometry object - - \param geom pointer to Geometry object. - - \return the pointer to newly created Geometry: NULL on failure. - - \sa gaiaLinearize, gaiaDissolvePoints - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry created by gaiaDissolveSegments() - \n the input Geometry can be of any arbitrary type: - \li any Point will be copied untouched. - \li any Linestring will be dissolved into Segments. - \li any Ring will be dissolved into Segments. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaDissolveSegments (gaiaGeomCollPtr geom); - -/** - Attempts to resolve a collection of Points from a Geometry object - - \param geom pointer to Geometry object. - - \return the pointer to newly created Geometry: NULL on failure. - - \sa gaiaLinearize, gaiaDissolveSegments - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry created by gaiaDissolvePoints() - \n the input Geometry can be of any arbitrary type: - \li any Point will be copied untouched. - \li any Linestring will be dissolved into sparse Points. - \li any Ring will be dissolved into sparse Points. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaDissolvePoints (gaiaGeomCollPtr geom); - -/** - Extracts any Point from a Geometry object - - \param geom pointer to Geometry object - - \return the pointer to newly created Geometry: NULL on failure. - - \sa gaiaExtractLinestringsFromGeomColl, - gaiaExtractPolygonsFromGeomColl, gaiaCloneGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry created by gaiaExtractPointsFromGeomColl() - \n the newly created Geometry will contain any Point contained into the - input Geometry. - \n if the input Geometry doesn't contains any Point, then NULL will be returned. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr - gaiaExtractPointsFromGeomColl (gaiaGeomCollPtr geom); - -/** - Extracts any Linestring from a Geometry object - - \param geom pointer to Geometry object - - \return the pointer to newly created Geometry: NULL on failure. - - \sa gaiaExtractPointsFromGeomColl, gaiaExtractPolygonsFromGeomColl, - gaiaCloneGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry created by gaiaExtractLinestringsFromGeomColl() - \n the newly created Geometry will contain any Linestring contained into the - input Geometry. - \n if the input Geometry doesn't contains any Linestring, then NULL will be returned. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr - gaiaExtractLinestringsFromGeomColl (gaiaGeomCollPtr geom); - -/** - Extracts any Polygon from a Geometry object - - \param geom pointer to Geometry object - - \return the pointer to newly created Geometry: NULL on failure. - - \sa gaiaExtractPointsFromGeomColl, gaiaExtractLinestringsFromGeomColl, - gaiaCloneGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry created by gaiaExtractPolygonsFromGeomColl() - \n the newly created Geometry will contain any Polygon contained into the - input Geometry. - \n if the input Geometry doesn't contains any Polygon, then NULL will be returned. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr - gaiaExtractPolygonsFromGeomColl (gaiaGeomCollPtr geom); - -/** - Merges two Geometry objects into a single one - - \param geom1 pointer to first Geometry object. - \param geom2 pointer to second Geometry object. - - \return the pointer to newly created Geometry: NULL on failure. - - \sa gaiaCloneGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry created by gaiaMergeGeometries() - \n the newly created Geometry will contain any Point, Linestring and/or - Polygon contained in both input Geometries. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMergeGeometries (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2); - -/** - Return a GeometryCollection containing elements matching the specified range of measures - - \param geom pointer to Geometry object - \param m_start range of measures: start value - \param m_end range of measures: end value - - \return the pointer to newly created Geometry: NULL on failure. - - \note you are responsible to destroy (before or after) any allocated Geometry, - this including any Geometry created by gaiaLocateBetweenMeasures() - \n the newly created Geometry will contain Points and/or Linestrings. - \n if the input Geometry has no M dimension then NULL will be returned. - \n if the input Geometry doesn't contains any point/vertex corresponding to the - required range of measures then NULL will be returned. - \n if the input Geometry contains any Polygon (or is a GeometryCollection) then - NULL will be returned. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr - gaiaLocateBetweenMeasures (gaiaGeomCollPtr geom, double m_start, - double m_end); - -/** - Measures the geometric length for a Linestring or Ring - - \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_ZM - \param coords pointed to COORD mem-array - \param vert number of Points (aka Vertices) within the COORD mem-array - - \return the calculated geometric length - - \sa gaiaGeomCollLength - - \note \b dims, \b coords and \b vert are usually expected to correspond to - \b DimensionModel, \b Coords and \b Points members from a gaiaLinestringStruct - or gaiaRingStruct - - \remark internal method: doesn't require any GEOS support. - */ - GAIAGEO_DECLARE double gaiaMeasureLength (int dims, double *coords, - int vert); - -/** - Measures the geometric area for a Ring object - - \param ring pointer to Ring object - - \return the calculated geometric area - - \sa gaiaGeomCollArea - - \remark internal method: doesn't require any GEOS support. - */ - GAIAGEO_DECLARE double gaiaMeasureArea (gaiaRingPtr ring); - -/** - Determines the Centroid for a Ring object - - \param ring pointer to Ring object. - \param rx on completion this variable will contain the centroid X coordinate. - \param ry on completion this variable will contain the centroid Y coordinate. - - \sa gaiaGeomCollCentroid - - \remark internal method: doesn't require any GEOS support. - */ - GAIAGEO_DECLARE void gaiaRingCentroid (gaiaRingPtr ring, double *rx, - double *ry); - -/** - Determines the direction for a Ring object - - \param p pointer to Ring object - - \return 0 if the ring has counter-clockwise direction; any other different - value for clockwise direction. - */ - GAIAGEO_DECLARE void gaiaClockwise (gaiaRingPtr p); - -/** - Check if a Point lays on a Ring surface - - \param ring pointer to Ring object - \param pt_x Point X coordinate - \param pt_y Point Y coordinate - - \return 0 if false: any other value if true - */ - GAIAGEO_DECLARE int gaiaIsPointOnRingSurface (gaiaRingPtr ring, double pt_x, - double pt_y); - -/** - Checks if a Point lays on a Polygon surface - - \param polyg pointer to Polygon object - \param x Point X coordinate - \param y Point Y coordinate - - \return 0 if false: any other value if true - */ - GAIAGEO_DECLARE int gaiaIsPointOnPolygonSurface (gaiaPolygonPtr polyg, - double x, double y); - -/** - Computes the minimum distance between a Point and a Linestring or Ring - - \param x0 Point X coordinate - \param y0 Point Y coordinate - \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_ZM - \param coords pointed to COORD mem-array - \param vert number of Points (aka Vertices) within the COORD mem-array - - \return the calculated minumum distance. - - \note \b dims, \b coords and \b vert are usually expected to correspond to - \b DimensionModel, \b Coords and \b Points members from a gaiaLinestringStruct - or gaiaRingStruct - */ - GAIAGEO_DECLARE double gaiaMinDistance (double x0, double y0, - int dims, double *coords, int vert); - -/** - Determines the intesection Point between two Segments - - \param x0 on completion this variable will contain the Intersection X coord - \param y0 on completion this variable will contain the Intersection Y coord - \param x1 start Point X of first Segment - \param y1 start Point Y of first Segment - \param x2 end Point X of first Segment - \param y2 end Point Y of first Segment - \param x3 start Point X of second Segment - \param y3 start Point Y of second Segment - \param x4 end Point X of second Segment - \param y4 end Point Y of second Segment - - \return 0 if the Segments doesn't intersect at all: any other value on - success. - */ - GAIAGEO_DECLARE int gaiaIntersect (double *x0, double *y0, double x1, - double y1, double x2, double y2, - double x3, double y3, double x4, - double y4); - -/** - Shifts any coordinate within a Geometry object - - \param geom pointer to Geometry object. - \param shift_x X axis shift factor. - \param shift_y Y axis shift factor. - - \sa gaiaScaleCoords, gaiaRotateCoords, gaiaReflectCoords, gaiaSwapCoords, - gaiaShiftCoords3D, gaiaShiftLongitude - */ - GAIAGEO_DECLARE void gaiaShiftCoords (gaiaGeomCollPtr geom, double shift_x, - double shift_y); - -/** - Shifts any coordinate within a 3D Geometry object - - \param geom pointer to Geometry object. - \param shift_x X axis shift factor. - \param shift_y Y axis shift factor. - \param shift_z Z axis shift factor. - - \sa gaiaScaleCoords, gaiaRotateCoords, gaiaReflectCoords, gaiaSwapCoords, - gaiaShiftCoords, gaiaShiftLongitude, gaiaNormalizeLonLat - */ - GAIAGEO_DECLARE void gaiaShiftCoords3D (gaiaGeomCollPtr geom, - double shift_x, double shift_y, - double shift_z); - -/** - Shifts negative longitudes - - \param geom pointer to Geometry object. - - \sa gaiaShiftCoords, gaiaShiftCoords3D, gaiaNormalizeLonLat - - \note only intended for geographic (longitude/latitude) coordinates. - Negative longitudes (-180/0) will be shifted by 360, thus allowing - to represent longitudes in the 0/360 range and effectively crossing - the International Date Line. - - */ - GAIAGEO_DECLARE void gaiaShiftLongitude (gaiaGeomCollPtr geom); - -/** - Shifts any coordinate to within the "normal range" of longitude and - latitude values (-180.0 to 180.0 longitude and -90.0 to 90.0 latitude). - - \param geom pointer to Geometry object. - \param shift_x X axis shift factor. - \param shift_y Y axis shift factor. - - \sa gaiaScaleCoords, gaiaRotateCoords, gaiaReflectCoords, gaiaSwapCoords, - gaiaShiftCoords3D, gaiaShiftLongitude - */ - GAIAGEO_DECLARE void gaiaNormalizeLonLat (gaiaGeomCollPtr geom); - - -/** - Scales any coordinate within a Geometry object - - \param geom pointer to Geometry object. - \param scale_x X axis scale factor. - \param scale_y Y axis scale factor. - - \sa gaiaShiftCoords, gaiaRotateCoords, gaiaReflectCoords, gaiaSwapCoords - */ - GAIAGEO_DECLARE void gaiaScaleCoords (gaiaGeomCollPtr geom, double scale_x, - double scale_y); - -/** - Rotates any coordinate within a Geometry object - - \param geom pointer to Geometry object. - \param angle rotation angle [expressed in Degrees]. - - \sa gaiaShiftCoords, gaiaScaleCoords, gaiaReflectCoords, gaiaSwapCoords - */ - GAIAGEO_DECLARE void gaiaRotateCoords (gaiaGeomCollPtr geom, double angle); - -/** - Reflects any coordinate within a Geometry object - - \param geom pointer to Geometry object. - \param x_axis if set to 0, no X axis reflection will be applied: - otherwise the X axis will be reflected. - \param y_axis if set to 0, no Y axis reflection will be applied: - otherwise the Y axis will be reflected. - - \sa gaiaShiftCoords, gaiaScaleCoords, gaiaRotateCoords, gaiaSwapCoords - */ - GAIAGEO_DECLARE void gaiaReflectCoords (gaiaGeomCollPtr geom, int x_axis, - int y_axis); - -/** - Swaps any coordinate within a Geometry object - - \param geom pointer to Geometry object. - - \sa gaiaShiftCoords, gaiaScaleCoords, gaiaRotateCoords, gaiaReflectCoords - - \note the X and Y axes will be swapped. - */ - GAIAGEO_DECLARE void gaiaSwapCoords (gaiaGeomCollPtr geom); - -/** - Checks if two Linestring objects are equivalent - - \param line1 pointer to first Linestring object. - \param line2 pointer to second Linestring object. - - \return 0 if false: any other different value if true - - \sa gaiaPolygonEquals - - \note two Linestrings objects are assumed to be equivalent if exactly - \remark deprecated function (used in earlier SpatiaLite versions). - the same Points are found in both them. - */ - GAIAGEO_DECLARE int gaiaLinestringEquals (gaiaLinestringPtr line1, - gaiaLinestringPtr line2); - -/** - Checks if two Polygons objects are equivalent - - \param polyg1 pointer to first Polygon object. - \param polyg2 pointer to second Polygon object. - - \return 0 if false: any other different value if true - - \sa gaiaLinestringEquals - - \note two Polygon objects are assumed to be equivalent if exactly - the same Points are found in both them. - - \remark deprecated function (used in earlier SpatiaLite versions). - */ - GAIAGEO_DECLARE int gaiaPolygonEquals (gaiaPolygonPtr polyg1, - gaiaPolygonPtr polyg2); - -/** - Retrieves Geodesic params for an Ellipsoid definition - - \param name text string identifying an Ellipsoid definition. - \param a on completion this variable will contain the first geodesic param. - \param b on completion this variable will contain the second geodesic param. - \param rf on completion this variable will contain the third geodesic param. - - \return 0 on failure: any other value on success. - - \sa gaiaGreatCircleDistance, gaiaGeodesicDistance, - gaiaGreatCircleTotalLength, gaiaGeodesicTotalLength - - \note supported Ellipsoid definitions are: \b MERIT, \b SGS85, \b GRS80, - \b IAU76, \b airy, \b APL4.9, \b NWL9D, \b mod_airy, \b andrae, \b aust_SA, - \b GRS67, \b bessel, \b bess_nam, \b clrk66, \b clrk80, \b CPM, \b delmbr, - \b engelis, \b evrst30, \b evrst48, \b evrst56, \b evrst69, \b evrstSS, - \b fschr60 - */ - GAIAGEO_DECLARE int gaiaEllipseParams (const char *name, double *a, - double *b, double *rf); - -/** - Calculates the Great Circle Distance between between two Points - - \param a first geodesic parameter. - \param b second geodesic parameter. - \param lat1 Latitude of first Point. - \param lon1 Longitude of first Point. - \param lat2 Latitude of second Point. - \param lon2 Longitude of second Point. - - \return the calculated Great Circle Distance. - - \sa gaiaEllipseParams, gaiaGeodesicDistance, - gaiaGreatCircleTotalLength, gaiaGeodesicTotalLength - - \note the returned distance is expressed in Kilometers. - \n the Great Circle method is less accurate but fastest to be calculated. - */ - GAIAGEO_DECLARE double gaiaGreatCircleDistance (double a, double b, - double lat1, double lon1, - double lat2, double lon2); - -/** - Calculates the Geodesic Distance between between two Points - - \param a first geodesic parameter. - \param b second geodesic parameter. - \param rf third geodesic parameter. - \param lat1 Latitude of first Point. - \param lon1 Longitude of first Point. - \param lat2 Latitude of second Point. - \param lon2 Longitude of second Point. - - \return the calculated Geodesic Distance. - - \sa gaiaEllipseParams, gaiaGreatCircleDistance, gaiaGreatCircleTotalLength, - gaiaGeodesicTotalLength - - \note the returned distance is expressed in Kilometers. - \n the Geodesic method is much more accurate but slowest to be calculated. - */ - GAIAGEO_DECLARE double gaiaGeodesicDistance (double a, double b, double rf, - double lat1, double lon1, - double lat2, double lon2); - -/** - Calculates the Great Circle Total Length for a Linestring / Ring - - \param a first geodesic parameter. - \param b second geodesic parameter. - \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_ZM - \param coords pointed to COORD mem-array - \param vert number of Points (aka Vertices) within the COORD mem-array - - \return the calculated Great Circle Total Length. - - \sa gaiaEllipseParams, gaiaGreatCircleDistance, gaiaGeodesicDistance, - gaiaGeodesicTotalLength - - \note the returned length is expressed in Kilometers. - \n the Great Circle method is less accurate but fastest to be calculated. - \n \b dims, \b coords and \b vert are usually expected to correspond to - \b DimensionModel, \b Coords and \b Points members from a gaiaLinestringStruct - or gaiaRingStruct - */ - GAIAGEO_DECLARE double gaiaGreatCircleTotalLength (double a, double b, - int dims, double *coords, - int vert); - -/** - Calculates the Geodesic Total Length for a Linestring / Ring - - \param a first geodesic parameter. - \param b second geodesic parameter. - \param rf third geodesic parameter. - \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_ZM - \param coords pointed to COORD mem-array - \param vert number of Points (aka Vertices) within the COORD mem-array - - \return the calculated Geodesic Total Length. - - \sa gaiaEllipseParams, gaiaGreatCircleDistance, gaiaGeodesicDistance, - gaiaGreatCircleTotalLength - - \note the returned length is expressed in Kilometers. - \n the Geodesic method is much more accurate but slowest to be calculated. - \n \b dims, \b coords and \b vert are usually expected to correspond to - \b DimensionModel, \b Coords and \b Points members from a gaiaLinestringStruct - or gaiaRingStruct - */ - GAIAGEO_DECLARE double gaiaGeodesicTotalLength (double a, double b, - double rf, int dims, - double *coords, int vert); - -/** - Convert a Length from a Measure Unit to another - - \param value the length measure to be converted. - \param unit_from original Measure Unit. - \param unit_to converted Measure Unit. - \param cvt on completion this variable will contain the converted length - measure. - - \note supported Measu Units are: GAIA_KM, GAIA_M, GAIA_DM, GAIA_CM, GAIA_MM, - GAIA_KMI, GAIA_IN, GAIA_FT, GAIA_YD, GAIA_MI, GAIA_FATH, GAIC_CH, GAIA_LINK, - GAIA_US_IN, GAIA_US_FT, GAIA_US_YD, GAIA_US_CH, GAIA_US_MI, GAIA_IND_YD, - GAIA_IND_FT, GAIA_IND_CH - */ - GAIAGEO_DECLARE int gaiaConvertLength (double value, int unit_from, - int unit_to, double *cvt); - -#ifdef __cplusplus -} -#endif - -#endif /* _GG_CORE_H */ diff --git a/src/spatialite/src/headers/spatialite/gg_dynamic.h b/src/spatialite/src/headers/spatialite/gg_dynamic.h deleted file mode 100644 index 4a0749b..0000000 --- a/src/spatialite/src/headers/spatialite/gg_dynamic.h +++ /dev/null @@ -1,420 +0,0 @@ -/* - gg_dynamic.h -- Gaia common support for geometries: DynamicLine functions - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - - -/** - \file gg_dynamic.h - - Geometry handling functions: DynamicLine handling - */ - -#ifndef _GG_DYNAMIC -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#define _GG_DYNAMIC -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* function prototypes */ - -/** - Creates a new dynamicly growing line/ring object - - \return the pointer to newly created object - - \sa gaiaCreateDynamicLine, gaiaFreeDynamicLine - - \note you are responsible to destroy (before or after) any allocated - dynamically growing line/ring object. - */ - GAIAGEO_DECLARE gaiaDynamicLinePtr gaiaAllocDynamicLine (void); - -/** - Destroys a dynamically growing line/ring object - - \param p pointer to object to be destroyed - - \sa gaiaAllocDynamicLine - */ - GAIAGEO_DECLARE void gaiaFreeDynamicLine (gaiaDynamicLinePtr p); - -/** - Appends a new 2D Point [XY] at the end of a dynamically growing line/ring - object - - \param p pointer to the dynamically growing line/ring object. - \param x X coordinate of the Point - \param y Y coordinate of the Point - - \return the pointer to newly created Point - */ - GAIAGEO_DECLARE gaiaPointPtr - gaiaAppendPointToDynamicLine (gaiaDynamicLinePtr p, double x, double y); - -/** - Appends a new 3D Point [XYZ] at the end of a dynamically growing line/ring - object - - \param p pointer to the dynamically growing line/ring object. - \param x X coordinate of the Point - \param y Y coordinate of the Point - \param z Z coordinate of the Point - - \return the pointer to newly created Point - */ - GAIAGEO_DECLARE gaiaPointPtr - gaiaAppendPointZToDynamicLine (gaiaDynamicLinePtr p, double x, double y, - double z); - -/** - Appends a new 2D Point [XYM] at the end of a dynamically growing line/ring - object - - \param p pointer to the dynamically growing line/ring object. - \param x X coordinate of the Point - \param y Y coordinate of the Point - \param m M measure of the Point - - \return the pointer to newly created Point - */ - GAIAGEO_DECLARE gaiaPointPtr - gaiaAppendPointMToDynamicLine (gaiaDynamicLinePtr p, double x, double y, - double m); - -/** - Appends a new 3D Point [XYZM] at the end of a dynamically growing line/ring - object - - \param p pointer to the dynamically growing line/ring object. - \param x X coordinate of the Point - \param y Y coordinate of the Point - \param z Z coordinate of the Point - \param m M measure of the Point - - \return the pointer to newly created Point - */ - GAIAGEO_DECLARE gaiaPointPtr - gaiaAppendPointZMToDynamicLine (gaiaDynamicLinePtr p, double x, - double y, double z, double m); - -/** - Appends a new 2D Point [XY] before the first one of a dynamically growing - line/ring object - - \param p pointer to the dynamically growing line/ring object. - \param x X coordinate of the Point - \param y Y coordinate of the Point - - \return the pointer to newly created Point - */ - GAIAGEO_DECLARE gaiaPointPtr - gaiaPrependPointToDynamicLine (gaiaDynamicLinePtr p, double x, - double y); - -/** - Appends a new 3D Point [XYZ] before the first one of a dynamically growing - line/ring object - - \param p pointer to the dynamically growing line/ring object. - \param x X coordinate of the Point - \param y Y coordinate of the Point - \param z Z coordinate of the Point - - \return the pointer to newly created Point - */ - GAIAGEO_DECLARE gaiaPointPtr - gaiaPrependPointZToDynamicLine (gaiaDynamicLinePtr p, double x, - double y, double z); - -/** - Appends a new 2D Point [XYM] before the first one of a dynamically growing - line/ring object - - \param p pointer to the dynamically growing line/ring object. - \param x X coordinate of the Point - \param y Y coordinate of the Point - \param m M measure of the Point - - \return the pointer to newly created Point - */ - GAIAGEO_DECLARE gaiaPointPtr - gaiaPrependPointMToDynamicLine (gaiaDynamicLinePtr p, double x, - double y, double m); - -/** - Appends a new 3D Point [XYZM] before the first one of a dynamically growing - line/ring object - - \param p pointer to the dynamically growing line/ring object. - \param x X coordinate of the Point - \param y Y coordinate of the Point - \param z Z coordinate of the Point - \param m M measure of the Point - - \return the pointer to newly created Point - */ - GAIAGEO_DECLARE gaiaPointPtr - gaiaPrependPointZMToDynamicLine (gaiaDynamicLinePtr p, double x, - double y, double z, double m); - -/** - Appends a new 2D Point [XY] immediately after the given Point into a - dynamically growing line/ring object - - \param p pointer to the dynamically growing line/ring object. - \param pt pointer to the given Point. - \param x X coordinate of the Point to be appended - \param y Y coordinate of the Point to be appended - - \sa gaiaDynamicLiceInsertBefore - - \return the pointer to newly created Point - */ - GAIAGEO_DECLARE gaiaPointPtr gaiaDynamicLineInsertAfter (gaiaDynamicLinePtr - p, gaiaPointPtr pt, - double x, - double y); - -/** - Appends a new 2D Point [XY] immediately before the given Point into a - dynamically growing line/ring object - - \param p pointer to the dynamically growing line/ring object. - \param pt pointer to the given Point. - \param x X coordinate of the Point to be appended - \param y Y coordinate of the Point to be appended - - \sa gaiaDynamicLiceInsertBeforeAfter - - \return the pointer to newly created Point - */ - GAIAGEO_DECLARE gaiaPointPtr gaiaDynamicLineInsertBefore (gaiaDynamicLinePtr - p, - gaiaPointPtr pt, - double x, - double y); - -/** - Removes a given Point from a dynamically growing line/ring object - - \param p pointer to dynamically growing line/ring object. - \param pt pointer to given Point. - - \note the given Point (referenced by its address) will be removed from - the dynamically growin line/ring object. - \n the given Point will be then implicitly destroyed. - */ - GAIAGEO_DECLARE void gaiaDynamicLineDeletePoint (gaiaDynamicLinePtr p, - gaiaPointPtr pt); - -/** - Duplicates a dynamically growing line/ring object - - \param org pointer to dynamically growing line/ring object [origin]. - - \return the pointer to newly created dynamic growing line/ring object: - NULL on failure. - - \note the newly created object is an exact copy of the original one. - */ - GAIAGEO_DECLARE gaiaDynamicLinePtr gaiaCloneDynamicLine (gaiaDynamicLinePtr - org); - -/** - Duplicates and reverts a dynamically growing line/ring object - - \param org pointer to dynamically growing line/ring object [origin]. - - \return the pointer to newly created dynamic growing line/ring object: - NULL on failure. - - \note the newly created object is an exact copy of the origina one, except - in that direction is reverted. - \n i.e. first inpunt point becomes last output point, and last input point - becomes first output point. - */ - GAIAGEO_DECLARE gaiaDynamicLinePtr - gaiaReverseDynamicLine (gaiaDynamicLinePtr org); - -/** - Cuts a dynamically growing line/ring in two halves, using a given - cut point - - \param org pointer to the input object [the line to be split]. - \param point pointer to given cut point. - - \return the pointer to newly created dynamic growing line/ring object: - NULL on failure. - - \sa gaiaDynamicLineSplitAfter - - \note the newly created object will contain a line going from the orginal - first point to the cut point [excluded]. - \n on completion the orginal line will be reduced, going from the cut - point [included] to the original last point. - */ - GAIAGEO_DECLARE gaiaDynamicLinePtr - gaiaDynamicLineSplitBefore (gaiaDynamicLinePtr org, gaiaPointPtr point); - -/** - Cuts a dynamically growing line/ring in two halves, using a given - cut point - - \param org pointer to the input object [the line to be split]. - \param point pointer to given cut point. - - \return the pointer to newly created dynamic growing line/ring object: - NULL on failure. - - \sa gaiaDynamicLineSplitBefore - - \note the newly created object will contain a line going from the orginal - first point to the cut point [included]. - \n on completion the orginal line will be reduced, going from the cut - point [excluded] to the original last point. - */ - GAIAGEO_DECLARE gaiaDynamicLinePtr - gaiaDynamicLineSplitAfter (gaiaDynamicLinePtr org, gaiaPointPtr point); - -/** - Merges two dynamically growing line/ring object into a single one - - \param org pointer to the first input object [first line]. - \param point pointer to the reference Point object. - \param toJoin pointer to the second input object [second line]. - - \return the pointer to newly created dynamically growing line/ring object - [merged line]: NULL on failure. - - \sa gaiaDynamicLineJoinBefore - - \note the reference Point must exists into the first line: the second line - will then be inserted immediately after the reference Point. - \n The newly created object will represent the resulting merged line: - \n both input objects remain untouched. - */ - GAIAGEO_DECLARE gaiaDynamicLinePtr - gaiaDynamicLineJoinAfter (gaiaDynamicLinePtr org, gaiaPointPtr point, - gaiaDynamicLinePtr toJoin); - -/** - Merges two dynamically growing line/ring object into a single one - - \param org pointer to the first input object [first line]. - \param point pointer to the reference Point object. - \param toJoin pointer to the second input object [second line]. - - \return the pointer to newly created dynamically growing line/ring object - [merged line]: NULL on failure. - - \sa gaiaDynamicLineJoinAfter - - \note the reference Point must exists into the first line: the second line - will then be inserted immediately before the reference Point. - \n The newly created object will represent the resulting merged line: - \n both input objects remain untouched. - */ - GAIAGEO_DECLARE gaiaDynamicLinePtr - gaiaDynamicLineJoinBefore (gaiaDynamicLinePtr org, gaiaPointPtr point, - gaiaDynamicLinePtr toJoin); - -/** - Finds a Point within a dymically growing line/ring object [by coords] - - \param p pointer to dymamically line/ring object. - \param x Point X coordinate. - \param y Point Y coordinate. - - \return the pointer to the corresponding Point object: NULL on failure. - - \sa gaiaDynamicLineFindByPos - - \note if the line object contains more Points sharing the same coordinates, - a reference to the first one found will be returned. - */ - GAIAGEO_DECLARE gaiaPointPtr gaiaDynamicLineFindByCoords (gaiaDynamicLinePtr - p, double x, - double y); - -/** - Finds a Point within a dymically growing line/ring object [by position] - - \param p pointer to dymamically line/ring object. - \param pos relative position [first Point has index 0]. - - \return the pointer to the corresponding Point object: NULL on failure. - - \sa gaiaDynamicLineFindByCoords - */ - GAIAGEO_DECLARE gaiaPointPtr gaiaDynamicLineFindByPos (gaiaDynamicLinePtr p, - int pos); - -/** - Creates a new dynamicly growing line/ring object - - \param coords an array of COORDs, any dimension [XY, XYZ, XYM, XYZM] - \param points number of points [aka vertices] into the array - - \return the pointer to newly created object - - \sa gaiaAllocDynamicLine, gaiaFreeDynamicLine, gaiaLinestringStruct, - gaiaRingStruct - - \note you are responsible to destroy (before or after) any allocated - dynamically growing line/ring object. - \n The COORDs array is usually expected to be one found within a - gaiaLinestring or gaiaRing object. - */ - GAIAGEO_DECLARE gaiaDynamicLinePtr gaiaCreateDynamicLine (double *coords, - int points); - -#ifdef __cplusplus -} -#endif - -#endif /* _GG_DYNAMIC */ diff --git a/src/spatialite/src/headers/spatialite/gg_formats.h b/src/spatialite/src/headers/spatialite/gg_formats.h deleted file mode 100644 index 2708c5b..0000000 --- a/src/spatialite/src/headers/spatialite/gg_formats.h +++ /dev/null @@ -1,1534 +0,0 @@ -/* - gg_formats.h -- Gaia common support for geometries: formats - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Klaus Foerster klaus.foerster@svg.cc - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - - -/** - \file gg_formats.h - - Geometry handling functions: formats - */ - -#ifndef _GG_FORMATS_H -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#define _GG_FORMATS_H -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* function prototypes */ - -/** - Test CPU endianness - - \return 0 if big-endian: any other value if little-endian - */ - GAIAGEO_DECLARE int gaiaEndianArch (void); - -/** - Import an INT-16 value in endian-aware fashion - - \param p endian-dependent representation (input buffer). - \param little_endian 0 if the input buffer is big-endian: any other value - for little-endian. - \param little_endian_arch the value returned by gaiaEndianArch() - - \return the internal SHORT value - - \sa gaiaEndianArch, gaiaExport16 - - \note you are expected to pass an input buffer corresponding to an - allocation size of (at least) 2 bytes. - */ - GAIAGEO_DECLARE short gaiaImport16 (const unsigned char *p, - int little_endian, - int little_endian_arch); - -/** - Import an INT-32 value in endian-aware fashion - - \param p endian-dependent representation (input buffer). - \param little_endian 0 if the input buffer is big-endian: any other value - for little-endian. - \param little_endian_arch the value returned by gaiaEndianArch() - - \return the internal INT value - - \sa gaiaEndianArch, gaiaExport32 - - \note you are expected to pass an input buffer corresponding to an - allocation size of (at least) 4 bytes. - */ - GAIAGEO_DECLARE int gaiaImport32 (const unsigned char *p, int little_endian, - int little_endian_arch); - -/** - Import a FLOAT-32 value in endian-aware fashion - - \param p endian-dependent representation (input buffer). - \param little_endian 0 if the input buffer is big-endian: any other value - for little-endian. - \param little_endian_arch the value returned by gaiaEndianArch() - - \return the internal FLOAT value - - \sa gaiaEndianArch, gaiaExportF32 - - \note you are expected to pass an input buffer corresponding to an - allocation size of (at least) 4 bytes. - */ - GAIAGEO_DECLARE float gaiaImportF32 (const unsigned char *p, - int little_endian, - int little_endian_arch); - -/** - Import an DOUBLE-64 in endian-aware fashion - - \param p endian-dependent representation (input buffer). - \param little_endian 0 if the input buffer is big-endian: any other value - for little-endian. - \param little_endian_arch the value returned by gaiaEndianArch() - - \return the internal DOUBLE value - - \sa gaiaEndianArch, gaiaExport64 - - \note you are expected to pass an input buffer corresponding to an - allocation size of (at least) 8 bytes. - */ - GAIAGEO_DECLARE double gaiaImport64 (const unsigned char *p, - int little_endian, - int little_endian_arch); - -/** - Import an INT-64 in endian-aware fashion - - \param p endian-dependent representation (input buffer). - \param little_endian 0 if the input buffer is big-endian: any other value - for little-endian. - \param little_endian_arch the value returned by gaiaEndianArch() - - \return the internal INT-64 value - - \sa gaiaEndianArch, gaiaExportI64 - - \note you are expected to pass an input buffer corresponding to an - allocation size of (at least) 8 bytes. - */ - GAIAGEO_DECLARE sqlite3_int64 gaiaImportI64 (const unsigned char *p, - int little_endian, - int little_endian_arch); - -/** - Export an INT-16 value in endian-aware fashion - - \param p endian-dependent representation (output buffer). - \param value the internal value to be exported. - \param little_endian 0 if the output buffer has to be big-endian: any other value - for little-endian. - \param little_endian_arch the value returned by gaiaEndianArch() - - \sa gaiaEndianArch, gaiaImport16 - - \note you are expected to pass an output buffer corresponding to an - allocation size of (at least) 2 bytes. - */ - GAIAGEO_DECLARE void gaiaExport16 (unsigned char *p, short value, - int little_endian, - int little_endian_arch); - -/** - Export an INT-32 value in endian-aware fashion - - \param p endian-dependent representation (output buffer). - \param value the internal value to be exported. - \param little_endian 0 if the output buffer has to be big-endian: any other value - for little-endian. - \param little_endian_arch the value returned by gaiaEndianArch() - - \sa gaiaEndianArch, gaiaImport32 - - \note you are expected to pass an output buffer corresponding to an - allocation size of (at least) 4 bytes. - */ - GAIAGEO_DECLARE void gaiaExport32 (unsigned char *p, int value, - int little_endian, - int little_endian_arch); - -/** - Export a FLOAT-32 value in endian-aware fashion - - \param p endian-dependent representation (output buffer). - \param value the internal value to be exported. - \param little_endian 0 if the output buffer has to be big-endian: any other value - for little-endian. - \param little_endian_arch the value returned by gaiaEndianArch() - - \sa gaiaEndianArch, gaiaImportF32 - - \note you are expected to pass an output buffer corresponding to an - allocation size of (at least) 4 bytes. - */ - GAIAGEO_DECLARE void gaiaExportF32 (unsigned char *p, float value, - int little_endian, - int little_endian_arch); - -/** - Export a DOUBLE value in endian-aware fashion - - \param p endian-dependent representation (output buffer). - \param value the internal value to be exported. - \param little_endian 0 if the output buffer has to be big-endian: any other value - for little-endian. - \param little_endian_arch the value returned by gaiaEndianArch() - - \sa gaiaEndianArch, gaiaImport64 - - \note you are expected to pass an output buffer corresponding to an - allocation size of (at least) 8 bytes. - */ - GAIAGEO_DECLARE void gaiaExport64 (unsigned char *p, double value, - int little_endian, - int little_endian_arch); - -/** - Export an INT-64 value in endian-aware fashion - - \param p endian-dependent representation (output buffer). - \param value the internal value to be exported. - \param little_endian 0 if the output buffer has to be big-endian: any other value - for little-endian. - \param little_endian_arch the value returned by gaiaEndianArch() - - \sa gaiaEndianArch, gaiaImportI64 - - \note you are expected to pass an output buffer corresponding to an - allocation size of (at least) 8 bytes. - */ - GAIAGEO_DECLARE void gaiaExportI64 (unsigned char *p, sqlite3_int64 value, - int little_endian, - int little_endian_arch); - -/** - Initializes a dynamically growing Text output buffer - - \param buf pointer to gaiaOutBufferStruct structure - - \sa gaiaOutBufferReset, gaiaAppendToOutBuffer - - \note Text notations representing Geometry objects may easily require - a huge storage amount: the gaiaOutBufferStruct automatically supports - a dynamically growing output buffer. - \n You are required to initialize this structure before attempting - any further operation; - and you are responsible to cleanup any related memory allocation - when it's any longer required. - */ - GAIAGEO_DECLARE void gaiaOutBufferInitialize (gaiaOutBufferPtr buf); - -/** - Resets a dynamically growing Text output buffer to its initial (empty) state - - \param buf pointer to gaiaOutBufferStruct structure - - \sa gaiaOutBufferInitialize, gaiaAppendToOutBuffer - - \note You are required to initialize this structure before attempting - any further operation: - this function will release any related memory allocation. - */ - GAIAGEO_DECLARE void gaiaOutBufferReset (gaiaOutBufferPtr buf); - -/** - Appends a text string at the end of Text output buffer - - \param buf pointer to gaiaOutBufferStruct structure. - \param text the text string to be appended. - - \sa gaiaOutBufferInitialize, gaiaOutBufferReset - - \note You are required to initialize this structure before attempting - any further operation: - the dynamically growing Text buffer will be automatically allocated - and/or extended as required. - */ - GAIAGEO_DECLARE void gaiaAppendToOutBuffer (gaiaOutBufferPtr buf, - const char *text); - -/** - Creates a BLOB-Geometry representing a Point - - \param x Point X coordinate. - \param y Point Y coordinate. - \param srid the SRID to be set for the Point. - \param result on completion will containt a pointer to BLOB-Geometry: - NULL on failure. - \param size on completion this variable will contain the BLOB's size (in bytes) - - \sa gaiaFromSpatiaLiteBlobWkb - - \note the BLOB buffer corresponds to dynamically allocated memory: - so you are responsible to free() it [unless SQLite will take care - of memory cleanup via buffer binding]. - */ - GAIAGEO_DECLARE void gaiaMakePoint (double x, double y, int srid, - unsigned char **result, int *size); - -/** - Creates a BLOB-Geometry representing a PointZ - - \param x Point X coordinate. - \param y Point Y coordinate. - \param z Point Z coordinate. - \param srid the SRID to be set for the Point. - \param result on completion will containt a pointer to BLOB-Geometry: - NULL on failure. - \param size on completion this variable will contain the BLOB's size (in bytes) - - \sa gaiaFromSpatiaLiteBlobWkb - - \note the BLOB buffer corresponds to dynamically allocated memory: - so you are responsible to free() it [unless SQLite will take care - of memory cleanup via buffer binding]. - */ - GAIAGEO_DECLARE void gaiaMakePointZ (double x, double y, double z, int srid, - unsigned char **result, int *size); - -/** - Creates a BLOB-Geometry representing a PointM - - \param x Point X coordinate. - \param y Point Y coordinate. - \param m Point M coordinate. - \param srid the SRID to be set for the Point. - \param result on completion will containt a pointer to BLOB-Geometry: - NULL on failure. - \param size on completion this variable will contain the BLOB's size (in bytes) - - \sa gaiaFromSpatiaLiteBlobWkb - - \note the BLOB buffer corresponds to dynamically allocated memory: - so you are responsible to free() it [unless SQLite will take care - of memory cleanup via buffer binding]. - */ - GAIAGEO_DECLARE void gaiaMakePointM (double x, double y, double m, int srid, - unsigned char **result, int *size); - -/** - Creates a BLOB-Geometry representing a PointZM - - \param x Point X coordinate. - \param y Point Y coordinate. - \param z Point Z coordinate. - \param m Point M coordinate. - \param srid the SRID to be set for the Point. - \param result on completion will containt a pointer to BLOB-Geometry: - NULL on failure. - \param size on completion this variable will contain the BLOB's size (in bytes) - - \sa gaiaFromSpatiaLiteBlobWkb - - \note the BLOB buffer corresponds to dynamically allocated memory: - so you are responsible to free() it [unless SQLite will take care - of memory cleanup via buffer binding]. - */ - GAIAGEO_DECLARE void gaiaMakePointZM (double x, double y, double z, - double m, int srid, - unsigned char **result, int *size); - -/** - Creates a BLOB-Geometry representing a Segment (2-Points Linestring) - - \param geom1 pointer to first Geometry object (expected to represent a Point). - \param geom2 pointer to second Geometry object (expected to represent a Point). - \param result on completion will containt a pointer to BLOB-Geometry: - NULL on failure. - \param size on completion this variable will contain the BLOB's size (in bytes) - - \sa gaiaFromSpatiaLiteBlobWkb - - \note the BLOB buffer corresponds to dynamically allocated memory: - so you are responsible to free() it [unless SQLite will take care - of memory cleanup via buffer binding]. - */ - GAIAGEO_DECLARE void gaiaMakeLine (gaiaGeomCollPtr geom1, - gaiaGeomCollPtr geom2, - unsigned char **result, int *size); - -/** - Creates a Geometry object from the corresponding BLOB-Geometry - - \param blob pointer to BLOB-Geometry - \param size the BLOB's size - - \return the pointer to the newly created Geometry object: NULL on failure - - \sa gaiaFreeGeomColl, gaiaToSpatiaLiteBlobWkb, gaiaToCompressedBlobWkb - - \note you are responsible to destroy (before or after) any allocated Geometry, - unless you've passed ownership of the Geometry object to some further object: - in this case destroying the higher order object will implicitly destroy any - contained child object. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromSpatiaLiteBlobWkb (const unsigned - char *blob, - unsigned int - size); - -/** - Creates a BLOB-Geometry corresponding to a Geometry object - - \param geom pointer to the Geometry object. - \param result on completion will containt a pointer to BLOB-Geometry: - NULL on failure. - \param size on completion this variable will contain the BLOB's size (in bytes) - - \sa gaiaFromSpatiaLiteBlobWkb, gaiaToCompressedBlobWkb - - \note the BLOB buffer corresponds to dynamically allocated memory: - so you are responsible to free() it [unless SQLite will take care - of memory cleanup via buffer binding]. - */ - GAIAGEO_DECLARE void gaiaToSpatiaLiteBlobWkb (gaiaGeomCollPtr geom, - unsigned char **result, - int *size); - -/** - Creates a Compressed BLOB-Geometry corresponding to a Geometry object - - \param geom pointer to the Geometry object. - \param result on completion will containt a pointer to Compressed BLOB-Geometry: - NULL on failure. - \param size on completion this variable will contain the BLOB's size (in bytes) - - \sa gaiaFromSpatiaLiteBlobWkb, gaiaToSpatiaLiteBlobWkb - - \note this function will apply compression to any Linestring / Ring found - within the Geometry to be encoded. - \n the returned BLOB buffer corresponds to dynamically allocated memory: - so you are responsible to free() it [unless SQLite will take care - of memory cleanup via buffer binding]. - */ - GAIAGEO_DECLARE void gaiaToCompressedBlobWkb (gaiaGeomCollPtr geom, - unsigned char **result, - int *size); - -/** - Creates a Geometry object from WKB notation - - \param blob pointer to WKB buffer - \param size the BLOB's size (in bytes) - - \return the pointer to the newly created Geometry object: NULL on failure. - - \sa gaiaToWkb, gaiaToHexWkb, gaiaFromEWKB, gaiaToEWKB - - \note you are responsible to destroy (before or after) any allocated Geometry, - unless you've passed ownership of the Geometry object to some further object: - in this case destroying the higher order object will implicitly destroy any - contained child object. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromWkb (const unsigned char *blob, - unsigned int size); - -/** - Encodes a Geometry object into WKB notation - - \param geom pointer to Geometry object - \param result on completion will containt a pointer to the WKB buffer [BLOB]: - NULL on failure. - \param size on completion this variable will contain the BLOB's size (in bytes) - - \sa gaiaFromWkb, gaiaToHexWkb, gaiaFromEWKB, gaiaToEWKB - - \note this function will apply 3D WKB encoding as internally intended by - SpatiaLite: not necessarily intended by other OGC-like implementations. - \n Anyway, 2D WKB is surely standard and safely interoperable. - \n the returned BLOB buffer corresponds to dynamically allocated memory: - so you are responsible to free() it [unless SQLite will take care - of memory cleanup via buffer binding]. - */ - GAIAGEO_DECLARE void gaiaToWkb (gaiaGeomCollPtr geom, - unsigned char **result, int *size); - -/** - Encodes a Geometry object into (hex) WKB notation - - \param geom pointer to Geometry object - - \return the pointer to a text buffer containing WKB translated into plain - hexadecimal: NULL on failure. - - \sa gaiaFromWkb, gaiaToWkb, gaiaFromEWKB, gaiaToEWKB - - \note the returned buffer corresponds to dynamically allocated memory: - so you are responsible to free() it [unless SQLite will take care - of memory cleanup via buffer binding]. - */ - GAIAGEO_DECLARE char *gaiaToHexWkb (gaiaGeomCollPtr geom); - -/** - Encodes a Geometry object into EWKB notation - - \param out_buf pointer to dynamically growing Text buffer - \param geom pointer to Geometry object - - \sa gaiaFromWkb, gaiaToWkb, gaiaToHexWkb, gaiaFromEWKB, gaiaToEWKB - - \note this function will produce strictly conformat EWKB; you can - safely use this for PostGIS data exchange. - */ - GAIAGEO_DECLARE void gaiaToEWKB (gaiaOutBufferPtr out_buf, - gaiaGeomCollPtr geom); - -/** - Creates a Geometry object from EWKB notation - - \param in_buffer pointer to EWKB buffer - - \return the pointer to the newly created Geometry object: NULL on failure. - - \sa gaiaToWkb, gaiaToHexWkb, gaiaParseHexEWKB, gaiaToEWKB, gaiaEwkbGetPoint, - gaiaEwkbGetLinestring, gaiaEwkbGetPolygon, gaiaEwkbGetMultiGeometry - - \note you are responsible to destroy (before or after) any allocated Geometry, - unless you've passed ownership of the Geometry object to some further object: - in this case destroying the higher order object will implicitly destroy any - contained child object. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromEWKB (const unsigned char - *in_buffer); - -/** - Translates an EWKB notation from hexadecimal into binary - - \param blob_hex pointer to EWKB input buffer (hexadecimal text string) - \param blob_size lenght (in bytes) of the input buffer; if succesfull will - contain the lenght of the returned output buffer. - - \return the pointer to the newly created EWKB binary buffer: NULL on failure. - - \sa gaiaToWkb, gaiaToHexWkb, gaiaFromEWKB, gaiaToEWKB - - \note you are responsible to destroy (before or after) any buffer allocated by - gaiaParseHexEWKB() - */ - GAIAGEO_DECLARE unsigned char *gaiaParseHexEWKB (const unsigned char - *blob_hex, int *blob_size); - -/** - Attempts to decode a Point from within an EWKB binary buffer - - \param geom pointer to an existing Geometry object; if succesfull the parsed Point - will be inserted into this Geometry - \param blob pointer to EWKB input buffer - \param offset the offset (in bytes) on the input buffer where the Point definition is expected to start. - \param blob_size lenght (in bytes) of the input buffer. - \param endian (boolean) states if the EWKB input buffer is little- or big-endian encode. - \param endiam_arch (boolean) states if the target CPU has a little- or big-endian architecture. - \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_Z_M - - \return -1 on failure; otherwise the offset where the next object starts. - - \sa gaiaEwkbGetLinestring, gaiaEwkbGetPolygon, gaiaEwkbGetMultiGeometry - - \note these functions are mainly intended for internal usage. - */ - GAIAGEO_DECLARE int - gaiaEwkbGetPoint (gaiaGeomCollPtr geom, unsigned char *blob, - int offset, int blob_size, int endian, - int endian_arch, int dims); - -/** - Attempts to decode a Point from within an EWKB binary buffer - - \param geom pointer to an existing Geometry object; if succesfull the parsed Linestring - will be inserted into this Geometry - \param blob pointer to EWKB input buffer - \param offset the offset (in bytes) on the input buffer where the Point definition is expected to start. - \param blob_size lenght (in bytes) of the input buffer. - \param endian (boolean) states if the EWKB input buffer is little- or big-endian encode. - \param endiam_arch (boolean) states if the target CPU has a little- or big-endian architecture. - \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_Z_M - - \return -1 on failure; otherwise the offset where the next object starts. - - \sa gaiaEwkbGetPoint, gaiaEwkbGetPolygon, gaiaEwkbGetMultiGeometry - - \note these functions are mainly intended for internal usage. - */ - GAIAGEO_DECLARE int - gaiaEwkbGetLinestring (gaiaGeomCollPtr geom, unsigned char *blob, - int offset, int blob_size, int endian, - int endian_arch, int dims); - -/** - Attempts to decode a Polygon from within an EWKB binary buffer - - \param geom pointer to an existing Geometry object; if succesfull the parsed Polygon - will be inserted into this Geometry - \param blob pointer to EWKB input buffer - \param offset the offset (in bytes) on the input buffer where the Point definition is expected to start. - \param blob_size lenght (in bytes) of the input buffer. - \param endian (boolean) states if the EWKB input buffer is little- or big-endian encode. - \param endiam_arch (boolean) states if the target CPU has a little- or big-endian architecture. - \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_Z_M - - \return -1 on failure; otherwise the offset where the next object starts. - - \sa gaiaEwkbGetPoint, gaiaEwkbGetPolygon, gaiaEwkbGetMultiGeometry - */ - GAIAGEO_DECLARE int - gaiaEwkbGetPolygon (gaiaGeomCollPtr geom, unsigned char *blob, - int offset, int blob_size, int endian, - int endian_arch, int dims); - -/** - Attempts to decode a MultiGeometry from within an EWKB binary buffer - - \param geom pointer to an existing Geometry object; if succesfull the parsed MultiGeometry - will be inserted into this Geometry - \param blob pointer to EWKB input buffer - \param offset the offset (in bytes) on the input buffer where the Point definition is expected to start. - \param blob_size lenght (in bytes) of the input buffer. - \param endian (boolean) states if the EWKB input buffer is little- or big-endian encode. - \param endiam_arch (boolean) states if the target CPU has a little- or big-endian architecture. - \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_Z_M - - \return -1 on failure; otherwise the offset where the next object starts. - - \sa gaiaEwkbGetPoint, gaiaEwkbGetLinestring, gaiaEwkbGetPolygon - - \note these functions are mainly intended for internal usage. - */ - GAIAGEO_DECLARE int - gaiaEwkbGetMultiGeometry (gaiaGeomCollPtr geom, unsigned char *blob, - int offset, int blob_size, int endian, - int endian_arch, int dims); - -/** - Creates a Geometry object from FGF notation - - \param blob pointer to FGF buffer - \param size the BLOB's size (in bytes) - - \return the pointer to the newly created Geometry object: NULL on failure. - - \sa gaiaToFgf - - \note you are responsible to destroy (before or after) any allocated Geometry, - unless you've passed ownership of the Geometry object to some further object: - in this case destroying the higher order object will implicitly destroy any - contained child object. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromFgf (const unsigned char *blob, - unsigned int size); - -/** - Encodes a Geometry object into FGF notation - - \param geom pointer to Geometry object - \param result on completion will containt a pointer to the FGF buffer [BLOB]: - NULL on failure. - \param size on completion this variable will contain the BLOB's size (in bytes) - \param coord_dims one of: GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM - - \sa gaiaFromFgf - - \note the returned BLOB buffer corresponds to dynamically allocated memory: - so you are responsible to free() it [unless SQLite will take care - of memory cleanup via buffer binding]. - */ - GAIAGEO_DECLARE void gaiaToFgf (gaiaGeomCollPtr geom, - unsigned char **result, int *size, - int coord_dims); - -/** - Creates a Geometry object from WKT notation - - \param in_buffer pointer to WKT buffer - \param type the expected Geometry Class Type - \n if actual type defined in WKT doesn't corresponds to this, an error will - be raised. - - \return the pointer to the newly created Geometry object: NULL on failure - - \sa gaiaOutWkt, gaiaOutWktStrict, gaiaParseEWKT, gaiaToEWKT - - \note you are responsible to destroy (before or after) any allocated Geometry, - unless you've passed ownership of the Geometry object to some further object: - in this case destroying the higher order object will implicitly destroy any - contained child object. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaParseWkt (const unsigned char - *in_buffer, short type); - -/** - Encodes a Geometry object into WKT notation - - \param out_buf pointer to dynamically growing Text buffer - \param geom pointer to Geometry object - - \sa gaiaParseWkt, gaiaOutWktStrict, gaiaParseEWKT, gaiaToEWKT - - \note this function will apply 3D WKT encoding as internally intended by - SpatiaLite: not necessarily intended by other OGC-like implementations. - \n Anyway, 2D WKT is surely standard and safely interoperable. - */ - GAIAGEO_DECLARE void gaiaOutWkt (gaiaOutBufferPtr out_buf, - gaiaGeomCollPtr geom); - -/** - Encodes a Geometry object into strict 2D WKT notation - - \param out_buf pointer to dynamically growing Text buffer - \param geom pointer to Geometry object - \param precision decimal digits to be used for coordinates - - \sa gaiaParseWkt, gaiaOutWkt, gaiaParseEWKT, gaiaToEWKT - - \note this function will apply strict 2D WKT encoding, so to be surely - standard and safely interoperable. - \n Dimensions will be automatically casted to 2D [XY] when required. - */ - GAIAGEO_DECLARE void gaiaOutWktStrict (gaiaOutBufferPtr out_buf, - gaiaGeomCollPtr geom, int precision); - -/** - Creates a Geometry object from EWKT notation - - \param in_buffer pointer to EWKT buffer - - \return the pointer to the newly created Geometry object: NULL on failure - - \sa gaiaParseWkt, gaiaOutWkt, gaiaOutWktStrict, gaiaToEWKT - - \note you are responsible to destroy (before or after) any allocated Geometry, - unless you've passed ownership of the Geometry object to some further object: - in this case destroying the higher order object will implicitly destroy any - contained child object. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaParseEWKT (const unsigned char - *in_buffer); - -/** - Encodes a Geometry object into EWKT notation - - \param out_buf pointer to dynamically growing Text buffer - \param geom pointer to Geometry object - - \sa gaiaParseWkt, gaiaOutWkt, gaiaOutWktStrict, gaiaParseEWKT - - \note this function will apply PostGIS own EWKT encoding. - */ - GAIAGEO_DECLARE void gaiaToEWKT (gaiaOutBufferPtr out_buf, - gaiaGeomCollPtr geom); - -/** - Encodes a WKT 3D Point [XYZ] - - \param out_buf pointer to dynamically growing Text buffer - \param point pointer to Point object - - \sa gaiaOutLinestringZ, gaiaOutPolygonZ - - \remark mainly intended for internal usage. - */ - GAIAGEO_DECLARE void gaiaOutPointZ (gaiaOutBufferPtr out_buf, - gaiaPointPtr point); - -/** - Encodes a WKT 3D Linestring [XYZ] - - \param out_buf pointer to dynamically growing Text buffer - \param linestring pointer to Linestring object - - \sa gaiaOutPointZ, gaiaOutPolygonZ - - \remark mainly intended for internal usage. - */ - GAIAGEO_DECLARE void gaiaOutLinestringZ (gaiaOutBufferPtr out_buf, - gaiaLinestringPtr linestring); - -/** - Encodes a WKT 3D Polygon [XYZ] - - \param out_buf pointer to dynamically growing Text buffer - \param polygon pointer to Point object - - \sa gaiaOutPointZ, gaiaOutLinestringZ - - \remark mainly intended for internal usage. - */ - GAIAGEO_DECLARE void gaiaOutPolygonZ (gaiaOutBufferPtr out_buf, - gaiaPolygonPtr polygon); -/** - Creates a Geometry object from KML notation - - \param in_buffer pointer to KML buffer - - \return the pointer to the newly created Geometry object: NULL on failure - - \sa gaiaOutBareKml, gaiaOutFullKml - - \note you are responsible to destroy (before or after) any allocated Geometry, - unless you've passed ownership of the Geometry object to some further object: - in this case destroying the higher order object will implicitly destroy any - contained child object. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaParseKml (const unsigned char - *in_buffer); - -/** - Encodes a Geometry object into KML notation - - \param out_buf pointer to dynamically growing Text buffer - \param geom pointer to Geometry object - \param precision decimal digits to be used for coordinates - - \sa gaiaParseKml, gaiaOutFullKml - - \note this function will export the simplest KML notation (no descriptions). - */ - GAIAGEO_DECLARE void gaiaOutBareKml (gaiaOutBufferPtr out_buf, - gaiaGeomCollPtr geom, int precision); - -/** - Encodes a Geometry object into KML notation - - \param out_buf pointer to dynamically growing Text buffer - \param name text string to be set as KML \e name - \param desc text string to se set as KML \e description - \param geom pointer to Geometry object - \param precision decimal digits to be used for coordinates - - \sa gaiaParseKml, gaiaOutBareKml - - \note this function will export the simplest KML notation (no descriptions). - */ - GAIAGEO_DECLARE void gaiaOutFullKml (gaiaOutBufferPtr out_buf, - const char *name, const char *desc, - gaiaGeomCollPtr geom, int precision); - -/** - Creates a Geometry object from GML notation - - \param in_buffer pointer to GML buffer - \param sqlite_handle handle to current DB connection - - \return the pointer to the newly created Geometry object: NULL on failure - - \sa gaiaOutGml - - \note you are responsible to destroy (before or after) any allocated Geometry, - unless you've passed ownership of the Geometry object to some further object: - in this case destroying the higher order object will implicitly destroy any - contained child object. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaParseGml (const unsigned char - *in_buffer, - sqlite3 * sqlite_handle); - -/** - Encodes a Geometry object into GML notation - - \param out_buf pointer to dynamically growing Text buffer - \param version GML version - \param precision decimal digits to be used for coordinates - \param geom pointer to Geometry object - - \sa gaiaParseGml - - \note if \e version is set to \b 3, then GMLv3 will be used; - in any other case GMLv2 will be assumed by default. - */ - GAIAGEO_DECLARE void gaiaOutGml (gaiaOutBufferPtr out_buf, int version, - int precision, gaiaGeomCollPtr geom); - -/** - Creates a Geometry object from GeoJSON notation - - \param in_buffer pointer to GeoJSON buffer - - \return the pointer to the newly created Geometry object: NULL on failure - - \sa gaiaOutGeoJSON - - \note you are responsible to destroy (before or after) any allocated Geometry, - unless you've passed ownership of the Geometry object to some further object: - in this case destroying the higher order object will implicitly destroy any - contained child object. - */ - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaParseGeoJSON (const unsigned char - *in_buffer); - -/** - Encodes a Geometry object into GeoJSON notation - - \param out_buf pointer to dynamically growing Text buffer - \param geom pointer to Geometry object - \param precision decimal digits to be used for coordinates - \param options GeoJSON specific options - - \sa gaiaParseGeoJSON - - \note \e options can assume the following values: - \li 1 = BBOX, no CRS - \li 2 = no BBOX, short form CRS - \li 3 = BBOX, short form CRS - \li 4 = no BBOX, long form CRS - \li 5 = BBOX, long form CRS - \li any other value: no BBOX and no CRS - */ - GAIAGEO_DECLARE void gaiaOutGeoJSON (gaiaOutBufferPtr out_buf, - gaiaGeomCollPtr geom, int precision, - int options); -/** - Encodes a Geometry object into SVG notation - - \param out_buf pointer to dynamically growing Text buffer - \param geom pointer to Geometry object - \param relative flag: relative or absolute coordinates - \param precision decimal digits to be used for coordinates - - \note if \e relative is set to \b 1, then SVG relative coords will be used: - in any other case SVG absolute coords will be assumed by default. - */ - GAIAGEO_DECLARE void gaiaOutSvg (gaiaOutBufferPtr out_buf, - gaiaGeomCollPtr geom, int relative, - int precision); - -/** - Allocates a new DBF Field Value object [duplicating an existing one] - - \param org pointer to input DBF Field Value object. - - \return the pointer to newly created DBF Field object. - - \sa gaiaAllocDbfField, gaiaFreeDbfField, gaiaCloneDbfField, gaiaCloneValue, - gaiaSetNullValue, gaiaSetIntValue, gaiaSetDoubleValue, - gaiaSetStrValue - - \note the newly created object is an exact copy of the original one. - */ - GAIAGEO_DECLARE gaiaValuePtr gaiaCloneValue (gaiaValuePtr org); - -/** - Resets a DBF Field Value object to its initial empty state - - \param p pointer to DBF Field Value object - - \sa gaiaAllocDbfField, gaiaCloneDbfField, gaiaCloneValue, - gaiaSetNullValue, gaiaSetIntValue, gaiaSetDoubleValue, - gaiaSetStrValue, gaiaResetDbfEntity - */ - GAIAGEO_DECLARE void gaiaFreeValue (gaiaValuePtr p); - -/** - Allocates a new DBF Field object - - \param name text string: DBF Field name. - \param type identifier of the corresponding DBF data type. - \param offset corresponding offset into the DBF I/O buffer. - \param length max field length (in bytes). - \param decimals precision: number of decimal digits. - - \return the pointer to newly created DBF Field object. - - \sa gaiaFreeDbfField, gaiaCloneDbfField, gaiaFreeValue, - gaiaSetNullValue, gaiaSetIntValue, gaiaSetDoubleValue, - gaiaSetStrValue - - \note you are responsible to destroy (before or after) any allocated DBF Field, - unless you've passed ownership to some further object: in this case destroying the higher order object will implicitly destroy any contained child object. - \n supported DBF data types are: - \li 'C' text string [default] - \li 'N' numeric - \li 'D' date - \li 'L' boolean - */ - GAIAGEO_DECLARE gaiaDbfFieldPtr gaiaAllocDbfField (char *name, - unsigned char type, - int offset, - unsigned char length, - unsigned char decimals); - -/** - Destroys a DBF Field object - - \param p pointer to DBF Field object - - \sa gaiaAllocDbfField, gaiaCloneDbfField, gaiaCloneValue, - gaiaFreeValue, gaiaSetNullValue, gaiaSetIntValue, gaiaSetDoubleValue, - gaiaSetStrValue - */ - GAIAGEO_DECLARE void gaiaFreeDbfField (gaiaDbfFieldPtr p); - -/** - Allocates a new DBF Field object [duplicating an existing one] - - \param org pointer to input DBF Field object. - - \return the pointer to newly created DBF Field object. - - \sa gaiaAllocDbfField, gaiaFreeDbfField, gaiaCloneDbfField, - gaiaFreeValue, gaiaSetNullValue, gaiaSetIntValue, gaiaSetDoubleValue, - gaiaSetStrValue - - \note the newly created object is an exact copy of the original one - [this including an evantual Field Value]. - */ - GAIAGEO_DECLARE gaiaDbfFieldPtr gaiaCloneDbfField (gaiaDbfFieldPtr org); - -/** - Sets a NULL current value for a DBF Field object - - \param field pointer to DBF Field object - - \sa gaiaAllocDbfField, gaiaFreeDbfField, gaiaCloneDbfField, - gaiaFreeValue, gaiaSetIntValue, gaiaSetDoubleValue, - gaiaSetStrValue - */ - GAIAGEO_DECLARE void gaiaSetNullValue (gaiaDbfFieldPtr field); - -/** - Sets an INTEGER current value for a DBF Field object - - \param field pointer to DBF Field object. - \param value integer value to be set. - - \sa gaiaAllocDbfField, gaiaFreeDbfField, gaiaCloneDbfField, - gaiaFreeValue, gaiaSetNullValue, gaiaSetDoubleValue, - gaiaSetStrValue - */ - GAIAGEO_DECLARE void gaiaSetIntValue (gaiaDbfFieldPtr field, - sqlite3_int64 value); - -/** - Sets a DOUBLE current value for a DBF Field object - - \param field pointer to DBF Field object. - \param value double value to be set. - - \sa gaiaAllocDbfField, gaiaFreeDbfField, gaiaCloneDbfField, - gaiaFreeValue, gaiaSetNullValue, gaiaSetIntValue, gaiaSetStrValue - */ - GAIAGEO_DECLARE void gaiaSetDoubleValue (gaiaDbfFieldPtr field, - double value); - -/** - Sets a TEXT current value for a DBF Field object - - \param field pointer to DBF Field object. - \param str text string value to be set. - - \sa gaiaAllocDbfField, gaiaFreeDbfField, gaiaCloneDbfField, - gaiaFreeValue, gaiaSetNullValue, gaiaSetIntValue, gaiaSetDoubleValue - */ - GAIAGEO_DECLARE void gaiaSetStrValue (gaiaDbfFieldPtr field, char *str); - -/** - Creates an initially empty DBF List object - - \return the pointer to newly allocated DBF List object: NULL on failure. - - \sa gaiaFreeDbfList, gaiaIsValidDbfList, - gaiaResetDbfEntity, gaiaCloneDbfEntity, gaiaAddDbfField - - \note you are responsible to destroy (before or after) any allocated DBF List, - unless you've passed ownership to some further object: in this case destroying - the higher order object will implicitly destroy any contained child object. - */ - GAIAGEO_DECLARE gaiaDbfListPtr gaiaAllocDbfList (void); - -/** - Destroys a DBF List object - - \param list pointer to the DBF List object - - \sa gaiaAllocDbfList, gaiaIsValidDbfList, - gaiaResetDbfEntity, gaiaCloneDbfEntity, gaiaAddDbfField - - \note attempting to destroy any DBF List object whose ownnership has already - been transferred to some other (higher order) object is a serious error, - and will easily cause severe memory corruption. - */ - GAIAGEO_DECLARE void gaiaFreeDbfList (gaiaDbfListPtr list); - -/** - Checks a DBF List object for validity - - \param list pointer to the DBF List object. - - \return 0 if not valid: any other value if valid. - - \sa gaiaAllocDbfList, gaiaFreeDbfList, gaiaIsValidDbfList, - gaiaResetDbfEntity, gaiaCloneDbfEntity, gaiaAddDbfField - */ - GAIAGEO_DECLARE int gaiaIsValidDbfList (gaiaDbfListPtr list); - -/** - Inserts a further DBF Field object into a DBF List object - - \param list pointer to the DBF List object. - \param name text string: DBF Field name. - \param type identifier of the corresponding DBF data type. - \param offset corresponding offset into the DBF I/O buffer. - \param length max field length (in bytes). - \param decimals precision: number of decimal digits. - - \return the pointer to newly created DBF Field object. - - \sa gaiaAllocDbfField - - \note supported DBF data types are: - \li 'C' text string [default] - \li 'N' numeric - \li 'D' date - \li 'L' boolean - */ - GAIAGEO_DECLARE gaiaDbfFieldPtr gaiaAddDbfField (gaiaDbfListPtr list, - char *name, - unsigned char type, - int offset, - unsigned char length, - unsigned char decimals); - -/** - Resets a DBF List object to its initial empty state - - \param list pointer to the DBF List object. - - \sa gaiaFreeValue - - \note any DBF Field associated to the List object will be reset to its - initial empty state (i.e. \e no \e value at all). - */ - GAIAGEO_DECLARE void gaiaResetDbfEntity (gaiaDbfListPtr list); - -/** - Allocates a new DBF List object [duplicating an existing one] - - \param org pointer to input DBF List object. - - \return the pointer to newly created DBF List object. - - \sa gaiaCloneDbfField, gaiaCloneValue, - - \note the newly created object is an exact copy of the original one. - \n this including any currently set Field Value. - */ - GAIAGEO_DECLARE gaiaDbfListPtr gaiaCloneDbfEntity (gaiaDbfListPtr org); - -/** - Allocates a new Shapefile object. - - \return the pointer to newly created Shapefile object. - - \sa gaiaFreeShapefile, gaiaOpenShpRead, gaiaOpenShpWrite, - gaiaReadShpEntity, gaiaShpAnalyze, gaiaWriteShpEntity, gaiaFlushShpHeaders - - \note you are responsible to destroy (before or after) any allocated Shapefile. - \n you should phisically open the Shapefile in \e read or \e write mode - before performing any actual I/O operation. - */ - GAIAGEO_DECLARE gaiaShapefilePtr gaiaAllocShapefile (void); - -/** - Destroys a Shapefile object - - \param shp pointer to the Shapefile object. - - \sa gaiaAllocShapefile, gaiaOpenShpRead, gaiaOpenShpWrite, - gaiaReadShpEntity, gaiaShpAnalyze, gaiaWriteShpEntity, gaiaFlushShpHeaders - - \note destroying the Shapefile object will close any related file: - anyway you a responsible to explicitly call gaiaFlushShpHeader - before destroyng a Shapefile opened in \e write mode. - */ - GAIAGEO_DECLARE void gaiaFreeShapefile (gaiaShapefilePtr shp); - -/** - Open a Shapefile in read mode - - \param shp pointer to the Shapefile object. - \param path \e abstract pathname to the corresponding file-system files. - \param charFrom GNU ICONV name identifying the input charset encoding. - \param charTo GNU ICONV name identifying the output charset encoding. - - \sa gaiaAllocShapefile, gaiaFreeShapefile, gaiaOpenShpWrite, - gaiaReadShpEntity, gaiaShpAnalyze, gaiaWriteShpEntity, gaiaFlushShpHeaders - - \note on failure the object member \e Valid will be set to 0; and the - object member \e LastError will contain the appropriate error message. - \n the \e abstract pathname should not contain any suffix at all. - */ - GAIAGEO_DECLARE void gaiaOpenShpRead (gaiaShapefilePtr shp, - const char *path, - const char *charFrom, - const char *charTo); - -/** - Open a Shapefile in read mode - - \param shp pointer to the Shapefile object. - \param path \e abstract pathname to the corresponding file-system files. - \param shape the SHAPE code; expected to be one of GAIA_SHP_POINT, - GAIA_SHP_POLYLINE, GAIA_SHP_POLYGON, GAIA_SHP_MULTIPOINT, GAIA_SHP_POINTZ, - GAIA_SHP_POLYLINEZ, GAIA_SHP_POLYGONZ, GAIA_SHP_MULTIPOINTZ, - GAIA_SHP_POINTM, GAIA_SHP_POLYLINEM, GAIA_SHP_POLYGONM, GAIA_SHP_MULTIPOINTM - \param list pointer to DBF List object representing the corresponding - data attributes. - \param charFrom GNU ICONV name identifying the input charset encoding. - \param charTo GNU ICONV name identifying the output charset encoding. - - \sa gaiaAllocShapefile, gaiaFreeShapefile, gaiaOpenShpRead, - gaiaReadShpEntity, gaiaShpAnalyze, gaiaWriteShpEntity, gaiaFlushShpHeaders - - \note on failure the object member \e Valid will be set to 0; and the - object member \e LastError will contain the appropriate error message. - \n the \e abstract pathname should not contain any suffix at all. - */ - GAIAGEO_DECLARE void gaiaOpenShpWrite (gaiaShapefilePtr shp, - const char *path, int shape, - gaiaDbfListPtr list, - const char *charFrom, - const char *charTo); - -/** - Reads a feature from a Shapefile object - - \param shp pointer to the Shapefile object. - \param current_row the row number identifying the feature to be read. - \param srid feature's SRID - - \return 0 on failure: any other value on success. - - \sa gaiaAllocShapefile, gaiaFreeShapefile, gaiaOpenShpRead, gaiaOpenShpWrite, - gaiaShpAnalyze, gaiaWriteShpEntity, gaiaFlushShpHeaders - - \note on completion the Shapefile's \e Dbf member will contain the feature - read: - \li the \e Dbf->Geometry member will contain the corresponding Geometry - \li and the \e Dbf->First member will point to the linked list containing - the corresponding data attributes [both data formats and values]. - - \remark the Shapefile object should be opened in \e read mode. - */ - GAIAGEO_DECLARE int gaiaReadShpEntity (gaiaShapefilePtr shp, - int current_row, int srid); - -/** - Prescans a Shapefile object gathering informations - - \param shp pointer to the Shapefile object. - - \sa gaiaAllocShapefile, gaiaFreeShapefile, gaiaOpenShpRead, gaiaOpenShpWrite, - gaiaReadShpEntity, gaiaWriteShpEntity, gaiaFlushShpHeaders - - \note on completion the Shapefile's \e EffectiveType will containt the - Geometry type corresponding to features actually found. - - \remark the Shapefile object should be opened in \e read mode. - */ - GAIAGEO_DECLARE void gaiaShpAnalyze (gaiaShapefilePtr shp); - -/** - Writes a feature into a Shapefile object - - \param shp pointer to the Shapefile object. - \param entity pointer to DBF List object containing both Geometry and Field - values. - - \return 0 on failure: any other value on success. - - \sa gaiaAllocShapefile, gaiaFreeShapefile, gaiaOpenShpRead, gaiaOpenShpWrite, - gaiaReadShpEntity, gaiaShpAnalyze, gaiaFlushShpHeaders - - \remark the Shapefile object should be opened in \e write mode. - */ - GAIAGEO_DECLARE int gaiaWriteShpEntity (gaiaShapefilePtr shp, - gaiaDbfListPtr entity); - -/** - Writes into an output Shapefile any required header / footer - - \param shp pointer to the Shapefile object. - - \sa gaiaAllocShapefile, gaiaFreeShapefile, gaiaOpenShpRead, gaiaOpenShpWrite, - gaiaReadShpEntity, gaiaShpAnalyze, gaiaWriteShpEntity - - \note forgetting to call gaiaFlushShpHeader for any Shapefile opened in - \e write mode immediately before destroying the object, will surely - cause severe file corruption. - */ - GAIAGEO_DECLARE void gaiaFlushShpHeaders (gaiaShapefilePtr shp); - -/** - Allocates a new DBF File object. - - \return the pointer to newly created DBF File object. - - \sa gaiaFreeDbf, gaiaOpenDbfRead, gaiaOpenDbfWrite, - gaiaReadDbfEntity, gaiaWriteDbfEntity, gaiaFlushDbfHeader - - \note you are responsible to destroy (before or after) any allocated DBF File. - \n you should phisically open the DBF File in \e read or \e write mode - before performing any actual I/O operation. - */ - GAIAGEO_DECLARE gaiaDbfPtr gaiaAllocDbf (void); - -/** - Destroys a DBF File object - - \param dbf pointer to the DBF File object. - - \sa gaiaAllocDbf, gaiaFreeDbf, gaiaOpenDbfWrite, - gaiaReadDbfEntity, gaiaWriteDbfEntity, gaiaFlushDbfHeader - - \note destroying the Shapefile object will close any related file: - anyway you a responsible to explicitly call gaiaFlushShpHeader - before destroyng a Shapefile opened in \e write mode. - */ - GAIAGEO_DECLARE void gaiaFreeDbf (gaiaDbfPtr dbf); - -/** - Open a DBF File in read mode - - \param dbf pointer to the DBF File object. - \param path pathname to the corresponding file-system file. - \param charFrom GNU ICONV name identifying the input charset encoding. - \param charTo GNU ICONV name identifying the output charset encoding. - - \sa gaiaAllocDbf, gaiaFreeDbf, gaiaOpenDbfWrite, - gaiaReadDbfEntity, gaiaWriteDbfEntity, gaiaFlushDbfHeader - - \note on failure the object member \e Valid will be set to 0; and the - object member \e LastError will contain the appropriate error message. - */ - GAIAGEO_DECLARE void gaiaOpenDbfRead (gaiaDbfPtr dbf, - const char *path, - const char *charFrom, - const char *charTo); - -/** - Open a DBF File in write mode - - \param dbf pointer to the DBF File object. - \param path pathname to the corresponding file-system file. - \param charFrom GNU ICONV name identifying the input charset encoding. - \param charTo GNU ICONV name identifying the output charset encoding. - - \sa gaiaAllocDbf, gaiaFreeDbf, gaiaOpenDbfRead, - gaiaReadDbfEntity, gaiaWriteDbfEntity, gaiaFlushDbfHeader - - \note on failure the object member \e Valid will be set to 0; and the - object member \e LastError will contain the appropriate error message. - */ - GAIAGEO_DECLARE void gaiaOpenDbfWrite (gaiaDbfPtr dbf, - const char *path, - const char *charFrom, - const char *charTo); - -/** - Reads a record from a DBF File object - - \param dbf pointer to the DBF File object. - \param current_row the row number identifying the record to be read. - \param deleted on completion this variable will contain 0 if the record - just read is valid: any other value if the record just read is marked as - \e logically \e deleted. - - \return 0 on failure: any other value on success. - - \sa gaiaAllocDbf, gaiaFreeDbf, gaiaOpenDbfRead, gaiaOpenDbfWrite, - gaiaFlushDbfHeader - - \note on completion the DBF File \e First member will point to the - linked list containing the corresponding data attributes [both data - formats and values]. - - \remark the DBF File object should be opened in \e read mode. - */ - GAIAGEO_DECLARE int gaiaReadDbfEntity (gaiaDbfPtr dbf, int current_row, - int *deleted); - -/** - Writes a record into a DBF File object - - \param dbf pointer to the DBF File object. - \param entity pointer to DBF List object containing Fields and corresponding - values. - - \return 0 on failure: any other value on success. - - \sa gaiaAllocDbf, gaiaFreeDbf, gaiaOpenDbfRead, gaiaOpenDbfWrite, - gaiaReadDbfEntity, gaiaFlushDbfHeader - - \remark the DBF File object should be opened in \e write mode. - */ - GAIAGEO_DECLARE int gaiaWriteDbfEntity (gaiaDbfPtr dbf, - gaiaDbfListPtr entity); - -/** - Writes into an output DBF File any required header / footer - - \param dbf pointer to the DBF File object. - - \sa gaiaAllocDbf, gaiaFreeDbf, gaiaOpenDbfRead, gaiaOpenDbfWrite, - gaiaReadDbfEntity, gaiaWriteDbfEntity - - \note forgetting to call gaiaFlushDbfHeader for any DBF File opened in - \e write mode immediately before destroying the object, will surely - cause severe file corruption. - */ - GAIAGEO_DECLARE void gaiaFlushDbfHeader (gaiaDbfPtr dbf); - - - -#ifndef OMIT_ICONV /* ICONV enabled: supporting text reader */ - -/** - Creates a Text Reader object - - \param path to the corresponding file-system file. - \param field_separator the character acting as a separator between adjacent - fields. - \param text_separator the character used to quote text strings. - \param decimal_separator the character used as a separator between integer - and decimal digits for real numeric values. - \param first_line_titles 0 if the first line contains regular values: - any other value if the first line contains column names. - \param encoding GNU ICONV name identifying the input charset encoding. - - \return the pointer to the newly created Text Reader object: NULL on failure - - \sa gaiaTextReaderDestroy, gaiaTextReaderParse, - gaiaTextReaderGetRow, gaiaTextReaderFetchField - - \note you are responsible to destroy (before or after) any allocated Text - Reader object. - */ - GAIAGEO_DECLARE gaiaTextReaderPtr gaiaTextReaderAlloc (const char *path, - char field_separator, - char text_separator, - char - decimal_separator, - int - first_line_titles, - const char - *encoding); - -/** - Destroys a Text Reader object - - \param reader pointer to Text Reader object. - - \sa gaiaTextReaderAlloc, gaiaTextReaderParse, - gaiaTextReaderGetRow, gaiaTextReaderFetchField - */ - GAIAGEO_DECLARE void gaiaTextReaderDestroy (gaiaTextReaderPtr reader); - -/** - Prescans the external file associated to a Text Reade object - - \param reader pointer to Text Reader object. - - \return 0 on failure: any other value on success. - - \sa gaiaTextReaderAlloc, gaiaTextReaderDestroy, - gaiaTextReaderGetRow, gaiaTextReaderFetchField - - \note this preliminary step is required so to ensure: - \li file consistency: checking expected formatting rules. - \li identifying the number / type / name of fields [aka columns]. - \li identifying the actual number of lines within the file. - */ - GAIAGEO_DECLARE int gaiaTextReaderParse (gaiaTextReaderPtr reader); - -/** - Reads a line from a Text Reader object - - \param reader pointer to Text Reader object. - \param row_num the Line Number identifying the Line to be read. - - \return 0 on failure: any other value on success. - - \sa gaiaTextReaderAlloc, gaiaTextReaderDestroy, gaiaTextReaderParse, - gaiaTextReaderFetchField - - \note this function will load the requested Line into the current buffer: - you can then use gaiaTextReaderFetchField in order to retrieve - any individual field [aka column] value. - */ - GAIAGEO_DECLARE int gaiaTextReaderGetRow (gaiaTextReaderPtr reader, - int row_num); - -/** - Retrieves an individual field value from the current Line - - \param reader pointer to Text Reader object. - \param field_num relative field [aka column] index: first field has index 0. - \param type on completion this variable will contain the value type. - \param value on completion this variable will contain the current field value. - - \return 0 on failure: any other value on success. - - \sa gaiaTextReaderAlloc, gaiaTextReaderDestroy, gaiaTextReaderParse, - gaiaTextReaderGetRow - */ - GAIAGEO_DECLARE int gaiaTextReaderFetchField (gaiaTextReaderPtr reader, - int field_num, int *type, - const char **value); - -#endif /* end ICONV (text reader) */ - -#ifdef __cplusplus -} -#endif - -#endif /* _GG_FORMATS_H */ diff --git a/src/spatialite/src/headers/spatialite/gg_mbr.h b/src/spatialite/src/headers/spatialite/gg_mbr.h deleted file mode 100644 index bd2b378..0000000 --- a/src/spatialite/src/headers/spatialite/gg_mbr.h +++ /dev/null @@ -1,464 +0,0 @@ -/* - gg_mbr.h -- Gaia common support for geometries: MBR functions - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - - -/** - \file gg_mbr.h - - Geometry handling functions: MBR - */ - -#ifndef _GG_MBR_H -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#define _GG_MBR_H -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - -/* function prototypes */ - -/** - Updates the actual MBR for a Linestring object - - \param line pointer to the Linestring object - */ - GAIAGEO_DECLARE void gaiaMbrLinestring (gaiaLinestringPtr line); - -/** - Updates the actual MBR for a Ring object - - \param rng pointer to the Ring object - */ - GAIAGEO_DECLARE void gaiaMbrRing (gaiaRingPtr rng); - -/** - Updates the actual MBR for a Polygon object - - \param polyg pointer to the Polygon object - */ - GAIAGEO_DECLARE void gaiaMbrPolygon (gaiaPolygonPtr polyg); - -/** - Updates the actual MBR for a Geometry object - - \param geom pointer to the Geometry object - */ - GAIAGEO_DECLARE void gaiaMbrGeometry (gaiaGeomCollPtr geom); - -/** - Retrieves the MBR (MinX) from a BLOB-Geometry object - - \param blob pointer to BLOB-Geometry. - \param size the BLOB's size (in bytes). - \param minx on completion this variable will contain the MBR MinX coordinate. - - \return 0 on failure: any other value on success. - - \sa gaiaGetMbrMaxX, gaiaGetMbrMinY, gaiaGetMbrMaxY - */ - GAIAGEO_DECLARE int gaiaGetMbrMinX (const unsigned char *blob, - unsigned int size, double *minx); - -/** - Retrieves the MBR (MaxX) from a BLOB-Geometry object - - \param blob pointer to BLOB-Geometry. - \param size the BLOB's size (in bytes). - \param maxx on completion this variable will contain the MBR MaxX coordinate. - - \return 0 on failure: any other value on success. - - \sa gaiaGetMbrMinX, gaiaGetMbrMinY, gaiaGetMbrMaxY - */ - GAIAGEO_DECLARE int gaiaGetMbrMaxX (const unsigned char *blob, - unsigned int size, double *maxx); - -/** - Retrieves the MBR (MinY) from a BLOB-Geometry object - - \param blob pointer to BLOB-Geometry. - \param size the BLOB's size (in bytes). - \param miny on completion this variable will contain the MBR MinY coordinate. - - \return 0 on failure: any other value on success. - - \sa gaiaGetMbrMinX, gaiaGetMbrMaxX, gaiaGetMbrMaxY - */ - GAIAGEO_DECLARE int gaiaGetMbrMinY (const unsigned char *blob, - unsigned int size, double *miny); - -/** - Retrieves the MBR (MaxY) from a BLOB-Geometry object - - \param blob pointer to BLOB-Geometry. - \param size the BLOB's size (in bytes). - \param maxy on completion this variable will contain the MBR MaxY coordinate. - - \return 0 on failure: any other value on success. - - \sa gaiaGetMbrMinX, gaiaGetMbrMaxX, gaiaGetMbrMinY - */ - GAIAGEO_DECLARE int gaiaGetMbrMaxY (const unsigned char *blob, - unsigned int size, double *maxy); - -/** - Creates a Geometry object corresponding to the Envelope [MBR] for a - BLOB-Geometry - - \param blob pointer to BLOB-Geometry - \param size the BLOB's size (in bytes) - - \return the pointer to the newly created Geometry object: NULL on failure - - \sa gaiaFreeGeomColl - - \note you are responsible to destroy (before or after) any allocated Geometry, - unless you've passed ownership of the Geometry object to some further object: - in this case destroying the higher order object will implicitly destroy any - contained child object. - */ - - GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromSpatiaLiteBlobMbr (const unsigned - char *blob, - unsigned int - size); - -/** - MBRs comparison: Contains - - \param mbr1 pointer to first Geometry object. - \param mbr2 pointer to second Geometry object. - - \return 0 if false; any other value if mbr1 spatially \e contains mbr2 - - \sa gaiaMbrsDisjoint, gaiaMbrsEqual, gaiaMbrsIntersects, - gaiaMbrsOverlaps, gaiaMbrsTouches, gaiaMbrsWithin - */ - GAIAGEO_DECLARE int gaiaMbrsContains (gaiaGeomCollPtr mbr1, - gaiaGeomCollPtr mbr2); - -/** - MBRs comparison: Disjoint - - \param mbr1 pointer to first Geometry object. - \param mbr2 pointer to second Geometry object. - - \return 0 if false; any other value if mbr1 and mbr2 are spatially \e disjoint - - \sa gaiaMbrsContains, gaiaMbrsEqual, gaiaMbrsIntersects, - gaiaMbrsOverlaps, gaiaMbrsTouches, gaiaMbrsWithin - */ - GAIAGEO_DECLARE int gaiaMbrsDisjoint (gaiaGeomCollPtr mbr1, - gaiaGeomCollPtr mbr2); - -/** - MBRs comparison: Equal - - \param mbr1 pointer to first Geometry object. - \param mbr2 pointer to second Geometry object. - - \return 0 if false; any other value if mbr1 and mbr2 are spatially \e equal - - \sa gaiaMbrsContains, gaiaMbrsDisjoint, gaiaMbrsIntersects, - gaiaMbrsOverlaps, gaiaMbrsTouches, gaiaMbrsWithin - */ - GAIAGEO_DECLARE int gaiaMbrsEqual (gaiaGeomCollPtr mbr1, - gaiaGeomCollPtr mbr2); - -/** - MBRs comparison: Intersects - - \param mbr1 pointer to first Geometry object. - \param mbr2 pointer to second Geometry object. - - \return 0 if false; any other value if mbr1 and mbr2 spatially \e intersect - - \sa gaiaMbrsContains, gaiaMbrsDisjoint, gaiaMbrsEqual, - gaiaMbrsOverlaps, gaiaMbrsTouches, gaiaMbrsWithin - */ - GAIAGEO_DECLARE int gaiaMbrsIntersects (gaiaGeomCollPtr mbr1, - gaiaGeomCollPtr mbr2); - -/** - MBRs comparison: Overlaps - - \param mbr1 pointer to first Geometry object. - \param mbr2 pointer to second Geometry object. - - \return 0 if false; any other value if mbr1 and mbr2 spatially \e overlap - - \sa gaiaMbrsContains, gaiaMbrsDisjoint, gaiaMbrsEqual, gaiaMbrsIntersects, - gaiaMbrsTouches, gaiaMbrsWithin - */ - GAIAGEO_DECLARE int gaiaMbrsOverlaps (gaiaGeomCollPtr mbr1, - gaiaGeomCollPtr mbr2); - -/** - MBRs comparison: Touches - - \param mbr1 pointer to first Geometry object. - \param mbr2 pointer to second Geometry object. - - \return 0 if false; any other value if mbr1 and mbr2 spatially \e touche - - \sa gaiaMbrsContains, gaiaMbrsDisjoint, gaiaMbrsEqual, gaiaMbrsIntersects, - gaiaMbrsOverlaps, gaiaMbrsWithin - */ - GAIAGEO_DECLARE int gaiaMbrsTouches (gaiaGeomCollPtr mbr1, - gaiaGeomCollPtr mbr2); - -/** - MBRs comparison: Within - - \param mbr1 pointer to first Geometry object. - \param mbr2 pointer to second Geometry object. - - \return 0 if false; any other value if mbr1 is spatially \e within mbr2 - - \sa gaiaMbrsContains, gaiaMbrsDisjoint, gaiaMbrsEqual, gaiaMbrsIntersects, - gaiaMbrsOverlaps, gaiaMbrsTouches - */ - GAIAGEO_DECLARE int gaiaMbrsWithin (gaiaGeomCollPtr mbr1, - gaiaGeomCollPtr mbr2); - -/** - Creates a BLOB-Geometry representing an Envelope [MBR] - - \param x1 first X coordinate. - \param y1 first Y coordinate. - \param x2 second X coordinate. - \param y2 second Y coordinate. - \param srid the SRID associated to the Envelope - \param result on completion will contain a pointer to newly created - BLOB-Geometry - \param size on completion this variabile will contain the BLOB's size (in - bytes) - - \sa gaiaBuildCircleMbr - - \note [XY] coords must define two extreme Points identifying a diagonal - of the MBR [Envelope] - \n no special order is required for coords: MAX / MIN values will be - internally arranged as appropriate. - */ - GAIAGEO_DECLARE void gaiaBuildMbr (double x1, double y1, double x2, - double y2, int srid, - unsigned char **result, int *size); - -/** - Creates a BLOB-Geometry representing an Envelope [MBR] - - \param x centre X coordinate. - \param y centre Y coordinate. - \param radius the radius of the circle - \param srid the SRID associated to the Envelope - \param result on completion will contain a pointer to newly created - BLOB-Geometry - \param size on completion this variabile will contain the BLOB's size (in - bytes) - - \sa gaiaBuildMbr - - \note the \e circle of givern \e radius and \e centre will be used so to - determine the corresponding \e square Envelope - */ - GAIAGEO_DECLARE void gaiaBuildCircleMbr (double x, double y, double radius, - int srid, unsigned char **result, - int *size); - -/** - Creates a BLOB-FilterMBR - - \param x1 first X coordinate. - \param y1 first Y coordinate. - \param x2 second X coordinate. - \param y2 second Y coordinate. - \param mode one of: GAIA_FILTER_MBR_WITHIN, GAIA_FILTER_MBR_CONTAINS, - GAIA_FILTER_MBR_INTERSECTS, GAIA_FILTER_MBR_DECLARE - \param result on completion will contain a pointer to newly created - BLOB-FilterMBR - \param size on completion this variabile will contain the BLOB's size (in - bytes) - - \sa gaiaParseFilterMbr - - \note [XY] coords must define two extreme Points identifying a diagonal - of the MBR [Envelope] - \n no special order is required for coords: MAX / MIN values will be - internally arranged as appropriate. - - \remark internally used to implement Geometry Callback R*Tree filtering. - */ - GAIAGEO_DECLARE void gaiaBuildFilterMbr (double x1, double y1, double x2, - double y2, int mode, - unsigned char **result, int *size); - -/** - Creates a BLOB-FilterMBR - - \param result pointer to BLOB-FilterMBR [previously created by - gaiaBuildFilterMbr] - BLOB-Geometry - \param size BLOB's size (in bytes) - \param minx on completion this variable will contain the MBR MinX coord. - \param miny on completion this variable will contain the MBR MinY coord. - \param maxx on completion this variable will contain the MBR MinY coord. - \param maxy on completion this variable will contain the MBR MaxY coord. - \param mode on completion this variable will contain the FilterMBR mode. - - \sa gaiaBuildFilterMbr - - \remark internally used to implement Geometry Callback R*Tree filtering. - */ - GAIAGEO_DECLARE int gaiaParseFilterMbr (unsigned char *result, int size, - double *minx, double *miny, - double *maxx, double *maxy, - int *mode); - -/** - Computes the Z-Range for a Linestring object - - \param line pointer to the Linestring object - \param min on completion this variable will contain the min Z value found - \param max on completion this variable will contain the max Z value found - - \note if the Linestring has XY or XYM dims, the Z-Range is meaningless - */ - GAIAGEO_DECLARE void gaiaZRangeLinestring (gaiaLinestringPtr line, - double *min, double *max); - -/** - Computes the Z-Range for a Ring object - - \param rng pointer to the Ring object - \param min on completion this variable will contain the min Z value found - \param max on completion this variable will contain the max Z value found - - \note if the Ring has XY or XYM dims, the Z-Range is meaningless - */ - GAIAGEO_DECLARE void gaiaZRangeRing (gaiaRingPtr rng, double *min, - double *max); - -/** - Computes the Z-Range for a Polygon object - - \param polyg pointer to the Polygon object - \param min on completion this variable will contain the min Z value found - \param max on completion this variable will contain the max Z value found - - \note if the Polygon has XY or XYM dims, the Z-Range is meaningless - */ - GAIAGEO_DECLARE void gaiaZRangePolygon (gaiaPolygonPtr polyg, double *min, - double *max); - -/** - Computes the Z-Range for a Geometry object - - \param geom pointer to the Geometry object - \param min on completion this variable will contain the min Z value found - \param max on completion this variable will contain the max Z value found - - \note if the Geometry has XY or XYM dims, the Z-Range is meaningless - */ - GAIAGEO_DECLARE void gaiaZRangeGeometry (gaiaGeomCollPtr geom, double *min, - double *max); - -/** - Computes the M-Range for a Linestring object - - \param line pointer to the Linestring object - \param min on completion this variable will contain the min M value found - \param max on completion this variable will contain the max M value found - - \note if the Linestring has XY or XYZ dims, the M-Range is meaningless - */ - GAIAGEO_DECLARE void gaiaMRangeLinestring (gaiaLinestringPtr line, - double *min, double *max); - -/** - Computes the M-Range for a Ring object - - \param rng pointer to the Ring object - \param min on completion this variable will contain the min M value found - \param max on completion this variable will contain the max M value found - - \note if the Ring has XY or XYZ dims, the M-Range is meaningless - */ - GAIAGEO_DECLARE void gaiaMRangeRing (gaiaRingPtr rng, double *min, - double *max); - -/** - Computes the M-Range for a Polygon object - - \param polyg pointer to the Polygon object - \param min on completion this variable will contain the min M value found - \param max on completion this variable will contain the max M value found - - \note if the Polygon has XY or XYZ dims, the M-Range is meaningless - */ - GAIAGEO_DECLARE void gaiaMRangePolygon (gaiaPolygonPtr polyg, double *min, - double *max); - -/** - Computes the Z-Range for a Geometry object - - \param geom pointer to the Geometry object - \param min on completion this variable will contain the min M value found - \param max on completion this variable will contain the max M value found - - \note if the Geometry has XY or XYZ dims, the M-Range is meaningless - */ - GAIAGEO_DECLARE void gaiaMRangeGeometry (gaiaGeomCollPtr geom, double *min, - double *max); - - -#ifdef __cplusplus -} -#endif - -#endif /* _GG_MBR_H */ diff --git a/src/spatialite/src/headers/spatialite/gg_structs.h b/src/spatialite/src/headers/spatialite/gg_structs.h deleted file mode 100644 index 608006c..0000000 --- a/src/spatialite/src/headers/spatialite/gg_structs.h +++ /dev/null @@ -1,820 +0,0 @@ -/* - gg_structs.h -- Gaia common support for geometries: structures - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - - -/** - \file gg_structs.h - - Geometry structures - */ - -#ifndef _GG_STRUCTS_H -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#define _GG_STRUCTS_H -#endif - -#include - -#ifdef __cplusplus -extern "C" -{ -#endif - -/** - Container for OGC POINT Geometry - */ - typedef struct gaiaPointStruct - { -/* an OpenGis POINT */ -/** X coordinate */ - double X; /* X,Y coordinates */ -/** Y coordinate */ - double Y; -/** Z coordinate: only for XYZ and XYZM dims */ - double Z; /* Z coordinate */ -/** M measure: only for XYM and XYZM dims */ - double M; /* M measure */ -/** one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM */ - int DimensionModel; /* (x,y), (x,y,z), (x,y,m) or (x,y,z,m) */ -/** pointer to next item [double linked list] */ - struct gaiaPointStruct *Next; /* for double-linked list */ -/** pointer to previous item [double linked list] */ - struct gaiaPointStruct *Prev; /* for double-linked list */ - } gaiaPoint; -/** - Typedef for OGC POINT structure - - \sa gaiaPoint - */ - typedef gaiaPoint *gaiaPointPtr; - -/** - Container for dynamically growing line/ring - */ - typedef struct gaiaDynamicLineStruct - { -/* a generic DYNAMIC LINE object */ -/** invalid object */ - int Error; -/** the SRID */ - int Srid; -/** pointer to first POINT [double linked list] */ - gaiaPointPtr First; /* Points linked list - first */ -/** pointer to last POINT [double linked list] */ - gaiaPointPtr Last; /* Points linked list - last */ - } gaiaDynamicLine; -/** - Typedef for dynamically growing line/ring structure - - \sa gaiaDynamicLine - */ - typedef gaiaDynamicLine *gaiaDynamicLinePtr; - -/** - Container for OGC LINESTRING Geometry - */ - typedef struct gaiaLinestringStruct - { -/* an OpenGis LINESTRING */ -/** number of points [aka vertices] */ - int Points; /* number of vertices */ -/** COORDs mem-array */ - double *Coords; /* X,Y [vertices] array */ -/** MBR: min X */ - double MinX; /* MBR - BBOX */ -/** MBR: min Y */ - double MinY; /* MBR - BBOX */ -/** MBR: max X */ - double MaxX; /* MBR - BBOX */ -/** MBR: max X */ - double MaxY; /* MBR - BBOX */ -/** one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM */ - int DimensionModel; /* (x,y), (x,y,z), (x,y,m) or (x,y,z,m) */ -/** pointer to next item [linked list] */ - struct gaiaLinestringStruct *Next; /* for linked list */ - } gaiaLinestring; -/** - Typedef for OGC LINESTRING structure - - \sa gaiaLinestring - */ - typedef gaiaLinestring *gaiaLinestringPtr; - -/** - Container for OGC RING Geometry - */ - typedef struct gaiaRingStruct - { -/* a GIS ring - OpenGis LINESTRING, closed */ -/** number of points [aka vertices] */ - int Points; /* number of vertices */ -/** COORDs mem-array */ - double *Coords; /* X,Y [vertices] array */ -/** clockwise / counterclockwise */ - int Clockwise; /* clockwise / counterclockwise */ -/** MBR: min X */ - double MinX; /* MBR - BBOX */ -/** MBR: min Y */ - double MinY; /* MBR - BBOX */ -/** MBR: max X */ - double MaxX; /* MBR - BBOX */ -/** MBR: max Y */ - double MaxY; /* MBR - BBOX */ -/** one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM */ - int DimensionModel; /* (x,y), (x,y,z), (x,y,m) or (x,y,z,m) */ -/** pointer to next item [linked list] */ - struct gaiaRingStruct *Next; /* for linked list */ -/** pointer to belonging Polygon */ - struct gaiaPolygonStruct *Link; /* polygon reference */ - } gaiaRing; -/** - Typedef for OGC RING structure - - \sa gaiaRing - */ - typedef gaiaRing *gaiaRingPtr; - -/** - Container for OGC POLYGON Geometry - */ - typedef struct gaiaPolygonStruct - { -/* an OpenGis POLYGON */ -/** the exterior ring (mandatory) */ - gaiaRingPtr Exterior; /* exterior ring */ -/** number of interior rings (may be, none) */ - int NumInteriors; /* number of interior rings */ -/** array of interior rings */ - gaiaRingPtr Interiors; /* interior rings array */ -/** index of first unused interior ring */ - int NextInterior; /* first free interior ring */ -/** MBR: min X */ - double MinX; /* MBR - BBOX */ -/** MBR: min Y */ - double MinY; /* MBR - BBOX */ -/** MBR: max X */ - double MaxX; /* MBR - BBOX */ -/** MBR: max Y */ - double MaxY; /* MBR - BBOX */ -/** one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM */ - int DimensionModel; /* (x,y), (x,y,z), (x,y,m) or (x,y,z,m) */ -/** pointer to next item [linked list] */ - struct gaiaPolygonStruct *Next; /* for linked list */ - } gaiaPolygon; -/** - Typedef for OGC POLYGON structure - - \sa gaiaPolygon - */ - typedef gaiaPolygon *gaiaPolygonPtr; - -/** - Container for OGC GEOMETRYCOLLECTION Geometry - */ - typedef struct gaiaGeomCollStruct - { -/* OpenGis GEOMETRYCOLLECTION */ -/** the SRID */ - int Srid; /* the SRID value for this GEOMETRY */ -/** CPU endian arch */ - char endian_arch; /* littleEndian - bigEndian arch for target CPU */ -/** BLOB Geometry endian arch */ - char endian; /* littleEndian - bigEndian */ -/** BLOB-Geometry buffer */ - const unsigned char *blob; /* WKB encoded buffer */ -/** BLOB-Geometry buffer size (in bytes) */ - unsigned long size; /* buffer size */ -/** current offset [BLOB parsing] */ - unsigned long offset; /* current offset [for parsing] */ -/** pointer to first POINT [linked list]; may be NULL */ - gaiaPointPtr FirstPoint; /* Points linked list - first */ -/** pointer to last POINT [linked list]; may be NULL */ - gaiaPointPtr LastPoint; /* Points linked list - last */ -/** pointer to first LINESTRING [linked list]; may be NULL */ - gaiaLinestringPtr FirstLinestring; /* Linestrings linked list - first */ -/** pointer to last LINESTRING [linked list]; may be NULL */ - gaiaLinestringPtr LastLinestring; /* Linestrings linked list - last */ -/** pointer to first POLYGON [linked list]; may be NULL */ - gaiaPolygonPtr FirstPolygon; /* Polygons linked list - first */ -/** pointer to last POLYGON [linked list]; may be NULL */ - gaiaPolygonPtr LastPolygon; /* Polygons linked list - last */ -/** MBR: min X */ - double MinX; /* MBR - BBOX */ -/** MBR: min Y */ - double MinY; /* MBR - BBOX */ -/** MBR: max X */ - double MaxX; /* MBR - BBOX */ -/** MBR: max Y */ - double MaxY; /* MBR - BBOX */ -/** one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM */ - int DimensionModel; /* (x,y), (x,y,z), (x,y,m) or (x,y,z,m) */ -/** any valid Geometry Class type */ - int DeclaredType; /* the declared TYPE for this Geometry */ -/** pointer to next item [linked list] */ - struct gaiaGeomCollStruct *Next; /* Vanuatu - used for linked list */ - } gaiaGeomColl; -/** - Typedef for OGC GEOMETRYCOLLECTION structure - - \sa gaiaGeomCool - */ - typedef gaiaGeomColl *gaiaGeomCollPtr; - -/** - Container similar to LINESTRING [internally used] - */ - typedef struct gaiaPreRingStruct - { -/* a LINESTRING used to build rings */ -/** pointer to LINESTRING */ - gaiaLinestringPtr Line; /* a LINESTRING pointer */ -/** already used/visited item */ - int AlreadyUsed; /* a switch to mark an already used line element */ -/** pointer to next item [linked list] */ - struct gaiaPreRingStruct *Next; /* for linked list */ - } gaiaPreRing; -/** - Typedef for gaiaPreRing structure - - \sa gaiaPreRing - */ - typedef gaiaPreRing *gaiaPreRingPtr; - -/** - Container for variant (multi-type) value - */ - typedef struct gaiaValueStruct - { -/* a DBF field multitype value */ -/** data type: one of GAIA_NULL_VALUE, GAIA_INT_VALUE, GAIA_DOUBLE_VALUE, GAIA_TEXT_VALUE */ - short Type; /* the type */ -/** TEXT type value */ - char *TxtValue; /* the text value */ -/** INT type value */ - sqlite3_int64 IntValue; /* the integer value */ -/** DOUBLE type value */ - double DblValue; /* the double value */ - } gaiaValue; -/** - Typedef for variant (multi-type) value structure - */ - typedef gaiaValue *gaiaValuePtr; - -/** - Container for DBF field - */ - typedef struct gaiaDbfFieldStruct - { -/* a DBF field definition - shapefile attribute */ -/** field name [max. 10 char] */ - char *Name; /* field name */ -/** DBF data type */ - unsigned char Type; /* field type */ -/** DBF buffer offset [where the field value starts] */ - int Offset; /* buffer offset [this field begins at *buffer+offset* and extends for *length* bytes */ -/** total DBF buffer field length (in bytes) */ - unsigned char Length; /* field total length [in bytes] */ -/** precision (decimal digits) */ - unsigned char Decimals; /* decimal positions */ -/** current variant [multi-type] value */ - gaiaValuePtr Value; /* the current multitype value for this attribute */ -/** pointer to next item [linked list] */ - struct gaiaDbfFieldStruct *Next; /* pointer to next element in linked list */ - } gaiaDbfField; -/** - Typedef for DBF field structure - */ - typedef gaiaDbfField *gaiaDbfFieldPtr; - -/** - Container for a list of DBF fields - */ - typedef struct gaiaDbfListStruct - { -/* a linked list to contain the DBF fields definitions - shapefile attributes */ -/** current RowID */ - int RowId; /* the current RowId */ -/** current Geometry */ - gaiaGeomCollPtr Geometry; /* geometry for current entity */ -/** pointer to first DBF field [linked list] */ - gaiaDbfFieldPtr First; /* pointer to first element in linked list */ -/** pointer to last DBF field [linked list] */ - gaiaDbfFieldPtr Last; /* pointer to last element in linker list */ - } gaiaDbfList; -/** - Typedef for a list of DBF fields - - \sa gaiaDbfList - */ - typedef gaiaDbfList *gaiaDbfListPtr; - -/** - Container for DBF file handling - */ - typedef struct gaiaDbfStruct - { -/* DBF TYPE */ -/** DBF endian arch */ - int endian_arch; -/** validity flag: 1 = ready to be processed */ - int Valid; /* 1 = ready to process */ -/** DBF file pathname */ - char *Path; /* the DBF path */ -/** FILE handle */ - FILE *flDbf; /* the DBF file handle */ -/** list of DBF fields */ - gaiaDbfListPtr Dbf; /* the DBF attributes list */ -/** I/O buffer */ - unsigned char *BufDbf; /* the DBF I/O buffer */ -/** header size (in bytes) */ - int DbfHdsz; /* the DBF header length */ -/** record length (in bytes) */ - int DbfReclen; /* the DBF record length */ -/** current file size */ - int DbfSize; /* current DBF size */ -/** current Record Number */ - int DbfRecno; /* current DBF record number */ -/** handle to ICONV converter object */ - void *IconvObj; /* opaque reference to ICONV converter */ -/** last error message (may be NULL) */ - char *LastError; /* last error message */ - } gaiaDbf; -/** - Typedef for DBF file handler structure - - \sa gaiaDbf - */ - typedef gaiaDbf *gaiaDbfPtr; - -/** - Container for SHP file handling - */ - typedef struct gaiaShapefileStruct - { -/* SHAPEFILE TYPE */ -/** SHP endian arch */ - int endian_arch; -/** validity flag: 1 = ready to be processed */ - int Valid; /* 1 = ready to process */ -/** read or write mode */ - int ReadOnly; /* read or write mode */ -/** SHP 'abstract' path (no suffixes) */ - char *Path; /* the shapefile abstract path [no suffixes] */ -/** FILE handle to SHX file */ - FILE *flShx; /* the SHX file handle */ -/** FILE handle to SHP file */ - FILE *flShp; /* the SHP file handle */ -/** FILE handle to DBF file */ - FILE *flDbf; /* the DBF file handle */ -/** the SHP shape code */ - int Shape; /* the SHAPE code for the whole shapefile */ -/** list of DBF fields */ - gaiaDbfListPtr Dbf; /* the DBF attributes list */ -/** DBF I/O buffer */ - unsigned char *BufDbf; /* the DBF I/O buffer */ -/** DBF header size (in bytes) */ - int DbfHdsz; /* the DBF header length */ -/** DBF record length (in bytes) */ - int DbfReclen; /* the DBF record length */ -/** DBF current file size (in bytes) */ - int DbfSize; /* current DBF size */ -/** DBF current Record Number */ - int DbfRecno; /* current DBF record number */ -/** SHP I/O buffer */ - unsigned char *BufShp; /* the SHP I/O buffer */ -/** SHP current buffer size (in bytes) */ - int ShpBfsz; /* the SHP buffer current size */ -/** SHP current file size */ - int ShpSize; /* current SHP size */ -/** SHX current file size */ - int ShxSize; /* current SHX size */ -/** Total Extent: min X */ - double MinX; /* the MBR/BBOX for the whole shapefile */ -/** Total Extent: min Y */ - double MinY; -/** Total Extent: max X */ - double MaxX; -/** Total Extent: max Y */ - double MaxY; -/** handle to ICONV converter object */ - void *IconvObj; /* opaque reference to ICONV converter */ -/** last error message (may be NULL) */ - char *LastError; /* last error message */ -/** SHP actual OGC Geometry type */ - int EffectiveType; /* the effective Geometry-type, as determined by gaiaShpAnalyze() */ -/** SHP actual dims: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM */ - int EffectiveDims; /* the effective Dimensions [XY, XYZ, XYM, XYZM], as determined by gaiaShpAnalyze() */ - } gaiaShapefile; -/** - Typedef for SHP file handler structure - - \sa gaiaShapefile - */ - typedef gaiaShapefile *gaiaShapefilePtr; - -/** - Container for dynamically growing output buffer - */ - typedef struct gaiaOutBufferStruct - { -/* a struct handling a dynamically growing output buffer */ -/** current buffer */ - char *Buffer; -/** current write offset */ - int WriteOffset; -/** current buffer size (in bytes) */ - int BufferSize; -/** validity flag */ - int Error; - } gaiaOutBuffer; -/** - Typedef for dynamically growing output buffer structure - - \sa gaiaOutBuffer - */ - typedef gaiaOutBuffer *gaiaOutBufferPtr; - -#ifndef OMIT_ICONV /* ICONV enabled: supporting text reader */ - -/** Virtual Text driver: MAX number of fields */ -#define VRTTXT_FIELDS_MAX 65535 -/** Virtual Text driver: MAX block size (in bytes) */ -#define VRTTXT_BLOCK_MAX 65535 - -/** Virtual Text driver: TEXT value */ -#define VRTTXT_TEXT 1 -/** Virtual Text driver: INTEGER value */ -#define VRTTXT_INTEGER 2 -/** Virtual Text driver: DOUBLE value */ -#define VRTTXT_DOUBLE 3 -/** Virtual Text driver: NULL value */ -#define VRTTXT_NULL 4 - -/** - Container for Virtual Text record (line) - */ - struct vrttxt_line - { -/* a struct representing a full LINE (aka Record) */ -/** current offset (parsing) */ - off_t offset; -/** line length (in bytes) */ - int len; -/** array of field offsets (where each field starts) */ - int field_offsets[VRTTXT_FIELDS_MAX]; -/** number of field into the record */ - int num_fields; -/** validity flag */ - int error; - }; - -/** - Container for Virtual Text record (line) offsets - */ - struct vrttxt_row - { -/* a struct storing Row offsets */ -/** Line Number */ - int line_no; -/** start offset */ - off_t offset; -/** record (line) length (in bytes) */ - int len; -/** number of fields into this record */ - int num_fields; - }; - -/** - Container for Virtual Text block of records - */ - struct vrttxt_row_block - { -/* -/ for efficiency sake, individual Row offsets -/ are grouped in reasonably sized blocks -*/ -/** array of records [lines] */ - struct vrttxt_row rows[VRTTXT_BLOCK_MAX]; -/** number of records into the array */ - int num_rows; -/** min Line Number */ - int min_line_no; -/** max Line Number */ - int max_line_no; -/** pointer to next item [linked list] */ - struct vrttxt_row_block *next; - }; - -/** - Container for Virtual Text column (field) header - */ - struct vrttxt_column_header - { -/* a struct representing a Column (aka Field) header */ -/** column name */ - char *name; -/** data type: one of GAIA_NULL_VALUE, GAIA_INT_VALUE, GAIA_DOUBLE_VALUE, GAIA_TEXT_VALUE */ - int type; - }; - -/** - Container for Virtual Text file handling - */ - typedef struct vrttxt_reader - { -/* the main TXT-Reader struct */ -/** array of columns (fields) */ - struct vrttxt_column_header columns[VRTTXT_FIELDS_MAX]; -/** FILE handle */ - FILE *text_file; -/** handle to ICONV converter object */ - void *toUtf8; /* the UTF-8 ICONV converter */ -/** field separator character */ - char field_separator; -/** text separator character (quote) */ - char text_separator; -/** decimal separator */ - char decimal_separator; -/** TRUE if the first line contains column names */ - int first_line_titles; -/** validity flag */ - int error; -/** pointer to first block of records [linked list] */ - struct vrttxt_row_block *first; -/** pointer to last block of records [linked list] */ - struct vrttxt_row_block *last; -/** array of pointers to individual records [lines] */ - struct vrttxt_row **rows; -/** number of records */ - int num_rows; -/** current Line Number */ - int line_no; -/** max number of columns (fields) */ - int max_fields; -/** current buffer size */ - int current_buf_sz; -/** current buffer offset [parsing] */ - int current_buf_off; -/** I/O buffer */ - char *line_buffer; -/** current field buffer */ - char *field_buffer; -/** array of field offsets [current record] */ - int field_offsets[VRTTXT_FIELDS_MAX]; -/** array of field lengths [current record] */ - int field_lens[VRTTXT_FIELDS_MAX]; -/** max field [current record] */ - int max_current_field; -/** current record [line] ready for parsing */ - int current_line_ready; - } gaiaTextReader; -/** - Typedef for Virtual Text file handling structure - - \sa gaiaTextReader - */ - typedef gaiaTextReader *gaiaTextReaderPtr; - -#endif /* end ICONV (text reader) */ - -/** - Layer Extent infos - */ - typedef struct gaiaLayerExtentInfos - { -/** row count (aka feature count) */ - int Count; -/** Extent: min X */ - double MinX; /* MBR - BBOX */ -/** Extent: min Y */ - double MinY; /* MBR - BBOX */ -/** Extent: max X */ - double MaxX; /* MBR - BBOX */ -/** Extent: max Y */ - double MaxY; /* MBR - BBOX */ - } gaiaLayerExtent; - -/** - Typedef for Layer Extent infos - - \sa gaiaLayerExtent - */ - typedef gaiaLayerExtent *gaiaLayerExtentPtr; - -/** - Layer Auth infos - */ - typedef struct gaiaLayerAuthInfos - { -/** Read-Only layer: TRUE or FALSE */ - int IsReadOnly; -/** Hidden layer: TRUE or FALSE */ - int IsHidden; - } gaiaLayerAuth; - -/** - Typedef for Layer Auth infos - - \sa gaiaLayerAuth - */ - typedef gaiaLayerAuth *gaiaLayerAuthPtr; - -/** - Attribute/Field MaxSize/Length infos - */ - typedef struct gaiaAttributeFieldMaxSizeInfos - { -/** MaxSize / MaxLength */ - int MaxSize; - } gaiaAttributeFieldMaxSize; - -/** - Typedef for Attribute/Field MaxSize/Length infos - - \sa gaiaAttributeFieldMaxSize - */ - typedef gaiaAttributeFieldMaxSize *gaiaAttributeFieldMaxSizePtr; - -/** - Attribute/Field Integer range infos - */ - typedef struct gaiaAttributeFieldIntRangeInfos - { -/** Minimum value */ - sqlite3_int64 MinValue; -/** Maximum value */ - sqlite3_int64 MaxValue; - } gaiaAttributeFieldIntRange; - -/** - Typedef for Attribute/Field Integer range infos - - \sa gaiaAttributeFieldIntRange - */ - typedef gaiaAttributeFieldIntRange *gaiaAttributeFieldIntRangePtr; - -/** - Attribute/Field Double range infos - */ - typedef struct gaiaAttributeFieldDoubleRangeInfos - { -/** Minimum value */ - double MinValue; -/** Maximum value */ - double MaxValue; - } gaiaAttributeFieldDoubleRange; - -/** - Typedef for Attribute/Field Double range infos - - \sa gaiaAttributeFieldDoubleRange - */ - typedef gaiaAttributeFieldDoubleRange *gaiaAttributeFieldDoubleRangePtr; - -/** - LayerAttributeField infos - */ - typedef struct gaiaLayerAttributeFieldInfos - { -/** ordinal position */ - int Ordinal; -/** SQL name of the corresponding column */ - char *AttributeFieldName; -/** total count of NULL values */ - int NullValuesCount; -/** total count of INTEGER values */ - int IntegerValuesCount; -/** total count of DOUBLE values */ - int DoubleValuesCount; -/** total count of TEXT values */ - int TextValuesCount; -/** total count of BLOB values */ - int BlobValuesCount; -/** pointer to MaxSize/Length infos (may be NULL) */ - gaiaAttributeFieldMaxSizePtr MaxSize; -/** pointer to range of Integer values infos (may be NULL) */ - gaiaAttributeFieldIntRangePtr IntRange; -/** pointer to range of Double values infos (may be NULL) */ - gaiaAttributeFieldDoubleRangePtr DoubleRange; -/** pointer to next item (linked list) */ - struct gaiaLayerAttributeFieldInfos *Next; - } gaiaLayerAttributeField; - -/** - Typedef for Layer AttributeField infos - - \sa gaiaLayerAttributeField - */ - typedef gaiaLayerAttributeField *gaiaLayerAttributeFieldPtr; - -/** - Vector Layer item - */ - typedef struct gaiaVectorLayerItem - { -/** one of GAIA_VECTOR_UNKNOWN, GAIA_VECTOR_TABLE, GAIA_VECTOR_VIEW, - GAIA_VECTOR_VIRTUAL */ - int LayerType; -/** SQL name of the corresponding table */ - char *TableName; -/** SQL name of the corresponding Geometry column */ - char *GeometryName; -/** SRID value */ - int Srid; -/** one of GAIA_VECTOR_UNKNOWN, GAIA_VECTOR_POINT, GAIA_VECTOR_LINESTRING, - GAIA_VECTOR_POLYGON, GAIA_VECTOR_MULTIPOINT, GAIA_VECTOR_MULTILINESTRING, - GAIA_VECTOR_MULTIPOLYGON, GAIA_VECTOR_GEOMETRYCOLLECTION, GAIA_VECTOR_GEOMETRY -*/ - int GeometryType; -/** one of GAIA_VECTOR_UNKNOWN, GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM */ - int Dimensions; -/** one of GAIA_VECTOR_UNKNOWN, GAIA_SPATIAL_INDEX_NONE, GAIA_SPATIAL_INDEX_RTREE, - GAIA_SPATIAL_INDEX_MBRCACHE -*/ - int SpatialIndex; -/** pointer to Extent infos (may be NULL) */ - gaiaLayerExtentPtr ExtentInfos; -/** pointer to Auth infos (may be NULL) */ - gaiaLayerAuthPtr AuthInfos; -/** pointer to first Field/Attribute (linked list) */ - gaiaLayerAttributeFieldPtr First; -/** pointer to last Field/Attribute (linked list) */ - gaiaLayerAttributeFieldPtr Last; -/** pointer to next item (linked list) */ - struct gaiaVectorLayerItem *Next; - } gaiaVectorLayer; - -/** - Typedef for Vector Layer item - - \sa gaiaVectorLayer - */ - typedef gaiaVectorLayer *gaiaVectorLayerPtr; - -/** - Container for Vector Layers List - */ - typedef struct gaiaVectorLayersListStr - { -/** pointer to first vector layer (linked list) */ - gaiaVectorLayerPtr First; -/** pointer to last vector layer (linked list) */ - gaiaVectorLayerPtr Last; -/** pointer to currently set vector layer */ - gaiaVectorLayerPtr Current; - } gaiaVectorLayersList; - -/** - Typedef for Vector Layers List - - \sa gaiaVectorLayersList - */ - typedef gaiaVectorLayersList *gaiaVectorLayersListPtr; - -#ifdef __cplusplus -} -#endif - -#endif /* _GG_STRUCTS_H */ diff --git a/src/spatialite/src/headers/spatialite/spatialite.h b/src/spatialite/src/headers/spatialite/spatialite.h deleted file mode 100644 index 016e90f..0000000 --- a/src/spatialite/src/headers/spatialite/spatialite.h +++ /dev/null @@ -1,52 +0,0 @@ -/* - spatialite.h -- Gaia support for SQLite extensions - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -int virtualshape_extension_init (sqlite3 * db); -int virtualdbf_extension_init (sqlite3 * db); -int virtualtext_extension_init (sqlite3 * db); -int virtualXL_extension_init (sqlite3 * db); -int virtualnetwork_extension_init (sqlite3 * db); -int virtualfdo_extension_init (sqlite3 * db); -int mbrcache_extension_init (sqlite3 * db); -int virtual_spatialindex_extension_init (sqlite3 * db); diff --git a/src/spatialite/src/headers/spatialite/sqlite.h b/src/spatialite/src/headers/spatialite/sqlite.h deleted file mode 100644 index 58b084d..0000000 --- a/src/spatialite/src/headers/spatialite/sqlite.h +++ /dev/null @@ -1,58 +0,0 @@ -/* - sqlite.h -- supporting SQLite headers in a flexible way - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Pepijn Van Eeckhoudt - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#ifndef _SPATIALITE_SQLITE_H -#define _SPATIALITE_SQLITE_H - -#ifdef SPL_AMALGAMATION /* spatialite-amalgamation */ -#include -#else -#include - - /* We can't use SQLITE_EXTENSION_INIT1 as this is an intializer in recent version of sqlite */ -extern const sqlite3_api_routines *sqlite3_api; -#endif - -#endif diff --git a/src/spatialite/src/headers/spatialite_private.h b/src/spatialite/src/headers/spatialite_private.h deleted file mode 100644 index 4361b60..0000000 --- a/src/spatialite/src/headers/spatialite_private.h +++ /dev/null @@ -1,179 +0,0 @@ -/* - spatialite.h -- Gaia spatial support for SQLite - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -/** - \file spatialite_private.h - - SpatiaLite private header file - */ -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#ifdef _WIN32 -#ifdef DLL_EXPORT -#define SPATIALITE_PRIVATE -#else -#define SPATIALITE_PRIVATE -#endif -#else -#define SPATIALITE_PRIVATE __attribute__ ((visibility("hidden"))) -#endif -#endif - -#ifndef _SPATIALITE_PRIVATE_H -#ifndef DOXYGEN_SHOULD_SKIP_THIS -#define _SPATIALITE_PRIVATE_H -#endif - -#ifdef __cplusplus -extern "C" -{ -#endif - -/** spatial_ref_sys_init2: will create the "spatial_ref_sys" table - and will populate this table with any supported EPSG SRID definition */ -#define GAIA_EPSG_ANY -9999 -/** spatial_ref_sys_init2: will create the "spatial_ref_sys" table - and will populate this table only inserting WGS84-related definitions */ -#define GAIA_EPSG_WGS84_ONLY -9998 -/** spatial_ref_sys_init2: will create the "spatial_ref_sys" table - but will avoid to insert any row at all */ -#define GAIA_EPSG_NONE -9997 - -#define SPATIALITE_STATISTICS_GENUINE 1 -#define SPATIALITE_STATISTICS_VIEWS 2 -#define SPATIALITE_STATISTICS_VIRTS 3 -#define SPATIALITE_STATISTICS_LEGACY 4 - - struct epsg_defs - { - int srid; - char *auth_name; - int auth_srid; - char *ref_sys_name; - char *proj4text; - char *srs_wkt; - struct epsg_defs *next; - }; - - SPATIALITE_PRIVATE struct epsg_defs *add_epsg_def (int filter_srid, - struct epsg_defs **first, - struct epsg_defs **last, - int srid, - const char *auth_name, - int auth_srid, - const char - *ref_sys_name); - - SPATIALITE_PRIVATE void - add_proj4text (struct epsg_defs *p, int count, const char *text); - - SPATIALITE_PRIVATE void - add_srs_wkt (struct epsg_defs *p, int count, const char *text); - - SPATIALITE_PRIVATE void - initialize_epsg (int filter, struct epsg_defs **first, - struct epsg_defs **last); - - SPATIALITE_PRIVATE int checkSpatialMetaData (const void *sqlite); - - SPATIALITE_PRIVATE int delaunay_triangle_check (void *pg); - - SPATIALITE_PRIVATE void *voronoj_build (int pgs, void *first, - double extra_frame_size); - - SPATIALITE_PRIVATE void *voronoj_export (void *voronoj, void *result, - int only_edges); - - SPATIALITE_PRIVATE void voronoj_free (void *voronoj); - - SPATIALITE_PRIVATE void *concave_hull_build (void *first, - int dimension_model, - double factor, - int allow_holes); - - SPATIALITE_PRIVATE int createAdvancedMetaData (void *sqlite); - - SPATIALITE_PRIVATE void updateSpatiaLiteHistory (void *sqlite, - const char *table, - const char *geom, - const char *operation); - - SPATIALITE_PRIVATE int createGeometryColumns (void *p_sqlite); - - SPATIALITE_PRIVATE int check_layer_statistics (void *p_sqlite); - - SPATIALITE_PRIVATE int check_views_layer_statistics (void *p_sqlite); - - SPATIALITE_PRIVATE int check_virts_layer_statistics (void *p_sqlite); - - SPATIALITE_PRIVATE void - updateGeometryTriggers (void *p_sqlite, const char *table, - const char *column); - - SPATIALITE_PRIVATE int - getRealSQLnames (void *p_sqlite, const char *table, const char *column, - char **real_table, char **real_column); - - SPATIALITE_PRIVATE void - buildSpatialIndex (void *p_sqlite, const unsigned char *table, - const char *column); - - SPATIALITE_PRIVATE int - doComputeFieldInfos (void *p_sqlite, const char *table, - const char *column, int stat_type, void *p_lyr); - - SPATIALITE_PRIVATE void - getProjParams (void *p_sqlite, int srid, char **params); - - SPATIALITE_PRIVATE int - getEllipsoidParams (void *p_sqlite, int srid, double *a, double *b, - double *rf); - - SPATIALITE_PRIVATE const char *splite_lwgeom_version (void); - - -#ifdef __cplusplus -} -#endif - -#endif /* _SPATIALITE_PRIVATE_H */ diff --git a/src/spatialite/src/shapefiles/Makefile.am b/src/spatialite/src/shapefiles/Makefile.am deleted file mode 100644 index 9b14e87..0000000 --- a/src/spatialite/src/shapefiles/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ - -INCLUDES = @CFLAGS@ -INCLUDES += -I$(top_srcdir)/src/headers - -noinst_LTLIBRARIES = libshapefiles.la - -libshapefiles_la_SOURCES = shapefiles.c - -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda diff --git a/src/spatialite/src/shapefiles/Makefile.in b/src/spatialite/src/shapefiles/Makefile.in deleted file mode 100644 index f6f7b72..0000000 --- a/src/spatialite/src/shapefiles/Makefile.in +++ /dev/null @@ -1,508 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/shapefiles -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libshapefiles_la_LIBADD = -am_libshapefiles_la_OBJECTS = shapefiles.lo -libshapefiles_la_OBJECTS = $(am_libshapefiles_la_OBJECTS) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libshapefiles_la_SOURCES) -DIST_SOURCES = $(libshapefiles_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = @CFLAGS@ -I$(top_srcdir)/src/headers -noinst_LTLIBRARIES = libshapefiles.la -libshapefiles_la_SOURCES = shapefiles.c -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shapefiles/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/shapefiles/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libshapefiles.la: $(libshapefiles_la_OBJECTS) $(libshapefiles_la_DEPENDENCIES) $(EXTRA_libshapefiles_la_DEPENDENCIES) - $(LINK) $(libshapefiles_la_OBJECTS) $(libshapefiles_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shapefiles.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/src/shapefiles/shapefiles.c b/src/spatialite/src/shapefiles/shapefiles.c deleted file mode 100644 index 1e18024..0000000 --- a/src/spatialite/src/shapefiles/shapefiles.c +++ /dev/null @@ -1,5026 +0,0 @@ -/* - - shapefiles.c -- implements shapefile support [import - export] - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#if defined(_WIN32) && !defined(__MINGW32__) -/* MSVC strictly requires this include [off_t] */ -#include -#endif - -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include -#include - -#include -#include -#include -#include - -#ifndef OMIT_FREEXL -#include -#endif - -#if defined(_WIN32) && !defined(__MINGW32__) -#define strcasecmp _stricmp -#define strncasecmp _strnicmp -#endif - -struct dupl_column -{ -/* a column value in a duplicated row */ - int pos; - char *name; - int type; - sqlite3_int64 int_value; - double dbl_value; - const char *txt_value; - const void *blob; - int size; - int query_pos; - struct dupl_column *next; -}; - -struct dupl_row -{ -/* a duplicated row with column values */ - int count; - struct dupl_column *first; - struct dupl_column *last; - const char *table; -}; - -static void -clean_dupl_row (struct dupl_row *str) -{ -/* destroying a duplicated row struct */ - struct dupl_column *p; - struct dupl_column *pn; - p = str->first; - while (p) - { - pn = p->next; - free (p->name); - free (p); - p = pn; - } -} - -static void -add_to_dupl_row (struct dupl_row *str, const char *name) -{ -/* adding a column to the duplicated row struct */ - int len; - struct dupl_column *p = malloc (sizeof (struct dupl_column)); - p->pos = str->count; - len = strlen (name); - p->name = malloc (len + 1); - strcpy (p->name, name); - str->count++; - p->type = SQLITE_NULL; - p->next = NULL; - if (str->first == NULL) - str->first = p; - if (str->last) - str->last->next = p; - str->last = p; -} - -static void -set_int_value (struct dupl_row *str, int pos, sqlite3_int64 value) -{ -/* setting up an integer value */ - struct dupl_column *p = str->first; - while (p) - { - if (p->pos == pos) - { - p->type = SQLITE_INTEGER; - p->int_value = value; - return; - } - p = p->next; - } -} - -static void -set_double_value (struct dupl_row *str, int pos, double value) -{ -/* setting up a double value */ - struct dupl_column *p = str->first; - while (p) - { - if (p->pos == pos) - { - p->type = SQLITE_FLOAT; - p->dbl_value = value; - return; - } - p = p->next; - } -} - -static void -set_text_value (struct dupl_row *str, int pos, const char *value) -{ -/* setting up a text value */ - struct dupl_column *p = str->first; - while (p) - { - if (p->pos == pos) - { - p->type = SQLITE_TEXT; - p->txt_value = value; - return; - } - p = p->next; - } -} - -static void -set_blob_value (struct dupl_row *str, int pos, const void *blob, int size) -{ -/* setting up a blob value */ - struct dupl_column *p = str->first; - while (p) - { - if (p->pos == pos) - { - p->type = SQLITE_BLOB; - p->blob = blob; - p->size = size; - return; - } - p = p->next; - } -} - -static void -set_null_value (struct dupl_row *str, int pos) -{ -/* setting up a NULL value */ - struct dupl_column *p = str->first; - while (p) - { - if (p->pos == pos) - { - p->type = SQLITE_NULL; - return; - } - p = p->next; - } -} - -static void -reset_query_pos (struct dupl_row *str) -{ -/* resetting QueryPos for BLOBs */ - struct dupl_column *p = str->first; - while (p) - { - p->query_pos = -1; - p = p->next; - } -} - -static int -check_dupl_blob2 (struct dupl_column *ptr, const void *blob, int size) -{ -/* checking a BLOB value */ - if (ptr->type != SQLITE_BLOB) - return 0; - if (ptr->size != size) - return 0; - if (memcmp (ptr->blob, blob, size) != 0) - return 0; - return 1; -} - -static int -check_dupl_blob (struct dupl_row *str, int pos, const void *blob, int size) -{ -/* checking a BLOB value */ - struct dupl_column *p = str->first; - while (p) - { - if (p->query_pos == pos) - { - return check_dupl_blob2 (p, blob, size); - } - p = p->next; - } - return 0; -} - -static gaiaDbfFieldPtr -getDbfField (gaiaDbfListPtr list, char *name) -{ -/* find a DBF attribute by name */ - gaiaDbfFieldPtr fld = list->First; - while (fld) - { - if (strcasecmp (fld->Name, name) == 0) - return fld; - fld = fld->Next; - } - return NULL; -} - -#ifndef OMIT_ICONV /* ICONV enabled: supporting SHP */ - -SPATIALITE_DECLARE int -load_shapefile (sqlite3 * sqlite, char *shp_path, char *table, char *charset, - int srid, char *column, int coerce2d, int compressed, - int verbose, int spatial_index, int *rows, char *err_msg) -{ - return load_shapefile_ex (sqlite, shp_path, table, charset, srid, column, - NULL, NULL, coerce2d, compressed, verbose, - spatial_index, rows, err_msg); -} - -SPATIALITE_DECLARE int -load_shapefile_ex (sqlite3 * sqlite, char *shp_path, char *table, char *charset, - int srid, char *g_column, char *gtype, char *pk_column, - int coerce2d, int compressed, int verbose, int spatial_index, - int *rows, char *err_msg) -{ - sqlite3_stmt *stmt = NULL; - int ret; - char *errMsg = NULL; - char *sql; - char *dummy; - int already_exists = 0; - int metadata = 0; - int sqlError = 0; - gaiaShapefilePtr shp = NULL; - gaiaDbfFieldPtr dbf_field; - int cnt; - int col_cnt; - int seed; - int len; - int dup; - int idup; - int current_row; - char **col_name = NULL; - unsigned char *blob; - int blob_size; - char *geom_type; - char *txt_dims; - char *geo_column = g_column; - char *xgtype = gtype; - char *qtable = NULL; - char *qpk_name = NULL; - char *pk_name = NULL; - int pk_autoincr = 1; - char *xname; - int pk_type = SQLITE_INTEGER; - int pk_set; - gaiaOutBuffer sql_statement; - if (!geo_column) - geo_column = "Geometry"; - if (!xgtype) - ; - else - { - if (strcasecmp (xgtype, "LINESTRING") == 0) - xgtype = "LINESTRING"; - else if (strcasecmp (xgtype, "LINESTRINGZ") == 0) - xgtype = "LINESTRINGZ"; - else if (strcasecmp (xgtype, "LINESTRINGM") == 0) - xgtype = "LINESTRINGM"; - else if (strcasecmp (xgtype, "LINESTRINGZM") == 0) - xgtype = "LINESTRINGZM"; - else if (strcasecmp (xgtype, "MULTILINESTRING") == 0) - xgtype = "MULTILINESTRING"; - else if (strcasecmp (xgtype, "MULTILINESTRINGZ") == 0) - xgtype = "MULTILINESTRINGZ"; - else if (strcasecmp (xgtype, "MULTILINESTRINGM") == 0) - xgtype = "MULTILINESTRINGM"; - else if (strcasecmp (xgtype, "MULTILINESTRINGZM") == 0) - xgtype = "MULTILINESTRINGZM"; - else if (strcasecmp (xgtype, "POLYGON") == 0) - xgtype = "POLYGON"; - else if (strcasecmp (xgtype, "POLYGONZ") == 0) - xgtype = "POLYGONZ"; - else if (strcasecmp (xgtype, "POLYGONM") == 0) - xgtype = "POLYGONM"; - else if (strcasecmp (xgtype, "POLYGONZM") == 0) - xgtype = "POLYGONZM"; - else if (strcasecmp (xgtype, "MULTIPOLYGON") == 0) - xgtype = "MULTIPOLYGON"; - else if (strcasecmp (xgtype, "MULTIPOLYGONZ") == 0) - xgtype = "MULTIPOLYGONZ"; - else if (strcasecmp (xgtype, "MULTIPOLYGONM") == 0) - xgtype = "MULTIPOLYGONM"; - else if (strcasecmp (xgtype, "MULTIPOLYGONZM") == 0) - xgtype = "MULTIPOLYGONZM"; - else - xgtype = NULL; - } - qtable = gaiaDoubleQuotedSql (table); -/* checking if TABLE already exists */ - sql = - sqlite3_mprintf ("SELECT name FROM sqlite_master WHERE type = 'table' " - "AND Lower(name) = Lower(%Q)", table); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - if (!err_msg) - spatialite_e ("load shapefile error: <%s>\n", - sqlite3_errmsg (sqlite)); - else - sprintf (err_msg, "load shapefile error: <%s>\n", - sqlite3_errmsg (sqlite)); - goto clean_up; - } - while (1) - { - /* scrolling the result set */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - already_exists = 1; - else - { - spatialite_e ("load shapefile error: <%s>\n", - sqlite3_errmsg (sqlite)); - break; - } - } - sqlite3_finalize (stmt); - if (already_exists) - { - if (!err_msg) - spatialite_e ("load shapefile error: table '%s' already exists\n", - table); - else - sprintf (err_msg, - "load shapefile error: table '%s' already exists\n", - table); - if (qtable) - free (qtable); - if (qpk_name) - free (qpk_name); - return 0; - } -/* checking if MetaData GEOMETRY_COLUMNS exists */ - sql = - "SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'geometry_columns'"; - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { - if (!err_msg) - spatialite_e ("load shapefile error: <%s>\n", - sqlite3_errmsg (sqlite)); - else - sprintf (err_msg, "load shapefile error: <%s>\n", - sqlite3_errmsg (sqlite)); - if (qtable) - free (qtable); - if (qpk_name) - free (qpk_name); - return 0; - } - while (1) - { - /* scrolling the result set */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - metadata = 1; - else - { - spatialite_e ("load shapefile error: <%s>\n", - sqlite3_errmsg (sqlite)); - break; - } - } - sqlite3_finalize (stmt); - shp = gaiaAllocShapefile (); - gaiaOpenShpRead (shp, shp_path, charset, "UTF-8"); - if (!(shp->Valid)) - { - if (!err_msg) - { - spatialite_e - ("load shapefile error: cannot open shapefile '%s'\n", - shp_path); - if (shp->LastError) - spatialite_e ("\tcause: %s\n", shp->LastError); - } - else - { - char extra[512]; - *extra = '\0'; - if (shp->LastError) - sprintf (extra, "\n\tcause: %s\n", shp->LastError); - sprintf (err_msg, - "load shapefile error: cannot open shapefile '%s'%s", - shp_path, extra); - } - gaiaFreeShapefile (shp); - if (qtable) - free (qtable); - if (qpk_name) - free (qpk_name); - return 0; - } -/* checking for duplicate / illegal column names and antialising them */ - col_cnt = 0; - dbf_field = shp->Dbf->First; - while (dbf_field) - { - /* counting DBF fields */ - col_cnt++; - dbf_field = dbf_field->Next; - } - col_name = malloc (sizeof (char *) * col_cnt); - cnt = 0; - seed = 0; - if (pk_column != NULL) - { - /* validating the Primary Key column */ - dbf_field = shp->Dbf->First; - while (dbf_field) - { - if (strcasecmp (pk_column, dbf_field->Name) == 0) - { - /* ok, using this field as Primary Key */ - pk_name = pk_column; - pk_autoincr = 0; - switch (dbf_field->Type) - { - case 'C': - pk_type = SQLITE_TEXT; - break; - case 'N': - if (dbf_field->Decimals) - pk_type = SQLITE_FLOAT; - else - { - if (dbf_field->Length <= 18) - pk_type = SQLITE_INTEGER; - else - pk_type = SQLITE_FLOAT; - } - break; - case 'D': - pk_type = SQLITE_FLOAT; - break; - case 'F': - pk_type = SQLITE_FLOAT; - break; - case 'L': - pk_type = SQLITE_INTEGER; - break; - }; - } - dbf_field = dbf_field->Next; - } - } - if (pk_name == NULL) - { - if (pk_column != NULL) - pk_name = pk_column; - else - pk_name = "PK_UID"; - } - qpk_name = gaiaDoubleQuotedSql (pk_name); - dbf_field = shp->Dbf->First; - while (dbf_field) - { - /* preparing column names */ - char *xdummy = NULL; - if (strcasecmp (pk_name, dbf_field->Name) == 0) - { - /* skipping the Primary Key field */ - dummy = dbf_field->Name; - len = strlen (dummy); - *(col_name + cnt) = malloc (len + 1); - strcpy (*(col_name + cnt), dummy); - cnt++; - dbf_field = dbf_field->Next; - continue; - } - dummy = dbf_field->Name; - dup = 0; - for (idup = 0; idup < cnt; idup++) - { - if (strcasecmp (dummy, *(col_name + idup)) == 0) - dup = 1; - } - if (strcasecmp (dummy, pk_name) == 0) - dup = 1; - if (strcasecmp (dummy, geo_column) == 0) - dup = 1; - if (dup) - { - xdummy = sqlite3_mprintf ("COL_%d", seed++); - dummy = xdummy; - } - len = strlen (dummy); - *(col_name + cnt) = malloc (len + 1); - strcpy (*(col_name + cnt), dummy); - if (xdummy) - sqlite3_free (xdummy); - cnt++; - dbf_field = dbf_field->Next; - } - if (verbose) - spatialite_e - ("========\nLoading shapefile at '%s' into SQLite table '%s'\n", - shp_path, table); -/* starting a transaction */ - if (verbose) - spatialite_e ("\nBEGIN;\n"); - ret = sqlite3_exec (sqlite, "BEGIN", NULL, 0, &errMsg); - if (ret != SQLITE_OK) - { - if (!err_msg) - spatialite_e ("load shapefile error: <%s>\n", errMsg); - else - sprintf (err_msg, "load shapefile error: <%s>\n", errMsg); - sqlite3_free (errMsg); - sqlError = 1; - goto clean_up; - } -/* creating the Table */ - gaiaOutBufferInitialize (&sql_statement); - if (pk_type == SQLITE_TEXT) - { - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " - "TEXT PRIMARY KEY NOT NULL", qtable, qpk_name); - } - else if (pk_type == SQLITE_FLOAT) - { - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " - "DOUBLE PRIMARY KEY NOT NULL", qtable, - qpk_name); - } - else - { - if (pk_autoincr) - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " - "INTEGER PRIMARY KEY AUTOINCREMENT", - qtable, qpk_name); - else - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " - "INTEGER NOT NULL PRIMARY KEY", qtable, - qpk_name); - } - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - cnt = 0; - dbf_field = shp->Dbf->First; - while (dbf_field) - { - if (strcasecmp (pk_name, dbf_field->Name) == 0) - { - /* skipping the Primary Key field */ - dbf_field = dbf_field->Next; - cnt++; - continue; - } - xname = gaiaDoubleQuotedSql (*(col_name + cnt)); - sql = sqlite3_mprintf (",\n\"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - cnt++; - switch (dbf_field->Type) - { - case 'C': - gaiaAppendToOutBuffer (&sql_statement, " TEXT"); - break; - case 'N': - if (dbf_field->Decimals) - gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); - else - { - if (dbf_field->Length <= 18) - gaiaAppendToOutBuffer (&sql_statement, " INTEGER"); - else - gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); - } - break; - case 'D': - gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); - break; - case 'F': - gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); - break; - case 'L': - gaiaAppendToOutBuffer (&sql_statement, " INTEGER"); - break; - }; - dbf_field = dbf_field->Next; - } - if (metadata) - gaiaAppendToOutBuffer (&sql_statement, ")"); - else - { - xname = gaiaDoubleQuotedSql (geo_column); - sql = sqlite3_mprintf (",\n\"%s\" BLOB)", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - } - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - { - if (verbose) - spatialite_e ("%s;\n", sql_statement.Buffer); - ret = sqlite3_exec (sqlite, sql_statement.Buffer, NULL, 0, &errMsg); - } - else - ret = SQLITE_ERROR; - gaiaOutBufferReset (&sql_statement); - if (ret != SQLITE_OK) - { - if (!err_msg) - spatialite_e ("load shapefile error: <%s>\n", errMsg); - else - sprintf (err_msg, "load shapefile error: <%s>\n", errMsg); - sqlite3_free (errMsg); - sqlError = 1; - goto clean_up; - } - if (metadata) - { - /* creating Geometry column */ - switch (shp->Shape) - { - case GAIA_SHP_POINT: - case GAIA_SHP_POINTM: - case GAIA_SHP_POINTZ: - geom_type = "POINT"; - break; - case GAIA_SHP_MULTIPOINT: - case GAIA_SHP_MULTIPOINTM: - case GAIA_SHP_MULTIPOINTZ: - geom_type = "MULTIPOINT"; - break; - case GAIA_SHP_POLYLINE: - case GAIA_SHP_POLYLINEM: - case GAIA_SHP_POLYLINEZ: - if (xgtype == NULL) - { - /* auto-decting if MULTILINESTRING is required */ - gaiaShpAnalyze (shp); - if (shp->EffectiveType == GAIA_LINESTRING) - geom_type = "LINESTRING"; - else - geom_type = "MULTILINESTRING"; - } - else - { - /* user-defined geometry type */ - if (strcmp (xgtype, "LINESTRING") == 0) - { - geom_type = "LINESTRING"; - shp->EffectiveType = GAIA_LINESTRING; - shp->EffectiveDims = GAIA_XY; - } - if (strcmp (xgtype, "LINESTRINGZ") == 0) - { - geom_type = "LINESTRING"; - shp->EffectiveType = GAIA_LINESTRING; - shp->EffectiveDims = GAIA_XY_Z; - } - if (strcmp (xgtype, "LINESTRINGM") == 0) - { - geom_type = "LINESTRING"; - shp->EffectiveType = GAIA_LINESTRING; - shp->EffectiveDims = GAIA_XY_M; - } - if (strcmp (xgtype, "LINESTRINGZM") == 0) - { - geom_type = "LINESTRING"; - shp->EffectiveType = GAIA_LINESTRING; - shp->EffectiveDims = GAIA_XY_Z_M; - } - if (strcmp (xgtype, "MULTILINESTRING") == 0) - { - geom_type = "MULTILINESTRING"; - shp->EffectiveType = GAIA_MULTILINESTRING; - shp->EffectiveDims = GAIA_XY; - } - if (strcmp (xgtype, "MULTILINESTRINGZ") == 0) - { - geom_type = "MULTILINESTRING"; - shp->EffectiveType = GAIA_MULTILINESTRING; - shp->EffectiveDims = GAIA_XY_Z; - } - if (strcmp (xgtype, "MULTILINESTRINGM") == 0) - { - geom_type = "MULTILINESTRING"; - shp->EffectiveType = GAIA_MULTILINESTRING; - shp->EffectiveDims = GAIA_XY_M; - } - if (strcmp (xgtype, "MULTILINESTRINGZM") == 0) - { - geom_type = "MULTILINESTRING"; - shp->EffectiveType = GAIA_MULTILINESTRING; - shp->EffectiveDims = GAIA_XY_Z_M; - } - } - break; - case GAIA_SHP_POLYGON: - case GAIA_SHP_POLYGONM: - case GAIA_SHP_POLYGONZ: - if (xgtype == NULL) - { - /* auto-decting if MULTIPOLYGON is required */ - gaiaShpAnalyze (shp); - if (shp->EffectiveType == GAIA_POLYGON) - geom_type = "POLYGON"; - else - geom_type = "MULTIPOLYGON"; - } - else - { - /* user-defined geometry type */ - if (strcmp (xgtype, "POLYGON") == 0) - { - geom_type = "POLYGON"; - shp->EffectiveType = GAIA_POLYGON; - shp->EffectiveDims = GAIA_XY; - } - if (strcmp (xgtype, "POLYGONZ") == 0) - { - geom_type = "POLYGON"; - shp->EffectiveType = GAIA_POLYGON; - shp->EffectiveDims = GAIA_XY_Z; - } - if (strcmp (xgtype, "POLYGONM") == 0) - { - geom_type = "POLYGON"; - shp->EffectiveType = GAIA_POLYGON; - shp->EffectiveDims = GAIA_XY_M; - } - if (strcmp (xgtype, "POLYGONZM") == 0) - { - geom_type = "POLYGON"; - shp->EffectiveType = GAIA_POLYGON; - shp->EffectiveDims = GAIA_XY_Z_M; - } - if (strcmp (xgtype, "MULTIPOLYGON") == 0) - { - geom_type = "MULTIPOLYGON"; - shp->EffectiveType = GAIA_MULTIPOLYGON; - shp->EffectiveDims = GAIA_XY; - } - if (strcmp (xgtype, "MULTIPOLYGONZ") == 0) - { - geom_type = "MULTIPOLYGON"; - shp->EffectiveType = GAIA_MULTIPOLYGON; - shp->EffectiveDims = GAIA_XY_Z; - } - if (strcmp (xgtype, "MULTIPOLYGONM") == 0) - { - geom_type = "MULTIPOLYGON"; - shp->EffectiveType = GAIA_MULTIPOLYGON; - shp->EffectiveDims = GAIA_XY_M; - } - if (strcmp (xgtype, "MULTIPOLYGONZM") == 0) - { - geom_type = "MULTIPOLYGON"; - shp->EffectiveType = GAIA_MULTIPOLYGON; - shp->EffectiveDims = GAIA_XY_Z_M; - } - } - break; - }; - if (coerce2d) - shp->EffectiveDims = GAIA_XY; - switch (shp->EffectiveDims) - { - case GAIA_XY_Z: - txt_dims = "XYZ"; - break; - case GAIA_XY_M: - txt_dims = "XYM"; - break; - case GAIA_XY_Z_M: - txt_dims = "XYZM"; - break; - default: - txt_dims = "XY"; - break; - }; - sql = sqlite3_mprintf ("SELECT AddGeometryColumn(%Q, %Q, %d, %Q, %Q)", - table, geo_column, srid, geom_type, txt_dims); - if (verbose) - spatialite_e ("%s;\n", sql); - ret = sqlite3_exec (sqlite, sql, NULL, 0, &errMsg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - if (!err_msg) - spatialite_e ("load shapefile error: <%s>\n", errMsg); - else - sprintf (err_msg, "load shapefile error: <%s>\n", errMsg); - sqlite3_free (errMsg); - sqlError = 1; - goto clean_up; - } - if (spatial_index) - { - /* creating the Spatial Index */ - sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, %Q)", - table, geo_column); - ret = sqlite3_exec (sqlite, sql, NULL, 0, &errMsg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - if (!err_msg) - spatialite_e ("load shapefile error: <%s>\n", errMsg); - else - sprintf (err_msg, "load shapefile error: <%s>\n", - errMsg); - sqlite3_free (errMsg); - sqlError = 1; - goto clean_up; - } - } - } - else - { - /* no Metadata */ - if (shp->Shape == GAIA_SHP_POLYLINE - || shp->Shape == GAIA_SHP_POLYLINEM - || shp->Shape == GAIA_SHP_POLYLINEZ - || shp->Shape == GAIA_SHP_POLYGON - || shp->Shape == GAIA_SHP_POLYGONM - || shp->Shape == GAIA_SHP_POLYGONZ) - { - /* - / fixing anyway the Geometry type for - / LINESTRING/MULTILINESTRING or - / POLYGON/MULTIPOLYGON - */ - gaiaShpAnalyze (shp); - } - } - /* preparing the INSERT INTO parametrerized statement */ - gaiaOutBufferInitialize (&sql_statement); - sql = sqlite3_mprintf ("INSERT INTO \"%s\" (\"%s\",", qtable, qpk_name); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - cnt = 0; - dbf_field = shp->Dbf->First; - while (dbf_field) - { - /* columns corresponding to some DBF attribute */ - if (strcasecmp (pk_name, dbf_field->Name) == 0) - { - /* skipping the Primary Key field */ - dbf_field = dbf_field->Next; - cnt++; - continue; - } - xname = gaiaDoubleQuotedSql (*(col_name + cnt++)); - sql = sqlite3_mprintf ("\"%s\" ,", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - dbf_field = dbf_field->Next; - } - xname = gaiaDoubleQuotedSql (geo_column); /* the GEOMETRY column */ - sql = sqlite3_mprintf ("\"%s\")\n VALUES (?", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - dbf_field = shp->Dbf->First; - while (dbf_field) - { - /* column values */ - if (strcasecmp (pk_name, dbf_field->Name) == 0) - { - /* skipping the Primary Key field */ - dbf_field = dbf_field->Next; - continue; - } - gaiaAppendToOutBuffer (&sql_statement, ", ?"); - dbf_field = dbf_field->Next; - } - gaiaAppendToOutBuffer (&sql_statement, ", ?)"); /* the GEOMETRY column */ - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - ret = - sqlite3_prepare_v2 (sqlite, sql_statement.Buffer, - strlen (sql_statement.Buffer), &stmt, NULL); - else - ret = SQLITE_ERROR; - gaiaOutBufferReset (&sql_statement); - if (ret != SQLITE_OK) - { - if (!err_msg) - spatialite_e ("load shapefile error: <%s>\n", - sqlite3_errmsg (sqlite)); - else - sprintf (err_msg, "load shapefile error: <%s>\n", - sqlite3_errmsg (sqlite)); - sqlError = 1; - goto clean_up; - } - current_row = 0; - while (1) - { - /* inserting rows from shapefile */ - ret = gaiaReadShpEntity (shp, current_row, srid); - if (!ret) - { - if (!(shp->LastError)) /* normal SHP EOF */ - break; - if (!err_msg) - spatialite_e ("%s\n", shp->LastError); - else - sprintf (err_msg, "%s\n", shp->LastError); - sqlError = 1; - sqlite3_finalize (stmt); - goto clean_up; - } - current_row++; - /* binding query params */ - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - pk_set = 0; - cnt = 0; - dbf_field = shp->Dbf->First; - while (dbf_field) - { - /* Primary Key value */ - if (strcasecmp (pk_name, dbf_field->Name) == 0) - { - if (pk_type == SQLITE_TEXT) - sqlite3_bind_text (stmt, 1, - dbf_field->Value->TxtValue, - strlen (dbf_field-> - Value->TxtValue), - SQLITE_STATIC); - else if (pk_type == SQLITE_FLOAT) - sqlite3_bind_double (stmt, 1, - dbf_field->Value->DblValue); - else - sqlite3_bind_int64 (stmt, 1, - dbf_field->Value->IntValue); - pk_set = 1; - } - dbf_field = dbf_field->Next; - } - if (!pk_set) - sqlite3_bind_int (stmt, 1, current_row); - cnt = 0; - dbf_field = shp->Dbf->First; - while (dbf_field) - { - /* column values */ - if (strcasecmp (pk_name, dbf_field->Name) == 0) - { - /* skipping the Primary Key field */ - dbf_field = dbf_field->Next; - continue; - } - if (!(dbf_field->Value)) - sqlite3_bind_null (stmt, cnt + 2); - else - { - switch (dbf_field->Value->Type) - { - case GAIA_INT_VALUE: - sqlite3_bind_int64 (stmt, cnt + 2, - dbf_field->Value->IntValue); - break; - case GAIA_DOUBLE_VALUE: - sqlite3_bind_double (stmt, cnt + 2, - dbf_field->Value->DblValue); - break; - case GAIA_TEXT_VALUE: - sqlite3_bind_text (stmt, cnt + 2, - dbf_field->Value->TxtValue, - strlen (dbf_field->Value-> - TxtValue), - SQLITE_STATIC); - break; - default: - sqlite3_bind_null (stmt, cnt + 2); - break; - } - } - cnt++; - dbf_field = dbf_field->Next; - } - if (shp->Dbf->Geometry) - { - if (compressed) - gaiaToCompressedBlobWkb (shp->Dbf->Geometry, &blob, - &blob_size); - else - gaiaToSpatiaLiteBlobWkb (shp->Dbf->Geometry, &blob, - &blob_size); - sqlite3_bind_blob (stmt, cnt + 2, blob, blob_size, free); - } - else - { - /* handling a NULL-Geometry */ - sqlite3_bind_null (stmt, cnt + 2); - } - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - if (!err_msg) - spatialite_e ("load shapefile error: <%s>\n", - sqlite3_errmsg (sqlite)); - else - sprintf (err_msg, "load shapefile error: <%s>\n", - sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - sqlError = 1; - goto clean_up; - } - } - sqlite3_finalize (stmt); - clean_up: - if (qtable) - free (qtable); - if (qpk_name) - free (qpk_name); - gaiaFreeShapefile (shp); - if (col_name) - { - /* releasing memory allocation for column names */ - for (cnt = 0; cnt < col_cnt; cnt++) - free (*(col_name + cnt)); - free (col_name); - } - if (sqlError) - { - /* some error occurred - ROLLBACK */ - if (verbose) - spatialite_e ("ROLLBACK;\n"); - ret = sqlite3_exec (sqlite, "ROLLBACK", NULL, 0, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("load shapefile error: <%s>\n", errMsg); - sqlite3_free (errMsg); - } - if (rows) - *rows = current_row; - return 0; - } - else - { - /* ok - confirming pending transaction - COMMIT */ - if (verbose) - spatialite_e ("COMMIT;\n"); - ret = sqlite3_exec (sqlite, "COMMIT", NULL, 0, &errMsg); - if (ret != SQLITE_OK) - { - if (!err_msg) - spatialite_e ("load shapefile error: <%s>\n", errMsg); - else - sprintf (err_msg, "load shapefile error: <%s>\n", errMsg); - sqlite3_free (errMsg); - return 0; - } - if (rows) - *rows = current_row; - if (verbose) - spatialite_e - ("\nInserted %d rows into '%s' from SHAPEFILE\n========\n", - current_row, table); - if (err_msg) - sprintf (err_msg, "Inserted %d rows into '%s' from SHAPEFILE", - current_row, table); - return 1; - } -} - -#endif /* end ICONV (SHP) */ - -static void -output_prj_file (sqlite3 * sqlite, char *path, char *table, char *column) -{ -/* exporting [if possible] a .PRJ file */ - char **results; - int rows; - int columns; - int i; - char *errMsg = NULL; - int srid = -1; - char *sql; - int ret; - int rs_srid = 0; - int rs_srs_wkt = 0; - int rs_srtext = 0; - int has_srtext = 0; - const char *name; - char *srsWkt = NULL; - FILE *out; - -/* step I: retrieving the SRID */ - sql = sqlite3_mprintf ("SELECT srid FROM geometry_columns WHERE " - "f_table_name = %Q AND f_geometry_column = %Q", - table, column); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - spatialite_e ("dump shapefile MetaData error: <%s>\n", errMsg); - sqlite3_free (errMsg); - return; - } - for (i = 1; i <= rows; i++) - { - srid = atoi (results[(i * columns) + 0]); - } - sqlite3_free_table (results); - if (srid <= 0) - { - /* srid still undefined, so we'll read VIEWS_GEOMETRY_COLUMNS */ - sql = sqlite3_mprintf ("SELECT srid FROM views_geometry_columns " - "JOIN geometry_columns USING (f_table_name, f_geometry_column) " - "WHERE view_name = %Q AND view_geometry = %Q", - table, column); - ret = - sqlite3_get_table (sqlite, sql, &results, &rows, &columns, - &errMsg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - spatialite_e ("dump shapefile MetaData error: <%s>\n", errMsg); - sqlite3_free (errMsg); - return; - } - for (i = 1; i <= rows; i++) - { - srid = atoi (results[(i * columns) + 0]); - } - sqlite3_free_table (results); - } - if (srid <= 0) - return; - -/* step II: checking if the SRS_WKT or SRTEXT column actually exists */ - ret = - sqlite3_get_table (sqlite, "PRAGMA table_info(spatial_ref_sys)", - &results, &rows, &columns, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("dump shapefile MetaData error: <%s>\n", errMsg); - sqlite3_free (errMsg); - return; - } - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 1]; - if (strcasecmp (name, "srid") == 0) - rs_srid = 1; - if (strcasecmp (name, "srs_wkt") == 0) - rs_srs_wkt = 1; - if (strcasecmp (name, "srtext") == 0) - rs_srtext = 1; - } - } - sqlite3_free_table (results); - if (rs_srs_wkt == 1 || rs_srtext == 1) - has_srtext = 1; - if (rs_srid == 0 || has_srtext == 0) - return; - -/* step III: fetching WKT SRS */ - if (rs_srtext) - { - sql = sqlite3_mprintf ("SELECT srtext FROM spatial_ref_sys " - "WHERE srid = %d AND srtext IS NOT NULL", - srid); - } - else - { - sql = sqlite3_mprintf ("SELECT srs_wkt FROM spatial_ref_sys " - "WHERE srid = %d AND srs_wkt IS NOT NULL", - srid); - } - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - spatialite_e ("dump shapefile MetaData error: <%s>\n", errMsg); - sqlite3_free (errMsg); - goto end; - } - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - char *srs = results[(i * columns) + 0]; - int len = strlen (srs); - if (srsWkt) - free (srsWkt); - srsWkt = malloc (len + 1); - strcpy (srsWkt, srs); - } - } - sqlite3_free_table (results); - if (srsWkt == NULL) - goto end; - -/* step IV: generating the .PRJ file */ - sql = sqlite3_mprintf ("%s.prj", path); - out = fopen (sql, "wb"); - sqlite3_free (sql); - if (!out) - goto end; - fprintf (out, "%s\r\n", srsWkt); - fclose (out); - end: - if (srsWkt) - free (srsWkt); - return; -} - -#ifndef OMIT_ICONV /* ICONV enabled: supporting SHAPEFILE and DBF */ - - -static int -get_default_dbf_fields (sqlite3 * sqlite, const char *xtable, - gaiaDbfListPtr * dbf_export_list) -{ -/* creating DBF field definitions for an empty DBF */ - int row = 0; - char *sql; - sqlite3_stmt *stmt; - int ret; - int offset = 0; - gaiaDbfListPtr list = NULL; - - sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xtable); -/* -/ compiling SQL prepared statement -*/ - - list = gaiaAllocDbfList (); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - goto sql_error; - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* processing a result set row */ - int xtype = SQLITE_TEXT; - int length = 60; - char *name = (char *) sqlite3_column_text (stmt, 1); - const char *type = (const char *) sqlite3_column_text (stmt, 2); - - if (strcasecmp (type, "INT") == 0 - || strcasecmp (type, "INTEGER") == 0 - || strcasecmp (type, "SMALLINT") == 0 - || strcasecmp (type, "BIGINT") == 0 - || strcasecmp (type, "TINYINT") == 0) - xtype = SQLITE_INTEGER; - if (strcasecmp (type, "DOUBLE") == 0 - || strcasecmp (type, "REAL") == 0 - || strcasecmp (type, "DOUBLE PRECISION") == 0 - || strcasecmp (type, "NUMERIC") == 0 - || strcasecmp (type, "FLOAT") == 0) - xtype = SQLITE_FLOAT; - if (strncasecmp (type, "VARCHAR(", 8) == 0) - length = atoi (type + 8); - if (strncasecmp (type, "CHAR(", 5) == 0) - length = atoi (type + 5); - - if (xtype == SQLITE_FLOAT) - { - gaiaAddDbfField (list, name, 'N', offset, 19, 6); - offset += 19; - } - else if (xtype == SQLITE_INTEGER) - { - gaiaAddDbfField (list, name, 'N', offset, 18, 0); - offset += 18; - } - else - { - gaiaAddDbfField (list, name, 'C', offset, length, 0); - offset += length; - } - row++; - } - else - goto sql_error; - } - sqlite3_finalize (stmt); - if (row == 0) - goto sql_error; - *dbf_export_list = list; - return 1; - sql_error: - gaiaFreeDbfList (list); - *dbf_export_list = NULL; - return 0; -} - -static gaiaVectorLayersListPtr -recover_unregistered_geometry (sqlite3 * handle, const char *table, - const char *geometry) -{ -/* attempting to recover an unregistered Geometry */ - int len; - int error = 0; - gaiaVectorLayersListPtr list; - gaiaVectorLayerPtr lyr; - -/* allocating a VectorLayersList */ - list = malloc (sizeof (gaiaVectorLayersList)); - list->First = NULL; - list->Last = NULL; - list->Current = NULL; - - lyr = malloc (sizeof (gaiaVectorLayer)); - lyr->LayerType = GAIA_VECTOR_UNKNOWN; - len = strlen (table); - lyr->TableName = malloc (len + 1); - strcpy (lyr->TableName, table); - len = strlen (geometry); - lyr->GeometryName = malloc (len + 1); - strcpy (lyr->GeometryName, geometry); - lyr->Srid = 0; - lyr->GeometryType = GAIA_VECTOR_UNKNOWN; - lyr->Dimensions = GAIA_VECTOR_UNKNOWN; - lyr->SpatialIndex = GAIA_SPATIAL_INDEX_NONE; - lyr->ExtentInfos = NULL; - lyr->AuthInfos = NULL; - lyr->First = NULL; - lyr->Last = NULL; - lyr->Next = NULL; - list->Current = NULL; - if (list->First == NULL) - list->First = lyr; - if (list->Last != NULL) - list->Last->Next = lyr; - list->Last = lyr; - - if (!doComputeFieldInfos - (handle, lyr->TableName, lyr->GeometryName, - SPATIALITE_STATISTICS_LEGACY, lyr)) - error = 1; - - if (list->First == NULL || error) - { - gaiaFreeVectorLayersList (list); - return NULL; - } - return list; -} - -static int -compute_max_int_length (sqlite3_int64 min, sqlite3_int64 max) -{ -/* determining the buffer size for some INT */ - int pos_len = 0; - int neg_len = 1; - sqlite3_int64 value = max; - while (value != 0) - { - pos_len++; - value /= 10; - } - if (min >= 0) - return pos_len; - value = min; - while (value != 0) - { - neg_len++; - value /= 10; - } - if (neg_len > pos_len) - return neg_len; - return pos_len; -} - -static int -compute_max_dbl_length (double min, double max) -{ -/* determining the buffer size for some DOUBLE */ - int pos_len = 0; - int neg_len = 1; - sqlite3_int64 value; - if (max >= 0.0) - value = floor (max); - else - value = ceil (max); - while (value != 0) - { - pos_len++; - value /= 10; - } - if (min >= 0.0) - return pos_len + 7; - value = ceil (min); - while (value != 0) - { - neg_len++; - value /= 10; - } - if (neg_len > pos_len) - return neg_len + 7; - return pos_len + 7; -} - -SPATIALITE_DECLARE int -dump_shapefile (sqlite3 * sqlite, char *table, char *column, char *shp_path, - char *charset, char *geom_type, int verbose, int *xrows, - char *err_msg) -{ -/* SHAPEFILE dump */ - char *sql; - char *dummy; - int shape = -1; - int len; - int ret; - sqlite3_stmt *stmt; - int n_cols = 0; - int offset = 0; - int i; - int rows = 0; - char buf[256]; - char *xtable; - char *xcolumn; - const void *blob_value; - gaiaShapefilePtr shp = NULL; - gaiaDbfListPtr dbf_list; - gaiaDbfListPtr dbf_write; - gaiaDbfFieldPtr dbf_field; - gaiaVectorLayerPtr lyr = NULL; - gaiaLayerAttributeFieldPtr fld; - gaiaVectorLayersListPtr list; - - if (geom_type) - { - /* normalizing required geometry type */ - if (strcasecmp ((char *) geom_type, "POINT") == 0) - shape = GAIA_POINT; - if (strcasecmp ((char *) geom_type, "LINESTRING") == 0) - shape = GAIA_LINESTRING; - if (strcasecmp ((char *) geom_type, "POLYGON") == 0) - shape = GAIA_POLYGON; - if (strcasecmp ((char *) geom_type, "MULTIPOINT") == 0) - shape = GAIA_POINT; - } -/* is the datasource a genuine registered Geometry ?? */ - list = gaiaGetVectorLayersList (sqlite, table, column, - GAIA_VECTORS_LIST_PESSIMISTIC); - if (list == NULL) - { - /* attempting to recover an unregistered Geometry */ - list = recover_unregistered_geometry (sqlite, table, column); - } - - if (list != NULL) - lyr = list->First; - if (lyr == NULL) - { - gaiaFreeVectorLayersList (list); - if (!err_msg) - spatialite_e - ("Unable to detect GeometryType for \"%s\".\"%s\" ... sorry\n", - table, column); - else - sprintf (err_msg, - "Unable to detect GeometryType for \"%s\".\"%s\" ... sorry\n", - table, column); - return 0; - } - - switch (lyr->GeometryType) - { - case GAIA_VECTOR_POINT: - switch (lyr->Dimensions) - { - case GAIA_XY: - shape = GAIA_POINT; - break; - case GAIA_XY_Z: - shape = GAIA_POINTZ; - break; - case GAIA_XY_M: - shape = GAIA_POINTM; - break; - case GAIA_XY_Z_M: - shape = GAIA_POINTZM; - break; - }; - break; - case GAIA_VECTOR_LINESTRING: - switch (lyr->Dimensions) - { - case GAIA_XY: - shape = GAIA_LINESTRING; - break; - case GAIA_XY_Z: - shape = GAIA_LINESTRINGZ; - break; - case GAIA_XY_M: - shape = GAIA_LINESTRINGM; - break; - case GAIA_XY_Z_M: - shape = GAIA_LINESTRINGZM; - break; - }; - break; - case GAIA_VECTOR_POLYGON: - switch (lyr->Dimensions) - { - case GAIA_XY: - shape = GAIA_POLYGON; - break; - case GAIA_XY_Z: - shape = GAIA_POLYGONZ; - break; - case GAIA_XY_M: - shape = GAIA_POLYGONM; - break; - case GAIA_XY_Z_M: - shape = GAIA_POLYGONZM; - break; - }; - break; - case GAIA_VECTOR_MULTIPOINT: - switch (lyr->Dimensions) - { - case GAIA_XY: - shape = GAIA_MULTIPOINT; - break; - case GAIA_XY_Z: - shape = GAIA_MULTIPOINTZ; - break; - case GAIA_XY_M: - shape = GAIA_MULTIPOINTM; - break; - case GAIA_XY_Z_M: - shape = GAIA_MULTIPOINTZM; - break; - }; - break; - case GAIA_VECTOR_MULTILINESTRING: - switch (lyr->Dimensions) - { - case GAIA_XY: - shape = GAIA_MULTILINESTRING; - break; - case GAIA_XY_Z: - shape = GAIA_MULTILINESTRINGZ; - break; - case GAIA_XY_M: - shape = GAIA_MULTILINESTRINGM; - break; - case GAIA_XY_Z_M: - shape = GAIA_MULTILINESTRINGZM; - break; - }; - break; - case GAIA_VECTOR_MULTIPOLYGON: - switch (lyr->Dimensions) - { - case GAIA_XY: - shape = GAIA_MULTIPOLYGON; - break; - case GAIA_XY_Z: - shape = GAIA_MULTIPOLYGONZ; - break; - case GAIA_XY_M: - shape = GAIA_MULTIPOLYGONM; - break; - case GAIA_XY_Z_M: - shape = GAIA_MULTIPOLYGONZM; - break; - }; - break; - }; - - if (shape < 0) - { - if (!err_msg) - spatialite_e - ("Unable to detect GeometryType for \"%s\".\"%s\" ... sorry\n", - table, column); - else - sprintf (err_msg, - "Unable to detect GeometryType for \"%s\".\"%s\" ... sorry\n", - table, column); - return 0; - } - if (verbose) - spatialite_e - ("========\nDumping SQLite table '%s' into shapefile at '%s'\n", - table, shp_path); - /* preparing SQL statement */ - xtable = gaiaDoubleQuotedSql (table); - xcolumn = gaiaDoubleQuotedSql (column); - if (shape == GAIA_LINESTRING || shape == GAIA_LINESTRINGZ - || shape == GAIA_LINESTRINGM || shape == GAIA_LINESTRINGZM || - shape == GAIA_MULTILINESTRING || shape == GAIA_MULTILINESTRINGZ - || shape == GAIA_MULTILINESTRINGM || shape == GAIA_MULTILINESTRINGZM) - { - sql = - sqlite3_mprintf - ("SELECT * FROM \"%s\" WHERE GeometryAliasType(\"%s\") = " - "'LINESTRING' OR GeometryAliasType(\"%s\") = 'MULTILINESTRING' " - "OR \"%s\" IS NULL", xtable, xcolumn, xcolumn, xcolumn); - } - else if (shape == GAIA_POLYGON || shape == GAIA_POLYGONZ - || shape == GAIA_POLYGONM || shape == GAIA_POLYGONZM || - shape == GAIA_MULTIPOLYGON || shape == GAIA_MULTIPOLYGONZ - || shape == GAIA_MULTIPOLYGONM || shape == GAIA_MULTIPOLYGONZM) - { - sql = - sqlite3_mprintf - ("SELECT * FROM \"%s\" WHERE GeometryAliasType(\"%s\") = " - "'POLYGON' OR GeometryAliasType(\"%s\") = 'MULTIPOLYGON'" - "OR \"%s\" IS NULL", xtable, xcolumn, xcolumn, xcolumn); - } - else if (shape == GAIA_MULTIPOINT || shape == GAIA_MULTIPOINTZ - || shape == GAIA_MULTIPOINTM || shape == GAIA_MULTIPOINTZM) - { - sql = - sqlite3_mprintf - ("SELECT * FROM \"%s\" WHERE GeometryAliasType(\"%s\") = " - "'POINT' OR GeometryAliasType(\"%s\") = 'MULTIPOINT'" - "OR \"%s\" IS NULL", xtable, xcolumn, xcolumn, xcolumn); - } - else - { - sql = - sqlite3_mprintf - ("SELECT * FROM \"%s\" WHERE GeometryAliasType(\"%s\") = " - "'POINT' OR \"%s\" IS NULL", xtable, xcolumn, xcolumn); - } -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - goto sql_error; - - if (lyr->First == NULL) - { - /* the datasource is probably empty - zero rows */ - if (get_default_dbf_fields (sqlite, xtable, &dbf_list)) - goto continue_exporting; - } - - -/* preparing the DBF fields list */ - dbf_list = gaiaAllocDbfList (); - offset = 0; - fld = lyr->First; - while (fld) - { - int sql_type = SQLITE_NULL; - int max_len; - if (strcasecmp (fld->AttributeFieldName, column) == 0) - { - /* ignoring the Geometry itself */ - fld = fld->Next; - continue; - } - if (fld->IntegerValuesCount > 0 && fld->DoubleValuesCount == 0 - && fld->TextValuesCount == 0) - { - sql_type = SQLITE_INTEGER; - max_len = 18; - if (fld->IntRange) - max_len = - compute_max_int_length (fld->IntRange->MinValue, - fld->IntRange->MaxValue); - } - if (fld->DoubleValuesCount > 0 && fld->TextValuesCount == 0) - { - sql_type = SQLITE_FLOAT; - max_len = 19; - if (fld->DoubleRange) - max_len = - compute_max_dbl_length (fld->DoubleRange->MinValue, - fld->DoubleRange->MaxValue); - } - if (fld->TextValuesCount > 0) - { - sql_type = SQLITE_TEXT; - max_len = 255; - if (fld->MaxSize) - max_len = fld->MaxSize->MaxSize; - } - if (sql_type == SQLITE_NULL) - { - /* considering as TEXT(1) */ - sql_type = SQLITE_TEXT; - max_len = 1; - } - /* adding a DBF field */ - if (sql_type == SQLITE_TEXT) - { - if (max_len == 0) /* avoiding ZERO-length fields */ - max_len = 1; - gaiaAddDbfField (dbf_list, fld->AttributeFieldName, 'C', offset, - max_len, 0); - offset += max_len; - } - if (sql_type == SQLITE_FLOAT) - { - if (max_len > 19) - max_len = 19; - gaiaAddDbfField (dbf_list, fld->AttributeFieldName, 'N', offset, - max_len, 6); - offset += max_len; - } - if (sql_type == SQLITE_INTEGER) - { - if (max_len > 18) - max_len = 18; - gaiaAddDbfField (dbf_list, fld->AttributeFieldName, 'N', offset, - max_len, 0); - offset += max_len; - } - fld = fld->Next; - } - -/* resetting SQLite query */ - continue_exporting: - ret = sqlite3_reset (stmt); - if (ret != SQLITE_OK) - goto sql_error; -/* trying to open shapefile files */ - shp = gaiaAllocShapefile (); - gaiaOpenShpWrite (shp, shp_path, shape, dbf_list, "UTF-8", charset); - if (!(shp->Valid)) - goto no_file; -/* trying to export the .PRJ file */ - output_prj_file (sqlite, shp_path, table, column); - while (1) - { - /* scrolling the result set to dump data into shapefile */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - if (n_cols == 0) - n_cols = sqlite3_column_count (stmt); - rows++; - dbf_write = gaiaCloneDbfEntity (dbf_list); - for (i = 0; i < n_cols; i++) - { - if (strcasecmp - ((char *) column, - (char *) sqlite3_column_name (stmt, i)) == 0) - { - /* this one is the internal BLOB encoded GEOMETRY to be exported */ - if (sqlite3_column_type (stmt, i) != SQLITE_BLOB) - { - /* this one is a NULL Geometry */ - dbf_write->Geometry = NULL; - } - else - { - blob_value = sqlite3_column_blob (stmt, i); - len = sqlite3_column_bytes (stmt, i); - dbf_write->Geometry = - gaiaFromSpatiaLiteBlobWkb (blob_value, - len); - } - } - dummy = (char *) sqlite3_column_name (stmt, i); - dbf_field = getDbfField (dbf_write, dummy); - if (!dbf_field) - continue; - if (sqlite3_column_type (stmt, i) == SQLITE_NULL) - { - /* handling NULL values */ - gaiaSetNullValue (dbf_field); - } - else - { - switch (dbf_field->Type) - { - case 'N': - if (sqlite3_column_type (stmt, i) == - SQLITE_INTEGER) - gaiaSetIntValue (dbf_field, - sqlite3_column_int64 - (stmt, i)); - else if (sqlite3_column_type (stmt, i) == - SQLITE_FLOAT) - gaiaSetDoubleValue (dbf_field, - sqlite3_column_double - (stmt, i)); - else - gaiaSetNullValue (dbf_field); - break; - case 'C': - if (sqlite3_column_type (stmt, i) == - SQLITE_TEXT) - { - dummy = - (char *) - sqlite3_column_text (stmt, i); - gaiaSetStrValue (dbf_field, dummy); - } - else if (sqlite3_column_type (stmt, i) == - SQLITE_INTEGER) - { -#if defined(_WIN32) || defined(__MINGW32__) - /* CAVEAT - M$ runtime doesn't supports %lld for 64 bits */ - sprintf (buf, "%I64d", - sqlite3_column_int64 (stmt, - i)); -#else - sprintf (buf, "%lld", - sqlite3_column_int64 (stmt, - i)); -#endif - gaiaSetStrValue (dbf_field, buf); - } - else if (sqlite3_column_type (stmt, i) == - SQLITE_FLOAT) - { - sql = sqlite3_mprintf ("%1.6f", - sqlite3_column_double - (stmt, i)); - gaiaSetStrValue (dbf_field, sql); - sqlite3_free (sql); - } - else - gaiaSetNullValue (dbf_field); - break; - }; - } - } - if (!gaiaWriteShpEntity (shp, dbf_write)) - spatialite_e ("shapefile write error\n"); - gaiaFreeDbfList (dbf_write); - } - else - goto sql_error; - } - sqlite3_finalize (stmt); - gaiaFlushShpHeaders (shp); - gaiaFreeShapefile (shp); - free (xtable); - free (xcolumn); - gaiaFreeVectorLayersList (list); - if (verbose) - spatialite_e ("\nExported %d rows into SHAPEFILE\n========\n", rows); - if (xrows) - *xrows = rows; - if (err_msg) - sprintf (err_msg, "Exported %d rows into SHAPEFILE", rows); - return 1; - sql_error: -/* some SQL error occurred */ - sqlite3_finalize (stmt); - free (xtable); - free (xcolumn); - gaiaFreeVectorLayersList (list); - if (dbf_list) - gaiaFreeDbfList (dbf_list); - if (shp) - gaiaFreeShapefile (shp); - if (!err_msg) - spatialite_e ("SELECT failed: %s", sqlite3_errmsg (sqlite)); - else - sprintf (err_msg, "SELECT failed: %s", sqlite3_errmsg (sqlite)); - return 0; - no_file: -/* shapefile can't be created/opened */ - free (xtable); - free (xcolumn); - gaiaFreeVectorLayersList (list); - if (dbf_list) - gaiaFreeDbfList (dbf_list); - if (shp) - gaiaFreeShapefile (shp); - if (!err_msg) - spatialite_e ("ERROR: unable to open '%s' for writing", shp_path); - else - sprintf (err_msg, "ERROR: unable to open '%s' for writing", shp_path); - return 0; -} - -SPATIALITE_DECLARE int -load_dbf (sqlite3 * sqlite, char *dbf_path, char *table, char *charset, - int verbose, int *rows, char *err_msg) -{ - return load_dbf_ex (sqlite, dbf_path, table, NULL, charset, verbose, rows, - err_msg); -} - -SPATIALITE_DECLARE int -load_dbf_ex (sqlite3 * sqlite, char *dbf_path, char *table, char *pk_column, - char *charset, int verbose, int *rows, char *err_msg) -{ - sqlite3_stmt *stmt; - int ret; - char *errMsg = NULL; - char *sql; - char *dummy; - char *xname; - int already_exists = 0; - int sqlError = 0; - gaiaDbfPtr dbf = NULL; - gaiaDbfFieldPtr dbf_field; - int cnt; - int col_cnt; - int seed; - int len; - int dup; - int idup; - int current_row; - char **col_name = NULL; - int deleted; - char *qtable = NULL; - char *qpk_name = NULL; - char *pk_name = NULL; - int pk_autoincr = 1; - gaiaOutBuffer sql_statement; - int pk_type = SQLITE_INTEGER; - int pk_set; - qtable = gaiaDoubleQuotedSql (table); -/* checking if TABLE already exists */ - sql = sqlite3_mprintf ("SELECT name FROM sqlite_master WHERE " - "type = 'table' AND Lower(name) = Lower(%Q)", table); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - if (!err_msg) - spatialite_e ("load DBF error: <%s>\n", sqlite3_errmsg (sqlite)); - else - sprintf (err_msg, "load DBF error: <%s>\n", - sqlite3_errmsg (sqlite)); - if (qtable) - free (qtable); - if (qpk_name) - free (qpk_name); - return 0; - } - while (1) - { - /* scrolling the result set */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - already_exists = 1; - else - { - spatialite_e ("load DBF error: <%s>\n", - sqlite3_errmsg (sqlite)); - break; - } - } - sqlite3_finalize (stmt); - if (already_exists) - { - if (!err_msg) - spatialite_e ("load DBF error: table '%s' already exists\n", - table); - else - sprintf (err_msg, "load DBF error: table '%s' already exists\n", - table); - if (qtable) - free (qtable); - if (qpk_name) - free (qpk_name); - return 0; - } - dbf = gaiaAllocDbf (); - gaiaOpenDbfRead (dbf, dbf_path, charset, "UTF-8"); - if (!(dbf->Valid)) - { - if (!err_msg) - { - spatialite_e ("load DBF error: cannot open '%s'\n", dbf_path); - if (dbf->LastError) - spatialite_e ("\tcause: %s\n", dbf->LastError); - } - else - { - char extra[512]; - *extra = '\0'; - if (dbf->LastError) - sprintf (extra, "\n\tcause: %s", dbf->LastError); - sprintf (err_msg, "load DBF error: cannot open '%s'%s", - dbf_path, extra); - } - gaiaFreeDbf (dbf); - if (qtable) - free (qtable); - if (qpk_name) - free (qpk_name); - return 0; - } -/* checking for duplicate / illegal column names and antialising them */ - col_cnt = 0; - dbf_field = dbf->Dbf->First; - while (dbf_field) - { - /* counting DBF fields */ - col_cnt++; - dbf_field = dbf_field->Next; - } - col_name = malloc (sizeof (char *) * col_cnt); - cnt = 0; - seed = 0; - if (pk_column != NULL) - { - /* validating the Primary Key column */ - dbf_field = dbf->Dbf->First; - while (dbf_field) - { - if (strcasecmp (pk_column, dbf_field->Name) == 0) - { - /* ok, using this field as Primary Key */ - pk_name = pk_column; - pk_autoincr = 0; - switch (dbf_field->Type) - { - case 'C': - pk_type = SQLITE_TEXT; - break; - case 'N': - if (dbf_field->Decimals) - pk_type = SQLITE_FLOAT; - else - { - if (dbf_field->Length <= 18) - pk_type = SQLITE_INTEGER; - else - pk_type = SQLITE_FLOAT; - } - break; - case 'D': - pk_type = SQLITE_FLOAT; - break; - case 'F': - pk_type = SQLITE_FLOAT; - break; - case 'L': - pk_type = SQLITE_INTEGER; - break; - }; - } - dbf_field = dbf_field->Next; - } - } - if (pk_name == NULL) - { - if (pk_column != NULL) - pk_name = pk_column; - else - pk_name = "PK_UID"; - } - qpk_name = gaiaDoubleQuotedSql (pk_name); - dbf_field = dbf->Dbf->First; - while (dbf_field) - { - /* preparing column names */ - char *xdummy = NULL; - if (strcasecmp (pk_name, dbf_field->Name) == 0) - { - /* skipping the Primary Key field */ - dummy = dbf_field->Name; - len = strlen (dummy); - *(col_name + cnt) = malloc (len + 1); - strcpy (*(col_name + cnt), dummy); - cnt++; - dbf_field = dbf_field->Next; - continue; - } - dummy = dbf_field->Name; - dup = 0; - for (idup = 0; idup < cnt; idup++) - { - if (strcasecmp (dummy, *(col_name + idup)) == 0) - dup = 1; - } - if (dup) - { - xdummy = sqlite3_mprintf ("COL_%d", seed++); - dummy = xdummy; - } - len = strlen (dummy); - *(col_name + cnt) = malloc (len + 1); - strcpy (*(col_name + cnt), dummy); - if (xdummy) - free (xdummy); - cnt++; - dbf_field = dbf_field->Next; - } - if (verbose) - spatialite_e ("========\nLoading DBF at '%s' into SQLite table '%s'\n", - dbf_path, table); -/* starting a transaction */ - if (verbose) - spatialite_e ("\nBEGIN;\n"); - ret = sqlite3_exec (sqlite, "BEGIN", NULL, 0, &errMsg); - if (ret != SQLITE_OK) - { - if (!err_msg) - spatialite_e ("load DBF error: <%s>\n", errMsg); - else - sprintf (err_msg, "load DBF error: <%s>\n", errMsg); - sqlite3_free (errMsg); - sqlError = 1; - goto clean_up; - } -/* creating the Table */ - gaiaOutBufferInitialize (&sql_statement); - if (pk_type == SQLITE_TEXT) - { - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " - "TEXT PRIMARY KEY NOT NULL", qtable, qpk_name); - } - else if (pk_type == SQLITE_FLOAT) - { - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " - "DOUBLE PRIMARY KEY NOT NULL", qtable, - qpk_name); - } - else - { - if (pk_autoincr) - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " - "INTEGER PRIMARY KEY AUTOINCREMENT", - qtable, qpk_name); - else - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " - "INTEGER NOT NULL PRIMARY KEY", qtable, - qpk_name); - } - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - cnt = 0; - dbf_field = dbf->Dbf->First; - while (dbf_field) - { - if (strcasecmp (pk_name, dbf_field->Name) == 0) - { - /* skipping the Primary Key field */ - dbf_field = dbf_field->Next; - cnt++; - continue; - } - xname = gaiaDoubleQuotedSql (*(col_name + cnt)); - sql = sqlite3_mprintf (",\n\"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - cnt++; - switch (dbf_field->Type) - { - case 'C': - gaiaAppendToOutBuffer (&sql_statement, " TEXT"); - break; - case 'N': - if (dbf_field->Decimals) - gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); - else - { - if (dbf_field->Length <= 18) - gaiaAppendToOutBuffer (&sql_statement, " INTEGER"); - else - gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); - } - break; - case 'D': - gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); - break; - case 'F': - gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); - break; - case 'L': - gaiaAppendToOutBuffer (&sql_statement, " INTEGER"); - break; - }; - dbf_field = dbf_field->Next; - } - gaiaAppendToOutBuffer (&sql_statement, ")"); - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - { - if (verbose) - spatialite_e ("%s;\n", sql_statement.Buffer); - ret = sqlite3_exec (sqlite, sql_statement.Buffer, NULL, 0, &errMsg); - } - else - ret = SQLITE_ERROR; - gaiaOutBufferReset (&sql_statement); - if (ret != SQLITE_OK) - { - if (!err_msg) - spatialite_e ("load DBF error: <%s>\n", errMsg); - else - sprintf (err_msg, "load DBF error: <%s>\n", errMsg); - sqlite3_free (errMsg); - sqlError = 1; - goto clean_up; - } - /* preparing the INSERT INTO parametrerized statement */ - sql = sqlite3_mprintf ("INSERT INTO \"%s\" (\"%s\"", qtable, qpk_name); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - cnt = 0; - dbf_field = dbf->Dbf->First; - while (dbf_field) - { - /* columns corresponding to some DBF attribute */ - if (strcasecmp (pk_name, dbf_field->Name) == 0) - { - /* skipping the Primary Key field */ - dbf_field = dbf_field->Next; - cnt++; - continue; - } - xname = gaiaDoubleQuotedSql (*(col_name + cnt++)); - sql = sqlite3_mprintf (",\"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - dbf_field = dbf_field->Next; - } - gaiaAppendToOutBuffer (&sql_statement, ")\nVALUES (?"); - dbf_field = dbf->Dbf->First; - while (dbf_field) - { - /* column values */ - if (strcasecmp (pk_name, dbf_field->Name) == 0) - { - /* skipping the Primary Key field */ - dbf_field = dbf_field->Next; - continue; - } - gaiaAppendToOutBuffer (&sql_statement, ", ?"); - dbf_field = dbf_field->Next; - } - gaiaAppendToOutBuffer (&sql_statement, ")"); - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - ret = - sqlite3_prepare_v2 (sqlite, sql_statement.Buffer, - strlen (sql_statement.Buffer), &stmt, NULL); - else - ret = SQLITE_ERROR; - gaiaOutBufferReset (&sql_statement); - if (ret != SQLITE_OK) - { - if (!err_msg) - spatialite_e ("load DBF error: <%s>\n", sqlite3_errmsg (sqlite)); - else - sprintf (err_msg, "load DBF error: <%s>\n", - sqlite3_errmsg (sqlite)); - sqlError = 1; - goto clean_up; - } - current_row = 0; - while (1) - { - /* inserting rows from DBF */ - ret = gaiaReadDbfEntity (dbf, current_row, &deleted); - if (!ret) - { - if (!(dbf->LastError)) /* normal DBF EOF */ - break; - if (!err_msg) - spatialite_e ("%s\n", dbf->LastError); - else - sprintf (err_msg, "%s\n", dbf->LastError); - sqlError = 1; - goto clean_up; - } - current_row++; - if (deleted) - { - /* skipping DBF deleted row */ - continue; - } - /* binding query params */ - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - pk_set = 0; - cnt = 0; - dbf_field = dbf->Dbf->First; - while (dbf_field) - { - /* Primary Key value */ - if (strcasecmp (pk_name, dbf_field->Name) == 0) - { - if (pk_type == SQLITE_TEXT) - sqlite3_bind_text (stmt, 1, - dbf_field->Value->TxtValue, - strlen (dbf_field-> - Value->TxtValue), - SQLITE_STATIC); - else if (pk_type == SQLITE_FLOAT) - sqlite3_bind_double (stmt, 1, - dbf_field->Value->DblValue); - else - sqlite3_bind_int64 (stmt, 1, - dbf_field->Value->IntValue); - pk_set = 1; - } - dbf_field = dbf_field->Next; - } - if (!pk_set) - sqlite3_bind_int (stmt, 1, current_row); - sqlite3_bind_int (stmt, 1, current_row); - cnt = 0; - dbf_field = dbf->Dbf->First; - while (dbf_field) - { - /* column values */ - if (strcasecmp (pk_name, dbf_field->Name) == 0) - { - /* skipping the Primary Key field */ - dbf_field = dbf_field->Next; - continue; - } - if (!(dbf_field->Value)) - sqlite3_bind_null (stmt, cnt + 2); - else - { - switch (dbf_field->Value->Type) - { - case GAIA_INT_VALUE: - sqlite3_bind_int64 (stmt, cnt + 2, - dbf_field->Value->IntValue); - break; - case GAIA_DOUBLE_VALUE: - sqlite3_bind_double (stmt, cnt + 2, - dbf_field->Value->DblValue); - break; - case GAIA_TEXT_VALUE: - sqlite3_bind_text (stmt, cnt + 2, - dbf_field->Value->TxtValue, - strlen (dbf_field->Value-> - TxtValue), - SQLITE_STATIC); - break; - default: - sqlite3_bind_null (stmt, cnt + 2); - break; - } - } - cnt++; - dbf_field = dbf_field->Next; - } - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - if (!err_msg) - spatialite_e ("load DBF error: <%s>\n", - sqlite3_errmsg (sqlite)); - else - sprintf (err_msg, "load DBF error: <%s>\n", - sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - sqlError = 1; - goto clean_up; - } - } - sqlite3_finalize (stmt); - clean_up: - if (qtable) - free (qtable); - if (qpk_name) - free (qpk_name); - gaiaFreeDbf (dbf); - if (col_name) - { - /* releasing memory allocation for column names */ - for (cnt = 0; cnt < col_cnt; cnt++) - free (*(col_name + cnt)); - free (col_name); - } - if (sqlError) - { - /* some error occurred - ROLLBACK */ - if (verbose) - spatialite_e ("ROLLBACK;\n"); - ret = sqlite3_exec (sqlite, "ROLLBACK", NULL, 0, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("load DBF error: <%s>\n", errMsg); - sqlite3_free (errMsg); - }; - if (rows) - *rows = current_row; - if (qtable) - free (qtable); - if (qpk_name) - free (qpk_name); - return 0; - } - else - { - /* ok - confirming pending transaction - COMMIT */ - if (verbose) - spatialite_e ("COMMIT;\n"); - ret = sqlite3_exec (sqlite, "COMMIT", NULL, 0, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("load DBF error: <%s>\n", errMsg); - sqlite3_free (errMsg); - return 0; - } - if (rows) - *rows = current_row; - if (verbose) - spatialite_e ("\nInserted %d rows into '%s' from DBF\n========\n", - current_row, table); - if (err_msg) - sprintf (err_msg, "Inserted %d rows into '%s' from DBF", - current_row, table); - return 1; - } -} - -SPATIALITE_DECLARE int -dump_dbf (sqlite3 * sqlite, char *table, char *dbf_path, char *charset, - char *err_msg) -{ -/* DBF dump */ - int rows; - int i; - char *sql; - char *xtable; - sqlite3_stmt *stmt; - int row1 = 0; - int n_cols = 0; - int offset = 0; - int type; - gaiaDbfPtr dbf = NULL; - gaiaDbfListPtr dbf_export_list = NULL; - gaiaDbfListPtr dbf_list = NULL; - gaiaDbfListPtr dbf_write; - gaiaDbfFieldPtr dbf_field; - int *max_length = NULL; - int *sql_type = NULL; - char *dummy; - char buf[256]; - int len; - int ret; -/* -/ preparing SQL statement -*/ - xtable = gaiaDoubleQuotedSql (table); - sql = sqlite3_mprintf ("SELECT * FROM \"%s\"", xtable); -/* -/ compiling SQL prepared statement -*/ - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - goto sql_error; - rows = 0; - while (1) - { - /* - / Pass I - scrolling the result set to compute real DBF attributes' sizes and types - */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* processing a result set row */ - row1++; - if (n_cols == 0) - { - /* this one is the first row, so we are going to prepare the DBF Fields list */ - n_cols = sqlite3_column_count (stmt); - dbf_export_list = gaiaAllocDbfList (); - max_length = (int *) malloc (sizeof (int) * n_cols); - sql_type = (int *) malloc (sizeof (int) * n_cols); - for (i = 0; i < n_cols; i++) - { - /* initializes the DBF export fields */ - dummy = (char *) sqlite3_column_name (stmt, i); - gaiaAddDbfField (dbf_export_list, dummy, '\0', 0, 0, - 0); - max_length[i] = 0; - sql_type[i] = SQLITE_NULL; - } - } - for (i = 0; i < n_cols; i++) - { - /* update the DBF export fields analyzing fetched data */ - type = sqlite3_column_type (stmt, i); - if (type == SQLITE_NULL || type == SQLITE_BLOB) - continue; - if (type == SQLITE_TEXT) - { - len = sqlite3_column_bytes (stmt, i); - sql_type[i] = SQLITE_TEXT; - if (len > max_length[i]) - max_length[i] = len; - } - else if (type == SQLITE_FLOAT - && sql_type[i] != SQLITE_TEXT) - sql_type[i] = SQLITE_FLOAT; /* promoting a numeric column to be DOUBLE */ - else if (type == SQLITE_INTEGER - && (sql_type[i] == SQLITE_NULL - || sql_type[i] == SQLITE_INTEGER)) - sql_type[i] = SQLITE_INTEGER; /* promoting a null column to be INTEGER */ - if (type == SQLITE_INTEGER && max_length[i] < 18) - max_length[i] = 18; - if (type == SQLITE_FLOAT && max_length[i] < 24) - max_length[i] = 24; - } - } - else - goto sql_error; - } - if (!row1) - goto empty_result_set; - i = 0; - offset = 0; - dbf_list = gaiaAllocDbfList (); - dbf_field = dbf_export_list->First; - while (dbf_field) - { - /* preparing the final DBF attribute list */ - if (sql_type[i] == SQLITE_NULL || sql_type[i] == SQLITE_BLOB) - { - i++; - dbf_field = dbf_field->Next; - continue; - } - if (sql_type[i] == SQLITE_TEXT) - { - gaiaAddDbfField (dbf_list, dbf_field->Name, 'C', offset, - max_length[i], 0); - offset += max_length[i]; - } - if (sql_type[i] == SQLITE_FLOAT) - { - gaiaAddDbfField (dbf_list, dbf_field->Name, 'N', offset, 19, 6); - offset += 19; - } - if (sql_type[i] == SQLITE_INTEGER) - { - gaiaAddDbfField (dbf_list, dbf_field->Name, 'N', offset, 18, 0); - offset += 18; - } - i++; - dbf_field = dbf_field->Next; - } - free (max_length); - free (sql_type); - gaiaFreeDbfList (dbf_export_list); - dbf_export_list = NULL; - - continue_exporting: -/* resetting SQLite query */ - ret = sqlite3_reset (stmt); - if (ret != SQLITE_OK) - goto sql_error; -/* trying to open the DBF file */ - dbf = gaiaAllocDbf (); -/* xfering export-list ownership */ - dbf->Dbf = dbf_list; - dbf_list = NULL; - gaiaOpenDbfWrite (dbf, dbf_path, "UTF-8", charset); - if (!(dbf->Valid)) - goto no_file; - while (1) - { - /* Pass II - scrolling the result set to dump data into DBF */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - rows++; - dbf_write = gaiaCloneDbfEntity (dbf->Dbf); - for (i = 0; i < n_cols; i++) - { - dummy = (char *) sqlite3_column_name (stmt, i); - dbf_field = getDbfField (dbf_write, dummy); - if (!dbf_field) - continue; - if (sqlite3_column_type (stmt, i) == SQLITE_NULL - || sqlite3_column_type (stmt, i) == SQLITE_BLOB) - { - /* handling NULL values */ - gaiaSetNullValue (dbf_field); - } - else - { - switch (dbf_field->Type) - { - case 'N': - if (sqlite3_column_type (stmt, i) == - SQLITE_INTEGER) - gaiaSetIntValue (dbf_field, - sqlite3_column_int64 - (stmt, i)); - else if (sqlite3_column_type (stmt, i) == - SQLITE_FLOAT) - gaiaSetDoubleValue (dbf_field, - sqlite3_column_double - (stmt, i)); - else - gaiaSetNullValue (dbf_field); - break; - case 'C': - if (sqlite3_column_type (stmt, i) == - SQLITE_TEXT) - { - dummy = (char *) - sqlite3_column_text (stmt, i); - gaiaSetStrValue (dbf_field, dummy); - } - else if (sqlite3_column_type (stmt, i) == - SQLITE_INTEGER) - { -#if defined(_WIN32) || defined(__MINGW32__) - /* CAVEAT - M$ runtime doesn't supports %lld for 64 bits */ - sprintf (buf, "%I64d", - sqlite3_column_int64 (stmt, - i)); -#else - sprintf (buf, "%lld", - sqlite3_column_int64 (stmt, - i)); -#endif - gaiaSetStrValue (dbf_field, buf); - } - else if (sqlite3_column_type (stmt, i) == - SQLITE_FLOAT) - { - sql = sqlite3_mprintf ("%1.6f", - sqlite3_column_double - (stmt, i)); - gaiaSetStrValue (dbf_field, sql); - sqlite3_free (sql); - } - else - gaiaSetNullValue (dbf_field); - break; - }; - } - } - if (!gaiaWriteDbfEntity (dbf, dbf_write)) - spatialite_e ("DBF write error\n"); - gaiaFreeDbfList (dbf_write); - } - else - goto sql_error; - } - sqlite3_finalize (stmt); - gaiaFlushDbfHeader (dbf); - gaiaFreeDbf (dbf); - free (xtable); - if (!err_msg) - spatialite_e ("Exported %d rows into the DBF file\n", rows); - else - sprintf (err_msg, "Exported %d rows into the DBF file\n", rows); - return 1; - sql_error: -/* some SQL error occurred */ - free (xtable); - sqlite3_finalize (stmt); - if (dbf_export_list) - gaiaFreeDbfList (dbf_export_list); - if (dbf_list) - gaiaFreeDbfList (dbf_list); - if (dbf) - gaiaFreeDbf (dbf); - if (!err_msg) - spatialite_e ("dump DBF file error: %s\n", sqlite3_errmsg (sqlite)); - else - sprintf (err_msg, "dump DBF file error: %s\n", sqlite3_errmsg (sqlite)); - return 0; - no_file: -/* DBF can't be created/opened */ - free (xtable); - if (dbf_export_list) - gaiaFreeDbfList (dbf_export_list); - if (dbf_list) - gaiaFreeDbfList (dbf_list); - if (dbf) - gaiaFreeDbf (dbf); - if (!err_msg) - spatialite_e ("ERROR: unable to open '%s' for writing\n", dbf_path); - else - sprintf (err_msg, "ERROR: unable to open '%s' for writing\n", dbf_path); - return 0; - empty_result_set: -/* the result set is empty - nothing to do */ - if (get_default_dbf_fields (sqlite, xtable, &dbf_list)) - goto continue_exporting; - free (xtable); - sqlite3_finalize (stmt); - if (dbf_export_list) - gaiaFreeDbfList (dbf_export_list); - if (dbf_list) - gaiaFreeDbfList (dbf_list); - if (dbf) - gaiaFreeDbf (dbf); - if (!err_msg) - spatialite_e - ("The SQL SELECT returned an empty result set ... there is nothing to export ...\n"); - else - sprintf (err_msg, - "The SQL SELECT returned an empty result set ... there is nothing to export ...\n"); - return 0; -} - -#endif /* end ICONV (SHP and DBF) */ - -SPATIALITE_DECLARE int -is_kml_constant (sqlite3 * sqlite, char *table, char *column) -{ -/* checking a possible column name for KML dump */ - char *sql; - char *xname; - int ret; - int k = 1; - const char *name; - char **results; - int rows; - int columns; - int i; - char *errMsg = NULL; - - xname = gaiaDoubleQuotedSql (table); - sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); - free (xname); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - return 1; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 1]; - if (strcasecmp (name, column) == 0) - k = 0; - } - } - sqlite3_free_table (results); - return k; -} - -SPATIALITE_DECLARE int -dump_kml (sqlite3 * sqlite, char *table, char *geom_col, char *kml_path, - char *name_col, char *desc_col, int precision) -{ -/* dumping a geometry table as KML */ - char *sql; - char *xname; - char *xdesc; - char *xgeom_col; - char *xtable; - sqlite3_stmt *stmt = NULL; - FILE *out = NULL; - int ret; - int rows = 0; - int is_const = 1; - -/* opening/creating the KML file */ - out = fopen (kml_path, "wb"); - if (!out) - goto no_file; - -/* preparing SQL statement */ - if (name_col == NULL) - xname = sqlite3_mprintf ("%Q", "name"); - else - { - is_const = is_kml_constant (sqlite, table, name_col); - if (is_const) - xname = sqlite3_mprintf ("%Q", name_col); - else - { - xname = gaiaDoubleQuotedSql (name_col); - sql = sqlite3_mprintf ("\"%s\"", xname); - free (xname); - xname = sql; - } - } - if (desc_col == NULL) - xdesc = sqlite3_mprintf ("%Q", "description"); - else - { - is_const = is_kml_constant (sqlite, table, desc_col); - if (is_const) - xdesc = sqlite3_mprintf ("%Q", desc_col); - else - { - xdesc = gaiaDoubleQuotedSql (desc_col); - sql = sqlite3_mprintf ("\"%s\"", xdesc); - free (xdesc); - xdesc = sql; - } - } - xgeom_col = gaiaDoubleQuotedSql (geom_col); - xtable = gaiaDoubleQuotedSql (table); - sql = sqlite3_mprintf ("SELECT AsKML(%s, %s, %s, %d) FROM \"%s\" " - "WHERE \"%s\" IS NOT NULL", xname, xdesc, - xgeom_col, precision, xtable, xgeom_col); - sqlite3_free (xname); - sqlite3_free (xdesc); - free (xgeom_col); - free (xtable); -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - goto sql_error; - - while (1) - { - /* scrolling the result set */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* processing a result set row */ - if (rows == 0) - { - fprintf (out, - "\r\n"); - fprintf (out, - "\r\n"); - fprintf (out, "\r\n"); - } - rows++; - fprintf (out, "\t%s\r\n", sqlite3_column_text (stmt, 0)); - } - else - goto sql_error; - } - if (!rows) - goto empty_result_set; - - - fprintf (out, "\r\n"); - fprintf (out, "\r\n"); - sqlite3_finalize (stmt); - fclose (out); - return 1; - - sql_error: -/* some SQL error occurred */ - if (stmt) - sqlite3_finalize (stmt); - if (out) - fclose (out); - spatialite_e ("Dump KML error: %s\n", sqlite3_errmsg (sqlite)); - return 0; - no_file: -/* KML file can't be created/opened */ - if (stmt) - sqlite3_finalize (stmt); - if (out) - fclose (out); - spatialite_e ("ERROR: unable to open '%s' for writing\n", kml_path); - return 0; - empty_result_set: -/* the result set is empty - nothing to do */ - if (stmt) - sqlite3_finalize (stmt); - if (out) - fclose (out); - spatialite_e - ("The SQL SELECT returned an empty result set\n... there is nothing to export ...\n"); - return 0; -} - -static int -is_table (sqlite3 * sqlite, const char *table) -{ -/* check if this one really is a TABLE */ - char *sql; - int ret; - char **results; - int rows; - int columns; - char *errMsg = NULL; - int ok = 0; - - sql = sqlite3_mprintf ("SELECT tbl_name FROM sqlite_master " - "WHERE type = 'table' AND Lower(tbl_name) = Lower(%Q)", - table); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - spatialite_e ("SQLite SQL error: %s\n", errMsg); - sqlite3_free (errMsg); - return ok; - } - if (rows < 1) - ; - else - ok = 1; - sqlite3_free_table (results); - return ok; -} - -SPATIALITE_DECLARE void -check_duplicated_rows (sqlite3 * sqlite, char *table, int *dupl_count) -{ -/* Checking a Table for Duplicate rows */ - char *sql; - int first = 1; - char *xname; - int pk; - int ret; - char **results; - int rows; - int columns; - int i; - char *errMsg = NULL; - sqlite3_stmt *stmt = NULL; - gaiaOutBuffer sql_statement; - gaiaOutBuffer col_list; - - *dupl_count = 0; - - if (is_table (sqlite, table) == 0) - { - spatialite_e (".chkdupl %s: no such table\n", table); - return; - } -/* extracting the column names (excluding any Primary Key) */ - gaiaOutBufferInitialize (&col_list); - xname = gaiaDoubleQuotedSql (table); - sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); - free (xname); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - spatialite_e ("SQLite SQL error: %s\n", errMsg); - sqlite3_free (errMsg); - return; - } - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - sql = results[(i * columns) + 1]; - pk = atoi (results[(i * columns) + 5]); - if (!pk) - { - xname = gaiaDoubleQuotedSql (sql); - if (first) - { - sql = sqlite3_mprintf ("\"%s\"", xname); - first = 0; - } - else - sql = sqlite3_mprintf (", \"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&col_list, sql); - sqlite3_free (sql); - } - } - } - sqlite3_free_table (results); - /* preparing the SQL statement */ - gaiaOutBufferInitialize (&sql_statement); - gaiaAppendToOutBuffer (&sql_statement, - "SELECT Count(*) AS \"[dupl-count]\", "); - if (col_list.Error == 0 && col_list.Buffer != NULL) - gaiaAppendToOutBuffer (&sql_statement, col_list.Buffer); - xname = gaiaDoubleQuotedSql (table); - sql = sqlite3_mprintf ("\nFROM \"%s\"\nGROUP BY ", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - if (col_list.Error == 0 && col_list.Buffer != NULL) - gaiaAppendToOutBuffer (&sql_statement, col_list.Buffer); - gaiaOutBufferReset (&col_list); - gaiaAppendToOutBuffer (&sql_statement, "\nHAVING \"[dupl-count]\" > 1"); - gaiaAppendToOutBuffer (&sql_statement, "\nORDER BY \"[dupl-count]\" DESC"); - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - { - ret = - sqlite3_prepare_v2 (sqlite, sql_statement.Buffer, - strlen (sql_statement.Buffer), &stmt, NULL); - gaiaOutBufferReset (&sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); - return; - } - } - while (1) - { - /* fetching the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* fetching a row */ - *dupl_count += sqlite3_column_int (stmt, 0) - 1; - } - else - { - spatialite_e ("SQL error: %s", sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - return; - } - } - sqlite3_finalize (stmt); - if (*dupl_count) - spatialite_e ("%d duplicated rows found !!!\n", *dupl_count); - else - spatialite_e ("No duplicated rows have been identified\n"); -} - -static int -do_delete_duplicates2 (sqlite3 * sqlite, sqlite3_stmt * stmt1, - struct dupl_row *value_list, int *count) -{ -/* deleting duplicate rows [actual delete] */ - int cnt = 0; - int row_no = 0; - char *sql; - char *xname; - int ret; - sqlite3_stmt *stmt2 = NULL; - struct dupl_column *col; - int first = 1; - int qcnt = 0; - int param = 1; - int match; - int n_cols; - int col_no; - gaiaOutBuffer sql_statement; - gaiaOutBuffer where; - gaiaOutBuffer condition; - - *count = 0; - reset_query_pos (value_list); - gaiaOutBufferInitialize (&sql_statement); - gaiaOutBufferInitialize (&where); - gaiaOutBufferInitialize (&condition); - -/* preparing the query statement */ - gaiaAppendToOutBuffer (&sql_statement, "SELECT ROWID"); - gaiaAppendToOutBuffer (&where, "\nWHERE "); - col = value_list->first; - while (col) - { - if (col->type == SQLITE_BLOB) - { - xname = gaiaDoubleQuotedSql (col->name); - sql = sqlite3_mprintf (", \"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - col->query_pos = qcnt++; - } - else if (col->type == SQLITE_NULL) - { - xname = gaiaDoubleQuotedSql (col->name); - if (first) - { - first = 0; - sql = sqlite3_mprintf ("\"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&condition, sql); - sqlite3_free (sql); - } - else - { - sql = sqlite3_mprintf (" AND \"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&condition, sql); - sqlite3_free (sql); - } - gaiaAppendToOutBuffer (&condition, " IS NULL"); - gaiaAppendToOutBuffer (&where, condition.Buffer); - gaiaOutBufferReset (&condition); - } - else - { - xname = gaiaDoubleQuotedSql (col->name); - if (first) - { - first = 0; - sql = sqlite3_mprintf ("\"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&condition, sql); - sqlite3_free (sql); - } - else - { - sql = sqlite3_mprintf (" AND \"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&condition, sql); - sqlite3_free (sql); - } - gaiaAppendToOutBuffer (&condition, " = ?"); - gaiaAppendToOutBuffer (&where, condition.Buffer); - gaiaOutBufferReset (&condition); - col->query_pos = param++; - } - col = col->next; - } - xname = gaiaDoubleQuotedSql (value_list->table); - sql = sqlite3_mprintf ("\nFROM \"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - gaiaAppendToOutBuffer (&sql_statement, where.Buffer); - gaiaOutBufferReset (&where); - - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - ret = - sqlite3_prepare_v2 (sqlite, sql_statement.Buffer, - strlen (sql_statement.Buffer), &stmt2, NULL); - else - ret = SQLITE_ERROR; - gaiaOutBufferReset (&sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); - goto error; - } - - sqlite3_reset (stmt2); - sqlite3_clear_bindings (stmt2); - col = value_list->first; - while (col) - { - /* binding query params */ - if (col->type == SQLITE_INTEGER) - sqlite3_bind_int64 (stmt2, col->query_pos, col->int_value); - if (col->type == SQLITE_FLOAT) - sqlite3_bind_double (stmt2, col->query_pos, col->dbl_value); - if (col->type == SQLITE_TEXT) - sqlite3_bind_text (stmt2, col->query_pos, col->txt_value, - strlen (col->txt_value), SQLITE_STATIC); - col = col->next; - } - - while (1) - { - /* fetching the result set rows */ - ret = sqlite3_step (stmt2); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* fetching a row */ - match = 1; - n_cols = sqlite3_column_count (stmt2); - for (col_no = 1; col_no < n_cols; col_no++) - { - /* checking blob columns */ - if (sqlite3_column_type (stmt2, col_no) == SQLITE_BLOB) - { - const void *blob = - sqlite3_column_blob (stmt2, col_no); - int blob_size = - sqlite3_column_bytes (stmt2, col_no); - if (check_dupl_blob - (value_list, col_no - 1, blob, blob_size) == 0) - match = 0; - } - else - match = 0; - if (match == 0) - break; - } - if (match == 0) - continue; - row_no++; - if (row_no > 1) - { - /* deleting any duplicated row except the first one */ - sqlite3_reset (stmt1); - sqlite3_clear_bindings (stmt1); - sqlite3_bind_int64 (stmt1, 1, - sqlite3_column_int64 (stmt2, 0)); - ret = sqlite3_step (stmt1); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - cnt++; - else - { - spatialite_e ("SQL error: %s\n", - sqlite3_errmsg (sqlite)); - goto error; - } - } - } - else - { - spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); - goto error; - } - } - if (stmt2) - sqlite3_finalize (stmt2); - *count = cnt; - return 1; - - error: - if (stmt2) - sqlite3_finalize (stmt2); - *count = 0; - - return 0; -} - -static int -do_delete_duplicates (sqlite3 * sqlite, const char *sql1, const char *sql2, - struct dupl_row *value_list, int *count) -{ -/* deleting duplicate rows */ - sqlite3_stmt *stmt1 = NULL; - sqlite3_stmt *stmt2 = NULL; - int ret; - int xcnt; - int cnt = 0; - int n_cols; - int col_no; - char *sql_err = NULL; - - *count = 0; - -/* the complete operation is handled as an unique SQL Transaction */ - ret = sqlite3_exec (sqlite, "BEGIN", NULL, NULL, &sql_err); - if (ret != SQLITE_OK) - { - spatialite_e ("BEGIN TRANSACTION error: %s\n", sql_err); - sqlite3_free (sql_err); - return 0; - } -/* preparing the main SELECT statement */ - ret = sqlite3_prepare_v2 (sqlite, sql1, strlen (sql1), &stmt1, NULL); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); - return 0; - } -/* preparing the DELETE statement */ - ret = sqlite3_prepare_v2 (sqlite, sql2, strlen (sql2), &stmt2, NULL); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); - goto error; - } - - while (1) - { - /* fetching the result set rows */ - ret = sqlite3_step (stmt1); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* fetching a row */ - sqlite3_reset (stmt2); - sqlite3_clear_bindings (stmt2); - n_cols = sqlite3_column_count (stmt1); - for (col_no = 1; col_no < n_cols; col_no++) - { - /* saving column values */ - if (sqlite3_column_type (stmt1, col_no) == SQLITE_INTEGER) - set_int_value (value_list, col_no - 1, - sqlite3_column_int64 (stmt1, col_no)); - if (sqlite3_column_type (stmt1, col_no) == SQLITE_FLOAT) - set_double_value (value_list, col_no - 1, - sqlite3_column_double (stmt1, - col_no)); - if (sqlite3_column_type (stmt1, col_no) == SQLITE_TEXT) - { - const char *xtext = - (const char *) sqlite3_column_text (stmt1, - col_no); - set_text_value (value_list, col_no - 1, xtext); - } - if (sqlite3_column_type (stmt1, col_no) == SQLITE_BLOB) - { - const void *blob = - sqlite3_column_blob (stmt1, col_no); - int blob_size = - sqlite3_column_bytes (stmt1, col_no); - set_blob_value (value_list, col_no - 1, blob, - blob_size); - } - if (sqlite3_column_type (stmt1, col_no) == SQLITE_NULL) - set_null_value (value_list, col_no - 1); - } - if (do_delete_duplicates2 (sqlite, stmt2, value_list, &xcnt)) - cnt += xcnt; - else - goto error; - } - else - { - spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); - goto error; - } - } - - sqlite3_finalize (stmt1); - sqlite3_finalize (stmt2); - -/* confirm the still pending Transaction */ - ret = sqlite3_exec (sqlite, "COMMIT", NULL, NULL, &sql_err); - if (ret != SQLITE_OK) - { - spatialite_e ("COMMIT TRANSACTION error: %s\n", sql_err); - sqlite3_free (sql_err); - return 0; - } - - *count = cnt; - return 1; - - error: - *count = 0; - if (stmt1) - sqlite3_finalize (stmt1); - if (stmt2) - sqlite3_finalize (stmt2); - -/* performing a ROLLBACK anyway */ - ret = sqlite3_exec (sqlite, "ROLLBACK", NULL, NULL, &sql_err); - if (ret != SQLITE_OK) - { - spatialite_e ("ROLLBACK TRANSACTION error: %s\n", sql_err); - sqlite3_free (sql_err); - return 0; - } - - return 0; -} - -SPATIALITE_DECLARE void -remove_duplicated_rows (sqlite3 * sqlite, char *table) -{ -/* attempting to delete Duplicate rows from a table */ - struct dupl_row value_list; - char *sql; - char *sql2; - int first = 1; - char *xname; - int pk; - int ret; - char **results; - int rows; - int columns; - int i; - char *errMsg = NULL; - int count; - gaiaOutBuffer sql_statement; - gaiaOutBuffer col_list; - - value_list.count = 0; - value_list.first = NULL; - value_list.last = NULL; - value_list.table = table; - - if (is_table (sqlite, table) == 0) - { - spatialite_e (".remdupl %s: no such table\n", table); - return; - } -/* extracting the column names (excluding any Primary Key) */ - gaiaOutBufferInitialize (&col_list); - xname = gaiaDoubleQuotedSql (table); - sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); - free (xname); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - spatialite_e ("SQLite SQL error: %s\n", errMsg); - sqlite3_free (errMsg); - return; - } - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - sql = results[(i * columns) + 1]; - pk = atoi (results[(i * columns) + 5]); - if (!pk) - { - if (first) - first = 0; - else - gaiaAppendToOutBuffer (&col_list, ", "); - xname = gaiaDoubleQuotedSql (sql); - sql = sqlite3_mprintf ("\"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&col_list, sql); - add_to_dupl_row (&value_list, sql); - sqlite3_free (sql); - } - } - } - sqlite3_free_table (results); -/* preparing the SQL statement (identifying duplicated rows) */ - gaiaOutBufferInitialize (&sql_statement); - gaiaAppendToOutBuffer (&sql_statement, - "SELECT Count(*) AS \"[dupl-count]\", "); - if (col_list.Error == 0 && col_list.Buffer != NULL) - gaiaAppendToOutBuffer (&sql_statement, col_list.Buffer); - xname = gaiaDoubleQuotedSql (table); - sql = sqlite3_mprintf ("\nFROM \"%s\"\nGROUP BY ", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - if (col_list.Error == 0 && col_list.Buffer != NULL) - gaiaAppendToOutBuffer (&sql_statement, col_list.Buffer); - gaiaOutBufferReset (&col_list); - gaiaAppendToOutBuffer (&sql_statement, "\nHAVING \"[dupl-count]\" > 1"); -/* preparing the SQL statement [delete] */ - xname = gaiaDoubleQuotedSql (table); - sql2 = sqlite3_mprintf ("DELETE FROM \"%s\" WHERE ROWID = ?", xname); - free (xname); - - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - sql = sql_statement.Buffer; - else - sql = "NULL-SELECT"; - if (do_delete_duplicates (sqlite, sql, sql2, &value_list, &count)) - { - if (!count) - spatialite_e ("No duplicated rows have been identified\n"); - else - spatialite_e ("%d duplicated rows deleted from: %s\n", count, - table); - } - gaiaOutBufferReset (&sql_statement); - sqlite3_free (sql2); - clean_dupl_row (&value_list); -} - -static int -check_elementary (sqlite3 * sqlite, const char *inTable, const char *geom, - const char *outTable, const char *pKey, const char *multiID, - char *type, int *srid, char *coordDims) -{ -/* preliminary check for ELEMENTARY GEOMETRIES */ - char *sql; - char *xtable; - int ret; - char **results; - int rows; - int columns; - char *errMsg = NULL; - int ok = 0; - int i; - char *gtp; - char *dims; - int metadata_version = checkSpatialMetaData (sqlite); - -/* fetching metadata */ - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - sql = sqlite3_mprintf ("SELECT geometry_type, srid " - "FROM geometry_columns WHERE Lower(f_table_name) = Lower(%Q)", - inTable); - } - else - { - /* legacy metadata style <= v.3.1.0 */ - sql = sqlite3_mprintf ("SELECT type, coord_dimension, srid " - "FROM geometry_columns WHERE Lower(f_table_name) = Lower(%Q)" - "') AND Lower(f_geometry_column) = Lower(%Q)", - inTable, geom); - } - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n", errMsg); - sqlite3_free (errMsg); - return 0; - } - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - gtp = "UNKNOWN"; - dims = "UNKNOWN"; - switch (atoi (results[(i * columns) + 0])) - { - case 0: - gtp = "GEOMETRY"; - dims = "XY"; - break; - case 1: - gtp = "POINT"; - dims = "XY"; - break; - case 2: - gtp = "LINESTRING"; - dims = "XY"; - break; - case 3: - gtp = "POLYGON"; - dims = "XY"; - break; - case 4: - gtp = "MULTIPOINT"; - dims = "XY"; - break; - case 5: - gtp = "MULTILINESTRING"; - dims = "XY"; - break; - case 6: - gtp = "MULTIPOLYGON"; - dims = "XY"; - break; - case 7: - gtp = "GEOMETRYCOLLECTION"; - dims = "XY"; - break; - case 1000: - gtp = "GEOMETRY"; - dims = "XYZ"; - break; - case 1001: - gtp = "POINT"; - dims = "XYZ"; - break; - case 1002: - gtp = "LINESTRING"; - dims = "XYZ"; - break; - case 1003: - gtp = "POLYGON"; - dims = "XYZ"; - break; - case 1004: - gtp = "MULTIPOINT"; - dims = "XYZ"; - break; - case 1005: - gtp = "MULTILINESTRING"; - dims = "XYZ"; - break; - case 1006: - gtp = "MULTIPOLYGON"; - dims = "XYZ"; - break; - case 1007: - gtp = "GEOMETRYCOLLECTION"; - dims = "XYZ"; - break; - case 2000: - gtp = "GEOMETRY"; - dims = "XYM"; - break; - case 2001: - gtp = "POINT"; - dims = "XYM"; - break; - case 2002: - gtp = "LINESTRING"; - dims = "XYM"; - break; - case 2003: - gtp = "POLYGON"; - dims = "XYM"; - break; - case 2004: - gtp = "MULTIPOINT"; - dims = "XYM"; - break; - case 2005: - gtp = "MULTILINESTRING"; - dims = "XYM"; - break; - case 2006: - gtp = "MULTIPOLYGON"; - dims = "XYM"; - break; - case 2007: - gtp = "GEOMETRYCOLLECTION"; - dims = "XYM"; - break; - case 3000: - gtp = "GEOMETRY"; - dims = "XYZM"; - break; - case 3001: - gtp = "POINT"; - dims = "XYZM"; - break; - case 3002: - gtp = "LINESTRING"; - dims = "XYZM"; - break; - case 3003: - gtp = "POLYGON"; - dims = "XYZM"; - break; - case 3004: - gtp = "MULTIPOINT"; - dims = "XYZM"; - break; - case 3005: - gtp = "MULTILINESTRING"; - dims = "XYZM"; - break; - case 3006: - gtp = "MULTIPOLYGON"; - dims = "XYZM"; - break; - case 3007: - gtp = "GEOMETRYCOLLECTION"; - dims = "XYZM"; - break; - }; - *srid = atoi (results[(i * columns) + 1]); - } - else - { - /* legacy metadata style <= v.3.1.0 */ - gtp = results[(i * columns) + 0]; - dims = results[(i * columns) + 1]; - *srid = atoi (results[(i * columns) + 2]); - } - if (strcasecmp (gtp, "POINT") == 0 - || strcasecmp (gtp, "MULTIPOINT") == 0) - strcpy (type, "POINT"); - else if (strcasecmp (gtp, "LINESTRING") == 0 - || strcasecmp (gtp, "MULTILINESTRING") == 0) - strcpy (type, "LINESTRING"); - else if (strcasecmp (gtp, "POLYGON") == 0 - || strcasecmp (gtp, "MULTIPOLYGON") == 0) - strcpy (type, "POLYGON"); - else - strcpy (type, "GEOMETRY"); - strcpy (coordDims, dims); - ok = 1; - } - } - sqlite3_free_table (results); - if (!ok) - return 0; - -/* checking if PrimaryKey already exists */ - xtable = gaiaDoubleQuotedSql (inTable); - sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xtable); - free (xtable); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n", errMsg); - sqlite3_free (errMsg); - return 0; - } - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - if (strcasecmp (pKey, results[(i * columns) + 1]) == 0) - ok = 0; - } - } - sqlite3_free_table (results); - if (!ok) - return 0; - -/* checking if MultiID already exists */ - xtable = gaiaDoubleQuotedSql (inTable); - sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xtable); - free (xtable); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n", errMsg); - sqlite3_free (errMsg); - return 0; - } - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - if (strcasecmp (multiID, results[(i * columns) + 1]) == 0) - ok = 0; - } - } - sqlite3_free_table (results); - if (!ok) - return 0; - -/* cheching if Output Table already exists */ - sql = sqlite3_mprintf ("SELECT Count(*) FROM sqlite_master " - "WHERE type = 'table' AND Lower(tbl_name) = Lower(%Q)", - outTable); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n", errMsg); - sqlite3_free (errMsg); - return 0; - } - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - if (atoi (results[(i * columns) + 0]) != 0) - ok = 0; - } - } - sqlite3_free_table (results); - - return ok; -} - -static gaiaGeomCollPtr -elemGeomFromPoint (gaiaPointPtr pt, int srid) -{ -/* creating a Geometry containing a single Point */ - gaiaGeomCollPtr g = NULL; - switch (pt->DimensionModel) - { - case GAIA_XY_Z_M: - g = gaiaAllocGeomCollXYZM (); - break; - case GAIA_XY_Z: - g = gaiaAllocGeomCollXYZ (); - break; - case GAIA_XY_M: - g = gaiaAllocGeomCollXYM (); - break; - default: - g = gaiaAllocGeomColl (); - break; - }; - if (!g) - return NULL; - g->Srid = srid; - g->DeclaredType = GAIA_POINT; - switch (pt->DimensionModel) - { - case GAIA_XY_Z_M: - gaiaAddPointToGeomCollXYZM (g, pt->X, pt->Y, pt->Z, pt->M); - break; - case GAIA_XY_Z: - gaiaAddPointToGeomCollXYZ (g, pt->X, pt->Y, pt->Z); - break; - case GAIA_XY_M: - gaiaAddPointToGeomCollXYM (g, pt->X, pt->Y, pt->M); - break; - default: - gaiaAddPointToGeomColl (g, pt->X, pt->Y); - break; - }; - return g; -} - -static gaiaGeomCollPtr -elemGeomFromLinestring (gaiaLinestringPtr ln, int srid) -{ -/* creating a Geometry containing a single Linestring */ - gaiaGeomCollPtr g = NULL; - gaiaLinestringPtr ln2; - int iv; - double x; - double y; - double z; - double m; - switch (ln->DimensionModel) - { - case GAIA_XY_Z_M: - g = gaiaAllocGeomCollXYZM (); - break; - case GAIA_XY_Z: - g = gaiaAllocGeomCollXYZ (); - break; - case GAIA_XY_M: - g = gaiaAllocGeomCollXYM (); - break; - default: - g = gaiaAllocGeomColl (); - break; - }; - if (!g) - return NULL; - g->Srid = srid; - g->DeclaredType = GAIA_LINESTRING; - ln2 = gaiaAddLinestringToGeomColl (g, ln->Points); - switch (ln->DimensionModel) - { - case GAIA_XY_Z_M: - for (iv = 0; iv < ln->Points; iv++) - { - gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (ln2->Coords, iv, x, y, z, m); - } - break; - case GAIA_XY_Z: - for (iv = 0; iv < ln->Points; iv++) - { - gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (ln2->Coords, iv, x, y, z); - } - break; - case GAIA_XY_M: - for (iv = 0; iv < ln->Points; iv++) - { - gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (ln2->Coords, iv, x, y, m); - } - break; - default: - for (iv = 0; iv < ln->Points; iv++) - { - gaiaGetPoint (ln->Coords, iv, &x, &y); - gaiaSetPoint (ln2->Coords, iv, x, y); - } - break; - }; - return g; -} - -static gaiaGeomCollPtr -elemGeomFromPolygon (gaiaPolygonPtr pg, int srid) -{ -/* creating a Geometry containing a single Polygon */ - gaiaGeomCollPtr g = NULL; - gaiaPolygonPtr pg2; - gaiaRingPtr rng; - gaiaRingPtr rng2; - int ib; - int iv; - double x; - double y; - double z; - double m; - switch (pg->DimensionModel) - { - case GAIA_XY_Z_M: - g = gaiaAllocGeomCollXYZM (); - break; - case GAIA_XY_Z: - g = gaiaAllocGeomCollXYZ (); - break; - case GAIA_XY_M: - g = gaiaAllocGeomCollXYM (); - break; - default: - g = gaiaAllocGeomColl (); - break; - }; - if (!g) - return NULL; - g->Srid = srid; - g->DeclaredType = GAIA_POLYGON; - rng = pg->Exterior; - pg2 = gaiaAddPolygonToGeomColl (g, rng->Points, pg->NumInteriors); - rng2 = pg2->Exterior; - switch (pg->DimensionModel) - { - case GAIA_XY_Z_M: - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (rng2->Coords, iv, x, y, z, m); - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - rng = pg->Interiors + ib; - rng2 = gaiaAddInteriorRing (pg2, ib, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (rng2->Coords, iv, x, y, z, m); - } - } - break; - case GAIA_XY_Z: - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (rng2->Coords, iv, x, y, z); - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - rng = pg->Interiors + ib; - rng2 = gaiaAddInteriorRing (pg2, ib, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (rng2->Coords, iv, x, y, z); - } - } - break; - case GAIA_XY_M: - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (rng2->Coords, iv, x, y, m); - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - rng = pg->Interiors + ib; - rng2 = gaiaAddInteriorRing (pg2, ib, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (rng2->Coords, iv, x, y, m); - } - } - break; - default: - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - gaiaSetPoint (rng2->Coords, iv, x, y); - } - for (ib = 0; ib < pg->NumInteriors; ib++) - { - rng = pg->Interiors + ib; - rng2 = gaiaAddInteriorRing (pg2, ib, rng->Points); - for (iv = 0; iv < rng->Points; iv++) - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - gaiaSetPoint (rng2->Coords, iv, x, y); - } - } - break; - }; - return g; -} - -SPATIALITE_DECLARE void -elementary_geometries (sqlite3 * sqlite, - char *inTable, char *geometry, char *outTable, - char *pKey, char *multiId) -{ -/* attempting to create a derived table surely containing elemetary Geoms */ - char type[128]; - int srid; - char dims[64]; - char *sql; - char *xname; - char *xpk; - char *xmulti; - gaiaOutBuffer sql_statement; - gaiaOutBuffer sql2; - gaiaOutBuffer sql3; - gaiaOutBuffer sql4; - char *sql_geom; - int ret; - int comma = 0; - char *errMsg = NULL; - int i; - char **results; - int rows; - int columns; - int geom_idx = -1; - sqlite3_stmt *stmt_in = NULL; - sqlite3_stmt *stmt_out = NULL; - int n_columns; - sqlite3_int64 id = 0; - - if (check_elementary - (sqlite, inTable, geometry, outTable, pKey, multiId, type, &srid, - dims) == 0) - { - spatialite_e (".elemgeo: invalid args\n"); - return; - } - -/* starts a transaction */ - ret = sqlite3_exec (sqlite, "BEGIN", NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n", errMsg); - sqlite3_free (errMsg); - goto abort; - } - - gaiaOutBufferInitialize (&sql_statement); - gaiaOutBufferInitialize (&sql2); - gaiaOutBufferInitialize (&sql3); - gaiaOutBufferInitialize (&sql4); - - gaiaAppendToOutBuffer (&sql_statement, "SELECT "); - xname = gaiaDoubleQuotedSql (outTable); - xpk = gaiaDoubleQuotedSql (pKey); - xmulti = gaiaDoubleQuotedSql (multiId); - sql = - sqlite3_mprintf ("INSERT INTO \"%s\" (\"%s\", \"%s\", ", xname, xpk, - xmulti); - free (xname); - free (xpk); - free (xmulti); - gaiaAppendToOutBuffer (&sql2, sql); - sqlite3_free (sql); - gaiaAppendToOutBuffer (&sql3, ") VALUES (NULL, ?"); - xname = gaiaDoubleQuotedSql (outTable); - xpk = gaiaDoubleQuotedSql (pKey); - xmulti = gaiaDoubleQuotedSql (multiId); - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n" - "\t\"%s\" INTEGER PRIMARY KEY AUTOINCREMENT" - ",\n\t\"%s\" INTEGER NOT NULL", xname, xpk, xmulti); - free (xname); - free (xpk); - free (xmulti); - gaiaAppendToOutBuffer (&sql4, sql); - sqlite3_free (sql); - - xname = gaiaDoubleQuotedSql (inTable); - sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); - free (xname); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n", errMsg); - sqlite3_free (errMsg); - goto abort; - } - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - xname = gaiaDoubleQuotedSql (results[(i * columns) + 1]); - if (comma) - sql = sqlite3_mprintf (", \"%s\"", xname); - else - { - comma = 1; - sql = sqlite3_mprintf ("\"%s\"", xname); - } - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - gaiaAppendToOutBuffer (&sql2, sql); - gaiaAppendToOutBuffer (&sql3, ", ?"); - sqlite3_free (sql); - - if (strcasecmp (geometry, results[(i * columns) + 1]) == 0) - geom_idx = i - 1; - else - { - xname = gaiaDoubleQuotedSql (results[(i * columns) + 1]); - if (atoi (results[(i * columns) + 3]) != 0) - sql = - sqlite3_mprintf (",\n\t\"%s\" %s NOT NULL", xname, - results[(i * columns) + 2]); - else - sql = - sqlite3_mprintf (",\n\t\"%s\" %s", xname, - results[(i * columns) + 2]); - free (xname); - gaiaAppendToOutBuffer (&sql4, sql); - sqlite3_free (sql); - } - } - } - sqlite3_free_table (results); - if (geom_idx < 0) - goto abort; - - xname = gaiaDoubleQuotedSql (inTable); - sql = sqlite3_mprintf (" FROM \"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - gaiaAppendToOutBuffer (&sql2, sql3.Buffer); - gaiaAppendToOutBuffer (&sql2, ")"); - gaiaAppendToOutBuffer (&sql4, ")"); - gaiaOutBufferReset (&sql3); - - sql_geom = - sqlite3_mprintf ("SELECT AddGeometryColumn(%Q, %Q, %d, %Q, %Q)", - outTable, geometry, srid, type, dims); - -/* creating the output table */ - ret = sqlite3_exec (sqlite, sql4.Buffer, NULL, NULL, &errMsg); - gaiaOutBufferReset (&sql4); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n", errMsg); - sqlite3_free (errMsg); - goto abort; - } -/* creating the output Geometry */ - ret = sqlite3_exec (sqlite, sql_geom, NULL, NULL, &errMsg); - sqlite3_free (sql_geom); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n", errMsg); - sqlite3_free (errMsg); - goto abort; - } - -/* preparing the INPUT statement */ - ret = - sqlite3_prepare_v2 (sqlite, sql_statement.Buffer, - strlen (sql_statement.Buffer), &stmt_in, NULL); - gaiaOutBufferReset (&sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); - goto abort; - } - -/* preparing the OUTPUT statement */ - ret = - sqlite3_prepare_v2 (sqlite, sql2.Buffer, strlen (sql2.Buffer), - &stmt_out, NULL); - gaiaOutBufferReset (&sql2); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); - goto abort; - } - -/* data transfer */ - n_columns = sqlite3_column_count (stmt_in); - while (1) - { - ret = sqlite3_step (stmt_in); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - gaiaGeomCollPtr g = - gaiaFromSpatiaLiteBlobWkb ((const unsigned char *) - sqlite3_column_blob (stmt_in, - geom_idx), - sqlite3_column_bytes (stmt_in, - geom_idx)); - if (!g) - { - /* NULL input geometry */ - sqlite3_reset (stmt_out); - sqlite3_clear_bindings (stmt_out); - sqlite3_bind_int64 (stmt_out, 1, id); - sqlite3_bind_null (stmt_out, geom_idx + 2); - - for (i = 0; i < n_columns; i++) - { - int type = sqlite3_column_type (stmt_in, i); - if (i == geom_idx) - continue; - switch (type) - { - case SQLITE_INTEGER: - sqlite3_bind_int64 (stmt_out, i + 2, - sqlite3_column_int - (stmt_in, i)); - break; - case SQLITE_FLOAT: - sqlite3_bind_double (stmt_out, i + 2, - sqlite3_column_double - (stmt_in, i)); - break; - case SQLITE_TEXT: - sqlite3_bind_text (stmt_out, i + 2, - (const char *) - sqlite3_column_text - (stmt_in, i), - sqlite3_column_bytes - (stmt_in, i), - SQLITE_STATIC); - break; - case SQLITE_BLOB: - sqlite3_bind_blob (stmt_out, i + 2, - sqlite3_column_blob - (stmt_in, i), - sqlite3_column_bytes - (stmt_in, i), - SQLITE_STATIC); - break; - case SQLITE_NULL: - default: - sqlite3_bind_null (stmt_out, i + 2); - break; - }; - } - - ret = sqlite3_step (stmt_out); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("[OUT]step error: %s\n", - sqlite3_errmsg (sqlite)); - goto abort; - } - } - else - { - /* separating Elementary Geoms */ - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaGeomCollPtr outGeom; - pt = g->FirstPoint; - while (pt) - { - /* separating Points */ - outGeom = elemGeomFromPoint (pt, g->Srid); - sqlite3_reset (stmt_out); - sqlite3_clear_bindings (stmt_out); - sqlite3_bind_int64 (stmt_out, 1, id); - if (!outGeom) - sqlite3_bind_null (stmt_out, geom_idx + 2); - else - { - unsigned char *blob; - int size; - gaiaToSpatiaLiteBlobWkb (outGeom, &blob, - &size); - sqlite3_bind_blob (stmt_out, geom_idx + 2, - blob, size, free); - gaiaFreeGeomColl (outGeom); - } - - for (i = 0; i < n_columns; i++) - { - int type = sqlite3_column_type (stmt_in, i); - if (i == geom_idx) - continue; - switch (type) - { - case SQLITE_INTEGER: - sqlite3_bind_int64 (stmt_out, i + 2, - sqlite3_column_int - (stmt_in, i)); - break; - case SQLITE_FLOAT: - sqlite3_bind_double (stmt_out, i + 2, - sqlite3_column_double - (stmt_in, i)); - break; - case SQLITE_TEXT: - sqlite3_bind_text (stmt_out, i + 2, - (const char *) - sqlite3_column_text - (stmt_in, i), - sqlite3_column_bytes - (stmt_in, i), - SQLITE_STATIC); - break; - case SQLITE_BLOB: - sqlite3_bind_blob (stmt_out, i + 2, - sqlite3_column_blob - (stmt_in, i), - sqlite3_column_bytes - (stmt_in, i), - SQLITE_STATIC); - break; - case SQLITE_NULL: - default: - sqlite3_bind_null (stmt_out, i + 2); - break; - }; - } - - ret = sqlite3_step (stmt_out); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("[OUT]step error: %s\n", - sqlite3_errmsg (sqlite)); - goto abort; - } - pt = pt->Next; - } - ln = g->FirstLinestring; - while (ln) - { - /* separating Linestrings */ - outGeom = elemGeomFromLinestring (ln, g->Srid); - sqlite3_reset (stmt_out); - sqlite3_clear_bindings (stmt_out); - sqlite3_bind_int64 (stmt_out, 1, id); - if (!outGeom) - sqlite3_bind_null (stmt_out, geom_idx + 2); - else - { - unsigned char *blob; - int size; - gaiaToSpatiaLiteBlobWkb (outGeom, &blob, - &size); - sqlite3_bind_blob (stmt_out, geom_idx + 2, - blob, size, free); - gaiaFreeGeomColl (outGeom); - } - - for (i = 0; i < n_columns; i++) - { - int type = sqlite3_column_type (stmt_in, i); - if (i == geom_idx) - continue; - switch (type) - { - case SQLITE_INTEGER: - sqlite3_bind_int64 (stmt_out, i + 2, - sqlite3_column_int - (stmt_in, i)); - break; - case SQLITE_FLOAT: - sqlite3_bind_double (stmt_out, i + 2, - sqlite3_column_double - (stmt_in, i)); - break; - case SQLITE_TEXT: - sqlite3_bind_text (stmt_out, i + 2, - (const char *) - sqlite3_column_text - (stmt_in, i), - sqlite3_column_bytes - (stmt_in, i), - SQLITE_STATIC); - break; - case SQLITE_BLOB: - sqlite3_bind_blob (stmt_out, i + 2, - sqlite3_column_blob - (stmt_in, i), - sqlite3_column_bytes - (stmt_in, i), - SQLITE_STATIC); - break; - case SQLITE_NULL: - default: - sqlite3_bind_null (stmt_out, i + 2); - break; - }; - } - - ret = sqlite3_step (stmt_out); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("[OUT]step error: %s\n", - sqlite3_errmsg (sqlite)); - goto abort; - } - ln = ln->Next; - } - pg = g->FirstPolygon; - while (pg) - { - /* separating Polygons */ - outGeom = elemGeomFromPolygon (pg, g->Srid); - sqlite3_reset (stmt_out); - sqlite3_clear_bindings (stmt_out); - sqlite3_bind_int64 (stmt_out, 1, id); - if (!outGeom) - sqlite3_bind_null (stmt_out, geom_idx + 2); - else - { - unsigned char *blob; - int size; - gaiaToSpatiaLiteBlobWkb (outGeom, &blob, - &size); - sqlite3_bind_blob (stmt_out, geom_idx + 2, - blob, size, free); - gaiaFreeGeomColl (outGeom); - } - - for (i = 0; i < n_columns; i++) - { - int type = sqlite3_column_type (stmt_in, i); - if (i == geom_idx) - continue; - switch (type) - { - case SQLITE_INTEGER: - sqlite3_bind_int64 (stmt_out, i + 2, - sqlite3_column_int - (stmt_in, i)); - break; - case SQLITE_FLOAT: - sqlite3_bind_double (stmt_out, i + 2, - sqlite3_column_double - (stmt_in, i)); - break; - case SQLITE_TEXT: - sqlite3_bind_text (stmt_out, i + 2, - (const char *) - sqlite3_column_text - (stmt_in, i), - sqlite3_column_bytes - (stmt_in, i), - SQLITE_STATIC); - break; - case SQLITE_BLOB: - sqlite3_bind_blob (stmt_out, i + 2, - sqlite3_column_blob - (stmt_in, i), - sqlite3_column_bytes - (stmt_in, i), - SQLITE_STATIC); - break; - case SQLITE_NULL: - default: - sqlite3_bind_null (stmt_out, i + 2); - break; - }; - } - - ret = sqlite3_step (stmt_out); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("[OUT]step error: %s\n", - sqlite3_errmsg (sqlite)); - goto abort; - } - pg = pg->Next; - } - gaiaFreeGeomColl (g); - } - id++; - } - else - { - spatialite_e ("[IN]step error: %s\n", sqlite3_errmsg (sqlite)); - goto abort; - } - } - sqlite3_finalize (stmt_in); - sqlite3_finalize (stmt_out); - -/* commits the transaction */ - ret = sqlite3_exec (sqlite, "COMMIT", NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n", errMsg); - sqlite3_free (errMsg); - goto abort; - } - return; - - abort: - if (stmt_in) - sqlite3_finalize (stmt_in); - if (stmt_out) - sqlite3_finalize (stmt_out); -} - -#ifndef OMIT_FREEXL /* including FreeXL */ - -SPATIALITE_DECLARE int -load_XL (sqlite3 * sqlite, const char *path, const char *table, - unsigned int worksheetIndex, int first_titles, unsigned int *rows, - char *err_msg) -{ -/* loading an XL spreadsheet as a new DB table */ - sqlite3_stmt *stmt; - unsigned int current_row; - int ret; - char *errMsg = NULL; - char *xname; - char *dummy; - char *xdummy; - char *sql; - int sqlError = 0; - const void *xl_handle; - unsigned int info; - unsigned short columns; - unsigned short col; - gaiaOutBuffer sql_statement; - FreeXL_CellValue cell; - int already_exists = 0; -/* checking if TABLE already exists */ - sql = - sqlite3_mprintf ("SELECT name FROM sqlite_master WHERE type = 'table' " - "AND Lower(name) = Lower(%Q)", table); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - if (!err_msg) - spatialite_e ("load XL error: <%s>\n", sqlite3_errmsg (sqlite)); - else - sprintf (err_msg, "load XL error: <%s>\n", - sqlite3_errmsg (sqlite)); - return 0; - } - while (1) - { - /* scrolling the result set */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - already_exists = 1; - else - { - spatialite_e ("load XL error: <%s>\n", sqlite3_errmsg (sqlite)); - break; - } - } - sqlite3_finalize (stmt); - if (already_exists) - { - if (!err_msg) - spatialite_e ("load XL error: table '%s' already exists\n", - table); - else - sprintf (err_msg, "load XL error: table '%s' already exists\n", - table); - return 0; - } -/* opening the .XLS file [Workbook] */ - ret = freexl_open (path, &xl_handle); - if (ret != FREEXL_OK) - goto error; -/* checking if Password protected */ - ret = freexl_get_info (xl_handle, FREEXL_BIFF_PASSWORD, &info); - if (ret != FREEXL_OK) - goto error; - if (info != FREEXL_BIFF_PLAIN) - goto error; -/* Worksheet entries */ - ret = freexl_get_info (xl_handle, FREEXL_BIFF_SHEET_COUNT, &info); - if (ret != FREEXL_OK) - goto error; - if (info == 0) - goto error; - if (worksheetIndex < info) - ; - else - goto error; - ret = freexl_select_active_worksheet (xl_handle, worksheetIndex); - if (ret != FREEXL_OK) - goto error; - ret = freexl_worksheet_dimensions (xl_handle, rows, &columns); - if (ret != FREEXL_OK) - goto error; -/* starting a transaction */ - ret = sqlite3_exec (sqlite, "BEGIN", NULL, 0, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("load XL error: %s\n", errMsg); - sqlite3_free (errMsg); - sqlError = 1; - goto clean_up; - } -/* creating the Table */ - gaiaOutBufferInitialize (&sql_statement); - xname = gaiaDoubleQuotedSql (table); - sql = sqlite3_mprintf ("CREATE TABLE \"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - gaiaAppendToOutBuffer (&sql_statement, - " (\nPK_UID INTEGER PRIMARY KEY AUTOINCREMENT"); - for (col = 0; col < columns; col++) - { - if (first_titles) - { - /* fetching column names */ - for (col = 0; col < columns; col++) - { - ret = freexl_get_cell_value (xl_handle, 0, col, &cell); - if (ret != FREEXL_OK) - dummy = sqlite3_mprintf ("col_%d", col); - else - { - if (cell.type == FREEXL_CELL_INT) - dummy = - sqlite3_mprintf ("%d", - cell.value.int_value); - else if (cell.type == FREEXL_CELL_DOUBLE) - dummy = sqlite3_mprintf ("%1.2f ", - cell. - value.double_value); - else if (cell.type == FREEXL_CELL_TEXT - || cell.type == FREEXL_CELL_SST_TEXT - || cell.type == FREEXL_CELL_DATE - || cell.type == FREEXL_CELL_DATETIME - || cell.type == FREEXL_CELL_TIME) - { - int len = strlen (cell.value.text_value); - if (len < 256) - dummy = - sqlite3_mprintf ("%s", - cell. - value.text_value); - else - dummy = sqlite3_mprintf ("col_%d", col); - } - else - dummy = sqlite3_mprintf ("col_%d", col); - } - xdummy = gaiaDoubleQuotedSql (dummy); - sqlite3_free (dummy); - sql = sqlite3_mprintf (", \"%s\"", xdummy); - free (xdummy); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - } - } - else - { - /* setting default column names */ - for (col = 0; col < columns; col++) - { - dummy = sqlite3_mprintf ("col_%d", col); - xdummy = gaiaDoubleQuotedSql (dummy); - sqlite3_free (dummy); - sql = sqlite3_mprintf (", \"%s\"", xdummy); - free (xdummy); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - } - } - } - gaiaAppendToOutBuffer (&sql_statement, ")"); - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - { - ret = sqlite3_exec (sqlite, sql_statement.Buffer, NULL, 0, &errMsg); - gaiaOutBufferReset (&sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("load XL error: %s\n", errMsg); - sqlite3_free (errMsg); - sqlError = 1; - goto clean_up; - } - } -/* preparing the INSERT INTO parameterized statement */ - gaiaOutBufferReset (&sql_statement); - xname = gaiaDoubleQuotedSql (table); - sql = sqlite3_mprintf ("INSERT INTO \"%s\" (PK_UID", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - for (col = 0; col < columns; col++) - { - if (first_titles) - { - ret = freexl_get_cell_value (xl_handle, 0, col, &cell); - if (ret != FREEXL_OK) - dummy = sqlite3_mprintf ("col_%d", col); - else - { - if (cell.type == FREEXL_CELL_INT) - dummy = sqlite3_mprintf ("%d", cell.value.int_value); - else if (cell.type == FREEXL_CELL_DOUBLE) - dummy = - sqlite3_mprintf ("%1.2f", - cell.value.double_value); - else if (cell.type == FREEXL_CELL_TEXT - || cell.type == FREEXL_CELL_SST_TEXT - || cell.type == FREEXL_CELL_DATE - || cell.type == FREEXL_CELL_DATETIME - || cell.type == FREEXL_CELL_TIME) - { - int len = strlen (cell.value.text_value); - if (len < 256) - dummy = - sqlite3_mprintf ("%s", - cell.value.text_value); - else - dummy = sqlite3_mprintf ("col_%d", col); - } - else - dummy = sqlite3_mprintf ("col_%d", col); - } - xdummy = gaiaDoubleQuotedSql (dummy); - sqlite3_free (dummy); - sql = sqlite3_mprintf (", \"%s\"", xdummy); - free (xdummy); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - } - else - { - /* setting default column names */ - dummy = sqlite3_mprintf ("col_%d", col); - xdummy = gaiaDoubleQuotedSql (dummy); - sqlite3_free (dummy); - sql = sqlite3_mprintf (", \"%s\"", xdummy); - free (xdummy); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - } - } - gaiaAppendToOutBuffer (&sql_statement, ")\nVALUES (NULL"); - for (col = 0; col < columns; col++) - { - /* column values */ - gaiaAppendToOutBuffer (&sql_statement, ", ?"); - } - gaiaAppendToOutBuffer (&sql_statement, ")"); - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - { - ret = - sqlite3_prepare_v2 (sqlite, sql_statement.Buffer, - strlen (sql_statement.Buffer), &stmt, NULL); - gaiaOutBufferReset (&sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("load XL error: %s\n", sqlite3_errmsg (sqlite)); - sqlError = 1; - goto clean_up; - } - } - if (first_titles) - current_row = 1; - else - current_row = 0; - while (current_row < *rows) - { - /* binding query params */ - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - for (col = 0; col < columns; col++) - { - /* column values */ - ret = - freexl_get_cell_value (xl_handle, current_row, col, &cell); - if (ret != FREEXL_OK) - sqlite3_bind_null (stmt, col + 1); - else - { - switch (cell.type) - { - case FREEXL_CELL_INT: - sqlite3_bind_int (stmt, col + 1, - cell.value.int_value); - break; - case FREEXL_CELL_DOUBLE: - sqlite3_bind_double (stmt, col + 1, - cell.value.double_value); - break; - case FREEXL_CELL_TEXT: - case FREEXL_CELL_SST_TEXT: - case FREEXL_CELL_DATE: - case FREEXL_CELL_DATETIME: - case FREEXL_CELL_TIME: - sqlite3_bind_text (stmt, col + 1, - cell.value.text_value, - strlen (cell.value.text_value), - SQLITE_STATIC); - break; - default: - sqlite3_bind_null (stmt, col + 1); - break; - }; - } - } - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("load XL error: %s\n", sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - sqlError = 1; - goto clean_up; - } - current_row++; - } - sqlite3_finalize (stmt); - clean_up: - if (sqlError) - { - /* some error occurred - ROLLBACK */ - ret = sqlite3_exec (sqlite, "ROLLBACK", NULL, 0, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("load XL error: %s\n", errMsg); - sqlite3_free (errMsg); - } - spatialite_e - ("XL not loaded\n\n\na ROLLBACK was automatically performed\n"); - } - else - { - /* ok - confirming pending transaction - COMMIT */ - ret = sqlite3_exec (sqlite, "COMMIT", NULL, 0, &errMsg); - if (ret != SQLITE_OK) - { - if (!err_msg) - spatialite_e ("load XL error: %s\n", errMsg); - else - sprintf (err_msg, "load XL error: %s\n", errMsg); - sqlite3_free (errMsg); - return 0; - } - if (first_titles) - *rows = *rows - 1; /* allow for header row */ - spatialite_e ("XL loaded\n\n%d inserted rows\n", *rows); - } - freexl_close (xl_handle); - return 1; - - error: - freexl_close (xl_handle); - if (!err_msg) - spatialite_e ("XL datasource '%s' is not valid\n", path); - else - sprintf (err_msg, "XL datasource '%s' is not valid\n", path); - return 0; -} - -#endif /* FreeXL enabled/disabled */ - -SPATIALITE_DECLARE int -dump_geojson (sqlite3 * sqlite, char *table, char *geom_col, char *outfile_path, - int precision, int option) -{ -/* dumping a geometry table as GeoJSON - Brad Hards 2011-11-09 */ - char *sql; - char *xgeom_col; - char *xtable; - sqlite3_stmt *stmt = NULL; - FILE *out = NULL; - int ret; - int rows = 0; - -/* opening/creating the GeoJSON output file */ - out = fopen (outfile_path, "wb"); - if (!out) - goto no_file; - -/* preparing SQL statement */ - xtable = gaiaDoubleQuotedSql (table); - xgeom_col = gaiaDoubleQuotedSql (geom_col); - sql = - sqlite3_mprintf - ("SELECT AsGeoJSON(\"%s\", %d, %d) FROM \"%s\" WHERE \"%s\" IS NOT NULL", - xgeom_col, precision, option, xtable, xgeom_col); - free (xtable); - free (xgeom_col); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - goto sql_error; - - while (1) - { - /* scrolling the result set */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - { - break; /* end of result set */ - } - if (ret == SQLITE_ROW) - { - rows++; - fprintf (out, "%s\r\n", sqlite3_column_text (stmt, 0)); - } - else - { - goto sql_error; - } - } - if (rows == 0) - { - goto empty_result_set; - } - - sqlite3_finalize (stmt); - fclose (out); - return 1; - - sql_error: -/* an SQL error occurred */ - if (stmt) - { - sqlite3_finalize (stmt); - } - if (out) - { - fclose (out); - } - spatialite_e ("Dump GeoJSON error: %s\n", sqlite3_errmsg (sqlite)); - return 0; - - no_file: -/* Output file could not be created / opened */ - if (stmt) - { - sqlite3_finalize (stmt); - } - if (out) - { - fclose (out); - } - spatialite_e ("ERROR: unable to open '%s' for writing\n", outfile_path); - return 0; - - empty_result_set: -/* the result set is empty - nothing to do */ - if (stmt) - { - sqlite3_finalize (stmt); - } - if (out) - { - fclose (out); - } - spatialite_e ("The SQL SELECT returned no data to export...\n"); - return 0; -} diff --git a/src/spatialite/src/spatialite/Makefile.am b/src/spatialite/src/spatialite/Makefile.am deleted file mode 100644 index 48c80d7..0000000 --- a/src/spatialite/src/spatialite/Makefile.am +++ /dev/null @@ -1,20 +0,0 @@ - -INCLUDES = @CFLAGS@ @GEOS_CFLAGS@ -INCLUDES += -I$(top_srcdir)/src/headers - -noinst_LTLIBRARIES = libsplite.la - -libsplite_la_SOURCES = mbrcache.c \ - spatialite.c \ - metatables.c \ - statistics.c \ - virtualdbf.c \ - virtualXL.c \ - virtualfdo.c \ - virtualspatialindex.c \ - virtualnetwork.c \ - virtualshape.c - -libsplite_la_CFLAGS = -fvisibility=hidden - -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda diff --git a/src/spatialite/src/spatialite/Makefile.in b/src/spatialite/src/spatialite/Makefile.in deleted file mode 100644 index 694bb06..0000000 --- a/src/spatialite/src/spatialite/Makefile.in +++ /dev/null @@ -1,606 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/spatialite -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libsplite_la_LIBADD = -am_libsplite_la_OBJECTS = libsplite_la-mbrcache.lo \ - libsplite_la-spatialite.lo libsplite_la-metatables.lo \ - libsplite_la-statistics.lo libsplite_la-virtualdbf.lo \ - libsplite_la-virtualXL.lo libsplite_la-virtualfdo.lo \ - libsplite_la-virtualspatialindex.lo \ - libsplite_la-virtualnetwork.lo libsplite_la-virtualshape.lo -libsplite_la_OBJECTS = $(am_libsplite_la_OBJECTS) -libsplite_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libsplite_la_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libsplite_la_SOURCES) -DIST_SOURCES = $(libsplite_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = @CFLAGS@ @GEOS_CFLAGS@ -I$(top_srcdir)/src/headers -noinst_LTLIBRARIES = libsplite.la -libsplite_la_SOURCES = mbrcache.c \ - spatialite.c \ - metatables.c \ - statistics.c \ - virtualdbf.c \ - virtualXL.c \ - virtualfdo.c \ - virtualspatialindex.c \ - virtualnetwork.c \ - virtualshape.c - -libsplite_la_CFLAGS = -fvisibility=hidden -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/spatialite/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/spatialite/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libsplite.la: $(libsplite_la_OBJECTS) $(libsplite_la_DEPENDENCIES) $(EXTRA_libsplite_la_DEPENDENCIES) - $(libsplite_la_LINK) $(libsplite_la_OBJECTS) $(libsplite_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-mbrcache.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-metatables.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-spatialite.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-statistics.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-virtualXL.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-virtualdbf.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-virtualfdo.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-virtualnetwork.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-virtualshape.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-virtualspatialindex.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -libsplite_la-mbrcache.lo: mbrcache.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-mbrcache.lo -MD -MP -MF $(DEPDIR)/libsplite_la-mbrcache.Tpo -c -o libsplite_la-mbrcache.lo `test -f 'mbrcache.c' || echo '$(srcdir)/'`mbrcache.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsplite_la-mbrcache.Tpo $(DEPDIR)/libsplite_la-mbrcache.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='mbrcache.c' object='libsplite_la-mbrcache.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-mbrcache.lo `test -f 'mbrcache.c' || echo '$(srcdir)/'`mbrcache.c - -libsplite_la-spatialite.lo: spatialite.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-spatialite.lo -MD -MP -MF $(DEPDIR)/libsplite_la-spatialite.Tpo -c -o libsplite_la-spatialite.lo `test -f 'spatialite.c' || echo '$(srcdir)/'`spatialite.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsplite_la-spatialite.Tpo $(DEPDIR)/libsplite_la-spatialite.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='spatialite.c' object='libsplite_la-spatialite.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-spatialite.lo `test -f 'spatialite.c' || echo '$(srcdir)/'`spatialite.c - -libsplite_la-metatables.lo: metatables.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-metatables.lo -MD -MP -MF $(DEPDIR)/libsplite_la-metatables.Tpo -c -o libsplite_la-metatables.lo `test -f 'metatables.c' || echo '$(srcdir)/'`metatables.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsplite_la-metatables.Tpo $(DEPDIR)/libsplite_la-metatables.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='metatables.c' object='libsplite_la-metatables.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-metatables.lo `test -f 'metatables.c' || echo '$(srcdir)/'`metatables.c - -libsplite_la-statistics.lo: statistics.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-statistics.lo -MD -MP -MF $(DEPDIR)/libsplite_la-statistics.Tpo -c -o libsplite_la-statistics.lo `test -f 'statistics.c' || echo '$(srcdir)/'`statistics.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsplite_la-statistics.Tpo $(DEPDIR)/libsplite_la-statistics.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='statistics.c' object='libsplite_la-statistics.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-statistics.lo `test -f 'statistics.c' || echo '$(srcdir)/'`statistics.c - -libsplite_la-virtualdbf.lo: virtualdbf.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-virtualdbf.lo -MD -MP -MF $(DEPDIR)/libsplite_la-virtualdbf.Tpo -c -o libsplite_la-virtualdbf.lo `test -f 'virtualdbf.c' || echo '$(srcdir)/'`virtualdbf.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsplite_la-virtualdbf.Tpo $(DEPDIR)/libsplite_la-virtualdbf.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='virtualdbf.c' object='libsplite_la-virtualdbf.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-virtualdbf.lo `test -f 'virtualdbf.c' || echo '$(srcdir)/'`virtualdbf.c - -libsplite_la-virtualXL.lo: virtualXL.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-virtualXL.lo -MD -MP -MF $(DEPDIR)/libsplite_la-virtualXL.Tpo -c -o libsplite_la-virtualXL.lo `test -f 'virtualXL.c' || echo '$(srcdir)/'`virtualXL.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsplite_la-virtualXL.Tpo $(DEPDIR)/libsplite_la-virtualXL.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='virtualXL.c' object='libsplite_la-virtualXL.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-virtualXL.lo `test -f 'virtualXL.c' || echo '$(srcdir)/'`virtualXL.c - -libsplite_la-virtualfdo.lo: virtualfdo.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-virtualfdo.lo -MD -MP -MF $(DEPDIR)/libsplite_la-virtualfdo.Tpo -c -o libsplite_la-virtualfdo.lo `test -f 'virtualfdo.c' || echo '$(srcdir)/'`virtualfdo.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsplite_la-virtualfdo.Tpo $(DEPDIR)/libsplite_la-virtualfdo.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='virtualfdo.c' object='libsplite_la-virtualfdo.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-virtualfdo.lo `test -f 'virtualfdo.c' || echo '$(srcdir)/'`virtualfdo.c - -libsplite_la-virtualspatialindex.lo: virtualspatialindex.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-virtualspatialindex.lo -MD -MP -MF $(DEPDIR)/libsplite_la-virtualspatialindex.Tpo -c -o libsplite_la-virtualspatialindex.lo `test -f 'virtualspatialindex.c' || echo '$(srcdir)/'`virtualspatialindex.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsplite_la-virtualspatialindex.Tpo $(DEPDIR)/libsplite_la-virtualspatialindex.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='virtualspatialindex.c' object='libsplite_la-virtualspatialindex.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-virtualspatialindex.lo `test -f 'virtualspatialindex.c' || echo '$(srcdir)/'`virtualspatialindex.c - -libsplite_la-virtualnetwork.lo: virtualnetwork.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-virtualnetwork.lo -MD -MP -MF $(DEPDIR)/libsplite_la-virtualnetwork.Tpo -c -o libsplite_la-virtualnetwork.lo `test -f 'virtualnetwork.c' || echo '$(srcdir)/'`virtualnetwork.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsplite_la-virtualnetwork.Tpo $(DEPDIR)/libsplite_la-virtualnetwork.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='virtualnetwork.c' object='libsplite_la-virtualnetwork.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-virtualnetwork.lo `test -f 'virtualnetwork.c' || echo '$(srcdir)/'`virtualnetwork.c - -libsplite_la-virtualshape.lo: virtualshape.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-virtualshape.lo -MD -MP -MF $(DEPDIR)/libsplite_la-virtualshape.Tpo -c -o libsplite_la-virtualshape.lo `test -f 'virtualshape.c' || echo '$(srcdir)/'`virtualshape.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsplite_la-virtualshape.Tpo $(DEPDIR)/libsplite_la-virtualshape.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='virtualshape.c' object='libsplite_la-virtualshape.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-virtualshape.lo `test -f 'virtualshape.c' || echo '$(srcdir)/'`virtualshape.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/src/spatialite/mbrcache.c b/src/spatialite/src/spatialite/mbrcache.c deleted file mode 100644 index 2b77d64..0000000 --- a/src/spatialite/src/spatialite/mbrcache.c +++ /dev/null @@ -1,1531 +0,0 @@ -/* - - mbrcache.c -- SQLite3 extension [MBR CACHE VIRTUAL TABLE] - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include -#include - -#include -#include -#include - -#ifdef _WIN32 -#define strcasecmp _stricmp -#endif /* not WIN32 */ - -#if defined(_WIN32) && !defined(__MINGW32__) -#define LONG64_MAX _I64_MAX -#define LONG64_MIN _I64_MIN -#else -#define LONG64_MAX 9223372036854775807LL -#define LONG64_MIN (-LONG64_MAX + 1) -#endif - -static struct sqlite3_module my_mbr_module; - -/* - -memory structs used to store the MBR's cache - -the basic idea is to implement a hierarchy in order to avoid -excessive memory fragmentation and achieve better performance - -- the cache is a linked-list of cache page elements - - each cache page contains an array of 32 cache blocks - - each cache block contains an array of 32 cache cells -so a single cache page con store up to 1024 cache cells - -*/ - -struct mbr_cache_cell -{ -/* -a cached entity -*/ - -/* the entity's ROWID */ - sqlite3_int64 rowid; -/* the MBR */ - double minx; - double miny; - double maxx; - double maxy; -}; - -struct mbr_cache_block -{ -/* -a block of 32 cached entities -*/ - -/* -allocation bitmap: the meaning of each bit is: -1 - corresponding cache cell is in use -0 - corresponding cache cell is unused -*/ - unsigned int bitmap; -/* -the MBR corresponding to this cache block -i.e. the combined MBR for any contained cell -*/ - double minx; - double miny; - double maxx; - double maxy; -/* the cache cells array */ - struct mbr_cache_cell cells[32]; -}; - -struct mbr_cache_page -{ -/* -a page containing 32 cached blocks -*/ - -/* -allocation bitmap: the meaning of each bit is: -1 - corresponding cache block is in full -0 - corresponding cache block is not full -*/ - unsigned int bitmap; -/* -the MBR corresponding to this cache page -i.e. the combined MBR for any contained block -*/ - double minx; - double miny; - double maxx; - double maxy; -/* the cache blocks array */ - struct mbr_cache_block blocks[32]; -/* the min-max rowid for this page */ - sqlite3_int64 min_rowid; - sqlite3_int64 max_rowid; -/* pointer to next element into the cached pages linked list */ - struct mbr_cache_page *next; -}; - -struct mbr_cache -{ -/* -the MBR's cache -implemented as a cache pages linked list -*/ - -/* pointers used to handle the cache pages linked list */ - struct mbr_cache_page *first; - struct mbr_cache_page *last; -/* - pointer used to identify the current cache page when inserting a new cache cell - */ - struct mbr_cache_page *current; -}; - -typedef struct MbrCacheStruct -{ -/* extends the sqlite3_vtab struct */ - const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ - int nRef; /* # references: USED INTERNALLY BY SQLITE */ - char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ - sqlite3 *db; /* the sqlite db holding the virtual table */ - struct mbr_cache *cache; /* the MBR's cache */ - char *table_name; /* the main table to be cached */ - char *column_name; /* the column to be cached */ - int error; /* some previous error disables any operation */ -} MbrCache; -typedef MbrCache *MbrCachePtr; - -typedef struct MbrCacheCursortStruct -{ -/* extends the sqlite3_vtab_cursor struct */ - MbrCachePtr pVtab; /* Virtual table of this cursor */ - int eof; /* the EOF marker */ -/* -positioning parameters while performing a cache search -*/ - struct mbr_cache_page *current_page; - int current_block_index; - int current_cell_index; - struct mbr_cache_cell *current_cell; -/* -the strategy to use: - 0 = sequential scan - 1 = find rowid - 2 = spatial search -*/ - int strategy; -/* the MBR to search for */ - double minx; - double miny; - double maxx; - double maxy; -/* -the MBR search mode: - 0 = WITHIN - 1 = CONTAIN -*/ - int mbr_mode; -} MbrCacheCursor; -typedef MbrCacheCursor *MbrCacheCursorPtr; - -static unsigned int -cache_bitmask (int x) -{ -/* return the bitmask corresponding to index X */ - switch (x) - { - case 0: - return 0x80000000; - case 1: - return 0x40000000; - case 2: - return 0x20000000; - case 3: - return 0x10000000; - case 4: - return 0x08000000; - case 5: - return 0x04000000; - case 6: - return 0x02000000; - case 7: - return 0x01000000; - case 8: - return 0x00800000; - case 9: - return 0x00400000; - case 10: - return 0x00200000; - case 11: - return 0x00100000; - case 12: - return 0x00080000; - case 13: - return 0x00040000; - case 14: - return 0x00020000; - case 15: - return 0x00010000; - case 16: - return 0x00008000; - case 17: - return 0x00004000; - case 18: - return 0x00002000; - case 19: - return 0x00001000; - case 20: - return 0x00000800; - case 21: - return 0x00000400; - case 22: - return 0x00000200; - case 23: - return 0x00000100; - case 24: - return 0x00000080; - case 25: - return 0x00000040; - case 26: - return 0x00000020; - case 27: - return 0x00000010; - case 28: - return 0x00000008; - case 29: - return 0x00000004; - case 30: - return 0x00000002; - case 31: - return 0x00000001; - }; - return 0x00000000; -} - -static struct mbr_cache * -cache_alloc (void) -{ -/* allocates and initializes an empty cache struct */ - struct mbr_cache *p = malloc (sizeof (struct mbr_cache)); - p->first = NULL; - p->last = NULL; - p->current = NULL; - return p; -} - -static struct mbr_cache_page * -cache_page_alloc (void) -{ -/* allocates and initializes a cache page */ - int i; - struct mbr_cache_block *pb; - struct mbr_cache_page *p = malloc (sizeof (struct mbr_cache_page)); - p->bitmap = 0x00000000; - p->next = NULL; - p->minx = DBL_MAX; - p->miny = DBL_MAX; - p->maxx = -DBL_MAX; - p->maxy = -DBL_MAX; - for (i = 0; i < 32; i++) - { - pb = p->blocks + i; - pb->bitmap = 0x00000000; - pb->minx = DBL_MAX; - pb->miny = DBL_MAX; - pb->maxx = -DBL_MAX; - pb->maxy = DBL_MAX; - } - p->max_rowid = LONG64_MIN; - p->min_rowid = LONG64_MAX; - return p; -} - -static void -cache_destroy (struct mbr_cache *p) -{ -/* memory cleanup; destroying a cache and any page into the cache */ - struct mbr_cache_page *pp; - struct mbr_cache_page *ppn; - if (!p) - return; - pp = p->first; - while (pp) - { - ppn = pp->next; - free (pp); - pp = ppn; - } - free (p); -} - -static int -cache_get_free_block (struct mbr_cache_page *pp) -{ -/* scans a cache page, returning the index of the first available block containing a free cell */ - int ib; - for (ib = 0; ib < 32; ib++) - { - if ((pp->bitmap & cache_bitmask (ib)) == 0x00000000) - return ib; - } - return -1; -} - -static void -cache_fix_page_bitmap (struct mbr_cache_page *pp) -{ -/* updating the cache page bitmap */ - int ib; - for (ib = 0; ib < 32; ib++) - { - if (pp->blocks[ib].bitmap == 0xffffffff) - { - /* all the cells into this block are used; marking the page bitmap */ - pp->bitmap |= cache_bitmask (ib); - } - } -} - -static int -cache_get_free_cell (struct mbr_cache_block *pb) -{ -/* scans a cache block, returning the index of the first free cell */ - int ic; - for (ic = 0; ic < 32; ic++) - { - if ((pb->bitmap & cache_bitmask (ic)) == 0x00000000) - return ic; - } - return -1; -} - -static struct mbr_cache_page * -cache_get_free_page (struct mbr_cache *p) -{ -/* return a pointer to the first cache page containing a free cell */ - struct mbr_cache_page *pp; - if (!(p->first)) - { - /* the cache is empty; so we surely need to allocate the first page */ - pp = cache_page_alloc (); - p->first = pp; - p->last = pp; - p->current = pp; - return pp; - } - if (p->current) - { - /* checking if there is at least a free block into the current page */ - if (p->current->bitmap != 0xffffffff) - return p->current; - } - pp = p->first; - while (pp) - { - /* scanning the page list in order to discover if there is an existing page not yet completely filled */ - if (pp->bitmap != 0xffffffff) - { - p->current = pp; - return pp; - } - pp = pp->next; - } -/* we have to allocate a new page */ - pp = cache_page_alloc (); - p->last->next = pp; - p->last = pp; - p->current = pp; - return pp; -} - -static void -cache_insert_cell (struct mbr_cache *p, sqlite3_int64 rowid, double minx, - double miny, double maxx, double maxy) -{ -/* inserting a new cell */ - struct mbr_cache_page *pp = cache_get_free_page (p); - int ib = cache_get_free_block (pp); - struct mbr_cache_block *pb = pp->blocks + ib; - int ic = cache_get_free_cell (pb); - struct mbr_cache_cell *pc = pb->cells + ic; - pc->rowid = rowid; - pc->minx = minx; - pc->miny = miny; - pc->maxx = maxx; - pc->maxy = maxy; -/* marking the cache cell as used into the block bitmap */ - pb->bitmap |= cache_bitmask (ic); -/* updating the cache block MBR */ - if (pb->minx > minx) - pb->minx = minx; - if (pb->maxx < maxx) - pb->maxx = maxx; - if (pb->miny > miny) - pb->miny = miny; - if (pb->maxy < maxy) - pb->maxy = maxy; -/* updating the cache page MBR */ - if (pp->minx > minx) - pp->minx = minx; - if (pp->maxx < maxx) - pp->maxx = maxx; - if (pp->miny > miny) - pp->miny = miny; - if (pp->maxy < maxy) - pp->maxy = maxy; -/* fixing the cache page bitmap */ - cache_fix_page_bitmap (pp); -/* updating min-max rowid into the cache page */ - if (pp->min_rowid > rowid) - pp->min_rowid = rowid; - if (pp->max_rowid < rowid) - pp->max_rowid = rowid; -} - -static struct mbr_cache * -cache_load (sqlite3 * handle, const char *table, const char *column) -{ -/* -initial loading the MBR cache -retrieving any existing entity from the main table -*/ - sqlite3_stmt *stmt; - int ret; - char *sql_statement; - sqlite3_int64 rowid; - double minx; - double maxx; - double miny; - double maxy; - int v1; - int v2; - int v3; - int v4; - int v5; - struct mbr_cache *p_cache; - char *xcolumn; - char *xtable; - xcolumn = gaiaDoubleQuotedSql (column); - xtable = gaiaDoubleQuotedSql (table); - sql_statement = - sqlite3_mprintf ("SELECT ROWID, MbrMinX(\"%s\"), MbrMinY(\"%s\"), " - "MbrMaxX(\"%s\"), MbrMaxY(\"%s\") FROM \"%s\"", - xcolumn, xcolumn, xcolumn, xcolumn, xtable); - free (xcolumn); - free (xtable); - ret = - sqlite3_prepare_v2 (handle, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { -/* some error occurred */ - spatialite_e ("cache SQL error: %s\n", sqlite3_errmsg (handle)); - return NULL; - } - p_cache = cache_alloc (); - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - v1 = 0; - v2 = 0; - v3 = 0; - v4 = 0; - v5 = 0; - if (sqlite3_column_type (stmt, 0) == SQLITE_INTEGER) - v1 = 1; - if (sqlite3_column_type (stmt, 1) == SQLITE_FLOAT) - v2 = 1; - if (sqlite3_column_type (stmt, 1) == SQLITE_FLOAT) - v3 = 1; - if (sqlite3_column_type (stmt, 1) == SQLITE_FLOAT) - v4 = 1; - if (sqlite3_column_type (stmt, 1) == SQLITE_FLOAT) - v5 = 1; - if (v1 && v2 && v3 && v4 && v5) - { - /* ok, this entity is a valid one; inserting them into the MBR's cache */ - rowid = sqlite3_column_int (stmt, 0); - minx = sqlite3_column_double (stmt, 1); - miny = sqlite3_column_double (stmt, 2); - maxx = sqlite3_column_double (stmt, 3); - maxy = sqlite3_column_double (stmt, 4); - cache_insert_cell (p_cache, rowid, minx, miny, maxx, - maxy); - } - } - else - { -/* some unexpected error occurred */ - spatialite_e ("sqlite3_step() error: %s\n", - sqlite3_errmsg (handle)); - sqlite3_finalize (stmt); - cache_destroy (p_cache); - return NULL; - } - } -/* we have now to finalize the query [memory cleanup] */ - sqlite3_finalize (stmt); - return p_cache; -} - -static int -cache_find_next_cell (struct mbr_cache_page **page, int *i_block, int *i_cell, - struct mbr_cache_cell **cell) -{ -/* finding next cached cell */ - struct mbr_cache_page *pp = *page; - struct mbr_cache_block *pb; - struct mbr_cache_cell *pc; - int ib; - int ic; - int sib = *i_block; - int sic = *i_cell; - while (pp) - { - for (ib = sib; ib < 32; ib++) - { - pb = pp->blocks + ib; - for (ic = sic; ic < 32; ic++) - { - if ((pb->bitmap & cache_bitmask (ic)) == 0x00000000) - continue; - pc = pb->cells + ic; - if (pc == *cell) - { - /* this one is the current cell */ - continue; - } - /* next cell found */ - *page = pp; - *i_block = ib; - *i_cell = ic; - *cell = pc; - return 1; - } - sic = 0; - } - sib = 0; - pp = pp->next; - } - return 0; -} - -static int -cache_find_next_mbr (struct mbr_cache_page **page, int *i_block, int *i_cell, - struct mbr_cache_cell **cell, double minx, double miny, - double maxx, double maxy, int mode) -{ -/* finding next cached cell */ - struct mbr_cache_page *pp = *page; - struct mbr_cache_block *pb; - struct mbr_cache_cell *pc; - int ib; - int ic; - int sib = *i_block; - int sic = *i_cell; - int ok_mbr; - while (pp) - { - ok_mbr = 0; - if (pp->maxx >= minx && pp->minx <= maxx && pp->maxy >= miny - && pp->miny <= maxy) - ok_mbr = 1; - if (ok_mbr) - { - for (ib = sib; ib < 32; ib++) - { - pb = pp->blocks + ib; - ok_mbr = 0; - if (pb->maxx >= minx && pb->minx <= maxx - && pb->maxy >= miny && pb->miny <= maxy) - ok_mbr = 1; - if (ok_mbr) - { - for (ic = sic; ic < 32; ic++) - { - if ((pb->bitmap & cache_bitmask (ic)) == - 0x00000000) - continue; - pc = pb->cells + ic; - ok_mbr = 0; - if (mode == GAIA_FILTER_MBR_INTERSECTS) - { - /* MBR INTERSECTS */ - if (pc->maxx >= minx && pc->minx <= maxx - && pc->maxy >= miny - && pc->miny <= maxy) - ok_mbr = 1; - } - else if (mode == GAIA_FILTER_MBR_CONTAINS) - { - /* MBR CONTAINS */ - if (minx >= pc->minx && maxx <= pc->maxx - && miny >= pc->miny - && maxy <= pc->maxy) - ok_mbr = 1; - } - else - { - /* MBR WITHIN */ - if (pc->minx >= minx && pc->maxx <= maxx - && pc->miny >= miny - && pc->maxy <= maxy) - ok_mbr = 1; - } - if (ok_mbr) - { - if (pc == *cell) - { - /* this one is the current cell */ - continue; - } - /* next cell found */ - *page = pp; - *i_block = ib; - *i_cell = ic; - *cell = pc; - return 1; - } - } - } - sic = 0; - } - } - sib = 0; - pp = pp->next; - } - return 0; -} - -static struct mbr_cache_cell * -cache_find_by_rowid (struct mbr_cache_page *pp, sqlite3_int64 rowid) -{ -/* trying to find a row by rowid from the Mbr cache */ - struct mbr_cache_block *pb; - struct mbr_cache_cell *pc; - int ib; - int ic; - while (pp) - { - if (rowid >= pp->min_rowid && rowid <= pp->max_rowid) - { - for (ib = 0; ib < 32; ib++) - { - pb = pp->blocks + ib; - for (ic = 0; ic < 32; ic++) - { - if ((pb->bitmap & cache_bitmask (ic)) == 0x00000000) - continue; - pc = pb->cells + ic; - if (pc->rowid == rowid) - return pc; - } - } - } - pp = pp->next; - } - return 0; -} - -static void -cache_update_page (struct mbr_cache_page *pp, int i_block) -{ -/* updating the cache block and cache page MBR after a DELETE or UPDATE occurred */ - struct mbr_cache_block *pb; - struct mbr_cache_cell *pc; - int ib; - int ic; -/* updating the cache block MBR */ - pb = pp->blocks + i_block; - pb->minx = DBL_MAX; - pb->miny = DBL_MAX; - pb->maxx = -DBL_MAX; - pb->maxy = -DBL_MAX; - for (ic = 0; ic < 32; ic++) - { - if ((pb->bitmap & cache_bitmask (ic)) == 0x00000000) - continue; - pc = pb->cells + ic; - if (pb->minx > pc->minx) - pb->minx = pc->minx; - if (pb->miny > pc->miny) - pb->miny = pc->miny; - if (pb->maxx < pc->maxx) - pb->maxx = pc->maxx; - if (pb->maxy < pc->maxy) - pb->maxy = pc->maxy; - } -/* updating the cache page MBR */ - pp->minx = DBL_MAX; - pp->miny = DBL_MAX; - pp->maxx = -DBL_MAX; - pp->maxy = -DBL_MAX; - pp->min_rowid = LONG64_MAX; - pp->max_rowid = LONG64_MIN; - for (ib = 0; ib < 32; ib++) - { - pb = pp->blocks + ib; - for (ic = 0; ic < 32; ic++) - { - if ((pb->bitmap & cache_bitmask (ic)) == 0x00000000) - continue; - pc = pb->cells + ic; - if (pp->minx > pc->minx) - pp->minx = pc->minx; - if (pp->miny > pc->miny) - pp->miny = pc->miny; - if (pp->maxx < pc->maxx) - pp->maxx = pc->maxx; - if (pp->maxy < pc->maxy) - pp->maxy = pc->maxy; - if (pp->min_rowid > pc->rowid) - pp->min_rowid = pc->rowid; - if (pp->max_rowid < pc->rowid) - pp->max_rowid = pc->rowid; - } - } -} - -static int -cache_delete_cell (struct mbr_cache_page *pp, sqlite3_int64 rowid) -{ -/* trying to delete a row identified by rowid from the Mbr cache */ - struct mbr_cache_block *pb; - struct mbr_cache_cell *pc; - int ib; - int ic; - while (pp) - { - if (rowid >= pp->min_rowid && rowid <= pp->max_rowid) - { - for (ib = 0; ib < 32; ib++) - { - pb = pp->blocks + ib; - for (ic = 0; ic < 32; ic++) - { - if ((pb->bitmap & cache_bitmask (ic)) == 0x00000000) - continue; - pc = pb->cells + ic; - if (pc->rowid == rowid) - { - /* marking the cell as free */ - pb->bitmap &= ~(cache_bitmask (ic)); - /* marking the block as not full */ - pp->bitmap &= ~(cache_bitmask (ib)); - /* updating the cache block and cache page MBR */ - cache_update_page (pp, ib); - return 1; - } - } - } - } - pp = pp->next; - } - return 0; -} - -static int -cache_update_cell (struct mbr_cache_page *pp, sqlite3_int64 rowid, double minx, - double miny, double maxx, double maxy) -{ -/* trying to update a row identified by rowid from the Mbr cache */ - struct mbr_cache_block *pb; - struct mbr_cache_cell *pc; - int ib; - int ic; - while (pp) - { - if (rowid >= pp->min_rowid && rowid <= pp->max_rowid) - { - for (ib = 0; ib < 32; ib++) - { - pb = pp->blocks + ib; - for (ic = 0; ic < 32; ic++) - { - if ((pb->bitmap & cache_bitmask (ic)) == 0x00000000) - continue; - pc = pb->cells + ic; - if (pc->rowid == rowid) - { - /* updating the cell MBR */ - pc->minx = minx; - pc->miny = miny; - pc->maxx = maxx; - pc->maxy = maxy; - /* updating the cache block and cache page MBR */ - cache_update_page (pp, ib); - return 1; - } - } - } - } - pp = pp->next; - } - return 0; -} - -static int -mbrc_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* creates the virtual table and caches related Geometry column */ - int err; - int ret; - int i; - int len; - int n_rows; - int n_columns; - const char *vtable; - const char *table; - const char *column; - const char *col_name; - char *xvtable = NULL; - char *xtable = NULL; - char *xcolumn = NULL; - char **results; - char *err_msg = NULL; - char *sql_statement; - int ok_col; - MbrCachePtr p_vt; - char *xname; - if (pAux) - pAux = pAux; /* unused arg warning suppression */ - p_vt = (MbrCachePtr) sqlite3_malloc (sizeof (MbrCache)); - if (!p_vt) - return SQLITE_NOMEM; - *ppVTab = (sqlite3_vtab *) p_vt; - p_vt->pModule = &my_mbr_module; - p_vt->nRef = 0; - p_vt->zErrMsg = NULL; - p_vt->db = db; - p_vt->table_name = NULL; - p_vt->column_name = NULL; - p_vt->cache = NULL; -/* checking for table_name and geo_column_name */ - if (argc == 5) - { - vtable = argv[2]; - len = strlen (vtable); - if ((*(vtable + 0) == '\'' || *(vtable + 0) == '"') - && (*(vtable + len - 1) == '\'' || *(vtable + len - 1) == '"')) - { -/* the VirtualTableName is enclosed between quotes - we need to dequote it */ - xvtable = gaiaDequotedSql (vtable); - vtable = xvtable; - } - table = argv[3]; - len = strlen (table); - if ((*(table + 0) == '\'' || *(table + 0) == '"') - && (*(table + len - 1) == '\'' || *(table + len - 1) == '"')) - { -/* the MainTableName is enclosed between quotes - we need to dequote it */ - xtable = gaiaDequotedSql (table); - table = xtable; - } - column = argv[4]; - len = strlen (column); - if ((*(column + 0) == '\'' || *(column + 0) == '"') - && (*(column + len - 1) == '\'' || *(column + len - 1) == '"')) - { -/* the GeometryColumnName is enclosed between quotes - we need to dequote it */ - xcolumn = gaiaDequotedSql (column); - column = xcolumn; - } - len = strlen (table); - p_vt->table_name = sqlite3_malloc (len + 1); - strcpy (p_vt->table_name, table); - len = strlen (column); - p_vt->column_name = sqlite3_malloc (len + 1); - strcpy (p_vt->column_name, column); - if (xtable) - free (xtable); - if (xcolumn) - free (xcolumn); - } - else - { - *pzErr = - sqlite3_mprintf - ("[MbrCache module] CREATE VIRTUAL: illegal arg list {table_name, geo_column_name}"); - return SQLITE_ERROR; - } -/* retrieving the base table columns */ - err = 0; - ok_col = 0; - xname = gaiaDoubleQuotedSql (p_vt->table_name); - sql_statement = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); - free (xname); - ret = - sqlite3_get_table (db, sql_statement, &results, &n_rows, &n_columns, - &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - sqlite3_free (sql_statement); - err = 1; - goto illegal; - } - if (n_rows > 1) - { - for (i = 1; i <= n_rows; i++) - { - col_name = results[(i * n_columns) + 1]; - if (strcasecmp (col_name, p_vt->column_name) == 0) - ok_col = 1; - } - sqlite3_free_table (results); - if (!ok_col) - err = 1; - } - else - err = 1; - illegal: - if (err) - { - /* something is going the wrong way; creating a stupid default table */ - xname = gaiaDoubleQuotedSql (vtable); - sql_statement = - sqlite3_mprintf ("CREATE TABLE \"%s\" (rowid INTEGER, mbr BLOB)", - xname); - free (xname); - if (sqlite3_declare_vtab (db, sql_statement) != SQLITE_OK) - { - sqlite3_free (sql_statement); - *pzErr = - sqlite3_mprintf - ("[MbrCache module] cannot build the VirtualTable\n"); - return SQLITE_ERROR; - } - sqlite3_free (sql_statement); - p_vt->error = 1; - *ppVTab = (sqlite3_vtab *) p_vt; - return SQLITE_OK; - } - p_vt->error = 0; - xname = gaiaDoubleQuotedSql (vtable); - sql_statement = - sqlite3_mprintf ("CREATE TABLE \"%s\" (rowid INTEGER, mbr BLOB)", - xname); - free (xname); - if (sqlite3_declare_vtab (db, sql_statement) != SQLITE_OK) - { - *pzErr = - sqlite3_mprintf - ("[MbrCache module] CREATE VIRTUAL: invalid SQL statement \"%s\"", - sql_statement); - sqlite3_free (sql_statement); - return SQLITE_ERROR; - } - sqlite3_free (sql_statement); - *ppVTab = (sqlite3_vtab *) p_vt; - return SQLITE_OK; -} - -static int -mbrc_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* connects the virtual table - simply aliases mbrc_create() */ - return mbrc_create (db, pAux, argc, argv, ppVTab, pzErr); -} - -static int -mbrc_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIdxInfo) -{ -/* best index selection */ - int i; - int err = 1; - int errors = 0; - int mbr = 0; - int rowid = 0; - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - for (i = 0; i < pIdxInfo->nConstraint; i++) - { - /* verifying the constraints */ - struct sqlite3_index_constraint *p = &(pIdxInfo->aConstraint[i]); - if (p->usable) - { - if (p->iColumn == 0 && p->op == SQLITE_INDEX_CONSTRAINT_EQ) - rowid++; - else if (p->iColumn == 1 && p->op == SQLITE_INDEX_CONSTRAINT_EQ) - mbr++; - else - errors++; - } - } - if (mbr == 1 && rowid == 0 && errors == 0) - { - /* this one is a valid spatially-filtered query */ - pIdxInfo->idxNum = 2; - for (i = 0; i < pIdxInfo->nConstraint; i++) - { - pIdxInfo->aConstraintUsage[i].argvIndex = 1; - pIdxInfo->aConstraintUsage[i].omit = 1; - } - err = 0; - } - if (mbr == 0 && rowid == 1 && errors == 0) - { - /* this one is a valid rowid-filtered query */ - pIdxInfo->idxNum = 1; - pIdxInfo->estimatedCost = 1.0; - for (i = 0; i < pIdxInfo->nConstraint; i++) - { - if (pIdxInfo->aConstraint[i].usable) - { - pIdxInfo->aConstraintUsage[i].argvIndex = 1; - pIdxInfo->aConstraintUsage[i].omit = 1; - } - } - err = 0; - } - if (mbr == 0 && rowid == 0 && errors == 0) - { - /* this one is a valid unfiltered query */ - pIdxInfo->idxNum = 0; - err = 0; - } - if (err) - { - /* illegal query */ - pIdxInfo->idxNum = -1; - } - return SQLITE_OK; -} - -static int -mbrc_disconnect (sqlite3_vtab * pVTab) -{ -/* disconnects the virtual table */ - MbrCachePtr p_vt = (MbrCachePtr) pVTab; - if (p_vt->cache) - cache_destroy (p_vt->cache); - if (p_vt->table_name) - sqlite3_free (p_vt->table_name); - if (p_vt->column_name) - sqlite3_free (p_vt->column_name); - sqlite3_free (p_vt); - return SQLITE_OK; -} - -static int -mbrc_destroy (sqlite3_vtab * pVTab) -{ -/* destroys the virtual table - simply aliases mbrc_disconnect() */ - return mbrc_disconnect (pVTab); -} - -static void -mbrc_read_row_unfiltered (MbrCacheCursorPtr cursor) -{ -/* trying to read the next row from the Mbr cache - unfiltered mode */ - struct mbr_cache_page *page = cursor->current_page; - struct mbr_cache_cell *cell = cursor->current_cell; - int i_block = cursor->current_block_index; - int i_cell = cursor->current_cell_index; - if (cache_find_next_cell (&page, &i_block, &i_cell, &cell)) - { - cursor->current_page = page; - cursor->current_block_index = i_block; - cursor->current_cell_index = i_cell; - cursor->current_cell = cell; - } - else - cursor->eof = 1; -} - -static void -mbrc_read_row_filtered (MbrCacheCursorPtr cursor) -{ -/* trying to read the next row from the Mbr cache - spatially filter mode */ - struct mbr_cache_page *page = cursor->current_page; - struct mbr_cache_cell *cell = cursor->current_cell; - int i_block = cursor->current_block_index; - int i_cell = cursor->current_cell_index; - if (cache_find_next_mbr - (&page, &i_block, &i_cell, &cell, cursor->minx, cursor->miny, - cursor->maxx, cursor->maxy, cursor->mbr_mode)) - { - cursor->current_page = page; - cursor->current_block_index = i_block; - cursor->current_cell_index = i_cell; - cursor->current_cell = cell; - } - else - cursor->eof = 1; -} - -static void -mbrc_read_row_by_rowid (MbrCacheCursorPtr cursor, sqlite3_int64 rowid) -{ -/* trying to find a row by rowid from the Mbr cache */ - struct mbr_cache_cell *cell = - cache_find_by_rowid (cursor->pVtab->cache->first, rowid); - if (cell) - cursor->current_cell = cell; - else - { - cursor->current_cell = NULL; - cursor->eof = 1; - } -} - -static int -mbrc_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) -{ -/* opening a new cursor */ - MbrCachePtr p_vt = (MbrCachePtr) pVTab; - MbrCacheCursorPtr cursor = - (MbrCacheCursorPtr) sqlite3_malloc (sizeof (MbrCacheCursor)); - if (cursor == NULL) - return SQLITE_ERROR; - cursor->pVtab = p_vt; - if (p_vt->error) - { - cursor->eof = 1; - *ppCursor = (sqlite3_vtab_cursor *) cursor; - return SQLITE_OK; - } - if (!(p_vt->cache)) - p_vt->cache = - cache_load (p_vt->db, p_vt->table_name, p_vt->column_name); - cursor->current_page = cursor->pVtab->cache->first; - cursor->current_block_index = 0; - cursor->current_cell_index = 0; - cursor->current_cell = NULL; - cursor->eof = 0; - *ppCursor = (sqlite3_vtab_cursor *) cursor; - return SQLITE_OK; -} - -static int -mbrc_close (sqlite3_vtab_cursor * pCursor) -{ -/* closing the cursor */ - sqlite3_free (pCursor); - return SQLITE_OK; -} - -static int -mbrc_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, - int argc, sqlite3_value ** argv) -{ -/* setting up a cursor filter */ - MbrCacheCursorPtr cursor = (MbrCacheCursorPtr) pCursor; - if (idxStr || argc) - idxStr = idxStr; /* unused arg warning suppression */ - if (cursor->pVtab->error) - { - cursor->eof = 1; - return SQLITE_OK; - } - cursor->current_page = cursor->pVtab->cache->first; - cursor->current_block_index = 0; - cursor->current_cell_index = 0; - cursor->current_cell = NULL; - cursor->eof = 0; - cursor->strategy = idxNum; - if (idxNum == 0) - { - /* unfiltered mode */ - mbrc_read_row_unfiltered (cursor); - return SQLITE_OK; - } - if (idxNum == 1) - { - /* filtering by ROWID */ - sqlite3_int64 rowid = sqlite3_value_int64 (argv[0]); - mbrc_read_row_by_rowid (cursor, rowid); - return SQLITE_OK; - } - if (idxNum == 2) - { - /* filtering by MBR spatial relation */ - unsigned char *p_blob; - int n_bytes; - double minx; - double miny; - double maxx; - double maxy; - int mode; - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - cursor->eof = 1; - else - { - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - if (gaiaParseFilterMbr - (p_blob, n_bytes, &minx, &miny, &maxx, &maxy, &mode)) - { - if (mode == GAIA_FILTER_MBR_WITHIN - || mode == GAIA_FILTER_MBR_CONTAINS - || mode == GAIA_FILTER_MBR_INTERSECTS) - { - cursor->minx = minx; - cursor->miny = miny; - cursor->maxx = maxx; - cursor->maxy = maxy; - cursor->mbr_mode = mode; - mbrc_read_row_filtered (cursor); - } - else - cursor->eof = 1; - } - } - return SQLITE_OK; - } -/* illegal query mode */ - cursor->eof = 1; - return SQLITE_OK; -} - -static int -mbrc_next (sqlite3_vtab_cursor * pCursor) -{ -/* fetching a next row from cursor */ - MbrCacheCursorPtr cursor = (MbrCacheCursorPtr) pCursor; - if (cursor->pVtab->error) - { - cursor->eof = 1; - return SQLITE_OK; - } - if (cursor->strategy == 0) - mbrc_read_row_unfiltered (cursor); - else if (cursor->strategy == 2) - mbrc_read_row_filtered (cursor); - else - cursor->eof = 1; - return SQLITE_OK; -} - -static int -mbrc_eof (sqlite3_vtab_cursor * pCursor) -{ -/* cursor EOF */ - MbrCacheCursorPtr cursor = (MbrCacheCursorPtr) pCursor; - return cursor->eof; -} - -static int -mbrc_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, - int column) -{ -/* fetching value for the Nth column */ - MbrCacheCursorPtr cursor = (MbrCacheCursorPtr) pCursor; - if (!(cursor->current_cell)) - sqlite3_result_null (pContext); - else - { - if (column == 0) - { - /* the PRIMARY KEY column */ - sqlite3_result_int64 (pContext, cursor->current_cell->rowid); - } - if (column == 1) - { - /* the MBR column */ - char *envelope = sqlite3_mprintf ("POLYGON((" - "%1.2f %1.2f, %1.2f %1.2f, %1.2f %1.2f, %1.2f %1.2f, %1.2f %1.2f))", - cursor->current_cell->minx, - cursor->current_cell->miny, - cursor->current_cell->maxx, - cursor->current_cell->miny, - cursor->current_cell->maxx, - cursor->current_cell->maxy, - cursor->current_cell->minx, - cursor->current_cell->maxy, - cursor->current_cell->minx, - cursor->current_cell->miny); - sqlite3_result_text (pContext, envelope, strlen (envelope), - sqlite3_free); - } - } - return SQLITE_OK; -} - -static int -mbrc_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) -{ -/* fetching the ROWID */ - MbrCacheCursorPtr cursor = (MbrCacheCursorPtr) pCursor; - *pRowid = cursor->current_cell->rowid; - return SQLITE_OK; -} - -static int -mbrc_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, - sqlite_int64 * pRowid) -{ -/* generic update [INSERT / UPDATE / DELETE */ - sqlite3_int64 rowid; - unsigned char *p_blob; - int n_bytes; - double minx; - double miny; - double maxx; - double maxy; - int mode; - int illegal = 0; - MbrCachePtr p_vtab = (MbrCachePtr) pVTab; - if (pRowid) - pRowid = pRowid; /* unused arg warning suppression */ - if (p_vtab->error) - return SQLITE_OK; - if (!(p_vtab->cache)) - p_vtab->cache = - cache_load (p_vtab->db, p_vtab->table_name, p_vtab->column_name); - if (argc == 1) - { - /* performing a DELETE */ - if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - rowid = sqlite3_value_int64 (argv[0]); - cache_delete_cell (p_vtab->cache->first, rowid); - } - else - illegal = 1; - } - else - { - if (sqlite3_value_type (argv[0]) == SQLITE_NULL) - { - /* performing an INSERT */ - if (argc == 4) - { - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER - && sqlite3_value_type (argv[3]) == SQLITE_BLOB) - { - rowid = sqlite3_value_int64 (argv[2]); - p_blob = - (unsigned char *) sqlite3_value_blob (argv[3]); - n_bytes = sqlite3_value_bytes (argv[3]); - if (gaiaParseFilterMbr - (p_blob, n_bytes, &minx, &miny, &maxx, &maxy, - &mode)) - { - if (mode == GAIA_FILTER_MBR_DECLARE) - { - if (!cache_find_by_rowid - (p_vtab->cache->first, rowid)) - cache_insert_cell (p_vtab->cache, - rowid, minx, - miny, maxx, - maxy); - } - else - illegal = 1; - } - else - illegal = 1; - } - else - illegal = 1; - } - else - illegal = 1; - } - else - { - /* performing an UPDATE */ - if (argc == 4) - { - if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER - && sqlite3_value_type (argv[3]) == SQLITE_BLOB) - { - rowid = sqlite3_value_int64 (argv[0]); - p_blob = - (unsigned char *) sqlite3_value_blob (argv[3]); - n_bytes = sqlite3_value_bytes (argv[3]); - if (gaiaParseFilterMbr - (p_blob, n_bytes, &minx, &miny, &maxx, &maxy, - &mode)) - { - if (mode == GAIA_FILTER_MBR_DECLARE) - cache_update_cell (p_vtab->cache->first, - rowid, minx, miny, - maxx, maxy); - else - illegal = 1; - } - else - illegal = 1; - } - else - illegal = 1; - } - else - illegal = 1; - } - } - if (illegal) - return SQLITE_MISMATCH; - return SQLITE_OK; -} - -static int -mbrc_begin (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -mbrc_sync (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -mbrc_commit (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -mbrc_rollback (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -int -sqlite3MbrCacheInit (sqlite3 * db) -{ - int rc = SQLITE_OK; - my_mbr_module.iVersion = 1; - my_mbr_module.xCreate = &mbrc_create; - my_mbr_module.xConnect = &mbrc_connect; - my_mbr_module.xBestIndex = &mbrc_best_index; - my_mbr_module.xDisconnect = &mbrc_disconnect; - my_mbr_module.xDestroy = &mbrc_destroy; - my_mbr_module.xOpen = &mbrc_open; - my_mbr_module.xClose = &mbrc_close; - my_mbr_module.xFilter = &mbrc_filter; - my_mbr_module.xNext = &mbrc_next; - my_mbr_module.xEof = &mbrc_eof; - my_mbr_module.xColumn = &mbrc_column; - my_mbr_module.xRowid = &mbrc_rowid; - my_mbr_module.xUpdate = &mbrc_update; - my_mbr_module.xBegin = &mbrc_begin; - my_mbr_module.xSync = &mbrc_sync; - my_mbr_module.xCommit = &mbrc_commit; - my_mbr_module.xRollback = &mbrc_rollback; - my_mbr_module.xFindFunction = NULL; - sqlite3_create_module_v2 (db, "MbrCache", &my_mbr_module, NULL, 0); - return rc; -} - -int -mbrcache_extension_init (sqlite3 * db) -{ - return sqlite3MbrCacheInit (db); -} diff --git a/src/spatialite/src/spatialite/metatables.c b/src/spatialite/src/spatialite/metatables.c deleted file mode 100644 index 7f89994..0000000 --- a/src/spatialite/src/spatialite/metatables.c +++ /dev/null @@ -1,5922 +0,0 @@ -/* - - metatables.c -- creating the metadata tables and related triggers - - version 4.0, 2012 September 2 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Pepijn Van Eeckhoudt -(implementing Android support) - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include -#include - -#include -#include -#include -#include -#include - -#ifdef _WIN32 -#define strcasecmp _stricmp -#endif /* not WIN32 */ - -struct spatial_index_str -{ -/* a struct to implement a linked list of spatial-indexes */ - char ValidRtree; - char ValidCache; - char *TableName; - char *ColumnName; - struct spatial_index_str *Next; -}; - -static int -testSpatiaLiteHistory (sqlite3 * sqlite) -{ -/* internal utility function: -/ -/ checks if the SPATIALITE_HISTORY table already exists -/ -*/ - int event_id = 0; - int table_name = 0; - int geometry_column = 0; - int event = 0; - int timestamp = 0; - int ver_sqlite = 0; - int ver_splite = 0; - char sql[1024]; - int ret; - const char *name; - int i; - char **results; - int rows; - int columns; -/* checking the SPATIALITE_HISTORY table */ - strcpy (sql, "PRAGMA table_info(spatialite_history)"); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 1]; - if (strcasecmp (name, "event_id") == 0) - event_id = 1; - if (strcasecmp (name, "table_name") == 0) - table_name = 1; - if (strcasecmp (name, "geometry_column") == 0) - geometry_column = 1; - if (strcasecmp (name, "event") == 0) - event = 1; - if (strcasecmp (name, "timestamp") == 0) - timestamp = 1; - if (strcasecmp (name, "ver_sqlite") == 0) - ver_sqlite = 1; - if (strcasecmp (name, "ver_splite") == 0) - ver_splite = 1; - } - } - sqlite3_free_table (results); - if (event_id && table_name && geometry_column && event && timestamp - && ver_sqlite && ver_splite) - return 1; - return 0; -} - -static int -checkSpatiaLiteHistory (sqlite3 * sqlite) -{ -/* internal utility function: -/ -/ checks if the SPATIALITE_HISTORY table already exists -/ if not, such table will then be created -/ -*/ - char sql[1024]; - char *errMsg = NULL; - int ret; - - if (testSpatiaLiteHistory (sqlite)) - return 1; - -/* creating the SPATIALITE_HISTORY table */ - strcpy (sql, "CREATE TABLE IF NOT EXISTS "); - strcat (sql, "spatialite_history (\n"); - strcat (sql, "event_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\n"); - strcat (sql, "table_name TEXT NOT NULL,\n"); - strcat (sql, "geometry_column TEXT,\n"); - strcat (sql, "event TEXT NOT NULL,\n"); - strcat (sql, "timestamp TEXT NOT NULL,\n"); - strcat (sql, "ver_sqlite TEXT NOT NULL,\n"); - strcat (sql, "ver_splite TEXT NOT NULL)"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - return 0; - - if (testSpatiaLiteHistory (sqlite)) - return 1; - return 0; -} - -SPATIALITE_PRIVATE void -updateSpatiaLiteHistory (void *p_sqlite, const char *table, - const char *geom, const char *operation) -{ -/* inserting a row in SPATIALITE_HISTORY */ - sqlite3 *sqlite = (sqlite3 *) p_sqlite; - char sql[2048]; - sqlite3_stmt *stmt = NULL; - int ret; - - if (checkSpatiaLiteHistory (sqlite) == 0) - return; - - strcpy (sql, "INSERT INTO spatialite_history "); - strcat (sql, "(event_id, table_name, geometry_column, event, timestamp, "); - strcat (sql, "ver_sqlite, ver_splite) VALUES (NULL, ?, ?, ?, "); - strcat (sql, "strftime('%Y-%m-%dT%H:%M:%fZ', 'now'), "); - strcat (sql, "sqlite_version(), spatialite_version())"); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s\n%s\n", sql, sqlite3_errmsg (sqlite)); - goto stop; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - if (!geom) - sqlite3_bind_null (stmt, 2); - else - sqlite3_bind_text (stmt, 2, geom, strlen (geom), SQLITE_STATIC); - sqlite3_bind_text (stmt, 3, operation, strlen (operation), SQLITE_STATIC); - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - goto stop; - spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); - - stop: - if (stmt) - sqlite3_finalize (stmt); -} - -static int -create_views_geometry_columns (sqlite3 * sqlite) -{ - char sql[4186]; - char *errMsg = NULL; - int ret; -/* creating the VIEWS_GEOMETRY_COLUMNS table */ - strcpy (sql, "CREATE TABLE IF NOT EXISTS "); - strcat (sql, "views_geometry_columns (\n"); - strcat (sql, "view_name TEXT NOT NULL,\n"); - strcat (sql, "view_geometry TEXT NOT NULL,\n"); - strcat (sql, "view_rowid TEXT NOT NULL,\n"); - strcat (sql, "f_table_name TEXT NOT NULL,\n"); - strcat (sql, "f_geometry_column TEXT NOT NULL,\n"); - strcat (sql, "read_only INTEGER NOT NULL,\n"); - strcat (sql, "CONSTRAINT pk_geom_cols_views PRIMARY KEY "); - strcat (sql, "(view_name, view_geometry),\n"); - strcat (sql, "CONSTRAINT fk_views_geom_cols FOREIGN KEY "); - strcat (sql, "(f_table_name, f_geometry_column) "); - strcat (sql, "REFERENCES geometry_columns "); - strcat (sql, "(f_table_name, f_geometry_column) "); - strcat (sql, "ON DELETE CASCADE,\n"); - strcat (sql, "CONSTRAINT ck_vw_rdonly CHECK (read_only IN "); - strcat (sql, "(0,1)))"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating an INDEX supporting the GEOMETRY_COLUMNS FK */ - strcpy (sql, "CREATE INDEX IF NOT EXISTS "); - strcat (sql, "idx_viewsjoin ON views_geometry_columns\n"); - strcat (sql, "(f_table_name, f_geometry_column)"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the VIEWS_GEOMETRY_COLUMNS triggers */ - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_view_name_insert\n"); - strcat (sql, "BEFORE INSERT ON 'views_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); - strcat (sql, "view_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); - strcat (sql, "view_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: \n"); - strcat (sql, "view_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_view_name_update\n"); - strcat (sql, "BEFORE UPDATE OF 'view_name' ON 'views_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); - strcat (sql, "view_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); - strcat (sql, "view_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); - strcat (sql, "view_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_view_geometry_insert\n"); - strcat (sql, "BEFORE INSERT ON 'views_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); - strcat (sql, "view_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: \n"); - strcat (sql, "view_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); - strcat (sql, "view_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_view_geometry_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'view_geometry' ON 'views_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); - strcat (sql, "view_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: \n"); - strcat (sql, "view_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); - strcat (sql, "view_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_view_rowid_update\n"); - strcat (sql, "BEFORE UPDATE OF 'view_rowid' ON 'views_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); - strcat (sql, "view_rowid value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); - strcat (sql, "view_rowid value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_rowid LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); - strcat (sql, "view_rowid value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_rowid <> lower(NEW.view_rowid);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_view_rowid_insert\n"); - strcat (sql, "BEFORE INSERT ON 'views_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); - strcat (sql, "view_rowid value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_rowid LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: \n"); - strcat (sql, "view_rowid value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_rowid LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); - strcat (sql, "view_rowid value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_rowid <> lower(NEW.view_rowid);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_f_table_name_insert\n"); - strcat (sql, "BEFORE INSERT ON 'views_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); - strcat (sql, "f_table_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); - strcat (sql, "f_table_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: \n"); - strcat (sql, "f_table_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_f_table_name_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'f_table_name' ON 'views_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); - strcat (sql, "f_table_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); - strcat (sql, "f_table_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); - strcat (sql, "f_table_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, - "CREATE TRIGGER IF NOT EXISTS vwgc_f_geometry_column_insert\n"); - strcat (sql, "BEFORE INSERT ON 'views_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: \n"); - strcat (sql, "f_geometry_column value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); - strcat (sql, "f_geometry_column value must be lower case')\n"); - strcat (sql, - "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, - "CREATE TRIGGER IF NOT EXISTS vwgc_f_geometry_column_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'f_geometry_column' ON 'views_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); - strcat (sql, "f_geometry_column value must be lower case')\n"); - strcat (sql, - "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - return 1; -} - -static int -create_virts_geometry_columns (sqlite3 * sqlite) -{ - char sql[4186]; - char *errMsg = NULL; - int ret; -/* creating the VIRTS_GEOMETRY_COLUMNS table */ - strcpy (sql, "CREATE TABLE IF NOT EXISTS "); - strcat (sql, "virts_geometry_columns (\n"); - strcat (sql, "virt_name TEXT NOT NULL,\n"); - strcat (sql, "virt_geometry TEXT NOT NULL,\n"); - strcat (sql, "geometry_type INTEGER NOT NULL,\n"); - strcat (sql, "coord_dimension INTEGER NOT NULL,\n"); - strcat (sql, "srid INTEGER NOT NULL,\n"); - strcat (sql, "CONSTRAINT pk_geom_cols_virts PRIMARY KEY "); - strcat (sql, "(virt_name, virt_geometry),\n"); - strcat (sql, "CONSTRAINT fk_vgc_srid FOREIGN KEY "); - strcat (sql, "(srid) REFERENCES spatial_ref_sys (srid))"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating an INDEX supporting the SPATIAL_REF_SYS FK */ - strcpy (sql, "CREATE INDEX IF NOT EXISTS "); - strcat (sql, "idx_virtssrid ON virts_geometry_columns\n"); - strcat (sql, "(srid)"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the VIRTS_GEOMETRY_COLUMNS triggers */ - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_virt_name_insert\n"); - strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns violates constraint: "); - strcat (sql, "virt_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns violates constraint: "); - strcat (sql, "virt_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns violates constraint: \n"); - strcat (sql, "virt_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_virt_name_update\n"); - strcat (sql, "BEFORE UPDATE OF 'virt_name' ON 'virts_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns violates constraint: "); - strcat (sql, "virt_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns violates constraint: "); - strcat (sql, "virt_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns violates constraint: "); - strcat (sql, "virt_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_virt_geometry_insert\n"); - strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns violates constraint: "); - strcat (sql, "virt_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns violates constraint: \n"); - strcat (sql, "virt_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns violates constraint: "); - strcat (sql, "virt_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_virt_geometry_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'virt_geometry' ON 'virts_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns violates constraint: "); - strcat (sql, "virt_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns violates constraint: \n"); - strcat (sql, "virt_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns violates constraint: "); - strcat (sql, "virt_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_geometry_type_insert\n"); - strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, "SELECT RAISE(ABORT,'geometry_type must be one of "); - strcat (sql, "0,1,2,3,4,5,6,7,"); - strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); - strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); - strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007')\n"); - strcat (sql, "WHERE NOT(NEW.geometry_type IN (0,1,2,3,4,5,6,7,"); - strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); - strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); - strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007));\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_geometry_type_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'geometry_type' ON 'virts_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, "SELECT RAISE(ABORT,'geometry_type must be one of "); - strcat (sql, "0,1,2,3,4,5,6,7,"); - strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); - strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); - strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007')\n"); - strcat (sql, "WHERE NOT(NEW.geometry_type IN (0,1,2,3,4,5,6,7,"); - strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); - strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); - strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007));\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_coord_dimension_insert\n"); - strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'coord_dimension must be one of 2,3,4')\n"); - strcat (sql, "WHERE NOT(NEW.coord_dimension IN (2,3,4));\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_coord_dimension_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'coord_dimension' ON 'virts_geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'coord_dimension must be one of 2,3,4')\n"); - strcat (sql, "WHERE NOT(NEW.coord_dimension IN (2,3,4));\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - return 1; -} - -static int -create_geometry_columns_statistics (sqlite3 * sqlite) -{ - char sql[4186]; - char *errMsg = NULL; - int ret; -/* creating the GEOMETRY_COLUMNS_STATISTICS table */ - strcpy (sql, "CREATE TABLE IF NOT EXISTS "); - strcat (sql, "geometry_columns_statistics (\n"); - strcat (sql, "f_table_name TEXT NOT NULL,\n"); - strcat (sql, "f_geometry_column TEXT NOT NULL,\n"); - strcat (sql, "last_verified TIMESTAMP,\n"); - strcat (sql, "row_count INTEGER,\n"); - strcat (sql, "extent_min_x DOUBLE,\n"); - strcat (sql, "extent_min_y DOUBLE,\n"); - strcat (sql, "extent_max_x DOUBLE,\n"); - strcat (sql, "extent_max_y DOUBLE,\n"); - strcat (sql, "CONSTRAINT pk_gc_statistics PRIMARY KEY "); - strcat (sql, "(f_table_name, f_geometry_column),\n"); - strcat (sql, "CONSTRAINT fk_gc_statistics FOREIGN KEY "); - strcat (sql, "(f_table_name, f_geometry_column) REFERENCES "); - strcat (sql, "geometry_columns (f_table_name, f_geometry_column) "); - strcat (sql, "ON DELETE CASCADE)"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the GEOMETRY_COLUMNS_STATISTICS triggers */ - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcs_f_table_name_insert\n"); - strcat (sql, "BEFORE INSERT ON 'geometry_columns_statistics'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_statistics violates constraint: "); - strcat (sql, "f_table_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_statistics violates constraint: "); - strcat (sql, "f_table_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_statistics violates constraint: \n"); - strcat (sql, "f_table_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcs_f_table_name_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'f_table_name' ON 'geometry_columns_statistics'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_statistics violates constraint: "); - strcat (sql, "f_table_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_statistics violates constraint: "); - strcat (sql, "f_table_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_statistics violates constraint: "); - strcat (sql, "f_table_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcs_f_geometry_column_insert\n"); - strcat (sql, "BEFORE INSERT ON 'geometry_columns_statistics'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_statistics violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_statistics violates constraint: \n"); - strcat (sql, "f_geometry_column value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_statistics violates constraint: "); - strcat (sql, "f_geometry_column value must be lower case')\n"); - strcat (sql, - "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcs_f_geometry_column_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'f_geometry_column' ON 'geometry_columns_statistics'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_statistics violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_statistics violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_statistics violates constraint: "); - strcat (sql, "f_geometry_column value must be lower case')\n"); - strcat (sql, - "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - return 1; -} - -static int -create_views_geometry_columns_statistics (sqlite3 * sqlite) -{ - char sql[4186]; - char *errMsg = NULL; - int ret; -/* creating the VIEWS_GEOMETRY_COLUMNS_STATISTICS table */ - strcpy (sql, "CREATE TABLE IF NOT EXISTS "); - strcat (sql, "views_geometry_columns_statistics (\n"); - strcat (sql, "view_name TEXT NOT NULL,\n"); - strcat (sql, "view_geometry TEXT NOT NULL,\n"); - strcat (sql, "last_verified TIMESTAMP,\n"); - strcat (sql, "row_count INTEGER,\n"); - strcat (sql, "extent_min_x DOUBLE,\n"); - strcat (sql, "extent_min_y DOUBLE,\n"); - strcat (sql, "extent_max_x DOUBLE,\n"); - strcat (sql, "extent_max_y DOUBLE,\n"); - strcat (sql, "CONSTRAINT pk_vwgc_statistics PRIMARY KEY "); - strcat (sql, "(view_name, view_geometry),\n"); - strcat (sql, "CONSTRAINT fk_vwgc_statistics FOREIGN KEY "); - strcat (sql, "(view_name, view_geometry) REFERENCES "); - strcat (sql, "views_geometry_columns (view_name, view_geometry) "); - strcat (sql, "ON DELETE CASCADE)"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the VIEWS_GEOMETRY_COLUMNS_STATISTICS triggers */ - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcs_view_name_insert\n"); - strcat (sql, "BEFORE INSERT ON 'views_geometry_columns_statistics'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_statistics violates constraint: "); - strcat (sql, "view_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_statistics violates constraint: "); - strcat (sql, "view_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_statistics violates constraint: \n"); - strcat (sql, "view_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcs_view_name_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'view_name' ON 'views_geometry_columns_statistics'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_statistics violates constraint: "); - strcat (sql, "view_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_statistics violates constraint: "); - strcat (sql, "view_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_statistics violates constraint: "); - strcat (sql, "view_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcs_view_geometry_insert\n"); - strcat (sql, "BEFORE INSERT ON 'views_geometry_columns_statistics'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_statistics violates constraint: "); - strcat (sql, "view_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_statistics violates constraint: \n"); - strcat (sql, "view_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_statistics violates constraint: "); - strcat (sql, "view_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcs_view_geometry_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'view_geometry' ON 'views_geometry_columns_statistics'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_statistics violates constraint: "); - strcat (sql, "view_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_statistics violates constraint: \n"); - strcat (sql, "view_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_statistics violates constraint: "); - strcat (sql, "view_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - return 1; -} - -static int -create_virts_geometry_columns_statistics (sqlite3 * sqlite) -{ - char sql[4186]; - char *errMsg = NULL; - int ret; -/* creating the VIRTS_GEOMETRY_COLUMNS_STATISTICS table */ - strcpy (sql, "CREATE TABLE IF NOT EXISTS "); - strcat (sql, "virts_geometry_columns_statistics (\n"); - strcat (sql, "virt_name TEXT NOT NULL,\n"); - strcat (sql, "virt_geometry TEXT NOT NULL,\n"); - strcat (sql, "last_verified TIMESTAMP,\n"); - strcat (sql, "row_count INTEGER,\n"); - strcat (sql, "extent_min_x DOUBLE,\n"); - strcat (sql, "extent_min_y DOUBLE,\n"); - strcat (sql, "extent_max_x DOUBLE,\n"); - strcat (sql, "extent_max_y DOUBLE,\n"); - strcat (sql, "CONSTRAINT pk_vrtgc_statistics PRIMARY KEY "); - strcat (sql, "(virt_name, virt_geometry),\n"); - strcat (sql, "CONSTRAINT fk_vrtgc_statistics FOREIGN KEY "); - strcat (sql, "(virt_name, virt_geometry) REFERENCES "); - strcat (sql, "virts_geometry_columns (virt_name, virt_geometry) "); - strcat (sql, "ON DELETE CASCADE)"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the VIRTS_GEOMETRY_COLUMNS_STATISTICS triggers */ - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcs_virt_name_insert\n"); - strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns_statistics'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_statistics violates constraint: "); - strcat (sql, "virt_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_statistics violates constraint: "); - strcat (sql, "virt_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_statistics violates constraint: \n"); - strcat (sql, "virt_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcs_virt_name_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'virt_name' ON 'virts_geometry_columns_statistics'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_statistics violates constraint: "); - strcat (sql, "virt_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_statistics violates constraint: "); - strcat (sql, "virt_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_statistics violates constraint: "); - strcat (sql, "virt_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcs_virt_geometry_insert\n"); - strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns_statistics'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_statistics violates constraint: "); - strcat (sql, "virt_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_statistics violates constraint: \n"); - strcat (sql, "virt_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_statistics violates constraint: "); - strcat (sql, "virt_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcs_virt_geometry_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'virt_geometry' ON 'virts_geometry_columns_statistics'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_statistics violates constraint: "); - strcat (sql, "virt_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_statistics violates constraint: \n"); - strcat (sql, "virt_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_statistics violates constraint: "); - strcat (sql, "virt_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - return 1; -} - -static int -create_geometry_columns_field_infos (sqlite3 * sqlite) -{ - char sql[4186]; - char *errMsg = NULL; - int ret; -/* creating the GEOMETRY_COLUMNS_FIELD_INFOS table */ - strcpy (sql, "CREATE TABLE IF NOT EXISTS "); - strcat (sql, "geometry_columns_field_infos (\n"); - strcat (sql, "f_table_name TEXT NOT NULL,\n"); - strcat (sql, "f_geometry_column TEXT NOT NULL,\n"); - strcat (sql, "ordinal INTEGER NOT NULL,\n"); - strcat (sql, "column_name TEXT NOT NULL,\n"); - strcat (sql, "null_values INTEGER NOT NULL,\n"); - strcat (sql, "integer_values INTEGER NOT NULL,\n"); - strcat (sql, "double_values INTEGER NOT NULL,\n"); - strcat (sql, "text_values INTEGER NOT NULL,\n"); - strcat (sql, "blob_values INTEGER NOT NULL,\n"); - strcat (sql, "max_size INTEGER,\n"); - strcat (sql, "integer_min INTEGER,\n"); - strcat (sql, "integer_max INTEGER,\n"); - strcat (sql, "double_min DOUBLE,\n"); - strcat (sql, "double_max DOUBLE,\n"); - strcat (sql, "CONSTRAINT pk_gcfld_infos PRIMARY KEY "); - strcat (sql, "(f_table_name, f_geometry_column, ordinal, column_name),\n"); - strcat (sql, "CONSTRAINT fk_gcfld_infos FOREIGN KEY "); - strcat (sql, "(f_table_name, f_geometry_column) REFERENCES "); - strcat (sql, "geometry_columns (f_table_name, f_geometry_column) "); - strcat (sql, "ON DELETE CASCADE)"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the GEOMETRY_COLUMNS_FIELD_INFOS triggers */ - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcfi_f_table_name_insert\n"); - strcat (sql, "BEFORE INSERT ON 'geometry_columns_field_infos'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_field_infos violates constraint: "); - strcat (sql, "f_table_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_field_infos violates constraint: "); - strcat (sql, "f_table_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_field_infos violates constraint: \n"); - strcat (sql, "f_table_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcfi_f_table_name_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'f_table_name' ON 'geometry_columns_field_infos'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_field_infos violates constraint: "); - strcat (sql, "f_table_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_field_infos violates constraint: "); - strcat (sql, "f_table_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_field_infos violates constraint: "); - strcat (sql, "f_table_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, - "CREATE TRIGGER IF NOT EXISTS gcfi_f_geometry_column_insert\n"); - strcat (sql, "BEFORE INSERT ON 'geometry_columns_field_infos'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_field_infos violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_field_infos violates constraint: \n"); - strcat (sql, "f_geometry_column value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_field_infos violates constraint: "); - strcat (sql, "f_geometry_column value must be lower case')\n"); - strcat (sql, - "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, - "CREATE TRIGGER IF NOT EXISTS gcfi_f_geometry_column_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'f_geometry_column' ON 'geometry_columns_field_infos'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_field_infos violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_field_infos violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_field_infos violates constraint: "); - strcat (sql, "f_geometry_column value must be lower case')\n"); - strcat (sql, - "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - return 1; -} - -static int -create_views_geometry_columns_field_infos (sqlite3 * sqlite) -{ - char sql[4186]; - char *errMsg = NULL; - int ret; -/* creating the VIEWS_COLUMNS_FIELD_INFOS table */ - strcpy (sql, "CREATE TABLE IF NOT EXISTS "); - strcat (sql, "views_geometry_columns_field_infos (\n"); - strcat (sql, "view_name TEXT NOT NULL,\n"); - strcat (sql, "view_geometry TEXT NOT NULL,\n"); - strcat (sql, "ordinal INTEGER NOT NULL,\n"); - strcat (sql, "column_name TEXT NOT NULL,\n"); - strcat (sql, "null_values INTEGER NOT NULL,\n"); - strcat (sql, "integer_values INTEGER NOT NULL,\n"); - strcat (sql, "double_values INTEGER NOT NULL,\n"); - strcat (sql, "text_values INTEGER NOT NULL,\n"); - strcat (sql, "blob_values INTEGER NOT NULL,\n"); - strcat (sql, "max_size INTEGER,\n"); - strcat (sql, "integer_min INTEGER,\n"); - strcat (sql, "integer_max INTEGER,\n"); - strcat (sql, "double_min DOUBLE,\n"); - strcat (sql, "double_max DOUBLE,\n"); - strcat (sql, "CONSTRAINT pk_vwgcfld_infos PRIMARY KEY "); - strcat (sql, "(view_name, view_geometry, ordinal, column_name),\n"); - strcat (sql, "CONSTRAINT fk_vwgcfld_infos FOREIGN KEY "); - strcat (sql, "(view_name, view_geometry) REFERENCES "); - strcat (sql, "views_geometry_columns (view_name, view_geometry) "); - strcat (sql, "ON DELETE CASCADE)"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the VIEWS_COLUMNS_FIELD_INFOS triggers */ - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcfi_view_name_insert\n"); - strcat (sql, "BEFORE INSERT ON 'views_geometry_columns_field_infos'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_field_infos violates constraint: "); - strcat (sql, "view_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_field_infos violates constraint: "); - strcat (sql, "view_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_field_infos violates constraint: \n"); - strcat (sql, "view_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcfi_view_name_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'view_name' ON 'views_geometry_columns_field_infos'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_field_infos violates constraint: "); - strcat (sql, "view_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_field_infos violates constraint: "); - strcat (sql, "view_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_field_infos violates constraint: "); - strcat (sql, "view_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcfi_view_geometry_insert\n"); - strcat (sql, "BEFORE INSERT ON 'views_geometry_columns_field_infos'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_field_infos violates constraint: "); - strcat (sql, "view_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_field_infos violates constraint: \n"); - strcat (sql, "view_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_field_infos violates constraint: "); - strcat (sql, "view_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcfi_view_geometry_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'view_geometry' ON 'views_geometry_columns_field_infos'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_field_infos violates constraint: "); - strcat (sql, "view_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_field_infos violates constraint: \n"); - strcat (sql, "view_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_field_infos violates constraint: "); - strcat (sql, "view_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - return 1; -} - -static int -create_virts_geometry_columns_field_infos (sqlite3 * sqlite) -{ - char sql[4186]; - char *errMsg = NULL; - int ret; -/* creating the VIRTS_GEOMETRY_COLUMNS_FIELD_INFOS table */ - strcpy (sql, "CREATE TABLE IF NOT EXISTS "); - strcat (sql, "virts_geometry_columns_field_infos (\n"); - strcat (sql, "virt_name TEXT NOT NULL,\n"); - strcat (sql, "virt_geometry TEXT NOT NULL,\n"); - strcat (sql, "ordinal INTEGER NOT NULL,\n"); - strcat (sql, "column_name TEXT NOT NULL,\n"); - strcat (sql, "null_values INTEGER NOT NULL,\n"); - strcat (sql, "integer_values INTEGER NOT NULL,\n"); - strcat (sql, "double_values INTEGER NOT NULL,\n"); - strcat (sql, "text_values INTEGER NOT NULL,\n"); - strcat (sql, "blob_values INTEGER NOT NULL,\n"); - strcat (sql, "max_size INTEGER,\n"); - strcat (sql, "integer_min INTEGER,\n"); - strcat (sql, "integer_max INTEGER,\n"); - strcat (sql, "double_min DOUBLE,\n"); - strcat (sql, "double_max DOUBLE,\n"); - strcat (sql, "CONSTRAINT pk_vrtgcfld_infos PRIMARY KEY "); - strcat (sql, "(virt_name, virt_geometry, ordinal, column_name),\n"); - strcat (sql, "CONSTRAINT fk_vrtgcfld_infos FOREIGN KEY "); - strcat (sql, "(virt_name, virt_geometry) REFERENCES "); - strcat (sql, "virts_geometry_columns (virt_name, virt_geometry) "); - strcat (sql, "ON DELETE CASCADE)"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the VIRTS_GEOMETRY_COLUMNS_FIELD_INFOS triggers */ - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcfi_virt_name_insert\n"); - strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns_field_infos'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_field_infos violates constraint: "); - strcat (sql, "virt_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_field_infos violates constraint: "); - strcat (sql, "virt_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_field_infos violates constraint: \n"); - strcat (sql, "virt_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcfi_virt_name_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'virt_name' ON 'virts_geometry_columns_field_infos'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_field_infos violates constraint: "); - strcat (sql, "virt_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_field_infos violates constraint: "); - strcat (sql, "virt_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_field_infos violates constraint: "); - strcat (sql, "virt_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcfi_virt_geometry_insert\n"); - strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns_field_infos'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_field_infos violates constraint: "); - strcat (sql, "virt_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_field_infos violates constraint: \n"); - strcat (sql, "virt_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_field_infos violates constraint: "); - strcat (sql, "virt_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcfi_virt_geometry_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'virt_geometry' ON 'virts_geometry_columns_field_infos'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_field_infos violates constraint: "); - strcat (sql, "virt_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_field_infos violates constraint: \n"); - strcat (sql, "virt_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_field_infos violates constraint: "); - strcat (sql, "virt_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - return 1; -} - -static int -create_geometry_columns_times (sqlite3 * sqlite) -{ - char sql[4186]; - char *errMsg = NULL; - int ret; -/* creating the GEOMETRY_COLUMNS_TIME table */ - strcpy (sql, "CREATE TABLE IF NOT EXISTS "); - strcat (sql, "geometry_columns_time (\n"); - strcat (sql, "f_table_name TEXT NOT NULL,\n"); - strcat (sql, "f_geometry_column TEXT NOT NULL,\n"); - strcat (sql, - "last_insert TIMESTAMP NOT NULL DEFAULT '0000-01-01T00:00:00.000Z',\n"); - strcat (sql, - "last_update TIMESTAMP NOT NULL DEFAULT '0000-01-01T00:00:00.000Z',\n"); - strcat (sql, - "last_delete TIMESTAMP NOT NULL DEFAULT '0000-01-01T00:00:00.000Z',\n"); - strcat (sql, "CONSTRAINT pk_gc_time PRIMARY KEY "); - strcat (sql, "(f_table_name, f_geometry_column),\n"); - strcat (sql, "CONSTRAINT fk_gc_time FOREIGN KEY "); - strcat (sql, "(f_table_name, f_geometry_column) "); - strcat (sql, "REFERENCES geometry_columns "); - strcat (sql, "(f_table_name, f_geometry_column) "); - strcat (sql, "ON DELETE CASCADE)"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the GEOMETRY_COLUMNS_TIME triggers */ - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gctm_f_table_name_insert\n"); - strcat (sql, "BEFORE INSERT ON 'geometry_columns_time'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_time violates constraint: "); - strcat (sql, "f_table_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_time violates constraint: "); - strcat (sql, "f_table_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_time violates constraint: \n"); - strcat (sql, "f_table_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gctm_f_table_name_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'f_table_name' ON 'geometry_columns_time'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_time violates constraint: "); - strcat (sql, "f_table_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_time violates constraint: "); - strcat (sql, "f_table_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_time violates constraint: "); - strcat (sql, "f_table_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, - "CREATE TRIGGER IF NOT EXISTS gctm_f_geometry_column_insert\n"); - strcat (sql, "BEFORE INSERT ON 'geometry_columns_time'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_time violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_time violates constraint: \n"); - strcat (sql, "f_geometry_column value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_time violates constraint: "); - strcat (sql, "f_geometry_column value must be lower case')\n"); - strcat (sql, - "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, - "CREATE TRIGGER IF NOT EXISTS gctm_f_geometry_column_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'f_geometry_column' ON 'geometry_columns_time'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_time violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_time violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_time violates constraint: "); - strcat (sql, "f_geometry_column value must be lower case')\n"); - strcat (sql, - "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - return 1; -} - -static int -create_geometry_columns_auth (sqlite3 * sqlite) -{ - char sql[4186]; - char *errMsg = NULL; - int ret; -/* creating the GEOMETRY_COLUMNS_AUTH table */ - strcpy (sql, "CREATE TABLE IF NOT EXISTS "); - strcat (sql, "geometry_columns_auth (\n"); - strcat (sql, "f_table_name TEXT NOT NULL,\n"); - strcat (sql, "f_geometry_column TEXT NOT NULL,\n"); - strcat (sql, "read_only INTEGER NOT NULL,\n"); - strcat (sql, "hidden INTEGER NOT NULL,\n"); - strcat (sql, "CONSTRAINT pk_gc_auth PRIMARY KEY "); - strcat (sql, "(f_table_name, f_geometry_column),\n"); - strcat (sql, "CONSTRAINT fk_gc_auth FOREIGN KEY "); - strcat (sql, "(f_table_name, f_geometry_column) "); - strcat (sql, "REFERENCES geometry_columns "); - strcat (sql, "(f_table_name, f_geometry_column) "); - strcat (sql, "ON DELETE CASCADE,\n"); - strcat (sql, "CONSTRAINT ck_gc_ronly CHECK (read_only IN "); - strcat (sql, "(0,1)),\n"); - strcat (sql, "CONSTRAINT ck_gc_hidden CHECK (hidden IN "); - strcat (sql, "(0,1)))"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the GEOMETRY_COLUMNS_AUTH triggers */ - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcau_f_table_name_insert\n"); - strcat (sql, "BEFORE INSERT ON 'geometry_columns_auth'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_auth violates constraint: "); - strcat (sql, "f_table_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_auth violates constraint: "); - strcat (sql, "f_table_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_auth violates constraint: \n"); - strcat (sql, "f_table_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcau_f_table_name_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'f_table_name' ON 'geometry_columns_auth'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_auth violates constraint: "); - strcat (sql, "f_table_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_auth violates constraint: "); - strcat (sql, "f_table_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_auth violates constraint: "); - strcat (sql, "f_table_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, - "CREATE TRIGGER IF NOT EXISTS gcau_f_geometry_column_insert\n"); - strcat (sql, "BEFORE INSERT ON 'geometry_columns_auth'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_auth violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_auth violates constraint: \n"); - strcat (sql, "f_geometry_column value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns_auth violates constraint: "); - strcat (sql, "f_geometry_column value must be lower case')\n"); - strcat (sql, - "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, - "CREATE TRIGGER IF NOT EXISTS gcau_f_geometry_column_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'f_geometry_column' ON 'geometry_columns_auth'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_auth violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_auth violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns_auth violates constraint: "); - strcat (sql, "f_geometry_column value must be lower case')\n"); - strcat (sql, - "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - return 1; -} - -static int -create_views_geometry_columns_auth (sqlite3 * sqlite) -{ - char sql[4186]; - char *errMsg = NULL; - int ret; -/* creating the VIEWS_GEOMETRY_COLUMNS_AUTH table */ - strcpy (sql, "CREATE TABLE IF NOT EXISTS "); - strcat (sql, "views_geometry_columns_auth (\n"); - strcat (sql, "view_name TEXT NOT NULL,\n"); - strcat (sql, "view_geometry TEXT NOT NULL,\n"); - strcat (sql, "hidden INTEGER NOT NULL,\n"); - strcat (sql, "CONSTRAINT pk_vwgc_auth PRIMARY KEY "); - strcat (sql, "(view_name, view_geometry),\n"); - strcat (sql, "CONSTRAINT fk_vwgc_auth FOREIGN KEY "); - strcat (sql, "(view_name, view_geometry) "); - strcat (sql, "REFERENCES views_geometry_columns "); - strcat (sql, "(view_name, view_geometry) "); - strcat (sql, "ON DELETE CASCADE,\n"); - strcat (sql, "CONSTRAINT ck_vwgc_hidden CHECK (hidden IN "); - strcat (sql, "(0,1)))"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the VIEWS_GEOMETRY_COLUMNS_AUTH triggers */ - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcau_view_name_insert\n"); - strcat (sql, "BEFORE INSERT ON 'views_geometry_columns_auth'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_auth violates constraint: "); - strcat (sql, "view_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_auth violates constraint: "); - strcat (sql, "view_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_auth violates constraint: \n"); - strcat (sql, "view_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcau_view_name_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'view_name' ON 'views_geometry_columns_auth'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_auth violates constraint: "); - strcat (sql, "view_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_auth violates constraint: "); - strcat (sql, "view_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_auth violates constraint: "); - strcat (sql, "view_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcau_view_geometry_insert\n"); - strcat (sql, "BEFORE INSERT ON 'views_geometry_columns_auth'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_auth violates constraint: "); - strcat (sql, "view_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_auth violates constraint: \n"); - strcat (sql, "view_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on views_geometry_columns_auth violates constraint: "); - strcat (sql, "view_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcau_view_geometry_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'view_geometry' ON 'views_geometry_columns_auth'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_auth violates constraint: "); - strcat (sql, "view_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_auth violates constraint: \n"); - strcat (sql, "view_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on views_geometry_columns_auth violates constraint: "); - strcat (sql, "view_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - return 1; -} - -static int -create_virts_geometry_columns_auth (sqlite3 * sqlite) -{ - char sql[4186]; - char *errMsg = NULL; - int ret; -/* creating the VIRTS_GEOMETRY_COLUMNS_AUTH table */ - strcpy (sql, "CREATE TABLE IF NOT EXISTS "); - strcat (sql, "virts_geometry_columns_auth (\n"); - strcat (sql, "virt_name TEXT NOT NULL,\n"); - strcat (sql, "virt_geometry TEXT NOT NULL,\n"); - strcat (sql, "hidden INTEGER NOT NULL,\n"); - strcat (sql, "CONSTRAINT pk_vrtgc_auth PRIMARY KEY "); - strcat (sql, "(virt_name, virt_geometry),\n"); - strcat (sql, "CONSTRAINT fk_vrtgc_auth FOREIGN KEY "); - strcat (sql, "(virt_name, virt_geometry) "); - strcat (sql, "REFERENCES virts_geometry_columns "); - strcat (sql, "(virt_name, virt_geometry) "); - strcat (sql, "ON DELETE CASCADE,\n"); - strcat (sql, "CONSTRAINT ck_vrtgc_hidden CHECK (hidden IN "); - strcat (sql, "(0,1)))"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the VIRTS_GEOMETRY_COLUMNS_AUTH triggers */ - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcau_virt_name_insert\n"); - strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns_auth'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_auth violates constraint: "); - strcat (sql, "virt_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_auth violates constraint: "); - strcat (sql, "virt_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_auth violates constraint: \n"); - strcat (sql, "virt_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcau_virt_name_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'virt_name' ON 'virts_geometry_columns_auth'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_auth violates constraint: "); - strcat (sql, "virt_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_auth violates constraint: "); - strcat (sql, "virt_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_auth violates constraint: "); - strcat (sql, "virt_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcau_virt_geometry_insert\n"); - strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns_auth'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_auth violates constraint: "); - strcat (sql, "virt_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_auth violates constraint: \n"); - strcat (sql, "virt_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on virts_geometry_columns_auth violates constraint: "); - strcat (sql, "virt_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcau_virt_geometry_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'virt_geometry' ON 'virts_geometry_columns_auth'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_auth violates constraint: "); - strcat (sql, "virt_geometry value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_auth violates constraint: \n"); - strcat (sql, "virt_geometry value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on virts_geometry_columns_auth violates constraint: "); - strcat (sql, "virt_geometry value must be lower case')\n"); - strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - return 1; -} - -static int -create_geometry_columns_views (sqlite3 * sqlite) -{ - char sql[4186]; - char *errMsg = NULL; - int ret; -/* creating the VECTOR_LAYERS view */ - strcpy (sql, "CREATE VIEW IF NOT EXISTS "); - strcat (sql, "vector_layers AS\n"); - strcat (sql, "SELECT 'SpatialTable' AS layer_type, "); - strcat (sql, "f_table_name AS table_name, "); - strcat (sql, "f_geometry_column AS geometry_column, "); - strcat (sql, "geometry_type AS geometry_type, "); - strcat (sql, "coord_dimension AS coord_dimension, "); - strcat (sql, "srid AS srid, "); - strcat (sql, "spatial_index_enabled AS spatial_index_enabled\n"); - strcat (sql, "FROM geometry_columns\n"); - strcat (sql, "UNION\n"); - strcat (sql, "SELECT 'SpatialView' AS layer_type, "); - strcat (sql, "a.view_name AS table_name, "); - strcat (sql, "a.view_geometry AS geometry_column, "); - strcat (sql, "b.geometry_type AS geometry_type, "); - strcat (sql, "b.coord_dimension AS coord_dimension, "); - strcat (sql, "b.srid AS srid, "); - strcat (sql, "b.spatial_index_enabled AS spatial_index_enabled\n"); - strcat (sql, "FROM views_geometry_columns AS a\n"); - strcat (sql, "LEFT JOIN geometry_columns AS b ON ("); - strcat (sql, "Upper(a.f_table_name) = Upper(b.f_table_name) AND "); - strcat (sql, "Upper(a.f_geometry_column) = Upper(b.f_geometry_column))\n"); - strcat (sql, "UNION\n"); - strcat (sql, "SELECT 'VirtualShape' AS layer_type, "); - strcat (sql, "virt_name AS table_name, "); - strcat (sql, "virt_geometry AS geometry_column, "); - strcat (sql, "geometry_type AS geometry_type, "); - strcat (sql, "coord_dimension AS coord_dimension, "); - strcat (sql, "srid AS srid, "); - strcat (sql, "0 AS spatial_index_enabled\n"); - strcat (sql, "FROM virts_geometry_columns"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the VECTOR_LAYERS_AUTH view */ - strcpy (sql, "CREATE VIEW IF NOT EXISTS "); - strcat (sql, "vector_layers_auth AS\n"); - strcat (sql, "SELECT 'SpatialTable' AS layer_type, "); - strcat (sql, "f_table_name AS table_name, "); - strcat (sql, "f_geometry_column AS geometry_column, "); - strcat (sql, "read_only AS read_only, "); - strcat (sql, "hidden AS hidden\n"); - strcat (sql, "FROM geometry_columns_auth\n"); - strcat (sql, "UNION\n"); - strcat (sql, "SELECT 'SpatialView' AS layer_type, "); - strcat (sql, "a.view_name AS table_name, "); - strcat (sql, "a.view_geometry AS geometry_column, "); - strcat (sql, "b.read_only AS read_only, "); - strcat (sql, "a.hidden AS hidden\n"); - strcat (sql, "FROM views_geometry_columns_auth AS a\n"); - strcat (sql, "JOIN views_geometry_columns AS b ON ("); - strcat (sql, "Upper(a.view_name) = Upper(b.view_name) AND "); - strcat (sql, "Upper(a.view_geometry) = Upper(b.view_geometry))\n"); - strcat (sql, "UNION\n"); - strcat (sql, "SELECT 'VirtualShape' AS layer_type, "); - strcat (sql, "virt_name AS table_name, "); - strcat (sql, "virt_geometry AS geometry_column, "); - strcat (sql, "1 AS read_only, "); - strcat (sql, "hidden AS hidden\n"); - strcat (sql, "FROM virts_geometry_columns_auth"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the VECTOR_LAYERS_STATISTICS view */ - strcpy (sql, "CREATE VIEW IF NOT EXISTS "); - strcat (sql, "vector_layers_statistics AS\n"); - strcat (sql, "SELECT 'SpatialTable' AS layer_type, "); - strcat (sql, "f_table_name AS table_name, "); - strcat (sql, "f_geometry_column AS geometry_column, "); - strcat (sql, "last_verified AS last_verified, "); - strcat (sql, "row_count AS row_count, "); - strcat (sql, "extent_min_x AS extent_min_x, "); - strcat (sql, "extent_min_y AS extent_min_y, "); - strcat (sql, "extent_max_x AS extent_max_x, "); - strcat (sql, "extent_max_y AS extent_max_y\n"); - strcat (sql, "FROM geometry_columns_statistics\n"); - strcat (sql, "UNION\n"); - strcat (sql, "SELECT 'SpatialView' AS layer_type, "); - strcat (sql, "view_name AS table_name, "); - strcat (sql, "view_geometry AS geometry_column, "); - strcat (sql, "last_verified AS last_verified, "); - strcat (sql, "row_count AS row_count, "); - strcat (sql, "extent_min_x AS extent_min_x, "); - strcat (sql, "extent_min_y AS extent_min_y, "); - strcat (sql, "extent_max_x AS extent_max_x, "); - strcat (sql, "extent_max_y AS extent_max_y\n"); - strcat (sql, "FROM views_geometry_columns_statistics\n"); - strcat (sql, "UNION\n"); - strcat (sql, "SELECT 'VirtualShape' AS layer_type, "); - strcat (sql, "virt_name AS table_name, "); - strcat (sql, "virt_geometry AS geometry_column, "); - strcat (sql, "last_verified AS last_verified, "); - strcat (sql, "row_count AS row_count, "); - strcat (sql, "extent_min_x AS extent_min_x, "); - strcat (sql, "extent_min_y AS extent_min_y, "); - strcat (sql, "extent_max_x AS extent_max_x, "); - strcat (sql, "extent_max_y AS extent_max_y\n"); - strcat (sql, "FROM virts_geometry_columns_statistics"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the VECTOR_LAYERS_FIELD_INFOS view */ - strcpy (sql, "CREATE VIEW IF NOT EXISTS "); - strcat (sql, "vector_layers_field_infos AS\n"); - strcat (sql, "SELECT 'SpatialTable' AS layer_type, "); - strcat (sql, "f_table_name AS table_name, "); - strcat (sql, "f_geometry_column AS geometry_column, "); - strcat (sql, "ordinal AS ordinal, "); - strcat (sql, "column_name AS column_name, "); - strcat (sql, "null_values AS null_values, "); - strcat (sql, "integer_values AS integer_values, "); - strcat (sql, "double_values AS double_values, "); - strcat (sql, "text_values AS text_values, "); - strcat (sql, "blob_values AS blob_values, "); - strcat (sql, "max_size AS max_size, "); - strcat (sql, "integer_min AS integer_min, "); - strcat (sql, "integer_max AS integer_max, "); - strcat (sql, "double_min AS double_min, "); - strcat (sql, "double_max double_max\n"); - strcat (sql, "FROM geometry_columns_field_infos\n"); - strcat (sql, "UNION\n"); - strcat (sql, "SELECT 'SpatialView' AS layer_type, "); - strcat (sql, "view_name AS table_name, "); - strcat (sql, "view_geometry AS geometry_column, "); - strcat (sql, "ordinal AS ordinal, "); - strcat (sql, "column_name AS column_name, "); - strcat (sql, "null_values AS null_values, "); - strcat (sql, "integer_values AS integer_values, "); - strcat (sql, "double_values AS double_values, "); - strcat (sql, "text_values AS text_values, "); - strcat (sql, "blob_values AS blob_values, "); - strcat (sql, "max_size AS max_size, "); - strcat (sql, "integer_min AS integer_min, "); - strcat (sql, "integer_max AS integer_max, "); - strcat (sql, "double_min AS double_min, "); - strcat (sql, "double_max double_max\n"); - strcat (sql, "FROM views_geometry_columns_field_infos\n"); - strcat (sql, "UNION\n"); - strcat (sql, "SELECT 'VirtualShape' AS layer_type, "); - strcat (sql, "virt_name AS table_name, "); - strcat (sql, "virt_geometry AS geometry_column, "); - strcat (sql, "ordinal AS ordinal, "); - strcat (sql, "column_name AS column_name, "); - strcat (sql, "null_values AS null_values, "); - strcat (sql, "integer_values AS integer_values, "); - strcat (sql, "double_values AS double_values, "); - strcat (sql, "text_values AS text_values, "); - strcat (sql, "blob_values AS blob_values, "); - strcat (sql, "max_size AS max_size, "); - strcat (sql, "integer_min AS integer_min, "); - strcat (sql, "integer_max AS integer_max, "); - strcat (sql, "double_min AS double_min, "); - strcat (sql, "double_max double_max\n"); - strcat (sql, "FROM virts_geometry_columns_field_infos"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - return 1; -} - -SPATIALITE_PRIVATE int -check_layer_statistics (void *p_sqlite) -{ -/* -/ checks the LAYER_STATISTICS table for validity; -/ if the table doesn't exist, attempts to create -*/ - sqlite3 *sqlite = (sqlite3 *) p_sqlite; - char sql[8192]; - char **results; - int rows; - int columns; - int ret; - int raster_layer = 0; - int table_name = 0; - int geometry_column = 0; - int row_count = 0; - int extent_min_x = 0; - int extent_min_y = 0; - int extent_max_x = 0; - int extent_max_y = 0; - int i; - const char *name; - int has_pk = 0; - -/* checking the LAYER_STATISTICS table */ - ret = - sqlite3_get_table (sqlite, "PRAGMA table_info(layer_statistics)", - &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 1]; - if (strcasecmp (name, "raster_layer") == 0) - raster_layer = 1; - if (strcasecmp (name, "table_name") == 0) - table_name = 1; - if (strcasecmp (name, "geometry_column") == 0) - geometry_column = 1; - if (strcasecmp (name, "row_count") == 0) - row_count = 1; - if (strcasecmp (name, "extent_min_x") == 0) - extent_min_x = 1; - if (strcasecmp (name, "extent_min_y") == 0) - extent_min_y = 1; - if (strcasecmp (name, "extent_max_x") == 0) - extent_max_x = 1; - if (strcasecmp (name, "extent_max_y") == 0) - extent_max_y = 1; - } - } - sqlite3_free_table (results); - -/* LAYER_STATISTICS already exists and has a valid layout */ - if (raster_layer && table_name && geometry_column && row_count - && extent_min_x && extent_max_x && extent_min_y && extent_max_y) - return 1; -/* LAYER_STATISTICS already exists, but has an invalid layout */ - if (raster_layer || table_name || geometry_column || row_count - || extent_min_x || extent_max_x || extent_min_y || extent_max_y) - return 0; - -/* checking if GEOMETRY_COLUMNS has a Primary Key */ - ret = - sqlite3_get_table (sqlite, "PRAGMA table_info(geometry_columns)", - &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 5]; - if (atoi (name) != 0) - has_pk = 1; - } - } - sqlite3_free_table (results); - -/* attempting to create LAYER_STATISTICS */ - if (has_pk) - { - /* GEOMETRY_COLUMNS has a Primary Key */ - strcpy (sql, "CREATE TABLE layer_statistics (\n"); - strcat (sql, "raster_layer INTEGER NOT NULL,\n"); - strcat (sql, "table_name TEXT NOT NULL,\n"); - strcat (sql, "geometry_column TEXT NOT NULL,\n"); - strcat (sql, "row_count INTEGER,\n"); - strcat (sql, "extent_min_x DOUBLE,\n"); - strcat (sql, "extent_min_y DOUBLE,\n"); - strcat (sql, "extent_max_x DOUBLE,\n"); - strcat (sql, "extent_max_y DOUBLE,\n"); - strcat (sql, "CONSTRAINT pk_layer_statistics PRIMARY KEY "); - strcat (sql, "(raster_layer, table_name, geometry_column),\n"); - strcat (sql, "CONSTRAINT fk_layer_statistics FOREIGN KEY "); - strcat (sql, "(table_name, geometry_column) REFERENCES "); - strcat (sql, "geometry_columns (f_table_name, f_geometry_column) "); - strcat (sql, "ON DELETE CASCADE)"); - } - else - { - /* there is no Primary Key on GEOMETRY_COLUMNS */ - strcpy (sql, "CREATE TABLE layer_statistics (\n"); - strcat (sql, "raster_layer INTEGER NOT NULL,\n"); - strcat (sql, "table_name TEXT NOT NULL,\n"); - strcat (sql, "geometry_column TEXT NOT NULL,\n"); - strcat (sql, "row_count INTEGER,\n"); - strcat (sql, "extent_min_x DOUBLE,\n"); - strcat (sql, "extent_min_y DOUBLE,\n"); - strcat (sql, "extent_max_x DOUBLE,\n"); - strcat (sql, "extent_max_y DOUBLE,\n"); - strcat (sql, "CONSTRAINT pk_layer_statistics PRIMARY KEY "); - strcat (sql, "(raster_layer, table_name, geometry_column))"); - } - ret = sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - if (ret != SQLITE_OK) - return 0; - return 1; -} - -SPATIALITE_PRIVATE int -check_views_layer_statistics (void *p_sqlite) -{ -/* -/ checks the VIEWS_LAYER_STATISTICS table for validity; -/ if the table doesn't exist, attempts to create -*/ - sqlite3 *sqlite = (sqlite3 *) p_sqlite; - char sql[8192]; - char **results; - int rows; - int columns; - int ret; - int view_name = 0; - int view_geometry = 0; - int row_count = 0; - int extent_min_x = 0; - int extent_min_y = 0; - int extent_max_x = 0; - int extent_max_y = 0; - int i; - const char *name; - -/* checking the VIEWS_LAYER_STATISTICS table */ - ret = - sqlite3_get_table (sqlite, "PRAGMA table_info(views_layer_statistics)", - &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 1]; - if (strcasecmp (name, "view_name") == 0) - view_name = 1; - if (strcasecmp (name, "view_geometry") == 0) - view_geometry = 1; - if (strcasecmp (name, "row_count") == 0) - row_count = 1; - if (strcasecmp (name, "extent_min_x") == 0) - extent_min_x = 1; - if (strcasecmp (name, "extent_min_y") == 0) - extent_min_y = 1; - if (strcasecmp (name, "extent_max_x") == 0) - extent_max_x = 1; - if (strcasecmp (name, "extent_max_y") == 0) - extent_max_y = 1; - } - } - sqlite3_free_table (results); - -/* VIEWS_LAYER_STATISTICS already exists and has a valid layout */ - if (view_name && view_geometry && row_count && extent_min_x && extent_max_x - && extent_min_y && extent_max_y) - return 1; -/* VIEWS_LAYER_STATISTICS already exists, but has an invalid layout */ - if (view_name || view_geometry || row_count || extent_min_x || extent_max_x - || extent_min_y || extent_max_y) - return 0; - -/* attempting to create VIEWS_LAYER_STATISTICS */ - strcpy (sql, "CREATE TABLE views_layer_statistics (\n"); - strcat (sql, "view_name TEXT NOT NULL,\n"); - strcat (sql, "view_geometry TEXT NOT NULL,\n"); - strcat (sql, "row_count INTEGER,\n"); - strcat (sql, "extent_min_x DOUBLE,\n"); - strcat (sql, "extent_min_y DOUBLE,\n"); - strcat (sql, "extent_max_x DOUBLE,\n"); - strcat (sql, "extent_max_y DOUBLE,\n"); - strcat (sql, "CONSTRAINT pk_views_layer_statistics PRIMARY KEY "); - strcat (sql, "(view_name, view_geometry),\n"); - strcat (sql, "CONSTRAINT fk_views_layer_statistics FOREIGN KEY "); - strcat (sql, "(view_name, view_geometry) REFERENCES "); - strcat (sql, "views_geometry_columns (view_name, view_geometry) "); - strcat (sql, "ON DELETE CASCADE)"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - if (ret != SQLITE_OK) - return 0; - return 1; -} - -SPATIALITE_PRIVATE int -check_virts_layer_statistics (void *p_sqlite) -{ -/* -/ checks the VIRTS_LAYER_STATISTICS table for validity; -/ if the table doesn't exist, attempts to create -*/ - sqlite3 *sqlite = (sqlite3 *) p_sqlite; - char sql[8192]; - char **results; - int rows; - int columns; - int ret; - int virt_name = 0; - int virt_geometry = 0; - int row_count = 0; - int extent_min_x = 0; - int extent_min_y = 0; - int extent_max_x = 0; - int extent_max_y = 0; - int i; - const char *name; - -/* checking the VIRTS_LAYER_STATISTICS table */ - ret = - sqlite3_get_table (sqlite, "PRAGMA table_info(virts_layer_statistics)", - &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 1]; - if (strcasecmp (name, "virt_name") == 0) - virt_name = 1; - if (strcasecmp (name, "virt_geometry") == 0) - virt_geometry = 1; - if (strcasecmp (name, "row_count") == 0) - row_count = 1; - if (strcasecmp (name, "extent_min_x") == 0) - extent_min_x = 1; - if (strcasecmp (name, "extent_min_y") == 0) - extent_min_y = 1; - if (strcasecmp (name, "extent_max_x") == 0) - extent_max_x = 1; - if (strcasecmp (name, "extent_max_y") == 0) - extent_max_y = 1; - } - } - sqlite3_free_table (results); - -/* VIRTS_LAYER_STATISTICS already exists and has a valid layout */ - if (virt_name && virt_geometry && row_count && extent_min_x && extent_max_x - && extent_min_y && extent_max_y) - return 1; -/* VIRTS_LAYER_STATISTICS already exists, but has an invalid layout */ - if (virt_name || virt_geometry || row_count || extent_min_x || extent_max_x - || extent_min_y || extent_max_y) - return 0; - -/* attempting to create VIRTS_LAYER_STATISTICS */ - strcpy (sql, "CREATE TABLE virts_layer_statistics (\n"); - strcat (sql, "virt_name TEXT NOT NULL,\n"); - strcat (sql, "virt_geometry TEXT NOT NULL,\n"); - strcat (sql, "row_count INTEGER,\n"); - strcat (sql, "extent_min_x DOUBLE,\n"); - strcat (sql, "extent_min_y DOUBLE,\n"); - strcat (sql, "extent_max_x DOUBLE,\n"); - strcat (sql, "extent_max_y DOUBLE,\n"); - strcat (sql, "CONSTRAINT pk_virts_layer_statistics PRIMARY KEY "); - strcat (sql, "(virt_name, virt_geometry),\n"); - strcat (sql, "CONSTRAINT fk_virts_layer_statistics FOREIGN KEY "); - strcat (sql, "(virt_name, virt_geometry) REFERENCES "); - strcat (sql, "virts_geometry_columns (virt_name, virt_geometry) "); - strcat (sql, "ON DELETE CASCADE)"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - if (ret != SQLITE_OK) - return 0; - return 1; -} - -static int -create_sql_statements_log (sqlite3 * sqlite) -{ - char sql[4186]; - char *errMsg = NULL; - int ret; -/* creating the SQL_STATEMENTS_LOG table */ - strcpy (sql, "CREATE TABLE IF NOT EXISTS "); - strcat (sql, "sql_statements_log (\n"); - strcat (sql, "id INTEGER PRIMARY KEY AUTOINCREMENT,\n"); - strcat (sql, - "time_start TIMESTAMP NOT NULL DEFAULT '0000-01-01T00:00:00.000Z',\n"); - strcat (sql, - "time_end TIMESTAMP NOT NULL DEFAULT '0000-01-01T00:00:00.000Z',\n"); - strcat (sql, "user_agent TEXT NOT NULL,\n"); - strcat (sql, "sql_statement TEXT NOT NULL,\n"); - strcat (sql, "success INTEGER NOT NULL DEFAULT 0,\n"); - strcat (sql, "error_cause TEXT NOT NULL DEFAULT 'ABORTED',\n"); - strcat (sql, "CONSTRAINT sqllog_success CHECK "); - strcat (sql, "(success IN (0,1)))"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - return 1; -} - -SPATIALITE_PRIVATE int -createAdvancedMetaData (void *p_sqlite) -{ -/* creating the advanced MetaData tables */ - sqlite3 *sqlite = (sqlite3 *) p_sqlite; - if (!create_views_geometry_columns (sqlite)) - return 0; - if (!create_virts_geometry_columns (sqlite)) - return 0; - if (!create_geometry_columns_statistics (sqlite)) - return 0; - if (!create_views_geometry_columns_statistics (sqlite)) - return 0; - if (!create_virts_geometry_columns_statistics (sqlite)) - return 0; - if (!create_geometry_columns_field_infos (sqlite)) - return 0; - if (!create_views_geometry_columns_field_infos (sqlite)) - return 0; - if (!create_virts_geometry_columns_field_infos (sqlite)) - return 0; - if (!create_geometry_columns_times (sqlite)) - return 0; - if (!create_geometry_columns_auth (sqlite)) - return 0; - if (!create_views_geometry_columns_auth (sqlite)) - return 0; - if (!create_virts_geometry_columns_auth (sqlite)) - return 0; - if (!create_geometry_columns_views (sqlite)) - return 0; - if (!create_sql_statements_log (sqlite)) - return 0; - - return 1; -} - -SPATIALITE_PRIVATE int -createGeometryColumns (void *p_sqlite) -{ - sqlite3 *sqlite = (sqlite3 *) p_sqlite; - char sql[4186]; - char *errMsg = NULL; - int ret; -/* creating the GEOMETRY_COLUMNS table */ - strcpy (sql, "CREATE TABLE geometry_columns (\n"); - strcat (sql, "f_table_name TEXT NOT NULL,\n"); - strcat (sql, "f_geometry_column TEXT NOT NULL,\n"); - strcat (sql, "geometry_type INTEGER NOT NULL,\n"); - strcat (sql, "coord_dimension INTEGER NOT NULL,\n"); - strcat (sql, "srid INTEGER NOT NULL,\n"); - strcat (sql, "spatial_index_enabled INTEGER NOT NULL,\n"); - strcat (sql, "CONSTRAINT pk_geom_cols PRIMARY KEY "); - strcat (sql, "(f_table_name, f_geometry_column),\n"); - strcat (sql, "CONSTRAINT fk_gc_srs FOREIGN KEY "); - strcat (sql, "(srid) REFERENCES spatial_ref_sys (srid),\n"); - strcat (sql, "CONSTRAINT ck_gc_rtree CHECK "); - strcat (sql, "(spatial_index_enabled IN (0,1,2)))"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, - "table successfully created"); -/* creating an INDEX corresponding to the SRID FK */ - strcpy (sql, "CREATE INDEX idx_srid_geocols ON geometry_columns\n"); - strcat (sql, "(srid) "); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } -/* creating the GEOMETRY_COLUMNS triggers */ - strcpy (sql, "CREATE TRIGGER geometry_columns_f_table_name_insert\n"); - strcat (sql, "BEFORE INSERT ON 'geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns violates constraint: "); - strcat (sql, "f_table_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns violates constraint: "); - strcat (sql, "f_table_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns violates constraint: \n"); - strcat (sql, "f_table_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, - "trigger 'geometry_columns_f_table_name_insert' successfully created"); - strcpy (sql, "CREATE TRIGGER geometry_columns_f_table_name_update\n"); - strcat (sql, "BEFORE UPDATE OF 'f_table_name' ON 'geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: "); - strcat (sql, "f_table_name value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: "); - strcat (sql, "f_table_name value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: "); - strcat (sql, "f_table_name value must be lower case')\n"); - strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, - "trigger 'geometry_columns_f_table_name_update' successfully created"); - strcpy (sql, "CREATE TRIGGER geometry_columns_f_geometry_column_insert\n"); - strcat (sql, "BEFORE INSERT ON 'geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns violates constraint: \n"); - strcat (sql, "f_geometry_column value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'insert on geometry_columns violates constraint: "); - strcat (sql, "f_geometry_column value must be lower case')\n"); - strcat (sql, - "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, - "trigger 'geometry_columns_f_geometry_column_insert' successfully created"); - strcpy (sql, "CREATE TRIGGER geometry_columns_f_geometry_column_update\n"); - strcat (sql, - "BEFORE UPDATE OF 'f_geometry_column' ON 'geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a single quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: "); - strcat (sql, "f_geometry_column value must not contain a double quote')\n"); - strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); - strcat (sql, - "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: "); - strcat (sql, "f_geometry_column value must be lower case')\n"); - strcat (sql, - "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, - "trigger 'geometry_columns_f_geometry_column_update' successfully created"); - strcpy (sql, "CREATE TRIGGER geometry_columns_geometry_type_insert\n"); - strcat (sql, "BEFORE INSERT ON 'geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, "SELECT RAISE(ABORT,'geometry_type must be one of "); - strcat (sql, "0,1,2,3,4,5,6,7,"); - strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); - strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); - strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007')\n"); - strcat (sql, "WHERE NOT(NEW.geometry_type IN (0,1,2,3,4,5,6,7,"); - strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); - strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); - strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007));\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, - "trigger 'geometry_columns_geometry_type_insert' successfully created"); - strcpy (sql, "CREATE TRIGGER geometry_columns_geometry_type_update\n"); - strcat (sql, "BEFORE UPDATE OF 'geometry_type' ON 'geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, "SELECT RAISE(ABORT,'geometry_type must be one of "); - strcat (sql, "0,1,2,3,4,5,6,7,"); - strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); - strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); - strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007')\n"); - strcat (sql, "WHERE NOT(NEW.geometry_type IN (0,1,2,3,4,5,6,7,"); - strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); - strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); - strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007));\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, - "trigger 'geometry_columns_geometry_type_update' successfully created"); - strcpy (sql, "CREATE TRIGGER geometry_columns_coord_dimension_insert\n"); - strcat (sql, "BEFORE INSERT ON 'geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'coord_dimension must be one of 2,3,4')\n"); - strcat (sql, "WHERE NOT(NEW.coord_dimension IN (2,3,4));\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, - "trigger 'geometry_columns_coord_dimension_insert' successfully created"); - strcpy (sql, "CREATE TRIGGER geometry_columns_coord_dimension_update\n"); - strcat (sql, "BEFORE UPDATE OF 'coord_dimension' ON 'geometry_columns'\n"); - strcat (sql, "FOR EACH ROW BEGIN\n"); - strcat (sql, - "SELECT RAISE(ABORT,'coord_dimension must be one of 2,3,4')\n"); - strcat (sql, "WHERE NOT(NEW.coord_dimension IN (2,3,4));\n"); - strcat (sql, "END"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("SQL error: %s: %s\n", sql, errMsg); - sqlite3_free (errMsg); - return 0; - } - updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, - "trigger 'geometry_columns_coord_dimension_update' successfully created"); - return 1; -} - -SPATIALITE_PRIVATE void -updateGeometryTriggers (void *p_sqlite, const char *table, const char *column) -{ -/* updates triggers for some Spatial Column */ - sqlite3 *sqlite = (sqlite3 *) p_sqlite; - int ret; - int col_index; - const char *col_dims; - int index; - int cached; - int dims; - char *txt_dims; - int len; - char *errMsg = NULL; - char *sql_statement; - char *raw; - char *quoted_trigger; - char *quoted_rtree; - char *quoted_table; - char *quoted_column; - char *p_table = NULL; - char *p_column = NULL; - sqlite3_stmt *stmt; - struct spatial_index_str *first_idx = NULL; - struct spatial_index_str *last_idx = NULL; - struct spatial_index_str *curr_idx; - struct spatial_index_str *next_idx; - int metadata_version = checkSpatialMetaData (sqlite); - - if (!getRealSQLnames (sqlite, table, column, &p_table, &p_column)) - { - spatialite_e - ("updateTableTriggers() error: not existing Table or Column\n"); - return; - } - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - sql_statement = sqlite3_mprintf ("SELECT spatial_index_enabled " - "FROM geometry_columns WHERE Lower(f_table_name) = Lower(?) " - "AND Lower(f_geometry_column) = Lower(?)"); - } - else - { - /* legacy metadata style <= v.3.1.0 */ - sql_statement = - sqlite3_mprintf ("SELECT spatial_index_enabled, coord_dimension " - "FROM geometry_columns WHERE Lower(f_table_name) = Lower(?) " - "AND Lower(f_geometry_column) = Lower(?)"); - } -/* compiling SQL prepared statement */ - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("updateTableTriggers: error %d \"%s\"\n", - sqlite3_errcode (sqlite), sqlite3_errmsg (sqlite)); - return; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - col_index = sqlite3_column_int (stmt, 0); - if (metadata_version == 1) - { - /* legacy metadata style <= v.3.1.0 */ - col_dims = (const char *) sqlite3_column_text (stmt, 1); - dims = GAIA_XY; - if (strcasecmp (col_dims, "XYZ") == 0) - dims = GAIA_XY_Z; - if (strcasecmp (col_dims, "XYM") == 0) - dims = GAIA_XY_M; - if (strcasecmp (col_dims, "XYZM") == 0) - dims = GAIA_XY_Z_M; - switch (dims) - { - case GAIA_XY_Z: - txt_dims = "XYZ"; - break; - case GAIA_XY_M: - txt_dims = "XYM"; - break; - case GAIA_XY_Z_M: - txt_dims = "XYZM"; - break; - default: - txt_dims = "XY"; - break; - }; - } - index = 0; - cached = 0; - if (col_index == 1) - index = 1; - if (col_index == 2) - cached = 1; - - /* trying to delete old versions [v2.0, v2.2] triggers[if any] */ - raw = sqlite3_mprintf ("gti_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("gtu_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("gsi_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("gsu_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - /* end deletion old versions [v2.0, v2.2] triggers[if any] */ - - /* deleting the old INSERT trigger TYPE [if any] */ - raw = sqlite3_mprintf ("ggi_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - /* inserting the new INSERT trigger TYPE */ - raw = sqlite3_mprintf ("ggi_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - quoted_column = gaiaDoubleQuotedSql (p_column); - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" BEFORE INSERT ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "SELECT RAISE(ROLLBACK, '%q.%q violates Geometry constraint [geom-type or SRID not allowed]')\n" - "WHERE (SELECT geometry_type FROM geometry_columns\n" - "WHERE Lower(f_table_name) = Lower(%Q) AND " - "Lower(f_geometry_column) = Lower(%Q)\n" - "AND GeometryConstraints(NEW.\"%s\", geometry_type, srid) = 1) IS NULL;\nEND", - quoted_trigger, quoted_table, p_table, p_column, - p_table, p_column, quoted_column); - free (quoted_trigger); - free (quoted_table); - free (quoted_column); - } - else - { - /* legacy metadata style <= v.3.1.0 */ - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" BEFORE INSERT ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "SELECT RAISE(ROLLBACK, '%q.%q violates Geometry constraint [geom-type or SRID not allowed]')\n" - "WHERE (SELECT type FROM geometry_columns\n" - "WHERE f_table_name = %Q AND f_geometry_column = %Q\n" - "AND GeometryConstraints(NEW.\"%s\", type, srid, %Q) = 1) IS NULL;\nEND", - quoted_trigger, quoted_table, p_table, p_column, - p_table, p_column, quoted_column, txt_dims); - free (quoted_trigger); - free (quoted_table); - free (quoted_column); - } - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - /* deleting the old UPDATE trigger TYPE [if any] */ - raw = sqlite3_mprintf ("ggu_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - /* inserting the new UPDATE trigger TYPE */ - raw = sqlite3_mprintf ("ggu_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - quoted_column = gaiaDoubleQuotedSql (p_column); - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" BEFORE UPDATE ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "SELECT RAISE(ROLLBACK, '%q.%q violates Geometry constraint [geom-type or SRID not allowed]')\n" - "WHERE (SELECT geometry_type FROM geometry_columns\n" - "WHERE Lower(f_table_name) = Lower(%Q) AND " - "Lower(f_geometry_column) = Lower(%Q)\n" - "AND GeometryConstraints(NEW.\"%s\", geometry_type, srid) = 1) IS NULL;\nEND", - quoted_trigger, quoted_table, p_table, p_column, - p_table, p_column, quoted_column); - free (quoted_trigger); - free (quoted_table); - free (quoted_column); - } - else - { - /* legacy metadata style <= v.3.1.0 */ - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" BEFORE UPDATE ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "SELECT RAISE(ROLLBACK, '%q.%q violates Geometry constraint [geom-type or SRID not allowed]')\n" - "WHERE (SELECT type FROM geometry_columns\n" - "WHERE f_table_name = %Q AND f_geometry_column = %Q\n" - "AND GeometryConstraints(NEW.\"%s\", type, srid, %Q) = 1) IS NULL;\nEND", - quoted_trigger, quoted_table, p_table, p_column, - p_table, p_column, quoted_column, txt_dims); - free (quoted_trigger); - free (quoted_table); - free (quoted_column); - } - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - /* inserting SpatialIndex information into the linked list */ - curr_idx = malloc (sizeof (struct spatial_index_str)); - len = strlen (p_table); - curr_idx->TableName = malloc (len + 1); - strcpy (curr_idx->TableName, p_table); - len = strlen (p_column); - curr_idx->ColumnName = malloc (len + 1); - strcpy (curr_idx->ColumnName, p_column); - curr_idx->ValidRtree = (char) index; - curr_idx->ValidCache = (char) cached; - curr_idx->Next = NULL; - if (!first_idx) - first_idx = curr_idx; - if (last_idx) - last_idx->Next = curr_idx; - last_idx = curr_idx; - - /* deleting the old INSERT trigger SPATIAL_INDEX [if any] */ - raw = sqlite3_mprintf ("gii_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - if (metadata_version == 3) - { - /* deleting the old UPDATE (timestamp) trigger [if any] */ - raw = sqlite3_mprintf ("tmu_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = - sqlite3_exec (sqlite, sql_statement, NULL, NULL, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - /* deleting the old INSERT (timestamp) trigger [if any] */ - raw = sqlite3_mprintf ("tmi_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = - sqlite3_exec (sqlite, sql_statement, NULL, NULL, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - /* deleting the old DELETE (timestamp) trigger [if any] */ - raw = sqlite3_mprintf ("tmd_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = - sqlite3_exec (sqlite, sql_statement, NULL, NULL, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - } - - if (index == 0 && cached == 0) - { - - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - - /* inserting the new UPDATE (timestamp) trigger */ - raw = - sqlite3_mprintf ("tmu_%s_%s", p_table, - p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" AFTER UPDATE ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "UPDATE geometry_columns_time SET last_update = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" - "WHERE Lower(f_table_name) = Lower(%Q) AND " - "Lower(f_geometry_column) = Lower(%Q);\nEND", - quoted_trigger, quoted_table, p_table, - p_column); - free (quoted_trigger); - free (quoted_table); - ret = - sqlite3_exec (sqlite, sql_statement, NULL, NULL, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - /* inserting the new INSERT (timestamp) trigger */ - raw = - sqlite3_mprintf ("tmi_%s_%s", p_table, - p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" AFTER INSERT ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "UPDATE geometry_columns_time SET last_insert = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" - "WHERE Lower(f_table_name) = Lower(%Q) AND " - "Lower(f_geometry_column) = Lower(%Q);\nEND", - quoted_trigger, quoted_table, p_table, - p_column); - free (quoted_trigger); - free (quoted_table); - ret = - sqlite3_exec (sqlite, sql_statement, NULL, NULL, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - /* inserting the new DELETE (timestamp) trigger */ - raw = - sqlite3_mprintf ("tmd_%s_%s", p_table, - p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" AFTER DELETE ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "UPDATE geometry_columns_time SET last_delete = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" - "WHERE Lower(f_table_name) = Lower(%Q) AND " - "Lower(f_geometry_column) = Lower(%Q);\nEND", - quoted_trigger, quoted_table, p_table, - p_column); - free (quoted_trigger); - free (quoted_table); - ret = - sqlite3_exec (sqlite, sql_statement, NULL, NULL, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - } - } - - /* deleting the old INSERT trigger SPATIAL_INDEX [if any] */ - raw = sqlite3_mprintf ("gid_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - /* deleting the old UPDATE trigger SPATIAL_INDEX [if any] */ - raw = sqlite3_mprintf ("giu_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - /* deleting the old DELETE trigger SPATIAL_INDEX [if any] */ - raw = sqlite3_mprintf ("gid_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - /* deleting the old INSERT trigger MBR_CACHE [if any] */ - raw = sqlite3_mprintf ("gci_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - /* deleting the old UPDATE trigger MBR_CACHE [if any] */ - raw = sqlite3_mprintf ("gcu_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - /* deleting the old UPDATE trigger MBR_CACHE [if any] */ - raw = sqlite3_mprintf ("gcd_%s_%s", p_table, p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = - sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", - quoted_trigger); - free (quoted_trigger); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - if (index) - { - /* inserting the new INSERT trigger RTree */ - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - raw = - sqlite3_mprintf ("gii_%s_%s", p_table, - p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - raw = - sqlite3_mprintf ("idx_%s_%s", p_table, - p_column); - quoted_rtree = gaiaDoubleQuotedSql (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - quoted_column = gaiaDoubleQuotedSql (p_column); - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" AFTER INSERT ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "UPDATE geometry_columns_time SET last_insert = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" - "WHERE Lower(f_table_name) = Lower(%Q) AND " - "Lower(f_geometry_column) = Lower(%Q);\n" - "DELETE FROM \"%s\" WHERE pkid=NEW.ROWID;\n" - "SELECT RTreeAlign(%Q, NEW.ROWID, NEW.\"%s\");\nEND", - quoted_trigger, quoted_table, p_table, - p_column, quoted_rtree, raw, quoted_column); - sqlite3_free (raw); - free (quoted_trigger); - free (quoted_rtree); - free (quoted_table); - free (quoted_column); - } - else - { - /* legacy metadata style <= v.3.1.0 */ - raw = - sqlite3_mprintf ("gii_%s_%s", p_table, - p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - raw = - sqlite3_mprintf ("idx_%s_%s", p_table, - p_column); - quoted_rtree = gaiaDoubleQuotedSql (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - quoted_column = gaiaDoubleQuotedSql (p_column); - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" AFTER INSERT ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "DELETE FROM \"%s\" WHERE pkid=NEW.ROWID;\n" - "SELECT RTreeAlign(%Q, NEW.ROWID, NEW.\"%s\");\nEND", - quoted_trigger, quoted_table, quoted_rtree, - raw, quoted_column); - sqlite3_free (raw); - free (quoted_trigger); - free (quoted_rtree); - free (quoted_table); - free (quoted_column); - } - ret = - sqlite3_exec (sqlite, sql_statement, NULL, NULL, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - /* inserting the new UPDATE trigger RTree */ - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - raw = - sqlite3_mprintf ("giu_%s_%s", p_table, - p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - raw = - sqlite3_mprintf ("idx_%s_%s", p_table, - p_column); - quoted_rtree = gaiaDoubleQuotedSql (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - quoted_column = gaiaDoubleQuotedSql (p_column); - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" AFTER UPDATE ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "UPDATE geometry_columns_time SET last_update = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" - "WHERE Lower(f_table_name) = Lower(%Q) AND " - "Lower(f_geometry_column) = Lower(%Q);\n" - "DELETE FROM \"%s\" WHERE pkid=NEW.ROWID;\n" - "SELECT RTreeAlign(%Q, NEW.ROWID, NEW.\"%s\");\nEND", - quoted_trigger, quoted_table, p_table, - p_column, quoted_rtree, raw, quoted_column); - sqlite3_free (raw); - free (quoted_trigger); - free (quoted_rtree); - free (quoted_table); - free (quoted_column); - } - else - { - /* legacy metadata style <= v.3.1.0 */ - raw = - sqlite3_mprintf ("giu_%s_%s", p_table, - p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - raw = - sqlite3_mprintf ("idx_%s_%s", p_table, - p_column); - quoted_rtree = gaiaDoubleQuotedSql (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - quoted_column = gaiaDoubleQuotedSql (p_column); - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" AFTER UPDATE ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "DELETE FROM \"%s\" WHERE pkid=NEW.ROWID;\n" - "SELECT RTreeAlign(%Q, NEW.ROWID, NEW.\"%s\");\nEND", - quoted_trigger, quoted_table, quoted_rtree, - raw, quoted_column); - sqlite3_free (raw); - free (quoted_trigger); - free (quoted_rtree); - free (quoted_table); - free (quoted_column); - } - ret = - sqlite3_exec (sqlite, sql_statement, NULL, NULL, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - /* inserting the new DELETE trigger RTree */ - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - raw = - sqlite3_mprintf ("gid_%s_%s", p_table, - p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - raw = - sqlite3_mprintf ("idx_%s_%s", p_table, - p_column); - quoted_rtree = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - quoted_column = gaiaDoubleQuotedSql (p_column); - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" AFTER DELETE ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "UPDATE geometry_columns_time SET last_delete = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" - "WHERE Lower(f_table_name) = Lower(%Q) AND " - "Lower(f_geometry_column) = Lower(%Q);\n" - "DELETE FROM \"%s\" WHERE pkid=OLD.ROWID;\nEND", - quoted_trigger, quoted_table, p_table, - p_column, quoted_rtree); - free (quoted_trigger); - free (quoted_rtree); - free (quoted_table); - free (quoted_column); - } - else - { - /* legacy metadata style <= v.3.1.0 */ - raw = - sqlite3_mprintf ("gid_%s_%s", p_table, - p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - raw = - sqlite3_mprintf ("idx_%s_%s", p_table, - p_column); - quoted_rtree = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - quoted_column = gaiaDoubleQuotedSql (p_column); - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" AFTER DELETE ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "DELETE FROM \"%s\" WHERE pkid=OLD.ROWID;\nEND", - quoted_trigger, quoted_table, quoted_rtree); - free (quoted_trigger); - free (quoted_rtree); - free (quoted_table); - free (quoted_column); - } - ret = - sqlite3_exec (sqlite, sql_statement, NULL, NULL, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - } - - if (cached) - { - /* inserting the new INSERT trigger MBRcache */ - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - raw = - sqlite3_mprintf ("gci_%s_%s", p_table, - p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - raw = - sqlite3_mprintf ("cache_%s_%s", p_table, - p_column); - quoted_rtree = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - quoted_column = gaiaDoubleQuotedSql (p_column); - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" AFTER INSERT ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "UPDATE geometry_columns_time SET last_insert = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" - "WHERE Lower(f_table_name) = Lower(%Q) AND " - "Lower(f_geometry_column) = Lower(%Q);\n" - "INSERT INTO \"%s\" (rowid, mbr) VALUES (NEW.ROWID,\nBuildMbrFilter(" - "MbrMinX(NEW.\"%s\"), MbrMinY(NEW.\"%s\"), MbrMaxX(NEW.\"%s\"), MbrMaxY(NEW.\"%s\")));\nEND", - quoted_trigger, quoted_table, p_table, - p_column, quoted_rtree, quoted_column, - quoted_column, quoted_column, quoted_column); - free (quoted_trigger); - free (quoted_rtree); - free (quoted_table); - free (quoted_column); - } - else - { - /* legacy metadata style <= v.3.1.0 */ - raw = - sqlite3_mprintf ("gci_%s_%s", p_table, - p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - raw = - sqlite3_mprintf ("cache_%s_%s", p_table, - p_column); - quoted_rtree = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - quoted_column = gaiaDoubleQuotedSql (p_column); - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" AFTER INSERT ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "INSERT INTO \"%s\" (rowid, mbr) VALUES (NEW.ROWID,\nBuildMbrFilter(" - "MbrMinX(NEW.\"%s\"), MbrMinY(NEW.\"%s\"), MbrMaxX(NEW.\"%s\"), MbrMaxY(NEW.\"%s\")));\nEND", - quoted_trigger, quoted_table, quoted_rtree, - quoted_column, quoted_column, quoted_column, - quoted_column); - free (quoted_trigger); - free (quoted_rtree); - free (quoted_table); - free (quoted_column); - } - ret = - sqlite3_exec (sqlite, sql_statement, NULL, NULL, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - /* inserting the new UPDATE trigger MBRcache */ - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - raw = - sqlite3_mprintf ("gcu_%s_%s", p_table, - p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - raw = - sqlite3_mprintf ("cache_%s_%s", p_table, - p_column); - quoted_rtree = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - quoted_column = gaiaDoubleQuotedSql (p_column); - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" AFTER UPDATE ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "UPDATE geometry_columns_time SET last_update = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" - "WHERE Lower(f_table_name) = Lower(%Q) AND " - "Lower(f_geometry_column) = Lower(%Q);\n" - "UPDATE \"%s\" SET mbr = BuildMbrFilter(" - "MbrMinX(NEW.\"%s\"), MbrMinY(NEW.\"%s\"), MbrMaxX(NEW.\"%s\"), MbrMaxY(NEW.\"%s\"))\n" - "WHERE rowid = NEW.ROWID;\nEND", - quoted_trigger, quoted_table, p_table, - p_column, quoted_rtree, - quoted_column, quoted_column, quoted_column, - quoted_column); - free (quoted_trigger); - free (quoted_rtree); - free (quoted_table); - free (quoted_column); - } - else - { - /* legacy metadata style <= v.3.1.0 */ - raw = - sqlite3_mprintf ("gcu_%s_%s", p_table, - p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - raw = - sqlite3_mprintf ("cache_%s_%s", p_table, - p_column); - quoted_rtree = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - quoted_column = gaiaDoubleQuotedSql (p_column); - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" AFTER UPDATE ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "UPDATE \"%s\" SET mbr = BuildMbrFilter(" - "MbrMinX(NEW.\"%s\"), MbrMinY(NEW.\"%s\"), MbrMaxX(NEW.\"%s\"), MbrMaxY(NEW.\"%s\"))\n" - "WHERE rowid = NEW.ROWID;\nEND", - quoted_trigger, quoted_table, quoted_rtree, - quoted_column, quoted_column, quoted_column, - quoted_column); - free (quoted_trigger); - free (quoted_rtree); - free (quoted_table); - free (quoted_column); - } - ret = - sqlite3_exec (sqlite, sql_statement, NULL, NULL, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - /* inserting the new DELETE trigger MBRcache */ - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - raw = - sqlite3_mprintf ("gcd_%s_%s", p_table, - p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - raw = - sqlite3_mprintf ("cache_%s_%s", p_table, - p_column); - quoted_rtree = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" AFTER DELETE ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "UPDATE geometry_columns_time SET last_delete = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" - "WHERE Lower(f_table_name) = Lower(%Q) AND " - "Lower(f_geometry_column) = Lower(%Q);\n" - "DELETE FROM \"%s\" WHERE rowid = OLD.ROWID;\nEND", - quoted_trigger, quoted_table, p_table, - p_column, quoted_rtree); - free (quoted_trigger); - free (quoted_rtree); - free (quoted_table); - } - else - { - /* legacy metadata style <= v.3.1.0 */ - raw = - sqlite3_mprintf ("gcd_%s_%s", p_table, - p_column); - quoted_trigger = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - raw = - sqlite3_mprintf ("cache_%s_%s", p_table, - p_column); - quoted_rtree = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - quoted_table = gaiaDoubleQuotedSql (p_table); - quoted_column = gaiaDoubleQuotedSql (p_column); - sql_statement = - sqlite3_mprintf - ("CREATE TRIGGER \"%s\" AFTER DELETE ON \"%s\"\n" - "FOR EACH ROW BEGIN\n" - "DELETE FROM \"%s\" WHERE rowid = OLD.ROWID;\nEND", - quoted_trigger, quoted_table, quoted_rtree); - free (quoted_trigger); - free (quoted_rtree); - free (quoted_table); - } - ret = - sqlite3_exec (sqlite, sql_statement, NULL, NULL, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - } - - } - } - ret = sqlite3_finalize (stmt); -/* now we'll adjust any related SpatialIndex as required */ - curr_idx = first_idx; - while (curr_idx) - { - if (curr_idx->ValidRtree) - { - /* building RTree SpatialIndex */ - raw = sqlite3_mprintf ("idx_%s_%s", curr_idx->TableName, - curr_idx->ColumnName); - quoted_rtree = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("CREATE VIRTUAL TABLE \"%s\" " - "USING rtree(pkid, xmin, xmax, ymin, ymax)", - quoted_rtree); - free (quoted_rtree); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - buildSpatialIndex (sqlite, - (unsigned char *) (curr_idx->TableName), - curr_idx->ColumnName); - } - if (curr_idx->ValidCache) - { - /* building MbrCache SpatialIndex */ - raw = sqlite3_mprintf ("cache_%s_%s", curr_idx->TableName, - curr_idx->ColumnName); - quoted_rtree = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - quoted_table = gaiaDoubleQuotedSql (curr_idx->TableName); - quoted_column = gaiaDoubleQuotedSql (curr_idx->ColumnName); - sql_statement = sqlite3_mprintf ("CREATE VIRTUAL TABLE \"%s\" " - "USING MbrCache(\"%s\", \"%s\")", - quoted_rtree, quoted_table, - quoted_column); - free (quoted_rtree); - free (quoted_table); - free (quoted_column); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - } - curr_idx = curr_idx->Next; - } - goto index_cleanup; - error: - spatialite_e ("updateTableTriggers: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - index_cleanup: - curr_idx = first_idx; - while (curr_idx) - { - next_idx = curr_idx->Next; - if (curr_idx->TableName) - free (curr_idx->TableName); - if (curr_idx->ColumnName) - free (curr_idx->ColumnName); - free (curr_idx); - curr_idx = next_idx; - } - if (p_table) - free (p_table); - if (p_column) - free (p_column); -} - -SPATIALITE_PRIVATE void -buildSpatialIndex (void *p_sqlite, const unsigned char *table, - const char *column) -{ -/* loading a SpatialIndex [RTree] */ - sqlite3 *sqlite = (sqlite3 *) p_sqlite; - char *raw; - char *quoted_rtree; - char *quoted_table; - char *quoted_column; - char *sql_statement; - char *errMsg = NULL; - int ret; - - raw = sqlite3_mprintf ("idx_%s_%s", table, column); - quoted_rtree = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - quoted_table = gaiaDoubleQuotedSql ((const char *) table); - quoted_column = gaiaDoubleQuotedSql (column); - sql_statement = sqlite3_mprintf ("INSERT INTO \"%s\" " - "(pkid, xmin, xmax, ymin, ymax) " - "SELECT ROWID, MbrMinX(\"%s\"), MbrMaxX(\"%s\"), MbrMinY(\"%s\"), MbrMaxY(\"%s\") " - "FROM \"%s\" WHERE MbrMinX(\"%s\") IS NOT NULL", - quoted_rtree, quoted_column, quoted_column, - quoted_column, quoted_column, quoted_table, - quoted_column); - free (quoted_rtree); - free (quoted_table); - free (quoted_column); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("buildSpatialIndex error: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - } -} - -SPATIALITE_PRIVATE int -getRealSQLnames (void *p_sqlite, const char *table, const char *column, - char **real_table, char **real_column) -{ -/* attempting to retrieve the "real" table and column names (upper/lowercase) */ - sqlite3 *sqlite = (sqlite3 *) p_sqlite; - char *p_table = NULL; - char *p_column = NULL; - char *sql_statement; - char *quoted; - const char *name; - int len; - sqlite3_stmt *stmt; - int ret; - - sql_statement = sqlite3_mprintf ("SELECT name " - "FROM sqlite_master WHERE type = 'table' " - "AND Lower(name) = Lower(?)"); -/* compiling SQL prepared statement */ - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("real_names: error %d \"%s\"\n", - sqlite3_errcode (sqlite), sqlite3_errmsg (sqlite)); - return 0; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - name = (const char *) sqlite3_column_text (stmt, 0); - len = sqlite3_column_bytes (stmt, 0); - if (p_table) - free (p_table); - p_table = malloc (len + 1); - strcpy (p_table, name); - } - } - sqlite3_finalize (stmt); - - if (p_table == NULL) - return 0; - - quoted = gaiaDoubleQuotedSql (p_table); - sql_statement = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", quoted); - free (quoted); -/* compiling SQL prepared statement */ - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("real_names: error %d \"%s\"\n", - sqlite3_errcode (sqlite), sqlite3_errmsg (sqlite)); - free (p_table); - return 0; - } - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - name = (const char *) sqlite3_column_text (stmt, 1); - len = sqlite3_column_bytes (stmt, 1); - if (strcasecmp (name, column) == 0) - { - if (p_column) - free (p_column); - p_column = malloc (len + 1); - strcpy (p_column, name); - } - } - } - sqlite3_finalize (stmt); - - if (p_column == NULL) - { - free (p_table); - return 0; - } - - *real_table = p_table; - *real_column = p_column; - return 1; -} - -static void -addLayerAttributeField (gaiaVectorLayersListPtr list, const char *table_name, - const char *geometry_column, int ordinal, - const char *column_name, int null_values, - int integer_values, int double_values, int text_values, - int blob_values, int null_max_size, int max_size, - int null_int_range, sqlite3_int64 integer_min, - sqlite3_int64 integer_max, int null_double_range, - double double_min, double double_max) -{ -/* adding some AttributeFiled to a VectorLayer */ - gaiaLayerAttributeFieldPtr fld; - int len; - gaiaVectorLayerPtr lyr = list->Current; - if (lyr) - { - if (strcasecmp (lyr->TableName, table_name) == 0 - && strcasecmp (lyr->GeometryName, geometry_column) == 0) - goto valid_pointer; - } - list->Current = NULL; - lyr = list->First; - while (lyr) - { - if (strcasecmp (lyr->TableName, table_name) == 0 - && strcasecmp (lyr->GeometryName, geometry_column) == 0) - { - list->Current = lyr; - goto valid_pointer; - } - lyr = lyr->Next; - } - valid_pointer: - lyr = list->Current; - if (lyr == NULL) - return; - fld = malloc (sizeof (gaiaLayerAttributeField)); - fld->Ordinal = ordinal; - len = strlen (column_name); - fld->AttributeFieldName = malloc (len + 1); - strcpy (fld->AttributeFieldName, column_name); - fld->NullValuesCount = null_values; - fld->IntegerValuesCount = integer_values; - fld->DoubleValuesCount = double_values; - fld->TextValuesCount = text_values; - fld->BlobValuesCount = blob_values; - fld->MaxSize = NULL; - fld->IntRange = NULL; - fld->DoubleRange = NULL; - if (!null_max_size) - { - fld->MaxSize = malloc (sizeof (gaiaAttributeFieldMaxSize)); - fld->MaxSize->MaxSize = max_size; - } - if (!null_int_range) - { - fld->IntRange = malloc (sizeof (gaiaAttributeFieldIntRange)); - fld->IntRange->MinValue = integer_min; - fld->IntRange->MaxValue = integer_max; - } - if (!null_double_range) - { - fld->DoubleRange = malloc (sizeof (gaiaAttributeFieldDoubleRange)); - fld->DoubleRange->MinValue = double_min; - fld->DoubleRange->MaxValue = double_max; - } - fld->Next = NULL; - if (lyr->First == NULL) - lyr->First = fld; - if (lyr->Last != NULL) - lyr->Last->Next = fld; - lyr->Last = fld; -} - -static void -addVectorLayer (gaiaVectorLayersListPtr list, const char *layer_type, - const char *table_name, const char *geometry_column, - int geometry_type, int srid, int spatial_index) -{ -/* adding a Layer to a VectorLayersList */ - int len; - gaiaVectorLayerPtr lyr = malloc (sizeof (gaiaVectorLayer)); - lyr->LayerType = GAIA_VECTOR_UNKNOWN; - if (strcasecmp (layer_type, "SpatialTable") == 0) - lyr->LayerType = GAIA_VECTOR_TABLE; - if (strcasecmp (layer_type, "SpatialView") == 0) - lyr->LayerType = GAIA_VECTOR_VIEW; - if (strcasecmp (layer_type, "VirtualShape") == 0) - lyr->LayerType = GAIA_VECTOR_VIRTUAL; - len = strlen (table_name); - lyr->TableName = malloc (len + 1); - strcpy (lyr->TableName, table_name); - len = strlen (geometry_column); - lyr->GeometryName = malloc (len + 1); - strcpy (lyr->GeometryName, geometry_column); - lyr->Srid = srid; - switch (geometry_type) - { - case 0: - lyr->GeometryType = GAIA_VECTOR_GEOMETRY; - lyr->Dimensions = GAIA_XY; - break; - case 1000: - lyr->GeometryType = GAIA_VECTOR_GEOMETRY; - lyr->Dimensions = GAIA_XY_Z; - break; - case 2000: - lyr->GeometryType = GAIA_VECTOR_GEOMETRY; - lyr->Dimensions = GAIA_XY_M; - break; - case 3000: - lyr->GeometryType = GAIA_VECTOR_GEOMETRY; - lyr->Dimensions = GAIA_XY_Z_M; - break; - case 1: - lyr->GeometryType = GAIA_VECTOR_POINT; - lyr->Dimensions = GAIA_XY; - break; - case 1001: - lyr->GeometryType = GAIA_VECTOR_POINT; - lyr->Dimensions = GAIA_XY_Z; - break; - case 2001: - lyr->GeometryType = GAIA_VECTOR_POINT; - lyr->Dimensions = GAIA_XY_M; - break; - case 3001: - lyr->GeometryType = GAIA_VECTOR_POINT; - lyr->Dimensions = GAIA_XY_Z_M; - break; - case 2: - lyr->GeometryType = GAIA_VECTOR_LINESTRING; - lyr->Dimensions = GAIA_XY; - break; - case 1002: - lyr->GeometryType = GAIA_VECTOR_LINESTRING; - lyr->Dimensions = GAIA_XY_Z; - break; - case 2002: - lyr->GeometryType = GAIA_VECTOR_LINESTRING; - lyr->Dimensions = GAIA_XY_M; - break; - case 3002: - lyr->GeometryType = GAIA_VECTOR_LINESTRING; - lyr->Dimensions = GAIA_XY_Z_M; - break; - case 3: - lyr->GeometryType = GAIA_VECTOR_POLYGON; - lyr->Dimensions = GAIA_XY; - break; - case 1003: - lyr->GeometryType = GAIA_VECTOR_POLYGON; - lyr->Dimensions = GAIA_XY_Z; - break; - case 2003: - lyr->GeometryType = GAIA_VECTOR_POLYGON; - lyr->Dimensions = GAIA_XY_M; - break; - case 3003: - lyr->GeometryType = GAIA_VECTOR_POLYGON; - lyr->Dimensions = GAIA_XY_Z_M; - break; - case 4: - lyr->GeometryType = GAIA_VECTOR_MULTIPOINT; - lyr->Dimensions = GAIA_XY; - break; - case 1004: - lyr->GeometryType = GAIA_VECTOR_MULTIPOINT; - lyr->Dimensions = GAIA_XY_Z; - break; - case 2004: - lyr->GeometryType = GAIA_VECTOR_MULTIPOINT; - lyr->Dimensions = GAIA_XY_M; - break; - case 3004: - lyr->GeometryType = GAIA_VECTOR_MULTIPOINT; - lyr->Dimensions = GAIA_XY_Z_M; - break; - case 5: - lyr->GeometryType = GAIA_VECTOR_MULTILINESTRING; - lyr->Dimensions = GAIA_XY; - break; - case 1005: - lyr->GeometryType = GAIA_VECTOR_MULTILINESTRING; - lyr->Dimensions = GAIA_XY_Z; - break; - case 2005: - lyr->GeometryType = GAIA_VECTOR_MULTILINESTRING; - lyr->Dimensions = GAIA_XY_M; - break; - case 3005: - lyr->GeometryType = GAIA_VECTOR_MULTILINESTRING; - lyr->Dimensions = GAIA_XY_Z_M; - break; - case 6: - lyr->GeometryType = GAIA_VECTOR_MULTIPOLYGON; - lyr->Dimensions = GAIA_XY; - break; - case 1006: - lyr->GeometryType = GAIA_VECTOR_MULTIPOLYGON; - lyr->Dimensions = GAIA_XY_Z; - break; - case 2006: - lyr->GeometryType = GAIA_VECTOR_MULTIPOLYGON; - lyr->Dimensions = GAIA_XY_M; - break; - case 3006: - lyr->GeometryType = GAIA_VECTOR_MULTIPOLYGON; - lyr->Dimensions = GAIA_XY_Z_M; - break; - case 7: - lyr->GeometryType = GAIA_VECTOR_GEOMETRYCOLLECTION; - lyr->Dimensions = GAIA_XY; - break; - case 1007: - lyr->GeometryType = GAIA_VECTOR_GEOMETRYCOLLECTION; - lyr->Dimensions = GAIA_XY_Z; - break; - case 2007: - lyr->GeometryType = GAIA_VECTOR_GEOMETRYCOLLECTION; - lyr->Dimensions = GAIA_XY_M; - break; - case 3007: - lyr->GeometryType = GAIA_VECTOR_GEOMETRYCOLLECTION; - lyr->Dimensions = GAIA_XY_Z_M; - break; - default: - lyr->GeometryType = GAIA_VECTOR_UNKNOWN; - lyr->Dimensions = GAIA_VECTOR_UNKNOWN; - break; - }; - switch (spatial_index) - { - case 0: - lyr->SpatialIndex = GAIA_SPATIAL_INDEX_NONE; - break; - case 1: - lyr->SpatialIndex = GAIA_SPATIAL_INDEX_RTREE; - break; - case 2: - lyr->SpatialIndex = GAIA_SPATIAL_INDEX_MBRCACHE; - break; - default: - lyr->SpatialIndex = GAIA_VECTOR_UNKNOWN; - break; - }; - lyr->ExtentInfos = NULL; - lyr->AuthInfos = NULL; - lyr->First = NULL; - lyr->Last = NULL; - lyr->Next = NULL; - list->Current = NULL; - if (list->First == NULL) - list->First = lyr; - if (list->Last != NULL) - list->Last->Next = lyr; - list->Last = lyr; -} - -static void -addVectorLayerExtent (gaiaVectorLayersListPtr list, const char *table_name, - const char *geometry_column, int count, double min_x, - double min_y, double max_x, double max_y) -{ -/* appending a LayerExtent object to the corresponding VectorLayer */ - gaiaVectorLayerPtr lyr = list->First; - while (lyr) - { - if (strcasecmp (lyr->TableName, table_name) == 0 - && strcasecmp (lyr->GeometryName, geometry_column) == 0) - { - lyr->ExtentInfos = malloc (sizeof (gaiaLayerExtent)); - lyr->ExtentInfos->Count = count; - lyr->ExtentInfos->MinX = min_x; - lyr->ExtentInfos->MinY = min_y; - lyr->ExtentInfos->MaxX = max_x; - lyr->ExtentInfos->MaxY = max_y; - return; - } - lyr = lyr->Next; - } -} - -static void -addVectorLayerAuth (gaiaVectorLayersListPtr list, const char *table_name, - const char *geometry_column, int read_only, int hidden) -{ -/* appending a LayerAuth object to the corresponding VectorLayer */ - gaiaVectorLayerPtr lyr = list->First; - while (lyr) - { - if (strcasecmp (lyr->TableName, table_name) == 0 - && strcasecmp (lyr->GeometryName, geometry_column) == 0) - { - gaiaLayerAuthPtr auth = malloc (sizeof (gaiaLayerAuth)); - lyr->AuthInfos = auth; - auth->IsReadOnly = read_only; - auth->IsHidden = hidden; - return; - } - lyr = lyr->Next; - } -} - -static void -freeLayerAttributeField (gaiaLayerAttributeFieldPtr fld) -{ -/* destroying an AttributeField */ - if (fld->AttributeFieldName) - free (fld->AttributeFieldName); - if (fld->MaxSize) - free (fld->MaxSize); - if (fld->IntRange) - free (fld->IntRange); - if (fld->DoubleRange) - free (fld->DoubleRange); - free (fld); -} - -static void -freeVectorLayer (gaiaVectorLayerPtr lyr) -{ -/* destroyng a VectorLayer object */ - gaiaLayerAttributeFieldPtr fld; - gaiaLayerAttributeFieldPtr fldn; - if (!lyr) - return; - if (lyr->TableName) - free (lyr->TableName); - if (lyr->GeometryName) - free (lyr->GeometryName); - if (lyr->ExtentInfos) - free (lyr->ExtentInfos); - if (lyr->AuthInfos) - free (lyr->AuthInfos); - fld = lyr->First; - while (fld) - { - fldn = fld->Next; - freeLayerAttributeField (fld); - fld = fldn; - } - free (lyr); -} - -SPATIALITE_DECLARE void -gaiaFreeVectorLayersList (gaiaVectorLayersListPtr list) -{ -/* destroying a VectorLayersList object */ - gaiaVectorLayerPtr lyr; - gaiaVectorLayerPtr lyr_n; - if (!list) - return; - lyr = list->First; - while (lyr) - { - /* destroying each layer */ - lyr_n = lyr->Next; - freeVectorLayer (lyr); - lyr = lyr_n; - } - free (list); -} - -static int -gaiaGetVectorLayersList_v4 (sqlite3 * handle, const char *table, - const char *geometry, gaiaVectorLayersListPtr list) -{ -/* creating a VectorLayersList object - v.4.0.0 DB layout */ - char *sql; - int ret; - sqlite3_stmt *stmt; - int error = 0; - -/* querying the vector_layers view */ - if (table == NULL) - sql = - sqlite3_mprintf - ("SELECT layer_type, table_name, geometry_column, geometry_type, " - "srid, spatial_index_enabled FROM vector_layers"); - else - { - if (geometry == NULL) - sql = - sqlite3_mprintf - ("SELECT layer_type, table_name, geometry_column, geometry_type, " - "srid, spatial_index_enabled FROM vector_layers " - "WHERE Lower(table_name) = Lower(%Q)", table); - else - sql = - sqlite3_mprintf - ("SELECT layer_type, table_name, geometry_column, geometry_type, " - "srid, spatial_index_enabled FROM vector_layers " - "WHERE Lower(table_name) = Lower(%Q) AND " - "Lower(geometry_column) = Lower(%Q)", table, geometry); - } -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - error = 1; - goto stop; - } - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* processing a VectorLayer row */ - const char *layer_type = - (const char *) sqlite3_column_text (stmt, 0); - const char *table_name = - (const char *) sqlite3_column_text (stmt, 1); - const char *geometry_column = - (const char *) sqlite3_column_text (stmt, 2); - int geometry_type = sqlite3_column_int (stmt, 3); - int srid = sqlite3_column_int (stmt, 4); - int spatial_index = sqlite3_column_int (stmt, 5); - addVectorLayer (list, layer_type, table_name, geometry_column, - geometry_type, srid, spatial_index); - } - else - error = 1; - } - ret = sqlite3_finalize (stmt); - - stop: - if (error) - return 0; - -/* querying the vector_layers_statistics view */ - if (table == NULL) - sql = - sqlite3_mprintf - ("SELECT table_name, geometry_column, row_count, extent_min_x, " - "extent_min_y, extent_max_x, extent_max_y FROM vector_layers_statistics"); - else - { - if (geometry == NULL) - sql = - sqlite3_mprintf - ("SELECT table_name, geometry_column, row_count, extent_min_x, " - "extent_min_y, extent_max_x, extent_max_y FROM vector_layers_statistics " - "WHERE Lower(table_name) = Lower(%Q)", table); - else - sql = - sqlite3_mprintf - ("SELECT table_name, geometry_column, row_count, extent_min_x, " - "extent_min_y, extent_max_x, extent_max_y FROM vector_layers_statistics " - "WHERE Lower(table_name) = Lower(%Q) AND " - "Lower(geometry_column) = Lower(%Q)", table, geometry); - } -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - error = 1; - goto stop2; - } - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* processing a VectorLayer row */ - int is_null = 0; - const char *table_name = - (const char *) sqlite3_column_text (stmt, 0); - const char *geometry_column = - (const char *) sqlite3_column_text (stmt, 1); - int count; - double min_x; - double min_y; - double max_x; - double max_y; - if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) - is_null = 1; - else - count = sqlite3_column_int (stmt, 2); - if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) - is_null = 1; - else - min_x = sqlite3_column_double (stmt, 3); - if (sqlite3_column_type (stmt, 4) == SQLITE_NULL) - is_null = 1; - else - min_y = sqlite3_column_double (stmt, 4); - if (sqlite3_column_type (stmt, 5) == SQLITE_NULL) - is_null = 1; - else - max_x = sqlite3_column_double (stmt, 5); - if (sqlite3_column_type (stmt, 6) == SQLITE_NULL) - is_null = 1; - else - max_y = sqlite3_column_double (stmt, 6); - if (!is_null) - addVectorLayerExtent (list, table_name, geometry_column, - count, min_x, min_y, max_x, max_y); - } - } - ret = sqlite3_finalize (stmt); - - stop2: -/* querying the vector_layers_auth view */ - if (table == NULL) - sql = - sqlite3_mprintf - ("SELECT table_name, geometry_column, read_only, hidden " - "FROM vector_layers_auth"); - else - { - if (geometry == NULL) - sql = - sqlite3_mprintf - ("SELECT table_name, geometry_column, read_only, hidden " - "FROM vector_layers_auth WHERE Lower(table_name) = Lower(%Q)", - table, geometry); - else - sql = - sqlite3_mprintf - ("SELECT table_name, geometry_column, read_only, hidden " - "FROM vector_layers_auth " - "WHERE Lower(table_name) = Lower(%Q) AND " - "Lower(geometry_column) = Lower(%Q)", table, geometry); - } -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - error = 1; - goto stop3; - } - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* processing a VectorLayer row */ - int is_null = 0; - const char *table_name = - (const char *) sqlite3_column_text (stmt, 0); - const char *geometry_column = - (const char *) sqlite3_column_text (stmt, 1); - int read_only; - int hidden; - if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) - is_null = 1; - else - read_only = sqlite3_column_int (stmt, 2); - if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) - is_null = 1; - else - hidden = sqlite3_column_int (stmt, 3); - if (!is_null) - addVectorLayerAuth (list, table_name, geometry_column, - read_only, hidden); - } - } - ret = sqlite3_finalize (stmt); - - stop3: -/* querying the vector_layers_field_infos view */ - if (table == NULL) - { - /* if no "table" is set, we'll never return AttributeField Infos */ - goto stop4; - } - else - { - if (geometry == NULL) - sql = - sqlite3_mprintf - ("SELECT table_name, geometry_column, ordinal, column_name, " - "null_values, integer_values, double_values, text_values, blob_values," - "max_size, integer_min, integer_max, double_min, double_max " - "FROM vector_layers_field_infos WHERE Lower(table_name) = Lower(%Q)", - table, geometry); - else - sql = - sqlite3_mprintf - ("SELECT table_name, geometry_column, ordinal, column_name, " - "null_values, integer_values, double_values, text_values, blob_values," - "max_size, integer_min, integer_max, double_min, double_max " - "FROM vector_layers_field_infos " - "WHERE Lower(table_name) = Lower(%Q) AND " - "Lower(geometry_column) = Lower(%Q)", table, geometry); - } -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - error = 1; - goto stop4; - } - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* processing a VectorLayer row */ - int null_max_size = 0; - int null_int_range = 0; - int null_double_range = 0; - int max_size; - sqlite3_int64 integer_min; - sqlite3_int64 integer_max; - double double_min; - double double_max; - const char *table_name = - (const char *) sqlite3_column_text (stmt, 0); - const char *geometry_column = - (const char *) sqlite3_column_text (stmt, 1); - int ordinal = sqlite3_column_int (stmt, 2); - const char *column_name = - (const char *) sqlite3_column_text (stmt, 3); - int null_values = sqlite3_column_int (stmt, 4); - int integer_values = sqlite3_column_int (stmt, 5); - int double_values = sqlite3_column_int (stmt, 6); - int text_values = sqlite3_column_int (stmt, 7); - int blob_values = sqlite3_column_int (stmt, 8); - if (sqlite3_column_type (stmt, 9) == SQLITE_NULL) - null_max_size = 1; - else - max_size = sqlite3_column_int (stmt, 9); - if (sqlite3_column_type (stmt, 10) == SQLITE_NULL - || sqlite3_column_type (stmt, 11) == SQLITE_NULL) - null_int_range = 1; - else - { - integer_min = sqlite3_column_int64 (stmt, 10); - integer_max = sqlite3_column_int64 (stmt, 11); - } - if (sqlite3_column_type (stmt, 12) == SQLITE_NULL - || sqlite3_column_type (stmt, 13) == SQLITE_NULL) - null_double_range = 1; - else - { - double_min = sqlite3_column_double (stmt, 12); - double_max = sqlite3_column_double (stmt, 13); - } - addLayerAttributeField (list, table_name, geometry_column, - ordinal, column_name, null_values, - integer_values, double_values, - text_values, blob_values, null_max_size, - max_size, null_int_range, integer_min, - integer_max, null_double_range, - double_min, double_max); - } - } - ret = sqlite3_finalize (stmt); - - stop4: - if (error) - return 0; - return 1; -} - -static int -get_table_layers_legacy (sqlite3 * handle, const char *table, - const char *geometry, gaiaVectorLayersListPtr list) -{ -/* fetching Table-based geometries */ - int ret; - char *sql; - const char *name; - int i; - char **results; - int rows; - int columns; - int f_table = 0; - int f_geometry = 0; - int type = 0; - int dims = 0; - int srid = 0; - int spatial_index = 0; - sqlite3_stmt *stmt; - int error = 0; - -/* checking the GEOMETRY_COLUMN table */ - sql = "PRAGMA table_info(geometry_columns)"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 1]; - if (strcasecmp (name, "f_table_name") == 0) - f_table = 1; - if (strcasecmp (name, "f_geometry_column") == 0) - f_geometry = 1; - if (strcasecmp (name, "type") == 0) - type = 1; - if (strcasecmp (name, "coord_dimension") == 0) - dims = 1; - if (strcasecmp (name, "srid") == 0) - srid = 1; - if (strcasecmp (name, "spatial_index_enabled") == 0) - spatial_index = 1; - } - } - sqlite3_free_table (results); - if (f_table && f_geometry && type && dims && srid && spatial_index) - ; - else - return 1; - - if (table == NULL) - sql = - sqlite3_mprintf - ("SELECT f_table_name, f_geometry_column, type, coord_dimension, " - "srid, spatial_index_enabled FROM geometry_columns"); - else - { - if (geometry == NULL) - sql = - sqlite3_mprintf - ("SELECT f_table_name, f_geometry_column, type, coord_dimension, " - "srid, spatial_index_enabled FROM geometry_columns " - "WHERE Lower(f_table_name) = Lower(%Q)", table); - else - sql = - sqlite3_mprintf - ("SELECT f_table_name, f_geometry_column, type, coord_dimension, " - "srid, spatial_index_enabled FROM geometry_columns " - "WHERE Lower(f_table_name) = Lower(%Q) AND " - "Lower(f_geometry_column) = Lower(%Q)", table, geometry); - } -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - error = 1; - goto stop; - } - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* processing a VectorLayer row */ - const char *table_name = - (const char *) sqlite3_column_text (stmt, 0); - const char *geometry_column = - (const char *) sqlite3_column_text (stmt, 1); - const char *type = (const char *) sqlite3_column_text (stmt, 2); - const char *dims = (const char *) sqlite3_column_text (stmt, 3); - int srid = sqlite3_column_int (stmt, 4); - int spatial_index = sqlite3_column_int (stmt, 5); - int geometry_type = -1; - if (strcasecmp (type, "POINT") == 0) - geometry_type = 1; - if (strcasecmp (type, "LINESTRING") == 0) - geometry_type = 2; - if (strcasecmp (type, "POLYGON") == 0) - geometry_type = 3; - if (strcasecmp (type, "MULTIPOINT") == 0) - geometry_type = 4; - if (strcasecmp (type, "MULTILINESTRING") == 0) - geometry_type = 5; - if (strcasecmp (type, "MULTIPOLYGON") == 0) - geometry_type = 6; - if (strcasecmp (type, "GEOMETRYCOLLECTION") == 0) - geometry_type = 7; - if (strcasecmp (type, "GEOMETRY") == 0) - geometry_type = 0; - if (strcasecmp (dims, "XYZ") == 0 - || strcasecmp (dims, "3") == 0) - geometry_type += 1000; - if (strcasecmp (dims, "XYM") == 0) - geometry_type += 2000; - if (strcasecmp (dims, "XYZM") == 0 - || strcasecmp (dims, "4") == 0) - geometry_type += 3000; - addVectorLayer (list, "SpatialTable", table_name, - geometry_column, geometry_type, srid, - spatial_index); - } - else - error = 1; - } - ret = sqlite3_finalize (stmt); - - stop: - if (error) - return 0; - return 1; -} - -static int -get_view_layers_legacy (sqlite3 * handle, const char *table, - const char *geometry, gaiaVectorLayersListPtr list) -{ -/* fetching View-based geometries */ - int ret; - char *sql; - const char *name; - int i; - char **results; - int rows; - int columns; - int f_table = 0; - int f_geometry = 0; - int type = 0; - int dims = 0; - int srid = 0; - int spatial_index = 0; - int view_name = 0; - int view_geometry = 0; - int fvw_table = 0; - int fvw_geometry = 0; - sqlite3_stmt *stmt; - int error = 0; - -/* checking the GEOMETRY_COLUMN table */ - sql = "PRAGMA table_info(geometry_columns)"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 1]; - if (strcasecmp (name, "f_table_name") == 0) - f_table = 1; - if (strcasecmp (name, "f_geometry_column") == 0) - f_geometry = 1; - if (strcasecmp (name, "type") == 0) - type = 1; - if (strcasecmp (name, "coord_dimension") == 0) - dims = 1; - if (strcasecmp (name, "srid") == 0) - srid = 1; - if (strcasecmp (name, "spatial_index_enabled") == 0) - spatial_index = 1; - } - } - sqlite3_free_table (results); - if (f_table && f_geometry && type && dims && srid && spatial_index) - ; - else - return 1; - -/* checking the VIEWS_GEOMETRY_COLUMN table */ - sql = "PRAGMA table_info(views_geometry_columns)"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 1]; - if (strcasecmp (name, "view_name") == 0) - view_name = 1; - if (strcasecmp (name, "view_geometry") == 0) - view_geometry = 1; - if (strcasecmp (name, "f_table_name") == 0) - fvw_table = 1; - if (strcasecmp (name, "f_geometry_column") == 0) - fvw_geometry = 1; - } - } - sqlite3_free_table (results); - if (view_name && view_geometry && fvw_table && fvw_geometry) - ; - else - return 1; - - if (table == NULL) - sql = - sqlite3_mprintf - ("SELECT a.view_name, a.view_geometry, b.type, b.coord_dimension, " - "b.srid, b.spatial_index_enabled FROM views_geometry_columns AS a " - "JOIN geometry_columns AS b ON (Lower(a.f_table_name) = Lower(b.f_table_name) " - "AND Lower(a.f_geometry_column) = Lower(b.f_geometry_column))"); - else - { - if (geometry == NULL) - sql = - sqlite3_mprintf - ("SELECT a.view_name, a.view_geometry, b.type, b.coord_dimension, " - "b.srid, b.spatial_index_enabled FROM views_geometry_columns AS a " - "JOIN geometry_columns AS b ON (Lower(a.f_table_name) = Lower(b.f_table_name) " - "AND Lower(a.f_geometry_column) = Lower(b.f_geometry_column)) " - "WHERE Lower(a.view_name) = Lower(%Q)", table); - else - sql = - sqlite3_mprintf - ("SELECT a.view_name, a.view_geometry, b.type, b.coord_dimension, " - "b.srid, b.spatial_index_enabled FROM views_geometry_columns AS a " - "JOIN geometry_columns AS b ON (Lower(a.f_table_name) = Lower(b.f_table_name) " - "AND Lower(a.f_geometry_column) = Lower(b.f_geometry_column)) " - "WHERE Lower(a.view_name) = Lower(%Q) AND " - "Lower(a.view_geometry) = Lower(%Q)", table, geometry); - } -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - error = 1; - goto stop; - } - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* processing a VectorLayer row */ - const char *table_name = - (const char *) sqlite3_column_text (stmt, 0); - const char *geometry_column = - (const char *) sqlite3_column_text (stmt, 1); - const char *type = (const char *) sqlite3_column_text (stmt, 2); - const char *dims = (const char *) sqlite3_column_text (stmt, 3); - int srid = sqlite3_column_int (stmt, 4); - int spatial_index = sqlite3_column_int (stmt, 5); - int geometry_type = -1; - if (strcasecmp (type, "POINT") == 0) - geometry_type = 1; - if (strcasecmp (type, "LINESTRING") == 0) - geometry_type = 2; - if (strcasecmp (type, "POLYGON") == 0) - geometry_type = 3; - if (strcasecmp (type, "MULTIPOINT") == 0) - geometry_type = 4; - if (strcasecmp (type, "MULTILINESTRING") == 0) - geometry_type = 5; - if (strcasecmp (type, "MULTIPOLYGON") == 0) - geometry_type = 6; - if (strcasecmp (type, "GEOMETRYCOLLECTION") == 0) - geometry_type = 7; - if (strcasecmp (type, "GEOMETRY") == 0) - geometry_type = 0; - if (strcasecmp (dims, "XYZ") == 0 - || strcasecmp (dims, "3") == 0) - geometry_type += 1000; - if (strcasecmp (dims, "XYM") == 0) - geometry_type += 2000; - if (strcasecmp (dims, "XYZM") == 0 - || strcasecmp (dims, "4") == 0) - geometry_type += 3000; - addVectorLayer (list, "SpatialView", table_name, - geometry_column, geometry_type, srid, - spatial_index); - } - else - error = 1; - } - ret = sqlite3_finalize (stmt); - - stop: - if (error) - return 0; - return 1; -} - -static int -get_table_extent_legacy (sqlite3 * handle, const char *table, - const char *geometry, gaiaVectorLayersListPtr list) -{ -/* fetching Table-based extents */ - int ret; - char *sql; - const char *name; - int i; - char **results; - int rows; - int columns; - int f_table = 0; - int f_geometry = 0; - int count = 0; - int minx = 0; - int miny = 0; - int maxx = 0; - int maxy = 0; - sqlite3_stmt *stmt; - -/* checking the LAYER_STATISTICS table */ - sql = "PRAGMA table_info(layer_statistics)"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 1]; - if (strcasecmp (name, "table_name") == 0) - f_table = 1; - if (strcasecmp (name, "geometry_column") == 0) - f_geometry = 1; - if (strcasecmp (name, "row_count") == 0) - count = 1; - if (strcasecmp (name, "extent_min_x") == 0) - minx = 1; - if (strcasecmp (name, "extent_min_y") == 0) - miny = 1; - if (strcasecmp (name, "extent_max_x") == 0) - maxx = 1; - if (strcasecmp (name, "extent_max_y") == 0) - maxy = 1; - } - } - sqlite3_free_table (results); - if (f_table && f_geometry && count && minx && miny && maxx && maxy) - ; - else - return 1; - -/* querying the layer_statistics table */ - if (table == NULL) - sql = - sqlite3_mprintf - ("SELECT table_name, geometry_column, row_count, extent_min_x, " - "extent_min_y, extent_max_x, extent_max_y FROM layer_statistics"); - else - { - if (geometry == NULL) - sql = - sqlite3_mprintf - ("SELECT table_name, geometry_column, row_count, extent_min_x, " - "extent_min_y, extent_max_x, extent_max_y FROM layer_statistics " - "WHERE Lower(table_name) = Lower(%Q)", table); - else - sql = - sqlite3_mprintf - ("SELECT table_name, geometry_column, row_count, extent_min_x, " - "extent_min_y, extent_max_x, extent_max_y FROM layer_statistics " - "WHERE Lower(table_name) = Lower(%Q) AND " - "Lower(geometry_column) = Lower(%Q)", table, geometry); - } -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - goto stop; - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* processing a VectorLayer row */ - int is_null = 0; - const char *table_name = - (const char *) sqlite3_column_text (stmt, 0); - const char *geometry_column = - (const char *) sqlite3_column_text (stmt, 1); - int count; - double min_x; - double min_y; - double max_x; - double max_y; - if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) - is_null = 1; - else - count = sqlite3_column_int (stmt, 2); - if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) - is_null = 1; - else - min_x = sqlite3_column_double (stmt, 3); - if (sqlite3_column_type (stmt, 4) == SQLITE_NULL) - is_null = 1; - else - min_y = sqlite3_column_double (stmt, 4); - if (sqlite3_column_type (stmt, 5) == SQLITE_NULL) - is_null = 1; - else - max_x = sqlite3_column_double (stmt, 5); - if (sqlite3_column_type (stmt, 6) == SQLITE_NULL) - is_null = 1; - else - max_y = sqlite3_column_double (stmt, 6); - if (!is_null) - addVectorLayerExtent (list, table_name, geometry_column, - count, min_x, min_y, max_x, max_y); - } - } - ret = sqlite3_finalize (stmt); - stop: - return 1; -} - -static int -get_view_extent_legacy (sqlite3 * handle, const char *table, - const char *geometry, gaiaVectorLayersListPtr list) -{ -/* fetching View-based extents */ - int ret; - char *sql; - const char *name; - int i; - char **results; - int rows; - int columns; - int f_table = 0; - int f_geometry = 0; - int count = 0; - int minx = 0; - int miny = 0; - int maxx = 0; - int maxy = 0; - sqlite3_stmt *stmt; - -/* checking the VIEWS_LAYER_STATISTICS table */ - sql = "PRAGMA table_info(views_layer_statistics)"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 1]; - if (strcasecmp (name, "view_name") == 0) - f_table = 1; - if (strcasecmp (name, "view_geometry") == 0) - f_geometry = 1; - if (strcasecmp (name, "row_count") == 0) - count = 1; - if (strcasecmp (name, "extent_min_x") == 0) - minx = 1; - if (strcasecmp (name, "extent_min_y") == 0) - miny = 1; - if (strcasecmp (name, "extent_max_x") == 0) - maxx = 1; - if (strcasecmp (name, "extent_max_y") == 0) - maxy = 1; - } - } - sqlite3_free_table (results); - if (f_table && f_geometry && count && minx && miny && maxx && maxy) - ; - else - return 1; - -/* querying the views_layer_statistics table */ - if (table == NULL) - sql = - sqlite3_mprintf - ("SELECT view_name, view_geometry, row_count, extent_min_x, " - "extent_min_y, extent_max_x, extent_max_y FROM views_layer_statistics"); - else - { - if (geometry == NULL) - sql = - sqlite3_mprintf - ("SELECT view_name, view_geometry, row_count, extent_min_x, " - "extent_min_y, extent_max_x, extent_max_y FROM views_layer_statistics " - "WHERE Lower(view_name) = Lower(%Q)", table); - else - sql = - sqlite3_mprintf - ("SELECT view_name, view_geometry, row_count, extent_min_x, " - "extent_min_y, extent_max_x, extent_max_y FROM views_layer_statistics " - "WHERE Lower(view_name) = Lower(%Q) AND " - "Lower(view_geometry) = Lower(%Q)", table, geometry); - } -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - goto stop; - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* processing a VectorLayer row */ - int is_null = 0; - const char *table_name = - (const char *) sqlite3_column_text (stmt, 0); - const char *geometry_column = - (const char *) sqlite3_column_text (stmt, 1); - int count; - double min_x; - double min_y; - double max_x; - double max_y; - if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) - is_null = 1; - else - count = sqlite3_column_int (stmt, 2); - if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) - is_null = 1; - else - min_x = sqlite3_column_double (stmt, 3); - if (sqlite3_column_type (stmt, 4) == SQLITE_NULL) - is_null = 1; - else - min_y = sqlite3_column_double (stmt, 4); - if (sqlite3_column_type (stmt, 5) == SQLITE_NULL) - is_null = 1; - else - max_x = sqlite3_column_double (stmt, 5); - if (sqlite3_column_type (stmt, 6) == SQLITE_NULL) - is_null = 1; - else - max_y = sqlite3_column_double (stmt, 6); - if (!is_null) - addVectorLayerExtent (list, table_name, geometry_column, - count, min_x, min_y, max_x, max_y); - } - } - ret = sqlite3_finalize (stmt); - stop: - return 1; -} - -static int -get_table_auth_legacy (sqlite3 * handle, const char *table, - const char *geometry, gaiaVectorLayersListPtr list) -{ -/* fetching Table-based Auth */ - int ret; - char *sql; - const char *name; - int i; - char **results; - int rows; - int columns; - int f_table = 0; - int f_geometry = 0; - int read_only = 0; - int hidden = 0; - sqlite3_stmt *stmt; - -/* checking the GEOMETRY_COLUMNS_AUTH table */ - sql = "PRAGMA table_info(geometry_columns_auth)"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 1]; - if (strcasecmp (name, "f_table_name") == 0) - f_table = 1; - if (strcasecmp (name, "f_geometry_column") == 0) - f_geometry = 1; - if (strcasecmp (name, "read_only") == 0) - read_only = 1; - if (strcasecmp (name, "hidden") == 0) - hidden = 1; - } - } - sqlite3_free_table (results); - if (f_table && f_geometry && read_only && hidden) - ; - else - return 1; - -/* querying the geometry_columns_auth table */ - if (table == NULL) - sql = - sqlite3_mprintf - ("SELECT f_table_name, f_geometry_column, read_only, hidden " - "FROM geometry_columns_auth"); - else - { - if (geometry == NULL) - sql = - sqlite3_mprintf - ("SELECT f_table_name, f_geometry_column, read_only, hidden " - "FROM geometry_columns_auth " - "WHERE Lower(f_table_name) = Lower(%Q)", table); - else - sql = - sqlite3_mprintf - ("SELECT f_table_name, f_geometry_column, read_only, hidden " - "FROM geometry_columns_auth " - "WHERE Lower(f_table_name) = Lower(%Q) AND " - "Lower(f_geometry_column) = Lower(%Q)", table, geometry); - } -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - goto stop; - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* processing a VectorLayer row */ - int is_null = 0; - const char *table_name = - (const char *) sqlite3_column_text (stmt, 0); - const char *geometry_column = - (const char *) sqlite3_column_text (stmt, 1); - int read_only; - int hidden; - if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) - is_null = 1; - else - read_only = sqlite3_column_int (stmt, 2); - if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) - is_null = 1; - else - hidden = sqlite3_column_int (stmt, 3); - if (!is_null) - addVectorLayerAuth (list, table_name, geometry_column, - read_only, hidden); - } - } - ret = sqlite3_finalize (stmt); - stop: - return 1; -} - -static int -compute_table_fields_statistics (sqlite3 * handle, const char *table, - const char *geometry, - gaiaVectorLayersListPtr list) -{ -/* computing field statistics - legacy */ - gaiaVectorLayerPtr lyr; - lyr = list->First; - while (lyr) - { - /* testing if the Table/Geometry is already defined */ - if (geometry == NULL) - { - if (strcasecmp (lyr->TableName, table) == 0) - { - if (!doComputeFieldInfos - (handle, lyr->TableName, lyr->GeometryName, - SPATIALITE_STATISTICS_LEGACY, lyr)) - return 0; - } - } - else - { - if (strcasecmp (lyr->TableName, table) == 0 - && strcasecmp (lyr->GeometryName, geometry) == 0) - { - if (!doComputeFieldInfos - (handle, lyr->TableName, lyr->GeometryName, - SPATIALITE_STATISTICS_LEGACY, lyr)) - return 0; - } - } - lyr = lyr->Next; - } - return 1; -} - -static int -check_v4_statistics (sqlite3 * handle) -{ -/* checking if v.4.0.0 statistics tables are supported */ - char *sql_statement; - int ret; - char **results; - int rows; - int columns; - -/* testing the SQL Query */ - sql_statement = - sqlite3_mprintf ("SELECT g.table_name, g.geometry_column, " - "s.row_count, s.extent_min_x, s.extent_min_y, " - "s.extent_max_x, s.extent_max_y " - "FROM vector_layers AS g " - "LEFT JOIN vector_layers_statistics AS s ON " - "(g.table_name = s.table_name AND " - "g.geometry_column = s.geometry_column) LIMIT 1"); - ret = - sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - sqlite3_free_table (results); - - return 1; -} - -static int -check_v3_statistics (sqlite3 * handle) -{ -/* checking if v.3.0.0 statistics tables are supported */ - char *sql_statement; - int ret; - char **results; - int rows; - int columns; - - if (!check_layer_statistics (handle)) - return 0; -/* testing the SQL Query - Table-based Geometries */ - sql_statement = - sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column, " - "s.row_count, s.extent_min_x, s.extent_min_y, " - "s.extent_max_x, s.extent_max_y " - "FROM geometry_columns AS g " - "LEFT JOIN layer_statistics AS s ON " - "(g.f_table_name = s.table_name AND " - "g.f_geometry_column = s.geometry_column) LIMIT 1"); - ret = - sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - sqlite3_free_table (results); - - if (!check_views_layer_statistics (handle)) - return 0; -/* testing the SQL Query - View-based Geometries */ - sql_statement = - sqlite3_mprintf ("SELECT g.view_name, g.view_geometry, " - "s.row_count, s.extent_min_x, s.extent_min_y, " - "s.extent_max_x, s.extent_max_y " - "FROM views_geometry_columns AS g " - "LEFT JOIN views_layer_statistics AS s ON " - "(g.view_name = s.view_name AND " - "g.view_geometry = s.view_geometry) LIMIT 1"); - ret = - sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - sqlite3_free_table (results); - - if (!check_virts_layer_statistics (handle)) - return 0; -/* testing the SQL Query - VirtualShape-based Geometries */ - sql_statement = - sqlite3_mprintf ("SELECT g.virt_name, g.virt_geometry, " - "s.row_count, s.extent_min_x, s.extent_min_y, " - "s.extent_max_x, s.extent_max_y " - "FROM virts_geometry_columns AS g " - "LEFT JOIN virts_layer_statistics AS s ON " - "(g.virt_name = s.virt_name AND " - "g.virt_geometry = s.virt_geometry) LIMIT 1"); - ret = - sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - sqlite3_free_table (results); - - return 1; -} - -static int -check_v2_statistics (sqlite3 * handle) -{ -/* checking if v.2.0.0 statistics tables are supported */ - char *sql_statement; - int ret; - char **results; - int rows; - int columns; - - if (!check_layer_statistics (handle)) - return 0; -/* testing the SQL Query - Table-based Geometries */ - sql_statement = - sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column, " - "s.row_count, s.extent_min_x, s.extent_min_y, " - "s.extent_max_x, s.extent_max_y " - "FROM geometry_columns AS g " - "LEFT JOIN layer_statistics AS s ON " - "(g.f_table_name = s.table_name AND " - "g.f_geometry_column = s.geometry_column) LIMIT 1"); - ret = - sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - sqlite3_free_table (results); - - return 1; -} - -static int -optimistic_layer_statistics_v4 (sqlite3 * handle, const char *table, - const char *geometry) -{ -/* selective statistics update - v.4.0.0 layout */ - char *sql_statement; - int ret; - const char *f_table_name; - const char *f_geometry_column; - int i; - char **results; - int rows; - int columns; - int error = 0; - - if (table == NULL && geometry == NULL) - { - /* processing any table/geometry found in GEOMETRY_COLUMNS */ - sql_statement = - sqlite3_mprintf ("SELECT g.table_name, g.geometry_column " - "FROM vector_layers AS g " - "LEFT JOIN vector_layers_statistics AS s ON " - "(g.table_name = s.table_name AND " - "g.geometry_column = s.geometry_column) " - "WHERE s.row_count IS NULL OR s.extent_min_x IS NULL " - "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " - "OR s.extent_max_y IS NULL"); - } - else if (geometry == NULL) - { - /* processing any geometry belonging to this table */ - sql_statement = - sqlite3_mprintf ("SELECT g.table_name, g.geometry_column " - "FROM vector_layers AS g " - "LEFT JOIN vector_layers_statistics AS s ON " - "(g.table_name = s.table_name AND " - "g.geometry_column = s.geometry_column) " - "WHERE Lower(g.table_name) = Lower(%Q) AND " - "(s.row_count IS NULL OR s.extent_min_x IS NULL " - "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " - "OR s.extent_max_y IS NULL)", table); - } - else - { - /* processing a single table/geometry entry */ - sql_statement = - sqlite3_mprintf ("SELECT g.table_name, g.geometry_column " - "FROM vector_layers AS g " - "LEFT JOIN vector_layers_statistics AS s ON " - "(g.table_name = s.table_name AND " - "g.geometry_column = s.geometry_column) " - "WHERE Lower(g.table_name) = Lower(%Q) AND " - "Lower(g.geometry_column) = Lower(%Q) AND " - "(s.row_count IS NULL OR s.extent_min_x IS NULL " - "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " - "OR s.extent_max_y IS NULL)", table, geometry); - } - ret = - sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - f_table_name = results[(i * columns) + 0]; - f_geometry_column = results[(i * columns) + 1]; - if (!update_layer_statistics - (handle, f_table_name, f_geometry_column)) - { - error = 1; - break; - } - } - } - sqlite3_free_table (results); - if (error) - return 0; - return 1; -} - -static int -optimistic_layer_statistics_v3 (sqlite3 * handle, const char *table, - const char *geometry) -{ -/* selective statistics update - v.3.0.0 layout */ - char *sql_statement; - int ret; - const char *f_table_name; - const char *f_geometry_column; - int i; - char **results; - int rows; - int columns; - int error = 0; - -/* genuine Table-based Geometries */ - if (table == NULL && geometry == NULL) - { - /* processing any table/geometry found in GEOMETRY_COLUMNS */ - sql_statement = - sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column " - "FROM geometry_columns AS g " - "LEFT JOIN layer_statistics AS s ON " - "(g.f_table_name = s.table_name AND " - "g.f_geometry_column = s.geometry_column) " - "WHERE s.row_count IS NULL OR s.extent_min_x IS NULL " - "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " - "OR s.extent_max_y IS NULL"); - } - else if (geometry == NULL) - { - /* processing any geometry belonging to this table */ - sql_statement = - sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column " - "FROM geometry_columns AS g " - "LEFT JOIN layer_statistics AS s ON " - "(g.f_table_name = s.table_name AND " - "g.f_geometry_column = s.geometry_column) " - "WHERE Lower(g.f_table_name) = Lower(%Q) AND " - "(s.row_count IS NULL OR s.extent_min_x IS NULL " - "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " - "OR s.extent_max_y IS NULL)", table); - } - else - { - /* processing a single table/geometry entry */ - sql_statement = - sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column " - "FROM geometry_columns AS g " - "LEFT JOIN layer_statistics AS s ON " - "(g.f_table_name = s.table_name AND " - "g.f_geometry_column = s.geometry_column) " - "WHERE Lower(g.f_table_name) = Lower(%Q) AND " - "Lower(g.f_geometry_column) = Lower(%Q) AND " - "(s.row_count IS NULL OR s.extent_min_x IS NULL " - "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " - "OR s.extent_max_y IS NULL)", table, geometry); - } - ret = - sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - f_table_name = results[(i * columns) + 0]; - f_geometry_column = results[(i * columns) + 1]; - if (!update_layer_statistics - (handle, f_table_name, f_geometry_column)) - { - error = 1; - break; - } - } - } - sqlite3_free_table (results); - if (error) - return 0; - -/* View Based Geometries */ - if (table == NULL && geometry == NULL) - { - /* processing any table/geometry found in GEOMETRY_COLUMNS */ - sql_statement = - sqlite3_mprintf ("SELECT g.view_name, g.view_geometry " - "FROM views_geometry_columns AS g " - "LEFT JOIN views_layer_statistics AS s ON " - "(g.view_name = s.view_name AND " - "g.view_geometry = s.view_geometry) " - "WHERE s.row_count IS NULL OR s.extent_min_x IS NULL " - "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " - "OR s.extent_max_y IS NULL"); - } - else if (geometry == NULL) - { - /* processing any geometry belonging to this table */ - sql_statement = - sqlite3_mprintf ("SELECT g.view_name, g.view_geometry " - "FROM views_geometry_columns AS g " - "LEFT JOIN views_layer_statistics AS s ON " - "(g.view_name = s.view_name AND " - "g.view_geometry = s.view_geometry) " - "WHERE Lower(g.view_name) = Lower(%Q) AND " - "(s.row_count IS NULL OR s.extent_min_x IS NULL " - "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " - "OR s.extent_max_y IS NULL)", table); - } - else - { - /* processing a single table/geometry entry */ - sql_statement = - sqlite3_mprintf ("SELECT g.view_name, g.view_geometry " - "FROM views_geometry_columns AS g " - "LEFT JOIN views_layer_statistics AS s ON " - "(g.view_name = s.view_name AND " - "g.view_geometry = s.view_geometry) " - "WHERE Lower(g.view_name) = Lower(%Q) AND " - "Lower(g.view_geometry) = Lower(%Q) AND " - "(s.row_count IS NULL OR s.extent_min_x IS NULL " - "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " - "OR s.extent_max_y IS NULL)", table, geometry); - } - ret = - sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - f_table_name = results[(i * columns) + 0]; - f_geometry_column = results[(i * columns) + 1]; - if (!update_layer_statistics - (handle, f_table_name, f_geometry_column)) - { - error = 1; - break; - } - } - } - sqlite3_free_table (results); - if (error) - return 0; - -/* VirtualShape Based Geometries */ - if (table == NULL && geometry == NULL) - { - /* processing any table/geometry found in GEOMETRY_COLUMNS */ - sql_statement = - sqlite3_mprintf ("SELECT g.virt_name, g.virt_geometry " - "FROM virts_geometry_columns AS g " - "LEFT JOIN virts_layer_statistics AS s ON " - "(g.virt_name = s.virt_name AND " - "g.virt_geometry = s.virt_geometry) " - "WHERE s.row_count IS NULL OR s.extent_min_x IS NULL " - "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " - "OR s.extent_max_y IS NULL"); - } - else if (geometry == NULL) - { - /* processing any geometry belonging to this table */ - sql_statement = - sqlite3_mprintf ("SELECT g.virt_name, g.virt_geometry " - "FROM virts_geometry_columns AS g " - "LEFT JOIN virts_layer_statistics AS s ON " - "(g.virt_name = s.virt_name AND " - "g.virt_geometry = s.virt_geometry) " - "WHERE Lower(g.virt_name) = Lower(%Q) AND " - "(s.row_count IS NULL OR s.extent_min_x IS NULL " - "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " - "OR s.extent_max_y IS NULL)", table); - } - else - { - /* processing a single table/geometry entry */ - sql_statement = - sqlite3_mprintf ("SELECT g.virt_name, g.virt_geometry " - "FROM virts_geometry_columns AS g " - "LEFT JOIN virts_layer_statistics AS s ON " - "(g.virt_name = s.virt_name AND " - "g.virt_geometry = s.virt_geometry) " - "WHERE Lower(g.virt_name) = Lower(%Q) AND " - "Lower(g.virt_geometry) = Lower(%Q) AND " - "(s.row_count IS NULL OR s.extent_min_x IS NULL " - "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " - "OR s.extent_max_y IS NULL)", table, geometry); - } - ret = - sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - f_table_name = results[(i * columns) + 0]; - f_geometry_column = results[(i * columns) + 1]; - if (!update_layer_statistics - (handle, f_table_name, f_geometry_column)) - { - error = 1; - break; - } - } - } - sqlite3_free_table (results); - if (error) - return 0; - return 1; -} - -static int -optimistic_layer_statistics_v2 (sqlite3 * handle, const char *table, - const char *geometry) -{ -/* selective statistics update - v.2.0.0 layout */ - char *sql_statement; - int ret; - const char *f_table_name; - const char *f_geometry_column; - int i; - char **results; - int rows; - int columns; - int error = 0; - -/* genuine Table-based Geometries */ - if (table == NULL && geometry == NULL) - { - /* processing any table/geometry found in GEOMETRY_COLUMNS */ - sql_statement = - sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column " - "FROM geometry_columns AS g " - "LEFT JOIN layer_statistics AS s ON " - "(g.f_table_name = s.table_name AND " - "g.f_geometry_column = s.geometry_column) " - "WHERE s.row_count IS NULL OR s.extent_min_x IS NULL " - "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " - "OR s.extent_max_y IS NULL"); - } - else if (geometry == NULL) - { - /* processing any geometry belonging to this table */ - sql_statement = - sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column " - "FROM geometry_columns AS g " - "LEFT JOIN layer_statistics AS s ON " - "(g.f_table_name = s.table_name AND " - "g.f_geometry_column = s.geometry_column) " - "WHERE Lower(g.f_table_name) = Lower(%Q) AND " - "(s.row_count IS NULL OR s.extent_min_x IS NULL " - "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " - "OR s.extent_max_y IS NULL)", table); - } - else - { - /* processing a single table/geometry entry */ - sql_statement = - sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column " - "FROM geometry_columns AS g " - "LEFT JOIN layer_statistics AS s ON " - "(g.f_table_name = s.table_name AND " - "g.f_geometry_column = s.geometry_column) " - "WHERE Lower(g.f_table_name) = Lower(%Q) AND " - "Lower(g.f_geometry_column) = Lower(%Q) AND " - "(s.row_count IS NULL OR s.extent_min_x IS NULL " - "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " - "OR s.extent_max_y IS NULL)", table, geometry); - } - ret = - sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - f_table_name = results[(i * columns) + 0]; - f_geometry_column = results[(i * columns) + 1]; - if (!update_layer_statistics - (handle, f_table_name, f_geometry_column)) - { - error = 1; - break; - } - } - } - sqlite3_free_table (results); - if (error) - return 0; - return 1; -} - -static int -optimistic_layer_statistics (sqlite3 * handle, const char *table, - const char *geometry) -{ -/* selective statistics update */ - if (check_v4_statistics (handle)) - return optimistic_layer_statistics_v4 (handle, table, geometry); - else if (check_v3_statistics (handle)) - return optimistic_layer_statistics_v3 (handle, table, geometry); - else if (check_v2_statistics (handle)) - return optimistic_layer_statistics_v2 (handle, table, geometry); - else - return 0; -} - -SPATIALITE_DECLARE gaiaVectorLayersListPtr -gaiaGetVectorLayersList (sqlite3 * handle, const char *table, - const char *geometry, int mode) -{ -/* creating a VectorLayersList object */ - gaiaVectorLayersListPtr list; - int metadata_version; - - if (mode == GAIA_VECTORS_LIST_PESSIMISTIC) - { - /* updating anyway the statistics before querying */ - if (!update_layer_statistics (handle, table, geometry)) - return NULL; - } - if (mode == GAIA_VECTORS_LIST_OPTIMISTIC) - { - /* selectively updating the statistics before querying */ - if (!optimistic_layer_statistics (handle, table, geometry)) - { - /* failure: defaulting to Pessimistic */ - if (!update_layer_statistics (handle, table, geometry)) - return NULL; - } - } - -/* allocating an empty VectorLayersList */ - list = malloc (sizeof (gaiaVectorLayersList)); - list->First = NULL; - list->Last = NULL; - list->Current = NULL; - - metadata_version = checkSpatialMetaData (handle); - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - if (!gaiaGetVectorLayersList_v4 (handle, table, geometry, list)) - { - gaiaFreeVectorLayersList (list); - return NULL; - } - if (list->First == NULL) - { - gaiaFreeVectorLayersList (list); - return NULL; - } - return list; - } - -/* legacy metadata style <= v.3.x.x */ - if (!get_table_layers_legacy (handle, table, geometry, list)) - goto error; - if (!get_view_layers_legacy (handle, table, geometry, list)) - goto error; - if (!get_table_extent_legacy (handle, table, geometry, list)) - goto error; - if (!get_view_extent_legacy (handle, table, geometry, list)) - goto error; - if (!get_table_auth_legacy (handle, table, geometry, list)) - goto error; - if (table != NULL && mode == GAIA_VECTORS_LIST_PESSIMISTIC) - { - if (!compute_table_fields_statistics (handle, table, geometry, list)) - goto error; - } - - if (list->First == NULL) - { - gaiaFreeVectorLayersList (list); - return NULL; - } - return list; - - error: - gaiaFreeVectorLayersList (list); - return NULL; -} diff --git a/src/spatialite/src/spatialite/spatialite.c b/src/spatialite/src/spatialite/spatialite.c deleted file mode 100644 index cc8c3f8..0000000 --- a/src/spatialite/src/spatialite/spatialite.c +++ /dev/null @@ -1,22698 +0,0 @@ -int sqlite3_auto_extension(void (*xEntryPoint)(void)) -{ -} - -void sqlite3_reset_auto_extension(void) -{ -} - -/* - - spatialite.c -- SQLite3 spatial extension - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Pepijn Van Eeckhoudt -(implementing Android support) - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -/* - -CREDITS: - -this module has been partly funded by: -Regione Toscana - Settore Sistema Informativo Territoriale ed Ambientale -(exposing liblwgeom APIs as SpatiaLite own SQL functions) - -*/ - -#include -#include -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -/* #define OMIT_GEOCALLBACKS 1 */ -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#if defined(_WIN32) || defined(WIN32) -#include -#define isatty _isatty -#else -#include -#endif - -#include -#include - -#include -#include -#include -#include -#include -#include - -#ifndef OMIT_GEOS /* including GEOS */ -#include -#endif - -#ifndef OMIT_PROJ /* including PROJ.4 */ -#include -#endif - -#ifdef _WIN32 -#define strcasecmp _stricmp -#endif /* not WIN32 */ - -#define GAIA_UNUSED() if (argc || argv) argc = argc; - -struct gaia_geom_chain_item -{ -/* a struct used to store a chain item */ - gaiaGeomCollPtr geom; - struct gaia_geom_chain_item *next; -}; - -struct gaia_geom_chain -{ -/* a struct used to store a dynamic chain of GeometryCollections */ - int all_polygs; - struct gaia_geom_chain_item *first; - struct gaia_geom_chain_item *last; -}; - -#ifndef OMIT_GEOCALLBACKS /* supporting RTree geometry callbacks */ -struct gaia_rtree_mbr -{ -/* a struct used by R*Tree GeometryCallback functions [MBR] */ - double minx; - double miny; - double maxx; - double maxy; -}; -#endif /* end RTree geometry callbacks */ - -SQLITE_EXTENSION_INIT1 struct stddev_str -{ -/* a struct to implement StandardVariation and Variance aggregate functions */ - int cleaned; - double mean; - double quot; - double count; -}; - -struct fdo_table -{ -/* a struct to implement a linked-list for FDO-ORG table names */ - char *table; - struct fdo_table *next; -}; - -static void -fnct_spatialite_version (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ spatialite_version() -/ -/ return a text string representing the current SpatiaLite version -*/ - int len; - const char *p_result = spatialite_version (); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - len = strlen (p_result); - sqlite3_result_text (context, p_result, len, SQLITE_TRANSIENT); -} - -static void -fnct_geos_version (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ geos_version() -/ -/ return a text string representing the current GEOS version -/ or NULL if GEOS is currently unsupported -*/ - -#ifndef OMIT_GEOS /* GEOS version */ - int len; - const char *p_result = GEOSversion (); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - len = strlen (p_result); - sqlite3_result_text (context, p_result, len, SQLITE_TRANSIENT); -#else - sqlite3_result_null (context); -#endif -} - -static void -fnct_proj4_version (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ proj4_version() -/ -/ return a text string representing the current PROJ.4 version -/ or NULL if PROJ.4 is currently unsupported -*/ - -#ifndef OMIT_PROJ /* PROJ.4 version */ - int len; - const char *p_result = pj_get_release (); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - len = strlen (p_result); - sqlite3_result_text (context, p_result, len, SQLITE_TRANSIENT); -#else - sqlite3_result_null (context); -#endif -} - -static void -fnct_has_proj (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ HasProj() -/ -/ return 1 if built including Proj.4; otherwise 0 -*/ - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ -#ifndef OMIT_PROJ /* PROJ.4 is supported */ - sqlite3_result_int (context, 1); -#else - sqlite3_result_int (context, 0); -#endif -} - -static void -fnct_has_geos (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ HasGeos() -/ -/ return 1 if built including GEOS; otherwise 0 -*/ - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ -#ifndef OMIT_GEOS /* GEOS is supported */ - sqlite3_result_int (context, 1); -#else - sqlite3_result_int (context, 0); -#endif -} - -static void -fnct_has_geos_advanced (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ HasGeosAdvanced() -/ -/ return 1 if built including GEOS-ADVANCED; otherwise 0 -*/ - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ -#ifdef GEOS_ADVANCED /* GEOS-ADVANCED is supported */ - sqlite3_result_int (context, 1); -#else - sqlite3_result_int (context, 0); -#endif -} - -static void -fnct_has_geos_trunk (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ HasGeosTrunk() -/ -/ return 1 if built including GEOS-TRUNK; otherwise 0 -*/ - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ -#ifdef GEOS_TRUNK /* GEOS-TRUNK is supported */ - sqlite3_result_int (context, 1); -#else - sqlite3_result_int (context, 0); -#endif -} - -static void -fnct_lwgeom_version (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ lwgeom_version() -/ -/ return a text string representing the current LWGEOM version -/ or NULL if LWGEOM is currently unsupported -*/ - -#ifdef ENABLE_LWGEOM /* LWGEOM version */ - int len; - const char *p_result = splite_lwgeom_version (); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - len = strlen (p_result); - sqlite3_result_text (context, p_result, len, SQLITE_TRANSIENT); -#else - sqlite3_result_null (context); -#endif -} - -static void -fnct_has_lwgeom (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ HasLwGeom() -/ -/ return 1 if built including LWGEOM; otherwise 0 -*/ - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ -#ifdef ENABLE_LWGEOM /* LWGEOM is supported */ - sqlite3_result_int (context, 1); -#else - sqlite3_result_int (context, 0); -#endif -} - -static void -fnct_has_iconv (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ HasIconv() -/ -/ return 1 if built including ICONV; otherwise 0 -*/ - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ -#ifndef OMIT_ICONV /* ICONV is supported */ - sqlite3_result_int (context, 1); -#else - sqlite3_result_int (context, 0); -#endif -} - -static void -fnct_has_math_sql (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ HasMathSql() -/ -/ return 1 if built including MATHSQL; otherwise 0 -*/ - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ -#ifndef OMIT_MATHSQL /* MATHSQL is supported */ - sqlite3_result_int (context, 1); -#else - sqlite3_result_int (context, 0); -#endif -} - -static void -fnct_has_geo_callbacks (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ HasGeoCallbacks() -/ -/ return 1 if built enabling GEOCALLBACKS; otherwise 0 -*/ - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ -#ifndef OMIT_GEOCALLBACKS /* GEO-CALLBACKS are supported */ - sqlite3_result_int (context, 1); -#else - sqlite3_result_int (context, 0); -#endif -} - -static void -fnct_has_freeXL (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ HasFreeXL() -/ -/ return 1 if built including FreeXL; otherwise 0 -*/ - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ -#ifndef OMIT_FREEXL /* FreeXL is supported */ - sqlite3_result_int (context, 1); -#else - sqlite3_result_int (context, 0); -#endif -} - -static void -fnct_has_epsg (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ HasEpsg() -/ -/ return 1 if built including EPSG; otherwise 0 -*/ - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ -#ifndef OMIT_EPSG /* EPSG is supported */ - sqlite3_result_int (context, 1); -#else - sqlite3_result_int (context, 0); -#endif -} - -static void -fnct_GeometryConstraints (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ GeometryConstraints(BLOBencoded geometry, geometry-type, srid) -/ GeometryConstraints(BLOBencoded geometry, geometry-type, srid, dimensions) -/ -/ checks geometry constraints, returning: -/ -/ -1 - if some error occurred -/ 1 - if geometry constraints validation passes -/ 0 - if geometry constraints validation fails -/ -*/ - int little_endian; - int endian_arch = gaiaEndianArch (); - unsigned char *p_blob = NULL; - int n_bytes = 0; - int srid; - int geom_srid = -1; - const char *type; - int xtype; - int geom_type = -1; - int geom_normalized_type; - const unsigned char *dimensions; - int dims = GAIA_XY; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_BLOB - || sqlite3_value_type (argv[0]) == SQLITE_NULL) - ; - else - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_TEXT) - type = (const char *) sqlite3_value_text (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - /* current metadata style >= v.4.0.0 */ - type = "UNKNOWN"; - switch (sqlite3_value_int (argv[1])) - { - case 0: - type = "GEOMETRY"; - dims = GAIA_XY; - break; - case 1: - type = "POINT"; - dims = GAIA_XY; - break; - case 2: - type = "LINESTRING"; - dims = GAIA_XY; - break; - case 3: - type = "POLYGON"; - dims = GAIA_XY; - break; - case 4: - type = "MULTIPOINT"; - dims = GAIA_XY; - break; - case 5: - type = "MULTILINESTRING"; - dims = GAIA_XY; - break; - case 6: - type = "MULTIPOLYGON"; - dims = GAIA_XY; - break; - case 7: - type = "GEOMETRYCOLLECTION"; - dims = GAIA_XY; - break; - case 1000: - type = "GEOMETRY"; - dims = GAIA_XY_Z; - break; - case 1001: - type = "POINT"; - dims = GAIA_XY_Z; - break; - case 1002: - type = "LINESTRING"; - dims = GAIA_XY_Z; - break; - case 1003: - type = "POLYGON"; - dims = GAIA_XY_Z; - break; - case 1004: - type = "MULTIPOINT"; - dims = GAIA_XY_Z; - break; - case 1005: - type = "MULTILINESTRING"; - dims = GAIA_XY_Z; - break; - case 1006: - type = "MULTIPOLYGON"; - dims = GAIA_XY_Z; - break; - case 1007: - type = "GEOMETRYCOLLECTION"; - dims = GAIA_XY_Z; - break; - case 2000: - type = "GEOMETRY"; - dims = GAIA_XY_M; - break; - case 2001: - type = "POINT"; - dims = GAIA_XY_M; - break; - case 2002: - type = "LINESTRING"; - dims = GAIA_XY_M; - break; - case 2003: - type = "POLYGON"; - dims = GAIA_XY_M; - break; - case 2004: - type = "MULTIPOINT"; - dims = GAIA_XY_M; - break; - case 2005: - type = "MULTILINESTRING"; - dims = GAIA_XY_M; - break; - case 2006: - type = "MULTIPOLYGON"; - dims = GAIA_XY_M; - break; - case 2007: - type = "GEOMETRYCOLLECTION"; - dims = GAIA_XY_M; - break; - case 3000: - type = "GEOMETRY"; - dims = GAIA_XY_Z_M; - break; - case 3001: - type = "POINT"; - dims = GAIA_XY_Z_M; - break; - case 3002: - type = "LINESTRING"; - dims = GAIA_XY_Z_M; - break; - case 3003: - type = "POLYGON"; - dims = GAIA_XY_Z_M; - break; - case 3004: - type = "MULTIPOINT"; - dims = GAIA_XY_Z_M; - break; - case 3005: - type = "MULTILINESTRING"; - dims = GAIA_XY_Z_M; - break; - case 3006: - type = "MULTIPOLYGON"; - dims = GAIA_XY_Z_M; - break; - case 3007: - type = "GEOMETRYCOLLECTION"; - dims = GAIA_XY_Z_M; - break; - }; - } - else - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - srid = sqlite3_value_int (argv[2]); - else - { - sqlite3_result_int (context, -1); - return; - } - if (argc == 4) - { - /* explicit dimensions - supporting XYZM */ - dimensions = sqlite3_value_text (argv[3]); - if (strcasecmp ((char *) dimensions, "XYZ") == 0) - dims = GAIA_XY_Z; - else if (strcasecmp ((char *) dimensions, "XYM") == 0) - dims = GAIA_XY_M; - else if (strcasecmp ((char *) dimensions, "XYZM") == 0) - dims = GAIA_XY_Z_M; - else - dims = GAIA_XY; - } - if (sqlite3_value_type (argv[0]) == SQLITE_BLOB) - { - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - } - if (p_blob) - { - /* quick Geometry validation */ - if (n_bytes < 45) - goto illegal_geometry; /* cannot be an internal BLOB WKB geometry */ - if (*(p_blob + 0) != GAIA_MARK_START) - goto illegal_geometry; /* failed to recognize START signature */ - if (*(p_blob + (n_bytes - 1)) != GAIA_MARK_END) - goto illegal_geometry; /* failed to recognize END signature */ - if (*(p_blob + 38) != GAIA_MARK_MBR) - goto illegal_geometry; /* failed to recognize MBR signature */ - if (*(p_blob + 1) == GAIA_LITTLE_ENDIAN) - little_endian = 1; - else if (*(p_blob + 1) == GAIA_BIG_ENDIAN) - little_endian = 0; - else - goto illegal_geometry; /* unknown encoding; neither little-endian nor big-endian */ - geom_type = gaiaImport32 (p_blob + 39, little_endian, endian_arch); - geom_srid = gaiaImport32 (p_blob + 2, little_endian, endian_arch); - goto valid_geometry; - illegal_geometry: - sqlite3_result_int (context, -1); - return; - } - valid_geometry: - xtype = GAIA_UNKNOWN; - if (strcasecmp ((char *) type, "POINT") == 0) - { - switch (dims) - { - case GAIA_XY_Z: - xtype = GAIA_POINTZ; - break; - case GAIA_XY_M: - xtype = GAIA_POINTM; - break; - case GAIA_XY_Z_M: - xtype = GAIA_POINTZM; - break; - default: - xtype = GAIA_POINT; - break; - }; - } - if (strcasecmp ((char *) type, "LINESTRING") == 0) - { - switch (dims) - { - case GAIA_XY_Z: - xtype = GAIA_LINESTRINGZ; - break; - case GAIA_XY_M: - xtype = GAIA_LINESTRINGM; - break; - case GAIA_XY_Z_M: - xtype = GAIA_LINESTRINGZM; - break; - default: - xtype = GAIA_LINESTRING; - break; - }; - } - if (strcasecmp ((char *) type, "POLYGON") == 0) - { - switch (dims) - { - case GAIA_XY_Z: - xtype = GAIA_POLYGONZ; - break; - case GAIA_XY_M: - xtype = GAIA_POLYGONM; - break; - case GAIA_XY_Z_M: - xtype = GAIA_POLYGONZM; - break; - default: - xtype = GAIA_POLYGON; - break; - }; - } - if (strcasecmp ((char *) type, "MULTIPOINT") == 0) - { - switch (dims) - { - case GAIA_XY_Z: - xtype = GAIA_MULTIPOINTZ; - break; - case GAIA_XY_M: - xtype = GAIA_MULTIPOINTM; - break; - case GAIA_XY_Z_M: - xtype = GAIA_MULTIPOINTZM; - break; - default: - xtype = GAIA_MULTIPOINT; - break; - }; - } - if (strcasecmp ((char *) type, "MULTILINESTRING") == 0) - { - switch (dims) - { - case GAIA_XY_Z: - xtype = GAIA_MULTILINESTRINGZ; - break; - case GAIA_XY_M: - xtype = GAIA_MULTILINESTRINGM; - break; - case GAIA_XY_Z_M: - xtype = GAIA_MULTILINESTRINGZM; - break; - default: - xtype = GAIA_MULTILINESTRING; - break; - }; - } - if (strcasecmp ((char *) type, "MULTIPOLYGON") == 0) - { - switch (dims) - { - case GAIA_XY_Z: - xtype = GAIA_MULTIPOLYGONZ; - break; - case GAIA_XY_M: - xtype = GAIA_MULTIPOLYGONM; - break; - case GAIA_XY_Z_M: - xtype = GAIA_MULTIPOLYGONZM; - break; - default: - xtype = GAIA_MULTIPOLYGON; - break; - }; - } - if (strcasecmp ((char *) type, "GEOMETRYCOLLECTION") == 0) - { - switch (dims) - { - case GAIA_XY_Z: - xtype = GAIA_GEOMETRYCOLLECTIONZ; - break; - case GAIA_XY_M: - xtype = GAIA_GEOMETRYCOLLECTIONM; - break; - case GAIA_XY_Z_M: - xtype = GAIA_GEOMETRYCOLLECTIONZM; - break; - default: - xtype = GAIA_GEOMETRYCOLLECTION; - break; - }; - } - switch (geom_type) - { - /* adjusting COMPRESSED Geometries */ - case GAIA_COMPRESSED_LINESTRING: - geom_normalized_type = GAIA_LINESTRING; - break; - case GAIA_COMPRESSED_LINESTRINGZ: - geom_normalized_type = GAIA_LINESTRINGZ; - break; - case GAIA_COMPRESSED_LINESTRINGM: - geom_normalized_type = GAIA_LINESTRINGM; - break; - case GAIA_COMPRESSED_LINESTRINGZM: - geom_normalized_type = GAIA_LINESTRINGZM; - break; - case GAIA_COMPRESSED_POLYGON: - geom_normalized_type = GAIA_POLYGON; - break; - case GAIA_COMPRESSED_POLYGONZ: - geom_normalized_type = GAIA_POLYGONZ; - break; - case GAIA_COMPRESSED_POLYGONM: - geom_normalized_type = GAIA_POLYGONM; - break; - case GAIA_COMPRESSED_POLYGONZM: - geom_normalized_type = GAIA_POLYGONZM; - break; - default: - geom_normalized_type = geom_type; - break; - }; - if (strcasecmp ((char *) type, "GEOMETRY") == 0) - xtype = -1; - if (xtype == GAIA_UNKNOWN) - sqlite3_result_int (context, -1); - else - { - ret = 1; - if (p_blob) - { - /* skipping NULL Geometry; this is assumed to be always good */ - if (geom_srid != srid) - ret = 0; - if (xtype == -1) - ; - else if (xtype != geom_normalized_type) - ret = 0; - } - sqlite3_result_int (context, ret); - } -} - -static void -fnct_RTreeAlign (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ RTreeAlign(RTree-table-name, PKID-value, BLOBencoded geometry) -/ -/ attempts to update the associated R*Tree, returning: -/ -/ -1 - if some invalid arg was passed -/ 1 - succesfull update -/ 0 - update failure -/ -*/ - unsigned char *p_blob = NULL; - int n_bytes = 0; - sqlite3_int64 pkid; - const char *rtree_table; - char *table_name; - int len; - char pkv[64]; - gaiaGeomCollPtr geom = NULL; - int ret; - char *sql_statement; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) - rtree_table = (const char *) sqlite3_value_text (argv[0]); - else - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - pkid = sqlite3_value_int64 (argv[1]); - else - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_BLOB - || sqlite3_value_type (argv[2]) == SQLITE_NULL) - ; - else - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_BLOB) - { - p_blob = (unsigned char *) sqlite3_value_blob (argv[2]); - n_bytes = sqlite3_value_bytes (argv[2]); - geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - } - - if (geom == NULL) - { - /* NULL geometry: nothing to do */ - sqlite3_result_int (context, 1); - } - else - { - /* INSERTing into the R*Tree */ - if (*(rtree_table + 0) == '"' - && *(rtree_table + strlen (rtree_table) - 1) == '"') - { - /* earlier versions may pass an already quoted name */ - char *dequoted_table_name; - len = strlen (rtree_table); - table_name = malloc (len + 1); - strcpy (table_name, rtree_table); - dequoted_table_name = gaiaDequotedSql (table_name); - free (table_name); - if (dequoted_table_name == NULL) - { - sqlite3_result_int (context, -1); - return; - } - table_name = gaiaDoubleQuotedSql (dequoted_table_name); - free (dequoted_table_name); - } - else - table_name = gaiaDoubleQuotedSql (rtree_table); -#if defined(_WIN32) || defined(__MINGW32__) -/* CAVEAT: M$ runtime doesn't supports %lld for 64 bits */ - sprintf (pkv, "%I64d", pkid); -#else - sprintf (pkv, "%lld", pkid); -#endif - sql_statement = - sqlite3_mprintf - ("INSERT INTO \"%s\" (pkid, xmin, ymin, xmax, ymax) " - "VALUES (%s, %1.12f, %1.12f, %1.12f, %1.12f)", table_name, pkv, - geom->MinX, geom->MinY, geom->MaxX, geom->MaxY); - gaiaFreeGeomColl (geom); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); - sqlite3_free (sql_statement); - free (table_name); - if (ret != SQLITE_OK) - sqlite3_result_int (context, 0); - else - sqlite3_result_int (context, 1); - } -} - -SPATIALITE_PRIVATE int -checkSpatialMetaData (const void *handle) -{ -/* internal utility function: -/ -/ for FDO-OGR interoperability and cross-version seamless compatibility: -/ tests the SpatialMetadata type, returning: -/ -/ 0 - if no valid SpatialMetaData where found -/ 1 - if SpatiaLite-like (legacy) SpatialMetadata where found -/ 2 - if FDO-OGR-like SpatialMetadata where found -/ 3 - if SpatiaLite-like (current) SpatialMetadata where found -/ -*/ - sqlite3 *sqlite = (sqlite3 *) handle; - int spatialite_legacy_rs = 0; - int spatialite_rs = 0; - int fdo_rs = 0; - int spatialite_legacy_gc = 0; - int spatialite_gc = 0; - int fdo_gc = 0; - int rs_srid = 0; - int auth_name = 0; - int auth_srid = 0; - int srtext = 0; - int ref_sys_name = 0; - int proj4text = 0; - int f_table_name = 0; - int f_geometry_column = 0; - int geometry_type = 0; - int coord_dimension = 0; - int gc_srid = 0; - int geometry_format = 0; - int type = 0; - int spatial_index_enabled = 0; - char sql[1024]; - int ret; - const char *name; - int i; - char **results; - int rows; - int columns; -/* checking the GEOMETRY_COLUMNS table */ - strcpy (sql, "PRAGMA table_info(geometry_columns)"); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - goto unknown; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 1]; - if (strcasecmp (name, "f_table_name") == 0) - f_table_name = 1; - if (strcasecmp (name, "f_geometry_column") == 0) - f_geometry_column = 1; - if (strcasecmp (name, "geometry_type") == 0) - geometry_type = 1; - if (strcasecmp (name, "coord_dimension") == 0) - coord_dimension = 1; - if (strcasecmp (name, "srid") == 0) - gc_srid = 1; - if (strcasecmp (name, "geometry_format") == 0) - geometry_format = 1; - if (strcasecmp (name, "type") == 0) - type = 1; - if (strcasecmp (name, "spatial_index_enabled") == 0) - spatial_index_enabled = 1; - } - } - sqlite3_free_table (results); - if (f_table_name && f_geometry_column && type && coord_dimension && gc_srid - && spatial_index_enabled) - spatialite_legacy_gc = 1; - if (f_table_name && f_geometry_column && geometry_type && coord_dimension - && gc_srid && spatial_index_enabled) - spatialite_gc = 1; - if (f_table_name && f_geometry_column && geometry_type && coord_dimension - && gc_srid && geometry_format) - fdo_gc = 1; -/* checking the SPATIAL_REF_SYS table */ - strcpy (sql, "PRAGMA table_info(spatial_ref_sys)"); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - goto unknown; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 1]; - if (strcasecmp (name, "srid") == 0) - rs_srid = 1; - if (strcasecmp (name, "auth_name") == 0) - auth_name = 1; - if (strcasecmp (name, "auth_srid") == 0) - auth_srid = 1; - if (strcasecmp (name, "srtext") == 0) - srtext = 1; - if (strcasecmp (name, "ref_sys_name") == 0) - ref_sys_name = 1; - if (strcasecmp (name, "proj4text") == 0) - proj4text = 1; - if (strcasecmp (name, "srtext") == 0) - srtext = 1; - } - } - sqlite3_free_table (results); - if (rs_srid && auth_name && auth_srid && ref_sys_name && proj4text - && srtext) - spatialite_rs = 1; - if (rs_srid && auth_name && auth_srid && ref_sys_name && proj4text) - spatialite_legacy_rs = 1; - if (rs_srid && auth_name && auth_srid && srtext) - fdo_rs = 1; -/* verifying the MetaData format */ - if (spatialite_legacy_gc && spatialite_legacy_rs) - return 1; - if (fdo_gc && fdo_rs) - return 2; - if (spatialite_gc && spatialite_rs) - return 3; - unknown: - return 0; -} - -static void -add_fdo_table (struct fdo_table **first, struct fdo_table **last, - const char *table, int len) -{ -/* adds an FDO-OGR styled Geometry Table to corresponding linked list */ - struct fdo_table *p = malloc (sizeof (struct fdo_table)); - p->table = malloc (len + 1); - strcpy (p->table, table); - p->next = NULL; - if (!(*first)) - (*first) = p; - if ((*last)) - (*last)->next = p; - (*last) = p; -} - -static void -free_fdo_tables (struct fdo_table *first) -{ -/* memory cleanup; destroying the FDO-OGR tables linked list */ - struct fdo_table *p; - struct fdo_table *pn; - p = first; - while (p) - { - pn = p->next; - if (p->table) - free (p->table); - free (p); - p = pn; - } -} - -static void -fnct_AutoFDOStart (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ AutoFDOStart(void) -/ -/ for FDO-OGR interoperability: -/ tests the SpatialMetadata type, then automatically -/ creating a VirtualFDO table for each FDO-OGR main table -/ declared within FDO-styled SpatialMetadata -/ -*/ - int ret; - const char *name; - int i; - char **results; - int rows; - int columns; - char *sql_statement; - int count = 0; - struct fdo_table *first = NULL; - struct fdo_table *last = NULL; - struct fdo_table *p; - int len; - char *xname; - char *xxname; - char *xtable; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (checkSpatialMetaData (sqlite) == 2) - { - /* ok, creating VirtualFDO tables */ - sql_statement = "SELECT DISTINCT f_table_name FROM geometry_columns"; - ret = - sqlite3_get_table (sqlite, sql_statement, &results, &rows, - &columns, NULL); - if (ret != SQLITE_OK) - goto error; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 0]; - if (name) - { - len = strlen (name); - add_fdo_table (&first, &last, name, len); - } - } - } - sqlite3_free_table (results); - p = first; - while (p) - { - /* destroying the VirtualFDO table [if existing] */ - xxname = sqlite3_mprintf ("fdo_%s", p->table); - xname = gaiaDoubleQuotedSql (xxname); - sqlite3_free (xxname); - sql_statement = - sqlite3_mprintf ("DROP TABLE IF EXISTS \"%s\"", xname); - free (xname); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - /* creating the VirtualFDO table */ - xxname = sqlite3_mprintf ("fdo_%s", p->table); - xname = gaiaDoubleQuotedSql (xxname); - sqlite3_free (xxname); - xtable = gaiaDoubleQuotedSql (p->table); - sql_statement = - sqlite3_mprintf - ("CREATE VIRTUAL TABLE \"%s\" USING VirtualFDO(\"%s\")", - xname, xtable); - free (xname); - free (xtable); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - count++; - p = p->next; - } - error: - free_fdo_tables (first); - sqlite3_result_int (context, count); - return; - } - sqlite3_result_int (context, 0); - return; -} - -static void -fnct_AutoFDOStop (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ AutoFDOStop(void) -/ -/ for FDO-OGR interoperability: -/ tests the SpatialMetadata type, then automatically -/ removes any VirtualFDO table -/ -*/ - int ret; - const char *name; - int i; - char **results; - int rows; - int columns; - char *sql_statement; - int count = 0; - struct fdo_table *first = NULL; - struct fdo_table *last = NULL; - struct fdo_table *p; - int len; - char *xname; - char *xxname; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (checkSpatialMetaData (sqlite) == 2) - { - /* ok, creating VirtualFDO tables */ - sql_statement = "SELECT DISTINCT f_table_name FROM geometry_columns"; - ret = - sqlite3_get_table (sqlite, sql_statement, &results, &rows, - &columns, NULL); - if (ret != SQLITE_OK) - goto error; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 0]; - if (name) - { - len = strlen (name); - add_fdo_table (&first, &last, name, len); - } - } - } - sqlite3_free_table (results); - p = first; - while (p) - { - /* destroying the VirtualFDO table [if existing] */ - xxname = sqlite3_mprintf ("fdo_%s", p->table); - xname = gaiaDoubleQuotedSql (xxname); - sqlite3_free (xxname); - sql_statement = - sqlite3_mprintf ("DROP TABLE IF EXISTS \"%s\"", xname); - free (xname); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - count++; - p = p->next; - } - error: - free_fdo_tables (first); - sqlite3_result_int (context, count); - return; - } - sqlite3_result_int (context, 0); - return; -} - -static void -fnct_CheckSpatialMetaData (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ CheckSpatialMetaData(void) -/ -/ for FDO-OGR interoperability: -/ tests the SpatialMetadata type, returning: -/ -/ 0 - if no valid SpatialMetaData where found -/ 1 - if SpatiaLite-legacy SpatialMetadata where found -/ 2- if FDO-OGR-like SpatialMetadata where found -/ 3 - if SpatiaLite-current SpatialMetadata where found -/ -*/ - sqlite3 *sqlite; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - sqlite = sqlite3_context_db_handle (context); - ret = checkSpatialMetaData (sqlite); - if (ret == 3) - { - /* trying to create the advanced metadata tables >= v.4.0.0 */ - createAdvancedMetaData (sqlite); - } - sqlite3_result_int (context, ret); - return; -} - -static void -fnct_InitSpatialMetaData (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ InitSpatialMetaData([text mode]) -/ -/ creates the SPATIAL_REF_SYS and GEOMETRY_COLUMNS tables -/ returns 1 on success -/ 0 on failure -*/ - char sql[8192]; - char *errMsg = NULL; - int ret; - const char *xmode; - int mode = GAIA_EPSG_ANY; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (argc == 1) - { - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("InitSpatialMetaData() error: argument 1 [mode] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - xmode = (const char *) sqlite3_value_text (argv[0]); - if (strcasecmp (xmode, "NONE") == 0 - || strcasecmp (xmode, "EMPTY") == 0) - mode = GAIA_EPSG_NONE; - if (strcasecmp (xmode, "WGS84") == 0 - || strcasecmp (xmode, "WGS84_ONLY") == 0) - mode = GAIA_EPSG_WGS84_ONLY; - } -/* creating the SPATIAL_REF_SYS table */ - strcpy (sql, "CREATE TABLE spatial_ref_sys (\n"); - strcat (sql, "srid INTEGER NOT NULL PRIMARY KEY,\n"); - strcat (sql, "auth_name TEXT NOT NULL,\n"); - strcat (sql, "auth_srid INTEGER NOT NULL,\n"); - strcat (sql, "ref_sys_name TEXT NOT NULL DEFAULT 'Unknown',\n"); - strcat (sql, "proj4text TEXT NOT NULL,\n"); - strcat (sql, "srtext TEXT NOT NULL DEFAULT 'Undefined')"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - goto error; - strcpy (sql, "CREATE UNIQUE INDEX idx_spatial_ref_sys \n"); - strcat (sql, "ON spatial_ref_sys (auth_srid, auth_name)"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - goto error; - updateSpatiaLiteHistory (sqlite, "spatial_ref_sys", NULL, - "table successfully created"); - -/* creating the GEOMETRY_COLUMNS table */ - if (!createGeometryColumns (sqlite)) - goto error; - -/* creating the GEOM_COLS_REF_SYS view */ - strcpy (sql, "CREATE VIEW geom_cols_ref_sys AS\n"); - strcat (sql, "SELECT f_table_name, f_geometry_column, geometry_type,\n"); - strcat (sql, "coord_dimension, spatial_ref_sys.srid AS srid,\n"); - strcat (sql, "auth_name, auth_srid, ref_sys_name, proj4text, srtext\n"); - strcat (sql, "FROM geometry_columns, spatial_ref_sys\n"); - strcat (sql, "WHERE geometry_columns.srid = spatial_ref_sys.srid"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - updateSpatiaLiteHistory (sqlite, "geom_cols_ref_sys", NULL, - "view 'geom_cols_ref_sys' successfully created"); - if (ret != SQLITE_OK) - goto error; - if (!createAdvancedMetaData (sqlite)) - goto error; -/* creating the SpatialIndex VIRTUAL TABLE */ - strcpy (sql, "CREATE VIRTUAL TABLE SpatialIndex "); - strcat (sql, "USING VirtualSpatialIndex()"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - goto error; - if (spatial_ref_sys_init2 (sqlite, mode, 0)) - { - if (mode == GAIA_EPSG_NONE) - updateSpatiaLiteHistory (sqlite, "spatial_ref_sys", NULL, - "table successfully created [empty]"); - else - updateSpatiaLiteHistory (sqlite, "spatial_ref_sys", NULL, - "table successfully populated"); - } - sqlite3_result_int (context, 1); - return; - error: - spatialite_e (" InitSpatiaMetaData() error:\"%s\"\n", errMsg); - sqlite3_free (errMsg); - sqlite3_result_int (context, 0); - return; -} - -static void -fnct_InsertEpsgSrid (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ InsertEpsgSrid(int srid) -/ -/ returns 1 on success: 0 on failure -*/ - int srid; - int ret; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - srid = sqlite3_value_int (argv[0]); - else - { - sqlite3_result_int (context, 0); - return; - } - ret = insert_epsg_srid (sqlite, srid); - if (!ret) - sqlite3_result_int (context, 0); - else - sqlite3_result_int (context, 1); -} - -static int -recoverGeomColumn (sqlite3 * sqlite, const char *table, - const char *column, int xtype, int dims, int srid) -{ -/* checks if TABLE.COLUMN exists and has the required features */ - int ok = 1; - int type; - sqlite3_stmt *stmt; - gaiaGeomCollPtr geom; - const void *blob_value; - int len; - int ret; - int i_col; - int is_nullable = 1; - char *p_table; - char *p_column; - char *sql_statement; - -/* testing if NOT NULL */ - p_table = gaiaDoubleQuotedSql (table); - sql_statement = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", p_table); - free (p_table); - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("recoverGeomColumn: \"%s\"\n", sqlite3_errmsg (sqlite)); - return 0; - } - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - if (strcasecmp - (column, (const char *) sqlite3_column_text (stmt, 1)) == 0) - { - if (sqlite3_column_int (stmt, 2) != 0) - is_nullable = 0; - } - } - } - sqlite3_finalize (stmt); - - p_table = gaiaDoubleQuotedSql (table); - p_column = gaiaDoubleQuotedSql (column); - sql_statement = - sqlite3_mprintf ("SELECT \"%s\" FROM \"%s\"", p_column, p_table); - free (p_table); - free (p_column); -/* compiling SQL prepared statement */ - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("recoverGeomColumn: error %d \"%s\"\n", - sqlite3_errcode (sqlite), sqlite3_errmsg (sqlite)); - return 0; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* checking Geometry features */ - geom = NULL; - for (i_col = 0; i_col < sqlite3_column_count (stmt); i_col++) - { - if (sqlite3_column_type (stmt, i_col) == SQLITE_NULL) - { - /* found a NULL geometry */ - if (!is_nullable) - ok = 0; - } - else if (sqlite3_column_type (stmt, i_col) != SQLITE_BLOB) - ok = 0; - else - { - blob_value = sqlite3_column_blob (stmt, i_col); - len = sqlite3_column_bytes (stmt, i_col); - geom = gaiaFromSpatiaLiteBlobWkb (blob_value, len); - if (!geom) - ok = 0; - else - { - if (geom->DimensionModel != dims) - ok = 0; - if (geom->Srid != srid) - ok = 0; - type = gaiaGeometryType (geom); - if (xtype == -1) - ; /* GEOMETRY */ - else - { - if (xtype == type) - ; - else - ok = 0; - } - gaiaFreeGeomColl (geom); - } - } - } - } - if (!ok) - break; - } - ret = sqlite3_finalize (stmt); - if (ret != SQLITE_OK) - { - spatialite_e ("recoverGeomColumn: error %d \"%s\"\n", - sqlite3_errcode (sqlite), sqlite3_errmsg (sqlite)); - return 0; - } - return ok; -} - -static void -fnct_AddGeometryColumn (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ AddGeometryColumn(table, column, srid, type [ , dimension [ , not-null ] ] ) -/ -/ creates a new COLUMN of given TYPE into TABLE -/ returns 1 on success -/ 0 on failure -*/ - const char *table; - const char *column; - const unsigned char *type; - const unsigned char *txt_dims; - int xtype; - int srid = -1; - int dimension = 2; - int dims = -1; - int auto_dims = -1; - char sql[1024]; - int ret; - int notNull = 0; - int metadata_version; - sqlite3_stmt *stmt; - char *p_table = NULL; - const char *name; - int len; - char *quoted_table; - char *quoted_column; - const char *p_type; - const char *p_dims; - int n_type; - int n_dims; - char *sql_statement; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("AddGeometryColumn() error: argument 1 [table_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - table = (const char *) sqlite3_value_text (argv[0]); - if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) - { - spatialite_e - ("AddGeometryColumn() error: argument 2 [column_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - column = (const char *) sqlite3_value_text (argv[1]); - if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) - { - spatialite_e - ("AddGeometryColumn() error: argument 3 [SRID] is not of the Integer type\n"); - sqlite3_result_int (context, 0); - return; - } - srid = sqlite3_value_int (argv[2]); - if (sqlite3_value_type (argv[3]) != SQLITE_TEXT) - { - spatialite_e - ("AddGeometryColumn() error: argument 4 [geometry_type] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - type = sqlite3_value_text (argv[3]); - if (argc > 4) - { - if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) - { - dimension = sqlite3_value_int (argv[4]); - if (dimension == 2) - dims = GAIA_XY; - if (dimension == 3) - dims = GAIA_XY_Z; - if (dimension == 4) - dims = GAIA_XY_Z_M; - } - else if (sqlite3_value_type (argv[4]) == SQLITE_TEXT) - { - txt_dims = sqlite3_value_text (argv[4]); - if (strcasecmp ((char *) txt_dims, "XY") == 0) - dims = GAIA_XY; - if (strcasecmp ((char *) txt_dims, "XYZ") == 0) - dims = GAIA_XY_Z; - if (strcasecmp ((char *) txt_dims, "XYM") == 0) - dims = GAIA_XY_M; - if (strcasecmp ((char *) txt_dims, "XYZM") == 0) - dims = GAIA_XY_Z_M; - } - else - { - spatialite_e - ("AddGeometryColumn() error: argument 5 [dimension] is not of the Integer or Text type\n"); - sqlite3_result_int (context, 0); - return; - } - } - if (argc == 6) - { - /* optional NOT NULL arg */ - if (sqlite3_value_type (argv[5]) != SQLITE_INTEGER) - { - spatialite_e - ("AddGeometryColumn() error: argument 6 [not null] is not of the Integer type\n"); - sqlite3_result_int (context, 0); - return; - } - notNull = sqlite3_value_int (argv[5]); - } - xtype = GAIA_UNKNOWN; - if (strcasecmp ((char *) type, "POINT") == 0) - { - auto_dims = GAIA_XY; - xtype = GAIA_POINT; - } - if (strcasecmp ((char *) type, "LINESTRING") == 0) - { - auto_dims = GAIA_XY; - xtype = GAIA_LINESTRING; - } - if (strcasecmp ((char *) type, "POLYGON") == 0) - { - auto_dims = GAIA_XY; - xtype = GAIA_POLYGON; - } - if (strcasecmp ((char *) type, "MULTIPOINT") == 0) - { - auto_dims = GAIA_XY; - xtype = GAIA_MULTIPOINT; - } - if (strcasecmp ((char *) type, "MULTILINESTRING") == 0) - { - auto_dims = GAIA_XY; - xtype = GAIA_MULTILINESTRING; - } - if (strcasecmp ((char *) type, "MULTIPOLYGON") == 0) - { - auto_dims = GAIA_XY; - xtype = GAIA_MULTIPOLYGON; - } - if (strcasecmp ((char *) type, "GEOMETRYCOLLECTION") == 0) - { - auto_dims = GAIA_XY; - xtype = GAIA_GEOMETRYCOLLECTION; - } - if (strcasecmp ((char *) type, "GEOMETRY") == 0) - { - auto_dims = GAIA_XY; - xtype = -1; - } - if (strcasecmp ((char *) type, "POINTZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = GAIA_POINT; - } - if (strcasecmp ((char *) type, "LINESTRINGZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = GAIA_LINESTRING; - } - if (strcasecmp ((char *) type, "POLYGONZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = GAIA_POLYGON; - } - if (strcasecmp ((char *) type, "MULTIPOINTZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = GAIA_MULTIPOINT; - } - if (strcasecmp ((char *) type, "MULTILINESTRINGZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = GAIA_MULTILINESTRING; - } - if (strcasecmp ((char *) type, "MULTIPOLYGONZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = GAIA_MULTIPOLYGON; - } - if (strcasecmp ((char *) type, "GEOMETRYCOLLECTIONZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = GAIA_GEOMETRYCOLLECTION; - } - if (strcasecmp ((char *) type, "GEOMETRYZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = -1; - } - if (strcasecmp ((char *) type, "POINTM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = GAIA_POINT; - } - if (strcasecmp ((char *) type, "LINESTRINGM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = GAIA_LINESTRING; - } - if (strcasecmp ((char *) type, "POLYGONM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = GAIA_POLYGON; - } - if (strcasecmp ((char *) type, "MULTIPOINTM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = GAIA_MULTIPOINT; - } - if (strcasecmp ((char *) type, "MULTILINESTRINGM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = GAIA_MULTILINESTRING; - } - if (strcasecmp ((char *) type, "MULTIPOLYGONM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = GAIA_MULTIPOLYGON; - } - if (strcasecmp ((char *) type, "GEOMETRYCOLLECTIONM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = GAIA_GEOMETRYCOLLECTION; - } - if (strcasecmp ((char *) type, "GEOMETRYM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = -1; - } - if (strcasecmp ((char *) type, "POINTZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = GAIA_POINT; - } - if (strcasecmp ((char *) type, "LINESTRINGZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = GAIA_LINESTRING; - } - if (strcasecmp ((char *) type, "POLYGONZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = GAIA_POLYGON; - } - if (strcasecmp ((char *) type, "MULTIPOINTZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = GAIA_MULTIPOINT; - } - if (strcasecmp ((char *) type, "MULTILINESTRINGZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = GAIA_MULTILINESTRING; - } - if (strcasecmp ((char *) type, "MULTIPOLYGONZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = GAIA_MULTIPOLYGON; - } - if (strcasecmp ((char *) type, "GEOMETRYCOLLECTIONZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = GAIA_GEOMETRYCOLLECTION; - } - if (strcasecmp ((char *) type, "GEOMETRYZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = -1; - } - if (xtype == GAIA_UNKNOWN) - { - spatialite_e - ("AddGeometryColumn() error: argument 4 [geometry_type] has an illegal value\n"); - sqlite3_result_int (context, 0); - return; - } - if (dims < 0) - dims = auto_dims; - if (dims == GAIA_XY || dims == GAIA_XY_Z || dims == GAIA_XY_M - || dims == GAIA_XY_Z_M) - ; - else - { - spatialite_e - ("AddGeometryColumn() error: argument 5 [dimension] ILLEGAL VALUE\n"); - sqlite3_result_int (context, 0); - return; - } - if (auto_dims != GAIA_XY && dims != auto_dims) - { - spatialite_e - ("AddGeometryColumn() error: argument 5 [dimension] ILLEGAL VALUE\n"); - sqlite3_result_int (context, 0); - return; - } -/* checking if the table exists */ - strcpy (sql, - "SELECT name FROM sqlite_master WHERE type = 'table' AND Lower(name) = Lower(?)"); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { - spatialite_e ("AddGeometryColumn: \"%s\"\n", sqlite3_errmsg (sqlite)); - sqlite3_result_int (context, 0); - return; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - name = (const char *) sqlite3_column_text (stmt, 0); - len = sqlite3_column_bytes (stmt, 0); - if (p_table) - free (p_table); - p_table = malloc (len + 1); - strcpy (p_table, name); - } - } - sqlite3_finalize (stmt); - if (!p_table) - { - spatialite_e - ("AddGeometryColumn() error: table '%s' does not exist\n", table); - sqlite3_result_int (context, 0); - return; - } - metadata_version = checkSpatialMetaData (sqlite); - if (metadata_version == 1 || metadata_version == 3) - ; - else - { - spatialite_e - ("AddGeometryColumn() error: unexpected metadata layout\n"); - sqlite3_result_int (context, 0); - return; - } -/* trying to add the column */ - switch (xtype) - { - case GAIA_POINT: - p_type = "POINT"; - break; - case GAIA_LINESTRING: - p_type = "LINESTRING"; - break; - case GAIA_POLYGON: - p_type = "POLYGON"; - break; - case GAIA_MULTIPOINT: - p_type = "MULTIPOINT"; - break; - case GAIA_MULTILINESTRING: - p_type = "MULTILINESTRING"; - break; - case GAIA_MULTIPOLYGON: - p_type = "MULTIPOLYGON"; - break; - case GAIA_GEOMETRYCOLLECTION: - p_type = "GEOMETRYCOLLECTION"; - break; - case -1: - p_type = "GEOMETRY"; - break; - }; - quoted_table = gaiaDoubleQuotedSql (p_table); - quoted_column = gaiaDoubleQuotedSql (column); - if (notNull) - { - /* adding a NOT NULL clause */ - sql_statement = - sqlite3_mprintf ("ALTER TABLE \"%s\" ADD COLUMN \"%s\" " - "%s NOT NULL DEFAULT ''", quoted_table, - quoted_column, p_type); - } - else - sql_statement = - sqlite3_mprintf ("ALTER TABLE \"%s\" ADD COLUMN \"%s\" %s ", - quoted_table, quoted_column, p_type); - free (quoted_table); - free (quoted_column); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("AddGeometryColumn: \"%s\"\n", sqlite3_errmsg (sqlite)); - sqlite3_result_int (context, 0); - free (p_table); - return; - } -/*ok, inserting into geometry_columns [Spatial Metadata] */ - if (metadata_version == 1) - { - /* legacy metadata style <= v.3.1.0 */ - switch (xtype) - { - case GAIA_POINT: - p_type = "POINT"; - break; - case GAIA_LINESTRING: - p_type = "LINESTRING"; - break; - case GAIA_POLYGON: - p_type = "POLYGON"; - break; - case GAIA_MULTIPOINT: - p_type = "MULTIPOINT"; - break; - case GAIA_MULTILINESTRING: - p_type = "MULTILINESTRING"; - break; - case GAIA_MULTIPOLYGON: - p_type = "MULTIPOLYGON"; - break; - case GAIA_GEOMETRYCOLLECTION: - p_type = "GEOMETRYCOLLECTION"; - break; - case -1: - p_type = "GEOMETRY"; - break; - }; - switch (dims) - { - case GAIA_XY: - p_dims = "XY"; - break; - case GAIA_XY_Z: - p_dims = "XYZ"; - break; - case GAIA_XY_M: - p_dims = "XYM"; - break; - case GAIA_XY_Z_M: - p_dims = "XYZM"; - break; - }; - sql_statement = sqlite3_mprintf ("INSERT INTO geometry_columns " - "(f_table_name, f_geometry_column, type, coord_dimension, srid, " - "spatial_index_enabled) VALUES (?, ?, %Q, %Q, ?, 0)", - p_type, p_dims); - } - else - { - /* current metadata style >= v.4.0.0 */ - switch (xtype) - { - case GAIA_POINT: - if (dims == GAIA_XY_Z) - n_type = 1001; - else if (dims == GAIA_XY_M) - n_type = 2001; - else if (dims == GAIA_XY_Z_M) - n_type = 3001; - else - n_type = 1; - break; - case GAIA_LINESTRING: - if (dims == GAIA_XY_Z) - n_type = 1002; - else if (dims == GAIA_XY_M) - n_type = 2002; - else if (dims == GAIA_XY_Z_M) - n_type = 3002; - else - n_type = 2; - break; - case GAIA_POLYGON: - if (dims == GAIA_XY_Z) - n_type = 1003; - else if (dims == GAIA_XY_M) - n_type = 2003; - else if (dims == GAIA_XY_Z_M) - n_type = 3003; - else - n_type = 3; - break; - case GAIA_MULTIPOINT: - if (dims == GAIA_XY_Z) - n_type = 1004; - else if (dims == GAIA_XY_M) - n_type = 2004; - else if (dims == GAIA_XY_Z_M) - n_type = 3004; - else - n_type = 4; - break; - case GAIA_MULTILINESTRING: - if (dims == GAIA_XY_Z) - n_type = 1005; - else if (dims == GAIA_XY_M) - n_type = 2005; - else if (dims == GAIA_XY_Z_M) - n_type = 3005; - else - n_type = 5; - break; - case GAIA_MULTIPOLYGON: - if (dims == GAIA_XY_Z) - n_type = 1006; - else if (dims == GAIA_XY_M) - n_type = 2006; - else if (dims == GAIA_XY_Z_M) - n_type = 3006; - else - n_type = 6; - break; - case GAIA_GEOMETRYCOLLECTION: - if (dims == GAIA_XY_Z) - n_type = 1007; - else if (dims == GAIA_XY_M) - n_type = 2007; - else if (dims == GAIA_XY_Z_M) - n_type = 3007; - else - n_type = 7; - break; - case -1: - if (dims == GAIA_XY_Z) - n_type = 1000; - else if (dims == GAIA_XY_M) - n_type = 2000; - else if (dims == GAIA_XY_Z_M) - n_type = 3000; - else - n_type = 0; - break; - }; - switch (dims) - { - case GAIA_XY: - n_dims = 2; - break; - case GAIA_XY_Z: - case GAIA_XY_M: - n_dims = 3; - break; - case GAIA_XY_Z_M: - n_dims = 4; - break; - }; - sql_statement = sqlite3_mprintf ("INSERT INTO geometry_columns " - "(f_table_name, f_geometry_column, geometry_type, coord_dimension, " - "srid, spatial_index_enabled) VALUES (Lower(?), Lower(?), %d, %d, ?, 0)", - n_type, n_dims); - } - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("AddGeometryColumn: \"%s\"\n", sqlite3_errmsg (sqlite)); - sqlite3_result_int (context, 0); - free (p_table); - return; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, p_table, strlen (p_table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - if (srid < 0) - sqlite3_bind_int (stmt, 3, -1); - else - sqlite3_bind_int (stmt, 3, srid); - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("AddGeometryColumn() error: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - goto error; - } - sqlite3_finalize (stmt); - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - - /* inserting a row into GEOMETRY_COLUMNS_AUTH */ - strcpy (sql, - "INSERT OR REPLACE INTO geometry_columns_auth (f_table_name, f_geometry_column, "); - strcat (sql, "read_only, hidden) VALUES (Lower(?), Lower(?), 0, 0)"); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { - spatialite_e ("AddGeometryColumn: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_result_int (context, 0); - free (p_table); - return; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("AddGeometryColumn() error: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - goto error; - } - sqlite3_finalize (stmt); - /* inserting a row into GEOMETRY_COLUMNS_STATISTICS */ - strcpy (sql, - "INSERT OR REPLACE INTO geometry_columns_statistics (f_table_name, f_geometry_column) "); - strcat (sql, "VALUES (Lower(?), Lower(?))"); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { - spatialite_e ("AddGeometryColumn: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_result_int (context, 0); - free (p_table); - return; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("AddGeometryColumn() error: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - goto error; - } - sqlite3_finalize (stmt); - /* inserting a row into GEOMETRY_COLUMNS_TIME */ - strcpy (sql, - "INSERT OR REPLACE INTO geometry_columns_time (f_table_name, f_geometry_column) "); - strcat (sql, "VALUES (Lower(?), Lower(?))"); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { - spatialite_e ("AddGeometryColumn: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_result_int (context, 0); - free (p_table); - return; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("AddGeometryColumn() error: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - goto error; - } - sqlite3_finalize (stmt); - } - updateGeometryTriggers (sqlite, table, column); - sqlite3_result_int (context, 1); - switch (xtype) - { - case GAIA_POINT: - p_type = "POINT"; - break; - case GAIA_LINESTRING: - p_type = "LINESTRING"; - break; - case GAIA_POLYGON: - p_type = "POLYGON"; - break; - case GAIA_MULTIPOINT: - p_type = "MULTIPOINT"; - break; - case GAIA_MULTILINESTRING: - p_type = "MULTILINESTRING"; - break; - case GAIA_MULTIPOLYGON: - p_type = "MULTIPOLYGON"; - break; - case GAIA_GEOMETRYCOLLECTION: - p_type = "GEOMETRYCOLLECTION"; - break; - case -1: - p_type = "GEOMETRY"; - break; - }; - switch (dims) - { - case GAIA_XY: - p_dims = "XY"; - break; - case GAIA_XY_Z: - p_dims = "XYZ"; - break; - case GAIA_XY_M: - p_dims = "XYM"; - break; - case GAIA_XY_Z_M: - p_dims = "XYZM"; - break; - }; - sql_statement = - sqlite3_mprintf ("Geometry [%s,%s,SRID=%d] successfully created", - p_type, p_dims, (srid <= 0) ? -1 : srid); - updateSpatiaLiteHistory (sqlite, table, column, sql_statement); - sqlite3_free (sql_statement); - free (p_table); - return; - error: - sqlite3_result_int (context, 0); - free (p_table); - return; -} - -static void -fnct_RecoverGeometryColumn (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ RecoverGeometryColumn(table, column, srid, type , dimension ) -/ -/ checks if an existing TABLE.COLUMN satisfies the required geometric features -/ if yes adds it to SpatialMetaData and enabling triggers -/ returns 1 on success -/ 0 on failure -*/ - const char *table; - const char *column; - const unsigned char *type; - int xtype; - int xxtype; - int srid = -1; - const unsigned char *txt_dims; - int dimension = 2; - int dims = -1; - int auto_dims = -1; - char sql[1024]; - int ret; - int metadata_version; - sqlite3_stmt *stmt; - int exists = 0; - const char *p_type; - const char *p_dims; - int n_type; - int n_dims; - char *sql_statement; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("RecoverGeometryColumn() error: argument 1 [table_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - table = (const char *) sqlite3_value_text (argv[0]); - if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) - { - spatialite_e - ("RecoverGeometryColumn() error: argument 2 [column_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - column = (const char *) sqlite3_value_text (argv[1]); - if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) - { - spatialite_e - ("RecoverGeometryColumn() error: argument 3 [SRID] is not of the Integer type\n"); - sqlite3_result_int (context, 0); - return; - } - srid = sqlite3_value_int (argv[2]); - if (sqlite3_value_type (argv[3]) != SQLITE_TEXT) - { - spatialite_e - ("RecoverGeometryColumn() error: argument 4 [geometry_type] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - type = sqlite3_value_text (argv[3]); - if (argc == 5) - { - if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) - { - dimension = sqlite3_value_int (argv[4]); - if (dimension == 2) - dims = GAIA_XY; - if (dimension == 3) - dims = GAIA_XY_Z; - if (dimension == 4) - dims = GAIA_XY_Z_M; - } - else if (sqlite3_value_type (argv[4]) == SQLITE_TEXT) - { - txt_dims = sqlite3_value_text (argv[4]); - if (strcasecmp ((char *) txt_dims, "XY") == 0) - dims = GAIA_XY; - if (strcasecmp ((char *) txt_dims, "XYZ") == 0) - dims = GAIA_XY_Z; - if (strcasecmp ((char *) txt_dims, "XYM") == 0) - dims = GAIA_XY_M; - if (strcasecmp ((char *) txt_dims, "XYZM") == 0) - dims = GAIA_XY_Z_M; - } - else - { - spatialite_e - ("RecoverGeometryColumn() error: argument 5 [dimension] is not of the Integer or Text type\n"); - sqlite3_result_int (context, 0); - return; - } - } - xtype = GAIA_UNKNOWN; - if (strcasecmp ((char *) type, "POINT") == 0) - { - auto_dims = GAIA_XY; - xtype = GAIA_POINT; - } - if (strcasecmp ((char *) type, "LINESTRING") == 0) - { - auto_dims = GAIA_XY; - xtype = GAIA_LINESTRING; - } - if (strcasecmp ((char *) type, "POLYGON") == 0) - { - auto_dims = GAIA_XY; - xtype = GAIA_POLYGON; - } - if (strcasecmp ((char *) type, "MULTIPOINT") == 0) - { - auto_dims = GAIA_XY; - xtype = GAIA_MULTIPOINT; - } - if (strcasecmp ((char *) type, "MULTILINESTRING") == 0) - { - auto_dims = GAIA_XY; - xtype = GAIA_MULTILINESTRING; - } - if (strcasecmp ((char *) type, "MULTIPOLYGON") == 0) - { - auto_dims = GAIA_XY; - xtype = GAIA_MULTIPOLYGON; - } - if (strcasecmp ((char *) type, "GEOMETRYCOLLECTION") == 0) - { - auto_dims = GAIA_XY; - xtype = GAIA_GEOMETRYCOLLECTION; - } - if (strcasecmp ((char *) type, "GEOMETRY") == 0) - { - auto_dims = GAIA_XY; - xtype = -1; - } - if (strcasecmp ((char *) type, "POINTZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = GAIA_POINT; - } - if (strcasecmp ((char *) type, "LINESTRINGZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = GAIA_LINESTRING; - } - if (strcasecmp ((char *) type, "POLYGONZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = GAIA_POLYGON; - } - if (strcasecmp ((char *) type, "MULTIPOINTZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = GAIA_MULTIPOINT; - } - if (strcasecmp ((char *) type, "MULTILINESTRINGZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = GAIA_MULTILINESTRING; - } - if (strcasecmp ((char *) type, "MULTIPOLYGONZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = GAIA_MULTIPOLYGON; - } - if (strcasecmp ((char *) type, "GEOMETRYCOLLECTIONZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = GAIA_GEOMETRYCOLLECTION; - } - if (strcasecmp ((char *) type, "GEOMETRYZ") == 0) - { - auto_dims = GAIA_XY_Z; - xtype = -1; - } - if (strcasecmp ((char *) type, "POINTM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = GAIA_POINT; - } - if (strcasecmp ((char *) type, "LINESTRINGM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = GAIA_LINESTRING; - } - if (strcasecmp ((char *) type, "POLYGONM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = GAIA_POLYGON; - } - if (strcasecmp ((char *) type, "MULTIPOINTM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = GAIA_MULTIPOINT; - } - if (strcasecmp ((char *) type, "MULTILINESTRINGM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = GAIA_MULTILINESTRING; - } - if (strcasecmp ((char *) type, "MULTIPOLYGONM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = GAIA_MULTIPOLYGON; - } - if (strcasecmp ((char *) type, "GEOMETRYCOLLECTIONM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = GAIA_GEOMETRYCOLLECTION; - } - if (strcasecmp ((char *) type, "GEOMETRYM") == 0) - { - auto_dims = GAIA_XY_M; - xtype = -1; - } - if (strcasecmp ((char *) type, "POINTZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = GAIA_POINT; - } - if (strcasecmp ((char *) type, "LINESTRINGZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = GAIA_LINESTRING; - } - if (strcasecmp ((char *) type, "POLYGONZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = GAIA_POLYGON; - } - if (strcasecmp ((char *) type, "MULTIPOINTZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = GAIA_MULTIPOINT; - } - if (strcasecmp ((char *) type, "MULTILINESTRINGZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = GAIA_MULTILINESTRING; - } - if (strcasecmp ((char *) type, "MULTIPOLYGONZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = GAIA_MULTIPOLYGON; - } - if (strcasecmp ((char *) type, "GEOMETRYCOLLECTIONZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = GAIA_GEOMETRYCOLLECTION; - } - if (strcasecmp ((char *) type, "GEOMETRYZM") == 0) - { - auto_dims = GAIA_XY_Z_M; - xtype = -1; - } - if (dims < 0) - dims = auto_dims; - if (xtype == GAIA_UNKNOWN) - { - spatialite_e - ("RecoverGeometryColumn() error: argument 4 [geometry_type] has an illegal value\n"); - sqlite3_result_int (context, 0); - return; - } - if (dims == GAIA_XY || dims == GAIA_XY_Z || dims == GAIA_XY_M - || dims == GAIA_XY_Z_M) - ; - else - { - spatialite_e - ("RecoverGeometryColumn() error: argument 5 [dimension] ILLEGAL VALUE\n"); - sqlite3_result_int (context, 0); - return; - } - if (auto_dims != GAIA_XY && dims != auto_dims) - { - spatialite_e - ("RecoverGeometryColumn() error: argument 5 [dimension] ILLEGAL VALUE\n"); - sqlite3_result_int (context, 0); - return; - } - metadata_version = checkSpatialMetaData (sqlite); - if (metadata_version == 1 || metadata_version == 3) - ; - else - { - spatialite_e - ("RecoverGeometryColumn() error: unexpected metadata layout\n"); - sqlite3_result_int (context, 0); - return; - } -/* checking if the table exists */ - strcpy (sql, - "SELECT name FROM sqlite_master WHERE type = 'table' AND Lower(name) = Lower(?)"); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { - spatialite_e ("RecoverGeometryColumn: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_result_int (context, 0); - return; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) - exists = 1; - } - } - sqlite3_finalize (stmt); - if (!exists) - { - spatialite_e - ("RecoverGeometryColumn() error: table '%s' does not exist\n", - table); - sqlite3_result_int (context, 0); - return; - } -/* adjusting the actual GeometryType */ - xxtype = xtype; - xtype = GAIA_UNKNOWN; - if (xxtype == GAIA_POINT) - { - switch (dims) - { - case GAIA_XY_Z: - xtype = GAIA_POINTZ; - break; - case GAIA_XY_M: - xtype = GAIA_POINTM; - break; - case GAIA_XY_Z_M: - xtype = GAIA_POINTZM; - break; - default: - xtype = GAIA_POINT; - break; - }; - } - if (xxtype == GAIA_LINESTRING) - { - switch (dims) - { - case GAIA_XY_Z: - xtype = GAIA_LINESTRINGZ; - break; - case GAIA_XY_M: - xtype = GAIA_LINESTRINGM; - break; - case GAIA_XY_Z_M: - xtype = GAIA_LINESTRINGZM; - break; - default: - xtype = GAIA_LINESTRING; - break; - }; - } - if (xxtype == GAIA_POLYGON) - { - switch (dims) - { - case GAIA_XY_Z: - xtype = GAIA_POLYGONZ; - break; - case GAIA_XY_M: - xtype = GAIA_POLYGONM; - break; - case GAIA_XY_Z_M: - xtype = GAIA_POLYGONZM; - break; - default: - xtype = GAIA_POLYGON; - break; - }; - } - if (xxtype == GAIA_MULTIPOINT) - { - switch (dims) - { - case GAIA_XY_Z: - xtype = GAIA_MULTIPOINTZ; - break; - case GAIA_XY_M: - xtype = GAIA_MULTIPOINTM; - break; - case GAIA_XY_Z_M: - xtype = GAIA_MULTIPOINTZM; - break; - default: - xtype = GAIA_MULTIPOINT; - break; - }; - } - if (xxtype == GAIA_MULTILINESTRING) - { - switch (dims) - { - case GAIA_XY_Z: - xtype = GAIA_MULTILINESTRINGZ; - break; - case GAIA_XY_M: - xtype = GAIA_MULTILINESTRINGM; - break; - case GAIA_XY_Z_M: - xtype = GAIA_MULTILINESTRINGZM; - break; - default: - xtype = GAIA_MULTILINESTRING; - break; - }; - } - if (xxtype == GAIA_MULTIPOLYGON) - { - switch (dims) - { - case GAIA_XY_Z: - xtype = GAIA_MULTIPOLYGONZ; - break; - case GAIA_XY_M: - xtype = GAIA_MULTIPOLYGONM; - break; - case GAIA_XY_Z_M: - xtype = GAIA_MULTIPOLYGONZM; - break; - default: - xtype = GAIA_MULTIPOLYGON; - break; - }; - } - if (xxtype == GAIA_GEOMETRYCOLLECTION) - { - switch (dims) - { - case GAIA_XY_Z: - xtype = GAIA_GEOMETRYCOLLECTIONZ; - break; - case GAIA_XY_M: - xtype = GAIA_GEOMETRYCOLLECTIONM; - break; - case GAIA_XY_Z_M: - xtype = GAIA_GEOMETRYCOLLECTIONZM; - break; - default: - xtype = GAIA_GEOMETRYCOLLECTION; - break; - }; - } - if (xxtype == -1) - xtype = -1; /* GEOMETRY */ - if (!recoverGeomColumn (sqlite, table, column, xtype, dims, srid)) - { - spatialite_e ("RecoverGeometryColumn(): validation failed\n"); - sqlite3_result_int (context, 0); - return; - } -/* deleting anyway any previous definition */ - sql_statement = sqlite3_mprintf ("DELETE FROM geometry_columns " - "WHERE Lower(f_table_name) = Lower(?) AND " - "Lower(f_geometry_column) = Lower(?)"); - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("RecoverGeometryColumn: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_result_int (context, 0); - return; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("RecoverGeometryColumn() error: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - goto error; - } - sqlite3_finalize (stmt); - - if (metadata_version == 1) - { - /* legacy metadata style <= v.3.1.0 */ - switch (xtype) - { - case GAIA_POINT: - case GAIA_POINTZ: - case GAIA_POINTM: - case GAIA_POINTZM: - p_type = "POINT"; - break; - case GAIA_LINESTRING: - case GAIA_LINESTRINGZ: - case GAIA_LINESTRINGM: - case GAIA_LINESTRINGZM: - p_type = "LINESTRING"; - break; - case GAIA_POLYGON: - case GAIA_POLYGONZ: - case GAIA_POLYGONM: - case GAIA_POLYGONZM: - p_type = "POLYGON"; - break; - case GAIA_MULTIPOINT: - case GAIA_MULTIPOINTZ: - case GAIA_MULTIPOINTM: - case GAIA_MULTIPOINTZM: - p_type = "MULTIPOINT"; - break; - case GAIA_MULTILINESTRING: - case GAIA_MULTILINESTRINGZ: - case GAIA_MULTILINESTRINGM: - case GAIA_MULTILINESTRINGZM: - p_type = "MULTILINESTRING"; - break; - case GAIA_MULTIPOLYGON: - case GAIA_MULTIPOLYGONZ: - case GAIA_MULTIPOLYGONM: - case GAIA_MULTIPOLYGONZM: - p_type = "MULTIPOLYGON"; - break; - case GAIA_GEOMETRYCOLLECTION: - case GAIA_GEOMETRYCOLLECTIONZ: - case GAIA_GEOMETRYCOLLECTIONM: - case GAIA_GEOMETRYCOLLECTIONZM: - p_type = "GEOMETRYCOLLECTION"; - break; - case -1: - p_type = "GEOMETRY"; - break; - }; - strcat (sql, "', '"); - switch (dims) - { - case GAIA_XY: - p_dims = "XY"; - break; - case GAIA_XY_Z: - p_dims = "XYZ"; - break; - case GAIA_XY_M: - p_dims = "XYM"; - break; - case GAIA_XY_Z_M: - p_dims = "XYZM"; - break; - }; - sql_statement = sqlite3_mprintf ("INSERT INTO geometry_columns " - "(f_table_name, f_geometry_column, type, coord_dimension, srid, " - "spatial_index_enabled) VALUES (Lower(?), Lower(?), %Q, %Q, ?, 0)", - p_type, p_dims); - } - else - { - /* current metadata style >= v.4.0.0 */ - switch (xtype) - { - case GAIA_POINT: - n_type = 1; - n_dims = 2; - break; - case GAIA_POINTZ: - n_type = 1001; - n_dims = 3; - break; - case GAIA_POINTM: - n_type = 2001; - n_dims = 3; - break; - case GAIA_POINTZM: - n_type = 3001; - n_dims = 4; - break; - case GAIA_LINESTRING: - n_type = 2; - n_dims = 2; - break; - case GAIA_LINESTRINGZ: - n_type = 1002; - n_dims = 3; - break; - case GAIA_LINESTRINGM: - n_type = 2002; - n_dims = 3; - break; - case GAIA_LINESTRINGZM: - n_type = 3002; - n_dims = 4; - break; - case GAIA_POLYGON: - n_type = 3; - n_dims = 3; - break; - case GAIA_POLYGONZ: - n_type = 1003; - n_dims = 3; - break; - case GAIA_POLYGONM: - n_type = 2003; - n_dims = 3; - break; - case GAIA_POLYGONZM: - n_type = 3003; - n_dims = 4; - break; - case GAIA_MULTIPOINT: - n_type = 4; - n_dims = 2; - break; - case GAIA_MULTIPOINTZ: - n_type = 1004; - n_dims = 3; - break; - case GAIA_MULTIPOINTM: - n_type = 2004; - n_dims = 3; - break; - case GAIA_MULTIPOINTZM: - n_type = 3004; - n_dims = 4; - break; - case GAIA_MULTILINESTRING: - n_type = 5; - n_dims = 2; - break; - case GAIA_MULTILINESTRINGZ: - n_type = 1005; - n_dims = 3; - break; - case GAIA_MULTILINESTRINGM: - n_type = 2005; - n_dims = 3; - break; - case GAIA_MULTILINESTRINGZM: - n_type = 3005; - n_dims = 4; - break; - case GAIA_MULTIPOLYGON: - n_type = 6; - n_dims = 2; - break; - case GAIA_MULTIPOLYGONZ: - n_type = 1006; - n_dims = 3; - break; - case GAIA_MULTIPOLYGONM: - n_type = 2006; - n_dims = 3; - break; - case GAIA_MULTIPOLYGONZM: - n_type = 3006; - n_dims = 4; - break; - case GAIA_GEOMETRYCOLLECTION: - n_type = 7; - n_dims = 2; - break; - case GAIA_GEOMETRYCOLLECTIONZ: - n_type = 1007; - n_dims = 3; - break; - case GAIA_GEOMETRYCOLLECTIONM: - n_type = 2007; - n_dims = 3; - break; - case GAIA_GEOMETRYCOLLECTIONZM: - n_type = 3007; - n_dims = 4; - break; - case -1: - switch (dims) - { - case GAIA_XY: - n_type = 0; - n_dims = 2; - break; - case GAIA_XY_Z: - n_type = 1000; - n_dims = 3; - break; - case GAIA_XY_M: - n_type = 2000; - n_dims = 3; - break; - case GAIA_XY_Z_M: - n_type = 3000; - n_dims = 4; - break; - }; - break; - }; - sql_statement = sqlite3_mprintf ("INSERT INTO geometry_columns " - "(f_table_name, f_geometry_column, geometry_type, coord_dimension, " - "srid, spatial_index_enabled) VALUES (Lower(?), Lower(?), %d, %d, ?, 0)", - n_type, n_dims); - } - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("RecoverGeometryColumn: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_result_int (context, 0); - return; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - if (srid < 0) - sqlite3_bind_int (stmt, 3, -1); - else - sqlite3_bind_int (stmt, 3, srid); - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("RecoverGeometryColumn() error: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - goto error; - } - sqlite3_finalize (stmt); - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - - /* inserting a row into GEOMETRY_COLUMNS_AUTH */ - strcpy (sql, - "INSERT OR REPLACE INTO geometry_columns_auth (f_table_name, f_geometry_column, "); - strcat (sql, "read_only, hidden) VALUES (Lower(?), Lower(?), 0, 0)"); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { - spatialite_e ("RecoverGeometryColumn: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_result_int (context, 0); - return; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("RecoverGeometryColumn() error: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - goto error; - } - sqlite3_finalize (stmt); - /* inserting a row into GEOMETRY_COLUMNS_STATISTICS */ - strcpy (sql, - "INSERT OR REPLACE INTO geometry_columns_statistics (f_table_name, f_geometry_column) "); - strcat (sql, "VALUES (Lower(?), Lower(?))"); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { - spatialite_e ("RecoverGeometryColumn: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_result_int (context, 0); - return; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("RecoverGeometryColumn() error: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - goto error; - } - sqlite3_finalize (stmt); - /* inserting a row into GEOMETRY_COLUMNS_TIME */ - strcpy (sql, - "INSERT OR REPLACE INTO geometry_columns_time (f_table_name, f_geometry_column) "); - strcat (sql, "VALUES (Lower(?), Lower(?))"); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { - spatialite_e ("RecoverGeometryColumn: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_result_int (context, 0); - return; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("RecoverGeometryColumn() error: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - goto error; - } - sqlite3_finalize (stmt); - } - updateGeometryTriggers (sqlite, table, column); - sqlite3_result_int (context, 1); - switch (xtype) - { - case GAIA_POINT: - case GAIA_POINTZ: - case GAIA_POINTM: - case GAIA_POINTZM: - p_type = "POINT"; - break; - case GAIA_LINESTRING: - case GAIA_LINESTRINGZ: - case GAIA_LINESTRINGM: - case GAIA_LINESTRINGZM: - p_type = "LINESTRING"; - break; - case GAIA_POLYGON: - case GAIA_POLYGONZ: - case GAIA_POLYGONM: - case GAIA_POLYGONZM: - p_type = "POLYGON"; - break; - case GAIA_MULTIPOINT: - case GAIA_MULTIPOINTZ: - case GAIA_MULTIPOINTM: - case GAIA_MULTIPOINTZM: - p_type = "MULTIPOINT"; - break; - case GAIA_MULTILINESTRING: - case GAIA_MULTILINESTRINGZ: - case GAIA_MULTILINESTRINGM: - case GAIA_MULTILINESTRINGZM: - p_type = "MULTILINESTRING"; - break; - case GAIA_MULTIPOLYGON: - case GAIA_MULTIPOLYGONZ: - case GAIA_MULTIPOLYGONM: - case GAIA_MULTIPOLYGONZM: - p_type = "MULTIPOLYGON"; - break; - case GAIA_GEOMETRYCOLLECTION: - case GAIA_GEOMETRYCOLLECTIONZ: - case GAIA_GEOMETRYCOLLECTIONM: - case GAIA_GEOMETRYCOLLECTIONZM: - p_type = "GEOMETRYCOLLECTION"; - break; - case -1: - p_type = "GEOMETRY"; - break; - }; - switch (dims) - { - case GAIA_XY: - p_dims = "XY"; - break; - case GAIA_XY_Z: - p_dims = "XYZ"; - break; - case GAIA_XY_M: - p_dims = "XYM"; - break; - case GAIA_XY_Z_M: - p_dims = "XYZM"; - break; - }; - sql_statement = - sqlite3_mprintf ("Geometry [%s,%s,SRID=%d] successfully recovered", - p_type, p_dims, (srid <= 0) ? -1 : srid); - updateSpatiaLiteHistory (sqlite, table, column, sql_statement); - sqlite3_free (sql_statement); - return; - error: - sqlite3_result_int (context, 0); - return; -} - -static void -fnct_DiscardGeometryColumn (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ DiscardGeometryColumn(table, column) -/ -/ removes TABLE.COLUMN from the Spatial MetaData [thus disabling triggers too] -/ returns 1 on success -/ 0 on failure -*/ - const unsigned char *table; - const unsigned char *column; - char *p_table = NULL; - char *p_column = NULL; - sqlite3_stmt *stmt; - char *sql_statement; - char *raw; - char *quoted; - char *errMsg = NULL; - int ret; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("DiscardGeometryColumn() error: argument 1 [table_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - table = sqlite3_value_text (argv[0]); - if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) - { - spatialite_e - ("DiscardGeometryColumn() error: argument 2 [column_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - column = sqlite3_value_text (argv[1]); - - sql_statement = sqlite3_mprintf ("DELETE FROM geometry_columns " - "WHERE Lower(f_table_name) = Lower(?) " - "AND Lower(f_geometry_column) = Lower(?)"); - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("DiscardGeometryColumn: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_result_int (context, 0); - return; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, (const char *) table, - strlen ((const char *) table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, (const char *) column, - strlen ((const char *) column), SQLITE_STATIC); - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("DiscardGeometryColumn() error: \"%s\"\n", - sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - goto error; - } - sqlite3_finalize (stmt); -/* removing triggers too */ - if (!getRealSQLnames - (sqlite, (const char *) table, (const char *) column, &p_table, - &p_column)) - { - spatialite_e - ("DiscardGeometryColumn() error: not existing Table or Column\n"); - sqlite3_result_int (context, 0); - return; - } - raw = sqlite3_mprintf ("ggi_%s_%s", p_table, p_column); - quoted = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("ggu_%s_%s", p_table, p_column); - quoted = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("gii_%s_%s", p_table, p_column); - quoted = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("giu_%s_%s", p_table, p_column); - quoted = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("gid_%s_%s", p_table, p_column); - quoted = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("gci_%s_%s", p_table, p_column); - quoted = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("gcu_%s_%s", p_table, p_column); - quoted = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("gcd_%s_%s", p_table, p_column); - quoted = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("tmi_%s_%s", p_table, p_column); - quoted = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("tmu_%s_%s", p_table, p_column); - quoted = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("tmd_%s_%s", p_table, p_column); - quoted = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - - /* trying to delete old versions [v2.0, v2.2] triggers[if any] */ - raw = sqlite3_mprintf ("gti_%s_%s", p_table, p_column); - quoted = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("gtu_%s_%s", p_table, p_column); - quoted = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("gsi_%s_%s", p_table, p_column); - quoted = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - raw = sqlite3_mprintf ("gsu_%s_%s", p_table, p_column); - quoted = gaiaDoubleQuotedSql (raw); - sqlite3_free (raw); - sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - /* end deletion old versions [v2.0, v2.2] triggers[if any] */ - - sqlite3_result_int (context, 1); - updateSpatiaLiteHistory (sqlite, p_table, - p_column, "Geometry successfully discarded"); - free (p_table); - free (p_column); - return; - error: - if (p_table) - free (p_table); - if (p_column) - free (p_column); - spatialite_e ("DiscardGeometryColumn() error: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - sqlite3_result_int (context, 0); - return; -} - -static int -registerVirtual (sqlite3 * sqlite, const char *table) -{ -/* attempting to register a VirtualGeometry */ - char gtype[64]; - int xtype = -1; - int srid; - char **results; - int ret; - int rows; - int columns; - int i; - char *errMsg = NULL; - int ok_virt_name = 0; - int ok_virt_geometry = 0; - int ok_srid = 0; - int ok_geometry_type = 0; - int ok_type = 0; - int ok_coord_dimension = 0; - int xdims; - char *quoted; - char *sql_statement; - -/* testing the layout of virts_geometry_columns table */ - ret = - sqlite3_get_table (sqlite, "PRAGMA table_info(virts_geometry_columns)", - &results, &rows, &columns, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("RegisterVirtualGeometry() error: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - return 0; - } - for (i = 1; i <= rows; i++) - { - if (strcasecmp ("virt_name", results[(i * columns) + 1]) == 0) - ok_virt_name = 1; - if (strcasecmp ("virt_geometry", results[(i * columns) + 1]) == 0) - ok_virt_geometry = 1; - if (strcasecmp ("srid", results[(i * columns) + 1]) == 0) - ok_srid = 1; - if (strcasecmp ("geometry_type", results[(i * columns) + 1]) == 0) - ok_geometry_type = 1; - if (strcasecmp ("type", results[(i * columns) + 1]) == 0) - ok_type = 1; - if (strcasecmp ("coord_dimension", results[(i * columns) + 1]) == 0) - ok_coord_dimension = 1; - } - sqlite3_free_table (results); - - if (ok_virt_name && ok_virt_geometry && ok_srid && ok_geometry_type - && ok_coord_dimension) - ; - else if (ok_virt_name && ok_virt_geometry && ok_srid && ok_type) - ; - else - return 0; - -/* determining Geometry Type and dims */ - quoted = gaiaDoubleQuotedSql (table); - sql_statement = - sqlite3_mprintf ("SELECT DISTINCT " - "ST_GeometryType(Geometry), ST_Srid(Geometry) FROM \"%s\"", - quoted); - free (quoted); - ret = - sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("RegisterVirtualGeometry() error: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - return 0; - } - for (i = 1; i <= rows; i++) - { - if (results[(i * columns)] == NULL) - *gtype = '\0'; - else - strcpy (gtype, results[(i * columns)]); - if (results[(i * columns) + 1] == NULL) - srid = 0; - else - srid = atoi (results[(i * columns) + 1]); - } - sqlite3_free_table (results); - -/* normalized Geometry type */ - if (strcmp (gtype, "POINT") == 0) - xtype = 1; - if (strcmp (gtype, "POINT Z") == 0) - xtype = 1001; - if (strcmp (gtype, "POINT M") == 0) - xtype = 2001; - if (strcmp (gtype, "POINT ZM") == 0) - xtype = 3001; - if (strcmp (gtype, "LINESTRING") == 0) - xtype = 2; - if (strcmp (gtype, "LINESTRING Z") == 0) - xtype = 1002; - if (strcmp (gtype, "LINESTRING M") == 0) - xtype = 2002; - if (strcmp (gtype, "LINESTRING ZM") == 0) - xtype = 3002; - if (strcmp (gtype, "POLYGON") == 0) - xtype = 3; - if (strcmp (gtype, "POLYGON Z") == 0) - xtype = 1003; - if (strcmp (gtype, "POLYGON M") == 0) - xtype = 2003; - if (strcmp (gtype, "POLYGON ZM") == 0) - xtype = 3003; - if (strcmp (gtype, "MULTIPOINT") == 0) - xtype = 4; - if (strcmp (gtype, "MULTIPOINT Z") == 0) - xtype = 1004; - if (strcmp (gtype, "MULTIPOINT M") == 0) - xtype = 2004; - if (strcmp (gtype, "MULTIPOINT ZM") == 0) - xtype = 3004; - if (strcmp (gtype, "MULTILINESTRING") == 0) - xtype = 5; - if (strcmp (gtype, "MULTILINESTRING Z") == 0) - xtype = 1005; - if (strcmp (gtype, "MULTILINESTRING M") == 0) - xtype = 2005; - if (strcmp (gtype, "MULTILINESTRING ZM") == 0) - xtype = 3005; - if (strcmp (gtype, "MULTIPOLYGON") == 0) - xtype = 6; - if (strcmp (gtype, "MULTIPOLYGON Z") == 0) - xtype = 1006; - if (strcmp (gtype, "MULTIPOLYGON M") == 0) - xtype = 2006; - if (strcmp (gtype, "MULTIPOLYGON ZM") == 0) - xtype = 3006; - -/* updating metadata tables */ - xdims = -1; - switch (xtype) - { - case 1: - case 2: - case 3: - case 4: - case 5: - case 6: - xdims = 2; - break; - case 1001: - case 1002: - case 1003: - case 1004: - case 1005: - case 1006: - case 2001: - case 2002: - case 2003: - case 2004: - case 2005: - case 2006: - xdims = 3; - break; - case 3001: - case 3002: - case 3003: - case 3004: - case 3005: - case 3006: - xdims = 4; - break; - }; - if (ok_geometry_type) - { - /* has the "geometry_type" column */ - sql_statement = - sqlite3_mprintf ("INSERT OR REPLACE INTO virts_geometry_columns " - "(virt_name, virt_geometry, geometry_type, coord_dimension, srid) " - "VALUES (Lower(%Q), 'geometry', %d, %d, %d)", - table, xtype, xdims, srid); - } - else - { - /* has the "type" column */ - const char *xgtype = "UNKNOWN"; - switch (xtype) - { - case 1: - case 1001: - case 2001: - case 3001: - xgtype = "POINT"; - break; - case 2: - case 1002: - case 2002: - case 3002: - xgtype = "LINESTRING"; - break; - case 3: - case 1003: - case 2003: - case 3003: - xgtype = "POLYGON"; - break; - case 4: - case 1004: - case 2004: - case 3004: - xgtype = "MULTIPOINT"; - break; - case 5: - case 1005: - case 2005: - case 3005: - xgtype = "MULTILINESTRING"; - break; - case 6: - case 1006: - case 2006: - case 3006: - xgtype = "MULTIPOLYGON"; - break; - }; - sql_statement = - sqlite3_mprintf ("INSERT OR REPLACE INTO virts_geometry_columns " - "(virt_name, virt_geometry, type, srid) " - "VALUES (Lower(%Q), 'geometry', %Q, %d)", table, - xgtype, srid); - } - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("RegisterVirtualGeometry() error: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - return 0; - } - if (checkSpatialMetaData (sqlite) == 3) - { - /* current metadata style >= v.4.0.0 */ - - /* inserting a row into VIRTS_GEOMETRY_COLUMNS_AUTH */ - sql_statement = sqlite3_mprintf ("INSERT OR REPLACE INTO " - "virts_geometry_columns_auth (virt_name, virt_geometry, hidden) " - "VALUES (Lower(%Q), 'geometry', 0)", - table); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("RegisterVirtualGeometry() error: \"%s\"\n", - errMsg); - sqlite3_free (errMsg); - return 0; - } - /* inserting a row into GEOMETRY_COLUMNS_STATISTICS */ - sql_statement = sqlite3_mprintf ("INSERT OR REPLACE INTO " - "virts_geometry_columns_statistics (virt_name, virt_geometry) " - "VALUES (Lower(%Q), 'geometry')", - table); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("RegisterVirtualGeometry() error: \"%s\"\n", - errMsg); - sqlite3_free (errMsg); - return 0; - } - } - return 1; -} - -static void -fnct_RegisterVirtualGeometry (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ RegisterVirtualGeometry(table) -/ -/ insert/updates TABLE.COLUMN into the Spatial MetaData [Virtual Table] -/ returns 1 on success -/ 0 on failure -*/ - const unsigned char *table; - char sql[1024]; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("RegisterVirtualGeometry() error: argument 1 [table_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - table = sqlite3_value_text (argv[0]); - if (!registerVirtual (sqlite, (char *) table)) - goto error; - sqlite3_result_int (context, 1); - strcpy (sql, "Virtual Geometry successfully registered"); - updateSpatiaLiteHistory (sqlite, (const char *) table, "Geometry", sql); - return; - error: - spatialite_e ("RegisterVirtualGeometry() error\n"); - sqlite3_result_int (context, 0); - return; -} - - -static void -fnct_DropVirtualGeometry (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ DropVirtualGeometry(table) -/ -/ removes TABLE.COLUMN from the Spatial MetaData and DROPs the Virtual Table -/ returns 1 on success -/ 0 on failure -*/ - const unsigned char *table; - char *sql_statement; - char *errMsg = NULL; - int ret; - char *quoted; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("DropVirtualGeometry() error: argument 1 [table_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - table = sqlite3_value_text (argv[0]); - sql_statement = sqlite3_mprintf ("DELETE FROM virts_geometry_columns " - "WHERE Lower(virt_name) = Lower(%Q)", - table); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - quoted = gaiaDoubleQuotedSql ((const char *) table); - sql_statement = sqlite3_mprintf ("DROP TABLE IF EXISTS \"%s\"", quoted); - free (quoted); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - sqlite3_result_int (context, 1); - updateSpatiaLiteHistory (sqlite, (const char *) table, "Geometry", - "Virtual Geometry successfully dropped"); - return; - error: - spatialite_e ("DropVirtualGeometry() error: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - sqlite3_result_int (context, 0); - return; -} - -static void -fnct_InitFDOSpatialMetaData (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ InitFDOSpatialMetaData(void) -/ -/ creates the FDO-styled SPATIAL_REF_SYS and GEOMETRY_COLUMNS tables -/ returns 1 on success -/ 0 on failure -*/ - char sql[1024]; - char *errMsg = NULL; - int ret; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ -/* creating the SPATIAL_REF_SYS tables */ - strcpy (sql, "CREATE TABLE spatial_ref_sys (\n"); - strcat (sql, "srid INTEGER PRIMARY KEY,\n"); - strcat (sql, "auth_name TEXT,\n"); - strcat (sql, "auth_srid INTEGER,\n"); - strcat (sql, "srtext TEXT)"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - goto error; -/* creating the GEOMETRY_COLUMN tables */ - strcpy (sql, "CREATE TABLE geometry_columns (\n"); - strcat (sql, "f_table_name TEXT,\n"); - strcat (sql, "f_geometry_column TEXT,\n"); - strcat (sql, "geometry_type INTEGER,\n"); - strcat (sql, "coord_dimension INTEGER,\n"); - strcat (sql, "srid INTEGER,\n"); - strcat (sql, "geometry_format TEXT)"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); - if (ret != SQLITE_OK) - goto error; - sqlite3_result_int (context, 1); - return; - error: - spatialite_e ("InitFDOSpatiaMetaData() error: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - sqlite3_result_int (context, 0); - return; -} - -static int -recoverFDOGeomColumn (sqlite3 * sqlite, const unsigned char *table, - const unsigned char *column, int xtype, int srid) -{ -/* checks if TABLE.COLUMN exists and has the required features */ - int ok = 1; - char *sql_statement; - int type; - sqlite3_stmt *stmt; - gaiaGeomCollPtr geom; - const void *blob_value; - int len; - int ret; - int i_col; - char *xcolumn; - char *xtable; - xcolumn = gaiaDoubleQuotedSql ((char *) column); - xtable = gaiaDoubleQuotedSql ((char *) table); - sql_statement = - sqlite3_mprintf ("SELECT \"%s\" FROM \"%s\"", xcolumn, xtable); - free (xcolumn); - free (xtable); -/* compiling SQL prepared statement */ - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("recoverFDOGeomColumn: error %d \"%s\"\n", - sqlite3_errcode (sqlite), sqlite3_errmsg (sqlite)); - return 0; - } - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - /* checking Geometry features */ - geom = NULL; - for (i_col = 0; i_col < sqlite3_column_count (stmt); i_col++) - { - if (sqlite3_column_type (stmt, i_col) != SQLITE_BLOB) - ok = 0; - else - { - blob_value = sqlite3_column_blob (stmt, i_col); - len = sqlite3_column_bytes (stmt, i_col); - geom = gaiaFromSpatiaLiteBlobWkb (blob_value, len); - if (!geom) - ok = 0; - else - { - if (geom->Srid != srid) - ok = 0; - /* normalizing Geometry Type */ - switch (gaiaGeometryType (geom)) - { - case GAIA_POINT: - case GAIA_POINTZ: - case GAIA_POINTM: - case GAIA_POINTZM: - type = GAIA_POINT; - break; - case GAIA_LINESTRING: - case GAIA_LINESTRINGZ: - case GAIA_LINESTRINGM: - case GAIA_LINESTRINGZM: - type = GAIA_LINESTRING; - break; - case GAIA_POLYGON: - case GAIA_POLYGONZ: - case GAIA_POLYGONM: - case GAIA_POLYGONZM: - type = GAIA_POLYGON; - break; - case GAIA_MULTIPOINT: - case GAIA_MULTIPOINTZ: - case GAIA_MULTIPOINTM: - case GAIA_MULTIPOINTZM: - type = GAIA_MULTIPOINT; - break; - case GAIA_MULTILINESTRING: - case GAIA_MULTILINESTRINGZ: - case GAIA_MULTILINESTRINGM: - case GAIA_MULTILINESTRINGZM: - type = GAIA_MULTILINESTRING; - break; - case GAIA_MULTIPOLYGON: - case GAIA_MULTIPOLYGONZ: - case GAIA_MULTIPOLYGONM: - case GAIA_MULTIPOLYGONZM: - type = GAIA_MULTIPOLYGON; - break; - case GAIA_GEOMETRYCOLLECTION: - case GAIA_GEOMETRYCOLLECTIONZ: - case GAIA_GEOMETRYCOLLECTIONM: - case GAIA_GEOMETRYCOLLECTIONZM: - type = GAIA_GEOMETRYCOLLECTION; - break; - default: - type = -1; - break; - }; - if (xtype == type) - ; - else - ok = 0; - gaiaFreeGeomColl (geom); - } - } - } - } - if (!ok) - break; - } - ret = sqlite3_finalize (stmt); - if (ret != SQLITE_OK) - { - spatialite_e ("recoverFDOGeomColumn: error %d \"%s\"\n", - sqlite3_errcode (sqlite), sqlite3_errmsg (sqlite)); - return 0; - } - return ok; -} - -static void -fnct_AddFDOGeometryColumn (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ AddFDOGeometryColumn(table, column, srid, geometry_type , dimension, geometry_format ) -/ -/ creates a new COLUMN of given TYPE into TABLE -/ returns 1 on success -/ 0 on failure -*/ - const char *table; - const char *column; - const char *format; - char xformat[64]; - int type; - int srid = -1; - int dimension = 2; - char *sql_statement; - char *errMsg = NULL; - int ret; - char **results; - int rows; - int columns; - int i; - int oktbl; - char *xtable; - char *xcolumn; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("AddFDOGeometryColumn() error: argument 1 [table_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - table = (const char *) sqlite3_value_text (argv[0]); - if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) - { - spatialite_e - ("AddFDOGeometryColumn() error: argument 2 [column_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - column = (const char *) sqlite3_value_text (argv[1]); - if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) - { - spatialite_e - ("AddFDOGeometryColumn() error: argument 3 [SRID] is not of the Integer type\n"); - sqlite3_result_int (context, 0); - return; - } - srid = sqlite3_value_int (argv[2]); - if (sqlite3_value_type (argv[3]) != SQLITE_INTEGER) - { - spatialite_e - ("AddFDOGeometryColumn() error: argument 4 [geometry_type] is not of the Integer type\n"); - sqlite3_result_int (context, 0); - return; - } - type = sqlite3_value_int (argv[3]); - if (sqlite3_value_type (argv[4]) != SQLITE_INTEGER) - { - spatialite_e - ("AddFDOGeometryColumn() error: argument 5 [dimension] is not of the Integer type\n"); - sqlite3_result_int (context, 0); - return; - } - dimension = sqlite3_value_int (argv[4]); - if (sqlite3_value_type (argv[5]) != SQLITE_TEXT) - { - spatialite_e - ("AddFDOGeometryColumn() error: argument 6 [geometry_format] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - format = (const char *) sqlite3_value_text (argv[5]); - if (type == - GAIA_POINT - || type == - GAIA_LINESTRING - || type == - GAIA_POLYGON - || type == - GAIA_MULTIPOINT - || type == - GAIA_MULTILINESTRING - || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) - ; - else - { - spatialite_e - ("AddFDOGeometryColumn() error: argument 4 [geometry_type] has an illegal value\n"); - sqlite3_result_int (context, 0); - return; - } - if (dimension < 2 || dimension > 4) - { - spatialite_e - ("AddFDOGeometryColumn() error: argument 5 [dimension] current version only accepts dimension=2,3,4\n"); - sqlite3_result_int (context, 0); - return; - } - if (strcasecmp (format, "WKT") == 0) - strcpy (xformat, "WKT"); - else if (strcasecmp (format, "WKB") == 0) - strcpy (xformat, "WKB"); - else if (strcasecmp (format, "FGF") == 0) - strcpy (xformat, "FGF"); - else if (strcasecmp (format, "SPATIALITE") == 0) - strcpy (xformat, "SPATIALITE"); - else - { - spatialite_e - ("AddFDOGeometryColumn() error: argument 6 [geometry_format] has to be one of: WKT,WKB,FGF,SPATIALITE\n"); - sqlite3_result_int (context, 0); - return; - } -/* checking if the table exists */ - xtable = gaiaDoubleQuotedSql (table); - xcolumn = gaiaDoubleQuotedSql (column); - sql_statement = sqlite3_mprintf ("SELECT name FROM sqlite_master " - "WHERE type = 'table' AND Upper(name) = Upper(%Q)", - table); - free (xtable); - free (xcolumn); - ret = - sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("AddFDOGeometryColumn: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - return; - } - oktbl = 0; - for (i = 1; i <= rows; i++) - oktbl = 1; - sqlite3_free_table (results); - if (!oktbl) - { - spatialite_e - ("AddFDOGeometryColumn() error: table '%s' does not exist\n", - table); - sqlite3_result_int (context, 0); - return; - } -/* trying to add the column */ - xtable = gaiaDoubleQuotedSql (table); - xcolumn = gaiaDoubleQuotedSql (column); - sql_statement = sqlite3_mprintf ("ALTER TABLE \"%s\" " - "ADD COLUMN \"%s\" BLOB", xtable, xcolumn); - free (xtable); - free (xcolumn); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; -/*ok, inserting into geometry_columns [FDO Spatial Metadata] */ - sql_statement = sqlite3_mprintf ("INSERT INTO geometry_columns " - "(f_table_name, f_geometry_column, geometry_type, " - "coord_dimension, srid, geometry_format) VALUES (%Q, %Q, %d, %d, %d, %Q)", - table, column, type, dimension, - (srid <= 0) ? -1 : srid, xformat); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - sqlite3_result_int (context, 1); - return; - error: - spatialite_e ("AddFDOGeometryColumn() error: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - sqlite3_result_int (context, 0); - return; -} - -static void -fnct_RecoverFDOGeometryColumn (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ RecoverFDOGeometryColumn(table, column, srid, geometry_type , dimension, geometry_format ) -/ -/ checks if an existing TABLE.COLUMN satisfies the required geometric features -/ if yes adds it to FDO-styled SpatialMetaData -/ returns 1 on success -/ 0 on failure -*/ - const char *table; - const char *column; - const char *format; - char xformat[64]; - int type; - int srid = -1; - int dimension = 2; - char *sql_statement; - char *errMsg = NULL; - int ret; - char **results; - int rows; - int columns; - int i; - int ok_tbl; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("RecoverFDOGeometryColumn() error: argument 1 [table_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - table = (const char *) sqlite3_value_text (argv[0]); - if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) - { - spatialite_e - ("RecoverFDOGeometryColumn() error: argument 2 [column_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - column = (const char *) sqlite3_value_text (argv[1]); - if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) - { - spatialite_e - ("RecoverFDOGeometryColumn() error: argument 3 [SRID] is not of the Integer type\n"); - sqlite3_result_int (context, 0); - return; - } - srid = sqlite3_value_int (argv[2]); - if (sqlite3_value_type (argv[3]) != SQLITE_INTEGER) - { - spatialite_e - ("RecoverFDOGeometryColumn() error: argument 4 [geometry_type] is not of the Integer type\n"); - sqlite3_result_int (context, 0); - return; - } - type = sqlite3_value_int (argv[3]); - if (sqlite3_value_type (argv[4]) != SQLITE_INTEGER) - { - spatialite_e - ("RecoverFDOGeometryColumn() error: argument 5 [dimension] is not of the Integer type\n"); - sqlite3_result_int (context, 0); - return; - } - dimension = sqlite3_value_int (argv[4]); - if (sqlite3_value_type (argv[5]) != SQLITE_TEXT) - { - spatialite_e - ("RecoverFDOGeometryColumn() error: argument 6 [geometry_format] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - format = (const char *) sqlite3_value_text (argv[5]); - if (type == - GAIA_POINT - || type == - GAIA_LINESTRING - || type == - GAIA_POLYGON - || type == - GAIA_MULTIPOINT - || type == - GAIA_MULTILINESTRING - || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) - ; - else - { - spatialite_e - ("RecoverFDOGeometryColumn() error: argument 4 [geometry_type] has an illegal value\n"); - sqlite3_result_int (context, 0); - return; - } - if (dimension < 2 || dimension > 4) - { - spatialite_e - ("RecoverFDOGeometryColumn() error: argument 5 [dimension] current version only accepts dimension=2,3,4\n"); - sqlite3_result_int (context, 0); - return; - } - if (strcasecmp (format, "WKT") == 0) - strcpy (xformat, "WKT"); - else if (strcasecmp (format, "WKB") == 0) - strcpy (xformat, "WKB"); - else if (strcasecmp (format, "FGF") == 0) - strcpy (xformat, "FGF"); - else if (strcasecmp (format, "SPATIALITE") == 0) - strcpy (xformat, "SPATIALITE"); - else - { - spatialite_e - ("RecoverFDOGeometryColumn() error: argument 6 [geometry_format] has to be one of: WKT,WKB,FGF\n"); - sqlite3_result_int (context, 0); - return; - } -/* checking if the table exists */ - sql_statement = sqlite3_mprintf ("SELECT name FROM sqlite_master " - "WHERE type = 'table' AND Upper(name) = Upper(%Q)", - table); - ret = - sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("RecoverFDOGeometryColumn: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - return; - } - ok_tbl = 0; - for (i = 1; i <= rows; i++) - ok_tbl = 1; - sqlite3_free_table (results); - if (!ok_tbl) - { - spatialite_e - ("RecoverFDOGeometryColumn() error: table '%s' does not exist\n", - table); - sqlite3_result_int (context, 0); - return; - } - if (!recoverFDOGeomColumn - (sqlite, (const unsigned char *) table, - (const unsigned char *) column, type, srid)) - { - spatialite_e ("RecoverFDOGeometryColumn(): validation failed\n"); - sqlite3_result_int (context, 0); - return; - } - sql_statement = sqlite3_mprintf ("INSERT INTO geometry_columns " - "(f_table_name, f_geometry_column, geometry_type, " - "coord_dimension, srid, geometry_format) VALUES (%Q, %Q, %d, %d, %d, %Q)", - table, column, type, dimension, - (srid <= 0) ? -1 : srid, xformat); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - sqlite3_result_int (context, 1); - return; - error: - spatialite_e ("RecoverFDOGeometryColumn() error: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - sqlite3_result_int (context, 0); - return; -} - -static void -fnct_DiscardFDOGeometryColumn (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ DiscardFDOGeometryColumn(table, column) -/ -/ removes TABLE.COLUMN from the Spatial MetaData -/ returns 1 on success -/ 0 on failure -*/ - const unsigned char *table; - const unsigned char *column; - char *sql_statement; - char *errMsg = NULL; - int ret; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("DiscardFDOGeometryColumn() error: argument 1 [table_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - table = sqlite3_value_text (argv[0]); - if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) - { - spatialite_e - ("DiscardFDOGeometryColumn() error: argument 2 [column_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - column = sqlite3_value_text (argv[1]); - sql_statement = - sqlite3_mprintf - ("DELETE FROM geometry_columns WHERE Upper(f_table_name) = " - "Upper(%Q) AND Upper(f_geometry_column) = Upper(%Q)", table, column); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - sqlite3_result_int (context, 1); - return; - error: - spatialite_e ("DiscardFDOGeometryColumn() error: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - sqlite3_result_int (context, 0); - return; -} - -static int -eval_rtree_entry (int ok_geom, double geom_value, int ok_rtree, - double rtree_value) -{ -/* evaluating geom-coord and rtree-coord */ - if (!ok_geom && !ok_rtree) - return 1; - if (ok_geom && ok_rtree) - { - float g = (float) geom_value; - float r = (float) rtree_value; - if (g != r) - return 0; - return 1; - } - return 0; -} - -static int -check_spatial_index (sqlite3 * sqlite, const unsigned char *table, - const unsigned char *geom) -{ -/* attempting to check an R*Tree for consistency */ - char *xtable = NULL; - char *xgeom = NULL; - char *idx_name; - char *xidx_name = NULL; - char sql[1024]; - char *sql_statement; - int ret; - int is_defined = 0; - sqlite3_stmt *stmt; - sqlite3_int64 count_geom; - sqlite3_int64 count_rtree; - double g_xmin; - double g_ymin; - double g_xmax; - double g_ymax; - int ok_g_xmin; - int ok_g_ymin; - int ok_g_xmax; - int ok_g_ymax; - double i_xmin; - double i_ymin; - double i_xmax; - double i_ymax; - int ok_i_xmin; - int ok_i_ymin; - int ok_i_xmax; - int ok_i_ymax; - -/* checking if the R*Tree Spatial Index is defined */ - sql_statement = sqlite3_mprintf ("SELECT Count(*) FROM geometry_columns " - "WHERE Upper(f_table_name) = Upper(%Q) " - "AND Upper(f_geometry_column) = Upper(%Q) AND spatial_index_enabled = 1", - table, geom); - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CheckSpatialIndex SQL error: %s\n", - sqlite3_errmsg (sqlite)); - goto err_label; - } - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - is_defined = sqlite3_column_int (stmt, 0); - else - { - printf ("sqlite3_step() error: %s\n", sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - goto err_label; - } - } - sqlite3_finalize (stmt); - if (!is_defined) - goto err_label; - - xgeom = gaiaDoubleQuotedSql ((char *) geom); - xtable = gaiaDoubleQuotedSql ((char *) table); - idx_name = sqlite3_mprintf ("idx_%s_%s", table, geom); - xidx_name = gaiaDoubleQuotedSql (idx_name); - sqlite3_free (idx_name); - -/* counting how many Geometries are set into the main-table */ - sql_statement = sqlite3_mprintf ("SELECT Count(*) FROM \"%s\" " - "WHERE ST_GeometryType(\"%s\") IS NOT NULL", - xtable, xgeom); - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CheckSpatialIndex SQL error: %s\n", - sqlite3_errmsg (sqlite)); - goto err_label; - } - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - count_geom = sqlite3_column_int (stmt, 0); - else - { - printf ("sqlite3_step() error: %s\n", sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - goto err_label; - } - } - sqlite3_finalize (stmt); - -/* counting how many R*Tree entries are defined */ - sql_statement = sqlite3_mprintf ("SELECT Count(*) FROM \"%s\"", xidx_name); - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CheckSpatialIndex SQL error: %s\n", - sqlite3_errmsg (sqlite)); - goto err_label; - } - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - count_rtree = sqlite3_column_int (stmt, 0); - else - { - printf ("sqlite3_step() error: %s\n", sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - goto err_label; - } - } - sqlite3_finalize (stmt); - if (count_geom != count_rtree) - { - /* unexpected count difference */ - goto mismatching_zero; - } - -/* checking the geometry-table against the corresponding R*Tree */ - sql_statement = - sqlite3_mprintf ("SELECT MbrMinX(g.\"%s\"), MbrMinY(g.\"%s\"), " - "MbrMaxX(g.\"%s\"), MbrMaxY(g.\"%s\"), i.xmin, i.ymin, i.xmax, i.ymax\n" - "FROM \"%s\" AS g\nLEFT JOIN \"%s\" AS i ON (g.ROWID = i.pkid)", - xgeom, xgeom, xgeom, xgeom, xtable, xidx_name); - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CheckSpatialIndex SQL error: %s\n", - sqlite3_errmsg (sqlite)); - goto err_label; - } - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - /* checking a row */ - ok_g_xmin = 1; - ok_g_ymin = 1; - ok_g_xmax = 1; - ok_g_ymax = 1; - ok_i_xmin = 1; - ok_i_ymin = 1; - ok_i_xmax = 1; - ok_i_ymax = 1; - if (sqlite3_column_type (stmt, 0) == SQLITE_NULL) - ok_g_xmin = 0; - else - g_xmin = sqlite3_column_double (stmt, 0); - if (sqlite3_column_type (stmt, 1) == SQLITE_NULL) - ok_g_ymin = 0; - else - g_ymin = sqlite3_column_double (stmt, 1); - if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) - ok_g_xmax = 0; - else - g_xmax = sqlite3_column_double (stmt, 2); - if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) - ok_g_ymax = 0; - else - g_ymax = sqlite3_column_double (stmt, 3); - if (sqlite3_column_type (stmt, 4) == SQLITE_NULL) - ok_i_xmin = 0; - else - i_xmin = sqlite3_column_double (stmt, 4); - if (sqlite3_column_type (stmt, 5) == SQLITE_NULL) - ok_i_ymin = 0; - else - i_ymin = sqlite3_column_double (stmt, 5); - if (sqlite3_column_type (stmt, 6) == SQLITE_NULL) - ok_i_xmax = 0; - else - i_xmax = sqlite3_column_double (stmt, 6); - if (sqlite3_column_type (stmt, 7) == SQLITE_NULL) - ok_i_ymax = 0; - else - i_ymax = sqlite3_column_double (stmt, 7); - if (eval_rtree_entry (ok_g_xmin, g_xmin, ok_i_xmin, i_xmin) == - 0) - goto mismatching; - if (eval_rtree_entry (ok_g_ymin, g_ymin, ok_i_ymin, i_ymin) == - 0) - goto mismatching; - if (eval_rtree_entry (ok_g_xmax, g_xmax, ok_i_xmax, i_xmax) == - 0) - goto mismatching; - if (eval_rtree_entry (ok_g_ymax, g_ymax, ok_i_ymax, i_ymax) == - 0) - goto mismatching; - } - else - { - printf ("sqlite3_step() error: %s\n", sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - goto err_label; - } - } -/* we have now to finalize the query [memory cleanup] */ - sqlite3_finalize (stmt); - - -/* now we'll check the R*Tree against the corresponding geometry-table */ - sql_statement = - sqlite3_mprintf ("SELECT MbrMinX(g.\"%s\"), MbrMinY(g.\"%s\"), " - "MbrMaxX(g.\"%s\"), MbrMaxY(g.\"%s\"), i.xmin, i.ymin, i.xmax, i.ymax\n" - "FROM \"%s\" AS i\nLEFT JOIN \"%s\" AS g ON (g.ROWID = i.pkid)", - xgeom, xgeom, xgeom, xgeom, xidx_name, xtable); - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CheckSpatialIndex SQL error: %s\n", - sqlite3_errmsg (sqlite)); - goto err_label; - } - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - /* checking a row */ - ok_g_xmin = 1; - ok_g_ymin = 1; - ok_g_xmax = 1; - ok_g_ymax = 1; - ok_i_xmin = 1; - ok_i_ymin = 1; - ok_i_xmax = 1; - ok_i_ymax = 1; - if (sqlite3_column_type (stmt, 0) == SQLITE_NULL) - ok_g_xmin = 0; - else - g_xmin = sqlite3_column_double (stmt, 0); - if (sqlite3_column_type (stmt, 1) == SQLITE_NULL) - ok_g_ymin = 0; - else - g_ymin = sqlite3_column_double (stmt, 1); - if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) - ok_g_xmax = 0; - else - g_xmax = sqlite3_column_double (stmt, 2); - if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) - ok_g_ymax = 0; - else - g_ymax = sqlite3_column_double (stmt, 3); - if (sqlite3_column_type (stmt, 4) == SQLITE_NULL) - ok_i_xmin = 0; - else - i_xmin = sqlite3_column_double (stmt, 4); - if (sqlite3_column_type (stmt, 5) == SQLITE_NULL) - ok_i_ymin = 0; - else - i_ymin = sqlite3_column_double (stmt, 5); - if (sqlite3_column_type (stmt, 6) == SQLITE_NULL) - ok_i_xmax = 0; - else - i_xmax = sqlite3_column_double (stmt, 6); - if (sqlite3_column_type (stmt, 7) == SQLITE_NULL) - ok_i_ymax = 0; - else - i_ymax = sqlite3_column_double (stmt, 7); - if (eval_rtree_entry (ok_g_xmin, g_xmin, ok_i_xmin, i_xmin) == - 0) - goto mismatching; - if (eval_rtree_entry (ok_g_ymin, g_ymin, ok_i_ymin, i_ymin) == - 0) - goto mismatching; - if (eval_rtree_entry (ok_g_xmax, g_xmax, ok_i_xmax, i_xmax) == - 0) - goto mismatching; - if (eval_rtree_entry (ok_g_ymax, g_ymax, ok_i_ymax, i_ymax) == - 0) - goto mismatching; - } - else - { - printf ("sqlite3_step() error: %s\n", sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - goto err_label; - } - } - sqlite3_finalize (stmt); - strcpy (sql, "Check SpatialIndex: is valid"); - updateSpatiaLiteHistory (sqlite, (const char *) table, - (const char *) geom, sql); - free (xgeom); - free (xtable); - free (xidx_name); - return 1; - mismatching: - sqlite3_finalize (stmt); - strcpy (sql, "Check SpatialIndex: INCONSISTENCIES detected"); - updateSpatiaLiteHistory (sqlite, (const char *) table, - (const char *) geom, sql); - mismatching_zero: - if (xgeom) - free (xgeom); - if (xtable) - free (xtable); - if (xidx_name) - free (xidx_name); - return 0; - err_label: - if (xgeom) - free (xgeom); - if (xtable) - free (xtable); - if (xidx_name) - free (xidx_name); - return -1; -} - -static int -check_any_spatial_index (sqlite3 * sqlite) -{ -/* attempting to check any defined R*Tree for consistency */ - const unsigned char *table; - const unsigned char *column; - int status; - char sql[1024]; - int ret; - int invalid_rtree = 0; - sqlite3_stmt *stmt; - -/* retrieving any defined R*Tree */ - strcpy (sql, - "SELECT f_table_name, f_geometry_column FROM geometry_columns "); - strcat (sql, "WHERE spatial_index_enabled = 1"); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { - spatialite_e ("CheckSpatialIndex SQL error: %s\n", - sqlite3_errmsg (sqlite)); - return -1; - } - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - /* checking a single R*Tree */ - table = sqlite3_column_text (stmt, 0); - column = sqlite3_column_text (stmt, 1); - status = check_spatial_index (sqlite, table, column); - if (status < 0) - { - sqlite3_finalize (stmt); - return -1; - } - if (status == 0) - invalid_rtree = 1; - } - else - { - printf ("sqlite3_step() error: %s\n", sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - return -1; - } - } - sqlite3_finalize (stmt); - if (invalid_rtree) - return 0; - return 1; -} - -static void -fnct_CheckSpatialIndex (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ CheckSpatialIndex() -/ CheckSpatialIndex(table, column) -/ -/ checks a SpatialIndex for consistency, returning: -/ 1 - the R*Tree is fully consistent -/ 0 - the R*Tree is inconsistent -/ NULL on failure -*/ - const unsigned char *table; - const unsigned char *column; - int status; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (argc == 0) - { - /* no arguments: we must check any defined R*Tree */ - status = check_any_spatial_index (sqlite); - if (status < 0) - sqlite3_result_null (context); - else if (status > 0) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); - return; - } - - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("CheckSpatialIndex() error: argument 1 [table_name] is not of the String type\n"); - sqlite3_result_null (context); - return; - } - table = sqlite3_value_text (argv[0]); - if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) - { - spatialite_e - ("CheckSpatialIndex() error: argument 2 [column_name] is not of the String type\n"); - sqlite3_result_null (context); - return; - } - column = sqlite3_value_text (argv[1]); - status = check_spatial_index (sqlite, table, column); - if (status < 0) - sqlite3_result_null (context); - else if (status > 0) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); -} - -static int -recover_spatial_index (sqlite3 * sqlite, const unsigned char *table, - const unsigned char *geom) -{ -/* attempting to rebuild an R*Tree */ - char *sql_statement; - char *errMsg = NULL; - int ret; - char *idx_name; - char *xidx_name; - char sql[1024]; - int is_defined = 0; - sqlite3_stmt *stmt; - -/* checking if the R*Tree Spatial Index is defined */ - sql_statement = sqlite3_mprintf ("SELECT Count(*) FROM geometry_columns " - "WHERE Upper(f_table_name) = Upper(%Q) " - "AND Upper(f_geometry_column) = Upper(%Q) AND spatial_index_enabled = 1", - table, geom); - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("RecoverSpatialIndex SQL error: %s\n", - sqlite3_errmsg (sqlite)); - return -1; - } - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - is_defined = sqlite3_column_int (stmt, 0); - else - { - printf ("sqlite3_step() error: %s\n", sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - return -1; - } - } - sqlite3_finalize (stmt); - if (!is_defined) - return -1; - -/* erasing the R*Tree table */ - idx_name = sqlite3_mprintf ("idx_%s_%s", table, geom); - xidx_name = gaiaDoubleQuotedSql (idx_name); - sqlite3_free (idx_name); - sql_statement = sqlite3_mprintf ("DELETE FROM \"%s\"", xidx_name); - free (xidx_name); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; -/* populating the R*Tree table from scratch */ - buildSpatialIndex (sqlite, table, (const char *) geom); - strcpy (sql, "SpatialIndex: successfully recovered"); - updateSpatiaLiteHistory (sqlite, (const char *) table, - (const char *) geom, sql); - return 1; - error: - spatialite_e ("RecoverSpatialIndex() error: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - return 0; -} - -static int -recover_any_spatial_index (sqlite3 * sqlite, int no_check) -{ -/* attempting to rebuild any defined R*Tree */ - const unsigned char *table; - const unsigned char *column; - int status; - char sql[1024]; - int ret; - int to_be_fixed; - sqlite3_stmt *stmt; - -/* retrieving any defined R*Tree */ - strcpy (sql, - "SELECT f_table_name, f_geometry_column FROM geometry_columns "); - strcat (sql, "WHERE spatial_index_enabled = 1"); - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { - spatialite_e ("RecoverSpatialIndex SQL error: %s\n", - sqlite3_errmsg (sqlite)); - return -1; - } - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - /* checking a single R*Tree */ - table = sqlite3_column_text (stmt, 0); - column = sqlite3_column_text (stmt, 1); - to_be_fixed = 1; - if (!no_check) - { - status = check_spatial_index (sqlite, table, column); - if (status < 0) - { - /* some unexpected error occurred */ - goto fatal_error; - } - else if (status > 0) - { - /* the Spatial Index is already valid */ - to_be_fixed = 0; - } - } - if (to_be_fixed) - { - /* rebuilding the Spatial Index */ - status = recover_spatial_index (sqlite, table, column); - if (status < 0) - { - /* some unexpected error occurred */ - goto fatal_error; - } - else if (status == 0) - goto error; - } - } - else - { - printf ("sqlite3_step() error: %s\n", sqlite3_errmsg (sqlite)); - sqlite3_finalize (stmt); - return -1; - } - } - sqlite3_finalize (stmt); - return 1; - error: - sqlite3_finalize (stmt); - return 0; - fatal_error: - sqlite3_finalize (stmt); - return -1; -} - -static void -fnct_RecoverSpatialIndex (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ RecoverSpatialIndex() -/ RecoverSpatialIndex(no_check) -/ RecoverSpatialIndex(table, column) -/ RecoverSpatialIndex(table, column, no_check) -/ -/ attempts to rebuild a SpatialIndex, returning: -/ 1 - on success -/ 0 - on failure -/ NULL if any syntax error is detected -*/ - const unsigned char *table; - const unsigned char *column; - int no_check = 0; - int status; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (argc <= 1) - { - /* no arguments: we must rebuild any defined R*Tree */ - if (argc == 1) - { - if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - no_check = sqlite3_value_int (argv[0]); - else - { - spatialite_e - ("RecoverSpatialIndex() error: argument 1 [no_check] is not of the Integer type\n"); - sqlite3_result_null (context); - return; - } - } - status = recover_any_spatial_index (sqlite, no_check); - if (status < 0) - sqlite3_result_null (context); - else if (status > 0) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); - return; - } - - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("RecoverSpatialIndex() error: argument 1 [table_name] is not of the String type\n"); - sqlite3_result_null (context); - return; - } - table = sqlite3_value_text (argv[0]); - if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) - { - spatialite_e - ("RecoverSpatialIndex() error: argument 2 [column_name] is not of the String type\n"); - sqlite3_result_null (context); - return; - } - column = sqlite3_value_text (argv[1]); - if (argc == 3) - { - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - no_check = sqlite3_value_int (argv[2]); - else - { - spatialite_e - ("RecoverSpatialIndex() error: argument 2 [no_check] is not of the Integer type\n"); - sqlite3_result_null (context); - return; - } - } - if (!no_check) - { - /* checking the current SpatialIndex validity */ - status = check_spatial_index (sqlite, table, column); - if (status < 0) - { - /* some unexpected error occurred */ - sqlite3_result_null (context); - return; - } - else if (status > 0) - { - /* the Spatial Index is already valid */ - sqlite3_result_int (context, 1); - return; - } - } -/* rebuilding the Spatial Index */ - status = recover_spatial_index (sqlite, table, column); - if (status < 0) - sqlite3_result_null (context); - else if (status > 0) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); -} - -static void -fnct_CreateSpatialIndex (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ CreateSpatialIndex(table, column ) -/ -/ creates a SpatialIndex based on Column and Table -/ returns 1 on success -/ 0 on failure -*/ - const char *table; - const char *column; - char *sql_statement; - char sql[1024]; - char *errMsg = NULL; - int ret; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("CreateSpatialIndex() error: argument 1 [table_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - table = (const char *) sqlite3_value_text (argv[0]); - if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) - { - spatialite_e - ("CreateSpatialIndex() error: argument 2 [column_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - column = (const char *) sqlite3_value_text (argv[1]); - sql_statement = - sqlite3_mprintf - ("UPDATE geometry_columns SET spatial_index_enabled = 1 " - "WHERE Upper(f_table_name) = Upper(%Q) AND " - "Upper(f_geometry_column) = Upper(%Q) AND spatial_index_enabled = 0", - table, column); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - if (sqlite3_changes (sqlite) == 0) - { - spatialite_e - ("CreateSpatialIndex() error: either \"%s\".\"%s\" isn't a Geometry column or a SpatialIndex is already defined\n", - table, column); - sqlite3_result_int (context, 0); - return; - } - updateGeometryTriggers (sqlite, table, column); - sqlite3_result_int (context, 1); - strcpy (sql, "R*Tree Spatial Index successfully created"); - updateSpatiaLiteHistory (sqlite, table, column, sql); - return; - error: - spatialite_e ("CreateSpatialIndex() error: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - sqlite3_result_int (context, 0); - return; -} - -static void -fnct_CreateMbrCache (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ CreateMbrCache(table, column ) -/ -/ creates an MBR Cache based on Column and Table -/ returns 1 on success -/ 0 on failure -*/ - const char *table; - const char *column; - char *sql_statement; - char sql[1024]; - char *errMsg = NULL; - int ret; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("CreateMbrCache() error: argument 1 [table_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - table = (const char *) sqlite3_value_text (argv[0]); - if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) - { - spatialite_e - ("CreateMbrCache() error: argument 2 [column_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - column = (const char *) sqlite3_value_text (argv[1]); - sql_statement = - sqlite3_mprintf - ("UPDATE geometry_columns SET spatial_index_enabled = 2 " - "WHERE Upper(f_table_name) = Upper(%Q) " - "AND Upper(f_geometry_column) = Upper(%Q) AND spatial_index_enabled = 0", - table, column); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - if (sqlite3_changes (sqlite) == 0) - { - spatialite_e - ("CreateMbrCache() error: either \"%s\".\"%s\" isn't a Geometry column or a SpatialIndex is already defined\n", - table, column); - sqlite3_result_int (context, 0); - return; - } - updateGeometryTriggers (sqlite, table, column); - sqlite3_result_int (context, 1); - strcpy (sql, "MbrCache successfully created"); - updateSpatiaLiteHistory (sqlite, table, column, sql); - return; - error: - spatialite_e ("CreateMbrCache() error: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - sqlite3_result_int (context, 0); - return; -} - -static void -fnct_DisableSpatialIndex (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ DisableSpatialIndex(table, column ) -/ -/ disables a SpatialIndex based on Column and Table -/ returns 1 on success -/ 0 on failure -*/ - const char *table; - const char *column; - char sql[1024]; - char *sql_statement; - char *errMsg = NULL; - int ret; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("DisableSpatialIndex() error: argument 1 [table_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - table = (const char *) sqlite3_value_text (argv[0]); - if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) - { - spatialite_e - ("DisableSpatialIndex() error: argument 2 [column_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - column = (const char *) sqlite3_value_text (argv[1]); - - sql_statement = - sqlite3_mprintf - ("UPDATE geometry_columns SET spatial_index_enabled = 0 " - "WHERE Upper(f_table_name) = Upper(%Q) AND " - "Upper(f_geometry_column) = Upper(%Q) AND spatial_index_enabled <> 0", - table, column); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - if (sqlite3_changes (sqlite) == 0) - { - spatialite_e - ("DisableSpatialIndex() error: either \"%s\".\"%s\" isn't a Geometry column or no SpatialIndex is defined\n", - table, column); - sqlite3_result_int (context, 0); - return; - } - updateGeometryTriggers (sqlite, table, column); - sqlite3_result_int (context, 1); - strcpy (sql, "SpatialIndex successfully disabled"); - updateSpatiaLiteHistory (sqlite, table, column, sql); - return; - error: - spatialite_e ("DisableSpatialIndex() error: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - sqlite3_result_int (context, 0); - return; -} - -static void -fnct_RebuildGeometryTriggers (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ RebuildGeometryTriggers(table, column ) -/ -/ rebuilds Geometry Triggers (constraints) based on Column and Table -/ returns 1 on success -/ 0 on failure -*/ - const char *table; - const char *column; - char *sql_statement; - char *errMsg = NULL; - int ret; - char **results; - int rows; - int columns; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("RebuildGeometryTriggers() error: argument 1 [table_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - table = (const char *) sqlite3_value_text (argv[0]); - if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) - { - spatialite_e - ("RebuildGeometryTriggers() error: argument 2 [column_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - column = (const char *) sqlite3_value_text (argv[1]); - sql_statement = - sqlite3_mprintf ("SELECT f_table_name FROM geometry_columns " - "WHERE Upper(f_table_name) = Upper(%Q) AND Upper(f_geometry_column) = Upper (%Q)", - table, column); - ret = - sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto error; - sqlite3_free_table (results); - if (rows <= 0) - { - spatialite_e - ("RebuildGeometryTriggers() error: \"%s\".\"%s\" isn't a Geometry column\n", - table, column); - sqlite3_result_int (context, 0); - return; - } - updateGeometryTriggers (sqlite, table, column); - sqlite3_result_int (context, 1); - updateSpatiaLiteHistory (sqlite, table, column, - "Geometry Triggers successfully rebuilt"); - return; - error: - spatialite_e ("RebuildGeometryTriggers() error: \"%s\"\n", errMsg); - sqlite3_free (errMsg); - sqlite3_result_int (context, 0); - return; -} - -static void -fnct_UpdateLayerStatistics (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ UpdateLayerStatistics(table, column ) -/ -/ Updates LAYER_STATISTICS [based on Column and Table] -/ returns 1 on success -/ 0 on failure -*/ - const char *sql; - const char *table = NULL; - const char *column = NULL; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (argc >= 1) - { - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("UpdateLayerStatistics() error: argument 1 [table_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - table = (const char *) sqlite3_value_text (argv[0]); - } - if (argc >= 2) - { - if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) - { - spatialite_e - ("UpdateLayerStatistics() error: argument 2 [column_name] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - column = (const char *) sqlite3_value_text (argv[1]); - } - if (!update_layer_statistics (sqlite, table, column)) - goto error; - sqlite3_result_int (context, 1); - sql = "UpdateLayerStatistics"; - if (table == NULL) - table = "ALL-TABLES"; - if (column == NULL) - column = "ALL-GEOMETRY-COLUMNS"; - updateSpatiaLiteHistory (sqlite, (const char *) table, - (const char *) column, sql); - return; - error: - sqlite3_result_int (context, 0); - return; -} - -static gaiaPointPtr -simplePoint (gaiaGeomCollPtr geo) -{ -/* helper function -/ if this GEOMETRY contains only one POINT, and no other elementary geometry -/ the POINT address will be returned -/ otherwise NULL will be returned -*/ - int cnt = 0; - gaiaPointPtr point; - gaiaPointPtr this_point = NULL; - if (!geo) - return NULL; - if (geo->FirstLinestring || geo->FirstPolygon) - return NULL; - point = geo->FirstPoint; - while (point) - { - /* counting how many POINTs are there */ - cnt++; - this_point = point; - point = point->Next; - } - if (cnt == 1 && this_point) - return this_point; - return NULL; -} - -static gaiaLinestringPtr -simpleLinestring (gaiaGeomCollPtr geo) -{ -/* helper function -/ if this GEOMETRY contains only one LINESTRING, and no other elementary geometry -/ the LINESTRING address will be returned -/ otherwise NULL will be returned -*/ - int cnt = 0; - gaiaLinestringPtr line; - gaiaLinestringPtr this_line = NULL; - if (!geo) - return NULL; - if (geo->FirstPoint || geo->FirstPolygon) - return NULL; - line = geo->FirstLinestring; - while (line) - { - /* counting how many LINESTRINGs are there */ - cnt++; - this_line = line; - line = line->Next; - } - if (cnt == 1 && this_line) - return this_line; - return NULL; -} - -static gaiaPolygonPtr -simplePolygon (gaiaGeomCollPtr geo) -{ -/* helper function -/ if this GEOMETRY contains only one POLYGON, and no other elementary geometry -/ the POLYGON address will be returned -/ otherwise NULL will be returned -*/ - int cnt = 0; - gaiaPolygonPtr polyg; - gaiaPolygonPtr this_polyg = NULL; - if (!geo) - return NULL; - if (geo->FirstPoint || geo->FirstLinestring) - return NULL; - polyg = geo->FirstPolygon; - while (polyg) - { - /* counting how many POLYGONs are there */ - cnt++; - this_polyg = polyg; - polyg = polyg->Next; - } - if (cnt == 1 && this_polyg) - return this_polyg; - return NULL; -} - -static void -fnct_AsText (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ AsText(BLOB encoded geometry) -/ -/ returns the corresponding WKT encoded value -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - gaiaOutBuffer out_buf; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - gaiaOutBufferInitialize (&out_buf); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaOutWkt (&out_buf, geo); - if (out_buf.Error || out_buf.Buffer == NULL) - sqlite3_result_null (context); - else - { - len = out_buf.WriteOffset; - sqlite3_result_text (context, out_buf.Buffer, len, free); - out_buf.Buffer = NULL; - } - } - gaiaFreeGeomColl (geo); - gaiaOutBufferReset (&out_buf); -} - -static void -fnct_AsWkt (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ AsWkt(BLOB encoded geometry [, Integer precision]) -/ -/ returns the corresponding WKT encoded value -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - int precision = 15; - gaiaOutBuffer out_buf; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (argc == 2) - { - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - precision = sqlite3_value_int (argv[1]); - else - { - sqlite3_result_null (context); - return; - } - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - gaiaOutBufferInitialize (&out_buf); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaOutWktStrict (&out_buf, geo, precision); - if (out_buf.Error || out_buf.Buffer == NULL) - sqlite3_result_null (context); - else - { - len = out_buf.WriteOffset; - sqlite3_result_text (context, out_buf.Buffer, len, free); - out_buf.Buffer = NULL; - } - } - gaiaFreeGeomColl (geo); - gaiaOutBufferReset (&out_buf); -} - -/* -/ -/ AsSvg(geometry,[relative], [precision]) implementation -/ -//////////////////////////////////////////////////////////// -/ -/ Author: Klaus Foerster klaus.foerster@svg.cc -/ version 0.9. 2008 September 21 - / - */ - -static void -fnct_AsSvg (sqlite3_context * context, int argc, sqlite3_value ** argv, - int relative, int precision) -{ -/* SQL function: - AsSvg(BLOB encoded geometry, [int relative], [int precision]) - returns the corresponding SVG encoded value or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - gaiaOutBuffer out_buf; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - { - sqlite3_result_null (context); - return; - } - else - { - /* make sure relative is 0 or 1 */ - if (relative > 0) - relative = 1; - else - relative = 0; - /* make sure precision is between 0 and 15 - default to 6 if absent */ - if (precision > GAIA_SVG_DEFAULT_MAX_PRECISION) - precision = GAIA_SVG_DEFAULT_MAX_PRECISION; - if (precision < 0) - precision = 0; - /* produce SVG-notation - actual work is done in gaiageo/gg_wkt.c */ - gaiaOutBufferInitialize (&out_buf); - gaiaOutSvg (&out_buf, geo, relative, precision); - if (out_buf.Error || out_buf.Buffer == NULL) - sqlite3_result_null (context); - else - { - len = out_buf.WriteOffset; - sqlite3_result_text (context, out_buf.Buffer, len, free); - out_buf.Buffer = NULL; - } - } - gaiaFreeGeomColl (geo); - gaiaOutBufferReset (&out_buf); -} - -static void -fnct_AsSvg1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* called without additional arguments */ - fnct_AsSvg (context, argc, argv, GAIA_SVG_DEFAULT_RELATIVE, - GAIA_SVG_DEFAULT_PRECISION); -} - -static void -fnct_AsSvg2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* called with relative-switch */ - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - fnct_AsSvg (context, argc, argv, sqlite3_value_int (argv[1]), - GAIA_SVG_DEFAULT_PRECISION); - else - sqlite3_result_null (context); -} - -static void -fnct_AsSvg3 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* called with relative-switch and precision-argument */ - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER - && sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - fnct_AsSvg (context, argc, argv, sqlite3_value_int (argv[1]), - sqlite3_value_int (argv[2])); - else - sqlite3_result_null (context); -} - -/* END of Klaus Foerster AsSvg() implementation */ - -SPATIALITE_PRIVATE void -getProjParams (void *p_sqlite, int srid, char **proj_params) -{ -/* retrives the PROJ params from SPATIAL_SYS_REF table, if possible */ - sqlite3 *sqlite = (sqlite3 *) p_sqlite; - char *sql; - char **results; - int rows; - int columns; - int i; - int ret; - int len; - const char *proj4text; - char *errMsg = NULL; - *proj_params = NULL; - sql = - sqlite3_mprintf - ("SELECT proj4text FROM spatial_ref_sys WHERE srid = %d", srid); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - spatialite_e ("unknown SRID: %d\t<%s>\n", srid, errMsg); - sqlite3_free (errMsg); - return; - } - for (i = 1; i <= rows; i++) - { - proj4text = results[(i * columns)]; - if (proj4text != NULL) - { - len = strlen (proj4text); - *proj_params = malloc (len + 1); - strcpy (*proj_params, proj4text); - } - } - if (*proj_params == NULL) - spatialite_e ("unknown SRID: %d\n", srid); - sqlite3_free_table (results); -} - -#ifndef OMIT_PROJ /* PROJ.4 is strictly required to support KML */ -static void -fnct_AsKml1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ AsKml(BLOB encoded geometry [, Integer precision]) -/ -/ returns the corresponding 'bare geom' KML representation -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - gaiaOutBuffer out_buf; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geo_wgs84; - char *proj_from; - char *proj_to; - int precision = 15; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - if (argc == 2) - { - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - precision = sqlite3_value_int (argv[1]); - else - { - sqlite3_result_null (context); - return; - } - } - gaiaOutBufferInitialize (&out_buf); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (geo->Srid == 4326) - ; /* already WGS84 */ - else if (geo->Srid <= 0) - { - /* unknown SRID: giving up */ - sqlite3_result_null (context); - goto stop; - } - else - { - /* attempting to reproject into WGS84 */ - getProjParams (sqlite, geo->Srid, &proj_from); - getProjParams (sqlite, 4326, &proj_to); - if (proj_to == NULL || proj_from == NULL) - { - if (proj_from) - free (proj_from); - if (proj_to) - free (proj_to); - sqlite3_result_null (context); - goto stop; - } - geo_wgs84 = gaiaTransform (geo, proj_from, proj_to); - free (proj_from); - free (proj_to); - if (!geo_wgs84) - { - sqlite3_result_null (context); - goto stop; - } - /* ok, reprojection was successful */ - gaiaFreeGeomColl (geo); - geo = geo_wgs84; - } - /* produce KML-notation - actual work is done in gaiageo/gg_wkt.c */ - gaiaOutBareKml (&out_buf, geo, precision); - if (out_buf.Error || out_buf.Buffer == NULL) - sqlite3_result_null (context); - else - { - len = out_buf.WriteOffset; - sqlite3_result_text (context, out_buf.Buffer, len, free); - out_buf.Buffer = NULL; - } - } - stop: - gaiaFreeGeomColl (geo); - gaiaOutBufferReset (&out_buf); -} - -static void -fnct_AsKml3 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ AsKml(Anything name, Anything description, BLOB encoded geometry [, Integer precision]) -/ -/ returns the corresponding 'full' KML representation -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - gaiaOutBuffer out_buf; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geo_wgs84; - sqlite3_int64 int_value; - double dbl_value; - const char *name; - const char *desc; - char *name_malloc = NULL; - char *desc_malloc = NULL; - char dummy[128]; - char *xdummy; - char *proj_from; - char *proj_to; - int precision = 15; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - switch (sqlite3_value_type (argv[0])) - { - case SQLITE_TEXT: - name = (const char *) sqlite3_value_text (argv[0]); - len = strlen (name); - name_malloc = malloc (len + 1); - strcpy (name_malloc, name); - name = name_malloc; - break; - case SQLITE_INTEGER: - int_value = sqlite3_value_int64 (argv[0]); -#if defined(_WIN32) || defined(__MINGW32__) -/* CAVEAT: M$ runtime doesn't supports %lld for 64 bits */ - sprintf (dummy, "%I64d", int_value); -#else - sprintf (dummy, "%lld", int_value); -#endif - len = strlen (dummy); - name_malloc = malloc (len + 1); - strcpy (name_malloc, dummy); - name = name_malloc; - break; - case SQLITE_FLOAT: - dbl_value = sqlite3_value_double (argv[0]); - xdummy = sqlite3_mprintf ("%1.6f", dbl_value); - len = strlen (xdummy); - name_malloc = malloc (len + 1); - strcpy (name_malloc, xdummy); - sqlite3_free (xdummy); - name = name_malloc; - break; - case SQLITE_BLOB: - name = "BLOB"; - break; - default: - name = "NULL"; - break; - }; - switch (sqlite3_value_type (argv[1])) - { - case SQLITE_TEXT: - desc = (const char *) sqlite3_value_text (argv[1]); - len = strlen (desc); - desc_malloc = malloc (len + 1); - strcpy (desc_malloc, desc); - desc = desc_malloc; - break; - case SQLITE_INTEGER: - int_value = sqlite3_value_int64 (argv[1]); -#if defined(_WIN32) || defined(__MINGW32__) -/* CAVEAT: M$ runtime doesn't supports %lld for 64 bits */ - sprintf (dummy, "%I64d", int_value); -#else - sprintf (dummy, "%lld", int_value); -#endif - len = strlen (dummy); - desc_malloc = malloc (len + 1); - strcpy (desc_malloc, dummy); - desc = desc_malloc; - break; - case SQLITE_FLOAT: - dbl_value = sqlite3_value_double (argv[1]); - xdummy = sqlite3_mprintf ("%1.6f", dbl_value); - len = strlen (xdummy); - desc_malloc = malloc (len + 1); - strcpy (desc_malloc, xdummy); - sqlite3_free (xdummy); - desc = desc_malloc; - break; - case SQLITE_BLOB: - desc = "BLOB"; - break; - default: - desc = "NULL"; - break; - }; - gaiaOutBufferInitialize (&out_buf); - if (sqlite3_value_type (argv[2]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - goto stop; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[2]); - n_bytes = sqlite3_value_bytes (argv[2]); - if (argc == 4) - { - if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) - precision = sqlite3_value_int (argv[3]); - else - { - sqlite3_result_null (context); - goto stop; - } - } - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (geo->Srid == 4326) - ; /* already WGS84 */ - else if (geo->Srid == 0) - { - /* unknown SRID: giving up */ - sqlite3_result_null (context); - goto stop; - } - else - { - /* attempting to reproject into WGS84 */ - getProjParams (sqlite, geo->Srid, &proj_from); - getProjParams (sqlite, 4326, &proj_to); - if (proj_to == NULL || proj_from == NULL) - { - if (proj_from != NULL) - free (proj_from); - if (proj_to != NULL) - free (proj_to); - sqlite3_result_null (context); - goto stop; - } - geo_wgs84 = gaiaTransform (geo, proj_from, proj_to); - free (proj_from); - free (proj_to); - if (!geo_wgs84) - { - sqlite3_result_null (context); - goto stop; - } - /* ok, reprojection was successful */ - gaiaFreeGeomColl (geo); - geo = geo_wgs84; - } - /* produce KML-notation - actual work is done in gaiageo/gg_wkt.c */ - gaiaOutFullKml (&out_buf, name, desc, geo, precision); - if (out_buf.Error || out_buf.Buffer == NULL) - sqlite3_result_null (context); - else - { - len = out_buf.WriteOffset; - sqlite3_result_text (context, out_buf.Buffer, len, free); - out_buf.Buffer = NULL; - } - } - stop: - gaiaFreeGeomColl (geo); - if (name_malloc) - free (name_malloc); - if (desc_malloc) - free (desc_malloc); - gaiaOutBufferReset (&out_buf); -} - -static void -fnct_AsKml (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ AsKml(Anything name, Anything description, BLOB encoded geometry) -/ or -/ AsKml(BLOB encoded geometry) -/ -/ returns the corresponding KML representation -/ or NULL if any error is encountered -*/ - if (argc == 3 || argc == 4) - fnct_AsKml3 (context, argc, argv); - else - fnct_AsKml1 (context, argc, argv); -} -#endif /* end including PROJ.4 */ - -static void -fnct_AsGml (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ AsGml(BLOB encoded geometry) -/ or -/ AsGml(integer version, BLOB encoded geometry) -/ or -/ AsGml(integer version, BLOB encoded geometry, integer precision) -/ -/ *version* may be 2 (GML 2.1.2) or 3 (GML 3.1.1) -/ default *version*: 2 -/ -/ *precision* is the number of output decimal digits -/ default *precision*: 15 -/ -/ returns the corresponding GML representation -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - int version = 2; - int precision = 15; - gaiaOutBuffer out_buf; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (argc == 3) - { - if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - version = sqlite3_value_int (argv[0]); - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - precision = sqlite3_value_int (argv[2]); - else - { - sqlite3_result_null (context); - return; - } - } - else if (argc == 2) - { - if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER - && sqlite3_value_type (argv[1]) == SQLITE_BLOB) - { - version = sqlite3_value_int (argv[0]); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - } - else if (sqlite3_value_type (argv[0]) == SQLITE_BLOB - && sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - precision = sqlite3_value_int (argv[1]); - } - else - { - sqlite3_result_null (context); - return; - } - } - else - { - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - } - gaiaOutBufferInitialize (&out_buf); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - /* produce GML-notation - actual work is done in gaiageo/gg_wkt.c */ - gaiaOutGml (&out_buf, version, precision, geo); - if (out_buf.Error || out_buf.Buffer == NULL) - sqlite3_result_null (context); - else - { - len = out_buf.WriteOffset; - sqlite3_result_text (context, out_buf.Buffer, len, free); - out_buf.Buffer = NULL; - } - } - gaiaFreeGeomColl (geo); - gaiaOutBufferReset (&out_buf); -} - -static void -fnct_AsGeoJSON (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ AsGeoJSON(BLOB encoded geometry) -/ or -/ AsGeoJSON(BLOB encoded geometry, integer precision) -/ or -/ AsGeoJSON(BLOB encoded geometry, integer precision, integer options) -/ -/ *precision* is the number of output decimal digits -/ default *precision*: 15 -/ -/ *options* may be one of the followings: -/ 0 = no options [default] -/ 1 = GeoJSON MBR -/ 2 = GeoJSON Short CRS (e.g EPSG:4326) -/ 3 = 1 + 2 (Mbr + shortCrs) -/ 4 = GeoJSON Long CRS (e.g urn:ogc:def:crs:EPSG::4326) -/ 5 = 1 + 4 (Mbr + longCrs) -/ -/ returns the corresponding GML representation -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - int precision = 15; - int options = 0; - gaiaOutBuffer out_buf; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (argc == 3) - { - if (sqlite3_value_type (argv[0]) == SQLITE_BLOB - && sqlite3_value_type (argv[1]) == SQLITE_INTEGER - && sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - precision = sqlite3_value_int (argv[1]); - options = sqlite3_value_int (argv[2]); - if (options >= 1 && options <= 5) - ; - else - options = 0; - } - else - { - sqlite3_result_null (context); - return; - } - } - else if (argc == 2) - { - if (sqlite3_value_type (argv[0]) == SQLITE_BLOB - && sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - precision = sqlite3_value_int (argv[1]); - } - else - { - sqlite3_result_null (context); - return; - } - } - else - { - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - } - gaiaOutBufferInitialize (&out_buf); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - /* produce GeoJSON-notation - actual work is done in gaiageo/gg_wkt.c */ - gaiaOutGeoJSON (&out_buf, geo, precision, options); - if (out_buf.Error || out_buf.Buffer == NULL) - sqlite3_result_null (context); - else - { - len = out_buf.WriteOffset; - sqlite3_result_text (context, out_buf.Buffer, len, free); - out_buf.Buffer = NULL; - } - } - gaiaFreeGeomColl (geo); - gaiaOutBufferReset (&out_buf); -} - -static void -fnct_AsBinary (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ AsBinary(BLOB encoded geometry) -/ -/ returns the corresponding WKB encoded value -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaToWkb (geo, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_AsFGF (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ AsFGF(BLOB encoded geometry) -/ -/ returns the corresponding FGF encoded value -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - int coord_dims; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) - { - spatialite_e - ("AsFGF() error: argument 2 [geom_coords] is not of the Integer type\n"); - sqlite3_result_null (context); - return; - } - coord_dims = sqlite3_value_int (argv[1]); - if (coord_dims - == 0 || coord_dims == 1 || coord_dims == 2 || coord_dims == 3) - ; - else - { - spatialite_e - ("AsFGF() error: argument 2 [geom_coords] out of range [0,1,2,3]\n"); - sqlite3_result_null (context); - return; - } - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaToFgf (geo, &p_result, &len, coord_dims); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_MakePoint1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MakePoint(double X, double Y) -/ -/ builds a POINT -/ or NULL if any error is encountered -*/ - int len; - int int_value; - unsigned char *p_result = NULL; - double x; - double y; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - y = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - y = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - gaiaMakePoint (x, y, 0, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_MakePoint2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MakePoint(double X, double Y, int SRID) -/ -/ builds a POINT -/ or NULL if any error is encountered -*/ - int len; - int int_value; - unsigned char *p_result = NULL; - double x; - double y; - int srid; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - y = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - y = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - srid = sqlite3_value_int (argv[2]); - else - { - sqlite3_result_null (context); - return; - } - gaiaMakePoint (x, y, srid, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_MakePointZ1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MakePointZ(double X, double Y, double Z) -/ -/ builds a POINT Z -/ or NULL if any error is encountered -*/ - int len; - int int_value; - unsigned char *p_result = NULL; - double x; - double y; - double z; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - y = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - y = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - z = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - z = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - gaiaMakePointZ (x, y, z, 0, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_MakePointZ2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MakePointZ(double X, double Y, double Z, int SRID) -/ -/ builds a POINT Z -/ or NULL if any error is encountered -*/ - int len; - int int_value; - unsigned char *p_result = NULL; - double x; - double y; - double z; - int srid; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - y = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - y = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - z = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - z = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) - srid = sqlite3_value_int (argv[3]); - else - { - sqlite3_result_null (context); - return; - } - gaiaMakePointZ (x, y, z, srid, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_MakePointM1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MakePointM(double X, double Y, double M) -/ -/ builds a POINT M -/ or NULL if any error is encountered -*/ - int len; - int int_value; - unsigned char *p_result = NULL; - double x; - double y; - double m; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - y = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - y = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - m = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - m = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - gaiaMakePointM (x, y, m, 0, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_MakePointM2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MakePointM(double X, double Y, double M, int SRID) -/ -/ builds a POINT M -/ or NULL if any error is encountered -*/ - int len; - int int_value; - unsigned char *p_result = NULL; - double x; - double y; - double m; - int srid; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - y = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - y = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - m = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - m = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) - srid = sqlite3_value_int (argv[3]); - else - { - sqlite3_result_null (context); - return; - } - gaiaMakePointM (x, y, m, srid, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_MakePointZM1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MakePointZM(double X, double Y, double Z, double M) -/ -/ builds a POINT ZM -/ or NULL if any error is encountered -*/ - int len; - int int_value; - unsigned char *p_result = NULL; - double x; - double y; - double z; - double m; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - y = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - y = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - z = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - z = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) - m = sqlite3_value_double (argv[3]); - else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[3]); - m = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - gaiaMakePointZM (x, y, z, m, 0, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_MakePointZM2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MakePointZM(double X, double Y, double Z, double M, int SRID) -/ -/ builds a POINT -/ or NULL if any error is encountered -*/ - int len; - int int_value; - unsigned char *p_result = NULL; - double x; - double y; - double z; - double m; - int srid; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - y = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - y = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - z = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - z = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) - m = sqlite3_value_double (argv[3]); - else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[3]); - m = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) - srid = sqlite3_value_int (argv[4]); - else - { - sqlite3_result_null (context); - return; - } - gaiaMakePointZM (x, y, z, m, srid, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); -} - -static void -addGeomPointToDynamicLine (gaiaDynamicLinePtr dyn, gaiaGeomCollPtr geom) -{ -/* appending a simple-Point Geometry to a Dynamic Line */ - int pts; - int lns; - int pgs; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - - if (dyn == NULL) - return; - if (dyn->Error) - return; -/* checking if GEOM simply is a POINT */ - if (geom == NULL) - { - dyn->Error = 1; - return; - } - pts = 0; - lns = 0; - pgs = 0; - pt = geom->FirstPoint; - while (pt) - { - pts++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - lns++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - pgs++; - pg = pg->Next; - } - if (pts == 1 && lns == 0 && pgs == 0) - ; - else - { - /* failure: not a simple POINT */ - dyn->Error = 1; - return; - } - - if (dyn->Srid != geom->Srid) - { - /* failure: SRID mismatch */ - dyn->Error = 1; - return; - } - - switch (geom->FirstPoint->DimensionModel) - { - case GAIA_XY_Z_M: - gaiaAppendPointZMToDynamicLine (dyn, geom->FirstPoint->X, - geom->FirstPoint->Y, - geom->FirstPoint->Z, - geom->FirstPoint->M); - break; - case GAIA_XY_Z: - gaiaAppendPointZToDynamicLine (dyn, geom->FirstPoint->X, - geom->FirstPoint->Y, - geom->FirstPoint->Z); - break; - case GAIA_XY_M: - gaiaAppendPointMToDynamicLine (dyn, geom->FirstPoint->X, - geom->FirstPoint->Y, - geom->FirstPoint->M); - break; - default: - gaiaAppendPointToDynamicLine (dyn, geom->FirstPoint->X, - geom->FirstPoint->Y); - break; - } -} - -static void -fnct_MakeLine_step (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MakeLine(BLOBencoded geom) -/ -/ aggregate function - STEP -/ -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geom; - gaiaDynamicLinePtr *p; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geom) - return; - p = sqlite3_aggregate_context (context, sizeof (gaiaDynamicLinePtr)); - if (!(*p)) - { - /* this is the first row */ - *p = gaiaAllocDynamicLine (); - (*p)->Srid = geom->Srid; - addGeomPointToDynamicLine (*p, geom); - gaiaFreeGeomColl (geom); - } - else - { - /* subsequent rows */ - addGeomPointToDynamicLine (*p, geom); - gaiaFreeGeomColl (geom); - } -} - -static gaiaGeomCollPtr -geomFromDynamicLine (gaiaDynamicLinePtr dyn) -{ -/* attempting to build a Geometry from a Dynamic Line */ - gaiaGeomCollPtr geom = NULL; - gaiaLinestringPtr ln = NULL; - gaiaPointPtr pt; - int iv; - int count = 0; - int dims = GAIA_XY; - - if (dyn == NULL) - return NULL; - if (dyn->Error) - return NULL; - - pt = dyn->First; - while (pt) - { - /* counting points and checking dims */ - count++; - if (dims == GAIA_XY && pt->DimensionModel != GAIA_XY) - dims = pt->DimensionModel; - if (dims == GAIA_XY_Z - && (pt->DimensionModel == GAIA_XY_M - || pt->DimensionModel == GAIA_XY_Z_M)) - dims = GAIA_XY_Z_M; - if (dims == GAIA_XY_M - && (pt->DimensionModel == GAIA_XY_Z - || pt->DimensionModel == GAIA_XY_Z_M)) - dims = GAIA_XY_Z_M; - pt = pt->Next; - } - if (count < 2) - return NULL; - - switch (dims) - { - case GAIA_XY_Z_M: - geom = gaiaAllocGeomCollXYZM (); - ln = gaiaAllocLinestringXYZM (count); - break; - case GAIA_XY_Z: - geom = gaiaAllocGeomCollXYZ (); - ln = gaiaAllocLinestringXYZ (count); - break; - case GAIA_XY_M: - geom = gaiaAllocGeomCollXYM (); - ln = gaiaAllocLinestringXYM (count); - break; - default: - geom = gaiaAllocGeomColl (); - ln = gaiaAllocLinestring (count); - break; - }; - - if (geom != NULL && ln != NULL) - { - gaiaInsertLinestringInGeomColl (geom, ln); - geom->Srid = dyn->Srid; - } - else - { - if (geom) - gaiaFreeGeomColl (geom); - if (ln) - gaiaFreeLinestring (ln); - return NULL; - } - - iv = 0; - pt = dyn->First; - while (pt) - { - /* setting linestring points */ - if (dims == GAIA_XY_Z_M) - { - gaiaSetPointXYZM (ln->Coords, iv, pt->X, pt->Y, pt->Z, pt->M); - } - else if (dims == GAIA_XY_Z) - { - gaiaSetPointXYZ (ln->Coords, iv, pt->X, pt->Y, pt->Z); - } - else if (dims == GAIA_XY_M) - { - gaiaSetPointXYM (ln->Coords, iv, pt->X, pt->Y, pt->M); - } - else - { - gaiaSetPoint (ln->Coords, iv, pt->X, pt->Y); - } - iv++; - pt = pt->Next; - } - return geom; -} - -static void -fnct_MakeLine_final (sqlite3_context * context) -{ -/* SQL function: -/ MakeLine(BLOBencoded geom) -/ -/ aggregate function - FINAL -/ -*/ - gaiaGeomCollPtr result; - gaiaDynamicLinePtr *p = sqlite3_aggregate_context (context, 0); - if (!p) - { - sqlite3_result_null (context); - return; - } - result = geomFromDynamicLine (*p); - gaiaFreeDynamicLine (*p); - if (!result) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } -} - -static void -fnct_MakeLine (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MakeLine(point-geometry geom1, point-geometry geom2) -/ -/ builds a SEGMENT joining two POINTs -/ or NULL if any error is encountered -*/ - int len; - unsigned char *p_blob; - int n_bytes; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - goto stop; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1) - { - sqlite3_result_null (context); - goto stop; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - goto stop; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo2) - { - sqlite3_result_null (context); - goto stop; - } - gaiaMakeLine (geo1, geo2, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); - stop: - if (geo1) - gaiaFreeGeomColl (geo1); - if (geo2) - gaiaFreeGeomColl (geo2); -} - -static void -fnct_Collect_step (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Collect(BLOBencoded geom) -/ -/ aggregate function - STEP -/ -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geom; - gaiaGeomCollPtr result; - gaiaGeomCollPtr *p; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geom) - return; - p = sqlite3_aggregate_context (context, sizeof (gaiaGeomCollPtr)); - if (!(*p)) - { - /* this is the first row */ - *p = geom; - } - else - { - /* subsequent rows */ - result = gaiaMergeGeometries (*p, geom); - gaiaFreeGeomColl (*p); - *p = result; - gaiaFreeGeomColl (geom); - } -} - -static void -fnct_Collect_final (sqlite3_context * context) -{ -/* SQL function: -/ Collect(BLOBencoded geom) -/ -/ aggregate function - FINAL -/ -*/ - gaiaGeomCollPtr result; - gaiaGeomCollPtr *p = sqlite3_aggregate_context (context, 0); - if (!p) - { - sqlite3_result_null (context); - return; - } - result = *p; - if (!result) - sqlite3_result_null (context); - else if (gaiaIsEmpty (result)) - { - gaiaFreeGeomColl (result); - sqlite3_result_null (context); - } - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } -} - -static void -fnct_Collect (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Collect(geometry geom1, geometry geom2) -/ -/ merges two generic GEOMETRIES into a single one -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_null (context); - else - { - result = gaiaMergeGeometries (geo1, geo2); - if (!result) - sqlite3_result_null (context); - else if (gaiaIsEmpty (result)) - { - gaiaFreeGeomColl (result); - sqlite3_result_null (context); - } - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -geom_from_text1 (sqlite3_context * context, int argc, sqlite3_value ** argv, - short type) -{ -/* SQL function: -/ GeomFromText(WKT encoded geometry) -/ -/ returns the current geometry by parsing WKT encoded string -/ or NULL if any error is encountered -/ -/ if *type* is a negative value can accept any GEOMETRY CLASS -/ otherwise only requests conforming with required CLASS are valid -*/ - int len; - unsigned char *p_result = NULL; - const unsigned char *text; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - sqlite3_result_null (context); - return; - } - text = sqlite3_value_text (argv[0]); - geo = gaiaParseWkt (text, type); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - gaiaFreeGeomColl (geo); - sqlite3_result_blob (context, p_result, len, free); -} - -static void -geom_from_text2 (sqlite3_context * context, int argc, sqlite3_value ** argv, - short type) -{ -/* SQL function: -/ GeomFromText(WKT encoded geometry, SRID) -/ -/ returns the current geometry by parsing WKT encoded string -/ or NULL if any error is encountered -/ -/ if *type* is a negative value can accept any GEOMETRY CLASS -/ otherwise only requests conforming with required CLASS are valid -*/ - int len; - unsigned char *p_result = NULL; - const unsigned char *text; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) - { - sqlite3_result_null (context); - return; - } - text = sqlite3_value_text (argv[0]); - geo = gaiaParseWkt (text, type); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - geo->Srid = sqlite3_value_int (argv[1]); - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - gaiaFreeGeomColl (geo); - sqlite3_result_blob (context, p_result, len, free); -} - -static int -check_wkb (const unsigned char *wkb, int size, short type) -{ -/* checking type coherency for WKB encoded GEOMETRY */ - int little_endian; - int wkb_type; - int endian_arch = gaiaEndianArch (); - if (size < 5) - return 0; /* too short to be a WKB */ - if (*(wkb + 0) == 0x01) - little_endian = GAIA_LITTLE_ENDIAN; - else if (*(wkb + 0) == 0x00) - little_endian = GAIA_BIG_ENDIAN; - else - return 0; /* illegal byte ordering; neither BIG-ENDIAN nor LITTLE-ENDIAN */ - wkb_type = gaiaImport32 (wkb + 1, little_endian, endian_arch); - if (wkb_type == GAIA_POINT || wkb_type == GAIA_LINESTRING - || wkb_type == GAIA_POLYGON || wkb_type == GAIA_MULTIPOINT - || wkb_type == GAIA_MULTILINESTRING || wkb_type == GAIA_MULTIPOLYGON - || wkb_type == GAIA_GEOMETRYCOLLECTION || wkb_type == GAIA_POINTZ - || wkb_type == GAIA_LINESTRINGZ || wkb_type == GAIA_POLYGONZ - || wkb_type == GAIA_MULTIPOINTZ || wkb_type == GAIA_MULTILINESTRINGZ - || wkb_type == GAIA_MULTIPOLYGONZ - || wkb_type == GAIA_GEOMETRYCOLLECTIONZ || wkb_type == GAIA_POINTM - || wkb_type == GAIA_LINESTRINGM || wkb_type == GAIA_POLYGONM - || wkb_type == GAIA_MULTIPOINTM || wkb_type == GAIA_MULTILINESTRINGM - || wkb_type == GAIA_MULTIPOLYGONM - || wkb_type == GAIA_GEOMETRYCOLLECTIONM || wkb_type == GAIA_POINTZM - || wkb_type == GAIA_LINESTRINGZM || wkb_type == GAIA_POLYGONZM - || wkb_type == GAIA_MULTIPOINTZM || wkb_type == GAIA_MULTILINESTRINGZM - || wkb_type == GAIA_MULTIPOLYGONZM - || wkb_type == GAIA_GEOMETRYCOLLECTIONZM) - ; - else - return 0; /* illegal GEOMETRY CLASS */ - if (type < 0) - ; /* no restrinction about GEOMETRY CLASS TYPE */ - else - { - if (wkb_type != type) - return 0; /* invalid CLASS TYPE for request */ - } - return 1; -} - -static void -geom_from_wkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv, - short type) -{ -/* SQL function: -/ GeomFromWKB(WKB encoded geometry) -/ -/ returns the current geometry by parsing a WKB encoded blob -/ or NULL if any error is encountered -/ -/ if *type* is a negative value can accept any GEOMETRY CLASS -/ otherwise only requests conforming with required CLASS are valid -*/ - int len; - int n_bytes; - unsigned char *p_result = NULL; - const unsigned char *wkb; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - wkb = sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - if (!check_wkb (wkb, n_bytes, type)) - return; - geo = gaiaFromWkb (wkb, n_bytes); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - gaiaFreeGeomColl (geo); - sqlite3_result_blob (context, p_result, len, free); -} - -static void -geom_from_wkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv, - short type) -{ -/* SQL function: -/ GeomFromWKB(WKB encoded geometry, SRID) -/ -/ returns the current geometry by parsing a WKB encoded blob -/ or NULL if any error is encountered -/ -/ if *type* is a negative value can accept any GEOMETRY CLASS -/ otherwise only requests conforming with required CLASS are valid -*/ - int len; - int n_bytes; - unsigned char *p_result = NULL; - const unsigned char *wkb; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) - { - sqlite3_result_null (context); - return; - } - wkb = sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - if (!check_wkb (wkb, n_bytes, type)) - return; - geo = gaiaFromWkb (wkb, n_bytes); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - geo->Srid = sqlite3_value_int (argv[1]); - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - gaiaFreeGeomColl (geo); - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_GeometryFromFGF1 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ GeomFromFGF(FGF encoded geometry) -/ -/ returns the current geometry by parsing an FGF encoded blob -/ or NULL if any error is encountered -/ -/ if *type* is a negative value can accept any GEOMETRY CLASS -/ otherwise only requests conforming with required CLASS are valid -*/ - int len; - int n_bytes; - unsigned char *p_result = NULL; - const unsigned char *fgf; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - fgf = sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromFgf (fgf, n_bytes); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - gaiaFreeGeomColl (geo); - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_GeometryFromFGF2 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ GeomFromFGF(FGF encoded geometry, SRID) -/ -/ returns the current geometry by parsing an FGF encoded string -/ or NULL if any error is encountered -/ -/ if *type* is a negative value can accept any GEOMETRY CLASS -/ otherwise only requests conforming with required CLASS are valid -*/ - int len; - int n_bytes; - unsigned char *p_result = NULL; - const unsigned char *fgf; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) - { - sqlite3_result_null (context); - return; - } - fgf = sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromFgf (fgf, n_bytes); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - geo->Srid = sqlite3_value_int (argv[1]); - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - gaiaFreeGeomColl (geo); - sqlite3_result_blob (context, p_result, len, free); -} - -/* -/ the following functions simply readdress the request to geom_from_text?() -/ setting the appropriate GEOMETRY CLASS TYPE -*/ - -static void -fnct_GeomFromText1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_text1 (context, argc, argv, (short) -1); -} - -static void -fnct_GeomFromText2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_text2 (context, argc, argv, (short) -1); -} - -static void -fnct_GeomCollFromText1 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ - geom_from_text1 (context, argc, argv, (short) GAIA_GEOMETRYCOLLECTION); -} - -static void -fnct_GeomCollFromText2 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ - geom_from_text2 (context, argc, argv, (short) GAIA_GEOMETRYCOLLECTION); -} - -static void -fnct_LineFromText1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_text1 (context, argc, argv, (short) GAIA_LINESTRING); -} - -static void -fnct_LineFromText2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_text2 (context, argc, argv, (short) GAIA_LINESTRING); -} - -static void -fnct_PointFromText1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_text1 (context, argc, argv, (short) GAIA_POINT); -} - -static void -fnct_PointFromText2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_text2 (context, argc, argv, (short) GAIA_POINT); -} - -static void -fnct_PolyFromText1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_text1 (context, argc, argv, (short) GAIA_POLYGON); -} - -static void -fnct_PolyFromText2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_text2 (context, argc, argv, (short) GAIA_POLYGON); -} - -static void -fnct_MLineFromText1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_text1 (context, argc, argv, (short) GAIA_MULTILINESTRING); -} - -static void -fnct_MLineFromText2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_text2 (context, argc, argv, (short) GAIA_MULTILINESTRING); -} - -static void -fnct_MPointFromText1 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ - geom_from_text1 (context, argc, argv, (short) GAIA_MULTIPOINT); -} - -static void -fnct_MPointFromText2 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ - geom_from_text2 (context, argc, argv, (short) GAIA_MULTIPOINT); -} - -static void -fnct_MPolyFromText1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_text1 (context, argc, argv, (short) GAIA_MULTIPOLYGON); -} - -static void -fnct_MPolyFromText2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_text2 (context, argc, argv, (short) GAIA_MULTIPOLYGON); -} - -static void -fnct_WktToSql (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_WKTToSQL(WKT encoded geometry) -/ -/ returns the current geometry by parsing WKT encoded string -/ or NULL if any error is encountered -/ -/ the SRID is always 0 [SQL/MM function] -*/ - int len; - unsigned char *p_result = NULL; - const unsigned char *text; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - sqlite3_result_null (context); - return; - } - text = sqlite3_value_text (argv[0]); - geo = gaiaParseWkt (text, -1); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - geo->Srid = 0; - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - gaiaFreeGeomColl (geo); - sqlite3_result_blob (context, p_result, len, free); -} - -/* -/ the following functions simply readdress the request to geom_from_wkb?() -/ setting the appropriate GEOMETRY CLASS TYPE -*/ - -static void -fnct_GeomFromWkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_wkb1 (context, argc, argv, (short) -1); -} - -static void -fnct_GeomFromWkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_wkb2 (context, argc, argv, (short) -1); -} - -static void -fnct_GeomCollFromWkb1 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ - geom_from_wkb1 (context, argc, argv, (short) GAIA_GEOMETRYCOLLECTION); -} - -static void -fnct_GeomCollFromWkb2 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ - geom_from_wkb2 (context, argc, argv, (short) GAIA_GEOMETRYCOLLECTION); -} - -static void -fnct_LineFromWkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_wkb1 (context, argc, argv, (short) GAIA_LINESTRING); -} - -static void -fnct_LineFromWkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_wkb2 (context, argc, argv, (short) GAIA_LINESTRING); -} - -static void -fnct_PointFromWkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_wkb1 (context, argc, argv, (short) GAIA_POINT); -} - -static void -fnct_PointFromWkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_wkb2 (context, argc, argv, (short) GAIA_POINT); -} - -static void -fnct_PolyFromWkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_wkb1 (context, argc, argv, (short) GAIA_POLYGON); -} - -static void -fnct_PolyFromWkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_wkb2 (context, argc, argv, (short) GAIA_POLYGON); -} - -static void -fnct_MLineFromWkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_wkb1 (context, argc, argv, (short) GAIA_MULTILINESTRING); -} - -static void -fnct_MLineFromWkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_wkb2 (context, argc, argv, (short) GAIA_MULTILINESTRING); -} - -static void -fnct_MPointFromWkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_wkb1 (context, argc, argv, (short) GAIA_MULTIPOINT); -} - -static void -fnct_MPointFromWkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_wkb2 (context, argc, argv, (short) GAIA_MULTIPOINT); -} - -static void -fnct_MPolyFromWkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_wkb1 (context, argc, argv, (short) GAIA_MULTIPOLYGON); -} - -static void -fnct_MPolyFromWkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - geom_from_wkb2 (context, argc, argv, (short) GAIA_MULTIPOLYGON); -} - -static void -fnct_WkbToSql (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_WKBToSQL(WKB encoded geometry) -/ -/ returns the current geometry by parsing a WKB encoded blob -/ or NULL if any error is encountered -/ -/ the SRID is always 0 [SQL/MM function] -*/ - int len; - int n_bytes; - unsigned char *p_result = NULL; - const unsigned char *wkb; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - wkb = sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - if (!check_wkb (wkb, n_bytes, -1)) - return; - geo = gaiaFromWkb (wkb, n_bytes); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - geo->Srid = 0; - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - gaiaFreeGeomColl (geo); - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_CompressGeometry (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ CompressGeometry(BLOB encoded geometry) -/ -/ returns a COMPRESSED geometry [if a valid Geometry was supplied] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaToCompressedBlobWkb (geo, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_UncompressGeometry (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ UncompressGeometry(BLOB encoded geometry) -/ -/ returns an UNCOMPRESSED geometry [if a valid Geometry was supplied] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_SanitizeGeometry (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ SanitizeGeometry(BLOB encoded geometry) -/ -/ returns a SANITIZED geometry [if a valid Geometry was supplied] -/ or NULL in any other case -/ -/ Sanitizing includes: -/ - repeated vertices suppression -/ - enforcing ring closure -/ -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr sanitized = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - sanitized = gaiaSanitize (geo); - gaiaToSpatiaLiteBlobWkb (sanitized, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (geo); - gaiaFreeGeomColl (sanitized); -} - -static void -cast_count (gaiaGeomCollPtr geom, int *pts, int *lns, int *pgs) -{ -/* counting elementary geometries */ - int n_pts = 0; - int n_lns = 0; - int n_pgs = 0; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - if (geom) - { - pt = geom->FirstPoint; - while (pt) - { - n_pts++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - n_lns++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - n_pgs++; - pg = pg->Next; - } - } - *pts = n_pts; - *lns = n_lns; - *pgs = n_pgs; -} - -static void -fnct_CastToPoint (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ CastToPoint(BLOB encoded geometry) -/ -/ returns a POINT-type geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - int pts; - int lns; - int pgs; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - cast_count (geo, &pts, &lns, &pgs); - if (pts == 1 && lns == 0 && pgs == 0) - { - geom2 = gaiaCloneGeomColl (geo); - geom2->Srid = geo->Srid; - geom2->DeclaredType = GAIA_POINT; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_CastToLinestring (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ CastToLinestring(BLOB encoded geometry) -/ -/ returns a LINESTRING-type geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - int pts; - int lns; - int pgs; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - cast_count (geo, &pts, &lns, &pgs); - if (pts == 0 && lns == 1 && pgs == 0) - { - geom2 = gaiaCloneGeomColl (geo); - geom2->Srid = geo->Srid; - geom2->DeclaredType = GAIA_LINESTRING; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_CastToPolygon (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ CastToPolygon(BLOB encoded geometry) -/ -/ returns a POLYGON-type geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - int pts; - int lns; - int pgs; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - cast_count (geo, &pts, &lns, &pgs); - if (pts == 0 && lns == 0 && pgs == 1) - { - geom2 = gaiaCloneGeomColl (geo); - geom2->Srid = geo->Srid; - geom2->DeclaredType = GAIA_POLYGON; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_CastToMultiPoint (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ CastToMultiPoint(BLOB encoded geometry) -/ -/ returns a MULTIPOINT-type geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - int pts; - int lns; - int pgs; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - cast_count (geo, &pts, &lns, &pgs); - if (pts >= 1 && lns == 0 && pgs == 0) - { - geom2 = gaiaCloneGeomColl (geo); - geom2->Srid = geo->Srid; - geom2->DeclaredType = GAIA_MULTIPOINT; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_CastToMultiLinestring (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ CastToMultiLinestring(BLOB encoded geometry) -/ -/ returns a MULTILINESTRING-type geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - int pts; - int lns; - int pgs; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - cast_count (geo, &pts, &lns, &pgs); - if (pts == 0 && lns >= 1 && pgs == 0) - { - geom2 = gaiaCloneGeomColl (geo); - geom2->Srid = geo->Srid; - geom2->DeclaredType = GAIA_MULTILINESTRING; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_CastToMultiPolygon (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ CastToMultiPolygon(BLOB encoded geometry) -/ -/ returns a MULTIPOLYGON-type geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - int pts; - int lns; - int pgs; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - cast_count (geo, &pts, &lns, &pgs); - if (pts == 0 && lns == 0 && pgs >= 1) - { - geom2 = gaiaCloneGeomColl (geo); - geom2->Srid = geo->Srid; - geom2->DeclaredType = GAIA_MULTIPOLYGON; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_CastToGeometryCollection (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ CastToGeometryCollection(BLOB encoded geometry) -/ -/ returns a GEOMETRYCOLLECTION-type geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - int pts; - int lns; - int pgs; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - cast_count (geo, &pts, &lns, &pgs); - if (pts >= 1 || lns >= 1 || pgs >= 1) - { - geom2 = gaiaCloneGeomColl (geo); - geom2->Srid = geo->Srid; - geom2->DeclaredType = GAIA_GEOMETRYCOLLECTION; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_CastToMulti (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ CastToMulti(BLOB encoded geometry) -/ -/ returns a MULTIPOINT, MULTILINESTRING, MULTIPOLYGON or -/ GEOMETRYCOLLECTION-type geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - int pts; - int lns; - int pgs; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - cast_count (geo, &pts, &lns, &pgs); - if (pts >= 1 || lns >= 1 || pgs >= 1) - { - geom2 = gaiaCloneGeomColl (geo); - geom2->Srid = geo->Srid; - if (pts >= 1 && lns == 0 && pgs == 0) - geom2->DeclaredType = GAIA_MULTIPOINT; - else if (pts == 0 && lns >= 1 && pgs == 0) - geom2->DeclaredType = GAIA_MULTILINESTRING; - else if (pts == 0 && lns == 0 && pgs >= 1) - geom2->DeclaredType = GAIA_MULTIPOLYGON; - else - geom2->DeclaredType = GAIA_GEOMETRYCOLLECTION; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_CastToSingle (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ CastToSingle(BLOB encoded geometry) -/ -/ returns a POINT, LINESTRING or POLYGON-type geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - int pts; - int lns; - int pgs; - int ok; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - cast_count (geo, &pts, &lns, &pgs); - ok = 0; - if (pts == 1 && lns == 0 && pgs == 0) - ok = 1; - if (pts == 0 && lns == 1 && pgs == 0) - ok = 1; - if (pts == 0 && lns == 0 && pgs == 1) - ok = 1; - if (ok) - { - geom2 = gaiaCloneGeomColl (geo); - geom2->Srid = geo->Srid; - if (pts == 1) - geom2->DeclaredType = GAIA_POINT; - else if (lns == 1) - geom2->DeclaredType = GAIA_LINESTRING; - else - geom2->DeclaredType = GAIA_POLYGON; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_CastToXY (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ CastToXY(BLOB encoded geometry) -/ -/ returns an XY-dimension Geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - geom2 = gaiaCastGeomCollToXY (geo); - if (geom2) - { - geom2->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_CastToXYZ (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ CastToXY(BLOB encoded geometry) -/ -/ returns an XY-dimension Geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - geom2 = gaiaCastGeomCollToXYZ (geo); - if (geom2) - { - geom2->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_CastToXYM (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ CastToXY(BLOB encoded geometry) -/ -/ returns an XYM-dimension Geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - geom2 = gaiaCastGeomCollToXYM (geo); - if (geom2) - { - geom2->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_CastToXYZM (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ CastToXY(BLOB encoded geometry) -/ -/ returns an XYZM-dimension Geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - geom2 = gaiaCastGeomCollToXYZM (geo); - if (geom2) - { - geom2->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_ExtractMultiPoint (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ ExtractMultiPoint(BLOB encoded geometry) -/ -/ returns a MULTIPOINT-type geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - int pts; - int lns; - int pgs; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - cast_count (geo, &pts, &lns, &pgs); - if (pts >= 1) - { - geom2 = gaiaCloneGeomCollPoints (geo); - geom2->Srid = geo->Srid; - geom2->DeclaredType = GAIA_MULTIPOINT; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_ExtractMultiLinestring (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ ExtractMultiLinestring(BLOB encoded geometry) -/ -/ returns a MULTILINESTRING-type geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - int pts; - int lns; - int pgs; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - cast_count (geo, &pts, &lns, &pgs); - if (lns >= 1) - { - geom2 = gaiaCloneGeomCollLinestrings (geo); - geom2->Srid = geo->Srid; - geom2->DeclaredType = GAIA_MULTILINESTRING; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_ExtractMultiPolygon (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ ExtractMultiPolygon(BLOB encoded geometry) -/ -/ returns a MULTIPOLYGON-type geometry [if conversion is possible] -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - int pts; - int lns; - int pgs; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - cast_count (geo, &pts, &lns, &pgs); - if (pgs >= 1) - { - geom2 = gaiaCloneGeomCollPolygons (geo); - geom2->Srid = geo->Srid; - geom2->DeclaredType = GAIA_MULTIPOLYGON; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_Reverse (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_Reverse(BLOB encoded geometry) -/ -/ returns a new Geometry: any Linestring or Ring will be in reverse order -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - geom2 = gaiaCloneGeomCollSpecial (geo, GAIA_REVERSE_ORDER); - geom2->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (geo); - } -} - -static void -fnct_ForceLHR (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_ForceLHR(BLOB encoded geometry) -/ -/ returns a new Geometry: any Exterior Ring will be in clockwise orientation -/ and any Interior Ring will be in counter-clockwise orientation -/ or NULL in any other case -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - geom2 = gaiaCloneGeomCollSpecial (geo, GAIA_LHR_ORDER); - geom2->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); - gaiaFreeGeomColl (geom2); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (geo); - } -} - -static void -fnct_Dimension (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Dimension(BLOB encoded geometry) -/ -/ returns: -/ 0 if geometry is a POINT or MULTIPOINT -/ 1 if geometry is a LINESTRING or MULTILINESTRING -/ 2 if geometry is a POLYGON or MULTIPOLYGON -/ 0, 1, 2, for GEOMETRYCOLLECTIONS according to geometries contained inside -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int dim; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - dim = gaiaDimension (geo); - sqlite3_result_int (context, dim); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_CoordDimension (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ CoordDimension(BLOB encoded geometry) -/ -/ returns: -/ 'XY', 'XYM', 'XYZ', 'XYZM' -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - char *p_dim = NULL; - char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (geo->DimensionModel == GAIA_XY) - p_dim = "XY"; - else if (geo->DimensionModel == GAIA_XY_Z) - p_dim = "XYZ"; - else if (geo->DimensionModel == GAIA_XY_M) - p_dim = "XYM"; - else if (geo->DimensionModel == GAIA_XY_Z_M) - p_dim = "XYZM"; - if (p_dim) - { - len = strlen (p_dim); - p_result = malloc (len + 1); - strcpy (p_result, p_dim); - } - if (!p_result) - sqlite3_result_null (context); - else - { - len = strlen (p_result); - sqlite3_result_text (context, p_result, len, free); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_NDims (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_NDims(BLOB encoded geometry) -/ -/ returns: -/ 2, 3 or 4 -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int result = 0; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (geo->DimensionModel == GAIA_XY) - result = 2; - else if (geo->DimensionModel == GAIA_XY_Z) - result = 3; - else if (geo->DimensionModel == GAIA_XY_M) - result = 3; - else if (geo->DimensionModel == GAIA_XY_Z_M) - result = 4; - sqlite3_result_int (context, result); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_GeometryType (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ GeometryType(BLOB encoded geometry) -/ -/ returns the class for current geometry: -/ 'POINT' or 'MULTIPOINT' [Z, M, ZM] -/ 'LINESTRING' or 'MULTILINESTRING' [Z, M, ZM] -/ 'POLYGON' or 'MULTIPOLYGON' [Z, M, ZM] -/ 'GEOMETRYCOLLECTION' [Z, M, ZM] -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - int type; - char *p_type = NULL; - char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - type = gaiaGeometryType (geo); - switch (type) - { - case GAIA_POINT: - p_type = "POINT"; - break; - case GAIA_POINTZ: - p_type = "POINT Z"; - break; - case GAIA_POINTM: - p_type = "POINT M"; - break; - case GAIA_POINTZM: - p_type = "POINT ZM"; - break; - case GAIA_MULTIPOINT: - p_type = "MULTIPOINT"; - break; - case GAIA_MULTIPOINTZ: - p_type = "MULTIPOINT Z"; - break; - case GAIA_MULTIPOINTM: - p_type = "MULTIPOINT M"; - break; - case GAIA_MULTIPOINTZM: - p_type = "MULTIPOINT ZM"; - break; - case GAIA_LINESTRING: - case GAIA_COMPRESSED_LINESTRING: - p_type = "LINESTRING"; - break; - case GAIA_LINESTRINGZ: - case GAIA_COMPRESSED_LINESTRINGZ: - p_type = "LINESTRING Z"; - break; - case GAIA_LINESTRINGM: - case GAIA_COMPRESSED_LINESTRINGM: - p_type = "LINESTRING M"; - break; - case GAIA_LINESTRINGZM: - case GAIA_COMPRESSED_LINESTRINGZM: - p_type = "LINESTRING ZM"; - break; - case GAIA_MULTILINESTRING: - p_type = "MULTILINESTRING"; - break; - case GAIA_MULTILINESTRINGZ: - p_type = "MULTILINESTRING Z"; - break; - case GAIA_MULTILINESTRINGM: - p_type = "MULTILINESTRING M"; - break; - case GAIA_MULTILINESTRINGZM: - p_type = "MULTILINESTRING ZM"; - break; - case GAIA_POLYGON: - case GAIA_COMPRESSED_POLYGON: - p_type = "POLYGON"; - break; - case GAIA_POLYGONZ: - case GAIA_COMPRESSED_POLYGONZ: - p_type = "POLYGON Z"; - break; - case GAIA_POLYGONM: - case GAIA_COMPRESSED_POLYGONM: - p_type = "POLYGON M"; - break; - case GAIA_POLYGONZM: - case GAIA_COMPRESSED_POLYGONZM: - p_type = "POLYGON ZM"; - break; - case GAIA_MULTIPOLYGON: - p_type = "MULTIPOLYGON"; - break; - case GAIA_MULTIPOLYGONZ: - p_type = "MULTIPOLYGON Z"; - break; - case GAIA_MULTIPOLYGONM: - p_type = "MULTIPOLYGON M"; - break; - case GAIA_MULTIPOLYGONZM: - p_type = "MULTIPOLYGON ZM"; - break; - case GAIA_GEOMETRYCOLLECTION: - p_type = "GEOMETRYCOLLECTION"; - break; - case GAIA_GEOMETRYCOLLECTIONZ: - p_type = "GEOMETRYCOLLECTION Z"; - break; - case GAIA_GEOMETRYCOLLECTIONM: - p_type = "GEOMETRYCOLLECTION M"; - break; - case GAIA_GEOMETRYCOLLECTIONZM: - p_type = "GEOMETRYCOLLECTION ZM"; - break; - }; - if (p_type) - { - len = strlen (p_type); - p_result = malloc (len + 1); - strcpy (p_result, p_type); - } - if (!p_result) - sqlite3_result_null (context); - else - { - len = strlen (p_result); - sqlite3_result_text (context, p_result, len, free); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_GeometryAliasType (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ GeometryAliasType(BLOB encoded geometry) -/ -/ returns the alias-class for current geometry: -/ 'POINT' -/ 'LINESTRING' -/ 'POLYGON' -/ 'MULTIPOINT' -/ 'MULTILINESTRING' -/ 'MULTIPOLYGON' -/ 'GEOMETRYCOLLECTION' -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - int type; - char *p_type = NULL; - char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - type = gaiaGeometryAliasType (geo); - switch (type) - { - case GAIA_POINT: - p_type = "POINT"; - break; - case GAIA_MULTIPOINT: - p_type = "MULTIPOINT"; - break; - case GAIA_LINESTRING: - p_type = "LINESTRING"; - break; - case GAIA_MULTILINESTRING: - p_type = "MULTILINESTRING"; - break; - case GAIA_POLYGON: - p_type = "POLYGON"; - break; - case GAIA_MULTIPOLYGON: - p_type = "MULTIPOLYGON"; - break; - case GAIA_GEOMETRYCOLLECTION: - p_type = "GEOMETRYCOLLECTION"; - break; - }; - if (p_type) - { - len = strlen (p_type); - p_result = malloc (len + 1); - strcpy (p_result, p_type); - } - if (!p_result) - sqlite3_result_null (context); - else - { - len = strlen (p_result); - sqlite3_result_text (context, p_result, len, free); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_SridFromAuthCRS (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ SridFromAuthCRS(auth_name, auth_srid) -/ -/ returns the SRID -/ or NULL if any error is encountered -*/ - const unsigned char *auth_name; - int auth_srid; - int srid = -1; - char *sql; - char **results; - int n_rows; - int n_columns; - char *err_msg = NULL; - int ret; - int i; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) - { - sqlite3_result_null (context); - return; - } - auth_name = sqlite3_value_text (argv[0]); - auth_srid = sqlite3_value_int (argv[1]); - - sql = sqlite3_mprintf ("SELECT srid FROM spatial_ref_sys " - "WHERE Upper(auth_name) = Upper(%Q) AND auth_srid = %d", - auth_name, auth_srid); - ret = - sqlite3_get_table (sqlite, sql, &results, &n_rows, &n_columns, - &err_msg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - goto done; - if (n_rows >= 1) - { - for (i = 1; i <= n_rows; i++) - srid = atoi (results[(i * n_columns) + 0]); - } - sqlite3_free_table (results); - done: - sqlite3_result_int (context, srid); -} - -static void -fnct_SRID (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Srid(BLOB encoded geometry) -/ -/ returns the SRID -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - sqlite3_result_int (context, geo->Srid); - gaiaFreeGeomColl (geo); -} - -static void -fnct_SetSRID (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ SetSrid(BLOBencoded geometry, srid) -/ -/ returns a new geometry that is the original one received, but with the new SRID [no coordinates translation is applied] -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - int srid; - unsigned char *p_result = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - srid = sqlite3_value_int (argv[1]); - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - geo->Srid = srid; - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &n_bytes); - sqlite3_result_blob (context, p_result, n_bytes, free); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_IsEmpty (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ IsEmpty(BLOB encoded geometry) -/ -/ returns: -/ 1 if this geometry contains no elementary geometries -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_int (context, -1); - else - sqlite3_result_int (context, gaiaIsEmpty (geo)); - gaiaFreeGeomColl (geo); -} - -static void -fnct_Is3D (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Is3D(BLOB encoded geometry) -/ -/ returns: -/ 1 if this geometry has Z coords -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_int (context, -1); - else - { - if (geo->DimensionModel == GAIA_XY_Z - || geo->DimensionModel == GAIA_XY_Z_M) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_IsMeasured (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ IsMeasured(BLOB encoded geometry) -/ -/ returns: -/ 1 if this geometry has M coords -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_int (context, -1); - else - { - if (geo->DimensionModel == GAIA_XY_M - || geo->DimensionModel == GAIA_XY_Z_M) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_MinZ (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_MinZ(BLOB encoded GEMETRY) -/ -/ returns the MinZ coordinate for current geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - double min; - double max; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (geo->DimensionModel == GAIA_XY_Z - || geo->DimensionModel == GAIA_XY_Z_M) - { - gaiaZRangeGeometry (geo, &min, &max); - sqlite3_result_double (context, min); - } - else - sqlite3_result_null (context); - gaiaFreeGeomColl (geo); - } -} - -static void -fnct_MaxZ (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_MaxZ(BLOB encoded GEMETRY) -/ -/ returns the MaxZ coordinate for current geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - double min; - double max; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (geo->DimensionModel == GAIA_XY_Z - || geo->DimensionModel == GAIA_XY_Z_M) - { - gaiaZRangeGeometry (geo, &min, &max); - sqlite3_result_double (context, max); - } - else - sqlite3_result_null (context); - gaiaFreeGeomColl (geo); - } -} - -static void -fnct_MinM (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_MinM(BLOB encoded GEMETRY) -/ -/ returns the MinM coordinate for current geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - double min; - double max; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (geo->DimensionModel == GAIA_XY_M - || geo->DimensionModel == GAIA_XY_Z_M) - { - gaiaMRangeGeometry (geo, &min, &max); - sqlite3_result_double (context, min); - } - else - sqlite3_result_null (context); - gaiaFreeGeomColl (geo); - } -} - -static void -fnct_MaxM (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_MaxM(BLOB encoded GEMETRY) -/ -/ returns the MaxM coordinate for current geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - double min; - double max; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (geo->DimensionModel == GAIA_XY_M - || geo->DimensionModel == GAIA_XY_Z_M) - { - gaiaMRangeGeometry (geo, &min, &max); - sqlite3_result_double (context, max); - } - else - sqlite3_result_null (context); - gaiaFreeGeomColl (geo); - } -} - -static void -fnct_Envelope (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Envelope(BLOB encoded geometry) -/ -/ returns the MBR for current geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr bbox; - gaiaPolygonPtr polyg; - gaiaRingPtr rect; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaMbrGeometry (geo); - bbox = gaiaAllocGeomColl (); - bbox->Srid = geo->Srid; - polyg = gaiaAddPolygonToGeomColl (bbox, 5, 0); - rect = polyg->Exterior; - gaiaSetPoint (rect->Coords, 0, geo->MinX, geo->MinY); /* vertex # 1 */ - gaiaSetPoint (rect->Coords, 1, geo->MaxX, geo->MinY); /* vertex # 2 */ - gaiaSetPoint (rect->Coords, 2, geo->MaxX, geo->MaxY); /* vertex # 3 */ - gaiaSetPoint (rect->Coords, 3, geo->MinX, geo->MaxY); /* vertex # 4 */ - gaiaSetPoint (rect->Coords, 4, geo->MinX, geo->MinY); /* vertex # 5 [same as vertex # 1 to close the polygon] */ - gaiaToSpatiaLiteBlobWkb (bbox, &p_result, &len); - gaiaFreeGeomColl (bbox); - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_Expand (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_Expand(BLOB encoded geometry, double amount) -/ -/ returns the MBR for current geometry expanded by "amount" in each direction -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr bbox; - gaiaPolygonPtr polyg; - gaiaRingPtr rect; - double tic; - int int_value; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - tic = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - tic = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaMbrGeometry (geo); - bbox = gaiaAllocGeomColl (); - bbox->Srid = geo->Srid; - polyg = gaiaAddPolygonToGeomColl (bbox, 5, 0); - rect = polyg->Exterior; - gaiaSetPoint (rect->Coords, 0, geo->MinX - tic, geo->MinY - tic); /* vertex # 1 */ - gaiaSetPoint (rect->Coords, 1, geo->MaxX + tic, geo->MinY - tic); /* vertex # 2 */ - gaiaSetPoint (rect->Coords, 2, geo->MaxX + tic, geo->MaxY + tic); /* vertex # 3 */ - gaiaSetPoint (rect->Coords, 3, geo->MinX - tic, geo->MaxY + tic); /* vertex # 4 */ - gaiaSetPoint (rect->Coords, 4, geo->MinX - tic, geo->MinY - tic); /* vertex # 5 [same as vertex # 1 to close the polygon] */ - gaiaToSpatiaLiteBlobWkb (bbox, &p_result, &len); - gaiaFreeGeomColl (bbox); - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (geo); -} - -static void -build_filter_mbr (sqlite3_context * context, int argc, - sqlite3_value ** argv, int mode) -{ -/* SQL functions: -/ BuildMbrFilter(double X1, double Y1, double X2, double Y2) -/ FilterMBRWithin(double X1, double Y1, double X2, double Y2) -/ FilterMBRContain(double X1, double Y1, double X2, double Y2) -/ FilterMBRIntersects(double X1, double Y1, double X2, double Y2) -/ -/ builds a generic filter for MBR from two points (identifying a rectangle's diagonal) -/ or NULL if any error is encountered -*/ - int len; - unsigned char *p_result = NULL; - double x1; - double y1; - double x2; - double y2; - int int_value; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x1 = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x1 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - y1 = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - y1 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - x2 = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - x2 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) - y2 = sqlite3_value_double (argv[3]); - else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[3]); - y2 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - gaiaBuildFilterMbr (x1, y1, x2, y2, mode, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); -} - -/* -/ the following functions simply readdress the request to build_filter_mbr() -/ setting the appropriate MODe -*/ - -static void -fnct_BuildMbrFilter (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - build_filter_mbr (context, argc, argv, GAIA_FILTER_MBR_DECLARE); -} - -static void -fnct_FilterMbrWithin (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ - build_filter_mbr (context, argc, argv, GAIA_FILTER_MBR_WITHIN); -} - -static void -fnct_FilterMbrContains (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ - build_filter_mbr (context, argc, argv, GAIA_FILTER_MBR_CONTAINS); -} - -static void -fnct_FilterMbrIntersects (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ - build_filter_mbr (context, argc, argv, GAIA_FILTER_MBR_INTERSECTS); -} - -static void -fnct_BuildMbr1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ BuildMBR(double X1, double Y1, double X2, double Y2) -/ -/ builds an MBR from two points (identifying a rectangle's diagonal) -/ or NULL if any error is encountered -*/ - int len; - unsigned char *p_result = NULL; - double x1; - double y1; - double x2; - double y2; - int int_value; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x1 = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x1 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - y1 = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - y1 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - x2 = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - x2 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) - y2 = sqlite3_value_double (argv[3]); - else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[3]); - y2 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - gaiaBuildMbr (x1, y1, x2, y2, -1, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_BuildMbr2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ BuildMBR(double X1, double Y1, double X2, double Y2, int SRID) -/ -/ builds an MBR from two points (identifying a rectangle's diagonal) -/ or NULL if any error is encountered -*/ - int len; - unsigned char *p_result = NULL; - double x1; - double y1; - double x2; - double y2; - int int_value; - int srid; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x1 = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x1 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - y1 = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - y1 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - x2 = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - x2 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) - y2 = sqlite3_value_double (argv[3]); - else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[3]); - y2 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) - srid = sqlite3_value_int (argv[4]); - else - { - sqlite3_result_null (context); - return; - } - gaiaBuildMbr (x1, y1, x2, y2, srid, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_BuildCircleMbr1 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ BuildCircleMBR(double X, double Y, double radius) -/ -/ builds an MBR from two points (identifying a rectangle's diagonal) -/ or NULL if any error is encountered -*/ - int len; - unsigned char *p_result = NULL; - double x; - double y; - double radius; - int int_value; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - y = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - y = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - radius = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - radius = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - gaiaBuildCircleMbr (x, y, radius, -1, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_BuildCircleMbr2 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ BuildCircleMBR(double X, double Y, double radius, int SRID) -/ -/ builds an MBR from two points (identifying a rectangle's diagonal) -/ or NULL if any error is encountered -*/ - int len; - unsigned char *p_result = NULL; - double x; - double y; - double radius; - int int_value; - int srid; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - y = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - y = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - radius = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - radius = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) - srid = sqlite3_value_int (argv[3]); - else - { - sqlite3_result_null (context); - return; - } - gaiaBuildCircleMbr (x, y, radius, srid, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_Extent_step (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Extent(BLOBencoded geom) -/ -/ aggregate function - STEP -/ -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geom; - double **p; - double *max_min; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geom) - return; - gaiaMbrGeometry (geom); - p = sqlite3_aggregate_context (context, sizeof (double **)); - if (!(*p)) - { - /* this is the first row */ - max_min = malloc (sizeof (double) * 4); - *(max_min + 0) = geom->MinX; - *(max_min + 1) = geom->MinY; - *(max_min + 2) = geom->MaxX; - *(max_min + 3) = geom->MaxY; - *p = max_min; - } - else - { - /* subsequent rows */ - max_min = *p; - if (geom->MinX < *(max_min + 0)) - *(max_min + 0) = geom->MinX; - if (geom->MinY < *(max_min + 1)) - *(max_min + 1) = geom->MinY; - if (geom->MaxX > *(max_min + 2)) - *(max_min + 2) = geom->MaxX; - if (geom->MaxY > *(max_min + 3)) - *(max_min + 3) = geom->MaxY; - } - gaiaFreeGeomColl (geom); -} - -static void -fnct_Extent_final (sqlite3_context * context) -{ -/* SQL function: -/ Extent(BLOBencoded geom) -/ -/ aggregate function - FINAL -/ -*/ - gaiaGeomCollPtr result; - gaiaPolygonPtr polyg; - gaiaRingPtr rect; - double *max_min; - double minx; - double miny; - double maxx; - double maxy; - double **p = sqlite3_aggregate_context (context, 0); - if (!p) - { - sqlite3_result_null (context); - return; - } - max_min = *p; - if (!max_min) - { - sqlite3_result_null (context); - return; - } - result = gaiaAllocGeomColl (); - if (!result) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - polyg = gaiaAddPolygonToGeomColl (result, 5, 0); - rect = polyg->Exterior; - minx = *(max_min + 0); - miny = *(max_min + 1); - maxx = *(max_min + 2); - maxy = *(max_min + 3); - gaiaSetPoint (rect->Coords, 0, minx, miny); /* vertex # 1 */ - gaiaSetPoint (rect->Coords, 1, maxx, miny); /* vertex # 2 */ - gaiaSetPoint (rect->Coords, 2, maxx, maxy); /* vertex # 3 */ - gaiaSetPoint (rect->Coords, 3, minx, maxy); /* vertex # 4 */ - gaiaSetPoint (rect->Coords, 4, minx, miny); /* vertex # 5 [same as vertex # 1 to close the polygon] */ - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - free (max_min); -} - -static void -fnct_MbrMinX (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MbrMinX(BLOB encoded GEMETRY) -/ -/ returns the MinX coordinate for current geometry's MBR -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - double coord; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - if (!gaiaGetMbrMinX (p_blob, n_bytes, &coord)) - sqlite3_result_null (context); - else - sqlite3_result_double (context, coord); -} - -static void -fnct_MbrMaxX (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MbrMaxX(BLOB encoded GEMETRY) -/ -/ returns the MaxX coordinate for current geometry's MBR -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - double coord; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - if (!gaiaGetMbrMaxX (p_blob, n_bytes, &coord)) - sqlite3_result_null (context); - else - sqlite3_result_double (context, coord); -} - -static void -fnct_MbrMinY (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MbrMinY(BLOB encoded GEMETRY) -/ -/ returns the MinY coordinate for current geometry's MBR -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - double coord; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - if (!gaiaGetMbrMinY (p_blob, n_bytes, &coord)) - sqlite3_result_null (context); - else - sqlite3_result_double (context, coord); -} - -static void -fnct_MbrMaxY (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MbrMaxY(BLOB encoded GEMETRY) -/ -/ returns the MaxY coordinate for current geometry's MBR -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - double coord; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - if (!gaiaGetMbrMaxY (p_blob, n_bytes, &coord)) - sqlite3_result_null (context); - else - sqlite3_result_double (context, coord); -} - -#ifndef OMIT_GEOCALLBACKS /* supporting RTree geometry callbacks */ -static void -gaia_mbr_del (void *p) -{ -/* freeing data used by R*Tree Geometry Callback */ - sqlite3_free (p); -} - -static int -fnct_RTreeIntersects (sqlite3_rtree_geometry * p, int nCoord, double *aCoord, - int *pRes) -{ -/* R*Tree Geometry callback function: -/ ... MATCH RTreeIntersects(double x1, double y1, double x2, double y2) -*/ - struct gaia_rtree_mbr *mbr; - double xmin; - double xmax; - double ymin; - double ymax; - float fminx; - float fminy; - float fmaxx; - float fmaxy; - double tic; - double tic2; - - if (p->pUser == 0) - { - /* first call: we must check args and then initialize the MBR struct */ - if (nCoord != 4) - return SQLITE_ERROR; - if (p->nParam != 4) - return SQLITE_ERROR; - mbr = (struct gaia_rtree_mbr *) (p->pUser = - sqlite3_malloc (sizeof - (struct - gaia_rtree_mbr))); - if (!mbr) - return SQLITE_NOMEM; - p->xDelUser = gaia_mbr_del; - xmin = p->aParam[0]; - ymin = p->aParam[1]; - xmax = p->aParam[2]; - ymax = p->aParam[3]; - if (xmin > xmax) - { - xmin = p->aParam[2]; - xmax = p->aParam[0]; - } - if (ymin > ymax) - { - ymin = p->aParam[3]; - ymax = p->aParam[1]; - } - - /* adjusting the MBR so to compensate for DOUBLE/FLOAT truncations */ - fminx = (float) xmin; - fminy = (float) ymin; - fmaxx = (float) xmax; - fmaxy = (float) ymax; - tic = fabs (xmin - fminx); - tic2 = fabs (ymin - fminy); - if (tic2 > tic) - tic = tic2; - tic2 = fabs (xmax - fmaxx); - if (tic2 > tic) - tic = tic2; - tic2 = fabs (ymax - fmaxy); - if (tic2 > tic) - tic = tic2; - tic *= 2.0; - - mbr->minx = xmin - tic; - mbr->miny = ymin - tic; - mbr->maxx = xmax + tic; - mbr->maxy = ymax + tic; - } - - mbr = (struct gaia_rtree_mbr *) (p->pUser); - xmin = aCoord[0]; - xmax = aCoord[1]; - ymin = aCoord[2]; - ymax = aCoord[3]; - *pRes = 1; -/* evaluating Intersects relationship */ - if (xmin > mbr->maxx) - *pRes = 0; - if (xmax < mbr->minx) - *pRes = 0; - if (ymin > mbr->maxy) - *pRes = 0; - if (ymax < mbr->miny) - *pRes = 0; - return SQLITE_OK; -} - -static int -fnct_RTreeDistWithin (sqlite3_rtree_geometry * p, int nCoord, double *aCoord, - int *pRes) -{ -/* R*Tree Geometry callback function: -/ ... MATCH RTreeDistWithin(double x, double y, double radius) -*/ - struct gaia_rtree_mbr *mbr; - double xmin; - double xmax; - double ymin; - double ymax; - - if (p->pUser == 0) - { - /* first call: we must check args and then initialize the MBR struct */ - if (nCoord != 4) - return SQLITE_ERROR; - if (p->nParam != 3) - return SQLITE_ERROR; - mbr = (struct gaia_rtree_mbr *) (p->pUser = - sqlite3_malloc (sizeof - (struct - gaia_rtree_mbr))); - if (!mbr) - return SQLITE_NOMEM; - p->xDelUser = gaia_mbr_del; - mbr->minx = p->aParam[0] - p->aParam[2]; - mbr->miny = p->aParam[1] - p->aParam[2]; - mbr->maxx = p->aParam[0] + p->aParam[2]; - mbr->maxy = p->aParam[1] + p->aParam[2]; - } - - mbr = (struct gaia_rtree_mbr *) (p->pUser); - xmin = aCoord[0]; - xmax = aCoord[1]; - ymin = aCoord[2]; - ymax = aCoord[3]; - *pRes = 1; -/* evaluating Intersects relationship */ - if (xmin > mbr->maxx) - *pRes = 0; - if (xmax < mbr->minx) - *pRes = 0; - if (ymin > mbr->maxy) - *pRes = 0; - if (ymax < mbr->miny) - *pRes = 0; - return SQLITE_OK; -} -#endif /* end RTree geometry callbacks */ - -static void -fnct_X (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ X(BLOB encoded POINT) -/ -/ returns the X coordinate for current POINT geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaPointPtr point; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - point = simplePoint (geo); - if (!point) - sqlite3_result_null (context); - else - sqlite3_result_double (context, point->X); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_Y (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Y(BLOB encoded POINT) -/ -/ returns the Y coordinate for current POINT geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaPointPtr point; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - point = simplePoint (geo); - if (!point) - sqlite3_result_null (context); - else - sqlite3_result_double (context, point->Y); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_Z (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Z(BLOB encoded POINT) -/ -/ returns the Z coordinate for current POINT geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaPointPtr point; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - point = simplePoint (geo); - if (!point) - sqlite3_result_null (context); - else - { - if (point->DimensionModel == GAIA_XY_Z - || point->DimensionModel == GAIA_XY_Z_M) - sqlite3_result_double (context, point->Z); - else - sqlite3_result_null (context); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_M (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ M(BLOB encoded POINT) -/ -/ returns the M coordinate for current POINT geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaPointPtr point; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - point = simplePoint (geo); - if (!point) - sqlite3_result_null (context); - else - { - if (point->DimensionModel == GAIA_XY_M - || point->DimensionModel == GAIA_XY_Z_M) - sqlite3_result_double (context, point->M); - else - sqlite3_result_null (context); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_NumPoints (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ NumPoints(BLOB encoded LINESTRING) -/ -/ returns the number of vertices for current LINESTRING geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaLinestringPtr line; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - line = simpleLinestring (geo); - if (!line) - sqlite3_result_null (context); - else - sqlite3_result_int (context, line->Points); - } - gaiaFreeGeomColl (geo); -} - -static void -point_n (sqlite3_context * context, int argc, sqlite3_value ** argv, - int request) -{ -/* SQL functions: -/ StartPoint(BLOB encoded LINESTRING geometry) -/ EndPoint(BLOB encoded LINESTRING geometry) -/ PointN(BLOB encoded LINESTRING geometry, integer point_no) -/ -/ returns the Nth POINT for current LINESTRING geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int vertex; - int len; - double x; - double y; - double z; - double m; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - gaiaLinestringPtr line; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (request == GAIA_POINTN) - { - /* PointN() requires point index to be defined as an SQL function argument */ - if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) - { - sqlite3_result_null (context); - return; - } - vertex = sqlite3_value_int (argv[1]); - } - else if (request == GAIA_END_POINT) - vertex = -1; /* EndPoint() specifies a negative point index */ - else - vertex = 1; /* StartPoint() */ - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - line = simpleLinestring (geo); - if (!line) - sqlite3_result_null (context); - else - { - if (vertex < 0) - vertex = line->Points - 1; - else - vertex -= 1; /* decreasing the point index by 1, because PointN counts starting at index 1 */ - if (vertex >= 0 && vertex < line->Points) - { - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, vertex, &x, &y, &z); - result = gaiaAllocGeomCollXYZ (); - result->Srid = geo->Srid; - gaiaAddPointToGeomCollXYZ (result, x, y, z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, vertex, &x, &y, &m); - result = gaiaAllocGeomCollXYM (); - result->Srid = geo->Srid; - gaiaAddPointToGeomCollXYM (result, x, y, m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, vertex, &x, &y, &z, - &m); - result = gaiaAllocGeomCollXYZM (); - result->Srid = geo->Srid; - gaiaAddPointToGeomCollXYZM (result, x, y, z, m); - } - else - { - gaiaGetPoint (line->Coords, vertex, &x, &y); - result = gaiaAllocGeomColl (); - result->Srid = geo->Srid; - gaiaAddPointToGeomColl (result, x, y); - } - } - else - result = NULL; - if (!result) - sqlite3_result_null (context); - else - { - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - gaiaFreeGeomColl (result); - sqlite3_result_blob (context, p_result, len, free); - } - } - } - gaiaFreeGeomColl (geo); -} - -/* -/ the following functions simply readdress the request to point_n() -/ setting the appropriate request mode -*/ - -static void -fnct_StartPoint (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - point_n (context, argc, argv, GAIA_START_POINT); -} - -static void -fnct_EndPoint (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - point_n (context, argc, argv, GAIA_END_POINT); -} - -static void -fnct_PointN (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - point_n (context, argc, argv, GAIA_POINTN); -} - -static void -fnct_ExteriorRing (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL functions: -/ ExteriorRing(BLOB encoded POLYGON geometry) -/ -/ returns the EXTERIOR RING for current POLYGON geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int iv; - double x; - double y; - double z; - double m; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - gaiaLinestringPtr line; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - polyg = simplePolygon (geo); - if (!polyg) - sqlite3_result_null (context); - else - { - ring = polyg->Exterior; - if (ring->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (ring->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else if (ring->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else - result = gaiaAllocGeomColl (); - result->Srid = geo->Srid; - line = gaiaAddLinestringToGeomColl (result, ring->Points); - for (iv = 0; iv < line->Points; iv++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); - gaiaSetPointXYZ (line->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); - gaiaSetPointXYM (line->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); - gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - gaiaSetPoint (line->Coords, iv, x, y); - } - } - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - gaiaFreeGeomColl (result); - sqlite3_result_blob (context, p_result, len, free); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_NumInteriorRings (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ NumInteriorRings(BLOB encoded POLYGON) -/ -/ returns the number of INTERIOR RINGS for current POLYGON geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaPolygonPtr polyg; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - polyg = simplePolygon (geo); - if (!polyg) - sqlite3_result_null (context); - else - sqlite3_result_int (context, polyg->NumInteriors); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_InteriorRingN (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL functions: -/ InteriorRingN(BLOB encoded POLYGON geometry) -/ -/ returns the Nth INTERIOR RING for current POLYGON geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int border; - int iv; - double x; - double y; - double z; - double m; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - gaiaLinestringPtr line; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - border = sqlite3_value_int (argv[1]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - polyg = simplePolygon (geo); - if (!polyg) - sqlite3_result_null (context); - else - { - if (border >= 1 && border <= polyg->NumInteriors) - { - ring = polyg->Interiors + (border - 1); - if (ring->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (ring->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else if (ring->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else - result = gaiaAllocGeomColl (); - result->Srid = geo->Srid; - line = gaiaAddLinestringToGeomColl (result, ring->Points); - for (iv = 0; iv < line->Points; iv++) - { - if (ring->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring->Coords, iv, &x, &y, - &z); - gaiaSetPointXYZ (line->Coords, iv, x, y, z); - } - else if (ring->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring->Coords, iv, &x, &y, - &m); - gaiaSetPointXYM (line->Coords, iv, x, y, m); - } - else if (ring->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring->Coords, iv, &x, &y, - &z, &m); - gaiaSetPointXYZM (line->Coords, iv, x, y, z, - m); - } - else - { - gaiaGetPoint (ring->Coords, iv, &x, &y); - gaiaSetPoint (line->Coords, iv, x, y); - } - } - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - gaiaFreeGeomColl (result); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_NumGeometries (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ NumGeometries(BLOB encoded GEOMETRYCOLLECTION) -/ -/ returns the number of elementary geometries for current geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int cnt = 0; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - point = geo->FirstPoint; - while (point) - { - /* counts how many points are there */ - cnt++; - point = point->Next; - } - line = geo->FirstLinestring; - while (line) - { - /* counts how many linestrings are there */ - cnt++; - line = line->Next; - } - polyg = geo->FirstPolygon; - while (polyg) - { - /* counts how many polygons are there */ - cnt++; - polyg = polyg->Next; - } - sqlite3_result_int (context, cnt); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_NPoints (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_NPoints(BLOB encoded GEOMETRYCOLLECTION) -/ -/ returns the total number of points/vertices for current geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int cnt = 0; - int ib; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - gaiaRingPtr rng; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - point = geo->FirstPoint; - while (point) - { - /* counts how many points are there */ - cnt++; - point = point->Next; - } - line = geo->FirstLinestring; - while (line) - { - /* counts how many points are there */ - cnt += line->Points; - line = line->Next; - } - polyg = geo->FirstPolygon; - while (polyg) - { - /* counts how many points are in the exterior ring */ - rng = polyg->Exterior; - cnt += rng->Points; - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* processing any interior ring */ - rng = polyg->Interiors + ib; - cnt += rng->Points; - } - polyg = polyg->Next; - } - sqlite3_result_int (context, cnt); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_NRings (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_NRings(BLOB encoded GEOMETRYCOLLECTION) -/ -/ returns the total number of rings for current geometry -/ (this including both interior and exterior rings) -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int cnt = 0; - gaiaPolygonPtr polyg; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - polyg = geo->FirstPolygon; - while (polyg) - { - /* counts how many rings are there */ - cnt += polyg->NumInteriors + 1; - polyg = polyg->Next; - } - sqlite3_result_int (context, cnt); - } - gaiaFreeGeomColl (geo); -} - -static int -getXYZMSinglePoint (gaiaGeomCollPtr geom, double *x, double *y, double *z, - double *m) -{ -/* check if this geometry is a simple Point (returning full coords) */ - int pts = 0; - int lns = 0; - int pgs = 0; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - pt = geom->FirstPoint; - while (pt) - { - pts++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - lns++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - pgs++; - pg = pg->Next; - } - if (pts == 1 && lns == 0 && pgs == 0) - ; - else - return 0; - *x = geom->FirstPoint->X; - *y = geom->FirstPoint->Y; - if (geom->DimensionModel == GAIA_XY_Z - || geom->DimensionModel == GAIA_XY_Z_M) - *z = geom->FirstPoint->Z; - else - *z = 0.0; - if (geom->DimensionModel == GAIA_XY_M - || geom->DimensionModel == GAIA_XY_Z_M) - *m = geom->FirstPoint->M; - else - *m = 0.0; - return 1; -} - -static void -fnct_SnapToGrid (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_SnapToGrid(BLOBencoded geom, double size) -/ ST_SnapToGrid(BLOBencoded geom, double sizeX, double sizeY) -/ ST_SnapToGrid(BLOBencoded geom, double originX, double originY, -/ double sizeX, double sizeY) -/ -/ Snap all points of the input geometry to the grid defined by its -/ origin and cell size. Remove consecutive points falling on the same -/ cell. Collapsed geometries in a collection are stripped from it. -/ -/ -/ ST_SnapToGrid(BLOBencoded geom, BLOBencoded point, double sizeX, -/ double sizeY, double sizeZ, double sizeM) -/ -/ Snap all points of the input geometry to the grid defined by its -/ origin (the second argument, must be a point) and cell sizes. -/ -/ Specify 0 as size for any dimension you don't want to snap to -/ a grid. -/ return NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int int_value; - double origin_x = 0.0; - double origin_y = 0.0; - double origin_z = 0.0; - double origin_m = 0.0; - double size_x; - double size_y; - double size_z = 0.0; - double size_m = 0.0; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr point = NULL; - gaiaGeomCollPtr result = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (argc == 2) - { - /* ST_SnapToGrid(BLOBencoded geom, double size) */ - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - size_x = int_value; - size_y = size_x; - } - else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - { - size_x = sqlite3_value_double (argv[1]); - size_y = size_x; - } - else - { - sqlite3_result_null (context); - return; - } - } - if (argc == 3) - { - /* ST_SnapToGrid(BLOBencoded geom, double sizeX, double sizeY) */ - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - size_x = int_value; - } - else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - { - size_x = sqlite3_value_double (argv[1]); - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - size_y = int_value; - } - else if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - { - size_y = sqlite3_value_double (argv[2]); - } - else - { - sqlite3_result_null (context); - return; - } - } - if (argc == 5) - { - /* - / ST_SnapToGrid(BLOBencoded geom, double originX, double originY, - / double sizeX, double sizeY) - */ - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - origin_x = int_value; - } - else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - { - origin_x = sqlite3_value_double (argv[1]); - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - origin_y = int_value; - } - else if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - { - origin_y = sqlite3_value_double (argv[2]); - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[3]); - size_x = int_value; - } - else if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) - { - size_x = sqlite3_value_double (argv[3]); - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[4]); - size_y = int_value; - } - else if (sqlite3_value_type (argv[4]) == SQLITE_FLOAT) - { - size_y = sqlite3_value_double (argv[4]); - } - else - { - sqlite3_result_null (context); - return; - } - } - if (argc == 6) - { - /* - / ST_SnapToGrid(BLOBencoded geom, BLOBencoded point, double sizeX, - / double sizeY, double sizeZ, double sizeM) - */ - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - point = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!point) - { - sqlite3_result_null (context); - return; - } - if (!getXYZMSinglePoint - (point, &origin_x, &origin_y, &origin_z, &origin_m)) - { - gaiaFreeGeomColl (point); - sqlite3_result_null (context); - return; - } - gaiaFreeGeomColl (point); - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - size_x = int_value; - } - else if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - { - size_x = sqlite3_value_double (argv[2]); - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[3]); - size_y = int_value; - } - else if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) - { - size_y = sqlite3_value_double (argv[3]); - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[4]); - size_z = int_value; - } - else if (sqlite3_value_type (argv[4]) == SQLITE_FLOAT) - { - size_z = sqlite3_value_double (argv[4]); - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[5]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[5]); - size_m = int_value; - } - else if (sqlite3_value_type (argv[5]) == SQLITE_FLOAT) - { - size_m = sqlite3_value_double (argv[5]); - } - else - { - sqlite3_result_null (context); - return; - } - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - result = - gaiaSnapToGrid (geo, origin_x, origin_y, origin_z, origin_m, - size_x, size_y, size_z, size_m); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static char garsMapping[24] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', - 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' -}; - -static char -garsLetterCode (int value) -{ - return garsMapping[value]; -} - -static int -garsMappingIndex (const char letter) -{ - int i = 0; - for (i = 0; i < 24; ++i) - { - if (letter == garsMapping[i]) - return i; - } - return -1; -} - -static double -garsLetterToDegreesLat (char msd, char lsd) -{ - double high = garsMappingIndex (msd) * 24.0; - double low = garsMappingIndex (lsd); - if ((high < 0) || (low < 0)) - { - return -100.0; - } - return (((high + low) * 0.5) - 90.0); -} - - -static void -fnct_GARSMbr (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ GARSMbr(Text) -/ -/ converts the Text (which should be a valid GARS area) to the corresponding -/ MBR geometry. -/ This function will return NULL if an error occurs -*/ - const char *text = NULL; - int len = 0; - unsigned char *p_result = NULL; - double x1 = 0.0; - double y1 = 0.0; - double x2 = 0.0; - double y2 = 0.0; - - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - sqlite3_result_null (context); - return; - } - text = (const char *) sqlite3_value_text (argv[0]); - if ((strlen (text) < 5) || (strlen (text) > 7)) - { - sqlite3_result_null (context); - return; - } - if (strlen (text) == 5) - { - int numMatch = 0; - unsigned int digit100 = 0; - char letterMSD = '\0'; - char letterLSD = '\0'; - numMatch = sscanf (text, "%u%c%c", &digit100, &letterMSD, &letterLSD); - if (numMatch != 3) - { - sqlite3_result_null (context); - return; - } - x1 = ((digit100 - 1) * 0.5) - 180.0; - y1 = garsLetterToDegreesLat (letterMSD, letterLSD); - if ((x1 < -180.0) || (x1 > 179.5) || (y1 < -90.0) || (y1 > 89.5)) - { - sqlite3_result_null (context); - return; - } - x2 = x1 + 0.5; - y2 = y1 + 0.5; - } - if (strlen (text) == 6) - { - unsigned int numMatch = 0; - unsigned int digit100 = 0; - char letterMSD = '\0'; - char letterLSD = '\0'; - unsigned int digitSegment = 0; - numMatch = - sscanf (text, "%u%c%c%u", &digit100, &letterMSD, &letterLSD, - &digitSegment); - if (numMatch != 4) - { - sqlite3_result_null (context); - return; - } - if ((digitSegment < 1) || (digitSegment > 4)) - { - sqlite3_result_null (context); - return; - } - x1 = ((digit100 - 1) * 0.5) - 180.0; - if ((digitSegment == 2) || (digitSegment == 4)) - { - x1 += 0.25; - } - y1 = garsLetterToDegreesLat (letterMSD, letterLSD); - if ((digitSegment == 1) || (digitSegment == 2)) - { - y1 += 0.25; - } - if ((x1 < -180.0) || (x1 > 179.75) || (y1 < -90.0) || (y1 > 89.75)) - { - sqlite3_result_null (context); - return; - } - x2 = x1 + 0.25; - y2 = y1 + 0.25; - } - if (strlen (text) == 7) - { - unsigned int numMatch = 0; - unsigned int digit100 = 0; - char letterMSD = '\0'; - char letterLSD = '\0'; - unsigned int digitAndKeypad = 0; - unsigned int digitSegment = 0; - unsigned int keypadNumber = 0; - numMatch = - sscanf (text, "%u%c%c%u", &digit100, &letterMSD, &letterLSD, - &digitAndKeypad); - if (numMatch != 4) - { - sqlite3_result_null (context); - return; - } - digitSegment = digitAndKeypad / 10; - keypadNumber = digitAndKeypad % 10; - if ((digitSegment < 1) || (digitSegment > 4)) - { - sqlite3_result_null (context); - return; - } - if (keypadNumber < 1) - { - sqlite3_result_null (context); - return; - } - x1 = ((digit100 - 1) * 0.5) - 180.0; - if ((digitSegment == 2) || (digitSegment == 4)) - { - x1 += 0.25; - } - y1 = garsLetterToDegreesLat (letterMSD, letterLSD); - if ((digitSegment == 1) || (digitSegment == 2)) - { - y1 += 0.25; - } - switch (keypadNumber) - { - case 1: - x1 += 0 * 0.25 / 3; - y1 += 2 * 0.25 / 3; - break; - case 2: - x1 += 1 * 0.25 / 3; - y1 += 2 * 0.25 / 3; - break; - case 3: - x1 += 2 * 0.25 / 3; - y1 += 2 * 0.25 / 3; - break; - case 4: - x1 += 0 * 0.25 / 3; - y1 += 1 * 0.25 / 3; - break; - case 5: - x1 += 1 * 0.25 / 3; - y1 += 1 * 0.25 / 3; - break; - case 6: - x1 += 2 * 0.25 / 3; - y1 += 1 * 0.25 / 3; - break; - case 7: - x1 += 0 * 0.25 / 3; - y1 += 0 * 0.25 / 3; - break; - case 8: - x1 += 1 * 0.25 / 3; - y1 += 0 * 0.25 / 3; - break; - case 9: - x1 += 2 * 0.25 / 3; - y1 += 0 * 0.25 / 3; - break; - } - if ((x1 < -180.0) || (x1 >= 180.0) || (y1 < -90.0) || (y1 >= 90.0)) - { - sqlite3_result_null (context); - return; - } - x2 = x1 + (0.25 / 3); - y2 = y1 + (0.25 / 3); - } - gaiaBuildMbr (x1, y1, x2, y2, 4326, &p_result, &len); - if (!p_result) - { - sqlite3_result_null (context); - printf ("bad p_result\n"); - } - else - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_ToGARS (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ToGARS(BLOB encoded POINT) -/ -/ returns the Global Area Reference System coordinate area for a given point, -/ or NULL if an error occurs -*/ - unsigned char *p_blob; - int n_bytes; - int pts = 0; - int lns = 0; - int pgs = 0; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - gaiaGeomCollPtr geo = NULL; - char p_result[8]; - int lon_band = 0; - double lon_minutes = 0; - int segmentNumber = 0; - int lat_band = 0; - double lat_minutes = 0; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - { - sqlite3_result_null (context); - return; - } - gaiaNormalizeLonLat (geo); - point = geo->FirstPoint; - while (point != NULL) - { - pts++; - point = point->Next; - } - line = geo->FirstLinestring; - while (line != NULL) - { - lns++; - line = line->Next; - } - polyg = geo->FirstPolygon; - while (polyg != NULL) - { - pgs++; - polyg = polyg->Next; - } - if (pts == 1 && lns == 0 && pgs == 0) - point = geo->FirstPoint; - else - { - /* not a single Point */ - gaiaFreeGeomColl (geo); - sqlite3_result_null (context); - return; - } - /* longitude band */ - lon_band = 1 + (int) ((point->X + 180.0) * 2); - sprintf (p_result, "%03i", lon_band); - /* latitude band */ - lat_band = (int) ((point->Y + 90.0) * 2); - p_result[3] = garsLetterCode (lat_band / 24); - p_result[4] = garsLetterCode (lat_band % 24); - /* quadrant */ - lon_minutes = fmod ((point->X + 180.0), 0.5) * 60.0; - if (lon_minutes < 15.0) - { - segmentNumber = 1; - } - else - { - segmentNumber = 2; - lon_minutes -= 15.0; - } - lat_minutes = fmod ((point->Y + 90.0), 0.5) * 60.0; - if (lat_minutes < 15.0) - { - segmentNumber += 2; - } - else - { - /* we already have the right segment */ - lat_minutes -= 15.0; - } - sprintf (&(p_result[5]), "%i", segmentNumber); - /* area */ - segmentNumber = 0; - if (lon_minutes >= 10.0) - { - segmentNumber = 3; - } - else if (lon_minutes >= 5.0) - { - segmentNumber = 2; - } - else - { - segmentNumber = 1; - } - if (lat_minutes >= 10.0) - { - /* nothing to add */ - } - else if (lat_minutes >= 5.0) - { - segmentNumber += 3; - } - else - { - segmentNumber += 6; - } - sprintf (&(p_result[6]), "%i", segmentNumber); - sqlite3_result_text (context, p_result, 7, SQLITE_TRANSIENT); - gaiaFreeGeomColl (geo); -} - -static void -fnct_GeometryN (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ GeometryN(BLOB encoded GEOMETRYCOLLECTION geometry) -/ -/ returns the Nth geometry for current GEOMETRYCOLLECTION or MULTIxxxx geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int entity; - int len; - int cnt = 0; - int iv; - int ib; - double x; - double y; - double z; - double m; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaLinestringPtr line2; - gaiaPolygonPtr polyg; - gaiaPolygonPtr polyg2; - gaiaRingPtr ring_in; - gaiaRingPtr ring_out; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - entity = sqlite3_value_int (argv[1]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - point = geo->FirstPoint; - while (point) - { - /* counts how many points are there */ - cnt++; - if (cnt == entity) - { - /* ok, required elementary geometry is this POINT */ - if (point->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (point->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else if (point->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else - result = gaiaAllocGeomColl (); - result->Srid = geo->Srid; - if (point->DimensionModel == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (result, point->X, - point->Y, point->Z); - else if (point->DimensionModel == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (result, point->X, - point->Y, point->M); - else if (point->DimensionModel == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (result, point->X, - point->Y, point->Z, - point->M); - else - gaiaAddPointToGeomColl (result, point->X, point->Y); - goto skip; - } - point = point->Next; - } - line = geo->FirstLinestring; - while (line) - { - /* counts how many linestrings are there */ - cnt++; - if (cnt == entity) - { - /* ok, required elementary geometry is this LINESTRING */ - if (line->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (line->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else if (line->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else - result = gaiaAllocGeomColl (); - result->Srid = geo->Srid; - line2 = - gaiaAddLinestringToGeomColl (result, line->Points); - for (iv = 0; iv < line2->Points; iv++) - { - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, - &z); - gaiaSetPointXYZ (line2->Coords, iv, x, y, z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, - &m); - gaiaSetPointXYM (line2->Coords, iv, x, y, m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, - &z, &m); - gaiaSetPointXYZM (line2->Coords, iv, x, y, z, - m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - gaiaSetPoint (line2->Coords, iv, x, y); - } - } - goto skip; - } - line = line->Next; - } - polyg = geo->FirstPolygon; - while (polyg) - { - /* counts how many polygons are there */ - cnt++; - if (cnt == entity) - { - /* ok, required elementary geometry is this POLYGON */ - if (polyg->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (polyg->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else if (polyg->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else - result = gaiaAllocGeomColl (); - result->Srid = geo->Srid; - ring_in = polyg->Exterior; - polyg2 = - gaiaAddPolygonToGeomColl (result, ring_in->Points, - polyg->NumInteriors); - ring_out = polyg2->Exterior; - for (iv = 0; iv < ring_out->Points; iv++) - { - /* copying the exterior ring POINTs */ - if (ring_in->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring_in->Coords, iv, &x, &y, - &z); - gaiaSetPointXYZ (ring_out->Coords, iv, x, y, - z); - } - else if (ring_in->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring_in->Coords, iv, &x, &y, - &m); - gaiaSetPointXYM (ring_out->Coords, iv, x, y, - m); - } - else if (ring_in->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring_in->Coords, iv, &x, &y, - &z, &m); - gaiaSetPointXYZM (ring_out->Coords, iv, x, y, - z, m); - } - else - { - gaiaGetPoint (ring_in->Coords, iv, &x, &y); - gaiaSetPoint (ring_out->Coords, iv, x, y); - } - } - for (ib = 0; ib < polyg2->NumInteriors; ib++) - { - /* processing the interior rings */ - ring_in = polyg->Interiors + ib; - ring_out = - gaiaAddInteriorRing (polyg2, ib, - ring_in->Points); - for (iv = 0; iv < ring_out->Points; iv++) - { - if (ring_in->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ring_in->Coords, iv, - &x, &y, &z); - gaiaSetPointXYZ (ring_out->Coords, iv, - x, y, z); - } - else if (ring_in->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ring_in->Coords, iv, - &x, &y, &m); - gaiaSetPointXYM (ring_out->Coords, iv, - x, y, m); - } - else if (ring_in->DimensionModel == - GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ring_in->Coords, iv, - &x, &y, &z, &m); - gaiaSetPointXYZM (ring_out->Coords, iv, - x, y, z, m); - } - else - { - gaiaGetPoint (ring_in->Coords, iv, &x, - &y); - gaiaSetPoint (ring_out->Coords, iv, x, - y); - } - } - } - goto skip; - } - polyg = polyg->Next; - } - skip: - if (result) - { - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - gaiaFreeGeomColl (result); - sqlite3_result_blob (context, p_result, len, free); - } - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo); -} - -static void -mbrs_eval (sqlite3_context * context, int argc, sqlite3_value ** argv, - int request) -{ -/* SQL function: -/ MBRsomething(BLOB encoded GEOMETRY-1, BLOB encoded GEOMETRY-2) -/ -/ returns: -/ 1 if the required spatial relationship between the two MBRs is TRUE -/ 0 otherwise -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int ret; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobMbr (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobMbr (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_null (context); - else - { - ret = 0; - gaiaMbrGeometry (geo1); - gaiaMbrGeometry (geo2); - switch (request) - { - case GAIA_MBR_CONTAINS: - ret = gaiaMbrsContains (geo1, geo2); - break; - case GAIA_MBR_DISJOINT: - ret = gaiaMbrsDisjoint (geo1, geo2); - break; - case GAIA_MBR_EQUAL: - ret = gaiaMbrsEqual (geo1, geo2); - break; - case GAIA_MBR_INTERSECTS: - ret = gaiaMbrsIntersects (geo1, geo2); - break; - case GAIA_MBR_OVERLAPS: - ret = gaiaMbrsOverlaps (geo1, geo2); - break; - case GAIA_MBR_TOUCHES: - ret = gaiaMbrsTouches (geo1, geo2); - break; - case GAIA_MBR_WITHIN: - ret = gaiaMbrsWithin (geo1, geo2); - break; - } - if (ret < 0) - sqlite3_result_null (context); - else - sqlite3_result_int (context, ret); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -/* -/ the following functions simply readdress the mbr_eval() -/ setting the appropriate request mode -*/ - -static void -fnct_MbrContains (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - mbrs_eval (context, argc, argv, GAIA_MBR_CONTAINS); -} - -static void -fnct_MbrDisjoint (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - mbrs_eval (context, argc, argv, GAIA_MBR_DISJOINT); -} - -static void -fnct_MbrEqual (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - mbrs_eval (context, argc, argv, GAIA_MBR_EQUAL); -} - -static void -fnct_MbrIntersects (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - mbrs_eval (context, argc, argv, GAIA_MBR_INTERSECTS); -} - -static void -fnct_EnvIntersects (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_EnvIntersects(Geometry geom, double X1, double Y1, double X2, double Y2) -/ ST_EnvelopesIntersects(Geometry geom, double X1, double Y1, double X2, double Y2) -/ -/ the second MBR is defined by two points (identifying a rectangle's diagonal) -/ or NULL if any error is encountered -*/ - double x1; - double y1; - double x2; - double y2; - int int_value; - unsigned char *p_blob; - int n_bytes; - int ret = 0; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - gaiaLinestringPtr ln; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - x1 = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - x1 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - y1 = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - y1 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) - x2 = sqlite3_value_double (argv[3]); - else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[3]); - x2 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[4]) == SQLITE_FLOAT) - y2 = sqlite3_value_double (argv[4]); - else if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[4]); - y2 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1) - sqlite3_result_null (context); - else - { - gaiaMbrGeometry (geo1); - geo2 = gaiaAllocGeomColl (); - ln = gaiaAddLinestringToGeomColl (geo2, 2); - gaiaSetPoint (ln->Coords, 0, x1, y1); - gaiaSetPoint (ln->Coords, 1, x2, y2); - gaiaMbrGeometry (geo2); - ret = gaiaMbrsIntersects (geo1, geo2); - sqlite3_result_int (context, ret); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - - -static void -fnct_MbrOverlaps (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - mbrs_eval (context, argc, argv, GAIA_MBR_OVERLAPS); -} - -static void -fnct_MbrTouches (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - mbrs_eval (context, argc, argv, GAIA_MBR_TOUCHES); -} - -static void -fnct_MbrWithin (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - mbrs_eval (context, argc, argv, GAIA_MBR_WITHIN); -} - -static void -fnct_ShiftCoords (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ShiftCoords(BLOBencoded geometry, shiftX, shiftY) -/ -/ returns a new geometry that is the original one received, but with shifted coordinates -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - double shift_x; - double shift_y; - int int_value; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - shift_x = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - shift_x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - shift_y = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - shift_y = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaShiftCoords (geo, shift_x, shift_y); - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_Translate (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Translate(BLOBencoded geometry, shiftX, shiftY, shiftZ) -/ -/ returns a new geometry that is the original one received, but with shifted coordinates -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - double shift_x; - double shift_y; - double shift_z; - int int_value; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - shift_x = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - shift_x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - shift_y = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - shift_y = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) - shift_z = sqlite3_value_double (argv[3]); - else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[3]); - shift_z = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaShiftCoords3D (geo, shift_x, shift_y, shift_z); - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (geo); -} - - -static void -fnct_ShiftLongitude (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ShiftLongitude(BLOBencoded geometry) -/ -/ returns a new geometry that is the original one received, but with negative -/ longitudes shifted by 360 -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaShiftLongitude (geo); - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_NormalizeLonLat (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ NormalizeLonLat (BLOBencoded geometry) -/ -/ returns a new geometry that is the original one received, but with longitude -/ and latitude values shifted into the range [-180 - 180, -90 - 90]. -/ NULL is returned if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaNormalizeLonLat (geo); - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_ScaleCoords (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ScaleCoords(BLOBencoded geometry, scale_factor_x [, scale_factor_y]) -/ -/ returns a new geometry that is the original one received, but with scaled coordinates -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - double scale_x; - double scale_y; - int int_value; - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - scale_x = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - scale_x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (argc == 2) - scale_y = scale_x; /* this one is an isotropic scaling request */ - else - { - /* an anisotropic scaling is requested */ - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - scale_y = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - scale_y = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaScaleCoords (geo, scale_x, scale_y); - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_RotateCoords (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ RotateCoords(BLOBencoded geometry, angle) -/ -/ returns a new geometry that is the original one received, but with rotated coordinates -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - double angle; - int int_value; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - angle = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - angle = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaRotateCoords (geo, angle); - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_ReflectCoords (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ReflectCoords(BLOBencoded geometry, x_axis, y_axis) -/ -/ returns a new geometry that is the original one received, but with mirrored coordinates -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - int x_axis; - int y_axis; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - x_axis = sqlite3_value_int (argv[1]); - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - y_axis = sqlite3_value_int (argv[2]); - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaReflectCoords (geo, x_axis, y_axis); - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_SwapCoords (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ SwapCoords(BLOBencoded geometry) -/ -/ returns a new geometry that is the original one received, but with swapped x- and y-coordinate -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaSwapCoords (geo); - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - if (!p_result) - sqlite3_result_null (context); - else - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (geo); -} - -SPATIALITE_PRIVATE int -getEllipsoidParams (void *p_sqlite, int srid, double *a, double *b, double *rf) -{ -/* -/ retrieves the PROJ +ellps=xx [+a=xx +b=xx] params -/from SPATIAL_SYS_REF table, if possible -*/ - sqlite3 *sqlite = (sqlite3 *) p_sqlite; - char *proj4text; - char *p_proj; - char *p_ellps; - char *p_datum; - char *p_a; - char *p_b; - char *p_end; - - if (srid == 0) - { - /* - / SRID=0 is formally defined as "Undefined Geographic" - / so will default to SRID=4326 (WGS84 Long/Lat) - */ - srid = 4326; - } - getProjParams (sqlite, srid, &proj4text); - if (proj4text == NULL) - return 0; -/* parsing the proj4text geodesic string */ - p_proj = strstr (proj4text, "+proj="); - p_datum = strstr (proj4text, "+datum="); - p_ellps = strstr (proj4text, "+ellps="); - p_a = strstr (proj4text, "+a="); - p_b = strstr (proj4text, "+b="); -/* checking if +proj=longlat is true */ - if (!p_proj) - goto invalid; - p_end = strchr (p_proj, ' '); - if (p_end) - *p_end = '\0'; - if (strcmp (p_proj + 6, "longlat") != 0) - goto invalid; - if (p_ellps) - { - /* trying to retrieve the ellipsoid params by name */ - p_end = strchr (p_ellps, ' '); - if (p_end) - *p_end = '\0'; - if (gaiaEllipseParams (p_ellps + 7, a, b, rf)) - goto valid; - } - else if (p_datum) - { - /* - / starting since GDAL 1.9.0 the WGS84 [4326] PROJ.4 def doesn't - / declares any longer the "+ellps=" param - / in this case we'll attempt to recover using "+datum=". - */ - p_end = strchr (p_datum, ' '); - if (p_end) - *p_end = '\0'; - if (gaiaEllipseParams (p_datum + 7, a, b, rf)) - goto valid; - } - if (p_a && p_b) - { - /* trying to retrieve the +a=xx and +b=xx args */ - p_end = strchr (p_a, ' '); - if (p_end) - *p_end = '\0'; - p_end = strchr (p_b, ' '); - if (p_end) - *p_end = '\0'; - *a = atof (p_a + 3); - *b = atof (p_b + 3); - *rf = 1.0 / ((*a - *b) / *a); - goto valid; - } - - valid: - free (proj4text); - return 1; - - invalid: - free (proj4text); - return 0; -} - -static void -fnct_FromEWKB (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ GeomFromEWKB(EWKB encoded geometry) -/ -/ returns the current geometry by parsing Geos/PostGis EWKB encoded string -/ or NULL if any error is encountered -*/ - int len; - unsigned char *p_result = NULL; - const unsigned char *text; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - sqlite3_result_null (context); - return; - } - text = sqlite3_value_text (argv[0]); - geo = gaiaFromEWKB (text); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - gaiaFreeGeomColl (geo); - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_ToEWKB (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ AsEWKB(BLOB encoded geometry) -/ -/ returns a text string corresponding to Geos/PostGIS EWKB notation -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - gaiaOutBuffer out_buf; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - { - sqlite3_result_null (context); - return; - } - else - { - gaiaOutBufferInitialize (&out_buf); - gaiaToEWKB (&out_buf, geo); - if (out_buf.Error || out_buf.Buffer == NULL) - sqlite3_result_null (context); - else - { - len = out_buf.WriteOffset; - sqlite3_result_text (context, out_buf.Buffer, len, free); - out_buf.Buffer = NULL; - } - } - gaiaFreeGeomColl (geo); - gaiaOutBufferReset (&out_buf); -} - -static void -fnct_ToEWKT (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ AsEWKT(BLOB encoded geometry) -/ -/ returns the corresponding PostGIS EWKT encoded value -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - gaiaOutBuffer out_buf; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - gaiaOutBufferInitialize (&out_buf); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - gaiaToEWKT (&out_buf, geo); - if (out_buf.Error || out_buf.Buffer == NULL) - sqlite3_result_null (context); - else - { - len = out_buf.WriteOffset; - sqlite3_result_text (context, out_buf.Buffer, len, free); - out_buf.Buffer = NULL; - } - } - gaiaFreeGeomColl (geo); - gaiaOutBufferReset (&out_buf); -} - -static void -fnct_FromEWKT (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ GeomFromEWKT(EWKT encoded geometry) -/ -/ returns the current geometry by parsing EWKT (PostGIS) encoded string -/ or NULL if any error is encountered -*/ - int len; - unsigned char *p_result = NULL; - const unsigned char *text; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - sqlite3_result_null (context); - return; - } - text = sqlite3_value_text (argv[0]); - geo = gaiaParseEWKT (text); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - gaiaFreeGeomColl (geo); - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_FromGeoJSON (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ GeomFromGeoJSON(GeoJSON encoded geometry) -/ -/ returns the current geometry by parsing GeoJSON encoded string -/ or NULL if any error is encountered -*/ - int len; - unsigned char *p_result = NULL; - const unsigned char *text; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - sqlite3_result_null (context); - return; - } - text = sqlite3_value_text (argv[0]); - geo = gaiaParseGeoJSON (text); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - gaiaFreeGeomColl (geo); - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_FromKml (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ GeomFromKml(KML encoded geometry) -/ -/ returns the current geometry by parsing KML encoded string -/ or NULL if any error is encountered -*/ - int len; - unsigned char *p_result = NULL; - const unsigned char *text; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - sqlite3_result_null (context); - return; - } - text = sqlite3_value_text (argv[0]); - geo = gaiaParseKml (text); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - gaiaFreeGeomColl (geo); - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_FromGml (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ GeomFromGml(GML encoded geometry) -/ -/ returns the current geometry by parsing GML encoded string -/ or NULL if any error is encountered -*/ - int len; - unsigned char *p_result = NULL; - const unsigned char *text; - gaiaGeomCollPtr geo = NULL; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - sqlite3_result_null (context); - return; - } - text = sqlite3_value_text (argv[0]); - geo = gaiaParseGml (text, sqlite); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); - gaiaFreeGeomColl (geo); - sqlite3_result_blob (context, p_result, len, free); -} - -static void -fnct_LinesFromRings (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ LinesFromRings(BLOBencoded geometry, BOOL multi_linestring) -/ -/ returns a new geometry [LINESTRING or MULTILINESTRING] representing -/ the linearization for current (MULTI)POLYGON geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr geom_new = NULL; - int len; - int multi_linestring = 0; - unsigned char *p_result = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - if (argc == 2) - { - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - multi_linestring = sqlite3_value_int (argv[1]); - } - geom_new = gaiaLinearize (geo, multi_linestring); - if (!geom_new) - goto invalid; - gaiaFreeGeomColl (geo); - gaiaToSpatiaLiteBlobWkb (geom_new, &p_result, &len); - gaiaFreeGeomColl (geom_new); - sqlite3_result_blob (context, p_result, len, free); - return; - invalid: - if (geo) - gaiaFreeGeomColl (geo); - sqlite3_result_null (context); -} - -#ifndef OMIT_GEOS /* including GEOS */ - -static void -fnct_BuildArea (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ BuildArea(BLOBencoded geometry) -/ -/ Assuming that Geometry represents a set of sparse Linestrings, -/ this function will attempt to reassemble a single Polygon -/ (or a set of Polygons) -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - result = gaiaPolygonize (geo, 0); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - - -static void -fnct_Polygonize_step (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ Polygonize(BLOBencoded geom) -/ -/ aggregate function - STEP -/ -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geom; - gaiaGeomCollPtr result; - gaiaGeomCollPtr *p; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geom) - return; - p = sqlite3_aggregate_context (context, sizeof (gaiaGeomCollPtr)); - if (!(*p)) - { - /* this is the first row */ - *p = geom; - } - else - { - /* subsequent rows */ - result = gaiaMergeGeometries (*p, geom); - gaiaFreeGeomColl (*p); - *p = result; - gaiaFreeGeomColl (geom); - } -} - -static void -fnct_Polygonize_final (sqlite3_context * context) -{ -/* SQL function: -/ Polygonize(BLOBencoded geom) -/ -/ aggregate function - FINAL -/ -*/ - gaiaGeomCollPtr result; - gaiaGeomCollPtr geom; - gaiaGeomCollPtr *p = sqlite3_aggregate_context (context, 0); - if (!p) - { - sqlite3_result_null (context); - return; - } - result = *p; - if (!result) - sqlite3_result_null (context); - else - { - geom = gaiaPolygonize (result, 0); - if (geom == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - geom->Srid = result->Srid; - gaiaToSpatiaLiteBlobWkb (geom, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (geom); - } - gaiaFreeGeomColl (result); - } -} - -#endif /* end including GEOS */ - -static void -fnct_DissolveSegments (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ DissolveSegments(BLOBencoded geometry) -/ -/ Dissolves any LINESTRING or RING into elementary segments -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - result = gaiaDissolveSegments (geo); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_DissolvePoints (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ DissolvePoints(BLOBencoded geometry) -/ -/ Dissolves any LINESTRING or RING into elementary Vertices -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - result = gaiaDissolvePoints (geo); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_CollectionExtract (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ CollectionExtract(BLOBencoded geometry, Integer type) -/ -/ Extracts from a GEOMETRYCOLLECTION any item of the required TYPE -/ 1=Point - 2=Linestring - 3=Polygon -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - int type; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - type = sqlite3_value_int (argv[1]); - else - { - sqlite3_result_null (context); - return; - } - if (type == 1 || type == 2 || type == 3) - ; - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - switch (type) - { - case 1: - result = gaiaExtractPointsFromGeomColl (geo); - break; - case 2: - result = gaiaExtractLinestringsFromGeomColl (geo); - break; - case 3: - result = gaiaExtractPolygonsFromGeomColl (geo); - break; - }; - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_LocateBetweenMeasures (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL functions: -/ ST_Locate_Along_Measure(BLOBencoded geometry, Double m_value) -/ ST_Locate_Between_Measures(BLOBencoded geometry, Double m_start, Double m_end) -/ -/ Extracts from a GEOMETRY (supporting M) any Point/Linestring -/ matching the range of measures -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - double m_start; - double m_end; - int intval; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - m_start = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - intval = sqlite3_value_int (argv[1]); - m_start = intval; - } - else - { - sqlite3_result_null (context); - return; - } - if (argc > 2) - { - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - m_end = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - intval = sqlite3_value_int (argv[2]); - m_end = intval; - } - else - { - sqlite3_result_null (context); - return; - } - } - else - m_end = m_start; - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - result = gaiaLocateBetweenMeasures (geo, m_start, m_end); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -#ifndef OMIT_PROJ /* including PROJ.4 */ - -static void -fnct_Transform (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Transform(BLOBencoded geometry, srid) -/ -/ returns a new geometry that is the original one received, but with the new SRID [no coordinates translation is applied] -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - int srid_from; - int srid_to; - char *proj_from; - char *proj_to; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - srid_to = sqlite3_value_int (argv[1]); - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - srid_from = geo->Srid; - getProjParams (sqlite, srid_from, &proj_from); - getProjParams (sqlite, srid_to, &proj_to); - if (proj_to == NULL || proj_from == NULL) - { - if (proj_from) - free (proj_from); - if (proj_to) - free (proj_to); - gaiaFreeGeomColl (geo); - sqlite3_result_null (context); - return; - } - result = gaiaTransform (geo, proj_from, proj_to); - free (proj_from); - free (proj_to); - if (!result) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = srid_to; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -#endif /* end including PROJ.4 */ - -#ifndef OMIT_GEOS /* including GEOS */ - -static void -fnct_Boundary (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Boundary(BLOB encoded geometry) -/ -/ returns the combinatorial boundary for current geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr boundary; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (gaiaIsEmpty (geo)) - sqlite3_result_null (context); - else - { - boundary = gaiaBoundary (geo); - if (!boundary) - sqlite3_result_null (context); - else - { - gaiaToSpatiaLiteBlobWkb (boundary, &p_result, &len); - gaiaFreeGeomColl (boundary); - sqlite3_result_blob (context, p_result, len, free); - } - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_IsClosed (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ IsClosed(BLOB encoded LINESTRING or MULTILINESTRING geometry) -/ -/ returns: -/ 1 if this LINESTRING is closed [or if this is a MULTILINESTRING and every LINESTRINGs are closed] -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_int (context, -1); - else - { - sqlite3_result_int (context, gaiaIsClosedGeom (geo)); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_IsSimple (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ IsSimple(BLOB encoded GEOMETRY) -/ -/ returns: -/ 1 if this GEOMETRY is simple -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int ret; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_int (context, -1); - else - { - ret = gaiaIsSimple (geo); - if (ret < 0) - sqlite3_result_int (context, -1); - else - sqlite3_result_int (context, ret); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_IsRing (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ IsRing(BLOB encoded LINESTRING geometry) -/ -/ returns: -/ 1 if this LINESTRING is a valid RING -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int ret; - gaiaGeomCollPtr geo = NULL; - gaiaLinestringPtr line; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_int (context, -1); - else - { - line = simpleLinestring (geo); - if (!line < 0) - sqlite3_result_int (context, -1); - else - { - ret = gaiaIsRing (line); - sqlite3_result_int (context, ret); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_IsValid (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ IsValid(BLOB encoded GEOMETRY) -/ -/ returns: -/ 1 if this GEOMETRY is a valid one -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int ret; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_int (context, -1); - else - { - ret = gaiaIsValid (geo); - if (ret < 0) - sqlite3_result_int (context, -1); - else - sqlite3_result_int (context, ret); - } - gaiaFreeGeomColl (geo); -} - -static void -length_common (sqlite3_context * context, int argc, sqlite3_value ** argv, - int is_perimeter) -{ -/* common implementation supporting both ST_Length and ST_Perimeter */ - unsigned char *p_blob; - int n_bytes; - double length = 0.0; - int ret; - int use_ellipsoid = -1; - double a; - double b; - double rf; - gaiaGeomCollPtr geo = NULL; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (argc == 2) - { - if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) - { - sqlite3_result_null (context); - return; - } - use_ellipsoid = sqlite3_value_int (argv[1]); - if (use_ellipsoid != 0) - use_ellipsoid = 1; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (use_ellipsoid >= 0) - { - /* attempting to identify the corresponding ellipsoid */ - if (getEllipsoidParams (sqlite, geo->Srid, &a, &b, &rf)) - { - double l; - int ib; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - if (use_ellipsoid) - { - /* measuring on the Ellipsoid */ - if (!is_perimeter) - { - line = geo->FirstLinestring; - while (line) - { - /* Linestrings */ - l = gaiaGeodesicTotalLength (a, b, rf, - line->DimensionModel, - line-> - Coords, - line-> - Points); - if (l < 0.0) - { - length = -1.0; - break; - } - length += l; - line = line->Next; - } - } - if (length >= 0) - { - if (is_perimeter) - { - /* Polygons */ - polyg = geo->FirstPolygon; - while (polyg) - { - /* exterior Ring */ - ring = polyg->Exterior; - l = gaiaGeodesicTotalLength (a, b, - rf, - ring->DimensionModel, - ring->Coords, - ring->Points); - if (l < 0.0) - { - length = -1.0; - break; - } - length += l; - for (ib = 0; - ib < polyg->NumInteriors; - ib++) - { - /* interior Rings */ - ring = - polyg->Interiors + ib; - l = gaiaGeodesicTotalLength - (a, b, rf, - ring->DimensionModel, - ring->Coords, - ring->Points); - if (l < 0.0) - { - length = -1.0; - break; - } - length += l; - } - if (length < 0.0) - break; - polyg = polyg->Next; - } - } - } - } - else - { - /* measuring on the Great Circle */ - if (!is_perimeter) - { - line = geo->FirstLinestring; - while (line) - { - /* Linestrings */ - length += - gaiaGreatCircleTotalLength (a, b, - line->DimensionModel, - line-> - Coords, - line-> - Points); - line = line->Next; - } - } - if (length >= 0) - { - if (is_perimeter) - { - /* Polygons */ - polyg = geo->FirstPolygon; - while (polyg) - { - /* exterior Ring */ - ring = polyg->Exterior; - length += - gaiaGreatCircleTotalLength (a, - b, - ring-> - DimensionModel, - ring->Coords, - ring->Points); - for (ib = 0; - ib < polyg->NumInteriors; - ib++) - { - /* interior Rings */ - ring = - polyg->Interiors + ib; - length += - gaiaGreatCircleTotalLength - (a, b, - ring->DimensionModel, - ring->Coords, - ring->Points); - } - polyg = polyg->Next; - } - } - } - } - if (length < 0.0) - { - /* invalid distance */ - sqlite3_result_null (context); - } - else - sqlite3_result_double (context, length); - } - else - sqlite3_result_null (context); - goto stop; - } - ret = gaiaGeomCollLengthOrPerimeter (geo, is_perimeter, &length); - if (!ret) - sqlite3_result_null (context); - else - sqlite3_result_double (context, length); - } - stop: - gaiaFreeGeomColl (geo); -} - -static void -fnct_Length (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_Length(BLOB encoded GEOMETRYCOLLECTION) -/ ST_Length(BLOB encoded GEOMETRYCOLLECTION, Boolean use_ellipsoid) -/ -/ returns the total length for current geometry -/ or NULL if any error is encountered -/ -/ Please note: starting since 4.0.0 this function will ignore -/ any Polygon (only Linestrings will be considered) -/ -*/ - length_common (context, argc, argv, 0); -} - -static void -fnct_Perimeter (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_Perimeter(BLOB encoded GEOMETRYCOLLECTION) -/ ST_Perimeter(BLOB encoded GEOMETRYCOLLECTION, Boolean use_ellipsoid) -/ -/ returns the total perimeter length for current geometry -/ or NULL if any error is encountered -/ -/ Please note: starting since 4.0.0 this function will ignore -/ any Linestring (only Polygons will be considered) -/ -*/ - length_common (context, argc, argv, 1); -} - -static void -fnct_Area (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Area(BLOB encoded GEOMETRYCOLLECTION) -/ -/ returns the total area for current geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - double area = 0.0; - int ret; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - ret = gaiaGeomCollArea (geo, &area); - if (!ret) - sqlite3_result_null (context); - else - sqlite3_result_double (context, area); - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_Centroid (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Centroid(BLOBencoded POLYGON or MULTIPOLYGON geometry) -/ -/ returns a POINT representing the centroid for current POLYGON / MULTIPOLYGON geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - int ret; - double x; - double y; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (gaiaIsEmpty (geo)) - sqlite3_result_null (context); - else - { - ret = gaiaGeomCollCentroid (geo, &x, &y); - if (!ret) - sqlite3_result_null (context); - else - { - result = gaiaAllocGeomColl (); - result->Srid = geo->Srid; - gaiaAddPointToGeomColl (result, x, y); - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - gaiaFreeGeomColl (result); - sqlite3_result_blob (context, p_result, len, free); - } - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_PointOnSurface (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ PointOnSurface(BLOBencoded POLYGON or MULTIPOLYGON geometry) -/ -/ returns a POINT guaranteed to lie on the Surface -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - double x; - double y; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (!gaiaGetPointOnSurface (geo, &x, &y)) - sqlite3_result_null (context); - else - { - result = gaiaAllocGeomColl (); - gaiaAddPointToGeomColl (result, x, y); - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - gaiaFreeGeomColl (result); - sqlite3_result_blob (context, p_result, len, free); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_Simplify (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Simplify(BLOBencoded geometry, tolerance) -/ -/ returns a new geometry that is a caricature of the original one received, but simplified using the Douglas-Peuker algorihtm -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - int int_value; - double tolerance; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - tolerance = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - tolerance = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - result = gaiaGeomCollSimplify (geo, tolerance); - if (!result) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_SimplifyPreserveTopology (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ SimplifyPreserveTopology(BLOBencoded geometry, tolerance) -/ -/ returns a new geometry that is a caricature of the original one received, but simplified using the Douglas-Peuker algorihtm [preserving topology] -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - int int_value; - double tolerance; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - tolerance = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - tolerance = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - result = gaiaGeomCollSimplifyPreserveTopology (geo, tolerance); - if (!result) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_ConvexHull (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ConvexHull(BLOBencoded geometry) -/ -/ returns a new geometry representing the CONVEX HULL for current geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - result = gaiaConvexHull (geo); - if (!result) - sqlite3_result_null (context); - else - { - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_Buffer (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Buffer(BLOBencoded geometry, radius) -/ -/ returns a new geometry representing the BUFFER for current geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - double radius; - int int_value; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - radius = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - radius = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - result = gaiaGeomCollBuffer (geo, radius, 30); - if (!result) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_Intersection (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Intersection(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns a new geometry representing the INTERSECTION of both geometries -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_null (context); - else - { - result = gaiaGeometryIntersection (geo1, geo2); - if (!result) - sqlite3_result_null (context); - else if (gaiaIsEmpty (result)) - { - gaiaFreeGeomColl (result); - sqlite3_result_null (context); - } - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static int -gaia_union_polygs (gaiaGeomCollPtr geom) -{ -/* testing if this geometry simply contains Polygons */ - int pts = 0; - int lns = 0; - int pgs = 0; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - pt = geom->FirstPoint; - while (pt) - { - pts++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - lns++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - pgs++; - pg = pg->Next; - } - if (pts || lns) - return 0; - if (!pgs) - return 0; - return 1; -} - -static void -fnct_Union_step (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Union(BLOBencoded geom) -/ -/ aggregate function - STEP -/ -*/ - struct gaia_geom_chain *chain; - struct gaia_geom_chain_item *item; - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geom; - struct gaia_geom_chain **p; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geom) - return; - p = sqlite3_aggregate_context (context, sizeof (struct gaia_geom_chain **)); - if (!(*p)) - { - /* this is the first row */ - chain = malloc (sizeof (struct gaia_geom_chain)); - *p = chain; - item = malloc (sizeof (struct gaia_geom_chain_item)); - item->geom = geom; - item->next = NULL; - chain->all_polygs = gaia_union_polygs (geom); - chain->first = item; - chain->last = item; - } - else - { - /* subsequent rows */ - chain = *p; - item = malloc (sizeof (struct gaia_geom_chain_item)); - item->geom = geom; - item->next = NULL; - if (!gaia_union_polygs (geom)) - chain->all_polygs = 0; - chain->last->next = item; - chain->last = item; - } -} - -static void -gaia_free_geom_chain (struct gaia_geom_chain *chain) -{ - struct gaia_geom_chain_item *p = chain->first; - struct gaia_geom_chain_item *pn; - while (p) - { - pn = p->next; - gaiaFreeGeomColl (p->geom); - free (p); - p = pn; - } - free (chain); -} - -static void -fnct_Union_final (sqlite3_context * context) -{ -/* SQL function: -/ Union(BLOBencoded geom) -/ -/ aggregate function - FINAL -/ -*/ - gaiaGeomCollPtr tmp; - struct gaia_geom_chain *chain; - struct gaia_geom_chain_item *item; - gaiaGeomCollPtr aggregate; - gaiaGeomCollPtr result; - struct gaia_geom_chain **p = sqlite3_aggregate_context (context, 0); - if (!p) - { - sqlite3_result_null (context); - return; - } - chain = *p; - -#ifdef GEOS_ADVANCED -/* we can apply UnaryUnion */ - item = chain->first; - while (item) - { - gaiaGeomCollPtr geom = item->geom; - if (item == chain->first) - { - /* initializing the aggregate geometry */ - aggregate = geom; - item->geom = NULL; - item = item->next; - continue; - } - tmp = gaiaMergeGeometries (aggregate, geom); - gaiaFreeGeomColl (aggregate); - gaiaFreeGeomColl (geom); - item->geom = NULL; - aggregate = tmp; - item = item->next; - } - result = gaiaUnaryUnion (aggregate); - gaiaFreeGeomColl (aggregate); -/* end UnaryUnion */ -#else -/* old GEOS; no UnaryUnion available */ - if (chain->all_polygs) - { - /* all Polygons: we can apply UnionCascaded */ - item = chain->first; - while (item) - { - gaiaGeomCollPtr geom = item->geom; - if (item == chain->first) - { - /* initializing the aggregate geometry */ - aggregate = geom; - item->geom = NULL; - item = item->next; - continue; - } - tmp = gaiaMergeGeometries (aggregate, geom); - gaiaFreeGeomColl (aggregate); - gaiaFreeGeomColl (geom); - item->geom = NULL; - aggregate = tmp; - item = item->next; - } - result = gaiaUnionCascaded (aggregate); - gaiaFreeGeomColl (aggregate); - } - else - { - /* mixed types: the hardest/slowest way */ - item = chain->first; - while (item) - { - gaiaGeomCollPtr geom = item->geom; - if (item == chain->first) - { - result = geom; - item->geom = NULL; - item = item->next; - continue; - } - tmp = gaiaGeometryUnion (result, geom); - gaiaFreeGeomColl (result); - gaiaFreeGeomColl (geom); - item->geom = NULL; - result = tmp; - item = item->next; - } - } -/* end old GEOS: no UnaryUnion available */ -#endif - gaia_free_geom_chain (chain); - - if (result == NULL) - sqlite3_result_null (context); - else if (gaiaIsEmpty (result)) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - } - gaiaFreeGeomColl (result); -} - -static void -fnct_Union (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Union(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns a new geometry representing the UNION of both geometries -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_null (context); - else - { - result = gaiaGeometryUnion (geo1, geo2); - if (!result) - sqlite3_result_null (context); - else if (gaiaIsEmpty (result)) - { - gaiaFreeGeomColl (result); - sqlite3_result_null (context); - } - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_Difference (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Difference(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns a new geometry representing the DIFFERENCE of both geometries -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_null (context); - else - { - result = gaiaGeometryDifference (geo1, geo2); - if (!result) - sqlite3_result_null (context); - else if (gaiaIsEmpty (result)) - { - gaiaFreeGeomColl (result); - sqlite3_result_null (context); - } - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_SymDifference (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ SymDifference(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns a new geometry representing the SYMMETRIC DIFFERENCE of both geometries -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_null (context); - else - { - result = gaiaGeometrySymDifference (geo1, geo2); - if (!result) - sqlite3_result_null (context); - else if (gaiaIsEmpty (result)) - { - gaiaFreeGeomColl (result); - sqlite3_result_null (context); - } - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_Equals (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Equals(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns: -/ 1 if the two geometries are "spatially equal" -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_int (context, -1); - else - { - ret = gaiaGeomCollEquals (geo1, geo2); - sqlite3_result_int (context, ret); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_Intersects (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Intersects(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns: -/ 1 if the two geometries do "spatially intersects" -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_int (context, -1); - else - { - ret = gaiaGeomCollIntersects (geo1, geo2); - sqlite3_result_int (context, ret); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_Disjoint (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Disjoint(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns: -/ 1 if the two geometries are "spatially disjoint" -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_int (context, -1); - else - { - ret = gaiaGeomCollDisjoint (geo1, geo2); - sqlite3_result_int (context, ret); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_Overlaps (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Overlaps(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns: -/ 1 if the two geometries do "spatially overlaps" -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_int (context, -1); - else - { - ret = gaiaGeomCollOverlaps (geo1, geo2); - sqlite3_result_int (context, ret); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_Crosses (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Crosses(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns: -/ 1 if the two geometries do "spatially crosses" -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_int (context, -1); - else - { - ret = gaiaGeomCollCrosses (geo1, geo2); - sqlite3_result_int (context, ret); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_Touches (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Touches(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns: -/ 1 if the two geometries do "spatially touches" -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_int (context, -1); - else - { - ret = gaiaGeomCollTouches (geo1, geo2); - sqlite3_result_int (context, ret); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_Within (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Within(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns: -/ 1 if GEOM-1 is completely contained within GEOM-2 -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_int (context, -1); - else - { - ret = gaiaGeomCollWithin (geo1, geo2); - sqlite3_result_int (context, ret); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_Contains (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Contains(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns: -/ 1 if GEOM-1 completely contains GEOM-2 -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_int (context, -1); - else - { - ret = gaiaGeomCollContains (geo1, geo2); - sqlite3_result_int (context, ret); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_Relate (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Relate(BLOBencoded geom1, BLOBencoded geom2, string pattern) -/ -/ returns: -/ 1 if GEOM-1 and GEOM-2 have a spatial relationship as specified by the patternMatrix -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - int ret; - const unsigned char *pattern; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[2]) != SQLITE_TEXT) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - pattern = sqlite3_value_text (argv[2]); - if (!geo1 || !geo2) - sqlite3_result_int (context, -1); - else - { - ret = gaiaGeomCollRelate (geo1, geo2, (char *) pattern); - sqlite3_result_int (context, ret); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_Distance (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Distance(BLOBencoded geom1, BLOBencoded geom2) -/ Distance(BLOBencoded geom1, BLOBencoded geom2, Boolen use_ellipsoid) -/ -/ returns the distance between GEOM-1 and GEOM-2 -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - double dist; - int use_ellipsoid = -1; - double a; - double b; - double rf; - int ret; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (argc == 3) - { - if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) - { - sqlite3_result_null (context); - return; - } - use_ellipsoid = sqlite3_value_int (argv[2]); - if (use_ellipsoid != 0) - use_ellipsoid = 1; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_null (context); - else - { - if (use_ellipsoid >= 0) - { - /* attempting to identify the corresponding ellipsoid */ - if (getEllipsoidParams (sqlite, geo1->Srid, &a, &b, &rf)) - { -#ifdef GEOS_ADVANCED - /* GEOS advanced features support is strictly required */ - gaiaGeomCollPtr shortest = gaiaShortestLine (geo1, geo2); - if (shortest == NULL) - sqlite3_result_null (context); - else if (shortest->FirstLinestring == NULL) - { - gaiaFreeGeomColl (shortest); - sqlite3_result_null (context); - } - else - { - /* computes the metric distance */ - double x0; - double y0; - double x1; - double y1; - double z; - double m; - gaiaLinestringPtr ln = shortest->FirstLinestring; - dist = -1.0; - if (ln->Points == 2) - { - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, 0, &x0, - &y0, &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, 0, &x0, - &y0, &m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, 0, &x0, - &y0, &z, &m); - } - else - { - gaiaGetPoint (ln->Coords, 0, &x0, &y0); - } - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, 1, &x1, - &y1, &z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, 1, &x1, - &y1, &m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, 1, &x1, - &y1, &z, &m); - } - else - { - gaiaGetPoint (ln->Coords, 1, &x1, &y1); - } - if (use_ellipsoid) - dist = - gaiaGeodesicDistance (a, b, rf, x0, - y0, x1, y1); - else - { - a = 6378137.0; - rf = 298.257223563; - b = (a * (1.0 - (1.0 / rf))); - dist = - gaiaGreatCircleDistance (a, b, x0, - y0, x1, - y1); - } - if (dist < 0.0) - { - /* invalid distance */ - sqlite3_result_null (context); - } - else - sqlite3_result_double (context, dist); - } - else - sqlite3_result_null (context); - gaiaFreeGeomColl (shortest); - } -#else - /* GEOS advanced features support unavailable */ - sqlite3_result_null (context); -#endif - } - else - sqlite3_result_null (context); - goto stop; - } - ret = gaiaGeomCollDistance (geo1, geo2, &dist); - if (!ret) - sqlite3_result_null (context); - else - sqlite3_result_double (context, dist); - } - stop: - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_PtDistWithin (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ PtDistWithin(BLOBencoded geom1, BLOBencoded geom2, double dist -/ [, boolen use_spheroid]) -/ -/ returns TRUE if the distance between GEOM-1 and GEOM-2 -/ is less or equal to dist -/ -/ - if both geom1 and geom2 are in the 4326 (WGS84) SRID, -/ (and does actually contains a single POINT each one) -/ dist is assumed to be measured in Meters -/ - in this case the optional arg use_spheroid is -/ checked to determine if geodesic distance has to be -/ computed on the sphere (quickest) or on the spheroid -/ default: use_spheroid = FALSE -/ -/ in any other case the "plain" distance is evaluated -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - double ref_dist; - int use_spheroid = 0; - double x0; - double y0; - double x1; - double y1; - int pt0 = 0; - int ln0 = 0; - int pg0 = 0; - int pt1 = 0; - int ln1 = 0; - int pg1 = 0; - double dist; - double a; - double b; - double rf; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER - || sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - ; - else - { - sqlite3_result_null (context); - return; - } - if (argc == 4) - { - /* optional use_spheroid arg */ - if (sqlite3_value_type (argv[3]) != SQLITE_INTEGER) - { - sqlite3_result_null (context); - return; - } - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int dst = sqlite3_value_int (argv[2]); - ref_dist = dst; - } - else - ref_dist = sqlite3_value_double (argv[2]); - if (argc == 4) - use_spheroid = sqlite3_value_int (argv[3]); - if (!geo1 || !geo2) - sqlite3_result_null (context); - else - { - if (geo1->Srid == 4326 && geo2->Srid == 4326) - { - /* checking for single points */ - pt = geo1->FirstPoint; - while (pt) - { - x0 = pt->X; - y0 = pt->Y; - pt0++; - pt = pt->Next; - } - ln = geo1->FirstLinestring; - while (ln) - { - ln0++; - ln = ln->Next; - } - pg = geo1->FirstPolygon; - while (pg) - { - pg0++; - pg = pg->Next; - } - pt = geo2->FirstPoint; - while (pt) - { - x1 = pt->X; - y1 = pt->Y; - pt1++; - pt = pt->Next; - } - ln = geo2->FirstLinestring; - while (ln) - { - ln1++; - ln = ln->Next; - } - pg = geo2->FirstPolygon; - while (pg) - { - pg1++; - pg = pg->Next; - } - if (pt0 == 1 && pt1 == 1 && ln0 == 0 && ln1 == 0 && pg0 == 0 - && pg1 == 0) - { - /* using geodesic distance */ - a = 6378137.0; - rf = 298.257223563; - b = (a * (1.0 - (1.0 / rf))); - if (use_spheroid) - { - dist = - gaiaGeodesicDistance (a, b, rf, y0, x0, y1, x1); - if (dist <= ref_dist) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); - } - else - { - dist = - gaiaGreatCircleDistance (a, b, y0, x0, y1, x1); - if (dist <= ref_dist) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); - } - goto stop; - } - } -/* defaulting to flat distance */ - ret = gaiaGeomCollDistance (geo1, geo2, &dist); - if (!ret) - sqlite3_result_null (context); - if (dist <= ref_dist) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); - } - stop: - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -geos_error (const char *fmt, ...) -{ -/* reporting some GEOS error */ - va_list ap; - char msg[2048]; - va_start (ap, fmt); - vsprintf (msg, fmt, ap); - va_end (ap); - spatialite_e ("GEOS error: %s\n", msg); - gaiaSetGeosErrorMsg (msg); -} - - -static void -geos_warning (const char *fmt, ...) -{ -/* reporting some GEOS warning */ - va_list ap; - char msg[2048]; - va_start (ap, fmt); - vsprintf (msg, fmt, ap); - va_end (ap); - spatialite_e ("GEOS warning: %s\n", msg); - gaiaSetGeosWarningMsg (msg); -} - -static void -fnct_aux_polygonize (sqlite3_context * context, gaiaGeomCollPtr geom_org, - int force_multipolygon, int allow_multipolygon) -{ -/* a common function performing any kind of polygonization op */ - gaiaGeomCollPtr geom_new = NULL; - int len; - unsigned char *p_result = NULL; - gaiaPolygonPtr pg; - int pgs = 0; - if (!geom_org) - goto invalid; - geom_new = gaiaPolygonize (geom_org, force_multipolygon); - if (!geom_new) - goto invalid; - gaiaFreeGeomColl (geom_org); - pg = geom_new->FirstPolygon; - while (pg) - { - pgs++; - pg = pg->Next; - } - if (pgs > 1 && allow_multipolygon == 0) - { - /* invalid: a POLYGON is expected !!! */ - gaiaFreeGeomColl (geom_new); - sqlite3_result_null (context); - return; - } - gaiaToSpatiaLiteBlobWkb (geom_new, &p_result, &len); - gaiaFreeGeomColl (geom_new); - sqlite3_result_blob (context, p_result, len, free); - return; - invalid: - if (geom_org) - gaiaFreeGeomColl (geom_org); - sqlite3_result_null (context); -} - -/* -/ the following functions performs initial argument checking, -/ and then readdressing the request to fnct_aux_polygonize() -/ for actual processing -*/ - -static void -fnct_BdPolyFromText1 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ BdPolyFromText(WKT encoded MULTILINESTRING) -/ -/ returns the current geometry [POLYGON] by parsing a WKT encoded MULTILINESTRING -/ or NULL if any error is encountered -/ -*/ - const unsigned char *text; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - sqlite3_result_null (context); - return; - } - text = sqlite3_value_text (argv[0]); - geo = gaiaParseWkt (text, -1); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - if (geo->DeclaredType != GAIA_MULTILINESTRING) - { - gaiaFreeGeomColl (geo); - sqlite3_result_null (context); - return; - } - geo->Srid = 0; - fnct_aux_polygonize (context, geo, 0, 0); - return; -} - -static void -fnct_BdPolyFromText2 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ BdPolyFromText(WKT encoded MULTILINESTRING, SRID) -/ -/ returns the current geometry [POLYGON] by parsing a WKT encoded MULTILINESTRING -/ or NULL if any error is encountered -/ -*/ - const unsigned char *text; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) - { - sqlite3_result_null (context); - return; - } - text = sqlite3_value_text (argv[0]); - geo = gaiaParseWkt (text, -1); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - if (geo->DeclaredType != GAIA_MULTILINESTRING) - { - gaiaFreeGeomColl (geo); - sqlite3_result_null (context); - return; - } - geo->Srid = sqlite3_value_int (argv[1]); - fnct_aux_polygonize (context, geo, 0, 0); - return; -} - -static void -fnct_BdMPolyFromText1 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ BdMPolyFromText(WKT encoded MULTILINESTRING) -/ -/ returns the current geometry [MULTIPOLYGON] by parsing a WKT encoded MULTILINESTRING -/ or NULL if any error is encountered -/ -*/ - const unsigned char *text; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - sqlite3_result_null (context); - return; - } - text = sqlite3_value_text (argv[0]); - geo = gaiaParseWkt (text, -1); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - if (geo->DeclaredType != GAIA_MULTILINESTRING) - { - gaiaFreeGeomColl (geo); - sqlite3_result_null (context); - return; - } - geo->Srid = 0; - fnct_aux_polygonize (context, geo, 1, 1); - return; -} - -static void -fnct_BdMPolyFromText2 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ BdMPolyFromText(WKT encoded MULTILINESTRING, SRID) -/ -/ returns the current geometry [MULTIPOLYGON] by parsing a WKT encoded MULTILINESTRING -/ or NULL if any error is encountered -/ -*/ - const unsigned char *text; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) - { - sqlite3_result_null (context); - return; - } - text = sqlite3_value_text (argv[0]); - geo = gaiaParseWkt (text, -1); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - if (geo->DeclaredType != GAIA_MULTILINESTRING) - { - gaiaFreeGeomColl (geo); - sqlite3_result_null (context); - return; - } - geo->Srid = sqlite3_value_int (argv[1]); - fnct_aux_polygonize (context, geo, 1, 1); - return; -} - -static void -fnct_BdPolyFromWKB1 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ BdPolyFromWKB(WKB encoded MULTILINESTRING) -/ -/ returns the current geometry [POLYGON] by parsing a WKB encoded MULTILINESTRING -/ or NULL if any error is encountered -/ -*/ - int n_bytes; - const unsigned char *wkb; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - wkb = sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - if (!check_wkb (wkb, n_bytes, -1)) - return; - geo = gaiaFromWkb (wkb, n_bytes); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - if (geo->DeclaredType != GAIA_MULTILINESTRING) - { - gaiaFreeGeomColl (geo); - sqlite3_result_null (context); - return; - } - geo->Srid = 0; - fnct_aux_polygonize (context, geo, 0, 0); - return; -} - -static void -fnct_BdPolyFromWKB2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ BdPolyFromWKB(WKB encoded MULTILINESTRING) -/ -/ returns the current geometry [POLYGON] by parsing a WKB encoded MULTILINESTRING -/ or NULL if any error is encountered -/ -*/ - int n_bytes; - const unsigned char *wkb; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) - { - sqlite3_result_null (context); - return; - } - wkb = sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - if (!check_wkb (wkb, n_bytes, -1)) - return; - geo = gaiaFromWkb (wkb, n_bytes); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - if (geo->DeclaredType != GAIA_MULTILINESTRING) - { - gaiaFreeGeomColl (geo); - sqlite3_result_null (context); - return; - } - geo->Srid = sqlite3_value_int (argv[1]); - fnct_aux_polygonize (context, geo, 0, 0); - return; -} - -static void -fnct_BdMPolyFromWKB1 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ BdMPolyFromWKB(WKB encoded MULTILINESTRING) -/ -/ returns the current geometry [MULTIPOLYGON] by parsing a WKB encoded MULTILINESTRING -/ or NULL if any error is encountered -/ -*/ - int n_bytes; - const unsigned char *wkb; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - wkb = sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - if (!check_wkb (wkb, n_bytes, -1)) - return; - geo = gaiaFromWkb (wkb, n_bytes); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - if (geo->DeclaredType != GAIA_MULTILINESTRING) - { - gaiaFreeGeomColl (geo); - sqlite3_result_null (context); - return; - } - geo->Srid = 0; - fnct_aux_polygonize (context, geo, 1, 1); - return; -} - -static void -fnct_BdMPolyFromWKB2 (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ BdMPolyFromWKB(WKB encoded MULTILINESTRING) -/ -/ returns the current geometry [MULTIPOLYGON] by parsing a WKB encoded MULTILINESTRING -/ or NULL if any error is encountered -/ -*/ - int n_bytes; - const unsigned char *wkb; - gaiaGeomCollPtr geo = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) - { - sqlite3_result_null (context); - return; - } - wkb = sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - if (!check_wkb (wkb, n_bytes, -1)) - return; - geo = gaiaFromWkb (wkb, n_bytes); - if (geo == NULL) - { - sqlite3_result_null (context); - return; - } - if (geo->DeclaredType != GAIA_MULTILINESTRING) - { - gaiaFreeGeomColl (geo); - sqlite3_result_null (context); - return; - } - geo->Srid = sqlite3_value_int (argv[1]); - fnct_aux_polygonize (context, geo, 1, 1); - return; -} - -#ifdef GEOS_ADVANCED /* GEOS advanced features */ - -static int -check_topo_table (sqlite3 * sqlite, const char *table, int is_view) -{ -/* checking if some Topology-related table/view already exists */ - int exists = 0; - char *sql_statement; - char *errMsg = NULL; - int ret; - char **results; - int rows; - int columns; - int i; - sql_statement = - sqlite3_mprintf ("SELECT name FROM sqlite_master WHERE type = '%s'" - "AND Upper(name) = Upper(%Q)", - (!is_view) ? "table" : "view", table); - ret = - sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, - &errMsg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - sqlite3_free (errMsg); - return 0; - } - for (i = 1; i <= rows; i++) - exists = 1; - sqlite3_free_table (results); - return exists; -} - -static int -create_topo_nodes (sqlite3 * sqlite, const char *table, int srid, int dims) -{ -/* creating the topo_nodes table */ - char *sql_statement; - char *sqltable; - char *idx_name; - char *xidx_name; - int ret; - char *err_msg = NULL; - sqltable = gaiaDoubleQuotedSql (table); - sql_statement = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n" - "node_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" - "node_code TEXT)", sqltable); - free (sqltable); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE TABLE '%s' error: %s\n", table, err_msg); - sqlite3_free (err_msg); - return 0; - } - sql_statement = - sqlite3_mprintf - ("SELECT AddGeometryColumn(%Q, 'Geometry', %d, 'POINT', '%s', 1)", - table, srid, (dims == GAIA_XY_Z) ? "XYZ" : "XY"); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("AddGeometryColumn '%s'.'Geometry' error: %s\n", - table, err_msg); - sqlite3_free (err_msg); - return 0; - } - sql_statement = - sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'Geometry')", table); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CreateSpatialIndex '%s'.'Geometry' error: %s\n", - table, err_msg); - sqlite3_free (err_msg); - return 0; - } - sqltable = gaiaDoubleQuotedSql (table); - idx_name = sqlite3_mprintf ("idx_%s_code", table); - xidx_name = gaiaDoubleQuotedSql (idx_name); - sqlite3_free (idx_name); - sql_statement = - sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (node_code)", xidx_name, - sqltable); - free (sqltable); - free (xidx_name); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("Create Index '%s'('node_code') error: %s\n", - sqltable, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_topo_edges (sqlite3 * sqlite, const char *table, int srid, int dims) -{ -/* creating the topo_edges table */ - char *sql_statement; - char *sqltable; - char *idx_name; - char *xidx_name; - int ret; - char *err_msg = NULL; - sqltable = gaiaDoubleQuotedSql (table); - sql_statement = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n" - "edge_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" - "node_from_code TEXT,\n" - "node_to_code TEXT,\n" - "edge_code TEXT)", sqltable); - free (sqltable); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE TABLE '%s' error: %s\n", table, err_msg); - sqlite3_free (err_msg); - return 0; - } - sql_statement = - sqlite3_mprintf - ("SELECT AddGeometryColumn(%Q, 'Geometry', %d, 'LINESTRING', '%s', 1)", - table, srid, (dims == GAIA_XY_Z) ? "XYZ" : "XY"); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("AddGeometryColumn '%s'.'Geometry' error: %s\n", - table, err_msg); - sqlite3_free (err_msg); - return 0; - } - sql_statement = - sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'Geometry')", table); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CreateSpatialIndex '%s'.'Geometry' error: %s\n", - table, err_msg); - sqlite3_free (err_msg); - return 0; - } - sqltable = gaiaDoubleQuotedSql (table); - idx_name = sqlite3_mprintf ("idx_%s_code", table); - xidx_name = gaiaDoubleQuotedSql (idx_name); - sqlite3_free (idx_name); - sql_statement = - sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (edge_code)", xidx_name, - sqltable); - free (sqltable); - free (xidx_name); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("Create Index '%s'('edge_code') error: %s\n", - sqltable, err_msg); - sqlite3_free (err_msg); - return 0; - } - sqltable = gaiaDoubleQuotedSql (table); - idx_name = sqlite3_mprintf ("idx_%s_from", table); - xidx_name = gaiaDoubleQuotedSql (idx_name); - sqlite3_free (idx_name); - sql_statement = - sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (node_from_code)", - xidx_name, sqltable); - free (sqltable); - free (xidx_name); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("Create Index '%s'('node_from_code') error: %s\n", - sqltable, err_msg); - sqlite3_free (err_msg); - return 0; - } - sqltable = gaiaDoubleQuotedSql (table); - idx_name = sqlite3_mprintf ("idx_%s_to", table); - xidx_name = gaiaDoubleQuotedSql (idx_name); - sqlite3_free (idx_name); - sql_statement = - sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (node_to_code)", - xidx_name, sqltable); - free (sqltable); - free (xidx_name); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("Create Index '%s'('node_to_code') error: %s\n", - sqltable, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_topo_faces (sqlite3 * sqlite, const char *table) -{ -/* creating the topo_faces table */ - char *sql_statement; - char *sqltable; - char *idx_name; - char *xidx_name; - int ret; - char *err_msg = NULL; - sqltable = gaiaDoubleQuotedSql (table); - sql_statement = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n" - "face_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" - "face_code TEXT)", sqltable); - free (sqltable); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE TABLE '%s' error: %s\n", table, err_msg); - sqlite3_free (err_msg); - return 0; - } - sqltable = gaiaDoubleQuotedSql (table); - idx_name = sqlite3_mprintf ("idx_%s_code", table); - xidx_name = gaiaDoubleQuotedSql (idx_name); - sqlite3_free (idx_name); - sql_statement = - sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (face_code)", xidx_name, - sqltable); - free (sqltable); - free (xidx_name); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("Create Index '%s'('face_code') error: %s\n", - sqltable, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_topo_faces_edges (sqlite3 * sqlite, const char *table, - const char *table2) -{ -/* creating the topo_faces_edges table */ - char *sql_statement; - char *sqltable; - char *sqltable2; - char *idx_name; - char *xidx_name; - int ret; - char *err_msg = NULL; - sqltable = gaiaDoubleQuotedSql (table); - sqltable2 = gaiaDoubleQuotedSql (table2); - sql_statement = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n" - "face_id INTEGER NOT NULL,\n" - "edge_code TEXT NOT NULL,\n" - "orientation TEXT,\n" - "CONSTRAINT pk_faces_edges PRIMARY KEY " - "(face_id, edge_code),\n" - "CONSTRAINT fk_faces_edges FOREIGN KEY " - "(face_id) REFERENCES \"%s\" (face_id))\n", - sqltable, sqltable2); - free (sqltable); - free (sqltable2); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE TABLE '%s' error: %s\n", table, err_msg); - sqlite3_free (err_msg); - return 0; - } - sqltable = gaiaDoubleQuotedSql (table); - idx_name = sqlite3_mprintf ("idx_%s_edge", table); - xidx_name = gaiaDoubleQuotedSql (idx_name); - sqlite3_free (idx_name); - sql_statement = - sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (edge_code)", xidx_name, - sqltable); - free (sqltable); - free (xidx_name); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("Create Index '%s'('edge_code') error: %s\n", - sqltable, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_topo_curves (sqlite3 * sqlite, const char *table) -{ -/* creating the topo_curves table */ - char *sql_statement; - char *sqltable; - char *idx_name; - char *xidx_name; - int ret; - char *err_msg = NULL; - sqltable = gaiaDoubleQuotedSql (table); - sql_statement = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n" - "curve_id INTEGER NOT NULL,\n" - "edge_code TEXT NOT NULL,\n" - "orientation TEXT,\n" - "CONSTRAINT pk_curves PRIMARY KEY " - "(curve_id, edge_code))\n", sqltable); - free (sqltable); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE TABLE '%s' error: %s\n", table, err_msg); - sqlite3_free (err_msg); - return 0; - } - sqltable = gaiaDoubleQuotedSql (table); - idx_name = sqlite3_mprintf ("idx_%s_edge", table); - xidx_name = gaiaDoubleQuotedSql (idx_name); - sqlite3_free (idx_name); - sql_statement = - sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (edge_code)", xidx_name, - sqltable); - free (sqltable); - free (xidx_name); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("Create Index '%s'('edge_code') error: %s\n", - sqltable, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_topo_surfaces (sqlite3 * sqlite, const char *table) -{ -/* creating the topo_surfaces table */ - char *sql_statement; - char *sqltable; - char *idx_name; - char *xidx_name; - int ret; - char *err_msg = NULL; - sqltable = gaiaDoubleQuotedSql (table); - sql_statement = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n" - "surface_id INTEGER NOT NULL,\n" - "face_code TEXT NOT NULL,\n" - "orientation TEXT,\n" - "CONSTRAINT pk_surfaces PRIMARY KEY " - "(surface_id, face_code))", sqltable); - free (sqltable); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE TABLE '%s' error: %s\n", table, err_msg); - sqlite3_free (err_msg); - return 0; - } - sqltable = gaiaDoubleQuotedSql (table); - idx_name = sqlite3_mprintf ("idx_%s_face", table); - xidx_name = gaiaDoubleQuotedSql (idx_name); - sqlite3_free (idx_name); - sql_statement = - sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (face_code)", xidx_name, - sqltable); - free (sqltable); - free (xidx_name); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("Create Index '%s'('face_code') error: %s\n", - sqltable, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_check_node_codes (sqlite3 * sqlite, const char *view, - const char *table_nodes) -{ -/* creating the check node codes VIEW */ - char *sql_statement; - char *sqltable; - char *sqlview; - int ret; - char *err_msg = NULL; - sqlview = gaiaDoubleQuotedSql (view); - sqltable = gaiaDoubleQuotedSql (table_nodes); - sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" - "SELECT node_code AS node_code, Count(node_id) AS count\n" - "FROM \"%s\"\nGROUP BY node_code\nHAVING count > 1\n", - sqlview, sqltable); - free (sqlview); - free (sqltable); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_check_node_geoms (sqlite3 * sqlite, const char *view, - const char *table_nodes) -{ -/* creating the check node geoms VIEW */ - char *sql_statement; - char *sqltable; - char *sqlview; - int ret; - char *err_msg = NULL; - sqlview = gaiaDoubleQuotedSql (view); - sqltable = gaiaDoubleQuotedSql (table_nodes); - sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" - "SELECT n1.node_id AS node1_id, n1.node_code AS node1_code, " - "n2.node_id AS node2_id, n2.node_code AS node2_code\n" - "FROM \"%s\" AS n1\nJOIN \"%s\" AS n2 ON (\n" - " n1.node_id <> n2.node_id AND\n" - " ST_Equals(n1.Geometry, n2.Geometry) = 1 AND\n" - " n2.node_id IN (\n SELECT ROWID FROM SpatialIndex\n" - " WHERE f_table_name = %Q AND\n search_frame = n1.Geometry))\n", - sqlview, sqltable, sqltable, table_nodes); - free (sqlview); - free (sqltable); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_check_edge_codes (sqlite3 * sqlite, const char *view, - const char *table_edges) -{ -/* creating the check edge codes VIEW */ - char *sql_statement; - char *sqltable; - char *sqlview; - int ret; - char *err_msg = NULL; - sqlview = gaiaDoubleQuotedSql (view); - sqltable = gaiaDoubleQuotedSql (table_edges); - sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" - "SELECT edge_code AS edge_code, Count(edge_id) AS count\n" - "FROM \"%s\"\nGROUP BY edge_code\nHAVING count > 1\n", - sqlview, sqltable); - free (sqlview); - free (sqltable); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_check_edge_geoms (sqlite3 * sqlite, const char *view, - const char *table_edges) -{ -/* creating the check edge geoms VIEW */ - char *sql_statement; - char *sqltable; - char *sqlview; - int ret; - char *err_msg = NULL; - sqlview = gaiaDoubleQuotedSql (view); - sqltable = gaiaDoubleQuotedSql (table_edges); - sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" - "SELECT e1.edge_id AS edge1_id, e1.edge_code AS edge1_code, " - "e2.edge_id AS edge2_id, e2.edge_code AS edge2_code\n" - "FROM \"%s\" AS e1\nJOIN \"%s\" AS e2 ON (\n e1.edge_id <> e2.edge_id AND\n" - "NOT (e1.node_from_code = e2.node_from_code " - "AND e1.node_to_code = e2.node_to_code) AND\n" - " ST_Crosses(e1.Geometry, e2.Geometry) = 1 AND\n" - " e2.edge_id IN (\n" - " SELECT ROWID FROM SpatialIndex\n" - " WHERE f_table_name = %Q AND\n search_frame = e1.Geometry))\n", - sqlview, sqltable, sqltable, table_edges); - free (sqlview); - free (sqltable); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_check_edge_node_geoms (sqlite3 * sqlite, const char *view, - const char *table_edges, const char *table_nodes) -{ -/* creating the check edge/node geoms VIEW */ - char *sql_statement; - char *sql_edges; - char *sql_nodes; - char *sqlview; - int ret; - char *err_msg = NULL; - sqlview = gaiaDoubleQuotedSql (view); - sql_edges = gaiaDoubleQuotedSql (table_edges); - sql_nodes = gaiaDoubleQuotedSql (table_nodes); - sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" - "SELECT e.edge_id AS edge_id, n.node_id AS node_id\n" - "FROM \"%s\" AS e,\n\"%s\" AS n\n" - "WHERE ST_Intersects(e.Geometry, n.Geometry)\n" - " AND ST_Equals(ST_StartPoint(e.Geometry), n.Geometry) = 0\n" - " AND ST_Equals(ST_EndPoint(e.Geometry), n.Geometry) = 0\n" - " AND n.ROWID IN (\n SELECT ROWID FROM SpatialIndex\n" - " WHERE f_table_name = %Q\n AND search_frame = e.Geometry);", - sqlview, sql_edges, sql_nodes, - table_nodes); - free (sqlview); - free (sql_nodes); - free (sql_edges); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_check_face_codes (sqlite3 * sqlite, const char *view, - const char *table_faces) -{ -/* creating the check face codes VIEW */ - char *sql_statement; - char *sqltable; - char *sqlview; - int ret; - char *err_msg = NULL; - sqlview = gaiaDoubleQuotedSql (view); - sqltable = gaiaDoubleQuotedSql (table_faces); - sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" - "SELECT face_code AS face_code, Count(face_id) AS count\n" - "FROM \"%s\"\nGROUP BY face_code\nHAVING count > 1\n", - sqlview, sqltable); - free (sqltable); - free (sqlview); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_faces_resolved (sqlite3 * sqlite, const char *view, const char *faces, - const char *faces_edges, const char *edges) -{ -/* creating the Faces Resolved VIEW */ - char *sql_statement; - char *sql_faces; - char *sql_faces_edges; - char *sql_edges; - char *sqlview; - int ret; - char *err_msg = NULL; - sqlview = gaiaDoubleQuotedSql (view); - sql_faces = gaiaDoubleQuotedSql (faces); - sql_faces_edges = gaiaDoubleQuotedSql (faces_edges); - sql_edges = gaiaDoubleQuotedSql (edges); - sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" - "SELECT f.face_id AS face_id, f.face_code AS face_code, " - "ST_Polygonize(e.Geometry) AS Geometry\n" - "FROM \"%s\" AS f\nLEFT JOIN \"%s\" AS fe ON (fe.face_id = f.face_id)\n" - "LEFT JOIN \"%s\" AS e ON (e.edge_code = fe.edge_code)\n" - "GROUP BY f.face_id\n", sqlview, sql_faces, - sql_faces_edges, sql_edges); - free (sqlview); - free (sql_faces); - free (sql_faces_edges); - free (sql_edges); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_curves_resolved (sqlite3 * sqlite, const char *view, - const char *curves, char *edges) -{ -/* creating the Curves Resolved VIEW */ - char *sql_statement; - char *sql_curves; - char *sql_edges; - char *sqlview; - int ret; - char *err_msg = NULL; - sqlview = gaiaDoubleQuotedSql (view); - sql_curves = gaiaDoubleQuotedSql (curves); - sql_edges = gaiaDoubleQuotedSql (edges); - sql_statement = - sqlite3_mprintf - ("CREATE VIEW \"%s\" AS\nSELECT c.curve_id AS curve_id, " - "CastToMultiLinestring(ST_Collect(e.Geometry)) AS Geometry\n" - "FROM \"%s\" AS c\nLEFT JOIN \"%s\" AS e ON (e.edge_code = c.edge_code)\n" - "GROUP BY c.curve_id\n", sqlview, sql_curves, sql_edges); - free (sqlview); - free (sql_edges); - free (sql_curves); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_surfaces_resolved (sqlite3 * sqlite, const char *view, - const char *surfaces, const char *faces) -{ -/* creating the Surfaces Resolved VIEW */ - char *sql_statement; - char *sql_surfaces; - char *sql_faces; - char *sqlview; - int ret; - char *err_msg = NULL; - sqlview = gaiaDoubleQuotedSql (view); - sql_surfaces = gaiaDoubleQuotedSql (surfaces); - sql_faces = gaiaDoubleQuotedSql (faces); - sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" - "SELECT s.surface_id AS surface_id,\n" - " CastToMultipolygon(ST_UnaryUnion(ST_Collect(f.Geometry))) AS Geometry\n" - "FROM \"%s\" AS s\n" - "LEFT JOIN \"%s\" AS f ON (f.face_code = s.face_code)\n" - "GROUP BY s.surface_id\n", sqlview, - sql_surfaces, sql_faces); - free (sqlview); - free (sql_surfaces); - free (sql_faces); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_dangling_nodes (sqlite3 * sqlite, const char *view, - const char *nodes, const char *edges) -{ -/* creating the Dangling Nodes VIEW */ - char *sql_statement; - char *sql_nodes; - char *sql_edges; - char *sqlview; - int ret; - char *err_msg = NULL; - sqlview = gaiaDoubleQuotedSql (view); - sql_nodes = gaiaDoubleQuotedSql (nodes); - sql_edges = gaiaDoubleQuotedSql (edges); - sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" - "SELECT n.node_id AS node_id\nFROM \"%s\" AS n\n" - "LEFT JOIN \"%s\" AS e ON (n.node_code = e.node_from_code)\n" - "WHERE e.edge_id IS NULL\nINTERSECT\nSELECT n.node_id AS node_id\n" - "FROM \"%s\" AS n\nLEFT JOIN \"%s\" AS e ON (n.node_code = e.node_to_code)\n" - "WHERE e.edge_id IS NULL\n", sqlview, - sql_nodes, sql_edges, sql_nodes, - sql_edges); - free (sqlview); - free (sql_nodes); - free (sql_edges); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_dangling_edges (sqlite3 * sqlite, const char *view, - const char *edges, const char *faces_edges, - const char *curves) -{ -/* creating the Dangling Edges VIEW */ - char *sql_statement; - char *sql_edges; - char *sql_faces_edges; - char *sql_curves; - char *sqlview; - int ret; - char *err_msg = NULL; - sqlview = gaiaDoubleQuotedSql (view); - sql_edges = gaiaDoubleQuotedSql (edges); - sql_faces_edges = gaiaDoubleQuotedSql (faces_edges); - sql_curves = gaiaDoubleQuotedSql (curves); - sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" - "SELECT e.edge_id AS edge_id\nFROM \"%s\" AS e\n" - "LEFT JOIN \"%s\" AS f ON (e.edge_code = f.edge_code)\n" - "WHERE f.edge_code IS NULL\nINTERSECT\nSELECT e.edge_id AS edge_id\n" - "FROM \"%s\" AS e\nLEFT JOIN \"%s\" AS c ON (e.edge_code = c.edge_code)\n" - "WHERE c.edge_code IS NULL\n", sqlview, - sql_edges, sql_faces_edges, sql_edges, - sql_curves); - free (sqlview); - free (sql_edges); - free (sql_faces_edges); - free (sql_curves); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_check_edges_from_to (sqlite3 * sqlite, const char *view, - const char *edges, const char *nodes) -{ -/* creating the Edges/Nodes [from/to] VIEW */ - char skeleton[2048]; - char *sql_statement; - char *sql_edges; - char *sql_nodes; - char *sqlview; - int ret; - char *err_msg = NULL; - sqlview = gaiaDoubleQuotedSql (view); - sql_edges = gaiaDoubleQuotedSql (edges); - sql_nodes = gaiaDoubleQuotedSql (nodes); - strcpy (skeleton, "CREATE VIEW \"%s\" AS\n"); - strcat (skeleton, "SELECT e.edge_id AS edge_id, n.node_id AS node_id,\n"); - strcat (skeleton, " n.node_code AS node_code,\n"); - strcat (skeleton, "'Mismatching coords' AS error_cause\n"); - strcat (skeleton, "FROM \"%s\" AS e\n"); - strcat (skeleton, "JOIN \"%s\" AS n ON "); - strcat (skeleton, "(e.node_from_code = n.node_code)\n"); - strcat (skeleton, - "WHERE ST_Equals(ST_StartPoint(e.Geometry), n.Geometry) = 0\n"); - strcat (skeleton, "UNION\n"); - strcat (skeleton, "SELECT e.edge_id AS edge_id, n.node_id AS node_id,\n"); - strcat (skeleton, " n.node_code AS node_code,\n"); - strcat (skeleton, " 'Mismatching coords' AS error_cause\n"); - strcat (skeleton, "FROM \"%s\" AS e\n"); - strcat (skeleton, "JOIN \"%s\" AS n ON "); - strcat (skeleton, "(e.node_to_code = n.node_code)\n"); - strcat (skeleton, - "WHERE ST_Equals(ST_EndPoint(e.Geometry), n.Geometry) = 0\n"); - strcat (skeleton, "UNION\n"); - strcat (skeleton, "SELECT e.edge_id AS edge_id, n.node_id AS node_id,\n"); - strcat (skeleton, " n.node_code AS node_code,\n"); - strcat (skeleton, " 'Unresolved Node reference' AS error_cause\n"); - strcat (skeleton, "FROM \"%s\" AS e\n"); - strcat (skeleton, "LEFT JOIN \"%s\" AS n ON "); - strcat (skeleton, "(e.node_from_code = n.node_code)\n"); - strcat (skeleton, "WHERE n.node_id IS NULL\n"); - strcat (skeleton, "UNION\n"); - strcat (skeleton, "SELECT e.edge_id AS edge_id, n.node_id AS node_id,\n"); - strcat (skeleton, " n.node_code AS node_code,\n"); - strcat (skeleton, " 'Unresolved Node reference' AS error_cause\n"); - strcat (skeleton, "FROM \"%s\" AS e\n"); - strcat (skeleton, "LEFT JOIN \"%s\" AS n ON "); - strcat (skeleton, "(e.node_to_code = n.node_code)\n"); - strcat (skeleton, "WHERE n.node_id IS NULL\n"); - sql_statement = sqlite3_mprintf (skeleton, sqlview, - sql_edges, sql_nodes, sql_edges, sql_nodes, - sql_edges, sql_nodes, sql_edges, - sql_nodes); - free (sqlview); - free (sql_edges); - free (sql_nodes); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -create_topo_master (sqlite3 * sqlite) -{ -/* creating the topo_master table */ - char sql[2048]; - int ret; - char *err_msg = NULL; - -/* creating the table */ - strcpy (sql, "CREATE TABLE topology_master (\n"); - strcat (sql, "nodes TEXT NOT NULL,\n"); - strcat (sql, "edges TEXT NOT NULL,\n"); - strcat (sql, "faces TEXT NOT NULL,\n"); - strcat (sql, "faces_edges TEXT NOT NULL,\n"); - strcat (sql, "curves TEXT NOT NULL,\n"); - strcat (sql, "surfaces TEXT NOT NULL,\n"); - strcat (sql, "check_node_ids TEXT NOT NULL,\n"); - strcat (sql, "check_node_geoms TEXT NOT NULL,\n"); - strcat (sql, "check_edge_ids TEXT NOT NULL,\n"); - strcat (sql, "check_edge_geoms TEXT NOT NULL,\n"); - strcat (sql, "check_edge_node_geoms TEXT NOT NULL,\n"); - strcat (sql, "check_face_ids TEXT NOT NULL,\n"); - strcat (sql, "faces_resolved TEXT NOT NULL,\n"); - strcat (sql, "curves_resolved TEXT NOT NULL,\n"); - strcat (sql, "surfaces_resolved TEXT NOT NULL,\n"); - strcat (sql, "dangling_nodes TEXT NOT NULL,\n"); - strcat (sql, "dangling_edges TEXT NOT NULL,\n"); - strcat (sql, "check_edges_from_to TEXT NOT NULL,\n"); - strcat (sql, "coord_dimension TEXT NOT NULL,\n"); - strcat (sql, "srid INTEGER NOT NULL,\n"); - strcat (sql, "CONSTRAINT fk_topo_master FOREIGN KEY \n"); - strcat (sql, "(srid) REFERENCES spatial_ref_sys (srid))"); - ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) - { - spatialite_e ("CREATE TABLE 'topology_master' error: %s\n", err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static int -update_topo_master (sqlite3 * sqlite, const char *nodes, const char *edges, - const char *faces, const char *faces_edges, - const char *curves, const char *surfaces, - const char *check_nodes, const char *check_node_geoms, - const char *check_edges, const char *check_edge_geoms, - const char *check_edge_node_geoms, - const char *check_faces, const char *faces_res, - const char *curves_res, const char *surfaces_res, - const char *dangling_nodes, const char *dangling_edges, - const char *check_edges_from_to, int srid, int dims) -{ -/* updating the topo_master table */ - char *sql_statement; - int ret; - char *err_msg = NULL; - -/* inserting Topology data into MASTER */ - sql_statement = sqlite3_mprintf ("INSERT INTO topology_master " - "(nodes, edges, faces, faces_edges, curves, surfaces, check_node_ids, " - "check_node_geoms, check_edge_ids, check_edge_geoms, check_edge_node_geoms, " - "check_face_ids, faces_resolved, curves_resolved, surfaces_resolved, " - "dangling_nodes, dangling_edges, check_edges_from_to, coord_dimension, srid) " - "VALUES (%Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %d)", - nodes, edges, faces, faces_edges, curves, - surfaces, check_nodes, check_node_geoms, - check_edges, check_edge_geoms, - check_edge_node_geoms, check_faces, - faces_res, curves_res, surfaces_res, - dangling_nodes, dangling_edges, - check_edges_from_to, - (dims == GAIA_XY_Z) ? "XYZ" : "XY", srid); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - { - spatialite_e ("INSERT INTO 'topology_master' error: %s\n", err_msg); - sqlite3_free (err_msg); - return 0; - } - return 1; -} - -static void -fnct_CreateTopologyTables (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ CreateTopologyTables(srid, coord_dims) -/ or -/ CreateTopologyTables(prefix, srid, coord_dims) -/ -/ creates any Topology related table -/ returns 1 on success -/ 0 on failure -*/ - const char *prefix = "topo_"; - const unsigned char *txt_dims; - int srid = -1; - int dimension; - int dims = -1; - char *table_curves; - char *table_surfaces; - char *table_nodes; - char *table_edges; - char *table_faces; - char *table_faces_edges; - char *view_check_node_codes; - char *view_check_node_geoms; - char *view_check_edge_codes; - char *view_check_edge_geoms; - char *view_check_edge_node_geoms; - char *view_check_face_codes; - char *view_faces_resolved; - char *view_curves_resolved; - char *view_surfaces_resolved; - char *view_dangling_nodes; - char *view_dangling_edges; - char *view_edges_check_from_to; - const char *tables[20]; - int views[20]; - int *p_view; - const char **p_tbl; - int ok_table; - int create_master = 1; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (argc == 3) - { - if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) - { - spatialite_e - ("CreateTopologyTables() error: argument 1 [table_prefix] is not of the String type\n"); - sqlite3_result_int (context, 0); - return; - } - prefix = (char *) sqlite3_value_text (argv[0]); - if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) - { - spatialite_e - ("CreateTopologyTables() error: argument 2 [SRID] is not of the Integer type\n"); - sqlite3_result_int (context, 0); - return; - } - srid = sqlite3_value_int (argv[1]); - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - dimension = sqlite3_value_int (argv[2]); - if (dimension == 2) - dims = GAIA_XY; - if (dimension == 3) - dims = GAIA_XY_Z; - } - else if (sqlite3_value_type (argv[2]) == SQLITE_TEXT) - { - txt_dims = sqlite3_value_text (argv[2]); - if (strcasecmp ((char *) txt_dims, "XY") == 0) - dims = GAIA_XY; - if (strcasecmp ((char *) txt_dims, "XYZ") == 0) - dims = GAIA_XY_Z; - } - else - { - spatialite_e - ("CreateTopologyTables() error: argument 3 [dimension] is not of the Integer or Text type\n"); - sqlite3_result_int (context, 0); - return; - } - } - else - { - if (sqlite3_value_type (argv[0]) != SQLITE_INTEGER) - { - spatialite_e - ("CreateTopologyTables() error: argument 1 [SRID] is not of the Integer type\n"); - sqlite3_result_int (context, 0); - return; - } - srid = sqlite3_value_int (argv[0]); - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - dimension = sqlite3_value_int (argv[1]); - if (dimension == 2) - dims = GAIA_XY; - if (dimension == 3) - dims = GAIA_XY_Z; - } - else if (sqlite3_value_type (argv[1]) == SQLITE_TEXT) - { - txt_dims = sqlite3_value_text (argv[1]); - if (strcasecmp ((char *) txt_dims, "XY") == 0) - dims = GAIA_XY; - if (strcasecmp ((char *) txt_dims, "XYZ") == 0) - dims = GAIA_XY_Z; - } - else - { - spatialite_e - ("CreateTopologyTables() error: argument 2 [dimension] is not of the Integer or Text type\n"); - sqlite3_result_int (context, 0); - return; - } - } - if (dims == GAIA_XY || dims == GAIA_XY_Z) - ; - else - { - spatialite_e - ("CreateTopologyTables() error: [dimension] ILLEGAL VALUE\n"); - sqlite3_result_int (context, 0); - return; - } - if (srid <= 0) - { - spatialite_e ("CreateTopologyTables() error: [SRID] ILLEGAL VALUE\n"); - sqlite3_result_int (context, 0); - return; - } - -/* checking Topology tables */ - tables[0] = "topology_master"; - views[0] = 0; - table_curves = sqlite3_mprintf ("%scurves", prefix); - tables[1] = table_curves; - views[1] = 0; - table_surfaces = sqlite3_mprintf ("%ssurfaces", prefix); - tables[2] = table_surfaces; - views[2] = 0; - table_nodes = sqlite3_mprintf ("%snodes", prefix); - tables[3] = table_nodes; - views[3] = 0; - table_edges = sqlite3_mprintf ("%sedges", prefix); - tables[4] = table_edges; - views[4] = 0; - table_faces = sqlite3_mprintf ("%sfaces", prefix); - tables[5] = table_faces; - views[5] = 0; - table_faces_edges = sqlite3_mprintf ("%sfaces_edges", prefix); - tables[6] = table_faces_edges; - views[6] = 0; - view_check_node_codes = - sqlite3_mprintf ("%snodes_check_dupl_codes", prefix); - tables[7] = view_check_node_codes; - views[7] = 1; - view_check_node_geoms = - sqlite3_mprintf ("%snodes_check_dupl_geoms", prefix); - tables[8] = view_check_node_geoms; - views[8] = 1; - view_check_edge_codes = - sqlite3_mprintf ("%sedges_check_dupl_codes", prefix); - tables[9] = view_check_edge_codes; - views[9] = 1; - view_check_edge_geoms = - sqlite3_mprintf ("%sedges_check_intersections", prefix); - tables[10] = view_check_edge_geoms; - views[10] = 1; - view_check_edge_node_geoms = - sqlite3_mprintf ("%sedges_check_nodes", prefix); - tables[11] = view_check_edge_node_geoms; - views[11] = 1; - view_check_face_codes = - sqlite3_mprintf ("%sfaces_check_dupl_codes", prefix); - tables[12] = view_check_face_codes; - views[12] = 1; - view_faces_resolved = sqlite3_mprintf ("%sfaces_resolved", prefix); - tables[13] = view_faces_resolved; - views[13] = 1; - view_curves_resolved = sqlite3_mprintf ("%scurves_resolved", prefix); - tables[14] = view_curves_resolved; - views[14] = 1; - view_surfaces_resolved = sqlite3_mprintf ("%ssurfaces_resolved", prefix); - tables[15] = view_surfaces_resolved; - views[15] = 1; - view_dangling_nodes = sqlite3_mprintf ("%sdangling_nodes", prefix); - tables[16] = view_dangling_nodes; - views[16] = 1; - view_dangling_edges = sqlite3_mprintf ("%sdangling_edges", prefix); - tables[17] = view_dangling_edges; - views[17] = 1; - view_edges_check_from_to = - sqlite3_mprintf ("%sedges_check_from_to", prefix); - tables[18] = view_edges_check_from_to; - views[18] = 1; - tables[19] = NULL; - p_view = views; - p_tbl = tables; - while (*p_tbl != NULL) - { - ok_table = check_topo_table (sqlite, *p_tbl, *p_view); - if (ok_table) - { - if (strcmp (*p_tbl, "topology_master") == 0) - create_master = 0; - else - { - spatialite_e - ("CreateTopologyTables() error: table '%s' already exists\n", - *p_tbl); - goto error; - } - } - p_tbl++; - p_view++; - } - -/* creating Topology tables */ - if (create_master) - { - if (!create_topo_master (sqlite)) - goto error; - } - if (!create_topo_nodes (sqlite, table_nodes, srid, dims)) - goto error; - if (!create_topo_edges (sqlite, table_edges, srid, dims)) - goto error; - if (!create_topo_faces (sqlite, table_faces)) - goto error; - if (!create_topo_faces_edges (sqlite, table_faces_edges, table_faces)) - goto error; - if (!create_topo_curves (sqlite, table_curves)) - goto error; - if (!create_topo_surfaces (sqlite, table_surfaces)) - goto error; - if (!create_check_node_codes (sqlite, view_check_node_codes, table_nodes)) - goto error; - if (!create_check_node_geoms (sqlite, view_check_node_geoms, table_nodes)) - goto error; - if (!create_check_edge_codes (sqlite, view_check_edge_codes, table_edges)) - goto error; - if (!create_check_edge_geoms (sqlite, view_check_edge_geoms, table_edges)) - goto error; - if (!create_check_edge_node_geoms - (sqlite, view_check_edge_node_geoms, table_edges, table_nodes)) - goto error; - if (!create_check_face_codes (sqlite, view_check_face_codes, table_faces)) - goto error; - if (!create_faces_resolved - (sqlite, view_faces_resolved, table_faces, table_faces_edges, - table_edges)) - goto error; - if (!create_curves_resolved - (sqlite, view_curves_resolved, table_curves, table_edges)) - goto error; - if (!create_surfaces_resolved - (sqlite, view_surfaces_resolved, table_surfaces, view_faces_resolved)) - goto error; - if (!create_dangling_nodes - (sqlite, view_dangling_nodes, table_nodes, table_edges)) - goto error; - if (!create_dangling_edges - (sqlite, view_dangling_edges, table_edges, table_faces_edges, - table_curves)) - goto error; - if (!create_check_edges_from_to - (sqlite, view_edges_check_from_to, table_edges, table_nodes)) - goto error; - if (!update_topo_master - (sqlite, table_nodes, table_edges, table_faces, table_faces_edges, - table_curves, table_surfaces, view_check_node_codes, - view_check_node_geoms, view_check_edge_codes, view_check_edge_geoms, - view_check_edge_node_geoms, view_check_face_codes, view_faces_resolved, - view_curves_resolved, view_surfaces_resolved, view_dangling_nodes, - view_dangling_edges, view_edges_check_from_to, srid, dims)) - goto error; - updateSpatiaLiteHistory (sqlite, "*** TOPOLOGY ***", NULL, - "Topology tables successfully created"); - sqlite3_result_int (context, 1); - sqlite3_free (table_curves); - sqlite3_free (table_surfaces); - sqlite3_free (table_nodes); - sqlite3_free (table_edges); - sqlite3_free (table_faces); - sqlite3_free (table_faces_edges); - sqlite3_free (view_check_node_codes); - sqlite3_free (view_check_node_geoms); - sqlite3_free (view_check_edge_codes); - sqlite3_free (view_check_edge_geoms); - sqlite3_free (view_check_edge_node_geoms); - sqlite3_free (view_check_face_codes); - sqlite3_free (view_faces_resolved); - sqlite3_free (view_curves_resolved); - sqlite3_free (view_surfaces_resolved); - sqlite3_free (view_dangling_nodes); - sqlite3_free (view_dangling_edges); - sqlite3_free (view_edges_check_from_to); - return; - - error: - sqlite3_result_int (context, 0); - sqlite3_free (table_curves); - sqlite3_free (table_surfaces); - sqlite3_free (table_nodes); - sqlite3_free (table_edges); - sqlite3_free (table_faces); - sqlite3_free (table_faces_edges); - sqlite3_free (view_check_node_codes); - sqlite3_free (view_check_node_geoms); - sqlite3_free (view_check_edge_codes); - sqlite3_free (view_check_edge_geoms); - sqlite3_free (view_check_edge_node_geoms); - sqlite3_free (view_check_face_codes); - sqlite3_free (view_faces_resolved); - sqlite3_free (view_curves_resolved); - sqlite3_free (view_surfaces_resolved); - sqlite3_free (view_dangling_nodes); - sqlite3_free (view_dangling_edges); - sqlite3_free (view_edges_check_from_to); - return; -} - -static void -fnct_OffsetCurve (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ OffsetCurve(BLOBencoded geometry, radius, left-or-right-side) -/ -/ returns a new geometry representing the OFFSET-CURVE for current geometry -/ [a LINESTRING is expected] -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - double radius; - int int_value; - int left_right; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - radius = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - radius = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - left_right = sqlite3_value_int (argv[2]); - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - result = gaiaOffsetCurve (geo, radius, 16, left_right); - if (!result) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_SingleSidedBuffer (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ SingleSidedBuffer(BLOBencoded geometry, radius, left-or-right-side) -/ -/ returns a new geometry representing the SingleSided BUFFER -/ for current geometry [a LINESTRING is expected] -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - double radius; - int int_value; - int left_right; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - radius = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - radius = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - left_right = sqlite3_value_int (argv[2]); - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - result = gaiaSingleSidedBuffer (geo, radius, 16, left_right); - if (!result) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_HausdorffDistance (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ HausdorffDistance(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns the discrete Hausdorff distance between GEOM-1 and GEOM-2 -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - double dist; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_null (context); - else - { - ret = gaiaHausdorffDistance (geo1, geo2, &dist); - if (!ret) - sqlite3_result_null (context); - sqlite3_result_double (context, dist); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_SharedPaths (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ SharedPaths(BLOBencoded geometry1, BLOBencoded geometry2) -/ -/ returns a new geometry representing common (shared) Edges -/ [two LINESTRINGs/MULTILINESTRINGs are expected] -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo1 == NULL || geo2 == NULL) - sqlite3_result_null (context); - else - { - result = gaiaSharedPaths (geo1, geo2); - if (!result) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo1->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_Covers (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Covers(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns: -/ 1 if GEOM-1 "spatially covers" GEOM-2 -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_int (context, -1); - else - { - ret = gaiaGeomCollCovers (geo1, geo2); - sqlite3_result_int (context, ret); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_CoveredBy (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ CoveredBy(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns: -/ 1 if GEOM-1 is "spatially covered by" GEOM-2 -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_int (context, -1); - else - { - ret = gaiaGeomCollCoveredBy (geo1, geo2); - sqlite3_result_int (context, ret); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_LineInterpolatePoint (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ LineInterpolatePoint(BLOBencoded geometry1, double fraction) -/ -/ returns a new geometry representing a point interpolated along a line -/ [a LINESTRING is expected / fraction ranging from 0.0 to 1.0] -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int int_value; - double fraction; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - fraction = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - fraction = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - result = gaiaLineInterpolatePoint (geo, fraction); - if (!result) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_LineInterpolateEquidistantPoints (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ LineInterpolateEquidistantPointS(BLOBencoded geometry1, double distance) -/ -/ returns a new geometry representing a point interpolated along a line -/ [a LINESTRING is expected / fraction ranging from 0.0 to 1.0] -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int int_value; - double distance; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - distance = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - distance = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - result = gaiaLineInterpolateEquidistantPoints (geo, distance); - if (!result) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_LineLocatePoint (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ LineLocatePoint(BLOBencoded geometry1, BLOBencoded geometry2) -/ -/ return a number (between 0.0 and 1.0) representing the location -/ of the closest point on LineString to the given Point, as a fraction -/ of total 2d line length -/ -/ - geom1 is expected to represent some LINESTRING -/ - geom2 is expected to represent some POINT -*/ - unsigned char *p_blob; - int n_bytes; - double fraction; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo1 == NULL || geo2 == NULL) - sqlite3_result_null (context); - else - { - fraction = gaiaLineLocatePoint (geo1, geo2); - if (fraction >= 0.0 && fraction <= 1.0) - sqlite3_result_double (context, fraction); - else - sqlite3_result_null (context); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_LineSubstring (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ LineSubstring(BLOBencoded geometry1, double start_fraction, double end_fraction) -/ -/ Return a Linestring being a substring of the input one starting and ending at -/ the given fractions of total 2d length [fractions ranging from 0.0 to 1.0] -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int int_value; - double fraction1; - double fraction2; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - fraction1 = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - fraction1 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - fraction2 = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - fraction2 = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - result = gaiaLineSubstring (geo, fraction1, fraction2); - if (!result) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_ClosestPoint (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ClosestPoint(BLOBencoded geometry1, BLOBencoded geometry2) -/ -/ Returns the Point on geom1 that is closest to geom2 -/ NULL is returned for invalid arguments (or if distance is ZERO) -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo1 == NULL || geo2 == NULL) - sqlite3_result_null (context); - else - { - result = gaiaShortestLine (geo1, geo2); - if (result == NULL) - sqlite3_result_null (context); - else if (result->FirstLinestring == NULL) - { - gaiaFreeGeomColl (result); - sqlite3_result_null (context); - } - else - { - /* builds the BLOB geometry to be returned */ - double x; - double y; - double z; - double m; - int len; - unsigned char *p_result = NULL; - gaiaGeomCollPtr pt = NULL; - gaiaLinestringPtr ln = result->FirstLinestring; - if (ln->DimensionModel == GAIA_XY_Z) - pt = gaiaAllocGeomCollXYZ (); - else if (ln->DimensionModel == GAIA_XY_M) - pt = gaiaAllocGeomCollXYM (); - else if (ln->DimensionModel == GAIA_XY_Z_M) - pt = gaiaAllocGeomCollXYZM (); - else - pt = gaiaAllocGeomColl (); - if (ln->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (ln->Coords, 0, &x, &y, &z); - gaiaAddPointToGeomCollXYZ (pt, x, y, z); - } - else if (ln->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (ln->Coords, 0, &x, &y, &m); - gaiaAddPointToGeomCollXYM (pt, x, y, m); - } - else if (ln->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (ln->Coords, 0, &x, &y, &z, &m); - gaiaAddPointToGeomCollXYZM (pt, x, y, z, m); - } - else - { - gaiaGetPoint (ln->Coords, 0, &x, &y); - gaiaAddPointToGeomColl (pt, x, y); - } - pt->Srid = geo1->Srid; - gaiaToSpatiaLiteBlobWkb (pt, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - gaiaFreeGeomColl (pt); - } - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_ShortestLine (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ShortestLine(BLOBencoded geometry1, BLOBencoded geometry2) -/ -/ Returns the shortest line between two geometries -/ NULL is returned for invalid arguments (or if distance is ZERO) -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo1 == NULL || geo2 == NULL) - sqlite3_result_null (context); - else - { - result = gaiaShortestLine (geo1, geo2); - sqlite3_result_null (context); - if (!result) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo1->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_Snap (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Snap(BLOBencoded geometry1, BLOBencoded geometry2, double tolerance) -/ -/ Returns a new Geometry corresponding to geom1 snapped to geom2 -/ and using the given tolerance -/ NULL is returned for invalid arguments (or if distance is ZERO) -*/ - unsigned char *p_blob; - int n_bytes; - int int_value; - double tolerance; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - tolerance = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - tolerance = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo1 == NULL || geo2 == NULL) - sqlite3_result_null (context); - else - { - result = gaiaSnap (geo1, geo2, tolerance); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo1->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_LineMerge (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ LineMerge(BLOBencoded geometry) -/ -/ Assuming that Geometry represents a set of sparse Linestrings, -/ this function will attempt to reassemble a single line -/ (or a set of lines) -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - result = gaiaLineMerge (geo); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_UnaryUnion (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ UnaryUnion(BLOBencoded geometry) -/ -/ exactly like Union, but using a single Collection -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - result = gaiaUnaryUnion (geo); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_SquareGrid (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_SquareGrid(BLOBencoded geom, double size) -/ ST_SquareGrid(BLOBencoded geom, double size, boolean edges_only) -/ ST_SquareGrid(BLOBencoded geom, double size, boolean edges_only, BLOBencoded origin) -/ -/ Builds a regular grid (Square cells) covering the geom. -/ each cell has the edges's length as defined by the size argument -/ an arbitrary origin is supported (0,0 is assumed by default) -/ return NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int int_value; - double origin_x = 0.0; - double origin_y = 0.0; - double size; - int edges_only = 0; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr point = NULL; - gaiaGeomCollPtr result = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - size = int_value; - } - else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - { - size = sqlite3_value_double (argv[1]); - } - else - { - sqlite3_result_null (context); - return; - } - if (size <= 0.0) - { - /* negative side size */ - sqlite3_result_null (context); - return; - } - if (argc >= 3) - { - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - edges_only = sqlite3_value_int (argv[2]); - else - { - sqlite3_result_null (context); - return; - } - } - if (argc == 4) - { - if (sqlite3_value_type (argv[3]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[3]); - n_bytes = sqlite3_value_bytes (argv[3]); - point = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!point) - { - sqlite3_result_null (context); - return; - } - if (point->FirstLinestring != NULL) - goto no_point; - if (point->FirstPolygon != NULL) - goto no_point; - if (point->FirstPoint != NULL) - { - if (point->FirstPoint == point->LastPoint) - { - origin_x = point->FirstPoint->X; - origin_y = point->FirstPoint->Y; - gaiaFreeGeomColl (point); - } - else - goto no_point; - } - else - goto no_point; - - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (geo->FirstPoint != NULL) - goto no_polygon; - if (geo->FirstLinestring != NULL) - goto no_polygon; - if (geo->FirstPolygon == NULL) - goto no_polygon; - result = gaiaSquareGrid (geo, origin_x, origin_y, size, edges_only); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); - return; - - no_point: - gaiaFreeGeomColl (point); - sqlite3_result_null (context); - return; - - no_polygon: - gaiaFreeGeomColl (geo); - sqlite3_result_null (context); - return; -} - -static void -fnct_TriangularGrid (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_TriangularGrid(BLOBencoded geom, double size) -/ ST_TriangularGrid(BLOBencoded geom, double size, boolean edges_only) -/ ST_TriangularGrid(BLOBencoded geom, double size, boolean edges_only, BLOBencoded origin) -/ -/ Builds a regular grid (Triangular cells) covering the geom. -/ each cell has the edge's length as defined by the size argument -/ an arbitrary origin is supported (0,0 is assumed by default) -/ return NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int int_value; - double origin_x = 0.0; - double origin_y = 0.0; - double size; - int edges_only = 0; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr point = NULL; - gaiaGeomCollPtr result = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - size = int_value; - } - else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - { - size = sqlite3_value_double (argv[1]); - } - else - { - sqlite3_result_null (context); - return; - } - if (size <= 0.0) - { - /* negative side size */ - sqlite3_result_null (context); - return; - } - if (argc >= 3) - { - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - edges_only = sqlite3_value_int (argv[2]); - else - { - sqlite3_result_null (context); - return; - } - } - if (argc == 4) - { - if (sqlite3_value_type (argv[3]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[3]); - n_bytes = sqlite3_value_bytes (argv[3]); - point = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!point) - { - sqlite3_result_null (context); - return; - } - if (point->FirstLinestring != NULL) - goto no_point; - if (point->FirstPolygon != NULL) - goto no_point; - if (point->FirstPoint != NULL) - { - if (point->FirstPoint == point->LastPoint) - { - origin_x = point->FirstPoint->X; - origin_y = point->FirstPoint->Y; - gaiaFreeGeomColl (point); - } - else - goto no_point; - } - else - goto no_point; - - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (geo->FirstPoint != NULL) - goto no_polygon; - if (geo->FirstLinestring != NULL) - goto no_polygon; - if (geo->FirstPolygon == NULL) - goto no_polygon; - result = - gaiaTriangularGrid (geo, origin_x, origin_y, size, edges_only); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); - return; - - no_point: - gaiaFreeGeomColl (point); - sqlite3_result_null (context); - return; - - no_polygon: - gaiaFreeGeomColl (geo); - sqlite3_result_null (context); - return; -} - -static void -fnct_HexagonalGrid (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ST_HexagonalGrid(BLOBencoded geom, double size) -/ ST_HexagonalGrid(BLOBencoded geom, double size, boolean edges_only) -/ ST_HexagonalGrid(BLOBencoded geom, double size, boolean edges_only, BLOBencoded origin) -/ -/ Builds a regular grid (Hexagonal cells) covering the geom. -/ each cell has the edges's length as defined by the size argument -/ an arbitrary origin is supported (0,0 is assumed by default) -/ return NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int int_value; - double origin_x = 0.0; - double origin_y = 0.0; - double size; - int edges_only = 0; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr point = NULL; - gaiaGeomCollPtr result = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - size = int_value; - } - else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - { - size = sqlite3_value_double (argv[1]); - } - else - { - sqlite3_result_null (context); - return; - } - if (size <= 0.0) - { - /* negative side size */ - sqlite3_result_null (context); - return; - } - if (argc >= 3) - { - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - edges_only = sqlite3_value_int (argv[2]); - else - { - sqlite3_result_null (context); - return; - } - } - if (argc == 4) - { - if (sqlite3_value_type (argv[3]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[3]); - n_bytes = sqlite3_value_bytes (argv[3]); - point = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!point) - { - sqlite3_result_null (context); - return; - } - if (point->FirstLinestring != NULL) - goto no_point; - if (point->FirstPolygon != NULL) - goto no_point; - if (point->FirstPoint != NULL) - { - if (point->FirstPoint == point->LastPoint) - { - origin_x = point->FirstPoint->X; - origin_y = point->FirstPoint->Y; - gaiaFreeGeomColl (point); - } - else - goto no_point; - } - else - goto no_point; - - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (geo->FirstPoint != NULL) - goto no_polygon; - if (geo->FirstLinestring != NULL) - goto no_polygon; - if (geo->FirstPolygon == NULL) - goto no_polygon; - result = - gaiaHexagonalGrid (geo, origin_x, origin_y, size, edges_only); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); - return; - - no_point: - gaiaFreeGeomColl (point); - sqlite3_result_null (context); - return; - - no_polygon: - gaiaFreeGeomColl (geo); - sqlite3_result_null (context); - return; -} - -static void -fnct_LinesCutAtNodes (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ LinesCutAtNodes(BLOBencoded geometry1, BLOBencoded geometry2) -/ -/ Assuming that Geometry-1 represents a set of arbitray Linestrings, -/ and that Geometry-2 represents of arbitrary Points, this function -/ will then attempt to cut lines accordingly to given nodes. -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geom1 = NULL; - gaiaGeomCollPtr geom2 = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geom1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geom2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geom1 == NULL || geom2 == NULL) - { - if (geom1) - gaiaFreeGeomColl (geom1); - if (geom2) - gaiaFreeGeomColl (geom2); - sqlite3_result_null (context); - return; - } - result = gaiaLinesCutAtNodes (geom1, geom2); - if (result == NULL) - { - sqlite3_result_null (context); - } - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geom1->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - gaiaFreeGeomColl (geom1); - gaiaFreeGeomColl (geom2); -} - -static int -cmp_pt_coords (const void *p1, const void *p2) -{ -/* compares two nodes by ID [for QSORT] */ - gaiaPointPtr pt1 = *((gaiaPointPtr *) p1); - gaiaPointPtr pt2 = *((gaiaPointPtr *) p2); - if (pt1->X == pt2->X && pt1->Y == pt2->Y && pt1->Z == pt2->Z) - return 0; - if (pt1->X > pt2->X) - return 1; - if (pt1->X == pt2->X && pt1->Y > pt2->Y) - return 1; - if (pt1->X == pt2->X && pt1->Y == pt2->Y && pt1->Z > pt2->Z) - return 1; - return -1; -} - -static gaiaGeomCollPtr -auxPolygNodes (gaiaGeomCollPtr geom) -{ -/* attempting to identify Ring-Nodes */ - gaiaGeomCollPtr result = NULL; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - gaiaPointPtr pt; - gaiaPointPtr prev_pt; - gaiaPointPtr *sorted = NULL; - int count = 0; - int iv; - int ib; - double x; - double y; - double z; - double m; - -/* inserting all Points into a Dynamic Line */ - gaiaDynamicLinePtr dyn = gaiaAllocDynamicLine (); - pg = geom->FirstPolygon; - while (pg) - { - rng = pg->Exterior; - /* CAVEAT: first point needs to be skipped (closed ring) */ - for (iv = 1; iv < rng->Points; iv++) - { - /* exterior ring */ - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - gaiaAppendPointZToDynamicLine (dyn, x, y, z); - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - gaiaAppendPointMToDynamicLine (dyn, x, y, m); - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - gaiaAppendPointZMToDynamicLine (dyn, x, y, z, m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - gaiaAppendPointToDynamicLine (dyn, x, y); - } - } - - for (ib = 0; ib < pg->NumInteriors; ib++) - { - rng = pg->Interiors + ib; - /* CAVEAT: first point needs to be skipped (closed ring) */ - for (iv = 1; iv < rng->Points; iv++) - { - /* interior ring */ - if (geom->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - gaiaAppendPointZToDynamicLine (dyn, x, y, z); - } - else if (geom->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - gaiaAppendPointMToDynamicLine (dyn, x, y, m); - } - else if (geom->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - gaiaAppendPointZMToDynamicLine (dyn, x, y, z, m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - gaiaAppendPointToDynamicLine (dyn, x, y); - } - } - } - pg = pg->Next; - } - - pt = dyn->First; - while (pt) - { - /* counting how many points */ - count++; - pt = pt->Next; - } - if (count == 0) - { - gaiaFreeDynamicLine (dyn); - return NULL; - } - -/* allocating and initializing an array of pointers */ - sorted = malloc (sizeof (gaiaPointPtr) * count); - iv = 0; - pt = dyn->First; - while (pt) - { - *(sorted + iv++) = pt; - pt = pt->Next; - } - -/* sorting points by coords */ - qsort (sorted, count, sizeof (gaiaPointPtr), cmp_pt_coords); - - if (geom->DimensionModel == GAIA_XY_Z) - result = gaiaAllocGeomCollXYZ (); - else if (geom->DimensionModel == GAIA_XY_M) - result = gaiaAllocGeomCollXYM (); - else if (geom->DimensionModel == GAIA_XY_Z_M) - result = gaiaAllocGeomCollXYZM (); - else - result = gaiaAllocGeomColl (); - result->Srid = geom->Srid; - -/* identifying nodes */ - prev_pt = NULL; - for (iv = 0; iv < count; iv++) - { - pt = *(sorted + iv); - if (prev_pt != NULL) - { - if (prev_pt->X == pt->X && prev_pt->Y == pt->Y - && prev_pt->Z == pt->Z) - { - if (result->LastPoint != NULL) - { - if (result->LastPoint->X == pt->X - && result->LastPoint->Y == pt->Y - && result->LastPoint->Z == pt->Z) - continue; - } - /* Node found */ - if (result->DimensionModel == GAIA_XY_Z) - gaiaAddPointToGeomCollXYZ (result, pt->X, pt->Y, - pt->Z); - else if (result->DimensionModel == GAIA_XY_M) - gaiaAddPointToGeomCollXYM (result, pt->X, pt->Y, - pt->M); - else if (result->DimensionModel == GAIA_XY_Z_M) - gaiaAddPointToGeomCollXYZM (result, pt->X, - pt->Y, pt->Z, pt->M); - else - gaiaAddPointToGeomColl (result, pt->X, pt->Y); - } - } - prev_pt = pt; - } - - if (result->FirstPoint == NULL) - { - gaiaFreeGeomColl (result); - result = NULL; - } - free (sorted); - gaiaFreeDynamicLine (dyn); - return result; -} - -static void -fnct_RingsCutAtNodes (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ RingsCutAtNodes(BLOBencoded geometry) -/ -/ This function will attempt to return a collection of lines -/ representing Polygon/Rings: the input geometry is expected -/ to be a Polygon or MultiPolygon. -/ Each Ring will be cut accordingly to any identified "node" -/ i.e. self-intersections or intersections between two Rings. -/ -/ NULL is returned for invalid arguments -*/ - int pts = 0; - int lns = 0; - int pgs = 0; - unsigned char *p_blob; - int n_bytes; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaGeomCollPtr geom = NULL; - gaiaGeomCollPtr geom1 = NULL; - gaiaGeomCollPtr geom2 = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geom == NULL) - { - sqlite3_result_null (context); - return; - } - -/* checking if Geometry is a Polygon or MultiPolyhon */ - pt = geom->FirstPoint; - while (pt) - { - pts++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - lns++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - pgs++; - pg = pg->Next; - } - if (pts > 0 || lns > 0 || pgs == 0) - { - /* not Polygon/MultiPolygon */ - gaiaFreeGeomColl (geom); - sqlite3_result_null (context); - return; - } - -/* transforming Rings into Linestrings */ - geom1 = gaiaLinearize (geom, 1); - if (geom1 == NULL) - { - gaiaFreeGeomColl (geom); - sqlite3_result_null (context); - return; - } - -/* identifying the Nodes */ - geom2 = auxPolygNodes (geom); - if (geom2 == NULL) - { - /* there is no need to cut any Ring [no Nodes] */ - int len; - unsigned char *p_result = NULL; - geom1->Srid = geom->Srid; - gaiaToSpatiaLiteBlobWkb (geom1, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (geom); - gaiaFreeGeomColl (geom1); - return; - } - -/* attempting to cut Rings */ - result = gaiaLinesCutAtNodes (geom1, geom2); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geom->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - gaiaFreeGeomColl (geom); - gaiaFreeGeomColl (geom1); - gaiaFreeGeomColl (geom2); -} - -#endif /* end GEOS advanced features */ - -#ifdef GEOS_TRUNK /* GEOS experimental features */ - -static void -fnct_DelaunayTriangulation (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ DelaunayTriangulation(BLOBencoded geometry) -/ DelaunayTriangulation(BLOBencoded geometry, boolean onlyEdges) -/ DelaunayTriangulation(BLOBencoded geometry, boolean onlyEdges, double tolerance) -/ -/ Attempts to build a Delaunay Triangulation using all points/vertices -/ found in the input geometry. -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - int int_value; - double tolerance = 0.0; - int only_edges = 0; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (argc >= 2) - { - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - only_edges = sqlite3_value_int (argv[1]); - else - { - sqlite3_result_null (context); - return; - } - } - if (argc == 3) - { - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - tolerance = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - tolerance = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - result = gaiaDelaunayTriangulation (geo, tolerance, only_edges); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_VoronojDiagram (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ VoronojDiagram(BLOBencoded geometry) -/ VoronojDiagram(BLOBencoded geometry, boolean onlyEdges) -/ VoronojDiagram(BLOBencoded geometry, boolean onlyEdges, -/ double extra_frame_size) -/ VoronojDiagram(BLOBencoded geometry, boolean onlyEdges, -/ double extra_frame_size, double tolerance) -/ -/ Attempts to build a Voronoj Diagram using all points/vertices -/ found in the input geometry. -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - int int_value; - double tolerance = 0.0; - double extra_frame_size = -1.0; - int only_edges = 0; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (argc >= 2) - { - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - only_edges = sqlite3_value_int (argv[1]); - else - { - sqlite3_result_null (context); - return; - } - } - if (argc >= 3) - { - if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) - extra_frame_size = sqlite3_value_double (argv[2]); - else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[2]); - extra_frame_size = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - } - if (argc == 4) - { - if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) - tolerance = sqlite3_value_double (argv[3]); - else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[3]); - tolerance = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - result = - gaiaVoronojDiagram (geo, extra_frame_size, tolerance, only_edges); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_ConcaveHull (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ConcaveHull(BLOBencoded geometry) -/ ConcaveHull(BLOBencoded geometry, double factor) -/ ConcaveHull(BLOBencoded geometry, double factor, boolean allow_holes) -/ ConcaveHull(BLOBencoded geometry, double factor, -/ boolean allow_holes, double tolerance) -/ -/ Attempts to build a ConcaveHull using all points/vertices -/ found in the input geometry. -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - int int_value; - double tolerance = 0.0; - double factor = 3.0; - int allow_holes = 0; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (argc >= 2) - { - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - factor = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - factor = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - } - if (argc >= 3) - { - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - allow_holes = sqlite3_value_int (argv[2]); - else - { - sqlite3_result_null (context); - return; - } - } - if (argc == 4) - { - if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) - tolerance = sqlite3_value_double (argv[3]); - else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[3]); - tolerance = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - result = gaiaConcaveHull (geo, factor, tolerance, allow_holes); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -#endif /* end GEOS experimental features */ - -#ifdef ENABLE_LWGEOM /* enabling LWGEOM support */ - -static void -fnct_MakeValid (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MakeValid(BLOBencoded geometry) -/ -/ Attempts to make an invalid geometry valid without loosing vertices. -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - result = gaiaMakeValid (geo); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_MakeValidDiscarded (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ MakeValidDiscarded(BLOBencoded geometry) -/ -/ Strictly related to MakeValid(); useful to collect any offending item -/ discarded during the validation process. -/ NULL is returned for invalid arguments (or if no discarded items are found) -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - result = gaiaMakeValidDiscarded (geo); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_Segmentize (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Segmentize(BLOBencoded geometry, double dist) -/ -/ Ensure every segment is at most 'dist' long -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - int int_value; - double dist; - gaiaGeomCollPtr geo = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - dist = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - dist = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geo == NULL) - sqlite3_result_null (context); - else - { - result = gaiaSegmentize (geo, dist); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = geo->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (geo); -} - -static void -fnct_Split (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Split(BLOBencoded input, BLOBencoded blade) -/ -/ Returns a collection of geometries resulting by splitting a geometry -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr input = NULL; - gaiaGeomCollPtr blade = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - input = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (input == NULL) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - blade = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (blade == NULL) - { - gaiaFreeGeomColl (input); - sqlite3_result_null (context); - return; - } - else - { - result = gaiaSplit (input, blade); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = input->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (input); - gaiaFreeGeomColl (blade); -} - -static void -fnct_SplitLeft (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ SplitLeft(BLOBencoded input, BLOBencoded blade) -/ -/ Returns a collection of geometries resulting by splitting a geometry [left half] -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr input = NULL; - gaiaGeomCollPtr blade = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - input = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (input == NULL) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - blade = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (blade == NULL) - { - gaiaFreeGeomColl (input); - sqlite3_result_null (context); - return; - } - else - { - result = gaiaSplitLeft (input, blade); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = input->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (input); - gaiaFreeGeomColl (blade); -} - -static void -fnct_SplitRight (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ SplitRight(BLOBencoded input, BLOBencoded blade) -/ -/ Returns a collection of geometries resulting by splitting a geometry [right half] -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr input = NULL; - gaiaGeomCollPtr blade = NULL; - gaiaGeomCollPtr result; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - input = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (input == NULL) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - blade = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (blade == NULL) - { - gaiaFreeGeomColl (input); - sqlite3_result_null (context); - return; - } - else - { - result = gaiaSplitRight (input, blade); - if (result == NULL) - sqlite3_result_null (context); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - result->Srid = input->Srid; - gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); - sqlite3_result_blob (context, p_result, len, free); - gaiaFreeGeomColl (result); - } - } - gaiaFreeGeomColl (input); - gaiaFreeGeomColl (blade); -} - -static int -getXYSinglePoint (gaiaGeomCollPtr geom, double *x, double *y) -{ -/* check if this geometry is a simple Point (returning 2D coords) */ - double z; - double m; - return getXYZMSinglePoint (geom, x, y, &z, &m); -} - -static void -fnct_Azimuth (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ Azimuth(BLOBencoded pointA, BLOBencoded pointB) -/ -/ Returns the angle in radians from the horizontal of the vector -/ defined by pointA and pointB. -/ Angle is computed clockwise from down-to-up: on the clock: -/ 12=0; 3=PI/2; 6=PI; 9=3PI/2. -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geom; - double x1; - double y1; - double x2; - double y2; - double azimuth; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - -/* retrieving and validating the first point */ - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geom == NULL) - { - sqlite3_result_null (context); - return; - } - if (!getXYSinglePoint (geom, &x1, &y1)) - { - gaiaFreeGeomColl (geom); - sqlite3_result_null (context); - return; - } - gaiaFreeGeomColl (geom); - -/* retrieving and validating the second point */ - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geom == NULL) - { - sqlite3_result_null (context); - return; - } - if (!getXYSinglePoint (geom, &x2, &y2)) - { - gaiaFreeGeomColl (geom); - sqlite3_result_null (context); - return; - } - gaiaFreeGeomColl (geom); - - if (gaiaAzimuth (x1, y1, x2, y2, &azimuth)) - sqlite3_result_double (context, azimuth); - else - sqlite3_result_null (context); -} - -static void -fnct_GeoHash (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ GeoHash(BLOBencoded geom) -/ GeoHash(BLOBencoded geom, Integer precision) -/ -/ Returns a GeoHash representation for input geometry -/ (expected to be in longitude/latitude coords) -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geom; - int precision = 0; - char *geo_hash; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (argc == 2) - { - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - precision = sqlite3_value_int (argv[1]); - else - { - sqlite3_result_null (context); - return; - } - } - - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geom == NULL) - { - sqlite3_result_null (context); - return; - } - geo_hash = gaiaGeoHash (geom, precision); - if (geo_hash != NULL) - { - int len = strlen (geo_hash); - sqlite3_result_text (context, geo_hash, len, free); - } - else - sqlite3_result_null (context); - gaiaFreeGeomColl (geom); -} - -static char * -get_srs_by_srid (sqlite3 * sqlite, int srid, int longsrs) -{ -/* retrieves the short- or long- srs reference for the given srid */ - char sql[1024]; - int ret; - const char *name; - int i; - char **results; - int rows; - int columns; - int len; - char *srs = NULL; - - if (longsrs) - sprintf (sql, - "SELECT 'urn:ogc:def:crs:' || auth_name || '::' || auth_srid " - "FROM spatial_ref_sys WHERE srid = %d", srid); - else - sprintf (sql, "SELECT auth_name || ':' || auth_srid " - "FROM spatial_ref_sys WHERE srid = %d", srid); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return NULL; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - name = results[(i * columns) + 0]; - len = strlen (name); - srs = malloc (len + 1); - strcpy (srs, name); - } - } - sqlite3_free_table (results); - return srs; -} - -static void -fnct_AsX3D (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ AsX3D(BLOBencoded geom) -/ AsX3D(BLOBencoded geom, Integer precision) -/ AsX3D(BLOBencoded geom, Integer precision, Integer options) -/ AsX3D(BLOBencoded geom, Integer precision, Integer options, Text refid) -/ -/ Returns an X3D representation for input geometry -/ NULL is returned for invalid arguments -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geom; - int precision = 15; - int options = 0; - const char *refid = ""; - char *srs = NULL; - char *x3d; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (argc >= 2) - { - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - precision = sqlite3_value_int (argv[1]); - else - { - sqlite3_result_null (context); - return; - } - } - if (argc >= 3) - { - if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) - options = sqlite3_value_int (argv[2]); - else - { - sqlite3_result_null (context); - return; - } - } - if (argc == 4) - { - if (sqlite3_value_type (argv[3]) == SQLITE_TEXT) - refid = (const char *) sqlite3_value_text (argv[3]); - else - { - sqlite3_result_null (context); - return; - } - } - - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (geom == NULL) - { - sqlite3_result_null (context); - return; - } - if (geom->Srid > 0) - { - int longshort = 0; - if (options & 1) - longshort = 1; - srs = get_srs_by_srid (sqlite, geom->Srid, longshort); - } - x3d = gaiaAsX3D (geom, srs, precision, options, refid); - if (x3d != NULL) - { - int len = strlen (x3d); - sqlite3_result_text (context, x3d, len, free); - } - else - sqlite3_result_null (context); - gaiaFreeGeomColl (geom); - if (srs) - free (srs); -} - -static void -fnct_3DDistance (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ 3DDistance(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns the 3D distance between GEOM-1 and GEOM-2 -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - double dist; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_null (context); - else - { - ret = gaia3DDistance (geo1, geo2, &dist); - if (!ret) - sqlite3_result_null (context); - else - sqlite3_result_double (context, dist); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_MaxDistance (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ MaxDistance(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns the max 2D distance between GEOM-1 and GEOM-2 -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - double dist; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_null (context); - else - { - ret = gaiaMaxDistance (geo1, geo2, &dist); - if (!ret) - sqlite3_result_null (context); - else - sqlite3_result_double (context, dist); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -static void -fnct_3DMaxDistance (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ 3DMaxDistance(BLOBencoded geom1, BLOBencoded geom2) -/ -/ returns the max 3D distance between GEOM-1 and GEOM-2 -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geo1 = NULL; - gaiaGeomCollPtr geo2 = NULL; - double dist; - int ret; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); - n_bytes = sqlite3_value_bytes (argv[1]); - geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo1 || !geo2) - sqlite3_result_null (context); - else - { - ret = gaia3DMaxDistance (geo1, geo2, &dist); - if (!ret) - sqlite3_result_null (context); - else - sqlite3_result_double (context, dist); - } - gaiaFreeGeomColl (geo1); - gaiaFreeGeomColl (geo2); -} - -#endif /* end LWGEOM support */ - -#endif /* end including GEOS */ - -#ifndef OMIT_MATHSQL /* supporting SQL math functions */ - -static int -testInvalidFP (double x) -{ -/* testing if this one is an invalid Floating Point */ -#ifdef _WIN32 - if (_fpclass (x) == _FPCLASS_NN || _fpclass (x) == _FPCLASS_PN || - _fpclass (x) == _FPCLASS_NZ || _fpclass (x) == _FPCLASS_PZ) - ; - else - return 1; -#else - if (fpclassify (x) == FP_NORMAL || fpclassify (x) == FP_ZERO) - ; - else - return 1; -#endif - return 0; -} - -static void -fnct_math_acos (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ acos(double X) -/ -/ Returns the arc cosine of X, that is, the value whose cosine is X -/ or NULL if any error is encountered -*/ - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - { - x = acos (sqlite3_value_double (argv[0])); - if (testInvalidFP (x)) - sqlite3_result_null (context); - else - sqlite3_result_double (context, x); - } - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - x = acos (x); - if (testInvalidFP (x)) - sqlite3_result_null (context); - else - sqlite3_result_double (context, x); - } - else - sqlite3_result_null (context); -} - -static void -fnct_math_asin (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ asin(double X) -/ -/ Returns the arc sine of X, that is, the value whose sine is X -/ or NULL if any error is encountered -*/ - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - { - x = asin (sqlite3_value_double (argv[0])); - if (testInvalidFP (x)) - sqlite3_result_null (context); - else - sqlite3_result_double (context, x); - } - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - x = asin (x); - if (testInvalidFP (x)) - sqlite3_result_null (context); - else - sqlite3_result_double (context, x); - } - else - sqlite3_result_null (context); -} - -static void -fnct_math_atan (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ atan(double X) -/ -/ Returns the arc tangent of X, that is, the value whose tangent is X -/ or NULL if any error is encountered -*/ - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - { - x = atan (sqlite3_value_double (argv[0])); - sqlite3_result_double (context, x); - } - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - x = atan (x); - sqlite3_result_double (context, x); - } - else - sqlite3_result_null (context); -} - -static void -fnct_math_ceil (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ ceil(double X) -/ -/ Returns the smallest integer value not less than X -/ or NULL if any error is encountered -*/ - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - { - x = ceil (sqlite3_value_double (argv[0])); - sqlite3_result_double (context, x); - } - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - x = ceil (x); - sqlite3_result_double (context, x); - } - else - sqlite3_result_null (context); -} - -static void -fnct_math_cos (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ cos(double X) -/ -/ Returns the cosine of X, where X is given in radians -/ or NULL if any error is encountered -*/ - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - { - x = cos (sqlite3_value_double (argv[0])); - sqlite3_result_double (context, x); - } - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - x = cos (x); - sqlite3_result_double (context, x); - } - else - sqlite3_result_null (context); -} - -static void -fnct_math_cot (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ cot(double X) -/ -/ Returns the cotangent of X -/ or NULL if any error is encountered -*/ - int int_value; - double x; - double tang; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - tang = tan (x); - if (tang == 0.0) - { - sqlite3_result_null (context); - return; - } - x = 1.0 / tang; - sqlite3_result_double (context, x); -} - -static void -fnct_math_degrees (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ degrees(double X) -/ -/ Returns the argument X, converted from radians to degrees -/ or NULL if any error is encountered -*/ - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - x = x * 57.29577951308232; - sqlite3_result_double (context, x); -} - -static void -fnct_math_exp (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ exp(double X) -/ -/ Returns the value of e (the base of natural logarithms) raised to the power of X -/ or NULL if any error is encountered -*/ - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - { - x = exp (sqlite3_value_double (argv[0])); - sqlite3_result_double (context, x); - } - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - x = exp (x); - sqlite3_result_double (context, x); - } - else - sqlite3_result_null (context); -} - -static void -fnct_math_floor (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ floor(double X) -/ -/ Returns the largest integer value not greater than X -/ or NULL if any error is encountered -*/ - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - { - x = floor (sqlite3_value_double (argv[0])); - sqlite3_result_double (context, x); - } - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - x = floor (x); - sqlite3_result_double (context, x); - } - else - sqlite3_result_null (context); -} - -static void -fnct_math_logn (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ log(double X) -/ -/ Returns the natural logarithm of X; that is, the base-e logarithm of X -/ or NULL if any error is encountered -*/ - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - { - x = log (sqlite3_value_double (argv[0])); - if (testInvalidFP (x)) - sqlite3_result_null (context); - else - sqlite3_result_double (context, x); - } - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - x = log (x); - if (testInvalidFP (x)) - sqlite3_result_null (context); - else - sqlite3_result_double (context, x); - } - else - sqlite3_result_null (context); -} - -static void -fnct_math_logn2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ log(double B, double X) -/ -/ Returns the logarithm of X to the base B -/ or NULL if any error is encountered -*/ - int int_value; - double x = 0.0; - double b = 1.0; - double log1; - double log2; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - b = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - b = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (x <= 0.0 || b <= 1.0) - { - sqlite3_result_null (context); - return; - } - log1 = log (x); - if (testInvalidFP (log1)) - { - sqlite3_result_null (context); - return; - } - log2 = log (b); - if (testInvalidFP (log2)) - { - sqlite3_result_null (context); - return; - } - sqlite3_result_double (context, log1 / log2); -} - -static void -fnct_math_log_2 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ log2(double X) -/ -/ Returns the base-2 logarithm of X -/ or NULL if any error is encountered -*/ - int int_value; - double x; - double log1; - double log2; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - log1 = log (x); - if (testInvalidFP (log1)) - { - sqlite3_result_null (context); - return; - } - log2 = log (2.0); - sqlite3_result_double (context, log1 / log2); -} - -static void -fnct_math_log_10 (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ log10(double X) -/ -/ Returns the base-10 logarithm of X -/ or NULL if any error is encountered -*/ - int int_value; - double x; - double log1; - double log2; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - log1 = log (x); - if (testInvalidFP (log1)) - { - sqlite3_result_null (context); - return; - } - log2 = log (10.0); - sqlite3_result_double (context, log1 / log2); -} - -static void -fnct_math_pi (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ pi(void) -/ -/ Returns the value of (pi) -*/ - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - sqlite3_result_double (context, 3.14159265358979323846); -} - -static void -fnct_math_pow (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ pow(double X, double Y) -/ -/ Returns the value of X raised to the power of Y. -/ or NULL if any error is encountered -*/ - int int_value; - double x; - double y; - double p; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) - y = sqlite3_value_double (argv[1]); - else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[1]); - y = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - p = pow (x, y); - if (testInvalidFP (p)) - sqlite3_result_null (context); - else - sqlite3_result_double (context, p); -} - -static void -fnct_math_stddev_step (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ stddev_pop(double X) -/ stddev_samp(double X) -/ var_pop(double X) -/ var_samp(double X) -/ -/ aggregate function - STEP -/ -*/ - struct stddev_str *p; - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - return; - p = sqlite3_aggregate_context (context, sizeof (struct stddev_str)); - if (!(p->cleaned)) - { - p->cleaned = 1; - p->mean = x; - p->quot = 0.0; - p->count = 0.0; - } - p->count += 1.0; - p->quot = - p->quot + - (((p->count - 1.0) * ((x - p->mean) * (x - p->mean))) / p->count); - p->mean = p->mean + ((x - p->mean) / p->count); -} - -static void -fnct_math_stddev_pop_final (sqlite3_context * context) -{ -/* SQL function: -/ stddev_pop(double X) -/ aggregate function - FINAL -/ -*/ - double x; - struct stddev_str *p = sqlite3_aggregate_context (context, 0); - if (!p) - { - sqlite3_result_null (context); - return; - } - x = sqrt (p->quot / p->count); - sqlite3_result_double (context, x); -} - -static void -fnct_math_stddev_samp_final (sqlite3_context * context) -{ -/* SQL function: -/ stddev_samp(double X) -/ aggregate function - FINAL -/ -*/ - double x; - struct stddev_str *p = sqlite3_aggregate_context (context, 0); - if (!p) - { - sqlite3_result_null (context); - return; - } - x = sqrt (p->quot / (p->count - 1.0)); - sqlite3_result_double (context, x); -} - -static void -fnct_math_var_pop_final (sqlite3_context * context) -{ -/* SQL function: -/ var_pop(double X) -/ aggregate function - FINAL -/ -*/ - double x; - struct stddev_str *p = sqlite3_aggregate_context (context, 0); - if (!p) - { - sqlite3_result_null (context); - return; - } - x = p->quot / p->count; - sqlite3_result_double (context, x); -} - -static void -fnct_math_var_samp_final (sqlite3_context * context) -{ -/* SQL function: -/ var_samp(double X) -/ aggregate function - FINAL -/ -*/ - double x; - struct stddev_str *p = sqlite3_aggregate_context (context, 0); - if (!p) - { - sqlite3_result_null (context); - return; - } - x = p->quot / (p->count - 1.0); - sqlite3_result_double (context, x); -} - -static void -fnct_math_radians (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ radians(double X) -/ -/ Returns the argument X, converted from degrees to radians -/ or NULL if any error is encountered -*/ - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - x = x * .0174532925199432958; - sqlite3_result_double (context, x); -} - - -static void -fnct_math_round (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ round(double X) -/ -/ Returns the the nearest integer, but round halfway cases away from zero -/ or NULL if any error is encountered -*/ - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - { - x = math_round (sqlite3_value_double (argv[0])); - sqlite3_result_double (context, x); - } - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - x = math_round (x); - sqlite3_result_double (context, x); - } - else - sqlite3_result_null (context); -} - -static void -fnct_math_sign (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ sign(double X) -/ -/ Returns the sign of the argument as -1, 0, or 1, depending on whether X is negative, zero, or positive -/ or NULL if any error is encountered -*/ - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - x = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (x > 0.0) - sqlite3_result_double (context, 1.0); - else if (x < 0.0) - sqlite3_result_double (context, -1.0); - else - sqlite3_result_double (context, 0.0); -} - -static void -fnct_math_sin (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ sin(double X) -/ -/ Returns the sine of X, where X is given in radians -/ or NULL if any error is encountered -*/ - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - { - x = sin (sqlite3_value_double (argv[0])); - sqlite3_result_double (context, x); - } - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - x = sin (x); - sqlite3_result_double (context, x); - } - else - sqlite3_result_null (context); -} - -static void -fnct_math_sqrt (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ sqrt(double X) -/ -/ Returns the square root of a non-negative number X -/ or NULL if any error is encountered -*/ - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - { - x = sqrt (sqlite3_value_double (argv[0])); - if (testInvalidFP (x)) - sqlite3_result_null (context); - else - sqlite3_result_double (context, x); - } - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - x = sqrt (x); - if (testInvalidFP (x)) - sqlite3_result_null (context); - else - sqlite3_result_double (context, x); - } - else - sqlite3_result_null (context); -} - -static void -fnct_math_tan (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ tan(double X) -/ -/ Returns the tangent of X, where X is given in radians -/ or NULL if any error is encountered -*/ - int int_value; - double x; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - { - x = tan (sqlite3_value_double (argv[0])); - sqlite3_result_double (context, x); - } - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - x = int_value; - x = tan (x); - sqlite3_result_double (context, x); - } - else - sqlite3_result_null (context); -} - -#endif /* end supporting SQL math functions */ - -static void -fnct_GeomFromExifGpsBlob (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ GeomFromExifGpsBlob(BLOB encoded image) -/ -/ returns: -/ a POINT geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - gaiaGeomCollPtr geom; - unsigned char *geoblob; - int geosize; - double longitude; - double latitude; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - if (gaiaGetGpsCoords (p_blob, n_bytes, &longitude, &latitude)) - { - geom = gaiaAllocGeomColl (); - geom->Srid = 4326; - gaiaAddPointToGeomColl (geom, longitude, latitude); - gaiaToSpatiaLiteBlobWkb (geom, &geoblob, &geosize); - gaiaFreeGeomColl (geom); - sqlite3_result_blob (context, geoblob, geosize, free); - } - else - sqlite3_result_null (context); -} - -static void -blob_guess (sqlite3_context * context, int argc, sqlite3_value ** argv, - int request) -{ -/* SQL function: -/ IsGifBlob(BLOB encoded image) -/ IsPngBlob, IsJpegBlob, IsExifBlob, IsExifGpsBlob, IsTiffBlob, -/ IsZipBlob, IsPdfBlob,IsGeometryBlob -/ -/ returns: -/ 1 if the required BLOB_TYPE is TRUE -/ 0 otherwise -/ or -1 if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - int blob_type; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, -1); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - blob_type = gaiaGuessBlobType (p_blob, n_bytes); - if (request == GAIA_GEOMETRY_BLOB) - { - if (blob_type == GAIA_GEOMETRY_BLOB) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); - return; - } - if (request == GAIA_ZIP_BLOB) - { - if (blob_type == GAIA_ZIP_BLOB) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); - return; - } - if (request == GAIA_PDF_BLOB) - { - if (blob_type == GAIA_PDF_BLOB) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); - return; - } - if (request == GAIA_TIFF_BLOB) - { - if (blob_type == GAIA_TIFF_BLOB) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); - return; - } - if (request == GAIA_GIF_BLOB) - { - if (blob_type == GAIA_GIF_BLOB) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); - return; - } - if (request == GAIA_PNG_BLOB) - { - if (blob_type == GAIA_PNG_BLOB) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); - return; - } - if (request == GAIA_JPEG_BLOB) - { - if (blob_type == GAIA_JPEG_BLOB || blob_type == GAIA_EXIF_BLOB - || blob_type == GAIA_EXIF_GPS_BLOB) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); - return; - } - if (request == GAIA_EXIF_BLOB) - { - if (blob_type == GAIA_EXIF_BLOB || blob_type == GAIA_EXIF_GPS_BLOB) - { - sqlite3_result_int (context, 1); - } - else - sqlite3_result_int (context, 0); - return; - } - if (request == GAIA_EXIF_GPS_BLOB) - { - if (blob_type == GAIA_EXIF_GPS_BLOB) - { - sqlite3_result_int (context, 1); - } - else - sqlite3_result_int (context, 0); - return; - } - if (request == GAIA_WEBP_BLOB) - { - if (blob_type == GAIA_WEBP_BLOB) - sqlite3_result_int (context, 1); - else - sqlite3_result_int (context, 0); - return; - } - sqlite3_result_int (context, -1); -} - -/* -/ the following functions simply readdress the blob_guess() -/ setting the appropriate request mode -*/ - -static void -fnct_IsGeometryBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - blob_guess (context, argc, argv, GAIA_GEOMETRY_BLOB); -} - -static void -fnct_IsZipBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - blob_guess (context, argc, argv, GAIA_ZIP_BLOB); -} - -static void -fnct_IsPdfBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - blob_guess (context, argc, argv, GAIA_PDF_BLOB); -} - -static void -fnct_IsTiffBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - blob_guess (context, argc, argv, GAIA_TIFF_BLOB); -} - -static void -fnct_IsGifBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - blob_guess (context, argc, argv, GAIA_GIF_BLOB); -} - -static void -fnct_IsPngBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - blob_guess (context, argc, argv, GAIA_PNG_BLOB); -} - -static void -fnct_IsJpegBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - blob_guess (context, argc, argv, GAIA_JPEG_BLOB); -} - -static void -fnct_IsExifBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - blob_guess (context, argc, argv, GAIA_EXIF_BLOB); -} - -static void -fnct_IsExifGpsBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - blob_guess (context, argc, argv, GAIA_EXIF_GPS_BLOB); -} - -static void -fnct_IsWebPBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - blob_guess (context, argc, argv, GAIA_WEBP_BLOB); -} - -static void -fnct_BlobFromFile (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ BlobFromFile(TEXT filepath) -/ -/ returns: -/ some BLOB on success -/ or NULL on failure -*/ - unsigned char *p_blob; - int n_bytes; - int max_blob; - int rd; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - const char *path = NULL; - FILE *in = NULL; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) - path = (const char *) sqlite3_value_text (argv[0]); - if (path == NULL) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - in = fopen (path, "rb"); - if (in == NULL) - { - sqlite3_result_null (context); - return; - } - else - { - /* querying the file length */ - if (fseek (in, 0, SEEK_END) < 0) - { - sqlite3_result_null (context); - fclose (in); - return; - } - n_bytes = ftell (in); - max_blob = sqlite3_limit (sqlite, SQLITE_LIMIT_LENGTH, -1); - if (n_bytes > max_blob) - { - /* too big; cannot be stored into a BLOB */ - sqlite3_result_null (context); - fclose (in); - return; - } - rewind (in); - p_blob = malloc (n_bytes); - /* attempting to load the BLOB from the file */ - rd = fread (p_blob, 1, n_bytes, in); - fclose (in); - if (rd != n_bytes) - { - /* read error */ - free (p_blob); - sqlite3_result_null (context); - return; - } - sqlite3_result_blob (context, p_blob, n_bytes, free); - } -} - -static void -fnct_BlobToFile (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ BlobToFile(BLOB payload, TEXT filepath) -/ -/ returns: -/ 1 on success -/ or 0 on failure -*/ - unsigned char *p_blob; - int n_bytes; - const char *path = NULL; - FILE *out = NULL; - int ret = 1; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_int (context, 0); - return; - } - if (sqlite3_value_type (argv[1]) == SQLITE_TEXT) - path = (const char *) sqlite3_value_text (argv[1]); - if (path == NULL) - { - sqlite3_result_int (context, 0); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - out = fopen (path, "wb"); - if (out == NULL) - ret = 0; - else - { - /* exporting the BLOB into the file */ - int wr = fwrite (p_blob, 1, n_bytes, out); - if (wr != n_bytes) - ret = 0; - fclose (out); - } - sqlite3_result_int (context, ret); -} - -static void -fnct_GeodesicLength (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ -/* SQL function: -/ GeodesicLength(BLOB encoded GEOMETRYCOLLECTION) -/ -/ returns the total Geodesic length for current geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - double l; - double length = 0.0; - double a; - double b; - double rf; - gaiaGeomCollPtr geo = NULL; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - int ib; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (getEllipsoidParams (sqlite, geo->Srid, &a, &b, &rf)) - { - line = geo->FirstLinestring; - while (line) - { - /* Linestrings */ - l = gaiaGeodesicTotalLength (a, b, rf, - line->DimensionModel, - line->Coords, line->Points); - if (l < 0.0) - { - length = -1.0; - break; - } - length += l; - line = line->Next; - } - if (length >= 0) - { - /* Polygons */ - polyg = geo->FirstPolygon; - while (polyg) - { - /* exterior Ring */ - ring = polyg->Exterior; - l = gaiaGeodesicTotalLength (a, b, rf, - ring->DimensionModel, - ring->Coords, - ring->Points); - if (l < 0.0) - { - length = -1.0; - break; - } - length += l; - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* interior Rings */ - ring = polyg->Interiors + ib; - l = gaiaGeodesicTotalLength (a, b, rf, - ring-> - DimensionModel, - ring->Coords, - ring->Points); - if (l < 0.0) - { - length = -1.0; - break; - } - length += l; - } - if (length < 0.0) - break; - polyg = polyg->Next; - } - } - if (length < 0.0) - sqlite3_result_null (context); - else - sqlite3_result_double (context, length); - } - else - sqlite3_result_null (context); - gaiaFreeGeomColl (geo); - } -} - -static void -fnct_GreatCircleLength (sqlite3_context * context, int argc, - sqlite3_value ** argv) -{ -/* SQL function: -/ GreatCircleLength(BLOB encoded GEOMETRYCOLLECTION) -/ -/ returns the total Great Circle length for current geometry -/ or NULL if any error is encountered -*/ - unsigned char *p_blob; - int n_bytes; - double length = 0.0; - double a; - double b; - double rf; - gaiaGeomCollPtr geo = NULL; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - gaiaRingPtr ring; - int ib; - sqlite3 *sqlite = sqlite3_context_db_handle (context); - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) - { - sqlite3_result_null (context); - return; - } - p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); - n_bytes = sqlite3_value_bytes (argv[0]); - geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); - if (!geo) - sqlite3_result_null (context); - else - { - if (getEllipsoidParams (sqlite, geo->Srid, &a, &b, &rf)) - { - line = geo->FirstLinestring; - while (line) - { - /* Linestrings */ - length += - gaiaGreatCircleTotalLength (a, b, - line->DimensionModel, - line->Coords, - line->Points); - line = line->Next; - } - if (length >= 0) - { - /* Polygons */ - polyg = geo->FirstPolygon; - while (polyg) - { - /* exterior Ring */ - ring = polyg->Exterior; - length += - gaiaGreatCircleTotalLength (a, b, - ring-> - DimensionModel, - ring->Coords, - ring->Points); - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - /* interior Rings */ - ring = polyg->Interiors + ib; - length += - gaiaGreatCircleTotalLength (a, b, - ring-> - DimensionModel, - ring->Coords, - ring->Points); - } - polyg = polyg->Next; - } - } - sqlite3_result_double (context, length); - } - else - sqlite3_result_null (context); - gaiaFreeGeomColl (geo); - } -} - -static void -convertUnit (sqlite3_context * context, int argc, sqlite3_value ** argv, - int unit_from, int unit_to) -{ -/* SQL functions: -/ CvtToKm(), CvtToDm(), CvtToCm(), CvtToMm(), CvtToKmi(), CvtToIn(), CvtToFt(), -/ CvtToYd(), CvtToMi(), CvtToFath(), CvtToCh(), CvtToLink(), CvtToUsIn(), -/ CvtToUsFt(), CvtToUsYd(), CvtToUsCh(), CvtToUsMi(), CvtToIndFt(), -/ CvtToIndYd(), CvtToIndCh(), -/ CvtFromKm(), CvtFromDm(), CvtFromCm(), CvtFromMm(), CvtFromKmi(), -/ CvtFromIn(), CvtFromFt(), CvtFromYd(), CvtFromMi(), CvtFromFath(), -/ CvtFromCh(), CvtFromLink(), CvtFromUsIn(), CvtFromUsFt(), CvtFromUsYd(), -/ CvtFromUsCh(), CvtFromUsMi(), CvtFromIndFt(), CvtFromIndYd(), -/ CvtFromIndCh() -/ -/ converts a Length from one unit to a different one -/ or NULL if any error is encountered -*/ - double cvt; - double value; - int int_value; - GAIA_UNUSED (); /* LCOV_EXCL_LINE */ - if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) - value = sqlite3_value_double (argv[0]); - else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - int_value = sqlite3_value_int (argv[0]); - value = int_value; - } - else - { - sqlite3_result_null (context); - return; - } - if (!gaiaConvertLength (value, unit_from, unit_to, &cvt)) - sqlite3_result_null (context); - else - sqlite3_result_double (context, cvt); -} - -static void -fnct_cvtToKm (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_KM); -} - -static void -fnct_cvtToDm (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_DM); -} - -static void -fnct_cvtToCm (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_CM); -} - -static void -fnct_cvtToMm (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_MM); -} - -static void -fnct_cvtToKmi (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_KMI); -} - -static void -fnct_cvtToIn (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_IN); -} - -static void -fnct_cvtToFt (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_FT); -} - -static void -fnct_cvtToYd (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_YD); -} - -static void -fnct_cvtToMi (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_MI); -} - -static void -fnct_cvtToFath (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_FATH); -} - -static void -fnct_cvtToCh (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_CH); -} - -static void -fnct_cvtToLink (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_LINK); -} - -static void -fnct_cvtToUsIn (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_US_IN); -} - -static void -fnct_cvtToUsFt (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_US_FT); -} - -static void -fnct_cvtToUsYd (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_US_YD); -} - -static void -fnct_cvtToUsCh (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_US_CH); -} - -static void -fnct_cvtToUsMi (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_US_MI); -} - -static void -fnct_cvtToIndFt (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_IND_FT); -} - -static void -fnct_cvtToIndYd (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_IND_YD); -} - -static void -fnct_cvtToIndCh (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_M, GAIA_IND_CH); -} - -static void -fnct_cvtFromKm (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_KM, GAIA_M); -} - -static void -fnct_cvtFromDm (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_DM, GAIA_M); -} - -static void -fnct_cvtFromCm (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_CM, GAIA_M); -} - -static void -fnct_cvtFromMm (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_MM, GAIA_M); -} - -static void -fnct_cvtFromKmi (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_KMI, GAIA_M); -} - -static void -fnct_cvtFromIn (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_IN, GAIA_M); -} - -static void -fnct_cvtFromFt (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_FT, GAIA_M); -} - -static void -fnct_cvtFromYd (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_YD, GAIA_M); -} - -static void -fnct_cvtFromMi (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_MI, GAIA_M); -} - -static void -fnct_cvtFromFath (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_FATH, GAIA_M); -} - -static void -fnct_cvtFromCh (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_CH, GAIA_M); -} - -static void -fnct_cvtFromLink (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_LINK, GAIA_M); -} - -static void -fnct_cvtFromUsIn (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_US_IN, GAIA_M); -} - -static void -fnct_cvtFromUsFt (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_US_FT, GAIA_M); -} - -static void -fnct_cvtFromUsYd (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_US_YD, GAIA_M); -} - -static void -fnct_cvtFromUsCh (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_US_CH, GAIA_M); -} - -static void -fnct_cvtFromUsMi (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_US_MI, GAIA_M); -} - -static void -fnct_cvtFromIndFt (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_IND_FT, GAIA_M); -} - -static void -fnct_cvtFromIndYd (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_IND_YD, GAIA_M); -} - -static void -fnct_cvtFromIndCh (sqlite3_context * context, int argc, sqlite3_value ** argv) -{ - convertUnit (context, argc, argv, GAIA_IND_CH, GAIA_M); -} - -static void -register_spatialite_sql_functions (sqlite3 * db) -{ - const char *security_level; - sqlite3_create_function (db, "spatialite_version", 0, SQLITE_ANY, 0, - fnct_spatialite_version, 0, 0); - sqlite3_create_function (db, "proj4_version", 0, SQLITE_ANY, 0, - fnct_proj4_version, 0, 0); - sqlite3_create_function (db, "geos_version", 0, SQLITE_ANY, 0, - fnct_geos_version, 0, 0); - sqlite3_create_function (db, "lwgeom_version", 0, SQLITE_ANY, 0, - fnct_lwgeom_version, 0, 0); - sqlite3_create_function (db, "HasProj", 0, SQLITE_ANY, 0, - fnct_has_proj, 0, 0); - sqlite3_create_function (db, "HasGeos", 0, SQLITE_ANY, 0, - fnct_has_geos, 0, 0); - sqlite3_create_function (db, "HasGeosAdvanced", 0, SQLITE_ANY, 0, - fnct_has_geos_advanced, 0, 0); - sqlite3_create_function (db, "HasGeosTrunk", 0, SQLITE_ANY, 0, - fnct_has_geos_trunk, 0, 0); - sqlite3_create_function (db, "HasLwGeom", 0, SQLITE_ANY, 0, - fnct_has_lwgeom, 0, 0); - sqlite3_create_function (db, "HasMathSql", 0, SQLITE_ANY, 0, - fnct_has_math_sql, 0, 0); - sqlite3_create_function (db, "HasGeoCallbacks", 0, SQLITE_ANY, 0, - fnct_has_geo_callbacks, 0, 0); - sqlite3_create_function (db, "HasIconv", 0, SQLITE_ANY, 0, - fnct_has_iconv, 0, 0); - sqlite3_create_function (db, "HasFreeXL", 0, SQLITE_ANY, 0, - fnct_has_freeXL, 0, 0); - sqlite3_create_function (db, "HasEpsg", 0, SQLITE_ANY, 0, - fnct_has_epsg, 0, 0); - sqlite3_create_function (db, "GeometryConstraints", 3, SQLITE_ANY, 0, - fnct_GeometryConstraints, 0, 0); - sqlite3_create_function (db, "GeometryConstraints", 4, SQLITE_ANY, 0, - fnct_GeometryConstraints, 0, 0); - sqlite3_create_function (db, "RTreeAlign", 3, SQLITE_ANY, 0, - fnct_RTreeAlign, 0, 0); - sqlite3_create_function (db, "CheckSpatialMetaData", 0, SQLITE_ANY, 0, - fnct_CheckSpatialMetaData, 0, 0); - sqlite3_create_function (db, "AutoFDOStart", 0, SQLITE_ANY, 0, - fnct_AutoFDOStart, 0, 0); - sqlite3_create_function (db, "AutoFDOStop", 0, SQLITE_ANY, 0, - fnct_AutoFDOStop, 0, 0); - sqlite3_create_function (db, "InitFDOSpatialMetaData", 0, SQLITE_ANY, 0, - fnct_InitFDOSpatialMetaData, 0, 0); - sqlite3_create_function (db, "AddFDOGeometryColumn", 6, SQLITE_ANY, 0, - fnct_AddFDOGeometryColumn, 0, 0); - sqlite3_create_function (db, "RecoverFDOGeometryColumn", 6, SQLITE_ANY, 0, - fnct_RecoverFDOGeometryColumn, 0, 0); - sqlite3_create_function (db, "DiscardFDOGeometryColumn", 2, SQLITE_ANY, 0, - fnct_DiscardFDOGeometryColumn, 0, 0); - sqlite3_create_function (db, "InitSpatialMetaData", 0, SQLITE_ANY, 0, - fnct_InitSpatialMetaData, 0, 0); - sqlite3_create_function (db, "InitSpatialMetaData", 1, SQLITE_ANY, 0, - fnct_InitSpatialMetaData, 0, 0); - sqlite3_create_function (db, "InsertEpsgSrid", 1, SQLITE_ANY, 0, - fnct_InsertEpsgSrid, 0, 0); - sqlite3_create_function (db, "AddGeometryColumn", 4, SQLITE_ANY, 0, - fnct_AddGeometryColumn, 0, 0); - sqlite3_create_function (db, "AddGeometryColumn", 5, SQLITE_ANY, 0, - fnct_AddGeometryColumn, 0, 0); - sqlite3_create_function (db, "AddGeometryColumn", 6, SQLITE_ANY, 0, - fnct_AddGeometryColumn, 0, 0); - sqlite3_create_function (db, "RecoverGeometryColumn", 4, SQLITE_ANY, 0, - fnct_RecoverGeometryColumn, 0, 0); - sqlite3_create_function (db, "RecoverGeometryColumn", 5, SQLITE_ANY, 0, - fnct_RecoverGeometryColumn, 0, 0); - sqlite3_create_function (db, "DiscardGeometryColumn", 2, SQLITE_ANY, 0, - fnct_DiscardGeometryColumn, 0, 0); - sqlite3_create_function (db, "RegisterVirtualGeometry", 1, SQLITE_ANY, 0, - fnct_RegisterVirtualGeometry, 0, 0); - sqlite3_create_function (db, "DropVirtualGeometry", 1, SQLITE_ANY, 0, - fnct_DropVirtualGeometry, 0, 0); - sqlite3_create_function (db, "RecoverSpatialIndex", 0, SQLITE_ANY, 0, - fnct_RecoverSpatialIndex, 0, 0); - sqlite3_create_function (db, "RecoverSpatialIndex", 1, SQLITE_ANY, 0, - fnct_RecoverSpatialIndex, 0, 0); - sqlite3_create_function (db, "RecoverSpatialIndex", 2, SQLITE_ANY, 0, - fnct_RecoverSpatialIndex, 0, 0); - sqlite3_create_function (db, "RecoverSpatialIndex", 3, SQLITE_ANY, 0, - fnct_RecoverSpatialIndex, 0, 0); - sqlite3_create_function (db, "CheckSpatialIndex", 0, SQLITE_ANY, 0, - fnct_CheckSpatialIndex, 0, 0); - sqlite3_create_function (db, "CheckSpatialIndex", 2, SQLITE_ANY, 0, - fnct_CheckSpatialIndex, 0, 0); - sqlite3_create_function (db, "CreateSpatialIndex", 2, SQLITE_ANY, 0, - fnct_CreateSpatialIndex, 0, 0); - sqlite3_create_function (db, "CreateMbrCache", 2, SQLITE_ANY, 0, - fnct_CreateMbrCache, 0, 0); - sqlite3_create_function (db, "DisableSpatialIndex", 2, SQLITE_ANY, 0, - fnct_DisableSpatialIndex, 0, 0); - sqlite3_create_function (db, "RebuildGeometryTriggers", 2, SQLITE_ANY, 0, - fnct_RebuildGeometryTriggers, 0, 0); - sqlite3_create_function (db, "UpdateLayerStatistics", 0, SQLITE_ANY, 0, - fnct_UpdateLayerStatistics, 0, 0); - sqlite3_create_function (db, "UpdateLayerStatistics", 1, SQLITE_ANY, 0, - fnct_UpdateLayerStatistics, 0, 0); - sqlite3_create_function (db, "UpdateLayerStatistics", 2, SQLITE_ANY, 0, - fnct_UpdateLayerStatistics, 0, 0); - sqlite3_create_function (db, "AsText", 1, SQLITE_ANY, 0, fnct_AsText, 0, 0); - sqlite3_create_function (db, "ST_AsText", 1, SQLITE_ANY, 0, fnct_AsText, - 0, 0); - sqlite3_create_function (db, "AsWkt", 1, SQLITE_ANY, 0, fnct_AsWkt, 0, 0); - sqlite3_create_function (db, "AsWkt", 2, SQLITE_ANY, 0, fnct_AsWkt, 0, 0); - sqlite3_create_function (db, "AsSvg", 1, SQLITE_ANY, 0, fnct_AsSvg1, 0, 0); - sqlite3_create_function (db, "AsSvg", 2, SQLITE_ANY, 0, fnct_AsSvg2, 0, 0); - sqlite3_create_function (db, "AsSvg", 3, SQLITE_ANY, 0, fnct_AsSvg3, 0, 0); - -#ifndef OMIT_PROJ /* PROJ.4 is strictly required to support KML */ - sqlite3_create_function (db, "AsKml", 1, SQLITE_ANY, 0, fnct_AsKml, 0, 0); - sqlite3_create_function (db, "AsKml", 2, SQLITE_ANY, 0, fnct_AsKml, 0, 0); - sqlite3_create_function (db, "AsKml", 3, SQLITE_ANY, 0, fnct_AsKml, 0, 0); - sqlite3_create_function (db, "AsKml", 4, SQLITE_ANY, 0, fnct_AsKml, 0, 0); -#endif /* end including PROJ.4 */ - - sqlite3_create_function (db, "AsGml", 1, SQLITE_ANY, 0, fnct_AsGml, 0, 0); - sqlite3_create_function (db, "AsGml", 2, SQLITE_ANY, 0, fnct_AsGml, 0, 0); - sqlite3_create_function (db, "AsGml", 3, SQLITE_ANY, 0, fnct_AsGml, 0, 0); - sqlite3_create_function (db, "GeomFromGml", 1, SQLITE_ANY, 0, - fnct_FromGml, 0, 0); - sqlite3_create_function (db, "AsGeoJSON", 1, SQLITE_ANY, 0, fnct_AsGeoJSON, - 0, 0); - sqlite3_create_function (db, "AsGeoJSON", 2, SQLITE_ANY, 0, fnct_AsGeoJSON, - 0, 0); - sqlite3_create_function (db, "AsGeoJSON", 3, SQLITE_ANY, 0, fnct_AsGeoJSON, - 0, 0); - sqlite3_create_function (db, "GeomFromGeoJSON", 1, SQLITE_ANY, 0, - fnct_FromGeoJSON, 0, 0); - sqlite3_create_function (db, "GeomFromKml", 1, SQLITE_ANY, 0, - fnct_FromKml, 0, 0); - sqlite3_create_function (db, "AsFGF", 2, SQLITE_ANY, 0, fnct_AsFGF, 0, 0); - sqlite3_create_function (db, "GeomFromEWKB", 1, SQLITE_ANY, 0, - fnct_FromEWKB, 0, 0); - sqlite3_create_function (db, "AsEWKB", 1, SQLITE_ANY, 0, fnct_ToEWKB, 0, 0); - sqlite3_create_function (db, "AsEWKT", 1, SQLITE_ANY, 0, fnct_ToEWKT, 0, 0); - sqlite3_create_function (db, "GeomFromEWKT", 1, SQLITE_ANY, 0, - fnct_FromEWKT, 0, 0); - sqlite3_create_function (db, "AsBinary", 1, SQLITE_ANY, 0, fnct_AsBinary, 0, - 0); - sqlite3_create_function (db, "ST_AsBinary", 1, SQLITE_ANY, 0, fnct_AsBinary, - 0, 0); - sqlite3_create_function (db, "GeomFromText", 1, SQLITE_ANY, 0, - fnct_GeomFromText1, 0, 0); - sqlite3_create_function (db, "GeomFromText", 2, SQLITE_ANY, 0, - fnct_GeomFromText2, 0, 0); - sqlite3_create_function (db, "GeometryFromText", 1, SQLITE_ANY, 0, - fnct_GeomFromText1, 0, 0); - sqlite3_create_function (db, "GeometryFromText", 2, SQLITE_ANY, 0, - fnct_GeomFromText2, 0, 0); - sqlite3_create_function (db, "GeomCollFromText", 1, SQLITE_ANY, 0, - fnct_GeomCollFromText1, 0, 0); - sqlite3_create_function (db, "GeomCollFromText", 2, SQLITE_ANY, 0, - fnct_GeomCollFromText2, 0, 0); - sqlite3_create_function (db, "GeometryCollectionFromText", 1, SQLITE_ANY, 0, - fnct_GeomCollFromText1, 0, 0); - sqlite3_create_function (db, "GeometryCollectionFromText", 2, SQLITE_ANY, 0, - fnct_GeomCollFromText2, 0, 0); - sqlite3_create_function (db, "PointFromText", 1, SQLITE_ANY, 0, - fnct_PointFromText1, 0, 0); - sqlite3_create_function (db, "PointFromText", 2, SQLITE_ANY, 0, - fnct_PointFromText2, 0, 0); - sqlite3_create_function (db, "LineFromText", 1, SQLITE_ANY, 0, - fnct_LineFromText1, 0, 0); - sqlite3_create_function (db, "LineFromText", 2, SQLITE_ANY, 0, - fnct_LineFromText2, 0, 0); - sqlite3_create_function (db, "LineStringFromText", 1, SQLITE_ANY, 0, - fnct_LineFromText1, 0, 0); - sqlite3_create_function (db, "LineStringFromText", 2, SQLITE_ANY, 0, - fnct_LineFromText2, 0, 0); - sqlite3_create_function (db, "PolyFromText", 1, SQLITE_ANY, 0, - fnct_PolyFromText1, 0, 0); - sqlite3_create_function (db, "PolyFromText", 2, SQLITE_ANY, 0, - fnct_PolyFromText2, 0, 0); - sqlite3_create_function (db, "PolygonFromText", 1, SQLITE_ANY, 0, - fnct_PolyFromText1, 0, 0); - sqlite3_create_function (db, "PolygonFromText", 2, SQLITE_ANY, 0, - fnct_PolyFromText2, 0, 0); - sqlite3_create_function (db, "MPointFromText", 1, SQLITE_ANY, 0, - fnct_MPointFromText1, 0, 0); - sqlite3_create_function (db, "MPointFromText", 2, SQLITE_ANY, 0, - fnct_MPointFromText2, 0, 0); - sqlite3_create_function (db, "MultiPointFromText", 1, SQLITE_ANY, 0, - fnct_MPointFromText1, 0, 0); - sqlite3_create_function (db, "MultiPointFromText", 2, SQLITE_ANY, 0, - fnct_MPointFromText2, 0, 0); - sqlite3_create_function (db, "MLineFromText", 1, SQLITE_ANY, 0, - fnct_MLineFromText1, 0, 0); - sqlite3_create_function (db, "MLineFromText", 2, SQLITE_ANY, 0, - fnct_MLineFromText2, 0, 0); - sqlite3_create_function (db, "MultiLineStringFromText", 1, SQLITE_ANY, 0, - fnct_MLineFromText1, 0, 0); - sqlite3_create_function (db, "MultiLineStringFromText", 2, SQLITE_ANY, 0, - fnct_MLineFromText2, 0, 0); - sqlite3_create_function (db, "MPolyFromText", 1, SQLITE_ANY, 0, - fnct_MPolyFromText1, 0, 0); - sqlite3_create_function (db, "MPolyFromText", 2, SQLITE_ANY, 0, - fnct_MPolyFromText2, 0, 0); - sqlite3_create_function (db, "MultiPolygonFromText", 1, SQLITE_ANY, 0, - fnct_MPolyFromText1, 0, 0); - sqlite3_create_function (db, "MultiPolygonFromText", 2, SQLITE_ANY, 0, - fnct_MPolyFromText2, 0, 0); - sqlite3_create_function (db, "GeomFromWKB", 1, SQLITE_ANY, 0, - fnct_GeomFromWkb1, 0, 0); - sqlite3_create_function (db, "GeomFromWKB", 2, SQLITE_ANY, 0, - fnct_GeomFromWkb2, 0, 0); - sqlite3_create_function (db, "GeometryFromWKB", 1, SQLITE_ANY, 0, - fnct_GeomFromWkb1, 0, 0); - sqlite3_create_function (db, "GeometryFromWKB", 2, SQLITE_ANY, 0, - fnct_GeomFromWkb2, 0, 0); - sqlite3_create_function (db, "GeomCollFromWKB", 1, SQLITE_ANY, 0, - fnct_GeomCollFromWkb1, 0, 0); - sqlite3_create_function (db, "GeomCollFromWKB", 2, SQLITE_ANY, 0, - fnct_GeomCollFromWkb2, 0, 0); - sqlite3_create_function (db, "GeometryCollectionFromWKB", 1, SQLITE_ANY, 0, - fnct_GeomCollFromWkb1, 0, 0); - sqlite3_create_function (db, "GeometryCollectionFromWKB", 2, SQLITE_ANY, 0, - fnct_GeomCollFromWkb2, 0, 0); - sqlite3_create_function (db, "PointFromWKB", 1, SQLITE_ANY, 0, - fnct_PointFromWkb1, 0, 0); - sqlite3_create_function (db, "PointFromWKB", 2, SQLITE_ANY, 0, - fnct_PointFromWkb2, 0, 0); - sqlite3_create_function (db, "LineFromWKB", 1, SQLITE_ANY, 0, - fnct_LineFromWkb1, 0, 0); - sqlite3_create_function (db, "LineFromWKB", 2, SQLITE_ANY, 0, - fnct_LineFromWkb2, 0, 0); - sqlite3_create_function (db, "LineStringFromWKB", 1, SQLITE_ANY, 0, - fnct_LineFromWkb1, 0, 0); - sqlite3_create_function (db, "LineStringFromWKB", 2, SQLITE_ANY, 0, - fnct_LineFromWkb2, 0, 0); - sqlite3_create_function (db, "PolyFromWKB", 1, SQLITE_ANY, 0, - fnct_PolyFromWkb1, 0, 0); - sqlite3_create_function (db, "PolyFromWKB", 2, SQLITE_ANY, 0, - fnct_PolyFromWkb2, 0, 0); - sqlite3_create_function (db, "PolygonFromWKB", 1, SQLITE_ANY, 0, - fnct_PolyFromWkb1, 0, 0); - sqlite3_create_function (db, "PolygonFromWKB", 2, SQLITE_ANY, 0, - fnct_PolyFromWkb2, 0, 0); - sqlite3_create_function (db, "MPointFromWKB", 1, SQLITE_ANY, 0, - fnct_MPointFromWkb1, 0, 0); - sqlite3_create_function (db, "MPointFromWKB", 2, SQLITE_ANY, 0, - fnct_MPointFromWkb2, 0, 0); - sqlite3_create_function (db, "MultiPointFromWKB", 1, SQLITE_ANY, 0, - fnct_MPointFromWkb1, 0, 0); - sqlite3_create_function (db, "MultiPointFromWKB", 2, SQLITE_ANY, 0, - fnct_MPointFromWkb2, 0, 0); - sqlite3_create_function (db, "MLineFromWKB", 1, SQLITE_ANY, 0, - fnct_MLineFromWkb1, 0, 0); - sqlite3_create_function (db, "MLineFromWKB", 2, SQLITE_ANY, 0, - fnct_MLineFromWkb2, 0, 0); - sqlite3_create_function (db, "MultiLineStringFromWKB", 1, SQLITE_ANY, 0, - fnct_MLineFromWkb1, 0, 0); - sqlite3_create_function (db, "MultiLineStringFromWKB", 2, SQLITE_ANY, 0, - fnct_MLineFromWkb2, 0, 0); - sqlite3_create_function (db, "MPolyFromWKB", 1, SQLITE_ANY, 0, - fnct_MPolyFromWkb1, 0, 0); - sqlite3_create_function (db, "MPolyFromWKB", 2, SQLITE_ANY, 0, - fnct_MPolyFromWkb2, 0, 0); - sqlite3_create_function (db, "MultiPolygonFromWKB", 1, SQLITE_ANY, 0, - fnct_MPolyFromWkb1, 0, 0); - sqlite3_create_function (db, "MultiPolygonFromWKB", 2, SQLITE_ANY, 0, - fnct_MPolyFromWkb2, 0, 0); - sqlite3_create_function (db, "ST_WKTToSQL", 1, SQLITE_ANY, 0, - fnct_WktToSql, 0, 0); - sqlite3_create_function (db, "ST_GeomFromText", 1, SQLITE_ANY, 0, - fnct_GeomFromText1, 0, 0); - sqlite3_create_function (db, "ST_GeomFromText", 2, SQLITE_ANY, 0, - fnct_GeomFromText2, 0, 0); - sqlite3_create_function (db, "ST_GeometryFromText", 1, SQLITE_ANY, 0, - fnct_GeomFromText1, 0, 0); - sqlite3_create_function (db, "ST_GeometryFromText", 2, SQLITE_ANY, 0, - fnct_GeomFromText2, 0, 0); - sqlite3_create_function (db, "ST_GeomCollFromText", 1, SQLITE_ANY, 0, - fnct_GeomCollFromText1, 0, 0); - sqlite3_create_function (db, "ST_GeomCollFromText", 2, SQLITE_ANY, 0, - fnct_GeomCollFromText2, 0, 0); - sqlite3_create_function (db, "ST_GeometryCollectionFromText", 1, SQLITE_ANY, - 0, fnct_GeomCollFromText1, 0, 0); - sqlite3_create_function (db, "ST_GeometryCollectionFromText", 2, SQLITE_ANY, - 0, fnct_GeomCollFromText2, 0, 0); - sqlite3_create_function (db, "ST_PointFromText", 1, SQLITE_ANY, 0, - fnct_PointFromText1, 0, 0); - sqlite3_create_function (db, "ST_PointFromText", 2, SQLITE_ANY, 0, - fnct_PointFromText2, 0, 0); - sqlite3_create_function (db, "ST_LineFromText", 1, SQLITE_ANY, 0, - fnct_LineFromText1, 0, 0); - sqlite3_create_function (db, "ST_LineFromText", 2, SQLITE_ANY, 0, - fnct_LineFromText2, 0, 0); - sqlite3_create_function (db, "ST_LineStringFromText", 1, SQLITE_ANY, 0, - fnct_LineFromText1, 0, 0); - sqlite3_create_function (db, "ST_LineStringFromText", 2, SQLITE_ANY, 0, - fnct_LineFromText2, 0, 0); - sqlite3_create_function (db, "ST_PolyFromText", 1, SQLITE_ANY, 0, - fnct_PolyFromText1, 0, 0); - sqlite3_create_function (db, "ST_PolyFromText", 2, SQLITE_ANY, 0, - fnct_PolyFromText2, 0, 0); - sqlite3_create_function (db, "ST_PolygonFromText", 1, SQLITE_ANY, 0, - fnct_PolyFromText1, 0, 0); - sqlite3_create_function (db, "ST_PolygonFromText", 2, SQLITE_ANY, 0, - fnct_PolyFromText2, 0, 0); - sqlite3_create_function (db, "ST_MPointFromText", 1, SQLITE_ANY, 0, - fnct_MPointFromText1, 0, 0); - sqlite3_create_function (db, "ST_MPointFromText", 2, SQLITE_ANY, 0, - fnct_MPointFromText2, 0, 0); - sqlite3_create_function (db, "ST_MultiPointFromText", 1, SQLITE_ANY, 0, - fnct_MPointFromText1, 0, 0); - sqlite3_create_function (db, "ST_MultiPointFromText", 2, SQLITE_ANY, 0, - fnct_MPointFromText2, 0, 0); - sqlite3_create_function (db, "ST_MLineFromText", 1, SQLITE_ANY, 0, - fnct_MLineFromText1, 0, 0); - sqlite3_create_function (db, "ST_MLineFromText", 2, SQLITE_ANY, 0, - fnct_MLineFromText2, 0, 0); - sqlite3_create_function (db, "ST_MultiLineStringFromText", 1, SQLITE_ANY, 0, - fnct_MLineFromText1, 0, 0); - sqlite3_create_function (db, "ST_MultiLineStringFromText", 2, SQLITE_ANY, 0, - fnct_MLineFromText2, 0, 0); - sqlite3_create_function (db, "ST_MPolyFromText", 1, SQLITE_ANY, 0, - fnct_MPolyFromText1, 0, 0); - sqlite3_create_function (db, "ST_MPolyFromText", 2, SQLITE_ANY, 0, - fnct_MPolyFromText2, 0, 0); - sqlite3_create_function (db, "ST_MultiPolygonFromText", 1, SQLITE_ANY, 0, - fnct_MPolyFromText1, 0, 0); - sqlite3_create_function (db, "ST_MultiPolygonFromText", 2, SQLITE_ANY, 0, - fnct_MPolyFromText2, 0, 0); - sqlite3_create_function (db, "ST_WKBToSQL", 1, SQLITE_ANY, 0, - fnct_WkbToSql, 0, 0); - sqlite3_create_function (db, "ST_GeomFromWKB", 1, SQLITE_ANY, 0, - fnct_GeomFromWkb1, 0, 0); - sqlite3_create_function (db, "ST_GeomFromWKB", 2, SQLITE_ANY, 0, - fnct_GeomFromWkb2, 0, 0); - sqlite3_create_function (db, "ST_GeometryFromWKB", 1, SQLITE_ANY, 0, - fnct_GeomFromWkb1, 0, 0); - sqlite3_create_function (db, "ST_GeometryFromWKB", 2, SQLITE_ANY, 0, - fnct_GeomFromWkb2, 0, 0); - sqlite3_create_function (db, "ST_GeomCollFromWKB", 1, SQLITE_ANY, 0, - fnct_GeomCollFromWkb1, 0, 0); - sqlite3_create_function (db, "ST_GeomCollFromWKB", 2, SQLITE_ANY, 0, - fnct_GeomCollFromWkb2, 0, 0); - sqlite3_create_function (db, "ST_GeometryCollectionFromWKB", 1, SQLITE_ANY, - 0, fnct_GeomCollFromWkb1, 0, 0); - sqlite3_create_function (db, "ST_GeometryCollectionFromWKB", 2, SQLITE_ANY, - 0, fnct_GeomCollFromWkb2, 0, 0); - sqlite3_create_function (db, "ST_PointFromWKB", 1, SQLITE_ANY, 0, - fnct_PointFromWkb1, 0, 0); - sqlite3_create_function (db, "ST_PointFromWKB", 2, SQLITE_ANY, 0, - fnct_PointFromWkb2, 0, 0); - sqlite3_create_function (db, "ST_LineFromWKB", 1, SQLITE_ANY, 0, - fnct_LineFromWkb1, 0, 0); - sqlite3_create_function (db, "ST_LineFromWKB", 2, SQLITE_ANY, 0, - fnct_LineFromWkb2, 0, 0); - sqlite3_create_function (db, "ST_LineStringFromWKB", 1, SQLITE_ANY, 0, - fnct_LineFromWkb1, 0, 0); - sqlite3_create_function (db, "ST_LineStringFromWKB", 2, SQLITE_ANY, 0, - fnct_LineFromWkb2, 0, 0); - sqlite3_create_function (db, "ST_PolyFromWKB", 1, SQLITE_ANY, 0, - fnct_PolyFromWkb1, 0, 0); - sqlite3_create_function (db, "ST_PolyFromWKB", 2, SQLITE_ANY, 0, - fnct_PolyFromWkb2, 0, 0); - sqlite3_create_function (db, "ST_PolygonFromWKB", 1, SQLITE_ANY, 0, - fnct_PolyFromWkb1, 0, 0); - sqlite3_create_function (db, "ST_PolygonFromWKB", 2, SQLITE_ANY, 0, - fnct_PolyFromWkb2, 0, 0); - sqlite3_create_function (db, "ST_MPointFromWKB", 1, SQLITE_ANY, 0, - fnct_MPointFromWkb1, 0, 0); - sqlite3_create_function (db, "ST_MPointFromWKB", 2, SQLITE_ANY, 0, - fnct_MPointFromWkb2, 0, 0); - sqlite3_create_function (db, "ST_MultiPointFromWKB", 1, SQLITE_ANY, 0, - fnct_MPointFromWkb1, 0, 0); - sqlite3_create_function (db, "ST_MultiPointFromWKB", 2, SQLITE_ANY, 0, - fnct_MPointFromWkb2, 0, 0); - sqlite3_create_function (db, "ST_MLineFromWKB", 1, SQLITE_ANY, 0, - fnct_MLineFromWkb1, 0, 0); - sqlite3_create_function (db, "ST_MLineFromWKB", 2, SQLITE_ANY, 0, - fnct_MLineFromWkb2, 0, 0); - sqlite3_create_function (db, "ST_MultiLineStringFromWKB", 1, SQLITE_ANY, 0, - fnct_MLineFromWkb1, 0, 0); - sqlite3_create_function (db, "ST_MultiLineStringFromWKB", 2, SQLITE_ANY, 0, - fnct_MLineFromWkb2, 0, 0); - sqlite3_create_function (db, "ST_MPolyFromWKB", 1, SQLITE_ANY, 0, - fnct_MPolyFromWkb1, 0, 0); - sqlite3_create_function (db, "ST_MPolyFromWKB", 2, SQLITE_ANY, 0, - fnct_MPolyFromWkb2, 0, 0); - sqlite3_create_function (db, "ST_MultiPolygonFromWKB", 1, SQLITE_ANY, 0, - fnct_MPolyFromWkb1, 0, 0); - sqlite3_create_function (db, "ST_MultiPolygonFromWKB", 2, SQLITE_ANY, 0, - fnct_MPolyFromWkb2, 0, 0); - sqlite3_create_function (db, "GeomFromFGF", 1, SQLITE_ANY, 0, - fnct_GeometryFromFGF1, 0, 0); - sqlite3_create_function (db, "GeomFromFGF", 2, SQLITE_ANY, 0, - fnct_GeometryFromFGF2, 0, 0); - sqlite3_create_function (db, "CompressGeometry", 1, SQLITE_ANY, 0, - fnct_CompressGeometry, 0, 0); - sqlite3_create_function (db, "UncompressGeometry", 1, SQLITE_ANY, 0, - fnct_UncompressGeometry, 0, 0); - sqlite3_create_function (db, "SanitizeGeometry", 1, SQLITE_ANY, 0, - fnct_SanitizeGeometry, 0, 0); - sqlite3_create_function (db, "CastToPoint", 1, SQLITE_ANY, 0, - fnct_CastToPoint, 0, 0); - sqlite3_create_function (db, "CastToLinestring", 1, SQLITE_ANY, 0, - fnct_CastToLinestring, 0, 0); - sqlite3_create_function (db, "CastToPolygon", 1, SQLITE_ANY, 0, - fnct_CastToPolygon, 0, 0); - sqlite3_create_function (db, "CastToMultiPoint", 1, SQLITE_ANY, 0, - fnct_CastToMultiPoint, 0, 0); - sqlite3_create_function (db, "CastToMultiLinestring", 1, SQLITE_ANY, 0, - fnct_CastToMultiLinestring, 0, 0); - sqlite3_create_function (db, "CastToMultiPolygon", 1, SQLITE_ANY, 0, - fnct_CastToMultiPolygon, 0, 0); - sqlite3_create_function (db, "CastToGeometryCollection", 1, SQLITE_ANY, 0, - fnct_CastToGeometryCollection, 0, 0); - sqlite3_create_function (db, "CastToMulti", 1, SQLITE_ANY, 0, - fnct_CastToMulti, 0, 0); - sqlite3_create_function (db, "ST_Multi", 1, SQLITE_ANY, 0, fnct_CastToMulti, - 0, 0); - sqlite3_create_function (db, "CastToSingle", 1, SQLITE_ANY, 0, - fnct_CastToSingle, 0, 0); - sqlite3_create_function (db, "CastToXY", 1, SQLITE_ANY, 0, fnct_CastToXY, 0, - 0); - sqlite3_create_function (db, "CastToXYZ", 1, SQLITE_ANY, 0, fnct_CastToXYZ, - 0, 0); - sqlite3_create_function (db, "CastToXYM", 1, SQLITE_ANY, 0, fnct_CastToXYM, - 0, 0); - sqlite3_create_function (db, "CastToXYZM", 1, SQLITE_ANY, 0, - fnct_CastToXYZM, 0, 0); - sqlite3_create_function (db, "ExtractMultiPoint", 1, SQLITE_ANY, 0, - fnct_ExtractMultiPoint, 0, 0); - sqlite3_create_function (db, "ExtractMultiLinestring", 1, SQLITE_ANY, 0, - fnct_ExtractMultiLinestring, 0, 0); - sqlite3_create_function (db, "ExtractMultiPolygon", 1, SQLITE_ANY, 0, - fnct_ExtractMultiPolygon, 0, 0); - sqlite3_create_function (db, "ST_Reverse", 1, SQLITE_ANY, 0, - fnct_Reverse, 0, 0); - sqlite3_create_function (db, "ST_ForceLHR", 1, SQLITE_ANY, 0, - fnct_ForceLHR, 0, 0); - sqlite3_create_function (db, "Dimension", 1, SQLITE_ANY, 0, fnct_Dimension, - 0, 0); - sqlite3_create_function (db, "ST_Dimension", 1, SQLITE_ANY, 0, - fnct_Dimension, 0, 0); - sqlite3_create_function (db, "CoordDimension", 1, SQLITE_ANY, 0, - fnct_CoordDimension, 0, 0); - sqlite3_create_function (db, "ST_NDims", 1, SQLITE_ANY, 0, - fnct_NDims, 0, 0); - sqlite3_create_function (db, "GeometryType", 1, SQLITE_ANY, 0, - fnct_GeometryType, 0, 0); - sqlite3_create_function (db, "ST_GeometryType", 1, SQLITE_ANY, 0, - fnct_GeometryType, 0, 0); - sqlite3_create_function (db, "GeometryAliasType", 1, SQLITE_ANY, 0, - fnct_GeometryAliasType, 0, 0); - sqlite3_create_function (db, "SridFromAuthCRS", 2, SQLITE_ANY, 0, - fnct_SridFromAuthCRS, 0, 0); - sqlite3_create_function (db, "SRID", 1, SQLITE_ANY, 0, fnct_SRID, 0, 0); - sqlite3_create_function (db, "ST_SRID", 1, SQLITE_ANY, 0, fnct_SRID, 0, 0); - sqlite3_create_function (db, "SetSRID", 2, SQLITE_ANY, 0, fnct_SetSRID, 0, - 0); - sqlite3_create_function (db, "IsEmpty", 1, SQLITE_ANY, 0, fnct_IsEmpty, 0, - 0); - sqlite3_create_function (db, "ST_IsEmpty", 1, SQLITE_ANY, 0, fnct_IsEmpty, - 0, 0); - sqlite3_create_function (db, "ST_Is3D", 1, SQLITE_ANY, 0, fnct_Is3D, 0, 0); - sqlite3_create_function (db, "ST_IsMeasured", 1, SQLITE_ANY, 0, - fnct_IsMeasured, 0, 0); - sqlite3_create_function (db, "Envelope", 1, SQLITE_ANY, 0, fnct_Envelope, 0, - 0); - sqlite3_create_function (db, "ST_Envelope", 1, SQLITE_ANY, 0, fnct_Envelope, - 0, 0); - sqlite3_create_function (db, "ST_Expand", 2, SQLITE_ANY, 0, fnct_Expand, 0, - 0); - sqlite3_create_function (db, "X", 1, SQLITE_ANY, 0, fnct_X, 0, 0); - sqlite3_create_function (db, "Y", 1, SQLITE_ANY, 0, fnct_Y, 0, 0); - sqlite3_create_function (db, "Z", 1, SQLITE_ANY, 0, fnct_Z, 0, 0); - sqlite3_create_function (db, "M", 1, SQLITE_ANY, 0, fnct_M, 0, 0); - sqlite3_create_function (db, "ST_X", 1, SQLITE_ANY, 0, fnct_X, 0, 0); - sqlite3_create_function (db, "ST_Y", 1, SQLITE_ANY, 0, fnct_Y, 0, 0); - sqlite3_create_function (db, "ST_Z", 1, SQLITE_ANY, 0, fnct_Z, 0, 0); - sqlite3_create_function (db, "ST_M", 1, SQLITE_ANY, 0, fnct_M, 0, 0); - sqlite3_create_function (db, "ST_MinX", 1, SQLITE_ANY, 0, fnct_MbrMinX, 0, - 0); - sqlite3_create_function (db, "ST_MinY", 1, SQLITE_ANY, 0, fnct_MbrMinY, 0, - 0); - sqlite3_create_function (db, "ST_MinZ", 1, SQLITE_ANY, 0, fnct_MinZ, 0, 0); - sqlite3_create_function (db, "ST_MinM", 1, SQLITE_ANY, 0, fnct_MinM, 0, 0); - sqlite3_create_function (db, "ST_MaxX", 1, SQLITE_ANY, 0, fnct_MbrMaxX, 0, - 0); - sqlite3_create_function (db, "ST_MaxY", 1, SQLITE_ANY, 0, fnct_MbrMaxY, 0, - 0); - sqlite3_create_function (db, "ST_MaxZ", 1, SQLITE_ANY, 0, fnct_MaxZ, 0, 0); - sqlite3_create_function (db, "ST_MaxM", 1, SQLITE_ANY, 0, fnct_MaxM, 0, 0); - sqlite3_create_function (db, "NumPoints", 1, SQLITE_ANY, 0, - fnct_NumPoints, 0, 0); - sqlite3_create_function (db, "ST_NumPoints", 1, SQLITE_ANY, 0, - fnct_NumPoints, 0, 0); - sqlite3_create_function (db, "StartPoint", 1, SQLITE_ANY, 0, - fnct_StartPoint, 0, 0); - sqlite3_create_function (db, "EndPoint", 1, SQLITE_ANY, 0, fnct_EndPoint, - 0, 0); - sqlite3_create_function (db, "ST_StartPoint", 1, SQLITE_ANY, 0, - fnct_StartPoint, 0, 0); - sqlite3_create_function (db, "ST_EndPoint", 1, SQLITE_ANY, 0, - fnct_EndPoint, 0, 0); - sqlite3_create_function (db, "PointN", 2, SQLITE_ANY, 0, fnct_PointN, 0, 0); - sqlite3_create_function (db, "ST_PointN", 2, SQLITE_ANY, 0, fnct_PointN, - 0, 0); - sqlite3_create_function (db, "ExteriorRing", 1, SQLITE_ANY, 0, - fnct_ExteriorRing, 0, 0); - sqlite3_create_function (db, "ST_ExteriorRing", 1, SQLITE_ANY, 0, - fnct_ExteriorRing, 0, 0); - sqlite3_create_function (db, "NumInteriorRing", 1, SQLITE_ANY, 0, - fnct_NumInteriorRings, 0, 0); - sqlite3_create_function (db, "NumInteriorRings", 1, SQLITE_ANY, 0, - fnct_NumInteriorRings, 0, 0); - sqlite3_create_function (db, "ST_NumInteriorRing", 1, SQLITE_ANY, 0, - fnct_NumInteriorRings, 0, 0); - sqlite3_create_function (db, "InteriorRingN", 2, SQLITE_ANY, 0, - fnct_InteriorRingN, 0, 0); - sqlite3_create_function (db, "ST_InteriorRingN", 2, SQLITE_ANY, 0, - fnct_InteriorRingN, 0, 0); - sqlite3_create_function (db, "NumGeometries", 1, SQLITE_ANY, 0, - fnct_NumGeometries, 0, 0); - sqlite3_create_function (db, "ST_NumGeometries", 1, SQLITE_ANY, 0, - fnct_NumGeometries, 0, 0); - sqlite3_create_function (db, "GeometryN", 2, SQLITE_ANY, 0, - fnct_GeometryN, 0, 0); - sqlite3_create_function (db, "ST_GeometryN", 2, SQLITE_ANY, 0, - fnct_GeometryN, 0, 0); - sqlite3_create_function (db, "MBRContains", 2, SQLITE_ANY, 0, - fnct_MbrContains, 0, 0); - sqlite3_create_function (db, "MbrDisjoint", 2, SQLITE_ANY, 0, - fnct_MbrDisjoint, 0, 0); - sqlite3_create_function (db, "MBREqual", 2, SQLITE_ANY, 0, fnct_MbrEqual, - 0, 0); - sqlite3_create_function (db, "MbrIntersects", 2, SQLITE_ANY, 0, - fnct_MbrIntersects, 0, 0); - sqlite3_create_function (db, "ST_EnvIntersects", 2, SQLITE_ANY, 0, - fnct_MbrIntersects, 0, 0); - sqlite3_create_function (db, "ST_EnvIntersects", 5, SQLITE_ANY, 0, - fnct_EnvIntersects, 0, 0); - sqlite3_create_function (db, "ST_EnvelopesIntersects", 2, SQLITE_ANY, 0, - fnct_MbrIntersects, 0, 0); - sqlite3_create_function (db, "ST_EnvelopesIntersects", 5, SQLITE_ANY, 0, - fnct_EnvIntersects, 0, 0); - sqlite3_create_function (db, "MBROverlaps", 2, SQLITE_ANY, 0, - fnct_MbrOverlaps, 0, 0); - sqlite3_create_function (db, "MbrTouches", 2, SQLITE_ANY, 0, - fnct_MbrTouches, 0, 0); - sqlite3_create_function (db, "MbrWithin", 2, SQLITE_ANY, 0, fnct_MbrWithin, - 0, 0); - sqlite3_create_function (db, "ShiftCoords", 3, SQLITE_ANY, 0, - fnct_ShiftCoords, 0, 0); - sqlite3_create_function (db, "ShiftCoordinates", 3, SQLITE_ANY, 0, - fnct_ShiftCoords, 0, 0); - sqlite3_create_function (db, "ST_Translate", 4, SQLITE_ANY, 0, - fnct_Translate, 0, 0); - sqlite3_create_function (db, "ST_Shift_Longitude", 1, SQLITE_ANY, 0, - fnct_ShiftLongitude, 0, 0); - sqlite3_create_function (db, "NormalizeLonLat", 1, SQLITE_ANY, 0, - fnct_NormalizeLonLat, 0, 0); - sqlite3_create_function (db, "ScaleCoords", 2, SQLITE_ANY, 0, - fnct_ScaleCoords, 0, 0); - sqlite3_create_function (db, "ScaleCoordinates", 2, SQLITE_ANY, 0, - fnct_ScaleCoords, 0, 0); - sqlite3_create_function (db, "ScaleCoords", 3, SQLITE_ANY, 0, - fnct_ScaleCoords, 0, 0); - sqlite3_create_function (db, "ScaleCoordinates", 3, SQLITE_ANY, 0, - fnct_ScaleCoords, 0, 0); - sqlite3_create_function (db, "RotateCoords", 2, SQLITE_ANY, 0, - fnct_RotateCoords, 0, 0); - sqlite3_create_function (db, "RotateCoordinates", 2, SQLITE_ANY, 0, - fnct_RotateCoords, 0, 0); - sqlite3_create_function (db, "ReflectCoords", 3, SQLITE_ANY, 0, - fnct_ReflectCoords, 0, 0); - sqlite3_create_function (db, "ReflectCoordinates", 3, SQLITE_ANY, 0, - fnct_ReflectCoords, 0, 0); - sqlite3_create_function (db, "SwapCoords", 1, SQLITE_ANY, 0, - fnct_SwapCoords, 0, 0); - sqlite3_create_function (db, "SwapCoordinates", 1, SQLITE_ANY, 0, - fnct_SwapCoords, 0, 0); - sqlite3_create_function (db, "BuildMbr", 4, SQLITE_ANY, 0, fnct_BuildMbr1, - 0, 0); - sqlite3_create_function (db, "BuildMbr", 5, SQLITE_ANY, 0, fnct_BuildMbr2, - 0, 0); - sqlite3_create_function (db, "BuildCircleMbr", 3, SQLITE_ANY, 0, - fnct_BuildCircleMbr1, 0, 0); - sqlite3_create_function (db, "BuildCircleMbr", 4, SQLITE_ANY, 0, - fnct_BuildCircleMbr2, 0, 0); - sqlite3_create_function (db, "Extent", 1, SQLITE_ANY, 0, 0, - fnct_Extent_step, fnct_Extent_final); - sqlite3_create_function (db, "MbrMinX", 1, SQLITE_ANY, 0, fnct_MbrMinX, 0, - 0); - sqlite3_create_function (db, "MbrMaxX", 1, SQLITE_ANY, 0, fnct_MbrMaxX, 0, - 0); - sqlite3_create_function (db, "MbrMinY", 1, SQLITE_ANY, 0, fnct_MbrMinY, 0, - 0); - sqlite3_create_function (db, "MbrMaxY", 1, SQLITE_ANY, 0, fnct_MbrMaxY, 0, - 0); - sqlite3_create_function (db, "MakePoint", 2, SQLITE_ANY, 0, fnct_MakePoint1, - 0, 0); - sqlite3_create_function (db, "MakePoint", 3, SQLITE_ANY, 0, fnct_MakePoint2, - 0, 0); - sqlite3_create_function (db, "MakePointZ", 3, SQLITE_ANY, 0, - fnct_MakePointZ1, 0, 0); - sqlite3_create_function (db, "MakePointZ", 4, SQLITE_ANY, 0, - fnct_MakePointZ2, 0, 0); - sqlite3_create_function (db, "MakePointM", 3, SQLITE_ANY, 0, - fnct_MakePointM1, 0, 0); - sqlite3_create_function (db, "MakePointM", 4, SQLITE_ANY, 0, - fnct_MakePointM2, 0, 0); - sqlite3_create_function (db, "MakePointZM", 4, SQLITE_ANY, 0, - fnct_MakePointZM1, 0, 0); - sqlite3_create_function (db, "MakePointZM", 5, SQLITE_ANY, 0, - fnct_MakePointZM2, 0, 0); - sqlite3_create_function (db, "MakeLine", 1, SQLITE_ANY, 0, 0, - fnct_MakeLine_step, fnct_MakeLine_final); - sqlite3_create_function (db, "MakeLine", 2, SQLITE_ANY, 0, fnct_MakeLine, 0, - 0); - sqlite3_create_function (db, "Collect", 1, SQLITE_ANY, 0, 0, - fnct_Collect_step, fnct_Collect_final); - sqlite3_create_function (db, "Collect", 2, SQLITE_ANY, 0, fnct_Collect, 0, - 0); - sqlite3_create_function (db, "ST_Collect", 1, SQLITE_ANY, 0, 0, - fnct_Collect_step, fnct_Collect_final); - sqlite3_create_function (db, "ST_Collect", 2, SQLITE_ANY, 0, fnct_Collect, - 0, 0); - sqlite3_create_function (db, "BuildMbrFilter", 4, SQLITE_ANY, 0, - fnct_BuildMbrFilter, 0, 0); - sqlite3_create_function (db, "FilterMbrWithin", 4, SQLITE_ANY, 0, - fnct_FilterMbrWithin, 0, 0); - sqlite3_create_function (db, "FilterMbrContains", 4, SQLITE_ANY, 0, - fnct_FilterMbrContains, 0, 0); - sqlite3_create_function (db, "FilterMbrIntersects", 4, SQLITE_ANY, 0, - fnct_FilterMbrIntersects, 0, 0); - sqlite3_create_function (db, "LinesFromRings", 1, SQLITE_ANY, 0, - fnct_LinesFromRings, 0, 0); - sqlite3_create_function (db, "ST_LinesFromRings", 1, SQLITE_ANY, 0, - fnct_LinesFromRings, 0, 0); - sqlite3_create_function (db, "LinesFromRings", 2, SQLITE_ANY, 0, - fnct_LinesFromRings, 0, 0); - sqlite3_create_function (db, "ST_LinesFromRings", 2, SQLITE_ANY, 0, - fnct_LinesFromRings, 0, 0); - sqlite3_create_function (db, "ST_NPoints", 1, SQLITE_ANY, 0, fnct_NPoints, - 0, 0); - sqlite3_create_function (db, "ST_nrings", 1, SQLITE_ANY, 0, fnct_NRings, 0, - 0); - sqlite3_create_function (db, "ToGARS", 1, SQLITE_ANY, 0, fnct_ToGARS, 0, 0); - sqlite3_create_function (db, "GARSMbr", 1, SQLITE_ANY, 0, fnct_GARSMbr, 0, - 0); - sqlite3_create_function (db, "SnapToGrid", 2, SQLITE_ANY, 0, - fnct_SnapToGrid, 0, 0); - sqlite3_create_function (db, "ST_SnapToGrid", 2, SQLITE_ANY, 0, - fnct_SnapToGrid, 0, 0); - sqlite3_create_function (db, "SnapToGrid", 3, SQLITE_ANY, 0, - fnct_SnapToGrid, 0, 0); - sqlite3_create_function (db, "ST_SnapToGrid", 3, SQLITE_ANY, 0, - fnct_SnapToGrid, 0, 0); - sqlite3_create_function (db, "SnapToGrid", 5, SQLITE_ANY, 0, - fnct_SnapToGrid, 0, 0); - sqlite3_create_function (db, "ST_SnapToGrid", 5, SQLITE_ANY, 0, - fnct_SnapToGrid, 0, 0); - sqlite3_create_function (db, "SnapToGrid", 6, SQLITE_ANY, 0, - fnct_SnapToGrid, 0, 0); - sqlite3_create_function (db, "ST_SnapToGrid", 6, SQLITE_ANY, 0, - fnct_SnapToGrid, 0, 0); - -#ifndef OMIT_GEOS /* including GEOS */ - sqlite3_create_function (db, "BuildArea", 1, SQLITE_ANY, 0, fnct_BuildArea, - 0, 0); - sqlite3_create_function (db, "ST_BuildArea", 1, SQLITE_ANY, 0, - fnct_BuildArea, 0, 0); - sqlite3_create_function (db, "Polygonize", 1, SQLITE_ANY, 0, 0, - fnct_Polygonize_step, fnct_Polygonize_final); - sqlite3_create_function (db, "ST_Polygonize", 1, SQLITE_ANY, 0, 0, - fnct_Polygonize_step, fnct_Polygonize_final); -#endif /* end including GEOS */ - - sqlite3_create_function (db, "DissolveSegments", 1, SQLITE_ANY, 0, - fnct_DissolveSegments, 0, 0); - sqlite3_create_function (db, "ST_DissolveSegments", 1, SQLITE_ANY, 0, - fnct_DissolveSegments, 0, 0); - sqlite3_create_function (db, "DissolvePoints", 1, SQLITE_ANY, 0, - fnct_DissolvePoints, 0, 0); - sqlite3_create_function (db, "ST_DissolvePoints", 1, SQLITE_ANY, 0, - fnct_DissolvePoints, 0, 0); - sqlite3_create_function (db, "CollectionExtract", 2, SQLITE_ANY, 0, - fnct_CollectionExtract, 0, 0); - sqlite3_create_function (db, "ST_CollectionExtract", 2, SQLITE_ANY, 0, - fnct_CollectionExtract, 0, 0); - sqlite3_create_function (db, "ST_Locate_Along_Measure", 2, SQLITE_ANY, 0, - fnct_LocateBetweenMeasures, 0, 0); - sqlite3_create_function (db, "ST_LocateAlong", 2, SQLITE_ANY, 0, - fnct_LocateBetweenMeasures, 0, 0); - sqlite3_create_function (db, "ST_Locate_Between_Measures", 3, SQLITE_ANY, 0, - fnct_LocateBetweenMeasures, 0, 0); - sqlite3_create_function (db, "ST_LocateBetween", 3, SQLITE_ANY, 0, - fnct_LocateBetweenMeasures, 0, 0); -#ifndef OMIT_GEOCALLBACKS /* supporting RTree geometry callbacks */ - sqlite3_rtree_geometry_callback (db, "RTreeWithin", fnct_RTreeIntersects, - 0); - sqlite3_rtree_geometry_callback (db, "RTreeContains", fnct_RTreeIntersects, - 0); - sqlite3_rtree_geometry_callback (db, "RTreeIntersects", - fnct_RTreeIntersects, 0); - sqlite3_rtree_geometry_callback (db, "RTreeDistWithin", - fnct_RTreeDistWithin, 0); -#endif /* end RTree geometry callbacks */ - -/* some BLOB/JPEG/EXIF functions */ - sqlite3_create_function (db, "IsGeometryBlob", 1, SQLITE_ANY, 0, - fnct_IsGeometryBlob, 0, 0); - sqlite3_create_function (db, "IsZipBlob", 1, SQLITE_ANY, 0, - fnct_IsZipBlob, 0, 0); - sqlite3_create_function (db, "IsPdfBlob", 1, SQLITE_ANY, 0, - fnct_IsPdfBlob, 0, 0); - sqlite3_create_function (db, "IsTiffBlob", 1, SQLITE_ANY, 0, - fnct_IsTiffBlob, 0, 0); - sqlite3_create_function (db, "IsGifBlob", 1, SQLITE_ANY, 0, - fnct_IsGifBlob, 0, 0); - sqlite3_create_function (db, "IsPngBlob", 1, SQLITE_ANY, 0, - fnct_IsPngBlob, 0, 0); - sqlite3_create_function (db, "IsJpegBlob", 1, SQLITE_ANY, 0, - fnct_IsJpegBlob, 0, 0); - sqlite3_create_function (db, "IsExifBlob", 1, SQLITE_ANY, 0, - fnct_IsExifBlob, 0, 0); - sqlite3_create_function (db, "IsExifGpsBlob", 1, SQLITE_ANY, 0, - fnct_IsExifGpsBlob, 0, 0); - sqlite3_create_function (db, "IsWebpBlob", 1, SQLITE_ANY, 0, - fnct_IsWebPBlob, 0, 0); - sqlite3_create_function (db, "GeomFromExifGpsBlob", 1, SQLITE_ANY, 0, - fnct_GeomFromExifGpsBlob, 0, 0); - -/* -// enabling BlobFromFile and BlobToFile -// -// this two functions could potentially introduce serious security issues, -// most notably when invoked from within some Trigger -// - BlobToFile: some arbitrary code, possibly harmfull (e.g. virus or -// trojan) could be installed on the local file-system, the user being -// completely unaware of this -// - BlobFromFile: some file could be maliciously "stolen" from the local -// file system and then inseted into the DB -// -// so by default both functions are disabled. -// if for any good/legitimate reason the user really wants to enable both -// them the following environment variable has to be explicitly declared: -// -// SPATIALITE_SECURITY=relaxed -// -*/ - security_level = getenv ("SPATIALITE_SECURITY"); - if (security_level == NULL) - ; - else if (strcasecmp (security_level, "relaxed") == 0) - { - sqlite3_create_function (db, "BlobFromFile", 1, SQLITE_ANY, 0, - fnct_BlobFromFile, 0, 0); - sqlite3_create_function (db, "BlobToFile", 2, SQLITE_ANY, 0, - fnct_BlobToFile, 0, 0); - } - -/* some Geodesic functions */ - sqlite3_create_function (db, "GreatCircleLength", 1, SQLITE_ANY, 0, - fnct_GreatCircleLength, 0, 0); - sqlite3_create_function (db, "GeodesicLength", 1, SQLITE_ANY, 0, - fnct_GeodesicLength, 0, 0); - -/* some Length Unit conversion functions */ - sqlite3_create_function (db, "CvtToKm", 1, SQLITE_ANY, 0, fnct_cvtToKm, 0, - 0); - sqlite3_create_function (db, "CvtToDm", 1, SQLITE_ANY, 0, fnct_cvtToDm, 0, - 0); - sqlite3_create_function (db, "CvtToCm", 1, SQLITE_ANY, 0, fnct_cvtToCm, 0, - 0); - sqlite3_create_function (db, "CvtToMm", 1, SQLITE_ANY, 0, fnct_cvtToMm, 0, - 0); - sqlite3_create_function (db, "CvtToKmi", 1, SQLITE_ANY, 0, fnct_cvtToKmi, - 0, 0); - sqlite3_create_function (db, "CvtToIn", 1, SQLITE_ANY, 0, fnct_cvtToIn, 0, - 0); - sqlite3_create_function (db, "CvtToFt", 1, SQLITE_ANY, 0, fnct_cvtToFt, 0, - 0); - sqlite3_create_function (db, "CvtToYd", 1, SQLITE_ANY, 0, fnct_cvtToYd, 0, - 0); - sqlite3_create_function (db, "CvtToMi", 1, SQLITE_ANY, 0, fnct_cvtToMi, 0, - 0); - sqlite3_create_function (db, "CvtToFath", 1, SQLITE_ANY, 0, - fnct_cvtToFath, 0, 0); - sqlite3_create_function (db, "CvtToCh", 1, SQLITE_ANY, 0, fnct_cvtToCh, 0, - 0); - sqlite3_create_function (db, "CvtToLink", 1, SQLITE_ANY, 0, - fnct_cvtToLink, 0, 0); - sqlite3_create_function (db, "CvtToUsIn", 1, SQLITE_ANY, 0, - fnct_cvtToUsIn, 0, 0); - sqlite3_create_function (db, "CvtToUsFt", 1, SQLITE_ANY, 0, - fnct_cvtToUsFt, 0, 0); - sqlite3_create_function (db, "CvtToUsYd", 1, SQLITE_ANY, 0, - fnct_cvtToUsYd, 0, 0); - sqlite3_create_function (db, "CvtToUsCh", 1, SQLITE_ANY, 0, - fnct_cvtToUsCh, 0, 0); - sqlite3_create_function (db, "CvtToUsMi", 1, SQLITE_ANY, 0, - fnct_cvtToUsMi, 0, 0); - sqlite3_create_function (db, "CvtToIndFt", 1, SQLITE_ANY, 0, - fnct_cvtToIndFt, 0, 0); - sqlite3_create_function (db, "CvtToIndYd", 1, SQLITE_ANY, 0, - fnct_cvtToIndYd, 0, 0); - sqlite3_create_function (db, "CvtToIndCh", 1, SQLITE_ANY, 0, - fnct_cvtToIndCh, 0, 0); - sqlite3_create_function (db, "CvtFromKm", 1, SQLITE_ANY, 0, - fnct_cvtFromKm, 0, 0); - sqlite3_create_function (db, "CvtFromDm", 1, SQLITE_ANY, 0, - fnct_cvtFromDm, 0, 0); - sqlite3_create_function (db, "CvtFromCm", 1, SQLITE_ANY, 0, - fnct_cvtFromCm, 0, 0); - sqlite3_create_function (db, "CvtFromMm", 1, SQLITE_ANY, 0, - fnct_cvtFromMm, 0, 0); - sqlite3_create_function (db, "CvtFromKmi", 1, SQLITE_ANY, 0, - fnct_cvtFromKmi, 0, 0); - sqlite3_create_function (db, "CvtFromIn", 1, SQLITE_ANY, 0, - fnct_cvtFromIn, 0, 0); - sqlite3_create_function (db, "CvtFromFt", 1, SQLITE_ANY, 0, - fnct_cvtFromFt, 0, 0); - sqlite3_create_function (db, "CvtFromYd", 1, SQLITE_ANY, 0, - fnct_cvtFromYd, 0, 0); - sqlite3_create_function (db, "CvtFromMi", 1, SQLITE_ANY, 0, - fnct_cvtFromMi, 0, 0); - sqlite3_create_function (db, "CvtFromFath", 1, SQLITE_ANY, 0, - fnct_cvtFromFath, 0, 0); - sqlite3_create_function (db, "CvtFromCh", 1, SQLITE_ANY, 0, - fnct_cvtFromCh, 0, 0); - sqlite3_create_function (db, "CvtFromLink", 1, SQLITE_ANY, 0, - fnct_cvtFromLink, 0, 0); - sqlite3_create_function (db, "CvtFromUsIn", 1, SQLITE_ANY, 0, - fnct_cvtFromUsIn, 0, 0); - sqlite3_create_function (db, "CvtFromUsFt", 1, SQLITE_ANY, 0, - fnct_cvtFromUsFt, 0, 0); - sqlite3_create_function (db, "CvtFromUsYd", 1, SQLITE_ANY, 0, - fnct_cvtFromUsYd, 0, 0); - sqlite3_create_function (db, "CvtFromUsCh", 1, SQLITE_ANY, 0, - fnct_cvtFromUsCh, 0, 0); - sqlite3_create_function (db, "CvtFromUsMi", 1, SQLITE_ANY, 0, - fnct_cvtFromUsMi, 0, 0); - sqlite3_create_function (db, "CvtFromIndFt", 1, SQLITE_ANY, 0, - fnct_cvtFromIndFt, 0, 0); - sqlite3_create_function (db, "CvtFromIndYd", 1, SQLITE_ANY, 0, - fnct_cvtFromIndYd, 0, 0); - sqlite3_create_function (db, "CvtFromIndCh", 1, SQLITE_ANY, 0, - fnct_cvtFromIndCh, 0, 0); - -#ifndef OMIT_MATHSQL /* supporting SQL math functions */ - -/* some extra math functions */ - sqlite3_create_function (db, "acos", 1, SQLITE_ANY, 0, fnct_math_acos, 0, - 0); - sqlite3_create_function (db, "asin", 1, SQLITE_ANY, 0, fnct_math_asin, 0, - 0); - sqlite3_create_function (db, "atan", 1, SQLITE_ANY, 0, fnct_math_atan, 0, - 0); - sqlite3_create_function (db, "ceil", 1, SQLITE_ANY, 0, fnct_math_ceil, 0, - 0); - sqlite3_create_function (db, "ceiling", 1, SQLITE_ANY, 0, fnct_math_ceil, - 0, 0); - sqlite3_create_function (db, "cos", 1, SQLITE_ANY, 0, fnct_math_cos, 0, 0); - sqlite3_create_function (db, "cot", 1, SQLITE_ANY, 0, fnct_math_cot, 0, 0); - sqlite3_create_function (db, "degrees", 1, SQLITE_ANY, 0, - fnct_math_degrees, 0, 0); - sqlite3_create_function (db, "exp", 1, SQLITE_ANY, 0, fnct_math_exp, 0, 0); - sqlite3_create_function (db, "floor", 1, SQLITE_ANY, 0, fnct_math_floor, - 0, 0); - sqlite3_create_function (db, "ln", 1, SQLITE_ANY, 0, fnct_math_logn, 0, 0); - sqlite3_create_function (db, "log", 1, SQLITE_ANY, 0, fnct_math_logn, 0, 0); - sqlite3_create_function (db, "log", 2, SQLITE_ANY, 0, fnct_math_logn2, 0, - 0); - sqlite3_create_function (db, "log2", 1, SQLITE_ANY, 0, fnct_math_log_2, 0, - 0); - sqlite3_create_function (db, "log10", 1, SQLITE_ANY, 0, fnct_math_log_10, - 0, 0); - sqlite3_create_function (db, "pi", 0, SQLITE_ANY, 0, fnct_math_pi, 0, 0); - sqlite3_create_function (db, "pow", 2, SQLITE_ANY, 0, fnct_math_pow, 0, 0); - sqlite3_create_function (db, "power", 2, SQLITE_ANY, 0, fnct_math_pow, 0, - 0); - sqlite3_create_function (db, "radians", 1, SQLITE_ANY, 0, - fnct_math_radians, 0, 0); - sqlite3_create_function (db, "round", 1, SQLITE_ANY, 0, fnct_math_round, - 0, 0); - sqlite3_create_function (db, "sign", 1, SQLITE_ANY, 0, fnct_math_sign, 0, - 0); - sqlite3_create_function (db, "sin", 1, SQLITE_ANY, 0, fnct_math_sin, 0, 0); - sqlite3_create_function (db, "stddev_pop", 1, SQLITE_ANY, 0, 0, - fnct_math_stddev_step, fnct_math_stddev_pop_final); - sqlite3_create_function (db, "stddev_samp", 1, SQLITE_ANY, 0, 0, - fnct_math_stddev_step, - fnct_math_stddev_samp_final); - sqlite3_create_function (db, "sqrt", 1, SQLITE_ANY, 0, fnct_math_sqrt, 0, - 0); - sqlite3_create_function (db, "tan", 1, SQLITE_ANY, 0, fnct_math_tan, 0, 0); - sqlite3_create_function (db, "var_pop", 1, SQLITE_ANY, 0, 0, - fnct_math_stddev_step, fnct_math_var_pop_final); - sqlite3_create_function (db, "var_samp", 1, SQLITE_ANY, 0, 0, - fnct_math_stddev_step, fnct_math_var_samp_final); - -#endif /* end supporting SQL math functions */ - -#ifndef OMIT_PROJ /* including PROJ.4 */ - - sqlite3_create_function (db, "Transform", 2, SQLITE_ANY, 0, - fnct_Transform, 0, 0); - sqlite3_create_function (db, "ST_Transform", 2, SQLITE_ANY, 0, - fnct_Transform, 0, 0); - -#endif /* end including PROJ.4 */ - -#ifndef OMIT_GEOS /* including GEOS */ - - sqlite3_create_function (db, "Boundary", 1, SQLITE_ANY, 0, fnct_Boundary, - 0, 0); - sqlite3_create_function (db, "ST_Boundary", 1, SQLITE_ANY, 0, - fnct_Boundary, 0, 0); - sqlite3_create_function (db, "IsClosed", 1, SQLITE_ANY, 0, fnct_IsClosed, - 0, 0); - sqlite3_create_function (db, "ST_IsClosed", 1, SQLITE_ANY, 0, - fnct_IsClosed, 0, 0); - sqlite3_create_function (db, "IsSimple", 1, SQLITE_ANY, 0, fnct_IsSimple, - 0, 0); - sqlite3_create_function (db, "ST_IsSimple", 1, SQLITE_ANY, 0, - fnct_IsSimple, 0, 0); - sqlite3_create_function (db, "IsRing", 1, SQLITE_ANY, 0, fnct_IsRing, 0, 0); - sqlite3_create_function (db, "ST_IsRing", 1, SQLITE_ANY, 0, fnct_IsRing, - 0, 0); - sqlite3_create_function (db, "IsValid", 1, SQLITE_ANY, 0, fnct_IsValid, 0, - 0); - sqlite3_create_function (db, "ST_IsValid", 1, SQLITE_ANY, 0, fnct_IsValid, - 0, 0); - sqlite3_create_function (db, "GLength", 1, SQLITE_ANY, 0, fnct_Length, 0, - 0); - sqlite3_create_function (db, "GLength", 2, SQLITE_ANY, 0, fnct_Length, 0, - 0); - sqlite3_create_function (db, "ST_Length", 1, SQLITE_ANY, 0, fnct_Length, - 0, 0); - sqlite3_create_function (db, "ST_Length", 2, SQLITE_ANY, 0, fnct_Length, - 0, 0); - sqlite3_create_function (db, "Perimeter", 1, SQLITE_ANY, 0, fnct_Perimeter, - 0, 0); - sqlite3_create_function (db, "Perimeter", 2, SQLITE_ANY, 0, fnct_Perimeter, - 0, 0); - sqlite3_create_function (db, "ST_Perimeter", 1, SQLITE_ANY, 0, - fnct_Perimeter, 0, 0); - sqlite3_create_function (db, "ST_Perimeter", 2, SQLITE_ANY, 0, - fnct_Perimeter, 0, 0); - sqlite3_create_function (db, "Area", 1, SQLITE_ANY, 0, fnct_Area, 0, 0); - sqlite3_create_function (db, "ST_Area", 1, SQLITE_ANY, 0, fnct_Area, 0, 0); - sqlite3_create_function (db, "Centroid", 1, SQLITE_ANY, 0, fnct_Centroid, - 0, 0); - sqlite3_create_function (db, "ST_Centroid", 1, SQLITE_ANY, 0, - fnct_Centroid, 0, 0); - sqlite3_create_function (db, "PointOnSurface", 1, SQLITE_ANY, 0, - fnct_PointOnSurface, 0, 0); - sqlite3_create_function (db, "ST_PointOnSurface", 1, SQLITE_ANY, 0, - fnct_PointOnSurface, 0, 0); - sqlite3_create_function (db, "Simplify", 2, SQLITE_ANY, 0, fnct_Simplify, - 0, 0); - sqlite3_create_function (db, "ST_Generalize", 2, SQLITE_ANY, 0, - fnct_Simplify, 0, 0); - sqlite3_create_function (db, "SimplifyPreserveTopology", 2, SQLITE_ANY, 0, - fnct_SimplifyPreserveTopology, 0, 0); - sqlite3_create_function (db, "ConvexHull", 1, SQLITE_ANY, 0, - fnct_ConvexHull, 0, 0); - sqlite3_create_function (db, "ST_ConvexHull", 1, SQLITE_ANY, 0, - fnct_ConvexHull, 0, 0); - sqlite3_create_function (db, "Buffer", 2, SQLITE_ANY, 0, fnct_Buffer, 0, 0); - sqlite3_create_function (db, "ST_Buffer", 2, SQLITE_ANY, 0, fnct_Buffer, - 0, 0); - sqlite3_create_function (db, "Intersection", 2, SQLITE_ANY, 0, - fnct_Intersection, 0, 0); - sqlite3_create_function (db, "ST_Intersection", 2, SQLITE_ANY, 0, - fnct_Intersection, 0, 0); - sqlite3_create_function (db, "GUnion", 1, SQLITE_ANY, 0, 0, - fnct_Union_step, fnct_Union_final); - sqlite3_create_function (db, "GUnion", 2, SQLITE_ANY, 0, fnct_Union, 0, 0); - sqlite3_create_function (db, "ST_Union", 1, SQLITE_ANY, 0, 0, - fnct_Union_step, fnct_Union_final); - sqlite3_create_function (db, "ST_Union", 2, SQLITE_ANY, 0, fnct_Union, 0, - 0); - sqlite3_create_function (db, "Difference", 2, SQLITE_ANY, 0, - fnct_Difference, 0, 0); - sqlite3_create_function (db, "ST_Difference", 2, SQLITE_ANY, 0, - fnct_Difference, 0, 0); - sqlite3_create_function (db, "SymDifference", 2, SQLITE_ANY, 0, - fnct_SymDifference, 0, 0); - sqlite3_create_function (db, "ST_SymDifference", 2, SQLITE_ANY, 0, - fnct_SymDifference, 0, 0); - sqlite3_create_function (db, "Equals", 2, SQLITE_ANY, 0, fnct_Equals, 0, 0); - sqlite3_create_function (db, "ST_Equals", 2, SQLITE_ANY, 0, fnct_Equals, - 0, 0); - sqlite3_create_function (db, "Intersects", 2, SQLITE_ANY, 0, - fnct_Intersects, 0, 0); - sqlite3_create_function (db, "ST_Intersects", 2, SQLITE_ANY, 0, - fnct_Intersects, 0, 0); - sqlite3_create_function (db, "Disjoint", 2, SQLITE_ANY, 0, fnct_Disjoint, - 0, 0); - sqlite3_create_function (db, "ST_Disjoint", 2, SQLITE_ANY, 0, - fnct_Disjoint, 0, 0); - sqlite3_create_function (db, "Overlaps", 2, SQLITE_ANY, 0, fnct_Overlaps, - 0, 0); - sqlite3_create_function (db, "ST_Overlaps", 2, SQLITE_ANY, 0, - fnct_Overlaps, 0, 0); - sqlite3_create_function (db, "Crosses", 2, SQLITE_ANY, 0, fnct_Crosses, 0, - 0); - sqlite3_create_function (db, "ST_Crosses", 2, SQLITE_ANY, 0, fnct_Crosses, - 0, 0); - sqlite3_create_function (db, "Touches", 2, SQLITE_ANY, 0, fnct_Touches, 0, - 0); - sqlite3_create_function (db, "ST_Touches", 2, SQLITE_ANY, 0, fnct_Touches, - 0, 0); - sqlite3_create_function (db, "Within", 2, SQLITE_ANY, 0, fnct_Within, 0, 0); - sqlite3_create_function (db, "ST_Within", 2, SQLITE_ANY, 0, fnct_Within, - 0, 0); - sqlite3_create_function (db, "Contains", 2, SQLITE_ANY, 0, fnct_Contains, - 0, 0); - sqlite3_create_function (db, "ST_Contains", 2, SQLITE_ANY, 0, - fnct_Contains, 0, 0); - sqlite3_create_function (db, "Relate", 3, SQLITE_ANY, 0, fnct_Relate, 0, 0); - sqlite3_create_function (db, "ST_Relate", 3, SQLITE_ANY, 0, fnct_Relate, - 0, 0); - sqlite3_create_function (db, "Distance", 2, SQLITE_ANY, 0, fnct_Distance, - 0, 0); - sqlite3_create_function (db, "Distance", 3, SQLITE_ANY, 0, fnct_Distance, - 0, 0); - sqlite3_create_function (db, "ST_Distance", 2, SQLITE_ANY, 0, - fnct_Distance, 0, 0); - sqlite3_create_function (db, "ST_Distance", 3, SQLITE_ANY, 0, - fnct_Distance, 0, 0); - sqlite3_create_function (db, "PtDistWithin", 3, SQLITE_ANY, 0, - fnct_PtDistWithin, 0, 0); - sqlite3_create_function (db, "PtDistWithin", 4, SQLITE_ANY, 0, - fnct_PtDistWithin, 0, 0); - sqlite3_create_function (db, "BdPolyFromText", 1, SQLITE_ANY, 0, - fnct_BdPolyFromText1, 0, 0); - sqlite3_create_function (db, "BdPolyFromText", 2, SQLITE_ANY, 0, - fnct_BdPolyFromText2, 0, 0); - sqlite3_create_function (db, "BdMPolyFromText", 1, SQLITE_ANY, 0, - fnct_BdMPolyFromText1, 0, 0); - sqlite3_create_function (db, "BdMPolyFromText", 2, SQLITE_ANY, 0, - fnct_BdMPolyFromText2, 0, 0); - sqlite3_create_function (db, "BdPolyFromWKB", 1, SQLITE_ANY, 0, - fnct_BdPolyFromWKB1, 0, 0); - sqlite3_create_function (db, "BdPolyFromWKB", 2, SQLITE_ANY, 0, - fnct_BdPolyFromWKB2, 0, 0); - sqlite3_create_function (db, "BdMPolyFromWKB", 1, SQLITE_ANY, 0, - fnct_BdMPolyFromWKB1, 0, 0); - sqlite3_create_function (db, "BdMPolyFromWKB", 2, SQLITE_ANY, 0, - fnct_BdMPolyFromWKB2, 0, 0); - sqlite3_create_function (db, "ST_BdPolyFromText", 1, SQLITE_ANY, 0, - fnct_BdPolyFromText1, 0, 0); - sqlite3_create_function (db, "ST_BdPolyFromText", 2, SQLITE_ANY, 0, - fnct_BdPolyFromText2, 0, 0); - sqlite3_create_function (db, "ST_BdMPolyFromText", 1, SQLITE_ANY, 0, - fnct_BdMPolyFromText1, 0, 0); - sqlite3_create_function (db, "ST_BdMPolyFromText", 2, SQLITE_ANY, 0, - fnct_BdMPolyFromText2, 0, 0); - sqlite3_create_function (db, "ST_BdPolyFromWKB", 1, SQLITE_ANY, 0, - fnct_BdPolyFromWKB1, 0, 0); - sqlite3_create_function (db, "ST_BdPolyFromWKB", 2, SQLITE_ANY, 0, - fnct_BdPolyFromWKB2, 0, 0); - sqlite3_create_function (db, "ST_BdMPolyFromWKB", 1, SQLITE_ANY, 0, - fnct_BdMPolyFromWKB1, 0, 0); - sqlite3_create_function (db, "ST_BdMPolyFromWKB", 2, SQLITE_ANY, 0, - fnct_BdMPolyFromWKB2, 0, 0); - -#ifdef GEOS_ADVANCED /* GEOS advanced features */ - - sqlite3_create_function (db, "CreateTopologyTables", 2, SQLITE_ANY, 0, - fnct_CreateTopologyTables, 0, 0); - sqlite3_create_function (db, "CreateTopologyTables", 3, SQLITE_ANY, 0, - fnct_CreateTopologyTables, 0, 0); - sqlite3_create_function (db, "OffsetCurve", 3, SQLITE_ANY, 0, - fnct_OffsetCurve, 0, 0); - sqlite3_create_function (db, "ST_OffsetCurve", 3, SQLITE_ANY, 0, - fnct_OffsetCurve, 0, 0); - sqlite3_create_function (db, "SingleSidedBuffer", 3, SQLITE_ANY, 0, - fnct_SingleSidedBuffer, 0, 0); - sqlite3_create_function (db, "ST_SingleSidedBuffer", 3, SQLITE_ANY, 0, - fnct_SingleSidedBuffer, 0, 0); - sqlite3_create_function (db, "HausdorffDistance", 2, SQLITE_ANY, 0, - fnct_HausdorffDistance, 0, 0); - sqlite3_create_function (db, "ST_HausdorffDistance", 2, SQLITE_ANY, 0, - fnct_HausdorffDistance, 0, 0); - sqlite3_create_function (db, "SharedPaths", 2, SQLITE_ANY, 0, - fnct_SharedPaths, 0, 0); - sqlite3_create_function (db, "ST_SharedPaths", 2, SQLITE_ANY, 0, - fnct_SharedPaths, 0, 0); - sqlite3_create_function (db, "Covers", 2, SQLITE_ANY, 0, fnct_Covers, 0, 0); - sqlite3_create_function (db, "ST_Covers", 2, SQLITE_ANY, 0, fnct_Covers, 0, - 0); - sqlite3_create_function (db, "CoveredBy", 2, SQLITE_ANY, 0, fnct_CoveredBy, - 0, 0); - sqlite3_create_function (db, "ST_CoveredBy", 2, SQLITE_ANY, 0, - fnct_CoveredBy, 0, 0); - sqlite3_create_function (db, "Line_Interpolate_Point", 2, SQLITE_ANY, 0, - fnct_LineInterpolatePoint, 0, 0); - sqlite3_create_function (db, "ST_Line_Interpolate_Point", 2, SQLITE_ANY, 0, - fnct_LineInterpolatePoint, 0, 0); - sqlite3_create_function (db, "Line_Interpolate_Equidistant_Points", 2, - SQLITE_ANY, 0, - fnct_LineInterpolateEquidistantPoints, 0, 0); - sqlite3_create_function (db, "ST_Line_Interpolate_Equidistant_Points", 2, - SQLITE_ANY, 0, - fnct_LineInterpolateEquidistantPoints, 0, 0); - sqlite3_create_function (db, "Line_Locate_Point", 2, SQLITE_ANY, 0, - fnct_LineLocatePoint, 0, 0); - sqlite3_create_function (db, "ST_Line_Locate_Point", 2, SQLITE_ANY, 0, - fnct_LineLocatePoint, 0, 0); - sqlite3_create_function (db, "Line_Substring", 3, SQLITE_ANY, 0, - fnct_LineSubstring, 0, 0); - sqlite3_create_function (db, "ST_Line_Substring", 3, SQLITE_ANY, 0, - fnct_LineSubstring, 0, 0); - sqlite3_create_function (db, "ClosestPoint", 2, SQLITE_ANY, 0, - fnct_ClosestPoint, 0, 0); - sqlite3_create_function (db, "ST_ClosestPoint", 2, SQLITE_ANY, 0, - fnct_ClosestPoint, 0, 0); - sqlite3_create_function (db, "ShortestLine", 2, SQLITE_ANY, 0, - fnct_ShortestLine, 0, 0); - sqlite3_create_function (db, "ST_ShortestLine", 2, SQLITE_ANY, 0, - fnct_ShortestLine, 0, 0); - sqlite3_create_function (db, "Snap", 3, SQLITE_ANY, 0, fnct_Snap, 0, 0); - sqlite3_create_function (db, "ST_Snap", 3, SQLITE_ANY, 0, fnct_Snap, 0, 0); - sqlite3_create_function (db, "LineMerge", 1, SQLITE_ANY, 0, - fnct_LineMerge, 0, 0); - sqlite3_create_function (db, "ST_LineMerge", 1, SQLITE_ANY, 0, - fnct_LineMerge, 0, 0); - sqlite3_create_function (db, "UnaryUnion", 1, SQLITE_ANY, 0, - fnct_UnaryUnion, 0, 0); - sqlite3_create_function (db, "ST_UnaryUnion", 1, SQLITE_ANY, 0, - fnct_UnaryUnion, 0, 0); - sqlite3_create_function (db, "SquareGrid", 2, SQLITE_ANY, 0, - fnct_SquareGrid, 0, 0); - sqlite3_create_function (db, "SquareGrid", 3, SQLITE_ANY, 0, - fnct_SquareGrid, 0, 0); - sqlite3_create_function (db, "SquareGrid", 4, SQLITE_ANY, 0, - fnct_SquareGrid, 0, 0); - sqlite3_create_function (db, "ST_SquareGrid", 2, SQLITE_ANY, 0, - fnct_SquareGrid, 0, 0); - sqlite3_create_function (db, "ST_SquareGrid", 3, SQLITE_ANY, 0, - fnct_SquareGrid, 0, 0); - sqlite3_create_function (db, "ST_SquareGrid", 4, SQLITE_ANY, 0, - fnct_SquareGrid, 0, 0); - sqlite3_create_function (db, "TriangularGrid", 2, SQLITE_ANY, 0, - fnct_TriangularGrid, 0, 0); - sqlite3_create_function (db, "TriangularGrid", 3, SQLITE_ANY, 0, - fnct_TriangularGrid, 0, 0); - sqlite3_create_function (db, "TriangularGrid", 4, SQLITE_ANY, 0, - fnct_TriangularGrid, 0, 0); - sqlite3_create_function (db, "ST_TriangularGrid", 2, SQLITE_ANY, 0, - fnct_TriangularGrid, 0, 0); - sqlite3_create_function (db, "ST_TriangularGrid", 3, SQLITE_ANY, 0, - fnct_TriangularGrid, 0, 0); - sqlite3_create_function (db, "ST_TriangularGrid", 4, SQLITE_ANY, 0, - fnct_TriangularGrid, 0, 0); - sqlite3_create_function (db, "HexagonalGrid", 2, SQLITE_ANY, 0, - fnct_HexagonalGrid, 0, 0); - sqlite3_create_function (db, "HexagonalGrid", 3, SQLITE_ANY, 0, - fnct_HexagonalGrid, 0, 0); - sqlite3_create_function (db, "HexagonalGrid", 4, SQLITE_ANY, 0, - fnct_HexagonalGrid, 0, 0); - sqlite3_create_function (db, "ST_HexagonalGrid", 2, SQLITE_ANY, 0, - fnct_HexagonalGrid, 0, 0); - sqlite3_create_function (db, "ST_HexagonalGrid", 3, SQLITE_ANY, 0, - fnct_HexagonalGrid, 0, 0); - sqlite3_create_function (db, "ST_HexagonalGrid", 4, SQLITE_ANY, 0, - fnct_HexagonalGrid, 0, 0); - sqlite3_create_function (db, "LinesCutAtNodes", 2, SQLITE_ANY, 0, - fnct_LinesCutAtNodes, 0, 0); - sqlite3_create_function (db, "ST_LinesCutAtNodes", 2, SQLITE_ANY, 0, - fnct_LinesCutAtNodes, 0, 0); - sqlite3_create_function (db, "RingsCutAtNodes", 1, SQLITE_ANY, 0, - fnct_RingsCutAtNodes, 0, 0); - sqlite3_create_function (db, "ST_RingsCutAtNodes", 1, SQLITE_ANY, 0, - fnct_RingsCutAtNodes, 0, 0); - -#endif /* end GEOS advanced features */ - -#ifdef GEOS_TRUNK /* GEOS experimental features */ - - sqlite3_create_function (db, "DelaunayTriangulation", 1, SQLITE_ANY, 0, - fnct_DelaunayTriangulation, 0, 0); - sqlite3_create_function (db, "DelaunayTriangulation", 2, SQLITE_ANY, 0, - fnct_DelaunayTriangulation, 0, 0); - sqlite3_create_function (db, "DelaunayTriangulation", 3, SQLITE_ANY, 0, - fnct_DelaunayTriangulation, 0, 0); - sqlite3_create_function (db, "ST_DelaunayTriangulation", 1, SQLITE_ANY, 0, - fnct_DelaunayTriangulation, 0, 0); - sqlite3_create_function (db, "ST_DelaunayTriangulation", 2, SQLITE_ANY, 0, - fnct_DelaunayTriangulation, 0, 0); - sqlite3_create_function (db, "ST_DelaunayTriangulation", 3, SQLITE_ANY, 0, - fnct_DelaunayTriangulation, 0, 0); - sqlite3_create_function (db, "VoronojDiagram", 1, SQLITE_ANY, 0, - fnct_VoronojDiagram, 0, 0); - sqlite3_create_function (db, "VoronojDiagram", 2, SQLITE_ANY, 0, - fnct_VoronojDiagram, 0, 0); - sqlite3_create_function (db, "VoronojDiagram", 3, SQLITE_ANY, 0, - fnct_VoronojDiagram, 0, 0); - sqlite3_create_function (db, "VoronojDiagram", 4, SQLITE_ANY, 0, - fnct_VoronojDiagram, 0, 0); - sqlite3_create_function (db, "ST_VoronojDiagram", 1, SQLITE_ANY, 0, - fnct_VoronojDiagram, 0, 0); - sqlite3_create_function (db, "ST_VoronojDiagram", 2, SQLITE_ANY, 0, - fnct_VoronojDiagram, 0, 0); - sqlite3_create_function (db, "ST_VoronojDiagram", 3, SQLITE_ANY, 0, - fnct_VoronojDiagram, 0, 0); - sqlite3_create_function (db, "ST_VoronojDiagram", 4, SQLITE_ANY, 0, - fnct_VoronojDiagram, 0, 0); - sqlite3_create_function (db, "ConcaveHull", 1, SQLITE_ANY, 0, - fnct_ConcaveHull, 0, 0); - sqlite3_create_function (db, "ConcaveHull", 2, SQLITE_ANY, 0, - fnct_ConcaveHull, 0, 0); - sqlite3_create_function (db, "ConcaveHull", 3, SQLITE_ANY, 0, - fnct_ConcaveHull, 0, 0); - sqlite3_create_function (db, "ConcaveHull", 4, SQLITE_ANY, 0, - fnct_ConcaveHull, 0, 0); - sqlite3_create_function (db, "ST_ConcaveHull", 1, SQLITE_ANY, 0, - fnct_ConcaveHull, 0, 0); - sqlite3_create_function (db, "ST_ConcaveHull", 2, SQLITE_ANY, 0, - fnct_ConcaveHull, 0, 0); - sqlite3_create_function (db, "ST_ConcaveHull", 3, SQLITE_ANY, 0, - fnct_ConcaveHull, 0, 0); - sqlite3_create_function (db, "ST_ConcaveHull", 4, SQLITE_ANY, 0, - fnct_ConcaveHull, 0, 0); - -#endif /* end GEOS experimental features */ - -#ifdef ENABLE_LWGEOM /* enabling LWGEOM support */ - - sqlite3_create_function (db, "MakeValid", 1, SQLITE_ANY, 0, - fnct_MakeValid, 0, 0); - sqlite3_create_function (db, "ST_MakeValid", 1, SQLITE_ANY, 0, - fnct_MakeValid, 0, 0); - sqlite3_create_function (db, "MakeValidDiscarded", 1, SQLITE_ANY, 0, - fnct_MakeValidDiscarded, 0, 0); - sqlite3_create_function (db, "ST_MakeValidDiscarded", 1, SQLITE_ANY, 0, - fnct_MakeValidDiscarded, 0, 0); - sqlite3_create_function (db, "Segmentize", 2, SQLITE_ANY, 0, - fnct_Segmentize, 0, 0); - sqlite3_create_function (db, "ST_Segmentize", 2, SQLITE_ANY, 0, - fnct_Segmentize, 0, 0); - sqlite3_create_function (db, "Azimuth", 2, SQLITE_ANY, 0, fnct_Azimuth, 0, - 0); - sqlite3_create_function (db, "ST_Azimuth", 2, SQLITE_ANY, 0, fnct_Azimuth, - 0, 0); - sqlite3_create_function (db, "GeoHash", 1, SQLITE_ANY, 0, fnct_GeoHash, 0, - 0); - sqlite3_create_function (db, "GeoHash", 2, SQLITE_ANY, 0, fnct_GeoHash, 0, - 0); - sqlite3_create_function (db, "ST_GeoHash", 1, SQLITE_ANY, 0, fnct_GeoHash, - 0, 0); - sqlite3_create_function (db, "ST_GeoHash", 2, SQLITE_ANY, 0, fnct_GeoHash, - 0, 0); - sqlite3_create_function (db, "AsX3D", 1, SQLITE_ANY, 0, fnct_AsX3D, 0, 0); - sqlite3_create_function (db, "AsX3D", 2, SQLITE_ANY, 0, fnct_AsX3D, 0, 0); - sqlite3_create_function (db, "AsX3D", 3, SQLITE_ANY, 0, fnct_AsX3D, 0, 0); - sqlite3_create_function (db, "AsX3D", 4, SQLITE_ANY, 0, fnct_AsX3D, 0, 0); - sqlite3_create_function (db, "ST_AsX3D", 1, SQLITE_ANY, 0, fnct_AsX3D, - 0, 0); - sqlite3_create_function (db, "ST_AsX3D", 2, SQLITE_ANY, 0, fnct_AsX3D, - 0, 0); - sqlite3_create_function (db, "ST_AsX3D", 3, SQLITE_ANY, 0, fnct_AsX3D, - 0, 0); - sqlite3_create_function (db, "ST_AsX3D", 4, SQLITE_ANY, 0, fnct_AsX3D, - 0, 0); - sqlite3_create_function (db, "ST_3DDistance", 2, SQLITE_ANY, 0, - fnct_3DDistance, 0, 0); - sqlite3_create_function (db, "MaxDistance", 2, SQLITE_ANY, 0, - fnct_MaxDistance, 0, 0); - sqlite3_create_function (db, "ST_MaxDistance", 2, SQLITE_ANY, 0, - fnct_MaxDistance, 0, 0); - sqlite3_create_function (db, "ST_3DMaxDistance", 2, SQLITE_ANY, 0, - fnct_3DMaxDistance, 0, 0); - sqlite3_create_function (db, "Split", 2, SQLITE_ANY, 0, fnct_Split, 0, 0); - sqlite3_create_function (db, "ST_Split", 2, SQLITE_ANY, 0, fnct_Split, - 0, 0); - sqlite3_create_function (db, "SplitLeft", 2, SQLITE_ANY, 0, fnct_SplitLeft, - 0, 0); - sqlite3_create_function (db, "ST_SplitLeft", 2, SQLITE_ANY, 0, - fnct_SplitLeft, 0, 0); - sqlite3_create_function (db, "SplitRight", 2, SQLITE_ANY, 0, - fnct_SplitRight, 0, 0); - sqlite3_create_function (db, "ST_SplitRight", 2, SQLITE_ANY, 0, - fnct_SplitRight, 0, 0); - -#endif /* end LWGEOM support */ - -#endif /* end including GEOS */ -} - -static void -init_spatialite_virtualtables (sqlite3 * db) -{ -#ifndef OMIT_ICONV /* when ICONV is disabled SHP/DBF/TXT cannot be supported */ -/* initializing the VirtualShape extension */ - virtualshape_extension_init (db); -/* initializing the VirtualDbf extension */ - virtualdbf_extension_init (db); -/* initializing the VirtualText extension */ - virtualtext_extension_init (db); -#ifndef OMIT_FREEXL -/* initializing the VirtualXL extension */ - virtualXL_extension_init (db); -#endif /* FreeXL enabled/disable */ -#endif /* ICONV enabled/disabled */ - -/* initializing the VirtualNetwork extension */ - virtualnetwork_extension_init (db); -/* initializing the MbrCache extension */ - mbrcache_extension_init (db); -/* initializing the VirtualFDO extension */ - virtualfdo_extension_init (db); -/* initializing the VirtualSpatialIndex extension */ - virtual_spatialindex_extension_init (db); -} - -static int -init_spatialite_extension (sqlite3 * db, char **pzErrMsg, - const sqlite3_api_routines * pApi) -{ - SQLITE_EXTENSION_INIT2 (pApi); -/* setting the POSIX locale for numeric */ - setlocale (LC_NUMERIC, "POSIX"); - *pzErrMsg = NULL; - - register_spatialite_sql_functions (db); - - init_spatialite_virtualtables (db); - -/* setting a timeout handler */ - sqlite3_busy_timeout (db, 5000); - - return 0; -} - -SPATIALITE_DECLARE void -spatialite_init_geos (void) -{ -/* initializes GEOS (or resets to initial state - as required by LWGEOM) */ -#ifndef OMIT_GEOS /* initializing GEOS */ - initGEOS (geos_warning, geos_error); -#endif /* end GEOS */ -} - -SPATIALITE_DECLARE void -spatialite_init (int verbose) -{ -/* used when SQLite initializes SpatiaLite via statically linked lib */ - -#ifndef OMIT_GEOS /* initializing GEOS */ - initGEOS (geos_warning, geos_error); -#endif /* end GEOS */ - - sqlite3_auto_extension ((void (*)(void)) init_spatialite_extension); - if (isatty (1)) - { - /* printing "hello" message only when stdout is on console */ - if (verbose) - { - spatialite_i ("SpatiaLite version ..: %s", - spatialite_version ()); - spatialite_i ("\tSupported Extensions:\n"); -#ifndef OMIT_ICONV /* ICONV is required by SHP/DBF/TXT */ - spatialite_i - ("\t- 'VirtualShape'\t[direct Shapefile access]\n"); - spatialite_i ("\t- 'VirtualDbf'\t\t[direct DBF access]\n"); -#ifndef OMIT_FREEXL - spatialite_i ("\t- 'VirtualXL'\t\t[direct XLS access]\n"); -#endif /* end FreeXL conditional */ - spatialite_i ("\t- 'VirtualText'\t\t[direct CSV/TXT access]\n"); -#endif /* end ICONV conditional */ - spatialite_i - ("\t- 'VirtualNetwork'\t[Dijkstra shortest path]\n"); - spatialite_i ("\t- 'RTree'\t\t[Spatial Index - R*Tree]\n"); - spatialite_i - ("\t- 'MbrCache'\t\t[Spatial Index - MBR cache]\n"); - spatialite_i - ("\t- 'VirtualSpatialIndex'\t[R*Tree metahandler]\n"); - spatialite_i - ("\t- 'VirtualFDO'\t\t[FDO-OGR interoperability]\n"); - spatialite_i ("\t- 'SpatiaLite'\t\t[Spatial SQL - OGC]\n"); - } -#ifndef OMIT_PROJ /* PROJ.4 version */ - if (verbose) - spatialite_i ("PROJ.4 version ......: %s\n", pj_get_release ()); -#endif /* end including PROJ.4 */ -#ifndef OMIT_GEOS /* GEOS version */ - if (verbose) - spatialite_i ("GEOS version ........: %s\n", GEOSversion ()); -#endif /* end GEOS version */ -#ifdef ENABLE_LWGEOM /* LWGEOM version */ - if (verbose) - spatialite_i ("LWGEOM version ......: %s\n", - splite_lwgeom_version ()); -#endif /* end LWGEOM version */ - } -} - -SPATIALITE_DECLARE void -spatialite_cleanup () -{ -#ifndef OMIT_GEOS - finishGEOS (); -#endif - sqlite3_reset_auto_extension (); -} - -#if !(defined _WIN32) || defined(__MINGW__) -/* MSVC is unable to understand this declaration */ -__attribute__ ((visibility ("default"))) -#endif - SPATIALITE_DECLARE int - sqlite3_extension_init (sqlite3 * db, char **pzErrMsg, - const sqlite3_api_routines * pApi) -{ -/* SQLite invokes this routine once when it dynamically loads the extension. */ - -#ifndef OMIT_GEOS /* initializing GEOS */ - initGEOS (geos_warning, geos_error); -#endif /* end GEOS */ - - return init_spatialite_extension (db, pzErrMsg, pApi); -} - -SPATIALITE_DECLARE sqlite3_int64 -math_llabs (sqlite3_int64 value) -{ -/* replacing the C99 llabs() function */ - return value < 0 ? -value : value; -} - -SPATIALITE_DECLARE double -math_round (double value) -{ -/* replacing the C99 round() function */ - double min = floor (value); - if (fabs (value - min) < 0.5) - return min; - return min + 1.0; -} diff --git a/src/spatialite/src/spatialite/statistics.c b/src/spatialite/src/spatialite/statistics.c deleted file mode 100644 index a0af454..0000000 --- a/src/spatialite/src/spatialite/statistics.c +++ /dev/null @@ -1,2169 +0,0 @@ -/* - - statistics.c -- helper functions updating internal statistics - - version 4.0, 2012 August 8 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Pepijn Van Eeckhoudt -(implementing Android support) - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#if defined(_WIN32) || defined(WIN32) -#include -#define isatty _isatty -#else -#include -#endif - -#include -#include - -#include -#include -#include -#include - -#ifndef OMIT_GEOS /* including GEOS */ -#include -#endif - -#ifndef OMIT_PROJ /* including PROJ.4 */ -#include -#endif - -#ifdef _WIN32 -#define strcasecmp _stricmp -#endif /* not WIN32 */ - -struct field_item_infos -{ - int ordinal; - char *col_name; - int null_values; - int integer_values; - int double_values; - int text_values; - int blob_values; - int max_size; - int int_minmax_set; - int int_min; - int int_max; - int dbl_minmax_set; - double dbl_min; - double dbl_max; - struct field_item_infos *next; -}; - -struct field_container_infos -{ - struct field_item_infos *first; - struct field_item_infos *last; -}; - -static int -do_update_layer_statistics_v4 (sqlite3 * sqlite, const char *table, - const char *column, int count, int has_coords, - double min_x, double min_y, double max_x, - double max_y) -{ -/* update GEOMETRY_COLUMNS_STATISTICS Version >= 4.0.0 */ - char sql[8192]; - int ret; - int error = 0; - sqlite3_stmt *stmt; - - strcpy (sql, "INSERT OR REPLACE INTO geometry_columns_statistics "); - strcat (sql, "(f_table_name, f_geometry_column, last_verified, "); - strcat (sql, "row_count, extent_min_x, extent_min_y, "); - strcat (sql, "extent_max_x, extent_max_y) VALUES (?, ?, "); - strcat (sql, "strftime('%Y-%m-%dT%H:%M:%fZ', 'now'), ?, ?, ?, ?, ?)"); - -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - return 0; - -/* binding INSERT params */ - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - sqlite3_bind_int (stmt, 3, count); - if (has_coords) - { - sqlite3_bind_double (stmt, 4, min_x); - sqlite3_bind_double (stmt, 5, min_y); - sqlite3_bind_double (stmt, 6, max_x); - sqlite3_bind_double (stmt, 7, max_y); - } - else - { - sqlite3_bind_null (stmt, 4); - sqlite3_bind_null (stmt, 5); - sqlite3_bind_null (stmt, 6); - sqlite3_bind_null (stmt, 7); - } - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - error = 1; - ret = sqlite3_finalize (stmt); - if (ret != SQLITE_OK) - return 0; - if (error) - return 0; - return 1; -} - -static int -do_update_layer_statistics (sqlite3 * sqlite, const char *table, - const char *column, int count, int has_coords, - double min_x, double min_y, double max_x, - double max_y) -{ -/* update LAYER_STATISTICS [single table/geometry] */ - char sql[8192]; - int ret; - int error = 0; - sqlite3_stmt *stmt; - int metadata_version = checkSpatialMetaData (sqlite); - - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - return do_update_layer_statistics_v4 (sqlite, table, column, count, - has_coords, min_x, min_y, max_x, - max_y); - } - - if (!check_layer_statistics (sqlite)) - return 0; - strcpy (sql, "INSERT OR REPLACE INTO layer_statistics "); - strcat (sql, "(raster_layer, table_name, geometry_column, "); - strcat (sql, "row_count, extent_min_x, extent_min_y, "); - strcat (sql, "extent_max_x, extent_max_y) "); - strcat (sql, "VALUES (0, ?, ?, ?, ?, ?, ?, ?)"); - -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - return 0; -/* binding INSERT params */ - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - sqlite3_bind_int (stmt, 3, count); - if (has_coords) - { - sqlite3_bind_double (stmt, 4, min_x); - sqlite3_bind_double (stmt, 5, min_y); - sqlite3_bind_double (stmt, 6, max_x); - sqlite3_bind_double (stmt, 7, max_y); - } - else - { - sqlite3_bind_null (stmt, 4); - sqlite3_bind_null (stmt, 5); - sqlite3_bind_null (stmt, 6); - sqlite3_bind_null (stmt, 7); - } - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - error = 1; - ret = sqlite3_finalize (stmt); - if (ret != SQLITE_OK) - return 0; - if (error) - return 0; - return 1; -} - -static int -do_update_views_layer_statistics_v4 (sqlite3 * sqlite, const char *table, - const char *column, int count, - int has_coords, double min_x, - double min_y, double max_x, double max_y) -{ -/* update VIEWS_GEOMETRY_COLUMNS_STATISTICS Version >= 4.0.0 */ - char sql[8192]; - int ret; - int error = 0; - sqlite3_stmt *stmt; - - strcpy (sql, "INSERT OR REPLACE INTO views_geometry_columns_statistics "); - strcat (sql, "(view_name, view_geometry, last_verified, "); - strcat (sql, "row_count, extent_min_x, extent_min_y, "); - strcat (sql, "extent_max_x, extent_max_y) VALUES (?, ?, "); - strcat (sql, "strftime('%Y-%m-%dT%H:%M:%fZ', 'now'), ?, ?, ?, ?, ?)"); - -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - return 0; - -/* binding INSERT params */ - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - sqlite3_bind_int (stmt, 3, count); - if (has_coords) - { - sqlite3_bind_double (stmt, 4, min_x); - sqlite3_bind_double (stmt, 5, min_y); - sqlite3_bind_double (stmt, 6, max_x); - sqlite3_bind_double (stmt, 7, max_y); - } - else - { - sqlite3_bind_null (stmt, 4); - sqlite3_bind_null (stmt, 5); - sqlite3_bind_null (stmt, 6); - sqlite3_bind_null (stmt, 7); - } - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - error = 1; - ret = sqlite3_finalize (stmt); - if (ret != SQLITE_OK) - return 0; - if (error) - return 0; - return 1; -} - -static int -do_update_views_layer_statistics (sqlite3 * sqlite, const char *table, - const char *column, int count, - int has_coords, double min_x, double min_y, - double max_x, double max_y) -{ -/* update VIEWS_LAYER_STATISTICS [single table/geometry] */ - char sql[8192]; - int ret; - int error = 0; - sqlite3_stmt *stmt; - int metadata_version = checkSpatialMetaData (sqlite); - - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - return do_update_views_layer_statistics_v4 (sqlite, table, column, - count, has_coords, min_x, - min_y, max_x, max_y); - } - - if (!check_views_layer_statistics (sqlite)) - return 0; - strcpy (sql, "INSERT OR REPLACE INTO views_layer_statistics "); - strcat (sql, "(view_name, view_geometry, "); - strcat (sql, "row_count, extent_min_x, extent_min_y, "); - strcat (sql, "extent_max_x, extent_max_y) "); - strcat (sql, "VALUES (?, ?, ?, ?, ?, ?, ?)"); - -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - return 0; - -/* binding INSERT params */ - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - sqlite3_bind_int (stmt, 3, count); - if (has_coords) - { - sqlite3_bind_double (stmt, 4, min_x); - sqlite3_bind_double (stmt, 5, min_y); - sqlite3_bind_double (stmt, 6, max_x); - sqlite3_bind_double (stmt, 7, max_y); - } - else - { - sqlite3_bind_null (stmt, 4); - sqlite3_bind_null (stmt, 5); - sqlite3_bind_null (stmt, 6); - sqlite3_bind_null (stmt, 7); - } - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - error = 1; - ret = sqlite3_finalize (stmt); - if (ret != SQLITE_OK) - return 0; - if (error) - return 0; - return 1; -} - -static int -do_update_virts_layer_statistics_v4 (sqlite3 * sqlite, const char *table, - const char *column, int count, - int has_coords, double min_x, - double min_y, double max_x, double max_y) -{ -/* update VIRTS_GEOMETRY_COLUMNS_STATISTICS Version >= 4.0.0 */ - char sql[8192]; - int ret; - int error = 0; - sqlite3_stmt *stmt; - - strcpy (sql, "INSERT OR REPLACE INTO virts_geometry_columns_statistics "); - strcat (sql, "(virt_name, virt_geometry, last_verified, "); - strcat (sql, "row_count, extent_min_x, extent_min_y, "); - strcat (sql, "extent_max_x, extent_max_y) VALUES (?, ?, "); - strcat (sql, "strftime('%Y-%m-%dT%H:%M:%fZ', 'now'), ?, ?, ?, ?, ?)"); - -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - return 0; - -/* binding INSERT params */ - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - sqlite3_bind_int (stmt, 3, count); - if (has_coords) - { - sqlite3_bind_double (stmt, 4, min_x); - sqlite3_bind_double (stmt, 5, min_y); - sqlite3_bind_double (stmt, 6, max_x); - sqlite3_bind_double (stmt, 7, max_y); - } - else - { - sqlite3_bind_null (stmt, 4); - sqlite3_bind_null (stmt, 5); - sqlite3_bind_null (stmt, 6); - sqlite3_bind_null (stmt, 7); - } - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - error = 1; - ret = sqlite3_finalize (stmt); - if (ret != SQLITE_OK) - return 0; - if (error) - return 0; - return 1; -} - -static int -do_update_virts_layer_statistics (sqlite3 * sqlite, const char *table, - const char *column, int count, - int has_coords, double min_x, double min_y, - double max_x, double max_y) -{ -/* update VIRTS_LAYER_STATISTICS [single table/geometry] */ - char sql[8192]; - int ret; - int error = 0; - sqlite3_stmt *stmt; - int metadata_version = checkSpatialMetaData (sqlite); - - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - return do_update_virts_layer_statistics_v4 (sqlite, table, column, - count, has_coords, min_x, - min_y, max_x, max_y); - } - - if (!check_virts_layer_statistics (sqlite)) - return 0; - strcpy (sql, "INSERT OR REPLACE INTO virts_layer_statistics "); - strcat (sql, "(virt_name, virt_geometry, "); - strcat (sql, "row_count, extent_min_x, extent_min_y, "); - strcat (sql, "extent_max_x, extent_max_y) "); - strcat (sql, "VALUES (?, ?, ?, ?, ?, ?, ?)"); - -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - return 0; - -/* binding INSERT params */ - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - sqlite3_bind_int (stmt, 3, count); - if (has_coords) - { - sqlite3_bind_double (stmt, 4, min_x); - sqlite3_bind_double (stmt, 5, min_y); - sqlite3_bind_double (stmt, 6, max_x); - sqlite3_bind_double (stmt, 7, max_y); - } - else - { - sqlite3_bind_null (stmt, 4); - sqlite3_bind_null (stmt, 5); - sqlite3_bind_null (stmt, 6); - sqlite3_bind_null (stmt, 7); - } - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - error = 1; - ret = sqlite3_finalize (stmt); - if (ret != SQLITE_OK) - return 0; - if (error) - return 0; - return 1; -} - -static void -update_field_infos (struct field_container_infos *infos, int ordinal, - const char *col_name, const char *type, int size, int count) -{ -/* updating the field container infos */ - int len; - struct field_item_infos *p = infos->first; - while (p) - { - if (strcasecmp (col_name, p->col_name) == 0) - { - /* updating an already defined field */ - if (strcasecmp (type, "null") == 0) - p->null_values += count; - if (strcasecmp (type, "integer") == 0) - p->integer_values += count; - if (strcasecmp (type, "real") == 0) - p->double_values += count; - if (strcasecmp (type, "text") == 0) - { - p->text_values += count; - if (size > p->max_size) - p->max_size = size; - } - if (strcasecmp (type, "blob") == 0) - { - p->blob_values += count; - if (size > p->max_size) - p->max_size = size; - } - return; - } - p = p->next; - } -/* inserting a new field */ - p = malloc (sizeof (struct field_item_infos)); - p->ordinal = ordinal; - len = strlen (col_name); - p->col_name = malloc (len + 1); - strcpy (p->col_name, col_name); - p->null_values = 0; - p->integer_values = 0; - p->double_values = 0; - p->text_values = 0; - p->blob_values = 0; - p->max_size = -1; - p->int_minmax_set = 0; - p->int_min = 0; - p->int_max = 0; - p->dbl_minmax_set = 0; - p->dbl_min = 0.0; - p->dbl_max = 0.0; - p->next = NULL; - if (strcasecmp (type, "null") == 0) - p->null_values += count; - if (strcasecmp (type, "integer") == 0) - p->integer_values += count; - if (strcasecmp (type, "real") == 0) - p->double_values += count; - if (strcasecmp (type, "text") == 0) - { - p->text_values += count; - if (size > p->max_size) - p->max_size = size; - } - if (strcasecmp (type, "blob") == 0) - { - p->blob_values += count; - if (size > p->max_size) - p->max_size = size; - } - if (infos->first == NULL) - infos->first = p; - if (infos->last != NULL) - infos->last->next = p; - infos->last = p; -} - -static void -update_field_infos_int_minmax (struct field_container_infos *infos, - const char *col_name, int int_min, int int_max) -{ -/* updating the field container infos - Int MinMax */ - struct field_item_infos *p = infos->first; - while (p) - { - if (strcasecmp (col_name, p->col_name) == 0) - { - p->int_minmax_set = 1; - p->int_min = int_min; - p->int_max = int_max; - return; - } - p = p->next; - } -} - -static void -update_field_infos_double_minmax (struct field_container_infos *infos, - const char *col_name, double dbl_min, - double dbl_max) -{ -/* updating the field container infos - Double MinMax */ - struct field_item_infos *p = infos->first; - while (p) - { - if (strcasecmp (col_name, p->col_name) == 0) - { - p->dbl_minmax_set = 1; - p->dbl_min = dbl_min; - p->dbl_max = dbl_max; - return; - } - p = p->next; - } -} - -static void -free_field_infos (struct field_container_infos *infos) -{ -/* memory cleanup - freeing a field infos container */ - struct field_item_infos *p = infos->first; - struct field_item_infos *pn; - while (p) - { - /* destroying field items */ - pn = p->next; - if (p->col_name) - free (p->col_name); - free (p); - p = pn; - } -} - -static int -do_update_field_infos (sqlite3 * sqlite, const char *table, - const char *column, struct field_container_infos *infos) -{ -/* update GEOMETRY_COLUMNS_FIELD_INFOS Version >= 4.0.0 */ - char sql[8192]; - char *sql_statement; - int ret; - int error = 0; - sqlite3_stmt *stmt; - struct field_item_infos *p = infos->first; - -/* deleting any previous row */ - sql_statement = sqlite3_mprintf ("DELETE FROM geometry_columns_field_infos " - "WHERE Lower(f_table_name) = Lower(%Q) AND " - "Lower(f_geometry_column) = Lower(%Q)", - table, column); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - -/* reinserting yet again */ - strcpy (sql, "INSERT INTO geometry_columns_field_infos "); - strcat (sql, "(f_table_name, f_geometry_column, ordinal, "); - strcat (sql, "column_name, null_values, integer_values, "); - strcat (sql, "double_values, text_values, blob_values, max_size, "); - strcat (sql, "integer_min, integer_max, double_min, double_max) "); - strcat (sql, "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); - -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - return 0; - - while (p) - { -/* binding INSERT params */ - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - sqlite3_bind_int (stmt, 3, p->ordinal); - sqlite3_bind_text (stmt, 4, p->col_name, strlen (p->col_name), - SQLITE_STATIC); - sqlite3_bind_int (stmt, 5, p->null_values); - sqlite3_bind_int (stmt, 6, p->integer_values); - sqlite3_bind_int (stmt, 7, p->double_values); - sqlite3_bind_int (stmt, 8, p->text_values); - sqlite3_bind_int (stmt, 9, p->blob_values); - if (p->max_size < 0) - sqlite3_bind_null (stmt, 10); - else - sqlite3_bind_int (stmt, 10, p->max_size); - if (p->int_minmax_set) - { - sqlite3_bind_int (stmt, 11, p->int_min); - sqlite3_bind_int (stmt, 12, p->int_max); - } - else - { - sqlite3_bind_null (stmt, 11); - sqlite3_bind_null (stmt, 12); - } - if (p->dbl_minmax_set) - { - sqlite3_bind_double (stmt, 13, p->dbl_min); - sqlite3_bind_double (stmt, 14, p->dbl_max); - } - else - { - sqlite3_bind_null (stmt, 13); - sqlite3_bind_null (stmt, 14); - } - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - error = 1; - p = p->next; - } - ret = sqlite3_finalize (stmt); - if (ret != SQLITE_OK) - return 0; - if (error) - return 0; - return 1; -} - -static int -do_update_views_field_infos (sqlite3 * sqlite, const char *table, - const char *column, - struct field_container_infos *infos) -{ -/* update VIEW_GEOMETRY_COLUMNS_FIELD_INFOS Version >= 4.0.0 */ - char sql[8192]; - char *sql_statement; - int ret; - int error = 0; - sqlite3_stmt *stmt; - struct field_item_infos *p = infos->first; - -/* deleting any previous row */ - sql_statement = - sqlite3_mprintf ("DELETE FROM views_geometry_columns_field_infos " - "WHERE Lower(view_name) = Lower(%Q) AND " - "Lower(view_geometry) = Lower(%Q)", table, column); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - -/* reinserting yet again */ - strcpy (sql, "INSERT INTO views_geometry_columns_field_infos "); - strcat (sql, "(view_name, view_geometry, ordinal, "); - strcat (sql, "column_name, null_values, integer_values, "); - strcat (sql, "double_values, text_values, blob_values, max_size, "); - strcat (sql, "integer_min, integer_max, double_min, double_max) "); - strcat (sql, "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); - -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - return 0; - - while (p) - { -/* binding INSERT params */ - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - sqlite3_bind_int (stmt, 3, p->ordinal); - sqlite3_bind_text (stmt, 4, p->col_name, strlen (p->col_name), - SQLITE_STATIC); - sqlite3_bind_int (stmt, 5, p->null_values); - sqlite3_bind_int (stmt, 6, p->integer_values); - sqlite3_bind_int (stmt, 7, p->double_values); - sqlite3_bind_int (stmt, 8, p->text_values); - sqlite3_bind_int (stmt, 9, p->blob_values); - if (p->max_size < 0) - sqlite3_bind_null (stmt, 10); - else - sqlite3_bind_int (stmt, 10, p->max_size); - if (p->int_minmax_set) - { - sqlite3_bind_int (stmt, 11, p->int_min); - sqlite3_bind_int (stmt, 12, p->int_max); - } - else - { - sqlite3_bind_null (stmt, 11); - sqlite3_bind_null (stmt, 12); - } - if (p->dbl_minmax_set) - { - sqlite3_bind_double (stmt, 13, p->dbl_min); - sqlite3_bind_double (stmt, 14, p->dbl_max); - } - else - { - sqlite3_bind_null (stmt, 13); - sqlite3_bind_null (stmt, 14); - } - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - error = 1; - p = p->next; - } - ret = sqlite3_finalize (stmt); - if (ret != SQLITE_OK) - return 0; - if (error) - return 0; - return 1; -} - -static int -do_update_virts_field_infos (sqlite3 * sqlite, const char *table, - const char *column, - struct field_container_infos *infos) -{ -/* update VIRTS_GEOMETRY_COLUMNS_FIELD_INFOS Version >= 4.0.0 */ - char sql[8192]; - char *sql_statement; - int ret; - int error = 0; - sqlite3_stmt *stmt; - struct field_item_infos *p = infos->first; - -/* deleting any previous row */ - sql_statement = - sqlite3_mprintf ("DELETE FROM virts_geometry_columns_field_infos " - "WHERE Lower(virt_name) = Lower(%Q) AND " - "Lower(virt_geometry) = Lower(%Q)", table, column); - ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - -/* reinserting yet again */ - strcpy (sql, "INSERT INTO virts_geometry_columns_field_infos "); - strcat (sql, "(virt_name, virt_geometry, ordinal, "); - strcat (sql, "column_name, null_values, integer_values, "); - strcat (sql, "double_values, text_values, blob_values, max_size, "); - strcat (sql, "integer_min, integer_max, double_min, double_max) "); - strcat (sql, "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); - -/* compiling SQL prepared statement */ - ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - return 0; - - while (p) - { -/* binding INSERT params */ - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); - sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); - sqlite3_bind_int (stmt, 3, p->ordinal); - sqlite3_bind_text (stmt, 4, p->col_name, strlen (p->col_name), - SQLITE_STATIC); - sqlite3_bind_int (stmt, 5, p->null_values); - sqlite3_bind_int (stmt, 6, p->integer_values); - sqlite3_bind_int (stmt, 7, p->double_values); - sqlite3_bind_int (stmt, 8, p->text_values); - sqlite3_bind_int (stmt, 9, p->blob_values); - if (p->max_size < 0) - sqlite3_bind_null (stmt, 10); - else - sqlite3_bind_int (stmt, 10, p->max_size); - if (p->int_minmax_set) - { - sqlite3_bind_int (stmt, 11, p->int_min); - sqlite3_bind_int (stmt, 12, p->int_max); - } - else - { - sqlite3_bind_null (stmt, 11); - sqlite3_bind_null (stmt, 12); - } - if (p->dbl_minmax_set) - { - sqlite3_bind_double (stmt, 13, p->dbl_min); - sqlite3_bind_double (stmt, 14, p->dbl_max); - } - else - { - sqlite3_bind_null (stmt, 13); - sqlite3_bind_null (stmt, 14); - } - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - error = 1; - p = p->next; - } - ret = sqlite3_finalize (stmt); - if (ret != SQLITE_OK) - return 0; - if (error) - return 0; - return 1; -} - -static int -do_compute_minmax (sqlite3 * sqlite, const char *table, - struct field_container_infos *infos) -{ -/* Pass2 - computing Integer / Double min/max ranges */ - char *quoted; - char *sql_statement; - int int_min; - int int_max; - double dbl_min; - double dbl_max; - int ret; - int i; - int c; - char **results; - int rows; - int columns; - const char *col_name; - int is_double; - int comma = 0; - int empty = 1; - gaiaOutBuffer out_buf; - struct field_item_infos *ptr; - - gaiaOutBufferInitialize (&out_buf); - gaiaAppendToOutBuffer (&out_buf, "SELECT DISTINCT "); - ptr = infos->first; - while (ptr) - { - quoted = gaiaDoubleQuotedSql (ptr->col_name); - if (ptr->integer_values >= 0 && ptr->double_values == 0 - && ptr->blob_values == 0 && ptr->text_values == 0) - { - if (comma) - sql_statement = - sqlite3_mprintf (", 0, %Q, min(\"%s\"), max(\"%s\")", - ptr->col_name, quoted, quoted); - else - { - comma = 1; - sql_statement = - sqlite3_mprintf (" 0, %Q, min(\"%s\"), max(\"%s\")", - ptr->col_name, quoted, quoted); - } - gaiaAppendToOutBuffer (&out_buf, sql_statement); - sqlite3_free (sql_statement); - empty = 0; - } - if (ptr->double_values >= 0 && ptr->integer_values == 0 - && ptr->blob_values == 0 && ptr->text_values == 0) - { - if (comma) - sql_statement = - sqlite3_mprintf (", 1, %Q, min(\"%s\"), max(\"%s\")", - ptr->col_name, quoted, quoted); - else - { - comma = 1; - sql_statement = - sqlite3_mprintf (" 1, %Q, min(\"%s\"), max(\"%s\")", - ptr->col_name, quoted, quoted); - } - gaiaAppendToOutBuffer (&out_buf, sql_statement); - sqlite3_free (sql_statement); - empty = 0; - } - free (quoted); - ptr = ptr->next; - } - if (out_buf.Buffer == NULL) - return 0; - if (empty) - { - /* no columns to check */ - gaiaOutBufferReset (&out_buf); - return 1; - - } - quoted = gaiaDoubleQuotedSql (table); - sql_statement = sqlite3_mprintf (" FROM \"%s\"", quoted); - free (quoted); - gaiaAppendToOutBuffer (&out_buf, sql_statement); - sqlite3_free (sql_statement); -/* executing the SQL query */ - ret = sqlite3_get_table (sqlite, out_buf.Buffer, &results, &rows, &columns, - NULL); - gaiaOutBufferReset (&out_buf); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - for (c = 0; c < columns; c += 4) - { - /* retrieving field infos */ - is_double = atoi (results[(i * columns) + c + 0]); - col_name = results[(i * columns) + c + 1]; - if (results[(i * columns) + c + 2] != NULL - && results[(i * columns) + c + 3] != NULL) - { - if (!is_double) - { - int_min = - atoi (results[(i * columns) + c + 2]); - int_max = - atoi (results[(i * columns) + c + 3]); - update_field_infos_int_minmax (infos, - col_name, - int_min, - int_max); - } - else - { - dbl_min = - atof (results[(i * columns) + c + 2]); - dbl_max = - atof (results[(i * columns) + c + 3]); - update_field_infos_double_minmax (infos, - col_name, - dbl_min, - dbl_max); - } - } - } - } - } - sqlite3_free_table (results); - - return 1; -} - -static void -copy_attributes_into_layer (struct field_container_infos *infos, - gaiaVectorLayerPtr lyr) -{ -/* copying the AttributeField definitions into the VectorLayer */ - gaiaLayerAttributeFieldPtr fld; - int len; - struct field_item_infos *p = infos->first; - while (p) - { - /* adding an AttributeField definition */ - fld = malloc (sizeof (gaiaLayerAttributeField)); - fld->Ordinal = p->ordinal; - len = strlen (p->col_name); - fld->AttributeFieldName = malloc (len + 1); - strcpy (fld->AttributeFieldName, p->col_name); - fld->NullValuesCount = p->null_values; - fld->IntegerValuesCount = p->integer_values; - fld->DoubleValuesCount = p->double_values; - fld->TextValuesCount = p->text_values; - fld->BlobValuesCount = p->blob_values; - fld->MaxSize = NULL; - fld->IntRange = NULL; - fld->DoubleRange = NULL; - if (p->max_size) - { - fld->MaxSize = malloc (sizeof (gaiaAttributeFieldMaxSize)); - fld->MaxSize->MaxSize = p->max_size; - } - if (p->int_minmax_set) - { - fld->IntRange = malloc (sizeof (gaiaAttributeFieldIntRange)); - fld->IntRange->MinValue = p->int_min; - fld->IntRange->MaxValue = p->int_max; - } - if (p->dbl_minmax_set) - { - fld->DoubleRange = - malloc (sizeof (gaiaAttributeFieldDoubleRange)); - fld->DoubleRange->MinValue = p->dbl_min; - fld->DoubleRange->MaxValue = p->dbl_max; - } - fld->Next = NULL; - if (lyr->First == NULL) - lyr->First = fld; - if (lyr->Last != NULL) - lyr->Last->Next = fld; - lyr->Last = fld; - p = p->next; - } -} - -SPATIALITE_PRIVATE int -doComputeFieldInfos (void *p_sqlite, const char *table, - const char *column, int stat_type, void *p_lyr) -{ -/* computes FIELD_INFOS [single table/geometry] */ - sqlite3 *sqlite = (sqlite3 *) p_sqlite; - gaiaVectorLayerPtr lyr = (gaiaVectorLayerPtr) p_lyr; - char *sql_statement; - char *quoted; - int ret; - int i; - int c; - char **results; - int rows; - int columns; - int ordinal; - const char *col_name; - const char *type; - const char *sz; - int size; - int count; - int error = 0; - int comma = 0; - gaiaOutBuffer out_buf; - gaiaOutBuffer group_by; - struct field_container_infos infos; - - gaiaOutBufferInitialize (&out_buf); - gaiaOutBufferInitialize (&group_by); - infos.first = NULL; - infos.last = NULL; - -/* retrieving the column names for the current table */ -/* then building the SQL query statement */ - quoted = gaiaDoubleQuotedSql (table); - sql_statement = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", quoted); - free (quoted); - ret = - sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - - if (rows < 1) - ; - else - { - gaiaAppendToOutBuffer (&out_buf, "SELECT DISTINCT Count(*)"); - gaiaAppendToOutBuffer (&group_by, "GROUP BY"); - for (i = 1; i <= rows; i++) - { - ordinal = atoi (results[(i * columns) + 0]); - col_name = results[(i * columns) + 1]; - quoted = gaiaDoubleQuotedSql (col_name); - sql_statement = - sqlite3_mprintf - (", %d, %Q AS col_%d, typeof(\"%s\") AS typ_%d, max(length(\"%s\"))", - ordinal, col_name, ordinal, quoted, ordinal, quoted); - free (quoted); - gaiaAppendToOutBuffer (&out_buf, sql_statement); - sqlite3_free (sql_statement); - if (!comma) - { - comma = 1; - sql_statement = - sqlite3_mprintf (" col_%d, typ_%d", ordinal, ordinal); - } - else - sql_statement = - sqlite3_mprintf (", col_%d, typ_%d", ordinal, ordinal); - gaiaAppendToOutBuffer (&group_by, sql_statement); - sqlite3_free (sql_statement); - } - } - sqlite3_free_table (results); - - if (out_buf.Buffer == NULL) - return 0; - quoted = gaiaDoubleQuotedSql (table); - sql_statement = sqlite3_mprintf (" FROM \"%s\" ", quoted); - free (quoted); - gaiaAppendToOutBuffer (&out_buf, sql_statement); - sqlite3_free (sql_statement); - gaiaAppendToOutBuffer (&out_buf, group_by.Buffer); - gaiaOutBufferReset (&group_by); - -/* executing the SQL query */ - ret = sqlite3_get_table (sqlite, out_buf.Buffer, &results, &rows, &columns, - NULL); - gaiaOutBufferReset (&out_buf); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - count = atoi (results[(i * columns) + 0]); - for (c = 1; c < columns; c += 4) - { - /* retrieving field infos */ - ordinal = atoi (results[(i * columns) + c + 0]); - col_name = results[(i * columns) + c + 1]; - type = results[(i * columns) + c + 2]; - sz = results[(i * columns) + c + 3]; - if (sz == NULL) - size = -1; - else - size = atoi (sz); - update_field_infos (&infos, ordinal, col_name, type, size, - count); - } - } - } - sqlite3_free_table (results); - -/* Pass-2: computing INTEGER and DOUBLE min/max ranges */ - if (!error) - { - if (!do_compute_minmax (sqlite, table, &infos)) - error = 1; - } - - switch (stat_type) - { - case SPATIALITE_STATISTICS_LEGACY: - if (!error) - copy_attributes_into_layer (&infos, lyr); - free_field_infos (&infos); - if (error) - return 0; - return 1; - break; - case SPATIALITE_STATISTICS_GENUINE: - if (!do_update_field_infos (sqlite, table, column, &infos)) - error = 1; - break; - case SPATIALITE_STATISTICS_VIEWS: - if (!do_update_views_field_infos (sqlite, table, column, &infos)) - error = 1; - break; - case SPATIALITE_STATISTICS_VIRTS: - if (!do_update_virts_field_infos (sqlite, table, column, &infos)) - error = 1; - break; - }; - free_field_infos (&infos); - if (error) - return 0; - return 1; -} - -static int -do_compute_layer_statistics (sqlite3 * sqlite, const char *table, - const char *column, int stat_type) -{ -/* computes LAYER_STATISTICS [single table/geometry] */ - int ret; - int error = 0; - int count; - double min_x; - double min_y; - double max_x; - double max_y; - int has_coords = 1; - char *quoted; - char *col_quoted; - char *sql_statement; - sqlite3_stmt *stmt; - int metadata_version = checkSpatialMetaData (sqlite); - - quoted = gaiaDoubleQuotedSql ((const char *) table); - col_quoted = gaiaDoubleQuotedSql ((const char *) column); - sql_statement = sqlite3_mprintf ("SELECT Count(*), " - "Min(MbrMinX(\"%s\")), Min(MbrMinY(\"%s\")), Max(MbrMaxX(\"%s\")), Max(MbrMaxY(\"%s\")) " - "FROM \"%s\"", col_quoted, col_quoted, - col_quoted, col_quoted, quoted); - free (quoted); - free (col_quoted); - -/* compiling SQL prepared statement */ - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - count = sqlite3_column_int (stmt, 0); - if (sqlite3_column_type (stmt, 1) == SQLITE_NULL) - has_coords = 0; - else - min_x = sqlite3_column_double (stmt, 1); - if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) - has_coords = 0; - else - min_y = sqlite3_column_double (stmt, 2); - if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) - has_coords = 0; - else - max_x = sqlite3_column_double (stmt, 3); - if (sqlite3_column_type (stmt, 4) == SQLITE_NULL) - has_coords = 0; - else - max_y = sqlite3_column_double (stmt, 4); - switch (stat_type) - { - case SPATIALITE_STATISTICS_GENUINE: - if (!do_update_layer_statistics - (sqlite, table, column, count, has_coords, min_x, - min_y, max_x, max_y)) - error = 1; - break; - case SPATIALITE_STATISTICS_VIEWS: - if (!do_update_views_layer_statistics - (sqlite, table, column, count, has_coords, min_x, - min_y, max_x, max_y)) - error = 1; - break; - case SPATIALITE_STATISTICS_VIRTS: - if (!do_update_virts_layer_statistics - (sqlite, table, column, count, has_coords, min_x, - min_y, max_x, max_y)) - error = 1; - break; - }; - } - else - error = 1; - } - ret = sqlite3_finalize (stmt); - if (ret != SQLITE_OK) - return 0; - if (error) - return 0; - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - if (!doComputeFieldInfos (sqlite, table, column, stat_type, NULL)) - return 0; - } - return 1; -} - -static int -genuine_layer_statistics_v4 (sqlite3 * sqlite, const char *table, - const char *column) -{ -/* updating GEOMETRY_COLUMNS_STATISTICS Version >= 4.0.0 */ - char *sql_statement; - int ret; - const char *f_table_name; - const char *f_geometry_column; - int i; - char **results; - int rows; - int columns; - int error = 0; - - if (table == NULL && column == NULL) - { - /* processing any table/geometry found in GEOMETRY_COLUMNS */ - sql_statement = - sqlite3_mprintf ("SELECT t.f_table_name, t.f_geometry_column " - "FROM geometry_columns_time AS t, " - "geometry_columns_statistics AS s " - "WHERE Lower(s.f_table_name) = Lower(t.f_table_name) AND " - "Lower(s.f_geometry_column) = Lower(t.f_geometry_column) AND " - "(s.last_verified < t.last_insert OR " - "s.last_verified < t.last_update OR " - "s.last_verified < t.last_delete OR " - "s.last_verified IS NULL)"); - } - else if (column == NULL) - { - /* processing any geometry belonging to this table */ - sql_statement = - sqlite3_mprintf ("SELECT t.f_table_name, t.f_geometry_column " - "FROM geometry_columns_time AS t, " - "geometry_columns_statistics AS s " - "WHERE Lower(t.f_table_name) = Lower(%Q) AND " - "Lower(s.f_table_name) = Lower(t.f_table_name) AND " - "Lower(s.f_geometry_column) = Lower(t.f_geometry_column) AND " - "(s.last_verified < t.last_insert OR " - "s.last_verified < t.last_update OR " - "s.last_verified < t.last_delete OR " - "s.last_verified IS NULL)", table); - } - else - { - /* processing a single table/geometry entry */ - sql_statement = - sqlite3_mprintf ("SELECT t.f_table_name, t.f_geometry_column " - "FROM geometry_columns_time AS t, " - "geometry_columns_statistics AS s " - "WHERE Lower(t.f_table_name) = Lower(%Q) AND " - "Lower(t.f_geometry_column) = Lower(%Q) AND " - "Lower(s.f_table_name) = Lower(t.f_table_name) AND " - "Lower(s.f_geometry_column) = Lower(t.f_geometry_column) AND " - "(s.last_verified < t.last_insert OR " - "s.last_verified < t.last_update OR " - "s.last_verified < t.last_delete OR " - "s.last_verified IS NULL)", table, column); - } - ret = - sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - f_table_name = results[(i * columns) + 0]; - f_geometry_column = results[(i * columns) + 1]; - if (!do_compute_layer_statistics - (sqlite, f_table_name, f_geometry_column, - SPATIALITE_STATISTICS_GENUINE)) - { - error = 1; - break; - } - } - } - sqlite3_free_table (results); - if (error) - return 0; - return 1; -} - - -static int -genuine_layer_statistics (sqlite3 * sqlite, const char *table, - const char *column) -{ -/* updating genuine LAYER_STATISTICS metadata */ - char *sql_statement; - int ret; - const char *f_table_name; - const char *f_geometry_column; - int i; - char **results; - int rows; - int columns; - int error = 0; - int metadata_version = checkSpatialMetaData (sqlite); - - if (metadata_version == 3) - { - /* current metadata style >= v.4.0.0 */ - return genuine_layer_statistics_v4 (sqlite, table, column); - } - - if (table == NULL && column == NULL) - { - /* processing any table/geometry found in GEOMETRY_COLUMNS */ - sql_statement = - sqlite3_mprintf ("SELECT f_table_name, f_geometry_column " - "FROM geometry_columns"); - } - else if (column == NULL) - { - /* processing any geometry belonging to this table */ - sql_statement = - sqlite3_mprintf ("SELECT f_table_name, f_geometry_column " - "FROM geometry_columns " - "WHERE Lower(f_table_name) = Lower(%Q)", table); - } - else - { - /* processing a single table/geometry entry */ - sql_statement = - sqlite3_mprintf ("SELECT f_table_name, f_geometry_column " - "FROM geometry_columns " - "WHERE Lower(f_table_name) = Lower(%Q) " - "AND Lower(f_geometry_column) = Lower(%Q)", - table, column); - } - ret = - sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - f_table_name = results[(i * columns) + 0]; - f_geometry_column = results[(i * columns) + 1]; - if (!do_compute_layer_statistics - (sqlite, f_table_name, f_geometry_column, - SPATIALITE_STATISTICS_GENUINE)) - { - error = 1; - break; - } - } - } - sqlite3_free_table (results); - if (error) - return 0; - return 1; -} - -static int -views_layer_statistics (sqlite3 * sqlite, const char *table, const char *column) -{ -/* updating VIEWS_LAYER_STATISTICS metadata */ - char *sql_statement; - int ret; - const char *view_name; - const char *view_geometry; - int i; - char **results; - int rows; - int columns; - int error = 0; - - if (table == NULL && column == NULL) - { - /* processing any table/geometry found in VIEWS_GEOMETRY_COLUMNS */ - sql_statement = sqlite3_mprintf ("SELECT view_name, view_geometry " - "FROM views_geometry_columns"); - } - else if (column == NULL) - { - /* processing any geometry belonging to this table */ - sql_statement = sqlite3_mprintf ("SELECT view_name, view_geometry " - "FROM views_geometry_columns " - "WHERE Lower(view_name) = Lower(%Q)", - table); - } - else - { - /* processing a single table/geometry entry */ - sql_statement = sqlite3_mprintf ("SELECT view_name, view_geometry " - "FROM views_geometry_columns " - "WHERE Lower(view_name) = Lower(%Q) " - "AND Lower(view_geometry) = Lower(%Q)", - table, column); - } - ret = - sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - view_name = results[(i * columns) + 0]; - view_geometry = results[(i * columns) + 1]; - if (!do_compute_layer_statistics - (sqlite, view_name, view_geometry, - SPATIALITE_STATISTICS_VIEWS)) - { - error = 1; - break; - } - } - } - sqlite3_free_table (results); - if (error) - return 0; - return 1; -} - -static int -virts_layer_statistics (sqlite3 * sqlite, const char *table, const char *column) -{ -/* updating VIRTS_LAYER_STATISTICS metadata */ - char *sql_statement; - int ret; - const char *f_table_name; - const char *f_geometry_column; - int i; - char **results; - int rows; - int columns; - int error = 0; - - if (table == NULL && column == NULL) - { - /* processing any table/geometry found in VIRTS_GEOMETRY_COLUMNS */ - sql_statement = sqlite3_mprintf ("SELECT virt_name, virt_geometry " - "FROM virts_geometry_columns"); - } - else if (column == NULL) - { - /* processing any geometry belonging to this table */ - sql_statement = sqlite3_mprintf ("SELECT virt_name, virt_geometry " - "FROM virts_geometry_columns " - "WHERE Lower(virt_name) = Lower(%Q)", - table); - } - else - { - /* processing a single table/geometry entry */ - sql_statement = sqlite3_mprintf ("SELECT virt_name, virt_geometry " - "FROM virts_geometry_columns " - "WHERE Lower(virt_name) = Lower(%Q) " - "AND Lower(virt_geometry) = Lower(%Q)", - table, column); - } - ret = - sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, - NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - f_table_name = results[(i * columns) + 0]; - f_geometry_column = results[(i * columns) + 1]; - if (!do_compute_layer_statistics - (sqlite, f_table_name, f_geometry_column, - SPATIALITE_STATISTICS_VIRTS)) - { - error = 1; - break; - } - } - } - sqlite3_free_table (results); - if (error) - return 0; - return 1; -} - -static int -has_views_metadata (sqlite3 * sqlite) -{ -/* testing if the VIEWS_GEOMETRY_COLUMNS table exists */ - char **results; - int rows; - int columns; - int ret; - int i; - int defined = 0; - ret = - sqlite3_get_table (sqlite, "PRAGMA table_info(views_geometry_columns)", - &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - defined = 1; - } - sqlite3_free_table (results); - return defined; -} - -static int -has_virts_metadata (sqlite3 * sqlite) -{ -/* testing if the VIRTS_GEOMETRY_COLUMNS table exists */ - char **results; - int rows; - int columns; - int ret; - int i; - int defined = 0; - ret = - sqlite3_get_table (sqlite, "PRAGMA table_info(virts_geometry_columns)", - &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - defined = 1; - } - sqlite3_free_table (results); - return defined; -} - -SPATIALITE_DECLARE int -update_layer_statistics (sqlite3 * sqlite, const char *table, - const char *column) -{ -/* updating LAYER_STATISTICS metadata [main] */ - if (!genuine_layer_statistics (sqlite, table, column)) - return 0; - if (has_views_metadata (sqlite)) - { - if (!views_layer_statistics (sqlite, table, column)) - return 0; - } - if (has_virts_metadata (sqlite)) - { - if (!virts_layer_statistics (sqlite, table, column)) - return 0; - } - return 1; -} - -struct drop_params -{ -/* a struct supporting Drop Table */ - char **rtrees; - int n_rtrees; - int is_view; - int ok_geometry_columns; - int ok_views_geometry_columns; - int ok_virts_geometry_columns; - int ok_geometry_columns_auth; - int ok_geometry_columns_field_infos; - int ok_geometry_columns_statistics; - int ok_views_geometry_columns_auth; - int ok_views_geometry_columns_field_infos; - int ok_views_geometry_columns_statistics; - int ok_virts_geometry_columns_auth; - int ok_virts_geometry_columns_field_infos; - int ok_virts_geometry_columns_statistics; - int ok_layer_statistics; - int ok_views_layer_statistics; - int ok_virts_layer_statistics; - int ok_layer_params; - int ok_layer_sub_classes; - int ok_layer_table_layout; -}; - -static int -do_drop_table (sqlite3 * sqlite, const char *table, struct drop_params *aux) -{ -/* performing the actual work */ - char *sql; - char *q_name; - int i; - - if (aux->is_view) - { - /* dropping a View */ - q_name = gaiaDoubleQuotedSql (table); - sql = sqlite3_mprintf ("DROP VIEW IF EXISTS \"%s\"", q_name); - free (q_name); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - else - { - /* dropping a Table */ - q_name = gaiaDoubleQuotedSql (table); - sql = sqlite3_mprintf ("DROP TABLE IF EXISTS \"%s\"", q_name); - free (q_name); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - - for (i = 0; i < aux->n_rtrees; i++) - { - /* dropping any R*Tree */ - q_name = gaiaDoubleQuotedSql (*(aux->rtrees + i)); - sql = sqlite3_mprintf ("DROP TABLE IF EXISTS \"%s\"", q_name); - free (q_name); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - - if (aux->ok_layer_params) - { - /* deleting from LAYER_PARAMS */ - sql = sqlite3_mprintf ("DELETE FROM layer_params " - "WHERE lower(table_name) = lower(%Q)", table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_layer_sub_classes) - { - /* deleting from LAYER_SUB_CLASSES */ - sql = sqlite3_mprintf ("DELETE FROM layer_sub_classes " - "WHERE lower(table_name) = lower(%Q)", table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_layer_table_layout) - { - /* deleting from LAYER_TABLE_LAYOUT */ - sql = sqlite3_mprintf ("DELETE FROM layer_table_layout " - "WHERE lower(table_name) = lower(%Q)", table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_geometry_columns_auth) - { - /* deleting from GEOMETRY_COLUMNS_AUTH */ - sql = sqlite3_mprintf ("DELETE FROM geometry_columns_auth " - "WHERE lower(f_table_name) = lower(%Q)", - table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_geometry_columns_field_infos) - { - /* deleting from GEOMETRY_COLUMNS_FIELD_INFOS */ - sql = sqlite3_mprintf ("DELETE FROM geometry_columns_fiels_infos " - "WHERE lower(f_table_name) = lower(%Q)", - table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_geometry_columns_statistics) - { - /* deleting from GEOMETRY_COLUMNS_STATISTICS */ - sql = sqlite3_mprintf ("DELETE FROM geometry_columns_statistics " - "WHERE lower(f_table_name) = lower(%Q)", - table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_views_geometry_columns_auth) - { - /* deleting from VIEWS_GEOMETRY_COLUMNS_AUTH */ - sql = sqlite3_mprintf ("DELETE FROM views_geometry_columns_auth " - "WHERE lower(view_name) = lower(%Q)", table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_views_geometry_columns_field_infos) - { - /* deleting from VIEWS_GEOMETRY_COLUMNS_FIELD_INFOS */ - sql = - sqlite3_mprintf ("DELETE FROM views_geometry_columns_fiels_infos " - "WHERE view_name = %Q", table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_views_geometry_columns_statistics) - { - /* deleting from VIEWS_GEOMETRY_COLUMNS_STATISTICS */ - sql = - sqlite3_mprintf ("DELETE FROM views_geometry_columns_statistics " - "WHERE lower(view_name) = lower(%Q)", table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_virts_geometry_columns_auth) - { - /* deleting from VIRTS_GEOMETRY_COLUMNS_AUTH */ - sql = sqlite3_mprintf ("DELETE FROM virts_geometry_columns_auth " - "WHERE lower(virt_name) = lower(%Q)", table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_virts_geometry_columns_field_infos) - { - /* deleting from VIRTS_GEOMETRY_COLUMNS_FIELD_INFOS */ - sql = - sqlite3_mprintf ("DELETE FROM virts_geometry_columns_fiels_infos " - "WHERE lower(virt_name) = lower(%Q)", table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_virts_geometry_columns_statistics) - { - /* deleting from VIRTS_GEOMETRY_COLUMNS_STATISTICS */ - sql = - sqlite3_mprintf ("DELETE FROM virts_geometry_columns_statistics " - "WHERE lower(virt_name) = lower(%Q)", table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_layer_statistics) - { - /* deleting from LAYER_STATISTICS */ - sql = sqlite3_mprintf ("DELETE FROM layer_statistics " - "WHERE lower(table_name) = lower(%Q)", table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_views_layer_statistics) - { - /* deleting from VIEWS_LAYER_STATISTICS */ - sql = sqlite3_mprintf ("DELETE FROM views_layer_statistics " - "WHERE lower(view_name) = lower(%Q)", table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_virts_layer_statistics) - { - /* deleting from VIRTS_LAYER_STATISTICS */ - sql = sqlite3_mprintf ("DELETE FROM virts_layer_statistics " - "WHERE lower(virt_name) = lower(%Q)", table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_geometry_columns) - { - /* deleting from GEOMETRY_COLUMNS */ - sql = sqlite3_mprintf ("DELETE FROM geometry_columns " - "WHERE lower(f_table_name) = lower(%Q)", - table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_views_geometry_columns) - { - /* deleting from VIEWS_GEOMETRY_COLUMNS */ - sql = sqlite3_mprintf ("DELETE FROM views_geometry_columns " - "WHERE lower(view_name) = lower(%Q)", table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (aux->ok_virts_geometry_columns) - { - /* deleting from VIEWS_GEOMETRY_COLUMNS */ - sql = sqlite3_mprintf ("DELETE FROM virts_geometry_columns " - "WHERE lower(virt_name) = lower(%Q)", table); - sqlite3_exec (sqlite, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - - return 1; -} - -static int -do_drop_sub_view (sqlite3 * sqlite, const char *table, struct drop_params *aux) -{ -/* dropping any depending View */ - int ret; - int i; - char **results; - int rows; - int columns; - char *sql; - struct drop_params aux2; - -/* initializing the aux params */ - aux2.rtrees = NULL; - aux2.n_rtrees = 0; - aux2.is_view = 1; - aux2.ok_geometry_columns = 0; - aux2.ok_views_geometry_columns = aux->ok_views_geometry_columns; - aux2.ok_virts_geometry_columns = aux->ok_virts_geometry_columns; - aux2.ok_geometry_columns_auth = aux->ok_geometry_columns_auth; - aux2.ok_geometry_columns_field_infos = aux->ok_geometry_columns_field_infos; - aux2.ok_geometry_columns_statistics = aux->ok_geometry_columns_statistics; - aux2.ok_views_geometry_columns_auth = aux->ok_views_geometry_columns_auth; - aux2.ok_views_geometry_columns_field_infos = - aux->ok_views_geometry_columns_field_infos; - aux2.ok_views_geometry_columns_statistics = - aux->ok_views_geometry_columns_statistics; - aux2.ok_virts_geometry_columns_auth = aux->ok_virts_geometry_columns_auth; - aux2.ok_virts_geometry_columns_field_infos = - aux->ok_virts_geometry_columns_field_infos; - aux2.ok_virts_geometry_columns_statistics = - aux->ok_virts_geometry_columns_statistics; - aux2.ok_layer_statistics = aux->ok_layer_statistics; - aux2.ok_views_layer_statistics = aux->ok_views_layer_statistics; - aux2.ok_virts_layer_statistics = aux->ok_virts_layer_statistics; - aux2.ok_layer_params = aux->ok_layer_params; - aux2.ok_layer_sub_classes = aux->ok_layer_sub_classes; - aux2.ok_layer_table_layout = aux->ok_layer_table_layout; - - - if (aux->ok_views_geometry_columns == 0) - return 1; - -/* identifying any View depending on the target */ - sql = sqlite3_mprintf ("SELECT view_name FROM views_geometry_columns " - "WHERE Lower(f_table_name) = Lower(%Q)", table); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { - for (i = 1; i <= rows; i++) - { - const char *name = results[(i * columns) + 0]; - /* dropping the view itself */ - if (!do_drop_table (sqlite, name, &aux2)) - return 0; - } - } - sqlite3_free_table (results); - return 1; -} - -static int -check_drop_layout (sqlite3 * sqlite, const char *table, struct drop_params *aux) -{ -/* checking the actual DB configuration */ - int i; - char **results; - int rows; - int columns; - char jolly = '%'; - char *x_name; - char *sql = - "SELECT type, name FROM sqlite_master WHERE type = 'table' or type = 'view'"; - int ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ret = 0; - else - { - ret = 1; - for (i = 1; i <= rows; i++) - { - const char *type = results[(i * columns) + 0]; - const char *name = results[(i * columns) + 1]; - if (name) - { - /* checking which tables are actually defined */ - if (strcasecmp (name, "geometry_columns") == 0) - aux->ok_geometry_columns = 1; - if (strcasecmp (name, "views_geometry_columns") == 0) - aux->ok_views_geometry_columns = 1; - if (strcasecmp (name, "virts_geometry_columns") == 0) - aux->ok_virts_geometry_columns = 1; - if (strcasecmp (name, "geometry_columns_auth") == 0) - aux->ok_geometry_columns_auth = 1; - if (strcasecmp (name, "views_geometry_columns_auth") == 0) - aux->ok_views_geometry_columns_auth = 1; - if (strcasecmp (name, "virts_geometry_columns_auth") == 0) - aux->ok_virts_geometry_columns_auth = 1; - if (strcasecmp (name, "geometry_columns_statistics") == 0) - aux->ok_geometry_columns_statistics = 1; - if (strcasecmp (name, "views_geometry_columns_statistics") - == 0) - aux->ok_views_geometry_columns_statistics = 1; - if (strcasecmp (name, "virts_geometry_columns_statistics") - == 0) - aux->ok_virts_geometry_columns_statistics = 1; - if (strcasecmp (name, "geometry_columns_field_infos") == - 0) - aux->ok_geometry_columns_field_infos = 1; - if (strcasecmp - (name, "views_geometry_columns_field_infos") == 0) - aux->ok_views_geometry_columns_field_infos = 1; - if (strcasecmp - (name, "virts_geometry_columns_field_infos") == 0) - aux->ok_virts_geometry_columns_field_infos = 1; - if (strcasecmp (name, "layer_params") == 0) - aux->ok_layer_params = 1; - if (strcasecmp (name, "layer_statistics") == 0) - aux->ok_layer_statistics = 1; - if (strcasecmp (name, "layer_sub_classes") == 0) - aux->ok_layer_sub_classes = 1; - if (strcasecmp (name, "layer_table_layout") == 0) - aux->ok_layer_table_layout = 1; - if (strcasecmp (name, "views_geometry_columns") == 0) - aux->ok_views_geometry_columns = 1; - if (strcasecmp (name, "virts_geometry_columns") == 0) - aux->ok_virts_geometry_columns = 1; - if (strcasecmp (name, "virts_geometry_columns") == 0) - aux->ok_virts_geometry_columns = 1; - if (strcasecmp (name, table) == 0) - { - /* checking if the target is a view */ - if (strcasecmp (type, "view") == 0) - aux->is_view = 1; - } - } - } - } - sqlite3_free_table (results); - if (!ret) - return 0; - -/* identifying any possible R*Tree supporting the main target */ - x_name = sqlite3_mprintf ("idx_%s_%c", table, jolly); - sql = - sqlite3_mprintf ("SELECT name FROM sqlite_master WHERE type = 'table' " - "AND name LIKE(%Q) AND sql LIKE('%cvirtual%c') AND sql LIKE('%crtree%c')", - x_name, jolly, jolly, jolly, jolly); - sqlite3_free (x_name); - ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - return 0; - if (rows < 1) - ; - else - { -/* allocating the rtrees array */ - aux->n_rtrees = rows; - aux->rtrees = malloc (sizeof (char **) * aux->n_rtrees); - for (i = 1; i <= rows; i++) - { - const char *name = results[(i * columns) + 0]; - int len = strlen (name); - *(aux->rtrees + (i - 1)) = malloc (len + 1); - strcpy (*(aux->rtrees + (i - 1)), name); - } - } - sqlite3_free_table (results); - return 1; -} - -SPATIALITE_DECLARE int -gaiaDropTable (sqlite3 * sqlite, const char *table) -{ -/* dropping a Spatial Table and any other related stuff */ - int ret; - struct drop_params aux; - -/* initializing the aux params */ - aux.rtrees = NULL; - aux.n_rtrees = 0; - aux.is_view = 0; - aux.ok_geometry_columns = 0; - aux.ok_views_geometry_columns = 0; - aux.ok_virts_geometry_columns = 0; - aux.ok_geometry_columns_auth = 0; - aux.ok_geometry_columns_field_infos = 0; - aux.ok_geometry_columns_statistics = 0; - aux.ok_views_geometry_columns_auth = 0; - aux.ok_views_geometry_columns_field_infos = 0; - aux.ok_views_geometry_columns_statistics = 0; - aux.ok_virts_geometry_columns_auth = 0; - aux.ok_virts_geometry_columns_field_infos = 0; - aux.ok_virts_geometry_columns_statistics = 0; - aux.ok_layer_statistics = 0; - aux.ok_views_layer_statistics = 0; - aux.ok_virts_layer_statistics = 0; - aux.ok_layer_params = 0; - aux.ok_layer_sub_classes = 0; - aux.ok_layer_table_layout = 0; - if (table == NULL) - return 0; -/* the whole operation is a single transaction */ - ret = sqlite3_exec (sqlite, "BEGIN", NULL, NULL, NULL); - if (ret != SQLITE_OK) - return 0; -/* checking the actual DB configuration */ - if (!check_drop_layout (sqlite, table, &aux)) - goto rollback; -/* recursively dropping any depending View */ - if (!do_drop_sub_view (sqlite, table, &aux)) - goto rollback; - if (!do_drop_table (sqlite, table, &aux)) - goto rollback; -/* committing the still pending transaction */ - ret = sqlite3_exec (sqlite, "COMMIT", NULL, NULL, NULL); - if (ret != SQLITE_OK) - goto rollback; - if (aux.rtrees) - { - /* memory cleanup - rtrees */ - int i; - for (i = 0; i < aux.n_rtrees; i++) - { - if (*(aux.rtrees + i) != NULL) - free (*(aux.rtrees + i)); - } - free (aux.rtrees); - } - return 1; - - rollback: - -/* invalidating the still pending transaction */ - sqlite3_exec (sqlite, "ROLLBACK", NULL, NULL, NULL); - if (aux.rtrees) - { - /* memory cleanup - rtrees */ - int i; - for (i = 0; i < aux.n_rtrees; i++) - { - if (*(aux.rtrees + i) != NULL) - free (*(aux.rtrees + i)); - } - free (aux.rtrees); - } - return 0; -} diff --git a/src/spatialite/src/spatialite/virtualXL.c b/src/spatialite/src/spatialite/virtualXL.c deleted file mode 100644 index 531c0d2..0000000 --- a/src/spatialite/src/spatialite/virtualXL.c +++ /dev/null @@ -1,937 +0,0 @@ -/* - - virtualXLc -- SQLite3 extension [VIRTUAL TABLE accessing .XLS] - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include - -#include -#include -#include - -#ifndef OMIT_FREEXL -#include -#endif - -#ifdef _WIN32 -#define strcasecmp _stricmp -#endif /* not WIN32 */ - -#ifndef OMIT_ICONV /* if ICONV is disabled no XL support is available */ -#ifndef OMIT_FREEXL /* FreeXL is disabled */ - -static struct sqlite3_module my_XL_module; - -typedef struct VirtualXLStruct -{ -/* extends the sqlite3_vtab struct */ - const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ - int nRef; /* # references: USED INTERNALLY BY SQLITE */ - char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ - sqlite3 *db; /* the sqlite db holding the virtual table */ - const void *XL_handle; /* the XL handle */ - unsigned int rows; /* Worksheet #rows */ - unsigned short columns; /* Worksheet #columns */ - char firstLineTitles; /* 'Y' or 'N' */ -} VirtualXL; -typedef VirtualXL *VirtualXLPtr; - -typedef struct VirtualXLConstraintStruct -{ -/* a constraint to be verified for xFilter */ - int iColumn; /* Column on left-hand side of constraint */ - int op; /* Constraint operator */ - char valueType; /* value Type ('I'=int,'D'=double,'T'=text) */ - sqlite3_int64 intValue; /* Int64 comparison value */ - double dblValue; /* Double comparison value */ - char *txtValue; /* Text comparison value */ - struct VirtualXLConstraintStruct *next; -} VirtualXLConstraint; -typedef VirtualXLConstraint *VirtualXLConstraintPtr; - -typedef struct VirtualXLCursorStruct -{ -/* extends the sqlite3_vtab_cursor struct */ - VirtualXLPtr pVtab; /* Virtual table of this cursor */ - unsigned int current_row; /* the current row ID */ - int eof; /* the EOF marker */ - VirtualXLConstraintPtr firstConstraint; - VirtualXLConstraintPtr lastConstraint; -} VirtualXLCursor; -typedef VirtualXLCursor *VirtualXLCursorPtr; - -static int -vXL_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* creates the virtual table connected to some XLS file */ - char *sql; - VirtualXLPtr p_vt; - char path[2048]; - char firstLineTitles = 'N'; - unsigned int worksheet = 0; - unsigned int max_worksheet; - unsigned int info; - unsigned int rows; - unsigned short columns; - unsigned short col; - int len; - int ret; - const void *handle; - const char *pPath = NULL; - char *xname; - gaiaOutBuffer sql_statement; - if (pAux) - pAux = pAux; /* unused arg warning suppression */ -/* checking for XLS PATH */ - if (argc == 4 || argc == 5 || argc == 6) - { - pPath = argv[3]; - len = strlen (pPath); - if ((*(pPath + 0) == '\'' || *(pPath + 0) == '"') - && (*(pPath + len - 1) == '\'' || *(pPath + len - 1) == '"')) - { - /* the path is enclosed between quotes - we need to dequote it */ - strcpy (path, pPath + 1); - len = strlen (path); - *(path + len - 1) = '\0'; - } - else - strcpy (path, pPath); - if (argc == 5 || argc == 6) - worksheet = atoi (argv[4]); - if (argc == 6) - { - if (atoi (argv[5]) == 1) - firstLineTitles = 'Y'; - } - } - else - { - *pzErr = - sqlite3_mprintf - ("[VirtualXL module] CREATE VIRTUAL: illegal arg list {xls_path [, worksheet_index [, first_line_titles(1/0)]]}"); - return SQLITE_ERROR; - } -/* allocating the main XL module */ - p_vt = (VirtualXLPtr) sqlite3_malloc (sizeof (VirtualXL)); - if (!p_vt) - return SQLITE_NOMEM; - p_vt->pModule = &my_XL_module; - p_vt->nRef = 0; - p_vt->zErrMsg = NULL; - p_vt->db = db; - p_vt->XL_handle = NULL; - p_vt->rows = 0; - p_vt->columns = 0; - p_vt->firstLineTitles = firstLineTitles; -/* opening the .XLS file [Workbook] */ - ret = freexl_open (path, &handle); - if (ret != FREEXL_OK) - { - /* free memory */ - freexl_close (handle); - /* something is going the wrong way; creating a stupid default table */ - xname = gaiaDoubleQuotedSql (argv[2]); - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (PKUID INTEGER)", xname); - free (xname); - if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) - { - sqlite3_free (sql); - *pzErr = - sqlite3_mprintf - ("[VirtualXL module] cannot build a table from XL\n"); - return SQLITE_ERROR; - } - sqlite3_free (sql); - *ppVTab = (sqlite3_vtab *) p_vt; - return SQLITE_OK; - } -/* checking if Password Protected [obfuscated] */ - freexl_get_info (handle, FREEXL_BIFF_PASSWORD, &info); - if (info != FREEXL_BIFF_PLAIN) - { - /* free memory */ - freexl_close (handle); - /* Obfuscated: creating a stupid default table */ - xname = gaiaDoubleQuotedSql (argv[2]); - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (PKUID INTEGER)", xname); - free (xname); - if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) - { - sqlite3_free (sql); - *pzErr = - sqlite3_mprintf - ("[VirtualXL module] Password protected [obfuscated] .xls\n"); - return SQLITE_ERROR; - } - sqlite3_free (sql); - *ppVTab = (sqlite3_vtab *) p_vt; - return SQLITE_OK; - } -/* querying how many Worksheets are there */ - freexl_get_info (handle, FREEXL_BIFF_SHEET_COUNT, &max_worksheet); - if (worksheet >= max_worksheet) - { - /* free memory */ - freexl_close (handle); - /* no such Worksheet: creating a stupid default table */ - xname = gaiaDoubleQuotedSql (argv[2]); - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (PKUID INTEGER)", xname); - free (xname); - if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) - { - sqlite3_free (sql); - *pzErr = - sqlite3_mprintf - ("[VirtualXL module] no such Worksheet [index=%u]\n", - worksheet); - return SQLITE_ERROR; - } - sqlite3_free (sql); - *ppVTab = (sqlite3_vtab *) p_vt; - return SQLITE_OK; - } -/* selecting the currently active XL Worksheet */ - freexl_select_active_worksheet (handle, worksheet); - freexl_worksheet_dimensions (handle, &rows, &columns); - p_vt->XL_handle = handle; - p_vt->rows = rows; - p_vt->columns = columns; -/* preparing the COLUMNs for this VIRTUAL TABLE */ - gaiaOutBufferInitialize (&sql_statement); - xname = gaiaDoubleQuotedSql (argv[2]); - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (row_no INTEGER", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - if (firstLineTitles == 'Y') - { - /* fetching column names */ - for (col = 0; col < columns; col++) - { - FreeXL_CellValue cell; - int ret = freexl_get_cell_value (handle, 0, col, &cell); - if (ret != FREEXL_OK) - sql = sqlite3_mprintf ("col_%d", col); - else - { - if (cell.type == FREEXL_CELL_INT) - sql = sqlite3_mprintf ("%d", cell.value.int_value); - else if (cell.type == FREEXL_CELL_DOUBLE) - sql = - sqlite3_mprintf ("%1.2f", - cell.value.double_value); - else if (cell.type == FREEXL_CELL_TEXT - || cell.type == FREEXL_CELL_SST_TEXT - || cell.type == FREEXL_CELL_DATE - || cell.type == FREEXL_CELL_DATETIME - || cell.type == FREEXL_CELL_TIME) - { - int len = strlen (cell.value.text_value); - if (len < 256) - sql = - sqlite3_mprintf ("%s", - cell.value.text_value); - else - sql = sqlite3_mprintf ("col_%d", col); - } - else - sql = sqlite3_mprintf ("col_%d", col); - } - xname = gaiaDoubleQuotedSql (sql); - sqlite3_free (sql); - sql = sqlite3_mprintf (", \"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - } - } - else - { - /* setting default column names */ - for (col = 0; col < columns; col++) - { - sql = sqlite3_mprintf ("col_%d", col); - xname = gaiaDoubleQuotedSql (sql); - sqlite3_free (sql); - sql = sqlite3_mprintf (", \"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - } - } - gaiaAppendToOutBuffer (&sql_statement, ")"); - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - { - if (sqlite3_declare_vtab (db, sql_statement.Buffer) != SQLITE_OK) - { - *pzErr = - sqlite3_mprintf - ("[VirtualXL module] CREATE VIRTUAL: invalid SQL statement \"%s\"", - sql_statement.Buffer); - gaiaOutBufferReset (&sql_statement); - return SQLITE_ERROR; - } - } - gaiaOutBufferReset (&sql_statement); - *ppVTab = (sqlite3_vtab *) p_vt; - return SQLITE_OK; -} - -static int -vXL_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* connects the virtual table to a .xls file - simply aliases vXL_create() */ - return vXL_create (db, pAux, argc, argv, ppVTab, pzErr); -} - -static int -vXL_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIndex) -{ -/* best index selection */ - int i; - int iArg = 0; - char str[2048]; - char buf[64]; - - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - - *str = '\0'; - for (i = 0; i < pIndex->nConstraint; i++) - { - if (pIndex->aConstraint[i].usable) - { - iArg++; - pIndex->aConstraintUsage[i].argvIndex = iArg; - pIndex->aConstraintUsage[i].omit = 1; - sprintf (buf, "%d:%d,", pIndex->aConstraint[i].iColumn, - pIndex->aConstraint[i].op); - strcat (str, buf); - } - } - if (*str != '\0') - { - pIndex->idxStr = sqlite3_mprintf ("%s", str); - pIndex->needToFreeIdxStr = 1; - } - - return SQLITE_OK; -} - -static int -vXL_disconnect (sqlite3_vtab * pVTab) -{ -/* disconnects the virtual table */ - VirtualXLPtr p_vt = (VirtualXLPtr) pVTab; - if (p_vt->XL_handle) - freexl_close (p_vt->XL_handle); - sqlite3_free (p_vt); - return SQLITE_OK; -} - -static int -vXL_destroy (sqlite3_vtab * pVTab) -{ -/* destroys the virtual table - simply aliases vXL_disconnect() */ - return vXL_disconnect (pVTab); -} - -static void -vXL_read_row (VirtualXLCursorPtr cursor) -{ -/* trying to read a "row" from XL */ - cursor->current_row++; - if (cursor->current_row > cursor->pVtab->rows) - { - cursor->eof = 1; - return; - } -} - -static int -vXL_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) -{ -/* opening a new cursor */ - VirtualXLCursorPtr cursor = - (VirtualXLCursorPtr) sqlite3_malloc (sizeof (VirtualXLCursor)); - if (cursor == NULL) - return SQLITE_ERROR; - cursor->firstConstraint = NULL; - cursor->lastConstraint = NULL; - cursor->pVtab = (VirtualXLPtr) pVTab; - if (cursor->pVtab->firstLineTitles == 'Y') - cursor->current_row = 1; - else - cursor->current_row = 0; - cursor->eof = 0; - *ppCursor = (sqlite3_vtab_cursor *) cursor; - vXL_read_row (cursor); - return SQLITE_OK; -} - -static void -vXL_free_constraints (VirtualXLCursorPtr cursor) -{ -/* memory cleanup - cursor constraints */ - VirtualXLConstraintPtr pC; - VirtualXLConstraintPtr pCn; - pC = cursor->firstConstraint; - while (pC) - { - pCn = pC->next; - if (pC->txtValue) - sqlite3_free (pC->txtValue); - sqlite3_free (pC); - pC = pCn; - } - cursor->firstConstraint = NULL; - cursor->lastConstraint = NULL; -} - -static int -vXL_close (sqlite3_vtab_cursor * pCursor) -{ -/* closing the cursor */ - VirtualXLCursorPtr cursor = (VirtualXLCursorPtr) pCursor; - vXL_free_constraints (cursor); - sqlite3_free (pCursor); - return SQLITE_OK; -} - -static int -vXL_parse_constraint (const char *str, int index, int *iColumn, int *op) -{ -/* parsing a constraint string */ - char buf[64]; - const char *in = str; - char *out = buf; - int i = 0; - int found = 0; - - *out = '\0'; - while (*in != '\0') - { - if (*in == ',') - { - if (index == i) - { - *out = '\0'; - found = 1; - break; - } - i++; - in++; - continue; - } - if (index == i) - *out++ = *in; - in++; - } - if (!found) - return 0; - in = buf; - for (i = 0; i < (int) strlen (buf); i++) - { - if (buf[i] == ':') - { - buf[i] = '\0'; - *iColumn = atoi (buf); - *op = atoi (buf + i + 1); - return 1; - } - in++; - } - return 0; -} - -static int -vXL_eval_constraints (VirtualXLCursorPtr cursor) -{ -/* evaluating Filter constraints */ - FreeXL_CellValue cell; - VirtualXLConstraintPtr pC = cursor->firstConstraint; - if (pC == NULL) - return 1; - while (pC) - { - int ok = 0; - if (pC->iColumn == 0) - { - /* the PRIMARY KEY column */ - if (pC->valueType == 'I') - { - int cur_row = cursor->current_row; - if (cursor->pVtab->firstLineTitles == 'Y') - cur_row--; - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (cur_row == pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (cur_row > pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (cur_row <= pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (cur_row < pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (cur_row >= pC->intValue) - ok = 1; - break; - }; - } - goto done; - } - if (cursor->pVtab->XL_handle != NULL - && cursor->current_row <= cursor->pVtab->rows - && pC->iColumn <= cursor->pVtab->columns) - freexl_get_cell_value (cursor->pVtab->XL_handle, - cursor->current_row - 1, pC->iColumn - 1, - &cell); - else - cell.type = FREEXL_CELL_NULL; - if (cell.type == FREEXL_CELL_INT) - { - if (pC->valueType == 'I') - { - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (cell.value.int_value == pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (cell.value.int_value > pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (cell.value.int_value <= pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (cell.value.int_value < pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (cell.value.int_value >= pC->intValue) - ok = 1; - break; - }; - } - if (pC->valueType == 'D') - { - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (cell.value.int_value == pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (cell.value.int_value > pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (cell.value.int_value <= pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (cell.value.int_value < pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (cell.value.int_value >= pC->dblValue) - ok = 1; - break; - }; - } - } - if (cell.type == FREEXL_CELL_DOUBLE) - { - if (pC->valueType == 'I') - { - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (cell.value.double_value == pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (cell.value.double_value > pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (cell.value.double_value <= pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (cell.value.double_value < pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (cell.value.double_value >= pC->intValue) - ok = 1; - break; - }; - } - if (pC->valueType == 'D') - { - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (cell.value.double_value == pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (cell.value.double_value > pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (cell.value.double_value <= pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (cell.value.double_value < pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (cell.value.double_value >= pC->dblValue) - ok = 1; - break; - }; - } - } - if ((cell.type == FREEXL_CELL_TEXT - || cell.type == FREEXL_CELL_SST_TEXT - || cell.type == FREEXL_CELL_DATE - || cell.type == FREEXL_CELL_DATETIME - || cell.type == FREEXL_CELL_TIME) && pC->valueType == 'T') - { - int ret = strcmp (cell.value.text_value, pC->txtValue); - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (ret == 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (ret > 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (ret <= 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (ret < 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (ret >= 0) - ok = 1; - break; - }; - } - done: - if (!ok) - return 0; - pC = pC->next; - } - return 1; -} - -static int -vXL_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, - int argc, sqlite3_value ** argv) -{ -/* setting up a cursor filter */ - int i; - int iColumn; - int op; - int len; - VirtualXLConstraintPtr pC; - VirtualXLCursorPtr cursor = (VirtualXLCursorPtr) pCursor; - if (idxNum) - idxNum = idxNum; /* unused arg warning suppression */ - -/* resetting any previously set filter constraint */ - vXL_free_constraints (cursor); - - for (i = 0; i < argc; i++) - { - if (!vXL_parse_constraint (idxStr, i, &iColumn, &op)) - continue; - pC = sqlite3_malloc (sizeof (VirtualXLConstraint)); - if (!pC) - continue; - pC->iColumn = iColumn; - pC->op = op; - pC->valueType = '\0'; - pC->txtValue = NULL; - pC->next = NULL; - - if (sqlite3_value_type (argv[i]) == SQLITE_INTEGER) - { - pC->valueType = 'I'; - pC->intValue = sqlite3_value_int64 (argv[i]); - } - if (sqlite3_value_type (argv[i]) == SQLITE_FLOAT) - { - pC->valueType = 'D'; - pC->dblValue = sqlite3_value_double (argv[i]); - } - if (sqlite3_value_type (argv[i]) == SQLITE_TEXT) - { - pC->valueType = 'T'; - len = sqlite3_value_bytes (argv[i]) + 1; - pC->txtValue = (char *) sqlite3_malloc (len); - if (pC->txtValue) - strcpy (pC->txtValue, - (char *) sqlite3_value_text (argv[i])); - } - if (cursor->firstConstraint == NULL) - cursor->firstConstraint = pC; - if (cursor->lastConstraint != NULL) - cursor->lastConstraint->next = pC; - cursor->lastConstraint = pC; - } - - if (cursor->pVtab->firstLineTitles == 'Y') - cursor->current_row = 1; - else - cursor->current_row = 0; - cursor->eof = 0; - while (1) - { - vXL_read_row (cursor); - if (cursor->eof) - break; - if (vXL_eval_constraints (cursor)) - break; - } - return SQLITE_OK; -} - -static int -vXL_next (sqlite3_vtab_cursor * pCursor) -{ -/* fetching a next row from cursor */ - VirtualXLCursorPtr cursor = (VirtualXLCursorPtr) pCursor; - while (1) - { - vXL_read_row (cursor); - if (cursor->eof) - break; - if (vXL_eval_constraints (cursor)) - break; - } - return SQLITE_OK; -} - -static int -vXL_eof (sqlite3_vtab_cursor * pCursor) -{ -/* cursor EOF */ - VirtualXLCursorPtr cursor = (VirtualXLCursorPtr) pCursor; - return cursor->eof; -} - -static int -vXL_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, - int column) -{ -/* fetching value for the Nth column */ - FreeXL_CellValue cell; - VirtualXLCursorPtr cursor = (VirtualXLCursorPtr) pCursor; - if (column == 0) - { - /* the PRIMARY KEY column */ - if (cursor->pVtab->firstLineTitles == 'Y') - sqlite3_result_int (pContext, cursor->current_row - 1); - else - sqlite3_result_int (pContext, cursor->current_row); - return SQLITE_OK; - } - if (cursor->pVtab->XL_handle != NULL - && cursor->current_row <= cursor->pVtab->rows - && column <= cursor->pVtab->columns) - freexl_get_cell_value (cursor->pVtab->XL_handle, - cursor->current_row - 1, column - 1, &cell); - else - cell.type = FREEXL_CELL_NULL; - switch (cell.type) - { - case FREEXL_CELL_INT: - sqlite3_result_int (pContext, cell.value.int_value); - break; - case FREEXL_CELL_DOUBLE: - sqlite3_result_double (pContext, cell.value.double_value); - break; - case FREEXL_CELL_TEXT: - case FREEXL_CELL_SST_TEXT: - case FREEXL_CELL_DATE: - case FREEXL_CELL_DATETIME: - case FREEXL_CELL_TIME: - sqlite3_result_text (pContext, cell.value.text_value, - strlen (cell.value.text_value), SQLITE_STATIC); - break; - default: - sqlite3_result_null (pContext); - break; - }; - return SQLITE_OK; -} - -static int -vXL_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) -{ -/* fetching the ROWID */ - VirtualXLCursorPtr cursor = (VirtualXLCursorPtr) pCursor; - if (cursor->pVtab->firstLineTitles == 'Y') - *pRowid = cursor->current_row - 1; - else - *pRowid = cursor->current_row; - return SQLITE_OK; -} - -static int -vXL_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, - sqlite_int64 * pRowid) -{ -/* generic update [INSERT / UPDATE / DELETE */ - if (pVTab || argc || argv || pRowid) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_READONLY; -} - -static int -vXL_begin (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vXL_sync (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vXL_commit (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vXL_rollback (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -int -sqlite3VirtualXLInit (sqlite3 * db) -{ - int rc = SQLITE_OK; - my_XL_module.iVersion = 1; - my_XL_module.xCreate = &vXL_create; - my_XL_module.xConnect = &vXL_connect; - my_XL_module.xBestIndex = &vXL_best_index; - my_XL_module.xDisconnect = &vXL_disconnect; - my_XL_module.xDestroy = &vXL_destroy; - my_XL_module.xOpen = &vXL_open; - my_XL_module.xClose = &vXL_close; - my_XL_module.xFilter = &vXL_filter; - my_XL_module.xNext = &vXL_next; - my_XL_module.xEof = &vXL_eof; - my_XL_module.xColumn = &vXL_column; - my_XL_module.xRowid = &vXL_rowid; - my_XL_module.xUpdate = &vXL_update; - my_XL_module.xBegin = &vXL_begin; - my_XL_module.xSync = &vXL_sync; - my_XL_module.xCommit = &vXL_commit; - my_XL_module.xRollback = &vXL_rollback; - my_XL_module.xFindFunction = NULL; - sqlite3_create_module_v2 (db, "VirtualXL", &my_XL_module, NULL, 0); - return rc; -} - -int -virtualXL_extension_init (sqlite3 * db) -{ - return sqlite3VirtualXLInit (db); -} - -#endif /* FreeXL enabled/disabled */ -#endif /* ICONV enabled/disabled */ diff --git a/src/spatialite/src/spatialite/virtualdbf.c b/src/spatialite/src/spatialite/virtualdbf.c deleted file mode 100644 index fa0effb..0000000 --- a/src/spatialite/src/spatialite/virtualdbf.c +++ /dev/null @@ -1,906 +0,0 @@ -/* - - virtualdbf.c -- SQLite3 extension [VIRTUAL TABLE accessing DBF] - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include -#include - -#include -#include -#include - -#ifdef _WIN32 -#define strcasecmp _stricmp -#endif /* not WIN32 */ - -#ifndef OMIT_ICONV /* if ICONV is disabled no DBF support is available */ - -static struct sqlite3_module my_dbf_module; - -typedef struct VirtualDbfStruct -{ -/* extends the sqlite3_vtab struct */ - const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ - int nRef; /* # references: USED INTERNALLY BY SQLITE */ - char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ - sqlite3 *db; /* the sqlite db holding the virtual table */ - gaiaDbfPtr dbf; /* the DBF struct */ -} VirtualDbf; -typedef VirtualDbf *VirtualDbfPtr; - -typedef struct VirtualDbfConstraintStruct -{ -/* a constraint to be verified for xFilter */ - int iColumn; /* Column on left-hand side of constraint */ - int op; /* Constraint operator */ - char valueType; /* value Type ('I'=int,'D'=double,'T'=text) */ - sqlite3_int64 intValue; /* Int64 comparison value */ - double dblValue; /* Double comparison value */ - char *txtValue; /* Text comparison value */ - struct VirtualDbfConstraintStruct *next; -} VirtualDbfConstraint; -typedef VirtualDbfConstraint *VirtualDbfConstraintPtr; - -typedef struct VirtualDbfCursorStruct -{ -/* extends the sqlite3_vtab_cursor struct */ - VirtualDbfPtr pVtab; /* Virtual table of this cursor */ - long current_row; /* the current row ID */ - int eof; /* the EOF marker */ - VirtualDbfConstraintPtr firstConstraint; - VirtualDbfConstraintPtr lastConstraint; -} VirtualDbfCursor; - -typedef VirtualDbfCursor *VirtualDbfCursorPtr; - -static int -vdbf_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* creates the virtual table connected to some DBF */ - char *sql; - VirtualDbfPtr p_vt; - char path[2048]; - char encoding[128]; - const char *pEncoding = NULL; - int len; - const char *pPath = NULL; - gaiaDbfFieldPtr pFld; - int cnt; - int col_cnt; - int seed; - int dup; - int idup; - char *xname; - char **col_name = NULL; - gaiaOutBuffer sql_statement; - if (pAux) - pAux = pAux; /* unused arg warning suppression */ -/* checking for DBF PATH */ - if (argc == 5) - { - pPath = argv[3]; - len = strlen (pPath); - if ((*(pPath + 0) == '\'' || *(pPath + 0) == '"') - && (*(pPath + len - 1) == '\'' || *(pPath + len - 1) == '"')) - { - /* the path is enclosed between quotes - we need to dequote it */ - strcpy (path, pPath + 1); - len = strlen (path); - *(path + len - 1) = '\0'; - } - else - strcpy (path, pPath); - pEncoding = argv[4]; - len = strlen (pEncoding); - if ((*(pEncoding + 0) == '\'' || *(pEncoding + 0) == '"') - && (*(pEncoding + len - 1) == '\'' - || *(pEncoding + len - 1) == '"')) - { - /* the charset-name is enclosed between quotes - we need to dequote it */ - strcpy (encoding, pEncoding + 1); - len = strlen (encoding); - *(encoding + len - 1) = '\0'; - } - else - strcpy (encoding, pEncoding); - } - else - { - *pzErr = - sqlite3_mprintf - ("[VirtualDbf module] CREATE VIRTUAL: illegal arg list {dbf_path, encoding}"); - return SQLITE_ERROR; - } - p_vt = (VirtualDbfPtr) sqlite3_malloc (sizeof (VirtualDbf)); - if (!p_vt) - return SQLITE_NOMEM; - p_vt->pModule = &my_dbf_module; - p_vt->nRef = 0; - p_vt->zErrMsg = NULL; - p_vt->db = db; - p_vt->dbf = gaiaAllocDbf (); -/* trying to open file */ - gaiaOpenDbfRead (p_vt->dbf, path, encoding, "UTF-8"); - if (!(p_vt->dbf->Valid)) - { - /* something is going the wrong way; creating a stupid default table */ - xname = gaiaDoubleQuotedSql ((const char *) argv[2]); - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (PKUID INTEGER)", xname); - free (xname); - if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) - { - sqlite3_free (sql); - *pzErr = - sqlite3_mprintf - ("[VirtualDbf module] cannot build a table from DBF\n"); - return SQLITE_ERROR; - } - sqlite3_free (sql); - *ppVTab = (sqlite3_vtab *) p_vt; - return SQLITE_OK; - } -/* preparing the COLUMNs for this VIRTUAL TABLE */ - gaiaOutBufferInitialize (&sql_statement); - xname = gaiaDoubleQuotedSql (argv[2]); - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (PKUID INTEGER", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); -/* checking for duplicate / illegal column names and antialising them */ - col_cnt = 0; - pFld = p_vt->dbf->Dbf->First; - while (pFld) - { - /* counting DBF fields */ - col_cnt++; - pFld = pFld->Next; - } - col_name = malloc (sizeof (char *) * col_cnt); - cnt = 0; - seed = 0; - pFld = p_vt->dbf->Dbf->First; - while (pFld) - { - xname = gaiaDoubleQuotedSql (pFld->Name); - dup = 0; - for (idup = 0; idup < cnt; idup++) - { - if (strcasecmp (xname, *(col_name + idup)) == 0) - dup = 1; - } - if (strcasecmp (xname, "\"PKUID\"") == 0) - dup = 1; - if (dup) - { - free (xname); - sql = sqlite3_mprintf ("COL_%d", seed++); - xname = gaiaDoubleQuotedSql (sql); - sqlite3_free (sql); - } - if (pFld->Type == 'N') - { - if (pFld->Decimals > 0 || pFld->Length > 18) - sql = sqlite3_mprintf (", \"%s\" DOUBLE", xname); - else - sql = sqlite3_mprintf (", \"%s\" INTEGER", xname); - } - else if (pFld->Type == 'F') - sql = sqlite3_mprintf (", \"%s\" DOUBLE", xname); - else - sql = - sqlite3_mprintf (", \"%s\" VARCHAR(%d)", xname, pFld->Length); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - *(col_name + cnt) = xname; - cnt++; - pFld = pFld->Next; - } - gaiaAppendToOutBuffer (&sql_statement, ")"); - if (col_name) - { - /* releasing memory allocation for column names */ - for (cnt = 0; cnt < col_cnt; cnt++) - free (*(col_name + cnt)); - free (col_name); - } - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - { - if (sqlite3_declare_vtab (db, sql_statement.Buffer) != SQLITE_OK) - { - *pzErr = - sqlite3_mprintf - ("[VirtualDbf module] CREATE VIRTUAL: invalid SQL statement \"%s\"", - sql_statement.Buffer); - gaiaOutBufferReset (&sql_statement); - return SQLITE_ERROR; - } - } - gaiaOutBufferReset (&sql_statement); - *ppVTab = (sqlite3_vtab *) p_vt; - return SQLITE_OK; -} - -static int -vdbf_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* connects the virtual table to some DBF - simply aliases vdbf_create() */ - return vdbf_create (db, pAux, argc, argv, ppVTab, pzErr); -} - -static int -vdbf_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIndex) -{ -/* best index selection */ - int i; - int iArg = 0; - char str[2048]; - char buf[64]; - - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - - *str = '\0'; - for (i = 0; i < pIndex->nConstraint; i++) - { - if (pIndex->aConstraint[i].usable) - { - iArg++; - pIndex->aConstraintUsage[i].argvIndex = iArg; - pIndex->aConstraintUsage[i].omit = 1; - sprintf (buf, "%d:%d,", pIndex->aConstraint[i].iColumn, - pIndex->aConstraint[i].op); - strcat (str, buf); - } - } - if (*str != '\0') - { - pIndex->idxStr = sqlite3_mprintf ("%s", str); - pIndex->needToFreeIdxStr = 1; - } - - return SQLITE_OK; -} - -static int -vdbf_disconnect (sqlite3_vtab * pVTab) -{ -/* disconnects the virtual table */ - VirtualDbfPtr p_vt = (VirtualDbfPtr) pVTab; - if (p_vt->dbf) - gaiaFreeDbf (p_vt->dbf); - sqlite3_free (p_vt); - return SQLITE_OK; -} - -static int -vdbf_destroy (sqlite3_vtab * pVTab) -{ -/* destroys the virtual table - simply aliases vdbf_disconnect() */ - return vdbf_disconnect (pVTab); -} - -static void -vdbf_read_row (VirtualDbfCursorPtr cursor, int *deleted_row) -{ -/* trying to read a "row" from DBF */ - int ret; - int deleted; - if (!(cursor->pVtab->dbf->Valid)) - { - cursor->eof = 1; - return; - } - ret = gaiaReadDbfEntity (cursor->pVtab->dbf, cursor->current_row, &deleted); - if (!ret) - { - if (!(cursor->pVtab->dbf->LastError)) /* normal DBF EOF */ - { - cursor->eof = 1; - return; - } - /* an error occurred */ - spatialite_e ("%s\n", cursor->pVtab->dbf->LastError); - cursor->eof = 1; - return; - } - cursor->current_row++; - *deleted_row = deleted; -} - -static int -vdbf_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) -{ -/* opening a new cursor */ - int deleted; - VirtualDbfCursorPtr cursor = - (VirtualDbfCursorPtr) sqlite3_malloc (sizeof (VirtualDbfCursor)); - if (cursor == NULL) - return SQLITE_ERROR; - cursor->firstConstraint = NULL; - cursor->lastConstraint = NULL; - cursor->pVtab = (VirtualDbfPtr) pVTab; - cursor->current_row = 0; - cursor->eof = 0; - *ppCursor = (sqlite3_vtab_cursor *) cursor; - while (1) - { - vdbf_read_row (cursor, &deleted); - if (cursor->eof) - break; - if (!deleted) - break; - } - return SQLITE_OK; -} - -static void -vdbf_free_constraints (VirtualDbfCursorPtr cursor) -{ -/* memory cleanup - cursor constraints */ - VirtualDbfConstraintPtr pC; - VirtualDbfConstraintPtr pCn; - pC = cursor->firstConstraint; - while (pC) - { - pCn = pC->next; - if (pC->txtValue) - sqlite3_free (pC->txtValue); - sqlite3_free (pC); - pC = pCn; - } - cursor->firstConstraint = NULL; - cursor->lastConstraint = NULL; -} - -static int -vdbf_close (sqlite3_vtab_cursor * pCursor) -{ -/* closing the cursor */ - VirtualDbfCursorPtr cursor = (VirtualDbfCursorPtr) pCursor; - vdbf_free_constraints (cursor); - sqlite3_free (pCursor); - return SQLITE_OK; -} - -static int -vdbf_parse_constraint (const char *str, int index, int *iColumn, int *op) -{ -/* parsing a constraint string */ - char buf[64]; - const char *in = str; - char *out = buf; - int i = 0; - int found = 0; - - *out = '\0'; - while (*in != '\0') - { - if (*in == ',') - { - if (index == i) - { - *out = '\0'; - found = 1; - break; - } - i++; - in++; - continue; - } - if (index == i) - *out++ = *in; - in++; - } - if (!found) - return 0; - in = buf; - for (i = 0; i < (int) strlen (buf); i++) - { - if (buf[i] == ':') - { - buf[i] = '\0'; - *iColumn = atoi (buf); - *op = atoi (buf + i + 1); - return 1; - } - in++; - } - return 0; -} - -static int -vdbf_eval_constraints (VirtualDbfCursorPtr cursor) -{ -/* evaluating Filter constraints */ - int nCol; - gaiaDbfFieldPtr pFld; - VirtualDbfConstraintPtr pC = cursor->firstConstraint; - if (pC == NULL) - return 1; - while (pC) - { - int ok = 0; - if (pC->iColumn == 0) - { - /* the PRIMARY KEY column */ - if (pC->valueType == 'I') - { - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (cursor->current_row == pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (cursor->current_row > pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (cursor->current_row <= pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (cursor->current_row < pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (cursor->current_row >= pC->intValue) - ok = 1; - break; - }; - } - goto done; - } - nCol = 1; - pFld = cursor->pVtab->dbf->Dbf->First; - while (pFld) - { - if (nCol == pC->iColumn) - { - if ((pFld->Value)) - { - switch (pFld->Value->Type) - { - case GAIA_INT_VALUE: - if (pC->valueType == 'I') - { - - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (pFld->Value->IntValue == - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (pFld->Value->IntValue > - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (pFld->Value->IntValue <= - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (pFld->Value->IntValue < - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (pFld->Value->IntValue >= - pC->intValue) - ok = 1; - break; - }; - } - break; - case GAIA_DOUBLE_VALUE: - if (pC->valueType == 'I') - { - - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (pFld->Value->DblValue == - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (pFld->Value->DblValue > - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (pFld->Value->DblValue <= - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (pFld->Value->DblValue < - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (pFld->Value->DblValue >= - pC->intValue) - ok = 1; - break; - }; - } - if (pC->valueType == 'D') - { - - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (pFld->Value->DblValue == - pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (pFld->Value->DblValue > - pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (pFld->Value->DblValue <= - pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (pFld->Value->DblValue < - pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (pFld->Value->DblValue >= - pC->dblValue) - ok = 1; - break; - } - } - break; - case GAIA_TEXT_VALUE: - if (pC->valueType == 'T' && pC->txtValue) - { - - int ret; - ret = - strcmp (pFld->Value->TxtValue, - pC->txtValue); - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (ret == 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (ret > 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (ret <= 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (ret < 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (ret >= 0) - ok = 1; - break; - }; - } - break; - }; - } - goto done; - } - nCol++; - pFld = pFld->Next; - } - done: - if (!ok) - return 0; - pC = pC->next; - } - return 1; -} - -static int -vdbf_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, - int argc, sqlite3_value ** argv) -{ -/* setting up a cursor filter */ - int i; - int iColumn; - int op; - int len; - int deleted; - VirtualDbfConstraintPtr pC; - VirtualDbfCursorPtr cursor = (VirtualDbfCursorPtr) pCursor; - if (idxNum) - idxNum = idxNum; /* unused arg warning suppression */ - -/* resetting any previously set filter constraint */ - vdbf_free_constraints (cursor); - - for (i = 0; i < argc; i++) - { - if (!vdbf_parse_constraint (idxStr, i, &iColumn, &op)) - continue; - pC = sqlite3_malloc (sizeof (VirtualDbfConstraint)); - if (!pC) - continue; - pC->iColumn = iColumn; - pC->op = op; - pC->valueType = '\0'; - pC->txtValue = NULL; - pC->next = NULL; - - if (sqlite3_value_type (argv[i]) == SQLITE_INTEGER) - { - pC->valueType = 'I'; - pC->intValue = sqlite3_value_int64 (argv[i]); - } - if (sqlite3_value_type (argv[i]) == SQLITE_FLOAT) - { - pC->valueType = 'D'; - pC->dblValue = sqlite3_value_double (argv[i]); - } - if (sqlite3_value_type (argv[i]) == SQLITE_TEXT) - { - pC->valueType = 'T'; - len = sqlite3_value_bytes (argv[i]) + 1; - pC->txtValue = (char *) sqlite3_malloc (len); - if (pC->txtValue) - strcpy (pC->txtValue, - (char *) sqlite3_value_text (argv[i])); - } - if (cursor->firstConstraint == NULL) - cursor->firstConstraint = pC; - if (cursor->lastConstraint != NULL) - cursor->lastConstraint->next = pC; - cursor->lastConstraint = pC; - } - - cursor->current_row = 0; - cursor->eof = 0; - while (1) - { - vdbf_read_row (cursor, &deleted); - if (cursor->eof) - break; - if (deleted) - continue; - if (vdbf_eval_constraints (cursor)) - break; - } - return SQLITE_OK; -} - -static int -vdbf_next (sqlite3_vtab_cursor * pCursor) -{ -/* fetching a next row from cursor */ - int deleted; - VirtualDbfCursorPtr cursor = (VirtualDbfCursorPtr) pCursor; - while (1) - { - vdbf_read_row (cursor, &deleted); - if (cursor->eof) - break; - if (deleted) - continue; - if (vdbf_eval_constraints (cursor)) - break; - } - return SQLITE_OK; -} - -static int -vdbf_eof (sqlite3_vtab_cursor * pCursor) -{ -/* cursor EOF */ - VirtualDbfCursorPtr cursor = (VirtualDbfCursorPtr) pCursor; - return cursor->eof; -} - -static int -vdbf_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, - int column) -{ -/* fetching value for the Nth column */ - int nCol = 1; - gaiaDbfFieldPtr pFld; - VirtualDbfCursorPtr cursor = (VirtualDbfCursorPtr) pCursor; - if (column == 0) - { - /* the PRIMARY KEY column */ - sqlite3_result_int (pContext, cursor->current_row); - return SQLITE_OK; - } - pFld = cursor->pVtab->dbf->Dbf->First; - while (pFld) - { - /* column values */ - if (nCol == column) - { - if (!(pFld->Value)) - sqlite3_result_null (pContext); - else - { - switch (pFld->Value->Type) - { - case GAIA_INT_VALUE: - sqlite3_result_int64 (pContext, - pFld->Value->IntValue); - break; - case GAIA_DOUBLE_VALUE: - sqlite3_result_double (pContext, - pFld->Value->DblValue); - break; - case GAIA_TEXT_VALUE: - sqlite3_result_text (pContext, - pFld->Value->TxtValue, - strlen (pFld->Value->TxtValue), - SQLITE_STATIC); - break; - default: - sqlite3_result_null (pContext); - break; - } - } - break; - } - nCol++; - pFld = pFld->Next; - } - return SQLITE_OK; -} - -static int -vdbf_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) -{ -/* fetching the ROWID */ - VirtualDbfCursorPtr cursor = (VirtualDbfCursorPtr) pCursor; - *pRowid = cursor->current_row; - return SQLITE_OK; -} - -static int -vdbf_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, - sqlite_int64 * pRowid) -{ -/* generic update [INSERT / UPDATE / DELETE */ - if (pVTab || argc || argv || pRowid) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_READONLY; -} - -static int -vdbf_begin (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vdbf_sync (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vdbf_commit (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vdbf_rollback (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -int -sqlite3VirtualDbfInit (sqlite3 * db) -{ - int rc = SQLITE_OK; - my_dbf_module.iVersion = 1; - my_dbf_module.xCreate = &vdbf_create; - my_dbf_module.xConnect = &vdbf_connect; - my_dbf_module.xBestIndex = &vdbf_best_index; - my_dbf_module.xDisconnect = &vdbf_disconnect; - my_dbf_module.xDestroy = &vdbf_destroy; - my_dbf_module.xOpen = &vdbf_open; - my_dbf_module.xClose = &vdbf_close; - my_dbf_module.xFilter = &vdbf_filter; - my_dbf_module.xNext = &vdbf_next; - my_dbf_module.xEof = &vdbf_eof; - my_dbf_module.xColumn = &vdbf_column; - my_dbf_module.xRowid = &vdbf_rowid; - my_dbf_module.xUpdate = &vdbf_update; - my_dbf_module.xBegin = &vdbf_begin; - my_dbf_module.xSync = &vdbf_sync; - my_dbf_module.xCommit = &vdbf_commit; - my_dbf_module.xRollback = &vdbf_rollback; - my_dbf_module.xFindFunction = NULL; - sqlite3_create_module_v2 (db, "VirtualDbf", &my_dbf_module, NULL, 0); - return rc; -} - -int -virtualdbf_extension_init (sqlite3 * db) -{ - return sqlite3VirtualDbfInit (db); -} - -#endif /* ICONV enabled/disabled */ diff --git a/src/spatialite/src/spatialite/virtualfdo.c b/src/spatialite/src/spatialite/virtualfdo.c deleted file mode 100644 index dc7cdf2..0000000 --- a/src/spatialite/src/spatialite/virtualfdo.c +++ /dev/null @@ -1,2196 +0,0 @@ -/* - - virtualfdo.c -- SQLite3 extension [VIRTUAL TABLE accessing FDO-OGR tables] - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include - -#include -#include -#include - -/* constants definining FDO-OGR Geometry formats */ -#define FDO_OGR_NONE 0 -#define FDO_OGR_WKT 1 -#define FDO_OGR_WKB 2 -#define FDO_OGR_FGF 3 -#define FDO_OGR_SPLITE 4 - -#ifdef _WIN32 -#define strcasecmp _stricmp -#define strncasecmp _strnicmp -#endif /* not WIN32 */ - -#if defined(_WIN32) && !defined(__MINGW32__) -#define LONG64_MAX _I64_MAX -#define LONG64_MIN _I64_MIN -#else -#define LONG64_MAX 9223372036854775807LL -#define LONG64_MIN (-LONG64_MAX + 1) -#endif - -struct sqlite3_module my_fdo_module; - -typedef struct SqliteValue -{ -/* a multitype storing a column value */ - int Type; - sqlite3_int64 IntValue; - double DoubleValue; - char *Text; - unsigned char *Blob; - int Size; -} SqliteValue; -typedef SqliteValue *SqliteValuePtr; - -typedef struct VirtualFDOStruct -{ -/* extends the sqlite3_vtab struct */ - const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ - int nRef; /* # references: USED INTERNALLY BY SQLITE */ - char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ - sqlite3 *db; /* the sqlite db holding the virtual table */ - char *table; /* the real-table name */ - int nColumns; /* the # columns into the table */ - char **Column; /* the name for each column */ - char **Type; /* the type for each column */ - int *NotNull; /* NotNull clause for each column */ - SqliteValuePtr *Value; /* the current-row value for each column */ - int nGeometries; /* # Geometry columns into the table */ - char **GeoColumn; /* the name for each Geometry column */ - int *Srid; /* the SRID for each Geometry column */ - int *GeoType; /* the Type for each Geometry column */ - int *Format; /* the Format for each Geometry column */ - int *CoordDimensions; /* # Dimensions for each Geometry column */ -} VirtualFDO; -typedef VirtualFDO *VirtualFDOPtr; - -typedef struct VirtualFDOCursorStruct -{ -/* extends the sqlite3_vtab_cursor struct */ - VirtualFDOPtr pVtab; /* Virtual table of this cursor */ - sqlite3_int64 current_row; /* the current row ID */ - int eof; /* the EOF marker */ -} VirtualFDOCursor; -typedef VirtualFDOCursor *VirtualFDOCursorPtr; - -static SqliteValuePtr -value_alloc (void) -{ -/* allocates and initialites a Value multitype */ - SqliteValuePtr p = malloc (sizeof (SqliteValue)); - p->Type = SQLITE_NULL; - p->Text = NULL; - p->Blob = NULL; - return p; -} - -static void -value_free (SqliteValuePtr p) -{ -/* freeing a Value multitype */ - if (!p) - return; - if (p->Text) - free (p->Text); - if (p->Blob) - free (p->Blob); - free (p); -} - -static void -value_set_null (SqliteValuePtr p) -{ -/* setting a NULL value to the multitype */ - if (!p) - return; - p->Type = SQLITE_NULL; - if (p->Text) - free (p->Text); - if (p->Blob) - free (p->Blob); - p->Text = NULL; - p->Blob = NULL; -} - -static void -value_set_int (SqliteValuePtr p, sqlite3_int64 value) -{ -/* setting an INT value to the multitype */ - if (!p) - return; - p->Type = SQLITE_INTEGER; - if (p->Text) - free (p->Text); - if (p->Blob) - free (p->Blob); - p->Text = NULL; - p->Blob = NULL; - p->IntValue = value; -} - -static void -value_set_double (SqliteValuePtr p, double value) -{ -/* setting a DOUBLE value to the multitype */ - if (!p) - return; - p->Type = SQLITE_FLOAT; - if (p->Text) - free (p->Text); - if (p->Blob) - free (p->Blob); - p->Text = NULL; - p->Blob = NULL; - p->DoubleValue = value; -} - -static void -value_set_text (SqliteValuePtr p, const char *value, int size) -{ -/* setting a TEXT value to the multitype */ - if (!p) - return; - p->Type = SQLITE_TEXT; - if (p->Text) - free (p->Text); - if (p->Blob) - free (p->Blob); - p->Blob = NULL; - p->Text = malloc (size); - memcpy (p->Text, value, size); - p->Size = size; -} - -static void -value_set_blob (SqliteValuePtr p, const unsigned char *value, int size) -{ -/* setting a BLOB value to the multitype */ - if (!p) - return; - p->Type = SQLITE_BLOB; - if (p->Text) - free (p->Text); - if (p->Blob) - free (p->Blob); - p->Text = NULL; - p->Blob = malloc (size); - memcpy (p->Blob, value, size); - p->Size = size; -} - -static void -free_table (VirtualFDOPtr p_vt) -{ -/* memory cleanup; freeing the virtual table struct */ - int i; - if (!p_vt) - return; - if (p_vt->table) - sqlite3_free (p_vt->table); - if (p_vt->Column) - { - for (i = 0; i < p_vt->nColumns; i++) - { - if (*(p_vt->Column + i)) - sqlite3_free (*(p_vt->Column + i)); - } - sqlite3_free (p_vt->Column); - } - if (p_vt->Type) - { - for (i = 0; i < p_vt->nColumns; i++) - { - if (*(p_vt->Type + i)) - sqlite3_free (*(p_vt->Type + i)); - } - sqlite3_free (p_vt->Type); - } - if (p_vt->NotNull) - sqlite3_free (p_vt->NotNull); - if (p_vt->Value) - { - for (i = 0; i < p_vt->nColumns; i++) - { - if (*(p_vt->Value + i)) - value_free (*(p_vt->Value + i)); - } - sqlite3_free (p_vt->Value); - } - if (p_vt->GeoColumn) - { - for (i = 0; i < p_vt->nGeometries; i++) - { - if (*(p_vt->GeoColumn + i)) - sqlite3_free (*(p_vt->GeoColumn + i)); - } - sqlite3_free (p_vt->GeoColumn); - } - if (p_vt->Srid) - sqlite3_free (p_vt->Srid); - if (p_vt->GeoType) - sqlite3_free (p_vt->GeoType); - if (p_vt->Format) - sqlite3_free (p_vt->Format); - if (p_vt->CoordDimensions) - sqlite3_free (p_vt->CoordDimensions); - sqlite3_free (p_vt); -} - - -static void -vfdoOutWkt3D (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom) -{ -/* prints the GEOS-WKT-3D representation of current geometry */ - int pts = 0; - int lns = 0; - int pgs = 0; - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - if (!geom) - return; - point = geom->FirstPoint; - while (point) - { - /* counting how many POINTs are there */ - pts++; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* counting how many LINESTRINGs are there */ - lns++; - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* counting how many POLYGONs are there */ - pgs++; - polyg = polyg->Next; - } - if ((pts + lns + pgs) == 1 - && (geom->DeclaredType == GAIA_POINT - || geom->DeclaredType == GAIA_LINESTRING - || geom->DeclaredType == GAIA_POLYGON)) - { - /* we have only one elementary geometry */ - point = geom->FirstPoint; - while (point) - { - /* processing POINT */ - gaiaAppendToOutBuffer (out_buf, "POINT ("); - gaiaOutPointZ (out_buf, point); - gaiaAppendToOutBuffer (out_buf, ")"); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* processing LINESTRING */ - gaiaAppendToOutBuffer (out_buf, "LINESTRING ("); - gaiaOutLinestringZ (out_buf, line); - gaiaAppendToOutBuffer (out_buf, ")"); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* processing POLYGONZ */ - gaiaAppendToOutBuffer (out_buf, "POLYGON ("); - gaiaOutPolygonZ (out_buf, polyg); - gaiaAppendToOutBuffer (out_buf, ")"); - polyg = polyg->Next; - } - } - else - { - /* we have some kind of complex geometry */ - if (pts > 0 && lns == 0 && pgs == 0 - && geom->DeclaredType == GAIA_MULTIPOINT) - { - /* some kind of MULTIPOINT */ - gaiaAppendToOutBuffer (out_buf, "MULTIPOINT ("); - point = geom->FirstPoint; - while (point) - { - if (point != geom->FirstPoint) - gaiaAppendToOutBuffer (out_buf, ", "); - gaiaOutPointZ (out_buf, point); - point = point->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (pts == 0 && lns > 0 && pgs == 0 - && geom->DeclaredType == GAIA_MULTILINESTRING) - { - /* some kind of MULTILINESTRING */ - gaiaAppendToOutBuffer (out_buf, "MULTILINESTRING ("); - line = geom->FirstLinestring; - while (line) - { - if (line != geom->FirstLinestring) - gaiaAppendToOutBuffer (out_buf, ", ("); - else - gaiaAppendToOutBuffer (out_buf, "("); - gaiaOutLinestringZ (out_buf, line); - gaiaAppendToOutBuffer (out_buf, ")"); - line = line->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - else if (pts == 0 && lns == 0 && pgs > 0 - && geom->DeclaredType == GAIA_MULTIPOLYGON) - { - /* some kind of MULTIPOLYGON */ - gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGON ("); - polyg = geom->FirstPolygon; - while (polyg) - { - if (polyg != geom->FirstPolygon) - gaiaAppendToOutBuffer (out_buf, ", ("); - else - gaiaAppendToOutBuffer (out_buf, "("); - gaiaOutPolygonZ (out_buf, polyg); - gaiaAppendToOutBuffer (out_buf, ")"); - polyg = polyg->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - else - { - /* some kind of GEOMETRYCOLLECTION */ - int ie = 0; - gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTION ("); - point = geom->FirstPoint; - while (point) - { - /* processing POINTs */ - if (ie > 0) - gaiaAppendToOutBuffer (out_buf, ", "); - ie++; - gaiaAppendToOutBuffer (out_buf, "POINT ("); - gaiaOutPointZ (out_buf, point); - gaiaAppendToOutBuffer (out_buf, ")"); - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* processing LINESTRINGs */ - if (ie > 0) - gaiaAppendToOutBuffer (out_buf, ", "); - ie++; - gaiaAppendToOutBuffer (out_buf, "LINESTRING ("); - gaiaOutLinestringZ (out_buf, line); - gaiaAppendToOutBuffer (out_buf, ")"); - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* processing POLYGONs */ - if (ie > 0) - gaiaAppendToOutBuffer (out_buf, ", "); - ie++; - gaiaAppendToOutBuffer (out_buf, "POLYGON ("); - gaiaOutPolygonZ (out_buf, polyg); - gaiaAppendToOutBuffer (out_buf, ")"); - polyg = polyg->Next; - } - gaiaAppendToOutBuffer (out_buf, ")"); - } - } -} - -static void -vfdoToWkb3D (gaiaGeomCollPtr geom, unsigned char **result, int *size) -{ -/* builds the GEOS-WKB-3D representation for this GEOMETRY */ - int ib; - int iv; - double x; - double y; - double z = 0.0; - double m = 0.0; - int entities = 0; - int n_points = 0; - int n_linestrings = 0; - int n_polygons = 0; - int type; - unsigned char *ptr; - gaiaPointPtr pt; - gaiaLinestringPtr ln; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - gaiaPointPtr point = NULL; - gaiaLinestringPtr line = NULL; - gaiaPolygonPtr polyg = NULL; - int endian_arch = gaiaEndianArch (); - gaiaMbrGeometry (geom); -/* how many entities, and of what kind, do we have ? */ - pt = geom->FirstPoint; - while (pt) - { - point = pt; - entities++; - n_points++; - pt = pt->Next; - } - ln = geom->FirstLinestring; - while (ln) - { - line = ln; - entities++; - n_linestrings++; - ln = ln->Next; - } - pg = geom->FirstPolygon; - while (pg) - { - polyg = pg; - entities++; - n_polygons++; - pg = pg->Next; - } - *size = 0; - *result = NULL; - if (n_points == 0 && n_polygons == 0 && n_linestrings == 0) - return; -/* ok, we can determine the geometry class */ - if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTIPOINT) - type = GAIA_GEOSWKB_MULTIPOINTZ; - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ; - else - type = GAIA_GEOSWKB_POINTZ; - } - else if (n_points > 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ; - else - type = GAIA_GEOSWKB_MULTIPOINTZ; - } - else if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTILINESTRING) - type = GAIA_GEOSWKB_MULTILINESTRINGZ; - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ; - else - type = GAIA_GEOSWKB_LINESTRINGZ; - } - else if (n_points == 0 && n_linestrings > 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ; - else - type = GAIA_GEOSWKB_MULTILINESTRINGZ; - } - else if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) - { - if (geom->DeclaredType == GAIA_MULTIPOLYGON) - type = GAIA_GEOSWKB_MULTIPOLYGONZ; - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ; - else - type = GAIA_GEOSWKB_POLYGONZ; - } - else if (n_points == 0 && n_linestrings == 0 && n_polygons > 1) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - type = GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ; - else - type = GAIA_GEOSWKB_MULTIPOLYGONZ; - } - else - type = GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ; -/* and now we compute the size of WKB */ - *size = 5; /* header size */ - if (type == GAIA_GEOSWKB_MULTIPOINTZ - || type == GAIA_GEOSWKB_MULTILINESTRINGZ - || type == GAIA_GEOSWKB_MULTIPOLYGONZ - || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) - *size += 4; - point = geom->FirstPoint; - while (point) - { - if (type == GAIA_GEOSWKB_MULTIPOINTZ - || type == GAIA_GEOSWKB_MULTILINESTRINGZ - || type == GAIA_GEOSWKB_MULTIPOLYGONZ - || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) - *size += 5; - *size += (sizeof (double) * 3); /* three doubles for each POINT */ - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - if (type == GAIA_GEOSWKB_MULTIPOINTZ - || type == GAIA_GEOSWKB_MULTILINESTRINGZ - || type == GAIA_GEOSWKB_MULTIPOLYGONZ - || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) - *size += 5; - *size += (4 + ((sizeof (double) * 3) * line->Points)); /* # points + [x,y,z] for each vertex */ - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - if (type == GAIA_GEOSWKB_MULTIPOINTZ - || type == GAIA_GEOSWKB_MULTILINESTRINGZ - || type == GAIA_GEOSWKB_MULTIPOLYGONZ - || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) - *size += 5; - rng = polyg->Exterior; - *size += (8 + ((sizeof (double) * 3) * rng->Points)); /* # rings + # points + [x,y,z] array - exterior ring */ - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - *size += (4 + ((sizeof (double) * 3) * rng->Points)); /* # points + [x,y,z] array - interior ring */ - } - polyg = polyg->Next; - } - *result = malloc (*size); - ptr = *result; -/* and finally we build the WKB */ - *ptr = 0x01; /* little endian byte order */ - gaiaExport32 (ptr + 1, type, 1, endian_arch); /* the main CLASS TYPE */ - ptr += 5; - if (type == GAIA_GEOSWKB_MULTIPOINTZ - || type == GAIA_GEOSWKB_MULTILINESTRINGZ - || type == GAIA_GEOSWKB_MULTIPOLYGONZ - || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) - { - gaiaExport32 (ptr, entities, 1, endian_arch); /* it's a collection; # entities */ - ptr += 4; - } - point = geom->FirstPoint; - while (point) - { - if (type == GAIA_GEOSWKB_MULTIPOINTZ - || type == GAIA_GEOMETRYCOLLECTIONZ) - { - *ptr = 0x01; - /* it's a collection: the CLASS TYPE for this element */ - gaiaExport32 (ptr + 1, GAIA_GEOSWKB_POINTZ, 1, endian_arch); - ptr += 5; - } - gaiaExport64 (ptr, point->X, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 8, point->Y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 16, point->Z, 1, endian_arch); /* Z */ - ptr += 24; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - if (type == GAIA_GEOSWKB_MULTILINESTRINGZ - || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) - { - *ptr = 0x01; - /* it's a collection: the CLASS TYPE for this element */ - gaiaExport32 (ptr + 1, GAIA_GEOSWKB_LINESTRINGZ, 1, - endian_arch); - ptr += 5; - } - gaiaExport32 (ptr, line->Points, 1, endian_arch); /* # points */ - ptr += 4; - for (iv = 0; iv < line->Points; iv++) - { - z = 0.0; - m = 0.0; - if (line->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); - } - else if (line->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); - } - else if (line->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (line->Coords, iv, &x, &y); - } - gaiaExport64 (ptr, x, 1, endian_arch); /* X */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y */ - gaiaExport64 (ptr + 16, z, 1, endian_arch); /* Z */ - ptr += 24; - } - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - if (type == GAIA_GEOSWKB_MULTIPOLYGONZ - || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) - { - *ptr = 0x01; - /* it's a collection: the CLASS TYPE for this element */ - gaiaExport32 (ptr + 1, GAIA_GEOSWKB_POLYGONZ, 1, endian_arch); - ptr += 5; - } - gaiaExport32 (ptr, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ - rng = polyg->Exterior; - gaiaExport32 (ptr + 4, rng->Points, 1, endian_arch); /* # points - exterior ring */ - ptr += 8; - for (iv = 0; iv < rng->Points; iv++) - { - z = 0.0; - m = 0.0; - if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ - gaiaExport64 (ptr + 16, z, 1, endian_arch); /* Z - exterior ring */ - ptr += 24; - } - for (ib = 0; ib < polyg->NumInteriors; ib++) - { - rng = polyg->Interiors + ib; - gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ - ptr += 4; - for (iv = 0; iv < rng->Points; iv++) - { - z = 0.0; - m = 0.0; - if (rng->DimensionModel == GAIA_XY_Z) - { - gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); - } - else if (rng->DimensionModel == GAIA_XY_M) - { - gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); - } - else if (rng->DimensionModel == GAIA_XY_Z_M) - { - gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); - } - else - { - gaiaGetPoint (rng->Coords, iv, &x, &y); - } - gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ - gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ - gaiaExport64 (ptr + 16, z, 1, endian_arch); /* Z - exterior ring */ - ptr += 24; - } - } - polyg = polyg->Next; - } -} - -static int -vfdoGeometryType (gaiaGeomCollPtr geom) -{ -/* determinates the Class for this geometry */ - gaiaPointPtr point; - gaiaLinestringPtr line; - gaiaPolygonPtr polyg; - int n_points = 0; - int n_linestrings = 0; - int n_polygons = 0; - if (!geom) - return GAIA_UNKNOWN; - point = geom->FirstPoint; - while (point) - { - /* counts how many points are there */ - n_points++; - point = point->Next; - } - line = geom->FirstLinestring; - while (line) - { - /* counts how many linestrings are there */ - n_linestrings++; - line = line->Next; - } - polyg = geom->FirstPolygon; - while (polyg) - { - /* counts how many polygons are there */ - n_polygons++; - polyg = polyg->Next; - } - if (n_points == 0 && n_linestrings == 0 && n_polygons == 0) - return GAIA_UNKNOWN; - if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTIPOINT) - return GAIA_MULTIPOINT; - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - return GAIA_GEOMETRYCOLLECTION; - else - return GAIA_POINT; - } - if (n_points > 0 && n_linestrings == 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - return GAIA_GEOMETRYCOLLECTION; - else - return GAIA_MULTIPOINT; - } - if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_MULTILINESTRING) - return GAIA_MULTILINESTRING; - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - return GAIA_GEOMETRYCOLLECTION; - else - return GAIA_LINESTRING; - } - if (n_points == 0 && n_linestrings > 0 && n_polygons == 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - return GAIA_GEOMETRYCOLLECTION; - else - return GAIA_MULTILINESTRING; - } - if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) - { - if (geom->DeclaredType == GAIA_MULTIPOLYGON) - return GAIA_MULTIPOLYGON; - else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - return GAIA_GEOMETRYCOLLECTION; - else - return GAIA_POLYGON; - } - if (n_points == 0 && n_linestrings == 0 && n_polygons > 0) - { - if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) - return GAIA_GEOMETRYCOLLECTION; - else - return GAIA_MULTIPOLYGON; - } - return GAIA_GEOMETRYCOLLECTION; -} - -static int -vfdo_insert_row (VirtualFDOPtr p_vt, sqlite3_int64 * rowid, int argc, - sqlite3_value ** argv) -{ -/* trying to insert a row into FDO-OGR real-table */ - sqlite3_stmt *stmt; - int ret; - int i; - int ic; - int ig; - int geom_done; - int err_geom = 0; - int geom_constraint_err = 0; - char prefix[16]; - const char *text; - const unsigned char *blob; - gaiaOutBuffer out_buf; - gaiaOutBuffer sql_statement; - unsigned char *blob_wkb; - int size; - char *sql; - char buf[256]; - char *xname; - gaiaGeomCollPtr geom = NULL; - gaiaOutBufferInitialize (&sql_statement); - xname = gaiaDoubleQuotedSql (p_vt->table); - sql = sqlite3_mprintf ("INSERT INTO \"%s\" ", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - for (ic = 0; ic < p_vt->nColumns; ic++) - { - if (ic == 0) - strcpy (prefix, "("); - else - strcpy (prefix, ", "); - xname = gaiaDoubleQuotedSql (*(p_vt->Column + ic)); - sql = sqlite3_mprintf ("%s%s", prefix, xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - } - gaiaAppendToOutBuffer (&sql_statement, ") VALUES "); - for (ic = 0; ic < p_vt->nColumns; ic++) - { - if (ic == 0) - strcpy (prefix, "("); - else - strcpy (prefix, ", "); - sprintf (buf, "%s?", prefix); - gaiaAppendToOutBuffer (&sql_statement, buf); - } - gaiaAppendToOutBuffer (&sql_statement, ")"); - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - ret = - sqlite3_prepare_v2 (p_vt->db, sql_statement.Buffer, - strlen (sql_statement.Buffer), &stmt, NULL); - else - ret = SQLITE_ERROR; - gaiaOutBufferReset (&sql_statement); - if (ret != SQLITE_OK) - return SQLITE_ERROR; - for (i = 2; i < argc; i++) - { - geom_done = 0; - for (ig = 0; ig < p_vt->nGeometries; ig++) - { - if (strcasecmp - (*(p_vt->Column + i - 2), *(p_vt->GeoColumn + ig)) == 0) - { - /* this one is a Geometry column */ - if (sqlite3_value_type (argv[i]) == SQLITE_BLOB) - { - blob = sqlite3_value_blob (argv[i]); - size = sqlite3_value_bytes (argv[i]); - geom = gaiaFromSpatiaLiteBlobWkb (blob, size); - if (geom) - { - if (geom->Srid != *(p_vt->Srid + ig)) - { - /* SRID constraint violation */ - geom_constraint_err = 1; - goto error; - } - /* checking for TYPE constraint violation */ - if (vfdoGeometryType (geom) != - *(p_vt->GeoType + ig)) - { - /* Geometry TYPE constraint violation */ - geom_constraint_err = 1; - goto error; - } - switch (*(p_vt->Format + ig)) - { - case FDO_OGR_WKT: - gaiaOutBufferInitialize (&out_buf); - if (*(p_vt->CoordDimensions + ig) == - GAIA_XY_Z) - vfdoOutWkt3D (&out_buf, geom); - else - gaiaOutWkt (&out_buf, geom); - if (out_buf.Error == 0 - && out_buf.Buffer != NULL) - { - sqlite3_bind_text (stmt, i - 1, - out_buf.Buffer, - out_buf. - WriteOffset, - free); - out_buf.Buffer = NULL; - gaiaOutBufferReset (&out_buf); - } - else - { - err_geom = 1; - goto error; - } - break; - case FDO_OGR_WKB: - if (*(p_vt->CoordDimensions + ig) == - GAIA_XY_Z) - vfdoToWkb3D (geom, &blob_wkb, - &size); - else - gaiaToWkb (geom, &blob_wkb, &size); - if (blob_wkb) - sqlite3_bind_blob (stmt, i - 1, - blob_wkb, size, - free); - else - { - err_geom = 1; - goto error; - } - break; - case FDO_OGR_FGF: - gaiaToFgf (geom, &blob_wkb, &size, - *(p_vt->CoordDimensions + - ig)); - if (blob_wkb) - sqlite3_bind_blob (stmt, i - 1, - blob_wkb, size, - free); - else - { - err_geom = 1; - goto error; - } - break; - case FDO_OGR_SPLITE: - gaiaToSpatiaLiteBlobWkb (geom, - &blob_wkb, - &size); - if (blob_wkb) - sqlite3_bind_blob (stmt, i - 1, - blob_wkb, size, - free); - else - { - err_geom = 1; - goto error; - } - break; - default: - err_geom = 1; - goto error; - break; - }; - } - else - { - err_geom = 1; - goto error; - } - } - else if (sqlite3_value_type (argv[i]) == SQLITE_NULL) - sqlite3_bind_null (stmt, i - 1); - else - { - err_geom = 1; - goto error; - } - geom_done = 1; - } - } - if (geom_done) - { - if (geom) - { - /* memory cleanup: Kashif Rasul 14 Jan 2010 */ - gaiaFreeGeomColl (geom); - geom = NULL; - } - continue; - } - switch (sqlite3_value_type (argv[i])) - { - case SQLITE_INTEGER: - sqlite3_bind_int64 (stmt, i - 1, sqlite3_value_int64 (argv[i])); - break; - case SQLITE_FLOAT: - sqlite3_bind_double (stmt, i - 1, - sqlite3_value_double (argv[i])); - break; - case SQLITE_TEXT: - text = (char *) sqlite3_value_text (argv[i]); - size = sqlite3_value_bytes (argv[i]); - sqlite3_bind_text (stmt, i - 1, text, size, SQLITE_STATIC); - break; - case SQLITE_BLOB: - blob = sqlite3_value_blob (argv[i]); - size = sqlite3_value_bytes (argv[i]); - sqlite3_bind_blob (stmt, i - 1, blob, size, SQLITE_STATIC); - break; - case SQLITE_NULL: - default: - sqlite3_bind_null (stmt, i - 1); - break; - }; - } - error: - if (geom) - { - /* memory cleanup: Kashif Rasul 14 Jan 2010 */ - gaiaFreeGeomColl (geom); - } - if (err_geom || geom_constraint_err) - { - sqlite3_finalize (stmt); - return SQLITE_CONSTRAINT; - } - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - sqlite3_finalize (stmt); - return ret; - } - sqlite3_finalize (stmt); - *rowid = sqlite3_last_insert_rowid (p_vt->db); - return SQLITE_OK; -} - -static int -vfdo_update_row (VirtualFDOPtr p_vt, sqlite3_int64 rowid, int argc, - sqlite3_value ** argv) -{ -/* trying to update a row in FDO-OGR real-table */ - sqlite3_stmt *stmt; - int ret; - int i; - int ic; - int ig; - int geom_done; - int err_geom = 0; - int geom_constraint_err = 0; - char prefix[16]; - const char *text; - const unsigned char *blob; - gaiaOutBuffer out_buf; - gaiaOutBuffer sql_statement; - unsigned char *blob_wkb; - int size; - char *sql; - char buf[256]; - char *xname; - gaiaGeomCollPtr geom; - gaiaOutBufferInitialize (&sql_statement); - xname = gaiaDoubleQuotedSql (p_vt->table); - sql = sqlite3_mprintf ("UPDATE \"%s\" SET", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - for (ic = 0; ic < p_vt->nColumns; ic++) - { - if (ic == 0) - strcpy (prefix, " "); - else - strcpy (prefix, ", "); - xname = gaiaDoubleQuotedSql (*(p_vt->Column + ic)); - sql = sqlite3_mprintf ("%s%s = ?", prefix, xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - } -#if defined(_WIN32) || defined(__MINGW32__) -/* CAVEAT: M$ rutime doesn't supports %lld for 64 bits */ - sprintf (buf, " WHERE ROWID = %I64d", rowid); -#else - sprintf (buf, " WHERE ROWID = %lld", rowid); -#endif - gaiaAppendToOutBuffer (&sql_statement, buf); - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - ret = - sqlite3_prepare_v2 (p_vt->db, sql_statement.Buffer, - strlen (sql_statement.Buffer), &stmt, NULL); - else - ret = SQLITE_ERROR; - gaiaOutBufferReset (&sql_statement); - if (ret != SQLITE_OK) - return SQLITE_ERROR; - for (i = 2; i < argc; i++) - { - geom_done = 0; - for (ig = 0; ig < p_vt->nGeometries; ig++) - { - if (strcasecmp - (*(p_vt->Column + i - 2), *(p_vt->GeoColumn + ig)) == 0) - { - /* this one is a Geometry column */ - if (sqlite3_value_type (argv[i]) == SQLITE_BLOB) - { - blob = sqlite3_value_blob (argv[i]); - size = sqlite3_value_bytes (argv[i]); - geom = gaiaFromSpatiaLiteBlobWkb (blob, size); - if (geom) - { - if (geom->Srid != *(p_vt->Srid + ig)) - { - /* SRID constraint violation */ - geom_constraint_err = 1; - goto error; - } - /* checking for TYPE constraint violation */ - if (vfdoGeometryType (geom) != - *(p_vt->GeoType + ig)) - { - /* Geometry TYPE constraint violation */ - geom_constraint_err = 1; - goto error; - } - switch (*(p_vt->Format + ig)) - { - case FDO_OGR_WKT: - gaiaOutBufferInitialize (&out_buf); - if (*(p_vt->CoordDimensions + ig) == - GAIA_XY_Z) - vfdoOutWkt3D (&out_buf, geom); - else - gaiaOutWkt (&out_buf, geom); - if (out_buf.Error == 0 - && out_buf.Buffer != NULL) - { - sqlite3_bind_text (stmt, i - 1, - out_buf.Buffer, - out_buf. - WriteOffset, - free); - out_buf.Buffer = NULL; - gaiaOutBufferReset (&out_buf); - } - else - { - err_geom = 1; - goto error; - } - break; - case FDO_OGR_WKB: - if (*(p_vt->CoordDimensions + ig) == - GAIA_XY_Z) - vfdoToWkb3D (geom, &blob_wkb, - &size); - else - gaiaToWkb (geom, &blob_wkb, &size); - if (blob_wkb) - sqlite3_bind_blob (stmt, i - 1, - blob_wkb, size, - free); - else - { - err_geom = 1; - goto error; - } - break; - case FDO_OGR_FGF: - gaiaToFgf (geom, &blob_wkb, &size, - *(p_vt->CoordDimensions + - ig)); - if (blob_wkb) - sqlite3_bind_blob (stmt, i - 1, - blob_wkb, size, - free); - else - { - err_geom = 1; - goto error; - } - break; - case FDO_OGR_SPLITE: - gaiaToSpatiaLiteBlobWkb (geom, - &blob_wkb, - &size); - if (blob_wkb) - sqlite3_bind_blob (stmt, i - 1, - blob_wkb, size, - free); - else - { - err_geom = 1; - goto error; - } - break; - default: - err_geom = 1; - goto error; - break; - }; - } - else - { - err_geom = 1; - goto error; - } - } - else if (sqlite3_value_type (argv[i]) == SQLITE_NULL) - sqlite3_bind_null (stmt, i - 1); - else - { - err_geom = 1; - goto error; - } - geom_done = 1; - } - } - if (geom_done) - { - gaiaFreeGeomColl (geom); - geom = NULL; - continue; - } - switch (sqlite3_value_type (argv[i])) - { - case SQLITE_INTEGER: - sqlite3_bind_int64 (stmt, i - 1, sqlite3_value_int64 (argv[i])); - break; - case SQLITE_FLOAT: - sqlite3_bind_double (stmt, i - 1, - sqlite3_value_double (argv[i])); - break; - case SQLITE_TEXT: - text = (char *) sqlite3_value_text (argv[i]); - size = sqlite3_value_bytes (argv[i]); - sqlite3_bind_text (stmt, i - 1, text, size, SQLITE_STATIC); - break; - case SQLITE_BLOB: - blob = sqlite3_value_blob (argv[i]); - size = sqlite3_value_bytes (argv[i]); - sqlite3_bind_blob (stmt, i - 1, blob, size, SQLITE_STATIC); - break; - case SQLITE_NULL: - default: - sqlite3_bind_null (stmt, i - 1); - break; - }; - } - error: - gaiaFreeGeomColl (geom); - if (err_geom || geom_constraint_err) - { - sqlite3_finalize (stmt); - return SQLITE_CONSTRAINT; - } - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - sqlite3_finalize (stmt); - return ret; - } - sqlite3_finalize (stmt); - return SQLITE_OK; -} - -static int -vfdo_delete_row (VirtualFDOPtr p_vt, sqlite3_int64 rowid) -{ -/* trying to delete a row from FDO-OGR real-table */ - char *sql_statement; - char dummy[256]; - int ret; - char *xname; - xname = gaiaDoubleQuotedSql (p_vt->table); -#if defined(_WIN32) || defined(__MINGW32__) -/* CAVEAT: M$ runtime doesn't supports %lld for 64 bits */ - sprintf (dummy, "%I64d", rowid); -#else - sprintf (dummy, "%lld", rowid); -#endif - sql_statement = - sqlite3_mprintf ("DELETE FROM \"%s\" WHERE ROWID = %s", xname, dummy); - free (xname); - ret = sqlite3_exec (p_vt->db, sql_statement, NULL, NULL, NULL); - sqlite3_free (sql_statement); - return ret; -} - -char * -vfdo_convertWKT3D (const char *wkt) -{ -/* converting WKT 3D */ - char *out; - char *o; - const char *p = wkt; - int len = strlen (wkt); - int extra = 0; - while (*p != '\0') - { - if (strncasecmp (p, "POINT", 5) == 0) - { - p += 5; - extra++; - continue; - } - if (strncasecmp (p, "LINESTRING", 10) == 0) - { - p += 10; - extra++; - continue; - } - if (strncasecmp (p, "POLYGON", 7) == 0) - { - p += 7; - extra++; - continue; - } - if (strncasecmp (p, "MULTIPOINT", 10) == 0) - { - p += 10; - extra++; - continue; - } - if (strncasecmp (p, "MULTILINESTRING", 15) == 0) - { - p += 15; - extra++; - continue; - } - if (strncasecmp (p, "MULTIPOLYGON", 12) == 0) - { - p += 12; - extra++; - continue; - } - if (strncasecmp (p, "GEOMETRYCOLLECTION", 18) == 0) - { - p += 18; - extra++; - continue; - } - p++; - } - out = malloc (len + extra + 1); - o = out; - p = wkt; - while (*p != '\0') - { - if (strncasecmp (p, "POINT", 5) == 0) - { - strcpy (o, "POINTZ"); - o += 6; - p += 5; - continue; - } - if (strncasecmp (p, "LINESTRING", 10) == 0) - { - strcpy (o, "LINESTRINGZ"); - o += 11; - p += 10; - continue; - } - if (strncasecmp (p, "POLYGON", 7) == 0) - { - strcpy (o, "POLYGONZ"); - o += 8; - p += 7; - continue; - } - if (strncasecmp (p, "MULTIPOINT", 10) == 0) - { - strcpy (o, "MULTIPOINTZ"); - o += 11; - p += 10; - continue; - } - if (strncasecmp (p, "MULTILINESTRING", 15) == 0) - { - strcpy (o, "MULTILINESTRINGZ"); - o += 16; - p += 15; - continue; - } - if (strncasecmp (p, "MULTIPOLYGON", 12) == 0) - { - strcpy (o, "MULTIPOLYGONZ"); - o += 13; - p += 12; - continue; - } - if (strncasecmp (p, "GEOMETRYCOLLECTION", 18) == 0) - { - strcpy (o, "GEOMETRYCOLLECTIONZ"); - o += 19; - p += 18; - continue; - } - *o++ = *p++; - } - *o = '\0'; - return out; -} - -static void -vfdo_read_row (VirtualFDOCursorPtr cursor) -{ -/* trying to read a row from FDO-OGR real-table */ - sqlite3_stmt *stmt; - int ret; - char *sql; - char buf[256]; - int ic; - int ig; - unsigned char *wkt; - const char *text; - const unsigned char *blob; - unsigned char *xblob; - int size; - sqlite3_int64 pk; - int geom_done; - gaiaGeomCollPtr geom; - char *xname; - gaiaOutBuffer sql_statement; - gaiaOutBufferInitialize (&sql_statement); - gaiaAppendToOutBuffer (&sql_statement, "SELECT ROWID"); - for (ic = 0; ic < cursor->pVtab->nColumns; ic++) - { - value_set_null (*(cursor->pVtab->Value + ic)); - xname = gaiaDoubleQuotedSql (*(cursor->pVtab->Column + ic)); - sql = sqlite3_mprintf (",\"%s\"", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - } - xname = gaiaDoubleQuotedSql (cursor->pVtab->table); -#if defined(_WIN32) || defined (__MINGW32__) -/* CAVEAT: M$ runtime doesn't supports %lld for 64 bits */ - sprintf (buf, "%I64d", cursor->current_row); -#else - sprintf (buf, "%lld", cursor->current_row); -#endif - sql = sqlite3_mprintf (" FROM \"%s\" WHERE ROWID >= %s", xname, buf); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - ret = - sqlite3_prepare_v2 (cursor->pVtab->db, sql_statement.Buffer, - strlen (sql_statement.Buffer), &stmt, NULL); - else - ret = SQLITE_ERROR; - gaiaOutBufferReset (&sql_statement); - if (ret != SQLITE_OK) - { - /* an error occurred */ - cursor->eof = 1; - return; - } - ret = sqlite3_step (stmt); - if (ret == SQLITE_ROW) - { - pk = sqlite3_column_int64 (stmt, 0); - for (ic = 0; ic < cursor->pVtab->nColumns; ic++) - { - /* fetching column values */ - geom_done = 0; - for (ig = 0; ig < cursor->pVtab->nGeometries; ig++) - { - if (strcasecmp - (*(cursor->pVtab->Column + ic), - *(cursor->pVtab->GeoColumn + ig)) == 0) - { - /* this one is a Geometry column */ - switch (*(cursor->pVtab->Format + ig)) - { - case FDO_OGR_WKT: - if (sqlite3_column_type (stmt, ic + 1) == - SQLITE_TEXT) - { - /* trying to parse a WKT Geometry */ - char delete_wkt = 0; - wkt = (unsigned char *) - sqlite3_column_text (stmt, ic + 1); - if (* - (cursor->pVtab->CoordDimensions + - ig) == GAIA_XY_Z) - { - wkt = (unsigned char *) - vfdo_convertWKT3D ((char *) - wkt); - if (wkt == NULL) - { - value_set_null (* - (cursor->pVtab->Value - + ic)); - continue; - } - delete_wkt = 1; - } - geom = gaiaParseWkt (wkt, -1); - if (delete_wkt) - free ((void *) wkt); - if (!geom) - value_set_null (* - (cursor-> - pVtab->Value + - ic)); - else - { - geom->Srid = - *(cursor->pVtab->Srid + ig); - gaiaToSpatiaLiteBlobWkb (geom, - &xblob, - &size); - if (xblob) - { - value_set_blob (* - (cursor->pVtab->Value - + ic), - xblob, - size); - free (xblob); - } - else - value_set_null (* - (cursor->pVtab->Value - + ic)); - gaiaFreeGeomColl (geom); - } - } - else - value_set_null (* - (cursor->pVtab->Value + - ic)); - break; - case FDO_OGR_WKB: - if (sqlite3_column_type (stmt, ic + 1) == - SQLITE_BLOB) - { - /* trying to parse a WKB Geometry */ - blob = - sqlite3_column_blob (stmt, ic + 1); - size = - sqlite3_column_bytes (stmt, ic + 1); - geom = gaiaFromWkb (blob, size); - if (!geom) - value_set_null (* - (cursor-> - pVtab->Value + - ic)); - else - { - geom->Srid = - *(cursor->pVtab->Srid + ig); - gaiaToSpatiaLiteBlobWkb (geom, - &xblob, - &size); - if (xblob) - { - value_set_blob (* - (cursor->pVtab->Value - + ic), - xblob, - size); - free (xblob); - } - else - value_set_null (* - (cursor->pVtab->Value - + ic)); - gaiaFreeGeomColl (geom); - } - } - else - value_set_null (* - (cursor->pVtab->Value + - ic)); - break; - case FDO_OGR_FGF: - if (sqlite3_column_type (stmt, ic + 1) == - SQLITE_BLOB) - { - /* trying to parse an FGF Geometry */ - blob = - sqlite3_column_blob (stmt, ic + 1); - size = - sqlite3_column_bytes (stmt, ic + 1); - geom = gaiaFromFgf (blob, size); - if (!geom) - value_set_null (* - (cursor-> - pVtab->Value + - ic)); - else - { - geom->Srid = - *(cursor->pVtab->Srid + ig); - gaiaToSpatiaLiteBlobWkb (geom, - &xblob, - &size); - if (xblob) - { - value_set_blob (* - (cursor->pVtab->Value - + ic), - xblob, - size); - free (xblob); - } - else - value_set_null (* - (cursor->pVtab->Value - + ic)); - gaiaFreeGeomColl (geom); - } - } - else - value_set_null (* - (cursor->pVtab->Value + - ic)); - break; - case FDO_OGR_SPLITE: - if (sqlite3_column_type (stmt, ic + 1) == - SQLITE_BLOB) - { - /* trying to parse a SPATIALITE Geometry */ - blob = - sqlite3_column_blob (stmt, ic + 1); - size = - sqlite3_column_bytes (stmt, ic + 1); - value_set_blob (* - (cursor->pVtab->Value + - ic), blob, size); - } - else - value_set_null (* - (cursor->pVtab->Value + - ic)); - break; - default: - value_set_null (*(cursor->pVtab->Value + ic)); - break; - }; - geom_done = 1; - } - } - if (geom_done) - continue; - switch (sqlite3_column_type (stmt, ic + 1)) - { - case SQLITE_INTEGER: - value_set_int (*(cursor->pVtab->Value + ic), - sqlite3_column_int64 (stmt, ic + 1)); - break; - case SQLITE_FLOAT: - value_set_double (*(cursor->pVtab->Value + ic), - sqlite3_column_double (stmt, ic + 1)); - break; - case SQLITE_TEXT: - text = (char *) sqlite3_column_text (stmt, ic + 1); - size = sqlite3_column_bytes (stmt, ic + 1); - value_set_text (*(cursor->pVtab->Value + ic), text, size); - break; - case SQLITE_BLOB: - blob = sqlite3_column_blob (stmt, ic + 1); - size = sqlite3_column_bytes (stmt, ic + 1); - value_set_blob (*(cursor->pVtab->Value + ic), blob, size); - break; - case SQLITE_NULL: - default: - value_set_null (*(cursor->pVtab->Value + ic)); - break; - }; - } - } - else - { - /* an error occurred */ - sqlite3_finalize (stmt); - cursor->eof = 1; - return; - } - sqlite3_finalize (stmt); - cursor->eof = 0; - cursor->current_row = pk; -} - - -static int -vfdo_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* creates the virtual table connected to some FDO-OGR table */ - char *vtable = NULL; - char *table = NULL; - int ret; - int i; - int len; - int n_rows; - int n_columns; - const char *col_name; - const char *col_type; - const char *format; - int coord_dimension; - int not_null; - int srid; - int type; - char **results; - char *sql; - char prefix[16]; - char *xname; - gaiaOutBuffer sql_statement; - VirtualFDOPtr p_vt = NULL; - if (pAux) - pAux = pAux; /* unused arg warning suppression */ -/* checking for table_name */ - if (argc == 4) - { - vtable = gaiaDequotedSql ((char *) argv[2]); - table = gaiaDequotedSql ((char *) argv[3]); - } - else - { - *pzErr = - sqlite3_mprintf - ("[VirtualFDO module] CREATE VIRTUAL: illegal arg list {table_name}\n"); - goto error; - } -/* retrieving the base table columns */ - xname = gaiaDoubleQuotedSql (table); - sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); - free (xname); - ret = sqlite3_get_table (db, sql, &results, &n_rows, &n_columns, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - goto illegal; - if (n_rows >= 1) - { - p_vt = (VirtualFDOPtr) sqlite3_malloc (sizeof (VirtualFDO)); - if (!p_vt) - return SQLITE_NOMEM; - p_vt->db = db; - p_vt->nRef = 0; - p_vt->zErrMsg = NULL; - len = strlen (table); - p_vt->table = sqlite3_malloc (len + 1); - strcpy (p_vt->table, table); - p_vt->nColumns = n_rows; - p_vt->Column = sqlite3_malloc (sizeof (char *) * n_rows); - p_vt->Type = sqlite3_malloc (sizeof (char *) * n_rows); - p_vt->NotNull = sqlite3_malloc (sizeof (int) * n_rows); - p_vt->Value = sqlite3_malloc (sizeof (SqliteValuePtr) * n_rows); - for (i = 0; i < n_rows; i++) - { - *(p_vt->Column + i) = NULL; - *(p_vt->Type + i) = NULL; - *(p_vt->NotNull + i) = -1; - *(p_vt->Value + i) = value_alloc (); - } - p_vt->nGeometries = 0; - p_vt->GeoColumn = NULL; - p_vt->Srid = NULL; - p_vt->GeoType = NULL; - p_vt->Format = NULL; - p_vt->CoordDimensions = NULL; - for (i = 1; i <= n_rows; i++) - { - col_name = results[(i * n_columns) + 1]; - col_type = results[(i * n_columns) + 2]; - if (atoi (results[(i * n_columns) + 3]) == 0) - not_null = 0; - else - not_null = 1; - len = strlen (col_name); - *(p_vt->Column + (i - 1)) = sqlite3_malloc (len + 1); - strcpy (*(p_vt->Column + (i - 1)), col_name); - len = strlen (col_type); - *(p_vt->Type + (i - 1)) = sqlite3_malloc (len + 1); - strcpy (*(p_vt->Type + (i - 1)), col_type); - *(p_vt->NotNull + (i - 1)) = not_null; - } - sqlite3_free_table (results); - } - else - goto illegal; -/* retrieving the base table columns */ - sql = sqlite3_mprintf ("SELECT f_geometry_column, geometry_type, srid, " - "geometry_format, coord_dimension\n" - "FROM geometry_columns WHERE Upper(f_table_name) = Upper(%Q)", - table); - ret = sqlite3_get_table (db, sql, &results, &n_rows, &n_columns, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - goto illegal; - if (n_rows >= 1) - { - p_vt->nGeometries = n_rows; - p_vt->GeoColumn = sqlite3_malloc (sizeof (char *) * n_rows); - p_vt->Srid = sqlite3_malloc (sizeof (char *) * n_rows); - p_vt->GeoType = sqlite3_malloc (sizeof (int) * n_rows); - p_vt->Format = sqlite3_malloc (sizeof (int) * n_rows); - p_vt->CoordDimensions = sqlite3_malloc (sizeof (int) * n_rows); - for (i = 0; i < n_rows; i++) - { - *(p_vt->GeoColumn + i) = NULL; - *(p_vt->Srid + i) = -1; - *(p_vt->GeoType + i) = -1; - *(p_vt->Format + i) = FDO_OGR_NONE; - *(p_vt->CoordDimensions + i) = GAIA_XY; - } - for (i = 1; i <= n_rows; i++) - { - col_name = results[(i * n_columns) + 0]; - type = atoi (results[(i * n_columns) + 1]); - srid = atoi (results[(i * n_columns) + 2]); - format = results[(i * n_columns) + 3]; - coord_dimension = atoi (results[(i * n_columns) + 4]); - len = strlen (col_name); - *(p_vt->GeoColumn + (i - 1)) = sqlite3_malloc (len + 1); - strcpy (*(p_vt->GeoColumn + (i - 1)), col_name); - *(p_vt->GeoType + (i - 1)) = type; - *(p_vt->Srid + (i - 1)) = srid; - if (strcasecmp (format, "WKT") == 0) - *(p_vt->Format + (i - 1)) = FDO_OGR_WKT; - if (strcasecmp (format, "WKB") == 0) - *(p_vt->Format + (i - 1)) = FDO_OGR_WKB; - if (strcasecmp (format, "FGF") == 0) - *(p_vt->Format + (i - 1)) = FDO_OGR_FGF; - if (strcasecmp (format, "SPATIALITE") == 0) - *(p_vt->Format + (i - 1)) = FDO_OGR_SPLITE; - if (coord_dimension == 3) - *(p_vt->CoordDimensions + (i - 1)) = GAIA_XY_Z; - else if (coord_dimension == 4) - *(p_vt->CoordDimensions + (i - 1)) = GAIA_XY_Z_M; - else - *(p_vt->CoordDimensions + (i - 1)) = GAIA_XY; - } - sqlite3_free_table (results); - } - else - goto illegal; -/* preparing the COLUMNs for this VIRTUAL TABLE */ - gaiaOutBufferInitialize (&sql_statement); - xname = gaiaDoubleQuotedSql (vtable); - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" ", xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - for (i = 0; i < p_vt->nColumns; i++) - { - if (i == 0) - strcpy (prefix, "("); - else - strcpy (prefix, ", "); - xname = gaiaDoubleQuotedSql (*(p_vt->Column + i)); - if (*(p_vt->NotNull + i)) - sql = - sqlite3_mprintf ("%s%s %s NOT NULL", prefix, xname, - *(p_vt->Type + i)); - else - sql = - sqlite3_mprintf ("%s%s %s", prefix, xname, *(p_vt->Type + i)); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - } - gaiaAppendToOutBuffer (&sql_statement, ")"); - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - { - if (sqlite3_declare_vtab (db, sql_statement.Buffer) != SQLITE_OK) - { - *pzErr = - sqlite3_mprintf - ("[VirtualFDO module] CREATE VIRTUAL: invalid SQL statement \"%s\"", - sql); - goto error; - } - gaiaOutBufferReset (&sql_statement); - } - else - goto error; - *ppVTab = (sqlite3_vtab *) p_vt; - free (vtable); - free (table); - return SQLITE_OK; - illegal: -/* something is going the wrong way */ - gaiaOutBufferReset (&sql_statement); - if (p_vt) - free_table (p_vt); - *pzErr = - sqlite3_mprintf - ("[VirtualFDO module] '%s' isn't a valid FDO-OGR Geometry table\n", - table); - error: - if (vtable) - free (vtable); - if (table) - free (table); - gaiaOutBufferReset (&sql_statement); - return SQLITE_ERROR; -} - -static int -vfdo_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* connects the virtual table to some shapefile - simply aliases vfdo_create() */ - return vfdo_create (db, pAux, argc, argv, ppVTab, pzErr); -} - -static int -vfdo_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIndex) -{ -/* best index selection */ - if (pVTab || pIndex) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vfdo_disconnect (sqlite3_vtab * pVTab) -{ -/* disconnects the virtual table */ - VirtualFDOPtr p_vt = (VirtualFDOPtr) pVTab; - free_table (p_vt); - return SQLITE_OK; -} - -static int -vfdo_destroy (sqlite3_vtab * pVTab) -{ -/* destroys the virtual table - simply aliases vfdo_disconnect() */ - return vfdo_disconnect (pVTab); -} - -static int -vfdo_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) -{ -/* opening a new cursor */ - VirtualFDOCursorPtr cursor = - (VirtualFDOCursorPtr) sqlite3_malloc (sizeof (VirtualFDOCursor)); - if (cursor == NULL) - return SQLITE_ERROR; - cursor->pVtab = (VirtualFDOPtr) pVTab; - cursor->current_row = LONG64_MIN; - cursor->eof = 0; - *ppCursor = (sqlite3_vtab_cursor *) cursor; - vfdo_read_row (cursor); - return SQLITE_OK; -} - -static int -vfdo_close (sqlite3_vtab_cursor * pCursor) -{ -/* closing the cursor */ - int ic; - VirtualFDOCursorPtr cursor = (VirtualFDOCursorPtr) pCursor; - for (ic = 0; ic < cursor->pVtab->nColumns; ic++) - value_set_null (*(cursor->pVtab->Value + ic)); - sqlite3_free (pCursor); - return SQLITE_OK; -} - -static int -vfdo_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, - int argc, sqlite3_value ** argv) -{ -/* setting up a cursor filter */ - if (pCursor || idxNum || idxStr || argc || argv) - pCursor = pCursor; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vfdo_next (sqlite3_vtab_cursor * pCursor) -{ -/* fetching next row from cursor */ - VirtualFDOCursorPtr cursor = (VirtualFDOCursorPtr) pCursor; - (cursor->current_row)++; - vfdo_read_row (cursor); - return SQLITE_OK; -} - -static int -vfdo_eof (sqlite3_vtab_cursor * pCursor) -{ -/* cursor EOF */ - VirtualFDOCursorPtr cursor = (VirtualFDOCursorPtr) pCursor; - return cursor->eof; -} - -static int -vfdo_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, - int column) -{ -/* fetching value for the Nth column */ - VirtualFDOCursorPtr cursor = (VirtualFDOCursorPtr) pCursor; - SqliteValuePtr value; - if (column >= 0 && column < cursor->pVtab->nColumns) - { - value = *(cursor->pVtab->Value + column); - switch (value->Type) - { - case SQLITE_INTEGER: - sqlite3_result_int64 (pContext, value->IntValue); - break; - case SQLITE_FLOAT: - sqlite3_result_double (pContext, value->DoubleValue); - break; - case SQLITE_TEXT: - sqlite3_result_text (pContext, value->Text, value->Size, - SQLITE_STATIC); - break; - case SQLITE_BLOB: - sqlite3_result_blob (pContext, value->Blob, value->Size, - SQLITE_STATIC); - break; - default: - sqlite3_result_null (pContext); - break; - }; - } - else - sqlite3_result_null (pContext); - return SQLITE_OK; -} - -static int -vfdo_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) -{ -/* fetching the ROWID */ - VirtualFDOCursorPtr cursor = (VirtualFDOCursorPtr) pCursor; - *pRowid = cursor->current_row; - return SQLITE_OK; -} - -static int -vfdo_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, - sqlite_int64 * pRowid) -{ -/* generic update [INSERT / UPDATE / DELETE */ - sqlite3_int64 rowid = 0; - int ret; - VirtualFDOPtr p_vt = (VirtualFDOPtr) pVTab; - if (argc == 1) - { - /* performing a DELETE */ - if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - { - rowid = sqlite3_value_int64 (argv[0]); - ret = vfdo_delete_row (p_vt, rowid); - } - else - ret = SQLITE_MISMATCH; - } - else - { - if (sqlite3_value_type (argv[0]) == SQLITE_NULL) - { - /* performing an INSERT */ - ret = vfdo_insert_row (p_vt, &rowid, argc, argv); - if (ret == SQLITE_OK) - *pRowid = rowid; - } - else - { - /* performing an UPDATE */ - rowid = sqlite3_value_int64 (argv[0]); - ret = vfdo_update_row (p_vt, rowid, argc, argv); - } - } - return ret; -} - -static int -vfdo_begin (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vfdo_sync (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vfdo_commit (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vfdo_rollback (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -int -sqlite3VirtualFDOInit (sqlite3 * db) -{ - int rc = SQLITE_OK; - my_fdo_module.iVersion = 1; - my_fdo_module.xCreate = &vfdo_create; - my_fdo_module.xConnect = &vfdo_connect; - my_fdo_module.xBestIndex = &vfdo_best_index; - my_fdo_module.xDisconnect = &vfdo_disconnect; - my_fdo_module.xDestroy = &vfdo_destroy; - my_fdo_module.xOpen = &vfdo_open; - my_fdo_module.xClose = &vfdo_close; - my_fdo_module.xFilter = &vfdo_filter; - my_fdo_module.xNext = &vfdo_next; - my_fdo_module.xEof = &vfdo_eof; - my_fdo_module.xColumn = &vfdo_column; - my_fdo_module.xRowid = &vfdo_rowid; - my_fdo_module.xUpdate = &vfdo_update; - my_fdo_module.xBegin = &vfdo_begin; - my_fdo_module.xSync = &vfdo_sync; - my_fdo_module.xCommit = &vfdo_commit; - my_fdo_module.xRollback = &vfdo_rollback; - my_fdo_module.xFindFunction = NULL; - sqlite3_create_module_v2 (db, "VirtualFDO", &my_fdo_module, NULL, 0); - return rc; -} - -int -virtualfdo_extension_init (sqlite3 * db) -{ - return sqlite3VirtualFDOInit (db); -} diff --git a/src/spatialite/src/spatialite/virtualnetwork.c b/src/spatialite/src/spatialite/virtualnetwork.c deleted file mode 100644 index 8423ed7..0000000 --- a/src/spatialite/src/spatialite/virtualnetwork.c +++ /dev/null @@ -1,2262 +0,0 @@ -/* - - virtualnetwork.c -- SQLite3 extension [VIRTUAL TABLE Routing - shortest path] - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Luigi Costalli luigi.costalli@gmail.com - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include - -#include -#include -#include - -static struct sqlite3_module my_net_module; - -#define VNET_DIJKSTRA_ALGORITHM 1 -#define VNET_A_STAR_ALGORITHM 2 - -#ifdef _WIN32 -#define strcasecmp _stricmp -#endif /* not WIN32 */ - -/****************************************************************************** -/ -/ VirtualNetwork structs -/ -******************************************************************************/ - -typedef struct NetworkArcStruct -{ -/* an ARC */ - const struct NetworkNodeStruct *NodeFrom; - const struct NetworkNodeStruct *NodeTo; - sqlite3_int64 ArcRowid; - double Cost; -} NetworkArc; -typedef NetworkArc *NetworkArcPtr; - -typedef struct NetworkNodeStruct -{ -/* a NODE */ - int InternalIndex; - sqlite3_int64 Id; - char *Code; - double CoordX; - double CoordY; - int NumArcs; - NetworkArcPtr Arcs; -} NetworkNode; -typedef NetworkNode *NetworkNodePtr; - -typedef struct NetworkStruct -{ -/* the main NETWORK structure */ - int Net64; - int AStar; - int EndianArch; - int MaxCodeLength; - int CurrentIndex; - int NodeCode; - int NumNodes; - char *TableName; - char *FromColumn; - char *ToColumn; - char *GeometryColumn; - char *NameColumn; - double AStarHeuristicCoeff; - NetworkNodePtr Nodes; -} Network; -typedef Network *NetworkPtr; - -typedef struct ArcSolutionStruct -{ -/* Geometry corresponding to an Arc used by Dijkstra shortest path solution */ - sqlite3_int64 ArcRowid; - char *FromCode; - char *ToCode; - sqlite3_int64 FromId; - sqlite3_int64 ToId; - int Points; - double *Coords; - int Srid; - char *Name; - struct ArcSolutionStruct *Next; - -} ArcSolution; -typedef ArcSolution *ArcSolutionPtr; - -typedef struct RowSolutionStruct -{ -/* a row into the shortest path solution */ - NetworkArcPtr Arc; - char *Name; - struct RowSolutionStruct *Next; - -} RowSolution; -typedef RowSolution *RowSolutionPtr; - -typedef struct SolutionStruct -{ -/* the shortest path solution */ - ArcSolutionPtr FirstArc; - ArcSolutionPtr LastArc; - NetworkNodePtr From; - NetworkNodePtr To; - RowSolutionPtr First; - RowSolutionPtr Last; - RowSolutionPtr CurrentRow; - sqlite3_int64 CurrentRowId; - double TotalCost; - gaiaGeomCollPtr Geometry; -} Solution; -typedef Solution *SolutionPtr; - -/****************************************************************************** -/ -/ Dijkstra and A* common structs -/ -******************************************************************************/ - -typedef struct RoutingNode -{ - int Id; - struct RoutingNode **To; - NetworkArcPtr *Link; - int DimTo; - struct RoutingNode *PreviousNode; - NetworkArcPtr Arc; - double Distance; - double HeuristicDistance; - int Inspected; -} RoutingNode; -typedef RoutingNode *RoutingNodePtr; - -typedef struct RoutingNodes -{ - RoutingNodePtr Nodes; - NetworkArcPtr *ArcsBuffer; - RoutingNodePtr *NodesBuffer; - int Dim; - int DimLink; -} RoutingNodes; -typedef RoutingNodes *RoutingNodesPtr; - -typedef struct RoutingHeapStruct -{ - RoutingNodePtr *Values; - int Head; - int Tail; -} RoutingHeap; -typedef RoutingHeap *RoutingHeapPtr; - -/****************************************************************************** -/ -/ VirtualTable structs -/ -******************************************************************************/ - -typedef struct VirtualNetworkStruct -{ -/* extends the sqlite3_vtab struct */ - const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ - int nRef; /* # references: USED INTERNALLY BY SQLITE */ - char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ - sqlite3 *db; /* the sqlite db holding the virtual table */ - NetworkPtr graph; /* the NETWORK structure */ - RoutingNodesPtr routing; /* the ROUTING structure */ - int currentAlgorithm; /* the currently selected Shortest Path Algorithm */ -} VirtualNetwork; -typedef VirtualNetwork *VirtualNetworkPtr; - -typedef struct VirtualNetworkCursortStruct -{ -/* extends the sqlite3_vtab_cursor struct */ - VirtualNetworkPtr pVtab; /* Virtual table of this cursor */ - SolutionPtr solution; /* the current solution */ - int eof; /* the EOF marker */ -} VirtualNetworkCursor; -typedef VirtualNetworkCursor *VirtualNetworkCursorPtr; - -/* -/ -/ implementation of the Dijkstra Shortest Path algorithm -/ -//////////////////////////////////////////////////////////// -/ -/ Author: Luigi Costalli luigi.costalli@gmail.com -/ version 1.0. 2008 October 21 -/ -*/ - -static RoutingNodesPtr -routing_init (NetworkPtr graph) -{ -/* allocating and initializing the ROUTING struct */ - int i; - int j; - int cnt = 0; - RoutingNodesPtr nd; - RoutingNodePtr ndn; - NetworkNodePtr nn; -/* allocating the main Nodes struct */ - nd = malloc (sizeof (RoutingNodes)); -/* allocating and initializing Nodes array */ - nd->Nodes = malloc (sizeof (RoutingNode) * graph->NumNodes); - nd->Dim = graph->NumNodes; - nd->DimLink = 0; - -/* pre-alloc buffer strategy - GENSCHER 2010-01-05 */ - for (i = 0; i < graph->NumNodes; cnt += graph->Nodes[i].NumArcs, i++); - nd->NodesBuffer = malloc (sizeof (RoutingNodePtr) * cnt); - nd->ArcsBuffer = malloc (sizeof (NetworkArcPtr) * cnt); - - cnt = 0; - for (i = 0; i < graph->NumNodes; i++) - { - /* initializing the Nodes array */ - nn = graph->Nodes + i; - ndn = nd->Nodes + i; - ndn->Id = nn->InternalIndex; - ndn->DimTo = nn->NumArcs; - ndn->To = &(nd->NodesBuffer[cnt]); - ndn->Link = &(nd->ArcsBuffer[cnt]); - cnt += nn->NumArcs; - - for (j = 0; j < nn->NumArcs; j++) - { - /* setting the outcoming Arcs for the current Node */ - nd->DimLink++; - ndn->To[j] = nd->Nodes + nn->Arcs[j].NodeTo->InternalIndex; - ndn->Link[j] = nn->Arcs + j; - } - } - return (nd); -} - -static void -routing_free (RoutingNodes * e) -{ -/* memory cleanup; freeing the ROUTING struct */ - free (e->ArcsBuffer); - free (e->NodesBuffer); - free (e->Nodes); - free (e); -} - -static RoutingHeapPtr -routing_heap_init (int dim) -{ -/* allocating the Nodes ordered list */ - RoutingHeapPtr h; - h = malloc (sizeof (RoutingHeap)); - h->Values = malloc (sizeof (RoutingNodePtr) * dim); - h->Head = 0; - h->Tail = 0; - return (h); -} - -static void -routing_heap_free (RoutingHeapPtr h) -{ -/* freeing the Nodes ordered list */ - free (h->Values); - free (h); -} - -static void -routing_push (RoutingHeapPtr h, RoutingNodePtr n) -{ -/* inserting a Node into the list */ - h->Values[h->Tail] = n; - h->Tail++; -} - -static RoutingNodePtr -dijkstra_pop (RoutingHeapPtr h) -{ -/* fetching the minimum value */ - int i; - RoutingNodePtr n; - double min = DBL_MAX; - int i_min = h->Head; - for (i = h->Head; i < h->Tail; i++) - { - n = h->Values[i]; - if (n->Distance < min) - { - min = n->Distance; - i_min = i; - } - } - if (i_min > h->Head) - { - n = h->Values[i_min]; - h->Values[i_min] = h->Values[h->Head]; - h->Values[h->Head] = n; - } - n = h->Values[h->Head]; - h->Head++; - return (n); -} - -static NetworkArcPtr * -dijkstra_shortest_path (RoutingNodesPtr e, NetworkNodePtr pfrom, - NetworkNodePtr pto, int *ll) -{ -/* identifying the Shortest Path - Dijkstra's algorithm */ - int from; - int to; - int i; - int k; - RoutingNodePtr n; - RoutingNodePtr p_to; - NetworkArcPtr p_link; - int cnt; - NetworkArcPtr *result; - RoutingHeapPtr h; -/* setting From/To */ - from = pfrom->InternalIndex; - to = pto->InternalIndex; -/* initializing the heap */ - h = routing_heap_init (e->DimLink); -/* initializing the graph */ - for (i = 0; i < e->Dim; i++) - { - n = e->Nodes + i; - n->PreviousNode = NULL; - n->Arc = NULL; - n->Inspected = 0; - n->Distance = DBL_MAX; - } -/* pushes the From node into the Nodes list */ - e->Nodes[from].Distance = 0.0; - routing_push (h, e->Nodes + from); - while (h->Tail != h->Head) - { - /* Dijsktra loop */ - n = dijkstra_pop (h); - if (n->Id == to) - { - /* destination reached */ - break; - } - n->Inspected = 1; - for (i = 0; i < n->DimTo; i++) - { - p_to = *(n->To + i); - p_link = *(n->Link + i); - if (p_to->Inspected == 0) - { - if (p_to->Distance == DBL_MAX) - { - /* inserting a new node into the list */ - p_to->Distance = n->Distance + p_link->Cost; - p_to->PreviousNode = n; - p_to->Arc = p_link; - routing_push (h, p_to); - } - else if (p_to->Distance > n->Distance + p_link->Cost) - { - /* updating an already inserted node */ - p_to->Distance = n->Distance + p_link->Cost; - p_to->PreviousNode = n; - p_to->Arc = p_link; - } - } - } - } - routing_heap_free (h); - cnt = 0; - n = e->Nodes + to; - while (n->PreviousNode != NULL) - { - /* counting how many Arcs are into the Shortest Path solution */ - cnt++; - n = n->PreviousNode; - } -/* allocating the solution */ - result = malloc (sizeof (NetworkArcPtr) * cnt); - k = cnt - 1; - n = e->Nodes + to; - while (n->PreviousNode != NULL) - { - /* inserting an Arc into the solution */ - result[k] = n->Arc; - n = n->PreviousNode; - k--; - } - *ll = cnt; - return (result); -} - -/* END of Luigi Costalli Dijkstra Shortest Path implementation */ - -/* -/ -/ implementation of the A* Shortest Path algorithm -/ -*/ - -static RoutingNodePtr -a_star_pop (RoutingHeapPtr h) -{ -/* fetching the minimum value */ - int i; - RoutingNodePtr n; - double min = DBL_MAX; - int i_min = h->Head; - for (i = h->Head; i < h->Tail; i++) - { - n = h->Values[i]; - if (n->HeuristicDistance < min) - { - min = n->HeuristicDistance; - i_min = i; - } - } - if (i_min > h->Head) - { - n = h->Values[i_min]; - h->Values[i_min] = h->Values[h->Head]; - h->Values[h->Head] = n; - } - n = h->Values[h->Head]; - h->Head++; - return (n); -} - -static double -a_star_heuristic_distance (NetworkNodePtr n1, NetworkNodePtr n2, double coeff) -{ -/* computing the euclidean distance intercurring between two nodes */ - double dx = n1->CoordX - n2->CoordX; - double dy = n1->CoordY - n2->CoordY; - double dist = sqrt ((dx * dx) + (dy * dy)) * coeff; - return dist; -} - -static NetworkArcPtr * -a_star_shortest_path (RoutingNodesPtr e, NetworkNodePtr nodes, - NetworkNodePtr pfrom, NetworkNodePtr pto, - double heuristic_coeff, int *ll) -{ -/* identifying the Shortest Path - A* algorithm */ - int from; - int to; - int i; - int k; - RoutingNodePtr pAux; - RoutingNodePtr n; - RoutingNodePtr p_to; - NetworkNodePtr pOrg; - NetworkNodePtr pDest; - NetworkArcPtr p_link; - int cnt; - NetworkArcPtr *result; - RoutingHeapPtr h; -/* setting From/To */ - from = pfrom->InternalIndex; - to = pto->InternalIndex; - pAux = e->Nodes + from; - pOrg = nodes + pAux->Id; - pAux = e->Nodes + to; - pDest = nodes + pAux->Id; -/* initializing the heap */ - h = routing_heap_init (e->DimLink); -/* initializing the graph */ - for (i = 0; i < e->Dim; i++) - { - n = e->Nodes + i; - n->PreviousNode = NULL; - n->Arc = NULL; - n->Inspected = 0; - n->Distance = DBL_MAX; - n->HeuristicDistance = DBL_MAX; - } -/* pushes the From node into the Nodes list */ - e->Nodes[from].Distance = 0.0; - e->Nodes[from].HeuristicDistance = - a_star_heuristic_distance (pOrg, pDest, heuristic_coeff); - routing_push (h, e->Nodes + from); - while (h->Tail != h->Head) - { - /* A* loop */ - n = a_star_pop (h); - if (n->Id == to) - { - /* destination reached */ - break; - } - n->Inspected = 1; - for (i = 0; i < n->DimTo; i++) - { - p_to = *(n->To + i); - p_link = *(n->Link + i); - if (p_to->Inspected == 0) - { - if (p_to->Distance == DBL_MAX) - { - /* inserting a new node into the list */ - p_to->Distance = n->Distance + p_link->Cost; - pOrg = nodes + p_to->Id; - p_to->HeuristicDistance = - p_to->Distance + - a_star_heuristic_distance (pOrg, pDest, - heuristic_coeff); - p_to->PreviousNode = n; - p_to->Arc = p_link; - routing_push (h, p_to); - } - else if (p_to->Distance > n->Distance + p_link->Cost) - { - /* updating an already inserted node */ - p_to->Distance = n->Distance + p_link->Cost; - pOrg = nodes + p_to->Id; - p_to->HeuristicDistance = - p_to->Distance + - a_star_heuristic_distance (pOrg, pDest, - heuristic_coeff); - p_to->PreviousNode = n; - p_to->Arc = p_link; - } - } - } - } - routing_heap_free (h); - cnt = 0; - n = e->Nodes + to; - while (n->PreviousNode != NULL) - { - /* counting how many Arcs are into the Shortest Path solution */ - cnt++; - n = n->PreviousNode; - } -/* allocating the solution */ - result = malloc (sizeof (NetworkArcPtr) * cnt); - k = cnt - 1; - n = e->Nodes + to; - while (n->PreviousNode != NULL) - { - /* inserting an Arc into the solution */ - result[k] = n->Arc; - n = n->PreviousNode; - k--; - } - *ll = cnt; - return (result); -} - -/* END of A* Shortest Path implementation */ - -static int -cmp_nodes_code (const void *p1, const void *p2) -{ -/* compares two nodes by CODE [for BSEARCH] */ - NetworkNodePtr pN1 = (NetworkNodePtr) p1; - NetworkNodePtr pN2 = (NetworkNodePtr) p2; - return strcmp (pN1->Code, pN2->Code); -} - -static int -cmp_nodes_id (const void *p1, const void *p2) -{ -/* compares two nodes by ID [for BSEARCH] */ - NetworkNodePtr pN1 = (NetworkNodePtr) p1; - NetworkNodePtr pN2 = (NetworkNodePtr) p2; - if (pN1->Id == pN2->Id) - return 0; - if (pN1->Id > pN2->Id) - return 1; - return -1; -} - -static NetworkNodePtr -find_node_by_code (NetworkPtr graph, const char *code) -{ -/* searching a Node (by Code) into the sorted list */ - NetworkNodePtr ret; - NetworkNode pN; - pN.Code = (char *) code; - ret = - bsearch (&pN, graph->Nodes, graph->NumNodes, sizeof (NetworkNode), - cmp_nodes_code); - return ret; -} - -static NetworkNodePtr -find_node_by_id (NetworkPtr graph, const sqlite3_int64 id) -{ -/* searching a Node (by Id) into the sorted list */ - NetworkNodePtr ret; - NetworkNode pN; - pN.Id = id; - ret = - bsearch (&pN, graph->Nodes, graph->NumNodes, sizeof (NetworkNode), - cmp_nodes_id); - return ret; -} - -static void -delete_solution (SolutionPtr solution) -{ -/* deleting the current solution */ - ArcSolutionPtr pA; - ArcSolutionPtr pAn; - RowSolutionPtr pR; - RowSolutionPtr pRn; - if (!solution) - return; - pA = solution->FirstArc; - while (pA) - { - pAn = pA->Next; - if (pA->FromCode) - free (pA->FromCode); - if (pA->ToCode) - free (pA->ToCode); - if (pA->Coords) - free (pA->Coords); - if (pA->Name) - free (pA->Name); - free (pA); - pA = pAn; - } - pR = solution->First; - while (pR) - { - pRn = pR->Next; - if (pR->Name) - free (pR->Name); - free (pR); - pR = pRn; - } - if (solution->Geometry) - gaiaFreeGeomColl (solution->Geometry); - free (solution); -} - -static void -reset_solution (SolutionPtr solution) -{ -/* resetting the current solution */ - ArcSolutionPtr pA; - ArcSolutionPtr pAn; - RowSolutionPtr pR; - RowSolutionPtr pRn; - if (!solution) - return; - pA = solution->FirstArc; - while (pA) - { - pAn = pA->Next; - if (pA->FromCode) - free (pA->FromCode); - if (pA->ToCode) - free (pA->ToCode); - if (pA->Coords) - free (pA->Coords); - free (pA); - pA = pAn; - } - pR = solution->First; - while (pR) - { - pRn = pR->Next; - if (pR->Name) - free (pR->Name); - free (pR); - pR = pRn; - } - if (solution->Geometry) - gaiaFreeGeomColl (solution->Geometry); - solution->FirstArc = NULL; - solution->LastArc = NULL; - solution->From = NULL; - solution->To = NULL; - solution->First = NULL; - solution->Last = NULL; - solution->CurrentRow = NULL; - solution->CurrentRowId = 0; - solution->TotalCost = 0.0; - solution->Geometry = NULL; -} - -static SolutionPtr -alloc_solution (void) -{ -/* allocates and initializes the current solution */ - SolutionPtr p = malloc (sizeof (Solution)); - p->FirstArc = NULL; - p->LastArc = NULL; - p->From = NULL; - p->To = NULL; - p->First = NULL; - p->Last = NULL; - p->CurrentRow = NULL; - p->CurrentRowId = 0; - p->TotalCost = 0.0; - p->Geometry = NULL; - return p; -} - -static void -add_arc_to_solution (SolutionPtr solution, NetworkArcPtr arc) -{ -/* inserts an Arc into the Shortest Path solution */ - RowSolutionPtr p = malloc (sizeof (RowSolution)); - p->Arc = arc; - p->Name = NULL; - p->Next = NULL; - solution->TotalCost += arc->Cost; - if (!(solution->First)) - solution->First = p; - if (solution->Last) - solution->Last->Next = p; - solution->Last = p; -} - -static void -add_arc_geometry_to_solution (SolutionPtr solution, sqlite3_int64 arc_id, - const char *from_code, const char *to_code, - sqlite3_int64 from_id, sqlite3_int64 to_id, - int points, double *coords, int srid, - const char *name) -{ -/* inserts an Arc Geometry into the Shortest Path solution */ - int len; - ArcSolutionPtr p = malloc (sizeof (ArcSolution)); - p->ArcRowid = arc_id; - p->FromCode = NULL; - len = strlen (from_code); - if (len > 0) - { - p->FromCode = malloc (len + 1); - strcpy (p->FromCode, from_code); - } - p->ToCode = NULL; - len = strlen (to_code); - if (len > 0) - { - p->ToCode = malloc (len + 1); - strcpy (p->ToCode, to_code); - } - p->FromId = from_id; - p->ToId = to_id; - p->Points = points; - p->Coords = coords; - p->Srid = srid; - if (name == NULL) - p->Name = NULL; - else - { - len = strlen (name); - p->Name = malloc (len + 1); - strcpy (p->Name, name); - } - p->Next = NULL; - if (!(solution->FirstArc)) - solution->FirstArc = p; - if (solution->LastArc) - solution->LastArc->Next = p; - solution->LastArc = p; -} - -static void -build_solution (sqlite3 * handle, NetworkPtr graph, SolutionPtr solution, - NetworkArcPtr * shortest_path, int cnt) -{ -/* formatting the Shortest Path solution */ - int i; - char *sql; - int err; - int error = 0; - int ret; - sqlite3_int64 arc_id; - const unsigned char *blob; - int size; - sqlite3_int64 from_id; - sqlite3_int64 to_id; - char *from_code; - char *to_code; - char *name; - int tbd; - int ind; - int base = 0; - int block = 128; - int how_many; - sqlite3_stmt *stmt; - char *xfrom; - char *xto; - char *xgeom; - char *xname; - char *xtable; - gaiaOutBuffer sql_statement; - if (cnt > 0) - { - /* building the solution */ - for (i = 0; i < cnt; i++) - { - add_arc_to_solution (solution, shortest_path[i]); - } - } - tbd = cnt; - while (tbd > 0) - { - /* requesting max 128 arcs at each time */ - if (tbd < block) - how_many = tbd; - else - how_many = block; -/* preparing the Geometry representing this solution [reading arcs] */ - gaiaOutBufferInitialize (&sql_statement); - if (graph->NameColumn) - { - /* a Name column is defined */ - xfrom = gaiaDoubleQuotedSql (graph->FromColumn); - xto = gaiaDoubleQuotedSql (graph->ToColumn); - xgeom = gaiaDoubleQuotedSql (graph->GeometryColumn); - xname = gaiaDoubleQuotedSql (graph->NameColumn); - xtable = gaiaDoubleQuotedSql (graph->TableName); - sql = - sqlite3_mprintf - ("SELECT ROWID, \"%s\", \"%s\", \"%s\", \"%s\" FROM \"%s\" WHERE ROWID IN (", - xfrom, xto, xgeom, xname, xtable); - free (xfrom); - free (xto); - free (xgeom); - free (xname); - free (xtable); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - } - else - { - /* no Name column is defined */ - xfrom = gaiaDoubleQuotedSql (graph->FromColumn); - xto = gaiaDoubleQuotedSql (graph->ToColumn); - xgeom = gaiaDoubleQuotedSql (graph->GeometryColumn); - xtable = gaiaDoubleQuotedSql (graph->TableName); - sql = - sqlite3_mprintf - ("SELECT ROWID, \"%s\", \"%s\", \"%s\" FROM \"%s\" WHERE ROWID IN (", - xfrom, xto, xgeom, xtable); - free (xfrom); - free (xto); - free (xgeom); - free (xtable); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - } - for (i = 0; i < how_many; i++) - { - if (i == 0) - gaiaAppendToOutBuffer (&sql_statement, "?"); - else - gaiaAppendToOutBuffer (&sql_statement, ",?"); - } - gaiaAppendToOutBuffer (&sql_statement, ")"); - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - ret = - sqlite3_prepare_v2 (handle, sql_statement.Buffer, - strlen (sql_statement.Buffer), &stmt, - NULL); - else - ret = SQLITE_ERROR; - gaiaOutBufferReset (&sql_statement); - if (ret != SQLITE_OK) - { - error = 1; - goto abort; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - ind = 1; - for (i = 0; i < cnt; i++) - { - if (i < base) - continue; - if (i >= (base + how_many)) - break; - sqlite3_bind_int64 (stmt, ind, shortest_path[i]->ArcRowid); - ind++; - } - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - arc_id = -1; - from_id = -1; - to_id = -1; - from_code = NULL; - to_code = NULL; - blob = NULL; - size = 0; - name = NULL; - err = 0; - if (sqlite3_column_type (stmt, 0) == SQLITE_INTEGER) - arc_id = sqlite3_column_int64 (stmt, 0); - else - err = 1; - if (graph->NodeCode) - { - /* nodes are identified by TEXT codes */ - if (sqlite3_column_type (stmt, 1) == SQLITE_TEXT) - from_code = - (char *) sqlite3_column_text (stmt, 1); - else - err = 1; - if (sqlite3_column_type (stmt, 2) == SQLITE_TEXT) - to_code = - (char *) sqlite3_column_text (stmt, 2); - else - err = 1; - } - else - { - /* nodes are identified by INTEGER ids */ - if (sqlite3_column_type (stmt, 1) == SQLITE_INTEGER) - from_id = sqlite3_column_int64 (stmt, 1); - else - err = 1; - if (sqlite3_column_type (stmt, 2) == SQLITE_INTEGER) - to_id = sqlite3_column_int64 (stmt, 2); - else - err = 1; - } - if (sqlite3_column_type (stmt, 3) == SQLITE_BLOB) - { - blob = - (const unsigned char *) - sqlite3_column_blob (stmt, 3); - size = sqlite3_column_bytes (stmt, 3); - } - else - err = 1; - if (graph->NameColumn) - { - if (sqlite3_column_type (stmt, 4) == SQLITE_TEXT) - name = (char *) sqlite3_column_text (stmt, 4); - } - if (err) - error = 1; - else - { - /* saving the Arc geometry into the temporary struct */ - gaiaGeomCollPtr geom = - gaiaFromSpatiaLiteBlobWkb (blob, size); - if (geom) - { - /* OK, we have fetched a valid Geometry */ - if (geom->FirstPoint == NULL - && geom->FirstPolygon == NULL - && geom->FirstLinestring != NULL - && geom->FirstLinestring == - geom->LastLinestring) - { - /* Geometry is LINESTRING as expected */ - int iv; - int points = - geom->FirstLinestring->Points; - double *coords = - malloc (sizeof (double) * - (points * 2)); - for (iv = 0; iv < points; iv++) - { - double x; - double y; - gaiaGetPoint - (geom-> - FirstLinestring->Coords, iv, - &x, &y); - *(coords + ((iv * 2) + 0)) = x; - *(coords + ((iv * 2) + 1)) = y; - } - if (from_code == NULL) - from_code = ""; - if (to_code == NULL) - to_code = ""; - add_arc_geometry_to_solution (solution, - arc_id, - from_code, - to_code, - from_id, - to_id, - points, - coords, - geom->Srid, - name); - } - else - error = 1; - gaiaFreeGeomColl (geom); - } - else - error = 1; - } - } - } - sqlite3_finalize (stmt); - tbd -= how_many; - base += how_many; - } - abort: - if (shortest_path) - free (shortest_path); - if (!error) - { - /* building the Geometry representing the Shortest Path Solution */ - gaiaLinestringPtr ln; - int tot_pts = 0; - RowSolutionPtr pR; - ArcSolutionPtr pA; - int srid = -1; - if (solution->FirstArc) - srid = (solution->FirstArc)->Srid; - pR = solution->First; - while (pR) - { - pA = solution->FirstArc; - while (pA) - { - /* computing how many vertices do we need to build the LINESTRING */ - if (pR->Arc->ArcRowid == pA->ArcRowid) - { - if (pR == solution->First) - tot_pts += pA->Points; - else - tot_pts += (pA->Points - 1); - if (pA->Srid != srid) - srid = -1; - } - pA = pA->Next; - } - pR = pR->Next; - } - /* creating the Shortest Path Geometry - LINESTRING */ - ln = gaiaAllocLinestring (tot_pts); - solution->Geometry = gaiaAllocGeomColl (); - solution->Geometry->Srid = srid; - gaiaInsertLinestringInGeomColl (solution->Geometry, ln); - tot_pts = 0; - pR = solution->First; - while (pR) - { - /* building the LINESTRING */ - int skip; - if (pR == solution->First) - skip = 0; /* for first arc we must copy any vertex */ - else - skip = 1; /* for subsequent arcs we must skip first vertex [already inserted from previous arc] */ - pA = solution->FirstArc; - while (pA) - { - if (pR->Arc->ArcRowid == pA->ArcRowid) - { - /* copying vertices from correspoinding Arc Geometry */ - int ini; - int iv; - int rev; - double x; - double y; - if (graph->NodeCode) - { - /* nodes are identified by TEXT codes */ - if (strcmp - (pR->Arc->NodeFrom->Code, - pA->ToCode) == 0) - rev = 1; - else - rev = 0; - } - else - { - /* nodes are identified by INTEGER ids */ - if (pR->Arc->NodeFrom->Id == pA->ToId) - rev = 1; - else - rev = 0; - } - if (rev) - { - /* copying Arc vertices in reverse order */ - if (skip) - ini = pA->Points - 2; - else - ini = pA->Points - 1; - for (iv = ini; iv >= 0; iv--) - { - x = *(pA->Coords + ((iv * 2) + 0)); - y = *(pA->Coords + ((iv * 2) + 1)); - gaiaSetPoint (ln->Coords, tot_pts, x, - y); - tot_pts++; - } - } - else - { - /* copying Arc vertices in normal order */ - if (skip) - ini = 1; - else - ini = 0; - for (iv = ini; iv < pA->Points; iv++) - { - x = *(pA->Coords + ((iv * 2) + 0)); - y = *(pA->Coords + ((iv * 2) + 1)); - gaiaSetPoint (ln->Coords, tot_pts, x, - y); - tot_pts++; - } - } - if (pA->Name) - { - int len = strlen (pA->Name); - pR->Name = malloc (len + 1); - strcpy (pR->Name, pA->Name); - } - break; - } - pA = pA->Next; - } - pR = pR->Next; - } - } -} - -static void -dijkstra_solve (sqlite3 * handle, NetworkPtr graph, RoutingNodesPtr routing, - SolutionPtr solution) -{ -/* computing a Dijkstra Shortest Path solution */ - int cnt; - NetworkArcPtr *shortest_path = - dijkstra_shortest_path (routing, solution->From, solution->To, &cnt); - build_solution (handle, graph, solution, shortest_path, cnt); -} - -static void -a_star_solve (sqlite3 * handle, NetworkPtr graph, RoutingNodesPtr routing, - SolutionPtr solution) -{ -/* computing an A* Shortest Path solution */ - int cnt; - NetworkArcPtr *shortest_path = - a_star_shortest_path (routing, graph->Nodes, solution->From, - solution->To, graph->AStarHeuristicCoeff, &cnt); - build_solution (handle, graph, solution, shortest_path, cnt); -} - -static void -network_free (NetworkPtr p) -{ -/* memory cleanup; freeing any allocation for the network struct */ - NetworkNodePtr pN; - int i; - if (!p) - return; - for (i = 0; i < p->NumNodes; i++) - { - pN = p->Nodes + i; - if (pN->Code) - free (pN->Code); - if (pN->Arcs) - free (pN->Arcs); - } - if (p->Nodes) - free (p->Nodes); - if (p->TableName) - free (p->TableName); - if (p->FromColumn) - free (p->FromColumn); - if (p->ToColumn) - free (p->ToColumn); - if (p->GeometryColumn) - free (p->GeometryColumn); - if (p->NameColumn) - free (p->NameColumn); - free (p); -} - -static NetworkPtr -network_init (const unsigned char *blob, int size) -{ -/* parsing the HEADER block */ - NetworkPtr graph; - int net64; - int aStar = 0; - int nodes; - int node_code; - int max_code_length; - int endian_arch = gaiaEndianArch (); - const char *table; - const char *from; - const char *to; - const char *geom; - const char *name = NULL; - double a_star_coeff = 1.0; - int len; - const unsigned char *ptr; - if (size < 9) - return NULL; - if (*(blob + 0) == GAIA_NET_START) /* signature - legacy format using 32bit ints */ - net64 = 0; - else if (*(blob + 0) == GAIA_NET64_START) /* signature - format using 64bit ints */ - net64 = 1; - else if (*(blob + 0) == GAIA_NET64_A_STAR_START) /* signature - format using 64bit ints AND supporting A* */ - { - net64 = 1; - aStar = 1; - } - else - return NULL; - if (*(blob + 1) != GAIA_NET_HEADER) /* signature */ - return NULL; - nodes = gaiaImport32 (blob + 2, 1, endian_arch); /* # nodes */ - if (nodes <= 0) - return NULL; - if (*(blob + 6) == GAIA_NET_CODE) /* Nodes identified by a TEXT code */ - node_code = 1; - else if (*(blob + 6) == GAIA_NET_ID) /* Nodes indentified by an INTEGER id */ - node_code = 0; - else - return NULL; - max_code_length = *(blob + 7); /* Max TEXT Code length */ - if (*(blob + 8) != GAIA_NET_TABLE) /* signature for TABLE NAME */ - return NULL; - ptr = blob + 9; - len = gaiaImport16 (ptr, 1, endian_arch); /* TABLE NAME is varlen */ - ptr += 2; - table = (char *) ptr; - ptr += len; - if (*ptr != GAIA_NET_FROM) /* signature for FromNode COLUMN */ - return NULL; - ptr++; - len = gaiaImport16 (ptr, 1, endian_arch); /* FromNode COLUMN is varlen */ - ptr += 2; - from = (char *) ptr; - ptr += len; - if (*ptr != GAIA_NET_TO) /* signature for ToNode COLUMN */ - return NULL; - ptr++; - len = gaiaImport16 (ptr, 1, endian_arch); /* ToNode COLUMN is varlen */ - ptr += 2; - to = (char *) ptr; - ptr += len; - if (*ptr != GAIA_NET_GEOM) /* signature for Geometry COLUMN */ - return NULL; - ptr++; - len = gaiaImport16 (ptr, 1, endian_arch); /* Geometry COLUMN is varlen */ - ptr += 2; - geom = (char *) ptr; - ptr += len; - if (net64) - { - if (*ptr != GAIA_NET_NAME) /* signature for Name COLUMN - may be empty */ - return NULL; - ptr++; - len = gaiaImport16 (ptr, 1, endian_arch); /* Name COLUMN is varlen */ - ptr += 2; - name = (char *) ptr; - ptr += len; - } - if (net64 && aStar) - { - if (*ptr != GAIA_NET_A_STAR_COEFF) /* signature for A* Heuristic Coeff */ - return NULL; - ptr++; - a_star_coeff = gaiaImport64 (ptr, 1, endian_arch); - ptr += 8; - } - if (*ptr != GAIA_NET_END) /* signature */ - return NULL; - graph = malloc (sizeof (Network)); - graph->Net64 = net64; - graph->AStar = aStar; - graph->EndianArch = endian_arch; - graph->CurrentIndex = 0; - graph->NodeCode = node_code; - graph->MaxCodeLength = max_code_length; - graph->NumNodes = nodes; - graph->Nodes = malloc (sizeof (NetworkNode) * nodes); - len = strlen (table); - graph->TableName = malloc (len + 1); - strcpy (graph->TableName, table); - len = strlen (from); - graph->FromColumn = malloc (len + 1); - strcpy (graph->FromColumn, from); - len = strlen (to); - graph->ToColumn = malloc (len + 1); - strcpy (graph->ToColumn, to); - len = strlen (geom); - graph->GeometryColumn = malloc (len + 1); - strcpy (graph->GeometryColumn, geom); - if (!net64) - { - /* Name column is not supported */ - graph->NameColumn = NULL; - } - else - { - len = strlen (name); - if (len <= 1) - graph->NameColumn = NULL; - else - { - graph->NameColumn = malloc (len + 1); - strcpy (graph->NameColumn, name); - } - } - graph->AStarHeuristicCoeff = a_star_coeff; - return graph; -} - -static int -network_block (NetworkPtr graph, const unsigned char *blob, int size) -{ -/* parsing a NETWORK Block */ - const unsigned char *in = blob; - int nodes; - int i; - int ia; - int index; - char code[256]; - double x; - double y; - sqlite3_int64 nodeId = -1; - int arcs; - NetworkNodePtr pN; - NetworkArcPtr pA; - int len; - sqlite3_int64 arcId; - int nodeToIdx; - double cost; - if (size < 3) - goto error; - if (*in++ != GAIA_NET_BLOCK) /* signature */ - goto error; - nodes = gaiaImport16 (in, 1, graph->EndianArch); /* # Nodes */ - in += 2; - for (i = 0; i < nodes; i++) - { - /* parsing each node */ - if ((size - (in - blob)) < 5) - goto error; - if (*in++ != GAIA_NET_NODE) /* signature */ - goto error; - index = gaiaImport32 (in, 1, graph->EndianArch); /* node internal index */ - in += 4; - if (index < 0 || index >= graph->NumNodes) - goto error; - if (graph->NodeCode) - { - /* Nodes are identified by a TEXT Code */ - if ((size - (in - blob)) < graph->MaxCodeLength) - goto error; - memcpy (code, in, graph->MaxCodeLength); - in += graph->MaxCodeLength; - } - else - { - /* Nodes are identified by an INTEGER Id */ - if (graph->Net64) - { - if ((size - (in - blob)) < 8) - goto error; - nodeId = gaiaImportI64 (in, 1, graph->EndianArch); /* the Node ID: 64bit */ - in += 8; - } - else - { - if ((size - (in - blob)) < 4) - goto error; - nodeId = gaiaImport32 (in, 1, graph->EndianArch); /* the Node ID: 32bit */ - in += 4; - } - } - if (graph->AStar) - { - /* fetching node's X,Y coords */ - if ((size - (in - blob)) < 8) - goto error; - x = gaiaImport64 (in, 1, graph->EndianArch); /* X coord */ - in += 8; - if ((size - (in - blob)) < 8) - goto error; - y = gaiaImport64 (in, 1, graph->EndianArch); /* Y coord */ - in += 8; - } - else - { - x = DBL_MAX; - y = DBL_MAX; - } - if ((size - (in - blob)) < 2) - goto error; - arcs = gaiaImport16 (in, 1, graph->EndianArch); /* # Arcs */ - in += 2; - if (arcs < 0) - goto error; - /* initializing the Node */ - pN = graph->Nodes + index; - pN->InternalIndex = index; - if (graph->NodeCode) - { - /* Nodes are identified by a TEXT Code */ - pN->Id = -1; - len = strlen (code); - pN->Code = malloc (len + 1); - strcpy (pN->Code, code); - } - else - { - /* Nodes are identified by an INTEGER Id */ - pN->Id = nodeId; - pN->Code = NULL; - } - pN->CoordX = x; - pN->CoordY = y; - pN->NumArcs = arcs; - if (arcs) - { - /* parsing the Arcs */ - pN->Arcs = malloc (sizeof (NetworkArc) * arcs); - for (ia = 0; ia < arcs; ia++) - { - /* parsing each Arc */ - if (graph->Net64) - { - if ((size - (in - blob)) < 22) - goto error; - } - else - { - if ((size - (in - blob)) < 18) - goto error; - } - if (*in++ != GAIA_NET_ARC) /* signature */ - goto error; - if (graph->Net64) - { - arcId = gaiaImportI64 (in, 1, graph->EndianArch); /* # Arc ROWID: 64bit */ - in += 8; - } - else - { - arcId = gaiaImport32 (in, 1, graph->EndianArch); /* # Arc ROWID: 32bit */ - in += 4; - } - nodeToIdx = gaiaImport32 (in, 1, graph->EndianArch); /* # NodeTo internal index */ - in += 4; - cost = gaiaImport64 (in, 1, graph->EndianArch); /* # Cost */ - in += 8; - if (*in++ != GAIA_NET_END) /* signature */ - goto error; - pA = pN->Arcs + ia; - /* initializing the Arc */ - if (nodeToIdx < 0 || nodeToIdx >= graph->NumNodes) - goto error; - pA->NodeFrom = pN; - pA->NodeTo = graph->Nodes + nodeToIdx; - pA->ArcRowid = arcId; - pA->Cost = cost; - } - } - else - pN->Arcs = NULL; - if ((size - (in - blob)) < 1) - goto error; - if (*in++ != GAIA_NET_END) /* signature */ - goto error; - } - return 1; - error: - return 0; -} - -static NetworkPtr -load_network (sqlite3 * handle, const char *table) -{ -/* loads the NETWORK struct */ - NetworkPtr graph = NULL; - sqlite3_stmt *stmt; - char *sql; - int ret; - int header = 1; - const unsigned char *blob; - int size; - char *xname; - xname = gaiaDoubleQuotedSql (table); - sql = sqlite3_mprintf ("SELECT NetworkData FROM \"%s\" ORDER BY Id", xname); - free (xname); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free (sql); - if (ret != SQLITE_OK) - goto abort; - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - if (sqlite3_column_type (stmt, 0) == SQLITE_BLOB) - { - blob = - (const unsigned char *) sqlite3_column_blob (stmt, 0); - size = sqlite3_column_bytes (stmt, 0); - if (header) - { - /* parsing the HEADER block */ - graph = network_init (blob, size); - header = 0; - } - else - { - /* parsing ordinary Blocks */ - if (!graph) - { - sqlite3_finalize (stmt); - goto abort; - } - if (!network_block (graph, blob, size)) - { - sqlite3_finalize (stmt); - goto abort; - } - } - } - else - { - sqlite3_finalize (stmt); - goto abort; - } - } - else - { - sqlite3_finalize (stmt); - goto abort; - } - } - sqlite3_finalize (stmt); - return graph; - abort: - network_free (graph); - return NULL; -} - -static int -vnet_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* creates the virtual table connected to some shapefile */ - VirtualNetworkPtr p_vt; - int err; - int ret; - int i; - int n_rows; - int n_columns; - char *vtable = NULL; - char *table = NULL; - const char *col_name = NULL; - char **results; - char *err_msg = NULL; - char *sql; - int ok_id; - int ok_data; - char *xname; - NetworkPtr graph = NULL; - if (pAux) - pAux = pAux; /* unused arg warning suppression */ -/* checking for table_name and geo_column_name */ - if (argc == 4) - { - vtable = gaiaDequotedSql (argv[2]); - table = gaiaDequotedSql (argv[3]); - } - else - { - *pzErr = - sqlite3_mprintf - ("[VirtualNetwork module] CREATE VIRTUAL: illegal arg list {NETWORK-DATAtable}\n"); - goto error; - } -/* retrieving the base table columns */ - err = 0; - ok_id = 0; - ok_data = 0; - xname = gaiaDoubleQuotedSql (table); - sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); - free (xname); - ret = sqlite3_get_table (db, sql, &results, &n_rows, &n_columns, &err_msg); - sqlite3_free (sql); - if (ret != SQLITE_OK) - { - err = 1; - goto illegal; - } - if (n_rows > 1) - { - for (i = 1; i <= n_rows; i++) - { - col_name = results[(i * n_columns) + 1]; - if (strcasecmp (col_name, "id") == 0) - ok_id = 1; - if (strcasecmp (col_name, "networkdata") == 0) - ok_data = 1; - } - sqlite3_free_table (results); - if (!ok_id) - err = 1; - if (!ok_data) - err = 1; - } - else - err = 1; - illegal: - if (err) - { - /* something is going the wrong way */ - *pzErr = - sqlite3_mprintf - ("[VirtualNetwork module] cannot build a valid NETWORK\n"); - return SQLITE_ERROR; - } - p_vt = (VirtualNetworkPtr) sqlite3_malloc (sizeof (VirtualNetwork)); - if (!p_vt) - return SQLITE_NOMEM; - graph = load_network (db, table); - if (!graph) - { - /* something is going the wrong way */ - *pzErr = - sqlite3_mprintf - ("[VirtualNetwork module] cannot build a valid NETWORK\n"); - goto error; - } - p_vt->db = db; - p_vt->graph = graph; - p_vt->currentAlgorithm = VNET_DIJKSTRA_ALGORITHM; - p_vt->routing = NULL; - p_vt->pModule = &my_net_module; - p_vt->nRef = 0; - p_vt->zErrMsg = NULL; -/* preparing the COLUMNs for this VIRTUAL TABLE */ - xname = gaiaDoubleQuotedSql (vtable); - if (p_vt->graph->NodeCode) - { - if (p_vt->graph->NameColumn) - { - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (Algorithm TEXT, " - "ArcRowid INTEGER, NodeFrom TEXT, NodeTo TEXT," - " Cost DOUBLE, Geometry BLOB, Name TEXT)", - xname); - } - else - { - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (Algorithm TEXT, " - "ArcRowid INTEGER, NodeFrom TEXT, NodeTo TEXT," - " Cost DOUBLE, Geometry BLOB)", xname); - } - } - else - { - if (p_vt->graph->NameColumn) - { - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (Algorithm TEXT, " - "ArcRowid INTEGER, NodeFrom INTEGER, NodeTo INTEGER," - " Cost DOUBLE, Geometry BLOB, Name TEXT)", - xname); - } - else - { - sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (Algorithm TEXT, " - "ArcRowid INTEGER, NodeFrom INTEGER, NodeTo INTEGER," - " Cost DOUBLE, Geometry BLOB)", xname); - } - } - free (xname); - if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) - { - *pzErr = - sqlite3_mprintf - ("[VirtualNetwork module] CREATE VIRTUAL: invalid SQL statement \"%s\"", - sql); - sqlite3_free (sql); - goto error; - } - sqlite3_free (sql); - *ppVTab = (sqlite3_vtab *) p_vt; - p_vt->routing = routing_init (p_vt->graph); - free (table); - free (vtable); - return SQLITE_OK; - error: - if (table) - free (table); - if (vtable) - free (vtable); - return SQLITE_ERROR; -} - -static int -vnet_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* connects the virtual table to some shapefile - simply aliases vshp_create() */ - return vnet_create (db, pAux, argc, argv, ppVTab, pzErr); -} - -static int -vnet_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIdxInfo) -{ -/* best index selection */ - int i; - int errors = 0; - int err = 1; - int from = 0; - int to = 0; - int i_from = -1; - int i_to = -1; - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - for (i = 0; i < pIdxInfo->nConstraint; i++) - { - /* verifying the constraints */ - struct sqlite3_index_constraint *p = &(pIdxInfo->aConstraint[i]); - if (p->usable) - { - if (p->iColumn == 2 && p->op == SQLITE_INDEX_CONSTRAINT_EQ) - { - from++; - i_from = i; - } - else if (p->iColumn == 3 && p->op == SQLITE_INDEX_CONSTRAINT_EQ) - { - to++; - i_to = i; - } - else - errors++; - } - } - if (from == 1 && to == 1 && errors == 0) - { - /* this one is a valid Shortest Path query */ - if (i_from < i_to) - pIdxInfo->idxNum = 1; /* first arg is FROM */ - else - pIdxInfo->idxNum = 2; /* first arg is TO */ - pIdxInfo->estimatedCost = 1.0; - for (i = 0; i < pIdxInfo->nConstraint; i++) - { - if (pIdxInfo->aConstraint[i].usable) - { - pIdxInfo->aConstraintUsage[i].argvIndex = i + 1; - pIdxInfo->aConstraintUsage[i].omit = 1; - } - } - err = 0; - } - if (err) - { - /* illegal query */ - pIdxInfo->idxNum = 0; - } - return SQLITE_OK; -} - -static int -vnet_disconnect (sqlite3_vtab * pVTab) -{ -/* disconnects the virtual table */ - VirtualNetworkPtr p_vt = (VirtualNetworkPtr) pVTab; - if (p_vt->routing) - routing_free (p_vt->routing); - if (p_vt->graph) - network_free (p_vt->graph); - sqlite3_free (p_vt); - return SQLITE_OK; -} - -static int -vnet_destroy (sqlite3_vtab * pVTab) -{ -/* destroys the virtual table - simply aliases vshp_disconnect() */ - return vnet_disconnect (pVTab); -} - -static void -vnet_read_row (VirtualNetworkCursorPtr cursor) -{ -/* trying to read a "row" from Shortest Path solution */ - if (cursor->solution->CurrentRow == NULL) - cursor->eof = 1; - else - cursor->eof = 0; - return; -} - -static int -vnet_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) -{ -/* opening a new cursor */ - VirtualNetworkCursorPtr cursor = - (VirtualNetworkCursorPtr) - sqlite3_malloc (sizeof (VirtualNetworkCursor)); - if (cursor == NULL) - return SQLITE_ERROR; - cursor->pVtab = (VirtualNetworkPtr) pVTab; - cursor->solution = alloc_solution (); - cursor->eof = 0; - *ppCursor = (sqlite3_vtab_cursor *) cursor; - return SQLITE_OK; -} - -static int -vnet_close (sqlite3_vtab_cursor * pCursor) -{ -/* closing the cursor */ - VirtualNetworkCursorPtr cursor = (VirtualNetworkCursorPtr) pCursor; - delete_solution (cursor->solution); - sqlite3_free (pCursor); - return SQLITE_OK; -} - -static int -vnet_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, - int argc, sqlite3_value ** argv) -{ -/* setting up a cursor filter */ - int node_code = 0; - VirtualNetworkCursorPtr cursor = (VirtualNetworkCursorPtr) pCursor; - VirtualNetworkPtr net = (VirtualNetworkPtr) cursor->pVtab; - if (idxStr) - idxStr = idxStr; /* unused arg warning suppression */ - node_code = net->graph->NodeCode; - reset_solution (cursor->solution); - cursor->eof = 1; - if (idxNum == 1 && argc == 2) - { - /* retrieving the Shortest Path From/To params */ - if (node_code) - { - /* Nodes are identified by TEXT Codes */ - if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) - cursor->solution->From = - find_node_by_code (net->graph, - (char *) - sqlite3_value_text (argv[0])); - if (sqlite3_value_type (argv[1]) == SQLITE_TEXT) - cursor->solution->To = - find_node_by_code (net->graph, - (char *) - sqlite3_value_text (argv[1])); - } - else - { - /* Nodes are identified by INT Ids */ - if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - cursor->solution->From = - find_node_by_id (net->graph, - sqlite3_value_int (argv[0])); - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - cursor->solution->To = - find_node_by_id (net->graph, - sqlite3_value_int (argv[1])); - } - } - if (idxNum == 2 && argc == 2) - { - /* retrieving the Shortest Path To/From params */ - if (node_code) - { - /* Nodes are identified by TEXT Codes */ - if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) - cursor->solution->To = - find_node_by_code (net->graph, - (char *) - sqlite3_value_text (argv[0])); - if (sqlite3_value_type (argv[1]) == SQLITE_TEXT) - cursor->solution->From = - find_node_by_code (net->graph, - (char *) - sqlite3_value_text (argv[1])); - } - else - { - /* Nodes are identified by INT Ids */ - if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) - cursor->solution->To = - find_node_by_id (net->graph, - sqlite3_value_int (argv[0])); - if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) - cursor->solution->From = - find_node_by_id (net->graph, - sqlite3_value_int (argv[1])); - } - } - if (cursor->solution->From && cursor->solution->To) - { - cursor->eof = 0; - if (net->currentAlgorithm == VNET_A_STAR_ALGORITHM) - a_star_solve (net->db, net->graph, net->routing, - cursor->solution); - else - dijkstra_solve (net->db, net->graph, net->routing, - cursor->solution); - return SQLITE_OK; - } - cursor->eof = 0; - return SQLITE_OK; -} - -static int -vnet_next (sqlite3_vtab_cursor * pCursor) -{ -/* fetching a next row from cursor */ - VirtualNetworkCursorPtr cursor = (VirtualNetworkCursorPtr) pCursor; - if (cursor->solution->CurrentRowId == 0) - cursor->solution->CurrentRow = cursor->solution->First; - else - cursor->solution->CurrentRow = cursor->solution->CurrentRow->Next; - if (!(cursor->solution->CurrentRow)) - { - cursor->eof = 1; - return SQLITE_OK; - } - (cursor->solution->CurrentRowId)++; - vnet_read_row (cursor); - return SQLITE_OK; -} - -static int -vnet_eof (sqlite3_vtab_cursor * pCursor) -{ -/* cursor EOF */ - VirtualNetworkCursorPtr cursor = (VirtualNetworkCursorPtr) pCursor; - return cursor->eof; -} - -static int -vnet_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, - int column) -{ -/* fetching value for the Nth column */ - RowSolutionPtr row; - int node_code = 0; - const char *algorithm; - VirtualNetworkCursorPtr cursor = (VirtualNetworkCursorPtr) pCursor; - VirtualNetworkPtr net = (VirtualNetworkPtr) cursor->pVtab; - node_code = net->graph->NodeCode; - if (cursor->solution->CurrentRow == 0) - { - /* special case: this one is the solution summary */ - if (column == 0) - { - /* the currently used Algorithm */ - if (net->currentAlgorithm == VNET_A_STAR_ALGORITHM) - algorithm = "A*"; - else - algorithm = "Dijkstra"; - sqlite3_result_text (pContext, algorithm, strlen (algorithm), - SQLITE_STATIC); - } - if (cursor->solution->From == NULL || cursor->solution->To == NULL) - { - /* empty [uninitialized] solution */ - if (column > 0) - sqlite3_result_null (pContext); - return SQLITE_OK; - } - if (column == 1) - { - /* the ArcRowId column */ - sqlite3_result_null (pContext); - } - if (column == 2) - { - /* the NodeFrom column */ - if (node_code) - sqlite3_result_text (pContext, cursor->solution->From->Code, - strlen (cursor->solution->From->Code), - SQLITE_STATIC); - else - sqlite3_result_int64 (pContext, cursor->solution->From->Id); - } - if (column == 3) - { - /* the NodeTo column */ - if (node_code) - sqlite3_result_text (pContext, cursor->solution->To->Code, - strlen (cursor->solution->To->Code), - SQLITE_STATIC); - else - sqlite3_result_int64 (pContext, cursor->solution->To->Id); - } - if (column == 4) - { - /* the Cost column */ - sqlite3_result_double (pContext, cursor->solution->TotalCost); - } - if (column == 5) - { - /* the Geometry column */ - if (!(cursor->solution->Geometry)) - sqlite3_result_null (pContext); - else - { - /* builds the BLOB geometry to be returned */ - int len; - unsigned char *p_result = NULL; - gaiaToSpatiaLiteBlobWkb (cursor->solution->Geometry, - &p_result, &len); - sqlite3_result_blob (pContext, p_result, len, free); - } - } - if (column == 6) - { - /* the [optional] Name column */ - sqlite3_result_null (pContext); - } - } - else - { - /* ordinary case: this one is an Arc used by the solution */ - row = cursor->solution->CurrentRow; - if (column == 0) - { - /* the currently used Algorithm */ - if (net->currentAlgorithm == VNET_A_STAR_ALGORITHM) - algorithm = "A*"; - else - algorithm = "Dijkstra"; - sqlite3_result_text (pContext, algorithm, strlen (algorithm), - SQLITE_STATIC); - } - if (column == 1) - { - /* the ArcRowId column */ - sqlite3_result_int64 (pContext, row->Arc->ArcRowid); - } - if (column == 2) - { - /* the NodeFrom column */ - if (node_code) - sqlite3_result_text (pContext, row->Arc->NodeFrom->Code, - strlen (row->Arc->NodeFrom->Code), - SQLITE_STATIC); - else - sqlite3_result_int64 (pContext, row->Arc->NodeFrom->Id); - } - if (column == 3) - { - /* the NodeTo column */ - if (node_code) - sqlite3_result_text (pContext, row->Arc->NodeTo->Code, - strlen (row->Arc->NodeTo->Code), - SQLITE_STATIC); - else - sqlite3_result_int64 (pContext, row->Arc->NodeTo->Id); - } - if (column == 4) - { - /* the Cost column */ - sqlite3_result_double (pContext, row->Arc->Cost); - } - if (column == 5) - { - /* the Geometry column */ - sqlite3_result_null (pContext); - } - if (column == 6) - { - /* the [optional] Name column */ - if (row->Name) - sqlite3_result_text (pContext, row->Name, - strlen (row->Name), SQLITE_STATIC); - else - sqlite3_result_null (pContext); - } - } - return SQLITE_OK; -} - -static int -vnet_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) -{ -/* fetching the ROWID */ - VirtualNetworkCursorPtr cursor = (VirtualNetworkCursorPtr) pCursor; - *pRowid = cursor->solution->CurrentRowId; - return SQLITE_OK; -} - -static int -vnet_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, - sqlite_int64 * pRowid) -{ -/* generic update [INSERT / UPDATE / DELETE */ - VirtualNetworkPtr p_vtab = (VirtualNetworkPtr) pVTab; - if (pRowid) - pRowid = pRowid; /* unused arg warning suppression */ - if (argc == 1) - { - /* performing a DELETE is forbidden */ - return SQLITE_READONLY; - } - else - { - if (sqlite3_value_type (argv[0]) == SQLITE_NULL) - { - /* performing an INSERT is forbidden */ - return SQLITE_READONLY; - } - else - { - /* performing an UPDATE */ - if (argc == 9) - { - p_vtab->currentAlgorithm = VNET_DIJKSTRA_ALGORITHM; - if (sqlite3_value_type (argv[2]) == SQLITE_TEXT) - { - const unsigned char *algorithm = - sqlite3_value_text (argv[2]); - if (strcmp ((char *) algorithm, "A*") == 0) - p_vtab->currentAlgorithm = - VNET_A_STAR_ALGORITHM; - if (strcmp ((char *) algorithm, "a*") == 0) - p_vtab->currentAlgorithm = - VNET_A_STAR_ALGORITHM; - } - if (p_vtab->graph->AStar == 0) - p_vtab->currentAlgorithm = VNET_DIJKSTRA_ALGORITHM; - } - return SQLITE_OK; - } - } - return SQLITE_READONLY; -} - -static int -vnet_begin (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vnet_sync (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vnet_commit (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vnet_rollback (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -int -sqlite3VirtualNetworkInit (sqlite3 * db) -{ - int rc = SQLITE_OK; - my_net_module.iVersion = 1; - my_net_module.xCreate = &vnet_create; - my_net_module.xConnect = &vnet_connect; - my_net_module.xBestIndex = &vnet_best_index; - my_net_module.xDisconnect = &vnet_disconnect; - my_net_module.xDestroy = &vnet_destroy; - my_net_module.xOpen = &vnet_open; - my_net_module.xClose = &vnet_close; - my_net_module.xFilter = &vnet_filter; - my_net_module.xNext = &vnet_next; - my_net_module.xEof = &vnet_eof; - my_net_module.xColumn = &vnet_column; - my_net_module.xRowid = &vnet_rowid; - my_net_module.xUpdate = &vnet_update; - my_net_module.xBegin = &vnet_begin; - my_net_module.xSync = &vnet_sync; - my_net_module.xCommit = &vnet_commit; - my_net_module.xRollback = &vnet_rollback; - my_net_module.xFindFunction = NULL; - sqlite3_create_module_v2 (db, "VirtualNetwork", &my_net_module, NULL, 0); - return rc; -} - -int -virtualnetwork_extension_init (sqlite3 * db) -{ - return sqlite3VirtualNetworkInit (db); -} diff --git a/src/spatialite/src/spatialite/virtualshape.c b/src/spatialite/src/spatialite/virtualshape.c deleted file mode 100644 index d418059..0000000 --- a/src/spatialite/src/spatialite/virtualshape.c +++ /dev/null @@ -1,1193 +0,0 @@ -/* - - virtualshape.c -- SQLite3 extension [VIRTUAL TABLE accessing Shapefile] - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include -#include - -#include -#include -#include -#include - -#ifdef _WIN32 -#define strcasecmp _stricmp -#endif /* not WIN32 */ - -#ifndef OMIT_ICONV /* if ICONV is disabled no SHP support is available */ - -static struct sqlite3_module my_shape_module; - -typedef struct VirtualShapeStruct -{ -/* extends the sqlite3_vtab struct */ - const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ - int nRef; /* # references: USED INTERNALLY BY SQLITE */ - char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ - sqlite3 *db; /* the sqlite db holding the virtual table */ - gaiaShapefilePtr Shp; /* the Shapefile struct */ - int Srid; /* the Shapefile SRID */ -} VirtualShape; -typedef VirtualShape *VirtualShapePtr; - -typedef struct VirtualShapeConstraintStruct -{ -/* a constraint to be verified for xFilter */ - int iColumn; /* Column on left-hand side of constraint */ - int op; /* Constraint operator */ - char valueType; /* value Type ('I'=int,'D'=double,'T'=text) */ - sqlite3_int64 intValue; /* Int64 comparison value */ - double dblValue; /* Double comparison value */ - char *txtValue; /* Text comparison value */ - struct VirtualShapeConstraintStruct *next; -} VirtualShapeConstraint; -typedef VirtualShapeConstraint *VirtualShapeConstraintPtr; - - -typedef struct VirtualShapeCursorStruct -{ -/* extends the sqlite3_vtab_cursor struct */ - VirtualShapePtr pVtab; /* Virtual table of this cursor */ - long current_row; /* the current row ID */ - int blobSize; - unsigned char *blobGeometry; - int eof; /* the EOF marker */ - VirtualShapeConstraintPtr firstConstraint; - VirtualShapeConstraintPtr lastConstraint; -} VirtualShapeCursor; -typedef VirtualShapeCursor *VirtualShapeCursorPtr; - -static int -vshp_has_metadata (sqlite3 * db, int *geotype) -{ -/* testing the layout of virts_geometry_columns table */ - char **results; - int ret; - int rows; - int columns; - int i; - int ok_virt_name = 0; - int ok_virt_geometry = 0; - int ok_srid = 0; - int ok_geometry_type = 0; - int ok_type = 0; - int ok_coord_dimension = 0; - - ret = - sqlite3_get_table (db, "PRAGMA table_info(virts_geometry_columns)", - &results, &rows, &columns, NULL); - if (ret != SQLITE_OK) - return 0; - for (i = 1; i <= rows; i++) - { - if (strcasecmp ("virt_name", results[(i * columns) + 1]) == 0) - ok_virt_name = 1; - if (strcasecmp ("virt_geometry", results[(i * columns) + 1]) == 0) - ok_virt_geometry = 1; - if (strcasecmp ("srid", results[(i * columns) + 1]) == 0) - ok_srid = 1; - if (strcasecmp ("geometry_type", results[(i * columns) + 1]) == 0) - ok_geometry_type = 1; - if (strcasecmp ("type", results[(i * columns) + 1]) == 0) - ok_type = 1; - if (strcasecmp ("coord_dimension", results[(i * columns) + 1]) == 0) - ok_coord_dimension = 1; - } - sqlite3_free_table (results); - - if (ok_virt_name && ok_virt_geometry && ok_srid && ok_geometry_type - && ok_coord_dimension) - { - *geotype = 1; - return 1; - } - if (ok_virt_name && ok_virt_geometry && ok_srid && ok_type) - { - *geotype = 0; - return 1; - } - return 0; -} - -static int -vshp_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* creates the virtual table connected to some shapefile */ - char *sql; - VirtualShapePtr p_vt; - char path[2048]; - char encoding[128]; - const char *pEncoding = NULL; - int len; - const char *pPath = NULL; - int srid; - gaiaDbfFieldPtr pFld; - int cnt; - int col_cnt; - int seed; - int dup; - int idup; - char *xname; - char **col_name = NULL; - int geotype; - gaiaOutBuffer sql_statement; - if (pAux) - pAux = pAux; /* unused arg warning suppression */ -/* checking for shapefile PATH */ - if (argc == 6) - { - pPath = argv[3]; - len = strlen (pPath); - if ((*(pPath + 0) == '\'' || *(pPath + 0) == '"') - && (*(pPath + len - 1) == '\'' || *(pPath + len - 1) == '"')) - { - /* the path is enclosed between quotes - we need to dequote it */ - strcpy (path, pPath + 1); - len = strlen (path); - *(path + len - 1) = '\0'; - } - else - strcpy (path, pPath); - pEncoding = argv[4]; - len = strlen (pEncoding); - if ((*(pEncoding + 0) == '\'' || *(pEncoding + 0) == '"') - && (*(pEncoding + len - 1) == '\'' - || *(pEncoding + len - 1) == '"')) - { - /* the charset-name is enclosed between quotes - we need to dequote it */ - strcpy (encoding, pEncoding + 1); - len = strlen (encoding); - *(encoding + len - 1) = '\0'; - } - else - strcpy (encoding, pEncoding); - srid = atoi (argv[5]); - if (srid < 0) - srid = -1; - } - else - { - *pzErr = - sqlite3_mprintf - ("[VirtualShape module] CREATE VIRTUAL: illegal arg list {shp_path, encoding, srid}"); - return SQLITE_ERROR; - } - p_vt = (VirtualShapePtr) sqlite3_malloc (sizeof (VirtualShape)); - if (!p_vt) - return SQLITE_NOMEM; - p_vt->pModule = &my_shape_module; - p_vt->nRef = 0; - p_vt->zErrMsg = NULL; - p_vt->db = db; - p_vt->Shp = gaiaAllocShapefile (); - p_vt->Srid = srid; -/* trying to open files etc in order to ensure we actually have a genuine shapefile */ - gaiaOpenShpRead (p_vt->Shp, path, encoding, "UTF-8"); - if (!(p_vt->Shp->Valid)) - { - /* something is going the wrong way; creating a stupid default table */ - xname = gaiaDoubleQuotedSql ((const char *) argv[2]); - sql = - sqlite3_mprintf - ("CREATE TABLE \"%s\" (PKUID INTEGER, Geometry BLOB)", xname); - free (xname); - if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) - { - sqlite3_free (sql); - *pzErr = - sqlite3_mprintf - ("[VirtualShape module] cannot build a table from Shapefile\n"); - return SQLITE_ERROR; - } - sqlite3_free (sql); - *ppVTab = (sqlite3_vtab *) p_vt; - return SQLITE_OK; - } - if (p_vt->Shp->Shape == 3 || p_vt->Shp->Shape == 13 || - p_vt->Shp->Shape == 23 || p_vt->Shp->Shape == 5 || - p_vt->Shp->Shape == 15 || p_vt->Shp->Shape == 25) - { - /* fixing anyway the Geometry type for LINESTRING/MULTILINESTRING or POLYGON/MULTIPOLYGON */ - gaiaShpAnalyze (p_vt->Shp); - } -/* preparing the COLUMNs for this VIRTUAL TABLE */ - gaiaOutBufferInitialize (&sql_statement); - xname = gaiaDoubleQuotedSql (argv[2]); - sql = - sqlite3_mprintf ("CREATE TABLE \"%s\" (PKUID INTEGER, Geometry BLOB", - xname); - free (xname); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); -/* checking for duplicate / illegal column names and antialising them */ - col_cnt = 0; - pFld = p_vt->Shp->Dbf->First; - while (pFld) - { - /* counting DBF fields */ - col_cnt++; - pFld = pFld->Next; - } - col_name = malloc (sizeof (char *) * col_cnt); - cnt = 0; - seed = 0; - pFld = p_vt->Shp->Dbf->First; - while (pFld) - { - xname = gaiaDoubleQuotedSql (pFld->Name); - dup = 0; - for (idup = 0; idup < cnt; idup++) - { - if (strcasecmp (xname, *(col_name + idup)) == 0) - dup = 1; - } - if (strcasecmp (xname, "\"PKUID\"") == 0) - dup = 1; - if (strcasecmp (xname, "\"Geometry\"") == 0) - dup = 1; - if (dup) - { - free (xname); - sql = sqlite3_mprintf ("COL_%d", seed++); - xname = gaiaDoubleQuotedSql (sql); - sqlite3_free (sql); - } - if (pFld->Type == 'N') - { - if (pFld->Decimals > 0 || pFld->Length > 18) - sql = sqlite3_mprintf (", \"%s\" DOUBLE", xname); - else - sql = sqlite3_mprintf (", \"%s\" INTEGER", xname); - } - else if (pFld->Type == 'F') - sql = sqlite3_mprintf (", \"%s\" DOUBLE", xname); - else - sql = - sqlite3_mprintf (", \"%s\" VARCHAR(%d)", xname, pFld->Length); - gaiaAppendToOutBuffer (&sql_statement, sql); - sqlite3_free (sql); - *(col_name + cnt) = xname; - cnt++; - pFld = pFld->Next; - } - gaiaAppendToOutBuffer (&sql_statement, ")"); - if (col_name) - { - /* releasing memory allocation for column names */ - for (cnt = 0; cnt < col_cnt; cnt++) - free (*(col_name + cnt)); - free (col_name); - } - if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) - { - if (sqlite3_declare_vtab (db, sql_statement.Buffer) != SQLITE_OK) - { - *pzErr = - sqlite3_mprintf - ("[VirtualShape module] CREATE VIRTUAL: invalid SQL statement \"%s\"", - sql_statement.Buffer); - gaiaOutBufferReset (&sql_statement); - return SQLITE_ERROR; - } - } - gaiaOutBufferReset (&sql_statement); - *ppVTab = (sqlite3_vtab *) p_vt; - - if (vshp_has_metadata (db, &geotype)) - { - /* registering the Virtual Geometry */ - if (geotype) - { - int xtype = 0; - int xdims = 0; - switch (p_vt->Shp->EffectiveType) - { - case GAIA_POINT: - switch (p_vt->Shp->EffectiveDims) - { - case GAIA_XY_Z_M: - xtype = 3001; - xdims = 4; - break; - case GAIA_XY_M: - xtype = 2001; - xdims = 3; - break; - case GAIA_XY_Z: - xtype = 1001; - xdims = 3; - break; - default: - xtype = 1; - xdims = 2; - break; - }; - break; - case GAIA_LINESTRING: - switch (p_vt->Shp->EffectiveDims) - { - case GAIA_XY_Z_M: - xtype = 3002; - xdims = 4; - break; - case GAIA_XY_M: - xtype = 2002; - xdims = 3; - break; - case GAIA_XY_Z: - xtype = 1002; - xdims = 3; - break; - default: - xtype = 2; - xdims = 2; - break; - }; - break; - case GAIA_POLYGON: - switch (p_vt->Shp->EffectiveDims) - { - case GAIA_XY_Z_M: - xtype = 3003; - xdims = 4; - break; - case GAIA_XY_M: - xtype = 2003; - xdims = 3; - break; - case GAIA_XY_Z: - xtype = 1003; - xdims = 3; - break; - default: - xtype = 3; - xdims = 2; - break; - }; - break; - case GAIA_MULTIPOINT: - switch (p_vt->Shp->EffectiveDims) - { - case GAIA_XY_Z_M: - xtype = 3004; - xdims = 4; - break; - case GAIA_XY_M: - xtype = 2004; - xdims = 3; - break; - case GAIA_XY_Z: - xtype = 1004; - xdims = 3; - break; - default: - xtype = 4; - xdims = 2; - break; - }; - break; - case GAIA_MULTILINESTRING: - switch (p_vt->Shp->EffectiveDims) - { - case GAIA_XY_Z_M: - xtype = 3005; - xdims = 4; - break; - case GAIA_XY_M: - xtype = 2005; - xdims = 3; - break; - case GAIA_XY_Z: - xtype = 1005; - xdims = 3; - break; - default: - xtype = 5; - xdims = 2; - break; - }; - break; - case GAIA_MULTIPOLYGON: - switch (p_vt->Shp->EffectiveDims) - { - case GAIA_XY_Z_M: - xtype = 3006; - xdims = 4; - break; - case GAIA_XY_M: - xtype = 2006; - xdims = 3; - break; - case GAIA_XY_Z: - xtype = 1006; - xdims = 3; - break; - default: - xtype = 6; - xdims = 2; - break; - }; - break; - }; - sql = - sqlite3_mprintf - ("INSERT OR IGNORE INTO virts_geometry_columns " - "(virt_name, virt_geometry, geometry_type, coord_dimension, srid) " - "VALUES (Lower(%Q), 'geometry', %d, %d, %d)", argv[2], - xtype, xdims, p_vt->Srid); - } - else - { - const char *xgtype = "GEOMETRY"; - switch (p_vt->Shp->EffectiveType) - { - case GAIA_POINT: - xgtype = "POINT"; - break; - case GAIA_LINESTRING: - xgtype = "LINESTRING"; - break; - case GAIA_POLYGON: - xgtype = "POLYGON"; - break; - case GAIA_MULTIPOINT: - xgtype = "MULTIPOINT"; - break; - case GAIA_MULTILINESTRING: - xgtype = "MULTILINESTRING"; - break; - case GAIA_MULTIPOLYGON: - xgtype = "MULTIPOLYGON"; - break; - }; - sql = - sqlite3_mprintf - ("INSERT OR IGNORE INTO virts_geometry_columns " - "(virt_name, virt_geometry, type, srid) " - "VALUES (Lower(%Q), 'geometry', %Q, %d)", argv[2], xgtype, - p_vt->Srid); - } - sqlite3_exec (db, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - if (checkSpatialMetaData (db) == 3) - { - /* current metadata style >= v.4.0.0 */ - - /* inserting a row into VIRTS_GEOMETRY_COLUMNS_AUTH */ - sql = sqlite3_mprintf ("INSERT OR IGNORE INTO " - "virts_geometry_columns_auth (virt_name, virt_geometry, hidden) " - "VALUES (Lower(%Q), 'geometry', 0)", argv[2]); - sqlite3_exec (db, sql, NULL, NULL, NULL); - sqlite3_free (sql); - - /* inserting a row into GEOMETRY_COLUMNS_STATISTICS */ - sql = sqlite3_mprintf ("INSERT OR IGNORE INTO " - "virts_geometry_columns_statistics (virt_name, virt_geometry) " - "VALUES (Lower(%Q), 'geometry')", argv[2]); - sqlite3_exec (db, sql, NULL, NULL, NULL); - sqlite3_free (sql); - } - - return SQLITE_OK; -} - -static int -vshp_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* connects the virtual table to some shapefile - simply aliases vshp_create() */ - return vshp_create (db, pAux, argc, argv, ppVTab, pzErr); -} - -static int -vshp_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIndex) -{ -/* best index selection */ - int i; - int iArg = 0; - char str[2048]; - char buf[64]; - - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - - *str = '\0'; - for (i = 0; i < pIndex->nConstraint; i++) - { - if (pIndex->aConstraint[i].usable) - { - iArg++; - pIndex->aConstraintUsage[i].argvIndex = iArg; - pIndex->aConstraintUsage[i].omit = 1; - sprintf (buf, "%d:%d,", pIndex->aConstraint[i].iColumn, - pIndex->aConstraint[i].op); - strcat (str, buf); - } - } - if (*str != '\0') - { - pIndex->idxStr = sqlite3_mprintf ("%s", str); - pIndex->needToFreeIdxStr = 1; - } - - return SQLITE_OK; -} - -static int -vshp_disconnect (sqlite3_vtab * pVTab) -{ -/* disconnects the virtual table */ - VirtualShapePtr p_vt = (VirtualShapePtr) pVTab; - if (p_vt->Shp) - gaiaFreeShapefile (p_vt->Shp); - sqlite3_free (p_vt); - return SQLITE_OK; -} - -static int -vshp_destroy (sqlite3_vtab * pVTab) -{ -/* destroys the virtual table - simply aliases vshp_disconnect() */ - return vshp_disconnect (pVTab); -} - -static void -vshp_read_row (VirtualShapeCursorPtr cursor) -{ -/* trying to read a "row" from shapefile */ - int ret; - gaiaGeomCollPtr geom; - if (!(cursor->pVtab->Shp->Valid)) - { - cursor->eof = 1; - return; - } - if (cursor->blobGeometry) - { - free (cursor->blobGeometry); - cursor->blobGeometry = NULL; - } - ret = - gaiaReadShpEntity (cursor->pVtab->Shp, cursor->current_row, - cursor->pVtab->Srid); - if (!ret) - { - if (!(cursor->pVtab->Shp->LastError)) /* normal SHP EOF */ - { - cursor->eof = 1; - return; - } - /* an error occurred */ - spatialite_e ("%s\n", cursor->pVtab->Shp->LastError); - cursor->eof = 1; - return; - } - cursor->current_row++; - geom = cursor->pVtab->Shp->Dbf->Geometry; - if (geom) - { - /* preparing the BLOB representing Geometry */ - gaiaToSpatiaLiteBlobWkb (geom, &(cursor->blobGeometry), - &(cursor->blobSize)); - } -} - -static int -vshp_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) -{ -/* opening a new cursor */ - VirtualShapeCursorPtr cursor = - (VirtualShapeCursorPtr) sqlite3_malloc (sizeof (VirtualShapeCursor)); - if (cursor == NULL) - return SQLITE_ERROR; - cursor->firstConstraint = NULL; - cursor->lastConstraint = NULL; - cursor->pVtab = (VirtualShapePtr) pVTab; - cursor->current_row = 0; - cursor->blobGeometry = NULL; - cursor->blobSize = 0; - cursor->eof = 0; - *ppCursor = (sqlite3_vtab_cursor *) cursor; - vshp_read_row (cursor); - return SQLITE_OK; -} - -static void -vshp_free_constraints (VirtualShapeCursorPtr cursor) -{ -/* memory cleanup - cursor constraints */ - VirtualShapeConstraintPtr pC; - VirtualShapeConstraintPtr pCn; - pC = cursor->firstConstraint; - while (pC) - { - pCn = pC->next; - if (pC->txtValue) - sqlite3_free (pC->txtValue); - sqlite3_free (pC); - pC = pCn; - } - cursor->firstConstraint = NULL; - cursor->lastConstraint = NULL; -} - -static int -vshp_close (sqlite3_vtab_cursor * pCursor) -{ -/* closing the cursor */ - VirtualShapeCursorPtr cursor = (VirtualShapeCursorPtr) pCursor; - if (cursor->blobGeometry) - free (cursor->blobGeometry); - vshp_free_constraints (cursor); - sqlite3_free (pCursor); - return SQLITE_OK; -} - -static int -vshp_parse_constraint (const char *str, int index, int *iColumn, int *op) -{ -/* parsing a constraint string */ - char buf[64]; - const char *in = str; - char *out = buf; - int i = 0; - int found = 0; - - *out = '\0'; - while (*in != '\0') - { - if (*in == ',') - { - if (index == i) - { - *out = '\0'; - found = 1; - break; - } - i++; - in++; - continue; - } - if (index == i) - *out++ = *in; - in++; - } - if (!found) - return 0; - in = buf; - for (i = 0; i < (int) strlen (buf); i++) - { - if (buf[i] == ':') - { - buf[i] = '\0'; - *iColumn = atoi (buf); - *op = atoi (buf + i + 1); - return 1; - } - in++; - } - return 0; -} - -static int -vshp_eval_constraints (VirtualShapeCursorPtr cursor) -{ -/* evaluating Filter constraints */ - int nCol; - gaiaDbfFieldPtr pFld; - VirtualShapeConstraintPtr pC = cursor->firstConstraint; - if (pC == NULL) - return 1; - while (pC) - { - int ok = 0; - if (pC->iColumn == 0) - { - /* the PRIMARY KEY column */ - if (pC->valueType == 'I') - { - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (cursor->current_row == pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (cursor->current_row > pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (cursor->current_row <= pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (cursor->current_row < pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (cursor->current_row >= pC->intValue) - ok = 1; - break; - }; - } - goto done; - } - nCol = 2; - pFld = cursor->pVtab->Shp->Dbf->First; - while (pFld) - { - if (nCol == pC->iColumn) - { - if ((pFld->Value)) - { - switch (pFld->Value->Type) - { - case GAIA_INT_VALUE: - if (pC->valueType == 'I') - { - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (pFld->Value->IntValue == - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (pFld->Value->IntValue > - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (pFld->Value->IntValue <= - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (pFld->Value->IntValue < - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (pFld->Value->IntValue >= - pC->intValue) - ok = 1; - break; - }; - } - break; - case GAIA_DOUBLE_VALUE: - if (pC->valueType == 'I') - { - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (pFld->Value->DblValue == - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (pFld->Value->DblValue > - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (pFld->Value->DblValue <= - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (pFld->Value->DblValue < - pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (pFld->Value->DblValue >= - pC->intValue) - ok = 1; - break; - }; - } - if (pC->valueType == 'D') - { - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (pFld->Value->DblValue == - pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (pFld->Value->DblValue > - pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (pFld->Value->DblValue <= - pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (pFld->Value->DblValue < - pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (pFld->Value->DblValue >= - pC->dblValue) - ok = 1; - break; - } - } - break; - case GAIA_TEXT_VALUE: - if (pC->valueType == 'T' && pC->txtValue) - { - int ret; - ret = - strcmp (pFld->Value->TxtValue, - pC->txtValue); - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (ret == 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (ret > 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (ret <= 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (ret < 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (ret >= 0) - ok = 1; - break; - }; - } - break; - }; - } - goto done; - } - nCol++; - pFld = pFld->Next; - } - done: - if (!ok) - return 0; - pC = pC->next; - } - return 1; -} - -static int -vshp_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, - int argc, sqlite3_value ** argv) -{ -/* setting up a cursor filter */ - int i; - int iColumn; - int op; - int len; - VirtualShapeConstraintPtr pC; - VirtualShapeCursorPtr cursor = (VirtualShapeCursorPtr) pCursor; - if (idxNum) - idxNum = idxNum; /* unused arg warning suppression */ - -/* resetting any previously set filter constraint */ - vshp_free_constraints (cursor); - - for (i = 0; i < argc; i++) - { - if (!vshp_parse_constraint (idxStr, i, &iColumn, &op)) - continue; - pC = sqlite3_malloc (sizeof (VirtualShapeConstraint)); - if (!pC) - continue; - pC->iColumn = iColumn; - pC->op = op; - pC->valueType = '\0'; - pC->txtValue = NULL; - pC->next = NULL; - - if (sqlite3_value_type (argv[i]) == SQLITE_INTEGER) - { - pC->valueType = 'I'; - pC->intValue = sqlite3_value_int64 (argv[i]); - } - if (sqlite3_value_type (argv[i]) == SQLITE_FLOAT) - { - pC->valueType = 'D'; - pC->dblValue = sqlite3_value_double (argv[i]); - } - if (sqlite3_value_type (argv[i]) == SQLITE_TEXT) - { - pC->valueType = 'T'; - len = sqlite3_value_bytes (argv[i]) + 1; - pC->txtValue = (char *) sqlite3_malloc (len); - if (pC->txtValue) - strcpy (pC->txtValue, - (char *) sqlite3_value_text (argv[i])); - } - if (cursor->firstConstraint == NULL) - cursor->firstConstraint = pC; - if (cursor->lastConstraint != NULL) - cursor->lastConstraint->next = pC; - cursor->lastConstraint = pC; - } - - cursor->current_row = 0; - if (cursor->blobGeometry) - free (cursor->blobGeometry); - cursor->blobGeometry = NULL; - cursor->blobSize = 0; - cursor->eof = 0; - while (1) - { - vshp_read_row (cursor); - if (cursor->eof) - break; - if (vshp_eval_constraints (cursor)) - break; - } - return SQLITE_OK; -} - -static int -vshp_next (sqlite3_vtab_cursor * pCursor) -{ -/* fetching a next row from cursor */ - VirtualShapeCursorPtr cursor = (VirtualShapeCursorPtr) pCursor; - while (1) - { - vshp_read_row (cursor); - if (cursor->eof) - break; - if (vshp_eval_constraints (cursor)) - break; - } - return SQLITE_OK; -} - -static int -vshp_eof (sqlite3_vtab_cursor * pCursor) -{ -/* cursor EOF */ - VirtualShapeCursorPtr cursor = (VirtualShapeCursorPtr) pCursor; - return cursor->eof; -} - -static int -vshp_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, - int column) -{ -/* fetching value for the Nth column */ - int nCol = 2; - gaiaGeomCollPtr geom; - gaiaDbfFieldPtr pFld; - VirtualShapeCursorPtr cursor = (VirtualShapeCursorPtr) pCursor; - if (column == 0) - { - /* the PRIMARY KEY column */ - sqlite3_result_int (pContext, cursor->current_row); - return SQLITE_OK; - } - if (column == 1) - { - /* the GEOMETRY column */ - geom = cursor->pVtab->Shp->Dbf->Geometry; - if (geom) - sqlite3_result_blob (pContext, cursor->blobGeometry, - cursor->blobSize, SQLITE_STATIC); - else - sqlite3_result_null (pContext); - return SQLITE_OK; - } - pFld = cursor->pVtab->Shp->Dbf->First; - while (pFld) - { - /* column values */ - if (nCol == column) - { - if (!(pFld->Value)) - sqlite3_result_null (pContext); - else - { - switch (pFld->Value->Type) - { - case GAIA_INT_VALUE: - sqlite3_result_int64 (pContext, - pFld->Value->IntValue); - break; - case GAIA_DOUBLE_VALUE: - sqlite3_result_double (pContext, - pFld->Value->DblValue); - break; - case GAIA_TEXT_VALUE: - sqlite3_result_text (pContext, - pFld->Value->TxtValue, - strlen (pFld->Value->TxtValue), - SQLITE_STATIC); - break; - default: - sqlite3_result_null (pContext); - break; - } - } - break; - } - nCol++; - pFld = pFld->Next; - } - return SQLITE_OK; -} - -static int -vshp_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) -{ -/* fetching the ROWID */ - VirtualShapeCursorPtr cursor = (VirtualShapeCursorPtr) pCursor; - *pRowid = cursor->current_row; - return SQLITE_OK; -} - -static int -vshp_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, - sqlite_int64 * pRowid) -{ -/* generic update [INSERT / UPDATE / DELETE */ - if (pVTab || argc || argv || pRowid) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_READONLY; -} - -static int -vshp_begin (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vshp_sync (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vshp_commit (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vshp_rollback (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -int -sqlite3VirtualShapeInit (sqlite3 * db) -{ - int rc = SQLITE_OK; - my_shape_module.iVersion = 1; - my_shape_module.xCreate = &vshp_create; - my_shape_module.xConnect = &vshp_connect; - my_shape_module.xBestIndex = &vshp_best_index; - my_shape_module.xDisconnect = &vshp_disconnect; - my_shape_module.xDestroy = &vshp_destroy; - my_shape_module.xOpen = &vshp_open; - my_shape_module.xClose = &vshp_close; - my_shape_module.xFilter = &vshp_filter; - my_shape_module.xNext = &vshp_next; - my_shape_module.xEof = &vshp_eof; - my_shape_module.xColumn = &vshp_column; - my_shape_module.xRowid = &vshp_rowid; - my_shape_module.xUpdate = &vshp_update; - my_shape_module.xBegin = &vshp_begin; - my_shape_module.xSync = &vshp_sync; - my_shape_module.xCommit = &vshp_commit; - my_shape_module.xRollback = &vshp_rollback; - my_shape_module.xFindFunction = NULL; - sqlite3_create_module_v2 (db, "VirtualShape", &my_shape_module, NULL, 0); - return rc; -} - -int -virtualshape_extension_init (sqlite3 * db) -{ - return sqlite3VirtualShapeInit (db); -} - -#endif /* ICONV enabled/disabled */ diff --git a/src/spatialite/src/spatialite/virtualspatialindex.c b/src/spatialite/src/spatialite/virtualspatialindex.c deleted file mode 100644 index e12b029..0000000 --- a/src/spatialite/src/spatialite/virtualspatialindex.c +++ /dev/null @@ -1,923 +0,0 @@ -/* - - virtualspatialindex.c -- SQLite3 extension [VIRTUAL TABLE RTree metahandler] - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include - -#include -#include -#include - -#ifdef _WIN32 -#define strcasecmp _stricmp -#define strncasecmp _strnicmp -#endif /* not WIN32 */ - -static struct sqlite3_module my_spidx_module; - - -/****************************************************************************** -/ -/ VirtualTable structs -/ -******************************************************************************/ - -typedef struct VirtualSpatialIndexStruct -{ -/* extends the sqlite3_vtab struct */ - const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ - int nRef; /* # references: USED INTERNALLY BY SQLITE */ - char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ - sqlite3 *db; /* the sqlite db holding the virtual table */ -} VirtualSpatialIndex; -typedef VirtualSpatialIndex *VirtualSpatialIndexPtr; - -typedef struct VirtualSpatialIndexCursorStruct -{ -/* extends the sqlite3_vtab_cursor struct */ - VirtualSpatialIndexPtr pVtab; /* Virtual table of this cursor */ - int eof; /* the EOF marker */ - sqlite3_stmt *stmt; - sqlite3_int64 CurrentRowId; -} VirtualSpatialIndexCursor; -typedef VirtualSpatialIndexCursor *VirtualSpatialIndexCursorPtr; - -static int -vspidx_check_view_rtree (sqlite3 * sqlite, const char *table_name, - const char *geom_column, char **real_table, - char **real_geom) -{ -/* checks if the required RTree is actually defined - SpatialView */ - sqlite3_stmt *stmt; - char *sql_statement; - int ret; - int count = 0; - char *rt = NULL; - char *rg = NULL; - -/* testing if views_geometry_columns exists */ - sql_statement = sqlite3_mprintf ("SELECT tbl_name FROM sqlite_master " - "WHERE type = 'table' AND tbl_name = 'views_geometry_columns'"); - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - count++; - } - sqlite3_finalize (stmt); - if (count != 1) - return 0; - count = 0; - -/* attempting to find the RTree Geometry Column */ - sql_statement = - sqlite3_mprintf ("SELECT a.f_table_name, a.f_geometry_column " - "FROM views_geometry_columns AS a " - "JOIN geometry_columns AS b ON (" - "Upper(a.f_table_name) = Upper(b.f_table_name) AND " - "Upper(a.f_geometry_column) = Upper(b.f_geometry_column)) " - "WHERE Upper(a.view_name) = Upper(%Q) " - "AND Upper(a.view_geometry) = Upper(%Q) AND b.spatial_index_enabled = 1", - table_name, geom_column); - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - const char *v = (const char *) sqlite3_column_text (stmt, 0); - int len = sqlite3_column_bytes (stmt, 0); - if (rt) - free (rt); - rt = malloc (len + 1); - strcpy (rt, v); - v = (const char *) sqlite3_column_text (stmt, 1); - len = sqlite3_column_bytes (stmt, 1); - if (rg) - free (rg); - rg = malloc (len + 1); - strcpy (rg, v); - count++; - } - } - sqlite3_finalize (stmt); - if (count != 1) - return 0; - *real_table = rt; - *real_geom = rg; - return 1; -} - -static int -vspidx_check_rtree (sqlite3 * sqlite, const char *db_prefix, - const char *table_name, const char *geom_column, - char **real_table, char **real_geom) -{ -/* checks if the required RTree is actually defined */ - sqlite3_stmt *stmt; - char *sql_statement; - int ret; - int count = 0; - char *rt = NULL; - char *rg = NULL; - - if (db_prefix == NULL) - { - sql_statement = - sqlite3_mprintf - ("SELECT f_table_name, f_geometry_column FROM geometry_columns " - "WHERE Upper(f_table_name) = Upper(%Q) AND " - "Upper(f_geometry_column) = Upper(%Q) AND spatial_index_enabled = 1", - table_name, geom_column); - } - else - { - char *quoted_db = gaiaDoubleQuotedSql (db_prefix); - sql_statement = - sqlite3_mprintf - ("SELECT f_table_name, f_geometry_column FROM \"%s\".geometry_columns " - "WHERE Upper(f_table_name) = Upper(%Q) AND " - "Upper(f_geometry_column) = Upper(%Q) AND spatial_index_enabled = 1", - quoted_db, table_name, geom_column); - free (quoted_db); - } - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - const char *v = (const char *) sqlite3_column_text (stmt, 0); - int len = sqlite3_column_bytes (stmt, 0); - if (rt) - free (rt); - rt = malloc (len + 1); - strcpy (rt, v); - v = (const char *) sqlite3_column_text (stmt, 1); - len = sqlite3_column_bytes (stmt, 1); - if (rg) - free (rg); - rg = malloc (len + 1); - strcpy (rg, v); - count++; - } - } - sqlite3_finalize (stmt); - if (count != 1) - return vspidx_check_view_rtree (sqlite, table_name, geom_column, - real_table, real_geom); - else - { - *real_table = rt; - *real_geom = rg; - } - return 1; -} - -static int -vspidx_find_view_rtree (sqlite3 * sqlite, const char *db_prefix, - const char *table_name, char **real_table, - char **real_geom) -{ -/* attempts to find the corresponding RTree Geometry Column - SpatialView */ - sqlite3_stmt *stmt; - char *sql_statement; - int ret; - int count = 0; - char *rt = NULL; - char *rg = NULL; - -/* testing if views_geometry_columns exists */ - if (db_prefix == NULL) - { - sql_statement = sqlite3_mprintf ("SELECT tbl_name FROM sqlite_master " - "WHERE type = 'table' AND tbl_name = 'views_geometry_columns'"); - } - else - { - char *quoted_db = gaiaDoubleQuotedSql (db_prefix); - sql_statement = - sqlite3_mprintf ("SELECT tbl_name FROM \"%s\".sqlite_master " - "WHERE type = 'table' AND tbl_name = 'views_geometry_columns'", - quoted_db); - free (quoted_db); - } - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - count++; - } - sqlite3_finalize (stmt); - if (count != 1) - return 0; - count = 0; - -/* attempting to find the RTree Geometry Column */ - if (db_prefix == NULL) - { - sql_statement = - sqlite3_mprintf ("SELECT a.f_table_name, a.f_geometry_column " - "FROM views_geometry_columns AS a " - "JOIN geometry_columns AS b ON (" - "Upper(a.f_table_name) = Upper(b.f_table_name) AND " - "Upper(a.f_geometry_column) = Upper(b.f_geometry_column)) " - "WHERE Upper(a.view_name) = Upper(%Q) AND b.spatial_index_enabled = 1", - table_name); - } - else - { - char *quoted_db = gaiaDoubleQuotedSql (db_prefix); - sql_statement = - sqlite3_mprintf ("SELECT a.f_table_name, a.f_geometry_column " - "FROM \"%s\".views_geometry_columns AS a " - "JOIN \"%s\".geometry_columns AS b ON (" - "Upper(a.f_table_name) = Upper(b.f_table_name) AND " - "Upper(a.f_geometry_column) = Upper(b.f_geometry_column)) " - "WHERE Upper(a.view_name) = Upper(%Q) AND b.spatial_index_enabled = 1", - quoted_db, quoted_db, table_name); - free (quoted_db); - } - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - const char *v = (const char *) sqlite3_column_text (stmt, 0); - int len = sqlite3_column_bytes (stmt, 0); - if (rt) - free (rt); - rt = malloc (len + 1); - strcpy (rt, v); - v = (const char *) sqlite3_column_text (stmt, 1); - len = sqlite3_column_bytes (stmt, 1); - if (rg) - free (rg); - rg = malloc (len + 1); - strcpy (rg, v); - count++; - } - } - sqlite3_finalize (stmt); - if (count != 1) - return 0; - *real_table = rt; - *real_geom = rg; - return 1; -} - -static int -vspidx_find_rtree (sqlite3 * sqlite, const char *db_prefix, - const char *table_name, char **real_table, char **real_geom) -{ -/* attempts to find the corresponding RTree Geometry Column */ - sqlite3_stmt *stmt; - char *sql_statement; - int ret; - int count = 0; - char *rt = NULL; - char *rg = NULL; - - if (db_prefix == NULL) - { - sql_statement = - sqlite3_mprintf - ("SELECT f_table_name, f_geometry_column FROM geometry_columns " - "WHERE Upper(f_table_name) = Upper(%Q) AND spatial_index_enabled = 1", - table_name); - } - else - { - char *quoted_db = gaiaDoubleQuotedSql (db_prefix); - sql_statement = - sqlite3_mprintf - ("SELECT f_table_name, f_geometry_column FROM \"%s\".geometry_columns " - "WHERE Upper(f_table_name) = Upper(%Q) AND spatial_index_enabled = 1", - quoted_db, table_name); - free (quoted_db); - } - ret = - sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - return 0; - while (1) - { - /* scrolling the result set rows */ - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; /* end of result set */ - if (ret == SQLITE_ROW) - { - const char *v = (const char *) sqlite3_column_text (stmt, 0); - int len = sqlite3_column_bytes (stmt, 0); - if (rt) - free (rt); - rt = malloc (len + 1); - strcpy (rt, v); - v = (const char *) sqlite3_column_text (stmt, 1); - len = sqlite3_column_bytes (stmt, 1); - if (rg) - free (rg); - rg = malloc (len + 1); - strcpy (rg, v); - count++; - } - } - sqlite3_finalize (stmt); - if (count != 1) - return vspidx_find_view_rtree (sqlite, db_prefix, table_name, - real_table, real_geom); - else - { - *real_table = rt; - *real_geom = rg; - } - return 1; -} - -static void -vspidx_parse_table_name (const char *tn, char **db_prefix, char **table_name) -{ -/* attempting to extract an eventual DB prefix */ - int i; - int len = strlen (tn); - int i_dot = -1; - if (strncasecmp (tn, "DB=", 3) == 0) - { - int l_db; - int l_tbl; - for (i = 3; i < len; i++) - { - if (tn[i] == '.') - { - i_dot = i; - break; - } - } - if (i_dot > 1) - { - l_db = i_dot - 3; - l_tbl = len - (i_dot + 1); - *db_prefix = malloc (l_db + 1); - memset (*db_prefix, '\0', l_db + 1); - memcpy (*db_prefix, tn + 3, l_db); - *table_name = malloc (l_tbl + 1); - strcpy (*table_name, tn + i_dot + 1); - return; - } - } - *table_name = malloc (len + 1); - strcpy (*table_name, tn); -} - -static int -vspidx_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* creates the virtual table for R*Tree SpatialIndex metahandling */ - VirtualSpatialIndexPtr p_vt; - char *buf; - char *vtable; - char *xname; - if (pAux) - pAux = pAux; /* unused arg warning suppression */ - if (argc == 3) - { - vtable = gaiaDequotedSql ((char *) argv[2]); - } - else - { - *pzErr = - sqlite3_mprintf - ("[VirtualSpatialIndex module] CREATE VIRTUAL: illegal arg list {void}\n"); - return SQLITE_ERROR; - } - p_vt = - (VirtualSpatialIndexPtr) sqlite3_malloc (sizeof (VirtualSpatialIndex)); - if (!p_vt) - return SQLITE_NOMEM; - p_vt->db = db; - p_vt->pModule = &my_spidx_module; - p_vt->nRef = 0; - p_vt->zErrMsg = NULL; -/* preparing the COLUMNs for this VIRTUAL TABLE */ - xname = gaiaDoubleQuotedSql (vtable); - buf = sqlite3_mprintf ("CREATE TABLE \"%s\" (f_table_name TEXT, " - "f_geometry_column TEXT, search_frame BLOB)", xname); - free (xname); - free (vtable); - if (sqlite3_declare_vtab (db, buf) != SQLITE_OK) - { - sqlite3_free (buf); - *pzErr = - sqlite3_mprintf - ("[VirtualSpatialIndex module] CREATE VIRTUAL: invalid SQL statement \"%s\"", - buf); - return SQLITE_ERROR; - } - sqlite3_free (buf); - *ppVTab = (sqlite3_vtab *) p_vt; - return SQLITE_OK; -} - -static int -vspidx_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* connects the virtual table - simply aliases vspidx_create() */ - return vspidx_create (db, pAux, argc, argv, ppVTab, pzErr); -} - -static int -vspidx_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIdxInfo) -{ -/* best index selection */ - int i; - int errors = 0; - int err = 1; - int table = 0; - int geom = 0; - int mbr = 0; - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - for (i = 0; i < pIdxInfo->nConstraint; i++) - { - /* verifying the constraints */ - struct sqlite3_index_constraint *p = &(pIdxInfo->aConstraint[i]); - if (p->usable) - { - if (p->iColumn == 0 && p->op == SQLITE_INDEX_CONSTRAINT_EQ) - table++; - else if (p->iColumn == 1 && p->op == SQLITE_INDEX_CONSTRAINT_EQ) - geom++; - else if (p->iColumn == 2 && p->op == SQLITE_INDEX_CONSTRAINT_EQ) - mbr++; - else - errors++; - } - } - if (table == 1 && (geom == 0 || geom == 1) && mbr == 1 && errors == 0) - { - /* this one is a valid SpatialIndex query */ - if (geom == 1) - pIdxInfo->idxNum = 1; - else - pIdxInfo->idxNum = 2; - pIdxInfo->estimatedCost = 1.0; - for (i = 0; i < pIdxInfo->nConstraint; i++) - { - if (pIdxInfo->aConstraint[i].usable) - { - pIdxInfo->aConstraintUsage[i].argvIndex = i + 1; - pIdxInfo->aConstraintUsage[i].omit = 1; - } - } - err = 0; - } - if (err) - { - /* illegal query */ - pIdxInfo->idxNum = 0; - } - return SQLITE_OK; -} - -static int -vspidx_disconnect (sqlite3_vtab * pVTab) -{ -/* disconnects the virtual table */ - VirtualSpatialIndexPtr p_vt = (VirtualSpatialIndexPtr) pVTab; - sqlite3_free (p_vt); - return SQLITE_OK; -} - -static int -vspidx_destroy (sqlite3_vtab * pVTab) -{ -/* destroys the virtual table - simply aliases vspidx_disconnect() */ - return vspidx_disconnect (pVTab); -} - -static int -vspidx_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) -{ -/* opening a new cursor */ - VirtualSpatialIndexCursorPtr cursor = - (VirtualSpatialIndexCursorPtr) - sqlite3_malloc (sizeof (VirtualSpatialIndexCursor)); - if (cursor == NULL) - return SQLITE_ERROR; - cursor->pVtab = (VirtualSpatialIndexPtr) pVTab; - cursor->stmt = NULL; - cursor->eof = 1; - *ppCursor = (sqlite3_vtab_cursor *) cursor; - return SQLITE_OK; -} - -static int -vspidx_close (sqlite3_vtab_cursor * pCursor) -{ -/* closing the cursor */ - VirtualSpatialIndexCursorPtr cursor = - (VirtualSpatialIndexCursorPtr) pCursor; - if (cursor->stmt) - sqlite3_finalize (cursor->stmt); - sqlite3_free (pCursor); - return SQLITE_OK; -} - -static int -vspidx_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, - int argc, sqlite3_value ** argv) -{ -/* setting up a cursor filter */ - char *db_prefix = NULL; - char *table_name = NULL; - char *geom_column; - char *xtable = NULL; - char *xgeom = NULL; - char *idx_name; - char *idx_nameQ; - char *sql_statement; - gaiaGeomCollPtr geom = NULL; - int ok_table = 0; - int ok_geom = 0; - const unsigned char *blob; - int size; - int exists; - int ret; - sqlite3_stmt *stmt; - float minx; - float miny; - float maxx; - float maxy; - double tic; - double tic2; - VirtualSpatialIndexCursorPtr cursor = - (VirtualSpatialIndexCursorPtr) pCursor; - VirtualSpatialIndexPtr spidx = (VirtualSpatialIndexPtr) cursor->pVtab; - if (idxStr) - idxStr = idxStr; /* unused arg warning suppression */ - cursor->eof = 1; - if (idxNum == 1 && argc == 3) - { - /* retrieving the Table/Column/MBR params */ - if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) - { - char *tn = (char *) sqlite3_value_text (argv[0]); - vspidx_parse_table_name (tn, &db_prefix, &table_name); - ok_table = 1; - } - if (sqlite3_value_type (argv[1]) == SQLITE_TEXT) - { - geom_column = (char *) sqlite3_value_text (argv[1]); - ok_geom = 1; - } - if (sqlite3_value_type (argv[2]) == SQLITE_BLOB) - { - blob = sqlite3_value_blob (argv[2]); - size = sqlite3_value_bytes (argv[2]); - geom = gaiaFromSpatiaLiteBlobWkb (blob, size); - } - if (ok_table && ok_geom && geom) - ; - else - { - /* invalid args */ - goto stop; - } - } - if (idxNum == 2 && argc == 2) - { - /* retrieving the Table/MBR params */ - if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) - { - char *tn = (char *) sqlite3_value_text (argv[0]); - vspidx_parse_table_name (tn, &db_prefix, &table_name); - ok_table = 1; - } - if (sqlite3_value_type (argv[1]) == SQLITE_BLOB) - { - blob = sqlite3_value_blob (argv[1]); - size = sqlite3_value_bytes (argv[1]); - geom = gaiaFromSpatiaLiteBlobWkb (blob, size); - } - if (ok_table && geom) - ; - else - { - /* invalid args */ - goto stop; - } - } - -/* checking if the corresponding R*Tree exists */ - if (ok_geom) - exists = - vspidx_check_rtree (spidx->db, db_prefix, table_name, geom_column, - &xtable, &xgeom); - else - exists = - vspidx_find_rtree (spidx->db, db_prefix, table_name, &xtable, - &xgeom); - if (!exists) - goto stop; - -/* building the RTree query */ - idx_name = sqlite3_mprintf ("idx_%s_%s", xtable, xgeom); - idx_nameQ = gaiaDoubleQuotedSql (idx_name); - if (db_prefix == NULL) - { - sql_statement = sqlite3_mprintf ("SELECT pkid FROM \"%s\" WHERE " - "xmin <= ? AND xmax >= ? AND ymin <= ? AND ymax >= ?", - idx_nameQ); - } - else - { - char *quoted_db = gaiaDoubleQuotedSql (db_prefix); - sql_statement = - sqlite3_mprintf ("SELECT pkid FROM \"%s\".\"%s\" WHERE " - "xmin <= ? AND xmax >= ? AND ymin <= ? AND ymax >= ?", - quoted_db, idx_nameQ); - free (quoted_db); - } - free (idx_nameQ); - sqlite3_free (idx_name); - ret = - sqlite3_prepare_v2 (spidx->db, sql_statement, strlen (sql_statement), - &stmt, NULL); - sqlite3_free (sql_statement); - if (ret != SQLITE_OK) - goto stop; -/* binding stmt params [MBR] */ - gaiaMbrGeometry (geom); - -/* adjusting the MBR so to compensate for DOUBLE/FLOAT truncations */ - minx = (float) (geom->MinX); - miny = (float) (geom->MinY); - maxx = (float) (geom->MaxX); - maxy = (float) (geom->MaxY); - tic = fabs (geom->MinX - minx); - tic2 = fabs (geom->MinY - miny); - if (tic2 > tic) - tic = tic2; - tic2 = fabs (geom->MaxX - maxx); - if (tic2 > tic) - tic = tic2; - tic2 = fabs (geom->MaxY - maxy); - if (tic2 > tic) - tic = tic2; - tic *= 2.0; - sqlite3_bind_double (stmt, 1, geom->MaxX + tic); - sqlite3_bind_double (stmt, 2, geom->MinX - tic); - sqlite3_bind_double (stmt, 3, geom->MaxY + tic); - sqlite3_bind_double (stmt, 4, geom->MinY - tic); - cursor->stmt = stmt; - cursor->eof = 0; -/* fetching the first ResultSet's row */ - ret = sqlite3_step (cursor->stmt); - if (ret == SQLITE_ROW) - cursor->CurrentRowId = sqlite3_column_int64 (cursor->stmt, 0); - else - cursor->eof = 1; - stop: - if (geom) - gaiaFreeGeomColl (geom); - if (xtable) - free (xtable); - if (xgeom) - free (xgeom); - if (db_prefix) - free (db_prefix); - if (table_name) - free (table_name); - return SQLITE_OK; -} - -static int -vspidx_next (sqlite3_vtab_cursor * pCursor) -{ -/* fetching a next row from cursor */ - int ret; - VirtualSpatialIndexCursorPtr cursor = - (VirtualSpatialIndexCursorPtr) pCursor; - ret = sqlite3_step (cursor->stmt); - if (ret == SQLITE_ROW) - cursor->CurrentRowId = sqlite3_column_int64 (cursor->stmt, 0); - else - cursor->eof = 1; - return SQLITE_OK; -} - -static int -vspidx_eof (sqlite3_vtab_cursor * pCursor) -{ -/* cursor EOF */ - VirtualSpatialIndexCursorPtr cursor = - (VirtualSpatialIndexCursorPtr) pCursor; - return cursor->eof; -} - -static int -vspidx_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, - int column) -{ -/* fetching value for the Nth column */ - VirtualSpatialIndexCursorPtr cursor = - (VirtualSpatialIndexCursorPtr) pCursor; - if (cursor || column) - cursor = cursor; /* unused arg warning suppression */ - if (column) - column = column; /* unused arg warning suppression */ - sqlite3_result_null (pContext); - return SQLITE_OK; -} - -static int -vspidx_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) -{ -/* fetching the ROWID */ - VirtualSpatialIndexCursorPtr cursor = - (VirtualSpatialIndexCursorPtr) pCursor; - *pRowid = cursor->CurrentRowId; - return SQLITE_OK; -} - -static int -vspidx_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, - sqlite_int64 * pRowid) -{ -/* generic update [INSERT / UPDATE / DELETE */ - if (pRowid || argc || argv || pVTab) - pRowid = pRowid; /* unused arg warning suppression */ -/* read only datasource */ - return SQLITE_READONLY; -} - -static int -vspidx_begin (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vspidx_sync (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vspidx_commit (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vspidx_rollback (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -int -sqlite3VirtualSpatialIndexInit (sqlite3 * db) -{ - int rc = SQLITE_OK; - my_spidx_module.iVersion = 1; - my_spidx_module.xCreate = &vspidx_create; - my_spidx_module.xConnect = &vspidx_connect; - my_spidx_module.xBestIndex = &vspidx_best_index; - my_spidx_module.xDisconnect = &vspidx_disconnect; - my_spidx_module.xDestroy = &vspidx_destroy; - my_spidx_module.xOpen = &vspidx_open; - my_spidx_module.xClose = &vspidx_close; - my_spidx_module.xFilter = &vspidx_filter; - my_spidx_module.xNext = &vspidx_next; - my_spidx_module.xEof = &vspidx_eof; - my_spidx_module.xColumn = &vspidx_column; - my_spidx_module.xRowid = &vspidx_rowid; - my_spidx_module.xUpdate = &vspidx_update; - my_spidx_module.xBegin = &vspidx_begin; - my_spidx_module.xSync = &vspidx_sync; - my_spidx_module.xCommit = &vspidx_commit; - my_spidx_module.xRollback = &vspidx_rollback; - my_spidx_module.xFindFunction = NULL; - sqlite3_create_module_v2 (db, "VirtualSpatialIndex", &my_spidx_module, NULL, - 0); - return rc; -} - -int -virtual_spatialindex_extension_init (sqlite3 * db) -{ - return sqlite3VirtualSpatialIndexInit (db); -} diff --git a/src/spatialite/src/srsinit/Makefile.am b/src/spatialite/src/srsinit/Makefile.am deleted file mode 100644 index 8c5d375..0000000 --- a/src/spatialite/src/srsinit/Makefile.am +++ /dev/null @@ -1,60 +0,0 @@ - -SUBDIRS = epsg_update - -INCLUDES = @CFLAGS@ -INCLUDES += -I$(top_srcdir)/src/headers - -noinst_LTLIBRARIES = libsrsinit.la - -libsrsinit_la_SOURCES = srs_init.c \ - epsg_inlined_00.c \ - epsg_inlined_01.c \ - epsg_inlined_02.c \ - epsg_inlined_03.c \ - epsg_inlined_04.c \ - epsg_inlined_05.c \ - epsg_inlined_06.c \ - epsg_inlined_07.c \ - epsg_inlined_08.c \ - epsg_inlined_09.c \ - epsg_inlined_10.c \ - epsg_inlined_11.c \ - epsg_inlined_12.c \ - epsg_inlined_13.c \ - epsg_inlined_14.c \ - epsg_inlined_15.c \ - epsg_inlined_16.c \ - epsg_inlined_17.c \ - epsg_inlined_18.c \ - epsg_inlined_19.c \ - epsg_inlined_20.c \ - epsg_inlined_21.c \ - epsg_inlined_22.c \ - epsg_inlined_23.c \ - epsg_inlined_24.c \ - epsg_inlined_25.c \ - epsg_inlined_26.c \ - epsg_inlined_27.c \ - epsg_inlined_28.c \ - epsg_inlined_29.c \ - epsg_inlined_30.c \ - epsg_inlined_31.c \ - epsg_inlined_32.c \ - epsg_inlined_33.c \ - epsg_inlined_34.c \ - epsg_inlined_35.c \ - epsg_inlined_36.c \ - epsg_inlined_37.c \ - epsg_inlined_38.c \ - epsg_inlined_39.c \ - epsg_inlined_40.c \ - epsg_inlined_wgs84_00.c \ - epsg_inlined_wgs84_01.c \ - epsg_inlined_prussian.c \ - epsg_inlined_extra.c - -libsrsinit_la_CFLAGS = -fvisibility=hidden - -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda - - diff --git a/src/spatialite/src/srsinit/Makefile.in b/src/spatialite/src/srsinit/Makefile.in deleted file mode 100644 index d777669..0000000 --- a/src/spatialite/src/srsinit/Makefile.in +++ /dev/null @@ -1,1121 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/srsinit -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libsrsinit_la_LIBADD = -am_libsrsinit_la_OBJECTS = libsrsinit_la-srs_init.lo \ - libsrsinit_la-epsg_inlined_00.lo \ - libsrsinit_la-epsg_inlined_01.lo \ - libsrsinit_la-epsg_inlined_02.lo \ - libsrsinit_la-epsg_inlined_03.lo \ - libsrsinit_la-epsg_inlined_04.lo \ - libsrsinit_la-epsg_inlined_05.lo \ - libsrsinit_la-epsg_inlined_06.lo \ - libsrsinit_la-epsg_inlined_07.lo \ - libsrsinit_la-epsg_inlined_08.lo \ - libsrsinit_la-epsg_inlined_09.lo \ - libsrsinit_la-epsg_inlined_10.lo \ - libsrsinit_la-epsg_inlined_11.lo \ - libsrsinit_la-epsg_inlined_12.lo \ - libsrsinit_la-epsg_inlined_13.lo \ - libsrsinit_la-epsg_inlined_14.lo \ - libsrsinit_la-epsg_inlined_15.lo \ - libsrsinit_la-epsg_inlined_16.lo \ - libsrsinit_la-epsg_inlined_17.lo \ - libsrsinit_la-epsg_inlined_18.lo \ - libsrsinit_la-epsg_inlined_19.lo \ - libsrsinit_la-epsg_inlined_20.lo \ - libsrsinit_la-epsg_inlined_21.lo \ - libsrsinit_la-epsg_inlined_22.lo \ - libsrsinit_la-epsg_inlined_23.lo \ - libsrsinit_la-epsg_inlined_24.lo \ - libsrsinit_la-epsg_inlined_25.lo \ - libsrsinit_la-epsg_inlined_26.lo \ - libsrsinit_la-epsg_inlined_27.lo \ - libsrsinit_la-epsg_inlined_28.lo \ - libsrsinit_la-epsg_inlined_29.lo \ - libsrsinit_la-epsg_inlined_30.lo \ - libsrsinit_la-epsg_inlined_31.lo \ - libsrsinit_la-epsg_inlined_32.lo \ - libsrsinit_la-epsg_inlined_33.lo \ - libsrsinit_la-epsg_inlined_34.lo \ - libsrsinit_la-epsg_inlined_35.lo \ - libsrsinit_la-epsg_inlined_36.lo \ - libsrsinit_la-epsg_inlined_37.lo \ - libsrsinit_la-epsg_inlined_38.lo \ - libsrsinit_la-epsg_inlined_39.lo \ - libsrsinit_la-epsg_inlined_40.lo \ - libsrsinit_la-epsg_inlined_wgs84_00.lo \ - libsrsinit_la-epsg_inlined_wgs84_01.lo \ - libsrsinit_la-epsg_inlined_prussian.lo \ - libsrsinit_la-epsg_inlined_extra.lo -libsrsinit_la_OBJECTS = $(am_libsrsinit_la_OBJECTS) -libsrsinit_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \ - $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libsrsinit_la_CFLAGS) \ - $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libsrsinit_la_SOURCES) -DIST_SOURCES = $(libsrsinit_la_SOURCES) -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir -ETAGS = etags -CTAGS = ctags -DIST_SUBDIRS = $(SUBDIRS) -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -am__relativize = \ - dir0=`pwd`; \ - sed_first='s,^\([^/]*\)/.*$$,\1,'; \ - sed_rest='s,^[^/]*/*,,'; \ - sed_last='s,^.*/\([^/]*\)$$,\1,'; \ - sed_butlast='s,/*[^/]*$$,,'; \ - while test -n "$$dir1"; do \ - first=`echo "$$dir1" | sed -e "$$sed_first"`; \ - if test "$$first" != "."; then \ - if test "$$first" = ".."; then \ - dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ - dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ - else \ - first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ - if test "$$first2" = "$$first"; then \ - dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ - else \ - dir2="../$$dir2"; \ - fi; \ - dir0="$$dir0"/"$$first"; \ - fi; \ - fi; \ - dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ - done; \ - reldir="$$dir2" -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -SUBDIRS = epsg_update -INCLUDES = @CFLAGS@ -I$(top_srcdir)/src/headers -noinst_LTLIBRARIES = libsrsinit.la -libsrsinit_la_SOURCES = srs_init.c \ - epsg_inlined_00.c \ - epsg_inlined_01.c \ - epsg_inlined_02.c \ - epsg_inlined_03.c \ - epsg_inlined_04.c \ - epsg_inlined_05.c \ - epsg_inlined_06.c \ - epsg_inlined_07.c \ - epsg_inlined_08.c \ - epsg_inlined_09.c \ - epsg_inlined_10.c \ - epsg_inlined_11.c \ - epsg_inlined_12.c \ - epsg_inlined_13.c \ - epsg_inlined_14.c \ - epsg_inlined_15.c \ - epsg_inlined_16.c \ - epsg_inlined_17.c \ - epsg_inlined_18.c \ - epsg_inlined_19.c \ - epsg_inlined_20.c \ - epsg_inlined_21.c \ - epsg_inlined_22.c \ - epsg_inlined_23.c \ - epsg_inlined_24.c \ - epsg_inlined_25.c \ - epsg_inlined_26.c \ - epsg_inlined_27.c \ - epsg_inlined_28.c \ - epsg_inlined_29.c \ - epsg_inlined_30.c \ - epsg_inlined_31.c \ - epsg_inlined_32.c \ - epsg_inlined_33.c \ - epsg_inlined_34.c \ - epsg_inlined_35.c \ - epsg_inlined_36.c \ - epsg_inlined_37.c \ - epsg_inlined_38.c \ - epsg_inlined_39.c \ - epsg_inlined_40.c \ - epsg_inlined_wgs84_00.c \ - epsg_inlined_wgs84_01.c \ - epsg_inlined_prussian.c \ - epsg_inlined_extra.c - -libsrsinit_la_CFLAGS = -fvisibility=hidden -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda -all: all-recursive - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/srsinit/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/srsinit/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libsrsinit.la: $(libsrsinit_la_OBJECTS) $(libsrsinit_la_DEPENDENCIES) $(EXTRA_libsrsinit_la_DEPENDENCIES) - $(libsrsinit_la_LINK) $(libsrsinit_la_OBJECTS) $(libsrsinit_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_00.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_01.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_02.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_03.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_04.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_05.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_06.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_07.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_08.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_09.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_10.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_11.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_12.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_13.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_14.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_15.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_16.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_17.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_18.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_19.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_20.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_21.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_22.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_23.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_24.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_25.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_26.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_27.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_28.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_29.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_30.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_31.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_32.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_33.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_34.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_35.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_36.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_37.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_38.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_39.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_40.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_extra.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_prussian.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_00.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_01.Plo@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-srs_init.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -libsrsinit_la-srs_init.lo: srs_init.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-srs_init.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-srs_init.Tpo -c -o libsrsinit_la-srs_init.lo `test -f 'srs_init.c' || echo '$(srcdir)/'`srs_init.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-srs_init.Tpo $(DEPDIR)/libsrsinit_la-srs_init.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='srs_init.c' object='libsrsinit_la-srs_init.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-srs_init.lo `test -f 'srs_init.c' || echo '$(srcdir)/'`srs_init.c - -libsrsinit_la-epsg_inlined_00.lo: epsg_inlined_00.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_00.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_00.Tpo -c -o libsrsinit_la-epsg_inlined_00.lo `test -f 'epsg_inlined_00.c' || echo '$(srcdir)/'`epsg_inlined_00.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_00.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_00.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_00.c' object='libsrsinit_la-epsg_inlined_00.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_00.lo `test -f 'epsg_inlined_00.c' || echo '$(srcdir)/'`epsg_inlined_00.c - -libsrsinit_la-epsg_inlined_01.lo: epsg_inlined_01.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_01.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_01.Tpo -c -o libsrsinit_la-epsg_inlined_01.lo `test -f 'epsg_inlined_01.c' || echo '$(srcdir)/'`epsg_inlined_01.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_01.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_01.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_01.c' object='libsrsinit_la-epsg_inlined_01.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_01.lo `test -f 'epsg_inlined_01.c' || echo '$(srcdir)/'`epsg_inlined_01.c - -libsrsinit_la-epsg_inlined_02.lo: epsg_inlined_02.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_02.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_02.Tpo -c -o libsrsinit_la-epsg_inlined_02.lo `test -f 'epsg_inlined_02.c' || echo '$(srcdir)/'`epsg_inlined_02.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_02.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_02.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_02.c' object='libsrsinit_la-epsg_inlined_02.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_02.lo `test -f 'epsg_inlined_02.c' || echo '$(srcdir)/'`epsg_inlined_02.c - -libsrsinit_la-epsg_inlined_03.lo: epsg_inlined_03.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_03.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_03.Tpo -c -o libsrsinit_la-epsg_inlined_03.lo `test -f 'epsg_inlined_03.c' || echo '$(srcdir)/'`epsg_inlined_03.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_03.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_03.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_03.c' object='libsrsinit_la-epsg_inlined_03.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_03.lo `test -f 'epsg_inlined_03.c' || echo '$(srcdir)/'`epsg_inlined_03.c - -libsrsinit_la-epsg_inlined_04.lo: epsg_inlined_04.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_04.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_04.Tpo -c -o libsrsinit_la-epsg_inlined_04.lo `test -f 'epsg_inlined_04.c' || echo '$(srcdir)/'`epsg_inlined_04.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_04.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_04.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_04.c' object='libsrsinit_la-epsg_inlined_04.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_04.lo `test -f 'epsg_inlined_04.c' || echo '$(srcdir)/'`epsg_inlined_04.c - -libsrsinit_la-epsg_inlined_05.lo: epsg_inlined_05.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_05.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_05.Tpo -c -o libsrsinit_la-epsg_inlined_05.lo `test -f 'epsg_inlined_05.c' || echo '$(srcdir)/'`epsg_inlined_05.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_05.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_05.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_05.c' object='libsrsinit_la-epsg_inlined_05.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_05.lo `test -f 'epsg_inlined_05.c' || echo '$(srcdir)/'`epsg_inlined_05.c - -libsrsinit_la-epsg_inlined_06.lo: epsg_inlined_06.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_06.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_06.Tpo -c -o libsrsinit_la-epsg_inlined_06.lo `test -f 'epsg_inlined_06.c' || echo '$(srcdir)/'`epsg_inlined_06.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_06.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_06.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_06.c' object='libsrsinit_la-epsg_inlined_06.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_06.lo `test -f 'epsg_inlined_06.c' || echo '$(srcdir)/'`epsg_inlined_06.c - -libsrsinit_la-epsg_inlined_07.lo: epsg_inlined_07.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_07.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_07.Tpo -c -o libsrsinit_la-epsg_inlined_07.lo `test -f 'epsg_inlined_07.c' || echo '$(srcdir)/'`epsg_inlined_07.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_07.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_07.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_07.c' object='libsrsinit_la-epsg_inlined_07.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_07.lo `test -f 'epsg_inlined_07.c' || echo '$(srcdir)/'`epsg_inlined_07.c - -libsrsinit_la-epsg_inlined_08.lo: epsg_inlined_08.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_08.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_08.Tpo -c -o libsrsinit_la-epsg_inlined_08.lo `test -f 'epsg_inlined_08.c' || echo '$(srcdir)/'`epsg_inlined_08.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_08.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_08.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_08.c' object='libsrsinit_la-epsg_inlined_08.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_08.lo `test -f 'epsg_inlined_08.c' || echo '$(srcdir)/'`epsg_inlined_08.c - -libsrsinit_la-epsg_inlined_09.lo: epsg_inlined_09.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_09.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_09.Tpo -c -o libsrsinit_la-epsg_inlined_09.lo `test -f 'epsg_inlined_09.c' || echo '$(srcdir)/'`epsg_inlined_09.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_09.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_09.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_09.c' object='libsrsinit_la-epsg_inlined_09.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_09.lo `test -f 'epsg_inlined_09.c' || echo '$(srcdir)/'`epsg_inlined_09.c - -libsrsinit_la-epsg_inlined_10.lo: epsg_inlined_10.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_10.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_10.Tpo -c -o libsrsinit_la-epsg_inlined_10.lo `test -f 'epsg_inlined_10.c' || echo '$(srcdir)/'`epsg_inlined_10.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_10.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_10.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_10.c' object='libsrsinit_la-epsg_inlined_10.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_10.lo `test -f 'epsg_inlined_10.c' || echo '$(srcdir)/'`epsg_inlined_10.c - -libsrsinit_la-epsg_inlined_11.lo: epsg_inlined_11.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_11.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_11.Tpo -c -o libsrsinit_la-epsg_inlined_11.lo `test -f 'epsg_inlined_11.c' || echo '$(srcdir)/'`epsg_inlined_11.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_11.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_11.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_11.c' object='libsrsinit_la-epsg_inlined_11.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_11.lo `test -f 'epsg_inlined_11.c' || echo '$(srcdir)/'`epsg_inlined_11.c - -libsrsinit_la-epsg_inlined_12.lo: epsg_inlined_12.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_12.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_12.Tpo -c -o libsrsinit_la-epsg_inlined_12.lo `test -f 'epsg_inlined_12.c' || echo '$(srcdir)/'`epsg_inlined_12.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_12.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_12.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_12.c' object='libsrsinit_la-epsg_inlined_12.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_12.lo `test -f 'epsg_inlined_12.c' || echo '$(srcdir)/'`epsg_inlined_12.c - -libsrsinit_la-epsg_inlined_13.lo: epsg_inlined_13.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_13.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_13.Tpo -c -o libsrsinit_la-epsg_inlined_13.lo `test -f 'epsg_inlined_13.c' || echo '$(srcdir)/'`epsg_inlined_13.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_13.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_13.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_13.c' object='libsrsinit_la-epsg_inlined_13.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_13.lo `test -f 'epsg_inlined_13.c' || echo '$(srcdir)/'`epsg_inlined_13.c - -libsrsinit_la-epsg_inlined_14.lo: epsg_inlined_14.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_14.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_14.Tpo -c -o libsrsinit_la-epsg_inlined_14.lo `test -f 'epsg_inlined_14.c' || echo '$(srcdir)/'`epsg_inlined_14.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_14.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_14.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_14.c' object='libsrsinit_la-epsg_inlined_14.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_14.lo `test -f 'epsg_inlined_14.c' || echo '$(srcdir)/'`epsg_inlined_14.c - -libsrsinit_la-epsg_inlined_15.lo: epsg_inlined_15.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_15.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_15.Tpo -c -o libsrsinit_la-epsg_inlined_15.lo `test -f 'epsg_inlined_15.c' || echo '$(srcdir)/'`epsg_inlined_15.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_15.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_15.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_15.c' object='libsrsinit_la-epsg_inlined_15.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_15.lo `test -f 'epsg_inlined_15.c' || echo '$(srcdir)/'`epsg_inlined_15.c - -libsrsinit_la-epsg_inlined_16.lo: epsg_inlined_16.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_16.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_16.Tpo -c -o libsrsinit_la-epsg_inlined_16.lo `test -f 'epsg_inlined_16.c' || echo '$(srcdir)/'`epsg_inlined_16.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_16.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_16.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_16.c' object='libsrsinit_la-epsg_inlined_16.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_16.lo `test -f 'epsg_inlined_16.c' || echo '$(srcdir)/'`epsg_inlined_16.c - -libsrsinit_la-epsg_inlined_17.lo: epsg_inlined_17.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_17.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_17.Tpo -c -o libsrsinit_la-epsg_inlined_17.lo `test -f 'epsg_inlined_17.c' || echo '$(srcdir)/'`epsg_inlined_17.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_17.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_17.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_17.c' object='libsrsinit_la-epsg_inlined_17.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_17.lo `test -f 'epsg_inlined_17.c' || echo '$(srcdir)/'`epsg_inlined_17.c - -libsrsinit_la-epsg_inlined_18.lo: epsg_inlined_18.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_18.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_18.Tpo -c -o libsrsinit_la-epsg_inlined_18.lo `test -f 'epsg_inlined_18.c' || echo '$(srcdir)/'`epsg_inlined_18.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_18.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_18.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_18.c' object='libsrsinit_la-epsg_inlined_18.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_18.lo `test -f 'epsg_inlined_18.c' || echo '$(srcdir)/'`epsg_inlined_18.c - -libsrsinit_la-epsg_inlined_19.lo: epsg_inlined_19.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_19.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_19.Tpo -c -o libsrsinit_la-epsg_inlined_19.lo `test -f 'epsg_inlined_19.c' || echo '$(srcdir)/'`epsg_inlined_19.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_19.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_19.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_19.c' object='libsrsinit_la-epsg_inlined_19.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_19.lo `test -f 'epsg_inlined_19.c' || echo '$(srcdir)/'`epsg_inlined_19.c - -libsrsinit_la-epsg_inlined_20.lo: epsg_inlined_20.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_20.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_20.Tpo -c -o libsrsinit_la-epsg_inlined_20.lo `test -f 'epsg_inlined_20.c' || echo '$(srcdir)/'`epsg_inlined_20.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_20.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_20.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_20.c' object='libsrsinit_la-epsg_inlined_20.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_20.lo `test -f 'epsg_inlined_20.c' || echo '$(srcdir)/'`epsg_inlined_20.c - -libsrsinit_la-epsg_inlined_21.lo: epsg_inlined_21.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_21.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_21.Tpo -c -o libsrsinit_la-epsg_inlined_21.lo `test -f 'epsg_inlined_21.c' || echo '$(srcdir)/'`epsg_inlined_21.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_21.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_21.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_21.c' object='libsrsinit_la-epsg_inlined_21.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_21.lo `test -f 'epsg_inlined_21.c' || echo '$(srcdir)/'`epsg_inlined_21.c - -libsrsinit_la-epsg_inlined_22.lo: epsg_inlined_22.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_22.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_22.Tpo -c -o libsrsinit_la-epsg_inlined_22.lo `test -f 'epsg_inlined_22.c' || echo '$(srcdir)/'`epsg_inlined_22.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_22.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_22.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_22.c' object='libsrsinit_la-epsg_inlined_22.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_22.lo `test -f 'epsg_inlined_22.c' || echo '$(srcdir)/'`epsg_inlined_22.c - -libsrsinit_la-epsg_inlined_23.lo: epsg_inlined_23.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_23.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_23.Tpo -c -o libsrsinit_la-epsg_inlined_23.lo `test -f 'epsg_inlined_23.c' || echo '$(srcdir)/'`epsg_inlined_23.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_23.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_23.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_23.c' object='libsrsinit_la-epsg_inlined_23.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_23.lo `test -f 'epsg_inlined_23.c' || echo '$(srcdir)/'`epsg_inlined_23.c - -libsrsinit_la-epsg_inlined_24.lo: epsg_inlined_24.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_24.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_24.Tpo -c -o libsrsinit_la-epsg_inlined_24.lo `test -f 'epsg_inlined_24.c' || echo '$(srcdir)/'`epsg_inlined_24.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_24.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_24.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_24.c' object='libsrsinit_la-epsg_inlined_24.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_24.lo `test -f 'epsg_inlined_24.c' || echo '$(srcdir)/'`epsg_inlined_24.c - -libsrsinit_la-epsg_inlined_25.lo: epsg_inlined_25.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_25.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_25.Tpo -c -o libsrsinit_la-epsg_inlined_25.lo `test -f 'epsg_inlined_25.c' || echo '$(srcdir)/'`epsg_inlined_25.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_25.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_25.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_25.c' object='libsrsinit_la-epsg_inlined_25.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_25.lo `test -f 'epsg_inlined_25.c' || echo '$(srcdir)/'`epsg_inlined_25.c - -libsrsinit_la-epsg_inlined_26.lo: epsg_inlined_26.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_26.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_26.Tpo -c -o libsrsinit_la-epsg_inlined_26.lo `test -f 'epsg_inlined_26.c' || echo '$(srcdir)/'`epsg_inlined_26.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_26.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_26.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_26.c' object='libsrsinit_la-epsg_inlined_26.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_26.lo `test -f 'epsg_inlined_26.c' || echo '$(srcdir)/'`epsg_inlined_26.c - -libsrsinit_la-epsg_inlined_27.lo: epsg_inlined_27.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_27.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_27.Tpo -c -o libsrsinit_la-epsg_inlined_27.lo `test -f 'epsg_inlined_27.c' || echo '$(srcdir)/'`epsg_inlined_27.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_27.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_27.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_27.c' object='libsrsinit_la-epsg_inlined_27.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_27.lo `test -f 'epsg_inlined_27.c' || echo '$(srcdir)/'`epsg_inlined_27.c - -libsrsinit_la-epsg_inlined_28.lo: epsg_inlined_28.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_28.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_28.Tpo -c -o libsrsinit_la-epsg_inlined_28.lo `test -f 'epsg_inlined_28.c' || echo '$(srcdir)/'`epsg_inlined_28.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_28.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_28.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_28.c' object='libsrsinit_la-epsg_inlined_28.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_28.lo `test -f 'epsg_inlined_28.c' || echo '$(srcdir)/'`epsg_inlined_28.c - -libsrsinit_la-epsg_inlined_29.lo: epsg_inlined_29.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_29.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_29.Tpo -c -o libsrsinit_la-epsg_inlined_29.lo `test -f 'epsg_inlined_29.c' || echo '$(srcdir)/'`epsg_inlined_29.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_29.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_29.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_29.c' object='libsrsinit_la-epsg_inlined_29.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_29.lo `test -f 'epsg_inlined_29.c' || echo '$(srcdir)/'`epsg_inlined_29.c - -libsrsinit_la-epsg_inlined_30.lo: epsg_inlined_30.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_30.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_30.Tpo -c -o libsrsinit_la-epsg_inlined_30.lo `test -f 'epsg_inlined_30.c' || echo '$(srcdir)/'`epsg_inlined_30.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_30.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_30.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_30.c' object='libsrsinit_la-epsg_inlined_30.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_30.lo `test -f 'epsg_inlined_30.c' || echo '$(srcdir)/'`epsg_inlined_30.c - -libsrsinit_la-epsg_inlined_31.lo: epsg_inlined_31.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_31.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_31.Tpo -c -o libsrsinit_la-epsg_inlined_31.lo `test -f 'epsg_inlined_31.c' || echo '$(srcdir)/'`epsg_inlined_31.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_31.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_31.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_31.c' object='libsrsinit_la-epsg_inlined_31.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_31.lo `test -f 'epsg_inlined_31.c' || echo '$(srcdir)/'`epsg_inlined_31.c - -libsrsinit_la-epsg_inlined_32.lo: epsg_inlined_32.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_32.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_32.Tpo -c -o libsrsinit_la-epsg_inlined_32.lo `test -f 'epsg_inlined_32.c' || echo '$(srcdir)/'`epsg_inlined_32.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_32.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_32.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_32.c' object='libsrsinit_la-epsg_inlined_32.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_32.lo `test -f 'epsg_inlined_32.c' || echo '$(srcdir)/'`epsg_inlined_32.c - -libsrsinit_la-epsg_inlined_33.lo: epsg_inlined_33.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_33.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_33.Tpo -c -o libsrsinit_la-epsg_inlined_33.lo `test -f 'epsg_inlined_33.c' || echo '$(srcdir)/'`epsg_inlined_33.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_33.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_33.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_33.c' object='libsrsinit_la-epsg_inlined_33.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_33.lo `test -f 'epsg_inlined_33.c' || echo '$(srcdir)/'`epsg_inlined_33.c - -libsrsinit_la-epsg_inlined_34.lo: epsg_inlined_34.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_34.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_34.Tpo -c -o libsrsinit_la-epsg_inlined_34.lo `test -f 'epsg_inlined_34.c' || echo '$(srcdir)/'`epsg_inlined_34.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_34.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_34.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_34.c' object='libsrsinit_la-epsg_inlined_34.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_34.lo `test -f 'epsg_inlined_34.c' || echo '$(srcdir)/'`epsg_inlined_34.c - -libsrsinit_la-epsg_inlined_35.lo: epsg_inlined_35.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_35.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_35.Tpo -c -o libsrsinit_la-epsg_inlined_35.lo `test -f 'epsg_inlined_35.c' || echo '$(srcdir)/'`epsg_inlined_35.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_35.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_35.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_35.c' object='libsrsinit_la-epsg_inlined_35.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_35.lo `test -f 'epsg_inlined_35.c' || echo '$(srcdir)/'`epsg_inlined_35.c - -libsrsinit_la-epsg_inlined_36.lo: epsg_inlined_36.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_36.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_36.Tpo -c -o libsrsinit_la-epsg_inlined_36.lo `test -f 'epsg_inlined_36.c' || echo '$(srcdir)/'`epsg_inlined_36.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_36.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_36.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_36.c' object='libsrsinit_la-epsg_inlined_36.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_36.lo `test -f 'epsg_inlined_36.c' || echo '$(srcdir)/'`epsg_inlined_36.c - -libsrsinit_la-epsg_inlined_37.lo: epsg_inlined_37.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_37.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_37.Tpo -c -o libsrsinit_la-epsg_inlined_37.lo `test -f 'epsg_inlined_37.c' || echo '$(srcdir)/'`epsg_inlined_37.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_37.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_37.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_37.c' object='libsrsinit_la-epsg_inlined_37.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_37.lo `test -f 'epsg_inlined_37.c' || echo '$(srcdir)/'`epsg_inlined_37.c - -libsrsinit_la-epsg_inlined_38.lo: epsg_inlined_38.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_38.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_38.Tpo -c -o libsrsinit_la-epsg_inlined_38.lo `test -f 'epsg_inlined_38.c' || echo '$(srcdir)/'`epsg_inlined_38.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_38.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_38.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_38.c' object='libsrsinit_la-epsg_inlined_38.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_38.lo `test -f 'epsg_inlined_38.c' || echo '$(srcdir)/'`epsg_inlined_38.c - -libsrsinit_la-epsg_inlined_39.lo: epsg_inlined_39.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_39.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_39.Tpo -c -o libsrsinit_la-epsg_inlined_39.lo `test -f 'epsg_inlined_39.c' || echo '$(srcdir)/'`epsg_inlined_39.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_39.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_39.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_39.c' object='libsrsinit_la-epsg_inlined_39.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_39.lo `test -f 'epsg_inlined_39.c' || echo '$(srcdir)/'`epsg_inlined_39.c - -libsrsinit_la-epsg_inlined_40.lo: epsg_inlined_40.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_40.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_40.Tpo -c -o libsrsinit_la-epsg_inlined_40.lo `test -f 'epsg_inlined_40.c' || echo '$(srcdir)/'`epsg_inlined_40.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_40.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_40.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_40.c' object='libsrsinit_la-epsg_inlined_40.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_40.lo `test -f 'epsg_inlined_40.c' || echo '$(srcdir)/'`epsg_inlined_40.c - -libsrsinit_la-epsg_inlined_wgs84_00.lo: epsg_inlined_wgs84_00.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_wgs84_00.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_00.Tpo -c -o libsrsinit_la-epsg_inlined_wgs84_00.lo `test -f 'epsg_inlined_wgs84_00.c' || echo '$(srcdir)/'`epsg_inlined_wgs84_00.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_00.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_00.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_wgs84_00.c' object='libsrsinit_la-epsg_inlined_wgs84_00.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_wgs84_00.lo `test -f 'epsg_inlined_wgs84_00.c' || echo '$(srcdir)/'`epsg_inlined_wgs84_00.c - -libsrsinit_la-epsg_inlined_wgs84_01.lo: epsg_inlined_wgs84_01.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_wgs84_01.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_01.Tpo -c -o libsrsinit_la-epsg_inlined_wgs84_01.lo `test -f 'epsg_inlined_wgs84_01.c' || echo '$(srcdir)/'`epsg_inlined_wgs84_01.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_01.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_01.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_wgs84_01.c' object='libsrsinit_la-epsg_inlined_wgs84_01.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_wgs84_01.lo `test -f 'epsg_inlined_wgs84_01.c' || echo '$(srcdir)/'`epsg_inlined_wgs84_01.c - -libsrsinit_la-epsg_inlined_prussian.lo: epsg_inlined_prussian.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_prussian.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_prussian.Tpo -c -o libsrsinit_la-epsg_inlined_prussian.lo `test -f 'epsg_inlined_prussian.c' || echo '$(srcdir)/'`epsg_inlined_prussian.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_prussian.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_prussian.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_prussian.c' object='libsrsinit_la-epsg_inlined_prussian.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_prussian.lo `test -f 'epsg_inlined_prussian.c' || echo '$(srcdir)/'`epsg_inlined_prussian.c - -libsrsinit_la-epsg_inlined_extra.lo: epsg_inlined_extra.c -@am__fastdepCC_TRUE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_extra.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_extra.Tpo -c -o libsrsinit_la-epsg_inlined_extra.lo `test -f 'epsg_inlined_extra.c' || echo '$(srcdir)/'`epsg_inlined_extra.c -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_extra.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_extra.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='epsg_inlined_extra.c' object='libsrsinit_la-epsg_inlined_extra.lo' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_extra.lo `test -f 'epsg_inlined_extra.c' || echo '$(srcdir)/'`epsg_inlined_extra.c - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -# This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - dot_seen=yes; \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done; \ - if test "$$dot_seen" = "no"; then \ - $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ - fi; test -z "$$fail" - -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ - include_option=--etags-include; \ - empty_fix=.; \ - else \ - include_option=--include; \ - empty_fix=; \ - fi; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - test ! -f $$subdir/TAGS || \ - set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ - fi; \ - done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ - $(am__make_dryrun) \ - || test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ - $(am__relativize); \ - new_distdir=$$reldir; \ - dir1=$$subdir; dir2="$(top_distdir)"; \ - $(am__relativize); \ - new_top_distdir=$$reldir; \ - echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ - echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ - ($(am__cd) $$subdir && \ - $(MAKE) $(AM_MAKEFLAGS) \ - top_distdir="$$new_top_distdir" \ - distdir="$$new_distdir" \ - am__remove_distdir=: \ - am__skip_length_check=: \ - am__skip_mode_fix=: \ - distdir) \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-recursive -all-am: Makefile $(LTLIBRARIES) -installdirs: installdirs-recursive -installdirs-am: -install: install-recursive -install-exec: install-exec-recursive -install-data: install-data-recursive -uninstall: uninstall-recursive - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-recursive -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-recursive - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-recursive - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-recursive - -dvi-am: - -html: html-recursive - -html-am: - -info: info-recursive - -info-am: - -install-data-am: - -install-dvi: install-dvi-recursive - -install-dvi-am: - -install-exec-am: - -install-html: install-html-recursive - -install-html-am: - -install-info: install-info-recursive - -install-info-am: - -install-man: - -install-pdf: install-pdf-recursive - -install-pdf-am: - -install-ps: install-ps-recursive - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-recursive - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-recursive - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-recursive - -pdf-am: - -ps: ps-recursive - -ps-am: - -uninstall-am: - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am check check-am clean clean-generic clean-libtool \ - clean-noinstLTLIBRARIES ctags ctags-recursive distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - installdirs-am maintainer-clean maintainer-clean-generic \ - mostlyclean mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am tags tags-recursive \ - uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/src/srsinit/epsg_inlined_00.c b/src/spatialite/src/srsinit/epsg_inlined_00.c deleted file mode 100644 index 624440f..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_00.c +++ /dev/null @@ -1,3384 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_00 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 2000, "epsg", 2000, - "Anguilla 1957 / British West Indies Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); - add_proj4text (p, 1, - "_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Anguilla 1957 / British West Indies Grid\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Anguilla 1957\",DATUM[\"Anguilla_1957\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7012\"]],AUTHORITY[\"EPSG\",\"6600\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 4, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4600\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-62],PARAMETER[\"scale_factor\",0.9995],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",400000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"2000\"]]"); - p = add_epsg_def (filter, first, last, 2001, "epsg", 2001, - "Antigua 1943 / British West Indies Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); - add_proj4text (p, 1, - "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-255,-15,71,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Antigua 1943 / British West Indies Grid\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"Antigua 1943\",DATUM[\"Antigua_1943\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7012\"]],TOWGS84[-255,-15,71,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6601\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4601\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",-62],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9995],PARAMETER[\"false_easting\",400"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2001\"]]"); - p = add_epsg_def (filter, first, last, 2002, "epsg", 2002, - "Dominica 1945 / British West Indies Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); - add_proj4text (p, 1, - "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=725,685,536,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Dominica 1945 / British West Indies Grid\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Dominica 1945\",DATUM[\"Dominica_1945\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7012\"]],TOWGS84[725,685,536,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6602\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4602\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",-62],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",0.9995],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "400000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2002\"]]"); - p = add_epsg_def (filter, first, last, 2003, "epsg", 2003, - "Grenada 1953 / British West Indies Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); - add_proj4text (p, 1, - "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Grenada 1953 / British West Indies Grid\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"Grenada 1953\",DATUM[\"Grenada_1953\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7012\"]],TOWGS84[72,213.7,93,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6603\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4603\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",-62],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9995],PARAMETER[\"false_easting\",400"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2003\"]]"); - p = add_epsg_def (filter, first, last, 2004, "epsg", 2004, - "Montserrat 1958 / British West Indies Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); - add_proj4text (p, 1, - "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=174,359,365,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Montserrat 1958 / British West Indies Grid\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"Montserrat 1958\",DATUM[\"Montserrat_1958\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7012\"]],TOWGS84[174,359,365,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6604\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4604\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",-62],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"scale_factor\",0.9995],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",400000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EA"); - add_srs_wkt (p, 12, - "ST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2004\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 2005, "epsg", 2005, - "St. Kitts 1955 / British West Indies Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); - add_proj4text (p, 1, - "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=9,183,236,0,0,0,"); - add_proj4text (p, 2, - "0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"St. Kitts 1955 / British West Indies Grid\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"St. Kitts 1955\",DATUM[\"St_Kitts_1955\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7012\"]],TOWGS84[9,183,236,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6605\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4605\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",-62],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",0.9995],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "400000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2005\"]]"); - p = add_epsg_def (filter, first, last, 2006, "epsg", 2006, - "St. Lucia 1955 / British West Indies Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); - add_proj4text (p, 1, - "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-149,128,296,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"St. Lucia 1955 / British West Indies Grid\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"St. Lucia 1955\",DATUM[\"St_Lucia_1955\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7012\"]],TOWGS84[-149,128,296,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6606\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4606\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",-62],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",0.9995],PARAMETER[\"false_easting"); - add_srs_wkt (p, 10, - "\",400000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2006\"]]"); - p = add_epsg_def (filter, first, last, 2007, "epsg", 2007, - "St. Vincent 45 / British West Indies Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); - add_proj4text (p, 1, - "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=195.671,332.517,"); - add_proj4text (p, 2, - "274.607,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"St. Vincent 45 / British West Indies Grid\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"St. Vincent 1945\",DATUM[\"St_Vincent_1945\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7012\"]],TOWGS84[195.671,332.517,274.607,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6607\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4607\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 9, - "ian\",-62],PARAMETER[\"scale_factor\",0.9995],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",400000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 11, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"2007\"]]"); - p = add_epsg_def (filter, first, last, 2008, "epsg", 2008, - "NAD27(CGQ77) / SCoPQ zone 2 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 2 (deprecated)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD27(CGQ77)\",DATUM[\"North_American_Datum_1927_CG"); - add_srs_wkt (p, 2, - "Q77\",SPHEROID[\"Clarke 1866\",6378206.4,294.97869821389"); - add_srs_wkt (p, 3, - "82,AUTHORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"66"); - add_srs_wkt (p, 4, - "09\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",-55.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9999],PARAMETER[\"false_easting\",304800],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"2008\"]]"); - p = add_epsg_def (filter, first, last, 2009, "epsg", 2009, - "NAD27(CGQ77) / SCoPQ zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 3\",GEOGCS[\"NAD27(CG"); - add_srs_wkt (p, 1, - "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-58.5],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9999],PARAMETER[\"false_easting\",304800],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"2009\"]]"); - p = add_epsg_def (filter, first, last, 2010, "epsg", 2010, - "NAD27(CGQ77) / SCoPQ zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 4\",GEOGCS[\"NAD27(CG"); - add_srs_wkt (p, 1, - "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-61.5],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9999],PARAMETER[\"false_easting\",304800],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"2010\"]]"); - p = add_epsg_def (filter, first, last, 2011, "epsg", 2011, - "NAD27(CGQ77) / SCoPQ zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 5\",GEOGCS[\"NAD27(CG"); - add_srs_wkt (p, 1, - "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-64.5],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9999],PARAMETER[\"false_easting\",304800],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"2011\"]]"); - p = add_epsg_def (filter, first, last, 2012, "epsg", 2012, - "NAD27(CGQ77) / SCoPQ zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 6\",GEOGCS[\"NAD27(CG"); - add_srs_wkt (p, 1, - "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-67.5],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9999],PARAMETER[\"false_easting\",304800],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"2012\"]]"); - p = add_epsg_def (filter, first, last, 2013, "epsg", 2013, - "NAD27(CGQ77) / SCoPQ zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 7\",GEOGCS[\"NAD27(CG"); - add_srs_wkt (p, 1, - "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-70.5],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9999],PARAMETER[\"false_easting\",304800],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"2013\"]]"); - p = add_epsg_def (filter, first, last, 2014, "epsg", 2014, - "NAD27(CGQ77) / SCoPQ zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 8\",GEOGCS[\"NAD27(CG"); - add_srs_wkt (p, 1, - "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-73.5],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9999],PARAMETER[\"false_easting\",304800],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"2014\"]]"); - p = add_epsg_def (filter, first, last, 2015, "epsg", 2015, - "NAD27(CGQ77) / SCoPQ zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 9\",GEOGCS[\"NAD27(CG"); - add_srs_wkt (p, 1, - "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-76.5],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9999],PARAMETER[\"false_easting\",304800],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"2015\"]]"); - p = add_epsg_def (filter, first, last, 2016, "epsg", 2016, - "NAD27(CGQ77) / SCoPQ zone 10"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 10\",GEOGCS[\"NAD27(C"); - add_srs_wkt (p, 1, - "GQ77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 7, - "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); - add_srs_wkt (p, 8, - "[\"central_meridian\",-79.5],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "0.9999],PARAMETER[\"false_easting\",304800],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"2016\"]]"); - p = add_epsg_def (filter, first, last, 2017, "epsg", 2017, - "NAD27(76) / MTM zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(76) / MTM zone 8\",GEOGCS[\"NAD27(76)\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clark"); - add_srs_wkt (p, 2, - "e 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 7, - ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); - add_srs_wkt (p, 8, - "_meridian\",-73.5],PARAMETER[\"scale_factor\",0.9999],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",304800],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "2017\"]]"); - p = add_epsg_def (filter, first, last, 2018, "epsg", 2018, - "NAD27(76) / MTM zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(76) / MTM zone 9\",GEOGCS[\"NAD27(76)\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clark"); - add_srs_wkt (p, 2, - "e 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 7, - ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); - add_srs_wkt (p, 8, - "_meridian\",-76.5],PARAMETER[\"scale_factor\",0.9999],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",304800],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "2018\"]]"); - p = add_epsg_def (filter, first, last, 2019, "epsg", 2019, - "NAD27(76) / MTM zone 10"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(76) / MTM zone 10\",GEOGCS[\"NAD27(76)\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); - add_srs_wkt (p, 2, - "ke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-79.5],PARAMETER[\"scale_factor\",0.9999],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"2019\"]]"); - p = add_epsg_def (filter, first, last, 2020, "epsg", 2020, - "NAD27(76) / MTM zone 11"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(76) / MTM zone 11\",GEOGCS[\"NAD27(76)\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); - add_srs_wkt (p, 2, - "ke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-82.5],PARAMETER[\"scale_factor\",0.9999],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"2020\"]]"); - p = add_epsg_def (filter, first, last, 2021, "epsg", 2021, - "NAD27(76) / MTM zone 12"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(76) / MTM zone 12\",GEOGCS[\"NAD27(76)\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); - add_srs_wkt (p, 2, - "ke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-81],PARAMETER[\"scale_factor\",0.9999],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"2021\"]]"); - p = add_epsg_def (filter, first, last, 2022, "epsg", 2022, - "NAD27(76) / MTM zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(76) / MTM zone 13\",GEOGCS[\"NAD27(76)\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); - add_srs_wkt (p, 2, - "ke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-84],PARAMETER[\"scale_factor\",0.9999],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"2022\"]]"); - p = add_epsg_def (filter, first, last, 2023, "epsg", 2023, - "NAD27(76) / MTM zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(76) / MTM zone 14\",GEOGCS[\"NAD27(76)\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); - add_srs_wkt (p, 2, - "ke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-87],PARAMETER[\"scale_factor\",0.9999],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"2023\"]]"); - p = add_epsg_def (filter, first, last, 2024, "epsg", 2024, - "NAD27(76) / MTM zone 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(76) / MTM zone 15\",GEOGCS[\"NAD27(76)\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); - add_srs_wkt (p, 2, - "ke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-90],PARAMETER[\"scale_factor\",0.9999],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"2024\"]]"); - p = add_epsg_def (filter, first, last, 2025, "epsg", 2025, - "NAD27(76) / MTM zone 16"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(76) / MTM zone 16\",GEOGCS[\"NAD27(76)\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); - add_srs_wkt (p, 2, - "ke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-93],PARAMETER[\"scale_factor\",0.9999],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"2025\"]]"); - p = add_epsg_def (filter, first, last, 2026, "epsg", 2026, - "NAD27(76) / MTM zone 17"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(76) / MTM zone 17\",GEOGCS[\"NAD27(76)\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); - add_srs_wkt (p, 2, - "ke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-96],PARAMETER[\"scale_factor\",0.9999],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"2026\"]]"); - p = add_epsg_def (filter, first, last, 2027, "epsg", 2027, - "NAD27(76) / UTM zone 15N"); - add_proj4text (p, 0, - "+proj=utm +zone=15 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(76) / UTM zone 15N\",GEOGCS[\"NAD27(76)\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-93],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"2027\"]]"); - p = add_epsg_def (filter, first, last, 2028, "epsg", 2028, - "NAD27(76) / UTM zone 16N"); - add_proj4text (p, 0, - "+proj=utm +zone=16 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(76) / UTM zone 16N\",GEOGCS[\"NAD27(76)\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-87],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"2028\"]]"); - p = add_epsg_def (filter, first, last, 2029, "epsg", 2029, - "NAD27(76) / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(76) / UTM zone 17N\",GEOGCS[\"NAD27(76)\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-81],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"2029\"]]"); - p = add_epsg_def (filter, first, last, 2030, "epsg", 2030, - "NAD27(76) / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(76) / UTM zone 18N\",GEOGCS[\"NAD27(76)\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-75],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"2030\"]]"); - p = add_epsg_def (filter, first, last, 2031, "epsg", 2031, - "NAD27(CGQ77) / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(CGQ77) / UTM zone 17N\",GEOGCS[\"NAD27(CG"); - add_srs_wkt (p, 1, - "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-81],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2031\"]]"); - p = add_epsg_def (filter, first, last, 2032, "epsg", 2032, - "NAD27(CGQ77) / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(CGQ77) / UTM zone 18N\",GEOGCS[\"NAD27(CG"); - add_srs_wkt (p, 1, - "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-75],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2032\"]]"); - p = add_epsg_def (filter, first, last, 2033, "epsg", 2033, - "NAD27(CGQ77) / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(CGQ77) / UTM zone 19N\",GEOGCS[\"NAD27(CG"); - add_srs_wkt (p, 1, - "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-69],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2033\"]]"); - p = add_epsg_def (filter, first, last, 2034, "epsg", 2034, - "NAD27(CGQ77) / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(CGQ77) / UTM zone 20N\",GEOGCS[\"NAD27(CG"); - add_srs_wkt (p, 1, - "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-63],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2034\"]]"); - p = add_epsg_def (filter, first, last, 2035, "epsg", 2035, - "NAD27(CGQ77) / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(CGQ77) / UTM zone 21N\",GEOGCS[\"NAD27(CG"); - add_srs_wkt (p, 1, - "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-57],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2035\"]]"); - p = add_epsg_def (filter, first, last, 2036, "epsg", 2036, - "NAD83(CSRS98) / New Brunswick Stereo (deprecated)"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2"); - add_proj4text (p, 1, - "500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / New Brunswick Stereo (deprecate"); - add_srs_wkt (p, 1, - "d)\",GEOGCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spa"); - add_srs_wkt (p, 2, - "tial_Reference_System\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 3, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4140\"]],PROJECTION[\"Oblique_Stereographic\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",46.5],PARAMETER[\"centr"); - add_srs_wkt (p, 9, - "al_meridian\",-66.5],PARAMETER[\"scale_factor\",0.999912"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_easting\",2500000],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_northing\",7500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EA"); - add_srs_wkt (p, 13, - "ST],AUTHORITY[\"EPSG\",\"2036\"]]"); - p = add_epsg_def (filter, first, last, 2037, "epsg", 2037, - "NAD83(CSRS98) / UTM zone 19N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / UTM zone 19N (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "2037\"]]"); - p = add_epsg_def (filter, first, last, 2038, "epsg", 2038, - "NAD83(CSRS98) / UTM zone 20N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / UTM zone 20N (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "2038\"]]"); - p = add_epsg_def (filter, first, last, 2039, "epsg", 2039, - "Israel / Israeli TM Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31.73439361111111 +lon_0=35.204516944"); - add_proj4text (p, 1, - "44445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps"); - add_proj4text (p, 2, - "=GRS80 +towgs84=-48,55,52,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Israel / Israeli TM Grid\",GEOGCS[\"Israel\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Israel\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 2, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[-48,55,52,0,0,0"); - add_srs_wkt (p, 3, - ",0],AUTHORITY[\"EPSG\",\"6141\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 5, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"4141\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 7, - "TER[\"latitude_of_origin\",31.73439361111111],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",35.20451694444445],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1.0000067],PARAMETER[\"false_easting\",219529"); - add_srs_wkt (p, 10, - ".584],PARAMETER[\"false_northing\",626907.39],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EA"); - add_srs_wkt (p, 12, - "ST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2039\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 2040, "epsg", 2040, - "Locodjo 1965 / UTM zone 30N"); - add_proj4text (p, 0, - "+proj=utm +zone=30 +ellps=clrk80 +towgs84=-125,53,467,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Locodjo 1965 / UTM zone 30N\",GEOGCS[\"Locodjo "); - add_srs_wkt (p, 1, - "1965\",DATUM[\"Locodjo_1965\",SPHEROID[\"Clarke 1880 (RG"); - add_srs_wkt (p, 2, - "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-125,53,467,0,0,0,0],AUTHORITY[\"EPSG\",\"6142\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4142\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-3],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"2040\"]]"); - p = add_epsg_def (filter, first, last, 2041, "epsg", 2041, - "Abidjan 1987 / UTM zone 30N"); - add_proj4text (p, 0, - "+proj=utm +zone=30 +ellps=clrk80 +towgs84=-124.76,53,466"); - add_proj4text (p, 1, - ".79,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Abidjan 1987 / UTM zone 30N\",GEOGCS[\"Abidjan "); - add_srs_wkt (p, 1, - "1987\",DATUM[\"Abidjan_1987\",SPHEROID[\"Clarke 1880 (RG"); - add_srs_wkt (p, 2, - "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-124.76,53,466.79,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "143\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4143\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",-3],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"2041\"]]"); - p = add_epsg_def (filter, first, last, 2042, "epsg", 2042, - "Locodjo 1965 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-125,53,467,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Locodjo 1965 / UTM zone 29N\",GEOGCS[\"Locodjo "); - add_srs_wkt (p, 1, - "1965\",DATUM[\"Locodjo_1965\",SPHEROID[\"Clarke 1880 (RG"); - add_srs_wkt (p, 2, - "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-125,53,467,0,0,0,0],AUTHORITY[\"EPSG\",\"6142\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4142\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-9],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"2042\"]]"); - p = add_epsg_def (filter, first, last, 2043, "epsg", 2043, - "Abidjan 1987 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-124.76,53,466"); - add_proj4text (p, 1, - ".79,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Abidjan 1987 / UTM zone 29N\",GEOGCS[\"Abidjan "); - add_srs_wkt (p, 1, - "1987\",DATUM[\"Abidjan_1987\",SPHEROID[\"Clarke 1880 (RG"); - add_srs_wkt (p, 2, - "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-124.76,53,466.79,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "143\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4143\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",-9],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"2043\"]]"); - p = add_epsg_def (filter, first, last, 2044, "epsg", 2044, - "Hanoi 1972 / Gauss-Kruger zone 18"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Hanoi 1972 / Gauss-Kruger zone 18\",GEOGCS[\"Ha"); - add_srs_wkt (p, 1, - "noi 1972\",DATUM[\"Hanoi_1972\",SPHEROID[\"Krassowsky 19"); - add_srs_wkt (p, 2, - "40\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-17.51,-108.32,-62.39,0,0,0,0],AUTHORITY[\"EPSG\",\"614"); - add_srs_wkt (p, 4, - "7\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4147\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",105],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",1],PARAMETER[\"false_easting\",18500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"2044\"]]"); - p = add_epsg_def (filter, first, last, 2045, "epsg", 2045, - "Hanoi 1972 / Gauss-Kruger zone 19"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Hanoi 1972 / Gauss-Kruger zone 19\",GEOGCS[\"Ha"); - add_srs_wkt (p, 1, - "noi 1972\",DATUM[\"Hanoi_1972\",SPHEROID[\"Krassowsky 19"); - add_srs_wkt (p, 2, - "40\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-17.51,-108.32,-62.39,0,0,0,0],AUTHORITY[\"EPSG\",\"614"); - add_srs_wkt (p, 4, - "7\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4147\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",111],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",1],PARAMETER[\"false_easting\",19500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"2045\"]]"); - p = add_epsg_def (filter, first, last, 2046, "epsg", 2046, - "Hartebeesthoek94 / Lo15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"Hartebeesthoek94 / Lo15\",GEOGCS[\"Hartebeestho"); - add_srs_wkt (p, 1, - "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); - add_srs_wkt (p, 2, - "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"2046\"]]"); - p = add_epsg_def (filter, first, last, 2047, "epsg", 2047, - "Hartebeesthoek94 / Lo17"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=17 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"Hartebeesthoek94 / Lo17\",GEOGCS[\"Hartebeestho"); - add_srs_wkt (p, 1, - "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); - add_srs_wkt (p, 2, - "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",17],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"2047\"]]"); - p = add_epsg_def (filter, first, last, 2048, "epsg", 2048, - "Hartebeesthoek94 / Lo19"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"Hartebeesthoek94 / Lo19\",GEOGCS[\"Hartebeestho"); - add_srs_wkt (p, 1, - "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); - add_srs_wkt (p, 2, - "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",19],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"2048\"]]"); - p = add_epsg_def (filter, first, last, 2049, "epsg", 2049, - "Hartebeesthoek94 / Lo21"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"Hartebeesthoek94 / Lo21\",GEOGCS[\"Hartebeestho"); - add_srs_wkt (p, 1, - "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); - add_srs_wkt (p, 2, - "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",21],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"2049\"]]"); - p = add_epsg_def (filter, first, last, 2050, "epsg", 2050, - "Hartebeesthoek94 / Lo23"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"Hartebeesthoek94 / Lo23\",GEOGCS[\"Hartebeestho"); - add_srs_wkt (p, 1, - "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); - add_srs_wkt (p, 2, - "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",23],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"2050\"]]"); - p = add_epsg_def (filter, first, last, 2051, "epsg", 2051, - "Hartebeesthoek94 / Lo25"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"Hartebeesthoek94 / Lo25\",GEOGCS[\"Hartebeestho"); - add_srs_wkt (p, 1, - "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); - add_srs_wkt (p, 2, - "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",25],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"2051\"]]"); - p = add_epsg_def (filter, first, last, 2052, "epsg", 2052, - "Hartebeesthoek94 / Lo27"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"Hartebeesthoek94 / Lo27\",GEOGCS[\"Hartebeestho"); - add_srs_wkt (p, 1, - "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); - add_srs_wkt (p, 2, - "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",27],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"2052\"]]"); - p = add_epsg_def (filter, first, last, 2053, "epsg", 2053, - "Hartebeesthoek94 / Lo29"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"Hartebeesthoek94 / Lo29\",GEOGCS[\"Hartebeestho"); - add_srs_wkt (p, 1, - "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); - add_srs_wkt (p, 2, - "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",29],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"2053\"]]"); - p = add_epsg_def (filter, first, last, 2054, "epsg", 2054, - "Hartebeesthoek94 / Lo31"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"Hartebeesthoek94 / Lo31\",GEOGCS[\"Hartebeestho"); - add_srs_wkt (p, 1, - "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); - add_srs_wkt (p, 2, - "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",31],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"2054\"]]"); - p = add_epsg_def (filter, first, last, 2055, "epsg", 2055, - "Hartebeesthoek94 / Lo33"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"Hartebeesthoek94 / Lo33\",GEOGCS[\"Hartebeestho"); - add_srs_wkt (p, 1, - "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); - add_srs_wkt (p, 2, - "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",33],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"2055\"]]"); - p = add_epsg_def (filter, first, last, 2056, "epsg", 2056, - "CH1903+ / LV95"); - add_proj4text (p, 0, - "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333"); - add_proj4text (p, 1, - "333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +t"); - add_proj4text (p, 2, - "owgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CH1903+ / LV95\",GEOGCS[\"CH1903+\",DATUM[\"CH1"); - add_srs_wkt (p, 1, - "903+\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[674.374,15.056,405"); - add_srs_wkt (p, 3, - ".346,0,0,0,0],AUTHORITY[\"EPSG\",\"6150\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 4, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4150\"]],PROJECTION[\"Hotine_Oblique_Merc"); - add_srs_wkt (p, 7, - "ator\"],PARAMETER[\"latitude_of_center\",46.952405555555"); - add_srs_wkt (p, 8, - "56],PARAMETER[\"longitude_of_center\",7.439583333333333]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"azimuth\",90],PARAMETER[\"rectified_grid_an"); - add_srs_wkt (p, 10, - "gle\",90],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_easting\",2600000],PARAMETER[\"false_northing\",120000"); - add_srs_wkt (p, 12, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 13, - "Y\",EAST],AXIS[\"X\",NORTH],AUTHORITY[\"EPSG\",\"2056\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 2057, "epsg", 2057, - "Rassadiran / Nakhl e Taqi"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=27.51882880555555 +lonc=52.6035391666"); - add_proj4text (p, 1, - "6667 +alpha=0.5716611944444444 +k=0.999895934 +x_0=65837"); - add_proj4text (p, 2, - "7.437 +y_0=3044969.194 +gamma=0.5716611944444444 +ellps="); - add_proj4text (p, 3, - "intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +units=m +n"); - add_proj4text (p, 4, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Rassadiran / Nakhl e Taqi\",GEOGCS[\"Rassadiran"); - add_srs_wkt (p, 1, - "\",DATUM[\"Rassadiran\",SPHEROID[\"International 1924\","); - add_srs_wkt (p, 2, - "6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-133.6"); - add_srs_wkt (p, 3, - "3,-157.5,-158.62,0,0,0,0],AUTHORITY[\"EPSG\",\"6153\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4153\"]],PROJECTION[\"Hotine_"); - add_srs_wkt (p, 7, - "Oblique_Mercator\"],PARAMETER[\"latitude_of_center\",27."); - add_srs_wkt (p, 8, - "51882880555555],PARAMETER[\"longitude_of_center\",52.603"); - add_srs_wkt (p, 9, - "53916666667],PARAMETER[\"azimuth\",0.5716611944444444],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"rectified_grid_angle\",0.5716611944444444],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"scale_factor\",0.999895934],PARAMETER[\"false_"); - add_srs_wkt (p, 12, - "easting\",658377.437],PARAMETER[\"false_northing\",30449"); - add_srs_wkt (p, 13, - "69.194],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 14, - "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); - add_srs_wkt (p, 15, - "[\"EPSG\",\"2057\"]]"); - p = add_epsg_def (filter, first, last, 2058, "epsg", 2058, - "ED50(ED77) / UTM zone 38N"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +ellps=intl +towgs84=-117,-132,-164,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50(ED77) / UTM zone 38N\",GEOGCS[\"ED50(ED77)"); - add_srs_wkt (p, 1, - "\",DATUM[\"European_Datum_1950_1977\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-117,-132,-164,0,0,0,0],AUTHORITY[\"EPSG\",\"615"); - add_srs_wkt (p, 4, - "4\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4154\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",45],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"2058\"]]"); - p = add_epsg_def (filter, first, last, 2059, "epsg", 2059, - "ED50(ED77) / UTM zone 39N"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=intl +towgs84=-117,-132,-164,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50(ED77) / UTM zone 39N\",GEOGCS[\"ED50(ED77)"); - add_srs_wkt (p, 1, - "\",DATUM[\"European_Datum_1950_1977\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-117,-132,-164,0,0,0,0],AUTHORITY[\"EPSG\",\"615"); - add_srs_wkt (p, 4, - "4\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4154\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",51],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"2059\"]]"); - p = add_epsg_def (filter, first, last, 2060, "epsg", 2060, - "ED50(ED77) / UTM zone 40N"); - add_proj4text (p, 0, - "+proj=utm +zone=40 +ellps=intl +towgs84=-117,-132,-164,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50(ED77) / UTM zone 40N\",GEOGCS[\"ED50(ED77)"); - add_srs_wkt (p, 1, - "\",DATUM[\"European_Datum_1950_1977\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-117,-132,-164,0,0,0,0],AUTHORITY[\"EPSG\",\"615"); - add_srs_wkt (p, 4, - "4\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4154\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",57],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"2060\"]]"); - p = add_epsg_def (filter, first, last, 2061, "epsg", 2061, - "ED50(ED77) / UTM zone 41N"); - add_proj4text (p, 0, - "+proj=utm +zone=41 +ellps=intl +towgs84=-117,-132,-164,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50(ED77) / UTM zone 41N\",GEOGCS[\"ED50(ED77)"); - add_srs_wkt (p, 1, - "\",DATUM[\"European_Datum_1950_1977\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-117,-132,-164,0,0,0,0],AUTHORITY[\"EPSG\",\"615"); - add_srs_wkt (p, 4, - "4\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4154\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",63],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"2061\"]]"); - p = add_epsg_def (filter, first, last, 2062, "epsg", 2062, - "Madrid 1870 (Madrid) / Spain"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40 +lat_0=40 +lon_0=0 +k_0=0.9988085293"); - add_proj4text (p, 1, - " +x_0=600000 +y_0=600000 +a=6378298.3 +b=6356657.1426695"); - add_proj4text (p, 2, - "62 +pm=madrid +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Madrid 1870 (Madrid) / Spain\",GEOGCS[\"Madrid "); - add_srs_wkt (p, 1, - "1870 (Madrid)\",DATUM[\"Madrid_1870_Madrid\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Struve 1860\",6378298.3,294.73,AUTHORITY[\"EPSG\",\"7028"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"6903\"]],PRIMEM[\"Madrid\",-3."); - add_srs_wkt (p, 4, - "687938888888889,AUTHORITY[\"EPSG\",\"8905\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4903\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",40],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",0],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9988085293],PARAMETER[\"false_easting\",600000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",600000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"2062\"]]"); - p = add_epsg_def (filter, first, last, 2063, "epsg", 2063, - "Dabola 1981 / UTM zone 28N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,"); - add_proj4text (p, 1, - "259,-9,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Dabola 1981 / UTM zone 28N (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"Conakry 1905\",DATUM[\"Conakry_1905\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1880 (IGN)\",6378249.2,293.4660212936269,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7011\"]],TOWGS84[-23,259,-9,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6315\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4315\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",-15],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",0.9996],PARAMETER[\"false_easting"); - add_srs_wkt (p, 10, - "\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2063\"]]"); - p = add_epsg_def (filter, first, last, 2064, "epsg", 2064, - "Dabola 1981 / UTM zone 29N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,"); - add_proj4text (p, 1, - "259,-9,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Dabola 1981 / UTM zone 29N (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"Conakry 1905\",DATUM[\"Conakry_1905\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1880 (IGN)\",6378249.2,293.4660212936269,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7011\"]],TOWGS84[-23,259,-9,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6315\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4315\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",-9],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); - add_srs_wkt (p, 12, - "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2064\"]]"); - p = add_epsg_def (filter, first, last, 2065, "epsg", 2065, - "S-JTSK (Ferro) / Krovak"); - add_proj4text (p, 0, - "+proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.288139722"); - add_proj4text (p, 1, - "22222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=589"); - add_proj4text (p, 2, - ",76,480,0,0,0,0 +pm=ferro +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"S-JTSK (Ferro) / Krovak\",GEOGCS[\"S-JTSK (Ferr"); - add_srs_wkt (p, 1, - "o)\",DATUM[\"System_Jednotne_Trigonometricke_Site_Katast"); - add_srs_wkt (p, 2, - "ralni_Ferro\",SPHEROID[\"Bessel 1841\",6377397.155,299.1"); - add_srs_wkt (p, 3, - "528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[589,76,480,"); - add_srs_wkt (p, 4, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6818\"]],PRIMEM[\"Ferro\","); - add_srs_wkt (p, 5, - "-17.66666666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\""); - add_srs_wkt (p, 6, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 7, - "],AUTHORITY[\"EPSG\",\"4818\"]],PROJECTION[\"Krovak\"],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"latitude_of_center\",49.5],PARAMETER[\"longit"); - add_srs_wkt (p, 9, - "ude_of_center\",42.5],PARAMETER[\"azimuth\",30.288139722"); - add_srs_wkt (p, 10, - "22222],PARAMETER[\"pseudo_standard_parallel_1\",78.5],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_easti"); - add_srs_wkt (p, 12, - "ng\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",SOUTH],AXIS[\""); - add_srs_wkt (p, 14, - "Y\",WEST],AUTHORITY[\"EPSG\",\"2065\"]]"); - p = add_epsg_def (filter, first, last, 2066, "epsg", 2066, - "Mount Dillon / Tobago Grid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=11.25217861111111 +lon_0=-60.686008888"); - add_proj4text (p, 1, - "88889 +x_0=37718.66159325 +y_0=36209.91512952 +a=6378293"); - add_proj4text (p, 2, - ".645208759 +b=6356617.987679838 +to_meter=0.201166195164"); - add_proj4text (p, 3, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mount Dillon / Tobago Grid\",GEOGCS[\"Mount Dil"); - add_srs_wkt (p, 1, - "lon\",DATUM[\"Mount_Dillon\",SPHEROID[\"Clarke 1858\",63"); - add_srs_wkt (p, 2, - "78293.645208759,294.2606763692654,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "007\"]],AUTHORITY[\"EPSG\",\"6157\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4157\"]],PROJECTION[\"Cassini_Soldner\"],PARAME"); - add_srs_wkt (p, 7, - "TER[\"latitude_of_origin\",11.25217861111111],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-60.68600888888889],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",187500],PARAMETER[\"false_northing\",180000"); - add_srs_wkt (p, 10, - "],UNIT[\"Clarke's link\",0.201166195164,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9039\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"2066\"]]"); - p = add_epsg_def (filter, first, last, 2067, "epsg", 2067, - "Naparima 1955 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=intl +towgs84=-0.465,372.095,1"); - add_proj4text (p, 1, - "71.736,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Naparima 1955 / UTM zone 20N\",GEOGCS[\"Naparim"); - add_srs_wkt (p, 1, - "a 1955\",DATUM[\"Naparima_1955\",SPHEROID[\"Internationa"); - add_srs_wkt (p, 2, - "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[-0.465,372.095,171.736,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6158\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4158\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",-63],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"2067\"]]"); - p = add_epsg_def (filter, first, last, 2068, "epsg", 2068, - "ELD79 / Libya zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9999 +x_0=200000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ELD79 / Libya zone 5\",GEOGCS[\"ELD79\",DATUM[\""); - add_srs_wkt (p, 1, - "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",9],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9999],PARAMETER[\"false_easting\",200000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"2068\"]]"); - p = add_epsg_def (filter, first, last, 2069, "epsg", 2069, - "ELD79 / Libya zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9999 +x_0=200000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ELD79 / Libya zone 6\",GEOGCS[\"ELD79\",DATUM[\""); - add_srs_wkt (p, 1, - "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",11],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9999],PARAMETER[\"false_easting\",200000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2069\"]]"); - p = add_epsg_def (filter, first, last, 2070, "epsg", 2070, - "ELD79 / Libya zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9999 +x_0=200000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ELD79 / Libya zone 7\",GEOGCS[\"ELD79\",DATUM[\""); - add_srs_wkt (p, 1, - "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",13],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9999],PARAMETER[\"false_easting\",200000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2070\"]]"); - p = add_epsg_def (filter, first, last, 2071, "epsg", 2071, - "ELD79 / Libya zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=200000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ELD79 / Libya zone 8\",GEOGCS[\"ELD79\",DATUM[\""); - add_srs_wkt (p, 1, - "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9999],PARAMETER[\"false_easting\",200000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2071\"]]"); - p = add_epsg_def (filter, first, last, 2072, "epsg", 2072, - "ELD79 / Libya zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9999 +x_0=200000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ELD79 / Libya zone 9\",GEOGCS[\"ELD79\",DATUM[\""); - add_srs_wkt (p, 1, - "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",17],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9999],PARAMETER[\"false_easting\",200000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2072\"]]"); - p = add_epsg_def (filter, first, last, 2073, "epsg", 2073, - "ELD79 / Libya zone 10"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9999 +x_0=200000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ELD79 / Libya zone 10\",GEOGCS[\"ELD79\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Libyan_Datum_1979\",SPHEROID[\"International "); - add_srs_wkt (p, 2, - "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",0],PARAMETER[\"central_meridian\",19],PARAMETER[\"sc"); - add_srs_wkt (p, 9, - "ale_factor\",0.9999],PARAMETER[\"false_easting\",200000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"2073\"]]"); - p = add_epsg_def (filter, first, last, 2074, "epsg", 2074, - "ELD79 / Libya zone 11"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=200000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ELD79 / Libya zone 11\",GEOGCS[\"ELD79\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Libyan_Datum_1979\",SPHEROID[\"International "); - add_srs_wkt (p, 2, - "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",0],PARAMETER[\"central_meridian\",21],PARAMETER[\"sc"); - add_srs_wkt (p, 9, - "ale_factor\",0.9999],PARAMETER[\"false_easting\",200000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"2074\"]]"); - p = add_epsg_def (filter, first, last, 2075, "epsg", 2075, - "ELD79 / Libya zone 12"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=23 +k=0.9999 +x_0=200000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ELD79 / Libya zone 12\",GEOGCS[\"ELD79\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Libyan_Datum_1979\",SPHEROID[\"International "); - add_srs_wkt (p, 2, - "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",0],PARAMETER[\"central_meridian\",23],PARAMETER[\"sc"); - add_srs_wkt (p, 9, - "ale_factor\",0.9999],PARAMETER[\"false_easting\",200000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"2075\"]]"); - p = add_epsg_def (filter, first, last, 2076, "epsg", 2076, - "ELD79 / Libya zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=25 +k=0.9999 +x_0=200000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ELD79 / Libya zone 13\",GEOGCS[\"ELD79\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Libyan_Datum_1979\",SPHEROID[\"International "); - add_srs_wkt (p, 2, - "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",0],PARAMETER[\"central_meridian\",25],PARAMETER[\"sc"); - add_srs_wkt (p, 9, - "ale_factor\",0.9999],PARAMETER[\"false_easting\",200000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"2076\"]]"); - p = add_epsg_def (filter, first, last, 2077, "epsg", 2077, - "ELD79 / UTM zone 32N"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +ellps=intl +towgs84=-115.854,-99.058"); - add_proj4text (p, 1, - "3,-152.462,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ELD79 / UTM zone 32N\",GEOGCS[\"ELD79\",DATUM[\""); - add_srs_wkt (p, 1, - "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",9],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"2077\"]]"); - p = add_epsg_def (filter, first, last, 2078, "epsg", 2078, - "ELD79 / UTM zone 33N"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +ellps=intl +towgs84=-115.854,-99.058"); - add_proj4text (p, 1, - "3,-152.462,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ELD79 / UTM zone 33N\",GEOGCS[\"ELD79\",DATUM[\""); - add_srs_wkt (p, 1, - "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"2078\"]]"); - p = add_epsg_def (filter, first, last, 2079, "epsg", 2079, - "ELD79 / UTM zone 34N"); - add_proj4text (p, 0, - "+proj=utm +zone=34 +ellps=intl +towgs84=-115.854,-99.058"); - add_proj4text (p, 1, - "3,-152.462,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ELD79 / UTM zone 34N\",GEOGCS[\"ELD79\",DATUM[\""); - add_srs_wkt (p, 1, - "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",21],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"2079\"]]"); - p = add_epsg_def (filter, first, last, 2080, "epsg", 2080, - "ELD79 / UTM zone 35N"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +ellps=intl +towgs84=-115.854,-99.058"); - add_proj4text (p, 1, - "3,-152.462,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ELD79 / UTM zone 35N\",GEOGCS[\"ELD79\",DATUM[\""); - add_srs_wkt (p, 1, - "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",27],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"2080\"]]"); - p = add_epsg_def (filter, first, last, 2081, "epsg", 2081, - "Chos Malal 1914 / Argentina 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=intl +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Chos Malal 1914 / Argentina 2\",GEOGCS[\"Chos M"); - add_srs_wkt (p, 1, - "alal 1914\",DATUM[\"Chos_Malal_1914\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6160\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4160\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",-90],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-69],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); - add_srs_wkt (p, 9, - "sting\",2500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2081\"]]"); - p = add_epsg_def (filter, first, last, 2082, "epsg", 2082, - "Pampa del Castillo / Argentina 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +units=m +"); - add_proj4text (p, 2, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pampa del Castillo / Argentina 2\",GEOGCS[\"Pam"); - add_srs_wkt (p, 1, - "pa del Castillo\",DATUM[\"Pampa_del_Castillo\",SPHEROID["); - add_srs_wkt (p, 2, - "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7022\"]],TOWGS84[27.5,14,186.4,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6161\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4161\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",-90],PARAMETER[\"central_meridian\",-69],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",250000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2082\"]]"); - p = add_epsg_def (filter, first, last, 2083, "epsg", 2083, - "Hito XVIII 1963 / Argentina 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=intl +towgs84=16,196,93,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Hito XVIII 1963 / Argentina 2\",GEOGCS[\"Hito X"); - add_srs_wkt (p, 1, - "VIII 1963\",DATUM[\"Hito_XVIII_1963\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[16,196,93,0,0,0,0],AUTHORITY[\"EPSG\",\"6254\"]]"); - add_srs_wkt (p, 4, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 5, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "22\"]],AUTHORITY[\"EPSG\",\"4254\"]],PROJECTION[\"Transv"); - add_srs_wkt (p, 7, - "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",1],PARAMETER[\"false_easting\",2500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"2083\"]]"); - p = add_epsg_def (filter, first, last, 2084, "epsg", 2084, - "Hito XVIII 1963 / UTM zone 19S"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +south +ellps=intl +towgs84=16,196,93"); - add_proj4text (p, 1, - ",0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Hito XVIII 1963 / UTM zone 19S\",GEOGCS[\"Hito "); - add_srs_wkt (p, 1, - "XVIII 1963\",DATUM[\"Hito_XVIII_1963\",SPHEROID[\"Intern"); - add_srs_wkt (p, 2, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[16,196,93,0,0,0,0],AUTHORITY[\"EPSG\",\"6254\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4254\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-69],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 12, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"2084\"]]"); - p = add_epsg_def (filter, first, last, 2085, "epsg", 2085, - "NAD27 / Cuba Norte (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=22.35 +lat_0=22.35 +lon_0=-81 +k_0=0.99"); - add_proj4text (p, 1, - "993602 +x_0=500000 +y_0=280296.016 +datum=NAD27 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Cuba Norte (deprecated)\",GEOGCS[\"NAD2"); - add_srs_wkt (p, 1, - "7\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clark"); - add_srs_wkt (p, 2, - "e 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Coni"); - add_srs_wkt (p, 7, - "c_1SP\"],PARAMETER[\"latitude_of_origin\",22.35],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-81],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "0.99993602],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",280296.016],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Y\",NORTH],AXIS[\"X\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"2085\"]]"); - p = add_epsg_def (filter, first, last, 2086, "epsg", 2086, - "NAD27 / Cuba Sur (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=20.71666666666667 +lat_0=20.71666666666"); - add_proj4text (p, 1, - "667 +lon_0=-76.83333333333333 +k_0=0.99994848 +x_0=50000"); - add_proj4text (p, 2, - "0 +y_0=229126.939 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Cuba Sur (deprecated)\",GEOGCS[\"NAD27\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1"); - add_srs_wkt (p, 2, - "866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_1"); - add_srs_wkt (p, 7, - "SP\"],PARAMETER[\"latitude_of_origin\",20.71666666666667"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",-76.83333333333333],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",0.99994848],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",500000],PARAMETER[\"false_northing\",229126.939]"); - add_srs_wkt (p, 11, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",NORTH],AXIS[\"X\",EAST],AUTHORITY[\"EPSG\",\"2086\"]]"); - p = add_epsg_def (filter, first, last, 2087, "epsg", 2087, - "ELD79 / TM 12 NE"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ELD79 / TM 12 NE\",GEOGCS[\"ELD79\",DATUM[\"Eur"); - add_srs_wkt (p, 1, - "opean_Libyan_Datum_1979\",SPHEROID[\"International 1924\""); - add_srs_wkt (p, 2, - ",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-115."); - add_srs_wkt (p, 3, - "854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\"6159"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",12],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"2087\"]]"); - p = add_epsg_def (filter, first, last, 2088, "epsg", 2088, - "Carthage / TM 11 NE"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9996 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=0 +datum=carthage +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Carthage / TM 11 NE\",GEOGCS[\"Carthage\",DATUM"); - add_srs_wkt (p, 1, - "[\"Carthage\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,2"); - add_srs_wkt (p, 2, - "93.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "263,6,431,0,0,0,0],AUTHORITY[\"EPSG\",\"6223\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4223\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",11],PARAMETER[\"scale_factor\",0.9996"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"2088\"]]"); - p = add_epsg_def (filter, first, last, 2089, "epsg", 2089, - "Yemen NGN96 / UTM zone 38N"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Yemen NGN96 / UTM zone 38N\",GEOGCS[\"Yemen NGN"); - add_srs_wkt (p, 1, - "96\",DATUM[\"Yemen_National_Geodetic_Network_1996\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6163\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4163\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",45],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"2089\"]]"); - p = add_epsg_def (filter, first, last, 2090, "epsg", 2090, - "Yemen NGN96 / UTM zone 39N"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Yemen NGN96 / UTM zone 39N\",GEOGCS[\"Yemen NGN"); - add_srs_wkt (p, 1, - "96\",DATUM[\"Yemen_National_Geodetic_Network_1996\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6163\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4163\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",51],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"2090\"]]"); - p = add_epsg_def (filter, first, last, 2091, "epsg", 2091, - "South Yemen / Gauss Kruger zone 8 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"South Yemen / Gauss Kruger zone 8 (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"South Yemen\",DATUM[\"South_Yemen\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[-76,-138,67,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6164\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4164\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",45],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",8500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"2091\"]]"); - p = add_epsg_def (filter, first, last, 2092, "epsg", 2092, - "South Yemen / Gauss Kruger zone 9 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"South Yemen / Gauss Kruger zone 9 (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"South Yemen\",DATUM[\"South_Yemen\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[-76,-138,67,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6164\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4164\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",51],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",9500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"2092\"]]"); - p = add_epsg_def (filter, first, last, 2093, "epsg", 2093, - "Hanoi 1972 / GK 106 NE"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=106 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +uni"); - add_proj4text (p, 2, - "ts=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Hanoi 1972 / GK 106 NE\",GEOGCS[\"Hanoi 1972\","); - add_srs_wkt (p, 1, - "DATUM[\"Hanoi_1972\",SPHEROID[\"Krassowsky 1940\",637824"); - add_srs_wkt (p, 2, - "5,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[-17.51,-10"); - add_srs_wkt (p, 3, - "8.32,-62.39,0,0,0,0],AUTHORITY[\"EPSG\",\"6147\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4147\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 7, - "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); - add_srs_wkt (p, 8, - "[\"central_meridian\",106],PARAMETER[\"scale_factor\",1]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"2093\"]]"); - p = add_epsg_def (filter, first, last, 2094, "epsg", 2094, - "WGS 72BE / TM 106 NE"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / TM 106 NE\",GEOGCS[\"WGS 72BE\",DATU"); - add_srs_wkt (p, 1, - "M[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",106],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"2094\"]]"); - p = add_epsg_def (filter, first, last, 2095, "epsg", 2095, - "Bissau / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=intl +towgs84=-173,253,27,0,0,"); - add_proj4text (p, 1, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Bissau / UTM zone 28N\",GEOGCS[\"Bissau\",DATUM"); - add_srs_wkt (p, 1, - "[\"Bissau\",SPHEROID[\"International 1924\",6378388,297,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-173,253,27,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6165\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4165\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 11, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"2095\"]]"); - p = add_epsg_def (filter, first, last, 2096, "epsg", 2096, - "Korean 1985 / East Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=5"); - add_proj4text (p, 1, - "00000 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korean 1985 / East Belt\",GEOGCS[\"Korean 1985\""); - add_srs_wkt (p, 1, - ",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel 1841\",63"); - add_srs_wkt (p, 2, - "77397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"416"); - add_srs_wkt (p, 6, - "2\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",38],PARAMETER[\"central_meridian\",12"); - add_srs_wkt (p, 8, - "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 9, - "ng\",200000],PARAMETER[\"false_northing\",500000],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2096\"]]"); - p = add_epsg_def (filter, first, last, 2097, "epsg", 2097, - "Korean 1985 / Central Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=5"); - add_proj4text (p, 1, - "00000 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korean 1985 / Central Belt\",GEOGCS[\"Korean 19"); - add_srs_wkt (p, 1, - "85\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel 1841\""); - add_srs_wkt (p, 2, - ",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4162\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",38],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 8, - "127],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 9, - "ting\",200000],PARAMETER[\"false_northing\",500000],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NO"); - add_srs_wkt (p, 11, - "RTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2097\"]]"); - p = add_epsg_def (filter, first, last, 2098, "epsg", 2098, - "Korean 1985 / West Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=5"); - add_proj4text (p, 1, - "00000 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korean 1985 / West Belt\",GEOGCS[\"Korean 1985\""); - add_srs_wkt (p, 1, - ",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel 1841\",63"); - add_srs_wkt (p, 2, - "77397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"416"); - add_srs_wkt (p, 6, - "2\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",38],PARAMETER[\"central_meridian\",12"); - add_srs_wkt (p, 8, - "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 9, - "ng\",200000],PARAMETER[\"false_northing\",500000],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2098\"]]"); - p = add_epsg_def (filter, first, last, 2099, "epsg", 2099, - "Qatar 1948 / Qatar Grid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=25.38236111111111 +lon_0=50.7613888888"); - add_proj4text (p, 1, - "8889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Qatar 1948 / Qatar Grid\",GEOGCS[\"Qatar 1948\""); - add_srs_wkt (p, 1, - ",DATUM[\"Qatar_1948\",SPHEROID[\"Helmert 1906\",6378200,"); - add_srs_wkt (p, 2, - "298.3,AUTHORITY[\"EPSG\",\"7020\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "6286\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 4, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4286\"]],PROJECTION["); - add_srs_wkt (p, 6, - "\"Cassini_Soldner\"],PARAMETER[\"latitude_of_origin\",25"); - add_srs_wkt (p, 7, - ".38236111111111],PARAMETER[\"central_meridian\",50.76138"); - add_srs_wkt (p, 8, - "888888889],PARAMETER[\"false_easting\",100000],PARAMETER"); - add_srs_wkt (p, 9, - "[\"false_northing\",100000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 10, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 11, - "\",NORTH],AUTHORITY[\"EPSG\",\"2099\"]]"); - p = add_epsg_def (filter, first, last, 2100, "epsg", 2100, - "GGRS87 / Greek Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=0 +datum=GGRS87 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GGRS87 / Greek Grid\",GEOGCS[\"GGRS87\",DATUM[\""); - add_srs_wkt (p, 1, - "Greek_Geodetic_Reference_System_1987\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[-199.87,74.79,246.62,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6121\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4121\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",24],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"2100\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_01.c b/src/spatialite/src/srsinit/epsg_inlined_01.c deleted file mode 100644 index e0bc615..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_01.c +++ /dev/null @@ -1,3572 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_01 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 2101, "epsg", 2101, - "Lake / Maracaibo Grid M1"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666"); - add_proj4text (p, 1, - "667 +lon_0=-71.60561777777777 +k_0=1 +x_0=0 +y_0=-52684."); - add_proj4text (p, 2, - "972 +ellps=intl +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Lake / Maracaibo Grid M1\",GEOGCS[\"Lake\",DATU"); - add_srs_wkt (p, 1, - "M[\"Lake\",SPHEROID[\"International 1924\",6378388,297,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\",\"6249\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4249\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 6, - "ert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 7, - "n\",10.16666666666667],PARAMETER[\"central_meridian\",-7"); - add_srs_wkt (p, 8, - "1.60561777777777],PARAMETER[\"scale_factor\",1],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"false_easting\",0],PARAMETER[\"false_northing\",-526"); - add_srs_wkt (p, 10, - "84.972],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 12, - "101\"]]"); - p = add_epsg_def (filter, first, last, 2102, "epsg", 2102, - "Lake / Maracaibo Grid"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666"); - add_proj4text (p, 1, - "667 +lon_0=-71.60561777777777 +k_0=1 +x_0=200000 +y_0=14"); - add_proj4text (p, 2, - "7315.028 +ellps=intl +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Lake / Maracaibo Grid\",GEOGCS[\"Lake\",DATUM[\""); - add_srs_wkt (p, 1, - "Lake\",SPHEROID[\"International 1924\",6378388,297,AUTHO"); - add_srs_wkt (p, 2, - "RITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\",\"6249\"]],P"); - add_srs_wkt (p, 3, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 4, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 5, - "\"]],AUTHORITY[\"EPSG\",\"4249\"]],PROJECTION[\"Lambert_"); - add_srs_wkt (p, 6, - "Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "10.16666666666667],PARAMETER[\"central_meridian\",-71.60"); - add_srs_wkt (p, 8, - "561777777777],PARAMETER[\"scale_factor\",1],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",200000],PARAMETER[\"false_northing\",147"); - add_srs_wkt (p, 10, - "315.028],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "2102\"]]"); - p = add_epsg_def (filter, first, last, 2103, "epsg", 2103, - "Lake / Maracaibo Grid M3"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666"); - add_proj4text (p, 1, - "667 +lon_0=-71.60561777777777 +k_0=1 +x_0=500000 +y_0=44"); - add_proj4text (p, 2, - "7315.028 +ellps=intl +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Lake / Maracaibo Grid M3\",GEOGCS[\"Lake\",DATU"); - add_srs_wkt (p, 1, - "M[\"Lake\",SPHEROID[\"International 1924\",6378388,297,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\",\"6249\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4249\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 6, - "ert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 7, - "n\",10.16666666666667],PARAMETER[\"central_meridian\",-7"); - add_srs_wkt (p, 8, - "1.60561777777777],PARAMETER[\"scale_factor\",1],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"false_easting\",500000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",447315.028],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"2103\"]]"); - p = add_epsg_def (filter, first, last, 2104, "epsg", 2104, - "Lake / Maracaibo La Rosa Grid"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666"); - add_proj4text (p, 1, - "667 +lon_0=-71.60561777777777 +k_0=1 +x_0=-17044 +y_0=-2"); - add_proj4text (p, 2, - "3139.97 +ellps=intl +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Lake / Maracaibo La Rosa Grid\",GEOGCS[\"Lake\""); - add_srs_wkt (p, 1, - ",DATUM[\"Lake\",SPHEROID[\"International 1924\",6378388,"); - add_srs_wkt (p, 2, - "297,AUTHORITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "249\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4249\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",10.16666666666667],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-71.60561777777777],PARAMETER[\"scale_factor\",1],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_easting\",-17044],PARAMETER[\"false_northin"); - add_srs_wkt (p, 10, - "g\",-23139.97],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"2104\"]]"); - p = add_epsg_def (filter, first, last, 2105, "epsg", 2105, - "NZGD2000 / Mount Eden 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-36.87972222222222 +lon_0=174.7641666"); - add_proj4text (p, 1, - "666667 +k=0.9999 +x_0=400000 +y_0=800000 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Mount Eden 2000\",GEOGCS[\"NZGD2000\""); - add_srs_wkt (p, 1, - ",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",-36.8"); - add_srs_wkt (p, 8, - "7972222222222],PARAMETER[\"central_meridian\",174.764166"); - add_srs_wkt (p, 9, - "6666667],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",400000],PARAMETER[\"false_northing\",800"); - add_srs_wkt (p, 11, - "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"2105\"]]"); - p = add_epsg_def (filter, first, last, 2106, "epsg", 2106, - "NZGD2000 / Bay of Plenty 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-37.76111111111111 +lon_0=176.4661111"); - add_proj4text (p, 1, - "111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Bay of Plenty 2000\",GEOGCS[\"NZGD20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"616"); - add_srs_wkt (p, 4, - "7\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); - add_srs_wkt (p, 8, - "37.76111111111111],PARAMETER[\"central_meridian\",176.46"); - add_srs_wkt (p, 9, - "61111111111],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",400000],PARAMETER[\"false_northing\",8000"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"2106\"]]"); - p = add_epsg_def (filter, first, last, 2107, "epsg", 2107, - "NZGD2000 / Poverty Bay 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-38.62444444444444 +lon_0=177.8855555"); - add_proj4text (p, 1, - "555556 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Poverty Bay 2000\",GEOGCS[\"NZGD2000"); - add_srs_wkt (p, 1, - "\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-38."); - add_srs_wkt (p, 8, - "62444444444444],PARAMETER[\"central_meridian\",177.88555"); - add_srs_wkt (p, 9, - "55555556],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",400000],PARAMETER[\"false_northing\",800000]"); - add_srs_wkt (p, 11, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"2107\"]]"); - p = add_epsg_def (filter, first, last, 2108, "epsg", 2108, - "NZGD2000 / Hawkes Bay 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-39.65083333333333 +lon_0=176.6736111"); - add_proj4text (p, 1, - "111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Hawkes Bay 2000\",GEOGCS[\"NZGD2000\""); - add_srs_wkt (p, 1, - ",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",-39.6"); - add_srs_wkt (p, 8, - "5083333333333],PARAMETER[\"central_meridian\",176.673611"); - add_srs_wkt (p, 9, - "1111111],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",400000],PARAMETER[\"false_northing\",800000],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2108\"]]"); - p = add_epsg_def (filter, first, last, 2109, "epsg", 2109, - "NZGD2000 / Taranaki 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-39.13555555555556 +lon_0=174.2277777"); - add_proj4text (p, 1, - "777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Taranaki 2000\",GEOGCS[\"NZGD2000\","); - add_srs_wkt (p, 1, - "DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",-39.135"); - add_srs_wkt (p, 8, - "55555555556],PARAMETER[\"central_meridian\",174.22777777"); - add_srs_wkt (p, 9, - "77778],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",400000],PARAMETER[\"false_northing\",800000],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"2109\"]]"); - p = add_epsg_def (filter, first, last, 2110, "epsg", 2110, - "NZGD2000 / Tuhirangi 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-39.51222222222222 +lon_0=175.64 +k=1"); - add_proj4text (p, 1, - " +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Tuhirangi 2000\",GEOGCS[\"NZGD2000\""); - add_srs_wkt (p, 1, - ",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",-39.5"); - add_srs_wkt (p, 8, - "1222222222222],PARAMETER[\"central_meridian\",175.64],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "400000],PARAMETER[\"false_northing\",800000],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NO"); - add_srs_wkt (p, 12, - "RTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"2110\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2111, "epsg", 2111, - "NZGD2000 / Wanganui 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-40.24194444444444 +lon_0=175.4880555"); - add_proj4text (p, 1, - "555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Wanganui 2000\",GEOGCS[\"NZGD2000\","); - add_srs_wkt (p, 1, - "DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",-40.241"); - add_srs_wkt (p, 8, - "94444444444],PARAMETER[\"central_meridian\",175.48805555"); - add_srs_wkt (p, 9, - "55555],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",400000],PARAMETER[\"false_northing\",800000],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"2111\"]]"); - p = add_epsg_def (filter, first, last, 2112, "epsg", 2112, - "NZGD2000 / Wairarapa 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-40.92527777777777 +lon_0=175.6472222"); - add_proj4text (p, 1, - "222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Wairarapa 2000\",GEOGCS[\"NZGD2000\""); - add_srs_wkt (p, 1, - ",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",-40.9"); - add_srs_wkt (p, 8, - "2527777777777],PARAMETER[\"central_meridian\",175.647222"); - add_srs_wkt (p, 9, - "2222222],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",400000],PARAMETER[\"false_northing\",800000],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2112\"]]"); - p = add_epsg_def (filter, first, last, 2113, "epsg", 2113, - "NZGD2000 / Wellington 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-41.3011111111111 +lon_0=174.77638888"); - add_proj4text (p, 1, - "88889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84"); - add_proj4text (p, 2, - "=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Wellington 2000\",GEOGCS[\"NZGD2000\""); - add_srs_wkt (p, 1, - ",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",-41.3"); - add_srs_wkt (p, 8, - "011111111111],PARAMETER[\"central_meridian\",174.7763888"); - add_srs_wkt (p, 9, - "888889],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",400000],PARAMETER[\"false_northing\",800000],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Nor"); - add_srs_wkt (p, 12, - "thing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2113\"]]"); - p = add_epsg_def (filter, first, last, 2114, "epsg", 2114, - "NZGD2000 / Collingwood 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-40.71472222222223 +lon_0=172.6719444"); - add_proj4text (p, 1, - "444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Collingwood 2000\",GEOGCS[\"NZGD2000"); - add_srs_wkt (p, 1, - "\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-40."); - add_srs_wkt (p, 8, - "71472222222223],PARAMETER[\"central_meridian\",172.67194"); - add_srs_wkt (p, 9, - "44444444],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",400000],PARAMETER[\"false_northing\",800000]"); - add_srs_wkt (p, 11, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"2114\"]]"); - p = add_epsg_def (filter, first, last, 2115, "epsg", 2115, - "NZGD2000 / Nelson 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-41.27444444444444 +lon_0=173.2991666"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Nelson 2000\",GEOGCS[\"NZGD2000\",DA"); - add_srs_wkt (p, 1, - "TUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",-41.2744"); - add_srs_wkt (p, 8, - "4444444444],PARAMETER[\"central_meridian\",173.299166666"); - add_srs_wkt (p, 9, - "6667],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",400000],PARAMETER[\"false_northing\",800000],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "2115\"]]"); - p = add_epsg_def (filter, first, last, 2116, "epsg", 2116, - "NZGD2000 / Karamea 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-41.28972222222222 +lon_0=172.1088888"); - add_proj4text (p, 1, - "888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Karamea 2000\",GEOGCS[\"NZGD2000\",D"); - add_srs_wkt (p, 1, - "ATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",-41.289"); - add_srs_wkt (p, 8, - "72222222222],PARAMETER[\"central_meridian\",172.10888888"); - add_srs_wkt (p, 9, - "88889],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",400000],PARAMETER[\"false_northing\",800000],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"2116\"]]"); - p = add_epsg_def (filter, first, last, 2117, "epsg", 2117, - "NZGD2000 / Buller 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-41.81055555555555 +lon_0=171.5811111"); - add_proj4text (p, 1, - "111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Buller 2000\",GEOGCS[\"NZGD2000\",DA"); - add_srs_wkt (p, 1, - "TUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",-41.8105"); - add_srs_wkt (p, 8, - "5555555555],PARAMETER[\"central_meridian\",171.581111111"); - add_srs_wkt (p, 9, - "1111],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",400000],PARAMETER[\"false_northing\",800000],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "2117\"]]"); - p = add_epsg_def (filter, first, last, 2118, "epsg", 2118, - "NZGD2000 / Grey 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-42.33361111111111 +lon_0=171.5497222"); - add_proj4text (p, 1, - "222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Grey 2000\",GEOGCS[\"NZGD2000\",DATU"); - add_srs_wkt (p, 1, - "M[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 198"); - add_srs_wkt (p, 2, - "0\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],PRI"); - add_srs_wkt (p, 4, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",-42.3336111"); - add_srs_wkt (p, 8, - "1111111],PARAMETER[\"central_meridian\",171.549722222222"); - add_srs_wkt (p, 9, - "2],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",400000],PARAMETER[\"false_northing\",800000],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"2118"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 2119, "epsg", 2119, - "NZGD2000 / Amuri 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-42.68888888888888 +lon_0=173.01 +k=1"); - add_proj4text (p, 1, - " +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Amuri 2000\",GEOGCS[\"NZGD2000\",DAT"); - add_srs_wkt (p, 1, - "UM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",-42.688888"); - add_srs_wkt (p, 8, - "88888888],PARAMETER[\"central_meridian\",173.01],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",40000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",800000],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"2119\"]]"); - p = add_epsg_def (filter, first, last, 2120, "epsg", 2120, - "NZGD2000 / Marlborough 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-41.54444444444444 +lon_0=173.8019444"); - add_proj4text (p, 1, - "444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Marlborough 2000\",GEOGCS[\"NZGD2000"); - add_srs_wkt (p, 1, - "\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-41."); - add_srs_wkt (p, 8, - "54444444444444],PARAMETER[\"central_meridian\",173.80194"); - add_srs_wkt (p, 9, - "44444444],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",400000],PARAMETER[\"false_northing\",800000]"); - add_srs_wkt (p, 11, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"2120\"]]"); - p = add_epsg_def (filter, first, last, 2121, "epsg", 2121, - "NZGD2000 / Hokitika 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-42.88611111111111 +lon_0=170.9797222"); - add_proj4text (p, 1, - "222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Hokitika 2000\",GEOGCS[\"NZGD2000\","); - add_srs_wkt (p, 1, - "DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",-42.886"); - add_srs_wkt (p, 8, - "11111111111],PARAMETER[\"central_meridian\",170.97972222"); - add_srs_wkt (p, 9, - "22222],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",400000],PARAMETER[\"false_northing\",800000],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"2121\"]]"); - p = add_epsg_def (filter, first, last, 2122, "epsg", 2122, - "NZGD2000 / Okarito 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-43.11 +lon_0=170.2608333333333 +k=1 "); - add_proj4text (p, 1, - "+x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Okarito 2000\",GEOGCS[\"NZGD2000\",D"); - add_srs_wkt (p, 1, - "ATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",-43.11]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",170.2608333333333],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",400"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",800000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"2122\"]]"); - p = add_epsg_def (filter, first, last, 2123, "epsg", 2123, - "NZGD2000 / Jacksons Bay 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-43.97777777777778 +lon_0=168.6061111"); - add_proj4text (p, 1, - "111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Jacksons Bay 2000\",GEOGCS[\"NZGD200"); - add_srs_wkt (p, 1, - "0\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-43."); - add_srs_wkt (p, 8, - "97777777777778],PARAMETER[\"central_meridian\",168.60611"); - add_srs_wkt (p, 9, - "11111111],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",400000],PARAMETER[\"false_northing\",800000]"); - add_srs_wkt (p, 11, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"2123\"]]"); - p = add_epsg_def (filter, first, last, 2124, "epsg", 2124, - "NZGD2000 / Mount Pleasant 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-43.59055555555556 +lon_0=172.7269444"); - add_proj4text (p, 1, - "444445 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Mount Pleasant 2000\",GEOGCS[\"NZGD2"); - add_srs_wkt (p, 1, - "000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"616"); - add_srs_wkt (p, 4, - "7\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); - add_srs_wkt (p, 8, - "43.59055555555556],PARAMETER[\"central_meridian\",172.72"); - add_srs_wkt (p, 9, - "69444444445],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",400000],PARAMETER[\"false_northing\",8000"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"2124\"]]"); - p = add_epsg_def (filter, first, last, 2125, "epsg", 2125, - "NZGD2000 / Gawler 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-43.74861111111111 +lon_0=171.3605555"); - add_proj4text (p, 1, - "555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Gawler 2000\",GEOGCS[\"NZGD2000\",DA"); - add_srs_wkt (p, 1, - "TUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",-43.7486"); - add_srs_wkt (p, 8, - "1111111111],PARAMETER[\"central_meridian\",171.360555555"); - add_srs_wkt (p, 9, - "5555],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",400000],PARAMETER[\"false_northing\",800000],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "2125\"]]"); - p = add_epsg_def (filter, first, last, 2126, "epsg", 2126, - "NZGD2000 / Timaru 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-44.40194444444445 +lon_0=171.0572222"); - add_proj4text (p, 1, - "222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Timaru 2000\",GEOGCS[\"NZGD2000\",DA"); - add_srs_wkt (p, 1, - "TUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",-44.4019"); - add_srs_wkt (p, 8, - "4444444445],PARAMETER[\"central_meridian\",171.057222222"); - add_srs_wkt (p, 9, - "2222],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",400000],PARAMETER[\"false_northing\",800000],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "2126\"]]"); - p = add_epsg_def (filter, first, last, 2127, "epsg", 2127, - "NZGD2000 / Lindis Peak 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-44.735 +lon_0=169.4675 +k=1 +x_0=400"); - add_proj4text (p, 1, - "000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +uni"); - add_proj4text (p, 2, - "ts=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Lindis Peak 2000\",GEOGCS[\"NZGD2000"); - add_srs_wkt (p, 1, - "\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-44."); - add_srs_wkt (p, 8, - "735],PARAMETER[\"central_meridian\",169.4675],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",400000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",800000],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"2127\"]]"); - p = add_epsg_def (filter, first, last, 2128, "epsg", 2128, - "NZGD2000 / Mount Nicholas 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-45.13277777777778 +lon_0=168.3986111"); - add_proj4text (p, 1, - "111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Mount Nicholas 2000\",GEOGCS[\"NZGD2"); - add_srs_wkt (p, 1, - "000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"616"); - add_srs_wkt (p, 4, - "7\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); - add_srs_wkt (p, 8, - "45.13277777777778],PARAMETER[\"central_meridian\",168.39"); - add_srs_wkt (p, 9, - "86111111111],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",400000],PARAMETER[\"false_northing\",8000"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"2128\"]]"); - p = add_epsg_def (filter, first, last, 2129, "epsg", 2129, - "NZGD2000 / Mount York 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-45.56361111111111 +lon_0=167.7386111"); - add_proj4text (p, 1, - "111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Mount York 2000\",GEOGCS[\"NZGD2000\""); - add_srs_wkt (p, 1, - ",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",-45.5"); - add_srs_wkt (p, 8, - "6361111111111],PARAMETER[\"central_meridian\",167.738611"); - add_srs_wkt (p, 9, - "1111111],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",400000],PARAMETER[\"false_northing\",800000],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2129\"]]"); - p = add_epsg_def (filter, first, last, 2130, "epsg", 2130, - "NZGD2000 / Observation Point 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-45.81611111111111 +lon_0=170.6283333"); - add_proj4text (p, 1, - "333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Observation Point 2000\",GEOGCS[\"NZ"); - add_srs_wkt (p, 1, - "GD2000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",-45.81611111111111],PARAMETER[\"central_meridian\",170."); - add_srs_wkt (p, 9, - "6283333333333],PARAMETER[\"scale_factor\",1],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",400000],PARAMETER[\"false_northing\",800"); - add_srs_wkt (p, 11, - "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"2130\"]]"); - p = add_epsg_def (filter, first, last, 2131, "epsg", 2131, - "NZGD2000 / North Taieri 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-45.86138888888889 +lon_0=170.2825 +k"); - add_proj4text (p, 1, - "=0.99996 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0"); - add_proj4text (p, 2, - ",0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / North Taieri 2000\",GEOGCS[\"NZGD200"); - add_srs_wkt (p, 1, - "0\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-45."); - add_srs_wkt (p, 8, - "86138888888889],PARAMETER[\"central_meridian\",170.2825]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.99996],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",400000],PARAMETER[\"false_northing\",800000],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"2131\"]]"); - p = add_epsg_def (filter, first, last, 2132, "epsg", 2132, - "NZGD2000 / Bluff 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-46.6 +lon_0=168.3427777777778 +k=1 +"); - add_proj4text (p, 1, - "x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Bluff 2000\",GEOGCS[\"NZGD2000\",DAT"); - add_srs_wkt (p, 1, - "UM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",-46.6],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",168.3427777777778],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",1],PARAMETER[\"false_easting\",400000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",800000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"2132\"]]"); - p = add_epsg_def (filter, first, last, 2133, "epsg", 2133, - "NZGD2000 / UTM zone 58S"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / UTM zone 58S\",GEOGCS[\"NZGD2000\",D"); - add_srs_wkt (p, 1, - "ATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",165],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"2133\"]]"); - p = add_epsg_def (filter, first, last, 2134, "epsg", 2134, - "NZGD2000 / UTM zone 59S"); - add_proj4text (p, 0, - "+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / UTM zone 59S\",GEOGCS[\"NZGD2000\",D"); - add_srs_wkt (p, 1, - "ATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",171],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"2134\"]]"); - p = add_epsg_def (filter, first, last, 2135, "epsg", 2135, - "NZGD2000 / UTM zone 60S"); - add_proj4text (p, 0, - "+proj=utm +zone=60 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / UTM zone 60S\",GEOGCS[\"NZGD2000\",D"); - add_srs_wkt (p, 1, - "ATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",177],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"2135\"]]"); - p = add_epsg_def (filter, first, last, 2136, "epsg", 2136, - "Accra / Ghana National Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.9997"); - add_proj4text (p, 1, - "5 +x_0=274319.7391633579 +y_0=0 +a=6378300 +b=6356751.68"); - add_proj4text (p, 2, - "9189189 +towgs84=-199,32,322,0,0,0,0 +to_meter=0.3047997"); - add_proj4text (p, 3, - "101815088 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Accra / Ghana National Grid\",GEOGCS[\"Accra\","); - add_srs_wkt (p, 1, - "DATUM[\"Accra\",SPHEROID[\"War Office\",6378300,296,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7029\"]],TOWGS84[-199,32,322,0,0,0,0],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6168\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4168\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",4.666666666666667],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-1],PARAMETER[\"scale_factor\",0.99975],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",900000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"Gold Coast foot\",0.3047997101815088,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9094\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2136\"]]"); - p = add_epsg_def (filter, first, last, 2137, "epsg", 2137, - "Accra / TM 1 NW"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-1 +k=0.9996 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322"); - add_proj4text (p, 2, - ",0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Accra / TM 1 NW\",GEOGCS[\"Accra\",DATUM[\"Accr"); - add_srs_wkt (p, 1, - "a\",SPHEROID[\"War Office\",6378300,296,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 2, - "\",\"7029\"]],TOWGS84[-199,32,322,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6168\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4168\"]],PRO"); - add_srs_wkt (p, 6, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 7, - "_origin\",0],PARAMETER[\"central_meridian\",-1],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 9, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 10, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); - add_srs_wkt (p, 11, - "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2137\"]]"); - p = add_epsg_def (filter, first, last, 2138, "epsg", 2138, - "NAD27(CGQ77) / Quebec Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_"); - add_proj4text (p, 1, - "0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27(CGQ77) / Quebec Lambert\",GEOGCS[\"NAD27("); - add_srs_wkt (p, 1, - "CGQ77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",60"); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_2\",46],PARAMETER[\"lati"); - add_srs_wkt (p, 9, - "tude_of_origin\",44],PARAMETER[\"central_meridian\",-68."); - add_srs_wkt (p, 10, - "5],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "2138\"]]"); - p = add_epsg_def (filter, first, last, 2139, "epsg", 2139, - "NAD83(CSRS98) / SCoPQ zone 2 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / SCoPQ zone 2 (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-55.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",304800],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2139\"]]"); - p = add_epsg_def (filter, first, last, 2140, "epsg", 2140, - "NAD83(CSRS98) / MTM zone 3 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / MTM zone 3 (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "58.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2140\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2141, "epsg", 2141, - "NAD83(CSRS98) / MTM zone 4 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / MTM zone 4 (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "61.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2141\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2142, "epsg", 2142, - "NAD83(CSRS98) / MTM zone 5 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / MTM zone 5 (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "64.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2142\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2143, "epsg", 2143, - "NAD83(CSRS98) / MTM zone 6 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / MTM zone 6 (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "67.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2143\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2144, "epsg", 2144, - "NAD83(CSRS98) / MTM zone 7 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / MTM zone 7 (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "70.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2144\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2145, "epsg", 2145, - "NAD83(CSRS98) / MTM zone 8 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / MTM zone 8 (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "73.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2145\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2146, "epsg", 2146, - "NAD83(CSRS98) / MTM zone 9 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / MTM zone 9 (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "76.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2146\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2147, "epsg", 2147, - "NAD83(CSRS98) / MTM zone 10 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / MTM zone 10 (deprecated)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "79.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2147\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2148, "epsg", 2148, - "NAD83(CSRS98) / UTM zone 21N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / UTM zone 21N (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "2148\"]]"); - p = add_epsg_def (filter, first, last, 2149, "epsg", 2149, - "NAD83(CSRS98) / UTM zone 18N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / UTM zone 18N (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "2149\"]]"); - p = add_epsg_def (filter, first, last, 2150, "epsg", 2150, - "NAD83(CSRS98) / UTM zone 17N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / UTM zone 17N (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "2150\"]]"); - p = add_epsg_def (filter, first, last, 2151, "epsg", 2151, - "NAD83(CSRS98) / UTM zone 13N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / UTM zone 13N (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); - add_srs_wkt (p, 12, - "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"2151\"]]"); - p = add_epsg_def (filter, first, last, 2152, "epsg", 2152, - "NAD83(CSRS98) / UTM zone 12N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / UTM zone 12N (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); - add_srs_wkt (p, 12, - "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"2152\"]]"); - p = add_epsg_def (filter, first, last, 2153, "epsg", 2153, - "NAD83(CSRS98) / UTM zone 11N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / UTM zone 11N (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); - add_srs_wkt (p, 12, - "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"2153\"]]"); - p = add_epsg_def (filter, first, last, 2154, "epsg", 2154, - "RGF93 / Lambert-93"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0="); - add_proj4text (p, 1, - "700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGF93 / Lambert-93\",GEOGCS[\"RGF93\",DATUM[\"R"); - add_srs_wkt (p, 1, - "eseau_Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6"); - add_srs_wkt (p, 2, - "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",49],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",44],PARAMETER[\"latitude_"); - add_srs_wkt (p, 9, - "of_origin\",46.5],PARAMETER[\"central_meridian\",3],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",700000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",6600000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"2154\"]]"); - p = add_epsg_def (filter, first, last, 2155, "epsg", 2155, - "American Samoa 1962 / American Samoa Lambert (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.266666666"); - add_proj4text (p, 1, - "66667 +lon_0=170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +e"); - add_proj4text (p, 2, - "llps=clrk66 +towgs84=-115,118,426,0,0,0,0 +units=us-ft +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"American Samoa 1962 / American Samoa Lambert (d"); - add_srs_wkt (p, 1, - "eprecated)\",GEOGCS[\"American Samoa 1962\",DATUM[\"Amer"); - add_srs_wkt (p, 2, - "ican_Samoa_1962\",SPHEROID[\"Clarke 1866\",6378206.4,294"); - add_srs_wkt (p, 3, - ".9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[-11"); - add_srs_wkt (p, 4, - "5,118,426,0,0,0,0],AUTHORITY[\"EPSG\",\"6169\"]],PRIMEM["); - add_srs_wkt (p, 5, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 6, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 7, - "UTHORITY[\"EPSG\",\"4169\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 8, - "mal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",-14.26"); - add_srs_wkt (p, 9, - "666666666667],PARAMETER[\"central_meridian\",170],PARAME"); - add_srs_wkt (p, 10, - "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",5000"); - add_srs_wkt (p, 11, - "00],PARAMETER[\"false_northing\",0],UNIT[\"US survey foo"); - add_srs_wkt (p, 12, - "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); - add_srs_wkt (p, 13, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"215"); - add_srs_wkt (p, 14, - "5\"]]"); - p = add_epsg_def (filter, first, last, 2156, "epsg", 2156, - "NAD83(HARN) / UTM zone 59S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / UTM zone 59S (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_"); - add_srs_wkt (p, 2, - "Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",171]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 12, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2156\"]]"); - p = add_epsg_def (filter, first, last, 2157, "epsg", 2157, - "IRENET95 / Irish Transverse Mercator"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=0.99982 +x_0=600000"); - add_proj4text (p, 1, - " +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IRENET95 / Irish Transverse Mercator\",GEOGCS[\""); - add_srs_wkt (p, 1, - "IRENET95\",DATUM[\"IRENET95\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6173\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4173\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",53.5],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",-8],PARAMETER[\"scale_factor\",0.99982"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",600000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",750000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"2157\"]]"); - p = add_epsg_def (filter, first, last, 2158, "epsg", 2158, - "IRENET95 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IRENET95 / UTM zone 29N\",GEOGCS[\"IRENET95\",D"); - add_srs_wkt (p, 1, - "ATUM[\"IRENET95\",SPHEROID[\"GRS 1980\",6378137,298.2572"); - add_srs_wkt (p, 2, - "22101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6173\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4173\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); - add_srs_wkt (p, 11, - "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"2158\"]]"); - p = add_epsg_def (filter, first, last, 2159, "epsg", 2159, - "Sierra Leone 1924 / New Colony Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_"); - add_proj4text (p, 1, - "0=152399.8550907544 +y_0=0 +a=6378300 +b=6356751.6891891"); - add_proj4text (p, 2, - "89 +to_meter=0.3047997101815088 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Sierra Leone 1924 / New Colony Grid\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Sierra Leone 1924\",DATUM[\"Sierra_Leone_Colony_1924\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"War Office\",6378300,296,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7029\"]],AUTHORITY[\"EPSG\",\"6174\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4174\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 7, - "RAMETER[\"latitude_of_origin\",6.666666666666667],PARAME"); - add_srs_wkt (p, 8, - "TER[\"central_meridian\",-12],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"Gold Coast foot\",0.3047997101815"); - add_srs_wkt (p, 11, - "088,AUTHORITY[\"EPSG\",\"9094\"]],AXIS[\"Easting\",EAST]"); - add_srs_wkt (p, 12, - ",AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2159\"]]"); - p = add_epsg_def (filter, first, last, 2160, "epsg", 2160, - "Sierra Leone 1924 / New War Office Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_"); - add_proj4text (p, 1, - "0=243839.7681452071 +y_0=182879.8261089053 +a=6378300 +b"); - add_proj4text (p, 2, - "=6356751.689189189 +to_meter=0.3047997101815088 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Sierra Leone 1924 / New War Office Grid\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"Sierra Leone 1924\",DATUM[\"Sierra_Leone_Colony_1924"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"War Office\",6378300,296,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7029\"]],AUTHORITY[\"EPSG\",\"6174\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4174\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",6.666666666666667],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-12],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",800000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",600000],UNIT[\"Gold Coast foot\",0.3047"); - add_srs_wkt (p, 11, - "997101815088,AUTHORITY[\"EPSG\",\"9094\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 12, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "2160\"]]"); - p = add_epsg_def (filter, first, last, 2161, "epsg", 2161, - "Sierra Leone 1968 / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=clrk80 +towgs84=-88,4,101,0,0,"); - add_proj4text (p, 1, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Sierra Leone 1968 / UTM zone 28N\",GEOGCS[\"Sie"); - add_srs_wkt (p, 1, - "rra Leone 1968\",DATUM[\"Sierra_Leone_1968\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7012\"]],TOWGS84[-88,4,101,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6175\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4175\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",-15],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2161\"]]"); - p = add_epsg_def (filter, first, last, 2162, "epsg", 2162, - "Sierra Leone 1968 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-88,4,101,0,0,"); - add_proj4text (p, 1, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Sierra Leone 1968 / UTM zone 29N\",GEOGCS[\"Sie"); - add_srs_wkt (p, 1, - "rra Leone 1968\",DATUM[\"Sierra_Leone_1968\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7012\"]],TOWGS84[-88,4,101,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6175\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4175\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",-9],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2162\"]]"); - p = add_epsg_def (filter, first, last, 2163, "epsg", 2163, - "US National Atlas Equal Area"); - add_proj4text (p, 0, - "+proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=637099"); - add_proj4text (p, 1, - "7 +b=6370997 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"US National Atlas Equal Area\",GEOGCS[\"Unspeci"); - add_srs_wkt (p, 1, - "fied datum based upon the Clarke 1866 Authalic Sphere\","); - add_srs_wkt (p, 2, - "DATUM[\"Not_specified_based_on_Clarke_1866_Authalic_Sphe"); - add_srs_wkt (p, 3, - "re\",SPHEROID[\"Clarke 1866 Authalic Sphere\",6370997,0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"7052\"]],AUTHORITY[\"EPSG\",\"6052\""); - add_srs_wkt (p, 5, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 6, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "9122\"]],AUTHORITY[\"EPSG\",\"4052\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 8, - "ert_Azimuthal_Equal_Area\"],PARAMETER[\"latitude_of_cent"); - add_srs_wkt (p, 9, - "er\",45],PARAMETER[\"longitude_of_center\",-100],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2163\"]]"); - p = add_epsg_def (filter, first, last, 2164, "epsg", 2164, - "Locodjo 1965 / TM 5 NW"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Locodjo 1965 / TM 5 NW\",GEOGCS[\"Locodjo 1965\""); - add_srs_wkt (p, 1, - ",DATUM[\"Locodjo_1965\",SPHEROID[\"Clarke 1880 (RGS)\",6"); - add_srs_wkt (p, 2, - "378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-125,53,467,0,0,0,0],AUTHORITY[\"EPSG\",\"6142\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4142\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",-5],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 9, - "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"2164\"]]"); - p = add_epsg_def (filter, first, last, 2165, "epsg", 2165, - "Abidjan 1987 / TM 5 NW"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +un"); - add_proj4text (p, 2, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Abidjan 1987 / TM 5 NW\",GEOGCS[\"Abidjan 1987\""); - add_srs_wkt (p, 1, - ",DATUM[\"Abidjan_1987\",SPHEROID[\"Clarke 1880 (RGS)\",6"); - add_srs_wkt (p, 2, - "378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-124.76,53,466.79,0,0,0,0],AUTHORITY[\"EPSG\",\"6143\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4143\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-5],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"2165\"]]"); - p = add_epsg_def (filter, first, last, 2166, "epsg", 2166, - "Pulkovo 1942(83) / Gauss Kruger zone 3 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(83) / Gauss Kruger zone 3 (depreca"); - add_srs_wkt (p, 1, - "ted)\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_"); - add_srs_wkt (p, 2, - "83\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",9],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",3500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2166\"]]"); - p = add_epsg_def (filter, first, last, 2167, "epsg", 2167, - "Pulkovo 1942(83) / Gauss Kruger zone 4 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(83) / Gauss Kruger zone 4 (depreca"); - add_srs_wkt (p, 1, - "ted)\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_"); - add_srs_wkt (p, 2, - "83\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",12],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",4500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2167\"]]"); - p = add_epsg_def (filter, first, last, 2168, "epsg", 2168, - "Pulkovo 1942(83) / Gauss Kruger zone 5 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(83) / Gauss Kruger zone 5 (depreca"); - add_srs_wkt (p, 1, - "ted)\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_"); - add_srs_wkt (p, 2, - "83\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",15],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",5500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2168\"]]"); - p = add_epsg_def (filter, first, last, 2169, "epsg", 2169, - "Luxembourg 1930 / Gauss"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=49.83333333333334 +lon_0=6.1666666666"); - add_proj4text (p, 1, - "66667 +k=1 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-"); - add_proj4text (p, 2, - "189.681,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0.459"); - add_proj4text (p, 3, - "8 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Luxembourg 1930 / Gauss\",GEOGCS[\"Luxembourg 1"); - add_srs_wkt (p, 1, - "930\",DATUM[\"Luxembourg_1930\",SPHEROID[\"International"); - add_srs_wkt (p, 2, - " 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[-189.681,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0."); - add_srs_wkt (p, 4, - "4598],AUTHORITY[\"EPSG\",\"6181\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4181\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"latitude_of_origin\",49.83333333333334],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"central_meridian\",6.166666666666667],PARAMETER[\"sc"); - add_srs_wkt (p, 10, - "ale_factor\",1],PARAMETER[\"false_easting\",80000],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_northing\",100000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST"); - add_srs_wkt (p, 13, - "],AUTHORITY[\"EPSG\",\"2169\"]]"); - p = add_epsg_def (filter, first, last, 2170, "epsg", 2170, - "MGI / Slovenia Grid (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=0 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Slovenia Grid (deprecated)\",GEOGCS[\"MGI"); - add_srs_wkt (p, 1, - "\",DATUM[\"Militar_Geographische_Institute\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137,1.474,5"); - add_srs_wkt (p, 4, - ".297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 5, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 6, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 7, - "TY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",15],PARAMETER[\"scale_factor\",0.9999],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 12, - "XIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 13, - "170\"]]"); - p = add_epsg_def (filter, first, last, 2171, "epsg", 2171, - "Pulkovo 1942(58) / Poland zone I (deprecated)"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0"); - add_proj4text (p, 1, - ".9998 +x_0=4637000 +y_0=5647000 +ellps=krass +towgs84=33"); - add_proj4text (p, 2, - ".4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / Poland zone I (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,"); - add_srs_wkt (p, 4, - "0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 5, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 6, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 7, - "TY[\"EPSG\",\"4179\"]],PROJECTION[\"Oblique_Stereographi"); - add_srs_wkt (p, 8, - "c\"],PARAMETER[\"latitude_of_origin\",50.625],PARAMETER["); - add_srs_wkt (p, 9, - "\"central_meridian\",21.08333333333333],PARAMETER[\"scal"); - add_srs_wkt (p, 10, - "e_factor\",0.9998],PARAMETER[\"false_easting\",4637000],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_northing\",5647000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 13, - ",EAST],AUTHORITY[\"EPSG\",\"2171\"]]"); - p = add_epsg_def (filter, first, last, 2172, "epsg", 2172, - "Pulkovo 1942(58) / Poland zone II"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=53.00194444444445 +lon_0=21.50277777"); - add_proj4text (p, 1, - "777778 +k=0.9998 +x_0=4603000 +y_0=5806000 +ellps=krass "); - add_proj4text (p, 2, - "+towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +un"); - add_proj4text (p, 3, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / Poland zone II\",GEOGCS[\"Pu"); - add_srs_wkt (p, 1, - "lkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID[\"Kr"); - add_srs_wkt (p, 2, - "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); - add_srs_wkt (p, 3, - "]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4179\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",53.00194444444445],PARAMETER[\"c"); - add_srs_wkt (p, 9, - "entral_meridian\",21.50277777777778],PARAMETER[\"scale_f"); - add_srs_wkt (p, 10, - "actor\",0.9998],PARAMETER[\"false_easting\",4603000],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_northing\",5806000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 13, - "AST],AUTHORITY[\"EPSG\",\"2172\"]]"); - p = add_epsg_def (filter, first, last, 2173, "epsg", 2173, - "Pulkovo 1942(58) / Poland zone III"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=53.58333333333334 +lon_0=17.00833333"); - add_proj4text (p, 1, - "333333 +k=0.9998 +x_0=3501000 +y_0=5999000 +ellps=krass "); - add_proj4text (p, 2, - "+towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +un"); - add_proj4text (p, 3, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / Poland zone III\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4179\"]],PROJECTION[\"Oblique_Stereographic\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",53.58333333333334],PARAMETER["); - add_srs_wkt (p, 9, - "\"central_meridian\",17.00833333333333],PARAMETER[\"scal"); - add_srs_wkt (p, 10, - "e_factor\",0.9998],PARAMETER[\"false_easting\",3501000],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_northing\",5999000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 13, - ",EAST],AUTHORITY[\"EPSG\",\"2173\"]]"); - p = add_epsg_def (filter, first, last, 2174, "epsg", 2174, - "Pulkovo 1942(58) / Poland zone IV"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=51.67083333333333 +lon_0=16.67222222"); - add_proj4text (p, 1, - "222222 +k=0.9998 +x_0=3703000 +y_0=5627000 +ellps=krass "); - add_proj4text (p, 2, - "+towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +un"); - add_proj4text (p, 3, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / Poland zone IV\",GEOGCS[\"Pu"); - add_srs_wkt (p, 1, - "lkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID[\"Kr"); - add_srs_wkt (p, 2, - "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); - add_srs_wkt (p, 3, - "]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4179\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",51.67083333333333],PARAMETER[\"c"); - add_srs_wkt (p, 9, - "entral_meridian\",16.67222222222222],PARAMETER[\"scale_f"); - add_srs_wkt (p, 10, - "actor\",0.9998],PARAMETER[\"false_easting\",3703000],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_northing\",5627000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 13, - "AST],AUTHORITY[\"EPSG\",\"2174\"]]"); - p = add_epsg_def (filter, first, last, 2175, "epsg", 2175, - "Pulkovo 1942(58) / Poland zone V"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18.95833333333333 +k=0.99998"); - add_proj4text (p, 1, - "3 +x_0=237000 +y_0=-4700000 +ellps=krass +towgs84=33.4,-"); - add_proj4text (p, 2, - "146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / Poland zone V\",GEOGCS[\"Pul"); - add_srs_wkt (p, 1, - "kovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID[\"Kra"); - add_srs_wkt (p, 2, - "ssowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); - add_srs_wkt (p, 3, - "]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4179\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "8.95833333333333],PARAMETER[\"scale_factor\",0.999983],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_easting\",237000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 11, - "thing\",-4700000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"2175\"]]"); - p = add_epsg_def (filter, first, last, 2176, "epsg", 2176, - "ETRS89 / Poland CS2000 zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.999923 +x_0=5500000 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / Poland CS2000 zone 5\",GEOGCS[\"ETRS89"); - add_srs_wkt (p, 1, - "\",DATUM[\"European_Terrestrial_Reference_System_1989\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",15],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.999923],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"x\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "y\",EAST],AUTHORITY[\"EPSG\",\"2176\"]]"); - p = add_epsg_def (filter, first, last, 2177, "epsg", 2177, - "ETRS89 / Poland CS2000 zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.999923 +x_0=6500000 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / Poland CS2000 zone 6\",GEOGCS[\"ETRS89"); - add_srs_wkt (p, 1, - "\",DATUM[\"European_Terrestrial_Reference_System_1989\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",18],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.999923],PARAMETER[\"false_easting\",6"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"x\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "y\",EAST],AUTHORITY[\"EPSG\",\"2177\"]]"); - p = add_epsg_def (filter, first, last, 2178, "epsg", 2178, - "ETRS89 / Poland CS2000 zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.999923 +x_0=7500000 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / Poland CS2000 zone 7\",GEOGCS[\"ETRS89"); - add_srs_wkt (p, 1, - "\",DATUM[\"European_Terrestrial_Reference_System_1989\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",21],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.999923],PARAMETER[\"false_easting\",7"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"x\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "y\",EAST],AUTHORITY[\"EPSG\",\"2178\"]]"); - p = add_epsg_def (filter, first, last, 2179, "epsg", 2179, - "ETRS89 / Poland CS2000 zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.999923 +x_0=8500000 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / Poland CS2000 zone 8\",GEOGCS[\"ETRS89"); - add_srs_wkt (p, 1, - "\",DATUM[\"European_Terrestrial_Reference_System_1989\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",24],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.999923],PARAMETER[\"false_easting\",8"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"x\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "y\",EAST],AUTHORITY[\"EPSG\",\"2179\"]]"); - p = add_epsg_def (filter, first, last, 2180, "epsg", 2180, - "ETRS89 / Poland CS92"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9993 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=-5300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / Poland CS92\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",19],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9993],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",-5300000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"x\",NORTH],AXIS[\"y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2180\"]]"); - p = add_epsg_def (filter, first, last, 2188, "epsg", 2188, - "Azores Occidental 1939 / UTM zone 25N"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +ellps=intl +towgs84=-425,-169,81,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Azores Occidental 1939 / UTM zone 25N\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Azores Occidental 1939\",DATUM[\"Azores_Occidental_Isl"); - add_srs_wkt (p, 2, - "ands_1939\",SPHEROID[\"International 1924\",6378388,297,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-425,-169,81,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6182\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4182\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 12, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2188\"]]"); - p = add_epsg_def (filter, first, last, 2189, "epsg", 2189, - "Azores Central 1948 / UTM zone 26N"); - add_proj4text (p, 0, - "+proj=utm +zone=26 +ellps=intl +towgs84=-104,167,-38,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Azores Central 1948 / UTM zone 26N\",GEOGCS[\"A"); - add_srs_wkt (p, 1, - "zores Central 1948\",DATUM[\"Azores_Central_Islands_1948"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7022\"]],TOWGS84[-104,167,-38,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6183\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4183"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",-27]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2189"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 2190, "epsg", 2190, - "Azores Oriental 1940 / UTM zone 26N"); - add_proj4text (p, 0, - "+proj=utm +zone=26 +ellps=intl +towgs84=-203,141,53,0,0,"); - add_proj4text (p, 1, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Azores Oriental 1940 / UTM zone 26N\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Azores Oriental 1940\",DATUM[\"Azores_Oriental_Islands_1"); - add_srs_wkt (p, 2, - "940\",SPHEROID[\"International 1924\",6378388,297,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7022\"]],TOWGS84[-203,141,53,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6184\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); - add_srs_wkt (p, 7, - "84\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-2"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"219"); - add_srs_wkt (p, 13, - "0\"]]"); - p = add_epsg_def (filter, first, last, 2191, "epsg", 2191, - "Madeira 1936 / UTM zone 28N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=intl +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Madeira 1936 / UTM zone 28N (deprecated)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Madeira 1936\",DATUM[\"Madeira_1936\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"6185\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4185\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",-15],PARAMETER[\"scale_factor\",0.9996],PARAMETER["); - add_srs_wkt (p, 9, - "\"false_easting\",500000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"2191\"]]"); - p = add_epsg_def (filter, first, last, 2192, "epsg", 2192, - "ED50 / France EuroLambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.3372291666666"); - add_proj4text (p, 1, - "67 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +ellps=intl "); - add_proj4text (p, 2, - "+towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / France EuroLambert\",GEOGCS[\"ED50\",DAT"); - add_srs_wkt (p, 1, - "UM[\"European_Datum_1950\",SPHEROID[\"International 1924"); - add_srs_wkt (p, 2, - "\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87"); - add_srs_wkt (p, 3, - ",-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",46.8],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",2.337229166666667],PARAME"); - add_srs_wkt (p, 9, - "TER[\"scale_factor\",0.99987742],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",600000],PARAMETER[\"false_northing\",2200000],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); - add_srs_wkt (p, 12, - "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2192\"]]"); - p = add_epsg_def (filter, first, last, 2193, "epsg", 2193, - "NZGD2000 / New Zealand Transverse Mercator 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +"); - add_proj4text (p, 1, - "y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / New Zealand Transverse Mercator 2000"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"NZGD2000\",DATUM[\"New_Zealand_Geodetic_Datu"); - add_srs_wkt (p, 2, - "m_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",173],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",1600000],PARAMETER[\"false_northing\",10000000],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"2193\"]]"); - p = add_epsg_def (filter, first, last, 2194, "epsg", 2194, - "American Samoa 1962 / American Samoa Lambert (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.266666666"); - add_proj4text (p, 1, - "66667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +"); - add_proj4text (p, 2, - "ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +units=us-ft "); - add_proj4text (p, 3, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"American Samoa 1962 / American Samoa Lambert (d"); - add_srs_wkt (p, 1, - "eprecated)\",GEOGCS[\"American Samoa 1962\",DATUM[\"Amer"); - add_srs_wkt (p, 2, - "ican_Samoa_1962\",SPHEROID[\"Clarke 1866\",6378206.4,294"); - add_srs_wkt (p, 3, - ".9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[-11"); - add_srs_wkt (p, 4, - "5,118,426,0,0,0,0],AUTHORITY[\"EPSG\",\"6169\"]],PRIMEM["); - add_srs_wkt (p, 5, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 6, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 7, - "UTHORITY[\"EPSG\",\"4169\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 8, - "mal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",-14.26"); - add_srs_wkt (p, 9, - "666666666667],PARAMETER[\"central_meridian\",-170],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 11, - "000],PARAMETER[\"false_northing\",0],UNIT[\"US survey fo"); - add_srs_wkt (p, 12, - "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); - add_srs_wkt (p, 13, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"21"); - add_srs_wkt (p, 14, - "94\"]]"); - p = add_epsg_def (filter, first, last, 2195, "epsg", 2195, - "NAD83(HARN) / UTM zone 2S"); - add_proj4text (p, 0, - "+proj=utm +zone=2 +south +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / UTM zone 2S\",GEOGCS[\"NAD83(HARN"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",0],PARAMETER[\"central_meridian\",-171],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2195\"]]"); - p = add_epsg_def (filter, first, last, 2196, "epsg", 2196, - "ETRS89 / Kp2000 Jutland"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.99995 +x_0=200000 +"); - add_proj4text (p, 1, - "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / Kp2000 Jutland\",GEOGCS[\"ETRS89\",DAT"); - add_srs_wkt (p, 1, - "UM[\"European_Terrestrial_Reference_System_1989\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",9.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.99995],PARAMETER[\"false_easting\",200000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 12, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"2196\"]]"); - p = add_epsg_def (filter, first, last, 2197, "epsg", 2197, - "ETRS89 / Kp2000 Zealand"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.99995 +x_0=500000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / Kp2000 Zealand\",GEOGCS[\"ETRS89\",DAT"); - add_srs_wkt (p, 1, - "UM[\"European_Terrestrial_Reference_System_1989\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",12],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.99995],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"2197\"]]"); - p = add_epsg_def (filter, first, last, 2198, "epsg", 2198, - "ETRS89 / Kp2000 Bornholm"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=900000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / Kp2000 Bornholm\",GEOGCS[\"ETRS89\",DA"); - add_srs_wkt (p, 1, - "TUM[\"European_Terrestrial_Reference_System_1989\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",900000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"2198\"]]"); - p = add_epsg_def (filter, first, last, 2199, "epsg", 2199, - "Albanian 1987 / Gauss Kruger zone 4 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Albanian 1987 / Gauss Kruger zone 4 (deprecated"); - add_srs_wkt (p, 1, - ")\",GEOGCS[\"Albanian 1987\",DATUM[\"Albanian_1987\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7024\"]],AUTHORITY[\"EPSG\",\"6191\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 4, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4191\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",21],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_easting\",4500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 10, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 11, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"219"); - add_srs_wkt (p, 12, - "9\"]]"); - p = add_epsg_def (filter, first, last, 2200, "epsg", 2200, - "ATS77 / New Brunswick Stereographic (ATS77)"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=3"); - add_proj4text (p, 1, - "00000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ATS77 / New Brunswick Stereographic (ATS77)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"ATS77\",DATUM[\"Average_Terrestrial_System_1977\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Average Terrestrial System 1977\",6378135,29"); - add_srs_wkt (p, 3, - "8.257,AUTHORITY[\"EPSG\",\"7041\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6122\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4122\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Oblique_Stereographic\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",46.5],PARAMETER[\"central_meridian\",-66.5],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",0.999912],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",300000],PARAMETER[\"false_northing\",800000],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"2200\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 2201, "epsg", 2201, - "REGVEN / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"REGVEN / UTM zone 18N\",GEOGCS[\"REGVEN\",DATUM"); - add_srs_wkt (p, 1, - "[\"Red_Geodesica_Venezolana\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6189\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4189\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-75],PARAMETER[\"scale_factor\",0.9996],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"2201\"]]"); - p = add_epsg_def (filter, first, last, 2202, "epsg", 2202, - "REGVEN / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"REGVEN / UTM zone 19N\",GEOGCS[\"REGVEN\",DATUM"); - add_srs_wkt (p, 1, - "[\"Red_Geodesica_Venezolana\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6189\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4189\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-69],PARAMETER[\"scale_factor\",0.9996],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"2202\"]]"); - p = add_epsg_def (filter, first, last, 2203, "epsg", 2203, - "REGVEN / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"REGVEN / UTM zone 20N\",GEOGCS[\"REGVEN\",DATUM"); - add_srs_wkt (p, 1, - "[\"Red_Geodesica_Venezolana\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6189\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4189\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-63],PARAMETER[\"scale_factor\",0.9996],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"2203\"]]"); - p = add_epsg_def (filter, first, last, 2204, "epsg", 2204, - "NAD27 / Tennessee"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=3"); - add_proj4text (p, 1, - "4.66666666666666 +lon_0=-86 +x_0=609601.2192024384 +y_0="); - add_proj4text (p, 2, - "30480.06096012192 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Tennessee\",GEOGCS[\"NAD27\",DATUM[\"No"); - add_srs_wkt (p, 1, - "rth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",63782"); - add_srs_wkt (p, 2, - "06.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 5, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 6, - "67\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"standard_parallel_1\",35.25],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_2\",36.41666666666666],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 9, - "_origin\",34.66666666666666],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 10, - "n\",-86],PARAMETER[\"false_easting\",2000000],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_northing\",100000],UNIT[\"US survey foot\",0.304"); - add_srs_wkt (p, 12, - "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 13, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2204\"]]"); - p = add_epsg_def (filter, first, last, 2205, "epsg", 2205, - "NAD83 / Kentucky North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); - add_proj4text (p, 1, - "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +datum="); - add_proj4text (p, 2, - "NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Kentucky North\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37.96666"); - add_srs_wkt (p, 8, - "666666667],PARAMETER[\"standard_parallel_2\",38.96666666"); - add_srs_wkt (p, 9, - "666667],PARAMETER[\"latitude_of_origin\",37.5],PARAMETER"); - add_srs_wkt (p, 10, - "[\"central_meridian\",-84.25],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 12, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"2205\"]]"); - p = add_epsg_def (filter, first, last, 2206, "epsg", 2206, - "ED50 / 3-degree Gauss-Kruger zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / 3-degree Gauss-Kruger zone 9\",GEOGCS[\""); - add_srs_wkt (p, 1, - "ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",27],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",9500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"2206\"]]"); - p = add_epsg_def (filter, first, last, 2207, "epsg", 2207, - "ED50 / 3-degree Gauss-Kruger zone 10"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / 3-degree Gauss-Kruger zone 10\",GEOGCS[\""); - add_srs_wkt (p, 1, - "ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",30],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",10500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"2207\"]]"); - p = add_epsg_def (filter, first, last, 2208, "epsg", 2208, - "ED50 / 3-degree Gauss-Kruger zone 11"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / 3-degree Gauss-Kruger zone 11\",GEOGCS[\""); - add_srs_wkt (p, 1, - "ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",33],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",11500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"2208\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_02.c b/src/spatialite/src/srsinit/epsg_inlined_02.c deleted file mode 100644 index 6d65a9f..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_02.c +++ /dev/null @@ -1,3680 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_02 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 2209, "epsg", 2209, - "ED50 / 3-degree Gauss-Kruger zone 12"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / 3-degree Gauss-Kruger zone 12\",GEOGCS[\""); - add_srs_wkt (p, 1, - "ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",36],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",12500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"2209\"]]"); - p = add_epsg_def (filter, first, last, 2210, "epsg", 2210, - "ED50 / 3-degree Gauss-Kruger zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / 3-degree Gauss-Kruger zone 13\",GEOGCS[\""); - add_srs_wkt (p, 1, - "ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",39],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",13500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"2210\"]]"); - p = add_epsg_def (filter, first, last, 2211, "epsg", 2211, - "ED50 / 3-degree Gauss-Kruger zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / 3-degree Gauss-Kruger zone 14\",GEOGCS[\""); - add_srs_wkt (p, 1, - "ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",42],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",14500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"2211\"]]"); - p = add_epsg_def (filter, first, last, 2212, "epsg", 2212, - "ED50 / 3-degree Gauss-Kruger zone 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / 3-degree Gauss-Kruger zone 15\",GEOGCS[\""); - add_srs_wkt (p, 1, - "ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",45],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",15500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"2212\"]]"); - p = add_epsg_def (filter, first, last, 2213, "epsg", 2213, - "ETRS89 / TM 30 NE"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9996 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM 30 NE\",GEOGCS[\"ETRS89\",DATUM[\"E"); - add_srs_wkt (p, 1, - "uropean_Terrestrial_Reference_System_1989\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",30],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"2213\"]]"); - p = add_epsg_def (filter, first, last, 2214, "epsg", 2214, - "Douala 1948 / AOF west (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +"); - add_proj4text (p, 1, - "y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Douala 1948 / AOF west (deprecated)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Douala 1948\",DATUM[\"Douala_1948\",SPHEROID[\"Internati"); - add_srs_wkt (p, 2, - "onal 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[-206.1,-174.7,-87.7,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6192\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4192\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",10.5],PARAMETER[\"sca"); - add_srs_wkt (p, 9, - "le_factor\",0.999],PARAMETER[\"false_easting\",1000000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",1000000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2214\"]]"); - p = add_epsg_def (filter, first, last, 2215, "epsg", 2215, - "Manoca 1962 / UTM zone 32N"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-70."); - add_proj4text (p, 1, - "9,-151.8,-41.4,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Manoca 1962 / UTM zone 32N\",GEOGCS[\"Manoca 19"); - add_srs_wkt (p, 1, - "62\",DATUM[\"Manoca_1962\",SPHEROID[\"Clarke 1880 (IGN)\""); - add_srs_wkt (p, 2, - ",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-70.9,-151.8,-41.4,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6193\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4193\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\"sc"); - add_srs_wkt (p, 9, - "ale_factor\",0.9996],PARAMETER[\"false_easting\",500000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"2215\"]]"); - p = add_epsg_def (filter, first, last, 2216, "epsg", 2216, - "Qornoq 1927 / UTM zone 22N"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +ellps=intl +towgs84=164,138,-189,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Qornoq 1927 / UTM zone 22N\",GEOGCS[\"Qornoq 19"); - add_srs_wkt (p, 1, - "27\",DATUM[\"Qornoq_1927\",SPHEROID[\"International 1924"); - add_srs_wkt (p, 2, - "\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[164"); - add_srs_wkt (p, 3, - ",138,-189,0,0,0,0],AUTHORITY[\"EPSG\",\"6194\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4194\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-51],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"2216\"]]"); - p = add_epsg_def (filter, first, last, 2217, "epsg", 2217, - "Qornoq 1927 / UTM zone 23N"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +ellps=intl +towgs84=164,138,-189,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Qornoq 1927 / UTM zone 23N\",GEOGCS[\"Qornoq 19"); - add_srs_wkt (p, 1, - "27\",DATUM[\"Qornoq_1927\",SPHEROID[\"International 1924"); - add_srs_wkt (p, 2, - "\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[164"); - add_srs_wkt (p, 3, - ",138,-189,0,0,0,0],AUTHORITY[\"EPSG\",\"6194\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4194\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-45],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"2217\"]]"); - p = add_epsg_def (filter, first, last, 2219, "epsg", 2219, - "ATS77 / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +a=6378135 +b=6356750.304921594 +unit"); - add_proj4text (p, 1, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ATS77 / UTM zone 19N\",GEOGCS[\"ATS77\",DATUM[\""); - add_srs_wkt (p, 1, - "Average_Terrestrial_System_1977\",SPHEROID[\"Average Ter"); - add_srs_wkt (p, 2, - "restrial System 1977\",6378135,298.257,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7041\"]],AUTHORITY[\"EPSG\",\"6122\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4122\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-69],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"2219\"]]"); - p = add_epsg_def (filter, first, last, 2220, "epsg", 2220, - "ATS77 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +a=6378135 +b=6356750.304921594 +unit"); - add_proj4text (p, 1, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ATS77 / UTM zone 20N\",GEOGCS[\"ATS77\",DATUM[\""); - add_srs_wkt (p, 1, - "Average_Terrestrial_System_1977\",SPHEROID[\"Average Ter"); - add_srs_wkt (p, 2, - "restrial System 1977\",6378135,298.257,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7041\"]],AUTHORITY[\"EPSG\",\"6122\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4122\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-63],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"2220\"]]"); - p = add_epsg_def (filter, first, last, 2222, "epsg", 2222, - "NAD83 / Arizona East (ft)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=213360 +y_0=0 +datum=NAD83 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Arizona East (ft)\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",31],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-110.1666666666667],PARAMETER[\"sca"); - add_srs_wkt (p, 9, - "le_factor\",0.9999],PARAMETER[\"false_easting\",700000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"2222\"]]"); - p = add_epsg_def (filter, first, last, 2223, "epsg", 2223, - "NAD83 / Arizona Central (ft)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=213360 +y_0=0 +datum=NAD83 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Arizona Central (ft)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",31],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-111.9166666666667],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",70000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"2223\"]]"); - p = add_epsg_def (filter, first, last, 2224, "epsg", 2224, - "NAD83 / Arizona West (ft)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); - add_proj4text (p, 1, - "=213360 +y_0=0 +datum=NAD83 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Arizona West (ft)\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",31],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-113.75],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.999933333],PARAMETER[\"false_easting\",700000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2224\"]]"); - p = add_epsg_def (filter, first, last, 2225, "epsg", 2225, - "NAD83 / California zone 1 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); - add_proj4text (p, 1, - "3333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=5000"); - add_proj4text (p, 2, - "00.0001016001 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / California zone 1 (ftUS)\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",41.66666666666666],PARAMETER[\"standard_parallel_2\",40"); - add_srs_wkt (p, 9, - "],PARAMETER[\"latitude_of_origin\",39.33333333333334],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"central_meridian\",-122],PARAMETER[\"false_eas"); - add_srs_wkt (p, 11, - "ting\",6561666.667],PARAMETER[\"false_northing\",1640416"); - add_srs_wkt (p, 12, - ".667],UNIT[\"US survey foot\",0.3048006096012192,AUTHORI"); - add_srs_wkt (p, 13, - "TY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 14, - "],AUTHORITY[\"EPSG\",\"2225\"]]"); - p = add_epsg_def (filter, first, last, 2226, "epsg", 2226, - "NAD83 / California zone 2 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); - add_proj4text (p, 1, - "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.00"); - add_proj4text (p, 2, - "01016 +y_0=500000.0001016001 +datum=NAD83 +units=us-ft +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / California zone 2 (ftUS)\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",39.83333333333334],PARAMETER[\"standard_parallel_2\",38"); - add_srs_wkt (p, 9, - ".33333333333334],PARAMETER[\"latitude_of_origin\",37.666"); - add_srs_wkt (p, 10, - "66666666666],PARAMETER[\"central_meridian\",-122],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_easting\",6561666.667],PARAMETER[\"false_nor"); - add_srs_wkt (p, 12, - "thing\",1640416.667],UNIT[\"US survey foot\",0.304800609"); - add_srs_wkt (p, 13, - "6012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 14, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2226\"]]"); - p = add_epsg_def (filter, first, last, 2227, "epsg", 2227, - "NAD83 / California zone 3 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0="); - add_proj4text (p, 2, - "500000.0001016001 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / California zone 3 (ftUS)\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",38.43333333333333],PARAMETER[\"standard_parallel_2\",37"); - add_srs_wkt (p, 9, - ".06666666666667],PARAMETER[\"latitude_of_origin\",36.5],"); - add_srs_wkt (p, 10, - "PARAMETER[\"central_meridian\",-120.5],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_easting\",6561666.667],PARAMETER[\"false_northing\",164"); - add_srs_wkt (p, 12, - "0416.667],UNIT[\"US survey foot\",0.3048006096012192,AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 14, - "ORTH],AUTHORITY[\"EPSG\",\"2227\"]]"); - p = add_epsg_def (filter, first, last, 2228, "epsg", 2228, - "NAD83 / California zone 4 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); - add_proj4text (p, 1, - "4 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.000101600"); - add_proj4text (p, 2, - "1 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / California zone 4 (ftUS)\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",37.25],PARAMETER[\"standard_parallel_2\",36],PARAMETER["); - add_srs_wkt (p, 9, - "\"latitude_of_origin\",35.33333333333334],PARAMETER[\"ce"); - add_srs_wkt (p, 10, - "ntral_meridian\",-119],PARAMETER[\"false_easting\",65616"); - add_srs_wkt (p, 11, - "66.667],PARAMETER[\"false_northing\",1640416.667],UNIT[\""); - add_srs_wkt (p, 12, - "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"2228\"]]"); - p = add_epsg_def (filter, first, last, 2229, "epsg", 2229, - "NAD83 / California zone 5 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=50"); - add_proj4text (p, 2, - "0000.0001016001 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / California zone 5 (ftUS)\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",35.46666666666667],PARAMETER[\"standard_parallel_2\",34"); - add_srs_wkt (p, 9, - ".03333333333333],PARAMETER[\"latitude_of_origin\",33.5],"); - add_srs_wkt (p, 10, - "PARAMETER[\"central_meridian\",-118],PARAMETER[\"false_e"); - add_srs_wkt (p, 11, - "asting\",6561666.667],PARAMETER[\"false_northing\",16404"); - add_srs_wkt (p, 12, - "16.667],UNIT[\"US survey foot\",0.3048006096012192,AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 14, - "TH],AUTHORITY[\"EPSG\",\"2229\"]]"); - p = add_epsg_def (filter, first, last, 2230, "epsg", 2230, - "NAD83 / California zone 6 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000"); - add_proj4text (p, 2, - ".0001016 +y_0=500000.0001016001 +datum=NAD83 +units=us-f"); - add_proj4text (p, 3, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / California zone 6 (ftUS)\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",33.88333333333333],PARAMETER[\"standard_parallel_2\",32"); - add_srs_wkt (p, 9, - ".78333333333333],PARAMETER[\"latitude_of_origin\",32.166"); - add_srs_wkt (p, 10, - "66666666666],PARAMETER[\"central_meridian\",-116.25],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_easting\",6561666.667],PARAMETER[\"false_"); - add_srs_wkt (p, 12, - "northing\",1640416.667],UNIT[\"US survey foot\",0.304800"); - add_srs_wkt (p, 13, - "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); - add_srs_wkt (p, 14, - "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2230\"]]"); - p = add_epsg_def (filter, first, last, 2231, "epsg", 2231, - "NAD83 / Colorado North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8"); - add_proj4text (p, 2, - "288036576 +y_0=304800.6096012192 +datum=NAD83 +units=us-"); - add_proj4text (p, 3, - "ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Colorado North (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40"); - add_srs_wkt (p, 8, - ".78333333333333],PARAMETER[\"standard_parallel_2\",39.71"); - add_srs_wkt (p, 9, - "666666666667],PARAMETER[\"latitude_of_origin\",39.333333"); - add_srs_wkt (p, 10, - "33333334],PARAMETER[\"central_meridian\",-105.5],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_easting\",3000000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 12, - "\",1000000],UNIT[\"US survey foot\",0.3048006096012192,A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"2231\"]]"); - p = add_epsg_def (filter, first, last, 2232, "epsg", 2232, - "NAD83 / Colorado Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); - add_proj4text (p, 1, - "3334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.60"); - add_proj4text (p, 2, - "96012192 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Colorado Central (ftUS)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_"); - add_srs_wkt (p, 7, - "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",39.75],PARAMETER[\"standard_parallel_2\",38.45],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"latitude_of_origin\",37.83333333333334],PARAMETER[\""); - add_srs_wkt (p, 10, - "central_meridian\",-105.5],PARAMETER[\"false_easting\",3"); - add_srs_wkt (p, 11, - "000000],PARAMETER[\"false_northing\",1000000],UNIT[\"US "); - add_srs_wkt (p, 12, - "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 13, - "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 14, - "SG\",\"2232\"]]"); - p = add_epsg_def (filter, first, last, 2233, "epsg", 2233, - "NAD83 / Colorado South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); - add_proj4text (p, 1, - "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8"); - add_proj4text (p, 2, - "288036576 +y_0=304800.6096012192 +datum=NAD83 +units=us-"); - add_proj4text (p, 3, - "ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Colorado South (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38"); - add_srs_wkt (p, 8, - ".43333333333333],PARAMETER[\"standard_parallel_2\",37.23"); - add_srs_wkt (p, 9, - "333333333333],PARAMETER[\"latitude_of_origin\",36.666666"); - add_srs_wkt (p, 10, - "66666666],PARAMETER[\"central_meridian\",-105.5],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_easting\",3000000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 12, - "\",1000000],UNIT[\"US survey foot\",0.3048006096012192,A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"2233\"]]"); - p = add_epsg_def (filter, first, last, 2234, "epsg", 2234, - "NAD83 / Connecticut (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); - add_proj4text (p, 1, - ".83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_"); - add_proj4text (p, 2, - "0=152400.3048006096 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Connecticut (ftUS)\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.8"); - add_srs_wkt (p, 8, - "6666666666667],PARAMETER[\"standard_parallel_2\",41.2],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"latitude_of_origin\",40.83333333333334],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"central_meridian\",-72.75],PARAMETER[\"false_east"); - add_srs_wkt (p, 11, - "ing\",1000000],PARAMETER[\"false_northing\",500000],UNIT"); - add_srs_wkt (p, 12, - "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 14, - "[\"EPSG\",\"2234\"]]"); - p = add_epsg_def (filter, first, last, 2235, "epsg", 2235, - "NAD83 / Delaware (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); - add_proj4text (p, 1, - "995 +x_0=200000.0001016002 +y_0=0 +datum=NAD83 +units=us"); - add_proj4text (p, 2, - "-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Delaware (ftUS)\",GEOGCS[\"NAD83\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); - add_srs_wkt (p, 2, - "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",38],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-75.41666666666667],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.999995],PARAMETER[\"false_easting\",656166.6"); - add_srs_wkt (p, 10, - "67],PARAMETER[\"false_northing\",0],UNIT[\"US survey foo"); - add_srs_wkt (p, 11, - "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"223"); - add_srs_wkt (p, 13, - "5\"]]"); - p = add_epsg_def (filter, first, last, 2236, "epsg", 2236, - "NAD83 / Florida East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); - add_proj4text (p, 1, - "941177 +x_0=200000.0001016002 +y_0=0 +datum=NAD83 +units"); - add_proj4text (p, 2, - "=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Florida East (ftUS)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",24.3333333333"); - add_srs_wkt (p, 8, - "3333],PARAMETER[\"central_meridian\",-81],PARAMETER[\"sc"); - add_srs_wkt (p, 9, - "ale_factor\",0.999941177],PARAMETER[\"false_easting\",65"); - add_srs_wkt (p, 10, - "6166.667],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); - add_srs_wkt (p, 11, - "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2236\"]]"); - p = add_epsg_def (filter, first, last, 2237, "epsg", 2237, - "NAD83 / Florida West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); - add_proj4text (p, 1, - "941177 +x_0=200000.0001016002 +y_0=0 +datum=NAD83 +units"); - add_proj4text (p, 2, - "=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Florida West (ftUS)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",24.3333333333"); - add_srs_wkt (p, 8, - "3333],PARAMETER[\"central_meridian\",-82],PARAMETER[\"sc"); - add_srs_wkt (p, 9, - "ale_factor\",0.999941177],PARAMETER[\"false_easting\",65"); - add_srs_wkt (p, 10, - "6166.667],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); - add_srs_wkt (p, 11, - "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2237\"]]"); - p = add_epsg_def (filter, first, last, 2238, "epsg", 2238, - "NAD83 / Florida North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); - add_proj4text (p, 1, - "9 +lon_0=-84.5 +x_0=600000 +y_0=0 +datum=NAD83 +units=us"); - add_proj4text (p, 2, - "-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Florida North (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",30"); - add_srs_wkt (p, 8, - ".75],PARAMETER[\"standard_parallel_2\",29.58333333333333"); - add_srs_wkt (p, 9, - "],PARAMETER[\"latitude_of_origin\",29],PARAMETER[\"centr"); - add_srs_wkt (p, 10, - "al_meridian\",-84.5],PARAMETER[\"false_easting\",1968500"); - add_srs_wkt (p, 11, - "],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); - add_srs_wkt (p, 12, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2238\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 2239, "epsg", 2239, - "NAD83 / Georgia East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=200000.0001016002 +y_0=0 +datum=NAD83 +units=us-f"); - add_proj4text (p, 2, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Georgia East (ftUS)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",30],PARAMETER"); - add_srs_wkt (p, 8, - "[\"central_meridian\",-82.16666666666667],PARAMETER[\"sc"); - add_srs_wkt (p, 9, - "ale_factor\",0.9999],PARAMETER[\"false_easting\",656166."); - add_srs_wkt (p, 10, - "667],PARAMETER[\"false_northing\",0],UNIT[\"US survey fo"); - add_srs_wkt (p, 11, - "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"22"); - add_srs_wkt (p, 13, - "39\"]]"); - p = add_epsg_def (filter, first, last, 2240, "epsg", 2240, - "NAD83 / Georgia West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=699999.9998983998 +y_0=0 +datum=NAD83 +units=us-f"); - add_proj4text (p, 2, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Georgia West (ftUS)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",30],PARAMETER"); - add_srs_wkt (p, 8, - "[\"central_meridian\",-84.16666666666667],PARAMETER[\"sc"); - add_srs_wkt (p, 9, - "ale_factor\",0.9999],PARAMETER[\"false_easting\",2296583"); - add_srs_wkt (p, 10, - ".333],PARAMETER[\"false_northing\",0],UNIT[\"US survey f"); - add_srs_wkt (p, 11, - "oot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],A"); - add_srs_wkt (p, 12, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 13, - "240\"]]"); - p = add_epsg_def (filter, first, last, 2241, "epsg", 2241, - "NAD83 / Idaho East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); - add_proj4text (p, 1, - "666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Idaho East (ftUS)\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",41.66666666666"); - add_srs_wkt (p, 8, - "666],PARAMETER[\"central_meridian\",-112.1666666666667],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",0.999947368],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",656166.667],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 13, - "ORITY[\"EPSG\",\"2241\"]]"); - p = add_epsg_def (filter, first, last, 2242, "epsg", 2242, - "NAD83 / Idaho Central (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); - add_proj4text (p, 1, - "99473679999999 +x_0=500000.0001016001 +y_0=0 +datum=NAD8"); - add_proj4text (p, 2, - "3 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Idaho Central (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",41.66666666"); - add_srs_wkt (p, 8, - "666666],PARAMETER[\"central_meridian\",-114],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.999947368],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "1640416.667],PARAMETER[\"false_northing\",0],UNIT[\"US s"); - add_srs_wkt (p, 11, - "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 12, - "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"2242\"]]"); - p = add_epsg_def (filter, first, last, 2243, "epsg", 2243, - "NAD83 / Idaho West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); - add_proj4text (p, 1, - ".999933333 +x_0=800000.0001016001 +y_0=0 +datum=NAD83 +u"); - add_proj4text (p, 2, - "nits=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Idaho West (ftUS)\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",41.66666666666"); - add_srs_wkt (p, 8, - "666],PARAMETER[\"central_meridian\",-115.75],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.999933333],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "2624666.667],PARAMETER[\"false_northing\",0],UNIT[\"US s"); - add_srs_wkt (p, 11, - "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 12, - "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"2243\"]]"); - p = add_epsg_def (filter, first, last, 2244, "epsg", 2244, - "NAD83 / Indiana East (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +"); - add_proj4text (p, 2, - "datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Indiana East (ftUS) (deprecated)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "37.5],PARAMETER[\"central_meridian\",-85.66666666666667]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.999966667],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",328083.333],PARAMETER[\"false_northing\",81"); - add_srs_wkt (p, 11, - "8125],UNIT[\"US survey foot\",0.3048006096012192,AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 13, - "],AUTHORITY[\"EPSG\",\"2244\"]]"); - p = add_epsg_def (filter, first, last, 2245, "epsg", 2245, - "NAD83 / Indiana West (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=900000 +y_0=249364.9987299975 +datum=NAD83"); - add_proj4text (p, 2, - " +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Indiana West (ftUS) (deprecated)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "37.5],PARAMETER[\"central_meridian\",-87.08333333333333]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.999966667],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",2952750],PARAMETER[\"false_northing\",81812"); - add_srs_wkt (p, 11, - "5],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"2245\"]]"); - p = add_epsg_def (filter, first, last, 2246, "epsg", 2246, - "NAD83 / Kentucky North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); - add_proj4text (p, 1, - "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_"); - add_proj4text (p, 2, - "0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Kentucky North (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37"); - add_srs_wkt (p, 8, - ".96666666666667],PARAMETER[\"standard_parallel_2\",38.96"); - add_srs_wkt (p, 9, - "666666666667],PARAMETER[\"latitude_of_origin\",37.5],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"central_meridian\",-84.25],PARAMETER[\"false_ea"); - add_srs_wkt (p, 11, - "sting\",1640416.667],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 12, - "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); - add_srs_wkt (p, 14, - "TY[\"EPSG\",\"2246\"]]"); - p = add_epsg_def (filter, first, last, 2247, "epsg", 2247, - "NAD83 / Kentucky South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0"); - add_proj4text (p, 2, - "001016001 +y_0=500000.0001016001 +datum=NAD83 +units=us-"); - add_proj4text (p, 3, - "ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Kentucky South (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37"); - add_srs_wkt (p, 8, - ".93333333333333],PARAMETER[\"standard_parallel_2\",36.73"); - add_srs_wkt (p, 9, - "333333333333],PARAMETER[\"latitude_of_origin\",36.333333"); - add_srs_wkt (p, 10, - "33333334],PARAMETER[\"central_meridian\",-85.75],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_easting\",1640416.667],PARAMETER[\"false_nort"); - add_srs_wkt (p, 12, - "hing\",1640416.667],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 13, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 14, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2247\"]]"); - p = add_epsg_def (filter, first, last, 2248, "epsg", 2248, - "NAD83 / Maryland (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666"); - add_proj4text (p, 1, - "666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +datum=NAD8"); - add_proj4text (p, 2, - "3 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Maryland (ftUS)\",GEOGCS[\"NAD83\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); - add_srs_wkt (p, 2, - "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39.45],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_2\",38.3],PARAMETER[\"lati"); - add_srs_wkt (p, 9, - "tude_of_origin\",37.66666666666666],PARAMETER[\"central_"); - add_srs_wkt (p, 10, - "meridian\",-77],PARAMETER[\"false_easting\",1312333.333]"); - add_srs_wkt (p, 11, - ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); - add_srs_wkt (p, 12, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2248\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 2249, "epsg", 2249, - "NAD83 / Massachusetts Mainland (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=7"); - add_proj4text (p, 2, - "50000 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Massachusetts Mainland (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 7, - "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); - add_srs_wkt (p, 8, - "_1\",42.68333333333333],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",41.71666666666667],PARAMETER[\"latitude_of_origin\",41]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"central_meridian\",-71.5],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_easting\",656166.667],PARAMETER[\"false_northing\",2460"); - add_srs_wkt (p, 12, - "625],UNIT[\"US survey foot\",0.3048006096012192,AUTHORIT"); - add_srs_wkt (p, 13, - "Y[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 14, - ",AUTHORITY[\"EPSG\",\"2249\"]]"); - p = add_epsg_def (filter, first, last, 2250, "epsg", 2250, - "NAD83 / Massachusetts Island (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333"); - add_proj4text (p, 1, - "333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0"); - add_proj4text (p, 2, - " +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Massachusetts Island (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 7, - "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); - add_srs_wkt (p, 8, - "_1\",41.48333333333333],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",41.28333333333333],PARAMETER[\"latitude_of_origin\",41]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"central_meridian\",-70.5],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_easting\",1640416.667],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 14, - "ORITY[\"EPSG\",\"2250\"]]"); - p = add_epsg_def (filter, first, last, 2251, "epsg", 2251, - "NAD83 / Michigan North (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999"); - add_proj4text (p, 2, - "968001 +y_0=0 +datum=NAD83 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Michigan North (ft)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",47.0"); - add_srs_wkt (p, 8, - "8333333333334],PARAMETER[\"standard_parallel_2\",45.4833"); - add_srs_wkt (p, 9, - "3333333333],PARAMETER[\"latitude_of_origin\",44.78333333"); - add_srs_wkt (p, 10, - "333333],PARAMETER[\"central_meridian\",-87],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_easting\",26246719.16],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],A"); - add_srs_wkt (p, 13, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 14, - "251\"]]"); - p = add_epsg_def (filter, first, last, 2252, "epsg", 2252, - "NAD83 / Michigan Central (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43"); - add_proj4text (p, 1, - ".31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.9"); - add_proj4text (p, 2, - "99976001 +y_0=0 +datum=NAD83 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Michigan Central (ft)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",45"); - add_srs_wkt (p, 8, - ".7],PARAMETER[\"standard_parallel_2\",44.18333333333333]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"latitude_of_origin\",43.31666666666667],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"central_meridian\",-84.36666666666666],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_easting\",19685039.37],PARAMETER[\"false_north"); - add_srs_wkt (p, 12, - "ing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"2252\"]]"); - p = add_epsg_def (filter, first, last, 2253, "epsg", 2253, - "NAD83 / Michigan South (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41"); - add_proj4text (p, 1, - ".5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 "); - add_proj4text (p, 2, - "+datum=NAD83 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Michigan South (ft)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",43.6"); - add_srs_wkt (p, 8, - "6666666666666],PARAMETER[\"standard_parallel_2\",42.1],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"latitude_of_origin\",41.5],PARAMETER[\"centra"); - add_srs_wkt (p, 10, - "l_meridian\",-84.36666666666666],PARAMETER[\"false_easti"); - add_srs_wkt (p, 11, - "ng\",13123359.58],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 12, - "foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 13, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2253\"]]"); - p = add_epsg_def (filter, first, last, 2254, "epsg", 2254, - "NAD83 / Mississippi East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9"); - add_proj4text (p, 1, - "9995 +x_0=300000.0000000001 +y_0=0 +datum=NAD83 +units=u"); - add_proj4text (p, 2, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Mississippi East (ftUS)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",29.5],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-88.83333333333333],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",0.99995],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",984250.0000000002],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 11, - "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"2254\"]]"); - p = add_epsg_def (filter, first, last, 2255, "epsg", 2255, - "NAD83 / Mississippi West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.9"); - add_proj4text (p, 1, - "9995 +x_0=699999.9998983998 +y_0=0 +datum=NAD83 +units=u"); - add_proj4text (p, 2, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Mississippi West (ftUS)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",29.5],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-90.33333333333333],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",0.99995],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",2296583.333],PARAMETER[\"false_northing\",0],UNIT[\"US "); - add_srs_wkt (p, 11, - "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 12, - "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"2255\"]]"); - p = add_epsg_def (filter, first, last, 2256, "epsg", 2256, - "NAD83 / Montana (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5"); - add_proj4text (p, 1, - " +x_0=599999.9999976 +y_0=0 +datum=NAD83 +units=ft +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Montana (ft)\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); - add_srs_wkt (p, 7, - "nic_2SP\"],PARAMETER[\"standard_parallel_1\",49],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_2\",45],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 9, - "rigin\",44.25],PARAMETER[\"central_meridian\",-109.5],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",1968503.937],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"2256\"]]"); - p = add_epsg_def (filter, first, last, 2257, "epsg", 2257, - "NAD83 / New Mexico East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); - add_proj4text (p, 1, - "909091 +x_0=165000 +y_0=0 +datum=NAD83 +units=us-ft +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New Mexico East (ftUS)\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",31],PARAME"); - add_srs_wkt (p, 8, - "TER[\"central_meridian\",-104.3333333333333],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.999909091],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "541337.5],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); - add_srs_wkt (p, 11, - "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2257\"]]"); - p = add_epsg_def (filter, first, last, 2258, "epsg", 2258, - "NAD83 / New Mexico Central (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=5000"); - add_proj4text (p, 1, - "00.0001016001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New Mexico Central (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",31],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",-106.25],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9999],PARAMETER[\"false_easting\",1640416.667]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); - add_srs_wkt (p, 11, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2258\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2259, "epsg", 2259, - "NAD83 / New Mexico West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); - add_proj4text (p, 1, - "916667 +x_0=830000.0001016001 +y_0=0 +datum=NAD83 +units"); - add_proj4text (p, 2, - "=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New Mexico West (ftUS)\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",31],PARAME"); - add_srs_wkt (p, 8, - "TER[\"central_meridian\",-107.8333333333333],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.999916667],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "2723091.667],PARAMETER[\"false_northing\",0],UNIT[\"US s"); - add_srs_wkt (p, 11, - "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 12, - "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"2259\"]]"); - p = add_epsg_def (filter, first, last, 2260, "epsg", 2260, - "NAD83 / New York East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=150000 +y_0=0 +datum=NAD83 +units=us-ft +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New York East (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",38.83333333"); - add_srs_wkt (p, 8, - "333334],PARAMETER[\"central_meridian\",-74.5],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",492"); - add_srs_wkt (p, 10, - "125],PARAMETER[\"false_northing\",0],UNIT[\"US survey fo"); - add_srs_wkt (p, 11, - "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"22"); - add_srs_wkt (p, 13, - "60\"]]"); - p = add_epsg_def (filter, first, last, 2261, "epsg", 2261, - "NAD83 / New York Central (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); - add_proj4text (p, 1, - "9375 +x_0=249999.9998983998 +y_0=0 +datum=NAD83 +units=u"); - add_proj4text (p, 2, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New York Central (ftUS)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",40],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",-76.58333333333333],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9999375],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",820208.3330000002],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 11, - "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"2261\"]]"); - p = add_epsg_def (filter, first, last, 2262, "epsg", 2262, - "NAD83 / New York West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); - add_proj4text (p, 1, - "9375 +x_0=350000.0001016001 +y_0=0 +datum=NAD83 +units=u"); - add_proj4text (p, 2, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New York West (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",40],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-78.58333333333333],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999375],PARAMETER[\"false_easting\",11"); - add_srs_wkt (p, 10, - "48291.667],PARAMETER[\"false_northing\",0],UNIT[\"US sur"); - add_srs_wkt (p, 11, - "vey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2262\"]]"); - p = add_epsg_def (filter, first, last, 2263, "epsg", 2263, - "NAD83 / New York Long Island (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000"); - add_proj4text (p, 2, - "000001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New York Long Island (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 7, - "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); - add_srs_wkt (p, 8, - "_1\",41.03333333333333],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",40.66666666666666],PARAMETER[\"latitude_of_origin\",40."); - add_srs_wkt (p, 10, - "16666666666666],PARAMETER[\"central_meridian\",-74],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_easting\",984250.0000000002],PARAMETER[\"f"); - add_srs_wkt (p, 12, - "alse_northing\",0],UNIT[\"US survey foot\",0.30480060960"); - add_srs_wkt (p, 13, - "12192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXI"); - add_srs_wkt (p, 14, - "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2263\"]]"); - p = add_epsg_def (filter, first, last, 2264, "epsg", 2264, - "NAD83 / North Carolina (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); - add_proj4text (p, 1, - "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0="); - add_proj4text (p, 2, - "0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / North Carolina (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36"); - add_srs_wkt (p, 8, - ".16666666666666],PARAMETER[\"standard_parallel_2\",34.33"); - add_srs_wkt (p, 9, - "333333333334],PARAMETER[\"latitude_of_origin\",33.75],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"central_meridian\",-79],PARAMETER[\"false_east"); - add_srs_wkt (p, 11, - "ing\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US"); - add_srs_wkt (p, 12, - " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 13, - "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 14, - "PSG\",\"2264\"]]"); - p = add_epsg_def (filter, first, last, 2265, "epsg", 2265, - "NAD83 / North Dakota North (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333"); - add_proj4text (p, 1, - "333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +"); - add_proj4text (p, 2, - "datum=NAD83 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / North Dakota North (ft)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_"); - add_srs_wkt (p, 7, - "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",48.73333333333333],PARAMETER[\"standard_parallel_2\",47"); - add_srs_wkt (p, 9, - ".43333333333333],PARAMETER[\"latitude_of_origin\",47],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"central_meridian\",-100.5],PARAMETER[\"false_e"); - add_srs_wkt (p, 11, - "asting\",1968503.937],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 12, - "IT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2265\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 2266, "epsg", 2266, - "NAD83 / North Dakota South (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333"); - add_proj4text (p, 1, - "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9"); - add_proj4text (p, 2, - "999976 +y_0=0 +datum=NAD83 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / North Dakota South (ft)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_"); - add_srs_wkt (p, 7, - "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",47.48333333333333],PARAMETER[\"standard_parallel_2\",46"); - add_srs_wkt (p, 9, - ".18333333333333],PARAMETER[\"latitude_of_origin\",45.666"); - add_srs_wkt (p, 10, - "66666666666],PARAMETER[\"central_meridian\",-100.5],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_easting\",1968503.937],PARAMETER[\"false_n"); - add_srs_wkt (p, 12, - "orthing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 13, - "002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 14, - "PSG\",\"2266\"]]"); - p = add_epsg_def (filter, first, last, 2267, "epsg", 2267, - "NAD83 / Oklahoma North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666"); - add_proj4text (p, 1, - "667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +datum=NAD83"); - add_proj4text (p, 2, - " +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Oklahoma North (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36"); - add_srs_wkt (p, 8, - ".76666666666667],PARAMETER[\"standard_parallel_2\",35.56"); - add_srs_wkt (p, 9, - "666666666667],PARAMETER[\"latitude_of_origin\",35],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"central_meridian\",-98],PARAMETER[\"false_easting"); - add_srs_wkt (p, 11, - "\",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US su"); - add_srs_wkt (p, 12, - "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); - add_srs_wkt (p, 13, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 14, - "\",\"2267\"]]"); - p = add_epsg_def (filter, first, last, 2268, "epsg", 2268, - "NAD83 / Oklahoma South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Oklahoma South (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",35"); - add_srs_wkt (p, 8, - ".23333333333333],PARAMETER[\"standard_parallel_2\",33.93"); - add_srs_wkt (p, 9, - "333333333333],PARAMETER[\"latitude_of_origin\",33.333333"); - add_srs_wkt (p, 10, - "33333334],PARAMETER[\"central_meridian\",-98],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_easting\",1968500],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 12, - "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 14, - "UTHORITY[\"EPSG\",\"2268\"]]"); - p = add_epsg_def (filter, first, last, 2269, "epsg", 2269, - "NAD83 / Oregon North (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.6"); - add_proj4text (p, 1, - "6666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 "); - add_proj4text (p, 2, - "+datum=NAD83 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Oregon North (ft)\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",46],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_2\",44.33333333333334],PARA"); - add_srs_wkt (p, 9, - "METER[\"latitude_of_origin\",43.66666666666666],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"central_meridian\",-120.5],PARAMETER[\"false_easting"); - add_srs_wkt (p, 11, - "\",8202099.738],PARAMETER[\"false_northing\",0],UNIT[\"f"); - add_srs_wkt (p, 12, - "oot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 13, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2269\"]]"); - p = add_epsg_def (filter, first, last, 2270, "epsg", 2270, - "NAD83 / Oregon South (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.6"); - add_proj4text (p, 1, - "6666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 "); - add_proj4text (p, 2, - "+datum=NAD83 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Oregon South (ft)\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",44],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_2\",42.33333333333334],PARA"); - add_srs_wkt (p, 9, - "METER[\"latitude_of_origin\",41.66666666666666],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"central_meridian\",-120.5],PARAMETER[\"false_easting"); - add_srs_wkt (p, 11, - "\",4921259.843],PARAMETER[\"false_northing\",0],UNIT[\"f"); - add_srs_wkt (p, 12, - "oot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 13, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2270\"]]"); - p = add_epsg_def (filter, first, last, 2271, "epsg", 2271, - "NAD83 / Pennsylvania North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=4"); - add_proj4text (p, 1, - "0.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +datum"); - add_proj4text (p, 2, - "=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Pennsylvania North (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",41.95],PARAMETER[\"standard_parallel_2\",40.88333333333"); - add_srs_wkt (p, 9, - "333],PARAMETER[\"latitude_of_origin\",40.16666666666666]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"central_meridian\",-77.75],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_easting\",1968500],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 12, - "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); - add_srs_wkt (p, 14, - "TY[\"EPSG\",\"2271\"]]"); - p = add_epsg_def (filter, first, last, 2272, "epsg", 2272, - "NAD83 / Pennsylvania South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +"); - add_proj4text (p, 2, - "y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Pennsylvania South (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",40.96666666666667],PARAMETER[\"standard_parallel_2\",39"); - add_srs_wkt (p, 9, - ".93333333333333],PARAMETER[\"latitude_of_origin\",39.333"); - add_srs_wkt (p, 10, - "33333333334],PARAMETER[\"central_meridian\",-77.75],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_easting\",1968500],PARAMETER[\"false_north"); - add_srs_wkt (p, 12, - "ing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTH"); - add_srs_wkt (p, 13, - "ORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 14, - "RTH],AUTHORITY[\"EPSG\",\"2272\"]]"); - p = add_epsg_def (filter, first, last, 2273, "epsg", 2273, - "NAD83 / South Carolina (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31"); - add_proj4text (p, 1, - ".83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +datum=NAD"); - add_proj4text (p, 2, - "83 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / South Carolina (ft)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",34.8"); - add_srs_wkt (p, 8, - "3333333333334],PARAMETER[\"standard_parallel_2\",32.5],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"latitude_of_origin\",31.83333333333333],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"central_meridian\",-81],PARAMETER[\"false_easting"); - add_srs_wkt (p, 11, - "\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"foot\""); - add_srs_wkt (p, 12, - ",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 13, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2273\"]]"); - p = add_epsg_def (filter, first, last, 2274, "epsg", 2274, - "NAD83 / Tennessee (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=3"); - add_proj4text (p, 1, - "4.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +datum=NA"); - add_proj4text (p, 2, - "D83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Tennessee (ftUS)\",GEOGCS[\"NAD83\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); - add_srs_wkt (p, 2, - "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36.4166"); - add_srs_wkt (p, 8, - "6666666666],PARAMETER[\"standard_parallel_2\",35.25],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"latitude_of_origin\",34.33333333333334],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"central_meridian\",-86],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); - add_srs_wkt (p, 12, - "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"2274\"]]"); - p = add_epsg_def (filter, first, last, 2275, "epsg", 2275, - "NAD83 / Texas North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=3"); - add_proj4text (p, 1, - "4 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.99989"); - add_proj4text (p, 2, - "83998 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Texas North (ftUS)\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36.1"); - add_srs_wkt (p, 8, - "8333333333333],PARAMETER[\"standard_parallel_2\",34.65],"); - add_srs_wkt (p, 9, - "PARAMETER[\"latitude_of_origin\",34],PARAMETER[\"central"); - add_srs_wkt (p, 10, - "_meridian\",-101.5],PARAMETER[\"false_easting\",656166.6"); - add_srs_wkt (p, 11, - "67],PARAMETER[\"false_northing\",3280833.333],UNIT[\"US "); - add_srs_wkt (p, 12, - "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 13, - "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 14, - "SG\",\"2275\"]]"); - p = add_epsg_def (filter, first, last, 2276, "epsg", 2276, - "NAD83 / Texas North Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333"); - add_proj4text (p, 1, - "333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y"); - add_proj4text (p, 2, - "_0=2000000.0001016 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Texas North Central (ftUS)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambe"); - add_srs_wkt (p, 7, - "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); - add_srs_wkt (p, 8, - "1\",33.96666666666667],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",32.13333333333333],PARAMETER[\"latitude_of_origin\",31."); - add_srs_wkt (p, 10, - "66666666666667],PARAMETER[\"central_meridian\",-98.5],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_easting\",1968500],PARAMETER[\"false_nor"); - add_srs_wkt (p, 12, - "thing\",6561666.667],UNIT[\"US survey foot\",0.304800609"); - add_srs_wkt (p, 13, - "6012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 14, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2276\"]]"); - p = add_epsg_def (filter, first, last, 2277, "epsg", 2277, - "NAD83 / Texas Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666"); - add_proj4text (p, 1, - "667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); - add_proj4text (p, 2, - "x_0=699999.9998983998 +y_0=3000000 +datum=NAD83 +units=u"); - add_proj4text (p, 3, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Texas Central (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",31"); - add_srs_wkt (p, 8, - ".88333333333333],PARAMETER[\"standard_parallel_2\",30.11"); - add_srs_wkt (p, 9, - "666666666667],PARAMETER[\"latitude_of_origin\",29.666666"); - add_srs_wkt (p, 10, - "66666667],PARAMETER[\"central_meridian\",-100.3333333333"); - add_srs_wkt (p, 11, - "333],PARAMETER[\"false_easting\",2296583.333],PARAMETER["); - add_srs_wkt (p, 12, - "\"false_northing\",9842500.000000002],UNIT[\"US survey f"); - add_srs_wkt (p, 13, - "oot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],A"); - add_srs_wkt (p, 14, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 15, - "277\"]]"); - p = add_epsg_def (filter, first, last, 2278, "epsg", 2278, - "NAD83 / Texas South Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333"); - add_proj4text (p, 1, - "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=3999999.9998984 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Texas South Central (ftUS)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambe"); - add_srs_wkt (p, 7, - "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); - add_srs_wkt (p, 8, - "1\",30.28333333333333],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",28.38333333333333],PARAMETER[\"latitude_of_origin\",27."); - add_srs_wkt (p, 10, - "83333333333333],PARAMETER[\"central_meridian\",-99],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_easting\",1968500],PARAMETER[\"false_north"); - add_srs_wkt (p, 12, - "ing\",13123333.333],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 13, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 14, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2278\"]]"); - p = add_epsg_def (filter, first, last, 2279, "epsg", 2279, - "NAD83 / Texas South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); - add_proj4text (p, 1, - "667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.00"); - add_proj4text (p, 2, - "00000001 +y_0=5000000.0001016 +datum=NAD83 +units=us-ft "); - add_proj4text (p, 3, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Texas South (ftUS)\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",27.8"); - add_srs_wkt (p, 8, - "3333333333333],PARAMETER[\"standard_parallel_2\",26.1666"); - add_srs_wkt (p, 9, - "6666666667],PARAMETER[\"latitude_of_origin\",25.66666666"); - add_srs_wkt (p, 10, - "666667],PARAMETER[\"central_meridian\",-98.5],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_easting\",984250.0000000002],PARAMETER[\"false_n"); - add_srs_wkt (p, 12, - "orthing\",16404166.667],UNIT[\"US survey foot\",0.304800"); - add_srs_wkt (p, 13, - "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); - add_srs_wkt (p, 14, - "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2279\"]]"); - p = add_epsg_def (filter, first, last, 2280, "epsg", 2280, - "NAD83 / Utah North (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0"); - add_proj4text (p, 2, - "001504 +y_0=999999.9999960001 +datum=NAD83 +units=ft +no"); - add_proj4text (p, 3, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Utah North (ft)\",GEOGCS[\"NAD83\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); - add_srs_wkt (p, 2, - "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.7833"); - add_srs_wkt (p, 8, - "3333333333],PARAMETER[\"standard_parallel_2\",40.7166666"); - add_srs_wkt (p, 9, - "6666667],PARAMETER[\"latitude_of_origin\",40.33333333333"); - add_srs_wkt (p, 10, - "334],PARAMETER[\"central_meridian\",-111.5],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_easting\",1640419.948],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",3280839.895],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"2280\"]]"); - p = add_epsg_def (filter, first, last, 2281, "epsg", 2281, - "NAD83 / Utah Central (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); - add_proj4text (p, 1, - "8.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0="); - add_proj4text (p, 2, - "1999999.999992 +datum=NAD83 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Utah Central (ft)\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40.65"); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_2\",39.01666666666667],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"latitude_of_origin\",38.33333333333334],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"central_meridian\",-111.5],PARAMETER[\"false_east"); - add_srs_wkt (p, 11, - "ing\",1640419.948],PARAMETER[\"false_northing\",6561679."); - add_srs_wkt (p, 12, - "79],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],A"); - add_srs_wkt (p, 13, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 14, - "281\"]]"); - p = add_epsg_def (filter, first, last, 2282, "epsg", 2282, - "NAD83 / Utah South (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); - add_proj4text (p, 1, - "6.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0="); - add_proj4text (p, 2, - "2999999.999988 +datum=NAD83 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Utah South (ft)\",GEOGCS[\"NAD83\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); - add_srs_wkt (p, 2, - "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38.35],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_2\",37.21666666666667],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"latitude_of_origin\",36.66666666666666],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"central_meridian\",-111.5],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 11, - "g\",1640419.948],PARAMETER[\"false_northing\",9842519.68"); - add_srs_wkt (p, 12, - "5],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AX"); - add_srs_wkt (p, 13, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"22"); - add_srs_wkt (p, 14, - "82\"]]"); - p = add_epsg_def (filter, first, last, 2283, "epsg", 2283, - "NAD83 / Virginia North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2"); - add_proj4text (p, 2, - "000000.0001016 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Virginia North (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39"); - add_srs_wkt (p, 8, - ".2],PARAMETER[\"standard_parallel_2\",38.03333333333333]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"latitude_of_origin\",37.66666666666666],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"central_meridian\",-78.5],PARAMETER[\"false_eas"); - add_srs_wkt (p, 11, - "ting\",11482916.667],PARAMETER[\"false_northing\",656166"); - add_srs_wkt (p, 12, - "6.667],UNIT[\"US survey foot\",0.3048006096012192,AUTHOR"); - add_srs_wkt (p, 13, - "ITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 14, - "H],AUTHORITY[\"EPSG\",\"2283\"]]"); - p = add_epsg_def (filter, first, last, 2284, "epsg", 2284, - "NAD83 / Virginia South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0"); - add_proj4text (p, 2, - "001016 +y_0=999999.9998983998 +datum=NAD83 +units=us-ft "); - add_proj4text (p, 3, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Virginia South (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37"); - add_srs_wkt (p, 8, - ".96666666666667],PARAMETER[\"standard_parallel_2\",36.76"); - add_srs_wkt (p, 9, - "666666666667],PARAMETER[\"latitude_of_origin\",36.333333"); - add_srs_wkt (p, 10, - "33333334],PARAMETER[\"central_meridian\",-78.5],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_easting\",11482916.667],PARAMETER[\"false_nort"); - add_srs_wkt (p, 12, - "hing\",3280833.333],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 13, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 14, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2284\"]]"); - p = add_epsg_def (filter, first, last, 2285, "epsg", 2285, - "NAD83 / Washington North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47"); - add_proj4text (p, 1, - " +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0"); - add_proj4text (p, 2, - " +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Washington North (ftUS)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_"); - add_srs_wkt (p, 7, - "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",48.73333333333333],PARAMETER[\"standard_parallel_2\",47"); - add_srs_wkt (p, 9, - ".5],PARAMETER[\"latitude_of_origin\",47],PARAMETER[\"cen"); - add_srs_wkt (p, 10, - "tral_meridian\",-120.8333333333333],PARAMETER[\"false_ea"); - add_srs_wkt (p, 11, - "sting\",1640416.667],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 12, - "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); - add_srs_wkt (p, 14, - "TY[\"EPSG\",\"2285\"]]"); - p = add_epsg_def (filter, first, last, 2286, "epsg", 2286, - "NAD83 / Washington South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333"); - add_proj4text (p, 1, - "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0"); - add_proj4text (p, 2, - "001016001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Washington South (ftUS)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_"); - add_srs_wkt (p, 7, - "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",47.33333333333334],PARAMETER[\"standard_parallel_2\",45"); - add_srs_wkt (p, 9, - ".83333333333334],PARAMETER[\"latitude_of_origin\",45.333"); - add_srs_wkt (p, 10, - "33333333334],PARAMETER[\"central_meridian\",-120.5],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_easting\",1640416.667],PARAMETER[\"false_n"); - add_srs_wkt (p, 12, - "orthing\",0],UNIT[\"US survey foot\",0.3048006096012192,"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"2286\"]]"); - p = add_epsg_def (filter, first, last, 2287, "epsg", 2287, - "NAD83 / Wisconsin North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666"); - add_proj4text (p, 1, - "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Wisconsin North (ftUS)\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Co"); - add_srs_wkt (p, 7, - "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); - add_srs_wkt (p, 8, - "6.76666666666667],PARAMETER[\"standard_parallel_2\",45.5"); - add_srs_wkt (p, 9, - "6666666666667],PARAMETER[\"latitude_of_origin\",45.16666"); - add_srs_wkt (p, 10, - "666666666],PARAMETER[\"central_meridian\",-90],PARAMETER"); - add_srs_wkt (p, 11, - "[\"false_easting\",1968500],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 14, - "AUTHORITY[\"EPSG\",\"2287\"]]"); - p = add_epsg_def (filter, first, last, 2288, "epsg", 2288, - "NAD83 / Wisconsin Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333"); - add_proj4text (p, 1, - "334 +lon_0=-90 +x_0=600000 +y_0=0 +datum=NAD83 +units=us"); - add_proj4text (p, 2, - "-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Wisconsin Central (ftUS)\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",45.5],PARAMETER[\"standard_parallel_2\",44.25],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"latitude_of_origin\",43.83333333333334],PARAMETER[\""); - add_srs_wkt (p, 10, - "central_meridian\",-90],PARAMETER[\"false_easting\",1968"); - add_srs_wkt (p, 11, - "500],PARAMETER[\"false_northing\",0],UNIT[\"US survey fo"); - add_srs_wkt (p, 12, - "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); - add_srs_wkt (p, 13, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"22"); - add_srs_wkt (p, 14, - "88\"]]"); - p = add_epsg_def (filter, first, last, 2289, "epsg", 2289, - "NAD83 / Wisconsin South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +datum=NAD83"); - add_proj4text (p, 2, - " +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Wisconsin South (ftUS)\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Co"); - add_srs_wkt (p, 7, - "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); - add_srs_wkt (p, 8, - "4.06666666666667],PARAMETER[\"standard_parallel_2\",42.7"); - add_srs_wkt (p, 9, - "3333333333333],PARAMETER[\"latitude_of_origin\",42],PARA"); - add_srs_wkt (p, 10, - "METER[\"central_meridian\",-90],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 11, - "g\",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US s"); - add_srs_wkt (p, 12, - "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 13, - "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 14, - "G\",\"2289\"]]"); - p = add_epsg_def (filter, first, last, 2290, "epsg", 2290, - "ATS77 / Prince Edward Isl. Stereographic (ATS77)"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=70"); - add_proj4text (p, 1, - "0000 +y_0=400000 +a=6378135 +b=6356750.304921594 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ATS77 / Prince Edward Isl. Stereographic (ATS77"); - add_srs_wkt (p, 1, - ")\",GEOGCS[\"ATS77\",DATUM[\"Average_Terrestrial_System_"); - add_srs_wkt (p, 2, - "1977\",SPHEROID[\"Average Terrestrial System 1977\",6378"); - add_srs_wkt (p, 3, - "135,298.257,AUTHORITY[\"EPSG\",\"7041\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 4, - "SG\",\"6122\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4122\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Oblique_Stereographic\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",47.25],PARAMETER[\"central_meridian\",-63],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",0.999912],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",700000],PARAMETER[\"false_northing\",400000],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\","); - add_srs_wkt (p, 12, - "EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2290\"]]"); - p = add_epsg_def (filter, first, last, 2291, "epsg", 2291, - "NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83) (deprecated)"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=40"); - add_proj4text (p, 1, - "0000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / Prince Edward Isl. Stereographi"); - add_srs_wkt (p, 1, - "c (NAD83) (deprecated)\",GEOGCS[\"ATS77\",DATUM[\"Averag"); - add_srs_wkt (p, 2, - "e_Terrestrial_System_1977\",SPHEROID[\"Average Terrestri"); - add_srs_wkt (p, 3, - "al System 1977\",6378135,298.257,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 4, - "41\"]],AUTHORITY[\"EPSG\",\"6122\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4122\"]],PROJECTION[\"Oblique_Stereographic\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",47.25],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",-63],PARAMETER[\"scale_factor\",0.999912],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_easting\",400000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 11, - "thing\",800000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 12, - "01\"]],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORIT"); - add_srs_wkt (p, 13, - "Y[\"EPSG\",\"2291\"]]"); - p = add_epsg_def (filter, first, last, 2292, "epsg", 2292, - "NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83) (deprecated)"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=40"); - add_proj4text (p, 1, - "0000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +un"); - add_proj4text (p, 2, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS98) / Prince Edward Isl. Stereographi"); - add_srs_wkt (p, 1, - "c (NAD83) (deprecated)\",GEOGCS[\"NAD83(CSRS98)\",DATUM["); - add_srs_wkt (p, 2, - "\"NAD83_Canadian_Spatial_Reference_System\",SPHEROID[\"G"); - add_srs_wkt (p, 3, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 4, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6140\""); - add_srs_wkt (p, 5, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 6, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "9108\"]],AUTHORITY[\"EPSG\",\"4140\"]],PROJECTION[\"Obli"); - add_srs_wkt (p, 8, - "que_Stereographic\"],PARAMETER[\"latitude_of_origin\",47"); - add_srs_wkt (p, 9, - ".25],PARAMETER[\"central_meridian\",-63],PARAMETER[\"sca"); - add_srs_wkt (p, 10, - "le_factor\",0.999912],PARAMETER[\"false_easting\",400000"); - add_srs_wkt (p, 11, - "],PARAMETER[\"false_northing\",800000],UNIT[\"metre\",1,"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2292\"]]"); - p = add_epsg_def (filter, first, last, 2294, "epsg", 2294, - "ATS77 / MTM Nova Scotia zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=4500000"); - add_proj4text (p, 1, - " +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"ATS77 / MTM Nova Scotia zone 4\",GEOGCS[\"ATS77"); - add_srs_wkt (p, 1, - "\",DATUM[\"Average_Terrestrial_System_1977\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Average Terrestrial System 1977\",6378135,298.257,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7041\"]],AUTHORITY[\"EPSG\",\"6122\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4122\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-61.5],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9999],PARAMETER[\"false_easting\",4500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"2294\"]]"); - p = add_epsg_def (filter, first, last, 2295, "epsg", 2295, - "ATS77 / MTM Nova Scotia zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=5500000"); - add_proj4text (p, 1, - " +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"ATS77 / MTM Nova Scotia zone 5\",GEOGCS[\"ATS77"); - add_srs_wkt (p, 1, - "\",DATUM[\"Average_Terrestrial_System_1977\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Average Terrestrial System 1977\",6378135,298.257,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7041\"]],AUTHORITY[\"EPSG\",\"6122\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4122\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-64.5],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9999],PARAMETER[\"false_easting\",5500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"2295\"]]"); - p = add_epsg_def (filter, first, last, 2308, "epsg", 2308, - "Batavia / TM 109 SE"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=109 +k=0.9996 +x_0=500000 +y"); - add_proj4text (p, 1, - "_0=10000000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Batavia / TM 109 SE\",GEOGCS[\"Batavia\",DATUM["); - add_srs_wkt (p, 1, - "\"Batavia\",SPHEROID[\"Bessel 1841\",6377397.155,299.152"); - add_srs_wkt (p, 2, - "8128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-377,681,-50,"); - add_srs_wkt (p, 3, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6211\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4211\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 7, - "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); - add_srs_wkt (p, 8, - "ridian\",109],PARAMETER[\"scale_factor\",0.9996],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_easting\",500000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"2308\"]]"); - p = add_epsg_def (filter, first, last, 2309, "epsg", 2309, - "WGS 84 / TM 116 SE"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=116 +k=0.9996 +x_0=500000 +y"); - add_proj4text (p, 1, - "_0=10000000 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / TM 116 SE\",GEOGCS[\"WGS 84\",DATUM[\""); - add_srs_wkt (p, 1, - "WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]]"); - add_srs_wkt (p, 3, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 4, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 5, - "22\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transv"); - add_srs_wkt (p, 6, - "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 7, - "AMETER[\"central_meridian\",116],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 8, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 10, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 11, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"2309\"]]"); - p = add_epsg_def (filter, first, last, 2310, "epsg", 2310, - "WGS 84 / TM 132 SE"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=132 +k=0.9996 +x_0=500000 +y"); - add_proj4text (p, 1, - "_0=10000000 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / TM 132 SE\",GEOGCS[\"WGS 84\",DATUM[\""); - add_srs_wkt (p, 1, - "WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]]"); - add_srs_wkt (p, 3, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 4, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 5, - "22\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transv"); - add_srs_wkt (p, 6, - "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 7, - "AMETER[\"central_meridian\",132],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 8, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 10, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 11, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"2310\"]]"); - p = add_epsg_def (filter, first, last, 2311, "epsg", 2311, - "WGS 84 / TM 6 NE"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=6 +k=0.9996 +x_0=500000 +y_0"); - add_proj4text (p, 1, - "=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / TM 6 NE\",GEOGCS[\"WGS 84\",DATUM[\"WG"); - add_srs_wkt (p, 1, - "S_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHO"); - add_srs_wkt (p, 2, - "RITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],P"); - add_srs_wkt (p, 3, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 4, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 5, - "\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 6, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"central_meridian\",6],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 8, - "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 10, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 11, - "H],AUTHORITY[\"EPSG\",\"2311\"]]"); - p = add_epsg_def (filter, first, last, 2312, "epsg", 2312, - "Garoua / UTM zone 33N"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Garoua / UTM zone 33N\",GEOGCS[\"Garoua\",DATUM"); - add_srs_wkt (p, 1, - "[\"Garoua\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,2"); - add_srs_wkt (p, 2, - "93.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"6197\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 4, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4197\"]],PROJECTIO"); - add_srs_wkt (p, 6, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 7, - "n\",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"sc"); - add_srs_wkt (p, 8, - "ale_factor\",0.9996],PARAMETER[\"false_easting\",500000]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"2312\"]]"); - p = add_epsg_def (filter, first, last, 2313, "epsg", 2313, - "Kousseri / UTM zone 33N"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kousseri / UTM zone 33N\",GEOGCS[\"Kousseri\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Kousseri\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); - add_srs_wkt (p, 2, - ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6198\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4198\"]],PRO"); - add_srs_wkt (p, 6, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 7, - "_origin\",0],PARAMETER[\"central_meridian\",15],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 9, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 10, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); - add_srs_wkt (p, 11, - "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2313\"]]"); - p = add_epsg_def (filter, first, last, 2314, "epsg", 2314, - "Trinidad 1903 / Trinidad Grid (ftCla)"); - add_proj4text (p, 0, - "+proj=cass +lat_0=10.44166666666667 +lon_0=-61.333333333"); - add_proj4text (p, 1, - "33334 +x_0=86501.46392052001 +y_0=65379.0134283 +a=63782"); - add_proj4text (p, 2, - "93.645208759 +b=6356617.987679838 +towgs84=-61.702,284.4"); - add_proj4text (p, 3, - "88,472.052,0,0,0,0 +to_meter=0.3047972654 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Trinidad 1903 / Trinidad Grid (ftCla)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Trinidad 1903\",DATUM[\"Trinidad_1903\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1858\",6378293.645208759,294.2606763692654,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7007\"]],TOWGS84[-61.702,284.488,472.052,0,0"); - add_srs_wkt (p, 4, - ",0,0],AUTHORITY[\"EPSG\",\"6302\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4302\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",10.44166666666667],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",-61.33333333333334],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",283800],PARAMETER[\"false_northing\",214500],"); - add_srs_wkt (p, 11, - "UNIT[\"Clarke's foot\",0.3047972654,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "9005\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"2314\"]]"); - p = add_epsg_def (filter, first, last, 2315, "epsg", 2315, - "Campo Inchauspe / UTM zone 19S"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +south +ellps=intl +towgs84=-148,136,"); - add_proj4text (p, 1, - "90,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Campo Inchauspe / UTM zone 19S\",GEOGCS[\"Campo"); - add_srs_wkt (p, 1, - " Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Intern"); - add_srs_wkt (p, 2, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"2315\"]]"); - p = add_epsg_def (filter, first, last, 2316, "epsg", 2316, - "Campo Inchauspe / UTM zone 20S"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +south +ellps=intl +towgs84=-148,136,"); - add_proj4text (p, 1, - "90,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Campo Inchauspe / UTM zone 20S\",GEOGCS[\"Campo"); - add_srs_wkt (p, 1, - " Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Intern"); - add_srs_wkt (p, 2, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"2316\"]]"); - p = add_epsg_def (filter, first, last, 2317, "epsg", 2317, - "PSAD56 / ICN Regional"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=9 +lat_2=3 +lat_0=6 +lon_0=-66 +x_0=100"); - add_proj4text (p, 1, - "0000 +y_0=1000000 +ellps=intl +towgs84=-288,175,-376,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSAD56 / ICN Regional\",GEOGCS[\"PSAD56\",DATUM"); - add_srs_wkt (p, 1, - "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 8, - "rallel_1\",9],PARAMETER[\"standard_parallel_2\",3],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"latitude_of_origin\",6],PARAMETER[\"central_merid"); - add_srs_wkt (p, 10, - "ian\",-66],PARAMETER[\"false_easting\",1000000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"2317\"]]"); - p = add_epsg_def (filter, first, last, 2318, "epsg", 2318, - "Ain el Abd / Aramco Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=17 +lat_2=33 +lat_0=25.08951 +lon_0=48 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Ain el Abd / Aramco Lambert\",GEOGCS[\"Ain el A"); - add_srs_wkt (p, 1, - "bd\",DATUM[\"Ain_el_Abd_1970\",SPHEROID[\"International "); - add_srs_wkt (p, 2, - "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\",\"6204\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4204\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",17"); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_2\",33],PARAMETER[\"lati"); - add_srs_wkt (p, 9, - "tude_of_origin\",25.08951],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 10, - ",48],PARAMETER[\"false_easting\",0],PARAMETER[\"false_no"); - add_srs_wkt (p, 11, - "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"2318\"]]"); - p = add_epsg_def (filter, first, last, 2319, "epsg", 2319, - "ED50 / TM27"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / TM27\",GEOGCS[\"ED50\",DATUM[\"European_"); - add_srs_wkt (p, 1, - "Datum_1950\",SPHEROID[\"International 1924\",6378388,297"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",27],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NO"); - add_srs_wkt (p, 11, - "RTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2319\"]]"); - p = add_epsg_def (filter, first, last, 2320, "epsg", 2320, - "ED50 / TM30"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / TM30\",GEOGCS[\"ED50\",DATUM[\"European_"); - add_srs_wkt (p, 1, - "Datum_1950\",SPHEROID[\"International 1924\",6378388,297"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",30],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NO"); - add_srs_wkt (p, 11, - "RTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2320\"]]"); - p = add_epsg_def (filter, first, last, 2321, "epsg", 2321, - "ED50 / TM33"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / TM33\",GEOGCS[\"ED50\",DATUM[\"European_"); - add_srs_wkt (p, 1, - "Datum_1950\",SPHEROID[\"International 1924\",6378388,297"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",33],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NO"); - add_srs_wkt (p, 11, - "RTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2321\"]]"); - p = add_epsg_def (filter, first, last, 2322, "epsg", 2322, - "ED50 / TM36"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / TM36\",GEOGCS[\"ED50\",DATUM[\"European_"); - add_srs_wkt (p, 1, - "Datum_1950\",SPHEROID[\"International 1924\",6378388,297"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",36],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NO"); - add_srs_wkt (p, 11, - "RTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2322\"]]"); - p = add_epsg_def (filter, first, last, 2323, "epsg", 2323, - "ED50 / TM39"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / TM39\",GEOGCS[\"ED50\",DATUM[\"European_"); - add_srs_wkt (p, 1, - "Datum_1950\",SPHEROID[\"International 1924\",6378388,297"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",39],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NO"); - add_srs_wkt (p, 11, - "RTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2323\"]]"); - p = add_epsg_def (filter, first, last, 2324, "epsg", 2324, - "ED50 / TM42"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / TM42\",GEOGCS[\"ED50\",DATUM[\"European_"); - add_srs_wkt (p, 1, - "Datum_1950\",SPHEROID[\"International 1924\",6378388,297"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",42],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NO"); - add_srs_wkt (p, 11, - "RTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2324\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_03.c b/src/spatialite/src/srsinit/epsg_inlined_03.c deleted file mode 100644 index 217f758..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_03.c +++ /dev/null @@ -1,3240 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_03 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 2325, "epsg", 2325, - "ED50 / TM45"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / TM45\",GEOGCS[\"ED50\",DATUM[\"European_"); - add_srs_wkt (p, 1, - "Datum_1950\",SPHEROID[\"International 1924\",6378388,297"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",45],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NO"); - add_srs_wkt (p, 11, - "RTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2325\"]]"); - p = add_epsg_def (filter, first, last, 2326, "epsg", 2326, - "Hong Kong 1980 Grid System"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=22.31213333333334 +lon_0=114.17855555"); - add_proj4text (p, 1, - "55556 +k=1 +x_0=836694.05 +y_0=819069.8 +ellps=intl +tow"); - add_proj4text (p, 2, - "gs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.158"); - add_proj4text (p, 3, - "83,-1.09425 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Hong Kong 1980 Grid System\",GEOGCS[\"Hong Kong"); - add_srs_wkt (p, 1, - " 1980\",DATUM[\"Hong_Kong_1980\",SPHEROID[\"Internationa"); - add_srs_wkt (p, 2, - "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883"); - add_srs_wkt (p, 4, - ",-1.09425],AUTHORITY[\"EPSG\",\"6611\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 5, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4611\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"latitude_of_origin\",22.31213333333334],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"central_meridian\",114.1785555555556],PARAMETER"); - add_srs_wkt (p, 10, - "[\"scale_factor\",1],PARAMETER[\"false_easting\",836694."); - add_srs_wkt (p, 11, - "05],PARAMETER[\"false_northing\",819069.8],UNIT[\"metre\""); - add_srs_wkt (p, 12, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 13, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"2326\"]]"); - p = add_epsg_def (filter, first, last, 2327, "epsg", 2327, - "Xian 1980 / Gauss-Kruger zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0"); - add_proj4text (p, 1, - " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger zone 13\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",75],PARAMETER["); - add_srs_wkt (p, 8, - "\"scale_factor\",1],PARAMETER[\"false_easting\",13500000"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EA"); - add_srs_wkt (p, 11, - "ST],AUTHORITY[\"EPSG\",\"2327\"]]"); - p = add_epsg_def (filter, first, last, 2328, "epsg", 2328, - "Xian 1980 / Gauss-Kruger zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0"); - add_proj4text (p, 1, - " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger zone 14\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",81],PARAMETER["); - add_srs_wkt (p, 8, - "\"scale_factor\",1],PARAMETER[\"false_easting\",14500000"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EA"); - add_srs_wkt (p, 11, - "ST],AUTHORITY[\"EPSG\",\"2328\"]]"); - p = add_epsg_def (filter, first, last, 2329, "epsg", 2329, - "Xian 1980 / Gauss-Kruger zone 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0"); - add_proj4text (p, 1, - " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger zone 15\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",87],PARAMETER["); - add_srs_wkt (p, 8, - "\"scale_factor\",1],PARAMETER[\"false_easting\",15500000"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EA"); - add_srs_wkt (p, 11, - "ST],AUTHORITY[\"EPSG\",\"2329\"]]"); - p = add_epsg_def (filter, first, last, 2330, "epsg", 2330, - "Xian 1980 / Gauss-Kruger zone 16"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0"); - add_proj4text (p, 1, - " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger zone 16\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",93],PARAMETER["); - add_srs_wkt (p, 8, - "\"scale_factor\",1],PARAMETER[\"false_easting\",16500000"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EA"); - add_srs_wkt (p, 11, - "ST],AUTHORITY[\"EPSG\",\"2330\"]]"); - p = add_epsg_def (filter, first, last, 2331, "epsg", 2331, - "Xian 1980 / Gauss-Kruger zone 17"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0"); - add_proj4text (p, 1, - " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger zone 17\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",99],PARAMETER["); - add_srs_wkt (p, 8, - "\"scale_factor\",1],PARAMETER[\"false_easting\",17500000"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EA"); - add_srs_wkt (p, 11, - "ST],AUTHORITY[\"EPSG\",\"2331\"]]"); - p = add_epsg_def (filter, first, last, 2332, "epsg", 2332, - "Xian 1980 / Gauss-Kruger zone 18"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger zone 18\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",105],PARAMETER"); - add_srs_wkt (p, 8, - "[\"scale_factor\",1],PARAMETER[\"false_easting\",1850000"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 10, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 11, - "AST],AUTHORITY[\"EPSG\",\"2332\"]]"); - p = add_epsg_def (filter, first, last, 2333, "epsg", 2333, - "Xian 1980 / Gauss-Kruger zone 19"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger zone 19\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",111],PARAMETER"); - add_srs_wkt (p, 8, - "[\"scale_factor\",1],PARAMETER[\"false_easting\",1950000"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 10, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 11, - "AST],AUTHORITY[\"EPSG\",\"2333\"]]"); - p = add_epsg_def (filter, first, last, 2334, "epsg", 2334, - "Xian 1980 / Gauss-Kruger zone 20"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger zone 20\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",117],PARAMETER"); - add_srs_wkt (p, 8, - "[\"scale_factor\",1],PARAMETER[\"false_easting\",2050000"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 10, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 11, - "AST],AUTHORITY[\"EPSG\",\"2334\"]]"); - p = add_epsg_def (filter, first, last, 2335, "epsg", 2335, - "Xian 1980 / Gauss-Kruger zone 21"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger zone 21\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",123],PARAMETER"); - add_srs_wkt (p, 8, - "[\"scale_factor\",1],PARAMETER[\"false_easting\",2150000"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 10, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 11, - "AST],AUTHORITY[\"EPSG\",\"2335\"]]"); - p = add_epsg_def (filter, first, last, 2336, "epsg", 2336, - "Xian 1980 / Gauss-Kruger zone 22"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger zone 22\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",129],PARAMETER"); - add_srs_wkt (p, 8, - "[\"scale_factor\",1],PARAMETER[\"false_easting\",2250000"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 10, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 11, - "AST],AUTHORITY[\"EPSG\",\"2336\"]]"); - p = add_epsg_def (filter, first, last, 2337, "epsg", 2337, - "Xian 1980 / Gauss-Kruger zone 23"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger zone 23\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",135],PARAMETER"); - add_srs_wkt (p, 8, - "[\"scale_factor\",1],PARAMETER[\"false_easting\",2350000"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 10, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 11, - "AST],AUTHORITY[\"EPSG\",\"2337\"]]"); - p = add_epsg_def (filter, first, last, 2338, "epsg", 2338, - "Xian 1980 / Gauss-Kruger CM 75E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger CM 75E\",GEOGCS[\"Xian"); - add_srs_wkt (p, 1, - " 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",637814"); - add_srs_wkt (p, 2, - "0,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJEC"); - add_srs_wkt (p, 6, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 7, - "igin\",0],PARAMETER[\"central_meridian\",75],PARAMETER[\""); - add_srs_wkt (p, 8, - "scale_factor\",1],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 10, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"2338\"]]"); - p = add_epsg_def (filter, first, last, 2339, "epsg", 2339, - "Xian 1980 / Gauss-Kruger CM 81E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger CM 81E\",GEOGCS[\"Xian"); - add_srs_wkt (p, 1, - " 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",637814"); - add_srs_wkt (p, 2, - "0,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJEC"); - add_srs_wkt (p, 6, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 7, - "igin\",0],PARAMETER[\"central_meridian\",81],PARAMETER[\""); - add_srs_wkt (p, 8, - "scale_factor\",1],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 10, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"2339\"]]"); - p = add_epsg_def (filter, first, last, 2340, "epsg", 2340, - "Xian 1980 / Gauss-Kruger CM 87E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger CM 87E\",GEOGCS[\"Xian"); - add_srs_wkt (p, 1, - " 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",637814"); - add_srs_wkt (p, 2, - "0,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJEC"); - add_srs_wkt (p, 6, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 7, - "igin\",0],PARAMETER[\"central_meridian\",87],PARAMETER[\""); - add_srs_wkt (p, 8, - "scale_factor\",1],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 10, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"2340\"]]"); - p = add_epsg_def (filter, first, last, 2341, "epsg", 2341, - "Xian 1980 / Gauss-Kruger CM 93E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger CM 93E\",GEOGCS[\"Xian"); - add_srs_wkt (p, 1, - " 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",637814"); - add_srs_wkt (p, 2, - "0,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJEC"); - add_srs_wkt (p, 6, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 7, - "igin\",0],PARAMETER[\"central_meridian\",93],PARAMETER[\""); - add_srs_wkt (p, 8, - "scale_factor\",1],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 10, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"2341\"]]"); - p = add_epsg_def (filter, first, last, 2342, "epsg", 2342, - "Xian 1980 / Gauss-Kruger CM 99E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger CM 99E\",GEOGCS[\"Xian"); - add_srs_wkt (p, 1, - " 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",637814"); - add_srs_wkt (p, 2, - "0,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJEC"); - add_srs_wkt (p, 6, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 7, - "igin\",0],PARAMETER[\"central_meridian\",99],PARAMETER[\""); - add_srs_wkt (p, 8, - "scale_factor\",1],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 10, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"2342\"]]"); - p = add_epsg_def (filter, first, last, 2343, "epsg", 2343, - "Xian 1980 / Gauss-Kruger CM 105E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger CM 105E\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",105],PARAMETER"); - add_srs_wkt (p, 8, - "[\"scale_factor\",1],PARAMETER[\"false_easting\",500000]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAS"); - add_srs_wkt (p, 11, - "T],AUTHORITY[\"EPSG\",\"2343\"]]"); - p = add_epsg_def (filter, first, last, 2344, "epsg", 2344, - "Xian 1980 / Gauss-Kruger CM 111E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger CM 111E\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",111],PARAMETER"); - add_srs_wkt (p, 8, - "[\"scale_factor\",1],PARAMETER[\"false_easting\",500000]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAS"); - add_srs_wkt (p, 11, - "T],AUTHORITY[\"EPSG\",\"2344\"]]"); - p = add_epsg_def (filter, first, last, 2345, "epsg", 2345, - "Xian 1980 / Gauss-Kruger CM 117E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger CM 117E\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",117],PARAMETER"); - add_srs_wkt (p, 8, - "[\"scale_factor\",1],PARAMETER[\"false_easting\",500000]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAS"); - add_srs_wkt (p, 11, - "T],AUTHORITY[\"EPSG\",\"2345\"]]"); - p = add_epsg_def (filter, first, last, 2346, "epsg", 2346, - "Xian 1980 / Gauss-Kruger CM 123E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger CM 123E\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",123],PARAMETER"); - add_srs_wkt (p, 8, - "[\"scale_factor\",1],PARAMETER[\"false_easting\",500000]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAS"); - add_srs_wkt (p, 11, - "T],AUTHORITY[\"EPSG\",\"2346\"]]"); - p = add_epsg_def (filter, first, last, 2347, "epsg", 2347, - "Xian 1980 / Gauss-Kruger CM 129E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger CM 129E\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",129],PARAMETER"); - add_srs_wkt (p, 8, - "[\"scale_factor\",1],PARAMETER[\"false_easting\",500000]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAS"); - add_srs_wkt (p, 11, - "T],AUTHORITY[\"EPSG\",\"2347\"]]"); - p = add_epsg_def (filter, first, last, 2348, "epsg", 2348, - "Xian 1980 / Gauss-Kruger CM 135E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / Gauss-Kruger CM 135E\",GEOGCS[\"Xia"); - add_srs_wkt (p, 1, - "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); - add_srs_wkt (p, 2, - "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",135],PARAMETER"); - add_srs_wkt (p, 8, - "[\"scale_factor\",1],PARAMETER[\"false_easting\",500000]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAS"); - add_srs_wkt (p, 11, - "T],AUTHORITY[\"EPSG\",\"2348\"]]"); - p = add_epsg_def (filter, first, last, 2349, "epsg", 2349, - "Xian 1980 / 3-degree Gauss-Kruger zone 25"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0"); - add_proj4text (p, 1, - " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 25\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",75],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "25500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2349\"]]"); - p = add_epsg_def (filter, first, last, 2350, "epsg", 2350, - "Xian 1980 / 3-degree Gauss-Kruger zone 26"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0"); - add_proj4text (p, 1, - " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 26\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",78],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "26500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2350\"]]"); - p = add_epsg_def (filter, first, last, 2351, "epsg", 2351, - "Xian 1980 / 3-degree Gauss-Kruger zone 27"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0"); - add_proj4text (p, 1, - " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 27\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",81],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "27500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2351\"]]"); - p = add_epsg_def (filter, first, last, 2352, "epsg", 2352, - "Xian 1980 / 3-degree Gauss-Kruger zone 28"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0"); - add_proj4text (p, 1, - " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 28\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",84],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "28500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2352\"]]"); - p = add_epsg_def (filter, first, last, 2353, "epsg", 2353, - "Xian 1980 / 3-degree Gauss-Kruger zone 29"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0"); - add_proj4text (p, 1, - " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 29\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",87],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "29500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2353\"]]"); - p = add_epsg_def (filter, first, last, 2354, "epsg", 2354, - "Xian 1980 / 3-degree Gauss-Kruger zone 30"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0"); - add_proj4text (p, 1, - " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 30\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",90],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "30500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2354\"]]"); - p = add_epsg_def (filter, first, last, 2355, "epsg", 2355, - "Xian 1980 / 3-degree Gauss-Kruger zone 31"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0"); - add_proj4text (p, 1, - " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 31\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",93],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "31500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2355\"]]"); - p = add_epsg_def (filter, first, last, 2356, "epsg", 2356, - "Xian 1980 / 3-degree Gauss-Kruger zone 32"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0"); - add_proj4text (p, 1, - " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 32\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",96],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "32500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2356\"]]"); - p = add_epsg_def (filter, first, last, 2357, "epsg", 2357, - "Xian 1980 / 3-degree Gauss-Kruger zone 33"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0"); - add_proj4text (p, 1, - " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 33\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",99],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "33500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2357\"]]"); - p = add_epsg_def (filter, first, last, 2358, "epsg", 2358, - "Xian 1980 / 3-degree Gauss-Kruger zone 34"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 34\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",102],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",34500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2358\"]]"); - p = add_epsg_def (filter, first, last, 2359, "epsg", 2359, - "Xian 1980 / 3-degree Gauss-Kruger zone 35"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 35\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",105],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",35500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2359\"]]"); - p = add_epsg_def (filter, first, last, 2360, "epsg", 2360, - "Xian 1980 / 3-degree Gauss-Kruger zone 36"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 36\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",108],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",36500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2360\"]]"); - p = add_epsg_def (filter, first, last, 2361, "epsg", 2361, - "Xian 1980 / 3-degree Gauss-Kruger zone 37"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 37\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",111],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",37500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2361\"]]"); - p = add_epsg_def (filter, first, last, 2362, "epsg", 2362, - "Xian 1980 / 3-degree Gauss-Kruger zone 38"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 38\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",114],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",38500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2362\"]]"); - p = add_epsg_def (filter, first, last, 2363, "epsg", 2363, - "Xian 1980 / 3-degree Gauss-Kruger zone 39"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 39\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",117],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",39500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2363\"]]"); - p = add_epsg_def (filter, first, last, 2364, "epsg", 2364, - "Xian 1980 / 3-degree Gauss-Kruger zone 40"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 40\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",120],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",40500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2364\"]]"); - p = add_epsg_def (filter, first, last, 2365, "epsg", 2365, - "Xian 1980 / 3-degree Gauss-Kruger zone 41"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 41\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",123],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",41500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2365\"]]"); - p = add_epsg_def (filter, first, last, 2366, "epsg", 2366, - "Xian 1980 / 3-degree Gauss-Kruger zone 42"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 42\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",126],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",42500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2366\"]]"); - p = add_epsg_def (filter, first, last, 2367, "epsg", 2367, - "Xian 1980 / 3-degree Gauss-Kruger zone 43"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 43\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",129],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",43500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2367\"]]"); - p = add_epsg_def (filter, first, last, 2368, "epsg", 2368, - "Xian 1980 / 3-degree Gauss-Kruger zone 44"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 44\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",132],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",44500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2368\"]]"); - p = add_epsg_def (filter, first, last, 2369, "epsg", 2369, - "Xian 1980 / 3-degree Gauss-Kruger zone 45"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0="); - add_proj4text (p, 1, - "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 45\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",135],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",45500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"2369\"]]"); - p = add_epsg_def (filter, first, last, 2370, "epsg", 2370, - "Xian 1980 / 3-degree Gauss-Kruger CM 75E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 75E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); - add_srs_wkt (p, 2, - "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",75],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 10, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2370\"]]"); - p = add_epsg_def (filter, first, last, 2371, "epsg", 2371, - "Xian 1980 / 3-degree Gauss-Kruger CM 78E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 78E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); - add_srs_wkt (p, 2, - "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",78],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 10, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2371\"]]"); - p = add_epsg_def (filter, first, last, 2372, "epsg", 2372, - "Xian 1980 / 3-degree Gauss-Kruger CM 81E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 81E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); - add_srs_wkt (p, 2, - "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",81],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 10, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2372\"]]"); - p = add_epsg_def (filter, first, last, 2373, "epsg", 2373, - "Xian 1980 / 3-degree Gauss-Kruger CM 84E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 84E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); - add_srs_wkt (p, 2, - "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",84],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 10, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2373\"]]"); - p = add_epsg_def (filter, first, last, 2374, "epsg", 2374, - "Xian 1980 / 3-degree Gauss-Kruger CM 87E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 87E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); - add_srs_wkt (p, 2, - "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",87],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 10, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2374\"]]"); - p = add_epsg_def (filter, first, last, 2375, "epsg", 2375, - "Xian 1980 / 3-degree Gauss-Kruger CM 90E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 90E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); - add_srs_wkt (p, 2, - "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",90],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 10, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2375\"]]"); - p = add_epsg_def (filter, first, last, 2376, "epsg", 2376, - "Xian 1980 / 3-degree Gauss-Kruger CM 93E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 93E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); - add_srs_wkt (p, 2, - "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",93],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 10, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2376\"]]"); - p = add_epsg_def (filter, first, last, 2377, "epsg", 2377, - "Xian 1980 / 3-degree Gauss-Kruger CM 96E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 96E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); - add_srs_wkt (p, 2, - "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",96],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 10, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2377\"]]"); - p = add_epsg_def (filter, first, last, 2378, "epsg", 2378, - "Xian 1980 / 3-degree Gauss-Kruger CM 99E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 99E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); - add_srs_wkt (p, 2, - "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",99],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 10, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2378\"]]"); - p = add_epsg_def (filter, first, last, 2379, "epsg", 2379, - "Xian 1980 / 3-degree Gauss-Kruger CM 102E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 102E\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",102],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2379\"]]"); - p = add_epsg_def (filter, first, last, 2380, "epsg", 2380, - "Xian 1980 / 3-degree Gauss-Kruger CM 105E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 105E\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",105],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2380\"]]"); - p = add_epsg_def (filter, first, last, 2381, "epsg", 2381, - "Xian 1980 / 3-degree Gauss-Kruger CM 108E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 108E\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",108],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2381\"]]"); - p = add_epsg_def (filter, first, last, 2382, "epsg", 2382, - "Xian 1980 / 3-degree Gauss-Kruger CM 111E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 111E\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",111],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2382\"]]"); - p = add_epsg_def (filter, first, last, 2383, "epsg", 2383, - "Xian 1980 / 3-degree Gauss-Kruger CM 114E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 114E\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",114],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2383\"]]"); - p = add_epsg_def (filter, first, last, 2384, "epsg", 2384, - "Xian 1980 / 3-degree Gauss-Kruger CM 117E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 117E\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",117],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2384\"]]"); - p = add_epsg_def (filter, first, last, 2385, "epsg", 2385, - "Xian 1980 / 3-degree Gauss-Kruger CM 120E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 120E\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",120],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2385\"]]"); - p = add_epsg_def (filter, first, last, 2386, "epsg", 2386, - "Xian 1980 / 3-degree Gauss-Kruger CM 123E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 123E\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",123],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2386\"]]"); - p = add_epsg_def (filter, first, last, 2387, "epsg", 2387, - "Xian 1980 / 3-degree Gauss-Kruger CM 126E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 126E\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",126],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2387\"]]"); - p = add_epsg_def (filter, first, last, 2388, "epsg", 2388, - "Xian 1980 / 3-degree Gauss-Kruger CM 129E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 129E\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",129],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2388\"]]"); - p = add_epsg_def (filter, first, last, 2389, "epsg", 2389, - "Xian 1980 / 3-degree Gauss-Kruger CM 132E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 132E\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",132],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2389\"]]"); - p = add_epsg_def (filter, first, last, 2390, "epsg", 2390, - "Xian 1980 / 3-degree Gauss-Kruger CM 135E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 135E\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); - add_srs_wkt (p, 2, - "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",135],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2390\"]]"); - p = add_epsg_def (filter, first, last, 2391, "epsg", 2391, - "KKJ / Finland zone 1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=1500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.34"); - add_proj4text (p, 2, - "5,-1.376,1.496 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"KKJ / Finland zone 1\",GEOGCS[\"KKJ\",DATUM[\"K"); - add_srs_wkt (p, 1, - "artastokoordinaattijarjestelma_1966\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.49"); - add_srs_wkt (p, 4, - "6],AUTHORITY[\"EPSG\",\"6123\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4123\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",21],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",1500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2391\"]]"); - p = add_epsg_def (filter, first, last, 2392, "epsg", 2392, - "KKJ / Finland zone 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=2500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.34"); - add_proj4text (p, 2, - "5,-1.376,1.496 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"KKJ / Finland zone 2\",GEOGCS[\"KKJ\",DATUM[\"K"); - add_srs_wkt (p, 1, - "artastokoordinaattijarjestelma_1966\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.49"); - add_srs_wkt (p, 4, - "6],AUTHORITY[\"EPSG\",\"6123\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4123\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",24],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",2500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2392\"]]"); - p = add_epsg_def (filter, first, last, 2393, "epsg", 2393, - "KKJ / Finland Uniform Coordinate System"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.34"); - add_proj4text (p, 2, - "5,-1.376,1.496 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"KKJ / Finland Uniform Coordinate System\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"KKJ\",DATUM[\"Kartastokoordinaattijarjestelma_1966\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7022\"]],TOWGS84[-96.062,-82.428,-121.753,4.801"); - add_srs_wkt (p, 4, - ",0.345,-1.376,1.496],AUTHORITY[\"EPSG\",\"6123\"]],PRIME"); - add_srs_wkt (p, 5, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 6, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 7, - ",AUTHORITY[\"EPSG\",\"4123\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 8, - "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); - add_srs_wkt (p, 9, - "[\"central_meridian\",27],PARAMETER[\"scale_factor\",1],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",3500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 11, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2393\"]]"); - p = add_epsg_def (filter, first, last, 2394, "epsg", 2394, - "KKJ / Finland zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=4500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.34"); - add_proj4text (p, 2, - "5,-1.376,1.496 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"KKJ / Finland zone 4\",GEOGCS[\"KKJ\",DATUM[\"K"); - add_srs_wkt (p, 1, - "artastokoordinaattijarjestelma_1966\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.49"); - add_srs_wkt (p, 4, - "6],AUTHORITY[\"EPSG\",\"6123\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4123\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",30],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",4500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2394\"]]"); - p = add_epsg_def (filter, first, last, 2395, "epsg", 2395, - "South Yemen / Gauss-Kruger zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"South Yemen / Gauss-Kruger zone 8\",GEOGCS[\"So"); - add_srs_wkt (p, 1, - "uth Yemen\",DATUM[\"South_Yemen\",SPHEROID[\"Krassowsky "); - add_srs_wkt (p, 2, - "1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[-76,-138,67,0,0,0,0],AUTHORITY[\"EPSG\",\"6164\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4164\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",45],PARAMETER[\"scale_factor\",1"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",8500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"2395\"]]"); - p = add_epsg_def (filter, first, last, 2396, "epsg", 2396, - "South Yemen / Gauss-Kruger zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"South Yemen / Gauss-Kruger zone 9\",GEOGCS[\"So"); - add_srs_wkt (p, 1, - "uth Yemen\",DATUM[\"South_Yemen\",SPHEROID[\"Krassowsky "); - add_srs_wkt (p, 2, - "1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[-76,-138,67,0,0,0,0],AUTHORITY[\"EPSG\",\"6164\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4164\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",51],PARAMETER[\"scale_factor\",1"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",9500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"2396\"]]"); - p = add_epsg_def (filter, first, last, 2397, "epsg", 2397, - "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",9],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",350"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2397\"]]"); - p = add_epsg_def (filter, first, last, 2398, "epsg", 2398, - "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",12],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",45"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2398\"]]"); - p = add_epsg_def (filter, first, last, 2399, "epsg", 2399, - "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 5"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",15],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",55"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2399\"]]"); - p = add_epsg_def (filter, first, last, 2400, "epsg", 2400, - "RT90 2.5 gon W (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0="); - add_proj4text (p, 1, - "1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-"); - add_proj4text (p, 2, - "0.855,2.141,-7.023,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RT90 2.5 gon W (deprecated)\",GEOGCS[\"RT90\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Rikets_koordinatsystem_1990\",SPHEROID[\"Bessel 1"); - add_srs_wkt (p, 2, - "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); - add_srs_wkt (p, 3, - "]],TOWGS84[414.1,41.3,603.1,-0.855,2.141,-7.023,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6124\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4124"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",15.8"); - add_srs_wkt (p, 9, - "0827777777778],PARAMETER[\"scale_factor\",1],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",1500000],PARAMETER[\"false_northing\",0]"); - add_srs_wkt (p, 11, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); - add_srs_wkt (p, 12, - "\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2400\"]]"); - p = add_epsg_def (filter, first, last, 2401, "epsg", 2401, - "Beijing 1954 / 3-degree Gauss-Kruger zone 25"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 25\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",75],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",255000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"2401\"]]"); - p = add_epsg_def (filter, first, last, 2402, "epsg", 2402, - "Beijing 1954 / 3-degree Gauss-Kruger zone 26"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 26\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",78],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",265000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"2402\"]]"); - p = add_epsg_def (filter, first, last, 2403, "epsg", 2403, - "Beijing 1954 / 3-degree Gauss-Kruger zone 27"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 27\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",81],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",275000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"2403\"]]"); - p = add_epsg_def (filter, first, last, 2404, "epsg", 2404, - "Beijing 1954 / 3-degree Gauss-Kruger zone 28"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 28\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",84],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",285000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"2404\"]]"); - p = add_epsg_def (filter, first, last, 2405, "epsg", 2405, - "Beijing 1954 / 3-degree Gauss-Kruger zone 29"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 29\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",87],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",295000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"2405\"]]"); - p = add_epsg_def (filter, first, last, 2406, "epsg", 2406, - "Beijing 1954 / 3-degree Gauss-Kruger zone 30"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 30\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",90],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",305000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"2406\"]]"); - p = add_epsg_def (filter, first, last, 2407, "epsg", 2407, - "Beijing 1954 / 3-degree Gauss-Kruger zone 31"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 31\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",93],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",315000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"2407\"]]"); - p = add_epsg_def (filter, first, last, 2408, "epsg", 2408, - "Beijing 1954 / 3-degree Gauss-Kruger zone 32"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 32\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",96],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",325000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"2408\"]]"); - p = add_epsg_def (filter, first, last, 2409, "epsg", 2409, - "Beijing 1954 / 3-degree Gauss-Kruger zone 33"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 33\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",99],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",335000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"2409\"]]"); - p = add_epsg_def (filter, first, last, 2410, "epsg", 2410, - "Beijing 1954 / 3-degree Gauss-Kruger zone 34"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 34\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",102],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",34500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2410\"]]"); - p = add_epsg_def (filter, first, last, 2411, "epsg", 2411, - "Beijing 1954 / 3-degree Gauss-Kruger zone 35"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 35\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",105],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",35500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2411\"]]"); - p = add_epsg_def (filter, first, last, 2412, "epsg", 2412, - "Beijing 1954 / 3-degree Gauss-Kruger zone 36"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 36\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",108],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",36500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2412\"]]"); - p = add_epsg_def (filter, first, last, 2413, "epsg", 2413, - "Beijing 1954 / 3-degree Gauss-Kruger zone 37"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 37\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",111],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",37500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2413\"]]"); - p = add_epsg_def (filter, first, last, 2414, "epsg", 2414, - "Beijing 1954 / 3-degree Gauss-Kruger zone 38"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 38\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",114],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",38500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2414\"]]"); - p = add_epsg_def (filter, first, last, 2415, "epsg", 2415, - "Beijing 1954 / 3-degree Gauss-Kruger zone 39"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 39\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",117],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",39500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2415\"]]"); - p = add_epsg_def (filter, first, last, 2416, "epsg", 2416, - "Beijing 1954 / 3-degree Gauss-Kruger zone 40"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 40\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",120],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",40500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2416\"]]"); - p = add_epsg_def (filter, first, last, 2417, "epsg", 2417, - "Beijing 1954 / 3-degree Gauss-Kruger zone 41"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 41\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",123],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",41500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2417\"]]"); - p = add_epsg_def (filter, first, last, 2418, "epsg", 2418, - "Beijing 1954 / 3-degree Gauss-Kruger zone 42"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 42\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",126],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",42500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2418\"]]"); - p = add_epsg_def (filter, first, last, 2419, "epsg", 2419, - "Beijing 1954 / 3-degree Gauss-Kruger zone 43"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 43\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",129],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",43500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2419\"]]"); - p = add_epsg_def (filter, first, last, 2420, "epsg", 2420, - "Beijing 1954 / 3-degree Gauss-Kruger zone 44"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 44\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",132],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",44500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2420\"]]"); - p = add_epsg_def (filter, first, last, 2421, "epsg", 2421, - "Beijing 1954 / 3-degree Gauss-Kruger zone 45"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 45\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",135],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",45500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2421\"]]"); - p = add_epsg_def (filter, first, last, 2422, "epsg", 2422, - "Beijing 1954 / 3-degree Gauss-Kruger CM 75E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 75E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",75],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST"); - add_srs_wkt (p, 12, - "],AUTHORITY[\"EPSG\",\"2422\"]]"); - p = add_epsg_def (filter, first, last, 2423, "epsg", 2423, - "Beijing 1954 / 3-degree Gauss-Kruger CM 78E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 78E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",78],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST"); - add_srs_wkt (p, 12, - "],AUTHORITY[\"EPSG\",\"2423\"]]"); - p = add_epsg_def (filter, first, last, 2424, "epsg", 2424, - "Beijing 1954 / 3-degree Gauss-Kruger CM 81E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 81E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",81],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST"); - add_srs_wkt (p, 12, - "],AUTHORITY[\"EPSG\",\"2424\"]]"); - p = add_epsg_def (filter, first, last, 2425, "epsg", 2425, - "Beijing 1954 / 3-degree Gauss-Kruger CM 84E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 84E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",84],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST"); - add_srs_wkt (p, 12, - "],AUTHORITY[\"EPSG\",\"2425\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_04.c b/src/spatialite/src/srsinit/epsg_inlined_04.c deleted file mode 100644 index f4f0967..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_04.c +++ /dev/null @@ -1,3466 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_04 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 2426, "epsg", 2426, - "Beijing 1954 / 3-degree Gauss-Kruger CM 87E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 87E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",87],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST"); - add_srs_wkt (p, 12, - "],AUTHORITY[\"EPSG\",\"2426\"]]"); - p = add_epsg_def (filter, first, last, 2427, "epsg", 2427, - "Beijing 1954 / 3-degree Gauss-Kruger CM 90E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 90E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",90],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST"); - add_srs_wkt (p, 12, - "],AUTHORITY[\"EPSG\",\"2427\"]]"); - p = add_epsg_def (filter, first, last, 2428, "epsg", 2428, - "Beijing 1954 / 3-degree Gauss-Kruger CM 93E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 93E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",93],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST"); - add_srs_wkt (p, 12, - "],AUTHORITY[\"EPSG\",\"2428\"]]"); - p = add_epsg_def (filter, first, last, 2429, "epsg", 2429, - "Beijing 1954 / 3-degree Gauss-Kruger CM 96E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 96E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",96],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST"); - add_srs_wkt (p, 12, - "],AUTHORITY[\"EPSG\",\"2429\"]]"); - p = add_epsg_def (filter, first, last, 2430, "epsg", 2430, - "Beijing 1954 / 3-degree Gauss-Kruger CM 99E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 99E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",99],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST"); - add_srs_wkt (p, 12, - "],AUTHORITY[\"EPSG\",\"2430\"]]"); - p = add_epsg_def (filter, first, last, 2431, "epsg", 2431, - "Beijing 1954 / 3-degree Gauss-Kruger CM 102E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 102E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",102],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2431\"]]"); - p = add_epsg_def (filter, first, last, 2432, "epsg", 2432, - "Beijing 1954 / 3-degree Gauss-Kruger CM 105E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 105E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",105],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2432\"]]"); - p = add_epsg_def (filter, first, last, 2433, "epsg", 2433, - "Beijing 1954 / 3-degree Gauss-Kruger CM 108E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 108E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",108],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2433\"]]"); - p = add_epsg_def (filter, first, last, 2434, "epsg", 2434, - "Beijing 1954 / 3-degree Gauss-Kruger CM 111E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 111E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",111],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2434\"]]"); - p = add_epsg_def (filter, first, last, 2435, "epsg", 2435, - "Beijing 1954 / 3-degree Gauss-Kruger CM 114E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 114E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",114],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2435\"]]"); - p = add_epsg_def (filter, first, last, 2436, "epsg", 2436, - "Beijing 1954 / 3-degree Gauss-Kruger CM 117E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 117E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",117],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2436\"]]"); - p = add_epsg_def (filter, first, last, 2437, "epsg", 2437, - "Beijing 1954 / 3-degree Gauss-Kruger CM 120E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 120E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",120],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2437\"]]"); - p = add_epsg_def (filter, first, last, 2438, "epsg", 2438, - "Beijing 1954 / 3-degree Gauss-Kruger CM 123E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 123E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",123],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2438\"]]"); - p = add_epsg_def (filter, first, last, 2439, "epsg", 2439, - "Beijing 1954 / 3-degree Gauss-Kruger CM 126E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 126E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",126],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2439\"]]"); - p = add_epsg_def (filter, first, last, 2440, "epsg", 2440, - "Beijing 1954 / 3-degree Gauss-Kruger CM 129E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 129E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",129],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2440\"]]"); - p = add_epsg_def (filter, first, last, 2441, "epsg", 2441, - "Beijing 1954 / 3-degree Gauss-Kruger CM 132E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 132E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",132],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2441\"]]"); - p = add_epsg_def (filter, first, last, 2442, "epsg", 2442, - "Beijing 1954 / 3-degree Gauss-Kruger CM 135E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 135E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",135],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2442\"]]"); - p = add_epsg_def (filter, first, last, 2443, "epsg", 2443, - "JGD2000 / Japan Plane Rectangular CS I"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS I\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",33],PARAMETER[\"central_meridian\",129.5],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST"); - add_srs_wkt (p, 12, - "],AUTHORITY[\"EPSG\",\"2443\"]]"); - p = add_epsg_def (filter, first, last, 2444, "epsg", 2444, - "JGD2000 / Japan Plane Rectangular CS II"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS II\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",33],PARAMETER[\"central_meridian\",131],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2444\"]]"); - p = add_epsg_def (filter, first, last, 2445, "epsg", 2445, - "JGD2000 / Japan Plane Rectangular CS III"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999"); - add_proj4text (p, 1, - " +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS III\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",36],PARAMETER[\"central_meridian\",132.166666666666"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2445\"]]"); - p = add_epsg_def (filter, first, last, 2446, "epsg", 2446, - "JGD2000 / Japan Plane Rectangular CS IV"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS IV\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",33],PARAMETER[\"central_meridian\",133.5],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"2446\"]]"); - p = add_epsg_def (filter, first, last, 2447, "epsg", 2447, - "JGD2000 / Japan Plane Rectangular CS V"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999"); - add_proj4text (p, 1, - " +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS V\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",36],PARAMETER[\"central_meridian\",134.3333333333333"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2447\"]]"); - p = add_epsg_def (filter, first, last, 2448, "epsg", 2448, - "JGD2000 / Japan Plane Rectangular CS VI"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS VI\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",36],PARAMETER[\"central_meridian\",136],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2448\"]]"); - p = add_epsg_def (filter, first, last, 2449, "epsg", 2449, - "JGD2000 / Japan Plane Rectangular CS VII"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999"); - add_proj4text (p, 1, - " +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS VII\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",36],PARAMETER[\"central_meridian\",137.166666666666"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2449\"]]"); - p = add_epsg_def (filter, first, last, 2450, "epsg", 2450, - "JGD2000 / Japan Plane Rectangular CS VIII"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS VIII\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",36],PARAMETER[\"central_meridian\",138.5],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",0.9999],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2450\"]]"); - p = add_epsg_def (filter, first, last, 2451, "epsg", 2451, - "JGD2000 / Japan Plane Rectangular CS IX"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999"); - add_proj4text (p, 1, - " +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS IX\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",36],PARAMETER[\"central_meridian\",139.833333333333"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2451\"]]"); - p = add_epsg_def (filter, first, last, 2452, "epsg", 2452, - "JGD2000 / Japan Plane Rectangular CS X"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999"); - add_proj4text (p, 1, - " +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS X\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",40],PARAMETER[\"central_meridian\",140.8333333333333"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2452\"]]"); - p = add_epsg_def (filter, first, last, 2453, "epsg", 2453, - "JGD2000 / Japan Plane Rectangular CS XI"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XI\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",44],PARAMETER[\"central_meridian\",140.25],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EA"); - add_srs_wkt (p, 12, - "ST],AUTHORITY[\"EPSG\",\"2453\"]]"); - p = add_epsg_def (filter, first, last, 2454, "epsg", 2454, - "JGD2000 / Japan Plane Rectangular CS XII"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XII\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",44],PARAMETER[\"central_meridian\",142.25],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EA"); - add_srs_wkt (p, 12, - "ST],AUTHORITY[\"EPSG\",\"2454\"]]"); - p = add_epsg_def (filter, first, last, 2455, "epsg", 2455, - "JGD2000 / Japan Plane Rectangular CS XIII"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XIII\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",44],PARAMETER[\"central_meridian\",144.25],PARAME"); - add_srs_wkt (p, 9, - "TER[\"scale_factor\",0.9999],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"2455\"]]"); - p = add_epsg_def (filter, first, last, 2456, "epsg", 2456, - "JGD2000 / Japan Plane Rectangular CS XIV"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XIV\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",26],PARAMETER[\"central_meridian\",142],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2456\"]]"); - p = add_epsg_def (filter, first, last, 2457, "epsg", 2457, - "JGD2000 / Japan Plane Rectangular CS XV"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XV\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",26],PARAMETER[\"central_meridian\",127.5],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"2457\"]]"); - p = add_epsg_def (filter, first, last, 2458, "epsg", 2458, - "JGD2000 / Japan Plane Rectangular CS XVI"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XVI\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",26],PARAMETER[\"central_meridian\",124],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2458\"]]"); - p = add_epsg_def (filter, first, last, 2459, "epsg", 2459, - "JGD2000 / Japan Plane Rectangular CS XVII"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XVII\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",26],PARAMETER[\"central_meridian\",131],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"2459\"]]"); - p = add_epsg_def (filter, first, last, 2460, "epsg", 2460, - "JGD2000 / Japan Plane Rectangular CS XVIII"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XVIII\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",20],PARAMETER[\"central_meridian\",136],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EA"); - add_srs_wkt (p, 12, - "ST],AUTHORITY[\"EPSG\",\"2460\"]]"); - p = add_epsg_def (filter, first, last, 2461, "epsg", 2461, - "JGD2000 / Japan Plane Rectangular CS XIX"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XIX\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",26],PARAMETER[\"central_meridian\",154],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2461\"]]"); - p = add_epsg_def (filter, first, last, 2462, "epsg", 2462, - "Albanian 1987 / Gauss-Kruger zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Albanian 1987 / Gauss-Kruger zone 4\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Albanian 1987\",DATUM[\"Albanian_1987\",SPHEROID[\"Krass"); - add_srs_wkt (p, 2, - "owsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6191\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4191\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",21],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 9, - "ting\",4500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 10, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 11, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2462\"]]"); - p = add_epsg_def (filter, first, last, 2463, "epsg", 2463, - "Pulkovo 1995 / Gauss-Kruger CM 21E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 21E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",21],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2463\"]]"); - p = add_epsg_def (filter, first, last, 2464, "epsg", 2464, - "Pulkovo 1995 / Gauss-Kruger CM 27E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 27E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",27],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2464\"]]"); - p = add_epsg_def (filter, first, last, 2465, "epsg", 2465, - "Pulkovo 1995 / Gauss-Kruger CM 33E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 33E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",33],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2465\"]]"); - p = add_epsg_def (filter, first, last, 2466, "epsg", 2466, - "Pulkovo 1995 / Gauss-Kruger CM 39E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 39E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",39],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2466\"]]"); - p = add_epsg_def (filter, first, last, 2467, "epsg", 2467, - "Pulkovo 1995 / Gauss-Kruger CM 45E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 45E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",45],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2467\"]]"); - p = add_epsg_def (filter, first, last, 2468, "epsg", 2468, - "Pulkovo 1995 / Gauss-Kruger CM 51E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 51E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",51],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2468\"]]"); - p = add_epsg_def (filter, first, last, 2469, "epsg", 2469, - "Pulkovo 1995 / Gauss-Kruger CM 57E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 57E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",57],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2469\"]]"); - p = add_epsg_def (filter, first, last, 2470, "epsg", 2470, - "Pulkovo 1995 / Gauss-Kruger CM 63E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 63E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",63],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2470\"]]"); - p = add_epsg_def (filter, first, last, 2471, "epsg", 2471, - "Pulkovo 1995 / Gauss-Kruger CM 69E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 69E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",69],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2471\"]]"); - p = add_epsg_def (filter, first, last, 2472, "epsg", 2472, - "Pulkovo 1995 / Gauss-Kruger CM 75E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 75E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",75],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2472\"]]"); - p = add_epsg_def (filter, first, last, 2473, "epsg", 2473, - "Pulkovo 1995 / Gauss-Kruger CM 81E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 81E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",81],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2473\"]]"); - p = add_epsg_def (filter, first, last, 2474, "epsg", 2474, - "Pulkovo 1995 / Gauss-Kruger CM 87E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 87E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",87],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2474\"]]"); - p = add_epsg_def (filter, first, last, 2475, "epsg", 2475, - "Pulkovo 1995 / Gauss-Kruger CM 93E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 93E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",93],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2475\"]]"); - p = add_epsg_def (filter, first, last, 2476, "epsg", 2476, - "Pulkovo 1995 / Gauss-Kruger CM 99E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 99E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",99],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"2476\"]]"); - p = add_epsg_def (filter, first, last, 2477, "epsg", 2477, - "Pulkovo 1995 / Gauss-Kruger CM 105E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 105E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",105],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2477\"]]"); - p = add_epsg_def (filter, first, last, 2478, "epsg", 2478, - "Pulkovo 1995 / Gauss-Kruger CM 111E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 111E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",111],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2478\"]]"); - p = add_epsg_def (filter, first, last, 2479, "epsg", 2479, - "Pulkovo 1995 / Gauss-Kruger CM 117E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 117E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",117],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2479\"]]"); - p = add_epsg_def (filter, first, last, 2480, "epsg", 2480, - "Pulkovo 1995 / Gauss-Kruger CM 123E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 123E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",123],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2480\"]]"); - p = add_epsg_def (filter, first, last, 2481, "epsg", 2481, - "Pulkovo 1995 / Gauss-Kruger CM 129E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 129E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",129],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2481\"]]"); - p = add_epsg_def (filter, first, last, 2482, "epsg", 2482, - "Pulkovo 1995 / Gauss-Kruger CM 135E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 135E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",135],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2482\"]]"); - p = add_epsg_def (filter, first, last, 2483, "epsg", 2483, - "Pulkovo 1995 / Gauss-Kruger CM 141E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 141E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",141],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2483\"]]"); - p = add_epsg_def (filter, first, last, 2484, "epsg", 2484, - "Pulkovo 1995 / Gauss-Kruger CM 147E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 147E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",147],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2484\"]]"); - p = add_epsg_def (filter, first, last, 2485, "epsg", 2485, - "Pulkovo 1995 / Gauss-Kruger CM 153E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 153E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",153],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2485\"]]"); - p = add_epsg_def (filter, first, last, 2486, "epsg", 2486, - "Pulkovo 1995 / Gauss-Kruger CM 159E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 159E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",159],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2486\"]]"); - p = add_epsg_def (filter, first, last, 2487, "epsg", 2487, - "Pulkovo 1995 / Gauss-Kruger CM 165E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 165E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",165],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2487\"]]"); - p = add_epsg_def (filter, first, last, 2488, "epsg", 2488, - "Pulkovo 1995 / Gauss-Kruger CM 171E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 171E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",171],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2488\"]]"); - p = add_epsg_def (filter, first, last, 2489, "epsg", 2489, - "Pulkovo 1995 / Gauss-Kruger CM 177E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 177E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",177],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2489\"]]"); - p = add_epsg_def (filter, first, last, 2490, "epsg", 2490, - "Pulkovo 1995 / Gauss-Kruger CM 177W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 177W\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",-177],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2490\"]]"); - p = add_epsg_def (filter, first, last, 2491, "epsg", 2491, - "Pulkovo 1995 / Gauss-Kruger CM 171W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 171W\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",-171],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2491\"]]"); - p = add_epsg_def (filter, first, last, 2492, "epsg", 2492, - "Pulkovo 1942 / Gauss-Kruger CM 9E (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +e"); - add_proj4text (p, 1, - "llps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0."); - add_proj4text (p, 2, - "12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 9E (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2492\"]]"); - p = add_epsg_def (filter, first, last, 2493, "epsg", 2493, - "Pulkovo 1942 / Gauss-Kruger CM 15E (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 15E (deprecated)"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.1"); - add_srs_wkt (p, 4, - "2],AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",15],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2493\"]]"); - p = add_epsg_def (filter, first, last, 2494, "epsg", 2494, - "Pulkovo 1942 / Gauss-Kruger CM 21E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 21E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",21],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2494\"]]"); - p = add_epsg_def (filter, first, last, 2495, "epsg", 2495, - "Pulkovo 1942 / Gauss-Kruger CM 27E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 27E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",27],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2495\"]]"); - p = add_epsg_def (filter, first, last, 2496, "epsg", 2496, - "Pulkovo 1942 / Gauss-Kruger CM 33E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 33E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",33],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2496\"]]"); - p = add_epsg_def (filter, first, last, 2497, "epsg", 2497, - "Pulkovo 1942 / Gauss-Kruger CM 39E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 39E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",39],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2497\"]]"); - p = add_epsg_def (filter, first, last, 2498, "epsg", 2498, - "Pulkovo 1942 / Gauss-Kruger CM 45E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 45E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",45],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2498\"]]"); - p = add_epsg_def (filter, first, last, 2499, "epsg", 2499, - "Pulkovo 1942 / Gauss-Kruger CM 51E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 51E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",51],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2499\"]]"); - p = add_epsg_def (filter, first, last, 2500, "epsg", 2500, - "Pulkovo 1942 / Gauss-Kruger CM 57E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 57E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",57],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2500\"]]"); - p = add_epsg_def (filter, first, last, 2501, "epsg", 2501, - "Pulkovo 1942 / Gauss-Kruger CM 63E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 63E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",63],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2501\"]]"); - p = add_epsg_def (filter, first, last, 2502, "epsg", 2502, - "Pulkovo 1942 / Gauss-Kruger CM 69E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 69E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",69],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2502\"]]"); - p = add_epsg_def (filter, first, last, 2503, "epsg", 2503, - "Pulkovo 1942 / Gauss-Kruger CM 75E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 75E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",75],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2503\"]]"); - p = add_epsg_def (filter, first, last, 2504, "epsg", 2504, - "Pulkovo 1942 / Gauss-Kruger CM 81E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 81E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",81],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2504\"]]"); - p = add_epsg_def (filter, first, last, 2505, "epsg", 2505, - "Pulkovo 1942 / Gauss-Kruger CM 87E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 87E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",87],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2505\"]]"); - p = add_epsg_def (filter, first, last, 2506, "epsg", 2506, - "Pulkovo 1942 / Gauss-Kruger CM 93E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 93E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",93],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2506\"]]"); - p = add_epsg_def (filter, first, last, 2507, "epsg", 2507, - "Pulkovo 1942 / Gauss-Kruger CM 99E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 99E\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",99],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"2507\"]]"); - p = add_epsg_def (filter, first, last, 2508, "epsg", 2508, - "Pulkovo 1942 / Gauss-Kruger CM 105E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 105E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",105],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2508\"]]"); - p = add_epsg_def (filter, first, last, 2509, "epsg", 2509, - "Pulkovo 1942 / Gauss-Kruger CM 111E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 111E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",111],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2509\"]]"); - p = add_epsg_def (filter, first, last, 2510, "epsg", 2510, - "Pulkovo 1942 / Gauss-Kruger CM 117E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 117E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",117],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2510\"]]"); - p = add_epsg_def (filter, first, last, 2511, "epsg", 2511, - "Pulkovo 1942 / Gauss-Kruger CM 123E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 123E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",123],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2511\"]]"); - p = add_epsg_def (filter, first, last, 2512, "epsg", 2512, - "Pulkovo 1942 / Gauss-Kruger CM 129E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 129E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",129],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2512\"]]"); - p = add_epsg_def (filter, first, last, 2513, "epsg", 2513, - "Pulkovo 1942 / Gauss-Kruger CM 135E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 135E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",135],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2513\"]]"); - p = add_epsg_def (filter, first, last, 2514, "epsg", 2514, - "Pulkovo 1942 / Gauss-Kruger CM 141E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 141E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",141],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2514\"]]"); - p = add_epsg_def (filter, first, last, 2515, "epsg", 2515, - "Pulkovo 1942 / Gauss-Kruger CM 147E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 147E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",147],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2515\"]]"); - p = add_epsg_def (filter, first, last, 2516, "epsg", 2516, - "Pulkovo 1942 / Gauss-Kruger CM 153E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 153E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",153],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2516\"]]"); - p = add_epsg_def (filter, first, last, 2517, "epsg", 2517, - "Pulkovo 1942 / Gauss-Kruger CM 159E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 159E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",159],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2517\"]]"); - p = add_epsg_def (filter, first, last, 2518, "epsg", 2518, - "Pulkovo 1942 / Gauss-Kruger CM 165E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 165E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",165],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2518\"]]"); - p = add_epsg_def (filter, first, last, 2519, "epsg", 2519, - "Pulkovo 1942 / Gauss-Kruger CM 171E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 171E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",171],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2519\"]]"); - p = add_epsg_def (filter, first, last, 2520, "epsg", 2520, - "Pulkovo 1942 / Gauss-Kruger CM 177E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 177E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",177],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"2520\"]]"); - p = add_epsg_def (filter, first, last, 2521, "epsg", 2521, - "Pulkovo 1942 / Gauss-Kruger CM 177W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 177W\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",-177],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2521\"]]"); - p = add_epsg_def (filter, first, last, 2522, "epsg", 2522, - "Pulkovo 1942 / Gauss-Kruger CM 171W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 171W\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",-171],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"2522\"]]"); - p = add_epsg_def (filter, first, last, 2523, "epsg", 2523, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 7\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",7500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2523\"]]"); - p = add_epsg_def (filter, first, last, 2524, "epsg", 2524, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 8\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); - add_srs_wkt (p, 9, - "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",8500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2524\"]]"); - p = add_epsg_def (filter, first, last, 2525, "epsg", 2525, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 9\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",9500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2525\"]]"); - p = add_epsg_def (filter, first, last, 2526, "epsg", 2526, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 10"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 10\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",10500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2526\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_05.c b/src/spatialite/src/srsinit/epsg_inlined_05.c deleted file mode 100644 index 5cc4275..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_05.c +++ /dev/null @@ -1,3492 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_05 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 2527, "epsg", 2527, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 11"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 11\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",11500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2527\"]]"); - p = add_epsg_def (filter, first, last, 2528, "epsg", 2528, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 12"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 12\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",12500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2528\"]]"); - p = add_epsg_def (filter, first, last, 2529, "epsg", 2529, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 13\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",13500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2529\"]]"); - p = add_epsg_def (filter, first, last, 2530, "epsg", 2530, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 14\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); - add_srs_wkt (p, 9, - "2],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",14500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2530\"]]"); - p = add_epsg_def (filter, first, last, 2531, "epsg", 2531, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 15\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",15500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2531\"]]"); - p = add_epsg_def (filter, first, last, 2532, "epsg", 2532, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 16"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 16\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); - add_srs_wkt (p, 9, - "8],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",16500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2532\"]]"); - p = add_epsg_def (filter, first, last, 2533, "epsg", 2533, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 17"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 17\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",17500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2533\"]]"); - p = add_epsg_def (filter, first, last, 2534, "epsg", 2534, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 18"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 18\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); - add_srs_wkt (p, 9, - "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",18500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2534\"]]"); - p = add_epsg_def (filter, first, last, 2535, "epsg", 2535, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 19"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 19\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",19500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2535\"]]"); - p = add_epsg_def (filter, first, last, 2536, "epsg", 2536, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 20"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 20\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",20500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2536\"]]"); - p = add_epsg_def (filter, first, last, 2537, "epsg", 2537, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 21"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 21\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",21500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2537\"]]"); - p = add_epsg_def (filter, first, last, 2538, "epsg", 2538, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 22"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 22\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",22500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2538\"]]"); - p = add_epsg_def (filter, first, last, 2539, "epsg", 2539, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 23"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 23\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",23500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2539\"]]"); - p = add_epsg_def (filter, first, last, 2540, "epsg", 2540, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 24"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 24\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); - add_srs_wkt (p, 9, - "2],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",24500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2540\"]]"); - p = add_epsg_def (filter, first, last, 2541, "epsg", 2541, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 25"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 25\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",25500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2541\"]]"); - p = add_epsg_def (filter, first, last, 2542, "epsg", 2542, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 26"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 26\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); - add_srs_wkt (p, 9, - "8],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",26500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2542\"]]"); - p = add_epsg_def (filter, first, last, 2543, "epsg", 2543, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 27"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 27\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",27500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2543\"]]"); - p = add_epsg_def (filter, first, last, 2544, "epsg", 2544, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 28"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 28\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); - add_srs_wkt (p, 9, - "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",28500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2544\"]]"); - p = add_epsg_def (filter, first, last, 2545, "epsg", 2545, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 29"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 29\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",29500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2545\"]]"); - p = add_epsg_def (filter, first, last, 2546, "epsg", 2546, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 30"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 30\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",30500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2546\"]]"); - p = add_epsg_def (filter, first, last, 2547, "epsg", 2547, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 31"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 31\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",31500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2547\"]]"); - p = add_epsg_def (filter, first, last, 2548, "epsg", 2548, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 32"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 32\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",32500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2548\"]]"); - p = add_epsg_def (filter, first, last, 2549, "epsg", 2549, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 33"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 33\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",33500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2549\"]]"); - p = add_epsg_def (filter, first, last, 2550, "epsg", 2550, - "Samboja / UTM zone 50S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +south +ellps=bessel +towgs84=-404.78"); - add_proj4text (p, 1, - ",685.68,45.47,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Samboja / UTM zone 50S (deprecated)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Samboja\",DATUM[\"Samboja\",SPHEROID[\"Bessel 1841\",637"); - add_srs_wkt (p, 2, - "7397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[-404.78,685.68,45.47,0,0,0,0],AUTHORITY[\"EPSG\",\"61"); - add_srs_wkt (p, 4, - "25\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9108\"]],AUTHORITY[\"EPSG\",\"4125\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",117],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"2550\"]]"); - p = add_epsg_def (filter, first, last, 2551, "epsg", 2551, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 34"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 34\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "02],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",34500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2551\"]]"); - p = add_epsg_def (filter, first, last, 2552, "epsg", 2552, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 35"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 35\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "05],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",35500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2552\"]]"); - p = add_epsg_def (filter, first, last, 2553, "epsg", 2553, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 36"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 36\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "08],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",36500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2553\"]]"); - p = add_epsg_def (filter, first, last, 2554, "epsg", 2554, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 37"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 37\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "11],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",37500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2554\"]]"); - p = add_epsg_def (filter, first, last, 2555, "epsg", 2555, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 38"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 38\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "14],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",38500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2555\"]]"); - p = add_epsg_def (filter, first, last, 2556, "epsg", 2556, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 39"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 39\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "17],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",39500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2556\"]]"); - p = add_epsg_def (filter, first, last, 2557, "epsg", 2557, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 40"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 40\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "20],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",40500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2557\"]]"); - p = add_epsg_def (filter, first, last, 2558, "epsg", 2558, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 41"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 41\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "23],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",41500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2558\"]]"); - p = add_epsg_def (filter, first, last, 2559, "epsg", 2559, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 42"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 42\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "26],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",42500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2559\"]]"); - p = add_epsg_def (filter, first, last, 2560, "epsg", 2560, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 43"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 43\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "29],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",43500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2560\"]]"); - p = add_epsg_def (filter, first, last, 2561, "epsg", 2561, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 44"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 44\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "32],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",44500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2561\"]]"); - p = add_epsg_def (filter, first, last, 2562, "epsg", 2562, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 45"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 45\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "35],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",45500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2562\"]]"); - p = add_epsg_def (filter, first, last, 2563, "epsg", 2563, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 46"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 46\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "38],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",46500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2563\"]]"); - p = add_epsg_def (filter, first, last, 2564, "epsg", 2564, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 47"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 47\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "41],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",47500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2564\"]]"); - p = add_epsg_def (filter, first, last, 2565, "epsg", 2565, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 48"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 48\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "44],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",48500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2565\"]]"); - p = add_epsg_def (filter, first, last, 2566, "epsg", 2566, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 49"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 49\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "47],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",49500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2566\"]]"); - p = add_epsg_def (filter, first, last, 2567, "epsg", 2567, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 50"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 50\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "50],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",50500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2567\"]]"); - p = add_epsg_def (filter, first, last, 2568, "epsg", 2568, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 51"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 51\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "53],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",51500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2568\"]]"); - p = add_epsg_def (filter, first, last, 2569, "epsg", 2569, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 52"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 52\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "56],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",52500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2569\"]]"); - p = add_epsg_def (filter, first, last, 2570, "epsg", 2570, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 53"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 53\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "59],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",53500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2570\"]]"); - p = add_epsg_def (filter, first, last, 2571, "epsg", 2571, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 54"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 54\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "62],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",54500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2571\"]]"); - p = add_epsg_def (filter, first, last, 2572, "epsg", 2572, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 55"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 55\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "65],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",55500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2572\"]]"); - p = add_epsg_def (filter, first, last, 2573, "epsg", 2573, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 56"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 56\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "68],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",56500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2573\"]]"); - p = add_epsg_def (filter, first, last, 2574, "epsg", 2574, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 57"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 57\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "71],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",57500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2574\"]]"); - p = add_epsg_def (filter, first, last, 2575, "epsg", 2575, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 58"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 58\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "74],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",58500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2575\"]]"); - p = add_epsg_def (filter, first, last, 2576, "epsg", 2576, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 59"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 59\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "77],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",59500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2576\"]]"); - p = add_epsg_def (filter, first, last, 2577, "epsg", 2577, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 60 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 60 (d"); - add_srs_wkt (p, 1, - "eprecated)\",GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_194"); - add_srs_wkt (p, 2, - "2\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35"); - add_srs_wkt (p, 4, - ",0.82,-0.12],AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 5, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 6, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 7, - "TY[\"EPSG\",\"4284\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",180],PARAMETER[\"scale_factor\",1],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",60000000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"257"); - add_srs_wkt (p, 13, - "7\"]]"); - p = add_epsg_def (filter, first, last, 2578, "epsg", 2578, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 61"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.8"); - add_proj4text (p, 2, - "2,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 61\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "177],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",61500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2578\"]]"); - p = add_epsg_def (filter, first, last, 2579, "epsg", 2579, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 62"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.8"); - add_proj4text (p, 2, - "2,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 62\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "174],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",62500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2579\"]]"); - p = add_epsg_def (filter, first, last, 2580, "epsg", 2580, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 63"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.8"); - add_proj4text (p, 2, - "2,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 63\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "171],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",63500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2580\"]]"); - p = add_epsg_def (filter, first, last, 2581, "epsg", 2581, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 64"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.8"); - add_proj4text (p, 2, - "2,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 64\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "168],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",64500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2581\"]]"); - p = add_epsg_def (filter, first, last, 2582, "epsg", 2582, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 21E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 21E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2582\"]]"); - p = add_epsg_def (filter, first, last, 2583, "epsg", 2583, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 24E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 24E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); - add_srs_wkt (p, 9, - "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2583\"]]"); - p = add_epsg_def (filter, first, last, 2584, "epsg", 2584, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 27E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 27E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2584\"]]"); - p = add_epsg_def (filter, first, last, 2585, "epsg", 2585, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 30E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 30E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2585\"]]"); - p = add_epsg_def (filter, first, last, 2586, "epsg", 2586, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 33E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 33E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2586\"]]"); - p = add_epsg_def (filter, first, last, 2587, "epsg", 2587, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 36E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 36E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2587\"]]"); - p = add_epsg_def (filter, first, last, 2588, "epsg", 2588, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 39E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 39E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2588\"]]"); - p = add_epsg_def (filter, first, last, 2589, "epsg", 2589, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 42E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 42E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); - add_srs_wkt (p, 9, - "2],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2589\"]]"); - p = add_epsg_def (filter, first, last, 2590, "epsg", 2590, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 45E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 45E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2590\"]]"); - p = add_epsg_def (filter, first, last, 2591, "epsg", 2591, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 48E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 48E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); - add_srs_wkt (p, 9, - "8],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2591\"]]"); - p = add_epsg_def (filter, first, last, 2592, "epsg", 2592, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 51E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 51E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2592\"]]"); - p = add_epsg_def (filter, first, last, 2593, "epsg", 2593, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 54E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 54E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); - add_srs_wkt (p, 9, - "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2593\"]]"); - p = add_epsg_def (filter, first, last, 2594, "epsg", 2594, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 57E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 57E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2594\"]]"); - p = add_epsg_def (filter, first, last, 2595, "epsg", 2595, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 60E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 60E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2595\"]]"); - p = add_epsg_def (filter, first, last, 2596, "epsg", 2596, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 63E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 63E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2596\"]]"); - p = add_epsg_def (filter, first, last, 2597, "epsg", 2597, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 66E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 66E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2597\"]]"); - p = add_epsg_def (filter, first, last, 2598, "epsg", 2598, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 69E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 69E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2598\"]]"); - p = add_epsg_def (filter, first, last, 2599, "epsg", 2599, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 72E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 72E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); - add_srs_wkt (p, 9, - "2],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2599\"]]"); - p = add_epsg_def (filter, first, last, 2600, "epsg", 2600, - "Lietuvos Koordinoei Sistema 1994 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"Lietuvos Koordinoei Sistema 1994 (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"LKS94\",DATUM[\"Lithuania_1994_ETRS89\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6126\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4669\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",24],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9998],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"2600\"]]"); - p = add_epsg_def (filter, first, last, 2601, "epsg", 2601, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 75E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 75E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2601\"]]"); - p = add_epsg_def (filter, first, last, 2602, "epsg", 2602, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 78E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 78E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); - add_srs_wkt (p, 9, - "8],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2602\"]]"); - p = add_epsg_def (filter, first, last, 2603, "epsg", 2603, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 81E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 81E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2603\"]]"); - p = add_epsg_def (filter, first, last, 2604, "epsg", 2604, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 84E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 84E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); - add_srs_wkt (p, 9, - "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2604\"]]"); - p = add_epsg_def (filter, first, last, 2605, "epsg", 2605, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 87E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 87E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2605\"]]"); - p = add_epsg_def (filter, first, last, 2606, "epsg", 2606, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 90E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 90E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2606\"]]"); - p = add_epsg_def (filter, first, last, 2607, "epsg", 2607, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 93E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 93E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2607\"]]"); - p = add_epsg_def (filter, first, last, 2608, "epsg", 2608, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 96E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 96E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2608\"]]"); - p = add_epsg_def (filter, first, last, 2609, "epsg", 2609, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 99E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 99E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2609\"]]"); - p = add_epsg_def (filter, first, last, 2610, "epsg", 2610, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 102E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 102E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "02],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2610\"]]"); - p = add_epsg_def (filter, first, last, 2611, "epsg", 2611, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 105E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 105E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "05],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2611\"]]"); - p = add_epsg_def (filter, first, last, 2612, "epsg", 2612, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 108E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 108E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "08],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2612\"]]"); - p = add_epsg_def (filter, first, last, 2613, "epsg", 2613, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 111E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 111E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "11],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2613\"]]"); - p = add_epsg_def (filter, first, last, 2614, "epsg", 2614, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 114E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 114E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "14],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2614\"]]"); - p = add_epsg_def (filter, first, last, 2615, "epsg", 2615, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 117E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 117E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "17],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2615\"]]"); - p = add_epsg_def (filter, first, last, 2616, "epsg", 2616, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 120E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 120E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "20],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2616\"]]"); - p = add_epsg_def (filter, first, last, 2617, "epsg", 2617, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 123E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 123E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "23],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2617\"]]"); - p = add_epsg_def (filter, first, last, 2618, "epsg", 2618, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 126E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 126E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "26],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2618\"]]"); - p = add_epsg_def (filter, first, last, 2619, "epsg", 2619, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 129E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 129E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "29],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2619\"]]"); - p = add_epsg_def (filter, first, last, 2620, "epsg", 2620, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 132E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 132E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "32],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2620\"]]"); - p = add_epsg_def (filter, first, last, 2621, "epsg", 2621, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 135E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 135E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "35],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2621\"]]"); - p = add_epsg_def (filter, first, last, 2622, "epsg", 2622, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 138E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 138E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "38],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2622\"]]"); - p = add_epsg_def (filter, first, last, 2623, "epsg", 2623, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 141E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 141E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "41],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2623\"]]"); - p = add_epsg_def (filter, first, last, 2624, "epsg", 2624, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 144E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 144E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "44],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2624\"]]"); - p = add_epsg_def (filter, first, last, 2625, "epsg", 2625, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 147E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 147E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "47],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2625\"]]"); - p = add_epsg_def (filter, first, last, 2626, "epsg", 2626, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 150E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 150E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "50],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2626\"]]"); - p = add_epsg_def (filter, first, last, 2627, "epsg", 2627, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 153E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 153E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "53],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2627\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_06.c b/src/spatialite/src/srsinit/epsg_inlined_06.c deleted file mode 100644 index 0f5d3fa..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_06.c +++ /dev/null @@ -1,3494 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_06 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 2628, "epsg", 2628, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 156E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 156E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "56],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2628\"]]"); - p = add_epsg_def (filter, first, last, 2629, "epsg", 2629, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 159E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 159E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "59],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2629\"]]"); - p = add_epsg_def (filter, first, last, 2630, "epsg", 2630, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 162E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 162E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "62],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2630\"]]"); - p = add_epsg_def (filter, first, last, 2631, "epsg", 2631, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 165E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 165E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "65],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2631\"]]"); - p = add_epsg_def (filter, first, last, 2632, "epsg", 2632, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 168E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 168E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "68],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2632\"]]"); - p = add_epsg_def (filter, first, last, 2633, "epsg", 2633, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 171E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 171E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "71],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2633\"]]"); - p = add_epsg_def (filter, first, last, 2634, "epsg", 2634, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 174E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 174E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "74],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2634\"]]"); - p = add_epsg_def (filter, first, last, 2635, "epsg", 2635, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 177E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 177E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "77],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2635\"]]"); - p = add_epsg_def (filter, first, last, 2636, "epsg", 2636, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 180E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 180E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "80],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2636\"]]"); - p = add_epsg_def (filter, first, last, 2637, "epsg", 2637, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 177W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 177W\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "177],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2637\"]]"); - p = add_epsg_def (filter, first, last, 2638, "epsg", 2638, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 174W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 174W\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "174],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2638\"]]"); - p = add_epsg_def (filter, first, last, 2639, "epsg", 2639, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 171W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 171W\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "171],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2639\"]]"); - p = add_epsg_def (filter, first, last, 2640, "epsg", 2640, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 168W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 168W\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "168],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2640\"]]"); - p = add_epsg_def (filter, first, last, 2641, "epsg", 2641, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 7\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",21"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",7500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2641\"]]"); - p = add_epsg_def (filter, first, last, 2642, "epsg", 2642, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 8\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",24"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",8500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2642\"]]"); - p = add_epsg_def (filter, first, last, 2643, "epsg", 2643, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 9\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",27"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",9500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2643\"]]"); - p = add_epsg_def (filter, first, last, 2644, "epsg", 2644, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 10"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 10\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",10500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2644\"]]"); - p = add_epsg_def (filter, first, last, 2645, "epsg", 2645, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 11"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 11\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",11500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2645\"]]"); - p = add_epsg_def (filter, first, last, 2646, "epsg", 2646, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 12"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 12\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",12500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2646\"]]"); - p = add_epsg_def (filter, first, last, 2647, "epsg", 2647, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 13\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",13500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2647\"]]"); - p = add_epsg_def (filter, first, last, 2648, "epsg", 2648, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 14\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); - add_srs_wkt (p, 9, - "2],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",14500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2648\"]]"); - p = add_epsg_def (filter, first, last, 2649, "epsg", 2649, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 15\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",15500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2649\"]]"); - p = add_epsg_def (filter, first, last, 2650, "epsg", 2650, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 16"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 16\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); - add_srs_wkt (p, 9, - "8],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",16500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2650\"]]"); - p = add_epsg_def (filter, first, last, 2651, "epsg", 2651, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 17"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 17\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",17500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2651\"]]"); - p = add_epsg_def (filter, first, last, 2652, "epsg", 2652, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 18"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 18\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); - add_srs_wkt (p, 9, - "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",18500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2652\"]]"); - p = add_epsg_def (filter, first, last, 2653, "epsg", 2653, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 19"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 19\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",19500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2653\"]]"); - p = add_epsg_def (filter, first, last, 2654, "epsg", 2654, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 20"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 20\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",20500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2654\"]]"); - p = add_epsg_def (filter, first, last, 2655, "epsg", 2655, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 21"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 21\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",21500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2655\"]]"); - p = add_epsg_def (filter, first, last, 2656, "epsg", 2656, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 22"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 22\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",22500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2656\"]]"); - p = add_epsg_def (filter, first, last, 2657, "epsg", 2657, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 23"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 23\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",23500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2657\"]]"); - p = add_epsg_def (filter, first, last, 2658, "epsg", 2658, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 24"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 24\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); - add_srs_wkt (p, 9, - "2],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",24500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2658\"]]"); - p = add_epsg_def (filter, first, last, 2659, "epsg", 2659, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 25"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 25\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",25500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2659\"]]"); - p = add_epsg_def (filter, first, last, 2660, "epsg", 2660, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 26"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 26\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); - add_srs_wkt (p, 9, - "8],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",26500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2660\"]]"); - p = add_epsg_def (filter, first, last, 2661, "epsg", 2661, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 27"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 27\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",27500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2661\"]]"); - p = add_epsg_def (filter, first, last, 2662, "epsg", 2662, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 28"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 28\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); - add_srs_wkt (p, 9, - "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",28500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2662\"]]"); - p = add_epsg_def (filter, first, last, 2663, "epsg", 2663, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 29"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 29\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",29500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2663\"]]"); - p = add_epsg_def (filter, first, last, 2664, "epsg", 2664, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 30"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 30\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",30500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2664\"]]"); - p = add_epsg_def (filter, first, last, 2665, "epsg", 2665, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 31"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 31\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",31500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2665\"]]"); - p = add_epsg_def (filter, first, last, 2666, "epsg", 2666, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 32"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 32\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",32500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2666\"]]"); - p = add_epsg_def (filter, first, last, 2667, "epsg", 2667, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 33"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 33\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",33500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2667\"]]"); - p = add_epsg_def (filter, first, last, 2668, "epsg", 2668, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 34"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 34\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "02],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",34500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2668\"]]"); - p = add_epsg_def (filter, first, last, 2669, "epsg", 2669, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 35"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 35\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "05],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",35500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2669\"]]"); - p = add_epsg_def (filter, first, last, 2670, "epsg", 2670, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 36"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 36\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "08],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",36500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2670\"]]"); - p = add_epsg_def (filter, first, last, 2671, "epsg", 2671, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 37"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 37\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "11],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",37500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2671\"]]"); - p = add_epsg_def (filter, first, last, 2672, "epsg", 2672, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 38"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 38\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "14],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",38500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2672\"]]"); - p = add_epsg_def (filter, first, last, 2673, "epsg", 2673, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 39"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 39\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "17],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",39500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2673\"]]"); - p = add_epsg_def (filter, first, last, 2674, "epsg", 2674, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 40"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 40\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "20],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",40500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2674\"]]"); - p = add_epsg_def (filter, first, last, 2675, "epsg", 2675, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 41"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 41\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "23],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",41500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2675\"]]"); - p = add_epsg_def (filter, first, last, 2676, "epsg", 2676, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 42"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 42\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "26],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",42500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2676\"]]"); - p = add_epsg_def (filter, first, last, 2677, "epsg", 2677, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 43"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 43\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "29],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",43500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2677\"]]"); - p = add_epsg_def (filter, first, last, 2678, "epsg", 2678, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 44"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 44\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "32],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",44500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2678\"]]"); - p = add_epsg_def (filter, first, last, 2679, "epsg", 2679, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 45"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 45\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "35],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",45500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2679\"]]"); - p = add_epsg_def (filter, first, last, 2680, "epsg", 2680, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 46"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 46\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "38],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",46500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2680\"]]"); - p = add_epsg_def (filter, first, last, 2681, "epsg", 2681, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 47"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 47\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "41],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",47500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2681\"]]"); - p = add_epsg_def (filter, first, last, 2682, "epsg", 2682, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 48"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 48\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "44],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",48500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2682\"]]"); - p = add_epsg_def (filter, first, last, 2683, "epsg", 2683, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 49"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 49\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "47],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",49500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2683\"]]"); - p = add_epsg_def (filter, first, last, 2684, "epsg", 2684, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 50"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 50\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "50],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",50500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2684\"]]"); - p = add_epsg_def (filter, first, last, 2685, "epsg", 2685, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 51"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 51\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "53],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",51500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2685\"]]"); - p = add_epsg_def (filter, first, last, 2686, "epsg", 2686, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 52"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 52\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "56],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",52500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2686\"]]"); - p = add_epsg_def (filter, first, last, 2687, "epsg", 2687, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 53"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 53\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "59],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",53500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2687\"]]"); - p = add_epsg_def (filter, first, last, 2688, "epsg", 2688, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 54"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 54\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "62],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",54500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2688\"]]"); - p = add_epsg_def (filter, first, last, 2689, "epsg", 2689, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 55"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 55\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "65],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",55500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2689\"]]"); - p = add_epsg_def (filter, first, last, 2690, "epsg", 2690, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 56"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 56\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "68],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",56500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2690\"]]"); - p = add_epsg_def (filter, first, last, 2691, "epsg", 2691, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 57"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 57\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "71],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",57500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2691\"]]"); - p = add_epsg_def (filter, first, last, 2692, "epsg", 2692, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 58"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 58\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "74],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",58500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2692\"]]"); - p = add_epsg_def (filter, first, last, 2693, "epsg", 2693, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 59"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 59\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "77],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",59500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2693\"]]"); - p = add_epsg_def (filter, first, last, 2694, "epsg", 2694, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 60 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 60 (d"); - add_srs_wkt (p, 1, - "eprecated)\",GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_199"); - add_srs_wkt (p, 2, - "5\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,"); - add_srs_wkt (p, 4, - "0.13,-0.22],AUTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 5, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 6, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4200\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",180],PARAMETER[\"scale_factor\",1],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",60000000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"269"); - add_srs_wkt (p, 13, - "4\"]]"); - p = add_epsg_def (filter, first, last, 2695, "epsg", 2695, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 61"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13"); - add_proj4text (p, 2, - ",-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 61\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "177],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",61500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2695\"]]"); - p = add_epsg_def (filter, first, last, 2696, "epsg", 2696, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 62"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13"); - add_proj4text (p, 2, - ",-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 62\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "174],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",62500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2696\"]]"); - p = add_epsg_def (filter, first, last, 2697, "epsg", 2697, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 63"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13"); - add_proj4text (p, 2, - ",-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 63\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "171],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",63500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2697\"]]"); - p = add_epsg_def (filter, first, last, 2698, "epsg", 2698, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 64"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13"); - add_proj4text (p, 2, - ",-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 64\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "168],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",64500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2698\"]]"); - p = add_epsg_def (filter, first, last, 2699, "epsg", 2699, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 21E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 21E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",21"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2699\"]]"); - p = add_epsg_def (filter, first, last, 2700, "epsg", 2700, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 24E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 24E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",24"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2700\"]]"); - p = add_epsg_def (filter, first, last, 2701, "epsg", 2701, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 27E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 27E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",27"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2701\"]]"); - p = add_epsg_def (filter, first, last, 2702, "epsg", 2702, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 30E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 30E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",30"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2702\"]]"); - p = add_epsg_def (filter, first, last, 2703, "epsg", 2703, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 33E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 33E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",33"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2703\"]]"); - p = add_epsg_def (filter, first, last, 2704, "epsg", 2704, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 36E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 36E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",36"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2704\"]]"); - p = add_epsg_def (filter, first, last, 2705, "epsg", 2705, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 39E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 39E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",39"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2705\"]]"); - p = add_epsg_def (filter, first, last, 2706, "epsg", 2706, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 42E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 42E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",42"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2706\"]]"); - p = add_epsg_def (filter, first, last, 2707, "epsg", 2707, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 45E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 45E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",45"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2707\"]]"); - p = add_epsg_def (filter, first, last, 2708, "epsg", 2708, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 48E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 48E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",48"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2708\"]]"); - p = add_epsg_def (filter, first, last, 2709, "epsg", 2709, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 51E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 51E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",51"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2709\"]]"); - p = add_epsg_def (filter, first, last, 2710, "epsg", 2710, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 54E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 54E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",54"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2710\"]]"); - p = add_epsg_def (filter, first, last, 2711, "epsg", 2711, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 57E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 57E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",57"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2711\"]]"); - p = add_epsg_def (filter, first, last, 2712, "epsg", 2712, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 60E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 60E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",60"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2712\"]]"); - p = add_epsg_def (filter, first, last, 2713, "epsg", 2713, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 63E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 63E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",63"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2713\"]]"); - p = add_epsg_def (filter, first, last, 2714, "epsg", 2714, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 66E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 66E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",66"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2714\"]]"); - p = add_epsg_def (filter, first, last, 2715, "epsg", 2715, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 69E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 69E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",69"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2715\"]]"); - p = add_epsg_def (filter, first, last, 2716, "epsg", 2716, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 72E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 72E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",72"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2716\"]]"); - p = add_epsg_def (filter, first, last, 2717, "epsg", 2717, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 75E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 75E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",75"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2717\"]]"); - p = add_epsg_def (filter, first, last, 2718, "epsg", 2718, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 78E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 78E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",78"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2718\"]]"); - p = add_epsg_def (filter, first, last, 2719, "epsg", 2719, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 81E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 81E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",81"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2719\"]]"); - p = add_epsg_def (filter, first, last, 2720, "epsg", 2720, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 84E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 84E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",84"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2720\"]]"); - p = add_epsg_def (filter, first, last, 2721, "epsg", 2721, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 87E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 87E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",87"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2721\"]]"); - p = add_epsg_def (filter, first, last, 2722, "epsg", 2722, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 90E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 90E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",90"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2722\"]]"); - p = add_epsg_def (filter, first, last, 2723, "epsg", 2723, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 93E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 93E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",93"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2723\"]]"); - p = add_epsg_def (filter, first, last, 2724, "epsg", 2724, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 96E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 96E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",96"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2724\"]]"); - p = add_epsg_def (filter, first, last, 2725, "epsg", 2725, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 99E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 99E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",99"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2725\"]]"); - p = add_epsg_def (filter, first, last, 2726, "epsg", 2726, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 102E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 102E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "02],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2726\"]]"); - p = add_epsg_def (filter, first, last, 2727, "epsg", 2727, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 105E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 105E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "05],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2727\"]]"); - p = add_epsg_def (filter, first, last, 2728, "epsg", 2728, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 108E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 108E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "08],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2728\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_07.c b/src/spatialite/src/srsinit/epsg_inlined_07.c deleted file mode 100644 index 2347f74..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_07.c +++ /dev/null @@ -1,3662 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_07 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 2729, "epsg", 2729, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 111E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 111E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "11],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2729\"]]"); - p = add_epsg_def (filter, first, last, 2730, "epsg", 2730, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 114E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 114E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "14],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2730\"]]"); - p = add_epsg_def (filter, first, last, 2731, "epsg", 2731, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 117E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 117E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "17],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2731\"]]"); - p = add_epsg_def (filter, first, last, 2732, "epsg", 2732, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 120E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 120E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "20],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2732\"]]"); - p = add_epsg_def (filter, first, last, 2733, "epsg", 2733, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 123E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 123E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "23],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2733\"]]"); - p = add_epsg_def (filter, first, last, 2734, "epsg", 2734, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 126E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 126E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "26],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2734\"]]"); - p = add_epsg_def (filter, first, last, 2735, "epsg", 2735, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 129E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 129E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "29],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2735\"]]"); - p = add_epsg_def (filter, first, last, 2736, "epsg", 2736, - "Tete / UTM zone 36S"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +south +ellps=clrk66 +towgs84=219.315"); - add_proj4text (p, 1, - ",168.975,-166.145,0.198,5.926,-2.356,-57.104 +units=m +n"); - add_proj4text (p, 2, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tete / UTM zone 36S\",GEOGCS[\"Tete\",DATUM[\"T"); - add_srs_wkt (p, 1, - "ete\",SPHEROID[\"Clarke 1866\",6378206.4,294.97869821389"); - add_srs_wkt (p, 2, - "82,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[219.315,168.975"); - add_srs_wkt (p, 3, - ",-166.145,0.198,5.926,-2.356,-57.104],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6127\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4127\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",33],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); - add_srs_wkt (p, 12, - "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2736\"]]"); - p = add_epsg_def (filter, first, last, 2737, "epsg", 2737, - "Tete / UTM zone 37S"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +south +ellps=clrk66 +towgs84=219.315"); - add_proj4text (p, 1, - ",168.975,-166.145,0.198,5.926,-2.356,-57.104 +units=m +n"); - add_proj4text (p, 2, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tete / UTM zone 37S\",GEOGCS[\"Tete\",DATUM[\"T"); - add_srs_wkt (p, 1, - "ete\",SPHEROID[\"Clarke 1866\",6378206.4,294.97869821389"); - add_srs_wkt (p, 2, - "82,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[219.315,168.975"); - add_srs_wkt (p, 3, - ",-166.145,0.198,5.926,-2.356,-57.104],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6127\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4127\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",39],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); - add_srs_wkt (p, 12, - "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2737\"]]"); - p = add_epsg_def (filter, first, last, 2738, "epsg", 2738, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 132E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 132E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "32],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2738\"]]"); - p = add_epsg_def (filter, first, last, 2739, "epsg", 2739, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 135E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 135E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "35],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2739\"]]"); - p = add_epsg_def (filter, first, last, 2740, "epsg", 2740, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 138E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 138E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "38],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2740\"]]"); - p = add_epsg_def (filter, first, last, 2741, "epsg", 2741, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 141E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 141E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "41],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2741\"]]"); - p = add_epsg_def (filter, first, last, 2742, "epsg", 2742, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 144E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 144E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "44],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2742\"]]"); - p = add_epsg_def (filter, first, last, 2743, "epsg", 2743, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 147E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 147E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "47],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2743\"]]"); - p = add_epsg_def (filter, first, last, 2744, "epsg", 2744, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 150E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 150E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "50],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2744\"]]"); - p = add_epsg_def (filter, first, last, 2745, "epsg", 2745, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 153E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 153E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "53],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2745\"]]"); - p = add_epsg_def (filter, first, last, 2746, "epsg", 2746, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 156E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 156E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "56],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2746\"]]"); - p = add_epsg_def (filter, first, last, 2747, "epsg", 2747, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 159E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 159E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "59],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2747\"]]"); - p = add_epsg_def (filter, first, last, 2748, "epsg", 2748, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 162E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 162E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "62],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2748\"]]"); - p = add_epsg_def (filter, first, last, 2749, "epsg", 2749, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 165E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 165E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "65],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2749\"]]"); - p = add_epsg_def (filter, first, last, 2750, "epsg", 2750, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 168E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 168E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "68],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2750\"]]"); - p = add_epsg_def (filter, first, last, 2751, "epsg", 2751, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 171E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 171E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "71],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2751\"]]"); - p = add_epsg_def (filter, first, last, 2752, "epsg", 2752, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 174E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 174E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "74],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2752\"]]"); - p = add_epsg_def (filter, first, last, 2753, "epsg", 2753, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 177E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 177E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "77],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2753\"]]"); - p = add_epsg_def (filter, first, last, 2754, "epsg", 2754, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 180E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 180E\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "80],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2754\"]]"); - p = add_epsg_def (filter, first, last, 2755, "epsg", 2755, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 177W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 177W\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "177],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2755\"]]"); - p = add_epsg_def (filter, first, last, 2756, "epsg", 2756, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 174W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 174W\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "174],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2756\"]]"); - p = add_epsg_def (filter, first, last, 2757, "epsg", 2757, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 171W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 171W\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "171],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2757\"]]"); - p = add_epsg_def (filter, first, last, 2758, "epsg", 2758, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 168W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 168W\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "168],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"2758\"]]"); - p = add_epsg_def (filter, first, last, 2759, "epsg", 2759, - "NAD83(HARN) / Alabama East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.9"); - add_proj4text (p, 1, - "9996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Alabama East\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",30.5],PARAMETER[\"central_meridian\",-85.8333333333"); - add_srs_wkt (p, 9, - "3333],PARAMETER[\"scale_factor\",0.99996],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_easting\",200000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 12, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2759\"]]"); - p = add_epsg_def (filter, first, last, 2760, "epsg", 2760, - "NAD83(HARN) / Alabama West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=6"); - add_proj4text (p, 1, - "00000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Alabama West\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",30],PARAMETER[\"central_meridian\",-87.5],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.999933333],PARAMETER[\"false_easting"); - add_srs_wkt (p, 10, - "\",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"2760\"]]"); - p = add_epsg_def (filter, first, last, 2761, "epsg", 2761, - "NAD83(HARN) / Arizona East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Arizona East\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",31],PARAMETER[\"central_meridian\",-110.16666666666"); - add_srs_wkt (p, 9, - "67],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",213360],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); - add_srs_wkt (p, 12, - "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2761\"]]"); - p = add_epsg_def (filter, first, last, 2762, "epsg", 2762, - "NAD83(HARN) / Arizona Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Arizona Central\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",31],PARAMETER[\"central_meridian\",-111.91666666"); - add_srs_wkt (p, 9, - "66667],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_easting\",213360],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 12, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2762\"]]"); - p = add_epsg_def (filter, first, last, 2763, "epsg", 2763, - "NAD83(HARN) / Arizona West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); - add_proj4text (p, 1, - "=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Arizona West\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",31],PARAMETER[\"central_meridian\",-113.75],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",0.999933333],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",213360],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2763\"]]"); - p = add_epsg_def (filter, first, last, 2764, "epsg", 2764, - "NAD83(HARN) / Arkansas North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Arkansas North\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",36.23333333333333],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",34.93333333333333],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 10, - "origin\",34.33333333333334],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 11, - "\",-92],PARAMETER[\"false_easting\",400000],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 14, - "\"EPSG\",\"2764\"]]"); - p = add_epsg_def (filter, first, last, 2765, "epsg", 2765, - "NAD83(HARN) / Arkansas South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellp"); - add_proj4text (p, 2, - "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Arkansas South\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",34.76666666666667],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",33.3],PARAMETER[\"latitude_of_origin\",32.6"); - add_srs_wkt (p, 10, - "6666666666666],PARAMETER[\"central_meridian\",-92],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_easting\",400000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 12, - "g\",400000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"2765\"]]"); - p = add_epsg_def (filter, first, last, 2766, "epsg", 2766, - "NAD83(HARN) / California zone 1"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); - add_proj4text (p, 1, - "3333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellp"); - add_proj4text (p, 2, - "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / California zone 1\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",41.66666666666666],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",40],PARAMETER[\"latitude_of_origin\",39.33"); - add_srs_wkt (p, 10, - "333333333334],PARAMETER[\"central_meridian\",-122],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_easting\",2000000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 12, - "ng\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"2766\"]]"); - p = add_epsg_def (filter, first, last, 2767, "epsg", 2767, - "NAD83(HARN) / California zone 2"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); - add_proj4text (p, 1, - "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y"); - add_proj4text (p, 2, - "_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / California zone 2\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",39.83333333333334],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",38.33333333333334],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",37.66666666666666],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 11, - "n\",-122],PARAMETER[\"false_easting\",2000000],PARAMETER"); - add_srs_wkt (p, 12, - "[\"false_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 14, - "HORITY[\"EPSG\",\"2767\"]]"); - p = add_epsg_def (filter, first, last, 2768, "epsg", 2768, - "NAD83(HARN) / California zone 3"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +"); - add_proj4text (p, 2, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / California zone 3\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",38.43333333333333],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",37.06666666666667],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",36.5],PARAMETER[\"central_meridian\",-120.5],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_easting\",2000000],PARAMETER[\"false_no"); - add_srs_wkt (p, 12, - "rthing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 13, - "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 14, - "PSG\",\"2768\"]]"); - p = add_epsg_def (filter, first, last, 2769, "epsg", 2769, - "NAD83(HARN) / California zone 4"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); - add_proj4text (p, 1, - "4 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +tow"); - add_proj4text (p, 2, - "gs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / California zone 4\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",37.25],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",36],PARAMETER[\"latitude_of_origin\",35.33333333333334]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"central_meridian\",-119],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "easting\",2000000],PARAMETER[\"false_northing\",500000],"); - add_srs_wkt (p, 12, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2769\"]]"); - p = add_epsg_def (filter, first, last, 2770, "epsg", 2770, - "NAD83(HARN) / California zone 5"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +el"); - add_proj4text (p, 2, - "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / California zone 5\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",35.46666666666667],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",34.03333333333333],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",33.5],PARAMETER[\"central_meridian\",-118],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_easting\",2000000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 12, - "hing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 13, - "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 14, - "G\",\"2770\"]]"); - p = add_epsg_def (filter, first, last, 2771, "epsg", 2771, - "NAD83(HARN) / California zone 6"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000"); - add_proj4text (p, 2, - " +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 3, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / California zone 6\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",33.88333333333333],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",32.78333333333333],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",32.16666666666666],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 11, - "n\",-116.25],PARAMETER[\"false_easting\",2000000],PARAME"); - add_srs_wkt (p, 12, - "TER[\"false_northing\",500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 13, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 14, - ",AUTHORITY[\"EPSG\",\"2771\"]]"); - p = add_epsg_def (filter, first, last, 2772, "epsg", 2772, - "NAD83(HARN) / Colorado North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8"); - add_proj4text (p, 2, - "289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 3, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Colorado North\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",40.78333333333333],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",39.71666666666667],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 10, - "origin\",39.33333333333334],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 11, - "\",-105.5],PARAMETER[\"false_easting\",914401.8289],PARA"); - add_srs_wkt (p, 12, - "METER[\"false_northing\",304800.6096],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"2772\"]]"); - p = add_epsg_def (filter, first, last, 2773, "epsg", 2773, - "NAD83(HARN) / Colorado Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); - add_proj4text (p, 1, - "3334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +el"); - add_proj4text (p, 2, - "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Colorado Central\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",39.75],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",38.45],PARAMETER[\"latitude_of_origin\",37.833333333333"); - add_srs_wkt (p, 10, - "34],PARAMETER[\"central_meridian\",-105.5],PARAMETER[\"f"); - add_srs_wkt (p, 11, - "alse_easting\",914401.8289],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",304800.6096],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 13, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 14, - "\",\"2773\"]]"); - p = add_epsg_def (filter, first, last, 2774, "epsg", 2774, - "NAD83(HARN) / Colorado South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); - add_proj4text (p, 1, - "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8"); - add_proj4text (p, 2, - "289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 3, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Colorado South\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",38.43333333333333],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",37.23333333333333],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 10, - "origin\",36.66666666666666],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 11, - "\",-105.5],PARAMETER[\"false_easting\",914401.8289],PARA"); - add_srs_wkt (p, 12, - "METER[\"false_northing\",304800.6096],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"2774\"]]"); - p = add_epsg_def (filter, first, last, 2775, "epsg", 2775, - "NAD83(HARN) / Connecticut"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); - add_proj4text (p, 1, - ".83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=1524"); - add_proj4text (p, 2, - "00.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 3, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Connecticut\",GEOGCS[\"NAD83(HARN"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); - add_srs_wkt (p, 8, - "parallel_1\",41.86666666666667],PARAMETER[\"standard_par"); - add_srs_wkt (p, 9, - "allel_2\",41.2],PARAMETER[\"latitude_of_origin\",40.8333"); - add_srs_wkt (p, 10, - "3333333334],PARAMETER[\"central_meridian\",-72.75],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_easting\",304800.6096],PARAMETER[\"false_no"); - add_srs_wkt (p, 12, - "rthing\",152400.3048],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 14, - "[\"EPSG\",\"2775\"]]"); - p = add_epsg_def (filter, first, last, 2776, "epsg", 2776, - "NAD83(HARN) / Delaware"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); - add_proj4text (p, 1, - "995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Delaware\",GEOGCS[\"NAD83(HARN)\""); - add_srs_wkt (p, 1, - ",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "38],PARAMETER[\"central_meridian\",-75.41666666666667],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"scale_factor\",0.999995],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",200000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2776\"]]"); - p = add_epsg_def (filter, first, last, 2777, "epsg", 2777, - "NAD83(HARN) / Florida East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); - add_proj4text (p, 1, - "941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Florida East\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",24.33333333333333],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "81],PARAMETER[\"scale_factor\",0.999941177],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",200000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2777\"]]"); - p = add_epsg_def (filter, first, last, 2778, "epsg", 2778, - "NAD83(HARN) / Florida West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); - add_proj4text (p, 1, - "941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Florida West\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",24.33333333333333],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "82],PARAMETER[\"scale_factor\",0.999941177],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",200000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2778\"]]"); - p = add_epsg_def (filter, first, last, 2779, "epsg", 2779, - "NAD83(HARN) / Florida North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); - add_proj4text (p, 1, - "9 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Florida North\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_1\",30.75],PARAMETER[\"standard_parallel_2\",2"); - add_srs_wkt (p, 9, - "9.58333333333333],PARAMETER[\"latitude_of_origin\",29],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"central_meridian\",-84.5],PARAMETER[\"false_e"); - add_srs_wkt (p, 11, - "asting\",600000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 12, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); - add_srs_wkt (p, 13, - ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2779\"]]"); - p = add_epsg_def (filter, first, last, 2780, "epsg", 2780, - "NAD83(HARN) / Georgia East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Georgia East\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",30],PARAMETER[\"central_meridian\",-82.166666666666"); - add_srs_wkt (p, 9, - "67],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",200000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); - add_srs_wkt (p, 12, - "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2780\"]]"); - p = add_epsg_def (filter, first, last, 2781, "epsg", 2781, - "NAD83(HARN) / Georgia West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Georgia West\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",30],PARAMETER[\"central_meridian\",-84.166666666666"); - add_srs_wkt (p, 9, - "67],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",700000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); - add_srs_wkt (p, 12, - "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2781\"]]"); - p = add_epsg_def (filter, first, last, 2782, "epsg", 2782, - "NAD83(HARN) / Hawaii zone 1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0."); - add_proj4text (p, 1, - "999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0"); - add_proj4text (p, 2, - ",0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Hawaii zone 1\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",18.83333333333333],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "155.5],PARAMETER[\"scale_factor\",0.999966667],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_easting\",500000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 11, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2782\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2783, "epsg", 2783, - "NAD83(HARN) / Hawaii zone 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666"); - add_proj4text (p, 1, - "666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Hawaii zone 2\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",20.33333333333333],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "156.6666666666667],PARAMETER[\"scale_factor\",0.99996666"); - add_srs_wkt (p, 10, - "7],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 12, - "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"2783\"]]"); - p = add_epsg_def (filter, first, last, 2784, "epsg", 2784, - "NAD83(HARN) / Hawaii zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99"); - add_proj4text (p, 1, - "999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Hawaii zone 3\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",21.16666666666667],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "158],PARAMETER[\"scale_factor\",0.99999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2784\"]]"); - p = add_epsg_def (filter, first, last, 2785, "epsg", 2785, - "NAD83(HARN) / Hawaii zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0."); - add_proj4text (p, 1, - "99999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Hawaii zone 4\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",21.83333333333333],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "159.5],PARAMETER[\"scale_factor\",0.99999],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2785\"]]"); - p = add_epsg_def (filter, first, last, 2786, "epsg", 2786, - "NAD83(HARN) / Hawaii zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0"); - add_proj4text (p, 2, - ",0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Hawaii zone 5\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",21.66666666666667],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "160.1666666666667],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",500000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2786\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 2787, "epsg", 2787, - "NAD83(HARN) / Idaho East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); - add_proj4text (p, 1, - "666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=G"); - add_proj4text (p, 2, - "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Idaho East\",GEOGCS[\"NAD83(HARN)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",41.66666666666666],PARAMETER[\"central_meridian\",-112."); - add_srs_wkt (p, 9, - "1666666666667],PARAMETER[\"scale_factor\",0.999947368],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_easting\",200000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 11, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 12, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"2787\"]]"); - p = add_epsg_def (filter, first, last, 2788, "epsg", 2788, - "NAD83(HARN) / Idaho Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); - add_proj4text (p, 1, - "99473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Idaho Central\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",41.66666666666666],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "114],PARAMETER[\"scale_factor\",0.999947368],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2788\"]]"); - p = add_epsg_def (filter, first, last, 2789, "epsg", 2789, - "NAD83(HARN) / Idaho West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); - add_proj4text (p, 1, - ".999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 2, - "0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Idaho West\",GEOGCS[\"NAD83(HARN)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",41.66666666666666],PARAMETER[\"central_meridian\",-115."); - add_srs_wkt (p, 9, - "75],PARAMETER[\"scale_factor\",0.999933333],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",800000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2789\"]]"); - p = add_epsg_def (filter, first, last, 2790, "epsg", 2790, - "NAD83(HARN) / Illinois East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); - add_proj4text (p, 1, - "333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=G"); - add_proj4text (p, 2, - "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Illinois East\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",36.66666666666666],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "88.33333333333333],PARAMETER[\"scale_factor\",0.999975],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",300000],PARAMETER[\"false_no"); - add_srs_wkt (p, 11, - "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2790\"]]"); - p = add_epsg_def (filter, first, last, 2791, "epsg", 2791, - "NAD83(HARN) / Illinois West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Illinois West\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",36.66666666666666],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "90.16666666666667],PARAMETER[\"scale_factor\",0.99994117"); - add_srs_wkt (p, 10, - "7],PARAMETER[\"false_easting\",700000],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 12, - "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"2791\"]]"); - p = add_epsg_def (filter, first, last, 2792, "epsg", 2792, - "NAD83(HARN) / Indiana East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0"); - add_proj4text (p, 2, - ",0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Indiana East\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",37.5],PARAMETER[\"central_meridian\",-85.6666666666"); - add_srs_wkt (p, 9, - "6667],PARAMETER[\"scale_factor\",0.999966667],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",100000],PARAMETER[\"false_northing\",2"); - add_srs_wkt (p, 11, - "50000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"27"); - add_srs_wkt (p, 13, - "92\"]]"); - p = add_epsg_def (filter, first, last, 2793, "epsg", 2793, - "NAD83(HARN) / Indiana West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0"); - add_proj4text (p, 2, - ",0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Indiana West\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",37.5],PARAMETER[\"central_meridian\",-87.0833333333"); - add_srs_wkt (p, 9, - "3333],PARAMETER[\"scale_factor\",0.999966667],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",900000],PARAMETER[\"false_northing\",2"); - add_srs_wkt (p, 11, - "50000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"27"); - add_srs_wkt (p, 13, - "93\"]]"); - p = add_epsg_def (filter, first, last, 2794, "epsg", 2794, - "NAD83(HARN) / Iowa North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); - add_proj4text (p, 1, - "667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +"); - add_proj4text (p, 2, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Iowa North\",GEOGCS[\"NAD83(HARN)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 8, - "rallel_1\",43.26666666666667],PARAMETER[\"standard_paral"); - add_srs_wkt (p, 9, - "lel_2\",42.06666666666667],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 10, - "n\",41.5],PARAMETER[\"central_meridian\",-93.5],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_easting\",1500000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 13, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "2794\"]]"); - p = add_epsg_def (filter, first, last, 2795, "epsg", 2795, - "NAD83(HARN) / Iowa South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); - add_proj4text (p, 1, - "667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Iowa South\",GEOGCS[\"NAD83(HARN)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 8, - "rallel_1\",41.78333333333333],PARAMETER[\"standard_paral"); - add_srs_wkt (p, 9, - "lel_2\",40.61666666666667],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 10, - "n\",40],PARAMETER[\"central_meridian\",-93.5],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_easting\",500000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 12, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2795\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 2796, "epsg", 2796, - "NAD83(HARN) / Kansas North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Kansas North\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_1\",39.78333333333333],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 9, - "rallel_2\",38.71666666666667],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 10, - "igin\",38.33333333333334],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 11, - ",-98],PARAMETER[\"false_easting\",400000],PARAMETER[\"fa"); - add_srs_wkt (p, 12, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"2796\"]]"); - p = add_epsg_def (filter, first, last, 2797, "epsg", 2797, - "NAD83(HARN) / Kansas South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y"); - add_proj4text (p, 2, - "_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Kansas South\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_1\",38.56666666666667],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 9, - "rallel_2\",37.26666666666667],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 10, - "igin\",36.66666666666666],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 11, - ",-98.5],PARAMETER[\"false_easting\",400000],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",400000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 14, - "RITY[\"EPSG\",\"2797\"]]"); - p = add_epsg_def (filter, first, last, 2798, "epsg", 2798, - "NAD83(HARN) / Kentucky North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); - add_proj4text (p, 1, - "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps="); - add_proj4text (p, 2, - "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Kentucky North\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",37.96666666666667],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",38.96666666666667],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 10, - "origin\",37.5],PARAMETER[\"central_meridian\",-84.25],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 12, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 13, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "2798\"]]"); - p = add_epsg_def (filter, first, last, 2799, "epsg", 2799, - "NAD83(HARN) / Kentucky South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +"); - add_proj4text (p, 2, - "y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 3, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Kentucky South\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",37.93333333333333],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",36.73333333333333],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 10, - "origin\",36.33333333333334],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 11, - "\",-85.75],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 12, - "[\"false_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 14, - "HORITY[\"EPSG\",\"2799\"]]"); - p = add_epsg_def (filter, first, last, 2800, "epsg", 2800, - "NAD83(HARN) / Louisiana North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666"); - add_proj4text (p, 1, - "667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps="); - add_proj4text (p, 2, - "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Louisiana North\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",32.66666666666666],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",31.16666666666667],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",30.5],PARAMETER[\"central_meridian\",-92.5],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_easting\",1000000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 12, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 13, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 14, - "\"2800\"]]"); - p = add_epsg_def (filter, first, last, 2801, "epsg", 2801, - "NAD83(HARN) / Louisiana South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91"); - add_proj4text (p, 1, - ".33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Louisiana South\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",30.7],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",29.3],PARAMETER[\"latitude_of_origin\",28.5],PARAMETER["); - add_srs_wkt (p, 10, - "\"central_meridian\",-91.33333333333333],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_easting\",1000000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 12, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 13, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2801\"]]"); - p = add_epsg_def (filter, first, last, 2802, "epsg", 2802, - "NAD83(HARN) / Maine East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Maine East\",GEOGCS[\"NAD83(HARN)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",43.66666666666666],PARAMETER[\"central_meridian\",-68.5"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",300000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2802\"]]"); - p = add_epsg_def (filter, first, last, 2803, "epsg", 2803, - "NAD83(HARN) / Maine West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Maine West\",GEOGCS[\"NAD83(HARN)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",42.83333333333334],PARAMETER[\"central_meridian\",-70.1"); - add_srs_wkt (p, 9, - "6666666666667],PARAMETER[\"scale_factor\",0.999966667],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_easting\",900000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 11, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 12, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"2803\"]]"); - p = add_epsg_def (filter, first, last, 2804, "epsg", 2804, - "NAD83(HARN) / Maryland"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666"); - add_proj4text (p, 1, - "666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Maryland\",GEOGCS[\"NAD83(HARN)\""); - add_srs_wkt (p, 1, - ",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 8, - "llel_1\",39.45],PARAMETER[\"standard_parallel_2\",38.3],"); - add_srs_wkt (p, 9, - "PARAMETER[\"latitude_of_origin\",37.66666666666666],PARA"); - add_srs_wkt (p, 10, - "METER[\"central_meridian\",-77],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 11, - "g\",400000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 12, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 13, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2804\"]]"); - p = add_epsg_def (filter, first, last, 2805, "epsg", 2805, - "NAD83(HARN) / Massachusetts Mainland"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellp"); - add_proj4text (p, 2, - "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Massachusetts Mainland\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",42.68333333333333],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",41.71666666666667],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",41],PARAMETER[\"central_meridian\",-71.5]"); - add_srs_wkt (p, 11, - ",PARAMETER[\"false_easting\",200000],PARAMETER[\"false_n"); - add_srs_wkt (p, 12, - "orthing\",750000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"2805\"]]"); - p = add_epsg_def (filter, first, last, 2806, "epsg", 2806, - "NAD83(HARN) / Massachusetts Island"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333"); - add_proj4text (p, 1, - "333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Massachusetts Island\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",41.48333333333333],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",41.28333333333333],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",41],PARAMETER[\"central_meridian\",-70.5]"); - add_srs_wkt (p, 11, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 12, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"2806\"]]"); - p = add_epsg_def (filter, first, last, 2807, "epsg", 2807, - "NAD83(HARN) / Michigan North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_"); - add_proj4text (p, 2, - "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 3, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Michigan North\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",47.08333333333334],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",45.48333333333333],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 10, - "origin\",44.78333333333333],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 11, - "\",-87],PARAMETER[\"false_easting\",8000000],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 14, - "\"EPSG\",\"2807\"]]"); - p = add_epsg_def (filter, first, last, 2808, "epsg", 2808, - "NAD83(HARN) / Michigan Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43"); - add_proj4text (p, 1, - ".31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +"); - add_proj4text (p, 2, - "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Michigan Central\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",45.7],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",44.18333333333333],PARAMETER[\"latitude_of_origin\",43."); - add_srs_wkt (p, 10, - "31666666666667],PARAMETER[\"central_meridian\",-84.36666"); - add_srs_wkt (p, 11, - "666666666],PARAMETER[\"false_easting\",6000000],PARAMETE"); - add_srs_wkt (p, 12, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); - add_srs_wkt (p, 14, - "ITY[\"EPSG\",\"2808\"]]"); - p = add_epsg_def (filter, first, last, 2809, "epsg", 2809, - "NAD83(HARN) / Michigan South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41"); - add_proj4text (p, 1, - ".5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps="); - add_proj4text (p, 2, - "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Michigan South\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",43.66666666666666],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",42.1],PARAMETER[\"latitude_of_origin\",41.5"); - add_srs_wkt (p, 10, - "],PARAMETER[\"central_meridian\",-84.36666666666666],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_easting\",4000000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 12, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 13, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "2809\"]]"); - p = add_epsg_def (filter, first, last, 2810, "epsg", 2810, - "NAD83(HARN) / Minnesota North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y"); - add_proj4text (p, 2, - "_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Minnesota North\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",48.63333333333333],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",47.03333333333333],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",46.5],PARAMETER[\"central_meridian\",-93.1],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_easting\",800000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 12, - "hing\",100000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 13, - "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 14, - "G\",\"2810\"]]"); - p = add_epsg_def (filter, first, last, 2811, "epsg", 2811, - "NAD83(HARN) / Minnesota Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); - add_proj4text (p, 1, - "5 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +to"); - add_proj4text (p, 2, - "wgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Minnesota Central\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",47.05],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",45.61666666666667],PARAMETER[\"latitude_of_origin\",45]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"central_meridian\",-94.25],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_easting\",800000],PARAMETER[\"false_northing\",100000]"); - add_srs_wkt (p, 12, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); - add_srs_wkt (p, 13, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2811\"]]"); - p = add_epsg_def (filter, first, last, 2812, "epsg", 2812, - "NAD83(HARN) / Minnesota South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps="); - add_proj4text (p, 2, - "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Minnesota South\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",45.21666666666667],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",43.78333333333333],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",43],PARAMETER[\"central_meridian\",-94],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_easting\",800000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 12, - "\",100000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 13, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 14, - "\"2812\"]]"); - p = add_epsg_def (filter, first, last, 2813, "epsg", 2813, - "NAD83(HARN) / Mississippi East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9"); - add_proj4text (p, 1, - "9995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Mississippi East\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",29.5],PARAMETER[\"central_meridian\",-88.8333333"); - add_srs_wkt (p, 9, - "3333333],PARAMETER[\"scale_factor\",0.99995],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",300000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2813\"]]"); - p = add_epsg_def (filter, first, last, 2814, "epsg", 2814, - "NAD83(HARN) / Mississippi West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.9"); - add_proj4text (p, 1, - "9995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Mississippi West\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",29.5],PARAMETER[\"central_meridian\",-90.3333333"); - add_srs_wkt (p, 9, - "3333333],PARAMETER[\"scale_factor\",0.99995],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",700000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2814\"]]"); - p = add_epsg_def (filter, first, last, 2815, "epsg", 2815, - "NAD83(HARN) / Missouri East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9"); - add_proj4text (p, 1, - "99933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); - add_proj4text (p, 2, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Missouri East\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",35.83333333333334],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "90.5],PARAMETER[\"scale_factor\",0.999933333],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",250000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 11, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2815\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2816, "epsg", 2816, - "NAD83(HARN) / Missouri Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9"); - add_proj4text (p, 1, - "99933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); - add_proj4text (p, 2, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Missouri Central\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",35.83333333333334],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-92.5],PARAMETER[\"scale_factor\",0.999933333],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",500000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2816\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 2817, "epsg", 2817, - "NAD83(HARN) / Missouri West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9"); - add_proj4text (p, 1, - "99941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); - add_proj4text (p, 2, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Missouri West\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",36.16666666666666],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "94.5],PARAMETER[\"scale_factor\",0.999941177],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",850000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 11, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2817\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2818, "epsg", 2818, - "NAD83(HARN) / Montana"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5"); - add_proj4text (p, 1, - " +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Montana\",GEOGCS[\"NAD83(HARN)\","); - add_srs_wkt (p, 1, - "DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"615"); - add_srs_wkt (p, 4, - "2\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION[\"L"); - add_srs_wkt (p, 7, - "ambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_paral"); - add_srs_wkt (p, 8, - "lel_1\",49],PARAMETER[\"standard_parallel_2\",45],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",44.25],PARAMETER[\"central_me"); - add_srs_wkt (p, 10, - "ridian\",-109.5],PARAMETER[\"false_easting\",600000],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"2818\"]]"); - p = add_epsg_def (filter, first, last, 2819, "epsg", 2819, - "NAD83(HARN) / Nebraska"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); - add_proj4text (p, 1, - "lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 2, - "0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Nebraska\",GEOGCS[\"NAD83(HARN)\""); - add_srs_wkt (p, 1, - ",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 8, - "llel_1\",43],PARAMETER[\"standard_parallel_2\",40],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"latitude_of_origin\",39.83333333333334],PARAMETER"); - add_srs_wkt (p, 10, - "[\"central_meridian\",-100],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 11, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 13, - "\",NORTH],AUTHORITY[\"EPSG\",\"2819\"]]"); - p = add_epsg_def (filter, first, last, 2820, "epsg", 2820, - "NAD83(HARN) / Nevada East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 2, - "0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Nevada East\",GEOGCS[\"NAD83(HARN"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",34.75],PARAMETER[\"central_meridian\",-115.583333333"); - add_srs_wkt (p, 9, - "3333],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",200000],PARAMETER[\"false_northing\",800000"); - add_srs_wkt (p, 11, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2820\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2821, "epsg", 2821, - "NAD83(HARN) / Nevada Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 2, - "0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Nevada Central\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",34.75],PARAMETER[\"central_meridian\",-116.666666"); - add_srs_wkt (p, 9, - "6666667],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",600"); - add_srs_wkt (p, 11, - "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"282"); - add_srs_wkt (p, 13, - "1\"]]"); - p = add_epsg_def (filter, first, last, 2822, "epsg", 2822, - "NAD83(HARN) / Nevada West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 2, - "0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Nevada West\",GEOGCS[\"NAD83(HARN"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",34.75],PARAMETER[\"central_meridian\",-118.583333333"); - add_srs_wkt (p, 9, - "3333],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",800000],PARAMETER[\"false_northing\",400000"); - add_srs_wkt (p, 11, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2822\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2823, "epsg", 2823, - "NAD83(HARN) / New Hampshire"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); - add_proj4text (p, 2, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New Hampshire\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",42.5],PARAMETER[\"central_meridian\",-71.6666666666"); - add_srs_wkt (p, 9, - "6667],PARAMETER[\"scale_factor\",0.999966667],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",300000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 11, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2823\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2824, "epsg", 2824, - "NAD83(HARN) / New Jersey"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New Jersey\",GEOGCS[\"NAD83(HARN)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",38.83333333333334],PARAMETER[\"central_meridian\",-74.5"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",150000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2824\"]]"); - p = add_epsg_def (filter, first, last, 2825, "epsg", 2825, - "NAD83(HARN) / New Mexico East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); - add_proj4text (p, 1, - "909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New Mexico East\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",31],PARAMETER[\"central_meridian\",-104.33333333"); - add_srs_wkt (p, 9, - "33333],PARAMETER[\"scale_factor\",0.999909091],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_easting\",165000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 11, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2825\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2826, "epsg", 2826, - "NAD83(HARN) / New Mexico Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=5000"); - add_proj4text (p, 1, - "00 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); - add_proj4text (p, 2, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New Mexico Central\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",31],PARAMETER[\"central_meridian\",-106.25],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2826\"]]"); - p = add_epsg_def (filter, first, last, 2827, "epsg", 2827, - "NAD83(HARN) / New Mexico West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); - add_proj4text (p, 1, - "916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New Mexico West\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",31],PARAMETER[\"central_meridian\",-107.83333333"); - add_srs_wkt (p, 9, - "33333],PARAMETER[\"scale_factor\",0.999916667],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_easting\",830000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 11, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2827\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2828, "epsg", 2828, - "NAD83(HARN) / New York East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New York East\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",38.83333333333334],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "74.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",150000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2828\"]]"); - p = add_epsg_def (filter, first, last, 2829, "epsg", 2829, - "NAD83(HARN) / New York Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); - add_proj4text (p, 1, - "9375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New York Central\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",40],PARAMETER[\"central_meridian\",-76.583333333"); - add_srs_wkt (p, 9, - "33333],PARAMETER[\"scale_factor\",0.9999375],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",250000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2829\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_08.c b/src/spatialite/src/srsinit/epsg_inlined_08.c deleted file mode 100644 index b0be7fe..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_08.c +++ /dev/null @@ -1,3936 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_08 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 2830, "epsg", 2830, - "NAD83(HARN) / New York West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); - add_proj4text (p, 1, - "9375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New York West\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",40],PARAMETER[\"central_meridian\",-78.583333333333"); - add_srs_wkt (p, 9, - "33],PARAMETER[\"scale_factor\",0.9999375],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_easting\",350000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 12, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2830\"]]"); - p = add_epsg_def (filter, first, last, 2831, "epsg", 2831, - "NAD83(HARN) / New York Long Island"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New York Long Island\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",41.03333333333333],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",40.66666666666666],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",40.16666666666666],PARAMETER[\"central_me"); - add_srs_wkt (p, 11, - "ridian\",-74],PARAMETER[\"false_easting\",300000],PARAME"); - add_srs_wkt (p, 12, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 14, - "ORITY[\"EPSG\",\"2831\"]]"); - p = add_epsg_def (filter, first, last, 2832, "epsg", 2832, - "NAD83(HARN) / North Dakota North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333"); - add_proj4text (p, 1, - "333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GR"); - add_proj4text (p, 2, - "S80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / North Dakota North\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",48.73333333333333],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",47.43333333333333],PARAMETER[\"latitude"); - add_srs_wkt (p, 10, - "_of_origin\",47],PARAMETER[\"central_meridian\",-100.5],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",600000],PARAMETER[\"false_no"); - add_srs_wkt (p, 12, - "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"2832\"]]"); - p = add_epsg_def (filter, first, last, 2833, "epsg", 2833, - "NAD83(HARN) / North Dakota South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333"); - add_proj4text (p, 1, - "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +"); - add_proj4text (p, 2, - "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / North Dakota South\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",47.48333333333333],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",46.18333333333333],PARAMETER[\"latitude"); - add_srs_wkt (p, 10, - "_of_origin\",45.66666666666666],PARAMETER[\"central_meri"); - add_srs_wkt (p, 11, - "dian\",-100.5],PARAMETER[\"false_easting\",600000],PARAM"); - add_srs_wkt (p, 12, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 14, - "HORITY[\"EPSG\",\"2833\"]]"); - p = add_epsg_def (filter, first, last, 2834, "epsg", 2834, - "NAD83(HARN) / Ohio North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=G"); - add_proj4text (p, 2, - "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Ohio North\",GEOGCS[\"NAD83(HARN)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 8, - "rallel_1\",41.7],PARAMETER[\"standard_parallel_2\",40.43"); - add_srs_wkt (p, 9, - "333333333333],PARAMETER[\"latitude_of_origin\",39.666666"); - add_srs_wkt (p, 10, - "66666666],PARAMETER[\"central_meridian\",-82.5],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_easting\",600000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 13, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2834\""); - add_srs_wkt (p, 14, - "]]"); - p = add_epsg_def (filter, first, last, 2835, "epsg", 2835, - "NAD83(HARN) / Ohio South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Ohio South\",GEOGCS[\"NAD83(HARN)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 8, - "rallel_1\",40.03333333333333],PARAMETER[\"standard_paral"); - add_srs_wkt (p, 9, - "lel_2\",38.73333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 10, - "n\",38],PARAMETER[\"central_meridian\",-82.5],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_easting\",600000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 12, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2835\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 2836, "epsg", 2836, - "NAD83(HARN) / Oklahoma North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666"); - add_proj4text (p, 1, - "667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80"); - add_proj4text (p, 2, - " +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Oklahoma North\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",36.76666666666667],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",35.56666666666667],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 10, - "origin\",35],PARAMETER[\"central_meridian\",-98],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_easting\",600000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 13, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2836\""); - add_srs_wkt (p, 14, - "]]"); - p = add_epsg_def (filter, first, last, 2837, "epsg", 2837, - "NAD83(HARN) / Oklahoma South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Oklahoma South\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",35.23333333333333],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",33.93333333333333],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 10, - "origin\",33.33333333333334],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 11, - "\",-98],PARAMETER[\"false_easting\",600000],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 14, - "\"EPSG\",\"2837\"]]"); - p = add_epsg_def (filter, first, last, 2838, "epsg", 2838, - "NAD83(HARN) / Oregon North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.6"); - add_proj4text (p, 1, - "6666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=G"); - add_proj4text (p, 2, - "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Oregon North\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_1\",46],PARAMETER[\"standard_parallel_2\",44.3"); - add_srs_wkt (p, 9, - "3333333333334],PARAMETER[\"latitude_of_origin\",43.66666"); - add_srs_wkt (p, 10, - "666666666],PARAMETER[\"central_meridian\",-120.5],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_easting\",2500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 12, - "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 13, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"28"); - add_srs_wkt (p, 14, - "38\"]]"); - p = add_epsg_def (filter, first, last, 2839, "epsg", 2839, - "NAD83(HARN) / Oregon South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.6"); - add_proj4text (p, 1, - "6666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=G"); - add_proj4text (p, 2, - "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Oregon South\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_1\",44],PARAMETER[\"standard_parallel_2\",42.3"); - add_srs_wkt (p, 9, - "3333333333334],PARAMETER[\"latitude_of_origin\",41.66666"); - add_srs_wkt (p, 10, - "666666666],PARAMETER[\"central_meridian\",-120.5],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_easting\",1500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 12, - "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 13, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"28"); - add_srs_wkt (p, 14, - "39\"]]"); - p = add_epsg_def (filter, first, last, 2840, "epsg", 2840, - "NAD83(HARN) / Rhode Island"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); - add_proj4text (p, 1, - "9999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0"); - add_proj4text (p, 2, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Rhode Island\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",41.08333333333334],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "71.5],PARAMETER[\"scale_factor\",0.99999375],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",100000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2840\"]]"); - p = add_epsg_def (filter, first, last, 2841, "epsg", 2841, - "NAD83(HARN) / South Dakota North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666"); - add_proj4text (p, 1, - "666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_"); - add_proj4text (p, 2, - "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 3, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / South Dakota North\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",45.68333333333333],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",44.41666666666666],PARAMETER[\"latitude"); - add_srs_wkt (p, 10, - "_of_origin\",43.83333333333334],PARAMETER[\"central_meri"); - add_srs_wkt (p, 11, - "dian\",-100],PARAMETER[\"false_easting\",600000],PARAMET"); - add_srs_wkt (p, 12, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 14, - "RITY[\"EPSG\",\"2841\"]]"); - p = add_epsg_def (filter, first, last, 2842, "epsg", 2842, - "NAD83(HARN) / South Dakota South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); - add_proj4text (p, 1, - ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); - add_proj4text (p, 2, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 3, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / South Dakota South\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",44.4],PARAMETER[\"standard_parallel_"); - add_srs_wkt (p, 9, - "2\",42.83333333333334],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 10, - "42.33333333333334],PARAMETER[\"central_meridian\",-100.3"); - add_srs_wkt (p, 11, - "333333333333],PARAMETER[\"false_easting\",600000],PARAME"); - add_srs_wkt (p, 12, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 14, - "ORITY[\"EPSG\",\"2842\"]]"); - p = add_epsg_def (filter, first, last, 2843, "epsg", 2843, - "NAD83(HARN) / Tennessee"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=3"); - add_proj4text (p, 1, - "4.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GR"); - add_proj4text (p, 2, - "S80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Tennessee\",GEOGCS[\"NAD83(HARN)\""); - add_srs_wkt (p, 1, - ",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 8, - "llel_1\",36.41666666666666],PARAMETER[\"standard_paralle"); - add_srs_wkt (p, 9, - "l_2\",35.25],PARAMETER[\"latitude_of_origin\",34.3333333"); - add_srs_wkt (p, 10, - "3333334],PARAMETER[\"central_meridian\",-86],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_easting\",600000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2843\"]]"); - p = add_epsg_def (filter, first, last, 2844, "epsg", 2844, - "NAD83(HARN) / Texas North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=3"); - add_proj4text (p, 1, - "4 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Texas North\",GEOGCS[\"NAD83(HARN"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); - add_srs_wkt (p, 8, - "parallel_1\",36.18333333333333],PARAMETER[\"standard_par"); - add_srs_wkt (p, 9, - "allel_2\",34.65],PARAMETER[\"latitude_of_origin\",34],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"central_meridian\",-101.5],PARAMETER[\"false_e"); - add_srs_wkt (p, 11, - "asting\",200000],PARAMETER[\"false_northing\",1000000],U"); - add_srs_wkt (p, 12, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2844\"]]"); - p = add_epsg_def (filter, first, last, 2845, "epsg", 2845, - "NAD83(HARN) / Texas North Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333"); - add_proj4text (p, 1, - "333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y"); - add_proj4text (p, 2, - "_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 3, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Texas North Central\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",33.96666666666667],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",32.13333333333333],PARAMETER[\"latitude"); - add_srs_wkt (p, 10, - "_of_origin\",31.66666666666667],PARAMETER[\"central_meri"); - add_srs_wkt (p, 11, - "dian\",-98.5],PARAMETER[\"false_easting\",600000],PARAME"); - add_srs_wkt (p, 12, - "TER[\"false_northing\",2000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 13, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 14, - "],AUTHORITY[\"EPSG\",\"2845\"]]"); - p = add_epsg_def (filter, first, last, 2846, "epsg", 2846, - "NAD83(HARN) / Texas Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666"); - add_proj4text (p, 1, - "667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); - add_proj4text (p, 2, - "x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 3, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Texas Central\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_1\",31.88333333333333],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 9, - "rallel_2\",30.11666666666667],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 10, - "igin\",29.66666666666667],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 11, - ",-100.3333333333333],PARAMETER[\"false_easting\",700000]"); - add_srs_wkt (p, 12, - ",PARAMETER[\"false_northing\",3000000],UNIT[\"metre\",1,"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"2846\"]]"); - p = add_epsg_def (filter, first, last, 2847, "epsg", 2847, - "NAD83(HARN) / Texas South Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333"); - add_proj4text (p, 1, - "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); - add_proj4text (p, 3, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Texas South Central\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",30.28333333333333],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",28.38333333333333],PARAMETER[\"latitude"); - add_srs_wkt (p, 10, - "_of_origin\",27.83333333333333],PARAMETER[\"central_meri"); - add_srs_wkt (p, 11, - "dian\",-99],PARAMETER[\"false_easting\",600000],PARAMETE"); - add_srs_wkt (p, 12, - "R[\"false_northing\",4000000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 14, - "AUTHORITY[\"EPSG\",\"2847\"]]"); - p = add_epsg_def (filter, first, last, 2848, "epsg", 2848, - "NAD83(HARN) / Texas South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); - add_proj4text (p, 1, - "667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y"); - add_proj4text (p, 2, - "_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 3, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Texas South\",GEOGCS[\"NAD83(HARN"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); - add_srs_wkt (p, 8, - "parallel_1\",27.83333333333333],PARAMETER[\"standard_par"); - add_srs_wkt (p, 9, - "allel_2\",26.16666666666667],PARAMETER[\"latitude_of_ori"); - add_srs_wkt (p, 10, - "gin\",25.66666666666667],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 11, - "-98.5],PARAMETER[\"false_easting\",300000],PARAMETER[\"f"); - add_srs_wkt (p, 12, - "alse_northing\",5000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 14, - "RITY[\"EPSG\",\"2848\"]]"); - p = add_epsg_def (filter, first, last, 2849, "epsg", 2849, - "NAD83(HARN) / Utah North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +"); - add_proj4text (p, 2, - "y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); - add_proj4text (p, 3, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Utah North\",GEOGCS[\"NAD83(HARN)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 8, - "rallel_1\",41.78333333333333],PARAMETER[\"standard_paral"); - add_srs_wkt (p, 9, - "lel_2\",40.71666666666667],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 10, - "n\",40.33333333333334],PARAMETER[\"central_meridian\",-1"); - add_srs_wkt (p, 11, - "11.5],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 12, - "lse_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); - add_srs_wkt (p, 14, - "ITY[\"EPSG\",\"2849\"]]"); - p = add_epsg_def (filter, first, last, 2850, "epsg", 2850, - "NAD83(HARN) / Utah Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); - add_proj4text (p, 1, - "8.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 "); - add_proj4text (p, 2, - "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Utah Central\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_1\",40.65],PARAMETER[\"standard_parallel_2\",3"); - add_srs_wkt (p, 9, - "9.01666666666667],PARAMETER[\"latitude_of_origin\",38.33"); - add_srs_wkt (p, 10, - "333333333334],PARAMETER[\"central_meridian\",-111.5],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 12, - "ing\",2000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 13, - "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 14, - "G\",\"2850\"]]"); - p = add_epsg_def (filter, first, last, 2851, "epsg", 2851, - "NAD83(HARN) / Utah South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); - add_proj4text (p, 1, - "6.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 "); - add_proj4text (p, 2, - "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Utah South\",GEOGCS[\"NAD83(HARN)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 8, - "rallel_1\",38.35],PARAMETER[\"standard_parallel_2\",37.2"); - add_srs_wkt (p, 9, - "1666666666667],PARAMETER[\"latitude_of_origin\",36.66666"); - add_srs_wkt (p, 10, - "666666666],PARAMETER[\"central_meridian\",-111.5],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_easting\",500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 12, - "\",3000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"2851\"]]"); - p = add_epsg_def (filter, first, last, 2852, "epsg", 2852, - "NAD83(HARN) / Vermont"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0"); - add_proj4text (p, 1, - "=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Vermont\",GEOGCS[\"NAD83(HARN)\","); - add_srs_wkt (p, 1, - "DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"615"); - add_srs_wkt (p, 4, - "2\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",4"); - add_srs_wkt (p, 8, - "2.5],PARAMETER[\"central_meridian\",-72.5],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.999964286],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"2852\"]]"); - p = add_epsg_def (filter, first, last, 2853, "epsg", 2853, - "NAD83(HARN) / Virginia North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +"); - add_proj4text (p, 2, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Virginia North\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",39.2],PARAMETER[\"standard_parallel_2\","); - add_srs_wkt (p, 9, - "38.03333333333333],PARAMETER[\"latitude_of_origin\",37.6"); - add_srs_wkt (p, 10, - "6666666666666],PARAMETER[\"central_meridian\",-78.5],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_easting\",3500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 12, - "hing\",2000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 13, - "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 14, - "SG\",\"2853\"]]"); - p = add_epsg_def (filter, first, last, 2854, "epsg", 2854, - "NAD83(HARN) / Virginia South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +"); - add_proj4text (p, 2, - "y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); - add_proj4text (p, 3, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Virginia South\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",37.96666666666667],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",36.76666666666667],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 10, - "origin\",36.33333333333334],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 11, - "\",-78.5],PARAMETER[\"false_easting\",3500000],PARAMETER"); - add_srs_wkt (p, 12, - "[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 14, - "UTHORITY[\"EPSG\",\"2854\"]]"); - p = add_epsg_def (filter, first, last, 2855, "epsg", 2855, - "NAD83(HARN) / Washington North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47"); - add_proj4text (p, 1, - " +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Washington North\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",48.73333333333333],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",47.5],PARAMETER[\"latitude_of_origin\",47]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"central_meridian\",-120.8333333333333],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 12, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 13, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 14, - "855\"]]"); - p = add_epsg_def (filter, first, last, 2856, "epsg", 2856, - "NAD83(HARN) / Washington South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333"); - add_proj4text (p, 1, - "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +"); - add_proj4text (p, 2, - "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Washington South\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",47.33333333333334],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",45.83333333333334],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",45.33333333333334],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 11, - "n\",-120.5],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 12, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); - add_srs_wkt (p, 14, - "ITY[\"EPSG\",\"2856\"]]"); - p = add_epsg_def (filter, first, last, 2857, "epsg", 2857, - "NAD83(HARN) / West Virginia North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); - add_proj4text (p, 1, - "5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / West Virginia North\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",40.25],PARAMETER[\"standard_parallel"); - add_srs_wkt (p, 9, - "_2\",39],PARAMETER[\"latitude_of_origin\",38.5],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"central_meridian\",-79.5],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 12, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"2857\"]]"); - p = add_epsg_def (filter, first, last, 2858, "epsg", 2858, - "NAD83(HARN) / West Virginia South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80"); - add_proj4text (p, 2, - " +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / West Virginia South\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",38.88333333333333],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",37.48333333333333],PARAMETER[\"latitude"); - add_srs_wkt (p, 10, - "_of_origin\",37],PARAMETER[\"central_meridian\",-81],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_easting\",600000],PARAMETER[\"false_north"); - add_srs_wkt (p, 12, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 13, - "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "2858\"]]"); - p = add_epsg_def (filter, first, last, 2859, "epsg", 2859, - "NAD83(HARN) / Wisconsin North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666"); - add_proj4text (p, 1, - "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Wisconsin North\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",46.76666666666667],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",45.56666666666667],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",45.16666666666666],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 11, - "n\",-90],PARAMETER[\"false_easting\",600000],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 14, - "\"EPSG\",\"2859\"]]"); - p = add_epsg_def (filter, first, last, 2860, "epsg", 2860, - "NAD83(HARN) / Wisconsin Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333"); - add_proj4text (p, 1, - "334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Wisconsin Central\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",45.5],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",44.25],PARAMETER[\"latitude_of_origin\",43.833333333333"); - add_srs_wkt (p, 10, - "34],PARAMETER[\"central_meridian\",-90],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_easting\",600000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 12, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 13, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2860\"]]"); - p = add_epsg_def (filter, first, last, 2861, "epsg", 2861, - "NAD83(HARN) / Wisconsin South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80"); - add_proj4text (p, 2, - " +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Wisconsin South\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",44.06666666666667],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",42.73333333333333],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",42],PARAMETER[\"central_meridian\",-90],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_easting\",600000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 12, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 13, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"286"); - add_srs_wkt (p, 14, - "1\"]]"); - p = add_epsg_def (filter, first, last, 2862, "epsg", 2862, - "NAD83(HARN) / Wyoming East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Wyoming East\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",40.5],PARAMETER[\"central_meridian\",-105.166666666"); - add_srs_wkt (p, 9, - "6667],PARAMETER[\"scale_factor\",0.9999375],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",200000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2862\"]]"); - p = add_epsg_def (filter, first, last, 2863, "epsg", 2863, - "NAD83(HARN) / Wyoming East Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0"); - add_proj4text (p, 2, - ",0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Wyoming East Central\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",40.5],PARAMETER[\"central_meridian\",-107.3"); - add_srs_wkt (p, 9, - "333333333333],PARAMETER[\"scale_factor\",0.9999375],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",400000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",100000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2863\"]]"); - p = add_epsg_def (filter, first, last, 2864, "epsg", 2864, - "NAD83(HARN) / Wyoming West Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0"); - add_proj4text (p, 1, - "=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Wyoming West Central\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",40.5],PARAMETER[\"central_meridian\",-108.7"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",0.9999375],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",600000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2864\"]]"); - p = add_epsg_def (filter, first, last, 2865, "epsg", 2865, - "NAD83(HARN) / Wyoming West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0"); - add_proj4text (p, 2, - ",0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Wyoming West\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",40.5],PARAMETER[\"central_meridian\",-110.083333333"); - add_srs_wkt (p, 9, - "3333],PARAMETER[\"scale_factor\",0.9999375],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",800000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 11, - "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); - add_srs_wkt (p, 12, - "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2865"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 2866, "epsg", 2866, - "NAD83(HARN) / Puerto Rico and Virgin Is."); - add_proj4text (p, 0, - "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +"); - add_proj4text (p, 2, - "x_0=200000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 3, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Puerto Rico and Virgin Is.\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference"); - add_srs_wkt (p, 2, - "_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"415"); - add_srs_wkt (p, 7, - "2\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_1\",18.43333333333333],PARAMETER"); - add_srs_wkt (p, 9, - "[\"standard_parallel_2\",18.03333333333333],PARAMETER[\""); - add_srs_wkt (p, 10, - "latitude_of_origin\",17.83333333333333],PARAMETER[\"cent"); - add_srs_wkt (p, 11, - "ral_meridian\",-66.43333333333334],PARAMETER[\"false_eas"); - add_srs_wkt (p, 12, - "ting\",200000],PARAMETER[\"false_northing\",200000],UNIT"); - add_srs_wkt (p, 13, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 14, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2866\"]]"); - p = add_epsg_def (filter, first, last, 2867, "epsg", 2867, - "NAD83(HARN) / Arizona East (ft)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Arizona East (ft)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",31],PARAMETER[\"central_meridian\",-110.16666666"); - add_srs_wkt (p, 9, - "66667],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_easting\",700000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 11, - "IT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2867\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 2868, "epsg", 2868, - "NAD83(HARN) / Arizona Central (ft)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Arizona Central (ft)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",31],PARAMETER[\"central_meridian\",-111.916"); - add_srs_wkt (p, 9, - "6666666667],PARAMETER[\"scale_factor\",0.9999],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_easting\",700000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 11, - "0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"28"); - add_srs_wkt (p, 13, - "68\"]]"); - p = add_epsg_def (filter, first, last, 2869, "epsg", 2869, - "NAD83(HARN) / Arizona West (ft)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); - add_proj4text (p, 1, - "=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Arizona West (ft)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",31],PARAMETER[\"central_meridian\",-113.75],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",0.999933333],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",700000],PARAMETER[\"false_northing\",0],UNIT[\"f"); - add_srs_wkt (p, 11, - "oot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 12, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2869\"]]"); - p = add_epsg_def (filter, first, last, 2870, "epsg", 2870, - "NAD83(HARN) / California zone 1 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); - add_proj4text (p, 1, - "3333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=5000"); - add_proj4text (p, 2, - "00.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); - add_proj4text (p, 3, - "=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / California zone 1 (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); - add_srs_wkt (p, 2, - "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",41.66666666666666],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",40],PARAMETER[\"latitude_of_origin"); - add_srs_wkt (p, 10, - "\",39.33333333333334],PARAMETER[\"central_meridian\",-12"); - add_srs_wkt (p, 11, - "2],PARAMETER[\"false_easting\",6561666.667],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",1640416.667],UNIT[\"US survey foot\",0."); - add_srs_wkt (p, 13, - "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 14, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2870\"]]"); - p = add_epsg_def (filter, first, last, 2871, "epsg", 2871, - "NAD83(HARN) / California zone 2 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); - add_proj4text (p, 1, - "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.00"); - add_proj4text (p, 2, - "01016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0"); - add_proj4text (p, 3, - ",0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / California zone 2 (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); - add_srs_wkt (p, 2, - "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",39.83333333333334],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",38.33333333333334],PARAMETER[\"lat"); - add_srs_wkt (p, 10, - "itude_of_origin\",37.66666666666666],PARAMETER[\"central"); - add_srs_wkt (p, 11, - "_meridian\",-122],PARAMETER[\"false_easting\",6561666.66"); - add_srs_wkt (p, 12, - "7],PARAMETER[\"false_northing\",1640416.667],UNIT[\"US s"); - add_srs_wkt (p, 13, - "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 14, - "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 15, - "G\",\"2871\"]]"); - p = add_epsg_def (filter, first, last, 2872, "epsg", 2872, - "NAD83(HARN) / California zone 3 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0="); - add_proj4text (p, 2, - "500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 3, - "nits=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / California zone 3 (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); - add_srs_wkt (p, 2, - "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",38.43333333333333],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",37.06666666666667],PARAMETER[\"lat"); - add_srs_wkt (p, 10, - "itude_of_origin\",36.5],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 11, - "120.5],PARAMETER[\"false_easting\",6561666.667],PARAMETE"); - add_srs_wkt (p, 12, - "R[\"false_northing\",1640416.667],UNIT[\"US survey foot\""); - add_srs_wkt (p, 13, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 14, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2872\"]"); - add_srs_wkt (p, 15, - "]"); - p = add_epsg_def (filter, first, last, 2873, "epsg", 2873, - "NAD83(HARN) / California zone 4 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); - add_proj4text (p, 1, - "4 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.000101600"); - add_proj4text (p, 2, - "1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / California zone 4 (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); - add_srs_wkt (p, 2, - "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",37.25],PARAMETER[\"standard_par"); - add_srs_wkt (p, 9, - "allel_2\",36],PARAMETER[\"latitude_of_origin\",35.333333"); - add_srs_wkt (p, 10, - "33333334],PARAMETER[\"central_meridian\",-119],PARAMETER"); - add_srs_wkt (p, 11, - "[\"false_easting\",6561666.667],PARAMETER[\"false_northi"); - add_srs_wkt (p, 12, - "ng\",1640416.667],UNIT[\"US survey foot\",0.304800609601"); - add_srs_wkt (p, 13, - "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 14, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2873\"]]"); - p = add_epsg_def (filter, first, last, 2874, "epsg", 2874, - "NAD83(HARN) / California zone 5 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=50"); - add_proj4text (p, 2, - "0000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +uni"); - add_proj4text (p, 3, - "ts=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / California zone 5 (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); - add_srs_wkt (p, 2, - "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",35.46666666666667],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",34.03333333333333],PARAMETER[\"lat"); - add_srs_wkt (p, 10, - "itude_of_origin\",33.5],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 11, - "118],PARAMETER[\"false_easting\",6561666.667],PARAMETER["); - add_srs_wkt (p, 12, - "\"false_northing\",1640416.667],UNIT[\"US survey foot\","); - add_srs_wkt (p, 13, - "0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 14, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2874\"]"); - add_srs_wkt (p, 15, - "]"); - p = add_epsg_def (filter, first, last, 2875, "epsg", 2875, - "NAD83(HARN) / California zone 6 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000"); - add_proj4text (p, 2, - ".0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,"); - add_proj4text (p, 3, - "0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / California zone 6 (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); - add_srs_wkt (p, 2, - "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",33.88333333333333],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",32.78333333333333],PARAMETER[\"lat"); - add_srs_wkt (p, 10, - "itude_of_origin\",32.16666666666666],PARAMETER[\"central"); - add_srs_wkt (p, 11, - "_meridian\",-116.25],PARAMETER[\"false_easting\",6561666"); - add_srs_wkt (p, 12, - ".667],PARAMETER[\"false_northing\",1640416.667],UNIT[\"U"); - add_srs_wkt (p, 13, - "S survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 15, - "EPSG\",\"2875\"]]"); - p = add_epsg_def (filter, first, last, 2876, "epsg", 2876, - "NAD83(HARN) / Colorado North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8"); - add_proj4text (p, 2, - "288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0"); - add_proj4text (p, 3, - ",0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Colorado North (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",40.78333333333333],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",39.71666666666667],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",39.33333333333334],PARAMETER[\"central_me"); - add_srs_wkt (p, 11, - "ridian\",-105.5],PARAMETER[\"false_easting\",3000000],PA"); - add_srs_wkt (p, 12, - "RAMETER[\"false_northing\",1000000],UNIT[\"US survey foo"); - add_srs_wkt (p, 13, - "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); - add_srs_wkt (p, 14, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"287"); - add_srs_wkt (p, 15, - "6\"]]"); - p = add_epsg_def (filter, first, last, 2877, "epsg", 2877, - "NAD83(HARN) / Colorado Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); - add_proj4text (p, 1, - "3334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.60"); - add_proj4text (p, 2, - "96012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-f"); - add_proj4text (p, 3, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Colorado Central (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); - add_srs_wkt (p, 2, - "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",39.75],PARAMETER[\"standard_par"); - add_srs_wkt (p, 9, - "allel_2\",38.45],PARAMETER[\"latitude_of_origin\",37.833"); - add_srs_wkt (p, 10, - "33333333334],PARAMETER[\"central_meridian\",-105.5],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_easting\",3000000],PARAMETER[\"false_north"); - add_srs_wkt (p, 12, - "ing\",1000000],UNIT[\"US survey foot\",0.304800609601219"); - add_srs_wkt (p, 13, - "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 14, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"2877\"]]"); - p = add_epsg_def (filter, first, last, 2878, "epsg", 2878, - "NAD83(HARN) / Colorado South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); - add_proj4text (p, 1, - "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8"); - add_proj4text (p, 2, - "288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0"); - add_proj4text (p, 3, - ",0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Colorado South (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",38.43333333333333],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",37.23333333333333],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",36.66666666666666],PARAMETER[\"central_me"); - add_srs_wkt (p, 11, - "ridian\",-105.5],PARAMETER[\"false_easting\",3000000],PA"); - add_srs_wkt (p, 12, - "RAMETER[\"false_northing\",1000000],UNIT[\"US survey foo"); - add_srs_wkt (p, 13, - "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); - add_srs_wkt (p, 14, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"287"); - add_srs_wkt (p, 15, - "8\"]]"); - p = add_epsg_def (filter, first, last, 2879, "epsg", 2879, - "NAD83(HARN) / Connecticut (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); - add_proj4text (p, 1, - ".83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_"); - add_proj4text (p, 2, - "0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); - add_proj4text (p, 3, - "+units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Connecticut (ftUS)\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",41.86666666666667],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",41.2],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 10, - "40.83333333333334],PARAMETER[\"central_meridian\",-72.75"); - add_srs_wkt (p, 11, - "],PARAMETER[\"false_easting\",1000000],PARAMETER[\"false"); - add_srs_wkt (p, 12, - "_northing\",500000],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 13, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 14, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2879\"]]"); - p = add_epsg_def (filter, first, last, 2880, "epsg", 2880, - "NAD83(HARN) / Delaware (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); - add_proj4text (p, 1, - "995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Delaware (ftUS)\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",38],PARAMETER[\"central_meridian\",-75.416666666"); - add_srs_wkt (p, 9, - "66667],PARAMETER[\"scale_factor\",0.999995],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",656166.667],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"2880\"]]"); - p = add_epsg_def (filter, first, last, 2881, "epsg", 2881, - "NAD83(HARN) / Florida East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); - add_proj4text (p, 1, - "941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs"); - add_proj4text (p, 2, - "84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Florida East (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",24.33333333333333],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-81],PARAMETER[\"scale_factor\",0.999941177],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",656166.667],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 13, - "ORTH],AUTHORITY[\"EPSG\",\"2881\"]]"); - p = add_epsg_def (filter, first, last, 2882, "epsg", 2882, - "NAD83(HARN) / Florida West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); - add_proj4text (p, 1, - "941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs"); - add_proj4text (p, 2, - "84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Florida West (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",24.33333333333333],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-82],PARAMETER[\"scale_factor\",0.999941177],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",656166.667],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 13, - "ORTH],AUTHORITY[\"EPSG\",\"2882\"]]"); - p = add_epsg_def (filter, first, last, 2883, "epsg", 2883, - "NAD83(HARN) / Florida North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); - add_proj4text (p, 1, - "9 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Florida North (ftUS)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",30.75],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 9, - "el_2\",29.58333333333333],PARAMETER[\"latitude_of_origin"); - add_srs_wkt (p, 10, - "\",29],PARAMETER[\"central_meridian\",-84.5],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_easting\",1968500],PARAMETER[\"false_northing\",0]"); - add_srs_wkt (p, 12, - ",UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 14, - "HORITY[\"EPSG\",\"2883\"]]"); - p = add_epsg_def (filter, first, last, 2884, "epsg", 2884, - "NAD83(HARN) / Georgia East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,"); - add_proj4text (p, 2, - "0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Georgia East (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",30],PARAMETER[\"central_meridian\",-82.166666"); - add_srs_wkt (p, 9, - "66666667],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",656166.667],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"2884\"]]"); - p = add_epsg_def (filter, first, last, 2885, "epsg", 2885, - "NAD83(HARN) / Georgia West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,"); - add_proj4text (p, 2, - "0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Georgia West (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",30],PARAMETER[\"central_meridian\",-84.166666"); - add_srs_wkt (p, 9, - "66666667],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",2296583.333],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"2885\"]]"); - p = add_epsg_def (filter, first, last, 2886, "epsg", 2886, - "NAD83(HARN) / Idaho East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); - add_proj4text (p, 1, - "666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); - add_proj4text (p, 3, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Idaho East (ftUS)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",41.66666666666666],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-112.1666666666667],PARAMETER[\"scale_factor\",0.999947"); - add_srs_wkt (p, 10, - "368],PARAMETER[\"false_easting\",656166.667],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 12, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 13, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2886\"]]"); - p = add_epsg_def (filter, first, last, 2887, "epsg", 2887, - "NAD83(HARN) / Idaho Central (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); - add_proj4text (p, 1, - "99473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS8"); - add_proj4text (p, 2, - "0 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Idaho Central (ftUS)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",41.66666666666666],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",-114],PARAMETER[\"scale_factor\",0.999947368],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_easting\",1640416.667],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "northing\",0],UNIT[\"US survey foot\",0.3048006096012192"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 13, - "\",NORTH],AUTHORITY[\"EPSG\",\"2887\"]]"); - p = add_epsg_def (filter, first, last, 2888, "epsg", 2888, - "NAD83(HARN) / Idaho West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); - add_proj4text (p, 1, - ".999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Idaho West (ftUS)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",41.66666666666666],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-115.75],PARAMETER[\"scale_factor\",0.999933333],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",2624666.667],PARAMETER[\"false_nor"); - add_srs_wkt (p, 11, - "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 13, - "NORTH],AUTHORITY[\"EPSG\",\"2888\"]]"); - p = add_epsg_def (filter, first, last, 2889, "epsg", 2889, - "NAD83(HARN) / Indiana East (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +"); - add_proj4text (p, 2, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Indiana East (ftUS) (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refe"); - add_srs_wkt (p, 2, - "rence_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4152\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",37.5],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-85.66666666666667],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 10, - "9966667],PARAMETER[\"false_easting\",328083.333],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_northing\",818125],UNIT[\"US survey foot\",0."); - add_srs_wkt (p, 12, - "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2889\"]]"); - p = add_epsg_def (filter, first, last, 2890, "epsg", 2890, - "NAD83(HARN) / Indiana West (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80"); - add_proj4text (p, 2, - " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Indiana West (ftUS) (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refe"); - add_srs_wkt (p, 2, - "rence_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4152\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",37.5],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-87.08333333333333],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 10, - "9966667],PARAMETER[\"false_easting\",2952750],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_northing\",818125],UNIT[\"US survey foot\",0.304"); - add_srs_wkt (p, 12, - "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 13, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2890\"]]"); - p = add_epsg_def (filter, first, last, 2891, "epsg", 2891, - "NAD83(HARN) / Kentucky North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); - add_proj4text (p, 1, - "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_"); - add_proj4text (p, 2, - "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no"); - add_proj4text (p, 3, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Kentucky North (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",37.96666666666667],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",38.96666666666667],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",37.5],PARAMETER[\"central_meridian\",-84."); - add_srs_wkt (p, 11, - "25],PARAMETER[\"false_easting\",1640416.667],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 13, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 14, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2891\"]]"); - p = add_epsg_def (filter, first, last, 2892, "epsg", 2892, - "NAD83(HARN) / Kentucky South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0"); - add_proj4text (p, 2, - "001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0"); - add_proj4text (p, 3, - ",0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Kentucky South (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",37.93333333333333],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",36.73333333333333],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",36.33333333333334],PARAMETER[\"central_me"); - add_srs_wkt (p, 11, - "ridian\",-85.75],PARAMETER[\"false_easting\",1640416.667"); - add_srs_wkt (p, 12, - "],PARAMETER[\"false_northing\",1640416.667],UNIT[\"US su"); - add_srs_wkt (p, 13, - "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); - add_srs_wkt (p, 14, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 15, - "\",\"2892\"]]"); - p = add_epsg_def (filter, first, last, 2893, "epsg", 2893, - "NAD83(HARN) / Maryland (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666"); - add_proj4text (p, 1, - "666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS8"); - add_proj4text (p, 2, - "0 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Maryland (ftUS)\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",39.45],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",38.3],PARAMETER[\"latitude_of_origin\",37.6666666666666"); - add_srs_wkt (p, 10, - "6],PARAMETER[\"central_meridian\",-77],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_easting\",1312333.333],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 14, - "ORITY[\"EPSG\",\"2893\"]]"); - p = add_epsg_def (filter, first, last, 2894, "epsg", 2894, - "NAD83(HARN) / Massachusetts Mainland (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=7"); - add_proj4text (p, 2, - "50000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Massachusetts Mainland (ftUS)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refere"); - add_srs_wkt (p, 2, - "nce_Network\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",42.68333333333333],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",41.71666666666667],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",41],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 11, - "\",-71.5],PARAMETER[\"false_easting\",656166.667],PARAME"); - add_srs_wkt (p, 12, - "TER[\"false_northing\",2460625],UNIT[\"US survey foot\","); - add_srs_wkt (p, 13, - "0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 14, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2894\"]"); - add_srs_wkt (p, 15, - "]"); - p = add_epsg_def (filter, first, last, 2895, "epsg", 2895, - "NAD83(HARN) / Massachusetts Island (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333"); - add_proj4text (p, 1, - "333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0"); - add_proj4text (p, 2, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_de"); - add_proj4text (p, 3, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Massachusetts Island (ftUS)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Referenc"); - add_srs_wkt (p, 2, - "e_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); - add_srs_wkt (p, 7, - "52\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_1\",41.48333333333333],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"standard_parallel_2\",41.28333333333333],PARAMETER[\""); - add_srs_wkt (p, 10, - "latitude_of_origin\",41],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 11, - "-70.5],PARAMETER[\"false_easting\",1640416.667],PARAMETE"); - add_srs_wkt (p, 12, - "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); - add_srs_wkt (p, 13, - "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); - add_srs_wkt (p, 14, - "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2895\"]]"); - p = add_epsg_def (filter, first, last, 2896, "epsg", 2896, - "NAD83(HARN) / Michigan North (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999"); - add_proj4text (p, 2, - "968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); - add_proj4text (p, 3, - "=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Michigan North (ft)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",47.08333333333334],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",45.48333333333333],PARAMETER[\"latitude"); - add_srs_wkt (p, 10, - "_of_origin\",44.78333333333333],PARAMETER[\"central_meri"); - add_srs_wkt (p, 11, - "dian\",-87],PARAMETER[\"false_easting\",26246719.16],PAR"); - add_srs_wkt (p, 12, - "AMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUTHOR"); - add_srs_wkt (p, 13, - "ITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 14, - "H],AUTHORITY[\"EPSG\",\"2896\"]]"); - p = add_epsg_def (filter, first, last, 2897, "epsg", 2897, - "NAD83(HARN) / Michigan Central (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43"); - add_proj4text (p, 1, - ".31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.9"); - add_proj4text (p, 2, - "99976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +uni"); - add_proj4text (p, 3, - "ts=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Michigan Central (ft)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",45.7],PARAMETER[\"standard_paralle"); - add_srs_wkt (p, 9, - "l_2\",44.18333333333333],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 10, - ",43.31666666666667],PARAMETER[\"central_meridian\",-84.3"); - add_srs_wkt (p, 11, - "6666666666666],PARAMETER[\"false_easting\",19685039.37],"); - add_srs_wkt (p, 12, - "PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 14, - "ORTH],AUTHORITY[\"EPSG\",\"2897\"]]"); - p = add_epsg_def (filter, first, last, 2898, "epsg", 2898, - "NAD83(HARN) / Michigan South (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41"); - add_proj4text (p, 1, - ".5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 "); - add_proj4text (p, 2, - "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Michigan South (ft)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",43.66666666666666],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",42.1],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 10, - "41.5],PARAMETER[\"central_meridian\",-84.36666666666666]"); - add_srs_wkt (p, 11, - ",PARAMETER[\"false_easting\",13123359.58],PARAMETER[\"fa"); - add_srs_wkt (p, 12, - "lse_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 14, - "[\"EPSG\",\"2898\"]]"); - p = add_epsg_def (filter, first, last, 2899, "epsg", 2899, - "NAD83(HARN) / Mississippi East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9"); - add_proj4text (p, 1, - "9995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84"); - add_proj4text (p, 2, - "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Mississippi East (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); - add_srs_wkt (p, 2, - "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",29.5],PARAMETER[\"central_meridian\",-88"); - add_srs_wkt (p, 9, - ".83333333333333],PARAMETER[\"scale_factor\",0.99995],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_easting\",984250.0000000002],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 12, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 13, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2899\"]]"); - p = add_epsg_def (filter, first, last, 2900, "epsg", 2900, - "NAD83(HARN) / Mississippi West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.9"); - add_proj4text (p, 1, - "9995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84"); - add_proj4text (p, 2, - "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Mississippi West (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); - add_srs_wkt (p, 2, - "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",29.5],PARAMETER[\"central_meridian\",-90"); - add_srs_wkt (p, 9, - ".33333333333333],PARAMETER[\"scale_factor\",0.99995],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_easting\",2296583.333],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "northing\",0],UNIT[\"US survey foot\",0.3048006096012192"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 13, - "\",NORTH],AUTHORITY[\"EPSG\",\"2900\"]]"); - p = add_epsg_def (filter, first, last, 2901, "epsg", 2901, - "NAD83(HARN) / Montana (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5"); - add_proj4text (p, 1, - " +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); - add_proj4text (p, 2, - "0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Montana (ft)\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_1\",49],PARAMETER[\"standard_parallel_2\",45],"); - add_srs_wkt (p, 9, - "PARAMETER[\"latitude_of_origin\",44.25],PARAMETER[\"cent"); - add_srs_wkt (p, 10, - "ral_meridian\",-109.5],PARAMETER[\"false_easting\",19685"); - add_srs_wkt (p, 11, - "03.937],PARAMETER[\"false_northing\",0],UNIT[\"foot\",0."); - add_srs_wkt (p, 12, - "3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 13, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2901\"]]"); - p = add_epsg_def (filter, first, last, 2902, "epsg", 2902, - "NAD83(HARN) / New Mexico East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); - add_proj4text (p, 1, - "909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New Mexico East (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",31],PARAMETER[\"central_meridian\",-104.33"); - add_srs_wkt (p, 9, - "33333333333],PARAMETER[\"scale_factor\",0.999909091],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_easting\",541337.5],PARAMETER[\"false_nor"); - add_srs_wkt (p, 11, - "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 13, - "NORTH],AUTHORITY[\"EPSG\",\"2902\"]]"); - p = add_epsg_def (filter, first, last, 2903, "epsg", 2903, - "NAD83(HARN) / New Mexico Central (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=5000"); - add_proj4text (p, 1, - "00.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New Mexico Central (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_"); - add_srs_wkt (p, 2, - "Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",31],PARAMETER[\"central_meridian\",-10"); - add_srs_wkt (p, 9, - "6.25],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",1640416.667],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 11, - "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"2903\"]]"); - p = add_epsg_def (filter, first, last, 2904, "epsg", 2904, - "NAD83(HARN) / New Mexico West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); - add_proj4text (p, 1, - "916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs"); - add_proj4text (p, 2, - "84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New Mexico West (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",31],PARAMETER[\"central_meridian\",-107.83"); - add_srs_wkt (p, 9, - "33333333333],PARAMETER[\"scale_factor\",0.999916667],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_easting\",2723091.667],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "northing\",0],UNIT[\"US survey foot\",0.3048006096012192"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 13, - "\",NORTH],AUTHORITY[\"EPSG\",\"2904\"]]"); - p = add_epsg_def (filter, first, last, 2905, "epsg", 2905, - "NAD83(HARN) / New York East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New York East (ftUS)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",38.83333333333334],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",-74.5],PARAMETER[\"scale_factor\",0.9999],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",492125],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"2905\"]]"); - p = add_epsg_def (filter, first, last, 2906, "epsg", 2906, - "NAD83(HARN) / New York Central (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); - add_proj4text (p, 1, - "9375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84"); - add_proj4text (p, 2, - "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New York Central (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); - add_srs_wkt (p, 2, - "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",40],PARAMETER[\"central_meridian\",-76.5"); - add_srs_wkt (p, 9, - "8333333333333],PARAMETER[\"scale_factor\",0.9999375],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_easting\",820208.3330000002],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 12, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 13, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2906\"]]"); - p = add_epsg_def (filter, first, last, 2907, "epsg", 2907, - "NAD83(HARN) / New York West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); - add_proj4text (p, 1, - "9375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84"); - add_proj4text (p, 2, - "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New York West (ftUS)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",40],PARAMETER[\"central_meridian\",-78.5833"); - add_srs_wkt (p, 9, - "3333333333],PARAMETER[\"scale_factor\",0.9999375],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",1148291.667],PARAMETER[\"false_nor"); - add_srs_wkt (p, 11, - "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 13, - "NORTH],AUTHORITY[\"EPSG\",\"2907\"]]"); - p = add_epsg_def (filter, first, last, 2908, "epsg", 2908, - "NAD83(HARN) / New York Long Island (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000"); - add_proj4text (p, 2, - "000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); - add_proj4text (p, 3, - "=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New York Long Island (ftUS)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Referenc"); - add_srs_wkt (p, 2, - "e_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); - add_srs_wkt (p, 7, - "52\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_1\",41.03333333333333],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"standard_parallel_2\",40.66666666666666],PARAMETER[\""); - add_srs_wkt (p, 10, - "latitude_of_origin\",40.16666666666666],PARAMETER[\"cent"); - add_srs_wkt (p, 11, - "ral_meridian\",-74],PARAMETER[\"false_easting\",984250.0"); - add_srs_wkt (p, 12, - "000000002],PARAMETER[\"false_northing\",0],UNIT[\"US sur"); - add_srs_wkt (p, 13, - "vey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 14, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 15, - ",\"2908\"]]"); - p = add_epsg_def (filter, first, last, 2909, "epsg", 2909, - "NAD83(HARN) / North Dakota North (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333"); - add_proj4text (p, 1, - "333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +"); - add_proj4text (p, 2, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / North Dakota North (ft)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); - add_srs_wkt (p, 2, - "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",48.73333333333333],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",47.43333333333333],PARAMETER[\"lat"); - add_srs_wkt (p, 10, - "itude_of_origin\",47],PARAMETER[\"central_meridian\",-10"); - add_srs_wkt (p, 11, - "0.5],PARAMETER[\"false_easting\",1968503.937],PARAMETER["); - add_srs_wkt (p, 12, - "\"false_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 14, - "ORITY[\"EPSG\",\"2909\"]]"); - p = add_epsg_def (filter, first, last, 2910, "epsg", 2910, - "NAD83(HARN) / North Dakota South (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333"); - add_proj4text (p, 1, - "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9"); - add_proj4text (p, 2, - "999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); - add_proj4text (p, 3, - "=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / North Dakota South (ft)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); - add_srs_wkt (p, 2, - "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",47.48333333333333],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",46.18333333333333],PARAMETER[\"lat"); - add_srs_wkt (p, 10, - "itude_of_origin\",45.66666666666666],PARAMETER[\"central"); - add_srs_wkt (p, 11, - "_meridian\",-100.5],PARAMETER[\"false_easting\",1968503."); - add_srs_wkt (p, 12, - "937],PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.304"); - add_srs_wkt (p, 13, - "8,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 14, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"2910\"]]"); - p = add_epsg_def (filter, first, last, 2911, "epsg", 2911, - "NAD83(HARN) / Oklahoma North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666"); - add_proj4text (p, 1, - "667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80"); - add_proj4text (p, 2, - " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Oklahoma North (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",36.76666666666667],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",35.56666666666667],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",35],PARAMETER[\"central_meridian\",-98],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_easting\",1968500],PARAMETER[\"false_no"); - add_srs_wkt (p, 12, - "rthing\",0],UNIT[\"US survey foot\",0.3048006096012192,A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"2911\"]]"); - p = add_epsg_def (filter, first, last, 2912, "epsg", 2912, - "NAD83(HARN) / Oklahoma South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); - add_proj4text (p, 3, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Oklahoma South (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",35.23333333333333],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",33.93333333333333],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",33.33333333333334],PARAMETER[\"central_me"); - add_srs_wkt (p, 11, - "ridian\",-98],PARAMETER[\"false_easting\",1968500],PARAM"); - add_srs_wkt (p, 12, - "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); - add_srs_wkt (p, 13, - "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 14, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2912\"]]"); - p = add_epsg_def (filter, first, last, 2913, "epsg", 2913, - "NAD83(HARN) / Oregon North (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.6"); - add_proj4text (p, 1, - "6666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 "); - add_proj4text (p, 2, - "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Oregon North (ft)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",46],PARAMETER[\"standard_parallel_2\",4"); - add_srs_wkt (p, 9, - "4.33333333333334],PARAMETER[\"latitude_of_origin\",43.66"); - add_srs_wkt (p, 10, - "666666666666],PARAMETER[\"central_meridian\",-120.5],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_easting\",8202099.738],PARAMETER[\"false_"); - add_srs_wkt (p, 12, - "northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"2913\"]]"); - p = add_epsg_def (filter, first, last, 2914, "epsg", 2914, - "NAD83(HARN) / Oregon South (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.6"); - add_proj4text (p, 1, - "6666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 "); - add_proj4text (p, 2, - "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Oregon South (ft)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",44],PARAMETER[\"standard_parallel_2\",4"); - add_srs_wkt (p, 9, - "2.33333333333334],PARAMETER[\"latitude_of_origin\",41.66"); - add_srs_wkt (p, 10, - "666666666666],PARAMETER[\"central_meridian\",-120.5],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_easting\",4921259.843],PARAMETER[\"false_"); - add_srs_wkt (p, 12, - "northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"2914\"]]"); - p = add_epsg_def (filter, first, last, 2915, "epsg", 2915, - "NAD83(HARN) / Tennessee (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=3"); - add_proj4text (p, 1, - "4.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GR"); - add_proj4text (p, 2, - "S80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Tennessee (ftUS)\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",36.41666666666666],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",35.25],PARAMETER[\"latitude_of_origin\",34"); - add_srs_wkt (p, 10, - ".33333333333334],PARAMETER[\"central_meridian\",-86],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_easting\",1968500],PARAMETER[\"false_nort"); - add_srs_wkt (p, 12, - "hing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 14, - "ORTH],AUTHORITY[\"EPSG\",\"2915\"]]"); - p = add_epsg_def (filter, first, last, 2916, "epsg", 2916, - "NAD83(HARN) / Texas North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=3"); - add_proj4text (p, 1, - "4 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.99989"); - add_proj4text (p, 2, - "83998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Texas North (ftUS)\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",36.18333333333333],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",34.65],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 10, - ",34],PARAMETER[\"central_meridian\",-101.5],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_easting\",656166.667],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",3280833.333],UNIT[\"US survey foot\",0.3048006096012192"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 14, - "\",NORTH],AUTHORITY[\"EPSG\",\"2916\"]]"); - p = add_epsg_def (filter, first, last, 2917, "epsg", 2917, - "NAD83(HARN) / Texas North Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333"); - add_proj4text (p, 1, - "333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y"); - add_proj4text (p, 2, - "_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 3, - "units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Texas North Central (ftUS)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference"); - add_srs_wkt (p, 2, - "_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"415"); - add_srs_wkt (p, 7, - "2\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_1\",33.96666666666667],PARAMETER"); - add_srs_wkt (p, 9, - "[\"standard_parallel_2\",32.13333333333333],PARAMETER[\""); - add_srs_wkt (p, 10, - "latitude_of_origin\",31.66666666666667],PARAMETER[\"cent"); - add_srs_wkt (p, 11, - "ral_meridian\",-98.5],PARAMETER[\"false_easting\",196850"); - add_srs_wkt (p, 12, - "0],PARAMETER[\"false_northing\",6561666.667],UNIT[\"US s"); - add_srs_wkt (p, 13, - "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 14, - "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 15, - "G\",\"2917\"]]"); - p = add_epsg_def (filter, first, last, 2918, "epsg", 2918, - "NAD83(HARN) / Texas Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666"); - add_proj4text (p, 1, - "667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); - add_proj4text (p, 2, - "x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84"); - add_proj4text (p, 3, - "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Texas Central (ftUS)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",31.88333333333333],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",30.11666666666667],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",29.66666666666667],PARAMETER[\"central_me"); - add_srs_wkt (p, 11, - "ridian\",-100.3333333333333],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 12, - ",2296583.333],PARAMETER[\"false_northing\",9842500.00000"); - add_srs_wkt (p, 13, - "0002],UNIT[\"US survey foot\",0.3048006096012192,AUTHORI"); - add_srs_wkt (p, 14, - "TY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 15, - "],AUTHORITY[\"EPSG\",\"2918\"]]"); - p = add_epsg_def (filter, first, last, 2919, "epsg", 2919, - "NAD83(HARN) / Texas South Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333"); - add_proj4text (p, 1, - "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +un"); - add_proj4text (p, 3, - "its=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Texas South Central (ftUS)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference"); - add_srs_wkt (p, 2, - "_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"415"); - add_srs_wkt (p, 7, - "2\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_1\",30.28333333333333],PARAMETER"); - add_srs_wkt (p, 9, - "[\"standard_parallel_2\",28.38333333333333],PARAMETER[\""); - add_srs_wkt (p, 10, - "latitude_of_origin\",27.83333333333333],PARAMETER[\"cent"); - add_srs_wkt (p, 11, - "ral_meridian\",-99],PARAMETER[\"false_easting\",1968500]"); - add_srs_wkt (p, 12, - ",PARAMETER[\"false_northing\",13123333.333],UNIT[\"US su"); - add_srs_wkt (p, 13, - "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); - add_srs_wkt (p, 14, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 15, - "\",\"2919\"]]"); - p = add_epsg_def (filter, first, last, 2920, "epsg", 2920, - "NAD83(HARN) / Texas South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); - add_proj4text (p, 1, - "667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.00"); - add_proj4text (p, 2, - "00000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 3, - "0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Texas South (ftUS)\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",27.83333333333333],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",26.16666666666667],PARAMETER[\"latitude"); - add_srs_wkt (p, 10, - "_of_origin\",25.66666666666667],PARAMETER[\"central_meri"); - add_srs_wkt (p, 11, - "dian\",-98.5],PARAMETER[\"false_easting\",984250.0000000"); - add_srs_wkt (p, 12, - "002],PARAMETER[\"false_northing\",16404166.667],UNIT[\"U"); - add_srs_wkt (p, 13, - "S survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 15, - "EPSG\",\"2920\"]]"); - p = add_epsg_def (filter, first, last, 2921, "epsg", 2921, - "NAD83(HARN) / Utah North (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0"); - add_proj4text (p, 2, - "001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 3, - "0,0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Utah North (ft)\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",41.78333333333333],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",40.71666666666667],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",40.33333333333334],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 11, - "n\",-111.5],PARAMETER[\"false_easting\",1640419.948],PAR"); - add_srs_wkt (p, 12, - "AMETER[\"false_northing\",3280839.895],UNIT[\"foot\",0.3"); - add_srs_wkt (p, 13, - "048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 14, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2921\"]]"); - p = add_epsg_def (filter, first, last, 2922, "epsg", 2922, - "NAD83(HARN) / Utah Central (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); - add_proj4text (p, 1, - "8.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0="); - add_proj4text (p, 2, - "1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 3, - "s=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Utah Central (ft)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",40.65],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",39.01666666666667],PARAMETER[\"latitude_of_origin\",38."); - add_srs_wkt (p, 10, - "33333333333334],PARAMETER[\"central_meridian\",-111.5],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_easting\",1640419.948],PARAMETER[\"fals"); - add_srs_wkt (p, 12, - "e_northing\",6561679.79],UNIT[\"foot\",0.3048,AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 14, - "UTHORITY[\"EPSG\",\"2922\"]]"); - p = add_epsg_def (filter, first, last, 2923, "epsg", 2923, - "NAD83(HARN) / Utah South (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); - add_proj4text (p, 1, - "6.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0="); - add_proj4text (p, 2, - "2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 3, - "s=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Utah South (ft)\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",38.35],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",37.21666666666667],PARAMETER[\"latitude_of_origin\",36."); - add_srs_wkt (p, 10, - "66666666666666],PARAMETER[\"central_meridian\",-111.5],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_easting\",1640419.948],PARAMETER[\"fals"); - add_srs_wkt (p, 12, - "e_northing\",9842519.685],UNIT[\"foot\",0.3048,AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 14, - "AUTHORITY[\"EPSG\",\"2923\"]]"); - p = add_epsg_def (filter, first, last, 2924, "epsg", 2924, - "NAD83(HARN) / Virginia North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2"); - add_proj4text (p, 2, - "000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 3, - "s=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Virginia North (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",39.2],PARAMETER[\"standard_paralle"); - add_srs_wkt (p, 9, - "l_2\",38.03333333333333],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 10, - ",37.66666666666666],PARAMETER[\"central_meridian\",-78.5"); - add_srs_wkt (p, 11, - "],PARAMETER[\"false_easting\",11482916.667],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",6561666.667],UNIT[\"US survey foot\",0."); - add_srs_wkt (p, 13, - "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 14, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2924\"]]"); - p = add_epsg_def (filter, first, last, 2925, "epsg", 2925, - "NAD83(HARN) / Virginia South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0"); - add_proj4text (p, 2, - "001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 3, - "0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Virginia South (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",37.96666666666667],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",36.76666666666667],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",36.33333333333334],PARAMETER[\"central_me"); - add_srs_wkt (p, 11, - "ridian\",-78.5],PARAMETER[\"false_easting\",11482916.667"); - add_srs_wkt (p, 12, - "],PARAMETER[\"false_northing\",3280833.333],UNIT[\"US su"); - add_srs_wkt (p, 13, - "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); - add_srs_wkt (p, 14, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 15, - "\",\"2925\"]]"); - p = add_epsg_def (filter, first, last, 2926, "epsg", 2926, - "NAD83(HARN) / Washington North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47"); - add_proj4text (p, 1, - " +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0"); - add_proj4text (p, 2, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_de"); - add_proj4text (p, 3, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Washington North (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); - add_srs_wkt (p, 2, - "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",48.73333333333333],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",47.5],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 10, - "in\",47],PARAMETER[\"central_meridian\",-120.83333333333"); - add_srs_wkt (p, 11, - "33],PARAMETER[\"false_easting\",1640416.667],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 13, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 14, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2926\"]]"); - p = add_epsg_def (filter, first, last, 2927, "epsg", 2927, - "NAD83(HARN) / Washington South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333"); - add_proj4text (p, 1, - "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0"); - add_proj4text (p, 2, - "001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +un"); - add_proj4text (p, 3, - "its=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Washington South (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); - add_srs_wkt (p, 2, - "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",47.33333333333334],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",45.83333333333334],PARAMETER[\"lat"); - add_srs_wkt (p, 10, - "itude_of_origin\",45.33333333333334],PARAMETER[\"central"); - add_srs_wkt (p, 11, - "_meridian\",-120.5],PARAMETER[\"false_easting\",1640416."); - add_srs_wkt (p, 12, - "667],PARAMETER[\"false_northing\",0],UNIT[\"US survey fo"); - add_srs_wkt (p, 13, - "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); - add_srs_wkt (p, 14, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"29"); - add_srs_wkt (p, 15, - "27\"]]"); - p = add_epsg_def (filter, first, last, 2928, "epsg", 2928, - "NAD83(HARN) / Wisconsin North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666"); - add_proj4text (p, 1, - "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); - add_proj4text (p, 3, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Wisconsin North (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",46.76666666666667],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",45.56666666666667],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",45.16666666666666],PARAMETER[\"central_me"); - add_srs_wkt (p, 11, - "ridian\",-90],PARAMETER[\"false_easting\",1968500],PARAM"); - add_srs_wkt (p, 12, - "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); - add_srs_wkt (p, 13, - "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 14, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2928\"]]"); - p = add_epsg_def (filter, first, last, 2929, "epsg", 2929, - "NAD83(HARN) / Wisconsin Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333"); - add_proj4text (p, 1, - "334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Wisconsin Central (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); - add_srs_wkt (p, 2, - "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",45.5],PARAMETER[\"standard_para"); - add_srs_wkt (p, 9, - "llel_2\",44.25],PARAMETER[\"latitude_of_origin\",43.8333"); - add_srs_wkt (p, 10, - "3333333334],PARAMETER[\"central_meridian\",-90],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_easting\",1968500],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 14, - "AUTHORITY[\"EPSG\",\"2929\"]]"); - p = add_epsg_def (filter, first, last, 2930, "epsg", 2930, - "NAD83(HARN) / Wisconsin South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80"); - add_proj4text (p, 2, - " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Wisconsin South (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",44.06666666666667],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",42.73333333333333],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",42],PARAMETER[\"central_meridian\",-90],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_easting\",1968500],PARAMETER[\"false_no"); - add_srs_wkt (p, 12, - "rthing\",0],UNIT[\"US survey foot\",0.3048006096012192,A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"2930\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_09.c b/src/spatialite/src/srsinit/epsg_inlined_09.c deleted file mode 100644 index b2e6f07..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_09.c +++ /dev/null @@ -1,3398 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_09 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 2931, "epsg", 2931, - "Beduaram / TM 13 NE"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9996 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=0 +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,"); - add_proj4text (p, 2, - "0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beduaram / TM 13 NE\",GEOGCS[\"Beduaram\",DATUM"); - add_srs_wkt (p, 1, - "[\"Beduaram\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,2"); - add_srs_wkt (p, 2, - "93.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "106,-87,188,0,0,0,0],AUTHORITY[\"EPSG\",\"6213\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4213\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 7, - "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); - add_srs_wkt (p, 8, - "[\"central_meridian\",13],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"2931\"]]"); - p = add_epsg_def (filter, first, last, 2932, "epsg", 2932, - "QND95 / Qatar National Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.9"); - add_proj4text (p, 1, - "9999 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-119.4"); - add_proj4text (p, 2, - "25,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +un"); - add_proj4text (p, 3, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"QND95 / Qatar National Grid\",GEOGCS[\"QND95\","); - add_srs_wkt (p, 1, - "DATUM[\"Qatar_National_Datum_1995\",SPHEROID[\"Internati"); - add_srs_wkt (p, 2, - "onal 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626"); - add_srs_wkt (p, 4, - ",3.65706],AUTHORITY[\"EPSG\",\"6614\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4614\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",24.45],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",51.21666666666667],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 10, - "or\",0.99999],PARAMETER[\"false_easting\",200000],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_northing\",300000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 13, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"2932\"]]"); - p = add_epsg_def (filter, first, last, 2933, "epsg", 2933, - "Segara / UTM zone 50S"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +south +ellps=bessel +towgs84=-403,68"); - add_proj4text (p, 1, - "4,41,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Segara / UTM zone 50S\",GEOGCS[\"Segara\",DATUM"); - add_srs_wkt (p, 1, - "[\"Gunung_Segara\",SPHEROID[\"Bessel 1841\",6377397.155,"); - add_srs_wkt (p, 2, - "299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-403,6"); - add_srs_wkt (p, 3, - "84,41,0,0,0,0],AUTHORITY[\"EPSG\",\"6613\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4613\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",117],PARAMETER[\"scale_factor\",0.9996],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"2933\"]]"); - p = add_epsg_def (filter, first, last, 2934, "epsg", 2934, - "Segara (Jakarta) / NEIEZ (deprecated)"); - add_proj4text (p, 0, - "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 "); - add_proj4text (p, 1, - "+ellps=bessel +towgs84=-403,684,41,0,0,0,0 +pm=jakarta +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Segara (Jakarta) / NEIEZ (deprecated)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Segara (Jakarta)\",DATUM[\"Gunung_Segara_Jakarta\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7004\"]],TOWGS84[-403,684,41,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6820\"]],PRIMEM[\"Jakarta\",106.8077194444"); - add_srs_wkt (p, 5, - "444,AUTHORITY[\"EPSG\",\"8908\"]],UNIT[\"degree\",0.0174"); - add_srs_wkt (p, 6, - "532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"E"); - add_srs_wkt (p, 7, - "PSG\",\"4820\"]],PROJECTION[\"Mercator_1SP\"],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",110],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "97],PARAMETER[\"false_easting\",3900000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",900000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"2934\"]]"); - p = add_epsg_def (filter, first, last, 2935, "epsg", 2935, - "Pulkovo 1942 / CS63 zone A1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=41.53333333"); - add_proj4text (p, 1, - "333333 +k=1 +x_0=1300000 +y_0=0 +ellps=krass +towgs84=23"); - add_proj4text (p, 2, - ".92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / CS63 zone A1\",GEOGCS[\"Pulkovo "); - add_srs_wkt (p, 1, - "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); - add_srs_wkt (p, 2, - "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); - add_srs_wkt (p, 3, - "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0.1166666666666667],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "41.53333333333333],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",1300000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"293"); - add_srs_wkt (p, 13, - "5\"]]"); - p = add_epsg_def (filter, first, last, 2936, "epsg", 2936, - "Pulkovo 1942 / CS63 zone A2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=44.53333333"); - add_proj4text (p, 1, - "333333 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +towgs84=23"); - add_proj4text (p, 2, - ".92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / CS63 zone A2\",GEOGCS[\"Pulkovo "); - add_srs_wkt (p, 1, - "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); - add_srs_wkt (p, 2, - "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); - add_srs_wkt (p, 3, - "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0.1166666666666667],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "44.53333333333333],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",2300000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"293"); - add_srs_wkt (p, 13, - "6\"]]"); - p = add_epsg_def (filter, first, last, 2937, "epsg", 2937, - "Pulkovo 1942 / CS63 zone A3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=47.53333333"); - add_proj4text (p, 1, - "333333 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +towgs84=23"); - add_proj4text (p, 2, - ".92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / CS63 zone A3\",GEOGCS[\"Pulkovo "); - add_srs_wkt (p, 1, - "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); - add_srs_wkt (p, 2, - "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); - add_srs_wkt (p, 3, - "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0.1166666666666667],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "47.53333333333333],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",3300000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"293"); - add_srs_wkt (p, 13, - "7\"]]"); - p = add_epsg_def (filter, first, last, 2938, "epsg", 2938, - "Pulkovo 1942 / CS63 zone A4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=50.53333333"); - add_proj4text (p, 1, - "333333 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +towgs84=23"); - add_proj4text (p, 2, - ".92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / CS63 zone A4\",GEOGCS[\"Pulkovo "); - add_srs_wkt (p, 1, - "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); - add_srs_wkt (p, 2, - "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); - add_srs_wkt (p, 3, - "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0.1166666666666667],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "50.53333333333333],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",4300000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"293"); - add_srs_wkt (p, 13, - "8\"]]"); - p = add_epsg_def (filter, first, last, 2939, "epsg", 2939, - "Pulkovo 1942 / CS63 zone K2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=50.76666666"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +towgs84=23"); - add_proj4text (p, 2, - ".92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / CS63 zone K2\",GEOGCS[\"Pulkovo "); - add_srs_wkt (p, 1, - "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); - add_srs_wkt (p, 2, - "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); - add_srs_wkt (p, 3, - "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0.1333333333333333],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "50.76666666666667],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",2300000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"293"); - add_srs_wkt (p, 13, - "9\"]]"); - p = add_epsg_def (filter, first, last, 2940, "epsg", 2940, - "Pulkovo 1942 / CS63 zone K3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=53.76666666"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +towgs84=23"); - add_proj4text (p, 2, - ".92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / CS63 zone K3\",GEOGCS[\"Pulkovo "); - add_srs_wkt (p, 1, - "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); - add_srs_wkt (p, 2, - "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); - add_srs_wkt (p, 3, - "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0.1333333333333333],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "53.76666666666667],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",3300000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"294"); - add_srs_wkt (p, 13, - "0\"]]"); - p = add_epsg_def (filter, first, last, 2941, "epsg", 2941, - "Pulkovo 1942 / CS63 zone K4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=56.76666666"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +towgs84=23"); - add_proj4text (p, 2, - ".92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / CS63 zone K4\",GEOGCS[\"Pulkovo "); - add_srs_wkt (p, 1, - "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); - add_srs_wkt (p, 2, - "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); - add_srs_wkt (p, 3, - "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0.1333333333333333],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "56.76666666666667],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",4300000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"294"); - add_srs_wkt (p, 13, - "1\"]]"); - p = add_epsg_def (filter, first, last, 2942, "epsg", 2942, - "Porto Santo / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=intl +towgs84=-499,-249,314,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Porto Santo / UTM zone 28N\",GEOGCS[\"Porto San"); - add_srs_wkt (p, 1, - "to\",DATUM[\"Porto_Santo_1936\",SPHEROID[\"International"); - add_srs_wkt (p, 2, - " 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[-499,-249,314,0,0,0,0],AUTHORITY[\"EPSG\",\"6615\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4615\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",-15],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"2942\"]]"); - p = add_epsg_def (filter, first, last, 2943, "epsg", 2943, - "Selvagem Grande / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=intl +towgs84=-289,-124,60,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Selvagem Grande / UTM zone 28N\",GEOGCS[\"Selva"); - add_srs_wkt (p, 1, - "gem Grande\",DATUM[\"Selvagem_Grande\",SPHEROID[\"Intern"); - add_srs_wkt (p, 2, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[-289,-124,60,0,0,0,0],AUTHORITY[\"EPSG\",\"6616"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4616\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-15],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"2943\"]]"); - p = add_epsg_def (filter, first, last, 2944, "epsg", 2944, - "NAD83(CSRS) / SCoPQ zone 2 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / SCoPQ zone 2 (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); - add_srs_wkt (p, 7, - "17\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-5"); - add_srs_wkt (p, 9, - "5.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",304800],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 11, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 12, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2944\"]]"); - p = add_epsg_def (filter, first, last, 2945, "epsg", 2945, - "NAD83(CSRS) / MTM zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 3\",GEOGCS[\"NAD83(CSRS)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-58.5],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); - add_srs_wkt (p, 10, - "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2945\"]]"); - p = add_epsg_def (filter, first, last, 2946, "epsg", 2946, - "NAD83(CSRS) / MTM zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 4\",GEOGCS[\"NAD83(CSRS)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-61.5],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); - add_srs_wkt (p, 10, - "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2946\"]]"); - p = add_epsg_def (filter, first, last, 2947, "epsg", 2947, - "NAD83(CSRS) / MTM zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 5\",GEOGCS[\"NAD83(CSRS)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-64.5],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); - add_srs_wkt (p, 10, - "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2947\"]]"); - p = add_epsg_def (filter, first, last, 2948, "epsg", 2948, - "NAD83(CSRS) / MTM zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 6\",GEOGCS[\"NAD83(CSRS)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-67.5],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); - add_srs_wkt (p, 10, - "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2948\"]]"); - p = add_epsg_def (filter, first, last, 2949, "epsg", 2949, - "NAD83(CSRS) / MTM zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 7\",GEOGCS[\"NAD83(CSRS)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-70.5],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); - add_srs_wkt (p, 10, - "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2949\"]]"); - p = add_epsg_def (filter, first, last, 2950, "epsg", 2950, - "NAD83(CSRS) / MTM zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 8\",GEOGCS[\"NAD83(CSRS)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-73.5],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); - add_srs_wkt (p, 10, - "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2950\"]]"); - p = add_epsg_def (filter, first, last, 2951, "epsg", 2951, - "NAD83(CSRS) / MTM zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 9\",GEOGCS[\"NAD83(CSRS)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-76.5],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); - add_srs_wkt (p, 10, - "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2951\"]]"); - p = add_epsg_def (filter, first, last, 2952, "epsg", 2952, - "NAD83(CSRS) / MTM zone 10"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 10\",GEOGCS[\"NAD83(CSRS"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-79.5],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); - add_srs_wkt (p, 10, - "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2952\"]]"); - p = add_epsg_def (filter, first, last, 2953, "epsg", 2953, - "NAD83(CSRS) / New Brunswick Stereographic"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2"); - add_proj4text (p, 1, - "500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / New Brunswick Stereographic\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4617\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",46.5],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-66.5],PARAMETER[\"scale_factor\",0.999912],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",2500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",7500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAST],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"2953\"]]"); - p = add_epsg_def (filter, first, last, 2954, "epsg", 2954, - "NAD83(CSRS) / Prince Edward Isl. Stereographic (NAD83)"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=40"); - add_proj4text (p, 1, - "0000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +un"); - add_proj4text (p, 2, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / Prince Edward Isl. Stereographic "); - add_srs_wkt (p, 1, - "(NAD83)\",GEOGCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_"); - add_srs_wkt (p, 2, - "Spatial_Reference_System\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 3, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 4, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 5, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 6, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4617\"]],PROJECTION[\"Oblique_Stereographic"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",47.25],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",-63],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 10, - "912],PARAMETER[\"false_easting\",400000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",800000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"2954\"]]"); - p = add_epsg_def (filter, first, last, 2955, "epsg", 2955, - "NAD83(CSRS) / UTM zone 11N"); - add_proj4text (p, 0, - "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 11N\",GEOGCS[\"NAD83(CSR"); - add_srs_wkt (p, 1, - "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",-117],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2955\"]]"); - p = add_epsg_def (filter, first, last, 2956, "epsg", 2956, - "NAD83(CSRS) / UTM zone 12N"); - add_proj4text (p, 0, - "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 12N\",GEOGCS[\"NAD83(CSR"); - add_srs_wkt (p, 1, - "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",-111],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2956\"]]"); - p = add_epsg_def (filter, first, last, 2957, "epsg", 2957, - "NAD83(CSRS) / UTM zone 13N"); - add_proj4text (p, 0, - "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 13N\",GEOGCS[\"NAD83(CSR"); - add_srs_wkt (p, 1, - "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",-105],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2957\"]]"); - p = add_epsg_def (filter, first, last, 2958, "epsg", 2958, - "NAD83(CSRS) / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 17N\",GEOGCS[\"NAD83(CSR"); - add_srs_wkt (p, 1, - "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",-81],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2958\"]]"); - p = add_epsg_def (filter, first, last, 2959, "epsg", 2959, - "NAD83(CSRS) / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 18N\",GEOGCS[\"NAD83(CSR"); - add_srs_wkt (p, 1, - "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",-75],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2959\"]]"); - p = add_epsg_def (filter, first, last, 2960, "epsg", 2960, - "NAD83(CSRS) / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 19N\",GEOGCS[\"NAD83(CSR"); - add_srs_wkt (p, 1, - "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",-69],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2960\"]]"); - p = add_epsg_def (filter, first, last, 2961, "epsg", 2961, - "NAD83(CSRS) / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 20N\",GEOGCS[\"NAD83(CSR"); - add_srs_wkt (p, 1, - "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",-63],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2961\"]]"); - p = add_epsg_def (filter, first, last, 2962, "epsg", 2962, - "NAD83(CSRS) / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 21N\",GEOGCS[\"NAD83(CSR"); - add_srs_wkt (p, 1, - "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",-57],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2962\"]]"); - p = add_epsg_def (filter, first, last, 2964, "epsg", 2964, - "NAD27 / Alaska Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0"); - add_proj4text (p, 1, - "=0 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alaska Albers\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"standard_parallel_1\",55],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 8, - "rallel_2\",65],PARAMETER[\"latitude_of_center\",50],PARA"); - add_srs_wkt (p, 9, - "METER[\"longitude_of_center\",-154],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",0],PARAMETER[\"false_northing\",0],UNIT[\"US sur"); - add_srs_wkt (p, 11, - "vey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2964\"]]"); - p = add_epsg_def (filter, first, last, 2965, "epsg", 2965, - "NAD83 / Indiana East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +"); - add_proj4text (p, 2, - "datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Indiana East (ftUS)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",37.5],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-85.66666666666667],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.999966667],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "328083.333],PARAMETER[\"false_northing\",820208.33300000"); - add_srs_wkt (p, 11, - "02],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"2965\"]]"); - p = add_epsg_def (filter, first, last, 2966, "epsg", 2966, - "NAD83 / Indiana West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=900000 +y_0=249999.9998983998 +datum=NAD83"); - add_proj4text (p, 2, - " +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Indiana West (ftUS)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",37.5],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-87.08333333333333],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.999966667],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "2952750],PARAMETER[\"false_northing\",820208.3330000002]"); - add_srs_wkt (p, 11, - ",UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"2966\"]]"); - p = add_epsg_def (filter, first, last, 2967, "epsg", 2967, - "NAD83(HARN) / Indiana East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +"); - add_proj4text (p, 2, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Indiana East (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",37.5],PARAMETER[\"central_meridian\",-85.6666"); - add_srs_wkt (p, 9, - "6666666667],PARAMETER[\"scale_factor\",0.999966667],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",328083.333],PARAMETER[\"false_no"); - add_srs_wkt (p, 11, - "rthing\",820208.3330000002],UNIT[\"US survey foot\",0.30"); - add_srs_wkt (p, 12, - "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); - add_srs_wkt (p, 13, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2967\"]]"); - p = add_epsg_def (filter, first, last, 2968, "epsg", 2968, - "NAD83(HARN) / Indiana West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80"); - add_proj4text (p, 2, - " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Indiana West (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",37.5],PARAMETER[\"central_meridian\",-87.0833"); - add_srs_wkt (p, 9, - "3333333333],PARAMETER[\"scale_factor\",0.999966667],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",2952750],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",820208.3330000002],UNIT[\"US survey foot\",0.30480"); - add_srs_wkt (p, 12, - "06096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAS"); - add_srs_wkt (p, 13, - "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2968\"]]"); - p = add_epsg_def (filter, first, last, 2969, "epsg", 2969, - "Fort Marigot / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=intl +towgs84=137,248,-430,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Fort Marigot / UTM zone 20N\",GEOGCS[\"Fort Mar"); - add_srs_wkt (p, 1, - "igot\",DATUM[\"Fort_Marigot\",SPHEROID[\"International 1"); - add_srs_wkt (p, 2, - "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); - add_srs_wkt (p, 3, - "137,248,-430,0,0,0,0],AUTHORITY[\"EPSG\",\"6621\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4621\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",-63],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"2969\"]]"); - p = add_epsg_def (filter, first, last, 2970, "epsg", 2970, - "Guadeloupe 1948 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=intl +towgs84=-467,-16,-300,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Guadeloupe 1948 / UTM zone 20N\",GEOGCS[\"Guade"); - add_srs_wkt (p, 1, - "loupe 1948\",DATUM[\"Guadeloupe_1948\",SPHEROID[\"Intern"); - add_srs_wkt (p, 2, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[-467,-16,-300,0,0,0,0],AUTHORITY[\"EPSG\",\"662"); - add_srs_wkt (p, 4, - "2\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4622\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"2970\"]]"); - p = add_epsg_def (filter, first, last, 2971, "epsg", 2971, - "CSG67 / UTM zone 22N"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +ellps=intl +towgs84=-186,230,110,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CSG67 / UTM zone 22N\",GEOGCS[\"CSG67\",DATUM[\""); - add_srs_wkt (p, 1, - "Centre_Spatial_Guyanais_1967\",SPHEROID[\"International "); - add_srs_wkt (p, 2, - "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-186,230,110,0,0,0,0],AUTHORITY[\"EPSG\",\"6623\"]],PRI"); - add_srs_wkt (p, 4, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4623\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",-51],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"2971\"]]"); - p = add_epsg_def (filter, first, last, 2972, "epsg", 2972, - "RGFG95 / UTM zone 22N"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGFG95 / UTM zone 22N\",GEOGCS[\"RGFG95\",DATUM"); - add_srs_wkt (p, 1, - "[\"Reseau_Geodesique_Francais_Guyane_1995\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6624\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4624\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-51],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"2972\"]]"); - p = add_epsg_def (filter, first, last, 2973, "epsg", 2973, - "Martinique 1938 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=intl +towgs84=186,482,151,0,0,"); - add_proj4text (p, 1, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Martinique 1938 / UTM zone 20N\",GEOGCS[\"Marti"); - add_srs_wkt (p, 1, - "nique 1938\",DATUM[\"Martinique_1938\",SPHEROID[\"Intern"); - add_srs_wkt (p, 2, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[186,482,151,0,0,0,0],AUTHORITY[\"EPSG\",\"6625\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4625\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"2973\"]]"); - p = add_epsg_def (filter, first, last, 2975, "epsg", 2975, - "RGR92 / UTM zone 40S"); - add_proj4text (p, 0, - "+proj=utm +zone=40 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGR92 / UTM zone 40S\",GEOGCS[\"RGR92\",DATUM[\""); - add_srs_wkt (p, 1, - "Reseau_Geodesique_de_la_Reunion_1992\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6627\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4627\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",57],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"2975\"]]"); - p = add_epsg_def (filter, first, last, 2976, "epsg", 2976, - "Tahiti 52 / UTM zone 6S"); - add_proj4text (p, 0, - "+proj=utm +zone=6 +south +ellps=intl +towgs84=162,117,15"); - add_proj4text (p, 1, - "4,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tahiti 52 / UTM zone 6S\",GEOGCS[\"Tahiti 52\","); - add_srs_wkt (p, 1, - "DATUM[\"Tahiti_52\",SPHEROID[\"International 1924\",6378"); - add_srs_wkt (p, 2, - "388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[162,117,15"); - add_srs_wkt (p, 3, - "4,0,0,0,0],AUTHORITY[\"EPSG\",\"6628\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4628\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 7, - ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); - add_srs_wkt (p, 8, - "_meridian\",-147],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"2976\"]]"); - p = add_epsg_def (filter, first, last, 2977, "epsg", 2977, - "Tahaa 54 / UTM zone 5S"); - add_proj4text (p, 0, - "+proj=utm +zone=5 +south +ellps=intl +towgs84=72.438,345"); - add_proj4text (p, 1, - ".918,79.486,1.6045,0.8823,0.5565,1.3746 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"Tahaa 54 / UTM zone 5S\",GEOGCS[\"Tahaa 54\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Tahaa_54\",SPHEROID[\"International 1924\",6378388"); - add_srs_wkt (p, 2, - ",297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[72.438,345.91"); - add_srs_wkt (p, 3, - "8,79.486,1.6045,0.8823,0.5565,1.3746],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6629\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4629\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-153],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2977\"]]"); - p = add_epsg_def (filter, first, last, 2978, "epsg", 2978, - "IGN72 Nuku Hiva / UTM zone 7S"); - add_proj4text (p, 0, - "+proj=utm +zone=7 +south +ellps=intl +towgs84=84,274,65,"); - add_proj4text (p, 1, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGN72 Nuku Hiva / UTM zone 7S\",GEOGCS[\"IGN72 "); - add_srs_wkt (p, 1, - "Nuku Hiva\",DATUM[\"IGN72_Nuku_Hiva\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[84,274,65,0,0,0,0],AUTHORITY[\"EPSG\",\"6630\"]]"); - add_srs_wkt (p, 4, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 5, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "22\"]],AUTHORITY[\"EPSG\",\"4630\"]],PROJECTION[\"Transv"); - add_srs_wkt (p, 7, - "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",-141],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 12, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"2978\"]]"); - p = add_epsg_def (filter, first, last, 2979, "epsg", 2979, - "K0 1949 / UTM zone 42S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,"); - add_proj4text (p, 1, - "103,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"K0 1949 / UTM zone 42S (deprecated)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "K0 1949\",DATUM[\"K0_1949\",SPHEROID[\"International 192"); - add_srs_wkt (p, 2, - "4\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[14"); - add_srs_wkt (p, 3, - "5,-187,103,0,0,0,0],AUTHORITY[\"EPSG\",\"6631\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4631\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",69],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 9, - "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"2979\"]]"); - p = add_epsg_def (filter, first, last, 2980, "epsg", 2980, - "Combani 1950 / UTM zone 38S"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,"); - add_proj4text (p, 1, - "-262,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Combani 1950 / UTM zone 38S\",GEOGCS[\"Combani "); - add_srs_wkt (p, 1, - "1950\",DATUM[\"Combani_1950\",SPHEROID[\"International 1"); - add_srs_wkt (p, 2, - "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-382,-59,-262,0,0,0,0],AUTHORITY[\"EPSG\",\"6632\"]],PRI"); - add_srs_wkt (p, 4, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4632\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",45],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 9, - "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"2980\"]]"); - p = add_epsg_def (filter, first, last, 2981, "epsg", 2981, - "IGN56 Lifou / UTM zone 58S"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=intl +towgs84=335.47,22"); - add_proj4text (p, 1, - "2.58,-230.94,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGN56 Lifou / UTM zone 58S\",GEOGCS[\"IGN56 Lif"); - add_srs_wkt (p, 1, - "ou\",DATUM[\"IGN56_Lifou\",SPHEROID[\"International 1924"); - add_srs_wkt (p, 2, - "\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[335"); - add_srs_wkt (p, 3, - ".47,222.58,-230.94,0,0,0,0],AUTHORITY[\"EPSG\",\"6633\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4633\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",165],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 12, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"2981\"]]"); - p = add_epsg_def (filter, first, last, 2982, "epsg", 2982, - "IGN72 Grand Terre / UTM zone 58S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=intl +towgs84=-13,-348,"); - add_proj4text (p, 1, - "292,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGN72 Grand Terre / UTM zone 58S (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"IGN72 Grand Terre\",DATUM[\"IGN72_Grande_Terre"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7022\"]],TOWGS84[-13,-348,292,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6634\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\"4634"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",165]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 12, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2982\"]]"); - p = add_epsg_def (filter, first, last, 2983, "epsg", 2983, - "ST87 Ouvea / UTM zone 58S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=intl +towgs84=-122.383,"); - add_proj4text (p, 1, - "-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ST87 Ouvea / UTM zone 58S (deprecated)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"ST87 Ouvea\",DATUM[\"ST87_Ouvea\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,"); - add_srs_wkt (p, 4, - "4.4798],AUTHORITY[\"EPSG\",\"6635\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 5, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 6, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4635\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); - add_srs_wkt (p, 9, - "ridian\",165],PARAMETER[\"scale_factor\",0.9996],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",500000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); - add_srs_wkt (p, 13, - "ITY[\"EPSG\",\"2983\"]]"); - p = add_epsg_def (filter, first, last, 2984, "epsg", 2984, - "RGNC 1991 / Lambert New Caledonia (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +e"); - add_proj4text (p, 2, - "llps=intl +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGNC 1991 / Lambert New Caledonia (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"RGNC 1991\",DATUM[\"Reseau_Geodesique_Nouvelle"); - add_srs_wkt (p, 2, - "_Caledonie_1991\",SPHEROID[\"International 1924\",637838"); - add_srs_wkt (p, 3, - "8,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[0,0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0],AUTHORITY[\"EPSG\",\"6645\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4645\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",-20.66666666666667],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"standard_parallel_2\",-22.33333333333333],PARA"); - add_srs_wkt (p, 10, - "METER[\"latitude_of_origin\",-21.5],PARAMETER[\"central_"); - add_srs_wkt (p, 11, - "meridian\",166],PARAMETER[\"false_easting\",400000],PARA"); - add_srs_wkt (p, 12, - "METER[\"false_northing\",300000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 13, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 14, - "H],AUTHORITY[\"EPSG\",\"2984\"]]"); - p = add_epsg_def (filter, first, last, 2987, "epsg", 2987, - "Saint Pierre et Miquelon 1950 / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=clrk66 +towgs84=30,430,368,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Saint Pierre et Miquelon 1950 / UTM zone 21N\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Saint Pierre et Miquelon 1950\",DATUM[\"Saint_P"); - add_srs_wkt (p, 2, - "ierre_et_Miquelon_1950\",SPHEROID[\"Clarke 1866\",637820"); - add_srs_wkt (p, 3, - "6.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],TOWG"); - add_srs_wkt (p, 4, - "S84[30,430,368,0,0,0,0],AUTHORITY[\"EPSG\",\"6638\"]],PR"); - add_srs_wkt (p, 5, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 6, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 7, - "]],AUTHORITY[\"EPSG\",\"4638\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 8, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"central_meridian\",-57],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 10, - "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 13, - "H],AUTHORITY[\"EPSG\",\"2987\"]]"); - p = add_epsg_def (filter, first, last, 2988, "epsg", 2988, - "MOP78 / UTM zone 1S"); - add_proj4text (p, 0, - "+proj=utm +zone=1 +south +ellps=intl +towgs84=253,-132,-"); - add_proj4text (p, 1, - "127,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MOP78 / UTM zone 1S\",GEOGCS[\"MOP78\",DATUM[\""); - add_srs_wkt (p, 1, - "MOP78\",SPHEROID[\"International 1924\",6378388,297,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7022\"]],TOWGS84[253,-132,-127,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6639\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4639\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",500000],PARAMETER[\"false_northing\",10000"); - add_srs_wkt (p, 10, - "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); - add_srs_wkt (p, 11, - "[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"2988\"]]"); - p = add_epsg_def (filter, first, last, 2989, "epsg", 2989, - "RRAF 1991 / UTM zone 20N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RRAF 1991 / UTM zone 20N (deprecated)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"RRAF 1991\",DATUM[\"Reseau_de_Reference_des_Antilles_F"); - add_srs_wkt (p, 2, - "rancaises_1991\",SPHEROID[\"WGS 84\",6378137,298.2572235"); - add_srs_wkt (p, 3, - "63,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6640\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4640\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 13, - "989\"]]"); - p = add_epsg_def (filter, first, last, 2990, "epsg", 2990, - "Reunion 1947 / TM Reunion (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333"); - add_proj4text (p, 1, - "333333 +k=1 +x_0=50000 +y_0=160000 +ellps=intl +towgs84="); - add_proj4text (p, 2, - "94,-948,-1262,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Reunion 1947 / TM Reunion (deprecated)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Reunion 1947\",DATUM[\"Reunion_1947\",SPHEROID[\"Inte"); - add_srs_wkt (p, 2, - "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 3, - "]],TOWGS84[94,-948,-1262,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "626\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4626\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "-21.11666666666667],PARAMETER[\"central_meridian\",55.53"); - add_srs_wkt (p, 9, - "333333333333],PARAMETER[\"scale_factor\",1],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",50000],PARAMETER[\"false_northing\",1600"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2990\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 2991, "epsg", 2991, - "NAD83 / Oregon Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120"); - add_proj4text (p, 1, - ".5 +x_0=400000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Oregon Lambert\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",43],PARA"); - add_srs_wkt (p, 8, - "METER[\"standard_parallel_2\",45.5],PARAMETER[\"latitude"); - add_srs_wkt (p, 9, - "_of_origin\",41.75],PARAMETER[\"central_meridian\",-120."); - add_srs_wkt (p, 10, - "5],PARAMETER[\"false_easting\",400000],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 12, - "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"2991\"]]"); - p = add_epsg_def (filter, first, last, 2992, "epsg", 2992, - "NAD83 / Oregon Lambert (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120"); - add_proj4text (p, 1, - ".5 +x_0=399999.9999984 +y_0=0 +datum=NAD83 +units=ft +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Oregon Lambert (ft)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",43],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_2\",45.5],PARAMETER[\"lati"); - add_srs_wkt (p, 9, - "tude_of_origin\",41.75],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 10, - "120.5],PARAMETER[\"false_easting\",1312335.958],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"2992\"]]"); - p = add_epsg_def (filter, first, last, 2993, "epsg", 2993, - "NAD83(HARN) / Oregon Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120"); - add_proj4text (p, 1, - ".5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,"); - add_proj4text (p, 2, - "0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Oregon Lambert\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",43],PARAMETER[\"standard_parallel_2\",45"); - add_srs_wkt (p, 9, - ".5],PARAMETER[\"latitude_of_origin\",41.75],PARAMETER[\""); - add_srs_wkt (p, 10, - "central_meridian\",-120.5],PARAMETER[\"false_easting\",4"); - add_srs_wkt (p, 11, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 13, - ",NORTH],AUTHORITY[\"EPSG\",\"2993\"]]"); - p = add_epsg_def (filter, first, last, 2994, "epsg", 2994, - "NAD83(HARN) / Oregon Lambert (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120"); - add_proj4text (p, 1, - ".5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 2, - "0,0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Oregon Lambert (ft)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",43],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",45.5],PARAMETER[\"latitude_of_origin\",41.75],PARAMETER"); - add_srs_wkt (p, 10, - "[\"central_meridian\",-120.5],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",1312335.958],PARAMETER[\"false_northing\",0],UNIT[\"foo"); - add_srs_wkt (p, 12, - "t\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST"); - add_srs_wkt (p, 13, - "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2994\"]]"); - p = add_epsg_def (filter, first, last, 2995, "epsg", 2995, - "IGN53 Mare / UTM zone 58S"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=intl +towgs84=287.58,17"); - add_proj4text (p, 1, - "7.78,-135.41,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGN53 Mare / UTM zone 58S\",GEOGCS[\"IGN53 Mare"); - add_srs_wkt (p, 1, - "\",DATUM[\"IGN53_Mare\",SPHEROID[\"International 1924\","); - add_srs_wkt (p, 2, - "6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[287.58"); - add_srs_wkt (p, 3, - ",177.78,-135.41,0,0,0,0],AUTHORITY[\"EPSG\",\"6641\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4641\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",165],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"2995\"]]"); - p = add_epsg_def (filter, first, last, 2996, "epsg", 2996, - "ST84 Ile des Pins / UTM zone 58S"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=intl +towgs84=-13,-348,"); - add_proj4text (p, 1, - "292,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ST84 Ile des Pins / UTM zone 58S\",GEOGCS[\"ST8"); - add_srs_wkt (p, 1, - "4 Ile des Pins\",DATUM[\"ST84_Ile_des_Pins\",SPHEROID[\""); - add_srs_wkt (p, 2, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "22\"]],TOWGS84[-13,-348,292,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6642\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4642\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",0],PARAMETER[\"central_meridian\",165],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); - add_srs_wkt (p, 12, - "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2996\"]]"); - p = add_epsg_def (filter, first, last, 2997, "epsg", 2997, - "ST71 Belep / UTM zone 58S"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=intl +towgs84=-480.26,-"); - add_proj4text (p, 1, - "438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ST71 Belep / UTM zone 58S\",GEOGCS[\"ST71 Belep"); - add_srs_wkt (p, 1, - "\",DATUM[\"ST71_Belep\",SPHEROID[\"International 1924\","); - add_srs_wkt (p, 2, - "6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-480.2"); - add_srs_wkt (p, 3, - "6,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6643\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4643"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",165]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 12, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"2997\"]]"); - p = add_epsg_def (filter, first, last, 2998, "epsg", 2998, - "NEA74 Noumea / UTM zone 58S"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=intl +towgs84=-10.18,-3"); - add_proj4text (p, 1, - "50.43,291.37,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NEA74 Noumea / UTM zone 58S\",GEOGCS[\"NEA74 No"); - add_srs_wkt (p, 1, - "umea\",DATUM[\"NEA74_Noumea\",SPHEROID[\"International 1"); - add_srs_wkt (p, 2, - "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-10.18,-350.43,291.37,0,0,0,0],AUTHORITY[\"EPSG\",\"6644"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4644\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",165],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"2998\"]]"); - p = add_epsg_def (filter, first, last, 2999, "epsg", 2999, - "Grand Comoros / UTM zone 38S"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +south +ellps=intl +towgs84=-963,510,"); - add_proj4text (p, 1, - "-359,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Grand Comoros / UTM zone 38S\",GEOGCS[\"Grand C"); - add_srs_wkt (p, 1, - "omoros\",DATUM[\"Grand_Comoros\",SPHEROID[\"Internationa"); - add_srs_wkt (p, 2, - "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[-963,510,-359,0,0,0,0],AUTHORITY[\"EPSG\",\"6646\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4646\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",45],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"2999\"]]"); - p = add_epsg_def (filter, first, last, 3000, "epsg", 3000, - "Segara / NEIEZ"); - add_proj4text (p, 0, - "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 "); - add_proj4text (p, 1, - "+ellps=bessel +towgs84=-403,684,41,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Segara / NEIEZ\",GEOGCS[\"Segara\",DATUM[\"Gunu"); - add_srs_wkt (p, 1, - "ng_Segara\",SPHEROID[\"Bessel 1841\",6377397.155,299.152"); - add_srs_wkt (p, 2, - "8128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-403,684,41,0"); - add_srs_wkt (p, 3, - ",0,0,0],AUTHORITY[\"EPSG\",\"6613\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4613\"]],PROJECTION[\"Mercator_1SP\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"central_meridian\",110],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 8, - "997],PARAMETER[\"false_easting\",3900000],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_northing\",900000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 10, - "\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"3000\"]]"); - p = add_epsg_def (filter, first, last, 3001, "epsg", 3001, - "Batavia / NEIEZ"); - add_proj4text (p, 0, - "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 "); - add_proj4text (p, 1, - "+ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Batavia / NEIEZ\",GEOGCS[\"Batavia\",DATUM[\"Ba"); - add_srs_wkt (p, 1, - "tavia\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-377,681,-50,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6211\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4211\"]],PROJECTION[\"Mercator_1SP\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "central_meridian\",110],PARAMETER[\"scale_factor\",0.997"); - add_srs_wkt (p, 8, - "],PARAMETER[\"false_easting\",3900000],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_northing\",900000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 10, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"3001\"]]"); - p = add_epsg_def (filter, first, last, 3002, "epsg", 3002, - "Makassar / NEIEZ"); - add_proj4text (p, 0, - "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 "); - add_proj4text (p, 1, - "+ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +uni"); - add_proj4text (p, 2, - "ts=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Makassar / NEIEZ\",GEOGCS[\"Makassar\",DATUM[\""); - add_srs_wkt (p, 1, - "Makassar\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528"); - add_srs_wkt (p, 2, - "128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-587.8,519.75,"); - add_srs_wkt (p, 3, - "145.76,0,0,0,0],AUTHORITY[\"EPSG\",\"6257\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4257\"]],PROJECTION[\"Mercator_1SP\"],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",110],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.997],PARAMETER[\"false_easting\",3900000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",900000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 10, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"3002\"]]"); - p = add_epsg_def (filter, first, last, 3003, "epsg", 3003, - "Monte Mario / Italy zone 1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,"); - add_proj4text (p, 2, - "0.714,-11.68 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Monte Mario / Italy zone 1\",GEOGCS[\"Monte Mar"); - add_srs_wkt (p, 1, - "io\",DATUM[\"Monte_Mario\",SPHEROID[\"International 1924"); - add_srs_wkt (p, 2, - "\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-10"); - add_srs_wkt (p, 3, - "4.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68],AUTHORITY[\"EP"); - add_srs_wkt (p, 4, - "SG\",\"6265\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4265\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",15000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"3003\"]]"); - p = add_epsg_def (filter, first, last, 3004, "epsg", 3004, - "Monte Mario / Italy zone 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917"); - add_proj4text (p, 2, - ",0.714,-11.68 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Monte Mario / Italy zone 2\",GEOGCS[\"Monte Mar"); - add_srs_wkt (p, 1, - "io\",DATUM[\"Monte_Mario\",SPHEROID[\"International 1924"); - add_srs_wkt (p, 2, - "\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-10"); - add_srs_wkt (p, 3, - "4.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68],AUTHORITY[\"EP"); - add_srs_wkt (p, 4, - "SG\",\"6265\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4265\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",15],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",252"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"3004\"]]"); - p = add_epsg_def (filter, first, last, 3005, "epsg", 3005, - "NAD83 / BC Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x"); - add_proj4text (p, 1, - "_0=1000000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BC Albers\",GEOGCS[\"NAD83\",DATUM[\"No"); - add_srs_wkt (p, 1, - "rth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,"); - add_srs_wkt (p, 2, - "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4269\"]],PROJECTION[\"Albers_Conic_Equal_Are"); - add_srs_wkt (p, 7, - "a\"],PARAMETER[\"standard_parallel_1\",50],PARAMETER[\"s"); - add_srs_wkt (p, 8, - "tandard_parallel_2\",58.5],PARAMETER[\"latitude_of_cente"); - add_srs_wkt (p, 9, - "r\",45],PARAMETER[\"longitude_of_center\",-126],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",1000000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"3005\"]]"); - p = add_epsg_def (filter, first, last, 3006, "epsg", 3006, - "SWEREF99 TM"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 TM\",GEOGCS[\"SWEREF99\",DATUM[\"SWERE"); - add_srs_wkt (p, 1, - "F99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\"]]"); - add_srs_wkt (p, 6, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 7, - "e_of_origin\",0],PARAMETER[\"central_meridian\",15],PARA"); - add_srs_wkt (p, 8, - "METER[\"scale_factor\",0.9996],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3006\"]]"); - p = add_epsg_def (filter, first, last, 3007, "epsg", 3007, - "SWEREF99 12 00"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=150000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 12 00\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); - add_srs_wkt (p, 1, - "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",12],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 10, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3007\"]]"); - p = add_epsg_def (filter, first, last, 3008, "epsg", 3008, - "SWEREF99 13 30"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=150000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 13 30\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); - add_srs_wkt (p, 1, - "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",13.5],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3008\"]]"); - p = add_epsg_def (filter, first, last, 3009, "epsg", 3009, - "SWEREF99 15 00"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=150000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 15 00\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); - add_srs_wkt (p, 1, - "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",15],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 10, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3009\"]]"); - p = add_epsg_def (filter, first, last, 3010, "epsg", 3010, - "SWEREF99 16 30"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=150000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 16 30\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); - add_srs_wkt (p, 1, - "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",16.5],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3010\"]]"); - p = add_epsg_def (filter, first, last, 3011, "epsg", 3011, - "SWEREF99 18 00"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=150000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 18 00\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); - add_srs_wkt (p, 1, - "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",18],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 10, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3011\"]]"); - p = add_epsg_def (filter, first, last, 3012, "epsg", 3012, - "SWEREF99 14 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=14.25 +k=1 +x_0=150000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 14 15\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); - add_srs_wkt (p, 1, - "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",14.25]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3012\"]]"); - p = add_epsg_def (filter, first, last, 3013, "epsg", 3013, - "SWEREF99 15 45"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15.75 +k=1 +x_0=150000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 15 45\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); - add_srs_wkt (p, 1, - "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",15.75]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3013\"]]"); - p = add_epsg_def (filter, first, last, 3014, "epsg", 3014, - "SWEREF99 17 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=17.25 +k=1 +x_0=150000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 17 15\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); - add_srs_wkt (p, 1, - "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",17.25]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3014\"]]"); - p = add_epsg_def (filter, first, last, 3015, "epsg", 3015, - "SWEREF99 18 45"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18.75 +k=1 +x_0=150000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 18 45\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); - add_srs_wkt (p, 1, - "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",18.75]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3015\"]]"); - p = add_epsg_def (filter, first, last, 3016, "epsg", 3016, - "SWEREF99 20 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=20.25 +k=1 +x_0=150000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 20 15\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); - add_srs_wkt (p, 1, - "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",20.25]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3016\"]]"); - p = add_epsg_def (filter, first, last, 3017, "epsg", 3017, - "SWEREF99 21 45"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21.75 +k=1 +x_0=150000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 21 45\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); - add_srs_wkt (p, 1, - "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",21.75]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3017\"]]"); - p = add_epsg_def (filter, first, last, 3018, "epsg", 3018, - "SWEREF99 23 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=23.25 +k=1 +x_0=150000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 23 15\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); - add_srs_wkt (p, 1, - "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",23.25]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 10, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3018\"]]"); - p = add_epsg_def (filter, first, last, 3019, "epsg", 3019, - "RT90 7.5 gon V"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0="); - add_proj4text (p, 1, - "1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-"); - add_proj4text (p, 2, - "0.855,2.141,-7.023,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RT90 7.5 gon V\",GEOGCS[\"RT90\",DATUM[\"Rikets"); - add_srs_wkt (p, 1, - "_koordinatsystem_1990\",SPHEROID[\"Bessel 1841\",6377397"); - add_srs_wkt (p, 2, - ".155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[4"); - add_srs_wkt (p, 3, - "14.1,41.3,603.1,-0.855,2.141,-7.023,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6124\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4124\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",11.30827777777778"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",1500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3019\"]]"); - p = add_epsg_def (filter, first, last, 3020, "epsg", 3020, - "RT90 5 gon V"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0="); - add_proj4text (p, 1, - "1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-"); - add_proj4text (p, 2, - "0.855,2.141,-7.023,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RT90 5 gon V\",GEOGCS[\"RT90\",DATUM[\"Rikets_k"); - add_srs_wkt (p, 1, - "oordinatsystem_1990\",SPHEROID[\"Bessel 1841\",6377397.1"); - add_srs_wkt (p, 2, - "55,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[414"); - add_srs_wkt (p, 3, - ".1,41.3,603.1,-0.855,2.141,-7.023,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6124\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4124\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",0],PARAMETER[\"central_meridian\",13.55827777777778]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 10, - "\",1500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3020\"]]"); - p = add_epsg_def (filter, first, last, 3021, "epsg", 3021, - "RT90 2.5 gon V"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0="); - add_proj4text (p, 1, - "1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-"); - add_proj4text (p, 2, - "0.855,2.141,-7.023,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RT90 2.5 gon V\",GEOGCS[\"RT90\",DATUM[\"Rikets"); - add_srs_wkt (p, 1, - "_koordinatsystem_1990\",SPHEROID[\"Bessel 1841\",6377397"); - add_srs_wkt (p, 2, - ".155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[4"); - add_srs_wkt (p, 3, - "14.1,41.3,603.1,-0.855,2.141,-7.023,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6124\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4124\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",15.80827777777778"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",1500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3021\"]]"); - p = add_epsg_def (filter, first, last, 3022, "epsg", 3022, - "RT90 0 gon"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0="); - add_proj4text (p, 1, - "1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-"); - add_proj4text (p, 2, - "0.855,2.141,-7.023,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RT90 0 gon\",GEOGCS[\"RT90\",DATUM[\"Rikets_koo"); - add_srs_wkt (p, 1, - "rdinatsystem_1990\",SPHEROID[\"Bessel 1841\",6377397.155"); - add_srs_wkt (p, 2, - ",299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[414.1"); - add_srs_wkt (p, 3, - ",41.3,603.1,-0.855,2.141,-7.023,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6124\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4124\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",18.05827777777778],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "1500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"3022\"]]"); - p = add_epsg_def (filter, first, last, 3023, "epsg", 3023, - "RT90 2.5 gon O"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0="); - add_proj4text (p, 1, - "1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-"); - add_proj4text (p, 2, - "0.855,2.141,-7.023,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RT90 2.5 gon O\",GEOGCS[\"RT90\",DATUM[\"Rikets"); - add_srs_wkt (p, 1, - "_koordinatsystem_1990\",SPHEROID[\"Bessel 1841\",6377397"); - add_srs_wkt (p, 2, - ".155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[4"); - add_srs_wkt (p, 3, - "14.1,41.3,603.1,-0.855,2.141,-7.023,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6124\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4124\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",20.30827777777778"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",1500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3023\"]]"); - p = add_epsg_def (filter, first, last, 3024, "epsg", 3024, - "RT90 5 gon O"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0="); - add_proj4text (p, 1, - "1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-"); - add_proj4text (p, 2, - "0.855,2.141,-7.023,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RT90 5 gon O\",GEOGCS[\"RT90\",DATUM[\"Rikets_k"); - add_srs_wkt (p, 1, - "oordinatsystem_1990\",SPHEROID[\"Bessel 1841\",6377397.1"); - add_srs_wkt (p, 2, - "55,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[414"); - add_srs_wkt (p, 3, - ".1,41.3,603.1,-0.855,2.141,-7.023,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6124\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4124\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",0],PARAMETER[\"central_meridian\",22.55827777777778]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 10, - "\",1500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3024\"]]"); - p = add_epsg_def (filter, first, last, 3025, "epsg", 3025, - "RT38 7.5 gon V"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0="); - add_proj4text (p, 1, - "1500000 +y_0=0 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RT38 7.5 gon V\",GEOGCS[\"RT38\",DATUM[\"Stockh"); - add_srs_wkt (p, 1, - "olm_1938\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528"); - add_srs_wkt (p, 2, - "128,AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "308\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4308\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "0],PARAMETER[\"central_meridian\",11.30827777777778],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",1"); - add_srs_wkt (p, 9, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 10, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"3025\"]]"); - p = add_epsg_def (filter, first, last, 3026, "epsg", 3026, - "RT38 5 gon V"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0="); - add_proj4text (p, 1, - "1500000 +y_0=0 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RT38 5 gon V\",GEOGCS[\"RT38\",DATUM[\"Stockhol"); - add_srs_wkt (p, 1, - "m_1938\",SPHEROID[\"Bessel 1841\",6377397.155,299.152812"); - add_srs_wkt (p, 2, - "8,AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"630"); - add_srs_wkt (p, 3, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4308\"]],PROJECTION[\"T"); - add_srs_wkt (p, 6, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 7, - "],PARAMETER[\"central_meridian\",13.55827777777778],PARA"); - add_srs_wkt (p, 8, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",15"); - add_srs_wkt (p, 9, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 10, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 11, - "\",EAST],AUTHORITY[\"EPSG\",\"3026\"]]"); - p = add_epsg_def (filter, first, last, 3027, "epsg", 3027, - "RT38 2.5 gon V"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0="); - add_proj4text (p, 1, - "1500000 +y_0=0 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RT38 2.5 gon V\",GEOGCS[\"RT38\",DATUM[\"Stockh"); - add_srs_wkt (p, 1, - "olm_1938\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528"); - add_srs_wkt (p, 2, - "128,AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "308\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4308\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "0],PARAMETER[\"central_meridian\",15.80827777777778],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",1"); - add_srs_wkt (p, 9, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 10, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"3027\"]]"); - p = add_epsg_def (filter, first, last, 3028, "epsg", 3028, - "RT38 0 gon"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0="); - add_proj4text (p, 1, - "1500000 +y_0=0 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RT38 0 gon\",GEOGCS[\"RT38\",DATUM[\"Stockholm_"); - add_srs_wkt (p, 1, - "1938\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6308\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4308\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",18.05827777777778],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",15000"); - add_srs_wkt (p, 9, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 11, - "EAST],AUTHORITY[\"EPSG\",\"3028\"]]"); - p = add_epsg_def (filter, first, last, 3029, "epsg", 3029, - "RT38 2.5 gon O"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0="); - add_proj4text (p, 1, - "1500000 +y_0=0 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RT38 2.5 gon O\",GEOGCS[\"RT38\",DATUM[\"Stockh"); - add_srs_wkt (p, 1, - "olm_1938\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528"); - add_srs_wkt (p, 2, - "128,AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "308\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4308\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "0],PARAMETER[\"central_meridian\",20.30827777777778],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",1"); - add_srs_wkt (p, 9, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 10, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"3029\"]]"); - p = add_epsg_def (filter, first, last, 3030, "epsg", 3030, - "RT38 5 gon O"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0="); - add_proj4text (p, 1, - "1500000 +y_0=0 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RT38 5 gon O\",GEOGCS[\"RT38\",DATUM[\"Stockhol"); - add_srs_wkt (p, 1, - "m_1938\",SPHEROID[\"Bessel 1841\",6377397.155,299.152812"); - add_srs_wkt (p, 2, - "8,AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"630"); - add_srs_wkt (p, 3, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4308\"]],PROJECTION[\"T"); - add_srs_wkt (p, 6, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 7, - "],PARAMETER[\"central_meridian\",22.55827777777778],PARA"); - add_srs_wkt (p, 8, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",15"); - add_srs_wkt (p, 9, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 10, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 11, - "\",EAST],AUTHORITY[\"EPSG\",\"3030\"]]"); - p = add_epsg_def (filter, first, last, 3031, "epsg", 3031, - "WGS 84 / Antarctic Polar Stereographic"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 "); - add_proj4text (p, 1, - "+y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / Antarctic Polar Stereographic\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",63781"); - add_srs_wkt (p, 2, - "37,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]"); - add_srs_wkt (p, 6, - ",PROJECTION[\"Polar_Stereographic\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 7, - "e_of_origin\",-71],PARAMETER[\"central_meridian\",0],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 11, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"3031\"]]"); - p = add_epsg_def (filter, first, last, 3032, "epsg", 3032, - "WGS 84 / Australian Antarctic Polar Stereographic"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=70 +k=1 +x_0=6"); - add_proj4text (p, 1, - "000000 +y_0=6000000 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / Australian Antarctic Polar Stereograph"); - add_srs_wkt (p, 1, - "ic\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS"); - add_srs_wkt (p, 2, - " 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4326\"]],PROJECTION[\"Polar_Stereographic\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",-71],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 8, - "an\",70],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",6000000],PARAMETER[\"false_northing\",6000000"); - add_srs_wkt (p, 10, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"3032\"]]"); - p = add_epsg_def (filter, first, last, 3033, "epsg", 3033, - "WGS 84 / Australian Antarctic Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.5 +lat_2=-74.5 +lat_0=-50 +lon_0=70"); - add_proj4text (p, 1, - " +x_0=6000000 +y_0=6000000 +datum=WGS84 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / Australian Antarctic Lambert\",GEOGCS["); - add_srs_wkt (p, 1, - "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); - add_srs_wkt (p, 6, - "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "standard_parallel_1\",-68.5],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-74.5],PARAMETER[\"latitude_of_origin\",-50],PARA"); - add_srs_wkt (p, 9, - "METER[\"central_meridian\",70],PARAMETER[\"false_easting"); - add_srs_wkt (p, 10, - "\",6000000],PARAMETER[\"false_northing\",6000000],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"303"); - add_srs_wkt (p, 13, - "3\"]]"); - p = add_epsg_def (filter, first, last, 3034, "epsg", 3034, - "ETRS89 / LCC Europe"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4"); - add_proj4text (p, 1, - "000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / LCC Europe\",GEOGCS[\"ETRS89\",DATUM[\""); - add_srs_wkt (p, 1, - "European_Terrestrial_Reference_System_1989\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 7, - "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); - add_srs_wkt (p, 8, - "_1\",35],PARAMETER[\"standard_parallel_2\",65],PARAMETER"); - add_srs_wkt (p, 9, - "[\"latitude_of_origin\",52],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 10, - "\",10],PARAMETER[\"false_easting\",4000000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",2800000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting"); - add_srs_wkt (p, 13, - "\",EAST],AUTHORITY[\"EPSG\",\"3034\"]]"); - p = add_epsg_def (filter, first, last, 3035, "epsg", 3035, - "ETRS89 / LAEA Europe"); - add_proj4text (p, 0, - "+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / LAEA Europe\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"L"); - add_srs_wkt (p, 7, - "ambert_Azimuthal_Equal_Area\"],PARAMETER[\"latitude_of_c"); - add_srs_wkt (p, 8, - "enter\",52],PARAMETER[\"longitude_of_center\",10],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_easting\",4321000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 10, - "g\",3210000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"Y\",NORTH],AXIS[\"X\",EAST],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"3035\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_10.c b/src/spatialite/src/srsinit/epsg_inlined_10.c deleted file mode 100644 index 6a15682..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_10.c +++ /dev/null @@ -1,3482 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_10 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 3036, "epsg", 3036, - "Moznet / UTM zone 36S"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +south +ellps=WGS84 +towgs84=0,0,0,-0"); - add_proj4text (p, 1, - ",-0,-0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Moznet / UTM zone 36S\",GEOGCS[\"Moznet\",DATUM"); - add_srs_wkt (p, 1, - "[\"Moznet_ITRF94\",SPHEROID[\"WGS 84\",6378137,298.25722"); - add_srs_wkt (p, 2, - "3563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,-0,-0,-"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6130\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4130\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",500000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 10, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 11, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"3036\"]]"); - p = add_epsg_def (filter, first, last, 3037, "epsg", 3037, - "Moznet / UTM zone 37S"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +south +ellps=WGS84 +towgs84=0,0,0,-0"); - add_proj4text (p, 1, - ",-0,-0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Moznet / UTM zone 37S\",GEOGCS[\"Moznet\",DATUM"); - add_srs_wkt (p, 1, - "[\"Moznet_ITRF94\",SPHEROID[\"WGS 84\",6378137,298.25722"); - add_srs_wkt (p, 2, - "3563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,-0,-0,-"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6130\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4130\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",500000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 10, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 11, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"3037\"]]"); - p = add_epsg_def (filter, first, last, 3038, "epsg", 3038, - "ETRS89 / TM26"); - add_proj4text (p, 0, - "+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM26\",GEOGCS[\"ETRS89\",DATUM[\"Europ"); - add_srs_wkt (p, 1, - "ean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",-27],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3038\"]]"); - p = add_epsg_def (filter, first, last, 3039, "epsg", 3039, - "ETRS89 / TM27"); - add_proj4text (p, 0, - "+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM27\",GEOGCS[\"ETRS89\",DATUM[\"Europ"); - add_srs_wkt (p, 1, - "ean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",-21],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3039\"]]"); - p = add_epsg_def (filter, first, last, 3040, "epsg", 3040, - "ETRS89 / TM28"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM28\",GEOGCS[\"ETRS89\",DATUM[\"Europ"); - add_srs_wkt (p, 1, - "ean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",-15],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3040\"]]"); - p = add_epsg_def (filter, first, last, 3041, "epsg", 3041, - "ETRS89 / TM29"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM29\",GEOGCS[\"ETRS89\",DATUM[\"Europ"); - add_srs_wkt (p, 1, - "ean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",-9],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3041\"]]"); - p = add_epsg_def (filter, first, last, 3042, "epsg", 3042, - "ETRS89 / TM30"); - add_proj4text (p, 0, - "+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM30\",GEOGCS[\"ETRS89\",DATUM[\"Europ"); - add_srs_wkt (p, 1, - "ean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",-3],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3042\"]]"); - p = add_epsg_def (filter, first, last, 3043, "epsg", 3043, - "ETRS89 / TM31"); - add_proj4text (p, 0, - "+proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM31\",GEOGCS[\"ETRS89\",DATUM[\"Europ"); - add_srs_wkt (p, 1, - "ean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",3],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3043\"]]"); - p = add_epsg_def (filter, first, last, 3044, "epsg", 3044, - "ETRS89 / TM32"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM32\",GEOGCS[\"ETRS89\",DATUM[\"Europ"); - add_srs_wkt (p, 1, - "ean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",9],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3044\"]]"); - p = add_epsg_def (filter, first, last, 3045, "epsg", 3045, - "ETRS89 / TM33"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM33\",GEOGCS[\"ETRS89\",DATUM[\"Europ"); - add_srs_wkt (p, 1, - "ean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",15],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3045\"]]"); - p = add_epsg_def (filter, first, last, 3046, "epsg", 3046, - "ETRS89 / TM34"); - add_proj4text (p, 0, - "+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM34\",GEOGCS[\"ETRS89\",DATUM[\"Europ"); - add_srs_wkt (p, 1, - "ean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",21],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3046\"]]"); - p = add_epsg_def (filter, first, last, 3047, "epsg", 3047, - "ETRS89 / TM35"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM35\",GEOGCS[\"ETRS89\",DATUM[\"Europ"); - add_srs_wkt (p, 1, - "ean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",27],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3047\"]]"); - p = add_epsg_def (filter, first, last, 3048, "epsg", 3048, - "ETRS89 / TM36"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM36\",GEOGCS[\"ETRS89\",DATUM[\"Europ"); - add_srs_wkt (p, 1, - "ean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",33],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3048\"]]"); - p = add_epsg_def (filter, first, last, 3049, "epsg", 3049, - "ETRS89 / TM37"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM37\",GEOGCS[\"ETRS89\",DATUM[\"Europ"); - add_srs_wkt (p, 1, - "ean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",39],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3049\"]]"); - p = add_epsg_def (filter, first, last, 3050, "epsg", 3050, - "ETRS89 / TM38"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM38\",GEOGCS[\"ETRS89\",DATUM[\"Europ"); - add_srs_wkt (p, 1, - "ean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",45],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3050\"]]"); - p = add_epsg_def (filter, first, last, 3051, "epsg", 3051, - "ETRS89 / TM39"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM39\",GEOGCS[\"ETRS89\",DATUM[\"Europ"); - add_srs_wkt (p, 1, - "ean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",51],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3051\"]]"); - p = add_epsg_def (filter, first, last, 3054, "epsg", 3054, - "Hjorsey 1955 / UTM zone 26N"); - add_proj4text (p, 0, - "+proj=utm +zone=26 +ellps=intl +towgs84=-73,46,-86,0,0,0"); - add_proj4text (p, 1, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Hjorsey 1955 / UTM zone 26N\",GEOGCS[\"Hjorsey "); - add_srs_wkt (p, 1, - "1955\",DATUM[\"Hjorsey_1955\",SPHEROID[\"International 1"); - add_srs_wkt (p, 2, - "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-73,46,-86,0,0,0,0],AUTHORITY[\"EPSG\",\"6658\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4658\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-27],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"3054\"]]"); - p = add_epsg_def (filter, first, last, 3055, "epsg", 3055, - "Hjorsey 1955 / UTM zone 27N"); - add_proj4text (p, 0, - "+proj=utm +zone=27 +ellps=intl +towgs84=-73,46,-86,0,0,0"); - add_proj4text (p, 1, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Hjorsey 1955 / UTM zone 27N\",GEOGCS[\"Hjorsey "); - add_srs_wkt (p, 1, - "1955\",DATUM[\"Hjorsey_1955\",SPHEROID[\"International 1"); - add_srs_wkt (p, 2, - "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-73,46,-86,0,0,0,0],AUTHORITY[\"EPSG\",\"6658\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4658\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-21],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"3055\"]]"); - p = add_epsg_def (filter, first, last, 3056, "epsg", 3056, - "Hjorsey 1955 / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=intl +towgs84=-73,46,-86,0,0,0"); - add_proj4text (p, 1, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Hjorsey 1955 / UTM zone 28N\",GEOGCS[\"Hjorsey "); - add_srs_wkt (p, 1, - "1955\",DATUM[\"Hjorsey_1955\",SPHEROID[\"International 1"); - add_srs_wkt (p, 2, - "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-73,46,-86,0,0,0,0],AUTHORITY[\"EPSG\",\"6658\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4658\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-15],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"3056\"]]"); - p = add_epsg_def (filter, first, last, 3057, "epsg", 3057, - "ISN93 / Lambert 1993"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19"); - add_proj4text (p, 1, - " +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ISN93 / Lambert 1993\",GEOGCS[\"ISN93\",DATUM[\""); - add_srs_wkt (p, 1, - "Islands_Net_1993\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 2, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 3, - ",0],AUTHORITY[\"EPSG\",\"6659\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 5, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"4659\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"standard_parallel_1\",64.25],PARAMETER[\"s"); - add_srs_wkt (p, 8, - "tandard_parallel_2\",65.75],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 9, - "in\",65],PARAMETER[\"central_meridian\",-19],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",500"); - add_srs_wkt (p, 11, - "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); - add_srs_wkt (p, 12, - "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3057"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 3058, "epsg", 3058, - "Helle 1954 / Jan Mayen Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-8.5 +k=1 +x_0=50000 +y_0=-7"); - add_proj4text (p, 1, - "800000 +ellps=intl +towgs84=982.609,552.753,-540.873,6.6"); - add_proj4text (p, 2, - "8163,-31.6115,-19.8482,16.805 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Helle 1954 / Jan Mayen Grid\",GEOGCS[\"Helle 19"); - add_srs_wkt (p, 1, - "54\",DATUM[\"Helle_1954\",SPHEROID[\"International 1924\""); - add_srs_wkt (p, 2, - ",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[982.6"); - add_srs_wkt (p, 3, - "09,552.753,-540.873,6.68163,-31.6115,-19.8482,16.805],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6660\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "660\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "8.5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",50000],PARAMETER[\"false_northing\",-7800000],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"x\",N"); - add_srs_wkt (p, 12, - "ORTH],AXIS[\"y\",EAST],AUTHORITY[\"EPSG\",\"3058\"]]"); - p = add_epsg_def (filter, first, last, 3059, "epsg", 3059, - "LKS92 / Latvia TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"LKS92 / Latvia TM\",GEOGCS[\"LKS92\",DATUM[\"La"); - add_srs_wkt (p, 1, - "tvia_1992\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"6661\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 5, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); - add_srs_wkt (p, 6, - "61\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 7, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",24"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",500000],PARAMETER[\"false_northing\",-6000000],"); - add_srs_wkt (p, 10, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 11, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3059\"]]"); - p = add_epsg_def (filter, first, last, 3060, "epsg", 3060, - "IGN72 Grande Terre / UTM zone 58S"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=intl +towgs84=-11.64,-3"); - add_proj4text (p, 1, - "48.6,291.98,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGN72 Grande Terre / UTM zone 58S\",GEOGCS[\"IG"); - add_srs_wkt (p, 1, - "N72 Grande Terre\",DATUM[\"IGN72_Grande_Terre\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7022\"]],TOWGS84[-11.64,-348.6,291.98,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6634\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4662\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",165],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",10000000],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "060\"]]"); - p = add_epsg_def (filter, first, last, 3061, "epsg", 3061, - "Porto Santo 1995 / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=intl +towgs84=-502.862,-247.43"); - add_proj4text (p, 1, - "8,312.724,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Porto Santo 1995 / UTM zone 28N\",GEOGCS[\"Port"); - add_srs_wkt (p, 1, - "o Santo 1995\",DATUM[\"Porto_Santo_1995\",SPHEROID[\"Int"); - add_srs_wkt (p, 2, - "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-502.862,-247.438,312.724,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6663\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4663\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",-15],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",0.9996],PARAMETER[\"false_easting"); - add_srs_wkt (p, 10, - "\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3061\"]]"); - p = add_epsg_def (filter, first, last, 3062, "epsg", 3062, - "Azores Oriental 1995 / UTM zone 26N"); - add_proj4text (p, 0, - "+proj=utm +zone=26 +ellps=intl +towgs84=-204.619,140.176"); - add_proj4text (p, 1, - ",55.226,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Azores Oriental 1995 / UTM zone 26N\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Azores Oriental 1995\",DATUM[\"Azores_Oriental_Islands_1"); - add_srs_wkt (p, 2, - "995\",SPHEROID[\"International 1924\",6378388,297,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7022\"]],TOWGS84[-204.619,140.176,55.226,"); - add_srs_wkt (p, 4, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6664\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4664\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); - add_srs_wkt (p, 9, - "ridian\",-27],PARAMETER[\"scale_factor\",0.9996],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",500000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"3062\"]]"); - p = add_epsg_def (filter, first, last, 3063, "epsg", 3063, - "Azores Central 1995 / UTM zone 26N"); - add_proj4text (p, 0, - "+proj=utm +zone=26 +ellps=intl +towgs84=-106.226,166.366"); - add_proj4text (p, 1, - ",-37.893,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Azores Central 1995 / UTM zone 26N\",GEOGCS[\"A"); - add_srs_wkt (p, 1, - "zores Central 1995\",DATUM[\"Azores_Central_Islands_1995"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7022\"]],TOWGS84[-106.226,166.366,-37.893,0,"); - add_srs_wkt (p, 4, - "0,0,0],AUTHORITY[\"EPSG\",\"6665\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4665\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",-27],PARAMETER[\"scale_factor\",0.9996],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_easting\",500000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 11, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"3063\"]]"); - p = add_epsg_def (filter, first, last, 3064, "epsg", 3064, - "IGM95 / UTM zone 32N"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGM95 / UTM zone 32N\",GEOGCS[\"IGM95\",DATUM[\""); - add_srs_wkt (p, 1, - "Istituto_Geografico_Militaire_1995\",SPHEROID[\"WGS 84\""); - add_srs_wkt (p, 2, - ",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6670\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4670\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",9],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"3064\"]]"); - p = add_epsg_def (filter, first, last, 3065, "epsg", 3065, - "IGM95 / UTM zone 33N"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGM95 / UTM zone 33N\",GEOGCS[\"IGM95\",DATUM[\""); - add_srs_wkt (p, 1, - "Istituto_Geografico_Militaire_1995\",SPHEROID[\"WGS 84\""); - add_srs_wkt (p, 2, - ",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6670\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4670\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",15],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 9, - "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"3065\"]]"); - p = add_epsg_def (filter, first, last, 3066, "epsg", 3066, - "ED50 / Jordan TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=37 +k=0.9998 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=-3000000 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +un"); - add_proj4text (p, 2, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / Jordan TM\",GEOGCS[\"ED50\",DATUM[\"Euro"); - add_srs_wkt (p, 1, - "pean_Datum_1950\",SPHEROID[\"International 1924\",637838"); - add_srs_wkt (p, 2, - "8,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121"); - add_srs_wkt (p, 3, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 4, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 5, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 8, - "meridian\",37],PARAMETER[\"scale_factor\",0.9998],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_easting\",500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 10, - "\",-3000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"3066\"]]"); - p = add_epsg_def (filter, first, last, 3067, "epsg", 3067, - "ETRS89 / TM35FIN(E,N)"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM35FIN(E,N)\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",27],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"3067\"]]"); - p = add_epsg_def (filter, first, last, 3068, "epsg", 3068, - "DHDN / Soldner Berlin"); - add_proj4text (p, 0, - "+proj=cass +lat_0=52.41864827777778 +lon_0=13.6272036666"); - add_proj4text (p, 1, - "6667 +x_0=40000 +y_0=10000 +datum=potsdam +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"DHDN / Soldner Berlin\",GEOGCS[\"DHDN\",DATUM[\""); - add_srs_wkt (p, 1, - "Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\",6"); - add_srs_wkt (p, 2, - "377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[598.1,73.7,418.2,0.202,0.045,-2.455,6.7],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Cassini_Soldner\"],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 8, - "origin\",52.41864827777778],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",13.62720366666667],PARAMETER[\"false_easting\",40000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",10000],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"x\",NORTH],AXIS[\"y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"3068\"]]"); - p = add_epsg_def (filter, first, last, 3069, "epsg", 3069, - "NAD27 / Wisconsin Transverse Mercator"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=500000 +y"); - add_proj4text (p, 1, - "_0=-4500000 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Wisconsin Transverse Mercator\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",-90],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",-4500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"3069\"]]"); - p = add_epsg_def (filter, first, last, 3070, "epsg", 3070, - "NAD83 / Wisconsin Transverse Mercator"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y"); - add_proj4text (p, 1, - "_0=-4480000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Wisconsin Transverse Mercator\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-90],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",520000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",-4480000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"3070\"]]"); - p = add_epsg_def (filter, first, last, 3071, "epsg", 3071, - "NAD83(HARN) / Wisconsin Transverse Mercator"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y"); - add_proj4text (p, 1, - "_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Wisconsin Transverse Mercator\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refere"); - add_srs_wkt (p, 2, - "nce_Network\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4152\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "90],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",520000],PARAMETER[\"false_northing\",-4480000"); - add_srs_wkt (p, 11, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3071\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 3072, "epsg", 3072, - "NAD83 / Maine CS2000 East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0"); - add_proj4text (p, 1, - ".99998 +x_0=700000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Maine CS2000 East\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",43.83333333333"); - add_srs_wkt (p, 8, - "334],PARAMETER[\"central_meridian\",-67.875],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.99998],PARAMETER[\"false_easting\",7000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"3072\"]]"); - p = add_epsg_def (filter, first, last, 3073, "epsg", 3073, - "NAD83 / Maine CS2000 Central (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500"); - add_proj4text (p, 1, - "000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Maine CS2000 Central (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",43],PARAMETER[\"central_meridian\",-69.125],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.99998],PARAMETER[\"false_easting\",5000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"3073\"]]"); - p = add_epsg_def (filter, first, last, 3074, "epsg", 3074, - "NAD83 / Maine CS2000 West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0"); - add_proj4text (p, 1, - ".99998 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Maine CS2000 West\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",42.83333333333"); - add_srs_wkt (p, 8, - "334],PARAMETER[\"central_meridian\",-70.375],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.99998],PARAMETER[\"false_easting\",3000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"3074\"]]"); - p = add_epsg_def (filter, first, last, 3075, "epsg", 3075, - "NAD83(HARN) / Maine CS2000 East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0"); - add_proj4text (p, 1, - ".99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Maine CS2000 East\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",43.83333333333334],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-67.875],PARAMETER[\"scale_factor\",0.99998],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",700000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 11, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3075\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 3076, "epsg", 3076, - "NAD83(HARN) / Maine CS2000 Central (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500"); - add_proj4text (p, 1, - "000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Maine CS2000 Central (deprecated)"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Re"); - add_srs_wkt (p, 2, - "ference_Network\",SPHEROID[\"GRS 1980\",6378137,298.2572"); - add_srs_wkt (p, 3, - "22101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0],AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4152\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",43],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 9, - "n\",-69.125],PARAMETER[\"scale_factor\",0.99998],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",500000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3076\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 3077, "epsg", 3077, - "NAD83(HARN) / Maine CS2000 West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0"); - add_proj4text (p, 1, - ".99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Maine CS2000 West\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",42.83333333333334],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-70.375],PARAMETER[\"scale_factor\",0.99998],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",300000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 11, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3077\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 3078, "epsg", 3078, - "NAD83 / Michigan Oblique Mercator"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=33"); - add_proj4text (p, 1, - "7.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ga"); - add_proj4text (p, 2, - "mma=337.25556 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Michigan Oblique Mercator\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Hotine_"); - add_srs_wkt (p, 7, - "Oblique_Mercator\"],PARAMETER[\"latitude_of_center\",45."); - add_srs_wkt (p, 8, - "30916666666666],PARAMETER[\"longitude_of_center\",-86],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"azimuth\",337.25556],PARAMETER[\"rectified_gr"); - add_srs_wkt (p, 10, - "id_angle\",337.25556],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 11, - ",PARAMETER[\"false_easting\",2546731.496],PARAMETER[\"fa"); - add_srs_wkt (p, 12, - "lse_northing\",-4354009.816],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 14, - "UTHORITY[\"EPSG\",\"3078\"]]"); - p = add_epsg_def (filter, first, last, 3079, "epsg", 3079, - "NAD83(HARN) / Michigan Oblique Mercator"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=33"); - add_proj4text (p, 1, - "7.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ga"); - add_proj4text (p, 2, - "mma=337.25556 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); - add_proj4text (p, 3, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Michigan Oblique Mercator\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_"); - add_srs_wkt (p, 2, - "Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_center\",45.30916666666666],PARAMETER[\"long"); - add_srs_wkt (p, 9, - "itude_of_center\",-86],PARAMETER[\"azimuth\",337.25556],"); - add_srs_wkt (p, 10, - "PARAMETER[\"rectified_grid_angle\",337.25556],PARAMETER["); - add_srs_wkt (p, 11, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",254"); - add_srs_wkt (p, 12, - "6731.496],PARAMETER[\"false_northing\",-4354009.816],UNI"); - add_srs_wkt (p, 13, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 14, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3079\"]]"); - p = add_epsg_def (filter, first, last, 3080, "epsg", 3080, - "NAD27 / Shackleford"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666"); - add_proj4text (p, 1, - "666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=914400 +y_"); - add_proj4text (p, 2, - "0=914400 +datum=NAD27 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Shackleford\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 7, - "AMETER[\"standard_parallel_1\",27.41666666666667],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_2\",34.91666666666666],PARAMETER"); - add_srs_wkt (p, 9, - "[\"latitude_of_origin\",31.16666666666667],PARAMETER[\"c"); - add_srs_wkt (p, 10, - "entral_meridian\",-100],PARAMETER[\"false_easting\",3000"); - add_srs_wkt (p, 11, - "000],PARAMETER[\"false_northing\",3000000],UNIT[\"foot\""); - add_srs_wkt (p, 12, - ",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 13, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3080\"]]"); - p = add_epsg_def (filter, first, last, 3081, "epsg", 3081, - "NAD83 / Texas State Mapping System"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666"); - add_proj4text (p, 1, - "666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=1000000 +y"); - add_proj4text (p, 2, - "_0=1000000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Texas State Mapping System\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambe"); - add_srs_wkt (p, 7, - "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); - add_srs_wkt (p, 8, - "1\",27.41666666666667],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",34.91666666666666],PARAMETER[\"latitude_of_origin\",31."); - add_srs_wkt (p, 10, - "16666666666667],PARAMETER[\"central_meridian\",-100],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_easting\",1000000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 12, - "hing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 13, - "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 14, - "SG\",\"3081\"]]"); - p = add_epsg_def (filter, first, last, 3082, "epsg", 3082, - "NAD83 / Texas Centric Lambert Conformal"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x"); - add_proj4text (p, 1, - "_0=1500000 +y_0=5000000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Texas Centric Lambert Conformal\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"626"); - add_srs_wkt (p, 4, - "9\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"L"); - add_srs_wkt (p, 7, - "ambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_paral"); - add_srs_wkt (p, 8, - "lel_1\",27.5],PARAMETER[\"standard_parallel_2\",35],PARA"); - add_srs_wkt (p, 9, - "METER[\"latitude_of_origin\",18],PARAMETER[\"central_mer"); - add_srs_wkt (p, 10, - "idian\",-100],PARAMETER[\"false_easting\",1500000],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_northing\",5000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 13, - "H],AUTHORITY[\"EPSG\",\"3082\"]]"); - p = add_epsg_def (filter, first, last, 3083, "epsg", 3083, - "NAD83 / Texas Centric Albers Equal Area"); - add_proj4text (p, 0, - "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x"); - add_proj4text (p, 1, - "_0=1500000 +y_0=6000000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Texas Centric Albers Equal Area\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"626"); - add_srs_wkt (p, 4, - "9\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"A"); - add_srs_wkt (p, 7, - "lbers_Conic_Equal_Area\"],PARAMETER[\"standard_parallel_"); - add_srs_wkt (p, 8, - "1\",27.5],PARAMETER[\"standard_parallel_2\",35],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"latitude_of_center\",18],PARAMETER[\"longitude_of_ce"); - add_srs_wkt (p, 10, - "nter\",-100],PARAMETER[\"false_easting\",1500000],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_northing\",6000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 13, - "],AUTHORITY[\"EPSG\",\"3083\"]]"); - p = add_epsg_def (filter, first, last, 3084, "epsg", 3084, - "NAD83(HARN) / Texas Centric Lambert Conformal"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x"); - add_proj4text (p, 1, - "_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Texas Centric Lambert Conformal\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refe"); - add_srs_wkt (p, 2, - "rence_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_1\",27.5],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",35],PARAMETER[\"latitude_of_origin\",18"); - add_srs_wkt (p, 10, - "],PARAMETER[\"central_meridian\",-100],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_easting\",1500000],PARAMETER[\"false_northing\",5000000"); - add_srs_wkt (p, 12, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3084\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 3085, "epsg", 3085, - "NAD83(HARN) / Texas Centric Albers Equal Area"); - add_proj4text (p, 0, - "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x"); - add_proj4text (p, 1, - "_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Texas Centric Albers Equal Area\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refe"); - add_srs_wkt (p, 2, - "rence_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4152\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_1\",27.5],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",35],PARAMETER[\"latitude_of_center\",18],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"longitude_of_center\",-100],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "easting\",1500000],PARAMETER[\"false_northing\",6000000]"); - add_srs_wkt (p, 12, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); - add_srs_wkt (p, 13, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3085\"]]"); - p = add_epsg_def (filter, first, last, 3086, "epsg", 3086, - "NAD83 / Florida GDL Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_"); - add_proj4text (p, 1, - "0=400000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Florida GDL Albers\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Albers_Conic_"); - add_srs_wkt (p, 7, - "Equal_Area\"],PARAMETER[\"standard_parallel_1\",24],PARA"); - add_srs_wkt (p, 8, - "METER[\"standard_parallel_2\",31.5],PARAMETER[\"latitude"); - add_srs_wkt (p, 9, - "_of_center\",24],PARAMETER[\"longitude_of_center\",-84],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",400000],PARAMETER[\"false_no"); - add_srs_wkt (p, 11, - "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"3086\"]]"); - p = add_epsg_def (filter, first, last, 3087, "epsg", 3087, - "NAD83(HARN) / Florida GDL Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_"); - add_proj4text (p, 1, - "0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +uni"); - add_proj4text (p, 2, - "ts=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Florida GDL Albers\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Albers_Conic_Equal_Area\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",24],PARAMETER[\"standard_parallel_2\",31"); - add_srs_wkt (p, 9, - ".5],PARAMETER[\"latitude_of_center\",24],PARAMETER[\"lon"); - add_srs_wkt (p, 10, - "gitude_of_center\",-84],PARAMETER[\"false_easting\",4000"); - add_srs_wkt (p, 11, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 13, - "ORTH],AUTHORITY[\"EPSG\",\"3087\"]]"); - p = add_epsg_def (filter, first, last, 3088, "epsg", 3088, - "NAD83 / Kentucky Single Zone"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 "); - add_proj4text (p, 2, - "+y_0=1000000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Kentucky Single Zone\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37"); - add_srs_wkt (p, 8, - ".08333333333334],PARAMETER[\"standard_parallel_2\",38.66"); - add_srs_wkt (p, 9, - "666666666666],PARAMETER[\"latitude_of_origin\",36.333333"); - add_srs_wkt (p, 10, - "33333334],PARAMETER[\"central_meridian\",-85.75],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_easting\",1500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 12, - "\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"3088\"]]"); - p = add_epsg_def (filter, first, last, 3089, "epsg", 3089, - "NAD83 / Kentucky Single Zone (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 "); - add_proj4text (p, 2, - "+y_0=999999.9998983998 +datum=NAD83 +units=us-ft +no_def"); - add_proj4text (p, 3, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Kentucky Single Zone (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 7, - "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); - add_srs_wkt (p, 8, - "_1\",37.08333333333334],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",38.66666666666666],PARAMETER[\"latitude_of_origin\",36."); - add_srs_wkt (p, 10, - "33333333333334],PARAMETER[\"central_meridian\",-85.75],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_easting\",4921250],PARAMETER[\"false_no"); - add_srs_wkt (p, 12, - "rthing\",3280833.333],UNIT[\"US survey foot\",0.30480060"); - add_srs_wkt (p, 13, - "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); - add_srs_wkt (p, 14, - "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3089\"]]"); - p = add_epsg_def (filter, first, last, 3090, "epsg", 3090, - "NAD83(HARN) / Kentucky Single Zone"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 "); - add_proj4text (p, 2, - "+y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 3, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Kentucky Single Zone\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",37.08333333333334],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",38.66666666666666],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",36.33333333333334],PARAMETER[\"central_me"); - add_srs_wkt (p, 11, - "ridian\",-85.75],PARAMETER[\"false_easting\",1500000],PA"); - add_srs_wkt (p, 12, - "RAMETER[\"false_northing\",1000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 14, - "ORTH],AUTHORITY[\"EPSG\",\"3090\"]]"); - p = add_epsg_def (filter, first, last, 3091, "epsg", 3091, - "NAD83(HARN) / Kentucky Single Zone (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 "); - add_proj4text (p, 2, - "+y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 3, - ",0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Kentucky Single Zone (ftUS)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Referenc"); - add_srs_wkt (p, 2, - "e_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); - add_srs_wkt (p, 7, - "52\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_1\",37.08333333333334],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"standard_parallel_2\",38.66666666666666],PARAMETER[\""); - add_srs_wkt (p, 10, - "latitude_of_origin\",36.33333333333334],PARAMETER[\"cent"); - add_srs_wkt (p, 11, - "ral_meridian\",-85.75],PARAMETER[\"false_easting\",49212"); - add_srs_wkt (p, 12, - "50],PARAMETER[\"false_northing\",3280833.333],UNIT[\"US "); - add_srs_wkt (p, 13, - "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 14, - "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 15, - "SG\",\"3091\"]]"); - p = add_epsg_def (filter, first, last, 3092, "epsg", 3092, - "Tokyo / UTM zone 51N"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +ellps=bessel +towgs84=-146.414,507.3"); - add_proj4text (p, 1, - "37,680.507,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / UTM zone 51N\",GEOGCS[\"Tokyo\",DATUM[\""); - add_srs_wkt (p, 1, - "Tokyo\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-146.414,507.337,"); - add_srs_wkt (p, 3, - "680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"6301\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4301\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",123],PARAMETER[\"scale_factor\",0.9996"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"3092\"]]"); - p = add_epsg_def (filter, first, last, 3093, "epsg", 3093, - "Tokyo / UTM zone 52N"); - add_proj4text (p, 0, - "+proj=utm +zone=52 +ellps=bessel +towgs84=-146.414,507.3"); - add_proj4text (p, 1, - "37,680.507,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / UTM zone 52N\",GEOGCS[\"Tokyo\",DATUM[\""); - add_srs_wkt (p, 1, - "Tokyo\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-146.414,507.337,"); - add_srs_wkt (p, 3, - "680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"6301\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4301\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",129],PARAMETER[\"scale_factor\",0.9996"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"3093\"]]"); - p = add_epsg_def (filter, first, last, 3094, "epsg", 3094, - "Tokyo / UTM zone 53N"); - add_proj4text (p, 0, - "+proj=utm +zone=53 +ellps=bessel +towgs84=-146.414,507.3"); - add_proj4text (p, 1, - "37,680.507,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / UTM zone 53N\",GEOGCS[\"Tokyo\",DATUM[\""); - add_srs_wkt (p, 1, - "Tokyo\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-146.414,507.337,"); - add_srs_wkt (p, 3, - "680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"6301\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4301\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",135],PARAMETER[\"scale_factor\",0.9996"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"3094\"]]"); - p = add_epsg_def (filter, first, last, 3095, "epsg", 3095, - "Tokyo / UTM zone 54N"); - add_proj4text (p, 0, - "+proj=utm +zone=54 +ellps=bessel +towgs84=-146.414,507.3"); - add_proj4text (p, 1, - "37,680.507,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / UTM zone 54N\",GEOGCS[\"Tokyo\",DATUM[\""); - add_srs_wkt (p, 1, - "Tokyo\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-146.414,507.337,"); - add_srs_wkt (p, 3, - "680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"6301\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4301\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",141],PARAMETER[\"scale_factor\",0.9996"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"3095\"]]"); - p = add_epsg_def (filter, first, last, 3096, "epsg", 3096, - "Tokyo / UTM zone 55N"); - add_proj4text (p, 0, - "+proj=utm +zone=55 +ellps=bessel +towgs84=-146.414,507.3"); - add_proj4text (p, 1, - "37,680.507,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / UTM zone 55N\",GEOGCS[\"Tokyo\",DATUM[\""); - add_srs_wkt (p, 1, - "Tokyo\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-146.414,507.337,"); - add_srs_wkt (p, 3, - "680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"6301\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4301\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",147],PARAMETER[\"scale_factor\",0.9996"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"3096\"]]"); - p = add_epsg_def (filter, first, last, 3097, "epsg", 3097, - "JGD2000 / UTM zone 51N"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / UTM zone 51N\",GEOGCS[\"JGD2000\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Japanese_Geodetic_Datum_2000\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6612\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4612\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",123],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"3097\"]]"); - p = add_epsg_def (filter, first, last, 3098, "epsg", 3098, - "JGD2000 / UTM zone 52N"); - add_proj4text (p, 0, - "+proj=utm +zone=52 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / UTM zone 52N\",GEOGCS[\"JGD2000\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Japanese_Geodetic_Datum_2000\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6612\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4612\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",129],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"3098\"]]"); - p = add_epsg_def (filter, first, last, 3099, "epsg", 3099, - "JGD2000 / UTM zone 53N"); - add_proj4text (p, 0, - "+proj=utm +zone=53 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / UTM zone 53N\",GEOGCS[\"JGD2000\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Japanese_Geodetic_Datum_2000\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6612\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4612\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",135],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"3099\"]]"); - p = add_epsg_def (filter, first, last, 3100, "epsg", 3100, - "JGD2000 / UTM zone 54N"); - add_proj4text (p, 0, - "+proj=utm +zone=54 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / UTM zone 54N\",GEOGCS[\"JGD2000\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Japanese_Geodetic_Datum_2000\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6612\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4612\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",141],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"3100\"]]"); - p = add_epsg_def (filter, first, last, 3101, "epsg", 3101, - "JGD2000 / UTM zone 55N"); - add_proj4text (p, 0, - "+proj=utm +zone=55 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JGD2000 / UTM zone 55N\",GEOGCS[\"JGD2000\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Japanese_Geodetic_Datum_2000\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6612\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4612\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",147],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"3101\"]]"); - p = add_epsg_def (filter, first, last, 3102, "epsg", 3102, - "American Samoa 1962 / American Samoa Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.266666666"); - add_proj4text (p, 1, - "66667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=951"); - add_proj4text (p, 2, - "69.31165862332 +ellps=clrk66 +towgs84=-115,118,426,0,0,0"); - add_proj4text (p, 3, - ",0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"American Samoa 1962 / American Samoa Lambert\","); - add_srs_wkt (p, 1, - "GEOGCS[\"American Samoa 1962\",DATUM[\"American_Samoa_19"); - add_srs_wkt (p, 2, - "62\",SPHEROID[\"Clarke 1866\",6378206.4,294.978698213898"); - add_srs_wkt (p, 3, - "2,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[-115,118,426,0,0"); - add_srs_wkt (p, 4, - ",0,0],AUTHORITY[\"EPSG\",\"6169\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4169\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",-14.26666666666667]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"central_meridian\",-170],PARAMETER[\"scale_"); - add_srs_wkt (p, 10, - "factor\",1],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",312234.65],UNIT[\"US survey foot\","); - add_srs_wkt (p, 12, - "0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3102\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 3103, "epsg", 3103, - "Mauritania 1999 / UTM zone 28N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mauritania 1999 / UTM zone 28N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Mauritania 1999\",DATUM[\"Mauritania_1999\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG\",\"6681\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4681\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 7, - "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); - add_srs_wkt (p, 8, - "[\"central_meridian\",-15],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 9, - "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"3103\"]]"); - p = add_epsg_def (filter, first, last, 3104, "epsg", 3104, - "Mauritania 1999 / UTM zone 29N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mauritania 1999 / UTM zone 29N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Mauritania 1999\",DATUM[\"Mauritania_1999\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG\",\"6681\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4681\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 7, - "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); - add_srs_wkt (p, 8, - "[\"central_meridian\",-9],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"3104\"]]"); - p = add_epsg_def (filter, first, last, 3105, "epsg", 3105, - "Mauritania 1999 / UTM zone 30N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mauritania 1999 / UTM zone 30N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Mauritania 1999\",DATUM[\"Mauritania_1999\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG\",\"6681\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4681\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 7, - "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); - add_srs_wkt (p, 8, - "[\"central_meridian\",-3],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"3105\"]]"); - p = add_epsg_def (filter, first, last, 3106, "epsg", 3106, - "Gulshan 303 / Bangladesh Transverse Mercator"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90 +k=0.9996 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=0 +a=6377276.345 +b=6356075.413140239 +towgs84=283.7,7"); - add_proj4text (p, 2, - "35.9,261.1,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Gulshan 303 / Bangladesh Transverse Mercator\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Gulshan 303\",DATUM[\"Gulshan_303\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Everest 1830 (1937 Adjustment)\",6377276.345,300.8017,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7015\"]],TOWGS84[283.7,735.9,261.1,0,"); - add_srs_wkt (p, 4, - "0,0,0],AUTHORITY[\"EPSG\",\"6682\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4682\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",90],PARAMETER[\"scale_factor\",0.9996],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",500000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 11, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"3106\"]]"); - p = add_epsg_def (filter, first, last, 3107, "epsg", 3107, - "GDA94 / SA Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-28 +lat_2=-36 +lat_0=-32 +lon_0=135 +x"); - add_proj4text (p, 1, - "_0=1000000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / SA Lambert\",GEOGCS[\"GDA94\",DATUM[\"G"); - add_srs_wkt (p, 1, - "eocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",-28]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",-36],PARAMETER[\"lati"); - add_srs_wkt (p, 9, - "tude_of_origin\",-32],PARAMETER[\"central_meridian\",135"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_easting\",1000000],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_northing\",2000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 13, - "TH],AUTHORITY[\"EPSG\",\"3107\"]]"); - p = add_epsg_def (filter, first, last, 3108, "epsg", 3108, - "ETRS89 / Guernsey Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=49.5 +lon_0=-2.416666666666667 +k=0.9"); - add_proj4text (p, 1, - "99997 +x_0=47000 +y_0=50000 +ellps=GRS80 +towgs84=0,0,0,"); - add_proj4text (p, 2, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / Guernsey Grid\",GEOGCS[\"ETRS89\",DATU"); - add_srs_wkt (p, 1, - "M[\"European_Terrestrial_Reference_System_1989\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "49.5],PARAMETER[\"central_meridian\",-2.416666666666667]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.999997],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",47000],PARAMETER[\"false_northing\",50000],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3108\"]]"); - p = add_epsg_def (filter, first, last, 3109, "epsg", 3109, - "ETRS89 / Jersey Transverse Mercator"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=49.225 +lon_0=-2.135 +k=0.99999990000"); - add_proj4text (p, 1, - "00001 +x_0=40000 +y_0=70000 +ellps=GRS80 +towgs84=0,0,0,"); - add_proj4text (p, 2, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / Jersey Transverse Mercator\",GEOGCS[\""); - add_srs_wkt (p, 1, - "ETRS89\",DATUM[\"European_Terrestrial_Reference_System_1"); - add_srs_wkt (p, 2, - "989\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",49.225],PARAMETER[\"central_meridian\",-2."); - add_srs_wkt (p, 9, - "135],PARAMETER[\"scale_factor\",0.9999999],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",40000],PARAMETER[\"false_northing\",70000"); - add_srs_wkt (p, 11, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"3109\"]]"); - p = add_epsg_def (filter, first, last, 3110, "epsg", 3110, - "AGD66 / Vicgrid66"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x"); - add_proj4text (p, 1, - "_0=2500000 +y_0=4500000 +ellps=aust_SA +towgs84=-117.808"); - add_proj4text (p, 2, - ",-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_de"); - add_proj4text (p, 3, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD66 / Vicgrid66\",GEOGCS[\"AGD66\",DATUM[\"Au"); - add_srs_wkt (p, 1, - "stralian_Geodetic_Datum_1966\",SPHEROID[\"Australian Nat"); - add_srs_wkt (p, 2, - "ional Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "3\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.234"); - add_srs_wkt (p, 4, - ",-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 5, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 6, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4202\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",-36],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",-38],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 10, - "n\",-37],PARAMETER[\"central_meridian\",145],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_easting\",2500000],PARAMETER[\"false_northing\",45"); - add_srs_wkt (p, 12, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 13, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 14, - "\"EPSG\",\"3110\"]]"); - p = add_epsg_def (filter, first, last, 3111, "epsg", 3111, - "GDA94 / Vicgrid94"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x"); - add_proj4text (p, 1, - "_0=2500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / Vicgrid94\",GEOGCS[\"GDA94\",DATUM[\"Ge"); - add_srs_wkt (p, 1, - "ocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",-36]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",-38],PARAMETER[\"lati"); - add_srs_wkt (p, 9, - "tude_of_origin\",-37],PARAMETER[\"central_meridian\",145"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_easting\",2500000],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_northing\",2500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 13, - "TH],AUTHORITY[\"EPSG\",\"3111\"]]"); - p = add_epsg_def (filter, first, last, 3112, "epsg", 3112, - "GDA94 / Geoscience Australia Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0"); - add_proj4text (p, 1, - "=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); - add_proj4text (p, 2, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / Geoscience Australia Lambert\",GEOGCS[\""); - add_srs_wkt (p, 1, - "GDA94\",DATUM[\"Geocentric_Datum_of_Australia_1994\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6283\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_1\",-18],PARAMETER[\"standard_parallel_2\",-36"); - add_srs_wkt (p, 9, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 10, - "l_meridian\",134],PARAMETER[\"false_easting\",0],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 13, - ",NORTH],AUTHORITY[\"EPSG\",\"3112\"]]"); - p = add_epsg_def (filter, first, last, 3113, "epsg", 3113, - "GDA94 / BCSG02"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-28 +lon_0=153 +k=0.99999 +x_0=50000 "); - add_proj4text (p, 1, - "+y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / BCSG02\",GEOGCS[\"GDA94\",DATUM[\"Geoce"); - add_srs_wkt (p, 1, - "ntric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980\",63"); - add_srs_wkt (p, 2, - "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",-28],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",153],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "99],PARAMETER[\"false_easting\",50000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",100000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"3113\"]]"); - p = add_epsg_def (filter, first, last, 3114, "epsg", 3114, - "MAGNA-SIRGAS / Colombia Far West zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-80.07750791"); - add_proj4text (p, 1, - "666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towg"); - add_proj4text (p, 2, - "s84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MAGNA-SIRGAS / Colombia Far West zone\",GEOGCS["); - add_srs_wkt (p, 1, - "\"MAGNA-SIRGAS\",DATUM[\"Marco_Geocentrico_Nacional_de_R"); - add_srs_wkt (p, 2, - "eferencia\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6686\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); - add_srs_wkt (p, 7, - "86\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",4.596200416666666],PARAMETER[\"centr"); - add_srs_wkt (p, 9, - "al_meridian\",-80.07750791666666],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 10, - "or\",1],PARAMETER[\"false_easting\",1000000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting"); - add_srs_wkt (p, 13, - "\",EAST],AUTHORITY[\"EPSG\",\"3114\"]]"); - p = add_epsg_def (filter, first, last, 3115, "epsg", 3115, - "MAGNA-SIRGAS / Colombia West zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-77.07750791"); - add_proj4text (p, 1, - "666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towg"); - add_proj4text (p, 2, - "s84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MAGNA-SIRGAS / Colombia West zone\",GEOGCS[\"MA"); - add_srs_wkt (p, 1, - "GNA-SIRGAS\",DATUM[\"Marco_Geocentrico_Nacional_de_Refer"); - add_srs_wkt (p, 2, - "encia\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6686\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4686\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",4.596200416666666],PARAMETER[\"central_m"); - add_srs_wkt (p, 9, - "eridian\",-77.07750791666666],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 10, - ",1],PARAMETER[\"false_easting\",1000000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 13, - "EAST],AUTHORITY[\"EPSG\",\"3115\"]]"); - p = add_epsg_def (filter, first, last, 3116, "epsg", 3116, - "MAGNA-SIRGAS / Colombia Bogota zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791"); - add_proj4text (p, 1, - "666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towg"); - add_proj4text (p, 2, - "s84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MAGNA-SIRGAS / Colombia Bogota zone\",GEOGCS[\""); - add_srs_wkt (p, 1, - "MAGNA-SIRGAS\",DATUM[\"Marco_Geocentrico_Nacional_de_Ref"); - add_srs_wkt (p, 2, - "erencia\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6686\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4686"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",4.596200416666666],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",-74.07750791666666],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 10, - "\",1],PARAMETER[\"false_easting\",1000000],PARAMETER[\"f"); - add_srs_wkt (p, 11, - "alse_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\""); - add_srs_wkt (p, 13, - ",EAST],AUTHORITY[\"EPSG\",\"3116\"]]"); - p = add_epsg_def (filter, first, last, 3117, "epsg", 3117, - "MAGNA-SIRGAS / Colombia East Central zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-71.07750791"); - add_proj4text (p, 1, - "666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towg"); - add_proj4text (p, 2, - "s84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MAGNA-SIRGAS / Colombia East Central zone\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"MAGNA-SIRGAS\",DATUM[\"Marco_Geocentrico_Nacional_"); - add_srs_wkt (p, 2, - "de_Referencia\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6686\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4686\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",4.596200416666666],PARAMETER[\"c"); - add_srs_wkt (p, 9, - "entral_meridian\",-71.07750791666666],PARAMETER[\"scale_"); - add_srs_wkt (p, 10, - "factor\",1],PARAMETER[\"false_easting\",1000000],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Ea"); - add_srs_wkt (p, 13, - "sting\",EAST],AUTHORITY[\"EPSG\",\"3117\"]]"); - p = add_epsg_def (filter, first, last, 3118, "epsg", 3118, - "MAGNA-SIRGAS / Colombia East zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-68.07750791"); - add_proj4text (p, 1, - "666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towg"); - add_proj4text (p, 2, - "s84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MAGNA-SIRGAS / Colombia East zone\",GEOGCS[\"MA"); - add_srs_wkt (p, 1, - "GNA-SIRGAS\",DATUM[\"Marco_Geocentrico_Nacional_de_Refer"); - add_srs_wkt (p, 2, - "encia\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6686\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4686\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",4.596200416666666],PARAMETER[\"central_m"); - add_srs_wkt (p, 9, - "eridian\",-68.07750791666666],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 10, - ",1],PARAMETER[\"false_easting\",1000000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 13, - "EAST],AUTHORITY[\"EPSG\",\"3118\"]]"); - p = add_epsg_def (filter, first, last, 3119, "epsg", 3119, - "Douala 1948 / AEF west"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +"); - add_proj4text (p, 1, - "y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Douala 1948 / AEF west\",GEOGCS[\"Douala 1948\""); - add_srs_wkt (p, 1, - ",DATUM[\"Douala_1948\",SPHEROID[\"International 1924\",6"); - add_srs_wkt (p, 2, - "378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-206.1,"); - add_srs_wkt (p, 3, - "-174.7,-87.7,0,0,0,0],AUTHORITY[\"EPSG\",\"6192\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4192\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",10.5],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "0.999],PARAMETER[\"false_easting\",1000000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"3119\"]]"); - p = add_epsg_def (filter, first, last, 3120, "epsg", 3120, - "Pulkovo 1942(58) / Poland zone I"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0"); - add_proj4text (p, 1, - ".9998 +x_0=4637000 +y_0=5467000 +ellps=krass +towgs84=33"); - add_proj4text (p, 2, - ".4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / Poland zone I\",GEOGCS[\"Pul"); - add_srs_wkt (p, 1, - "kovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID[\"Kra"); - add_srs_wkt (p, 2, - "ssowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); - add_srs_wkt (p, 3, - "]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4179\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",50.625],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",21.08333333333333],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 10, - "998],PARAMETER[\"false_easting\",4637000],PARAMETER[\"fa"); - add_srs_wkt (p, 11, - "lse_northing\",5467000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHOR"); - add_srs_wkt (p, 13, - "ITY[\"EPSG\",\"3120\"]]"); - p = add_epsg_def (filter, first, last, 3121, "epsg", 3121, - "PRS92 / Philippines zone 1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +"); - add_proj4text (p, 1, - "y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.06"); - add_proj4text (p, 2, - "8,4.903,1.578,-1.06 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PRS92 / Philippines zone 1\",GEOGCS[\"PRS92\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Philippine_Reference_System_1992\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],TOWGS84[-127.62,-67.24,-47.04,-3.068,4.903,1"); - add_srs_wkt (p, 4, - ".578,-1.06],AUTHORITY[\"EPSG\",\"6683\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 5, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 6, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4683\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",117],PARAMETER[\"scale_factor\",0.99995],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3121\"]]"); - p = add_epsg_def (filter, first, last, 3122, "epsg", 3122, - "PRS92 / Philippines zone 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +"); - add_proj4text (p, 1, - "y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.06"); - add_proj4text (p, 2, - "8,4.903,1.578,-1.06 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PRS92 / Philippines zone 2\",GEOGCS[\"PRS92\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Philippine_Reference_System_1992\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],TOWGS84[-127.62,-67.24,-47.04,-3.068,4.903,1"); - add_srs_wkt (p, 4, - ".578,-1.06],AUTHORITY[\"EPSG\",\"6683\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 5, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 6, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4683\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",119],PARAMETER[\"scale_factor\",0.99995],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3122\"]]"); - p = add_epsg_def (filter, first, last, 3123, "epsg", 3123, - "PRS92 / Philippines zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +"); - add_proj4text (p, 1, - "y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.06"); - add_proj4text (p, 2, - "8,4.903,1.578,-1.06 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PRS92 / Philippines zone 3\",GEOGCS[\"PRS92\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Philippine_Reference_System_1992\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],TOWGS84[-127.62,-67.24,-47.04,-3.068,4.903,1"); - add_srs_wkt (p, 4, - ".578,-1.06],AUTHORITY[\"EPSG\",\"6683\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 5, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 6, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4683\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",121],PARAMETER[\"scale_factor\",0.99995],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3123\"]]"); - p = add_epsg_def (filter, first, last, 3124, "epsg", 3124, - "PRS92 / Philippines zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +"); - add_proj4text (p, 1, - "y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.06"); - add_proj4text (p, 2, - "8,4.903,1.578,-1.06 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PRS92 / Philippines zone 4\",GEOGCS[\"PRS92\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Philippine_Reference_System_1992\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],TOWGS84[-127.62,-67.24,-47.04,-3.068,4.903,1"); - add_srs_wkt (p, 4, - ".578,-1.06],AUTHORITY[\"EPSG\",\"6683\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 5, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 6, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4683\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",123],PARAMETER[\"scale_factor\",0.99995],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3124\"]]"); - p = add_epsg_def (filter, first, last, 3125, "epsg", 3125, - "PRS92 / Philippines zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +"); - add_proj4text (p, 1, - "y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.06"); - add_proj4text (p, 2, - "8,4.903,1.578,-1.06 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PRS92 / Philippines zone 5\",GEOGCS[\"PRS92\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Philippine_Reference_System_1992\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],TOWGS84[-127.62,-67.24,-47.04,-3.068,4.903,1"); - add_srs_wkt (p, 4, - ".578,-1.06],AUTHORITY[\"EPSG\",\"6683\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 5, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 6, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4683\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",125],PARAMETER[\"scale_factor\",0.99995],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3125\"]]"); - p = add_epsg_def (filter, first, last, 3126, "epsg", 3126, - "ETRS89 / ETRS-GK19FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / ETRS-GK19FIN\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",19],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"3126\"]]"); - p = add_epsg_def (filter, first, last, 3127, "epsg", 3127, - "ETRS89 / ETRS-GK20FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / ETRS-GK20FIN\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",20],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"3127\"]]"); - p = add_epsg_def (filter, first, last, 3128, "epsg", 3128, - "ETRS89 / ETRS-GK21FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / ETRS-GK21FIN\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",21],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"3128\"]]"); - p = add_epsg_def (filter, first, last, 3129, "epsg", 3129, - "ETRS89 / ETRS-GK22FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / ETRS-GK22FIN\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",22],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"3129\"]]"); - p = add_epsg_def (filter, first, last, 3130, "epsg", 3130, - "ETRS89 / ETRS-GK23FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / ETRS-GK23FIN\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",23],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"3130\"]]"); - p = add_epsg_def (filter, first, last, 3131, "epsg", 3131, - "ETRS89 / ETRS-GK24FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / ETRS-GK24FIN\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",24],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"3131\"]]"); - p = add_epsg_def (filter, first, last, 3132, "epsg", 3132, - "ETRS89 / ETRS-GK25FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / ETRS-GK25FIN\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",25],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"3132\"]]"); - p = add_epsg_def (filter, first, last, 3133, "epsg", 3133, - "ETRS89 / ETRS-GK26FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / ETRS-GK26FIN\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",26],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"3133\"]]"); - p = add_epsg_def (filter, first, last, 3134, "epsg", 3134, - "ETRS89 / ETRS-GK27FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / ETRS-GK27FIN\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",27],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"3134\"]]"); - p = add_epsg_def (filter, first, last, 3135, "epsg", 3135, - "ETRS89 / ETRS-GK28FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / ETRS-GK28FIN\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",28],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"3135\"]]"); - p = add_epsg_def (filter, first, last, 3136, "epsg", 3136, - "ETRS89 / ETRS-GK29FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / ETRS-GK29FIN\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",29],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"3136\"]]"); - p = add_epsg_def (filter, first, last, 3137, "epsg", 3137, - "ETRS89 / ETRS-GK30FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / ETRS-GK30FIN\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",30],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"3137\"]]"); - p = add_epsg_def (filter, first, last, 3138, "epsg", 3138, - "ETRS89 / ETRS-GK31FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / ETRS-GK31FIN\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",31],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"3138\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_11.c b/src/spatialite/src/srsinit/epsg_inlined_11.c deleted file mode 100644 index 2498f16..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_11.c +++ /dev/null @@ -1,3554 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_11 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 3140, "epsg", 3140, - "Viti Levu 1912 / Viti Levu Grid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=-18 +lon_0=178 +x_0=109435.392 +y_0=14"); - add_proj4text (p, 1, - "1622.272 +a=6378306.3696 +b=6356571.996 +towgs84=51,391,"); - add_proj4text (p, 2, - "-36,0,0,0,0 +to_meter=0.201168 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Viti Levu 1912 / Viti Levu Grid\",GEOGCS[\"Viti"); - add_srs_wkt (p, 1, - " Levu 1912\",DATUM[\"Viti_Levu_1912\",SPHEROID[\"Clarke "); - add_srs_wkt (p, 2, - "1880 (international foot)\",6378306.3696,293.46630765563"); - add_srs_wkt (p, 3, - "61,AUTHORITY[\"EPSG\",\"7055\"]],TOWGS84[51,391,-36,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6752\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4752\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",-18],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 9, - "n\",178],PARAMETER[\"false_easting\",544000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",704000],UNIT[\"link\",0.201168,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9098\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"3140\"]]"); - p = add_epsg_def (filter, first, last, 3141, "epsg", 3141, - "Fiji 1956 / UTM zone 60S"); - add_proj4text (p, 0, - "+proj=utm +zone=60 +south +ellps=intl +towgs84=265.025,3"); - add_proj4text (p, 1, - "84.929,-194.046,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Fiji 1956 / UTM zone 60S\",GEOGCS[\"Fiji 1956\""); - add_srs_wkt (p, 1, - ",DATUM[\"Fiji_1956\",SPHEROID[\"International 1924\",637"); - add_srs_wkt (p, 2, - "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[265.025,3"); - add_srs_wkt (p, 3, - "84.929,-194.046,0,0,0,0],AUTHORITY[\"EPSG\",\"6721\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4721\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",177],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"3141\"]]"); - p = add_epsg_def (filter, first, last, 3142, "epsg", 3142, - "Fiji 1956 / UTM zone 1S"); - add_proj4text (p, 0, - "+proj=utm +zone=1 +south +ellps=intl +towgs84=265.025,38"); - add_proj4text (p, 1, - "4.929,-194.046,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Fiji 1956 / UTM zone 1S\",GEOGCS[\"Fiji 1956\","); - add_srs_wkt (p, 1, - "DATUM[\"Fiji_1956\",SPHEROID[\"International 1924\",6378"); - add_srs_wkt (p, 2, - "388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[265.025,38"); - add_srs_wkt (p, 3, - "4.929,-194.046,0,0,0,0],AUTHORITY[\"EPSG\",\"6721\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4721\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-177],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"3142\"]]"); - p = add_epsg_def (filter, first, last, 3143, "epsg", 3143, - "Fiji 1986 / Fiji Map Grid (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=200"); - add_proj4text (p, 1, - "0000 +y_0=4000000 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); - add_proj4text (p, 2, - "4,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Fiji 1986 / Fiji Map Grid (deprecated)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Fiji 1986\",DATUM[\"Fiji_Geodetic_Datum_1986\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6720\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4720\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",-17],PARAMETER[\"central_meridian\",178.75],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",0.99985],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "2000000],PARAMETER[\"false_northing\",4000000],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3143\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 3146, "epsg", 3146, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 6\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "8],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",6500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3146\"]]"); - p = add_epsg_def (filter, first, last, 3147, "epsg", 3147, - "Pulkovo 1942 / 3-degree Gauss-Kruger CM 18E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 18E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "8],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3147\"]]"); - p = add_epsg_def (filter, first, last, 3148, "epsg", 3148, - "Indian 1960 / UTM zone 48N"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +a=6377276.345 +b=6356075.413140239 +"); - add_proj4text (p, 1, - "towgs84=198,881,317,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Indian 1960 / UTM zone 48N\",GEOGCS[\"Indian 19"); - add_srs_wkt (p, 1, - "60\",DATUM[\"Indian_1960\",SPHEROID[\"Everest 1830 (1937"); - add_srs_wkt (p, 2, - " Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7015\"]],TOWGS84[198,881,317,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6131\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4131\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",105],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3148\"]]"); - p = add_epsg_def (filter, first, last, 3149, "epsg", 3149, - "Indian 1960 / UTM zone 49N"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +a=6377276.345 +b=6356075.413140239 +"); - add_proj4text (p, 1, - "towgs84=198,881,317,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Indian 1960 / UTM zone 49N\",GEOGCS[\"Indian 19"); - add_srs_wkt (p, 1, - "60\",DATUM[\"Indian_1960\",SPHEROID[\"Everest 1830 (1937"); - add_srs_wkt (p, 2, - " Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7015\"]],TOWGS84[198,881,317,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6131\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4131\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",111],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3149\"]]"); - p = add_epsg_def (filter, first, last, 3150, "epsg", 3150, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 6\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",18"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",6500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3150\"]]"); - p = add_epsg_def (filter, first, last, 3151, "epsg", 3151, - "Pulkovo 1995 / 3-degree Gauss-Kruger CM 18E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 18E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",18"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3151\"]]"); - p = add_epsg_def (filter, first, last, 3152, "epsg", 3152, - "ST74"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18.05779 +k=0.99999425 +x_0="); - add_proj4text (p, 1, - "100178.1808 +y_0=-6500614.7836 +ellps=GRS80 +towgs84=0,0"); - add_proj4text (p, 2, - ",0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ST74\",GEOGCS[\"SWEREF99\",DATUM[\"SWEREF99\",S"); - add_srs_wkt (p, 1, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 2, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\"]],PROJEC"); - add_srs_wkt (p, 6, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 7, - "igin\",0],PARAMETER[\"central_meridian\",18.05779],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"scale_factor\",0.99999425],PARAMETER[\"false_east"); - add_srs_wkt (p, 9, - "ing\",100178.1808],PARAMETER[\"false_northing\",-6500614"); - add_srs_wkt (p, 10, - ".7836],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 11, - "IS[\"x\",NORTH],AXIS[\"y\",EAST],AUTHORITY[\"EPSG\",\"31"); - add_srs_wkt (p, 12, - "52\"]]"); - p = add_epsg_def (filter, first, last, 3153, "epsg", 3153, - "NAD83(CSRS) / BC Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x"); - add_proj4text (p, 1, - "_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / BC Albers\",GEOGCS[\"NAD83(CSRS)\""); - add_srs_wkt (p, 1, - ",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Albers_Conic_Equal_Area\"],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_1\",50],PARAMETER[\"standard_parallel_2\",58.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"latitude_of_center\",45],PARAMETER[\"longitude_of"); - add_srs_wkt (p, 10, - "_center\",-126],PARAMETER[\"false_easting\",1000000],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 13, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"3153\"]]"); - p = add_epsg_def (filter, first, last, 3154, "epsg", 3154, - "NAD83(CSRS) / UTM zone 7N"); - add_proj4text (p, 0, - "+proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 1, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 7N\",GEOGCS[\"NAD83(CSRS"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-141],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3154\"]]"); - p = add_epsg_def (filter, first, last, 3155, "epsg", 3155, - "NAD83(CSRS) / UTM zone 8N"); - add_proj4text (p, 0, - "+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 1, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 8N\",GEOGCS[\"NAD83(CSRS"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-135],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3155\"]]"); - p = add_epsg_def (filter, first, last, 3156, "epsg", 3156, - "NAD83(CSRS) / UTM zone 9N"); - add_proj4text (p, 0, - "+proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 1, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 9N\",GEOGCS[\"NAD83(CSRS"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-129],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3156\"]]"); - p = add_epsg_def (filter, first, last, 3157, "epsg", 3157, - "NAD83(CSRS) / UTM zone 10N"); - add_proj4text (p, 0, - "+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 10N\",GEOGCS[\"NAD83(CSR"); - add_srs_wkt (p, 1, - "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",-123],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3157\"]]"); - p = add_epsg_def (filter, first, last, 3158, "epsg", 3158, - "NAD83(CSRS) / UTM zone 14N"); - add_proj4text (p, 0, - "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 14N\",GEOGCS[\"NAD83(CSR"); - add_srs_wkt (p, 1, - "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",-99],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3158\"]]"); - p = add_epsg_def (filter, first, last, 3159, "epsg", 3159, - "NAD83(CSRS) / UTM zone 15N"); - add_proj4text (p, 0, - "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 15N\",GEOGCS[\"NAD83(CSR"); - add_srs_wkt (p, 1, - "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",-93],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3159\"]]"); - p = add_epsg_def (filter, first, last, 3160, "epsg", 3160, - "NAD83(CSRS) / UTM zone 16N"); - add_proj4text (p, 0, - "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 16N\",GEOGCS[\"NAD83(CSR"); - add_srs_wkt (p, 1, - "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",-87],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3160\"]]"); - p = add_epsg_def (filter, first, last, 3161, "epsg", 3161, - "NAD83 / Ontario MNR Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x"); - add_proj4text (p, 1, - "_0=930000 +y_0=6430000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Ontario MNR Lambert\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",44.5"); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_2\",53.5],PARAMETER[\"la"); - add_srs_wkt (p, 9, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",-85"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_easting\",930000],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "northing\",6430000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 13, - "H],AUTHORITY[\"EPSG\",\"3161\"]]"); - p = add_epsg_def (filter, first, last, 3162, "epsg", 3162, - "NAD83(CSRS) / Ontario MNR Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x"); - add_proj4text (p, 1, - "_0=930000 +y_0=6430000 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / Ontario MNR Lambert\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_Sys"); - add_srs_wkt (p, 2, - "tem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",44.5],PARAMETER[\"standard_paralle"); - add_srs_wkt (p, 9, - "l_2\",53.5],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"central_meridian\",-85],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 11, - "930000],PARAMETER[\"false_northing\",6430000],UNIT[\"met"); - add_srs_wkt (p, 12, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EA"); - add_srs_wkt (p, 13, - "ST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3162\""); - add_srs_wkt (p, 14, - "]]"); - p = add_epsg_def (filter, first, last, 3163, "epsg", 3163, - "RGNC91-93 / Lambert New Caledonia"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +e"); - add_proj4text (p, 2, - "llps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGNC91-93 / Lambert New Caledonia\",GEOGCS[\"RG"); - add_srs_wkt (p, 1, - "NC91-93\",DATUM[\"Reseau_Geodesique_de_Nouvelle_Caledoni"); - add_srs_wkt (p, 2, - "e_91_93\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6749\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4749"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_1\",-20.66666666666667],PARAMETER"); - add_srs_wkt (p, 9, - "[\"standard_parallel_2\",-22.33333333333333],PARAMETER[\""); - add_srs_wkt (p, 10, - "latitude_of_origin\",-21.5],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 11, - "\",166],PARAMETER[\"false_easting\",400000],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",300000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 14, - "RITY[\"EPSG\",\"3163\"]]"); - p = add_epsg_def (filter, first, last, 3164, "epsg", 3164, - "ST87 Ouvea / UTM zone 58S"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=WGS84 +towgs84=-56.263,"); - add_proj4text (p, 1, - "16.136,-22.856,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ST87 Ouvea / UTM zone 58S\",GEOGCS[\"ST87 Ouvea"); - add_srs_wkt (p, 1, - "\",DATUM[\"ST87_Ouvea\",SPHEROID[\"WGS 84\",6378137,298."); - add_srs_wkt (p, 2, - "257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[-56.263,"); - add_srs_wkt (p, 3, - "16.136,-22.856,0,0,0,0],AUTHORITY[\"EPSG\",\"6750\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4750\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",165],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"3164\"]]"); - p = add_epsg_def (filter, first, last, 3165, "epsg", 3165, - "NEA74 Noumea / Noumea Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-22.24469175 +lat_2=-22.29469175 +lat_0"); - add_proj4text (p, 1, - "=-22.26969175 +lon_0=166.44242575 +x_0=0.66 +y_0=1.02 +e"); - add_proj4text (p, 2, - "llps=intl +towgs84=-10.18,-350.43,291.37,0,0,0,0 +units="); - add_proj4text (p, 3, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NEA74 Noumea / Noumea Lambert\",GEOGCS[\"NEA74 "); - add_srs_wkt (p, 1, - "Noumea\",DATUM[\"NEA74_Noumea\",SPHEROID[\"International"); - add_srs_wkt (p, 2, - " 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[-10.18,-350.43,291.37,0,0,0,0],AUTHORITY[\"EPSG\",\"66"); - add_srs_wkt (p, 4, - "44\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4644\"]],PROJECTION[\"L"); - add_srs_wkt (p, 7, - "ambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_paral"); - add_srs_wkt (p, 8, - "lel_1\",-22.24469175],PARAMETER[\"standard_parallel_2\","); - add_srs_wkt (p, 9, - "-22.29469175],PARAMETER[\"latitude_of_origin\",-22.26969"); - add_srs_wkt (p, 10, - "175],PARAMETER[\"central_meridian\",166.44242575],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_easting\",0.66],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",1.02],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 13, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"31"); - add_srs_wkt (p, 14, - "65\"]]"); - p = add_epsg_def (filter, first, last, 3166, "epsg", 3166, - "NEA74 Noumea / Noumea Lambert 2"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-22.24472222222222 +lat_2=-22.294722222"); - add_proj4text (p, 1, - "22222 +lat_0=-22.26972222222222 +lon_0=166.4425 +x_0=8.3"); - add_proj4text (p, 2, - "13000000000001 +y_0=-2.354 +ellps=intl +towgs84=-10.18,-"); - add_proj4text (p, 3, - "350.43,291.37,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NEA74 Noumea / Noumea Lambert 2\",GEOGCS[\"NEA7"); - add_srs_wkt (p, 1, - "4 Noumea\",DATUM[\"NEA74_Noumea\",SPHEROID[\"Internation"); - add_srs_wkt (p, 2, - "al 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[-10.18,-350.43,291.37,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6644\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4644\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 8, - "rallel_1\",-22.24472222222222],PARAMETER[\"standard_para"); - add_srs_wkt (p, 9, - "llel_2\",-22.29472222222222],PARAMETER[\"latitude_of_ori"); - add_srs_wkt (p, 10, - "gin\",-22.26972222222222],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 11, - ",166.4425],PARAMETER[\"false_easting\",8.313],PARAMETER["); - add_srs_wkt (p, 12, - "\"false_northing\",-2.354],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 14, - "HORITY[\"EPSG\",\"3166\"]]"); - p = add_epsg_def (filter, first, last, 3167, "epsg", 3167, - "Kertau (RSO) / RSO Malaya (ch)"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k="); - add_proj4text (p, 1, - "0.99984 +x_0=40000 +y_0=0 +gamma=323.1301023611111 +a=63"); - add_proj4text (p, 2, - "77295.664 +b=6356094.667915204 +to_meter=20.116756 +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kertau (RSO) / RSO Malaya (ch)\",GEOGCS[\"Kerta"); - add_srs_wkt (p, 1, - "u (RSO)\",DATUM[\"Kertau_RSO\",SPHEROID[\"Everest 1830 ("); - add_srs_wkt (p, 2, - "RSO 1969)\",6377295.664,300.8017,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "56\"]],AUTHORITY[\"EPSG\",\"6751\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4751\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"latitude_of_center\",4],PARAMETER[\"longitud"); - add_srs_wkt (p, 8, - "e_of_center\",102.25],PARAMETER[\"azimuth\",323.0257905]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"rectified_grid_angle\",323.1301023611111],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"scale_factor\",0.99984],PARAMETER[\"false_eas"); - add_srs_wkt (p, 11, - "ting\",1988.392164223695],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 12, - "],UNIT[\"British chain (Sears 1922 truncated)\",20.11675"); - add_srs_wkt (p, 13, - "6,AUTHORITY[\"EPSG\",\"9301\"]],AXIS[\"Easting\",EAST],A"); - add_srs_wkt (p, 14, - "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3167\"]]"); - p = add_epsg_def (filter, first, last, 3168, "epsg", 3168, - "Kertau (RSO) / RSO Malaya (m)"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k="); - add_proj4text (p, 1, - "0.99984 +x_0=804670.24 +y_0=0 +gamma=323.1301023611111 +"); - add_proj4text (p, 2, - "a=6377295.664 +b=6356094.667915204 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kertau (RSO) / RSO Malaya (m)\",GEOGCS[\"Kertau"); - add_srs_wkt (p, 1, - " (RSO)\",DATUM[\"Kertau_RSO\",SPHEROID[\"Everest 1830 (R"); - add_srs_wkt (p, 2, - "SO 1969)\",6377295.664,300.8017,AUTHORITY[\"EPSG\",\"705"); - add_srs_wkt (p, 3, - "6\"]],AUTHORITY[\"EPSG\",\"6751\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4751\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"latitude_of_center\",4],PARAMETER[\"longitud"); - add_srs_wkt (p, 8, - "e_of_center\",102.25],PARAMETER[\"azimuth\",323.0257905]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"rectified_grid_angle\",323.1301023611111],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"scale_factor\",0.99984],PARAMETER[\"false_eas"); - add_srs_wkt (p, 11, - "ting\",804670.24],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 12, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"316"); - add_srs_wkt (p, 14, - "8\"]]"); - p = add_epsg_def (filter, first, last, 3169, "epsg", 3169, - "RGNC91-93 / UTM zone 57S"); - add_proj4text (p, 0, - "+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGNC91-93 / UTM zone 57S\",GEOGCS[\"RGNC91-93\""); - add_srs_wkt (p, 1, - ",DATUM[\"Reseau_Geodesique_de_Nouvelle_Caledonie_91_93\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6749\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4749\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",159],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",10000000],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3169\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 3170, "epsg", 3170, - "RGNC91-93 / UTM zone 58S"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGNC91-93 / UTM zone 58S\",GEOGCS[\"RGNC91-93\""); - add_srs_wkt (p, 1, - ",DATUM[\"Reseau_Geodesique_de_Nouvelle_Caledonie_91_93\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6749\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4749\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",165],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",10000000],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3170\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 3171, "epsg", 3171, - "RGNC91-93 / UTM zone 59S"); - add_proj4text (p, 0, - "+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGNC91-93 / UTM zone 59S\",GEOGCS[\"RGNC91-93\""); - add_srs_wkt (p, 1, - ",DATUM[\"Reseau_Geodesique_de_Nouvelle_Caledonie_91_93\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6749\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4749\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",171],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",10000000],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3171\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 3172, "epsg", 3172, - "IGN53 Mare / UTM zone 59S"); - add_proj4text (p, 0, - "+proj=utm +zone=59 +south +ellps=intl +towgs84=287.58,17"); - add_proj4text (p, 1, - "7.78,-135.41,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGN53 Mare / UTM zone 59S\",GEOGCS[\"IGN53 Mare"); - add_srs_wkt (p, 1, - "\",DATUM[\"IGN53_Mare\",SPHEROID[\"International 1924\","); - add_srs_wkt (p, 2, - "6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[287.58"); - add_srs_wkt (p, 3, - ",177.78,-135.41,0,0,0,0],AUTHORITY[\"EPSG\",\"6641\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4641\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",171],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"3172\"]]"); - p = add_epsg_def (filter, first, last, 3174, "epsg", 3174, - "NAD83 / Great Lakes Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568"); - add_proj4text (p, 1, - "977 +lon_0=-84.455955 +x_0=1000000 +y_0=1000000 +datum=N"); - add_proj4text (p, 2, - "AD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Great Lakes Albers\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Albers_Conic_"); - add_srs_wkt (p, 7, - "Equal_Area\"],PARAMETER[\"standard_parallel_1\",42.12277"); - add_srs_wkt (p, 8, - "4],PARAMETER[\"standard_parallel_2\",49.01518],PARAMETER"); - add_srs_wkt (p, 9, - "[\"latitude_of_center\",45.568977],PARAMETER[\"longitude"); - add_srs_wkt (p, 10, - "_of_center\",-84.455955],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 11, - "0000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre"); - add_srs_wkt (p, 12, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 13, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3174\"]]"); - p = add_epsg_def (filter, first, last, 3175, "epsg", 3175, - "NAD83 / Great Lakes and St Lawrence Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568"); - add_proj4text (p, 1, - "977 +lon_0=-83.248627 +x_0=1000000 +y_0=1000000 +datum=N"); - add_proj4text (p, 2, - "AD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Great Lakes and St Lawrence Albers\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Albers_Conic_Equal_Area\"],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_1\",42.122774],PARAMETER[\"standard_parallel_2\",49.0"); - add_srs_wkt (p, 9, - "1518],PARAMETER[\"latitude_of_center\",45.568977],PARAME"); - add_srs_wkt (p, 10, - "TER[\"longitude_of_center\",-83.248627],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_easting\",1000000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 12, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3175\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 3176, "epsg", 3176, - "Indian 1960 / TM 106 NE"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y"); - add_proj4text (p, 1, - "_0=0 +a=6377276.345 +b=6356075.413140239 +towgs84=198,88"); - add_proj4text (p, 2, - "1,317,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Indian 1960 / TM 106 NE\",GEOGCS[\"Indian 1960\""); - add_srs_wkt (p, 1, - ",DATUM[\"Indian_1960\",SPHEROID[\"Everest 1830 (1937 Adj"); - add_srs_wkt (p, 2, - "ustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "5\"]],TOWGS84[198,881,317,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6131\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4131\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",106],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"3176\"]]"); - p = add_epsg_def (filter, first, last, 3177, "epsg", 3177, - "LGD2006 / Libya TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9965000000000001 +x_"); - add_proj4text (p, 1, - "0=1000000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,"); - add_proj4text (p, 2, - "-2.5764,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"LGD2006 / Libya TM\",GEOGCS[\"LGD2006\",DATUM[\""); - add_srs_wkt (p, 1, - "Libyan_Geodetic_Datum_2006\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",17],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9965],PARAMETER[\"false_easting\",1000000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"3177\"]]"); - p = add_epsg_def (filter, first, last, 3178, "epsg", 3178, - "GR96 / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GR96 / UTM zone 18N\",GEOGCS[\"GR96\",DATUM[\"G"); - add_srs_wkt (p, 1, - "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 2, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "3178\"]]"); - p = add_epsg_def (filter, first, last, 3179, "epsg", 3179, - "GR96 / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GR96 / UTM zone 19N\",GEOGCS[\"GR96\",DATUM[\"G"); - add_srs_wkt (p, 1, - "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 2, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "3179\"]]"); - p = add_epsg_def (filter, first, last, 3180, "epsg", 3180, - "GR96 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GR96 / UTM zone 20N\",GEOGCS[\"GR96\",DATUM[\"G"); - add_srs_wkt (p, 1, - "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 2, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "3180\"]]"); - p = add_epsg_def (filter, first, last, 3181, "epsg", 3181, - "GR96 / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GR96 / UTM zone 21N\",GEOGCS[\"GR96\",DATUM[\"G"); - add_srs_wkt (p, 1, - "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 2, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "3181\"]]"); - p = add_epsg_def (filter, first, last, 3182, "epsg", 3182, - "GR96 / UTM zone 22N"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GR96 / UTM zone 22N\",GEOGCS[\"GR96\",DATUM[\"G"); - add_srs_wkt (p, 1, - "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 2, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "3182\"]]"); - p = add_epsg_def (filter, first, last, 3183, "epsg", 3183, - "GR96 / UTM zone 23N"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GR96 / UTM zone 23N\",GEOGCS[\"GR96\",DATUM[\"G"); - add_srs_wkt (p, 1, - "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 2, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "3183\"]]"); - p = add_epsg_def (filter, first, last, 3184, "epsg", 3184, - "GR96 / UTM zone 24N"); - add_proj4text (p, 0, - "+proj=utm +zone=24 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GR96 / UTM zone 24N\",GEOGCS[\"GR96\",DATUM[\"G"); - add_srs_wkt (p, 1, - "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 2, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "3184\"]]"); - p = add_epsg_def (filter, first, last, 3185, "epsg", 3185, - "GR96 / UTM zone 25N"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GR96 / UTM zone 25N\",GEOGCS[\"GR96\",DATUM[\"G"); - add_srs_wkt (p, 1, - "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 2, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "3185\"]]"); - p = add_epsg_def (filter, first, last, 3186, "epsg", 3186, - "GR96 / UTM zone 26N"); - add_proj4text (p, 0, - "+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GR96 / UTM zone 26N\",GEOGCS[\"GR96\",DATUM[\"G"); - add_srs_wkt (p, 1, - "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 2, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-27],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "3186\"]]"); - p = add_epsg_def (filter, first, last, 3187, "epsg", 3187, - "GR96 / UTM zone 27N"); - add_proj4text (p, 0, - "+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GR96 / UTM zone 27N\",GEOGCS[\"GR96\",DATUM[\"G"); - add_srs_wkt (p, 1, - "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 2, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-21],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "3187\"]]"); - p = add_epsg_def (filter, first, last, 3188, "epsg", 3188, - "GR96 / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GR96 / UTM zone 28N\",GEOGCS[\"GR96\",DATUM[\"G"); - add_srs_wkt (p, 1, - "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 2, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "3188\"]]"); - p = add_epsg_def (filter, first, last, 3189, "epsg", 3189, - "GR96 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GR96 / UTM zone 29N\",GEOGCS[\"GR96\",DATUM[\"G"); - add_srs_wkt (p, 1, - "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 2, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "3189\"]]"); - p = add_epsg_def (filter, first, last, 3190, "epsg", 3190, - "LGD2006 / Libya TM zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.99995 +x_0=200000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"LGD2006 / Libya TM zone 5\",GEOGCS[\"LGD2006\","); - add_srs_wkt (p, 1, - "DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 4, - "SG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.99995],PARAMETER[\"false_easting\",2000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"3190\"]]"); - p = add_epsg_def (filter, first, last, 3191, "epsg", 3191, - "LGD2006 / Libya TM zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.99995 +x_0=200000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"LGD2006 / Libya TM zone 6\",GEOGCS[\"LGD2006\","); - add_srs_wkt (p, 1, - "DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 4, - "SG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",11],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.99995],PARAMETER[\"false_easting\",20"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"3191\"]]"); - p = add_epsg_def (filter, first, last, 3192, "epsg", 3192, - "LGD2006 / Libya TM zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.99995 +x_0=200000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"LGD2006 / Libya TM zone 7\",GEOGCS[\"LGD2006\","); - add_srs_wkt (p, 1, - "DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 4, - "SG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",13],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.99995],PARAMETER[\"false_easting\",20"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"3192\"]]"); - p = add_epsg_def (filter, first, last, 3193, "epsg", 3193, - "LGD2006 / Libya TM zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.99995 +x_0=200000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"LGD2006 / Libya TM zone 8\",GEOGCS[\"LGD2006\","); - add_srs_wkt (p, 1, - "DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 4, - "SG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",15],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.99995],PARAMETER[\"false_easting\",20"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"3193\"]]"); - p = add_epsg_def (filter, first, last, 3194, "epsg", 3194, - "LGD2006 / Libya TM zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.99995 +x_0=200000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"LGD2006 / Libya TM zone 9\",GEOGCS[\"LGD2006\","); - add_srs_wkt (p, 1, - "DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 4, - "SG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",17],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.99995],PARAMETER[\"false_easting\",20"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"3194\"]]"); - p = add_epsg_def (filter, first, last, 3195, "epsg", 3195, - "LGD2006 / Libya TM zone 10"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.99995 +x_0=200000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"LGD2006 / Libya TM zone 10\",GEOGCS[\"LGD2006\""); - add_srs_wkt (p, 1, - ",DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",19],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",0.99995],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "200000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"3195\"]]"); - p = add_epsg_def (filter, first, last, 3196, "epsg", 3196, - "LGD2006 / Libya TM zone 11"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.99995 +x_0=200000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"LGD2006 / Libya TM zone 11\",GEOGCS[\"LGD2006\""); - add_srs_wkt (p, 1, - ",DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",21],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",0.99995],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "200000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"3196\"]]"); - p = add_epsg_def (filter, first, last, 3197, "epsg", 3197, - "LGD2006 / Libya TM zone 12"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=23 +k=0.99995 +x_0=200000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"LGD2006 / Libya TM zone 12\",GEOGCS[\"LGD2006\""); - add_srs_wkt (p, 1, - ",DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",23],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",0.99995],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "200000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"3197\"]]"); - p = add_epsg_def (filter, first, last, 3198, "epsg", 3198, - "LGD2006 / Libya TM zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=25 +k=0.99995 +x_0=200000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"LGD2006 / Libya TM zone 13\",GEOGCS[\"LGD2006\""); - add_srs_wkt (p, 1, - ",DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",25],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",0.99995],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "200000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"3198\"]]"); - p = add_epsg_def (filter, first, last, 3199, "epsg", 3199, - "LGD2006 / UTM zone 32N"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +ellps=intl +towgs84=-208.406,-109.87"); - add_proj4text (p, 1, - "8,-2.5764,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"LGD2006 / UTM zone 32N\",GEOGCS[\"LGD2006\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internation"); - add_srs_wkt (p, 2, - "al 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\"sc"); - add_srs_wkt (p, 9, - "ale_factor\",0.9996],PARAMETER[\"false_easting\",500000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"3199\"]]"); - p = add_epsg_def (filter, first, last, 3200, "epsg", 3200, - "FD58 / Iraq zone"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.99878"); - add_proj4text (p, 1, - "64078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +tow"); - add_proj4text (p, 2, - "gs84=-239.1,-170.02,397.5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"FD58 / Iraq zone\",GEOGCS[\"FD58\",DATUM[\"Fina"); - add_srs_wkt (p, 1, - "l_Datum_1958\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 2, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-239.1,-"); - add_srs_wkt (p, 3, - "170.02,397.5,0,0,0,0],AUTHORITY[\"EPSG\",\"6132\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4132\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",32."); - add_srs_wkt (p, 8, - "5],PARAMETER[\"central_meridian\",45],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9987864078],PARAMETER[\"false_easting\",15000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",1166200],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3200\"]]"); - p = add_epsg_def (filter, first, last, 3201, "epsg", 3201, - "LGD2006 / UTM zone 33N"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +ellps=intl +towgs84=-208.406,-109.87"); - add_proj4text (p, 1, - "8,-2.5764,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"LGD2006 / UTM zone 33N\",GEOGCS[\"LGD2006\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internation"); - add_srs_wkt (p, 2, - "al 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"3201\"]]"); - p = add_epsg_def (filter, first, last, 3202, "epsg", 3202, - "LGD2006 / UTM zone 34N"); - add_proj4text (p, 0, - "+proj=utm +zone=34 +ellps=intl +towgs84=-208.406,-109.87"); - add_proj4text (p, 1, - "8,-2.5764,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"LGD2006 / UTM zone 34N\",GEOGCS[\"LGD2006\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internation"); - add_srs_wkt (p, 2, - "al 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",21],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"3202\"]]"); - p = add_epsg_def (filter, first, last, 3203, "epsg", 3203, - "LGD2006 / UTM zone 35N"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +ellps=intl +towgs84=-208.406,-109.87"); - add_proj4text (p, 1, - "8,-2.5764,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"LGD2006 / UTM zone 35N\",GEOGCS[\"LGD2006\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internation"); - add_srs_wkt (p, 2, - "al 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",27],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"3203\"]]"); - p = add_epsg_def (filter, first, last, 3204, "epsg", 3204, - "WGS 84 / SCAR IMW SP19-20"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.333333333"); - add_proj4text (p, 1, - "33334 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SP19-20\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-60.66666666666666],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-63.33333333333334],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-66],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "204\"]]"); - p = add_epsg_def (filter, first, last, 3205, "epsg", 3205, - "WGS 84 / SCAR IMW SP21-22"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.333333333"); - add_proj4text (p, 1, - "33334 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SP21-22\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-60.66666666666666],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-63.33333333333334],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-54],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "205\"]]"); - p = add_epsg_def (filter, first, last, 3206, "epsg", 3206, - "WGS 84 / SCAR IMW SP23-24"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.333333333"); - add_proj4text (p, 1, - "33334 +lat_0=-90 +lon_0=-42 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SP23-24\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-60.66666666666666],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-63.33333333333334],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-42],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "206\"]]"); - p = add_epsg_def (filter, first, last, 3207, "epsg", 3207, - "WGS 84 / SCAR IMW SQ01-02"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-174 +x_0=0 +y_0=0 +datum=WGS84 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SQ01-02\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-174],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3207\"]]"); - p = add_epsg_def (filter, first, last, 3208, "epsg", 3208, - "WGS 84 / SCAR IMW SQ19-20"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SQ19-20\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-66],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "208\"]]"); - p = add_epsg_def (filter, first, last, 3209, "epsg", 3209, - "WGS 84 / SCAR IMW SQ21-22"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SQ21-22\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-54],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "209\"]]"); - p = add_epsg_def (filter, first, last, 3210, "epsg", 3210, - "WGS 84 / SCAR IMW SQ37-38"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SQ37-38\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",42],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "210\"]]"); - p = add_epsg_def (filter, first, last, 3211, "epsg", 3211, - "WGS 84 / SCAR IMW SQ39-40"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SQ39-40\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",54],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "211\"]]"); - p = add_epsg_def (filter, first, last, 3212, "epsg", 3212, - "WGS 84 / SCAR IMW SQ41-42"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SQ41-42\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",66],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "212\"]]"); - p = add_epsg_def (filter, first, last, 3213, "epsg", 3213, - "WGS 84 / SCAR IMW SQ43-44"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SQ43-44\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",78],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "213\"]]"); - p = add_epsg_def (filter, first, last, 3214, "epsg", 3214, - "WGS 84 / SCAR IMW SQ45-46"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SQ45-46\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",90],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "214\"]]"); - p = add_epsg_def (filter, first, last, 3215, "epsg", 3215, - "WGS 84 / SCAR IMW SQ47-48"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SQ47-48\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",102],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "215\"]]"); - p = add_epsg_def (filter, first, last, 3216, "epsg", 3216, - "WGS 84 / SCAR IMW SQ49-50"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SQ49-50\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",114],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "216\"]]"); - p = add_epsg_def (filter, first, last, 3217, "epsg", 3217, - "WGS 84 / SCAR IMW SQ51-52"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SQ51-52\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",126],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "217\"]]"); - p = add_epsg_def (filter, first, last, 3218, "epsg", 3218, - "WGS 84 / SCAR IMW SQ53-54"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SQ53-54\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",138],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "218\"]]"); - p = add_epsg_def (filter, first, last, 3219, "epsg", 3219, - "WGS 84 / SCAR IMW SQ55-56"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SQ55-56\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",150],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "219\"]]"); - p = add_epsg_def (filter, first, last, 3220, "epsg", 3220, - "WGS 84 / SCAR IMW SQ57-58"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SQ57-58\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",162],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "220\"]]"); - p = add_epsg_def (filter, first, last, 3221, "epsg", 3221, - "WGS 84 / SCAR IMW SR13-14"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-102 +x_0=0 +y_0=0 +datum=WGS84 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR13-14\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-102],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3221\"]]"); - p = add_epsg_def (filter, first, last, 3222, "epsg", 3222, - "WGS 84 / SCAR IMW SR15-16"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-90 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR15-16\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-90],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "222\"]]"); - p = add_epsg_def (filter, first, last, 3223, "epsg", 3223, - "WGS 84 / SCAR IMW SR17-18"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-78 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR17-18\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-78],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "223\"]]"); - p = add_epsg_def (filter, first, last, 3224, "epsg", 3224, - "WGS 84 / SCAR IMW SR19-20"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR19-20\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-66],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "224\"]]"); - p = add_epsg_def (filter, first, last, 3225, "epsg", 3225, - "WGS 84 / SCAR IMW SR27-28"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-18 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR27-28\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-18],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "225\"]]"); - p = add_epsg_def (filter, first, last, 3226, "epsg", 3226, - "WGS 84 / SCAR IMW SR29-30"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-6 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR29-30\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-6],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "226\"]]"); - p = add_epsg_def (filter, first, last, 3227, "epsg", 3227, - "WGS 84 / SCAR IMW SR31-32"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=6 +x_0=0 +y_0=0 +datum=WGS84 +un"); - add_proj4text (p, 2, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR31-32\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",6],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"322"); - add_srs_wkt (p, 13, - "7\"]]"); - p = add_epsg_def (filter, first, last, 3228, "epsg", 3228, - "WGS 84 / SCAR IMW SR33-34"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=18 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR33-34\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",18],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "228\"]]"); - p = add_epsg_def (filter, first, last, 3229, "epsg", 3229, - "WGS 84 / SCAR IMW SR35-36"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=30 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR35-36\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",30],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "229\"]]"); - p = add_epsg_def (filter, first, last, 3230, "epsg", 3230, - "WGS 84 / SCAR IMW SR37-38"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR37-38\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",42],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "230\"]]"); - p = add_epsg_def (filter, first, last, 3231, "epsg", 3231, - "WGS 84 / SCAR IMW SR39-40"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR39-40\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",54],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "231\"]]"); - p = add_epsg_def (filter, first, last, 3232, "epsg", 3232, - "WGS 84 / SCAR IMW SR41-42"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR41-42\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",66],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "232\"]]"); - p = add_epsg_def (filter, first, last, 3233, "epsg", 3233, - "WGS 84 / SCAR IMW SR43-44"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR43-44\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",78],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "233\"]]"); - p = add_epsg_def (filter, first, last, 3234, "epsg", 3234, - "WGS 84 / SCAR IMW SR45-46"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR45-46\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",90],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "234\"]]"); - p = add_epsg_def (filter, first, last, 3235, "epsg", 3235, - "WGS 84 / SCAR IMW SR47-48"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR47-48\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",102],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "235\"]]"); - p = add_epsg_def (filter, first, last, 3236, "epsg", 3236, - "WGS 84 / SCAR IMW SR49-50"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR49-50\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",114],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "236\"]]"); - p = add_epsg_def (filter, first, last, 3237, "epsg", 3237, - "WGS 84 / SCAR IMW SR51-52"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR51-52\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",126],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "237\"]]"); - p = add_epsg_def (filter, first, last, 3238, "epsg", 3238, - "WGS 84 / SCAR IMW SR53-54"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR53-54\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",138],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "238\"]]"); - p = add_epsg_def (filter, first, last, 3239, "epsg", 3239, - "WGS 84 / SCAR IMW SR55-56"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR55-56\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",150],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "239\"]]"); - p = add_epsg_def (filter, first, last, 3240, "epsg", 3240, - "WGS 84 / SCAR IMW SR57-58"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR57-58\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",162],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "240\"]]"); - p = add_epsg_def (filter, first, last, 3241, "epsg", 3241, - "WGS 84 / SCAR IMW SR59-60"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=174 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SR59-60\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",174],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "241\"]]"); - p = add_epsg_def (filter, first, last, 3242, "epsg", 3242, - "WGS 84 / SCAR IMW SS04-06"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-153 +x_0=0 +y_0=0 +datum=WGS84 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS04-06\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-153],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3242\"]]"); - p = add_epsg_def (filter, first, last, 3243, "epsg", 3243, - "WGS 84 / SCAR IMW SS07-09"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-135 +x_0=0 +y_0=0 +datum=WGS84 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS07-09\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-135],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3243\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_12.c b/src/spatialite/src/srsinit/epsg_inlined_12.c deleted file mode 100644 index 099d8fc..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_12.c +++ /dev/null @@ -1,3492 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_12 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 3244, "epsg", 3244, - "WGS 84 / SCAR IMW SS10-12"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-117 +x_0=0 +y_0=0 +datum=WGS84 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS10-12\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-117],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3244\"]]"); - p = add_epsg_def (filter, first, last, 3245, "epsg", 3245, - "WGS 84 / SCAR IMW SS13-15"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-99 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS13-15\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-99],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "245\"]]"); - p = add_epsg_def (filter, first, last, 3246, "epsg", 3246, - "WGS 84 / SCAR IMW SS16-18"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-81 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS16-18\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-81],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "246\"]]"); - p = add_epsg_def (filter, first, last, 3247, "epsg", 3247, - "WGS 84 / SCAR IMW SS19-21"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-63 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS19-21\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-63],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "247\"]]"); - p = add_epsg_def (filter, first, last, 3248, "epsg", 3248, - "WGS 84 / SCAR IMW SS25-27"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-27 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS25-27\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-27],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "248\"]]"); - p = add_epsg_def (filter, first, last, 3249, "epsg", 3249, - "WGS 84 / SCAR IMW SS28-30"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-9 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS28-30\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-9],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "249\"]]"); - p = add_epsg_def (filter, first, last, 3250, "epsg", 3250, - "WGS 84 / SCAR IMW SS31-33"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=9 +x_0=0 +y_0=0 +datum=WGS84 +un"); - add_proj4text (p, 2, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS31-33\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",9],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"325"); - add_srs_wkt (p, 13, - "0\"]]"); - p = add_epsg_def (filter, first, last, 3251, "epsg", 3251, - "WGS 84 / SCAR IMW SS34-36"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=27 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS34-36\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",27],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "251\"]]"); - p = add_epsg_def (filter, first, last, 3252, "epsg", 3252, - "WGS 84 / SCAR IMW SS37-39"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=45 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS37-39\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",45],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "252\"]]"); - p = add_epsg_def (filter, first, last, 3253, "epsg", 3253, - "WGS 84 / SCAR IMW SS40-42"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=63 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS40-42\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",63],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "253\"]]"); - p = add_epsg_def (filter, first, last, 3254, "epsg", 3254, - "WGS 84 / SCAR IMW SS43-45"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=81 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS43-45\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",81],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "254\"]]"); - p = add_epsg_def (filter, first, last, 3255, "epsg", 3255, - "WGS 84 / SCAR IMW SS46-48"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=99 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS46-48\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",99],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "255\"]]"); - p = add_epsg_def (filter, first, last, 3256, "epsg", 3256, - "WGS 84 / SCAR IMW SS49-51"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=117 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS49-51\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",117],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "256\"]]"); - p = add_epsg_def (filter, first, last, 3257, "epsg", 3257, - "WGS 84 / SCAR IMW SS52-54"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=135 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS52-54\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",135],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "257\"]]"); - p = add_epsg_def (filter, first, last, 3258, "epsg", 3258, - "WGS 84 / SCAR IMW SS55-57"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=153 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS55-57\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",153],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "258\"]]"); - p = add_epsg_def (filter, first, last, 3259, "epsg", 3259, - "WGS 84 / SCAR IMW SS58-60"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=171 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SS58-60\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",171],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "259\"]]"); - p = add_epsg_def (filter, first, last, 3260, "epsg", 3260, - "WGS 84 / SCAR IMW ST01-04"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-168 +x_0=0 +y_0=0 +datum=WGS84 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW ST01-04\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-168],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3260\"]]"); - p = add_epsg_def (filter, first, last, 3261, "epsg", 3261, - "WGS 84 / SCAR IMW ST05-08"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-144 +x_0=0 +y_0=0 +datum=WGS84 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW ST05-08\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-144],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3261\"]]"); - p = add_epsg_def (filter, first, last, 3262, "epsg", 3262, - "WGS 84 / SCAR IMW ST09-12"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-120 +x_0=0 +y_0=0 +datum=WGS84 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW ST09-12\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-120],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3262\"]]"); - p = add_epsg_def (filter, first, last, 3263, "epsg", 3263, - "WGS 84 / SCAR IMW ST13-16"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-96 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW ST13-16\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-96],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "263\"]]"); - p = add_epsg_def (filter, first, last, 3264, "epsg", 3264, - "WGS 84 / SCAR IMW ST17-20"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-72 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW ST17-20\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-72],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "264\"]]"); - p = add_epsg_def (filter, first, last, 3265, "epsg", 3265, - "WGS 84 / SCAR IMW ST21-24"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-48 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW ST21-24\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-48],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "265\"]]"); - p = add_epsg_def (filter, first, last, 3266, "epsg", 3266, - "WGS 84 / SCAR IMW ST25-28"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=-24 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW ST25-28\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",-24],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "266\"]]"); - p = add_epsg_def (filter, first, last, 3267, "epsg", 3267, - "WGS 84 / SCAR IMW ST29-32"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +un"); - add_proj4text (p, 2, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW ST29-32\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",0],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"326"); - add_srs_wkt (p, 13, - "7\"]]"); - p = add_epsg_def (filter, first, last, 3268, "epsg", 3268, - "WGS 84 / SCAR IMW ST33-36"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=24 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW ST33-36\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",24],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "268\"]]"); - p = add_epsg_def (filter, first, last, 3269, "epsg", 3269, - "WGS 84 / SCAR IMW ST37-40"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=48 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW ST37-40\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",48],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "269\"]]"); - p = add_epsg_def (filter, first, last, 3270, "epsg", 3270, - "WGS 84 / SCAR IMW ST41-44"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=72 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW ST41-44\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",72],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "270\"]]"); - p = add_epsg_def (filter, first, last, 3271, "epsg", 3271, - "WGS 84 / SCAR IMW ST45-48"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=96 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW ST45-48\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",96],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "271\"]]"); - p = add_epsg_def (filter, first, last, 3272, "epsg", 3272, - "WGS 84 / SCAR IMW ST49-52"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=120 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW ST49-52\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",120],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "272\"]]"); - p = add_epsg_def (filter, first, last, 3273, "epsg", 3273, - "WGS 84 / SCAR IMW ST53-56"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=144 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW ST53-56\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",144],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "273\"]]"); - p = add_epsg_def (filter, first, last, 3274, "epsg", 3274, - "WGS 84 / SCAR IMW ST57-60"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=168 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW ST57-60\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 7, - "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 8, - "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",-90],PARAMETER[\"central_meridian\",168],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "274\"]]"); - p = add_epsg_def (filter, first, last, 3275, "epsg", 3275, - "WGS 84 / SCAR IMW SU01-05"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=-165 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SU01-05\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",-165]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 10, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 11, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3275\"]]"); - p = add_epsg_def (filter, first, last, 3276, "epsg", 3276, - "WGS 84 / SCAR IMW SU06-10"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=-135 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SU06-10\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",-135]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 10, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 11, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3276\"]]"); - p = add_epsg_def (filter, first, last, 3277, "epsg", 3277, - "WGS 84 / SCAR IMW SU11-15"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=-105 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SU11-15\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",-105]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 10, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 11, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3277\"]]"); - p = add_epsg_def (filter, first, last, 3278, "epsg", 3278, - "WGS 84 / SCAR IMW SU16-20"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=-75 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SU16-20\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",-75],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3278\"]]"); - p = add_epsg_def (filter, first, last, 3279, "epsg", 3279, - "WGS 84 / SCAR IMW SU21-25"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SU21-25\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",-45],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3279\"]]"); - p = add_epsg_def (filter, first, last, 3280, "epsg", 3280, - "WGS 84 / SCAR IMW SU26-30"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=-15 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SU26-30\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",-15],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3280\"]]"); - p = add_epsg_def (filter, first, last, 3281, "epsg", 3281, - "WGS 84 / SCAR IMW SU31-35"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=15 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SU31-35\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",15],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3281\"]]"); - p = add_epsg_def (filter, first, last, 3282, "epsg", 3282, - "WGS 84 / SCAR IMW SU36-40"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SU36-40\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",45],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3282\"]]"); - p = add_epsg_def (filter, first, last, 3283, "epsg", 3283, - "WGS 84 / SCAR IMW SU41-45"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=75 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SU41-45\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",75],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3283\"]]"); - p = add_epsg_def (filter, first, last, 3284, "epsg", 3284, - "WGS 84 / SCAR IMW SU46-50"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=105 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SU46-50\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",105],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3284\"]]"); - p = add_epsg_def (filter, first, last, 3285, "epsg", 3285, - "WGS 84 / SCAR IMW SU51-55"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=135 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SU51-55\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",135],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3285\"]]"); - p = add_epsg_def (filter, first, last, 3286, "epsg", 3286, - "WGS 84 / SCAR IMW SU56-60"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=165 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SU56-60\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",165],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3286\"]]"); - p = add_epsg_def (filter, first, last, 3287, "epsg", 3287, - "WGS 84 / SCAR IMW SV01-10"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=-150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SV01-10\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",-150]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 10, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 11, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3287\"]]"); - p = add_epsg_def (filter, first, last, 3288, "epsg", 3288, - "WGS 84 / SCAR IMW SV11-20"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=-90 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SV11-20\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",-90],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3288\"]]"); - p = add_epsg_def (filter, first, last, 3289, "epsg", 3289, - "WGS 84 / SCAR IMW SV21-30"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=-30 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SV21-30\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",-30],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3289\"]]"); - p = add_epsg_def (filter, first, last, 3290, "epsg", 3290, - "WGS 84 / SCAR IMW SV31-40"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=30 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SV31-40\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",30],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3290\"]]"); - p = add_epsg_def (filter, first, last, 3291, "epsg", 3291, - "WGS 84 / SCAR IMW SV41-50"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=90 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SV41-50\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",90],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3291\"]]"); - p = add_epsg_def (filter, first, last, 3292, "epsg", 3292, - "WGS 84 / SCAR IMW SV51-60"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SV51-60\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",150],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3292\"]]"); - p = add_epsg_def (filter, first, last, 3293, "epsg", 3293, - "WGS 84 / SCAR IMW SW01-60"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); - add_proj4text (p, 1, - "=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / SCAR IMW SW01-60\",GEOGCS[\"WGS 84\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); - add_srs_wkt (p, 2, - "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); - add_srs_wkt (p, 6, - "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 7, - "-80.23861111111111],PARAMETER[\"central_meridian\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 9, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 10, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3293\"]]"); - p = add_epsg_def (filter, first, last, 3294, "epsg", 3294, - "WGS 84 / USGS Transantarctic Mountains"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-78 +lon_0=162 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / USGS Transantarctic Mountains\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",63781"); - add_srs_wkt (p, 2, - "37,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]"); - add_srs_wkt (p, 6, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "standard_parallel_1\",-76.66666666666667],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_2\",-79.33333333333333],PARAMETER[\"lati"); - add_srs_wkt (p, 9, - "tude_of_origin\",-78],PARAMETER[\"central_meridian\",162"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_easting\",0],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 12, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 13, - "Y[\"EPSG\",\"3294\"]]"); - p = add_epsg_def (filter, first, last, 3296, "epsg", 3296, - "RGPF / UTM zone 5S"); - add_proj4text (p, 0, - "+proj=utm +zone=5 +south +ellps=GRS80 +towgs84=0.072,-0."); - add_proj4text (p, 1, - "507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGPF / UTM zone 5S\",GEOGCS[\"RGPF\",DATUM[\"Re"); - add_srs_wkt (p, 1, - "seau_Geodesique_de_la_Polynesie_Francaise\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,"); - add_srs_wkt (p, 4, - "-0.0093],AUTHORITY[\"EPSG\",\"6687\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4687\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); - add_srs_wkt (p, 9, - "ridian\",-153],PARAMETER[\"scale_factor\",0.9996],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"3296\"]]"); - p = add_epsg_def (filter, first, last, 3297, "epsg", 3297, - "RGPF / UTM zone 6S"); - add_proj4text (p, 0, - "+proj=utm +zone=6 +south +ellps=GRS80 +towgs84=0.072,-0."); - add_proj4text (p, 1, - "507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGPF / UTM zone 6S\",GEOGCS[\"RGPF\",DATUM[\"Re"); - add_srs_wkt (p, 1, - "seau_Geodesique_de_la_Polynesie_Francaise\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,"); - add_srs_wkt (p, 4, - "-0.0093],AUTHORITY[\"EPSG\",\"6687\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4687\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); - add_srs_wkt (p, 9, - "ridian\",-147],PARAMETER[\"scale_factor\",0.9996],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"3297\"]]"); - p = add_epsg_def (filter, first, last, 3298, "epsg", 3298, - "RGPF / UTM zone 7S"); - add_proj4text (p, 0, - "+proj=utm +zone=7 +south +ellps=GRS80 +towgs84=0.072,-0."); - add_proj4text (p, 1, - "507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGPF / UTM zone 7S\",GEOGCS[\"RGPF\",DATUM[\"Re"); - add_srs_wkt (p, 1, - "seau_Geodesique_de_la_Polynesie_Francaise\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,"); - add_srs_wkt (p, 4, - "-0.0093],AUTHORITY[\"EPSG\",\"6687\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4687\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); - add_srs_wkt (p, 9, - "ridian\",-141],PARAMETER[\"scale_factor\",0.9996],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"3298\"]]"); - p = add_epsg_def (filter, first, last, 3299, "epsg", 3299, - "RGPF / UTM zone 8S"); - add_proj4text (p, 0, - "+proj=utm +zone=8 +south +ellps=GRS80 +towgs84=0.072,-0."); - add_proj4text (p, 1, - "507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGPF / UTM zone 8S\",GEOGCS[\"RGPF\",DATUM[\"Re"); - add_srs_wkt (p, 1, - "seau_Geodesique_de_la_Polynesie_Francaise\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,"); - add_srs_wkt (p, 4, - "-0.0093],AUTHORITY[\"EPSG\",\"6687\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4687\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); - add_srs_wkt (p, 9, - "ridian\",-135],PARAMETER[\"scale_factor\",0.9996],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"3299\"]]"); - p = add_epsg_def (filter, first, last, 3300, "epsg", 3300, - "Estonian Coordinate System of 1992"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.5"); - add_proj4text (p, 1, - "1755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps="); - add_proj4text (p, 2, - "GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007"); - add_proj4text (p, 3, - ",-0.014 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Estonian Coordinate System of 1992\",GEOGCS[\"E"); - add_srs_wkt (p, 1, - "ST92\",DATUM[\"Estonia_1992\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6133\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4133\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",59.33333333333334],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",58],PARAMETER[\"latitude_of_origin"); - add_srs_wkt (p, 10, - "\",57.51755393055556],PARAMETER[\"central_meridian\",24]"); - add_srs_wkt (p, 11, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 12, - "orthing\",6375000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"3300\"]]"); - p = add_epsg_def (filter, first, last, 3301, "epsg", 3301, - "Estonian Coordinate System of 1997"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.5"); - add_proj4text (p, 1, - "1755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps="); - add_proj4text (p, 2, - "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Estonian Coordinate System of 1997\",GEOGCS[\"E"); - add_srs_wkt (p, 1, - "ST97\",DATUM[\"Estonia_1997\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6180\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4180\"]],PROJECTION[\"Lambert_Conformal_C"); - add_srs_wkt (p, 7, - "onic_2SP\"],PARAMETER[\"standard_parallel_1\",59.3333333"); - add_srs_wkt (p, 8, - "3333334],PARAMETER[\"standard_parallel_2\",58],PARAMETER"); - add_srs_wkt (p, 9, - "[\"latitude_of_origin\",57.51755393055556],PARAMETER[\"c"); - add_srs_wkt (p, 10, - "entral_meridian\",24],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 11, - "],PARAMETER[\"false_northing\",6375000],UNIT[\"metre\",1"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 13, - "Y\",EAST],AUTHORITY[\"EPSG\",\"3301\"]]"); - p = add_epsg_def (filter, first, last, 3302, "epsg", 3302, - "IGN63 Hiva Oa / UTM zone 7S"); - add_proj4text (p, 0, - "+proj=utm +zone=7 +south +ellps=intl +towgs84=410.721,55"); - add_proj4text (p, 1, - ".049,80.746,2.5779,2.3514,0.6664,17.3311 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGN63 Hiva Oa / UTM zone 7S\",GEOGCS[\"IGN63 Hi"); - add_srs_wkt (p, 1, - "va Oa\",DATUM[\"IGN63_Hiva_Oa\",SPHEROID[\"International"); - add_srs_wkt (p, 2, - " 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[410.721,55.049,80.746,2.5779,2.3514,0.6664,17.3311],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6689\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "689\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "141],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 11, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"3302\"]]"); - p = add_epsg_def (filter, first, last, 3303, "epsg", 3303, - "Fatu Iva 72 / UTM zone 7S"); - add_proj4text (p, 0, - "+proj=utm +zone=7 +south +ellps=intl +towgs84=347.103,10"); - add_proj4text (p, 1, - "78.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Fatu Iva 72 / UTM zone 7S\",GEOGCS[\"Fatu Iva 7"); - add_srs_wkt (p, 1, - "2\",DATUM[\"Fatu_Iva_72\",SPHEROID[\"International 1924\""); - add_srs_wkt (p, 2, - ",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[347.1"); - add_srs_wkt (p, 3, - "03,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6688\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); - add_srs_wkt (p, 7, - "88\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-1"); - add_srs_wkt (p, 9, - "41],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",500000],PARAMETER[\"false_northing\",10000000"); - add_srs_wkt (p, 11, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"3303\"]]"); - p = add_epsg_def (filter, first, last, 3304, "epsg", 3304, - "Tahiti 79 / UTM zone 6S"); - add_proj4text (p, 0, - "+proj=utm +zone=6 +south +ellps=intl +towgs84=221.525,15"); - add_proj4text (p, 1, - "2.948,176.768,-2.3847,-1.3896,-0.877,11.4741 +units=m +n"); - add_proj4text (p, 2, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tahiti 79 / UTM zone 6S\",GEOGCS[\"Tahiti 79\","); - add_srs_wkt (p, 1, - "DATUM[\"Tahiti_79\",SPHEROID[\"International 1924\",6378"); - add_srs_wkt (p, 2, - "388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[221.525,15"); - add_srs_wkt (p, 3, - "2.948,176.768,-2.3847,-1.3896,-0.877,11.4741],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6690\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4690\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",-147],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",10000000],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "304\"]]"); - p = add_epsg_def (filter, first, last, 3305, "epsg", 3305, - "Moorea 87 / UTM zone 6S"); - add_proj4text (p, 0, - "+proj=utm +zone=6 +south +ellps=intl +towgs84=215.525,14"); - add_proj4text (p, 1, - "9.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +units=m +n"); - add_proj4text (p, 2, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Moorea 87 / UTM zone 6S\",GEOGCS[\"Moorea 87\","); - add_srs_wkt (p, 1, - "DATUM[\"Moorea_87\",SPHEROID[\"International 1924\",6378"); - add_srs_wkt (p, 2, - "388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[215.525,14"); - add_srs_wkt (p, 3, - "9.593,176.229,-3.2624,-1.692,-1.1571,10.4773],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6691\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4691\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",-147],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",10000000],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "305\"]]"); - p = add_epsg_def (filter, first, last, 3306, "epsg", 3306, - "Maupiti 83 / UTM zone 5S"); - add_proj4text (p, 0, - "+proj=utm +zone=5 +south +ellps=intl +towgs84=217.037,86"); - add_proj4text (p, 1, - ".959,23.956,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Maupiti 83 / UTM zone 5S\",GEOGCS[\"Maupiti 83\""); - add_srs_wkt (p, 1, - ",DATUM[\"Maupiti_83\",SPHEROID[\"International 1924\",63"); - add_srs_wkt (p, 2, - "78388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[217.037,"); - add_srs_wkt (p, 3, - "86.959,23.956,0,0,0,0],AUTHORITY[\"EPSG\",\"6692\"]],PRI"); - add_srs_wkt (p, 4, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4692\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",-153],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"3306\"]]"); - p = add_epsg_def (filter, first, last, 3307, "epsg", 3307, - "Nakhl-e Ghanem / UTM zone 39N"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,-0.15,0.68,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Nakhl-e Ghanem / UTM zone 39N\",GEOGCS[\"Nakhl-"); - add_srs_wkt (p, 1, - "e Ghanem\",DATUM[\"Nakhl_e_Ghanem\",SPHEROID[\"WGS 84\","); - add_srs_wkt (p, 2, - "6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,-0.15,0.68,0,0,0,0],AUTHORITY[\"EPSG\",\"6693\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4693\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",51],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"3307\"]]"); - p = add_epsg_def (filter, first, last, 3308, "epsg", 3308, - "GDA94 / NSW Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-30.75 +lat_2=-35.75 +lat_0=-33.25 +lon"); - add_proj4text (p, 1, - "_0=147 +x_0=9300000 +y_0=4500000 +ellps=GRS80 +towgs84=0"); - add_proj4text (p, 2, - ",0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / NSW Lambert\",GEOGCS[\"GDA94\",DATUM[\""); - add_srs_wkt (p, 1, - "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",-3"); - add_srs_wkt (p, 8, - "0.75],PARAMETER[\"standard_parallel_2\",-35.75],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"latitude_of_origin\",-33.25],PARAMETER[\"central_mer"); - add_srs_wkt (p, 10, - "idian\",147],PARAMETER[\"false_easting\",9300000],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_northing\",4500000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 13, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"3308\"]]"); - p = add_epsg_def (filter, first, last, 3309, "epsg", 3309, - "NAD27 / California Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_"); - add_proj4text (p, 1, - "0=0 +y_0=-4000000 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / California Albers\",GEOGCS[\"NAD27\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866"); - add_srs_wkt (p, 2, - "\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4267\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"standard_parallel_1\",34],PARAMETER[\"standar"); - add_srs_wkt (p, 8, - "d_parallel_2\",40.5],PARAMETER[\"latitude_of_center\",0]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"longitude_of_center\",-120],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",0],PARAMETER[\"false_northing\",-4000000],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3309\"]]"); - p = add_epsg_def (filter, first, last, 3310, "epsg", 3310, - "NAD83 / California Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_"); - add_proj4text (p, 1, - "0=0 +y_0=-4000000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / California Albers\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Albers_Conic_E"); - add_srs_wkt (p, 7, - "qual_Area\"],PARAMETER[\"standard_parallel_1\",34],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_2\",40.5],PARAMETER[\"latitude_"); - add_srs_wkt (p, 9, - "of_center\",0],PARAMETER[\"longitude_of_center\",-120],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_easting\",0],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",-4000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"3310\"]]"); - p = add_epsg_def (filter, first, last, 3311, "epsg", 3311, - "NAD83(HARN) / California Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_"); - add_proj4text (p, 1, - "0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / California Albers\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Albers_Conic_Equal_Area\"],PARAMETER[\"standard_"); - add_srs_wkt (p, 8, - "parallel_1\",34],PARAMETER[\"standard_parallel_2\",40.5]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"latitude_of_center\",0],PARAMETER[\"longitu"); - add_srs_wkt (p, 10, - "de_of_center\",-120],PARAMETER[\"false_easting\",0],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_northing\",-4000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 13, - "RTH],AUTHORITY[\"EPSG\",\"3311\"]]"); - p = add_epsg_def (filter, first, last, 3312, "epsg", 3312, - "CSG67 / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=intl +towgs84=-186,230,110,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CSG67 / UTM zone 21N\",GEOGCS[\"CSG67\",DATUM[\""); - add_srs_wkt (p, 1, - "Centre_Spatial_Guyanais_1967\",SPHEROID[\"International "); - add_srs_wkt (p, 2, - "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-186,230,110,0,0,0,0],AUTHORITY[\"EPSG\",\"6623\"]],PRI"); - add_srs_wkt (p, 4, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4623\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",-57],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"3312\"]]"); - p = add_epsg_def (filter, first, last, 3313, "epsg", 3313, - "RGFG95 / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGFG95 / UTM zone 21N\",GEOGCS[\"RGFG95\",DATUM"); - add_srs_wkt (p, 1, - "[\"Reseau_Geodesique_Francais_Guyane_1995\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6624\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4624\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"3313\"]]"); - p = add_epsg_def (filter, first, last, 3314, "epsg", 3314, - "Katanga 1955 / Katanga Lambert (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=0 +lon_0=26 +x"); - add_proj4text (p, 1, - "_0=0 +y_0=0 +ellps=clrk66 +towgs84=-103.746,-9.614,-255."); - add_proj4text (p, 2, - "95,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Katanga 1955 / Katanga Lambert (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4695\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_1\",-6.5],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",-11.5],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 10, - ",0],PARAMETER[\"central_meridian\",26],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 12, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EA"); - add_srs_wkt (p, 13, - "ST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3314\""); - add_srs_wkt (p, 14, - "]]"); - p = add_epsg_def (filter, first, last, 3315, "epsg", 3315, - "Katanga 1955 / Katanga TM (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-9 +lon_0=26 +k=0.9998 +x_0=0 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Katanga 1955 / Katanga TM (deprecated)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\"Clar"); - add_srs_wkt (p, 2, - "ke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); - add_srs_wkt (p, 7, - "95\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",-9],PARAMETER[\"central_meridian\",2"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"scale_factor\",0.9998],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3315\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 3316, "epsg", 3316, - "Kasai 1953 / Congo TM zone 22"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kasai 1953 / Congo TM zone 22\",GEOGCS[\"Kasai "); - add_srs_wkt (p, 1, - "1953\",DATUM[\"Kasai_1953\",SPHEROID[\"Clarke 1880 (RGS)"); - add_srs_wkt (p, 2, - "\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"6696\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 5, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); - add_srs_wkt (p, 6, - "96\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 7, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",22"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",500000],PARAMETER[\"false_northing\",10000000],"); - add_srs_wkt (p, 10, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 11, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"3316\"]]"); - p = add_epsg_def (filter, first, last, 3317, "epsg", 3317, - "Kasai 1953 / Congo TM zone 24"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kasai 1953 / Congo TM zone 24\",GEOGCS[\"Kasai "); - add_srs_wkt (p, 1, - "1953\",DATUM[\"Kasai_1953\",SPHEROID[\"Clarke 1880 (RGS)"); - add_srs_wkt (p, 2, - "\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"6696\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 5, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); - add_srs_wkt (p, 6, - "96\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 7, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",24"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",500000],PARAMETER[\"false_northing\",10000000],"); - add_srs_wkt (p, 10, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 11, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"3317\"]]"); - p = add_epsg_def (filter, first, last, 3318, "epsg", 3318, - "IGC 1962 / Congo TM zone 12"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGC 1962 / Congo TM zone 12\",GEOGCS[\"IGC 1962"); - add_srs_wkt (p, 1, - " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); - add_srs_wkt (p, 2, - "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 3, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",12],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3318\"]]"); - p = add_epsg_def (filter, first, last, 3319, "epsg", 3319, - "IGC 1962 / Congo TM zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGC 1962 / Congo TM zone 14\",GEOGCS[\"IGC 1962"); - add_srs_wkt (p, 1, - " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); - add_srs_wkt (p, 2, - "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 3, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",14],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3319\"]]"); - p = add_epsg_def (filter, first, last, 3320, "epsg", 3320, - "IGC 1962 / Congo TM zone 16"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGC 1962 / Congo TM zone 16\",GEOGCS[\"IGC 1962"); - add_srs_wkt (p, 1, - " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); - add_srs_wkt (p, 2, - "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 3, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",16],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3320\"]]"); - p = add_epsg_def (filter, first, last, 3321, "epsg", 3321, - "IGC 1962 / Congo TM zone 18"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGC 1962 / Congo TM zone 18\",GEOGCS[\"IGC 1962"); - add_srs_wkt (p, 1, - " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); - add_srs_wkt (p, 2, - "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 3, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",18],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3321\"]]"); - p = add_epsg_def (filter, first, last, 3322, "epsg", 3322, - "IGC 1962 / Congo TM zone 20"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGC 1962 / Congo TM zone 20\",GEOGCS[\"IGC 1962"); - add_srs_wkt (p, 1, - " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); - add_srs_wkt (p, 2, - "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 3, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",20],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3322\"]]"); - p = add_epsg_def (filter, first, last, 3323, "epsg", 3323, - "IGC 1962 / Congo TM zone 22"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGC 1962 / Congo TM zone 22\",GEOGCS[\"IGC 1962"); - add_srs_wkt (p, 1, - " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); - add_srs_wkt (p, 2, - "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 3, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",22],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3323\"]]"); - p = add_epsg_def (filter, first, last, 3324, "epsg", 3324, - "IGC 1962 / Congo TM zone 24"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGC 1962 / Congo TM zone 24\",GEOGCS[\"IGC 1962"); - add_srs_wkt (p, 1, - " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); - add_srs_wkt (p, 2, - "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 3, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",24],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3324\"]]"); - p = add_epsg_def (filter, first, last, 3325, "epsg", 3325, - "IGC 1962 / Congo TM zone 26"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGC 1962 / Congo TM zone 26\",GEOGCS[\"IGC 1962"); - add_srs_wkt (p, 1, - " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); - add_srs_wkt (p, 2, - "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 3, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",26],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3325\"]]"); - p = add_epsg_def (filter, first, last, 3326, "epsg", 3326, - "IGC 1962 / Congo TM zone 28"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGC 1962 / Congo TM zone 28\",GEOGCS[\"IGC 1962"); - add_srs_wkt (p, 1, - " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); - add_srs_wkt (p, 2, - "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 3, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",28],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3326\"]]"); - p = add_epsg_def (filter, first, last, 3327, "epsg", 3327, - "IGC 1962 / Congo TM zone 30"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGC 1962 / Congo TM zone 30\",GEOGCS[\"IGC 1962"); - add_srs_wkt (p, 1, - " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); - add_srs_wkt (p, 2, - "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 3, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",30],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3327\"]]"); - p = add_epsg_def (filter, first, last, 3328, "epsg", 3328, - "Pulkovo 1942(58) / GUGiK-80"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=52.16666666666666 +lon_0=19.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999714 +x_0=500000 +y_0=500000 +ellps=krass "); - add_proj4text (p, 2, - "+towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +un"); - add_proj4text (p, 3, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / GUGiK-80\",GEOGCS[\"Pulkovo "); - add_srs_wkt (p, 1, - "1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4179"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",52.16666666666666],PARAMETER[\"centr"); - add_srs_wkt (p, 9, - "al_meridian\",19.16666666666667],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 10, - "r\",0.999714],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_northing\",500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST]"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"3328\"]]"); - p = add_epsg_def (filter, first, last, 3329, "epsg", 3329, - "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); - add_proj4text (p, 2, - "844,-0.84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); - add_srs_wkt (p, 4, - "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 5, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",15],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",5500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"332"); - add_srs_wkt (p, 13, - "9\"]]"); - p = add_epsg_def (filter, first, last, 3330, "epsg", 3330, - "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); - add_proj4text (p, 2, - "844,-0.84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 6"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); - add_srs_wkt (p, 4, - "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 5, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",18],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",6500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"333"); - add_srs_wkt (p, 13, - "0\"]]"); - p = add_epsg_def (filter, first, last, 3331, "epsg", 3331, - "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); - add_proj4text (p, 2, - "844,-0.84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 7"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); - add_srs_wkt (p, 4, - "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 5, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",21],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",7500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"333"); - add_srs_wkt (p, 13, - "1\"]]"); - p = add_epsg_def (filter, first, last, 3332, "epsg", 3332, - "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); - add_proj4text (p, 2, - "844,-0.84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 8"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); - add_srs_wkt (p, 4, - "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 5, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",24],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",8500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"333"); - add_srs_wkt (p, 13, - "2\"]]"); - p = add_epsg_def (filter, first, last, 3333, "epsg", 3333, - "Pulkovo 1942(58) / Gauss-Kruger zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); - add_proj4text (p, 2, - "844,-0.84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / Gauss-Kruger zone 3\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-"); - add_srs_wkt (p, 4, - "0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4179\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",15],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",3500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 12, - "NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3333\"]]"); - p = add_epsg_def (filter, first, last, 3334, "epsg", 3334, - "Pulkovo 1942(58) / Gauss-Kruger zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); - add_proj4text (p, 2, - "844,-0.84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / Gauss-Kruger zone 4\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-"); - add_srs_wkt (p, 4, - "0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4179\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",21],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",4500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 12, - "NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3334\"]]"); - p = add_epsg_def (filter, first, last, 3335, "epsg", 3335, - "Pulkovo 1942(58) / Gauss-Kruger zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); - add_proj4text (p, 2, - "844,-0.84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / Gauss-Kruger zone 5\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-"); - add_srs_wkt (p, 4, - "0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4179\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",27],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",5500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 12, - "NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3335\"]]"); - p = add_epsg_def (filter, first, last, 3336, "epsg", 3336, - "IGN 1962 Kerguelen / UTM zone 42S"); - add_proj4text (p, 0, - "+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,"); - add_proj4text (p, 1, - "103,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGN 1962 Kerguelen / UTM zone 42S\",GEOGCS[\"IG"); - add_srs_wkt (p, 1, - "N 1962 Kerguelen\",DATUM[\"IGN_1962_Kerguelen\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7022\"]],TOWGS84[145,-187,103,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6698\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4698\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",69],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); - add_srs_wkt (p, 12, - "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3336\"]]"); - p = add_epsg_def (filter, first, last, 3337, "epsg", 3337, - "Le Pouce 1934 / Mauritius Grid"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-20.19506944444445 +lat_0=-20.195069444"); - add_proj4text (p, 1, - "44445 +lon_0=57.52182777777778 +k_0=1 +x_0=1000000 +y_0="); - add_proj4text (p, 2, - "1000000 +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0"); - add_proj4text (p, 3, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Le Pouce 1934 / Mauritius Grid\",GEOGCS[\"Le Po"); - add_srs_wkt (p, 1, - "uce 1934\",DATUM[\"Le_Pouce_1934\",SPHEROID[\"Clarke 188"); - add_srs_wkt (p, 2, - "0 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-770.1,158.4,-498.2,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6699\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4699\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\"latitu"); - add_srs_wkt (p, 8, - "de_of_origin\",-20.19506944444445],PARAMETER[\"central_m"); - add_srs_wkt (p, 9, - "eridian\",57.52182777777778],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 10, - "1],PARAMETER[\"false_easting\",1000000],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 13, - "TH],AUTHORITY[\"EPSG\",\"3337\"]]"); - p = add_epsg_def (filter, first, last, 3338, "epsg", 3338, - "NAD83 / Alaska Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0"); - add_proj4text (p, 1, - "=0 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alaska Albers\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Albers_Conic_Equal_"); - add_srs_wkt (p, 7, - "Area\"],PARAMETER[\"standard_parallel_1\",55],PARAMETER["); - add_srs_wkt (p, 8, - "\"standard_parallel_2\",65],PARAMETER[\"latitude_of_cent"); - add_srs_wkt (p, 9, - "er\",50],PARAMETER[\"longitude_of_center\",-154],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3338\"]]"); - p = add_epsg_def (filter, first, last, 3339, "epsg", 3339, - "IGCB 1955 / Congo TM zone 12"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGCB 1955 / Congo TM zone 12\",GEOGCS[\"IGCB 19"); - add_srs_wkt (p, 1, - "55\",DATUM[\"Institut_Geographique_du_Congo_Belge_1955\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7012\"]],TOWGS84[-79.9,-158,-168.9,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6701\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4701\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 9, - "ian\",12],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 11, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"3339\"]]"); - p = add_epsg_def (filter, first, last, 3340, "epsg", 3340, - "IGCB 1955 / Congo TM zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGCB 1955 / Congo TM zone 14\",GEOGCS[\"IGCB 19"); - add_srs_wkt (p, 1, - "55\",DATUM[\"Institut_Geographique_du_Congo_Belge_1955\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7012\"]],TOWGS84[-79.9,-158,-168.9,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6701\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4701\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 9, - "ian\",14],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 11, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"3340\"]]"); - p = add_epsg_def (filter, first, last, 3341, "epsg", 3341, - "IGCB 1955 / Congo TM zone 16"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGCB 1955 / Congo TM zone 16\",GEOGCS[\"IGCB 19"); - add_srs_wkt (p, 1, - "55\",DATUM[\"Institut_Geographique_du_Congo_Belge_1955\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7012\"]],TOWGS84[-79.9,-158,-168.9,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6701\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4701\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 9, - "ian\",16],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 11, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"3341\"]]"); - p = add_epsg_def (filter, first, last, 3342, "epsg", 3342, - "IGCB 1955 / UTM zone 33S"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-79.9,-"); - add_proj4text (p, 1, - "158,-168.9,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGCB 1955 / UTM zone 33S\",GEOGCS[\"IGCB 1955\""); - add_srs_wkt (p, 1, - ",DATUM[\"Institut_Geographique_du_Congo_Belge_1955\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7012\"]],TOWGS84[-79.9,-158,-168.9,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6701\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4701\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 11, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"3342\"]]"); - p = add_epsg_def (filter, first, last, 3343, "epsg", 3343, - "Mauritania 1999 / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mauritania 1999 / UTM zone 28N\",GEOGCS[\"Mauri"); - add_srs_wkt (p, 1, - "tania 1999\",DATUM[\"Mauritania_1999\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6702\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4702\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-15],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"3343\"]]"); - p = add_epsg_def (filter, first, last, 3344, "epsg", 3344, - "Mauritania 1999 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mauritania 1999 / UTM zone 29N\",GEOGCS[\"Mauri"); - add_srs_wkt (p, 1, - "tania 1999\",DATUM[\"Mauritania_1999\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6702\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4702\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-9],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"3344\"]]"); - p = add_epsg_def (filter, first, last, 3345, "epsg", 3345, - "Mauritania 1999 / UTM zone 30N"); - add_proj4text (p, 0, - "+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mauritania 1999 / UTM zone 30N\",GEOGCS[\"Mauri"); - add_srs_wkt (p, 1, - "tania 1999\",DATUM[\"Mauritania_1999\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6702\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4702\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-3],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"3345\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_13.c b/src/spatialite/src/srsinit/epsg_inlined_13.c deleted file mode 100644 index 06d5392..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_13.c +++ /dev/null @@ -1,3570 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_13 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 3346, "epsg", 3346, - "LKS94 / Lithuania TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"LKS94 / Lithuania TM\",GEOGCS[\"LKS94\",DATUM[\""); - add_srs_wkt (p, 1, - "Lithuania_1994_ETRS89\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 2, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 3, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6126\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4669\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 7, - "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); - add_srs_wkt (p, 8, - "ridian\",24],PARAMETER[\"scale_factor\",0.9998],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"false_easting\",500000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3346\""); - add_srs_wkt (p, 12, - "]]"); - p = add_epsg_def (filter, first, last, 3347, "epsg", 3347, - "NAD83 / Statistics Canada Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-9"); - add_proj4text (p, 1, - "1.86666666666666 +x_0=6200000 +y_0=3000000 +datum=NAD83 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Statistics Canada Lambert\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",49],PARAMETER[\"standard_parallel_2\",77],PARAMETER[\"l"); - add_srs_wkt (p, 9, - "atitude_of_origin\",63.390675],PARAMETER[\"central_merid"); - add_srs_wkt (p, 10, - "ian\",-91.86666666666666],PARAMETER[\"false_easting\",62"); - add_srs_wkt (p, 11, - "00000],PARAMETER[\"false_northing\",3000000],UNIT[\"metr"); - add_srs_wkt (p, 12, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 13, - "T],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3347\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 3348, "epsg", 3348, - "NAD83(CSRS) / Statistics Canada Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-9"); - add_proj4text (p, 1, - "1.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 "); - add_proj4text (p, 2, - "+towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / Statistics Canada Lambert\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); - add_srs_wkt (p, 7, - "17\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_1\",49],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 9, - "rallel_2\",77],PARAMETER[\"latitude_of_origin\",63.39067"); - add_srs_wkt (p, 10, - "5],PARAMETER[\"central_meridian\",-91.86666666666666],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_easting\",6200000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 12, - "thing\",3000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 13, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 14, - "AUTHORITY[\"EPSG\",\"3348\"]]"); - p = add_epsg_def (filter, first, last, 3349, "epsg", 3349, - "WGS 84 / PDC Mercator (deprecated)"); - add_proj4text (p, 0, - "+proj=merc +lon_0=-150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / PDC Mercator (deprecated)\",GEOGCS[\"W"); - add_srs_wkt (p, 1, - "GS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,2"); - add_srs_wkt (p, 2, - "98.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PRO"); - add_srs_wkt (p, 6, - "JECTION[\"Mercator_1SP\"],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 7, - ",-150],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 8, - "asting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 9, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST"); - add_srs_wkt (p, 10, - "],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3349\"]]"); - p = add_epsg_def (filter, first, last, 3350, "epsg", 3350, - "Pulkovo 1942 / CS63 zone C0"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0.1 +lon_0=21.95 +k=1 +x_0=250000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0."); - add_proj4text (p, 2, - "82,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / CS63 zone C0\",GEOGCS[\"Pulkovo "); - add_srs_wkt (p, 1, - "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); - add_srs_wkt (p, 2, - "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); - add_srs_wkt (p, 3, - "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0.1],PARAMETER[\"central_meridian\",21.95],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",250000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EA"); - add_srs_wkt (p, 12, - "ST],AUTHORITY[\"EPSG\",\"3350\"]]"); - p = add_epsg_def (filter, first, last, 3351, "epsg", 3351, - "Pulkovo 1942 / CS63 zone C1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0.1 +lon_0=24.95 +k=1 +x_0=1250000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0"); - add_proj4text (p, 2, - ".82,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / CS63 zone C1\",GEOGCS[\"Pulkovo "); - add_srs_wkt (p, 1, - "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); - add_srs_wkt (p, 2, - "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); - add_srs_wkt (p, 3, - "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0.1],PARAMETER[\"central_meridian\",24.95],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",125000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"3351\"]]"); - p = add_epsg_def (filter, first, last, 3352, "epsg", 3352, - "Pulkovo 1942 / CS63 zone C2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0.1 +lon_0=27.95 +k=1 +x_0=2250000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0"); - add_proj4text (p, 2, - ".82,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / CS63 zone C2\",GEOGCS[\"Pulkovo "); - add_srs_wkt (p, 1, - "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); - add_srs_wkt (p, 2, - "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); - add_srs_wkt (p, 3, - "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0.1],PARAMETER[\"central_meridian\",27.95],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",225000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"3352\"]]"); - p = add_epsg_def (filter, first, last, 3353, "epsg", 3353, - "Mhast (onshore) / UTM zone 32S"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mhast (onshore) / UTM zone 32S\",GEOGCS[\"Mhast"); - add_srs_wkt (p, 1, - " (onshore)\",DATUM[\"Mhast_onshore\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6704\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4704\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",500000],PARAMETER[\"false_northing\",10000000],"); - add_srs_wkt (p, 10, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 11, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"3353\"]]"); - p = add_epsg_def (filter, first, last, 3354, "epsg", 3354, - "Mhast (offshore) / UTM zone 32S"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mhast (offshore) / UTM zone 32S\",GEOGCS[\"Mhas"); - add_srs_wkt (p, 1, - "t (offshore)\",DATUM[\"Mhast_offshore\",SPHEROID[\"Inter"); - add_srs_wkt (p, 2, - "national 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6705\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4705\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"3354\"]]"); - p = add_epsg_def (filter, first, last, 3355, "epsg", 3355, - "Egypt Gulf of Suez S-650 TL / Red Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=81"); - add_proj4text (p, 1, - "0000 +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Egypt Gulf of Suez S-650 TL / Red Belt\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Egypt Gulf of Suez S-650 TL\",DATUM[\"Egypt_Gulf_of_S"); - add_srs_wkt (p, 2, - "uez_S_650_TL\",SPHEROID[\"Helmert 1906\",6378200,298.3,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7020\"]],TOWGS84[-146.21,112.63,4.05"); - add_srs_wkt (p, 4, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6706\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4706\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",30],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",31],PARAMETER[\"scale_factor\",1],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",615000],PARAMETER[\"false_northing\",8"); - add_srs_wkt (p, 11, - "10000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"3355\"]]"); - p = add_epsg_def (filter, first, last, 3356, "epsg", 3356, - "Grand Cayman 1959 / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=clrk66 +towgs84=67.8,106.1,138"); - add_proj4text (p, 1, - ".8,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Grand Cayman 1959 / UTM zone 17N\",GEOGCS[\"Gra"); - add_srs_wkt (p, 1, - "nd Cayman 1959\",DATUM[\"Grand_Cayman_1959\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7008\"]],TOWGS84[67.8,106.1,138.8,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6723\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4723\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",-81],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EA"); - add_srs_wkt (p, 12, - "ST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3356\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 3357, "epsg", 3357, - "Little Cayman 1961 / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=clrk66 +towgs84=42,124,147,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Little Cayman 1961 / UTM zone 17N\",GEOGCS[\"Li"); - add_srs_wkt (p, 1, - "ttle Cayman 1961\",DATUM[\"Little_Cayman_1961\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7008\"]],TOWGS84[42,124,147,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6726\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4726\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",-81],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",0.9996],PARAMETER[\"false_easting"); - add_srs_wkt (p, 10, - "\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3357\"]]"); - p = add_epsg_def (filter, first, last, 3358, "epsg", 3358, - "NAD83(HARN) / North Carolina"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); - add_proj4text (p, 1, - "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps"); - add_proj4text (p, 2, - "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / North Carolina\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",36.16666666666666],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",34.33333333333334],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 10, - "origin\",33.75],PARAMETER[\"central_meridian\",-79],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_easting\",609601.22],PARAMETER[\"false_nor"); - add_srs_wkt (p, 12, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 13, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 14, - "\"3358\"]]"); - p = add_epsg_def (filter, first, last, 3359, "epsg", 3359, - "NAD83(HARN) / North Carolina (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); - add_proj4text (p, 1, - "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024385 +y_0="); - add_proj4text (p, 2, - "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / North Carolina (ftUS) (deprecated"); - add_srs_wkt (p, 1, - ")\",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_R"); - add_srs_wkt (p, 2, - "eference_Network\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",36.16666666666666],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"standard_parallel_2\",34.33333333333334],PARA"); - add_srs_wkt (p, 10, - "METER[\"latitude_of_origin\",33.75],PARAMETER[\"central_"); - add_srs_wkt (p, 11, - "meridian\",-79],PARAMETER[\"false_easting\",2000004.0000"); - add_srs_wkt (p, 12, - "08],PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 14, - "\",NORTH],AUTHORITY[\"EPSG\",\"3359\"]]"); - p = add_epsg_def (filter, first, last, 3360, "epsg", 3360, - "NAD83(HARN) / South Carolina"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31"); - add_proj4text (p, 1, - ".83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / South Carolina\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_1\",34.83333333333334],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",32.5],PARAMETER[\"latitude_of_origin\",31.8"); - add_srs_wkt (p, 10, - "3333333333333],PARAMETER[\"central_meridian\",-81],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_easting\",609600],PARAMETER[\"false_northin"); - add_srs_wkt (p, 12, - "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 13, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"33"); - add_srs_wkt (p, 14, - "60\"]]"); - p = add_epsg_def (filter, first, last, 3361, "epsg", 3361, - "NAD83(HARN) / South Carolina (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31"); - add_proj4text (p, 1, - ".83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / South Carolina (ft)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",34.83333333333334],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",32.5],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 10, - "31.83333333333333],PARAMETER[\"central_meridian\",-81],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_easting\",2000000],PARAMETER[\"false_no"); - add_srs_wkt (p, 12, - "rthing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 13, - "02\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 14, - "SG\",\"3361\"]]"); - p = add_epsg_def (filter, first, last, 3362, "epsg", 3362, - "NAD83(HARN) / Pennsylvania North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=4"); - add_proj4text (p, 1, - "0.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps"); - add_proj4text (p, 2, - "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Pennsylvania North\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",41.95],PARAMETER[\"standard_parallel"); - add_srs_wkt (p, 9, - "_2\",40.88333333333333],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 10, - ",40.16666666666666],PARAMETER[\"central_meridian\",-77.7"); - add_srs_wkt (p, 11, - "5],PARAMETER[\"false_easting\",600000],PARAMETER[\"false"); - add_srs_wkt (p, 12, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 13, - "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 14, - "G\",\"3362\"]]"); - p = add_epsg_def (filter, first, last, 3363, "epsg", 3363, - "NAD83(HARN) / Pennsylvania North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=4"); - add_proj4text (p, 1, - "0.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps"); - add_proj4text (p, 2, - "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Pennsylvania North (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_"); - add_srs_wkt (p, 2, - "Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_1\",41.95],PARAMETER[\"standard_p"); - add_srs_wkt (p, 9, - "arallel_2\",40.88333333333333],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 10, - "rigin\",40.16666666666666],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 11, - ",-77.75],PARAMETER[\"false_easting\",1968500],PARAMETER["); - add_srs_wkt (p, 12, - "\"false_northing\",0],UNIT[\"US survey foot\",0.30480060"); - add_srs_wkt (p, 13, - "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); - add_srs_wkt (p, 14, - "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3363\"]]"); - p = add_epsg_def (filter, first, last, 3364, "epsg", 3364, - "NAD83(HARN) / Pennsylvania South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +"); - add_proj4text (p, 2, - "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Pennsylvania South\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",40.96666666666667],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",39.93333333333333],PARAMETER[\"latitude"); - add_srs_wkt (p, 10, - "_of_origin\",39.33333333333334],PARAMETER[\"central_meri"); - add_srs_wkt (p, 11, - "dian\",-77.75],PARAMETER[\"false_easting\",600000],PARAM"); - add_srs_wkt (p, 12, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 14, - "HORITY[\"EPSG\",\"3364\"]]"); - p = add_epsg_def (filter, first, last, 3365, "epsg", 3365, - "NAD83(HARN) / Pennsylvania South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +"); - add_proj4text (p, 2, - "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Pennsylvania South (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_"); - add_srs_wkt (p, 2, - "Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_1\",40.96666666666667],PARAMETER["); - add_srs_wkt (p, 9, - "\"standard_parallel_2\",39.93333333333333],PARAMETER[\"l"); - add_srs_wkt (p, 10, - "atitude_of_origin\",39.33333333333334],PARAMETER[\"centr"); - add_srs_wkt (p, 11, - "al_meridian\",-77.75],PARAMETER[\"false_easting\",196850"); - add_srs_wkt (p, 12, - "0],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot"); - add_srs_wkt (p, 13, - "\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS"); - add_srs_wkt (p, 14, - "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3365"); - add_srs_wkt (p, 15, - "\"]]"); - p = add_epsg_def (filter, first, last, 3366, "epsg", 3366, - "Hong Kong 1963 Grid System (deprecated)"); - add_proj4text (p, 0, - "+proj=cass +lat_0=22.31213333333334 +lon_0=114.178555555"); - add_proj4text (p, 1, - "5556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=63"); - add_proj4text (p, 2, - "78293.645208759 +b=6356617.987679838 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Hong Kong 1963 Grid System (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"Hong Kong 1963\",DATUM[\"Hong_Kong_1963\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Clarke 1858\",6378293.645208759,294.2606763692654,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7007\"]],AUTHORITY[\"EPSG\",\"6738\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4738\"]],PROJECTION[\"Cassini_So"); - add_srs_wkt (p, 7, - "ldner\"],PARAMETER[\"latitude_of_origin\",22.31213333333"); - add_srs_wkt (p, 8, - "334],PARAMETER[\"central_meridian\",114.1785555555556],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",40243.57775604237],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",19069.93351512578],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3366\"]]"); - p = add_epsg_def (filter, first, last, 3367, "epsg", 3367, - "IGN Astro 1960 / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGN Astro 1960 / UTM zone 28N\",GEOGCS[\"IGN As"); - add_srs_wkt (p, 1, - "tro 1960\",DATUM[\"IGN_Astro_1960\",SPHEROID[\"Clarke 18"); - add_srs_wkt (p, 2, - "80 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"6700\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4700\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",-15],PARAMETER[\"scale_factor\",0.9996],PARAMETER["); - add_srs_wkt (p, 9, - "\"false_easting\",500000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"3367\"]]"); - p = add_epsg_def (filter, first, last, 3368, "epsg", 3368, - "IGN Astro 1960 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGN Astro 1960 / UTM zone 29N\",GEOGCS[\"IGN As"); - add_srs_wkt (p, 1, - "tro 1960\",DATUM[\"IGN_Astro_1960\",SPHEROID[\"Clarke 18"); - add_srs_wkt (p, 2, - "80 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"6700\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4700\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",-9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 10, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 11, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"3368\"]]"); - p = add_epsg_def (filter, first, last, 3369, "epsg", 3369, - "IGN Astro 1960 / UTM zone 30N"); - add_proj4text (p, 0, - "+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGN Astro 1960 / UTM zone 30N\",GEOGCS[\"IGN As"); - add_srs_wkt (p, 1, - "tro 1960\",DATUM[\"IGN_Astro_1960\",SPHEROID[\"Clarke 18"); - add_srs_wkt (p, 2, - "80 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"6700\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4700\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",-3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 10, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 11, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"3369\"]]"); - p = add_epsg_def (filter, first, last, 3370, "epsg", 3370, - "NAD27 / UTM zone 59N"); - add_proj4text (p, 0, - "+proj=utm +zone=59 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 59N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 8, - "71],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 12, - "370\"]]"); - p = add_epsg_def (filter, first, last, 3371, "epsg", 3371, - "NAD27 / UTM zone 60N"); - add_proj4text (p, 0, - "+proj=utm +zone=60 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 60N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 8, - "77],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 12, - "371\"]]"); - p = add_epsg_def (filter, first, last, 3372, "epsg", 3372, - "NAD83 / UTM zone 59N"); - add_proj4text (p, 0, - "+proj=utm +zone=59 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 59N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",171],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"3372\"]]"); - p = add_epsg_def (filter, first, last, 3373, "epsg", 3373, - "NAD83 / UTM zone 60N"); - add_proj4text (p, 0, - "+proj=utm +zone=60 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 60N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",177],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"3373\"]]"); - p = add_epsg_def (filter, first, last, 3374, "epsg", 3374, - "FD54 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=intl +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"FD54 / UTM zone 29N\",GEOGCS[\"FD54\",DATUM[\"F"); - add_srs_wkt (p, 1, - "aroe_Datum_1954\",SPHEROID[\"International 1924\",637838"); - add_srs_wkt (p, 2, - "8,297,AUTHORITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "6741\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 4, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4741\"]],PROJECTION["); - add_srs_wkt (p, 6, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 7, - ",0],PARAMETER[\"central_meridian\",-9],PARAMETER[\"scale"); - add_srs_wkt (p, 8, - "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 10, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 11, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"3374\"]]"); - p = add_epsg_def (filter, first, last, 3375, "epsg", 3375, - "GDM2000 / Peninsula RSO"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.02579646666"); - add_proj4text (p, 1, - "66 +k=0.99984 +x_0=804671 +y_0=0 +gamma=323.130102361111"); - add_proj4text (p, 2, - "1 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDM2000 / Peninsula RSO\",GEOGCS[\"GDM2000\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4742\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"latitude_of_center\",4],PARAMETER[\"longitude_of"); - add_srs_wkt (p, 8, - "_center\",102.25],PARAMETER[\"azimuth\",323.025796466666"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"rectified_grid_angle\",323.1301023611111]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"scale_factor\",0.99984],PARAMETER[\"false_e"); - add_srs_wkt (p, 11, - "asting\",804671],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 12, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"337"); - add_srs_wkt (p, 14, - "5\"]]"); - p = add_epsg_def (filter, first, last, 3376, "epsg", 3376, - "GDM2000 / East Malaysia BRSO"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.9"); - add_proj4text (p, 1, - "9984 +x_0=0 +y_0=0 +gamma=53.13010236111111 +ellps=GRS80"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDM2000 / East Malaysia BRSO\",GEOGCS[\"GDM2000"); - add_srs_wkt (p, 1, - "\",DATUM[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4742\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"latitude_of_center\",4],PARAMETER[\"longitud"); - add_srs_wkt (p, 8, - "e_of_center\",115],PARAMETER[\"azimuth\",53.31580995],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"rectified_grid_angle\",53.13010236111111],PARA"); - add_srs_wkt (p, 10, - "METER[\"scale_factor\",0.99984],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 11, - "g\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); - add_srs_wkt (p, 13, - "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3376\"]]"); - p = add_epsg_def (filter, first, last, 3377, "epsg", 3377, - "GDM2000 / Johor Grid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=2.121679744444445 +lon_0=103.427936236"); - add_proj4text (p, 1, - "1111 +x_0=-14810.562 +y_0=8758.32 +ellps=GRS80 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDM2000 / Johor Grid\",GEOGCS[\"GDM2000\",DATUM"); - add_srs_wkt (p, 1, - "[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\"lat"); - add_srs_wkt (p, 7, - "itude_of_origin\",2.121679744444445],PARAMETER[\"central"); - add_srs_wkt (p, 8, - "_meridian\",103.4279362361111],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",-14810.562],PARAMETER[\"false_northing\",8758.32],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "3377\"]]"); - p = add_epsg_def (filter, first, last, 3378, "epsg", 3378, - "GDM2000 / Sembilan and Melaka Grid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=2.682347636111111 +lon_0=101.974905041"); - add_proj4text (p, 1, - "6667 +x_0=3673.785 +y_0=-4240.573 +ellps=GRS80 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDM2000 / Sembilan and Melaka Grid\",GEOGCS[\"G"); - add_srs_wkt (p, 1, - "DM2000\",DATUM[\"Geodetic_Datum_of_Malaysia_2000\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4742\"]],PROJECTION[\"Cassini_Soldner\"],PA"); - add_srs_wkt (p, 7, - "RAMETER[\"latitude_of_origin\",2.682347636111111],PARAME"); - add_srs_wkt (p, 8, - "TER[\"central_meridian\",101.9749050416667],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",3673.785],PARAMETER[\"false_northing\",-"); - add_srs_wkt (p, 10, - "4240.573],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"3378\"]]"); - p = add_epsg_def (filter, first, last, 3379, "epsg", 3379, - "GDM2000 / PahangGrid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=3.769388088888889 +lon_0=102.368298983"); - add_proj4text (p, 1, - "3333 +x_0=-7368.228 +y_0=6485.858 +ellps=GRS80 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDM2000 / PahangGrid\",GEOGCS[\"GDM2000\",DATUM"); - add_srs_wkt (p, 1, - "[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\"lat"); - add_srs_wkt (p, 7, - "itude_of_origin\",3.769388088888889],PARAMETER[\"central"); - add_srs_wkt (p, 8, - "_meridian\",102.3682989833333],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",-7368.228],PARAMETER[\"false_northing\",6485.858],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "3379\"]]"); - p = add_epsg_def (filter, first, last, 3380, "epsg", 3380, - "GDM2000 / Selangor Grid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=3.68464905 +lon_0=101.3891079138889 +x"); - add_proj4text (p, 1, - "_0=-34836.161 +y_0=56464.049 +ellps=GRS80 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDM2000 / Selangor Grid\",GEOGCS[\"GDM2000\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",3.68464905],PARAMETER[\"central_mer"); - add_srs_wkt (p, 8, - "idian\",101.3891079138889],PARAMETER[\"false_easting\",-"); - add_srs_wkt (p, 9, - "34836.161],PARAMETER[\"false_northing\",56464.049],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 12, - "380\"]]"); - p = add_epsg_def (filter, first, last, 3381, "epsg", 3381, - "GDM2000 / Terengganu Grid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=4.9762852 +lon_0=103.070275625 +x_0=19"); - add_proj4text (p, 1, - "594.245 +y_0=3371.895 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDM2000 / Terengganu Grid\",GEOGCS[\"GDM2000\","); - add_srs_wkt (p, 1, - "DATUM[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",4.9762852],PARAMETER[\"central_meri"); - add_srs_wkt (p, 8, - "dian\",103.070275625],PARAMETER[\"false_easting\",19594."); - add_srs_wkt (p, 9, - "245],PARAMETER[\"false_northing\",3371.895],UNIT[\"metre"); - add_srs_wkt (p, 10, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST"); - add_srs_wkt (p, 11, - "],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3381\"]]"); - p = add_epsg_def (filter, first, last, 3382, "epsg", 3382, - "GDM2000 / Pinang Grid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=5.421517541666667 +lon_0=100.344376963"); - add_proj4text (p, 1, - "8889 +x_0=-23.414 +y_0=62.283 +ellps=GRS80 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDM2000 / Pinang Grid\",GEOGCS[\"GDM2000\",DATU"); - add_srs_wkt (p, 1, - "M[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS 198"); - add_srs_wkt (p, 2, - "0\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\"lat"); - add_srs_wkt (p, 7, - "itude_of_origin\",5.421517541666667],PARAMETER[\"central"); - add_srs_wkt (p, 8, - "_meridian\",100.3443769638889],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",-23.414],PARAMETER[\"false_northing\",62.283],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 11, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"338"); - add_srs_wkt (p, 12, - "2\"]]"); - p = add_epsg_def (filter, first, last, 3383, "epsg", 3383, - "GDM2000 / Kedah and Perlis Grid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=5.964672713888889 +lon_0=100.636371111"); - add_proj4text (p, 1, - "1111 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDM2000 / Kedah and Perlis Grid\",GEOGCS[\"GDM2"); - add_srs_wkt (p, 1, - "000\",DATUM[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAME"); - add_srs_wkt (p, 7, - "TER[\"latitude_of_origin\",5.964672713888889],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",100.6363711111111],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 10, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 11, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3383\""); - add_srs_wkt (p, 12, - "]]"); - p = add_epsg_def (filter, first, last, 3384, "epsg", 3384, - "GDM2000 / Perak Grid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=4.859063022222222 +lon_0=100.815410586"); - add_proj4text (p, 1, - "1111 +x_0=-1.769 +y_0=133454.779 +ellps=GRS80 +units=m +"); - add_proj4text (p, 2, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDM2000 / Perak Grid\",GEOGCS[\"GDM2000\",DATUM"); - add_srs_wkt (p, 1, - "[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\"lat"); - add_srs_wkt (p, 7, - "itude_of_origin\",4.859063022222222],PARAMETER[\"central"); - add_srs_wkt (p, 8, - "_meridian\",100.8154105861111],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",-1.769],PARAMETER[\"false_northing\",133454.779],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "3384\"]]"); - p = add_epsg_def (filter, first, last, 3385, "epsg", 3385, - "GDM2000 / Kelantan Grid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=5.972543658333334 +lon_0=102.295241669"); - add_proj4text (p, 1, - "4444 +x_0=13227.851 +y_0=8739.894 +ellps=GRS80 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDM2000 / Kelantan Grid\",GEOGCS[\"GDM2000\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",5.972543658333334],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",102.2952416694444],PARAMETER[\"false_east"); - add_srs_wkt (p, 9, - "ing\",13227.851],PARAMETER[\"false_northing\",8739.894],"); - add_srs_wkt (p, 10, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 11, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"3385\"]]"); - p = add_epsg_def (filter, first, last, 3386, "epsg", 3386, - "KKJ / Finland zone 0"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345"); - add_proj4text (p, 2, - ",-1.376,1.496 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"KKJ / Finland zone 0\",GEOGCS[\"KKJ\",DATUM[\"K"); - add_srs_wkt (p, 1, - "artastokoordinaattijarjestelma_1966\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.49"); - add_srs_wkt (p, 4, - "6],AUTHORITY[\"EPSG\",\"6123\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4123\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",18],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3386\"]]"); - p = add_epsg_def (filter, first, last, 3387, "epsg", 3387, - "KKJ / Finland zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=5500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.34"); - add_proj4text (p, 2, - "5,-1.376,1.496 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"KKJ / Finland zone 5\",GEOGCS[\"KKJ\",DATUM[\"K"); - add_srs_wkt (p, 1, - "artastokoordinaattijarjestelma_1966\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.49"); - add_srs_wkt (p, 4, - "6],AUTHORITY[\"EPSG\",\"6123\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4123\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",33],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",5500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3387\"]]"); - p = add_epsg_def (filter, first, last, 3388, "epsg", 3388, - "Pulkovo 1942 / Caspian Sea Mercator"); - add_proj4text (p, 0, - "+proj=merc +lon_0=51 +lat_ts=42 +x_0=0 +y_0=0 +ellps=kra"); - add_proj4text (p, 1, - "ss +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Caspian Sea Mercator\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Mercator_2SP\"],PARAMETER[\"standard_paral"); - add_srs_wkt (p, 8, - "lel_1\",42],PARAMETER[\"central_meridian\",51],PARAMETER"); - add_srs_wkt (p, 9, - "[\"false_easting\",0],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"none"); - add_srs_wkt (p, 11, - "\",NORTH],AXIS[\"none\",EAST],AUTHORITY[\"EPSG\",\"3388\""); - add_srs_wkt (p, 12, - "]]"); - p = add_epsg_def (filter, first, last, 3389, "epsg", 3389, - "Pulkovo 1942 / 3-degree Gauss-Kruger zone 60"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 60\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "80],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",60500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3389\"]]"); - p = add_epsg_def (filter, first, last, 3390, "epsg", 3390, - "Pulkovo 1995 / 3-degree Gauss-Kruger zone 60"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 60\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "80],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",60500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3390\"]]"); - p = add_epsg_def (filter, first, last, 3391, "epsg", 3391, - "Karbala 1979 / UTM zone 37N"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +ellps=clrk80 +towgs84=70.995,-335.91"); - add_proj4text (p, 1, - "6,262.898,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Karbala 1979 / UTM zone 37N\",GEOGCS[\"Karbala "); - add_srs_wkt (p, 1, - "1979\",DATUM[\"Karbala_1979\",SPHEROID[\"Clarke 1880 (RG"); - add_srs_wkt (p, 2, - "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[70.995,-335.916,262.898,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6743\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4743\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",39],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3391\"]]"); - p = add_epsg_def (filter, first, last, 3392, "epsg", 3392, - "Karbala 1979 / UTM zone 38N"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +ellps=clrk80 +towgs84=70.995,-335.91"); - add_proj4text (p, 1, - "6,262.898,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Karbala 1979 / UTM zone 38N\",GEOGCS[\"Karbala "); - add_srs_wkt (p, 1, - "1979\",DATUM[\"Karbala_1979\",SPHEROID[\"Clarke 1880 (RG"); - add_srs_wkt (p, 2, - "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[70.995,-335.916,262.898,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6743\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4743\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",45],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3392\"]]"); - p = add_epsg_def (filter, first, last, 3393, "epsg", 3393, - "Karbala 1979 / UTM zone 39N"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=clrk80 +towgs84=70.995,-335.91"); - add_proj4text (p, 1, - "6,262.898,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Karbala 1979 / UTM zone 39N\",GEOGCS[\"Karbala "); - add_srs_wkt (p, 1, - "1979\",DATUM[\"Karbala_1979\",SPHEROID[\"Clarke 1880 (RG"); - add_srs_wkt (p, 2, - "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[70.995,-335.916,262.898,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6743\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4743\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",51],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3393\"]]"); - p = add_epsg_def (filter, first, last, 3394, "epsg", 3394, - "Nahrwan 1934 / Iraq zone"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.99878"); - add_proj4text (p, 1, - "64078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +uni"); - add_proj4text (p, 2, - "ts=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Nahrwan 1934 / Iraq zone\",GEOGCS[\"Nahrwan 193"); - add_srs_wkt (p, 1, - "4\",DATUM[\"Nahrwan_1934\",SPHEROID[\"Clarke 1880 (RGS)\""); - add_srs_wkt (p, 2, - ",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"6744\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4744"); - add_srs_wkt (p, 6, - "\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMET"); - add_srs_wkt (p, 7, - "ER[\"latitude_of_origin\",32.5],PARAMETER[\"central_meri"); - add_srs_wkt (p, 8, - "dian\",45],PARAMETER[\"scale_factor\",0.9987864078],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",1500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",1166200],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"3394\"]]"); - p = add_epsg_def (filter, first, last, 3395, "epsg", 3395, - "WGS 84 / World Mercator"); - add_proj4text (p, 0, - "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +uni"); - add_proj4text (p, 1, - "ts=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / World Mercator\",GEOGCS[\"WGS 84\",DAT"); - add_srs_wkt (p, 1, - "UM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.25722356"); - add_srs_wkt (p, 2, - "3,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"632"); - add_srs_wkt (p, 3, - "6\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"M"); - add_srs_wkt (p, 6, - "ercator_1SP\"],PARAMETER[\"central_meridian\",0],PARAMET"); - add_srs_wkt (p, 7, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 9, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 10, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"3395\"]]"); - p = add_epsg_def (filter, first, last, 3396, "epsg", 3396, - "PD/83 / 3-degree Gauss-Kruger zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PD/83 / 3-degree Gauss-Kruger zone 3\",GEOGCS[\""); - add_srs_wkt (p, 1, - "PD/83\",DATUM[\"Potsdam_Datum_83\",SPHEROID[\"Bessel 184"); - add_srs_wkt (p, 2, - "1\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6746\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4746\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); - add_srs_wkt (p, 9, - "sting\",3500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3396\"]]"); - p = add_epsg_def (filter, first, last, 3397, "epsg", 3397, - "PD/83 / 3-degree Gauss-Kruger zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PD/83 / 3-degree Gauss-Kruger zone 4\",GEOGCS[\""); - add_srs_wkt (p, 1, - "PD/83\",DATUM[\"Potsdam_Datum_83\",SPHEROID[\"Bessel 184"); - add_srs_wkt (p, 2, - "1\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6746\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4746\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",12],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",4500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3397\"]]"); - p = add_epsg_def (filter, first, last, 3398, "epsg", 3398, - "RD/83 / 3-degree Gauss-Kruger zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RD/83 / 3-degree Gauss-Kruger zone 4\",GEOGCS[\""); - add_srs_wkt (p, 1, - "RD/83\",DATUM[\"Rauenberg_Datum_83\",SPHEROID[\"Bessel 1"); - add_srs_wkt (p, 2, - "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6745\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4745\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",12],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",4500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3398\"]]"); - p = add_epsg_def (filter, first, last, 3399, "epsg", 3399, - "RD/83 / 3-degree Gauss-Kruger zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RD/83 / 3-degree Gauss-Kruger zone 5\",GEOGCS[\""); - add_srs_wkt (p, 1, - "RD/83\",DATUM[\"Rauenberg_Datum_83\",SPHEROID[\"Bessel 1"); - add_srs_wkt (p, 2, - "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6745\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4745\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",15],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",5500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3399\"]]"); - p = add_epsg_def (filter, first, last, 3400, "epsg", 3400, - "NAD83 / Alberta 10-TM (Forest)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +"); - add_proj4text (p, 1, - "y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alberta 10-TM (Forest)\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-115],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9992],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"3400\"]]"); - p = add_epsg_def (filter, first, last, 3401, "epsg", 3401, - "NAD83 / Alberta 10-TM (Resource)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alberta 10-TM (Resource)\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",-115],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.9992],PARAMETER[\"false_easting\",0],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"3401\"]]"); - p = add_epsg_def (filter, first, last, 3402, "epsg", 3402, - "NAD83(CSRS) / Alberta 10-TM (Forest)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +"); - add_proj4text (p, 1, - "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / Alberta 10-TM (Forest)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",-115],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",0.9992],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3402\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 3403, "epsg", 3403, - "NAD83(CSRS) / Alberta 10-TM (Resource)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / Alberta 10-TM (Resource)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Referenc"); - add_srs_wkt (p, 2, - "e_System\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"461"); - add_srs_wkt (p, 7, - "7\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",-11"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",0.9992],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3403\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 3404, "epsg", 3404, - "NAD83(HARN) / North Carolina (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); - add_proj4text (p, 1, - "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0="); - add_proj4text (p, 2, - "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / North Carolina (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",36.16666666666666],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",34.33333333333334],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",33.75],PARAMETER[\"central_meridian\",-79"); - add_srs_wkt (p, 11, - "],PARAMETER[\"false_easting\",2000000],PARAMETER[\"false"); - add_srs_wkt (p, 12, - "_northing\",0],UNIT[\"US survey foot\",0.304800609601219"); - add_srs_wkt (p, 13, - "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 14, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"3404\"]]"); - p = add_epsg_def (filter, first, last, 3405, "epsg", 3405, - "VN-2000 / UTM zone 48N"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +ellps=WGS84 +towgs84=-192.873,-39.38"); - add_proj4text (p, 1, - "2,-111.202,-0.00205,-0.0005,0.00335,0.0188 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"VN-2000 / UTM zone 48N\",GEOGCS[\"VN-2000\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Vietnam_2000\",SPHEROID[\"WGS 84\",6378137,298.2572"); - add_srs_wkt (p, 2, - "23563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[-192.873,-39"); - add_srs_wkt (p, 3, - ".382,-111.202,-0.00205,-0.0005,0.00335,0.0188],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6756\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4756\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",105],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST"); - add_srs_wkt (p, 12, - "],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3405\"]]"); - p = add_epsg_def (filter, first, last, 3406, "epsg", 3406, - "VN-2000 / UTM zone 49N"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +ellps=WGS84 +towgs84=-192.873,-39.38"); - add_proj4text (p, 1, - "2,-111.202,-0.00205,-0.0005,0.00335,0.0188 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"VN-2000 / UTM zone 49N\",GEOGCS[\"VN-2000\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Vietnam_2000\",SPHEROID[\"WGS 84\",6378137,298.2572"); - add_srs_wkt (p, 2, - "23563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[-192.873,-39"); - add_srs_wkt (p, 3, - ".382,-111.202,-0.00205,-0.0005,0.00335,0.0188],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6756\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4756\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",111],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST"); - add_srs_wkt (p, 12, - "],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3406\"]]"); - p = add_epsg_def (filter, first, last, 3407, "epsg", 3407, - "Hong Kong 1963 Grid System"); - add_proj4text (p, 0, - "+proj=cass +lat_0=22.31213333333334 +lon_0=114.178555555"); - add_proj4text (p, 1, - "5556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=63"); - add_proj4text (p, 2, - "78293.645208759 +b=6356617.987679838 +to_meter=0.3047972"); - add_proj4text (p, 3, - "654 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Hong Kong 1963 Grid System\",GEOGCS[\"Hong Kong"); - add_srs_wkt (p, 1, - " 1963\",DATUM[\"Hong_Kong_1963\",SPHEROID[\"Clarke 1858\""); - add_srs_wkt (p, 2, - ",6378293.645208759,294.2606763692654,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7007\"]],AUTHORITY[\"EPSG\",\"6738\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4738\"]],PROJECTION[\"Cassini_Soldner\"],PAR"); - add_srs_wkt (p, 7, - "AMETER[\"latitude_of_origin\",22.31213333333334],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",114.1785555555556],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",132033.92],PARAMETER[\"false_northing\",6"); - add_srs_wkt (p, 10, - "2565.96],UNIT[\"Clarke's foot\",0.3047972654,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9005\"]],AXIS[\"Northing\",NORTH],AXIS[\"Eastin"); - add_srs_wkt (p, 12, - "g\",EAST],AUTHORITY[\"EPSG\",\"3407\"]]"); - p = add_epsg_def (filter, first, last, 3408, "epsg", 3408, - "NSIDC EASE-Grid North"); - add_proj4text (p, 0, - "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +"); - add_proj4text (p, 1, - "b=6371228 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NSIDC EASE-Grid North\",GEOGCS[\"Unspecified da"); - add_srs_wkt (p, 1, - "tum based upon the International 1924 Authalic Sphere\","); - add_srs_wkt (p, 2, - "DATUM[\"Not_specified_based_on_International_1924_Authal"); - add_srs_wkt (p, 3, - "ic_Sphere\",SPHEROID[\"International 1924 Authalic Spher"); - add_srs_wkt (p, 4, - "e\",6371228,0,AUTHORITY[\"EPSG\",\"7057\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"6053\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4053\"]],PR"); - add_srs_wkt (p, 8, - "OJECTION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"l"); - add_srs_wkt (p, 9, - "atitude_of_center\",90],PARAMETER[\"longitude_of_center\""); - add_srs_wkt (p, 10, - ",0],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nor"); - add_srs_wkt (p, 11, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 12, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"3408\"]]"); - p = add_epsg_def (filter, first, last, 3409, "epsg", 3409, - "NSIDC EASE-Grid South"); - add_proj4text (p, 0, - "+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 "); - add_proj4text (p, 1, - "+b=6371228 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NSIDC EASE-Grid South\",GEOGCS[\"Unspecified da"); - add_srs_wkt (p, 1, - "tum based upon the International 1924 Authalic Sphere\","); - add_srs_wkt (p, 2, - "DATUM[\"Not_specified_based_on_International_1924_Authal"); - add_srs_wkt (p, 3, - "ic_Sphere\",SPHEROID[\"International 1924 Authalic Spher"); - add_srs_wkt (p, 4, - "e\",6371228,0,AUTHORITY[\"EPSG\",\"7057\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"6053\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4053\"]],PR"); - add_srs_wkt (p, 8, - "OJECTION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"l"); - add_srs_wkt (p, 9, - "atitude_of_center\",-90],PARAMETER[\"longitude_of_center"); - add_srs_wkt (p, 10, - "\",0],PARAMETER[\"false_easting\",0],PARAMETER[\"false_n"); - add_srs_wkt (p, 11, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"3409\"]]"); - p = add_epsg_def (filter, first, last, 3410, "epsg", 3410, - "NSIDC EASE-Grid Global"); - add_proj4text (p, 0, - "+proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +a=6371228 +"); - add_proj4text (p, 1, - "b=6371228 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NSIDC EASE-Grid Global\",GEOGCS[\"Unspecified d"); - add_srs_wkt (p, 1, - "atum based upon the International 1924 Authalic Sphere\""); - add_srs_wkt (p, 2, - ",DATUM[\"Not_specified_based_on_International_1924_Autha"); - add_srs_wkt (p, 3, - "lic_Sphere\",SPHEROID[\"International 1924 Authalic Sphe"); - add_srs_wkt (p, 4, - "re\",6371228,0,AUTHORITY[\"EPSG\",\"7057\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"6053\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4053\"]],PR"); - add_srs_wkt (p, 8, - "OJECTION[\"Cylindrical_Equal_Area\"],PARAMETER[\"standar"); - add_srs_wkt (p, 9, - "d_parallel_1\",30],PARAMETER[\"central_meridian\",0],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3410\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 3411, "epsg", 3411, - "NSIDC Sea Ice Polar Stereographic North"); - add_proj4text (p, 0, - "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 "); - add_proj4text (p, 1, - "+y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NSIDC Sea Ice Polar Stereographic North\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"Unspecified datum based upon the Hughes 1980 ellipso"); - add_srs_wkt (p, 2, - "id\",DATUM[\"Not_specified_based_on_Hughes_1980_ellipsoi"); - add_srs_wkt (p, 3, - "d\",SPHEROID[\"Hughes 1980\",6378273,298.279411123064,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"7058\"]],AUTHORITY[\"EPSG\",\"6054\"]"); - add_srs_wkt (p, 5, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 6, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 7, - "122\"]],AUTHORITY[\"EPSG\",\"4054\"]],PROJECTION[\"Polar"); - add_srs_wkt (p, 8, - "_Stereographic\"],PARAMETER[\"latitude_of_origin\",70],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"central_meridian\",-45],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 10, - "tor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 12, - "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"3411\"]]"); - p = add_epsg_def (filter, first, last, 3412, "epsg", 3412, - "NSIDC Sea Ice Polar Stereographic South"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 "); - add_proj4text (p, 1, - "+y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NSIDC Sea Ice Polar Stereographic South\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"Unspecified datum based upon the Hughes 1980 ellipso"); - add_srs_wkt (p, 2, - "id\",DATUM[\"Not_specified_based_on_Hughes_1980_ellipsoi"); - add_srs_wkt (p, 3, - "d\",SPHEROID[\"Hughes 1980\",6378273,298.279411123064,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"7058\"]],AUTHORITY[\"EPSG\",\"6054\"]"); - add_srs_wkt (p, 5, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 6, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 7, - "122\"]],AUTHORITY[\"EPSG\",\"4054\"]],PROJECTION[\"Polar"); - add_srs_wkt (p, 8, - "_Stereographic\"],PARAMETER[\"latitude_of_origin\",-70],"); - add_srs_wkt (p, 9, - "PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 10, - "or\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 12, - "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"3412\"]]"); - p = add_epsg_def (filter, first, last, 3413, "epsg", 3413, - "WGS 84 / NSIDC Sea Ice Polar Stereographic North"); - add_proj4text (p, 0, - "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 "); - add_proj4text (p, 1, - "+y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / NSIDC Sea Ice Polar Stereographic Nort"); - add_srs_wkt (p, 1, - "h\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS "); - add_srs_wkt (p, 2, - "84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4326\"]],PROJECTION[\"Polar_Stereographic\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",70],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-45],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_"); - add_srs_wkt (p, 9, - "easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 10, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); - add_srs_wkt (p, 11, - "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3413\"]]"); - p = add_epsg_def (filter, first, last, 3414, "epsg", 3414, - "SVY21 / Singapore TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=1.366666666666667 +lon_0=103.83333333"); - add_proj4text (p, 1, - "33333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SVY21 / Singapore TM\",GEOGCS[\"SVY21\",DATUM[\""); - add_srs_wkt (p, 1, - "SVY21\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6757\"]],PR"); - add_srs_wkt (p, 3, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 4, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 5, - "]],AUTHORITY[\"EPSG\",\"4757\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 6, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",1.36666666"); - add_srs_wkt (p, 7, - "6666667],PARAMETER[\"central_meridian\",103.833333333333"); - add_srs_wkt (p, 8, - "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 9, - "ng\",28001.642],PARAMETER[\"false_northing\",38744.572],"); - add_srs_wkt (p, 10, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"3414\"]]"); - p = add_epsg_def (filter, first, last, 3415, "epsg", 3415, - "WGS 72BE / South China Sea Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=18 +lat_2=24 +lat_0=21 +lon_0=114 +x_0="); - add_proj4text (p, 1, - "500000 +y_0=500000 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 2, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / South China Sea Lambert\",GEOGCS[\"W"); - add_srs_wkt (p, 1, - "GS 72BE\",DATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7043\"]],TOWGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EP"); - add_srs_wkt (p, 4, - "SG\",\"6324\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",18],PARAMETER[\"standard_parallel_2\",2"); - add_srs_wkt (p, 9, - "4],PARAMETER[\"latitude_of_origin\",21],PARAMETER[\"cent"); - add_srs_wkt (p, 10, - "ral_meridian\",114],PARAMETER[\"false_easting\",500000],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_northing\",500000],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 13, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3415\"]]"); - p = add_epsg_def (filter, first, last, 3416, "epsg", 3416, - "ETRS89 / Austria Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.3333"); - add_proj4text (p, 1, - "3333333333 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84"); - add_proj4text (p, 2, - "=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / Austria Lambert\",GEOGCS[\"ETRS89\",DA"); - add_srs_wkt (p, 1, - "TUM[\"European_Terrestrial_Reference_System_1989\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 8, - "rallel_1\",49],PARAMETER[\"standard_parallel_2\",46],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"latitude_of_origin\",47.5],PARAMETER[\"central_"); - add_srs_wkt (p, 10, - "meridian\",13.33333333333333],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",400000],PARAMETER[\"false_northing\",400000],UNIT[\"met"); - add_srs_wkt (p, 12, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 13, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3416\"]]"); - p = add_epsg_def (filter, first, last, 3417, "epsg", 3417, - "NAD83 / Iowa North (ft US)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); - add_proj4text (p, 1, - "667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.99"); - add_proj4text (p, 2, - "99898402 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Iowa North (ft US)\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",43.2"); - add_srs_wkt (p, 8, - "6666666666667],PARAMETER[\"standard_parallel_2\",42.0666"); - add_srs_wkt (p, 9, - "6666666667],PARAMETER[\"latitude_of_origin\",41.5],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"central_meridian\",-93.5],PARAMETER[\"false_easti"); - add_srs_wkt (p, 11, - "ng\",4921250],PARAMETER[\"false_northing\",3280833.33330"); - add_srs_wkt (p, 12, - "0001],UNIT[\"US survey foot\",0.3048006096012192,AUTHORI"); - add_srs_wkt (p, 13, - "TY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 14, - "],AUTHORITY[\"EPSG\",\"3417\"]]"); - p = add_epsg_def (filter, first, last, 3418, "epsg", 3418, - "NAD83 / Iowa South (ft US)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); - add_proj4text (p, 1, - "667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +"); - add_proj4text (p, 2, - "datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Iowa South (ft US)\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.7"); - add_srs_wkt (p, 8, - "8333333333333],PARAMETER[\"standard_parallel_2\",40.6166"); - add_srs_wkt (p, 9, - "6666666667],PARAMETER[\"latitude_of_origin\",40],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"central_meridian\",-93.5],PARAMETER[\"false_easting"); - add_srs_wkt (p, 11, - "\",1640416.6667],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 12, - "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"3418\"]]"); - p = add_epsg_def (filter, first, last, 3419, "epsg", 3419, - "NAD83 / Kansas North (ft US)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.9999"); - add_proj4text (p, 2, - "8984 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Kansas North (ft US)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39"); - add_srs_wkt (p, 8, - ".78333333333333],PARAMETER[\"standard_parallel_2\",38.71"); - add_srs_wkt (p, 9, - "666666666667],PARAMETER[\"latitude_of_origin\",38.333333"); - add_srs_wkt (p, 10, - "33333334],PARAMETER[\"central_meridian\",-98],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_easting\",1312333.3333],PARAMETER[\"false_northi"); - add_srs_wkt (p, 12, - "ng\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 14, - "TH],AUTHORITY[\"EPSG\",\"3419\"]]"); - p = add_epsg_def (filter, first, last, 3420, "epsg", 3420, - "NAD83 / Kansas South (ft US)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99"); - add_proj4text (p, 2, - "998984 +y_0=399999.99998984 +datum=NAD83 +units=us-ft +n"); - add_proj4text (p, 3, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Kansas South (ft US)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38"); - add_srs_wkt (p, 8, - ".56666666666667],PARAMETER[\"standard_parallel_2\",37.26"); - add_srs_wkt (p, 9, - "666666666667],PARAMETER[\"latitude_of_origin\",36.666666"); - add_srs_wkt (p, 10, - "66666666],PARAMETER[\"central_meridian\",-98.5],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_easting\",1312333.3333],PARAMETER[\"false_nort"); - add_srs_wkt (p, 12, - "hing\",1312333.3333],UNIT[\"US survey foot\",0.304800609"); - add_srs_wkt (p, 13, - "6012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 14, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3420\"]]"); - p = add_epsg_def (filter, first, last, 3421, "epsg", 3421, - "NAD83 / Nevada East (ft US)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=200000.00001016 +y_0=8000000.000010163 +datum="); - add_proj4text (p, 2, - "NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Nevada East (ft US)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",34.75],PARAME"); - add_srs_wkt (p, 8, - "TER[\"central_meridian\",-115.5833333333333],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",65616"); - add_srs_wkt (p, 10, - "6.6667],PARAMETER[\"false_northing\",26246666.66670001],"); - add_srs_wkt (p, 11, - "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 13, - "ORITY[\"EPSG\",\"3421\"]]"); - p = add_epsg_def (filter, first, last, 3422, "epsg", 3422, - "NAD83 / Nevada Central (ft US)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=500000.00001016 +y_0=6000000 +datum=NAD83 +uni"); - add_proj4text (p, 2, - "ts=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Nevada Central (ft US)\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",34.75],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",-116.6666666666667],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",1"); - add_srs_wkt (p, 10, - "640416.6667],PARAMETER[\"false_northing\",19685000],UNIT"); - add_srs_wkt (p, 11, - "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"3422\"]]"); - p = add_epsg_def (filter, first, last, 3423, "epsg", 3423, - "NAD83 / Nevada West (ft US)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +datum"); - add_proj4text (p, 2, - "=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Nevada West (ft US)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",34.75],PARAME"); - add_srs_wkt (p, 8, - "TER[\"central_meridian\",-118.5833333333333],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",26246"); - add_srs_wkt (p, 10, - "66.6667],PARAMETER[\"false_northing\",13123333.3333],UNI"); - add_srs_wkt (p, 11, - "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); - add_srs_wkt (p, 13, - "TY[\"EPSG\",\"3423\"]]"); - p = add_epsg_def (filter, first, last, 3424, "epsg", 3424, - "NAD83 / New Jersey (ft US)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=150000 +y_0=0 +datum=NAD83 +units=us-ft +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New Jersey (ft US)\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",38.8333333333"); - add_srs_wkt (p, 8, - "3334],PARAMETER[\"central_meridian\",-74.5],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",49212"); - add_srs_wkt (p, 10, - "5],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot"); - add_srs_wkt (p, 11, - "\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS"); - add_srs_wkt (p, 12, - "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3424"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 3425, "epsg", 3425, - "NAD83(HARN) / Iowa North (ft US)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); - add_proj4text (p, 1, - "667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.99"); - add_proj4text (p, 2, - "99898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-f"); - add_proj4text (p, 3, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Iowa North (ft US)\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",43.26666666666667],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",42.06666666666667],PARAMETER[\"latitude"); - add_srs_wkt (p, 10, - "_of_origin\",41.5],PARAMETER[\"central_meridian\",-93.5]"); - add_srs_wkt (p, 11, - ",PARAMETER[\"false_easting\",4921250],PARAMETER[\"false_"); - add_srs_wkt (p, 12, - "northing\",3280833.333300001],UNIT[\"US survey foot\",0."); - add_srs_wkt (p, 13, - "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 14, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3425\"]]"); - p = add_epsg_def (filter, first, last, 3426, "epsg", 3426, - "NAD83(HARN) / Iowa South (ft US)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); - add_proj4text (p, 1, - "667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +"); - add_proj4text (p, 2, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Iowa South (ft US)\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",41.78333333333333],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",40.61666666666667],PARAMETER[\"latitude"); - add_srs_wkt (p, 10, - "_of_origin\",40],PARAMETER[\"central_meridian\",-93.5],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_easting\",1640416.6667],PARAMETER[\"fal"); - add_srs_wkt (p, 12, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 13, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 14, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3426\"]]"); - p = add_epsg_def (filter, first, last, 3427, "epsg", 3427, - "NAD83(HARN) / Kansas North (ft US)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.9999"); - add_proj4text (p, 2, - "8984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=u"); - add_proj4text (p, 3, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Kansas North (ft US)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",39.78333333333333],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",38.71666666666667],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",38.33333333333334],PARAMETER[\"central_me"); - add_srs_wkt (p, 11, - "ridian\",-98],PARAMETER[\"false_easting\",1312333.3333],"); - add_srs_wkt (p, 12, - "PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\","); - add_srs_wkt (p, 13, - "0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 14, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3427\"]"); - add_srs_wkt (p, 15, - "]"); - p = add_epsg_def (filter, first, last, 3428, "epsg", 3428, - "NAD83(HARN) / Kansas South (ft US)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99"); - add_proj4text (p, 2, - "998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,"); - add_proj4text (p, 3, - "0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Kansas South (ft US)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",38.56666666666667],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",37.26666666666667],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",36.66666666666666],PARAMETER[\"central_me"); - add_srs_wkt (p, 11, - "ridian\",-98.5],PARAMETER[\"false_easting\",1312333.3333"); - add_srs_wkt (p, 12, - "],PARAMETER[\"false_northing\",1312333.3333],UNIT[\"US s"); - add_srs_wkt (p, 13, - "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 14, - "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 15, - "G\",\"3428\"]]"); - p = add_epsg_def (filter, first, last, 3429, "epsg", 3429, - "NAD83(HARN) / Nevada East (ft US)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps="); - add_proj4text (p, 2, - "GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Nevada East (ft US)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",34.75],PARAMETER[\"central_meridian\",-115.58"); - add_srs_wkt (p, 9, - "33333333333],PARAMETER[\"scale_factor\",0.9999],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",656166.6667],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",26246666.66670001],UNIT[\"US survey foot\",0.30480"); - add_srs_wkt (p, 12, - "06096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAS"); - add_srs_wkt (p, 13, - "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3429\"]]"); - p = add_epsg_def (filter, first, last, 3430, "epsg", 3430, - "NAD83(HARN) / Nevada Central (ft US)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +tow"); - add_proj4text (p, 2, - "gs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Nevada Central (ft US)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",34.75],PARAMETER[\"central_meridian\",-116"); - add_srs_wkt (p, 9, - ".6666666666667],PARAMETER[\"scale_factor\",0.9999],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",1640416.6667],PARAMETER[\"false_n"); - add_srs_wkt (p, 11, - "orthing\",19685000],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 12, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 13, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3430\"]]"); - p = add_epsg_def (filter, first, last, 3431, "epsg", 3431, - "NAD83(HARN) / Nevada West (ft US)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps"); - add_proj4text (p, 2, - "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Nevada West (ft US)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",34.75],PARAMETER[\"central_meridian\",-118.58"); - add_srs_wkt (p, 9, - "33333333333],PARAMETER[\"scale_factor\",0.9999],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",2624666.6667],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",13123333.3333],UNIT[\"US survey foot\",0.30480060"); - add_srs_wkt (p, 12, - "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); - add_srs_wkt (p, 13, - "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3431\"]]"); - p = add_epsg_def (filter, first, last, 3432, "epsg", 3432, - "NAD83(HARN) / New Jersey (ft US)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New Jersey (ft US)\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",38.83333333333334],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-74.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_easting\",492125],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 11, - "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"3432\"]]"); - p = add_epsg_def (filter, first, last, 3433, "epsg", 3433, - "NAD83 / Arkansas North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.9999"); - add_proj4text (p, 2, - "8984 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Arkansas North (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36"); - add_srs_wkt (p, 8, - ".23333333333333],PARAMETER[\"standard_parallel_2\",34.93"); - add_srs_wkt (p, 9, - "333333333333],PARAMETER[\"latitude_of_origin\",34.333333"); - add_srs_wkt (p, 10, - "33333334],PARAMETER[\"central_meridian\",-92],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_easting\",1312333.3333],PARAMETER[\"false_northi"); - add_srs_wkt (p, 12, - "ng\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 14, - "TH],AUTHORITY[\"EPSG\",\"3433\"]]"); - p = add_epsg_def (filter, first, last, 3434, "epsg", 3434, - "NAD83 / Arkansas South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399"); - add_proj4text (p, 2, - "999.99998984 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Arkansas South (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",34"); - add_srs_wkt (p, 8, - ".76666666666667],PARAMETER[\"standard_parallel_2\",33.3]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"latitude_of_origin\",32.66666666666666],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"central_meridian\",-92],PARAMETER[\"false_easti"); - add_srs_wkt (p, 11, - "ng\",1312333.3333],PARAMETER[\"false_northing\",1312333."); - add_srs_wkt (p, 12, - "3333],UNIT[\"US survey foot\",0.3048006096012192,AUTHORI"); - add_srs_wkt (p, 13, - "TY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 14, - "],AUTHORITY[\"EPSG\",\"3434\"]]"); - p = add_epsg_def (filter, first, last, 3435, "epsg", 3435, - "NAD83 / Illinois East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); - add_proj4text (p, 1, - "333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Illinois East (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",36.66666666"); - add_srs_wkt (p, 8, - "666666],PARAMETER[\"central_meridian\",-88.3333333333333"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",0.999975],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",984250.0000000002],PARAMETER[\"false_northin"); - add_srs_wkt (p, 11, - "g\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 13, - "H],AUTHORITY[\"EPSG\",\"3435\"]]"); - p = add_epsg_def (filter, first, last, 3436, "epsg", 3436, - "NAD83 / Illinois West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +dat"); - add_proj4text (p, 2, - "um=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Illinois West (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",36.66666666"); - add_srs_wkt (p, 8, - "666666],PARAMETER[\"central_meridian\",-90.1666666666666"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",0.999941177],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",2296583.333300001],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 13, - "ORTH],AUTHORITY[\"EPSG\",\"3436\"]]"); - p = add_epsg_def (filter, first, last, 3437, "epsg", 3437, - "NAD83 / New Hampshire (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=300000.0000000001 +y_0=0 +datum=NAD83 +uni"); - add_proj4text (p, 2, - "ts=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New Hampshire (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",42.5],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",-71.66666666666667],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.999966667],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",984250.0000000002],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 11, - "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"3437\"]]"); - p = add_epsg_def (filter, first, last, 3438, "epsg", 3438, - "NAD83 / Rhode Island (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); - add_proj4text (p, 1, - "9999375 +x_0=99999.99998983997 +y_0=0 +datum=NAD83 +unit"); - add_proj4text (p, 2, - "s=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Rhode Island (ftUS)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",41.0833333333"); - add_srs_wkt (p, 8, - "3334],PARAMETER[\"central_meridian\",-71.5],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.99999375],PARAMETER[\"false_easting\",3"); - add_srs_wkt (p, 10, - "28083.3333],PARAMETER[\"false_northing\",0],UNIT[\"US su"); - add_srs_wkt (p, 11, - "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"3438\"]]"); - p = add_epsg_def (filter, first, last, 3439, "epsg", 3439, - "PSD93 / UTM zone 39N"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=clrk80 +towgs84=-180.624,-225."); - add_proj4text (p, 1, - "516,173.919,-0.81,-1.898,8.336,16.7101 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSD93 / UTM zone 39N\",GEOGCS[\"PSD93\",DATUM[\""); - add_srs_wkt (p, 1, - "PDO_Survey_Datum_1993\",SPHEROID[\"Clarke 1880 (RGS)\",6"); - add_srs_wkt (p, 2, - "378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.7101],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6134\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4134\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"343"); - add_srs_wkt (p, 13, - "9\"]]"); - p = add_epsg_def (filter, first, last, 3440, "epsg", 3440, - "PSD93 / UTM zone 40N"); - add_proj4text (p, 0, - "+proj=utm +zone=40 +ellps=clrk80 +towgs84=-180.624,-225."); - add_proj4text (p, 1, - "516,173.919,-0.81,-1.898,8.336,16.7101 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSD93 / UTM zone 40N\",GEOGCS[\"PSD93\",DATUM[\""); - add_srs_wkt (p, 1, - "PDO_Survey_Datum_1993\",SPHEROID[\"Clarke 1880 (RGS)\",6"); - add_srs_wkt (p, 2, - "378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.7101],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6134\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4134\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"344"); - add_srs_wkt (p, 13, - "0\"]]"); - p = add_epsg_def (filter, first, last, 3441, "epsg", 3441, - "NAD83(HARN) / Arkansas North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.9999"); - add_proj4text (p, 2, - "8984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=u"); - add_proj4text (p, 3, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Arkansas North (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",36.23333333333333],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",34.93333333333333],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",34.33333333333334],PARAMETER[\"central_me"); - add_srs_wkt (p, 11, - "ridian\",-92],PARAMETER[\"false_easting\",1312333.3333],"); - add_srs_wkt (p, 12, - "PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\","); - add_srs_wkt (p, 13, - "0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 14, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3441\"]"); - add_srs_wkt (p, 15, - "]"); - p = add_epsg_def (filter, first, last, 3442, "epsg", 3442, - "NAD83(HARN) / Arkansas South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399"); - add_proj4text (p, 2, - "999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 3, - "us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Arkansas South (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",34.76666666666667],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",33.3],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 10, - ",32.66666666666666],PARAMETER[\"central_meridian\",-92],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",1312333.3333],PARAMETER[\"fa"); - add_srs_wkt (p, 12, - "lse_northing\",1312333.3333],UNIT[\"US survey foot\",0.3"); - add_srs_wkt (p, 13, - "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 14, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3442\"]]"); - p = add_epsg_def (filter, first, last, 3443, "epsg", 3443, - "NAD83(HARN) / Illinois East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); - add_proj4text (p, 1, - "333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); - add_proj4text (p, 3, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Illinois East (ftUS)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",36.66666666666666],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",-88.33333333333333],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 10, - "999975],PARAMETER[\"false_easting\",984250.0000000002],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); - add_srs_wkt (p, 12, - ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); - add_srs_wkt (p, 13, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3443\"]]"); - p = add_epsg_def (filter, first, last, 3444, "epsg", 3444, - "NAD83(HARN) / Illinois West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ell"); - add_proj4text (p, 2, - "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Illinois West (ftUS)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",36.66666666666666],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",-90.16666666666667],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 10, - "999941177],PARAMETER[\"false_easting\",2296583.333300001"); - add_srs_wkt (p, 11, - "],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); - add_srs_wkt (p, 12, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3444\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 3445, "epsg", 3445, - "NAD83(HARN) / New Hampshire (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +tow"); - add_proj4text (p, 2, - "gs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / New Hampshire (ftUS)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",42.5],PARAMETER[\"central_meridian\",-71.66"); - add_srs_wkt (p, 9, - "666666666667],PARAMETER[\"scale_factor\",0.999966667],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",984250.0000000002],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 12, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 13, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3445\"]]"); - p = add_epsg_def (filter, first, last, 3446, "epsg", 3446, - "NAD83(HARN) / Rhode Island (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); - add_proj4text (p, 1, - "9999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towg"); - add_proj4text (p, 2, - "s84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Rhode Island (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",41.08333333333334],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-71.5],PARAMETER[\"scale_factor\",0.99999375],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",328083.3333],PARAMETER[\"false_no"); - add_srs_wkt (p, 11, - "rthing\",0],UNIT[\"US survey foot\",0.3048006096012192,A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 13, - ",NORTH],AUTHORITY[\"EPSG\",\"3446\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_14.c b/src/spatialite/src/srsinit/epsg_inlined_14.c deleted file mode 100644 index 7cb8d11..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_14.c +++ /dev/null @@ -1,3862 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_14 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 3447, "epsg", 3447, - "ETRS89 / Belgian Lambert 2005"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666"); - add_proj4text (p, 1, - "666 +lat_0=50.797815 +lon_0=4.359215833333333 +x_0=15032"); - add_proj4text (p, 2, - "8 +y_0=166262 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); - add_proj4text (p, 3, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / Belgian Lambert 2005\",GEOGCS[\"ETRS89"); - add_srs_wkt (p, 1, - "\",DATUM[\"European_Terrestrial_Reference_System_1989\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",49.83333333333334],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",51.16666666666666],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",50.797815],PARAMETER[\"central_meridian\",4.35"); - add_srs_wkt (p, 11, - "9215833333333],PARAMETER[\"false_easting\",150328],PARAM"); - add_srs_wkt (p, 12, - "ETER[\"false_northing\",166262],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 13, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 14, - "],AUTHORITY[\"EPSG\",\"3447\"]]"); - p = add_epsg_def (filter, first, last, 3448, "epsg", 3448, - "JAD2001 / Jamaica Metric Grid"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=750"); - add_proj4text (p, 1, - "000 +y_0=650000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +uni"); - add_proj4text (p, 2, - "ts=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JAD2001 / Jamaica Metric Grid\",GEOGCS[\"JAD200"); - add_srs_wkt (p, 1, - "1\",DATUM[\"Jamaica_2001\",SPHEROID[\"WGS 84\",6378137,2"); - add_srs_wkt (p, 2, - "98.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6758\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 4, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 5, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"4758\"]],PROJECTION[\"Lambert_Conformal_Conic"); - add_srs_wkt (p, 7, - "_1SP\"],PARAMETER[\"latitude_of_origin\",18],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-77],PARAMETER[\"scale_factor\",1],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",750000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",650000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"3448\"]]"); - p = add_epsg_def (filter, first, last, 3449, "epsg", 3449, - "JAD2001 / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JAD2001 / UTM zone 17N\",GEOGCS[\"JAD2001\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Jamaica_2001\",SPHEROID[\"WGS 84\",6378137,298.2572"); - add_srs_wkt (p, 2, - "23563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6758\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4758\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 11, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"3449\"]]"); - p = add_epsg_def (filter, first, last, 3450, "epsg", 3450, - "JAD2001 / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JAD2001 / UTM zone 18N\",GEOGCS[\"JAD2001\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Jamaica_2001\",SPHEROID[\"WGS 84\",6378137,298.2572"); - add_srs_wkt (p, 2, - "23563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6758\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4758\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 11, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"3450\"]]"); - p = add_epsg_def (filter, first, last, 3451, "epsg", 3451, - "NAD83 / Louisiana North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666"); - add_proj4text (p, 1, - "667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Louisiana North (ftUS)\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Co"); - add_srs_wkt (p, 7, - "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); - add_srs_wkt (p, 8, - "2.66666666666666],PARAMETER[\"standard_parallel_2\",31.1"); - add_srs_wkt (p, 9, - "6666666666667],PARAMETER[\"latitude_of_origin\",30.5],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"central_meridian\",-92.5],PARAMETER[\"false_ea"); - add_srs_wkt (p, 11, - "sting\",3280833.333300001],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 12, - "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 14, - "UTHORITY[\"EPSG\",\"3451\"]]"); - p = add_epsg_def (filter, first, last, 3452, "epsg", 3452, - "NAD83 / Louisiana South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91"); - add_proj4text (p, 1, - ".33333333333333 +x_0=999999.9999898402 +y_0=0 +datum=NAD"); - add_proj4text (p, 2, - "83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Louisiana South (ftUS)\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Co"); - add_srs_wkt (p, 7, - "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); - add_srs_wkt (p, 8, - "0.7],PARAMETER[\"standard_parallel_2\",29.3],PARAMETER[\""); - add_srs_wkt (p, 9, - "latitude_of_origin\",28.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 10, - ",-91.33333333333333],PARAMETER[\"false_easting\",3280833"); - add_srs_wkt (p, 11, - ".333300001],PARAMETER[\"false_northing\",0],UNIT[\"US su"); - add_srs_wkt (p, 12, - "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); - add_srs_wkt (p, 13, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 14, - "\",\"3452\"]]"); - p = add_epsg_def (filter, first, last, 3453, "epsg", 3453, - "NAD83 / Louisiana Offshore (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); - add_proj4text (p, 1, - "667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=999999.99"); - add_proj4text (p, 2, - "99898402 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Louisiana Offshore (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",27.83333333333333],PARAMETER[\"standard_parallel_2\",26"); - add_srs_wkt (p, 9, - ".16666666666667],PARAMETER[\"latitude_of_origin\",25.5],"); - add_srs_wkt (p, 10, - "PARAMETER[\"central_meridian\",-91.33333333333333],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_easting\",3280833.333300001],PARAMETER[\"fa"); - add_srs_wkt (p, 12, - "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); - add_srs_wkt (p, 13, - "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 14, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3453\"]]"); - p = add_epsg_def (filter, first, last, 3454, "epsg", 3454, - "NAD83 / South Dakota North (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); - add_proj4text (p, 1, - ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); - add_proj4text (p, 2, - "_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / South Dakota North (ftUS) (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_1\",44.4],PARAMETER[\"standard_parallel_2\",42"); - add_srs_wkt (p, 9, - ".83333333333334],PARAMETER[\"latitude_of_origin\",42.333"); - add_srs_wkt (p, 10, - "33333333334],PARAMETER[\"central_meridian\",-100.3333333"); - add_srs_wkt (p, 11, - "333333],PARAMETER[\"false_easting\",1968500],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 13, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 14, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3454\"]]"); - p = add_epsg_def (filter, first, last, 3455, "epsg", 3455, - "NAD83 / South Dakota South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); - add_proj4text (p, 1, - ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); - add_proj4text (p, 2, - "_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / South Dakota South (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",44.4],PARAMETER[\"standard_parallel_2\",42.833333333333"); - add_srs_wkt (p, 9, - "34],PARAMETER[\"latitude_of_origin\",42.33333333333334],"); - add_srs_wkt (p, 10, - "PARAMETER[\"central_meridian\",-100.3333333333333],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_easting\",1968500],PARAMETER[\"false_northi"); - add_srs_wkt (p, 12, - "ng\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 14, - "TH],AUTHORITY[\"EPSG\",\"3455\"]]"); - p = add_epsg_def (filter, first, last, 3456, "epsg", 3456, - "NAD83(HARN) / Louisiana North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666"); - add_proj4text (p, 1, - "667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); - add_proj4text (p, 3, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Louisiana North (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",32.66666666666666],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",31.16666666666667],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",30.5],PARAMETER[\"central_meridian\",-92."); - add_srs_wkt (p, 11, - "5],PARAMETER[\"false_easting\",3280833.333300001],PARAME"); - add_srs_wkt (p, 12, - "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); - add_srs_wkt (p, 13, - "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 14, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3456\"]]"); - p = add_epsg_def (filter, first, last, 3457, "epsg", 3457, - "NAD83(HARN) / Louisiana South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91"); - add_proj4text (p, 1, - ".33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Louisiana South (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",30.7],PARAMETER[\"standard_paralle"); - add_srs_wkt (p, 9, - "l_2\",29.3],PARAMETER[\"latitude_of_origin\",28.5],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"central_meridian\",-91.33333333333333],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_easting\",3280833.333300001],PARAMETER[\"false_n"); - add_srs_wkt (p, 12, - "orthing\",0],UNIT[\"US survey foot\",0.3048006096012192,"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"3457\"]]"); - p = add_epsg_def (filter, first, last, 3458, "epsg", 3458, - "NAD83(HARN) / South Dakota North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666"); - add_proj4text (p, 1, - "666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_"); - add_proj4text (p, 2, - "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no"); - add_proj4text (p, 3, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / South Dakota North (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_"); - add_srs_wkt (p, 2, - "Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_1\",45.68333333333333],PARAMETER["); - add_srs_wkt (p, 9, - "\"standard_parallel_2\",44.41666666666666],PARAMETER[\"l"); - add_srs_wkt (p, 10, - "atitude_of_origin\",43.83333333333334],PARAMETER[\"centr"); - add_srs_wkt (p, 11, - "al_meridian\",-100],PARAMETER[\"false_easting\",1968500]"); - add_srs_wkt (p, 12, - ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); - add_srs_wkt (p, 13, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 14, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3458\"]"); - add_srs_wkt (p, 15, - "]"); - p = add_epsg_def (filter, first, last, 3459, "epsg", 3459, - "NAD83(HARN) / South Dakota South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); - add_proj4text (p, 1, - ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); - add_proj4text (p, 2, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +n"); - add_proj4text (p, 3, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / South Dakota South (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_"); - add_srs_wkt (p, 2, - "Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_1\",44.4],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 9, - "rallel_2\",42.83333333333334],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 10, - "igin\",42.33333333333334],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 11, - ",-100.3333333333333],PARAMETER[\"false_easting\",1968500"); - add_srs_wkt (p, 12, - "],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); - add_srs_wkt (p, 13, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 14, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3459\"]"); - add_srs_wkt (p, 15, - "]"); - p = add_epsg_def (filter, first, last, 3460, "epsg", 3460, - "Fiji 1986 / Fiji Map Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=200"); - add_proj4text (p, 1, - "0000 +y_0=4000000 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); - add_proj4text (p, 2, - "4,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Fiji 1986 / Fiji Map Grid\",GEOGCS[\"Fiji 1986\""); - add_srs_wkt (p, 1, - ",DATUM[\"Fiji_Geodetic_Datum_1986\",SPHEROID[\"WGS 72\","); - add_srs_wkt (p, 2, - "6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",4.5,0,0,0.554,0.2263],AUTHORITY[\"EPSG\",\"6720\"]],PRI"); - add_srs_wkt (p, 4, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4720\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",-17],PARAME"); - add_srs_wkt (p, 8, - "TER[\"central_meridian\",178.75],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.99985],PARAMETER[\"false_easting\",2000000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",4000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 12, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"3460\"]]"); - p = add_epsg_def (filter, first, last, 3461, "epsg", 3461, - "Dabola 1981 / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-83,"); - add_proj4text (p, 1, - "37,124,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Dabola 1981 / UTM zone 28N\",GEOGCS[\"Dabola 19"); - add_srs_wkt (p, 1, - "81\",DATUM[\"Dabola_1981\",SPHEROID[\"Clarke 1880 (IGN)\""); - add_srs_wkt (p, 2, - ",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-83,37,124,0,0,0,0],AUTHORITY[\"EPSG\",\"6155"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4155\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-15],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"3461\"]]"); - p = add_epsg_def (filter, first, last, 3462, "epsg", 3462, - "Dabola 1981 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-83,"); - add_proj4text (p, 1, - "37,124,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Dabola 1981 / UTM zone 29N\",GEOGCS[\"Dabola 19"); - add_srs_wkt (p, 1, - "81\",DATUM[\"Dabola_1981\",SPHEROID[\"Clarke 1880 (IGN)\""); - add_srs_wkt (p, 2, - ",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-83,37,124,0,0,0,0],AUTHORITY[\"EPSG\",\"6155"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4155\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-9],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"3462\"]]"); - p = add_epsg_def (filter, first, last, 3463, "epsg", 3463, - "NAD83 / Maine CS2000 Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=5"); - add_proj4text (p, 1, - "00000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Maine CS2000 Central\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",43.5],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",-69.125],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.99998],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"3463\"]]"); - p = add_epsg_def (filter, first, last, 3464, "epsg", 3464, - "NAD83(HARN) / Maine CS2000 Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=5"); - add_proj4text (p, 1, - "00000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Maine CS2000 Central\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",43.5],PARAMETER[\"central_meridian\",-69.12"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",0.99998],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); - add_srs_wkt (p, 12, - "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3464\"]]"); - p = add_epsg_def (filter, first, last, 3465, "epsg", 3465, - "NAD83(NSRS2007) / Alabama East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.9"); - add_proj4text (p, 1, - "9996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Alabama East\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",30.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-85.83333333333333],PARAMETER[\"scale_factor\",0.99996]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_easting\",200000],PARAMETER[\"false_n"); - add_srs_wkt (p, 11, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"3465\"]]"); - p = add_epsg_def (filter, first, last, 3466, "epsg", 3466, - "NAD83(NSRS2007) / Alabama West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=6"); - add_proj4text (p, 1, - "00000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Alabama West\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",30],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "87.5],PARAMETER[\"scale_factor\",0.999933333],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",600000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 11, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3466\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 3467, "epsg", 3467, - "NAD83(NSRS2007) / Alaska Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0"); - add_proj4text (p, 1, - "=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); - add_proj4text (p, 2, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Alaska Albers\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"standard_parallel_1\",55],PARAMETER[\"standard_paral"); - add_srs_wkt (p, 9, - "lel_2\",65],PARAMETER[\"latitude_of_center\",50],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"longitude_of_center\",-154],PARAMETER[\"false_easti"); - add_srs_wkt (p, 11, - "ng\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 13, - "\",NORTH],AUTHORITY[\"EPSG\",\"3467\"]]"); - p = add_epsg_def (filter, first, last, 3468, "epsg", 3468, - "NAD83(NSRS2007) / Alaska zone 1"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=32"); - add_proj4text (p, 1, - "3.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +ga"); - add_proj4text (p, 2, - "mma=323.1301023611111 +ellps=GRS80 +towgs84=0,0,0,0,0,0,"); - add_proj4text (p, 3, - "0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Alaska zone 1\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_center\",57],PARAMETER[\"longitude_of_ce"); - add_srs_wkt (p, 9, - "nter\",-133.6666666666667],PARAMETER[\"azimuth\",323.130"); - add_srs_wkt (p, 10, - "1023611111],PARAMETER[\"rectified_grid_angle\",323.13010"); - add_srs_wkt (p, 11, - "23611111],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_easting\",5000000],PARAMETER[\"false_northing\",-5"); - add_srs_wkt (p, 13, - "000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 14, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 15, - "468\"]]"); - p = add_epsg_def (filter, first, last, 3469, "epsg", 3469, - "NAD83(NSRS2007) / Alaska zone 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Alaska zone 2\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "-142],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3469\"]]"); - p = add_epsg_def (filter, first, last, 3470, "epsg", 3470, - "NAD83(NSRS2007) / Alaska zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Alaska zone 3\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "-146],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3470\"]]"); - p = add_epsg_def (filter, first, last, 3471, "epsg", 3471, - "NAD83(NSRS2007) / Alaska zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Alaska zone 4\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "-150],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3471\"]]"); - p = add_epsg_def (filter, first, last, 3472, "epsg", 3472, - "NAD83(NSRS2007) / Alaska zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Alaska zone 5\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "-154],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3472\"]]"); - p = add_epsg_def (filter, first, last, 3473, "epsg", 3473, - "NAD83(NSRS2007) / Alaska zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Alaska zone 6\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "-158],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3473\"]]"); - p = add_epsg_def (filter, first, last, 3474, "epsg", 3474, - "NAD83(NSRS2007) / Alaska zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Alaska zone 7\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "-162],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3474\"]]"); - p = add_epsg_def (filter, first, last, 3475, "epsg", 3475, - "NAD83(NSRS2007) / Alaska zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Alaska zone 8\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "-166],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3475\"]]"); - p = add_epsg_def (filter, first, last, 3476, "epsg", 3476, - "NAD83(NSRS2007) / Alaska zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Alaska zone 9\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "-170],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3476\"]]"); - p = add_epsg_def (filter, first, last, 3477, "epsg", 3477, - "NAD83(NSRS2007) / Alaska zone 10"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333"); - add_proj4text (p, 1, - "334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Alaska zone 10\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",53.83333333333334],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",51.83333333333334],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",51],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 11, - "\",-176],PARAMETER[\"false_easting\",1000000],PARAMETER["); - add_srs_wkt (p, 12, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 14, - "[\"EPSG\",\"3477\"]]"); - p = add_epsg_def (filter, first, last, 3478, "epsg", 3478, - "NAD83(NSRS2007) / Arizona Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Arizona Central\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); - add_srs_wkt (p, 2, - "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",31],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "-111.9166666666667],PARAMETER[\"scale_factor\",0.9999],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_easting\",213360],PARAMETER[\"false_nor"); - add_srs_wkt (p, 11, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 12, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"3478\"]]"); - p = add_epsg_def (filter, first, last, 3479, "epsg", 3479, - "NAD83(NSRS2007) / Arizona Central (ft)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Arizona Central (ft)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",31],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",-111.9166666666667],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 10, - "9999],PARAMETER[\"false_easting\",700000],PARAMETER[\"fa"); - add_srs_wkt (p, 11, - "lse_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"3479\"]]"); - p = add_epsg_def (filter, first, last, 3480, "epsg", 3480, - "NAD83(NSRS2007) / Arizona East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Arizona East\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",31],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "110.1666666666667],PARAMETER[\"scale_factor\",0.9999],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",213360],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3480\"]]"); - p = add_epsg_def (filter, first, last, 3481, "epsg", 3481, - "NAD83(NSRS2007) / Arizona East (ft)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Arizona East (ft)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",31],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 9, - "n\",-110.1666666666667],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 10, - "9],PARAMETER[\"false_easting\",700000],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"3481\"]]"); - p = add_epsg_def (filter, first, last, 3482, "epsg", 3482, - "NAD83(NSRS2007) / Arizona West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); - add_proj4text (p, 1, - "=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Arizona West\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",31],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "113.75],PARAMETER[\"scale_factor\",0.999933333],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",213360],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3482\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 3483, "epsg", 3483, - "NAD83(NSRS2007) / Arizona West (ft)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); - add_proj4text (p, 1, - "=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Arizona West (ft)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",31],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 9, - "n\",-113.75],PARAMETER[\"scale_factor\",0.999933333],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_easting\",700000],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"3483\"]]"); - p = add_epsg_def (filter, first, last, 3484, "epsg", 3484, - "NAD83(NSRS2007) / Arkansas North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Arkansas North\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",36.23333333333333],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",34.93333333333333],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",34.33333333333334],PARAMETER[\"c"); - add_srs_wkt (p, 11, - "entral_meridian\",-92],PARAMETER[\"false_easting\",40000"); - add_srs_wkt (p, 12, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 13, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 14, - "RTH],AUTHORITY[\"EPSG\",\"3484\"]]"); - p = add_epsg_def (filter, first, last, 3485, "epsg", 3485, - "NAD83(NSRS2007) / Arkansas North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.9999"); - add_proj4text (p, 2, - "8984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=u"); - add_proj4text (p, 3, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Arkansas North (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); - add_srs_wkt (p, 3, - "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",36.23333333333333]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",34.93333333333333],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"latitude_of_origin\",34.33333333333334],PARAME"); - add_srs_wkt (p, 11, - "TER[\"central_meridian\",-92],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 12, - ",1312333.3333],PARAMETER[\"false_northing\",0],UNIT[\"US"); - add_srs_wkt (p, 13, - " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 14, - "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 15, - "PSG\",\"3485\"]]"); - p = add_epsg_def (filter, first, last, 3486, "epsg", 3486, - "NAD83(NSRS2007) / Arkansas South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellp"); - add_proj4text (p, 2, - "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Arkansas South\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",34.76666666666667],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",33.3],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 10, - "f_origin\",32.66666666666666],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 11, - "an\",-92],PARAMETER[\"false_easting\",400000],PARAMETER["); - add_srs_wkt (p, 12, - "\"false_northing\",400000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 14, - "HORITY[\"EPSG\",\"3486\"]]"); - p = add_epsg_def (filter, first, last, 3487, "epsg", 3487, - "NAD83(NSRS2007) / Arkansas South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399"); - add_proj4text (p, 2, - "999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 3, - "us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Arkansas South (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); - add_srs_wkt (p, 3, - "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",34.76666666666667]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",33.3],PARAMETER[\"lat"); - add_srs_wkt (p, 10, - "itude_of_origin\",32.66666666666666],PARAMETER[\"central"); - add_srs_wkt (p, 11, - "_meridian\",-92],PARAMETER[\"false_easting\",1312333.333"); - add_srs_wkt (p, 12, - "3],PARAMETER[\"false_northing\",1312333.3333],UNIT[\"US "); - add_srs_wkt (p, 13, - "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 14, - "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 15, - "SG\",\"3487\"]]"); - p = add_epsg_def (filter, first, last, 3488, "epsg", 3488, - "NAD83(NSRS2007) / California Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_"); - add_proj4text (p, 1, - "0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / California Albers\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"standard_parallel_1\",34],PARAMETER[\"standard_p"); - add_srs_wkt (p, 9, - "arallel_2\",40.5],PARAMETER[\"latitude_of_center\",0],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"longitude_of_center\",-120],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "easting\",0],PARAMETER[\"false_northing\",-4000000],UNIT"); - add_srs_wkt (p, 12, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 13, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3488\"]]"); - p = add_epsg_def (filter, first, last, 3489, "epsg", 3489, - "NAD83(NSRS2007) / California zone 1"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); - add_proj4text (p, 1, - "3333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellp"); - add_proj4text (p, 2, - "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / California zone 1\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",41.66666666666666],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",40],PARAMETER[\"latitude_"); - add_srs_wkt (p, 10, - "of_origin\",39.33333333333334],PARAMETER[\"central_merid"); - add_srs_wkt (p, 11, - "ian\",-122],PARAMETER[\"false_easting\",2000000],PARAMET"); - add_srs_wkt (p, 12, - "ER[\"false_northing\",500000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 14, - "AUTHORITY[\"EPSG\",\"3489\"]]"); - p = add_epsg_def (filter, first, last, 3490, "epsg", 3490, - "NAD83(NSRS2007) / California zone 1 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); - add_proj4text (p, 1, - "3333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=5000"); - add_proj4text (p, 2, - "00.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); - add_proj4text (p, 3, - "=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / California zone 1 (ftUS)\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); - add_srs_wkt (p, 2, - "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 3, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",41.6666666666666"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"standard_parallel_2\",40],PARAMETER[\"lat"); - add_srs_wkt (p, 10, - "itude_of_origin\",39.33333333333334],PARAMETER[\"central"); - add_srs_wkt (p, 11, - "_meridian\",-122],PARAMETER[\"false_easting\",6561666.66"); - add_srs_wkt (p, 12, - "7],PARAMETER[\"false_northing\",1640416.667],UNIT[\"US s"); - add_srs_wkt (p, 13, - "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 14, - "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 15, - "G\",\"3490\"]]"); - p = add_epsg_def (filter, first, last, 3491, "epsg", 3491, - "NAD83(NSRS2007) / California zone 2"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); - add_proj4text (p, 1, - "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y"); - add_proj4text (p, 2, - "_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / California zone 2\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",39.83333333333334],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",38.33333333333334],PARAME"); - add_srs_wkt (p, 10, - "TER[\"latitude_of_origin\",37.66666666666666],PARAMETER["); - add_srs_wkt (p, 11, - "\"central_meridian\",-122],PARAMETER[\"false_easting\",2"); - add_srs_wkt (p, 12, - "000000],PARAMETER[\"false_northing\",500000],UNIT[\"metr"); - add_srs_wkt (p, 13, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); - add_srs_wkt (p, 14, - "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3491\"]]"); - p = add_epsg_def (filter, first, last, 3492, "epsg", 3492, - "NAD83(NSRS2007) / California zone 2 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); - add_proj4text (p, 1, - "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.00"); - add_proj4text (p, 2, - "01016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0"); - add_proj4text (p, 3, - ",0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / California zone 2 (ftUS)\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); - add_srs_wkt (p, 2, - "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 3, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",39.8333333333333"); - add_srs_wkt (p, 9, - "4],PARAMETER[\"standard_parallel_2\",38.33333333333334],"); - add_srs_wkt (p, 10, - "PARAMETER[\"latitude_of_origin\",37.66666666666666],PARA"); - add_srs_wkt (p, 11, - "METER[\"central_meridian\",-122],PARAMETER[\"false_easti"); - add_srs_wkt (p, 12, - "ng\",6561666.667],PARAMETER[\"false_northing\",1640416.6"); - add_srs_wkt (p, 13, - "67],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 14, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 15, - "AUTHORITY[\"EPSG\",\"3492\"]]"); - p = add_epsg_def (filter, first, last, 3493, "epsg", 3493, - "NAD83(NSRS2007) / California zone 3"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +"); - add_proj4text (p, 2, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / California zone 3\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",38.43333333333333],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",37.06666666666667],PARAME"); - add_srs_wkt (p, 10, - "TER[\"latitude_of_origin\",36.5],PARAMETER[\"central_mer"); - add_srs_wkt (p, 11, - "idian\",-120.5],PARAMETER[\"false_easting\",2000000],PAR"); - add_srs_wkt (p, 12, - "AMETER[\"false_northing\",500000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 14, - "TH],AUTHORITY[\"EPSG\",\"3493\"]]"); - p = add_epsg_def (filter, first, last, 3494, "epsg", 3494, - "NAD83(NSRS2007) / California zone 3 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0="); - add_proj4text (p, 2, - "500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 3, - "nits=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / California zone 3 (ftUS)\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); - add_srs_wkt (p, 2, - "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 3, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",38.4333333333333"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"standard_parallel_2\",37.06666666666667],"); - add_srs_wkt (p, 10, - "PARAMETER[\"latitude_of_origin\",36.5],PARAMETER[\"centr"); - add_srs_wkt (p, 11, - "al_meridian\",-120.5],PARAMETER[\"false_easting\",656166"); - add_srs_wkt (p, 12, - "6.667],PARAMETER[\"false_northing\",1640416.667],UNIT[\""); - add_srs_wkt (p, 13, - "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 15, - "EPSG\",\"3494\"]]"); - p = add_epsg_def (filter, first, last, 3495, "epsg", 3495, - "NAD83(NSRS2007) / California zone 4"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); - add_proj4text (p, 1, - "4 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +tow"); - add_proj4text (p, 2, - "gs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / California zone 4\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",37.25],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",36],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 10, - "35.33333333333334],PARAMETER[\"central_meridian\",-119],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",2000000],PARAMETER[\"false_n"); - add_srs_wkt (p, 12, - "orthing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"3495\"]]"); - p = add_epsg_def (filter, first, last, 3496, "epsg", 3496, - "NAD83(NSRS2007) / California zone 4 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); - add_proj4text (p, 1, - "4 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.000101600"); - add_proj4text (p, 2, - "1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / California zone 4 (ftUS)\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); - add_srs_wkt (p, 2, - "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 3, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",37.25],PARAMETER"); - add_srs_wkt (p, 9, - "[\"standard_parallel_2\",36],PARAMETER[\"latitude_of_ori"); - add_srs_wkt (p, 10, - "gin\",35.33333333333334],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 11, - "-119],PARAMETER[\"false_easting\",6561666.667],PARAMETER"); - add_srs_wkt (p, 12, - "[\"false_northing\",1640416.667],UNIT[\"US survey foot\""); - add_srs_wkt (p, 13, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 14, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3496\"]"); - add_srs_wkt (p, 15, - "]"); - p = add_epsg_def (filter, first, last, 3497, "epsg", 3497, - "NAD83(NSRS2007) / California zone 5"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +el"); - add_proj4text (p, 2, - "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / California zone 5\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",35.46666666666667],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",34.03333333333333],PARAME"); - add_srs_wkt (p, 10, - "TER[\"latitude_of_origin\",33.5],PARAMETER[\"central_mer"); - add_srs_wkt (p, 11, - "idian\",-118],PARAMETER[\"false_easting\",2000000],PARAM"); - add_srs_wkt (p, 12, - "ETER[\"false_northing\",500000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 13, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 14, - "],AUTHORITY[\"EPSG\",\"3497\"]]"); - p = add_epsg_def (filter, first, last, 3498, "epsg", 3498, - "NAD83(NSRS2007) / California zone 5 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=50"); - add_proj4text (p, 2, - "0000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +uni"); - add_proj4text (p, 3, - "ts=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / California zone 5 (ftUS)\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); - add_srs_wkt (p, 2, - "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 3, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",35.4666666666666"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"standard_parallel_2\",34.03333333333333],"); - add_srs_wkt (p, 10, - "PARAMETER[\"latitude_of_origin\",33.5],PARAMETER[\"centr"); - add_srs_wkt (p, 11, - "al_meridian\",-118],PARAMETER[\"false_easting\",6561666."); - add_srs_wkt (p, 12, - "667],PARAMETER[\"false_northing\",1640416.667],UNIT[\"US"); - add_srs_wkt (p, 13, - " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 14, - "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 15, - "PSG\",\"3498\"]]"); - p = add_epsg_def (filter, first, last, 3499, "epsg", 3499, - "NAD83(NSRS2007) / California zone 6"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000"); - add_proj4text (p, 2, - " +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 3, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / California zone 6\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",33.88333333333333],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",32.78333333333333],PARAME"); - add_srs_wkt (p, 10, - "TER[\"latitude_of_origin\",32.16666666666666],PARAMETER["); - add_srs_wkt (p, 11, - "\"central_meridian\",-116.25],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 12, - ",2000000],PARAMETER[\"false_northing\",500000],UNIT[\"me"); - add_srs_wkt (p, 13, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 14, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3499\"]]"); - p = add_epsg_def (filter, first, last, 3500, "epsg", 3500, - "NAD83(NSRS2007) / California zone 6 (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000"); - add_proj4text (p, 2, - ".0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,"); - add_proj4text (p, 3, - "0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / California zone 6 (ftUS)\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); - add_srs_wkt (p, 2, - "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 3, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",33.8833333333333"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"standard_parallel_2\",32.78333333333333],"); - add_srs_wkt (p, 10, - "PARAMETER[\"latitude_of_origin\",32.16666666666666],PARA"); - add_srs_wkt (p, 11, - "METER[\"central_meridian\",-116.25],PARAMETER[\"false_ea"); - add_srs_wkt (p, 12, - "sting\",6561666.667],PARAMETER[\"false_northing\",164041"); - add_srs_wkt (p, 13, - "6.667],UNIT[\"US survey foot\",0.3048006096012192,AUTHOR"); - add_srs_wkt (p, 14, - "ITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 15, - "H],AUTHORITY[\"EPSG\",\"3500\"]]"); - p = add_epsg_def (filter, first, last, 3501, "epsg", 3501, - "NAD83(NSRS2007) / Colorado Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); - add_proj4text (p, 1, - "3334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +el"); - add_proj4text (p, 2, - "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Colorado Central\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); - add_srs_wkt (p, 2, - "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_1\",39.75],PARAMETER[\"stan"); - add_srs_wkt (p, 9, - "dard_parallel_2\",38.45],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 10, - ",37.83333333333334],PARAMETER[\"central_meridian\",-105."); - add_srs_wkt (p, 11, - "5],PARAMETER[\"false_easting\",914401.8289],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",304800.6096],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 14, - "AUTHORITY[\"EPSG\",\"3501\"]]"); - p = add_epsg_def (filter, first, last, 3502, "epsg", 3502, - "NAD83(NSRS2007) / Colorado Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); - add_proj4text (p, 1, - "3334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.60"); - add_proj4text (p, 2, - "96012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-f"); - add_proj4text (p, 3, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Colorado Central (ftUS)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); - add_srs_wkt (p, 2, - "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); - add_srs_wkt (p, 3, - ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 5, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 6, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",39.75],PARAMETER"); - add_srs_wkt (p, 9, - "[\"standard_parallel_2\",38.45],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 10, - "origin\",37.83333333333334],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 11, - "\",-105.5],PARAMETER[\"false_easting\",3000000],PARAMETE"); - add_srs_wkt (p, 12, - "R[\"false_northing\",1000000],UNIT[\"US survey foot\",0."); - add_srs_wkt (p, 13, - "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 14, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3502\"]]"); - p = add_epsg_def (filter, first, last, 3503, "epsg", 3503, - "NAD83(NSRS2007) / Colorado North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8"); - add_proj4text (p, 2, - "289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 3, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Colorado North\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",40.78333333333333],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",39.71666666666667],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",39.33333333333334],PARAMETER[\"c"); - add_srs_wkt (p, 11, - "entral_meridian\",-105.5],PARAMETER[\"false_easting\",91"); - add_srs_wkt (p, 12, - "4401.8289],PARAMETER[\"false_northing\",304800.6096],UNI"); - add_srs_wkt (p, 13, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 14, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3503\"]]"); - p = add_epsg_def (filter, first, last, 3504, "epsg", 3504, - "NAD83(NSRS2007) / Colorado North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8"); - add_proj4text (p, 2, - "288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0"); - add_proj4text (p, 3, - ",0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Colorado North (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); - add_srs_wkt (p, 3, - "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",40.78333333333333]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",39.71666666666667],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"latitude_of_origin\",39.33333333333334],PARAME"); - add_srs_wkt (p, 11, - "TER[\"central_meridian\",-105.5],PARAMETER[\"false_easti"); - add_srs_wkt (p, 12, - "ng\",3000000],PARAMETER[\"false_northing\",1000000],UNIT"); - add_srs_wkt (p, 13, - "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 15, - "[\"EPSG\",\"3504\"]]"); - p = add_epsg_def (filter, first, last, 3505, "epsg", 3505, - "NAD83(NSRS2007) / Colorado South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); - add_proj4text (p, 1, - "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8"); - add_proj4text (p, 2, - "289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 3, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Colorado South\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",38.43333333333333],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",37.23333333333333],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",36.66666666666666],PARAMETER[\"c"); - add_srs_wkt (p, 11, - "entral_meridian\",-105.5],PARAMETER[\"false_easting\",91"); - add_srs_wkt (p, 12, - "4401.8289],PARAMETER[\"false_northing\",304800.6096],UNI"); - add_srs_wkt (p, 13, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 14, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3505\"]]"); - p = add_epsg_def (filter, first, last, 3506, "epsg", 3506, - "NAD83(NSRS2007) / Colorado South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); - add_proj4text (p, 1, - "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8"); - add_proj4text (p, 2, - "288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0"); - add_proj4text (p, 3, - ",0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Colorado South (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); - add_srs_wkt (p, 3, - "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",38.43333333333333]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",37.23333333333333],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"latitude_of_origin\",36.66666666666666],PARAME"); - add_srs_wkt (p, 11, - "TER[\"central_meridian\",-105.5],PARAMETER[\"false_easti"); - add_srs_wkt (p, 12, - "ng\",3000000],PARAMETER[\"false_northing\",1000000],UNIT"); - add_srs_wkt (p, 13, - "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 15, - "[\"EPSG\",\"3506\"]]"); - p = add_epsg_def (filter, first, last, 3507, "epsg", 3507, - "NAD83(NSRS2007) / Connecticut"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); - add_proj4text (p, 1, - ".83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=1524"); - add_proj4text (p, 2, - "00.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 3, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Connecticut\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); - add_srs_wkt (p, 2, - "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_1\",41.86666666666667],PARAMETER"); - add_srs_wkt (p, 9, - "[\"standard_parallel_2\",41.2],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 10, - "rigin\",40.83333333333334],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 11, - ",-72.75],PARAMETER[\"false_easting\",304800.6096],PARAME"); - add_srs_wkt (p, 12, - "TER[\"false_northing\",152400.3048],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 14, - "ORTH],AUTHORITY[\"EPSG\",\"3507\"]]"); - p = add_epsg_def (filter, first, last, 3508, "epsg", 3508, - "NAD83(NSRS2007) / Connecticut (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); - add_proj4text (p, 1, - ".83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_"); - add_proj4text (p, 2, - "0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); - add_proj4text (p, 3, - "+units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Connecticut (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",41.86666666666667],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",41.2],PARAMETER[\"latitud"); - add_srs_wkt (p, 10, - "e_of_origin\",40.83333333333334],PARAMETER[\"central_mer"); - add_srs_wkt (p, 11, - "idian\",-72.75],PARAMETER[\"false_easting\",1000000],PAR"); - add_srs_wkt (p, 12, - "AMETER[\"false_northing\",500000],UNIT[\"US survey foot\""); - add_srs_wkt (p, 13, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 14, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3508\"]"); - add_srs_wkt (p, 15, - "]"); - p = add_epsg_def (filter, first, last, 3509, "epsg", 3509, - "NAD83(NSRS2007) / Delaware"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); - add_proj4text (p, 1, - "995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Delaware\",GEOGCS[\"NAD83(NSR"); - add_srs_wkt (p, 1, - "S2007)\",DATUM[\"NAD83_National_Spatial_Reference_System"); - add_srs_wkt (p, 2, - "_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",38],PARAMETER[\"central_meridian\",-75.4"); - add_srs_wkt (p, 9, - "1666666666667],PARAMETER[\"scale_factor\",0.999995],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",200000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 12, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "509\"]]"); - p = add_epsg_def (filter, first, last, 3510, "epsg", 3510, - "NAD83(NSRS2007) / Delaware (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); - add_proj4text (p, 1, - "995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Delaware (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); - add_srs_wkt (p, 2, - "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",38],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "-75.41666666666667],PARAMETER[\"scale_factor\",0.999995]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_easting\",656166.667],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 12, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 13, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3510\"]]"); - p = add_epsg_def (filter, first, last, 3511, "epsg", 3511, - "NAD83(NSRS2007) / Florida East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); - add_proj4text (p, 1, - "941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Florida East\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",24.33333333333333],PARAMETER[\"centr"); - add_srs_wkt (p, 9, - "al_meridian\",-81],PARAMETER[\"scale_factor\",0.99994117"); - add_srs_wkt (p, 10, - "7],PARAMETER[\"false_easting\",200000],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 12, - "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"3511\"]]"); - p = add_epsg_def (filter, first, last, 3512, "epsg", 3512, - "NAD83(NSRS2007) / Florida East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); - add_proj4text (p, 1, - "941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs"); - add_proj4text (p, 2, - "84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Florida East (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",24.33333333333333],PARAMETER["); - add_srs_wkt (p, 9, - "\"central_meridian\",-81],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 10, - "99941177],PARAMETER[\"false_easting\",656166.667],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); - add_srs_wkt (p, 12, - "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 13, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3512\"]]"); - p = add_epsg_def (filter, first, last, 3513, "epsg", 3513, - "NAD83(NSRS2007) / Florida GDL Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_"); - add_proj4text (p, 1, - "0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +uni"); - add_proj4text (p, 2, - "ts=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Florida GDL Albers\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"standard_parallel_1\",24],PARAMETER[\"standard_p"); - add_srs_wkt (p, 9, - "arallel_2\",31.5],PARAMETER[\"latitude_of_center\",24],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"longitude_of_center\",-84],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "easting\",400000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 12, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); - add_srs_wkt (p, 13, - ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3513\"]]"); - p = add_epsg_def (filter, first, last, 3514, "epsg", 3514, - "NAD83(NSRS2007) / Florida North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); - add_proj4text (p, 1, - "9 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Florida North\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"standard_parallel_1\",30.75],PARAMETER[\"standar"); - add_srs_wkt (p, 9, - "d_parallel_2\",29.58333333333333],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 10, - "f_origin\",29],PARAMETER[\"central_meridian\",-84.5],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_easting\",600000],PARAMETER[\"false_north"); - add_srs_wkt (p, 12, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 13, - "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "3514\"]]"); - p = add_epsg_def (filter, first, last, 3515, "epsg", 3515, - "NAD83(NSRS2007) / Florida North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); - add_proj4text (p, 1, - "9 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Florida North (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",30.75],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "tandard_parallel_2\",29.58333333333333],PARAMETER[\"lati"); - add_srs_wkt (p, 10, - "tude_of_origin\",29],PARAMETER[\"central_meridian\",-84."); - add_srs_wkt (p, 11, - "5],PARAMETER[\"false_easting\",1968500],PARAMETER[\"fals"); - add_srs_wkt (p, 12, - "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); - add_srs_wkt (p, 13, - "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 14, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"3515\"]]"); - p = add_epsg_def (filter, first, last, 3516, "epsg", 3516, - "NAD83(NSRS2007) / Florida West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); - add_proj4text (p, 1, - "941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Florida West\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",24.33333333333333],PARAMETER[\"centr"); - add_srs_wkt (p, 9, - "al_meridian\",-82],PARAMETER[\"scale_factor\",0.99994117"); - add_srs_wkt (p, 10, - "7],PARAMETER[\"false_easting\",200000],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 12, - "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"3516\"]]"); - p = add_epsg_def (filter, first, last, 3517, "epsg", 3517, - "NAD83(NSRS2007) / Florida West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); - add_proj4text (p, 1, - "941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs"); - add_proj4text (p, 2, - "84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Florida West (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",24.33333333333333],PARAMETER["); - add_srs_wkt (p, 9, - "\"central_meridian\",-82],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 10, - "99941177],PARAMETER[\"false_easting\",656166.667],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); - add_srs_wkt (p, 12, - "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 13, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3517\"]]"); - p = add_epsg_def (filter, first, last, 3518, "epsg", 3518, - "NAD83(NSRS2007) / Georgia East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Georgia East\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",30],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "82.16666666666667],PARAMETER[\"scale_factor\",0.9999],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",200000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3518\"]]"); - p = add_epsg_def (filter, first, last, 3519, "epsg", 3519, - "NAD83(NSRS2007) / Georgia East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,"); - add_proj4text (p, 2, - "0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Georgia East (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",30],PARAMETER[\"central_merid"); - add_srs_wkt (p, 9, - "ian\",-82.16666666666667],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 10, - "999],PARAMETER[\"false_easting\",656166.667],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 12, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 13, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3519\"]]"); - p = add_epsg_def (filter, first, last, 3520, "epsg", 3520, - "NAD83(NSRS2007) / Georgia West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Georgia West\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",30],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "84.16666666666667],PARAMETER[\"scale_factor\",0.9999],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",700000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3520\"]]"); - p = add_epsg_def (filter, first, last, 3521, "epsg", 3521, - "NAD83(NSRS2007) / Georgia West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,"); - add_proj4text (p, 2, - "0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Georgia West (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",30],PARAMETER[\"central_merid"); - add_srs_wkt (p, 9, - "ian\",-84.16666666666667],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 10, - "999],PARAMETER[\"false_easting\",2296583.333],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_northing\",0],UNIT[\"US survey foot\",0.30480060"); - add_srs_wkt (p, 12, - "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); - add_srs_wkt (p, 13, - "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3521\"]]"); - p = add_epsg_def (filter, first, last, 3522, "epsg", 3522, - "NAD83(NSRS2007) / Idaho Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); - add_proj4text (p, 1, - "99473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Idaho Central\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",41.66666666666666],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",-114],PARAMETER[\"scale_factor\",0.999947"); - add_srs_wkt (p, 10, - "368],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 12, - "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"3522\"]]"); - p = add_epsg_def (filter, first, last, 3523, "epsg", 3523, - "NAD83(NSRS2007) / Idaho Central (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); - add_proj4text (p, 1, - "99473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS8"); - add_proj4text (p, 2, - "0 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Idaho Central (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",41.66666666666666],PARAMETER"); - add_srs_wkt (p, 9, - "[\"central_meridian\",-114],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 10, - ".999947368],PARAMETER[\"false_easting\",1640416.667],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); - add_srs_wkt (p, 12, - "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3523\"]]"); - p = add_epsg_def (filter, first, last, 3524, "epsg", 3524, - "NAD83(NSRS2007) / Idaho East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); - add_proj4text (p, 1, - "666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=G"); - add_proj4text (p, 2, - "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Idaho East\",GEOGCS[\"NAD83(N"); - add_srs_wkt (p, 1, - "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); - add_srs_wkt (p, 2, - "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",41.66666666666666],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",-112.1666666666667],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 10, - "\",0.999947368],PARAMETER[\"false_easting\",200000],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"3524\"]]"); - p = add_epsg_def (filter, first, last, 3525, "epsg", 3525, - "NAD83(NSRS2007) / Idaho East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); - add_proj4text (p, 1, - "666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); - add_proj4text (p, 3, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Idaho East (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",41.66666666666666],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",-112.1666666666667],PARAMETER[\"scale"); - add_srs_wkt (p, 10, - "_factor\",0.999947368],PARAMETER[\"false_easting\",65616"); - add_srs_wkt (p, 11, - "6.667],PARAMETER[\"false_northing\",0],UNIT[\"US survey "); - add_srs_wkt (p, 12, - "foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],"); - add_srs_wkt (p, 13, - "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "3525\"]]"); - p = add_epsg_def (filter, first, last, 3526, "epsg", 3526, - "NAD83(NSRS2007) / Idaho West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); - add_proj4text (p, 1, - ".999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 2, - "0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Idaho West\",GEOGCS[\"NAD83(N"); - add_srs_wkt (p, 1, - "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); - add_srs_wkt (p, 2, - "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",41.66666666666666],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",-115.75],PARAMETER[\"scale_factor\",0.999933"); - add_srs_wkt (p, 10, - "333],PARAMETER[\"false_easting\",800000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 12, - "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"3526\"]]"); - p = add_epsg_def (filter, first, last, 3527, "epsg", 3527, - "NAD83(NSRS2007) / Idaho West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); - add_proj4text (p, 1, - ".999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Idaho West (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",41.66666666666666],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",-115.75],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 10, - ".999933333],PARAMETER[\"false_easting\",2624666.667],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); - add_srs_wkt (p, 12, - "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3527\"]]"); - p = add_epsg_def (filter, first, last, 3528, "epsg", 3528, - "NAD83(NSRS2007) / Illinois East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); - add_proj4text (p, 1, - "333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=G"); - add_proj4text (p, 2, - "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Illinois East\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",36.66666666666666],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",-88.33333333333333],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 10, - "tor\",0.999975],PARAMETER[\"false_easting\",300000],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"3528\"]]"); - p = add_epsg_def (filter, first, last, 3529, "epsg", 3529, - "NAD83(NSRS2007) / Illinois East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); - add_proj4text (p, 1, - "333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); - add_proj4text (p, 3, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Illinois East (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",36.66666666666666],PARAMETER"); - add_srs_wkt (p, 9, - "[\"central_meridian\",-88.33333333333333],PARAMETER[\"sc"); - add_srs_wkt (p, 10, - "ale_factor\",0.999975],PARAMETER[\"false_easting\",98425"); - add_srs_wkt (p, 11, - "0.0000000002],PARAMETER[\"false_northing\",0],UNIT[\"US "); - add_srs_wkt (p, 12, - "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 13, - "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 14, - "SG\",\"3529\"]]"); - p = add_epsg_def (filter, first, last, 3530, "epsg", 3530, - "NAD83(NSRS2007) / Illinois West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Illinois West\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",36.66666666666666],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",-90.16666666666667],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 10, - "tor\",0.999941177],PARAMETER[\"false_easting\",700000],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"3530\"]]"); - p = add_epsg_def (filter, first, last, 3531, "epsg", 3531, - "NAD83(NSRS2007) / Illinois West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ell"); - add_proj4text (p, 2, - "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Illinois West (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",36.66666666666666],PARAMETER"); - add_srs_wkt (p, 9, - "[\"central_meridian\",-90.16666666666667],PARAMETER[\"sc"); - add_srs_wkt (p, 10, - "ale_factor\",0.999941177],PARAMETER[\"false_easting\",22"); - add_srs_wkt (p, 11, - "96583.333300001],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 12, - "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"3531\"]]"); - p = add_epsg_def (filter, first, last, 3532, "epsg", 3532, - "NAD83(NSRS2007) / Indiana East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0"); - add_proj4text (p, 2, - ",0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Indiana East\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",37.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-85.66666666666667],PARAMETER[\"scale_factor\",0.999966"); - add_srs_wkt (p, 10, - "667],PARAMETER[\"false_easting\",100000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",250000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"3532\"]]"); - p = add_epsg_def (filter, first, last, 3533, "epsg", 3533, - "NAD83(NSRS2007) / Indiana East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +"); - add_proj4text (p, 2, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Indiana East (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",37.5],PARAMETER[\"central_mer"); - add_srs_wkt (p, 9, - "idian\",-85.66666666666667],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 10, - ".999966667],PARAMETER[\"false_easting\",328083.333],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_northing\",820208.3330000002],UNIT[\"US su"); - add_srs_wkt (p, 12, - "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); - add_srs_wkt (p, 13, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 14, - "\",\"3533\"]]"); - p = add_epsg_def (filter, first, last, 3534, "epsg", 3534, - "NAD83(NSRS2007) / Indiana West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0"); - add_proj4text (p, 2, - ",0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Indiana West\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",37.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-87.08333333333333],PARAMETER[\"scale_factor\",0.999966"); - add_srs_wkt (p, 10, - "667],PARAMETER[\"false_easting\",900000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",250000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"3534\"]]"); - p = add_epsg_def (filter, first, last, 3535, "epsg", 3535, - "NAD83(NSRS2007) / Indiana West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80"); - add_proj4text (p, 2, - " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Indiana West (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",37.5],PARAMETER[\"central_mer"); - add_srs_wkt (p, 9, - "idian\",-87.08333333333333],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 10, - ".999966667],PARAMETER[\"false_easting\",2952750],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_northing\",820208.3330000002],UNIT[\"US surve"); - add_srs_wkt (p, 12, - "y foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]"); - add_srs_wkt (p, 13, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 14, - "\"3535\"]]"); - p = add_epsg_def (filter, first, last, 3536, "epsg", 3536, - "NAD83(NSRS2007) / Iowa North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); - add_proj4text (p, 1, - "667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +"); - add_proj4text (p, 2, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Iowa North\",GEOGCS[\"NAD83(N"); - add_srs_wkt (p, 1, - "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); - add_srs_wkt (p, 2, - "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_1\",43.26666666666667],PARAMETER["); - add_srs_wkt (p, 9, - "\"standard_parallel_2\",42.06666666666667],PARAMETER[\"l"); - add_srs_wkt (p, 10, - "atitude_of_origin\",41.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 11, - ",-93.5],PARAMETER[\"false_easting\",1500000],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 14, - "ORITY[\"EPSG\",\"3536\"]]"); - p = add_epsg_def (filter, first, last, 3537, "epsg", 3537, - "NAD83(NSRS2007) / Iowa North (ft US)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); - add_proj4text (p, 1, - "667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.99"); - add_proj4text (p, 2, - "99898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-f"); - add_proj4text (p, 3, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Iowa North (ft US)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",43.26666666666667],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",42.06666666666667],PARAME"); - add_srs_wkt (p, 10, - "TER[\"latitude_of_origin\",41.5],PARAMETER[\"central_mer"); - add_srs_wkt (p, 11, - "idian\",-93.5],PARAMETER[\"false_easting\",4921250],PARA"); - add_srs_wkt (p, 12, - "METER[\"false_northing\",3280833.333300001],UNIT[\"US su"); - add_srs_wkt (p, 13, - "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); - add_srs_wkt (p, 14, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 15, - "\",\"3537\"]]"); - p = add_epsg_def (filter, first, last, 3538, "epsg", 3538, - "NAD83(NSRS2007) / Iowa South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); - add_proj4text (p, 1, - "667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Iowa South\",GEOGCS[\"NAD83(N"); - add_srs_wkt (p, 1, - "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); - add_srs_wkt (p, 2, - "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_1\",41.78333333333333],PARAMETER["); - add_srs_wkt (p, 9, - "\"standard_parallel_2\",40.61666666666667],PARAMETER[\"l"); - add_srs_wkt (p, 10, - "atitude_of_origin\",40],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 11, - "93.5],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 12, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"3538\"]]"); - p = add_epsg_def (filter, first, last, 3539, "epsg", 3539, - "NAD83(NSRS2007) / Iowa South (ft US)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); - add_proj4text (p, 1, - "667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +"); - add_proj4text (p, 2, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Iowa South (ft US)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",41.78333333333333],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",40.61666666666667],PARAME"); - add_srs_wkt (p, 10, - "TER[\"latitude_of_origin\",40],PARAMETER[\"central_merid"); - add_srs_wkt (p, 11, - "ian\",-93.5],PARAMETER[\"false_easting\",1640416.6667],P"); - add_srs_wkt (p, 12, - "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); - add_srs_wkt (p, 13, - ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); - add_srs_wkt (p, 14, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3539\"]]"); - p = add_epsg_def (filter, first, last, 3540, "epsg", 3540, - "NAD83(NSRS2007) / Kansas North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Kansas North\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_1\",39.78333333333333],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"standard_parallel_2\",38.71666666666667],PARAMETER[\""); - add_srs_wkt (p, 10, - "latitude_of_origin\",38.33333333333334],PARAMETER[\"cent"); - add_srs_wkt (p, 11, - "ral_meridian\",-98],PARAMETER[\"false_easting\",400000],"); - add_srs_wkt (p, 12, - "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 13, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 14, - "],AUTHORITY[\"EPSG\",\"3540\"]]"); - p = add_epsg_def (filter, first, last, 3541, "epsg", 3541, - "NAD83(NSRS2007) / Kansas North (ft US)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.9999"); - add_proj4text (p, 2, - "8984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=u"); - add_proj4text (p, 3, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Kansas North (ft US)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",39.78333333333333],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"standard_parallel_2\",38.71666666666667],PARA"); - add_srs_wkt (p, 10, - "METER[\"latitude_of_origin\",38.33333333333334],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"central_meridian\",-98],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 12, - "1312333.3333],PARAMETER[\"false_northing\",0],UNIT[\"US "); - add_srs_wkt (p, 13, - "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 14, - "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 15, - "SG\",\"3541\"]]"); - p = add_epsg_def (filter, first, last, 3542, "epsg", 3542, - "NAD83(NSRS2007) / Kansas South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y"); - add_proj4text (p, 2, - "_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Kansas South\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_1\",38.56666666666667],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"standard_parallel_2\",37.26666666666667],PARAMETER[\""); - add_srs_wkt (p, 10, - "latitude_of_origin\",36.66666666666666],PARAMETER[\"cent"); - add_srs_wkt (p, 11, - "ral_meridian\",-98.5],PARAMETER[\"false_easting\",400000"); - add_srs_wkt (p, 12, - "],PARAMETER[\"false_northing\",400000],UNIT[\"metre\",1,"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"3542\"]]"); - p = add_epsg_def (filter, first, last, 3543, "epsg", 3543, - "NAD83(NSRS2007) / Kansas South (ft US)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99"); - add_proj4text (p, 2, - "998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,"); - add_proj4text (p, 3, - "0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Kansas South (ft US)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",38.56666666666667],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"standard_parallel_2\",37.26666666666667],PARA"); - add_srs_wkt (p, 10, - "METER[\"latitude_of_origin\",36.66666666666666],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"central_meridian\",-98.5],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 12, - ",1312333.3333],PARAMETER[\"false_northing\",1312333.3333"); - add_srs_wkt (p, 13, - "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 15, - "HORITY[\"EPSG\",\"3543\"]]"); - p = add_epsg_def (filter, first, last, 3544, "epsg", 3544, - "NAD83(NSRS2007) / Kentucky North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); - add_proj4text (p, 1, - "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps="); - add_proj4text (p, 2, - "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Kentucky North\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",37.96666666666667],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",38.96666666666667],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",37.5],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 11, - "an\",-84.25],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 12, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 14, - "RITY[\"EPSG\",\"3544\"]]"); - p = add_epsg_def (filter, first, last, 3545, "epsg", 3545, - "NAD83(NSRS2007) / Kentucky North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); - add_proj4text (p, 1, - "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_"); - add_proj4text (p, 2, - "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no"); - add_proj4text (p, 3, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Kentucky North (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); - add_srs_wkt (p, 3, - "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",37.96666666666667]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",38.96666666666667],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"latitude_of_origin\",37.5],PARAMETER[\"central"); - add_srs_wkt (p, 11, - "_meridian\",-84.25],PARAMETER[\"false_easting\",1640416."); - add_srs_wkt (p, 12, - "667],PARAMETER[\"false_northing\",0],UNIT[\"US survey fo"); - add_srs_wkt (p, 13, - "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); - add_srs_wkt (p, 14, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"35"); - add_srs_wkt (p, 15, - "45\"]]"); - p = add_epsg_def (filter, first, last, 3546, "epsg", 3546, - "NAD83(NSRS2007) / Kentucky Single Zone"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 "); - add_proj4text (p, 2, - "+y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 3, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Kentucky Single Zone\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",37.08333333333334],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"standard_parallel_2\",38.66666666666666],PARA"); - add_srs_wkt (p, 10, - "METER[\"latitude_of_origin\",36.33333333333334],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"central_meridian\",-85.75],PARAMETER[\"false_easting"); - add_srs_wkt (p, 12, - "\",1500000],PARAMETER[\"false_northing\",1000000],UNIT[\""); - add_srs_wkt (p, 13, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); - add_srs_wkt (p, 14, - ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3546\"]]"); - p = add_epsg_def (filter, first, last, 3547, "epsg", 3547, - "NAD83(NSRS2007) / Kentucky Single Zone (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 "); - add_proj4text (p, 2, - "+y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 3, - ",0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Kentucky Single Zone (ftUS)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spati"); - add_srs_wkt (p, 2, - "al_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 3, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 4, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 5, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 6, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 8, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",37.083333333"); - add_srs_wkt (p, 9, - "33334],PARAMETER[\"standard_parallel_2\",38.666666666666"); - add_srs_wkt (p, 10, - "66],PARAMETER[\"latitude_of_origin\",36.33333333333334],"); - add_srs_wkt (p, 11, - "PARAMETER[\"central_meridian\",-85.75],PARAMETER[\"false"); - add_srs_wkt (p, 12, - "_easting\",4921250],PARAMETER[\"false_northing\",3280833"); - add_srs_wkt (p, 13, - ".333],UNIT[\"US survey foot\",0.3048006096012192,AUTHORI"); - add_srs_wkt (p, 14, - "TY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 15, - "],AUTHORITY[\"EPSG\",\"3547\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_15.c b/src/spatialite/src/srsinit/epsg_inlined_15.c deleted file mode 100644 index b31f967..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_15.c +++ /dev/null @@ -1,3828 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_15 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 3548, "epsg", 3548, - "NAD83(NSRS2007) / Kentucky South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +"); - add_proj4text (p, 2, - "y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 3, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Kentucky South\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",37.93333333333333],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",36.73333333333333],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",36.33333333333334],PARAMETER[\"c"); - add_srs_wkt (p, 11, - "entral_meridian\",-85.75],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 12, - "0000],PARAMETER[\"false_northing\",500000],UNIT[\"metre\""); - add_srs_wkt (p, 13, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 14, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"3548\"]]"); - p = add_epsg_def (filter, first, last, 3549, "epsg", 3549, - "NAD83(NSRS2007) / Kentucky South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0"); - add_proj4text (p, 2, - "001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0"); - add_proj4text (p, 3, - ",0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Kentucky South (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); - add_srs_wkt (p, 3, - "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",37.93333333333333]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",36.73333333333333],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"latitude_of_origin\",36.33333333333334],PARAME"); - add_srs_wkt (p, 11, - "TER[\"central_meridian\",-85.75],PARAMETER[\"false_easti"); - add_srs_wkt (p, 12, - "ng\",1640416.667],PARAMETER[\"false_northing\",1640416.6"); - add_srs_wkt (p, 13, - "67],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 14, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 15, - "AUTHORITY[\"EPSG\",\"3549\"]]"); - p = add_epsg_def (filter, first, last, 3550, "epsg", 3550, - "NAD83(NSRS2007) / Louisiana North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666"); - add_proj4text (p, 1, - "667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps="); - add_proj4text (p, 2, - "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Louisiana North\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); - add_srs_wkt (p, 2, - "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",32.66666666666666],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",31.16666666666667],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",30.5],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 11, - "an\",-92.5],PARAMETER[\"false_easting\",1000000],PARAMET"); - add_srs_wkt (p, 12, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 14, - "RITY[\"EPSG\",\"3550\"]]"); - p = add_epsg_def (filter, first, last, 3551, "epsg", 3551, - "NAD83(NSRS2007) / Louisiana North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666"); - add_proj4text (p, 1, - "667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); - add_proj4text (p, 3, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Louisiana North (ftUS)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); - add_srs_wkt (p, 2, - "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); - add_srs_wkt (p, 3, - "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",32.66666666666666]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",31.16666666666667],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"latitude_of_origin\",30.5],PARAMETER[\"central"); - add_srs_wkt (p, 11, - "_meridian\",-92.5],PARAMETER[\"false_easting\",3280833.3"); - add_srs_wkt (p, 12, - "33300001],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); - add_srs_wkt (p, 13, - "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 14, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 15, - ",\"3551\"]]"); - p = add_epsg_def (filter, first, last, 3552, "epsg", 3552, - "NAD83(NSRS2007) / Louisiana South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91"); - add_proj4text (p, 1, - ".33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs8"); - add_proj4text (p, 2, - "4=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Louisiana South\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); - add_srs_wkt (p, 2, - "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",30.7],PARAMETER[\"standar"); - add_srs_wkt (p, 9, - "d_parallel_2\",29.3],PARAMETER[\"latitude_of_origin\",28"); - add_srs_wkt (p, 10, - ".5],PARAMETER[\"central_meridian\",-91.33333333333333],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_easting\",1000000],PARAMETER[\"false_no"); - add_srs_wkt (p, 12, - "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"3552\"]]"); - p = add_epsg_def (filter, first, last, 3553, "epsg", 3553, - "NAD83(NSRS2007) / Louisiana South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91"); - add_proj4text (p, 1, - ".33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Louisiana South (ftUS)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); - add_srs_wkt (p, 2, - "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); - add_srs_wkt (p, 3, - "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",30.7],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",29.3],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 10, - "in\",28.5],PARAMETER[\"central_meridian\",-91.3333333333"); - add_srs_wkt (p, 11, - "3333],PARAMETER[\"false_easting\",3280833.333300001],PAR"); - add_srs_wkt (p, 12, - "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); - add_srs_wkt (p, 13, - "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 14, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3553\"]]"); - p = add_epsg_def (filter, first, last, 3554, "epsg", 3554, - "NAD83(NSRS2007) / Maine CS2000 Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=5"); - add_proj4text (p, 1, - "00000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Maine CS2000 Central\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",43.5],PARAMETER[\"central_me"); - add_srs_wkt (p, 9, - "ridian\",-69.125],PARAMETER[\"scale_factor\",0.99998],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3554\"]]"); - p = add_epsg_def (filter, first, last, 3555, "epsg", 3555, - "NAD83(NSRS2007) / Maine CS2000 East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0"); - add_proj4text (p, 1, - ".99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Maine CS2000 East\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",43.83333333333334],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",-67.875],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 10, - ".99998],PARAMETER[\"false_easting\",700000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"3555\"]]"); - p = add_epsg_def (filter, first, last, 3556, "epsg", 3556, - "NAD83(NSRS2007) / Maine CS2000 West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0"); - add_proj4text (p, 1, - ".99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Maine CS2000 West\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",42.83333333333334],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",-70.375],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 10, - ".99998],PARAMETER[\"false_easting\",300000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"3556\"]]"); - p = add_epsg_def (filter, first, last, 3557, "epsg", 3557, - "NAD83(NSRS2007) / Maine East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Maine East\",GEOGCS[\"NAD83(N"); - add_srs_wkt (p, 1, - "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); - add_srs_wkt (p, 2, - "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",43.66666666666666],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",-68.5],PARAMETER[\"scale_factor\",0.9999],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",300000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3557\"]]"); - p = add_epsg_def (filter, first, last, 3558, "epsg", 3558, - "NAD83(NSRS2007) / Maine West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Maine West\",GEOGCS[\"NAD83(N"); - add_srs_wkt (p, 1, - "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); - add_srs_wkt (p, 2, - "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",42.83333333333334],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",-70.16666666666667],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 10, - "\",0.999966667],PARAMETER[\"false_easting\",900000],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"3558\"]]"); - p = add_epsg_def (filter, first, last, 3559, "epsg", 3559, - "NAD83(NSRS2007) / Maryland"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666"); - add_proj4text (p, 1, - "666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Maryland\",GEOGCS[\"NAD83(NSR"); - add_srs_wkt (p, 1, - "S2007)\",DATUM[\"NAD83_National_Spatial_Reference_System"); - add_srs_wkt (p, 2, - "_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",39.45],PARAMETER[\"standard_par"); - add_srs_wkt (p, 9, - "allel_2\",38.3],PARAMETER[\"latitude_of_origin\",37.6666"); - add_srs_wkt (p, 10, - "6666666666],PARAMETER[\"central_meridian\",-77],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_easting\",400000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 13, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3559\""); - add_srs_wkt (p, 14, - "]]"); - p = add_epsg_def (filter, first, last, 3560, "epsg", 3560, - "NAD83 / Utah North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0"); - add_proj4text (p, 2, - "0001016 +y_0=999999.9999898402 +datum=NAD83 +units=us-ft"); - add_proj4text (p, 3, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Utah North (ftUS)\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.78"); - add_srs_wkt (p, 8, - "333333333333],PARAMETER[\"standard_parallel_2\",40.71666"); - add_srs_wkt (p, 9, - "666666667],PARAMETER[\"latitude_of_origin\",40.333333333"); - add_srs_wkt (p, 10, - "33334],PARAMETER[\"central_meridian\",-111.5],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_easting\",1640416.6667],PARAMETER[\"false_northi"); - add_srs_wkt (p, 12, - "ng\",3280833.333300001],UNIT[\"US survey foot\",0.304800"); - add_srs_wkt (p, 13, - "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); - add_srs_wkt (p, 14, - "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3560\"]]"); - p = add_epsg_def (filter, first, last, 3561, "epsg", 3561, - "Old Hawaiian / Hawaii zone 1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0."); - add_proj4text (p, 1, - "999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +t"); - add_proj4text (p, 2, - "owgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Old Hawaiian / Hawaii zone 1\",GEOGCS[\"Old Haw"); - add_srs_wkt (p, 1, - "aiian\",DATUM[\"Old_Hawaiian\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[61,-285,-181,0,0,0,0],AUTHORITY[\"EPSG\",\"613"); - add_srs_wkt (p, 4, - "5\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4135\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",1"); - add_srs_wkt (p, 8, - "8.83333333333333],PARAMETER[\"central_meridian\",-155.5]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.999966667],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); - add_srs_wkt (p, 13, - "TY[\"EPSG\",\"3561\"]]"); - p = add_epsg_def (filter, first, last, 3562, "epsg", 3562, - "Old Hawaiian / Hawaii zone 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666"); - add_proj4text (p, 1, - "666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ell"); - add_proj4text (p, 2, - "ps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no"); - add_proj4text (p, 3, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Old Hawaiian / Hawaii zone 2\",GEOGCS[\"Old Haw"); - add_srs_wkt (p, 1, - "aiian\",DATUM[\"Old_Hawaiian\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[61,-285,-181,0,0,0,0],AUTHORITY[\"EPSG\",\"613"); - add_srs_wkt (p, 4, - "5\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4135\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",2"); - add_srs_wkt (p, 8, - "0.33333333333333],PARAMETER[\"central_meridian\",-156.66"); - add_srs_wkt (p, 9, - "66666666667],PARAMETER[\"scale_factor\",0.999966667],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 13, - "RTH],AUTHORITY[\"EPSG\",\"3562\"]]"); - p = add_epsg_def (filter, first, last, 3563, "epsg", 3563, - "Old Hawaiian / Hawaii zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99"); - add_proj4text (p, 1, - "999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84"); - add_proj4text (p, 2, - "=61,-285,-181,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Old Hawaiian / Hawaii zone 3\",GEOGCS[\"Old Haw"); - add_srs_wkt (p, 1, - "aiian\",DATUM[\"Old_Hawaiian\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[61,-285,-181,0,0,0,0],AUTHORITY[\"EPSG\",\"613"); - add_srs_wkt (p, 4, - "5\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4135\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",2"); - add_srs_wkt (p, 8, - "1.16666666666667],PARAMETER[\"central_meridian\",-158],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"scale_factor\",0.99999],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"US"); - add_srs_wkt (p, 11, - " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 12, - "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"3563\"]]"); - p = add_epsg_def (filter, first, last, 3564, "epsg", 3564, - "Old Hawaiian / Hawaii zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0."); - add_proj4text (p, 1, - "99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs"); - add_proj4text (p, 2, - "84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Old Hawaiian / Hawaii zone 4\",GEOGCS[\"Old Haw"); - add_srs_wkt (p, 1, - "aiian\",DATUM[\"Old_Hawaiian\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[61,-285,-181,0,0,0,0],AUTHORITY[\"EPSG\",\"613"); - add_srs_wkt (p, 4, - "5\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4135\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",2"); - add_srs_wkt (p, 8, - "1.83333333333333],PARAMETER[\"central_meridian\",-159.5]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.99999],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"3564\"]]"); - p = add_epsg_def (filter, first, last, 3565, "epsg", 3565, - "Old Hawaiian / Hawaii zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 "); - add_proj4text (p, 2, - "+towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Old Hawaiian / Hawaii zone 5\",GEOGCS[\"Old Haw"); - add_srs_wkt (p, 1, - "aiian\",DATUM[\"Old_Hawaiian\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[61,-285,-181,0,0,0,0],AUTHORITY[\"EPSG\",\"613"); - add_srs_wkt (p, 4, - "5\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4135\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",2"); - add_srs_wkt (p, 8, - "1.66666666666667],PARAMETER[\"central_meridian\",-160.16"); - add_srs_wkt (p, 9, - "66666666667],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 11, - "NIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"3565\"]]"); - p = add_epsg_def (filter, first, last, 3566, "epsg", 3566, - "NAD83 / Utah Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); - add_proj4text (p, 1, - "8.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0"); - add_proj4text (p, 2, - "=2000000.00001016 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Utah Central (ftUS)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40.6"); - add_srs_wkt (p, 8, - "5],PARAMETER[\"standard_parallel_2\",39.01666666666667],"); - add_srs_wkt (p, 9, - "PARAMETER[\"latitude_of_origin\",38.33333333333334],PARA"); - add_srs_wkt (p, 10, - "METER[\"central_meridian\",-111.5],PARAMETER[\"false_eas"); - add_srs_wkt (p, 11, - "ting\",1640416.6667],PARAMETER[\"false_northing\",656166"); - add_srs_wkt (p, 12, - "6.666700001],UNIT[\"US survey foot\",0.3048006096012192,"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"3566\"]]"); - p = add_epsg_def (filter, first, last, 3567, "epsg", 3567, - "NAD83 / Utah South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); - add_proj4text (p, 1, - "6.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0"); - add_proj4text (p, 2, - "=3000000 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Utah South (ftUS)\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38.35"); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_2\",37.21666666666667],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"latitude_of_origin\",36.66666666666666],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"central_meridian\",-111.5],PARAMETER[\"false_east"); - add_srs_wkt (p, 11, - "ing\",1640416.6667],PARAMETER[\"false_northing\",9842500"); - add_srs_wkt (p, 12, - ".000000002],UNIT[\"US survey foot\",0.3048006096012192,A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"3567\"]]"); - p = add_epsg_def (filter, first, last, 3568, "epsg", 3568, - "NAD83(HARN) / Utah North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0"); - add_proj4text (p, 2, - "0001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0"); - add_proj4text (p, 3, - ",0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Utah North (ftUS)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",41.78333333333333],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",40.71666666666667],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",40.33333333333334],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 11, - "n\",-111.5],PARAMETER[\"false_easting\",1640416.6667],PA"); - add_srs_wkt (p, 12, - "RAMETER[\"false_northing\",3280833.333300001],UNIT[\"US "); - add_srs_wkt (p, 13, - "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 14, - "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 15, - "SG\",\"3568\"]]"); - p = add_epsg_def (filter, first, last, 3569, "epsg", 3569, - "NAD83(HARN) / Utah Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); - add_proj4text (p, 1, - "8.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0"); - add_proj4text (p, 2, - "=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 3, - "nits=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Utah Central (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",40.65],PARAMETER[\"standard_parallel"); - add_srs_wkt (p, 9, - "_2\",39.01666666666667],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 10, - ",38.33333333333334],PARAMETER[\"central_meridian\",-111."); - add_srs_wkt (p, 11, - "5],PARAMETER[\"false_easting\",1640416.6667],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",6561666.666700001],UNIT[\"US survey foo"); - add_srs_wkt (p, 13, - "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); - add_srs_wkt (p, 14, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"356"); - add_srs_wkt (p, 15, - "9\"]]"); - p = add_epsg_def (filter, first, last, 3570, "epsg", 3570, - "NAD83(HARN) / Utah South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); - add_proj4text (p, 1, - "6.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0"); - add_proj4text (p, 2, - "=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-f"); - add_proj4text (p, 3, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Utah South (ftUS)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",38.35],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",37.21666666666667],PARAMETER[\"latitude_of_origin\",36."); - add_srs_wkt (p, 10, - "66666666666666],PARAMETER[\"central_meridian\",-111.5],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_easting\",1640416.6667],PARAMETER[\"fal"); - add_srs_wkt (p, 12, - "se_northing\",9842500.000000002],UNIT[\"US survey foot\""); - add_srs_wkt (p, 13, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 14, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3570\"]"); - add_srs_wkt (p, 15, - "]"); - p = add_epsg_def (filter, first, last, 3571, "epsg", 3571, - "WGS 84 / North Pole LAEA Bering Sea"); - add_proj4text (p, 0, - "+proj=laea +lat_0=90 +lon_0=180 +x_0=0 +y_0=0 +datum=WGS"); - add_proj4text (p, 1, - "84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / North Pole LAEA Bering Sea\",GEOGCS[\""); - add_srs_wkt (p, 1, - "WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,"); - add_srs_wkt (p, 2, - "298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PR"); - add_srs_wkt (p, 6, - "OJECTION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"l"); - add_srs_wkt (p, 7, - "atitude_of_center\",90],PARAMETER[\"longitude_of_center\""); - add_srs_wkt (p, 8, - ",180],PARAMETER[\"false_easting\",0],PARAMETER[\"false_n"); - add_srs_wkt (p, 9, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 10, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"3571\"]]"); - p = add_epsg_def (filter, first, last, 3572, "epsg", 3572, - "WGS 84 / North Pole LAEA Alaska"); - add_proj4text (p, 0, - "+proj=laea +lat_0=90 +lon_0=-150 +x_0=0 +y_0=0 +datum=WG"); - add_proj4text (p, 1, - "S84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / North Pole LAEA Alaska\",GEOGCS[\"WGS "); - add_srs_wkt (p, 1, - "84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298."); - add_srs_wkt (p, 2, - "257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJEC"); - add_srs_wkt (p, 6, - "TION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_center\",90],PARAMETER[\"longitude_of_center\",-1"); - add_srs_wkt (p, 8, - "50],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nor"); - add_srs_wkt (p, 9, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 10, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"3572\"]]"); - p = add_epsg_def (filter, first, last, 3573, "epsg", 3573, - "WGS 84 / North Pole LAEA Canada"); - add_proj4text (p, 0, - "+proj=laea +lat_0=90 +lon_0=-100 +x_0=0 +y_0=0 +datum=WG"); - add_proj4text (p, 1, - "S84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / North Pole LAEA Canada\",GEOGCS[\"WGS "); - add_srs_wkt (p, 1, - "84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298."); - add_srs_wkt (p, 2, - "257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJEC"); - add_srs_wkt (p, 6, - "TION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_center\",90],PARAMETER[\"longitude_of_center\",-1"); - add_srs_wkt (p, 8, - "00],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nor"); - add_srs_wkt (p, 9, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 10, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"3573\"]]"); - p = add_epsg_def (filter, first, last, 3574, "epsg", 3574, - "WGS 84 / North Pole LAEA Atlantic"); - add_proj4text (p, 0, - "+proj=laea +lat_0=90 +lon_0=-40 +x_0=0 +y_0=0 +datum=WGS"); - add_proj4text (p, 1, - "84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / North Pole LAEA Atlantic\",GEOGCS[\"WG"); - add_srs_wkt (p, 1, - "S 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,29"); - add_srs_wkt (p, 2, - "8.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"lati"); - add_srs_wkt (p, 7, - "tude_of_center\",90],PARAMETER[\"longitude_of_center\",-"); - add_srs_wkt (p, 8, - "40],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nor"); - add_srs_wkt (p, 9, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 10, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"3574\"]]"); - p = add_epsg_def (filter, first, last, 3575, "epsg", 3575, - "WGS 84 / North Pole LAEA Europe"); - add_proj4text (p, 0, - "+proj=laea +lat_0=90 +lon_0=10 +x_0=0 +y_0=0 +datum=WGS8"); - add_proj4text (p, 1, - "4 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / North Pole LAEA Europe\",GEOGCS[\"WGS "); - add_srs_wkt (p, 1, - "84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298."); - add_srs_wkt (p, 2, - "257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJEC"); - add_srs_wkt (p, 6, - "TION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_center\",90],PARAMETER[\"longitude_of_center\",10"); - add_srs_wkt (p, 8, - "],PARAMETER[\"false_easting\",0],PARAMETER[\"false_north"); - add_srs_wkt (p, 9, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 10, - "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "3575\"]]"); - p = add_epsg_def (filter, first, last, 3576, "epsg", 3576, - "WGS 84 / North Pole LAEA Russia"); - add_proj4text (p, 0, - "+proj=laea +lat_0=90 +lon_0=90 +x_0=0 +y_0=0 +datum=WGS8"); - add_proj4text (p, 1, - "4 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / North Pole LAEA Russia\",GEOGCS[\"WGS "); - add_srs_wkt (p, 1, - "84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298."); - add_srs_wkt (p, 2, - "257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJEC"); - add_srs_wkt (p, 6, - "TION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_center\",90],PARAMETER[\"longitude_of_center\",90"); - add_srs_wkt (p, 8, - "],PARAMETER[\"false_easting\",0],PARAMETER[\"false_north"); - add_srs_wkt (p, 9, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 10, - "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "3576\"]]"); - p = add_epsg_def (filter, first, last, 3577, "epsg", 3577, - "GDA94 / Australian Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=132 +x_0"); - add_proj4text (p, 1, - "=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); - add_proj4text (p, 2, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / Australian Albers\",GEOGCS[\"GDA94\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Alber"); - add_srs_wkt (p, 7, - "s_Conic_Equal_Area\"],PARAMETER[\"standard_parallel_1\","); - add_srs_wkt (p, 8, - "-18],PARAMETER[\"standard_parallel_2\",-36],PARAMETER[\""); - add_srs_wkt (p, 9, - "latitude_of_center\",0],PARAMETER[\"longitude_of_center\""); - add_srs_wkt (p, 10, - ",132],PARAMETER[\"false_easting\",0],PARAMETER[\"false_n"); - add_srs_wkt (p, 11, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"3577\"]]"); - p = add_epsg_def (filter, first, last, 3578, "epsg", 3578, - "NAD83 / Yukon Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +"); - add_proj4text (p, 1, - "lon_0=-132.5 +x_0=500000 +y_0=500000 +datum=NAD83 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Yukon Albers\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Albers_Conic_Equal_A"); - add_srs_wkt (p, 7, - "rea\"],PARAMETER[\"standard_parallel_1\",61.666666666666"); - add_srs_wkt (p, 8, - "66],PARAMETER[\"standard_parallel_2\",68],PARAMETER[\"la"); - add_srs_wkt (p, 9, - "titude_of_center\",59],PARAMETER[\"longitude_of_center\""); - add_srs_wkt (p, 10, - ",-132.5],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 13, - ",NORTH],AUTHORITY[\"EPSG\",\"3578\"]]"); - p = add_epsg_def (filter, first, last, 3579, "epsg", 3579, - "NAD83(CSRS) / Yukon Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +"); - add_proj4text (p, 1, - "lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs"); - add_proj4text (p, 2, - "84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / Yukon Albers\",GEOGCS[\"NAD83(CSR"); - add_srs_wkt (p, 1, - "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Albers_Conic_Equal_Area\"],PARAMETER[\"standard_p"); - add_srs_wkt (p, 8, - "arallel_1\",61.66666666666666],PARAMETER[\"standard_para"); - add_srs_wkt (p, 9, - "llel_2\",68],PARAMETER[\"latitude_of_center\",59],PARAME"); - add_srs_wkt (p, 10, - "TER[\"longitude_of_center\",-132.5],PARAMETER[\"false_ea"); - add_srs_wkt (p, 11, - "sting\",500000],PARAMETER[\"false_northing\",500000],UNI"); - add_srs_wkt (p, 12, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 13, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "3579\"]]"); - p = add_epsg_def (filter, first, last, 3580, "epsg", 3580, - "NAD83 / NWT Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0="); - add_proj4text (p, 1, - "0 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / NWT Lambert\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); - add_srs_wkt (p, 7, - "nic_2SP\"],PARAMETER[\"standard_parallel_1\",62],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_2\",70],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 9, - "rigin\",0],PARAMETER[\"central_meridian\",-112],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",0],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 12, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"3580\"]]"); - p = add_epsg_def (filter, first, last, 3581, "epsg", 3581, - "NAD83(CSRS) / NWT Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0="); - add_proj4text (p, 1, - "0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); - add_proj4text (p, 2, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / NWT Lambert\",GEOGCS[\"NAD83(CSRS"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_1\",62],PARAMETER[\"standard_parallel_2\",70],"); - add_srs_wkt (p, 9, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 10, - "meridian\",-112],PARAMETER[\"false_easting\",0],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); - add_srs_wkt (p, 13, - "NORTH],AUTHORITY[\"EPSG\",\"3581\"]]"); - p = add_epsg_def (filter, first, last, 3582, "epsg", 3582, - "NAD83(NSRS2007) / Maryland (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666"); - add_proj4text (p, 1, - "666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS8"); - add_proj4text (p, 2, - "0 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Maryland (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); - add_srs_wkt (p, 2, - "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",39.45],PARAMETER[\"standa"); - add_srs_wkt (p, 9, - "rd_parallel_2\",38.3],PARAMETER[\"latitude_of_origin\",3"); - add_srs_wkt (p, 10, - "7.66666666666666],PARAMETER[\"central_meridian\",-77],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_easting\",1312333.333],PARAMETER[\"false"); - add_srs_wkt (p, 12, - "_northing\",0],UNIT[\"US survey foot\",0.304800609601219"); - add_srs_wkt (p, 13, - "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 14, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"3582\"]]"); - p = add_epsg_def (filter, first, last, 3583, "epsg", 3583, - "NAD83(NSRS2007) / Massachusetts Island"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333"); - add_proj4text (p, 1, - "333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Massachusetts Island\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",41.48333333333333],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"standard_parallel_2\",41.28333333333333],PARA"); - add_srs_wkt (p, 10, - "METER[\"latitude_of_origin\",41],PARAMETER[\"central_mer"); - add_srs_wkt (p, 11, - "idian\",-70.5],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 12, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 14, - "HORITY[\"EPSG\",\"3583\"]]"); - p = add_epsg_def (filter, first, last, 3584, "epsg", 3584, - "NAD83(NSRS2007) / Massachusetts Island (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333"); - add_proj4text (p, 1, - "333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0"); - add_proj4text (p, 2, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_de"); - add_proj4text (p, 3, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Massachusetts Island (ftUS)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spati"); - add_srs_wkt (p, 2, - "al_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 3, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 4, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 5, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 6, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 8, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",41.483333333"); - add_srs_wkt (p, 9, - "33333],PARAMETER[\"standard_parallel_2\",41.283333333333"); - add_srs_wkt (p, 10, - "33],PARAMETER[\"latitude_of_origin\",41],PARAMETER[\"cen"); - add_srs_wkt (p, 11, - "tral_meridian\",-70.5],PARAMETER[\"false_easting\",16404"); - add_srs_wkt (p, 12, - "16.667],PARAMETER[\"false_northing\",0],UNIT[\"US survey"); - add_srs_wkt (p, 13, - " foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]]"); - add_srs_wkt (p, 14, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 15, - "3584\"]]"); - p = add_epsg_def (filter, first, last, 3585, "epsg", 3585, - "NAD83(NSRS2007) / Massachusetts Mainland"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellp"); - add_proj4text (p, 2, - "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Massachusetts Mainland\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); - add_srs_wkt (p, 2, - "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); - add_srs_wkt (p, 3, - "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",42.68333333333333]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",41.71666666666667],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"latitude_of_origin\",41],PARAMETER[\"central_m"); - add_srs_wkt (p, 11, - "eridian\",-71.5],PARAMETER[\"false_easting\",200000],PAR"); - add_srs_wkt (p, 12, - "AMETER[\"false_northing\",750000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 14, - "TH],AUTHORITY[\"EPSG\",\"3585\"]]"); - p = add_epsg_def (filter, first, last, 3586, "epsg", 3586, - "NAD83(NSRS2007) / Massachusetts Mainland (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=7"); - add_proj4text (p, 2, - "50000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Massachusetts Mainland (ftUS)"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spa"); - add_srs_wkt (p, 2, - "tial_Reference_System_2007\",SPHEROID[\"GRS 1980\",63781"); - add_srs_wkt (p, 3, - "37,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0"); - add_srs_wkt (p, 4, - ",0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 5, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_C"); - add_srs_wkt (p, 8, - "onic_2SP\"],PARAMETER[\"standard_parallel_1\",42.6833333"); - add_srs_wkt (p, 9, - "3333333],PARAMETER[\"standard_parallel_2\",41.7166666666"); - add_srs_wkt (p, 10, - "6667],PARAMETER[\"latitude_of_origin\",41],PARAMETER[\"c"); - add_srs_wkt (p, 11, - "entral_meridian\",-71.5],PARAMETER[\"false_easting\",656"); - add_srs_wkt (p, 12, - "166.667],PARAMETER[\"false_northing\",2460625],UNIT[\"US"); - add_srs_wkt (p, 13, - " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 14, - "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 15, - "PSG\",\"3586\"]]"); - p = add_epsg_def (filter, first, last, 3587, "epsg", 3587, - "NAD83(NSRS2007) / Michigan Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43"); - add_proj4text (p, 1, - ".31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +"); - add_proj4text (p, 2, - "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Michigan Central\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); - add_srs_wkt (p, 2, - "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_1\",45.7],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",44.18333333333333],PARAMETER[\"latitude"); - add_srs_wkt (p, 10, - "_of_origin\",43.31666666666667],PARAMETER[\"central_meri"); - add_srs_wkt (p, 11, - "dian\",-84.36666666666666],PARAMETER[\"false_easting\",6"); - add_srs_wkt (p, 12, - "000000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 14, - "\",NORTH],AUTHORITY[\"EPSG\",\"3587\"]]"); - p = add_epsg_def (filter, first, last, 3588, "epsg", 3588, - "NAD83(NSRS2007) / Michigan Central (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43"); - add_proj4text (p, 1, - ".31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.9"); - add_proj4text (p, 2, - "99976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +uni"); - add_proj4text (p, 3, - "ts=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Michigan Central (ft)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); - add_srs_wkt (p, 3, - "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",45.7],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",44.18333333333333],PARAMETER[\"lat"); - add_srs_wkt (p, 10, - "itude_of_origin\",43.31666666666667],PARAMETER[\"central"); - add_srs_wkt (p, 11, - "_meridian\",-84.36666666666666],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 12, - "g\",19685039.37],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 13, - "foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 14, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3588\"]]"); - p = add_epsg_def (filter, first, last, 3589, "epsg", 3589, - "NAD83(NSRS2007) / Michigan North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_"); - add_proj4text (p, 2, - "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 3, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Michigan North\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",47.08333333333334],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",45.48333333333333],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",44.78333333333333],PARAMETER[\"c"); - add_srs_wkt (p, 11, - "entral_meridian\",-87],PARAMETER[\"false_easting\",80000"); - add_srs_wkt (p, 12, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 14, - "ORTH],AUTHORITY[\"EPSG\",\"3589\"]]"); - p = add_epsg_def (filter, first, last, 3590, "epsg", 3590, - "NAD83(NSRS2007) / Michigan North (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999"); - add_proj4text (p, 2, - "968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); - add_proj4text (p, 3, - "=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Michigan North (ft)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",47.08333333333334],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"standard_parallel_2\",45.48333333333333],PARA"); - add_srs_wkt (p, 10, - "METER[\"latitude_of_origin\",44.78333333333333],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"central_meridian\",-87],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 12, - "26246719.16],PARAMETER[\"false_northing\",0],UNIT[\"foot"); - add_srs_wkt (p, 13, - "\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST]"); - add_srs_wkt (p, 14, - ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3590\"]]"); - p = add_epsg_def (filter, first, last, 3591, "epsg", 3591, - "NAD83(NSRS2007) / Michigan Oblique Mercator"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=33"); - add_proj4text (p, 1, - "7.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +ga"); - add_proj4text (p, 2, - "mma=337.25556 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); - add_proj4text (p, 3, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Michigan Oblique Mercator\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial"); - add_srs_wkt (p, 2, - "_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,2"); - add_srs_wkt (p, 3, - "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); - add_srs_wkt (p, 4, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4759\"]],PROJECTION[\"Hotine_Oblique_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_center\",45.30916666666666],"); - add_srs_wkt (p, 9, - "PARAMETER[\"longitude_of_center\",-86],PARAMETER[\"azimu"); - add_srs_wkt (p, 10, - "th\",337.25556],PARAMETER[\"rectified_grid_angle\",337.2"); - add_srs_wkt (p, 11, - "5556],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 12, - "se_easting\",2546731.496],PARAMETER[\"false_northing\",-"); - add_srs_wkt (p, 13, - "4354009.816],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 14, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 15, - ",\"3591\"]]"); - p = add_epsg_def (filter, first, last, 3592, "epsg", 3592, - "NAD83(NSRS2007) / Michigan South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41"); - add_proj4text (p, 1, - ".5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps="); - add_proj4text (p, 2, - "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Michigan South\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",43.66666666666666],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",42.1],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 10, - "f_origin\",41.5],PARAMETER[\"central_meridian\",-84.3666"); - add_srs_wkt (p, 11, - "6666666666],PARAMETER[\"false_easting\",4000000],PARAMET"); - add_srs_wkt (p, 12, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 14, - "RITY[\"EPSG\",\"3592\"]]"); - p = add_epsg_def (filter, first, last, 3593, "epsg", 3593, - "NAD83(NSRS2007) / Michigan South (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41"); - add_proj4text (p, 1, - ".5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 "); - add_proj4text (p, 2, - "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Michigan South (ft)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",43.66666666666666],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"standard_parallel_2\",42.1],PARAMETER[\"latit"); - add_srs_wkt (p, 10, - "ude_of_origin\",41.5],PARAMETER[\"central_meridian\",-84"); - add_srs_wkt (p, 11, - ".36666666666666],PARAMETER[\"false_easting\",13123359.58"); - add_srs_wkt (p, 12, - "],PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"3593\"]]"); - p = add_epsg_def (filter, first, last, 3594, "epsg", 3594, - "NAD83(NSRS2007) / Minnesota Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); - add_proj4text (p, 1, - "5 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +to"); - add_proj4text (p, 2, - "wgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Minnesota Central\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",47.05],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",45.61666666666667],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",45],PARAMETER[\"central_meridian\",-94.25"); - add_srs_wkt (p, 11, - "],PARAMETER[\"false_easting\",800000],PARAMETER[\"false_"); - add_srs_wkt (p, 12, - "northing\",100000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"3594\"]]"); - p = add_epsg_def (filter, first, last, 3595, "epsg", 3595, - "NAD83(NSRS2007) / Minnesota North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y"); - add_proj4text (p, 2, - "_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Minnesota North\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); - add_srs_wkt (p, 2, - "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",48.63333333333333],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",47.03333333333333],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",46.5],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 11, - "an\",-93.1],PARAMETER[\"false_easting\",800000],PARAMETE"); - add_srs_wkt (p, 12, - "R[\"false_northing\",100000],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 14, - "UTHORITY[\"EPSG\",\"3595\"]]"); - p = add_epsg_def (filter, first, last, 3596, "epsg", 3596, - "NAD83(NSRS2007) / Minnesota South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps="); - add_proj4text (p, 2, - "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Minnesota South\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); - add_srs_wkt (p, 2, - "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",45.21666666666667],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",43.78333333333333],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",43],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 11, - "\",-94],PARAMETER[\"false_easting\",800000],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",100000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 14, - "RITY[\"EPSG\",\"3596\"]]"); - p = add_epsg_def (filter, first, last, 3597, "epsg", 3597, - "NAD83(NSRS2007) / Mississippi East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9"); - add_proj4text (p, 1, - "9995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Mississippi East\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); - add_srs_wkt (p, 2, - "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",29.5],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-88.83333333333333],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 10, - "995],PARAMETER[\"false_easting\",300000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 12, - "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"3597\"]]"); - p = add_epsg_def (filter, first, last, 3598, "epsg", 3598, - "NAD83(NSRS2007) / Mississippi East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9"); - add_proj4text (p, 1, - "9995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84"); - add_proj4text (p, 2, - "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Mississippi East (ftUS)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); - add_srs_wkt (p, 2, - "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); - add_srs_wkt (p, 3, - ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 5, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 6, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",29.5],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",-88.83333333333333],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 10, - "\",0.99995],PARAMETER[\"false_easting\",984250.000000000"); - add_srs_wkt (p, 11, - "2],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot"); - add_srs_wkt (p, 12, - "\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS"); - add_srs_wkt (p, 13, - "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3598"); - add_srs_wkt (p, 14, - "\"]]"); - p = add_epsg_def (filter, first, last, 3599, "epsg", 3599, - "NAD83(NSRS2007) / Mississippi West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.9"); - add_proj4text (p, 1, - "9995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Mississippi West\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); - add_srs_wkt (p, 2, - "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",29.5],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-90.33333333333333],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 10, - "995],PARAMETER[\"false_easting\",700000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 12, - "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"3599\"]]"); - p = add_epsg_def (filter, first, last, 3600, "epsg", 3600, - "NAD83(NSRS2007) / Mississippi West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.9"); - add_proj4text (p, 1, - "9995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84"); - add_proj4text (p, 2, - "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Mississippi West (ftUS)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); - add_srs_wkt (p, 2, - "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); - add_srs_wkt (p, 3, - ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 5, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 6, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",29.5],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",-90.33333333333333],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 10, - "\",0.99995],PARAMETER[\"false_easting\",2296583.333],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); - add_srs_wkt (p, 12, - "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3600\"]]"); - p = add_epsg_def (filter, first, last, 3601, "epsg", 3601, - "NAD83(NSRS2007) / Missouri Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9"); - add_proj4text (p, 1, - "99933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); - add_proj4text (p, 2, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Missouri Central\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); - add_srs_wkt (p, 2, - "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",35.83333333333334],PARAMETER[\"c"); - add_srs_wkt (p, 9, - "entral_meridian\",-92.5],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 10, - "9933333],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"3601\"]]"); - p = add_epsg_def (filter, first, last, 3602, "epsg", 3602, - "NAD83(NSRS2007) / Missouri East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9"); - add_proj4text (p, 1, - "99933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); - add_proj4text (p, 2, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Missouri East\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",35.83333333333334],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",-90.5],PARAMETER[\"scale_factor\",0.99993"); - add_srs_wkt (p, 10, - "3333],PARAMETER[\"false_easting\",250000],PARAMETER[\"fa"); - add_srs_wkt (p, 11, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"3602\"]]"); - p = add_epsg_def (filter, first, last, 3603, "epsg", 3603, - "NAD83(NSRS2007) / Missouri West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9"); - add_proj4text (p, 1, - "99941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); - add_proj4text (p, 2, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Missouri West\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",36.16666666666666],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",-94.5],PARAMETER[\"scale_factor\",0.99994"); - add_srs_wkt (p, 10, - "1177],PARAMETER[\"false_easting\",850000],PARAMETER[\"fa"); - add_srs_wkt (p, 11, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"3603\"]]"); - p = add_epsg_def (filter, first, last, 3604, "epsg", 3604, - "NAD83(NSRS2007) / Montana"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5"); - add_proj4text (p, 1, - " +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Montana\",GEOGCS[\"NAD83(NSRS"); - add_srs_wkt (p, 1, - "2007)\",DATUM[\"NAD83_National_Spatial_Reference_System_"); - add_srs_wkt (p, 2, - "2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",49],PARAMETER[\"standard_parallel_"); - add_srs_wkt (p, 9, - "2\",45],PARAMETER[\"latitude_of_origin\",44.25],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"central_meridian\",-109.5],PARAMETER[\"false_easting"); - add_srs_wkt (p, 11, - "\",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 12, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"3604\"]]"); - p = add_epsg_def (filter, first, last, 3605, "epsg", 3605, - "NAD83(NSRS2007) / Montana (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5"); - add_proj4text (p, 1, - " +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); - add_proj4text (p, 2, - "0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Montana (ft)\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_1\",49],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 9, - "rallel_2\",45],PARAMETER[\"latitude_of_origin\",44.25],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"central_meridian\",-109.5],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "easting\",1968503.937],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 12, - "NIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3605\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 3606, "epsg", 3606, - "NAD83(NSRS2007) / Nebraska"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); - add_proj4text (p, 1, - "lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 2, - "0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Nebraska\",GEOGCS[\"NAD83(NSR"); - add_srs_wkt (p, 1, - "S2007)\",DATUM[\"NAD83_National_Spatial_Reference_System"); - add_srs_wkt (p, 2, - "_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",43],PARAMETER[\"standard_parall"); - add_srs_wkt (p, 9, - "el_2\",40],PARAMETER[\"latitude_of_origin\",39.833333333"); - add_srs_wkt (p, 10, - "33334],PARAMETER[\"central_meridian\",-100],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3606\"]]"); - p = add_epsg_def (filter, first, last, 3607, "epsg", 3607, - "NAD83(NSRS2007) / Nevada Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 2, - "0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Nevada Central\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",34.75],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",-116.6666666666667],PARAMETER[\"scale_factor\",0.9999"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "northing\",6000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"3607\"]]"); - p = add_epsg_def (filter, first, last, 3608, "epsg", 3608, - "NAD83(NSRS2007) / Nevada Central (ft US)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +tow"); - add_proj4text (p, 2, - "gs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Nevada Central (ft US)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); - add_srs_wkt (p, 2, - "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); - add_srs_wkt (p, 3, - "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"latitude_of_origin\",34.75],PARAMETER[\"central_"); - add_srs_wkt (p, 9, - "meridian\",-116.6666666666667],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 10, - ",0.9999],PARAMETER[\"false_easting\",1640416.6667],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_northing\",19685000],UNIT[\"US survey foot\""); - add_srs_wkt (p, 12, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3608\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 3609, "epsg", 3609, - "NAD83(NSRS2007) / Nevada East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 2, - "0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Nevada East\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); - add_srs_wkt (p, 2, - "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",34.75],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-115.5833333333333],PARAMETER[\"scale_factor\",0.9999],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",200000],PARAMETER[\"false_no"); - add_srs_wkt (p, 11, - "rthing\",8000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"3609\"]]"); - p = add_epsg_def (filter, first, last, 3610, "epsg", 3610, - "NAD83(NSRS2007) / Nevada East (ft US)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps="); - add_proj4text (p, 2, - "GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Nevada East (ft US)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",34.75],PARAMETER[\"central_me"); - add_srs_wkt (p, 9, - "ridian\",-115.5833333333333],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 10, - "0.9999],PARAMETER[\"false_easting\",656166.6667],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_northing\",26246666.66670001],UNIT[\"US surve"); - add_srs_wkt (p, 12, - "y foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]"); - add_srs_wkt (p, 13, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 14, - "\"3610\"]]"); - p = add_epsg_def (filter, first, last, 3611, "epsg", 3611, - "NAD83(NSRS2007) / Nevada West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 2, - "0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Nevada West\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); - add_srs_wkt (p, 2, - "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",34.75],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-118.5833333333333],PARAMETER[\"scale_factor\",0.9999],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",800000],PARAMETER[\"false_no"); - add_srs_wkt (p, 11, - "rthing\",4000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"3611\"]]"); - p = add_epsg_def (filter, first, last, 3612, "epsg", 3612, - "NAD83(NSRS2007) / Nevada West (ft US)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps"); - add_proj4text (p, 2, - "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Nevada West (ft US)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",34.75],PARAMETER[\"central_me"); - add_srs_wkt (p, 9, - "ridian\",-118.5833333333333],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 10, - "0.9999],PARAMETER[\"false_easting\",2624666.6667],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_northing\",13123333.3333],UNIT[\"US survey f"); - add_srs_wkt (p, 12, - "oot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],A"); - add_srs_wkt (p, 13, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 14, - "612\"]]"); - p = add_epsg_def (filter, first, last, 3613, "epsg", 3613, - "NAD83(NSRS2007) / New Hampshire"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); - add_proj4text (p, 2, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New Hampshire\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",42.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-71.66666666666667],PARAMETER[\"scale_factor\",0.999966"); - add_srs_wkt (p, 10, - "667],PARAMETER[\"false_easting\",300000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 12, - "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"3613\"]]"); - p = add_epsg_def (filter, first, last, 3614, "epsg", 3614, - "NAD83(NSRS2007) / New Hampshire (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +tow"); - add_proj4text (p, 2, - "gs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New Hampshire (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",42.5],PARAMETER[\"central_me"); - add_srs_wkt (p, 9, - "ridian\",-71.66666666666667],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 10, - "0.999966667],PARAMETER[\"false_easting\",984250.00000000"); - add_srs_wkt (p, 11, - "02],PARAMETER[\"false_northing\",0],UNIT[\"US survey foo"); - add_srs_wkt (p, 12, - "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); - add_srs_wkt (p, 13, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"361"); - add_srs_wkt (p, 14, - "4\"]]"); - p = add_epsg_def (filter, first, last, 3615, "epsg", 3615, - "NAD83(NSRS2007) / New Jersey"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New Jersey\",GEOGCS[\"NAD83(N"); - add_srs_wkt (p, 1, - "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); - add_srs_wkt (p, 2, - "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",38.83333333333334],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",-74.5],PARAMETER[\"scale_factor\",0.9999],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",150000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3615\"]]"); - p = add_epsg_def (filter, first, last, 3616, "epsg", 3616, - "NAD83(NSRS2007) / New Jersey (ft US)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New Jersey (ft US)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",38.83333333333334],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",-74.5],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 10, - "999],PARAMETER[\"false_easting\",492125],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 12, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 13, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3616\"]]"); - p = add_epsg_def (filter, first, last, 3617, "epsg", 3617, - "NAD83(NSRS2007) / New Mexico Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=5000"); - add_proj4text (p, 1, - "00 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); - add_proj4text (p, 2, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New Mexico Central\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",31],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 9, - "n\",-106.25],PARAMETER[\"scale_factor\",0.9999],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",500000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3617\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 3618, "epsg", 3618, - "NAD83(NSRS2007) / New Mexico Central (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=5000"); - add_proj4text (p, 1, - "00.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New Mexico Central (ftUS)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial"); - add_srs_wkt (p, 2, - "_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,2"); - add_srs_wkt (p, 3, - "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); - add_srs_wkt (p, 4, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",31],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",-106.25],PARAMETER[\"scale_factor\",0.9999],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",1640416.667],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 12, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 13, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3618\"]]"); - p = add_epsg_def (filter, first, last, 3619, "epsg", 3619, - "NAD83(NSRS2007) / New Mexico East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); - add_proj4text (p, 1, - "909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New Mexico East\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); - add_srs_wkt (p, 2, - "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",31],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "-104.3333333333333],PARAMETER[\"scale_factor\",0.9999090"); - add_srs_wkt (p, 10, - "91],PARAMETER[\"false_easting\",165000],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 12, - "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"3619\"]]"); - p = add_epsg_def (filter, first, last, 3620, "epsg", 3620, - "NAD83(NSRS2007) / New Mexico East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); - add_proj4text (p, 1, - "909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New Mexico East (ftUS)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); - add_srs_wkt (p, 2, - "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); - add_srs_wkt (p, 3, - "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"latitude_of_origin\",31],PARAMETER[\"central_mer"); - add_srs_wkt (p, 9, - "idian\",-104.3333333333333],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 10, - ".999909091],PARAMETER[\"false_easting\",541337.5],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); - add_srs_wkt (p, 12, - "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 13, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3620\"]]"); - p = add_epsg_def (filter, first, last, 3621, "epsg", 3621, - "NAD83(NSRS2007) / New Mexico West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); - add_proj4text (p, 1, - "916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New Mexico West\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); - add_srs_wkt (p, 2, - "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",31],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "-107.8333333333333],PARAMETER[\"scale_factor\",0.9999166"); - add_srs_wkt (p, 10, - "67],PARAMETER[\"false_easting\",830000],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 12, - "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"3621\"]]"); - p = add_epsg_def (filter, first, last, 3622, "epsg", 3622, - "NAD83(NSRS2007) / New Mexico West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); - add_proj4text (p, 1, - "916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs"); - add_proj4text (p, 2, - "84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New Mexico West (ftUS)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); - add_srs_wkt (p, 2, - "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); - add_srs_wkt (p, 3, - "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"latitude_of_origin\",31],PARAMETER[\"central_mer"); - add_srs_wkt (p, 9, - "idian\",-107.8333333333333],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 10, - ".999916667],PARAMETER[\"false_easting\",2723091.667],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); - add_srs_wkt (p, 12, - "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3622\"]]"); - p = add_epsg_def (filter, first, last, 3623, "epsg", 3623, - "NAD83(NSRS2007) / New York Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); - add_proj4text (p, 1, - "9375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New York Central\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); - add_srs_wkt (p, 2, - "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",40],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",-76.58333333333333],PARAMETER[\"scale_factor\",0.9999"); - add_srs_wkt (p, 10, - "375],PARAMETER[\"false_easting\",250000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 12, - "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"3623\"]]"); - p = add_epsg_def (filter, first, last, 3624, "epsg", 3624, - "NAD83(NSRS2007) / New York Central (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); - add_proj4text (p, 1, - "9375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84"); - add_proj4text (p, 2, - "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New York Central (ftUS)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); - add_srs_wkt (p, 2, - "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); - add_srs_wkt (p, 3, - ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 5, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 6, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",40],PARAMETER[\"central_m"); - add_srs_wkt (p, 9, - "eridian\",-76.58333333333333],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 10, - ",0.9999375],PARAMETER[\"false_easting\",820208.333000000"); - add_srs_wkt (p, 11, - "2],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot"); - add_srs_wkt (p, 12, - "\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS"); - add_srs_wkt (p, 13, - "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3624"); - add_srs_wkt (p, 14, - "\"]]"); - p = add_epsg_def (filter, first, last, 3625, "epsg", 3625, - "NAD83(NSRS2007) / New York East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New York East\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",38.83333333333334],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",-74.5],PARAMETER[\"scale_factor\",0.9999]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_easting\",150000],PARAMETER[\"false_n"); - add_srs_wkt (p, 11, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"3625\"]]"); - p = add_epsg_def (filter, first, last, 3626, "epsg", 3626, - "NAD83(NSRS2007) / New York East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New York East (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",38.83333333333334],PARAMETER"); - add_srs_wkt (p, 9, - "[\"central_meridian\",-74.5],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 10, - "0.9999],PARAMETER[\"false_easting\",492125],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 12, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 13, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3626\"]]"); - p = add_epsg_def (filter, first, last, 3627, "epsg", 3627, - "NAD83(NSRS2007) / New York Long Island"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New York Long Island\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",41.03333333333333],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"standard_parallel_2\",40.66666666666666],PARA"); - add_srs_wkt (p, 10, - "METER[\"latitude_of_origin\",40.16666666666666],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"central_meridian\",-74],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 12, - "300000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 14, - "\",NORTH],AUTHORITY[\"EPSG\",\"3627\"]]"); - p = add_epsg_def (filter, first, last, 3628, "epsg", 3628, - "NAD83(NSRS2007) / New York Long Island (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000"); - add_proj4text (p, 2, - "000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); - add_proj4text (p, 3, - "=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New York Long Island (ftUS)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spati"); - add_srs_wkt (p, 2, - "al_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 3, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 4, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 5, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 6, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 8, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",41.033333333"); - add_srs_wkt (p, 9, - "33333],PARAMETER[\"standard_parallel_2\",40.666666666666"); - add_srs_wkt (p, 10, - "66],PARAMETER[\"latitude_of_origin\",40.16666666666666],"); - add_srs_wkt (p, 11, - "PARAMETER[\"central_meridian\",-74],PARAMETER[\"false_ea"); - add_srs_wkt (p, 12, - "sting\",984250.0000000002],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 13, - "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); - add_srs_wkt (p, 14, - "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 15, - "UTHORITY[\"EPSG\",\"3628\"]]"); - p = add_epsg_def (filter, first, last, 3629, "epsg", 3629, - "NAD83(NSRS2007) / New York West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); - add_proj4text (p, 1, - "9375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New York West\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",40],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "-78.58333333333333],PARAMETER[\"scale_factor\",0.9999375"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_easting\",350000],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"3629\"]]"); - p = add_epsg_def (filter, first, last, 3630, "epsg", 3630, - "NAD83(NSRS2007) / New York West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); - add_proj4text (p, 1, - "9375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84"); - add_proj4text (p, 2, - "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / New York West (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",40],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",-78.58333333333333],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 10, - "9999375],PARAMETER[\"false_easting\",1148291.667],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); - add_srs_wkt (p, 12, - "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 13, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3630\"]]"); - p = add_epsg_def (filter, first, last, 3631, "epsg", 3631, - "NAD83(NSRS2007) / North Carolina"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); - add_proj4text (p, 1, - "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps"); - add_proj4text (p, 2, - "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / North Carolina\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",36.16666666666666],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",34.33333333333334],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",33.75],PARAMETER[\"central_merid"); - add_srs_wkt (p, 11, - "ian\",-79],PARAMETER[\"false_easting\",609601.22],PARAME"); - add_srs_wkt (p, 12, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 14, - "ORITY[\"EPSG\",\"3631\"]]"); - p = add_epsg_def (filter, first, last, 3632, "epsg", 3632, - "NAD83(NSRS2007) / North Carolina (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); - add_proj4text (p, 1, - "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0="); - add_proj4text (p, 2, - "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / North Carolina (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); - add_srs_wkt (p, 3, - "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",36.16666666666666]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",34.33333333333334],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"latitude_of_origin\",33.75],PARAMETER[\"centra"); - add_srs_wkt (p, 11, - "l_meridian\",-79],PARAMETER[\"false_easting\",2000000],P"); - add_srs_wkt (p, 12, - "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); - add_srs_wkt (p, 13, - ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); - add_srs_wkt (p, 14, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3632\"]]"); - p = add_epsg_def (filter, first, last, 3633, "epsg", 3633, - "NAD83(NSRS2007) / North Dakota North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333"); - add_proj4text (p, 1, - "333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GR"); - add_proj4text (p, 2, - "S80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / North Dakota North\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",48.73333333333333],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",47.43333333333333],PARAME"); - add_srs_wkt (p, 10, - "TER[\"latitude_of_origin\",47],PARAMETER[\"central_merid"); - add_srs_wkt (p, 11, - "ian\",-100.5],PARAMETER[\"false_easting\",600000],PARAME"); - add_srs_wkt (p, 12, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 14, - "ORITY[\"EPSG\",\"3633\"]]"); - p = add_epsg_def (filter, first, last, 3634, "epsg", 3634, - "NAD83(NSRS2007) / North Dakota North (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333"); - add_proj4text (p, 1, - "333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +"); - add_proj4text (p, 2, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / North Dakota North (ft)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); - add_srs_wkt (p, 2, - "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); - add_srs_wkt (p, 3, - ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 5, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 6, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",48.7333333333333"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"standard_parallel_2\",47.43333333333333],"); - add_srs_wkt (p, 10, - "PARAMETER[\"latitude_of_origin\",47],PARAMETER[\"central"); - add_srs_wkt (p, 11, - "_meridian\",-100.5],PARAMETER[\"false_easting\",1968503."); - add_srs_wkt (p, 12, - "937],PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.304"); - add_srs_wkt (p, 13, - "8,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 14, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"3634\"]]"); - p = add_epsg_def (filter, first, last, 3635, "epsg", 3635, - "NAD83(NSRS2007) / North Dakota South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333"); - add_proj4text (p, 1, - "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +"); - add_proj4text (p, 2, - "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / North Dakota South\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",47.48333333333333],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",46.18333333333333],PARAME"); - add_srs_wkt (p, 10, - "TER[\"latitude_of_origin\",45.66666666666666],PARAMETER["); - add_srs_wkt (p, 11, - "\"central_meridian\",-100.5],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 12, - ",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 13, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 14, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"3635\"]]"); - p = add_epsg_def (filter, first, last, 3636, "epsg", 3636, - "NAD83(NSRS2007) / North Dakota South (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333"); - add_proj4text (p, 1, - "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9"); - add_proj4text (p, 2, - "999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); - add_proj4text (p, 3, - "=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / North Dakota South (ft)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); - add_srs_wkt (p, 2, - "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); - add_srs_wkt (p, 3, - ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 5, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 6, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",47.4833333333333"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"standard_parallel_2\",46.18333333333333],"); - add_srs_wkt (p, 10, - "PARAMETER[\"latitude_of_origin\",45.66666666666666],PARA"); - add_srs_wkt (p, 11, - "METER[\"central_meridian\",-100.5],PARAMETER[\"false_eas"); - add_srs_wkt (p, 12, - "ting\",1968503.937],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 13, - "[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\""); - add_srs_wkt (p, 14, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3636\"]]"); - p = add_epsg_def (filter, first, last, 3637, "epsg", 3637, - "NAD83(NSRS2007) / Ohio North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=G"); - add_proj4text (p, 2, - "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Ohio North\",GEOGCS[\"NAD83(N"); - add_srs_wkt (p, 1, - "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); - add_srs_wkt (p, 2, - "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_1\",41.7],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 9, - "rallel_2\",40.43333333333333],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 10, - "igin\",39.66666666666666],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 11, - ",-82.5],PARAMETER[\"false_easting\",600000],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 14, - "\"EPSG\",\"3637\"]]"); - p = add_epsg_def (filter, first, last, 3638, "epsg", 3638, - "NAD83(NSRS2007) / Ohio South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Ohio South\",GEOGCS[\"NAD83(N"); - add_srs_wkt (p, 1, - "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); - add_srs_wkt (p, 2, - "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_1\",40.03333333333333],PARAMETER["); - add_srs_wkt (p, 9, - "\"standard_parallel_2\",38.73333333333333],PARAMETER[\"l"); - add_srs_wkt (p, 10, - "atitude_of_origin\",38],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 11, - "82.5],PARAMETER[\"false_easting\",600000],PARAMETER[\"fa"); - add_srs_wkt (p, 12, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"3638\"]]"); - p = add_epsg_def (filter, first, last, 3639, "epsg", 3639, - "NAD83(NSRS2007) / Oklahoma North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666"); - add_proj4text (p, 1, - "667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80"); - add_proj4text (p, 2, - " +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Oklahoma North\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",36.76666666666667],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",35.56666666666667],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",35],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 11, - "\",-98],PARAMETER[\"false_easting\",600000],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 14, - "\"EPSG\",\"3639\"]]"); - p = add_epsg_def (filter, first, last, 3640, "epsg", 3640, - "NAD83(NSRS2007) / Oklahoma North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666"); - add_proj4text (p, 1, - "667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80"); - add_proj4text (p, 2, - " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Oklahoma North (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); - add_srs_wkt (p, 3, - "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",36.76666666666667]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",35.56666666666667],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"latitude_of_origin\",35],PARAMETER[\"central_m"); - add_srs_wkt (p, 11, - "eridian\",-98],PARAMETER[\"false_easting\",1968500],PARA"); - add_srs_wkt (p, 12, - "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); - add_srs_wkt (p, 13, - "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); - add_srs_wkt (p, 14, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3640\"]]"); - p = add_epsg_def (filter, first, last, 3641, "epsg", 3641, - "NAD83(NSRS2007) / Oklahoma South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Oklahoma South\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",35.23333333333333],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",33.93333333333333],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",33.33333333333334],PARAMETER[\"c"); - add_srs_wkt (p, 11, - "entral_meridian\",-98],PARAMETER[\"false_easting\",60000"); - add_srs_wkt (p, 12, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 13, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 14, - "RTH],AUTHORITY[\"EPSG\",\"3641\"]]"); - p = add_epsg_def (filter, first, last, 3642, "epsg", 3642, - "NAD83(NSRS2007) / Oklahoma South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); - add_proj4text (p, 3, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Oklahoma South (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); - add_srs_wkt (p, 3, - "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",35.23333333333333]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",33.93333333333333],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"latitude_of_origin\",33.33333333333334],PARAME"); - add_srs_wkt (p, 11, - "TER[\"central_meridian\",-98],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 12, - ",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); - add_srs_wkt (p, 13, - "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 14, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 15, - ",\"3642\"]]"); - p = add_epsg_def (filter, first, last, 3643, "epsg", 3643, - "NAD83(NSRS2007) / Oregon Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120"); - add_proj4text (p, 1, - ".5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,"); - add_proj4text (p, 2, - "0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Oregon Lambert\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",43],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",45.5],PARAMETER[\"latitude_of_origin\",41.7"); - add_srs_wkt (p, 10, - "5],PARAMETER[\"central_meridian\",-120.5],PARAMETER[\"fa"); - add_srs_wkt (p, 11, - "lse_easting\",400000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 12, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 13, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3643\"]]"); - p = add_epsg_def (filter, first, last, 3644, "epsg", 3644, - "NAD83(NSRS2007) / Oregon Lambert (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120"); - add_proj4text (p, 1, - ".5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 2, - "0,0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Oregon Lambert (ft)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",43],PARAMETER[\"stan"); - add_srs_wkt (p, 9, - "dard_parallel_2\",45.5],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 10, - ",41.75],PARAMETER[\"central_meridian\",-120.5],PARAMETER"); - add_srs_wkt (p, 11, - "[\"false_easting\",1312335.958],PARAMETER[\"false_northi"); - add_srs_wkt (p, 12, - "ng\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"3644\"]]"); - p = add_epsg_def (filter, first, last, 3645, "epsg", 3645, - "NAD83(NSRS2007) / Oregon North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.6"); - add_proj4text (p, 1, - "6666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=G"); - add_proj4text (p, 2, - "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Oregon North\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_1\",46],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 9, - "rallel_2\",44.33333333333334],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 10, - "igin\",43.66666666666666],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 11, - ",-120.5],PARAMETER[\"false_easting\",2500000],PARAMETER["); - add_srs_wkt (p, 12, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 14, - "[\"EPSG\",\"3645\"]]"); - p = add_epsg_def (filter, first, last, 3646, "epsg", 3646, - "NAD83(NSRS2007) / Oregon North (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.6"); - add_proj4text (p, 1, - "6666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 "); - add_proj4text (p, 2, - "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Oregon North (ft)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",46],PARAMETER[\"standa"); - add_srs_wkt (p, 9, - "rd_parallel_2\",44.33333333333334],PARAMETER[\"latitude_"); - add_srs_wkt (p, 10, - "of_origin\",43.66666666666666],PARAMETER[\"central_merid"); - add_srs_wkt (p, 11, - "ian\",-120.5],PARAMETER[\"false_easting\",8202099.738],P"); - add_srs_wkt (p, 12, - "ARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUTH"); - add_srs_wkt (p, 13, - "ORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 14, - "RTH],AUTHORITY[\"EPSG\",\"3646\"]]"); - p = add_epsg_def (filter, first, last, 3647, "epsg", 3647, - "NAD83(NSRS2007) / Oregon South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.6"); - add_proj4text (p, 1, - "6666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=G"); - add_proj4text (p, 2, - "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Oregon South\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_1\",44],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 9, - "rallel_2\",42.33333333333334],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 10, - "igin\",41.66666666666666],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 11, - ",-120.5],PARAMETER[\"false_easting\",1500000],PARAMETER["); - add_srs_wkt (p, 12, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 14, - "[\"EPSG\",\"3647\"]]"); - p = add_epsg_def (filter, first, last, 3648, "epsg", 3648, - "NAD83(NSRS2007) / Oregon South (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.6"); - add_proj4text (p, 1, - "6666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 "); - add_proj4text (p, 2, - "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Oregon South (ft)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",44],PARAMETER[\"standa"); - add_srs_wkt (p, 9, - "rd_parallel_2\",42.33333333333334],PARAMETER[\"latitude_"); - add_srs_wkt (p, 10, - "of_origin\",41.66666666666666],PARAMETER[\"central_merid"); - add_srs_wkt (p, 11, - "ian\",-120.5],PARAMETER[\"false_easting\",4921259.843],P"); - add_srs_wkt (p, 12, - "ARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUTH"); - add_srs_wkt (p, 13, - "ORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 14, - "RTH],AUTHORITY[\"EPSG\",\"3648\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_16.c b/src/spatialite/src/srsinit/epsg_inlined_16.c deleted file mode 100644 index eabb9d1..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_16.c +++ /dev/null @@ -1,3804 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_16 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 3649, "epsg", 3649, - "NAD83(NSRS2007) / Pennsylvania North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=4"); - add_proj4text (p, 1, - "0.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps"); - add_proj4text (p, 2, - "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Pennsylvania North\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",41.95],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",40.88333333333333],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",40.16666666666666],PARAMETER[\"central_me"); - add_srs_wkt (p, 11, - "ridian\",-77.75],PARAMETER[\"false_easting\",600000],PAR"); - add_srs_wkt (p, 12, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 14, - "UTHORITY[\"EPSG\",\"3649\"]]"); - p = add_epsg_def (filter, first, last, 3650, "epsg", 3650, - "NAD83(NSRS2007) / Pennsylvania North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=4"); - add_proj4text (p, 1, - "0.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps"); - add_proj4text (p, 2, - "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Pennsylvania North (ftUS)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial"); - add_srs_wkt (p, 2, - "_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,2"); - add_srs_wkt (p, 3, - "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); - add_srs_wkt (p, 4, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic"); - add_srs_wkt (p, 8, - "_2SP\"],PARAMETER[\"standard_parallel_1\",41.95],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"standard_parallel_2\",40.88333333333333],PARAMETER["); - add_srs_wkt (p, 10, - "\"latitude_of_origin\",40.16666666666666],PARAMETER[\"ce"); - add_srs_wkt (p, 11, - "ntral_meridian\",-77.75],PARAMETER[\"false_easting\",196"); - add_srs_wkt (p, 12, - "8500],PARAMETER[\"false_northing\",0],UNIT[\"US survey f"); - add_srs_wkt (p, 13, - "oot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],A"); - add_srs_wkt (p, 14, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 15, - "650\"]]"); - p = add_epsg_def (filter, first, last, 3651, "epsg", 3651, - "NAD83(NSRS2007) / Pennsylvania South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +"); - add_proj4text (p, 2, - "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Pennsylvania South\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",40.96666666666667],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",39.93333333333333],PARAME"); - add_srs_wkt (p, 10, - "TER[\"latitude_of_origin\",39.33333333333334],PARAMETER["); - add_srs_wkt (p, 11, - "\"central_meridian\",-77.75],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 12, - ",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 13, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 14, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"3651\"]]"); - p = add_epsg_def (filter, first, last, 3652, "epsg", 3652, - "NAD83(NSRS2007) / Pennsylvania South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +"); - add_proj4text (p, 2, - "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Pennsylvania South (ftUS)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial"); - add_srs_wkt (p, 2, - "_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,2"); - add_srs_wkt (p, 3, - "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); - add_srs_wkt (p, 4, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic"); - add_srs_wkt (p, 8, - "_2SP\"],PARAMETER[\"standard_parallel_1\",40.96666666666"); - add_srs_wkt (p, 9, - "667],PARAMETER[\"standard_parallel_2\",39.93333333333333"); - add_srs_wkt (p, 10, - "],PARAMETER[\"latitude_of_origin\",39.33333333333334],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"central_meridian\",-77.75],PARAMETER[\"false_e"); - add_srs_wkt (p, 12, - "asting\",1968500],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 13, - "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 15, - "EPSG\",\"3652\"]]"); - p = add_epsg_def (filter, first, last, 3653, "epsg", 3653, - "NAD83(NSRS2007) / Rhode Island"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); - add_proj4text (p, 1, - "9999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0"); - add_proj4text (p, 2, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Rhode Island\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",41.08333333333334],PARAMETER[\"centr"); - add_srs_wkt (p, 9, - "al_meridian\",-71.5],PARAMETER[\"scale_factor\",0.999993"); - add_srs_wkt (p, 10, - "75],PARAMETER[\"false_easting\",100000],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 12, - "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"3653\"]]"); - p = add_epsg_def (filter, first, last, 3654, "epsg", 3654, - "NAD83(NSRS2007) / Rhode Island (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); - add_proj4text (p, 1, - "9999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towg"); - add_proj4text (p, 2, - "s84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Rhode Island (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",41.08333333333334],PARAMETER["); - add_srs_wkt (p, 9, - "\"central_meridian\",-71.5],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 10, - ".99999375],PARAMETER[\"false_easting\",328083.3333],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); - add_srs_wkt (p, 12, - "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); - add_srs_wkt (p, 13, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3654\"]]"); - p = add_epsg_def (filter, first, last, 3655, "epsg", 3655, - "NAD83(NSRS2007) / South Carolina"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31"); - add_proj4text (p, 1, - ".83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / South Carolina\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",34.83333333333334],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",32.5],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 10, - "f_origin\",31.83333333333333],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 11, - "an\",-81],PARAMETER[\"false_easting\",609600],PARAMETER["); - add_srs_wkt (p, 12, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 14, - "[\"EPSG\",\"3655\"]]"); - p = add_epsg_def (filter, first, last, 3656, "epsg", 3656, - "NAD83(NSRS2007) / South Carolina (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31"); - add_proj4text (p, 1, - ".83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / South Carolina (ft)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",34.83333333333334],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"standard_parallel_2\",32.5],PARAMETER[\"latit"); - add_srs_wkt (p, 10, - "ude_of_origin\",31.83333333333333],PARAMETER[\"central_m"); - add_srs_wkt (p, 11, - "eridian\",-81],PARAMETER[\"false_easting\",2000000],PARA"); - add_srs_wkt (p, 12, - "METER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUTHORI"); - add_srs_wkt (p, 13, - "TY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 14, - "],AUTHORITY[\"EPSG\",\"3656\"]]"); - p = add_epsg_def (filter, first, last, 3657, "epsg", 3657, - "NAD83(NSRS2007) / South Dakota North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666"); - add_proj4text (p, 1, - "666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_"); - add_proj4text (p, 2, - "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 3, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / South Dakota North\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",45.68333333333333],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",44.41666666666666],PARAME"); - add_srs_wkt (p, 10, - "TER[\"latitude_of_origin\",43.83333333333334],PARAMETER["); - add_srs_wkt (p, 11, - "\"central_meridian\",-100],PARAMETER[\"false_easting\",6"); - add_srs_wkt (p, 12, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"3657\"]]"); - p = add_epsg_def (filter, first, last, 3658, "epsg", 3658, - "NAD83(NSRS2007) / South Dakota North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666"); - add_proj4text (p, 1, - "666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_"); - add_proj4text (p, 2, - "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no"); - add_proj4text (p, 3, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / South Dakota North (ftUS)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial"); - add_srs_wkt (p, 2, - "_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,2"); - add_srs_wkt (p, 3, - "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); - add_srs_wkt (p, 4, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic"); - add_srs_wkt (p, 8, - "_2SP\"],PARAMETER[\"standard_parallel_1\",45.68333333333"); - add_srs_wkt (p, 9, - "333],PARAMETER[\"standard_parallel_2\",44.41666666666666"); - add_srs_wkt (p, 10, - "],PARAMETER[\"latitude_of_origin\",43.83333333333334],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"central_meridian\",-100],PARAMETER[\"false_eas"); - add_srs_wkt (p, 12, - "ting\",1968500],PARAMETER[\"false_northing\",0],UNIT[\"U"); - add_srs_wkt (p, 13, - "S survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 15, - "EPSG\",\"3658\"]]"); - p = add_epsg_def (filter, first, last, 3659, "epsg", 3659, - "NAD83(NSRS2007) / South Dakota South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); - add_proj4text (p, 1, - ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); - add_proj4text (p, 2, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 3, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / South Dakota South\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",44.4],PARAMETER[\"stan"); - add_srs_wkt (p, 9, - "dard_parallel_2\",42.83333333333334],PARAMETER[\"latitud"); - add_srs_wkt (p, 10, - "e_of_origin\",42.33333333333334],PARAMETER[\"central_mer"); - add_srs_wkt (p, 11, - "idian\",-100.3333333333333],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 12, - "600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 14, - "\",NORTH],AUTHORITY[\"EPSG\",\"3659\"]]"); - p = add_epsg_def (filter, first, last, 3660, "epsg", 3660, - "NAD83(NSRS2007) / South Dakota South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); - add_proj4text (p, 1, - ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); - add_proj4text (p, 2, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +n"); - add_proj4text (p, 3, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / South Dakota South (ftUS)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial"); - add_srs_wkt (p, 2, - "_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,2"); - add_srs_wkt (p, 3, - "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); - add_srs_wkt (p, 4, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic"); - add_srs_wkt (p, 8, - "_2SP\"],PARAMETER[\"standard_parallel_1\",44.4],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"standard_parallel_2\",42.83333333333334],PARAMETER[\""); - add_srs_wkt (p, 10, - "latitude_of_origin\",42.33333333333334],PARAMETER[\"cent"); - add_srs_wkt (p, 11, - "ral_meridian\",-100.3333333333333],PARAMETER[\"false_eas"); - add_srs_wkt (p, 12, - "ting\",1968500],PARAMETER[\"false_northing\",0],UNIT[\"U"); - add_srs_wkt (p, 13, - "S survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 15, - "EPSG\",\"3660\"]]"); - p = add_epsg_def (filter, first, last, 3661, "epsg", 3661, - "NAD83(NSRS2007) / Tennessee"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=3"); - add_proj4text (p, 1, - "4.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GR"); - add_proj4text (p, 2, - "S80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Tennessee\",GEOGCS[\"NAD83(NS"); - add_srs_wkt (p, 1, - "RS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); - add_srs_wkt (p, 2, - "m_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",36.41666666666666],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",35.25],PARAMETER[\"latitude_of_ori"); - add_srs_wkt (p, 10, - "gin\",34.33333333333334],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 11, - "-86],PARAMETER[\"false_easting\",600000],PARAMETER[\"fal"); - add_srs_wkt (p, 12, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 13, - "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 14, - "PSG\",\"3661\"]]"); - p = add_epsg_def (filter, first, last, 3662, "epsg", 3662, - "NAD83(NSRS2007) / Tennessee (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=3"); - add_proj4text (p, 1, - "4.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GR"); - add_proj4text (p, 2, - "S80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Tennessee (ftUS)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); - add_srs_wkt (p, 2, - "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_1\",36.41666666666666],PARA"); - add_srs_wkt (p, 9, - "METER[\"standard_parallel_2\",35.25],PARAMETER[\"latitud"); - add_srs_wkt (p, 10, - "e_of_origin\",34.33333333333334],PARAMETER[\"central_mer"); - add_srs_wkt (p, 11, - "idian\",-86],PARAMETER[\"false_easting\",1968500],PARAME"); - add_srs_wkt (p, 12, - "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); - add_srs_wkt (p, 13, - "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 14, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3662\"]]"); - p = add_epsg_def (filter, first, last, 3663, "epsg", 3663, - "NAD83(NSRS2007) / Texas Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666"); - add_proj4text (p, 1, - "667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); - add_proj4text (p, 2, - "x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 3, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Texas Central\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); - add_srs_wkt (p, 2, - "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"standard_parallel_1\",31.88333333333333],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"standard_parallel_2\",30.11666666666667],PARAMETER["); - add_srs_wkt (p, 10, - "\"latitude_of_origin\",29.66666666666667],PARAMETER[\"ce"); - add_srs_wkt (p, 11, - "ntral_meridian\",-100.3333333333333],PARAMETER[\"false_e"); - add_srs_wkt (p, 12, - "asting\",700000],PARAMETER[\"false_northing\",3000000],U"); - add_srs_wkt (p, 13, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 14, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3663\"]]"); - p = add_epsg_def (filter, first, last, 3664, "epsg", 3664, - "NAD83(NSRS2007) / Texas Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666"); - add_proj4text (p, 1, - "667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); - add_proj4text (p, 2, - "x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84"); - add_proj4text (p, 3, - "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Texas Central (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",31.88333333333333],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"standard_parallel_2\",30.11666666666667],PARA"); - add_srs_wkt (p, 10, - "METER[\"latitude_of_origin\",29.66666666666667],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"central_meridian\",-100.3333333333333],PARAMETER[\"f"); - add_srs_wkt (p, 12, - "alse_easting\",2296583.333],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 13, - ",9842500.000000002],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 14, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 15, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3664\"]]"); - p = add_epsg_def (filter, first, last, 3665, "epsg", 3665, - "NAD83(NSRS2007) / Texas Centric Albers Equal Area"); - add_proj4text (p, 0, - "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x"); - add_proj4text (p, 1, - "_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Texas Centric Albers Equal Ar"); - add_srs_wkt (p, 1, - "ea\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_S"); - add_srs_wkt (p, 2, - "patial_Reference_System_2007\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 3, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 4, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"G"); - add_srs_wkt (p, 5, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 6, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 7, - "ORITY[\"EPSG\",\"4759\"]],PROJECTION[\"Albers_Conic_Equa"); - add_srs_wkt (p, 8, - "l_Area\"],PARAMETER[\"standard_parallel_1\",27.5],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",35],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 10, - "center\",18],PARAMETER[\"longitude_of_center\",-100],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_easting\",1500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 12, - "hing\",6000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 13, - "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 14, - "SG\",\"3665\"]]"); - p = add_epsg_def (filter, first, last, 3666, "epsg", 3666, - "NAD83(NSRS2007) / Texas Centric Lambert Conformal"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x"); - add_proj4text (p, 1, - "_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Texas Centric Lambert Conform"); - add_srs_wkt (p, 1, - "al\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_S"); - add_srs_wkt (p, 2, - "patial_Reference_System_2007\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 3, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 4, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"G"); - add_srs_wkt (p, 5, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 6, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 7, - "ORITY[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 8, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",27.5],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"standard_parallel_2\",35],PARAMETER[\"latitude"); - add_srs_wkt (p, 10, - "_of_origin\",18],PARAMETER[\"central_meridian\",-100],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_easting\",1500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 12, - "thing\",5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 13, - "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 14, - "PSG\",\"3666\"]]"); - p = add_epsg_def (filter, first, last, 3667, "epsg", 3667, - "NAD83(NSRS2007) / Texas North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=3"); - add_proj4text (p, 1, - "4 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Texas North\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); - add_srs_wkt (p, 2, - "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_1\",36.18333333333333],PARAMETER"); - add_srs_wkt (p, 9, - "[\"standard_parallel_2\",34.65],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 10, - "origin\",34],PARAMETER[\"central_meridian\",-101.5],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_easting\",200000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 12, - "ng\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 13, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 14, - "\",\"3667\"]]"); - p = add_epsg_def (filter, first, last, 3668, "epsg", 3668, - "NAD83(NSRS2007) / Texas North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=3"); - add_proj4text (p, 1, - "4 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.99989"); - add_proj4text (p, 2, - "83998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Texas North (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",36.18333333333333],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",34.65],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",34],PARAMETER[\"central_meridian\",-101.5"); - add_srs_wkt (p, 11, - "],PARAMETER[\"false_easting\",656166.667],PARAMETER[\"fa"); - add_srs_wkt (p, 12, - "lse_northing\",3280833.333],UNIT[\"US survey foot\",0.30"); - add_srs_wkt (p, 13, - "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); - add_srs_wkt (p, 14, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3668\"]]"); - p = add_epsg_def (filter, first, last, 3669, "epsg", 3669, - "NAD83(NSRS2007) / Texas North Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333"); - add_proj4text (p, 1, - "333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y"); - add_proj4text (p, 2, - "_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 3, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Texas North Central\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",33.96666666666667],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"standard_parallel_2\",32.13333333333333],PARA"); - add_srs_wkt (p, 10, - "METER[\"latitude_of_origin\",31.66666666666667],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"central_meridian\",-98.5],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 12, - ",600000],PARAMETER[\"false_northing\",2000000],UNIT[\"me"); - add_srs_wkt (p, 13, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 14, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3669\"]]"); - p = add_epsg_def (filter, first, last, 3670, "epsg", 3670, - "NAD83(NSRS2007) / Texas North Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333"); - add_proj4text (p, 1, - "333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y"); - add_proj4text (p, 2, - "_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 3, - "units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Texas North Central (ftUS)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatia"); - add_srs_wkt (p, 2, - "l_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,"); - add_srs_wkt (p, 3, - "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 5, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Coni"); - add_srs_wkt (p, 8, - "c_2SP\"],PARAMETER[\"standard_parallel_1\",33.9666666666"); - add_srs_wkt (p, 9, - "6667],PARAMETER[\"standard_parallel_2\",32.1333333333333"); - add_srs_wkt (p, 10, - "3],PARAMETER[\"latitude_of_origin\",31.66666666666667],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"central_meridian\",-98.5],PARAMETER[\"false_e"); - add_srs_wkt (p, 12, - "asting\",1968500],PARAMETER[\"false_northing\",6561666.6"); - add_srs_wkt (p, 13, - "67],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 14, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 15, - "AUTHORITY[\"EPSG\",\"3670\"]]"); - p = add_epsg_def (filter, first, last, 3671, "epsg", 3671, - "NAD83(NSRS2007) / Texas South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); - add_proj4text (p, 1, - "667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y"); - add_proj4text (p, 2, - "_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 3, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Texas South\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); - add_srs_wkt (p, 2, - "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_1\",27.83333333333333],PARAMETER"); - add_srs_wkt (p, 9, - "[\"standard_parallel_2\",26.16666666666667],PARAMETER[\""); - add_srs_wkt (p, 10, - "latitude_of_origin\",25.66666666666667],PARAMETER[\"cent"); - add_srs_wkt (p, 11, - "ral_meridian\",-98.5],PARAMETER[\"false_easting\",300000"); - add_srs_wkt (p, 12, - "],PARAMETER[\"false_northing\",5000000],UNIT[\"metre\",1"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 14, - "\",NORTH],AUTHORITY[\"EPSG\",\"3671\"]]"); - p = add_epsg_def (filter, first, last, 3672, "epsg", 3672, - "NAD83(NSRS2007) / Texas South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); - add_proj4text (p, 1, - "667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.00"); - add_proj4text (p, 2, - "00000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 3, - "0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Texas South (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",27.83333333333333],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",26.16666666666667],PARAME"); - add_srs_wkt (p, 10, - "TER[\"latitude_of_origin\",25.66666666666667],PARAMETER["); - add_srs_wkt (p, 11, - "\"central_meridian\",-98.5],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 12, - "984250.0000000002],PARAMETER[\"false_northing\",16404166"); - add_srs_wkt (p, 13, - ".667],UNIT[\"US survey foot\",0.3048006096012192,AUTHORI"); - add_srs_wkt (p, 14, - "TY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 15, - "],AUTHORITY[\"EPSG\",\"3672\"]]"); - p = add_epsg_def (filter, first, last, 3673, "epsg", 3673, - "NAD83(NSRS2007) / Texas South Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333"); - add_proj4text (p, 1, - "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); - add_proj4text (p, 3, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Texas South Central\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",30.28333333333333],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"standard_parallel_2\",28.38333333333333],PARA"); - add_srs_wkt (p, 10, - "METER[\"latitude_of_origin\",27.83333333333333],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"central_meridian\",-99],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 12, - "600000],PARAMETER[\"false_northing\",4000000],UNIT[\"met"); - add_srs_wkt (p, 13, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 14, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3673\"]]"); - p = add_epsg_def (filter, first, last, 3674, "epsg", 3674, - "NAD83(NSRS2007) / Texas South Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333"); - add_proj4text (p, 1, - "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +un"); - add_proj4text (p, 3, - "its=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Texas South Central (ftUS)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatia"); - add_srs_wkt (p, 2, - "l_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,"); - add_srs_wkt (p, 3, - "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 5, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Coni"); - add_srs_wkt (p, 8, - "c_2SP\"],PARAMETER[\"standard_parallel_1\",30.2833333333"); - add_srs_wkt (p, 9, - "3333],PARAMETER[\"standard_parallel_2\",28.3833333333333"); - add_srs_wkt (p, 10, - "3],PARAMETER[\"latitude_of_origin\",27.83333333333333],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"central_meridian\",-99],PARAMETER[\"false_eas"); - add_srs_wkt (p, 12, - "ting\",1968500],PARAMETER[\"false_northing\",13123333.33"); - add_srs_wkt (p, 13, - "3],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); - add_srs_wkt (p, 14, - "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 15, - "UTHORITY[\"EPSG\",\"3674\"]]"); - p = add_epsg_def (filter, first, last, 3675, "epsg", 3675, - "NAD83(NSRS2007) / Utah Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); - add_proj4text (p, 1, - "8.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 "); - add_proj4text (p, 2, - "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Utah Central\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_1\",40.65],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",39.01666666666667],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",38.33333333333334],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 11, - "n\",-111.5],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 12, - "R[\"false_northing\",2000000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 14, - "AUTHORITY[\"EPSG\",\"3675\"]]"); - p = add_epsg_def (filter, first, last, 3676, "epsg", 3676, - "NAD83(NSRS2007) / Utah Central (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); - add_proj4text (p, 1, - "8.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0="); - add_proj4text (p, 2, - "1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 3, - "s=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Utah Central (ft)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",40.65],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",39.01666666666667],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",38.33333333333334],PARAMETER[\"central_me"); - add_srs_wkt (p, 11, - "ridian\",-111.5],PARAMETER[\"false_easting\",1640419.948"); - add_srs_wkt (p, 12, - "],PARAMETER[\"false_northing\",6561679.79],UNIT[\"foot\""); - add_srs_wkt (p, 13, - ",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 14, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3676\"]]"); - p = add_epsg_def (filter, first, last, 3677, "epsg", 3677, - "NAD83(NSRS2007) / Utah Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); - add_proj4text (p, 1, - "8.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0"); - add_proj4text (p, 2, - "=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 3, - "nits=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Utah Central (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",40.65],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "tandard_parallel_2\",39.01666666666667],PARAMETER[\"lati"); - add_srs_wkt (p, 10, - "tude_of_origin\",38.33333333333334],PARAMETER[\"central_"); - add_srs_wkt (p, 11, - "meridian\",-111.5],PARAMETER[\"false_easting\",1640416.6"); - add_srs_wkt (p, 12, - "667],PARAMETER[\"false_northing\",6561666.666700001],UNI"); - add_srs_wkt (p, 13, - "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 14, - "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); - add_srs_wkt (p, 15, - "TY[\"EPSG\",\"3677\"]]"); - p = add_epsg_def (filter, first, last, 3678, "epsg", 3678, - "NAD83(NSRS2007) / Utah North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +"); - add_proj4text (p, 2, - "y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); - add_proj4text (p, 3, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Utah North\",GEOGCS[\"NAD83(N"); - add_srs_wkt (p, 1, - "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); - add_srs_wkt (p, 2, - "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_1\",41.78333333333333],PARAMETER["); - add_srs_wkt (p, 9, - "\"standard_parallel_2\",40.71666666666667],PARAMETER[\"l"); - add_srs_wkt (p, 10, - "atitude_of_origin\",40.33333333333334],PARAMETER[\"centr"); - add_srs_wkt (p, 11, - "al_meridian\",-111.5],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 12, - "],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\",1"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 14, - "\",NORTH],AUTHORITY[\"EPSG\",\"3678\"]]"); - p = add_epsg_def (filter, first, last, 3679, "epsg", 3679, - "NAD83(NSRS2007) / Utah North (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0"); - add_proj4text (p, 2, - "001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 3, - "0,0,0,0,0 +units=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Utah North (ft)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); - add_srs_wkt (p, 2, - "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",41.78333333333333],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",40.71666666666667],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",40.33333333333334],PARAMETER[\"c"); - add_srs_wkt (p, 11, - "entral_meridian\",-111.5],PARAMETER[\"false_easting\",16"); - add_srs_wkt (p, 12, - "40419.948],PARAMETER[\"false_northing\",3280839.895],UNI"); - add_srs_wkt (p, 13, - "T[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X"); - add_srs_wkt (p, 14, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3679\"]]"); - p = add_epsg_def (filter, first, last, 3680, "epsg", 3680, - "NAD83(NSRS2007) / Utah North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0"); - add_proj4text (p, 2, - "0001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0"); - add_proj4text (p, 3, - ",0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Utah North (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",41.78333333333333],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",40.71666666666667],PARAME"); - add_srs_wkt (p, 10, - "TER[\"latitude_of_origin\",40.33333333333334],PARAMETER["); - add_srs_wkt (p, 11, - "\"central_meridian\",-111.5],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 12, - ",1640416.6667],PARAMETER[\"false_northing\",3280833.3333"); - add_srs_wkt (p, 13, - "00001],UNIT[\"US survey foot\",0.3048006096012192,AUTHOR"); - add_srs_wkt (p, 14, - "ITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 15, - "H],AUTHORITY[\"EPSG\",\"3680\"]]"); - p = add_epsg_def (filter, first, last, 3681, "epsg", 3681, - "NAD83(NSRS2007) / Utah South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); - add_proj4text (p, 1, - "6.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 "); - add_proj4text (p, 2, - "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Utah South\",GEOGCS[\"NAD83(N"); - add_srs_wkt (p, 1, - "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); - add_srs_wkt (p, 2, - "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_1\",38.35],PARAMETER[\"standard_p"); - add_srs_wkt (p, 9, - "arallel_2\",37.21666666666667],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 10, - "rigin\",36.66666666666666],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 11, - ",-111.5],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",3000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 14, - "ORITY[\"EPSG\",\"3681\"]]"); - p = add_epsg_def (filter, first, last, 3682, "epsg", 3682, - "NAD83(NSRS2007) / Utah South (ft)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); - add_proj4text (p, 1, - "6.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0="); - add_proj4text (p, 2, - "2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 3, - "s=ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Utah South (ft)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); - add_srs_wkt (p, 2, - "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",38.35],PARAMETER[\"standa"); - add_srs_wkt (p, 9, - "rd_parallel_2\",37.21666666666667],PARAMETER[\"latitude_"); - add_srs_wkt (p, 10, - "of_origin\",36.66666666666666],PARAMETER[\"central_merid"); - add_srs_wkt (p, 11, - "ian\",-111.5],PARAMETER[\"false_easting\",1640419.948],P"); - add_srs_wkt (p, 12, - "ARAMETER[\"false_northing\",9842519.685],UNIT[\"foot\",0"); - add_srs_wkt (p, 13, - ".3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXI"); - add_srs_wkt (p, 14, - "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3682\"]]"); - p = add_epsg_def (filter, first, last, 3683, "epsg", 3683, - "NAD83(NSRS2007) / Utah South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); - add_proj4text (p, 1, - "6.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0"); - add_proj4text (p, 2, - "=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-f"); - add_proj4text (p, 3, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Utah South (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",38.35],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",37.21666666666667],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",36.66666666666666],PARAMETER[\"central_me"); - add_srs_wkt (p, 11, - "ridian\",-111.5],PARAMETER[\"false_easting\",1640416.666"); - add_srs_wkt (p, 12, - "7],PARAMETER[\"false_northing\",9842500.000000002],UNIT["); - add_srs_wkt (p, 13, - "\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 15, - "[\"EPSG\",\"3683\"]]"); - p = add_epsg_def (filter, first, last, 3684, "epsg", 3684, - "NAD83(NSRS2007) / Vermont"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0"); - add_proj4text (p, 1, - "=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Vermont\",GEOGCS[\"NAD83(NSRS"); - add_srs_wkt (p, 1, - "2007)\",DATUM[\"NAD83_National_Spatial_Reference_System_"); - add_srs_wkt (p, 2, - "2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",42.5],PARAMETER[\"central_meridian\",-72.5"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",0.999964286],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 12, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3684\"]]"); - p = add_epsg_def (filter, first, last, 3685, "epsg", 3685, - "NAD83(NSRS2007) / Virginia North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +"); - add_proj4text (p, 2, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Virginia North\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",39.2],PARAMETER[\"standar"); - add_srs_wkt (p, 9, - "d_parallel_2\",38.03333333333333],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 10, - "f_origin\",37.66666666666666],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 11, - "an\",-78.5],PARAMETER[\"false_easting\",3500000],PARAMET"); - add_srs_wkt (p, 12, - "ER[\"false_northing\",2000000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 13, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 14, - ",AUTHORITY[\"EPSG\",\"3685\"]]"); - p = add_epsg_def (filter, first, last, 3686, "epsg", 3686, - "NAD83(NSRS2007) / Virginia North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2"); - add_proj4text (p, 2, - "000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 3, - "s=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Virginia North (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); - add_srs_wkt (p, 3, - "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",39.2],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",38.03333333333333],PARAMETER[\"lat"); - add_srs_wkt (p, 10, - "itude_of_origin\",37.66666666666666],PARAMETER[\"central"); - add_srs_wkt (p, 11, - "_meridian\",-78.5],PARAMETER[\"false_easting\",11482916."); - add_srs_wkt (p, 12, - "667],PARAMETER[\"false_northing\",6561666.667],UNIT[\"US"); - add_srs_wkt (p, 13, - " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 14, - "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 15, - "PSG\",\"3686\"]]"); - p = add_epsg_def (filter, first, last, 3687, "epsg", 3687, - "NAD83(NSRS2007) / Virginia South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +"); - add_proj4text (p, 2, - "y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); - add_proj4text (p, 3, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Virginia South\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",37.96666666666667],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",36.76666666666667],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",36.33333333333334],PARAMETER[\"c"); - add_srs_wkt (p, 11, - "entral_meridian\",-78.5],PARAMETER[\"false_easting\",350"); - add_srs_wkt (p, 12, - "0000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre"); - add_srs_wkt (p, 13, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 14, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3687\"]]"); - p = add_epsg_def (filter, first, last, 3688, "epsg", 3688, - "NAD83(NSRS2007) / Virginia South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0"); - add_proj4text (p, 2, - "001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,"); - add_proj4text (p, 3, - "0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Virginia South (ftUS)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); - add_srs_wkt (p, 2, - "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); - add_srs_wkt (p, 3, - "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",37.96666666666667]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",36.76666666666667],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"latitude_of_origin\",36.33333333333334],PARAME"); - add_srs_wkt (p, 11, - "TER[\"central_meridian\",-78.5],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 12, - "g\",11482916.667],PARAMETER[\"false_northing\",3280833.3"); - add_srs_wkt (p, 13, - "33],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 14, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 15, - "AUTHORITY[\"EPSG\",\"3688\"]]"); - p = add_epsg_def (filter, first, last, 3689, "epsg", 3689, - "NAD83(NSRS2007) / Washington North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47"); - add_proj4text (p, 1, - " +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Washington North\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); - add_srs_wkt (p, 2, - "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_1\",48.73333333333333],PARA"); - add_srs_wkt (p, 9, - "METER[\"standard_parallel_2\",47.5],PARAMETER[\"latitude"); - add_srs_wkt (p, 10, - "_of_origin\",47],PARAMETER[\"central_meridian\",-120.833"); - add_srs_wkt (p, 11, - "3333333333],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 12, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); - add_srs_wkt (p, 14, - "ITY[\"EPSG\",\"3689\"]]"); - p = add_epsg_def (filter, first, last, 3690, "epsg", 3690, - "NAD83(NSRS2007) / Washington North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47"); - add_proj4text (p, 1, - " +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0"); - add_proj4text (p, 2, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_de"); - add_proj4text (p, 3, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Washington North (ftUS)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); - add_srs_wkt (p, 2, - "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); - add_srs_wkt (p, 3, - ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 5, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 6, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",48.7333333333333"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"standard_parallel_2\",47.5],PARAMETER[\"l"); - add_srs_wkt (p, 10, - "atitude_of_origin\",47],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 11, - "120.8333333333333],PARAMETER[\"false_easting\",1640416.6"); - add_srs_wkt (p, 12, - "67],PARAMETER[\"false_northing\",0],UNIT[\"US survey foo"); - add_srs_wkt (p, 13, - "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); - add_srs_wkt (p, 14, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"369"); - add_srs_wkt (p, 15, - "0\"]]"); - p = add_epsg_def (filter, first, last, 3691, "epsg", 3691, - "NAD83(NSRS2007) / Washington South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333"); - add_proj4text (p, 1, - "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +"); - add_proj4text (p, 2, - "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Washington South\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); - add_srs_wkt (p, 2, - "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_1\",47.33333333333334],PARA"); - add_srs_wkt (p, 9, - "METER[\"standard_parallel_2\",45.83333333333334],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"latitude_of_origin\",45.33333333333334],PARAMETER[\""); - add_srs_wkt (p, 11, - "central_meridian\",-120.5],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 12, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"3691\"]]"); - p = add_epsg_def (filter, first, last, 3692, "epsg", 3692, - "NAD83(NSRS2007) / Washington South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333"); - add_proj4text (p, 1, - "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0"); - add_proj4text (p, 2, - "001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +un"); - add_proj4text (p, 3, - "its=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Washington South (ftUS)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); - add_srs_wkt (p, 2, - "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); - add_srs_wkt (p, 3, - ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); - add_srs_wkt (p, 4, - ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 5, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 6, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",47.3333333333333"); - add_srs_wkt (p, 9, - "4],PARAMETER[\"standard_parallel_2\",45.83333333333334],"); - add_srs_wkt (p, 10, - "PARAMETER[\"latitude_of_origin\",45.33333333333334],PARA"); - add_srs_wkt (p, 11, - "METER[\"central_meridian\",-120.5],PARAMETER[\"false_eas"); - add_srs_wkt (p, 12, - "ting\",1640416.667],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 13, - "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 15, - "[\"EPSG\",\"3692\"]]"); - p = add_epsg_def (filter, first, last, 3693, "epsg", 3693, - "NAD83(NSRS2007) / West Virginia North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); - add_proj4text (p, 1, - "5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / West Virginia North\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",40.25],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "tandard_parallel_2\",39],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 10, - ",38.5],PARAMETER[\"central_meridian\",-79.5],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_easting\",600000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3693\"]]"); - p = add_epsg_def (filter, first, last, 3694, "epsg", 3694, - "NAD83(NSRS2007) / West Virginia South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80"); - add_proj4text (p, 2, - " +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / West Virginia South\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",38.88333333333333],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"standard_parallel_2\",37.48333333333333],PARA"); - add_srs_wkt (p, 10, - "METER[\"latitude_of_origin\",37],PARAMETER[\"central_mer"); - add_srs_wkt (p, 11, - "idian\",-81],PARAMETER[\"false_easting\",600000],PARAMET"); - add_srs_wkt (p, 12, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 14, - "RITY[\"EPSG\",\"3694\"]]"); - p = add_epsg_def (filter, first, last, 3695, "epsg", 3695, - "NAD83(NSRS2007) / Wisconsin Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333"); - add_proj4text (p, 1, - "334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Wisconsin Central\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",45.5],PARAMETER[\"stan"); - add_srs_wkt (p, 9, - "dard_parallel_2\",44.25],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 10, - ",43.83333333333334],PARAMETER[\"central_meridian\",-90],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",600000],PARAMETER[\"false_no"); - add_srs_wkt (p, 12, - "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"3695\"]]"); - p = add_epsg_def (filter, first, last, 3696, "epsg", 3696, - "NAD83(NSRS2007) / Wisconsin Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333"); - add_proj4text (p, 1, - "334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Wisconsin Central (ftUS)\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); - add_srs_wkt (p, 2, - "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 3, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",45.5],PARAMETER["); - add_srs_wkt (p, 9, - "\"standard_parallel_2\",44.25],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 10, - "rigin\",43.83333333333334],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 11, - ",-90],PARAMETER[\"false_easting\",1968500],PARAMETER[\"f"); - add_srs_wkt (p, 12, - "alse_northing\",0],UNIT[\"US survey foot\",0.30480060960"); - add_srs_wkt (p, 13, - "12192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXI"); - add_srs_wkt (p, 14, - "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3696\"]]"); - p = add_epsg_def (filter, first, last, 3697, "epsg", 3697, - "NAD83(NSRS2007) / Wisconsin North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666"); - add_proj4text (p, 1, - "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Wisconsin North\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); - add_srs_wkt (p, 2, - "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",46.76666666666667],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",45.56666666666667],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",45.16666666666666],PARAMETER[\"c"); - add_srs_wkt (p, 11, - "entral_meridian\",-90],PARAMETER[\"false_easting\",60000"); - add_srs_wkt (p, 12, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 13, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 14, - "RTH],AUTHORITY[\"EPSG\",\"3697\"]]"); - p = add_epsg_def (filter, first, last, 3698, "epsg", 3698, - "NAD83(NSRS2007) / Wisconsin North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666"); - add_proj4text (p, 1, - "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); - add_proj4text (p, 3, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Wisconsin North (ftUS)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); - add_srs_wkt (p, 2, - "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); - add_srs_wkt (p, 3, - "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",46.76666666666667]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",45.56666666666667],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"latitude_of_origin\",45.16666666666666],PARAME"); - add_srs_wkt (p, 11, - "TER[\"central_meridian\",-90],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 12, - ",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); - add_srs_wkt (p, 13, - "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 14, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 15, - ",\"3698\"]]"); - p = add_epsg_def (filter, first, last, 3699, "epsg", 3699, - "NAD83(NSRS2007) / Wisconsin South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80"); - add_proj4text (p, 2, - " +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Wisconsin South\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); - add_srs_wkt (p, 2, - "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",44.06666666666667],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",42.73333333333333],PARAMETER"); - add_srs_wkt (p, 10, - "[\"latitude_of_origin\",42],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 11, - "\",-90],PARAMETER[\"false_easting\",600000],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 14, - "\"EPSG\",\"3699\"]]"); - p = add_epsg_def (filter, first, last, 3700, "epsg", 3700, - "NAD83(NSRS2007) / Wisconsin South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80"); - add_proj4text (p, 2, - " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Wisconsin South (ftUS)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); - add_srs_wkt (p, 2, - "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); - add_srs_wkt (p, 3, - "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",44.06666666666667]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",42.73333333333333],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"latitude_of_origin\",42],PARAMETER[\"central_m"); - add_srs_wkt (p, 11, - "eridian\",-90],PARAMETER[\"false_easting\",1968500],PARA"); - add_srs_wkt (p, 12, - "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); - add_srs_wkt (p, 13, - "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); - add_srs_wkt (p, 14, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3700\"]]"); - p = add_epsg_def (filter, first, last, 3701, "epsg", 3701, - "NAD83(NSRS2007) / Wisconsin Transverse Mercator"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y"); - add_proj4text (p, 1, - "_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Wisconsin Transverse Mercator"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spa"); - add_srs_wkt (p, 2, - "tial_Reference_System_2007\",SPHEROID[\"GRS 1980\",63781"); - add_srs_wkt (p, 3, - "37,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0"); - add_srs_wkt (p, 4, - ",0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 5, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",-90],PARAMETER[\"scale_factor\",0.9996],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_easting\",520000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 11, - "thing\",-4480000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"3701\"]]"); - p = add_epsg_def (filter, first, last, 3702, "epsg", 3702, - "NAD83(NSRS2007) / Wyoming East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Wyoming East\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",40.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-105.1666666666667],PARAMETER[\"scale_factor\",0.999937"); - add_srs_wkt (p, 10, - "5],PARAMETER[\"false_easting\",200000],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 12, - "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"3702\"]]"); - p = add_epsg_def (filter, first, last, 3703, "epsg", 3703, - "NAD83(NSRS2007) / Wyoming East Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0"); - add_proj4text (p, 2, - ",0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Wyoming East Central\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",40.5],PARAMETER[\"central_me"); - add_srs_wkt (p, 9, - "ridian\",-107.3333333333333],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 10, - "0.9999375],PARAMETER[\"false_easting\",400000],PARAMETER"); - add_srs_wkt (p, 11, - "[\"false_northing\",100000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"3703\"]]"); - p = add_epsg_def (filter, first, last, 3704, "epsg", 3704, - "NAD83(NSRS2007) / Wyoming West Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0"); - add_proj4text (p, 1, - "=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Wyoming West Central\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); - add_srs_wkt (p, 2, - "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",40.5],PARAMETER[\"central_me"); - add_srs_wkt (p, 9, - "ridian\",-108.75],PARAMETER[\"scale_factor\",0.9999375],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",600000],PARAMETER[\"false_no"); - add_srs_wkt (p, 11, - "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"3704\"]]"); - p = add_epsg_def (filter, first, last, 3705, "epsg", 3705, - "NAD83(NSRS2007) / Wyoming West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0"); - add_proj4text (p, 2, - ",0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Wyoming West\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",40.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-110.0833333333333],PARAMETER[\"scale_factor\",0.999937"); - add_srs_wkt (p, 10, - "5],PARAMETER[\"false_easting\",800000],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_northing\",100000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"3705\"]]"); - p = add_epsg_def (filter, first, last, 3706, "epsg", 3706, - "NAD83(NSRS2007) / UTM zone 59N"); - add_proj4text (p, 0, - "+proj=utm +zone=59 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 59N\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",17"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"370"); - add_srs_wkt (p, 13, - "6\"]]"); - p = add_epsg_def (filter, first, last, 3707, "epsg", 3707, - "NAD83(NSRS2007) / UTM zone 60N"); - add_proj4text (p, 0, - "+proj=utm +zone=60 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 60N\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",17"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"370"); - add_srs_wkt (p, 13, - "7\"]]"); - p = add_epsg_def (filter, first, last, 3708, "epsg", 3708, - "NAD83(NSRS2007) / UTM zone 1N"); - add_proj4text (p, 0, - "+proj=utm +zone=1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 1, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 1N\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); - add_srs_wkt (p, 2, - "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",-17"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"370"); - add_srs_wkt (p, 13, - "8\"]]"); - p = add_epsg_def (filter, first, last, 3709, "epsg", 3709, - "NAD83(NSRS2007) / UTM zone 2N"); - add_proj4text (p, 0, - "+proj=utm +zone=2 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 1, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 2N\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); - add_srs_wkt (p, 2, - "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",-17"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"370"); - add_srs_wkt (p, 13, - "9\"]]"); - p = add_epsg_def (filter, first, last, 3710, "epsg", 3710, - "NAD83(NSRS2007) / UTM zone 3N"); - add_proj4text (p, 0, - "+proj=utm +zone=3 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 1, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 3N\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); - add_srs_wkt (p, 2, - "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",-16"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"371"); - add_srs_wkt (p, 13, - "0\"]]"); - p = add_epsg_def (filter, first, last, 3711, "epsg", 3711, - "NAD83(NSRS2007) / UTM zone 4N"); - add_proj4text (p, 0, - "+proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 1, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 4N\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); - add_srs_wkt (p, 2, - "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",-15"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"371"); - add_srs_wkt (p, 13, - "1\"]]"); - p = add_epsg_def (filter, first, last, 3712, "epsg", 3712, - "NAD83(NSRS2007) / UTM zone 5N"); - add_proj4text (p, 0, - "+proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 1, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 5N\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); - add_srs_wkt (p, 2, - "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",-15"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"371"); - add_srs_wkt (p, 13, - "2\"]]"); - p = add_epsg_def (filter, first, last, 3713, "epsg", 3713, - "NAD83(NSRS2007) / UTM zone 6N"); - add_proj4text (p, 0, - "+proj=utm +zone=6 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 1, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 6N\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); - add_srs_wkt (p, 2, - "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",-14"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"371"); - add_srs_wkt (p, 13, - "3\"]]"); - p = add_epsg_def (filter, first, last, 3714, "epsg", 3714, - "NAD83(NSRS2007) / UTM zone 7N"); - add_proj4text (p, 0, - "+proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 1, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 7N\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); - add_srs_wkt (p, 2, - "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",-14"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"371"); - add_srs_wkt (p, 13, - "4\"]]"); - p = add_epsg_def (filter, first, last, 3715, "epsg", 3715, - "NAD83(NSRS2007) / UTM zone 8N"); - add_proj4text (p, 0, - "+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 1, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 8N\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); - add_srs_wkt (p, 2, - "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",-13"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"371"); - add_srs_wkt (p, 13, - "5\"]]"); - p = add_epsg_def (filter, first, last, 3716, "epsg", 3716, - "NAD83(NSRS2007) / UTM zone 9N"); - add_proj4text (p, 0, - "+proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 1, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 9N\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); - add_srs_wkt (p, 2, - "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",-12"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"371"); - add_srs_wkt (p, 13, - "6\"]]"); - p = add_epsg_def (filter, first, last, 3717, "epsg", 3717, - "NAD83(NSRS2007) / UTM zone 10N"); - add_proj4text (p, 0, - "+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 10N\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-1"); - add_srs_wkt (p, 9, - "23],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "717\"]]"); - p = add_epsg_def (filter, first, last, 3718, "epsg", 3718, - "NAD83(NSRS2007) / UTM zone 11N"); - add_proj4text (p, 0, - "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 11N\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-1"); - add_srs_wkt (p, 9, - "17],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "718\"]]"); - p = add_epsg_def (filter, first, last, 3719, "epsg", 3719, - "NAD83(NSRS2007) / UTM zone 12N"); - add_proj4text (p, 0, - "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 12N\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-1"); - add_srs_wkt (p, 9, - "11],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "719\"]]"); - p = add_epsg_def (filter, first, last, 3720, "epsg", 3720, - "NAD83(NSRS2007) / UTM zone 13N"); - add_proj4text (p, 0, - "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 13N\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-1"); - add_srs_wkt (p, 9, - "05],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "720\"]]"); - p = add_epsg_def (filter, first, last, 3721, "epsg", 3721, - "NAD83(NSRS2007) / UTM zone 14N"); - add_proj4text (p, 0, - "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 14N\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-9"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"372"); - add_srs_wkt (p, 13, - "1\"]]"); - p = add_epsg_def (filter, first, last, 3722, "epsg", 3722, - "NAD83(NSRS2007) / UTM zone 15N"); - add_proj4text (p, 0, - "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 15N\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-9"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"372"); - add_srs_wkt (p, 13, - "2\"]]"); - p = add_epsg_def (filter, first, last, 3723, "epsg", 3723, - "NAD83(NSRS2007) / UTM zone 16N"); - add_proj4text (p, 0, - "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 16N\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-8"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"372"); - add_srs_wkt (p, 13, - "3\"]]"); - p = add_epsg_def (filter, first, last, 3724, "epsg", 3724, - "NAD83(NSRS2007) / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 17N\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-8"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"372"); - add_srs_wkt (p, 13, - "4\"]]"); - p = add_epsg_def (filter, first, last, 3725, "epsg", 3725, - "NAD83(NSRS2007) / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 18N\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-7"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"372"); - add_srs_wkt (p, 13, - "5\"]]"); - p = add_epsg_def (filter, first, last, 3726, "epsg", 3726, - "NAD83(NSRS2007) / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / UTM zone 19N\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-6"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"372"); - add_srs_wkt (p, 13, - "6\"]]"); - p = add_epsg_def (filter, first, last, 3727, "epsg", 3727, - "Reunion 1947 / TM Reunion"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333"); - add_proj4text (p, 1, - "333333 +k=1 +x_0=160000 +y_0=50000 +ellps=intl +towgs84="); - add_proj4text (p, 2, - "94,-948,-1262,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Reunion 1947 / TM Reunion\",GEOGCS[\"Reunion 19"); - add_srs_wkt (p, 1, - "47\",DATUM[\"Reunion_1947\",SPHEROID[\"International 192"); - add_srs_wkt (p, 2, - "4\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[94"); - add_srs_wkt (p, 3, - ",-948,-1262,0,0,0,0],AUTHORITY[\"EPSG\",\"6626\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4626\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 7, - "ercator\"],PARAMETER[\"latitude_of_origin\",-21.11666666"); - add_srs_wkt (p, 8, - "666667],PARAMETER[\"central_meridian\",55.53333333333333"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",160000],PARAMETER[\"false_northing\",50000],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3727\"]]"); - p = add_epsg_def (filter, first, last, 3728, "epsg", 3728, - "NAD83(NSRS2007) / Ohio North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=G"); - add_proj4text (p, 2, - "RS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Ohio North (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",41.7],PARAMETER[\"stan"); - add_srs_wkt (p, 9, - "dard_parallel_2\",40.43333333333333],PARAMETER[\"latitud"); - add_srs_wkt (p, 10, - "e_of_origin\",39.66666666666666],PARAMETER[\"central_mer"); - add_srs_wkt (p, 11, - "idian\",-82.5],PARAMETER[\"false_easting\",1968500],PARA"); - add_srs_wkt (p, 12, - "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); - add_srs_wkt (p, 13, - "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); - add_srs_wkt (p, 14, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3728\"]]"); - p = add_epsg_def (filter, first, last, 3729, "epsg", 3729, - "NAD83(NSRS2007) / Ohio South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Ohio South (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",40.03333333333333],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"standard_parallel_2\",38.73333333333333],PARAME"); - add_srs_wkt (p, 10, - "TER[\"latitude_of_origin\",38],PARAMETER[\"central_merid"); - add_srs_wkt (p, 11, - "ian\",-82.5],PARAMETER[\"false_easting\",1968500],PARAME"); - add_srs_wkt (p, 12, - "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); - add_srs_wkt (p, 13, - "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 14, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3729\"]]"); - p = add_epsg_def (filter, first, last, 3730, "epsg", 3730, - "NAD83(NSRS2007) / Wyoming East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84"); - add_proj4text (p, 2, - "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Wyoming East (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",40.5],PARAMETER[\"central_mer"); - add_srs_wkt (p, 9, - "idian\",-105.1666666666667],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 10, - ".9999375],PARAMETER[\"false_easting\",656166.6667],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); - add_srs_wkt (p, 12, - "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 13, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3730\"]]"); - p = add_epsg_def (filter, first, last, 3731, "epsg", 3731, - "NAD83(NSRS2007) / Wyoming East Central (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellp"); - add_proj4text (p, 2, - "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Wyoming East Central (ftUS)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spati"); - add_srs_wkt (p, 2, - "al_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 3, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 4, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 5, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 6, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",40.5],PARAMETER[\"cen"); - add_srs_wkt (p, 9, - "tral_meridian\",-107.3333333333333],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 10, - "ctor\",0.9999375],PARAMETER[\"false_easting\",1312333.33"); - add_srs_wkt (p, 11, - "33],PARAMETER[\"false_northing\",328083.3333],UNIT[\"US "); - add_srs_wkt (p, 12, - "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 13, - "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 14, - "SG\",\"3731\"]]"); - p = add_epsg_def (filter, first, last, 3732, "epsg", 3732, - "NAD83(NSRS2007) / Wyoming West Central (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0"); - add_proj4text (p, 1, - "=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Wyoming West Central (ftUS)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spati"); - add_srs_wkt (p, 2, - "al_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 3, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 4, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 5, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 6, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",40.5],PARAMETER[\"cen"); - add_srs_wkt (p, 9, - "tral_meridian\",-108.75],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 10, - "99375],PARAMETER[\"false_easting\",1968500],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 12, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 13, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3732\"]]"); - p = add_epsg_def (filter, first, last, 3733, "epsg", 3733, - "NAD83(NSRS2007) / Wyoming West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +el"); - add_proj4text (p, 2, - "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Wyoming West (ftUS)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",40.5],PARAMETER[\"central_mer"); - add_srs_wkt (p, 9, - "idian\",-110.0833333333333],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 10, - ".9999375],PARAMETER[\"false_easting\",2624666.6667],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_northing\",328083.3333],UNIT[\"US survey f"); - add_srs_wkt (p, 12, - "oot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],A"); - add_srs_wkt (p, 13, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 14, - "733\"]]"); - p = add_epsg_def (filter, first, last, 3734, "epsg", 3734, - "NAD83 / Ohio North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +datum=N"); - add_proj4text (p, 2, - "AD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Ohio North (ftUS)\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.7]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",40.43333333333333],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"latitude_of_origin\",39.66666666666666],PARAME"); - add_srs_wkt (p, 10, - "TER[\"central_meridian\",-82.5],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 11, - "g\",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US s"); - add_srs_wkt (p, 12, - "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 13, - "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 14, - "G\",\"3734\"]]"); - p = add_epsg_def (filter, first, last, 3735, "epsg", 3735, - "NAD83 / Ohio South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +datum=NAD"); - add_proj4text (p, 2, - "83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Ohio South (ftUS)\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40.03"); - add_srs_wkt (p, 8, - "333333333333],PARAMETER[\"standard_parallel_2\",38.73333"); - add_srs_wkt (p, 9, - "333333333],PARAMETER[\"latitude_of_origin\",38],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"central_meridian\",-82.5],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); - add_srs_wkt (p, 12, - "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"3735\"]]"); - p = add_epsg_def (filter, first, last, 3736, "epsg", 3736, - "NAD83 / Wyoming East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=200000.00001016 +y_0=0 +datum=NAD83 +units=u"); - add_proj4text (p, 2, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Wyoming East (ftUS)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",40.5],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-105.1666666666667],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999375],PARAMETER[\"false_easting\",65"); - add_srs_wkt (p, 10, - "6166.6667],PARAMETER[\"false_northing\",0],UNIT[\"US sur"); - add_srs_wkt (p, 11, - "vey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"3736\"]]"); - p = add_epsg_def (filter, first, last, 3737, "epsg", 3737, - "NAD83 / Wyoming East Central (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=399999.99998984 +y_0=99999.99998983997 +datu"); - add_proj4text (p, 2, - "m=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Wyoming East Central (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",40.5"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",-107.3333333333333],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",0.9999375],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",1312333.3333],PARAMETER[\"false_northing\",328083"); - add_srs_wkt (p, 11, - ".3333],UNIT[\"US survey foot\",0.3048006096012192,AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 13, - "H],AUTHORITY[\"EPSG\",\"3737\"]]"); - p = add_epsg_def (filter, first, last, 3738, "epsg", 3738, - "NAD83 / Wyoming West Central (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0"); - add_proj4text (p, 1, - "=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Wyoming West Central (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",40.5"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",-108.75],PARAMETER[\"sc"); - add_srs_wkt (p, 9, - "ale_factor\",0.9999375],PARAMETER[\"false_easting\",1968"); - add_srs_wkt (p, 10, - "500],PARAMETER[\"false_northing\",0],UNIT[\"US survey fo"); - add_srs_wkt (p, 11, - "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"37"); - add_srs_wkt (p, 13, - "38\"]]"); - p = add_epsg_def (filter, first, last, 3739, "epsg", 3739, - "NAD83 / Wyoming West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +da"); - add_proj4text (p, 2, - "tum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Wyoming West (ftUS)\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",40.5],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-110.0833333333333],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999375],PARAMETER[\"false_easting\",26"); - add_srs_wkt (p, 10, - "24666.6667],PARAMETER[\"false_northing\",328083.3333],UN"); - add_srs_wkt (p, 11, - "IT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); - add_srs_wkt (p, 13, - "ITY[\"EPSG\",\"3739\"]]"); - p = add_epsg_def (filter, first, last, 3740, "epsg", 3740, - "NAD83(HARN) / UTM zone 10N"); - add_proj4text (p, 0, - "+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / UTM zone 10N\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-123],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3740\"]]"); - p = add_epsg_def (filter, first, last, 3741, "epsg", 3741, - "NAD83(HARN) / UTM zone 11N"); - add_proj4text (p, 0, - "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / UTM zone 11N\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-117],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3741\"]]"); - p = add_epsg_def (filter, first, last, 3742, "epsg", 3742, - "NAD83(HARN) / UTM zone 12N"); - add_proj4text (p, 0, - "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / UTM zone 12N\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-111],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3742\"]]"); - p = add_epsg_def (filter, first, last, 3743, "epsg", 3743, - "NAD83(HARN) / UTM zone 13N"); - add_proj4text (p, 0, - "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / UTM zone 13N\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-105],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3743\"]]"); - p = add_epsg_def (filter, first, last, 3744, "epsg", 3744, - "NAD83(HARN) / UTM zone 14N"); - add_proj4text (p, 0, - "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / UTM zone 14N\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-99],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3744\"]]"); - p = add_epsg_def (filter, first, last, 3745, "epsg", 3745, - "NAD83(HARN) / UTM zone 15N"); - add_proj4text (p, 0, - "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / UTM zone 15N\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-93],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3745\"]]"); - p = add_epsg_def (filter, first, last, 3746, "epsg", 3746, - "NAD83(HARN) / UTM zone 16N"); - add_proj4text (p, 0, - "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / UTM zone 16N\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-87],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3746\"]]"); - p = add_epsg_def (filter, first, last, 3747, "epsg", 3747, - "NAD83(HARN) / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / UTM zone 17N\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-81],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3747\"]]"); - p = add_epsg_def (filter, first, last, 3748, "epsg", 3748, - "NAD83(HARN) / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / UTM zone 18N\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-75],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3748\"]]"); - p = add_epsg_def (filter, first, last, 3749, "epsg", 3749, - "NAD83(HARN) / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / UTM zone 19N\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-69],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3749\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_17.c b/src/spatialite/src/srsinit/epsg_inlined_17.c deleted file mode 100644 index 5c785a1..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_17.c +++ /dev/null @@ -1,3398 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_17 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 3750, "epsg", 3750, - "NAD83(HARN) / UTM zone 4N"); - add_proj4text (p, 0, - "+proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 1, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / UTM zone 4N\",GEOGCS[\"NAD83(HARN"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",0],PARAMETER[\"central_meridian\",-159],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3750\"]]"); - p = add_epsg_def (filter, first, last, 3751, "epsg", 3751, - "NAD83(HARN) / UTM zone 5N"); - add_proj4text (p, 0, - "+proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 1, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / UTM zone 5N\",GEOGCS[\"NAD83(HARN"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",0],PARAMETER[\"central_meridian\",-153],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3751\"]]"); - p = add_epsg_def (filter, first, last, 3752, "epsg", 3752, - "WGS 84 / Mercator 41 (deprecated)"); - add_proj4text (p, 0, - "+proj=merc +lon_0=100 +lat_ts=-41 +x_0=0 +y_0=0 +datum=W"); - add_proj4text (p, 1, - "GS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / Mercator 41 (deprecated)\",GEOGCS[\"WG"); - add_srs_wkt (p, 1, - "S 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,29"); - add_srs_wkt (p, 2, - "8.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Mercator_1SP\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 7, - ",-41],PARAMETER[\"central_meridian\",100],PARAMETER[\"sc"); - add_srs_wkt (p, 8, - "ale_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER"); - add_srs_wkt (p, 9, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 10, - "\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"3752\"]]"); - p = add_epsg_def (filter, first, last, 3753, "epsg", 3753, - "NAD83(HARN) / Ohio North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=G"); - add_proj4text (p, 2, - "RS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Ohio North (ftUS)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",41.7],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",40.43333333333333],PARAMETER[\"latitude_of_origin\",39."); - add_srs_wkt (p, 10, - "66666666666666],PARAMETER[\"central_meridian\",-82.5],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_easting\",1968500],PARAMETER[\"false_nor"); - add_srs_wkt (p, 12, - "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); - add_srs_wkt (p, 13, - "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 14, - "NORTH],AUTHORITY[\"EPSG\",\"3753\"]]"); - p = add_epsg_def (filter, first, last, 3754, "epsg", 3754, - "NAD83(HARN) / Ohio South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS"); - add_proj4text (p, 2, - "80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Ohio South (ftUS)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",40.03333333333333],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",38.73333333333333],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",38],PARAMETER[\"central_meridian\",-82.5],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_easting\",1968500],PARAMETER[\"false_north"); - add_srs_wkt (p, 12, - "ing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTH"); - add_srs_wkt (p, 13, - "ORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 14, - "RTH],AUTHORITY[\"EPSG\",\"3754\"]]"); - p = add_epsg_def (filter, first, last, 3755, "epsg", 3755, - "NAD83(HARN) / Wyoming East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84"); - add_proj4text (p, 2, - "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Wyoming East (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",40.5],PARAMETER[\"central_meridian\",-105.166"); - add_srs_wkt (p, 9, - "6666666667],PARAMETER[\"scale_factor\",0.9999375],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",656166.6667],PARAMETER[\"false_nor"); - add_srs_wkt (p, 11, - "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 13, - "NORTH],AUTHORITY[\"EPSG\",\"3755\"]]"); - p = add_epsg_def (filter, first, last, 3756, "epsg", 3756, - "NAD83(HARN) / Wyoming East Central (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellp"); - add_proj4text (p, 2, - "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Wyoming East Central (ftUS)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Referenc"); - add_srs_wkt (p, 2, - "e_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); - add_srs_wkt (p, 7, - "52\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",40.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-107.3333333333333],PARAMETER[\"scale_factor\",0.999937"); - add_srs_wkt (p, 10, - "5],PARAMETER[\"false_easting\",1312333.3333],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",328083.3333],UNIT[\"US survey foot\",0."); - add_srs_wkt (p, 12, - "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3756\"]]"); - p = add_epsg_def (filter, first, last, 3757, "epsg", 3757, - "NAD83(HARN) / Wyoming West Central (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0"); - add_proj4text (p, 1, - "=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Wyoming West Central (ftUS)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Referenc"); - add_srs_wkt (p, 2, - "e_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); - add_srs_wkt (p, 7, - "52\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",40.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-108.75],PARAMETER[\"scale_factor\",0.9999375],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",1968500],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"3757\"]]"); - p = add_epsg_def (filter, first, last, 3758, "epsg", 3758, - "NAD83(HARN) / Wyoming West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +el"); - add_proj4text (p, 2, - "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Wyoming West (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); - add_srs_wkt (p, 2, - "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",40.5],PARAMETER[\"central_meridian\",-110.083"); - add_srs_wkt (p, 9, - "3333333333],PARAMETER[\"scale_factor\",0.9999375],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",2624666.6667],PARAMETER[\"false_no"); - add_srs_wkt (p, 11, - "rthing\",328083.3333],UNIT[\"US survey foot\",0.30480060"); - add_srs_wkt (p, 12, - "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); - add_srs_wkt (p, 13, - "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3758\"]]"); - p = add_epsg_def (filter, first, last, 3759, "epsg", 3759, - "NAD83 / Hawaii zone 3 (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99"); - add_proj4text (p, 1, - "999 +x_0=500000.00001016 +y_0=0 +datum=NAD83 +units=us-f"); - add_proj4text (p, 2, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Hawaii zone 3 (ftUS)\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",21.16666666"); - add_srs_wkt (p, 8, - "666667],PARAMETER[\"central_meridian\",-158],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.99999],PARAMETER[\"false_easting\",1640"); - add_srs_wkt (p, 10, - "416.6667],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); - add_srs_wkt (p, 11, - "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"3759\"]]"); - p = add_epsg_def (filter, first, last, 3760, "epsg", 3760, - "NAD83(HARN) / Hawaii zone 3 (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99"); - add_proj4text (p, 1, - "999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,"); - add_proj4text (p, 2, - "0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Hawaii zone 3 (ftUS)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); - add_srs_wkt (p, 2, - "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",21.16666666666667],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",-158],PARAMETER[\"scale_factor\",0.99999],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",1640416.6667],PARAMETER[\"false_nor"); - add_srs_wkt (p, 11, - "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 13, - "NORTH],AUTHORITY[\"EPSG\",\"3760\"]]"); - p = add_epsg_def (filter, first, last, 3761, "epsg", 3761, - "NAD83(CSRS) / UTM zone 22N"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / UTM zone 22N\",GEOGCS[\"NAD83(CSR"); - add_srs_wkt (p, 1, - "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",0],PARAMETER[\"central_meridian\",-51],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3761\"]]"); - p = add_epsg_def (filter, first, last, 3762, "epsg", 3762, - "WGS 84 / South Georgia Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-54 +lat_2=-54.75 +lat_0=-55 +lon_0=-37"); - add_proj4text (p, 1, - " +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / South Georgia Lambert\",GEOGCS[\"WGS 8"); - add_srs_wkt (p, 1, - "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); - add_srs_wkt (p, 2, - "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); - add_srs_wkt (p, 6, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 7, - "_parallel_1\",-54],PARAMETER[\"standard_parallel_2\",-54"); - add_srs_wkt (p, 8, - ".75],PARAMETER[\"latitude_of_origin\",-55],PARAMETER[\"c"); - add_srs_wkt (p, 9, - "entral_meridian\",-37],PARAMETER[\"false_easting\",0],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"3762\"]]"); - p = add_epsg_def (filter, first, last, 3763, "epsg", 3763, - "ETRS89 / Portugal TM06"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=39.66825833333333 +lon_0=-8.133108333"); - add_proj4text (p, 1, - "333334 +k=1 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / Portugal TM06\",GEOGCS[\"ETRS89\",DATU"); - add_srs_wkt (p, 1, - "M[\"European_Terrestrial_Reference_System_1989\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "39.66825833333333],PARAMETER[\"central_meridian\",-8.133"); - add_srs_wkt (p, 9, - "108333333334],PARAMETER[\"scale_factor\",1],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); - add_srs_wkt (p, 12, - "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3763\"]]"); - p = add_epsg_def (filter, first, last, 3764, "epsg", 3764, - "NZGD2000 / Chatham Island Circuit 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=400000 +y"); - add_proj4text (p, 1, - "_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); - add_proj4text (p, 2, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Chatham Island Circuit 2000\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NZGD2000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",-44],PARAMETER[\"central_meridian\",-176.5],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",40"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",800000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3764\"]]"); - p = add_epsg_def (filter, first, last, 3765, "epsg", 3765, - "HTRS96 / Croatia TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=16.5 +k=0.9999 +x_0=500000 +"); - add_proj4text (p, 1, - "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"HTRS96 / Croatia TM\",GEOGCS[\"HTRS96\",DATUM[\""); - add_srs_wkt (p, 1, - "Croatian_Terrestrial_Reference_System\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6761\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4761\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",16.5],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9999],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"3765\"]]"); - p = add_epsg_def (filter, first, last, 3766, "epsg", 3766, - "HTRS96 / Croatia LCC"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.91666666666666 +lat_2=43.08333333333"); - add_proj4text (p, 1, - "334 +lat_0=0 +lon_0=16.5 +x_0=0 +y_0=0 +ellps=GRS80 +tow"); - add_proj4text (p, 2, - "gs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"HTRS96 / Croatia LCC\",GEOGCS[\"HTRS96\",DATUM["); - add_srs_wkt (p, 1, - "\"Croatian_Terrestrial_Reference_System\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6761\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4761\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",45.91666666666666],PARAMETER[\"standard_parallel_2\",43"); - add_srs_wkt (p, 9, - ".08333333333334],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"central_meridian\",16.5],PARAMETER[\"false_east"); - add_srs_wkt (p, 11, - "ing\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 12, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); - add_srs_wkt (p, 13, - "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3766\"]]"); - p = add_epsg_def (filter, first, last, 3767, "epsg", 3767, - "HTRS96 / UTM zone 33N"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"HTRS96 / UTM zone 33N\",GEOGCS[\"HTRS96\",DATUM"); - add_srs_wkt (p, 1, - "[\"Croatian_Terrestrial_Reference_System\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6761\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4761\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",15],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"3767\"]]"); - p = add_epsg_def (filter, first, last, 3768, "epsg", 3768, - "HTRS96 / UTM zone 34N"); - add_proj4text (p, 0, - "+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"HTRS96 / UTM zone 34N\",GEOGCS[\"HTRS96\",DATUM"); - add_srs_wkt (p, 1, - "[\"Croatian_Terrestrial_Reference_System\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6761\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4761\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",21],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"3768\"]]"); - p = add_epsg_def (filter, first, last, 3769, "epsg", 3769, - "Bermuda 1957 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=clrk66 +towgs84=-73,213,296,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Bermuda 1957 / UTM zone 20N\",GEOGCS[\"Bermuda "); - add_srs_wkt (p, 1, - "1957\",DATUM[\"Bermuda_1957\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[-73,213,296,0,0,0,0],AUTHORITY[\"EPSG\",\"6216\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4216\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"3769\"]]"); - p = add_epsg_def (filter, first, last, 3770, "epsg", 3770, - "BDA2000 / Bermuda 2000 National Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=32 +lon_0=-64.75 +k=1 +x_0=550000 +y_"); - add_proj4text (p, 1, - "0=100000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +n"); - add_proj4text (p, 2, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"BDA2000 / Bermuda 2000 National Grid\",GEOGCS[\""); - add_srs_wkt (p, 1, - "BDA2000\",DATUM[\"Bermuda_2000\",SPHEROID[\"WGS 84\",637"); - add_srs_wkt (p, 2, - "8137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6762\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4762\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",32],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",-64.75],PARAMETER[\"scale_factor\",1],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",550000],PARAMETER[\"false_no"); - add_srs_wkt (p, 10, - "rthing\",100000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"3770\"]]"); - p = add_epsg_def (filter, first, last, 3771, "epsg", 3771, - "NAD27 / Alberta 3TM ref merid 111 W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alberta 3TM ref merid 111 W\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); - add_srs_wkt (p, 2, - "larke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-111],PARAMETER[\"scale_factor\",0.9999],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); - add_srs_wkt (p, 10, - "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 11, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"3771\"]]"); - p = add_epsg_def (filter, first, last, 3772, "epsg", 3772, - "NAD27 / Alberta 3TM ref merid 114 W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alberta 3TM ref merid 114 W\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); - add_srs_wkt (p, 2, - "larke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-114],PARAMETER[\"scale_factor\",0.9999],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); - add_srs_wkt (p, 10, - "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 11, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"3772\"]]"); - p = add_epsg_def (filter, first, last, 3773, "epsg", 3773, - "NAD27 / Alberta 3TM ref merid 117 W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alberta 3TM ref merid 117 W\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); - add_srs_wkt (p, 2, - "larke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-117],PARAMETER[\"scale_factor\",0.9999],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); - add_srs_wkt (p, 10, - "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 11, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"3773\"]]"); - p = add_epsg_def (filter, first, last, 3774, "epsg", 3774, - "NAD27 / Alberta 3TM ref merid 120 W (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alberta 3TM ref merid 120 W (deprecated"); - add_srs_wkt (p, 1, - ")\",GEOGCS[\"NAD27\",DATUM[\"North_American_Datum_1927\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Clarke 1866\",6378206.4,294.9786982138982,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4267\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-120],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"3774\"]]"); - p = add_epsg_def (filter, first, last, 3775, "epsg", 3775, - "NAD83 / Alberta 3TM ref merid 111 W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alberta 3TM ref merid 111 W\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-111],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"3775\"]]"); - p = add_epsg_def (filter, first, last, 3776, "epsg", 3776, - "NAD83 / Alberta 3TM ref merid 114 W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alberta 3TM ref merid 114 W\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-114],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"3776\"]]"); - p = add_epsg_def (filter, first, last, 3777, "epsg", 3777, - "NAD83 / Alberta 3TM ref merid 117 W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alberta 3TM ref merid 117 W\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"3777\"]]"); - p = add_epsg_def (filter, first, last, 3778, "epsg", 3778, - "NAD83 / Alberta 3TM ref merid 120 W (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alberta 3TM ref merid 120 W (deprecated"); - add_srs_wkt (p, 1, - ")\",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",-120],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"3778\"]]"); - p = add_epsg_def (filter, first, last, 3779, "epsg", 3779, - "NAD83(CSRS) / Alberta 3TM ref merid 111 W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / Alberta 3TM ref merid 111 W\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4617\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "111],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3779\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 3780, "epsg", 3780, - "NAD83(CSRS) / Alberta 3TM ref merid 114 W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / Alberta 3TM ref merid 114 W\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4617\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "114],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3780\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 3781, "epsg", 3781, - "NAD83(CSRS) / Alberta 3TM ref merid 117 W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / Alberta 3TM ref merid 117 W\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4617\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "117],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3781\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 3782, "epsg", 3782, - "NAD83(CSRS) / Alberta 3TM ref merid 120 W (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / Alberta 3TM ref merid 120 W (depr"); - add_srs_wkt (p, 1, - "ecated)\",GEOGCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_"); - add_srs_wkt (p, 2, - "Spatial_Reference_System\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 3, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 4, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 5, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 6, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4617\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",-120],PARAMETER[\"scale_factor\",0.9999],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"3782\"]]"); - p = add_epsg_def (filter, first, last, 3783, "epsg", 3783, - "Pitcairn 2006 / Pitcairn TM 2006"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-25.06855261111111 +lon_0=-130.112967"); - add_proj4text (p, 1, - "1111111 +k=1 +x_0=14200 +y_0=15500 +ellps=WGS84 +towgs84"); - add_proj4text (p, 2, - "=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pitcairn 2006 / Pitcairn TM 2006\",GEOGCS[\"Pit"); - add_srs_wkt (p, 1, - "cairn 2006\",DATUM[\"Pitcairn_2006\",SPHEROID[\"WGS 84\""); - add_srs_wkt (p, 2, - ",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6763\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4763\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",-25.068552611"); - add_srs_wkt (p, 8, - "11111],PARAMETER[\"central_meridian\",-130.1129671111111"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",14200],PARAMETER[\"false_northing\",15500],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3783\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 3784, "epsg", 3784, - "Pitcairn 1967 / UTM zone 9S"); - add_proj4text (p, 0, - "+proj=utm +zone=9 +south +ellps=intl +towgs84=185,165,42"); - add_proj4text (p, 1, - ",0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pitcairn 1967 / UTM zone 9S\",GEOGCS[\"Pitcairn"); - add_srs_wkt (p, 1, - " 1967\",DATUM[\"Pitcairn_1967\",SPHEROID[\"International"); - add_srs_wkt (p, 2, - " 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[185,165,42,0,0,0,0],AUTHORITY[\"EPSG\",\"6729\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4729\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",-129],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"3784\"]]"); - p = add_epsg_def (filter, first, last, 3785, "epsg", 3785, - "Popular Visualisation CRS / Mercator (deprecated)"); - add_proj4text (p, 0, - "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 "); - add_proj4text (p, 1, - "+x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext "); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Popular Visualisation CRS / Mercator (deprecate"); - add_srs_wkt (p, 1, - "d)\",GEOGCS[\"Popular Visualisation CRS\",DATUM[\"Popula"); - add_srs_wkt (p, 2, - "r_Visualisation_Datum\",SPHEROID[\"Popular Visualisation"); - add_srs_wkt (p, 3, - " Sphere\",6378137,0,AUTHORITY[\"EPSG\",\"7059\"]],TOWGS8"); - add_srs_wkt (p, 4, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6055\"]],PRIMEM[\""); - add_srs_wkt (p, 5, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 6, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 7, - "HORITY[\"EPSG\",\"4055\"]],PROJECTION[\"Mercator_1SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],EXTENSION[\"PRO"); - add_srs_wkt (p, 12, - "J4\",\"+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon"); - add_srs_wkt (p, 13, - "_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +"); - add_srs_wkt (p, 14, - "wktext +no_defs\"],AUTHORITY[\"EPSG\",\"3785\"]]"); - p = add_epsg_def (filter, first, last, 3786, "epsg", 3786, - "World Equidistant Cylindrical (Sphere) (deprecated)"); - add_proj4text (p, 0, - "+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6"); - add_proj4text (p, 1, - "371007 +b=6371007 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"World Equidistant Cylindrical (Sphere) (depreca"); - add_srs_wkt (p, 1, - "ted)\",GEOGCS[\"Unspecified datum based upon the GRS 198"); - add_srs_wkt (p, 2, - "0 Authalic Sphere\",DATUM[\"Not_specified_based_on_GRS_1"); - add_srs_wkt (p, 3, - "980_Authalic_Sphere\",SPHEROID[\"GRS 1980 Authalic Spher"); - add_srs_wkt (p, 4, - "e\",6371007,0,AUTHORITY[\"EPSG\",\"7048\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"6047\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4047\"]],PR"); - add_srs_wkt (p, 8, - "OJECTION[\"Equirectangular\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 9, - "igin\",0],PARAMETER[\"central_meridian\",0],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); - add_srs_wkt (p, 12, - "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3786\"]]"); - p = add_epsg_def (filter, first, last, 3787, "epsg", 3787, - "MGI / Slovene National Grid (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=-5000000 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Slovene National Grid (deprecated)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"MGI\",DATUM[\"Militar_Geographische_Institute\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137"); - add_srs_wkt (p, 4, - ",1.474,5.297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIME"); - add_srs_wkt (p, 5, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 6, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 7, - ",AUTHORITY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 8, - "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); - add_srs_wkt (p, 9, - "[\"central_meridian\",15],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 10, - "999],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"9001\"]],AXIS[\"Y\",EAST],AXIS[\"X\",NORTH],AUTHOR"); - add_srs_wkt (p, 13, - "ITY[\"EPSG\",\"3787\"]]"); - p = add_epsg_def (filter, first, last, 3788, "epsg", 3788, - "NZGD2000 / Auckland Islands TM 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=166 +k=1 +x_0=3500000 +y_0=1"); - add_proj4text (p, 1, - "0000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Auckland Islands TM 2000\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NZGD2000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",166],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",1],PARAMETER[\"false_easting\",3500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3788\"]]"); - p = add_epsg_def (filter, first, last, 3789, "epsg", 3789, - "NZGD2000 / Campbell Island TM 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=169 +k=1 +x_0=3500000 +y_0=1"); - add_proj4text (p, 1, - "0000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Campbell Island TM 2000\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ZGD2000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",0],PARAMETER[\"central_meridian\",169],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",1],PARAMETER[\"false_easting\",3500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3789\"]]"); - p = add_epsg_def (filter, first, last, 3790, "epsg", 3790, - "NZGD2000 / Antipodes Islands TM 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=179 +k=1 +x_0=3500000 +y_0=1"); - add_proj4text (p, 1, - "0000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Antipodes Islands TM 2000\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NZGD2000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",179],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",1],PARAMETER[\"false_easting\",3500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3790\"]]"); - p = add_epsg_def (filter, first, last, 3791, "epsg", 3791, - "NZGD2000 / Raoul Island TM 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-178 +k=1 +x_0=3500000 +y_0="); - add_proj4text (p, 1, - "10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); - add_proj4text (p, 2, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Raoul Island TM 2000\",GEOGCS[\"NZGD"); - add_srs_wkt (p, 1, - "2000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",-178],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",3500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Easting\",EAST],AUTHORITY[\"EPSG\",\"3791\"]]"); - p = add_epsg_def (filter, first, last, 3793, "epsg", 3793, - "NZGD2000 / Chatham Islands TM 2000"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-176.5 +k=1 +x_0=3500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / Chatham Islands TM 2000\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ZGD2000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",0],PARAMETER[\"central_meridian\",-176.5],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",3500000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3793\"]]"); - p = add_epsg_def (filter, first, last, 3794, "epsg", 3794, - "Slovenia 1996 / Slovene National Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Slovenia 1996 / Slovene National Grid\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Slovenia 1996\",DATUM[\"Slovenia_Geodetic_Datum_1996\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6765\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4765\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",15],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",-5000000],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST"); - add_srs_wkt (p, 12, - "],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3794\"]]"); - p = add_epsg_def (filter, first, last, 3795, "epsg", 3795, - "NAD27 / Cuba Norte"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=23 +lat_2=21.7 +lat_0=22.35 +lon_0=-81 "); - add_proj4text (p, 1, - "+x_0=500000 +y_0=280296.016 +datum=NAD27 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Cuba Norte\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"standard_parallel_1\",23],PARAMETER[\"standard_p"); - add_srs_wkt (p, 8, - "arallel_2\",21.7],PARAMETER[\"latitude_of_origin\",22.35"); - add_srs_wkt (p, 9, - "],PARAMETER[\"central_meridian\",-81],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",280296.01"); - add_srs_wkt (p, 11, - "6],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AXIS[\"X\",EAST],AUTHORITY[\"EPSG\",\"3795\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 3796, "epsg", 3796, - "NAD27 / Cuba Sur"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=21.3 +lat_2=20.13333333333333 +lat_0=20"); - add_proj4text (p, 1, - ".71666666666667 +lon_0=-76.83333333333333 +x_0=500000 +y"); - add_proj4text (p, 2, - "_0=229126.939 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Cuba Sur\",GEOGCS[\"NAD27\",DATUM[\"Nor"); - add_srs_wkt (p, 1, - "th_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637820"); - add_srs_wkt (p, 2, - "6.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"426"); - add_srs_wkt (p, 6, - "7\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); - add_srs_wkt (p, 7, - "TER[\"standard_parallel_1\",21.3],PARAMETER[\"standard_p"); - add_srs_wkt (p, 8, - "arallel_2\",20.13333333333333],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 9, - "rigin\",20.71666666666667],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 10, - ",-76.83333333333333],PARAMETER[\"false_easting\",500000]"); - add_srs_wkt (p, 11, - ",PARAMETER[\"false_northing\",229126.939],UNIT[\"metre\""); - add_srs_wkt (p, 12, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Y\",NORTH],AXIS["); - add_srs_wkt (p, 13, - "\"X\",EAST],AUTHORITY[\"EPSG\",\"3796\"]]"); - p = add_epsg_def (filter, first, last, 3797, "epsg", 3797, - "NAD27 / MTQ Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0="); - add_proj4text (p, 1, - "800000 +y_0=0 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / MTQ Lambert\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 7, - "AMETER[\"standard_parallel_1\",50],PARAMETER[\"standard_"); - add_srs_wkt (p, 8, - "parallel_2\",46],PARAMETER[\"latitude_of_origin\",44],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"central_meridian\",-70],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",800000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3797\"]]"); - p = add_epsg_def (filter, first, last, 3798, "epsg", 3798, - "NAD83 / MTQ Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0="); - add_proj4text (p, 1, - "800000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTQ Lambert\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); - add_srs_wkt (p, 7, - "nic_2SP\"],PARAMETER[\"standard_parallel_1\",50],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_2\",46],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 9, - "rigin\",44],PARAMETER[\"central_meridian\",-70],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",800000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3798\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 3799, "epsg", 3799, - "NAD83(CSRS) / MTQ Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0="); - add_proj4text (p, 1, - "800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTQ Lambert\",GEOGCS[\"NAD83(CSRS"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_1\",50],PARAMETER[\"standard_parallel_2\",46],"); - add_srs_wkt (p, 9, - "PARAMETER[\"latitude_of_origin\",44],PARAMETER[\"central"); - add_srs_wkt (p, 10, - "_meridian\",-70],PARAMETER[\"false_easting\",800000],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"3799\"]]"); - p = add_epsg_def (filter, first, last, 3800, "epsg", 3800, - "NAD27 / Alberta 3TM ref merid 120 W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alberta 3TM ref merid 120 W\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); - add_srs_wkt (p, 2, - "larke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-120],PARAMETER[\"scale_factor\",0.9999],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); - add_srs_wkt (p, 10, - "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 11, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"3800\"]]"); - p = add_epsg_def (filter, first, last, 3801, "epsg", 3801, - "NAD83 / Alberta 3TM ref merid 120 W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alberta 3TM ref merid 120 W\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-120],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"3801\"]]"); - p = add_epsg_def (filter, first, last, 3802, "epsg", 3802, - "NAD83(CSRS) / Alberta 3TM ref merid 120 W"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / Alberta 3TM ref merid 120 W\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); - add_srs_wkt (p, 2, - "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4617\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "120],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3802\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 3812, "epsg", 3812, - "ETRS89 / Belgian Lambert 2008"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666"); - add_proj4text (p, 1, - "666 +lat_0=50.797815 +lon_0=4.359215833333333 +x_0=64932"); - add_proj4text (p, 2, - "8 +y_0=665262 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); - add_proj4text (p, 3, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / Belgian Lambert 2008\",GEOGCS[\"ETRS89"); - add_srs_wkt (p, 1, - "\",DATUM[\"European_Terrestrial_Reference_System_1989\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",49.83333333333334],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",51.16666666666666],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",50.797815],PARAMETER[\"central_meridian\",4.35"); - add_srs_wkt (p, 11, - "9215833333333],PARAMETER[\"false_easting\",649328],PARAM"); - add_srs_wkt (p, 12, - "ETER[\"false_northing\",665262],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 13, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 14, - "],AUTHORITY[\"EPSG\",\"3812\"]]"); - p = add_epsg_def (filter, first, last, 3814, "epsg", 3814, - "NAD83 / Mississippi TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0="); - add_proj4text (p, 1, - "500000 +y_0=1300000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Mississippi TM\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",32.5],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-89.75],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 9, - "9998335],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",1300000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"3814\"]]"); - p = add_epsg_def (filter, first, last, 3815, "epsg", 3815, - "NAD83(HARN) / Mississippi TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0="); - add_proj4text (p, 1, - "500000 +y_0=1300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Mississippi TM\",GEOGCS[\"NAD83(H"); - add_srs_wkt (p, 1, - "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",32.5],PARAMETER[\"central_meridian\",-89.75],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",0.9998335],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",1300000],UNIT"); - add_srs_wkt (p, 11, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 12, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3815\"]]"); - p = add_epsg_def (filter, first, last, 3816, "epsg", 3816, - "NAD83(NSRS2007) / Mississippi TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0="); - add_proj4text (p, 1, - "500000 +y_0=1300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Mississippi TM\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); - add_srs_wkt (p, 2, - "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 3, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",32.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-89.75],PARAMETER[\"scale_factor\",0.9998335],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_easting\",500000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 11, - "1300000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 12, - "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3816\"]]"); - p = add_epsg_def (filter, first, last, 3819, "epsg", 3819, - "HD1909"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=595.48,121.69,515.3"); - add_proj4text (p, 1, - "5,4.115,-2.9383,0.853,-3.408 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"HD1909\",DATUM[\"Hungarian_Datum_1909\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EP"); - add_srs_wkt (p, 2, - "SG\",\"7004\"]],TOWGS84[595.48,121.69,515.35,4.115,-2.93"); - add_srs_wkt (p, 3, - "83,0.853,-3.408],AUTHORITY[\"EPSG\",\"1024\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"3819\"]]"); - p = add_epsg_def (filter, first, last, 3821, "epsg", 3821, - "TWD67"); - add_proj4text (p, 0, - "+proj=longlat +ellps=aust_SA +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"TWD67\",DATUM[\"Taiwan_Datum_1967\",SPHEROID[\""); - add_srs_wkt (p, 1, - "GRS 1967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7050\"]],AUTHORITY[\"EPSG\",\"1025\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 3, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 4, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"3821\"]]"); - p = add_epsg_def (filter, first, last, 3824, "epsg", 3824, - "TWD97"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"TWD97\",DATUM[\"Taiwan_Datum_1997\",SPHEROID[\""); - add_srs_wkt (p, 1, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1026\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"3824\"]]"); - p = add_epsg_def (filter, first, last, 3825, "epsg", 3825, - "TWD97 / TM2 zone 119"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.9999 +x_0=250000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"TWD97 / TM2 zone 119\",GEOGCS[\"TWD97\",DATUM[\""); - add_srs_wkt (p, 1, - "Taiwan_Datum_1997\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 2, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"1026\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"3824\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",119],PARAMETER[\"scale_factor\",0.9999],PARAMETER["); - add_srs_wkt (p, 9, - "\"false_easting\",250000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3825\"]"); - add_srs_wkt (p, 12, - "]"); - p = add_epsg_def (filter, first, last, 3826, "epsg", 3826, - "TWD97 / TM2 zone 121"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"TWD97 / TM2 zone 121\",GEOGCS[\"TWD97\",DATUM[\""); - add_srs_wkt (p, 1, - "Taiwan_Datum_1997\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 2, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"1026\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"3824\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",121],PARAMETER[\"scale_factor\",0.9999],PARAMETER["); - add_srs_wkt (p, 9, - "\"false_easting\",250000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3826\"]"); - add_srs_wkt (p, 12, - "]"); - p = add_epsg_def (filter, first, last, 3827, "epsg", 3827, - "TWD67 / TM2 zone 119"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.9999 +x_0=250000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=aust_SA +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TWD67 / TM2 zone 119\",GEOGCS[\"TWD67\",DATUM[\""); - add_srs_wkt (p, 1, - "Taiwan_Datum_1967\",SPHEROID[\"GRS 1967 Modified\",63781"); - add_srs_wkt (p, 2, - "60,298.25,AUTHORITY[\"EPSG\",\"7050\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"1025\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"3821\"]],PROJEC"); - add_srs_wkt (p, 6, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 7, - "igin\",0],PARAMETER[\"central_meridian\",119],PARAMETER["); - add_srs_wkt (p, 8, - "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",250"); - add_srs_wkt (p, 9, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 10, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 11, - "NORTH],AUTHORITY[\"EPSG\",\"3827\"]]"); - p = add_epsg_def (filter, first, last, 3828, "epsg", 3828, - "TWD67 / TM2 zone 121"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=aust_SA +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TWD67 / TM2 zone 121\",GEOGCS[\"TWD67\",DATUM[\""); - add_srs_wkt (p, 1, - "Taiwan_Datum_1967\",SPHEROID[\"GRS 1967 Modified\",63781"); - add_srs_wkt (p, 2, - "60,298.25,AUTHORITY[\"EPSG\",\"7050\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"1025\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"3821\"]],PROJEC"); - add_srs_wkt (p, 6, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 7, - "igin\",0],PARAMETER[\"central_meridian\",121],PARAMETER["); - add_srs_wkt (p, 8, - "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",250"); - add_srs_wkt (p, 9, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 10, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 11, - "NORTH],AUTHORITY[\"EPSG\",\"3828\"]]"); - p = add_epsg_def (filter, first, last, 3829, "epsg", 3829, - "Hu Tzu Shan 1950 / UTM zone 51N"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +ellps=intl +towgs84=-637,-549,-203,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Hu Tzu Shan 1950 / UTM zone 51N\",GEOGCS[\"Hu T"); - add_srs_wkt (p, 1, - "zu Shan 1950\",DATUM[\"Hu_Tzu_Shan_1950\",SPHEROID[\"Int"); - add_srs_wkt (p, 2, - "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-637,-549,-203,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6236\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4236\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",123],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"3829\"]]"); - p = add_epsg_def (filter, first, last, 3832, "epsg", 3832, - "WGS 84 / PDC Mercator"); - add_proj4text (p, 0, - "+proj=merc +lon_0=150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +u"); - add_proj4text (p, 1, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / PDC Mercator\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Merc"); - add_srs_wkt (p, 6, - "ator_1SP\"],PARAMETER[\"central_meridian\",150],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 9, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 10, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"3832\"]]"); - p = add_epsg_def (filter, first, last, 3833, "epsg", 3833, - "Pulkovo 1942(58) / Gauss-Kruger zone 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.8"); - add_proj4text (p, 2, - "44,-0.84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / Gauss-Kruger zone 2\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-"); - add_srs_wkt (p, 4, - "0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4179\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",9],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",2500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 12, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3833\"]]"); - p = add_epsg_def (filter, first, last, 3834, "epsg", 3834, - "Pulkovo 1942(83) / Gauss-Kruger zone 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(83) / Gauss-Kruger zone 2\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\"sc"); - add_srs_wkt (p, 9, - "ale_factor\",1],PARAMETER[\"false_easting\",2500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"3834\"]]"); - p = add_epsg_def (filter, first, last, 3835, "epsg", 3835, - "Pulkovo 1942(83) / Gauss-Kruger zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(83) / Gauss-Kruger zone 3\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",1],PARAMETER[\"false_easting\",3500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"3835\"]]"); - p = add_epsg_def (filter, first, last, 3836, "epsg", 3836, - "Pulkovo 1942(83) / Gauss-Kruger zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(83) / Gauss-Kruger zone 4\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",21],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",1],PARAMETER[\"false_easting\",4500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"3836\"]]"); - p = add_epsg_def (filter, first, last, 3837, "epsg", 3837, - "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.8"); - add_proj4text (p, 2, - "44,-0.84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 3"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); - add_srs_wkt (p, 4, - "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 5, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",9],PARAMETER[\"scale_factor\",1],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",3500000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3837\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 3838, "epsg", 3838, - "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); - add_proj4text (p, 2, - "844,-0.84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 4"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); - add_srs_wkt (p, 4, - "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 5, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",12],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",4500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"383"); - add_srs_wkt (p, 13, - "8\"]]"); - p = add_epsg_def (filter, first, last, 3839, "epsg", 3839, - "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); - add_proj4text (p, 2, - "844,-0.84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 9"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); - add_srs_wkt (p, 4, - "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 5, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",27],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",9500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"383"); - add_srs_wkt (p, 13, - "9\"]]"); - p = add_epsg_def (filter, first, last, 3840, "epsg", 3840, - "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 10"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0"); - add_proj4text (p, 2, - ".844,-0.84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 1"); - add_srs_wkt (p, 1, - "0\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); - add_srs_wkt (p, 4, - "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 5, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",30],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",10500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 11, - "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"38"); - add_srs_wkt (p, 13, - "40\"]]"); - p = add_epsg_def (filter, first, last, 3841, "epsg", 3841, - "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 6"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",18],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",65"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"3841\"]]"); - p = add_epsg_def (filter, first, last, 3842, "epsg", 3842, - "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7"); - add_srs_wkt (p, 1, - " (deprecated)\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulk"); - add_srs_wkt (p, 2, - "ovo_1942_83\",SPHEROID[\"Krassowsky 1940\",6378245,298.3"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4178\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",18],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",6500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 11, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NO"); - add_srs_wkt (p, 12, - "RTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3842\"]]"); - p = add_epsg_def (filter, first, last, 3843, "epsg", 3843, - "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8"); - add_srs_wkt (p, 1, - " (deprecated)\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulk"); - add_srs_wkt (p, 2, - "ovo_1942_83\",SPHEROID[\"Krassowsky 1940\",6378245,298.3"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4178\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",18],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",6500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 11, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NO"); - add_srs_wkt (p, 12, - "RTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3843\"]]"); - p = add_epsg_def (filter, first, last, 3844, "epsg", 3844, - "Pulkovo 1942(58) / Stereo70"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=500000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.3"); - add_proj4text (p, 2, - "59,-0.053,0.844,-0.84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(58) / Stereo70\",GEOGCS[\"Pulkovo "); - add_srs_wkt (p, 1, - "1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4179"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",46],PARAMETER[\"central_meridian\",2"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",0.99975],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",500000],PARAMETER[\"false_northing\",500000],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3844\"]]"); - p = add_epsg_def (filter, first, last, 3845, "epsg", 3845, - "SWEREF99 / RT90 7.5 gon V emulation"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=11.30625 +k=1.000006 +x_0=15"); - add_proj4text (p, 1, - "00025.141 +y_0=-667.282 +ellps=GRS80 +towgs84=0,0,0,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 / RT90 7.5 gon V emulation\",GEOGCS[\""); - add_srs_wkt (p, 1, - "SWEREF99\",DATUM[\"SWEREF99\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6619\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4619\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",11.30625],PARAMETER[\"scale_factor\",1.00"); - add_srs_wkt (p, 9, - "0006],PARAMETER[\"false_easting\",1500025.141],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",-667.282],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"3845\"]]"); - p = add_epsg_def (filter, first, last, 3846, "epsg", 3846, - "SWEREF99 / RT90 5 gon V emulation"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=13.55626666666667 +k=1.00000"); - add_proj4text (p, 1, - "58 +x_0=1500044.695 +y_0=-667.13 +ellps=GRS80 +towgs84=0"); - add_proj4text (p, 2, - ",0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 / RT90 5 gon V emulation\",GEOGCS[\"SW"); - add_srs_wkt (p, 1, - "EREF99\",DATUM[\"SWEREF99\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6619\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4619\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",13.55626666666667],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",1.0000058],PARAMETER[\"false_easting\",1500044.695],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",-667.13],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"3846\"]]"); - p = add_epsg_def (filter, first, last, 3847, "epsg", 3847, - "SWEREF99 / RT90 2.5 gon V emulation"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15.80628452944445 +k=1.00000"); - add_proj4text (p, 1, - "561024 +x_0=1500064.274 +y_0=-667.711 +ellps=GRS80 +towg"); - add_proj4text (p, 2, - "s84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 / RT90 2.5 gon V emulation\",GEOGCS[\""); - add_srs_wkt (p, 1, - "SWEREF99\",DATUM[\"SWEREF99\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6619\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4619\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",15.80628452944445],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1.00000561024],PARAMETER[\"false_easting\",1500064."); - add_srs_wkt (p, 10, - "274],PARAMETER[\"false_northing\",-667.711],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"3847\"]]"); - p = add_epsg_def (filter, first, last, 3848, "epsg", 3848, - "SWEREF99 / RT90 0 gon emulation"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18.0563 +k=1.0000054 +x_0=15"); - add_proj4text (p, 1, - "00083.521 +y_0=-668.8440000000001 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 / RT90 0 gon emulation\",GEOGCS[\"SWER"); - add_srs_wkt (p, 1, - "EF99\",DATUM[\"SWEREF99\",SPHEROID[\"GRS 1980\",6378137,"); - add_srs_wkt (p, 2, - "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4619\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 7, - ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); - add_srs_wkt (p, 8, - "_meridian\",18.0563],PARAMETER[\"scale_factor\",1.000005"); - add_srs_wkt (p, 9, - "4],PARAMETER[\"false_easting\",1500083.521],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",-668.844],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"3848\"]]"); - p = add_epsg_def (filter, first, last, 3849, "epsg", 3849, - "SWEREF99 / RT90 2.5 gon O emulation"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=20.30631666666667 +k=1.00000"); - add_proj4text (p, 1, - "52 +x_0=1500102.765 +y_0=-670.706 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 / RT90 2.5 gon O emulation\",GEOGCS[\""); - add_srs_wkt (p, 1, - "SWEREF99\",DATUM[\"SWEREF99\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6619\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4619\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",20.30631666666667],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1.0000052],PARAMETER[\"false_easting\",1500102.765]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",-670.706],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"3849\"]]"); - p = add_epsg_def (filter, first, last, 3850, "epsg", 3850, - "SWEREF99 / RT90 5 gon O emulation"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=22.55633333333333 +k=1.00000"); - add_proj4text (p, 1, - "49 +x_0=1500121.846 +y_0=-672.557 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SWEREF99 / RT90 5 gon O emulation\",GEOGCS[\"SW"); - add_srs_wkt (p, 1, - "EREF99\",DATUM[\"SWEREF99\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6619\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4619\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",22.55633333333333],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",1.0000049],PARAMETER[\"false_easting\",1500121.846],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",-672.557],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"3850\"]]"); - p = add_epsg_def (filter, first, last, 3851, "epsg", 3851, - "NZGD2000 / NZCS2000"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-37.5 +lat_2=-44.5 +lat_0=-41 +lon_0=17"); - add_proj4text (p, 1, - "3 +x_0=3000000 +y_0=7000000 +ellps=GRS80 +towgs84=0,0,0,"); - add_proj4text (p, 2, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD2000 / NZCS2000\",GEOGCS[\"NZGD2000\",DATUM"); - add_srs_wkt (p, 1, - "[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",-3"); - add_srs_wkt (p, 8, - "7.5],PARAMETER[\"standard_parallel_2\",-44.5],PARAMETER["); - add_srs_wkt (p, 9, - "\"latitude_of_origin\",-41],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 10, - "\",173],PARAMETER[\"false_easting\",3000000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",7000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting"); - add_srs_wkt (p, 13, - "\",EAST],AUTHORITY[\"EPSG\",\"3851\"]]"); - p = add_epsg_def (filter, first, last, 3852, "epsg", 3852, - "RSRGD2000 / DGLC2000"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-90 +lon_0=157 +x_0=500000 +y_0=0 +ellps=GR"); - add_proj4text (p, 2, - "S80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RSRGD2000 / DGLC2000\",GEOGCS[\"RSRGD2000\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Ross_Sea_Region_Geodetic_Datum_2000\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6764\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4764\"]],PROJECTION[\"Lambe"); - add_srs_wkt (p, 7, - "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); - add_srs_wkt (p, 8, - "1\",-76.66666666666667],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",-79.33333333333333],PARAMETER[\"latitude_of_origin\",-9"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"central_meridian\",157],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 12, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northin"); - add_srs_wkt (p, 13, - "g\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 14, - "852\"]]"); - p = add_epsg_def (filter, first, last, 3854, "epsg", 3854, - "County ST74"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18.05787 +k=0.99999506 +x_0="); - add_proj4text (p, 1, - "100182.7406 +y_0=-6500620.1207 +ellps=GRS80 +towgs84=0,0"); - add_proj4text (p, 2, - ",0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"County ST74\",GEOGCS[\"SWEREF99\",DATUM[\"SWERE"); - add_srs_wkt (p, 1, - "F99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\"]]"); - add_srs_wkt (p, 6, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 7, - "e_of_origin\",0],PARAMETER[\"central_meridian\",18.05787"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",0.99999506],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",100182.7406],PARAMETER[\"false_northing\",-"); - add_srs_wkt (p, 10, - "6500620.1207],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"x\",NORTH],AXIS[\"y\",EAST],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"3854\"]]"); - p = add_epsg_def (filter, first, last, 3857, "epsg", 3857, - "WGS 84 / Pseudo-Mercator"); - add_proj4text (p, 0, - "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 "); - add_proj4text (p, 1, - "+x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext "); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / Pseudo-Mercator\",GEOGCS[\"WGS 84\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2572235"); - add_srs_wkt (p, 2, - "63,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"63"); - add_srs_wkt (p, 3, - "26\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"M"); - add_srs_wkt (p, 6, - "ercator_1SP\"],PARAMETER[\"central_meridian\",0],PARAMET"); - add_srs_wkt (p, 7, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 9, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 10, - "EXTENSION[\"PROJ4\",\"+proj=merc +a=6378137 +b=6378137 +"); - add_srs_wkt (p, 11, - "lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +n"); - add_srs_wkt (p, 12, - "adgrids=@null +wktext +no_defs\"],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "3857\"]]"); - p = add_epsg_def (filter, first, last, 3873, "epsg", 3873, - "ETRS89 / GK19FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=19500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / GK19FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); - add_srs_wkt (p, 1, - "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",19],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",19500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3873\"]]"); - p = add_epsg_def (filter, first, last, 3874, "epsg", 3874, - "ETRS89 / GK20FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=20500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / GK20FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); - add_srs_wkt (p, 1, - "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",20],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",20500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3874\"]]"); - p = add_epsg_def (filter, first, last, 3875, "epsg", 3875, - "ETRS89 / GK21FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=21500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / GK21FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); - add_srs_wkt (p, 1, - "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",21],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",21500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3875\"]]"); - p = add_epsg_def (filter, first, last, 3876, "epsg", 3876, - "ETRS89 / GK22FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=22500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / GK22FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); - add_srs_wkt (p, 1, - "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",22],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",22500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3876\"]]"); - p = add_epsg_def (filter, first, last, 3877, "epsg", 3877, - "ETRS89 / GK23FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=23500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / GK23FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); - add_srs_wkt (p, 1, - "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",23],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",23500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3877\"]]"); - p = add_epsg_def (filter, first, last, 3878, "epsg", 3878, - "ETRS89 / GK24FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=24500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / GK24FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); - add_srs_wkt (p, 1, - "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",24],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",24500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3878\"]]"); - p = add_epsg_def (filter, first, last, 3879, "epsg", 3879, - "ETRS89 / GK25FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=25500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / GK25FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); - add_srs_wkt (p, 1, - "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",25],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",25500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3879\"]]"); - p = add_epsg_def (filter, first, last, 3880, "epsg", 3880, - "ETRS89 / GK26FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=26500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / GK26FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); - add_srs_wkt (p, 1, - "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",26],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",26500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3880\"]]"); - p = add_epsg_def (filter, first, last, 3881, "epsg", 3881, - "ETRS89 / GK27FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=27500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / GK27FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); - add_srs_wkt (p, 1, - "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",27],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",27500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3881\"]]"); - p = add_epsg_def (filter, first, last, 3882, "epsg", 3882, - "ETRS89 / GK28FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=28500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / GK28FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); - add_srs_wkt (p, 1, - "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",28],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",28500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3882\"]]"); - p = add_epsg_def (filter, first, last, 3883, "epsg", 3883, - "ETRS89 / GK29FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=29500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / GK29FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); - add_srs_wkt (p, 1, - "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",29],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",29500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3883\"]]"); - p = add_epsg_def (filter, first, last, 3884, "epsg", 3884, - "ETRS89 / GK30FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=30500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / GK30FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); - add_srs_wkt (p, 1, - "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",30],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",30500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3884\"]]"); - p = add_epsg_def (filter, first, last, 3885, "epsg", 3885, - "ETRS89 / GK31FIN"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=31500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / GK31FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); - add_srs_wkt (p, 1, - "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",31],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",31500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"3885\"]]"); - p = add_epsg_def (filter, first, last, 3889, "epsg", 3889, - "IGRS"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"IGRS\",DATUM[\"Iraqi_Geospatial_Reference_Syste"); - add_srs_wkt (p, 1, - "m\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1029\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"3889\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_18.c b/src/spatialite/src/srsinit/epsg_inlined_18.c deleted file mode 100644 index 38380d5..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_18.c +++ /dev/null @@ -1,2786 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_18 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 3890, "epsg", 3890, - "IGRS / UTM zone 37N"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGRS / UTM zone 37N\",GEOGCS[\"IGRS\",DATUM[\"I"); - add_srs_wkt (p, 1, - "raqi_Geospatial_Reference_System\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1029\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"3889\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",39],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 9, - "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"3890\"]]"); - p = add_epsg_def (filter, first, last, 3891, "epsg", 3891, - "IGRS / UTM zone 38N"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGRS / UTM zone 38N\",GEOGCS[\"IGRS\",DATUM[\"I"); - add_srs_wkt (p, 1, - "raqi_Geospatial_Reference_System\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1029\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"3889\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",45],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 9, - "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"3891\"]]"); - p = add_epsg_def (filter, first, last, 3892, "epsg", 3892, - "IGRS / UTM zone 39N"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"IGRS / UTM zone 39N\",GEOGCS[\"IGRS\",DATUM[\"I"); - add_srs_wkt (p, 1, - "raqi_Geospatial_Reference_System\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1029\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"3889\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",51],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 9, - "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"3892\"]]"); - p = add_epsg_def (filter, first, last, 3893, "epsg", 3893, - "ED50 / Iraq National Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=29.02626833333333 +lon_0=46.5 +k=0.99"); - add_proj4text (p, 1, - "94 +x_0=800000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,"); - add_proj4text (p, 2, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / Iraq National Grid\",GEOGCS[\"ED50\",DAT"); - add_srs_wkt (p, 1, - "UM[\"European_Datum_1950\",SPHEROID[\"International 1924"); - add_srs_wkt (p, 2, - "\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87"); - add_srs_wkt (p, 3, - ",-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",29.02626833333"); - add_srs_wkt (p, 8, - "333],PARAMETER[\"central_meridian\",46.5],PARAMETER[\"sc"); - add_srs_wkt (p, 9, - "ale_factor\",0.9994],PARAMETER[\"false_easting\",800000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"3893\"]]"); - p = add_epsg_def (filter, first, last, 3906, "epsg", 3906, - "MGI 1901"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=682,-203,480,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"MGI 1901\",DATUM[\"MGI_1901\",SPHEROID[\"Bessel"); - add_srs_wkt (p, 1, - " 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 2, - "4\"]],TOWGS84[682,-203,480,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "1031\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 4, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"3906\"]]"); - p = add_epsg_def (filter, first, last, 3907, "epsg", 3907, - "MGI 1901 / Balkans zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI 1901 / Balkans zone 5\",GEOGCS[\"MGI 1901\""); - add_srs_wkt (p, 1, - ",DATUM[\"MGI_1901\",SPHEROID[\"Bessel 1841\",6377397.155"); - add_srs_wkt (p, 2, - ",299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-"); - add_srs_wkt (p, 3, - "203,480,0,0,0,0],AUTHORITY[\"EPSG\",\"1031\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"3906\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",15],PARAMETER[\"scale_factor\",0.9999]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",5500000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"3907\"]]"); - p = add_epsg_def (filter, first, last, 3908, "epsg", 3908, - "MGI 1901 / Balkans zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI 1901 / Balkans zone 6\",GEOGCS[\"MGI 1901\""); - add_srs_wkt (p, 1, - ",DATUM[\"MGI_1901\",SPHEROID[\"Bessel 1841\",6377397.155"); - add_srs_wkt (p, 2, - ",299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-"); - add_srs_wkt (p, 3, - "203,480,0,0,0,0],AUTHORITY[\"EPSG\",\"1031\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"3906\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",18],PARAMETER[\"scale_factor\",0.9999]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",6500000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"3908\"]]"); - p = add_epsg_def (filter, first, last, 3909, "epsg", 3909, - "MGI 1901 / Balkans zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI 1901 / Balkans zone 7\",GEOGCS[\"MGI 1901\""); - add_srs_wkt (p, 1, - ",DATUM[\"MGI_1901\",SPHEROID[\"Bessel 1841\",6377397.155"); - add_srs_wkt (p, 2, - ",299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-"); - add_srs_wkt (p, 3, - "203,480,0,0,0,0],AUTHORITY[\"EPSG\",\"1031\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"3906\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",21],PARAMETER[\"scale_factor\",0.9999]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",7500000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"3909\"]]"); - p = add_epsg_def (filter, first, last, 3910, "epsg", 3910, - "MGI 1901 / Balkans zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI 1901 / Balkans zone 8\",GEOGCS[\"MGI 1901\""); - add_srs_wkt (p, 1, - ",DATUM[\"MGI_1901\",SPHEROID[\"Bessel 1841\",6377397.155"); - add_srs_wkt (p, 2, - ",299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-"); - add_srs_wkt (p, 3, - "203,480,0,0,0,0],AUTHORITY[\"EPSG\",\"1031\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"3906\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",24],PARAMETER[\"scale_factor\",0.9999]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",8500000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"3910\"]]"); - p = add_epsg_def (filter, first, last, 3911, "epsg", 3911, - "MGI 1901 / Slovenia Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI 1901 / Slovenia Grid\",GEOGCS[\"MGI 1901\","); - add_srs_wkt (p, 1, - "DATUM[\"MGI_1901\",SPHEROID[\"Bessel 1841\",6377397.155,"); - add_srs_wkt (p, 2, - "299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-2"); - add_srs_wkt (p, 3, - "03,480,0,0,0,0],AUTHORITY[\"EPSG\",\"1031\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"3906\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",15],PARAMETER[\"scale_factor\",0.9999],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",500000],PARAMETER[\"false_no"); - add_srs_wkt (p, 10, - "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"3911\"]]"); - p = add_epsg_def (filter, first, last, 3912, "epsg", 3912, - "MGI 1901 / Slovene National Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=-5000000 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI 1901 / Slovene National Grid\",GEOGCS[\"MGI"); - add_srs_wkt (p, 1, - " 1901\",DATUM[\"MGI_1901\",SPHEROID[\"Bessel 1841\",6377"); - add_srs_wkt (p, 2, - "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[682,-203,480,0,0,0,0],AUTHORITY[\"EPSG\",\"1031\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"3906\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",15],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9999],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",-5000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Y\",EAST],AXIS[\"X\",NORTH],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"3912\"]]"); - p = add_epsg_def (filter, first, last, 3920, "epsg", 3920, - "Puerto Rico / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=clrk66 +towgs84=11,72,-101,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Puerto Rico / UTM zone 20N\",GEOGCS[\"Puerto Ri"); - add_srs_wkt (p, 1, - "co\",DATUM[\"Puerto_Rico\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[11,72,-101,0,0,0,0],AUTHORITY[\"EPSG\",\"6139\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4139\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",-63],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"3920\"]]"); - p = add_epsg_def (filter, first, last, 3942, "epsg", 3942, - "RGF93 / CC42"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.25 +lat_2=42.75 +lat_0=42 +lon_0=3 +"); - add_proj4text (p, 1, - "x_0=1700000 +y_0=1200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGF93 / CC42\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); - add_srs_wkt (p, 1, - "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",41.25],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_2\",42.75],PARAMETER[\"latitude"); - add_srs_wkt (p, 9, - "_of_origin\",42],PARAMETER[\"central_meridian\",3],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",1200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"3942\"]]"); - p = add_epsg_def (filter, first, last, 3943, "epsg", 3943, - "RGF93 / CC43"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=42.25 +lat_2=43.75 +lat_0=43 +lon_0=3 +"); - add_proj4text (p, 1, - "x_0=1700000 +y_0=2200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGF93 / CC43\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); - add_srs_wkt (p, 1, - "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",42.25],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_2\",43.75],PARAMETER[\"latitude"); - add_srs_wkt (p, 9, - "_of_origin\",43],PARAMETER[\"central_meridian\",3],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",2200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"3943\"]]"); - p = add_epsg_def (filter, first, last, 3944, "epsg", 3944, - "RGF93 / CC44"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43.25 +lat_2=44.75 +lat_0=44 +lon_0=3 +"); - add_proj4text (p, 1, - "x_0=1700000 +y_0=3200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGF93 / CC44\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); - add_srs_wkt (p, 1, - "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",43.25],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_2\",44.75],PARAMETER[\"latitude"); - add_srs_wkt (p, 9, - "_of_origin\",44],PARAMETER[\"central_meridian\",3],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",3200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"3944\"]]"); - p = add_epsg_def (filter, first, last, 3945, "epsg", 3945, - "RGF93 / CC45"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.25 +lat_2=45.75 +lat_0=45 +lon_0=3 +"); - add_proj4text (p, 1, - "x_0=1700000 +y_0=4200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGF93 / CC45\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); - add_srs_wkt (p, 1, - "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",44.25],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_2\",45.75],PARAMETER[\"latitude"); - add_srs_wkt (p, 9, - "_of_origin\",45],PARAMETER[\"central_meridian\",3],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",4200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"3945\"]]"); - p = add_epsg_def (filter, first, last, 3946, "epsg", 3946, - "RGF93 / CC46"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.25 +lat_2=46.75 +lat_0=46 +lon_0=3 +"); - add_proj4text (p, 1, - "x_0=1700000 +y_0=5200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGF93 / CC46\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); - add_srs_wkt (p, 1, - "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",45.25],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_2\",46.75],PARAMETER[\"latitude"); - add_srs_wkt (p, 9, - "_of_origin\",46],PARAMETER[\"central_meridian\",3],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",5200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"3946\"]]"); - p = add_epsg_def (filter, first, last, 3947, "epsg", 3947, - "RGF93 / CC47"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46.25 +lat_2=47.75 +lat_0=47 +lon_0=3 +"); - add_proj4text (p, 1, - "x_0=1700000 +y_0=6200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGF93 / CC47\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); - add_srs_wkt (p, 1, - "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",46.25],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_2\",47.75],PARAMETER[\"latitude"); - add_srs_wkt (p, 9, - "_of_origin\",47],PARAMETER[\"central_meridian\",3],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",6200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"3947\"]]"); - p = add_epsg_def (filter, first, last, 3948, "epsg", 3948, - "RGF93 / CC48"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.25 +lat_2=48.75 +lat_0=48 +lon_0=3 +"); - add_proj4text (p, 1, - "x_0=1700000 +y_0=7200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGF93 / CC48\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); - add_srs_wkt (p, 1, - "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",47.25],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_2\",48.75],PARAMETER[\"latitude"); - add_srs_wkt (p, 9, - "_of_origin\",48],PARAMETER[\"central_meridian\",3],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",7200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"3948\"]]"); - p = add_epsg_def (filter, first, last, 3949, "epsg", 3949, - "RGF93 / CC49"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.25 +lat_2=49.75 +lat_0=49 +lon_0=3 +"); - add_proj4text (p, 1, - "x_0=1700000 +y_0=8200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGF93 / CC49\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); - add_srs_wkt (p, 1, - "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",48.25],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_2\",49.75],PARAMETER[\"latitude"); - add_srs_wkt (p, 9, - "_of_origin\",49],PARAMETER[\"central_meridian\",3],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",8200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"3949\"]]"); - p = add_epsg_def (filter, first, last, 3950, "epsg", 3950, - "RGF93 / CC50"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49.25 +lat_2=50.75 +lat_0=50 +lon_0=3 +"); - add_proj4text (p, 1, - "x_0=1700000 +y_0=9200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGF93 / CC50\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); - add_srs_wkt (p, 1, - "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",49.25],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_2\",50.75],PARAMETER[\"latitude"); - add_srs_wkt (p, 9, - "_of_origin\",50],PARAMETER[\"central_meridian\",3],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",9200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"3950\"]]"); - p = add_epsg_def (filter, first, last, 3968, "epsg", 3968, - "NAD83 / Virginia Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +"); - add_proj4text (p, 1, - "x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Virginia Lambert\",GEOGCS[\"NAD83\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); - add_srs_wkt (p, 2, - "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",39.5],PARAMETER[\"latitud"); - add_srs_wkt (p, 9, - "e_of_origin\",36],PARAMETER[\"central_meridian\",-79.5],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); - add_srs_wkt (p, 11, - "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"39"); - add_srs_wkt (p, 13, - "68\"]]"); - p = add_epsg_def (filter, first, last, 3969, "epsg", 3969, - "NAD83(HARN) / Virginia Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +"); - add_proj4text (p, 1, - "x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Virginia Lambert\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",37],PARAMETER[\"standard_parallel_2\",3"); - add_srs_wkt (p, 9, - "9.5],PARAMETER[\"latitude_of_origin\",36],PARAMETER[\"ce"); - add_srs_wkt (p, 10, - "ntral_meridian\",-79.5],PARAMETER[\"false_easting\",0],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"3969\"]]"); - p = add_epsg_def (filter, first, last, 3970, "epsg", 3970, - "NAD83(NSRS2007) / Virginia Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +"); - add_proj4text (p, 1, - "x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Virginia Lambert\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); - add_srs_wkt (p, 2, - "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_1\",37],PARAMETER[\"standar"); - add_srs_wkt (p, 9, - "d_parallel_2\",39.5],PARAMETER[\"latitude_of_origin\",36"); - add_srs_wkt (p, 10, - "],PARAMETER[\"central_meridian\",-79.5],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 12, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 13, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3970\"]]"); - p = add_epsg_def (filter, first, last, 3973, "epsg", 3973, - "WGS 84 / NSIDC EASE-Grid North"); - add_proj4text (p, 0, - "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84"); - add_proj4text (p, 1, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / NSIDC EASE-Grid North\",GEOGCS[\"WGS 8"); - add_srs_wkt (p, 1, - "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); - add_srs_wkt (p, 2, - "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); - add_srs_wkt (p, 6, - "ON[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 7, - "e_of_center\",90],PARAMETER[\"longitude_of_center\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"false_easting\",0],PARAMETER[\"false_northing"); - add_srs_wkt (p, 9, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 10, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"397"); - add_srs_wkt (p, 11, - "3\"]]"); - p = add_epsg_def (filter, first, last, 3974, "epsg", 3974, - "WGS 84 / NSIDC EASE-Grid South"); - add_proj4text (p, 0, - "+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS8"); - add_proj4text (p, 1, - "4 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / NSIDC EASE-Grid South\",GEOGCS[\"WGS 8"); - add_srs_wkt (p, 1, - "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); - add_srs_wkt (p, 2, - "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); - add_srs_wkt (p, 6, - "ON[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 7, - "e_of_center\",-90],PARAMETER[\"longitude_of_center\",0],"); - add_srs_wkt (p, 8, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); - add_srs_wkt (p, 9, - "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 10, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"39"); - add_srs_wkt (p, 11, - "74\"]]"); - p = add_epsg_def (filter, first, last, 3975, "epsg", 3975, - "WGS 84 / NSIDC EASE-Grid Global"); - add_proj4text (p, 0, - "+proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +datum=WGS84"); - add_proj4text (p, 1, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / NSIDC EASE-Grid Global\",GEOGCS[\"WGS "); - add_srs_wkt (p, 1, - "84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298."); - add_srs_wkt (p, 2, - "257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJEC"); - add_srs_wkt (p, 6, - "TION[\"Cylindrical_Equal_Area\"],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 7, - "rallel_1\",30],PARAMETER[\"central_meridian\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 9, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 10, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3975\"]]"); - p = add_epsg_def (filter, first, last, 3976, "epsg", 3976, - "WGS 84 / NSIDC Sea Ice Polar Stereographic South"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 "); - add_proj4text (p, 1, - "+y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / NSIDC Sea Ice Polar Stereographic Sout"); - add_srs_wkt (p, 1, - "h\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS "); - add_srs_wkt (p, 2, - "84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4326\"]],PROJECTION[\"Polar_Stereographic\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",-70],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 8, - "n\",0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 10, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 11, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3976\"]]"); - p = add_epsg_def (filter, first, last, 3978, "epsg", 3978, - "NAD83 / Canada Atlas Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0="); - add_proj4text (p, 1, - "0 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Canada Atlas Lambert\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",49"); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_2\",77],PARAMETER[\"lati"); - add_srs_wkt (p, 9, - "tude_of_origin\",49],PARAMETER[\"central_meridian\",-95]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_easting\",0],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 12, - "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"3978\"]]"); - p = add_epsg_def (filter, first, last, 3979, "epsg", 3979, - "NAD83(CSRS) / Canada Atlas Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0="); - add_proj4text (p, 1, - "0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); - add_proj4text (p, 2, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / Canada Atlas Lambert\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",49],PARAMETER[\"standard_parallel_"); - add_srs_wkt (p, 9, - "2\",77],PARAMETER[\"latitude_of_origin\",49],PARAMETER[\""); - add_srs_wkt (p, 10, - "central_meridian\",-95],PARAMETER[\"false_easting\",0],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 13, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"3979\"]]"); - p = add_epsg_def (filter, first, last, 3985, "epsg", 3985, - "Katanga 1955 / Katanga Lambert (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=9 +lon_0=26 +x"); - add_proj4text (p, 1, - "_0=500000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9"); - add_proj4text (p, 2, - ".614,-255.95,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Katanga 1955 / Katanga Lambert (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4695\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_1\",-6.5],PARAMETER[\"stand"); - add_srs_wkt (p, 9, - "ard_parallel_2\",-11.5],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 10, - ",9],PARAMETER[\"central_meridian\",26],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_easting\",500000],PARAMETER[\"false_northing\",500000],"); - add_srs_wkt (p, 12, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3985\"]]"); - p = add_epsg_def (filter, first, last, 3986, "epsg", 3986, - "Katanga 1955 / Katanga Gauss zone A"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-9 +lon_0=30 +k=1 +x_0=200000 +y_0=50"); - add_proj4text (p, 1, - "0000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Katanga 1955 / Katanga Gauss zone A\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\"Clarke "); - add_srs_wkt (p, 2, - "1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4695\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",-9],PARAMETER[\"central_meridian\",30],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",200000],PARAMETER[\"false_northing\",500000],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3986\"]]"); - p = add_epsg_def (filter, first, last, 3987, "epsg", 3987, - "Katanga 1955 / Katanga Gauss zone B"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-9 +lon_0=28 +k=1 +x_0=200000 +y_0=50"); - add_proj4text (p, 1, - "0000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Katanga 1955 / Katanga Gauss zone B\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\"Clarke "); - add_srs_wkt (p, 2, - "1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4695\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",-9],PARAMETER[\"central_meridian\",28],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",200000],PARAMETER[\"false_northing\",500000],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3987\"]]"); - p = add_epsg_def (filter, first, last, 3988, "epsg", 3988, - "Katanga 1955 / Katanga Gauss zone C"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-9 +lon_0=26 +k=1 +x_0=200000 +y_0=50"); - add_proj4text (p, 1, - "0000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Katanga 1955 / Katanga Gauss zone C\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\"Clarke "); - add_srs_wkt (p, 2, - "1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4695\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",-9],PARAMETER[\"central_meridian\",26],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",200000],PARAMETER[\"false_northing\",500000],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3988\"]]"); - p = add_epsg_def (filter, first, last, 3989, "epsg", 3989, - "Katanga 1955 / Katanga Gauss zone D"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-9 +lon_0=24 +k=1 +x_0=200000 +y_0=50"); - add_proj4text (p, 1, - "0000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Katanga 1955 / Katanga Gauss zone D\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\"Clarke "); - add_srs_wkt (p, 2, - "1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4695\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",-9],PARAMETER[\"central_meridian\",24],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",200000],PARAMETER[\"false_northing\",500000],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3989\"]]"); - p = add_epsg_def (filter, first, last, 3991, "epsg", 3991, - "Puerto Rico State Plane CS of 1927"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +"); - add_proj4text (p, 2, - "x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=11,7"); - add_proj4text (p, 3, - "2,-101,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Puerto Rico State Plane CS of 1927\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "uerto Rico\",DATUM[\"Puerto_Rico\",SPHEROID[\"Clarke 186"); - add_srs_wkt (p, 2, - "6\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "8\"]],TOWGS84[11,72,-101,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "139\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4139\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); - add_srs_wkt (p, 8, - "llel_1\",18.43333333333333],PARAMETER[\"standard_paralle"); - add_srs_wkt (p, 9, - "l_2\",18.03333333333333],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 10, - ",17.83333333333333],PARAMETER[\"central_meridian\",-66.4"); - add_srs_wkt (p, 11, - "3333333333334],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 12, - "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); - add_srs_wkt (p, 13, - "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 14, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3991\"]]"); - p = add_epsg_def (filter, first, last, 3992, "epsg", 3992, - "Puerto Rico / St. Croix"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +"); - add_proj4text (p, 2, - "x_0=152400.3048006096 +y_0=30480.06096012192 +ellps=clrk"); - add_proj4text (p, 3, - "66 +towgs84=11,72,-101,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Puerto Rico / St. Croix\",GEOGCS[\"Puerto Rico\""); - add_srs_wkt (p, 1, - ",DATUM[\"Puerto_Rico\",SPHEROID[\"Clarke 1866\",6378206."); - add_srs_wkt (p, 2, - "4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[11,72,-101,0,0,0,0],AUTHORITY[\"EPSG\",\"6139\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4139\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",18"); - add_srs_wkt (p, 8, - ".43333333333333],PARAMETER[\"standard_parallel_2\",18.03"); - add_srs_wkt (p, 9, - "333333333333],PARAMETER[\"latitude_of_origin\",17.833333"); - add_srs_wkt (p, 10, - "33333333],PARAMETER[\"central_meridian\",-66.43333333333"); - add_srs_wkt (p, 11, - "334],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 12, - "se_northing\",100000],UNIT[\"US survey foot\",0.30480060"); - add_srs_wkt (p, 13, - "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); - add_srs_wkt (p, 14, - "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3992\"]]"); - p = add_epsg_def (filter, first, last, 3994, "epsg", 3994, - "WGS 84 / Mercator 41"); - add_proj4text (p, 0, - "+proj=merc +lon_0=100 +lat_ts=-41 +x_0=0 +y_0=0 +datum=W"); - add_proj4text (p, 1, - "GS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / Mercator 41\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Merc"); - add_srs_wkt (p, 6, - "ator_2SP\"],PARAMETER[\"standard_parallel_1\",-41],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"central_meridian\",100],PARAMETER[\"false_easting"); - add_srs_wkt (p, 8, - "\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 9, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 10, - ",NORTH],AUTHORITY[\"EPSG\",\"3994\"]]"); - p = add_epsg_def (filter, first, last, 3995, "epsg", 3995, - "WGS 84 / Arctic Polar Stereographic"); - add_proj4text (p, 0, - "+proj=stere +lat_0=90 +lat_ts=71 +lon_0=0 +k=1 +x_0=0 +y"); - add_proj4text (p, 1, - "_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / Arctic Polar Stereographic\",GEOGCS[\""); - add_srs_wkt (p, 1, - "WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,"); - add_srs_wkt (p, 2, - "298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PR"); - add_srs_wkt (p, 6, - "OJECTION[\"Polar_Stereographic\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 7, - "f_origin\",71],PARAMETER[\"central_meridian\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 10, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"3995\"]]"); - p = add_epsg_def (filter, first, last, 3996, "epsg", 3996, - "WGS 84 / IBCAO Polar Stereographic"); - add_proj4text (p, 0, - "+proj=stere +lat_0=90 +lat_ts=75 +lon_0=0 +k=1 +x_0=0 +y"); - add_proj4text (p, 1, - "_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / IBCAO Polar Stereographic\",GEOGCS[\"W"); - add_srs_wkt (p, 1, - "GS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,2"); - add_srs_wkt (p, 2, - "98.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PRO"); - add_srs_wkt (p, 6, - "JECTION[\"Polar_Stereographic\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 7, - "_origin\",75],PARAMETER[\"central_meridian\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 10, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"3996\"]]"); - p = add_epsg_def (filter, first, last, 3997, "epsg", 3997, - "WGS 84 / Dubai Local TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=55.33333333333334 +k=1 +x_0="); - add_proj4text (p, 1, - "500000 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / Dubai Local TM\",GEOGCS[\"WGS 84\",DAT"); - add_srs_wkt (p, 1, - "UM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.25722356"); - add_srs_wkt (p, 2, - "3,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"632"); - add_srs_wkt (p, 3, - "6\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"T"); - add_srs_wkt (p, 6, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 7, - "],PARAMETER[\"central_meridian\",55.33333333333334],PARA"); - add_srs_wkt (p, 8, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 9, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 10, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 11, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3997\"]]"); - p = add_epsg_def (filter, first, last, 4001, "epsg", 4001, - "Unknown datum based upon the Airy 1830 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=airy +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Airy 1830 ellipsoi"); - add_srs_wkt (p, 1, - "d\",DATUM[\"Not_specified_based_on_Airy_1830_ellipsoid\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Airy 1830\",6377563.396,299.3249646,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7001\"]],AUTHORITY[\"EPSG\",\"6001\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4001\"]]"); - p = add_epsg_def (filter, first, last, 4002, "epsg", 4002, - "Unknown datum based upon the Airy Modified 1849 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=mod_airy +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Airy Modified 1849"); - add_srs_wkt (p, 1, - " ellipsoid\",DATUM[\"Not_specified_based_on_Airy_Modifie"); - add_srs_wkt (p, 2, - "d_1849_ellipsoid\",SPHEROID[\"Airy Modified 1849\",63773"); - add_srs_wkt (p, 3, - "40.189,299.3249646,AUTHORITY[\"EPSG\",\"7002\"]],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6002\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4002\""); - add_srs_wkt (p, 7, - "]]"); - p = add_epsg_def (filter, first, last, 4003, "epsg", 4003, - "Unknown datum based upon the Australian National Spheroid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=aust_SA +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Australian Nationa"); - add_srs_wkt (p, 1, - "l Spheroid\",DATUM[\"Not_specified_based_on_Australian_N"); - add_srs_wkt (p, 2, - "ational_Spheroid\",SPHEROID[\"Australian National Sphero"); - add_srs_wkt (p, 3, - "id\",6378160,298.25,AUTHORITY[\"EPSG\",\"7003\"]],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6003\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4003\""); - add_srs_wkt (p, 7, - "]]"); - p = add_epsg_def (filter, first, last, 4004, "epsg", 4004, - "Unknown datum based upon the Bessel 1841 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Bessel 1841 ellips"); - add_srs_wkt (p, 1, - "oid\",DATUM[\"Not_specified_based_on_Bessel_1841_ellipso"); - add_srs_wkt (p, 2, - "id\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6004\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4004\"]]"); - p = add_epsg_def (filter, first, last, 4005, "epsg", 4005, - "Unknown datum based upon the Bessel Modified ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6377492.018 +b=6356173.508712696 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Bessel Modified el"); - add_srs_wkt (p, 1, - "lipsoid\",DATUM[\"Not_specified_based_on_Bessel_Modified"); - add_srs_wkt (p, 2, - "_ellipsoid\",SPHEROID[\"Bessel Modified\",6377492.018,29"); - add_srs_wkt (p, 3, - "9.1528128,AUTHORITY[\"EPSG\",\"7005\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6005\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4005\"]]"); - p = add_epsg_def (filter, first, last, 4006, "epsg", 4006, - "Unknown datum based upon the Bessel Namibia ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bess_nam +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Bessel Namibia ell"); - add_srs_wkt (p, 1, - "ipsoid\",DATUM[\"Not_specified_based_on_Bessel_Namibia_e"); - add_srs_wkt (p, 2, - "llipsoid\",SPHEROID[\"Bessel Namibia (GLM)\",6377483.865"); - add_srs_wkt (p, 3, - "280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6006\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4006\""); - add_srs_wkt (p, 7, - "]]"); - p = add_epsg_def (filter, first, last, 4007, "epsg", 4007, - "Unknown datum based upon the Clarke 1858 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Clarke 1858 ellips"); - add_srs_wkt (p, 1, - "oid\",DATUM[\"Not_specified_based_on_Clarke_1858_ellipso"); - add_srs_wkt (p, 2, - "id\",SPHEROID[\"Clarke 1858\",6378293.645208759,294.2606"); - add_srs_wkt (p, 3, - "763692654,AUTHORITY[\"EPSG\",\"7007\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6007\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4007\"]]"); - p = add_epsg_def (filter, first, last, 4008, "epsg", 4008, - "Unknown datum based upon the Clarke 1866 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Clarke 1866 ellips"); - add_srs_wkt (p, 1, - "oid\",DATUM[\"Not_specified_based_on_Clarke_1866_ellipso"); - add_srs_wkt (p, 2, - "id\",SPHEROID[\"Clarke 1866\",6378206.4,294.978698213898"); - add_srs_wkt (p, 3, - "2,AUTHORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"600"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4008\"]]"); - p = add_epsg_def (filter, first, last, 4009, "epsg", 4009, - "Unknown datum based upon the Clarke 1866 Michigan ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6378450.047548896 +b=6356826.621488444 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Clarke 1866 Michig"); - add_srs_wkt (p, 1, - "an ellipsoid\",DATUM[\"Not_specified_based_on_Clarke_186"); - add_srs_wkt (p, 2, - "6_Michigan_ellipsoid\",SPHEROID[\"Clarke 1866 Michigan\""); - add_srs_wkt (p, 3, - ",6378450.047548896,294.9786971646747,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"7009\"]],AUTHORITY[\"EPSG\",\"6009\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 5, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4009\"]]"); - p = add_epsg_def (filter, first, last, 4010, "epsg", 4010, - "Unknown datum based upon the Clarke 1880 (Benoit) ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6378300.789 +b=6356566.435 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Clarke 1880 (Benoi"); - add_srs_wkt (p, 1, - "t) ellipsoid\",DATUM[\"Not_specified_based_on_Clarke_188"); - add_srs_wkt (p, 2, - "0_Benoit_ellipsoid\",SPHEROID[\"Clarke 1880 (Benoit)\",6"); - add_srs_wkt (p, 3, - "378300.789,293.4663155389811,AUTHORITY[\"EPSG\",\"7010\""); - add_srs_wkt (p, 4, - "]],AUTHORITY[\"EPSG\",\"6010\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4010\"]]"); - p = add_epsg_def (filter, first, last, 4011, "epsg", 4011, - "Unknown datum based upon the Clarke 1880 (IGN) ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Clarke 1880 (IGN) "); - add_srs_wkt (p, 1, - "ellipsoid\",DATUM[\"Not_specified_based_on_Clarke_1880_I"); - add_srs_wkt (p, 2, - "GN_ellipsoid\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,"); - add_srs_wkt (p, 3, - "293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]],AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"6011\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4011\"]]"); - p = add_epsg_def (filter, first, last, 4012, "epsg", 4012, - "Unknown datum based upon the Clarke 1880 (RGS) ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Clarke 1880 (RGS) "); - add_srs_wkt (p, 1, - "ellipsoid\",DATUM[\"Not_specified_based_on_Clarke_1880_R"); - add_srs_wkt (p, 2, - "GS_ellipsoid\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 3, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6012\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4012\"]]"); - p = add_epsg_def (filter, first, last, 4013, "epsg", 4013, - "Unknown datum based upon the Clarke 1880 (Arc) ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.145 +b=6356514.966398753 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Clarke 1880 (Arc) "); - add_srs_wkt (p, 1, - "ellipsoid\",DATUM[\"Not_specified_based_on_Clarke_1880_A"); - add_srs_wkt (p, 2, - "rc_ellipsoid\",SPHEROID[\"Clarke 1880 (Arc)\",6378249.14"); - add_srs_wkt (p, 3, - "5,293.4663077,AUTHORITY[\"EPSG\",\"7013\"]],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6013\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4013\"]]"); - p = add_epsg_def (filter, first, last, 4014, "epsg", 4014, - "Unknown datum based upon the Clarke 1880 (SGA 1922) ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356514.996941779 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Clarke 1880 (SGA 1"); - add_srs_wkt (p, 1, - "922) ellipsoid\",DATUM[\"Not_specified_based_on_Clarke_1"); - add_srs_wkt (p, 2, - "880_SGA_1922_ellipsoid\",SPHEROID[\"Clarke 1880 (SGA 192"); - add_srs_wkt (p, 3, - "2)\",6378249.2,293.46598,AUTHORITY[\"EPSG\",\"7014\"]],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6014\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4014\"]]"); - p = add_epsg_def (filter, first, last, 4015, "epsg", 4015, - "Unknown datum based upon the Everest 1830 (1937 Adjustment) ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6377276.345 +b=6356075.413140239 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Everest 1830 (1937"); - add_srs_wkt (p, 1, - " Adjustment) ellipsoid\",DATUM[\"Not_specified_based_on_"); - add_srs_wkt (p, 2, - "Everest_1830_1937_Adjustment_ellipsoid\",SPHEROID[\"Ever"); - add_srs_wkt (p, 3, - "est 1830 (1937 Adjustment)\",6377276.345,300.8017,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"7015\"]],AUTHORITY[\"EPSG\",\"6015\"]],PR"); - add_srs_wkt (p, 5, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 6, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 7, - "]],AUTHORITY[\"EPSG\",\"4015\"]]"); - p = add_epsg_def (filter, first, last, 4016, "epsg", 4016, - "Unknown datum based upon the Everest 1830 (1967 Definition) ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=evrstSS +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Everest 1830 (1967"); - add_srs_wkt (p, 1, - " Definition) ellipsoid\",DATUM[\"Not_specified_based_on_"); - add_srs_wkt (p, 2, - "Everest_1830_1967_Definition_ellipsoid\",SPHEROID[\"Ever"); - add_srs_wkt (p, 3, - "est 1830 (1967 Definition)\",6377298.556,300.8017,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"7016\"]],AUTHORITY[\"EPSG\",\"6016\"]],PR"); - add_srs_wkt (p, 5, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 6, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 7, - "]],AUTHORITY[\"EPSG\",\"4016\"]]"); - p = add_epsg_def (filter, first, last, 4018, "epsg", 4018, - "Unknown datum based upon the Everest 1830 Modified ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6377304.063 +b=6356103.038993155 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Everest 1830 Modif"); - add_srs_wkt (p, 1, - "ied ellipsoid\",DATUM[\"Not_specified_based_on_Everest_1"); - add_srs_wkt (p, 2, - "830_Modified_ellipsoid\",SPHEROID[\"Everest 1830 Modifie"); - add_srs_wkt (p, 3, - "d\",6377304.063,300.8017,AUTHORITY[\"EPSG\",\"7018\"]],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6018\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4018\"]]"); - p = add_epsg_def (filter, first, last, 4019, "epsg", 4019, - "Unknown datum based upon the GRS 1980 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the GRS 1980 ellipsoid"); - add_srs_wkt (p, 1, - "\",DATUM[\"Not_specified_based_on_GRS_1980_ellipsoid\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6019\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4019\"]]"); - p = add_epsg_def (filter, first, last, 4020, "epsg", 4020, - "Unknown datum based upon the Helmert 1906 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=helmert +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Helmert 1906 ellip"); - add_srs_wkt (p, 1, - "soid\",DATUM[\"Not_specified_based_on_Helmert_1906_ellip"); - add_srs_wkt (p, 2, - "soid\",SPHEROID[\"Helmert 1906\",6378200,298.3,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7020\"]],AUTHORITY[\"EPSG\",\"6020\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4020\"]]"); - p = add_epsg_def (filter, first, last, 4021, "epsg", 4021, - "Unknown datum based upon the Indonesian National Spheroid"); - add_proj4text (p, 0, - "+proj=longlat +a=6378160 +b=6356774.50408554 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Indonesian Nationa"); - add_srs_wkt (p, 1, - "l Spheroid\",DATUM[\"Not_specified_based_on_Indonesian_N"); - add_srs_wkt (p, 2, - "ational_Spheroid\",SPHEROID[\"Indonesian National Sphero"); - add_srs_wkt (p, 3, - "id\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6021\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4021"); - add_srs_wkt (p, 7, - "\"]]"); - p = add_epsg_def (filter, first, last, 4022, "epsg", 4022, - "Unknown datum based upon the International 1924 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the International 1924"); - add_srs_wkt (p, 1, - " ellipsoid\",DATUM[\"Not_specified_based_on_Internationa"); - add_srs_wkt (p, 2, - "l_1924_ellipsoid\",SPHEROID[\"International 1924\",63783"); - add_srs_wkt (p, 3, - "88,297,AUTHORITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6022\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4022\"]]"); - p = add_epsg_def (filter, first, last, 4023, "epsg", 4023, - "MOLDREF99"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"MOLDREF99\",DATUM[\"MOLDREF99\",SPHEROID[\"GRS "); - add_srs_wkt (p, 1, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 2, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1032\"]],"); - add_srs_wkt (p, 3, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 4, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 5, - "2\"]],AUTHORITY[\"EPSG\",\"4023\"]]"); - p = add_epsg_def (filter, first, last, 4024, "epsg", 4024, - "Unknown datum based upon the Krassowsky 1940 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=krass +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Krassowsky 1940 el"); - add_srs_wkt (p, 1, - "lipsoid\",DATUM[\"Not_specified_based_on_Krassowsky_1940"); - add_srs_wkt (p, 2, - "_ellipsoid\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7024\"]],AUTHORITY[\"EPSG\",\"6024\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4024\"]]"); - p = add_epsg_def (filter, first, last, 4025, "epsg", 4025, - "Unknown datum based upon the NWL 9D ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS66 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the NWL 9D ellipsoid\""); - add_srs_wkt (p, 1, - ",DATUM[\"Not_specified_based_on_NWL_9D_ellipsoid\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"NWL 9D\",6378145,298.25,AUTHORITY[\"EPSG\",\"7025\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6025\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4025\"]]"); - p = add_epsg_def (filter, first, last, 4026, "epsg", 4026, - "MOLDREF99 / Moldova TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=28.4 +k=0.9999400000000001 +"); - add_proj4text (p, 1, - "x_0=200000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MOLDREF99 / Moldova TM\",GEOGCS[\"MOLDREF99\",D"); - add_srs_wkt (p, 1, - "ATUM[\"MOLDREF99\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 2, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 3, - ",0],AUTHORITY[\"EPSG\",\"1032\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 5, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"4023\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 7, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 8, - "an\",28.4],PARAMETER[\"scale_factor\",0.99994],PARAMETER"); - add_srs_wkt (p, 9, - "[\"false_easting\",200000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "4026\"]]"); - p = add_epsg_def (filter, first, last, 4027, "epsg", 4027, - "Unknown datum based upon the Plessis 1817 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6376523 +b=6355862.933255573 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Plessis 1817 ellip"); - add_srs_wkt (p, 1, - "soid\",DATUM[\"Not_specified_based_on_Plessis_1817_ellip"); - add_srs_wkt (p, 2, - "soid\",SPHEROID[\"Plessis 1817\",6376523,308.64,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7027\"]],AUTHORITY[\"EPSG\",\"6027\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4027\"]]"); - p = add_epsg_def (filter, first, last, 4028, "epsg", 4028, - "Unknown datum based upon the Struve 1860 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6378298.3 +b=6356657.142669562 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Struve 1860 ellips"); - add_srs_wkt (p, 1, - "oid\",DATUM[\"Not_specified_based_on_Struve_1860_ellipso"); - add_srs_wkt (p, 2, - "id\",SPHEROID[\"Struve 1860\",6378298.3,294.73,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7028\"]],AUTHORITY[\"EPSG\",\"6028\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4028\"]]"); - p = add_epsg_def (filter, first, last, 4029, "epsg", 4029, - "Unknown datum based upon the War Office ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the War Office ellipso"); - add_srs_wkt (p, 1, - "id\",DATUM[\"Not_specified_based_on_War_Office_ellipsoid"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"War Office\",6378300,296,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7029\"]],AUTHORITY[\"EPSG\",\"6029\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4029\"]]"); - p = add_epsg_def (filter, first, last, 4030, "epsg", 4030, - "Unknown datum based upon the WGS 84 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the WGS 84 ellipsoid\""); - add_srs_wkt (p, 1, - ",DATUM[\"Not_specified_based_on_WGS_84_ellipsoid\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7030\"]],AUTHORITY[\"EPSG\",\"6030\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4030\"]]"); - p = add_epsg_def (filter, first, last, 4031, "epsg", 4031, - "Unknown datum based upon the GEM 10C ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the GEM 10C ellipsoid\""); - add_srs_wkt (p, 1, - ",DATUM[\"Not_specified_based_on_GEM_10C_ellipsoid\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GEM 10C\",6378137,298.257223563,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7031\"]],AUTHORITY[\"EPSG\",\"6031\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4031\"]]"); - p = add_epsg_def (filter, first, last, 4032, "epsg", 4032, - "Unknown datum based upon the OSU86F ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6378136.2 +b=6356751.516927429 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the OSU86F ellipsoid\""); - add_srs_wkt (p, 1, - ",DATUM[\"Not_specified_based_on_OSU86F_ellipsoid\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"OSU86F\",6378136.2,298.257223563,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7032\"]],AUTHORITY[\"EPSG\",\"6032\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4032\"]]"); - p = add_epsg_def (filter, first, last, 4033, "epsg", 4033, - "Unknown datum based upon the OSU91A ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6378136.3 +b=6356751.616592146 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the OSU91A ellipsoid\""); - add_srs_wkt (p, 1, - ",DATUM[\"Not_specified_based_on_OSU91A_ellipsoid\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"OSU91A\",6378136.3,298.257223563,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7033\"]],AUTHORITY[\"EPSG\",\"6033\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4033\"]]"); - p = add_epsg_def (filter, first, last, 4034, "epsg", 4034, - "Unknown datum based upon the Clarke 1880 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.144808011 +b=6356514.966204134 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Clarke 1880 ellips"); - add_srs_wkt (p, 1, - "oid\",DATUM[\"Not_specified_based_on_Clarke_1880_ellipso"); - add_srs_wkt (p, 2, - "id\",SPHEROID[\"Clarke 1880\",6378249.144808011,293.4663"); - add_srs_wkt (p, 3, - "076556303,AUTHORITY[\"EPSG\",\"7034\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6034\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4034\"]]"); - p = add_epsg_def (filter, first, last, 4035, "epsg", 4035, - "Unknown datum based upon the Authalic Sphere"); - add_proj4text (p, 0, - "+proj=longlat +a=6371000 +b=6371000 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Authalic Sphere\","); - add_srs_wkt (p, 1, - "DATUM[\"Not_specified_based_on_Authalic_Sphere\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"Sphere\",6371000,0,AUTHORITY[\"EPSG\",\"7035\"]],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"6035\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 5, - "33,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\"40"); - add_srs_wkt (p, 6, - "35\"]]"); - p = add_epsg_def (filter, first, last, 4036, "epsg", 4036, - "Unknown datum based upon the GRS 1967 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS67 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the GRS 1967 ellipsoid"); - add_srs_wkt (p, 1, - "\",DATUM[\"Not_specified_based_on_GRS_1967_ellipsoid\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"GRS 1967\",6378160,298.247167427,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7036\"]],AUTHORITY[\"EPSG\",\"6036\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4036\"]]"); - p = add_epsg_def (filter, first, last, 4037, "epsg", 4037, - "WGS 84 / TMzn35N"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / TMzn35N\",GEOGCS[\"WGS 84\",DATUM[\"WG"); - add_srs_wkt (p, 1, - "S_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHO"); - add_srs_wkt (p, 2, - "RITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],P"); - add_srs_wkt (p, 3, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 4, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 5, - "\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 6, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"central_meridian\",27],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 8, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 10, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 11, - "T],AUTHORITY[\"EPSG\",\"4037\"]]"); - p = add_epsg_def (filter, first, last, 4038, "epsg", 4038, - "WGS 84 / TMzn36N"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / TMzn36N\",GEOGCS[\"WGS 84\",DATUM[\"WG"); - add_srs_wkt (p, 1, - "S_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHO"); - add_srs_wkt (p, 2, - "RITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],P"); - add_srs_wkt (p, 3, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 4, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 5, - "\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 6, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"central_meridian\",33],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 8, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 10, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 11, - "T],AUTHORITY[\"EPSG\",\"4038\"]]"); - p = add_epsg_def (filter, first, last, 4041, "epsg", 4041, - "Unknown datum based upon the Average Terrestrial System 1977 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Average Terrestria"); - add_srs_wkt (p, 1, - "l System 1977 ellipsoid\",DATUM[\"Not_specified_based_on"); - add_srs_wkt (p, 2, - "_Average_Terrestrial_System_1977_ellipsoid\",SPHEROID[\""); - add_srs_wkt (p, 3, - "Average Terrestrial System 1977\",6378135,298.257,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"7041\"]],AUTHORITY[\"EPSG\",\"6041\"]],PR"); - add_srs_wkt (p, 5, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 6, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 7, - "]],AUTHORITY[\"EPSG\",\"4041\"]]"); - p = add_epsg_def (filter, first, last, 4042, "epsg", 4042, - "Unknown datum based upon the Everest (1830 Definition) ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6377299.36559538 +b=6356098.359005156 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Everest (1830 Defi"); - add_srs_wkt (p, 1, - "nition) ellipsoid\",DATUM[\"Not_specified_based_on_Evere"); - add_srs_wkt (p, 2, - "st_1830_Definition_ellipsoid\",SPHEROID[\"Everest (1830 "); - add_srs_wkt (p, 3, - "Definition)\",6377299.36559538,300.8017255433612,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"7042\"]],AUTHORITY[\"EPSG\",\"6042\"]],PRI"); - add_srs_wkt (p, 5, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 6, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 7, - "],AUTHORITY[\"EPSG\",\"4042\"]]"); - p = add_epsg_def (filter, first, last, 4043, "epsg", 4043, - "Unknown datum based upon the WGS 72 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS72 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the WGS 72 ellipsoid\""); - add_srs_wkt (p, 1, - ",DATUM[\"Not_specified_based_on_WGS_72_ellipsoid\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6043\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4043\"]]"); - p = add_epsg_def (filter, first, last, 4044, "epsg", 4044, - "Unknown datum based upon the Everest 1830 (1962 Definition) ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6377301.243 +b=6356100.230165385 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Everest 1830 (1962"); - add_srs_wkt (p, 1, - " Definition) ellipsoid\",DATUM[\"Not_specified_based_on_"); - add_srs_wkt (p, 2, - "Everest_1830_1962_Definition_ellipsoid\",SPHEROID[\"Ever"); - add_srs_wkt (p, 3, - "est 1830 (1962 Definition)\",6377301.243,300.8017255,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"7044\"]],AUTHORITY[\"EPSG\",\"6044\"]]"); - add_srs_wkt (p, 5, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 6, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 7, - "22\"]],AUTHORITY[\"EPSG\",\"4044\"]]"); - p = add_epsg_def (filter, first, last, 4045, "epsg", 4045, - "Unknown datum based upon the Everest 1830 (1975 Definition) ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6377299.151 +b=6356098.145120132 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unknown datum based upon the Everest 1830 (1975"); - add_srs_wkt (p, 1, - " Definition) ellipsoid\",DATUM[\"Not_specified_based_on_"); - add_srs_wkt (p, 2, - "Everest_1830_1975_Definition_ellipsoid\",SPHEROID[\"Ever"); - add_srs_wkt (p, 3, - "est 1830 (1975 Definition)\",6377299.151,300.8017255,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"7045\"]],AUTHORITY[\"EPSG\",\"6045\"]]"); - add_srs_wkt (p, 5, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 6, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 7, - "22\"]],AUTHORITY[\"EPSG\",\"4045\"]]"); - p = add_epsg_def (filter, first, last, 4046, "epsg", 4046, - "RGRDC 2005"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RGRDC 2005\",DATUM[\"Reseau_Geodesique_de_la_RD"); - add_srs_wkt (p, 1, - "C_2005\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 4047, "epsg", 4047, - "Unspecified datum based upon the GRS 1980 Authalic Sphere"); - add_proj4text (p, 0, - "+proj=longlat +a=6371007 +b=6371007 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unspecified datum based upon the GRS 1980 Autha"); - add_srs_wkt (p, 1, - "lic Sphere\",DATUM[\"Not_specified_based_on_GRS_1980_Aut"); - add_srs_wkt (p, 2, - "halic_Sphere\",SPHEROID[\"GRS 1980 Authalic Sphere\",637"); - add_srs_wkt (p, 3, - "1007,0,AUTHORITY[\"EPSG\",\"7048\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6047\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4047\"]]"); - p = add_epsg_def (filter, first, last, 4048, "epsg", 4048, - "RGRDC 2005 / Congo TM zone 12"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGRDC 2005 / Congo TM zone 12\",GEOGCS[\"RGRDC "); - add_srs_wkt (p, 1, - "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",12],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"4048\"]]"); - p = add_epsg_def (filter, first, last, 4049, "epsg", 4049, - "RGRDC 2005 / Congo TM zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGRDC 2005 / Congo TM zone 14\",GEOGCS[\"RGRDC "); - add_srs_wkt (p, 1, - "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",14],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"4049\"]]"); - p = add_epsg_def (filter, first, last, 4050, "epsg", 4050, - "RGRDC 2005 / Congo TM zone 16"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGRDC 2005 / Congo TM zone 16\",GEOGCS[\"RGRDC "); - add_srs_wkt (p, 1, - "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",16],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"4050\"]]"); - p = add_epsg_def (filter, first, last, 4051, "epsg", 4051, - "RGRDC 2005 / Congo TM zone 18"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGRDC 2005 / Congo TM zone 18\",GEOGCS[\"RGRDC "); - add_srs_wkt (p, 1, - "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",18],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"4051\"]]"); - p = add_epsg_def (filter, first, last, 4052, "epsg", 4052, - "Unspecified datum based upon the Clarke 1866 Authalic Sphere"); - add_proj4text (p, 0, - "+proj=longlat +a=6370997 +b=6370997 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unspecified datum based upon the Clarke 1866 Au"); - add_srs_wkt (p, 1, - "thalic Sphere\",DATUM[\"Not_specified_based_on_Clarke_18"); - add_srs_wkt (p, 2, - "66_Authalic_Sphere\",SPHEROID[\"Clarke 1866 Authalic Sph"); - add_srs_wkt (p, 3, - "ere\",6370997,0,AUTHORITY[\"EPSG\",\"7052\"]],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6052\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4052\"]]"); - p = add_epsg_def (filter, first, last, 4053, "epsg", 4053, - "Unspecified datum based upon the International 1924 Authalic Sphere"); - add_proj4text (p, 0, - "+proj=longlat +a=6371228 +b=6371228 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unspecified datum based upon the International "); - add_srs_wkt (p, 1, - "1924 Authalic Sphere\",DATUM[\"Not_specified_based_on_In"); - add_srs_wkt (p, 2, - "ternational_1924_Authalic_Sphere\",SPHEROID[\"Internatio"); - add_srs_wkt (p, 3, - "nal 1924 Authalic Sphere\",6371228,0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"7057\"]],AUTHORITY[\"EPSG\",\"6053\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 5, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4053\"]]"); - p = add_epsg_def (filter, first, last, 4054, "epsg", 4054, - "Unspecified datum based upon the Hughes 1980 ellipsoid"); - add_proj4text (p, 0, - "+proj=longlat +a=6378273 +b=6356889.449 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Unspecified datum based upon the Hughes 1980 el"); - add_srs_wkt (p, 1, - "lipsoid\",DATUM[\"Not_specified_based_on_Hughes_1980_ell"); - add_srs_wkt (p, 2, - "ipsoid\",SPHEROID[\"Hughes 1980\",6378273,298.2794111230"); - add_srs_wkt (p, 3, - "64,AUTHORITY[\"EPSG\",\"7058\"]],AUTHORITY[\"EPSG\",\"60"); - add_srs_wkt (p, 4, - "54\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4054\"]]"); - p = add_epsg_def (filter, first, last, 4055, "epsg", 4055, - "Popular Visualisation CRS"); - add_proj4text (p, 0, - "+proj=longlat +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 1, - ",0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Popular Visualisation CRS\",DATUM[\"Popular_Vis"); - add_srs_wkt (p, 1, - "ualisation_Datum\",SPHEROID[\"Popular Visualisation Sphe"); - add_srs_wkt (p, 2, - "re\",6378137,0,AUTHORITY[\"EPSG\",\"7059\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6055\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4055\"]]"); - p = add_epsg_def (filter, first, last, 4056, "epsg", 4056, - "RGRDC 2005 / Congo TM zone 20"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGRDC 2005 / Congo TM zone 20\",GEOGCS[\"RGRDC "); - add_srs_wkt (p, 1, - "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",20],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"4056\"]]"); - p = add_epsg_def (filter, first, last, 4057, "epsg", 4057, - "RGRDC 2005 / Congo TM zone 22"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGRDC 2005 / Congo TM zone 22\",GEOGCS[\"RGRDC "); - add_srs_wkt (p, 1, - "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",22],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"4057\"]]"); - p = add_epsg_def (filter, first, last, 4058, "epsg", 4058, - "RGRDC 2005 / Congo TM zone 24"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGRDC 2005 / Congo TM zone 24\",GEOGCS[\"RGRDC "); - add_srs_wkt (p, 1, - "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",24],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"4058\"]]"); - p = add_epsg_def (filter, first, last, 4059, "epsg", 4059, - "RGRDC 2005 / Congo TM zone 26"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGRDC 2005 / Congo TM zone 26\",GEOGCS[\"RGRDC "); - add_srs_wkt (p, 1, - "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",26],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"4059\"]]"); - p = add_epsg_def (filter, first, last, 4060, "epsg", 4060, - "RGRDC 2005 / Congo TM zone 28"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGRDC 2005 / Congo TM zone 28\",GEOGCS[\"RGRDC "); - add_srs_wkt (p, 1, - "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",28],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"4060\"]]"); - p = add_epsg_def (filter, first, last, 4061, "epsg", 4061, - "RGRDC 2005 / UTM zone 33S"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGRDC 2005 / UTM zone 33S\",GEOGCS[\"RGRDC 2005"); - add_srs_wkt (p, 1, - "\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1033\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",15],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 12, - "],AUTHORITY[\"EPSG\",\"4061\"]]"); - p = add_epsg_def (filter, first, last, 4062, "epsg", 4062, - "RGRDC 2005 / UTM zone 34S"); - add_proj4text (p, 0, - "+proj=utm +zone=34 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGRDC 2005 / UTM zone 34S\",GEOGCS[\"RGRDC 2005"); - add_srs_wkt (p, 1, - "\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1033\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",21],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 12, - "],AUTHORITY[\"EPSG\",\"4062\"]]"); - p = add_epsg_def (filter, first, last, 4063, "epsg", 4063, - "RGRDC 2005 / UTM zone 35S"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGRDC 2005 / UTM zone 35S\",GEOGCS[\"RGRDC 2005"); - add_srs_wkt (p, 1, - "\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1033\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",27],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 12, - "],AUTHORITY[\"EPSG\",\"4063\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_19.c b/src/spatialite/src/srsinit/epsg_inlined_19.c deleted file mode 100644 index 02dfd01..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_19.c +++ /dev/null @@ -1,2050 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_19 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 4071, "epsg", 4071, - "Chua / UTM zone 23S"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +south +ellps=intl +towgs84=-134,229,"); - add_proj4text (p, 1, - "-29,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Chua / UTM zone 23S\",GEOGCS[\"Chua\",DATUM[\"C"); - add_srs_wkt (p, 1, - "hua\",SPHEROID[\"International 1924\",6378388,297,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7022\"]],TOWGS84[-134,229,-29,0,0,0,0],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6224\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "224\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",10000000"); - add_srs_wkt (p, 10, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"4071\"]]"); - p = add_epsg_def (filter, first, last, 4075, "epsg", 4075, - "SREF98"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"SREF98\",DATUM[\"Serbian_Reference_Network_1998"); - add_srs_wkt (p, 1, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 2, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1034\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4075\"]]"); - p = add_epsg_def (filter, first, last, 4081, "epsg", 4081, - "REGCAN95"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"REGCAN95\",DATUM[\"Red_Geodesica_de_Canarias_19"); - add_srs_wkt (p, 1, - "95\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"1035\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4081\"]]"); - p = add_epsg_def (filter, first, last, 4082, "epsg", 4082, - "REGCAN95 / UTM zone 27N"); - add_proj4text (p, 0, - "+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"REGCAN95 / UTM zone 27N\",GEOGCS[\"REGCAN95\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Red_Geodesica_de_Canarias_1995\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1035\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4081\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",-21],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"4082\"]]"); - p = add_epsg_def (filter, first, last, 4083, "epsg", 4083, - "REGCAN95 / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"REGCAN95 / UTM zone 28N\",GEOGCS[\"REGCAN95\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Red_Geodesica_de_Canarias_1995\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1035\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4081\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",-15],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"4083\"]]"); - p = add_epsg_def (filter, first, last, 4087, "epsg", 4087, - "WGS 84 / World Equidistant Cylindrical"); - add_proj4text (p, 0, - "+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +dat"); - add_proj4text (p, 1, - "um=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / World Equidistant Cylindrical\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",63781"); - add_srs_wkt (p, 2, - "37,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]"); - add_srs_wkt (p, 6, - ",PROJECTION[\"Equirectangular\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 7, - "_origin\",0],PARAMETER[\"central_meridian\",0],PARAMETER"); - add_srs_wkt (p, 8, - "[\"false_easting\",0],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 9, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 10, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4087\"]]"); - p = add_epsg_def (filter, first, last, 4088, "epsg", 4088, - "World Equidistant Cylindrical (Sphere)"); - add_proj4text (p, 0, - "+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6"); - add_proj4text (p, 1, - "371007 +b=6371007 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"World Equidistant Cylindrical (Sphere)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Unspecified datum based upon the GRS 1980 Authalic Sp"); - add_srs_wkt (p, 2, - "here\",DATUM[\"Not_specified_based_on_GRS_1980_Authalic_"); - add_srs_wkt (p, 3, - "Sphere\",SPHEROID[\"GRS 1980 Authalic Sphere\",6371007,0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"7048\"]],AUTHORITY[\"EPSG\",\"6047"); - add_srs_wkt (p, 5, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 6, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4047\"]],PROJECTION[\"Eq"); - add_srs_wkt (p, 8, - "uirectangular\"],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"central_meridian\",0],PARAMETER[\"false_easting"); - add_srs_wkt (p, 10, - "\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"4088\"]]"); - p = add_epsg_def (filter, first, last, 4093, "epsg", 4093, - "ETRS89 / DKTM1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.99998 +x_0=200000 +y_"); - add_proj4text (p, 1, - "0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / DKTM1\",GEOGCS[\"ETRS89\",DATUM[\"Euro"); - add_srs_wkt (p, 1, - "pean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",9],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.99998],PARAMETER[\"false_easting\",200000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",-5000000],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"4093\"]]"); - p = add_epsg_def (filter, first, last, 4094, "epsg", 4094, - "ETRS89 / DKTM2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=10 +k=0.99998 +x_0=400000 +y"); - add_proj4text (p, 1, - "_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / DKTM2\",GEOGCS[\"ETRS89\",DATUM[\"Euro"); - add_srs_wkt (p, 1, - "pean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",10],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.99998],PARAMETER[\"false_easting\",400000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",-5000000],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"4094\"]]"); - p = add_epsg_def (filter, first, last, 4095, "epsg", 4095, - "ETRS89 / DKTM3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=11.75 +k=0.99998 +x_0=600000"); - add_proj4text (p, 1, - " +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / DKTM3\",GEOGCS[\"ETRS89\",DATUM[\"Euro"); - add_srs_wkt (p, 1, - "pean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",11.75],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.99998],PARAMETER[\"false_easting\",600000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",-5000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"4095\"]]"); - p = add_epsg_def (filter, first, last, 4096, "epsg", 4096, - "ETRS89 / DKTM4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=800000 +y_0=-50"); - add_proj4text (p, 1, - "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / DKTM4\",GEOGCS[\"ETRS89\",DATUM[\"Euro"); - add_srs_wkt (p, 1, - "pean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",15],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",1],PARAMETER[\"false_easting\",800000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"4096\"]]"); - p = add_epsg_def (filter, first, last, 4120, "epsg", 4120, - "Greek"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Greek\",DATUM[\"Greek\",SPHEROID[\"Bessel 1841\""); - add_srs_wkt (p, 1, - ",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"6120\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 4, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "4120\"]]"); - p = add_epsg_def (filter, first, last, 4121, "epsg", 4121, - "GGRS87"); - add_proj4text (p, 0, - "+proj=longlat +datum=GGRS87 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"GGRS87\",DATUM[\"Greek_Geodetic_Reference_Syste"); - add_srs_wkt (p, 1, - "m_1987\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[-199.87,74.79,246.62,"); - add_srs_wkt (p, 3, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6121\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4121\"]]"); - p = add_epsg_def (filter, first, last, 4122, "epsg", 4122, - "ATS77"); - add_proj4text (p, 0, - "+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"ATS77\",DATUM[\"Average_Terrestrial_System_1977"); - add_srs_wkt (p, 1, - "\",SPHEROID[\"Average Terrestrial System 1977\",6378135,"); - add_srs_wkt (p, 2, - "298.257,AUTHORITY[\"EPSG\",\"7041\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6122\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4122\"]]"); - p = add_epsg_def (filter, first, last, 4123, "epsg", 4123, - "KKJ"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-96.062,-82.428,-121."); - add_proj4text (p, 1, - "753,4.801,0.345,-1.376,1.496 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"KKJ\",DATUM[\"Kartastokoordinaattijarjestelma_1"); - add_srs_wkt (p, 1, - "966\",SPHEROID[\"International 1924\",6378388,297,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7022\"]],TOWGS84[-96.062,-82.428,-121.753"); - add_srs_wkt (p, 3, - ",4.801,0.345,-1.376,1.496],AUTHORITY[\"EPSG\",\"6123\"]]"); - add_srs_wkt (p, 4, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 5, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "22\"]],AUTHORITY[\"EPSG\",\"4123\"]]"); - p = add_epsg_def (filter, first, last, 4124, "epsg", 4124, - "RT90"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=414.1,41.3,603.1,-0"); - add_proj4text (p, 1, - ".855,2.141,-7.023,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RT90\",DATUM[\"Rikets_koordinatsystem_1990\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY"); - add_srs_wkt (p, 2, - "[\"EPSG\",\"7004\"]],TOWGS84[414.1,41.3,603.1,-0.855,2.1"); - add_srs_wkt (p, 3, - "41,-7.023,0],AUTHORITY[\"EPSG\",\"6124\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4124\"]]"); - p = add_epsg_def (filter, first, last, 4125, "epsg", 4125, - "Samboja"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.4"); - add_proj4text (p, 1, - "7,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Samboja\",DATUM[\"Samboja\",SPHEROID[\"Bessel 1"); - add_srs_wkt (p, 1, - "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); - add_srs_wkt (p, 2, - "]],TOWGS84[-404.78,685.68,45.47,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6125\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\"4125\"]]"); - p = add_epsg_def (filter, first, last, 4126, "epsg", 4126, - "LKS94 (ETRS89)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"LKS94 (ETRS89)\",DATUM[\"Lithuania_1994_ETRS89\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6126\"]],PRIMEM[\""); - add_srs_wkt (p, 3, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 4, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"4126\"]]"); - p = add_epsg_def (filter, first, last, 4127, "epsg", 4127, - "Tete"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +towgs84=219.315,168.975,-16"); - add_proj4text (p, 1, - "6.145,0.198,5.926,-2.356,-57.104 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Tete\",DATUM[\"Tete\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 1, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 2, - "],TOWGS84[219.315,168.975,-166.145,0.198,5.926,-2.356,-5"); - add_srs_wkt (p, 3, - "7.104],AUTHORITY[\"EPSG\",\"6127\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4127\"]]"); - p = add_epsg_def (filter, first, last, 4128, "epsg", 4128, - "Madzansua"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Madzansua\",DATUM[\"Madzansua\",SPHEROID[\"Clar"); - add_srs_wkt (p, 1, - "ke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7008\"]],AUTHORITY[\"EPSG\",\"6128\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 3, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 4, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"4128\"]]"); - p = add_epsg_def (filter, first, last, 4129, "epsg", 4129, - "Observatario"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Observatario\",DATUM[\"Observatario\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6129\"]],PRIMEM[\""); - add_srs_wkt (p, 3, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 4, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"4129\"]]"); - p = add_epsg_def (filter, first, last, 4130, "epsg", 4130, - "Moznet"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +no"); - add_proj4text (p, 1, - "_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Moznet\",DATUM[\"Moznet_ITRF94\",SPHEROID[\"WGS"); - add_srs_wkt (p, 1, - " 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]"); - add_srs_wkt (p, 2, - "],TOWGS84[0,0,0,-0,-0,-0,0],AUTHORITY[\"EPSG\",\"6130\"]"); - add_srs_wkt (p, 3, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 4, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 5, - "122\"]],AUTHORITY[\"EPSG\",\"4130\"]]"); - p = add_epsg_def (filter, first, last, 4131, "epsg", 4131, - "Indian 1960"); - add_proj4text (p, 0, - "+proj=longlat +a=6377276.345 +b=6356075.413140239 +towgs"); - add_proj4text (p, 1, - "84=198,881,317,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Indian 1960\",DATUM[\"Indian_1960\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Everest 1830 (1937 Adjustment)\",6377276.345,300.8017,AU"); - add_srs_wkt (p, 2, - "THORITY[\"EPSG\",\"7015\"]],TOWGS84[198,881,317,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6131\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4131\"]]"); - p = add_epsg_def (filter, first, last, 4132, "epsg", 4132, - "FD58"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-239.1,-170.02,397."); - add_proj4text (p, 1, - "5,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"FD58\",DATUM[\"Final_Datum_1958\",SPHEROID[\"Cl"); - add_srs_wkt (p, 1, - "arke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7012\"]],TOWGS84[-239.1,-170.02,397.5,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6132\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4132\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 4133, "epsg", 4133, - "EST92"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,"); - add_proj4text (p, 1, - "0.0183,-0.0003,-0.007,-0.014 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"EST92\",DATUM[\"Estonia_1992\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 1, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 2, - "],TOWGS84[0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.0"); - add_srs_wkt (p, 3, - "14],AUTHORITY[\"EPSG\",\"6133\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 5, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"4133\"]]"); - p = add_epsg_def (filter, first, last, 4134, "epsg", 4134, - "PSD93"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-180.624,-225.516,1"); - add_proj4text (p, 1, - "73.919,-0.81,-1.898,8.336,16.7101 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"PSD93\",DATUM[\"PDO_Survey_Datum_1993\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7012\"]],TOWGS84[-180.624,-225.516,173.919,-0.8"); - add_srs_wkt (p, 3, - "1,-1.898,8.336,16.7101],AUTHORITY[\"EPSG\",\"6134\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4134\"]]"); - p = add_epsg_def (filter, first, last, 4135, "epsg", 4135, - "Old Hawaiian"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Old Hawaiian\",DATUM[\"Old_Hawaiian\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7008\"]],TOWGS84[61,-285,-181,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"6135\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4135\"]]"); - p = add_epsg_def (filter, first, last, 4136, "epsg", 4136, - "St. Lawrence Island"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"St. Lawrence Island\",DATUM[\"St_Lawrence_Islan"); - add_srs_wkt (p, 1, - "d\",SPHEROID[\"Clarke 1866\",6378206.4,294.9786982138982"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6136"); - add_srs_wkt (p, 3, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 4, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4136\"]]"); - p = add_epsg_def (filter, first, last, 4137, "epsg", 4137, - "St. Paul Island"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"St. Paul Island\",DATUM[\"St_Paul_Island\",SPHE"); - add_srs_wkt (p, 1, - "ROID[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6137\"]],PRI"); - add_srs_wkt (p, 3, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 4, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 5, - "],AUTHORITY[\"EPSG\",\"4137\"]]"); - p = add_epsg_def (filter, first, last, 4138, "epsg", 4138, - "St. George Island"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"St. George Island\",DATUM[\"St_George_Island\","); - add_srs_wkt (p, 1, - "SPHEROID[\"Clarke 1866\",6378206.4,294.9786982138982,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6138\"]]"); - add_srs_wkt (p, 3, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 4, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 5, - "22\"]],AUTHORITY[\"EPSG\",\"4138\"]]"); - p = add_epsg_def (filter, first, last, 4139, "epsg", 4139, - "Puerto Rico"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Puerto Rico\",DATUM[\"Puerto_Rico\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EP"); - add_srs_wkt (p, 2, - "SG\",\"7008\"]],TOWGS84[11,72,-101,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6139\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4139\"]]"); - p = add_epsg_def (filter, first, last, 4140, "epsg", 4140, - "NAD83(CSRS98)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_"); - add_srs_wkt (p, 1, - "Reference_System\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 2, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 3, - ",0],AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 5, - "925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"4140\"]]"); - p = add_epsg_def (filter, first, last, 4141, "epsg", 4141, - "Israel"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +n"); - add_proj4text (p, 1, - "o_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Israel\",DATUM[\"Israel\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 1, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 2, - "GS84[-48,55,52,0,0,0,0],AUTHORITY[\"EPSG\",\"6141\"]],PR"); - add_srs_wkt (p, 3, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 4, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 5, - "]],AUTHORITY[\"EPSG\",\"4141\"]]"); - p = add_epsg_def (filter, first, last, 4142, "epsg", 4142, - "Locodjo 1965"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Locodjo 1965\",DATUM[\"Locodjo_1965\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); - add_srs_wkt (p, 2, - "SG\",\"7012\"]],TOWGS84[-125,53,467,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6142\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4142\"]]"); - p = add_epsg_def (filter, first, last, 4143, "epsg", 4143, - "Abidjan 1987"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-124.76,53,466.79,0"); - add_proj4text (p, 1, - ",0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Abidjan 1987\",DATUM[\"Abidjan_1987\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); - add_srs_wkt (p, 2, - "SG\",\"7012\"]],TOWGS84[-124.76,53,466.79,0,0,0,0],AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"6143\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4143"); - add_srs_wkt (p, 6, - "\"]]"); - p = add_epsg_def (filter, first, last, 4144, "epsg", 4144, - "Kalianpur 1937"); - add_proj4text (p, 0, - "+proj=longlat +a=6377276.345 +b=6356075.413140239 +towgs"); - add_proj4text (p, 1, - "84=282,726,254,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Kalianpur 1937\",DATUM[\"Kalianpur_1937\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"Everest 1830 (1937 Adjustment)\",6377276.345,300.8"); - add_srs_wkt (p, 2, - "017,AUTHORITY[\"EPSG\",\"7015\"]],TOWGS84[282,726,254,0,"); - add_srs_wkt (p, 3, - "0,0,0],AUTHORITY[\"EPSG\",\"6144\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4144\"]]"); - p = add_epsg_def (filter, first, last, 4145, "epsg", 4145, - "Kalianpur 1962"); - add_proj4text (p, 0, - "+proj=longlat +a=6377301.243 +b=6356100.230165385 +towgs"); - add_proj4text (p, 1, - "84=283,682,231,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Kalianpur 1962\",DATUM[\"Kalianpur_1962\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"Everest 1830 (1962 Definition)\",6377301.243,300.8"); - add_srs_wkt (p, 2, - "017255,AUTHORITY[\"EPSG\",\"7044\"]],TOWGS84[283,682,231"); - add_srs_wkt (p, 3, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6145\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 4, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 5, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"4145\"]]"); - p = add_epsg_def (filter, first, last, 4146, "epsg", 4146, - "Kalianpur 1975"); - add_proj4text (p, 0, - "+proj=longlat +a=6377299.151 +b=6356098.145120132 +towgs"); - add_proj4text (p, 1, - "84=295,736,257,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Kalianpur 1975\",DATUM[\"Kalianpur_1975\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"Everest 1830 (1975 Definition)\",6377299.151,300.8"); - add_srs_wkt (p, 2, - "017255,AUTHORITY[\"EPSG\",\"7045\"]],TOWGS84[295,736,257"); - add_srs_wkt (p, 3, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 4, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 5, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"4146\"]]"); - p = add_epsg_def (filter, first, last, 4147, "epsg", 4147, - "Hanoi 1972"); - add_proj4text (p, 0, - "+proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.3"); - add_proj4text (p, 1, - "9,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Hanoi 1972\",DATUM[\"Hanoi_1972\",SPHEROID[\"Kr"); - add_srs_wkt (p, 1, - "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); - add_srs_wkt (p, 2, - "]],TOWGS84[-17.51,-108.32,-62.39,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"6147\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4147\"]]"); - p = add_epsg_def (filter, first, last, 4148, "epsg", 4148, - "Hartebeesthoek94"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Hartebeesthoek94\",DATUM[\"Hartebeesthoek94\",S"); - add_srs_wkt (p, 1, - "PHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6148\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4148\"]]"); - p = add_epsg_def (filter, first, last, 4149, "epsg", 4149, - "CH1903"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=674.4,15.1,405.3,0,"); - add_proj4text (p, 1, - "0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"CH1903\",DATUM[\"CH1903\",SPHEROID[\"Bessel 184"); - add_srs_wkt (p, 1, - "1\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]"); - add_srs_wkt (p, 2, - "],TOWGS84[674.4,15.1,405.3,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "6149\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 4, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4149\"]]"); - p = add_epsg_def (filter, first, last, 4150, "epsg", 4150, - "CH1903+"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405."); - add_proj4text (p, 1, - "346,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"CH1903+\",DATUM[\"CH1903+\",SPHEROID[\"Bessel 1"); - add_srs_wkt (p, 1, - "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); - add_srs_wkt (p, 2, - "]],TOWGS84[674.374,15.056,405.346,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6150\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4150\"]]"); - p = add_epsg_def (filter, first, last, 4151, "epsg", 4151, - "CHTRF95"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"CHTRF95\",DATUM[\"Swiss_Terrestrial_Reference_F"); - add_srs_wkt (p, 1, - "rame_1995\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"6151\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 5, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); - add_srs_wkt (p, 6, - "51\"]]"); - p = add_epsg_def (filter, first, last, 4152, "epsg", 4152, - "NAD83(HARN)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refer"); - add_srs_wkt (p, 1, - "ence_Network\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 2, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4152\"]]"); - p = add_epsg_def (filter, first, last, 4153, "epsg", 4153, - "Rassadiran"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-133.63,-157.5,-158.6"); - add_proj4text (p, 1, - "2,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Rassadiran\",DATUM[\"Rassadiran\",SPHEROID[\"In"); - add_srs_wkt (p, 1, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 2, - "\"]],TOWGS84[-133.63,-157.5,-158.62,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6153\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4153\"]]"); - p = add_epsg_def (filter, first, last, 4154, "epsg", 4154, - "ED50(ED77)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-117,-132,-164,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"ED50(ED77)\",DATUM[\"European_Datum_1950_1977\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7022\"]],TOWGS84[-117,-132,-164,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6154\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4154\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 4155, "epsg", 4155, - "Dabola 1981"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83,37,12"); - add_proj4text (p, 1, - "4,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Dabola 1981\",DATUM[\"Dabola_1981\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Clarke 1880 (IGN)\",6378249.2,293.4660212936269,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7011\"]],TOWGS84[-83,37,124,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6155\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4155\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 4156, "epsg", 4156, - "S-JTSK"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=589,76,480,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"S-JTSK\",DATUM[\"System_Jednotne_Trigonometrick"); - add_srs_wkt (p, 1, - "e_Site_Katastralni\",SPHEROID[\"Bessel 1841\",6377397.15"); - add_srs_wkt (p, 2, - "5,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[589,"); - add_srs_wkt (p, 3, - "76,480,0,0,0,0],AUTHORITY[\"EPSG\",\"6156\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4156\"]]"); - p = add_epsg_def (filter, first, last, 4157, "epsg", 4157, - "Mount Dillon"); - add_proj4text (p, 0, - "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Mount Dillon\",DATUM[\"Mount_Dillon\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Clarke 1858\",6378293.645208759,294.2606763692654,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7007\"]],AUTHORITY[\"EPSG\",\"6157\"]],"); - add_srs_wkt (p, 3, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 4, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 5, - "2\"]],AUTHORITY[\"EPSG\",\"4157\"]]"); - p = add_epsg_def (filter, first, last, 4158, "epsg", 4158, - "Naparima 1955"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-0.465,372.095,171.73"); - add_proj4text (p, 1, - "6,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Naparima 1955\",DATUM[\"Naparima_1955\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 2, - "\"7022\"]],TOWGS84[-0.465,372.095,171.736,0,0,0,0],AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"6158\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4158"); - add_srs_wkt (p, 6, - "\"]]"); - p = add_epsg_def (filter, first, last, 4159, "epsg", 4159, - "ELD79"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-115.854,-99.0583,-15"); - add_proj4text (p, 1, - "2.462,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"ELD79\",DATUM[\"European_Libyan_Datum_1979\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"International 1924\",6378388,297,AUTHORITY[\"EP"); - add_srs_wkt (p, 2, - "SG\",\"7022\"]],TOWGS84[-115.854,-99.0583,-152.462,0,0,0"); - add_srs_wkt (p, 3, - ",0],AUTHORITY[\"EPSG\",\"6159\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 5, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"4159\"]]"); - p = add_epsg_def (filter, first, last, 4160, "epsg", 4160, - "Chos Malal 1914"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Chos Malal 1914\",DATUM[\"Chos_Malal_1914\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7022\"]],AUTHORITY[\"EPSG\",\"6160\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 3, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 4, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"4160\"]]"); - p = add_epsg_def (filter, first, last, 4161, "epsg", 4161, - "Pampa del Castillo"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Pampa del Castillo\",DATUM[\"Pampa_del_Castillo"); - add_srs_wkt (p, 1, - "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); - add_srs_wkt (p, 2, - "[\"EPSG\",\"7022\"]],TOWGS84[27.5,14,186.4,0,0,0,0],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"6161\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"416"); - add_srs_wkt (p, 6, - "1\"]]"); - p = add_epsg_def (filter, first, last, 4162, "epsg", 4162, - "Korean 1985"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Korean 1985\",DATUM[\"Korean_Datum_1985\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\""); - add_srs_wkt (p, 3, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 4, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"4162\"]]"); - p = add_epsg_def (filter, first, last, 4163, "epsg", 4163, - "Yemen NGN96"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Yemen NGN96\",DATUM[\"Yemen_National_Geodetic_N"); - add_srs_wkt (p, 1, - "etwork_1996\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"6163\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 5, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); - add_srs_wkt (p, 6, - "63\"]]"); - p = add_epsg_def (filter, first, last, 4164, "epsg", 4164, - "South Yemen"); - add_proj4text (p, 0, - "+proj=longlat +ellps=krass +towgs84=-76,-138,67,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"South Yemen\",DATUM[\"South_Yemen\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 2, - "4\"]],TOWGS84[-76,-138,67,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "6164\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 4, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4164\"]]"); - p = add_epsg_def (filter, first, last, 4165, "epsg", 4165, - "Bissau"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-173,253,27,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Bissau\",DATUM[\"Bissau\",SPHEROID[\"Internatio"); - add_srs_wkt (p, 1, - "nal 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOW"); - add_srs_wkt (p, 2, - "GS84[-173,253,27,0,0,0,0],AUTHORITY[\"EPSG\",\"6165\"]],"); - add_srs_wkt (p, 3, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 4, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 5, - "2\"]],AUTHORITY[\"EPSG\",\"4165\"]]"); - p = add_epsg_def (filter, first, last, 4166, "epsg", 4166, - "Korean 1995"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Korean 1995\",DATUM[\"Korean_Datum_1995\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 2, - "\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "166\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4166\"]]"); - p = add_epsg_def (filter, first, last, 4167, "epsg", 4167, - "NZGD2000"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NZGD2000\",DATUM[\"New_Zealand_Geodetic_Datum_2"); - add_srs_wkt (p, 1, - "000\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]]"); - p = add_epsg_def (filter, first, last, 4168, "epsg", 4168, - "Accra"); - add_proj4text (p, 0, - "+proj=longlat +a=6378300 +b=6356751.689189189 +towgs84=-"); - add_proj4text (p, 1, - "199,32,322,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Accra\",DATUM[\"Accra\",SPHEROID[\"War Office\""); - add_srs_wkt (p, 1, - ",6378300,296,AUTHORITY[\"EPSG\",\"7029\"]],TOWGS84[-199,"); - add_srs_wkt (p, 2, - "32,322,0,0,0,0],AUTHORITY[\"EPSG\",\"6168\"]],PRIMEM[\"G"); - add_srs_wkt (p, 3, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 4, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"4168\"]]"); - p = add_epsg_def (filter, first, last, 4169, "epsg", 4169, - "American Samoa 1962"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +towgs84=-115,118,426,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"American Samoa 1962\",DATUM[\"American_Samoa_19"); - add_srs_wkt (p, 1, - "62\",SPHEROID[\"Clarke 1866\",6378206.4,294.978698213898"); - add_srs_wkt (p, 2, - "2,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[-115,118,426,0,0"); - add_srs_wkt (p, 3, - ",0,0],AUTHORITY[\"EPSG\",\"6169\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4169\"]]"); - p = add_epsg_def (filter, first, last, 4170, "epsg", 4170, - "SIRGAS 1995"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"SIRGAS 1995\",DATUM[\"Sistema_de_Referencia_Geo"); - add_srs_wkt (p, 1, - "centrico_para_America_del_Sur_1995\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6170\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4170\"]]"); - p = add_epsg_def (filter, first, last, 4171, "epsg", 4171, - "RGF93"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RGF93\",DATUM[\"Reseau_Geodesique_Francais_1993"); - add_srs_wkt (p, 1, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 2, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6171\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4171\"]]"); - p = add_epsg_def (filter, first, last, 4172, "epsg", 4172, - "POSGAR"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"POSGAR\",DATUM[\"Posiciones_Geodesicas_Argentin"); - add_srs_wkt (p, 1, - "as\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"6172\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\"4172\"]]"); - p = add_epsg_def (filter, first, last, 4173, "epsg", 4173, - "IRENET95"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"IRENET95\",DATUM[\"IRENET95\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 1, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 2, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6173\"]],PR"); - add_srs_wkt (p, 3, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 4, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 5, - "]],AUTHORITY[\"EPSG\",\"4173\"]]"); - p = add_epsg_def (filter, first, last, 4174, "epsg", 4174, - "Sierra Leone 1924"); - add_proj4text (p, 0, - "+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Sierra Leone 1924\",DATUM[\"Sierra_Leone_Colony"); - add_srs_wkt (p, 1, - "_1924\",SPHEROID[\"War Office\",6378300,296,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7029\"]],AUTHORITY[\"EPSG\",\"6174\"]],PRIMEM[\""); - add_srs_wkt (p, 3, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 4, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"4174\"]]"); - p = add_epsg_def (filter, first, last, 4175, "epsg", 4175, - "Sierra Leone 1968"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Sierra Leone 1968\",DATUM[\"Sierra_Leone_1968\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7012\"]],TOWGS84[-88,4,101,0,0,0,0],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"6175\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 5, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); - add_srs_wkt (p, 6, - "75\"]]"); - p = add_epsg_def (filter, first, last, 4176, "epsg", 4176, - "Australian Antarctic"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Australian Antarctic\",DATUM[\"Australian_Antar"); - add_srs_wkt (p, 1, - "ctic_Datum_1998\",SPHEROID[\"GRS 1980\",6378137,298.2572"); - add_srs_wkt (p, 2, - "22101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6176\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4176\"]]"); - p = add_epsg_def (filter, first, last, 4178, "epsg", 4178, - "Pulkovo 1942(83)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=krass +towgs84=26,-121,-78,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]]"); - p = add_epsg_def (filter, first, last, 4179, "epsg", 4179, - "Pulkovo 1942(58)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=krass +towgs84=33.4,-146.6,-76.3,-0"); - add_proj4text (p, 1, - ".359,-0.053,0.844,-0.84 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0"); - add_srs_wkt (p, 3, - ".844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4179\"]]"); - p = add_epsg_def (filter, first, last, 4180, "epsg", 4180, - "EST97"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"EST97\",DATUM[\"Estonia_1997\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 1, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 2, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6180\"]],P"); - add_srs_wkt (p, 3, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 4, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 5, - "\"]],AUTHORITY[\"EPSG\",\"4180\"]]"); - p = add_epsg_def (filter, first, last, 4181, "epsg", 4181, - "Luxembourg 1930"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-189.681,18.3463,-42."); - add_proj4text (p, 1, - "7695,-0.33746,-3.09264,2.53861,0.4598 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Luxembourg 1930\",DATUM[\"Luxembourg_1930\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7022\"]],TOWGS84[-189.681,18.3463,-42.7695,-0.3374"); - add_srs_wkt (p, 3, - "6,-3.09264,2.53861,0.4598],AUTHORITY[\"EPSG\",\"6181\"]]"); - add_srs_wkt (p, 4, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 5, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "22\"]],AUTHORITY[\"EPSG\",\"4181\"]]"); - p = add_epsg_def (filter, first, last, 4182, "epsg", 4182, - "Azores Occidental 1939"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-425,-169,81,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Azores Occidental 1939\",DATUM[\"Azores_Occiden"); - add_srs_wkt (p, 1, - "tal_Islands_1939\",SPHEROID[\"International 1924\",63783"); - add_srs_wkt (p, 2, - "88,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-425,-169,8"); - add_srs_wkt (p, 3, - "1,0,0,0,0],AUTHORITY[\"EPSG\",\"6182\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4182\"]]"); - p = add_epsg_def (filter, first, last, 4183, "epsg", 4183, - "Azores Central 1948"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-104,167,-38,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Azores Central 1948\",DATUM[\"Azores_Central_Is"); - add_srs_wkt (p, 1, - "lands_1948\",SPHEROID[\"International 1924\",6378388,297"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-104,167,-38,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6183\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4183\"]]"); - p = add_epsg_def (filter, first, last, 4184, "epsg", 4184, - "Azores Oriental 1940"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-203,141,53,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Azores Oriental 1940\",DATUM[\"Azores_Oriental_"); - add_srs_wkt (p, 1, - "Islands_1940\",SPHEROID[\"International 1924\",6378388,2"); - add_srs_wkt (p, 2, - "97,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-203,141,53,0,0"); - add_srs_wkt (p, 3, - ",0,0],AUTHORITY[\"EPSG\",\"6184\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4184\"]]"); - p = add_epsg_def (filter, first, last, 4185, "epsg", 4185, - "Madeira 1936"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Madeira 1936\",DATUM[\"Madeira_1936\",SPHEROID["); - add_srs_wkt (p, 1, - "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7022\"]],AUTHORITY[\"EPSG\",\"6185\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 3, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 4, - "74532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"4185\"]]"); - p = add_epsg_def (filter, first, last, 4188, "epsg", 4188, - "OSNI 1952"); - add_proj4text (p, 0, - "+proj=longlat +ellps=airy +towgs84=482.5,-130.6,564.6,-1"); - add_proj4text (p, 1, - ".042,-0.214,-0.631,8.15 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"OSNI 1952\",DATUM[\"OSNI_1952\",SPHEROID[\"Airy"); - add_srs_wkt (p, 1, - " 1830\",6377563.396,299.3249646,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 2, - "1\"]],TOWGS84[482.5,-130.6,564.6,-1.042,-0.214,-0.631,8."); - add_srs_wkt (p, 3, - "15],AUTHORITY[\"EPSG\",\"6188\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 5, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"4188\"]]"); - p = add_epsg_def (filter, first, last, 4189, "epsg", 4189, - "REGVEN"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"REGVEN\",DATUM[\"Red_Geodesica_Venezolana\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6189\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4189\"]]"); - p = add_epsg_def (filter, first, last, 4190, "epsg", 4190, - "POSGAR 98"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"POSGAR 98\",DATUM[\"Posiciones_Geodesicas_Argen"); - add_srs_wkt (p, 1, - "tinas_1998\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6190\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "190\"]]"); - p = add_epsg_def (filter, first, last, 4191, "epsg", 4191, - "Albanian 1987"); - add_proj4text (p, 0, - "+proj=longlat +ellps=krass +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Albanian 1987\",DATUM[\"Albanian_1987\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7024\"]],AUTHORITY[\"EPSG\",\"6191\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 3, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 4, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"4191\"]]"); - p = add_epsg_def (filter, first, last, 4192, "epsg", 4192, - "Douala 1948"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-206.1,-174.7,-87.7,0"); - add_proj4text (p, 1, - ",0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Douala 1948\",DATUM[\"Douala_1948\",SPHEROID[\""); - add_srs_wkt (p, 1, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "22\"]],TOWGS84[-206.1,-174.7,-87.7,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6192\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4192\"]]"); - p = add_epsg_def (filter, first, last, 4193, "epsg", 4193, - "Manoca 1962"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-70.9,-15"); - add_proj4text (p, 1, - "1.8,-41.4,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Manoca 1962\",DATUM[\"Manoca_1962\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Clarke 1880 (IGN)\",6378249.2,293.4660212936269,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7011\"]],TOWGS84[-70.9,-151.8,-41.4,0,0,0,0"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6193\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4193\"]]"); - p = add_epsg_def (filter, first, last, 4194, "epsg", 4194, - "Qornoq 1927"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Qornoq 1927\",DATUM[\"Qornoq_1927\",SPHEROID[\""); - add_srs_wkt (p, 1, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "22\"]],TOWGS84[164,138,-189,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"6194\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 4, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4194\"]]"); - p = add_epsg_def (filter, first, last, 4195, "epsg", 4195, - "Scoresbysund 1952"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=105,326,-102.5,0,0,0."); - add_proj4text (p, 1, - "814,-0.6 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Scoresbysund 1952\",DATUM[\"Scoresbysund_1952\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7022\"]],TOWGS84[105,326,-102.5,0,0,0.814,-0.6]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6195\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4195\"]]"); - p = add_epsg_def (filter, first, last, 4196, "epsg", 4196, - "Ammassalik 1958"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-45,417,-3.5,0,0,0.81"); - add_proj4text (p, 1, - "4,-0.6 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Ammassalik 1958\",DATUM[\"Ammassalik_1958\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7022\"]],TOWGS84[-45,417,-3.5,0,0,0.814,-0.6],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"6196\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"419"); - add_srs_wkt (p, 6, - "6\"]]"); - p = add_epsg_def (filter, first, last, 4197, "epsg", 4197, - "Garoua"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Garoua\",DATUM[\"Garoua\",SPHEROID[\"Clarke 188"); - add_srs_wkt (p, 1, - "0 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\""); - add_srs_wkt (p, 2, - "]],AUTHORITY[\"EPSG\",\"6197\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 4, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"4197\"]]"); - p = add_epsg_def (filter, first, last, 4198, "epsg", 4198, - "Kousseri"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Kousseri\",DATUM[\"Kousseri\",SPHEROID[\"Clarke"); - add_srs_wkt (p, 1, - " 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 2, - "012\"]],AUTHORITY[\"EPSG\",\"6198\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 3, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 4, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"4198\"]]"); - p = add_epsg_def (filter, first, last, 4199, "epsg", 4199, - "Egypt 1930"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Egypt 1930\",DATUM[\"Egypt_1930\",SPHEROID[\"In"); - add_srs_wkt (p, 1, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 2, - "\"]],AUTHORITY[\"EPSG\",\"6199\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 3, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 4, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"4199\"]]"); - p = add_epsg_def (filter, first, last, 4200, "epsg", 4200, - "Pulkovo 1995"); - add_proj4text (p, 0, - "+proj=longlat +ellps=krass +towgs84=24.47,-130.89,-81.56"); - add_proj4text (p, 1, - ",-0,-0,0.13,-0.22 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 2, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4200\"]]"); - p = add_epsg_def (filter, first, last, 4201, "epsg", 4201, - "Adindan"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Adindan\",DATUM[\"Adindan\",SPHEROID[\"Clarke 1"); - add_srs_wkt (p, 1, - "880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 2, - "2\"]],TOWGS84[-166,-15,204,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "6201\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 4, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4201\"]]"); - p = add_epsg_def (filter, first, last, 4202, "epsg", 4202, - "AGD66"); - add_proj4text (p, 0, - "+proj=longlat +ellps=aust_SA +towgs84=-117.808,-51.536,1"); - add_proj4text (p, 1, - "37.784,0.303,0.446,0.234,-0.29 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"AGD66\",DATUM[\"Australian_Geodetic_Datum_1966\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"Australian National Spheroid\",6378160,298.2"); - add_srs_wkt (p, 2, - "5,AUTHORITY[\"EPSG\",\"7003\"]],TOWGS84[-117.808,-51.536"); - add_srs_wkt (p, 3, - ",137.784,0.303,0.446,0.234,-0.29],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "202\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4202\"]]"); - p = add_epsg_def (filter, first, last, 4203, "epsg", 4203, - "AGD84"); - add_proj4text (p, 0, - "+proj=longlat +ellps=aust_SA +towgs84=-134,-48,149,0,0,0"); - add_proj4text (p, 1, - ",0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"AGD84\",DATUM[\"Australian_Geodetic_Datum_1984\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"Australian National Spheroid\",6378160,298.2"); - add_srs_wkt (p, 2, - "5,AUTHORITY[\"EPSG\",\"7003\"]],TOWGS84[-134,-48,149,0,0"); - add_srs_wkt (p, 3, - ",0,0],AUTHORITY[\"EPSG\",\"6203\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4203\"]]"); - p = add_epsg_def (filter, first, last, 4204, "epsg", 4204, - "Ain el Abd"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Ain el Abd\",DATUM[\"Ain_el_Abd_1970\",SPHEROID"); - add_srs_wkt (p, 1, - "[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7022\"]],TOWGS84[-143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6204\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4204\"]]"); - p = add_epsg_def (filter, first, last, 4205, "epsg", 4205, - "Afgooye"); - add_proj4text (p, 0, - "+proj=longlat +ellps=krass +towgs84=-43,-163,45,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Afgooye\",DATUM[\"Afgooye\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 1, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 2, - "WGS84[-43,-163,45,0,0,0,0],AUTHORITY[\"EPSG\",\"6205\"]]"); - add_srs_wkt (p, 3, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 4, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 5, - "22\"]],AUTHORITY[\"EPSG\",\"4205\"]]"); - p = add_epsg_def (filter, first, last, 4206, "epsg", 4206, - "Agadez"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Agadez\",DATUM[\"Agadez\",SPHEROID[\"Clarke 188"); - add_srs_wkt (p, 1, - "0 (IGN)\",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7011\"]],AUTHORITY[\"EPSG\",\"6206\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 3, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 4, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"4206\"]]"); - p = add_epsg_def (filter, first, last, 4207, "epsg", 4207, - "Lisbon"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-304.046,-60.576,103."); - add_proj4text (p, 1, - "64,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Lisbon\",DATUM[\"Lisbon_1937\",SPHEROID[\"Inter"); - add_srs_wkt (p, 1, - "national 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]"); - add_srs_wkt (p, 2, - "],TOWGS84[-304.046,-60.576,103.64,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6207\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4207\"]]"); - p = add_epsg_def (filter, first, last, 4208, "epsg", 4208, - "Aratu"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-151.99,287.04,-147.4"); - add_proj4text (p, 1, - "5,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Aratu\",DATUM[\"Aratu\",SPHEROID[\"Internationa"); - add_srs_wkt (p, 1, - "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); - add_srs_wkt (p, 2, - "84[-151.99,287.04,-147.45,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "6208\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 4, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4208\"]]"); - p = add_epsg_def (filter, first, last, 4209, "epsg", 4209, - "Arc 1950"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.145 +b=6356514.966398753 +towgs"); - add_proj4text (p, 1, - "84=-143,-90,-294,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Arc 1950\",DATUM[\"Arc_1950\",SPHEROID[\"Clarke"); - add_srs_wkt (p, 1, - " 1880 (Arc)\",6378249.145,293.4663077,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7013\"]],TOWGS84[-143,-90,-294,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6209\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4209\"]]"); - p = add_epsg_def (filter, first, last, 4210, "epsg", 4210, - "Arc 1960"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Arc 1960\",DATUM[\"Arc_1960\",SPHEROID[\"Clarke"); - add_srs_wkt (p, 1, - " 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 2, - "012\"]],TOWGS84[-160,-6,-302,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6210\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4210\"]]"); - p = add_epsg_def (filter, first, last, 4211, "epsg", 4211, - "Batavia"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=-377,681,-50,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Batavia\",DATUM[\"Batavia\",SPHEROID[\"Bessel 1"); - add_srs_wkt (p, 1, - "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); - add_srs_wkt (p, 2, - "]],TOWGS84[-377,681,-50,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); - add_srs_wkt (p, 3, - "11\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4211\"]]"); - p = add_epsg_def (filter, first, last, 4212, "epsg", 4212, - "Barbados 1938"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=31.95,300.99,419.19"); - add_proj4text (p, 1, - ",0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Barbados 1938\",DATUM[\"Barbados_1938\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7012\"]],TOWGS84[31.95,300.99,419.19,0,0,0,0],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6212\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4212\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_20.c b/src/spatialite/src/srsinit/epsg_inlined_20.c deleted file mode 100644 index 154ee86..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_20.c +++ /dev/null @@ -1,1898 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_20 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 4213, "epsg", 4213, - "Beduaram"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-106,-87,"); - add_proj4text (p, 1, - "188,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Beduaram\",DATUM[\"Beduaram\",SPHEROID[\"Clarke"); - add_srs_wkt (p, 1, - " 1880 (IGN)\",6378249.2,293.4660212936269,AUTHORITY[\"EP"); - add_srs_wkt (p, 2, - "SG\",\"7011\"]],TOWGS84[-106,-87,188,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"6213\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4213\"]]"); - p = add_epsg_def (filter, first, last, 4214, "epsg", 4214, - "Beijing 1954"); - add_proj4text (p, 0, - "+proj=longlat +ellps=krass +towgs84=15.8,-154.4,-82.3,0,"); - add_proj4text (p, 1, - "0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 2, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]]"); - p = add_epsg_def (filter, first, last, 4215, "epsg", 4215, - "Belge 1950"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Belge 1950\",DATUM[\"Reseau_National_Belge_1950"); - add_srs_wkt (p, 1, - "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); - add_srs_wkt (p, 2, - "[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\",\"6215\"]],PRIME"); - add_srs_wkt (p, 3, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 4, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"4215\"]]"); - p = add_epsg_def (filter, first, last, 4216, "epsg", 4216, - "Bermuda 1957"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +towgs84=-73,213,296,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Bermuda 1957\",DATUM[\"Bermuda_1957\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7008\"]],TOWGS84[-73,213,296,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"6216\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4216\"]]"); - p = add_epsg_def (filter, first, last, 4217, "epsg", 4217, - "NAD83 / BLM 59N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=171 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 59N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",171],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 11, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4217\"]]"); - p = add_epsg_def (filter, first, last, 4218, "epsg", 4218, - "Bogota 1975"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Bogota 1975\",DATUM[\"Bogota_1975\",SPHEROID[\""); - add_srs_wkt (p, 1, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "22\"]],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"6218\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 4, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4218\"]]"); - p = add_epsg_def (filter, first, last, 4219, "epsg", 4219, - "Bukit Rimpah"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=-384,664,-48,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Bukit Rimpah\",DATUM[\"Bukit_Rimpah\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 2, - "\",\"7004\"]],TOWGS84[-384,664,-48,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6219\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4219\"]]"); - p = add_epsg_def (filter, first, last, 4220, "epsg", 4220, - "Camacupa"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0"); - add_proj4text (p, 1, - ",0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Camacupa\",DATUM[\"Camacupa\",SPHEROID[\"Clarke"); - add_srs_wkt (p, 1, - " 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 2, - "012\"]],TOWGS84[-50.9,-347.6,-231,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6220\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4220\"]]"); - p = add_epsg_def (filter, first, last, 4221, "epsg", 4221, - "Campo Inchauspe"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-148,136,90,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Campo Inchauspe\",DATUM[\"Campo_Inchauspe\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7022\"]],TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6221\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4221\"]]"); - p = add_epsg_def (filter, first, last, 4222, "epsg", 4222, - "Cape"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.145 +b=6356514.966398753 +towgs"); - add_proj4text (p, 1, - "84=-136,-108,-292,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Cape\",DATUM[\"Cape\",SPHEROID[\"Clarke 1880 (A"); - add_srs_wkt (p, 1, - "rc)\",6378249.145,293.4663077,AUTHORITY[\"EPSG\",\"7013\""); - add_srs_wkt (p, 2, - "]],TOWGS84[-136,-108,-292,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "6222\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 4, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4222\"]]"); - p = add_epsg_def (filter, first, last, 4223, "epsg", 4223, - "Carthage"); - add_proj4text (p, 0, - "+proj=longlat +datum=carthage +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Carthage\",DATUM[\"Carthage\",SPHEROID[\"Clarke"); - add_srs_wkt (p, 1, - " 1880 (IGN)\",6378249.2,293.4660212936269,AUTHORITY[\"EP"); - add_srs_wkt (p, 2, - "SG\",\"7011\"]],TOWGS84[-263,6,431,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6223\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4223\"]]"); - p = add_epsg_def (filter, first, last, 4224, "epsg", 4224, - "Chua"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-134,229,-29,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Chua\",DATUM[\"Chua\",SPHEROID[\"International "); - add_srs_wkt (p, 1, - "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); - add_srs_wkt (p, 2, - "[-134,229,-29,0,0,0,0],AUTHORITY[\"EPSG\",\"6224\"]],PRI"); - add_srs_wkt (p, 3, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 4, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 5, - "],AUTHORITY[\"EPSG\",\"4224\"]]"); - p = add_epsg_def (filter, first, last, 4225, "epsg", 4225, - "Corrego Alegre 1970-72"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Corrego Alegre 1970-72\",DATUM[\"Corrego_Alegre"); - add_srs_wkt (p, 1, - "_1970_72\",SPHEROID[\"International 1924\",6378388,297,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-206,172,-6,0,0,0,0"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6225\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4225\"]]"); - p = add_epsg_def (filter, first, last, 4226, "epsg", 4226, - "Cote d'Ivoire"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Cote d'Ivoire\",DATUM[\"Cote_d_Ivoire\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936269,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7011\"]],AUTHORITY[\"EPSG\",\"6226\"]],"); - add_srs_wkt (p, 3, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 4, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"910"); - add_srs_wkt (p, 5, - "8\"]],AUTHORITY[\"EPSG\",\"4226\"]]"); - p = add_epsg_def (filter, first, last, 4227, "epsg", 4227, - "Deir ez Zor"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-190.421,"); - add_proj4text (p, 1, - "8.532,238.69,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Deir ez Zor\",DATUM[\"Deir_ez_Zor\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Clarke 1880 (IGN)\",6378249.2,293.4660212936269,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7011\"]],TOWGS84[-190.421,8.532,238.69,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6227\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4227\"]]"); - p = add_epsg_def (filter, first, last, 4228, "epsg", 4228, - "Douala"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Douala\",DATUM[\"Douala\",SPHEROID[\"Clarke 188"); - add_srs_wkt (p, 1, - "0 (IGN)\",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7011\"]],AUTHORITY[\"EPSG\",\"6228\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 3, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 4, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"4228\"]]"); - p = add_epsg_def (filter, first, last, 4229, "epsg", 4229, - "Egypt 1907"); - add_proj4text (p, 0, - "+proj=longlat +ellps=helmert +towgs84=-130,110,-13,0,0,0"); - add_proj4text (p, 1, - ",0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Egypt 1907\",DATUM[\"Egypt_1907\",SPHEROID[\"He"); - add_srs_wkt (p, 1, - "lmert 1906\",6378200,298.3,AUTHORITY[\"EPSG\",\"7020\"]]"); - add_srs_wkt (p, 2, - ",TOWGS84[-130,110,-13,0,0,0,0],AUTHORITY[\"EPSG\",\"6229"); - add_srs_wkt (p, 3, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 4, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4229\"]]"); - p = add_epsg_def (filter, first, last, 4230, "epsg", 4230, - "ED50"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\""); - add_srs_wkt (p, 1, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "22\"]],TOWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"6230\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 4, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4230\"]]"); - p = add_epsg_def (filter, first, last, 4231, "epsg", 4231, - "ED87"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-83.11,-97.38,-117.22"); - add_proj4text (p, 1, - ",0.00569291,-0.0446976,0.0442851,0.1218 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"ED87\",DATUM[\"European_Datum_1987\",SPHEROID[\""); - add_srs_wkt (p, 1, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "22\"]],TOWGS84[-83.11,-97.38,-117.22,0.00569291,-0.04469"); - add_srs_wkt (p, 3, - "76,0.0442851,0.1218],AUTHORITY[\"EPSG\",\"6231\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4231\"]]"); - p = add_epsg_def (filter, first, last, 4232, "epsg", 4232, - "Fahud"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-346,-1,224,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Fahud\",DATUM[\"Fahud\",SPHEROID[\"Clarke 1880 "); - add_srs_wkt (p, 1, - "(RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]"); - add_srs_wkt (p, 2, - "],TOWGS84[-346,-1,224,0,0,0,0],AUTHORITY[\"EPSG\",\"6232"); - add_srs_wkt (p, 3, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 4, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4232\"]]"); - p = add_epsg_def (filter, first, last, 4233, "epsg", 4233, - "Gandajika 1970"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Gandajika 1970\",DATUM[\"Gandajika_1970\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7022\"]],TOWGS84[-133,-321,50,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"6233\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4233\"]]"); - p = add_epsg_def (filter, first, last, 4234, "epsg", 4234, - "Garoua"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Garoua\",DATUM[\"Garoua\",SPHEROID[\"Clarke 188"); - add_srs_wkt (p, 1, - "0 (IGN)\",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7011\"]],AUTHORITY[\"EPSG\",\"6234\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 3, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 4, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"4234\"]]"); - p = add_epsg_def (filter, first, last, 4235, "epsg", 4235, - "Guyane Francaise"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Guyane Francaise\",DATUM[\"Guyane_Francaise\",S"); - add_srs_wkt (p, 1, - "PHEROID[\"International 1924\",6378388,297,AUTHORITY[\"E"); - add_srs_wkt (p, 2, - "PSG\",\"7022\"]],AUTHORITY[\"EPSG\",\"6235\"]],PRIMEM[\""); - add_srs_wkt (p, 3, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 4, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"4235\"]]"); - p = add_epsg_def (filter, first, last, 4236, "epsg", 4236, - "Hu Tzu Shan 1950"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-637,-549,-203,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Hu Tzu Shan 1950\",DATUM[\"Hu_Tzu_Shan_1950\",S"); - add_srs_wkt (p, 1, - "PHEROID[\"International 1924\",6378388,297,AUTHORITY[\"E"); - add_srs_wkt (p, 2, - "PSG\",\"7022\"]],TOWGS84[-637,-549,-203,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"6236\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4236\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 4237, "epsg", 4237, - "HD72"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS67 +towgs84=52.17,-71.82,-14.9,0"); - add_proj4text (p, 1, - ",0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"HD72\",DATUM[\"Hungarian_Datum_1972\",SPHEROID["); - add_srs_wkt (p, 1, - "\"GRS 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7036\"]],TOWGS84[52.17,-71.82,-14.9,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6237\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4237\"]]"); - p = add_epsg_def (filter, first, last, 4238, "epsg", 4238, - "ID74"); - add_proj4text (p, 0, - "+proj=longlat +a=6378160 +b=6356774.50408554 +towgs84=-2"); - add_proj4text (p, 1, - "4,-15,5,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"ID74\",DATUM[\"Indonesian_Datum_1974\",SPHEROID"); - add_srs_wkt (p, 1, - "[\"Indonesian National Spheroid\",6378160,298.247,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7021\"]],TOWGS84[-24,-15,5,0,0,0,0],AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"6238\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4238"); - add_srs_wkt (p, 6, - "\"]]"); - p = add_epsg_def (filter, first, last, 4239, "epsg", 4239, - "Indian 1954"); - add_proj4text (p, 0, - "+proj=longlat +a=6377276.345 +b=6356075.413140239 +towgs"); - add_proj4text (p, 1, - "84=217,823,299,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Indian 1954\",DATUM[\"Indian_1954\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Everest 1830 (1937 Adjustment)\",6377276.345,300.8017,AU"); - add_srs_wkt (p, 2, - "THORITY[\"EPSG\",\"7015\"]],TOWGS84[217,823,299,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6239\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4239\"]]"); - p = add_epsg_def (filter, first, last, 4240, "epsg", 4240, - "Indian 1975"); - add_proj4text (p, 0, - "+proj=longlat +a=6377276.345 +b=6356075.413140239 +towgs"); - add_proj4text (p, 1, - "84=210,814,289,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Indian 1975\",DATUM[\"Indian_1975\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Everest 1830 (1937 Adjustment)\",6377276.345,300.8017,AU"); - add_srs_wkt (p, 2, - "THORITY[\"EPSG\",\"7015\"]],TOWGS84[210,814,289,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6240\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4240\"]]"); - p = add_epsg_def (filter, first, last, 4241, "epsg", 4241, - "Jamaica 1875"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.144808011 +b=6356514.966204134 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Jamaica 1875\",DATUM[\"Jamaica_1875\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Clarke 1880\",6378249.144808011,293.4663076556303,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7034\"]],AUTHORITY[\"EPSG\",\"6241\"]],"); - add_srs_wkt (p, 3, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 4, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 5, - "2\"]],AUTHORITY[\"EPSG\",\"4241\"]]"); - p = add_epsg_def (filter, first, last, 4242, "epsg", 4242, - "JAD69"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +towgs84=70,207,389.5,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"JAD69\",DATUM[\"Jamaica_1969\",SPHEROID[\"Clark"); - add_srs_wkt (p, 1, - "e 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 2, - "\"7008\"]],TOWGS84[70,207,389.5,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6242\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4242\"]]"); - p = add_epsg_def (filter, first, last, 4243, "epsg", 4243, - "Kalianpur 1880"); - add_proj4text (p, 0, - "+proj=longlat +a=6377299.36559538 +b=6356098.359005156 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Kalianpur 1880\",DATUM[\"Kalianpur_1880\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"Everest (1830 Definition)\",6377299.36559538,300.8"); - add_srs_wkt (p, 2, - "017255433612,AUTHORITY[\"EPSG\",\"7042\"]],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6243\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4243\"]]"); - p = add_epsg_def (filter, first, last, 4244, "epsg", 4244, - "Kandawala"); - add_proj4text (p, 0, - "+proj=longlat +a=6377276.345 +b=6356075.413140239 +towgs"); - add_proj4text (p, 1, - "84=-97,787,86,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Kandawala\",DATUM[\"Kandawala\",SPHEROID[\"Ever"); - add_srs_wkt (p, 1, - "est 1830 (1937 Adjustment)\",6377276.345,300.8017,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7015\"]],TOWGS84[-97,787,86,0,0,0,0],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"6244\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"424"); - add_srs_wkt (p, 6, - "4\"]]"); - p = add_epsg_def (filter, first, last, 4245, "epsg", 4245, - "Kertau 1968"); - add_proj4text (p, 0, - "+proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs"); - add_proj4text (p, 1, - "84=-11,851,5,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Kertau 1968\",DATUM[\"Kertau_1968\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Everest 1830 Modified\",6377304.063,300.8017,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7018\"]],TOWGS84[-11,851,5,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6245\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4245\"]]"); - p = add_epsg_def (filter, first, last, 4246, "epsg", 4246, - "KOC"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-294.7,-200.1,525.5"); - add_proj4text (p, 1, - ",0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"KOC\",DATUM[\"Kuwait_Oil_Company\",SPHEROID[\"C"); - add_srs_wkt (p, 1, - "larke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7012\"]],TOWGS84[-294.7,-200.1,525.5,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"6246\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4246\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 4247, "epsg", 4247, - "La Canoa"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0"); - add_proj4text (p, 1, - ",0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"La Canoa\",DATUM[\"La_Canoa\",SPHEROID[\"Intern"); - add_srs_wkt (p, 1, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 2, - ",TOWGS84[-273.5,110.6,-357.9,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6247\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4247\"]]"); - p = add_epsg_def (filter, first, last, 4248, "epsg", 4248, - "PSAD56"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-288,175,-376,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"PSAD56\",DATUM[\"Provisional_South_American_Dat"); - add_srs_wkt (p, 1, - "um_1956\",SPHEROID[\"International 1924\",6378388,297,AU"); - add_srs_wkt (p, 2, - "THORITY[\"EPSG\",\"7022\"]],TOWGS84[-288,175,-376,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6248\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4248\"]]"); - p = add_epsg_def (filter, first, last, 4249, "epsg", 4249, - "Lake"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Lake\",DATUM[\"Lake\",SPHEROID[\"International "); - add_srs_wkt (p, 1, - "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"6249\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4249\""); - add_srs_wkt (p, 5, - "]]"); - p = add_epsg_def (filter, first, last, 4250, "epsg", 4250, - "Leigon"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Leigon\",DATUM[\"Leigon\",SPHEROID[\"Clarke 188"); - add_srs_wkt (p, 1, - "0 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\""); - add_srs_wkt (p, 2, - "]],TOWGS84[-130,29,364,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 3, - "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4250\"]]"); - p = add_epsg_def (filter, first, last, 4251, "epsg", 4251, - "Liberia 1964"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-90,40,88,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Liberia 1964\",DATUM[\"Liberia_1964\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); - add_srs_wkt (p, 2, - "SG\",\"7012\"]],TOWGS84[-90,40,88,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6251\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4251\"]]"); - p = add_epsg_def (filter, first, last, 4252, "epsg", 4252, - "Lome"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Lome\",DATUM[\"Lome\",SPHEROID[\"Clarke 1880 (I"); - add_srs_wkt (p, 1, - "GN)\",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 2, - "011\"]],AUTHORITY[\"EPSG\",\"6252\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 3, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 4, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"4252\"]]"); - p = add_epsg_def (filter, first, last, 4253, "epsg", 4253, - "Luzon 1911"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Luzon 1911\",DATUM[\"Luzon_1911\",SPHEROID[\"Cl"); - add_srs_wkt (p, 1, - "arke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 2, - "\",\"7008\"]],TOWGS84[-133,-77,-51,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6253\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4253\"]]"); - p = add_epsg_def (filter, first, last, 4254, "epsg", 4254, - "Hito XVIII 1963"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=16,196,93,0,0,0,0 +no"); - add_proj4text (p, 1, - "_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Hito XVIII 1963\",DATUM[\"Hito_XVIII_1963\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7022\"]],TOWGS84[16,196,93,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"6254\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4254\"]]"); - p = add_epsg_def (filter, first, last, 4255, "epsg", 4255, - "Herat North"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-333,-222,114,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Herat North\",DATUM[\"Herat_North\",SPHEROID[\""); - add_srs_wkt (p, 1, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "22\"]],TOWGS84[-333,-222,114,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6255\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4255\"]]"); - p = add_epsg_def (filter, first, last, 4256, "epsg", 4256, - "Mahe 1971"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=41,-220,-134,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Mahe 1971\",DATUM[\"Mahe_1971\",SPHEROID[\"Clar"); - add_srs_wkt (p, 1, - "ke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7012\"]],TOWGS84[41,-220,-134,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6256\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4256\"]]"); - p = add_epsg_def (filter, first, last, 4257, "epsg", 4257, - "Makassar"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.7"); - add_proj4text (p, 1, - "6,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Makassar\",DATUM[\"Makassar\",SPHEROID[\"Bessel"); - add_srs_wkt (p, 1, - " 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 2, - "4\"]],TOWGS84[-587.8,519.75,145.76,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6257\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4257\"]]"); - p = add_epsg_def (filter, first, last, 4258, "epsg", 4258, - "ETRS89"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"ETRS89\",DATUM[\"European_Terrestrial_Reference"); - add_srs_wkt (p, 1, - "_System_1989\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 2, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4258\"]]"); - p = add_epsg_def (filter, first, last, 4259, "epsg", 4259, - "Malongo 1987"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-254.1,-5.36,-100.29,"); - add_proj4text (p, 1, - "0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Malongo 1987\",DATUM[\"Malongo_1987\",SPHEROID["); - add_srs_wkt (p, 1, - "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7022\"]],TOWGS84[-254.1,-5.36,-100.29,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"6259\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4259\"]]"); - p = add_epsg_def (filter, first, last, 4260, "epsg", 4260, - "Manoca"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-70.9,-151.8,-41.4,"); - add_proj4text (p, 1, - "0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Manoca\",DATUM[\"Manoca\",SPHEROID[\"Clarke 188"); - add_srs_wkt (p, 1, - "0 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\""); - add_srs_wkt (p, 2, - "]],TOWGS84[-70.9,-151.8,-41.4,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6260\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\"4260\"]]"); - p = add_epsg_def (filter, first, last, 4261, "epsg", 4261, - "Merchich"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=31,146,47"); - add_proj4text (p, 1, - ",0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Merchich\",DATUM[\"Merchich\",SPHEROID[\"Clarke"); - add_srs_wkt (p, 1, - " 1880 (IGN)\",6378249.2,293.4660212936269,AUTHORITY[\"EP"); - add_srs_wkt (p, 2, - "SG\",\"7011\"]],TOWGS84[31,146,47,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6261\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4261\"]]"); - p = add_epsg_def (filter, first, last, 4262, "epsg", 4262, - "Massawa"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=639,405,60,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Massawa\",DATUM[\"Massawa\",SPHEROID[\"Bessel 1"); - add_srs_wkt (p, 1, - "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); - add_srs_wkt (p, 2, - "]],TOWGS84[639,405,60,0,0,0,0],AUTHORITY[\"EPSG\",\"6262"); - add_srs_wkt (p, 3, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 4, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4262\"]]"); - p = add_epsg_def (filter, first, last, 4263, "epsg", 4263, - "Minna"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Minna\",DATUM[\"Minna\",SPHEROID[\"Clarke 1880 "); - add_srs_wkt (p, 1, - "(RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]"); - add_srs_wkt (p, 2, - "],TOWGS84[-92,-93,122,0,0,0,0],AUTHORITY[\"EPSG\",\"6263"); - add_srs_wkt (p, 3, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 4, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4263\"]]"); - p = add_epsg_def (filter, first, last, 4264, "epsg", 4264, - "Mhast"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-252.95,-4.11,-96.38,"); - add_proj4text (p, 1, - "0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Mhast\",DATUM[\"Mhast\",SPHEROID[\"Internationa"); - add_srs_wkt (p, 1, - "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); - add_srs_wkt (p, 2, - "84[-252.95,-4.11,-96.38,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); - add_srs_wkt (p, 3, - "64\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4264\"]]"); - p = add_epsg_def (filter, first, last, 4265, "epsg", 4265, - "Monte Mario"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.9"); - add_proj4text (p, 1, - "71,-2.917,0.714,-11.68 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Monte Mario\",DATUM[\"Monte_Mario\",SPHEROID[\""); - add_srs_wkt (p, 1, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "22\"]],TOWGS84[-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11."); - add_srs_wkt (p, 3, - "68],AUTHORITY[\"EPSG\",\"6265\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 5, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"4265\"]]"); - p = add_epsg_def (filter, first, last, 4266, "epsg", 4266, - "M'poraloko"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-74,-130,"); - add_proj4text (p, 1, - "42,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"M'poraloko\",DATUM[\"M_poraloko\",SPHEROID[\"Cl"); - add_srs_wkt (p, 1, - "arke 1880 (IGN)\",6378249.2,293.4660212936269,AUTHORITY["); - add_srs_wkt (p, 2, - "\"EPSG\",\"7011\"]],TOWGS84[-74,-130,42,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"6266\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4266\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 4267, "epsg", 4267, - "NAD27"); - add_proj4text (p, 0, - "+proj=longlat +datum=NAD27 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NAD27\",DATUM[\"North_American_Datum_1927\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PR"); - add_srs_wkt (p, 3, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 4, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 5, - "]],AUTHORITY[\"EPSG\",\"4267\"]]"); - p = add_epsg_def (filter, first, last, 4268, "epsg", 4268, - "NAD27 Michigan"); - add_proj4text (p, 0, - "+proj=longlat +a=6378450.047548896 +b=6356826.621488444 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NAD27 Michigan\",DATUM[\"NAD27_Michigan\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"Clarke 1866 Michigan\",6378450.047548896,294.97869"); - add_srs_wkt (p, 2, - "71646747,AUTHORITY[\"EPSG\",\"7009\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6268\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4268\"]]"); - p = add_epsg_def (filter, first, last, 4269, "epsg", 4269, - "NAD83"); - add_proj4text (p, 0, - "+proj=longlat +datum=NAD83 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]]"); - p = add_epsg_def (filter, first, last, 4270, "epsg", 4270, - "Nahrwan 1967"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-243,-192,477,0,0,0"); - add_proj4text (p, 1, - ",0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Nahrwan 1967\",DATUM[\"Nahrwan_1967\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); - add_srs_wkt (p, 2, - "SG\",\"7012\"]],TOWGS84[-243,-192,477,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"6270\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4270\"]]"); - p = add_epsg_def (filter, first, last, 4271, "epsg", 4271, - "Naparima 1972"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-10,375,165,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Naparima 1972\",DATUM[\"Naparima_1972\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 2, - "\"7022\"]],TOWGS84[-10,375,165,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6271\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4271\"]]"); - p = add_epsg_def (filter, first, last, 4272, "epsg", 4272, - "NZGD49"); - add_proj4text (p, 0, - "+proj=longlat +datum=nzgd49 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NZGD49\",DATUM[\"New_Zealand_Geodetic_Datum_194"); - add_srs_wkt (p, 1, - "9\",SPHEROID[\"International 1924\",6378388,297,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7022\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0"); - add_srs_wkt (p, 3, - ".1,1.024,-4.5993],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4272\"]]"); - p = add_epsg_def (filter, first, last, 4273, "epsg", 4273, - "NGO 1948"); - add_proj4text (p, 0, - "+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs"); - add_proj4text (p, 1, - "84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NGO 1948\",DATUM[\"NGO_1948\",SPHEROID[\"Bessel"); - add_srs_wkt (p, 1, - " Modified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7005\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6273\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4273\"]]"); - p = add_epsg_def (filter, first, last, 4274, "epsg", 4274, - "Datum 73"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-223.237,110.193,36.6"); - add_proj4text (p, 1, - "49,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Datum 73\",DATUM[\"Datum_73\",SPHEROID[\"Intern"); - add_srs_wkt (p, 1, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 2, - ",TOWGS84[-223.237,110.193,36.649,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"6274\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4274\"]]"); - p = add_epsg_def (filter, first, last, 4275, "epsg", 4275, - "NTF"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,"); - add_proj4text (p, 1, - "320,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NTF\",DATUM[\"Nouvelle_Triangulation_Francaise\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936"); - add_srs_wkt (p, 2, - "269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,320,0"); - add_srs_wkt (p, 3, - ",0,0,0],AUTHORITY[\"EPSG\",\"6275\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4275\"]]"); - p = add_epsg_def (filter, first, last, 4276, "epsg", 4276, - "NSWC 9Z-2"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS66 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NSWC 9Z-2\",DATUM[\"NSWC_9Z_2\",SPHEROID[\"NWL "); - add_srs_wkt (p, 1, - "9D\",6378145,298.25,AUTHORITY[\"EPSG\",\"7025\"]],AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"6276\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4276\""); - add_srs_wkt (p, 5, - "]]"); - p = add_epsg_def (filter, first, last, 4277, "epsg", 4277, - "OSGB 1936"); - add_proj4text (p, 0, - "+proj=longlat +datum=OSGB36 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"OSGB 1936\",DATUM[\"OSGB_1936\",SPHEROID[\"Airy"); - add_srs_wkt (p, 1, - " 1830\",6377563.396,299.3249646,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 2, - "1\"]],TOWGS84[375,-111,431,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "6277\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 4, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4277\"]]"); - p = add_epsg_def (filter, first, last, 4278, "epsg", 4278, - "OSGB70"); - add_proj4text (p, 0, - "+proj=longlat +ellps=airy +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"OSGB70\",DATUM[\"OSGB_1970_SN\",SPHEROID[\"Airy"); - add_srs_wkt (p, 1, - " 1830\",6377563.396,299.3249646,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 2, - "1\"]],AUTHORITY[\"EPSG\",\"6278\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 3, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 4, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 5, - "SG\",\"4278\"]]"); - p = add_epsg_def (filter, first, last, 4279, "epsg", 4279, - "OS(SN)80"); - add_proj4text (p, 0, - "+proj=longlat +ellps=airy +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"OS(SN)80\",DATUM[\"OS_SN_1980\",SPHEROID[\"Airy"); - add_srs_wkt (p, 1, - " 1830\",6377563.396,299.3249646,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 2, - "1\"]],AUTHORITY[\"EPSG\",\"6279\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 3, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 4, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 5, - "SG\",\"4279\"]]"); - p = add_epsg_def (filter, first, last, 4280, "epsg", 4280, - "Padang"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Padang\",DATUM[\"Padang_1884\",SPHEROID[\"Besse"); - add_srs_wkt (p, 1, - "l 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "04\"]],AUTHORITY[\"EPSG\",\"6280\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 3, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 4, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 5, - "SG\",\"4280\"]]"); - p = add_epsg_def (filter, first, last, 4281, "epsg", 4281, - "Palestine 1923"); - add_proj4text (p, 0, - "+proj=longlat +a=6378300.789 +b=6356566.435 +towgs84=-27"); - add_proj4text (p, 1, - "5.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Palestine 1923\",DATUM[\"Palestine_1923\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"Clarke 1880 (Benoit)\",6378300.789,293.46631553898"); - add_srs_wkt (p, 2, - "11,AUTHORITY[\"EPSG\",\"7010\"]],TOWGS84[-275.722,94.782"); - add_srs_wkt (p, 3, - "4,340.894,-8.001,-4.42,-11.821,1],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "281\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4281\"]]"); - p = add_epsg_def (filter, first, last, 4282, "epsg", 4282, - "Pointe Noire"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-148,51,-"); - add_proj4text (p, 1, - "291,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Pointe Noire\",DATUM[\"Congo_1960_Pointe_Noire\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936"); - add_srs_wkt (p, 2, - "269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-148,51,-291,0"); - add_srs_wkt (p, 3, - ",0,0,0],AUTHORITY[\"EPSG\",\"6282\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4282\"]]"); - p = add_epsg_def (filter, first, last, 4283, "epsg", 4283, - "GDA94"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"GDA94\",DATUM[\"Geocentric_Datum_of_Australia_1"); - add_srs_wkt (p, 1, - "994\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"6283\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4283\"]]"); - p = add_epsg_def (filter, first, last, 4284, "epsg", 4284, - "Pulkovo 1942"); - add_proj4text (p, 0, - "+proj=longlat +ellps=krass +towgs84=23.92,-141.27,-80.9,"); - add_proj4text (p, 1, - "-0,0.35,0.82,-0.12 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 2, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4284\"]]"); - p = add_epsg_def (filter, first, last, 4285, "epsg", 4285, - "Qatar 1974"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-128.16,-282.42,21.93"); - add_proj4text (p, 1, - ",0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Qatar 1974\",DATUM[\"Qatar_1974\",SPHEROID[\"In"); - add_srs_wkt (p, 1, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 2, - "\"]],TOWGS84[-128.16,-282.42,21.93,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6285\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4285\"]]"); - p = add_epsg_def (filter, first, last, 4286, "epsg", 4286, - "Qatar 1948"); - add_proj4text (p, 0, - "+proj=longlat +ellps=helmert +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Qatar 1948\",DATUM[\"Qatar_1948\",SPHEROID[\"He"); - add_srs_wkt (p, 1, - "lmert 1906\",6378200,298.3,AUTHORITY[\"EPSG\",\"7020\"]]"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"6286\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 4, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"4286\"]]"); - p = add_epsg_def (filter, first, last, 4287, "epsg", 4287, - "Qornoq"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Qornoq\",DATUM[\"Qornoq\",SPHEROID[\"Internatio"); - add_srs_wkt (p, 1, - "nal 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOW"); - add_srs_wkt (p, 2, - "GS84[164,138,-189,0,0,0,0],AUTHORITY[\"EPSG\",\"6287\"]]"); - add_srs_wkt (p, 3, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 4, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 5, - "08\"]],AUTHORITY[\"EPSG\",\"4287\"]]"); - p = add_epsg_def (filter, first, last, 4288, "epsg", 4288, - "Loma Quintana"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Loma Quintana\",DATUM[\"Loma_Quintana\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 2, - "\"7022\"]],AUTHORITY[\"EPSG\",\"6288\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 3, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 4, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"4288\"]]"); - p = add_epsg_def (filter, first, last, 4289, "epsg", 4289, - "Amersfoort"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=565.417,50.3319,465"); - add_proj4text (p, 1, - ".552,-0.398957,0.343988,-1.8774,4.0725 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Amersfoort\",DATUM[\"Amersfoort\",SPHEROID[\"Be"); - add_srs_wkt (p, 1, - "ssel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7004\"]],TOWGS84[565.417,50.3319,465.552,-0.398957,0.343"); - add_srs_wkt (p, 3, - "988,-1.8774,4.0725],AUTHORITY[\"EPSG\",\"6289\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4289\"]]"); - p = add_epsg_def (filter, first, last, 4291, "epsg", 4291, - "SAD69"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +n"); - add_proj4text (p, 1, - "o_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"SAD69\",DATUM[\"South_American_Datum_1969\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"GRS 1967\",6378160,298.247167427,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7036\"]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"6291\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\"4291\"]]"); - p = add_epsg_def (filter, first, last, 4292, "epsg", 4292, - "Sapper Hill 1943"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-355,21,72,0,0,0,0 +n"); - add_proj4text (p, 1, - "o_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Sapper Hill 1943\",DATUM[\"Sapper_Hill_1943\",S"); - add_srs_wkt (p, 1, - "PHEROID[\"International 1924\",6378388,297,AUTHORITY[\"E"); - add_srs_wkt (p, 2, - "PSG\",\"7022\"]],TOWGS84[-355,21,72,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6292\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4292\"]]"); - p = add_epsg_def (filter, first, last, 4293, "epsg", 4293, - "Schwarzeck"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bess_nam +towgs84=616,97,-251,0,0,0"); - add_proj4text (p, 1, - ",0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Schwarzeck\",DATUM[\"Schwarzeck\",SPHEROID[\"Be"); - add_srs_wkt (p, 1, - "ssel Namibia (GLM)\",6377483.865280419,299.1528128,AUTHO"); - add_srs_wkt (p, 2, - "RITY[\"EPSG\",\"7046\"]],TOWGS84[616,97,-251,0,0,0,0],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6293\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "293\"]]"); - p = add_epsg_def (filter, first, last, 4294, "epsg", 4294, - "Segora"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Segora\",DATUM[\"Segora\",SPHEROID[\"Bessel 184"); - add_srs_wkt (p, 1, - "1\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]"); - add_srs_wkt (p, 2, - "],TOWGS84[-403,684,41,0,0,0,0],AUTHORITY[\"EPSG\",\"6294"); - add_srs_wkt (p, 3, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 4, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"9108\"]],AUTHORITY[\"EPSG\",\"4294\"]]"); - p = add_epsg_def (filter, first, last, 4295, "epsg", 4295, - "Serindung"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Serindung\",DATUM[\"Serindung\",SPHEROID[\"Bess"); - add_srs_wkt (p, 1, - "el 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 2, - "004\"]],AUTHORITY[\"EPSG\",\"6295\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 3, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 4, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"4295\"]]"); - p = add_epsg_def (filter, first, last, 4296, "epsg", 4296, - "Sudan"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Sudan\",DATUM[\"Sudan\",SPHEROID[\"Clarke 1880 "); - add_srs_wkt (p, 1, - "(IGN)\",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7011\"]],AUTHORITY[\"EPSG\",\"6296\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 3, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 4, - "74532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"4296\"]]"); - p = add_epsg_def (filter, first, last, 4297, "epsg", 4297, - "Tananarive"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Tananarive\",DATUM[\"Tananarive_1925\",SPHEROID"); - add_srs_wkt (p, 1, - "[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7022\"]],TOWGS84[-189,-242,-91,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6297\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4297\"]]"); - p = add_epsg_def (filter, first, last, 4298, "epsg", 4298, - "Timbalai 1948"); - add_proj4text (p, 0, - "+proj=longlat +ellps=evrstSS +towgs84=-533.4,669.2,-52.5"); - add_proj4text (p, 1, - ",0,0,4.28,9.4 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Timbalai 1948\",DATUM[\"Timbalai_1948\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"Everest 1830 (1967 Definition)\",6377298.556,300.801"); - add_srs_wkt (p, 2, - "7,AUTHORITY[\"EPSG\",\"7016\"]],TOWGS84[-533.4,669.2,-52"); - add_srs_wkt (p, 3, - ".5,0,0,4.28,9.4],AUTHORITY[\"EPSG\",\"6298\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4298\"]]"); - p = add_epsg_def (filter, first, last, 4299, "epsg", 4299, - "TM65"); - add_proj4text (p, 0, - "+proj=longlat +datum=ire65 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"TM65\",DATUM[\"TM65\",SPHEROID[\"Airy Modified "); - add_srs_wkt (p, 1, - "1849\",6377340.189,299.3249646,AUTHORITY[\"EPSG\",\"7002"); - add_srs_wkt (p, 2, - "\"]],TOWGS84[482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.1"); - add_srs_wkt (p, 3, - "5],AUTHORITY[\"EPSG\",\"6299\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4299\"]]"); - p = add_epsg_def (filter, first, last, 4300, "epsg", 4300, - "TM75"); - add_proj4text (p, 0, - "+proj=longlat +ellps=mod_airy +towgs84=482.5,-130.6,564."); - add_proj4text (p, 1, - "6,-1.042,-0.214,-0.631,8.15 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"TM75\",DATUM[\"Geodetic_Datum_of_1965\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"Airy Modified 1849\",6377340.189,299.3249646,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7002\"]],TOWGS84[482.5,-130.6,564.6,-1.042"); - add_srs_wkt (p, 3, - ",-0.214,-0.631,8.15],AUTHORITY[\"EPSG\",\"6300\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4300\"]]"); - p = add_epsg_def (filter, first, last, 4301, "epsg", 4301, - "Tokyo"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=-146.414,507.337,68"); - add_proj4text (p, 1, - "0.507,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\""); - add_srs_wkt (p, 1, - ",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],T"); - add_srs_wkt (p, 2, - "OWGS84[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]]"); - p = add_epsg_def (filter, first, last, 4302, "epsg", 4302, - "Trinidad 1903"); - add_proj4text (p, 0, - "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 "); - add_proj4text (p, 1, - "+towgs84=-61.702,284.488,472.052,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Trinidad 1903\",DATUM[\"Trinidad_1903\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"Clarke 1858\",6378293.645208759,294.2606763692654,AU"); - add_srs_wkt (p, 2, - "THORITY[\"EPSG\",\"7007\"]],TOWGS84[-61.702,284.488,472."); - add_srs_wkt (p, 3, - "052,0,0,0,0],AUTHORITY[\"EPSG\",\"6302\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4302\"]]"); - p = add_epsg_def (filter, first, last, 4303, "epsg", 4303, - "TC(1948)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=helmert +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"TC(1948)\",DATUM[\"Trucial_Coast_1948\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"Helmert 1906\",6378200,298.3,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "20\"]],AUTHORITY[\"EPSG\",\"6303\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 3, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 4, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 5, - "SG\",\"4303\"]]"); - p = add_epsg_def (filter, first, last, 4304, "epsg", 4304, - "Voirol 1875"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,"); - add_proj4text (p, 1, - "227,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Voirol 1875\",DATUM[\"Voirol_1875\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Clarke 1880 (IGN)\",6378249.2,293.4660212936269,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7011\"]],TOWGS84[-73,-247,227,0,0,0,0],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"6304\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"430"); - add_srs_wkt (p, 6, - "4\"]]"); - p = add_epsg_def (filter, first, last, 4306, "epsg", 4306, - "Bern 1938"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Bern 1938\",DATUM[\"Bern_1938\",SPHEROID[\"Bess"); - add_srs_wkt (p, 1, - "el 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 2, - "004\"]],AUTHORITY[\"EPSG\",\"6306\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 3, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 4, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"4306\"]]"); - p = add_epsg_def (filter, first, last, 4307, "epsg", 4307, - "Nord Sahara 1959"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-186,-93,310,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Nord Sahara 1959\",DATUM[\"Nord_Sahara_1959\",S"); - add_srs_wkt (p, 1, - "PHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7012\"]],TOWGS84[-186,-93,310,0,0,0,0],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6307\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "307\"]]"); - p = add_epsg_def (filter, first, last, 4308, "epsg", 4308, - "RT38"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RT38\",DATUM[\"Stockholm_1938\",SPHEROID[\"Bess"); - add_srs_wkt (p, 1, - "el 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 2, - "004\"]],AUTHORITY[\"EPSG\",\"6308\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 3, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 4, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"4308\"]]"); - p = add_epsg_def (filter, first, last, 4309, "epsg", 4309, - "Yacare"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-155,171,37,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Yacare\",DATUM[\"Yacare\",SPHEROID[\"Internatio"); - add_srs_wkt (p, 1, - "nal 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOW"); - add_srs_wkt (p, 2, - "GS84[-155,171,37,0,0,0,0],AUTHORITY[\"EPSG\",\"6309\"]],"); - add_srs_wkt (p, 3, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 4, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 5, - "2\"]],AUTHORITY[\"EPSG\",\"4309\"]]"); - p = add_epsg_def (filter, first, last, 4310, "epsg", 4310, - "Yoff"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Yoff\",DATUM[\"Yoff\",SPHEROID[\"Clarke 1880 (I"); - add_srs_wkt (p, 1, - "GN)\",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 2, - "011\"]],AUTHORITY[\"EPSG\",\"6310\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 3, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 4, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"4310\"]]"); - p = add_epsg_def (filter, first, last, 4311, "epsg", 4311, - "Zanderij"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-265,120,-358,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Zanderij\",DATUM[\"Zanderij\",SPHEROID[\"Intern"); - add_srs_wkt (p, 1, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 2, - ",TOWGS84[-265,120,-358,0,0,0,0],AUTHORITY[\"EPSG\",\"631"); - add_srs_wkt (p, 3, - "1\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4311\"]]"); - p = add_epsg_def (filter, first, last, 4312, "epsg", 4312, - "MGI"); - add_proj4text (p, 0, - "+proj=longlat +datum=hermannskogel +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"MGI\",DATUM[\"Militar_Geographische_Institute\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7004\"]],TOWGS84[577.326,90.129,463.919,5"); - add_srs_wkt (p, 3, - ".137,1.474,5.297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4312\"]]"); - p = add_epsg_def (filter, first, last, 4313, "epsg", 4313, - "Belge 1972"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-106.869,52.2978,-103"); - add_proj4text (p, 1, - ".724,0.3366,-0.457,1.8422,-1.2747 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Belge 1972\",DATUM[\"Reseau_National_Belge_1972"); - add_srs_wkt (p, 1, - "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); - add_srs_wkt (p, 2, - "[\"EPSG\",\"7022\"]],TOWGS84[-106.869,52.2978,-103.724,0"); - add_srs_wkt (p, 3, - ".3366,-0.457,1.8422,-1.2747],AUTHORITY[\"EPSG\",\"6313\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4313\"]]"); - p = add_epsg_def (filter, first, last, 4314, "epsg", 4314, - "DHDN"); - add_proj4text (p, 0, - "+proj=longlat +datum=potsdam +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY"); - add_srs_wkt (p, 2, - "[\"EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.04"); - add_srs_wkt (p, 3, - "5,-2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 4, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4314\"]]"); - p = add_epsg_def (filter, first, last, 4315, "epsg", 4315, - "Conakry 1905"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-23,259,-"); - add_proj4text (p, 1, - "9,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Conakry 1905\",DATUM[\"Conakry_1905\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Clarke 1880 (IGN)\",6378249.2,293.4660212936269,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7011\"]],TOWGS84[-23,259,-9,0,0,0,0],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"6315\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"431"); - add_srs_wkt (p, 6, - "5\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_21.c b/src/spatialite/src/srsinit/epsg_inlined_21.c deleted file mode 100644 index e822aaf..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_21.c +++ /dev/null @@ -1,3186 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_21 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 4316, "epsg", 4316, - "Dealul Piscului 1930"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=103.25,-100.4,-307.19"); - add_proj4text (p, 1, - ",0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Dealul Piscului 1930\",DATUM[\"Dealul_Piscului_"); - add_srs_wkt (p, 1, - "1930\",SPHEROID[\"International 1924\",6378388,297,AUTHO"); - add_srs_wkt (p, 2, - "RITY[\"EPSG\",\"7022\"]],TOWGS84[103.25,-100.4,-307.19,0"); - add_srs_wkt (p, 3, - ",0,0,0],AUTHORITY[\"EPSG\",\"6316\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4316\"]]"); - p = add_epsg_def (filter, first, last, 4317, "epsg", 4317, - "Dealul Piscului 1970"); - add_proj4text (p, 0, - "+proj=longlat +ellps=krass +towgs84=28,-121,-77,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Dealul Piscului 1970\",DATUM[\"Dealul_Piscului_"); - add_srs_wkt (p, 1, - "1970\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7024\"]],TOWGS84[28,-121,-77,0,0,0,0],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"6317\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 5, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"43"); - add_srs_wkt (p, 6, - "17\"]]"); - p = add_epsg_def (filter, first, last, 4318, "epsg", 4318, - "NGN"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NGN\",DATUM[\"National_Geodetic_Network\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 2, - "\"7030\"]],TOWGS84[-3.2,-5.7,2.8,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"6318\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4318\"]]"); - p = add_epsg_def (filter, first, last, 4319, "epsg", 4319, - "KUDAMS"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=-20.8,11.3,2.4,0,0,0"); - add_proj4text (p, 1, - ",0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"KUDAMS\",DATUM[\"Kuwait_Utility\",SPHEROID[\"GR"); - add_srs_wkt (p, 1, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 2, - "\"]],TOWGS84[-20.8,11.3,2.4,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"6319\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 4, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4319\"]]"); - p = add_epsg_def (filter, first, last, 4322, "epsg", 4322, - "WGS 72"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0."); - add_proj4text (p, 1, - "2263 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"WGS 72\",DATUM[\"WGS_1972\",SPHEROID[\"WGS 72\""); - add_srs_wkt (p, 1, - ",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TOWGS84[0,"); - add_srs_wkt (p, 2, - "0,4.5,0,0,0.554,0.2263],AUTHORITY[\"EPSG\",\"6322\"]],PR"); - add_srs_wkt (p, 3, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 4, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 5, - "]],AUTHORITY[\"EPSG\",\"4322\"]]"); - p = add_epsg_def (filter, first, last, 4324, "epsg", 4324, - "WGS 72BE"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0"); - add_proj4text (p, 1, - ".38 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"WGS 72BE\",DATUM[\"WGS_1972_Transit_Broadcast_E"); - add_srs_wkt (p, 1, - "phemeris\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORITY["); - add_srs_wkt (p, 2, - "\"EPSG\",\"7043\"]],TOWGS84[0,0,1.9,0,0,0.814,-0.38],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"6324\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 5, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"43"); - add_srs_wkt (p, 6, - "24\"]]"); - p = add_epsg_def (filter, first, last, 4399, "epsg", 4399, - "NAD27 / BLM 59N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=171 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 59N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",171],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"4399\"]]"); - p = add_epsg_def (filter, first, last, 4400, "epsg", 4400, - "NAD27 / BLM 60N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=177 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 60N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"4400\"]]"); - p = add_epsg_def (filter, first, last, 4401, "epsg", 4401, - "NAD27 / BLM 1N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-177 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 1N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"4401\"]]"); - p = add_epsg_def (filter, first, last, 4402, "epsg", 4402, - "NAD27 / BLM 2N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-171 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 2N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-171],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"4402\"]]"); - p = add_epsg_def (filter, first, last, 4403, "epsg", 4403, - "NAD27 / BLM 3N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-165 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 3N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-165],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"4403\"]]"); - p = add_epsg_def (filter, first, last, 4404, "epsg", 4404, - "NAD27 / BLM 4N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-159 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 4N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-159],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"4404\"]]"); - p = add_epsg_def (filter, first, last, 4405, "epsg", 4405, - "NAD27 / BLM 5N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-153 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 5N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-153],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"4405\"]]"); - p = add_epsg_def (filter, first, last, 4406, "epsg", 4406, - "NAD27 / BLM 6N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-147 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 6N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-147],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"4406\"]]"); - p = add_epsg_def (filter, first, last, 4407, "epsg", 4407, - "NAD27 / BLM 7N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-141 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 7N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-141],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"4407\"]]"); - p = add_epsg_def (filter, first, last, 4408, "epsg", 4408, - "NAD27 / BLM 8N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-135 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 8N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-135],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"4408\"]]"); - p = add_epsg_def (filter, first, last, 4409, "epsg", 4409, - "NAD27 / BLM 9N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-129 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 9N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-129],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"4409\"]]"); - p = add_epsg_def (filter, first, last, 4410, "epsg", 4410, - "NAD27 / BLM 10N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-123 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 10N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-123],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",1640416.67],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"4410\"]]"); - p = add_epsg_def (filter, first, last, 4411, "epsg", 4411, - "NAD27 / BLM 11N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 11N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",1640416.67],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"4411\"]]"); - p = add_epsg_def (filter, first, last, 4412, "epsg", 4412, - "NAD27 / BLM 12N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 12N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",1640416.67],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"4412\"]]"); - p = add_epsg_def (filter, first, last, 4413, "epsg", 4413, - "NAD27 / BLM 13N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-105 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 13N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",1640416.67],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"4413\"]]"); - p = add_epsg_def (filter, first, last, 4414, "epsg", 4414, - "NAD83(HARN) / Guam Map Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=13.5 +lon_0=144.75 +k=1 +x_0=100000 +"); - add_proj4text (p, 1, - "y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Guam Map Grid\",GEOGCS[\"NAD83(HA"); - add_srs_wkt (p, 1, - "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",13.5],PARAMETER[\"central_meridian\",144.75],PARAME"); - add_srs_wkt (p, 9, - "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",1000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",200000],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"4414\"]]"); - p = add_epsg_def (filter, first, last, 4415, "epsg", 4415, - "Katanga 1955 / Katanga Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=-9 +lon_0=26 +"); - add_proj4text (p, 1, - "x_0=500000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-"); - add_proj4text (p, 2, - "9.614,-255.95,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Katanga 1955 / Katanga Lambert\",GEOGCS[\"Katan"); - add_srs_wkt (p, 1, - "ga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4695\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_1\",-6.5],PARAMETER[\"standard_parallel_"); - add_srs_wkt (p, 9, - "2\",-11.5],PARAMETER[\"latitude_of_origin\",-9],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"central_meridian\",26],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 11, - "00000],PARAMETER[\"false_northing\",500000],UNIT[\"metre"); - add_srs_wkt (p, 12, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 13, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4415\"]]"); - p = add_epsg_def (filter, first, last, 4417, "epsg", 4417, - "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",21],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",75"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"4417\"]]"); - p = add_epsg_def (filter, first, last, 4418, "epsg", 4418, - "NAD27 / BLM 18N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-75 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 18N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"4418\"]]"); - p = add_epsg_def (filter, first, last, 4419, "epsg", 4419, - "NAD27 / BLM 19N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-69 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 19N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"4419\"]]"); - p = add_epsg_def (filter, first, last, 4420, "epsg", 4420, - "NAD83 / BLM 60N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=177 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 60N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",177],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 11, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4420\"]]"); - p = add_epsg_def (filter, first, last, 4421, "epsg", 4421, - "NAD83 / BLM 1N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-177 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 1N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-177],PARAMETER[\"scale_factor\",0.9996],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); - add_srs_wkt (p, 11, - "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"4421\"]]"); - p = add_epsg_def (filter, first, last, 4422, "epsg", 4422, - "NAD83 / BLM 2N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-171 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 2N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-171],PARAMETER[\"scale_factor\",0.9996],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); - add_srs_wkt (p, 11, - "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"4422\"]]"); - p = add_epsg_def (filter, first, last, 4423, "epsg", 4423, - "NAD83 / BLM 3N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-165 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 3N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-165],PARAMETER[\"scale_factor\",0.9996],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); - add_srs_wkt (p, 11, - "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"4423\"]]"); - p = add_epsg_def (filter, first, last, 4424, "epsg", 4424, - "NAD83 / BLM 4N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-159 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 4N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-159],PARAMETER[\"scale_factor\",0.9996],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); - add_srs_wkt (p, 11, - "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"4424\"]]"); - p = add_epsg_def (filter, first, last, 4425, "epsg", 4425, - "NAD83 / BLM 5N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-153 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 5N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-153],PARAMETER[\"scale_factor\",0.9996],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); - add_srs_wkt (p, 11, - "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"4425\"]]"); - p = add_epsg_def (filter, first, last, 4426, "epsg", 4426, - "NAD83 / BLM 6N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-147 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 6N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-147],PARAMETER[\"scale_factor\",0.9996],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); - add_srs_wkt (p, 11, - "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"4426\"]]"); - p = add_epsg_def (filter, first, last, 4427, "epsg", 4427, - "NAD83 / BLM 7N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-141 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 7N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-141],PARAMETER[\"scale_factor\",0.9996],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); - add_srs_wkt (p, 11, - "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"4427\"]]"); - p = add_epsg_def (filter, first, last, 4428, "epsg", 4428, - "NAD83 / BLM 8N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-135 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 8N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-135],PARAMETER[\"scale_factor\",0.9996],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); - add_srs_wkt (p, 11, - "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"4428\"]]"); - p = add_epsg_def (filter, first, last, 4429, "epsg", 4429, - "NAD83 / BLM 9N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-129 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 9N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-129],PARAMETER[\"scale_factor\",0.9996],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); - add_srs_wkt (p, 11, - "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"4429\"]]"); - p = add_epsg_def (filter, first, last, 4430, "epsg", 4430, - "NAD83 / BLM 10N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-123 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 10N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",-123],PARAMETER[\"scale_factor\",0.9996"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); - add_srs_wkt (p, 11, - "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4430\"]]"); - p = add_epsg_def (filter, first, last, 4431, "epsg", 4431, - "NAD83 / BLM 11N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 11N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",-117],PARAMETER[\"scale_factor\",0.9996"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); - add_srs_wkt (p, 11, - "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4431\"]]"); - p = add_epsg_def (filter, first, last, 4432, "epsg", 4432, - "NAD83 / BLM 12N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 12N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",-111],PARAMETER[\"scale_factor\",0.9996"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); - add_srs_wkt (p, 11, - "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4432\"]]"); - p = add_epsg_def (filter, first, last, 4433, "epsg", 4433, - "NAD83 / BLM 13N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-105 +k=0.9996 +x_0=500000.0"); - add_proj4text (p, 1, - "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 13N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",-105],PARAMETER[\"scale_factor\",0.9996"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); - add_srs_wkt (p, 11, - "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4433\"]]"); - p = add_epsg_def (filter, first, last, 4434, "epsg", 4434, - "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",24],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",85"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"4434\"]]"); - p = add_epsg_def (filter, first, last, 4437, "epsg", 4437, - "NAD83(NSRS2007) / Puerto Rico and Virgin Is."); - add_proj4text (p, 0, - "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +"); - add_proj4text (p, 2, - "x_0=200000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 3, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Puerto Rico and Virgin Is.\","); - add_srs_wkt (p, 1, - "GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatia"); - add_srs_wkt (p, 2, - "l_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,"); - add_srs_wkt (p, 3, - "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 5, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Coni"); - add_srs_wkt (p, 8, - "c_2SP\"],PARAMETER[\"standard_parallel_1\",18.4333333333"); - add_srs_wkt (p, 9, - "3333],PARAMETER[\"standard_parallel_2\",18.0333333333333"); - add_srs_wkt (p, 10, - "3],PARAMETER[\"latitude_of_origin\",17.83333333333333],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"central_meridian\",-66.43333333333334],PARAME"); - add_srs_wkt (p, 12, - "TER[\"false_easting\",200000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 13, - "\",200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 14, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 15, - "\"4437\"]]"); - p = add_epsg_def (filter, first, last, 4438, "epsg", 4438, - "NAD83 / BLM 18N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-75 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 18N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",-75],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 11, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4438\"]]"); - p = add_epsg_def (filter, first, last, 4439, "epsg", 4439, - "NAD83 / BLM 19N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-69 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 19N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",-69],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 11, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4439\"]]"); - p = add_epsg_def (filter, first, last, 4455, "epsg", 4455, - "NAD27 / Pennsylvania South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2"); - add_proj4text (p, 2, - "192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Pennsylvania South\",GEOGCS[\"NAD27\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); - add_srs_wkt (p, 2, - "6\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",40.96666666666667]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",39.93333333333333],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"latitude_of_origin\",39.33333333333334],PARAME"); - add_srs_wkt (p, 10, - "TER[\"central_meridian\",-77.75],PARAMETER[\"false_easti"); - add_srs_wkt (p, 11, - "ng\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US "); - add_srs_wkt (p, 12, - "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 13, - "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 14, - "SG\",\"4455\"]]"); - p = add_epsg_def (filter, first, last, 4456, "epsg", 4456, - "NAD27 / New York Long Island"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=40.5 +lon_0=-74 +x_0=609601.2192024384 +y_0=3"); - add_proj4text (p, 2, - "0480.06096012192 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / New York Long Island\",GEOGCS[\"NAD27\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1"); - add_srs_wkt (p, 2, - "866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 7, - "SP\"],PARAMETER[\"standard_parallel_1\",41.0333333333333"); - add_srs_wkt (p, 8, - "3],PARAMETER[\"standard_parallel_2\",40.66666666666666],"); - add_srs_wkt (p, 9, - "PARAMETER[\"latitude_of_origin\",40.5],PARAMETER[\"centr"); - add_srs_wkt (p, 10, - "al_meridian\",-74],PARAMETER[\"false_easting\",2000000],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_northing\",100000],UNIT[\"US survey fo"); - add_srs_wkt (p, 12, - "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); - add_srs_wkt (p, 13, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"44"); - add_srs_wkt (p, 14, - "56\"]]"); - p = add_epsg_def (filter, first, last, 4457, "epsg", 4457, - "NAD83 / South Dakota North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666"); - add_proj4text (p, 1, - "666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_"); - add_proj4text (p, 2, - "0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / South Dakota North (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",45.68333333333333],PARAMETER[\"standard_parallel_2\",44"); - add_srs_wkt (p, 9, - ".41666666666666],PARAMETER[\"latitude_of_origin\",43.833"); - add_srs_wkt (p, 10, - "33333333334],PARAMETER[\"central_meridian\",-100],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_easting\",1968500],PARAMETER[\"false_northin"); - add_srs_wkt (p, 12, - "g\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHOR"); - add_srs_wkt (p, 13, - "ITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 14, - "H],AUTHORITY[\"EPSG\",\"4457\"]]"); - p = add_epsg_def (filter, first, last, 4462, "epsg", 4462, - "WGS 84 / Australian Centre for Remote Sensing Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=-27 +lon_0=132 +x"); - add_proj4text (p, 1, - "_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / Australian Centre for Remote Sensing L"); - add_srs_wkt (p, 1, - "ambert\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4326\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"standard_parallel_1\",-18],PARAMETER[\"sta"); - add_srs_wkt (p, 8, - "ndard_parallel_2\",-36],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 9, - ",-27],PARAMETER[\"central_meridian\",132],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"446"); - add_srs_wkt (p, 13, - "2\"]]"); - p = add_epsg_def (filter, first, last, 4463, "epsg", 4463, - "RGSPM06"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RGSPM06\",DATUM[\"Reseau_Geodesique_de_Saint_Pi"); - add_srs_wkt (p, 1, - "erre_et_Miquelon_2006\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 2, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 3, - "0,0,0,0],AUTHORITY[\"EPSG\",\"1038\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4463\"]]"); - p = add_epsg_def (filter, first, last, 4467, "epsg", 4467, - "RGSPM06 / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGSPM06 / UTM zone 21N\",GEOGCS[\"RGSPM06\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Reseau_Geodesique_de_Saint_Pierre_et_Miquelon_2006\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"1038\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4463\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",-57],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"4467\"]]"); - p = add_epsg_def (filter, first, last, 4470, "epsg", 4470, - "RGM04"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RGM04\",DATUM[\"Reseau_Geodesique_de_Mayotte_20"); - add_srs_wkt (p, 1, - "04\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"1036\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4470\"]]"); - p = add_epsg_def (filter, first, last, 4471, "epsg", 4471, - "RGM04 / UTM zone 38S"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGM04 / UTM zone 38S\",GEOGCS[\"RGM04\",DATUM[\""); - add_srs_wkt (p, 1, - "Reseau_Geodesique_de_Mayotte_2004\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1036\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4470\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",45],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 9, - "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"4471\"]]"); - p = add_epsg_def (filter, first, last, 4474, "epsg", 4474, - "Cadastre 1997 / UTM zone 38S"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,"); - add_proj4text (p, 1, - "-262,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Cadastre 1997 / UTM zone 38S\",GEOGCS[\"Combani"); - add_srs_wkt (p, 1, - " 1950\",DATUM[\"Combani_1950\",SPHEROID[\"International "); - add_srs_wkt (p, 2, - "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-382,-59,-262,0,0,0,0],AUTHORITY[\"EPSG\",\"6632\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4632\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",45],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"4474\"]]"); - p = add_epsg_def (filter, first, last, 4475, "epsg", 4475, - "Cadastre 1997"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-381.788,-57.501,-256"); - add_proj4text (p, 1, - ".673,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Cadastre 1997\",DATUM[\"Cadastre_1997\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 2, - "\"7022\"]],TOWGS84[-381.788,-57.501,-256.673,0,0,0,0],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1037\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "475\"]]"); - p = add_epsg_def (filter, first, last, 4483, "epsg", 4483, - "Mexican Datum of 1993"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Mexican Datum of 1993\",DATUM[\"Mexican_Datum_o"); - add_srs_wkt (p, 1, - "f_1993\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"1042\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4483\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 4484, "epsg", 4484, - "Mexican Datum of 1993 / UTM zone 11N"); - add_proj4text (p, 0, - "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mexican Datum of 1993 / UTM zone 11N\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Mexican Datum of 1993\",DATUM[\"Mexican_Datum_of_1993\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"1042\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4483\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",-117],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"4484\"]]"); - p = add_epsg_def (filter, first, last, 4485, "epsg", 4485, - "Mexican Datum of 1993 / UTM zone 12N"); - add_proj4text (p, 0, - "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mexican Datum of 1993 / UTM zone 12N\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Mexican Datum of 1993\",DATUM[\"Mexican_Datum_of_1993\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"1042\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4483\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",-111],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"4485\"]]"); - p = add_epsg_def (filter, first, last, 4486, "epsg", 4486, - "Mexican Datum of 1993 / UTM zone 13N"); - add_proj4text (p, 0, - "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mexican Datum of 1993 / UTM zone 13N\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Mexican Datum of 1993\",DATUM[\"Mexican_Datum_of_1993\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"1042\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4483\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",-105],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"4486\"]]"); - p = add_epsg_def (filter, first, last, 4487, "epsg", 4487, - "Mexican Datum of 1993 / UTM zone 14N"); - add_proj4text (p, 0, - "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mexican Datum of 1993 / UTM zone 14N\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Mexican Datum of 1993\",DATUM[\"Mexican_Datum_of_1993\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"1042\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4483\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",-99],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"4487\"]]"); - p = add_epsg_def (filter, first, last, 4488, "epsg", 4488, - "Mexican Datum of 1993 / UTM zone 15N"); - add_proj4text (p, 0, - "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mexican Datum of 1993 / UTM zone 15N\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Mexican Datum of 1993\",DATUM[\"Mexican_Datum_of_1993\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"1042\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4483\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",-93],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"4488\"]]"); - p = add_epsg_def (filter, first, last, 4489, "epsg", 4489, - "Mexican Datum of 1993 / UTM zone 16N"); - add_proj4text (p, 0, - "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mexican Datum of 1993 / UTM zone 16N\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Mexican Datum of 1993\",DATUM[\"Mexican_Datum_of_1993\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"1042\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4483\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",-87],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"4489\"]]"); - p = add_epsg_def (filter, first, last, 4490, "epsg", 4490, - "China Geodetic Coordinate System 2000"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"China Geodetic Coordinate System 2000\",DATUM[\""); - add_srs_wkt (p, 1, - "China_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043"); - add_srs_wkt (p, 3, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 4, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4490\"]]"); - p = add_epsg_def (filter, first, last, 4491, "epsg", 4491, - "CGCS2000 / Gauss-Kruger zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger zone 13\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",75],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",13500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "4491\"]]"); - p = add_epsg_def (filter, first, last, 4492, "epsg", 4492, - "CGCS2000 / Gauss-Kruger zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger zone 14\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",81],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",14500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "4492\"]]"); - p = add_epsg_def (filter, first, last, 4493, "epsg", 4493, - "CGCS2000 / Gauss-Kruger zone 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger zone 15\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",87],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",15500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "4493\"]]"); - p = add_epsg_def (filter, first, last, 4494, "epsg", 4494, - "CGCS2000 / Gauss-Kruger zone 16"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger zone 16\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",93],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",16500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "4494\"]]"); - p = add_epsg_def (filter, first, last, 4495, "epsg", 4495, - "CGCS2000 / Gauss-Kruger zone 17"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger zone 17\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",99],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",17500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "4495\"]]"); - p = add_epsg_def (filter, first, last, 4496, "epsg", 4496, - "CGCS2000 / Gauss-Kruger zone 18"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger zone 18\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",105],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",18500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"4496\"]]"); - p = add_epsg_def (filter, first, last, 4497, "epsg", 4497, - "CGCS2000 / Gauss-Kruger zone 19"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger zone 19\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",111],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",19500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"4497\"]]"); - p = add_epsg_def (filter, first, last, 4498, "epsg", 4498, - "CGCS2000 / Gauss-Kruger zone 20"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger zone 20\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",117],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",20500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"4498\"]]"); - p = add_epsg_def (filter, first, last, 4499, "epsg", 4499, - "CGCS2000 / Gauss-Kruger zone 21"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger zone 21\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",123],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",21500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"4499\"]]"); - p = add_epsg_def (filter, first, last, 4500, "epsg", 4500, - "CGCS2000 / Gauss-Kruger zone 22"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger zone 22\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",129],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",22500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"4500\"]]"); - p = add_epsg_def (filter, first, last, 4501, "epsg", 4501, - "CGCS2000 / Gauss-Kruger zone 23"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger zone 23\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",135],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",23500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"4501\"]]"); - p = add_epsg_def (filter, first, last, 4502, "epsg", 4502, - "CGCS2000 / Gauss-Kruger CM 75E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger CM 75E\",GEOGCS[\"China"); - add_srs_wkt (p, 1, - " Geodetic Coordinate System 2000\",DATUM[\"China_2000\","); - add_srs_wkt (p, 2, - "SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",75],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 12, - "502\"]]"); - p = add_epsg_def (filter, first, last, 4503, "epsg", 4503, - "CGCS2000 / Gauss-Kruger CM 81E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger CM 81E\",GEOGCS[\"China"); - add_srs_wkt (p, 1, - " Geodetic Coordinate System 2000\",DATUM[\"China_2000\","); - add_srs_wkt (p, 2, - "SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",81],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 12, - "503\"]]"); - p = add_epsg_def (filter, first, last, 4504, "epsg", 4504, - "CGCS2000 / Gauss-Kruger CM 87E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger CM 87E\",GEOGCS[\"China"); - add_srs_wkt (p, 1, - " Geodetic Coordinate System 2000\",DATUM[\"China_2000\","); - add_srs_wkt (p, 2, - "SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",87],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 12, - "504\"]]"); - p = add_epsg_def (filter, first, last, 4505, "epsg", 4505, - "CGCS2000 / Gauss-Kruger CM 93E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger CM 93E\",GEOGCS[\"China"); - add_srs_wkt (p, 1, - " Geodetic Coordinate System 2000\",DATUM[\"China_2000\","); - add_srs_wkt (p, 2, - "SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",93],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 12, - "505\"]]"); - p = add_epsg_def (filter, first, last, 4506, "epsg", 4506, - "CGCS2000 / Gauss-Kruger CM 99E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger CM 99E\",GEOGCS[\"China"); - add_srs_wkt (p, 1, - " Geodetic Coordinate System 2000\",DATUM[\"China_2000\","); - add_srs_wkt (p, 2, - "SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",99],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 12, - "506\"]]"); - p = add_epsg_def (filter, first, last, 4507, "epsg", 4507, - "CGCS2000 / Gauss-Kruger CM 105E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger CM 105E\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",105],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "4507\"]]"); - p = add_epsg_def (filter, first, last, 4508, "epsg", 4508, - "CGCS2000 / Gauss-Kruger CM 111E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger CM 111E\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",111],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "4508\"]]"); - p = add_epsg_def (filter, first, last, 4509, "epsg", 4509, - "CGCS2000 / Gauss-Kruger CM 117E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger CM 117E\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",117],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "4509\"]]"); - p = add_epsg_def (filter, first, last, 4510, "epsg", 4510, - "CGCS2000 / Gauss-Kruger CM 123E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger CM 123E\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",123],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "4510\"]]"); - p = add_epsg_def (filter, first, last, 4511, "epsg", 4511, - "CGCS2000 / Gauss-Kruger CM 129E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger CM 129E\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",129],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "4511\"]]"); - p = add_epsg_def (filter, first, last, 4512, "epsg", 4512, - "CGCS2000 / Gauss-Kruger CM 135E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / Gauss-Kruger CM 135E\",GEOGCS[\"Chin"); - add_srs_wkt (p, 1, - "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",135],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "4512\"]]"); - p = add_epsg_def (filter, first, last, 4513, "epsg", 4513, - "CGCS2000 / 3-degree Gauss-Kruger zone 25"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 25\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",75],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",25500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4513\"]]"); - p = add_epsg_def (filter, first, last, 4514, "epsg", 4514, - "CGCS2000 / 3-degree Gauss-Kruger zone 26"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 26\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",78],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",26500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4514\"]]"); - p = add_epsg_def (filter, first, last, 4515, "epsg", 4515, - "CGCS2000 / 3-degree Gauss-Kruger zone 27"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 27\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",81],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",27500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4515\"]]"); - p = add_epsg_def (filter, first, last, 4516, "epsg", 4516, - "CGCS2000 / 3-degree Gauss-Kruger zone 28"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 28\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",84],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",28500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4516\"]]"); - p = add_epsg_def (filter, first, last, 4517, "epsg", 4517, - "CGCS2000 / 3-degree Gauss-Kruger zone 29"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 29\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",87],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",29500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4517\"]]"); - p = add_epsg_def (filter, first, last, 4518, "epsg", 4518, - "CGCS2000 / 3-degree Gauss-Kruger zone 30"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 30\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",90],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",30500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4518\"]]"); - p = add_epsg_def (filter, first, last, 4519, "epsg", 4519, - "CGCS2000 / 3-degree Gauss-Kruger zone 31"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 31\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",93],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",31500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4519\"]]"); - p = add_epsg_def (filter, first, last, 4520, "epsg", 4520, - "CGCS2000 / 3-degree Gauss-Kruger zone 32"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 32\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",96],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",32500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4520\"]]"); - p = add_epsg_def (filter, first, last, 4521, "epsg", 4521, - "CGCS2000 / 3-degree Gauss-Kruger zone 33"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 33\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",99],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",33500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4521\"]]"); - p = add_epsg_def (filter, first, last, 4522, "epsg", 4522, - "CGCS2000 / 3-degree Gauss-Kruger zone 34"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 34\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",102],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",34500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"4522\"]]"); - p = add_epsg_def (filter, first, last, 4523, "epsg", 4523, - "CGCS2000 / 3-degree Gauss-Kruger zone 35"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 35\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",105],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",35500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"4523\"]]"); - p = add_epsg_def (filter, first, last, 4524, "epsg", 4524, - "CGCS2000 / 3-degree Gauss-Kruger zone 36"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 36\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",108],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",36500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"4524\"]]"); - p = add_epsg_def (filter, first, last, 4525, "epsg", 4525, - "CGCS2000 / 3-degree Gauss-Kruger zone 37"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 37\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",111],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",37500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"4525\"]]"); - p = add_epsg_def (filter, first, last, 4526, "epsg", 4526, - "CGCS2000 / 3-degree Gauss-Kruger zone 38"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 38\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",114],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",38500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"4526\"]]"); - p = add_epsg_def (filter, first, last, 4527, "epsg", 4527, - "CGCS2000 / 3-degree Gauss-Kruger zone 39"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 39\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",117],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",39500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"4527\"]]"); - p = add_epsg_def (filter, first, last, 4528, "epsg", 4528, - "CGCS2000 / 3-degree Gauss-Kruger zone 40"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 40\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",120],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",40500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"4528\"]]"); - p = add_epsg_def (filter, first, last, 4529, "epsg", 4529, - "CGCS2000 / 3-degree Gauss-Kruger zone 41"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 41\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",123],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",41500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"4529\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_22.c b/src/spatialite/src/srsinit/epsg_inlined_22.c deleted file mode 100644 index a133b1c..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_22.c +++ /dev/null @@ -1,2576 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_22 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 4530, "epsg", 4530, - "CGCS2000 / 3-degree Gauss-Kruger zone 42"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 42\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",126],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",42500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"4530\"]]"); - p = add_epsg_def (filter, first, last, 4531, "epsg", 4531, - "CGCS2000 / 3-degree Gauss-Kruger zone 43"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 43\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",129],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",43500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"4531\"]]"); - p = add_epsg_def (filter, first, last, 4532, "epsg", 4532, - "CGCS2000 / 3-degree Gauss-Kruger zone 44"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 44\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",132],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",44500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"4532\"]]"); - p = add_epsg_def (filter, first, last, 4533, "epsg", 4533, - "CGCS2000 / 3-degree Gauss-Kruger zone 45"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 45\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",135],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",45500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"4533\"]]"); - p = add_epsg_def (filter, first, last, 4534, "epsg", 4534, - "CGCS2000 / 3-degree Gauss-Kruger CM 75E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 75E\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); - add_srs_wkt (p, 2, - "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); - add_srs_wkt (p, 4, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 5, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); - add_srs_wkt (p, 7, - "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",75],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"4534\"]]"); - p = add_epsg_def (filter, first, last, 4535, "epsg", 4535, - "CGCS2000 / 3-degree Gauss-Kruger CM 78E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 78E\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); - add_srs_wkt (p, 2, - "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); - add_srs_wkt (p, 4, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 5, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); - add_srs_wkt (p, 7, - "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",78],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"4535\"]]"); - p = add_epsg_def (filter, first, last, 4536, "epsg", 4536, - "CGCS2000 / 3-degree Gauss-Kruger CM 81E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 81E\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); - add_srs_wkt (p, 2, - "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); - add_srs_wkt (p, 4, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 5, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); - add_srs_wkt (p, 7, - "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",81],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"4536\"]]"); - p = add_epsg_def (filter, first, last, 4537, "epsg", 4537, - "CGCS2000 / 3-degree Gauss-Kruger CM 84E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 84E\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); - add_srs_wkt (p, 2, - "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); - add_srs_wkt (p, 4, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 5, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); - add_srs_wkt (p, 7, - "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",84],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"4537\"]]"); - p = add_epsg_def (filter, first, last, 4538, "epsg", 4538, - "CGCS2000 / 3-degree Gauss-Kruger CM 87E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 87E\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); - add_srs_wkt (p, 2, - "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); - add_srs_wkt (p, 4, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 5, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); - add_srs_wkt (p, 7, - "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",87],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"4538\"]]"); - p = add_epsg_def (filter, first, last, 4539, "epsg", 4539, - "CGCS2000 / 3-degree Gauss-Kruger CM 90E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 90E\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); - add_srs_wkt (p, 2, - "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); - add_srs_wkt (p, 4, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 5, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); - add_srs_wkt (p, 7, - "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",90],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"4539\"]]"); - p = add_epsg_def (filter, first, last, 4540, "epsg", 4540, - "CGCS2000 / 3-degree Gauss-Kruger CM 93E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 93E\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); - add_srs_wkt (p, 2, - "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); - add_srs_wkt (p, 4, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 5, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); - add_srs_wkt (p, 7, - "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",93],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"4540\"]]"); - p = add_epsg_def (filter, first, last, 4541, "epsg", 4541, - "CGCS2000 / 3-degree Gauss-Kruger CM 96E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 96E\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); - add_srs_wkt (p, 2, - "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); - add_srs_wkt (p, 4, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 5, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); - add_srs_wkt (p, 7, - "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",96],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"4541\"]]"); - p = add_epsg_def (filter, first, last, 4542, "epsg", 4542, - "CGCS2000 / 3-degree Gauss-Kruger CM 99E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 99E\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); - add_srs_wkt (p, 2, - "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); - add_srs_wkt (p, 4, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 5, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); - add_srs_wkt (p, 7, - "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",99],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"4542\"]]"); - p = add_epsg_def (filter, first, last, 4543, "epsg", 4543, - "CGCS2000 / 3-degree Gauss-Kruger CM 102E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 102E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",102],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4543\"]]"); - p = add_epsg_def (filter, first, last, 4544, "epsg", 4544, - "CGCS2000 / 3-degree Gauss-Kruger CM 105E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 105E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",105],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4544\"]]"); - p = add_epsg_def (filter, first, last, 4545, "epsg", 4545, - "CGCS2000 / 3-degree Gauss-Kruger CM 108E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 108E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",108],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4545\"]]"); - p = add_epsg_def (filter, first, last, 4546, "epsg", 4546, - "CGCS2000 / 3-degree Gauss-Kruger CM 111E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 111E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",111],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4546\"]]"); - p = add_epsg_def (filter, first, last, 4547, "epsg", 4547, - "CGCS2000 / 3-degree Gauss-Kruger CM 114E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 114E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",114],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4547\"]]"); - p = add_epsg_def (filter, first, last, 4548, "epsg", 4548, - "CGCS2000 / 3-degree Gauss-Kruger CM 117E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 117E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",117],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4548\"]]"); - p = add_epsg_def (filter, first, last, 4549, "epsg", 4549, - "CGCS2000 / 3-degree Gauss-Kruger CM 120E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 120E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",120],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4549\"]]"); - p = add_epsg_def (filter, first, last, 4550, "epsg", 4550, - "CGCS2000 / 3-degree Gauss-Kruger CM 123E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 123E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",123],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4550\"]]"); - p = add_epsg_def (filter, first, last, 4551, "epsg", 4551, - "CGCS2000 / 3-degree Gauss-Kruger CM 126E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 126E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",126],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4551\"]]"); - p = add_epsg_def (filter, first, last, 4552, "epsg", 4552, - "CGCS2000 / 3-degree Gauss-Kruger CM 129E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 129E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",129],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4552\"]]"); - p = add_epsg_def (filter, first, last, 4553, "epsg", 4553, - "CGCS2000 / 3-degree Gauss-Kruger CM 132E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 132E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",132],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4553\"]]"); - p = add_epsg_def (filter, first, last, 4554, "epsg", 4554, - "CGCS2000 / 3-degree Gauss-Kruger CM 135E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 135E\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); - add_srs_wkt (p, 2, - "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",135],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"4554\"]]"); - p = add_epsg_def (filter, first, last, 4555, "epsg", 4555, - "New Beijing"); - add_proj4text (p, 0, - "+proj=longlat +ellps=krass +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 2, - "4\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 3, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 4, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 5, - "SG\",\"4555\"]]"); - p = add_epsg_def (filter, first, last, 4558, "epsg", 4558, - "RRAF 1991"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RRAF 1991\",DATUM[\"Reseau_de_Reference_des_Ant"); - add_srs_wkt (p, 1, - "illes_Francaises_1991\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 2, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 3, - "0,0,0,0],AUTHORITY[\"EPSG\",\"1047\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4558\"]]"); - p = add_epsg_def (filter, first, last, 4559, "epsg", 4559, - "RRAF 1991 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RRAF 1991 / UTM zone 20N\",GEOGCS[\"RRAF 1991\""); - add_srs_wkt (p, 1, - ",DATUM[\"Reseau_de_Reference_des_Antilles_Francaises_199"); - add_srs_wkt (p, 2, - "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"1047\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4558\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",-63],PARAME"); - add_srs_wkt (p, 9, - "TER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); - add_srs_wkt (p, 12, - "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"4559\"]]"); - p = add_epsg_def (filter, first, last, 4568, "epsg", 4568, - "New Beijing / Gauss-Kruger zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger zone 13\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",75]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",13500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 10, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 11, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4568\"]]"); - p = add_epsg_def (filter, first, last, 4569, "epsg", 4569, - "New Beijing / Gauss-Kruger zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger zone 14\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",81]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",14500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 10, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 11, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4569\"]]"); - p = add_epsg_def (filter, first, last, 4570, "epsg", 4570, - "New Beijing / Gauss-Kruger zone 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger zone 15\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",87]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",15500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 10, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 11, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4570\"]]"); - p = add_epsg_def (filter, first, last, 4571, "epsg", 4571, - "New Beijing / Gauss-Kruger zone 16"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger zone 16\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",93]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",16500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 10, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 11, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4571\"]]"); - p = add_epsg_def (filter, first, last, 4572, "epsg", 4572, - "New Beijing / Gauss-Kruger zone 17"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger zone 17\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",99]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 9, - "\",17500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 10, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 11, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4572\"]]"); - p = add_epsg_def (filter, first, last, 4573, "epsg", 4573, - "New Beijing / Gauss-Kruger zone 18"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger zone 18\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",105"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 9, - "g\",18500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 10, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 11, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4573\"]]"); - p = add_epsg_def (filter, first, last, 4574, "epsg", 4574, - "New Beijing / Gauss-Kruger zone 19"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger zone 19\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",111"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 9, - "g\",19500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 10, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 11, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4574\"]]"); - p = add_epsg_def (filter, first, last, 4575, "epsg", 4575, - "New Beijing / Gauss-Kruger zone 20"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger zone 20\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",117"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 9, - "g\",20500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 10, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 11, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4575\"]]"); - p = add_epsg_def (filter, first, last, 4576, "epsg", 4576, - "New Beijing / Gauss-Kruger zone 21"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger zone 21\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",123"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 9, - "g\",21500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 10, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 11, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4576\"]]"); - p = add_epsg_def (filter, first, last, 4577, "epsg", 4577, - "New Beijing / Gauss-Kruger zone 22"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger zone 22\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",129"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 9, - "g\",22500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 10, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 11, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4577\"]]"); - p = add_epsg_def (filter, first, last, 4578, "epsg", 4578, - "New Beijing / Gauss-Kruger zone 23"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger zone 23\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",135"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 9, - "g\",23500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 10, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 11, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4578\"]]"); - p = add_epsg_def (filter, first, last, 4579, "epsg", 4579, - "New Beijing / Gauss-Kruger CM 75E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger CM 75E\",GEOGCS[\"Ne"); - add_srs_wkt (p, 1, - "w Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky "); - add_srs_wkt (p, 2, - "1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4555"); - add_srs_wkt (p, 6, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 7, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",75],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"4579\"]]"); - p = add_epsg_def (filter, first, last, 4580, "epsg", 4580, - "New Beijing / Gauss-Kruger CM 81E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger CM 81E\",GEOGCS[\"Ne"); - add_srs_wkt (p, 1, - "w Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky "); - add_srs_wkt (p, 2, - "1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4555"); - add_srs_wkt (p, 6, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 7, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",81],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"4580\"]]"); - p = add_epsg_def (filter, first, last, 4581, "epsg", 4581, - "New Beijing / Gauss-Kruger CM 87E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger CM 87E\",GEOGCS[\"Ne"); - add_srs_wkt (p, 1, - "w Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky "); - add_srs_wkt (p, 2, - "1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4555"); - add_srs_wkt (p, 6, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 7, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",87],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"4581\"]]"); - p = add_epsg_def (filter, first, last, 4582, "epsg", 4582, - "New Beijing / Gauss-Kruger CM 93E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger CM 93E\",GEOGCS[\"Ne"); - add_srs_wkt (p, 1, - "w Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky "); - add_srs_wkt (p, 2, - "1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4555"); - add_srs_wkt (p, 6, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 7, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",93],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"4582\"]]"); - p = add_epsg_def (filter, first, last, 4583, "epsg", 4583, - "New Beijing / Gauss-Kruger CM 99E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger CM 99E\",GEOGCS[\"Ne"); - add_srs_wkt (p, 1, - "w Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky "); - add_srs_wkt (p, 2, - "1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4555"); - add_srs_wkt (p, 6, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 7, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",99],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 10, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Y\",EAST],AUTHORITY[\"EPSG\",\"4583\"]]"); - p = add_epsg_def (filter, first, last, 4584, "epsg", 4584, - "New Beijing / Gauss-Kruger CM 105E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger CM 105E\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",105"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 9, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 10, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 11, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4584\"]]"); - p = add_epsg_def (filter, first, last, 4585, "epsg", 4585, - "New Beijing / Gauss-Kruger CM 111E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger CM 111E\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",111"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 9, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 10, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 11, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4585\"]]"); - p = add_epsg_def (filter, first, last, 4586, "epsg", 4586, - "New Beijing / Gauss-Kruger CM 117E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger CM 117E\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",117"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 9, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 10, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 11, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4586\"]]"); - p = add_epsg_def (filter, first, last, 4587, "epsg", 4587, - "New Beijing / Gauss-Kruger CM 123E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger CM 123E\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",123"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 9, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 10, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 11, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4587\"]]"); - p = add_epsg_def (filter, first, last, 4588, "epsg", 4588, - "New Beijing / Gauss-Kruger CM 129E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger CM 129E\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",129"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 9, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 10, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 11, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4588\"]]"); - p = add_epsg_def (filter, first, last, 4589, "epsg", 4589, - "New Beijing / Gauss-Kruger CM 135E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / Gauss-Kruger CM 135E\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); - add_srs_wkt (p, 2, - " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); - add_srs_wkt (p, 6, - "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",0],PARAMETER[\"central_meridian\",135"); - add_srs_wkt (p, 8, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 9, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 10, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 11, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4589\"]]"); - p = add_epsg_def (filter, first, last, 4600, "epsg", 4600, - "Anguilla 1957"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Anguilla 1957\",DATUM[\"Anguilla_1957\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7012\"]],AUTHORITY[\"EPSG\",\"6600\"]],PRIMEM[\""); - add_srs_wkt (p, 3, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 4, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"4600\"]]"); - p = add_epsg_def (filter, first, last, 4601, "epsg", 4601, - "Antigua 1943"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-255,-15,71,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Antigua 1943\",DATUM[\"Antigua_1943\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); - add_srs_wkt (p, 2, - "SG\",\"7012\"]],TOWGS84[-255,-15,71,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6601\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4601\"]]"); - p = add_epsg_def (filter, first, last, 4602, "epsg", 4602, - "Dominica 1945"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=725,685,536,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Dominica 1945\",DATUM[\"Dominica_1945\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7012\"]],TOWGS84[725,685,536,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"6602\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4602\"]]"); - p = add_epsg_def (filter, first, last, 4603, "epsg", 4603, - "Grenada 1953"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Grenada 1953\",DATUM[\"Grenada_1953\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); - add_srs_wkt (p, 2, - "SG\",\"7012\"]],TOWGS84[72,213.7,93,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6603\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4603\"]]"); - p = add_epsg_def (filter, first, last, 4604, "epsg", 4604, - "Montserrat 1958"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=174,359,365,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Montserrat 1958\",DATUM[\"Montserrat_1958\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7012\"]],TOWGS84[174,359,365,0,0,0,0],AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"6604\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4604"); - add_srs_wkt (p, 6, - "\"]]"); - p = add_epsg_def (filter, first, last, 4605, "epsg", 4605, - "St. Kitts 1955"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=9,183,236,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"St. Kitts 1955\",DATUM[\"St_Kitts_1955\",SPHERO"); - add_srs_wkt (p, 1, - "ID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7012\"]],TOWGS84[9,183,236,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6605\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4605\"]]"); - p = add_epsg_def (filter, first, last, 4606, "epsg", 4606, - "St. Lucia 1955"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-149,128,296,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"St. Lucia 1955\",DATUM[\"St_Lucia_1955\",SPHERO"); - add_srs_wkt (p, 1, - "ID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7012\"]],TOWGS84[-149,128,296,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"6606\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4606\"]]"); - p = add_epsg_def (filter, first, last, 4607, "epsg", 4607, - "St. Vincent 1945"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=195.671,332.517,274"); - add_proj4text (p, 1, - ".607,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"St. Vincent 1945\",DATUM[\"St_Vincent_1945\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7012\"]],TOWGS84[195.671,332.517,274.607,0"); - add_srs_wkt (p, 3, - ",0,0,0],AUTHORITY[\"EPSG\",\"6607\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4607\"]]"); - p = add_epsg_def (filter, first, last, 4608, "epsg", 4608, - "NAD27(76)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NAD27(76)\",DATUM[\"North_American_Datum_1927_1"); - add_srs_wkt (p, 1, - "976\",SPHEROID[\"Clarke 1866\",6378206.4,294.97869821389"); - add_srs_wkt (p, 2, - "82,AUTHORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"66"); - add_srs_wkt (p, 3, - "08\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4608\"]]"); - p = add_epsg_def (filter, first, last, 4609, "epsg", 4609, - "NAD27(CGQ77)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NAD27(CGQ77)\",DATUM[\"North_American_Datum_192"); - add_srs_wkt (p, 1, - "7_CGQ77\",SPHEROID[\"Clarke 1866\",6378206.4,294.9786982"); - add_srs_wkt (p, 2, - "138982,AUTHORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"6609\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 4, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4609\"]]"); - p = add_epsg_def (filter, first, last, 4610, "epsg", 4610, - "Xian 1980"); - add_proj4text (p, 0, - "+proj=longlat +a=6378140 +b=6356755.288157528 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG "); - add_srs_wkt (p, 1, - "1975\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 4, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); - add_srs_wkt (p, 5, - "10\"]]"); - p = add_epsg_def (filter, first, last, 4611, "epsg", 4611, - "Hong Kong 1980"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-162.619,-276.959,-16"); - add_proj4text (p, 1, - "1.764,0.067753,-2.24365,-1.15883,-1.09425 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Hong Kong 1980\",DATUM[\"Hong_Kong_1980\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7022\"]],TOWGS84[-162.619,-276.959,-161.764,0.067753,"); - add_srs_wkt (p, 3, - "-2.24365,-1.15883,-1.09425],AUTHORITY[\"EPSG\",\"6611\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4611\"]]"); - p = add_epsg_def (filter, first, last, 4612, "epsg", 4612, - "JGD2000"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]]"); - p = add_epsg_def (filter, first, last, 4613, "epsg", 4613, - "Segara"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Segara\",DATUM[\"Gunung_Segara\",SPHEROID[\"Bes"); - add_srs_wkt (p, 1, - "sel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7004\"]],TOWGS84[-403,684,41,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6613\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4613\"]]"); - p = add_epsg_def (filter, first, last, 4614, "epsg", 4614, - "QND95"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-119.425,-303.659,-11"); - add_proj4text (p, 1, - ".0006,1.1643,0.174458,1.09626,3.65706 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"QND95\",DATUM[\"Qatar_National_Datum_1995\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7022\"]],TOWGS84[-119.425,-303.659,-11.0006,1.1643"); - add_srs_wkt (p, 3, - ",0.174458,1.09626,3.65706],AUTHORITY[\"EPSG\",\"6614\"]]"); - add_srs_wkt (p, 4, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 5, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "22\"]],AUTHORITY[\"EPSG\",\"4614\"]]"); - p = add_epsg_def (filter, first, last, 4615, "epsg", 4615, - "Porto Santo"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-499,-249,314,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Porto Santo\",DATUM[\"Porto_Santo_1936\",SPHERO"); - add_srs_wkt (p, 1, - "ID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7022\"]],TOWGS84[-499,-249,314,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6615\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4615\"]]"); - p = add_epsg_def (filter, first, last, 4616, "epsg", 4616, - "Selvagem Grande"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-289,-124,60,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Selvagem Grande\",DATUM[\"Selvagem_Grande\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7022\"]],TOWGS84[-289,-124,60,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6616\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4616\"]]"); - p = add_epsg_def (filter, first, last, 4617, "epsg", 4617, - "NAD83(CSRS)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Re"); - add_srs_wkt (p, 1, - "ference_System\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 2, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4617\"]]"); - p = add_epsg_def (filter, first, last, 4618, "epsg", 4618, - "SAD69"); - add_proj4text (p, 0, - "+proj=longlat +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"SAD69\",DATUM[\"South_American_Datum_1969\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"GRS 1967 Modified\",6378160,298.25,AUTHORITY[\"E"); - add_srs_wkt (p, 2, - "PSG\",\"7050\"]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6618\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4618\"]]"); - p = add_epsg_def (filter, first, last, 4619, "epsg", 4619, - "SWEREF99"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"SWEREF99\",DATUM[\"SWEREF99\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 1, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 2, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6619\"]],PR"); - add_srs_wkt (p, 3, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 4, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 5, - "]],AUTHORITY[\"EPSG\",\"4619\"]]"); - p = add_epsg_def (filter, first, last, 4620, "epsg", 4620, - "Point 58"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-106,-129,165,0,0,0"); - add_proj4text (p, 1, - ",0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Point 58\",DATUM[\"Point_58\",SPHEROID[\"Clarke"); - add_srs_wkt (p, 1, - " 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 2, - "012\"]],TOWGS84[-106,-129,165,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6620\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4620\"]]"); - p = add_epsg_def (filter, first, last, 4621, "epsg", 4621, - "Fort Marigot"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=137,248,-430,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Fort Marigot\",DATUM[\"Fort_Marigot\",SPHEROID["); - add_srs_wkt (p, 1, - "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7022\"]],TOWGS84[137,248,-430,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6621\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4621\"]]"); - p = add_epsg_def (filter, first, last, 4622, "epsg", 4622, - "Guadeloupe 1948"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-467,-16,-300,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Guadeloupe 1948\",DATUM[\"Guadeloupe_1948\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7022\"]],TOWGS84[-467,-16,-300,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"6622\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4622\"]]"); - p = add_epsg_def (filter, first, last, 4623, "epsg", 4623, - "CSG67"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-186,230,110,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"CSG67\",DATUM[\"Centre_Spatial_Guyanais_1967\","); - add_srs_wkt (p, 1, - "SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7022\"]],TOWGS84[-186,230,110,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"6623\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4623\"]]"); - p = add_epsg_def (filter, first, last, 4624, "epsg", 4624, - "RGFG95"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RGFG95\",DATUM[\"Reseau_Geodesique_Francais_Guy"); - add_srs_wkt (p, 1, - "ane_1995\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"6624\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"462"); - add_srs_wkt (p, 6, - "4\"]]"); - p = add_epsg_def (filter, first, last, 4625, "epsg", 4625, - "Martinique 1938"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=186,482,151,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Martinique 1938\",DATUM[\"Martinique_1938\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7022\"]],TOWGS84[186,482,151,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6625\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4625\"]]"); - p = add_epsg_def (filter, first, last, 4626, "epsg", 4626, - "Reunion 1947"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=94,-948,-1262,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Reunion 1947\",DATUM[\"Reunion_1947\",SPHEROID["); - add_srs_wkt (p, 1, - "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7022\"]],TOWGS84[94,-948,-1262,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6626\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4626\"]]"); - p = add_epsg_def (filter, first, last, 4627, "epsg", 4627, - "RGR92"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RGR92\",DATUM[\"Reseau_Geodesique_de_la_Reunion"); - add_srs_wkt (p, 1, - "_1992\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"6627\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4627\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 4628, "epsg", 4628, - "Tahiti 52"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=162,117,154,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Tahiti 52\",DATUM[\"Tahiti_52\",SPHEROID[\"Inte"); - add_srs_wkt (p, 1, - "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 2, - "]],TOWGS84[162,117,154,0,0,0,0],AUTHORITY[\"EPSG\",\"662"); - add_srs_wkt (p, 3, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4628\"]]"); - p = add_epsg_def (filter, first, last, 4629, "epsg", 4629, - "Tahaa 54"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=72.438,345.918,79.486"); - add_proj4text (p, 1, - ",1.6045,0.8823,0.5565,1.3746 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Tahaa 54\",DATUM[\"Tahaa_54\",SPHEROID[\"Intern"); - add_srs_wkt (p, 1, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 2, - ",TOWGS84[72.438,345.918,79.486,1.6045,0.8823,0.5565,1.37"); - add_srs_wkt (p, 3, - "46],AUTHORITY[\"EPSG\",\"6629\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 5, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"4629\"]]"); - p = add_epsg_def (filter, first, last, 4630, "epsg", 4630, - "IGN72 Nuku Hiva"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=84,274,65,0,0,0,0 +no"); - add_proj4text (p, 1, - "_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"IGN72 Nuku Hiva\",DATUM[\"IGN72_Nuku_Hiva\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7022\"]],TOWGS84[84,274,65,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"6630\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4630\"]]"); - p = add_epsg_def (filter, first, last, 4631, "epsg", 4631, - "K0 1949"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"K0 1949\",DATUM[\"K0_1949\",SPHEROID[\"Internat"); - add_srs_wkt (p, 1, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 2, - "OWGS84[145,-187,103,0,0,0,0],AUTHORITY[\"EPSG\",\"6631\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4631\"]]"); - p = add_epsg_def (filter, first, last, 4632, "epsg", 4632, - "Combani 1950"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-382,-59,-262,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Combani 1950\",DATUM[\"Combani_1950\",SPHEROID["); - add_srs_wkt (p, 1, - "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7022\"]],TOWGS84[-382,-59,-262,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6632\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4632\"]]"); - p = add_epsg_def (filter, first, last, 4633, "epsg", 4633, - "IGN56 Lifou"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=335.47,222.58,-230.94"); - add_proj4text (p, 1, - ",0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"IGN56 Lifou\",DATUM[\"IGN56_Lifou\",SPHEROID[\""); - add_srs_wkt (p, 1, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "22\"]],TOWGS84[335.47,222.58,-230.94,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"6633\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4633\"]]"); - p = add_epsg_def (filter, first, last, 4634, "epsg", 4634, - "IGN72 Grand Terre"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-13,-348,292,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"IGN72 Grand Terre\",DATUM[\"IGN72_Grande_Terre\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7022\"]],TOWGS84[-13,-348,292,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"6634\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\"4634\"]]"); - p = add_epsg_def (filter, first, last, 4635, "epsg", 4635, - "ST87 Ouvea"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-122.383,-188.696,103"); - add_proj4text (p, 1, - ".344,3.5107,-4.9668,-5.7047,4.4798 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"ST87 Ouvea\",DATUM[\"ST87_Ouvea\",SPHEROID[\"In"); - add_srs_wkt (p, 1, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 2, - "\"]],TOWGS84[-122.383,-188.696,103.344,3.5107,-4.9668,-5"); - add_srs_wkt (p, 3, - ".7047,4.4798],AUTHORITY[\"EPSG\",\"6635\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 4, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4635\"]]"); - p = add_epsg_def (filter, first, last, 4636, "epsg", 4636, - "Petrels 1972"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=365,194,166,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Petrels 1972\",DATUM[\"Petrels_1972\",SPHEROID["); - add_srs_wkt (p, 1, - "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7022\"]],TOWGS84[365,194,166,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6636\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4636\"]]"); - p = add_epsg_def (filter, first, last, 4637, "epsg", 4637, - "Perroud 1950"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=325,154,172,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Perroud 1950\",DATUM[\"Pointe_Geologie_Perroud_"); - add_srs_wkt (p, 1, - "1950\",SPHEROID[\"International 1924\",6378388,297,AUTHO"); - add_srs_wkt (p, 2, - "RITY[\"EPSG\",\"7022\"]],TOWGS84[325,154,172,0,0,0,0],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6637\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "637\"]]"); - p = add_epsg_def (filter, first, last, 4638, "epsg", 4638, - "Saint Pierre et Miquelon 1950"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Saint Pierre et Miquelon 1950\",DATUM[\"Saint_P"); - add_srs_wkt (p, 1, - "ierre_et_Miquelon_1950\",SPHEROID[\"Clarke 1866\",637820"); - add_srs_wkt (p, 2, - "6.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[30,430,368,0,0,0,0],AUTHORITY[\"EPSG\",\"6638\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4638\"]]"); - p = add_epsg_def (filter, first, last, 4639, "epsg", 4639, - "MOP78"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=253,-132,-127,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"MOP78\",DATUM[\"MOP78\",SPHEROID[\"Internationa"); - add_srs_wkt (p, 1, - "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); - add_srs_wkt (p, 2, - "84[253,-132,-127,0,0,0,0],AUTHORITY[\"EPSG\",\"6639\"]],"); - add_srs_wkt (p, 3, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 4, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 5, - "2\"]],AUTHORITY[\"EPSG\",\"4639\"]]"); - p = add_epsg_def (filter, first, last, 4640, "epsg", 4640, - "RRAF 1991"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RRAF 1991\",DATUM[\"Reseau_de_Reference_des_Ant"); - add_srs_wkt (p, 1, - "illes_Francaises_1991\",SPHEROID[\"WGS 84\",6378137,298."); - add_srs_wkt (p, 2, - "257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,"); - add_srs_wkt (p, 3, - "0,0,0],AUTHORITY[\"EPSG\",\"6640\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4640\"]]"); - p = add_epsg_def (filter, first, last, 4641, "epsg", 4641, - "IGN53 Mare"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=287.58,177.78,-135.41"); - add_proj4text (p, 1, - ",0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"IGN53 Mare\",DATUM[\"IGN53_Mare\",SPHEROID[\"In"); - add_srs_wkt (p, 1, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 2, - "\"]],TOWGS84[287.58,177.78,-135.41,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6641\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4641\"]]"); - p = add_epsg_def (filter, first, last, 4642, "epsg", 4642, - "ST84 Ile des Pins"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-13,-348,292,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"ST84 Ile des Pins\",DATUM[\"ST84_Ile_des_Pins\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7022\"]],TOWGS84[-13,-348,292,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"6642\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4642\"]]"); - p = add_epsg_def (filter, first, last, 4643, "epsg", 4643, - "ST71 Belep"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-480.26,-438.32,-643."); - add_proj4text (p, 1, - "429,16.3119,20.1721,-4.0349,-111.7 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"ST71 Belep\",DATUM[\"ST71_Belep\",SPHEROID[\"In"); - add_srs_wkt (p, 1, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 2, - "\"]],TOWGS84[-480.26,-438.32,-643.429,16.3119,20.1721,-4"); - add_srs_wkt (p, 3, - ".0349,-111.7],AUTHORITY[\"EPSG\",\"6643\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 4, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4643\"]]"); - p = add_epsg_def (filter, first, last, 4644, "epsg", 4644, - "NEA74 Noumea"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-10.18,-350.43,291.37"); - add_proj4text (p, 1, - ",0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NEA74 Noumea\",DATUM[\"NEA74_Noumea\",SPHEROID["); - add_srs_wkt (p, 1, - "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7022\"]],TOWGS84[-10.18,-350.43,291.37,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"6644\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4644\"]]"); - p = add_epsg_def (filter, first, last, 4645, "epsg", 4645, - "RGNC 1991"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=0,0,0,0,0,0,0 +no_def"); - add_proj4text (p, 1, - "s"); - add_srs_wkt (p, 0, - "GEOGCS[\"RGNC 1991\",DATUM[\"Reseau_Geodesique_Nouvelle_"); - add_srs_wkt (p, 1, - "Caledonie_1991\",SPHEROID[\"International 1924\",6378388"); - add_srs_wkt (p, 2, - ",297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6645\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4645\"]]"); - p = add_epsg_def (filter, first, last, 4646, "epsg", 4646, - "Grand Comoros"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-963,510,-359,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Grand Comoros\",DATUM[\"Grand_Comoros\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 2, - "\"7022\"]],TOWGS84[-963,510,-359,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"6646\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4646\"]]"); - p = add_epsg_def (filter, first, last, 4647, "epsg", 4647, - "ETRS89 / UTM zone N32"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=32500000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / UTM zone N32\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",9],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",32500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"4647\"]]"); - p = add_epsg_def (filter, first, last, 4652, "epsg", 4652, - "New Beijing / 3-degree Gauss-Kruger zone 25"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 25\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",75],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",25500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 11, - "NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4652\"]]"); - p = add_epsg_def (filter, first, last, 4653, "epsg", 4653, - "New Beijing / 3-degree Gauss-Kruger zone 26"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 26\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",78],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",26500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 11, - "NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4653\"]]"); - p = add_epsg_def (filter, first, last, 4654, "epsg", 4654, - "New Beijing / 3-degree Gauss-Kruger zone 27"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 27\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",81],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",27500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 11, - "NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4654\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_23.c b/src/spatialite/src/srsinit/epsg_inlined_23.c deleted file mode 100644 index 128b5fe..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_23.c +++ /dev/null @@ -1,1960 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_23 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 4655, "epsg", 4655, - "New Beijing / 3-degree Gauss-Kruger zone 28"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 28\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",84],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",28500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 11, - "NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4655\"]]"); - p = add_epsg_def (filter, first, last, 4656, "epsg", 4656, - "New Beijing / 3-degree Gauss-Kruger zone 29"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 29\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",87],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",29500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 11, - "NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4656\"]]"); - p = add_epsg_def (filter, first, last, 4657, "epsg", 4657, - "Reykjavik 1900"); - add_proj4text (p, 0, - "+proj=longlat +a=6377019.27 +b=6355762.5391 +towgs84=-28"); - add_proj4text (p, 1, - ",199,5,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Reykjavik 1900\",DATUM[\"Reykjavik_1900\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"Danish 1876\",6377019.27,300,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7051\"]],TOWGS84[-28,199,5,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "6657\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 4, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4657\"]]"); - p = add_epsg_def (filter, first, last, 4658, "epsg", 4658, - "Hjorsey 1955"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +n"); - add_proj4text (p, 1, - "o_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Hjorsey 1955\",DATUM[\"Hjorsey_1955\",SPHEROID["); - add_srs_wkt (p, 1, - "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7022\"]],TOWGS84[-73,46,-86,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"6658\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 4, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4658\"]]"); - p = add_epsg_def (filter, first, last, 4659, "epsg", 4659, - "ISN93"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"ISN93\",DATUM[\"Islands_Net_1993\",SPHEROID[\"G"); - add_srs_wkt (p, 1, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 2, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6659\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4659\"]]"); - p = add_epsg_def (filter, first, last, 4660, "epsg", 4660, - "Helle 1954"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=982.609,552.753,-540."); - add_proj4text (p, 1, - "873,6.68163,-31.6115,-19.8482,16.805 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Helle 1954\",DATUM[\"Helle_1954\",SPHEROID[\"In"); - add_srs_wkt (p, 1, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 2, - "\"]],TOWGS84[982.609,552.753,-540.873,6.68163,-31.6115,-"); - add_srs_wkt (p, 3, - "19.8482,16.805],AUTHORITY[\"EPSG\",\"6660\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4660\"]]"); - p = add_epsg_def (filter, first, last, 4661, "epsg", 4661, - "LKS92"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"LKS92\",DATUM[\"Latvia_1992\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 1, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 2, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6661\"]],PR"); - add_srs_wkt (p, 3, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 4, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 5, - "]],AUTHORITY[\"EPSG\",\"4661\"]]"); - p = add_epsg_def (filter, first, last, 4662, "epsg", 4662, - "IGN72 Grande Terre"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-11.64,-348.6,291.98,"); - add_proj4text (p, 1, - "0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"IGN72 Grande Terre\",DATUM[\"IGN72_Grande_Terre"); - add_srs_wkt (p, 1, - "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); - add_srs_wkt (p, 2, - "[\"EPSG\",\"7022\"]],TOWGS84[-11.64,-348.6,291.98,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6634\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4662\"]]"); - p = add_epsg_def (filter, first, last, 4663, "epsg", 4663, - "Porto Santo 1995"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-502.862,-247.438,312"); - add_proj4text (p, 1, - ".724,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Porto Santo 1995\",DATUM[\"Porto_Santo_1995\",S"); - add_srs_wkt (p, 1, - "PHEROID[\"International 1924\",6378388,297,AUTHORITY[\"E"); - add_srs_wkt (p, 2, - "PSG\",\"7022\"]],TOWGS84[-502.862,-247.438,312.724,0,0,0"); - add_srs_wkt (p, 3, - ",0],AUTHORITY[\"EPSG\",\"6663\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 5, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"4663\"]]"); - p = add_epsg_def (filter, first, last, 4664, "epsg", 4664, - "Azores Oriental 1995"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-204.619,140.176,55.2"); - add_proj4text (p, 1, - "26,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Azores Oriental 1995\",DATUM[\"Azores_Oriental_"); - add_srs_wkt (p, 1, - "Islands_1995\",SPHEROID[\"International 1924\",6378388,2"); - add_srs_wkt (p, 2, - "97,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-204.619,140.17"); - add_srs_wkt (p, 3, - "6,55.226,0,0,0,0],AUTHORITY[\"EPSG\",\"6664\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4664\"]]"); - p = add_epsg_def (filter, first, last, 4665, "epsg", 4665, - "Azores Central 1995"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-106.226,166.366,-37."); - add_proj4text (p, 1, - "893,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Azores Central 1995\",DATUM[\"Azores_Central_Is"); - add_srs_wkt (p, 1, - "lands_1995\",SPHEROID[\"International 1924\",6378388,297"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-106.226,166.366,"); - add_srs_wkt (p, 3, - "-37.893,0,0,0,0],AUTHORITY[\"EPSG\",\"6665\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4665\"]]"); - p = add_epsg_def (filter, first, last, 4666, "epsg", 4666, - "Lisbon 1890"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=508.088,-191.042,56"); - add_proj4text (p, 1, - "5.223,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Lisbon 1890\",DATUM[\"Lisbon_1890\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7004\"]],TOWGS84[508.088,-191.042,565.223,0,0,0,0],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6666\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "666\"]]"); - p = add_epsg_def (filter, first, last, 4667, "epsg", 4667, - "IKBD-92"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"IKBD-92\",DATUM[\"Iraq_Kuwait_Boundary_Datum_19"); - add_srs_wkt (p, 1, - "92\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY"); - add_srs_wkt (p, 2, - "[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6667\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4667\"]]"); - p = add_epsg_def (filter, first, last, 4668, "epsg", 4668, - "ED79"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-86,-98,-119,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"ED79\",DATUM[\"European_Datum_1979\",SPHEROID[\""); - add_srs_wkt (p, 1, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "22\"]],TOWGS84[-86,-98,-119,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"6668\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 4, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4668\"]]"); - p = add_epsg_def (filter, first, last, 4669, "epsg", 4669, - "LKS94"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"LKS94\",DATUM[\"Lithuania_1994_ETRS89\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 2, - "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 3, - "126\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4669\"]]"); - p = add_epsg_def (filter, first, last, 4670, "epsg", 4670, - "IGM95"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"IGM95\",DATUM[\"Istituto_Geografico_Militaire_1"); - add_srs_wkt (p, 1, - "995\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6670\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4670\"]]"); - p = add_epsg_def (filter, first, last, 4671, "epsg", 4671, - "Voirol 1879"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Voirol 1879\",DATUM[\"Voirol_1879\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Clarke 1880 (IGN)\",6378249.2,293.4660212936269,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7011\"]],AUTHORITY[\"EPSG\",\"6671\"]],PRIM"); - add_srs_wkt (p, 3, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 4, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 5, - "],AUTHORITY[\"EPSG\",\"4671\"]]"); - p = add_epsg_def (filter, first, last, 4672, "epsg", 4672, - "Chatham Islands 1971"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=175,-38,113,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Chatham Islands 1971\",DATUM[\"Chatham_Islands_"); - add_srs_wkt (p, 1, - "Datum_1971\",SPHEROID[\"International 1924\",6378388,297"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[175,-38,113,0,0,0"); - add_srs_wkt (p, 3, - ",0],AUTHORITY[\"EPSG\",\"6672\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 5, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"4672\"]]"); - p = add_epsg_def (filter, first, last, 4673, "epsg", 4673, - "Chatham Islands 1979"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=174.05,-25.49,112.57,"); - add_proj4text (p, 1, - "-0,-0,0.554,0.2263 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Chatham Islands 1979\",DATUM[\"Chatham_Islands_"); - add_srs_wkt (p, 1, - "Datum_1979\",SPHEROID[\"International 1924\",6378388,297"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[174.05,-25.49,112"); - add_srs_wkt (p, 3, - ".57,-0,-0,0.554,0.2263],AUTHORITY[\"EPSG\",\"6673\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4673\"]]"); - p = add_epsg_def (filter, first, last, 4674, "epsg", 4674, - "SIRGAS 2000"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"SIRGAS 2000\",DATUM[\"Sistema_de_Referencia_Geo"); - add_srs_wkt (p, 1, - "centrico_para_las_AmericaS_2000\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4674\"]]"); - p = add_epsg_def (filter, first, last, 4675, "epsg", 4675, - "Guam 1963"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +towgs84=-100,-248,259,0,0,0"); - add_proj4text (p, 1, - ",0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Guam 1963\",DATUM[\"Guam_1963\",SPHEROID[\"Clar"); - add_srs_wkt (p, 1, - "ke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7008\"]],TOWGS84[-100,-248,259,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6675\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4675\"]]"); - p = add_epsg_def (filter, first, last, 4676, "epsg", 4676, - "Vientiane 1982"); - add_proj4text (p, 0, - "+proj=longlat +ellps=krass +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Vientiane 1982\",DATUM[\"Vientiane_1982\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7024\"]],AUTHORITY[\"EPSG\",\"6676\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 3, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 4, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"4676\"]]"); - p = add_epsg_def (filter, first, last, 4677, "epsg", 4677, - "Lao 1993"); - add_proj4text (p, 0, - "+proj=longlat +ellps=krass +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Lao 1993\",DATUM[\"Lao_1993\",SPHEROID[\"Krasso"); - add_srs_wkt (p, 1, - "wsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"6677\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 4, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "4677\"]]"); - p = add_epsg_def (filter, first, last, 4678, "epsg", 4678, - "Lao 1997"); - add_proj4text (p, 0, - "+proj=longlat +ellps=krass +towgs84=44.585,-131.212,-39."); - add_proj4text (p, 1, - "544,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Lao 1997\",DATUM[\"Lao_National_Datum_1997\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7024\"]],TOWGS84[44.585,-131.212,-39.544,0,0,0,0],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6678\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4678\"]]"); - p = add_epsg_def (filter, first, last, 4679, "epsg", 4679, - "Jouik 1961"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-80.01,253.26,291.1"); - add_proj4text (p, 1, - "9,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Jouik 1961\",DATUM[\"Jouik_1961\",SPHEROID[\"Cl"); - add_srs_wkt (p, 1, - "arke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7012\"]],TOWGS84[-80.01,253.26,291.19,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6679\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4679\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 4680, "epsg", 4680, - "Nouakchott 1965"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=124.5,-63.5,-281,0,"); - add_proj4text (p, 1, - "0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Nouakchott 1965\",DATUM[\"Nouakchott_1965\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7012\"]],TOWGS84[124.5,-63.5,-281,0,0,0,0],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6680\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4680\"]]"); - p = add_epsg_def (filter, first, last, 4681, "epsg", 4681, - "Mauritania 1999"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Mauritania 1999\",DATUM[\"Mauritania_1999\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG\",\"6681\"]],PRIM"); - add_srs_wkt (p, 3, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 4, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 5, - "],AUTHORITY[\"EPSG\",\"4681\"]]"); - p = add_epsg_def (filter, first, last, 4682, "epsg", 4682, - "Gulshan 303"); - add_proj4text (p, 0, - "+proj=longlat +a=6377276.345 +b=6356075.413140239 +towgs"); - add_proj4text (p, 1, - "84=283.7,735.9,261.1,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Gulshan 303\",DATUM[\"Gulshan_303\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Everest 1830 (1937 Adjustment)\",6377276.345,300.8017,AU"); - add_srs_wkt (p, 2, - "THORITY[\"EPSG\",\"7015\"]],TOWGS84[283.7,735.9,261.1,0,"); - add_srs_wkt (p, 3, - "0,0,0],AUTHORITY[\"EPSG\",\"6682\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4682\"]]"); - p = add_epsg_def (filter, first, last, 4683, "epsg", 4683, - "PRS92"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +towgs84=-127.62,-67.24,-47."); - add_proj4text (p, 1, - "04,-3.068,4.903,1.578,-1.06 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"PRS92\",DATUM[\"Philippine_Reference_System_199"); - add_srs_wkt (p, 1, - "2\",SPHEROID[\"Clarke 1866\",6378206.4,294.9786982138982"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[-127.62,-67.24,-4"); - add_srs_wkt (p, 3, - "7.04,-3.068,4.903,1.578,-1.06],AUTHORITY[\"EPSG\",\"6683"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4683\"]]"); - p = add_epsg_def (filter, first, last, 4684, "epsg", 4684, - "Gan 1970"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Gan 1970\",DATUM[\"Gan_1970\",SPHEROID[\"Intern"); - add_srs_wkt (p, 1, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 2, - ",TOWGS84[-133,-321,50,0,0,0,0],AUTHORITY[\"EPSG\",\"6684"); - add_srs_wkt (p, 3, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 4, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4684\"]]"); - p = add_epsg_def (filter, first, last, 4685, "epsg", 4685, - "Gandajika"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Gandajika\",DATUM[\"Gandajika\",SPHEROID[\"Inte"); - add_srs_wkt (p, 1, - "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 2, - "]],AUTHORITY[\"EPSG\",\"6685\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 4, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"4685\"]]"); - p = add_epsg_def (filter, first, last, 4686, "epsg", 4686, - "MAGNA-SIRGAS"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"MAGNA-SIRGAS\",DATUM[\"Marco_Geocentrico_Nacion"); - add_srs_wkt (p, 1, - "al_de_Referencia\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 2, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 3, - ",0],AUTHORITY[\"EPSG\",\"6686\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 5, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"4686\"]]"); - p = add_epsg_def (filter, first, last, 4687, "epsg", 4687, - "RGPF"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,"); - add_proj4text (p, 1, - "-0.0183,0.0003,-0.007,-0.0093 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RGPF\",DATUM[\"Reseau_Geodesique_de_la_Polynesi"); - add_srs_wkt (p, 1, - "e_Francaise\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 2, - "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0.072,-0.507,-0."); - add_srs_wkt (p, 3, - "245,-0.0183,0.0003,-0.007,-0.0093],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6687\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4687\"]]"); - p = add_epsg_def (filter, first, last, 4688, "epsg", 4688, - "Fatu Iva 72"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=347.103,1078.12,2623."); - add_proj4text (p, 1, - "92,-33.8875,70.6773,-9.3943,186.074 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Fatu Iva 72\",DATUM[\"Fatu_Iva_72\",SPHEROID[\""); - add_srs_wkt (p, 1, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "22\"]],TOWGS84[347.103,1078.12,2623.92,-33.8875,70.6773,"); - add_srs_wkt (p, 3, - "-9.3943,186.074],AUTHORITY[\"EPSG\",\"6688\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4688\"]]"); - p = add_epsg_def (filter, first, last, 4689, "epsg", 4689, - "IGN63 Hiva Oa"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=410.721,55.049,80.746"); - add_proj4text (p, 1, - ",2.5779,2.3514,0.6664,17.3311 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"IGN63 Hiva Oa\",DATUM[\"IGN63_Hiva_Oa\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 2, - "\"7022\"]],TOWGS84[410.721,55.049,80.746,2.5779,2.3514,0"); - add_srs_wkt (p, 3, - ".6664,17.3311],AUTHORITY[\"EPSG\",\"6689\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4689\"]]"); - p = add_epsg_def (filter, first, last, 4690, "epsg", 4690, - "Tahiti 79"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=221.525,152.948,176.7"); - add_proj4text (p, 1, - "68,-2.3847,-1.3896,-0.877,11.4741 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Tahiti 79\",DATUM[\"Tahiti_79\",SPHEROID[\"Inte"); - add_srs_wkt (p, 1, - "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 2, - "]],TOWGS84[221.525,152.948,176.768,-2.3847,-1.3896,-0.87"); - add_srs_wkt (p, 3, - "7,11.4741],AUTHORITY[\"EPSG\",\"6690\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4690\"]]"); - p = add_epsg_def (filter, first, last, 4691, "epsg", 4691, - "Moorea 87"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=215.525,149.593,176.2"); - add_proj4text (p, 1, - "29,-3.2624,-1.692,-1.1571,10.4773 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Moorea 87\",DATUM[\"Moorea_87\",SPHEROID[\"Inte"); - add_srs_wkt (p, 1, - "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 2, - "]],TOWGS84[215.525,149.593,176.229,-3.2624,-1.692,-1.157"); - add_srs_wkt (p, 3, - "1,10.4773],AUTHORITY[\"EPSG\",\"6691\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4691\"]]"); - p = add_epsg_def (filter, first, last, 4692, "epsg", 4692, - "Maupiti 83"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=217.037,86.959,23.956"); - add_proj4text (p, 1, - ",0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Maupiti 83\",DATUM[\"Maupiti_83\",SPHEROID[\"In"); - add_srs_wkt (p, 1, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 2, - "\"]],TOWGS84[217.037,86.959,23.956,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6692\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4692\"]]"); - p = add_epsg_def (filter, first, last, 4693, "epsg", 4693, - "Nakhl-e Ghanem"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Nakhl-e Ghanem\",DATUM[\"Nakhl_e_Ghanem\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 2, - "\"7030\"]],TOWGS84[0,-0.15,0.68,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6693\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4693\"]]"); - p = add_epsg_def (filter, first, last, 4694, "epsg", 4694, - "POSGAR 94"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"POSGAR 94\",DATUM[\"Posiciones_Geodesicas_Argen"); - add_srs_wkt (p, 1, - "tinas_1994\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"6694\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"469"); - add_srs_wkt (p, 6, - "4\"]]"); - p = add_epsg_def (filter, first, last, 4695, "epsg", 4695, - "Katanga 1955"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +towgs84=-103.746,-9.614,-25"); - add_proj4text (p, 1, - "5.95,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4695\"]]"); - p = add_epsg_def (filter, first, last, 4696, "epsg", 4696, - "Kasai 1953"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Kasai 1953\",DATUM[\"Kasai_1953\",SPHEROID[\"Cl"); - add_srs_wkt (p, 1, - "arke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7012\"]],AUTHORITY[\"EPSG\",\"6696\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 3, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 4, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"4696\"]]"); - p = add_epsg_def (filter, first, last, 4697, "epsg", 4697, - "IGC 1962 6th Parallel South"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"IGC 1962 6th Parallel South\",DATUM[\"IGC_1962_"); - add_srs_wkt (p, 1, - "Arc_of_the_6th_Parallel_South\",SPHEROID[\"Clarke 1880 ("); - add_srs_wkt (p, 2, - "RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6697\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4697\"]]"); - p = add_epsg_def (filter, first, last, 4698, "epsg", 4698, - "IGN 1962 Kerguelen"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"IGN 1962 Kerguelen\",DATUM[\"IGN_1962_Kerguelen"); - add_srs_wkt (p, 1, - "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); - add_srs_wkt (p, 2, - "[\"EPSG\",\"7022\"]],TOWGS84[145,-187,103,0,0,0,0],AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"6698\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4698"); - add_srs_wkt (p, 6, - "\"]]"); - p = add_epsg_def (filter, first, last, 4699, "epsg", 4699, - "Le Pouce 1934"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-770.1,158.4,-498.2"); - add_proj4text (p, 1, - ",0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Le Pouce 1934\",DATUM[\"Le_Pouce_1934\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7012\"]],TOWGS84[-770.1,158.4,-498.2,0,0,0,0],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6699\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4699\"]]"); - p = add_epsg_def (filter, first, last, 4700, "epsg", 4700, - "IGN Astro 1960"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"IGN Astro 1960\",DATUM[\"IGN_Astro_1960\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY["); - add_srs_wkt (p, 2, - "\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG\",\"6700\"]],PRIMEM"); - add_srs_wkt (p, 3, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 4, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"4700\"]]"); - p = add_epsg_def (filter, first, last, 4701, "epsg", 4701, - "IGCB 1955"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0"); - add_proj4text (p, 1, - ",0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"IGCB 1955\",DATUM[\"Institut_Geographique_du_Co"); - add_srs_wkt (p, 1, - "ngo_Belge_1955\",SPHEROID[\"Clarke 1880 (RGS)\",6378249."); - add_srs_wkt (p, 2, - "145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-79.9,"); - add_srs_wkt (p, 3, - "-158,-168.9,0,0,0,0],AUTHORITY[\"EPSG\",\"6701\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4701\"]]"); - p = add_epsg_def (filter, first, last, 4702, "epsg", 4702, - "Mauritania 1999"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Mauritania 1999\",DATUM[\"Mauritania_1999\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6702\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4702\"]]"); - p = add_epsg_def (filter, first, last, 4703, "epsg", 4703, - "Mhast 1951"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Mhast 1951\",DATUM[\"Missao_Hidrografico_Angola"); - add_srs_wkt (p, 1, - "_y_Sao_Tome_1951\",SPHEROID[\"Clarke 1880 (RGS)\",637824"); - add_srs_wkt (p, 2, - "9.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6703\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4703\"]]"); - p = add_epsg_def (filter, first, last, 4704, "epsg", 4704, - "Mhast (onshore)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Mhast (onshore)\",DATUM[\"Mhast_onshore\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7022\"]],AUTHORITY[\"EPSG\",\"6704\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 3, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 4, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"4704\"]]"); - p = add_epsg_def (filter, first, last, 4705, "epsg", 4705, - "Mhast (offshore)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Mhast (offshore)\",DATUM[\"Mhast_offshore\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7022\"]],AUTHORITY[\"EPSG\",\"6705\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 3, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 4, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"4705\"]]"); - p = add_epsg_def (filter, first, last, 4706, "epsg", 4706, - "Egypt Gulf of Suez S-650 TL"); - add_proj4text (p, 0, - "+proj=longlat +ellps=helmert +towgs84=-146.21,112.63,4.0"); - add_proj4text (p, 1, - "5,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Egypt Gulf of Suez S-650 TL\",DATUM[\"Egypt_Gul"); - add_srs_wkt (p, 1, - "f_of_Suez_S_650_TL\",SPHEROID[\"Helmert 1906\",6378200,2"); - add_srs_wkt (p, 2, - "98.3,AUTHORITY[\"EPSG\",\"7020\"]],TOWGS84[-146.21,112.6"); - add_srs_wkt (p, 3, - "3,4.05,0,0,0,0],AUTHORITY[\"EPSG\",\"6706\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4706\"]]"); - p = add_epsg_def (filter, first, last, 4707, "epsg", 4707, - "Tern Island 1961"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=114,-116,-333,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Tern Island 1961\",DATUM[\"Tern_Island_1961\",S"); - add_srs_wkt (p, 1, - "PHEROID[\"International 1924\",6378388,297,AUTHORITY[\"E"); - add_srs_wkt (p, 2, - "PSG\",\"7022\"]],TOWGS84[114,-116,-333,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"6707\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4707\"]]"); - p = add_epsg_def (filter, first, last, 4708, "epsg", 4708, - "Cocos Islands 1965"); - add_proj4text (p, 0, - "+proj=longlat +ellps=aust_SA +towgs84=-491,-22,435,0,0,0"); - add_proj4text (p, 1, - ",0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Cocos Islands 1965\",DATUM[\"Cocos_Islands_1965"); - add_srs_wkt (p, 1, - "\",SPHEROID[\"Australian National Spheroid\",6378160,298"); - add_srs_wkt (p, 2, - ".25,AUTHORITY[\"EPSG\",\"7003\"]],TOWGS84[-491,-22,435,0"); - add_srs_wkt (p, 3, - ",0,0,0],AUTHORITY[\"EPSG\",\"6708\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4708\"]]"); - p = add_epsg_def (filter, first, last, 4709, "epsg", 4709, - "Iwo Jima 1945"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=145,75,-272,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Iwo Jima 1945\",DATUM[\"Iwo_Jima_1945\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 2, - "\"7022\"]],TOWGS84[145,75,-272,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6709\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4709\"]]"); - p = add_epsg_def (filter, first, last, 4710, "epsg", 4710, - "St. Helena 1971"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-320,550,-494,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"St. Helena 1971\",DATUM[\"St_Helena_1971\",SPHE"); - add_srs_wkt (p, 1, - "ROID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 2, - "\",\"7022\"]],TOWGS84[-320,550,-494,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6710\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4710\"]]"); - p = add_epsg_def (filter, first, last, 4711, "epsg", 4711, - "Marcus Island 1952"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=124,-234,-25,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Marcus Island 1952\",DATUM[\"Marcus_Island_1952"); - add_srs_wkt (p, 1, - "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); - add_srs_wkt (p, 2, - "[\"EPSG\",\"7022\"]],TOWGS84[124,-234,-25,0,0,0,0],AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"6711\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4711"); - add_srs_wkt (p, 6, - "\"]]"); - p = add_epsg_def (filter, first, last, 4712, "epsg", 4712, - "Ascension Island 1958"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-205,107,53,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Ascension Island 1958\",DATUM[\"Ascension_Islan"); - add_srs_wkt (p, 1, - "d_1958\",SPHEROID[\"International 1924\",6378388,297,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7022\"]],TOWGS84[-205,107,53,0,0,0,0],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6712\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4712\"]]"); - p = add_epsg_def (filter, first, last, 4713, "epsg", 4713, - "Ayabelle Lighthouse"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-79,-129,145,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Ayabelle Lighthouse\",DATUM[\"Ayabelle_Lighthou"); - add_srs_wkt (p, 1, - "se\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-79,-129,145,0,0,0"); - add_srs_wkt (p, 3, - ",0],AUTHORITY[\"EPSG\",\"6713\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 5, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"4713\"]]"); - p = add_epsg_def (filter, first, last, 4714, "epsg", 4714, - "Bellevue"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-127,-769,472,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Bellevue\",DATUM[\"Bellevue\",SPHEROID[\"Intern"); - add_srs_wkt (p, 1, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 2, - ",TOWGS84[-127,-769,472,0,0,0,0],AUTHORITY[\"EPSG\",\"671"); - add_srs_wkt (p, 3, - "4\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4714\"]]"); - p = add_epsg_def (filter, first, last, 4715, "epsg", 4715, - "Camp Area Astro"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-104,-129,239,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Camp Area Astro\",DATUM[\"Camp_Area_Astro\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7022\"]],TOWGS84[-104,-129,239,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"6715\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4715\"]]"); - p = add_epsg_def (filter, first, last, 4716, "epsg", 4716, - "Phoenix Islands 1966"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=298,-304,-375,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Phoenix Islands 1966\",DATUM[\"Phoenix_Islands_"); - add_srs_wkt (p, 1, - "1966\",SPHEROID[\"International 1924\",6378388,297,AUTHO"); - add_srs_wkt (p, 2, - "RITY[\"EPSG\",\"7022\"]],TOWGS84[298,-304,-375,0,0,0,0],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6716\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4716\"]]"); - p = add_epsg_def (filter, first, last, 4717, "epsg", 4717, - "Cape Canaveral"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +towgs84=-2,151,181,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Cape Canaveral\",DATUM[\"Cape_Canaveral\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7008\"]],TOWGS84[-2,151,181,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6717\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4717\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 4718, "epsg", 4718, - "Solomon 1968"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=252,-209,-751,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Solomon 1968\",DATUM[\"Solomon_1968\",SPHEROID["); - add_srs_wkt (p, 1, - "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7022\"]],TOWGS84[252,-209,-751,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6718\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4718\"]]"); - p = add_epsg_def (filter, first, last, 4719, "epsg", 4719, - "Easter Island 1967"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=211,147,111,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Easter Island 1967\",DATUM[\"Easter_Island_1967"); - add_srs_wkt (p, 1, - "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); - add_srs_wkt (p, 2, - "[\"EPSG\",\"7022\"]],TOWGS84[211,147,111,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6719\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4719\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 4720, "epsg", 4720, - "Fiji 1986"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0."); - add_proj4text (p, 1, - "2263 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Fiji 1986\",DATUM[\"Fiji_Geodetic_Datum_1986\","); - add_srs_wkt (p, 1, - "SPHEROID[\"WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6720\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4720\"]]"); - p = add_epsg_def (filter, first, last, 4721, "epsg", 4721, - "Fiji 1956"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=265.025,384.929,-194."); - add_proj4text (p, 1, - "046,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Fiji 1956\",DATUM[\"Fiji_1956\",SPHEROID[\"Inte"); - add_srs_wkt (p, 1, - "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 2, - "]],TOWGS84[265.025,384.929,-194.046,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"6721\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4721\"]]"); - p = add_epsg_def (filter, first, last, 4722, "epsg", 4722, - "South Georgia 1968"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-794,119,-298,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"South Georgia 1968\",DATUM[\"South_Georgia_1968"); - add_srs_wkt (p, 1, - "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); - add_srs_wkt (p, 2, - "[\"EPSG\",\"7022\"]],TOWGS84[-794,119,-298,0,0,0,0],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"6722\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"472"); - add_srs_wkt (p, 6, - "2\"]]"); - p = add_epsg_def (filter, first, last, 4723, "epsg", 4723, - "Grand Cayman 1959"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +towgs84=67.8,106.1,138.8,0,"); - add_proj4text (p, 1, - "0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Grand Cayman 1959\",DATUM[\"Grand_Cayman_1959\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"Clarke 1866\",6378206.4,294.9786982138982,AU"); - add_srs_wkt (p, 2, - "THORITY[\"EPSG\",\"7008\"]],TOWGS84[67.8,106.1,138.8,0,0"); - add_srs_wkt (p, 3, - ",0,0],AUTHORITY[\"EPSG\",\"6723\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4723\"]]"); - p = add_epsg_def (filter, first, last, 4724, "epsg", 4724, - "Diego Garcia 1969"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=208,-435,-229,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Diego Garcia 1969\",DATUM[\"Diego_Garcia_1969\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7022\"]],TOWGS84[208,-435,-229,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"6724\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4724\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 4725, "epsg", 4725, - "Johnston Island 1961"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=189,-79,-202,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Johnston Island 1961\",DATUM[\"Johnston_Island_"); - add_srs_wkt (p, 1, - "1961\",SPHEROID[\"International 1924\",6378388,297,AUTHO"); - add_srs_wkt (p, 2, - "RITY[\"EPSG\",\"7022\"]],TOWGS84[189,-79,-202,0,0,0,0],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6725\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4725\"]]"); - p = add_epsg_def (filter, first, last, 4726, "epsg", 4726, - "Little Cayman 1961"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +towgs84=42,124,147,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Little Cayman 1961\",DATUM[\"Little_Cayman_1961"); - add_srs_wkt (p, 1, - "\",SPHEROID[\"Clarke 1866\",6378206.4,294.9786982138982,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[42,124,147,0,0,0,0"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6726\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4726\"]]"); - p = add_epsg_def (filter, first, last, 4727, "epsg", 4727, - "Midway 1961"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=403,-81,277,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Midway 1961\",DATUM[\"Midway_1961\",SPHEROID[\""); - add_srs_wkt (p, 1, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "22\"]],TOWGS84[403,-81,277,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "6727\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 4, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4727\"]]"); - p = add_epsg_def (filter, first, last, 4728, "epsg", 4728, - "Pico de las Nieves 1984"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-307,-92,127,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Pico de las Nieves 1984\",DATUM[\"Pico_de_las_N"); - add_srs_wkt (p, 1, - "ieves_1984\",SPHEROID[\"International 1924\",6378388,297"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-307,-92,127,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6728\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4728\"]]"); - p = add_epsg_def (filter, first, last, 4729, "epsg", 4729, - "Pitcairn 1967"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=185,165,42,0,0,0,0 +n"); - add_proj4text (p, 1, - "o_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Pitcairn 1967\",DATUM[\"Pitcairn_1967\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 2, - "\"7022\"]],TOWGS84[185,165,42,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6729\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4729\"]]"); - p = add_epsg_def (filter, first, last, 4730, "epsg", 4730, - "Santo 1965"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=170,42,84,0,0,0,0 +no"); - add_proj4text (p, 1, - "_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Santo 1965\",DATUM[\"Santo_1965\",SPHEROID[\"In"); - add_srs_wkt (p, 1, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 2, - "\"]],TOWGS84[170,42,84,0,0,0,0],AUTHORITY[\"EPSG\",\"673"); - add_srs_wkt (p, 3, - "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4730\"]]"); - p = add_epsg_def (filter, first, last, 4731, "epsg", 4731, - "Viti Levu 1916"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=51,391,-36,0,0,0,0 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Viti Levu 1916\",DATUM[\"Viti_Levu_1916\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY["); - add_srs_wkt (p, 2, - "\"EPSG\",\"7012\"]],TOWGS84[51,391,-36,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"6731\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4731\"]]"); - p = add_epsg_def (filter, first, last, 4732, "epsg", 4732, - "Marshall Islands 1960"); - add_proj4text (p, 0, - "+proj=longlat +a=6378270 +b=6356794.343434343 +towgs84=1"); - add_proj4text (p, 1, - "02,52,-38,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Marshall Islands 1960\",DATUM[\"Marshall_Island"); - add_srs_wkt (p, 1, - "s_1960\",SPHEROID[\"Hough 1960\",6378270,297,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7053\"]],TOWGS84[102,52,-38,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"6732\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4732\"]]"); - p = add_epsg_def (filter, first, last, 4733, "epsg", 4733, - "Wake Island 1952"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=276,-57,149,0,0,0,0 +"); - add_proj4text (p, 1, - "no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Wake Island 1952\",DATUM[\"Wake_Island_1952\",S"); - add_srs_wkt (p, 1, - "PHEROID[\"International 1924\",6378388,297,AUTHORITY[\"E"); - add_srs_wkt (p, 2, - "PSG\",\"7022\"]],TOWGS84[276,-57,149,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"6733\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4733\"]]"); - p = add_epsg_def (filter, first, last, 4734, "epsg", 4734, - "Tristan 1968"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-632,438,-609,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Tristan 1968\",DATUM[\"Tristan_1968\",SPHEROID["); - add_srs_wkt (p, 1, - "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7022\"]],TOWGS84[-632,438,-609,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"6734\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4734\"]]"); - p = add_epsg_def (filter, first, last, 4735, "epsg", 4735, - "Kusaie 1951"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=647,1777,-1124,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Kusaie 1951\",DATUM[\"Kusaie_1951\",SPHEROID[\""); - add_srs_wkt (p, 1, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "22\"]],TOWGS84[647,1777,-1124,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6735\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4735\"]]"); - p = add_epsg_def (filter, first, last, 4736, "epsg", 4736, - "Deception Island"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=260,12,-147,0,0,0,0"); - add_proj4text (p, 1, - " +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Deception Island\",DATUM[\"Deception_Island\",S"); - add_srs_wkt (p, 1, - "PHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7012\"]],TOWGS84[260,12,-147,0,0,0,0],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"6736\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 5, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 6, - "36\"]]"); - p = add_epsg_def (filter, first, last, 4737, "epsg", 4737, - "Korea 2000"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Korea 2000\",DATUM[\"Geocentric_datum_of_Korea\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6737\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4737\"]]"); - p = add_epsg_def (filter, first, last, 4738, "epsg", 4738, - "Hong Kong 1963"); - add_proj4text (p, 0, - "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Hong Kong 1963\",DATUM[\"Hong_Kong_1963\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"Clarke 1858\",6378293.645208759,294.2606763692654,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7007\"]],AUTHORITY[\"EPSG\",\"6738\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4738\"]]"); - p = add_epsg_def (filter, first, last, 4739, "epsg", 4739, - "Hong Kong 1963(67)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-156,-271,-189,0,0,0,"); - add_proj4text (p, 1, - "0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Hong Kong 1963(67)\",DATUM[\"Hong_Kong_1963_67\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7022\"]],TOWGS84[-156,-271,-189,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"6739\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4739\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 4740, "epsg", 4740, - "PZ-90"); - add_proj4text (p, 0, - "+proj=longlat +a=6378136 +b=6356751.361745712 +towgs84=0"); - add_proj4text (p, 1, - ",0,1.5,-0,-0,0.076,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"PZ-90\",DATUM[\"Parametrop_Zemp_1990\",SPHEROID"); - add_srs_wkt (p, 1, - "[\"PZ-90\",6378136,298.257839303,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "54\"]],TOWGS84[0,0,1.5,-0,-0,0.076,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6740\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4740\"]]"); - p = add_epsg_def (filter, first, last, 4741, "epsg", 4741, - "FD54"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"FD54\",DATUM[\"Faroe_Datum_1954\",SPHEROID[\"In"); - add_srs_wkt (p, 1, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 2, - "\"]],AUTHORITY[\"EPSG\",\"6741\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 3, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 4, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"4741\"]]"); - p = add_epsg_def (filter, first, last, 4742, "epsg", 4742, - "GDM2000"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"GDM2000\",DATUM[\"Geodetic_Datum_of_Malaysia_20"); - add_srs_wkt (p, 1, - "00\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6742\"]],PRI"); - add_srs_wkt (p, 3, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 4, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 5, - "],AUTHORITY[\"EPSG\",\"4742\"]]"); - p = add_epsg_def (filter, first, last, 4743, "epsg", 4743, - "Karbala 1979"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=70.995,-335.916,262"); - add_proj4text (p, 1, - ".898,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Karbala 1979\",DATUM[\"Karbala_1979\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); - add_srs_wkt (p, 2, - "SG\",\"7012\"]],TOWGS84[70.995,-335.916,262.898,0,0,0,0]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6743\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4743\"]]"); - p = add_epsg_def (filter, first, last, 4744, "epsg", 4744, - "Nahrwan 1934"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Nahrwan 1934\",DATUM[\"Nahrwan_1934\",SPHEROID["); - add_srs_wkt (p, 1, - "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); - add_srs_wkt (p, 2, - "SG\",\"7012\"]],AUTHORITY[\"EPSG\",\"6744\"]],PRIMEM[\"G"); - add_srs_wkt (p, 3, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 4, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"4744\"]]"); - p = add_epsg_def (filter, first, last, 4745, "epsg", 4745, - "RD/83"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RD/83\",DATUM[\"Rauenberg_Datum_83\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7004\"]],AUTHORITY[\"EPSG\",\"6745\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 3, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 4, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"4745\"]]"); - p = add_epsg_def (filter, first, last, 4746, "epsg", 4746, - "PD/83"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"PD/83\",DATUM[\"Potsdam_Datum_83\",SPHEROID[\"B"); - add_srs_wkt (p, 1, - "essel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 2, - "\"7004\"]],AUTHORITY[\"EPSG\",\"6746\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 3, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 4, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"4746\"]]"); - p = add_epsg_def (filter, first, last, 4747, "epsg", 4747, - "GR96"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"GR96\",DATUM[\"Greenland_1996\",SPHEROID[\"GRS "); - add_srs_wkt (p, 1, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 2, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],"); - add_srs_wkt (p, 3, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 4, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 5, - "2\"]],AUTHORITY[\"EPSG\",\"4747\"]]"); - p = add_epsg_def (filter, first, last, 4748, "epsg", 4748, - "Vanua Levu 1915"); - add_proj4text (p, 0, - "+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51"); - add_proj4text (p, 1, - ",391,-36,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Vanua Levu 1915\",DATUM[\"Vanua_Levu_1915\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"Clarke 1880 (international foot)\",6378306.3696,"); - add_srs_wkt (p, 2, - "293.4663076556361,AUTHORITY[\"EPSG\",\"7055\"]],TOWGS84["); - add_srs_wkt (p, 3, - "51,391,-36,0,0,0,0],AUTHORITY[\"EPSG\",\"6748\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4748\"]]"); - p = add_epsg_def (filter, first, last, 4749, "epsg", 4749, - "RGNC91-93"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RGNC91-93\",DATUM[\"Reseau_Geodesique_de_Nouvel"); - add_srs_wkt (p, 1, - "le_Caledonie_91_93\",SPHEROID[\"GRS 1980\",6378137,298.2"); - add_srs_wkt (p, 2, - "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); - add_srs_wkt (p, 3, - ",0,0],AUTHORITY[\"EPSG\",\"6749\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4749\"]]"); - p = add_epsg_def (filter, first, last, 4750, "epsg", 4750, - "ST87 Ouvea"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=-56.263,16.136,-22.8"); - add_proj4text (p, 1, - "56,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"ST87 Ouvea\",DATUM[\"ST87_Ouvea\",SPHEROID[\"WG"); - add_srs_wkt (p, 1, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 2, - "]],TOWGS84[-56.263,16.136,-22.856,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6750\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4750\"]]"); - p = add_epsg_def (filter, first, last, 4751, "epsg", 4751, - "Kertau (RSO)"); - add_proj4text (p, 0, - "+proj=longlat +a=6377295.664 +b=6356094.667915204 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Kertau (RSO)\",DATUM[\"Kertau_RSO\",SPHEROID[\""); - add_srs_wkt (p, 1, - "Everest 1830 (RSO 1969)\",6377295.664,300.8017,AUTHORITY"); - add_srs_wkt (p, 2, - "[\"EPSG\",\"7056\"]],AUTHORITY[\"EPSG\",\"6751\"]],PRIME"); - add_srs_wkt (p, 3, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 4, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"4751\"]]"); - p = add_epsg_def (filter, first, last, 4752, "epsg", 4752, - "Viti Levu 1912"); - add_proj4text (p, 0, - "+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51"); - add_proj4text (p, 1, - ",391,-36,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Viti Levu 1912\",DATUM[\"Viti_Levu_1912\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"Clarke 1880 (international foot)\",6378306.3696,29"); - add_srs_wkt (p, 2, - "3.4663076556361,AUTHORITY[\"EPSG\",\"7055\"]],TOWGS84[51"); - add_srs_wkt (p, 3, - ",391,-36,0,0,0,0],AUTHORITY[\"EPSG\",\"6752\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4752\"]]"); - p = add_epsg_def (filter, first, last, 4753, "epsg", 4753, - "fk89"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"fk89\",DATUM[\"fk89\",SPHEROID[\"International "); - add_srs_wkt (p, 1, - "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"6753\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4753\""); - add_srs_wkt (p, 5, - "]]"); - p = add_epsg_def (filter, first, last, 4754, "epsg", 4754, - "LGD2006"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-208.406,-109.878,-2."); - add_proj4text (p, 1, - "5764,0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"LGD2006\",DATUM[\"Libyan_Geodetic_Datum_2006\","); - add_srs_wkt (p, 1, - "SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7022\"]],TOWGS84[-208.406,-109.878,-2.5764,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6754\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4754\"]]"); - p = add_epsg_def (filter, first, last, 4755, "epsg", 4755, - "DGN95"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"DGN95\",DATUM[\"Datum_Geodesi_Nasional_1995\",S"); - add_srs_wkt (p, 1, - "PHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6755\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4755\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_24.c b/src/spatialite/src/srsinit/epsg_inlined_24.c deleted file mode 100644 index 086d342..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_24.c +++ /dev/null @@ -1,2800 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_24 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 4756, "epsg", 4756, - "VN-2000"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=-192.873,-39.382,-11"); - add_proj4text (p, 1, - "1.202,-0.00205,-0.0005,0.00335,0.0188 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"VN-2000\",DATUM[\"Vietnam_2000\",SPHEROID[\"WGS"); - add_srs_wkt (p, 1, - " 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]"); - add_srs_wkt (p, 2, - "],TOWGS84[-192.873,-39.382,-111.202,-0.00205,-0.0005,0.0"); - add_srs_wkt (p, 3, - "0335,0.0188],AUTHORITY[\"EPSG\",\"6756\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4756\"]]"); - p = add_epsg_def (filter, first, last, 4757, "epsg", 4757, - "SVY21"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"SVY21\",DATUM[\"SVY21\",SPHEROID[\"WGS 84\",637"); - add_srs_wkt (p, 1, - "8137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"6757\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4757\""); - add_srs_wkt (p, 5, - "]]"); - p = add_epsg_def (filter, first, last, 4758, "epsg", 4758, - "JAD2001"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"JAD2001\",DATUM[\"Jamaica_2001\",SPHEROID[\"WGS"); - add_srs_wkt (p, 1, - " 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]"); - add_srs_wkt (p, 2, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6758\"]],P"); - add_srs_wkt (p, 3, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 4, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 5, - "\"]],AUTHORITY[\"EPSG\",\"4758\"]]"); - p = add_epsg_def (filter, first, last, 4759, "epsg", 4759, - "NAD83(NSRS2007)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatia"); - add_srs_wkt (p, 1, - "l_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,"); - add_srs_wkt (p, 2, - "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4759\"]]"); - p = add_epsg_def (filter, first, last, 4760, "epsg", 4760, - "WGS 66"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS66 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"WGS 66\",DATUM[\"World_Geodetic_System_1966\",S"); - add_srs_wkt (p, 1, - "PHEROID[\"NWL 9D\",6378145,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 2, - "025\"]],AUTHORITY[\"EPSG\",\"6760\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 3, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 4, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"4760\"]]"); - p = add_epsg_def (filter, first, last, 4761, "epsg", 4761, - "HTRS96"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"HTRS96\",DATUM[\"Croatian_Terrestrial_Reference"); - add_srs_wkt (p, 1, - "_System\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 2, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"6761\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4761"); - add_srs_wkt (p, 6, - "\"]]"); - p = add_epsg_def (filter, first, last, 4762, "epsg", 4762, - "BDA2000"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"BDA2000\",DATUM[\"Bermuda_2000\",SPHEROID[\"WGS"); - add_srs_wkt (p, 1, - " 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]"); - add_srs_wkt (p, 2, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6762\"]],P"); - add_srs_wkt (p, 3, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 4, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 5, - "\"]],AUTHORITY[\"EPSG\",\"4762\"]]"); - p = add_epsg_def (filter, first, last, 4763, "epsg", 4763, - "Pitcairn 2006"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Pitcairn 2006\",DATUM[\"Pitcairn_2006\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"676"); - add_srs_wkt (p, 3, - "3\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4763\"]]"); - p = add_epsg_def (filter, first, last, 4764, "epsg", 4764, - "RSRGD2000"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RSRGD2000\",DATUM[\"Ross_Sea_Region_Geodetic_Da"); - add_srs_wkt (p, 1, - "tum_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"6764\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"476"); - add_srs_wkt (p, 6, - "4\"]]"); - p = add_epsg_def (filter, first, last, 4765, "epsg", 4765, - "Slovenia 1996"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Slovenia 1996\",DATUM[\"Slovenia_Geodetic_Datum"); - add_srs_wkt (p, 1, - "_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"6765\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4765\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 4766, "epsg", 4766, - "New Beijing / 3-degree Gauss-Kruger zone 30"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 30\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",90],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",30500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 11, - "NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4766\"]]"); - p = add_epsg_def (filter, first, last, 4767, "epsg", 4767, - "New Beijing / 3-degree Gauss-Kruger zone 31"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 31\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",93],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",31500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 11, - "NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4767\"]]"); - p = add_epsg_def (filter, first, last, 4768, "epsg", 4768, - "New Beijing / 3-degree Gauss-Kruger zone 32"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 32\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",96],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",32500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 11, - "NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4768\"]]"); - p = add_epsg_def (filter, first, last, 4769, "epsg", 4769, - "New Beijing / 3-degree Gauss-Kruger zone 33"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 33\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",99],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",33500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 11, - "NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4769\"]]"); - p = add_epsg_def (filter, first, last, 4770, "epsg", 4770, - "New Beijing / 3-degree Gauss-Kruger zone 34"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 34\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",102],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",34500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 11, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4770\"]]"); - p = add_epsg_def (filter, first, last, 4771, "epsg", 4771, - "New Beijing / 3-degree Gauss-Kruger zone 35"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 35\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",105],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",35500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 11, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4771\"]]"); - p = add_epsg_def (filter, first, last, 4772, "epsg", 4772, - "New Beijing / 3-degree Gauss-Kruger zone 36"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 36\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",108],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",36500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 11, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4772\"]]"); - p = add_epsg_def (filter, first, last, 4773, "epsg", 4773, - "New Beijing / 3-degree Gauss-Kruger zone 37"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 37\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",111],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",37500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 11, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4773\"]]"); - p = add_epsg_def (filter, first, last, 4774, "epsg", 4774, - "New Beijing / 3-degree Gauss-Kruger zone 38"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 38\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",114],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",38500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 11, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4774\"]]"); - p = add_epsg_def (filter, first, last, 4775, "epsg", 4775, - "New Beijing / 3-degree Gauss-Kruger zone 39"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 39\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",117],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",39500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 11, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4775\"]]"); - p = add_epsg_def (filter, first, last, 4776, "epsg", 4776, - "New Beijing / 3-degree Gauss-Kruger zone 40"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 40\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",120],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",40500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 11, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4776\"]]"); - p = add_epsg_def (filter, first, last, 4777, "epsg", 4777, - "New Beijing / 3-degree Gauss-Kruger zone 41"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 41\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",123],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",41500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 11, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4777\"]]"); - p = add_epsg_def (filter, first, last, 4778, "epsg", 4778, - "New Beijing / 3-degree Gauss-Kruger zone 42"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 42\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",126],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",42500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 11, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4778\"]]"); - p = add_epsg_def (filter, first, last, 4779, "epsg", 4779, - "New Beijing / 3-degree Gauss-Kruger zone 43"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 43\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",129],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",43500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 11, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4779\"]]"); - p = add_epsg_def (filter, first, last, 4780, "epsg", 4780, - "New Beijing / 3-degree Gauss-Kruger zone 44"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 44\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",132],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",44500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 11, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4780\"]]"); - p = add_epsg_def (filter, first, last, 4781, "epsg", 4781, - "New Beijing / 3-degree Gauss-Kruger zone 45"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 45\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",135],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",45500000],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 11, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4781\"]]"); - p = add_epsg_def (filter, first, last, 4782, "epsg", 4782, - "New Beijing / 3-degree Gauss-Kruger CM 75E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 75E\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); - add_srs_wkt (p, 2, - "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",75],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4782\"]]"); - p = add_epsg_def (filter, first, last, 4783, "epsg", 4783, - "New Beijing / 3-degree Gauss-Kruger CM 78E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 78E\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); - add_srs_wkt (p, 2, - "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",78],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4783\"]]"); - p = add_epsg_def (filter, first, last, 4784, "epsg", 4784, - "New Beijing / 3-degree Gauss-Kruger CM 81E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 81E\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); - add_srs_wkt (p, 2, - "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",81],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4784\"]]"); - p = add_epsg_def (filter, first, last, 4785, "epsg", 4785, - "New Beijing / 3-degree Gauss-Kruger CM 84E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 84E\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); - add_srs_wkt (p, 2, - "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",84],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4785\"]]"); - p = add_epsg_def (filter, first, last, 4786, "epsg", 4786, - "New Beijing / 3-degree Gauss-Kruger CM 87E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 87E\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); - add_srs_wkt (p, 2, - "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",87],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4786\"]]"); - p = add_epsg_def (filter, first, last, 4787, "epsg", 4787, - "New Beijing / 3-degree Gauss-Kruger CM 90E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 90E\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); - add_srs_wkt (p, 2, - "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",90],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4787\"]]"); - p = add_epsg_def (filter, first, last, 4788, "epsg", 4788, - "New Beijing / 3-degree Gauss-Kruger CM 93E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 93E\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); - add_srs_wkt (p, 2, - "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",93],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4788\"]]"); - p = add_epsg_def (filter, first, last, 4789, "epsg", 4789, - "New Beijing / 3-degree Gauss-Kruger CM 96E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 96E\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); - add_srs_wkt (p, 2, - "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",96],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4789\"]]"); - p = add_epsg_def (filter, first, last, 4790, "epsg", 4790, - "New Beijing / 3-degree Gauss-Kruger CM 99E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 99E\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); - add_srs_wkt (p, 2, - "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",99],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 9, - "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 11, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4790\"]]"); - p = add_epsg_def (filter, first, last, 4791, "epsg", 4791, - "New Beijing / 3-degree Gauss-Kruger CM 102E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 102E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",102],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 11, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4791\"]]"); - p = add_epsg_def (filter, first, last, 4792, "epsg", 4792, - "New Beijing / 3-degree Gauss-Kruger CM 105E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 105E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",105],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 11, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4792\"]]"); - p = add_epsg_def (filter, first, last, 4793, "epsg", 4793, - "New Beijing / 3-degree Gauss-Kruger CM 108E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 108E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",108],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 11, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4793\"]]"); - p = add_epsg_def (filter, first, last, 4794, "epsg", 4794, - "New Beijing / 3-degree Gauss-Kruger CM 111E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 111E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",111],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 11, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4794\"]]"); - p = add_epsg_def (filter, first, last, 4795, "epsg", 4795, - "New Beijing / 3-degree Gauss-Kruger CM 114E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 114E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",114],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 11, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4795\"]]"); - p = add_epsg_def (filter, first, last, 4796, "epsg", 4796, - "New Beijing / 3-degree Gauss-Kruger CM 117E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 117E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",117],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 11, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4796\"]]"); - p = add_epsg_def (filter, first, last, 4797, "epsg", 4797, - "New Beijing / 3-degree Gauss-Kruger CM 120E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 120E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",120],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 11, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4797\"]]"); - p = add_epsg_def (filter, first, last, 4798, "epsg", 4798, - "New Beijing / 3-degree Gauss-Kruger CM 123E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 123E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",123],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 11, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4798\"]]"); - p = add_epsg_def (filter, first, last, 4799, "epsg", 4799, - "New Beijing / 3-degree Gauss-Kruger CM 126E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 126E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",126],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 11, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4799\"]]"); - p = add_epsg_def (filter, first, last, 4800, "epsg", 4800, - "New Beijing / 3-degree Gauss-Kruger CM 129E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 129E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",129],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 11, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4800\"]]"); - p = add_epsg_def (filter, first, last, 4801, "epsg", 4801, - "Bern 1898 (Bern)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=674.4,15.1,405.3,0,"); - add_proj4text (p, 1, - "0,0,0 +pm=bern +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Bern 1898 (Bern)\",DATUM[\"CH1903_Bern\",SPHERO"); - add_srs_wkt (p, 1, - "ID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"E"); - add_srs_wkt (p, 2, - "PSG\",\"7004\"]],TOWGS84[674.4,15.1,405.3,0,0,0,0],AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"6801\"]],PRIMEM[\"Bern\",7.4395833333333"); - add_srs_wkt (p, 4, - "33,AUTHORITY[\"EPSG\",\"8907\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4801\"]]"); - p = add_epsg_def (filter, first, last, 4802, "epsg", 4802, - "Bogota 1975 (Bogota)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0 "); - add_proj4text (p, 1, - "+pm=bogota +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Bogota 1975 (Bogota)\",DATUM[\"Bogota_1975_Bogo"); - add_srs_wkt (p, 1, - "ta\",SPHEROID[\"International 1924\",6378388,297,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7022\"]],TOWGS84[307,304,-318,0,0,0,0],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"6802\"]],PRIMEM[\"Bogota\",-74.0809166"); - add_srs_wkt (p, 4, - "6666667,AUTHORITY[\"EPSG\",\"8904\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4802\"]]"); - p = add_epsg_def (filter, first, last, 4803, "epsg", 4803, - "Lisbon (Lisbon)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-304.046,-60.576,103."); - add_proj4text (p, 1, - "64,0,0,0,0 +pm=lisbon +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Lisbon (Lisbon)\",DATUM[\"Lisbon_1937_Lisbon\","); - add_srs_wkt (p, 1, - "SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7022\"]],TOWGS84[-304.046,-60.576,103.64,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6803\"]],PRIMEM[\"Lisbon\",-9.13"); - add_srs_wkt (p, 4, - "1906111111112,AUTHORITY[\"EPSG\",\"8902\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4803\"]]"); - p = add_epsg_def (filter, first, last, 4804, "epsg", 4804, - "Makassar (Jakarta)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.7"); - add_proj4text (p, 1, - "6,0,0,0,0 +pm=jakarta +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Makassar (Jakarta)\",DATUM[\"Makassar_Jakarta\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7004\"]],TOWGS84[-587.8,519.75,145.76,0,0"); - add_srs_wkt (p, 3, - ",0,0],AUTHORITY[\"EPSG\",\"6804\"]],PRIMEM[\"Jakarta\",1"); - add_srs_wkt (p, 4, - "06.8077194444444,AUTHORITY[\"EPSG\",\"8908\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4804\"]]"); - p = add_epsg_def (filter, first, last, 4805, "epsg", 4805, - "MGI (Ferro)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=682,-203,480,0,0,0,"); - add_proj4text (p, 1, - "0 +pm=ferro +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"MGI (Ferro)\",DATUM[\"Militar_Geographische_Ins"); - add_srs_wkt (p, 1, - "titut_Ferro\",SPHEROID[\"Bessel 1841\",6377397.155,299.1"); - add_srs_wkt (p, 2, - "528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,48"); - add_srs_wkt (p, 3, - "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\""); - add_srs_wkt (p, 4, - ",-17.66666666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4805\"]]"); - p = add_epsg_def (filter, first, last, 4806, "epsg", 4806, - "Monte Mario (Rome)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.9"); - add_proj4text (p, 1, - "71,-2.917,0.714,-11.68 +pm=rome +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Monte Mario (Rome)\",DATUM[\"Monte_Mario_Rome\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); - add_srs_wkt (p, 2, - "EPSG\",\"7022\"]],TOWGS84[-104.1,-49.1,-9.9,0.971,-2.917"); - add_srs_wkt (p, 3, - ",0.714,-11.68],AUTHORITY[\"EPSG\",\"6806\"]],PRIMEM[\"Ro"); - add_srs_wkt (p, 4, - "me\",12.45233333333333,AUTHORITY[\"EPSG\",\"8906\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4806\"]]"); - p = add_epsg_def (filter, first, last, 4807, "epsg", 4807, - "NTF (Paris)"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,"); - add_proj4text (p, 1, - "320,0,0,0,0 +pm=paris +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Fr"); - add_srs_wkt (p, 1, - "ancaise_Paris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2"); - add_srs_wkt (p, 2, - ",293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-168,-60,320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRI"); - add_srs_wkt (p, 4, - "MEM[\"Paris\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"grad\",0.01570796326794897,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "05\"]],AUTHORITY[\"EPSG\",\"4807\"]]"); - p = add_epsg_def (filter, first, last, 4808, "epsg", 4808, - "Padang (Jakarta)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +pm=jakarta +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Padang (Jakarta)\",DATUM[\"Padang_1884_Jakarta\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6808\"]],PR"); - add_srs_wkt (p, 3, - "IMEM[\"Jakarta\",106.8077194444444,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8908\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4808\"]]"); - p = add_epsg_def (filter, first, last, 4809, "epsg", 4809, - "Belge 1950 (Brussels)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +pm=brussels +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Belge 1950 (Brussels)\",DATUM[\"Reseau_National"); - add_srs_wkt (p, 1, - "_Belge_1950_Brussels\",SPHEROID[\"International 1924\",6"); - add_srs_wkt (p, 2, - "378388,297,AUTHORITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"6809\"]],PRIMEM[\"Brussels\",4.367975,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8910\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4809\"]]"); - p = add_epsg_def (filter, first, last, 4810, "epsg", 4810, - "Tananarive (Paris)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0"); - add_proj4text (p, 1, - " +pm=paris +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Tananarive (Paris)\",DATUM[\"Tananarive_1925_Pa"); - add_srs_wkt (p, 1, - "ris\",SPHEROID[\"International 1924\",6378388,297,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7022\"]],TOWGS84[-189,-242,-91,0,0,0,0],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6810\"]],PRIMEM[\"Paris\",2.33722917"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0.015707963"); - add_srs_wkt (p, 5, - "26794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4810\"]]"); - p = add_epsg_def (filter, first, last, 4811, "epsg", 4811, - "Voirol 1875 (Paris)"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,"); - add_proj4text (p, 1, - "227,0,0,0,0 +pm=paris +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Voirol 1875 (Paris)\",DATUM[\"Voirol_1875_Paris"); - add_srs_wkt (p, 1, - "\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.46602129"); - add_srs_wkt (p, 2, - "36269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-73,-247,227"); - add_srs_wkt (p, 3, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6811\"]],PRIMEM[\"Paris\""); - add_srs_wkt (p, 4, - ",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\","); - add_srs_wkt (p, 5, - "0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4811\"]]"); - p = add_epsg_def (filter, first, last, 4812, "epsg", 4812, - "New Beijing / 3-degree Gauss-Kruger CM 132E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 132E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",132],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 11, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4812\"]]"); - p = add_epsg_def (filter, first, last, 4813, "epsg", 4813, - "Batavia (Jakarta)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=-377,681,-50,0,0,0,"); - add_proj4text (p, 1, - "0 +pm=jakarta +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Batavia (Jakarta)\",DATUM[\"Batavia_Jakarta\",S"); - add_srs_wkt (p, 1, - "PHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7004\"]],TOWGS84[-377,681,-50,0,0,0,0],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"6813\"]],PRIMEM[\"Jakarta\",106.8077194"); - add_srs_wkt (p, 4, - "444444,AUTHORITY[\"EPSG\",\"8908\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 5, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"4813\"]]"); - p = add_epsg_def (filter, first, last, 4814, "epsg", 4814, - "RT38 (Stockholm)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +pm=stockholm +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RT38 (Stockholm)\",DATUM[\"Stockholm_1938_Stock"); - add_srs_wkt (p, 1, - "holm\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6814\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Stockholm\",18.05827777777778,AUTHORITY[\"EP"); - add_srs_wkt (p, 4, - "SG\",\"8911\"]],UNIT[\"degree\",0.0174532925199433,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4814\"]]"); - p = add_epsg_def (filter, first, last, 4815, "epsg", 4815, - "Greek (Athens)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +pm=athens +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Greek (Athens)\",DATUM[\"Greek_Athens\",SPHEROI"); - add_srs_wkt (p, 1, - "D[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EP"); - add_srs_wkt (p, 2, - "SG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6815\"]],PRIMEM[\"A"); - add_srs_wkt (p, 3, - "thens\",23.7163375,AUTHORITY[\"EPSG\",\"8912\"]],UNIT[\""); - add_srs_wkt (p, 4, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 5, - "],AUTHORITY[\"EPSG\",\"4815\"]]"); - p = add_epsg_def (filter, first, last, 4816, "epsg", 4816, - "Carthage (Paris)"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-263,6,43"); - add_proj4text (p, 1, - "1,0,0,0,0 +pm=paris +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Carthage (Paris)\",DATUM[\"Carthage_Paris\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936269,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-263,6,431,0,0,0,0"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6816\"]],PRIMEM[\"Paris\",2.33722"); - add_srs_wkt (p, 4, - "917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0.015707"); - add_srs_wkt (p, 5, - "96326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4816\"]]"); - p = add_epsg_def (filter, first, last, 4817, "epsg", 4817, - "NGO 1948 (Oslo)"); - add_proj4text (p, 0, - "+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs"); - add_proj4text (p, 1, - "84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "GEOGCS[\"NGO 1948 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHER"); - add_srs_wkt (p, 1, - "OID[\"Bessel Modified\",6377492.018,299.1528128,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7005\"]],TOWGS84[278.3,93,474.5,7.889,0.05,"); - add_srs_wkt (p, 3, - "-6.61,6.21],AUTHORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\""); - add_srs_wkt (p, 4, - ",10.72291666666667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4817\"]]"); - p = add_epsg_def (filter, first, last, 4818, "epsg", 4818, - "S-JTSK (Ferro)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=589,76,480,0,0,0,0 "); - add_proj4text (p, 1, - "+pm=ferro +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"S-JTSK (Ferro)\",DATUM[\"System_Jednotne_Trigon"); - add_srs_wkt (p, 1, - "ometricke_Site_Katastralni_Ferro\",SPHEROID[\"Bessel 184"); - add_srs_wkt (p, 2, - "1\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[589,76,480,0,0,0,0],AUTHORITY[\"EPSG\",\"6818\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Ferro\",-17.66666666666667,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8909\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4818\"]]"); - p = add_epsg_def (filter, first, last, 4819, "epsg", 4819, - "Nord Sahara 1959 (Paris)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk80 +towgs84=-186,-93,310,0,0,0,"); - add_proj4text (p, 1, - "0 +pm=paris +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Nord Sahara 1959 (Paris)\",DATUM[\"Nord_Sahara_"); - add_srs_wkt (p, 1, - "1959_Paris\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,"); - add_srs_wkt (p, 2, - "293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-186,-93,3"); - add_srs_wkt (p, 3, - "10,0,0,0,0],AUTHORITY[\"EPSG\",\"6819\"]],PRIMEM[\"Paris"); - add_srs_wkt (p, 4, - "\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\""); - add_srs_wkt (p, 5, - ",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHO"); - add_srs_wkt (p, 6, - "RITY[\"EPSG\",\"4819\"]]"); - p = add_epsg_def (filter, first, last, 4820, "epsg", 4820, - "Segara (Jakarta)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0"); - add_proj4text (p, 1, - " +pm=jakarta +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Segara (Jakarta)\",DATUM[\"Gunung_Segara_Jakart"); - add_srs_wkt (p, 1, - "a\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7004\"]],TOWGS84[-403,684,41,0,0,0,0],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6820\"]],PRIMEM[\"Jakarta\",106.807"); - add_srs_wkt (p, 4, - "7194444444,AUTHORITY[\"EPSG\",\"8908\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4820\"]]"); - p = add_epsg_def (filter, first, last, 4821, "epsg", 4821, - "Voirol 1879 (Paris)"); - add_proj4text (p, 0, - "+proj=longlat +a=6378249.2 +b=6356515 +pm=paris +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Voirol 1879 (Paris)\",DATUM[\"Voirol_1879_Paris"); - add_srs_wkt (p, 1, - "\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.46602129"); - add_srs_wkt (p, 2, - "36269,AUTHORITY[\"EPSG\",\"7011\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "6821\"]],PRIMEM[\"Paris\",2.33722917,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"8903\"]],UNIT[\"grad\",0.01570796326794897,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9105\"]],AUTHORITY[\"EPSG\",\"4821\"]]"); - p = add_epsg_def (filter, first, last, 4822, "epsg", 4822, - "New Beijing / 3-degree Gauss-Kruger CM 135E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 135E\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); - add_srs_wkt (p, 2, - "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",135],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 11, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"4822\"]]"); - p = add_epsg_def (filter, first, last, 4823, "epsg", 4823, - "Sao Tome"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Sao Tome\",DATUM[\"Sao_Tome\",SPHEROID[\"Intern"); - add_srs_wkt (p, 1, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"1044\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 4, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"4823\"]]"); - p = add_epsg_def (filter, first, last, 4824, "epsg", 4824, - "Principe"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Principe\",DATUM[\"Principe\",SPHEROID[\"Intern"); - add_srs_wkt (p, 1, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"1046\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 4, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"4824\"]]"); - p = add_epsg_def (filter, first, last, 4826, "epsg", 4826, - "WGS 84 / Cape Verde National"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=15 +lat_2=16.66666666666667 +lat_0=15.8"); - add_proj4text (p, 1, - "3333333333333 +lon_0=-24 +x_0=161587.83 +y_0=128511.202 "); - add_proj4text (p, 2, - "+datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / Cape Verde National\",GEOGCS[\"WGS 84\""); - add_srs_wkt (p, 1, - ",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2572"); - add_srs_wkt (p, 2, - "23563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 4, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION["); - add_srs_wkt (p, 6, - "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 7, - "rallel_1\",15],PARAMETER[\"standard_parallel_2\",16.6666"); - add_srs_wkt (p, 8, - "6666666667],PARAMETER[\"latitude_of_origin\",15.83333333"); - add_srs_wkt (p, 9, - "333333],PARAMETER[\"central_meridian\",-24],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",161587.83],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 11, - "128511.202],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"M\",EAST],AXIS[\"P\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"4826\"]]"); - p = add_epsg_def (filter, first, last, 4839, "epsg", 4839, - "ETRS89 / LCC Germany (N-E)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.66666666666666 +lat_2=53.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=51 +lon_0=10.5 +x_0=0 +y_0=0 +ellps=GRS80 +to"); - add_proj4text (p, 2, - "wgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / LCC Germany (N-E)\",GEOGCS[\"ETRS89\","); - add_srs_wkt (p, 1, - "DATUM[\"European_Terrestrial_Reference_System_1989\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_1\",48.66666666666666],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 9, - "rallel_2\",53.66666666666666],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 10, - "igin\",51],PARAMETER[\"central_meridian\",10.5],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_easting\",0],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 12, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Nor"); - add_srs_wkt (p, 13, - "thing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"4839\"]]"); - p = add_epsg_def (filter, first, last, 4855, "epsg", 4855, - "ETRS89 / NTM zone 5 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=5.5 +k=1 +x_0=100000 +y_0=10"); - add_proj4text (p, 1, - "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 5 (deprecated)\",GEOGCS[\"ETR"); - add_srs_wkt (p, 1, - "S89\",DATUM[\"European_Terrestrial_Reference_System_1989"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",5.5],PARAME"); - add_srs_wkt (p, 9, - "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",1000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4855\"]]"); - p = add_epsg_def (filter, first, last, 4856, "epsg", 4856, - "ETRS89 / NTM zone 6 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=6.5 +k=1 +x_0=100000 +y_0=10"); - add_proj4text (p, 1, - "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 6 (deprecated)\",GEOGCS[\"ETR"); - add_srs_wkt (p, 1, - "S89\",DATUM[\"European_Terrestrial_Reference_System_1989"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",6.5],PARAME"); - add_srs_wkt (p, 9, - "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",1000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4856\"]]"); - p = add_epsg_def (filter, first, last, 4857, "epsg", 4857, - "ETRS89 / NTM zone 7 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=7.5 +k=1 +x_0=100000 +y_0=10"); - add_proj4text (p, 1, - "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 7 (deprecated)\",GEOGCS[\"ETR"); - add_srs_wkt (p, 1, - "S89\",DATUM[\"European_Terrestrial_Reference_System_1989"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",7.5],PARAME"); - add_srs_wkt (p, 9, - "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",1000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4857\"]]"); - p = add_epsg_def (filter, first, last, 4858, "epsg", 4858, - "ETRS89 / NTM zone 8 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=8.5 +k=1 +x_0=100000 +y_0=10"); - add_proj4text (p, 1, - "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 8 (deprecated)\",GEOGCS[\"ETR"); - add_srs_wkt (p, 1, - "S89\",DATUM[\"European_Terrestrial_Reference_System_1989"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",8.5],PARAME"); - add_srs_wkt (p, 9, - "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",1000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4858\"]]"); - p = add_epsg_def (filter, first, last, 4859, "epsg", 4859, - "ETRS89 / NTM zone 9 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9.5 +k=1 +x_0=100000 +y_0=10"); - add_proj4text (p, 1, - "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 9 (deprecated)\",GEOGCS[\"ETR"); - add_srs_wkt (p, 1, - "S89\",DATUM[\"European_Terrestrial_Reference_System_1989"); - add_srs_wkt (p, 2, - "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",9.5],PARAME"); - add_srs_wkt (p, 9, - "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",1000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4859\"]]"); - p = add_epsg_def (filter, first, last, 4860, "epsg", 4860, - "ETRS89 / NTM zone 10 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=10.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 10 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",10.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4860\"]]"); - p = add_epsg_def (filter, first, last, 4861, "epsg", 4861, - "ETRS89 / NTM zone 11 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=11.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 11 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",11.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4861\"]]"); - p = add_epsg_def (filter, first, last, 4862, "epsg", 4862, - "ETRS89 / NTM zone 12 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 12 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",12.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4862\"]]"); - p = add_epsg_def (filter, first, last, 4863, "epsg", 4863, - "ETRS89 / NTM zone 13 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 13 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",13.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4863\"]]"); - p = add_epsg_def (filter, first, last, 4864, "epsg", 4864, - "ETRS89 / NTM zone 14 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=14.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 14 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",14.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4864\"]]"); - p = add_epsg_def (filter, first, last, 4865, "epsg", 4865, - "ETRS89 / NTM zone 15 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 15 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",15.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4865\"]]"); - p = add_epsg_def (filter, first, last, 4866, "epsg", 4866, - "ETRS89 / NTM zone 16 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 16 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",16.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4866\"]]"); - p = add_epsg_def (filter, first, last, 4867, "epsg", 4867, - "ETRS89 / NTM zone 17 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=17.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 17 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",17.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4867\"]]"); - p = add_epsg_def (filter, first, last, 4868, "epsg", 4868, - "ETRS89 / NTM zone 18 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 18 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",18.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4868\"]]"); - p = add_epsg_def (filter, first, last, 4869, "epsg", 4869, - "ETRS89 / NTM zone 19 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=19.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 19 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",19.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4869\"]]"); - p = add_epsg_def (filter, first, last, 4870, "epsg", 4870, - "ETRS89 / NTM zone 20 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=20.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 20 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",20.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4870\"]]"); - p = add_epsg_def (filter, first, last, 4871, "epsg", 4871, - "ETRS89 / NTM zone 21 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 21 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",21.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4871\"]]"); - p = add_epsg_def (filter, first, last, 4872, "epsg", 4872, - "ETRS89 / NTM zone 22 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=22.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 22 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",22.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4872\"]]"); - p = add_epsg_def (filter, first, last, 4873, "epsg", 4873, - "ETRS89 / NTM zone 23 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=23.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 23 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",23.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4873\"]]"); - p = add_epsg_def (filter, first, last, 4874, "epsg", 4874, - "ETRS89 / NTM zone 24 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 24 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",24.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4874\"]]"); - p = add_epsg_def (filter, first, last, 4875, "epsg", 4875, - "ETRS89 / NTM zone 25 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=25.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 25 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",25.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4875\"]]"); - p = add_epsg_def (filter, first, last, 4876, "epsg", 4876, - "ETRS89 / NTM zone 26 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=26.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 26 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",26.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4876\"]]"); - p = add_epsg_def (filter, first, last, 4877, "epsg", 4877, - "ETRS89 / NTM zone 27 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 27 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",27.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4877\"]]"); - p = add_epsg_def (filter, first, last, 4878, "epsg", 4878, - "ETRS89 / NTM zone 28 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=28.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 28 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",28.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4878\"]]"); - p = add_epsg_def (filter, first, last, 4879, "epsg", 4879, - "ETRS89 / NTM zone 29 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=29.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 29 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",29.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4879\"]]"); - p = add_epsg_def (filter, first, last, 4880, "epsg", 4880, - "ETRS89 / NTM zone 30 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=30.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 30 (deprecated)\",GEOGCS[\"ET"); - add_srs_wkt (p, 1, - "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); - add_srs_wkt (p, 2, - "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",30.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"4880\"]]"); - p = add_epsg_def (filter, first, last, 4901, "epsg", 4901, - "ATF (Paris)"); - add_proj4text (p, 0, - "+proj=longlat +a=6376523 +b=6355862.933255573 +pm=2.3372"); - add_proj4text (p, 1, - "08333333333 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"ATF (Paris)\",DATUM[\"Ancienne_Triangulation_Fr"); - add_srs_wkt (p, 1, - "ancaise_Paris\",SPHEROID[\"Plessis 1817\",6376523,308.64"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7027\"]],AUTHORITY[\"EPSG\",\"6901"); - add_srs_wkt (p, 3, - "\"]],PRIMEM[\"Paris RGS\",2.337208333333333,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8914\"]],UNIT[\"grad\",0.01570796326794897,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"9105\"]],AUTHORITY[\"EPSG\",\"4901\"]]"); - p = add_epsg_def (filter, first, last, 4902, "epsg", 4902, - "NDG (Paris)"); - add_proj4text (p, 0, - "+proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NDG (Paris)\",DATUM[\"Nord_de_Guerre_Paris\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Plessis 1817\",6376523,308.64,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 2, - ",\"7027\"]],AUTHORITY[\"EPSG\",\"6902\"]],PRIMEM[\"Paris"); - add_srs_wkt (p, 3, - "\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\""); - add_srs_wkt (p, 4, - ",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"4902\"]]"); - p = add_epsg_def (filter, first, last, 4903, "epsg", 4903, - "Madrid 1870 (Madrid)"); - add_proj4text (p, 0, - "+proj=longlat +a=6378298.3 +b=6356657.142669562 +pm=madr"); - add_proj4text (p, 1, - "id +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Madrid 1870 (Madrid)\",DATUM[\"Madrid_1870_Madr"); - add_srs_wkt (p, 1, - "id\",SPHEROID[\"Struve 1860\",6378298.3,294.73,AUTHORITY"); - add_srs_wkt (p, 2, - "[\"EPSG\",\"7028\"]],AUTHORITY[\"EPSG\",\"6903\"]],PRIME"); - add_srs_wkt (p, 3, - "M[\"Madrid\",-3.687938888888889,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 4, - "5\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4903\"]]"); - p = add_epsg_def (filter, first, last, 4904, "epsg", 4904, - "Lisbon 1890 (Lisbon)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=508.088,-191.042,56"); - add_proj4text (p, 1, - "5.223,0,0,0,0 +pm=lisbon +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Lisbon 1890 (Lisbon)\",DATUM[\"Lisbon_1890_Lisb"); - add_srs_wkt (p, 1, - "on\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AU"); - add_srs_wkt (p, 2, - "THORITY[\"EPSG\",\"7004\"]],TOWGS84[508.088,-191.042,565"); - add_srs_wkt (p, 3, - ".223,0,0,0,0],AUTHORITY[\"EPSG\",\"6904\"]],PRIMEM[\"Lis"); - add_srs_wkt (p, 4, - "bon\",-9.131906111111112,AUTHORITY[\"EPSG\",\"8902\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4904\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_25.c b/src/spatialite/src/srsinit/epsg_inlined_25.c deleted file mode 100644 index ea2df26..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_25.c +++ /dev/null @@ -1,3310 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_25 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 5013, "epsg", 5013, - "PTRA08"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"PTRA08\",DATUM[\"Autonomous_Regions_of_Portugal"); - add_srs_wkt (p, 1, - "_2008\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"1041\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5013\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 5014, "epsg", 5014, - "PTRA08 / UTM zone 25N"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PTRA08 / UTM zone 25N\",GEOGCS[\"PTRA08\",DATUM"); - add_srs_wkt (p, 1, - "[\"Autonomous_Regions_of_Portugal_2008\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1041\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5013\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",-33],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"5014\"]]"); - p = add_epsg_def (filter, first, last, 5015, "epsg", 5015, - "PTRA08 / UTM zone 26N"); - add_proj4text (p, 0, - "+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PTRA08 / UTM zone 26N\",GEOGCS[\"PTRA08\",DATUM"); - add_srs_wkt (p, 1, - "[\"Autonomous_Regions_of_Portugal_2008\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1041\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5013\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",-27],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"5015\"]]"); - p = add_epsg_def (filter, first, last, 5016, "epsg", 5016, - "PTRA08 / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PTRA08 / UTM zone 28N\",GEOGCS[\"PTRA08\",DATUM"); - add_srs_wkt (p, 1, - "[\"Autonomous_Regions_of_Portugal_2008\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1041\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5013\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",-15],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"5016\"]]"); - p = add_epsg_def (filter, first, last, 5018, "epsg", 5018, - "Lisbon / Portuguese Grid New"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111"); - add_proj4text (p, 1, - "111112 +k=1 +x_0=0 +y_0=0 +ellps=intl +towgs84=-304.046,"); - add_proj4text (p, 2, - "-60.576,103.64,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Lisbon / Portuguese Grid New\",GEOGCS[\"Lisbon\""); - add_srs_wkt (p, 1, - ",DATUM[\"Lisbon_1937\",SPHEROID[\"International 1924\",6"); - add_srs_wkt (p, 2, - "378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-304.04"); - add_srs_wkt (p, 3, - "6,-60.576,103.64,0,0,0,0],AUTHORITY[\"EPSG\",\"6207\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4207\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",39.6666"); - add_srs_wkt (p, 8, - "6666666666],PARAMETER[\"central_meridian\",-8.1319061111"); - add_srs_wkt (p, 9, - "11112],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5018\"]]"); - p = add_epsg_def (filter, first, last, 5041, "epsg", 5041, - "WGS 84 / UPS North (E,N)"); - add_proj4text (p, 0, - "+proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0="); - add_proj4text (p, 1, - "2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UPS North (E,N)\",GEOGCS[\"WGS 84\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2572235"); - add_srs_wkt (p, 2, - "63,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"63"); - add_srs_wkt (p, 3, - "26\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"P"); - add_srs_wkt (p, 6, - "olar_Stereographic\"],PARAMETER[\"latitude_of_origin\",9"); - add_srs_wkt (p, 7, - "0],PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_f"); - add_srs_wkt (p, 8, - "actor\",0.994],PARAMETER[\"false_easting\",2000000],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_northing\",2000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 11, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"5041\"]]"); - p = add_epsg_def (filter, first, last, 5042, "epsg", 5042, - "WGS 84 / UPS South (E,N)"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_"); - add_proj4text (p, 1, - "0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UPS South (E,N)\",GEOGCS[\"WGS 84\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2572235"); - add_srs_wkt (p, 2, - "63,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"63"); - add_srs_wkt (p, 3, - "26\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"P"); - add_srs_wkt (p, 6, - "olar_Stereographic\"],PARAMETER[\"latitude_of_origin\",-"); - add_srs_wkt (p, 7, - "90],PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_"); - add_srs_wkt (p, 8, - "factor\",0.994],PARAMETER[\"false_easting\",2000000],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_northing\",2000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 10, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"5042\"]]"); - p = add_epsg_def (filter, first, last, 5048, "epsg", 5048, - "ETRS89 / TM35FIN(N,E)"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM35FIN(N,E)\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",27],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Eastin"); - add_srs_wkt (p, 12, - "g\",EAST],AUTHORITY[\"EPSG\",\"5048\"]]"); - p = add_epsg_def (filter, first, last, 5069, "epsg", 5069, - "NAD27 / Conus Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +"); - add_proj4text (p, 1, - "x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Conus Albers\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],PARAMET"); - add_srs_wkt (p, 7, - "ER[\"standard_parallel_1\",29.5],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 8, - "rallel_2\",45.5],PARAMETER[\"latitude_of_center\",23],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"longitude_of_center\",-96],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5069\"]]"); - p = add_epsg_def (filter, first, last, 5070, "epsg", 5070, - "NAD83 / Conus Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +"); - add_proj4text (p, 1, - "x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Conus Albers\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Albers_Conic_Equal_A"); - add_srs_wkt (p, 7, - "rea\"],PARAMETER[\"standard_parallel_1\",29.5],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_2\",45.5],PARAMETER[\"latitude_of_c"); - add_srs_wkt (p, 9, - "enter\",23],PARAMETER[\"longitude_of_center\",-96],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",0],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 11, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5070\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 5071, "epsg", 5071, - "NAD83(HARN) / Conus Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +"); - add_proj4text (p, 1, - "x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Conus Albers\",GEOGCS[\"NAD83(HAR"); - add_srs_wkt (p, 1, - "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Albers_Conic_Equal_Area\"],PARAMETER[\"standard_par"); - add_srs_wkt (p, 8, - "allel_1\",29.5],PARAMETER[\"standard_parallel_2\",45.5],"); - add_srs_wkt (p, 9, - "PARAMETER[\"latitude_of_center\",23],PARAMETER[\"longitu"); - add_srs_wkt (p, 10, - "de_of_center\",-96],PARAMETER[\"false_easting\",0],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"5071\"]]"); - p = add_epsg_def (filter, first, last, 5072, "epsg", 5072, - "NAD83(NSRS2007) / Conus Albers"); - add_proj4text (p, 0, - "+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +"); - add_proj4text (p, 1, - "x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Conus Albers\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); - add_srs_wkt (p, 2, - "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); - add_srs_wkt (p, 7, - "59\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",29.5],PARAMETER[\"standard_para"); - add_srs_wkt (p, 9, - "llel_2\",45.5],PARAMETER[\"latitude_of_center\",23],PARA"); - add_srs_wkt (p, 10, - "METER[\"longitude_of_center\",-96],PARAMETER[\"false_eas"); - add_srs_wkt (p, 11, - "ting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 12, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"5072\"]]"); - p = add_epsg_def (filter, first, last, 5105, "epsg", 5105, - "ETRS89 / NTM zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=5.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 5\",GEOGCS[\"ETRS89\",DATUM[\""); - add_srs_wkt (p, 1, - "European_Terrestrial_Reference_System_1989\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",58],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",5.5],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",1],PARAMETER[\"false_easting\",100000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Eastin"); - add_srs_wkt (p, 12, - "g\",EAST],AUTHORITY[\"EPSG\",\"5105\"]]"); - p = add_epsg_def (filter, first, last, 5106, "epsg", 5106, - "ETRS89 / NTM zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=6.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 6\",GEOGCS[\"ETRS89\",DATUM[\""); - add_srs_wkt (p, 1, - "European_Terrestrial_Reference_System_1989\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",58],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",6.5],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",1],PARAMETER[\"false_easting\",100000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Eastin"); - add_srs_wkt (p, 12, - "g\",EAST],AUTHORITY[\"EPSG\",\"5106\"]]"); - p = add_epsg_def (filter, first, last, 5107, "epsg", 5107, - "ETRS89 / NTM zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=7.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 7\",GEOGCS[\"ETRS89\",DATUM[\""); - add_srs_wkt (p, 1, - "European_Terrestrial_Reference_System_1989\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",58],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",7.5],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",1],PARAMETER[\"false_easting\",100000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Eastin"); - add_srs_wkt (p, 12, - "g\",EAST],AUTHORITY[\"EPSG\",\"5107\"]]"); - p = add_epsg_def (filter, first, last, 5108, "epsg", 5108, - "ETRS89 / NTM zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=8.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 8\",GEOGCS[\"ETRS89\",DATUM[\""); - add_srs_wkt (p, 1, - "European_Terrestrial_Reference_System_1989\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",58],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",8.5],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",1],PARAMETER[\"false_easting\",100000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Eastin"); - add_srs_wkt (p, 12, - "g\",EAST],AUTHORITY[\"EPSG\",\"5108\"]]"); - p = add_epsg_def (filter, first, last, 5109, "epsg", 5109, - "ETRS89 / NTM zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=9.5 +k=1 +x_0=100000 +y_0=1"); - add_proj4text (p, 1, - "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 9\",GEOGCS[\"ETRS89\",DATUM[\""); - add_srs_wkt (p, 1, - "European_Terrestrial_Reference_System_1989\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",58],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",9.5],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",1],PARAMETER[\"false_easting\",100000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Eastin"); - add_srs_wkt (p, 12, - "g\",EAST],AUTHORITY[\"EPSG\",\"5109\"]]"); - p = add_epsg_def (filter, first, last, 5110, "epsg", 5110, - "ETRS89 / NTM zone 10"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=10.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 10\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",10.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5110\"]]"); - p = add_epsg_def (filter, first, last, 5111, "epsg", 5111, - "ETRS89 / NTM zone 11"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=11.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 11\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",11.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5111\"]]"); - p = add_epsg_def (filter, first, last, 5112, "epsg", 5112, - "ETRS89 / NTM zone 12"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=12.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 12\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",12.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5112\"]]"); - p = add_epsg_def (filter, first, last, 5113, "epsg", 5113, - "ETRS89 / NTM zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=13.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 13\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",13.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5113\"]]"); - p = add_epsg_def (filter, first, last, 5114, "epsg", 5114, - "ETRS89 / NTM zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=14.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 14\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",14.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5114\"]]"); - p = add_epsg_def (filter, first, last, 5115, "epsg", 5115, - "ETRS89 / NTM zone 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=15.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 15\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",15.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5115\"]]"); - p = add_epsg_def (filter, first, last, 5116, "epsg", 5116, - "ETRS89 / NTM zone 16"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=16.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 16\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",16.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5116\"]]"); - p = add_epsg_def (filter, first, last, 5117, "epsg", 5117, - "ETRS89 / NTM zone 17"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=17.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 17\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",17.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5117\"]]"); - p = add_epsg_def (filter, first, last, 5118, "epsg", 5118, - "ETRS89 / NTM zone 18"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=18.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 18\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",18.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5118\"]]"); - p = add_epsg_def (filter, first, last, 5119, "epsg", 5119, - "ETRS89 / NTM zone 19"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=19.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 19\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",19.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5119\"]]"); - p = add_epsg_def (filter, first, last, 5120, "epsg", 5120, - "ETRS89 / NTM zone 20"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=20.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 20\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",20.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5120\"]]"); - p = add_epsg_def (filter, first, last, 5121, "epsg", 5121, - "ETRS89 / NTM zone 21"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=21.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 21\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",21.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5121\"]]"); - p = add_epsg_def (filter, first, last, 5122, "epsg", 5122, - "ETRS89 / NTM zone 22"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=22.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 22\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",22.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5122\"]]"); - p = add_epsg_def (filter, first, last, 5123, "epsg", 5123, - "ETRS89 / NTM zone 23"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=23.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 23\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",23.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5123\"]]"); - p = add_epsg_def (filter, first, last, 5124, "epsg", 5124, - "ETRS89 / NTM zone 24"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=24.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 24\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",24.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5124\"]]"); - p = add_epsg_def (filter, first, last, 5125, "epsg", 5125, - "ETRS89 / NTM zone 25"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=25.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 25\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",25.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5125\"]]"); - p = add_epsg_def (filter, first, last, 5126, "epsg", 5126, - "ETRS89 / NTM zone 26"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=26.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 26\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",26.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5126\"]]"); - p = add_epsg_def (filter, first, last, 5127, "epsg", 5127, - "ETRS89 / NTM zone 27"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=27.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 27\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",27.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5127\"]]"); - p = add_epsg_def (filter, first, last, 5128, "epsg", 5128, - "ETRS89 / NTM zone 28"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=28.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 28\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",28.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5128\"]]"); - p = add_epsg_def (filter, first, last, 5129, "epsg", 5129, - "ETRS89 / NTM zone 29"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=29.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 29\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",29.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5129\"]]"); - p = add_epsg_def (filter, first, last, 5130, "epsg", 5130, - "ETRS89 / NTM zone 30"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=30.5 +k=1 +x_0=100000 +y_0="); - add_proj4text (p, 1, - "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / NTM zone 30\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "8],PARAMETER[\"central_meridian\",30.5],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"E"); - add_srs_wkt (p, 12, - "asting\",EAST],AUTHORITY[\"EPSG\",\"5130\"]]"); - p = add_epsg_def (filter, first, last, 5132, "epsg", 5132, - "Tokyo 1892"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Tokyo 1892\",DATUM[\"Tokyo_1892\",SPHEROID[\"Be"); - add_srs_wkt (p, 1, - "ssel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7004\"]],AUTHORITY[\"EPSG\",\"1048\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 3, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 4, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"5132\"]]"); - p = add_epsg_def (filter, first, last, 5167, "epsg", 5167, - "Korean 1985 / East Sea Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=5"); - add_proj4text (p, 1, - "00000 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korean 1985 / East Sea Belt\",GEOGCS[\"Korean 1"); - add_srs_wkt (p, 1, - "985\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel 1841"); - add_srs_wkt (p, 2, - "\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4162\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",38],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",131],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_"); - add_srs_wkt (p, 9, - "easting\",200000],PARAMETER[\"false_northing\",500000],U"); - add_srs_wkt (p, 10, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 11, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"5167\"]]"); - p = add_epsg_def (filter, first, last, 5168, "epsg", 5168, - "Korean 1985 / Central Belt Jeju"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=5"); - add_proj4text (p, 1, - "50000 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korean 1985 / Central Belt Jeju\",GEOGCS[\"Kore"); - add_srs_wkt (p, 1, - "an 1985\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel "); - add_srs_wkt (p, 2, - "1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4162\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",38],PARAMETER[\"central_meri"); - add_srs_wkt (p, 8, - "dian\",127],PARAMETER[\"scale_factor\",1],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",200000],PARAMETER[\"false_northing\",55000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"5168\"]"); - add_srs_wkt (p, 12, - "]"); - p = add_epsg_def (filter, first, last, 5169, "epsg", 5169, - "Tokyo 1892 / Korea West Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=5"); - add_proj4text (p, 1, - "00000 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo 1892 / Korea West Belt\",GEOGCS[\"Tokyo 1"); - add_srs_wkt (p, 1, - "892\",DATUM[\"Tokyo_1892\",SPHEROID[\"Bessel 1841\",6377"); - add_srs_wkt (p, 2, - "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"1048\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5132\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",38],PARAMETER[\"central_meridian\",125],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",200000],PARAMETER[\"false_northing\",500000],UNIT[\"met"); - add_srs_wkt (p, 10, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 11, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"5169\"]]"); - p = add_epsg_def (filter, first, last, 5170, "epsg", 5170, - "Tokyo 1892 / Korea Central Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=5"); - add_proj4text (p, 1, - "00000 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo 1892 / Korea Central Belt\",GEOGCS[\"Toky"); - add_srs_wkt (p, 1, - "o 1892\",DATUM[\"Tokyo_1892\",SPHEROID[\"Bessel 1841\",6"); - add_srs_wkt (p, 2, - "377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"1048\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 5, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"51"); - add_srs_wkt (p, 6, - "32\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 7, - "atitude_of_origin\",38],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 8, - "27],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 9, - "ing\",200000],PARAMETER[\"false_northing\",500000],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NOR"); - add_srs_wkt (p, 11, - "TH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"5170\"]]"); - p = add_epsg_def (filter, first, last, 5171, "epsg", 5171, - "Tokyo 1892 / Korea East Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=5"); - add_proj4text (p, 1, - "00000 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo 1892 / Korea East Belt\",GEOGCS[\"Tokyo 1"); - add_srs_wkt (p, 1, - "892\",DATUM[\"Tokyo_1892\",SPHEROID[\"Bessel 1841\",6377"); - add_srs_wkt (p, 2, - "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"1048\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5132\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",38],PARAMETER[\"central_meridian\",129],"); - add_srs_wkt (p, 8, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",200000],PARAMETER[\"false_northing\",500000],UNIT[\"met"); - add_srs_wkt (p, 10, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 11, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"5171\"]]"); - p = add_epsg_def (filter, first, last, 5172, "epsg", 5172, - "Tokyo 1892 / Korea East Sea Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=5"); - add_proj4text (p, 1, - "00000 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo 1892 / Korea East Sea Belt\",GEOGCS[\"Tok"); - add_srs_wkt (p, 1, - "yo 1892\",DATUM[\"Tokyo_1892\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 2, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"1048\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5"); - add_srs_wkt (p, 6, - "132\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",38],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 8, - "131],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 9, - "ting\",200000],PARAMETER[\"false_northing\",500000],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NO"); - add_srs_wkt (p, 11, - "RTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"5172\"]]"); - p = add_epsg_def (filter, first, last, 5173, "epsg", 5173, - "Korean 1985 / Modified West Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=125.0028902777778 +k=1 +x_0"); - add_proj4text (p, 1, - "=200000 +y_0=500000 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korean 1985 / Modified West Belt\",GEOGCS[\"Kor"); - add_srs_wkt (p, 1, - "ean 1985\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel"); - add_srs_wkt (p, 2, - " 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "4\"]],AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4162\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"latitude_of_origin\",38],PARAMETER[\"central_mer"); - add_srs_wkt (p, 8, - "idian\",125.0028902777778],PARAMETER[\"scale_factor\",1]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",200000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"5173\"]]"); - p = add_epsg_def (filter, first, last, 5174, "epsg", 5174, - "Korean 1985 / Modified Central Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0"); - add_proj4text (p, 1, - "=200000 +y_0=500000 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korean 1985 / Modified Central Belt\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Korean 1985\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bes"); - add_srs_wkt (p, 2, - "sel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7004\"]],AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4162\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 7, - "RAMETER[\"latitude_of_origin\",38],PARAMETER[\"central_m"); - add_srs_wkt (p, 8, - "eridian\",127.0028902777778],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "1],PARAMETER[\"false_easting\",200000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"5174\"]]"); - p = add_epsg_def (filter, first, last, 5175, "epsg", 5175, - "Korean 1985 / Modified Central Belt Jeju"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0"); - add_proj4text (p, 1, - "=200000 +y_0=550000 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korean 1985 / Modified Central Belt Jeju\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Korean 1985\",DATUM[\"Korean_Datum_1985\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7004\"]],AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 4, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4162\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",38],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",127.0028902777778],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",1],PARAMETER[\"false_easting\",200000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",550000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"5175\"]]"); - p = add_epsg_def (filter, first, last, 5176, "epsg", 5176, - "Korean 1985 / Modified East Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=129.0028902777778 +k=1 +x_0"); - add_proj4text (p, 1, - "=200000 +y_0=500000 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korean 1985 / Modified East Belt\",GEOGCS[\"Kor"); - add_srs_wkt (p, 1, - "ean 1985\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel"); - add_srs_wkt (p, 2, - " 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "4\"]],AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4162\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"latitude_of_origin\",38],PARAMETER[\"central_mer"); - add_srs_wkt (p, 8, - "idian\",129.0028902777778],PARAMETER[\"scale_factor\",1]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",200000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"5176\"]]"); - p = add_epsg_def (filter, first, last, 5177, "epsg", 5177, - "Korean 1985 / Modified East Sea Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=131.0028902777778 +k=1 +x_0"); - add_proj4text (p, 1, - "=200000 +y_0=500000 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korean 1985 / Modified East Sea Belt\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Korean 1985\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bes"); - add_srs_wkt (p, 2, - "sel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7004\"]],AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4162\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 7, - "RAMETER[\"latitude_of_origin\",38],PARAMETER[\"central_m"); - add_srs_wkt (p, 8, - "eridian\",131.0028902777778],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "1],PARAMETER[\"false_easting\",200000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"5177\"]]"); - p = add_epsg_def (filter, first, last, 5178, "epsg", 5178, - "Korean 1985 / Unified CS"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=100000"); - add_proj4text (p, 1, - "0 +y_0=2000000 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korean 1985 / Unified CS\",GEOGCS[\"Korean 1985"); - add_srs_wkt (p, 1, - "\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 2, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "162\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",38],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 8, - "127.5],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",1000000],PARAMETER[\"false_northing\",2000"); - add_srs_wkt (p, 10, - "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); - add_srs_wkt (p, 11, - "[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"5178"); - add_srs_wkt (p, 12, - "\"]]"); - p = add_epsg_def (filter, first, last, 5179, "epsg", 5179, - "Korea 2000 / Unified CS"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=100000"); - add_proj4text (p, 1, - "0 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korea 2000 / Unified CS\",GEOGCS[\"Korea 2000\""); - add_srs_wkt (p, 1, - ",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",38],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",127.5],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",1000000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",2000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"5179\"]]"); - p = add_epsg_def (filter, first, last, 5180, "epsg", 5180, - "Korea 2000 / West Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=5"); - add_proj4text (p, 1, - "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korea 2000 / West Belt\",GEOGCS[\"Korea 2000\","); - add_srs_wkt (p, 1, - "DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",38],PARAMETER"); - add_srs_wkt (p, 8, - "[\"central_meridian\",125],PARAMETER[\"scale_factor\",1]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",200000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"5180\"]]"); - p = add_epsg_def (filter, first, last, 5181, "epsg", 5181, - "Korea 2000 / Central Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=5"); - add_proj4text (p, 1, - "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korea 2000 / Central Belt\",GEOGCS[\"Korea 2000"); - add_srs_wkt (p, 1, - "\",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",38],PARAME"); - add_srs_wkt (p, 8, - "TER[\"central_meridian\",127],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",1],PARAMETER[\"false_easting\",200000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"5181\"]]"); - p = add_epsg_def (filter, first, last, 5182, "epsg", 5182, - "Korea 2000 / Central Belt Jeju"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=5"); - add_proj4text (p, 1, - "50000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korea 2000 / Central Belt Jeju\",GEOGCS[\"Korea"); - add_srs_wkt (p, 1, - " 2000\",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",38],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",127],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",1],PARAMETER[\"false_easting\",200000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",550000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"5182\"]]"); - p = add_epsg_def (filter, first, last, 5183, "epsg", 5183, - "Korea 2000 / East Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=5"); - add_proj4text (p, 1, - "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korea 2000 / East Belt\",GEOGCS[\"Korea 2000\","); - add_srs_wkt (p, 1, - "DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",38],PARAMETER"); - add_srs_wkt (p, 8, - "[\"central_meridian\",129],PARAMETER[\"scale_factor\",1]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",200000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"5183\"]]"); - p = add_epsg_def (filter, first, last, 5184, "epsg", 5184, - "Korea 2000 / East Sea Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=5"); - add_proj4text (p, 1, - "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korea 2000 / East Sea Belt\",GEOGCS[\"Korea 200"); - add_srs_wkt (p, 1, - "0\",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",38],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",131],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",1],PARAMETER[\"false_easting\",200000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"5184\"]]"); - p = add_epsg_def (filter, first, last, 5185, "epsg", 5185, - "Korea 2000 / West Belt 2010"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=6"); - add_proj4text (p, 1, - "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korea 2000 / West Belt 2010\",GEOGCS[\"Korea 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",38],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",125],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",200000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",600000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"5185\"]]"); - p = add_epsg_def (filter, first, last, 5186, "epsg", 5186, - "Korea 2000 / Central Belt 2010"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=6"); - add_proj4text (p, 1, - "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korea 2000 / Central Belt 2010\",GEOGCS[\"Korea"); - add_srs_wkt (p, 1, - " 2000\",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",38],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",127],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",1],PARAMETER[\"false_easting\",200000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",600000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"5186\"]]"); - p = add_epsg_def (filter, first, last, 5187, "epsg", 5187, - "Korea 2000 / East Belt 2010"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=6"); - add_proj4text (p, 1, - "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korea 2000 / East Belt 2010\",GEOGCS[\"Korea 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",38],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",129],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",200000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",600000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"5187\"]]"); - p = add_epsg_def (filter, first, last, 5188, "epsg", 5188, - "Korea 2000 / East Sea Belt 2010"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=6"); - add_proj4text (p, 1, - "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Korea 2000 / East Sea Belt 2010\",GEOGCS[\"Kore"); - add_srs_wkt (p, 1, - "a 2000\",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",38],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",131],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",1],PARAMETER[\"false_easting\",200000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",600000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"5188\"]]"); - p = add_epsg_def (filter, first, last, 5223, "epsg", 5223, - "WGS 84 / Gabon TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=500000 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / Gabon TM\",GEOGCS[\"WGS 84\",DATUM[\"W"); - add_srs_wkt (p, 1, - "GS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],"); - add_srs_wkt (p, 3, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 4, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 5, - "2\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 6, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 7, - "METER[\"central_meridian\",12],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 8, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"5223\"]]"); - p = add_epsg_def (filter, first, last, 5228, "epsg", 5228, - "S-JTSK/05"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=572.213,85.334,461."); - add_proj4text (p, 1, - "94,4.9732,1.529,5.2484,3.5378 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"S-JTSK/05\",DATUM[\"System_Jednotne_Trigonometr"); - add_srs_wkt (p, 1, - "icke_Site_Katastralni_05\",SPHEROID[\"Bessel 1841\",6377"); - add_srs_wkt (p, 2, - "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[572.213,85.334,461.94,4.9732,1.529,5.2484,3.5378],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"1052\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"522"); - add_srs_wkt (p, 7, - "8\"]]"); - p = add_epsg_def (filter, first, last, 5229, "epsg", 5229, - "S-JTSK/05 (Ferro)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +towgs84=572.213,85.334,461."); - add_proj4text (p, 1, - "94,4.9732,1.529,5.2484,3.5378 +pm=ferro +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"S-JTSK/05 (Ferro)\",DATUM[\"System_Jednotne_Tri"); - add_srs_wkt (p, 1, - "gonometricke_Site_Katastralni_05_Ferro\",SPHEROID[\"Bess"); - add_srs_wkt (p, 2, - "el 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "004\"]],TOWGS84[572.213,85.334,461.94,4.9732,1.529,5.248"); - add_srs_wkt (p, 4, - "4,3.5378],AUTHORITY[\"EPSG\",\"1055\"]],PRIMEM[\"Ferro\""); - add_srs_wkt (p, 5, - ",-17.66666666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\""); - add_srs_wkt (p, 6, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 7, - "],AUTHORITY[\"EPSG\",\"5229\"]]"); - p = add_epsg_def (filter, first, last, 5233, "epsg", 5233, - "SLD99"); - add_proj4text (p, 0, - "+proj=longlat +a=6377276.345 +b=6356075.413140239 +towgs"); - add_proj4text (p, 1, - "84=-0.293,766.95,87.713,0.195704,1.69507,3.47302,-0.0393"); - add_proj4text (p, 2, - "38 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"SLD99\",DATUM[\"Sri_Lanka_Datum_1999\",SPHEROID"); - add_srs_wkt (p, 1, - "[\"Everest 1830 (1937 Adjustment)\",6377276.345,300.8017"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7015\"]],TOWGS84[-0.293,766.95,87."); - add_srs_wkt (p, 3, - "713,0.195704,1.69507,3.47302,-0.039338],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"1053\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5233\"]]"); - p = add_epsg_def (filter, first, last, 5234, "epsg", 5234, - "Kandawala / Sri Lanka Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=7.000480277777778 +lon_0=80.771711111"); - add_proj4text (p, 1, - "11112 +k=0.9999238418 +x_0=200000 +y_0=200000 +a=6377276"); - add_proj4text (p, 2, - ".345 +b=6356075.413140239 +towgs84=-97,787,86,0,0,0,0 +u"); - add_proj4text (p, 3, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kandawala / Sri Lanka Grid\",GEOGCS[\"Kandawala"); - add_srs_wkt (p, 1, - "\",DATUM[\"Kandawala\",SPHEROID[\"Everest 1830 (1937 Adj"); - add_srs_wkt (p, 2, - "ustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "5\"]],TOWGS84[-97,787,86,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "244\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4244\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "7.000480277777778],PARAMETER[\"central_meridian\",80.771"); - add_srs_wkt (p, 9, - "71111111112],PARAMETER[\"scale_factor\",0.9999238418],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",200000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 12, - "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); - add_srs_wkt (p, 13, - "THORITY[\"EPSG\",\"5234\"]]"); - p = add_epsg_def (filter, first, last, 5235, "epsg", 5235, - "SLD99 / Sri Lanka Grid 1999"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=7.000471527777778 +lon_0=80.771713083"); - add_proj4text (p, 1, - "33334 +k=0.9999238418 +x_0=500000 +y_0=500000 +a=6377276"); - add_proj4text (p, 2, - ".345 +b=6356075.413140239 +towgs84=-0.293,766.95,87.713,"); - add_proj4text (p, 3, - "0.195704,1.69507,3.47302,-0.039338 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SLD99 / Sri Lanka Grid 1999\",GEOGCS[\"SLD99\","); - add_srs_wkt (p, 1, - "DATUM[\"Sri_Lanka_Datum_1999\",SPHEROID[\"Everest 1830 ("); - add_srs_wkt (p, 2, - "1937 Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7015\"]],TOWGS84[-0.293,766.95,87.713,0.195704,1.69"); - add_srs_wkt (p, 4, - "507,3.47302,-0.039338],AUTHORITY[\"EPSG\",\"1053\"]],PRI"); - add_srs_wkt (p, 5, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 6, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 7, - "],AUTHORITY[\"EPSG\",\"5233\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 8, - "Mercator\"],PARAMETER[\"latitude_of_origin\",7.000471527"); - add_srs_wkt (p, 9, - "777778],PARAMETER[\"central_meridian\",80.77171308333334"); - add_srs_wkt (p, 10, - "],PARAMETER[\"scale_factor\",0.9999238418],PARAMETER[\"f"); - add_srs_wkt (p, 11, - "alse_easting\",500000],PARAMETER[\"false_northing\",5000"); - add_srs_wkt (p, 12, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 13, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 14, - "PSG\",\"5235\"]]"); - p = add_epsg_def (filter, first, last, 5243, "epsg", 5243, - "ETRS89 / LCC Germany (E-N)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.66666666666666 +lat_2=53.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=51 +lon_0=10.5 +x_0=0 +y_0=0 +ellps=GRS80 +to"); - add_proj4text (p, 2, - "wgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / LCC Germany (E-N)\",GEOGCS[\"ETRS89\","); - add_srs_wkt (p, 1, - "DATUM[\"European_Terrestrial_Reference_System_1989\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_1\",48.66666666666666],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 9, - "rallel_2\",53.66666666666666],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 10, - "igin\",51],PARAMETER[\"central_meridian\",10.5],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_easting\",0],PARAMETER[\"false_northing\",0],U"); - add_srs_wkt (p, 12, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 13, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"5243\"]]"); - p = add_epsg_def (filter, first, last, 5246, "epsg", 5246, - "GDBD2009"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"GDBD2009\",DATUM[\"Geocentric_Datum_Brunei_Daru"); - add_srs_wkt (p, 1, - "ssalam_2009\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); - add_srs_wkt (p, 2, - "1,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"105"); - add_srs_wkt (p, 3, - "6\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"5246\"]]"); - p = add_epsg_def (filter, first, last, 5247, "epsg", 5247, - "GDBD2009 / Brunei BRSO"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.9"); - add_proj4text (p, 1, - "9984 +x_0=0 +y_0=0 +gamma=53.13010236111111 +ellps=GRS80"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDBD2009 / Brunei BRSO\",GEOGCS[\"GDBD2009\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Geocentric_Datum_Brunei_Darussalam_2009\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],AUTHORITY[\"EPSG\",\"1056\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"5246\"]],PROJECTION[\"Hotine_Oblique_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_center\",4],PARAMETER[\"longit"); - add_srs_wkt (p, 8, - "ude_of_center\",115],PARAMETER[\"azimuth\",53.31580995],"); - add_srs_wkt (p, 9, - "PARAMETER[\"rectified_grid_angle\",53.13010236111111],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"scale_factor\",0.99984],PARAMETER[\"false_east"); - add_srs_wkt (p, 11, - "ing\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 12, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); - add_srs_wkt (p, 13, - "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5247\"]]"); - p = add_epsg_def (filter, first, last, 5252, "epsg", 5252, - "TUREF"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"TUREF\",DATUM[\"Turkish_National_Reference_Fram"); - add_srs_wkt (p, 1, - "e\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]]"); - p = add_epsg_def (filter, first, last, 5253, "epsg", 5253, - "TUREF / TM27"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TUREF / TM27\",GEOGCS[\"TUREF\",DATUM[\"Turkish"); - add_srs_wkt (p, 1, - "_National_Reference_Frame\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"5252\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",27],PARAMETER[\"scale_factor\",1],PARAMETER"); - add_srs_wkt (p, 9, - "[\"false_easting\",500000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"5253\"]"); - add_srs_wkt (p, 12, - "]"); - p = add_epsg_def (filter, first, last, 5254, "epsg", 5254, - "TUREF / TM30"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TUREF / TM30\",GEOGCS[\"TUREF\",DATUM[\"Turkish"); - add_srs_wkt (p, 1, - "_National_Reference_Frame\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"5252\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",30],PARAMETER[\"scale_factor\",1],PARAMETER"); - add_srs_wkt (p, 9, - "[\"false_easting\",500000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"5254\"]"); - add_srs_wkt (p, 12, - "]"); - p = add_epsg_def (filter, first, last, 5255, "epsg", 5255, - "TUREF / TM33"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TUREF / TM33\",GEOGCS[\"TUREF\",DATUM[\"Turkish"); - add_srs_wkt (p, 1, - "_National_Reference_Frame\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"5252\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",33],PARAMETER[\"scale_factor\",1],PARAMETER"); - add_srs_wkt (p, 9, - "[\"false_easting\",500000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"5255\"]"); - add_srs_wkt (p, 12, - "]"); - p = add_epsg_def (filter, first, last, 5256, "epsg", 5256, - "TUREF / TM36"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TUREF / TM36\",GEOGCS[\"TUREF\",DATUM[\"Turkish"); - add_srs_wkt (p, 1, - "_National_Reference_Frame\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"5252\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",36],PARAMETER[\"scale_factor\",1],PARAMETER"); - add_srs_wkt (p, 9, - "[\"false_easting\",500000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"5256\"]"); - add_srs_wkt (p, 12, - "]"); - p = add_epsg_def (filter, first, last, 5257, "epsg", 5257, - "TUREF / TM39"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TUREF / TM39\",GEOGCS[\"TUREF\",DATUM[\"Turkish"); - add_srs_wkt (p, 1, - "_National_Reference_Frame\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"5252\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",39],PARAMETER[\"scale_factor\",1],PARAMETER"); - add_srs_wkt (p, 9, - "[\"false_easting\",500000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"5257\"]"); - add_srs_wkt (p, 12, - "]"); - p = add_epsg_def (filter, first, last, 5258, "epsg", 5258, - "TUREF / TM42"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TUREF / TM42\",GEOGCS[\"TUREF\",DATUM[\"Turkish"); - add_srs_wkt (p, 1, - "_National_Reference_Frame\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"5252\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",42],PARAMETER[\"scale_factor\",1],PARAMETER"); - add_srs_wkt (p, 9, - "[\"false_easting\",500000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"5258\"]"); - add_srs_wkt (p, 12, - "]"); - p = add_epsg_def (filter, first, last, 5259, "epsg", 5259, - "TUREF / TM45"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TUREF / TM45\",GEOGCS[\"TUREF\",DATUM[\"Turkish"); - add_srs_wkt (p, 1, - "_National_Reference_Frame\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"5252\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",45],PARAMETER[\"scale_factor\",1],PARAMETER"); - add_srs_wkt (p, 9, - "[\"false_easting\",500000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"5259\"]"); - add_srs_wkt (p, 12, - "]"); - p = add_epsg_def (filter, first, last, 5264, "epsg", 5264, - "DRUKREF 03"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"DRUKREF 03\",DATUM[\"Bhutan_National_Geodetic_D"); - add_srs_wkt (p, 1, - "atum\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); - add_srs_wkt (p, 2, - "RITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"1058\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5264\"]]"); - p = add_epsg_def (filter, first, last, 5266, "epsg", 5266, - "DRUKREF 03 / Bhutan National Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=250000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Bhutan National Grid\",GEOGCS[\"DR"); - add_srs_wkt (p, 1, - "UKREF 03\",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"1058\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",0],PARAMETER[\"central_meridian\",90],PARAMETER[\"sc"); - add_srs_wkt (p, 9, - "ale_factor\",1],PARAMETER[\"false_easting\",250000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"5266\"]]"); - p = add_epsg_def (filter, first, last, 5269, "epsg", 5269, - "TUREF / 3-degree Gauss-Kruger zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TUREF / 3-degree Gauss-Kruger zone 9\",GEOGCS[\""); - add_srs_wkt (p, 1, - "TUREF\",DATUM[\"Turkish_National_Reference_Frame\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",27],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",9500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"5269\"]]"); - p = add_epsg_def (filter, first, last, 5270, "epsg", 5270, - "TUREF / 3-degree Gauss-Kruger zone 10"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TUREF / 3-degree Gauss-Kruger zone 10\",GEOGCS["); - add_srs_wkt (p, 1, - "\"TUREF\",DATUM[\"Turkish_National_Reference_Frame\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",30],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",1],PARAMETER[\"false_easting\",10500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5270\"]]"); - p = add_epsg_def (filter, first, last, 5271, "epsg", 5271, - "TUREF / 3-degree Gauss-Kruger zone 11"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TUREF / 3-degree Gauss-Kruger zone 11\",GEOGCS["); - add_srs_wkt (p, 1, - "\"TUREF\",DATUM[\"Turkish_National_Reference_Frame\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",33],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",1],PARAMETER[\"false_easting\",11500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5271\"]]"); - p = add_epsg_def (filter, first, last, 5272, "epsg", 5272, - "TUREF / 3-degree Gauss-Kruger zone 12"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TUREF / 3-degree Gauss-Kruger zone 12\",GEOGCS["); - add_srs_wkt (p, 1, - "\"TUREF\",DATUM[\"Turkish_National_Reference_Frame\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",36],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",1],PARAMETER[\"false_easting\",12500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5272\"]]"); - p = add_epsg_def (filter, first, last, 5273, "epsg", 5273, - "TUREF / 3-degree Gauss-Kruger zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TUREF / 3-degree Gauss-Kruger zone 13\",GEOGCS["); - add_srs_wkt (p, 1, - "\"TUREF\",DATUM[\"Turkish_National_Reference_Frame\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",39],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",1],PARAMETER[\"false_easting\",13500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5273\"]]"); - p = add_epsg_def (filter, first, last, 5274, "epsg", 5274, - "TUREF / 3-degree Gauss-Kruger zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TUREF / 3-degree Gauss-Kruger zone 14\",GEOGCS["); - add_srs_wkt (p, 1, - "\"TUREF\",DATUM[\"Turkish_National_Reference_Frame\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",42],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",1],PARAMETER[\"false_easting\",14500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5274\"]]"); - p = add_epsg_def (filter, first, last, 5275, "epsg", 5275, - "TUREF / 3-degree Gauss-Kruger zone 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TUREF / 3-degree Gauss-Kruger zone 15\",GEOGCS["); - add_srs_wkt (p, 1, - "\"TUREF\",DATUM[\"Turkish_National_Reference_Frame\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",45],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",1],PARAMETER[\"false_easting\",15500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5275\"]]"); - p = add_epsg_def (filter, first, last, 5292, "epsg", 5292, - "DRUKREF 03 / Bumthang TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90.73333333333333 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Bumthang TM\",GEOGCS[\"DRUKREF 03\""); - add_srs_wkt (p, 1, - ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",90.73333333333333],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5292\"]]"); - p = add_epsg_def (filter, first, last, 5293, "epsg", 5293, - "DRUKREF 03 / Chhukha TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=89.55 +k=1 +x_0=250000 +y_0="); - add_proj4text (p, 1, - "-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); - add_proj4text (p, 2, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Chhukha TM\",GEOGCS[\"DRUKREF 03\""); - add_srs_wkt (p, 1, - ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",89.55],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",250000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"5293\"]]"); - p = add_epsg_def (filter, first, last, 5294, "epsg", 5294, - "DRUKREF 03 / Dagana TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=89.84999999999999 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Dagana TM\",GEOGCS[\"DRUKREF 03\","); - add_srs_wkt (p, 1, - "DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",89.85],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",250000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"5294\"]]"); - p = add_epsg_def (filter, first, last, 5295, "epsg", 5295, - "DRUKREF 03 / Gasa TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90.03333333333333 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Gasa TM\",GEOGCS[\"DRUKREF 03\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",90.03333333333333],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",1],PARAMETER[\"false_easting\",250000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"5295\"]]"); - p = add_epsg_def (filter, first, last, 5296, "epsg", 5296, - "DRUKREF 03 / Ha TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90.15000000000001 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Ha TM\",GEOGCS[\"DRUKREF 03\",DATU"); - add_srs_wkt (p, 1, - "M[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",90.15],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",1],PARAMETER[\"false_easting\",250000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"5296\"]]"); - p = add_epsg_def (filter, first, last, 5297, "epsg", 5297, - "DRUKREF 03 / Lhuentse TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=91.13333333333334 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Lhuentse TM\",GEOGCS[\"DRUKREF 03\""); - add_srs_wkt (p, 1, - ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",91.13333333333334],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5297\"]]"); - p = add_epsg_def (filter, first, last, 5298, "epsg", 5298, - "DRUKREF 03 / Mongar TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=91.23333333333333 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Mongar TM\",GEOGCS[\"DRUKREF 03\","); - add_srs_wkt (p, 1, - "DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",91.23333333333333],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5298\"]]"); - p = add_epsg_def (filter, first, last, 5299, "epsg", 5299, - "DRUKREF 03 / Paro TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=89.34999999999999 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Paro TM\",GEOGCS[\"DRUKREF 03\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",89.35],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",1],PARAMETER[\"false_easting\",250000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"5299\"]]"); - p = add_epsg_def (filter, first, last, 5300, "epsg", 5300, - "DRUKREF 03 / Pemagatshel TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=91.34999999999999 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Pemagatshel TM\",GEOGCS[\"DRUKREF "); - add_srs_wkt (p, 1, - "03\",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",91.35],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",250000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"5300\"]]"); - p = add_epsg_def (filter, first, last, 5301, "epsg", 5301, - "DRUKREF 03 / Punakha TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=89.84999999999999 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Punakha TM\",GEOGCS[\"DRUKREF 03\""); - add_srs_wkt (p, 1, - ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",89.85],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",250000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"5301\"]]"); - p = add_epsg_def (filter, first, last, 5302, "epsg", 5302, - "DRUKREF 03 / Samdrup Jongkhar TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=91.56666666666666 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Samdrup Jongkhar TM\",GEOGCS[\"DRU"); - add_srs_wkt (p, 1, - "KREF 03\",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "1058\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",91.56666666666666],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "250000],PARAMETER[\"false_northing\",-2500000],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5302\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 5303, "epsg", 5303, - "DRUKREF 03 / Samtse TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=89.06666666666666 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Samtse TM\",GEOGCS[\"DRUKREF 03\","); - add_srs_wkt (p, 1, - "DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",89.06666666666666],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5303\"]]"); - p = add_epsg_def (filter, first, last, 5304, "epsg", 5304, - "DRUKREF 03 / Sarpang TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90.26666666666667 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Sarpang TM\",GEOGCS[\"DRUKREF 03\""); - add_srs_wkt (p, 1, - ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",90.26666666666667],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5304\"]]"); - p = add_epsg_def (filter, first, last, 5305, "epsg", 5305, - "DRUKREF 03 / Thimphu TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=89.55 +k=1 +x_0=250000 +y_0="); - add_proj4text (p, 1, - "-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); - add_proj4text (p, 2, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Thimphu TM\",GEOGCS[\"DRUKREF 03\""); - add_srs_wkt (p, 1, - ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",89.55],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",1],PARAMETER[\"false_easting\",250000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"5305\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_26.c b/src/spatialite/src/srsinit/epsg_inlined_26.c deleted file mode 100644 index 6a124df..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_26.c +++ /dev/null @@ -1,3214 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_26 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 5306, "epsg", 5306, - "DRUKREF 03 / Trashigang TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=91.75 +k=1 +x_0=250000 +y_0="); - add_proj4text (p, 1, - "-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); - add_proj4text (p, 2, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Trashigang TM\",GEOGCS[\"DRUKREF 0"); - add_srs_wkt (p, 1, - "3\",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",91.75],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",250000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"5306\"]]"); - p = add_epsg_def (filter, first, last, 5307, "epsg", 5307, - "DRUKREF 03 / Trongsa TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90.5 +k=1 +x_0=250000 +y_0=-"); - add_proj4text (p, 1, - "2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Trongsa TM\",GEOGCS[\"DRUKREF 03\""); - add_srs_wkt (p, 1, - ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",90.5],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",1],PARAMETER[\"false_easting\",250000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"5307\"]]"); - p = add_epsg_def (filter, first, last, 5308, "epsg", 5308, - "DRUKREF 03 / Tsirang TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90.16666666666667 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Tsirang TM\",GEOGCS[\"DRUKREF 03\""); - add_srs_wkt (p, 1, - ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",90.16666666666667],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5308\"]]"); - p = add_epsg_def (filter, first, last, 5309, "epsg", 5309, - "DRUKREF 03 / Wangdue Phodrang TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90.11666666666666 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Wangdue Phodrang TM\",GEOGCS[\"DRU"); - add_srs_wkt (p, 1, - "KREF 03\",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "1058\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",90.11666666666666],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "250000],PARAMETER[\"false_northing\",-2500000],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5309\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 5310, "epsg", 5310, - "DRUKREF 03 / Yangtse TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=91.56666666666666 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Yangtse TM\",GEOGCS[\"DRUKREF 03\""); - add_srs_wkt (p, 1, - ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",91.56666666666666],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5310\"]]"); - p = add_epsg_def (filter, first, last, 5311, "epsg", 5311, - "DRUKREF 03 / Zhemgang TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=90.86666666666666 +k=1 +x_0="); - add_proj4text (p, 1, - "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DRUKREF 03 / Zhemgang TM\",GEOGCS[\"DRUKREF 03\""); - add_srs_wkt (p, 1, - ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",90.86666666666666],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5311\"]]"); - p = add_epsg_def (filter, first, last, 5316, "epsg", 5316, - "ETRS89 / Faroe TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-7 +k=0.999997 +x_0=200000 +"); - add_proj4text (p, 1, - "y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / Faroe TM\",GEOGCS[\"ETRS89\",DATUM[\"E"); - add_srs_wkt (p, 1, - "uropean_Terrestrial_Reference_System_1989\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-7],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.999997],PARAMETER[\"false_easting\",200000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",-6000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"5316\"]]"); - p = add_epsg_def (filter, first, last, 5320, "epsg", 5320, - "NAD83 / Teranet Ontario Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.5 +lat_2=54.5 +lat_0=0 +lon_0=-84 +x"); - add_proj4text (p, 1, - "_0=1000000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Teranet Ontario Lambert\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_"); - add_srs_wkt (p, 7, - "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",44.5],PARAMETER[\"standard_parallel_2\",54.5],PARAMETER"); - add_srs_wkt (p, 9, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 10, - ",-84],PARAMETER[\"false_easting\",1000000],PARAMETER[\"f"); - add_srs_wkt (p, 11, - "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"5320\"]]"); - p = add_epsg_def (filter, first, last, 5321, "epsg", 5321, - "NAD83(CSRS) / Teranet Ontario Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.5 +lat_2=54.5 +lat_0=0 +lon_0=-84 +x"); - add_proj4text (p, 1, - "_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / Teranet Ontario Lambert\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference"); - add_srs_wkt (p, 2, - "_System\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_1\",44.5],PARAMETER[\"standard_pa"); - add_srs_wkt (p, 9, - "rallel_2\",54.5],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"central_meridian\",-84],PARAMETER[\"false_easti"); - add_srs_wkt (p, 11, - "ng\",1000000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 12, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 13, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5321\"]]"); - p = add_epsg_def (filter, first, last, 5324, "epsg", 5324, - "ISN2004"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"ISN2004\",DATUM[\"Islands_Net_2004\",SPHEROID[\""); - add_srs_wkt (p, 1, - "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1060\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"5324\"]]"); - p = add_epsg_def (filter, first, last, 5325, "epsg", 5325, - "ISN2004 / Lambert 2004"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19"); - add_proj4text (p, 1, - " +x_0=1700000 +y_0=300000 +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ISN2004 / Lambert 2004\",GEOGCS[\"ISN2004\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Islands_Net_2004\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 2, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 3, - "0,0,0,0],AUTHORITY[\"EPSG\",\"1060\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"5324\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 7, - "SP\"],PARAMETER[\"standard_parallel_1\",64.25],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_2\",65.75],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 9, - "origin\",65],PARAMETER[\"central_meridian\",-19],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",1700000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",300000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 12, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"5325\"]]"); - p = add_epsg_def (filter, first, last, 5329, "epsg", 5329, - "Segara (Jakarta) / NEIEZ"); - add_proj4text (p, 0, - "+proj=merc +lon_0=3.192280555555556 +k=0.997 +x_0=390000"); - add_proj4text (p, 1, - "0 +y_0=900000 +ellps=bessel +towgs84=-403,684,41,0,0,0,0"); - add_proj4text (p, 2, - " +pm=jakarta +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Segara (Jakarta) / NEIEZ\",GEOGCS[\"Segara (Jak"); - add_srs_wkt (p, 1, - "arta)\",DATUM[\"Gunung_Segara_Jakarta\",SPHEROID[\"Besse"); - add_srs_wkt (p, 2, - "l 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "04\"]],TOWGS84[-403,684,41,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6820\"]],PRIMEM[\"Jakarta\",106.8077194444444,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8908\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4820\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Mercator_1SP\"],PARAMETER[\"central_meri"); - add_srs_wkt (p, 8, - "dian\",3.192280555555556],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "97],PARAMETER[\"false_easting\",3900000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",900000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"5329\"]]"); - p = add_epsg_def (filter, first, last, 5330, "epsg", 5330, - "Batavia (Jakarta) / NEIEZ"); - add_proj4text (p, 0, - "+proj=merc +lon_0=3.192280555555556 +k=0.997 +x_0=390000"); - add_proj4text (p, 1, - "0 +y_0=900000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,"); - add_proj4text (p, 2, - "0 +pm=jakarta +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Batavia (Jakarta) / NEIEZ\",GEOGCS[\"Batavia (J"); - add_srs_wkt (p, 1, - "akarta)\",DATUM[\"Batavia_Jakarta\",SPHEROID[\"Bessel 18"); - add_srs_wkt (p, 2, - "41\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-377,681,-50,0,0,0,0],AUTHORITY[\"EPSG\",\"68"); - add_srs_wkt (p, 4, - "13\"]],PRIMEM[\"Jakarta\",106.8077194444444,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8908\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4813\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Mercator_1SP\"],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 8, - "an\",3.192280555555556],PARAMETER[\"scale_factor\",0.997"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",3900000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",900000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"5330\"]]"); - p = add_epsg_def (filter, first, last, 5331, "epsg", 5331, - "Makassar (Jakarta) / NEIEZ"); - add_proj4text (p, 0, - "+proj=merc +lon_0=3.192280555555556 +k=0.997 +x_0=390000"); - add_proj4text (p, 1, - "0 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.7"); - add_proj4text (p, 2, - "6,0,0,0,0 +pm=jakarta +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Makassar (Jakarta) / NEIEZ\",GEOGCS[\"Makassar "); - add_srs_wkt (p, 1, - "(Jakarta)\",DATUM[\"Makassar_Jakarta\",SPHEROID[\"Bessel"); - add_srs_wkt (p, 2, - " 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[-587.8,519.75,145.76,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6804\"]],PRIMEM[\"Jakarta\",106.8077194444444,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8908\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4804\"]],PROJECTION[\"Mercator_1SP\"],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",3.192280555555556],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.997],PARAMETER[\"false_easting\",3900000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",900000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5331\"]]"); - p = add_epsg_def (filter, first, last, 5337, "epsg", 5337, - "Aratu / UTM zone 25S"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +south +ellps=intl +towgs84=-151.99,2"); - add_proj4text (p, 1, - "87.04,-147.45,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Aratu / UTM zone 25S\",GEOGCS[\"Aratu\",DATUM[\""); - add_srs_wkt (p, 1, - "Aratu\",SPHEROID[\"International 1924\",6378388,297,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7022\"]],TOWGS84[-151.99,287.04,-147.45"); - add_srs_wkt (p, 3, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6208\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 4, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 5, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"4208\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 8, - "meridian\",-33],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 10, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"5337\"]]"); - p = add_epsg_def (filter, first, last, 5340, "epsg", 5340, - "POSGAR 2007"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"POSGAR 2007\",DATUM[\"Posiciones_Geodesicas_Arg"); - add_srs_wkt (p, 1, - "entinas_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 2, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"1062\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "5340\"]]"); - p = add_epsg_def (filter, first, last, 5343, "epsg", 5343, - "POSGAR 2007 / Argentina 1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 2007 / Argentina 1\",GEOGCS[\"POSGAR 200"); - add_srs_wkt (p, 1, - "7\",DATUM[\"Posiciones_Geodesicas_Argentinas_2007\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"1062\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5340\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",-90],PARAMETER[\"central_meridian\",-72],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",1],PARAMETER[\"false_easting\",1500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5343\"]]"); - p = add_epsg_def (filter, first, last, 5344, "epsg", 5344, - "POSGAR 2007 / Argentina 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 2007 / Argentina 2\",GEOGCS[\"POSGAR 200"); - add_srs_wkt (p, 1, - "7\",DATUM[\"Posiciones_Geodesicas_Argentinas_2007\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"1062\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5340\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",-90],PARAMETER[\"central_meridian\",-69],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",1],PARAMETER[\"false_easting\",2500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5344\"]]"); - p = add_epsg_def (filter, first, last, 5345, "epsg", 5345, - "POSGAR 2007 / Argentina 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 2007 / Argentina 3\",GEOGCS[\"POSGAR 200"); - add_srs_wkt (p, 1, - "7\",DATUM[\"Posiciones_Geodesicas_Argentinas_2007\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"1062\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5340\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",-90],PARAMETER[\"central_meridian\",-66],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",1],PARAMETER[\"false_easting\",3500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5345\"]]"); - p = add_epsg_def (filter, first, last, 5346, "epsg", 5346, - "POSGAR 2007 / Argentina 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 2007 / Argentina 4\",GEOGCS[\"POSGAR 200"); - add_srs_wkt (p, 1, - "7\",DATUM[\"Posiciones_Geodesicas_Argentinas_2007\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"1062\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5340\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",-90],PARAMETER[\"central_meridian\",-63],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",1],PARAMETER[\"false_easting\",4500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5346\"]]"); - p = add_epsg_def (filter, first, last, 5347, "epsg", 5347, - "POSGAR 2007 / Argentina 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 2007 / Argentina 5\",GEOGCS[\"POSGAR 200"); - add_srs_wkt (p, 1, - "7\",DATUM[\"Posiciones_Geodesicas_Argentinas_2007\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"1062\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5340\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",-90],PARAMETER[\"central_meridian\",-60],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",1],PARAMETER[\"false_easting\",5500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5347\"]]"); - p = add_epsg_def (filter, first, last, 5348, "epsg", 5348, - "POSGAR 2007 / Argentina 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 2007 / Argentina 6\",GEOGCS[\"POSGAR 200"); - add_srs_wkt (p, 1, - "7\",DATUM[\"Posiciones_Geodesicas_Argentinas_2007\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"1062\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5340\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",-90],PARAMETER[\"central_meridian\",-57],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",1],PARAMETER[\"false_easting\",6500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5348\"]]"); - p = add_epsg_def (filter, first, last, 5349, "epsg", 5349, - "POSGAR 2007 / Argentina 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 2007 / Argentina 7\",GEOGCS[\"POSGAR 200"); - add_srs_wkt (p, 1, - "7\",DATUM[\"Posiciones_Geodesicas_Argentinas_2007\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"1062\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5340\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",-90],PARAMETER[\"central_meridian\",-54],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",1],PARAMETER[\"false_easting\",7500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5349\"]]"); - p = add_epsg_def (filter, first, last, 5354, "epsg", 5354, - "MARGEN"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"MARGEN\",DATUM[\"Marco_Geodesico_Nacional\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"1063\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5354\"]]"); - p = add_epsg_def (filter, first, last, 5355, "epsg", 5355, - "MARGEN / UTM zone 20S"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MARGEN / UTM zone 20S\",GEOGCS[\"MARGEN\",DATUM"); - add_srs_wkt (p, 1, - "[\"Marco_Geodesico_Nacional\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1063\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"5354\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-63],PARAMETER[\"scale_factor\",0.9996],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5355\"]]"); - p = add_epsg_def (filter, first, last, 5356, "epsg", 5356, - "MARGEN / UTM zone 19S"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MARGEN / UTM zone 19S\",GEOGCS[\"MARGEN\",DATUM"); - add_srs_wkt (p, 1, - "[\"Marco_Geodesico_Nacional\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1063\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"5354\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-69],PARAMETER[\"scale_factor\",0.9996],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5356\"]]"); - p = add_epsg_def (filter, first, last, 5357, "epsg", 5357, - "MARGEN / UTM zone 21S"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MARGEN / UTM zone 21S\",GEOGCS[\"MARGEN\",DATUM"); - add_srs_wkt (p, 1, - "[\"Marco_Geodesico_Nacional\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1063\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"5354\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-57],PARAMETER[\"scale_factor\",0.9996],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5357\"]]"); - p = add_epsg_def (filter, first, last, 5360, "epsg", 5360, - "SIRGAS-Chile"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"SIRGAS-Chile\",DATUM[\"SIRGAS_Chile\",SPHEROID["); - add_srs_wkt (p, 1, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 2, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"106"); - add_srs_wkt (p, 3, - "4\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"5360\"]]"); - p = add_epsg_def (filter, first, last, 5361, "epsg", 5361, - "SIRGAS-Chile / UTM zone 19S"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS-Chile / UTM zone 19S\",GEOGCS[\"SIRGAS-C"); - add_srs_wkt (p, 1, - "hile\",DATUM[\"SIRGAS_Chile\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1064\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"5360\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-69],PARAMETER[\"scale_factor\",0.9996],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5361\"]]"); - p = add_epsg_def (filter, first, last, 5362, "epsg", 5362, - "SIRGAS-Chile / UTM zone 18S"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS-Chile / UTM zone 18S\",GEOGCS[\"SIRGAS-C"); - add_srs_wkt (p, 1, - "hile\",DATUM[\"SIRGAS_Chile\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1064\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"5360\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-75],PARAMETER[\"scale_factor\",0.9996],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"5362\"]]"); - p = add_epsg_def (filter, first, last, 5365, "epsg", 5365, - "CR05"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"CR05\",DATUM[\"Costa_Rica_2005\",SPHEROID[\"WGS"); - add_srs_wkt (p, 1, - " 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]"); - add_srs_wkt (p, 2, - "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1065\"]],P"); - add_srs_wkt (p, 3, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 4, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 5, - "\"]],AUTHORITY[\"EPSG\",\"5365\"]]"); - p = add_epsg_def (filter, first, last, 5367, "epsg", 5367, - "CR05 / CRTM05"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=500000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"CR05 / CRTM05\",GEOGCS[\"CR05\",DATUM[\"Costa_R"); - add_srs_wkt (p, 1, - "ica_2005\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"1065\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5365\""); - add_srs_wkt (p, 6, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 7, - "ude_of_origin\",0],PARAMETER[\"central_meridian\",-84],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_east"); - add_srs_wkt (p, 9, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 10, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",N"); - add_srs_wkt (p, 11, - "ORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"5367\""); - add_srs_wkt (p, 12, - "]]"); - p = add_epsg_def (filter, first, last, 5371, "epsg", 5371, - "MACARIO SOLIS"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"MACARIO SOLIS\",DATUM[\"Sistema_Geodesico_Nacio"); - add_srs_wkt (p, 1, - "nal_de_Panama_MACARIO_SOLIS\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1066\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"5371\"]]"); - p = add_epsg_def (filter, first, last, 5373, "epsg", 5373, - "Peru96"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Peru96\",DATUM[\"Peru96\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 1, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 2, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1067\"]],PRIMEM"); - add_srs_wkt (p, 3, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 4, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"5373\"]]"); - p = add_epsg_def (filter, first, last, 5381, "epsg", 5381, - "SIRGAS-ROU98"); - add_proj4text (p, 0, - "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"SIRGAS-ROU98\",DATUM[\"SIRGAS_ROU98\",SPHEROID["); - add_srs_wkt (p, 1, - "\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 2, - "30\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1068\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"5381\"]]"); - p = add_epsg_def (filter, first, last, 5382, "epsg", 5382, - "SIRGAS-ROU98 / UTM zone 21S"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +south +ellps=WGS84 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS-ROU98 / UTM zone 21S\",GEOGCS[\"SIRGAS-R"); - add_srs_wkt (p, 1, - "OU98\",DATUM[\"SIRGAS_ROU98\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1068\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"5381\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-57],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"5382\"]]"); - p = add_epsg_def (filter, first, last, 5383, "epsg", 5383, - "SIRGAS-ROU98 / UTM zone 22S"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +south +ellps=WGS84 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS-ROU98 / UTM zone 22S\",GEOGCS[\"SIRGAS-R"); - add_srs_wkt (p, 1, - "OU98\",DATUM[\"SIRGAS_ROU98\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1068\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"5381\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-51],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"5383\"]]"); - p = add_epsg_def (filter, first, last, 5387, "epsg", 5387, - "Peru96 / UTM zone 18S"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Peru96 / UTM zone 18S\",GEOGCS[\"Peru96\",DATUM"); - add_srs_wkt (p, 1, - "[\"Peru96\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"1067\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 5, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"53"); - add_srs_wkt (p, 6, - "73\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 7, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-7"); - add_srs_wkt (p, 8, - "5],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 9, - "easting\",500000],PARAMETER[\"false_northing\",10000000]"); - add_srs_wkt (p, 10, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E"); - add_srs_wkt (p, 11, - "asting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"5387\"]]"); - p = add_epsg_def (filter, first, last, 5388, "epsg", 5388, - "Peru96 / UTM zone 17S"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Peru96 / UTM zone 17S\",GEOGCS[\"Peru96\",DATUM"); - add_srs_wkt (p, 1, - "[\"Peru96\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"1067\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 5, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"53"); - add_srs_wkt (p, 6, - "73\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 7, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-8"); - add_srs_wkt (p, 8, - "1],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 9, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 11, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"538"); - add_srs_wkt (p, 12, - "8\"]]"); - p = add_epsg_def (filter, first, last, 5389, "epsg", 5389, - "Peru96 / UTM zone 19S"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Peru96 / UTM zone 19S\",GEOGCS[\"Peru96\",DATUM"); - add_srs_wkt (p, 1, - "[\"Peru96\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"1067\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 5, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"53"); - add_srs_wkt (p, 6, - "73\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 7, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-6"); - add_srs_wkt (p, 8, - "9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 9, - "easting\",500000],PARAMETER[\"false_northing\",10000000]"); - add_srs_wkt (p, 10, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E"); - add_srs_wkt (p, 11, - "asting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"5389\"]]"); - p = add_epsg_def (filter, first, last, 5393, "epsg", 5393, - "SIRGAS_ES2007.8"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"SIRGAS_ES2007.8\",DATUM[\"SIRGAS_ES2007_8\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 2, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"1069\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5393\"]]"); - p = add_epsg_def (filter, first, last, 5396, "epsg", 5396, - "SIRGAS 2000 / UTM zone 26S"); - add_proj4text (p, 0, - "+proj=utm +zone=26 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 26S\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-27],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"5396\"]]"); - p = add_epsg_def (filter, first, last, 5451, "epsg", 5451, - "Ocotepeque 1935"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +towgs84=213.11,9.37,-74.95,"); - add_proj4text (p, 1, - "0,0,0,0 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Ocotepeque 1935\",DATUM[\"Ocotepeque_1935\",SPH"); - add_srs_wkt (p, 1, - "EROID[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0"); - add_srs_wkt (p, 3, - ",0],AUTHORITY[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 5, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"5451\"]]"); - p = add_epsg_def (filter, first, last, 5456, "epsg", 5456, - "Ocotepeque 1935 / Costa Rica Norte"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=10.46666666666667 +lat_0=10.46666666666"); - add_proj4text (p, 1, - "667 +lon_0=-84.33333333333333 +k_0=0.99995696 +x_0=50000"); - add_proj4text (p, 2, - "0 +y_0=271820.522 +ellps=clrk66 +towgs84=213.11,9.37,-74"); - add_proj4text (p, 3, - ".95,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Ocotepeque 1935 / Costa Rica Norte\",GEOGCS[\"O"); - add_srs_wkt (p, 1, - "cotepeque 1935\",DATUM[\"Ocotepeque_1935\",SPHEROID[\"Cl"); - add_srs_wkt (p, 2, - "arke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5451\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",10.46666666666667],PARAMETER[\"c"); - add_srs_wkt (p, 9, - "entral_meridian\",-84.33333333333333],PARAMETER[\"scale_"); - add_srs_wkt (p, 10, - "factor\",0.99995696],PARAMETER[\"false_easting\",500000]"); - add_srs_wkt (p, 11, - ",PARAMETER[\"false_northing\",271820.522],UNIT[\"metre\""); - add_srs_wkt (p, 12, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"5456\"]]"); - p = add_epsg_def (filter, first, last, 5457, "epsg", 5457, - "Ocotepeque 1935 / Costa Rica Sur"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=9 +lat_0=9 +lon_0=-83.66666666666667 +k"); - add_proj4text (p, 1, - "_0=0.99995696 +x_0=500000 +y_0=327987.436 +ellps=clrk66 "); - add_proj4text (p, 2, - "+towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Ocotepeque 1935 / Costa Rica Sur\",GEOGCS[\"Oco"); - add_srs_wkt (p, 1, - "tepeque 1935\",DATUM[\"Ocotepeque_1935\",SPHEROID[\"Clar"); - add_srs_wkt (p, 2, - "ke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5451\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",9],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "83.66666666666667],PARAMETER[\"scale_factor\",0.99995696"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "northing\",327987.436],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); - add_srs_wkt (p, 13, - "TY[\"EPSG\",\"5457\"]]"); - p = add_epsg_def (filter, first, last, 5458, "epsg", 5458, - "Ocotepeque 1935 / Guatemala Norte (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666"); - add_proj4text (p, 1, - "667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=50000"); - add_proj4text (p, 2, - "0 +y_0=292209.579 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Ocotepeque 1935 / Guatemala Norte (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"NAD27\",DATUM[\"North_American_Datum_1927\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4267\"]],PROJECTION[\"Lambert_"); - add_srs_wkt (p, 7, - "Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "16.81666666666667],PARAMETER[\"central_meridian\",-90.33"); - add_srs_wkt (p, 9, - "333333333333],PARAMETER[\"scale_factor\",0.99992226],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",292209.579],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"5458\"]]"); - p = add_epsg_def (filter, first, last, 5459, "epsg", 5459, - "Ocotepeque 1935 / Guatemala Sur"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333"); - add_proj4text (p, 1, - "333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +ellps=c"); - add_proj4text (p, 2, - "lrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Ocotepeque 1935 / Guatemala Sur\",GEOGCS[\"Ocot"); - add_srs_wkt (p, 1, - "epeque 1935\",DATUM[\"Ocotepeque_1935\",SPHEROID[\"Clark"); - add_srs_wkt (p, 2, - "e 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5451\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",14.9],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-90.33333333333333],PARAMETER[\"scale_factor\",0.999899"); - add_srs_wkt (p, 10, - "06],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_northing\",325992.681],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"5459\"]]"); - p = add_epsg_def (filter, first, last, 5460, "epsg", 5460, - "Ocotepeque 1935 / El Salvador Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=13.78333333333333 +lat_0=13.78333333333"); - add_proj4text (p, 1, - "333 +lon_0=-89 +k_0=0.99996704 +x_0=500000 +y_0=295809.1"); - add_proj4text (p, 2, - "84 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +un"); - add_proj4text (p, 3, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Ocotepeque 1935 / El Salvador Lambert\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Ocotepeque 1935\",DATUM[\"Ocotepeque_1935\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"545"); - add_srs_wkt (p, 7, - "1\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",13.78333333333333],PARAMETER["); - add_srs_wkt (p, 9, - "\"central_meridian\",-89],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 10, - "9996704],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",295809.184],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"5460\"]]"); - p = add_epsg_def (filter, first, last, 5461, "epsg", 5461, - "Ocotepeque 1935 / Nicaragua Norte"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=13.86666666666667 +lat_0=13.86666666666"); - add_proj4text (p, 1, - "667 +lon_0=-85.5 +k_0=0.99990314 +x_0=500000 +y_0=359891"); - add_proj4text (p, 2, - ".816 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +"); - add_proj4text (p, 3, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Ocotepeque 1935 / Nicaragua Norte\",GEOGCS[\"Oc"); - add_srs_wkt (p, 1, - "otepeque 1935\",DATUM[\"Ocotepeque_1935\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5451\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",13.86666666666667],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",-85.5],PARAMETER[\"scale_factor\",0.99990"); - add_srs_wkt (p, 10, - "314],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",359891.816],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 13, - "ORITY[\"EPSG\",\"5461\"]]"); - p = add_epsg_def (filter, first, last, 5462, "epsg", 5462, - "Ocotepeque 1935 / Nicaragua Sur"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=11.73333333333333 +lat_0=11.73333333333"); - add_proj4text (p, 1, - "333 +lon_0=-85.5 +k_0=0.9999222800000001 +x_0=500000 +y_"); - add_proj4text (p, 2, - "0=288876.327 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0"); - add_proj4text (p, 3, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Ocotepeque 1935 / Nicaragua Sur\",GEOGCS[\"Ocot"); - add_srs_wkt (p, 1, - "epeque 1935\",DATUM[\"Ocotepeque_1935\",SPHEROID[\"Clark"); - add_srs_wkt (p, 2, - "e 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5451\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",11.73333333333333],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",-85.5],PARAMETER[\"scale_factor\",0.99992"); - add_srs_wkt (p, 10, - "228],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",288876.327],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 13, - "ORITY[\"EPSG\",\"5462\"]]"); - p = add_epsg_def (filter, first, last, 5463, "epsg", 5463, - "SAD69 / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=aust_SA +towgs84=-57,1,-41,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 17N\",GEOGCS[\"SAD69\",DATUM[\""); - add_srs_wkt (p, 1, - "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); - add_srs_wkt (p, 2, - "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-81],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"5463\"]]"); - p = add_epsg_def (filter, first, last, 5464, "epsg", 5464, - "Sibun Gorge 1922"); - add_proj4text (p, 0, - "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 "); - add_proj4text (p, 1, - "+no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Sibun Gorge 1922\",DATUM[\"Sibun_Gorge_1922\",S"); - add_srs_wkt (p, 1, - "PHEROID[\"Clarke 1858\",6378293.645208759,294.2606763692"); - add_srs_wkt (p, 2, - "654,AUTHORITY[\"EPSG\",\"7007\"]],AUTHORITY[\"EPSG\",\"1"); - add_srs_wkt (p, 3, - "071\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 4, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"5464\"]]"); - p = add_epsg_def (filter, first, last, 5466, "epsg", 5466, - "Sibun Gorge 1922 / Colony Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=17.06124194444444 +lon_0=-88.6318575 "); - add_proj4text (p, 1, - "+k=1 +x_0=66220.02833082761 +y_0=135779.5099885299 +a=63"); - add_proj4text (p, 2, - "78293.645208759 +b=6356617.987679838 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Sibun Gorge 1922 / Colony Grid\",GEOGCS[\"Sibun"); - add_srs_wkt (p, 1, - " Gorge 1922\",DATUM[\"Sibun_Gorge_1922\",SPHEROID[\"Clar"); - add_srs_wkt (p, 2, - "ke 1858\",6378293.645208759,294.2606763692654,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7007\"]],AUTHORITY[\"EPSG\",\"1071\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"5464\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",17.0612419444"); - add_srs_wkt (p, 8, - "4444],PARAMETER[\"central_meridian\",-88.6318575],PARAME"); - add_srs_wkt (p, 9, - "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",6622"); - add_srs_wkt (p, 10, - "0.02833082761],PARAMETER[\"false_northing\",135779.50998"); - add_srs_wkt (p, 11, - "85299],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"54"); - add_srs_wkt (p, 13, - "66\"]]"); - p = add_epsg_def (filter, first, last, 5467, "epsg", 5467, - "Panama-Colon 1911"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Panama-Colon 1911\",DATUM[\"Panama_Colon_1911\""); - add_srs_wkt (p, 1, - ",SPHEROID[\"Clarke 1866\",6378206.4,294.9786982138982,AU"); - add_srs_wkt (p, 2, - "THORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"1072\"]"); - add_srs_wkt (p, 3, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 4, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 5, - "122\"]],AUTHORITY[\"EPSG\",\"5467\"]]"); - p = add_epsg_def (filter, first, last, 5469, "epsg", 5469, - "Panama-Colon 1911 / Panama Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=8.416666666666666 +lat_0=8.416666666666"); - add_proj4text (p, 1, - "666 +lon_0=-80 +k_0=0.99989909 +x_0=500000 +y_0=294865.3"); - add_proj4text (p, 2, - "03 +ellps=clrk66 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Panama-Colon 1911 / Panama Lambert\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "anama-Colon 1911\",DATUM[\"Panama_Colon_1911\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"1072\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"5467\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",8.416666"); - add_srs_wkt (p, 8, - "666666666],PARAMETER[\"central_meridian\",-80],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.99989909],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",500000],PARAMETER[\"false_northing\",294865.303],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5469\"]]"); - p = add_epsg_def (filter, first, last, 5472, "epsg", 5472, - "Panama-Colon 1911 / Panama Polyconic"); - add_proj4text (p, 0, - "+proj=poly +lat_0=8.25 +lon_0=-81 +x_0=914391.7962 +y_0="); - add_proj4text (p, 1, - "999404.7217154861 +ellps=clrk66 +to_meter=0.9143917962 +"); - add_proj4text (p, 2, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Panama-Colon 1911 / Panama Polyconic\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Panama-Colon 1911\",DATUM[\"Panama_Colon_1911\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"1072\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"5467\"]],PROJECTION[\"Polyconic\"],PAR"); - add_srs_wkt (p, 7, - "AMETER[\"latitude_of_origin\",8.25],PARAMETER[\"central_"); - add_srs_wkt (p, 8, - "meridian\",-81],PARAMETER[\"false_easting\",1000000],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_northing\",1092972.1],UNIT[\"Clarke's yar"); - add_srs_wkt (p, 10, - "d\",0.9143917962,AUTHORITY[\"EPSG\",\"9037\"]],AXIS[\"Ea"); - add_srs_wkt (p, 11, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"5472\"]]"); - p = add_epsg_def (filter, first, last, 5479, "epsg", 5479, - "RSRGD2000 / MSLC2000"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-78 +lon_0=163 +x_0=7000000 +y_0=5000000 +e"); - add_proj4text (p, 2, - "llps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RSRGD2000 / MSLC2000\",GEOGCS[\"RSRGD2000\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Ross_Sea_Region_Geodetic_Datum_2000\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6764\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4764\"]],PROJECTION[\"Lambe"); - add_srs_wkt (p, 7, - "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); - add_srs_wkt (p, 8, - "1\",-76.66666666666667],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",-79.33333333333333],PARAMETER[\"latitude_of_origin\",-7"); - add_srs_wkt (p, 10, - "8],PARAMETER[\"central_meridian\",163],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_easting\",7000000],PARAMETER[\"false_northing\",5000000"); - add_srs_wkt (p, 12, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 13, - "Northing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPS"); - add_srs_wkt (p, 14, - "G\",\"5479\"]]"); - p = add_epsg_def (filter, first, last, 5480, "epsg", 5480, - "RSRGD2000 / BCLC2000"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-73.66666666666667 +lat_2=-75.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-74.5 +lon_0=165 +x_0=5000000 +y_0=3000000 "); - add_proj4text (p, 2, - "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RSRGD2000 / BCLC2000\",GEOGCS[\"RSRGD2000\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Ross_Sea_Region_Geodetic_Datum_2000\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6764\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4764\"]],PROJECTION[\"Lambe"); - add_srs_wkt (p, 7, - "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); - add_srs_wkt (p, 8, - "1\",-73.66666666666667],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",-75.33333333333333],PARAMETER[\"latitude_of_origin\",-7"); - add_srs_wkt (p, 10, - "4.5],PARAMETER[\"central_meridian\",165],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_easting\",5000000],PARAMETER[\"false_northing\",30000"); - add_srs_wkt (p, 12, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 13, - "\"Northing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"E"); - add_srs_wkt (p, 14, - "PSG\",\"5480\"]]"); - p = add_epsg_def (filter, first, last, 5481, "epsg", 5481, - "RSRGD2000 / PCLC2000"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=-70.66666666666667 +lat_2=-72.333333333"); - add_proj4text (p, 1, - "33333 +lat_0=-71.5 +lon_0=166 +x_0=3000000 +y_0=1000000 "); - add_proj4text (p, 2, - "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RSRGD2000 / PCLC2000\",GEOGCS[\"RSRGD2000\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Ross_Sea_Region_Geodetic_Datum_2000\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6764\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4764\"]],PROJECTION[\"Lambe"); - add_srs_wkt (p, 7, - "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); - add_srs_wkt (p, 8, - "1\",-70.66666666666667],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",-72.33333333333333],PARAMETER[\"latitude_of_origin\",-7"); - add_srs_wkt (p, 10, - "1.5],PARAMETER[\"central_meridian\",166],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_easting\",3000000],PARAMETER[\"false_northing\",10000"); - add_srs_wkt (p, 12, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 13, - "\"Northing\",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"E"); - add_srs_wkt (p, 14, - "PSG\",\"5481\"]]"); - p = add_epsg_def (filter, first, last, 5482, "epsg", 5482, - "RSRGD2000 / RSPS2000"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=180 +k=0.994 +"); - add_proj4text (p, 1, - "x_0=5000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0"); - add_proj4text (p, 2, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RSRGD2000 / RSPS2000\",GEOGCS[\"RSRGD2000\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Ross_Sea_Region_Geodetic_Datum_2000\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6764\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4764\"]],PROJECTION[\"Polar"); - add_srs_wkt (p, 7, - "_Stereographic\"],PARAMETER[\"latitude_of_origin\",-90],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",180],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.994],PARAMETER[\"false_easting\",5000000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Easting\",EAST],AUTHORITY[\"EPSG\",\"5482\"]]"); - p = add_epsg_def (filter, first, last, 5489, "epsg", 5489, - "RGAF09"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"RGAF09\",DATUM[\"Reseau_Geodesique_des_Antilles"); - add_srs_wkt (p, 1, - "_Francaises_2009\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 2, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 3, - ",0],AUTHORITY[\"EPSG\",\"1073\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 5, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"5489\"]]"); - p = add_epsg_def (filter, first, last, 5490, "epsg", 5490, - "RGAF09 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RGAF09 / UTM zone 20N\",GEOGCS[\"RGAF09\",DATUM"); - add_srs_wkt (p, 1, - "[\"Reseau_Geodesique_des_Antilles_Francaises_2009\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"1073\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5489\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",0],PARAMETER[\"central_meridian\",-63],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"5490\"]]"); - p = add_epsg_def (filter, first, last, 5513, "epsg", 5513, - "S-JTSK / Krovak"); - add_proj4text (p, 0, - "+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha"); - add_proj4text (p, 1, - "=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel"); - add_proj4text (p, 2, - " +towgs84=589,76,480,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"S-JTSK / Krovak\",GEOGCS[\"S-JTSK\",DATUM[\"Sys"); - add_srs_wkt (p, 1, - "tem_Jednotne_Trigonometricke_Site_Katastralni\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7004\"]],TOWGS84[589,76,480,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6156\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4156\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Krovak\"],PARAMETER[\"latitude_of_center\",49."); - add_srs_wkt (p, 8, - "5],PARAMETER[\"longitude_of_center\",24.83333333333333],"); - add_srs_wkt (p, 9, - "PARAMETER[\"azimuth\",30.28813972222222],PARAMETER[\"pse"); - add_srs_wkt (p, 10, - "udo_standard_parallel_1\",78.5],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 11, - "\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER[\"fa"); - add_srs_wkt (p, 12, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9001\"]],AXIS[\"X\",SOUTH],AXIS[\"Y\",WEST],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"5513\"]]"); - p = add_epsg_def (filter, first, last, 5518, "epsg", 5518, - "CI1971 / Chatham Islands Map Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=350000 +y"); - add_proj4text (p, 1, - "_0=650000 +ellps=intl +towgs84=175,-38,113,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CI1971 / Chatham Islands Map Grid\",GEOGCS[\"Ch"); - add_srs_wkt (p, 1, - "atham Islands 1971\",DATUM[\"Chatham_Islands_Datum_1971\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7022\"]],TOWGS84[175,-38,113,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6672\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4672\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",-44],PARAMETER[\"central_meridian\",-176.5"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",350000],PARAMETER[\"false_northing\",650000],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AXIS[\"Easting\",EAST],AUTHORITY[\"EPSG\",\"5518"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 5519, "epsg", 5519, - "CI1979 / Chatham Islands Map Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=350000 +y"); - add_proj4text (p, 1, - "_0=650000 +ellps=intl +towgs84=174.05,-25.49,112.57,-0,-"); - add_proj4text (p, 2, - "0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CI1979 / Chatham Islands Map Grid\",GEOGCS[\"Ch"); - add_srs_wkt (p, 1, - "atham Islands 1979\",DATUM[\"Chatham_Islands_Datum_1979\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7022\"]],TOWGS84[174.05,-25.49,112.57,-0,-0,0.5"); - add_srs_wkt (p, 4, - "54,0.2263],AUTHORITY[\"EPSG\",\"6673\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 5, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4673\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"latitude_of_origin\",-44],PARAMETER[\"centr"); - add_srs_wkt (p, 9, - "al_meridian\",-176.5],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",350000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",650000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAST],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"5519\"]]"); - p = add_epsg_def (filter, first, last, 5520, "epsg", 5520, - "DHDN / 3-degree Gauss-Kruger zone 1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +"); - add_proj4text (p, 1, - "datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DHDN / 3-degree Gauss-Kruger zone 1\",GEOGCS[\""); - add_srs_wkt (p, 1, - "DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,"); - add_srs_wkt (p, 4, - "6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 9, - "ian\",3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",1500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 11, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NO"); - add_srs_wkt (p, 12, - "RTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"5520\"]]"); - p = add_epsg_def (filter, first, last, 5523, "epsg", 5523, - "WGS 84 / Gabon TM 2011"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=1500000 "); - add_proj4text (p, 1, - "+y_0=5500000 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / Gabon TM 2011\",GEOGCS[\"WGS 84\",DATU"); - add_srs_wkt (p, 1, - "M[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326"); - add_srs_wkt (p, 3, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 4, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 6, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 7, - ",PARAMETER[\"central_meridian\",11.5],PARAMETER[\"scale_"); - add_srs_wkt (p, 8, - "factor\",0.9996],PARAMETER[\"false_easting\",1500000],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_northing\",5500000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 10, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 11, - "ORTH],AUTHORITY[\"EPSG\",\"5523\"]]"); - p = add_epsg_def (filter, first, last, 5524, "epsg", 5524, - "Corrego Alegre 1961"); - add_proj4text (p, 0, - "+proj=longlat +ellps=intl +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"Corrego Alegre 1961\",DATUM[\"Corrego_Alegre_19"); - add_srs_wkt (p, 1, - "61\",SPHEROID[\"International 1924\",6378388,297,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\",\"1074\"]],PRI"); - add_srs_wkt (p, 3, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 4, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 5, - "],AUTHORITY[\"EPSG\",\"5524\"]]"); - p = add_epsg_def (filter, first, last, 5527, "epsg", 5527, - "SAD69(96)"); - add_proj4text (p, 0, - "+proj=longlat +ellps=aust_SA +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"SAD69(96)\",DATUM[\"South_American_Datum_1969_9"); - add_srs_wkt (p, 1, - "6\",SPHEROID[\"GRS 1967 Modified\",6378160,298.25,AUTHOR"); - add_srs_wkt (p, 2, - "ITY[\"EPSG\",\"7050\"]],AUTHORITY[\"EPSG\",\"1075\"]],PR"); - add_srs_wkt (p, 3, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 4, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 5, - "]],AUTHORITY[\"EPSG\",\"5527\"]]"); - p = add_epsg_def (filter, first, last, 5530, "epsg", 5530, - "SAD69(96) / Brazil Polyconic"); - add_proj4text (p, 0, - "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=1000000"); - add_proj4text (p, 1, - "0 +ellps=aust_SA +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69(96) / Brazil Polyconic\",GEOGCS[\"SAD69(9"); - add_srs_wkt (p, 1, - "6)\",DATUM[\"South_American_Datum_1969_96\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "050\"]],AUTHORITY[\"EPSG\",\"1075\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"5527\"]],PROJECTION[\"Polyconic\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "54],PARAMETER[\"false_easting\",5000000],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 10, - "G\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"5530\"]]"); - p = add_epsg_def (filter, first, last, 5531, "epsg", 5531, - "SAD69(96) / UTM zone 21S"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +south +ellps=aust_SA +units=m +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69(96) / UTM zone 21S\",GEOGCS[\"SAD69(96)\""); - add_srs_wkt (p, 1, - ",DATUM[\"South_American_Datum_1969_96\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"1075\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"5527\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",500000],PARAMETER[\"false_northing\",1000"); - add_srs_wkt (p, 10, - "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 11, - "S[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"5531\"]]"); - p = add_epsg_def (filter, first, last, 5532, "epsg", 5532, - "SAD69(96) / UTM zone 22S"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-57,1,"); - add_proj4text (p, 1, - "-41,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69(96) / UTM zone 22S\",GEOGCS[\"SAD69\",DAT"); - add_srs_wkt (p, 1, - "UM[\"South_American_Datum_1969\",SPHEROID[\"GRS 1967 Mod"); - add_srs_wkt (p, 2, - "ified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-51],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"5532\"]]"); - p = add_epsg_def (filter, first, last, 5533, "epsg", 5533, - "SAD69(96) / UTM zone 23S"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +south +ellps=aust_SA +units=m +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69(96) / UTM zone 23S\",GEOGCS[\"SAD69(96)\""); - add_srs_wkt (p, 1, - ",DATUM[\"South_American_Datum_1969_96\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"1075\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"5527\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",500000],PARAMETER[\"false_northing\",1000"); - add_srs_wkt (p, 10, - "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 11, - "S[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"5533\"]]"); - p = add_epsg_def (filter, first, last, 5534, "epsg", 5534, - "SAD69(96) / UTM zone 24S"); - add_proj4text (p, 0, - "+proj=utm +zone=24 +south +ellps=aust_SA +units=m +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69(96) / UTM zone 24S\",GEOGCS[\"SAD69(96)\""); - add_srs_wkt (p, 1, - ",DATUM[\"South_American_Datum_1969_96\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"1075\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"5527\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",500000],PARAMETER[\"false_northing\",1000"); - add_srs_wkt (p, 10, - "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 11, - "S[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"5534\"]]"); - p = add_epsg_def (filter, first, last, 5535, "epsg", 5535, - "SAD69(96) / UTM zone 25S"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +south +ellps=aust_SA +units=m +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69(96) / UTM zone 25S\",GEOGCS[\"SAD69(96)\""); - add_srs_wkt (p, 1, - ",DATUM[\"South_American_Datum_1969_96\",SPHEROID[\"GRS 1"); - add_srs_wkt (p, 2, - "967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"1075\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"5527\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",500000],PARAMETER[\"false_northing\",1000"); - add_srs_wkt (p, 10, - "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 11, - "S[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"5535\"]]"); - p = add_epsg_def (filter, first, last, 5536, "epsg", 5536, - "Corrego Alegre 1961 / UTM zone 21S"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +south +ellps=intl +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Corrego Alegre 1961 / UTM zone 21S\",GEOGCS[\"C"); - add_srs_wkt (p, 1, - "orrego Alegre 1961\",DATUM[\"Corrego_Alegre_1961\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7022\"]],AUTHORITY[\"EPSG\",\"1074\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"5524\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-57],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"5536\"]]"); - p = add_epsg_def (filter, first, last, 5537, "epsg", 5537, - "Corrego Alegre 1961 / UTM zone 22S"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +south +ellps=intl +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Corrego Alegre 1961 / UTM zone 22S\",GEOGCS[\"C"); - add_srs_wkt (p, 1, - "orrego Alegre 1961\",DATUM[\"Corrego_Alegre_1961\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7022\"]],AUTHORITY[\"EPSG\",\"1074\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"5524\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-51],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"5537\"]]"); - p = add_epsg_def (filter, first, last, 5538, "epsg", 5538, - "Corrego Alegre 1961 / UTM zone 23S"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +south +ellps=intl +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Corrego Alegre 1961 / UTM zone 23S\",GEOGCS[\"C"); - add_srs_wkt (p, 1, - "orrego Alegre 1961\",DATUM[\"Corrego_Alegre_1961\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7022\"]],AUTHORITY[\"EPSG\",\"1074\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"5524\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-45],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"5538\"]]"); - p = add_epsg_def (filter, first, last, 5539, "epsg", 5539, - "Corrego Alegre 1961 / UTM zone 24S"); - add_proj4text (p, 0, - "+proj=utm +zone=24 +south +ellps=intl +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Corrego Alegre 1961 / UTM zone 24S\",GEOGCS[\"C"); - add_srs_wkt (p, 1, - "orrego Alegre 1961\",DATUM[\"Corrego_Alegre_1961\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7022\"]],AUTHORITY[\"EPSG\",\"1074\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"5524\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-39],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"5539\"]]"); - p = add_epsg_def (filter, first, last, 5546, "epsg", 5546, - "PNG94"); - add_proj4text (p, 0, - "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); - add_proj4text (p, 1, - "fs"); - add_srs_wkt (p, 0, - "GEOGCS[\"PNG94\",DATUM[\"Papua_New_Guinea_Geodetic_Datum"); - add_srs_wkt (p, 1, - "_1994\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"1076\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5546\""); - add_srs_wkt (p, 6, - "]]"); - p = add_epsg_def (filter, first, last, 5550, "epsg", 5550, - "PNG94 / PNGMG94 zone 54"); - add_proj4text (p, 0, - "+proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PNG94 / PNGMG94 zone 54\",GEOGCS[\"PNG94\",DATU"); - add_srs_wkt (p, 1, - "M[\"Papua_New_Guinea_Geodetic_Datum_1994\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1076\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"5546\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",141],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 12, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"5550\"]]"); - p = add_epsg_def (filter, first, last, 5551, "epsg", 5551, - "PNG94 / PNGMG94 zone 55"); - add_proj4text (p, 0, - "+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PNG94 / PNGMG94 zone 55\",GEOGCS[\"PNG94\",DATU"); - add_srs_wkt (p, 1, - "M[\"Papua_New_Guinea_Geodetic_Datum_1994\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1076\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"5546\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",147],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 12, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"5551\"]]"); - p = add_epsg_def (filter, first, last, 5552, "epsg", 5552, - "PNG94 / PNGMG94 zone 56"); - add_proj4text (p, 0, - "+proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PNG94 / PNGMG94 zone 56\",GEOGCS[\"PNG94\",DATU"); - add_srs_wkt (p, 1, - "M[\"Papua_New_Guinea_Geodetic_Datum_1994\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1076\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"5546\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",153],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 12, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"5552\"]]"); - p = add_epsg_def (filter, first, last, 5559, "epsg", 5559, - "Ocotepeque 1935 / Guatemala Norte"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666"); - add_proj4text (p, 1, - "667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=50000"); - add_proj4text (p, 2, - "0 +y_0=292209.579 +ellps=clrk66 +towgs84=213.11,9.37,-74"); - add_proj4text (p, 3, - ".95,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Ocotepeque 1935 / Guatemala Norte\",GEOGCS[\"Oc"); - add_srs_wkt (p, 1, - "otepeque 1935\",DATUM[\"Ocotepeque_1935\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5451\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",16.81666666666667],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",-90.33333333333333],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 10, - "tor\",0.99992226],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_northing\",292209.579],UNIT[\"metre\",1,"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 13, - ",NORTH],AUTHORITY[\"EPSG\",\"5559\"]]"); - p = add_epsg_def (filter, first, last, 20004, "epsg", 20004, - "Pulkovo 1995 / Gauss-Kruger zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 4\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",21],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",45000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"20004\"]]"); - p = add_epsg_def (filter, first, last, 20005, "epsg", 20005, - "Pulkovo 1995 / Gauss-Kruger zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 5\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",27],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",55000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"20005\"]]"); - p = add_epsg_def (filter, first, last, 20006, "epsg", 20006, - "Pulkovo 1995 / Gauss-Kruger zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 6\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",33],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",65000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"20006\"]]"); - p = add_epsg_def (filter, first, last, 20007, "epsg", 20007, - "Pulkovo 1995 / Gauss-Kruger zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 7\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",39],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",75000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"20007\"]]"); - p = add_epsg_def (filter, first, last, 20008, "epsg", 20008, - "Pulkovo 1995 / Gauss-Kruger zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 8\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",45],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",85000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"20008\"]]"); - p = add_epsg_def (filter, first, last, 20009, "epsg", 20009, - "Pulkovo 1995 / Gauss-Kruger zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 9\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 8, - "f_origin\",0],PARAMETER[\"central_meridian\",51],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",95000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "EAST],AUTHORITY[\"EPSG\",\"20009\"]]"); - p = add_epsg_def (filter, first, last, 20010, "epsg", 20010, - "Pulkovo 1995 / Gauss-Kruger zone 10"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 10\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",57],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",105"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"20010\"]]"); - p = add_epsg_def (filter, first, last, 20011, "epsg", 20011, - "Pulkovo 1995 / Gauss-Kruger zone 11"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 11\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",63],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",115"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"20011\"]]"); - p = add_epsg_def (filter, first, last, 20012, "epsg", 20012, - "Pulkovo 1995 / Gauss-Kruger zone 12"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 12\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",69],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",125"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"20012\"]]"); - p = add_epsg_def (filter, first, last, 20013, "epsg", 20013, - "Pulkovo 1995 / Gauss-Kruger zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 13\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",75],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",135"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"20013\"]]"); - p = add_epsg_def (filter, first, last, 20014, "epsg", 20014, - "Pulkovo 1995 / Gauss-Kruger zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 14\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",81],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",145"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"20014\"]]"); - p = add_epsg_def (filter, first, last, 20015, "epsg", 20015, - "Pulkovo 1995 / Gauss-Kruger zone 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 15\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",87],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",155"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"20015\"]]"); - p = add_epsg_def (filter, first, last, 20016, "epsg", 20016, - "Pulkovo 1995 / Gauss-Kruger zone 16"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 16\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",93],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",165"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"20016\"]]"); - p = add_epsg_def (filter, first, last, 20017, "epsg", 20017, - "Pulkovo 1995 / Gauss-Kruger zone 17"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 17\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",99],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",175"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"20017\"]]"); - p = add_epsg_def (filter, first, last, 20018, "epsg", 20018, - "Pulkovo 1995 / Gauss-Kruger zone 18"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 18\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",105],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",18"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"20018\"]]"); - p = add_epsg_def (filter, first, last, 20019, "epsg", 20019, - "Pulkovo 1995 / Gauss-Kruger zone 19"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 19\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",111],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",19"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"20019\"]]"); - p = add_epsg_def (filter, first, last, 20020, "epsg", 20020, - "Pulkovo 1995 / Gauss-Kruger zone 20"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 20\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",117],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",20"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"20020\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_27.c b/src/spatialite/src/srsinit/epsg_inlined_27.c deleted file mode 100644 index 7e28bf1..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_27.c +++ /dev/null @@ -1,3446 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_27 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 20021, "epsg", 20021, - "Pulkovo 1995 / Gauss-Kruger zone 21"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 21\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",123],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",21"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"20021\"]]"); - p = add_epsg_def (filter, first, last, 20022, "epsg", 20022, - "Pulkovo 1995 / Gauss-Kruger zone 22"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 22\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",129],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",22"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"20022\"]]"); - p = add_epsg_def (filter, first, last, 20023, "epsg", 20023, - "Pulkovo 1995 / Gauss-Kruger zone 23"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 23\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",135],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",23"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"20023\"]]"); - p = add_epsg_def (filter, first, last, 20024, "epsg", 20024, - "Pulkovo 1995 / Gauss-Kruger zone 24"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 24\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",141],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",24"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"20024\"]]"); - p = add_epsg_def (filter, first, last, 20025, "epsg", 20025, - "Pulkovo 1995 / Gauss-Kruger zone 25"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 25\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",147],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",25"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"20025\"]]"); - p = add_epsg_def (filter, first, last, 20026, "epsg", 20026, - "Pulkovo 1995 / Gauss-Kruger zone 26"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 26\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",153],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",26"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"20026\"]]"); - p = add_epsg_def (filter, first, last, 20027, "epsg", 20027, - "Pulkovo 1995 / Gauss-Kruger zone 27"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 27\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",159],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",27"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"20027\"]]"); - p = add_epsg_def (filter, first, last, 20028, "epsg", 20028, - "Pulkovo 1995 / Gauss-Kruger zone 28"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 28\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",165],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",28"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"20028\"]]"); - p = add_epsg_def (filter, first, last, 20029, "epsg", 20029, - "Pulkovo 1995 / Gauss-Kruger zone 29"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 29\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",171],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",29"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"20029\"]]"); - p = add_epsg_def (filter, first, last, 20030, "epsg", 20030, - "Pulkovo 1995 / Gauss-Kruger zone 30"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); - add_proj4text (p, 2, - "-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 30\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",177],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",30"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"20030\"]]"); - p = add_epsg_def (filter, first, last, 20031, "epsg", 20031, - "Pulkovo 1995 / Gauss-Kruger zone 31"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13"); - add_proj4text (p, 2, - ",-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 31\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",-177],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",3"); - add_srs_wkt (p, 10, - "1500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"20031\"]]"); - p = add_epsg_def (filter, first, last, 20032, "epsg", 20032, - "Pulkovo 1995 / Gauss-Kruger zone 32"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13"); - add_proj4text (p, 2, - ",-0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 32\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",-171],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",3"); - add_srs_wkt (p, 10, - "2500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"20032\"]]"); - p = add_epsg_def (filter, first, last, 20064, "epsg", 20064, - "Pulkovo 1995 / Gauss-Kruger 4N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 4N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",21"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20064\"]]"); - p = add_epsg_def (filter, first, last, 20065, "epsg", 20065, - "Pulkovo 1995 / Gauss-Kruger 5N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 5N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",27"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20065\"]]"); - p = add_epsg_def (filter, first, last, 20066, "epsg", 20066, - "Pulkovo 1995 / Gauss-Kruger 6N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 6N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",33"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20066\"]]"); - p = add_epsg_def (filter, first, last, 20067, "epsg", 20067, - "Pulkovo 1995 / Gauss-Kruger 7N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 7N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",39"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20067\"]]"); - p = add_epsg_def (filter, first, last, 20068, "epsg", 20068, - "Pulkovo 1995 / Gauss-Kruger 8N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 8N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",45"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20068\"]]"); - p = add_epsg_def (filter, first, last, 20069, "epsg", 20069, - "Pulkovo 1995 / Gauss-Kruger 9N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 9N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",0],PARAMETER[\"central_meridian\",51"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20069\"]]"); - p = add_epsg_def (filter, first, last, 20070, "epsg", 20070, - "Pulkovo 1995 / Gauss-Kruger 10N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 10N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20070\"]]"); - p = add_epsg_def (filter, first, last, 20071, "epsg", 20071, - "Pulkovo 1995 / Gauss-Kruger 11N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 11N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20071\"]]"); - p = add_epsg_def (filter, first, last, 20072, "epsg", 20072, - "Pulkovo 1995 / Gauss-Kruger 12N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 12N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20072\"]]"); - p = add_epsg_def (filter, first, last, 20073, "epsg", 20073, - "Pulkovo 1995 / Gauss-Kruger 13N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 13N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20073\"]]"); - p = add_epsg_def (filter, first, last, 20074, "epsg", 20074, - "Pulkovo 1995 / Gauss-Kruger 14N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 14N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20074\"]]"); - p = add_epsg_def (filter, first, last, 20075, "epsg", 20075, - "Pulkovo 1995 / Gauss-Kruger 15N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 15N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20075\"]]"); - p = add_epsg_def (filter, first, last, 20076, "epsg", 20076, - "Pulkovo 1995 / Gauss-Kruger 16N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 16N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20076\"]]"); - p = add_epsg_def (filter, first, last, 20077, "epsg", 20077, - "Pulkovo 1995 / Gauss-Kruger 17N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); - add_proj4text (p, 2, - "22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 17N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20077\"]]"); - p = add_epsg_def (filter, first, last, 20078, "epsg", 20078, - "Pulkovo 1995 / Gauss-Kruger 18N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 18N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "05],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20078\"]]"); - p = add_epsg_def (filter, first, last, 20079, "epsg", 20079, - "Pulkovo 1995 / Gauss-Kruger 19N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 19N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "11],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20079\"]]"); - p = add_epsg_def (filter, first, last, 20080, "epsg", 20080, - "Pulkovo 1995 / Gauss-Kruger 20N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 20N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "17],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20080\"]]"); - p = add_epsg_def (filter, first, last, 20081, "epsg", 20081, - "Pulkovo 1995 / Gauss-Kruger 21N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 21N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "23],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20081\"]]"); - p = add_epsg_def (filter, first, last, 20082, "epsg", 20082, - "Pulkovo 1995 / Gauss-Kruger 22N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 22N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "29],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20082\"]]"); - p = add_epsg_def (filter, first, last, 20083, "epsg", 20083, - "Pulkovo 1995 / Gauss-Kruger 23N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 23N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "35],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20083\"]]"); - p = add_epsg_def (filter, first, last, 20084, "epsg", 20084, - "Pulkovo 1995 / Gauss-Kruger 24N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 24N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "41],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20084\"]]"); - p = add_epsg_def (filter, first, last, 20085, "epsg", 20085, - "Pulkovo 1995 / Gauss-Kruger 25N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 25N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "47],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20085\"]]"); - p = add_epsg_def (filter, first, last, 20086, "epsg", 20086, - "Pulkovo 1995 / Gauss-Kruger 26N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 26N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "53],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20086\"]]"); - p = add_epsg_def (filter, first, last, 20087, "epsg", 20087, - "Pulkovo 1995 / Gauss-Kruger 27N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 27N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "59],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20087\"]]"); - p = add_epsg_def (filter, first, last, 20088, "epsg", 20088, - "Pulkovo 1995 / Gauss-Kruger 28N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 28N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "65],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20088\"]]"); - p = add_epsg_def (filter, first, last, 20089, "epsg", 20089, - "Pulkovo 1995 / Gauss-Kruger 29N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 29N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "71],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20089\"]]"); - p = add_epsg_def (filter, first, last, 20090, "epsg", 20090, - "Pulkovo 1995 / Gauss-Kruger 30N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); - add_proj4text (p, 2, - ".22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 30N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "77],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20090\"]]"); - p = add_epsg_def (filter, first, last, 20091, "epsg", 20091, - "Pulkovo 1995 / Gauss-Kruger 31N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 31N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "177],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20091\"]]"); - p = add_epsg_def (filter, first, last, 20092, "epsg", 20092, - "Pulkovo 1995 / Gauss-Kruger 32N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); - add_proj4text (p, 2, - "0.22 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 32N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "171],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"20092\"]]"); - p = add_epsg_def (filter, first, last, 20135, "epsg", 20135, - "Adindan / UTM zone 35N"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +ellps=clrk80 +towgs84=-166,-15,204,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Adindan / UTM zone 35N\",GEOGCS[\"Adindan\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Adindan\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 2, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-166,-15"); - add_srs_wkt (p, 3, - ",204,0,0,0,0],AUTHORITY[\"EPSG\",\"6201\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 4, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4201\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",27],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"20135\"]]"); - p = add_epsg_def (filter, first, last, 20136, "epsg", 20136, - "Adindan / UTM zone 36N"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +ellps=clrk80 +towgs84=-166,-15,204,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Adindan / UTM zone 36N\",GEOGCS[\"Adindan\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Adindan\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 2, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-166,-15"); - add_srs_wkt (p, 3, - ",204,0,0,0,0],AUTHORITY[\"EPSG\",\"6201\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 4, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4201\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",33],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"20136\"]]"); - p = add_epsg_def (filter, first, last, 20137, "epsg", 20137, - "Adindan / UTM zone 37N"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +ellps=clrk80 +towgs84=-166,-15,204,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Adindan / UTM zone 37N\",GEOGCS[\"Adindan\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Adindan\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 2, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-166,-15"); - add_srs_wkt (p, 3, - ",204,0,0,0,0],AUTHORITY[\"EPSG\",\"6201\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 4, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4201\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",39],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"20137\"]]"); - p = add_epsg_def (filter, first, last, 20138, "epsg", 20138, - "Adindan / UTM zone 38N"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +ellps=clrk80 +towgs84=-166,-15,204,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Adindan / UTM zone 38N\",GEOGCS[\"Adindan\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Adindan\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); - add_srs_wkt (p, 2, - "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-166,-15"); - add_srs_wkt (p, 3, - ",204,0,0,0,0],AUTHORITY[\"EPSG\",\"6201\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 4, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4201\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",45],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"20138\"]]"); - p = add_epsg_def (filter, first, last, 20248, "epsg", 20248, - "AGD66 / AMG zone 48"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +south +ellps=aust_SA +towgs84=-117.8"); - add_proj4text (p, 1, - "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD66 / AMG zone 48\",GEOGCS[\"AGD66\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); - add_srs_wkt (p, 4, - "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 9, - "meridian\",105],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 11, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"20248\"]]"); - p = add_epsg_def (filter, first, last, 20249, "epsg", 20249, - "AGD66 / AMG zone 49"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +south +ellps=aust_SA +towgs84=-117.8"); - add_proj4text (p, 1, - "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD66 / AMG zone 49\",GEOGCS[\"AGD66\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); - add_srs_wkt (p, 4, - "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 9, - "meridian\",111],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 11, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"20249\"]]"); - p = add_epsg_def (filter, first, last, 20250, "epsg", 20250, - "AGD66 / AMG zone 50"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +south +ellps=aust_SA +towgs84=-117.8"); - add_proj4text (p, 1, - "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD66 / AMG zone 50\",GEOGCS[\"AGD66\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); - add_srs_wkt (p, 4, - "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 9, - "meridian\",117],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 11, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"20250\"]]"); - p = add_epsg_def (filter, first, last, 20251, "epsg", 20251, - "AGD66 / AMG zone 51"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +south +ellps=aust_SA +towgs84=-117.8"); - add_proj4text (p, 1, - "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD66 / AMG zone 51\",GEOGCS[\"AGD66\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); - add_srs_wkt (p, 4, - "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 9, - "meridian\",123],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 11, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"20251\"]]"); - p = add_epsg_def (filter, first, last, 20252, "epsg", 20252, - "AGD66 / AMG zone 52"); - add_proj4text (p, 0, - "+proj=utm +zone=52 +south +ellps=aust_SA +towgs84=-117.8"); - add_proj4text (p, 1, - "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD66 / AMG zone 52\",GEOGCS[\"AGD66\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); - add_srs_wkt (p, 4, - "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 9, - "meridian\",129],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 11, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"20252\"]]"); - p = add_epsg_def (filter, first, last, 20253, "epsg", 20253, - "AGD66 / AMG zone 53"); - add_proj4text (p, 0, - "+proj=utm +zone=53 +south +ellps=aust_SA +towgs84=-117.8"); - add_proj4text (p, 1, - "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD66 / AMG zone 53\",GEOGCS[\"AGD66\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); - add_srs_wkt (p, 4, - "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 9, - "meridian\",135],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 11, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"20253\"]]"); - p = add_epsg_def (filter, first, last, 20254, "epsg", 20254, - "AGD66 / AMG zone 54"); - add_proj4text (p, 0, - "+proj=utm +zone=54 +south +ellps=aust_SA +towgs84=-117.8"); - add_proj4text (p, 1, - "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD66 / AMG zone 54\",GEOGCS[\"AGD66\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); - add_srs_wkt (p, 4, - "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 9, - "meridian\",141],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 11, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"20254\"]]"); - p = add_epsg_def (filter, first, last, 20255, "epsg", 20255, - "AGD66 / AMG zone 55"); - add_proj4text (p, 0, - "+proj=utm +zone=55 +south +ellps=aust_SA +towgs84=-117.8"); - add_proj4text (p, 1, - "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD66 / AMG zone 55\",GEOGCS[\"AGD66\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); - add_srs_wkt (p, 4, - "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 9, - "meridian\",147],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 11, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"20255\"]]"); - p = add_epsg_def (filter, first, last, 20256, "epsg", 20256, - "AGD66 / AMG zone 56"); - add_proj4text (p, 0, - "+proj=utm +zone=56 +south +ellps=aust_SA +towgs84=-117.8"); - add_proj4text (p, 1, - "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD66 / AMG zone 56\",GEOGCS[\"AGD66\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); - add_srs_wkt (p, 4, - "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 9, - "meridian\",153],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 11, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"20256\"]]"); - p = add_epsg_def (filter, first, last, 20257, "epsg", 20257, - "AGD66 / AMG zone 57"); - add_proj4text (p, 0, - "+proj=utm +zone=57 +south +ellps=aust_SA +towgs84=-117.8"); - add_proj4text (p, 1, - "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD66 / AMG zone 57\",GEOGCS[\"AGD66\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); - add_srs_wkt (p, 4, - "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 9, - "meridian\",159],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 11, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"20257\"]]"); - p = add_epsg_def (filter, first, last, 20258, "epsg", 20258, - "AGD66 / AMG zone 58"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=aust_SA +towgs84=-117.8"); - add_proj4text (p, 1, - "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD66 / AMG zone 58\",GEOGCS[\"AGD66\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); - add_srs_wkt (p, 4, - "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 5, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 9, - "meridian\",165],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 11, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"20258\"]]"); - p = add_epsg_def (filter, first, last, 20348, "epsg", 20348, - "AGD84 / AMG zone 48"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +south +ellps=aust_SA +towgs84=-134,-"); - add_proj4text (p, 1, - "48,149,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD84 / AMG zone 48\",GEOGCS[\"AGD84\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",105],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20348\"]]"); - p = add_epsg_def (filter, first, last, 20349, "epsg", 20349, - "AGD84 / AMG zone 49"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +south +ellps=aust_SA +towgs84=-134,-"); - add_proj4text (p, 1, - "48,149,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD84 / AMG zone 49\",GEOGCS[\"AGD84\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",111],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20349\"]]"); - p = add_epsg_def (filter, first, last, 20350, "epsg", 20350, - "AGD84 / AMG zone 50"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +south +ellps=aust_SA +towgs84=-134,-"); - add_proj4text (p, 1, - "48,149,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD84 / AMG zone 50\",GEOGCS[\"AGD84\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",117],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20350\"]]"); - p = add_epsg_def (filter, first, last, 20351, "epsg", 20351, - "AGD84 / AMG zone 51"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +south +ellps=aust_SA +towgs84=-134,-"); - add_proj4text (p, 1, - "48,149,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD84 / AMG zone 51\",GEOGCS[\"AGD84\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",123],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20351\"]]"); - p = add_epsg_def (filter, first, last, 20352, "epsg", 20352, - "AGD84 / AMG zone 52"); - add_proj4text (p, 0, - "+proj=utm +zone=52 +south +ellps=aust_SA +towgs84=-134,-"); - add_proj4text (p, 1, - "48,149,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD84 / AMG zone 52\",GEOGCS[\"AGD84\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",129],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20352\"]]"); - p = add_epsg_def (filter, first, last, 20353, "epsg", 20353, - "AGD84 / AMG zone 53"); - add_proj4text (p, 0, - "+proj=utm +zone=53 +south +ellps=aust_SA +towgs84=-134,-"); - add_proj4text (p, 1, - "48,149,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD84 / AMG zone 53\",GEOGCS[\"AGD84\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",135],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20353\"]]"); - p = add_epsg_def (filter, first, last, 20354, "epsg", 20354, - "AGD84 / AMG zone 54"); - add_proj4text (p, 0, - "+proj=utm +zone=54 +south +ellps=aust_SA +towgs84=-134,-"); - add_proj4text (p, 1, - "48,149,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD84 / AMG zone 54\",GEOGCS[\"AGD84\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",141],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20354\"]]"); - p = add_epsg_def (filter, first, last, 20355, "epsg", 20355, - "AGD84 / AMG zone 55"); - add_proj4text (p, 0, - "+proj=utm +zone=55 +south +ellps=aust_SA +towgs84=-134,-"); - add_proj4text (p, 1, - "48,149,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD84 / AMG zone 55\",GEOGCS[\"AGD84\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",147],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20355\"]]"); - p = add_epsg_def (filter, first, last, 20356, "epsg", 20356, - "AGD84 / AMG zone 56"); - add_proj4text (p, 0, - "+proj=utm +zone=56 +south +ellps=aust_SA +towgs84=-134,-"); - add_proj4text (p, 1, - "48,149,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD84 / AMG zone 56\",GEOGCS[\"AGD84\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",153],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20356\"]]"); - p = add_epsg_def (filter, first, last, 20357, "epsg", 20357, - "AGD84 / AMG zone 57"); - add_proj4text (p, 0, - "+proj=utm +zone=57 +south +ellps=aust_SA +towgs84=-134,-"); - add_proj4text (p, 1, - "48,149,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD84 / AMG zone 57\",GEOGCS[\"AGD84\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",159],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20357\"]]"); - p = add_epsg_def (filter, first, last, 20358, "epsg", 20358, - "AGD84 / AMG zone 58"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=aust_SA +towgs84=-134,-"); - add_proj4text (p, 1, - "48,149,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"AGD84 / AMG zone 58\",GEOGCS[\"AGD84\",DATUM[\""); - add_srs_wkt (p, 1, - "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); - add_srs_wkt (p, 2, - "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",165],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20358\"]]"); - p = add_epsg_def (filter, first, last, 20436, "epsg", 20436, - "Ain el Abd / UTM zone 36N"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +ellps=intl +towgs84=-143,-236,7,0,0,"); - add_proj4text (p, 1, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Ain el Abd / UTM zone 36N\",GEOGCS[\"Ain el Abd"); - add_srs_wkt (p, 1, - "\",DATUM[\"Ain_el_Abd_1970\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\",\"6204\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4204\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",33],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 9, - "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"20436\"]]"); - p = add_epsg_def (filter, first, last, 20437, "epsg", 20437, - "Ain el Abd / UTM zone 37N"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +ellps=intl +towgs84=-143,-236,7,0,0,"); - add_proj4text (p, 1, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Ain el Abd / UTM zone 37N\",GEOGCS[\"Ain el Abd"); - add_srs_wkt (p, 1, - "\",DATUM[\"Ain_el_Abd_1970\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\",\"6204\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4204\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",39],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 9, - "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"20437\"]]"); - p = add_epsg_def (filter, first, last, 20438, "epsg", 20438, - "Ain el Abd / UTM zone 38N"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +ellps=intl +towgs84=-143,-236,7,0,0,"); - add_proj4text (p, 1, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Ain el Abd / UTM zone 38N\",GEOGCS[\"Ain el Abd"); - add_srs_wkt (p, 1, - "\",DATUM[\"Ain_el_Abd_1970\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\",\"6204\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4204\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",45],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 9, - "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"20438\"]]"); - p = add_epsg_def (filter, first, last, 20439, "epsg", 20439, - "Ain el Abd / UTM zone 39N"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=intl +towgs84=-143,-236,7,0,0,"); - add_proj4text (p, 1, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Ain el Abd / UTM zone 39N\",GEOGCS[\"Ain el Abd"); - add_srs_wkt (p, 1, - "\",DATUM[\"Ain_el_Abd_1970\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\",\"6204\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4204\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",51],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 9, - "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"20439\"]]"); - p = add_epsg_def (filter, first, last, 20440, "epsg", 20440, - "Ain el Abd / UTM zone 40N"); - add_proj4text (p, 0, - "+proj=utm +zone=40 +ellps=intl +towgs84=-143,-236,7,0,0,"); - add_proj4text (p, 1, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Ain el Abd / UTM zone 40N\",GEOGCS[\"Ain el Abd"); - add_srs_wkt (p, 1, - "\",DATUM[\"Ain_el_Abd_1970\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\",\"6204\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4204\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",57],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 9, - "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"20440\"]]"); - p = add_epsg_def (filter, first, last, 20499, "epsg", 20499, - "Ain el Abd / Bahrain Grid"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=intl +towgs84=-143,-236,7,0,0,"); - add_proj4text (p, 1, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Ain el Abd / Bahrain Grid\",GEOGCS[\"Ain el Abd"); - add_srs_wkt (p, 1, - "\",DATUM[\"Ain_el_Abd_1970\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\",\"6204\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4204\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",51],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 9, - "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"20499\"]]"); - p = add_epsg_def (filter, first, last, 20538, "epsg", 20538, - "Afgooye / UTM zone 38N"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +ellps=krass +towgs84=-43,-163,45,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Afgooye / UTM zone 38N\",GEOGCS[\"Afgooye\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Afgooye\",SPHEROID[\"Krassowsky 1940\",6378245,298."); - add_srs_wkt (p, 2, - "3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[-43,-163,45,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6205\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4205\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 10, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 11, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"20538\"]]"); - p = add_epsg_def (filter, first, last, 20539, "epsg", 20539, - "Afgooye / UTM zone 39N"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=krass +towgs84=-43,-163,45,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Afgooye / UTM zone 39N\",GEOGCS[\"Afgooye\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Afgooye\",SPHEROID[\"Krassowsky 1940\",6378245,298."); - add_srs_wkt (p, 2, - "3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[-43,-163,45,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6205\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4205\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 10, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 11, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"20539\"]]"); - p = add_epsg_def (filter, first, last, 20790, "epsg", 20790, - "Lisbon (Lisbon) / Portuguese National Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0="); - add_proj4text (p, 1, - "200000 +y_0=300000 +ellps=intl +towgs84=-304.046,-60.576"); - add_proj4text (p, 2, - ",103.64,0,0,0,0 +pm=lisbon +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Lisbon (Lisbon) / Portuguese National Grid\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"Lisbon (Lisbon)\",DATUM[\"Lisbon_1937_Lisbon\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"International 1924\",6378388,297,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7022\"]],TOWGS84[-304.046,-60.576,103.64,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6803\"]],PRIMEM[\"Lisbon\",-9.1319"); - add_srs_wkt (p, 5, - "06111111112,AUTHORITY[\"EPSG\",\"8902\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4803\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",39.66666666666666],"); - add_srs_wkt (p, 9, - "PARAMETER[\"central_meridian\",1],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 10, - "or\",1],PARAMETER[\"false_easting\",200000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",300000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"20790\"]]"); - p = add_epsg_def (filter, first, last, 20791, "epsg", 20791, - "Lisbon (Lisbon) / Portuguese Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0="); - add_proj4text (p, 1, - "0 +y_0=0 +ellps=intl +towgs84=-304.046,-60.576,103.64,0,"); - add_proj4text (p, 2, - "0,0,0 +pm=lisbon +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Lisbon (Lisbon) / Portuguese Grid\",GEOGCS[\"Li"); - add_srs_wkt (p, 1, - "sbon (Lisbon)\",DATUM[\"Lisbon_1937_Lisbon\",SPHEROID[\""); - add_srs_wkt (p, 2, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "22\"]],TOWGS84[-304.046,-60.576,103.64,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"6803\"]],PRIMEM[\"Lisbon\",-9.1319061111111"); - add_srs_wkt (p, 5, - "12,AUTHORITY[\"EPSG\",\"8902\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4803\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"latitude_of_origin\",39.66666666666666],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"central_meridian\",1],PARAMETER[\"scale_factor\",1],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); - add_srs_wkt (p, 11, - "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"20"); - add_srs_wkt (p, 13, - "791\"]]"); - p = add_epsg_def (filter, first, last, 20822, "epsg", 20822, - "Aratu / UTM zone 22S"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +south +ellps=intl +towgs84=-151.99,2"); - add_proj4text (p, 1, - "87.04,-147.45,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Aratu / UTM zone 22S\",GEOGCS[\"Aratu\",DATUM[\""); - add_srs_wkt (p, 1, - "Aratu\",SPHEROID[\"International 1924\",6378388,297,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7022\"]],TOWGS84[-151.99,287.04,-147.45"); - add_srs_wkt (p, 3, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6208\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 4, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 5, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"4208\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 8, - "meridian\",-51],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 10, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"20822\"]]"); - p = add_epsg_def (filter, first, last, 20823, "epsg", 20823, - "Aratu / UTM zone 23S"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +south +ellps=intl +towgs84=-151.99,2"); - add_proj4text (p, 1, - "87.04,-147.45,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Aratu / UTM zone 23S\",GEOGCS[\"Aratu\",DATUM[\""); - add_srs_wkt (p, 1, - "Aratu\",SPHEROID[\"International 1924\",6378388,297,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7022\"]],TOWGS84[-151.99,287.04,-147.45"); - add_srs_wkt (p, 3, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6208\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 4, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 5, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"4208\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 8, - "meridian\",-45],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 10, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"20823\"]]"); - p = add_epsg_def (filter, first, last, 20824, "epsg", 20824, - "Aratu / UTM zone 24S"); - add_proj4text (p, 0, - "+proj=utm +zone=24 +south +ellps=intl +towgs84=-151.99,2"); - add_proj4text (p, 1, - "87.04,-147.45,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Aratu / UTM zone 24S\",GEOGCS[\"Aratu\",DATUM[\""); - add_srs_wkt (p, 1, - "Aratu\",SPHEROID[\"International 1924\",6378388,297,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7022\"]],TOWGS84[-151.99,287.04,-147.45"); - add_srs_wkt (p, 3, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6208\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 4, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 5, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"4208\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 8, - "meridian\",-39],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 10, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"20824\"]]"); - p = add_epsg_def (filter, first, last, 20934, "epsg", 20934, - "Arc 1950 / UTM zone 34S"); - add_proj4text (p, 0, - "+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.9663"); - add_proj4text (p, 1, - "98753 +towgs84=-143,-90,-294,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Arc 1950 / UTM zone 34S\",GEOGCS[\"Arc 1950\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Arc_1950\",SPHEROID[\"Clarke 1880 (Arc)\",6378249"); - add_srs_wkt (p, 2, - ".145,293.4663077,AUTHORITY[\"EPSG\",\"7013\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "143,-90,-294,0,0,0,0],AUTHORITY[\"EPSG\",\"6209\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4209\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",21],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 9, - "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"20934\"]]"); - p = add_epsg_def (filter, first, last, 20935, "epsg", 20935, - "Arc 1950 / UTM zone 35S"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.9663"); - add_proj4text (p, 1, - "98753 +towgs84=-143,-90,-294,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Arc 1950 / UTM zone 35S\",GEOGCS[\"Arc 1950\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Arc_1950\",SPHEROID[\"Clarke 1880 (Arc)\",6378249"); - add_srs_wkt (p, 2, - ".145,293.4663077,AUTHORITY[\"EPSG\",\"7013\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "143,-90,-294,0,0,0,0],AUTHORITY[\"EPSG\",\"6209\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4209\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",27],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 9, - "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"20935\"]]"); - p = add_epsg_def (filter, first, last, 20936, "epsg", 20936, - "Arc 1950 / UTM zone 36S"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.9663"); - add_proj4text (p, 1, - "98753 +towgs84=-143,-90,-294,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Arc 1950 / UTM zone 36S\",GEOGCS[\"Arc 1950\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Arc_1950\",SPHEROID[\"Clarke 1880 (Arc)\",6378249"); - add_srs_wkt (p, 2, - ".145,293.4663077,AUTHORITY[\"EPSG\",\"7013\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "143,-90,-294,0,0,0,0],AUTHORITY[\"EPSG\",\"6209\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4209\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",33],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 9, - "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"20936\"]]"); - p = add_epsg_def (filter, first, last, 21035, "epsg", 21035, - "Arc 1960 / UTM zone 35S"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +south +ellps=clrk80 +towgs84=-160,-6"); - add_proj4text (p, 1, - ",-302,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Arc 1960 / UTM zone 35S\",GEOGCS[\"Arc 1960\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Arc_1960\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); - add_srs_wkt (p, 2, - ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-160,"); - add_srs_wkt (p, 3, - "-6,-302,0,0,0,0],AUTHORITY[\"EPSG\",\"6210\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4210\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",27],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"21035\"]]"); - p = add_epsg_def (filter, first, last, 21036, "epsg", 21036, - "Arc 1960 / UTM zone 36S"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +south +ellps=clrk80 +towgs84=-160,-6"); - add_proj4text (p, 1, - ",-302,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Arc 1960 / UTM zone 36S\",GEOGCS[\"Arc 1960\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Arc_1960\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); - add_srs_wkt (p, 2, - ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-160,"); - add_srs_wkt (p, 3, - "-6,-302,0,0,0,0],AUTHORITY[\"EPSG\",\"6210\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4210\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",33],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"21036\"]]"); - p = add_epsg_def (filter, first, last, 21037, "epsg", 21037, - "Arc 1960 / UTM zone 37S"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +south +ellps=clrk80 +towgs84=-160,-6"); - add_proj4text (p, 1, - ",-302,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Arc 1960 / UTM zone 37S\",GEOGCS[\"Arc 1960\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Arc_1960\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); - add_srs_wkt (p, 2, - ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-160,"); - add_srs_wkt (p, 3, - "-6,-302,0,0,0,0],AUTHORITY[\"EPSG\",\"6210\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4210\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",39],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"21037\"]]"); - p = add_epsg_def (filter, first, last, 21095, "epsg", 21095, - "Arc 1960 / UTM zone 35N"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +ellps=clrk80 +towgs84=-160,-6,-302,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Arc 1960 / UTM zone 35N\",GEOGCS[\"Arc 1960\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Arc_1960\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); - add_srs_wkt (p, 2, - ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-160,"); - add_srs_wkt (p, 3, - "-6,-302,0,0,0,0],AUTHORITY[\"EPSG\",\"6210\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4210\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",27],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"21095\"]]"); - p = add_epsg_def (filter, first, last, 21096, "epsg", 21096, - "Arc 1960 / UTM zone 36N"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +ellps=clrk80 +towgs84=-160,-6,-302,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Arc 1960 / UTM zone 36N\",GEOGCS[\"Arc 1960\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Arc_1960\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); - add_srs_wkt (p, 2, - ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-160,"); - add_srs_wkt (p, 3, - "-6,-302,0,0,0,0],AUTHORITY[\"EPSG\",\"6210\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4210\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",33],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"21096\"]]"); - p = add_epsg_def (filter, first, last, 21097, "epsg", 21097, - "Arc 1960 / UTM zone 37N"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +ellps=clrk80 +towgs84=-160,-6,-302,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Arc 1960 / UTM zone 37N\",GEOGCS[\"Arc 1960\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Arc_1960\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); - add_srs_wkt (p, 2, - ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-160,"); - add_srs_wkt (p, 3, - "-6,-302,0,0,0,0],AUTHORITY[\"EPSG\",\"6210\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4210\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",39],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"21097\"]]"); - p = add_epsg_def (filter, first, last, 21100, "epsg", 21100, - "Batavia (Jakarta) / NEIEZ (deprecated)"); - add_proj4text (p, 0, - "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 "); - add_proj4text (p, 1, - "+ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +pm=jakarta "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Batavia (Jakarta) / NEIEZ (deprecated)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Batavia (Jakarta)\",DATUM[\"Batavia_Jakarta\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7004\"]],TOWGS84[-377,681,-50,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6813\"]],PRIMEM[\"Jakarta\",106.8077194444444"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8908\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4813\"]],PROJECTION[\"Mercator_1SP\"],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",110],PARAMETER[\"scale_factor\",0.997]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",3900000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",900000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"21100\"]]"); - p = add_epsg_def (filter, first, last, 21148, "epsg", 21148, - "Batavia / UTM zone 48S"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +south +ellps=bessel +towgs84=-377,68"); - add_proj4text (p, 1, - "1,-50,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Batavia / UTM zone 48S\",GEOGCS[\"Batavia\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Batavia\",SPHEROID[\"Bessel 1841\",6377397.155,299."); - add_srs_wkt (p, 2, - "1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-377,681,-"); - add_srs_wkt (p, 3, - "50,0,0,0,0],AUTHORITY[\"EPSG\",\"6211\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4211\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",105],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"21148\"]]"); - p = add_epsg_def (filter, first, last, 21149, "epsg", 21149, - "Batavia / UTM zone 49S"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +south +ellps=bessel +towgs84=-377,68"); - add_proj4text (p, 1, - "1,-50,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Batavia / UTM zone 49S\",GEOGCS[\"Batavia\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Batavia\",SPHEROID[\"Bessel 1841\",6377397.155,299."); - add_srs_wkt (p, 2, - "1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-377,681,-"); - add_srs_wkt (p, 3, - "50,0,0,0,0],AUTHORITY[\"EPSG\",\"6211\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4211\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",111],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"21149\"]]"); - p = add_epsg_def (filter, first, last, 21150, "epsg", 21150, - "Batavia / UTM zone 50S"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +south +ellps=bessel +towgs84=-377,68"); - add_proj4text (p, 1, - "1,-50,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Batavia / UTM zone 50S\",GEOGCS[\"Batavia\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Batavia\",SPHEROID[\"Bessel 1841\",6377397.155,299."); - add_srs_wkt (p, 2, - "1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-377,681,-"); - add_srs_wkt (p, 3, - "50,0,0,0,0],AUTHORITY[\"EPSG\",\"6211\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4211\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",117],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"21150\"]]"); - p = add_epsg_def (filter, first, last, 21291, "epsg", 21291, - "Barbados 1938 / British West Indies Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); - add_proj4text (p, 1, - "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=31.95,300.99,419"); - add_proj4text (p, 2, - ".19,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Barbados 1938 / British West Indies Grid\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Barbados 1938\",DATUM[\"Barbados_1938\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7012\"]],TOWGS84[31.95,300.99,419.19,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6212\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4212"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",-62]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.9995],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",400000],PARAMETER[\"false_northing\",0],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2129"); - add_srs_wkt (p, 13, - "1\"]]"); - p = add_epsg_def (filter, first, last, 21292, "epsg", 21292, - "Barbados 1938 / Barbados National Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=13.17638888888889 +lon_0=-59.55972222"); - add_proj4text (p, 1, - "222222 +k=0.9999986 +x_0=30000 +y_0=75000 +ellps=clrk80 "); - add_proj4text (p, 2, - "+towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Barbados 1938 / Barbados National Grid\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Barbados 1938\",DATUM[\"Barbados_1938\",SPHEROID[\"Cl"); - add_srs_wkt (p, 2, - "arke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7012\"]],TOWGS84[31.95,300.99,419.19,0,0,0,0],AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"6212\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); - add_srs_wkt (p, 5, - "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4212\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",13.17638888888889],PARAMETER[\"central_m"); - add_srs_wkt (p, 9, - "eridian\",-59.55972222222222],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 10, - ",0.9999986],PARAMETER[\"false_easting\",30000],PARAMETER"); - add_srs_wkt (p, 11, - "[\"false_northing\",75000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 13, - "\",NORTH],AUTHORITY[\"EPSG\",\"21292\"]]"); - p = add_epsg_def (filter, first, last, 21413, "epsg", 21413, - "Beijing 1954 / Gauss-Kruger zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 13\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",75],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",1],PARAMETER[\"false_easting\",13500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"21413\"]]"); - p = add_epsg_def (filter, first, last, 21414, "epsg", 21414, - "Beijing 1954 / Gauss-Kruger zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 14\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",81],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",1],PARAMETER[\"false_easting\",14500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"21414\"]]"); - p = add_epsg_def (filter, first, last, 21415, "epsg", 21415, - "Beijing 1954 / Gauss-Kruger zone 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 15\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",87],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",1],PARAMETER[\"false_easting\",15500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"21415\"]]"); - p = add_epsg_def (filter, first, last, 21416, "epsg", 21416, - "Beijing 1954 / Gauss-Kruger zone 16"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 16\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",93],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",1],PARAMETER[\"false_easting\",16500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"21416\"]]"); - p = add_epsg_def (filter, first, last, 21417, "epsg", 21417, - "Beijing 1954 / Gauss-Kruger zone 17"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 17\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",99],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",1],PARAMETER[\"false_easting\",17500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"21417\"]]"); - p = add_epsg_def (filter, first, last, 21418, "epsg", 21418, - "Beijing 1954 / Gauss-Kruger zone 18"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 18\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",105],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",18500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"21418\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_28.c b/src/spatialite/src/srsinit/epsg_inlined_28.c deleted file mode 100644 index 4e0d99d..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_28.c +++ /dev/null @@ -1,3460 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_28 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 21419, "epsg", 21419, - "Beijing 1954 / Gauss-Kruger zone 19"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 19\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",111],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",19500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"21419\"]]"); - p = add_epsg_def (filter, first, last, 21420, "epsg", 21420, - "Beijing 1954 / Gauss-Kruger zone 20"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 20\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",117],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",20500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"21420\"]]"); - p = add_epsg_def (filter, first, last, 21421, "epsg", 21421, - "Beijing 1954 / Gauss-Kruger zone 21"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 21\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",123],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",21500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"21421\"]]"); - p = add_epsg_def (filter, first, last, 21422, "epsg", 21422, - "Beijing 1954 / Gauss-Kruger zone 22"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 22\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",129],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",22500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"21422\"]]"); - p = add_epsg_def (filter, first, last, 21423, "epsg", 21423, - "Beijing 1954 / Gauss-Kruger zone 23"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 23\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",135],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",23500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"21423\"]]"); - p = add_epsg_def (filter, first, last, 21453, "epsg", 21453, - "Beijing 1954 / Gauss-Kruger CM 75E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 75E\",GEOGCS[\"B"); - add_srs_wkt (p, 1, - "eijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); - add_srs_wkt (p, 4, - "14\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",75],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"21453\"]]"); - p = add_epsg_def (filter, first, last, 21454, "epsg", 21454, - "Beijing 1954 / Gauss-Kruger CM 81E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 81E\",GEOGCS[\"B"); - add_srs_wkt (p, 1, - "eijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); - add_srs_wkt (p, 4, - "14\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",81],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"21454\"]]"); - p = add_epsg_def (filter, first, last, 21455, "epsg", 21455, - "Beijing 1954 / Gauss-Kruger CM 87E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 87E\",GEOGCS[\"B"); - add_srs_wkt (p, 1, - "eijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); - add_srs_wkt (p, 4, - "14\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",87],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"21455\"]]"); - p = add_epsg_def (filter, first, last, 21456, "epsg", 21456, - "Beijing 1954 / Gauss-Kruger CM 93E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 93E\",GEOGCS[\"B"); - add_srs_wkt (p, 1, - "eijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); - add_srs_wkt (p, 4, - "14\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",93],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"21456\"]]"); - p = add_epsg_def (filter, first, last, 21457, "epsg", 21457, - "Beijing 1954 / Gauss-Kruger CM 99E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 99E\",GEOGCS[\"B"); - add_srs_wkt (p, 1, - "eijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); - add_srs_wkt (p, 4, - "14\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",99],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"21457\"]]"); - p = add_epsg_def (filter, first, last, 21458, "epsg", 21458, - "Beijing 1954 / Gauss-Kruger CM 105E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 105E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",105],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"21458\"]]"); - p = add_epsg_def (filter, first, last, 21459, "epsg", 21459, - "Beijing 1954 / Gauss-Kruger CM 111E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 111E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",111],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"21459\"]]"); - p = add_epsg_def (filter, first, last, 21460, "epsg", 21460, - "Beijing 1954 / Gauss-Kruger CM 117E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 117E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",117],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"21460\"]]"); - p = add_epsg_def (filter, first, last, 21461, "epsg", 21461, - "Beijing 1954 / Gauss-Kruger CM 123E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 123E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",123],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"21461\"]]"); - p = add_epsg_def (filter, first, last, 21462, "epsg", 21462, - "Beijing 1954 / Gauss-Kruger CM 129E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 129E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",129],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"21462\"]]"); - p = add_epsg_def (filter, first, last, 21463, "epsg", 21463, - "Beijing 1954 / Gauss-Kruger CM 135E"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 135E\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",135],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"21463\"]]"); - p = add_epsg_def (filter, first, last, 21473, "epsg", 21473, - "Beijing 1954 / Gauss-Kruger 13N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger 13N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",75],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EA"); - add_srs_wkt (p, 12, - "ST],AUTHORITY[\"EPSG\",\"21473\"]]"); - p = add_epsg_def (filter, first, last, 21474, "epsg", 21474, - "Beijing 1954 / Gauss-Kruger 14N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger 14N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",81],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EA"); - add_srs_wkt (p, 12, - "ST],AUTHORITY[\"EPSG\",\"21474\"]]"); - p = add_epsg_def (filter, first, last, 21475, "epsg", 21475, - "Beijing 1954 / Gauss-Kruger 15N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger 15N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",87],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EA"); - add_srs_wkt (p, 12, - "ST],AUTHORITY[\"EPSG\",\"21475\"]]"); - p = add_epsg_def (filter, first, last, 21476, "epsg", 21476, - "Beijing 1954 / Gauss-Kruger 16N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger 16N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",93],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EA"); - add_srs_wkt (p, 12, - "ST],AUTHORITY[\"EPSG\",\"21476\"]]"); - p = add_epsg_def (filter, first, last, 21477, "epsg", 21477, - "Beijing 1954 / Gauss-Kruger 17N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger 17N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",99],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"scale_factor\",1],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EA"); - add_srs_wkt (p, 12, - "ST],AUTHORITY[\"EPSG\",\"21477\"]]"); - p = add_epsg_def (filter, first, last, 21478, "epsg", 21478, - "Beijing 1954 / Gauss-Kruger 18N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger 18N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",105],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"21478\"]]"); - p = add_epsg_def (filter, first, last, 21479, "epsg", 21479, - "Beijing 1954 / Gauss-Kruger 19N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger 19N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",111],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"21479\"]]"); - p = add_epsg_def (filter, first, last, 21480, "epsg", 21480, - "Beijing 1954 / Gauss-Kruger 20N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger 20N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",117],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"21480\"]]"); - p = add_epsg_def (filter, first, last, 21481, "epsg", 21481, - "Beijing 1954 / Gauss-Kruger 21N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger 21N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",123],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"21481\"]]"); - p = add_epsg_def (filter, first, last, 21482, "epsg", 21482, - "Beijing 1954 / Gauss-Kruger 22N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger 22N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",129],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"21482\"]]"); - p = add_epsg_def (filter, first, last, 21483, "epsg", 21483, - "Beijing 1954 / Gauss-Kruger 23N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Beijing 1954 / Gauss-Kruger 23N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); - add_srs_wkt (p, 4, - "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 8, - "_origin\",0],PARAMETER[\"central_meridian\",135],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",E"); - add_srs_wkt (p, 12, - "AST],AUTHORITY[\"EPSG\",\"21483\"]]"); - p = add_epsg_def (filter, first, last, 21500, "epsg", 21500, - "Belge 1950 (Brussels) / Belge Lambert 50"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666"); - add_proj4text (p, 1, - "666 +lat_0=90 +lon_0=0 +x_0=150000 +y_0=5400000 +ellps=i"); - add_proj4text (p, 2, - "ntl +pm=brussels +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Belge 1950 (Brussels) / Belge Lambert 50\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Belge 1950 (Brussels)\",DATUM[\"Reseau_National_Bel"); - add_srs_wkt (p, 2, - "ge_1950_Brussels\",SPHEROID[\"International 1924\",63783"); - add_srs_wkt (p, 3, - "88,297,AUTHORITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6809\"]],PRIMEM[\"Brussels\",4.367975,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 5, - "\",\"8910\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4809\"]],PRO"); - add_srs_wkt (p, 7, - "JECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"sta"); - add_srs_wkt (p, 8, - "ndard_parallel_1\",49.83333333333334],PARAMETER[\"standa"); - add_srs_wkt (p, 9, - "rd_parallel_2\",51.16666666666666],PARAMETER[\"latitude_"); - add_srs_wkt (p, 10, - "of_origin\",90],PARAMETER[\"central_meridian\",0],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_easting\",150000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 12, - "\",5400000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"21500\"]]"); - p = add_epsg_def (filter, first, last, 21780, "epsg", 21780, - "Bern 1898 (Bern) / LV03C"); - add_proj4text (p, 0, - "+proj=somerc +lat_0=46.95240555555556 +lon_0=0 +k_0=1 +x"); - add_proj4text (p, 1, - "_0=0 +y_0=0 +ellps=bessel +towgs84=674.4,15.1,405.3,0,0,"); - add_proj4text (p, 2, - "0,0 +pm=bern +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Bern 1898 (Bern) / LV03C\",GEOGCS[\"Bern 1898 ("); - add_srs_wkt (p, 1, - "Bern)\",DATUM[\"CH1903_Bern\",SPHEROID[\"Bessel 1841\",6"); - add_srs_wkt (p, 2, - "377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[674.4,15.1,405.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6801"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Bern\",7.439583333333333,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8907\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4801\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Hotine_Oblique_Mercator\"],PARAMETER[\"latitude_"); - add_srs_wkt (p, 8, - "of_center\",46.95240555555556],PARAMETER[\"longitude_of_"); - add_srs_wkt (p, 9, - "center\",0],PARAMETER[\"azimuth\",90],PARAMETER[\"rectif"); - add_srs_wkt (p, 10, - "ied_grid_angle\",90],PARAMETER[\"scale_factor\",1],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_easting\",0],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 12, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 13, - "Y\",EAST],AXIS[\"X\",NORTH],AUTHORITY[\"EPSG\",\"21780\""); - add_srs_wkt (p, 14, - "]]"); - p = add_epsg_def (filter, first, last, 21781, "epsg", 21781, - "CH1903 / LV03"); - add_proj4text (p, 0, - "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333"); - add_proj4text (p, 1, - "333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel +tow"); - add_proj4text (p, 2, - "gs84=674.4,15.1,405.3,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CH1903 / LV03\",GEOGCS[\"CH1903\",DATUM[\"CH190"); - add_srs_wkt (p, 1, - "3\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7004\"]],TOWGS84[674.4,15.1,405.3,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6149\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4149\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"latitude_of_center\",46.95240555555556],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"longitude_of_center\",7.439583333333333],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"azimuth\",90],PARAMETER[\"rectified_grid_angle\",90]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 11, - "\",600000],PARAMETER[\"false_northing\",200000],UNIT[\"m"); - add_srs_wkt (p, 12, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 13, - "AXIS[\"X\",NORTH],AUTHORITY[\"EPSG\",\"21781\"]]"); - p = add_epsg_def (filter, first, last, 21782, "epsg", 21782, - "CH1903 / LV03C-G"); - add_proj4text (p, 0, - "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333"); - add_proj4text (p, 1, - "333333 +k_0=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=674.4"); - add_proj4text (p, 2, - ",15.1,405.3,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"CH1903 / LV03C-G\",GEOGCS[\"CH1903\",DATUM[\"CH"); - add_srs_wkt (p, 1, - "1903\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[674.4,15.1,405.3,0"); - add_srs_wkt (p, 3, - ",0,0,0],AUTHORITY[\"EPSG\",\"6149\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4149\"]],PROJECTION[\"Hotine_Oblique_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_center\",46.95240555555556],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"longitude_of_center\",7.439583333333333],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"azimuth\",90],PARAMETER[\"rectified_grid_angle\","); - add_srs_wkt (p, 10, - "90],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 11, - "ing\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 12, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Y\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "X\",NORTH],AUTHORITY[\"EPSG\",\"21782\"]]"); - p = add_epsg_def (filter, first, last, 21817, "epsg", 21817, - "Bogota 1975 / UTM zone 17N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=intl +towgs84=307,304,-318,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Bogota 1975 / UTM zone 17N (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"Bogota 1975\",DATUM[\"Bogota_1975\",SPHEROID[\"Inter"); - add_srs_wkt (p, 2, - "national 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\",\"621"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4218\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",-81],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"21817\"]]"); - p = add_epsg_def (filter, first, last, 21818, "epsg", 21818, - "Bogota 1975 / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=intl +towgs84=307,304,-318,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Bogota 1975 / UTM zone 18N\",GEOGCS[\"Bogota 19"); - add_srs_wkt (p, 1, - "75\",DATUM[\"Bogota_1975\",SPHEROID[\"International 1924"); - add_srs_wkt (p, 2, - "\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[307"); - add_srs_wkt (p, 3, - ",304,-318,0,0,0,0],AUTHORITY[\"EPSG\",\"6218\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4218\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-75],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"21818\"]]"); - p = add_epsg_def (filter, first, last, 21891, "epsg", 21891, - "Bogota 1975 / Colombia West zone (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); - add_proj4text (p, 2, - "84=307,304,-318,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Bogota 1975 / Colombia West zone (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"Bogota 1975\",DATUM[\"Bogota_1975\",SPHEROID[\""); - add_srs_wkt (p, 2, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "22\"]],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6218\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4218\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",4.599047222222222],PARAMETER[\"central_meridian\",-7"); - add_srs_wkt (p, 9, - "7.08091666666667],PARAMETER[\"scale_factor\",1],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",1000000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "21891\"]]"); - p = add_epsg_def (filter, first, last, 21892, "epsg", 21892, - "Bogota 1975 / Colombia Bogota zone (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); - add_proj4text (p, 2, - "84=307,304,-318,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Bogota 1975 / Colombia Bogota zone (deprecated)"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Bogota 1975\",DATUM[\"Bogota_1975\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7022\"]],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6218\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4218\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",4.599047222222222],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "74.08091666666667],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",1000000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"21892\"]]"); - p = add_epsg_def (filter, first, last, 21893, "epsg", 21893, - "Bogota 1975 / Colombia East Central zone (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); - add_proj4text (p, 2, - "84=307,304,-318,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Bogota 1975 / Colombia East Central zone (depre"); - add_srs_wkt (p, 1, - "cated)\",GEOGCS[\"Bogota 1975\",DATUM[\"Bogota_1975\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"International 1924\",6378388,297,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7022\"]],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6218\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4218\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",4.599047222222222],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",-71.08091666666667],PARAMETER[\"scale_factor\",1]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_easting\",1000000],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"21893\"]]"); - p = add_epsg_def (filter, first, last, 21894, "epsg", 21894, - "Bogota 1975 / Colombia East (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); - add_proj4text (p, 2, - "84=307,304,-318,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Bogota 1975 / Colombia East (deprecated)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Bogota 1975\",DATUM[\"Bogota_1975\",SPHEROID[\"Inte"); - add_srs_wkt (p, 2, - "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 3, - "]],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); - add_srs_wkt (p, 4, - "18\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4218\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",4"); - add_srs_wkt (p, 8, - ".599047222222222],PARAMETER[\"central_meridian\",-68.080"); - add_srs_wkt (p, 9, - "91666666667],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",1000000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 11, - "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"218"); - add_srs_wkt (p, 13, - "94\"]]"); - p = add_epsg_def (filter, first, last, 21896, "epsg", 21896, - "Bogota 1975 / Colombia West zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); - add_proj4text (p, 2, - "84=307,304,-318,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Bogota 1975 / Colombia West zone\",GEOGCS[\"Bog"); - add_srs_wkt (p, 1, - "ota 1975\",DATUM[\"Bogota_1975\",SPHEROID[\"Internationa"); - add_srs_wkt (p, 2, - "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\",\"6218\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4218\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",4.599047"); - add_srs_wkt (p, 8, - "222222222],PARAMETER[\"central_meridian\",-77.0809166666"); - add_srs_wkt (p, 9, - "6667],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",1000000],PARAMETER[\"false_northing\",1000000],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"21896\"]]"); - p = add_epsg_def (filter, first, last, 21897, "epsg", 21897, - "Bogota 1975 / Colombia Bogota zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); - add_proj4text (p, 2, - "84=307,304,-318,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Bogota 1975 / Colombia Bogota zone\",GEOGCS[\"B"); - add_srs_wkt (p, 1, - "ogota 1975\",DATUM[\"Bogota_1975\",SPHEROID[\"Internatio"); - add_srs_wkt (p, 2, - "nal 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\",\"6218\"]]"); - add_srs_wkt (p, 4, - ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); - add_srs_wkt (p, 5, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 6, - "22\"]],AUTHORITY[\"EPSG\",\"4218\"]],PROJECTION[\"Transv"); - add_srs_wkt (p, 7, - "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",4.5990"); - add_srs_wkt (p, 8, - "47222222222],PARAMETER[\"central_meridian\",-74.08091666"); - add_srs_wkt (p, 9, - "666667],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",1000000],PARAMETER[\"false_northing\",1000000]"); - add_srs_wkt (p, 11, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); - add_srs_wkt (p, 12, - "\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"21897\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 21898, "epsg", 21898, - "Bogota 1975 / Colombia East Central zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); - add_proj4text (p, 2, - "84=307,304,-318,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Bogota 1975 / Colombia East Central zone\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Bogota 1975\",DATUM[\"Bogota_1975\",SPHEROID[\"Inte"); - add_srs_wkt (p, 2, - "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 3, - "]],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); - add_srs_wkt (p, 4, - "18\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4218\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",4"); - add_srs_wkt (p, 8, - ".599047222222222],PARAMETER[\"central_meridian\",-71.080"); - add_srs_wkt (p, 9, - "91666666667],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",1000000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 11, - "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 12, - "S[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"218"); - add_srs_wkt (p, 13, - "98\"]]"); - p = add_epsg_def (filter, first, last, 21899, "epsg", 21899, - "Bogota 1975 / Colombia East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); - add_proj4text (p, 2, - "84=307,304,-318,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Bogota 1975 / Colombia East\",GEOGCS[\"Bogota 1"); - add_srs_wkt (p, 1, - "975\",DATUM[\"Bogota_1975\",SPHEROID[\"International 192"); - add_srs_wkt (p, 2, - "4\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[30"); - add_srs_wkt (p, 3, - "7,304,-318,0,0,0,0],AUTHORITY[\"EPSG\",\"6218\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4218\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",4.59904722222"); - add_srs_wkt (p, 8, - "2222],PARAMETER[\"central_meridian\",-68.08091666666667]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 10, - "\",1000000],PARAMETER[\"false_northing\",1000000],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"21899\"]]"); - p = add_epsg_def (filter, first, last, 22032, "epsg", 22032, - "Camacupa / UTM zone 32S"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +south +ellps=clrk80 +towgs84=-50.9,-"); - add_proj4text (p, 1, - "347.6,-231,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Camacupa / UTM zone 32S\",GEOGCS[\"Camacupa\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Camacupa\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); - add_srs_wkt (p, 2, - ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-50.9"); - add_srs_wkt (p, 3, - ",-347.6,-231,0,0,0,0],AUTHORITY[\"EPSG\",\"6220\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4220\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",9],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"22032\"]]"); - p = add_epsg_def (filter, first, last, 22033, "epsg", 22033, - "Camacupa / UTM zone 33S"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-50.9,-"); - add_proj4text (p, 1, - "347.6,-231,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Camacupa / UTM zone 33S\",GEOGCS[\"Camacupa\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Camacupa\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); - add_srs_wkt (p, 2, - ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-50.9"); - add_srs_wkt (p, 3, - ",-347.6,-231,0,0,0,0],AUTHORITY[\"EPSG\",\"6220\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4220\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",15],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 9, - "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"22033\"]]"); - p = add_epsg_def (filter, first, last, 22091, "epsg", 22091, - "Camacupa / TM 11.30 SE"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=500000 +"); - add_proj4text (p, 1, - "y_0=10000000 +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,"); - add_proj4text (p, 2, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Camacupa / TM 11.30 SE\",GEOGCS[\"Camacupa\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Camacupa\",SPHEROID[\"Clarke 1880 (RGS)\",6378249."); - add_srs_wkt (p, 2, - "145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-50.9,"); - add_srs_wkt (p, 3, - "-347.6,-231,0,0,0,0],AUTHORITY[\"EPSG\",\"6220\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4220\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 7, - "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); - add_srs_wkt (p, 8, - "[\"central_meridian\",11.5],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"22091\"]]"); - p = add_epsg_def (filter, first, last, 22092, "epsg", 22092, - "Camacupa / TM 12 SE"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Camacupa / TM 12 SE\",GEOGCS[\"Camacupa\",DATUM"); - add_srs_wkt (p, 1, - "[\"Camacupa\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145"); - add_srs_wkt (p, 2, - ",293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-50.9,-34"); - add_srs_wkt (p, 3, - "7.6,-231,0,0,0,0],AUTHORITY[\"EPSG\",\"6220\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4220\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",12],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"22092\"]]"); - p = add_epsg_def (filter, first, last, 22171, "epsg", 22171, - "POSGAR 98 / Argentina 1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 98 / Argentina 1\",GEOGCS[\"POSGAR 98\","); - add_srs_wkt (p, 1, - "DATUM[\"Posiciones_Geodesicas_Argentinas_1998\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"619"); - add_srs_wkt (p, 4, - "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4190\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); - add_srs_wkt (p, 8, - "90],PARAMETER[\"central_meridian\",-72],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",1500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"22171\"]]"); - p = add_epsg_def (filter, first, last, 22172, "epsg", 22172, - "POSGAR 98 / Argentina 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 98 / Argentina 2\",GEOGCS[\"POSGAR 98\","); - add_srs_wkt (p, 1, - "DATUM[\"Posiciones_Geodesicas_Argentinas_1998\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"619"); - add_srs_wkt (p, 4, - "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4190\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); - add_srs_wkt (p, 8, - "90],PARAMETER[\"central_meridian\",-69],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",2500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"22172\"]]"); - p = add_epsg_def (filter, first, last, 22173, "epsg", 22173, - "POSGAR 98 / Argentina 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 98 / Argentina 3\",GEOGCS[\"POSGAR 98\","); - add_srs_wkt (p, 1, - "DATUM[\"Posiciones_Geodesicas_Argentinas_1998\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"619"); - add_srs_wkt (p, 4, - "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4190\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); - add_srs_wkt (p, 8, - "90],PARAMETER[\"central_meridian\",-66],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",3500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"22173\"]]"); - p = add_epsg_def (filter, first, last, 22174, "epsg", 22174, - "POSGAR 98 / Argentina 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 98 / Argentina 4\",GEOGCS[\"POSGAR 98\","); - add_srs_wkt (p, 1, - "DATUM[\"Posiciones_Geodesicas_Argentinas_1998\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"619"); - add_srs_wkt (p, 4, - "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4190\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); - add_srs_wkt (p, 8, - "90],PARAMETER[\"central_meridian\",-63],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",4500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"22174\"]]"); - p = add_epsg_def (filter, first, last, 22175, "epsg", 22175, - "POSGAR 98 / Argentina 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 98 / Argentina 5\",GEOGCS[\"POSGAR 98\","); - add_srs_wkt (p, 1, - "DATUM[\"Posiciones_Geodesicas_Argentinas_1998\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"619"); - add_srs_wkt (p, 4, - "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4190\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); - add_srs_wkt (p, 8, - "90],PARAMETER[\"central_meridian\",-60],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",5500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"22175\"]]"); - p = add_epsg_def (filter, first, last, 22176, "epsg", 22176, - "POSGAR 98 / Argentina 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 98 / Argentina 6\",GEOGCS[\"POSGAR 98\","); - add_srs_wkt (p, 1, - "DATUM[\"Posiciones_Geodesicas_Argentinas_1998\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"619"); - add_srs_wkt (p, 4, - "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4190\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); - add_srs_wkt (p, 8, - "90],PARAMETER[\"central_meridian\",-57],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",6500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"22176\"]]"); - p = add_epsg_def (filter, first, last, 22177, "epsg", 22177, - "POSGAR 98 / Argentina 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 98 / Argentina 7\",GEOGCS[\"POSGAR 98\","); - add_srs_wkt (p, 1, - "DATUM[\"Posiciones_Geodesicas_Argentinas_1998\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"619"); - add_srs_wkt (p, 4, - "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4190\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); - add_srs_wkt (p, 8, - "90],PARAMETER[\"central_meridian\",-54],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",7500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"22177\"]]"); - p = add_epsg_def (filter, first, last, 22181, "epsg", 22181, - "POSGAR 94 / Argentina 1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 94 / Argentina 1\",GEOGCS[\"POSGAR 94\","); - add_srs_wkt (p, 1, - "DATUM[\"Posiciones_Geodesicas_Argentinas_1994\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6694"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4694\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-9"); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",-72],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",1500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"22181\"]]"); - p = add_epsg_def (filter, first, last, 22182, "epsg", 22182, - "POSGAR 94 / Argentina 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 94 / Argentina 2\",GEOGCS[\"POSGAR 94\","); - add_srs_wkt (p, 1, - "DATUM[\"Posiciones_Geodesicas_Argentinas_1994\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6694"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4694\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-9"); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",-69],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",2500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"22182\"]]"); - p = add_epsg_def (filter, first, last, 22183, "epsg", 22183, - "POSGAR 94 / Argentina 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 94 / Argentina 3\",GEOGCS[\"POSGAR 94\","); - add_srs_wkt (p, 1, - "DATUM[\"Posiciones_Geodesicas_Argentinas_1994\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6694"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4694\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-9"); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",-66],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",3500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"22183\"]]"); - p = add_epsg_def (filter, first, last, 22184, "epsg", 22184, - "POSGAR 94 / Argentina 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 94 / Argentina 4\",GEOGCS[\"POSGAR 94\","); - add_srs_wkt (p, 1, - "DATUM[\"Posiciones_Geodesicas_Argentinas_1994\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6694"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4694\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-9"); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",-63],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",4500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"22184\"]]"); - p = add_epsg_def (filter, first, last, 22185, "epsg", 22185, - "POSGAR 94 / Argentina 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 94 / Argentina 5\",GEOGCS[\"POSGAR 94\","); - add_srs_wkt (p, 1, - "DATUM[\"Posiciones_Geodesicas_Argentinas_1994\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6694"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4694\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-9"); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",-60],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",5500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"22185\"]]"); - p = add_epsg_def (filter, first, last, 22186, "epsg", 22186, - "POSGAR 94 / Argentina 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 94 / Argentina 6\",GEOGCS[\"POSGAR 94\","); - add_srs_wkt (p, 1, - "DATUM[\"Posiciones_Geodesicas_Argentinas_1994\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6694"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4694\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-9"); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",-57],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",6500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"22186\"]]"); - p = add_epsg_def (filter, first, last, 22187, "epsg", 22187, - "POSGAR 94 / Argentina 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"POSGAR 94 / Argentina 7\",GEOGCS[\"POSGAR 94\","); - add_srs_wkt (p, 1, - "DATUM[\"Posiciones_Geodesicas_Argentinas_1994\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6694"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4694\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-9"); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",-54],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",1],PARAMETER[\"false_easting\",7500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"22187\"]]"); - p = add_epsg_def (filter, first, last, 22191, "epsg", 22191, - "Campo Inchauspe / Argentina 1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Campo Inchauspe / Argentina 1\",GEOGCS[\"Campo "); - add_srs_wkt (p, 1, - "Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-72],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",1500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"22191\"]]"); - p = add_epsg_def (filter, first, last, 22192, "epsg", 22192, - "Campo Inchauspe / Argentina 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Campo Inchauspe / Argentina 2\",GEOGCS[\"Campo "); - add_srs_wkt (p, 1, - "Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",2500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"22192\"]]"); - p = add_epsg_def (filter, first, last, 22193, "epsg", 22193, - "Campo Inchauspe / Argentina 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Campo Inchauspe / Argentina 3\",GEOGCS[\"Campo "); - add_srs_wkt (p, 1, - "Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-66],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",3500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"22193\"]]"); - p = add_epsg_def (filter, first, last, 22194, "epsg", 22194, - "Campo Inchauspe / Argentina 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Campo Inchauspe / Argentina 4\",GEOGCS[\"Campo "); - add_srs_wkt (p, 1, - "Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",4500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"22194\"]]"); - p = add_epsg_def (filter, first, last, 22195, "epsg", 22195, - "Campo Inchauspe / Argentina 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Campo Inchauspe / Argentina 5\",GEOGCS[\"Campo "); - add_srs_wkt (p, 1, - "Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-60],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",5500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"22195\"]]"); - p = add_epsg_def (filter, first, last, 22196, "epsg", 22196, - "Campo Inchauspe / Argentina 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Campo Inchauspe / Argentina 6\",GEOGCS[\"Campo "); - add_srs_wkt (p, 1, - "Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",6500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"22196\"]]"); - p = add_epsg_def (filter, first, last, 22197, "epsg", 22197, - "Campo Inchauspe / Argentina 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Campo Inchauspe / Argentina 7\",GEOGCS[\"Campo "); - add_srs_wkt (p, 1, - "Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-54],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",1],PARAMETER[\"false_easting\",7500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"22197\"]]"); - p = add_epsg_def (filter, first, last, 22234, "epsg", 22234, - "Cape / UTM zone 34S"); - add_proj4text (p, 0, - "+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.9663"); - add_proj4text (p, 1, - "98753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Cape / UTM zone 34S\",GEOGCS[\"Cape\",DATUM[\"C"); - add_srs_wkt (p, 1, - "ape\",SPHEROID[\"Clarke 1880 (Arc)\",6378249.145,293.466"); - add_srs_wkt (p, 2, - "3077,AUTHORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-29"); - add_srs_wkt (p, 3, - "2,0,0,0,0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4222\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 7, - ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); - add_srs_wkt (p, 8, - "_meridian\",21],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 10, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"22234\"]]"); - p = add_epsg_def (filter, first, last, 22235, "epsg", 22235, - "Cape / UTM zone 35S"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.9663"); - add_proj4text (p, 1, - "98753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Cape / UTM zone 35S\",GEOGCS[\"Cape\",DATUM[\"C"); - add_srs_wkt (p, 1, - "ape\",SPHEROID[\"Clarke 1880 (Arc)\",6378249.145,293.466"); - add_srs_wkt (p, 2, - "3077,AUTHORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-29"); - add_srs_wkt (p, 3, - "2,0,0,0,0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4222\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 7, - ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); - add_srs_wkt (p, 8, - "_meridian\",27],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 10, - "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"22235\"]]"); - p = add_epsg_def (filter, first, last, 22236, "epsg", 22236, - "Cape / UTM zone 36S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.9663"); - add_proj4text (p, 1, - "98753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Cape / UTM zone 36S (deprecated)\",GEOGCS[\"Cap"); - add_srs_wkt (p, 1, - "e\",DATUM[\"Cape\",SPHEROID[\"Clarke 1880 (Arc)\",637824"); - add_srs_wkt (p, 2, - "9.145,293.4663077,AUTHORITY[\"EPSG\",\"7013\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-136,-108,-292,0,0,0,0],AUTHORITY[\"EPSG\",\"6222\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4222\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",33],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"22236\"]]"); - p = add_epsg_def (filter, first, last, 22275, "epsg", 22275, - "Cape / Lo15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); - add_proj4text (p, 2, - "08,-292,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Cape / Lo15\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); - add_srs_wkt (p, 7, - "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",15],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22275"); - add_srs_wkt (p, 12, - "\"]]"); - p = add_epsg_def (filter, first, last, 22277, "epsg", 22277, - "Cape / Lo17"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=17 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); - add_proj4text (p, 2, - "08,-292,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Cape / Lo17\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); - add_srs_wkt (p, 7, - "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",17],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22277"); - add_srs_wkt (p, 12, - "\"]]"); - p = add_epsg_def (filter, first, last, 22279, "epsg", 22279, - "Cape / Lo19"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); - add_proj4text (p, 2, - "08,-292,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Cape / Lo19\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); - add_srs_wkt (p, 7, - "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",19],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22279"); - add_srs_wkt (p, 12, - "\"]]"); - p = add_epsg_def (filter, first, last, 22281, "epsg", 22281, - "Cape / Lo21"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); - add_proj4text (p, 2, - "08,-292,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Cape / Lo21\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); - add_srs_wkt (p, 7, - "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",21],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22281"); - add_srs_wkt (p, 12, - "\"]]"); - p = add_epsg_def (filter, first, last, 22283, "epsg", 22283, - "Cape / Lo23"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); - add_proj4text (p, 2, - "08,-292,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Cape / Lo23\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); - add_srs_wkt (p, 7, - "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",23],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22283"); - add_srs_wkt (p, 12, - "\"]]"); - p = add_epsg_def (filter, first, last, 22285, "epsg", 22285, - "Cape / Lo25"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); - add_proj4text (p, 2, - "08,-292,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Cape / Lo25\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); - add_srs_wkt (p, 7, - "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",25],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22285"); - add_srs_wkt (p, 12, - "\"]]"); - p = add_epsg_def (filter, first, last, 22287, "epsg", 22287, - "Cape / Lo27"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); - add_proj4text (p, 2, - "08,-292,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Cape / Lo27\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); - add_srs_wkt (p, 7, - "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",27],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22287"); - add_srs_wkt (p, 12, - "\"]]"); - p = add_epsg_def (filter, first, last, 22289, "epsg", 22289, - "Cape / Lo29"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); - add_proj4text (p, 2, - "08,-292,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Cape / Lo29\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); - add_srs_wkt (p, 7, - "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",29],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22289"); - add_srs_wkt (p, 12, - "\"]]"); - p = add_epsg_def (filter, first, last, 22291, "epsg", 22291, - "Cape / Lo31"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); - add_proj4text (p, 2, - "08,-292,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Cape / Lo31\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); - add_srs_wkt (p, 7, - "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",31],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22291"); - add_srs_wkt (p, 12, - "\"]]"); - p = add_epsg_def (filter, first, last, 22293, "epsg", 22293, - "Cape / Lo33"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=0 +y_0=0 +axis="); - add_proj4text (p, 1, - "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); - add_proj4text (p, 2, - "08,-292,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Cape / Lo33\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); - add_srs_wkt (p, 1, - "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); - add_srs_wkt (p, 3, - "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); - add_srs_wkt (p, 7, - "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",33],PARAMETER[\"scale_factor\",1],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22293"); - add_srs_wkt (p, 12, - "\"]]"); - p = add_epsg_def (filter, first, last, 22332, "epsg", 22332, - "Carthage / UTM zone 32N"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +datum=carthage +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Carthage / UTM zone 32N\",GEOGCS[\"Carthage\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Carthage\",SPHEROID[\"Clarke 1880 (IGN)\",6378249"); - add_srs_wkt (p, 2, - ".2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[-263,6,431,0,0,0,0],AUTHORITY[\"EPSG\",\"6223\"]],PRI"); - add_srs_wkt (p, 4, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4223\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",9],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"22332\"]]"); - p = add_epsg_def (filter, first, last, 22391, "epsg", 22391, - "Carthage / Nord Tunisie"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=9.9 +k_0=0.99962554"); - add_proj4text (p, 1, - "4 +x_0=500000 +y_0=300000 +datum=carthage +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Carthage / Nord Tunisie\",GEOGCS[\"Carthage\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Carthage\",SPHEROID[\"Clarke 1880 (IGN)\",6378249"); - add_srs_wkt (p, 2, - ".2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[-263,6,431,0,0,0,0],AUTHORITY[\"EPSG\",\"6223\"]],PRI"); - add_srs_wkt (p, 4, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4223\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",36]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",9.9],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.999625544],PARAMETER[\"false_easting\",500000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",300000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"22391\"]]"); - p = add_epsg_def (filter, first, last, 22392, "epsg", 22392, - "Carthage / Sud Tunisie"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=9.9 +k_0=0.9996"); - add_proj4text (p, 1, - "25769 +x_0=500000 +y_0=300000 +datum=carthage +units=m +"); - add_proj4text (p, 2, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Carthage / Sud Tunisie\",GEOGCS[\"Carthage\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Carthage\",SPHEROID[\"Clarke 1880 (IGN)\",6378249."); - add_srs_wkt (p, 2, - "2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[-263,6,431,0,0,0,0],AUTHORITY[\"EPSG\",\"6223\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4223\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",33."); - add_srs_wkt (p, 8, - "3],PARAMETER[\"central_meridian\",9.9],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.999625769],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",300000],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"22392\"]]"); - p = add_epsg_def (filter, first, last, 22521, "epsg", 22521, - "Corrego Alegre 1970-72 / UTM zone 21S"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +south +ellps=intl +towgs84=-206,172,"); - add_proj4text (p, 1, - "-6,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Corrego Alegre 1970-72 / UTM zone 21S\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Corrego Alegre 1970-72\",DATUM[\"Corrego_Alegre_1970_7"); - add_srs_wkt (p, 2, - "2\",SPHEROID[\"International 1924\",6378388,297,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7022\"]],TOWGS84[-206,172,-6,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6225\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4225"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",-57]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 12, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"22521\"]]"); - p = add_epsg_def (filter, first, last, 22522, "epsg", 22522, - "Corrego Alegre 1970-72 / UTM zone 22S"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +south +ellps=intl +towgs84=-206,172,"); - add_proj4text (p, 1, - "-6,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Corrego Alegre 1970-72 / UTM zone 22S\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Corrego Alegre 1970-72\",DATUM[\"Corrego_Alegre_1970_7"); - add_srs_wkt (p, 2, - "2\",SPHEROID[\"International 1924\",6378388,297,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7022\"]],TOWGS84[-206,172,-6,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6225\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4225"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",-51]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 12, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"22522\"]]"); - p = add_epsg_def (filter, first, last, 22523, "epsg", 22523, - "Corrego Alegre 1970-72 / UTM zone 23S"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +south +ellps=intl +towgs84=-206,172,"); - add_proj4text (p, 1, - "-6,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Corrego Alegre 1970-72 / UTM zone 23S\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Corrego Alegre 1970-72\",DATUM[\"Corrego_Alegre_1970_7"); - add_srs_wkt (p, 2, - "2\",SPHEROID[\"International 1924\",6378388,297,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7022\"]],TOWGS84[-206,172,-6,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6225\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4225"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",-45]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 12, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"22523\"]]"); - p = add_epsg_def (filter, first, last, 22524, "epsg", 22524, - "Corrego Alegre 1970-72 / UTM zone 24S"); - add_proj4text (p, 0, - "+proj=utm +zone=24 +south +ellps=intl +towgs84=-206,172,"); - add_proj4text (p, 1, - "-6,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Corrego Alegre 1970-72 / UTM zone 24S\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Corrego Alegre 1970-72\",DATUM[\"Corrego_Alegre_1970_7"); - add_srs_wkt (p, 2, - "2\",SPHEROID[\"International 1924\",6378388,297,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7022\"]],TOWGS84[-206,172,-6,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6225\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4225"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",-39]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 12, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"22524\"]]"); - p = add_epsg_def (filter, first, last, 22525, "epsg", 22525, - "Corrego Alegre 1970-72 / UTM zone 25S"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +south +ellps=intl +towgs84=-206,172,"); - add_proj4text (p, 1, - "-6,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Corrego Alegre 1970-72 / UTM zone 25S\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Corrego Alegre 1970-72\",DATUM[\"Corrego_Alegre_1970_7"); - add_srs_wkt (p, 2, - "2\",SPHEROID[\"International 1924\",6378388,297,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7022\"]],TOWGS84[-206,172,-6,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6225\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4225"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",-33]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 12, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"22525\"]]"); - p = add_epsg_def (filter, first, last, 22700, "epsg", 22700, - "Deir ez Zor / Levant Zone"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0."); - add_proj4text (p, 1, - "9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 "); - add_proj4text (p, 2, - "+towgs84=-190.421,8.532,238.69,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Deir ez Zor / Levant Zone\",GEOGCS[\"Deir ez Zo"); - add_srs_wkt (p, 1, - "r\",DATUM[\"Deir_ez_Zor\",SPHEROID[\"Clarke 1880 (IGN)\""); - add_srs_wkt (p, 2, - ",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-190.421,8.532,238.69,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 4, - "SG\",\"6227\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4227\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",34.65],PARAMETER[\"central_meridian\",37"); - add_srs_wkt (p, 9, - ".35],PARAMETER[\"scale_factor\",0.9996256],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",300000],PARAMETER[\"false_northing\",3000"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"22700"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 22770, "epsg", 22770, - "Deir ez Zor / Syria Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0."); - add_proj4text (p, 1, - "9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 "); - add_proj4text (p, 2, - "+towgs84=-190.421,8.532,238.69,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Deir ez Zor / Syria Lambert\",GEOGCS[\"Deir ez "); - add_srs_wkt (p, 1, - "Zor\",DATUM[\"Deir_ez_Zor\",SPHEROID[\"Clarke 1880 (IGN)"); - add_srs_wkt (p, 2, - "\",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[-190.421,8.532,238.69,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6227\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4227\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",34.65],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",37.35],PARAMETER[\"scale_factor\",0.9996256],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",300000],PARAMETER[\"false_northing\",3"); - add_srs_wkt (p, 11, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"22"); - add_srs_wkt (p, 13, - "770\"]]"); - p = add_epsg_def (filter, first, last, 22780, "epsg", 22780, - "Deir ez Zor / Levant Stereographic"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=34.2 +lon_0=39.15 +k=0.9995341 +x_0="); - add_proj4text (p, 1, - "0 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-190.421,8.532"); - add_proj4text (p, 2, - ",238.69,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Deir ez Zor / Levant Stereographic\",GEOGCS[\"D"); - add_srs_wkt (p, 1, - "eir ez Zor\",DATUM[\"Deir_ez_Zor\",SPHEROID[\"Clarke 188"); - add_srs_wkt (p, 2, - "0 (IGN)\",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7011\"]],TOWGS84[-190.421,8.532,238.69,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6227\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4227"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",34.2],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",39.15],PARAMETER[\"scale_factor\",0.9995341],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"22780\"]]"); - p = add_epsg_def (filter, first, last, 22832, "epsg", 22832, - "Douala / UTM zone 32N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_"); - add_proj4text (p, 1, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Douala / UTM zone 32N (deprecated)\",GEOGCS[\"D"); - add_srs_wkt (p, 1, - "ouala\",DATUM[\"Douala\",SPHEROID[\"Clarke 1880 (IGN)\","); - add_srs_wkt (p, 2, - "6378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6228\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4228\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "22832\"]]"); - p = add_epsg_def (filter, first, last, 22991, "epsg", 22991, - "Egypt 1907 / Blue Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=35 +k=1 +x_0=300000 +y_0=11"); - add_proj4text (p, 1, - "00000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Egypt 1907 / Blue Belt\",GEOGCS[\"Egypt 1907\","); - add_srs_wkt (p, 1, - "DATUM[\"Egypt_1907\",SPHEROID[\"Helmert 1906\",6378200,2"); - add_srs_wkt (p, 2, - "98.3,AUTHORITY[\"EPSG\",\"7020\"]],TOWGS84[-130,110,-13,"); - add_srs_wkt (p, 3, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6229\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4229\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 7, - "RAMETER[\"latitude_of_origin\",30],PARAMETER[\"central_m"); - add_srs_wkt (p, 8, - "eridian\",35],PARAMETER[\"scale_factor\",1],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",300000],PARAMETER[\"false_northing\",110"); - add_srs_wkt (p, 10, - "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 11, - "S[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"22991\"]]"); - p = add_epsg_def (filter, first, last, 22992, "epsg", 22992, - "Egypt 1907 / Red Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=81"); - add_proj4text (p, 1, - "0000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Egypt 1907 / Red Belt\",GEOGCS[\"Egypt 1907\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Egypt_1907\",SPHEROID[\"Helmert 1906\",6378200,29"); - add_srs_wkt (p, 2, - "8.3,AUTHORITY[\"EPSG\",\"7020\"]],TOWGS84[-130,110,-13,0"); - add_srs_wkt (p, 3, - ",0,0,0],AUTHORITY[\"EPSG\",\"6229\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4229\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 7, - "RAMETER[\"latitude_of_origin\",30],PARAMETER[\"central_m"); - add_srs_wkt (p, 8, - "eridian\",31],PARAMETER[\"scale_factor\",1],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",615000],PARAMETER[\"false_northing\",810"); - add_srs_wkt (p, 10, - "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); - add_srs_wkt (p, 11, - "[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"22992\"]]"); - p = add_epsg_def (filter, first, last, 22993, "epsg", 22993, - "Egypt 1907 / Purple Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=20"); - add_proj4text (p, 1, - "0000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Egypt 1907 / Purple Belt\",GEOGCS[\"Egypt 1907\""); - add_srs_wkt (p, 1, - ",DATUM[\"Egypt_1907\",SPHEROID[\"Helmert 1906\",6378200,"); - add_srs_wkt (p, 2, - "298.3,AUTHORITY[\"EPSG\",\"7020\"]],TOWGS84[-130,110,-13"); - add_srs_wkt (p, 3, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6229\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 4, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 5, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"4229\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"latitude_of_origin\",30],PARAMETER[\"central"); - add_srs_wkt (p, 8, - "_meridian\",27],PARAMETER[\"scale_factor\",1],PARAMETER["); - add_srs_wkt (p, 9, - "\"false_easting\",700000],PARAMETER[\"false_northing\",2"); - add_srs_wkt (p, 10, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 11, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"22993\"]]"); - p = add_epsg_def (filter, first, last, 22994, "epsg", 22994, - "Egypt 1907 / Extended Purple Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=12"); - add_proj4text (p, 1, - "00000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +unit"); - add_proj4text (p, 2, - "s=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Egypt 1907 / Extended Purple Belt\",GEOGCS[\"Eg"); - add_srs_wkt (p, 1, - "ypt 1907\",DATUM[\"Egypt_1907\",SPHEROID[\"Helmert 1906\""); - add_srs_wkt (p, 2, - ",6378200,298.3,AUTHORITY[\"EPSG\",\"7020\"]],TOWGS84[-13"); - add_srs_wkt (p, 3, - "0,110,-13,0,0,0,0],AUTHORITY[\"EPSG\",\"6229\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4229\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",30],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",27],PARAMETER[\"scale_factor\",1],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",700000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",1200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"22994\"]]"); - p = add_epsg_def (filter, first, last, 23028, "epsg", 23028, - "ED50 / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=intl +towgs84=-87,-98,-121,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / UTM zone 28N\",GEOGCS[\"ED50\",DATUM[\"E"); - add_srs_wkt (p, 1, - "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); - add_srs_wkt (p, 2, - "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); - add_srs_wkt (p, 3, - "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-15],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"23028\"]]"); - p = add_epsg_def (filter, first, last, 23029, "epsg", 23029, - "ED50 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=intl +towgs84=-87,-98,-121,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / UTM zone 29N\",GEOGCS[\"ED50\",DATUM[\"E"); - add_srs_wkt (p, 1, - "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); - add_srs_wkt (p, 2, - "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); - add_srs_wkt (p, 3, - "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-9],PARAMETER[\"scale_factor\",0.9996],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"23029\"]]"); - p = add_epsg_def (filter, first, last, 23030, "epsg", 23030, - "ED50 / UTM zone 30N"); - add_proj4text (p, 0, - "+proj=utm +zone=30 +ellps=intl +towgs84=-87,-98,-121,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / UTM zone 30N\",GEOGCS[\"ED50\",DATUM[\"E"); - add_srs_wkt (p, 1, - "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); - add_srs_wkt (p, 2, - "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); - add_srs_wkt (p, 3, - "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-3],PARAMETER[\"scale_factor\",0.9996],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"23030\"]]"); - p = add_epsg_def (filter, first, last, 23031, "epsg", 23031, - "ED50 / UTM zone 31N"); - add_proj4text (p, 0, - "+proj=utm +zone=31 +ellps=intl +towgs84=-87,-98,-121,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / UTM zone 31N\",GEOGCS[\"ED50\",DATUM[\"E"); - add_srs_wkt (p, 1, - "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); - add_srs_wkt (p, 2, - "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); - add_srs_wkt (p, 3, - "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",3],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 10, - "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 11, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"23031\"]]"); - p = add_epsg_def (filter, first, last, 23032, "epsg", 23032, - "ED50 / UTM zone 32N"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +ellps=intl +towgs84=-87,-98,-121,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / UTM zone 32N\",GEOGCS[\"ED50\",DATUM[\"E"); - add_srs_wkt (p, 1, - "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); - add_srs_wkt (p, 2, - "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); - add_srs_wkt (p, 3, - "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",9],PARAMETER[\"scale_factor\",0.9996],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); - add_srs_wkt (p, 10, - "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 11, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"23032\"]]"); - p = add_epsg_def (filter, first, last, 23033, "epsg", 23033, - "ED50 / UTM zone 33N"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +ellps=intl +towgs84=-87,-98,-121,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / UTM zone 33N\",GEOGCS[\"ED50\",DATUM[\"E"); - add_srs_wkt (p, 1, - "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); - add_srs_wkt (p, 2, - "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); - add_srs_wkt (p, 3, - "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",15],PARAMETER[\"scale_factor\",0.9996],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"23033\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_29.c b/src/spatialite/src/srsinit/epsg_inlined_29.c deleted file mode 100644 index 20d2321..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_29.c +++ /dev/null @@ -1,3442 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_29 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 23034, "epsg", 23034, - "ED50 / UTM zone 34N"); - add_proj4text (p, 0, - "+proj=utm +zone=34 +ellps=intl +towgs84=-87,-98,-121,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / UTM zone 34N\",GEOGCS[\"ED50\",DATUM[\"E"); - add_srs_wkt (p, 1, - "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); - add_srs_wkt (p, 2, - "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); - add_srs_wkt (p, 3, - "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",21],PARAMETER[\"scale_factor\",0.9996],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"23034\"]]"); - p = add_epsg_def (filter, first, last, 23035, "epsg", 23035, - "ED50 / UTM zone 35N"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +ellps=intl +towgs84=-87,-98,-121,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / UTM zone 35N\",GEOGCS[\"ED50\",DATUM[\"E"); - add_srs_wkt (p, 1, - "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); - add_srs_wkt (p, 2, - "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); - add_srs_wkt (p, 3, - "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",27],PARAMETER[\"scale_factor\",0.9996],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"23035\"]]"); - p = add_epsg_def (filter, first, last, 23036, "epsg", 23036, - "ED50 / UTM zone 36N"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +ellps=intl +towgs84=-87,-98,-121,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / UTM zone 36N\",GEOGCS[\"ED50\",DATUM[\"E"); - add_srs_wkt (p, 1, - "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); - add_srs_wkt (p, 2, - "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); - add_srs_wkt (p, 3, - "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",33],PARAMETER[\"scale_factor\",0.9996],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"23036\"]]"); - p = add_epsg_def (filter, first, last, 23037, "epsg", 23037, - "ED50 / UTM zone 37N"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +ellps=intl +towgs84=-87,-98,-121,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / UTM zone 37N\",GEOGCS[\"ED50\",DATUM[\"E"); - add_srs_wkt (p, 1, - "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); - add_srs_wkt (p, 2, - "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); - add_srs_wkt (p, 3, - "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",39],PARAMETER[\"scale_factor\",0.9996],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"23037\"]]"); - p = add_epsg_def (filter, first, last, 23038, "epsg", 23038, - "ED50 / UTM zone 38N"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +ellps=intl +towgs84=-87,-98,-121,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / UTM zone 38N\",GEOGCS[\"ED50\",DATUM[\"E"); - add_srs_wkt (p, 1, - "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); - add_srs_wkt (p, 2, - "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); - add_srs_wkt (p, 3, - "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",45],PARAMETER[\"scale_factor\",0.9996],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"23038\"]]"); - p = add_epsg_def (filter, first, last, 23090, "epsg", 23090, - "ED50 / TM 0 N"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +n"); - add_proj4text (p, 2, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / TM 0 N\",GEOGCS[\"ED50\",DATUM[\"Europea"); - add_srs_wkt (p, 1, - "n_Datum_1950\",SPHEROID[\"International 1924\",6378388,2"); - add_srs_wkt (p, 2, - "97,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,"); - add_srs_wkt (p, 3, - "0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); - add_srs_wkt (p, 8, - "dian\",0],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 10, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 11, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"23090\"]]"); - p = add_epsg_def (filter, first, last, 23095, "epsg", 23095, - "ED50 / TM 5 NE"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=5 +k=0.9996 +x_0=500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +n"); - add_proj4text (p, 2, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ED50 / TM 5 NE\",GEOGCS[\"ED50\",DATUM[\"Europe"); - add_srs_wkt (p, 1, - "an_Datum_1950\",SPHEROID[\"International 1924\",6378388,"); - add_srs_wkt (p, 2, - "297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0"); - add_srs_wkt (p, 3, - ",0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 7, - "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); - add_srs_wkt (p, 8, - "ridian\",5],PARAMETER[\"scale_factor\",0.9996],PARAMETER"); - add_srs_wkt (p, 9, - "[\"false_easting\",500000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"23095\"]]"); - p = add_epsg_def (filter, first, last, 23239, "epsg", 23239, - "Fahud / UTM zone 39N"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=clrk80 +towgs84=-346,-1,224,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Fahud / UTM zone 39N\",GEOGCS[\"Fahud\",DATUM[\""); - add_srs_wkt (p, 1, - "Fahud\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.4"); - add_srs_wkt (p, 2, - "65,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-346,-1,224,0,0"); - add_srs_wkt (p, 3, - ",0,0],AUTHORITY[\"EPSG\",\"6232\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4232\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); - add_srs_wkt (p, 8, - "dian\",51],PARAMETER[\"scale_factor\",0.9996],PARAMETER["); - add_srs_wkt (p, 9, - "\"false_easting\",500000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"23239\"]]"); - p = add_epsg_def (filter, first, last, 23240, "epsg", 23240, - "Fahud / UTM zone 40N"); - add_proj4text (p, 0, - "+proj=utm +zone=40 +ellps=clrk80 +towgs84=-346,-1,224,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Fahud / UTM zone 40N\",GEOGCS[\"Fahud\",DATUM[\""); - add_srs_wkt (p, 1, - "Fahud\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.4"); - add_srs_wkt (p, 2, - "65,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-346,-1,224,0,0"); - add_srs_wkt (p, 3, - ",0,0],AUTHORITY[\"EPSG\",\"6232\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4232\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); - add_srs_wkt (p, 8, - "dian\",57],PARAMETER[\"scale_factor\",0.9996],PARAMETER["); - add_srs_wkt (p, 9, - "\"false_easting\",500000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"23240\"]]"); - p = add_epsg_def (filter, first, last, 23433, "epsg", 23433, - "Garoua / UTM zone 33N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +a=6378249.2 +b=6356515 +units=m +no_"); - add_proj4text (p, 1, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Garoua / UTM zone 33N (deprecated)\",GEOGCS[\"G"); - add_srs_wkt (p, 1, - "aroua\",DATUM[\"Garoua\",SPHEROID[\"Clarke 1880 (IGN)\","); - add_srs_wkt (p, 2, - "6378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6234\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4234\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); - add_srs_wkt (p, 11, - "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"23433\"]]"); - p = add_epsg_def (filter, first, last, 23700, "epsg", 23700, - "HD72 / EOV"); - add_proj4text (p, 0, - "+proj=somerc +lat_0=47.14439372222222 +lon_0=19.04857177"); - add_proj4text (p, 1, - "777778 +k_0=0.99993 +x_0=650000 +y_0=200000 +ellps=GRS67"); - add_proj4text (p, 2, - " +towgs84=52.17,-71.82,-14.9,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"HD72 / EOV\",GEOGCS[\"HD72\",DATUM[\"Hungarian_"); - add_srs_wkt (p, 1, - "Datum_1972\",SPHEROID[\"GRS 1967\",6378160,298.247167427"); - add_srs_wkt (p, 2, - ",AUTHORITY[\"EPSG\",\"7036\"]],TOWGS84[52.17,-71.82,-14."); - add_srs_wkt (p, 3, - "9,0,0,0,0],AUTHORITY[\"EPSG\",\"6237\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4237\"]],PROJECTION[\"Hotine_Oblique_Mercato"); - add_srs_wkt (p, 7, - "r\"],PARAMETER[\"latitude_of_center\",47.14439372222222]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"longitude_of_center\",19.04857177777778],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"azimuth\",90],PARAMETER[\"rectified_grid_angle"); - add_srs_wkt (p, 10, - "\",90],PARAMETER[\"scale_factor\",0.99993],PARAMETER[\"f"); - add_srs_wkt (p, 11, - "alse_easting\",650000],PARAMETER[\"false_northing\",2000"); - add_srs_wkt (p, 12, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 13, - "\"Y\",EAST],AXIS[\"X\",NORTH],AUTHORITY[\"EPSG\",\"23700"); - add_srs_wkt (p, 14, - "\"]]"); - p = add_epsg_def (filter, first, last, 23830, "epsg", 23830, - "DGN95 / Indonesia TM-3 zone 46.2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=94.5 +k=0.9999 +x_0=200000 +"); - add_proj4text (p, 1, - "y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 46.2\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",94.5],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.9999],PARAMETER[\"false_easting\",200000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"23830\"]]"); - p = add_epsg_def (filter, first, last, 23831, "epsg", 23831, - "DGN95 / Indonesia TM-3 zone 47.1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=97.5 +k=0.9999 +x_0=200000 +"); - add_proj4text (p, 1, - "y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 47.1\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",97.5],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.9999],PARAMETER[\"false_easting\",200000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"23831\"]]"); - p = add_epsg_def (filter, first, last, 23832, "epsg", 23832, - "DGN95 / Indonesia TM-3 zone 47.2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=100.5 +k=0.9999 +x_0=200000 "); - add_proj4text (p, 1, - "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 47.2\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",100.5],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"23832\"]]"); - p = add_epsg_def (filter, first, last, 23833, "epsg", 23833, - "DGN95 / Indonesia TM-3 zone 48.1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=103.5 +k=0.9999 +x_0=200000 "); - add_proj4text (p, 1, - "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 48.1\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",103.5],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"23833\"]]"); - p = add_epsg_def (filter, first, last, 23834, "epsg", 23834, - "DGN95 / Indonesia TM-3 zone 48.2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=106.5 +k=0.9999 +x_0=200000 "); - add_proj4text (p, 1, - "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 48.2\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",106.5],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"23834\"]]"); - p = add_epsg_def (filter, first, last, 23835, "epsg", 23835, - "DGN95 / Indonesia TM-3 zone 49.1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=109.5 +k=0.9999 +x_0=200000 "); - add_proj4text (p, 1, - "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 49.1\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",109.5],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"23835\"]]"); - p = add_epsg_def (filter, first, last, 23836, "epsg", 23836, - "DGN95 / Indonesia TM-3 zone 49.2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=112.5 +k=0.9999 +x_0=200000 "); - add_proj4text (p, 1, - "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 49.2\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",112.5],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"23836\"]]"); - p = add_epsg_def (filter, first, last, 23837, "epsg", 23837, - "DGN95 / Indonesia TM-3 zone 50.1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=115.5 +k=0.9999 +x_0=200000 "); - add_proj4text (p, 1, - "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 50.1\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",115.5],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"23837\"]]"); - p = add_epsg_def (filter, first, last, 23838, "epsg", 23838, - "DGN95 / Indonesia TM-3 zone 50.2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=118.5 +k=0.9999 +x_0=200000 "); - add_proj4text (p, 1, - "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 50.2\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",118.5],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"23838\"]]"); - p = add_epsg_def (filter, first, last, 23839, "epsg", 23839, - "DGN95 / Indonesia TM-3 zone 51.1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=121.5 +k=0.9999 +x_0=200000 "); - add_proj4text (p, 1, - "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 51.1\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",121.5],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"23839\"]]"); - p = add_epsg_def (filter, first, last, 23840, "epsg", 23840, - "DGN95 / Indonesia TM-3 zone 51.2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=124.5 +k=0.9999 +x_0=200000 "); - add_proj4text (p, 1, - "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 51.2\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",124.5],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"23840\"]]"); - p = add_epsg_def (filter, first, last, 23841, "epsg", 23841, - "DGN95 / Indonesia TM-3 zone 52.1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=127.5 +k=0.9999 +x_0=200000 "); - add_proj4text (p, 1, - "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 52.1\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",127.5],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"23841\"]]"); - p = add_epsg_def (filter, first, last, 23842, "epsg", 23842, - "DGN95 / Indonesia TM-3 zone 52.2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=130.5 +k=0.9999 +x_0=200000 "); - add_proj4text (p, 1, - "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 52.2\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",130.5],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"23842\"]]"); - p = add_epsg_def (filter, first, last, 23843, "epsg", 23843, - "DGN95 / Indonesia TM-3 zone 53.1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=133.5 +k=0.9999 +x_0=200000 "); - add_proj4text (p, 1, - "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 53.1\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",133.5],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"23843\"]]"); - p = add_epsg_def (filter, first, last, 23844, "epsg", 23844, - "DGN95 / Indonesia TM-3 zone 53.2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=136.5 +k=0.9999 +x_0=200000 "); - add_proj4text (p, 1, - "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 53.2\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",136.5],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"23844\"]]"); - p = add_epsg_def (filter, first, last, 23845, "epsg", 23845, - "DGN95 / Indonesia TM-3 zone 54.1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=139.5 +k=0.9999 +x_0=200000 "); - add_proj4text (p, 1, - "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / Indonesia TM-3 zone 54.1\",GEOGCS[\"DGN"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); - add_srs_wkt (p, 2, - "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",139.5],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"23845\"]]"); - p = add_epsg_def (filter, first, last, 23846, "epsg", 23846, - "ID74 / UTM zone 46N"); - add_proj4text (p, 0, - "+proj=utm +zone=46 +a=6378160 +b=6356774.50408554 +towgs"); - add_proj4text (p, 1, - "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 46N\",GEOGCS[\"ID74\",DATUM[\"I"); - add_srs_wkt (p, 1, - "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); - add_srs_wkt (p, 2, - "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",93],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"23846\"]]"); - p = add_epsg_def (filter, first, last, 23847, "epsg", 23847, - "ID74 / UTM zone 47N"); - add_proj4text (p, 0, - "+proj=utm +zone=47 +a=6378160 +b=6356774.50408554 +towgs"); - add_proj4text (p, 1, - "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 47N\",GEOGCS[\"ID74\",DATUM[\"I"); - add_srs_wkt (p, 1, - "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); - add_srs_wkt (p, 2, - "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",99],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"23847\"]]"); - p = add_epsg_def (filter, first, last, 23848, "epsg", 23848, - "ID74 / UTM zone 48N"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +a=6378160 +b=6356774.50408554 +towgs"); - add_proj4text (p, 1, - "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 48N\",GEOGCS[\"ID74\",DATUM[\"I"); - add_srs_wkt (p, 1, - "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); - add_srs_wkt (p, 2, - "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",105],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"23848\"]]"); - p = add_epsg_def (filter, first, last, 23849, "epsg", 23849, - "ID74 / UTM zone 49N"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +a=6378160 +b=6356774.50408554 +towgs"); - add_proj4text (p, 1, - "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 49N\",GEOGCS[\"ID74\",DATUM[\"I"); - add_srs_wkt (p, 1, - "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); - add_srs_wkt (p, 2, - "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",111],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"23849\"]]"); - p = add_epsg_def (filter, first, last, 23850, "epsg", 23850, - "ID74 / UTM zone 50N"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +a=6378160 +b=6356774.50408554 +towgs"); - add_proj4text (p, 1, - "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 50N\",GEOGCS[\"ID74\",DATUM[\"I"); - add_srs_wkt (p, 1, - "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); - add_srs_wkt (p, 2, - "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",117],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"23850\"]]"); - p = add_epsg_def (filter, first, last, 23851, "epsg", 23851, - "ID74 / UTM zone 51N"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +a=6378160 +b=6356774.50408554 +towgs"); - add_proj4text (p, 1, - "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 51N\",GEOGCS[\"ID74\",DATUM[\"I"); - add_srs_wkt (p, 1, - "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); - add_srs_wkt (p, 2, - "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",123],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"23851\"]]"); - p = add_epsg_def (filter, first, last, 23852, "epsg", 23852, - "ID74 / UTM zone 52N"); - add_proj4text (p, 0, - "+proj=utm +zone=52 +a=6378160 +b=6356774.50408554 +towgs"); - add_proj4text (p, 1, - "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 52N\",GEOGCS[\"ID74\",DATUM[\"I"); - add_srs_wkt (p, 1, - "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); - add_srs_wkt (p, 2, - "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",129],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 11, - "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); - add_srs_wkt (p, 12, - "ORTH],AUTHORITY[\"EPSG\",\"23852\"]]"); - p = add_epsg_def (filter, first, last, 23853, "epsg", 23853, - "ID74 / UTM zone 53N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=53 +a=6378160 +b=6356774.50408554 +towgs"); - add_proj4text (p, 1, - "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 53N (deprecated)\",GEOGCS[\"ID7"); - add_srs_wkt (p, 1, - "4\",DATUM[\"Indonesian_Datum_1974\",SPHEROID[\"Indonesia"); - add_srs_wkt (p, 2, - "n National Spheroid\",6378160,298.247,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7021\"]],TOWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6238\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",135],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"23853\"]]"); - p = add_epsg_def (filter, first, last, 23866, "epsg", 23866, - "DGN95 / UTM zone 46N"); - add_proj4text (p, 0, - "+proj=utm +zone=46 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / UTM zone 46N\",GEOGCS[\"DGN95\",DATUM[\""); - add_srs_wkt (p, 1, - "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",93],PARAMETER[\"scale_factor\",0.9996],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"23866\"]]"); - p = add_epsg_def (filter, first, last, 23867, "epsg", 23867, - "DGN95 / UTM zone 47N"); - add_proj4text (p, 0, - "+proj=utm +zone=47 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / UTM zone 47N\",GEOGCS[\"DGN95\",DATUM[\""); - add_srs_wkt (p, 1, - "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",99],PARAMETER[\"scale_factor\",0.9996],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"23867\"]]"); - p = add_epsg_def (filter, first, last, 23868, "epsg", 23868, - "DGN95 / UTM zone 48N"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / UTM zone 48N\",GEOGCS[\"DGN95\",DATUM[\""); - add_srs_wkt (p, 1, - "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",105],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"23868\"]]"); - p = add_epsg_def (filter, first, last, 23869, "epsg", 23869, - "DGN95 / UTM zone 49N"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / UTM zone 49N\",GEOGCS[\"DGN95\",DATUM[\""); - add_srs_wkt (p, 1, - "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",111],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"23869\"]]"); - p = add_epsg_def (filter, first, last, 23870, "epsg", 23870, - "DGN95 / UTM zone 50N"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / UTM zone 50N\",GEOGCS[\"DGN95\",DATUM[\""); - add_srs_wkt (p, 1, - "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",117],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"23870\"]]"); - p = add_epsg_def (filter, first, last, 23871, "epsg", 23871, - "DGN95 / UTM zone 51N"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / UTM zone 51N\",GEOGCS[\"DGN95\",DATUM[\""); - add_srs_wkt (p, 1, - "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",123],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"23871\"]]"); - p = add_epsg_def (filter, first, last, 23872, "epsg", 23872, - "DGN95 / UTM zone 52N"); - add_proj4text (p, 0, - "+proj=utm +zone=52 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / UTM zone 52N\",GEOGCS[\"DGN95\",DATUM[\""); - add_srs_wkt (p, 1, - "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",129],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"23872\"]]"); - p = add_epsg_def (filter, first, last, 23877, "epsg", 23877, - "DGN95 / UTM zone 47S"); - add_proj4text (p, 0, - "+proj=utm +zone=47 +south +ellps=WGS84 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / UTM zone 47S\",GEOGCS[\"DGN95\",DATUM[\""); - add_srs_wkt (p, 1, - "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",99],PARAMETER[\"scale_factor\",0.9996],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"23877\"]]"); - p = add_epsg_def (filter, first, last, 23878, "epsg", 23878, - "DGN95 / UTM zone 48S"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +south +ellps=WGS84 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / UTM zone 48S\",GEOGCS[\"DGN95\",DATUM[\""); - add_srs_wkt (p, 1, - "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",105],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"23878\"]]"); - p = add_epsg_def (filter, first, last, 23879, "epsg", 23879, - "DGN95 / UTM zone 49S"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +south +ellps=WGS84 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / UTM zone 49S\",GEOGCS[\"DGN95\",DATUM[\""); - add_srs_wkt (p, 1, - "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",111],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"23879\"]]"); - p = add_epsg_def (filter, first, last, 23880, "epsg", 23880, - "DGN95 / UTM zone 50S"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +south +ellps=WGS84 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / UTM zone 50S\",GEOGCS[\"DGN95\",DATUM[\""); - add_srs_wkt (p, 1, - "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",117],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"23880\"]]"); - p = add_epsg_def (filter, first, last, 23881, "epsg", 23881, - "DGN95 / UTM zone 51S"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +south +ellps=WGS84 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / UTM zone 51S\",GEOGCS[\"DGN95\",DATUM[\""); - add_srs_wkt (p, 1, - "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",123],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"23881\"]]"); - p = add_epsg_def (filter, first, last, 23882, "epsg", 23882, - "DGN95 / UTM zone 52S"); - add_proj4text (p, 0, - "+proj=utm +zone=52 +south +ellps=WGS84 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / UTM zone 52S\",GEOGCS[\"DGN95\",DATUM[\""); - add_srs_wkt (p, 1, - "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",129],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"23882\"]]"); - p = add_epsg_def (filter, first, last, 23883, "epsg", 23883, - "DGN95 / UTM zone 53S"); - add_proj4text (p, 0, - "+proj=utm +zone=53 +south +ellps=WGS84 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / UTM zone 53S\",GEOGCS[\"DGN95\",DATUM[\""); - add_srs_wkt (p, 1, - "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",135],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"23883\"]]"); - p = add_epsg_def (filter, first, last, 23884, "epsg", 23884, - "DGN95 / UTM zone 54S"); - add_proj4text (p, 0, - "+proj=utm +zone=54 +south +ellps=WGS84 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DGN95 / UTM zone 54S\",GEOGCS[\"DGN95\",DATUM[\""); - add_srs_wkt (p, 1, - "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); - add_srs_wkt (p, 2, - "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",141],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 11, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"23884\"]]"); - p = add_epsg_def (filter, first, last, 23886, "epsg", 23886, - "ID74 / UTM zone 46S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=46 +south +a=6378160 +b=6356774.50408554"); - add_proj4text (p, 1, - " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 46S (deprecated)\",GEOGCS[\"ID7"); - add_srs_wkt (p, 1, - "4\",DATUM[\"Indonesian_Datum_1974\",SPHEROID[\"Indonesia"); - add_srs_wkt (p, 2, - "n National Spheroid\",6378160,298.247,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7021\"]],TOWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6238\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",93],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); - add_srs_wkt (p, 12, - "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"23886\"]]"); - p = add_epsg_def (filter, first, last, 23887, "epsg", 23887, - "ID74 / UTM zone 47S"); - add_proj4text (p, 0, - "+proj=utm +zone=47 +south +a=6378160 +b=6356774.50408554"); - add_proj4text (p, 1, - " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 47S\",GEOGCS[\"ID74\",DATUM[\"I"); - add_srs_wkt (p, 1, - "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); - add_srs_wkt (p, 2, - "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",99],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"23887\"]]"); - p = add_epsg_def (filter, first, last, 23888, "epsg", 23888, - "ID74 / UTM zone 48S"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +south +a=6378160 +b=6356774.50408554"); - add_proj4text (p, 1, - " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 48S\",GEOGCS[\"ID74\",DATUM[\"I"); - add_srs_wkt (p, 1, - "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); - add_srs_wkt (p, 2, - "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",105],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"23888\"]]"); - p = add_epsg_def (filter, first, last, 23889, "epsg", 23889, - "ID74 / UTM zone 49S"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +south +a=6378160 +b=6356774.50408554"); - add_proj4text (p, 1, - " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 49S\",GEOGCS[\"ID74\",DATUM[\"I"); - add_srs_wkt (p, 1, - "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); - add_srs_wkt (p, 2, - "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",111],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"23889\"]]"); - p = add_epsg_def (filter, first, last, 23890, "epsg", 23890, - "ID74 / UTM zone 50S"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +south +a=6378160 +b=6356774.50408554"); - add_proj4text (p, 1, - " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 50S\",GEOGCS[\"ID74\",DATUM[\"I"); - add_srs_wkt (p, 1, - "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); - add_srs_wkt (p, 2, - "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",117],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"23890\"]]"); - p = add_epsg_def (filter, first, last, 23891, "epsg", 23891, - "ID74 / UTM zone 51S"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +south +a=6378160 +b=6356774.50408554"); - add_proj4text (p, 1, - " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 51S\",GEOGCS[\"ID74\",DATUM[\"I"); - add_srs_wkt (p, 1, - "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); - add_srs_wkt (p, 2, - "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",123],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"23891\"]]"); - p = add_epsg_def (filter, first, last, 23892, "epsg", 23892, - "ID74 / UTM zone 52S"); - add_proj4text (p, 0, - "+proj=utm +zone=52 +south +a=6378160 +b=6356774.50408554"); - add_proj4text (p, 1, - " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 52S\",GEOGCS[\"ID74\",DATUM[\"I"); - add_srs_wkt (p, 1, - "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); - add_srs_wkt (p, 2, - "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",129],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"23892\"]]"); - p = add_epsg_def (filter, first, last, 23893, "epsg", 23893, - "ID74 / UTM zone 53S"); - add_proj4text (p, 0, - "+proj=utm +zone=53 +south +a=6378160 +b=6356774.50408554"); - add_proj4text (p, 1, - " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 53S\",GEOGCS[\"ID74\",DATUM[\"I"); - add_srs_wkt (p, 1, - "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); - add_srs_wkt (p, 2, - "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",135],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"23893\"]]"); - p = add_epsg_def (filter, first, last, 23894, "epsg", 23894, - "ID74 / UTM zone 54S"); - add_proj4text (p, 0, - "+proj=utm +zone=54 +south +a=6378160 +b=6356774.50408554"); - add_proj4text (p, 1, - " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ID74 / UTM zone 54S\",GEOGCS[\"ID74\",DATUM[\"I"); - add_srs_wkt (p, 1, - "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); - add_srs_wkt (p, 2, - "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",141],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); - add_srs_wkt (p, 10, - "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"23894\"]]"); - p = add_epsg_def (filter, first, last, 23946, "epsg", 23946, - "Indian 1954 / UTM zone 46N"); - add_proj4text (p, 0, - "+proj=utm +zone=46 +a=6377276.345 +b=6356075.413140239 +"); - add_proj4text (p, 1, - "towgs84=217,823,299,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Indian 1954 / UTM zone 46N\",GEOGCS[\"Indian 19"); - add_srs_wkt (p, 1, - "54\",DATUM[\"Indian_1954\",SPHEROID[\"Everest 1830 (1937"); - add_srs_wkt (p, 2, - " Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7015\"]],TOWGS84[217,823,299,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6239\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4239\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",93],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"23946\"]]"); - p = add_epsg_def (filter, first, last, 23947, "epsg", 23947, - "Indian 1954 / UTM zone 47N"); - add_proj4text (p, 0, - "+proj=utm +zone=47 +a=6377276.345 +b=6356075.413140239 +"); - add_proj4text (p, 1, - "towgs84=217,823,299,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Indian 1954 / UTM zone 47N\",GEOGCS[\"Indian 19"); - add_srs_wkt (p, 1, - "54\",DATUM[\"Indian_1954\",SPHEROID[\"Everest 1830 (1937"); - add_srs_wkt (p, 2, - " Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7015\"]],TOWGS84[217,823,299,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6239\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4239\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",99],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"23947\"]]"); - p = add_epsg_def (filter, first, last, 23948, "epsg", 23948, - "Indian 1954 / UTM zone 48N"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +a=6377276.345 +b=6356075.413140239 +"); - add_proj4text (p, 1, - "towgs84=217,823,299,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Indian 1954 / UTM zone 48N\",GEOGCS[\"Indian 19"); - add_srs_wkt (p, 1, - "54\",DATUM[\"Indian_1954\",SPHEROID[\"Everest 1830 (1937"); - add_srs_wkt (p, 2, - " Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7015\"]],TOWGS84[217,823,299,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6239\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4239\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",105],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"23948\"]]"); - p = add_epsg_def (filter, first, last, 24047, "epsg", 24047, - "Indian 1975 / UTM zone 47N"); - add_proj4text (p, 0, - "+proj=utm +zone=47 +a=6377276.345 +b=6356075.413140239 +"); - add_proj4text (p, 1, - "towgs84=210,814,289,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Indian 1975 / UTM zone 47N\",GEOGCS[\"Indian 19"); - add_srs_wkt (p, 1, - "75\",DATUM[\"Indian_1975\",SPHEROID[\"Everest 1830 (1937"); - add_srs_wkt (p, 2, - " Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7015\"]],TOWGS84[210,814,289,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6240\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4240\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",99],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"24047\"]]"); - p = add_epsg_def (filter, first, last, 24048, "epsg", 24048, - "Indian 1975 / UTM zone 48N"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +a=6377276.345 +b=6356075.413140239 +"); - add_proj4text (p, 1, - "towgs84=210,814,289,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Indian 1975 / UTM zone 48N\",GEOGCS[\"Indian 19"); - add_srs_wkt (p, 1, - "75\",DATUM[\"Indian_1975\",SPHEROID[\"Everest 1830 (1937"); - add_srs_wkt (p, 2, - " Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7015\"]],TOWGS84[210,814,289,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6240\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4240\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",105],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"24048\"]]"); - p = add_epsg_def (filter, first, last, 24100, "epsg", 24100, - "Jamaica 1875 / Jamaica (Old Grid)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=167"); - add_proj4text (p, 1, - "638.49597 +y_0=121918.90616 +a=6378249.144808011 +b=6356"); - add_proj4text (p, 2, - "514.966204134 +to_meter=0.3047972654 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Jamaica 1875 / Jamaica (Old Grid)\",GEOGCS[\"Ja"); - add_srs_wkt (p, 1, - "maica 1875\",DATUM[\"Jamaica_1875\",SPHEROID[\"Clarke 18"); - add_srs_wkt (p, 2, - "80\",6378249.144808011,293.4663076556303,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7034\"]],AUTHORITY[\"EPSG\",\"6241\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4241\"]],PROJECTION[\"Lambert_Conformal_C"); - add_srs_wkt (p, 7, - "onic_1SP\"],PARAMETER[\"latitude_of_origin\",18],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-77],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "1],PARAMETER[\"false_easting\",550000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",400000],UNIT[\"Clarke's foot\",0.3047972654,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9005\"]],AXIS[\"Easting\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24100\"]]"); - p = add_epsg_def (filter, first, last, 24200, "epsg", 24200, - "JAD69 / Jamaica National Grid"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=250"); - add_proj4text (p, 1, - "000 +y_0=150000 +ellps=clrk66 +towgs84=70,207,389.5,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"JAD69 / Jamaica National Grid\",GEOGCS[\"JAD69\""); - add_srs_wkt (p, 1, - ",DATUM[\"Jamaica_1969\",SPHEROID[\"Clarke 1866\",6378206"); - add_srs_wkt (p, 2, - ".4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[70,207,389.5,0,0,0,0],AUTHORITY[\"EPSG\",\"6242\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4242\"]],PROJECTION[\"Lambert_"); - add_srs_wkt (p, 7, - "Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "18],PARAMETER[\"central_meridian\",-77],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1],PARAMETER[\"false_easting\",250000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",150000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"24200\"]]"); - p = add_epsg_def (filter, first, last, 24305, "epsg", 24305, - "Kalianpur 1937 / UTM zone 45N"); - add_proj4text (p, 0, - "+proj=utm +zone=45 +a=6377276.345 +b=6356075.413140239 +"); - add_proj4text (p, 1, - "towgs84=282,726,254,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1937 / UTM zone 45N\",GEOGCS[\"Kalian"); - add_srs_wkt (p, 1, - "pur 1937\",DATUM[\"Kalianpur_1937\",SPHEROID[\"Everest 1"); - add_srs_wkt (p, 2, - "830 (1937 Adjustment)\",6377276.345,300.8017,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7015\"]],TOWGS84[282,726,254,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6144\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4144\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",87],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",0.9996],PARAMETER[\"false_easting"); - add_srs_wkt (p, 10, - "\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24305\"]]"); - p = add_epsg_def (filter, first, last, 24306, "epsg", 24306, - "Kalianpur 1937 / UTM zone 46N"); - add_proj4text (p, 0, - "+proj=utm +zone=46 +a=6377276.345 +b=6356075.413140239 +"); - add_proj4text (p, 1, - "towgs84=282,726,254,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1937 / UTM zone 46N\",GEOGCS[\"Kalian"); - add_srs_wkt (p, 1, - "pur 1937\",DATUM[\"Kalianpur_1937\",SPHEROID[\"Everest 1"); - add_srs_wkt (p, 2, - "830 (1937 Adjustment)\",6377276.345,300.8017,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7015\"]],TOWGS84[282,726,254,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6144\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4144\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",93],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",0.9996],PARAMETER[\"false_easting"); - add_srs_wkt (p, 10, - "\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24306\"]]"); - p = add_epsg_def (filter, first, last, 24311, "epsg", 24311, - "Kalianpur 1962 / UTM zone 41N"); - add_proj4text (p, 0, - "+proj=utm +zone=41 +a=6377301.243 +b=6356100.230165385 +"); - add_proj4text (p, 1, - "towgs84=283,682,231,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1962 / UTM zone 41N\",GEOGCS[\"Kalian"); - add_srs_wkt (p, 1, - "pur 1962\",DATUM[\"Kalianpur_1962\",SPHEROID[\"Everest 1"); - add_srs_wkt (p, 2, - "830 (1962 Definition)\",6377301.243,300.8017255,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7044\"]],TOWGS84[283,682,231,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6145\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4145"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",63],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24311"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 24312, "epsg", 24312, - "Kalianpur 1962 / UTM zone 42N"); - add_proj4text (p, 0, - "+proj=utm +zone=42 +a=6377301.243 +b=6356100.230165385 +"); - add_proj4text (p, 1, - "towgs84=283,682,231,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1962 / UTM zone 42N\",GEOGCS[\"Kalian"); - add_srs_wkt (p, 1, - "pur 1962\",DATUM[\"Kalianpur_1962\",SPHEROID[\"Everest 1"); - add_srs_wkt (p, 2, - "830 (1962 Definition)\",6377301.243,300.8017255,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7044\"]],TOWGS84[283,682,231,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6145\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4145"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",69],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24312"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 24313, "epsg", 24313, - "Kalianpur 1962 / UTM zone 43N"); - add_proj4text (p, 0, - "+proj=utm +zone=43 +a=6377301.243 +b=6356100.230165385 +"); - add_proj4text (p, 1, - "towgs84=283,682,231,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1962 / UTM zone 43N\",GEOGCS[\"Kalian"); - add_srs_wkt (p, 1, - "pur 1962\",DATUM[\"Kalianpur_1962\",SPHEROID[\"Everest 1"); - add_srs_wkt (p, 2, - "830 (1962 Definition)\",6377301.243,300.8017255,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7044\"]],TOWGS84[283,682,231,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6145\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4145"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",75],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24313"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 24342, "epsg", 24342, - "Kalianpur 1975 / UTM zone 42N"); - add_proj4text (p, 0, - "+proj=utm +zone=42 +a=6377299.151 +b=6356098.145120132 +"); - add_proj4text (p, 1, - "towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1975 / UTM zone 42N\",GEOGCS[\"Kalian"); - add_srs_wkt (p, 1, - "pur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest 1"); - add_srs_wkt (p, 2, - "830 (1975 Definition)\",6377299.151,300.8017255,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4146"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",69],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24342"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 24343, "epsg", 24343, - "Kalianpur 1975 / UTM zone 43N"); - add_proj4text (p, 0, - "+proj=utm +zone=43 +a=6377299.151 +b=6356098.145120132 +"); - add_proj4text (p, 1, - "towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1975 / UTM zone 43N\",GEOGCS[\"Kalian"); - add_srs_wkt (p, 1, - "pur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest 1"); - add_srs_wkt (p, 2, - "830 (1975 Definition)\",6377299.151,300.8017255,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4146"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",75],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24343"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 24344, "epsg", 24344, - "Kalianpur 1975 / UTM zone 44N"); - add_proj4text (p, 0, - "+proj=utm +zone=44 +a=6377299.151 +b=6356098.145120132 +"); - add_proj4text (p, 1, - "towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1975 / UTM zone 44N\",GEOGCS[\"Kalian"); - add_srs_wkt (p, 1, - "pur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest 1"); - add_srs_wkt (p, 2, - "830 (1975 Definition)\",6377299.151,300.8017255,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4146"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",81],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24344"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 24345, "epsg", 24345, - "Kalianpur 1975 / UTM zone 45N"); - add_proj4text (p, 0, - "+proj=utm +zone=45 +a=6377299.151 +b=6356098.145120132 +"); - add_proj4text (p, 1, - "towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1975 / UTM zone 45N\",GEOGCS[\"Kalian"); - add_srs_wkt (p, 1, - "pur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest 1"); - add_srs_wkt (p, 2, - "830 (1975 Definition)\",6377299.151,300.8017255,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4146"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",87],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24345"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 24346, "epsg", 24346, - "Kalianpur 1975 / UTM zone 46N"); - add_proj4text (p, 0, - "+proj=utm +zone=46 +a=6377299.151 +b=6356098.145120132 +"); - add_proj4text (p, 1, - "towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1975 / UTM zone 46N\",GEOGCS[\"Kalian"); - add_srs_wkt (p, 1, - "pur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest 1"); - add_srs_wkt (p, 2, - "830 (1975 Definition)\",6377299.151,300.8017255,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4146"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",93],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24346"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 24347, "epsg", 24347, - "Kalianpur 1975 / UTM zone 47N"); - add_proj4text (p, 0, - "+proj=utm +zone=47 +a=6377299.151 +b=6356098.145120132 +"); - add_proj4text (p, 1, - "towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1975 / UTM zone 47N\",GEOGCS[\"Kalian"); - add_srs_wkt (p, 1, - "pur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest 1"); - add_srs_wkt (p, 2, - "830 (1975 Definition)\",6377299.151,300.8017255,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4146"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",99],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); - add_srs_wkt (p, 12, - "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24347"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 24370, "epsg", 24370, - "Kalianpur 1880 / India zone 0"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.5 +lat_0=39.5 +lon_0=68 +k_0=0.99846"); - add_proj4text (p, 1, - "154 +x_0=2153865.73916853 +y_0=2368292.194628102 +a=6377"); - add_proj4text (p, 2, - "299.36559538 +b=6356098.359005156 +to_meter=0.9143985307"); - add_proj4text (p, 3, - "444408 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1880 / India zone 0\",GEOGCS[\"Kalian"); - add_srs_wkt (p, 1, - "pur 1880\",DATUM[\"Kalianpur_1880\",SPHEROID[\"Everest ("); - add_srs_wkt (p, 2, - "1830 Definition)\",6377299.36559538,300.8017255433612,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7042\"]],AUTHORITY[\"EPSG\",\"6243\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4243\"]],PROJECTION[\"Lambe"); - add_srs_wkt (p, 7, - "rt_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origin"); - add_srs_wkt (p, 8, - "\",39.5],PARAMETER[\"central_meridian\",68],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.99846154],PARAMETER[\"false_easting\",2"); - add_srs_wkt (p, 10, - "355500],PARAMETER[\"false_northing\",2590000],UNIT[\"Ind"); - add_srs_wkt (p, 11, - "ian yard\",0.9143985307444408,AUTHORITY[\"EPSG\",\"9084\""); - add_srs_wkt (p, 12, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"24370\"]]"); - p = add_epsg_def (filter, first, last, 24371, "epsg", 24371, - "Kalianpur 1880 / India zone I"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878"); - add_proj4text (p, 1, - "641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=637"); - add_proj4text (p, 2, - "7299.36559538 +b=6356098.359005156 +to_meter=0.914398530"); - add_proj4text (p, 3, - "7444408 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1880 / India zone I\",GEOGCS[\"Kalian"); - add_srs_wkt (p, 1, - "pur 1880\",DATUM[\"Kalianpur_1880\",SPHEROID[\"Everest ("); - add_srs_wkt (p, 2, - "1830 Definition)\",6377299.36559538,300.8017255433612,AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"7042\"]],AUTHORITY[\"EPSG\",\"6243\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4243\"]],PROJECTION[\"Lambe"); - add_srs_wkt (p, 7, - "rt_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origin"); - add_srs_wkt (p, 8, - "\",32.5],PARAMETER[\"central_meridian\",68],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.99878641],PARAMETER[\"false_easting\",3"); - add_srs_wkt (p, 10, - "000000],PARAMETER[\"false_northing\",1000000],UNIT[\"Ind"); - add_srs_wkt (p, 11, - "ian yard\",0.9143985307444408,AUTHORITY[\"EPSG\",\"9084\""); - add_srs_wkt (p, 12, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"24371\"]]"); - p = add_epsg_def (filter, first, last, 24372, "epsg", 24372, - "Kalianpur 1880 / India zone IIa"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 "); - add_proj4text (p, 1, - "+x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299"); - add_proj4text (p, 2, - ".36559538 +b=6356098.359005156 +to_meter=0.9143985307444"); - add_proj4text (p, 3, - "408 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1880 / India zone IIa\",GEOGCS[\"Kali"); - add_srs_wkt (p, 1, - "anpur 1880\",DATUM[\"Kalianpur_1880\",SPHEROID[\"Everest"); - add_srs_wkt (p, 2, - " (1830 Definition)\",6377299.36559538,300.8017255433612,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7042\"]],AUTHORITY[\"EPSG\",\"6243\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4243\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 7, - "ert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",26],PARAMETER[\"central_meridian\",74],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.99878641],PARAMETER[\"false_easting\",30"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",1000000],UNIT[\"Indi"); - add_srs_wkt (p, 11, - "an yard\",0.9143985307444408,AUTHORITY[\"EPSG\",\"9084\""); - add_srs_wkt (p, 12, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"24372\"]]"); - p = add_epsg_def (filter, first, last, 24373, "epsg", 24373, - "Kalianpur 1880 / India zone III"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 "); - add_proj4text (p, 1, - "+x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299"); - add_proj4text (p, 2, - ".36559538 +b=6356098.359005156 +to_meter=0.9143985307444"); - add_proj4text (p, 3, - "408 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1880 / India zone III\",GEOGCS[\"Kali"); - add_srs_wkt (p, 1, - "anpur 1880\",DATUM[\"Kalianpur_1880\",SPHEROID[\"Everest"); - add_srs_wkt (p, 2, - " (1830 Definition)\",6377299.36559538,300.8017255433612,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7042\"]],AUTHORITY[\"EPSG\",\"6243\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4243\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 7, - "ert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",19],PARAMETER[\"central_meridian\",80],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.99878641],PARAMETER[\"false_easting\",30"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",1000000],UNIT[\"Indi"); - add_srs_wkt (p, 11, - "an yard\",0.9143985307444408,AUTHORITY[\"EPSG\",\"9084\""); - add_srs_wkt (p, 12, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"24373\"]]"); - p = add_epsg_def (filter, first, last, 24374, "epsg", 24374, - "Kalianpur 1880 / India zone IV"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 "); - add_proj4text (p, 1, - "+x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299"); - add_proj4text (p, 2, - ".36559538 +b=6356098.359005156 +to_meter=0.9143985307444"); - add_proj4text (p, 3, - "408 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1880 / India zone IV\",GEOGCS[\"Kalia"); - add_srs_wkt (p, 1, - "npur 1880\",DATUM[\"Kalianpur_1880\",SPHEROID[\"Everest "); - add_srs_wkt (p, 2, - "(1830 Definition)\",6377299.36559538,300.8017255433612,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7042\"]],AUTHORITY[\"EPSG\",\"6243\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4243\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 7, - "ert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",12],PARAMETER[\"central_meridian\",80],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.99878641],PARAMETER[\"false_easting\",30"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",1000000],UNIT[\"Indi"); - add_srs_wkt (p, 11, - "an yard\",0.9143985307444408,AUTHORITY[\"EPSG\",\"9084\""); - add_srs_wkt (p, 12, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"24374\"]]"); - p = add_epsg_def (filter, first, last, 24375, "epsg", 24375, - "Kalianpur 1937 / India zone IIb"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 "); - add_proj4text (p, 1, - "+x_0=2743185.69 +y_0=914395.23 +a=6377276.345 +b=6356075"); - add_proj4text (p, 2, - ".413140239 +towgs84=282,726,254,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 3, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1937 / India zone IIb\",GEOGCS[\"Kali"); - add_srs_wkt (p, 1, - "anpur 1937\",DATUM[\"Kalianpur_1937\",SPHEROID[\"Everest"); - add_srs_wkt (p, 2, - " 1830 (1937 Adjustment)\",6377276.345,300.8017,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7015\"]],TOWGS84[282,726,254,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6144\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4144\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",26],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",90],PARAMETER[\"scale_factor\",0.99878641],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",2743185.69],PARAMETER[\"false_northing"); - add_srs_wkt (p, 11, - "\",914395.23],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 12, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"24375\"]]"); - p = add_epsg_def (filter, first, last, 24376, "epsg", 24376, - "Kalianpur 1962 / India zone I"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878"); - add_proj4text (p, 1, - "641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=63561"); - add_proj4text (p, 2, - "00.230165385 +towgs84=283,682,231,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1962 / India zone I\",GEOGCS[\"Kalian"); - add_srs_wkt (p, 1, - "pur 1962\",DATUM[\"Kalianpur_1962\",SPHEROID[\"Everest 1"); - add_srs_wkt (p, 2, - "830 (1962 Definition)\",6377301.243,300.8017255,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7044\"]],TOWGS84[283,682,231,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6145\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4145"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"latitude_of_origin\",32.5],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",68],PARAMETER[\"scale_factor\",0.99878641],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",2743196.4],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",914398.8],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 12, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"24376\"]]"); - p = add_epsg_def (filter, first, last, 24377, "epsg", 24377, - "Kalianpur 1962 / India zone IIa"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 "); - add_proj4text (p, 1, - "+x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.2"); - add_proj4text (p, 2, - "30165385 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1962 / India zone IIa\",GEOGCS[\"Kali"); - add_srs_wkt (p, 1, - "anpur 1962\",DATUM[\"Kalianpur_1962\",SPHEROID[\"Everest"); - add_srs_wkt (p, 2, - " 1830 (1962 Definition)\",6377301.243,300.8017255,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7044\"]],TOWGS84[283,682,231,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6145\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); - add_srs_wkt (p, 7, - "45\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",26],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",74],PARAMETER[\"scale_factor\",0.99878641],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",2743196.4],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",914398.8],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 12, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"24377\"]]"); - p = add_epsg_def (filter, first, last, 24378, "epsg", 24378, - "Kalianpur 1975 / India zone I"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878"); - add_proj4text (p, 1, - "641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=63560"); - add_proj4text (p, 2, - "98.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1975 / India zone I\",GEOGCS[\"Kalian"); - add_srs_wkt (p, 1, - "pur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest 1"); - add_srs_wkt (p, 2, - "830 (1975 Definition)\",6377299.151,300.8017255,AUTHORIT"); - add_srs_wkt (p, 3, - "Y[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4146"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"latitude_of_origin\",32.5],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",68],PARAMETER[\"scale_factor\",0.99878641],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",2743195.5],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",914398.5],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 12, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"24378\"]]"); - p = add_epsg_def (filter, first, last, 24379, "epsg", 24379, - "Kalianpur 1975 / India zone IIa"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 "); - add_proj4text (p, 1, - "+x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.1"); - add_proj4text (p, 2, - "45120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1975 / India zone IIa\",GEOGCS[\"Kali"); - add_srs_wkt (p, 1, - "anpur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest"); - add_srs_wkt (p, 2, - " 1830 (1975 Definition)\",6377299.151,300.8017255,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); - add_srs_wkt (p, 7, - "46\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",26],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",74],PARAMETER[\"scale_factor\",0.99878641],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",2743195.5],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",914398.5],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 12, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"24379\"]]"); - p = add_epsg_def (filter, first, last, 24380, "epsg", 24380, - "Kalianpur 1975 / India zone IIb"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 "); - add_proj4text (p, 1, - "+x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.1"); - add_proj4text (p, 2, - "45120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1975 / India zone IIb\",GEOGCS[\"Kali"); - add_srs_wkt (p, 1, - "anpur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest"); - add_srs_wkt (p, 2, - " 1830 (1975 Definition)\",6377299.151,300.8017255,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); - add_srs_wkt (p, 7, - "46\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",26],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",90],PARAMETER[\"scale_factor\",0.99878641],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",2743195.5],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",914398.5],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 12, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"24380\"]]"); - p = add_epsg_def (filter, first, last, 24381, "epsg", 24381, - "Kalianpur 1975 / India zone III"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 "); - add_proj4text (p, 1, - "+x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.1"); - add_proj4text (p, 2, - "45120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1975 / India zone III\",GEOGCS[\"Kali"); - add_srs_wkt (p, 1, - "anpur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest"); - add_srs_wkt (p, 2, - " 1830 (1975 Definition)\",6377299.151,300.8017255,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); - add_srs_wkt (p, 7, - "46\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",19],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",80],PARAMETER[\"scale_factor\",0.99878641],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_easting\",2743195.5],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",914398.5],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 12, - "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"24381\"]]"); - p = add_epsg_def (filter, first, last, 24382, "epsg", 24382, - "Kalianpur 1880 / India zone IIb"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 "); - add_proj4text (p, 1, - "+x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299"); - add_proj4text (p, 2, - ".36559538 +b=6356098.359005156 +to_meter=0.9143985307444"); - add_proj4text (p, 3, - "408 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1880 / India zone IIb\",GEOGCS[\"Kali"); - add_srs_wkt (p, 1, - "anpur 1880\",DATUM[\"Kalianpur_1880\",SPHEROID[\"Everest"); - add_srs_wkt (p, 2, - " (1830 Definition)\",6377299.36559538,300.8017255433612,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7042\"]],AUTHORITY[\"EPSG\",\"6243\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4243\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 7, - "ert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",26],PARAMETER[\"central_meridian\",90],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.99878641],PARAMETER[\"false_easting\",30"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",1000000],UNIT[\"Indi"); - add_srs_wkt (p, 11, - "an yard\",0.9143985307444408,AUTHORITY[\"EPSG\",\"9084\""); - add_srs_wkt (p, 12, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"24382\"]]"); - p = add_epsg_def (filter, first, last, 24383, "epsg", 24383, - "Kalianpur 1975 / India zone IV"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 "); - add_proj4text (p, 1, - "+x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.1"); - add_proj4text (p, 2, - "45120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kalianpur 1975 / India zone IV\",GEOGCS[\"Kalia"); - add_srs_wkt (p, 1, - "npur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest "); - add_srs_wkt (p, 2, - "1830 (1975 Definition)\",6377299.151,300.8017255,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"414"); - add_srs_wkt (p, 7, - "6\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",12],PARAMETER[\"central_merid"); - add_srs_wkt (p, 9, - "ian\",80],PARAMETER[\"scale_factor\",0.99878641],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",2743195.5],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",914398.5],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 12, - "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); - add_srs_wkt (p, 13, - "THORITY[\"EPSG\",\"24383\"]]"); - p = add_epsg_def (filter, first, last, 24500, "epsg", 24500, - "Kertau 1968 / Singapore Grid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=1.287646666666667 +lon_0=103.853002222"); - add_proj4text (p, 1, - "2222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038"); - add_proj4text (p, 2, - "993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kertau 1968 / Singapore Grid\",GEOGCS[\"Kertau "); - add_srs_wkt (p, 1, - "1968\",DATUM[\"Kertau_1968\",SPHEROID[\"Everest 1830 Mod"); - add_srs_wkt (p, 2, - "ified\",6377304.063,300.8017,AUTHORITY[\"EPSG\",\"7018\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-11,851,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6245\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4245\"]],PROJECTION[\"Cass"); - add_srs_wkt (p, 7, - "ini_Soldner\"],PARAMETER[\"latitude_of_origin\",1.287646"); - add_srs_wkt (p, 8, - "666666667],PARAMETER[\"central_meridian\",103.8530022222"); - add_srs_wkt (p, 9, - "222],PARAMETER[\"false_easting\",30000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",30000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"24500\"]]"); - p = add_epsg_def (filter, first, last, 24547, "epsg", 24547, - "Kertau 1968 / UTM zone 47N"); - add_proj4text (p, 0, - "+proj=utm +zone=47 +a=6377304.063 +b=6356103.038993155 +"); - add_proj4text (p, 1, - "towgs84=-11,851,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kertau 1968 / UTM zone 47N\",GEOGCS[\"Kertau 19"); - add_srs_wkt (p, 1, - "68\",DATUM[\"Kertau_1968\",SPHEROID[\"Everest 1830 Modif"); - add_srs_wkt (p, 2, - "ied\",6377304.063,300.8017,AUTHORITY[\"EPSG\",\"7018\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[-11,851,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6245\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4245\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",99],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"24547\"]]"); - p = add_epsg_def (filter, first, last, 24548, "epsg", 24548, - "Kertau 1968 / UTM zone 48N"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +a=6377304.063 +b=6356103.038993155 +"); - add_proj4text (p, 1, - "towgs84=-11,851,5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kertau 1968 / UTM zone 48N\",GEOGCS[\"Kertau 19"); - add_srs_wkt (p, 1, - "68\",DATUM[\"Kertau_1968\",SPHEROID[\"Everest 1830 Modif"); - add_srs_wkt (p, 2, - "ied\",6377304.063,300.8017,AUTHORITY[\"EPSG\",\"7018\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[-11,851,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6245\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4245\"]],PROJECTION[\"Trans"); - add_srs_wkt (p, 7, - "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",105],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"24548\"]]"); - p = add_epsg_def (filter, first, last, 24571, "epsg", 24571, - "Kertau / R.S.O. Malaya (ch) (deprecated)"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k="); - add_proj4text (p, 1, - "0.99984 +x_0=804671.2997750348 +y_0=0 +gamma=323.1301023"); - add_proj4text (p, 2, - "611111 +a=6377304.063 +b=6356103.038993155 +towgs84=-11,"); - add_proj4text (p, 3, - "851,5,0,0,0,0 +to_meter=20.11678249437587 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Kertau / R.S.O. Malaya (ch) (deprecated)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Kertau 1968\",DATUM[\"Kertau_1968\",SPHEROID[\"Ever"); - add_srs_wkt (p, 2, - "est 1830 Modified\",6377304.063,300.8017,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7018\"]],TOWGS84[-11,851,5,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 4, - "SG\",\"6245\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4245\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Hotine_Oblique_Mercator\"],PARAMETER[\"latitude_"); - add_srs_wkt (p, 8, - "of_center\",4],PARAMETER[\"longitude_of_center\",102.25]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"azimuth\",323.0257905],PARAMETER[\"rectifie"); - add_srs_wkt (p, 10, - "d_grid_angle\",323.1301023611111],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 11, - "or\",0.99984],PARAMETER[\"false_easting\",40000],PARAMET"); - add_srs_wkt (p, 12, - "ER[\"false_northing\",0],UNIT[\"British chain (Benoit 18"); - add_srs_wkt (p, 13, - "95 B)\",20.11678249437587,AUTHORITY[\"EPSG\",\"9062\"]],"); - add_srs_wkt (p, 14, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 15, - "Y[\"EPSG\",\"24571\"]]"); - p = add_epsg_def (filter, first, last, 24600, "epsg", 24600, - "KOC Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.99878"); - add_proj4text (p, 1, - "64078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +tow"); - add_proj4text (p, 2, - "gs84=-294.7,-200.1,525.5,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"KOC Lambert\",GEOGCS[\"KOC\",DATUM[\"Kuwait_Oil"); - add_srs_wkt (p, 1, - "_Company\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,29"); - add_srs_wkt (p, 2, - "3.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-294.7,-200."); - add_srs_wkt (p, 3, - "1,525.5,0,0,0,0],AUTHORITY[\"EPSG\",\"6246\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4246\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",32.5],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",45],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.9987864078],PARAMETER[\"false_easting\",1500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",1166200],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24600\"]]"); - p = add_epsg_def (filter, first, last, 24718, "epsg", 24718, - "La Canoa / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=intl +towgs84=-273.5,110.6,-35"); - add_proj4text (p, 1, - "7.9,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"La Canoa / UTM zone 18N\",GEOGCS[\"La Canoa\",D"); - add_srs_wkt (p, 1, - "ATUM[\"La_Canoa\",SPHEROID[\"International 1924\",637838"); - add_srs_wkt (p, 2, - "8,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-273.5,110.6"); - add_srs_wkt (p, 3, - ",-357.9,0,0,0,0],AUTHORITY[\"EPSG\",\"6247\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4247\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",-75],PARAMETER[\"scale_factor\",0.9996"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"24718\"]]"); - p = add_epsg_def (filter, first, last, 24719, "epsg", 24719, - "La Canoa / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +ellps=intl +towgs84=-273.5,110.6,-35"); - add_proj4text (p, 1, - "7.9,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"La Canoa / UTM zone 19N\",GEOGCS[\"La Canoa\",D"); - add_srs_wkt (p, 1, - "ATUM[\"La_Canoa\",SPHEROID[\"International 1924\",637838"); - add_srs_wkt (p, 2, - "8,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-273.5,110.6"); - add_srs_wkt (p, 3, - ",-357.9,0,0,0,0],AUTHORITY[\"EPSG\",\"6247\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4247\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",-69],PARAMETER[\"scale_factor\",0.9996"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"24719\"]]"); - p = add_epsg_def (filter, first, last, 24720, "epsg", 24720, - "La Canoa / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=intl +towgs84=-273.5,110.6,-35"); - add_proj4text (p, 1, - "7.9,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"La Canoa / UTM zone 20N\",GEOGCS[\"La Canoa\",D"); - add_srs_wkt (p, 1, - "ATUM[\"La_Canoa\",SPHEROID[\"International 1924\",637838"); - add_srs_wkt (p, 2, - "8,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-273.5,110.6"); - add_srs_wkt (p, 3, - ",-357.9,0,0,0,0],AUTHORITY[\"EPSG\",\"6247\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4247\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",-63],PARAMETER[\"scale_factor\",0.9996"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"24720\"]]"); - p = add_epsg_def (filter, first, last, 24817, "epsg", 24817, - "PSAD56 / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=intl +towgs84=-288,175,-376,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSAD56 / UTM zone 17N\",GEOGCS[\"PSAD56\",DATUM"); - add_srs_wkt (p, 1, - "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",-81],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"24817\"]]"); - p = add_epsg_def (filter, first, last, 24818, "epsg", 24818, - "PSAD56 / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=intl +towgs84=-288,175,-376,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSAD56 / UTM zone 18N\",GEOGCS[\"PSAD56\",DATUM"); - add_srs_wkt (p, 1, - "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",-75],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"24818\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_30.c b/src/spatialite/src/srsinit/epsg_inlined_30.c deleted file mode 100644 index 18c8c3c..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_30.c +++ /dev/null @@ -1,3384 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_30 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 24819, "epsg", 24819, - "PSAD56 / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +ellps=intl +towgs84=-288,175,-376,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSAD56 / UTM zone 19N\",GEOGCS[\"PSAD56\",DATUM"); - add_srs_wkt (p, 1, - "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",-69],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"24819\"]]"); - p = add_epsg_def (filter, first, last, 24820, "epsg", 24820, - "PSAD56 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=intl +towgs84=-288,175,-376,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSAD56 / UTM zone 20N\",GEOGCS[\"PSAD56\",DATUM"); - add_srs_wkt (p, 1, - "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",-63],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"24820\"]]"); - p = add_epsg_def (filter, first, last, 24821, "epsg", 24821, - "PSAD56 / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=intl +towgs84=-288,175,-376,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSAD56 / UTM zone 21N\",GEOGCS[\"PSAD56\",DATUM"); - add_srs_wkt (p, 1, - "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",-57],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"24821\"]]"); - p = add_epsg_def (filter, first, last, 24877, "epsg", 24877, - "PSAD56 / UTM zone 17S"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +south +ellps=intl +towgs84=-288,175,"); - add_proj4text (p, 1, - "-376,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSAD56 / UTM zone 17S\",GEOGCS[\"PSAD56\",DATUM"); - add_srs_wkt (p, 1, - "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",-81],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24877\"]]"); - p = add_epsg_def (filter, first, last, 24878, "epsg", 24878, - "PSAD56 / UTM zone 18S"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +south +ellps=intl +towgs84=-288,175,"); - add_proj4text (p, 1, - "-376,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSAD56 / UTM zone 18S\",GEOGCS[\"PSAD56\",DATUM"); - add_srs_wkt (p, 1, - "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",-75],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24878\"]]"); - p = add_epsg_def (filter, first, last, 24879, "epsg", 24879, - "PSAD56 / UTM zone 19S"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +south +ellps=intl +towgs84=-288,175,"); - add_proj4text (p, 1, - "-376,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSAD56 / UTM zone 19S\",GEOGCS[\"PSAD56\",DATUM"); - add_srs_wkt (p, 1, - "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",-69],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24879\"]]"); - p = add_epsg_def (filter, first, last, 24880, "epsg", 24880, - "PSAD56 / UTM zone 20S"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +south +ellps=intl +towgs84=-288,175,"); - add_proj4text (p, 1, - "-376,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSAD56 / UTM zone 20S\",GEOGCS[\"PSAD56\",DATUM"); - add_srs_wkt (p, 1, - "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",-63],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24880\"]]"); - p = add_epsg_def (filter, first, last, 24881, "epsg", 24881, - "PSAD56 / UTM zone 21S"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +south +ellps=intl +towgs84=-288,175,"); - add_proj4text (p, 1, - "-376,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSAD56 / UTM zone 21S\",GEOGCS[\"PSAD56\",DATUM"); - add_srs_wkt (p, 1, - "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",-57],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24881\"]]"); - p = add_epsg_def (filter, first, last, 24882, "epsg", 24882, - "PSAD56 / UTM zone 22S"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +south +ellps=intl +towgs84=-288,175,"); - add_proj4text (p, 1, - "-376,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSAD56 / UTM zone 22S\",GEOGCS[\"PSAD56\",DATUM"); - add_srs_wkt (p, 1, - "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",-51],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24882\"]]"); - p = add_epsg_def (filter, first, last, 24891, "epsg", 24891, - "PSAD56 / Peru west zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-6 +lon_0=-80.5 +k=0.99983008 +x_0=22"); - add_proj4text (p, 1, - "2000 +y_0=1426834.743 +ellps=intl +towgs84=-288,175,-376"); - add_proj4text (p, 2, - ",0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSAD56 / Peru west zone\",GEOGCS[\"PSAD56\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Provisional_South_American_Datum_1956\",SPHEROID[\""); - add_srs_wkt (p, 2, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "22\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",-6],PARAMETER[\"central_meridian\",-80.5],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.99983008],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",222000],PARAMETER[\"false_northing\",1426834.743],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); - add_srs_wkt (p, 12, - "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"24891\"]]"); - p = add_epsg_def (filter, first, last, 24892, "epsg", 24892, - "PSAD56 / Peru central zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-9.5 +lon_0=-76 +k=0.99932994 +x_0=72"); - add_proj4text (p, 1, - "0000 +y_0=1039979.159 +ellps=intl +towgs84=-288,175,-376"); - add_proj4text (p, 2, - ",0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSAD56 / Peru central zone\",GEOGCS[\"PSAD56\","); - add_srs_wkt (p, 1, - "DATUM[\"Provisional_South_American_Datum_1956\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7022\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 5, - "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJEC"); - add_srs_wkt (p, 7, - "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 8, - "igin\",-9.5],PARAMETER[\"central_meridian\",-76],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",0.99932994],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",720000],PARAMETER[\"false_northing\",1039979.159],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 12, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"24892\"]]"); - p = add_epsg_def (filter, first, last, 24893, "epsg", 24893, - "PSAD56 / Peru east zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-9.5 +lon_0=-70.5 +k=0.99952992 +x_0="); - add_proj4text (p, 1, - "1324000 +y_0=1040084.558 +ellps=intl +towgs84=-288,175,-"); - add_proj4text (p, 2, - "376,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"PSAD56 / Peru east zone\",GEOGCS[\"PSAD56\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Provisional_South_American_Datum_1956\",SPHEROID[\""); - add_srs_wkt (p, 2, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "22\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",-9.5],PARAMETER[\"central_meridian\",-70.5],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",0.99952992],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",1324000],PARAMETER[\"false_northing\",1040084.558],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"24893\"]]"); - p = add_epsg_def (filter, first, last, 25000, "epsg", 25000, - "Leigon / Ghana Metre Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.9997"); - add_proj4text (p, 1, - "5 +x_0=274319.51 +y_0=0 +ellps=clrk80 +towgs84=-130,29,3"); - add_proj4text (p, 2, - "64,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Leigon / Ghana Metre Grid\",GEOGCS[\"Leigon\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Leigon\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.1"); - add_srs_wkt (p, 2, - "45,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-130,29"); - add_srs_wkt (p, 3, - ",364,0,0,0,0],AUTHORITY[\"EPSG\",\"6250\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 4, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4250\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",4.666666666666667],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",-1],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.99975],PARAMETER[\"false_easting\",274319.51],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"25000\"]]"); - p = add_epsg_def (filter, first, last, 25231, "epsg", 25231, - "Lome / UTM zone 31N"); - add_proj4text (p, 0, - "+proj=utm +zone=31 +a=6378249.2 +b=6356515 +units=m +no_"); - add_proj4text (p, 1, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Lome / UTM zone 31N\",GEOGCS[\"Lome\",DATUM[\"L"); - add_srs_wkt (p, 1, - "ome\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.46602"); - add_srs_wkt (p, 2, - "12936269,AUTHORITY[\"EPSG\",\"7011\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6252\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4252\"]],PROJECTI"); - add_srs_wkt (p, 6, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 7, - "in\",0],PARAMETER[\"central_meridian\",3],PARAMETER[\"sc"); - add_srs_wkt (p, 8, - "ale_factor\",0.9996],PARAMETER[\"false_easting\",500000]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"25231\"]]"); - p = add_epsg_def (filter, first, last, 25391, "epsg", 25391, - "Luzon 1911 / Philippines zone I"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +"); - add_proj4text (p, 1, - "y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Luzon 1911 / Philippines zone I\",GEOGCS[\"Luzo"); - add_srs_wkt (p, 1, - "n 1911\",DATUM[\"Luzon_1911\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[-133,-77,-51,0,0,0,0],AUTHORITY[\"EPSG\",\"6253"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4253\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",117],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.99995],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"25391\"]]"); - p = add_epsg_def (filter, first, last, 25392, "epsg", 25392, - "Luzon 1911 / Philippines zone II"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +"); - add_proj4text (p, 1, - "y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Luzon 1911 / Philippines zone II\",GEOGCS[\"Luz"); - add_srs_wkt (p, 1, - "on 1911\",DATUM[\"Luzon_1911\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[-133,-77,-51,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "3\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4253\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",119],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.99995],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"25392\"]]"); - p = add_epsg_def (filter, first, last, 25393, "epsg", 25393, - "Luzon 1911 / Philippines zone III"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +"); - add_proj4text (p, 1, - "y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Luzon 1911 / Philippines zone III\",GEOGCS[\"Lu"); - add_srs_wkt (p, 1, - "zon 1911\",DATUM[\"Luzon_1911\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-133,-77,-51,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); - add_srs_wkt (p, 4, - "53\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4253\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",121],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.99995],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"25393\"]]"); - p = add_epsg_def (filter, first, last, 25394, "epsg", 25394, - "Luzon 1911 / Philippines zone IV"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +"); - add_proj4text (p, 1, - "y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Luzon 1911 / Philippines zone IV\",GEOGCS[\"Luz"); - add_srs_wkt (p, 1, - "on 1911\",DATUM[\"Luzon_1911\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[-133,-77,-51,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "3\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4253\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",123],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.99995],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"25394\"]]"); - p = add_epsg_def (filter, first, last, 25395, "epsg", 25395, - "Luzon 1911 / Philippines zone V"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +"); - add_proj4text (p, 1, - "y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Luzon 1911 / Philippines zone V\",GEOGCS[\"Luzo"); - add_srs_wkt (p, 1, - "n 1911\",DATUM[\"Luzon_1911\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[-133,-77,-51,0,0,0,0],AUTHORITY[\"EPSG\",\"6253"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4253\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",125],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.99995],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"25395\"]]"); - p = add_epsg_def (filter, first, last, 25700, "epsg", 25700, - "Makassar (Jakarta) / NEIEZ (deprecated)"); - add_proj4text (p, 0, - "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 "); - add_proj4text (p, 1, - "+ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm="); - add_proj4text (p, 2, - "jakarta +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Makassar (Jakarta) / NEIEZ (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"Makassar (Jakarta)\",DATUM[\"Makassar_Jakarta\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7004\"]],TOWGS84[-587.8,519.75,145.76,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6804\"]],PRIMEM[\"Jakarta\",106.807"); - add_srs_wkt (p, 5, - "7194444444,AUTHORITY[\"EPSG\",\"8908\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4804\"]],PROJECTION[\"Mercator_1SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"central_meridian\",110],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.997],PARAMETER[\"false_easting\",3900000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",900000],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"25700\"]]"); - p = add_epsg_def (filter, first, last, 25828, "epsg", 25828, - "ETRS89 / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / UTM zone 28N\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",-15],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"25828\"]]"); - p = add_epsg_def (filter, first, last, 25829, "epsg", 25829, - "ETRS89 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / UTM zone 29N\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",-9],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"25829\"]]"); - p = add_epsg_def (filter, first, last, 25830, "epsg", 25830, - "ETRS89 / UTM zone 30N"); - add_proj4text (p, 0, - "+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / UTM zone 30N\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",-3],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"25830\"]]"); - p = add_epsg_def (filter, first, last, 25831, "epsg", 25831, - "ETRS89 / UTM zone 31N"); - add_proj4text (p, 0, - "+proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / UTM zone 31N\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",3],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"25831\"]]"); - p = add_epsg_def (filter, first, last, 25832, "epsg", 25832, - "ETRS89 / UTM zone 32N"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / UTM zone 32N\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",9],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"25832\"]]"); - p = add_epsg_def (filter, first, last, 25833, "epsg", 25833, - "ETRS89 / UTM zone 33N"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / UTM zone 33N\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",15],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"25833\"]]"); - p = add_epsg_def (filter, first, last, 25834, "epsg", 25834, - "ETRS89 / UTM zone 34N"); - add_proj4text (p, 0, - "+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / UTM zone 34N\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",21],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"25834\"]]"); - p = add_epsg_def (filter, first, last, 25835, "epsg", 25835, - "ETRS89 / UTM zone 35N"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / UTM zone 35N\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",27],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"25835\"]]"); - p = add_epsg_def (filter, first, last, 25836, "epsg", 25836, - "ETRS89 / UTM zone 36N"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / UTM zone 36N\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",33],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"25836\"]]"); - p = add_epsg_def (filter, first, last, 25837, "epsg", 25837, - "ETRS89 / UTM zone 37N"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / UTM zone 37N\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",39],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"25837\"]]"); - p = add_epsg_def (filter, first, last, 25838, "epsg", 25838, - "ETRS89 / UTM zone 38N"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / UTM zone 38N\",GEOGCS[\"ETRS89\",DATUM"); - add_srs_wkt (p, 1, - "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",45],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"25838\"]]"); - p = add_epsg_def (filter, first, last, 25884, "epsg", 25884, - "ETRS89 / TM Baltic93"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / TM Baltic93\",GEOGCS[\"ETRS89\",DATUM["); - add_srs_wkt (p, 1, - "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); - add_srs_wkt (p, 4, - "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",24],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"25884\"]]"); - p = add_epsg_def (filter, first, last, 25932, "epsg", 25932, - "Malongo 1987 / UTM zone 32S"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +south +ellps=intl +towgs84=-254.1,-5"); - add_proj4text (p, 1, - ".36,-100.29,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Malongo 1987 / UTM zone 32S\",GEOGCS[\"Malongo "); - add_srs_wkt (p, 1, - "1987\",DATUM[\"Malongo_1987\",SPHEROID[\"International 1"); - add_srs_wkt (p, 2, - "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-254.1,-5.36,-100.29,0,0,0,0],AUTHORITY[\"EPSG\",\"6259\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4259\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",9],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"25932\"]]"); - p = add_epsg_def (filter, first, last, 26191, "epsg", 26191, - "Merchich / Nord Maroc"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999"); - add_proj4text (p, 1, - "625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +"); - add_proj4text (p, 2, - "towgs84=31,146,47,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Merchich / Nord Maroc\",GEOGCS[\"Merchich\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Merchich\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2"); - add_srs_wkt (p, 2, - ",293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[31,146,47,0,0,0,0],AUTHORITY[\"EPSG\",\"6261\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4261\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",33.3]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-5.4],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.999625769],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",300000],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"26191\"]]"); - p = add_epsg_def (filter, first, last, 26192, "epsg", 26192, - "Merchich / Sud Maroc"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.999"); - add_proj4text (p, 1, - "6155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=63"); - add_proj4text (p, 2, - "56515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Merchich / Sud Maroc\",GEOGCS[\"Merchich\",DATU"); - add_srs_wkt (p, 1, - "M[\"Merchich\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,"); - add_srs_wkt (p, 2, - "293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84["); - add_srs_wkt (p, 3, - "31,146,47,0,0,0,0],AUTHORITY[\"EPSG\",\"6261\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4261\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",29.7],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",-5.4],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.999615596],PARAMETER[\"false_easting\",500000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",300000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"26192\"]]"); - p = add_epsg_def (filter, first, last, 26193, "epsg", 26193, - "Merchich / Sahara (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.999"); - add_proj4text (p, 1, - "6 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towg"); - add_proj4text (p, 2, - "s84=31,146,47,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Merchich / Sahara (deprecated)\",GEOGCS[\"Merch"); - add_srs_wkt (p, 1, - "ich\",DATUM[\"Merchich\",SPHEROID[\"Clarke 1880 (IGN)\","); - add_srs_wkt (p, 2, - "6378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[31,146,47,0,0,0,0],AUTHORITY[\"EPSG\",\"6261\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4261\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 7, - "ert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",26.1],PARAMETER[\"central_meridian\",-5.4],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",12"); - add_srs_wkt (p, 10, - "00000],PARAMETER[\"false_northing\",400000],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26193\"]]"); - p = add_epsg_def (filter, first, last, 26194, "epsg", 26194, - "Merchich / Sahara Nord"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.999"); - add_proj4text (p, 1, - "616304 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 "); - add_proj4text (p, 2, - "+towgs84=31,146,47,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Merchich / Sahara Nord\",GEOGCS[\"Merchich\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Merchich\",SPHEROID[\"Clarke 1880 (IGN)\",6378249."); - add_srs_wkt (p, 2, - "2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[31,146,47,0,0,0,0],AUTHORITY[\"EPSG\",\"6261\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4261\"]],PROJECTION[\"Lambert_Conf"); - add_srs_wkt (p, 7, - "ormal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",26.1"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",-5.4],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.999616304],PARAMETER[\"false_easting\",12000"); - add_srs_wkt (p, 10, - "00],PARAMETER[\"false_northing\",400000],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"26194\"]]"); - p = add_epsg_def (filter, first, last, 26195, "epsg", 26195, - "Merchich / Sahara Sud"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=22.5 +lat_0=22.5 +lon_0=-5.4 +k_0=0.999"); - add_proj4text (p, 1, - "616437 +x_0=1500000 +y_0=400000 +a=6378249.2 +b=6356515 "); - add_proj4text (p, 2, - "+towgs84=31,146,47,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Merchich / Sahara Sud\",GEOGCS[\"Merchich\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Merchich\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2"); - add_srs_wkt (p, 2, - ",293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[31,146,47,0,0,0,0],AUTHORITY[\"EPSG\",\"6261\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4261\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",22.5]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-5.4],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.999616437],PARAMETER[\"false_easting\",150000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",400000],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"26195\"]]"); - p = add_epsg_def (filter, first, last, 26237, "epsg", 26237, - "Massawa / UTM zone 37N"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +ellps=bessel +towgs84=639,405,60,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Massawa / UTM zone 37N\",GEOGCS[\"Massawa\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Massawa\",SPHEROID[\"Bessel 1841\",6377397.155,299."); - add_srs_wkt (p, 2, - "1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[639,405,60"); - add_srs_wkt (p, 3, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6262\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 4, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 5, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"4262\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 8, - "meridian\",39],PARAMETER[\"scale_factor\",0.9996],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_easting\",500000],PARAMETER[\"false_northing"); - add_srs_wkt (p, 10, - "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 11, - "S[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"26237\"]]"); - p = add_epsg_def (filter, first, last, 26331, "epsg", 26331, - "Minna / UTM zone 31N"); - add_proj4text (p, 0, - "+proj=utm +zone=31 +ellps=clrk80 +towgs84=-92,-93,122,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Minna / UTM zone 31N\",GEOGCS[\"Minna\",DATUM[\""); - add_srs_wkt (p, 1, - "Minna\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.4"); - add_srs_wkt (p, 2, - "65,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-92,-93,122,0,0"); - add_srs_wkt (p, 3, - ",0,0],AUTHORITY[\"EPSG\",\"6263\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4263\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); - add_srs_wkt (p, 8, - "dian\",3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 10, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 11, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"26331\"]]"); - p = add_epsg_def (filter, first, last, 26332, "epsg", 26332, - "Minna / UTM zone 32N"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +ellps=clrk80 +towgs84=-92,-93,122,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Minna / UTM zone 32N\",GEOGCS[\"Minna\",DATUM[\""); - add_srs_wkt (p, 1, - "Minna\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.4"); - add_srs_wkt (p, 2, - "65,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-92,-93,122,0,0"); - add_srs_wkt (p, 3, - ",0,0],AUTHORITY[\"EPSG\",\"6263\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4263\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); - add_srs_wkt (p, 8, - "dian\",9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 10, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 11, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"26332\"]]"); - p = add_epsg_def (filter, first, last, 26391, "epsg", 26391, - "Minna / Nigeria West Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4 +lon_0=4.5 +k=0.99975 +x_0=230738.2"); - add_proj4text (p, 1, - "6 +y_0=0 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +uni"); - add_proj4text (p, 2, - "ts=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Minna / Nigeria West Belt\",GEOGCS[\"Minna\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Minna\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145"); - add_srs_wkt (p, 2, - ",293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-92,-93,1"); - add_srs_wkt (p, 3, - "22,0,0,0,0],AUTHORITY[\"EPSG\",\"6263\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4263\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",4],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",4.5],PARAMETER[\"scale_factor\",0.99975],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",230738.26],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"26391\"]]"); - p = add_epsg_def (filter, first, last, 26392, "epsg", 26392, - "Minna / Nigeria Mid Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4 +lon_0=8.5 +k=0.99975 +x_0=670553.9"); - add_proj4text (p, 1, - "8 +y_0=0 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +uni"); - add_proj4text (p, 2, - "ts=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Minna / Nigeria Mid Belt\",GEOGCS[\"Minna\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Minna\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,"); - add_srs_wkt (p, 2, - "293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-92,-93,12"); - add_srs_wkt (p, 3, - "2,0,0,0,0],AUTHORITY[\"EPSG\",\"6263\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4263\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 7, - ",PARAMETER[\"latitude_of_origin\",4],PARAMETER[\"central"); - add_srs_wkt (p, 8, - "_meridian\",8.5],PARAMETER[\"scale_factor\",0.99975],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",670553.98],PARAMETER[\"false_no"); - add_srs_wkt (p, 10, - "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"26392\"]]"); - p = add_epsg_def (filter, first, last, 26393, "epsg", 26393, - "Minna / Nigeria East Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=4 +lon_0=12.5 +k=0.99975 +x_0=1110369"); - add_proj4text (p, 1, - ".7 +y_0=0 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +un"); - add_proj4text (p, 2, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Minna / Nigeria East Belt\",GEOGCS[\"Minna\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Minna\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145"); - add_srs_wkt (p, 2, - ",293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-92,-93,1"); - add_srs_wkt (p, 3, - "22,0,0,0,0],AUTHORITY[\"EPSG\",\"6263\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4263\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",4],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",12.5],PARAMETER[\"scale_factor\",0.99975],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",1110369.7],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 11, - "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"26393\"]]"); - p = add_epsg_def (filter, first, last, 26432, "epsg", 26432, - "Mhast / UTM zone 32S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +south +ellps=intl +towgs84=-252.95,-"); - add_proj4text (p, 1, - "4.11,-96.38,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Mhast / UTM zone 32S (deprecated)\",GEOGCS[\"Mh"); - add_srs_wkt (p, 1, - "ast\",DATUM[\"Mhast\",SPHEROID[\"International 1924\",63"); - add_srs_wkt (p, 2, - "78388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-252.95,"); - add_srs_wkt (p, 3, - "-4.11,-96.38,0,0,0,0],AUTHORITY[\"EPSG\",\"6264\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4264\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",9],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"26432\"]]"); - p = add_epsg_def (filter, first, last, 26591, "epsg", 26591, - "Monte Mario (Rome) / Italy zone 1 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-3.45233333333333 +k=0.9996 "); - add_proj4text (p, 1, - "+x_0=1500000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9"); - add_proj4text (p, 2, - ".9,0.971,-2.917,0.714,-11.68 +pm=rome +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Monte Mario (Rome) / Italy zone 1 (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"Monte Mario (Rome)\",DATUM[\"Monte_Mario_Rome\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7022\"]],TOWGS84[-104.1,-49.1,-9.9,0.971,-2.917"); - add_srs_wkt (p, 4, - ",0.714,-11.68],AUTHORITY[\"EPSG\",\"6806\"]],PRIMEM[\"Ro"); - add_srs_wkt (p, 5, - "me\",12.45233333333333,AUTHORITY[\"EPSG\",\"8906\"]],UNI"); - add_srs_wkt (p, 6, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 7, - "2\"]],AUTHORITY[\"EPSG\",\"4806\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 8, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 9, - "METER[\"central_meridian\",-3.45233333333333],PARAMETER["); - add_srs_wkt (p, 10, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",150"); - add_srs_wkt (p, 11, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 13, - ",NORTH],AUTHORITY[\"EPSG\",\"26591\"]]"); - p = add_epsg_def (filter, first, last, 26592, "epsg", 26592, - "Monte Mario (Rome) / Italy zone 2 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=2.54766666666666 +k=0.9996 +"); - add_proj4text (p, 1, - "x_0=2520000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9."); - add_proj4text (p, 2, - "9,0.971,-2.917,0.714,-11.68 +pm=rome +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Monte Mario (Rome) / Italy zone 2 (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"Monte Mario (Rome)\",DATUM[\"Monte_Mario_Rome\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7022\"]],TOWGS84[-104.1,-49.1,-9.9,0.971,-2.917"); - add_srs_wkt (p, 4, - ",0.714,-11.68],AUTHORITY[\"EPSG\",\"6806\"]],PRIMEM[\"Ro"); - add_srs_wkt (p, 5, - "me\",12.45233333333333,AUTHORITY[\"EPSG\",\"8906\"]],UNI"); - add_srs_wkt (p, 6, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 7, - "2\"]],AUTHORITY[\"EPSG\",\"4806\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 8, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 9, - "METER[\"central_meridian\",2.54766666666666],PARAMETER[\""); - add_srs_wkt (p, 10, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",25200"); - add_srs_wkt (p, 11, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 13, - "ORTH],AUTHORITY[\"EPSG\",\"26592\"]]"); - p = add_epsg_def (filter, first, last, 26632, "epsg", 26632, - "M'poraloko / UTM zone 32N"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-74,"); - add_proj4text (p, 1, - "-130,42,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"M'poraloko / UTM zone 32N\",GEOGCS[\"M'poraloko"); - add_srs_wkt (p, 1, - "\",DATUM[\"M_poraloko\",SPHEROID[\"Clarke 1880 (IGN)\",6"); - add_srs_wkt (p, 2, - "378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[-74,-130,42,0,0,0,0],AUTHORITY[\"EPSG\",\"6266\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4266\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",9],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"26632\"]]"); - p = add_epsg_def (filter, first, last, 26692, "epsg", 26692, - "M'poraloko / UTM zone 32S"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +towgs"); - add_proj4text (p, 1, - "84=-74,-130,42,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"M'poraloko / UTM zone 32S\",GEOGCS[\"M'poraloko"); - add_srs_wkt (p, 1, - "\",DATUM[\"M_poraloko\",SPHEROID[\"Clarke 1880 (IGN)\",6"); - add_srs_wkt (p, 2, - "378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[-74,-130,42,0,0,0,0],AUTHORITY[\"EPSG\",\"6266\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4266\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",9],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"26692\"]]"); - p = add_epsg_def (filter, first, last, 26701, "epsg", 26701, - "NAD27 / UTM zone 1N"); - add_proj4text (p, 0, - "+proj=utm +zone=1 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 1N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "26701\"]]"); - p = add_epsg_def (filter, first, last, 26702, "epsg", 26702, - "NAD27 / UTM zone 2N"); - add_proj4text (p, 0, - "+proj=utm +zone=2 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 2N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "171],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "26702\"]]"); - p = add_epsg_def (filter, first, last, 26703, "epsg", 26703, - "NAD27 / UTM zone 3N"); - add_proj4text (p, 0, - "+proj=utm +zone=3 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 3N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "165],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "26703\"]]"); - p = add_epsg_def (filter, first, last, 26704, "epsg", 26704, - "NAD27 / UTM zone 4N"); - add_proj4text (p, 0, - "+proj=utm +zone=4 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 4N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "159],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "26704\"]]"); - p = add_epsg_def (filter, first, last, 26705, "epsg", 26705, - "NAD27 / UTM zone 5N"); - add_proj4text (p, 0, - "+proj=utm +zone=5 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 5N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "153],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "26705\"]]"); - p = add_epsg_def (filter, first, last, 26706, "epsg", 26706, - "NAD27 / UTM zone 6N"); - add_proj4text (p, 0, - "+proj=utm +zone=6 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 6N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "147],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "26706\"]]"); - p = add_epsg_def (filter, first, last, 26707, "epsg", 26707, - "NAD27 / UTM zone 7N"); - add_proj4text (p, 0, - "+proj=utm +zone=7 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 7N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "141],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "26707\"]]"); - p = add_epsg_def (filter, first, last, 26708, "epsg", 26708, - "NAD27 / UTM zone 8N"); - add_proj4text (p, 0, - "+proj=utm +zone=8 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 8N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "135],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "26708\"]]"); - p = add_epsg_def (filter, first, last, 26709, "epsg", 26709, - "NAD27 / UTM zone 9N"); - add_proj4text (p, 0, - "+proj=utm +zone=9 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 9N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "129],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "26709\"]]"); - p = add_epsg_def (filter, first, last, 26710, "epsg", 26710, - "NAD27 / UTM zone 10N"); - add_proj4text (p, 0, - "+proj=utm +zone=10 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 10N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "123],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "26710\"]]"); - p = add_epsg_def (filter, first, last, 26711, "epsg", 26711, - "NAD27 / UTM zone 11N"); - add_proj4text (p, 0, - "+proj=utm +zone=11 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 11N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "26711\"]]"); - p = add_epsg_def (filter, first, last, 26712, "epsg", 26712, - "NAD27 / UTM zone 12N"); - add_proj4text (p, 0, - "+proj=utm +zone=12 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 12N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "26712\"]]"); - p = add_epsg_def (filter, first, last, 26713, "epsg", 26713, - "NAD27 / UTM zone 13N"); - add_proj4text (p, 0, - "+proj=utm +zone=13 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 13N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "26713\"]]"); - p = add_epsg_def (filter, first, last, 26714, "epsg", 26714, - "NAD27 / UTM zone 14N"); - add_proj4text (p, 0, - "+proj=utm +zone=14 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 14N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "99],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 12, - "6714\"]]"); - p = add_epsg_def (filter, first, last, 26715, "epsg", 26715, - "NAD27 / UTM zone 15N"); - add_proj4text (p, 0, - "+proj=utm +zone=15 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 15N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "93],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 12, - "6715\"]]"); - p = add_epsg_def (filter, first, last, 26716, "epsg", 26716, - "NAD27 / UTM zone 16N"); - add_proj4text (p, 0, - "+proj=utm +zone=16 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 16N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "87],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 12, - "6716\"]]"); - p = add_epsg_def (filter, first, last, 26717, "epsg", 26717, - "NAD27 / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 17N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 12, - "6717\"]]"); - p = add_epsg_def (filter, first, last, 26718, "epsg", 26718, - "NAD27 / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 18N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 12, - "6718\"]]"); - p = add_epsg_def (filter, first, last, 26719, "epsg", 26719, - "NAD27 / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 19N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 12, - "6719\"]]"); - p = add_epsg_def (filter, first, last, 26720, "epsg", 26720, - "NAD27 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 20N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 12, - "6720\"]]"); - p = add_epsg_def (filter, first, last, 26721, "epsg", 26721, - "NAD27 / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 21N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 12, - "6721\"]]"); - p = add_epsg_def (filter, first, last, 26722, "epsg", 26722, - "NAD27 / UTM zone 22N"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / UTM zone 22N\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 12, - "6722\"]]"); - p = add_epsg_def (filter, first, last, 26729, "epsg", 26729, - "NAD27 / Alabama East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.9"); - add_proj4text (p, 1, - "9996 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=u"); - add_proj4text (p, 2, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alabama East\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",30.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-85.83333333333333],PARAMETER[\"scale_factor\",0.99996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"US survey foot\",0.3048006096012192,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"26729\"]]"); - p = add_epsg_def (filter, first, last, 26730, "epsg", 26730, - "NAD27 / Alabama West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=1"); - add_proj4text (p, 1, - "52400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alabama West\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",30],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 8, - "-87.5],PARAMETER[\"scale_factor\",0.999933333],PARAMETER"); - add_srs_wkt (p, 9, - "[\"false_easting\",500000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"26730\"]]"); - p = add_epsg_def (filter, first, last, 26731, "epsg", 26731, - "NAD27 / Alaska zone 1"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=32"); - add_proj4text (p, 1, - "3.1301023611111 +k=0.9999 +x_0=5000000.001016002 +y_0=-5"); - add_proj4text (p, 2, - "000000.001016002 +gamma=323.1301023611111 +datum=NAD27 +"); - add_proj4text (p, 3, - "units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alaska zone 1\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_center\",57],PARAMETER[\"longitude_of"); - add_srs_wkt (p, 8, - "_center\",-133.6666666666667],PARAMETER[\"azimuth\",323."); - add_srs_wkt (p, 9, - "1301023611111],PARAMETER[\"rectified_grid_angle\",323.13"); - add_srs_wkt (p, 10, - "01023611111],PARAMETER[\"scale_factor\",0.9999],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_easting\",16404166.67],PARAMETER[\"false_north"); - add_srs_wkt (p, 12, - "ing\",-16404166.67],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 13, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 14, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26731\"]]"); - p = add_epsg_def (filter, first, last, 26732, "epsg", 26732, - "NAD27 / Alaska zone 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=152400."); - add_proj4text (p, 1, - "3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alaska zone 2\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-142],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 10, - "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"26732\"]]"); - p = add_epsg_def (filter, first, last, 26733, "epsg", 26733, - "NAD27 / Alaska zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=152400."); - add_proj4text (p, 1, - "3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alaska zone 3\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-146],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 10, - "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"26733\"]]"); - p = add_epsg_def (filter, first, last, 26734, "epsg", 26734, - "NAD27 / Alaska zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=152400."); - add_proj4text (p, 1, - "3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alaska zone 4\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-150],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 10, - "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"26734\"]]"); - p = add_epsg_def (filter, first, last, 26735, "epsg", 26735, - "NAD27 / Alaska zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=152400."); - add_proj4text (p, 1, - "3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alaska zone 5\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-154],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 10, - "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"26735\"]]"); - p = add_epsg_def (filter, first, last, 26736, "epsg", 26736, - "NAD27 / Alaska zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=152400."); - add_proj4text (p, 1, - "3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alaska zone 6\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-158],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 10, - "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"26736\"]]"); - p = add_epsg_def (filter, first, last, 26737, "epsg", 26737, - "NAD27 / Alaska zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=213360."); - add_proj4text (p, 1, - "4267208534 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alaska zone 7\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-162],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",700000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 10, - "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"26737\"]]"); - p = add_epsg_def (filter, first, last, 26738, "epsg", 26738, - "NAD27 / Alaska zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=152400."); - add_proj4text (p, 1, - "3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alaska zone 8\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-166],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 10, - "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"26738\"]]"); - p = add_epsg_def (filter, first, last, 26739, "epsg", 26739, - "NAD27 / Alaska zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=182880."); - add_proj4text (p, 1, - "3657607315 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alaska zone 9\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-170],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_easting\",600000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 10, - "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"26739\"]]"); - p = add_epsg_def (filter, first, last, 26740, "epsg", 26740, - "NAD27 / Alaska zone 10"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333"); - add_proj4text (p, 1, - "334 +lat_0=51 +lon_0=-176 +x_0=914401.8288036576 +y_0=0 "); - add_proj4text (p, 2, - "+datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Alaska zone 10\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",53.83333333333334],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",51.83333333333334],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",51],PARAMETER[\"central_merid"); - add_srs_wkt (p, 10, - "ian\",-176],PARAMETER[\"false_easting\",3000000],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_northing\",0],UNIT[\"US survey foot\",0.30480"); - add_srs_wkt (p, 12, - "06096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAS"); - add_srs_wkt (p, 13, - "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26740\"]]"); - p = add_epsg_def (filter, first, last, 26741, "epsg", 26741, - "NAD27 / California zone I"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); - add_proj4text (p, 1, - "3333333333334 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 "); - add_proj4text (p, 2, - "+datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / California zone I\",GEOGCS[\"NAD27\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866"); - add_srs_wkt (p, 2, - "\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"standard_parallel_1\",41.66666666666666],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_2\",40],PARAMETER[\"latitud"); - add_srs_wkt (p, 9, - "e_of_origin\",39.33333333333334],PARAMETER[\"central_mer"); - add_srs_wkt (p, 10, - "idian\",-122],PARAMETER[\"false_easting\",2000000],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); - add_srs_wkt (p, 12, - "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 13, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26741\"]]"); - p = add_epsg_def (filter, first, last, 26742, "epsg", 26742, - "NAD27 / California zone II"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); - add_proj4text (p, 1, - "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=609601.219"); - add_proj4text (p, 2, - "2024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / California zone II\",GEOGCS[\"NAD27\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); - add_srs_wkt (p, 2, - "6\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",39.83333333333334]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",38.33333333333334],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"latitude_of_origin\",37.66666666666666],PARAME"); - add_srs_wkt (p, 10, - "TER[\"central_meridian\",-122],PARAMETER[\"false_easting"); - add_srs_wkt (p, 11, - "\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US su"); - add_srs_wkt (p, 12, - "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); - add_srs_wkt (p, 13, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 14, - "\",\"26742\"]]"); - p = add_epsg_def (filter, first, last, 26743, "epsg", 26743, - "NAD27 / California zone III"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.5 +lon_0=-120.5 +x_0=609601.2192024384 +y_"); - add_proj4text (p, 2, - "0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / California zone III\",GEOGCS[\"NAD27\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 18"); - add_srs_wkt (p, 2, - "66\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "08\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",38.43333333333333]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",37.06666666666667],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"latitude_of_origin\",36.5],PARAMETER[\"central"); - add_srs_wkt (p, 10, - "_meridian\",-120.5],PARAMETER[\"false_easting\",2000000]"); - add_srs_wkt (p, 11, - ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); - add_srs_wkt (p, 12, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26743\""); - add_srs_wkt (p, 14, - "]]"); - p = add_epsg_def (filter, first, last, 26744, "epsg", 26744, - "NAD27 / California zone IV"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); - add_proj4text (p, 1, - "4 +lon_0=-119 +x_0=609601.2192024384 +y_0=0 +datum=NAD27"); - add_proj4text (p, 2, - " +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / California zone IV\",GEOGCS[\"NAD27\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); - add_srs_wkt (p, 2, - "6\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",37.25],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_2\",36],PARAMETER[\"latitude_of_origin"); - add_srs_wkt (p, 9, - "\",35.33333333333334],PARAMETER[\"central_meridian\",-11"); - add_srs_wkt (p, 10, - "9],PARAMETER[\"false_easting\",2000000],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); - add_srs_wkt (p, 12, - "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"26744\"]]"); - p = add_epsg_def (filter, first, last, 26745, "epsg", 26745, - "NAD27 / California zone V"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=33.5 +lon_0=-118 +x_0=609601.2192024384 +y_0="); - add_proj4text (p, 2, - "0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / California zone V\",GEOGCS[\"NAD27\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866"); - add_srs_wkt (p, 2, - "\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"standard_parallel_1\",35.46666666666667],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_2\",34.03333333333333],PARA"); - add_srs_wkt (p, 9, - "METER[\"latitude_of_origin\",33.5],PARAMETER[\"central_m"); - add_srs_wkt (p, 10, - "eridian\",-118],PARAMETER[\"false_easting\",2000000],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); - add_srs_wkt (p, 12, - "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26745\"]]"); - p = add_epsg_def (filter, first, last, 26746, "epsg", 26746, - "NAD27 / California zone VI"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=609601."); - add_proj4text (p, 2, - "2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / California zone VI\",GEOGCS[\"NAD27\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); - add_srs_wkt (p, 2, - "6\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",33.88333333333333]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",32.78333333333333],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"latitude_of_origin\",32.16666666666666],PARAME"); - add_srs_wkt (p, 10, - "TER[\"central_meridian\",-116.25],PARAMETER[\"false_east"); - add_srs_wkt (p, 11, - "ing\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US"); - add_srs_wkt (p, 12, - " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 13, - "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 14, - "PSG\",\"26746\"]]"); - p = add_epsg_def (filter, first, last, 26747, "epsg", 26747, - "NAD27 / California zone VII (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666"); - add_proj4text (p, 1, - "667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +"); - add_proj4text (p, 2, - "x_0=1276106.450596901 +y_0=127079.524511049 +datum=NAD27"); - add_proj4text (p, 3, - " +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / California zone VII (deprecated)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROI"); - add_srs_wkt (p, 2, - "D[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4267\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",34.4"); - add_srs_wkt (p, 8, - "1666666666666],PARAMETER[\"standard_parallel_2\",33.8666"); - add_srs_wkt (p, 9, - "6666666667],PARAMETER[\"latitude_of_origin\",34.13333333"); - add_srs_wkt (p, 10, - "333333],PARAMETER[\"central_meridian\",-118.333333333333"); - add_srs_wkt (p, 11, - "3],PARAMETER[\"false_easting\",4186692.58],PARAMETER[\"f"); - add_srs_wkt (p, 12, - "alse_northing\",416926.74],UNIT[\"US survey foot\",0.304"); - add_srs_wkt (p, 13, - "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 14, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26747\"]]"); - p = add_epsg_def (filter, first, last, 26748, "epsg", 26748, - "NAD27 / Arizona East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-f"); - add_proj4text (p, 2, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Arizona East\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",31],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 8, - "-110.1666666666667],PARAMETER[\"scale_factor\",0.9999],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"26748\"]]"); - p = add_epsg_def (filter, first, last, 26749, "epsg", 26749, - "NAD27 / Arizona Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-f"); - add_proj4text (p, 2, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Arizona Central\",GEOGCS[\"NAD27\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",31],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 8, - "n\",-111.9166666666667],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"US survey foot\",0.304800609601219"); - add_srs_wkt (p, 11, - "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"26749\"]]"); - p = add_epsg_def (filter, first, last, 26750, "epsg", 26750, - "NAD27 / Arizona West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); - add_proj4text (p, 1, - "=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Arizona West\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",31],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 8, - "-113.75],PARAMETER[\"scale_factor\",0.999933333],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_easting\",500000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 10, - ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"26750\"]]"); - p = add_epsg_def (filter, first, last, 26751, "epsg", 26751, - "NAD27 / Arkansas North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=609601.2192"); - add_proj4text (p, 2, - "024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Arkansas North\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",36.23333333333333],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",34.93333333333333],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",34.33333333333334],PARAMETER["); - add_srs_wkt (p, 10, - "\"central_meridian\",-92],PARAMETER[\"false_easting\",20"); - add_srs_wkt (p, 11, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"US survey "); - add_srs_wkt (p, 12, - "foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],"); - add_srs_wkt (p, 13, - "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "26751\"]]"); - p = add_epsg_def (filter, first, last, 26752, "epsg", 26752, - "NAD27 / Arkansas South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-92 +x_0=609601.2192024384 +y_0=0"); - add_proj4text (p, 2, - " +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Arkansas South\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",34.76666666666667],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",33.3],PARAMETER[\"latitud"); - add_srs_wkt (p, 9, - "e_of_origin\",32.66666666666666],PARAMETER[\"central_mer"); - add_srs_wkt (p, 10, - "idian\",-92],PARAMETER[\"false_easting\",2000000],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); - add_srs_wkt (p, 12, - "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 13, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26752\"]]"); - p = add_epsg_def (filter, first, last, 26753, "epsg", 26753, - "NAD27 / Colorado North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=609601.2"); - add_proj4text (p, 2, - "192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Colorado North\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",39.71666666666667],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",40.78333333333333],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",39.33333333333334],PARAMETER["); - add_srs_wkt (p, 10, - "\"central_meridian\",-105.5],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); - add_srs_wkt (p, 12, - "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"26753\"]]"); - p = add_epsg_def (filter, first, last, 26754, "epsg", 26754, - "NAD27 / Colorado Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); - add_proj4text (p, 1, - "3334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +datum="); - add_proj4text (p, 2, - "NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Colorado Central\",GEOGCS[\"NAD27\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",39.75],PARAMETER[\"sta"); - add_srs_wkt (p, 8, - "ndard_parallel_2\",38.45],PARAMETER[\"latitude_of_origin"); - add_srs_wkt (p, 9, - "\",37.83333333333334],PARAMETER[\"central_meridian\",-10"); - add_srs_wkt (p, 10, - "5.5],PARAMETER[\"false_easting\",2000000],PARAMETER[\"fa"); - add_srs_wkt (p, 11, - "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); - add_srs_wkt (p, 12, - "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 13, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26754\"]]"); - p = add_epsg_def (filter, first, last, 26755, "epsg", 26755, - "NAD27 / Colorado South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); - add_proj4text (p, 1, - "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=609601.2"); - add_proj4text (p, 2, - "192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Colorado South\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",38.43333333333333],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",37.23333333333333],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",36.66666666666666],PARAMETER["); - add_srs_wkt (p, 10, - "\"central_meridian\",-105.5],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); - add_srs_wkt (p, 12, - "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"26755\"]]"); - p = add_epsg_def (filter, first, last, 26756, "epsg", 26756, - "NAD27 / Connecticut"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); - add_proj4text (p, 1, - ".83333333333334 +lon_0=-72.75 +x_0=182880.3657607315 +y_"); - add_proj4text (p, 2, - "0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Connecticut\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 7, - "AMETER[\"standard_parallel_1\",41.86666666666667],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_2\",41.2],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 9, - "f_origin\",40.83333333333334],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 10, - "an\",-72.75],PARAMETER[\"false_easting\",600000],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_northing\",0],UNIT[\"US survey foot\",0.30480"); - add_srs_wkt (p, 12, - "06096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAS"); - add_srs_wkt (p, 13, - "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26756\"]]"); - p = add_epsg_def (filter, first, last, 26757, "epsg", 26757, - "NAD27 / Delaware"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); - add_proj4text (p, 1, - "995 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us"); - add_proj4text (p, 2, - "-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Delaware\",GEOGCS[\"NAD27\",DATUM[\"Nor"); - add_srs_wkt (p, 1, - "th_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637820"); - add_srs_wkt (p, 2, - "6.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"426"); - add_srs_wkt (p, 6, - "7\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 7, - "titude_of_origin\",38],PARAMETER[\"central_meridian\",-7"); - add_srs_wkt (p, 8, - "5.41666666666667],PARAMETER[\"scale_factor\",0.999995],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"26757\"]]"); - p = add_epsg_def (filter, first, last, 26758, "epsg", 26758, - "NAD27 / Florida East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); - add_proj4text (p, 1, - "941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units"); - add_proj4text (p, 2, - "=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Florida East\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",24.33333333333333],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-81],PARAMETER[\"scale_factor\",0.9999411"); - add_srs_wkt (p, 9, - "77],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); - add_srs_wkt (p, 11, - "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"26758\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_31.c b/src/spatialite/src/srsinit/epsg_inlined_31.c deleted file mode 100644 index c0ccb49..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_31.c +++ /dev/null @@ -1,3744 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_31 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 26759, "epsg", 26759, - "NAD27 / Florida West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); - add_proj4text (p, 1, - "941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units"); - add_proj4text (p, 2, - "=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Florida West\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",24.33333333333333],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-82],PARAMETER[\"scale_factor\",0.9999411"); - add_srs_wkt (p, 9, - "77],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); - add_srs_wkt (p, 11, - "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"26759\"]]"); - p = add_epsg_def (filter, first, last, 26760, "epsg", 26760, - "NAD27 / Florida North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); - add_proj4text (p, 1, - "9 +lon_0=-84.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD2"); - add_proj4text (p, 2, - "7 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Florida North\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"standard_parallel_1\",30.75],PARAMETER[\"stan"); - add_srs_wkt (p, 8, - "dard_parallel_2\",29.58333333333333],PARAMETER[\"latitud"); - add_srs_wkt (p, 9, - "e_of_origin\",29],PARAMETER[\"central_meridian\",-84.5],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",2000000],PARAMETER[\"false_n"); - add_srs_wkt (p, 11, - "orthing\",0],UNIT[\"US survey foot\",0.3048006096012192,"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 13, - ",NORTH],AUTHORITY[\"EPSG\",\"26760\"]]"); - p = add_epsg_def (filter, first, last, 26766, "epsg", 26766, - "NAD27 / Georgia East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-f"); - add_proj4text (p, 2, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Georgia East\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",30],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 8, - "-82.16666666666667],PARAMETER[\"scale_factor\",0.9999],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"26766\"]]"); - p = add_epsg_def (filter, first, last, 26767, "epsg", 26767, - "NAD27 / Georgia West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-f"); - add_proj4text (p, 2, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Georgia West\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",30],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 8, - "-84.16666666666667],PARAMETER[\"scale_factor\",0.9999],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"26767\"]]"); - p = add_epsg_def (filter, first, last, 26768, "epsg", 26768, - "NAD27 / Idaho East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); - add_proj4text (p, 1, - "666667 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Idaho East\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",41.66666666666666],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-112.1666666666667],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.999947368],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); - add_srs_wkt (p, 11, - ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26768\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 26769, "epsg", 26769, - "NAD27 / Idaho Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); - add_proj4text (p, 1, - "99473679999999 +x_0=152400.3048006096 +y_0=0 +datum=NAD2"); - add_proj4text (p, 2, - "7 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Idaho Central\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",41.66666666666666],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",-114],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "947368],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 11, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26769\"]]"); - p = add_epsg_def (filter, first, last, 26770, "epsg", 26770, - "NAD27 / Idaho West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); - add_proj4text (p, 1, - ".999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +u"); - add_proj4text (p, 2, - "nits=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Idaho West\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",41.66666666666666],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-115.75],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "933333],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 11, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26770\"]]"); - p = add_epsg_def (filter, first, last, 26771, "epsg", 26771, - "NAD27 / Illinois East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); - add_proj4text (p, 1, - "333333 +k=0.9999749999999999 +x_0=152400.3048006096 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Illinois East\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",36.66666666666666],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",-88.33333333333333],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.999975],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); - add_srs_wkt (p, 11, - ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26771\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 26772, "epsg", 26772, - "NAD27 / Illinois West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +dat"); - add_proj4text (p, 2, - "um=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Illinois West\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",36.66666666666666],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",-90.16666666666667],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.999941177],PARAMETER[\"false_easting\",500000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); - add_srs_wkt (p, 11, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26772\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 26773, "epsg", 26773, - "NAD27 / Indiana East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +uni"); - add_proj4text (p, 2, - "ts=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Indiana East\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",37.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-85.66666666666667],PARAMETER[\"scale_factor\",0.999966"); - add_srs_wkt (p, 9, - "667],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 11, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26773\"]]"); - p = add_epsg_def (filter, first, last, 26774, "epsg", 26774, - "NAD27 / Indiana West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +uni"); - add_proj4text (p, 2, - "ts=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Indiana West\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",37.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-87.08333333333333],PARAMETER[\"scale_factor\",0.999966"); - add_srs_wkt (p, 9, - "667],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 11, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26774\"]]"); - p = add_epsg_def (filter, first, last, 26775, "epsg", 26775, - "NAD27 / Iowa North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); - add_proj4text (p, 1, - "667 +lat_0=41.5 +lon_0=-93.5 +x_0=609601.2192024384 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Iowa North\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"standard_parallel_1\",43.26666666666667],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_2\",42.06666666666667],PARAMETER["); - add_srs_wkt (p, 9, - "\"latitude_of_origin\",41.5],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 10, - "n\",-93.5],PARAMETER[\"false_easting\",2000000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); - add_srs_wkt (p, 12, - "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); - add_srs_wkt (p, 13, - "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26775\"]]"); - p = add_epsg_def (filter, first, last, 26776, "epsg", 26776, - "NAD27 / Iowa South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); - add_proj4text (p, 1, - "667 +lat_0=40 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0"); - add_proj4text (p, 2, - " +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Iowa South\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"standard_parallel_1\",41.78333333333333],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_2\",40.61666666666667],PARAMETER["); - add_srs_wkt (p, 9, - "\"latitude_of_origin\",40],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 10, - ",-93.5],PARAMETER[\"false_easting\",2000000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 12, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 13, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26776\"]]"); - p = add_epsg_def (filter, first, last, 26777, "epsg", 26777, - "NAD27 / Kansas North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=609601.2192"); - add_proj4text (p, 2, - "024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Kansas North\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 7, - "AMETER[\"standard_parallel_1\",39.78333333333333],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_2\",38.71666666666667],PARAMETER"); - add_srs_wkt (p, 9, - "[\"latitude_of_origin\",38.33333333333334],PARAMETER[\"c"); - add_srs_wkt (p, 10, - "entral_meridian\",-98],PARAMETER[\"false_easting\",20000"); - add_srs_wkt (p, 11, - "00],PARAMETER[\"false_northing\",0],UNIT[\"US survey foo"); - add_srs_wkt (p, 12, - "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); - add_srs_wkt (p, 13, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"267"); - add_srs_wkt (p, 14, - "77\"]]"); - p = add_epsg_def (filter, first, last, 26778, "epsg", 26778, - "NAD27 / Kansas South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=609601.21"); - add_proj4text (p, 2, - "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Kansas South\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 7, - "AMETER[\"standard_parallel_1\",38.56666666666667],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_2\",37.26666666666667],PARAMETER"); - add_srs_wkt (p, 9, - "[\"latitude_of_origin\",36.66666666666666],PARAMETER[\"c"); - add_srs_wkt (p, 10, - "entral_meridian\",-98.5],PARAMETER[\"false_easting\",200"); - add_srs_wkt (p, 11, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"US survey f"); - add_srs_wkt (p, 12, - "oot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],A"); - add_srs_wkt (p, 13, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2"); - add_srs_wkt (p, 14, - "6778\"]]"); - p = add_epsg_def (filter, first, last, 26779, "epsg", 26779, - "NAD27 / Kentucky North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); - add_proj4text (p, 1, - "667 +lat_0=37.5 +lon_0=-84.25 +x_0=609601.2192024384 +y_"); - add_proj4text (p, 2, - "0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Kentucky North\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",37.96666666666667],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",38.96666666666667],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",37.5],PARAMETER[\"central_mer"); - add_srs_wkt (p, 10, - "idian\",-84.25],PARAMETER[\"false_easting\",2000000],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); - add_srs_wkt (p, 12, - "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26779\"]]"); - p = add_epsg_def (filter, first, last, 26780, "epsg", 26780, - "NAD27 / Kentucky South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=609601.2"); - add_proj4text (p, 2, - "192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Kentucky South\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",36.73333333333333],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",37.93333333333333],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",36.33333333333334],PARAMETER["); - add_srs_wkt (p, 10, - "\"central_meridian\",-85.75],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); - add_srs_wkt (p, 12, - "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"26780\"]]"); - p = add_epsg_def (filter, first, last, 26781, "epsg", 26781, - "NAD27 / Louisiana North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=30.66666666666667 +lon_0=-92.5 +x_0=609601.21"); - add_proj4text (p, 2, - "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Louisiana North\",GEOGCS[\"NAD27\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",31.16666666666667],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",32.66666666666666],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",30.66666666666667],PARAMETER["); - add_srs_wkt (p, 10, - "\"central_meridian\",-92.5],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 11, - "2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surve"); - add_srs_wkt (p, 12, - "y foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]"); - add_srs_wkt (p, 13, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 14, - "\"26781\"]]"); - p = add_epsg_def (filter, first, last, 26782, "epsg", 26782, - "NAD27 / Louisiana South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.666666666666"); - add_proj4text (p, 1, - "67 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Louisiana South\",GEOGCS[\"NAD27\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",29.3],PARAMETER[\"stan"); - add_srs_wkt (p, 8, - "dard_parallel_2\",30.7],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 9, - ",28.66666666666667],PARAMETER[\"central_meridian\",-91.3"); - add_srs_wkt (p, 10, - "3333333333333],PARAMETER[\"false_easting\",2000000],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); - add_srs_wkt (p, 12, - "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); - add_srs_wkt (p, 13, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26782\"]]"); - p = add_epsg_def (filter, first, last, 26783, "epsg", 26783, - "NAD27 / Maine East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-68.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us"); - add_proj4text (p, 2, - "-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Maine East\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",43.83333333333334],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-68.5],PARAMETER[\"scale_factor\",0.9999]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"US survey foot\",0.3048006096012192,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"26783\"]]"); - p = add_epsg_def (filter, first, last, 26784, "epsg", 26784, - "NAD27 / Maine West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +dat"); - add_proj4text (p, 2, - "um=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Maine West\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",42.83333333333334],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-70.16666666666667],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.999966667],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); - add_srs_wkt (p, 11, - ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26784\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 26785, "epsg", 26785, - "NAD27 / Maryland"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.83333333333"); - add_proj4text (p, 1, - "334 +lon_0=-77 +x_0=243840.4876809754 +y_0=0 +datum=NAD2"); - add_proj4text (p, 2, - "7 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Maryland\",GEOGCS[\"NAD27\",DATUM[\"Nor"); - add_srs_wkt (p, 1, - "th_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637820"); - add_srs_wkt (p, 2, - "6.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 4, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 5, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"426"); - add_srs_wkt (p, 6, - "7\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); - add_srs_wkt (p, 7, - "TER[\"standard_parallel_1\",38.3],PARAMETER[\"standard_p"); - add_srs_wkt (p, 8, - "arallel_2\",39.45],PARAMETER[\"latitude_of_origin\",37.8"); - add_srs_wkt (p, 9, - "3333333333334],PARAMETER[\"central_meridian\",-77],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_easting\",800000.0000000002],PARAMETER[\"fa"); - add_srs_wkt (p, 11, - "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); - add_srs_wkt (p, 12, - "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 13, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26785\"]]"); - p = add_epsg_def (filter, first, last, 26786, "epsg", 26786, - "NAD27 / Massachusetts Mainland"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333"); - add_proj4text (p, 1, - "333 +lat_0=41 +lon_0=-71.5 +x_0=182880.3657607315 +y_0=0"); - add_proj4text (p, 2, - " +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Massachusetts Mainland\",GEOGCS[\"NAD27"); - add_srs_wkt (p, 1, - "\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke"); - add_srs_wkt (p, 2, - " 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 7, - "SP\"],PARAMETER[\"standard_parallel_1\",41.7166666666666"); - add_srs_wkt (p, 8, - "7],PARAMETER[\"standard_parallel_2\",42.68333333333333],"); - add_srs_wkt (p, 9, - "PARAMETER[\"latitude_of_origin\",41],PARAMETER[\"central"); - add_srs_wkt (p, 10, - "_meridian\",-71.5],PARAMETER[\"false_easting\",600000],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); - add_srs_wkt (p, 12, - ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); - add_srs_wkt (p, 13, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26786\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 26787, "epsg", 26787, - "NAD27 / Massachusetts Island"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=41 +lon_0=-70.5 +x_0=60960.12192024384 +y_0=0"); - add_proj4text (p, 2, - " +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Massachusetts Island\",GEOGCS[\"NAD27\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1"); - add_srs_wkt (p, 2, - "866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 7, - "SP\"],PARAMETER[\"standard_parallel_1\",41.2833333333333"); - add_srs_wkt (p, 8, - "3],PARAMETER[\"standard_parallel_2\",41.48333333333333],"); - add_srs_wkt (p, 9, - "PARAMETER[\"latitude_of_origin\",41],PARAMETER[\"central"); - add_srs_wkt (p, 10, - "_meridian\",-70.5],PARAMETER[\"false_easting\",200000],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); - add_srs_wkt (p, 12, - ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); - add_srs_wkt (p, 13, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26787\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 26791, "epsg", 26791, - "NAD27 / Minnesota North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333"); - add_proj4text (p, 1, - "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=609601.21"); - add_proj4text (p, 2, - "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Minnesota North\",GEOGCS[\"NAD27\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",47.03333333333333],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",48.63333333333333],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",46.5],PARAMETER[\"central_mer"); - add_srs_wkt (p, 10, - "idian\",-93.1],PARAMETER[\"false_easting\",2000000],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); - add_srs_wkt (p, 12, - "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); - add_srs_wkt (p, 13, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26791\"]]"); - p = add_epsg_def (filter, first, last, 26792, "epsg", 26792, - "NAD27 / Minnesota Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=4"); - add_proj4text (p, 1, - "5 +lon_0=-94.25 +x_0=609601.2192024384 +y_0=0 +datum=NAD"); - add_proj4text (p, 2, - "27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Minnesota Central\",GEOGCS[\"NAD27\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866"); - add_srs_wkt (p, 2, - "\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"standard_parallel_1\",45.61666666666667],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_2\",47.05],PARAMETER[\"lati"); - add_srs_wkt (p, 9, - "tude_of_origin\",45],PARAMETER[\"central_meridian\",-94."); - add_srs_wkt (p, 10, - "25],PARAMETER[\"false_easting\",2000000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 12, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 13, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26792\"]]"); - p = add_epsg_def (filter, first, last, 26793, "epsg", 26793, - "NAD27 / Minnesota South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666"); - add_proj4text (p, 1, - "667 +lat_0=43 +lon_0=-94 +x_0=609601.2192024384 +y_0=0 +"); - add_proj4text (p, 2, - "datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Minnesota South\",GEOGCS[\"NAD27\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",43.78333333333333],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",45.21666666666667],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",43],PARAMETER[\"central_merid"); - add_srs_wkt (p, 10, - "ian\",-94],PARAMETER[\"false_easting\",2000000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); - add_srs_wkt (p, 12, - "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); - add_srs_wkt (p, 13, - "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26793\"]]"); - p = add_epsg_def (filter, first, last, 26794, "epsg", 26794, - "NAD27 / Mississippi East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=29.66666666666667 +lon_0=-88.83333333"); - add_proj4text (p, 1, - "333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +datum=N"); - add_proj4text (p, 2, - "AD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Mississippi East\",GEOGCS[\"NAD27\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",29.66666666666667],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-88.83333333333333],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.99996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); - add_srs_wkt (p, 11, - ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26794\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 26795, "epsg", 26795, - "NAD27 / Mississippi West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30.5 +lon_0=-90.33333333333333 +k=0.9"); - add_proj4text (p, 1, - "99941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +uni"); - add_proj4text (p, 2, - "ts=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Mississippi West\",GEOGCS[\"NAD27\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",30.5],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",-90.33333333333333],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "99941177],PARAMETER[\"false_easting\",500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"US survey foot\",0.30480060"); - add_srs_wkt (p, 11, - "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26795\"]]"); - p = add_epsg_def (filter, first, last, 26796, "epsg", 26796, - "NAD27 / Missouri East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9"); - add_proj4text (p, 1, - "99933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +uni"); - add_proj4text (p, 2, - "ts=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Missouri East\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",35.83333333333334],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",-90.5],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 9, - "9933333],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 11, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26796\"]]"); - p = add_epsg_def (filter, first, last, 26797, "epsg", 26797, - "NAD27 / Missouri Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9"); - add_proj4text (p, 1, - "99933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +uni"); - add_proj4text (p, 2, - "ts=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Missouri Central\",GEOGCS[\"NAD27\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",35.83333333333334],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-92.5],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "99933333],PARAMETER[\"false_easting\",500000],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_northing\",0],UNIT[\"US survey foot\",0.30480060"); - add_srs_wkt (p, 11, - "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26797\"]]"); - p = add_epsg_def (filter, first, last, 26798, "epsg", 26798, - "NAD27 / Missouri West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9"); - add_proj4text (p, 1, - "99941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +uni"); - add_proj4text (p, 2, - "ts=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Missouri West\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",36.16666666666666],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",-94.5],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 9, - "9941177],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 11, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26798\"]]"); - p = add_epsg_def (filter, first, last, 26799, "epsg", 26799, - "NAD27 / California zone VII"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666"); - add_proj4text (p, 1, - "667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +"); - add_proj4text (p, 2, - "x_0=1276106.450596901 +y_0=1268253.006858014 +datum=NAD2"); - add_proj4text (p, 3, - "7 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / California zone VII\",GEOGCS[\"NAD27\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 18"); - add_srs_wkt (p, 2, - "66\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "08\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",34.41666666666666]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",33.86666666666667],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"latitude_of_origin\",34.13333333333333],PARAME"); - add_srs_wkt (p, 10, - "TER[\"central_meridian\",-118.3333333333333],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_easting\",4186692.58],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",4160926.74],UNIT[\"US survey foot\",0.3048006096012192,"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"26799\"]]"); - p = add_epsg_def (filter, first, last, 26801, "epsg", 26801, - "NAD Michigan / Michigan East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99942857 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548"); - add_proj4text (p, 2, - "896 +b=6356826.621488444 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD Michigan / Michigan East\",GEOGCS[\"NAD27 M"); - add_srs_wkt (p, 1, - "ichigan\",DATUM[\"NAD27_Michigan\",SPHEROID[\"Clarke 186"); - add_srs_wkt (p, 2, - "6 Michigan\",6378450.047548896,294.9786971646747,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7009\"]],AUTHORITY[\"EPSG\",\"6268\"]],PRI"); - add_srs_wkt (p, 4, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4268\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",41.5],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",-83.66666666666667],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.999942857],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",500000],PARAMETER[\"false_northing\",0],UNIT[\"US surve"); - add_srs_wkt (p, 11, - "y foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]"); - add_srs_wkt (p, 12, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"26801\"]]"); - p = add_epsg_def (filter, first, last, 26802, "epsg", 26802, - "NAD Michigan / Michigan Old Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909091 +x_"); - add_proj4text (p, 1, - "0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=63568"); - add_proj4text (p, 2, - "26.621488444 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD Michigan / Michigan Old Central\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD27 Michigan\",DATUM[\"NAD27_Michigan\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1866 Michigan\",6378450.047548896,294.9786971646747,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7009\"]],AUTHORITY[\"EPSG\",\"6268\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4268\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",41.5"); - add_srs_wkt (p, 8, - "],PARAMETER[\"central_meridian\",-85.75],PARAMETER[\"sca"); - add_srs_wkt (p, 9, - "le_factor\",0.999909091],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"US survey fo"); - add_srs_wkt (p, 11, - "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26"); - add_srs_wkt (p, 13, - "802\"]]"); - p = add_epsg_def (filter, first, last, 26803, "epsg", 26803, - "NAD Michigan / Michigan West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909091 +x_"); - add_proj4text (p, 1, - "0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=63568"); - add_proj4text (p, 2, - "26.621488444 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD Michigan / Michigan West\",GEOGCS[\"NAD27 M"); - add_srs_wkt (p, 1, - "ichigan\",DATUM[\"NAD27_Michigan\",SPHEROID[\"Clarke 186"); - add_srs_wkt (p, 2, - "6 Michigan\",6378450.047548896,294.9786971646747,AUTHORI"); - add_srs_wkt (p, 3, - "TY[\"EPSG\",\"7009\"]],AUTHORITY[\"EPSG\",\"6268\"]],PRI"); - add_srs_wkt (p, 4, - "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4268\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",41.5],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",-88.75],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.999909091],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0."); - add_srs_wkt (p, 11, - "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26803\"]]"); - p = add_epsg_def (filter, first, last, 26811, "epsg", 26811, - "NAD Michigan / Michigan North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333"); - add_proj4text (p, 1, - "334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192"); - add_proj4text (p, 2, - "024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 "); - add_proj4text (p, 3, - "+units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD Michigan / Michigan North\",GEOGCS[\"NAD27 "); - add_srs_wkt (p, 1, - "Michigan\",DATUM[\"NAD27_Michigan\",SPHEROID[\"Clarke 18"); - add_srs_wkt (p, 2, - "66 Michigan\",6378450.047548896,294.9786971646747,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7009\"]],AUTHORITY[\"EPSG\",\"6268\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4268\"]],PROJECTION[\"Lambert_Co"); - add_srs_wkt (p, 7, - "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); - add_srs_wkt (p, 8, - "5.48333333333333],PARAMETER[\"standard_parallel_2\",47.0"); - add_srs_wkt (p, 9, - "8333333333334],PARAMETER[\"latitude_of_origin\",44.78333"); - add_srs_wkt (p, 10, - "333333333],PARAMETER[\"central_meridian\",-87],PARAMETER"); - add_srs_wkt (p, 11, - "[\"false_easting\",2000000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 14, - "AUTHORITY[\"EPSG\",\"26811\"]]"); - p = add_epsg_def (filter, first, last, 26812, "epsg", 26812, - "NAD Michigan / Michigan Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43"); - add_proj4text (p, 1, - ".31666666666667 +lon_0=-84.33333333333333 +x_0=609601.21"); - add_proj4text (p, 2, - "92024384 +y_0=0 +a=6378450.047548896 +b=6356826.62148844"); - add_proj4text (p, 3, - "4 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD Michigan / Michigan Central\",GEOGCS[\"NAD2"); - add_srs_wkt (p, 1, - "7 Michigan\",DATUM[\"NAD27_Michigan\",SPHEROID[\"Clarke "); - add_srs_wkt (p, 2, - "1866 Michigan\",6378450.047548896,294.9786971646747,AUTH"); - add_srs_wkt (p, 3, - "ORITY[\"EPSG\",\"7009\"]],AUTHORITY[\"EPSG\",\"6268\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4268\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",44.18333333333333],PARAMETER[\"standard_parallel_2\",45"); - add_srs_wkt (p, 9, - ".7],PARAMETER[\"latitude_of_origin\",43.31666666666667],"); - add_srs_wkt (p, 10, - "PARAMETER[\"central_meridian\",-84.33333333333333],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_easting\",2000000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 12, - "ng\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 14, - "TH],AUTHORITY[\"EPSG\",\"26812\"]]"); - p = add_epsg_def (filter, first, last, 26813, "epsg", 26813, - "NAD Michigan / Michigan South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41"); - add_proj4text (p, 1, - ".5 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0"); - add_proj4text (p, 2, - "=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-f"); - add_proj4text (p, 3, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD Michigan / Michigan South\",GEOGCS[\"NAD27 "); - add_srs_wkt (p, 1, - "Michigan\",DATUM[\"NAD27_Michigan\",SPHEROID[\"Clarke 18"); - add_srs_wkt (p, 2, - "66 Michigan\",6378450.047548896,294.9786971646747,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7009\"]],AUTHORITY[\"EPSG\",\"6268\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4268\"]],PROJECTION[\"Lambert_Co"); - add_srs_wkt (p, 7, - "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); - add_srs_wkt (p, 8, - "2.1],PARAMETER[\"standard_parallel_2\",43.66666666666666"); - add_srs_wkt (p, 9, - "],PARAMETER[\"latitude_of_origin\",41.5],PARAMETER[\"cen"); - add_srs_wkt (p, 10, - "tral_meridian\",-84.33333333333333],PARAMETER[\"false_ea"); - add_srs_wkt (p, 11, - "sting\",2000000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 12, - "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"26813\"]]"); - p = add_epsg_def (filter, first, last, 26814, "epsg", 26814, - "NAD83 / Maine East (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Maine East (ftUS) (deprecated)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"626"); - add_srs_wkt (p, 4, - "9\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",4"); - add_srs_wkt (p, 8, - "3.66666666666666],PARAMETER[\"central_meridian\",-68.5],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",300000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26814\"]]"); - p = add_epsg_def (filter, first, last, 26815, "epsg", 26815, - "NAD83 / Maine West (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999966667 +x_0=900000 +y_0=0 +datum=NAD83 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Maine West (ftUS) (deprecated)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID["); - add_srs_wkt (p, 2, - "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"626"); - add_srs_wkt (p, 4, - "9\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",4"); - add_srs_wkt (p, 8, - "2.83333333333334],PARAMETER[\"central_meridian\",-70.166"); - add_srs_wkt (p, 9, - "66666666667],PARAMETER[\"scale_factor\",0.999966667],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_easting\",900000],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 12, - "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "26815\"]]"); - p = add_epsg_def (filter, first, last, 26819, "epsg", 26819, - "NAD83 / Minnesota North (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.00"); - add_proj4text (p, 2, - "00101601 +y_0=99999.99998984 +datum=NAD83 +units=m +no_d"); - add_proj4text (p, 3, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Minnesota North (ftUS) (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); - add_srs_wkt (p, 8, - "parallel_1\",48.63333333333333],PARAMETER[\"standard_par"); - add_srs_wkt (p, 9, - "allel_2\",47.03333333333333],PARAMETER[\"latitude_of_ori"); - add_srs_wkt (p, 10, - "gin\",46.5],PARAMETER[\"central_meridian\",-93.1],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_easting\",800000.0000101601],PARAMETER[\"fal"); - add_srs_wkt (p, 12, - "se_northing\",99999.99998984],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 14, - "AUTHORITY[\"EPSG\",\"26819\"]]"); - p = add_epsg_def (filter, first, last, 26820, "epsg", 26820, - "NAD83 / Minnesota Central (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); - add_proj4text (p, 1, - "5 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.999989"); - add_proj4text (p, 2, - "84 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Minnesota Central (ftUS) (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); - add_srs_wkt (p, 8, - "_parallel_1\",47.05],PARAMETER[\"standard_parallel_2\",4"); - add_srs_wkt (p, 9, - "5.61666666666667],PARAMETER[\"latitude_of_origin\",45],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"central_meridian\",-94.25],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "easting\",800000.0000101601],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",99999.99998984],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 13, - "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 14, - "PSG\",\"26820\"]]"); - p = add_epsg_def (filter, first, last, 26821, "epsg", 26821, - "NAD83 / Minnesota South (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=999"); - add_proj4text (p, 2, - "99.99998984 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Minnesota South (ftUS) (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHE"); - add_srs_wkt (p, 2, - "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); - add_srs_wkt (p, 8, - "parallel_1\",45.21666666666667],PARAMETER[\"standard_par"); - add_srs_wkt (p, 9, - "allel_2\",43.78333333333333],PARAMETER[\"latitude_of_ori"); - add_srs_wkt (p, 10, - "gin\",43],PARAMETER[\"central_meridian\",-94],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_easting\",800000.0000101601],PARAMETER[\"false_n"); - add_srs_wkt (p, 12, - "orthing\",99999.99998984],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 14, - "ORITY[\"EPSG\",\"26821\"]]"); - p = add_epsg_def (filter, first, last, 26822, "epsg", 26822, - "NAD83 / Nebraska (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); - add_proj4text (p, 1, - "lon_0=-100 +x_0=500000.0000101601 +y_0=0 +datum=NAD83 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Nebraska (ftUS) (deprecated)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 7, - "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); - add_srs_wkt (p, 8, - "_1\",43],PARAMETER[\"standard_parallel_2\",40],PARAMETER"); - add_srs_wkt (p, 9, - "[\"latitude_of_origin\",39.83333333333334],PARAMETER[\"c"); - add_srs_wkt (p, 10, - "entral_meridian\",-100],PARAMETER[\"false_easting\",5000"); - add_srs_wkt (p, 11, - "00.0000101601],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 12, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 13, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26822\"]]"); - p = add_epsg_def (filter, first, last, 26823, "epsg", 26823, - "NAD83 / West Virginia North (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); - add_proj4text (p, 1, - "5 +x_0=1968500 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / West Virginia North (ftUS) (deprecated)"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",40.25],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",39],PARAMETER[\"latitude_of_origin\",38.5],PARAMETER[\""); - add_srs_wkt (p, 10, - "central_meridian\",-79.5],PARAMETER[\"false_easting\",19"); - add_srs_wkt (p, 11, - "68500],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 13, - ",NORTH],AUTHORITY[\"EPSG\",\"26823\"]]"); - p = add_epsg_def (filter, first, last, 26824, "epsg", 26824, - "NAD83 / West Virginia South (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +datum=NAD8"); - add_proj4text (p, 2, - "3 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / West Virginia South (ftUS) (deprecated)"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",38.88333333333333],PARAMETER[\"standard"); - add_srs_wkt (p, 9, - "_parallel_2\",37.48333333333333],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 10, - "_origin\",37],PARAMETER[\"central_meridian\",-81],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_easting\",1968500],PARAMETER[\"false_northin"); - add_srs_wkt (p, 12, - "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 13, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26"); - add_srs_wkt (p, 14, - "824\"]]"); - p = add_epsg_def (filter, first, last, 26825, "epsg", 26825, - "NAD83(HARN) / Maine East (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Maine East (ftUS) (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refer"); - add_srs_wkt (p, 2, - "ence_Network\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4152\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",43.66666666666666],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",-68.5],PARAMETER[\"scale_factor\",0.9999]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_easting\",300000],PARAMETER[\"false_n"); - add_srs_wkt (p, 11, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"26825\"]]"); - p = add_epsg_def (filter, first, last, 26826, "epsg", 26826, - "NAD83(HARN) / Maine West (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Maine West (ftUS) (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refer"); - add_srs_wkt (p, 2, - "ence_Network\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4152\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",42.83333333333334],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",-70.16666666666667],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 10, - "tor\",0.999966667],PARAMETER[\"false_easting\",900000],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"26826\"]]"); - p = add_epsg_def (filter, first, last, 26830, "epsg", 26830, - "NAD83(HARN) / Minnesota North (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.00"); - add_proj4text (p, 2, - "00101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0"); - add_proj4text (p, 3, - ",0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Minnesota North (ftUS) (deprecate"); - add_srs_wkt (p, 1, - "d)\",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_"); - add_srs_wkt (p, 2, - "Reference_Network\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",48.63333333333333],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"standard_parallel_2\",47.03333333333333],PARA"); - add_srs_wkt (p, 10, - "METER[\"latitude_of_origin\",46.5],PARAMETER[\"central_m"); - add_srs_wkt (p, 11, - "eridian\",-93.1],PARAMETER[\"false_easting\",800000.0000"); - add_srs_wkt (p, 12, - "101601],PARAMETER[\"false_northing\",99999.99998984],UNI"); - add_srs_wkt (p, 13, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 14, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26830\"]]"); - p = add_epsg_def (filter, first, last, 26831, "epsg", 26831, - "NAD83(HARN) / Minnesota Central (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); - add_proj4text (p, 1, - "5 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.999989"); - add_proj4text (p, 2, - "84 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Minnesota Central (ftUS) (depreca"); - add_srs_wkt (p, 1, - "ted)\",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accurac"); - add_srs_wkt (p, 2, - "y_Reference_Network\",SPHEROID[\"GRS 1980\",6378137,298."); - add_srs_wkt (p, 3, - "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0],AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",47.05],PARAMETER[\""); - add_srs_wkt (p, 9, - "standard_parallel_2\",45.61666666666667],PARAMETER[\"lat"); - add_srs_wkt (p, 10, - "itude_of_origin\",45],PARAMETER[\"central_meridian\",-94"); - add_srs_wkt (p, 11, - ".25],PARAMETER[\"false_easting\",800000.0000101601],PARA"); - add_srs_wkt (p, 12, - "METER[\"false_northing\",99999.99998984],UNIT[\"metre\","); - add_srs_wkt (p, 13, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 14, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"26831\"]]"); - p = add_epsg_def (filter, first, last, 26832, "epsg", 26832, - "NAD83(HARN) / Minnesota South (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=999"); - add_proj4text (p, 2, - "99.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); - add_proj4text (p, 3, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Minnesota South (ftUS) (deprecate"); - add_srs_wkt (p, 1, - "d)\",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_"); - add_srs_wkt (p, 2, - "Reference_Network\",SPHEROID[\"GRS 1980\",6378137,298.25"); - add_srs_wkt (p, 3, - "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0],AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_1\",45.21666666666667],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"standard_parallel_2\",43.78333333333333],PARA"); - add_srs_wkt (p, 10, - "METER[\"latitude_of_origin\",43],PARAMETER[\"central_mer"); - add_srs_wkt (p, 11, - "idian\",-94],PARAMETER[\"false_easting\",800000.00001016"); - add_srs_wkt (p, 12, - "01],PARAMETER[\"false_northing\",99999.99998984],UNIT[\""); - add_srs_wkt (p, 13, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); - add_srs_wkt (p, 14, - ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26832\"]]"); - p = add_epsg_def (filter, first, last, 26833, "epsg", 26833, - "NAD83(HARN) / Nebraska (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); - add_proj4text (p, 1, - "lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Nebraska (ftUS) (deprecated)\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Referen"); - add_srs_wkt (p, 2, - "ce_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "152\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"standard_parallel_1\",43],PARAMETER[\"standard_p"); - add_srs_wkt (p, 9, - "arallel_2\",40],PARAMETER[\"latitude_of_origin\",39.8333"); - add_srs_wkt (p, 10, - "3333333334],PARAMETER[\"central_meridian\",-100],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_easting\",500000.0000101601],PARAMETER[\"fals"); - add_srs_wkt (p, 12, - "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 13, - "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 14, - "SG\",\"26833\"]]"); - p = add_epsg_def (filter, first, last, 26834, "epsg", 26834, - "NAD83(HARN) / West Virginia North (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); - add_proj4text (p, 1, - "5 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,"); - add_proj4text (p, 2, - "0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / West Virginia North (ftUS) (depre"); - add_srs_wkt (p, 1, - "cated)\",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accur"); - add_srs_wkt (p, 2, - "acy_Reference_Network\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 3, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",40.25],PARAMETER"); - add_srs_wkt (p, 9, - "[\"standard_parallel_2\",39],PARAMETER[\"latitude_of_ori"); - add_srs_wkt (p, 10, - "gin\",38.5],PARAMETER[\"central_meridian\",-79.5],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_easting\",1968500],PARAMETER[\"false_northin"); - add_srs_wkt (p, 12, - "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 13, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26"); - add_srs_wkt (p, 14, - "834\"]]"); - p = add_epsg_def (filter, first, last, 26835, "epsg", 26835, - "NAD83(HARN) / West Virginia South (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS8"); - add_proj4text (p, 2, - "0 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / West Virginia South (ftUS) (depre"); - add_srs_wkt (p, 1, - "cated)\",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accur"); - add_srs_wkt (p, 2, - "acy_Reference_Network\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 3, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",38.8833333333333"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"standard_parallel_2\",37.48333333333333],"); - add_srs_wkt (p, 10, - "PARAMETER[\"latitude_of_origin\",37],PARAMETER[\"central"); - add_srs_wkt (p, 11, - "_meridian\",-81],PARAMETER[\"false_easting\",1968500],PA"); - add_srs_wkt (p, 12, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 14, - "AUTHORITY[\"EPSG\",\"26835\"]]"); - p = add_epsg_def (filter, first, last, 26836, "epsg", 26836, - "NAD83(NSRS2007) / Maine East (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Maine East (ftUS) (deprecated"); - add_srs_wkt (p, 1, - ")\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Sp"); - add_srs_wkt (p, 2, - "atial_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 3, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 4, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 5, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",43.66666666666666],"); - add_srs_wkt (p, 9, - "PARAMETER[\"central_meridian\",-68.5],PARAMETER[\"scale_"); - add_srs_wkt (p, 10, - "factor\",0.9999],PARAMETER[\"false_easting\",300000],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"26836\"]]"); - p = add_epsg_def (filter, first, last, 26837, "epsg", 26837, - "NAD83(NSRS2007) / Maine West (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Maine West (ftUS) (deprecated"); - add_srs_wkt (p, 1, - ")\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Sp"); - add_srs_wkt (p, 2, - "atial_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 3, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 4, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 5, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",42.83333333333334],"); - add_srs_wkt (p, 9, - "PARAMETER[\"central_meridian\",-70.16666666666667],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"scale_factor\",0.999966667],PARAMETER[\"false_eas"); - add_srs_wkt (p, 11, - "ting\",900000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 12, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 13, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26837\"]]"); - p = add_epsg_def (filter, first, last, 26841, "epsg", 26841, - "NAD83(NSRS2007) / Minnesota North (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.00"); - add_proj4text (p, 2, - "00101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0"); - add_proj4text (p, 3, - ",0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Minnesota North (ftUS) (depre"); - add_srs_wkt (p, 1, - "cated)\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_Nation"); - add_srs_wkt (p, 2, - "al_Spatial_Reference_System_2007\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 3, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 4, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM"); - add_srs_wkt (p, 5, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 6, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 7, - "AUTHORITY[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 8, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",48.6"); - add_srs_wkt (p, 9, - "3333333333333],PARAMETER[\"standard_parallel_2\",47.0333"); - add_srs_wkt (p, 10, - "3333333333],PARAMETER[\"latitude_of_origin\",46.5],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"central_meridian\",-93.1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 12, - "ng\",800000.0000101601],PARAMETER[\"false_northing\",999"); - add_srs_wkt (p, 13, - "99.99998984],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 14, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 15, - ",\"26841\"]]"); - p = add_epsg_def (filter, first, last, 26842, "epsg", 26842, - "NAD83(NSRS2007) / Minnesota Central (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); - add_proj4text (p, 1, - "5 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.999989"); - add_proj4text (p, 2, - "84 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Minnesota Central (ftUS) (dep"); - add_srs_wkt (p, 1, - "recated)\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_Nati"); - add_srs_wkt (p, 2, - "onal_Spatial_Reference_System_2007\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 3, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 4, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIM"); - add_srs_wkt (p, 5, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 6, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 7, - "],AUTHORITY[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 8, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",47"); - add_srs_wkt (p, 9, - ".05],PARAMETER[\"standard_parallel_2\",45.61666666666667"); - add_srs_wkt (p, 10, - "],PARAMETER[\"latitude_of_origin\",45],PARAMETER[\"centr"); - add_srs_wkt (p, 11, - "al_meridian\",-94.25],PARAMETER[\"false_easting\",800000"); - add_srs_wkt (p, 12, - ".0000101601],PARAMETER[\"false_northing\",99999.99998984"); - add_srs_wkt (p, 13, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 14, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26842\""); - add_srs_wkt (p, 15, - "]]"); - p = add_epsg_def (filter, first, last, 26843, "epsg", 26843, - "NAD83(NSRS2007) / Minnesota South (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=999"); - add_proj4text (p, 2, - "99.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); - add_proj4text (p, 3, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Minnesota South (ftUS) (depre"); - add_srs_wkt (p, 1, - "cated)\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_Nation"); - add_srs_wkt (p, 2, - "al_Spatial_Reference_System_2007\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 3, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 4, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM"); - add_srs_wkt (p, 5, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 6, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 7, - "AUTHORITY[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 8, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",45.2"); - add_srs_wkt (p, 9, - "1666666666667],PARAMETER[\"standard_parallel_2\",43.7833"); - add_srs_wkt (p, 10, - "3333333333],PARAMETER[\"latitude_of_origin\",43],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"central_meridian\",-94],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 12, - ",800000.0000101601],PARAMETER[\"false_northing\",99999.9"); - add_srs_wkt (p, 13, - "9998984],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 14, - "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 15, - "26843\"]]"); - p = add_epsg_def (filter, first, last, 26844, "epsg", 26844, - "NAD83(NSRS2007) / Nebraska (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); - add_proj4text (p, 1, - "lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Nebraska (ftUS) (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spati"); - add_srs_wkt (p, 2, - "al_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 3, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 4, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 5, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 6, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 8, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",43],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"standard_parallel_2\",40],PARAMETER[\"latitude_of_or"); - add_srs_wkt (p, 10, - "igin\",39.83333333333334],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 11, - ",-100],PARAMETER[\"false_easting\",500000.0000101601],PA"); - add_srs_wkt (p, 12, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 14, - "AUTHORITY[\"EPSG\",\"26844\"]]"); - p = add_epsg_def (filter, first, last, 26845, "epsg", 26845, - "NAD83(NSRS2007) / West Virginia North (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); - add_proj4text (p, 1, - "5 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,"); - add_proj4text (p, 2, - "0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / West Virginia North (ftUS) (d"); - add_srs_wkt (p, 1, - "eprecated)\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_Na"); - add_srs_wkt (p, 2, - "tional_Spatial_Reference_System_2007\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 3, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 4, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PR"); - add_srs_wkt (p, 5, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 6, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 7, - "]],AUTHORITY[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Co"); - add_srs_wkt (p, 8, - "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); - add_srs_wkt (p, 9, - "0.25],PARAMETER[\"standard_parallel_2\",39],PARAMETER[\""); - add_srs_wkt (p, 10, - "latitude_of_origin\",38.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 11, - ",-79.5],PARAMETER[\"false_easting\",1968500],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 14, - "\"EPSG\",\"26845\"]]"); - p = add_epsg_def (filter, first, last, 26846, "epsg", 26846, - "NAD83(NSRS2007) / West Virginia South (ftUS) (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS8"); - add_proj4text (p, 2, - "0 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / West Virginia South (ftUS) (d"); - add_srs_wkt (p, 1, - "eprecated)\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_Na"); - add_srs_wkt (p, 2, - "tional_Spatial_Reference_System_2007\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 3, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 4, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PR"); - add_srs_wkt (p, 5, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 6, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 7, - "]],AUTHORITY[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Co"); - add_srs_wkt (p, 8, - "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); - add_srs_wkt (p, 9, - "8.88333333333333],PARAMETER[\"standard_parallel_2\",37.4"); - add_srs_wkt (p, 10, - "8333333333333],PARAMETER[\"latitude_of_origin\",37],PARA"); - add_srs_wkt (p, 11, - "METER[\"central_meridian\",-81],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 12, - "g\",1968500],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 13, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); - add_srs_wkt (p, 14, - "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26846\"]]"); - p = add_epsg_def (filter, first, last, 26847, "epsg", 26847, - "NAD83 / Maine East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=300000.0000000001 +y_0=0 +datum=NAD83 +units=us"); - add_proj4text (p, 2, - "-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Maine East (ftUS)\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",43.66666666666"); - add_srs_wkt (p, 8, - "666],PARAMETER[\"central_meridian\",-68.5],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9999],PARAMETER[\"false_easting\",984250"); - add_srs_wkt (p, 10, - ".0000000002],PARAMETER[\"false_northing\",0],UNIT[\"US s"); - add_srs_wkt (p, 11, - "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 12, - "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"26847\"]]"); - p = add_epsg_def (filter, first, last, 26848, "epsg", 26848, - "NAD83 / Maine West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999966667 +x_0=900000 +y_0=0 +datum=NAD83 +u"); - add_proj4text (p, 2, - "nits=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Maine West (ftUS)\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",42.83333333333"); - add_srs_wkt (p, 8, - "334],PARAMETER[\"central_meridian\",-70.16666666666667],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",0.999966667],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",2952750],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); - add_srs_wkt (p, 13, - "TY[\"EPSG\",\"26848\"]]"); - p = add_epsg_def (filter, first, last, 26849, "epsg", 26849, - "NAD83 / Minnesota North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.00"); - add_proj4text (p, 2, - "00101599 +y_0=99999.99998983997 +datum=NAD83 +units=us-f"); - add_proj4text (p, 3, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Minnesota North (ftUS)\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Co"); - add_srs_wkt (p, 7, - "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); - add_srs_wkt (p, 8, - "8.63333333333333],PARAMETER[\"standard_parallel_2\",47.0"); - add_srs_wkt (p, 9, - "3333333333333],PARAMETER[\"latitude_of_origin\",46.5],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"central_meridian\",-93.1],PARAMETER[\"false_ea"); - add_srs_wkt (p, 11, - "sting\",2624666.6667],PARAMETER[\"false_northing\",32808"); - add_srs_wkt (p, 12, - "3.3333],UNIT[\"US survey foot\",0.3048006096012192,AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 14, - "TH],AUTHORITY[\"EPSG\",\"26849\"]]"); - p = add_epsg_def (filter, first, last, 26850, "epsg", 26850, - "NAD83 / Minnesota Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); - add_proj4text (p, 1, - "5 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.999989"); - add_proj4text (p, 2, - "83997 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Minnesota Central (ftUS)\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",47.05],PARAMETER[\"standard_parallel_2\",45.61666666666"); - add_srs_wkt (p, 9, - "667],PARAMETER[\"latitude_of_origin\",45],PARAMETER[\"ce"); - add_srs_wkt (p, 10, - "ntral_meridian\",-94.25],PARAMETER[\"false_easting\",262"); - add_srs_wkt (p, 11, - "4666.6667],PARAMETER[\"false_northing\",328083.3333],UNI"); - add_srs_wkt (p, 12, - "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); - add_srs_wkt (p, 14, - "TY[\"EPSG\",\"26850\"]]"); - p = add_epsg_def (filter, first, last, 26851, "epsg", 26851, - "NAD83 / Minnesota South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=999"); - add_proj4text (p, 2, - "99.99998983997 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Minnesota South (ftUS)\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Co"); - add_srs_wkt (p, 7, - "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); - add_srs_wkt (p, 8, - "5.21666666666667],PARAMETER[\"standard_parallel_2\",43.7"); - add_srs_wkt (p, 9, - "8333333333333],PARAMETER[\"latitude_of_origin\",43],PARA"); - add_srs_wkt (p, 10, - "METER[\"central_meridian\",-94],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 11, - "g\",2624666.6667],PARAMETER[\"false_northing\",328083.33"); - add_srs_wkt (p, 12, - "33],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 14, - "AUTHORITY[\"EPSG\",\"26851\"]]"); - p = add_epsg_def (filter, first, last, 26852, "epsg", 26852, - "NAD83 / Nebraska (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); - add_proj4text (p, 1, - "lon_0=-100 +x_0=500000.00001016 +y_0=0 +datum=NAD83 +uni"); - add_proj4text (p, 2, - "ts=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Nebraska (ftUS)\",GEOGCS[\"NAD83\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); - add_srs_wkt (p, 2, - "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",43],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",40],PARAMETER[\"latitude_"); - add_srs_wkt (p, 9, - "of_origin\",39.83333333333334],PARAMETER[\"central_merid"); - add_srs_wkt (p, 10, - "ian\",-100],PARAMETER[\"false_easting\",1640416.6667],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0."); - add_srs_wkt (p, 12, - "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26852\"]]"); - p = add_epsg_def (filter, first, last, 26853, "epsg", 26853, - "NAD83 / West Virginia North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); - add_proj4text (p, 1, - "5 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / West Virginia North (ftUS)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambe"); - add_srs_wkt (p, 7, - "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); - add_srs_wkt (p, 8, - "1\",40.25],PARAMETER[\"standard_parallel_2\",39],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"latitude_of_origin\",38.5],PARAMETER[\"central_meri"); - add_srs_wkt (p, 10, - "dian\",-79.5],PARAMETER[\"false_easting\",1968500],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); - add_srs_wkt (p, 12, - "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 13, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26853\"]]"); - p = add_epsg_def (filter, first, last, 26854, "epsg", 26854, - "NAD83 / West Virginia South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +datum=NAD83"); - add_proj4text (p, 2, - " +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / West Virginia South (ftUS)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GR"); - add_srs_wkt (p, 2, - "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]"); - add_srs_wkt (p, 4, - "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); - add_srs_wkt (p, 5, - "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 6, - "122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambe"); - add_srs_wkt (p, 7, - "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); - add_srs_wkt (p, 8, - "1\",38.88333333333333],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",37.48333333333333],PARAMETER[\"latitude_of_origin\",37]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"central_meridian\",-81],PARAMETER[\"false_e"); - add_srs_wkt (p, 11, - "asting\",1968500],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 12, - "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 14, - "EPSG\",\"26854\"]]"); - p = add_epsg_def (filter, first, last, 26855, "epsg", 26855, - "NAD83(HARN) / Maine East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Maine East (ftUS)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",43.66666666666666],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-68.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",984250.0000000002],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 13, - "ORTH],AUTHORITY[\"EPSG\",\"26855\"]]"); - p = add_epsg_def (filter, first, last, 26856, "epsg", 26856, - "NAD83(HARN) / Maine West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Maine West (ftUS)\",GEOGCS[\"NAD8"); - add_srs_wkt (p, 1, - "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",42.83333333333334],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-70.16666666666667],PARAMETER[\"scale_factor\",0.999966"); - add_srs_wkt (p, 10, - "667],PARAMETER[\"false_easting\",2952750],PARAMETER[\"fa"); - add_srs_wkt (p, 11, - "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); - add_srs_wkt (p, 12, - "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 13, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26856\"]]"); - p = add_epsg_def (filter, first, last, 26857, "epsg", 26857, - "NAD83(HARN) / Minnesota North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.00"); - add_proj4text (p, 2, - "00101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,"); - add_proj4text (p, 3, - "0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Minnesota North (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",48.63333333333333],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",47.03333333333333],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",46.5],PARAMETER[\"central_meridian\",-93."); - add_srs_wkt (p, 11, - "1],PARAMETER[\"false_easting\",2624666.6667],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",328083.3333],UNIT[\"US survey foot\",0."); - add_srs_wkt (p, 13, - "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 14, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26857\"]]"); - p = add_epsg_def (filter, first, last, 26858, "epsg", 26858, - "NAD83(HARN) / Minnesota Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); - add_proj4text (p, 1, - "5 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.999989"); - add_proj4text (p, 2, - "83997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Minnesota Central (ftUS)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); - add_srs_wkt (p, 2, - "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_1\",47.05],PARAMETER[\"standard_par"); - add_srs_wkt (p, 9, - "allel_2\",45.61666666666667],PARAMETER[\"latitude_of_ori"); - add_srs_wkt (p, 10, - "gin\",45],PARAMETER[\"central_meridian\",-94.25],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_easting\",2624666.6667],PARAMETER[\"false_nor"); - add_srs_wkt (p, 12, - "thing\",328083.3333],UNIT[\"US survey foot\",0.304800609"); - add_srs_wkt (p, 13, - "6012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 14, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26858\"]]"); - p = add_epsg_def (filter, first, last, 26859, "epsg", 26859, - "NAD83(HARN) / Minnesota South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=999"); - add_proj4text (p, 2, - "99.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 3, - "s=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Minnesota South (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); - add_srs_wkt (p, 2, - "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_1\",45.21666666666667],PARAMETER[\"sta"); - add_srs_wkt (p, 9, - "ndard_parallel_2\",43.78333333333333],PARAMETER[\"latitu"); - add_srs_wkt (p, 10, - "de_of_origin\",43],PARAMETER[\"central_meridian\",-94],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_easting\",2624666.6667],PARAMETER[\"fal"); - add_srs_wkt (p, 12, - "se_northing\",328083.3333],UNIT[\"US survey foot\",0.304"); - add_srs_wkt (p, 13, - "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 14, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26859\"]]"); - p = add_epsg_def (filter, first, last, 26860, "epsg", 26860, - "NAD83(HARN) / Nebraska (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); - add_proj4text (p, 1, - "lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +tow"); - add_proj4text (p, 2, - "gs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / Nebraska (ftUS)\",GEOGCS[\"NAD83("); - add_srs_wkt (p, 1, - "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); - add_srs_wkt (p, 2, - "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_1\",43],PARAMETER[\"standard_parallel_2\",4"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"latitude_of_origin\",39.83333333333334],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"central_meridian\",-100],PARAMETER[\"false_ea"); - add_srs_wkt (p, 11, - "sting\",1640416.6667],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 12, - "IT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); - add_srs_wkt (p, 14, - "ITY[\"EPSG\",\"26860\"]]"); - p = add_epsg_def (filter, first, last, 26861, "epsg", 26861, - "NAD83(HARN) / West Virginia North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); - add_proj4text (p, 1, - "5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / West Virginia North (ftUS)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference"); - add_srs_wkt (p, 2, - "_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"415"); - add_srs_wkt (p, 7, - "2\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_1\",40.25],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",39],PARAMETER[\"latitude_of_origin\",38.5],"); - add_srs_wkt (p, 10, - "PARAMETER[\"central_meridian\",-79.5],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "easting\",1968500],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 12, - "\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 14, - "[\"EPSG\",\"26861\"]]"); - p = add_epsg_def (filter, first, last, 26862, "epsg", 26862, - "NAD83(HARN) / West Virginia South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80"); - add_proj4text (p, 2, - " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(HARN) / West Virginia South (ftUS)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference"); - add_srs_wkt (p, 2, - "_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"415"); - add_srs_wkt (p, 7, - "2\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_1\",38.88333333333333],PARAMETER"); - add_srs_wkt (p, 9, - "[\"standard_parallel_2\",37.48333333333333],PARAMETER[\""); - add_srs_wkt (p, 10, - "latitude_of_origin\",37],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 11, - "-81],PARAMETER[\"false_easting\",1968500],PARAMETER[\"fa"); - add_srs_wkt (p, 12, - "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); - add_srs_wkt (p, 13, - "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 14, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26862\"]]"); - p = add_epsg_def (filter, first, last, 26863, "epsg", 26863, - "NAD83(NSRS2007) / Maine East (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84="); - add_proj4text (p, 2, - "0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Maine East (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",43.66666666666666],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",-68.5],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 10, - "999],PARAMETER[\"false_easting\",984250.0000000002],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); - add_srs_wkt (p, 12, - "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); - add_srs_wkt (p, 13, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26863\"]]"); - p = add_epsg_def (filter, first, last, 26864, "epsg", 26864, - "NAD83(NSRS2007) / Maine West (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +t"); - add_proj4text (p, 2, - "owgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Maine West (ftUS)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); - add_srs_wkt (p, 2, - "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); - add_srs_wkt (p, 3, - "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",42.83333333333334],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",-70.16666666666667],PARAMETER[\"scale"); - add_srs_wkt (p, 10, - "_factor\",0.999966667],PARAMETER[\"false_easting\",29527"); - add_srs_wkt (p, 11, - "50],PARAMETER[\"false_northing\",0],UNIT[\"US survey foo"); - add_srs_wkt (p, 12, - "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); - add_srs_wkt (p, 13, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"268"); - add_srs_wkt (p, 14, - "64\"]]"); - p = add_epsg_def (filter, first, last, 26865, "epsg", 26865, - "NAD83(NSRS2007) / Minnesota North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.00"); - add_proj4text (p, 2, - "00101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,"); - add_proj4text (p, 3, - "0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Minnesota North (ftUS)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); - add_srs_wkt (p, 2, - "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); - add_srs_wkt (p, 3, - "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",48.63333333333333]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",47.03333333333333],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"latitude_of_origin\",46.5],PARAMETER[\"central"); - add_srs_wkt (p, 11, - "_meridian\",-93.1],PARAMETER[\"false_easting\",2624666.6"); - add_srs_wkt (p, 12, - "667],PARAMETER[\"false_northing\",328083.3333],UNIT[\"US"); - add_srs_wkt (p, 13, - " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 14, - "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 15, - "PSG\",\"26865\"]]"); - p = add_epsg_def (filter, first, last, 26866, "epsg", 26866, - "NAD83(NSRS2007) / Minnesota Central (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); - add_proj4text (p, 1, - "5 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.999989"); - add_proj4text (p, 2, - "83997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Minnesota Central (ftUS)\",GE"); - add_srs_wkt (p, 1, - "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); - add_srs_wkt (p, 2, - "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 3, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 5, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 8, - "SP\"],PARAMETER[\"standard_parallel_1\",47.05],PARAMETER"); - add_srs_wkt (p, 9, - "[\"standard_parallel_2\",45.61666666666667],PARAMETER[\""); - add_srs_wkt (p, 10, - "latitude_of_origin\",45],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 11, - "-94.25],PARAMETER[\"false_easting\",2624666.6667],PARAME"); - add_srs_wkt (p, 12, - "TER[\"false_northing\",328083.3333],UNIT[\"US survey foo"); - add_srs_wkt (p, 13, - "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); - add_srs_wkt (p, 14, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"268"); - add_srs_wkt (p, 15, - "66\"]]"); - p = add_epsg_def (filter, first, last, 26867, "epsg", 26867, - "NAD83(NSRS2007) / Minnesota South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=999"); - add_proj4text (p, 2, - "99.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); - add_proj4text (p, 3, - "s=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Minnesota South (ftUS)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); - add_srs_wkt (p, 2, - "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); - add_srs_wkt (p, 3, - "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); - add_srs_wkt (p, 4, - "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 5, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 6, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"standard_parallel_1\",45.21666666666667]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"standard_parallel_2\",43.78333333333333],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"latitude_of_origin\",43],PARAMETER[\"central_m"); - add_srs_wkt (p, 11, - "eridian\",-94],PARAMETER[\"false_easting\",2624666.6667]"); - add_srs_wkt (p, 12, - ",PARAMETER[\"false_northing\",328083.3333],UNIT[\"US sur"); - add_srs_wkt (p, 13, - "vey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 14, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 15, - ",\"26867\"]]"); - p = add_epsg_def (filter, first, last, 26868, "epsg", 26868, - "NAD83(NSRS2007) / Nebraska (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); - add_proj4text (p, 1, - "lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +tow"); - add_proj4text (p, 2, - "gs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / Nebraska (ftUS)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); - add_srs_wkt (p, 2, - "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); - add_srs_wkt (p, 3, - "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_1\",43],PARAMETER[\"standard_"); - add_srs_wkt (p, 9, - "parallel_2\",40],PARAMETER[\"latitude_of_origin\",39.833"); - add_srs_wkt (p, 10, - "33333333334],PARAMETER[\"central_meridian\",-100],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_easting\",1640416.6667],PARAMETER[\"false_no"); - add_srs_wkt (p, 12, - "rthing\",0],UNIT[\"US survey foot\",0.3048006096012192,A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 14, - ",NORTH],AUTHORITY[\"EPSG\",\"26868\"]]"); - p = add_epsg_def (filter, first, last, 26869, "epsg", 26869, - "NAD83(NSRS2007) / West Virginia North (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); - add_proj4text (p, 1, - "5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); - add_proj4text (p, 2, - " +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / West Virginia North (ftUS)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatia"); - add_srs_wkt (p, 2, - "l_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,"); - add_srs_wkt (p, 3, - "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 5, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Coni"); - add_srs_wkt (p, 8, - "c_2SP\"],PARAMETER[\"standard_parallel_1\",40.25],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",39],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 10, - "origin\",38.5],PARAMETER[\"central_meridian\",-79.5],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_easting\",1968500],PARAMETER[\"false_nort"); - add_srs_wkt (p, 12, - "hing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 14, - "ORTH],AUTHORITY[\"EPSG\",\"26869\"]]"); - p = add_epsg_def (filter, first, last, 26870, "epsg", 26870, - "NAD83(NSRS2007) / West Virginia South (ftUS)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80"); - add_proj4text (p, 2, - " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(NSRS2007) / West Virginia South (ftUS)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatia"); - add_srs_wkt (p, 2, - "l_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,"); - add_srs_wkt (p, 3, - "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); - add_srs_wkt (p, 4, - "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 5, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Coni"); - add_srs_wkt (p, 8, - "c_2SP\"],PARAMETER[\"standard_parallel_1\",38.8833333333"); - add_srs_wkt (p, 9, - "3333],PARAMETER[\"standard_parallel_2\",37.4833333333333"); - add_srs_wkt (p, 10, - "3],PARAMETER[\"latitude_of_origin\",37],PARAMETER[\"cent"); - add_srs_wkt (p, 11, - "ral_meridian\",-81],PARAMETER[\"false_easting\",1968500]"); - add_srs_wkt (p, 12, - ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); - add_srs_wkt (p, 13, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 14, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26870\""); - add_srs_wkt (p, 15, - "]]"); - p = add_epsg_def (filter, first, last, 26891, "epsg", 26891, - "NAD83(CSRS) / MTM zone 11"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 11\",GEOGCS[\"NAD83(CSRS"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-82.5],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); - add_srs_wkt (p, 10, - "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"26891\"]]"); - p = add_epsg_def (filter, first, last, 26892, "epsg", 26892, - "NAD83(CSRS) / MTM zone 12"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 12\",GEOGCS[\"NAD83(CSRS"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-81],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"26892\"]]"); - p = add_epsg_def (filter, first, last, 26893, "epsg", 26893, - "NAD83(CSRS) / MTM zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 13\",GEOGCS[\"NAD83(CSRS"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-84],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"26893\"]]"); - p = add_epsg_def (filter, first, last, 26894, "epsg", 26894, - "NAD83(CSRS) / MTM zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 14\",GEOGCS[\"NAD83(CSRS"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-87],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"26894\"]]"); - p = add_epsg_def (filter, first, last, 26895, "epsg", 26895, - "NAD83(CSRS) / MTM zone 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 15\",GEOGCS[\"NAD83(CSRS"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-90],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"26895\"]]"); - p = add_epsg_def (filter, first, last, 26896, "epsg", 26896, - "NAD83(CSRS) / MTM zone 16"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 16\",GEOGCS[\"NAD83(CSRS"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-93],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"26896\"]]"); - p = add_epsg_def (filter, first, last, 26897, "epsg", 26897, - "NAD83(CSRS) / MTM zone 17"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 17\",GEOGCS[\"NAD83(CSRS"); - add_srs_wkt (p, 1, - ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); - add_srs_wkt (p, 2, - "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-96],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"26897\"]]"); - p = add_epsg_def (filter, first, last, 26898, "epsg", 26898, - "NAD83(CSRS) / MTM zone 1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 1\",GEOGCS[\"NAD83(CSRS)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-53],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N(Y"); - add_srs_wkt (p, 12, - ")\",NORTH],AUTHORITY[\"EPSG\",\"26898\"]]"); - p = add_epsg_def (filter, first, last, 26899, "epsg", 26899, - "NAD83(CSRS) / MTM zone 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83(CSRS) / MTM zone 2\",GEOGCS[\"NAD83(CSRS)"); - add_srs_wkt (p, 1, - "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",0],PARAMETER[\"central_meridian\",-56],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N(Y"); - add_srs_wkt (p, 12, - ")\",NORTH],AUTHORITY[\"EPSG\",\"26899\"]]"); - p = add_epsg_def (filter, first, last, 26901, "epsg", 26901, - "NAD83 / UTM zone 1N"); - add_proj4text (p, 0, - "+proj=utm +zone=1 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 1N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-177],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"26901\"]]"); - p = add_epsg_def (filter, first, last, 26902, "epsg", 26902, - "NAD83 / UTM zone 2N"); - add_proj4text (p, 0, - "+proj=utm +zone=2 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 2N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-171],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"26902\"]]"); - p = add_epsg_def (filter, first, last, 26903, "epsg", 26903, - "NAD83 / UTM zone 3N"); - add_proj4text (p, 0, - "+proj=utm +zone=3 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 3N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-165],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"26903\"]]"); - p = add_epsg_def (filter, first, last, 26904, "epsg", 26904, - "NAD83 / UTM zone 4N"); - add_proj4text (p, 0, - "+proj=utm +zone=4 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 4N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-159],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"26904\"]]"); - p = add_epsg_def (filter, first, last, 26905, "epsg", 26905, - "NAD83 / UTM zone 5N"); - add_proj4text (p, 0, - "+proj=utm +zone=5 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 5N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-153],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"26905\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_32.c b/src/spatialite/src/srsinit/epsg_inlined_32.c deleted file mode 100644 index 0f25b2c..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_32.c +++ /dev/null @@ -1,3454 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_32 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 26906, "epsg", 26906, - "NAD83 / UTM zone 6N"); - add_proj4text (p, 0, - "+proj=utm +zone=6 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 6N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-147],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"26906\"]]"); - p = add_epsg_def (filter, first, last, 26907, "epsg", 26907, - "NAD83 / UTM zone 7N"); - add_proj4text (p, 0, - "+proj=utm +zone=7 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 7N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-141],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"26907\"]]"); - p = add_epsg_def (filter, first, last, 26908, "epsg", 26908, - "NAD83 / UTM zone 8N"); - add_proj4text (p, 0, - "+proj=utm +zone=8 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 8N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-135],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"26908\"]]"); - p = add_epsg_def (filter, first, last, 26909, "epsg", 26909, - "NAD83 / UTM zone 9N"); - add_proj4text (p, 0, - "+proj=utm +zone=9 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 9N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-129],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"26909\"]]"); - p = add_epsg_def (filter, first, last, 26910, "epsg", 26910, - "NAD83 / UTM zone 10N"); - add_proj4text (p, 0, - "+proj=utm +zone=10 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 10N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-123],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"26910\"]]"); - p = add_epsg_def (filter, first, last, 26911, "epsg", 26911, - "NAD83 / UTM zone 11N"); - add_proj4text (p, 0, - "+proj=utm +zone=11 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 11N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-117],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"26911\"]]"); - p = add_epsg_def (filter, first, last, 26912, "epsg", 26912, - "NAD83 / UTM zone 12N"); - add_proj4text (p, 0, - "+proj=utm +zone=12 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 12N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-111],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"26912\"]]"); - p = add_epsg_def (filter, first, last, 26913, "epsg", 26913, - "NAD83 / UTM zone 13N"); - add_proj4text (p, 0, - "+proj=utm +zone=13 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 13N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-105],PARAMETER[\"scale_factor\",0.9996],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); - add_srs_wkt (p, 10, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 11, - ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"26913\"]]"); - p = add_epsg_def (filter, first, last, 26914, "epsg", 26914, - "NAD83 / UTM zone 14N"); - add_proj4text (p, 0, - "+proj=utm +zone=14 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 14N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-99],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"26914\"]]"); - p = add_epsg_def (filter, first, last, 26915, "epsg", 26915, - "NAD83 / UTM zone 15N"); - add_proj4text (p, 0, - "+proj=utm +zone=15 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 15N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-93],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"26915\"]]"); - p = add_epsg_def (filter, first, last, 26916, "epsg", 26916, - "NAD83 / UTM zone 16N"); - add_proj4text (p, 0, - "+proj=utm +zone=16 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 16N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-87],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"26916\"]]"); - p = add_epsg_def (filter, first, last, 26917, "epsg", 26917, - "NAD83 / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 17N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-81],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"26917\"]]"); - p = add_epsg_def (filter, first, last, 26918, "epsg", 26918, - "NAD83 / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 18N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-75],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"26918\"]]"); - p = add_epsg_def (filter, first, last, 26919, "epsg", 26919, - "NAD83 / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 19N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-69],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"26919\"]]"); - p = add_epsg_def (filter, first, last, 26920, "epsg", 26920, - "NAD83 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 20N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-63],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"26920\"]]"); - p = add_epsg_def (filter, first, last, 26921, "epsg", 26921, - "NAD83 / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 21N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-57],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"26921\"]]"); - p = add_epsg_def (filter, first, last, 26922, "epsg", 26922, - "NAD83 / UTM zone 22N"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 22N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-51],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"26922\"]]"); - p = add_epsg_def (filter, first, last, 26923, "epsg", 26923, - "NAD83 / UTM zone 23N"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / UTM zone 23N\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-45],PARAMETER[\"scale_factor\",0.9996],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"26923\"]]"); - p = add_epsg_def (filter, first, last, 26929, "epsg", 26929, - "NAD83 / Alabama East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.9"); - add_proj4text (p, 1, - "9996 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alabama East\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",30.5],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",-85.83333333333333],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.99996],PARAMETER[\"false_easting\",200000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"26929\"]]"); - p = add_epsg_def (filter, first, last, 26930, "epsg", 26930, - "NAD83 / Alabama West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=6"); - add_proj4text (p, 1, - "00000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alabama West\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",30],PARAMETER[\"centr"); - add_srs_wkt (p, 8, - "al_meridian\",-87.5],PARAMETER[\"scale_factor\",0.999933"); - add_srs_wkt (p, 9, - "333],PARAMETER[\"false_easting\",600000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"26930\"]]"); - p = add_epsg_def (filter, first, last, 26931, "epsg", 26931, - "NAD83 / Alaska zone 1"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=32"); - add_proj4text (p, 1, - "3.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +ga"); - add_proj4text (p, 2, - "mma=323.1301023611111 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alaska zone 1\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Hotine_Oblique_Merc"); - add_srs_wkt (p, 7, - "ator\"],PARAMETER[\"latitude_of_center\",57],PARAMETER[\""); - add_srs_wkt (p, 8, - "longitude_of_center\",-133.6666666666667],PARAMETER[\"az"); - add_srs_wkt (p, 9, - "imuth\",323.1301023611111],PARAMETER[\"rectified_grid_an"); - add_srs_wkt (p, 10, - "gle\",323.1301023611111],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 11, - "99],PARAMETER[\"false_easting\",5000000],PARAMETER[\"fal"); - add_srs_wkt (p, 12, - "se_northing\",-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); - add_srs_wkt (p, 14, - "ITY[\"EPSG\",\"26931\"]]"); - p = add_epsg_def (filter, first, last, 26932, "epsg", 26932, - "NAD83 / Alaska zone 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alaska zone 2\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",-142],PARAMETER[\"scale_factor\",0.9999]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"26932\"]]"); - p = add_epsg_def (filter, first, last, 26933, "epsg", 26933, - "NAD83 / Alaska zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alaska zone 3\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",-146],PARAMETER[\"scale_factor\",0.9999]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"26933\"]]"); - p = add_epsg_def (filter, first, last, 26934, "epsg", 26934, - "NAD83 / Alaska zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alaska zone 4\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",-150],PARAMETER[\"scale_factor\",0.9999]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"26934\"]]"); - p = add_epsg_def (filter, first, last, 26935, "epsg", 26935, - "NAD83 / Alaska zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alaska zone 5\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",-154],PARAMETER[\"scale_factor\",0.9999]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"26935\"]]"); - p = add_epsg_def (filter, first, last, 26936, "epsg", 26936, - "NAD83 / Alaska zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alaska zone 6\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",-158],PARAMETER[\"scale_factor\",0.9999]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"26936\"]]"); - p = add_epsg_def (filter, first, last, 26937, "epsg", 26937, - "NAD83 / Alaska zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alaska zone 7\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",-162],PARAMETER[\"scale_factor\",0.9999]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"26937\"]]"); - p = add_epsg_def (filter, first, last, 26938, "epsg", 26938, - "NAD83 / Alaska zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alaska zone 8\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",-166],PARAMETER[\"scale_factor\",0.9999]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"26938\"]]"); - p = add_epsg_def (filter, first, last, 26939, "epsg", 26939, - "NAD83 / Alaska zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alaska zone 9\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",-170],PARAMETER[\"scale_factor\",0.9999]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"26939\"]]"); - p = add_epsg_def (filter, first, last, 26940, "epsg", 26940, - "NAD83 / Alaska zone 10"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333"); - add_proj4text (p, 1, - "334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +datum=NAD"); - add_proj4text (p, 2, - "83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Alaska zone 10\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",53.83333"); - add_srs_wkt (p, 8, - "333333334],PARAMETER[\"standard_parallel_2\",51.83333333"); - add_srs_wkt (p, 9, - "333334],PARAMETER[\"latitude_of_origin\",51],PARAMETER[\""); - add_srs_wkt (p, 10, - "central_meridian\",-176],PARAMETER[\"false_easting\",100"); - add_srs_wkt (p, 11, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 13, - ",NORTH],AUTHORITY[\"EPSG\",\"26940\"]]"); - p = add_epsg_def (filter, first, last, 26941, "epsg", 26941, - "NAD83 / California zone 1"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); - add_proj4text (p, 1, - "3333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +datu"); - add_proj4text (p, 2, - "m=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / California zone 1\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.66"); - add_srs_wkt (p, 8, - "666666666666],PARAMETER[\"standard_parallel_2\",40],PARA"); - add_srs_wkt (p, 9, - "METER[\"latitude_of_origin\",39.33333333333334],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"central_meridian\",-122],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",2000000],PARAMETER[\"false_northing\",500000],UNIT[\"me"); - add_srs_wkt (p, 12, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 13, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26941\"]]"); - p = add_epsg_def (filter, first, last, 26942, "epsg", 26942, - "NAD83 / California zone 2"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); - add_proj4text (p, 1, - "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y"); - add_proj4text (p, 2, - "_0=500000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / California zone 2\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39.83"); - add_srs_wkt (p, 8, - "333333333334],PARAMETER[\"standard_parallel_2\",38.33333"); - add_srs_wkt (p, 9, - "333333334],PARAMETER[\"latitude_of_origin\",37.666666666"); - add_srs_wkt (p, 10, - "66666],PARAMETER[\"central_meridian\",-122],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_easting\",2000000],PARAMETER[\"false_northing\",50"); - add_srs_wkt (p, 12, - "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 13, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"269"); - add_srs_wkt (p, 14, - "42\"]]"); - p = add_epsg_def (filter, first, last, 26943, "epsg", 26943, - "NAD83 / California zone 3"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +"); - add_proj4text (p, 2, - "datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / California zone 3\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38.43"); - add_srs_wkt (p, 8, - "333333333333],PARAMETER[\"standard_parallel_2\",37.06666"); - add_srs_wkt (p, 9, - "666666667],PARAMETER[\"latitude_of_origin\",36.5],PARAME"); - add_srs_wkt (p, 10, - "TER[\"central_meridian\",-120.5],PARAMETER[\"false_easti"); - add_srs_wkt (p, 11, - "ng\",2000000],PARAMETER[\"false_northing\",500000],UNIT["); - add_srs_wkt (p, 12, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); - add_srs_wkt (p, 13, - "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26943\"]]"); - p = add_epsg_def (filter, first, last, 26944, "epsg", 26944, - "NAD83 / California zone 4"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); - add_proj4text (p, 1, - "4 +lon_0=-119 +x_0=2000000 +y_0=500000 +datum=NAD83 +uni"); - add_proj4text (p, 2, - "ts=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / California zone 4\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37.25"); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_2\",36],PARAMETER[\"lati"); - add_srs_wkt (p, 9, - "tude_of_origin\",35.33333333333334],PARAMETER[\"central_"); - add_srs_wkt (p, 10, - "meridian\",-119],PARAMETER[\"false_easting\",2000000],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_northing\",500000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 13, - "RTH],AUTHORITY[\"EPSG\",\"26944\"]]"); - p = add_epsg_def (filter, first, last, 26945, "epsg", 26945, - "NAD83 / California zone 5"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +da"); - add_proj4text (p, 2, - "tum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / California zone 5\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",35.46"); - add_srs_wkt (p, 8, - "666666666667],PARAMETER[\"standard_parallel_2\",34.03333"); - add_srs_wkt (p, 9, - "333333333],PARAMETER[\"latitude_of_origin\",33.5],PARAME"); - add_srs_wkt (p, 10, - "TER[\"central_meridian\",-118],PARAMETER[\"false_easting"); - add_srs_wkt (p, 11, - "\",2000000],PARAMETER[\"false_northing\",500000],UNIT[\""); - add_srs_wkt (p, 12, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); - add_srs_wkt (p, 13, - ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26945\"]]"); - p = add_epsg_def (filter, first, last, 26946, "epsg", 26946, - "NAD83 / California zone 6"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000"); - add_proj4text (p, 2, - " +y_0=500000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / California zone 6\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",33.88"); - add_srs_wkt (p, 8, - "333333333333],PARAMETER[\"standard_parallel_2\",32.78333"); - add_srs_wkt (p, 9, - "333333333],PARAMETER[\"latitude_of_origin\",32.166666666"); - add_srs_wkt (p, 10, - "66666],PARAMETER[\"central_meridian\",-116.25],PARAMETER"); - add_srs_wkt (p, 11, - "[\"false_easting\",2000000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 13, - "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "26946\"]]"); - p = add_epsg_def (filter, first, last, 26948, "epsg", 26948, - "NAD83 / Arizona East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=213360 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Arizona East\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",31],PARAMETER[\"centr"); - add_srs_wkt (p, 8, - "al_meridian\",-110.1666666666667],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",213360],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"26948\"]]"); - p = add_epsg_def (filter, first, last, 26949, "epsg", 26949, - "NAD83 / Arizona Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=213360 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Arizona Central\",GEOGCS[\"NAD83\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); - add_srs_wkt (p, 2, - "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",31],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-111.9166666666667],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9999],PARAMETER[\"false_easting\",213360],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"26949\"]]"); - p = add_epsg_def (filter, first, last, 26950, "epsg", 26950, - "NAD83 / Arizona West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); - add_proj4text (p, 1, - "=213360 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Arizona West\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",31],PARAMETER[\"centr"); - add_srs_wkt (p, 8, - "al_meridian\",-113.75],PARAMETER[\"scale_factor\",0.9999"); - add_srs_wkt (p, 9, - "33333],PARAMETER[\"false_easting\",213360],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 11, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"26950\"]]"); - p = add_epsg_def (filter, first, last, 26951, "epsg", 26951, - "NAD83 / Arkansas North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Arkansas North\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36.23333"); - add_srs_wkt (p, 8, - "333333333],PARAMETER[\"standard_parallel_2\",34.93333333"); - add_srs_wkt (p, 9, - "333333],PARAMETER[\"latitude_of_origin\",34.333333333333"); - add_srs_wkt (p, 10, - "34],PARAMETER[\"central_meridian\",-92],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_easting\",400000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 12, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 13, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26951\"]]"); - p = add_epsg_def (filter, first, last, 26952, "epsg", 26952, - "NAD83 / Arkansas South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +datu"); - add_proj4text (p, 2, - "m=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Arkansas South\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",34.76666"); - add_srs_wkt (p, 8, - "666666667],PARAMETER[\"standard_parallel_2\",33.3],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"latitude_of_origin\",32.66666666666666],PARAMETER"); - add_srs_wkt (p, 10, - "[\"central_meridian\",-92],PARAMETER[\"false_easting\",4"); - add_srs_wkt (p, 11, - "00000],PARAMETER[\"false_northing\",400000],UNIT[\"metre"); - add_srs_wkt (p, 12, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 13, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26952\"]]"); - p = add_epsg_def (filter, first, last, 26953, "epsg", 26953, - "NAD83 / Colorado North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8"); - add_proj4text (p, 2, - "289 +y_0=304800.6096 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Colorado North\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40.78333"); - add_srs_wkt (p, 8, - "333333333],PARAMETER[\"standard_parallel_2\",39.71666666"); - add_srs_wkt (p, 9, - "666667],PARAMETER[\"latitude_of_origin\",39.333333333333"); - add_srs_wkt (p, 10, - "34],PARAMETER[\"central_meridian\",-105.5],PARAMETER[\"f"); - add_srs_wkt (p, 11, - "alse_easting\",914401.8289],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",304800.6096],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 13, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 14, - "\",\"26953\"]]"); - p = add_epsg_def (filter, first, last, 26954, "epsg", 26954, - "NAD83 / Colorado Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); - add_proj4text (p, 1, - "3334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +da"); - add_proj4text (p, 2, - "tum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Colorado Central\",GEOGCS[\"NAD83\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); - add_srs_wkt (p, 2, - "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39.75],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_2\",38.45],PARAMETER[\"lat"); - add_srs_wkt (p, 9, - "itude_of_origin\",37.83333333333334],PARAMETER[\"central"); - add_srs_wkt (p, 10, - "_meridian\",-105.5],PARAMETER[\"false_easting\",914401.8"); - add_srs_wkt (p, 11, - "289],PARAMETER[\"false_northing\",304800.6096],UNIT[\"me"); - add_srs_wkt (p, 12, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 13, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26954\"]]"); - p = add_epsg_def (filter, first, last, 26955, "epsg", 26955, - "NAD83 / Colorado South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); - add_proj4text (p, 1, - "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8"); - add_proj4text (p, 2, - "289 +y_0=304800.6096 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Colorado South\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38.43333"); - add_srs_wkt (p, 8, - "333333333],PARAMETER[\"standard_parallel_2\",37.23333333"); - add_srs_wkt (p, 9, - "333333],PARAMETER[\"latitude_of_origin\",36.666666666666"); - add_srs_wkt (p, 10, - "66],PARAMETER[\"central_meridian\",-105.5],PARAMETER[\"f"); - add_srs_wkt (p, 11, - "alse_easting\",914401.8289],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 12, - ",304800.6096],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 13, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 14, - "\",\"26955\"]]"); - p = add_epsg_def (filter, first, last, 26956, "epsg", 26956, - "NAD83 / Connecticut"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); - add_proj4text (p, 1, - ".83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=1524"); - add_proj4text (p, 2, - "00.3048 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Connecticut\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); - add_srs_wkt (p, 7, - "nic_2SP\"],PARAMETER[\"standard_parallel_1\",41.86666666"); - add_srs_wkt (p, 8, - "666667],PARAMETER[\"standard_parallel_2\",41.2],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"latitude_of_origin\",40.83333333333334],PARAMETER[\""); - add_srs_wkt (p, 10, - "central_meridian\",-72.75],PARAMETER[\"false_easting\",3"); - add_srs_wkt (p, 11, - "04800.6096],PARAMETER[\"false_northing\",152400.3048],UN"); - add_srs_wkt (p, 12, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 13, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26956\"]]"); - p = add_epsg_def (filter, first, last, 26957, "epsg", 26957, - "NAD83 / Delaware"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); - add_proj4text (p, 1, - "995 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Delaware\",GEOGCS[\"NAD83\",DATUM[\"Nor"); - add_srs_wkt (p, 1, - "th_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,2"); - add_srs_wkt (p, 2, - "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 4, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 5, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"latitude_of_origin\",38],PARAMETER[\"central"); - add_srs_wkt (p, 8, - "_meridian\",-75.41666666666667],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 9, - "\",0.999995],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"26957\"]]"); - p = add_epsg_def (filter, first, last, 26958, "epsg", 26958, - "NAD83 / Florida East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); - add_proj4text (p, 1, - "941177 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Florida East\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",24.33333333333333],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-81],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.999941177],PARAMETER[\"false_easting\",200000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"26958\"]]"); - p = add_epsg_def (filter, first, last, 26959, "epsg", 26959, - "NAD83 / Florida West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); - add_proj4text (p, 1, - "941177 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Florida West\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",24.33333333333333],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-82],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.999941177],PARAMETER[\"false_easting\",200000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"26959\"]]"); - p = add_epsg_def (filter, first, last, 26960, "epsg", 26960, - "NAD83 / Florida North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); - add_proj4text (p, 1, - "9 +lon_0=-84.5 +x_0=600000 +y_0=0 +datum=NAD83 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Florida North\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_C"); - add_srs_wkt (p, 7, - "onic_2SP\"],PARAMETER[\"standard_parallel_1\",30.75],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",29.58333333333333],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",29],PARAMETER[\"central_merid"); - add_srs_wkt (p, 10, - "ian\",-84.5],PARAMETER[\"false_easting\",600000],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 13, - "RITY[\"EPSG\",\"26960\"]]"); - p = add_epsg_def (filter, first, last, 26961, "epsg", 26961, - "NAD83 / Hawaii zone 1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0."); - add_proj4text (p, 1, - "999966667 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Hawaii zone 1\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",18.83333333333333],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",-155.5],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.999966667],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 12, - "RTH],AUTHORITY[\"EPSG\",\"26961\"]]"); - p = add_epsg_def (filter, first, last, 26962, "epsg", 26962, - "NAD83 / Hawaii zone 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666"); - add_proj4text (p, 1, - "666667 +k=0.999966667 +x_0=500000 +y_0=0 +datum=NAD83 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Hawaii zone 2\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",20.33333333333333],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",-156.6666666666667],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",0.999966667],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26962\"]]"); - p = add_epsg_def (filter, first, last, 26963, "epsg", 26963, - "NAD83 / Hawaii zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99"); - add_proj4text (p, 1, - "999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Hawaii zone 3\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",21.16666666666667],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",-158],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.99999],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"26963\"]]"); - p = add_epsg_def (filter, first, last, 26964, "epsg", 26964, - "NAD83 / Hawaii zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0."); - add_proj4text (p, 1, - "99999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Hawaii zone 4\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",21.83333333333333],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",-159.5],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.99999],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"26964\"]]"); - p = add_epsg_def (filter, first, last, 26965, "epsg", 26965, - "NAD83 / Hawaii zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Hawaii zone 5\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",21.66666666666667],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",-160.1666666666667],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"26965\"]]"); - p = add_epsg_def (filter, first, last, 26966, "epsg", 26966, - "NAD83 / Georgia East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Georgia East\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",30],PARAMETER[\"centr"); - add_srs_wkt (p, 8, - "al_meridian\",-82.16666666666667],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"26966\"]]"); - p = add_epsg_def (filter, first, last, 26967, "epsg", 26967, - "NAD83 / Georgia West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); - add_proj4text (p, 1, - "9 +x_0=700000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Georgia West\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",30],PARAMETER[\"centr"); - add_srs_wkt (p, 8, - "al_meridian\",-84.16666666666667],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",700000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"26967\"]]"); - p = add_epsg_def (filter, first, last, 26968, "epsg", 26968, - "NAD83 / Idaho East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); - add_proj4text (p, 1, - "666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +datum=N"); - add_proj4text (p, 2, - "AD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Idaho East\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",41.66666666666666],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-112.1666666666667],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",0.999947368],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",200000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26968\"]]"); - p = add_epsg_def (filter, first, last, 26969, "epsg", 26969, - "NAD83 / Idaho Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); - add_proj4text (p, 1, - "99473679999999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Idaho Central\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",41.66666666666666],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",-114],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.999947368],PARAMETER[\"false_easting\",500000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"26969\"]]"); - p = add_epsg_def (filter, first, last, 26970, "epsg", 26970, - "NAD83 / Idaho West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); - add_proj4text (p, 1, - ".999933333 +x_0=800000 +y_0=0 +datum=NAD83 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Idaho West\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",41.66666666666666],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-115.75],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.999933333],PARAMETER[\"false_easting\",800000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"26970\"]]"); - p = add_epsg_def (filter, first, last, 26971, "epsg", 26971, - "NAD83 / Illinois East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); - add_proj4text (p, 1, - "333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +datum=N"); - add_proj4text (p, 2, - "AD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Illinois East\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",36.66666666666666],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",-88.33333333333333],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",0.999975],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",300000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26971\"]]"); - p = add_epsg_def (filter, first, last, 26972, "epsg", 26972, - "NAD83 / Illinois West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999941177 +x_0=700000 +y_0=0 +datum=NAD83 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Illinois West\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",36.66666666666666],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",-90.16666666666667],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",0.999941177],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",700000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26972\"]]"); - p = add_epsg_def (filter, first, last, 26973, "epsg", 26973, - "NAD83 / Indiana East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=100000 +y_0=250000 +datum=NAD83 +units=m +"); - add_proj4text (p, 2, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Indiana East\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",37.5],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",-85.66666666666667],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.999966667],PARAMETER[\"false_easting\",100000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",250000],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"26973\"]]"); - p = add_epsg_def (filter, first, last, 26974, "epsg", 26974, - "NAD83 / Indiana West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=900000 +y_0=250000 +datum=NAD83 +units=m +"); - add_proj4text (p, 2, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Indiana West\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",37.5],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",-87.08333333333333],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.999966667],PARAMETER[\"false_easting\",900000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",250000],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"26974\"]]"); - p = add_epsg_def (filter, first, last, 26975, "epsg", 26975, - "NAD83 / Iowa North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); - add_proj4text (p, 1, - "667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +"); - add_proj4text (p, 2, - "datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Iowa North\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",43.266666666"); - add_srs_wkt (p, 8, - "66667],PARAMETER[\"standard_parallel_2\",42.066666666666"); - add_srs_wkt (p, 9, - "67],PARAMETER[\"latitude_of_origin\",41.5],PARAMETER[\"c"); - add_srs_wkt (p, 10, - "entral_meridian\",-93.5],PARAMETER[\"false_easting\",150"); - add_srs_wkt (p, 11, - "0000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre"); - add_srs_wkt (p, 12, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 13, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26975\"]]"); - p = add_epsg_def (filter, first, last, 26976, "epsg", 26976, - "NAD83 / Iowa South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); - add_proj4text (p, 1, - "667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +datum=NAD"); - add_proj4text (p, 2, - "83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Iowa South\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",41.783333333"); - add_srs_wkt (p, 8, - "33333],PARAMETER[\"standard_parallel_2\",40.616666666666"); - add_srs_wkt (p, 9, - "67],PARAMETER[\"latitude_of_origin\",40],PARAMETER[\"cen"); - add_srs_wkt (p, 10, - "tral_meridian\",-93.5],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 11, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 13, - "RTH],AUTHORITY[\"EPSG\",\"26976\"]]"); - p = add_epsg_def (filter, first, last, 26977, "epsg", 26977, - "NAD83 / Kansas North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Kansas North\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); - add_srs_wkt (p, 7, - "nic_2SP\"],PARAMETER[\"standard_parallel_1\",39.78333333"); - add_srs_wkt (p, 8, - "333333],PARAMETER[\"standard_parallel_2\",38.71666666666"); - add_srs_wkt (p, 9, - "667],PARAMETER[\"latitude_of_origin\",38.33333333333334]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"central_meridian\",-98],PARAMETER[\"false_e"); - add_srs_wkt (p, 11, - "asting\",400000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 12, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); - add_srs_wkt (p, 13, - ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26977\"]]"); - p = add_epsg_def (filter, first, last, 26978, "epsg", 26978, - "NAD83 / Kansas South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y"); - add_proj4text (p, 2, - "_0=400000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Kansas South\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); - add_srs_wkt (p, 7, - "nic_2SP\"],PARAMETER[\"standard_parallel_1\",38.56666666"); - add_srs_wkt (p, 8, - "666667],PARAMETER[\"standard_parallel_2\",37.26666666666"); - add_srs_wkt (p, 9, - "667],PARAMETER[\"latitude_of_origin\",36.66666666666666]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"central_meridian\",-98.5],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_easting\",400000],PARAMETER[\"false_northing\",400000],"); - add_srs_wkt (p, 12, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26978\"]]"); - p = add_epsg_def (filter, first, last, 26979, "epsg", 26979, - "NAD83 / Kentucky North (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.96666666666667 +lat_2=37.96666666666"); - add_proj4text (p, 1, - "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +datum="); - add_proj4text (p, 2, - "NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Kentucky North (deprecated)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); - add_srs_wkt (p, 2, - "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); - add_srs_wkt (p, 3, - "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 7, - "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); - add_srs_wkt (p, 8, - "_1\",37.96666666666667],PARAMETER[\"standard_parallel_2\""); - add_srs_wkt (p, 9, - ",37.96666666666667],PARAMETER[\"latitude_of_origin\",37."); - add_srs_wkt (p, 10, - "5],PARAMETER[\"central_meridian\",-84.25],PARAMETER[\"fa"); - add_srs_wkt (p, 11, - "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 12, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 13, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26979\"]]"); - p = add_epsg_def (filter, first, last, 26980, "epsg", 26980, - "NAD83 / Kentucky South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +"); - add_proj4text (p, 2, - "y_0=500000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Kentucky South\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37.93333"); - add_srs_wkt (p, 8, - "333333333],PARAMETER[\"standard_parallel_2\",36.73333333"); - add_srs_wkt (p, 9, - "333333],PARAMETER[\"latitude_of_origin\",36.333333333333"); - add_srs_wkt (p, 10, - "34],PARAMETER[\"central_meridian\",-85.75],PARAMETER[\"f"); - add_srs_wkt (p, 11, - "alse_easting\",500000],PARAMETER[\"false_northing\",5000"); - add_srs_wkt (p, 12, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 13, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26980"); - add_srs_wkt (p, 14, - "\"]]"); - p = add_epsg_def (filter, first, last, 26981, "epsg", 26981, - "NAD83 / Louisiana North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666"); - add_proj4text (p, 1, - "667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +datum="); - add_proj4text (p, 2, - "NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Louisiana North\",GEOGCS[\"NAD83\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); - add_srs_wkt (p, 2, - "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",32.6666"); - add_srs_wkt (p, 8, - "6666666666],PARAMETER[\"standard_parallel_2\",31.1666666"); - add_srs_wkt (p, 9, - "6666667],PARAMETER[\"latitude_of_origin\",30.5],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"central_meridian\",-92.5],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",1000000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 12, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"26981\"]]"); - p = add_epsg_def (filter, first, last, 26982, "epsg", 26982, - "NAD83 / Louisiana South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91"); - add_proj4text (p, 1, - ".33333333333333 +x_0=1000000 +y_0=0 +datum=NAD83 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Louisiana South\",GEOGCS[\"NAD83\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); - add_srs_wkt (p, 2, - "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",30.7],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_2\",29.3],PARAMETER[\"latit"); - add_srs_wkt (p, 9, - "ude_of_origin\",28.5],PARAMETER[\"central_meridian\",-91"); - add_srs_wkt (p, 10, - ".33333333333333],PARAMETER[\"false_easting\",1000000],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"26982\"]]"); - p = add_epsg_def (filter, first, last, 26983, "epsg", 26983, - "NAD83 / Maine East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Maine East\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",43.66666666666666],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-68.5],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9999],PARAMETER[\"false_easting\",300000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"26983\"]]"); - p = add_epsg_def (filter, first, last, 26984, "epsg", 26984, - "NAD83 / Maine West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); - add_proj4text (p, 1, - "666667 +k=0.999966667 +x_0=900000 +y_0=0 +datum=NAD83 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Maine West\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",42.83333333333334],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-70.16666666666667],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"scale_factor\",0.999966667],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",900000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26984\"]]"); - p = add_epsg_def (filter, first, last, 26985, "epsg", 26985, - "NAD83 / Maryland"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666"); - add_proj4text (p, 1, - "666 +lon_0=-77 +x_0=400000 +y_0=0 +datum=NAD83 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Maryland\",GEOGCS[\"NAD83\",DATUM[\"Nor"); - add_srs_wkt (p, 1, - "th_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,2"); - add_srs_wkt (p, 2, - "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 4, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 5, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Conic"); - add_srs_wkt (p, 7, - "_2SP\"],PARAMETER[\"standard_parallel_1\",39.45],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_2\",38.3],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 9, - "_origin\",37.66666666666666],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 10, - "n\",-77],PARAMETER[\"false_easting\",400000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"26985\"]]"); - p = add_epsg_def (filter, first, last, 26986, "epsg", 26986, - "NAD83 / Massachusetts Mainland"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +datu"); - add_proj4text (p, 2, - "m=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Massachusetts Mainland\",GEOGCS[\"NAD83"); - add_srs_wkt (p, 1, - "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); - add_srs_wkt (p, 2, - "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Co"); - add_srs_wkt (p, 7, - "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); - add_srs_wkt (p, 8, - "2.68333333333333],PARAMETER[\"standard_parallel_2\",41.7"); - add_srs_wkt (p, 9, - "1666666666667],PARAMETER[\"latitude_of_origin\",41],PARA"); - add_srs_wkt (p, 10, - "METER[\"central_meridian\",-71.5],PARAMETER[\"false_east"); - add_srs_wkt (p, 11, - "ing\",200000],PARAMETER[\"false_northing\",750000],UNIT["); - add_srs_wkt (p, 12, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); - add_srs_wkt (p, 13, - "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26986\"]]"); - p = add_epsg_def (filter, first, last, 26987, "epsg", 26987, - "NAD83 / Massachusetts Island"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333"); - add_proj4text (p, 1, - "333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +datum=NAD"); - add_proj4text (p, 2, - "83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Massachusetts Island\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41"); - add_srs_wkt (p, 8, - ".48333333333333],PARAMETER[\"standard_parallel_2\",41.28"); - add_srs_wkt (p, 9, - "333333333333],PARAMETER[\"latitude_of_origin\",41],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"central_meridian\",-70.5],PARAMETER[\"false_easti"); - add_srs_wkt (p, 11, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 12, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); - add_srs_wkt (p, 13, - "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26987\"]]"); - p = add_epsg_def (filter, first, last, 26988, "epsg", 26988, - "NAD83 / Michigan North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_"); - add_proj4text (p, 2, - "0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Michigan North\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",47.08333"); - add_srs_wkt (p, 8, - "333333334],PARAMETER[\"standard_parallel_2\",45.48333333"); - add_srs_wkt (p, 9, - "333333],PARAMETER[\"latitude_of_origin\",44.783333333333"); - add_srs_wkt (p, 10, - "33],PARAMETER[\"central_meridian\",-87],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_easting\",8000000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 12, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 13, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26988\"]]"); - p = add_epsg_def (filter, first, last, 26989, "epsg", 26989, - "NAD83 / Michigan Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43"); - add_proj4text (p, 1, - ".31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +"); - add_proj4text (p, 2, - "y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Michigan Central\",GEOGCS[\"NAD83\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); - add_srs_wkt (p, 2, - "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",45.7],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"standard_parallel_2\",44.18333333333333],PARA"); - add_srs_wkt (p, 9, - "METER[\"latitude_of_origin\",43.31666666666667],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"central_meridian\",-84.36666666666666],PARAMETER[\"f"); - add_srs_wkt (p, 11, - "alse_easting\",6000000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26989\"]]"); - p = add_epsg_def (filter, first, last, 26990, "epsg", 26990, - "NAD83 / Michigan South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41"); - add_proj4text (p, 1, - ".5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +datum="); - add_proj4text (p, 2, - "NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Michigan South\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",43.66666"); - add_srs_wkt (p, 8, - "666666666],PARAMETER[\"standard_parallel_2\",42.1],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"latitude_of_origin\",41.5],PARAMETER[\"central_me"); - add_srs_wkt (p, 10, - "ridian\",-84.36666666666666],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",4000000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 12, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"26990\"]]"); - p = add_epsg_def (filter, first, last, 26991, "epsg", 26991, - "NAD83 / Minnesota North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y"); - add_proj4text (p, 2, - "_0=100000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Minnesota North\",GEOGCS[\"NAD83\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); - add_srs_wkt (p, 2, - "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",48.6333"); - add_srs_wkt (p, 8, - "3333333333],PARAMETER[\"standard_parallel_2\",47.0333333"); - add_srs_wkt (p, 9, - "3333333],PARAMETER[\"latitude_of_origin\",46.5],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"central_meridian\",-93.1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",800000],PARAMETER[\"false_northing\",100000],UNIT[\"met"); - add_srs_wkt (p, 12, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 13, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26991\"]]"); - p = add_epsg_def (filter, first, last, 26992, "epsg", 26992, - "NAD83 / Minnesota Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); - add_proj4text (p, 1, - "5 +lon_0=-94.25 +x_0=800000 +y_0=100000 +datum=NAD83 +un"); - add_proj4text (p, 2, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Minnesota Central\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",47.05"); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_2\",45.61666666666667],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"latitude_of_origin\",45],PARAMETER[\"central_"); - add_srs_wkt (p, 10, - "meridian\",-94.25],PARAMETER[\"false_easting\",800000],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_northing\",100000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 13, - "ORTH],AUTHORITY[\"EPSG\",\"26992\"]]"); - p = add_epsg_def (filter, first, last, 26993, "epsg", 26993, - "NAD83 / Minnesota South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +datum="); - add_proj4text (p, 2, - "NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Minnesota South\",GEOGCS[\"NAD83\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); - add_srs_wkt (p, 2, - "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",45.2166"); - add_srs_wkt (p, 8, - "6666666667],PARAMETER[\"standard_parallel_2\",43.7833333"); - add_srs_wkt (p, 9, - "3333333],PARAMETER[\"latitude_of_origin\",43],PARAMETER["); - add_srs_wkt (p, 10, - "\"central_meridian\",-94],PARAMETER[\"false_easting\",80"); - add_srs_wkt (p, 11, - "0000],PARAMETER[\"false_northing\",100000],UNIT[\"metre\""); - add_srs_wkt (p, 12, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"26993\"]]"); - p = add_epsg_def (filter, first, last, 26994, "epsg", 26994, - "NAD83 / Mississippi East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9"); - add_proj4text (p, 1, - "9995 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Mississippi East\",GEOGCS[\"NAD83\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); - add_srs_wkt (p, 2, - "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",29.5],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-88.83333333333333],PARAMETER[\"sca"); - add_srs_wkt (p, 9, - "le_factor\",0.99995],PARAMETER[\"false_easting\",300000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"26994\"]]"); - p = add_epsg_def (filter, first, last, 26995, "epsg", 26995, - "NAD83 / Mississippi West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.9"); - add_proj4text (p, 1, - "9995 +x_0=700000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Mississippi West\",GEOGCS[\"NAD83\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); - add_srs_wkt (p, 2, - "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",29.5],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-90.33333333333333],PARAMETER[\"sca"); - add_srs_wkt (p, 9, - "le_factor\",0.99995],PARAMETER[\"false_easting\",700000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"26995\"]]"); - p = add_epsg_def (filter, first, last, 26996, "epsg", 26996, - "NAD83 / Missouri East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9"); - add_proj4text (p, 1, - "99933333 +x_0=250000 +y_0=0 +datum=NAD83 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Missouri East\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",35.83333333333334],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",-90.5],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.999933333],PARAMETER[\"false_easting\",250000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"26996\"]]"); - p = add_epsg_def (filter, first, last, 26997, "epsg", 26997, - "NAD83 / Missouri Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9"); - add_proj4text (p, 1, - "99933333 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Missouri Central\",GEOGCS[\"NAD83\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); - add_srs_wkt (p, 2, - "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",35.8333333333333"); - add_srs_wkt (p, 8, - "4],PARAMETER[\"central_meridian\",-92.5],PARAMETER[\"sca"); - add_srs_wkt (p, 9, - "le_factor\",0.999933333],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"26997\"]]"); - p = add_epsg_def (filter, first, last, 26998, "epsg", 26998, - "NAD83 / Missouri West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9"); - add_proj4text (p, 1, - "99941177 +x_0=850000 +y_0=0 +datum=NAD83 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Missouri West\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",36.16666666666666],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",-94.5],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.999941177],PARAMETER[\"false_easting\",850000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"26998\"]]"); - p = add_epsg_def (filter, first, last, 27037, "epsg", 27037, - "Nahrwan 1967 / UTM zone 37N"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +ellps=clrk80 +towgs84=-243,-192,477,"); - add_proj4text (p, 1, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Nahrwan 1967 / UTM zone 37N\",GEOGCS[\"Nahrwan "); - add_srs_wkt (p, 1, - "1967\",DATUM[\"Nahrwan_1967\",SPHEROID[\"Clarke 1880 (RG"); - add_srs_wkt (p, 2, - "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-243,-192,477,0,0,0,0],AUTHORITY[\"EPSG\",\"6270\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4270\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",39],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"27037\"]]"); - p = add_epsg_def (filter, first, last, 27038, "epsg", 27038, - "Nahrwan 1967 / UTM zone 38N"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +ellps=clrk80 +towgs84=-243,-192,477,"); - add_proj4text (p, 1, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Nahrwan 1967 / UTM zone 38N\",GEOGCS[\"Nahrwan "); - add_srs_wkt (p, 1, - "1967\",DATUM[\"Nahrwan_1967\",SPHEROID[\"Clarke 1880 (RG"); - add_srs_wkt (p, 2, - "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-243,-192,477,0,0,0,0],AUTHORITY[\"EPSG\",\"6270\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4270\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",45],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"27038\"]]"); - p = add_epsg_def (filter, first, last, 27039, "epsg", 27039, - "Nahrwan 1967 / UTM zone 39N"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=clrk80 +towgs84=-243,-192,477,"); - add_proj4text (p, 1, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Nahrwan 1967 / UTM zone 39N\",GEOGCS[\"Nahrwan "); - add_srs_wkt (p, 1, - "1967\",DATUM[\"Nahrwan_1967\",SPHEROID[\"Clarke 1880 (RG"); - add_srs_wkt (p, 2, - "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-243,-192,477,0,0,0,0],AUTHORITY[\"EPSG\",\"6270\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4270\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",51],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"27039\"]]"); - p = add_epsg_def (filter, first, last, 27040, "epsg", 27040, - "Nahrwan 1967 / UTM zone 40N"); - add_proj4text (p, 0, - "+proj=utm +zone=40 +ellps=clrk80 +towgs84=-243,-192,477,"); - add_proj4text (p, 1, - "0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Nahrwan 1967 / UTM zone 40N\",GEOGCS[\"Nahrwan "); - add_srs_wkt (p, 1, - "1967\",DATUM[\"Nahrwan_1967\",SPHEROID[\"Clarke 1880 (RG"); - add_srs_wkt (p, 2, - "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[-243,-192,477,0,0,0,0],AUTHORITY[\"EPSG\",\"6270\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4270\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",57],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"27040\"]]"); - p = add_epsg_def (filter, first, last, 27120, "epsg", 27120, - "Naparima 1972 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=intl +towgs84=-10,375,165,0,0,"); - add_proj4text (p, 1, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Naparima 1972 / UTM zone 20N\",GEOGCS[\"Naparim"); - add_srs_wkt (p, 1, - "a 1972\",DATUM[\"Naparima_1972\",SPHEROID[\"Internationa"); - add_srs_wkt (p, 2, - "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[-10,375,165,0,0,0,0],AUTHORITY[\"EPSG\",\"6271\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4271\"]],PROJECTION[\"Transverse"); - add_srs_wkt (p, 7, - "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-63],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"27120\"]]"); - p = add_epsg_def (filter, first, last, 27200, "epsg", 27200, - "NZGD49 / New Zealand Map Grid"); - add_proj4text (p, 0, - "+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=60231"); - add_proj4text (p, 1, - "50 +datum=nzgd49 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / New Zealand Map Grid\",GEOGCS[\"NZGD49"); - add_srs_wkt (p, 1, - "\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\""); - add_srs_wkt (p, 2, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "22\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.599"); - add_srs_wkt (p, 4, - "3],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4272\"]],PROJECTION[\"New_Zealand_Map_Grid\"],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"latitude_of_origin\",-41],PARAMETER[\"central_merid"); - add_srs_wkt (p, 9, - "ian\",173],PARAMETER[\"false_easting\",2510000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",6023150],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"27200\"]]"); - p = add_epsg_def (filter, first, last, 27205, "epsg", 27205, - "NZGD49 / Mount Eden Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-36.87986527777778 +lon_0=174.7643393"); - add_proj4text (p, 1, - "611111 +k=0.9999 +x_0=300000 +y_0=700000 +datum=nzgd49 +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Mount Eden Circuit\",GEOGCS[\"NZGD49\""); - add_srs_wkt (p, 1, - ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",-36.87986527777778],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",174.7643393611111],PARAMETER[\"scale_"); - add_srs_wkt (p, 10, - "factor\",0.9999],PARAMETER[\"false_easting\",300000],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_northing\",700000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\""); - add_srs_wkt (p, 13, - "Easting\",EAST],AUTHORITY[\"EPSG\",\"27205\"]]"); - p = add_epsg_def (filter, first, last, 27206, "epsg", 27206, - "NZGD49 / Bay of Plenty Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-37.76124980555556 +lon_0=176.4661972"); - add_proj4text (p, 1, - "5 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +n"); - add_proj4text (p, 2, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Bay of Plenty Circuit\",GEOGCS[\"NZGD4"); - add_srs_wkt (p, 1, - "9\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\""); - add_srs_wkt (p, 2, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "22\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.599"); - add_srs_wkt (p, 4, - "3],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",-37.76124980555556],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",176.46619725],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 10, - "r\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"f"); - add_srs_wkt (p, 11, - "alse_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\""); - add_srs_wkt (p, 13, - ",EAST],AUTHORITY[\"EPSG\",\"27206\"]]"); - p = add_epsg_def (filter, first, last, 27207, "epsg", 27207, - "NZGD49 / Poverty Bay Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-38.62470277777778 +lon_0=177.8856362"); - add_proj4text (p, 1, - "777778 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Poverty Bay Circuit\",GEOGCS[\"NZGD49\""); - add_srs_wkt (p, 1, - ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",-38.62470277777778],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",177.8856362777778],PARAMETER[\"scale_"); - add_srs_wkt (p, 10, - "factor\",1],PARAMETER[\"false_easting\",300000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",700000],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"East"); - add_srs_wkt (p, 13, - "ing\",EAST],AUTHORITY[\"EPSG\",\"27207\"]]"); - p = add_epsg_def (filter, first, last, 27208, "epsg", 27208, - "NZGD49 / Hawkes Bay Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-39.65092930555556 +lon_0=176.6736805"); - add_proj4text (p, 1, - "277778 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Hawkes Bay Circuit\",GEOGCS[\"NZGD49\""); - add_srs_wkt (p, 1, - ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",-39.65092930555556],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",176.6736805277778],PARAMETER[\"scale_"); - add_srs_wkt (p, 10, - "factor\",1],PARAMETER[\"false_easting\",300000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",700000],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"East"); - add_srs_wkt (p, 13, - "ing\",EAST],AUTHORITY[\"EPSG\",\"27208\"]]"); - p = add_epsg_def (filter, first, last, 27209, "epsg", 27209, - "NZGD49 / Taranaki Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-39.13575830555556 +lon_0=174.2280117"); - add_proj4text (p, 1, - "5 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +n"); - add_proj4text (p, 2, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Taranaki Circuit\",GEOGCS[\"NZGD49\",D"); - add_srs_wkt (p, 1, - "ATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Inte"); - add_srs_wkt (p, 2, - "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 3, - "]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",-39.13575830555556],PARAMETER[\"cen"); - add_srs_wkt (p, 9, - "tral_meridian\",174.22801175],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 10, - ",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EA"); - add_srs_wkt (p, 13, - "ST],AUTHORITY[\"EPSG\",\"27209\"]]"); - p = add_epsg_def (filter, first, last, 27210, "epsg", 27210, - "NZGD49 / Tuhirangi Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-39.51247038888889 +lon_0=175.6400368"); - add_proj4text (p, 1, - "055556 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Tuhirangi Circuit\",GEOGCS[\"NZGD49\","); - add_srs_wkt (p, 1, - "DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Int"); - add_srs_wkt (p, 2, - "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 3, - "]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",-39.51247038888889],PARAMETER[\"cen"); - add_srs_wkt (p, 9, - "tral_meridian\",175.6400368055556],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 10, - "tor\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\""); - add_srs_wkt (p, 13, - ",EAST],AUTHORITY[\"EPSG\",\"27210\"]]"); - p = add_epsg_def (filter, first, last, 27211, "epsg", 27211, - "NZGD49 / Wanganui Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-40.24194713888889 +lon_0=175.4880996"); - add_proj4text (p, 1, - "111111 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Wanganui Circuit\",GEOGCS[\"NZGD49\",D"); - add_srs_wkt (p, 1, - "ATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Inte"); - add_srs_wkt (p, 2, - "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 3, - "]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",-40.24194713888889],PARAMETER[\"cen"); - add_srs_wkt (p, 9, - "tral_meridian\",175.4880996111111],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 10, - "tor\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\""); - add_srs_wkt (p, 13, - ",EAST],AUTHORITY[\"EPSG\",\"27211\"]]"); - p = add_epsg_def (filter, first, last, 27212, "epsg", 27212, - "NZGD49 / Wairarapa Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-40.92553263888889 +lon_0=175.6473496"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Wairarapa Circuit\",GEOGCS[\"NZGD49\","); - add_srs_wkt (p, 1, - "DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Int"); - add_srs_wkt (p, 2, - "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 3, - "]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",-40.92553263888889],PARAMETER[\"cen"); - add_srs_wkt (p, 9, - "tral_meridian\",175.6473496666667],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 10, - "tor\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\""); - add_srs_wkt (p, 13, - ",EAST],AUTHORITY[\"EPSG\",\"27212\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_33.c b/src/spatialite/src/srsinit/epsg_inlined_33.c deleted file mode 100644 index 2f35125..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_33.c +++ /dev/null @@ -1,3614 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_33 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 27213, "epsg", 27213, - "NZGD49 / Wellington Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-41.30131963888888 +lon_0=174.7766231"); - add_proj4text (p, 1, - "111111 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Wellington Circuit\",GEOGCS[\"NZGD49\""); - add_srs_wkt (p, 1, - ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",-41.30131963888888],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",174.7766231111111],PARAMETER[\"scale_"); - add_srs_wkt (p, 10, - "factor\",1],PARAMETER[\"false_easting\",300000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",700000],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"East"); - add_srs_wkt (p, 13, - "ing\",EAST],AUTHORITY[\"EPSG\",\"27213\"]]"); - p = add_epsg_def (filter, first, last, 27214, "epsg", 27214, - "NZGD49 / Collingwood Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-40.71475905555556 +lon_0=172.6720465"); - add_proj4text (p, 1, - " +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Collingwood Circuit\",GEOGCS[\"NZGD49\""); - add_srs_wkt (p, 1, - ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",-40.71475905555556],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",172.6720465],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 10, - "\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"fa"); - add_srs_wkt (p, 11, - "lse_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 13, - "EAST],AUTHORITY[\"EPSG\",\"27214\"]]"); - p = add_epsg_def (filter, first, last, 27215, "epsg", 27215, - "NZGD49 / Nelson Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-41.27454472222222 +lon_0=173.2993168"); - add_proj4text (p, 1, - "055555 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Nelson Circuit\",GEOGCS[\"NZGD49\",DAT"); - add_srs_wkt (p, 1, - "UM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Intern"); - add_srs_wkt (p, 2, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "72\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",-41.27454472222222],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",173.2993168055555],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 10, - "or\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\""); - add_srs_wkt (p, 13, - ",EAST],AUTHORITY[\"EPSG\",\"27215\"]]"); - p = add_epsg_def (filter, first, last, 27216, "epsg", 27216, - "NZGD49 / Karamea Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-41.28991152777778 +lon_0=172.1090281"); - add_proj4text (p, 1, - "944444 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Karamea Circuit\",GEOGCS[\"NZGD49\",DA"); - add_srs_wkt (p, 1, - "TUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Inter"); - add_srs_wkt (p, 2, - "national 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",-41.28991152777778],PARAMETER[\"cen"); - add_srs_wkt (p, 9, - "tral_meridian\",172.1090281944444],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 10, - "tor\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\""); - add_srs_wkt (p, 13, - ",EAST],AUTHORITY[\"EPSG\",\"27216\"]]"); - p = add_epsg_def (filter, first, last, 27217, "epsg", 27217, - "NZGD49 / Buller Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-41.81080286111111 +lon_0=171.5812600"); - add_proj4text (p, 1, - "555556 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Buller Circuit\",GEOGCS[\"NZGD49\",DAT"); - add_srs_wkt (p, 1, - "UM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Intern"); - add_srs_wkt (p, 2, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "72\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",-41.81080286111111],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",171.5812600555556],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 10, - "or\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\""); - add_srs_wkt (p, 13, - ",EAST],AUTHORITY[\"EPSG\",\"27217\"]]"); - p = add_epsg_def (filter, first, last, 27218, "epsg", 27218, - "NZGD49 / Grey Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-42.33369427777778 +lon_0=171.5497713"); - add_proj4text (p, 1, - "055556 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Grey Circuit\",GEOGCS[\"NZGD49\",DATUM"); - add_srs_wkt (p, 1, - "[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4272"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",-42.33369427777778],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",171.5497713055556],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 10, - "\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"fa"); - add_srs_wkt (p, 11, - "lse_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 13, - "EAST],AUTHORITY[\"EPSG\",\"27218\"]]"); - p = add_epsg_def (filter, first, last, 27219, "epsg", 27219, - "NZGD49 / Amuri Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-42.68911658333333 +lon_0=173.0101333"); - add_proj4text (p, 1, - "888889 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Amuri Circuit\",GEOGCS[\"NZGD49\",DATU"); - add_srs_wkt (p, 1, - "M[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"427"); - add_srs_wkt (p, 7, - "2\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",-42.68911658333333],PARAMETER[\"centr"); - add_srs_wkt (p, 9, - "al_meridian\",173.0101333888889],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 10, - "r\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"f"); - add_srs_wkt (p, 11, - "alse_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\""); - add_srs_wkt (p, 13, - ",EAST],AUTHORITY[\"EPSG\",\"27219\"]]"); - p = add_epsg_def (filter, first, last, 27220, "epsg", 27220, - "NZGD49 / Marlborough Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-41.54448666666666 +lon_0=173.8020741"); - add_proj4text (p, 1, - "111111 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Marlborough Circuit\",GEOGCS[\"NZGD49\""); - add_srs_wkt (p, 1, - ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",-41.54448666666666],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",173.8020741111111],PARAMETER[\"scale_"); - add_srs_wkt (p, 10, - "factor\",1],PARAMETER[\"false_easting\",300000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",700000],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"East"); - add_srs_wkt (p, 13, - "ing\",EAST],AUTHORITY[\"EPSG\",\"27220\"]]"); - p = add_epsg_def (filter, first, last, 27221, "epsg", 27221, - "NZGD49 / Hokitika Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-42.88632236111111 +lon_0=170.9799935"); - add_proj4text (p, 1, - " +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Hokitika Circuit\",GEOGCS[\"NZGD49\",D"); - add_srs_wkt (p, 1, - "ATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Inte"); - add_srs_wkt (p, 2, - "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 3, - "]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",-42.88632236111111],PARAMETER[\"cen"); - add_srs_wkt (p, 9, - "tral_meridian\",170.9799935],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 10, - "1],PARAMETER[\"false_easting\",300000],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EAS"); - add_srs_wkt (p, 13, - "T],AUTHORITY[\"EPSG\",\"27221\"]]"); - p = add_epsg_def (filter, first, last, 27222, "epsg", 27222, - "NZGD49 / Okarito Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-43.11012813888889 +lon_0=170.2609258"); - add_proj4text (p, 1, - "333333 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Okarito Circuit\",GEOGCS[\"NZGD49\",DA"); - add_srs_wkt (p, 1, - "TUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Inter"); - add_srs_wkt (p, 2, - "national 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]"); - add_srs_wkt (p, 3, - "],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",-43.11012813888889],PARAMETER[\"cen"); - add_srs_wkt (p, 9, - "tral_meridian\",170.2609258333333],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 10, - "tor\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\""); - add_srs_wkt (p, 13, - ",EAST],AUTHORITY[\"EPSG\",\"27222\"]]"); - p = add_epsg_def (filter, first, last, 27223, "epsg", 27223, - "NZGD49 / Jacksons Bay Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-43.97780288888889 +lon_0=168.606267 "); - add_proj4text (p, 1, - "+k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Jacksons Bay Circuit\",GEOGCS[\"NZGD49"); - add_srs_wkt (p, 1, - "\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\""); - add_srs_wkt (p, 2, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "22\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.599"); - add_srs_wkt (p, 4, - "3],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",-43.97780288888889],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",168.606267],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 10, - ",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\",EA"); - add_srs_wkt (p, 13, - "ST],AUTHORITY[\"EPSG\",\"27223\"]]"); - p = add_epsg_def (filter, first, last, 27224, "epsg", 27224, - "NZGD49 / Mount Pleasant Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-43.59063758333333 +lon_0=172.7271935"); - add_proj4text (p, 1, - "833333 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Mount Pleasant Circuit\",GEOGCS[\"NZGD"); - add_srs_wkt (p, 1, - "49\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID["); - add_srs_wkt (p, 2, - "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7022\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5"); - add_srs_wkt (p, 4, - "993],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",-43.59063758333333],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"central_meridian\",172.7271935833333],PARAMETER[\"sc"); - add_srs_wkt (p, 10, - "ale_factor\",1],PARAMETER[\"false_easting\",300000],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_northing\",700000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\""); - add_srs_wkt (p, 13, - "Easting\",EAST],AUTHORITY[\"EPSG\",\"27224\"]]"); - p = add_epsg_def (filter, first, last, 27225, "epsg", 27225, - "NZGD49 / Gawler Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-43.74871155555556 +lon_0=171.3607484"); - add_proj4text (p, 1, - "722222 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Gawler Circuit\",GEOGCS[\"NZGD49\",DAT"); - add_srs_wkt (p, 1, - "UM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Intern"); - add_srs_wkt (p, 2, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "72\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",-43.74871155555556],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",171.3607484722222],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 10, - "or\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\""); - add_srs_wkt (p, 13, - ",EAST],AUTHORITY[\"EPSG\",\"27225\"]]"); - p = add_epsg_def (filter, first, last, 27226, "epsg", 27226, - "NZGD49 / Timaru Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-44.40222036111111 +lon_0=171.0572508"); - add_proj4text (p, 1, - "333333 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Timaru Circuit\",GEOGCS[\"NZGD49\",DAT"); - add_srs_wkt (p, 1, - "UM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Intern"); - add_srs_wkt (p, 2, - "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "72\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",-44.40222036111111],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",171.0572508333333],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 10, - "or\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 12, - "SG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\""); - add_srs_wkt (p, 13, - ",EAST],AUTHORITY[\"EPSG\",\"27226\"]]"); - p = add_epsg_def (filter, first, last, 27227, "epsg", 27227, - "NZGD49 / Lindis Peak Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-44.73526797222222 +lon_0=169.4677550"); - add_proj4text (p, 1, - "833333 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Lindis Peak Circuit\",GEOGCS[\"NZGD49\""); - add_srs_wkt (p, 1, - ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",-44.73526797222222],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",169.4677550833333],PARAMETER[\"scale_"); - add_srs_wkt (p, 10, - "factor\",1],PARAMETER[\"false_easting\",300000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",700000],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"East"); - add_srs_wkt (p, 13, - "ing\",EAST],AUTHORITY[\"EPSG\",\"27227\"]]"); - p = add_epsg_def (filter, first, last, 27228, "epsg", 27228, - "NZGD49 / Mount Nicholas Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-45.13290258333333 +lon_0=168.3986411"); - add_proj4text (p, 1, - "944444 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Mount Nicholas Circuit\",GEOGCS[\"NZGD"); - add_srs_wkt (p, 1, - "49\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID["); - add_srs_wkt (p, 2, - "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7022\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5"); - add_srs_wkt (p, 4, - "993],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",-45.13290258333333],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"central_meridian\",168.3986411944444],PARAMETER[\"sc"); - add_srs_wkt (p, 10, - "ale_factor\",1],PARAMETER[\"false_easting\",300000],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_northing\",700000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\""); - add_srs_wkt (p, 13, - "Easting\",EAST],AUTHORITY[\"EPSG\",\"27228\"]]"); - p = add_epsg_def (filter, first, last, 27229, "epsg", 27229, - "NZGD49 / Mount York Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-45.56372616666666 +lon_0=167.7388617"); - add_proj4text (p, 1, - "777778 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Mount York Circuit\",GEOGCS[\"NZGD49\""); - add_srs_wkt (p, 1, - ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",-45.56372616666666],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",167.7388617777778],PARAMETER[\"scale_"); - add_srs_wkt (p, 10, - "factor\",1],PARAMETER[\"false_easting\",300000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",700000],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"East"); - add_srs_wkt (p, 13, - "ing\",EAST],AUTHORITY[\"EPSG\",\"27229\"]]"); - p = add_epsg_def (filter, first, last, 27230, "epsg", 27230, - "NZGD49 / Observation Point Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-45.81619661111111 +lon_0=170.6285951"); - add_proj4text (p, 1, - "666667 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Observation Point Circuit\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "ZGD49\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7022\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-"); - add_srs_wkt (p, 4, - "4.5993],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 5, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 6, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",-45.81619661111111],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"central_meridian\",170.6285951666667],PARAMETER[\""); - add_srs_wkt (p, 10, - "scale_factor\",1],PARAMETER[\"false_easting\",300000],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_northing\",700000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS["); - add_srs_wkt (p, 13, - "\"Easting\",EAST],AUTHORITY[\"EPSG\",\"27230\"]]"); - p = add_epsg_def (filter, first, last, 27231, "epsg", 27231, - "NZGD49 / North Taieri Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-45.86151336111111 +lon_0=170.2825891"); - add_proj4text (p, 1, - "111111 +k=0.99996 +x_0=300000 +y_0=700000 +datum=nzgd49 "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / North Taieri Circuit\",GEOGCS[\"NZGD49"); - add_srs_wkt (p, 1, - "\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\""); - add_srs_wkt (p, 2, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "22\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.599"); - add_srs_wkt (p, 4, - "3],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",-45.86151336111111],PARAMETER[\""); - add_srs_wkt (p, 9, - "central_meridian\",170.2825891111111],PARAMETER[\"scale_"); - add_srs_wkt (p, 10, - "factor\",0.99996],PARAMETER[\"false_easting\",300000],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_northing\",700000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS["); - add_srs_wkt (p, 13, - "\"Easting\",EAST],AUTHORITY[\"EPSG\",\"27231\"]]"); - p = add_epsg_def (filter, first, last, 27232, "epsg", 27232, - "NZGD49 / Bluff Circuit"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-46.60000961111111 +lon_0=168.342872 "); - add_proj4text (p, 1, - "+k=1 +x_0=300002.66 +y_0=699999.58 +datum=nzgd49 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / Bluff Circuit\",GEOGCS[\"NZGD49\",DATU"); - add_srs_wkt (p, 1, - "M[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Interna"); - add_srs_wkt (p, 2, - "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); - add_srs_wkt (p, 3, - "TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"427"); - add_srs_wkt (p, 7, - "2\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",-46.60000961111111],PARAMETER[\"centr"); - add_srs_wkt (p, 9, - "al_meridian\",168.342872],PARAMETER[\"scale_factor\",1],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",300002.66],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_northing\",699999.58],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 12, - "\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\"Easting\","); - add_srs_wkt (p, 13, - "EAST],AUTHORITY[\"EPSG\",\"27232\"]]"); - p = add_epsg_def (filter, first, last, 27258, "epsg", 27258, - "NZGD49 / UTM zone 58S"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +datum=nzgd49 +units=m +no_def"); - add_proj4text (p, 1, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / UTM zone 58S\",GEOGCS[\"NZGD49\",DATUM"); - add_srs_wkt (p, 1, - "[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4272"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",165]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 12, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"27258\"]]"); - p = add_epsg_def (filter, first, last, 27259, "epsg", 27259, - "NZGD49 / UTM zone 59S"); - add_proj4text (p, 0, - "+proj=utm +zone=59 +south +datum=nzgd49 +units=m +no_def"); - add_proj4text (p, 1, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / UTM zone 59S\",GEOGCS[\"NZGD49\",DATUM"); - add_srs_wkt (p, 1, - "[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4272"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",171]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 12, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"27259\"]]"); - p = add_epsg_def (filter, first, last, 27260, "epsg", 27260, - "NZGD49 / UTM zone 60S"); - add_proj4text (p, 0, - "+proj=utm +zone=60 +south +datum=nzgd49 +units=m +no_def"); - add_proj4text (p, 1, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / UTM zone 60S\",GEOGCS[\"NZGD49\",DATUM"); - add_srs_wkt (p, 1, - "[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Internat"); - add_srs_wkt (p, 2, - "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4272"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",177]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 12, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"27260\"]]"); - p = add_epsg_def (filter, first, last, 27291, "epsg", 27291, - "NZGD49 / North Island Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-39 +lon_0=175.5 +k=1 +x_0=274319.524"); - add_proj4text (p, 1, - "3848086 +y_0=365759.3658464114 +datum=nzgd49 +to_meter=0"); - add_proj4text (p, 2, - ".9143984146160287 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / North Island Grid\",GEOGCS[\"NZGD49\","); - add_srs_wkt (p, 1, - "DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Int"); - add_srs_wkt (p, 2, - "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 3, - "]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",-39],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",175.5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",300000],PARAMETER[\"false_northing\",400000],U"); - add_srs_wkt (p, 11, - "NIT[\"British yard (Sears 1922)\",0.9143984146160287,AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"9040\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"27291\"]]"); - p = add_epsg_def (filter, first, last, 27292, "epsg", 27292, - "NZGD49 / South Island Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-44 +lon_0=171.5 +k=1 +x_0=457199.207"); - add_proj4text (p, 1, - "3080143 +y_0=457199.2073080143 +datum=nzgd49 +to_meter=0"); - add_proj4text (p, 2, - ".9143984146160287 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NZGD49 / South Island Grid\",GEOGCS[\"NZGD49\","); - add_srs_wkt (p, 1, - "DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Int"); - add_srs_wkt (p, 2, - "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 3, - "]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 5, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 6, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",-44],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",171.5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",500000],PARAMETER[\"false_northing\",500000],U"); - add_srs_wkt (p, 11, - "NIT[\"British yard (Sears 1922)\",0.9143984146160287,AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"9040\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"27292\"]]"); - p = add_epsg_def (filter, first, last, 27391, "epsg", 27391, - "NGO 1948 (Oslo) / NGO zone I"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=-4.666666666666667 +k=1 +x_"); - add_proj4text (p, 1, - "0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84="); - add_proj4text (p, 2, - "278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NGO 1948 (Oslo) / NGO zone I\",GEOGCS[\"NGO 194"); - add_srs_wkt (p, 1, - "8 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel Mod"); - add_srs_wkt (p, 2, - "ified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "5\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.72291666666"); - add_srs_wkt (p, 5, - "667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.0174"); - add_srs_wkt (p, 6, - "532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"E"); - add_srs_wkt (p, 7, - "PSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"latitude_of_origin\",58],PARAMETER[\"central_me"); - add_srs_wkt (p, 9, - "ridian\",-4.666666666666667],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 10, - "1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"x\",NORTH],AXIS[\"y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "27391\"]]"); - p = add_epsg_def (filter, first, last, 27392, "epsg", 27392, - "NGO 1948 (Oslo) / NGO zone II"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=-2.333333333333333 +k=1 +x_"); - add_proj4text (p, 1, - "0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84="); - add_proj4text (p, 2, - "278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NGO 1948 (Oslo) / NGO zone II\",GEOGCS[\"NGO 19"); - add_srs_wkt (p, 1, - "48 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel Mo"); - add_srs_wkt (p, 2, - "dified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "05\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.7229166666"); - add_srs_wkt (p, 5, - "6667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 6, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",58],PARAMETER[\"central_m"); - add_srs_wkt (p, 9, - "eridian\",-2.333333333333333],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 10, - ",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nor"); - add_srs_wkt (p, 11, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 12, - "],AXIS[\"x\",NORTH],AXIS[\"y\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"27392\"]]"); - p = add_epsg_def (filter, first, last, 27393, "epsg", 27393, - "NGO 1948 (Oslo) / NGO zone III"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=637"); - add_proj4text (p, 1, - "7492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7."); - add_proj4text (p, 2, - "889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NGO 1948 (Oslo) / NGO zone III\",GEOGCS[\"NGO 1"); - add_srs_wkt (p, 1, - "948 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel M"); - add_srs_wkt (p, 2, - "odified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "005\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.722916666"); - add_srs_wkt (p, 5, - "66667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",58],PARAMETER[\"central_m"); - add_srs_wkt (p, 9, - "eridian\",0],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"x\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"y\",EAST],AUTHORITY[\"EPSG\",\"27393\"]]"); - p = add_epsg_def (filter, first, last, 27394, "epsg", 27394, - "NGO 1948 (Oslo) / NGO zone IV"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=2.5 +k=1 +x_0=0 +y_0=0 +a=6"); - add_proj4text (p, 1, - "377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,"); - add_proj4text (p, 2, - "7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NGO 1948 (Oslo) / NGO zone IV\",GEOGCS[\"NGO 19"); - add_srs_wkt (p, 1, - "48 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel Mo"); - add_srs_wkt (p, 2, - "dified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "05\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.7229166666"); - add_srs_wkt (p, 5, - "6667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 6, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",58],PARAMETER[\"central_m"); - add_srs_wkt (p, 9, - "eridian\",2.5],PARAMETER[\"scale_factor\",1],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 11, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"x\",NOR"); - add_srs_wkt (p, 12, - "TH],AXIS[\"y\",EAST],AUTHORITY[\"EPSG\",\"27394\"]]"); - p = add_epsg_def (filter, first, last, 27395, "epsg", 27395, - "NGO 1948 (Oslo) / NGO zone V"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=6.166666666666667 +k=1 +x_0"); - add_proj4text (p, 1, - "=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=2"); - add_proj4text (p, 2, - "78.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +n"); - add_proj4text (p, 3, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NGO 1948 (Oslo) / NGO zone V\",GEOGCS[\"NGO 194"); - add_srs_wkt (p, 1, - "8 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel Mod"); - add_srs_wkt (p, 2, - "ified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "5\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.72291666666"); - add_srs_wkt (p, 5, - "667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.0174"); - add_srs_wkt (p, 6, - "532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"E"); - add_srs_wkt (p, 7, - "PSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"latitude_of_origin\",58],PARAMETER[\"central_me"); - add_srs_wkt (p, 9, - "ridian\",6.166666666666667],PARAMETER[\"scale_factor\",1"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_easting\",0],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 12, - "AXIS[\"x\",NORTH],AXIS[\"y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "27395\"]]"); - p = add_epsg_def (filter, first, last, 27396, "epsg", 27396, - "NGO 1948 (Oslo) / NGO zone VI"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=10.16666666666667 +k=1 +x_0"); - add_proj4text (p, 1, - "=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=2"); - add_proj4text (p, 2, - "78.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +n"); - add_proj4text (p, 3, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NGO 1948 (Oslo) / NGO zone VI\",GEOGCS[\"NGO 19"); - add_srs_wkt (p, 1, - "48 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel Mo"); - add_srs_wkt (p, 2, - "dified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "05\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.7229166666"); - add_srs_wkt (p, 5, - "6667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 6, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",58],PARAMETER[\"central_m"); - add_srs_wkt (p, 9, - "eridian\",10.16666666666667],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 10, - "1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"x\",NORTH],AXIS[\"y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "27396\"]]"); - p = add_epsg_def (filter, first, last, 27397, "epsg", 27397, - "NGO 1948 (Oslo) / NGO zone VII"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=14.16666666666667 +k=1 +x_0"); - add_proj4text (p, 1, - "=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=2"); - add_proj4text (p, 2, - "78.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +n"); - add_proj4text (p, 3, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NGO 1948 (Oslo) / NGO zone VII\",GEOGCS[\"NGO 1"); - add_srs_wkt (p, 1, - "948 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel M"); - add_srs_wkt (p, 2, - "odified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "005\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.722916666"); - add_srs_wkt (p, 5, - "66667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 6, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 7, - "EPSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_origin\",58],PARAMETER[\"central_m"); - add_srs_wkt (p, 9, - "eridian\",14.16666666666667],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 10, - "1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nort"); - add_srs_wkt (p, 11, - "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"x\",NORTH],AXIS[\"y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "27397\"]]"); - p = add_epsg_def (filter, first, last, 27398, "epsg", 27398, - "NGO 1948 (Oslo) / NGO zone VIII"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=58 +lon_0=18.33333333333333 +k=1 +x_0"); - add_proj4text (p, 1, - "=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=2"); - add_proj4text (p, 2, - "78.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +n"); - add_proj4text (p, 3, - "o_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NGO 1948 (Oslo) / NGO zone VIII\",GEOGCS[\"NGO "); - add_srs_wkt (p, 1, - "1948 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel "); - add_srs_wkt (p, 2, - "Modified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7005\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.72291666"); - add_srs_wkt (p, 5, - "666667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 6, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_origin\",58],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",18.33333333333333],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 10, - ",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nor"); - add_srs_wkt (p, 11, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 12, - "],AXIS[\"x\",NORTH],AXIS[\"y\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"27398\"]]"); - p = add_epsg_def (filter, first, last, 27429, "epsg", 27429, - "Datum 73 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=intl +towgs84=-223.237,110.193"); - add_proj4text (p, 1, - ",36.649,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Datum 73 / UTM zone 29N\",GEOGCS[\"Datum 73\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Datum_73\",SPHEROID[\"International 1924\",637838"); - add_srs_wkt (p, 2, - "8,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-223.237,110"); - add_srs_wkt (p, 3, - ".193,36.649,0,0,0,0],AUTHORITY[\"EPSG\",\"6274\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4274\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 7, - "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); - add_srs_wkt (p, 8, - "[\"central_meridian\",-9],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 9, - "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 11, - "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"27429\"]]"); - p = add_epsg_def (filter, first, last, 27492, "epsg", 27492, - "Datum 73 / Modified Portuguese Grid (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111"); - add_proj4text (p, 1, - "111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps="); - add_proj4text (p, 2, - "intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Datum 73 / Modified Portuguese Grid (deprecated"); - add_srs_wkt (p, 1, - ")\",GEOGCS[\"Datum 73\",DATUM[\"Datum_73\",SPHEROID[\"In"); - add_srs_wkt (p, 2, - "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[-223.237,110.193,36.649,0,0,0,0],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6274\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4274\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",39.66666666666666],PARAMETER[\"central_meri"); - add_srs_wkt (p, 9, - "dian\",-8.131906111111112],PARAMETER[\"scale_factor\",1]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_easting\",180.598],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "northing\",-86.99],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"27492\"]]"); - p = add_epsg_def (filter, first, last, 27493, "epsg", 27493, - "Datum 73 / Modified Portuguese Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111"); - add_proj4text (p, 1, - "111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps="); - add_proj4text (p, 2, - "intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Datum 73 / Modified Portuguese Grid\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Datum 73\",DATUM[\"Datum_73\",SPHEROID[\"International 1"); - add_srs_wkt (p, 2, - "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-223.237,110.193,36.649,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); - add_srs_wkt (p, 4, - "74\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4274\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",3"); - add_srs_wkt (p, 8, - "9.66666666666666],PARAMETER[\"central_meridian\",-8.1319"); - add_srs_wkt (p, 9, - "06111111112],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",180.598],PARAMETER[\"false_northing\",-86"); - add_srs_wkt (p, 11, - ".99],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); - add_srs_wkt (p, 12, - "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2749"); - add_srs_wkt (p, 13, - "3\"]]"); - p = add_epsg_def (filter, first, last, 27500, "epsg", 27500, - "ATF (Paris) / Nord de Guerre"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000"); - add_proj4text (p, 1, - "001 +lon_0=5.4 +k_0=0.99950908 +x_0=500000 +y_0=300000 +"); - add_proj4text (p, 2, - "a=6376523 +b=6355862.933255573 +pm=2.337208333333333 +un"); - add_proj4text (p, 3, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ATF (Paris) / Nord de Guerre\",GEOGCS[\"ATF (Pa"); - add_srs_wkt (p, 1, - "ris)\",DATUM[\"Ancienne_Triangulation_Francaise_Paris\","); - add_srs_wkt (p, 2, - "SPHEROID[\"Plessis 1817\",6376523,308.64,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7027\"]],AUTHORITY[\"EPSG\",\"6901\"]],PRIMEM[\"Pa"); - add_srs_wkt (p, 4, - "ris RGS\",2.337208333333333,AUTHORITY[\"EPSG\",\"8914\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"grad\",0.01570796326794897,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9105\"]],AUTHORITY[\"EPSG\",\"4901\"]],PROJECTION[\"Lamb"); - add_srs_wkt (p, 7, - "ert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",55],PARAMETER[\"central_meridian\",6],PARAMETER[\"sc"); - add_srs_wkt (p, 9, - "ale_factor\",0.99950908],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",300000],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"27500\"]]"); - p = add_epsg_def (filter, first, last, 27561, "epsg", 27561, - "NTF (Paris) / Lambert Nord France"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000"); - add_proj4text (p, 1, - "001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a"); - add_proj4text (p, 2, - "=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm="); - add_proj4text (p, 3, - "paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / Lambert Nord France\",GEOGCS[\"NT"); - add_srs_wkt (p, 1, - "F (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_Par"); - add_srs_wkt (p, 2, - "is\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.466021"); - add_srs_wkt (p, 3, - "2936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,3"); - add_srs_wkt (p, 4, - "20,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris"); - add_srs_wkt (p, 5, - "\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\""); - add_srs_wkt (p, 6, - ",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHO"); - add_srs_wkt (p, 7, - "RITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_"); - add_srs_wkt (p, 8, - "Conic_1SP\"],PARAMETER[\"latitude_of_origin\",55],PARAME"); - add_srs_wkt (p, 9, - "TER[\"central_meridian\",0],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 10, - ".999877341],PARAMETER[\"false_easting\",600000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",200000],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 13, - "UTHORITY[\"EPSG\",\"27561\"]]"); - p = add_epsg_def (filter, first, last, 27562, "epsg", 27562, - "NTF (Paris) / Lambert Centre France"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.999877"); - add_proj4text (p, 1, - "42 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towg"); - add_proj4text (p, 2, - "s84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / Lambert Centre France\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_P"); - add_srs_wkt (p, 2, - "aris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660"); - add_srs_wkt (p, 3, - "212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60"); - add_srs_wkt (p, 4, - ",320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Par"); - add_srs_wkt (p, 5, - "is\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"gra"); - add_srs_wkt (p, 6, - "d\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AU"); - add_srs_wkt (p, 7, - "THORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conform"); - add_srs_wkt (p, 8, - "al_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",52],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"central_meridian\",0],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 10, - ",0.99987742],PARAMETER[\"false_easting\",600000],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_northing\",200000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"27562\"]]"); - p = add_epsg_def (filter, first, last, 27563, "epsg", 27563, - "NTF (Paris) / Lambert Sud France"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000"); - add_proj4text (p, 1, - "001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a"); - add_proj4text (p, 2, - "=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm="); - add_proj4text (p, 3, - "paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / Lambert Sud France\",GEOGCS[\"NTF"); - add_srs_wkt (p, 1, - " (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_Pari"); - add_srs_wkt (p, 2, - "s\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212"); - add_srs_wkt (p, 3, - "936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,32"); - add_srs_wkt (p, 4, - "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris\""); - add_srs_wkt (p, 5, - ",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\","); - add_srs_wkt (p, 6, - "0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_C"); - add_srs_wkt (p, 8, - "onic_1SP\"],PARAMETER[\"latitude_of_origin\",49],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"central_meridian\",0],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 10, - "999877499],PARAMETER[\"false_easting\",600000],PARAMETER"); - add_srs_wkt (p, 11, - "[\"false_northing\",200000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 13, - "HORITY[\"EPSG\",\"27563\"]]"); - p = add_epsg_def (filter, first, last, 27564, "epsg", 27564, - "NTF (Paris) / Lambert Corse"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000"); - add_proj4text (p, 1, - "001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.36"); - add_proj4text (p, 2, - "9 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 "); - add_proj4text (p, 3, - "+pm=paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / Lambert Corse\",GEOGCS[\"NTF (Par"); - add_srs_wkt (p, 1, - "is)\",DATUM[\"Nouvelle_Triangulation_Francaise_Paris\",S"); - add_srs_wkt (p, 2, - "PHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.466021293626"); - add_srs_wkt (p, 3, - "9,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,320,0,0"); - add_srs_wkt (p, 4, - ",0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris\",2.3"); - add_srs_wkt (p, 5, - "3722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0.01"); - add_srs_wkt (p, 6, - "570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORITY["); - add_srs_wkt (p, 7, - "\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_Conic"); - add_srs_wkt (p, 8, - "_1SP\"],PARAMETER[\"latitude_of_origin\",46.85],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"central_meridian\",0],PARAMETER[\"scale_factor\",0.9"); - add_srs_wkt (p, 10, - "9994471],PARAMETER[\"false_easting\",234.358],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_northing\",185861.369],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"27564\"]]"); - p = add_epsg_def (filter, first, last, 27571, "epsg", 27571, - "NTF (Paris) / Lambert zone I"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000"); - add_proj4text (p, 1, - "001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +"); - add_proj4text (p, 2, - "a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm"); - add_proj4text (p, 3, - "=paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / Lambert zone I\",GEOGCS[\"NTF (Pa"); - add_srs_wkt (p, 1, - "ris)\",DATUM[\"Nouvelle_Triangulation_Francaise_Paris\","); - add_srs_wkt (p, 2, - "SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.46602129362"); - add_srs_wkt (p, 3, - "69,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,320,0,"); - add_srs_wkt (p, 4, - "0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris\",2."); - add_srs_wkt (p, 5, - "33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0.0"); - add_srs_wkt (p, 6, - "1570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_Coni"); - add_srs_wkt (p, 8, - "c_1SP\"],PARAMETER[\"latitude_of_origin\",55],PARAMETER["); - add_srs_wkt (p, 9, - "\"central_meridian\",0],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 10, - "877341],PARAMETER[\"false_easting\",600000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",1200000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 13, - "ORITY[\"EPSG\",\"27571\"]]"); - p = add_epsg_def (filter, first, last, 27572, "epsg", 27572, - "NTF (Paris) / Lambert zone II"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.999877"); - add_proj4text (p, 1, - "42 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +tow"); - add_proj4text (p, 2, - "gs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / Lambert zone II\",GEOGCS[\"NTF (P"); - add_srs_wkt (p, 1, - "aris)\",DATUM[\"Nouvelle_Triangulation_Francaise_Paris\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936"); - add_srs_wkt (p, 3, - "269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,320,0"); - add_srs_wkt (p, 4, - ",0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris\",2"); - add_srs_wkt (p, 5, - ".33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0."); - add_srs_wkt (p, 6, - "01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 8, - "ic_1SP\"],PARAMETER[\"latitude_of_origin\",52],PARAMETER"); - add_srs_wkt (p, 9, - "[\"central_meridian\",0],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 10, - "987742],PARAMETER[\"false_easting\",600000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",2200000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 13, - "ORITY[\"EPSG\",\"27572\"]]"); - p = add_epsg_def (filter, first, last, 27573, "epsg", 27573, - "NTF (Paris) / Lambert zone III"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000"); - add_proj4text (p, 1, - "001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +"); - add_proj4text (p, 2, - "a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm"); - add_proj4text (p, 3, - "=paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / Lambert zone III\",GEOGCS[\"NTF ("); - add_srs_wkt (p, 1, - "Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_Paris\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936"); - add_srs_wkt (p, 3, - "269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,320,0"); - add_srs_wkt (p, 4, - ",0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris\",2"); - add_srs_wkt (p, 5, - ".33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0."); - add_srs_wkt (p, 6, - "01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 8, - "ic_1SP\"],PARAMETER[\"latitude_of_origin\",49],PARAMETER"); - add_srs_wkt (p, 9, - "[\"central_meridian\",0],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 10, - "9877499],PARAMETER[\"false_easting\",600000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",3200000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); - add_srs_wkt (p, 13, - "ORITY[\"EPSG\",\"27573\"]]"); - p = add_epsg_def (filter, first, last, 27574, "epsg", 27574, - "NTF (Paris) / Lambert zone IV"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000"); - add_proj4text (p, 1, - "001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.3"); - add_proj4text (p, 2, - "69 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0"); - add_proj4text (p, 3, - " +pm=paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / Lambert zone IV\",GEOGCS[\"NTF (P"); - add_srs_wkt (p, 1, - "aris)\",DATUM[\"Nouvelle_Triangulation_Francaise_Paris\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936"); - add_srs_wkt (p, 3, - "269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,320,0"); - add_srs_wkt (p, 4, - ",0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris\",2"); - add_srs_wkt (p, 5, - ".33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0."); - add_srs_wkt (p, 6, - "01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORIT"); - add_srs_wkt (p, 7, - "Y[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 8, - "ic_1SP\"],PARAMETER[\"latitude_of_origin\",46.85],PARAME"); - add_srs_wkt (p, 9, - "TER[\"central_meridian\",0],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 10, - ".99994471],PARAMETER[\"false_easting\",234.358],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",4185861.369],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 13, - "TH],AUTHORITY[\"EPSG\",\"27574\"]]"); - p = add_epsg_def (filter, first, last, 27581, "epsg", 27581, - "NTF (Paris) / France I (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000"); - add_proj4text (p, 1, - "001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +"); - add_proj4text (p, 2, - "a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm"); - add_proj4text (p, 3, - "=paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / France I (deprecated)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_P"); - add_srs_wkt (p, 2, - "aris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660"); - add_srs_wkt (p, 3, - "212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60"); - add_srs_wkt (p, 4, - ",320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Par"); - add_srs_wkt (p, 5, - "is\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"gra"); - add_srs_wkt (p, 6, - "d\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AU"); - add_srs_wkt (p, 7, - "THORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conform"); - add_srs_wkt (p, 8, - "al_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",55],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"central_meridian\",0],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 10, - ",0.999877341],PARAMETER[\"false_easting\",600000],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_northing\",1200000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 13, - "],AUTHORITY[\"EPSG\",\"27581\"]]"); - p = add_epsg_def (filter, first, last, 27582, "epsg", 27582, - "NTF (Paris) / France II (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.999877"); - add_proj4text (p, 1, - "42 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +tow"); - add_proj4text (p, 2, - "gs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / France II (deprecated)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_P"); - add_srs_wkt (p, 2, - "aris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660"); - add_srs_wkt (p, 3, - "212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60"); - add_srs_wkt (p, 4, - ",320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Par"); - add_srs_wkt (p, 5, - "is\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"gra"); - add_srs_wkt (p, 6, - "d\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AU"); - add_srs_wkt (p, 7, - "THORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conform"); - add_srs_wkt (p, 8, - "al_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",52],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"central_meridian\",0],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 10, - ",0.99987742],PARAMETER[\"false_easting\",600000],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_northing\",2200000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"27582\"]]"); - p = add_epsg_def (filter, first, last, 27583, "epsg", 27583, - "NTF (Paris) / France III (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000"); - add_proj4text (p, 1, - "001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +"); - add_proj4text (p, 2, - "a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm"); - add_proj4text (p, 3, - "=paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / France III (deprecated)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise"); - add_srs_wkt (p, 2, - "_Paris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.46"); - add_srs_wkt (p, 3, - "60212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-"); - add_srs_wkt (p, 4, - "60,320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"P"); - add_srs_wkt (p, 5, - "aris\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"g"); - add_srs_wkt (p, 6, - "rad\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],"); - add_srs_wkt (p, 7, - "AUTHORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 8, - "rmal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",49],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"central_meridian\",0],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 10, - "r\",0.999877499],PARAMETER[\"false_easting\",600000],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_northing\",3200000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 13, - "RTH],AUTHORITY[\"EPSG\",\"27583\"]]"); - p = add_epsg_def (filter, first, last, 27584, "epsg", 27584, - "NTF (Paris) / France IV (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000"); - add_proj4text (p, 1, - "001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.3"); - add_proj4text (p, 2, - "69 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0"); - add_proj4text (p, 3, - " +pm=paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / France IV (deprecated)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_P"); - add_srs_wkt (p, 2, - "aris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660"); - add_srs_wkt (p, 3, - "212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60"); - add_srs_wkt (p, 4, - ",320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Par"); - add_srs_wkt (p, 5, - "is\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"gra"); - add_srs_wkt (p, 6, - "d\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AU"); - add_srs_wkt (p, 7, - "THORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conform"); - add_srs_wkt (p, 8, - "al_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",46.85],"); - add_srs_wkt (p, 9, - "PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 10, - "or\",0.99994471],PARAMETER[\"false_easting\",234.358],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_northing\",4185861.369],UNIT[\"metre\",1"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 13, - "\",NORTH],AUTHORITY[\"EPSG\",\"27584\"]]"); - p = add_epsg_def (filter, first, last, 27591, "epsg", 27591, - "NTF (Paris) / Nord France (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000"); - add_proj4text (p, 1, - "001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a"); - add_proj4text (p, 2, - "=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm="); - add_proj4text (p, 3, - "paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / Nord France (deprecated)\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Francais"); - add_srs_wkt (p, 2, - "e_Paris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4"); - add_srs_wkt (p, 3, - "660212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,"); - add_srs_wkt (p, 4, - "-60,320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\""); - add_srs_wkt (p, 5, - "Paris\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\""); - add_srs_wkt (p, 6, - "grad\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]]"); - add_srs_wkt (p, 7, - ",AUTHORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conf"); - add_srs_wkt (p, 8, - "ormal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",55],"); - add_srs_wkt (p, 9, - "PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 10, - "or\",0.999877341],PARAMETER[\"false_easting\",600000],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_northing\",200000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 13, - "RTH],AUTHORITY[\"EPSG\",\"27591\"]]"); - p = add_epsg_def (filter, first, last, 27592, "epsg", 27592, - "NTF (Paris) / Centre France (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.999877"); - add_proj4text (p, 1, - "42 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towg"); - add_proj4text (p, 2, - "s84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / Centre France (deprecated)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Franca"); - add_srs_wkt (p, 2, - "ise_Paris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293"); - add_srs_wkt (p, 3, - ".4660212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-16"); - add_srs_wkt (p, 4, - "8,-60,320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM["); - add_srs_wkt (p, 5, - "\"Paris\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT["); - add_srs_wkt (p, 6, - "\"grad\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\""); - add_srs_wkt (p, 7, - "]],AUTHORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Co"); - add_srs_wkt (p, 8, - "nformal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",52"); - add_srs_wkt (p, 9, - "],PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 10, - "ctor\",0.99987742],PARAMETER[\"false_easting\",600000],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_northing\",200000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 13, - "ORTH],AUTHORITY[\"EPSG\",\"27592\"]]"); - p = add_epsg_def (filter, first, last, 27593, "epsg", 27593, - "NTF (Paris) / Sud France (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000"); - add_proj4text (p, 1, - "001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a"); - add_proj4text (p, 2, - "=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm="); - add_proj4text (p, 3, - "paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / Sud France (deprecated)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise"); - add_srs_wkt (p, 2, - "_Paris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.46"); - add_srs_wkt (p, 3, - "60212936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-"); - add_srs_wkt (p, 4, - "60,320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"P"); - add_srs_wkt (p, 5, - "aris\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"g"); - add_srs_wkt (p, 6, - "rad\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],"); - add_srs_wkt (p, 7, - "AUTHORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 8, - "rmal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",49],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"central_meridian\",0],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 10, - "r\",0.999877499],PARAMETER[\"false_easting\",600000],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_northing\",200000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 13, - "TH],AUTHORITY[\"EPSG\",\"27593\"]]"); - p = add_epsg_def (filter, first, last, 27594, "epsg", 27594, - "NTF (Paris) / Corse (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000"); - add_proj4text (p, 1, - "001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.36"); - add_proj4text (p, 2, - "9 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 "); - add_proj4text (p, 3, - "+pm=paris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NTF (Paris) / Corse (deprecated)\",GEOGCS[\"NTF"); - add_srs_wkt (p, 1, - " (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_Pari"); - add_srs_wkt (p, 2, - "s\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212"); - add_srs_wkt (p, 3, - "936269,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,32"); - add_srs_wkt (p, 4, - "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris\""); - add_srs_wkt (p, 5, - ",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\","); - add_srs_wkt (p, 6, - "0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_C"); - add_srs_wkt (p, 8, - "onic_1SP\"],PARAMETER[\"latitude_of_origin\",46.85],PARA"); - add_srs_wkt (p, 9, - "METER[\"central_meridian\",0],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 10, - ",0.99994471],PARAMETER[\"false_easting\",234.358],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_northing\",185861.369],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 13, - "RTH],AUTHORITY[\"EPSG\",\"27594\"]]"); - p = add_epsg_def (filter, first, last, 27700, "epsg", 27700, - "OSGB 1936 / British National Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400"); - add_proj4text (p, 1, - "000 +y_0=-100000 +datum=OSGB36 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"OSGB 1936 / British National Grid\",GEOGCS[\"OS"); - add_srs_wkt (p, 1, - "GB 1936\",DATUM[\"OSGB_1936\",SPHEROID[\"Airy 1830\",637"); - add_srs_wkt (p, 2, - "7563.396,299.3249646,AUTHORITY[\"EPSG\",\"7001\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[375,-111,431,0,0,0,0],AUTHORITY[\"EPSG\",\"6277\"]],P"); - add_srs_wkt (p, 4, - "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); - add_srs_wkt (p, 5, - "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); - add_srs_wkt (p, 6, - "\"]],AUTHORITY[\"EPSG\",\"4277\"]],PROJECTION[\"Transver"); - add_srs_wkt (p, 7, - "se_Mercator\"],PARAMETER[\"latitude_of_origin\",49],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",-2],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9996012717],PARAMETER[\"false_easting\",400000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",-100000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"27700\"]]"); - p = add_epsg_def (filter, first, last, 28191, "epsg", 28191, - "Palestine 1923 / Palestine Grid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=31.73409694444445 +lon_0=35.2120805555"); - add_proj4text (p, 1, - "5556 +x_0=170251.555 +y_0=126867.909 +a=6378300.789 +b=6"); - add_proj4text (p, 2, - "356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.4"); - add_proj4text (p, 3, - "2,-11.821,1 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Palestine 1923 / Palestine Grid\",GEOGCS[\"Pale"); - add_srs_wkt (p, 1, - "stine 1923\",DATUM[\"Palestine_1923\",SPHEROID[\"Clarke "); - add_srs_wkt (p, 2, - "1880 (Benoit)\",6378300.789,293.4663155389811,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7010\"]],TOWGS84[-275.722,94.7824,340.894,-8."); - add_srs_wkt (p, 4, - "001,-4.42,-11.821,1],AUTHORITY[\"EPSG\",\"6281\"]],PRIME"); - add_srs_wkt (p, 5, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 6, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 7, - ",AUTHORITY[\"EPSG\",\"4281\"]],PROJECTION[\"Cassini_Sold"); - add_srs_wkt (p, 8, - "ner\"],PARAMETER[\"latitude_of_origin\",31.7340969444444"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"central_meridian\",35.21208055555556],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_easting\",170251.555],PARAMETER[\"false_n"); - add_srs_wkt (p, 11, - "orthing\",126867.909],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 13, - "TH],AUTHORITY[\"EPSG\",\"28191\"]]"); - p = add_epsg_def (filter, first, last, 28192, "epsg", 28192, - "Palestine 1923 / Palestine Belt"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31.73409694444445 +lon_0=35.212080555"); - add_proj4text (p, 1, - "55556 +k=1 +x_0=170251.555 +y_0=1126867.909 +a=6378300.7"); - add_proj4text (p, 2, - "89 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.0"); - add_proj4text (p, 3, - "01,-4.42,-11.821,1 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Palestine 1923 / Palestine Belt\",GEOGCS[\"Pale"); - add_srs_wkt (p, 1, - "stine 1923\",DATUM[\"Palestine_1923\",SPHEROID[\"Clarke "); - add_srs_wkt (p, 2, - "1880 (Benoit)\",6378300.789,293.4663155389811,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7010\"]],TOWGS84[-275.722,94.7824,340.894,-8."); - add_srs_wkt (p, 4, - "001,-4.42,-11.821,1],AUTHORITY[\"EPSG\",\"6281\"]],PRIME"); - add_srs_wkt (p, 5, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 6, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 7, - ",AUTHORITY[\"EPSG\",\"4281\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 8, - "ercator\"],PARAMETER[\"latitude_of_origin\",31.734096944"); - add_srs_wkt (p, 9, - "44445],PARAMETER[\"central_meridian\",35.21208055555556]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); - add_srs_wkt (p, 11, - "\",170251.555],PARAMETER[\"false_northing\",1126867.909]"); - add_srs_wkt (p, 12, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E"); - add_srs_wkt (p, 13, - "asting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 14, - "\",\"28192\"]]"); - p = add_epsg_def (filter, first, last, 28193, "epsg", 28193, - "Palestine 1923 / Israeli CS Grid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=31.73409694444445 +lon_0=35.2120805555"); - add_proj4text (p, 1, - "5556 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b="); - add_proj4text (p, 2, - "6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4."); - add_proj4text (p, 3, - "42,-11.821,1 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Palestine 1923 / Israeli CS Grid\",GEOGCS[\"Pal"); - add_srs_wkt (p, 1, - "estine 1923\",DATUM[\"Palestine_1923\",SPHEROID[\"Clarke"); - add_srs_wkt (p, 2, - " 1880 (Benoit)\",6378300.789,293.4663155389811,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7010\"]],TOWGS84[-275.722,94.7824,340.894,-8"); - add_srs_wkt (p, 4, - ".001,-4.42,-11.821,1],AUTHORITY[\"EPSG\",\"6281\"]],PRIM"); - add_srs_wkt (p, 5, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 6, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 7, - "],AUTHORITY[\"EPSG\",\"4281\"]],PROJECTION[\"Cassini_Sol"); - add_srs_wkt (p, 8, - "dner\"],PARAMETER[\"latitude_of_origin\",31.734096944444"); - add_srs_wkt (p, 9, - "45],PARAMETER[\"central_meridian\",35.21208055555556],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",170251.555],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "northing\",1126867.909],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); - add_srs_wkt (p, 13, - "NORTH],AUTHORITY[\"EPSG\",\"28193\"]]"); - p = add_epsg_def (filter, first, last, 28232, "epsg", 28232, - "Pointe Noire / UTM zone 32S"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +towgs"); - add_proj4text (p, 1, - "84=-148,51,-291,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pointe Noire / UTM zone 32S\",GEOGCS[\"Pointe N"); - add_srs_wkt (p, 1, - "oire\",DATUM[\"Congo_1960_Pointe_Noire\",SPHEROID[\"Clar"); - add_srs_wkt (p, 2, - "ke 1880 (IGN)\",6378249.2,293.4660212936269,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7011\"]],TOWGS84[-148,51,-291,0,0,0,0],AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"6282\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4282\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",9],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",500000],PARAMETER[\"false_northing\",10000000],UNIT[\"m"); - add_srs_wkt (p, 11, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\","); - add_srs_wkt (p, 12, - "EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2823"); - add_srs_wkt (p, 13, - "2\"]]"); - p = add_epsg_def (filter, first, last, 28348, "epsg", 28348, - "GDA94 / MGA zone 48"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / MGA zone 48\",GEOGCS[\"GDA94\",DATUM[\""); - add_srs_wkt (p, 1, - "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",105],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"28348\"]]"); - p = add_epsg_def (filter, first, last, 28349, "epsg", 28349, - "GDA94 / MGA zone 49"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / MGA zone 49\",GEOGCS[\"GDA94\",DATUM[\""); - add_srs_wkt (p, 1, - "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",111],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"28349\"]]"); - p = add_epsg_def (filter, first, last, 28350, "epsg", 28350, - "GDA94 / MGA zone 50"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / MGA zone 50\",GEOGCS[\"GDA94\",DATUM[\""); - add_srs_wkt (p, 1, - "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",117],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"28350\"]]"); - p = add_epsg_def (filter, first, last, 28351, "epsg", 28351, - "GDA94 / MGA zone 51"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / MGA zone 51\",GEOGCS[\"GDA94\",DATUM[\""); - add_srs_wkt (p, 1, - "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",123],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"28351\"]]"); - p = add_epsg_def (filter, first, last, 28352, "epsg", 28352, - "GDA94 / MGA zone 52"); - add_proj4text (p, 0, - "+proj=utm +zone=52 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / MGA zone 52\",GEOGCS[\"GDA94\",DATUM[\""); - add_srs_wkt (p, 1, - "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",129],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"28352\"]]"); - p = add_epsg_def (filter, first, last, 28353, "epsg", 28353, - "GDA94 / MGA zone 53"); - add_proj4text (p, 0, - "+proj=utm +zone=53 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / MGA zone 53\",GEOGCS[\"GDA94\",DATUM[\""); - add_srs_wkt (p, 1, - "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",135],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"28353\"]]"); - p = add_epsg_def (filter, first, last, 28354, "epsg", 28354, - "GDA94 / MGA zone 54"); - add_proj4text (p, 0, - "+proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / MGA zone 54\",GEOGCS[\"GDA94\",DATUM[\""); - add_srs_wkt (p, 1, - "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",141],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"28354\"]]"); - p = add_epsg_def (filter, first, last, 28355, "epsg", 28355, - "GDA94 / MGA zone 55"); - add_proj4text (p, 0, - "+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / MGA zone 55\",GEOGCS[\"GDA94\",DATUM[\""); - add_srs_wkt (p, 1, - "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",147],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"28355\"]]"); - p = add_epsg_def (filter, first, last, 28356, "epsg", 28356, - "GDA94 / MGA zone 56"); - add_proj4text (p, 0, - "+proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / MGA zone 56\",GEOGCS[\"GDA94\",DATUM[\""); - add_srs_wkt (p, 1, - "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",153],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"28356\"]]"); - p = add_epsg_def (filter, first, last, 28357, "epsg", 28357, - "GDA94 / MGA zone 57"); - add_proj4text (p, 0, - "+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / MGA zone 57\",GEOGCS[\"GDA94\",DATUM[\""); - add_srs_wkt (p, 1, - "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",159],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"28357\"]]"); - p = add_epsg_def (filter, first, last, 28358, "epsg", 28358, - "GDA94 / MGA zone 58"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"GDA94 / MGA zone 58\",GEOGCS[\"GDA94\",DATUM[\""); - add_srs_wkt (p, 1, - "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",165],PARAMETER[\"scale_factor\",0"); - add_srs_wkt (p, 9, - ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"28358\"]]"); - p = add_epsg_def (filter, first, last, 28402, "epsg", 28402, - "Pulkovo 1942 / Gauss-Kruger zone 2 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 2 (deprecated)"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.1"); - add_srs_wkt (p, 4, - "2],AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",2500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28402\"]]"); - p = add_epsg_def (filter, first, last, 28403, "epsg", 28403, - "Pulkovo 1942 / Gauss-Kruger zone 3 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 3 (deprecated)"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.1"); - add_srs_wkt (p, 4, - "2],AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",15],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); - add_srs_wkt (p, 10, - "asting\",3500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH"); - add_srs_wkt (p, 12, - "],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28403\"]]"); - p = add_epsg_def (filter, first, last, 28404, "epsg", 28404, - "Pulkovo 1942 / Gauss-Kruger zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 4\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",21],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",450"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"28404\"]]"); - p = add_epsg_def (filter, first, last, 28405, "epsg", 28405, - "Pulkovo 1942 / Gauss-Kruger zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 5\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",27],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",550"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"28405\"]]"); - p = add_epsg_def (filter, first, last, 28406, "epsg", 28406, - "Pulkovo 1942 / Gauss-Kruger zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 6\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",33],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",650"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"28406\"]]"); - p = add_epsg_def (filter, first, last, 28407, "epsg", 28407, - "Pulkovo 1942 / Gauss-Kruger zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 7\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",39],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",750"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"28407\"]]"); - p = add_epsg_def (filter, first, last, 28408, "epsg", 28408, - "Pulkovo 1942 / Gauss-Kruger zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 8\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",45],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",850"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"28408\"]]"); - p = add_epsg_def (filter, first, last, 28409, "epsg", 28409, - "Pulkovo 1942 / Gauss-Kruger zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 9\",GEOGCS[\"P"); - add_srs_wkt (p, 1, - "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); - add_srs_wkt (p, 2, - "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); - add_srs_wkt (p, 4, - "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); - add_srs_wkt (p, 5, - "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); - add_srs_wkt (p, 7, - "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",0],PARAMETER[\"central_meridian\",51],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",950"); - add_srs_wkt (p, 10, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",EAST],AUTHORITY[\"EPSG\",\"28409\"]]"); - p = add_epsg_def (filter, first, last, 28410, "epsg", 28410, - "Pulkovo 1942 / Gauss-Kruger zone 10"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 10\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",57],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",10"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28410\"]]"); - p = add_epsg_def (filter, first, last, 28411, "epsg", 28411, - "Pulkovo 1942 / Gauss-Kruger zone 11"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 11\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",63],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",11"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28411\"]]"); - p = add_epsg_def (filter, first, last, 28412, "epsg", 28412, - "Pulkovo 1942 / Gauss-Kruger zone 12"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 12\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",69],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",12"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28412\"]]"); - p = add_epsg_def (filter, first, last, 28413, "epsg", 28413, - "Pulkovo 1942 / Gauss-Kruger zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 13\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",75],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",13"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28413\"]]"); - p = add_epsg_def (filter, first, last, 28414, "epsg", 28414, - "Pulkovo 1942 / Gauss-Kruger zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 14\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",81],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",14"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28414\"]]"); - p = add_epsg_def (filter, first, last, 28415, "epsg", 28415, - "Pulkovo 1942 / Gauss-Kruger zone 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 15\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",87],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",15"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28415\"]]"); - p = add_epsg_def (filter, first, last, 28416, "epsg", 28416, - "Pulkovo 1942 / Gauss-Kruger zone 16"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 16\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",93],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",16"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28416\"]]"); - p = add_epsg_def (filter, first, last, 28417, "epsg", 28417, - "Pulkovo 1942 / Gauss-Kruger zone 17"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 17\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",99],PARA"); - add_srs_wkt (p, 9, - "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",17"); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28417\"]]"); - p = add_epsg_def (filter, first, last, 28418, "epsg", 28418, - "Pulkovo 1942 / Gauss-Kruger zone 18"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 18\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",105],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",1"); - add_srs_wkt (p, 10, - "8500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28418\"]]"); - p = add_epsg_def (filter, first, last, 28419, "epsg", 28419, - "Pulkovo 1942 / Gauss-Kruger zone 19"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 19\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",111],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",1"); - add_srs_wkt (p, 10, - "9500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28419\"]]"); - p = add_epsg_def (filter, first, last, 28420, "epsg", 28420, - "Pulkovo 1942 / Gauss-Kruger zone 20"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 20\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",117],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); - add_srs_wkt (p, 10, - "0500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28420\"]]"); - p = add_epsg_def (filter, first, last, 28421, "epsg", 28421, - "Pulkovo 1942 / Gauss-Kruger zone 21"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 21\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",123],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); - add_srs_wkt (p, 10, - "1500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28421\"]]"); - p = add_epsg_def (filter, first, last, 28422, "epsg", 28422, - "Pulkovo 1942 / Gauss-Kruger zone 22"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 22\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",129],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); - add_srs_wkt (p, 10, - "2500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28422\"]]"); - p = add_epsg_def (filter, first, last, 28423, "epsg", 28423, - "Pulkovo 1942 / Gauss-Kruger zone 23"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 23\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",135],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); - add_srs_wkt (p, 10, - "3500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28423\"]]"); - p = add_epsg_def (filter, first, last, 28424, "epsg", 28424, - "Pulkovo 1942 / Gauss-Kruger zone 24"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 24\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",141],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); - add_srs_wkt (p, 10, - "4500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28424\"]]"); - p = add_epsg_def (filter, first, last, 28425, "epsg", 28425, - "Pulkovo 1942 / Gauss-Kruger zone 25"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 25\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",147],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); - add_srs_wkt (p, 10, - "5500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28425\"]]"); - p = add_epsg_def (filter, first, last, 28426, "epsg", 28426, - "Pulkovo 1942 / Gauss-Kruger zone 26"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 26\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",153],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); - add_srs_wkt (p, 10, - "6500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28426\"]]"); - p = add_epsg_def (filter, first, last, 28427, "epsg", 28427, - "Pulkovo 1942 / Gauss-Kruger zone 27"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 27\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",159],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); - add_srs_wkt (p, 10, - "7500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28427\"]]"); - p = add_epsg_def (filter, first, last, 28428, "epsg", 28428, - "Pulkovo 1942 / Gauss-Kruger zone 28"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 28\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",165],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); - add_srs_wkt (p, 10, - "8500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28428\"]]"); - p = add_epsg_def (filter, first, last, 28429, "epsg", 28429, - "Pulkovo 1942 / Gauss-Kruger zone 29"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 29\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",171],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); - add_srs_wkt (p, 10, - "9500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28429\"]]"); - p = add_epsg_def (filter, first, last, 28430, "epsg", 28430, - "Pulkovo 1942 / Gauss-Kruger zone 30"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0="); - add_proj4text (p, 1, - "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); - add_proj4text (p, 2, - ",-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 30\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",177],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",3"); - add_srs_wkt (p, 10, - "0500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"28430\"]]"); - p = add_epsg_def (filter, first, last, 28431, "epsg", 28431, - "Pulkovo 1942 / Gauss-Kruger zone 31"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.8"); - add_proj4text (p, 2, - "2,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 31\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",-177],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "31500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"28431\"]]"); - p = add_epsg_def (filter, first, last, 28432, "epsg", 28432, - "Pulkovo 1942 / Gauss-Kruger zone 32"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.8"); - add_proj4text (p, 2, - "2,-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 32\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); - add_srs_wkt (p, 2, - "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",0],PARAMETER[\"central_meridian\",-171],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "32500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 11, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",EAST],AUTHORITY[\"EPSG\",\"28432\"]]"); - p = add_epsg_def (filter, first, last, 28462, "epsg", 28462, - "Pulkovo 1942 / Gauss-Kruger 2N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +e"); - add_proj4text (p, 1, - "llps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0."); - add_proj4text (p, 2, - "12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 2N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 11, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28462\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_34.c b/src/spatialite/src/srsinit/epsg_inlined_34.c deleted file mode 100644 index a059653..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_34.c +++ /dev/null @@ -1,3486 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_34 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 28463, "epsg", 28463, - "Pulkovo 1942 / Gauss-Kruger 3N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 3N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28463\"]]"); - p = add_epsg_def (filter, first, last, 28464, "epsg", 28464, - "Pulkovo 1942 / Gauss-Kruger 4N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 4N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28464\"]]"); - p = add_epsg_def (filter, first, last, 28465, "epsg", 28465, - "Pulkovo 1942 / Gauss-Kruger 5N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 5N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28465\"]]"); - p = add_epsg_def (filter, first, last, 28466, "epsg", 28466, - "Pulkovo 1942 / Gauss-Kruger 6N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 6N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28466\"]]"); - p = add_epsg_def (filter, first, last, 28467, "epsg", 28467, - "Pulkovo 1942 / Gauss-Kruger 7N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 7N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28467\"]]"); - p = add_epsg_def (filter, first, last, 28468, "epsg", 28468, - "Pulkovo 1942 / Gauss-Kruger 8N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 8N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28468\"]]"); - p = add_epsg_def (filter, first, last, 28469, "epsg", 28469, - "Pulkovo 1942 / Gauss-Kruger 9N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 9N (deprecated)\",G"); - add_srs_wkt (p, 1, - "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28469\"]]"); - p = add_epsg_def (filter, first, last, 28470, "epsg", 28470, - "Pulkovo 1942 / Gauss-Kruger 10N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 10N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28470\"]]"); - p = add_epsg_def (filter, first, last, 28471, "epsg", 28471, - "Pulkovo 1942 / Gauss-Kruger 11N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 11N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28471\"]]"); - p = add_epsg_def (filter, first, last, 28472, "epsg", 28472, - "Pulkovo 1942 / Gauss-Kruger 12N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 12N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28472\"]]"); - p = add_epsg_def (filter, first, last, 28473, "epsg", 28473, - "Pulkovo 1942 / Gauss-Kruger 13N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 13N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); - add_srs_wkt (p, 9, - "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28473\"]]"); - p = add_epsg_def (filter, first, last, 28474, "epsg", 28474, - "Pulkovo 1942 / Gauss-Kruger 14N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 14N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); - add_srs_wkt (p, 9, - "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28474\"]]"); - p = add_epsg_def (filter, first, last, 28475, "epsg", 28475, - "Pulkovo 1942 / Gauss-Kruger 15N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 15N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28475\"]]"); - p = add_epsg_def (filter, first, last, 28476, "epsg", 28476, - "Pulkovo 1942 / Gauss-Kruger 16N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 16N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28476\"]]"); - p = add_epsg_def (filter, first, last, 28477, "epsg", 28477, - "Pulkovo 1942 / Gauss-Kruger 17N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); - add_proj4text (p, 2, - ".12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 17N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); - add_srs_wkt (p, 9, - "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); - add_srs_wkt (p, 10, - "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28477\"]]"); - p = add_epsg_def (filter, first, last, 28478, "epsg", 28478, - "Pulkovo 1942 / Gauss-Kruger 18N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 18N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "05],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28478\"]]"); - p = add_epsg_def (filter, first, last, 28479, "epsg", 28479, - "Pulkovo 1942 / Gauss-Kruger 19N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 19N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "11],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28479\"]]"); - p = add_epsg_def (filter, first, last, 28480, "epsg", 28480, - "Pulkovo 1942 / Gauss-Kruger 20N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 20N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "17],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28480\"]]"); - p = add_epsg_def (filter, first, last, 28481, "epsg", 28481, - "Pulkovo 1942 / Gauss-Kruger 21N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 21N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "23],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28481\"]]"); - p = add_epsg_def (filter, first, last, 28482, "epsg", 28482, - "Pulkovo 1942 / Gauss-Kruger 22N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 22N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "29],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28482\"]]"); - p = add_epsg_def (filter, first, last, 28483, "epsg", 28483, - "Pulkovo 1942 / Gauss-Kruger 23N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 23N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "35],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28483\"]]"); - p = add_epsg_def (filter, first, last, 28484, "epsg", 28484, - "Pulkovo 1942 / Gauss-Kruger 24N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 24N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "41],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28484\"]]"); - p = add_epsg_def (filter, first, last, 28485, "epsg", 28485, - "Pulkovo 1942 / Gauss-Kruger 25N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 25N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "47],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28485\"]]"); - p = add_epsg_def (filter, first, last, 28486, "epsg", 28486, - "Pulkovo 1942 / Gauss-Kruger 26N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 26N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "53],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28486\"]]"); - p = add_epsg_def (filter, first, last, 28487, "epsg", 28487, - "Pulkovo 1942 / Gauss-Kruger 27N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 27N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "59],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28487\"]]"); - p = add_epsg_def (filter, first, last, 28488, "epsg", 28488, - "Pulkovo 1942 / Gauss-Kruger 28N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 28N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "65],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28488\"]]"); - p = add_epsg_def (filter, first, last, 28489, "epsg", 28489, - "Pulkovo 1942 / Gauss-Kruger 29N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 29N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "71],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28489\"]]"); - p = add_epsg_def (filter, first, last, 28490, "epsg", 28490, - "Pulkovo 1942 / Gauss-Kruger 30N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 "); - add_proj4text (p, 1, - "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); - add_proj4text (p, 2, - "0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 30N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "77],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],A"); - add_srs_wkt (p, 12, - "XIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28490\"]]"); - p = add_epsg_def (filter, first, last, 28491, "epsg", 28491, - "Pulkovo 1942 / Gauss-Kruger 31N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 31N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "177],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28491\"]]"); - p = add_epsg_def (filter, first, last, 28492, "epsg", 28492, - "Pulkovo 1942 / Gauss-Kruger 32N (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0"); - add_proj4text (p, 1, - " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); - add_proj4text (p, 2, - "-0.12 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 32N (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 9, - "171],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); - add_srs_wkt (p, 10, - "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 11, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],"); - add_srs_wkt (p, 12, - "AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"28492\"]]"); - p = add_epsg_def (filter, first, last, 28600, "epsg", 28600, - "Qatar 1974 / Qatar National Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.9"); - add_proj4text (p, 1, - "9999 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-128.1"); - add_proj4text (p, 2, - "6,-282.42,21.93,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Qatar 1974 / Qatar National Grid\",GEOGCS[\"Qat"); - add_srs_wkt (p, 1, - "ar 1974\",DATUM[\"Qatar_1974\",SPHEROID[\"International "); - add_srs_wkt (p, 2, - "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-128.16,-282.42,21.93,0,0,0,0],AUTHORITY[\"EPSG\",\"628"); - add_srs_wkt (p, 4, - "5\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4285\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",2"); - add_srs_wkt (p, 8, - "4.45],PARAMETER[\"central_meridian\",51.21666666666667],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",0.99999],PARAMETER[\"false_ea"); - add_srs_wkt (p, 10, - "sting\",200000],PARAMETER[\"false_northing\",300000],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "28600\"]]"); - p = add_epsg_def (filter, first, last, 28991, "epsg", 28991, - "Amersfoort / RD Old"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.387638888"); - add_proj4text (p, 1, - "88889 +k=0.9999079 +x_0=0 +y_0=0 +ellps=bessel +towgs84="); - add_proj4text (p, 2, - "565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.072"); - add_proj4text (p, 3, - "5 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Amersfoort / RD Old\",GEOGCS[\"Amersfoort\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Amersfoort\",SPHEROID[\"Bessel 1841\",6377397.155,2"); - add_srs_wkt (p, 2, - "99.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[565.417"); - add_srs_wkt (p, 3, - ",50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6289\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"428"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",52.15616055555555],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",5.38763888888889],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 10, - "r\",0.9999079],PARAMETER[\"false_easting\",0],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 12, - ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 13, - "[\"EPSG\",\"28991\"]]"); - p = add_epsg_def (filter, first, last, 28992, "epsg", 28992, - "Amersfoort / RD New"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.387638888"); - add_proj4text (p, 1, - "88889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel"); - add_proj4text (p, 2, - " +towgs84=565.417,50.3319,465.552,-0.398957,0.343988,-1."); - add_proj4text (p, 3, - "8774,4.0725 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Amersfoort / RD New\",GEOGCS[\"Amersfoort\",DAT"); - add_srs_wkt (p, 1, - "UM[\"Amersfoort\",SPHEROID[\"Bessel 1841\",6377397.155,2"); - add_srs_wkt (p, 2, - "99.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[565.417"); - add_srs_wkt (p, 3, - ",50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725],AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"6289\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); - add_srs_wkt (p, 6, - "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"428"); - add_srs_wkt (p, 7, - "9\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",52.15616055555555],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",5.38763888888889],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 10, - "r\",0.9999079],PARAMETER[\"false_easting\",155000],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_northing\",463000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 12, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); - add_srs_wkt (p, 13, - "],AUTHORITY[\"EPSG\",\"28992\"]]"); - p = add_epsg_def (filter, first, last, 29100, "epsg", 29100, - "SAD69 / Brazil Polyconic (deprecated)"); - add_proj4text (p, 0, - "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=1000000"); - add_proj4text (p, 1, - "0 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / Brazil Polyconic (deprecated)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"SAD69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\""); - add_srs_wkt (p, 2, - "GRS 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "36\"]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "291\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Polyconic\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",-54],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 9, - ",5000000],PARAMETER[\"false_northing\",10000000],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); - add_srs_wkt (p, 11, - ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"29100\"]]"); - p = add_epsg_def (filter, first, last, 29101, "epsg", 29101, - "SAD69 / Brazil Polyconic"); - add_proj4text (p, 0, - "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=1000000"); - add_proj4text (p, 1, - "0 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / Brazil Polyconic\",GEOGCS[\"SAD69\",DAT"); - add_srs_wkt (p, 1, - "UM[\"South_American_Datum_1969\",SPHEROID[\"GRS 1967 Mod"); - add_srs_wkt (p, 2, - "ified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PR"); - add_srs_wkt (p, 4, - "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); - add_srs_wkt (p, 5, - "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); - add_srs_wkt (p, 6, - "]],AUTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Polyconic\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-54],PARAMETER[\"false_easting\",5000000],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 10, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"29101\"]]"); - p = add_epsg_def (filter, first, last, 29118, "epsg", 29118, - "SAD69 / UTM zone 18N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0"); - add_proj4text (p, 1, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 18N (deprecated)\",GEOGCS[\"SA"); - add_srs_wkt (p, 1, - "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-75],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"29118\"]]"); - p = add_epsg_def (filter, first, last, 29119, "epsg", 29119, - "SAD69 / UTM zone 19N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0"); - add_proj4text (p, 1, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 19N (deprecated)\",GEOGCS[\"SA"); - add_srs_wkt (p, 1, - "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"29119\"]]"); - p = add_epsg_def (filter, first, last, 29120, "epsg", 29120, - "SAD69 / UTM zone 20N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0"); - add_proj4text (p, 1, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 20N (deprecated)\",GEOGCS[\"SA"); - add_srs_wkt (p, 1, - "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"29120\"]]"); - p = add_epsg_def (filter, first, last, 29121, "epsg", 29121, - "SAD69 / UTM zone 21N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0"); - add_proj4text (p, 1, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 21N (deprecated)\",GEOGCS[\"SA"); - add_srs_wkt (p, 1, - "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"29121\"]]"); - p = add_epsg_def (filter, first, last, 29122, "epsg", 29122, - "SAD69 / UTM zone 22N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0"); - add_proj4text (p, 1, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 22N (deprecated)\",GEOGCS[\"SA"); - add_srs_wkt (p, 1, - "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-51],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"29122\"]]"); - p = add_epsg_def (filter, first, last, 29168, "epsg", 29168, - "SAD69 / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=aust_SA +towgs84=-57,1,-41,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 18N\",GEOGCS[\"SAD69\",DATUM[\""); - add_srs_wkt (p, 1, - "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); - add_srs_wkt (p, 2, - "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-75],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"29168\"]]"); - p = add_epsg_def (filter, first, last, 29169, "epsg", 29169, - "SAD69 / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +ellps=aust_SA +towgs84=-57,1,-41,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 19N\",GEOGCS[\"SAD69\",DATUM[\""); - add_srs_wkt (p, 1, - "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); - add_srs_wkt (p, 2, - "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-69],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"29169\"]]"); - p = add_epsg_def (filter, first, last, 29170, "epsg", 29170, - "SAD69 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=aust_SA +towgs84=-57,1,-41,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 20N\",GEOGCS[\"SAD69\",DATUM[\""); - add_srs_wkt (p, 1, - "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); - add_srs_wkt (p, 2, - "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-63],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"29170\"]]"); - p = add_epsg_def (filter, first, last, 29171, "epsg", 29171, - "SAD69 / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=aust_SA +towgs84=-57,1,-41,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 21N\",GEOGCS[\"SAD69\",DATUM[\""); - add_srs_wkt (p, 1, - "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); - add_srs_wkt (p, 2, - "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-57],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"29171\"]]"); - p = add_epsg_def (filter, first, last, 29172, "epsg", 29172, - "SAD69 / UTM zone 22N"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +ellps=aust_SA +towgs84=-57,1,-41,0,0"); - add_proj4text (p, 1, - ",0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 22N\",GEOGCS[\"SAD69\",DATUM[\""); - add_srs_wkt (p, 1, - "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); - add_srs_wkt (p, 2, - "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-51],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"29172\"]]"); - p = add_epsg_def (filter, first, last, 29177, "epsg", 29177, - "SAD69 / UTM zone 17S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +south +ellps=GRS67 +towgs84=-57,1,-4"); - add_proj4text (p, 1, - "1,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 17S (deprecated)\",GEOGCS[\"SA"); - add_srs_wkt (p, 1, - "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-81],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29177\"]]"); - p = add_epsg_def (filter, first, last, 29178, "epsg", 29178, - "SAD69 / UTM zone 18S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +south +ellps=GRS67 +towgs84=-57,1,-4"); - add_proj4text (p, 1, - "1,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 18S (deprecated)\",GEOGCS[\"SA"); - add_srs_wkt (p, 1, - "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-75],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29178\"]]"); - p = add_epsg_def (filter, first, last, 29179, "epsg", 29179, - "SAD69 / UTM zone 19S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +south +ellps=GRS67 +towgs84=-57,1,-4"); - add_proj4text (p, 1, - "1,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 19S (deprecated)\",GEOGCS[\"SA"); - add_srs_wkt (p, 1, - "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29179\"]]"); - p = add_epsg_def (filter, first, last, 29180, "epsg", 29180, - "SAD69 / UTM zone 20S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +south +ellps=GRS67 +towgs84=-57,1,-4"); - add_proj4text (p, 1, - "1,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 20S (deprecated)\",GEOGCS[\"SA"); - add_srs_wkt (p, 1, - "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29180\"]]"); - p = add_epsg_def (filter, first, last, 29181, "epsg", 29181, - "SAD69 / UTM zone 21S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +south +ellps=GRS67 +towgs84=-57,1,-4"); - add_proj4text (p, 1, - "1,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 21S (deprecated)\",GEOGCS[\"SA"); - add_srs_wkt (p, 1, - "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29181\"]]"); - p = add_epsg_def (filter, first, last, 29182, "epsg", 29182, - "SAD69 / UTM zone 22S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +south +ellps=GRS67 +towgs84=-57,1,-4"); - add_proj4text (p, 1, - "1,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 22S (deprecated)\",GEOGCS[\"SA"); - add_srs_wkt (p, 1, - "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-51],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29182\"]]"); - p = add_epsg_def (filter, first, last, 29183, "epsg", 29183, - "SAD69 / UTM zone 23S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +south +ellps=GRS67 +towgs84=-57,1,-4"); - add_proj4text (p, 1, - "1,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 23S (deprecated)\",GEOGCS[\"SA"); - add_srs_wkt (p, 1, - "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-45],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29183\"]]"); - p = add_epsg_def (filter, first, last, 29184, "epsg", 29184, - "SAD69 / UTM zone 24S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=24 +south +ellps=GRS67 +towgs84=-57,1,-4"); - add_proj4text (p, 1, - "1,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 24S (deprecated)\",GEOGCS[\"SA"); - add_srs_wkt (p, 1, - "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-39],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29184\"]]"); - p = add_epsg_def (filter, first, last, 29185, "epsg", 29185, - "SAD69 / UTM zone 25S (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +south +ellps=GRS67 +towgs84=-57,1,-4"); - add_proj4text (p, 1, - "1,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 25S (deprecated)\",GEOGCS[\"SA"); - add_srs_wkt (p, 1, - "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 8, - "ARAMETER[\"central_meridian\",-33],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29185\"]]"); - p = add_epsg_def (filter, first, last, 29187, "epsg", 29187, - "SAD69 / UTM zone 17S"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +south +ellps=aust_SA +towgs84=-57,1,"); - add_proj4text (p, 1, - "-41,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 17S\",GEOGCS[\"SAD69\",DATUM[\""); - add_srs_wkt (p, 1, - "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); - add_srs_wkt (p, 2, - "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-81],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"29187\"]]"); - p = add_epsg_def (filter, first, last, 29188, "epsg", 29188, - "SAD69 / UTM zone 18S"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +south +ellps=aust_SA +towgs84=-57,1,"); - add_proj4text (p, 1, - "-41,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 18S\",GEOGCS[\"SAD69\",DATUM[\""); - add_srs_wkt (p, 1, - "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); - add_srs_wkt (p, 2, - "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-75],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"29188\"]]"); - p = add_epsg_def (filter, first, last, 29189, "epsg", 29189, - "SAD69 / UTM zone 19S"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +south +ellps=aust_SA +towgs84=-57,1,"); - add_proj4text (p, 1, - "-41,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 19S\",GEOGCS[\"SAD69\",DATUM[\""); - add_srs_wkt (p, 1, - "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); - add_srs_wkt (p, 2, - "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-69],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"29189\"]]"); - p = add_epsg_def (filter, first, last, 29190, "epsg", 29190, - "SAD69 / UTM zone 20S"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +south +ellps=aust_SA +towgs84=-57,1,"); - add_proj4text (p, 1, - "-41,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 20S\",GEOGCS[\"SAD69\",DATUM[\""); - add_srs_wkt (p, 1, - "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); - add_srs_wkt (p, 2, - "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-63],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"29190\"]]"); - p = add_epsg_def (filter, first, last, 29191, "epsg", 29191, - "SAD69 / UTM zone 21S"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +south +ellps=aust_SA +towgs84=-57,1,"); - add_proj4text (p, 1, - "-41,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 21S\",GEOGCS[\"SAD69\",DATUM[\""); - add_srs_wkt (p, 1, - "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); - add_srs_wkt (p, 2, - "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-57],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"29191\"]]"); - p = add_epsg_def (filter, first, last, 29192, "epsg", 29192, - "SAD69 / UTM zone 22S"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-57,1,"); - add_proj4text (p, 1, - "-41,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 22S\",GEOGCS[\"SAD69\",DATUM[\""); - add_srs_wkt (p, 1, - "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); - add_srs_wkt (p, 2, - "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-51],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"29192\"]]"); - p = add_epsg_def (filter, first, last, 29193, "epsg", 29193, - "SAD69 / UTM zone 23S"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +south +ellps=aust_SA +towgs84=-57,1,"); - add_proj4text (p, 1, - "-41,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 23S\",GEOGCS[\"SAD69\",DATUM[\""); - add_srs_wkt (p, 1, - "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); - add_srs_wkt (p, 2, - "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-45],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"29193\"]]"); - p = add_epsg_def (filter, first, last, 29194, "epsg", 29194, - "SAD69 / UTM zone 24S"); - add_proj4text (p, 0, - "+proj=utm +zone=24 +south +ellps=aust_SA +towgs84=-57,1,"); - add_proj4text (p, 1, - "-41,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 24S\",GEOGCS[\"SAD69\",DATUM[\""); - add_srs_wkt (p, 1, - "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); - add_srs_wkt (p, 2, - "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-39],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"29194\"]]"); - p = add_epsg_def (filter, first, last, 29195, "epsg", 29195, - "SAD69 / UTM zone 25S"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +south +ellps=aust_SA +towgs84=-57,1,"); - add_proj4text (p, 1, - "-41,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SAD69 / UTM zone 25S\",GEOGCS[\"SAD69\",DATUM[\""); - add_srs_wkt (p, 1, - "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); - add_srs_wkt (p, 2, - "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); - add_srs_wkt (p, 3, - "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); - add_srs_wkt (p, 7, - "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-33],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 11, - ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"29195\"]]"); - p = add_epsg_def (filter, first, last, 29220, "epsg", 29220, - "Sapper Hill 1943 / UTM zone 20S"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +south +ellps=intl +towgs84=-355,21,7"); - add_proj4text (p, 1, - "2,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Sapper Hill 1943 / UTM zone 20S\",GEOGCS[\"Sapp"); - add_srs_wkt (p, 1, - "er Hill 1943\",DATUM[\"Sapper_Hill_1943\",SPHEROID[\"Int"); - add_srs_wkt (p, 2, - "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-355,21,72,0,0,0,0],AUTHORITY[\"EPSG\",\"6292"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4292\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"29220\"]]"); - p = add_epsg_def (filter, first, last, 29221, "epsg", 29221, - "Sapper Hill 1943 / UTM zone 21S"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +south +ellps=intl +towgs84=-355,21,7"); - add_proj4text (p, 1, - "2,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Sapper Hill 1943 / UTM zone 21S\",GEOGCS[\"Sapp"); - add_srs_wkt (p, 1, - "er Hill 1943\",DATUM[\"Sapper_Hill_1943\",SPHEROID[\"Int"); - add_srs_wkt (p, 2, - "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); - add_srs_wkt (p, 3, - "]],TOWGS84[-355,21,72,0,0,0,0],AUTHORITY[\"EPSG\",\"6292"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4292\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"29221\"]]"); - p = add_epsg_def (filter, first, last, 29333, "epsg", 29333, - "Schwarzeck / UTM zone 33S"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +south +ellps=bess_nam +towgs84=616,9"); - add_proj4text (p, 1, - "7,-251,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Schwarzeck / UTM zone 33S\",GEOGCS[\"Schwarzeck"); - add_srs_wkt (p, 1, - "\",DATUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\""); - add_srs_wkt (p, 2, - ",6377483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046"); - add_srs_wkt (p, 3, - "\"]],TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); - add_srs_wkt (p, 4, - "293\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); - add_srs_wkt (p, 5, - "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 6, - "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\""); - add_srs_wkt (p, 7, - "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",15],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"29333\"]]"); - p = add_epsg_def (filter, first, last, 29371, "epsg", 29371, - "Schwarzeck / Lo22/11"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-22 +lon_0=11 +k=1 +x_0=0 +y_0=0 +axi"); - add_proj4text (p, 1, - "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); - add_proj4text (p, 2, - "eter=1.0000135965 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Schwarzeck / Lo22/11\",GEOGCS[\"Schwarzeck\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); - add_srs_wkt (p, 2, - "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",-22],PARAMETER[\"central_meridian\",11],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); - add_srs_wkt (p, 11, - "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29371\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 29373, "epsg", 29373, - "Schwarzeck / Lo22/13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-22 +lon_0=13 +k=1 +x_0=0 +y_0=0 +axi"); - add_proj4text (p, 1, - "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); - add_proj4text (p, 2, - "eter=1.0000135965 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Schwarzeck / Lo22/13\",GEOGCS[\"Schwarzeck\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); - add_srs_wkt (p, 2, - "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",-22],PARAMETER[\"central_meridian\",13],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); - add_srs_wkt (p, 11, - "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29373\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 29375, "epsg", 29375, - "Schwarzeck / Lo22/15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-22 +lon_0=15 +k=1 +x_0=0 +y_0=0 +axi"); - add_proj4text (p, 1, - "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); - add_proj4text (p, 2, - "eter=1.0000135965 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Schwarzeck / Lo22/15\",GEOGCS[\"Schwarzeck\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); - add_srs_wkt (p, 2, - "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",-22],PARAMETER[\"central_meridian\",15],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); - add_srs_wkt (p, 11, - "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29375\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 29377, "epsg", 29377, - "Schwarzeck / Lo22/17"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-22 +lon_0=17 +k=1 +x_0=0 +y_0=0 +axi"); - add_proj4text (p, 1, - "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); - add_proj4text (p, 2, - "eter=1.0000135965 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Schwarzeck / Lo22/17\",GEOGCS[\"Schwarzeck\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); - add_srs_wkt (p, 2, - "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",-22],PARAMETER[\"central_meridian\",17],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); - add_srs_wkt (p, 11, - "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29377\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 29379, "epsg", 29379, - "Schwarzeck / Lo22/19"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-22 +lon_0=19 +k=1 +x_0=0 +y_0=0 +axi"); - add_proj4text (p, 1, - "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); - add_proj4text (p, 2, - "eter=1.0000135965 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Schwarzeck / Lo22/19\",GEOGCS[\"Schwarzeck\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); - add_srs_wkt (p, 2, - "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",-22],PARAMETER[\"central_meridian\",19],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); - add_srs_wkt (p, 11, - "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29379\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 29381, "epsg", 29381, - "Schwarzeck / Lo22/21"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-22 +lon_0=21 +k=1 +x_0=0 +y_0=0 +axi"); - add_proj4text (p, 1, - "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); - add_proj4text (p, 2, - "eter=1.0000135965 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Schwarzeck / Lo22/21\",GEOGCS[\"Schwarzeck\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); - add_srs_wkt (p, 2, - "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",-22],PARAMETER[\"central_meridian\",21],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); - add_srs_wkt (p, 11, - "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29381\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 29383, "epsg", 29383, - "Schwarzeck / Lo22/23"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-22 +lon_0=23 +k=1 +x_0=0 +y_0=0 +axi"); - add_proj4text (p, 1, - "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); - add_proj4text (p, 2, - "eter=1.0000135965 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Schwarzeck / Lo22/23\",GEOGCS[\"Schwarzeck\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); - add_srs_wkt (p, 2, - "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",-22],PARAMETER[\"central_meridian\",23],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); - add_srs_wkt (p, 11, - "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29383\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 29385, "epsg", 29385, - "Schwarzeck / Lo22/25"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=-22 +lon_0=25 +k=1 +x_0=0 +y_0=0 +axi"); - add_proj4text (p, 1, - "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); - add_proj4text (p, 2, - "eter=1.0000135965 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Schwarzeck / Lo22/25\",GEOGCS[\"Schwarzeck\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); - add_srs_wkt (p, 2, - "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); - add_srs_wkt (p, 4, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 7, - "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); - add_srs_wkt (p, 8, - "_of_origin\",-22],PARAMETER[\"central_meridian\",25],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); - add_srs_wkt (p, 11, - "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29385\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 29635, "epsg", 29635, - "Sudan / UTM zone 35N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +a=6378249.2 +b=6356515 +units=m +no_"); - add_proj4text (p, 1, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Sudan / UTM zone 35N (deprecated)\",GEOGCS[\"Su"); - add_srs_wkt (p, 1, - "dan\",DATUM[\"Sudan\",SPHEROID[\"Clarke 1880 (IGN)\",637"); - add_srs_wkt (p, 2, - "8249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6296\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4296\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); - add_srs_wkt (p, 8, - "7],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 9, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 11, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"296"); - add_srs_wkt (p, 12, - "35\"]]"); - p = add_epsg_def (filter, first, last, 29636, "epsg", 29636, - "Sudan / UTM zone 36N (deprecated)"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +a=6378249.2 +b=6356515 +units=m +no_"); - add_proj4text (p, 1, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Sudan / UTM zone 36N (deprecated)\",GEOGCS[\"Su"); - add_srs_wkt (p, 1, - "dan\",DATUM[\"Sudan\",SPHEROID[\"Clarke 1880 (IGN)\",637"); - add_srs_wkt (p, 2, - "8249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"7011\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6296\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4296\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); - add_srs_wkt (p, 8, - "3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); - add_srs_wkt (p, 9, - "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 10, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); - add_srs_wkt (p, 11, - ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"296"); - add_srs_wkt (p, 12, - "36\"]]"); - p = add_epsg_def (filter, first, last, 29700, "epsg", 29700, - "Tananarive (Paris) / Laborde Grid (deprecated)"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha="); - add_proj4text (p, 1, - "18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +gamm"); - add_proj4text (p, 2, - "a=18.9 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=pa"); - add_proj4text (p, 3, - "ris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tananarive (Paris) / Laborde Grid (deprecated)\""); - add_srs_wkt (p, 1, - ",GEOGCS[\"Tananarive (Paris)\",DATUM[\"Tananarive_1925_P"); - add_srs_wkt (p, 2, - "aris\",SPHEROID[\"International 1924\",6378388,297,AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"7022\"]],TOWGS84[-189,-242,-91,0,0,0,0],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6810\"]],PRIMEM[\"Paris\",2.3372291"); - add_srs_wkt (p, 5, - "7,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0.01570796"); - add_srs_wkt (p, 6, - "326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4810\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"latitude_of_center\",-21],PARAMETER[\"longitud"); - add_srs_wkt (p, 9, - "e_of_center\",49],PARAMETER[\"azimuth\",21],PARAMETER[\""); - add_srs_wkt (p, 10, - "rectified_grid_angle\",21],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 11, - "9995],PARAMETER[\"false_easting\",400000],PARAMETER[\"fa"); - add_srs_wkt (p, 12, - "lse_northing\",800000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 13, - "\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); - add_srs_wkt (p, 14, - "TY[\"EPSG\",\"29700\"]]"); - p = add_epsg_def (filter, first, last, 29702, "epsg", 29702, - "Tananarive (Paris) / Laborde Grid approximation"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha="); - add_proj4text (p, 1, - "18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +gamm"); - add_proj4text (p, 2, - "a=18.9 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=pa"); - add_proj4text (p, 3, - "ris +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tananarive (Paris) / Laborde Grid approximation"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"Tananarive (Paris)\",DATUM[\"Tananarive_1925"); - add_srs_wkt (p, 2, - "_Paris\",SPHEROID[\"International 1924\",6378388,297,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"7022\"]],TOWGS84[-189,-242,-91,0,0,0,0"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6810\"]],PRIMEM[\"Paris\",2.33722"); - add_srs_wkt (p, 5, - "917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0.015707"); - add_srs_wkt (p, 6, - "96326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 7, - "SG\",\"4810\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"latitude_of_center\",-21],PARAMETER[\"longit"); - add_srs_wkt (p, 9, - "ude_of_center\",49],PARAMETER[\"azimuth\",21],PARAMETER["); - add_srs_wkt (p, 10, - "\"rectified_grid_angle\",21],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 11, - "0.9995],PARAMETER[\"false_easting\",400000],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",800000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHO"); - add_srs_wkt (p, 14, - "RITY[\"EPSG\",\"29702\"]]"); - p = add_epsg_def (filter, first, last, 29738, "epsg", 29738, - "Tananarive / UTM zone 38S"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +south +ellps=intl +towgs84=-189,-242"); - add_proj4text (p, 1, - ",-91,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tananarive / UTM zone 38S\",GEOGCS[\"Tananarive"); - add_srs_wkt (p, 1, - "\",DATUM[\"Tananarive_1925\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "189,-242,-91,0,0,0,0],AUTHORITY[\"EPSG\",\"6297\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4297\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",45],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 9, - "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"29738\"]]"); - p = add_epsg_def (filter, first, last, 29739, "epsg", 29739, - "Tananarive / UTM zone 39S"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +south +ellps=intl +towgs84=-189,-242"); - add_proj4text (p, 1, - ",-91,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tananarive / UTM zone 39S\",GEOGCS[\"Tananarive"); - add_srs_wkt (p, 1, - "\",DATUM[\"Tananarive_1925\",SPHEROID[\"International 19"); - add_srs_wkt (p, 2, - "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "189,-242,-91,0,0,0,0],AUTHORITY[\"EPSG\",\"6297\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4297\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"central_meridian\",51],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 9, - "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"29739\"]]"); - p = add_epsg_def (filter, first, last, 29849, "epsg", 29849, - "Timbalai 1948 / UTM zone 49N"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +ellps=evrstSS +towgs84=-533.4,669.2,"); - add_proj4text (p, 1, - "-52.5,0,0,4.28,9.4 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Timbalai 1948 / UTM zone 49N\",GEOGCS[\"Timbala"); - add_srs_wkt (p, 1, - "i 1948\",DATUM[\"Timbalai_1948\",SPHEROID[\"Everest 1830"); - add_srs_wkt (p, 2, - " (1967 Definition)\",6377298.556,300.8017,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7016\"]],TOWGS84[-533.4,669.2,-52.5,0,0,4.28,9.4]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6298\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4298\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "29849\"]]"); - p = add_epsg_def (filter, first, last, 29850, "epsg", 29850, - "Timbalai 1948 / UTM zone 50N"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +ellps=evrstSS +towgs84=-533.4,669.2,"); - add_proj4text (p, 1, - "-52.5,0,0,4.28,9.4 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Timbalai 1948 / UTM zone 50N\",GEOGCS[\"Timbala"); - add_srs_wkt (p, 1, - "i 1948\",DATUM[\"Timbalai_1948\",SPHEROID[\"Everest 1830"); - add_srs_wkt (p, 2, - " (1967 Definition)\",6377298.556,300.8017,AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"7016\"]],TOWGS84[-533.4,669.2,-52.5,0,0,4.28,9.4]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6298\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4298\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "29850\"]]"); - p = add_epsg_def (filter, first, last, 29871, "epsg", 29871, - "Timbalai 1948 / RSO Borneo (ch)"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 "); - add_proj4text (p, 1, - "+k=0.99984 +x_0=590476.8714630401 +y_0=442857.653094361 "); - add_proj4text (p, 2, - "+gamma=53.13010236111111 +ellps=evrstSS +towgs84=-533.4,"); - add_proj4text (p, 3, - "669.2,-52.5,0,0,4.28,9.4 +to_meter=20.11676512155263 +no"); - add_proj4text (p, 4, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Timbalai 1948 / RSO Borneo (ch)\",GEOGCS[\"Timb"); - add_srs_wkt (p, 1, - "alai 1948\",DATUM[\"Timbalai_1948\",SPHEROID[\"Everest 1"); - add_srs_wkt (p, 2, - "830 (1967 Definition)\",6377298.556,300.8017,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7016\"]],TOWGS84[-533.4,669.2,-52.5,0,0,4.28,9."); - add_srs_wkt (p, 4, - "4],AUTHORITY[\"EPSG\",\"6298\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4298\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"latitude_of_center\",4],PARAMETER[\"longitude_of"); - add_srs_wkt (p, 9, - "_center\",115],PARAMETER[\"azimuth\",53.31582047222222],"); - add_srs_wkt (p, 10, - "PARAMETER[\"rectified_grid_angle\",53.13010236111111],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"scale_factor\",0.99984],PARAMETER[\"false_east"); - add_srs_wkt (p, 12, - "ing\",29352.4763],PARAMETER[\"false_northing\",22014.357"); - add_srs_wkt (p, 13, - "2],UNIT[\"British chain (Sears 1922)\",20.11676512155263"); - add_srs_wkt (p, 14, - ",AUTHORITY[\"EPSG\",\"9042\"]],AXIS[\"Easting\",EAST],AX"); - add_srs_wkt (p, 15, - "IS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"29871\"]]"); - p = add_epsg_def (filter, first, last, 29872, "epsg", 29872, - "Timbalai 1948 / RSO Borneo (ft)"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 "); - add_proj4text (p, 1, - "+k=0.99984 +x_0=590476.8727431979 +y_0=442857.6545573985"); - add_proj4text (p, 2, - " +gamma=53.13010236111111 +ellps=evrstSS +towgs84=-533.4"); - add_proj4text (p, 3, - ",669.2,-52.5,0,0,4.28,9.4 +to_meter=0.3047994715386762 +"); - add_proj4text (p, 4, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Timbalai 1948 / RSO Borneo (ft)\",GEOGCS[\"Timb"); - add_srs_wkt (p, 1, - "alai 1948\",DATUM[\"Timbalai_1948\",SPHEROID[\"Everest 1"); - add_srs_wkt (p, 2, - "830 (1967 Definition)\",6377298.556,300.8017,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7016\"]],TOWGS84[-533.4,669.2,-52.5,0,0,4.28,9."); - add_srs_wkt (p, 4, - "4],AUTHORITY[\"EPSG\",\"6298\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4298\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"latitude_of_center\",4],PARAMETER[\"longitude_of"); - add_srs_wkt (p, 9, - "_center\",115],PARAMETER[\"azimuth\",53.31582047222222],"); - add_srs_wkt (p, 10, - "PARAMETER[\"rectified_grid_angle\",53.13010236111111],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"scale_factor\",0.99984],PARAMETER[\"false_east"); - add_srs_wkt (p, 12, - "ing\",1937263.44],PARAMETER[\"false_northing\",1452947.5"); - add_srs_wkt (p, 13, - "8],UNIT[\"British foot (Sears 1922)\",0.3047994715386762"); - add_srs_wkt (p, 14, - ",AUTHORITY[\"EPSG\",\"9041\"]],AXIS[\"Easting\",EAST],AX"); - add_srs_wkt (p, 15, - "IS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"29872\"]]"); - p = add_epsg_def (filter, first, last, 29873, "epsg", 29873, - "Timbalai 1948 / RSO Borneo (m)"); - add_proj4text (p, 0, - "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 "); - add_proj4text (p, 1, - "+k=0.99984 +x_0=590476.87 +y_0=442857.65 +gamma=53.13010"); - add_proj4text (p, 2, - "236111111 +ellps=evrstSS +towgs84=-533.4,669.2,-52.5,0,0"); - add_proj4text (p, 3, - ",4.28,9.4 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Timbalai 1948 / RSO Borneo (m)\",GEOGCS[\"Timba"); - add_srs_wkt (p, 1, - "lai 1948\",DATUM[\"Timbalai_1948\",SPHEROID[\"Everest 18"); - add_srs_wkt (p, 2, - "30 (1967 Definition)\",6377298.556,300.8017,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7016\"]],TOWGS84[-533.4,669.2,-52.5,0,0,4.28,9."); - add_srs_wkt (p, 4, - "4],AUTHORITY[\"EPSG\",\"6298\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 6, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4298\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],PARA"); - add_srs_wkt (p, 8, - "METER[\"latitude_of_center\",4],PARAMETER[\"longitude_of"); - add_srs_wkt (p, 9, - "_center\",115],PARAMETER[\"azimuth\",53.31582047222222],"); - add_srs_wkt (p, 10, - "PARAMETER[\"rectified_grid_angle\",53.13010236111111],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"scale_factor\",0.99984],PARAMETER[\"false_east"); - add_srs_wkt (p, 12, - "ing\",590476.87],PARAMETER[\"false_northing\",442857.65]"); - add_srs_wkt (p, 13, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E"); - add_srs_wkt (p, 14, - "asting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 15, - "\",\"29873\"]]"); - p = add_epsg_def (filter, first, last, 29900, "epsg", 29900, - "TM65 / Irish National Grid (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=20000"); - add_proj4text (p, 1, - "0 +y_0=250000 +datum=ire65 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TM65 / Irish National Grid (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"TM65\",DATUM[\"TM65\",SPHEROID[\"Airy Modified 1849\""); - add_srs_wkt (p, 2, - ",6377340.189,299.3249646,AUTHORITY[\"EPSG\",\"7002\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6299\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); - add_srs_wkt (p, 7, - "99\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",53.5],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-8],PARAMETER[\"scale_factor\",1.000035],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_easting\",200000],PARAMETER[\"false_northing\",25000"); - add_srs_wkt (p, 11, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 13, - "G\",\"29900\"]]"); - p = add_epsg_def (filter, first, last, 29901, "epsg", 29901, - "OSNI 1952 / Irish National Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1 +x_0=200000 +y_0="); - add_proj4text (p, 1, - "250000 +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0"); - add_proj4text (p, 2, - ".214,-0.631,8.15 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"OSNI 1952 / Irish National Grid\",GEOGCS[\"OSNI"); - add_srs_wkt (p, 1, - " 1952\",DATUM[\"OSNI_1952\",SPHEROID[\"Airy 1830\",63775"); - add_srs_wkt (p, 2, - "63.396,299.3249646,AUTHORITY[\"EPSG\",\"7001\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6188\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4188\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 8, - "e_of_origin\",53.5],PARAMETER[\"central_meridian\",-8],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",200000],PARAMETER[\"false_northing\",250000],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EA"); - add_srs_wkt (p, 12, - "ST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"29901\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 29902, "epsg", 29902, - "TM65 / Irish Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=20000"); - add_proj4text (p, 1, - "0 +y_0=250000 +datum=ire65 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TM65 / Irish Grid\",GEOGCS[\"TM65\",DATUM[\"TM6"); - add_srs_wkt (p, 1, - "5\",SPHEROID[\"Airy Modified 1849\",6377340.189,299.3249"); - add_srs_wkt (p, 2, - "646,AUTHORITY[\"EPSG\",\"7002\"]],TOWGS84[482.5,-130.6,5"); - add_srs_wkt (p, 3, - "64.6,-1.042,-0.214,-0.631,8.15],AUTHORITY[\"EPSG\",\"629"); - add_srs_wkt (p, 4, - "9\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4299\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); - add_srs_wkt (p, 8, - "3.5],PARAMETER[\"central_meridian\",-8],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",1.000035],PARAMETER[\"false_easting\",200000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",250000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"29902\"]]"); - p = add_epsg_def (filter, first, last, 29903, "epsg", 29903, - "TM75 / Irish Grid"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=20000"); - add_proj4text (p, 1, - "0 +y_0=250000 +ellps=mod_airy +towgs84=482.5,-130.6,564."); - add_proj4text (p, 2, - "6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TM75 / Irish Grid\",GEOGCS[\"TM75\",DATUM[\"Geo"); - add_srs_wkt (p, 1, - "detic_Datum_of_1965\",SPHEROID[\"Airy Modified 1849\",63"); - add_srs_wkt (p, 2, - "77340.189,299.3249646,AUTHORITY[\"EPSG\",\"7002\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15],AUTHOR"); - add_srs_wkt (p, 4, - "ITY[\"EPSG\",\"6300\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4300\""); - add_srs_wkt (p, 7, - "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",53.5],PARAMETER[\"central_meridian\",-8]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"scale_factor\",1.000035],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "easting\",200000],PARAMETER[\"false_northing\",250000],U"); - add_srs_wkt (p, 11, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); - add_srs_wkt (p, 12, - "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"29903\"]]"); - p = add_epsg_def (filter, first, last, 30161, "epsg", 30161, - "Tokyo / Japan Plane Rectangular CS I"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS I\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377397"); - add_srs_wkt (p, 2, - ".155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"63"); - add_srs_wkt (p, 4, - "01\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",3"); - add_srs_wkt (p, 8, - "3],PARAMETER[\"central_meridian\",129.5],PARAMETER[\"sca"); - add_srs_wkt (p, 9, - "le_factor\",0.9999],PARAMETER[\"false_easting\",0],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"30161\"]]"); - p = add_epsg_def (filter, first, last, 30162, "epsg", 30162, - "Tokyo / Japan Plane Rectangular CS II"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS II\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",63773"); - add_srs_wkt (p, 2, - "97.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",33],PARAMETER[\"central_meridian\",131],PARAMETER[\"sca"); - add_srs_wkt (p, 9, - "le_factor\",0.9999],PARAMETER[\"false_easting\",0],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"30162\"]]"); - p = add_epsg_def (filter, first, last, 30163, "epsg", 30163, - "Tokyo / Japan Plane Rectangular CS III"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999"); - add_proj4text (p, 1, - " +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,6"); - add_proj4text (p, 2, - "80.507,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS III\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377"); - add_srs_wkt (p, 2, - "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",36],PARAMETER[\"central_meridian\",132.1666666666667],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"30163\"]]"); - p = add_epsg_def (filter, first, last, 30164, "epsg", 30164, - "Tokyo / Japan Plane Rectangular CS IV"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS IV\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",63773"); - add_srs_wkt (p, 2, - "97.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",33],PARAMETER[\"central_meridian\",133.5],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9999],PARAMETER[\"false_easting\",0],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"30164\"]]"); - p = add_epsg_def (filter, first, last, 30165, "epsg", 30165, - "Tokyo / Japan Plane Rectangular CS V"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999"); - add_proj4text (p, 1, - " +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,6"); - add_proj4text (p, 2, - "80.507,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS V\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377397"); - add_srs_wkt (p, 2, - ".155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"63"); - add_srs_wkt (p, 4, - "01\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",3"); - add_srs_wkt (p, 8, - "6],PARAMETER[\"central_meridian\",134.3333333333333],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",0.9999],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"30165\"]]"); - p = add_epsg_def (filter, first, last, 30166, "epsg", 30166, - "Tokyo / Japan Plane Rectangular CS VI"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS VI\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",63773"); - add_srs_wkt (p, 2, - "97.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",36],PARAMETER[\"central_meridian\",136],PARAMETER[\"sca"); - add_srs_wkt (p, 9, - "le_factor\",0.9999],PARAMETER[\"false_easting\",0],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"30166\"]]"); - p = add_epsg_def (filter, first, last, 30167, "epsg", 30167, - "Tokyo / Japan Plane Rectangular CS VII"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999"); - add_proj4text (p, 1, - " +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,6"); - add_proj4text (p, 2, - "80.507,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS VII\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377"); - add_srs_wkt (p, 2, - "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",36],PARAMETER[\"central_meridian\",137.1666666666667],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"30167\"]]"); - p = add_epsg_def (filter, first, last, 30168, "epsg", 30168, - "Tokyo / Japan Plane Rectangular CS VIII"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS VIII\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",637"); - add_srs_wkt (p, 2, - "7397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",36],PARAMETER[\"central_meridian\",138.5],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 11, - "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST"); - add_srs_wkt (p, 12, - "],AUTHORITY[\"EPSG\",\"30168\"]]"); - p = add_epsg_def (filter, first, last, 30169, "epsg", 30169, - "Tokyo / Japan Plane Rectangular CS IX"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999"); - add_proj4text (p, 1, - " +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,6"); - add_proj4text (p, 2, - "80.507,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS IX\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",63773"); - add_srs_wkt (p, 2, - "97.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",36],PARAMETER[\"central_meridian\",139.8333333333333],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_east"); - add_srs_wkt (p, 10, - "ing\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"30169\"]]"); - p = add_epsg_def (filter, first, last, 30170, "epsg", 30170, - "Tokyo / Japan Plane Rectangular CS X"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999"); - add_proj4text (p, 1, - " +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,6"); - add_proj4text (p, 2, - "80.507,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS X\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377397"); - add_srs_wkt (p, 2, - ".155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-"); - add_srs_wkt (p, 3, - "146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"63"); - add_srs_wkt (p, 4, - "01\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 5, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION[\"T"); - add_srs_wkt (p, 7, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",4"); - add_srs_wkt (p, 8, - "0],PARAMETER[\"central_meridian\",140.8333333333333],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"scale_factor\",0.9999],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 10, - "g\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 11, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",EAST],AUTHORITY[\"EPSG\",\"30170\"]]"); - p = add_epsg_def (filter, first, last, 30171, "epsg", 30171, - "Tokyo / Japan Plane Rectangular CS XI"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS XI\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",63773"); - add_srs_wkt (p, 2, - "97.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",44],PARAMETER[\"central_meridian\",140.25],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"30171\"]]"); - p = add_epsg_def (filter, first, last, 30172, "epsg", 30172, - "Tokyo / Japan Plane Rectangular CS XII"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS XII\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377"); - add_srs_wkt (p, 2, - "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",44],PARAMETER[\"central_meridian\",142.25],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"30172\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_35.c b/src/spatialite/src/srsinit/epsg_inlined_35.c deleted file mode 100644 index 92a424c..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_35.c +++ /dev/null @@ -1,3502 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_35 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 30173, "epsg", 30173, - "Tokyo / Japan Plane Rectangular CS XIII"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,"); - add_proj4text (p, 2, - "0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS XIII\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",637"); - add_srs_wkt (p, 2, - "7397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",44],PARAMETER[\"central_meridian\",144.25],PARAMETER"); - add_srs_wkt (p, 9, - "[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAS"); - add_srs_wkt (p, 12, - "T],AUTHORITY[\"EPSG\",\"30173\"]]"); - p = add_epsg_def (filter, first, last, 30174, "epsg", 30174, - "Tokyo / Japan Plane Rectangular CS XIV"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS XIV\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377"); - add_srs_wkt (p, 2, - "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",26],PARAMETER[\"central_meridian\",142],PARAMETER[\"sca"); - add_srs_wkt (p, 9, - "le_factor\",0.9999],PARAMETER[\"false_easting\",0],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"30174\"]]"); - p = add_epsg_def (filter, first, last, 30175, "epsg", 30175, - "Tokyo / Japan Plane Rectangular CS XV"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0"); - add_proj4text (p, 1, - "=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0"); - add_proj4text (p, 2, - ",0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS XV\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",63773"); - add_srs_wkt (p, 2, - "97.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",26],PARAMETER[\"central_meridian\",127.5],PARAMETER[\"s"); - add_srs_wkt (p, 9, - "cale_factor\",0.9999],PARAMETER[\"false_easting\",0],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"30175\"]]"); - p = add_epsg_def (filter, first, last, 30176, "epsg", 30176, - "Tokyo / Japan Plane Rectangular CS XVI"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS XVI\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377"); - add_srs_wkt (p, 2, - "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",26],PARAMETER[\"central_meridian\",124],PARAMETER[\"sca"); - add_srs_wkt (p, 9, - "le_factor\",0.9999],PARAMETER[\"false_easting\",0],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"30176\"]]"); - p = add_epsg_def (filter, first, last, 30177, "epsg", 30177, - "Tokyo / Japan Plane Rectangular CS XVII"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS XVII\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",637"); - add_srs_wkt (p, 2, - "7397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 4, - "\"6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); - add_srs_wkt (p, 5, - "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); - add_srs_wkt (p, 6, - "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTIO"); - add_srs_wkt (p, 7, - "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 8, - "n\",26],PARAMETER[\"central_meridian\",131],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"30177\"]]"); - p = add_epsg_def (filter, first, last, 30178, "epsg", 30178, - "Tokyo / Japan Plane Rectangular CS XVIII"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS XVIII\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",63"); - add_srs_wkt (p, 2, - "77397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTI"); - add_srs_wkt (p, 7, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 8, - "in\",20],PARAMETER[\"central_meridian\",136],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"30178\"]]"); - p = add_epsg_def (filter, first, last, 30179, "epsg", 30179, - "Tokyo / Japan Plane Rectangular CS XIX"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0"); - add_proj4text (p, 1, - " +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Tokyo / Japan Plane Rectangular CS XIX\",GEOGCS"); - add_srs_wkt (p, 1, - "[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377"); - add_srs_wkt (p, 2, - "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",26],PARAMETER[\"central_meridian\",154],PARAMETER[\"sca"); - add_srs_wkt (p, 9, - "le_factor\",0.9999],PARAMETER[\"false_easting\",0],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"30179\"]]"); - p = add_epsg_def (filter, first, last, 30200, "epsg", 30200, - "Trinidad 1903 / Trinidad Grid"); - add_proj4text (p, 0, - "+proj=cass +lat_0=10.44166666666667 +lon_0=-61.333333333"); - add_proj4text (p, 1, - "33334 +x_0=86501.46392051999 +y_0=65379.0134283 +a=63782"); - add_proj4text (p, 2, - "93.645208759 +b=6356617.987679838 +towgs84=-61.702,284.4"); - add_proj4text (p, 3, - "88,472.052,0,0,0,0 +to_meter=0.201166195164 +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Trinidad 1903 / Trinidad Grid\",GEOGCS[\"Trinid"); - add_srs_wkt (p, 1, - "ad 1903\",DATUM[\"Trinidad_1903\",SPHEROID[\"Clarke 1858"); - add_srs_wkt (p, 2, - "\",6378293.645208759,294.2606763692654,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7007\"]],TOWGS84[-61.702,284.488,472.052,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6302\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"43"); - add_srs_wkt (p, 7, - "02\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",10.44166666666667],PARAMETER[\"central_m"); - add_srs_wkt (p, 9, - "eridian\",-61.33333333333334],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",430000],PARAMETER[\"false_northing\",325000],UNIT[\"Cla"); - add_srs_wkt (p, 11, - "rke's link\",0.201166195164,AUTHORITY[\"EPSG\",\"9039\"]"); - add_srs_wkt (p, 12, - "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); - add_srs_wkt (p, 13, - "ITY[\"EPSG\",\"30200\"]]"); - p = add_epsg_def (filter, first, last, 30339, "epsg", 30339, - "TC(1948) / UTM zone 39N"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=helmert +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TC(1948) / UTM zone 39N\",GEOGCS[\"TC(1948)\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Trucial_Coast_1948\",SPHEROID[\"Helmert 1906\",63"); - add_srs_wkt (p, 2, - "78200,298.3,AUTHORITY[\"EPSG\",\"7020\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"6303\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4303\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",51],PARAMETER["); - add_srs_wkt (p, 8, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 9, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 10, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 11, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"30339\"]]"); - p = add_epsg_def (filter, first, last, 30340, "epsg", 30340, - "TC(1948) / UTM zone 40N"); - add_proj4text (p, 0, - "+proj=utm +zone=40 +ellps=helmert +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"TC(1948) / UTM zone 40N\",GEOGCS[\"TC(1948)\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Trucial_Coast_1948\",SPHEROID[\"Helmert 1906\",63"); - add_srs_wkt (p, 2, - "78200,298.3,AUTHORITY[\"EPSG\",\"7020\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 3, - "SG\",\"6303\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 5, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4303\"]],PROJE"); - add_srs_wkt (p, 6, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 7, - "rigin\",0],PARAMETER[\"central_meridian\",57],PARAMETER["); - add_srs_wkt (p, 8, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 9, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 10, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 11, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"30340\"]]"); - p = add_epsg_def (filter, first, last, 30491, "epsg", 30491, - "Voirol 1875 / Nord Algerie (ancienne)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.99962554"); - add_proj4text (p, 1, - "4 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs"); - add_proj4text (p, 2, - "84=-73,-247,227,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Voirol 1875 / Nord Algerie (ancienne)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Voirol 1875\",DATUM[\"Voirol_1875\",SPHEROID[\"Clarke "); - add_srs_wkt (p, 2, - "1880 (IGN)\",6378249.2,293.4660212936269,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7011\"]],TOWGS84[-73,-247,227,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6304\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4304\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",36],PARAMETER[\"central_meridian\",2."); - add_srs_wkt (p, 9, - "7],PARAMETER[\"scale_factor\",0.999625544],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_easting\",500000],PARAMETER[\"false_northing\",3000"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"30491"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 30492, "epsg", 30492, - "Voirol 1875 / Sud Algerie (ancienne)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.9996"); - add_proj4text (p, 1, - "25769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +t"); - add_proj4text (p, 2, - "owgs84=-73,-247,227,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Voirol 1875 / Sud Algerie (ancienne)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Voirol 1875\",DATUM[\"Voirol_1875\",SPHEROID[\"Clarke 18"); - add_srs_wkt (p, 2, - "80 (IGN)\",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7011\"]],TOWGS84[-73,-247,227,0,0,0,0],AUTHORITY[\"EP"); - add_srs_wkt (p, 4, - "SG\",\"6304\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4304\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\"latit"); - add_srs_wkt (p, 8, - "ude_of_origin\",33.3],PARAMETER[\"central_meridian\",2.7"); - add_srs_wkt (p, 9, - "],PARAMETER[\"scale_factor\",0.999625769],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_easting\",500000],PARAMETER[\"false_northing\",30000"); - add_srs_wkt (p, 11, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"30492\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 30493, "epsg", 30493, - "Voirol 1879 / Nord Algerie (ancienne)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.99962554"); - add_proj4text (p, 1, - "4 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units"); - add_proj4text (p, 2, - "=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Voirol 1879 / Nord Algerie (ancienne)\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Voirol 1879\",DATUM[\"Voirol_1879\",SPHEROID[\"Clarke "); - add_srs_wkt (p, 2, - "1880 (IGN)\",6378249.2,293.4660212936269,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7011\"]],AUTHORITY[\"EPSG\",\"6671\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4671\"]],PROJECTION[\"Lambert_Conformal_C"); - add_srs_wkt (p, 7, - "onic_1SP\"],PARAMETER[\"latitude_of_origin\",36],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",2.7],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "0.999625544],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",300000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"30493\"]]"); - p = add_epsg_def (filter, first, last, 30494, "epsg", 30494, - "Voirol 1879 / Sud Algerie (ancienne)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.9996"); - add_proj4text (p, 1, - "25769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Voirol 1879 / Sud Algerie (ancienne)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Voirol 1879\",DATUM[\"Voirol_1879\",SPHEROID[\"Clarke 18"); - add_srs_wkt (p, 2, - "80 (IGN)\",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7011\"]],AUTHORITY[\"EPSG\",\"6671\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4671\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_1SP\"],PARAMETER[\"latitude_of_origin\",33.3],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"central_meridian\",2.7],PARAMETER[\"scale_factor\","); - add_srs_wkt (p, 9, - "0.999625769],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",300000],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"30494\"]]"); - p = add_epsg_def (filter, first, last, 30729, "epsg", 30729, - "Nord Sahara 1959 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-186,-93,310,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Nord Sahara 1959 / UTM zone 29N\",GEOGCS[\"Nord"); - add_srs_wkt (p, 1, - " Sahara 1959\",DATUM[\"Nord_Sahara_1959\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7012\"]],TOWGS84[-186,-93,310,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6307\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4307\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",-9],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"30729\"]]"); - p = add_epsg_def (filter, first, last, 30730, "epsg", 30730, - "Nord Sahara 1959 / UTM zone 30N"); - add_proj4text (p, 0, - "+proj=utm +zone=30 +ellps=clrk80 +towgs84=-186,-93,310,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Nord Sahara 1959 / UTM zone 30N\",GEOGCS[\"Nord"); - add_srs_wkt (p, 1, - " Sahara 1959\",DATUM[\"Nord_Sahara_1959\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7012\"]],TOWGS84[-186,-93,310,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6307\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4307\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",-3],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); - add_srs_wkt (p, 10, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 11, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"30730\"]]"); - p = add_epsg_def (filter, first, last, 30731, "epsg", 30731, - "Nord Sahara 1959 / UTM zone 31N"); - add_proj4text (p, 0, - "+proj=utm +zone=31 +ellps=clrk80 +towgs84=-186,-93,310,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Nord Sahara 1959 / UTM zone 31N\",GEOGCS[\"Nord"); - add_srs_wkt (p, 1, - " Sahara 1959\",DATUM[\"Nord_Sahara_1959\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7012\"]],TOWGS84[-186,-93,310,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6307\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4307\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",3],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"30731\"]]"); - p = add_epsg_def (filter, first, last, 30732, "epsg", 30732, - "Nord Sahara 1959 / UTM zone 32N"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +ellps=clrk80 +towgs84=-186,-93,310,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Nord Sahara 1959 / UTM zone 32N\",GEOGCS[\"Nord"); - add_srs_wkt (p, 1, - " Sahara 1959\",DATUM[\"Nord_Sahara_1959\",SPHEROID[\"Cla"); - add_srs_wkt (p, 2, - "rke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 3, - "\"7012\"]],TOWGS84[-186,-93,310,0,0,0,0],AUTHORITY[\"EPS"); - add_srs_wkt (p, 4, - "G\",\"6307\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4307\"]],PROJE"); - add_srs_wkt (p, 7, - "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); - add_srs_wkt (p, 8, - "rigin\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"30732\"]]"); - p = add_epsg_def (filter, first, last, 30791, "epsg", 30791, - "Nord Sahara 1959 / Voirol Unifie Nord"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.99962554"); - add_proj4text (p, 1, - "4 +x_0=500135 +y_0=300090 +ellps=clrk80 +towgs84=-186,-9"); - add_proj4text (p, 2, - "3,310,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Nord Sahara 1959 / Voirol Unifie Nord\",GEOGCS["); - add_srs_wkt (p, 1, - "\"Nord Sahara 1959\",DATUM[\"Nord_Sahara_1959\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"7012\"]],TOWGS84[-186,-93,310,0,0,0,0],AUTHORITY"); - add_srs_wkt (p, 4, - "[\"EPSG\",\"6307\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4307\"]]"); - add_srs_wkt (p, 7, - ",PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",36],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "2.7],PARAMETER[\"scale_factor\",0.999625544],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500135],PARAMETER[\"false_northing\",300"); - add_srs_wkt (p, 11, - "090],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); - add_srs_wkt (p, 12, - "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3079"); - add_srs_wkt (p, 13, - "1\"]]"); - p = add_epsg_def (filter, first, last, 30792, "epsg", 30792, - "Nord Sahara 1959 / Voirol Unifie Sud"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.9996"); - add_proj4text (p, 1, - "25769 +x_0=500135 +y_0=300090 +ellps=clrk80 +towgs84=-18"); - add_proj4text (p, 2, - "6,-93,310,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Nord Sahara 1959 / Voirol Unifie Sud\",GEOGCS[\""); - add_srs_wkt (p, 1, - "Nord Sahara 1959\",DATUM[\"Nord_Sahara_1959\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7012\"]],TOWGS84[-186,-93,310,0,0,0,0],AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"6307\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); - add_srs_wkt (p, 5, - "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4307\"]],PR"); - add_srs_wkt (p, 7, - "OJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\"la"); - add_srs_wkt (p, 8, - "titude_of_origin\",33.3],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "2.7],PARAMETER[\"scale_factor\",0.999625769],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500135],PARAMETER[\"false_northing\",300"); - add_srs_wkt (p, 11, - "090],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); - add_srs_wkt (p, 12, - "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3079"); - add_srs_wkt (p, 13, - "2\"]]"); - p = add_epsg_def (filter, first, last, 30800, "epsg", 30800, - "RT38 2.5 gon W (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0="); - add_proj4text (p, 1, - "1500000 +y_0=0 +ellps=bessel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"RT38 2.5 gon W (deprecated)\",GEOGCS[\"RT38\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Stockholm_1938\",SPHEROID[\"Bessel 1841\",6377397"); - add_srs_wkt (p, 2, - ".155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"6308\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); - add_srs_wkt (p, 4, - "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4308\"]]"); - add_srs_wkt (p, 6, - ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); - add_srs_wkt (p, 7, - "e_of_origin\",0],PARAMETER[\"central_meridian\",15.80827"); - add_srs_wkt (p, 8, - "777777778],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",1500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); - add_srs_wkt (p, 11, - "NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"30800\"]]"); - p = add_epsg_def (filter, first, last, 31028, "epsg", 31028, - "Yoff / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +units=m +no_"); - add_proj4text (p, 1, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Yoff / UTM zone 28N\",GEOGCS[\"Yoff\",DATUM[\"Y"); - add_srs_wkt (p, 1, - "off\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.46602"); - add_srs_wkt (p, 2, - "12936269,AUTHORITY[\"EPSG\",\"7011\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"6310\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); - add_srs_wkt (p, 5, - "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4310\"]],PROJECTI"); - add_srs_wkt (p, 6, - "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 7, - "in\",0],PARAMETER[\"central_meridian\",-15],PARAMETER[\""); - add_srs_wkt (p, 8, - "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); - add_srs_wkt (p, 9, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 10, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 11, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"31028\"]]"); - p = add_epsg_def (filter, first, last, 31121, "epsg", 31121, - "Zanderij / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=intl +towgs84=-265,120,-358,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Zanderij / UTM zone 21N\",GEOGCS[\"Zanderij\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Zanderij\",SPHEROID[\"International 1924\",637838"); - add_srs_wkt (p, 2, - "8,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-265,120,-35"); - add_srs_wkt (p, 3, - "8,0,0,0,0],AUTHORITY[\"EPSG\",\"6311\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4311\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 7, - ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); - add_srs_wkt (p, 8, - "_meridian\",-57],PARAMETER[\"scale_factor\",0.9996],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 11, - "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"31121\"]]"); - p = add_epsg_def (filter, first, last, 31154, "epsg", 31154, - "Zanderij / TM 54 NW"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-54 +k=0.9996 +x_0=500000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Zanderij / TM 54 NW\",GEOGCS[\"Zanderij\",DATUM"); - add_srs_wkt (p, 1, - "[\"Zanderij\",SPHEROID[\"International 1924\",6378388,29"); - add_srs_wkt (p, 2, - "7,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-265,120,-358,0,"); - add_srs_wkt (p, 3, - "0,0,0],AUTHORITY[\"EPSG\",\"6311\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4311\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); - add_srs_wkt (p, 8, - "dian\",-54],PARAMETER[\"scale_factor\",0.9996],PARAMETER"); - add_srs_wkt (p, 9, - "[\"false_easting\",500000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"31154\"]]"); - p = add_epsg_def (filter, first, last, 31170, "epsg", 31170, - "Zanderij / Suriname Old TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9996"); - add_proj4text (p, 1, - " +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0"); - add_proj4text (p, 2, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Zanderij / Suriname Old TM\",GEOGCS[\"Zanderij\""); - add_srs_wkt (p, 1, - ",DATUM[\"Zanderij\",SPHEROID[\"International 1924\",6378"); - add_srs_wkt (p, 2, - "388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-265,120,-"); - add_srs_wkt (p, 3, - "358,0,0,0,0],AUTHORITY[\"EPSG\",\"6311\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4311\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-55.68333333333333],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 9, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 11, - "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); - add_srs_wkt (p, 12, - "NORTH],AUTHORITY[\"EPSG\",\"31170\"]]"); - p = add_epsg_def (filter, first, last, 31171, "epsg", 31171, - "Zanderij / Suriname TM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9999"); - add_proj4text (p, 1, - " +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0"); - add_proj4text (p, 2, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Zanderij / Suriname TM\",GEOGCS[\"Zanderij\",DA"); - add_srs_wkt (p, 1, - "TUM[\"Zanderij\",SPHEROID[\"International 1924\",6378388"); - add_srs_wkt (p, 2, - ",297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-265,120,-358"); - add_srs_wkt (p, 3, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6311\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 4, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 5, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"4311\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); - add_srs_wkt (p, 8, - "meridian\",-55.68333333333333],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9999],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"31171\"]]"); - p = add_epsg_def (filter, first, last, 31251, "epsg", 31251, - "MGI (Ferro) / Austria GK West Zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=-5000000"); - add_proj4text (p, 1, - " +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI (Ferro) / Austria GK West Zone\",GEOGCS[\"M"); - add_srs_wkt (p, 1, - "GI (Ferro)\",DATUM[\"Militar_Geographische_Institut_Ferr"); - add_srs_wkt (p, 2, - "o\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,480,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\",-17.6666"); - add_srs_wkt (p, 5, - "6666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",28],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",0],PARAMETER[\"false_northing\",-50"); - add_srs_wkt (p, 11, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"31"); - add_srs_wkt (p, 13, - "251\"]]"); - p = add_epsg_def (filter, first, last, 31252, "epsg", 31252, - "MGI (Ferro) / Austria GK Central Zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=-5000000"); - add_proj4text (p, 1, - " +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI (Ferro) / Austria GK Central Zone\",GEOGCS["); - add_srs_wkt (p, 1, - "\"MGI (Ferro)\",DATUM[\"Militar_Geographische_Institut_F"); - add_srs_wkt (p, 2, - "erro\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,480,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\",-17.6"); - add_srs_wkt (p, 5, - "6666666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\"degre"); - add_srs_wkt (p, 6, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 7, - "HORITY[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 8, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 9, - "entral_meridian\",31],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",0],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 11, - "-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31252\"]]"); - p = add_epsg_def (filter, first, last, 31253, "epsg", 31253, - "MGI (Ferro) / Austria GK East Zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=-5000000"); - add_proj4text (p, 1, - " +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +"); - add_proj4text (p, 2, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI (Ferro) / Austria GK East Zone\",GEOGCS[\"M"); - add_srs_wkt (p, 1, - "GI (Ferro)\",DATUM[\"Militar_Geographische_Institut_Ferr"); - add_srs_wkt (p, 2, - "o\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,480,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\",-17.6666"); - add_srs_wkt (p, 5, - "6666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",34],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",0],PARAMETER[\"false_northing\",-50"); - add_srs_wkt (p, 11, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"31"); - add_srs_wkt (p, 13, - "253\"]]"); - p = add_epsg_def (filter, first, last, 31254, "epsg", 31254, - "MGI / Austria GK West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0="); - add_proj4text (p, 1, - "0 +y_0=-5000000 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Austria GK West\",GEOGCS[\"MGI\",DATUM[\""); - add_srs_wkt (p, 1, - "Militar_Geographische_Institute\",SPHEROID[\"Bessel 1841"); - add_srs_wkt (p, 2, - "\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",10.33333333333333],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",0],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 11, - "-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31254\"]]"); - p = add_epsg_def (filter, first, last, 31255, "epsg", 31255, - "MGI / Austria GK Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0="); - add_proj4text (p, 1, - "0 +y_0=-5000000 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Austria GK Central\",GEOGCS[\"MGI\",DATUM"); - add_srs_wkt (p, 1, - "[\"Militar_Geographische_Institute\",SPHEROID[\"Bessel 1"); - add_srs_wkt (p, 2, - "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); - add_srs_wkt (p, 3, - "]],TOWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.42"); - add_srs_wkt (p, 4, - "32],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",13.33333333333333],PARAMETER[\"scale_factor\",1],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 12, - "],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"31255\"]]"); - p = add_epsg_def (filter, first, last, 31256, "epsg", 31256, - "MGI / Austria GK East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0="); - add_proj4text (p, 1, - "0 +y_0=-5000000 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Austria GK East\",GEOGCS[\"MGI\",DATUM[\""); - add_srs_wkt (p, 1, - "Militar_Geographische_Institute\",SPHEROID[\"Bessel 1841"); - add_srs_wkt (p, 2, - "\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",16.33333333333333],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",0],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 11, - "-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31256\"]]"); - p = add_epsg_def (filter, first, last, 31257, "epsg", 31257, - "MGI / Austria GK M28"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0="); - add_proj4text (p, 1, - "150000 +y_0=-5000000 +datum=hermannskogel +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Austria GK M28\",GEOGCS[\"MGI\",DATUM[\"M"); - add_srs_wkt (p, 1, - "ilitar_Geographische_Institute\",SPHEROID[\"Bessel 1841\""); - add_srs_wkt (p, 2, - ",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "0.33333333333333],PARAMETER[\"scale_factor\",1],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",150000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 12, - "],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"31257\"]]"); - p = add_epsg_def (filter, first, last, 31258, "epsg", 31258, - "MGI / Austria GK M31"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0="); - add_proj4text (p, 1, - "450000 +y_0=-5000000 +datum=hermannskogel +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Austria GK M31\",GEOGCS[\"MGI\",DATUM[\"M"); - add_srs_wkt (p, 1, - "ilitar_Geographische_Institute\",SPHEROID[\"Bessel 1841\""); - add_srs_wkt (p, 2, - ",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "3.33333333333333],PARAMETER[\"scale_factor\",1],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",450000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 12, - "],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"31258\"]]"); - p = add_epsg_def (filter, first, last, 31259, "epsg", 31259, - "MGI / Austria GK M34"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0="); - add_proj4text (p, 1, - "750000 +y_0=-5000000 +datum=hermannskogel +units=m +no_d"); - add_proj4text (p, 2, - "efs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Austria GK M34\",GEOGCS[\"MGI\",DATUM[\"M"); - add_srs_wkt (p, 1, - "ilitar_Geographische_Institute\",SPHEROID[\"Bessel 1841\""); - add_srs_wkt (p, 2, - ",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 5, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 6, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 7, - "4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "6.33333333333333],PARAMETER[\"scale_factor\",1],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",750000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 12, - "],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"31259\"]]"); - p = add_epsg_def (filter, first, last, 31265, "epsg", 31265, - "MGI / 3-degree Gauss zone 5 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); - add_proj4text (p, 1, - "+datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / 3-degree Gauss zone 5 (deprecated)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"MGI\",DATUM[\"Militar_Geographische_Institute\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137"); - add_srs_wkt (p, 4, - ",1.474,5.297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIME"); - add_srs_wkt (p, 5, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 6, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 7, - ",AUTHORITY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 8, - "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); - add_srs_wkt (p, 9, - "[\"central_meridian\",15],PARAMETER[\"scale_factor\",1],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",5500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 11, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"31265\"]]"); - p = add_epsg_def (filter, first, last, 31266, "epsg", 31266, - "MGI / 3-degree Gauss zone 6 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 "); - add_proj4text (p, 1, - "+datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / 3-degree Gauss zone 6 (deprecated)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"MGI\",DATUM[\"Militar_Geographische_Institute\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137"); - add_srs_wkt (p, 4, - ",1.474,5.297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIME"); - add_srs_wkt (p, 5, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 6, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 7, - ",AUTHORITY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 8, - "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); - add_srs_wkt (p, 9, - "[\"central_meridian\",18],PARAMETER[\"scale_factor\",1],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",6500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 11, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"31266\"]]"); - p = add_epsg_def (filter, first, last, 31267, "epsg", 31267, - "MGI / 3-degree Gauss zone 7 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 "); - add_proj4text (p, 1, - "+datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / 3-degree Gauss zone 7 (deprecated)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"MGI\",DATUM[\"Militar_Geographische_Institute\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137"); - add_srs_wkt (p, 4, - ",1.474,5.297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIME"); - add_srs_wkt (p, 5, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 6, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 7, - ",AUTHORITY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 8, - "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); - add_srs_wkt (p, 9, - "[\"central_meridian\",21],PARAMETER[\"scale_factor\",1],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",7500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 11, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"31267\"]]"); - p = add_epsg_def (filter, first, last, 31268, "epsg", 31268, - "MGI / 3-degree Gauss zone 8 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 "); - add_proj4text (p, 1, - "+datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / 3-degree Gauss zone 8 (deprecated)\",GEOG"); - add_srs_wkt (p, 1, - "CS[\"MGI\",DATUM[\"Militar_Geographische_Institute\",SPH"); - add_srs_wkt (p, 2, - "EROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY["); - add_srs_wkt (p, 3, - "\"EPSG\",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137"); - add_srs_wkt (p, 4, - ",1.474,5.297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIME"); - add_srs_wkt (p, 5, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 6, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 7, - ",AUTHORITY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_M"); - add_srs_wkt (p, 8, - "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); - add_srs_wkt (p, 9, - "[\"central_meridian\",24],PARAMETER[\"scale_factor\",1],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",8500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 11, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"31268\"]]"); - p = add_epsg_def (filter, first, last, 31275, "epsg", 31275, - "MGI / Balkans zone 5 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y"); - add_proj4text (p, 1, - "_0=0 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Balkans zone 5 (deprecated)\",GEOGCS[\"MG"); - add_srs_wkt (p, 1, - "I\",DATUM[\"Militar_Geographische_Institute\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137,1.474,5"); - add_srs_wkt (p, 4, - ".297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 5, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 6, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 7, - "TY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",15],PARAMETER[\"scale_factor\",0.9999],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",5500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 12, - "AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31275\"]]"); - p = add_epsg_def (filter, first, last, 31276, "epsg", 31276, - "MGI / Balkans zone 6 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y"); - add_proj4text (p, 1, - "_0=0 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Balkans zone 6 (deprecated)\",GEOGCS[\"MG"); - add_srs_wkt (p, 1, - "I\",DATUM[\"Militar_Geographische_Institute\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137,1.474,5"); - add_srs_wkt (p, 4, - ".297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 5, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 6, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 7, - "TY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",18],PARAMETER[\"scale_factor\",0.9999],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",6500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 12, - "AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31276\"]]"); - p = add_epsg_def (filter, first, last, 31277, "epsg", 31277, - "MGI / Balkans zone 7 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y"); - add_proj4text (p, 1, - "_0=0 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Balkans zone 7 (deprecated)\",GEOGCS[\"MG"); - add_srs_wkt (p, 1, - "I\",DATUM[\"Militar_Geographische_Institute\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137,1.474,5"); - add_srs_wkt (p, 4, - ".297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 5, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 6, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 7, - "TY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",21],PARAMETER[\"scale_factor\",0.9999],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",7500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 12, - "AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31277\"]]"); - p = add_epsg_def (filter, first, last, 31278, "epsg", 31278, - "MGI / Balkans zone 8 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y"); - add_proj4text (p, 1, - "_0=0 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Balkans zone 8 (deprecated)\",GEOGCS[\"MG"); - add_srs_wkt (p, 1, - "I\",DATUM[\"Militar_Geographische_Institute\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137,1.474,5"); - add_srs_wkt (p, 4, - ".297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 5, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 6, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 7, - "TY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",21],PARAMETER[\"scale_factor\",0.9999],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",7500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 12, - "AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31278\"]]"); - p = add_epsg_def (filter, first, last, 31279, "epsg", 31279, - "MGI / Balkans zone 8 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y"); - add_proj4text (p, 1, - "_0=0 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Balkans zone 8 (deprecated)\",GEOGCS[\"MG"); - add_srs_wkt (p, 1, - "I\",DATUM[\"Militar_Geographische_Institute\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137,1.474,5"); - add_srs_wkt (p, 4, - ".297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 5, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 6, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 7, - "TY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 8, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 9, - "l_meridian\",24],PARAMETER[\"scale_factor\",0.9999],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",8500000],PARAMETER[\"false_north"); - add_srs_wkt (p, 11, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 12, - "AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31279\"]]"); - p = add_epsg_def (filter, first, last, 31281, "epsg", 31281, - "MGI (Ferro) / Austria West Zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps"); - add_proj4text (p, 1, - "=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI (Ferro) / Austria West Zone\",GEOGCS[\"MGI "); - add_srs_wkt (p, 1, - "(Ferro)\",DATUM[\"Militar_Geographische_Institut_Ferro\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,480,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\",-17.6666666"); - add_srs_wkt (p, 5, - "6666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",28],PARAMETER[\"scale_factor\",1],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 12, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"31281\"]]"); - p = add_epsg_def (filter, first, last, 31282, "epsg", 31282, - "MGI (Ferro) / Austria Central Zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps"); - add_proj4text (p, 1, - "=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI (Ferro) / Austria Central Zone\",GEOGCS[\"M"); - add_srs_wkt (p, 1, - "GI (Ferro)\",DATUM[\"Militar_Geographische_Institut_Ferr"); - add_srs_wkt (p, 2, - "o\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUT"); - add_srs_wkt (p, 3, - "HORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,480,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\",-17.6666"); - add_srs_wkt (p, 5, - "6666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 8, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 9, - "ral_meridian\",31],PARAMETER[\"scale_factor\",1],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"31282\"]]"); - p = add_epsg_def (filter, first, last, 31283, "epsg", 31283, - "MGI (Ferro) / Austria East Zone"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps"); - add_proj4text (p, 1, - "=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI (Ferro) / Austria East Zone\",GEOGCS[\"MGI "); - add_srs_wkt (p, 1, - "(Ferro)\",DATUM[\"Militar_Geographische_Institut_Ferro\""); - add_srs_wkt (p, 2, - ",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,480,0,0,0,0],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\",-17.6666666"); - add_srs_wkt (p, 5, - "6666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",34],PARAMETER[\"scale_factor\",1],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 12, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"31283\"]]"); - p = add_epsg_def (filter, first, last, 31284, "epsg", 31284, - "MGI / Austria M28"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0="); - add_proj4text (p, 1, - "150000 +y_0=0 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Austria M28\",GEOGCS[\"MGI\",DATUM[\"Mili"); - add_srs_wkt (p, 1, - "tar_Geographische_Institute\",SPHEROID[\"Bessel 1841\",6"); - add_srs_wkt (p, 2, - "377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "0.33333333333333],PARAMETER[\"scale_factor\",1],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",150000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"31284"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 31285, "epsg", 31285, - "MGI / Austria M31"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0="); - add_proj4text (p, 1, - "450000 +y_0=0 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Austria M31\",GEOGCS[\"MGI\",DATUM[\"Mili"); - add_srs_wkt (p, 1, - "tar_Geographische_Institute\",SPHEROID[\"Bessel 1841\",6"); - add_srs_wkt (p, 2, - "377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "3.33333333333333],PARAMETER[\"scale_factor\",1],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",450000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"31285"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 31286, "epsg", 31286, - "MGI / Austria M34"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0="); - add_proj4text (p, 1, - "750000 +y_0=0 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Austria M34\",GEOGCS[\"MGI\",DATUM[\"Mili"); - add_srs_wkt (p, 1, - "tar_Geographische_Institute\",SPHEROID[\"Bessel 1841\",6"); - add_srs_wkt (p, 2, - "377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232],AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 5, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 6, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 7, - "312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); - add_srs_wkt (p, 9, - "6.33333333333333],PARAMETER[\"scale_factor\",1],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",750000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"31286"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 31287, "epsg", 31287, - "MGI / Austria Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.3333"); - add_proj4text (p, 1, - "3333333333 +x_0=400000 +y_0=400000 +datum=hermannskogel "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Austria Lambert\",GEOGCS[\"MGI\",DATUM[\""); - add_srs_wkt (p, 1, - "Militar_Geographische_Institute\",SPHEROID[\"Bessel 1841"); - add_srs_wkt (p, 2, - "\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4312\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 8, - "PARAMETER[\"standard_parallel_1\",49],PARAMETER[\"standa"); - add_srs_wkt (p, 9, - "rd_parallel_2\",46],PARAMETER[\"latitude_of_origin\",47."); - add_srs_wkt (p, 10, - "5],PARAMETER[\"central_meridian\",13.33333333333333],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_easting\",400000],PARAMETER[\"false_north"); - add_srs_wkt (p, 12, - "ing\",400000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); - add_srs_wkt (p, 13, - "\"]],AXIS[\"X\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 14, - "\",\"31287\"]]"); - p = add_epsg_def (filter, first, last, 31288, "epsg", 31288, - "MGI (Ferro) / M28"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=150000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +un"); - add_proj4text (p, 2, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI (Ferro) / M28\",GEOGCS[\"MGI (Ferro)\",DATU"); - add_srs_wkt (p, 1, - "M[\"Militar_Geographische_Institut_Ferro\",SPHEROID[\"Be"); - add_srs_wkt (p, 2, - "ssel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7004\"]],TOWGS84[682,-203,480,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6805\"]],PRIMEM[\"Ferro\",-17.66666666666667,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8909\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4805"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",28],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"31288\"]]"); - p = add_epsg_def (filter, first, last, 31289, "epsg", 31289, - "MGI (Ferro) / M31"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=450000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +un"); - add_proj4text (p, 2, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI (Ferro) / M31\",GEOGCS[\"MGI (Ferro)\",DATU"); - add_srs_wkt (p, 1, - "M[\"Militar_Geographische_Institut_Ferro\",SPHEROID[\"Be"); - add_srs_wkt (p, 2, - "ssel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7004\"]],TOWGS84[682,-203,480,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6805\"]],PRIMEM[\"Ferro\",-17.66666666666667,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8909\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4805"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",31],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",450000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"31289\"]]"); - p = add_epsg_def (filter, first, last, 31290, "epsg", 31290, - "MGI (Ferro) / M34"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=750000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +un"); - add_proj4text (p, 2, - "its=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI (Ferro) / M34\",GEOGCS[\"MGI (Ferro)\",DATU"); - add_srs_wkt (p, 1, - "M[\"Militar_Geographische_Institut_Ferro\",SPHEROID[\"Be"); - add_srs_wkt (p, 2, - "ssel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7004\"]],TOWGS84[682,-203,480,0,0,0,0],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 4, - ",\"6805\"]],PRIMEM[\"Ferro\",-17.66666666666667,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8909\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4805"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 8, - "itude_of_origin\",0],PARAMETER[\"central_meridian\",34],"); - add_srs_wkt (p, 9, - "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",750000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 11, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NORTH],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",EAST],AUTHORITY[\"EPSG\",\"31290\"]]"); - p = add_epsg_def (filter, first, last, 31291, "epsg", 31291, - "MGI (Ferro) / Austria West Zone (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps"); - add_proj4text (p, 1, - "=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI (Ferro) / Austria West Zone (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"MGI (Ferro)\",DATUM[\"Militar_Geographische_Ins"); - add_srs_wkt (p, 2, - "titut_Ferro\",SPHEROID[\"Bessel 1841\",6377397.155,299.1"); - add_srs_wkt (p, 3, - "528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,48"); - add_srs_wkt (p, 4, - "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\""); - add_srs_wkt (p, 5, - ",-17.66666666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\""); - add_srs_wkt (p, 6, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 7, - "],AUTHORITY[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 8, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"central_meridian\",28],PARAMETER[\"scale_factor\",1]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_easting\",0],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 12, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "1291\"]]"); - p = add_epsg_def (filter, first, last, 31292, "epsg", 31292, - "MGI (Ferro) / Austria Central Zone (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps"); - add_proj4text (p, 1, - "=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI (Ferro) / Austria Central Zone (deprecated)"); - add_srs_wkt (p, 1, - "\",GEOGCS[\"MGI (Ferro)\",DATUM[\"Militar_Geographische_"); - add_srs_wkt (p, 2, - "Institut_Ferro\",SPHEROID[\"Bessel 1841\",6377397.155,29"); - add_srs_wkt (p, 3, - "9.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203"); - add_srs_wkt (p, 4, - ",480,0,0,0,0],AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Fer"); - add_srs_wkt (p, 5, - "ro\",-17.66666666666667,AUTHORITY[\"EPSG\",\"8909\"]],UN"); - add_srs_wkt (p, 6, - "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); - add_srs_wkt (p, 7, - "22\"]],AUTHORITY[\"EPSG\",\"4805\"]],PROJECTION[\"Transv"); - add_srs_wkt (p, 8, - "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"central_meridian\",31],PARAMETER[\"scale_factor"); - add_srs_wkt (p, 10, - "\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_n"); - add_srs_wkt (p, 11, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 12, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"31292\"]]"); - p = add_epsg_def (filter, first, last, 31293, "epsg", 31293, - "MGI (Ferro) / Austria East Zone (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps"); - add_proj4text (p, 1, - "=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m"); - add_proj4text (p, 2, - " +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI (Ferro) / Austria East Zone (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"MGI (Ferro)\",DATUM[\"Militar_Geographische_Ins"); - add_srs_wkt (p, 2, - "titut_Ferro\",SPHEROID[\"Bessel 1841\",6377397.155,299.1"); - add_srs_wkt (p, 3, - "528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,48"); - add_srs_wkt (p, 4, - "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\""); - add_srs_wkt (p, 5, - ",-17.66666666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\""); - add_srs_wkt (p, 6, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 7, - "],AUTHORITY[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 8, - "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"central_meridian\",34],PARAMETER[\"scale_factor\",1]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_easting\",0],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 12, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "1293\"]]"); - p = add_epsg_def (filter, first, last, 31294, "epsg", 31294, - "MGI / M28 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0="); - add_proj4text (p, 1, - "150000 +y_0=0 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / M28 (deprecated)\",GEOGCS[\"MGI\",DATUM[\""); - add_srs_wkt (p, 1, - "Militar_Geographische_Institute\",SPHEROID[\"Bessel 1841"); - add_srs_wkt (p, 2, - "\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",10.33333333333333],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",150000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 12, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "1294\"]]"); - p = add_epsg_def (filter, first, last, 31295, "epsg", 31295, - "MGI / M31 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0="); - add_proj4text (p, 1, - "450000 +y_0=0 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / M31 (deprecated)\",GEOGCS[\"MGI\",DATUM[\""); - add_srs_wkt (p, 1, - "Militar_Geographische_Institute\",SPHEROID[\"Bessel 1841"); - add_srs_wkt (p, 2, - "\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",13.33333333333333],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",450000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 12, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "1295\"]]"); - p = add_epsg_def (filter, first, last, 31296, "epsg", 31296, - "MGI / M34 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0="); - add_proj4text (p, 1, - "750000 +y_0=0 +datum=hermannskogel +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / M34 (deprecated)\",GEOGCS[\"MGI\",DATUM[\""); - add_srs_wkt (p, 1, - "Militar_Geographische_Institute\",SPHEROID[\"Bessel 1841"); - add_srs_wkt (p, 2, - "\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]]"); - add_srs_wkt (p, 3, - ",TOWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232"); - add_srs_wkt (p, 4, - "],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 5, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 6, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 7, - ",\"4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 8, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 9, - "\",16.33333333333333],PARAMETER[\"scale_factor\",1],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_easting\",750000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 11, - "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 12, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 13, - "1296\"]]"); - p = add_epsg_def (filter, first, last, 31297, "epsg", 31297, - "MGI / Austria Lambert (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.3333"); - add_proj4text (p, 1, - "3333333333 +x_0=400000 +y_0=400000 +datum=hermannskogel "); - add_proj4text (p, 2, - "+units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"MGI / Austria Lambert (deprecated)\",GEOGCS[\"M"); - add_srs_wkt (p, 1, - "GI\",DATUM[\"Militar_Geographische_Institute\",SPHEROID["); - add_srs_wkt (p, 2, - "\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137,1.474"); - add_srs_wkt (p, 4, - ",5.297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 5, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4312\"]],PROJECTION[\"Lambert_Conformal_C"); - add_srs_wkt (p, 8, - "onic_2SP\"],PARAMETER[\"standard_parallel_1\",49],PARAME"); - add_srs_wkt (p, 9, - "TER[\"standard_parallel_2\",46],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 10, - "origin\",47.5],PARAMETER[\"central_meridian\",13.3333333"); - add_srs_wkt (p, 11, - "3333333],PARAMETER[\"false_easting\",400000],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",400000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 14, - "RITY[\"EPSG\",\"31297\"]]"); - p = add_epsg_def (filter, first, last, 31300, "epsg", 31300, - "Belge 1972 / Belge Lambert 72"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666"); - add_proj4text (p, 1, - "666 +lat_0=90 +lon_0=4.356939722222222 +x_0=150000.01256"); - add_proj4text (p, 2, - " +y_0=5400088.4378 +ellps=intl +towgs84=-106.869,52.2978"); - add_proj4text (p, 3, - ",-103.724,0.3366,-0.457,1.8422,-1.2747 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Belge 1972 / Belge Lambert 72\",GEOGCS[\"Belge "); - add_srs_wkt (p, 1, - "1972\",DATUM[\"Reseau_National_Belge_1972\",SPHEROID[\"I"); - add_srs_wkt (p, 2, - "nternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"702"); - add_srs_wkt (p, 3, - "2\"]],TOWGS84[-106.869,52.2978,-103.724,0.3366,-0.457,1."); - add_srs_wkt (p, 4, - "8422,-1.2747],AUTHORITY[\"EPSG\",\"6313\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 5, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4313\"]],PROJECTION[\"Lambert_Conformal_C"); - add_srs_wkt (p, 8, - "onic_2SP_Belgium\"],PARAMETER[\"standard_parallel_1\",49"); - add_srs_wkt (p, 9, - ".83333333333334],PARAMETER[\"standard_parallel_2\",51.16"); - add_srs_wkt (p, 10, - "666666666666],PARAMETER[\"latitude_of_origin\",90],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"central_meridian\",4.356939722222222],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_easting\",150000.01256],PARAMETER[\"false_northing"); - add_srs_wkt (p, 13, - "\",5400088.4378],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 14, - "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 15, - "PSG\",\"31300\"]]"); - p = add_epsg_def (filter, first, last, 31370, "epsg", 31370, - "Belge 1972 / Belgian Lambert 72"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +la"); - add_proj4text (p, 1, - "t_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=540"); - add_proj4text (p, 2, - "0088.438 +ellps=intl +towgs84=-106.869,52.2978,-103.724,"); - add_proj4text (p, 3, - "0.3366,-0.457,1.8422,-1.2747 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Belge 1972 / Belgian Lambert 72\",GEOGCS[\"Belg"); - add_srs_wkt (p, 1, - "e 1972\",DATUM[\"Reseau_National_Belge_1972\",SPHEROID[\""); - add_srs_wkt (p, 2, - "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "22\"]],TOWGS84[-106.869,52.2978,-103.724,0.3366,-0.457,1"); - add_srs_wkt (p, 4, - ".8422,-1.2747],AUTHORITY[\"EPSG\",\"6313\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 5, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 6, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 7, - "ITY[\"EPSG\",\"4313\"]],PROJECTION[\"Lambert_Conformal_C"); - add_srs_wkt (p, 8, - "onic_2SP\"],PARAMETER[\"standard_parallel_1\",51.1666672"); - add_srs_wkt (p, 9, - "3333333],PARAMETER[\"standard_parallel_2\",49.8333339],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"latitude_of_origin\",90],PARAMETER[\"central_"); - add_srs_wkt (p, 11, - "meridian\",4.367486666666666],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 12, - ",150000.013],PARAMETER[\"false_northing\",5400088.438],U"); - add_srs_wkt (p, 13, - "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 14, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"31370\"]]"); - p = add_epsg_def (filter, first, last, 31461, "epsg", 31461, - "DHDN / 3-degree Gauss zone 1 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +"); - add_proj4text (p, 1, - "datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DHDN / 3-degree Gauss zone 1 (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-"); - add_srs_wkt (p, 4, - "2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 5, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",3],PARAMETER[\"scale_factor\",1],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",1500000],PARAMETER[\"false_northing\",0]"); - add_srs_wkt (p, 11, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"31461\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 31462, "epsg", 31462, - "DHDN / 3-degree Gauss zone 2 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +"); - add_proj4text (p, 1, - "datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DHDN / 3-degree Gauss zone 2 (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-"); - add_srs_wkt (p, 4, - "2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 5, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",6],PARAMETER[\"scale_factor\",1],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",2500000],PARAMETER[\"false_northing\",0]"); - add_srs_wkt (p, 11, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"31462\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 31463, "epsg", 31463, - "DHDN / 3-degree Gauss zone 3 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); - add_proj4text (p, 1, - "datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DHDN / 3-degree Gauss zone 3 (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-"); - add_srs_wkt (p, 4, - "2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 5, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",9],PARAMETER[\"scale_factor\",1],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",3500000],PARAMETER[\"false_northing\",0]"); - add_srs_wkt (p, 11, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"31463\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 31464, "epsg", 31464, - "DHDN / 3-degree Gauss zone 4 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); - add_proj4text (p, 1, - "+datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DHDN / 3-degree Gauss zone 4 (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-"); - add_srs_wkt (p, 4, - "2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 5, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",12],PARAMETER[\"scale_factor\",1],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",4500000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 11, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"31464\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 31465, "epsg", 31465, - "DHDN / 3-degree Gauss zone 5 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); - add_proj4text (p, 1, - "+datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DHDN / 3-degree Gauss zone 5 (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-"); - add_srs_wkt (p, 4, - "2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 5, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 6, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 7, - "[\"EPSG\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); - add_srs_wkt (p, 9, - "_meridian\",15],PARAMETER[\"scale_factor\",1],PARAMETER["); - add_srs_wkt (p, 10, - "\"false_easting\",5500000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 11, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 12, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"31465\""); - add_srs_wkt (p, 13, - "]]"); - p = add_epsg_def (filter, first, last, 31466, "epsg", 31466, - "DHDN / 3-degree Gauss-Kruger zone 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +"); - add_proj4text (p, 1, - "datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DHDN / 3-degree Gauss-Kruger zone 2\",GEOGCS[\""); - add_srs_wkt (p, 1, - "DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,"); - add_srs_wkt (p, 4, - "6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 9, - "ian\",6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",2500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 11, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NO"); - add_srs_wkt (p, 12, - "RTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"31466\"]]"); - p = add_epsg_def (filter, first, last, 31467, "epsg", 31467, - "DHDN / 3-degree Gauss-Kruger zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); - add_proj4text (p, 1, - "datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DHDN / 3-degree Gauss-Kruger zone 3\",GEOGCS[\""); - add_srs_wkt (p, 1, - "DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,"); - add_srs_wkt (p, 4, - "6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 9, - "ian\",9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",3500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 11, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",NO"); - add_srs_wkt (p, 12, - "RTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"31467\"]]"); - p = add_epsg_def (filter, first, last, 31468, "epsg", 31468, - "DHDN / 3-degree Gauss-Kruger zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); - add_proj4text (p, 1, - "+datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DHDN / 3-degree Gauss-Kruger zone 4\",GEOGCS[\""); - add_srs_wkt (p, 1, - "DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,"); - add_srs_wkt (p, 4, - "6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 9, - "ian\",12],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",4500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 12, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"31468\"]]"); - p = add_epsg_def (filter, first, last, 31469, "epsg", 31469, - "DHDN / 3-degree Gauss-Kruger zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); - add_proj4text (p, 1, - "+datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DHDN / 3-degree Gauss-Kruger zone 5\",GEOGCS[\""); - add_srs_wkt (p, 1, - "DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\""); - add_srs_wkt (p, 2, - "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,"); - add_srs_wkt (p, 4, - "6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 5, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 6, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 7, - "G\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 9, - "ian\",15],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",5500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",N"); - add_srs_wkt (p, 12, - "ORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"31469\"]]"); - p = add_epsg_def (filter, first, last, 31528, "epsg", 31528, - "Conakry 1905 / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,"); - add_proj4text (p, 1, - "259,-9,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Conakry 1905 / UTM zone 28N\",GEOGCS[\"Conakry "); - add_srs_wkt (p, 1, - "1905\",DATUM[\"Conakry_1905\",SPHEROID[\"Clarke 1880 (IG"); - add_srs_wkt (p, 2, - "N)\",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "11\"]],TOWGS84[-23,259,-9,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6315\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4315\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",-15],PARAMETER[\"scal"); - add_srs_wkt (p, 9, - "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 12, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"31528\"]]"); - p = add_epsg_def (filter, first, last, 31529, "epsg", 31529, - "Conakry 1905 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,"); - add_proj4text (p, 1, - "259,-9,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Conakry 1905 / UTM zone 29N\",GEOGCS[\"Conakry "); - add_srs_wkt (p, 1, - "1905\",DATUM[\"Conakry_1905\",SPHEROID[\"Clarke 1880 (IG"); - add_srs_wkt (p, 2, - "N)\",6378249.2,293.4660212936269,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "11\"]],TOWGS84[-23,259,-9,0,0,0,0],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 4, - "6315\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); - add_srs_wkt (p, 5, - "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4315\"]],PROJECTION["); - add_srs_wkt (p, 7, - "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); - add_srs_wkt (p, 8, - ",0],PARAMETER[\"central_meridian\",-9],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); - add_srs_wkt (p, 12, - "ing\",NORTH],AUTHORITY[\"EPSG\",\"31529\"]]"); - p = add_epsg_def (filter, first, last, 31600, "epsg", 31600, - "Dealul Piscului 1930 / Stereo 33"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=45.9 +lon_0=25.39246588888889 +k=0.9"); - add_proj4text (p, 1, - "996667 +x_0=500000 +y_0=500000 +ellps=intl +towgs84=103."); - add_proj4text (p, 2, - "25,-100.4,-307.19,0,0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Dealul Piscului 1930 / Stereo 33\",GEOGCS[\"Dea"); - add_srs_wkt (p, 1, - "lul Piscului 1930\",DATUM[\"Dealul_Piscului_1930\",SPHER"); - add_srs_wkt (p, 2, - "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 3, - ",\"7022\"]],TOWGS84[103.25,-100.4,-307.19,0,0,0,0],AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"6316\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 5, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4316"); - add_srs_wkt (p, 7, - "\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER[\"l"); - add_srs_wkt (p, 8, - "atitude_of_origin\",45.9],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",25.39246588888889],PARAMETER[\"scale_factor\",0.9996667"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "northing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"31600\"]]"); - p = add_epsg_def (filter, first, last, 31700, "epsg", 31700, - "Dealul Piscului 1970/ Stereo 70 (deprecated)"); - add_proj4text (p, 0, - "+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 "); - add_proj4text (p, 1, - "+y_0=500000 +ellps=krass +towgs84=28,-121,-77,0,0,0,0 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"Dealul Piscului 1970/ Stereo 70 (deprecated)\","); - add_srs_wkt (p, 1, - "GEOGCS[\"Dealul Piscului 1970\",DATUM[\"Dealul_Piscului_"); - add_srs_wkt (p, 2, - "1970\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"7024\"]],TOWGS84[28,-121,-77,0,0,0,0],AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"6317\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 5, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 6, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"43"); - add_srs_wkt (p, 7, - "17\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER[\""); - add_srs_wkt (p, 8, - "latitude_of_origin\",46],PARAMETER[\"central_meridian\","); - add_srs_wkt (p, 9, - "25],PARAMETER[\"scale_factor\",0.99975],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_easting\",500000],PARAMETER[\"false_northing\",500000]"); - add_srs_wkt (p, 11, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); - add_srs_wkt (p, 12, - "\",NORTH],AXIS[\"Y\",EAST],AUTHORITY[\"EPSG\",\"31700\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 31838, "epsg", 31838, - "NGN / UTM zone 38N"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NGN / UTM zone 38N\",GEOGCS[\"NGN\",DATUM[\"Nat"); - add_srs_wkt (p, 1, - "ional_Geodetic_Network\",SPHEROID[\"WGS 84\",6378137,298"); - add_srs_wkt (p, 2, - ".257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[-3.2,-5"); - add_srs_wkt (p, 3, - ".7,2.8,0,0,0,0],AUTHORITY[\"EPSG\",\"6318\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4318\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",45],PARAMETER[\"scale_factor\",0.9996],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",500000],PARAMETER[\"false_no"); - add_srs_wkt (p, 10, - "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"31838\"]]"); - p = add_epsg_def (filter, first, last, 31839, "epsg", 31839, - "NGN / UTM zone 39N"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0"); - add_proj4text (p, 1, - ",0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NGN / UTM zone 39N\",GEOGCS[\"NGN\",DATUM[\"Nat"); - add_srs_wkt (p, 1, - "ional_Geodetic_Network\",SPHEROID[\"WGS 84\",6378137,298"); - add_srs_wkt (p, 2, - ".257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[-3.2,-5"); - add_srs_wkt (p, 3, - ".7,2.8,0,0,0,0],AUTHORITY[\"EPSG\",\"6318\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4318\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",51],PARAMETER[\"scale_factor\",0.9996],"); - add_srs_wkt (p, 9, - "PARAMETER[\"false_easting\",500000],PARAMETER[\"false_no"); - add_srs_wkt (p, 10, - "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"31839\"]]"); - p = add_epsg_def (filter, first, last, 31900, "epsg", 31900, - "KUDAMS / KTM (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=48 +k=0.9996 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=GRS80 +towgs84=-20.8,11.3,2.4,0,0,0,0 +units="); - add_proj4text (p, 2, - "m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"KUDAMS / KTM (deprecated)\",GEOGCS[\"KUDAMS\",D"); - add_srs_wkt (p, 1, - "ATUM[\"Kuwait_Utility\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 2, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[-20.8,"); - add_srs_wkt (p, 3, - "11.3,2.4,0,0,0,0],AUTHORITY[\"EPSG\",\"6319\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4319\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",48],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); - add_srs_wkt (p, 10, - "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); - add_srs_wkt (p, 11, - "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"31900\"]]"); - p = add_epsg_def (filter, first, last, 31901, "epsg", 31901, - "KUDAMS / KTM"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +"); - add_proj4text (p, 1, - "ellps=GRS80 +towgs84=-20.8,11.3,2.4,0,0,0,0 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"KUDAMS / KTM\",GEOGCS[\"KUDAMS\",DATUM[\"Kuwait"); - add_srs_wkt (p, 1, - "_Utility\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[-20.8,11.3,2.4,0,0,"); - add_srs_wkt (p, 3, - "0,0],AUTHORITY[\"EPSG\",\"6319\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4319\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); - add_srs_wkt (p, 7, - "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); - add_srs_wkt (p, 8, - "ian\",48],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "31901\"]]"); - p = add_epsg_def (filter, first, last, 31965, "epsg", 31965, - "SIRGAS 2000 / UTM zone 11N"); - add_proj4text (p, 0, - "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 11N\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); - add_srs_wkt (p, 12, - "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"31965\"]]"); - p = add_epsg_def (filter, first, last, 31966, "epsg", 31966, - "SIRGAS 2000 / UTM zone 12N"); - add_proj4text (p, 0, - "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 12N\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); - add_srs_wkt (p, 12, - "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"31966\"]]"); - p = add_epsg_def (filter, first, last, 31967, "epsg", 31967, - "SIRGAS 2000 / UTM zone 13N"); - add_proj4text (p, 0, - "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 13N\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 11, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); - add_srs_wkt (p, 12, - "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 13, - "\"31967\"]]"); - p = add_epsg_def (filter, first, last, 31968, "epsg", 31968, - "SIRGAS 2000 / UTM zone 14N"); - add_proj4text (p, 0, - "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 14N\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-99],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31968\"]]"); - p = add_epsg_def (filter, first, last, 31969, "epsg", 31969, - "SIRGAS 2000 / UTM zone 15N"); - add_proj4text (p, 0, - "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 15N\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-93],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31969\"]]"); - p = add_epsg_def (filter, first, last, 31970, "epsg", 31970, - "SIRGAS 2000 / UTM zone 16N"); - add_proj4text (p, 0, - "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 16N\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-87],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31970\"]]"); - p = add_epsg_def (filter, first, last, 31971, "epsg", 31971, - "SIRGAS 2000 / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 17N\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31971\"]]"); - p = add_epsg_def (filter, first, last, 31972, "epsg", 31972, - "SIRGAS 2000 / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 18N\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31972\"]]"); - p = add_epsg_def (filter, first, last, 31973, "epsg", 31973, - "SIRGAS 2000 / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 19N\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31973\"]]"); - p = add_epsg_def (filter, first, last, 31974, "epsg", 31974, - "SIRGAS 2000 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 20N\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31974\"]]"); - p = add_epsg_def (filter, first, last, 31975, "epsg", 31975, - "SIRGAS 2000 / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 21N\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31975\"]]"); - p = add_epsg_def (filter, first, last, 31976, "epsg", 31976, - "SIRGAS 2000 / UTM zone 22N"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 22N\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 11, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 12, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "31976\"]]"); - p = add_epsg_def (filter, first, last, 31977, "epsg", 31977, - "SIRGAS 2000 / UTM zone 17S"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 17S\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"31977\"]]"); - p = add_epsg_def (filter, first, last, 31978, "epsg", 31978, - "SIRGAS 2000 / UTM zone 18S"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 18S\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"31978\"]]"); - p = add_epsg_def (filter, first, last, 31979, "epsg", 31979, - "SIRGAS 2000 / UTM zone 19S"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 19S\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"31979\"]]"); - p = add_epsg_def (filter, first, last, 31980, "epsg", 31980, - "SIRGAS 2000 / UTM zone 20S"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 20S\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"31980\"]]"); - p = add_epsg_def (filter, first, last, 31981, "epsg", 31981, - "SIRGAS 2000 / UTM zone 21S"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 21S\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"31981\"]]"); - p = add_epsg_def (filter, first, last, 31982, "epsg", 31982, - "SIRGAS 2000 / UTM zone 22S"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 22S\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"31982\"]]"); - p = add_epsg_def (filter, first, last, 31983, "epsg", 31983, - "SIRGAS 2000 / UTM zone 23S"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 23S\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"31983\"]]"); - p = add_epsg_def (filter, first, last, 31984, "epsg", 31984, - "SIRGAS 2000 / UTM zone 24S"); - add_proj4text (p, 0, - "+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 24S\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"31984\"]]"); - p = add_epsg_def (filter, first, last, 31985, "epsg", 31985, - "SIRGAS 2000 / UTM zone 25S"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 2000 / UTM zone 25S\",GEOGCS[\"SIRGAS 20"); - add_srs_wkt (p, 1, - "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); - add_srs_wkt (p, 2, - "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); - add_srs_wkt (p, 3, - "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); - add_srs_wkt (p, 4, - ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 5, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 6, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 7, - "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 8, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 9, - ",-33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 11, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"31985\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_36.c b/src/spatialite/src/srsinit/epsg_inlined_36.c deleted file mode 100644 index 30b96c1..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_36.c +++ /dev/null @@ -1,3582 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_36 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 31986, "epsg", 31986, - "SIRGAS 1995 / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 1995 / UTM zone 17N\",GEOGCS[\"SIRGAS 19"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); - add_srs_wkt (p, 2, - "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 12, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"31986\"]]"); - p = add_epsg_def (filter, first, last, 31987, "epsg", 31987, - "SIRGAS 1995 / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 1995 / UTM zone 18N\",GEOGCS[\"SIRGAS 19"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); - add_srs_wkt (p, 2, - "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 12, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"31987\"]]"); - p = add_epsg_def (filter, first, last, 31988, "epsg", 31988, - "SIRGAS 1995 / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 1995 / UTM zone 19N\",GEOGCS[\"SIRGAS 19"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); - add_srs_wkt (p, 2, - "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 12, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"31988\"]]"); - p = add_epsg_def (filter, first, last, 31989, "epsg", 31989, - "SIRGAS 1995 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 1995 / UTM zone 20N\",GEOGCS[\"SIRGAS 19"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); - add_srs_wkt (p, 2, - "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 12, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"31989\"]]"); - p = add_epsg_def (filter, first, last, 31990, "epsg", 31990, - "SIRGAS 1995 / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 1995 / UTM zone 21N\",GEOGCS[\"SIRGAS 19"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); - add_srs_wkt (p, 2, - "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 12, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"31990\"]]"); - p = add_epsg_def (filter, first, last, 31991, "epsg", 31991, - "SIRGAS 1995 / UTM zone 22N"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); - add_proj4text (p, 1, - "units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 1995 / UTM zone 22N\",GEOGCS[\"SIRGAS 19"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); - add_srs_wkt (p, 2, - "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); - add_srs_wkt (p, 12, - "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"31991\"]]"); - p = add_epsg_def (filter, first, last, 31992, "epsg", 31992, - "SIRGAS 1995 / UTM zone 17S"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 1995 / UTM zone 17S\",GEOGCS[\"SIRGAS 19"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); - add_srs_wkt (p, 2, - "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 11, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"31992\"]]"); - p = add_epsg_def (filter, first, last, 31993, "epsg", 31993, - "SIRGAS 1995 / UTM zone 18S"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 1995 / UTM zone 18S\",GEOGCS[\"SIRGAS 19"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); - add_srs_wkt (p, 2, - "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 11, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"31993\"]]"); - p = add_epsg_def (filter, first, last, 31994, "epsg", 31994, - "SIRGAS 1995 / UTM zone 19S"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 1995 / UTM zone 19S\",GEOGCS[\"SIRGAS 19"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); - add_srs_wkt (p, 2, - "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 11, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"31994\"]]"); - p = add_epsg_def (filter, first, last, 31995, "epsg", 31995, - "SIRGAS 1995 / UTM zone 20S"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 1995 / UTM zone 20S\",GEOGCS[\"SIRGAS 19"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); - add_srs_wkt (p, 2, - "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 11, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"31995\"]]"); - p = add_epsg_def (filter, first, last, 31996, "epsg", 31996, - "SIRGAS 1995 / UTM zone 21S"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 1995 / UTM zone 21S\",GEOGCS[\"SIRGAS 19"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); - add_srs_wkt (p, 2, - "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 11, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"31996\"]]"); - p = add_epsg_def (filter, first, last, 31997, "epsg", 31997, - "SIRGAS 1995 / UTM zone 22S"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 1995 / UTM zone 22S\",GEOGCS[\"SIRGAS 19"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); - add_srs_wkt (p, 2, - "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 11, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"31997\"]]"); - p = add_epsg_def (filter, first, last, 31998, "epsg", 31998, - "SIRGAS 1995 / UTM zone 23S"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 1995 / UTM zone 23S\",GEOGCS[\"SIRGAS 19"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); - add_srs_wkt (p, 2, - "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 11, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"31998\"]]"); - p = add_epsg_def (filter, first, last, 31999, "epsg", 31999, - "SIRGAS 1995 / UTM zone 24S"); - add_proj4text (p, 0, - "+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 1995 / UTM zone 24S\",GEOGCS[\"SIRGAS 19"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); - add_srs_wkt (p, 2, - "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 11, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"31999\"]]"); - p = add_epsg_def (filter, first, last, 32000, "epsg", 32000, - "SIRGAS 1995 / UTM zone 25S"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,"); - add_proj4text (p, 1, - "0,0,0 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"SIRGAS 1995 / UTM zone 25S\",GEOGCS[\"SIRGAS 19"); - add_srs_wkt (p, 1, - "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); - add_srs_wkt (p, 2, - "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); - add_srs_wkt (p, 3, - "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); - add_srs_wkt (p, 4, - ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); - add_srs_wkt (p, 6, - "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 7, - "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); - add_srs_wkt (p, 8, - "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 9, - "an\",-33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_easting\",500000],PARAMETER[\"false_northing\",100"); - add_srs_wkt (p, 11, - "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); - add_srs_wkt (p, 13, - "\"EPSG\",\"32000\"]]"); - p = add_epsg_def (filter, first, last, 32001, "epsg", 32001, - "NAD27 / Montana North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.71666666666667 +lat_2=47.85 +lat_0=4"); - add_proj4text (p, 1, - "7 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD"); - add_proj4text (p, 2, - "27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Montana North\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"standard_parallel_1\",48.71666666666667],PARA"); - add_srs_wkt (p, 8, - "METER[\"standard_parallel_2\",47.85],PARAMETER[\"latitud"); - add_srs_wkt (p, 9, - "e_of_origin\",47],PARAMETER[\"central_meridian\",-109.5]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_easting\",2000000],PARAMETER[\"false_"); - add_srs_wkt (p, 11, - "northing\",0],UNIT[\"US survey foot\",0.3048006096012192"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 13, - "\",NORTH],AUTHORITY[\"EPSG\",\"32001\"]]"); - p = add_epsg_def (filter, first, last, 32002, "epsg", 32002, - "NAD27 / Montana Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.88333333333333 +lat_2=46.45 +lat_0=4"); - add_proj4text (p, 1, - "5.83333333333334 +lon_0=-109.5 +x_0=609601.2192024384 +y"); - add_proj4text (p, 2, - "_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Montana Central\",GEOGCS[\"NAD27\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",47.88333333333333],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",46.45],PARAMETER[\"latitu"); - add_srs_wkt (p, 9, - "de_of_origin\",45.83333333333334],PARAMETER[\"central_me"); - add_srs_wkt (p, 10, - "ridian\",-109.5],PARAMETER[\"false_easting\",2000000],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0."); - add_srs_wkt (p, 12, - "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32002\"]]"); - p = add_epsg_def (filter, first, last, 32003, "epsg", 32003, - "NAD27 / Montana South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46.4 +lat_2=44.86666666666667 +lat_0=44"); - add_proj4text (p, 1, - " +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD2"); - add_proj4text (p, 2, - "7 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Montana South\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"standard_parallel_1\",46.4],PARAMETER[\"stand"); - add_srs_wkt (p, 8, - "ard_parallel_2\",44.86666666666667],PARAMETER[\"latitude"); - add_srs_wkt (p, 9, - "_of_origin\",44],PARAMETER[\"central_meridian\",-109.5],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",2000000],PARAMETER[\"false_n"); - add_srs_wkt (p, 11, - "orthing\",0],UNIT[\"US survey foot\",0.3048006096012192,"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 13, - ",NORTH],AUTHORITY[\"EPSG\",\"32003\"]]"); - p = add_epsg_def (filter, first, last, 32005, "epsg", 32005, - "NAD27 / Nebraska North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.85 +lat_2=42.81666666666667 +lat_0=4"); - add_proj4text (p, 1, - "1.33333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Nebraska North\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",41.85],PARAMETER[\"sta"); - add_srs_wkt (p, 8, - "ndard_parallel_2\",42.81666666666667],PARAMETER[\"latitu"); - add_srs_wkt (p, 9, - "de_of_origin\",41.33333333333334],PARAMETER[\"central_me"); - add_srs_wkt (p, 10, - "ridian\",-100],PARAMETER[\"false_easting\",2000000],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); - add_srs_wkt (p, 12, - "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); - add_srs_wkt (p, 13, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32005\"]]"); - p = add_epsg_def (filter, first, last, 32006, "epsg", 32006, - "NAD27 / Nebraska South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.28333333333333 +lat_2=41.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=39.66666666666666 +lon_0=-99.5 +x_0=609601.21"); - add_proj4text (p, 2, - "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Nebraska South\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",40.28333333333333],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",41.71666666666667],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",39.66666666666666],PARAMETER["); - add_srs_wkt (p, 10, - "\"central_meridian\",-99.5],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 11, - "2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surve"); - add_srs_wkt (p, 12, - "y foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]"); - add_srs_wkt (p, 13, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 14, - "\"32006\"]]"); - p = add_epsg_def (filter, first, last, 32007, "epsg", 32007, - "NAD27 / Nevada East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=u"); - add_proj4text (p, 2, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Nevada East\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",34.75],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-115.5833333333333],PARAMETER[\"scale_factor\",0.9999"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"US survey foot\",0.3048006096012192"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32007\"]]"); - p = add_epsg_def (filter, first, last, 32008, "epsg", 32008, - "NAD27 / Nevada Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=u"); - add_proj4text (p, 2, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Nevada Central\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",34.75],PARAMETER[\"central_meri"); - add_srs_wkt (p, 8, - "dian\",-116.6666666666667],PARAMETER[\"scale_factor\",0."); - add_srs_wkt (p, 9, - "9999],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); - add_srs_wkt (p, 11, - "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32008\"]]"); - p = add_epsg_def (filter, first, last, 32009, "epsg", 32009, - "NAD27 / Nevada West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=u"); - add_proj4text (p, 2, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Nevada West\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",34.75],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-118.5833333333333],PARAMETER[\"scale_factor\",0.9999"); - add_srs_wkt (p, 9, - "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); - add_srs_wkt (p, 10, - "northing\",0],UNIT[\"US survey foot\",0.3048006096012192"); - add_srs_wkt (p, 11, - ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32009\"]]"); - p = add_epsg_def (filter, first, last, 32010, "epsg", 32010, - "NAD27 / New Hampshire"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +uni"); - add_proj4text (p, 2, - "ts=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / New Hampshire\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",42.5],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 8, - "an\",-71.66666666666667],PARAMETER[\"scale_factor\",0.99"); - add_srs_wkt (p, 9, - "9966667],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 11, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32010\"]]"); - p = add_epsg_def (filter, first, last, 32011, "epsg", 32011, - "NAD27 / New Jersey"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.66666666"); - add_proj4text (p, 1, - "666667 +k=0.9999749999999999 +x_0=609601.2192024384 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / New Jersey\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",38.83333333333334],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-74.66666666666667],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.999975],PARAMETER[\"false_easting\",2000000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); - add_srs_wkt (p, 11, - "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32011\"]]"); - p = add_epsg_def (filter, first, last, 32012, "epsg", 32012, - "NAD27 / New Mexico East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); - add_proj4text (p, 1, - "909091 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units"); - add_proj4text (p, 2, - "=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / New Mexico East\",GEOGCS[\"NAD27\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",31],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 8, - "n\",-104.3333333333333],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "909091],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 11, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32012\"]]"); - p = add_epsg_def (filter, first, last, 32013, "epsg", 32013, - "NAD27 / New Mexico Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=1524"); - add_proj4text (p, 1, - "00.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / New Mexico Central\",GEOGCS[\"NAD27\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); - add_srs_wkt (p, 2, - "6\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"latitude_of_origin\",31],PARAMETER[\"central_mer"); - add_srs_wkt (p, 8, - "idian\",-106.25],PARAMETER[\"scale_factor\",0.9999],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); - add_srs_wkt (p, 10, - "ng\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"32013\"]]"); - p = add_epsg_def (filter, first, last, 32014, "epsg", 32014, - "NAD27 / New Mexico West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); - add_proj4text (p, 1, - "916667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units"); - add_proj4text (p, 2, - "=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / New Mexico West\",GEOGCS[\"NAD27\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",31],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 8, - "n\",-107.8333333333333],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "916667],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 11, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32014\"]]"); - p = add_epsg_def (filter, first, last, 32015, "epsg", 32015, - "NAD27 / New York East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=-74.33333333333333 +k=0.999"); - add_proj4text (p, 1, - "966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units"); - add_proj4text (p, 2, - "=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / New York East\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",40],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-74.33333333333333],PARAMETER[\"scale_factor\",0.9999"); - add_srs_wkt (p, 9, - "66667],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); - add_srs_wkt (p, 10, - "alse_northing\",0],UNIT[\"US survey foot\",0.30480060960"); - add_srs_wkt (p, 11, - "12192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32015\"]]"); - p = add_epsg_def (filter, first, last, 32016, "epsg", 32016, - "NAD27 / New York Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); - add_proj4text (p, 1, - "9375 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=u"); - add_proj4text (p, 2, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / New York Central\",GEOGCS[\"NAD27\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",40],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 8, - "n\",-76.58333333333333],PARAMETER[\"scale_factor\",0.999"); - add_srs_wkt (p, 9, - "9375],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); - add_srs_wkt (p, 11, - "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 12, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32016\"]]"); - p = add_epsg_def (filter, first, last, 32017, "epsg", 32017, - "NAD27 / New York West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); - add_proj4text (p, 1, - "9375 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=u"); - add_proj4text (p, 2, - "s-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / New York West\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",40],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-78.58333333333333],PARAMETER[\"scale_factor\",0.9999"); - add_srs_wkt (p, 9, - "375],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 11, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32017\"]]"); - p = add_epsg_def (filter, first, last, 32018, "epsg", 32018, - "NAD27 / New York Long Island (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=40.5 +lon_0=-74 +x_0=304800.6096012192 +y_0=0"); - add_proj4text (p, 2, - " +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / New York Long Island (deprecated)\",GEO"); - add_srs_wkt (p, 1, - "GCS[\"NAD27\",DATUM[\"North_American_Datum_1927\",SPHERO"); - add_srs_wkt (p, 2, - "ID[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY"); - add_srs_wkt (p, 3, - "[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIME"); - add_srs_wkt (p, 4, - "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); - add_srs_wkt (p, 5, - "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); - add_srs_wkt (p, 6, - ",AUTHORITY[\"EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conf"); - add_srs_wkt (p, 7, - "ormal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41."); - add_srs_wkt (p, 8, - "03333333333333],PARAMETER[\"standard_parallel_2\",40.666"); - add_srs_wkt (p, 9, - "66666666666],PARAMETER[\"latitude_of_origin\",40.5],PARA"); - add_srs_wkt (p, 10, - "METER[\"central_meridian\",-74],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 11, - "g\",1000000],PARAMETER[\"false_northing\",0],UNIT[\"US s"); - add_srs_wkt (p, 12, - "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 13, - "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 14, - "G\",\"32018\"]]"); - p = add_epsg_def (filter, first, last, 32019, "epsg", 32019, - "NAD27 / North Carolina"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666"); - add_proj4text (p, 1, - "666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0="); - add_proj4text (p, 2, - "0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / North Carolina\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",34.33333333333334],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",36.16666666666666],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",33.75],PARAMETER[\"central_me"); - add_srs_wkt (p, 10, - "ridian\",-79],PARAMETER[\"false_easting\",2000000],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); - add_srs_wkt (p, 12, - "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 13, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32019\"]]"); - p = add_epsg_def (filter, first, last, 32020, "epsg", 32020, - "NAD27 / North Dakota North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=47 +lon_0=-100.5 +x_0=609601.2192024384 +y_0="); - add_proj4text (p, 2, - "0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / North Dakota North\",GEOGCS[\"NAD27\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); - add_srs_wkt (p, 2, - "6\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",47.43333333333333]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",48.73333333333333],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"latitude_of_origin\",47],PARAMETER[\"central_m"); - add_srs_wkt (p, 10, - "eridian\",-100.5],PARAMETER[\"false_easting\",2000000],P"); - add_srs_wkt (p, 11, - "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); - add_srs_wkt (p, 12, - ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); - add_srs_wkt (p, 13, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32020\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 32021, "epsg", 32021, - "NAD27 / North Dakota South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=609601.2"); - add_proj4text (p, 2, - "192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / North Dakota South\",GEOGCS[\"NAD27\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); - add_srs_wkt (p, 2, - "6\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",46.18333333333333]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",47.48333333333333],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"latitude_of_origin\",45.66666666666666],PARAME"); - add_srs_wkt (p, 10, - "TER[\"central_meridian\",-100.5],PARAMETER[\"false_easti"); - add_srs_wkt (p, 11, - "ng\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US "); - add_srs_wkt (p, 12, - "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); - add_srs_wkt (p, 13, - "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); - add_srs_wkt (p, 14, - "SG\",\"32021\"]]"); - p = add_epsg_def (filter, first, last, 32022, "epsg", 32022, - "NAD27 / Ohio North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-82.5 +x_0=609601.2192024384 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Ohio North\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"standard_parallel_1\",40.43333333333333],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_2\",41.7],PARAMETER[\"latitude_of"); - add_srs_wkt (p, 9, - "_origin\",39.66666666666666],PARAMETER[\"central_meridia"); - add_srs_wkt (p, 10, - "n\",-82.5],PARAMETER[\"false_easting\",2000000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); - add_srs_wkt (p, 12, - "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); - add_srs_wkt (p, 13, - "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32022\"]]"); - p = add_epsg_def (filter, first, last, 32023, "epsg", 32023, - "NAD27 / Ohio South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=38 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0"); - add_proj4text (p, 2, - " +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Ohio South\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"standard_parallel_1\",38.73333333333333],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_2\",40.03333333333333],PARAMETER["); - add_srs_wkt (p, 9, - "\"latitude_of_origin\",38],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 10, - ",-82.5],PARAMETER[\"false_easting\",2000000],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); - add_srs_wkt (p, 12, - "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 13, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32023\"]]"); - p = add_epsg_def (filter, first, last, 32024, "epsg", 32024, - "NAD27 / Oklahoma North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666"); - add_proj4text (p, 1, - "667 +lat_0=35 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +"); - add_proj4text (p, 2, - "datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Oklahoma North\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",35.56666666666667],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",36.76666666666667],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",35],PARAMETER[\"central_merid"); - add_srs_wkt (p, 10, - "ian\",-98],PARAMETER[\"false_easting\",2000000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); - add_srs_wkt (p, 12, - "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); - add_srs_wkt (p, 13, - "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32024\"]]"); - p = add_epsg_def (filter, first, last, 32025, "epsg", 32025, - "NAD27 / Oklahoma South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333"); - add_proj4text (p, 1, - "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=609601.2192"); - add_proj4text (p, 2, - "024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Oklahoma South\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",33.93333333333333],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",35.23333333333333],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",33.33333333333334],PARAMETER["); - add_srs_wkt (p, 10, - "\"central_meridian\",-98],PARAMETER[\"false_easting\",20"); - add_srs_wkt (p, 11, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"US survey "); - add_srs_wkt (p, 12, - "foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],"); - add_srs_wkt (p, 13, - "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "32025\"]]"); - p = add_epsg_def (filter, first, last, 32026, "epsg", 32026, - "NAD27 / Oregon North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.6"); - add_proj4text (p, 1, - "6666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0="); - add_proj4text (p, 2, - "0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Oregon North\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 7, - "AMETER[\"standard_parallel_1\",44.33333333333334],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_2\",46],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 9, - "origin\",43.66666666666666],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 10, - "\",-120.5],PARAMETER[\"false_easting\",2000000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); - add_srs_wkt (p, 12, - "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); - add_srs_wkt (p, 13, - "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32026\"]]"); - p = add_epsg_def (filter, first, last, 32027, "epsg", 32027, - "NAD27 / Oregon South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.6"); - add_proj4text (p, 1, - "6666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0="); - add_proj4text (p, 2, - "0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Oregon South\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 7, - "AMETER[\"standard_parallel_1\",42.33333333333334],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_2\",44],PARAMETER[\"latitude_of_"); - add_srs_wkt (p, 9, - "origin\",41.66666666666666],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 10, - "\",-120.5],PARAMETER[\"false_easting\",2000000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); - add_srs_wkt (p, 12, - "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); - add_srs_wkt (p, 13, - "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32027\"]]"); - p = add_epsg_def (filter, first, last, 32028, "epsg", 32028, - "NAD27 / Pennsylvania North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=4"); - add_proj4text (p, 1, - "0.16666666666666 +lon_0=-77.75 +x_0=609601.2192024384 +y"); - add_proj4text (p, 2, - "_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Pennsylvania North\",GEOGCS[\"NAD27\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); - add_srs_wkt (p, 2, - "6\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",40.88333333333333]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",41.95],PARAMETER[\"la"); - add_srs_wkt (p, 9, - "titude_of_origin\",40.16666666666666],PARAMETER[\"centra"); - add_srs_wkt (p, 10, - "l_meridian\",-77.75],PARAMETER[\"false_easting\",2000000"); - add_srs_wkt (p, 11, - "],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); - add_srs_wkt (p, 12, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32028\""); - add_srs_wkt (p, 14, - "]]"); - p = add_epsg_def (filter, first, last, 32029, "epsg", 32029, - "NAD27 / Pennsylvania South (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.93333333333333 +lat_2=40.8 +lat_0=39"); - add_proj4text (p, 1, - ".33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_"); - add_proj4text (p, 2, - "0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Pennsylvania South (deprecated)\",GEOGC"); - add_srs_wkt (p, 1, - "S[\"NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID"); - add_srs_wkt (p, 2, - "[\"Clarke 1866\",6378206.4,294.9786982138982,AUTHORITY[\""); - add_srs_wkt (p, 3, - "EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39.9333"); - add_srs_wkt (p, 8, - "3333333333],PARAMETER[\"standard_parallel_2\",40.8],PARA"); - add_srs_wkt (p, 9, - "METER[\"latitude_of_origin\",39.33333333333334],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"central_meridian\",-77.75],PARAMETER[\"false_easting"); - add_srs_wkt (p, 11, - "\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US su"); - add_srs_wkt (p, 12, - "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); - add_srs_wkt (p, 13, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 14, - "\",\"32029\"]]"); - p = add_epsg_def (filter, first, last, 32030, "epsg", 32030, - "NAD27 / Rhode Island"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); - add_proj4text (p, 1, - "999938 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units"); - add_proj4text (p, 2, - "=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Rhode Island\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",41.08333333333334],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-71.5],PARAMETER[\"scale_factor\",0.99999"); - add_srs_wkt (p, 9, - "38],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); - add_srs_wkt (p, 10, - "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); - add_srs_wkt (p, 11, - "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"32030\"]]"); - p = add_epsg_def (filter, first, last, 32031, "epsg", 32031, - "NAD27 / South Carolina North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.76666666666667 +lat_2=34.96666666666"); - add_proj4text (p, 1, - "667 +lat_0=33 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +"); - add_proj4text (p, 2, - "datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / South Carolina North\",GEOGCS[\"NAD27\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1"); - add_srs_wkt (p, 2, - "866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 7, - "SP\"],PARAMETER[\"standard_parallel_1\",33.7666666666666"); - add_srs_wkt (p, 8, - "7],PARAMETER[\"standard_parallel_2\",34.96666666666667],"); - add_srs_wkt (p, 9, - "PARAMETER[\"latitude_of_origin\",33],PARAMETER[\"central"); - add_srs_wkt (p, 10, - "_meridian\",-81],PARAMETER[\"false_easting\",2000000],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0."); - add_srs_wkt (p, 12, - "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32031\"]]"); - p = add_epsg_def (filter, first, last, 32033, "epsg", 32033, - "NAD27 / South Carolina South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=32.33333333333334 +lat_2=33.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609601.2192"); - add_proj4text (p, 2, - "024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / South Carolina South\",GEOGCS[\"NAD27\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1"); - add_srs_wkt (p, 2, - "866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 7, - "SP\"],PARAMETER[\"standard_parallel_1\",32.3333333333333"); - add_srs_wkt (p, 8, - "4],PARAMETER[\"standard_parallel_2\",33.66666666666666],"); - add_srs_wkt (p, 9, - "PARAMETER[\"latitude_of_origin\",31.83333333333333],PARA"); - add_srs_wkt (p, 10, - "METER[\"central_meridian\",-81],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 11, - "g\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US s"); - add_srs_wkt (p, 12, - "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 13, - "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 14, - "G\",\"32033\"]]"); - p = add_epsg_def (filter, first, last, 32034, "epsg", 32034, - "NAD27 / South Dakota North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333"); - add_proj4text (p, 1, - "333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=609601.219"); - add_proj4text (p, 2, - "2024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / South Dakota North\",GEOGCS[\"NAD27\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); - add_srs_wkt (p, 2, - "6\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",44.41666666666666]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",45.68333333333333],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"latitude_of_origin\",43.83333333333334],PARAME"); - add_srs_wkt (p, 10, - "TER[\"central_meridian\",-100],PARAMETER[\"false_easting"); - add_srs_wkt (p, 11, - "\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US su"); - add_srs_wkt (p, 12, - "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); - add_srs_wkt (p, 13, - "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); - add_srs_wkt (p, 14, - "\",\"32034\"]]"); - p = add_epsg_def (filter, first, last, 32035, "epsg", 32035, - "NAD27 / South Dakota South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42"); - add_proj4text (p, 1, - ".33333333333334 +lon_0=-100.3333333333333 +x_0=609601.21"); - add_proj4text (p, 2, - "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / South Dakota South\",GEOGCS[\"NAD27\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); - add_srs_wkt (p, 2, - "6\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",42.83333333333334]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",44.4],PARAMETER[\"lat"); - add_srs_wkt (p, 9, - "itude_of_origin\",42.33333333333334],PARAMETER[\"central"); - add_srs_wkt (p, 10, - "_meridian\",-100.3333333333333],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 11, - "g\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US s"); - add_srs_wkt (p, 12, - "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 13, - "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 14, - "G\",\"32035\"]]"); - p = add_epsg_def (filter, first, last, 32036, "epsg", 32036, - "NAD27 / Tennessee (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=3"); - add_proj4text (p, 1, - "4.66666666666666 +lon_0=-86 +x_0=30480.06096012192 +y_0="); - add_proj4text (p, 2, - "0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Tennessee (deprecated)\",GEOGCS[\"NAD27"); - add_srs_wkt (p, 1, - "\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke"); - add_srs_wkt (p, 2, - " 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 3, - "7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 7, - "SP\"],PARAMETER[\"standard_parallel_1\",35.25],PARAMETER"); - add_srs_wkt (p, 8, - "[\"standard_parallel_2\",36.41666666666666],PARAMETER[\""); - add_srs_wkt (p, 9, - "latitude_of_origin\",34.66666666666666],PARAMETER[\"cent"); - add_srs_wkt (p, 10, - "ral_meridian\",-86],PARAMETER[\"false_easting\",100000],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\","); - add_srs_wkt (p, 12, - "0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32036\""); - add_srs_wkt (p, 14, - "]]"); - p = add_epsg_def (filter, first, last, 32037, "epsg", 32037, - "NAD27 / Texas North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=3"); - add_proj4text (p, 1, - "4 +lon_0=-101.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD"); - add_proj4text (p, 2, - "27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Texas North\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 7, - "AMETER[\"standard_parallel_1\",34.65],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_2\",36.18333333333333],PARAMETER[\"latitude_"); - add_srs_wkt (p, 9, - "of_origin\",34],PARAMETER[\"central_meridian\",-101.5],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_easting\",2000000],PARAMETER[\"false_no"); - add_srs_wkt (p, 11, - "rthing\",0],UNIT[\"US survey foot\",0.3048006096012192,A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 13, - ",NORTH],AUTHORITY[\"EPSG\",\"32037\"]]"); - p = add_epsg_def (filter, first, last, 32038, "epsg", 32038, - "NAD27 / Texas North Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666"); - add_proj4text (p, 1, - "667 +lat_0=31.66666666666667 +lon_0=-97.5 +x_0=609601.21"); - add_proj4text (p, 2, - "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Texas North Central\",GEOGCS[\"NAD27\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 18"); - add_srs_wkt (p, 2, - "66\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "08\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",32.13333333333333]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",33.96666666666667],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"latitude_of_origin\",31.66666666666667],PARAME"); - add_srs_wkt (p, 10, - "TER[\"central_meridian\",-97.5],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 11, - "g\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US s"); - add_srs_wkt (p, 12, - "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 13, - "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 14, - "G\",\"32038\"]]"); - p = add_epsg_def (filter, first, last, 32039, "epsg", 32039, - "NAD27 / Texas Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333"); - add_proj4text (p, 1, - "333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); - add_proj4text (p, 2, - "x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Texas Central\",GEOGCS[\"NAD27\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); - add_srs_wkt (p, 2, - "378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"standard_parallel_1\",30.11666666666667],PARA"); - add_srs_wkt (p, 8, - "METER[\"standard_parallel_2\",31.88333333333333],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"latitude_of_origin\",29.66666666666667],PARAMETER[\""); - add_srs_wkt (p, 10, - "central_meridian\",-100.3333333333333],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_easting\",2000000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 12, - "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 13, - ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); - add_srs_wkt (p, 14, - "[\"EPSG\",\"32039\"]]"); - p = add_epsg_def (filter, first, last, 32040, "epsg", 32040, - "NAD27 / Texas South Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333"); - add_proj4text (p, 1, - "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=609601.2192"); - add_proj4text (p, 2, - "024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Texas South Central\",GEOGCS[\"NAD27\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 18"); - add_srs_wkt (p, 2, - "66\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "08\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",28.38333333333333]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",30.28333333333333],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"latitude_of_origin\",27.83333333333333],PARAME"); - add_srs_wkt (p, 10, - "TER[\"central_meridian\",-99],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); - add_srs_wkt (p, 12, - "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"32040\"]]"); - p = add_epsg_def (filter, first, last, 32041, "epsg", 32041, - "NAD27 / Texas South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333"); - add_proj4text (p, 1, - "333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=609601.21"); - add_proj4text (p, 2, - "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Texas South\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 7, - "AMETER[\"standard_parallel_1\",26.16666666666667],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_2\",27.83333333333333],PARAMETER"); - add_srs_wkt (p, 9, - "[\"latitude_of_origin\",25.66666666666667],PARAMETER[\"c"); - add_srs_wkt (p, 10, - "entral_meridian\",-98.5],PARAMETER[\"false_easting\",200"); - add_srs_wkt (p, 11, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"US survey f"); - add_srs_wkt (p, 12, - "oot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],A"); - add_srs_wkt (p, 13, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 14, - "2041\"]]"); - p = add_epsg_def (filter, first, last, 32042, "epsg", 32042, - "NAD27 / Utah North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333"); - add_proj4text (p, 1, - "333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=609601.2"); - add_proj4text (p, 2, - "192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Utah North\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"standard_parallel_1\",40.71666666666667],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_2\",41.78333333333333],PARAMETER["); - add_srs_wkt (p, 9, - "\"latitude_of_origin\",40.33333333333334],PARAMETER[\"ce"); - add_srs_wkt (p, 10, - "ntral_meridian\",-111.5],PARAMETER[\"false_easting\",200"); - add_srs_wkt (p, 11, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"US survey f"); - add_srs_wkt (p, 12, - "oot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],A"); - add_srs_wkt (p, 13, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 14, - "2042\"]]"); - p = add_epsg_def (filter, first, last, 32043, "epsg", 32043, - "NAD27 / Utah Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=3"); - add_proj4text (p, 1, - "8.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y"); - add_proj4text (p, 2, - "_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Utah Central\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); - add_srs_wkt (p, 7, - "AMETER[\"standard_parallel_1\",39.01666666666667],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_2\",40.65],PARAMETER[\"latitude_"); - add_srs_wkt (p, 9, - "of_origin\",38.33333333333334],PARAMETER[\"central_merid"); - add_srs_wkt (p, 10, - "ian\",-111.5],PARAMETER[\"false_easting\",2000000],PARAM"); - add_srs_wkt (p, 11, - "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); - add_srs_wkt (p, 12, - "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 13, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32043\"]]"); - p = add_epsg_def (filter, first, last, 32044, "epsg", 32044, - "NAD27 / Utah South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=3"); - add_proj4text (p, 1, - "6.66666666666666 +lon_0=-111.5 +x_0=609601.2192024384 +y"); - add_proj4text (p, 2, - "_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Utah South\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); - add_srs_wkt (p, 7, - "METER[\"standard_parallel_1\",37.21666666666667],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_2\",38.35],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 9, - "f_origin\",36.66666666666666],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 10, - "an\",-111.5],PARAMETER[\"false_easting\",2000000],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); - add_srs_wkt (p, 12, - "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 13, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32044\"]]"); - p = add_epsg_def (filter, first, last, 32045, "epsg", 32045, - "NAD27 / Vermont"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0"); - add_proj4text (p, 1, - "=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Vermont\",GEOGCS[\"NAD27\",DATUM[\"Nort"); - add_srs_wkt (p, 1, - "h_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378206"); - add_srs_wkt (p, 2, - ".4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AUTHO"); - add_srs_wkt (p, 3, - "RITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); - add_srs_wkt (p, 4, - "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); - add_srs_wkt (p, 5, - ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4267"); - add_srs_wkt (p, 6, - "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); - add_srs_wkt (p, 7, - "itude_of_origin\",42.5],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "72.5],PARAMETER[\"scale_factor\",0.999964286],PARAMETER["); - add_srs_wkt (p, 9, - "\"false_easting\",500000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 10, - "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"32045\"]]"); - p = add_epsg_def (filter, first, last, 32046, "epsg", 32046, - "NAD27 / Virginia North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-78.5 +x_0=609601.2192024384 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Virginia North\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",38.03333333333333],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",39.2],PARAMETER[\"latitud"); - add_srs_wkt (p, 9, - "e_of_origin\",37.66666666666666],PARAMETER[\"central_mer"); - add_srs_wkt (p, 10, - "idian\",-78.5],PARAMETER[\"false_easting\",2000000],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); - add_srs_wkt (p, 12, - "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); - add_srs_wkt (p, 13, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32046\"]]"); - p = add_epsg_def (filter, first, last, 32047, "epsg", 32047, - "NAD27 / Virginia South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=609601.21"); - add_proj4text (p, 2, - "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Virginia South\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",36.76666666666667],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",37.96666666666667],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",36.33333333333334],PARAMETER["); - add_srs_wkt (p, 10, - "\"central_meridian\",-78.5],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 11, - "2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surve"); - add_srs_wkt (p, 12, - "y foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]"); - add_srs_wkt (p, 13, - "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 14, - "\"32047\"]]"); - p = add_epsg_def (filter, first, last, 32048, "epsg", 32048, - "NAD27 / Washington North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47"); - add_proj4text (p, 1, - " +lon_0=-120.8333333333333 +x_0=609601.2192024384 +y_0=0"); - add_proj4text (p, 2, - " +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Washington North\",GEOGCS[\"NAD27\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",47.5],PARAMETER[\"stan"); - add_srs_wkt (p, 8, - "dard_parallel_2\",48.73333333333333],PARAMETER[\"latitud"); - add_srs_wkt (p, 9, - "e_of_origin\",47],PARAMETER[\"central_meridian\",-120.83"); - add_srs_wkt (p, 10, - "33333333333],PARAMETER[\"false_easting\",2000000],PARAME"); - add_srs_wkt (p, 11, - "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); - add_srs_wkt (p, 12, - "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 13, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32048\"]]"); - p = add_epsg_def (filter, first, last, 32049, "epsg", 32049, - "NAD27 / Washington South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333"); - add_proj4text (p, 1, - "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=609601.2"); - add_proj4text (p, 2, - "192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Washington South\",GEOGCS[\"NAD27\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",45.83333333333334],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",47.33333333333334],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",45.33333333333334],PARAMETER["); - add_srs_wkt (p, 10, - "\"central_meridian\",-120.5],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); - add_srs_wkt (p, 12, - "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); - add_srs_wkt (p, 13, - "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 14, - ",\"32049\"]]"); - p = add_epsg_def (filter, first, last, 32050, "epsg", 32050, - "NAD27 / West Virginia North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79."); - add_proj4text (p, 1, - "5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-f"); - add_proj4text (p, 2, - "t +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / West Virginia North\",GEOGCS[\"NAD27\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 18"); - add_srs_wkt (p, 2, - "66\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "08\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",39],PARAMETER[\"st"); - add_srs_wkt (p, 8, - "andard_parallel_2\",40.25],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",38.5],PARAMETER[\"central_meridian\",-79.5],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"false_easting\",2000000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"32050\"]]"); - p = add_epsg_def (filter, first, last, 32051, "epsg", 32051, - "NAD27 / West Virginia South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333"); - add_proj4text (p, 1, - "333 +lat_0=37 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +"); - add_proj4text (p, 2, - "datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / West Virginia South\",GEOGCS[\"NAD27\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 18"); - add_srs_wkt (p, 2, - "66\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"70"); - add_srs_wkt (p, 3, - "08\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",37.48333333333333]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",38.88333333333333],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"latitude_of_origin\",37],PARAMETER[\"central_m"); - add_srs_wkt (p, 10, - "eridian\",-81],PARAMETER[\"false_easting\",2000000],PARA"); - add_srs_wkt (p, 11, - "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); - add_srs_wkt (p, 12, - "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); - add_srs_wkt (p, 13, - "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32051\"]]"); - p = add_epsg_def (filter, first, last, 32052, "epsg", 32052, - "NAD27 / Wisconsin North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666"); - add_proj4text (p, 1, - "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=609601.2192"); - add_proj4text (p, 2, - "024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Wisconsin North\",GEOGCS[\"NAD27\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",45.56666666666667],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",46.76666666666667],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",45.16666666666666],PARAMETER["); - add_srs_wkt (p, 10, - "\"central_meridian\",-90],PARAMETER[\"false_easting\",20"); - add_srs_wkt (p, 11, - "00000],PARAMETER[\"false_northing\",0],UNIT[\"US survey "); - add_srs_wkt (p, 12, - "foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],"); - add_srs_wkt (p, 13, - "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 14, - "32052\"]]"); - p = add_epsg_def (filter, first, last, 32053, "epsg", 32053, - "NAD27 / Wisconsin Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333"); - add_proj4text (p, 1, - "334 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +datum=NAD2"); - add_proj4text (p, 2, - "7 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Wisconsin Central\",GEOGCS[\"NAD27\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866"); - add_srs_wkt (p, 2, - "\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008"); - add_srs_wkt (p, 3, - "\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\","); - add_srs_wkt (p, 4, - "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); - add_srs_wkt (p, 5, - "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); - add_srs_wkt (p, 6, - "G\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"standard_parallel_1\",44.25],PARAMETER[\"s"); - add_srs_wkt (p, 8, - "tandard_parallel_2\",45.5],PARAMETER[\"latitude_of_origi"); - add_srs_wkt (p, 9, - "n\",43.83333333333334],PARAMETER[\"central_meridian\",-9"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_easting\",2000000],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); - add_srs_wkt (p, 12, - "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"32053\"]]"); - p = add_epsg_def (filter, first, last, 32054, "epsg", 32054, - "NAD27 / Wisconsin South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666"); - add_proj4text (p, 1, - "667 +lat_0=42 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +"); - add_proj4text (p, 2, - "datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Wisconsin South\",GEOGCS[\"NAD27\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); - add_srs_wkt (p, 2, - ",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\""); - add_srs_wkt (p, 3, - "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); - add_srs_wkt (p, 5, - "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",42.73333333333333],PAR"); - add_srs_wkt (p, 8, - "AMETER[\"standard_parallel_2\",44.06666666666667],PARAME"); - add_srs_wkt (p, 9, - "TER[\"latitude_of_origin\",42],PARAMETER[\"central_merid"); - add_srs_wkt (p, 10, - "ian\",-90],PARAMETER[\"false_easting\",2000000],PARAMETE"); - add_srs_wkt (p, 11, - "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); - add_srs_wkt (p, 12, - "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); - add_srs_wkt (p, 13, - "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32054\"]]"); - p = add_epsg_def (filter, first, last, 32055, "epsg", 32055, - "NAD27 / Wyoming East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-105.1666666"); - add_proj4text (p, 1, - "666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +dat"); - add_proj4text (p, 2, - "um=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Wyoming East\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",40.66666666666666],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-105.1666666666667],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.999941177],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); - add_srs_wkt (p, 11, - ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32055\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 32056, "epsg", 32056, - "NAD27 / Wyoming East Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-107.3333333"); - add_proj4text (p, 1, - "333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +dat"); - add_proj4text (p, 2, - "um=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Wyoming East Central\",GEOGCS[\"NAD27\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1"); - add_srs_wkt (p, 2, - "866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 7, - "RAMETER[\"latitude_of_origin\",40.66666666666666],PARAME"); - add_srs_wkt (p, 8, - "TER[\"central_meridian\",-107.3333333333333],PARAMETER[\""); - add_srs_wkt (p, 9, - "scale_factor\",0.999941177],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"US survey"); - add_srs_wkt (p, 11, - " foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]]"); - add_srs_wkt (p, 12, - ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 13, - "32056\"]]"); - p = add_epsg_def (filter, first, last, 32057, "epsg", 32057, - "NAD27 / Wyoming West Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-108.75 +k=0"); - add_proj4text (p, 1, - ".999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +u"); - add_proj4text (p, 2, - "nits=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Wyoming West Central\",GEOGCS[\"NAD27\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1"); - add_srs_wkt (p, 2, - "866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7"); - add_srs_wkt (p, 3, - "008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich"); - add_srs_wkt (p, 4, - "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); - add_srs_wkt (p, 5, - "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 7, - "RAMETER[\"latitude_of_origin\",40.66666666666666],PARAME"); - add_srs_wkt (p, 8, - "TER[\"central_meridian\",-108.75],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.999941177],PARAMETER[\"false_easting\",500000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0."); - add_srs_wkt (p, 11, - "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); - add_srs_wkt (p, 12, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32057\"]]"); - p = add_epsg_def (filter, first, last, 32058, "epsg", 32058, - "NAD27 / Wyoming West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-110.0833333"); - add_proj4text (p, 1, - "333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +dat"); - add_proj4text (p, 2, - "um=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Wyoming West\",GEOGCS[\"NAD27\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); - add_srs_wkt (p, 2, - "8206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],A"); - add_srs_wkt (p, 3, - "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); - add_srs_wkt (p, 4, - "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); - add_srs_wkt (p, 5, - "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",40.66666666666666],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-110.0833333333333],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.999941177],PARAMETER[\"false_easting\",500000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); - add_srs_wkt (p, 11, - ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); - add_srs_wkt (p, 12, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32058\"]"); - add_srs_wkt (p, 13, - "]"); - p = add_epsg_def (filter, first, last, 32061, "epsg", 32061, - "NAD27 / Guatemala Norte (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666"); - add_proj4text (p, 1, - "667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=50000"); - add_proj4text (p, 2, - "0 +y_0=292209.579 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Guatemala Norte (deprecated)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); - add_srs_wkt (p, 2, - "larke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_C"); - add_srs_wkt (p, 7, - "onic_1SP\"],PARAMETER[\"latitude_of_origin\",16.81666666"); - add_srs_wkt (p, 8, - "666667],PARAMETER[\"central_meridian\",-90.3333333333333"); - add_srs_wkt (p, 9, - "3],PARAMETER[\"scale_factor\",0.99992226],PARAMETER[\"fa"); - add_srs_wkt (p, 10, - "lse_easting\",500000],PARAMETER[\"false_northing\",29220"); - add_srs_wkt (p, 11, - "9.579],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); - add_srs_wkt (p, 12, - "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32"); - add_srs_wkt (p, 13, - "061\"]]"); - p = add_epsg_def (filter, first, last, 32062, "epsg", 32062, - "NAD27 / Guatemala Sur (deprecated)"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333"); - add_proj4text (p, 1, - "333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +datum=N"); - add_proj4text (p, 2, - "AD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Guatemala Sur (deprecated)\",GEOGCS[\"N"); - add_srs_wkt (p, 1, - "AD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Cl"); - add_srs_wkt (p, 2, - "arke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 3, - "\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gre"); - add_srs_wkt (p, 4, - "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_C"); - add_srs_wkt (p, 7, - "onic_1SP\"],PARAMETER[\"latitude_of_origin\",14.9],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",-90.33333333333333],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.99989906],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 10, - ",500000],PARAMETER[\"false_northing\",325992.681],UNIT[\""); - add_srs_wkt (p, 11, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); - add_srs_wkt (p, 12, - ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32062\"]]"); - p = add_epsg_def (filter, first, last, 32064, "epsg", 32064, - "NAD27 / BLM 14N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 14N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-99],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"32064\"]]"); - p = add_epsg_def (filter, first, last, 32065, "epsg", 32065, - "NAD27 / BLM 15N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 15N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-93],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"32065\"]]"); - p = add_epsg_def (filter, first, last, 32066, "epsg", 32066, - "NAD27 / BLM 16N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 16N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-87],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"32066\"]]"); - p = add_epsg_def (filter, first, last, 32067, "epsg", 32067, - "NAD27 / BLM 17N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 17N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); - add_srs_wkt (p, 7, - "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); - add_srs_wkt (p, 8, - "\",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); - add_srs_wkt (p, 9, - "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 10, - "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"32067\"]]"); - p = add_epsg_def (filter, first, last, 32074, "epsg", 32074, - "NAD27 / BLM 14N (feet) (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 14N (feet) (deprecated)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); - add_srs_wkt (p, 2, - "larke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-99],PARAMETER[\"scale_factor\",0.9996],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",1640416.67],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"US survey foot\",0.304800609601219"); - add_srs_wkt (p, 11, - "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"32074\"]]"); - p = add_epsg_def (filter, first, last, 32075, "epsg", 32075, - "NAD27 / BLM 15N (feet) (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 15N (feet) (deprecated)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); - add_srs_wkt (p, 2, - "larke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-93],PARAMETER[\"scale_factor\",0.9996],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",1640416.67],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"US survey foot\",0.304800609601219"); - add_srs_wkt (p, 11, - "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"32075\"]]"); - p = add_epsg_def (filter, first, last, 32076, "epsg", 32076, - "NAD27 / BLM 16N (feet) (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 16N (feet) (deprecated)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); - add_srs_wkt (p, 2, - "larke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-87],PARAMETER[\"scale_factor\",0.9996],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",1640416.67],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"US survey foot\",0.304800609601219"); - add_srs_wkt (p, 11, - "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"32076\"]]"); - p = add_epsg_def (filter, first, last, 32077, "epsg", 32077, - "NAD27 / BLM 17N (feet) (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / BLM 17N (feet) (deprecated)\",GEOGCS[\""); - add_srs_wkt (p, 1, - "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); - add_srs_wkt (p, 2, - "larke 1866\",6378206.4,294.9786982138982,AUTHORITY[\"EPS"); - add_srs_wkt (p, 3, - "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); - add_srs_wkt (p, 8, - "ral_meridian\",-81],PARAMETER[\"scale_factor\",0.9996],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",1640416.67],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"US survey foot\",0.304800609601219"); - add_srs_wkt (p, 11, - "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"32077\"]]"); - p = add_epsg_def (filter, first, last, 32081, "epsg", 32081, - "NAD27 / MTM zone 1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / MTM zone 1\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "53],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",304800],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 12, - "2081\"]]"); - p = add_epsg_def (filter, first, last, 32082, "epsg", 32082, - "NAD27 / MTM zone 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / MTM zone 2\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "56],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",304800],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 12, - "2082\"]]"); - p = add_epsg_def (filter, first, last, 32083, "epsg", 32083, - "NAD27 / MTM zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / MTM zone 3\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "58.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32083\"]]"); - p = add_epsg_def (filter, first, last, 32084, "epsg", 32084, - "NAD27 / MTM zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / MTM zone 4\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "61.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32084\"]]"); - p = add_epsg_def (filter, first, last, 32085, "epsg", 32085, - "NAD27 / MTM zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / MTM zone 5\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "64.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32085\"]]"); - p = add_epsg_def (filter, first, last, 32086, "epsg", 32086, - "NAD27 / MTM zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / MTM zone 6\",GEOGCS[\"NAD27\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); - add_srs_wkt (p, 2, - "206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]],AU"); - add_srs_wkt (p, 3, - "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); - add_srs_wkt (p, 4, - "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); - add_srs_wkt (p, 5, - "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); - add_srs_wkt (p, 6, - "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "67.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32086\"]]"); - p = add_epsg_def (filter, first, last, 32098, "epsg", 32098, - "NAD27 / Quebec Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_"); - add_proj4text (p, 1, - "0=0 +y_0=0 +datum=NAD27 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Quebec Lambert\",GEOGCS[\"NAD27\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); - add_srs_wkt (p, 2, - "6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"7008\"]"); - add_srs_wkt (p, 3, - "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); - add_srs_wkt (p, 4, - "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); - add_srs_wkt (p, 5, - "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 6, - ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); - add_srs_wkt (p, 7, - "PARAMETER[\"standard_parallel_1\",60],PARAMETER[\"standa"); - add_srs_wkt (p, 8, - "rd_parallel_2\",46],PARAMETER[\"latitude_of_origin\",44]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"central_meridian\",-68.5],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"met"); - add_srs_wkt (p, 11, - "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); - add_srs_wkt (p, 12, - "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32098\"]]"); - p = add_epsg_def (filter, first, last, 32099, "epsg", 32099, - "NAD27 / Louisiana Offshore"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); - add_proj4text (p, 1, - "667 +lat_0=25.66666666666667 +lon_0=-91.33333333333333 +"); - add_proj4text (p, 2, - "x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +"); - add_proj4text (p, 3, - "no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD27 / Louisiana Offshore\",GEOGCS[\"NAD27\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); - add_srs_wkt (p, 2, - "6\",6378206.4,294.9786982138982,AUTHORITY[\"EPSG\",\"700"); - add_srs_wkt (p, 3, - "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); - add_srs_wkt (p, 4, - ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); - add_srs_wkt (p, 5, - "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); - add_srs_wkt (p, 6, - "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"standard_parallel_1\",27.83333333333333]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",26.16666666666667],PA"); - add_srs_wkt (p, 9, - "RAMETER[\"latitude_of_origin\",25.66666666666667],PARAME"); - add_srs_wkt (p, 10, - "TER[\"central_meridian\",-91.33333333333333],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_easting\",2000000],PARAMETER[\"false_northing\",0]"); - add_srs_wkt (p, 12, - ",UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 14, - "HORITY[\"EPSG\",\"32099\"]]"); - p = add_epsg_def (filter, first, last, 32100, "epsg", 32100, - "NAD83 / Montana"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5"); - add_proj4text (p, 1, - " +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Montana\",GEOGCS[\"NAD83\",DATUM[\"Nort"); - add_srs_wkt (p, 1, - "h_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 2, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 3, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); - add_srs_wkt (p, 7, - "SP\"],PARAMETER[\"standard_parallel_1\",49],PARAMETER[\""); - add_srs_wkt (p, 8, - "standard_parallel_2\",45],PARAMETER[\"latitude_of_origin"); - add_srs_wkt (p, 9, - "\",44.25],PARAMETER[\"central_meridian\",-109.5],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_easting\",600000],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32100"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 32104, "epsg", 32104, - "NAD83 / Nebraska"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); - add_proj4text (p, 1, - "lon_0=-100 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Nebraska\",GEOGCS[\"NAD83\",DATUM[\"Nor"); - add_srs_wkt (p, 1, - "th_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,2"); - add_srs_wkt (p, 2, - "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenwi"); - add_srs_wkt (p, 4, - "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); - add_srs_wkt (p, 5, - "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); - add_srs_wkt (p, 6, - "\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Conic"); - add_srs_wkt (p, 7, - "_2SP\"],PARAMETER[\"standard_parallel_1\",43],PARAMETER["); - add_srs_wkt (p, 8, - "\"standard_parallel_2\",40],PARAMETER[\"latitude_of_orig"); - add_srs_wkt (p, 9, - "in\",39.83333333333334],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 10, - "100],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); - add_srs_wkt (p, 12, - "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 13, - "PSG\",\"32104\"]]"); - p = add_epsg_def (filter, first, last, 32107, "epsg", 32107, - "NAD83 / Nevada East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=200000 +y_0=8000000 +datum=NAD83 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Nevada East\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",34.75],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",-115.5833333333333],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9999],PARAMETER[\"false_easting\",200000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",8000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"32107\"]]"); - p = add_epsg_def (filter, first, last, 32108, "epsg", 32108, - "NAD83 / Nevada Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=500000 +y_0=6000000 +datum=NAD83 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Nevada Central\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",34.75],PARAMETER["); - add_srs_wkt (p, 8, - "\"central_meridian\",-116.6666666666667],PARAMETER[\"sca"); - add_srs_wkt (p, 9, - "le_factor\",0.9999],PARAMETER[\"false_easting\",500000],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_northing\",6000000],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 11, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"32108\"]]"); - p = add_epsg_def (filter, first, last, 32109, "epsg", 32109, - "NAD83 / Nevada West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); - add_proj4text (p, 1, - "9999 +x_0=800000 +y_0=4000000 +datum=NAD83 +units=m +no_"); - add_proj4text (p, 2, - "defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Nevada West\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",34.75],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",-118.5833333333333],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9999],PARAMETER[\"false_easting\",800000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",4000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"32109\"]]"); - p = add_epsg_def (filter, first, last, 32110, "epsg", 32110, - "NAD83 / New Hampshire"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); - add_proj4text (p, 1, - "99966667 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_de"); - add_proj4text (p, 2, - "fs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New Hampshire\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",42.5],PARAMETER[\"c"); - add_srs_wkt (p, 8, - "entral_meridian\",-71.66666666666667],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.999966667],PARAMETER[\"false_easting\",300000"); - add_srs_wkt (p, 10, - "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); - add_srs_wkt (p, 12, - "TH],AUTHORITY[\"EPSG\",\"32110\"]]"); - p = add_epsg_def (filter, first, last, 32111, "epsg", 32111, - "NAD83 / New Jersey"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=150000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New Jersey\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",38.83333333333334],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-74.5],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9999],PARAMETER[\"false_easting\",150000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"32111\"]]"); - p = add_epsg_def (filter, first, last, 32112, "epsg", 32112, - "NAD83 / New Mexico East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); - add_proj4text (p, 1, - "909091 +x_0=165000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New Mexico East\",GEOGCS[\"NAD83\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); - add_srs_wkt (p, 2, - "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",31],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-104.3333333333333],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.999909091],PARAMETER[\"false_easting\",16500"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 12, - "RTH],AUTHORITY[\"EPSG\",\"32112\"]]"); - p = add_epsg_def (filter, first, last, 32113, "epsg", 32113, - "NAD83 / New Mexico Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=5000"); - add_proj4text (p, 1, - "00 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New Mexico Central\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); - add_srs_wkt (p, 7, - "rcator\"],PARAMETER[\"latitude_of_origin\",31],PARAMETER"); - add_srs_wkt (p, 8, - "[\"central_meridian\",-106.25],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 9, - ",0.9999],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 10, - "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 11, - "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); - add_srs_wkt (p, 12, - "\"EPSG\",\"32113\"]]"); - p = add_epsg_def (filter, first, last, 32114, "epsg", 32114, - "NAD83 / New Mexico West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); - add_proj4text (p, 1, - "916667 +x_0=830000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New Mexico West\",GEOGCS[\"NAD83\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); - add_srs_wkt (p, 2, - "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",31],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-107.8333333333333],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.999916667],PARAMETER[\"false_easting\",83000"); - add_srs_wkt (p, 10, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 12, - "RTH],AUTHORITY[\"EPSG\",\"32114\"]]"); - p = add_epsg_def (filter, first, last, 32115, "epsg", 32115, - "NAD83 / New York East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); - add_proj4text (p, 1, - "999 +x_0=150000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New York East\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",38.83333333333334],"); - add_srs_wkt (p, 8, - "PARAMETER[\"central_meridian\",-74.5],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9999],PARAMETER[\"false_easting\",150000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"32115\"]]"); - p = add_epsg_def (filter, first, last, 32116, "epsg", 32116, - "NAD83 / New York Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); - add_proj4text (p, 1, - "9375 +x_0=250000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New York Central\",GEOGCS[\"NAD83\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); - add_srs_wkt (p, 2, - "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); - add_srs_wkt (p, 7, - "tor\"],PARAMETER[\"latitude_of_origin\",40],PARAMETER[\""); - add_srs_wkt (p, 8, - "central_meridian\",-76.58333333333333],PARAMETER[\"scale"); - add_srs_wkt (p, 9, - "_factor\",0.9999375],PARAMETER[\"false_easting\",250000]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); - add_srs_wkt (p, 12, - "H],AUTHORITY[\"EPSG\",\"32116\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_37.c b/src/spatialite/src/srsinit/epsg_inlined_37.c deleted file mode 100644 index 2bac4ec..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_37.c +++ /dev/null @@ -1,3460 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_37 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 32117, "epsg", 32117, - "NAD83 / New York West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); - add_proj4text (p, 1, - "9375 +x_0=350000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New York West\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); - add_srs_wkt (p, 7, - "\"],PARAMETER[\"latitude_of_origin\",40],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",-78.58333333333333],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9999375],PARAMETER[\"false_easting\",350000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"32117\"]]"); - p = add_epsg_def (filter, first, last, 32118, "epsg", 32118, - "NAD83 / New York Long Island"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); - add_proj4text (p, 1, - "666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / New York Long Island\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); - add_srs_wkt (p, 7, - "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41"); - add_srs_wkt (p, 8, - ".03333333333333],PARAMETER[\"standard_parallel_2\",40.66"); - add_srs_wkt (p, 9, - "666666666666],PARAMETER[\"latitude_of_origin\",40.166666"); - add_srs_wkt (p, 10, - "66666666],PARAMETER[\"central_meridian\",-74],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_easting\",300000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 12, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32118\""); - add_srs_wkt (p, 14, - "]]"); - p = add_epsg_def (filter, first, last, 32119, "epsg", 32119, - "NAD83 / North Carolina"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); - add_proj4text (p, 1, - "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +datum"); - add_proj4text (p, 2, - "=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / North Carolina\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36.16666"); - add_srs_wkt (p, 8, - "666666666],PARAMETER[\"standard_parallel_2\",34.33333333"); - add_srs_wkt (p, 9, - "333334],PARAMETER[\"latitude_of_origin\",33.75],PARAMETE"); - add_srs_wkt (p, 10, - "R[\"central_meridian\",-79],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 11, - "609601.22],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); - add_srs_wkt (p, 12, - ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"32119\"]]"); - p = add_epsg_def (filter, first, last, 32120, "epsg", 32120, - "NAD83 / North Dakota North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333"); - add_proj4text (p, 1, - "333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +datum=NA"); - add_proj4text (p, 2, - "D83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / North Dakota North\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",48.7"); - add_srs_wkt (p, 8, - "3333333333333],PARAMETER[\"standard_parallel_2\",47.4333"); - add_srs_wkt (p, 9, - "3333333333],PARAMETER[\"latitude_of_origin\",47],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"central_meridian\",-100.5],PARAMETER[\"false_eastin"); - add_srs_wkt (p, 11, - "g\",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); - add_srs_wkt (p, 12, - "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); - add_srs_wkt (p, 13, - "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32120\"]]"); - p = add_epsg_def (filter, first, last, 32121, "epsg", 32121, - "NAD83 / North Dakota South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333"); - add_proj4text (p, 1, - "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +"); - add_proj4text (p, 2, - "y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / North Dakota South\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",47.4"); - add_srs_wkt (p, 8, - "8333333333333],PARAMETER[\"standard_parallel_2\",46.1833"); - add_srs_wkt (p, 9, - "3333333333],PARAMETER[\"latitude_of_origin\",45.66666666"); - add_srs_wkt (p, 10, - "666666],PARAMETER[\"central_meridian\",-100.5],PARAMETER"); - add_srs_wkt (p, 11, - "[\"false_easting\",600000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 12, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32121\""); - add_srs_wkt (p, 14, - "]]"); - p = add_epsg_def (filter, first, last, 32122, "epsg", 32122, - "NAD83 / Ohio North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +datum=N"); - add_proj4text (p, 2, - "AD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Ohio North\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",41.7],PARAME"); - add_srs_wkt (p, 8, - "TER[\"standard_parallel_2\",40.43333333333333],PARAMETER"); - add_srs_wkt (p, 9, - "[\"latitude_of_origin\",39.66666666666666],PARAMETER[\"c"); - add_srs_wkt (p, 10, - "entral_meridian\",-82.5],PARAMETER[\"false_easting\",600"); - add_srs_wkt (p, 11, - "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); - add_srs_wkt (p, 12, - "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); - add_srs_wkt (p, 13, - "NORTH],AUTHORITY[\"EPSG\",\"32122\"]]"); - p = add_epsg_def (filter, first, last, 32123, "epsg", 32123, - "NAD83 / Ohio South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +datum=NAD"); - add_proj4text (p, 2, - "83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Ohio South\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",40.033333333"); - add_srs_wkt (p, 8, - "33333],PARAMETER[\"standard_parallel_2\",38.733333333333"); - add_srs_wkt (p, 9, - "33],PARAMETER[\"latitude_of_origin\",38],PARAMETER[\"cen"); - add_srs_wkt (p, 10, - "tral_meridian\",-82.5],PARAMETER[\"false_easting\",60000"); - add_srs_wkt (p, 11, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 13, - "RTH],AUTHORITY[\"EPSG\",\"32123\"]]"); - p = add_epsg_def (filter, first, last, 32124, "epsg", 32124, - "NAD83 / Oklahoma North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666"); - add_proj4text (p, 1, - "667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +datum=NAD83"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Oklahoma North\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36.76666"); - add_srs_wkt (p, 8, - "666666667],PARAMETER[\"standard_parallel_2\",35.56666666"); - add_srs_wkt (p, 9, - "666667],PARAMETER[\"latitude_of_origin\",35],PARAMETER[\""); - add_srs_wkt (p, 10, - "central_meridian\",-98],PARAMETER[\"false_easting\",6000"); - add_srs_wkt (p, 11, - "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 12, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); - add_srs_wkt (p, 13, - "ORTH],AUTHORITY[\"EPSG\",\"32124\"]]"); - p = add_epsg_def (filter, first, last, 32125, "epsg", 32125, - "NAD83 / Oklahoma South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Oklahoma South\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",35.23333"); - add_srs_wkt (p, 8, - "333333333],PARAMETER[\"standard_parallel_2\",33.93333333"); - add_srs_wkt (p, 9, - "333333],PARAMETER[\"latitude_of_origin\",33.333333333333"); - add_srs_wkt (p, 10, - "34],PARAMETER[\"central_meridian\",-98],PARAMETER[\"fals"); - add_srs_wkt (p, 11, - "e_easting\",600000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 12, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); - add_srs_wkt (p, 13, - "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32125\"]]"); - p = add_epsg_def (filter, first, last, 32126, "epsg", 32126, - "NAD83 / Oregon North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.6"); - add_proj4text (p, 1, - "6666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +datum=N"); - add_proj4text (p, 2, - "AD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Oregon North\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); - add_srs_wkt (p, 7, - "nic_2SP\"],PARAMETER[\"standard_parallel_1\",46],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_2\",44.33333333333334],PARAMETER["); - add_srs_wkt (p, 9, - "\"latitude_of_origin\",43.66666666666666],PARAMETER[\"ce"); - add_srs_wkt (p, 10, - "ntral_meridian\",-120.5],PARAMETER[\"false_easting\",250"); - add_srs_wkt (p, 11, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 13, - ",NORTH],AUTHORITY[\"EPSG\",\"32126\"]]"); - p = add_epsg_def (filter, first, last, 32127, "epsg", 32127, - "NAD83 / Oregon South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.6"); - add_proj4text (p, 1, - "6666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +datum=N"); - add_proj4text (p, 2, - "AD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Oregon South\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); - add_srs_wkt (p, 7, - "nic_2SP\"],PARAMETER[\"standard_parallel_1\",44],PARAMET"); - add_srs_wkt (p, 8, - "ER[\"standard_parallel_2\",42.33333333333334],PARAMETER["); - add_srs_wkt (p, 9, - "\"latitude_of_origin\",41.66666666666666],PARAMETER[\"ce"); - add_srs_wkt (p, 10, - "ntral_meridian\",-120.5],PARAMETER[\"false_easting\",150"); - add_srs_wkt (p, 11, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 13, - ",NORTH],AUTHORITY[\"EPSG\",\"32127\"]]"); - p = add_epsg_def (filter, first, last, 32128, "epsg", 32128, - "NAD83 / Pennsylvania North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=4"); - add_proj4text (p, 1, - "0.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +datum"); - add_proj4text (p, 2, - "=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Pennsylvania North\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.9"); - add_srs_wkt (p, 8, - "5],PARAMETER[\"standard_parallel_2\",40.88333333333333],"); - add_srs_wkt (p, 9, - "PARAMETER[\"latitude_of_origin\",40.16666666666666],PARA"); - add_srs_wkt (p, 10, - "METER[\"central_meridian\",-77.75],PARAMETER[\"false_eas"); - add_srs_wkt (p, 11, - "ting\",600000],PARAMETER[\"false_northing\",0],UNIT[\"me"); - add_srs_wkt (p, 12, - "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); - add_srs_wkt (p, 13, - "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32128\"]]"); - p = add_epsg_def (filter, first, last, 32129, "epsg", 32129, - "NAD83 / Pennsylvania South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); - add_proj4text (p, 1, - "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +"); - add_proj4text (p, 2, - "y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Pennsylvania South\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40.9"); - add_srs_wkt (p, 8, - "6666666666667],PARAMETER[\"standard_parallel_2\",39.9333"); - add_srs_wkt (p, 9, - "3333333333],PARAMETER[\"latitude_of_origin\",39.33333333"); - add_srs_wkt (p, 10, - "333334],PARAMETER[\"central_meridian\",-77.75],PARAMETER"); - add_srs_wkt (p, 11, - "[\"false_easting\",600000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 12, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32129\""); - add_srs_wkt (p, 14, - "]]"); - p = add_epsg_def (filter, first, last, 32130, "epsg", 32130, - "NAD83 / Rhode Island"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); - add_proj4text (p, 1, - "9999375 +x_0=100000 +y_0=0 +datum=NAD83 +units=m +no_def"); - add_proj4text (p, 2, - "s"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Rhode Island\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",41.08333333333334],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"central_meridian\",-71.5],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.99999375],PARAMETER[\"false_easting\",100000],P"); - add_srs_wkt (p, 10, - "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 11, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"32130\"]]"); - p = add_epsg_def (filter, first, last, 32133, "epsg", 32133, - "NAD83 / South Carolina"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31"); - add_proj4text (p, 1, - ".83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +datum=NAD"); - add_proj4text (p, 2, - "83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / South Carolina\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",34.83333"); - add_srs_wkt (p, 8, - "333333334],PARAMETER[\"standard_parallel_2\",32.5],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"latitude_of_origin\",31.83333333333333],PARAMETER"); - add_srs_wkt (p, 10, - "[\"central_meridian\",-81],PARAMETER[\"false_easting\",6"); - add_srs_wkt (p, 11, - "09600],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 13, - ",NORTH],AUTHORITY[\"EPSG\",\"32133\"]]"); - p = add_epsg_def (filter, first, last, 32134, "epsg", 32134, - "NAD83 / South Dakota North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666"); - add_proj4text (p, 1, - "666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_"); - add_proj4text (p, 2, - "0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / South Dakota North\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",45.6"); - add_srs_wkt (p, 8, - "8333333333333],PARAMETER[\"standard_parallel_2\",44.4166"); - add_srs_wkt (p, 9, - "6666666666],PARAMETER[\"latitude_of_origin\",43.83333333"); - add_srs_wkt (p, 10, - "333334],PARAMETER[\"central_meridian\",-100],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_easting\",600000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32134\"]]"); - p = add_epsg_def (filter, first, last, 32135, "epsg", 32135, - "NAD83 / South Dakota South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); - add_proj4text (p, 1, - ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); - add_proj4text (p, 2, - "_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / South Dakota South\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",44.4"); - add_srs_wkt (p, 8, - "],PARAMETER[\"standard_parallel_2\",42.83333333333334],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"latitude_of_origin\",42.33333333333334],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"central_meridian\",-100.3333333333333],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_easting\",600000],PARAMETER[\"false_northing\",0"); - add_srs_wkt (p, 12, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32135\""); - add_srs_wkt (p, 14, - "]]"); - p = add_epsg_def (filter, first, last, 32136, "epsg", 32136, - "NAD83 / Tennessee"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=3"); - add_proj4text (p, 1, - "4.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +datum=NA"); - add_proj4text (p, 2, - "D83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Tennessee\",GEOGCS[\"NAD83\",DATUM[\"No"); - add_srs_wkt (p, 1, - "rth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,"); - add_srs_wkt (p, 2, - "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenw"); - add_srs_wkt (p, 4, - "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); - add_srs_wkt (p, 5, - "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); - add_srs_wkt (p, 6, - "[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Coni"); - add_srs_wkt (p, 7, - "c_2SP\"],PARAMETER[\"standard_parallel_1\",36.4166666666"); - add_srs_wkt (p, 8, - "6666],PARAMETER[\"standard_parallel_2\",35.25],PARAMETER"); - add_srs_wkt (p, 9, - "[\"latitude_of_origin\",34.33333333333334],PARAMETER[\"c"); - add_srs_wkt (p, 10, - "entral_meridian\",-86],PARAMETER[\"false_easting\",60000"); - add_srs_wkt (p, 11, - "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 12, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 13, - "RTH],AUTHORITY[\"EPSG\",\"32136\"]]"); - p = add_epsg_def (filter, first, last, 32137, "epsg", 32137, - "NAD83 / Texas North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=3"); - add_proj4text (p, 1, - "4 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +datum=NAD83 +u"); - add_proj4text (p, 2, - "nits=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Texas North\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); - add_srs_wkt (p, 7, - "nic_2SP\"],PARAMETER[\"standard_parallel_1\",36.18333333"); - add_srs_wkt (p, 8, - "333333],PARAMETER[\"standard_parallel_2\",34.65],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"latitude_of_origin\",34],PARAMETER[\"central_meridi"); - add_srs_wkt (p, 10, - "an\",-101.5],PARAMETER[\"false_easting\",200000],PARAMET"); - add_srs_wkt (p, 11, - "ER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); - add_srs_wkt (p, 13, - ",AUTHORITY[\"EPSG\",\"32137\"]]"); - p = add_epsg_def (filter, first, last, 32138, "epsg", 32138, - "NAD83 / Texas North Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333"); - add_proj4text (p, 1, - "333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y"); - add_proj4text (p, 2, - "_0=2000000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Texas North Central\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",33.9"); - add_srs_wkt (p, 8, - "6666666666667],PARAMETER[\"standard_parallel_2\",32.1333"); - add_srs_wkt (p, 9, - "3333333333],PARAMETER[\"latitude_of_origin\",31.66666666"); - add_srs_wkt (p, 10, - "666667],PARAMETER[\"central_meridian\",-98.5],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_easting\",600000],PARAMETER[\"false_northing\",2"); - add_srs_wkt (p, 12, - "000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); - add_srs_wkt (p, 13, - "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 14, - "2138\"]]"); - p = add_epsg_def (filter, first, last, 32139, "epsg", 32139, - "NAD83 / Texas Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666"); - add_proj4text (p, 1, - "667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); - add_proj4text (p, 2, - "x_0=700000 +y_0=3000000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Texas Central\",GEOGCS[\"NAD83\",DATUM["); - add_srs_wkt (p, 1, - "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); - add_srs_wkt (p, 2, - "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); - add_srs_wkt (p, 3, - "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); - add_srs_wkt (p, 4, - "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); - add_srs_wkt (p, 5, - ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); - add_srs_wkt (p, 6, - "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_C"); - add_srs_wkt (p, 7, - "onic_2SP\"],PARAMETER[\"standard_parallel_1\",31.8833333"); - add_srs_wkt (p, 8, - "3333333],PARAMETER[\"standard_parallel_2\",30.1166666666"); - add_srs_wkt (p, 9, - "6667],PARAMETER[\"latitude_of_origin\",29.66666666666667"); - add_srs_wkt (p, 10, - "],PARAMETER[\"central_meridian\",-100.3333333333333],PAR"); - add_srs_wkt (p, 11, - "AMETER[\"false_easting\",700000],PARAMETER[\"false_north"); - add_srs_wkt (p, 12, - "ing\",3000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 13, - "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 14, - "G\",\"32139\"]]"); - p = add_epsg_def (filter, first, last, 32140, "epsg", 32140, - "NAD83 / Texas South Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333"); - add_proj4text (p, 1, - "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=4000000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Texas South Central\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",30.2"); - add_srs_wkt (p, 8, - "8333333333333],PARAMETER[\"standard_parallel_2\",28.3833"); - add_srs_wkt (p, 9, - "3333333333],PARAMETER[\"latitude_of_origin\",27.83333333"); - add_srs_wkt (p, 10, - "333333],PARAMETER[\"central_meridian\",-99],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_easting\",600000],PARAMETER[\"false_northing\",400"); - add_srs_wkt (p, 12, - "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); - add_srs_wkt (p, 13, - "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"321"); - add_srs_wkt (p, 14, - "40\"]]"); - p = add_epsg_def (filter, first, last, 32141, "epsg", 32141, - "NAD83 / Texas South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); - add_proj4text (p, 1, - "667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y"); - add_proj4text (p, 2, - "_0=5000000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Texas South\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); - add_srs_wkt (p, 7, - "nic_2SP\"],PARAMETER[\"standard_parallel_1\",27.83333333"); - add_srs_wkt (p, 8, - "333333],PARAMETER[\"standard_parallel_2\",26.16666666666"); - add_srs_wkt (p, 9, - "667],PARAMETER[\"latitude_of_origin\",25.66666666666667]"); - add_srs_wkt (p, 10, - ",PARAMETER[\"central_meridian\",-98.5],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_easting\",300000],PARAMETER[\"false_northing\",5000000]"); - add_srs_wkt (p, 12, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); - add_srs_wkt (p, 13, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32141\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 32142, "epsg", 32142, - "NAD83 / Utah North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); - add_proj4text (p, 1, - "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +"); - add_proj4text (p, 2, - "y_0=1000000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Utah North\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",41.783333333"); - add_srs_wkt (p, 8, - "33333],PARAMETER[\"standard_parallel_2\",40.716666666666"); - add_srs_wkt (p, 9, - "67],PARAMETER[\"latitude_of_origin\",40.33333333333334],"); - add_srs_wkt (p, 10, - "PARAMETER[\"central_meridian\",-111.5],PARAMETER[\"false"); - add_srs_wkt (p, 11, - "_easting\",500000],PARAMETER[\"false_northing\",1000000]"); - add_srs_wkt (p, 12, - ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); - add_srs_wkt (p, 13, - "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32142\"]"); - add_srs_wkt (p, 14, - "]"); - p = add_epsg_def (filter, first, last, 32143, "epsg", 32143, - "NAD83 / Utah Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); - add_proj4text (p, 1, - "8.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 "); - add_proj4text (p, 2, - "+datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Utah Central\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); - add_srs_wkt (p, 7, - "nic_2SP\"],PARAMETER[\"standard_parallel_1\",40.65],PARA"); - add_srs_wkt (p, 8, - "METER[\"standard_parallel_2\",39.01666666666667],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"latitude_of_origin\",38.33333333333334],PARAMETER[\""); - add_srs_wkt (p, 10, - "central_meridian\",-111.5],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 11, - "00000],PARAMETER[\"false_northing\",2000000],UNIT[\"metr"); - add_srs_wkt (p, 12, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); - add_srs_wkt (p, 13, - "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32143\"]]"); - p = add_epsg_def (filter, first, last, 32144, "epsg", 32144, - "NAD83 / Utah South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); - add_proj4text (p, 1, - "6.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 "); - add_proj4text (p, 2, - "+datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Utah South\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Con"); - add_srs_wkt (p, 7, - "ic_2SP\"],PARAMETER[\"standard_parallel_1\",38.35],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"standard_parallel_2\",37.21666666666667],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"latitude_of_origin\",36.66666666666666],PARAMETER[\""); - add_srs_wkt (p, 10, - "central_meridian\",-111.5],PARAMETER[\"false_easting\",5"); - add_srs_wkt (p, 11, - "00000],PARAMETER[\"false_northing\",3000000],UNIT[\"metr"); - add_srs_wkt (p, 12, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); - add_srs_wkt (p, 13, - "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32144\"]]"); - p = add_epsg_def (filter, first, last, 32145, "epsg", 32145, - "NAD83 / Vermont"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0"); - add_proj4text (p, 1, - "=500000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Vermont\",GEOGCS[\"NAD83\",DATUM[\"Nort"); - add_srs_wkt (p, 1, - "h_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,29"); - add_srs_wkt (p, 2, - "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); - add_srs_wkt (p, 3, - "0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenwic"); - add_srs_wkt (p, 4, - "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); - add_srs_wkt (p, 5, - "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); - add_srs_wkt (p, 6, - "EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\"],PA"); - add_srs_wkt (p, 7, - "RAMETER[\"latitude_of_origin\",42.5],PARAMETER[\"central"); - add_srs_wkt (p, 8, - "_meridian\",-72.5],PARAMETER[\"scale_factor\",0.99996428"); - add_srs_wkt (p, 9, - "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); - add_srs_wkt (p, 10, - "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); - add_srs_wkt (p, 11, - "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32145\"]]"); - p = add_epsg_def (filter, first, last, 32146, "epsg", 32146, - "NAD83 / Virginia North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37"); - add_proj4text (p, 1, - ".66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +"); - add_proj4text (p, 2, - "datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Virginia North\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39.2],PA"); - add_srs_wkt (p, 8, - "RAMETER[\"standard_parallel_2\",38.03333333333333],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"latitude_of_origin\",37.66666666666666],PARAMETER"); - add_srs_wkt (p, 10, - "[\"central_meridian\",-78.5],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",3500000],PARAMETER[\"false_northing\",2000000],UNIT[\"m"); - add_srs_wkt (p, 12, - "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],"); - add_srs_wkt (p, 13, - "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32146\"]]"); - p = add_epsg_def (filter, first, last, 32147, "epsg", 32147, - "NAD83 / Virginia South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666"); - add_proj4text (p, 1, - "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +"); - add_proj4text (p, 2, - "y_0=1000000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Virginia South\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37.96666"); - add_srs_wkt (p, 8, - "666666667],PARAMETER[\"standard_parallel_2\",36.76666666"); - add_srs_wkt (p, 9, - "666667],PARAMETER[\"latitude_of_origin\",36.333333333333"); - add_srs_wkt (p, 10, - "34],PARAMETER[\"central_meridian\",-78.5],PARAMETER[\"fa"); - add_srs_wkt (p, 11, - "lse_easting\",3500000],PARAMETER[\"false_northing\",1000"); - add_srs_wkt (p, 12, - "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); - add_srs_wkt (p, 13, - "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3214"); - add_srs_wkt (p, 14, - "7\"]]"); - p = add_epsg_def (filter, first, last, 32148, "epsg", 32148, - "NAD83 / Washington North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47"); - add_proj4text (p, 1, - " +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +datum=NAD"); - add_proj4text (p, 2, - "83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Washington North\",GEOGCS[\"NAD83\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); - add_srs_wkt (p, 2, - "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",48.7333"); - add_srs_wkt (p, 8, - "3333333333],PARAMETER[\"standard_parallel_2\",47.5],PARA"); - add_srs_wkt (p, 9, - "METER[\"latitude_of_origin\",47],PARAMETER[\"central_mer"); - add_srs_wkt (p, 10, - "idian\",-120.8333333333333],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 11, - "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); - add_srs_wkt (p, 12, - ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); - add_srs_wkt (p, 13, - "\",NORTH],AUTHORITY[\"EPSG\",\"32148\"]]"); - p = add_epsg_def (filter, first, last, 32149, "epsg", 32149, - "NAD83 / Washington South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333"); - add_proj4text (p, 1, - "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +"); - add_proj4text (p, 2, - "y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Washington South\",GEOGCS[\"NAD83\",DAT"); - add_srs_wkt (p, 1, - "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); - add_srs_wkt (p, 2, - "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); - add_srs_wkt (p, 3, - "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",47.3333"); - add_srs_wkt (p, 8, - "3333333334],PARAMETER[\"standard_parallel_2\",45.8333333"); - add_srs_wkt (p, 9, - "3333334],PARAMETER[\"latitude_of_origin\",45.33333333333"); - add_srs_wkt (p, 10, - "334],PARAMETER[\"central_meridian\",-120.5],PARAMETER[\""); - add_srs_wkt (p, 11, - "false_easting\",500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); - add_srs_wkt (p, 13, - ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32149\"]]"); - p = add_epsg_def (filter, first, last, 32150, "epsg", 32150, - "NAD83 / West Virginia North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); - add_proj4text (p, 1, - "5 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / West Virginia North\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40.2"); - add_srs_wkt (p, 8, - "5],PARAMETER[\"standard_parallel_2\",39],PARAMETER[\"lat"); - add_srs_wkt (p, 9, - "itude_of_origin\",38.5],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 10, - "79.5],PARAMETER[\"false_easting\",600000],PARAMETER[\"fa"); - add_srs_wkt (p, 11, - "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 13, - "EPSG\",\"32150\"]]"); - p = add_epsg_def (filter, first, last, 32151, "epsg", 32151, - "NAD83 / West Virginia South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); - add_proj4text (p, 1, - "333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +datum=NAD83"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / West Virginia South\",GEOGCS[\"NAD83\","); - add_srs_wkt (p, 1, - "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38.8"); - add_srs_wkt (p, 8, - "8333333333333],PARAMETER[\"standard_parallel_2\",37.4833"); - add_srs_wkt (p, 9, - "3333333333],PARAMETER[\"latitude_of_origin\",37],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"central_meridian\",-81],PARAMETER[\"false_easting\""); - add_srs_wkt (p, 11, - ",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); - add_srs_wkt (p, 12, - "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); - add_srs_wkt (p, 13, - "Y\",NORTH],AUTHORITY[\"EPSG\",\"32151\"]]"); - p = add_epsg_def (filter, first, last, 32152, "epsg", 32152, - "NAD83 / Wisconsin North"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666"); - add_proj4text (p, 1, - "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0"); - add_proj4text (p, 2, - "=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Wisconsin North\",GEOGCS[\"NAD83\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); - add_srs_wkt (p, 2, - "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",46.7666"); - add_srs_wkt (p, 8, - "6666666667],PARAMETER[\"standard_parallel_2\",45.5666666"); - add_srs_wkt (p, 9, - "6666667],PARAMETER[\"latitude_of_origin\",45.16666666666"); - add_srs_wkt (p, 10, - "666],PARAMETER[\"central_meridian\",-90],PARAMETER[\"fal"); - add_srs_wkt (p, 11, - "se_easting\",600000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 12, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); - add_srs_wkt (p, 13, - "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32152\"]]"); - p = add_epsg_def (filter, first, last, 32153, "epsg", 32153, - "NAD83 / Wisconsin Central"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333"); - add_proj4text (p, 1, - "334 +lon_0=-90 +x_0=600000 +y_0=0 +datum=NAD83 +units=m "); - add_proj4text (p, 2, - "+no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Wisconsin Central\",GEOGCS[\"NAD83\",DA"); - add_srs_wkt (p, 1, - "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); - add_srs_wkt (p, 2, - "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); - add_srs_wkt (p, 3, - "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); - add_srs_wkt (p, 4, - "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); - add_srs_wkt (p, 5, - "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); - add_srs_wkt (p, 6, - "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); - add_srs_wkt (p, 7, - "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",45.5]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"standard_parallel_2\",44.25],PARAMETER[\"la"); - add_srs_wkt (p, 9, - "titude_of_origin\",43.83333333333334],PARAMETER[\"centra"); - add_srs_wkt (p, 10, - "l_meridian\",-90],PARAMETER[\"false_easting\",600000],PA"); - add_srs_wkt (p, 11, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 12, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 13, - "AUTHORITY[\"EPSG\",\"32153\"]]"); - p = add_epsg_def (filter, first, last, 32154, "epsg", 32154, - "NAD83 / Wisconsin South"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333"); - add_proj4text (p, 1, - "333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +datum=NAD83"); - add_proj4text (p, 2, - " +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Wisconsin South\",GEOGCS[\"NAD83\",DATU"); - add_srs_wkt (p, 1, - "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); - add_srs_wkt (p, 2, - "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); - add_srs_wkt (p, 3, - "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); - add_srs_wkt (p, 4, - "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); - add_srs_wkt (p, 5, - "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); - add_srs_wkt (p, 6, - "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); - add_srs_wkt (p, 7, - "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",44.0666"); - add_srs_wkt (p, 8, - "6666666667],PARAMETER[\"standard_parallel_2\",42.7333333"); - add_srs_wkt (p, 9, - "3333333],PARAMETER[\"latitude_of_origin\",42],PARAMETER["); - add_srs_wkt (p, 10, - "\"central_meridian\",-90],PARAMETER[\"false_easting\",60"); - add_srs_wkt (p, 11, - "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); - add_srs_wkt (p, 13, - ",NORTH],AUTHORITY[\"EPSG\",\"32154\"]]"); - p = add_epsg_def (filter, first, last, 32155, "epsg", 32155, - "NAD83 / Wyoming East"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Wyoming East\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",40.5],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",-105.1666666666667],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9999375],PARAMETER[\"false_easting\",200000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); - add_srs_wkt (p, 11, - "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"EPSG\",\"32155\"]]"); - p = add_epsg_def (filter, first, last, 32156, "epsg", 32156, - "NAD83 / Wyoming East Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=400000 +y_0=100000 +datum=NAD83 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Wyoming East Central\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",40.5],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",-107.3333333333333],PARAMETER["); - add_srs_wkt (p, 9, - "\"scale_factor\",0.9999375],PARAMETER[\"false_easting\","); - add_srs_wkt (p, 10, - "400000],PARAMETER[\"false_northing\",100000],UNIT[\"metr"); - add_srs_wkt (p, 11, - "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); - add_srs_wkt (p, 12, - "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32156\"]]"); - p = add_epsg_def (filter, first, last, 32157, "epsg", 32157, - "NAD83 / Wyoming West Central"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0"); - add_proj4text (p, 1, - "=600000 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Wyoming West Central\",GEOGCS[\"NAD83\""); - add_srs_wkt (p, 1, - ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); - add_srs_wkt (p, 2, - "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); - add_srs_wkt (p, 3, - "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); - add_srs_wkt (p, 4, - "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); - add_srs_wkt (p, 5, - "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); - add_srs_wkt (p, 6, - "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); - add_srs_wkt (p, 7, - "Mercator\"],PARAMETER[\"latitude_of_origin\",40.5],PARAM"); - add_srs_wkt (p, 8, - "ETER[\"central_meridian\",-108.75],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9999375],PARAMETER[\"false_easting\",600000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); - add_srs_wkt (p, 12, - "UTHORITY[\"EPSG\",\"32157\"]]"); - p = add_epsg_def (filter, first, last, 32158, "epsg", 32158, - "NAD83 / Wyoming West"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9"); - add_proj4text (p, 1, - "999375 +x_0=800000 +y_0=100000 +datum=NAD83 +units=m +no"); - add_proj4text (p, 2, - "_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Wyoming West\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",40.5],PARAMETER[\"cen"); - add_srs_wkt (p, 8, - "tral_meridian\",-110.0833333333333],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9999375],PARAMETER[\"false_easting\",800000],PA"); - add_srs_wkt (p, 10, - "RAMETER[\"false_northing\",100000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); - add_srs_wkt (p, 12, - "RTH],AUTHORITY[\"EPSG\",\"32158\"]]"); - p = add_epsg_def (filter, first, last, 32161, "epsg", 32161, - "NAD83 / Puerto Rico & Virgin Is."); - add_proj4text (p, 0, - "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333"); - add_proj4text (p, 1, - "333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +"); - add_proj4text (p, 2, - "x_0=200000 +y_0=200000 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Puerto Rico & Virgin Is.\",GEOGCS[\"NAD"); - add_srs_wkt (p, 1, - "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); - add_srs_wkt (p, 2, - "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); - add_srs_wkt (p, 7, - "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); - add_srs_wkt (p, 8, - ",18.43333333333333],PARAMETER[\"standard_parallel_2\",18"); - add_srs_wkt (p, 9, - ".03333333333333],PARAMETER[\"latitude_of_origin\",17.833"); - add_srs_wkt (p, 10, - "33333333333],PARAMETER[\"central_meridian\",-66.43333333"); - add_srs_wkt (p, 11, - "333334],PARAMETER[\"false_easting\",200000],PARAMETER[\""); - add_srs_wkt (p, 12, - "false_northing\",200000],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 13, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 14, - "RITY[\"EPSG\",\"32161\"]]"); - p = add_epsg_def (filter, first, last, 32164, "epsg", 32164, - "NAD83 / BLM 14N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 14N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",-99],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 11, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32164\"]]"); - p = add_epsg_def (filter, first, last, 32165, "epsg", 32165, - "NAD83 / BLM 15N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 15N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",-93],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 11, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32165\"]]"); - p = add_epsg_def (filter, first, last, 32166, "epsg", 32166, - "NAD83 / BLM 16N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 16N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",-87],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 11, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32166\"]]"); - p = add_epsg_def (filter, first, last, 32167, "epsg", 32167, - "NAD83 / BLM 17N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / BLM 17N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); - add_srs_wkt (p, 7, - "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); - add_srs_wkt (p, 8, - "ntral_meridian\",-81],PARAMETER[\"scale_factor\",0.9996]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); - add_srs_wkt (p, 10, - "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); - add_srs_wkt (p, 11, - "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); - add_srs_wkt (p, 12, - "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32167\"]]"); - p = add_epsg_def (filter, first, last, 32180, "epsg", 32180, - "NAD83 / SCoPQ zone 2 (deprecated)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / SCoPQ zone 2 (deprecated)\",GEOGCS[\"NA"); - add_srs_wkt (p, 1, - "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); - add_srs_wkt (p, 2, - " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); - add_srs_wkt (p, 3, - "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); - add_srs_wkt (p, 4, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 5, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 6, - "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 7, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 8, - "METER[\"central_meridian\",-55.5],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 9, - "or\",0.9999],PARAMETER[\"false_easting\",304800],PARAMET"); - add_srs_wkt (p, 10, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 11, - "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); - add_srs_wkt (p, 12, - "RITY[\"EPSG\",\"32180\"]]"); - p = add_epsg_def (filter, first, last, 32181, "epsg", 32181, - "NAD83 / MTM zone 1"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 1\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-53],PARAMETER[\"scale_factor\",0.9999],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32181\"]]"); - p = add_epsg_def (filter, first, last, 32182, "epsg", 32182, - "NAD83 / MTM zone 2"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 2\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-56],PARAMETER[\"scale_factor\",0.9999],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32182\"]]"); - p = add_epsg_def (filter, first, last, 32183, "epsg", 32183, - "NAD83 / MTM zone 3"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 3\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-58.5],PARAMETER[\"scale_factor\",0.9999],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32183\"]]"); - p = add_epsg_def (filter, first, last, 32184, "epsg", 32184, - "NAD83 / MTM zone 4"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 4\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-61.5],PARAMETER[\"scale_factor\",0.9999],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32184\"]]"); - p = add_epsg_def (filter, first, last, 32185, "epsg", 32185, - "NAD83 / MTM zone 5"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 5\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-64.5],PARAMETER[\"scale_factor\",0.9999],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32185\"]]"); - p = add_epsg_def (filter, first, last, 32186, "epsg", 32186, - "NAD83 / MTM zone 6"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 6\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-67.5],PARAMETER[\"scale_factor\",0.9999],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32186\"]]"); - p = add_epsg_def (filter, first, last, 32187, "epsg", 32187, - "NAD83 / MTM zone 7"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 7\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-70.5],PARAMETER[\"scale_factor\",0.9999],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32187\"]]"); - p = add_epsg_def (filter, first, last, 32188, "epsg", 32188, - "NAD83 / MTM zone 8"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 8\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-73.5],PARAMETER[\"scale_factor\",0.9999],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32188\"]]"); - p = add_epsg_def (filter, first, last, 32189, "epsg", 32189, - "NAD83 / MTM zone 9"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 9\",GEOGCS[\"NAD83\",DATUM[\"N"); - add_srs_wkt (p, 1, - "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); - add_srs_wkt (p, 2, - ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); - add_srs_wkt (p, 3, - ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); - add_srs_wkt (p, 4, - "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); - add_srs_wkt (p, 5, - ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); - add_srs_wkt (p, 6, - "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-76.5],PARAMETER[\"scale_factor\",0.9999],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32189\"]]"); - p = add_epsg_def (filter, first, last, 32190, "epsg", 32190, - "NAD83 / MTM zone 10"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 10\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-79.5],PARAMETER[\"scale_factor\",0.9999],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32190\"]]"); - p = add_epsg_def (filter, first, last, 32191, "epsg", 32191, - "NAD83 / MTM zone 11"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 "); - add_proj4text (p, 1, - "+y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 11\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-82.5],PARAMETER[\"scale_factor\",0.9999],P"); - add_srs_wkt (p, 9, - "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); - add_srs_wkt (p, 10, - "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); - add_srs_wkt (p, 11, - "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); - add_srs_wkt (p, 12, - "ITY[\"EPSG\",\"32191\"]]"); - p = add_epsg_def (filter, first, last, 32192, "epsg", 32192, - "NAD83 / MTM zone 12"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 12\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-81],PARAMETER[\"scale_factor\",0.9999],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"32192\"]]"); - p = add_epsg_def (filter, first, last, 32193, "epsg", 32193, - "NAD83 / MTM zone 13"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 13\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-84],PARAMETER[\"scale_factor\",0.9999],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"32193\"]]"); - p = add_epsg_def (filter, first, last, 32194, "epsg", 32194, - "NAD83 / MTM zone 14"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 14\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-87],PARAMETER[\"scale_factor\",0.9999],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"32194\"]]"); - p = add_epsg_def (filter, first, last, 32195, "epsg", 32195, - "NAD83 / MTM zone 15"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 15\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-90],PARAMETER[\"scale_factor\",0.9999],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"32195\"]]"); - p = add_epsg_def (filter, first, last, 32196, "epsg", 32196, - "NAD83 / MTM zone 16"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 16\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-93],PARAMETER[\"scale_factor\",0.9999],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"32196\"]]"); - p = add_epsg_def (filter, first, last, 32197, "epsg", 32197, - "NAD83 / MTM zone 17"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y"); - add_proj4text (p, 1, - "_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / MTM zone 17\",GEOGCS[\"NAD83\",DATUM[\""); - add_srs_wkt (p, 1, - "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); - add_srs_wkt (p, 2, - "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); - add_srs_wkt (p, 3, - "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); - add_srs_wkt (p, 4, - "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); - add_srs_wkt (p, 5, - "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); - add_srs_wkt (p, 6, - "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); - add_srs_wkt (p, 7, - "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); - add_srs_wkt (p, 8, - "l_meridian\",-96],PARAMETER[\"scale_factor\",0.9999],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); - add_srs_wkt (p, 10, - "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 11, - "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); - add_srs_wkt (p, 12, - "Y[\"EPSG\",\"32197\"]]"); - p = add_epsg_def (filter, first, last, 32198, "epsg", 32198, - "NAD83 / Quebec Lambert"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_"); - add_proj4text (p, 1, - "0=0 +y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Quebec Lambert\",GEOGCS[\"NAD83\",DATUM"); - add_srs_wkt (p, 1, - "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); - add_srs_wkt (p, 2, - "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); - add_srs_wkt (p, 3, - "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); - add_srs_wkt (p, 4, - "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); - add_srs_wkt (p, 5, - "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); - add_srs_wkt (p, 6, - "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); - add_srs_wkt (p, 7, - "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",60],PARA"); - add_srs_wkt (p, 8, - "METER[\"standard_parallel_2\",46],PARAMETER[\"latitude_o"); - add_srs_wkt (p, 9, - "f_origin\",44],PARAMETER[\"central_meridian\",-68.5],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); - add_srs_wkt (p, 11, - ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 12, - "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32198"); - add_srs_wkt (p, 13, - "\"]]"); - p = add_epsg_def (filter, first, last, 32199, "epsg", 32199, - "NAD83 / Louisiana Offshore"); - add_proj4text (p, 0, - "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); - add_proj4text (p, 1, - "667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=1000000 +"); - add_proj4text (p, 2, - "y_0=0 +datum=NAD83 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"NAD83 / Louisiana Offshore\",GEOGCS[\"NAD83\",D"); - add_srs_wkt (p, 1, - "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); - add_srs_wkt (p, 2, - ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); - add_srs_wkt (p, 3, - "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); - add_srs_wkt (p, 4, - "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); - add_srs_wkt (p, 5, - "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); - add_srs_wkt (p, 7, - "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",27.8"); - add_srs_wkt (p, 8, - "3333333333333],PARAMETER[\"standard_parallel_2\",26.1666"); - add_srs_wkt (p, 9, - "6666666667],PARAMETER[\"latitude_of_origin\",25.5],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"central_meridian\",-91.33333333333333],PARAMETER["); - add_srs_wkt (p, 11, - "\"false_easting\",1000000],PARAMETER[\"false_northing\","); - add_srs_wkt (p, 12, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 13, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32199\""); - add_srs_wkt (p, 14, - "]]"); - p = add_epsg_def (filter, first, last, 32201, "epsg", 32201, - "WGS 72 / UTM zone 1N"); - add_proj4text (p, 0, - "+proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); - add_proj4text (p, 1, - "4,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 1N\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32201\"]]"); - p = add_epsg_def (filter, first, last, 32202, "epsg", 32202, - "WGS 72 / UTM zone 2N"); - add_proj4text (p, 0, - "+proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); - add_proj4text (p, 1, - "4,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 2N\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "171],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32202\"]]"); - p = add_epsg_def (filter, first, last, 32203, "epsg", 32203, - "WGS 72 / UTM zone 3N"); - add_proj4text (p, 0, - "+proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); - add_proj4text (p, 1, - "4,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 3N\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "165],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32203\"]]"); - p = add_epsg_def (filter, first, last, 32204, "epsg", 32204, - "WGS 72 / UTM zone 4N"); - add_proj4text (p, 0, - "+proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); - add_proj4text (p, 1, - "4,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 4N\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "159],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32204\"]]"); - p = add_epsg_def (filter, first, last, 32205, "epsg", 32205, - "WGS 72 / UTM zone 5N"); - add_proj4text (p, 0, - "+proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); - add_proj4text (p, 1, - "4,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 5N\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "153],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32205\"]]"); - p = add_epsg_def (filter, first, last, 32206, "epsg", 32206, - "WGS 72 / UTM zone 6N"); - add_proj4text (p, 0, - "+proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); - add_proj4text (p, 1, - "4,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 6N\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "147],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32206\"]]"); - p = add_epsg_def (filter, first, last, 32207, "epsg", 32207, - "WGS 72 / UTM zone 7N"); - add_proj4text (p, 0, - "+proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); - add_proj4text (p, 1, - "4,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 7N\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "141],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32207\"]]"); - p = add_epsg_def (filter, first, last, 32208, "epsg", 32208, - "WGS 72 / UTM zone 8N"); - add_proj4text (p, 0, - "+proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); - add_proj4text (p, 1, - "4,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 8N\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "135],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32208\"]]"); - p = add_epsg_def (filter, first, last, 32209, "epsg", 32209, - "WGS 72 / UTM zone 9N"); - add_proj4text (p, 0, - "+proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); - add_proj4text (p, 1, - "4,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 9N\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "129],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32209\"]]"); - p = add_epsg_def (filter, first, last, 32210, "epsg", 32210, - "WGS 72 / UTM zone 10N"); - add_proj4text (p, 0, - "+proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 10N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-123],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); - add_srs_wkt (p, 11, - "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"32210\"]]"); - p = add_epsg_def (filter, first, last, 32211, "epsg", 32211, - "WGS 72 / UTM zone 11N"); - add_proj4text (p, 0, - "+proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 11N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); - add_srs_wkt (p, 11, - "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"32211\"]]"); - p = add_epsg_def (filter, first, last, 32212, "epsg", 32212, - "WGS 72 / UTM zone 12N"); - add_proj4text (p, 0, - "+proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 12N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); - add_srs_wkt (p, 11, - "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"32212\"]]"); - p = add_epsg_def (filter, first, last, 32213, "epsg", 32213, - "WGS 72 / UTM zone 13N"); - add_proj4text (p, 0, - "+proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 13N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); - add_srs_wkt (p, 10, - "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); - add_srs_wkt (p, 11, - "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 12, - "\"32213\"]]"); - p = add_epsg_def (filter, first, last, 32214, "epsg", 32214, - "WGS 72 / UTM zone 14N"); - add_proj4text (p, 0, - "+proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 14N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-99],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32214\"]]"); - p = add_epsg_def (filter, first, last, 32215, "epsg", 32215, - "WGS 72 / UTM zone 15N"); - add_proj4text (p, 0, - "+proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 15N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-93],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32215\"]]"); - p = add_epsg_def (filter, first, last, 32216, "epsg", 32216, - "WGS 72 / UTM zone 16N"); - add_proj4text (p, 0, - "+proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 16N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-87],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32216\"]]"); - p = add_epsg_def (filter, first, last, 32217, "epsg", 32217, - "WGS 72 / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 17N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32217\"]]"); - p = add_epsg_def (filter, first, last, 32218, "epsg", 32218, - "WGS 72 / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 18N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32218\"]]"); - p = add_epsg_def (filter, first, last, 32219, "epsg", 32219, - "WGS 72 / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 19N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32219\"]]"); - p = add_epsg_def (filter, first, last, 32220, "epsg", 32220, - "WGS 72 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 20N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32220\"]]"); - p = add_epsg_def (filter, first, last, 32221, "epsg", 32221, - "WGS 72 / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 21N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32221\"]]"); - p = add_epsg_def (filter, first, last, 32222, "epsg", 32222, - "WGS 72 / UTM zone 22N"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 22N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32222\"]]"); - p = add_epsg_def (filter, first, last, 32223, "epsg", 32223, - "WGS 72 / UTM zone 23N"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 23N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32223\"]]"); - p = add_epsg_def (filter, first, last, 32224, "epsg", 32224, - "WGS 72 / UTM zone 24N"); - add_proj4text (p, 0, - "+proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 24N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32224\"]]"); - p = add_epsg_def (filter, first, last, 32225, "epsg", 32225, - "WGS 72 / UTM zone 25N"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 25N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32225\"]]"); - p = add_epsg_def (filter, first, last, 32226, "epsg", 32226, - "WGS 72 / UTM zone 26N"); - add_proj4text (p, 0, - "+proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 26N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-27],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32226\"]]"); - p = add_epsg_def (filter, first, last, 32227, "epsg", 32227, - "WGS 72 / UTM zone 27N"); - add_proj4text (p, 0, - "+proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 27N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-21],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32227\"]]"); - p = add_epsg_def (filter, first, last, 32228, "epsg", 32228, - "WGS 72 / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 28N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32228\"]]"); - p = add_epsg_def (filter, first, last, 32229, "epsg", 32229, - "WGS 72 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 29N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32229\"]]"); - p = add_epsg_def (filter, first, last, 32230, "epsg", 32230, - "WGS 72 / UTM zone 30N"); - add_proj4text (p, 0, - "+proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 30N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32230\"]]"); - p = add_epsg_def (filter, first, last, 32231, "epsg", 32231, - "WGS 72 / UTM zone 31N"); - add_proj4text (p, 0, - "+proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 31N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 12, - "2231\"]]"); - p = add_epsg_def (filter, first, last, 32232, "epsg", 32232, - "WGS 72 / UTM zone 32N"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 32N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); - add_srs_wkt (p, 10, - "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); - add_srs_wkt (p, 11, - "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); - add_srs_wkt (p, 12, - "2232\"]]"); - p = add_epsg_def (filter, first, last, 32233, "epsg", 32233, - "WGS 72 / UTM zone 33N"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 33N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32233\"]]"); - p = add_epsg_def (filter, first, last, 32234, "epsg", 32234, - "WGS 72 / UTM zone 34N"); - add_proj4text (p, 0, - "+proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 34N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",21],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32234\"]]"); - p = add_epsg_def (filter, first, last, 32235, "epsg", 32235, - "WGS 72 / UTM zone 35N"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 35N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",27],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32235\"]]"); - p = add_epsg_def (filter, first, last, 32236, "epsg", 32236, - "WGS 72 / UTM zone 36N"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 36N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32236\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_38.c b/src/spatialite/src/srsinit/epsg_inlined_38.c deleted file mode 100644 index 8d0eab0..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_38.c +++ /dev/null @@ -1,3290 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_38 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 32237, "epsg", 32237, - "WGS 72 / UTM zone 37N"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 37N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32237\"]]"); - p = add_epsg_def (filter, first, last, 32238, "epsg", 32238, - "WGS 72 / UTM zone 38N"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 38N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32238\"]]"); - p = add_epsg_def (filter, first, last, 32239, "epsg", 32239, - "WGS 72 / UTM zone 39N"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 39N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32239\"]]"); - p = add_epsg_def (filter, first, last, 32240, "epsg", 32240, - "WGS 72 / UTM zone 40N"); - add_proj4text (p, 0, - "+proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 40N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32240\"]]"); - p = add_epsg_def (filter, first, last, 32241, "epsg", 32241, - "WGS 72 / UTM zone 41N"); - add_proj4text (p, 0, - "+proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 41N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32241\"]]"); - p = add_epsg_def (filter, first, last, 32242, "epsg", 32242, - "WGS 72 / UTM zone 42N"); - add_proj4text (p, 0, - "+proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 42N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32242\"]]"); - p = add_epsg_def (filter, first, last, 32243, "epsg", 32243, - "WGS 72 / UTM zone 43N"); - add_proj4text (p, 0, - "+proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 43N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32243\"]]"); - p = add_epsg_def (filter, first, last, 32244, "epsg", 32244, - "WGS 72 / UTM zone 44N"); - add_proj4text (p, 0, - "+proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 44N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32244\"]]"); - p = add_epsg_def (filter, first, last, 32245, "epsg", 32245, - "WGS 72 / UTM zone 45N"); - add_proj4text (p, 0, - "+proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 45N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",87],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32245\"]]"); - p = add_epsg_def (filter, first, last, 32246, "epsg", 32246, - "WGS 72 / UTM zone 46N"); - add_proj4text (p, 0, - "+proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 46N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",93],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32246\"]]"); - p = add_epsg_def (filter, first, last, 32247, "epsg", 32247, - "WGS 72 / UTM zone 47N"); - add_proj4text (p, 0, - "+proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 47N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",99],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); - add_srs_wkt (p, 10, - "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); - add_srs_wkt (p, 11, - "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32247\"]]"); - p = add_epsg_def (filter, first, last, 32248, "epsg", 32248, - "WGS 72 / UTM zone 48N"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 48N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32248\"]]"); - p = add_epsg_def (filter, first, last, 32249, "epsg", 32249, - "WGS 72 / UTM zone 49N"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 49N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32249\"]]"); - p = add_epsg_def (filter, first, last, 32250, "epsg", 32250, - "WGS 72 / UTM zone 50N"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 50N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32250\"]]"); - p = add_epsg_def (filter, first, last, 32251, "epsg", 32251, - "WGS 72 / UTM zone 51N"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 51N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",123],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32251\"]]"); - p = add_epsg_def (filter, first, last, 32252, "epsg", 32252, - "WGS 72 / UTM zone 52N"); - add_proj4text (p, 0, - "+proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 52N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",129],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32252\"]]"); - p = add_epsg_def (filter, first, last, 32253, "epsg", 32253, - "WGS 72 / UTM zone 53N"); - add_proj4text (p, 0, - "+proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 53N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",135],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32253\"]]"); - p = add_epsg_def (filter, first, last, 32254, "epsg", 32254, - "WGS 72 / UTM zone 54N"); - add_proj4text (p, 0, - "+proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 54N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",141],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32254\"]]"); - p = add_epsg_def (filter, first, last, 32255, "epsg", 32255, - "WGS 72 / UTM zone 55N"); - add_proj4text (p, 0, - "+proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 55N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",147],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32255\"]]"); - p = add_epsg_def (filter, first, last, 32256, "epsg", 32256, - "WGS 72 / UTM zone 56N"); - add_proj4text (p, 0, - "+proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 56N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",153],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32256\"]]"); - p = add_epsg_def (filter, first, last, 32257, "epsg", 32257, - "WGS 72 / UTM zone 57N"); - add_proj4text (p, 0, - "+proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 57N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",159],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32257\"]]"); - p = add_epsg_def (filter, first, last, 32258, "epsg", 32258, - "WGS 72 / UTM zone 58N"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 58N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",165],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32258\"]]"); - p = add_epsg_def (filter, first, last, 32259, "epsg", 32259, - "WGS 72 / UTM zone 59N"); - add_proj4text (p, 0, - "+proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 59N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",171],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32259\"]]"); - p = add_epsg_def (filter, first, last, 32260, "epsg", 32260, - "WGS 72 / UTM zone 60N"); - add_proj4text (p, 0, - "+proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); - add_proj4text (p, 1, - "54,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 60N\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); - add_srs_wkt (p, 10, - "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); - add_srs_wkt (p, 11, - "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 12, - "32260\"]]"); - p = add_epsg_def (filter, first, last, 32301, "epsg", 32301, - "WGS 72 / UTM zone 1S"); - add_proj4text (p, 0, - "+proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); - add_proj4text (p, 1, - ",0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 1S\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32301\"]]"); - p = add_epsg_def (filter, first, last, 32302, "epsg", 32302, - "WGS 72 / UTM zone 2S"); - add_proj4text (p, 0, - "+proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); - add_proj4text (p, 1, - ",0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 2S\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "171],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32302\"]]"); - p = add_epsg_def (filter, first, last, 32303, "epsg", 32303, - "WGS 72 / UTM zone 3S"); - add_proj4text (p, 0, - "+proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); - add_proj4text (p, 1, - ",0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 3S\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "165],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32303\"]]"); - p = add_epsg_def (filter, first, last, 32304, "epsg", 32304, - "WGS 72 / UTM zone 4S"); - add_proj4text (p, 0, - "+proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); - add_proj4text (p, 1, - ",0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 4S\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "159],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32304\"]]"); - p = add_epsg_def (filter, first, last, 32305, "epsg", 32305, - "WGS 72 / UTM zone 5S"); - add_proj4text (p, 0, - "+proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); - add_proj4text (p, 1, - ",0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 5S\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "153],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32305\"]]"); - p = add_epsg_def (filter, first, last, 32306, "epsg", 32306, - "WGS 72 / UTM zone 6S"); - add_proj4text (p, 0, - "+proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); - add_proj4text (p, 1, - ",0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 6S\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "147],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32306\"]]"); - p = add_epsg_def (filter, first, last, 32307, "epsg", 32307, - "WGS 72 / UTM zone 7S"); - add_proj4text (p, 0, - "+proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); - add_proj4text (p, 1, - ",0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 7S\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "141],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32307\"]]"); - p = add_epsg_def (filter, first, last, 32308, "epsg", 32308, - "WGS 72 / UTM zone 8S"); - add_proj4text (p, 0, - "+proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); - add_proj4text (p, 1, - ",0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 8S\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "135],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32308\"]]"); - p = add_epsg_def (filter, first, last, 32309, "epsg", 32309, - "WGS 72 / UTM zone 9S"); - add_proj4text (p, 0, - "+proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); - add_proj4text (p, 1, - ",0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 9S\",GEOGCS[\"WGS 72\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); - add_srs_wkt (p, 2, - "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); - add_srs_wkt (p, 4, - "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); - add_srs_wkt (p, 5, - "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 6, - "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); - add_srs_wkt (p, 7, - "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); - add_srs_wkt (p, 8, - "129],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32309\"]]"); - p = add_epsg_def (filter, first, last, 32310, "epsg", 32310, - "WGS 72 / UTM zone 10S"); - add_proj4text (p, 0, - "+proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 10S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-123],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",500000],PARAMETER[\"false_northing\",10000"); - add_srs_wkt (p, 10, - "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); - add_srs_wkt (p, 11, - "[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"32310\"]]"); - p = add_epsg_def (filter, first, last, 32311, "epsg", 32311, - "WGS 72 / UTM zone 11S"); - add_proj4text (p, 0, - "+proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 11S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",500000],PARAMETER[\"false_northing\",10000"); - add_srs_wkt (p, 10, - "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); - add_srs_wkt (p, 11, - "[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"32311\"]]"); - p = add_epsg_def (filter, first, last, 32312, "epsg", 32312, - "WGS 72 / UTM zone 12S"); - add_proj4text (p, 0, - "+proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 12S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",500000],PARAMETER[\"false_northing\",10000"); - add_srs_wkt (p, 10, - "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); - add_srs_wkt (p, 11, - "[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"32312\"]]"); - p = add_epsg_def (filter, first, last, 32313, "epsg", 32313, - "WGS 72 / UTM zone 13S"); - add_proj4text (p, 0, - "+proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 13S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); - add_srs_wkt (p, 9, - "lse_easting\",500000],PARAMETER[\"false_northing\",10000"); - add_srs_wkt (p, 10, - "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); - add_srs_wkt (p, 11, - "[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); - add_srs_wkt (p, 12, - "EPSG\",\"32313\"]]"); - p = add_epsg_def (filter, first, last, 32314, "epsg", 32314, - "WGS 72 / UTM zone 14S"); - add_proj4text (p, 0, - "+proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 14S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-99],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32314\"]]"); - p = add_epsg_def (filter, first, last, 32315, "epsg", 32315, - "WGS 72 / UTM zone 15S"); - add_proj4text (p, 0, - "+proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 15S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-93],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32315\"]]"); - p = add_epsg_def (filter, first, last, 32316, "epsg", 32316, - "WGS 72 / UTM zone 16S"); - add_proj4text (p, 0, - "+proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 16S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-87],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32316\"]]"); - p = add_epsg_def (filter, first, last, 32317, "epsg", 32317, - "WGS 72 / UTM zone 17S"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 17S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32317\"]]"); - p = add_epsg_def (filter, first, last, 32318, "epsg", 32318, - "WGS 72 / UTM zone 18S"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 18S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32318\"]]"); - p = add_epsg_def (filter, first, last, 32319, "epsg", 32319, - "WGS 72 / UTM zone 19S"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 19S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32319\"]]"); - p = add_epsg_def (filter, first, last, 32320, "epsg", 32320, - "WGS 72 / UTM zone 20S"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 20S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32320\"]]"); - p = add_epsg_def (filter, first, last, 32321, "epsg", 32321, - "WGS 72 / UTM zone 21S"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 21S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32321\"]]"); - p = add_epsg_def (filter, first, last, 32322, "epsg", 32322, - "WGS 72 / UTM zone 22S"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 22S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32322\"]]"); - p = add_epsg_def (filter, first, last, 32323, "epsg", 32323, - "WGS 72 / UTM zone 23S"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 23S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32323\"]]"); - p = add_epsg_def (filter, first, last, 32324, "epsg", 32324, - "WGS 72 / UTM zone 24S"); - add_proj4text (p, 0, - "+proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 24S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32324\"]]"); - p = add_epsg_def (filter, first, last, 32325, "epsg", 32325, - "WGS 72 / UTM zone 25S"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 25S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32325\"]]"); - p = add_epsg_def (filter, first, last, 32326, "epsg", 32326, - "WGS 72 / UTM zone 26S"); - add_proj4text (p, 0, - "+proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 26S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-27],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32326\"]]"); - p = add_epsg_def (filter, first, last, 32327, "epsg", 32327, - "WGS 72 / UTM zone 27S"); - add_proj4text (p, 0, - "+proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 27S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-21],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32327\"]]"); - p = add_epsg_def (filter, first, last, 32328, "epsg", 32328, - "WGS 72 / UTM zone 28S"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 28S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32328\"]]"); - p = add_epsg_def (filter, first, last, 32329, "epsg", 32329, - "WGS 72 / UTM zone 29S"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 29S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32329\"]]"); - p = add_epsg_def (filter, first, last, 32330, "epsg", 32330, - "WGS 72 / UTM zone 30S"); - add_proj4text (p, 0, - "+proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 30S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",-3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32330\"]]"); - p = add_epsg_def (filter, first, last, 32331, "epsg", 32331, - "WGS 72 / UTM zone 31S"); - add_proj4text (p, 0, - "+proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 31S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",10000000"); - add_srs_wkt (p, 10, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32331\"]]"); - p = add_epsg_def (filter, first, last, 32332, "epsg", 32332, - "WGS 72 / UTM zone 32S"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 32S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); - add_srs_wkt (p, 9, - "_easting\",500000],PARAMETER[\"false_northing\",10000000"); - add_srs_wkt (p, 10, - "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32332\"]]"); - p = add_epsg_def (filter, first, last, 32333, "epsg", 32333, - "WGS 72 / UTM zone 33S"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 33S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32333\"]]"); - p = add_epsg_def (filter, first, last, 32334, "epsg", 32334, - "WGS 72 / UTM zone 34S"); - add_proj4text (p, 0, - "+proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 34S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",21],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32334\"]]"); - p = add_epsg_def (filter, first, last, 32335, "epsg", 32335, - "WGS 72 / UTM zone 35S"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 35S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",27],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32335\"]]"); - p = add_epsg_def (filter, first, last, 32336, "epsg", 32336, - "WGS 72 / UTM zone 36S"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 36S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32336\"]]"); - p = add_epsg_def (filter, first, last, 32337, "epsg", 32337, - "WGS 72 / UTM zone 37S"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 37S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32337\"]]"); - p = add_epsg_def (filter, first, last, 32338, "epsg", 32338, - "WGS 72 / UTM zone 38S"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 38S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32338\"]]"); - p = add_epsg_def (filter, first, last, 32339, "epsg", 32339, - "WGS 72 / UTM zone 39S"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 39S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32339\"]]"); - p = add_epsg_def (filter, first, last, 32340, "epsg", 32340, - "WGS 72 / UTM zone 40S"); - add_proj4text (p, 0, - "+proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 40S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32340\"]]"); - p = add_epsg_def (filter, first, last, 32341, "epsg", 32341, - "WGS 72 / UTM zone 41S"); - add_proj4text (p, 0, - "+proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 41S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32341\"]]"); - p = add_epsg_def (filter, first, last, 32342, "epsg", 32342, - "WGS 72 / UTM zone 42S"); - add_proj4text (p, 0, - "+proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 42S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32342\"]]"); - p = add_epsg_def (filter, first, last, 32343, "epsg", 32343, - "WGS 72 / UTM zone 43S"); - add_proj4text (p, 0, - "+proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 43S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32343\"]]"); - p = add_epsg_def (filter, first, last, 32344, "epsg", 32344, - "WGS 72 / UTM zone 44S"); - add_proj4text (p, 0, - "+proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 44S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32344\"]]"); - p = add_epsg_def (filter, first, last, 32345, "epsg", 32345, - "WGS 72 / UTM zone 45S"); - add_proj4text (p, 0, - "+proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 45S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",87],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32345\"]]"); - p = add_epsg_def (filter, first, last, 32346, "epsg", 32346, - "WGS 72 / UTM zone 46S"); - add_proj4text (p, 0, - "+proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 46S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",93],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32346\"]]"); - p = add_epsg_def (filter, first, last, 32347, "epsg", 32347, - "WGS 72 / UTM zone 47S"); - add_proj4text (p, 0, - "+proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 47S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",99],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); - add_srs_wkt (p, 9, - "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); - add_srs_wkt (p, 10, - "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); - add_srs_wkt (p, 12, - "G\",\"32347\"]]"); - p = add_epsg_def (filter, first, last, 32348, "epsg", 32348, - "WGS 72 / UTM zone 48S"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 48S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32348\"]]"); - p = add_epsg_def (filter, first, last, 32349, "epsg", 32349, - "WGS 72 / UTM zone 49S"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 49S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32349\"]]"); - p = add_epsg_def (filter, first, last, 32350, "epsg", 32350, - "WGS 72 / UTM zone 50S"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 50S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32350\"]]"); - p = add_epsg_def (filter, first, last, 32351, "epsg", 32351, - "WGS 72 / UTM zone 51S"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 51S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",123],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32351\"]]"); - p = add_epsg_def (filter, first, last, 32352, "epsg", 32352, - "WGS 72 / UTM zone 52S"); - add_proj4text (p, 0, - "+proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 52S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",129],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32352\"]]"); - p = add_epsg_def (filter, first, last, 32353, "epsg", 32353, - "WGS 72 / UTM zone 53S"); - add_proj4text (p, 0, - "+proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 53S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",135],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32353\"]]"); - p = add_epsg_def (filter, first, last, 32354, "epsg", 32354, - "WGS 72 / UTM zone 54S"); - add_proj4text (p, 0, - "+proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 54S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",141],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32354\"]]"); - p = add_epsg_def (filter, first, last, 32355, "epsg", 32355, - "WGS 72 / UTM zone 55S"); - add_proj4text (p, 0, - "+proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 55S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",147],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32355\"]]"); - p = add_epsg_def (filter, first, last, 32356, "epsg", 32356, - "WGS 72 / UTM zone 56S"); - add_proj4text (p, 0, - "+proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 56S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",153],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32356\"]]"); - p = add_epsg_def (filter, first, last, 32357, "epsg", 32357, - "WGS 72 / UTM zone 57S"); - add_proj4text (p, 0, - "+proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 57S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",159],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32357\"]]"); - p = add_epsg_def (filter, first, last, 32358, "epsg", 32358, - "WGS 72 / UTM zone 58S"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 58S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",165],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32358\"]]"); - p = add_epsg_def (filter, first, last, 32359, "epsg", 32359, - "WGS 72 / UTM zone 59S"); - add_proj4text (p, 0, - "+proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 59S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",171],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32359\"]]"); - p = add_epsg_def (filter, first, last, 32360, "epsg", 32360, - "WGS 72 / UTM zone 60S"); - add_proj4text (p, 0, - "+proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,4.5,"); - add_proj4text (p, 1, - "0,0,0.554,0.2263 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72 / UTM zone 60S\",GEOGCS[\"WGS 72\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); - add_srs_wkt (p, 2, - "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); - add_srs_wkt (p, 3, - ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); - add_srs_wkt (p, 4, - "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); - add_srs_wkt (p, 5, - "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); - add_srs_wkt (p, 7, - "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); - add_srs_wkt (p, 8, - ",177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); - add_srs_wkt (p, 9, - "se_easting\",500000],PARAMETER[\"false_northing\",100000"); - add_srs_wkt (p, 10, - "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); - add_srs_wkt (p, 12, - "PSG\",\"32360\"]]"); - p = add_epsg_def (filter, first, last, 32401, "epsg", 32401, - "WGS 72BE / UTM zone 1N"); - add_proj4text (p, 0, - "+proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); - add_proj4text (p, 1, - "4,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 1N\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-177],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"32401\"]]"); - p = add_epsg_def (filter, first, last, 32402, "epsg", 32402, - "WGS 72BE / UTM zone 2N"); - add_proj4text (p, 0, - "+proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); - add_proj4text (p, 1, - "4,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 2N\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-171],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"32402\"]]"); - p = add_epsg_def (filter, first, last, 32403, "epsg", 32403, - "WGS 72BE / UTM zone 3N"); - add_proj4text (p, 0, - "+proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); - add_proj4text (p, 1, - "4,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 3N\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-165],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"32403\"]]"); - p = add_epsg_def (filter, first, last, 32404, "epsg", 32404, - "WGS 72BE / UTM zone 4N"); - add_proj4text (p, 0, - "+proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); - add_proj4text (p, 1, - "4,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 4N\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-159],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"32404\"]]"); - p = add_epsg_def (filter, first, last, 32405, "epsg", 32405, - "WGS 72BE / UTM zone 5N"); - add_proj4text (p, 0, - "+proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); - add_proj4text (p, 1, - "4,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 5N\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-153],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"32405\"]]"); - p = add_epsg_def (filter, first, last, 32406, "epsg", 32406, - "WGS 72BE / UTM zone 6N"); - add_proj4text (p, 0, - "+proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); - add_proj4text (p, 1, - "4,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 6N\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-147],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"32406\"]]"); - p = add_epsg_def (filter, first, last, 32407, "epsg", 32407, - "WGS 72BE / UTM zone 7N"); - add_proj4text (p, 0, - "+proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); - add_proj4text (p, 1, - "4,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 7N\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-141],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"32407\"]]"); - p = add_epsg_def (filter, first, last, 32408, "epsg", 32408, - "WGS 72BE / UTM zone 8N"); - add_proj4text (p, 0, - "+proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); - add_proj4text (p, 1, - "4,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 8N\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-135],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"32408\"]]"); - p = add_epsg_def (filter, first, last, 32409, "epsg", 32409, - "WGS 72BE / UTM zone 9N"); - add_proj4text (p, 0, - "+proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); - add_proj4text (p, 1, - "4,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 9N\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-129],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"32409\"]]"); - p = add_epsg_def (filter, first, last, 32410, "epsg", 32410, - "WGS 72BE / UTM zone 10N"); - add_proj4text (p, 0, - "+proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 10N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-123],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"32410\"]]"); - p = add_epsg_def (filter, first, last, 32411, "epsg", 32411, - "WGS 72BE / UTM zone 11N"); - add_proj4text (p, 0, - "+proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 11N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"32411\"]]"); - p = add_epsg_def (filter, first, last, 32412, "epsg", 32412, - "WGS 72BE / UTM zone 12N"); - add_proj4text (p, 0, - "+proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 12N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-111],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"32412\"]]"); - p = add_epsg_def (filter, first, last, 32413, "epsg", 32413, - "WGS 72BE / UTM zone 13N"); - add_proj4text (p, 0, - "+proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 13N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-105],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); - add_srs_wkt (p, 11, - "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); - add_srs_wkt (p, 12, - "ng\",NORTH],AUTHORITY[\"EPSG\",\"32413\"]]"); - p = add_epsg_def (filter, first, last, 32414, "epsg", 32414, - "WGS 72BE / UTM zone 14N"); - add_proj4text (p, 0, - "+proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 14N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-99],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32414\"]]"); - p = add_epsg_def (filter, first, last, 32415, "epsg", 32415, - "WGS 72BE / UTM zone 15N"); - add_proj4text (p, 0, - "+proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 15N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-93],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32415\"]]"); - p = add_epsg_def (filter, first, last, 32416, "epsg", 32416, - "WGS 72BE / UTM zone 16N"); - add_proj4text (p, 0, - "+proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 16N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-87],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32416\"]]"); - p = add_epsg_def (filter, first, last, 32417, "epsg", 32417, - "WGS 72BE / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 17N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-81],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32417\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_39.c b/src/spatialite/src/srsinit/epsg_inlined_39.c deleted file mode 100644 index c5f2582..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_39.c +++ /dev/null @@ -1,3290 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_39 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 32418, "epsg", 32418, - "WGS 72BE / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 18N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-75],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32418\"]]"); - p = add_epsg_def (filter, first, last, 32419, "epsg", 32419, - "WGS 72BE / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 19N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32419\"]]"); - p = add_epsg_def (filter, first, last, 32420, "epsg", 32420, - "WGS 72BE / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 20N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32420\"]]"); - p = add_epsg_def (filter, first, last, 32421, "epsg", 32421, - "WGS 72BE / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 21N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32421\"]]"); - p = add_epsg_def (filter, first, last, 32422, "epsg", 32422, - "WGS 72BE / UTM zone 22N"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 22N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-51],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32422\"]]"); - p = add_epsg_def (filter, first, last, 32423, "epsg", 32423, - "WGS 72BE / UTM zone 23N"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 23N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-45],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32423\"]]"); - p = add_epsg_def (filter, first, last, 32424, "epsg", 32424, - "WGS 72BE / UTM zone 24N"); - add_proj4text (p, 0, - "+proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 24N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-39],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32424\"]]"); - p = add_epsg_def (filter, first, last, 32425, "epsg", 32425, - "WGS 72BE / UTM zone 25N"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 25N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-33],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32425\"]]"); - p = add_epsg_def (filter, first, last, 32426, "epsg", 32426, - "WGS 72BE / UTM zone 26N"); - add_proj4text (p, 0, - "+proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 26N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-27],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32426\"]]"); - p = add_epsg_def (filter, first, last, 32427, "epsg", 32427, - "WGS 72BE / UTM zone 27N"); - add_proj4text (p, 0, - "+proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 27N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-21],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32427\"]]"); - p = add_epsg_def (filter, first, last, 32428, "epsg", 32428, - "WGS 72BE / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 28N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-15],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32428\"]]"); - p = add_epsg_def (filter, first, last, 32429, "epsg", 32429, - "WGS 72BE / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 29N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-9],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32429\"]]"); - p = add_epsg_def (filter, first, last, 32430, "epsg", 32430, - "WGS 72BE / UTM zone 30N"); - add_proj4text (p, 0, - "+proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 30N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-3],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32430\"]]"); - p = add_epsg_def (filter, first, last, 32431, "epsg", 32431, - "WGS 72BE / UTM zone 31N"); - add_proj4text (p, 0, - "+proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 31N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",3],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"32431\"]]"); - p = add_epsg_def (filter, first, last, 32432, "epsg", 32432, - "WGS 72BE / UTM zone 32N"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 32N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",9],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 11, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 12, - ",NORTH],AUTHORITY[\"EPSG\",\"32432\"]]"); - p = add_epsg_def (filter, first, last, 32433, "epsg", 32433, - "WGS 72BE / UTM zone 33N"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 33N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",15],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32433\"]]"); - p = add_epsg_def (filter, first, last, 32434, "epsg", 32434, - "WGS 72BE / UTM zone 34N"); - add_proj4text (p, 0, - "+proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 34N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",21],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32434\"]]"); - p = add_epsg_def (filter, first, last, 32435, "epsg", 32435, - "WGS 72BE / UTM zone 35N"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 35N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",27],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32435\"]]"); - p = add_epsg_def (filter, first, last, 32436, "epsg", 32436, - "WGS 72BE / UTM zone 36N"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 36N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",33],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32436\"]]"); - p = add_epsg_def (filter, first, last, 32437, "epsg", 32437, - "WGS 72BE / UTM zone 37N"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 37N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",39],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32437\"]]"); - p = add_epsg_def (filter, first, last, 32438, "epsg", 32438, - "WGS 72BE / UTM zone 38N"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 38N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",45],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32438\"]]"); - p = add_epsg_def (filter, first, last, 32439, "epsg", 32439, - "WGS 72BE / UTM zone 39N"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 39N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",51],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32439\"]]"); - p = add_epsg_def (filter, first, last, 32440, "epsg", 32440, - "WGS 72BE / UTM zone 40N"); - add_proj4text (p, 0, - "+proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 40N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",57],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32440\"]]"); - p = add_epsg_def (filter, first, last, 32441, "epsg", 32441, - "WGS 72BE / UTM zone 41N"); - add_proj4text (p, 0, - "+proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 41N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",63],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32441\"]]"); - p = add_epsg_def (filter, first, last, 32442, "epsg", 32442, - "WGS 72BE / UTM zone 42N"); - add_proj4text (p, 0, - "+proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 42N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",69],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32442\"]]"); - p = add_epsg_def (filter, first, last, 32443, "epsg", 32443, - "WGS 72BE / UTM zone 43N"); - add_proj4text (p, 0, - "+proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 43N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",75],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32443\"]]"); - p = add_epsg_def (filter, first, last, 32444, "epsg", 32444, - "WGS 72BE / UTM zone 44N"); - add_proj4text (p, 0, - "+proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 44N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",81],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32444\"]]"); - p = add_epsg_def (filter, first, last, 32445, "epsg", 32445, - "WGS 72BE / UTM zone 45N"); - add_proj4text (p, 0, - "+proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 45N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",87],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32445\"]]"); - p = add_epsg_def (filter, first, last, 32446, "epsg", 32446, - "WGS 72BE / UTM zone 46N"); - add_proj4text (p, 0, - "+proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 46N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",93],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32446\"]]"); - p = add_epsg_def (filter, first, last, 32447, "epsg", 32447, - "WGS 72BE / UTM zone 47N"); - add_proj4text (p, 0, - "+proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 47N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",99],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32447\"]]"); - p = add_epsg_def (filter, first, last, 32448, "epsg", 32448, - "WGS 72BE / UTM zone 48N"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 48N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",105],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32448\"]]"); - p = add_epsg_def (filter, first, last, 32449, "epsg", 32449, - "WGS 72BE / UTM zone 49N"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 49N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",111],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32449\"]]"); - p = add_epsg_def (filter, first, last, 32450, "epsg", 32450, - "WGS 72BE / UTM zone 50N"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 50N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",117],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32450\"]]"); - p = add_epsg_def (filter, first, last, 32451, "epsg", 32451, - "WGS 72BE / UTM zone 51N"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 51N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",123],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32451\"]]"); - p = add_epsg_def (filter, first, last, 32452, "epsg", 32452, - "WGS 72BE / UTM zone 52N"); - add_proj4text (p, 0, - "+proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 52N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",129],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32452\"]]"); - p = add_epsg_def (filter, first, last, 32453, "epsg", 32453, - "WGS 72BE / UTM zone 53N"); - add_proj4text (p, 0, - "+proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 53N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",135],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32453\"]]"); - p = add_epsg_def (filter, first, last, 32454, "epsg", 32454, - "WGS 72BE / UTM zone 54N"); - add_proj4text (p, 0, - "+proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 54N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",141],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32454\"]]"); - p = add_epsg_def (filter, first, last, 32455, "epsg", 32455, - "WGS 72BE / UTM zone 55N"); - add_proj4text (p, 0, - "+proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 55N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",147],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32455\"]]"); - p = add_epsg_def (filter, first, last, 32456, "epsg", 32456, - "WGS 72BE / UTM zone 56N"); - add_proj4text (p, 0, - "+proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 56N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",153],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32456\"]]"); - p = add_epsg_def (filter, first, last, 32457, "epsg", 32457, - "WGS 72BE / UTM zone 57N"); - add_proj4text (p, 0, - "+proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 57N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",159],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32457\"]]"); - p = add_epsg_def (filter, first, last, 32458, "epsg", 32458, - "WGS 72BE / UTM zone 58N"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 58N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",165],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32458\"]]"); - p = add_epsg_def (filter, first, last, 32459, "epsg", 32459, - "WGS 72BE / UTM zone 59N"); - add_proj4text (p, 0, - "+proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 59N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",171],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32459\"]]"); - p = add_epsg_def (filter, first, last, 32460, "epsg", 32460, - "WGS 72BE / UTM zone 60N"); - add_proj4text (p, 0, - "+proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); - add_proj4text (p, 1, - "14,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 60N\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",177],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 11, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 12, - "\",NORTH],AUTHORITY[\"EPSG\",\"32460\"]]"); - p = add_epsg_def (filter, first, last, 32501, "epsg", 32501, - "WGS 72BE / UTM zone 1S"); - add_proj4text (p, 0, - "+proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); - add_proj4text (p, 1, - ",0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 1S\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-177],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32501\"]]"); - p = add_epsg_def (filter, first, last, 32502, "epsg", 32502, - "WGS 72BE / UTM zone 2S"); - add_proj4text (p, 0, - "+proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); - add_proj4text (p, 1, - ",0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 2S\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-171],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32502\"]]"); - p = add_epsg_def (filter, first, last, 32503, "epsg", 32503, - "WGS 72BE / UTM zone 3S"); - add_proj4text (p, 0, - "+proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); - add_proj4text (p, 1, - ",0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 3S\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-165],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32503\"]]"); - p = add_epsg_def (filter, first, last, 32504, "epsg", 32504, - "WGS 72BE / UTM zone 4S"); - add_proj4text (p, 0, - "+proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); - add_proj4text (p, 1, - ",0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 4S\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-159],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32504\"]]"); - p = add_epsg_def (filter, first, last, 32505, "epsg", 32505, - "WGS 72BE / UTM zone 5S"); - add_proj4text (p, 0, - "+proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); - add_proj4text (p, 1, - ",0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 5S\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-153],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32505\"]]"); - p = add_epsg_def (filter, first, last, 32506, "epsg", 32506, - "WGS 72BE / UTM zone 6S"); - add_proj4text (p, 0, - "+proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); - add_proj4text (p, 1, - ",0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 6S\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-147],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32506\"]]"); - p = add_epsg_def (filter, first, last, 32507, "epsg", 32507, - "WGS 72BE / UTM zone 7S"); - add_proj4text (p, 0, - "+proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); - add_proj4text (p, 1, - ",0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 7S\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-141],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32507\"]]"); - p = add_epsg_def (filter, first, last, 32508, "epsg", 32508, - "WGS 72BE / UTM zone 8S"); - add_proj4text (p, 0, - "+proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); - add_proj4text (p, 1, - ",0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 8S\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-135],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32508\"]]"); - p = add_epsg_def (filter, first, last, 32509, "epsg", 32509, - "WGS 72BE / UTM zone 9S"); - add_proj4text (p, 0, - "+proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); - add_proj4text (p, 1, - ",0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 9S\",GEOGCS[\"WGS 72BE\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-129],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32509\"]]"); - p = add_epsg_def (filter, first, last, 32510, "epsg", 32510, - "WGS 72BE / UTM zone 10S"); - add_proj4text (p, 0, - "+proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 10S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-123],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32510\"]]"); - p = add_epsg_def (filter, first, last, 32511, "epsg", 32511, - "WGS 72BE / UTM zone 11S"); - add_proj4text (p, 0, - "+proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 11S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32511\"]]"); - p = add_epsg_def (filter, first, last, 32512, "epsg", 32512, - "WGS 72BE / UTM zone 12S"); - add_proj4text (p, 0, - "+proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 12S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-111],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32512\"]]"); - p = add_epsg_def (filter, first, last, 32513, "epsg", 32513, - "WGS 72BE / UTM zone 13S"); - add_proj4text (p, 0, - "+proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 13S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-105],PARAMETER[\"scale_"); - add_srs_wkt (p, 9, - "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); - add_srs_wkt (p, 10, - "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); - add_srs_wkt (p, 11, - "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32513\"]]"); - p = add_epsg_def (filter, first, last, 32514, "epsg", 32514, - "WGS 72BE / UTM zone 14S"); - add_proj4text (p, 0, - "+proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 14S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-99],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32514\"]]"); - p = add_epsg_def (filter, first, last, 32515, "epsg", 32515, - "WGS 72BE / UTM zone 15S"); - add_proj4text (p, 0, - "+proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 15S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-93],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32515\"]]"); - p = add_epsg_def (filter, first, last, 32516, "epsg", 32516, - "WGS 72BE / UTM zone 16S"); - add_proj4text (p, 0, - "+proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 16S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-87],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32516\"]]"); - p = add_epsg_def (filter, first, last, 32517, "epsg", 32517, - "WGS 72BE / UTM zone 17S"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 17S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-81],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32517\"]]"); - p = add_epsg_def (filter, first, last, 32518, "epsg", 32518, - "WGS 72BE / UTM zone 18S"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 18S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-75],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32518\"]]"); - p = add_epsg_def (filter, first, last, 32519, "epsg", 32519, - "WGS 72BE / UTM zone 19S"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 19S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32519\"]]"); - p = add_epsg_def (filter, first, last, 32520, "epsg", 32520, - "WGS 72BE / UTM zone 20S"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 20S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32520\"]]"); - p = add_epsg_def (filter, first, last, 32521, "epsg", 32521, - "WGS 72BE / UTM zone 21S"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 21S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32521\"]]"); - p = add_epsg_def (filter, first, last, 32522, "epsg", 32522, - "WGS 72BE / UTM zone 22S"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 22S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-51],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32522\"]]"); - p = add_epsg_def (filter, first, last, 32523, "epsg", 32523, - "WGS 72BE / UTM zone 23S"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 23S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-45],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32523\"]]"); - p = add_epsg_def (filter, first, last, 32524, "epsg", 32524, - "WGS 72BE / UTM zone 24S"); - add_proj4text (p, 0, - "+proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 24S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-39],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32524\"]]"); - p = add_epsg_def (filter, first, last, 32525, "epsg", 32525, - "WGS 72BE / UTM zone 25S"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 25S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-33],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32525\"]]"); - p = add_epsg_def (filter, first, last, 32526, "epsg", 32526, - "WGS 72BE / UTM zone 26S"); - add_proj4text (p, 0, - "+proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 26S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-27],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32526\"]]"); - p = add_epsg_def (filter, first, last, 32527, "epsg", 32527, - "WGS 72BE / UTM zone 27S"); - add_proj4text (p, 0, - "+proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 27S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-21],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32527\"]]"); - p = add_epsg_def (filter, first, last, 32528, "epsg", 32528, - "WGS 72BE / UTM zone 28S"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 28S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-15],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32528\"]]"); - p = add_epsg_def (filter, first, last, 32529, "epsg", 32529, - "WGS 72BE / UTM zone 29S"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 29S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-9],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32529\"]]"); - p = add_epsg_def (filter, first, last, 32530, "epsg", 32530, - "WGS 72BE / UTM zone 30S"); - add_proj4text (p, 0, - "+proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 30S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",-3],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32530\"]]"); - p = add_epsg_def (filter, first, last, 32531, "epsg", 32531, - "WGS 72BE / UTM zone 31S"); - add_proj4text (p, 0, - "+proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 31S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",3],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32531\"]]"); - p = add_epsg_def (filter, first, last, 32532, "epsg", 32532, - "WGS 72BE / UTM zone 32S"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 32S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",9],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 9, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 10, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 11, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 12, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32532\"]]"); - p = add_epsg_def (filter, first, last, 32533, "epsg", 32533, - "WGS 72BE / UTM zone 33S"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 33S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",15],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32533\"]]"); - p = add_epsg_def (filter, first, last, 32534, "epsg", 32534, - "WGS 72BE / UTM zone 34S"); - add_proj4text (p, 0, - "+proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 34S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",21],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32534\"]]"); - p = add_epsg_def (filter, first, last, 32535, "epsg", 32535, - "WGS 72BE / UTM zone 35S"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 35S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",27],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32535\"]]"); - p = add_epsg_def (filter, first, last, 32536, "epsg", 32536, - "WGS 72BE / UTM zone 36S"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 36S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",33],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32536\"]]"); - p = add_epsg_def (filter, first, last, 32537, "epsg", 32537, - "WGS 72BE / UTM zone 37S"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 37S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",39],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32537\"]]"); - p = add_epsg_def (filter, first, last, 32538, "epsg", 32538, - "WGS 72BE / UTM zone 38S"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 38S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",45],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32538\"]]"); - p = add_epsg_def (filter, first, last, 32539, "epsg", 32539, - "WGS 72BE / UTM zone 39S"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 39S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",51],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32539\"]]"); - p = add_epsg_def (filter, first, last, 32540, "epsg", 32540, - "WGS 72BE / UTM zone 40S"); - add_proj4text (p, 0, - "+proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 40S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",57],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32540\"]]"); - p = add_epsg_def (filter, first, last, 32541, "epsg", 32541, - "WGS 72BE / UTM zone 41S"); - add_proj4text (p, 0, - "+proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 41S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",63],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32541\"]]"); - p = add_epsg_def (filter, first, last, 32542, "epsg", 32542, - "WGS 72BE / UTM zone 42S"); - add_proj4text (p, 0, - "+proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 42S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",69],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32542\"]]"); - p = add_epsg_def (filter, first, last, 32543, "epsg", 32543, - "WGS 72BE / UTM zone 43S"); - add_proj4text (p, 0, - "+proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 43S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",75],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32543\"]]"); - p = add_epsg_def (filter, first, last, 32544, "epsg", 32544, - "WGS 72BE / UTM zone 44S"); - add_proj4text (p, 0, - "+proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 44S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",81],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32544\"]]"); - p = add_epsg_def (filter, first, last, 32545, "epsg", 32545, - "WGS 72BE / UTM zone 45S"); - add_proj4text (p, 0, - "+proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 45S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",87],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32545\"]]"); - p = add_epsg_def (filter, first, last, 32546, "epsg", 32546, - "WGS 72BE / UTM zone 46S"); - add_proj4text (p, 0, - "+proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 46S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",93],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32546\"]]"); - p = add_epsg_def (filter, first, last, 32547, "epsg", 32547, - "WGS 72BE / UTM zone 47S"); - add_proj4text (p, 0, - "+proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 47S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",99],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 9, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 10, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 11, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 12, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32547\"]]"); - p = add_epsg_def (filter, first, last, 32548, "epsg", 32548, - "WGS 72BE / UTM zone 48S"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 48S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",105],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32548\"]]"); - p = add_epsg_def (filter, first, last, 32549, "epsg", 32549, - "WGS 72BE / UTM zone 49S"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 49S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",111],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32549\"]]"); - p = add_epsg_def (filter, first, last, 32550, "epsg", 32550, - "WGS 72BE / UTM zone 50S"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 50S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",117],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32550\"]]"); - p = add_epsg_def (filter, first, last, 32551, "epsg", 32551, - "WGS 72BE / UTM zone 51S"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 51S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",123],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32551\"]]"); - p = add_epsg_def (filter, first, last, 32552, "epsg", 32552, - "WGS 72BE / UTM zone 52S"); - add_proj4text (p, 0, - "+proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 52S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",129],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32552\"]]"); - p = add_epsg_def (filter, first, last, 32553, "epsg", 32553, - "WGS 72BE / UTM zone 53S"); - add_proj4text (p, 0, - "+proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 53S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",135],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32553\"]]"); - p = add_epsg_def (filter, first, last, 32554, "epsg", 32554, - "WGS 72BE / UTM zone 54S"); - add_proj4text (p, 0, - "+proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 54S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",141],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32554\"]]"); - p = add_epsg_def (filter, first, last, 32555, "epsg", 32555, - "WGS 72BE / UTM zone 55S"); - add_proj4text (p, 0, - "+proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 55S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",147],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32555\"]]"); - p = add_epsg_def (filter, first, last, 32556, "epsg", 32556, - "WGS 72BE / UTM zone 56S"); - add_proj4text (p, 0, - "+proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 56S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",153],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32556\"]]"); - p = add_epsg_def (filter, first, last, 32557, "epsg", 32557, - "WGS 72BE / UTM zone 57S"); - add_proj4text (p, 0, - "+proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 57S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",159],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32557\"]]"); - p = add_epsg_def (filter, first, last, 32558, "epsg", 32558, - "WGS 72BE / UTM zone 58S"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 58S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",165],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32558\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_40.c b/src/spatialite/src/srsinit/epsg_inlined_40.c deleted file mode 100644 index e39d211..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_40.c +++ /dev/null @@ -1,122 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_40 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 32559, "epsg", 32559, - "WGS 72BE / UTM zone 59S"); - add_proj4text (p, 0, - "+proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 59S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",171],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32559\"]]"); - p = add_epsg_def (filter, first, last, 32560, "epsg", 32560, - "WGS 72BE / UTM zone 60S"); - add_proj4text (p, 0, - "+proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,1.9,"); - add_proj4text (p, 1, - "0,0,0.814,-0.38 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 72BE / UTM zone 60S\",GEOGCS[\"WGS 72BE\",D"); - add_srs_wkt (p, 1, - "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); - add_srs_wkt (p, 2, - "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); - add_srs_wkt (p, 3, - "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); - add_srs_wkt (p, 4, - "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); - add_srs_wkt (p, 5, - "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); - add_srs_wkt (p, 6, - "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); - add_srs_wkt (p, 7, - "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); - add_srs_wkt (p, 8, - ",PARAMETER[\"central_meridian\",177],PARAMETER[\"scale_f"); - add_srs_wkt (p, 9, - "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); - add_srs_wkt (p, 10, - "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 11, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); - add_srs_wkt (p, 12, - "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32560\"]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ - diff --git a/src/spatialite/src/srsinit/epsg_inlined_extra.c b/src/spatialite/src/srsinit/epsg_inlined_extra.c deleted file mode 100644 index 2a9697f..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_extra.c +++ /dev/null @@ -1,243 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -/* declaring prototypes */ -SPATIALITE_PRIVATE void initialize_epsg_00 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_01 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_02 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_03 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_04 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_05 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_06 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_07 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_08 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_09 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_10 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_11 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_12 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_13 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_14 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_15 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_16 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_17 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_18 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_19 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_20 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_21 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_22 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_23 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_24 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_25 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_26 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_27 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_28 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_29 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_30 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_31 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_32 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_33 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_34 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_35 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_36 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_37 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_38 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_39 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_40 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_wgs84_00 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_wgs84_01 ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_prussian ( - int filter, struct epsg_defs **first, struct epsg_defs **last); -SPATIALITE_PRIVATE void initialize_epsg_extra ( - int filter, struct epsg_defs **first, struct epsg_defs **last); - -SPATIALITE_PRIVATE void -initialize_epsg_extra (int filter, struct epsg_defs **first, struct epsg_defs **last) - -{ -/* initializing the EPSG defs list [EXTRA] */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 40000, "gfoss.it", 1, - "Italy mainland zone 1 GB Roma40"); - add_proj4text (p, 0, - "+proj=tmerc+lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_"); - add_proj4text (p, 1, - "0=0 +ellps=intl +units=m +towgs84=-104.1,-49.1,-9.9,0.97"); - add_proj4text (p, 2, "1,-2.917,0.714,-11.68 +no_defs"); - add_srs_wkt (p, 0, ""); - p = add_epsg_def (filter, first, last, 40001, "gfoss.it", 2, - "Italy mainland zone 2 GB Roma40"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=intl +units=m +towgs84=-104.1,-49.1,-9.9,0.9"); - add_proj4text (p, 2, "71,-2.917,0.714,-11.68 +no_defs"); - add_srs_wkt (p, 0, ""); - p = add_epsg_def (filter, first, last, 40002, "gfoss.it", 3, - "Italy Sardinia GB Roma40"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=intl +units=m +towgs84=-168.6,-34.0,38.6,-0."); - add_proj4text (p, 2, "374,-0.679,-1.379,-9.48 +no_defs"); - add_srs_wkt (p, 0, ""); - p = add_epsg_def (filter, first, last, 40003, "gfoss.it", 4, - "Italy Sicily GB Roma40"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y"); - add_proj4text (p, 1, - "_0=0 +ellps=intl +units=m +towgs84=-50.2,-50.4,84.8,-0.6"); - add_proj4text (p, 2, "90,-2.012,0.459,-28.08 +no_defs"); - add_srs_wkt (p, 0, ""); -} - -SPATIALITE_PRIVATE void -initialize_epsg (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list */ - struct epsg_defs *p; - /* initializing the EPSG UNKNOWN def [-1] */ - p = add_epsg_def (filter, first, last, -1, "NONE", -1, "Undefined - Cartesian"); - add_proj4text (p, 0, ""); - add_srs_wkt (p, 0, ""); - p = add_epsg_def (filter, first, last, 0, "NONE", 0, "Undefined - Geographic Long/Lat"); - add_proj4text (p, 0, ""); - add_srs_wkt (p, 0, ""); - - if (filter != GAIA_EPSG_WGS84_ONLY) - { -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - initialize_epsg_00 (filter, first, last); - initialize_epsg_01 (filter, first, last); - initialize_epsg_02 (filter, first, last); - initialize_epsg_03 (filter, first, last); - initialize_epsg_04 (filter, first, last); - initialize_epsg_05 (filter, first, last); - initialize_epsg_06 (filter, first, last); - initialize_epsg_07 (filter, first, last); - initialize_epsg_08 (filter, first, last); - initialize_epsg_09 (filter, first, last); - initialize_epsg_10 (filter, first, last); - initialize_epsg_11 (filter, first, last); - initialize_epsg_12 (filter, first, last); - initialize_epsg_13 (filter, first, last); - initialize_epsg_14 (filter, first, last); - initialize_epsg_15 (filter, first, last); - initialize_epsg_16 (filter, first, last); - initialize_epsg_17 (filter, first, last); - initialize_epsg_18 (filter, first, last); - initialize_epsg_19 (filter, first, last); - initialize_epsg_20 (filter, first, last); - initialize_epsg_21 (filter, first, last); - initialize_epsg_22 (filter, first, last); - initialize_epsg_23 (filter, first, last); - initialize_epsg_24 (filter, first, last); - initialize_epsg_25 (filter, first, last); - initialize_epsg_26 (filter, first, last); - initialize_epsg_27 (filter, first, last); - initialize_epsg_28 (filter, first, last); - initialize_epsg_29 (filter, first, last); - initialize_epsg_30 (filter, first, last); - initialize_epsg_31 (filter, first, last); - initialize_epsg_32 (filter, first, last); - initialize_epsg_33 (filter, first, last); - initialize_epsg_34 (filter, first, last); - initialize_epsg_35 (filter, first, last); - initialize_epsg_36 (filter, first, last); - initialize_epsg_37 (filter, first, last); - initialize_epsg_38 (filter, first, last); - initialize_epsg_39 (filter, first, last); - initialize_epsg_40 (filter, first, last); - initialize_epsg_prussian (filter, first, last); - initialize_epsg_extra (filter, first, last); -#endif /* full EPSG initialization enabled/disabled */ - } - initialize_epsg_wgs84_00 (filter, first, last); - initialize_epsg_wgs84_01 (filter, first, last); -} diff --git a/src/spatialite/src/srsinit/epsg_inlined_prussian.c b/src/spatialite/src/srsinit/epsg_inlined_prussian.c deleted file mode 100644 index 13173c1..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_prussian.c +++ /dev/null @@ -1,1152 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Mark Johnson - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -#ifndef OMIT_EPSG /* full EPSG initialization enabled */ - -SPATIALITE_PRIVATE void -initialize_epsg_prussian (int filter, struct epsg_defs **first, - struct epsg_defs **last) -{ -/* old Prussian based on Cassini-Soldner - kindly contributed by Mark Johnson */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 187900, "mj10777.de", 187900, - "DHDN / Soldner Rathausnetz 660"); - add_proj4text (p, 0, - "+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 "); - add_proj4text (p, 1, - "+x_0=14741.77 +y_0=-11288.28 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner Rathausnetz 660\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",52.41864827777778],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",13.62720366666667],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",14741.77],PARAMETER[\"false_northing\",-11288.28],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187900\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187901, "mj10777.de", 187901, - "DHDN / Soldner 1 Kucklinsberg"); - add_proj4text (p, 0, "+proj=cass +lat_0=54.46022375 +lon_0=21.95509736 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 1 Kucklinsberg\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",54.46022375],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",21.95509736],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187901\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187902, "mj10777.de", 187902, - "DHDN / Soldner 2 Paulinen"); - add_proj4text (p, 0, "+proj=cass +lat_0=54.28921067 +lon_0=20.73315431 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 2 Paulinen\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",54.28921067],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",20.73315431],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187902\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187903, "mj10777.de", 187903, - "DHDN / Soldner 3 Markushof I"); - add_proj4text (p, 0, "+proj=cass +lat_0=54.05881333 +lon_0=19.37343583 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 3 Markushof I\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",54.05881333],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",19.37343583],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187903\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187904, "mj10777.de", 187904, - "DHDN / Soldner 4 Thurmberg"); - add_proj4text (p, 0, "+proj=cass +lat_0=54.22552092 +lon_0=18.12569375 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 4 Thurmberg\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",54.22552092],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",18.12569375],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187904\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187905, "mj10777.de", 187905, - "DHDN / Soldner 5 Kauernick I"); - add_proj4text (p, 0, "+proj=cass +lat_0=53.38933197 +lon_0=19.59810438 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 5 Kauernick I\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",53.38933197],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",19.59810438],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187905\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187906, "mj10777.de", 187906, - "DHDN / Soldner 6 Thorn, Rathausturm"); - add_proj4text (p, 0, "+proj=cass +lat_0=53.01181586 +lon_0=18.60725428 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 6 Thorn, Rathausturm\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",53.01181586],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",18.60725428],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187906\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187907, "mj10777.de", 187907, - "DHDN / Soldner 7 Heinrichsthal"); - add_proj4text (p, 0, "+proj=cass +lat_0=53.71289217 +lon_0=17.49676781 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 7 Heinrichsthal\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",53.71289217],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",17.49676781],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187907\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187908, "mj10777.de", 187908, - "DHDN / Soldner 8 Gollenberg, Denkmal"); - add_proj4text (p, 0, "+proj=cass +lat_0=54.20857178 +lon_0=16.22956781 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 8 Gollenberg, Denkmal\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",54.20857178],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",16.22956781],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187908\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187909, "mj10777.de", 187909, - "DHDN / Soldner 9 Gnesen"); - add_proj4text (p, 0, "+proj=cass +lat_0=52.53820406 +lon_0=17.59450500 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 9 Gnesen\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",52.53820406],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",17.59450500],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187909\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187910, "mj10777.de", 187910, - "DHDN / Soldner 10 Josefsberg"); - add_proj4text (p, 0, "+proj=cass +lat_0=51.98768806 +lon_0=16.20044389 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 10 Josefsberg\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",51.98768806],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",16.20044389],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187910\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187911, "mj10777.de", 187911, - "DHDN / Soldner 11 Schroda"); - add_proj4text (p, 0, "+proj=cass +lat_0=52.23137372 +lon_0=17.27795372 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 11 Schroda\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",52.23137372],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",17.27795372],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187911\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187912, "mj10777.de", 187912, - "DHDN / Soldner 12 Pschow"); - add_proj4text (p, 0, "+proj=cass +lat_0=50.04206544 +lon_0=18.39610692 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 12 Pschow\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",50.04206544],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",18.39610692],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187912\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187913, "mj10777.de", 187913, - "DHDN / Soldner 13 Rummelsberg"); - add_proj4text (p, 0, "+proj=cass +lat_0=50.70352314 +lon_0=17.11233917 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 13 Rummelsberg\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",50.70352314],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",17.11233917],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187913\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187914, "mj10777.de", 187914, - "DHDN / Soldner 14 Gröditzberg I"); - add_proj4text (p, 0, "+proj=cass +lat_0=51.17819342 +lon_0=15.76127086 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 14 Gröditzberg I\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",51.17819342],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",15.76127086],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187914\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187915, "mj10777.de", 187915, - "DHDN / Soldner 15 Kaltenborn"); - add_proj4text (p, 0, "+proj=cass +lat_0=51.92903708 +lon_0=14.66212942 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 15 Kaltenborn\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",51.92903708],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",14.66212942],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187915\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187917, "mj10777.de", 187917, - "DHDN / Soldner 17 Greifswald, Nikolaikirche"); - add_proj4text (p, 0, "+proj=cass +lat_0=54.09698872 +lon_0=13.37880703 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DHDN / Soldner 17 Greifswald, Nikolaikirche\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",54.09698872],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",13.37880703],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187917\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187916, "mj10777.de", 187916, - "DHDN / Soldner 16 Bahn I"); - add_proj4text (p, 0, "+proj=cass +lat_0=53.10184583 +lon_0=14.70144539 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 16 Bahn I\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",53.10184583],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",14.70144539],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187916\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187918, "mj10777.de", 187918, - "DHDN / Soldner 18 Müggelberg 600"); - add_proj4text (p, 0, - "+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 18 Müggelberg 600\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",52.41864827777778],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",13.62720366666667],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187918\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187919, "mj10777.de", 187919, - "DHDN / Soldner 19 Götzer Berg 650"); - add_proj4text (p, 0, - "+proj=cass +lat_0=52.43725961111112 +lon_0=12.72882972222223 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 19 Götzer Berg 650\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",52.43725961111112],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",12.72882972222223],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187919\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187920, "mj10777.de", 187920, - "DHDN / Soldner 20 Torgau, Stadtkirche"); - add_proj4text (p, 0, "+proj=cass +lat_0=51.56136217 +lon_0=13.00760264 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 20 Torgau, Stadtkirche\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",51.56136217],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",13.00760264],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187920\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187921, "mj10777.de", 187921, - "DHDN / Soldner 21 Burkersroda, Kirchturm"); - add_proj4text (p, 0, "+proj=cass +lat_0=51.17656322 +lon_0=11.64139367 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 21 Burkersroda, Kirchturm\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",51.17656322],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",11.64139367],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187921\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187922, "mj10777.de", 187922, - "DHDN / Soldner 22 Inselsberg"); - add_proj4text (p, 0, "+proj=cass +lat_0=50.85237983 +lon_0=10.46776506 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 22 Inselsberg\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",50.85237983],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",10.46776506],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187922\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187923, "mj10777.de", 187923, - "DHDN / Soldner 23 Magdeburg"); - add_proj4text (p, 0, "+proj=cass +lat_0=52.12625311 +lon_0=11.63550325 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 23 Magdeburg\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",52.12625311],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",11.63550325],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187923\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187924, "mj10777.de", 187924, - "DHDN / Soldner 24 Ostenfeld I"); - add_proj4text (p, 0, "+proj=cass +lat_0=54.47018733 +lon_0=9.23411097 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 24 Ostenfeld I\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",54.47018733],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",9.23411097],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187924\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187925, "mj10777.de", 187925, - "DHDN / Soldner 25 Rathkrügen"); - add_proj4text (p, 0, "+proj=cass +lat_0=53.81839364 +lon_0=10.04220189 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 25 Rathkrügen\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",53.81839364],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",10.04220189],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187925\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187926, "mj10777.de", 187926, - "DHDN / Soldner 26 Bungsberg, Aussichtsturm"); - add_proj4text (p, 0, "+proj=cass +lat_0=54.21110653 +lon_0=10.72636431 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DHDN / Soldner 26 Bungsberg, Aussichtsturm\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",54.21110653],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",10.72636431],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187926\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187927, "mj10777.de", 187927, - "DHDN / Soldner 27 Celle, Stadtkirche"); - add_proj4text (p, 0, "+proj=cass +lat_0=52.62574192 +lon_0=10.08190214 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 27 Celle, Stadtkirche\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",52.62574192],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",10.08190214],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187927\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187928, "mj10777.de", 187928, - "DHDN / Soldner 28 Kaltenborn"); - add_proj4text (p, 0, "+proj=cass +lat_0=51.79646722 +lon_0=10.27322494 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 28 Kaltenborn\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",51.79646722],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",10.27322494],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187928\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187929, "mj10777.de", 187929, - "DHDN / Soldner 29 Silberberg"); - add_proj4text (p, 0, "+proj=cass +lat_0=53.73123461 +lon_0=9.05774925 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 29 Silberberg\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",53.73123461],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",9.05774925],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187929\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187930, "mj10777.de", 187930, - "DHDN / Soldner 30 Windberg"); - add_proj4text (p, 0, "+proj=cass +lat_0=52.88088372 +lon_0=7.53062114 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 30 Windberg\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",52.88088372],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",7.53062114],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187930\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187931, "mj10777.de", 187931, - "DHDN / Soldner 31 Hermannsdenkmal"); - add_proj4text (p, 0, "+proj=cass +lat_0=51.91301647 +lon_0=8.84051853 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 31 Hermannsdenkmal\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",51.91301647],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",8.84051853],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187931\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187932, "mj10777.de", 187932, - "DHDN / Soldner 32 Münster"); - add_proj4text (p, 0, "+proj=cass +lat_0=51.96547642 +lon_0=7.62334994 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 32 Münster\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",51.96547642],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",7.62334994],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187932\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187933, "mj10777.de", 187933, - "DHDN / Soldner 33 Bochum, Peter-Paul-Kirche"); - add_proj4text (p, 0, "+proj=cass +lat_0=51.48373533 +lon_0=7.22115822 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DHDN / Soldner 33 Bochum, Peter-Paul-Kirche\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",51.48373533],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",7.22115822],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187933\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187934, "mj10777.de", 187934, - "DHDN / Soldner 34 Homert"); - add_proj4text (p, 0, "+proj=cass +lat_0=51.26480147 +lon_0=8.10687050 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 34 Homert\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",51.26480147],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",8.10687050],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187934\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187935, "mj10777.de", 187935, - "DHDN / Soldner 35 Kassel, Martinskirche"); - add_proj4text (p, 0, "+proj=cass +lat_0=51.31846489 +lon_0=9.50203072 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 35 Kassel, Martinskirche\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",51.31846489],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",9.50203072],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187935\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187936, "mj10777.de", 187936, - "DHDN / Soldner 36 Schaumburg, Schloßturm"); - add_proj4text (p, 0, "+proj=cass +lat_0=50.34048964 +lon_0=7.97808156 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 36 Schaumburg, Schloßturm\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",50.34048964],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",7.97808156],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187936\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187937, "mj10777.de", 187937, - "DHDN / Soldner 37 Fleckert"); - add_proj4text (p, 0, "+proj=cass +lat_0=50.18762544 +lon_0=7.60594289 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 37 Fleckert\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",50.18762544],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",7.60594289],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187937\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187938, "mj10777.de", 187938, - "DHDN / Soldner 38 Cöln, Dom"); - add_proj4text (p, 0, "+proj=cass +lat_0=50.94257242 +lon_0=6.95897600 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 38 Cöln, Dom\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",50.94257242],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",6.95897600],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187938\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187939, "mj10777.de", 187939, - "DHDN / Soldner 39 Langschoß"); - add_proj4text (p, 0, "+proj=cass +lat_0=50.66738711 +lon_0=6.28935703 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 39 Langschoß\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",50.66738711],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",6.28935703],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187939\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187940, "mj10777.de", 187940, - "DHDN / Soldner 40 Rissenthal"); - add_proj4text (p, 0, "+proj=cass +lat_0=49.47801819 +lon_0=6.75864339 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner 40 Rissenthal\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",49.47801819],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",6.75864339],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187940\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187941, "mj10777.de", 187941, - "DHDN / Soldner Bayern"); - add_proj4text (p, 0, "+proj=cass +lat_0=48.13959111 +lon_0=11.57437083 "); - add_proj4text (p, 1, - "+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner Bayern\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",48.13959111],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",11.57437083],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187941\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 187997, "mj10777.de", 187997, - "NAD27 / Washington Capitol"); - add_proj4text (p, 0, - "+proj=longlat +ellps=clrk66 +datum=NAD27 +pm=-77.0093576 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"NAD27 / Washington Capitol\",DATUM[\"North_American_Datum_1927\","); - add_srs_wkt (p, 1, "SPHEROID[\"Clarke 1866\",6378206.4,294.9786982138982,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],"); - add_srs_wkt (p, 3, - "PRIMEM[\"Washington\",-77.0093576,AUTHORITY[\"mj10777.de\",\"188000\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, "AUTHORITY[\"mj10777.de\",\"187997\"]]"); - p = add_epsg_def (filter, first, last, 187998, "mj10777.de", 187998, - "DHDN / Ferro / Deutsches_Hauptdreiecksnetz"); - add_proj4text (p, 0, - "+proj=longlat +ellps=bessel +datum=potsdam +pm=ferro +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"DHDN / Ferro / Deutsches_Hauptdreiecksnetz\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, "DATUM[\"Deutsches_Hauptdreiecksnetz\","); - add_srs_wkt (p, 3, - "SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, - "AUTHORITY[\"EPSG\",\"6314\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 5, - "PRIMEM[\"Ferro\",-17.66666666666667,AUTHORITY[\"EPSG\",\"8909\"]],"); - add_srs_wkt (p, 6, - "UNIT[\"Degree\",0.017453292519943295,AUTHORITY[\"EPSG\",\"9122\"],"); - add_srs_wkt (p, 7, "AUTHORITY[\"mj10777.de\",\"187998\"]]"); -/* mj10777: Not existing System, used for testing purposes. */ - p = add_epsg_def (filter, first, last, 187999, "mj10777.de", 187999, - "DHDN / Brandenburger Tor"); - add_proj4text (p, 0, - "+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 "); - add_proj4text (p, 1, - "+x_0=16816.4833410610881 +y_0=-11047.016016734 +ellps=bessel +datum=potsdam +units=m +no_defs"); - add_srs_wkt (p, 0, "PROJCS[\"DHDN / Soldner Brandenburger Tor\","); - add_srs_wkt (p, 1, "GEOGCS[\"DHDN\","); - add_srs_wkt (p, 2, - "DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); - add_srs_wkt (p, 3, - "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); - add_srs_wkt (p, 4, "AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); - add_srs_wkt (p, 5, - "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); - add_srs_wkt (p, 6, - "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); - add_srs_wkt (p, 7, "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); - add_srs_wkt (p, 8, "PROJECTION[\"Cassini_Soldner\"],"); - add_srs_wkt (p, 9, "PARAMETER[\"latitude_of_origin\",52.41864827777778],"); - add_srs_wkt (p, 10, "PARAMETER[\"central_meridian\",13.62720366666667],"); - add_srs_wkt (p, 11, - "PARAMETER[\"false_easting\",16816.4833410610881],PARAMETER[\"false_northing\",-11047.016016734],"); - add_srs_wkt (p, 12, - "AUTHORITY[\"mj10777.de\",\"187999\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); - p = add_epsg_def (filter, first, last, 325833, "mj10777.de", 325833, - "ETRS89 / UTM zone 33N (Brandenburg)"); - add_proj4text (p, 0, "+proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"ETRS89 / UTM zone 33N (Brandenburg)\",GEOGCS[\"ETRS89\","); - add_srs_wkt (p, 1, "DATUM[\"European_Terrestrial_Reference_System_1989\","); - add_srs_wkt (p, 2, "SPHEROID[\"GRS 1980\",6378137,298.257222101,"); - add_srs_wkt (p, 3, - "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6258\"]],"); - add_srs_wkt (p, 4, "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 5, - "UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],"); - add_srs_wkt (p, 6, "AUTHORITY[\"EPSG\",\"4258\"]],UNIT[\"metre\",1,"); - add_srs_wkt (p, 7, - "AUTHORITY[\"EPSG\",\"9001\"]],PROJECTION[\"Transverse_Mercator\"],"); - add_srs_wkt (p, 8, "PARAMETER[\"latitude_of_origin\",0],"); - add_srs_wkt (p, 9, - "PARAMETER[\"central_meridian\",15],PARAMETER[\"scale_factor\",0.9996],"); - add_srs_wkt (p, 10, - "PARAMETER[\"false_easting\",3500000],PARAMETER[\"false_northing\",0],"); - add_srs_wkt (p, 11, "AUTHORITY[\"EPSG\",\"325833\"],"); - add_srs_wkt (p, 12, "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]]"); -} - -#endif /* full EPSG initialization enabled/disabled */ diff --git a/src/spatialite/src/srsinit/epsg_inlined_wgs84_00.c b/src/spatialite/src/srsinit/epsg_inlined_wgs84_00.c deleted file mode 100644 index cf4f319..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_wgs84_00.c +++ /dev/null @@ -1,2888 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -SPATIALITE_PRIVATE void -initialize_epsg_wgs84_00 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list [WGS84] */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 4326, "epsg", 4326, - "WGS 84"); - add_proj4text (p, 0, - "+proj=longlat +datum=WGS84 +no_defs"); - add_srs_wkt (p, 0, - "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\""); - add_srs_wkt (p, 1, - ",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUT"); - add_srs_wkt (p, 2, - "HORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); - add_srs_wkt (p, 3, - "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); - add_srs_wkt (p, 4, - "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"43"); - add_srs_wkt (p, 5, - "26\"]]"); - p = add_epsg_def (filter, first, last, 32601, "epsg", 32601, - "WGS 84 / UTM zone 1N"); - add_proj4text (p, 0, - "+proj=utm +zone=1 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 1N\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-177],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 10, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 11, - "\",NORTH],AUTHORITY[\"EPSG\",\"32601\"]]"); - p = add_epsg_def (filter, first, last, 32602, "epsg", 32602, - "WGS 84 / UTM zone 2N"); - add_proj4text (p, 0, - "+proj=utm +zone=2 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 2N\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-171],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 10, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 11, - "\",NORTH],AUTHORITY[\"EPSG\",\"32602\"]]"); - p = add_epsg_def (filter, first, last, 32603, "epsg", 32603, - "WGS 84 / UTM zone 3N"); - add_proj4text (p, 0, - "+proj=utm +zone=3 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 3N\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-165],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 10, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 11, - "\",NORTH],AUTHORITY[\"EPSG\",\"32603\"]]"); - p = add_epsg_def (filter, first, last, 32604, "epsg", 32604, - "WGS 84 / UTM zone 4N"); - add_proj4text (p, 0, - "+proj=utm +zone=4 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 4N\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-159],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 10, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 11, - "\",NORTH],AUTHORITY[\"EPSG\",\"32604\"]]"); - p = add_epsg_def (filter, first, last, 32605, "epsg", 32605, - "WGS 84 / UTM zone 5N"); - add_proj4text (p, 0, - "+proj=utm +zone=5 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 5N\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-153],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 10, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 11, - "\",NORTH],AUTHORITY[\"EPSG\",\"32605\"]]"); - p = add_epsg_def (filter, first, last, 32606, "epsg", 32606, - "WGS 84 / UTM zone 6N"); - add_proj4text (p, 0, - "+proj=utm +zone=6 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 6N\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-147],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 10, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 11, - "\",NORTH],AUTHORITY[\"EPSG\",\"32606\"]]"); - p = add_epsg_def (filter, first, last, 32607, "epsg", 32607, - "WGS 84 / UTM zone 7N"); - add_proj4text (p, 0, - "+proj=utm +zone=7 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 7N\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-141],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 10, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 11, - "\",NORTH],AUTHORITY[\"EPSG\",\"32607\"]]"); - p = add_epsg_def (filter, first, last, 32608, "epsg", 32608, - "WGS 84 / UTM zone 8N"); - add_proj4text (p, 0, - "+proj=utm +zone=8 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 8N\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-135],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 10, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 11, - "\",NORTH],AUTHORITY[\"EPSG\",\"32608\"]]"); - p = add_epsg_def (filter, first, last, 32609, "epsg", 32609, - "WGS 84 / UTM zone 9N"); - add_proj4text (p, 0, - "+proj=utm +zone=9 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 9N\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-129],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 10, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 11, - "\",NORTH],AUTHORITY[\"EPSG\",\"32609\"]]"); - p = add_epsg_def (filter, first, last, 32610, "epsg", 32610, - "WGS 84 / UTM zone 10N"); - add_proj4text (p, 0, - "+proj=utm +zone=10 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 10N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-123],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 10, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 11, - "\",NORTH],AUTHORITY[\"EPSG\",\"32610\"]]"); - p = add_epsg_def (filter, first, last, 32611, "epsg", 32611, - "WGS 84 / UTM zone 11N"); - add_proj4text (p, 0, - "+proj=utm +zone=11 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 11N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 10, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 11, - "\",NORTH],AUTHORITY[\"EPSG\",\"32611\"]]"); - p = add_epsg_def (filter, first, last, 32612, "epsg", 32612, - "WGS 84 / UTM zone 12N"); - add_proj4text (p, 0, - "+proj=utm +zone=12 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 12N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-111],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 10, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 11, - "\",NORTH],AUTHORITY[\"EPSG\",\"32612\"]]"); - p = add_epsg_def (filter, first, last, 32613, "epsg", 32613, - "WGS 84 / UTM zone 13N"); - add_proj4text (p, 0, - "+proj=utm +zone=13 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 13N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-105],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 10, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 11, - "\",NORTH],AUTHORITY[\"EPSG\",\"32613\"]]"); - p = add_epsg_def (filter, first, last, 32614, "epsg", 32614, - "WGS 84 / UTM zone 14N"); - add_proj4text (p, 0, - "+proj=utm +zone=14 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 14N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-99],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32614\"]]"); - p = add_epsg_def (filter, first, last, 32615, "epsg", 32615, - "WGS 84 / UTM zone 15N"); - add_proj4text (p, 0, - "+proj=utm +zone=15 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 15N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-93],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32615\"]]"); - p = add_epsg_def (filter, first, last, 32616, "epsg", 32616, - "WGS 84 / UTM zone 16N"); - add_proj4text (p, 0, - "+proj=utm +zone=16 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 16N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-87],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32616\"]]"); - p = add_epsg_def (filter, first, last, 32617, "epsg", 32617, - "WGS 84 / UTM zone 17N"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 17N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-81],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32617\"]]"); - p = add_epsg_def (filter, first, last, 32618, "epsg", 32618, - "WGS 84 / UTM zone 18N"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 18N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-75],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32618\"]]"); - p = add_epsg_def (filter, first, last, 32619, "epsg", 32619, - "WGS 84 / UTM zone 19N"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 19N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32619\"]]"); - p = add_epsg_def (filter, first, last, 32620, "epsg", 32620, - "WGS 84 / UTM zone 20N"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 20N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32620\"]]"); - p = add_epsg_def (filter, first, last, 32621, "epsg", 32621, - "WGS 84 / UTM zone 21N"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 21N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32621\"]]"); - p = add_epsg_def (filter, first, last, 32622, "epsg", 32622, - "WGS 84 / UTM zone 22N"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 22N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-51],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32622\"]]"); - p = add_epsg_def (filter, first, last, 32623, "epsg", 32623, - "WGS 84 / UTM zone 23N"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 23N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-45],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32623\"]]"); - p = add_epsg_def (filter, first, last, 32624, "epsg", 32624, - "WGS 84 / UTM zone 24N"); - add_proj4text (p, 0, - "+proj=utm +zone=24 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 24N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-39],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32624\"]]"); - p = add_epsg_def (filter, first, last, 32625, "epsg", 32625, - "WGS 84 / UTM zone 25N"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 25N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-33],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32625\"]]"); - p = add_epsg_def (filter, first, last, 32626, "epsg", 32626, - "WGS 84 / UTM zone 26N"); - add_proj4text (p, 0, - "+proj=utm +zone=26 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 26N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-27],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32626\"]]"); - p = add_epsg_def (filter, first, last, 32627, "epsg", 32627, - "WGS 84 / UTM zone 27N"); - add_proj4text (p, 0, - "+proj=utm +zone=27 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 27N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-21],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32627\"]]"); - p = add_epsg_def (filter, first, last, 32628, "epsg", 32628, - "WGS 84 / UTM zone 28N"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 28N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-15],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32628\"]]"); - p = add_epsg_def (filter, first, last, 32629, "epsg", 32629, - "WGS 84 / UTM zone 29N"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 29N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-9],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32629\"]]"); - p = add_epsg_def (filter, first, last, 32630, "epsg", 32630, - "WGS 84 / UTM zone 30N"); - add_proj4text (p, 0, - "+proj=utm +zone=30 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 30N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-3],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32630\"]]"); - p = add_epsg_def (filter, first, last, 32631, "epsg", 32631, - "WGS 84 / UTM zone 31N"); - add_proj4text (p, 0, - "+proj=utm +zone=31 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 31N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",3],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 8, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 10, - "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); - add_srs_wkt (p, 11, - "NORTH],AUTHORITY[\"EPSG\",\"32631\"]]"); - p = add_epsg_def (filter, first, last, 32632, "epsg", 32632, - "WGS 84 / UTM zone 32N"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 32N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",9],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 8, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); - add_srs_wkt (p, 10, - "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); - add_srs_wkt (p, 11, - "NORTH],AUTHORITY[\"EPSG\",\"32632\"]]"); - p = add_epsg_def (filter, first, last, 32633, "epsg", 32633, - "WGS 84 / UTM zone 33N"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 33N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",15],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32633\"]]"); - p = add_epsg_def (filter, first, last, 32634, "epsg", 32634, - "WGS 84 / UTM zone 34N"); - add_proj4text (p, 0, - "+proj=utm +zone=34 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 34N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",21],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32634\"]]"); - p = add_epsg_def (filter, first, last, 32635, "epsg", 32635, - "WGS 84 / UTM zone 35N"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 35N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",27],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32635\"]]"); - p = add_epsg_def (filter, first, last, 32636, "epsg", 32636, - "WGS 84 / UTM zone 36N"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 36N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",33],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32636\"]]"); - p = add_epsg_def (filter, first, last, 32637, "epsg", 32637, - "WGS 84 / UTM zone 37N"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 37N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",39],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32637\"]]"); - p = add_epsg_def (filter, first, last, 32638, "epsg", 32638, - "WGS 84 / UTM zone 38N"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 38N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",45],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32638\"]]"); - p = add_epsg_def (filter, first, last, 32639, "epsg", 32639, - "WGS 84 / UTM zone 39N"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 39N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",51],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32639\"]]"); - p = add_epsg_def (filter, first, last, 32640, "epsg", 32640, - "WGS 84 / UTM zone 40N"); - add_proj4text (p, 0, - "+proj=utm +zone=40 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 40N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",57],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32640\"]]"); - p = add_epsg_def (filter, first, last, 32641, "epsg", 32641, - "WGS 84 / UTM zone 41N"); - add_proj4text (p, 0, - "+proj=utm +zone=41 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 41N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",63],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32641\"]]"); - p = add_epsg_def (filter, first, last, 32642, "epsg", 32642, - "WGS 84 / UTM zone 42N"); - add_proj4text (p, 0, - "+proj=utm +zone=42 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 42N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",69],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32642\"]]"); - p = add_epsg_def (filter, first, last, 32643, "epsg", 32643, - "WGS 84 / UTM zone 43N"); - add_proj4text (p, 0, - "+proj=utm +zone=43 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 43N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",75],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32643\"]]"); - p = add_epsg_def (filter, first, last, 32644, "epsg", 32644, - "WGS 84 / UTM zone 44N"); - add_proj4text (p, 0, - "+proj=utm +zone=44 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 44N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",81],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32644\"]]"); - p = add_epsg_def (filter, first, last, 32645, "epsg", 32645, - "WGS 84 / UTM zone 45N"); - add_proj4text (p, 0, - "+proj=utm +zone=45 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 45N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",87],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32645\"]]"); - p = add_epsg_def (filter, first, last, 32646, "epsg", 32646, - "WGS 84 / UTM zone 46N"); - add_proj4text (p, 0, - "+proj=utm +zone=46 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 46N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",93],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32646\"]]"); - p = add_epsg_def (filter, first, last, 32647, "epsg", 32647, - "WGS 84 / UTM zone 47N"); - add_proj4text (p, 0, - "+proj=utm +zone=47 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 47N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",99],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); - add_srs_wkt (p, 10, - "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32647\"]]"); - p = add_epsg_def (filter, first, last, 32648, "epsg", 32648, - "WGS 84 / UTM zone 48N"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 48N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",105],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32648\"]]"); - p = add_epsg_def (filter, first, last, 32649, "epsg", 32649, - "WGS 84 / UTM zone 49N"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 49N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",111],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32649\"]]"); - p = add_epsg_def (filter, first, last, 32650, "epsg", 32650, - "WGS 84 / UTM zone 50N"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 50N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",117],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32650\"]]"); - p = add_epsg_def (filter, first, last, 32651, "epsg", 32651, - "WGS 84 / UTM zone 51N"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 51N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",123],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32651\"]]"); - p = add_epsg_def (filter, first, last, 32652, "epsg", 32652, - "WGS 84 / UTM zone 52N"); - add_proj4text (p, 0, - "+proj=utm +zone=52 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 52N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",129],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32652\"]]"); - p = add_epsg_def (filter, first, last, 32653, "epsg", 32653, - "WGS 84 / UTM zone 53N"); - add_proj4text (p, 0, - "+proj=utm +zone=53 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 53N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",135],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32653\"]]"); - p = add_epsg_def (filter, first, last, 32654, "epsg", 32654, - "WGS 84 / UTM zone 54N"); - add_proj4text (p, 0, - "+proj=utm +zone=54 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 54N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",141],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32654\"]]"); - p = add_epsg_def (filter, first, last, 32655, "epsg", 32655, - "WGS 84 / UTM zone 55N"); - add_proj4text (p, 0, - "+proj=utm +zone=55 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 55N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",147],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32655\"]]"); - p = add_epsg_def (filter, first, last, 32656, "epsg", 32656, - "WGS 84 / UTM zone 56N"); - add_proj4text (p, 0, - "+proj=utm +zone=56 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 56N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",153],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32656\"]]"); - p = add_epsg_def (filter, first, last, 32657, "epsg", 32657, - "WGS 84 / UTM zone 57N"); - add_proj4text (p, 0, - "+proj=utm +zone=57 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 57N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",159],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32657\"]]"); - p = add_epsg_def (filter, first, last, 32658, "epsg", 32658, - "WGS 84 / UTM zone 58N"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 58N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",165],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32658\"]]"); - p = add_epsg_def (filter, first, last, 32659, "epsg", 32659, - "WGS 84 / UTM zone 59N"); - add_proj4text (p, 0, - "+proj=utm +zone=59 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 59N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",171],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32659\"]]"); - p = add_epsg_def (filter, first, last, 32660, "epsg", 32660, - "WGS 84 / UTM zone 60N"); - add_proj4text (p, 0, - "+proj=utm +zone=60 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 60N\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",177],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); - add_srs_wkt (p, 10, - "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); - add_srs_wkt (p, 11, - ",NORTH],AUTHORITY[\"EPSG\",\"32660\"]]"); - p = add_epsg_def (filter, first, last, 32661, "epsg", 32661, - "WGS 84 / UPS North (N,E)"); - add_proj4text (p, 0, - "+proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0="); - add_proj4text (p, 1, - "2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UPS North (N,E)\",GEOGCS[\"WGS 84\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2572235"); - add_srs_wkt (p, 2, - "63,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"63"); - add_srs_wkt (p, 3, - "26\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"P"); - add_srs_wkt (p, 6, - "olar_Stereographic\"],PARAMETER[\"latitude_of_origin\",9"); - add_srs_wkt (p, 7, - "0],PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_f"); - add_srs_wkt (p, 8, - "actor\",0.994],PARAMETER[\"false_easting\",2000000],PARA"); - add_srs_wkt (p, 9, - "METER[\"false_northing\",2000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS[\""); - add_srs_wkt (p, 11, - "Easting\",EAST],AUTHORITY[\"EPSG\",\"32661\"]]"); - p = add_epsg_def (filter, first, last, 32662, "epsg", 32662, - "WGS 84 / Plate Carree (deprecated)"); - add_proj4text (p, 0, - "+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +dat"); - add_proj4text (p, 1, - "um=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / Plate Carree (deprecated)\",GEOGCS[\"W"); - add_srs_wkt (p, 1, - "GS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,2"); - add_srs_wkt (p, 2, - "98.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"E"); - add_srs_wkt (p, 3, - "PSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); - add_srs_wkt (p, 4, - "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); - add_srs_wkt (p, 5, - "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PRO"); - add_srs_wkt (p, 6, - "JECTION[\"Equirectangular\"],PARAMETER[\"latitude_of_ori"); - add_srs_wkt (p, 7, - "gin\",0],PARAMETER[\"central_meridian\",0],PARAMETER[\"f"); - add_srs_wkt (p, 8, - "alse_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\""); - add_srs_wkt (p, 9, - "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); - add_srs_wkt (p, 10, - ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32662\"]]"); - p = add_epsg_def (filter, first, last, 32664, "epsg", 32664, - "WGS 84 / BLM 14N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / BLM 14N (ftUS)\",GEOGCS[\"WGS 84\",DAT"); - add_srs_wkt (p, 1, - "UM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.25722356"); - add_srs_wkt (p, 2, - "3,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"632"); - add_srs_wkt (p, 3, - "6\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"T"); - add_srs_wkt (p, 6, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 7, - "],PARAMETER[\"central_meridian\",-99],PARAMETER[\"scale_"); - add_srs_wkt (p, 8, - "factor\",0.9996],PARAMETER[\"false_easting\",1640416.67]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); - add_srs_wkt (p, 10, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 11, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32664\""); - add_srs_wkt (p, 12, - "]]"); - p = add_epsg_def (filter, first, last, 32665, "epsg", 32665, - "WGS 84 / BLM 15N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / BLM 15N (ftUS)\",GEOGCS[\"WGS 84\",DAT"); - add_srs_wkt (p, 1, - "UM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.25722356"); - add_srs_wkt (p, 2, - "3,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"632"); - add_srs_wkt (p, 3, - "6\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"T"); - add_srs_wkt (p, 6, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 7, - "],PARAMETER[\"central_meridian\",-93],PARAMETER[\"scale_"); - add_srs_wkt (p, 8, - "factor\",0.9996],PARAMETER[\"false_easting\",1640416.67]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); - add_srs_wkt (p, 10, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 11, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32665\""); - add_srs_wkt (p, 12, - "]]"); - p = add_epsg_def (filter, first, last, 32666, "epsg", 32666, - "WGS 84 / BLM 16N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / BLM 16N (ftUS)\",GEOGCS[\"WGS 84\",DAT"); - add_srs_wkt (p, 1, - "UM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.25722356"); - add_srs_wkt (p, 2, - "3,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"632"); - add_srs_wkt (p, 3, - "6\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"T"); - add_srs_wkt (p, 6, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 7, - "],PARAMETER[\"central_meridian\",-87],PARAMETER[\"scale_"); - add_srs_wkt (p, 8, - "factor\",0.9996],PARAMETER[\"false_easting\",1640416.67]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); - add_srs_wkt (p, 10, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 11, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32666\""); - add_srs_wkt (p, 12, - "]]"); - p = add_epsg_def (filter, first, last, 32667, "epsg", 32667, - "WGS 84 / BLM 17N (ftUS)"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.00"); - add_proj4text (p, 1, - "1016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / BLM 17N (ftUS)\",GEOGCS[\"WGS 84\",DAT"); - add_srs_wkt (p, 1, - "UM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.25722356"); - add_srs_wkt (p, 2, - "3,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"632"); - add_srs_wkt (p, 3, - "6\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"T"); - add_srs_wkt (p, 6, - "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); - add_srs_wkt (p, 7, - "],PARAMETER[\"central_meridian\",-81],PARAMETER[\"scale_"); - add_srs_wkt (p, 8, - "factor\",0.9996],PARAMETER[\"false_easting\",1640416.67]"); - add_srs_wkt (p, 9, - ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); - add_srs_wkt (p, 10, - ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); - add_srs_wkt (p, 11, - "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32667\""); - add_srs_wkt (p, 12, - "]]"); - p = add_epsg_def (filter, first, last, 32701, "epsg", 32701, - "WGS 84 / UTM zone 1S"); - add_proj4text (p, 0, - "+proj=utm +zone=1 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 1S\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-177],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 11, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32701\"]]"); - p = add_epsg_def (filter, first, last, 32702, "epsg", 32702, - "WGS 84 / UTM zone 2S"); - add_proj4text (p, 0, - "+proj=utm +zone=2 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 2S\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-171],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 11, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32702\"]]"); - p = add_epsg_def (filter, first, last, 32703, "epsg", 32703, - "WGS 84 / UTM zone 3S"); - add_proj4text (p, 0, - "+proj=utm +zone=3 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 3S\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-165],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 11, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32703\"]]"); - p = add_epsg_def (filter, first, last, 32704, "epsg", 32704, - "WGS 84 / UTM zone 4S"); - add_proj4text (p, 0, - "+proj=utm +zone=4 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 4S\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-159],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 11, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32704\"]]"); - p = add_epsg_def (filter, first, last, 32705, "epsg", 32705, - "WGS 84 / UTM zone 5S"); - add_proj4text (p, 0, - "+proj=utm +zone=5 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 5S\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-153],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 11, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32705\"]]"); - p = add_epsg_def (filter, first, last, 32706, "epsg", 32706, - "WGS 84 / UTM zone 6S"); - add_proj4text (p, 0, - "+proj=utm +zone=6 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 6S\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-147],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 11, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32706\"]]"); - p = add_epsg_def (filter, first, last, 32707, "epsg", 32707, - "WGS 84 / UTM zone 7S"); - add_proj4text (p, 0, - "+proj=utm +zone=7 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 7S\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-141],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 11, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32707\"]]"); - p = add_epsg_def (filter, first, last, 32708, "epsg", 32708, - "WGS 84 / UTM zone 8S"); - add_proj4text (p, 0, - "+proj=utm +zone=8 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 8S\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-135],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 11, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32708\"]]"); - p = add_epsg_def (filter, first, last, 32709, "epsg", 32709, - "WGS 84 / UTM zone 9S"); - add_proj4text (p, 0, - "+proj=utm +zone=9 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 9S\",GEOGCS[\"WGS 84\",DATUM["); - add_srs_wkt (p, 1, - "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); - add_srs_wkt (p, 2, - "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-129],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 11, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32709\"]]"); - p = add_epsg_def (filter, first, last, 32710, "epsg", 32710, - "WGS 84 / UTM zone 10S"); - add_proj4text (p, 0, - "+proj=utm +zone=10 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 10S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-123],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 11, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32710\"]]"); - p = add_epsg_def (filter, first, last, 32711, "epsg", 32711, - "WGS 84 / UTM zone 11S"); - add_proj4text (p, 0, - "+proj=utm +zone=11 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 11S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 11, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32711\"]]"); - p = add_epsg_def (filter, first, last, 32712, "epsg", 32712, - "WGS 84 / UTM zone 12S"); - add_proj4text (p, 0, - "+proj=utm +zone=12 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 12S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-111],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 11, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32712\"]]"); - p = add_epsg_def (filter, first, last, 32713, "epsg", 32713, - "WGS 84 / UTM zone 13S"); - add_proj4text (p, 0, - "+proj=utm +zone=13 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 13S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-105],PARAMETER[\"scale_fa"); - add_srs_wkt (p, 8, - "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); - add_srs_wkt (p, 9, - "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); - add_srs_wkt (p, 10, - "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); - add_srs_wkt (p, 11, - "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32713\"]]"); - p = add_epsg_def (filter, first, last, 32714, "epsg", 32714, - "WGS 84 / UTM zone 14S"); - add_proj4text (p, 0, - "+proj=utm +zone=14 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 14S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-99],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32714\"]]"); - p = add_epsg_def (filter, first, last, 32715, "epsg", 32715, - "WGS 84 / UTM zone 15S"); - add_proj4text (p, 0, - "+proj=utm +zone=15 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 15S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-93],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32715\"]]"); - p = add_epsg_def (filter, first, last, 32716, "epsg", 32716, - "WGS 84 / UTM zone 16S"); - add_proj4text (p, 0, - "+proj=utm +zone=16 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 16S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-87],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32716\"]]"); - p = add_epsg_def (filter, first, last, 32717, "epsg", 32717, - "WGS 84 / UTM zone 17S"); - add_proj4text (p, 0, - "+proj=utm +zone=17 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 17S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-81],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32717\"]]"); - p = add_epsg_def (filter, first, last, 32718, "epsg", 32718, - "WGS 84 / UTM zone 18S"); - add_proj4text (p, 0, - "+proj=utm +zone=18 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 18S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-75],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32718\"]]"); - p = add_epsg_def (filter, first, last, 32719, "epsg", 32719, - "WGS 84 / UTM zone 19S"); - add_proj4text (p, 0, - "+proj=utm +zone=19 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 19S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32719\"]]"); - p = add_epsg_def (filter, first, last, 32720, "epsg", 32720, - "WGS 84 / UTM zone 20S"); - add_proj4text (p, 0, - "+proj=utm +zone=20 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 20S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32720\"]]"); - p = add_epsg_def (filter, first, last, 32721, "epsg", 32721, - "WGS 84 / UTM zone 21S"); - add_proj4text (p, 0, - "+proj=utm +zone=21 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 21S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32721\"]]"); - p = add_epsg_def (filter, first, last, 32722, "epsg", 32722, - "WGS 84 / UTM zone 22S"); - add_proj4text (p, 0, - "+proj=utm +zone=22 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 22S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-51],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32722\"]]"); - p = add_epsg_def (filter, first, last, 32723, "epsg", 32723, - "WGS 84 / UTM zone 23S"); - add_proj4text (p, 0, - "+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 23S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-45],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32723\"]]"); - p = add_epsg_def (filter, first, last, 32724, "epsg", 32724, - "WGS 84 / UTM zone 24S"); - add_proj4text (p, 0, - "+proj=utm +zone=24 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 24S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-39],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32724\"]]"); - p = add_epsg_def (filter, first, last, 32725, "epsg", 32725, - "WGS 84 / UTM zone 25S"); - add_proj4text (p, 0, - "+proj=utm +zone=25 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 25S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-33],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32725\"]]"); - p = add_epsg_def (filter, first, last, 32726, "epsg", 32726, - "WGS 84 / UTM zone 26S"); - add_proj4text (p, 0, - "+proj=utm +zone=26 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 26S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-27],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32726\"]]"); - p = add_epsg_def (filter, first, last, 32727, "epsg", 32727, - "WGS 84 / UTM zone 27S"); - add_proj4text (p, 0, - "+proj=utm +zone=27 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 27S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-21],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32727\"]]"); - p = add_epsg_def (filter, first, last, 32728, "epsg", 32728, - "WGS 84 / UTM zone 28S"); - add_proj4text (p, 0, - "+proj=utm +zone=28 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 28S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-15],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32728\"]]"); - p = add_epsg_def (filter, first, last, 32729, "epsg", 32729, - "WGS 84 / UTM zone 29S"); - add_proj4text (p, 0, - "+proj=utm +zone=29 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 29S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-9],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32729\"]]"); - p = add_epsg_def (filter, first, last, 32730, "epsg", 32730, - "WGS 84 / UTM zone 30S"); - add_proj4text (p, 0, - "+proj=utm +zone=30 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 30S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",-3],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32730\"]]"); - p = add_epsg_def (filter, first, last, 32731, "epsg", 32731, - "WGS 84 / UTM zone 31S"); - add_proj4text (p, 0, - "+proj=utm +zone=31 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 31S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",3],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 8, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 10, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 11, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"32731\"]]"); - p = add_epsg_def (filter, first, last, 32732, "epsg", 32732, - "WGS 84 / UTM zone 32S"); - add_proj4text (p, 0, - "+proj=utm +zone=32 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 32S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",9],PARAMETER[\"scale_facto"); - add_srs_wkt (p, 8, - "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); - add_srs_wkt (p, 9, - "R[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORIT"); - add_srs_wkt (p, 10, - "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); - add_srs_wkt (p, 11, - "hing\",NORTH],AUTHORITY[\"EPSG\",\"32732\"]]"); - p = add_epsg_def (filter, first, last, 32733, "epsg", 32733, - "WGS 84 / UTM zone 33S"); - add_proj4text (p, 0, - "+proj=utm +zone=33 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 33S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",15],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32733\"]]"); - p = add_epsg_def (filter, first, last, 32734, "epsg", 32734, - "WGS 84 / UTM zone 34S"); - add_proj4text (p, 0, - "+proj=utm +zone=34 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 34S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",21],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32734\"]]"); -} - diff --git a/src/spatialite/src/srsinit/epsg_inlined_wgs84_01.c b/src/spatialite/src/srsinit/epsg_inlined_wgs84_01.c deleted file mode 100644 index a9b1eeb..0000000 --- a/src/spatialite/src/srsinit/epsg_inlined_wgs84_01.c +++ /dev/null @@ -1,842 +0,0 @@ -/* - - helper function for srs_init.c -- populating the SPATIAL_REF_SYS table - - this code was autogenerated by "auto_epsg" on Wed Aug 1 15:15:05 2012 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include - -SPATIALITE_PRIVATE void -initialize_epsg_wgs84_01 (int filter, struct epsg_defs **first, struct epsg_defs **last) -{ -/* initializing the EPSG defs list [WGS84] */ - struct epsg_defs *p; - p = add_epsg_def (filter, first, last, 32735, "epsg", 32735, - "WGS 84 / UTM zone 35S"); - add_proj4text (p, 0, - "+proj=utm +zone=35 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 35S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",27],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32735\"]]"); - p = add_epsg_def (filter, first, last, 32736, "epsg", 32736, - "WGS 84 / UTM zone 36S"); - add_proj4text (p, 0, - "+proj=utm +zone=36 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 36S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",33],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32736\"]]"); - p = add_epsg_def (filter, first, last, 32737, "epsg", 32737, - "WGS 84 / UTM zone 37S"); - add_proj4text (p, 0, - "+proj=utm +zone=37 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 37S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",39],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32737\"]]"); - p = add_epsg_def (filter, first, last, 32738, "epsg", 32738, - "WGS 84 / UTM zone 38S"); - add_proj4text (p, 0, - "+proj=utm +zone=38 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 38S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",45],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32738\"]]"); - p = add_epsg_def (filter, first, last, 32739, "epsg", 32739, - "WGS 84 / UTM zone 39S"); - add_proj4text (p, 0, - "+proj=utm +zone=39 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 39S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",51],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32739\"]]"); - p = add_epsg_def (filter, first, last, 32740, "epsg", 32740, - "WGS 84 / UTM zone 40S"); - add_proj4text (p, 0, - "+proj=utm +zone=40 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 40S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",57],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32740\"]]"); - p = add_epsg_def (filter, first, last, 32741, "epsg", 32741, - "WGS 84 / UTM zone 41S"); - add_proj4text (p, 0, - "+proj=utm +zone=41 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 41S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",63],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32741\"]]"); - p = add_epsg_def (filter, first, last, 32742, "epsg", 32742, - "WGS 84 / UTM zone 42S"); - add_proj4text (p, 0, - "+proj=utm +zone=42 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 42S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",69],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32742\"]]"); - p = add_epsg_def (filter, first, last, 32743, "epsg", 32743, - "WGS 84 / UTM zone 43S"); - add_proj4text (p, 0, - "+proj=utm +zone=43 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 43S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",75],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32743\"]]"); - p = add_epsg_def (filter, first, last, 32744, "epsg", 32744, - "WGS 84 / UTM zone 44S"); - add_proj4text (p, 0, - "+proj=utm +zone=44 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 44S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",81],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32744\"]]"); - p = add_epsg_def (filter, first, last, 32745, "epsg", 32745, - "WGS 84 / UTM zone 45S"); - add_proj4text (p, 0, - "+proj=utm +zone=45 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 45S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",87],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32745\"]]"); - p = add_epsg_def (filter, first, last, 32746, "epsg", 32746, - "WGS 84 / UTM zone 46S"); - add_proj4text (p, 0, - "+proj=utm +zone=46 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 46S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",93],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32746\"]]"); - p = add_epsg_def (filter, first, last, 32747, "epsg", 32747, - "WGS 84 / UTM zone 47S"); - add_proj4text (p, 0, - "+proj=utm +zone=47 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 47S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",99],PARAMETER[\"scale_fact"); - add_srs_wkt (p, 8, - "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); - add_srs_wkt (p, 9, - "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); - add_srs_wkt (p, 10, - "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); - add_srs_wkt (p, 11, - "thing\",NORTH],AUTHORITY[\"EPSG\",\"32747\"]]"); - p = add_epsg_def (filter, first, last, 32748, "epsg", 32748, - "WGS 84 / UTM zone 48S"); - add_proj4text (p, 0, - "+proj=utm +zone=48 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 48S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",105],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32748\"]]"); - p = add_epsg_def (filter, first, last, 32749, "epsg", 32749, - "WGS 84 / UTM zone 49S"); - add_proj4text (p, 0, - "+proj=utm +zone=49 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 49S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",111],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32749\"]]"); - p = add_epsg_def (filter, first, last, 32750, "epsg", 32750, - "WGS 84 / UTM zone 50S"); - add_proj4text (p, 0, - "+proj=utm +zone=50 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 50S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",117],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32750\"]]"); - p = add_epsg_def (filter, first, last, 32751, "epsg", 32751, - "WGS 84 / UTM zone 51S"); - add_proj4text (p, 0, - "+proj=utm +zone=51 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 51S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",123],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32751\"]]"); - p = add_epsg_def (filter, first, last, 32752, "epsg", 32752, - "WGS 84 / UTM zone 52S"); - add_proj4text (p, 0, - "+proj=utm +zone=52 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 52S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",129],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32752\"]]"); - p = add_epsg_def (filter, first, last, 32753, "epsg", 32753, - "WGS 84 / UTM zone 53S"); - add_proj4text (p, 0, - "+proj=utm +zone=53 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 53S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",135],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32753\"]]"); - p = add_epsg_def (filter, first, last, 32754, "epsg", 32754, - "WGS 84 / UTM zone 54S"); - add_proj4text (p, 0, - "+proj=utm +zone=54 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 54S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",141],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32754\"]]"); - p = add_epsg_def (filter, first, last, 32755, "epsg", 32755, - "WGS 84 / UTM zone 55S"); - add_proj4text (p, 0, - "+proj=utm +zone=55 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 55S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",147],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32755\"]]"); - p = add_epsg_def (filter, first, last, 32756, "epsg", 32756, - "WGS 84 / UTM zone 56S"); - add_proj4text (p, 0, - "+proj=utm +zone=56 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 56S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",153],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32756\"]]"); - p = add_epsg_def (filter, first, last, 32757, "epsg", 32757, - "WGS 84 / UTM zone 57S"); - add_proj4text (p, 0, - "+proj=utm +zone=57 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 57S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",159],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32757\"]]"); - p = add_epsg_def (filter, first, last, 32758, "epsg", 32758, - "WGS 84 / UTM zone 58S"); - add_proj4text (p, 0, - "+proj=utm +zone=58 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 58S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",165],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32758\"]]"); - p = add_epsg_def (filter, first, last, 32759, "epsg", 32759, - "WGS 84 / UTM zone 59S"); - add_proj4text (p, 0, - "+proj=utm +zone=59 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 59S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",171],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32759\"]]"); - p = add_epsg_def (filter, first, last, 32760, "epsg", 32760, - "WGS 84 / UTM zone 60S"); - add_proj4text (p, 0, - "+proj=utm +zone=60 +south +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UTM zone 60S\",GEOGCS[\"WGS 84\",DATUM"); - add_srs_wkt (p, 1, - "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); - add_srs_wkt (p, 2, - "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); - add_srs_wkt (p, 3, - "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); - add_srs_wkt (p, 4, - "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); - add_srs_wkt (p, 5, - "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); - add_srs_wkt (p, 6, - "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); - add_srs_wkt (p, 7, - "ARAMETER[\"central_meridian\",177],PARAMETER[\"scale_fac"); - add_srs_wkt (p, 8, - "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); - add_srs_wkt (p, 9, - "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); - add_srs_wkt (p, 10, - "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); - add_srs_wkt (p, 11, - "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32760\"]]"); - p = add_epsg_def (filter, first, last, 32761, "epsg", 32761, - "WGS 84 / UPS South (N,E)"); - add_proj4text (p, 0, - "+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_"); - add_proj4text (p, 1, - "0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / UPS South (N,E)\",GEOGCS[\"WGS 84\",DA"); - add_srs_wkt (p, 1, - "TUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2572235"); - add_srs_wkt (p, 2, - "63,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"63"); - add_srs_wkt (p, 3, - "26\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); - add_srs_wkt (p, 4, - "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); - add_srs_wkt (p, 5, - ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"P"); - add_srs_wkt (p, 6, - "olar_Stereographic\"],PARAMETER[\"latitude_of_origin\",-"); - add_srs_wkt (p, 7, - "90],PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_"); - add_srs_wkt (p, 8, - "factor\",0.994],PARAMETER[\"false_easting\",2000000],PAR"); - add_srs_wkt (p, 9, - "AMETER[\"false_northing\",2000000],UNIT[\"metre\",1,AUTH"); - add_srs_wkt (p, 10, - "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Northing\",NORTH],AXIS["); - add_srs_wkt (p, 11, - "\"Easting\",EAST],AUTHORITY[\"EPSG\",\"32761\"]]"); - p = add_epsg_def (filter, first, last, 32766, "epsg", 32766, - "WGS 84 / TM 36 SE"); - add_proj4text (p, 0, - "+proj=tmerc +lat_0=0 +lon_0=36 +k=0.9996 +x_0=500000 +y_"); - add_proj4text (p, 1, - "0=10000000 +datum=WGS84 +units=m +no_defs"); - add_srs_wkt (p, 0, - "PROJCS[\"WGS 84 / TM 36 SE\",GEOGCS[\"WGS 84\",DATUM[\"W"); - add_srs_wkt (p, 1, - "GS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTH"); - add_srs_wkt (p, 2, - "ORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],"); - add_srs_wkt (p, 3, - "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); - add_srs_wkt (p, 4, - "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); - add_srs_wkt (p, 5, - "2\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transve"); - add_srs_wkt (p, 6, - "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); - add_srs_wkt (p, 7, - "METER[\"central_meridian\",36],PARAMETER[\"scale_factor\""); - add_srs_wkt (p, 8, - ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); - add_srs_wkt (p, 9, - "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); - add_srs_wkt (p, 10, - "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); - add_srs_wkt (p, 11, - "\",NORTH],AUTHORITY[\"EPSG\",\"32766\"]]"); -} - diff --git a/src/spatialite/src/srsinit/epsg_update/Makefile.am b/src/spatialite/src/srsinit/epsg_update/Makefile.am deleted file mode 100644 index 384cbc3..0000000 --- a/src/spatialite/src/srsinit/epsg_update/Makefile.am +++ /dev/null @@ -1,3 +0,0 @@ - -EXTRA_DIST = README.txt auto_epsg.c - diff --git a/src/spatialite/src/srsinit/epsg_update/Makefile.in b/src/spatialite/src/srsinit/epsg_update/Makefile.in deleted file mode 100644 index e8862a1..0000000 --- a/src/spatialite/src/srsinit/epsg_update/Makefile.in +++ /dev/null @@ -1,390 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/srsinit/epsg_update -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -SOURCES = -DIST_SOURCES = -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -EXTRA_DIST = README.txt auto_epsg.c -all: all-am - -.SUFFIXES: -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/srsinit/epsg_update/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/srsinit/epsg_update/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs -tags: TAGS -TAGS: - -ctags: CTAGS -CTAGS: - - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool mostlyclean-am - -distclean: distclean-am - -rm -f Makefile -distclean-am: clean-am distclean-generic - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-generic mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: all all-am check check-am clean clean-generic clean-libtool \ - distclean distclean-generic distclean-libtool distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-data install-data-am install-dvi install-dvi-am \ - install-exec install-exec-am install-html install-html-am \ - install-info install-info-am install-man install-pdf \ - install-pdf-am install-ps install-ps-am install-strip \ - installcheck installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-generic \ - mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/src/srsinit/epsg_update/README.txt b/src/spatialite/src/srsinit/epsg_update/README.txt deleted file mode 100644 index c3a33db..0000000 --- a/src/spatialite/src/srsinit/epsg_update/README.txt +++ /dev/null @@ -1,57 +0,0 @@ -HOW-TO: UPDATE spatial_ref_sys SELF-INITIALIZING C CODE -============================================================================ -When updating is required: each time a new GDAL version will be released. -============================================================================ - -STEP #1: getting the basic EPSG files --------- -- download the latest GDAL sources -- build and install - be sure to set: ./configure --with-python=yes - -# cd {gdal-sources}/data -# rm epsg -# epsg_tr.py --config OVERRIDE_PROJ_DATUM_WITH_TOWGS84 FALSE \ -# -proj4 -skip -list gcs.csv > epsg -# epsg_tr.py --config OVERRIDE_PROJ_DATUM_WITH_TOWGS84 FALSE \ -# -proj4 -skip -list pcs.csv >> epsg -# rm wkt -# epsg_tr.py -wkt -skip -list gcs.csv > wkt -# epsg_tr.py -wkt -skip -list pcs.csv >> wkt - -all right: these "epsg" and "wkt" files will be used as "seeds" into the -next step: -- copy both "epsg" and "wkt" files into: - {libspatialite-source}/src/srcinit/epsg_update - - - -STEP #2: compiling the C generator tool --------- -# cd {libspatialite-source}/src/srsinit/epsg_update - -Linux: -# gcc auto_epsg.c -o auto_epsg - -Windows [MinGW]: -# gcc auto_epsg.c -o auto_epsg.exe - - - -STEP #3: generating the C code [inlined EPSG dataset] --------- -# rm epsg_inlined_*.c -# ./auto_epsg - -at the end of this step several "epsg_inlined_*.c" files will be generated - - - -STEP #4: final setup --------- -- copy the generated file into the parent dir: - rm ../epsg_inlined_*.c - cp epsg_inlined.c .. -- be sure to update as required the repository (ADD/DEL) -- be sure to update as required Makefile.am -- and finally commit into the repository diff --git a/src/spatialite/src/srsinit/epsg_update/auto_epsg.c b/src/spatialite/src/srsinit/epsg_update/auto_epsg.c deleted file mode 100644 index ad4ce8e..0000000 --- a/src/spatialite/src/srsinit/epsg_update/auto_epsg.c +++ /dev/null @@ -1,2301 +0,0 @@ -/* -/ auto_epsg -/ -/ a tool autogenerating C code for SpatiaLite -/ [spatial_ref_sys self-initialization routines] -/ -/ version 1.0, 2012 January 18 -/ -/ Author: Sandro Furieri a.furieri@lqt.it -/ -/ Copyright (C) 2011 Alessandro Furieri -/ -/ This program is free software: you can redistribute it and/or modify -/ it under the terms of the GNU General Public License as published by -/ the Free Software Foundation, either version 3 of the License, or -/ (at your option) any later version. -/ -/ This program is distributed in the hope that it will be useful, -/ but WITHOUT ANY WARRANTY; without even the implied warranty of -/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -/ GNU General Public License for more details. -/ -/ You should have received a copy of the GNU General Public License -/ along with this program. If not, see . -/ -*/ - -#include -#include -#include -#include - -struct epsg_entry -{ -/* a struct wrapping an EPSG entry */ - int srid; - char *ref_sys_name; - char *proj4text; - char *srs_wkt; - struct epsg_entry *next; -}; - -struct epsg_dict -{ -/* the EPSG dictionary */ - struct epsg_entry *first; - struct epsg_entry *last; - struct epsg_entry **sorted; - int count; -}; - -static void -free_epsg_entry (struct epsg_entry *p) -{ -/* destroying an epsg_entry */ - if (p->ref_sys_name) - free (p->ref_sys_name); - if (p->proj4text) - free (p->proj4text); - if (p->srs_wkt) - free (p->srs_wkt); - free (p); -} - -static void -free_epsg (struct epsg_dict *epsg) -{ -/* destroying the EPSG dictionary */ - struct epsg_entry *pE; - struct epsg_entry *pEn; - pE = epsg->first; - while (pE) - { - pEn = pE->next; - free_epsg_entry (pE); - pE = pEn; - } - if (epsg->sorted) - free (epsg->sorted); -} - -static void -epsg_insert (struct epsg_dict *epsg, int srid, const char *name, - const char *proj4text) -{ -/* inserting an entry into the EPSG dictionary */ - int len; - struct epsg_entry *p = malloc (sizeof (struct epsg_entry)); - p->srid = srid; - len = strlen (name); - p->ref_sys_name = malloc (len + 1); - strcpy (p->ref_sys_name, name); - len = strlen (proj4text); - p->proj4text = malloc (len + 1); - strcpy (p->proj4text, proj4text); - p->srs_wkt = NULL; - p->next = NULL; - -/* updating the linked list */ - if (epsg->first == NULL) - epsg->first = p; - if (epsg->last != NULL) - epsg->last->next = p; - epsg->last = p; -} - -static void -add_wkt (struct epsg_dict *epsg, int srid, const char *wkt) -{ -/* adding the WKT def to some EPSG entry */ - struct epsg_entry *p = epsg->first; - while (p) - { - if (p->srid == srid) - { - int len = strlen (wkt); - if (p->srs_wkt) - free (p->srs_wkt); - p->srs_wkt = malloc (len + 1); - strcpy (p->srs_wkt, wkt); - return; - } - p = p->next; - } -} - -static int -parse_epsg (FILE * fl_epsg, struct epsg_dict *epsg) -{ -/* parsing the EPSG input file */ - char line[1024]; - char name[512]; - char *out = line; - int odd_even = 0; - int c; - - while ((c = getc (fl_epsg)) != EOF) - { - if (c == '\r') - continue; - if (c == '\n') - { - *out = '\0'; - if (odd_even) - { - int i; - int len = strlen (line); - char srid[16]; - char *p = srid; - const char *proj4text = NULL; - if (odd_even == 2) - { - if (*line == '#') - { - /* closing a pending invalid EPSG def */ - odd_even = 0; - *name = '\0'; - out = line; - continue; - } - return 0; - } - if (*name == '\0') - return 0; - if (strncmp (line, "# ", 2) == 0) - { - /* probably an invalid EPSG def: skipping */ - odd_even = 2; - *name = '\0'; - out = line; - continue; - } - if (*line != '<') - return 0; - if (strcmp (line + len - 2, "<>") != 0) - return 0; - line[len - 2] = '\0'; - for (i = 1; i < 10; i++) - { - if (line[i] == '>') - { - *p = '\0'; - proj4text = line + i + 2; - } - *p++ = line[i]; - } - if (!proj4text) - return 0; - len = strlen (line); - for (i = len - 1; i > 1; i--) - { - if (line[i] == ' ') - line[i] = '\0'; - else - break; - } - epsg_insert (epsg, atoi (srid), name, proj4text); - odd_even = 0; - *name = '\0'; - } - else - { - if (strncmp (line, "# ", 2) != 0) - return 0; - strcpy (name, line + 2); - odd_even = 1; - } - out = line; - continue; - } - *out++ = c; - } - return 1; -} - -static int -fetch_srid (const char *line) -{ -/* attempting to retrieve the WKT own SRID */ - int len = strlen (line); - int i; - int cnt = 0; - for (i = len - 1; i > 1; i--) - { - if (line[i] == ']') - cnt++; - if (cnt == 3) - { - if (strncmp (line + i, "],AUTHORITY[\"EPSG\",\"", 20) == 0) - return atoi (line + i + 20); - return -1; - } - } - return -1; -} - -static int -parse_wkt (FILE * fl_wkt, struct epsg_dict *epsg) -{ -/* parsing the WKT input file */ - char line[8192]; - int srid; - char *out = line; - int c; - - while ((c = getc (fl_wkt)) != EOF) - { - if (c == '\r') - continue; - if (c == '\n') - { - *out = '\0'; - srid = fetch_srid (line); - if (srid >= 0) - add_wkt (epsg, srid, line); - out = line; - continue; - } - *out++ = c; - } - return 1; -} - -static int -cmp_sort (const void *p1, const void *p2) -{ -/* comparison function for QSORT */ - struct epsg_entry *e1 = *(struct epsg_entry **) p1; - struct epsg_entry *e2 = *(struct epsg_entry **) p2; - if (e1->srid == e2->srid) - return 0; - if (e1->srid < e2->srid) - return -1; - return 1; -} - -static int -sort_epsg (struct epsg_dict *epsg) -{ -/* sorting the EPSG defs by ascending SRID */ - int count = 0; - int i; - struct epsg_entry *p = epsg->first; - while (p) - { - /* counting how many entries are there */ - count++; - p = p->next; - } - if (count == 0) - return 0; - if (epsg->sorted) - free (epsg->sorted); - epsg->sorted = malloc (sizeof (struct epsg_dict *) * count); - epsg->count = count; - i = 0; - p = epsg->first; - while (p) - { - /* feeding the pointer array */ - *(epsg->sorted + i) = p; - i++; - p = p->next; - } -/* sorting the pointer array by ascending SRID */ - qsort (epsg->sorted, count, sizeof (struct epsg_dict *), cmp_sort); - return 1; -} - -static FILE * -open_file (int file_no) -{ -/* opening an output file */ - char path[1024]; - FILE *out = NULL; - - sprintf (path, "epsg_inlined_%02d.c", file_no); - out = fopen (path, "wb"); - if (out == NULL) - { - fprintf (stderr, - "ERROR: unable to open the \"%s\" output file\n", path); - return NULL; - } - return out; -} - -static FILE * -open_file2 () -{ -/* opening the "extra" output file */ - FILE *out = NULL; - - out = fopen ("epsg_inlined_extra.c", "wb"); - if (out == NULL) - { - fprintf (stderr, - "ERROR: unable to open the \"epsg_inlined_extra.c\" output file\n"); - return NULL; - } - return out; -} - -static FILE * -open_file3 () -{ -/* opening the "prussian" output file */ - FILE *out = NULL; - - out = fopen ("epsg_inlined_prussian.c", "wb"); - if (out == NULL) - { - fprintf (stderr, - "ERROR: unable to open the \"epsg_inlined_prussian.c\" output file\n"); - return NULL; - } - return out; -} - -static FILE * -open_file_wgs84 (int file_no) -{ -/* opening an output file "wgs84" */ - char path[1024]; - FILE *out = NULL; - - sprintf (path, "epsg_inlined_wgs84_%02d.c", file_no); - out = fopen (path, "wb"); - if (out == NULL) - { - fprintf (stderr, - "ERROR: unable to open the \"%s\" output file\n", path); - return NULL; - } - return out; -} - -static void -do_prussian (FILE * out) -{ -/* writing the "prussian" body */ - fprintf (out, - "SPATIALITE_PRIVATE void\ninitialize_epsg_prussian(int filter,struct epsg_defs **first, struct epsg_defs **last)\n"); - fprintf (out, - "{\n/* old Prussian based on Cassini-Soldner - kindly contributed by Mark Johnson */\n"); - fprintf (out, " struct epsg_defs *p;\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187900,\"mj10777.de\",187900,\"DHDN / Soldner Rathausnetz 660\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=14741.77 +y_0=-11288.28 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner Rathausnetz 660\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.41864827777778],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",13.62720366666667],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",14741.77],PARAMETER[\\\"false_northing\\\",-11288.28],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187900\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187901,\"mj10777.de\",187901,\"DHDN / Soldner 1 Kucklinsberg\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=54.46022375 +lon_0=21.95509736 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 1 Kucklinsberg\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.46022375],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",21.95509736],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187901\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187902,\"mj10777.de\",187902,\"DHDN / Soldner 2 Paulinen\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=54.28921067 +lon_0=20.73315431 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 2 Paulinen\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.28921067],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",20.73315431],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187902\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187903,\"mj10777.de\",187903,\"DHDN / Soldner 3 Markushof I\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=54.05881333 +lon_0=19.37343583 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 3 Markushof I\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.05881333],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",19.37343583],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187903\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187904,\"mj10777.de\",187904,\"DHDN / Soldner 4 Thurmberg\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=54.22552092 +lon_0=18.12569375 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 4 Thurmberg\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.22552092],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",18.12569375],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187904\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187905,\"mj10777.de\",187905,\"DHDN / Soldner 5 Kauernick I\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=53.38933197 +lon_0=19.59810438 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 5 Kauernick I\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",53.38933197],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",19.59810438],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187905\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187906,\"mj10777.de\",187906,\"DHDN / Soldner 6 Thorn, Rathausturm\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=53.01181586 +lon_0=18.60725428 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 6 Thorn, Rathausturm\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",53.01181586],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",18.60725428],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187906\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187907,\"mj10777.de\",187907,\"DHDN / Soldner 7 Heinrichsthal\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=53.71289217 +lon_0=17.49676781 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 7 Heinrichsthal\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",53.71289217],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",17.49676781],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187907\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187908,\"mj10777.de\",187908,\"DHDN / Soldner 8 Gollenberg, Denkmal\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=54.20857178 +lon_0=16.22956781 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 8 Gollenberg, Denkmal\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.20857178],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",16.22956781],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187908\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187909,\"mj10777.de\",187909,\"DHDN / Soldner 9 Gnesen\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=52.53820406 +lon_0=17.59450500 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 9 Gnesen\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.53820406],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",17.59450500],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187909\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187910,\"mj10777.de\",187910,\"DHDN / Soldner 10 Josefsberg\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=51.98768806 +lon_0=16.20044389 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 10 Josefsberg\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.98768806],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",16.20044389],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187910\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187911,\"mj10777.de\",187911,\"DHDN / Soldner 11 Schroda\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=52.23137372 +lon_0=17.27795372 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 11 Schroda\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.23137372],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",17.27795372],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187911\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187912,\"mj10777.de\",187912,\"DHDN / Soldner 12 Pschow\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=50.04206544 +lon_0=18.39610692 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 12 Pschow\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",50.04206544],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",18.39610692],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187912\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187913,\"mj10777.de\",187913,\"DHDN / Soldner 13 Rummelsberg\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=50.70352314 +lon_0=17.11233917 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 13 Rummelsberg\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",50.70352314],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",17.11233917],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187913\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187914,\"mj10777.de\",187914,\"DHDN / Soldner 14 Gröditzberg I\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=51.17819342 +lon_0=15.76127086 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 14 Gröditzberg I\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.17819342],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",15.76127086],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187914\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187915,\"mj10777.de\",187915,\"DHDN / Soldner 15 Kaltenborn\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=51.92903708 +lon_0=14.66212942 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 15 Kaltenborn\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.92903708],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",14.66212942],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187915\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187917,\"mj10777.de\",187917,\"DHDN / Soldner 17 Greifswald, Nikolaikirche\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=54.09698872 +lon_0=13.37880703 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 17 Greifswald, Nikolaikirche\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.09698872],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",13.37880703],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187917\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187916,\"mj10777.de\",187916,\"DHDN / Soldner 16 Bahn I\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=53.10184583 +lon_0=14.70144539 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 16 Bahn I\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",53.10184583],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",14.70144539],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187916\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187918,\"mj10777.de\",187918,\"DHDN / Soldner 18 Müggelberg 600\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 18 Müggelberg 600\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.41864827777778],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",13.62720366666667],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187918\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187919,\"mj10777.de\",187919,\"DHDN / Soldner 19 Götzer Berg 650\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=52.43725961111112 +lon_0=12.72882972222223 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 19 Götzer Berg 650\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.43725961111112],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",12.72882972222223],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187919\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187920,\"mj10777.de\",187920,\"DHDN / Soldner 20 Torgau, Stadtkirche\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=51.56136217 +lon_0=13.00760264 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 20 Torgau, Stadtkirche\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.56136217],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",13.00760264],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187920\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187921,\"mj10777.de\",187921,\"DHDN / Soldner 21 Burkersroda, Kirchturm\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=51.17656322 +lon_0=11.64139367 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 21 Burkersroda, Kirchturm\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.17656322],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",11.64139367],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187921\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187922,\"mj10777.de\",187922,\"DHDN / Soldner 22 Inselsberg\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=50.85237983 +lon_0=10.46776506 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 22 Inselsberg\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",50.85237983],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",10.46776506],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187922\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187923,\"mj10777.de\",187923,\"DHDN / Soldner 23 Magdeburg\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=52.12625311 +lon_0=11.63550325 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 23 Magdeburg\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.12625311],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",11.63550325],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187923\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187924,\"mj10777.de\",187924,\"DHDN / Soldner 24 Ostenfeld I\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=54.47018733 +lon_0=9.23411097 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 24 Ostenfeld I\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.47018733],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",9.23411097],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187924\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187925,\"mj10777.de\",187925,\"DHDN / Soldner 25 Rathkrügen\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=53.81839364 +lon_0=10.04220189 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 25 Rathkrügen\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",53.81839364],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",10.04220189],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187925\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187926,\"mj10777.de\",187926,\"DHDN / Soldner 26 Bungsberg, Aussichtsturm\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=54.21110653 +lon_0=10.72636431 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 26 Bungsberg, Aussichtsturm\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.21110653],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",10.72636431],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187926\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187927,\"mj10777.de\",187927,\"DHDN / Soldner 27 Celle, Stadtkirche\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=52.62574192 +lon_0=10.08190214 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 27 Celle, Stadtkirche\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.62574192],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",10.08190214],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187927\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187928,\"mj10777.de\",187928,\"DHDN / Soldner 28 Kaltenborn\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=51.79646722 +lon_0=10.27322494 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 28 Kaltenborn\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.79646722],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",10.27322494],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187928\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187929,\"mj10777.de\",187929,\"DHDN / Soldner 29 Silberberg\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=53.73123461 +lon_0=9.05774925 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 29 Silberberg\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",53.73123461],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",9.05774925],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187929\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187930,\"mj10777.de\",187930,\"DHDN / Soldner 30 Windberg\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=52.88088372 +lon_0=7.53062114 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 30 Windberg\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.88088372],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",7.53062114],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187930\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187931,\"mj10777.de\",187931,\"DHDN / Soldner 31 Hermannsdenkmal\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=51.91301647 +lon_0=8.84051853 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 31 Hermannsdenkmal\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.91301647],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",8.84051853],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187931\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187932,\"mj10777.de\",187932,\"DHDN / Soldner 32 Münster\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=51.96547642 +lon_0=7.62334994 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 32 Münster\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.96547642],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",7.62334994],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187932\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187933,\"mj10777.de\",187933,\"DHDN / Soldner 33 Bochum, Peter-Paul-Kirche\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=51.48373533 +lon_0=7.22115822 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 33 Bochum, Peter-Paul-Kirche\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.48373533],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",7.22115822],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187933\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187934,\"mj10777.de\",187934,\"DHDN / Soldner 34 Homert\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=51.26480147 +lon_0=8.10687050 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 34 Homert\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.26480147],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",8.10687050],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187934\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187935,\"mj10777.de\",187935,\"DHDN / Soldner 35 Kassel, Martinskirche\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=51.31846489 +lon_0=9.50203072 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 35 Kassel, Martinskirche\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.31846489],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",9.50203072],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187935\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187936,\"mj10777.de\",187936,\"DHDN / Soldner 36 Schaumburg, Schloßturm\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=50.34048964 +lon_0=7.97808156 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 36 Schaumburg, Schloßturm\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",50.34048964],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",7.97808156],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187936\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187937,\"mj10777.de\",187937,\"DHDN / Soldner 37 Fleckert\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=50.18762544 +lon_0=7.60594289 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 37 Fleckert\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",50.18762544],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",7.60594289],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187937\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187938,\"mj10777.de\",187938,\"DHDN / Soldner 38 Cöln, Dom\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=50.94257242 +lon_0=6.95897600 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 38 Cöln, Dom\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",50.94257242],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",6.95897600],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187938\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187939,\"mj10777.de\",187939,\"DHDN / Soldner 39 Langschoß\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=50.66738711 +lon_0=6.28935703 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 39 Langschoß\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",50.66738711],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",6.28935703],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187939\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187940,\"mj10777.de\",187940,\"DHDN / Soldner 40 Rissenthal\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=49.47801819 +lon_0=6.75864339 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 40 Rissenthal\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",49.47801819],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",6.75864339],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187940\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187941,\"mj10777.de\",187941,\"DHDN / Soldner Bayern\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=48.13959111 +lon_0=11.57437083 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner Bayern\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",48.13959111],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",11.57437083],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187941\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def (filter,first, last, 187998, \"mj10777.de\", 187998,\"DHDN / Ferro / Deutsches_Hauptdreiecksnetz\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=longlat +ellps=bessel +datum=potsdam +pm=ferro +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Ferro / Deutsches_Hauptdreiecksnetz\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"SPHEROID[\\\"Bessel 1841\\\",6377397.155,299.1528128,\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]], AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"PRIMEM[\\\"ferro\\\",-17.66666666666667],UNIT[\\\"Degree\\\",0.017453292519943295,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187998\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]]\");\n"); - fprintf (out, - "/* mj10777: Not exsiting System, used for testing purposes. */\n"); - fprintf (out, - " p = add_epsg_def(filter,first,last,187999,\"mj10777.de\",187999,\"DHDN / Brandenburger Tor\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 \");\n"); - fprintf (out, - " add_proj4text(p,1,\"+x_0=16819.76033675660074 +y_0=-11046.08218553455117 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner Brandenburger Tor\\\",\");\n"); - fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.41864827777778],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",13.62720366666667],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",16819.76033675660074],PARAMETER[\\\"false_northing\\\",-11046.08218553455117],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187999\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); - fprintf (out, - " p = add_epsg_def (filter,first, last, 325833, \"mj10777.de\", 325833,\"ETRS89 / UTM zone 33N (Brandenburg)\");\n"); - fprintf (out, - " add_proj4text(p,0,\"+proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs\");\n"); - fprintf (out, - " add_srs_wkt(p,0,\"PROJCS[\\\"ETRS89 / UTM zone 33N (Brandenburg)\\\",GEOGCS[\\\"ETRS89\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,1,\"DATUM[\\\"European_Terrestrial_Reference_System_1989\\\",\");\n"); - fprintf (out, - " add_srs_wkt(p,2,\"SPHEROID[\\\"GRS 1980\\\",6378137,298.257222101,\");\n"); - fprintf (out, - " add_srs_wkt(p,3,\"AUTHORITY[\\\"EPSG\\\",\\\"7019\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"6258\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,4,\"PRIMEM[\\\"Greenwich\\\",0,AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,5,\"UNIT[\\\"degree\\\",0.01745329251994328,AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],\");\n"); - fprintf (out, - " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"4258\\\"]],UNIT[\\\"metre\\\",1,\");\n"); - fprintf (out, - " add_srs_wkt(p,7,\"AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],PROJECTION[\\\"Transverse_Mercator\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,8,\"PARAMETER[\\\"latitude_of_origin\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,9,\"PARAMETER[\\\"central_meridian\\\",15],PARAMETER[\\\"scale_factor\\\",0.9996],\");\n"); - fprintf (out, - " add_srs_wkt(p,10,\"PARAMETER[\\\"false_easting\\\",3500000],PARAMETER[\\\"false_northing\\\",0],\");\n"); - fprintf (out, - " add_srs_wkt(p,11,\"AUTHORITY[\\\"EPSG\\\",\\\"325833\\\"],\");\n"); - fprintf (out, - " add_srs_wkt(p,12,\"AXIS[\\\"Easting\\\",EAST],AXIS[\\\"Northing\\\",NORTH]]\");\n"); -} - -static void -do_header (FILE * out, int macro) -{ -/* writing a file header */ - time_t tm; - time (&tm); - fprintf (out, "/*\n\n"); - fprintf (out, - " helper function for srs_init.c -- populating the SPATIAL_REF_SYS table\n\n"); - fprintf (out, " this code was autogenerated by \"auto_epsg\" on %s\n", - ctime (&tm)); - fprintf (out, " Author: Sandro Furieri a.furieri@lqt.it\n\n"); - fprintf (out, - " -----------------------------------------------------------------------------\n\n"); - fprintf (out, " Version: MPL 1.1/GPL 2.0/LGPL 2.1\n\n"); - fprintf (out, - " The contents of this file are subject to the Mozilla Public License Version\n"); - fprintf (out, - " 1.1 (the \"License\"); you may not use this file except in compliance with\n"); - fprintf (out, " the License. You may obtain a copy of the License at\n"); - fprintf (out, " http://www.mozilla.org/MPL/\n\n"); - fprintf (out, - "Software distributed under the License is distributed on an \"AS IS\" basis,\n"); - fprintf (out, - "WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License\n"); - fprintf (out, - "for the specific language governing rights and limitations under the\n"); - fprintf (out, - "License.\n\nThe Original Code is the SpatiaLite library\n\n"); - fprintf (out, - "The Initial Developer of the Original Code is Alessandro Furieri\n\n"); - fprintf (out, - "Portions created by the Initial Developer are Copyright (C) 2008\n"); - fprintf (out, - "the Initial Developer. All Rights Reserved.\n\nContributor(s):\n\n"); - fprintf (out, - "Alternatively, the contents of this file may be used under the terms of\n"); - fprintf (out, - "either the GNU General Public License Version 2 or later (the \"GPL\"), or\n"); - fprintf (out, - "the GNU Lesser General Public License Version 2.1 or later (the \"LGPL\"),\n"); - fprintf (out, - "in which case the provisions of the GPL or the LGPL are applicable instead\n"); - fprintf (out, - "of those above. If you wish to allow use of your version of this file only\n"); - fprintf (out, - "under the terms of either the GPL or the LGPL, and not to allow others to\n"); - fprintf (out, - "use your version of this file under the terms of the MPL, indicate your\n"); - fprintf (out, - "decision by deleting the provisions above and replace them with the notice\n"); - fprintf (out, - "and other provisions required by the GPL or the LGPL. If you do not delete\n"); - fprintf (out, - "the provisions above, a recipient may use your version of this file under\n"); - fprintf (out, - "the terms of any one of the MPL, the GPL or the LGPL.\n\n*/\n\n"); - fprintf (out, "#include \n\n"); - - if (macro) - fprintf (out, - "#ifndef OMIT_EPSG /* full EPSG initialization enabled */\n\n"); -} - - -static void -do_footer (FILE * out, int macro) -{ -/* writing a file footer */ - fprintf (out, "}\n\n"); - if (macro) - fprintf (out, - "#endif /* full EPSG initialization enabled/disabled */\n\n"); -} - -static void -output_c_code (FILE * out, struct epsg_dict *epsg) -{ -/* generating the C code supporting spatial_ref_sys self-initialization */ - struct epsg_entry *p = epsg->first; - int n; - int sect = 0; - int wgs84_sect = 0; - int def_cnt = 1000; - int out_cnt; - const char *in; - int i; - int pending_footer = 0; - - for (i = 0; i < epsg->count; i++) - { - p = *(epsg->sorted + i); - if (p->srid == 4326 || (p->srid >= 32601 && p->srid <= 32766)) - { - /* skipping WGS84 defs */ - continue; - } - - if (def_cnt > 100) - { - if (out != NULL) - { - if (pending_footer) - { - do_footer (out, 1); - pending_footer = 0; - } - - /* closing the output file */ - fclose (out); - out = NULL; - } - - /* opening the next output file */ - out = open_file (sect); - if (out == NULL) - return; - - /* function header */ - do_header (out, 1); - fprintf (out, "SPATIALITE_PRIVATE void\n"); - fprintf (out, - "initialize_epsg_%02d (int filter, struct epsg_defs **first, struct epsg_defs **last)\n", - sect++); - fprintf (out, "{\n/* initializing the EPSG defs list */\n"); - fprintf (out, " struct epsg_defs *p;\n"); - def_cnt = 0; - } - pending_footer = 1; - - /* inserting the main EPSG def */ - def_cnt++; - fprintf (out, - " p = add_epsg_def (filter, first, last, %d, \"epsg\", %d,\n", - p->srid, p->srid); - fprintf (out, " \"%s\");\n", p->ref_sys_name); - - /* inserting the proj4text string */ - n = 0; - in = p->proj4text; - while (*in != '\0') - { - fprintf (out, " add_proj4text (p, %d,\n \"", n); - out_cnt = 0; - while (*in != '\0') - { - if (*in == '"') - { - fprintf (out, "\\%c", *in++); - out_cnt += 2; - } - else - { - fprintf (out, "%c", *in++); - out_cnt++; - } - if (out_cnt >= 56) - break; - } - fprintf (out, "\");\n"); - n++; - } - - if (p->srs_wkt != NULL) - { - /* inserting the srs_wkt string */ n = 0; - n = 0; - in = p->srs_wkt; - while (*in != '\0') - { - fprintf (out, " add_srs_wkt (p, %d,\n \"", n); - out_cnt = 0; - while (*in != '\0') - { - if (*in == '"') - { - fprintf (out, "\\%c", *in++); - out_cnt += 2; - } - else - { - fprintf (out, "%c", *in++); - out_cnt++; - } - if (out_cnt >= 56) - break; - } - fprintf (out, "\");\n"); - n++; - } - } - else - fprintf (out, " add_srs_wkt (p, 0, \"\");\n"); - } - if (out != NULL) - { - /* closing the output file */ - if (pending_footer) - { - do_footer (out, 1); - pending_footer = 0; - } - - /* closing the output file */ - fclose (out); - out = NULL; - } - - def_cnt = 1000; - pending_footer = 0; - for (i = 0; i < epsg->count; i++) - { - p = *(epsg->sorted + i); - if (p->srid == 4326 || (p->srid >= 32601 && p->srid <= 32766)) - ; - else - { - /* skipping not-WGS84 defs */ - continue; - } - - if (def_cnt > 100) - { - if (out != NULL) - { - if (pending_footer) - { - do_footer (out, 0); - pending_footer = 0; - } - - /* closing the output file */ - fclose (out); - out = NULL; - } - - /* opening the next output file */ - out = open_file_wgs84 (wgs84_sect); - if (out == NULL) - return; - - /* function header */ - do_header (out, 0); - fprintf (out, "SPATIALITE_PRIVATE void\n"); - fprintf (out, - "initialize_epsg_wgs84_%02d (int filter, struct epsg_defs **first, struct epsg_defs **last)\n", - wgs84_sect++); - fprintf (out, - "{\n/* initializing the EPSG defs list [WGS84] */\n"); - fprintf (out, " struct epsg_defs *p;\n"); - def_cnt = 0; - } - pending_footer = 1; - - /* inserting the main EPSG def */ - def_cnt++; - fprintf (out, - " p = add_epsg_def (filter, first, last, %d, \"epsg\", %d,\n", - p->srid, p->srid); - fprintf (out, " \"%s\");\n", p->ref_sys_name); - - /* inserting the proj4text string */ - n = 0; - in = p->proj4text; - while (*in != '\0') - { - fprintf (out, " add_proj4text (p, %d,\n \"", n); - out_cnt = 0; - while (*in != '\0') - { - if (*in == '"') - { - fprintf (out, "\\%c", *in++); - out_cnt += 2; - } - else - { - fprintf (out, "%c", *in++); - out_cnt++; - } - if (out_cnt >= 56) - break; - } - fprintf (out, "\");\n"); - n++; - } - - if (p->srs_wkt != NULL) - { - /* inserting the srs_wkt string */ - n = 0; - in = p->srs_wkt; - while (*in != '\0') - { - fprintf (out, " add_srs_wkt (p, %d,\n \"", n); - out_cnt = 0; - while (*in != '\0') - { - if (*in == '"') - { - fprintf (out, "\\%c", *in++); - out_cnt += 2; - } - else - { - fprintf (out, "%c", *in++); - out_cnt++; - } - if (out_cnt >= 56) - break; - } - fprintf (out, "\");\n"); - n++; - } - } - else - fprintf (out, " add_srs_wkt (p, 0, \"\");\n"); - } - if (out != NULL) - { - /* closing the output file */ - if (pending_footer) - { - do_footer (out, 0); - pending_footer = 0; - } - - /* closing the output file */ - fclose (out); - out = NULL; - } - -/* opening the "prussian" output file */ - out = open_file3 (); - if (out == NULL) - return; - -/* function header */ - do_header (out, 1); - do_prussian (out); - -/* function footer */ - do_footer (out, 1); - -/* closing the "prussian" output file */ - fclose (out); - out = NULL; - -/* opening the "extra" output file */ - out = open_file2 (); - if (out == NULL) - return; - -/* function header */ - do_header (out, 0); - fprintf (out, "/* declaring prototypes */\n"); - for (i = 0; i < sect; i++) - fprintf (out, - "SPATIALITE_PRIVATE void initialize_epsg_%02d (\n\tint filter, struct epsg_defs **first, struct epsg_defs **last);\n", - i); - for (i = 0; i < wgs84_sect; i++) - fprintf (out, - "SPATIALITE_PRIVATE void initialize_epsg_wgs84_%02d (\n\tint filter, struct epsg_defs **first, struct epsg_defs **last);\n", - i); - fprintf (out, - "SPATIALITE_PRIVATE void initialize_epsg_prussian (\n\tint filter, struct epsg_defs **first, struct epsg_defs **last);\n"); - fprintf (out, - "SPATIALITE_PRIVATE void initialize_epsg_extra (\n\tint filter, struct epsg_defs **first, struct epsg_defs **last);\n\n"); - - fprintf (out, "SPATIALITE_PRIVATE void\n"); - fprintf (out, - "initialize_epsg_extra (int filter, struct epsg_defs **first, struct epsg_defs **last)\n\n"); - fprintf (out, "{\n/* initializing the EPSG defs list [EXTRA] */\n"); - fprintf (out, " struct epsg_defs *p;\n"); - - fprintf (out, - " p = add_epsg_def (filter, first, last, 40000, \"gfoss.it\", 1,\n"); - fprintf (out, " \"Italy mainland zone 1 GB Roma40\");\n"); - fprintf (out, " add_proj4text (p, 0,\n"); - fprintf (out, - " \"+proj=tmerc+lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_\");\n"); - fprintf (out, " add_proj4text (p, 1,\n"); - fprintf (out, - " \"0=0 +ellps=intl +units=m +towgs84=-104.1,-49.1,-9.9,0.97\");\n"); - fprintf (out, - " add_proj4text (p, 2, \"1,-2.917,0.714,-11.68 +no_defs\");\n"); - fprintf (out, " add_srs_wkt (p, 0, \"\");\n"); - fprintf (out, - " p = add_epsg_def (filter, first, last, 40001, \"gfoss.it\", 2,\n"); - fprintf (out, " \"Italy mainland zone 2 GB Roma40\");\n"); - fprintf (out, " add_proj4text (p, 0,\n"); - fprintf (out, - " \"+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y\");\n"); - fprintf (out, " add_proj4text (p, 1,\n"); - fprintf (out, - " \"_0=0 +ellps=intl +units=m +towgs84=-104.1,-49.1,-9.9,0.9\");\n"); - fprintf (out, - " add_proj4text (p, 2, \"71,-2.917,0.714,-11.68 +no_defs\");\n"); - fprintf (out, " add_srs_wkt (p, 0, \"\");\n"); - fprintf (out, - " p = add_epsg_def (filter, first, last, 40002, \"gfoss.it\", 3,\n"); - fprintf (out, " \"Italy Sardinia GB Roma40\");\n"); - fprintf (out, " add_proj4text (p, 0,\n"); - fprintf (out, - " \"+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y\");\n"); - fprintf (out, " add_proj4text (p, 1,\n"); - fprintf (out, - " \"_0=0 +ellps=intl +units=m +towgs84=-168.6,-34.0,38.6,-0.\");\n"); - fprintf (out, - " add_proj4text (p, 2, \"374,-0.679,-1.379,-9.48 +no_defs\");\n"); - fprintf (out, " add_srs_wkt (p, 0, \"\");\n"); - fprintf (out, - " p = add_epsg_def (filter, first, last, 40003, \"gfoss.it\", 4,\n"); - fprintf (out, " \"Italy Sicily GB Roma40\");\n"); - fprintf (out, " add_proj4text (p, 0,\n"); - fprintf (out, - " \"+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y\");\n"); - fprintf (out, " add_proj4text (p, 1,\n"); - fprintf (out, - " \"_0=0 +ellps=intl +units=m +towgs84=-50.2,-50.4,84.8,-0.6\");\n"); - fprintf (out, - " add_proj4text (p, 2, \"90,-2.012,0.459,-28.08 +no_defs\");\n"); - fprintf (out, " add_srs_wkt (p, 0, \"\");\n"); - -/* function footer */ - do_footer (out, 0); - -/* inserting the pilot function */ - fprintf (out, "SPATIALITE_PRIVATE void\n"); - fprintf (out, - "initialize_epsg (int filter, struct epsg_defs **first, struct epsg_defs **last)\n"); - fprintf (out, "{\n/* initializing the EPSG defs list */\n"); - fprintf (out, " struct epsg_defs *p;\n "); - fprintf (out, "/* initializing the EPSG UNKNOWN def [-1] */\n"); - fprintf (out, - " p = add_epsg_def (filter, first, last, -1, \"NONE\", -1, \"Undefined - Cartesian\");\n"); - fprintf (out, " add_proj4text (p, 0, \"\");\n"); - fprintf (out, " add_srs_wkt (p, 0, \"\");\n"); - fprintf (out, - " p = add_epsg_def (filter, first, last, 0, \"NONE\", 0, \"Undefined - Geographic Long/Lat\");\n"); - fprintf (out, " add_proj4text (p, 0, \"\");\n"); - fprintf (out, " add_srs_wkt (p, 0, \"\");\n\n"); - fprintf (out, " if (filter != GAIA_EPSG_WGS84_ONLY)\n {\n"); - fprintf (out, - "#ifndef OMIT_EPSG /* full EPSG initialization enabled */\n"); - for (i = 0; i < sect; i++) - fprintf (out, - " initialize_epsg_%02d (filter, first, last);\n", i); - fprintf (out, " initialize_epsg_prussian (filter, first, last);\n"); - fprintf (out, " initialize_epsg_extra (filter, first, last);\n"); - fprintf (out, "#endif /* full EPSG initialization enabled/disabled */\n"); - - fprintf (out, " }\n"); - for (i = 0; i < wgs84_sect; i++) - fprintf (out, - " initialize_epsg_wgs84_%02d (filter, first, last);\n", i); - fprintf (out, "}\n"); - -/* closing the "extra" output file */ - fclose (out); - out = NULL; -} - -int -main (int argc, char *argv[]) -{ -/* -/ -/ Please note: no args are supported !!! -/ -/ we'll expect to find two input files respectively named: -/ - epsg -/ - wkt -/ -/ the C code will be generated into: epsg_inlined.c -/ -*/ - FILE *fl_epsg = NULL; - FILE *fl_wkt = NULL; - FILE *fl_out = NULL; - struct epsg_dict epsg; -/* initializing the EPSG dictionary */ - epsg.first = NULL; - epsg.last = NULL; - epsg.sorted = NULL; - epsg.count = 0; -/* opening the EPSG input file */ - fl_epsg = fopen ("epsg", "rb"); - if (fl_epsg == NULL) - { - fprintf (stderr, "ERROR: unable to open the \"epsg\" input file\n"); - goto stop; - } - -/* opening the WKT input file */ - fl_wkt = fopen ("wkt", "rb"); - if (fl_wkt == NULL) - { - fprintf (stderr, "ERROR: unable to open the \"wkt\" input file\n"); - goto stop; - } - - if (!parse_epsg (fl_epsg, &epsg)) - { - fprintf (stderr, "ERROR: malformed EPSG input file\n"); - goto stop; - } - - if (!parse_wkt (fl_wkt, &epsg)) - { - fprintf (stderr, "ERROR: malformed WKT input file\n"); - goto stop; - } - - if (!sort_epsg (&epsg)) - { - fprintf (stderr, "ERROR: unable to sort EPSG entries\n"); - goto stop; - } - - output_c_code (fl_out, &epsg); - stop: - free_epsg (&epsg); - if (fl_epsg) - fclose (fl_epsg); - if (fl_wkt) - fclose (fl_wkt); - if (fl_out) - fclose (fl_out); - return 0; -} diff --git a/src/spatialite/src/srsinit/srs_init.c b/src/spatialite/src/srsinit/srs_init.c deleted file mode 100644 index 8b59681..0000000 --- a/src/spatialite/src/srsinit/srs_init.c +++ /dev/null @@ -1,551 +0,0 @@ -/* - - srs_init.c -- populating the SPATIAL_REF_SYS table - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#include -#include -#include - -#include -#include - -#ifdef _WIN32 -#define strcasecmp _stricmp -#endif /* not WIN32 */ - -#include -#include - -static void -free_epsg_def (struct epsg_defs *ptr) -{ -/* memory cleanup - destroying an EPSG def item */ - if (ptr->auth_name) - free (ptr->auth_name); - if (ptr->ref_sys_name) - free (ptr->ref_sys_name); - if (ptr->proj4text) - free (ptr->proj4text); - if (ptr->srs_wkt) - free (ptr->srs_wkt); - free (ptr); -} - -SPATIALITE_PRIVATE struct epsg_defs * -add_epsg_def (int filter_srid, struct epsg_defs **first, - struct epsg_defs **last, int srid, const char *auth_name, - int auth_srid, const char *ref_sys_name) -{ -/* appending an EPSG def to the list */ - int len; - struct epsg_defs *p; - if (filter_srid == GAIA_EPSG_NONE) - return NULL; - if (filter_srid == GAIA_EPSG_ANY || filter_srid == GAIA_EPSG_WGS84_ONLY) - ; - else if (srid != filter_srid) - return NULL; - p = malloc (sizeof (struct epsg_defs)); - if (!p) - return NULL; - p->srid = srid; - p->auth_name = NULL; - p->auth_srid = auth_srid; - p->ref_sys_name = NULL; - p->proj4text = NULL; - p->srs_wkt = NULL; - p->next = NULL; - if (auth_name) - { - len = strlen (auth_name); - if (len > 0) - { - p->auth_name = malloc (len + 1); - if (p->auth_name == NULL) - goto error; - strcpy (p->auth_name, auth_name); - } - } - if (ref_sys_name) - { - len = strlen (ref_sys_name); - if (len > 0) - { - p->ref_sys_name = malloc (len + 1); - if (p->ref_sys_name == NULL) - goto error; - strcpy (p->ref_sys_name, ref_sys_name); - } - } - if (*first == NULL) - *first = p; - if (*last != NULL) - (*last)->next = p; - *last = p; - return p; - error: - free_epsg_def (p); - return NULL; -} - -SPATIALITE_PRIVATE void -add_proj4text (struct epsg_defs *p, int count, const char *text) -{ -/* creating the PROJ4TEXT string */ - int len; - int olen; - char *string; - if (p == NULL || text == NULL) - return; - len = strlen (text); - if (!count) - { - p->proj4text = malloc (len + 1); - if (p->proj4text == NULL) - return; - strcpy (p->proj4text, text); - return; - } - if (p->proj4text == NULL) - return; - olen = strlen (p->proj4text); - string = malloc (len + olen + 1); - if (string == NULL) - return; - strcpy (string, p->proj4text); - free (p->proj4text); - p->proj4text = string; - strcat (p->proj4text, text); -} - -SPATIALITE_PRIVATE void -add_srs_wkt (struct epsg_defs *p, int count, const char *text) -{ -/* creating the SRS_WKT string */ - int len; - int olen; - char *string; - if (p == NULL || text == NULL) - return; - len = strlen (text); - if (!count) - { - p->srs_wkt = malloc (len + 1); - if (p->srs_wkt == NULL) - return; - strcpy (p->srs_wkt, text); - return; - } - if (p->srs_wkt == NULL) - return; - olen = strlen (p->srs_wkt); - string = malloc (len + olen + 1); - if (string == NULL) - return; - strcpy (string, p->srs_wkt); - free (p->srs_wkt); - p->srs_wkt = string; - strcat (p->srs_wkt, text); -} - -static void -free_epsg (struct epsg_defs *first) -{ -/* memory cleanup - destroying the EPSG list */ - struct epsg_defs *p = first; - struct epsg_defs *pn; - while (p) - { - pn = p->next; - free_epsg_def (p); - p = pn; - } -} - -static int -populate_spatial_ref_sys (sqlite3 * handle, int mode) -{ -/* populating the EPSG dataset into the SPATIAL_REF_SYS table */ - struct epsg_defs *first = NULL; - struct epsg_defs *last = NULL; - struct epsg_defs *p; - char sql[1024]; - char *errMsg = NULL; - int ret; - sqlite3_stmt *stmt; - -/* initializing the EPSG defs list */ - initialize_epsg (mode, &first, &last); - -/* starting a transaction */ - ret = sqlite3_exec (handle, "BEGIN", NULL, 0, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("%s\n", errMsg); - sqlite3_free (errMsg); - goto error; - } - -/* preparing the SQL parameterized statement */ - strcpy (sql, "INSERT INTO spatial_ref_sys "); - strcat (sql, - "(srid, auth_name, auth_srid, ref_sys_name, proj4text, srtext) "); - strcat (sql, "VALUES (?, ?, ?, ?, ?, ?)"); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { - spatialite_e ("%s\n", sqlite3_errmsg (handle)); - goto error; - } - p = first; - while (p) - { - if (p->auth_name == NULL) - break; - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_int (stmt, 1, p->srid); - sqlite3_bind_text (stmt, 2, p->auth_name, strlen (p->auth_name), - SQLITE_STATIC); - sqlite3_bind_int (stmt, 3, p->auth_srid); - sqlite3_bind_text (stmt, 4, p->ref_sys_name, strlen (p->ref_sys_name), - SQLITE_STATIC); - sqlite3_bind_text (stmt, 5, p->proj4text, strlen (p->proj4text), - SQLITE_STATIC); - if (strlen (p->srs_wkt) == 0) - sqlite3_bind_text (stmt, 6, "Undefined", 9, SQLITE_STATIC); - else - sqlite3_bind_text (stmt, 6, p->srs_wkt, strlen (p->srs_wkt), - SQLITE_STATIC); - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("%s\n", sqlite3_errmsg (handle)); - sqlite3_finalize (stmt); - goto error; - } - p = p->next; - } - sqlite3_finalize (stmt); - -/* confirming the transaction */ - ret = sqlite3_exec (handle, "COMMIT", NULL, 0, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("%s\n", errMsg); - sqlite3_free (errMsg); - goto error; - } - -/* freeing the EPSG defs list */ - free_epsg (first); - - return 1; - error: -/* trying to perform a ROLLBACK anyway */ - ret = sqlite3_exec (handle, "ROLLBACK", NULL, 0, &errMsg); - if (ret != SQLITE_OK) - { - spatialite_e ("%s\n", errMsg); - sqlite3_free (errMsg); - } - -/* freeing the EPSG defs list */ - free_epsg (first); - - return 0; -} - -static int -exists_spatial_ref_sys (sqlite3 * handle) -{ -/* checking if the SPATIAL_REF_SYS table exists */ - int ret; - int ok = 0; - char sql[1024]; - char **results; - int n_rows; - int n_columns; - char *err_msg = NULL; - - strcpy (sql, - "SELECT name FROM sqlite_master WHERE type = 'table' AND name LIKE 'spatial_ref_sys'"); - ret = - sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, - &err_msg); - if (ret != SQLITE_OK) - { -/* some error occurred */ - spatialite_e ("XX %s\n", err_msg); - sqlite3_free (err_msg); - return 0; - } - if (n_rows > 0) - ok = 1; - sqlite3_free_table (results); - return ok; -} - -static int -check_spatial_ref_sys (sqlite3 * handle) -{ -/* checking if the SPATIAL_REF_SYS table has an appropriate layout */ - int ret; - int i; - const char *name; - char sql[1024]; - char **results; - int n_rows; - int n_columns; - char *err_msg = NULL; - int rs_srid = 0; - int auth_name = 0; - int auth_srid = 0; - int ref_sys_name = 0; - int proj4text = 0; - int srtext = 0; - - strcpy (sql, "PRAGMA table_info(spatial_ref_sys)"); - ret = - sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, - &err_msg); - if (ret != SQLITE_OK) - { -/* some error occurred */ - spatialite_e ("%s\n", err_msg); - sqlite3_free (err_msg); - return 0; - } - if (n_rows > 0) - { - for (i = 1; i <= n_rows; i++) - { - name = results[(i * n_columns) + 1]; - if (strcasecmp (name, "srid") == 0) - rs_srid = 1; - if (strcasecmp (name, "auth_name") == 0) - auth_name = 1; - if (strcasecmp (name, "auth_srid") == 0) - auth_srid = 1; - if (strcasecmp (name, "ref_sys_name") == 0) - ref_sys_name = 1; - if (strcasecmp (name, "proj4text") == 0) - proj4text = 1; - if (strcasecmp (name, "srtext") == 0) - srtext = 1; - } - } - sqlite3_free_table (results); - if (rs_srid && auth_name && auth_srid && ref_sys_name && proj4text - && srtext) - ret = 1; - else - ret = 0; - return ret; -} - -static int -spatial_ref_sys_count (sqlite3 * handle) -{ -/* checking if the SPATIAL_REF_SYS table is empty */ - int ret; - int i; - int count = 0; - char sql[1024]; - char **results; - int n_rows; - int n_columns; - char *err_msg = NULL; - - strcpy (sql, "SELECT Count(*) FROM spatial_ref_sys"); - ret = - sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, - &err_msg); - if (ret != SQLITE_OK) - { -/* some error occurred */ - spatialite_e ("%s\n", err_msg); - sqlite3_free (err_msg); - return 0; - } - if (n_rows > 0) - { - for (i = 1; i <= n_rows; i++) - { - count = atoi (results[(i * n_columns) + 0]); - } - } - sqlite3_free_table (results); - return count; -} - -SPATIALITE_DECLARE int -spatial_ref_sys_init (sqlite3 * handle, int verbose) -{ -/* -/ deprecated function -/ [still supported simply not to break API-level back-compatibility] -*/ - return spatial_ref_sys_init2 (handle, GAIA_EPSG_ANY, verbose); -} - -SPATIALITE_DECLARE int -spatial_ref_sys_init2 (sqlite3 * handle, int mode, int verbose) -{ -/* populating the EPSG dataset into the SPATIAL_REF_SYS table */ - if (!exists_spatial_ref_sys (handle)) - { - if (verbose) - spatialite_e ("the SPATIAL_REF_SYS table doesn't exists\n"); - return 0; - } - if (!check_spatial_ref_sys (handle)) - { - if (verbose) - spatialite_e - ("the SPATIAL_REF_SYS table has an unsupported layout\n"); - return 0; - } - if (spatial_ref_sys_count (handle)) - { - if (verbose) - spatialite_e - ("the SPATIAL_REF_SYS table already contains some row(s)\n"); - return 0; - } - if (mode == GAIA_EPSG_ANY || mode == GAIA_EPSG_NONE - || mode == GAIA_EPSG_WGS84_ONLY) - ; - else - mode = GAIA_EPSG_ANY; - if (populate_spatial_ref_sys (handle, mode)) - { - if (verbose && mode != GAIA_EPSG_NONE) - spatialite_e - ("OK: the SPATIAL_REF_SYS table was successfully populated\n"); - return 1; - } - return 0; -} - -SPATIALITE_DECLARE int -insert_epsg_srid (sqlite3 * handle, int srid) -{ -/* inserting a single EPSG definition into the SPATIAL_REF_SYS table */ - struct epsg_defs *first = NULL; - struct epsg_defs *last = NULL; - char sql[1024]; - int ret; - int error = 0; - sqlite3_stmt *stmt; - - if (!exists_spatial_ref_sys (handle)) - { - spatialite_e ("the SPATIAL_REF_SYS table doesn't exists\n"); - return 0; - } - if (!check_spatial_ref_sys (handle)) - { - spatialite_e - ("the SPATIAL_REF_SYS table has an unsupported layout\n"); - return 0; - } - -/* initializing the EPSG defs list */ - initialize_epsg (srid, &first, &last); - if (first == NULL) - { - spatialite_e ("SRID=%d isn't defined in the EPSG inlined dataset\n", - srid); - return 0; - } - -/* preparing the SQL parameterized statement */ - strcpy (sql, "INSERT INTO spatial_ref_sys "); - strcat (sql, - "(srid, auth_name, auth_srid, ref_sys_name, proj4text, srtext) "); - strcat (sql, "VALUES (?, ?, ?, ?, ?, ?)"); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - if (ret != SQLITE_OK) - { - spatialite_e ("%s\n", sqlite3_errmsg (handle)); - error = 1; - goto stop; - } - sqlite3_reset (stmt); - sqlite3_clear_bindings (stmt); - sqlite3_bind_int (stmt, 1, first->srid); - sqlite3_bind_text (stmt, 2, first->auth_name, strlen (first->auth_name), - SQLITE_STATIC); - sqlite3_bind_int (stmt, 3, first->auth_srid); - sqlite3_bind_text (stmt, 4, first->ref_sys_name, - strlen (first->ref_sys_name), SQLITE_STATIC); - sqlite3_bind_text (stmt, 5, first->proj4text, strlen (first->proj4text), - SQLITE_STATIC); - if (strlen (first->srs_wkt) == 0) - sqlite3_bind_text (stmt, 6, "Undefined", 9, SQLITE_STATIC); - else - sqlite3_bind_text (stmt, 6, first->srs_wkt, strlen (first->srs_wkt), - SQLITE_STATIC); - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE || ret == SQLITE_ROW) - ; - else - { - spatialite_e ("%s\n", sqlite3_errmsg (handle)); - error = 1; - goto stop; - } - stop: - if (stmt != NULL) - sqlite3_finalize (stmt); - -/* freeing the EPSG defs list */ - free_epsg (first); - if (error) - return 0; - return 1; -} diff --git a/src/spatialite/src/versioninfo/version.c b/src/spatialite/src/versioninfo/version.c deleted file mode 100644 index e28dd26..0000000 --- a/src/spatialite/src/versioninfo/version.c +++ /dev/null @@ -1,61 +0,0 @@ -/* - version.c -- Gaia spatial support for SQLite - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include - -#include - -const char spatialiteversion[] = VERSION; - -SPATIALITE_DECLARE const char * -spatialite_version (void) -{ - return spatialiteversion; -} diff --git a/src/spatialite/src/virtualtext/Makefile.am b/src/spatialite/src/virtualtext/Makefile.am deleted file mode 100644 index 396c87f..0000000 --- a/src/spatialite/src/virtualtext/Makefile.am +++ /dev/null @@ -1,9 +0,0 @@ - -INCLUDES = @CFLAGS@ -INCLUDES += -I$(top_srcdir)/src/headers - -noinst_LTLIBRARIES = libvirtualtext.la - -libvirtualtext_la_SOURCES = virtualtext.c - -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda diff --git a/src/spatialite/src/virtualtext/Makefile.in b/src/spatialite/src/virtualtext/Makefile.in deleted file mode 100644 index 84b526c..0000000 --- a/src/spatialite/src/virtualtext/Makefile.in +++ /dev/null @@ -1,508 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ - -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -subdir = src/virtualtext -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -LTLIBRARIES = $(noinst_LTLIBRARIES) -libvirtualtext_la_LIBADD = -am_libvirtualtext_la_OBJECTS = virtualtext.lo -libvirtualtext_la_OBJECTS = $(am_libvirtualtext_la_OBJECTS) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = $(libvirtualtext_la_SOURCES) -DIST_SOURCES = $(libvirtualtext_la_SOURCES) -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = @CFLAGS@ -I$(top_srcdir)/src/headers -noinst_LTLIBRARIES = libvirtualtext.la -libvirtualtext_la_SOURCES = virtualtext.c -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/virtualtext/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign src/virtualtext/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-noinstLTLIBRARIES: - -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) - @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \ - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \ - test "$$dir" != "$$p" || dir=.; \ - echo "rm -f \"$${dir}/so_locations\""; \ - rm -f "$${dir}/so_locations"; \ - done -libvirtualtext.la: $(libvirtualtext_la_OBJECTS) $(libvirtualtext_la_DEPENDENCIES) $(EXTRA_libvirtualtext_la_DEPENDENCIES) - $(LINK) $(libvirtualtext_la_OBJECTS) $(libvirtualtext_la_LIBADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/virtualtext.Plo@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am -check: check-am -all-am: Makefile $(LTLIBRARIES) -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \ - clean-libtool clean-noinstLTLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-libtool \ - distclean-tags distdir dvi dvi-am html html-am info info-am \ - install install-am install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic mostlyclean-libtool \ - pdf pdf-am ps ps-am tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/src/virtualtext/virtualtext.c b/src/spatialite/src/virtualtext/virtualtext.c deleted file mode 100644 index 636b763..0000000 --- a/src/spatialite/src/virtualtext/virtualtext.c +++ /dev/null @@ -1,1803 +0,0 @@ -/* - - virtualtext.c -- SQLite3 extension [VIRTUAL TABLE accessing CSV/TXT] - - version 4.0, 2012 August 6 - - Author: Sandro Furieri a.furieri@lqt.it - - ----------------------------------------------------------------------------- - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2008-2012 -the Initial Developer. All Rights Reserved. - -Contributor(s): - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ - -#if defined(_WIN32) && !defined(__MINGW32__) -/* MSVC strictly requires this include [off_t] */ -#include -#endif - -#include -#include -#include - -#if defined(_WIN32) && !defined(__MINGW32__) -#include "config-msvc.h" -#else -#include "config.h" -#endif - -#include -#include - -#include -#include -#include - -#ifdef _WIN32 -#define strcasecmp _stricmp -#endif /* not WIN32 */ - -#if OMIT_ICONV == 0 /* if ICONV is disabled no TXT support is available */ - -struct sqlite3_module virtualtext_module; - -typedef struct VirtualTextStruct -{ -/* extends the sqlite3_vtab struct */ - const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ - int nRef; /* # references: USED INTERNALLY BY SQLITE */ - char *zErrMsg; /* error message: USED INTERNALLY BY SQLITE */ - sqlite3 *db; /* the sqlite db holding the virtual table */ - gaiaTextReaderPtr reader; /* the TextReader object */ -} VirtualText; -typedef VirtualText *VirtualTextPtr; - -typedef struct VirtualTextConstraintStruct -{ -/* a constraint to be verified for xFilter */ - int iColumn; /* Column on left-hand side of constraint */ - int op; /* Constraint operator */ - char valueType; /* value Type ('I'=int,'D'=double,'T'=text) */ - sqlite3_int64 intValue; /* Int64 comparison value */ - double dblValue; /* Double comparison value */ - char *txtValue; /* Text comparison value */ - struct VirtualTextConstraintStruct *next; -} VirtualTextConstraint; -typedef VirtualTextConstraint *VirtualTextConstraintPtr; - -typedef struct VirtualTextCursortStruct -{ -/* extends the sqlite3_vtab_cursor struct */ - VirtualTextPtr pVtab; /* Virtual table of this cursor */ - long current_row; /* the current row ID */ - int eof; /* the EOF marker */ - VirtualTextConstraintPtr firstConstraint; - VirtualTextConstraintPtr lastConstraint; -} VirtualTextCursor; -typedef VirtualTextCursor *VirtualTextCursorPtr; - -static void -text_clean_integer (char *value) -{ -/* cleaning an integer value */ - char last; - char buffer[35536]; - int len = strlen (value); - last = value[len - 1]; - if (last == '-' || last == '+') - { - /* trailing sign; transforming into a leading sign */ - *buffer = last; - strcpy (buffer + 1, value); - buffer[len - 1] = '\0'; - strcpy (value, buffer); - } -} - -static void -text_clean_double (char *value) -{ -/* cleaning an integer value */ - char *p; - char last; - char buffer[35536]; - int len = strlen (value); - last = value[len - 1]; - if (last == '-' || last == '+') - { - /* trailing sign; transforming into a leading sign */ - *buffer = last; - strcpy (buffer + 1, value); - buffer[len - 1] = '\0'; - strcpy (value, buffer); - } - p = value; - while (*p != '\0') - { - /* transforming COMMAs into POINTs */ - if (*p == ',') - *p = '.'; - p++; - } -} - -static int -vtxt_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* creates the virtual table connected to some TEXT file */ - char path[2048]; - char encoding[128]; - const char *vtable; - const char *pEncoding = NULL; - int len; - gaiaTextReaderPtr text = NULL; - const char *pPath = NULL; - char field_separator = '\t'; - char text_separator = '"'; - char decimal_separator = '.'; - char first_line_titles = 1; - int i; - char sql[65535]; - int seed; - int dup; - int idup; - char dummyName[4096]; - char **col_name = NULL; - VirtualTextPtr p_vt; - if (pAux) - pAux = pAux; /* unused arg warning suppression */ -/* checking for TEXTfile PATH */ - if (argc >= 5 && argc <= 9) - { - vtable = argv[1]; - pPath = argv[3]; - len = strlen (pPath); - if ((*(pPath + 0) == '\'' || *(pPath + 0) == '"') - && (*(pPath + len - 1) == '\'' || *(pPath + len - 1) == '"')) - { - /* the path is enclosed between quotes - we need to dequote it */ - strcpy (path, pPath + 1); - len = strlen (path); - *(path + len - 1) = '\0'; - } - else - strcpy (path, pPath); - pEncoding = argv[4]; - len = strlen (pEncoding); - if ((*(pEncoding + 0) == '\'' || *(pEncoding + 0) == '"') - && (*(pEncoding + len - 1) == '\'' - || *(pEncoding + len - 1) == '"')) - { - /* the charset-name is enclosed between quotes - we need to dequote it */ - strcpy (encoding, pEncoding + 1); - len = strlen (encoding); - *(encoding + len - 1) = '\0'; - } - else - strcpy (encoding, pEncoding); - if (argc >= 6) - { - if (*(argv[5]) == '0' || *(argv[5]) == 'n' || *(argv[5]) == 'N') - first_line_titles = 0; - } - if (argc >= 7) - { - if (strcasecmp (argv[6], "COMMA") == 0) - decimal_separator = ','; - if (strcasecmp (argv[6], "POINT") == 0) - decimal_separator = '.'; - } - if (argc >= 8) - { - if (strcasecmp (argv[7], "SINGLEQUOTE") == 0) - text_separator = '\''; - if (strcasecmp (argv[7], "DOUBLEQUOTE") == 0) - text_separator = '"'; - if (strcasecmp (argv[7], "NONE") == 0) - text_separator = '\0'; - } - if (argc == 9) - { - if (strlen (argv[8]) == 3) - { - if (strcasecmp (argv[8], "TAB") == 0) - field_separator = '\t'; - if (*(argv[8] + 0) == '\'' && *(argv[8] + 2) == '\'') - field_separator = *(argv[8] + 1); - } - } - } - else - { - *pzErr = - sqlite3_mprintf - ("[VirtualText module] CREATE VIRTUAL: illegal arg list\n" - "\t\t{ text_path, encoding [, first_row_as_titles [, [decimal_separator [, text_separator, [field_separator] ] ] ] }\n"); - return SQLITE_ERROR; - } - p_vt = (VirtualTextPtr) sqlite3_malloc (sizeof (VirtualText)); - if (!p_vt) - return SQLITE_NOMEM; - p_vt->pModule = &virtualtext_module; - p_vt->nRef = 0; - p_vt->zErrMsg = NULL; - p_vt->db = db; - text = gaiaTextReaderAlloc (path, field_separator, - text_separator, decimal_separator, - first_line_titles, encoding); - if (text) - { - if (gaiaTextReaderParse (text) == 0) - { - gaiaTextReaderDestroy (text); - text = NULL; - } - } - if (!text) - { - /* something is going the wrong way; creating a stupid default table */ - spatialite_e ("VirtualText: invalid data source\n"); - sprintf (sql, "CREATE TABLE %s (ROWNO INTEGER)", vtable); - if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) - { - *pzErr = - sqlite3_mprintf - ("[VirtualText module] cannot build a table from TEXT file\n"); - return SQLITE_ERROR; - } - p_vt->reader = NULL; - *ppVTab = (sqlite3_vtab *) p_vt; - return SQLITE_OK; - } - p_vt->reader = text; -/* preparing the COLUMNs for this VIRTUAL TABLE */ - sprintf (sql, "CREATE TABLE %s (ROWNO INTEGER", vtable); - col_name = malloc (sizeof (char *) * text->max_fields); - seed = 0; - for (i = 0; i < text->max_fields; i++) - { - strcat (sql, ", "); - sprintf (dummyName, "\"%s\"", text->columns[i].name); - dup = 0; - for (idup = 0; idup < i; idup++) - { - if (strcasecmp (dummyName, *(col_name + idup)) == 0) - dup = 1; - } - if (strcasecmp (dummyName, "ROWNO") == 0) - dup = 1; - if (dup) - sprintf (dummyName, "DUPCOL_%d", seed++); - len = strlen (dummyName); - *(col_name + i) = malloc (len + 1); - strcpy (*(col_name + i), dummyName); - strcat (sql, dummyName); - if (text->columns[i].type == VRTTXT_INTEGER) - strcat (sql, " INTEGER"); - else if (text->columns[i].type == VRTTXT_DOUBLE) - strcat (sql, " DOUBLE"); - else - strcat (sql, " TEXT"); - } - strcat (sql, ")"); - if (col_name) - { - /* releasing memory allocation for column names */ - for (i = 0; i < text->max_fields; i++) - free (*(col_name + i)); - free (col_name); - } - if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) - { - *pzErr = - sqlite3_mprintf - ("[VirtualText module] CREATE VIRTUAL: invalid SQL statement \"%s\"", - sql); - return SQLITE_ERROR; - } - *ppVTab = (sqlite3_vtab *) p_vt; - return SQLITE_OK; -} - -static int -vtxt_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, - sqlite3_vtab ** ppVTab, char **pzErr) -{ -/* connects the virtual table to some shapefile - simply aliases vshp_create() */ - return vtxt_create (db, pAux, argc, argv, ppVTab, pzErr); -} - -static int -vtxt_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIndex) -{ -/* best index selection */ - int i; - int iArg = 0; - char str[2048]; - char buf[64]; - - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - - *str = '\0'; - for (i = 0; i < pIndex->nConstraint; i++) - { - if (pIndex->aConstraint[i].usable) - { - iArg++; - pIndex->aConstraintUsage[i].argvIndex = iArg; - pIndex->aConstraintUsage[i].omit = 1; - sprintf (buf, "%d:%d,", pIndex->aConstraint[i].iColumn, - pIndex->aConstraint[i].op); - strcat (str, buf); - } - } - if (*str != '\0') - { - pIndex->idxStr = sqlite3_mprintf ("%s", str); - pIndex->needToFreeIdxStr = 1; - } - - return SQLITE_OK; -} - -static int -vtxt_disconnect (sqlite3_vtab * pVTab) -{ -/* disconnects the virtual table */ - VirtualTextPtr p_vt = (VirtualTextPtr) pVTab; - if (p_vt->reader) - gaiaTextReaderDestroy (p_vt->reader); - sqlite3_free (p_vt); - return SQLITE_OK; -} - -static int -vtxt_destroy (sqlite3_vtab * pVTab) -{ -/* destroys the virtual table - simply aliases vtxt_disconnect() */ - return vtxt_disconnect (pVTab); -} - -static int -vtxt_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) -{ -/* opening a new cursor */ - gaiaTextReaderPtr text; - VirtualTextCursorPtr cursor = - (VirtualTextCursorPtr) sqlite3_malloc (sizeof (VirtualTextCursor)); - if (cursor == NULL) - return SQLITE_NOMEM; - cursor->pVtab = (VirtualTextPtr) pVTab; - cursor->current_row = 0; - cursor->eof = 0; - cursor->firstConstraint = NULL; - cursor->lastConstraint = NULL; - *ppCursor = (sqlite3_vtab_cursor *) cursor; - text = cursor->pVtab->reader; - if (!text) - cursor->eof = 1; - else - { - if (!gaiaTextReaderGetRow (text, cursor->current_row)) - cursor->eof = 1; - } - return SQLITE_OK; -} - - -static void -vtxt_free_constraints (VirtualTextCursorPtr cursor) -{ -/* memory cleanup - cursor constraints */ - VirtualTextConstraintPtr pC; - VirtualTextConstraintPtr pCn; - pC = cursor->firstConstraint; - while (pC) - { - pCn = pC->next; - if (pC->txtValue) - sqlite3_free (pC->txtValue); - sqlite3_free (pC); - pC = pCn; - } - cursor->firstConstraint = NULL; - cursor->lastConstraint = NULL; -} - -static int -vtxt_close (sqlite3_vtab_cursor * pCursor) -{ -/* closing the cursor */ - VirtualTextCursorPtr cursor = (VirtualTextCursorPtr) pCursor; - vtxt_free_constraints (cursor); - sqlite3_free (cursor); - return SQLITE_OK; -} - - -static int -vtxt_parse_constraint (const char *str, int index, int *iColumn, int *op) -{ -/* parsing a constraint string */ - char buf[64]; - const char *in = str; - char *out = buf; - int i = 0; - int found = 0; - - *out = '\0'; - while (*in != '\0') - { - if (*in == ',') - { - if (index == i) - { - *out = '\0'; - found = 1; - break; - } - i++; - in++; - continue; - } - if (index == i) - *out++ = *in; - in++; - } - if (!found) - return 0; - in = buf; - for (i = 0; i < (int) strlen (buf); i++) - { - if (buf[i] == ':') - { - buf[i] = '\0'; - *iColumn = atoi (buf); - *op = atoi (buf + i + 1); - return 1; - } - in++; - } - return 0; -} - -static int -vtxt_eval_constraints (VirtualTextCursorPtr cursor) -{ -/* evaluating Filter constraints */ - int nCol; - int i; - char buf[4096]; - int type; - const char *value = NULL; - sqlite3_int64 int_value; - double dbl_value; - char *txt_value = NULL; - int is_int = 0; - int is_dbl = 0; - int is_txt = 0; - gaiaTextReaderPtr text = cursor->pVtab->reader; - VirtualTextConstraintPtr pC; - if (text->current_line_ready == 0) - return SQLITE_ERROR; - pC = cursor->firstConstraint; - while (pC) - { - int ok = 0; - if (pC->iColumn == 0) - { - /* the ROWNO column */ - int_value = cursor->current_row; - is_int = 1; - goto eval; - } - nCol = 1; - for (i = 0; i < text->max_fields; i++) - { - is_int = 0; - is_dbl = 0; - is_txt = 0; - if (nCol == pC->iColumn) - { - - if (!gaiaTextReaderFetchField (text, i, &type, &value)) - ; - else - { - if (type == VRTTXT_INTEGER) - { - strcpy (buf, value); - text_clean_integer (buf); -#if defined(_WIN32) || defined(__MINGW32__) -/* CAVEAT - M$ runtime has non-standard functions for 64 bits */ - int_value = _atoi64 (buf); -#else - int_value = atoll (buf); -#endif - is_int = 1; - } - else if (type == VRTTXT_DOUBLE) - { - strcpy (buf, value); - text_clean_double (buf); - dbl_value = atof (buf); - is_dbl = 1; - } - else if (type == VRTTXT_TEXT) - { - txt_value = (char *) value; - is_txt = 1; - } - } - goto eval; - } - nCol++; - } - return 0; - eval: - ok = 0; - if (pC->valueType == 'I') - { - if (is_int) - { - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (int_value == pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (int_value > pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (int_value <= pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (int_value < pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (int_value >= pC->intValue) - ok = 1; - break; - }; - } - if (is_dbl) - { - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (dbl_value == pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (dbl_value > pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (dbl_value <= pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (dbl_value < pC->intValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (dbl_value >= pC->intValue) - ok = 1; - break; - }; - } - } - if (pC->valueType == 'D') - { - if (is_int) - { - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (int_value == pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (int_value > pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (int_value <= pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (int_value < pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (int_value >= pC->dblValue) - ok = 1; - break; - }; - } - if (is_dbl) - { - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (dbl_value == pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (dbl_value > pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (dbl_value <= pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (dbl_value < pC->dblValue) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (dbl_value >= pC->dblValue) - ok = 1; - break; - }; - } - } - if (pC->valueType == 'T') - { - if (is_txt) - { - int ret = strcmp (txt_value, pC->txtValue); - switch (pC->op) - { - case SQLITE_INDEX_CONSTRAINT_EQ: - if (ret == 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GT: - if (ret > 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LE: - if (ret <= 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_LT: - if (ret < 0) - ok = 1; - break; - case SQLITE_INDEX_CONSTRAINT_GE: - if (ret >= 0) - ok = 1; - break; - }; - } - } - if (txt_value) - { - free (txt_value); - txt_value = NULL; - } - if (!ok) - return 0; - pC = pC->next; - } - if (txt_value) - free (txt_value); - return 1; -} - -static int -vtxt_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, - int argc, sqlite3_value ** argv) -{ -/* setting up a cursor filter */ - int i; - int iColumn; - int op; - int len; - VirtualTextConstraintPtr pC; - VirtualTextCursorPtr cursor = (VirtualTextCursorPtr) pCursor; - gaiaTextReaderPtr text = cursor->pVtab->reader; - if (idxNum) - idxNum = idxNum; /* unused arg warning suppression */ - -/* resetting any previously set filter constraint */ - vtxt_free_constraints (cursor); - - for (i = 0; i < argc; i++) - { - if (!vtxt_parse_constraint (idxStr, i, &iColumn, &op)) - continue; - pC = sqlite3_malloc (sizeof (VirtualTextConstraint)); - if (!pC) - continue; - pC->iColumn = iColumn; - pC->op = op; - pC->valueType = '\0'; - pC->txtValue = NULL; - pC->next = NULL; - - if (sqlite3_value_type (argv[i]) == SQLITE_INTEGER) - { - pC->valueType = 'I'; - pC->intValue = sqlite3_value_int64 (argv[i]); - } - if (sqlite3_value_type (argv[i]) == SQLITE_FLOAT) - { - pC->valueType = 'D'; - pC->dblValue = sqlite3_value_double (argv[i]); - } - if (sqlite3_value_type (argv[i]) == SQLITE_TEXT) - { - pC->valueType = 'T'; - len = sqlite3_value_bytes (argv[i]) + 1; - pC->txtValue = (char *) sqlite3_malloc (len); - if (pC->txtValue) - strcpy (pC->txtValue, - (char *) sqlite3_value_text (argv[i])); - } - if (cursor->firstConstraint == NULL) - cursor->firstConstraint = pC; - if (cursor->lastConstraint != NULL) - cursor->lastConstraint->next = pC; - cursor->lastConstraint = pC; - } - - cursor->current_row = 0; - cursor->eof = 0; - while (1) - { - if (!gaiaTextReaderGetRow (text, cursor->current_row)) - { - cursor->eof = 1; - break; - } - if (vtxt_eval_constraints (cursor)) - break; - cursor->current_row++; - } - return SQLITE_OK; -} - -static int -vtxt_next (sqlite3_vtab_cursor * pCursor) -{ -/* fetching next row from cursor */ - VirtualTextCursorPtr cursor = (VirtualTextCursorPtr) pCursor; - gaiaTextReaderPtr text = cursor->pVtab->reader; - if (!text) - cursor->eof = 1; - else - { - while (1) - { - cursor->current_row++; - if (!gaiaTextReaderGetRow (text, cursor->current_row)) - { - cursor->eof = 1; - break; - } - if (vtxt_eval_constraints (cursor)) - break; - } - } - return SQLITE_OK; -} - -static int -vtxt_eof (sqlite3_vtab_cursor * pCursor) -{ -/* cursor EOF */ - VirtualTextCursorPtr cursor = (VirtualTextCursorPtr) pCursor; - return cursor->eof; -} - -static int -vtxt_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, - int column) -{ -/* fetching value for the Nth column */ - int nCol = 1; - int i; - char buf[4096]; - int type; - const char *value; - VirtualTextCursorPtr cursor = (VirtualTextCursorPtr) pCursor; - gaiaTextReaderPtr text = cursor->pVtab->reader; - if (column == 0) - { - /* the ROWNO column */ - sqlite3_result_int (pContext, cursor->current_row); - return SQLITE_OK; - } - if (text->current_line_ready == 0) - return SQLITE_ERROR; - for (i = 0; i < text->max_fields; i++) - { - if (nCol == column) - { - if (!gaiaTextReaderFetchField (text, i, &type, &value)) - sqlite3_result_null (pContext); - else - { - if (type == VRTTXT_INTEGER) - { - strcpy (buf, value); - text_clean_integer (buf); -#if defined(_WIN32) || defined(__MINGW32__) -/* CAVEAT - M$ runtime has non-standard functions for 64 bits */ - sqlite3_result_int64 (pContext, _atoi64 (buf)); -#else - sqlite3_result_int64 (pContext, atoll (buf)); -#endif - } - else if (type == VRTTXT_DOUBLE) - { - strcpy (buf, value); - text_clean_double (buf); - sqlite3_result_double (pContext, atof (buf)); - } - else if (type == VRTTXT_TEXT) - sqlite3_result_text (pContext, value, strlen (value), - free); - else - sqlite3_result_null (pContext); - } - } - nCol++; - } - return SQLITE_OK; -} - -static int -vtxt_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) -{ -/* fetching the ROWID */ - VirtualTextCursorPtr cursor = (VirtualTextCursorPtr) pCursor; - *pRowid = cursor->current_row; - return SQLITE_OK; -} - -static int -vtxt_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, - sqlite_int64 * pRowid) -{ -/* generic update [INSERT / UPDATE / DELETE */ - if (pVTab || argc || argv || pRowid) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_READONLY; -} - -static int -vtxt_begin (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vtxt_sync (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vtxt_commit (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -static int -vtxt_rollback (sqlite3_vtab * pVTab) -{ -/* BEGIN TRANSACTION */ - if (pVTab) - pVTab = pVTab; /* unused arg warning suppression */ - return SQLITE_OK; -} - -int -sqlite3VirtualTextInit (sqlite3 * db) -{ - int rc = SQLITE_OK; - virtualtext_module.iVersion = 1; - virtualtext_module.xCreate = &vtxt_create; - virtualtext_module.xConnect = &vtxt_connect; - virtualtext_module.xBestIndex = &vtxt_best_index; - virtualtext_module.xDisconnect = &vtxt_disconnect; - virtualtext_module.xDestroy = &vtxt_destroy; - virtualtext_module.xOpen = &vtxt_open; - virtualtext_module.xClose = &vtxt_close; - virtualtext_module.xFilter = &vtxt_filter; - virtualtext_module.xNext = &vtxt_next; - virtualtext_module.xEof = &vtxt_eof; - virtualtext_module.xColumn = &vtxt_column; - virtualtext_module.xRowid = &vtxt_rowid; - virtualtext_module.xUpdate = &vtxt_update; - virtualtext_module.xBegin = &vtxt_begin; - virtualtext_module.xSync = &vtxt_sync; - virtualtext_module.xCommit = &vtxt_commit; - virtualtext_module.xRollback = &vtxt_rollback; - virtualtext_module.xFindFunction = NULL; - sqlite3_create_module_v2 (db, "VirtualText", &virtualtext_module, NULL, 0); - return rc; -} - -int -virtualtext_extension_init (sqlite3 * db) -{ - return sqlite3VirtualTextInit (db); -} - -/* -** -** TextReader implementation -** -*/ - -static struct vrttxt_row_block * -vrttxt_block_alloc () -{ -/* allocating a rows Block */ - struct vrttxt_row_block *p = malloc (sizeof (struct vrttxt_row_block)); - if (!p) - return NULL; - p->num_rows = 0; - p->min_line_no = -1; - p->max_line_no = -1; - p->next = NULL; - return p; -} - -static void -vrttxt_block_destroy (struct vrttxt_row_block *p) -{ -/* destroying a rows Block */ - if (p) - free (p); -} - -GAIAGEO_DECLARE void -gaiaTextReaderDestroy (gaiaTextReaderPtr reader) -{ -/* destroying the main TXT-Reader */ - int col; - struct vrttxt_row_block *blk; - struct vrttxt_row_block *blkN; - if (reader) - { - blk = reader->first; - while (blk) - { - /* destroying the row offset Blocks */ - blkN = blk->next; - vrttxt_block_destroy (blk); - blk = blkN; - } - /* freeing the input buffers */ - if (reader->line_buffer) - free (reader->line_buffer); - if (reader->field_buffer) - free (reader->field_buffer); - /* freeing the row offsets array */ - if (reader->rows) - free (reader->rows); - /* closing the input file */ - fclose (reader->text_file); - for (col = 0; col < VRTTXT_FIELDS_MAX; col++) - { - /* destroying column headers */ - if (reader->columns[col].name != NULL) - free (reader->columns[col].name); - } - gaiaFreeUTF8Converter (reader->toUtf8); - free (reader); - } -} - -GAIAGEO_DECLARE gaiaTextReaderPtr -gaiaTextReaderAlloc (const char *path, char field_separator, - char text_separator, char decimal_separator, - int first_line_titles, const char *encoding) -{ -/* allocating the main TXT-Reader */ - int col; - gaiaTextReaderPtr reader; - FILE *in = fopen (path, "rb"); /* opening the input file */ - if (in == NULL) - return NULL; - -/* allocating and initializing the struct */ - reader = malloc (sizeof (gaiaTextReader)); - if (!reader) - { - fclose (in); - return NULL; - } - reader->text_file = in; - reader->field_separator = field_separator; - reader->text_separator = text_separator; - reader->decimal_separator = decimal_separator; - reader->first_line_titles = first_line_titles; - reader->toUtf8 = gaiaCreateUTF8Converter (encoding); - if (reader->toUtf8 == (void *) 0) - { - fclose (in); - return NULL; - } - reader->error = 0; - reader->first = NULL; - reader->last = NULL; - reader->rows = NULL; - reader->num_rows = 0; - reader->line_no = 0; - reader->max_fields = 0; - reader->max_current_field = 0; - reader->current_line_ready = 0; - reader->current_buf_sz = 1024; - reader->line_buffer = malloc (1024); - reader->field_buffer = malloc (1024); - if (reader->line_buffer == NULL || reader->field_buffer == NULL) - { - /* insufficient memory: no input buffers */ - gaiaTextReaderDestroy (reader); - return NULL; - } - for (col = 0; col < VRTTXT_FIELDS_MAX; col++) - { - /* initializing column headers */ - reader->columns[col].name = NULL; - reader->columns[col].type = VRTTXT_NULL; - } - return reader; -} - -static void -vrttxt_line_init (struct vrttxt_line *line, off_t offset) -{ -/* initializing a LINE struct */ - line->offset = offset; - line->len = 0; - line->num_fields = 0; - line->error = 0; -} - -static void -vrttxt_line_end (struct vrttxt_line *line, off_t offset) -{ -/* completing a Line struct (EndOfLine encountered) */ - line->len = offset - line->offset; -} - -static void -vrttxt_add_field (struct vrttxt_line *line, off_t offset) -{ -/* adding a Field offset to the current Line */ - if (line->num_fields >= VRTTXT_FIELDS_MAX) - { - line->error = 1; - return; - } - line->field_offsets[line->num_fields] = offset - line->offset; - line->num_fields++; -} - -static int -vrttxt_is_integer (const char *value) -{ -/* checking if this value can be an INTEGER */ - int invalids = 0; - int digits = 0; - int signs = 0; - char last = '\0'; - const char *p = value; - while (*p != '\0') - { - last = *p; - if (*p >= '0' && *p <= '9') - digits++; - else if (*p == '+' || *p == '-') - signs++; - else - invalids++; - p++; - } - if (invalids) - return 0; /* invalid chars where found */ - if (signs > 1) - return 0; /* more than a single sign */ - if (signs) - { - if (*value == '+' || *value == '-' || last == '+' || last == '-') - ; - else - return 0; /* sign is not the first/last string char */ - } - return 1; /* ok, can be a valid INTEGER value */ -} - -static int -vrttxt_is_double (const char *value, char decimal_separator) -{ -/* checking if this value can be a DOUBLE */ - int invalids = 0; - int digits = 0; - int signs = 0; - int points = 0; - char last = '\0'; - const char *p = value; - while (*p != '\0') - { - last = *p; - if (*p >= '0' && *p <= '9') - digits++; - else if (*p == '+' || *p == '-') - signs++; - else - { - if (decimal_separator == ',') - { - if (*p == ',') - points++; - else - invalids++; - } - else - { - if (*p == '.') - points++; - else - invalids++; - } - } - p++; - } - if (invalids) - return 0; /* invalid chars where found */ - if (points > 1) - return 0; /* more than a single decimal separator */ - if (signs > 1) - return 0; /* more than a single sign */ - if (signs) - { - if (*value == '+' || *value == '-' || last == '+' || last == '-') - ; - else - return 0; /* sign is not the first/last string char */ - } - return 1; /* ok, can be a valid DOUBLE value */ -} - -static int -vrttxt_check_type (const char *value, char decimal_separator) -{ -/* checking the Field type */ - if (*value == '\0') - return VRTTXT_NULL; - if (vrttxt_is_integer (value)) - return VRTTXT_INTEGER; - if (vrttxt_is_double (value, decimal_separator)) - return VRTTXT_DOUBLE; - return VRTTXT_TEXT; -} - -static int -vrttxt_set_column_title (gaiaTextReaderPtr txt, int col_no, const char *name) -{ -/* setting a Column header name */ - int err; - int ind; - char *utf8text; - char *str = (char *) name; - int len = strlen (str); - if (str[0] == txt->text_separator && str[len - 1] == txt->text_separator) - { - /* cleaning the enclosing quotes */ - str[len - 1] = '\0'; - str = (char *) (name + 1); - len -= 2; - if (len <= 0) - return 0; - } - utf8text = gaiaConvertToUTF8 (txt->toUtf8, str, len, &err); - if (err) - { - if (utf8text) - free (utf8text); - return 0; - } - else - str = utf8text; - len = strlen (str); - for (ind = 0; ind < len; ind++) - { - /* masking spaces and so on within the column name */ - switch (str[ind]) - { - case ' ': - case '\t': - case '-': - case '+': - case '*': - case '/': - case '(': - case ')': - case '[': - case ']': - case '{': - case '}': - str[ind] = '_'; - break; - } - } - if (txt->columns[col_no].name) - free (txt->columns[col_no].name); - txt->columns[col_no].name = malloc (len + 1); - if (txt->columns[col_no].name == NULL) - return 0; - strcpy (txt->columns[col_no].name, utf8text); - free (utf8text); - return 1; -} - -static void -vrttxt_add_line (gaiaTextReaderPtr txt, struct vrttxt_line *line) -{ -/* appending a Line offset to the main TXT-Reader */ - struct vrttxt_row_block *p_block; - struct vrttxt_row *p_row; - int ind; - int off; - int len; - int value_type; - int column_type; - int first_line = 0; - if (txt->line_no == 0) - first_line = 1; - if (line->error) - { - txt->error = 1; - txt->line_no++; - return; - } - if (line->num_fields == 0) - { - txt->line_no++; - return; - } - p_block = txt->last; - if (p_block == NULL) - { - /* the offset Blocks list is empty: allocating the first Block */ - p_block = vrttxt_block_alloc (); - if (!p_block) - { - txt->error = 1; - txt->line_no++; - return; - } - if (txt->first == NULL) - txt->first = p_block; - if (txt->last != NULL) - txt->last->next = p_block; - txt->last = p_block; - } - else if (p_block->num_rows >= VRTTXT_BLOCK_MAX) - { - /* the current offset Block is full: expanding the list */ - p_block = vrttxt_block_alloc (); - if (!p_block) - { - txt->error = 1; - txt->line_no++; - return; - } - if (txt->first == NULL) - txt->first = p_block; - if (txt->last != NULL) - txt->last->next = p_block; - txt->last = p_block; - } -/* inserting the Row offset into the offset Block */ - p_row = p_block->rows + p_block->num_rows; - p_block->num_rows++; - p_row->line_no = txt->line_no; - if (p_block->min_line_no < 0) - p_block->min_line_no = p_row->line_no; - if (p_block->max_line_no < p_row->line_no) - p_block->max_line_no = p_row->line_no; - txt->line_no++; - p_row->offset = line->offset; - p_row->len = line->len; - p_row->num_fields = line->num_fields; - if (line->num_fields > txt->max_fields) - txt->max_fields = line->num_fields; - off = 0; - for (ind = 0; ind < p_row->num_fields; ind++) - { - /* setting the corresponding Column (aka Field) header */ - len = line->field_offsets[ind] - off; - if (len == 0) - *(txt->field_buffer) = '\0'; - else - { - /* retrieving the current Field Value */ - memcpy (txt->field_buffer, txt->line_buffer + off, len); - *(txt->field_buffer + len) = '\0'; - } - if (txt->first_line_titles && first_line) - { - /* first line: the current value is the Column Name */ - if (!vrttxt_set_column_title (txt, ind, txt->field_buffer)) - txt->error = 1; - } - else - { - /* plain Field Value */ - value_type = - vrttxt_check_type (txt->field_buffer, - txt->decimal_separator); - column_type = txt->columns[ind].type; - switch (value_type) - { - /* checking the Column type */ - case VRTTXT_INTEGER: - if (column_type == VRTTXT_NULL) - txt->columns[ind].type = VRTTXT_INTEGER; - break; - case VRTTXT_DOUBLE: - if (column_type == VRTTXT_NULL - || column_type == VRTTXT_INTEGER) - txt->columns[ind].type = VRTTXT_DOUBLE; - break; - case VRTTXT_TEXT: - txt->columns[ind].type = VRTTXT_TEXT; - break; - default: - break; - }; - } - off = line->field_offsets[ind] + 1; - } -} - -static void -vrttxt_line_push (gaiaTextReaderPtr txt, char c) -{ -/* inserting a single char into the dynamically growing buffer */ - if (txt->error) - return; - if ((txt->current_buf_off + 1) >= txt->current_buf_sz) - { - /* expanding the input buffer */ - int new_sz; - char *new_buf; - /* - / allocation strategy: - / - the input buffer has an initial size of 1024 bytes - / (good for short lines) - / - the second step allocates 4196 bytes - / - the third step allocates 65536 bytes - / (good for medium sized lines) - / - after this the buffer allocation will be increased - / be 1MB at each step (good for huge sized lines) - */ - if (txt->current_buf_sz < 4196) - new_sz = 4196; - else if (txt->current_buf_sz < 65536) - new_sz = 65536; - else - new_sz = txt->current_buf_sz + (1024 * 1024); - new_buf = malloc (new_sz); - if (!new_buf) - { - txt->error = 1; - return; - } - txt->current_buf_sz = new_sz; - memcpy (new_buf, txt->line_buffer, txt->current_buf_off); - free (txt->line_buffer); - txt->line_buffer = new_buf; - free (txt->field_buffer); - txt->field_buffer = malloc (new_sz); - if (txt->field_buffer == NULL) - { - txt->error = 1; - return; - } - } - *(txt->line_buffer + txt->current_buf_off) = c; - txt->current_buf_off++; -/* ensuring that input buffer will be null terminated anyway */ - *(txt->line_buffer + txt->current_buf_off) = '\0'; -} - -static void -vrttxt_build_line_array (gaiaTextReaderPtr txt) -{ -/* creating the final Line offsets array */ - struct vrttxt_row_block *p_block; - int i; - int cnt = 0; - int first_line = 1; - if (txt->rows) - free (txt->rows); - txt->rows = NULL; - txt->num_rows = 0; - p_block = txt->first; - while (p_block) - { - /* counting how many lines are there */ - if (p_block == txt->first && txt->first_line_titles) - txt->num_rows += p_block->num_rows - 1; - else - txt->num_rows += p_block->num_rows; - p_block = p_block->next; - } - txt->rows = malloc (sizeof (struct vrttxt_row *) * txt->num_rows); - if (txt->rows == NULL) - { - /* insufficient memory */ - txt->error = 1; - return; - } - p_block = txt->first; - while (p_block) - { - for (i = 0; i < p_block->num_rows; i++) - { - /* setting Line references into the array */ - if (first_line && txt->first_line_titles) - { - first_line = 0; - continue; /* skipping the first line (column names) */ - } - *(txt->rows + cnt++) = p_block->rows + i; - } - p_block = p_block->next; - } -} - -GAIAGEO_DECLARE int -gaiaTextReaderParse (gaiaTextReaderPtr txt) -{ -/* -/ preliminary parsing -/ - reading the input file until EOF -/ - then feeding the Row offsets structs -/ to be used for any subsequent access -*/ - char name[64]; - int ind; - int i2; - int c; - int masked = 0; - int token_start = 1; - int row_offset = 0; - off_t offset = 0; - struct vrttxt_line line; - vrttxt_line_init (&line, 0); - txt->current_buf_off = 0; - - while ((c = getc (txt->text_file)) != EOF) - { - if (c == txt->text_separator) - { - if (masked) - masked = 0; - else - { - if (token_start) - masked = 1; - } - vrttxt_line_push (txt, c); - if (txt->error) - return 0; - row_offset++; - offset++; - continue; - } - token_start = 0; - if (c == '\r') - { - if (masked) - { - vrttxt_line_push (txt, c); - if (txt->error) - return 0; - row_offset++; - } - offset++; - continue; - } - if (c == '\n') - { - if (masked) - { - vrttxt_line_push (txt, c); - if (txt->error) - return 0; - row_offset++; - offset++; - continue; - } - vrttxt_add_field (&line, offset); - vrttxt_line_end (&line, offset); - vrttxt_add_line (txt, &line); - if (txt->error) - return 0; - vrttxt_line_init (&line, offset + 1); - txt->current_buf_off = 0; - token_start = 1; - row_offset = 0; - offset++; - continue; - } - if (c == txt->field_separator) - { - if (masked) - { - vrttxt_line_push (txt, c); - if (txt->error) - return 0; - row_offset++; - offset++; - continue; - } - vrttxt_line_push (txt, c); - if (txt->error) - return 0; - row_offset++; - vrttxt_add_field (&line, offset); - token_start = 1; - offset++; - continue; - } - vrttxt_line_push (txt, c); - if (txt->error) - return 0; - row_offset++; - offset++; - } - if (txt->error) - return 0; - if (txt->first_line_titles) - { - /* checking for duplicate column names */ - for (ind = 0; ind < txt->max_fields; ind++) - { - for (i2 = 0; i2 < ind; i2++) - { - if (strcasecmp - (txt->columns[i2].name, txt->columns[ind].name) == 0) - { - sprintf (name, "COL%03d", ind + 1); - if (!vrttxt_set_column_title (txt, ind, name)) - { - txt->error = 1; - return 0; - } - } - } - } - } - else - { - /* setting convenience column names */ - for (ind = 0; ind < txt->max_fields; ind++) - { - sprintf (name, "COL%03d", ind + 1); - if (!vrttxt_set_column_title (txt, ind, name)) - { - txt->error = 1; - return 0; - } - } - } - if (txt->error) - return 0; - vrttxt_build_line_array (txt); - if (txt->error) - return 0; - return 1; -} - -GAIAGEO_DECLARE int -gaiaTextReaderGetRow (gaiaTextReaderPtr txt, int line_no) -{ -/* reading a Line (identified by relative number */ - int i; - char c; - int masked = 0; - int token_start = 1; - int fld = 0; - int offset = 0; - struct vrttxt_row *p_row; - txt->current_line_ready = 0; - txt->max_current_field = 0; - if (line_no < 0 || line_no >= txt->num_rows || txt->rows == NULL) - return 0; - p_row = *(txt->rows + line_no); - if (fseek (txt->text_file, p_row->offset, SEEK_SET) != 0) - return 0; - if (fread (txt->line_buffer, 1, p_row->len, txt->text_file) != - (unsigned int) (p_row->len)) - return 0; - txt->field_offsets[0] = 0; - for (i = 0; i < p_row->len; i++) - { - /* parsing Fields */ - c = *(txt->line_buffer + i); - if (c == txt->text_separator) - { - if (masked) - masked = 0; - else - { - if (token_start) - masked = 1; - } - offset++; - continue; - } - token_start = 0; - if (c == '\r') - { - offset++; - continue; - } - if (c == txt->field_separator) - { - if (masked) - { - offset++; - continue; - } - txt->field_offsets[fld + 1] = offset + 1; - txt->field_lens[fld] = -1; - txt->field_lens[fld] = offset - txt->field_offsets[fld]; - fld++; - txt->max_current_field = fld; - token_start = 1; - offset++; - continue; - } - offset++; - } - if (offset > 0) - { - txt->field_lens[fld] = offset - txt->field_offsets[fld]; - fld++; - txt->max_current_field = fld; - } - txt->current_line_ready = 1; - return 1; -} - -GAIAGEO_DECLARE int -gaiaTextReaderFetchField (gaiaTextReaderPtr txt, int field_idx, int *type, - const char **value) -{ -/* fetching a field value */ - char *utf8text = NULL; - int err; - int len; - char *str; - if (txt->current_line_ready == 0) - { - *type = VRTTXT_NULL; - *value = NULL; - return 0; - } - if (field_idx < 0 || field_idx >= txt->max_fields) - { - *type = VRTTXT_NULL; - *value = NULL; - return 0; - } - if (field_idx < 0 || field_idx >= txt->max_current_field) - { - *type = VRTTXT_NULL; - *value = NULL; - return 0; - } - *type = txt->columns[field_idx].type; - if (txt->field_lens[field_idx] == 0) - *(txt->field_buffer) = '\0'; - memcpy (txt->field_buffer, txt->line_buffer + txt->field_offsets[field_idx], - txt->field_lens[field_idx]); - *(txt->field_buffer + txt->field_lens[field_idx]) = '\0'; - *value = txt->field_buffer; -/* sandro 2012-02-01: fixing CR handling for last column [windows] */ - if (*(txt->field_buffer) == '\r' && txt->field_lens[field_idx] == 1 - && (field_idx + 1) == txt->max_fields) - *(txt->field_buffer) = '\0'; - if (*(txt->field_buffer) == '\0') - *type = VRTTXT_NULL; - else if (*type == VRTTXT_TEXT) - { - /* converting to UTF-8 */ - str = (char *) *value; - len = strlen (str); - if (str[len - 1] == '\r') - { - /* skipping trailing CR, if any */ - str[len - 1] = '\0'; - len--; - } - if (str[0] == txt->text_separator - && str[len - 1] == txt->text_separator) - { - /* cleaning the enclosing quotes */ - str[len - 1] = '\0'; - str = (char *) (*value + 1); - len -= 2; - if (len <= 0) - { - *type = VRTTXT_NULL; - *value = NULL; - return 1; - } - } - utf8text = gaiaConvertToUTF8 (txt->toUtf8, str, len, &err); - if (err) - { - /* memory cleanup: Kashif Rasul 14 Jan 2010 */ - if (utf8text) - free (utf8text); - *type = VRTTXT_NULL; - *value = NULL; - return 0; - } - *value = utf8text; - } - return 1; -} - -#endif /* ICONV enabled/disabled */ diff --git a/src/spatialite/test/Makefile.am b/src/spatialite/test/Makefile.am deleted file mode 100644 index 25085af..0000000 --- a/src/spatialite/test/Makefile.am +++ /dev/null @@ -1,2784 +0,0 @@ -INCLUDES = @CFLAGS@ @GEOS_CFLAGS@ - -check_PROGRAMS = check_endian \ - check_version \ - check_init \ - check_init2 \ - check_geom_aux \ - check_geometry_cols \ - check_create \ - check_bufovflw \ - check_fdo1 \ - check_fdo2 \ - check_fdo3 \ - check_fdo_bufovflw \ - check_dbf_load \ - check_shp_load \ - check_shp_load_3d \ - shape_cp1252 \ - shape_primitives \ - shape_utf8_1 \ - shape_utf8_1ex \ - shape_utf8_2 \ - shape_3d \ - check_xls_load \ - check_math_funcs \ - check_gaia_util \ - check_gaia_utf8 \ - check_extension \ - check_recover_geom \ - check_sql_stmt \ - check_virtualtable1 \ - check_virtualtable2 \ - check_virtualtable3 \ - check_virtualtable4 \ - check_virtualtable5 \ - check_virtualtable6 \ - check_virtual_ovflw \ - check_mbrcache \ - check_spatialindex \ - check_exif \ - check_relations_fncts \ - check_extra_relations_fncts \ - check_geoscvt_fncts - -AM_CFLAGS = -I@srcdir@/../src/headers -I@srcdir@ -AM_LDFLAGS = -L../src -lspatialite -lm $(GCOV_FLAGS) - -TESTS = $(check_PROGRAMS) - -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda - -EXTRA_DIST = asprintf4win.h \ - fnmatch_impl4win.h \ - fnmatch4win.h \ - scandir4win.h \ - shapetest1.dbf \ - shapetest1.prj \ - shapetest1.qpj \ - shapetest1.shp \ - shapetest1.shx \ - test_under_valgrind.sh \ - WritingSQLTestCase.txt \ - test-legacy-2.3.1.sqlite \ - test-legacy-3.0.1.sqlite \ - shp/new-caledonia/buildings.dbf \ - shp/new-caledonia/buildings.prj \ - shp/new-caledonia/buildings.shp \ - shp/new-caledonia/buildings.shx \ - shp/new-caledonia/points.dbf \ - shp/new-caledonia/points.prj \ - shp/new-caledonia/points.shp \ - shp/new-caledonia/points.shx \ - shp/new-caledonia/railways.dbf \ - shp/new-caledonia/railways.shp \ - shp/new-caledonia/railways.shx \ - shp/gaza/aeroway.dbf \ - shp/gaza/aeroway.prj \ - shp/gaza/aeroway.shp \ - shp/gaza/aeroway.shx \ - shp/gaza/barrier.dbf \ - shp/gaza/barrier.prj \ - shp/gaza/barrier.shp \ - shp/gaza/barrier.shx \ - shp/gaza/route.dbf \ - shp/gaza/route.prj \ - shp/gaza/route.shp \ - shp/gaza/route.shx \ - shp/taiwan/hystoric.dbf \ - shp/taiwan/hystoric.prj \ - shp/taiwan/hystoric.shp \ - shp/taiwan/hystoric.shx \ - shp/taiwan/leisure.dbf \ - shp/taiwan/leisure.prj \ - shp/taiwan/leisure.shp \ - shp/taiwan/leisure.shx \ - shp/taiwan/route.dbf \ - shp/taiwan/route.prj \ - shp/taiwan/route.shp \ - shp/taiwan/route.shx \ - shp/merano-3d/points.dbf \ - shp/merano-3d/points.prj \ - shp/merano-3d/points.shp \ - shp/merano-3d/points.shx \ - shp/merano-3d/polygons.dbf \ - shp/merano-3d/polygons.prj \ - shp/merano-3d/polygons.shp \ - shp/merano-3d/polygons.shx \ - shp/merano-3d/roads.dbf \ - shp/merano-3d/roads.prj \ - shp/merano-3d/roads.shp \ - shp/merano-3d/roads.shx \ - shp/foggia/local_councils.dbf \ - shp/foggia/local_councils.prj \ - shp/foggia/local_councils.shp \ - shp/foggia/local_councils.shx \ - testcase1.xls \ - testcase1.csv \ - sql_stmt_mathsql_tests/acos10.testcase \ - sql_stmt_mathsql_tests/acos20.testcase \ - sql_stmt_mathsql_tests/acos2.testcase \ - sql_stmt_mathsql_tests/acos.testcase \ - sql_stmt_mathsql_tests/acos-text.testcase \ - sql_stmt_tests/asbinary10.testcase \ - sql_stmt_tests/asbinary11.testcase \ - sql_stmt_tests/asbinary12.testcase \ - sql_stmt_tests/asbinary13.testcase \ - sql_stmt_tests/asbinary14.testcase \ - sql_stmt_tests/asbinary15.testcase \ - sql_stmt_tests/asbinary16.testcase \ - sql_stmt_tests/asbinary17.testcase \ - sql_stmt_tests/asbinary1.testcase \ - sql_stmt_tests/asbinary2.testcase \ - sql_stmt_tests/asbinary3.testcase \ - sql_stmt_tests/asbinary4.testcase \ - sql_stmt_tests/asbinary5.testcase \ - sql_stmt_tests/asbinary6.testcase \ - sql_stmt_tests/asbinary7.testcase \ - sql_stmt_tests/asbinary8.testcase \ - sql_stmt_tests/asbinary9.testcase \ - sql_stmt_tests/asewkb10.testcase \ - sql_stmt_tests/asewkb11.testcase \ - sql_stmt_tests/asewkb12.testcase \ - sql_stmt_tests/asewkb13.testcase \ - sql_stmt_tests/asewkb14.testcase \ - sql_stmt_tests/asewkb15.testcase \ - sql_stmt_tests/asewkb16.testcase \ - sql_stmt_tests/asewkb17.testcase \ - sql_stmt_tests/asewkb1.testcase \ - sql_stmt_tests/asewkb2.testcase \ - sql_stmt_tests/asewkb3.testcase \ - sql_stmt_tests/asewkb4.testcase \ - sql_stmt_tests/asewkb5.testcase \ - sql_stmt_tests/asewkb6.testcase \ - sql_stmt_tests/asewkb7.testcase \ - sql_stmt_tests/asewkb8.testcase \ - sql_stmt_tests/asewkb9.testcase \ - sql_stmt_tests/asfgf1.testcase \ - sql_stmt_tests/asfgf2.testcase \ - sql_stmt_tests/asfgf3.testcase \ - sql_stmt_tests/asfgf4.testcase \ - sql_stmt_tests/asfgf5.testcase \ - sql_stmt_tests/asfgf6.testcase \ - sql_stmt_tests/asfgf7.testcase \ - sql_stmt_tests/asfgf8.testcase \ - sql_stmt_tests/asfgf9.testcase \ - sql_stmt_tests/asgeojson1.testcase \ - sql_stmt_tests/asgeojson2.testcase \ - sql_stmt_tests/asgeojson3.testcase \ - sql_stmt_tests/asgeojson4.testcase \ - sql_stmt_tests/asgeojson5.testcase \ - sql_stmt_tests/asgeojson6.testcase \ - sql_stmt_tests/asgeojson7.testcase \ - sql_stmt_tests/asgml10.testcase \ - sql_stmt_tests/asgml11.testcase \ - sql_stmt_tests/asgml1.testcase \ - sql_stmt_tests/asgml2.testcase \ - sql_stmt_tests/asgml3.testcase \ - sql_stmt_tests/asgml4.testcase \ - sql_stmt_tests/asgml5.testcase \ - sql_stmt_tests/asgml6.testcase \ - sql_stmt_tests/asgml7.testcase \ - sql_stmt_tests/asgml8.testcase \ - sql_stmt_tests/asgml9.testcase \ - sql_stmt_mathsql_tests/asin10.testcase \ - sql_stmt_mathsql_tests/asin1.testcase \ - sql_stmt_mathsql_tests/asin20.testcase \ - sql_stmt_mathsql_tests/asin2.testcase \ - sql_stmt_mathsql_tests/asin-text.testcase \ - sql_stmt_proj_tests/askml10.testcase \ - sql_stmt_proj_tests/askml11.testcase \ - sql_stmt_proj_tests/askml1.testcase \ - sql_stmt_proj_tests/askml2.testcase \ - sql_stmt_proj_tests/askml3.testcase \ - sql_stmt_proj_tests/askml4.testcase \ - sql_stmt_proj_tests/askml5.testcase \ - sql_stmt_proj_tests/askml6.testcase \ - sql_stmt_proj_tests/askml7.testcase \ - sql_stmt_proj_tests/askml8.testcase \ - sql_stmt_proj_tests/askml9.testcase \ - sql_stmt_tests/assvg17.testcase \ - sql_stmt_tests/assvg18.testcase \ - sql_stmt_tests/assvg19.testcase \ - sql_stmt_tests/assvg1.testcase \ - sql_stmt_tests/assvg20.testcase \ - sql_stmt_tests/assvg21.testcase \ - sql_stmt_tests/assvg22.testcase \ - sql_stmt_tests/assvg23.testcase \ - sql_stmt_tests/assvg24.testcase \ - sql_stmt_tests/assvg25.testcase \ - sql_stmt_tests/assvg26.testcase \ - sql_stmt_tests/assvg2.testcase \ - sql_stmt_tests/assvg3.testcase \ - sql_stmt_tests/assvg4.testcase \ - sql_stmt_tests/assvg5.testcase \ - sql_stmt_tests/assvg6.testcase \ - sql_stmt_tests/assvg7.testcase \ - sql_stmt_tests/assvg8.testcase \ - sql_stmt_tests/assvg9.testcase \ - sql_stmt_tests/aswkt-text.testcase \ - sql_stmt_mathsql_tests/atan00.testcase \ - sql_stmt_mathsql_tests/atan0.testcase \ - sql_stmt_mathsql_tests/atan-text.testcase \ - sql_stmt_tests/badEWKT1.testcase \ - sql_stmt_tests/badEWKT2.testcase \ - sql_stmt_tests/badEWKT3.testcase \ - sql_stmt_tests/badEWKT4.testcase \ - sql_stmt_tests/badEWKT5.testcase \ - sql_stmt_tests/badEWKT6.testcase \ - sql_stmt_tests/badEWKT7.testcase \ - sql_stmt_tests/badEWKT8.testcase \ - sql_stmt_tests/badGeoJSON1.testcase \ - sql_stmt_tests/badGeoJSON2.testcase \ - sql_stmt_tests/badGeoJSON3.testcase \ - sql_stmt_tests/badGeoJSON4.testcase \ - sql_stmt_tests/badGeoJSON5.testcase \ - sql_stmt_tests/badGeoJSON6.testcase \ - sql_stmt_tests/badGeoJSON7.testcase \ - sql_stmt_tests/badGML1.testcase \ - sql_stmt_tests/badGML2.testcase \ - sql_stmt_tests/badGML3.testcase \ - sql_stmt_tests/badGML4.testcase \ - sql_stmt_tests/badGML5.testcase \ - sql_stmt_tests/badGML6.testcase \ - sql_stmt_tests/badGML7.testcase \ - sql_stmt_tests/badKML1.testcase \ - sql_stmt_tests/badKML2.testcase \ - sql_stmt_tests/badKML3.testcase \ - sql_stmt_tests/badKML4.testcase \ - sql_stmt_tests/badKML5.testcase \ - sql_stmt_tests/badKML6.testcase \ - sql_stmt_tests/badKML7.testcase \ - sql_stmt_tests/badwkt1.testcase \ - sql_stmt_tests/badwkt2.testcase \ - sql_stmt_tests/badwkt3.testcase \ - sql_stmt_tests/badwkt4.testcase \ - sql_stmt_tests/badwkt5.testcase \ - sql_stmt_tests/badwkt6.testcase \ - sql_stmt_tests/badwkt7.testcase \ - sql_stmt_tests/badwkt8.testcase \ - sql_stmt_tests/badwkt9.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext10.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext13.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext14.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext15.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext16.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext17.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext1.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext2.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext3.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext4.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext9.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb10.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb11.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb12.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb13.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb14.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb15.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb16.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb17.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb18.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb19.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb1.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb2.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb3.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb4.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb5.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb6.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb7.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb8.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb9.testcase \ - sql_stmt_geos_tests/bdpolyfromtext10.testcase \ - sql_stmt_geos_tests/bdpolyfromtext11.testcase \ - sql_stmt_geos_tests/bdpolyfromtext12.testcase \ - sql_stmt_geos_tests/bdpolyfromtext13.testcase \ - sql_stmt_geos_tests/bdpolyfromtext14.testcase \ - sql_stmt_geos_tests/bdpolyfromtext15.testcase \ - sql_stmt_geos_tests/bdpolyfromtext16.testcase \ - sql_stmt_geos_tests/bdpolyfromtext1.testcase \ - sql_stmt_geos_tests/bdpolyfromtext2.testcase \ - sql_stmt_geos_tests/bdpolyfromtext3.testcase \ - sql_stmt_geos_tests/bdpolyfromtext4.testcase \ - sql_stmt_geos_tests/bdpolyfromtext5.testcase \ - sql_stmt_geos_tests/bdpolyfromtext6.testcase \ - sql_stmt_geos_tests/bdpolyfromtext7.testcase \ - sql_stmt_geos_tests/bdpolyfromtext8.testcase \ - sql_stmt_geos_tests/bdpolyfromtext9.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb10.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb11.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb12.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb13.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb14.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb15.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb16.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb17.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb18.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb19.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb1.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb2.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb3.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb4.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb5.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb6.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb7.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb8.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb9.testcase \ - sql_stmt_security_tests/blobfromfile1.testcase \ - sql_stmt_security_tests/blobfromfile2.testcase \ - sql_stmt_security_tests/blobfromfile3.testcase \ - sql_stmt_security_tests/blobfromfile4.testcase \ - sql_stmt_security_tests/isXblob1.testcase \ - sql_stmt_security_tests/isXblob2.testcase \ - sql_stmt_security_tests/isXblob3.testcase \ - sql_stmt_security_tests/isXblob4.testcase \ - sql_stmt_security_tests/isXblob8.testcase \ - sql_stmt_security_tests/isXblob9.testcase \ - sql_stmt_geos_tests/boundary1.testcase \ - sql_stmt_geos_tests/boundary2.testcase \ - sql_stmt_geos_tests/boundary3.testcase \ - sql_stmt_geos_tests/boundary4.testcase \ - sql_stmt_geos_tests/boundary5.testcase \ - sql_stmt_geos_tests/boundary6.testcase \ - sql_stmt_geos_tests/boundary7.testcase \ - sql_stmt_geos_tests/boundary8.testcase \ - sql_stmt_geos_tests/boundary9.testcase \ - sql_stmt_geos_tests/buffer10.testcase \ - sql_stmt_geos_tests/buffer1.testcase \ - sql_stmt_geos_tests/buffer2.testcase \ - sql_stmt_geos_tests/buffer3.testcase \ - sql_stmt_geos_tests/buffer4.testcase \ - sql_stmt_geos_tests/buffer5.testcase \ - sql_stmt_geos_tests/buffer6.testcase \ - sql_stmt_geos_tests/buffer7.testcase \ - sql_stmt_geos_tests/buffer8.testcase \ - sql_stmt_geos_tests/buffer9.testcase \ - sql_stmt_geos_tests/buildarea1.testcase \ - sql_stmt_geos_tests/buildarea2.testcase \ - sql_stmt_geos_tests/buildarea3.testcase \ - sql_stmt_geos_tests/buildarea4.testcase \ - sql_stmt_geos_tests/buildarea5.testcase \ - sql_stmt_geos_tests/buildarea6.testcase \ - sql_stmt_tests/buildcirclembr10.testcase \ - sql_stmt_tests/buildcirclembr11.testcase \ - sql_stmt_tests/buildcirclembr12.testcase \ - sql_stmt_tests/buildcirclembr1.testcase \ - sql_stmt_tests/buildcirclembr2.testcase \ - sql_stmt_tests/buildcirclembr3.testcase \ - sql_stmt_tests/buildcirclembr4.testcase \ - sql_stmt_tests/buildcirclembr5.testcase \ - sql_stmt_tests/buildcirclembr6.testcase \ - sql_stmt_tests/buildcirclembr7.testcase \ - sql_stmt_tests/buildcirclembr8.testcase \ - sql_stmt_tests/buildcirclembr9.testcase \ - sql_stmt_tests/buildmbr10.testcase \ - sql_stmt_tests/buildmbr11.testcase \ - sql_stmt_tests/buildmbr12.testcase \ - sql_stmt_tests/buildmbr13.testcase \ - sql_stmt_tests/buildmbr14.testcase \ - sql_stmt_tests/buildmbr1.testcase \ - sql_stmt_tests/buildmbr2.testcase \ - sql_stmt_tests/buildmbr3.testcase \ - sql_stmt_tests/buildmbr4.testcase \ - sql_stmt_tests/buildmbr5.testcase \ - sql_stmt_tests/buildmbr6.testcase \ - sql_stmt_tests/buildmbr7.testcase \ - sql_stmt_tests/buildmbr8.testcase \ - sql_stmt_tests/buildmbr9.testcase \ - sql_stmt_tests/casttogeometrycollection2.testcase \ - sql_stmt_tests/casttogeometrycollection3.testcase \ - sql_stmt_tests/casttogeometrycollection4.testcase \ - sql_stmt_tests/casttogeometrycollection5.testcase \ - sql_stmt_tests/casttogeometrycollection6.testcase \ - sql_stmt_tests/casttogeometrycollection.testcase \ - sql_stmt_tests/casttolinestring1.testcase \ - sql_stmt_tests/casttolinestring2.testcase \ - sql_stmt_tests/casttolinestring3.testcase \ - sql_stmt_tests/casttolinestring4.testcase \ - sql_stmt_tests/casttolinestring5.testcase \ - sql_stmt_tests/casttolinestring6.testcase \ - sql_stmt_tests/casttolinestring7.testcase \ - sql_stmt_tests/casttolinestring8.testcase \ - sql_stmt_tests/casttomulti11.testcase \ - sql_stmt_tests/casttomulti1.testcase \ - sql_stmt_tests/casttomulti2.testcase \ - sql_stmt_tests/casttomulti3.testcase \ - sql_stmt_tests/casttomulti4.testcase \ - sql_stmt_tests/casttomulti5.testcase \ - sql_stmt_tests/casttomulti6.testcase \ - sql_stmt_tests/casttomulti7.testcase \ - sql_stmt_tests/casttomulti8.testcase \ - sql_stmt_tests/casttomultilinestring1.testcase \ - sql_stmt_tests/casttomultilinestring2.testcase \ - sql_stmt_tests/casttomultilinestring3.testcase \ - sql_stmt_tests/casttomultilinestring4.testcase \ - sql_stmt_tests/casttomultilinestring5.testcase \ - sql_stmt_tests/casttomultilinestring6.testcase \ - sql_stmt_tests/casttomultilinestring7.testcase \ - sql_stmt_tests/casttomultipoint1.testcase \ - sql_stmt_tests/casttomultipoint2.testcase \ - sql_stmt_tests/casttomultipoint3.testcase \ - sql_stmt_tests/casttomultipoint4.testcase \ - sql_stmt_tests/casttomultipoint5.testcase \ - sql_stmt_tests/casttomultipoint6.testcase \ - sql_stmt_tests/casttomultipoint7.testcase \ - sql_stmt_tests/casttomultipoint8.testcase \ - sql_stmt_tests/casttomultipoint9.testcase \ - sql_stmt_tests/casttomultipolygon1.testcase \ - sql_stmt_tests/casttomultipolygon2.testcase \ - sql_stmt_tests/casttomultipolygon3.testcase \ - sql_stmt_tests/casttomultipolygon4.testcase \ - sql_stmt_tests/casttomultipolygon5.testcase \ - sql_stmt_tests/casttopoint1.testcase \ - sql_stmt_tests/casttopoint2.testcase \ - sql_stmt_tests/casttopoint3.testcase \ - sql_stmt_tests/casttopoint4.testcase \ - sql_stmt_tests/casttopoint5.testcase \ - sql_stmt_tests/casttopoint6.testcase \ - sql_stmt_tests/casttopoint7.testcase \ - sql_stmt_tests/casttopoint8.testcase \ - sql_stmt_tests/casttopoly1.testcase \ - sql_stmt_tests/casttopoly2.testcase \ - sql_stmt_tests/casttopoly3.testcase \ - sql_stmt_tests/casttopoly4.testcase \ - sql_stmt_tests/casttopoly5.testcase \ - sql_stmt_tests/casttopoly6.testcase \ - sql_stmt_tests/casttopoly7.testcase \ - sql_stmt_tests/casttopoly8.testcase \ - sql_stmt_tests/casttosingle10.testcase \ - sql_stmt_tests/casttosingle12.testcase \ - sql_stmt_tests/casttosingle1.testcase \ - sql_stmt_tests/casttosingle2.testcase \ - sql_stmt_tests/casttosingle3.testcase \ - sql_stmt_tests/casttosingle4.testcase \ - sql_stmt_tests/casttosingle5.testcase \ - sql_stmt_tests/casttosingle6.testcase \ - sql_stmt_tests/casttosingle7.testcase \ - sql_stmt_tests/casttosingle8.testcase \ - sql_stmt_tests/casttosingle9.testcase \ - sql_stmt_tests/casttoxy1.testcase \ - sql_stmt_tests/casttoxy2.testcase \ - sql_stmt_tests/casttoxy3.testcase \ - sql_stmt_tests/casttoxym1.testcase \ - sql_stmt_tests/casttoxym2.testcase \ - sql_stmt_tests/casttoxym3.testcase \ - sql_stmt_tests/casttoxym4.testcase \ - sql_stmt_tests/casttoxym5.testcase \ - sql_stmt_tests/casttoxym6.testcase \ - sql_stmt_tests/casttoxyz1.testcase \ - sql_stmt_tests/casttoxyz2.testcase \ - sql_stmt_tests/casttoxyz3.testcase \ - sql_stmt_tests/casttoxyz4.testcase \ - sql_stmt_tests/casttoxyz5.testcase \ - sql_stmt_tests/casttoxyz6.testcase \ - sql_stmt_tests/casttoxyzm1.testcase \ - sql_stmt_tests/casttoxyzm2.testcase \ - sql_stmt_tests/casttoxyzm3.testcase \ - sql_stmt_tests/casttoxyzm4.testcase \ - sql_stmt_tests/casttoxyzm5.testcase \ - sql_stmt_tests/casttoxyzm6.testcase \ - sql_stmt_mathsql_tests/ceilfloat2.testcase \ - sql_stmt_mathsql_tests/ceilfloat.testcase \ - sql_stmt_mathsql_tests/ceil-int.testcase \ - sql_stmt_mathsql_tests/ceilnull.testcase \ - sql_stmt_geos_tests/centroid1.testcase \ - sql_stmt_geos_tests/centroid2.testcase \ - sql_stmt_geos_tests/centroid3.testcase \ - sql_stmt_geos_tests/centroid4.testcase \ - sql_stmt_geos_tests/centroid5.testcase \ - sql_stmt_geos_tests/centroid6.testcase \ - sql_stmt_geos_tests/centroid7.testcase \ - sql_stmt_geos_tests/centroid8.testcase \ - sql_stmt_tests/checkspatialmetadata1.testcase \ - sql_stmt_tests/checkspatialmetadata2.testcase \ - sql_stmt_tests/checkspatialmetadata3.testcase \ - sql_stmt_tests/checkspatialmetadata4.testcase \ - sql_stmt_tests/checkspatialmetadata5.testcase \ - sql_stmt_tests/ch_m.testcase \ - sql_stmt_geosadvanced_tests/closestpoint10.testcase \ - sql_stmt_geosadvanced_tests/closestpoint11.testcase \ - sql_stmt_geosadvanced_tests/closestpoint12.testcase \ - sql_stmt_geosadvanced_tests/closestpoint13.testcase \ - sql_stmt_geosadvanced_tests/closestpoint14.testcase \ - sql_stmt_geosadvanced_tests/closestpoint15.testcase \ - sql_stmt_geosadvanced_tests/closestpoint16.testcase \ - sql_stmt_geosadvanced_tests/closestpoint17.testcase \ - sql_stmt_geosadvanced_tests/closestpoint18.testcase \ - sql_stmt_geosadvanced_tests/closestpoint19.testcase \ - sql_stmt_geosadvanced_tests/closestpoint1.testcase \ - sql_stmt_geosadvanced_tests/closestpoint20.testcase \ - sql_stmt_geosadvanced_tests/closestpoint21.testcase \ - sql_stmt_geosadvanced_tests/closestpoint22.testcase \ - sql_stmt_geosadvanced_tests/closestpoint2.testcase \ - sql_stmt_geosadvanced_tests/closestpoint3.testcase \ - sql_stmt_geosadvanced_tests/closestpoint4.testcase \ - sql_stmt_geosadvanced_tests/closestpoint5.testcase \ - sql_stmt_geosadvanced_tests/closestpoint6.testcase \ - sql_stmt_geosadvanced_tests/closestpoint7.testcase \ - sql_stmt_geosadvanced_tests/closestpoint8.testcase \ - sql_stmt_geosadvanced_tests/closestpoint9.testcase \ - sql_stmt_tests/cm_m.testcase \ - sql_stmt_tests/collect10.testcase \ - sql_stmt_tests/collect11.testcase \ - sql_stmt_tests/collect12.testcase \ - sql_stmt_tests/collect13.testcase \ - sql_stmt_tests/collect14.testcase \ - sql_stmt_tests/collect15.testcase \ - sql_stmt_tests/collect16.testcase \ - sql_stmt_tests/collect17.testcase \ - sql_stmt_tests/collect18.testcase \ - sql_stmt_tests/collect19.testcase \ - sql_stmt_tests/collect1.testcase \ - sql_stmt_tests/collect20.testcase \ - sql_stmt_tests/collect21.testcase \ - sql_stmt_tests/collect23.testcase \ - sql_stmt_tests/collect24.testcase \ - sql_stmt_tests/collect25.testcase \ - sql_stmt_tests/collect26.testcase \ - sql_stmt_tests/collect27.testcase \ - sql_stmt_tests/collect28.testcase \ - sql_stmt_tests/collect29.testcase \ - sql_stmt_tests/collect2.testcase \ - sql_stmt_tests/collect30.testcase \ - sql_stmt_tests/collect31.testcase \ - sql_stmt_tests/collect32.testcase \ - sql_stmt_tests/collect33.testcase \ - sql_stmt_tests/collect34.testcase \ - sql_stmt_tests/collect35.testcase \ - sql_stmt_tests/collect36.testcase \ - sql_stmt_tests/collect37.testcase \ - sql_stmt_tests/collect38.testcase \ - sql_stmt_tests/collect39.testcase \ - sql_stmt_tests/collect3.testcase \ - sql_stmt_tests/collect40.testcase \ - sql_stmt_tests/collect41.testcase \ - sql_stmt_tests/collect42.testcase \ - sql_stmt_tests/collect43.testcase \ - sql_stmt_tests/collect44.testcase \ - sql_stmt_tests/collect45.testcase \ - sql_stmt_tests/collect46.testcase \ - sql_stmt_tests/collect47.testcase \ - sql_stmt_tests/collect48.testcase \ - sql_stmt_tests/collect49.testcase \ - sql_stmt_tests/collect4.testcase \ - sql_stmt_tests/collect50.testcase \ - sql_stmt_tests/collect51.testcase \ - sql_stmt_tests/collect52.testcase \ - sql_stmt_tests/collect53.testcase \ - sql_stmt_tests/collect54.testcase \ - sql_stmt_tests/collect55.testcase \ - sql_stmt_tests/collect56.testcase \ - sql_stmt_tests/collect57.testcase \ - sql_stmt_tests/collect58.testcase \ - sql_stmt_tests/collect59.testcase \ - sql_stmt_tests/collect5.testcase \ - sql_stmt_tests/collect6.testcase \ - sql_stmt_tests/collect7.testcase \ - sql_stmt_tests/collect8.testcase \ - sql_stmt_tests/collect9.testcase \ - sql_stmt_tests/collectextract10.testcase \ - sql_stmt_tests/collectextract11.testcase \ - sql_stmt_tests/collectextract12.testcase \ - sql_stmt_tests/collectextract13.testcase \ - sql_stmt_tests/collectextract14.testcase \ - sql_stmt_tests/collectextract15.testcase \ - sql_stmt_tests/collectextract16.testcase \ - sql_stmt_tests/collectextract17.testcase \ - sql_stmt_tests/collectextract18.testcase \ - sql_stmt_tests/collectextract19.testcase \ - sql_stmt_tests/collectextract1.testcase \ - sql_stmt_tests/collectextract20.testcase \ - sql_stmt_tests/collectextract21.testcase \ - sql_stmt_tests/collectextract22.testcase \ - sql_stmt_tests/collectextract2.testcase \ - sql_stmt_tests/collectextract3.testcase \ - sql_stmt_tests/collectextract4.testcase \ - sql_stmt_tests/collectextract5.testcase \ - sql_stmt_tests/collectextract6.testcase \ - sql_stmt_tests/collectextract7.testcase \ - sql_stmt_tests/collectextract8.testcase \ - sql_stmt_tests/collectextract9.testcase \ - sql_stmt_tests/compressgeometry10.testcase \ - sql_stmt_tests/compressgeometry11.testcase \ - sql_stmt_tests/compressgeometry12.testcase \ - sql_stmt_tests/compressgeometry13.testcase \ - sql_stmt_tests/compressgeometry14.testcase \ - sql_stmt_tests/compressgeometry15.testcase \ - sql_stmt_tests/compressgeometry17.testcase \ - sql_stmt_tests/compressgeometry18.testcase \ - sql_stmt_tests/compressgeometry19.testcase \ - sql_stmt_tests/compressgeometry1.testcase \ - sql_stmt_tests/compressgeometry20.testcase \ - sql_stmt_tests/compressgeometry21.testcase \ - sql_stmt_tests/compressgeometry22.testcase \ - sql_stmt_tests/compressgeometry23.testcase \ - sql_stmt_tests/compressgeometry24.testcase \ - sql_stmt_tests/compressgeometry25.testcase \ - sql_stmt_tests/compressgeometry26.testcase \ - sql_stmt_tests/compressgeometry27.testcase \ - sql_stmt_tests/compressgeometry28.testcase \ - sql_stmt_tests/compressgeometry29.testcase \ - sql_stmt_tests/compressgeometry2.testcase \ - sql_stmt_tests/compressgeometry30.testcase \ - sql_stmt_tests/compressgeometry31.testcase \ - sql_stmt_tests/compressgeometry32.testcase \ - sql_stmt_tests/compressgeometry33.testcase \ - sql_stmt_tests/compressgeometry34.testcase \ - sql_stmt_tests/compressgeometry35.testcase \ - sql_stmt_tests/compressgeometry36.testcase \ - sql_stmt_tests/compressgeometry37.testcase \ - sql_stmt_tests/compressgeometry38.testcase \ - sql_stmt_tests/compressgeometry39.testcase \ - sql_stmt_tests/compressgeometry3.testcase \ - sql_stmt_tests/compressgeometry40.testcase \ - sql_stmt_tests/compressgeometry41.testcase \ - sql_stmt_tests/compressgeometry42.testcase \ - sql_stmt_tests/compressgeometry43.testcase \ - sql_stmt_tests/compressgeometry44.testcase \ - sql_stmt_tests/compressgeometry45.testcase \ - sql_stmt_tests/compressgeometry46.testcase \ - sql_stmt_tests/compressgeometry47.testcase \ - sql_stmt_tests/compressgeometry48.testcase \ - sql_stmt_tests/compressgeometry49.testcase \ - sql_stmt_tests/compressgeometry4.testcase \ - sql_stmt_tests/compressgeometry50.testcase \ - sql_stmt_tests/compressgeometry51.testcase \ - sql_stmt_tests/compressgeometry52.testcase \ - sql_stmt_tests/compressgeometry53.testcase \ - sql_stmt_tests/compressgeometry54.testcase \ - sql_stmt_tests/compressgeometry55.testcase \ - sql_stmt_tests/compressgeometry56.testcase \ - sql_stmt_tests/compressgeometry57.testcase \ - sql_stmt_tests/compressgeometry58.testcase \ - sql_stmt_tests/compressgeometry59.testcase \ - sql_stmt_tests/compressgeometry5.testcase \ - sql_stmt_tests/compressgeometry60.testcase \ - sql_stmt_tests/compressgeometry61.testcase \ - sql_stmt_tests/compressgeometry62.testcase \ - sql_stmt_tests/compressgeometry63.testcase \ - sql_stmt_tests/compressgeometry64.testcase \ - sql_stmt_tests/compressgeometry65.testcase \ - sql_stmt_tests/compressgeometry66.testcase \ - sql_stmt_tests/compressgeometry67.testcase \ - sql_stmt_tests/compressgeometry68.testcase \ - sql_stmt_tests/compressgeometry69.testcase \ - sql_stmt_tests/compressgeometry6.testcase \ - sql_stmt_tests/compressgeometry7.testcase \ - sql_stmt_tests/compressgeometry8.testcase \ - sql_stmt_tests/compressgeometry9.testcase \ - sql_stmt_geos_tests/convexhull10.testcase \ - sql_stmt_geos_tests/convexhull1.testcase \ - sql_stmt_geos_tests/convexhull2.testcase \ - sql_stmt_geos_tests/convexhull3.testcase \ - sql_stmt_geos_tests/convexhull4.testcase \ - sql_stmt_geos_tests/convexhull5.testcase \ - sql_stmt_geos_tests/convexhull6.testcase \ - sql_stmt_geos_tests/convexhull7.testcase \ - sql_stmt_geos_tests/convexhull8.testcase \ - sql_stmt_geos_tests/convexhull9.testcase \ - sql_stmt_mathsql_tests/cos00.testcase \ - sql_stmt_mathsql_tests/cos0.testcase \ - sql_stmt_mathsql_tests/cos-text.testcase \ - sql_stmt_mathsql_tests/cot00.testcase \ - sql_stmt_mathsql_tests/cot0.testcase \ - sql_stmt_mathsql_tests/cotpi2.testcase \ - sql_stmt_mathsql_tests/cot-text.testcase \ - sql_stmt_geosadvanced_tests/coveredby1.testcase \ - sql_stmt_geosadvanced_tests/coveredby2.testcase \ - sql_stmt_geosadvanced_tests/covers1.testcase \ - sql_stmt_geosadvanced_tests/covers2.testcase \ - sql_stmt_geosadvanced_tests/covers_covered1.testcase \ - sql_stmt_geosadvanced_tests/covers_covered2.testcase \ - sql_stmt_geosadvanced_tests/covers_covered3.testcase \ - sql_stmt_geosadvanced_tests/covers_covered4.testcase \ - sql_stmt_geosadvanced_tests/covers_covered5.testcase \ - sql_stmt_geosadvanced_tests/covers_covered6.testcase \ - sql_stmt_geosadvanced_tests/covers_covered7.testcase \ - sql_stmt_geosadvanced_tests/createtopo10.testcase \ - sql_stmt_geosadvanced_tests/createtopo11.testcase \ - sql_stmt_geosadvanced_tests/createtopo12.testcase \ - sql_stmt_geosadvanced_tests/createtopo13.testcase \ - sql_stmt_geosadvanced_tests/createtopo14.testcase \ - sql_stmt_geosadvanced_tests/createtopo15.testcase \ - sql_stmt_geosadvanced_tests/createtopo16.testcase \ - sql_stmt_geosadvanced_tests/createtopo17.testcase \ - sql_stmt_geosadvanced_tests/createtopo18.testcase \ - sql_stmt_geosadvanced_tests/createtopo1.testcase \ - sql_stmt_geosadvanced_tests/createtopo2.testcase \ - sql_stmt_geosadvanced_tests/createtopo3.testcase \ - sql_stmt_geosadvanced_tests/createtopo4.testcase \ - sql_stmt_geosadvanced_tests/createtopo5.testcase \ - sql_stmt_geosadvanced_tests/createtopo6.testcase \ - sql_stmt_geosadvanced_tests/createtopo7.testcase \ - sql_stmt_geosadvanced_tests/createtopo8.testcase \ - sql_stmt_geosadvanced_tests/createtopo9.testcase \ - sql_stmt_mathsql_tests/degrees45.testcase \ - sql_stmt_mathsql_tests/degrees.testcase \ - sql_stmt_mathsql_tests/degreestext.testcase \ - sql_stmt_geos_tests/difference10.testcase \ - sql_stmt_geos_tests/difference11.testcase \ - sql_stmt_geos_tests/difference12.testcase \ - sql_stmt_geos_tests/difference1.testcase \ - sql_stmt_geos_tests/difference2.testcase \ - sql_stmt_geos_tests/difference3.testcase \ - sql_stmt_geos_tests/difference4.testcase \ - sql_stmt_geos_tests/difference6.testcase \ - sql_stmt_geos_tests/difference7.testcase \ - sql_stmt_geos_tests/difference8.testcase \ - sql_stmt_geos_tests/difference9.testcase \ - sql_stmt_tests/dimension1.testcase \ - sql_stmt_tests/dimension2.testcase \ - sql_stmt_tests/dimension3.testcase \ - sql_stmt_tests/dimension4.testcase \ - sql_stmt_tests/dimension5.testcase \ - sql_stmt_tests/dimension6.testcase \ - sql_stmt_tests/dimension7.testcase \ - sql_stmt_tests/dimension8.testcase \ - sql_stmt_tests/dissolve10.testcase \ - sql_stmt_tests/dissolve11.testcase \ - sql_stmt_tests/dissolve12.testcase \ - sql_stmt_tests/dissolve13.testcase \ - sql_stmt_tests/dissolve14.testcase \ - sql_stmt_tests/dissolve15.testcase \ - sql_stmt_tests/dissolve16.testcase \ - sql_stmt_tests/dissolve17.testcase \ - sql_stmt_tests/dissolve18.testcase \ - sql_stmt_tests/dissolve19.testcase \ - sql_stmt_tests/dissolve1.testcase \ - sql_stmt_tests/dissolve20.testcase \ - sql_stmt_tests/dissolve21.testcase \ - sql_stmt_tests/dissolve22.testcase \ - sql_stmt_tests/dissolve23.testcase \ - sql_stmt_tests/dissolve24.testcase \ - sql_stmt_tests/dissolve25.testcase \ - sql_stmt_tests/dissolve26.testcase \ - sql_stmt_tests/dissolve27.testcase \ - sql_stmt_tests/dissolve28.testcase \ - sql_stmt_tests/dissolve29.testcase \ - sql_stmt_tests/dissolve2.testcase \ - sql_stmt_tests/dissolve30.testcase \ - sql_stmt_tests/dissolve3.testcase \ - sql_stmt_tests/dissolve4.testcase \ - sql_stmt_tests/dissolve5.testcase \ - sql_stmt_tests/dissolve6.testcase \ - sql_stmt_tests/dissolve7.testcase \ - sql_stmt_tests/dissolve8.testcase \ - sql_stmt_tests/dissolve9.testcase \ - sql_stmt_geos_tests/distance1.testcase \ - sql_stmt_geos_tests/distance2.testcase \ - sql_stmt_geos_tests/distance3.testcase \ - sql_stmt_geos_tests/distance4.testcase \ - sql_stmt_geos_tests/distance5.testcase \ - sql_stmt_geos_tests/distance6.testcase \ - sql_stmt_geos_tests/distance7.testcase \ - sql_stmt_geos_tests/distance8.testcase \ - sql_stmt_geos_tests/distance9.testcase \ - sql_stmt_geos_tests/distance10.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr1.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr2.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr3.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr4.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr5.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr6.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr7.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr8.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr9.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr10.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr11.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr12.testcase \ - sql_stmt_tests/dm_m.testcase \ - sql_stmt_tests/DSC_1467.JPG \ - sql_stmt_tests/DSCN0042.JPG \ - sql_stmt_tests/emptyfile.txt \ - sql_stmt_tests/endpoint1.testcase \ - sql_stmt_tests/envelope1.testcase \ - sql_stmt_tests/envelope2.testcase \ - sql_stmt_tests/envelope3.testcase \ - sql_stmt_tests/envelope4.testcase \ - sql_stmt_tests/envelope5.testcase \ - sql_stmt_tests/envelope6.testcase \ - sql_stmt_tests/envelope7.testcase \ - sql_stmt_tests/envintersects10.testcase \ - sql_stmt_tests/envintersects1.testcase \ - sql_stmt_tests/envintersects2.testcase \ - sql_stmt_tests/envintersects3.testcase \ - sql_stmt_tests/envintersects4.testcase \ - sql_stmt_tests/envintersects5.testcase \ - sql_stmt_tests/envintersects6.testcase \ - sql_stmt_tests/envintersects7.testcase \ - sql_stmt_tests/envintersects8.testcase \ - sql_stmt_tests/envintersects9.testcase \ - sql_stmt_tests/ewkb10.testcase \ - sql_stmt_tests/ewkb11.testcase \ - sql_stmt_tests/ewkb12.testcase \ - sql_stmt_tests/ewkb1.testcase \ - sql_stmt_tests/ewkb2.testcase \ - sql_stmt_tests/ewkb3.testcase \ - sql_stmt_tests/ewkb4.testcase \ - sql_stmt_tests/ewkb5.testcase \ - sql_stmt_tests/ewkb6.testcase \ - sql_stmt_tests/ewkb7.testcase \ - sql_stmt_tests/ewkb8.testcase \ - sql_stmt_tests/ewkb9.testcase \ - sql_stmt_mathsql_tests/exp00.testcase \ - sql_stmt_mathsql_tests/exp0.testcase \ - sql_stmt_mathsql_tests/exp10.testcase \ - sql_stmt_mathsql_tests/exp1.testcase \ - sql_stmt_tests/expand1.testcase \ - sql_stmt_tests/expand2.testcase \ - sql_stmt_tests/expand3.testcase \ - sql_stmt_tests/expand4.testcase \ - sql_stmt_tests/expand5.testcase \ - sql_stmt_tests/expand6.testcase \ - sql_stmt_tests/expand7.testcase \ - sql_stmt_mathsql_tests/expneg.testcase \ - sql_stmt_mathsql_tests/exptext.testcase \ - sql_stmt_tests/extent1.testcase \ - sql_stmt_tests/extractmultilinestring1.testcase \ - sql_stmt_tests/extractmultilinestring2.testcase \ - sql_stmt_tests/extractmultilinestring3.testcase \ - sql_stmt_tests/extractmultipoint1.testcase \ - sql_stmt_tests/extractmultipoint2.testcase \ - sql_stmt_tests/extractmultipoint3.testcase \ - sql_stmt_tests/extractmultipolygon1.testcase \ - sql_stmt_tests/extractmultipolygon2.testcase \ - sql_stmt_tests/extractmultipolygon3.testcase \ - sql_stmt_tests/fath_m.testcase \ - sql_stmt_tests/fdo_ogr1.testcase \ - sql_stmt_tests/fdo_ogr2.testcase \ - sql_stmt_tests/fdo-wkb.sqlite_RO \ - sql_stmt_mathsql_tests/floor32.testcase \ - sql_stmt_mathsql_tests/floorint.testcase \ - sql_stmt_mathsql_tests/floornull.testcase \ - sql_stmt_tests/fromewkt1.testcase \ - sql_stmt_tests/fromewkt2.testcase \ - sql_stmt_tests/fromewkt3.testcase \ - sql_stmt_tests/fromewkt4.testcase \ - sql_stmt_tests/fromewkt5.testcase \ - sql_stmt_tests/fromewkt6.testcase \ - sql_stmt_tests/fromewkt7.testcase \ - sql_stmt_tests/fromewkt8.testcase \ - sql_stmt_tests/fromewkt9.testcase \ - sql_stmt_tests/fromewkt10.testcase \ - sql_stmt_tests/fromewkt11.testcase \ - sql_stmt_tests/fromewkt12.testcase \ - sql_stmt_tests/fromewkt13.testcase \ - sql_stmt_tests/fromewkt14.testcase \ - sql_stmt_tests/fromewkt15.testcase \ - sql_stmt_tests/fromewkt16.testcase \ - sql_stmt_tests/fromewkt17.testcase \ - sql_stmt_tests/fromewkt18.testcase \ - sql_stmt_tests/fromewkt19.testcase \ - sql_stmt_tests/fromewkt20.testcase \ - sql_stmt_tests/fromewkt22.testcase \ - sql_stmt_tests/fromewkt23.testcase \ - sql_stmt_tests/fromewkt24.testcase \ - sql_stmt_tests/fromewkt25.testcase \ - sql_stmt_tests/fromewkt26.testcase \ - sql_stmt_tests/fromewkt27.testcase \ - sql_stmt_tests/fromewkt28.testcase \ - sql_stmt_tests/fromewkt29.testcase \ - sql_stmt_tests/fromewkt30.testcase \ - sql_stmt_tests/fromewkt31.testcase \ - sql_stmt_tests/fromewkt32.testcase \ - sql_stmt_tests/fromewkt33.testcase \ - sql_stmt_tests/fromewkt34.testcase \ - sql_stmt_tests/fromewkt35.testcase \ - sql_stmt_tests/fromewkt36.testcase \ - sql_stmt_tests/fromewkt37.testcase \ - sql_stmt_tests/fromewkt38.testcase \ - sql_stmt_tests/fromewkt39.testcase \ - sql_stmt_tests/fromgeojson10.testcase \ - sql_stmt_tests/fromgeojson11.testcase \ - sql_stmt_tests/fromgeojson12.testcase \ - sql_stmt_tests/fromgeojson13.testcase \ - sql_stmt_tests/fromgeojson14.testcase \ - sql_stmt_tests/fromgeojson15.testcase \ - sql_stmt_tests/fromgeojson16.testcase \ - sql_stmt_tests/fromgeojson17.testcase \ - sql_stmt_tests/fromgeojson18.testcase \ - sql_stmt_tests/fromgeojson19.testcase \ - sql_stmt_tests/fromgeojson1.testcase \ - sql_stmt_tests/fromgeojson20.testcase \ - sql_stmt_tests/fromgeojson21.testcase \ - sql_stmt_tests/fromgeojson22.testcase \ - sql_stmt_tests/fromgeojson23.testcase \ - sql_stmt_tests/fromgeojson24.testcase \ - sql_stmt_tests/fromgeojson25.testcase \ - sql_stmt_tests/fromgeojson26.testcase \ - sql_stmt_tests/fromgeojson27.testcase \ - sql_stmt_tests/fromgeojson28.testcase \ - sql_stmt_tests/fromgeojson29.testcase \ - sql_stmt_tests/fromgeojson2.testcase \ - sql_stmt_tests/fromgeojson30.testcase \ - sql_stmt_tests/fromgeojson31.testcase \ - sql_stmt_tests/fromgeojson32.testcase \ - sql_stmt_tests/fromgeojson3.testcase \ - sql_stmt_tests/fromgeojson4.testcase \ - sql_stmt_tests/fromgeojson5.testcase \ - sql_stmt_tests/fromgeojson6.testcase \ - sql_stmt_tests/fromgeojson7.testcase \ - sql_stmt_tests/fromgeojson8.testcase \ - sql_stmt_tests/fromgeojson9.testcase \ - sql_stmt_tests/fromgml10.testcase \ - sql_stmt_tests/fromgml11.testcase \ - sql_stmt_tests/fromgml12.testcase \ - sql_stmt_tests/fromgml13.testcase \ - sql_stmt_tests/fromgml14.testcase \ - sql_stmt_tests/fromgml15.testcase \ - sql_stmt_tests/fromgml16.testcase \ - sql_stmt_tests/fromgml17.testcase \ - sql_stmt_tests/fromgml18.testcase \ - sql_stmt_tests/fromgml19.testcase \ - sql_stmt_tests/fromgml1.testcase \ - sql_stmt_tests/fromgml20.testcase \ - sql_stmt_tests/fromgml21.testcase \ - sql_stmt_tests/fromgml22.testcase \ - sql_stmt_tests/fromgml23.testcase \ - sql_stmt_tests/fromgml24.testcase \ - sql_stmt_tests/fromgml25.testcase \ - sql_stmt_tests/fromgml26.testcase \ - sql_stmt_tests/fromgml27.testcase \ - sql_stmt_tests/fromgml28.testcase \ - sql_stmt_tests/fromgml29.testcase \ - sql_stmt_tests/fromgml2.testcase \ - sql_stmt_tests/fromgml30.testcase \ - sql_stmt_tests/fromgml31.testcase \ - sql_stmt_tests/fromgml32.testcase \ - sql_stmt_tests/fromgml33.testcase \ - sql_stmt_tests/fromgml34.testcase \ - sql_stmt_tests/fromgml35.testcase \ - sql_stmt_tests/fromgml36.testcase \ - sql_stmt_tests/fromgml37.testcase \ - sql_stmt_tests/fromgml38.testcase \ - sql_stmt_tests/fromgml39.testcase \ - sql_stmt_tests/fromgml3.testcase \ - sql_stmt_tests/fromgml40.testcase \ - sql_stmt_tests/fromgml41.testcase \ - sql_stmt_proj_tests/fromgml42.testcase \ - sql_stmt_tests/fromgml43.testcase \ - sql_stmt_tests/fromgml4.testcase \ - sql_stmt_tests/fromgml5.testcase \ - sql_stmt_tests/fromgml6.testcase \ - sql_stmt_tests/fromgml7.testcase \ - sql_stmt_tests/fromgml8.testcase \ - sql_stmt_tests/fromgml9.testcase \ - sql_stmt_tests/fromWkb10.testcase \ - sql_stmt_tests/fromWkb11.testcase \ - sql_stmt_tests/fromWkb12.testcase \ - sql_stmt_tests/fromWkb13.testcase \ - sql_stmt_tests/fromWkb14.testcase \ - sql_stmt_tests/fromWkb15.testcase \ - sql_stmt_tests/fromWkb16.testcase \ - sql_stmt_tests/fromWkb17.testcase \ - sql_stmt_tests/fromWkb18.testcase \ - sql_stmt_tests/fromWkb19.testcase \ - sql_stmt_tests/fromWkb1.testcase \ - sql_stmt_tests/fromWkb20.testcase \ - sql_stmt_tests/fromWkb21.testcase \ - sql_stmt_tests/fromWkb22.testcase \ - sql_stmt_tests/fromWkb23.testcase \ - sql_stmt_tests/fromWkb2.testcase \ - sql_stmt_tests/fromWkb3.testcase \ - sql_stmt_tests/fromWkb4.testcase \ - sql_stmt_tests/fromWkb5.testcase \ - sql_stmt_tests/fromWkb6.testcase \ - sql_stmt_tests/fromWkb7.testcase \ - sql_stmt_tests/fromWkb8.testcase \ - sql_stmt_tests/fromWkb9.testcase \ - sql_stmt_tests/ft_m.testcase \ - sql_stmt_tests/garsmbr10.testcase \ - sql_stmt_tests/garsmbr11.testcase \ - sql_stmt_tests/garsmbr12.testcase \ - sql_stmt_tests/garsmbr13.testcase \ - sql_stmt_tests/garsmbr14.testcase \ - sql_stmt_tests/garsmbr15.testcase \ - sql_stmt_tests/garsmbr16.testcase \ - sql_stmt_tests/garsmbr17.testcase \ - sql_stmt_tests/garsmbr18.testcase \ - sql_stmt_tests/garsmbr1.testcase \ - sql_stmt_tests/garsmbr20.testcase \ - sql_stmt_tests/garsmbr21.testcase \ - sql_stmt_tests/garsmbr22.testcase \ - sql_stmt_tests/garsmbr23.testcase \ - sql_stmt_tests/garsmbr24.testcase \ - sql_stmt_tests/garsmbr25.testcase \ - sql_stmt_tests/garsmbr26.testcase \ - sql_stmt_tests/garsmbr27.testcase \ - sql_stmt_tests/garsmbr28.testcase \ - sql_stmt_tests/garsmbr29.testcase \ - sql_stmt_tests/garsmbr2.testcase \ - sql_stmt_tests/garsmbr30.testcase \ - sql_stmt_tests/garsmbr31.testcase \ - sql_stmt_tests/garsmbr32.testcase \ - sql_stmt_tests/garsmbr33.testcase \ - sql_stmt_tests/garsmbr34.testcase \ - sql_stmt_tests/garsmbr35.testcase \ - sql_stmt_tests/garsmbr36.testcase \ - sql_stmt_tests/garsmbr3.testcase \ - sql_stmt_tests/garsmbr4.testcase \ - sql_stmt_tests/garsmbr5.testcase \ - sql_stmt_tests/garsmbr6.testcase \ - sql_stmt_tests/garsmbr7.testcase \ - sql_stmt_tests/garsmbr8.testcase \ - sql_stmt_tests/garsmbr9.testcase \ - sql_stmt_tests/geodesic-len1.testcase \ - sql_stmt_tests/geodesic-len2.testcase \ - sql_stmt_tests/geodesic-len3.testcase \ - sql_stmt_tests/geodesic-len4.testcase \ - sql_stmt_tests/geodesic-len5.testcase \ - sql_stmt_tests/geodesic-len6.testcase \ - sql_stmt_tests/geodesic-len7.testcase \ - sql_stmt_tests/geodesic-len8.testcase \ - sql_stmt_tests/geojson1.testcase \ - sql_stmt_tests/geojson2.testcase \ - sql_stmt_tests/geojson3.testcase \ - sql_stmt_tests/geojson4.testcase \ - sql_stmt_tests/geojson5.testcase \ - sql_stmt_tests/geojson6.testcase \ - sql_stmt_tests/geomcollfromtext1.testcase \ - sql_stmt_tests/geomcollfromtext2.testcase \ - sql_stmt_tests/geomconstraints10.testcase \ - sql_stmt_tests/geomconstraints11.testcase \ - sql_stmt_tests/geomconstraints12.testcase \ - sql_stmt_tests/geomconstraints13.testcase \ - sql_stmt_tests/geomconstraints14.testcase \ - sql_stmt_tests/geomconstraints15.testcase \ - sql_stmt_tests/geomconstraints16.testcase \ - sql_stmt_tests/geomconstraints17.testcase \ - sql_stmt_tests/geomconstraints18.testcase \ - sql_stmt_tests/geomconstraints19.testcase \ - sql_stmt_tests/geomconstraints1.testcase \ - sql_stmt_tests/geomconstraints20.testcase \ - sql_stmt_tests/geomconstraints21.testcase \ - sql_stmt_tests/geomconstraints22.testcase \ - sql_stmt_tests/geomconstraints23.testcase \ - sql_stmt_tests/geomconstraints24.testcase \ - sql_stmt_tests/geomconstraints25.testcase \ - sql_stmt_tests/geomconstraints26.testcase \ - sql_stmt_tests/geomconstraints27.testcase \ - sql_stmt_tests/geomconstraints28.testcase \ - sql_stmt_tests/geomconstraints2.testcase \ - sql_stmt_tests/geomconstraints3.testcase \ - sql_stmt_tests/geomconstraints4.testcase \ - sql_stmt_tests/geomconstraints5.testcase \ - sql_stmt_tests/geomconstraints6.testcase \ - sql_stmt_tests/geomconstraints7.testcase \ - sql_stmt_tests/geomconstraints8.testcase \ - sql_stmt_tests/geomconstraints9.testcase \ - sql_stmt_tests/geometryn10.testcase \ - sql_stmt_tests/geometryn11.testcase \ - sql_stmt_tests/geometryn12.testcase \ - sql_stmt_tests/geometryn13.testcase \ - sql_stmt_tests/geometryn14.testcase \ - sql_stmt_tests/geometryn15.testcase \ - sql_stmt_tests/geometryn16.testcase \ - sql_stmt_tests/geometryn17.testcase \ - sql_stmt_tests/geometryn18.testcase \ - sql_stmt_tests/geometryn19.testcase \ - sql_stmt_tests/geometryn1.testcase \ - sql_stmt_tests/geometryn20.testcase \ - sql_stmt_tests/geometryn2.testcase \ - sql_stmt_tests/geometryn3.testcase \ - sql_stmt_tests/geometryn4.testcase \ - sql_stmt_tests/geometryn5.testcase \ - sql_stmt_tests/geometryn6.testcase \ - sql_stmt_tests/geometryn7.testcase \ - sql_stmt_tests/geometryn8.testcase \ - sql_stmt_tests/geometryn9.testcase \ - sql_stmt_tests/geometryn.testcase \ - sql_stmt_tests/geomfromewkb1.testcase \ - sql_stmt_tests/geomfromewkb2.testcase \ - sql_stmt_tests/geomfromkml10.testcase \ - sql_stmt_tests/geomfromkml11.testcase \ - sql_stmt_tests/geomfromkml12.testcase \ - sql_stmt_tests/geomfromkml13.testcase \ - sql_stmt_tests/geomfromkml14.testcase \ - sql_stmt_tests/geomfromkml15.testcase \ - sql_stmt_tests/geomfromkml16.testcase \ - sql_stmt_tests/geomfromkml17.testcase \ - sql_stmt_tests/geomfromkml18.testcase \ - sql_stmt_tests/geomfromkml19.testcase \ - sql_stmt_tests/geomfromkml1.testcase \ - sql_stmt_tests/geomfromkml20.testcase \ - sql_stmt_tests/geomfromkml21.testcase \ - sql_stmt_tests/geomfromkml22.testcase \ - sql_stmt_tests/geomfromkml23.testcase \ - sql_stmt_tests/geomfromkml2.testcase \ - sql_stmt_tests/geomfromkml3.testcase \ - sql_stmt_tests/geomfromkml4.testcase \ - sql_stmt_tests/geomfromkml5.testcase \ - sql_stmt_tests/geomfromkml6.testcase \ - sql_stmt_tests/geomfromkml7.testcase \ - sql_stmt_tests/geomfromkml8.testcase \ - sql_stmt_tests/geomfromkml9.testcase \ - sql_stmt_tests/geomfromtext1.testcase \ - sql_stmt_tests/geomfromtext2.testcase \ - sql_stmt_tests/geomfromtext3.testcase \ - sql_stmt_tests/geomfromtext4.testcase \ - sql_stmt_tests/geomfromtext5.testcase \ - sql_stmt_tests/geomfromtext6.testcase \ - sql_stmt_tests/geomfromtext7.testcase \ - sql_stmt_tests/geomfromtext8.testcase \ - sql_stmt_tests/geomfromtext9.testcase \ - sql_stmt_tests/geomfromtext10.testcase \ - sql_stmt_tests/geomfromtext11.testcase \ - sql_stmt_tests/geomfromtext12.testcase \ - sql_stmt_tests/geomfromtext13.testcase \ - sql_stmt_tests/geomfromtext14.testcase \ - sql_stmt_tests/geomfromtext15.testcase \ - sql_stmt_tests/geomfromtext16.testcase \ - sql_stmt_tests/geomfromtext17.testcase \ - sql_stmt_tests/geomfromtext18.testcase \ - sql_stmt_tests/geomfromtext19.testcase \ - sql_stmt_tests/geomfromtext20.testcase \ - sql_stmt_tests/geomfromtext21.testcase \ - sql_stmt_tests/geomfromtext22.testcase \ - sql_stmt_tests/geomfromtext23.testcase \ - sql_stmt_tests/geomfromtext24.testcase \ - sql_stmt_tests/geomfromtext25.testcase \ - sql_stmt_tests/geomfromtext26.testcase \ - sql_stmt_tests/geomfromtext27.testcase \ - sql_stmt_tests/geomfromtext28.testcase \ - sql_stmt_tests/geomfromtext29.testcase \ - sql_stmt_tests/geomfromtext30.testcase \ - sql_stmt_tests/geomfromtext31.testcase \ - sql_stmt_tests/geomfromtext32.testcase \ - sql_stmt_tests/geomfromtext33.testcase \ - sql_stmt_tests/geomfromtext34.testcase \ - sql_stmt_tests/geomfromtext35.testcase \ - sql_stmt_tests/geomfromtext36.testcase \ - sql_stmt_tests/geomfromtext37.testcase \ - sql_stmt_tests/geomfromtext38.testcase \ - sql_stmt_tests/geomfromtext39.testcase \ - sql_stmt_tests/geomfromtext40.testcase \ - sql_stmt_tests/geomfromtext41.testcase \ - sql_stmt_tests/geomfromtext42.testcase \ - sql_stmt_tests/geomfromtext43.testcase \ - sql_stmt_tests/geomfromtext44.testcase \ - sql_stmt_tests/geomfromtext45.testcase \ - sql_stmt_tests/geomtype10.testcase \ - sql_stmt_tests/geomtype11.testcase \ - sql_stmt_tests/geomtype12.testcase \ - sql_stmt_tests/geomtype13.testcase \ - sql_stmt_tests/geomtype14.testcase \ - sql_stmt_tests/geomtype15.testcase \ - sql_stmt_tests/geomtype16.testcase \ - sql_stmt_tests/geomtype17.testcase \ - sql_stmt_tests/geomtype18.testcase \ - sql_stmt_tests/geomtype19.testcase \ - sql_stmt_tests/geomtype1.testcase \ - sql_stmt_tests/geomtype20.testcase \ - sql_stmt_tests/geomtype21.testcase \ - sql_stmt_tests/geomtype22.testcase \ - sql_stmt_tests/geomtype23.testcase \ - sql_stmt_tests/geomtype24.testcase \ - sql_stmt_tests/geomtype25.testcase \ - sql_stmt_tests/geomtype26.testcase \ - sql_stmt_tests/geomtype27.testcase \ - sql_stmt_tests/geomtype28.testcase \ - sql_stmt_tests/geomtype29.testcase \ - sql_stmt_tests/geomtype2.testcase \ - sql_stmt_tests/geomtype30.testcase \ - sql_stmt_tests/geomtype31.testcase \ - sql_stmt_tests/geomtype32.testcase \ - sql_stmt_tests/geomtype33.testcase \ - sql_stmt_tests/geomtype34.testcase \ - sql_stmt_tests/geomtype35.testcase \ - sql_stmt_tests/geomtype36.testcase \ - sql_stmt_tests/geomtype37.testcase \ - sql_stmt_tests/geomtype38.testcase \ - sql_stmt_tests/geomtype39.testcase \ - sql_stmt_tests/geomtype3.testcase \ - sql_stmt_tests/geomtype40.testcase \ - sql_stmt_tests/geomtype41.testcase \ - sql_stmt_tests/geomtype42.testcase \ - sql_stmt_tests/geomtype43.testcase \ - sql_stmt_tests/geomtype44.testcase \ - sql_stmt_tests/geomtype45.testcase \ - sql_stmt_tests/geomtype46.testcase \ - sql_stmt_tests/geomtype47.testcase \ - sql_stmt_tests/geomtype48.testcase \ - sql_stmt_tests/geomtype49.testcase \ - sql_stmt_tests/geomtype4.testcase \ - sql_stmt_tests/geomtype50.testcase \ - sql_stmt_tests/geomtype51.testcase \ - sql_stmt_tests/geomtype52.testcase \ - sql_stmt_tests/geomtype53.testcase \ - sql_stmt_tests/geomtype54.testcase \ - sql_stmt_tests/geomtype55.testcase \ - sql_stmt_tests/geomtype56.testcase \ - sql_stmt_tests/geomtype57.testcase \ - sql_stmt_tests/geomtype58.testcase \ - sql_stmt_tests/geomtype59.testcase \ - sql_stmt_tests/geomtype5.testcase \ - sql_stmt_tests/geomtype60.testcase \ - sql_stmt_tests/geomtype61.testcase \ - sql_stmt_tests/geomtype62.testcase \ - sql_stmt_tests/geomtype63.testcase \ - sql_stmt_tests/geomtype64.testcase \ - sql_stmt_tests/geomtype65.testcase \ - sql_stmt_tests/geomtype66.testcase \ - sql_stmt_tests/geomtype67.testcase \ - sql_stmt_tests/geomtype68.testcase \ - sql_stmt_tests/geomtype69.testcase \ - sql_stmt_tests/geomtype6.testcase \ - sql_stmt_tests/geomtype7.testcase \ - sql_stmt_tests/geomtype8.testcase \ - sql_stmt_tests/geomtype9.testcase \ - sql_stmt_tests/gml10.testcase \ - sql_stmt_tests/gml11.testcase \ - sql_stmt_tests/gml12.testcase \ - sql_stmt_tests/gml13.testcase \ - sql_stmt_tests/gml14.testcase \ - sql_stmt_tests/gml15.testcase \ - sql_stmt_tests/gml16.testcase \ - sql_stmt_tests/gml1.testcase \ - sql_stmt_tests/gml2.testcase \ - sql_stmt_tests/gml3.testcase \ - sql_stmt_tests/gml4.testcase \ - sql_stmt_tests/gml5.testcase \ - sql_stmt_tests/gml6.testcase \ - sql_stmt_tests/gml7.testcase \ - sql_stmt_tests/gml8.testcase \ - sql_stmt_tests/gml9.testcase \ - sql_stmt_tests/greatcircle-badblob.testcase \ - sql_stmt_tests/greatcircle-poly2.testcase \ - sql_stmt_tests/greatcircle-poly3.testcase \ - sql_stmt_tests/greatcircle-poly4.testcase \ - sql_stmt_tests/greatcircle-poly5.testcase \ - sql_stmt_tests/greatcircle-poly6.testcase \ - sql_stmt_tests/greatcircle-poly7.testcase \ - sql_stmt_tests/greatcircle-poly.testcase \ - sql_stmt_tests/greatcircle.testcase \ - sql_stmt_tests/greatcircle-text.testcase \ - sql_stmt_geosadvanced_tests/hausdorffdistance1.testcase \ - sql_stmt_geosadvanced_tests/hausdorffdistance2.testcase \ - sql_stmt_geosadvanced_tests/hausdorffdistance3.testcase \ - sql_stmt_geosadvanced_tests/hausdorffdistance4.testcase \ - sql_stmt_geosadvanced_tests/hausdorffdistance5.testcase \ - sql_stmt_geosadvanced_tests/hausdorffdistance6.testcase \ - sql_stmt_geosadvanced_tests/hausdorffdistance7.testcase \ - sql_stmt_tests/ind_ch_m.testcase \ - sql_stmt_tests/ind_ft_m.testcase \ - sql_stmt_tests/ind_yd_m.testcase \ - sql_stmt_tests/in_m.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint10.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint11.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint12.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint13.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint14.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint1.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint2.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint3.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint4.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint5.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint6.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint7.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint8.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint9.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint10.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint11.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint12.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint13.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint14.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint1.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint2.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint3.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint4.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint5.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint6.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint7.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint8.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint9.testcase \ - sql_stmt_geos_tests/intersection10.testcase \ - sql_stmt_geos_tests/intersection11.testcase \ - sql_stmt_geos_tests/intersection12.testcase \ - sql_stmt_geos_tests/intersection1.testcase \ - sql_stmt_geos_tests/intersection2.testcase \ - sql_stmt_geos_tests/intersection3.testcase \ - sql_stmt_geos_tests/intersection4.testcase \ - sql_stmt_geos_tests/intersection5.testcase \ - sql_stmt_geos_tests/intersection6.testcase \ - sql_stmt_geos_tests/intersection7.testcase \ - sql_stmt_geos_tests/intersection8.testcase \ - sql_stmt_geos_tests/intersection9.testcase \ - sql_stmt_tests/is3d1.testcase \ - sql_stmt_tests/is3d2.testcase \ - sql_stmt_tests/is3d3.testcase \ - sql_stmt_tests/is3d4.testcase \ - sql_stmt_tests/is3d5.testcase \ - sql_stmt_tests/is3d6.testcase \ - sql_stmt_geos_tests/isclosed10.testcase \ - sql_stmt_geos_tests/isclosed1.testcase \ - sql_stmt_geos_tests/isclosed2.testcase \ - sql_stmt_geos_tests/isclosed3.testcase \ - sql_stmt_geos_tests/isclosed4.testcase \ - sql_stmt_geos_tests/isclosed5.testcase \ - sql_stmt_geos_tests/isclosed6.testcase \ - sql_stmt_geos_tests/isclosed7.testcase \ - sql_stmt_geos_tests/isclosed8.testcase \ - sql_stmt_geos_tests/isclosed9.testcase \ - sql_stmt_tests/isempty2.testcase \ - sql_stmt_tests/isempty3.testcase \ - sql_stmt_tests/isempty4.testcase \ - sql_stmt_tests/isempty.testcase \ - sql_stmt_tests/ismeasured1.testcase \ - sql_stmt_tests/ismeasured2.testcase \ - sql_stmt_tests/ismeasured3.testcase \ - sql_stmt_tests/ismeasured4.testcase \ - sql_stmt_tests/ismeasured5.testcase \ - sql_stmt_tests/ismeasured6.testcase \ - sql_stmt_geos_tests/isring1.testcase \ - sql_stmt_geos_tests/isring2.testcase \ - sql_stmt_geos_tests/isring3.testcase \ - sql_stmt_geos_tests/isring4.testcase \ - sql_stmt_geos_tests/isring5.testcase \ - sql_stmt_geos_tests/isring6.testcase \ - sql_stmt_geos_tests/isring7.testcase \ - sql_stmt_geos_tests/isring8.testcase \ - sql_stmt_geos_tests/isring9.testcase \ - sql_stmt_geos_tests/issimple1.testcase \ - sql_stmt_geos_tests/issimple2.testcase \ - sql_stmt_geos_tests/issimple3.testcase \ - sql_stmt_geos_tests/issimple4.testcase \ - sql_stmt_geos_tests/issimple5.testcase \ - sql_stmt_geos_tests/issimple6.testcase \ - sql_stmt_geos_tests/isvalid10.testcase \ - sql_stmt_geos_tests/isvalid11.testcase \ - sql_stmt_geos_tests/isvalid12.testcase \ - sql_stmt_geos_tests/isvalid13.testcase \ - sql_stmt_geos_tests/isvalid14.testcase \ - sql_stmt_geos_tests/isvalid15.testcase \ - sql_stmt_geos_tests/isvalid16.testcase \ - sql_stmt_geos_tests/isvalid17.testcase \ - sql_stmt_geos_tests/isvalid18.testcase \ - sql_stmt_geos_tests/isvalid19.testcase \ - sql_stmt_geos_tests/isvalid1.testcase \ - sql_stmt_geos_tests/isvalid20.testcase \ - sql_stmt_geos_tests/isvalid2.testcase \ - sql_stmt_geos_tests/isvalid3.testcase \ - sql_stmt_geos_tests/isvalid4.testcase \ - sql_stmt_geos_tests/isvalid5.testcase \ - sql_stmt_geos_tests/isvalid6.testcase \ - sql_stmt_geos_tests/isvalid7.testcase \ - sql_stmt_geos_tests/isvalid8.testcase \ - sql_stmt_geos_tests/isvalid9.testcase \ - sql_stmt_tests/isXblob5.testcase \ - sql_stmt_tests/isXblob6.testcase \ - sql_stmt_tests/isXblob7.testcase \ - sql_stmt_tests/k3b-icon.png \ - sql_stmt_tests/km_m.testcase \ - sql_stmt_tests/ktorrent_grad1.jpg \ - sql_stmt_tests/ktorrent_sidebar.gif \ - sql_stmt_tests/La_folla_durante_il_Palio.jpg \ - sql_stmt_tests/lhr1.testcase \ - sql_stmt_tests/lhr2.testcase \ - sql_stmt_tests/lhr3.testcase \ - sql_stmt_tests/lhr4.testcase \ - sql_stmt_tests/lhr5.testcase \ - sql_stmt_tests/lhr6.testcase \ - sql_stmt_tests/linefromtext1.testcase \ - sql_stmt_tests/linefromtext2.testcase \ - sql_stmt_geosadvanced_tests/linemerge10.testcase \ - sql_stmt_geosadvanced_tests/linemerge1.testcase \ - sql_stmt_geosadvanced_tests/linemerge2.testcase \ - sql_stmt_geosadvanced_tests/linemerge3.testcase \ - sql_stmt_geosadvanced_tests/linemerge4.testcase \ - sql_stmt_geosadvanced_tests/linemerge5.testcase \ - sql_stmt_geosadvanced_tests/linemerge6.testcase \ - sql_stmt_geosadvanced_tests/linemerge7.testcase \ - sql_stmt_geosadvanced_tests/linemerge8.testcase \ - sql_stmt_geosadvanced_tests/linemerge9.testcase \ - sql_stmt_tests/linesfromrings1.testcase \ - sql_stmt_tests/linesfromrings2.testcase \ - sql_stmt_tests/linesfromrings3.testcase \ - sql_stmt_tests/linesfromrings4.testcase \ - sql_stmt_tests/linesfromrings5.testcase \ - sql_stmt_tests/linesfromrings6.testcase \ - sql_stmt_tests/linesfromrings7.testcase \ - sql_stmt_geosadvanced_tests/linesnodes10.testcase \ - sql_stmt_geosadvanced_tests/linesnodes11.testcase \ - sql_stmt_geosadvanced_tests/linesnodes12.testcase \ - sql_stmt_geosadvanced_tests/linesnodes13.testcase \ - sql_stmt_geosadvanced_tests/linesnodes14.testcase \ - sql_stmt_geosadvanced_tests/linesnodes15.testcase \ - sql_stmt_geosadvanced_tests/linesnodes16.testcase \ - sql_stmt_geosadvanced_tests/linesnodes17.testcase \ - sql_stmt_geosadvanced_tests/linesnodes18.testcase \ - sql_stmt_geosadvanced_tests/linesnodes19.testcase \ - sql_stmt_geosadvanced_tests/linesnodes1.testcase \ - sql_stmt_geosadvanced_tests/linesnodes2.testcase \ - sql_stmt_geosadvanced_tests/linesnodes3.testcase \ - sql_stmt_geosadvanced_tests/linesnodes4.testcase \ - sql_stmt_geosadvanced_tests/linesnodes5.testcase \ - sql_stmt_geosadvanced_tests/linesnodes6.testcase \ - sql_stmt_geosadvanced_tests/linesnodes7.testcase \ - sql_stmt_geosadvanced_tests/linesnodes8.testcase \ - sql_stmt_geosadvanced_tests/linesnodes9.testcase \ - sql_stmt_geosadvanced_tests/linesubstring10.testcase \ - sql_stmt_geosadvanced_tests/linesubstring11.testcase \ - sql_stmt_geosadvanced_tests/linesubstring12.testcase \ - sql_stmt_geosadvanced_tests/linesubstring13.testcase \ - sql_stmt_geosadvanced_tests/linesubstring14.testcase \ - sql_stmt_geosadvanced_tests/linesubstring15.testcase \ - sql_stmt_geosadvanced_tests/linesubstring16.testcase \ - sql_stmt_geosadvanced_tests/linesubstring17.testcase \ - sql_stmt_geosadvanced_tests/linesubstring18.testcase \ - sql_stmt_geosadvanced_tests/linesubstring19.testcase \ - sql_stmt_geosadvanced_tests/linesubstring1.testcase \ - sql_stmt_geosadvanced_tests/linesubstring20.testcase \ - sql_stmt_geosadvanced_tests/linesubstring21.testcase \ - sql_stmt_geosadvanced_tests/linesubstring22.testcase \ - sql_stmt_geosadvanced_tests/linesubstring23.testcase \ - sql_stmt_geosadvanced_tests/linesubstring24.testcase \ - sql_stmt_geosadvanced_tests/linesubstring25.testcase \ - sql_stmt_geosadvanced_tests/linesubstring26.testcase \ - sql_stmt_geosadvanced_tests/linesubstring2.testcase \ - sql_stmt_geosadvanced_tests/linesubstring3.testcase \ - sql_stmt_geosadvanced_tests/linesubstring4.testcase \ - sql_stmt_geosadvanced_tests/linesubstring5.testcase \ - sql_stmt_geosadvanced_tests/linesubstring6.testcase \ - sql_stmt_geosadvanced_tests/linesubstring7.testcase \ - sql_stmt_geosadvanced_tests/linesubstring8.testcase \ - sql_stmt_geosadvanced_tests/linesubstring9.testcase \ - sql_stmt_tests/link_m.testcase \ - sql_stmt_tests/locatemeasure10.testcase \ - sql_stmt_tests/locatemeasure11.testcase \ - sql_stmt_tests/locatemeasure12.testcase \ - sql_stmt_tests/locatemeasure13.testcase \ - sql_stmt_tests/locatemeasure14.testcase \ - sql_stmt_tests/locatemeasure15.testcase \ - sql_stmt_tests/locatemeasure16.testcase \ - sql_stmt_tests/locatemeasure17.testcase \ - sql_stmt_tests/locatemeasure1.testcase \ - sql_stmt_tests/locatemeasure2.testcase \ - sql_stmt_tests/locatemeasure3.testcase \ - sql_stmt_tests/locatemeasure4.testcase \ - sql_stmt_tests/locatemeasure5.testcase \ - sql_stmt_tests/locatemeasure6.testcase \ - sql_stmt_tests/locatemeasure7.testcase \ - sql_stmt_tests/locatemeasure8.testcase \ - sql_stmt_tests/locatemeasure9.testcase \ - sql_stmt_geosadvanced_tests/locatepoint10.testcase \ - sql_stmt_geosadvanced_tests/locatepoint11.testcase \ - sql_stmt_geosadvanced_tests/locatepoint12.testcase \ - sql_stmt_geosadvanced_tests/locatepoint1.testcase \ - sql_stmt_geosadvanced_tests/locatepoint2.testcase \ - sql_stmt_geosadvanced_tests/locatepoint3.testcase \ - sql_stmt_geosadvanced_tests/locatepoint4.testcase \ - sql_stmt_geosadvanced_tests/locatepoint5.testcase \ - sql_stmt_geosadvanced_tests/locatepoint6.testcase \ - sql_stmt_geosadvanced_tests/locatepoint7.testcase \ - sql_stmt_geosadvanced_tests/locatepoint8.testcase \ - sql_stmt_geosadvanced_tests/locatepoint9.testcase \ - sql_stmt_mathsql_tests/log10-0.0.testcase \ - sql_stmt_mathsql_tests/log10-100.0.testcase \ - sql_stmt_mathsql_tests/log10-100.testcase \ - sql_stmt_mathsql_tests/log10-text.testcase \ - sql_stmt_mathsql_tests/log2-0.0.testcase \ - sql_stmt_mathsql_tests/log2-0.testcase \ - sql_stmt_mathsql_tests/log2-4.0.testcase \ - sql_stmt_mathsql_tests/log2-4.testcase \ - sql_stmt_mathsql_tests/log2-text.testcase \ - sql_stmt_mathsql_tests/logn00.testcase \ - sql_stmt_mathsql_tests/logn0.testcase \ - sql_stmt_mathsql_tests/logn10.testcase \ - sql_stmt_mathsql_tests/logn1.testcase \ - sql_stmt_mathsql_tests/logn2-01.testcase \ - sql_stmt_mathsql_tests/logn2-02.testcase \ - sql_stmt_mathsql_tests/logn2-2.2.testcase \ - sql_stmt_mathsql_tests/logn2-4.2int.testcase \ - sql_stmt_mathsql_tests/logn2-4.2.testcase \ - sql_stmt_mathsql_tests/logn2-text2.testcase \ - sql_stmt_mathsql_tests/logn2-text3.testcase \ - sql_stmt_mathsql_tests/logn2-text4.testcase \ - sql_stmt_mathsql_tests/logn2-text.testcase \ - sql_stmt_mathsql_tests/logn-text.testcase \ - sql_stmt_tests/makeline10.testcase \ - sql_stmt_tests/makeline11.testcase \ - sql_stmt_tests/makeline12.testcase \ - sql_stmt_tests/makeline13.testcase \ - sql_stmt_tests/makeline14.testcase \ - sql_stmt_tests/makeline15.testcase \ - sql_stmt_tests/makeline16.testcase \ - sql_stmt_tests/makeline17.testcase \ - sql_stmt_tests/makeline18.testcase \ - sql_stmt_tests/makeline19.testcase \ - sql_stmt_tests/makeline20.testcase \ - sql_stmt_tests/makeline21.testcase \ - sql_stmt_tests/makeline22.testcase \ - sql_stmt_tests/makeline23.testcase \ - sql_stmt_tests/makeline24.testcase \ - sql_stmt_tests/makeline2.testcase \ - sql_stmt_tests/makeline3.testcase \ - sql_stmt_tests/makeline4.testcase \ - sql_stmt_tests/makeline5.testcase \ - sql_stmt_tests/makeline6.testcase \ - sql_stmt_tests/makeline7.testcase \ - sql_stmt_tests/makeline8.testcase \ - sql_stmt_tests/makeline9.testcase \ - sql_stmt_tests/makeline.testcase \ - sql_stmt_tests/makepoint10.testcase \ - sql_stmt_tests/makepoint11.testcase \ - sql_stmt_tests/makepoint12.testcase \ - sql_stmt_tests/makepoint13.testcase \ - sql_stmt_tests/makepoint14.testcase \ - sql_stmt_tests/makepoint15.testcase \ - sql_stmt_tests/makepoint1.testcase \ - sql_stmt_tests/makepoint2.testcase \ - sql_stmt_tests/makepoint3.testcase \ - sql_stmt_tests/makepoint4.testcase \ - sql_stmt_tests/makepoint5.testcase \ - sql_stmt_tests/makepoint6.testcase \ - sql_stmt_tests/makepoint7.testcase \ - sql_stmt_tests/makepoint8.testcase \ - sql_stmt_tests/makepoint9.testcase \ - sql_stmt_tests/makepointm-null1.testcase \ - sql_stmt_tests/makepointm-null2.testcase \ - sql_stmt_tests/makepointm-null3.testcase \ - sql_stmt_tests/makepointm-null4.testcase \ - sql_stmt_tests/makepointm-null5.testcase \ - sql_stmt_tests/makepointm-null6.testcase \ - sql_stmt_tests/makepointm-null7.testcase \ - sql_stmt_tests/makepointm-null8.testcase \ - sql_stmt_tests/makepoint-null1.testcase \ - sql_stmt_tests/makepoint-null2.testcase \ - sql_stmt_tests/makepoint-null3.testcase \ - sql_stmt_tests/makepoint-null4.testcase \ - sql_stmt_tests/makepoint-null5.testcase \ - sql_stmt_tests/makepoint-null6.testcase \ - sql_stmt_tests/makepoint-null7.testcase \ - sql_stmt_tests/makepointzm-null10.testcase \ - sql_stmt_tests/makepointzm-null1.testcase \ - sql_stmt_tests/makepointzm-null2.testcase \ - sql_stmt_tests/makepointzm-null3.testcase \ - sql_stmt_tests/makepointzm-null4.testcase \ - sql_stmt_tests/makepointzm-null5.testcase \ - sql_stmt_tests/makepointzm-null6.testcase \ - sql_stmt_tests/makepointzm-null7.testcase \ - sql_stmt_tests/makepointzm-null8.testcase \ - sql_stmt_tests/makepointzm-null9.testcase \ - sql_stmt_tests/makepointz-null1.testcase \ - sql_stmt_tests/makepointz-null2.testcase \ - sql_stmt_tests/makepointz-null3.testcase \ - sql_stmt_tests/makepointz-null4.testcase \ - sql_stmt_tests/makepointz-null5.testcase \ - sql_stmt_tests/makepointz-null6.testcase \ - sql_stmt_tests/makepointz-null7.testcase \ - sql_stmt_tests/makepointz-null8.testcase \ - sql_stmt_tests/maxm1.testcase \ - sql_stmt_tests/maxm2.testcase \ - sql_stmt_tests/maxm3.testcase \ - sql_stmt_tests/maxm4.testcase \ - sql_stmt_tests/maxm5.testcase \ - sql_stmt_tests/maxm6.testcase \ - sql_stmt_tests/maxm7.testcase \ - sql_stmt_tests/maxz1.testcase \ - sql_stmt_tests/maxz2.testcase \ - sql_stmt_tests/maxz3.testcase \ - sql_stmt_tests/maxz4.testcase \ - sql_stmt_tests/maxz5.testcase \ - sql_stmt_tests/maxz6.testcase \ - sql_stmt_tests/maxz7.testcase \ - sql_stmt_tests/mbr10.testcase \ - sql_stmt_tests/mbr11.testcase \ - sql_stmt_tests/mbr12.testcase \ - sql_stmt_tests/mbr13.testcase \ - sql_stmt_tests/mbr14.testcase \ - sql_stmt_tests/mbr15.testcase \ - sql_stmt_tests/mbr16.testcase \ - sql_stmt_tests/mbr17.testcase \ - sql_stmt_tests/mbr18.testcase \ - sql_stmt_tests/mbr19.testcase \ - sql_stmt_tests/mbr1.testcase \ - sql_stmt_tests/mbr20.testcase \ - sql_stmt_tests/mbr21.testcase \ - sql_stmt_tests/mbr22.testcase \ - sql_stmt_tests/mbr23.testcase \ - sql_stmt_tests/mbr24.testcase \ - sql_stmt_tests/mbr25.testcase \ - sql_stmt_tests/mbr26.testcase \ - sql_stmt_tests/mbr27.testcase \ - sql_stmt_tests/mbr28.testcase \ - sql_stmt_tests/mbr29.testcase \ - sql_stmt_tests/mbr2.testcase \ - sql_stmt_tests/mbr30.testcase \ - sql_stmt_tests/mbr31.testcase \ - sql_stmt_tests/mbr32.testcase \ - sql_stmt_tests/mbr3.testcase \ - sql_stmt_tests/mbr4.testcase \ - sql_stmt_tests/mbr5.testcase \ - sql_stmt_tests/mbr6.testcase \ - sql_stmt_tests/mbr7.testcase \ - sql_stmt_tests/mbr8.testcase \ - sql_stmt_tests/mbr9.testcase \ - sql_stmt_tests/mbrminmax1.testcase \ - sql_stmt_tests/mbrminmax2.testcase \ - sql_stmt_tests/mbrminmax3.testcase \ - sql_stmt_tests/mbrminmax4.testcase \ - sql_stmt_tests/mbrminmax5.testcase \ - sql_stmt_tests/mbrminmax6.testcase \ - sql_stmt_tests/mbrminmax7.testcase \ - sql_stmt_tests/mbrminmax8.testcase \ - sql_stmt_tests/m_ch.testcase \ - sql_stmt_tests/m_cm.testcase \ - sql_stmt_tests/m_dm.testcase \ - sql_stmt_tests/m_fath.testcase \ - sql_stmt_tests/m_ft.testcase \ - sql_stmt_tests/m_ft-text.testcase \ - sql_stmt_tests/mi_m.testcase \ - sql_stmt_tests/m_ind_ch.testcase \ - sql_stmt_tests/m_ind_ft.testcase \ - sql_stmt_tests/m_ind_yd.testcase \ - sql_stmt_tests/minm1.testcase \ - sql_stmt_tests/minm2.testcase \ - sql_stmt_tests/minm3.testcase \ - sql_stmt_tests/minm4.testcase \ - sql_stmt_tests/minm5.testcase \ - sql_stmt_tests/minm6.testcase \ - sql_stmt_tests/m_in.testcase \ - sql_stmt_tests/m_in_us.testcase \ - sql_stmt_tests/minz1.testcase \ - sql_stmt_tests/minz2.testcase \ - sql_stmt_tests/minz3.testcase \ - sql_stmt_tests/minz4.testcase \ - sql_stmt_tests/minz5.testcase \ - sql_stmt_tests/minz6.testcase \ - sql_stmt_tests/m_km.testcase \ - sql_stmt_tests/mlinefromtext1.testcase \ - sql_stmt_tests/mlinefromtext2.testcase \ - sql_stmt_tests/m_ln.testcase \ - sql_stmt_tests/m_mi.testcase \ - sql_stmt_tests/m_mm.testcase \ - sql_stmt_tests/mm_m.testcase \ - sql_stmt_tests/m_nm.testcase \ - sql_stmt_tests/mpointfromtext1.testcase \ - sql_stmt_tests/mpointfromtext2.testcase \ - sql_stmt_tests/mpolygonfromtext1.testcase \ - sql_stmt_tests/mpolygonfromtext2.testcase \ - sql_stmt_tests/m_us_ch.testcase \ - sql_stmt_tests/m_us_ft.testcase \ - sql_stmt_tests/m_usmi.testcase \ - sql_stmt_tests/m_yd.testcase \ - sql_stmt_tests/m_yd_us.testcase \ - sql_stmt_tests/ndims1.testcase \ - sql_stmt_tests/ndims2.testcase \ - sql_stmt_tests/ndims3.testcase \ - sql_stmt_tests/ndims4.testcase \ - sql_stmt_tests/ndims5.testcase \ - sql_stmt_tests/ndims6.testcase \ - sql_stmt_tests/nm_m.testcase \ - sql_stmt_tests/normalizelonlat10.testcase \ - sql_stmt_tests/normalizelonlat11.testcase \ - sql_stmt_tests/normalizelonlat12.testcase \ - sql_stmt_tests/normalizelonlat13.testcase \ - sql_stmt_tests/normalizelonlat14.testcase \ - sql_stmt_tests/normalizelonlat15.testcase \ - sql_stmt_tests/normalizelonlat16.testcase \ - sql_stmt_tests/normalizelonlat17.testcase \ - sql_stmt_tests/normalizelonlat18.testcase \ - sql_stmt_tests/normalizelonlat19.testcase \ - sql_stmt_tests/normalizelonlat1.testcase \ - sql_stmt_tests/normalizelonlat20.testcase \ - sql_stmt_tests/normalizelonlat21.testcase \ - sql_stmt_tests/normalizelonlat22.testcase \ - sql_stmt_tests/normalizelonlat23.testcase \ - sql_stmt_tests/normalizelonlat24.testcase \ - sql_stmt_tests/normalizelonlat25.testcase \ - sql_stmt_tests/normalizelonlat26.testcase \ - sql_stmt_tests/normalizelonlat27.testcase \ - sql_stmt_tests/normalizelonlat2.testcase \ - sql_stmt_tests/normalizelonlat3.testcase \ - sql_stmt_tests/normalizelonlat4.testcase \ - sql_stmt_tests/normalizelonlat5.testcase \ - sql_stmt_tests/normalizelonlat6.testcase \ - sql_stmt_tests/normalizelonlat7.testcase \ - sql_stmt_tests/normalizelonlat8.testcase \ - sql_stmt_tests/normalizelonlat9.testcase \ - sql_stmt_tests/npoints1.testcase \ - sql_stmt_tests/npoints2.testcase \ - sql_stmt_tests/npoints3.testcase \ - sql_stmt_tests/npoints4.testcase \ - sql_stmt_tests/npoints5.testcase \ - sql_stmt_tests/npoints6.testcase \ - sql_stmt_tests/nrings1.testcase \ - sql_stmt_tests/nrings2.testcase \ - sql_stmt_tests/nrings3.testcase \ - sql_stmt_tests/nrings4.testcase \ - sql_stmt_tests/nrings5.testcase \ - sql_stmt_tests/nrings6.testcase \ - sql_stmt_tests/numgeometries1.testcase \ - sql_stmt_tests/numgeometries2.testcase \ - sql_stmt_tests/numgeometries3.testcase \ - sql_stmt_tests/numgeometries4.testcase \ - sql_stmt_tests/numgeometries5.testcase \ - sql_stmt_tests/numgeometries6.testcase \ - sql_stmt_tests/NumPoints2.testcase \ - sql_stmt_tests/NumPoints3.testcase \ - sql_stmt_tests/NumPoints4.testcase \ - sql_stmt_tests/NumPoints5.testcase \ - sql_stmt_tests/NumPoints6.testcase \ - sql_stmt_tests/NumPoints7.testcase \ - sql_stmt_tests/NumPoints.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve10.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve11.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve12.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve13.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve14.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve1.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve2.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve3.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve4.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve5.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve6.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve7.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve8.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve9.testcase \ - sql_stmt_proj_tests/output10.testcase \ - sql_stmt_proj_tests/output11.testcase \ - sql_stmt_proj_tests/output12.testcase \ - sql_stmt_proj_tests/output13.testcase \ - sql_stmt_proj_tests/output14.testcase \ - sql_stmt_proj_tests/output15.testcase \ - sql_stmt_proj_tests/output16.testcase \ - sql_stmt_proj_tests/output17.testcase \ - sql_stmt_proj_tests/output18.testcase \ - sql_stmt_proj_tests/output19.testcase \ - sql_stmt_proj_tests/output1.testcase \ - sql_stmt_proj_tests/output20.testcase \ - sql_stmt_proj_tests/output21.testcase \ - sql_stmt_proj_tests/output22.testcase \ - sql_stmt_proj_tests/output23.testcase \ - sql_stmt_proj_tests/output24.testcase \ - sql_stmt_proj_tests/output25.testcase \ - sql_stmt_proj_tests/output26.testcase \ - sql_stmt_proj_tests/output27.testcase \ - sql_stmt_proj_tests/output28.testcase \ - sql_stmt_proj_tests/output29.testcase \ - sql_stmt_proj_tests/output2.testcase \ - sql_stmt_proj_tests/output30.testcase \ - sql_stmt_proj_tests/output31.testcase \ - sql_stmt_proj_tests/output32.testcase \ - sql_stmt_proj_tests/output33.testcase \ - sql_stmt_proj_tests/output34.testcase \ - sql_stmt_proj_tests/output35.testcase \ - sql_stmt_proj_tests/output36.testcase \ - sql_stmt_proj_tests/output37.testcase \ - sql_stmt_proj_tests/output38.testcase \ - sql_stmt_proj_tests/output3.testcase \ - sql_stmt_proj_tests/output4.testcase \ - sql_stmt_proj_tests/output5.testcase \ - sql_stmt_proj_tests/output6.testcase \ - sql_stmt_proj_tests/output7.testcase \ - sql_stmt_proj_tests/output8.testcase \ - sql_stmt_proj_tests/output9.testcase \ - sql_stmt_mathsql_tests/pi.testcase \ - sql_stmt_tests/pointfromtext1.testcase \ - sql_stmt_tests/pointfromtext2.testcase \ - sql_stmt_tests/pointn10.testcase \ - sql_stmt_tests/pointn11.testcase \ - sql_stmt_tests/pointn12.testcase \ - sql_stmt_tests/pointn13.testcase \ - sql_stmt_tests/pointn14.testcase \ - sql_stmt_tests/pointn15.testcase \ - sql_stmt_tests/pointn1.testcase \ - sql_stmt_tests/pointn2.testcase \ - sql_stmt_tests/pointn3.testcase \ - sql_stmt_tests/pointn4.testcase \ - sql_stmt_tests/pointn5.testcase \ - sql_stmt_tests/pointn6.testcase \ - sql_stmt_tests/pointn7.testcase \ - sql_stmt_tests/pointn8.testcase \ - sql_stmt_tests/pointn9.testcase \ - sql_stmt_geos_tests/pointonsurface1.testcase \ - sql_stmt_geos_tests/pointonsurface2.testcase \ - sql_stmt_geos_tests/pointonsurface3.testcase \ - sql_stmt_geos_tests/pointonsurface4.testcase \ - sql_stmt_geos_tests/pointonsurface5.testcase \ - sql_stmt_geos_tests/pointonsurface6.testcase \ - sql_stmt_geos_tests/pointonsurface7.testcase \ - sql_stmt_tests/polygonfromtext1.testcase \ - sql_stmt_tests/polygonfromtext2.testcase \ - sql_stmt_geos_tests/polygonize10.testcase \ - sql_stmt_geos_tests/polygonize11.testcase \ - sql_stmt_geos_tests/polygonize12.testcase \ - sql_stmt_geos_tests/polygonize13.testcase \ - sql_stmt_geos_tests/polygonize14.testcase \ - sql_stmt_geos_tests/polygonize1.testcase \ - sql_stmt_geos_tests/polygonize2.testcase \ - sql_stmt_geos_tests/polygonize3.testcase \ - sql_stmt_geos_tests/polygonize4.testcase \ - sql_stmt_geos_tests/polygonize5.testcase \ - sql_stmt_geos_tests/polygonize6.testcase \ - sql_stmt_geos_tests/polygonize7.testcase \ - sql_stmt_geos_tests/polygonize8.testcase \ - sql_stmt_geos_tests/polygonize9.testcase \ - sql_stmt_mathsql_tests/pow00-1.testcase \ - sql_stmt_mathsql_tests/pow00-2.testcase \ - sql_stmt_mathsql_tests/pow00double.testcase \ - sql_stmt_mathsql_tests/pow00.testcase \ - sql_stmt_mathsql_tests/pow-badarg1.testcase \ - sql_stmt_mathsql_tests/pow-badarg2.testcase \ - sql_stmt_mathsql_tests/pow-edom.testcase \ - sql_stmt_mathsql_tests/pow-fp.testcase \ - sql_stmt_geos_tests/ptdistancewithin10.testcase \ - sql_stmt_geos_tests/ptdistancewithin11.testcase \ - sql_stmt_geos_tests/ptdistancewithin12.testcase \ - sql_stmt_geos_tests/ptdistancewithin13.testcase \ - sql_stmt_geos_tests/ptdistancewithin14.testcase \ - sql_stmt_geos_tests/ptdistancewithin15.testcase \ - sql_stmt_geos_tests/ptdistancewithin16.testcase \ - sql_stmt_geos_tests/ptdistancewithin17.testcase \ - sql_stmt_geos_tests/ptdistancewithin18.testcase \ - sql_stmt_geos_tests/ptdistancewithin1.testcase \ - sql_stmt_geos_tests/ptdistancewithin2.testcase \ - sql_stmt_geos_tests/ptdistancewithin3.testcase \ - sql_stmt_geos_tests/ptdistancewithin4.testcase \ - sql_stmt_geos_tests/ptdistancewithin5.testcase \ - sql_stmt_geos_tests/ptdistancewithin6.testcase \ - sql_stmt_geos_tests/ptdistancewithin7.testcase \ - sql_stmt_geos_tests/ptdistancewithin8.testcase \ - sql_stmt_geos_tests/ptdistancewithin9.testcase \ - sql_stmt_geos_tests/ptdistwithin10.testcase \ - sql_stmt_geos_tests/ptdistwithin11.testcase \ - sql_stmt_geos_tests/ptdistwithin12.testcase \ - sql_stmt_geos_tests/ptdistwithin13.testcase \ - sql_stmt_geos_tests/ptdistwithin14.testcase \ - sql_stmt_geos_tests/ptdistwithin15.testcase \ - sql_stmt_geos_tests/ptdistwithin16.testcase \ - sql_stmt_geos_tests/ptdistwithin1.testcase \ - sql_stmt_geos_tests/ptdistwithin2.testcase \ - sql_stmt_geos_tests/ptdistwithin3.testcase \ - sql_stmt_geos_tests/ptdistwithin4.testcase \ - sql_stmt_geos_tests/ptdistwithin5.testcase \ - sql_stmt_geos_tests/ptdistwithin6.testcase \ - sql_stmt_geos_tests/ptdistwithin7.testcase \ - sql_stmt_geos_tests/ptdistwithin8.testcase \ - sql_stmt_geos_tests/ptdistwithin9.testcase \ - sql_stmt_mathsql_tests/rad0.testcase \ - sql_stmt_mathsql_tests/radpi.testcase \ - sql_stmt_mathsql_tests/rad-text.testcase \ - sql_stmt_tests/reflectcoords10.testcase \ - sql_stmt_tests/reflectcoords11.testcase \ - sql_stmt_tests/reflectcoords12.testcase \ - sql_stmt_tests/reflectcoords13.testcase \ - sql_stmt_tests/reflectcoords14.testcase \ - sql_stmt_tests/reflectcoords15.testcase \ - sql_stmt_tests/reflectcoords16.testcase \ - sql_stmt_tests/reflectcoords17.testcase \ - sql_stmt_tests/reflectcoords1.testcase \ - sql_stmt_tests/reflectcoords2.testcase \ - sql_stmt_tests/reflectcoords3.testcase \ - sql_stmt_tests/reflectcoords4.testcase \ - sql_stmt_tests/reflectcoords5.testcase \ - sql_stmt_tests/reflectcoords6.testcase \ - sql_stmt_tests/reflectcoords7.testcase \ - sql_stmt_tests/reflectcoords8.testcase \ - sql_stmt_tests/reflectcoords9.testcase \ - sql_stmt_geos_tests/relate1.testcase \ - sql_stmt_geos_tests/relate2.testcase \ - sql_stmt_geos_tests/relate3.testcase \ - sql_stmt_geos_tests/relate4.testcase \ - sql_stmt_geos_tests/relate5.testcase \ - sql_stmt_geos_tests/relate6.testcase \ - sql_stmt_geos_tests/relate7.testcase \ - sql_stmt_geos_tests/relate8.testcase \ - sql_stmt_geos_tests/relate9.testcase \ - sql_stmt_geos_tests/relations1.testcase \ - sql_stmt_geos_tests/relations2.testcase \ - sql_stmt_geos_tests/relations3.testcase \ - sql_stmt_geos_tests/relations4.testcase \ - sql_stmt_geos_tests/relations5.testcase \ - sql_stmt_geos_tests/relations6.testcase \ - sql_stmt_geos_tests/relations7.testcase \ - sql_stmt_geos_tests/relations8.testcase \ - sql_stmt_tests/reverse1.testcase \ - sql_stmt_tests/reverse2.testcase \ - sql_stmt_tests/reverse3.testcase \ - sql_stmt_tests/reverse4.testcase \ - sql_stmt_tests/reverse5.testcase \ - sql_stmt_tests/reverse6.testcase \ - sql_stmt_tests/ring10.testcase \ - sql_stmt_tests/ring11.testcase \ - sql_stmt_tests/ring12.testcase \ - sql_stmt_tests/ring13.testcase \ - sql_stmt_tests/ring14.testcase \ - sql_stmt_tests/ring15.testcase \ - sql_stmt_tests/ring16.testcase \ - sql_stmt_tests/ring17.testcase \ - sql_stmt_tests/ring18.testcase \ - sql_stmt_tests/ring19.testcase \ - sql_stmt_tests/ring1.testcase \ - sql_stmt_tests/ring20.testcase \ - sql_stmt_tests/ring21.testcase \ - sql_stmt_tests/ring22.testcase \ - sql_stmt_tests/ring23.testcase \ - sql_stmt_tests/ring24.testcase \ - sql_stmt_tests/ring25.testcase \ - sql_stmt_tests/ring26.testcase \ - sql_stmt_tests/ring27.testcase \ - sql_stmt_tests/ring28.testcase \ - sql_stmt_tests/ring2.testcase \ - sql_stmt_tests/ring3.testcase \ - sql_stmt_tests/ring4.testcase \ - sql_stmt_tests/ring5.testcase \ - sql_stmt_tests/ring6.testcase \ - sql_stmt_tests/ring7.testcase \ - sql_stmt_tests/ring8.testcase \ - sql_stmt_tests/ring9.testcase \ - sql_stmt_geosadvanced_tests/ringsnodes1.testcase \ - sql_stmt_geosadvanced_tests/ringsnodes2.testcase \ - sql_stmt_geosadvanced_tests/ringsnodes3.testcase \ - sql_stmt_geosadvanced_tests/ringsnodes4.testcase \ - sql_stmt_geosadvanced_tests/ringsnodes5.testcase \ - sql_stmt_geosadvanced_tests/ringsnodes6.testcase \ - sql_stmt_tests/rotatecoords10.testcase \ - sql_stmt_tests/rotatecoords11.testcase \ - sql_stmt_tests/rotatecoords12.testcase \ - sql_stmt_tests/rotatecoords13.testcase \ - sql_stmt_tests/rotatecoords14.testcase \ - sql_stmt_tests/rotatecoords1.testcase \ - sql_stmt_tests/rotatecoords2.testcase \ - sql_stmt_tests/rotatecoords3.testcase \ - sql_stmt_tests/rotatecoords4.testcase \ - sql_stmt_tests/rotatecoords5.testcase \ - sql_stmt_tests/rotatecoords6.testcase \ - sql_stmt_tests/rotatecoords7.testcase \ - sql_stmt_tests/rotatecoords8.testcase \ - sql_stmt_tests/rotatecoords9.testcase \ - sql_stmt_mathsql_tests/round0.testcase \ - sql_stmt_mathsql_tests/round-29.testcase \ - sql_stmt_mathsql_tests/round29.testcase \ - sql_stmt_mathsql_tests/round30.testcase \ - sql_stmt_mathsql_tests/round-31.testcase \ - sql_stmt_mathsql_tests/round31.testcase \ - sql_stmt_mathsql_tests/round3.testcase \ - sql_stmt_mathsql_tests/round-text.testcase \ - sql_stmt_tests/routing1.testcase \ - sql_stmt_tests/routing2.testcase \ - sql_stmt_tests/routing3.testcase \ - sql_stmt_tests/routing4.testcase \ - sql_stmt_tests/routing5.testcase \ - sql_stmt_geos_tests/routing6.testcase \ - sql_stmt_tests/sandro.jpg \ - sql_stmt_tests/sanitizeGeometry10.testcase \ - sql_stmt_tests/sanitizeGeometry11.testcase \ - sql_stmt_tests/sanitizeGeometry12.testcase \ - sql_stmt_tests/sanitizeGeometry13.testcase \ - sql_stmt_tests/sanitizeGeometry14.testcase \ - sql_stmt_tests/sanitizeGeometry15.testcase \ - sql_stmt_tests/sanitizeGeometry16.testcase \ - sql_stmt_tests/sanitizeGeometry1.testcase \ - sql_stmt_tests/sanitizeGeometry2.testcase \ - sql_stmt_tests/sanitizeGeometry3.testcase \ - sql_stmt_tests/sanitizeGeometry4.testcase \ - sql_stmt_tests/sanitizeGeometry5.testcase \ - sql_stmt_tests/sanitizeGeometry6.testcase \ - sql_stmt_tests/sanitizeGeometry7.testcase \ - sql_stmt_tests/sanitizeGeometry8.testcase \ - sql_stmt_tests/sanitizeGeometry9.testcase \ - sql_stmt_tests/scalecoords10.testcase \ - sql_stmt_tests/scalecoords11.testcase \ - sql_stmt_tests/scalecoords12.testcase \ - sql_stmt_tests/scalecoords13.testcase \ - sql_stmt_tests/scalecoords1.testcase \ - sql_stmt_tests/scalecoords2.testcase \ - sql_stmt_tests/scalecoords3.testcase \ - sql_stmt_tests/scalecoords4.testcase \ - sql_stmt_tests/scalecoords5.testcase \ - sql_stmt_tests/scalecoords6.testcase \ - sql_stmt_tests/scalecoords7.testcase \ - sql_stmt_tests/scalecoords8.testcase \ - sql_stmt_tests/scalecoords9.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths10.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths11.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths12.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths13.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths14.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths15.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths16.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths17.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths18.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths19.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths1.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths20.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths21.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths22.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths23.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths24.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths25.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths26.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths27.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths28.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths29.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths2.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths30.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths31.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths32.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths3.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths4.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths5.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths6.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths7.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths8.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths9.testcase \ - sql_stmt_tests/shiftcoords10.testcase \ - sql_stmt_tests/shiftcoords11.testcase \ - sql_stmt_tests/shiftcoords12.testcase \ - sql_stmt_tests/shiftcoords13.testcase \ - sql_stmt_tests/shiftcoords14.testcase \ - sql_stmt_tests/shiftcoords15.testcase \ - sql_stmt_tests/shiftcoords1.testcase \ - sql_stmt_tests/shiftcoords2.testcase \ - sql_stmt_tests/shiftcoords3.testcase \ - sql_stmt_tests/shiftcoords4.testcase \ - sql_stmt_tests/shiftcoords5.testcase \ - sql_stmt_tests/shiftcoords6.testcase \ - sql_stmt_tests/shiftcoords7.testcase \ - sql_stmt_tests/shiftcoords8.testcase \ - sql_stmt_tests/shiftcoords9.testcase \ - sql_stmt_tests/shiftlongitude10.testcase \ - sql_stmt_tests/shiftlongitude11.testcase \ - sql_stmt_tests/shiftlongitude12.testcase \ - sql_stmt_tests/shiftlongitude13.testcase \ - sql_stmt_tests/shiftlongitude14.testcase \ - sql_stmt_tests/shiftlongitude15.testcase \ - sql_stmt_tests/shiftlongitude16.testcase \ - sql_stmt_tests/shiftlongitude17.testcase \ - sql_stmt_tests/shiftlongitude18.testcase \ - sql_stmt_tests/shiftlongitude19.testcase \ - sql_stmt_tests/shiftlongitude1.testcase \ - sql_stmt_tests/shiftlongitude20.testcase \ - sql_stmt_tests/shiftlongitude21.testcase \ - sql_stmt_tests/shiftlongitude22.testcase \ - sql_stmt_tests/shiftlongitude23.testcase \ - sql_stmt_tests/shiftlongitude24.testcase \ - sql_stmt_tests/shiftlongitude25.testcase \ - sql_stmt_tests/shiftlongitude26.testcase \ - sql_stmt_tests/shiftlongitude2.testcase \ - sql_stmt_tests/shiftlongitude3.testcase \ - sql_stmt_tests/shiftlongitude4.testcase \ - sql_stmt_tests/shiftlongitude5.testcase \ - sql_stmt_tests/shiftlongitude6.testcase \ - sql_stmt_tests/shiftlongitude7.testcase \ - sql_stmt_tests/shiftlongitude8.testcase \ - sql_stmt_tests/shiftlongitude9.testcase \ - sql_stmt_geosadvanced_tests/shortestline1.testcase \ - sql_stmt_geosadvanced_tests/shortestline2.testcase \ - sql_stmt_geosadvanced_tests/shortestline3.testcase \ - sql_stmt_geosadvanced_tests/shortestline4.testcase \ - sql_stmt_geosadvanced_tests/shortestline5.testcase \ - sql_stmt_geosadvanced_tests/shortestline6.testcase \ - sql_stmt_geosadvanced_tests/shortestline7.testcase \ - sql_stmt_mathsql_tests/sign00.testcase \ - sql_stmt_mathsql_tests/sign01.testcase \ - sql_stmt_mathsql_tests/sign0.testcase \ - sql_stmt_mathsql_tests/sign10.testcase \ - sql_stmt_mathsql_tests/signeg2int.testcase \ - sql_stmt_mathsql_tests/signeg2.testcase \ - sql_stmt_mathsql_tests/signeg.testcase \ - sql_stmt_mathsql_tests/signtext.testcase \ - sql_stmt_geos_tests/simplify10.testcase \ - sql_stmt_geos_tests/simplify11.testcase \ - sql_stmt_geos_tests/simplify12.testcase \ - sql_stmt_geos_tests/simplify13.testcase \ - sql_stmt_geos_tests/simplify14.testcase \ - sql_stmt_geos_tests/simplify15.testcase \ - sql_stmt_geos_tests/simplify16.testcase \ - sql_stmt_geos_tests/simplify1.testcase \ - sql_stmt_geos_tests/simplify2.testcase \ - sql_stmt_geos_tests/simplify3.testcase \ - sql_stmt_geos_tests/simplify4.testcase \ - sql_stmt_geos_tests/simplify5.testcase \ - sql_stmt_geos_tests/simplify6.testcase \ - sql_stmt_geos_tests/simplify7.testcase \ - sql_stmt_geos_tests/simplify8.testcase \ - sql_stmt_geos_tests/simplify9.testcase \ - sql_stmt_mathsql_tests/sin00.testcase \ - sql_stmt_mathsql_tests/sin0.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer11.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer12.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer13.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer14.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer15.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer16.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer17.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer1.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer2.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer3.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer4.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer5.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer6.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer7.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer8.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer9.testcase \ - sql_stmt_mathsql_tests/sin-pi2.testcase \ - sql_stmt_mathsql_tests/sinpi2.testcase \ - sql_stmt_mathsql_tests/sin-pi.testcase \ - sql_stmt_mathsql_tests/sinpi.testcase \ - sql_stmt_mathsql_tests/sin-text.testcase \ - sql_stmt_geosadvanced_tests/snap10.testcase \ - sql_stmt_geosadvanced_tests/snap1.testcase \ - sql_stmt_geosadvanced_tests/snap2.testcase \ - sql_stmt_geosadvanced_tests/snap3.testcase \ - sql_stmt_geosadvanced_tests/snap4.testcase \ - sql_stmt_geosadvanced_tests/snap5.testcase \ - sql_stmt_geosadvanced_tests/snap6.testcase \ - sql_stmt_geosadvanced_tests/snap7.testcase \ - sql_stmt_geosadvanced_tests/snap8.testcase \ - sql_stmt_geosadvanced_tests/snap9.testcase \ - sql_stmt_tests/spatialindex.testcase \ - sql_stmt_mathsql_tests/sqrt00.testcase \ - sql_stmt_mathsql_tests/sqrt0.testcase \ - sql_stmt_mathsql_tests/sqrt-10.testcase \ - sql_stmt_mathsql_tests/sqrt-1.testcase \ - sql_stmt_mathsql_tests/sqrt-640.testcase \ - sql_stmt_mathsql_tests/sqrt-64.testcase \ - sql_stmt_mathsql_tests/sqrt-text.testcase \ - sql_stmt_tests/srid10.testcase \ - sql_stmt_tests/srid11.testcase \ - sql_stmt_tests/srid1.testcase \ - sql_stmt_tests/srid2.testcase \ - sql_stmt_tests/srid3.testcase \ - sql_stmt_tests/srid4.testcase \ - sql_stmt_tests/srid5.testcase \ - sql_stmt_tests/srid6.testcase \ - sql_stmt_tests/srid7.testcase \ - sql_stmt_tests/srid8.testcase \ - sql_stmt_tests/srid9.testcase \ - sql_stmt_tests/SridFromAuthCRS2.testcase \ - sql_stmt_tests/SridFromAuthCRS3.testcase \ - sql_stmt_tests/SridFromAuthCRS4.testcase \ - sql_stmt_tests/SridFromAuthCRS5.testcase \ - sql_stmt_tests/SridFromAuthCRS6.testcase \ - sql_stmt_tests/SridFromAuthCRS.testcase \ - sql_stmt_geos_tests/st_area1.testcase \ - sql_stmt_geos_tests/st_area2.testcase \ - sql_stmt_geos_tests/st_area3.testcase \ - sql_stmt_geos_tests/st_area4.testcase \ - sql_stmt_geos_tests/st_area5.testcase \ - sql_stmt_geos_tests/st_area6.testcase \ - sql_stmt_geos_tests/st_area7.testcase \ - sql_stmt_geos_tests/st_area8.testcase \ - sql_stmt_geos_tests/st_area9.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid1.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid2.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid3.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid4.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid5.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid6.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid7.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid8.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid9.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid10.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid11.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid12.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid13.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid14.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid15.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid16.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid17.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid18.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid19.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid20.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid21.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid22.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid23.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid24.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid25.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid26.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid27.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid28.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid29.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid30.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid31.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid32.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid33.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid34.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid35.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid36.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid37.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid38.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid39.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid40.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid41.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid42.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid43.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid44.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid45.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid46.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid47.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid48.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid49.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid50.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid51.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid52.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid53.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid54.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid55.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid56.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid57.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid58.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid59.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid60.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid61.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid62.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid63.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid64.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid65.testcase \ - sql_stmt_lwgeom_tests/st_makevalid1.testcase \ - sql_stmt_lwgeom_tests/st_makevalid2.testcase \ - sql_stmt_lwgeom_tests/st_makevalid3.testcase \ - sql_stmt_lwgeom_tests/st_makevalid4.testcase \ - sql_stmt_lwgeom_tests/st_makevalid5.testcase \ - sql_stmt_lwgeom_tests/st_makevalid6.testcase \ - sql_stmt_lwgeom_tests/st_makevalid7.testcase \ - sql_stmt_lwgeom_tests/st_makevalid8.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded1.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded2.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded3.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded4.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded5.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded6.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded7.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded8.testcase \ - sql_stmt_lwgeom_tests/st_segmentize1.testcase \ - sql_stmt_lwgeom_tests/st_segmentize2.testcase \ - sql_stmt_lwgeom_tests/st_segmentize3.testcase \ - sql_stmt_lwgeom_tests/st_segmentize4.testcase \ - sql_stmt_lwgeom_tests/st_segmentize5.testcase \ - sql_stmt_lwgeom_tests/st_segmentize6.testcase \ - sql_stmt_lwgeom_tests/st_segmentize7.testcase \ - sql_stmt_lwgeom_tests/st_segmentize8.testcase \ - sql_stmt_lwgeom_tests/st_segmentize9.testcase \ - sql_stmt_lwgeom_tests/st_segmentize10.testcase \ - sql_stmt_lwgeom_tests/st_segmentize11.testcase \ - sql_stmt_lwgeom_tests/st_segmentize12.testcase \ - sql_stmt_lwgeom_tests/st_segmentize13.testcase \ - sql_stmt_lwgeom_tests/st_segmentize14.testcase \ - sql_stmt_lwgeom_tests/st_segmentize16.testcase \ - sql_stmt_lwgeom_tests/st_segmentize16.testcase \ - sql_stmt_lwgeom_tests/st_segmentize17.testcase \ - sql_stmt_lwgeom_tests/st_segmentize18.testcase \ - sql_stmt_lwgeom_tests/st_segmentize19.testcase \ - sql_stmt_lwgeom_tests/st_segmentize20.testcase \ - sql_stmt_lwgeom_tests/st_segmentize21.testcase \ - sql_stmt_lwgeom_tests/st_segmentize22.testcase \ - sql_stmt_lwgeom_tests/st_segmentize23.testcase \ - sql_stmt_lwgeom_tests/st_segmentize24.testcase \ - sql_stmt_lwgeom_tests/st_segmentize25.testcase \ - sql_stmt_lwgeom_tests/st_segmentize26.testcase \ - sql_stmt_lwgeom_tests/st_segmentize27.testcase \ - sql_stmt_lwgeom_tests/st_segmentize28.testcase \ - sql_stmt_lwgeom_tests/st_segmentize29.testcase \ - sql_stmt_lwgeom_tests/st_segmentize30.testcase \ - sql_stmt_lwgeom_tests/st_segmentize31.testcase \ - sql_stmt_lwgeom_tests/st_azimuth1.testcase \ - sql_stmt_lwgeom_tests/st_azimuth2.testcase \ - sql_stmt_lwgeom_tests/st_azimuth3.testcase \ - sql_stmt_lwgeom_tests/st_azimuth4.testcase \ - sql_stmt_lwgeom_tests/st_azimuth5.testcase \ - sql_stmt_lwgeom_tests/st_azimuth6.testcase \ - sql_stmt_lwgeom_tests/st_azimuth7.testcase \ - sql_stmt_lwgeom_tests/st_azimuth8.testcase \ - sql_stmt_lwgeom_tests/st_azimuth9.testcase \ - sql_stmt_lwgeom_tests/st_azimuth10.testcase \ - sql_stmt_lwgeom_tests/st_azimuth11.testcase \ - sql_stmt_lwgeom_tests/st_azimuth12.testcase \ - sql_stmt_lwgeom_tests/st_azimuth13.testcase \ - sql_stmt_lwgeom_tests/st_azimuth14.testcase \ - sql_stmt_lwgeom_tests/st_azimuth15.testcase \ - sql_stmt_lwgeom_tests/st_azimuth16.testcase \ - sql_stmt_lwgeom_tests/st_azimuth17.testcase \ - sql_stmt_lwgeom_tests/st_geohash1.testcase \ - sql_stmt_lwgeom_tests/st_geohash2.testcase \ - sql_stmt_lwgeom_tests/st_geohash3.testcase \ - sql_stmt_lwgeom_tests/st_geohash4.testcase \ - sql_stmt_lwgeom_tests/st_geohash5.testcase \ - sql_stmt_lwgeom_tests/st_geohash6.testcase \ - sql_stmt_lwgeom_tests/st_geohash7.testcase \ - sql_stmt_lwgeom_tests/st_geohash8.testcase \ - sql_stmt_lwgeom_tests/st_geohash9.testcase \ - sql_stmt_lwgeom_tests/st_geohash10.testcase \ - sql_stmt_lwgeom_tests/st_asx3d1.testcase \ - sql_stmt_lwgeom_tests/st_asx3d2.testcase \ - sql_stmt_lwgeom_tests/st_asx3d3.testcase \ - sql_stmt_lwgeom_tests/st_asx3d4.testcase \ - sql_stmt_lwgeom_tests/st_asx3d5.testcase \ - sql_stmt_lwgeom_tests/st_asx3d6.testcase \ - sql_stmt_lwgeom_tests/st_asx3d7.testcase \ - sql_stmt_lwgeom_tests/st_asx3d8.testcase \ - sql_stmt_lwgeom_tests/st_asx3d9.testcase \ - sql_stmt_lwgeom_tests/st_asx3d10.testcase \ - sql_stmt_lwgeom_tests/st_asx3d11.testcase \ - sql_stmt_lwgeom_tests/st_asx3d12.testcase \ - sql_stmt_lwgeom_tests/st_asx3d13.testcase \ - sql_stmt_lwgeom_tests/st_asx3d14.testcase \ - sql_stmt_lwgeom_tests/st_asx3d15.testcase \ - sql_stmt_lwgeom_tests/st_asx3d16.testcase \ - sql_stmt_lwgeom_tests/st_asx3d17.testcase \ - sql_stmt_lwgeom_tests/st_asx3d18.testcase \ - sql_stmt_lwgeom_tests/st_asx3d19.testcase \ - sql_stmt_lwgeom_tests/st_asx3d20.testcase \ - sql_stmt_lwgeom_tests/st_asx3d21.testcase \ - sql_stmt_lwgeom_tests/st_asx3d22.testcase \ - sql_stmt_lwgeom_tests/st_asx3d23.testcase \ - sql_stmt_lwgeom_tests/st_asx3d24.testcase \ - sql_stmt_lwgeom_tests/st_asx3d25.testcase \ - sql_stmt_lwgeom_tests/st_asx3d26.testcase \ - sql_stmt_lwgeom_tests/st_asx3d27.testcase \ - sql_stmt_lwgeom_tests/st_asx3d28.testcase \ - sql_stmt_lwgeom_tests/st_asx3d29.testcase \ - sql_stmt_lwgeom_tests/st_asx3d30.testcase \ - sql_stmt_lwgeom_tests/3ddistance1.testcase \ - sql_stmt_lwgeom_tests/3ddistance2.testcase \ - sql_stmt_lwgeom_tests/3ddistance3.testcase \ - sql_stmt_lwgeom_tests/3ddistance4.testcase \ - sql_stmt_lwgeom_tests/3ddistance5.testcase \ - sql_stmt_lwgeom_tests/3ddistance6.testcase \ - sql_stmt_lwgeom_tests/3ddistance7.testcase \ - sql_stmt_lwgeom_tests/3ddistance8.testcase \ - sql_stmt_lwgeom_tests/3ddistance9.testcase \ - sql_stmt_lwgeom_tests/3ddistance10.testcase \ - sql_stmt_lwgeom_tests/maxdistance1.testcase \ - sql_stmt_lwgeom_tests/maxdistance2.testcase \ - sql_stmt_lwgeom_tests/maxdistance3.testcase \ - sql_stmt_lwgeom_tests/maxdistance4.testcase \ - sql_stmt_lwgeom_tests/maxdistance5.testcase \ - sql_stmt_lwgeom_tests/maxdistance6.testcase \ - sql_stmt_lwgeom_tests/maxdistance7.testcase \ - sql_stmt_lwgeom_tests/maxdistance8.testcase \ - sql_stmt_lwgeom_tests/maxdistance9.testcase \ - sql_stmt_lwgeom_tests/maxdistance10.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance1.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance2.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance3.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance4.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance5.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance6.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance7.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance8.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance9.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance10.testcase \ - sql_stmt_lwgeom_tests/st_split1.testcase \ - sql_stmt_lwgeom_tests/st_split2.testcase \ - sql_stmt_lwgeom_tests/st_split3.testcase \ - sql_stmt_lwgeom_tests/st_split4.testcase \ - sql_stmt_lwgeom_tests/st_split5.testcase \ - sql_stmt_lwgeom_tests/st_split6.testcase \ - sql_stmt_lwgeom_tests/st_split7.testcase \ - sql_stmt_lwgeom_tests/st_split8.testcase \ - sql_stmt_lwgeom_tests/st_split9.testcase \ - sql_stmt_lwgeom_tests/st_split10.testcase \ - sql_stmt_lwgeom_tests/st_split11.testcase \ - sql_stmt_lwgeom_tests/st_split12.testcase \ - sql_stmt_lwgeom_tests/st_split13.testcase \ - sql_stmt_lwgeom_tests/st_split14.testcase \ - sql_stmt_lwgeom_tests/st_split15.testcase \ - sql_stmt_lwgeom_tests/st_split16.testcase \ - sql_stmt_lwgeom_tests/st_split17.testcase \ - sql_stmt_lwgeom_tests/st_split18.testcase \ - sql_stmt_lwgeom_tests/st_split19.testcase \ - sql_stmt_lwgeom_tests/st_split20.testcase \ - sql_stmt_lwgeom_tests/st_split21.testcase \ - sql_stmt_lwgeom_tests/st_split22.testcase \ - sql_stmt_lwgeom_tests/st_split23.testcase \ - sql_stmt_lwgeom_tests/st_split24.testcase \ - sql_stmt_lwgeom_tests/st_split25.testcase \ - sql_stmt_lwgeom_tests/st_split26.testcase \ - sql_stmt_lwgeom_tests/st_split27.testcase \ - sql_stmt_lwgeom_tests/st_split28.testcase \ - sql_stmt_lwgeom_tests/st_split29.testcase \ - sql_stmt_lwgeom_tests/st_split30.testcase \ - sql_stmt_lwgeom_tests/st_split31.testcase \ - sql_stmt_lwgeom_tests/st_split32.testcase \ - sql_stmt_lwgeom_tests/st_split33.testcase \ - sql_stmt_lwgeom_tests/st_split34.testcase \ - sql_stmt_lwgeom_tests/st_split35.testcase \ - sql_stmt_lwgeom_tests/st_split36.testcase \ - sql_stmt_lwgeom_tests/st_split37.testcase \ - sql_stmt_lwgeom_tests/st_split38.testcase \ - sql_stmt_lwgeom_tests/st_split39.testcase \ - sql_stmt_lwgeom_tests/st_split40.testcase \ - sql_stmt_lwgeom_tests/st_split41.testcase \ - sql_stmt_lwgeom_tests/st_split42.testcase \ - sql_stmt_lwgeom_tests/st_split43.testcase \ - sql_stmt_lwgeom_tests/st_split44.testcase \ - sql_stmt_lwgeom_tests/st_split45.testcase \ - sql_stmt_lwgeom_tests/st_split46.testcase \ - sql_stmt_lwgeom_tests/st_split47.testcase \ - sql_stmt_lwgeom_tests/st_split48.testcase \ - sql_stmt_lwgeom_tests/st_split49.testcase \ - sql_stmt_tests/startpoint1.testcase \ - sql_stmt_tests/startpoint2.testcase \ - sql_stmt_tests/startpoint3.testcase \ - sql_stmt_mathsql_tests/stddev.testcase \ - sql_stmt_geos_tests/st_length1.testcase \ - sql_stmt_geos_tests/st_length2.testcase \ - sql_stmt_geos_tests/st_length3.testcase \ - sql_stmt_geos_tests/st_length4.testcase \ - sql_stmt_geos_tests/st_length5.testcase \ - sql_stmt_geos_tests/st_length6.testcase \ - sql_stmt_geos_tests/st_length7.testcase \ - sql_stmt_geos_tests/st_length8.testcase \ - sql_stmt_geos_tests/st_length9.testcase \ - sql_stmt_geos_tests/st_length10.testcase \ - sql_stmt_geos_tests/st_length11.testcase \ - sql_stmt_geos_tests/st_length12.testcase \ - sql_stmt_geos_tests/st_length13.testcase \ - sql_stmt_geos_tests/st_length14.testcase \ - sql_stmt_geos_tests/st_length15.testcase \ - sql_stmt_geos_tests/st_length16.testcase \ - sql_stmt_geos_tests/st_length17.testcase \ - sql_stmt_geos_tests/st_length18.testcase \ - sql_stmt_geos_tests/st_perimeter1.testcase \ - sql_stmt_geos_tests/st_perimeter2.testcase \ - sql_stmt_geos_tests/st_perimeter3.testcase \ - sql_stmt_geos_tests/st_perimeter4.testcase \ - sql_stmt_geos_tests/st_perimeter5.testcase \ - sql_stmt_geos_tests/st_perimeter6.testcase \ - sql_stmt_geos_tests/st_perimeter7.testcase \ - sql_stmt_geos_tests/st_perimeter8.testcase \ - sql_stmt_geos_tests/st_perimeter9.testcase \ - sql_stmt_geos_tests/st_perimeter10.testcase \ - sql_stmt_geos_tests/st_perimeter11.testcase \ - sql_stmt_geos_tests/st_perimeter12.testcase \ - sql_stmt_geos_tests/st_perimeter13.testcase \ - sql_stmt_geos_tests/st_perimeter14.testcase \ - sql_stmt_geos_tests/st_perimeter15.testcase \ - sql_stmt_geos_tests/st_perimeter16.testcase \ - sql_stmt_geos_tests/st_perimeter17.testcase \ - sql_stmt_geos_tests/st_perimeter18.testcase \ - sql_stmt_tests/st_m1.testcase \ - sql_stmt_tests/st_m2.testcase \ - sql_stmt_tests/st_m3.testcase \ - sql_stmt_tests/st_m4.testcase \ - sql_stmt_tests/st_m5.testcase \ - sql_stmt_tests/st_m6.testcase \ - sql_stmt_tests/st_m8.testcase \ - sql_stmt_tests/st_x1.testcase \ - sql_stmt_tests/st_x2.testcase \ - sql_stmt_tests/st_x3.testcase \ - sql_stmt_tests/st_x4.testcase \ - sql_stmt_tests/st_x5.testcase \ - sql_stmt_tests/st_x6.testcase \ - sql_stmt_tests/st_x7.testcase \ - sql_stmt_tests/st_x8.testcase \ - sql_stmt_tests/st_x9.testcase \ - sql_stmt_tests/st_y1.testcase \ - sql_stmt_tests/st_y2.testcase \ - sql_stmt_tests/st_y3.testcase \ - sql_stmt_tests/st_y4.testcase \ - sql_stmt_tests/st_y5.testcase \ - sql_stmt_tests/st_y7.testcase \ - sql_stmt_tests/st_y8.testcase \ - sql_stmt_tests/st_y9.testcase \ - sql_stmt_tests/st_z1.testcase \ - sql_stmt_tests/st_z2.testcase \ - sql_stmt_tests/st_z3.testcase \ - sql_stmt_tests/st_z4.testcase \ - sql_stmt_tests/st_z5.testcase \ - sql_stmt_tests/st_z6.testcase \ - sql_stmt_tests/st_z7.testcase \ - sql_stmt_tests/st_z8.testcase \ - sql_stmt_tests/st_z9.testcase \ - sql_stmt_tests/swapcoords10.testcase \ - sql_stmt_tests/swapcoords11.testcase \ - sql_stmt_tests/swapcoords1.testcase \ - sql_stmt_tests/swapcoords2.testcase \ - sql_stmt_tests/swapcoords3.testcase \ - sql_stmt_tests/swapcoords4.testcase \ - sql_stmt_tests/swapcoords5.testcase \ - sql_stmt_tests/swapcoords6.testcase \ - sql_stmt_tests/swapcoords7.testcase \ - sql_stmt_tests/swapcoords8.testcase \ - sql_stmt_tests/swapcoords9.testcase \ - sql_stmt_geos_tests/symdifference10.testcase \ - sql_stmt_geos_tests/symdifference11.testcase \ - sql_stmt_geos_tests/symdifference1.testcase \ - sql_stmt_geos_tests/symdifference2.testcase \ - sql_stmt_geos_tests/symdifference3.testcase \ - sql_stmt_geos_tests/symdifference4.testcase \ - sql_stmt_geos_tests/symdifference5.testcase \ - sql_stmt_geos_tests/symdifference6.testcase \ - sql_stmt_geos_tests/symdifference7.testcase \ - sql_stmt_geos_tests/symdifference8.testcase \ - sql_stmt_geos_tests/symdifference9.testcase \ - sql_stmt_mathsql_tests/tan00.testcase \ - sql_stmt_mathsql_tests/tan0.testcase \ - sql_stmt_mathsql_tests/tanpi4.testcase \ - sql_stmt_mathsql_tests/tan-pi.testcase \ - sql_stmt_mathsql_tests/tanpi.testcase \ - sql_stmt_mathsql_tests/tan-text.testcase \ - sql_stmt_tests/testdb1.sqlite \ - sql_stmt_tests/testFDO.sqlite \ - sql_stmt_tests/testFGF.sqlite \ - sql_stmt_tests/togars10.testcase \ - sql_stmt_tests/togars11.testcase \ - sql_stmt_tests/togars12.testcase \ - sql_stmt_tests/togars1.testcase \ - sql_stmt_tests/togars2.testcase \ - sql_stmt_tests/togars3.testcase \ - sql_stmt_tests/togars4.testcase \ - sql_stmt_tests/togars5.testcase \ - sql_stmt_tests/togars6.testcase \ - sql_stmt_tests/togars7.testcase \ - sql_stmt_tests/togars8.testcase \ - sql_stmt_tests/togars9.testcase \ - sql_stmt_proj_tests/transform10.testcase \ - sql_stmt_proj_tests/transform11.testcase \ - sql_stmt_proj_tests/transform12.testcase \ - sql_stmt_proj_tests/transform13.testcase \ - sql_stmt_proj_tests/transform14.testcase \ - sql_stmt_proj_tests/transform15.testcase \ - sql_stmt_proj_tests/transform16.testcase \ - sql_stmt_proj_tests/transform17.testcase \ - sql_stmt_proj_tests/transform18.testcase \ - sql_stmt_proj_tests/transform19.testcase \ - sql_stmt_proj_tests/transform1.testcase \ - sql_stmt_proj_tests/transform20.testcase \ - sql_stmt_proj_tests/transform21.testcase \ - sql_stmt_proj_tests/transform2.testcase \ - sql_stmt_proj_tests/transform3.testcase \ - sql_stmt_proj_tests/transform4.testcase \ - sql_stmt_proj_tests/transform5.testcase \ - sql_stmt_proj_tests/transform6.testcase \ - sql_stmt_proj_tests/transform7.testcase \ - sql_stmt_proj_tests/transform8.testcase \ - sql_stmt_proj_tests/transform9.testcase \ - sql_stmt_tests/translate10.testcase \ - sql_stmt_tests/translate11.testcase \ - sql_stmt_tests/translate12.testcase \ - sql_stmt_tests/translate13.testcase \ - sql_stmt_tests/translate14.testcase \ - sql_stmt_tests/translate15.testcase \ - sql_stmt_tests/translate16.testcase \ - sql_stmt_tests/translate17.testcase \ - sql_stmt_tests/translate18.testcase \ - sql_stmt_tests/translate19.testcase \ - sql_stmt_tests/translate1.testcase \ - sql_stmt_tests/translate2.testcase \ - sql_stmt_tests/translate3.testcase \ - sql_stmt_tests/translate4.testcase \ - sql_stmt_tests/translate5.testcase \ - sql_stmt_tests/translate6.testcase \ - sql_stmt_tests/translate7.testcase \ - sql_stmt_tests/translate8.testcase \ - sql_stmt_tests/translate9.testcase \ - sql_stmt_tests/trivial.sqlite_RO \ - sql_stmt_geosadvanced_tests/unaryunion1.testcase \ - sql_stmt_geosadvanced_tests/unaryunion2.testcase \ - sql_stmt_geosadvanced_tests/unaryunion3.testcase \ - sql_stmt_geosadvanced_tests/unaryunion4.testcase \ - sql_stmt_geosadvanced_tests/unaryunion5.testcase \ - sql_stmt_geosadvanced_tests/unaryunion6.testcase \ - sql_stmt_geosadvanced_tests/unaryunion7.testcase \ - sql_stmt_geosadvanced_tests/unaryunion8.testcase \ - sql_stmt_geostrunk_tests/delaunay1.testcase \ - sql_stmt_geostrunk_tests/delaunay2.testcase \ - sql_stmt_geostrunk_tests/delaunay3.testcase \ - sql_stmt_geostrunk_tests/delaunay4.testcase \ - sql_stmt_geostrunk_tests/delaunay5.testcase \ - sql_stmt_geostrunk_tests/delaunay6.testcase \ - sql_stmt_geostrunk_tests/delaunay7.testcase \ - sql_stmt_geostrunk_tests/delaunay8.testcase \ - sql_stmt_geostrunk_tests/delaunay9.testcase \ - sql_stmt_geostrunk_tests/delaunay10.testcase \ - sql_stmt_geostrunk_tests/delaunay11.testcase \ - sql_stmt_geostrunk_tests/delaunay12.testcase \ - sql_stmt_geostrunk_tests/delaunay13.testcase \ - sql_stmt_geostrunk_tests/delaunay14.testcase \ - sql_stmt_geostrunk_tests/delaunay15.testcase \ - sql_stmt_geostrunk_tests/delaunay16.testcase \ - sql_stmt_geostrunk_tests/delaunay17.testcase \ - sql_stmt_geostrunk_tests/delaunay18.testcase \ - sql_stmt_geostrunk_tests/delaunay19.testcase \ - sql_stmt_geostrunk_tests/voronoj1.testcase \ - sql_stmt_geostrunk_tests/voronoj2.testcase \ - sql_stmt_geostrunk_tests/voronoj3.testcase \ - sql_stmt_geostrunk_tests/voronoj4.testcase \ - sql_stmt_geostrunk_tests/voronoj5.testcase \ - sql_stmt_geostrunk_tests/voronoj6.testcase \ - sql_stmt_geostrunk_tests/voronoj8.testcase \ - sql_stmt_geostrunk_tests/voronoj9.testcase \ - sql_stmt_geostrunk_tests/voronoj10.testcase \ - sql_stmt_geostrunk_tests/voronoj11.testcase \ - sql_stmt_geostrunk_tests/voronoj12.testcase \ - sql_stmt_geostrunk_tests/voronoj13.testcase \ - sql_stmt_geostrunk_tests/voronoj14.testcase \ - sql_stmt_geostrunk_tests/voronoj15.testcase \ - sql_stmt_geostrunk_tests/voronoj16.testcase \ - sql_stmt_geostrunk_tests/voronoj17.testcase \ - sql_stmt_geostrunk_tests/voronoj18.testcase \ - sql_stmt_geostrunk_tests/voronoj19.testcase \ - sql_stmt_geostrunk_tests/voronoj20.testcase \ - sql_stmt_geostrunk_tests/concave_hull1.testcase \ - sql_stmt_geostrunk_tests/concave_hull2.testcase \ - sql_stmt_geostrunk_tests/concave_hull3.testcase \ - sql_stmt_geostrunk_tests/concave_hull4.testcase \ - sql_stmt_geostrunk_tests/concave_hull5.testcase \ - sql_stmt_geostrunk_tests/concave_hull6.testcase \ - sql_stmt_geostrunk_tests/concave_hull7.testcase \ - sql_stmt_geostrunk_tests/concave_hull8.testcase \ - sql_stmt_geostrunk_tests/concave_hull9.testcase \ - sql_stmt_geostrunk_tests/concave_hull10.testcase \ - sql_stmt_geostrunk_tests/concave_hull11.testcase \ - sql_stmt_geostrunk_tests/concave_hull12.testcase \ - sql_stmt_geostrunk_tests/concave_hull13.testcase \ - sql_stmt_geostrunk_tests/concave_hull14.testcase \ - sql_stmt_geostrunk_tests/concave_hull15.testcase \ - sql_stmt_geostrunk_tests/concave_hull16.testcase \ - sql_stmt_geostrunk_tests/concave_hull17.testcase \ - sql_stmt_geostrunk_tests/concave_hull18.testcase \ - sql_stmt_geostrunk_tests/concave_hull19.testcase \ - sql_stmt_tests/uncompressgeom1.testcase \ - sql_stmt_tests/uncompressgeom2.testcase \ - sql_stmt_tests/uncompressgeom3.testcase \ - sql_stmt_geos_tests/union10.testcase \ - sql_stmt_geos_tests/union11.testcase \ - sql_stmt_geos_tests/union12.testcase \ - sql_stmt_geos_tests/union13.testcase \ - sql_stmt_geos_tests/union14.testcase \ - sql_stmt_geos_tests/union15.testcase \ - sql_stmt_geos_tests/union16.testcase \ - sql_stmt_geos_tests/union17.testcase \ - sql_stmt_geos_tests/union18.testcase \ - sql_stmt_geos_tests/union19.testcase \ - sql_stmt_geos_tests/union1.testcase \ - sql_stmt_geos_tests/union20.testcase \ - sql_stmt_geos_tests/union21.testcase \ - sql_stmt_geos_tests/union22.testcase \ - sql_stmt_geos_tests/union23.testcase \ - sql_stmt_geos_tests/union24.testcase \ - sql_stmt_geos_tests/union25.testcase \ - sql_stmt_geos_tests/union26.testcase \ - sql_stmt_geos_tests/union27.testcase \ - sql_stmt_geos_tests/union28.testcase \ - sql_stmt_geos_tests/union29.testcase \ - sql_stmt_geos_tests/union2.testcase \ - sql_stmt_geos_tests/union3.testcase \ - sql_stmt_geos_tests/union4.testcase \ - sql_stmt_geos_tests/union5.testcase \ - sql_stmt_geos_tests/union6.testcase \ - sql_stmt_geos_tests/union7.testcase \ - sql_stmt_geos_tests/union8.testcase \ - sql_stmt_geos_tests/union9.testcase \ - sql_stmt_geosadvanced_tests/hexgrid1.testcase \ - sql_stmt_geosadvanced_tests/hexgrid2.testcase \ - sql_stmt_geosadvanced_tests/hexgrid3.testcase \ - sql_stmt_geosadvanced_tests/hexgrid4.testcase \ - sql_stmt_geosadvanced_tests/hexgrid5.testcase \ - sql_stmt_geosadvanced_tests/hexgrid6.testcase \ - sql_stmt_geosadvanced_tests/hexgrid7.testcase \ - sql_stmt_geosadvanced_tests/hexgrid8.testcase \ - sql_stmt_geosadvanced_tests/hexgrid9.testcase \ - sql_stmt_geosadvanced_tests/hexgrid10.testcase \ - sql_stmt_geosadvanced_tests/hexgrid11.testcase \ - sql_stmt_geosadvanced_tests/hexgrid12.testcase \ - sql_stmt_geosadvanced_tests/hexgrid13.testcase \ - sql_stmt_geosadvanced_tests/hexgrid14.testcase \ - sql_stmt_geosadvanced_tests/hexgrid15.testcase \ - sql_stmt_geosadvanced_tests/hexgrid16.testcase \ - sql_stmt_geosadvanced_tests/hexgrid17.testcase \ - sql_stmt_geosadvanced_tests/hexgrid18.testcase \ - sql_stmt_geosadvanced_tests/hexgrid19.testcase \ - sql_stmt_geosadvanced_tests/hexgrid20.testcase \ - sql_stmt_geosadvanced_tests/hexgrid21.testcase \ - sql_stmt_geosadvanced_tests/hexgrid22.testcase \ - sql_stmt_geosadvanced_tests/hexgrid23.testcase \ - sql_stmt_geosadvanced_tests/squaregrid1.testcase \ - sql_stmt_geosadvanced_tests/squaregrid2.testcase \ - sql_stmt_geosadvanced_tests/squaregrid3.testcase \ - sql_stmt_geosadvanced_tests/squaregrid4.testcase \ - sql_stmt_geosadvanced_tests/squaregrid5.testcase \ - sql_stmt_geosadvanced_tests/squaregrid6.testcase \ - sql_stmt_geosadvanced_tests/squaregrid7.testcase \ - sql_stmt_geosadvanced_tests/squaregrid8.testcase \ - sql_stmt_geosadvanced_tests/squaregrid9.testcase \ - sql_stmt_geosadvanced_tests/squaregrid10.testcase \ - sql_stmt_geosadvanced_tests/squaregrid11.testcase \ - sql_stmt_geosadvanced_tests/squaregrid12.testcase \ - sql_stmt_geosadvanced_tests/squaregrid13.testcase \ - sql_stmt_geosadvanced_tests/squaregrid14.testcase \ - sql_stmt_geosadvanced_tests/squaregrid15.testcase \ - sql_stmt_geosadvanced_tests/squaregrid16.testcase \ - sql_stmt_geosadvanced_tests/squaregrid17.testcase \ - sql_stmt_geosadvanced_tests/squaregrid18.testcase \ - sql_stmt_geosadvanced_tests/squaregrid19.testcase \ - sql_stmt_geosadvanced_tests/squaregrid20.testcase \ - sql_stmt_geosadvanced_tests/squaregrid21.testcase \ - sql_stmt_geosadvanced_tests/squaregrid22.testcase \ - sql_stmt_geosadvanced_tests/squaregrid23.testcase \ - sql_stmt_geosadvanced_tests/trianggrid1.testcase \ - sql_stmt_geosadvanced_tests/trianggrid2.testcase \ - sql_stmt_geosadvanced_tests/trianggrid3.testcase \ - sql_stmt_geosadvanced_tests/trianggrid4.testcase \ - sql_stmt_geosadvanced_tests/trianggrid5.testcase \ - sql_stmt_geosadvanced_tests/trianggrid6.testcase \ - sql_stmt_geosadvanced_tests/trianggrid7.testcase \ - sql_stmt_geosadvanced_tests/trianggrid8.testcase \ - sql_stmt_geosadvanced_tests/trianggrid9.testcase \ - sql_stmt_geosadvanced_tests/trianggrid10.testcase \ - sql_stmt_geosadvanced_tests/trianggrid11.testcase \ - sql_stmt_geosadvanced_tests/trianggrid12.testcase \ - sql_stmt_geosadvanced_tests/trianggrid13.testcase \ - sql_stmt_geosadvanced_tests/trianggrid14.testcase \ - sql_stmt_geosadvanced_tests/trianggrid15.testcase \ - sql_stmt_geosadvanced_tests/trianggrid16.testcase \ - sql_stmt_geosadvanced_tests/trianggrid17.testcase \ - sql_stmt_geosadvanced_tests/trianggrid18.testcase \ - sql_stmt_geosadvanced_tests/trianggrid19.testcase \ - sql_stmt_geosadvanced_tests/trianggrid20.testcase \ - sql_stmt_geosadvanced_tests/trianggrid21.testcase \ - sql_stmt_geosadvanced_tests/trianggrid22.testcase \ - sql_stmt_geosadvanced_tests/trianggrid23.testcase \ - sql_stmt_tests/us_ch_m.testcase \ - sql_stmt_tests/us_ft_m.testcase \ - sql_stmt_tests/us_in_m.testcase \ - sql_stmt_tests/us_mi_m.testcase \ - sql_stmt_tests/us_yd_m.testcase \ - sql_stmt_mathsql_tests/variance.testcase \ - sql_stmt_tests/wkb10.testcase \ - sql_stmt_tests/wkb11.testcase \ - sql_stmt_tests/wkb12.testcase \ - sql_stmt_tests/wkb13.testcase \ - sql_stmt_tests/wkb14.testcase \ - sql_stmt_tests/wkb15.testcase \ - sql_stmt_tests/wkb16.testcase \ - sql_stmt_tests/wkb17.testcase \ - sql_stmt_tests/wkb18.testcase \ - sql_stmt_tests/wkb19.testcase \ - sql_stmt_tests/wkb1.testcase \ - sql_stmt_tests/wkb20.testcase \ - sql_stmt_tests/wkb21.testcase \ - sql_stmt_tests/wkb22.testcase \ - sql_stmt_tests/wkb23.testcase \ - sql_stmt_tests/wkb24.testcase \ - sql_stmt_tests/wkb25.testcase \ - sql_stmt_tests/wkb26.testcase \ - sql_stmt_tests/wkb27.testcase \ - sql_stmt_tests/wkb28.testcase \ - sql_stmt_tests/wkb29.testcase \ - sql_stmt_tests/wkb2.testcase \ - sql_stmt_tests/wkb30.testcase \ - sql_stmt_tests/wkb31.testcase \ - sql_stmt_tests/wkb32.testcase \ - sql_stmt_tests/wkb33.testcase \ - sql_stmt_tests/wkb34.testcase \ - sql_stmt_tests/wkb35.testcase \ - sql_stmt_tests/wkb36.testcase \ - sql_stmt_tests/wkb3.testcase \ - sql_stmt_tests/wkb4.testcase \ - sql_stmt_tests/wkb5.testcase \ - sql_stmt_tests/wkb6.testcase \ - sql_stmt_tests/wkb7.testcase \ - sql_stmt_tests/wkb8.testcase \ - sql_stmt_tests/wkb9.testcase \ - sql_stmt_tests/wkbtosql1.testcase \ - sql_stmt_tests/wkbtosql2.testcase \ - sql_stmt_tests/wkbtosql3.testcase \ - sql_stmt_tests/wkttosql1.testcase \ - sql_stmt_tests/wkttosql2.testcase \ - sql_stmt_tests/wkttosql3.testcase \ - sql_stmt_tests/yd_m.testcase - diff --git a/src/spatialite/test/Makefile.in b/src/spatialite/test/Makefile.in deleted file mode 100644 index 2f03f33..0000000 --- a/src/spatialite/test/Makefile.in +++ /dev/null @@ -1,3669 +0,0 @@ -# Makefile.in generated by automake 1.11.6 from Makefile.am. -# @configure_input@ - -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software -# Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A -# PARTICULAR PURPOSE. - -@SET_MAKE@ -VPATH = @srcdir@ -am__make_dryrun = \ - { \ - am__dry=no; \ - case $$MAKEFLAGS in \ - *\\[\ \ ]*) \ - echo 'am--echo: ; @echo "AM" OK' | $(MAKE) -f - 2>/dev/null \ - | grep '^AM OK$$' >/dev/null || am__dry=yes;; \ - *) \ - for am__flg in $$MAKEFLAGS; do \ - case $$am__flg in \ - *=*|--*) ;; \ - *n*) am__dry=yes; break;; \ - esac; \ - done;; \ - esac; \ - test $$am__dry = yes; \ - } -pkgdatadir = $(datadir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkglibexecdir = $(libexecdir)/@PACKAGE@ -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd -install_sh_DATA = $(install_sh) -c -m 644 -install_sh_PROGRAM = $(install_sh) -c -install_sh_SCRIPT = $(install_sh) -c -INSTALL_HEADER = $(INSTALL_DATA) -transform = $(program_transform_name) -NORMAL_INSTALL = : -PRE_INSTALL = : -POST_INSTALL = : -NORMAL_UNINSTALL = : -PRE_UNINSTALL = : -POST_UNINSTALL = : -build_triplet = @build@ -host_triplet = @host@ -check_PROGRAMS = check_endian$(EXEEXT) check_version$(EXEEXT) \ - check_init$(EXEEXT) check_init2$(EXEEXT) \ - check_geom_aux$(EXEEXT) check_geometry_cols$(EXEEXT) \ - check_create$(EXEEXT) check_bufovflw$(EXEEXT) \ - check_fdo1$(EXEEXT) check_fdo2$(EXEEXT) check_fdo3$(EXEEXT) \ - check_fdo_bufovflw$(EXEEXT) check_dbf_load$(EXEEXT) \ - check_shp_load$(EXEEXT) check_shp_load_3d$(EXEEXT) \ - shape_cp1252$(EXEEXT) shape_primitives$(EXEEXT) \ - shape_utf8_1$(EXEEXT) shape_utf8_1ex$(EXEEXT) \ - shape_utf8_2$(EXEEXT) shape_3d$(EXEEXT) \ - check_xls_load$(EXEEXT) check_math_funcs$(EXEEXT) \ - check_gaia_util$(EXEEXT) check_gaia_utf8$(EXEEXT) \ - check_extension$(EXEEXT) check_recover_geom$(EXEEXT) \ - check_sql_stmt$(EXEEXT) check_virtualtable1$(EXEEXT) \ - check_virtualtable2$(EXEEXT) check_virtualtable3$(EXEEXT) \ - check_virtualtable4$(EXEEXT) check_virtualtable5$(EXEEXT) \ - check_virtualtable6$(EXEEXT) check_virtual_ovflw$(EXEEXT) \ - check_mbrcache$(EXEEXT) check_spatialindex$(EXEEXT) \ - check_exif$(EXEEXT) check_relations_fncts$(EXEEXT) \ - check_extra_relations_fncts$(EXEEXT) \ - check_geoscvt_fncts$(EXEEXT) -subdir = test -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ - $(top_srcdir)/configure.ac -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ - $(ACLOCAL_M4) -mkinstalldirs = $(install_sh) -d -CONFIG_HEADER = $(top_builddir)/config.h -CONFIG_CLEAN_FILES = -CONFIG_CLEAN_VPATH_FILES = -check_bufovflw_SOURCES = check_bufovflw.c -check_bufovflw_OBJECTS = check_bufovflw.$(OBJEXT) -check_bufovflw_LDADD = $(LDADD) -check_create_SOURCES = check_create.c -check_create_OBJECTS = check_create.$(OBJEXT) -check_create_LDADD = $(LDADD) -check_dbf_load_SOURCES = check_dbf_load.c -check_dbf_load_OBJECTS = check_dbf_load.$(OBJEXT) -check_dbf_load_LDADD = $(LDADD) -check_endian_SOURCES = check_endian.c -check_endian_OBJECTS = check_endian.$(OBJEXT) -check_endian_LDADD = $(LDADD) -check_exif_SOURCES = check_exif.c -check_exif_OBJECTS = check_exif.$(OBJEXT) -check_exif_LDADD = $(LDADD) -check_extension_SOURCES = check_extension.c -check_extension_OBJECTS = check_extension.$(OBJEXT) -check_extension_LDADD = $(LDADD) -check_extra_relations_fncts_SOURCES = check_extra_relations_fncts.c -check_extra_relations_fncts_OBJECTS = \ - check_extra_relations_fncts.$(OBJEXT) -check_extra_relations_fncts_LDADD = $(LDADD) -check_fdo1_SOURCES = check_fdo1.c -check_fdo1_OBJECTS = check_fdo1.$(OBJEXT) -check_fdo1_LDADD = $(LDADD) -check_fdo2_SOURCES = check_fdo2.c -check_fdo2_OBJECTS = check_fdo2.$(OBJEXT) -check_fdo2_LDADD = $(LDADD) -check_fdo3_SOURCES = check_fdo3.c -check_fdo3_OBJECTS = check_fdo3.$(OBJEXT) -check_fdo3_LDADD = $(LDADD) -check_fdo_bufovflw_SOURCES = check_fdo_bufovflw.c -check_fdo_bufovflw_OBJECTS = check_fdo_bufovflw.$(OBJEXT) -check_fdo_bufovflw_LDADD = $(LDADD) -check_gaia_utf8_SOURCES = check_gaia_utf8.c -check_gaia_utf8_OBJECTS = check_gaia_utf8.$(OBJEXT) -check_gaia_utf8_LDADD = $(LDADD) -check_gaia_util_SOURCES = check_gaia_util.c -check_gaia_util_OBJECTS = check_gaia_util.$(OBJEXT) -check_gaia_util_LDADD = $(LDADD) -check_geom_aux_SOURCES = check_geom_aux.c -check_geom_aux_OBJECTS = check_geom_aux.$(OBJEXT) -check_geom_aux_LDADD = $(LDADD) -check_geometry_cols_SOURCES = check_geometry_cols.c -check_geometry_cols_OBJECTS = check_geometry_cols.$(OBJEXT) -check_geometry_cols_LDADD = $(LDADD) -check_geoscvt_fncts_SOURCES = check_geoscvt_fncts.c -check_geoscvt_fncts_OBJECTS = check_geoscvt_fncts.$(OBJEXT) -check_geoscvt_fncts_LDADD = $(LDADD) -check_init_SOURCES = check_init.c -check_init_OBJECTS = check_init.$(OBJEXT) -check_init_LDADD = $(LDADD) -check_init2_SOURCES = check_init2.c -check_init2_OBJECTS = check_init2.$(OBJEXT) -check_init2_LDADD = $(LDADD) -check_math_funcs_SOURCES = check_math_funcs.c -check_math_funcs_OBJECTS = check_math_funcs.$(OBJEXT) -check_math_funcs_LDADD = $(LDADD) -check_mbrcache_SOURCES = check_mbrcache.c -check_mbrcache_OBJECTS = check_mbrcache.$(OBJEXT) -check_mbrcache_LDADD = $(LDADD) -check_recover_geom_SOURCES = check_recover_geom.c -check_recover_geom_OBJECTS = check_recover_geom.$(OBJEXT) -check_recover_geom_LDADD = $(LDADD) -check_relations_fncts_SOURCES = check_relations_fncts.c -check_relations_fncts_OBJECTS = check_relations_fncts.$(OBJEXT) -check_relations_fncts_LDADD = $(LDADD) -check_shp_load_SOURCES = check_shp_load.c -check_shp_load_OBJECTS = check_shp_load.$(OBJEXT) -check_shp_load_LDADD = $(LDADD) -check_shp_load_3d_SOURCES = check_shp_load_3d.c -check_shp_load_3d_OBJECTS = check_shp_load_3d.$(OBJEXT) -check_shp_load_3d_LDADD = $(LDADD) -check_spatialindex_SOURCES = check_spatialindex.c -check_spatialindex_OBJECTS = check_spatialindex.$(OBJEXT) -check_spatialindex_LDADD = $(LDADD) -check_sql_stmt_SOURCES = check_sql_stmt.c -check_sql_stmt_OBJECTS = check_sql_stmt.$(OBJEXT) -check_sql_stmt_LDADD = $(LDADD) -check_version_SOURCES = check_version.c -check_version_OBJECTS = check_version.$(OBJEXT) -check_version_LDADD = $(LDADD) -check_virtual_ovflw_SOURCES = check_virtual_ovflw.c -check_virtual_ovflw_OBJECTS = check_virtual_ovflw.$(OBJEXT) -check_virtual_ovflw_LDADD = $(LDADD) -check_virtualtable1_SOURCES = check_virtualtable1.c -check_virtualtable1_OBJECTS = check_virtualtable1.$(OBJEXT) -check_virtualtable1_LDADD = $(LDADD) -check_virtualtable2_SOURCES = check_virtualtable2.c -check_virtualtable2_OBJECTS = check_virtualtable2.$(OBJEXT) -check_virtualtable2_LDADD = $(LDADD) -check_virtualtable3_SOURCES = check_virtualtable3.c -check_virtualtable3_OBJECTS = check_virtualtable3.$(OBJEXT) -check_virtualtable3_LDADD = $(LDADD) -check_virtualtable4_SOURCES = check_virtualtable4.c -check_virtualtable4_OBJECTS = check_virtualtable4.$(OBJEXT) -check_virtualtable4_LDADD = $(LDADD) -check_virtualtable5_SOURCES = check_virtualtable5.c -check_virtualtable5_OBJECTS = check_virtualtable5.$(OBJEXT) -check_virtualtable5_LDADD = $(LDADD) -check_virtualtable6_SOURCES = check_virtualtable6.c -check_virtualtable6_OBJECTS = check_virtualtable6.$(OBJEXT) -check_virtualtable6_LDADD = $(LDADD) -check_xls_load_SOURCES = check_xls_load.c -check_xls_load_OBJECTS = check_xls_load.$(OBJEXT) -check_xls_load_LDADD = $(LDADD) -shape_3d_SOURCES = shape_3d.c -shape_3d_OBJECTS = shape_3d.$(OBJEXT) -shape_3d_LDADD = $(LDADD) -shape_cp1252_SOURCES = shape_cp1252.c -shape_cp1252_OBJECTS = shape_cp1252.$(OBJEXT) -shape_cp1252_LDADD = $(LDADD) -shape_primitives_SOURCES = shape_primitives.c -shape_primitives_OBJECTS = shape_primitives.$(OBJEXT) -shape_primitives_LDADD = $(LDADD) -shape_utf8_1_SOURCES = shape_utf8_1.c -shape_utf8_1_OBJECTS = shape_utf8_1.$(OBJEXT) -shape_utf8_1_LDADD = $(LDADD) -shape_utf8_1ex_SOURCES = shape_utf8_1ex.c -shape_utf8_1ex_OBJECTS = shape_utf8_1ex.$(OBJEXT) -shape_utf8_1ex_LDADD = $(LDADD) -shape_utf8_2_SOURCES = shape_utf8_2.c -shape_utf8_2_OBJECTS = shape_utf8_2.$(OBJEXT) -shape_utf8_2_LDADD = $(LDADD) -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) -depcomp = $(SHELL) $(top_srcdir)/depcomp -am__depfiles_maybe = depfiles -am__mv = mv -f -COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ - $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -CCLD = $(CC) -LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ - --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \ - $(LDFLAGS) -o $@ -SOURCES = check_bufovflw.c check_create.c check_dbf_load.c \ - check_endian.c check_exif.c check_extension.c \ - check_extra_relations_fncts.c check_fdo1.c check_fdo2.c \ - check_fdo3.c check_fdo_bufovflw.c check_gaia_utf8.c \ - check_gaia_util.c check_geom_aux.c check_geometry_cols.c \ - check_geoscvt_fncts.c check_init.c check_init2.c \ - check_math_funcs.c check_mbrcache.c check_recover_geom.c \ - check_relations_fncts.c check_shp_load.c check_shp_load_3d.c \ - check_spatialindex.c check_sql_stmt.c check_version.c \ - check_virtual_ovflw.c check_virtualtable1.c \ - check_virtualtable2.c check_virtualtable3.c \ - check_virtualtable4.c check_virtualtable5.c \ - check_virtualtable6.c check_xls_load.c shape_3d.c \ - shape_cp1252.c shape_primitives.c shape_utf8_1.c \ - shape_utf8_1ex.c shape_utf8_2.c -DIST_SOURCES = check_bufovflw.c check_create.c check_dbf_load.c \ - check_endian.c check_exif.c check_extension.c \ - check_extra_relations_fncts.c check_fdo1.c check_fdo2.c \ - check_fdo3.c check_fdo_bufovflw.c check_gaia_utf8.c \ - check_gaia_util.c check_geom_aux.c check_geometry_cols.c \ - check_geoscvt_fncts.c check_init.c check_init2.c \ - check_math_funcs.c check_mbrcache.c check_recover_geom.c \ - check_relations_fncts.c check_shp_load.c check_shp_load_3d.c \ - check_spatialindex.c check_sql_stmt.c check_version.c \ - check_virtual_ovflw.c check_virtualtable1.c \ - check_virtualtable2.c check_virtualtable3.c \ - check_virtualtable4.c check_virtualtable5.c \ - check_virtualtable6.c check_xls_load.c shape_3d.c \ - shape_cp1252.c shape_primitives.c shape_utf8_1.c \ - shape_utf8_1ex.c shape_utf8_2.c -am__can_run_installinfo = \ - case $$AM_UPDATE_INFO_DIR in \ - n|no|NO) false;; \ - *) (install-info --version) >/dev/null 2>&1;; \ - esac -ETAGS = etags -CTAGS = ctags -am__tty_colors = \ -red=; grn=; lgn=; blu=; std= -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -ACLOCAL = @ACLOCAL@ -AMTAR = @AMTAR@ -AR = @AR@ -AS = @AS@ -AUTOCONF = @AUTOCONF@ -AUTOHEADER = @AUTOHEADER@ -AUTOMAKE = @AUTOMAKE@ -AWK = @AWK@ -CC = @CC@ -CCDEPMODE = @CCDEPMODE@ -CFLAGS = @CFLAGS@ -CPP = @CPP@ -CPPFLAGS = @CPPFLAGS@ -CXX = @CXX@ -CXXCPP = @CXXCPP@ -CXXDEPMODE = @CXXDEPMODE@ -CXXFLAGS = @CXXFLAGS@ -CYGPATH_W = @CYGPATH_W@ -DEFS = @DEFS@ -DEPDIR = @DEPDIR@ -DLLTOOL = @DLLTOOL@ -DSYMUTIL = @DSYMUTIL@ -DUMPBIN = @DUMPBIN@ -ECHO_C = @ECHO_C@ -ECHO_N = @ECHO_N@ -ECHO_T = @ECHO_T@ -EGREP = @EGREP@ -EXEEXT = @EXEEXT@ -FGREP = @FGREP@ -GEOSCONFIG = @GEOSCONFIG@ -GEOS_CFLAGS = @GEOS_CFLAGS@ -GEOS_LDFLAGS = @GEOS_LDFLAGS@ -GREP = @GREP@ -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -LD = @LD@ -LDFLAGS = @LDFLAGS@ -LIBOBJS = @LIBOBJS@ -LIBS = @LIBS@ -LIBTOOL = @LIBTOOL@ -LIPO = @LIPO@ -LN_S = @LN_S@ -LTLIBOBJS = @LTLIBOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MANIFEST_TOOL = @MANIFEST_TOOL@ -MKDIR_P = @MKDIR_P@ -NM = @NM@ -NMEDIT = @NMEDIT@ -OBJDUMP = @OBJDUMP@ -OBJEXT = @OBJEXT@ -OTOOL = @OTOOL@ -OTOOL64 = @OTOOL64@ -PACKAGE = @PACKAGE@ -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -PACKAGE_NAME = @PACKAGE_NAME@ -PACKAGE_STRING = @PACKAGE_STRING@ -PACKAGE_TARNAME = @PACKAGE_TARNAME@ -PACKAGE_URL = @PACKAGE_URL@ -PACKAGE_VERSION = @PACKAGE_VERSION@ -PATH_SEPARATOR = @PATH_SEPARATOR@ -RANLIB = @RANLIB@ -SED = @SED@ -SET_MAKE = @SET_MAKE@ -SHELL = @SHELL@ -STRIP = @STRIP@ -VERSION = @VERSION@ -abs_builddir = @abs_builddir@ -abs_srcdir = @abs_srcdir@ -abs_top_builddir = @abs_top_builddir@ -abs_top_srcdir = @abs_top_srcdir@ -ac_ct_AR = @ac_ct_AR@ -ac_ct_CC = @ac_ct_CC@ -ac_ct_CXX = @ac_ct_CXX@ -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ -am__include = @am__include@ -am__leading_dot = @am__leading_dot@ -am__quote = @am__quote@ -am__tar = @am__tar@ -am__untar = @am__untar@ -bindir = @bindir@ -build = @build@ -build_alias = @build_alias@ -build_cpu = @build_cpu@ -build_os = @build_os@ -build_vendor = @build_vendor@ -builddir = @builddir@ -datadir = @datadir@ -datarootdir = @datarootdir@ -docdir = @docdir@ -dvidir = @dvidir@ -exec_prefix = @exec_prefix@ -host = @host@ -host_alias = @host_alias@ -host_cpu = @host_cpu@ -host_os = @host_os@ -host_vendor = @host_vendor@ -htmldir = @htmldir@ -includedir = @includedir@ -infodir = @infodir@ -install_sh = @install_sh@ -libdir = @libdir@ -libexecdir = @libexecdir@ -localedir = @localedir@ -localstatedir = @localstatedir@ -mandir = @mandir@ -mkdir_p = @mkdir_p@ -oldincludedir = @oldincludedir@ -pdfdir = @pdfdir@ -prefix = @prefix@ -program_transform_name = @program_transform_name@ -psdir = @psdir@ -sbindir = @sbindir@ -sharedstatedir = @sharedstatedir@ -srcdir = @srcdir@ -sysconfdir = @sysconfdir@ -target_alias = @target_alias@ -top_build_prefix = @top_build_prefix@ -top_builddir = @top_builddir@ -top_srcdir = @top_srcdir@ -INCLUDES = @CFLAGS@ @GEOS_CFLAGS@ -AM_CFLAGS = -I@srcdir@/../src/headers -I@srcdir@ -AM_LDFLAGS = -L../src -lspatialite -lm $(GCOV_FLAGS) -TESTS = $(check_PROGRAMS) -MOSTLYCLEANFILES = *.gcna *.gcno *.gcda -EXTRA_DIST = asprintf4win.h \ - fnmatch_impl4win.h \ - fnmatch4win.h \ - scandir4win.h \ - shapetest1.dbf \ - shapetest1.prj \ - shapetest1.qpj \ - shapetest1.shp \ - shapetest1.shx \ - test_under_valgrind.sh \ - WritingSQLTestCase.txt \ - test-legacy-2.3.1.sqlite \ - test-legacy-3.0.1.sqlite \ - shp/new-caledonia/buildings.dbf \ - shp/new-caledonia/buildings.prj \ - shp/new-caledonia/buildings.shp \ - shp/new-caledonia/buildings.shx \ - shp/new-caledonia/points.dbf \ - shp/new-caledonia/points.prj \ - shp/new-caledonia/points.shp \ - shp/new-caledonia/points.shx \ - shp/new-caledonia/railways.dbf \ - shp/new-caledonia/railways.shp \ - shp/new-caledonia/railways.shx \ - shp/gaza/aeroway.dbf \ - shp/gaza/aeroway.prj \ - shp/gaza/aeroway.shp \ - shp/gaza/aeroway.shx \ - shp/gaza/barrier.dbf \ - shp/gaza/barrier.prj \ - shp/gaza/barrier.shp \ - shp/gaza/barrier.shx \ - shp/gaza/route.dbf \ - shp/gaza/route.prj \ - shp/gaza/route.shp \ - shp/gaza/route.shx \ - shp/taiwan/hystoric.dbf \ - shp/taiwan/hystoric.prj \ - shp/taiwan/hystoric.shp \ - shp/taiwan/hystoric.shx \ - shp/taiwan/leisure.dbf \ - shp/taiwan/leisure.prj \ - shp/taiwan/leisure.shp \ - shp/taiwan/leisure.shx \ - shp/taiwan/route.dbf \ - shp/taiwan/route.prj \ - shp/taiwan/route.shp \ - shp/taiwan/route.shx \ - shp/merano-3d/points.dbf \ - shp/merano-3d/points.prj \ - shp/merano-3d/points.shp \ - shp/merano-3d/points.shx \ - shp/merano-3d/polygons.dbf \ - shp/merano-3d/polygons.prj \ - shp/merano-3d/polygons.shp \ - shp/merano-3d/polygons.shx \ - shp/merano-3d/roads.dbf \ - shp/merano-3d/roads.prj \ - shp/merano-3d/roads.shp \ - shp/merano-3d/roads.shx \ - shp/foggia/local_councils.dbf \ - shp/foggia/local_councils.prj \ - shp/foggia/local_councils.shp \ - shp/foggia/local_councils.shx \ - testcase1.xls \ - testcase1.csv \ - sql_stmt_mathsql_tests/acos10.testcase \ - sql_stmt_mathsql_tests/acos20.testcase \ - sql_stmt_mathsql_tests/acos2.testcase \ - sql_stmt_mathsql_tests/acos.testcase \ - sql_stmt_mathsql_tests/acos-text.testcase \ - sql_stmt_tests/asbinary10.testcase \ - sql_stmt_tests/asbinary11.testcase \ - sql_stmt_tests/asbinary12.testcase \ - sql_stmt_tests/asbinary13.testcase \ - sql_stmt_tests/asbinary14.testcase \ - sql_stmt_tests/asbinary15.testcase \ - sql_stmt_tests/asbinary16.testcase \ - sql_stmt_tests/asbinary17.testcase \ - sql_stmt_tests/asbinary1.testcase \ - sql_stmt_tests/asbinary2.testcase \ - sql_stmt_tests/asbinary3.testcase \ - sql_stmt_tests/asbinary4.testcase \ - sql_stmt_tests/asbinary5.testcase \ - sql_stmt_tests/asbinary6.testcase \ - sql_stmt_tests/asbinary7.testcase \ - sql_stmt_tests/asbinary8.testcase \ - sql_stmt_tests/asbinary9.testcase \ - sql_stmt_tests/asewkb10.testcase \ - sql_stmt_tests/asewkb11.testcase \ - sql_stmt_tests/asewkb12.testcase \ - sql_stmt_tests/asewkb13.testcase \ - sql_stmt_tests/asewkb14.testcase \ - sql_stmt_tests/asewkb15.testcase \ - sql_stmt_tests/asewkb16.testcase \ - sql_stmt_tests/asewkb17.testcase \ - sql_stmt_tests/asewkb1.testcase \ - sql_stmt_tests/asewkb2.testcase \ - sql_stmt_tests/asewkb3.testcase \ - sql_stmt_tests/asewkb4.testcase \ - sql_stmt_tests/asewkb5.testcase \ - sql_stmt_tests/asewkb6.testcase \ - sql_stmt_tests/asewkb7.testcase \ - sql_stmt_tests/asewkb8.testcase \ - sql_stmt_tests/asewkb9.testcase \ - sql_stmt_tests/asfgf1.testcase \ - sql_stmt_tests/asfgf2.testcase \ - sql_stmt_tests/asfgf3.testcase \ - sql_stmt_tests/asfgf4.testcase \ - sql_stmt_tests/asfgf5.testcase \ - sql_stmt_tests/asfgf6.testcase \ - sql_stmt_tests/asfgf7.testcase \ - sql_stmt_tests/asfgf8.testcase \ - sql_stmt_tests/asfgf9.testcase \ - sql_stmt_tests/asgeojson1.testcase \ - sql_stmt_tests/asgeojson2.testcase \ - sql_stmt_tests/asgeojson3.testcase \ - sql_stmt_tests/asgeojson4.testcase \ - sql_stmt_tests/asgeojson5.testcase \ - sql_stmt_tests/asgeojson6.testcase \ - sql_stmt_tests/asgeojson7.testcase \ - sql_stmt_tests/asgml10.testcase \ - sql_stmt_tests/asgml11.testcase \ - sql_stmt_tests/asgml1.testcase \ - sql_stmt_tests/asgml2.testcase \ - sql_stmt_tests/asgml3.testcase \ - sql_stmt_tests/asgml4.testcase \ - sql_stmt_tests/asgml5.testcase \ - sql_stmt_tests/asgml6.testcase \ - sql_stmt_tests/asgml7.testcase \ - sql_stmt_tests/asgml8.testcase \ - sql_stmt_tests/asgml9.testcase \ - sql_stmt_mathsql_tests/asin10.testcase \ - sql_stmt_mathsql_tests/asin1.testcase \ - sql_stmt_mathsql_tests/asin20.testcase \ - sql_stmt_mathsql_tests/asin2.testcase \ - sql_stmt_mathsql_tests/asin-text.testcase \ - sql_stmt_proj_tests/askml10.testcase \ - sql_stmt_proj_tests/askml11.testcase \ - sql_stmt_proj_tests/askml1.testcase \ - sql_stmt_proj_tests/askml2.testcase \ - sql_stmt_proj_tests/askml3.testcase \ - sql_stmt_proj_tests/askml4.testcase \ - sql_stmt_proj_tests/askml5.testcase \ - sql_stmt_proj_tests/askml6.testcase \ - sql_stmt_proj_tests/askml7.testcase \ - sql_stmt_proj_tests/askml8.testcase \ - sql_stmt_proj_tests/askml9.testcase \ - sql_stmt_tests/assvg17.testcase \ - sql_stmt_tests/assvg18.testcase \ - sql_stmt_tests/assvg19.testcase \ - sql_stmt_tests/assvg1.testcase \ - sql_stmt_tests/assvg20.testcase \ - sql_stmt_tests/assvg21.testcase \ - sql_stmt_tests/assvg22.testcase \ - sql_stmt_tests/assvg23.testcase \ - sql_stmt_tests/assvg24.testcase \ - sql_stmt_tests/assvg25.testcase \ - sql_stmt_tests/assvg26.testcase \ - sql_stmt_tests/assvg2.testcase \ - sql_stmt_tests/assvg3.testcase \ - sql_stmt_tests/assvg4.testcase \ - sql_stmt_tests/assvg5.testcase \ - sql_stmt_tests/assvg6.testcase \ - sql_stmt_tests/assvg7.testcase \ - sql_stmt_tests/assvg8.testcase \ - sql_stmt_tests/assvg9.testcase \ - sql_stmt_tests/aswkt-text.testcase \ - sql_stmt_mathsql_tests/atan00.testcase \ - sql_stmt_mathsql_tests/atan0.testcase \ - sql_stmt_mathsql_tests/atan-text.testcase \ - sql_stmt_tests/badEWKT1.testcase \ - sql_stmt_tests/badEWKT2.testcase \ - sql_stmt_tests/badEWKT3.testcase \ - sql_stmt_tests/badEWKT4.testcase \ - sql_stmt_tests/badEWKT5.testcase \ - sql_stmt_tests/badEWKT6.testcase \ - sql_stmt_tests/badEWKT7.testcase \ - sql_stmt_tests/badEWKT8.testcase \ - sql_stmt_tests/badGeoJSON1.testcase \ - sql_stmt_tests/badGeoJSON2.testcase \ - sql_stmt_tests/badGeoJSON3.testcase \ - sql_stmt_tests/badGeoJSON4.testcase \ - sql_stmt_tests/badGeoJSON5.testcase \ - sql_stmt_tests/badGeoJSON6.testcase \ - sql_stmt_tests/badGeoJSON7.testcase \ - sql_stmt_tests/badGML1.testcase \ - sql_stmt_tests/badGML2.testcase \ - sql_stmt_tests/badGML3.testcase \ - sql_stmt_tests/badGML4.testcase \ - sql_stmt_tests/badGML5.testcase \ - sql_stmt_tests/badGML6.testcase \ - sql_stmt_tests/badGML7.testcase \ - sql_stmt_tests/badKML1.testcase \ - sql_stmt_tests/badKML2.testcase \ - sql_stmt_tests/badKML3.testcase \ - sql_stmt_tests/badKML4.testcase \ - sql_stmt_tests/badKML5.testcase \ - sql_stmt_tests/badKML6.testcase \ - sql_stmt_tests/badKML7.testcase \ - sql_stmt_tests/badwkt1.testcase \ - sql_stmt_tests/badwkt2.testcase \ - sql_stmt_tests/badwkt3.testcase \ - sql_stmt_tests/badwkt4.testcase \ - sql_stmt_tests/badwkt5.testcase \ - sql_stmt_tests/badwkt6.testcase \ - sql_stmt_tests/badwkt7.testcase \ - sql_stmt_tests/badwkt8.testcase \ - sql_stmt_tests/badwkt9.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext10.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext13.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext14.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext15.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext16.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext17.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext1.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext2.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext3.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext4.testcase \ - sql_stmt_geos_tests/bdmpolyfromtext9.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb10.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb11.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb12.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb13.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb14.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb15.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb16.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb17.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb18.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb19.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb1.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb2.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb3.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb4.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb5.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb6.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb7.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb8.testcase \ - sql_stmt_geos_tests/bdmpolyfromwkb9.testcase \ - sql_stmt_geos_tests/bdpolyfromtext10.testcase \ - sql_stmt_geos_tests/bdpolyfromtext11.testcase \ - sql_stmt_geos_tests/bdpolyfromtext12.testcase \ - sql_stmt_geos_tests/bdpolyfromtext13.testcase \ - sql_stmt_geos_tests/bdpolyfromtext14.testcase \ - sql_stmt_geos_tests/bdpolyfromtext15.testcase \ - sql_stmt_geos_tests/bdpolyfromtext16.testcase \ - sql_stmt_geos_tests/bdpolyfromtext1.testcase \ - sql_stmt_geos_tests/bdpolyfromtext2.testcase \ - sql_stmt_geos_tests/bdpolyfromtext3.testcase \ - sql_stmt_geos_tests/bdpolyfromtext4.testcase \ - sql_stmt_geos_tests/bdpolyfromtext5.testcase \ - sql_stmt_geos_tests/bdpolyfromtext6.testcase \ - sql_stmt_geos_tests/bdpolyfromtext7.testcase \ - sql_stmt_geos_tests/bdpolyfromtext8.testcase \ - sql_stmt_geos_tests/bdpolyfromtext9.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb10.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb11.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb12.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb13.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb14.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb15.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb16.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb17.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb18.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb19.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb1.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb2.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb3.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb4.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb5.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb6.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb7.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb8.testcase \ - sql_stmt_geos_tests/bdpolyfromwkb9.testcase \ - sql_stmt_security_tests/blobfromfile1.testcase \ - sql_stmt_security_tests/blobfromfile2.testcase \ - sql_stmt_security_tests/blobfromfile3.testcase \ - sql_stmt_security_tests/blobfromfile4.testcase \ - sql_stmt_security_tests/isXblob1.testcase \ - sql_stmt_security_tests/isXblob2.testcase \ - sql_stmt_security_tests/isXblob3.testcase \ - sql_stmt_security_tests/isXblob4.testcase \ - sql_stmt_security_tests/isXblob8.testcase \ - sql_stmt_security_tests/isXblob9.testcase \ - sql_stmt_geos_tests/boundary1.testcase \ - sql_stmt_geos_tests/boundary2.testcase \ - sql_stmt_geos_tests/boundary3.testcase \ - sql_stmt_geos_tests/boundary4.testcase \ - sql_stmt_geos_tests/boundary5.testcase \ - sql_stmt_geos_tests/boundary6.testcase \ - sql_stmt_geos_tests/boundary7.testcase \ - sql_stmt_geos_tests/boundary8.testcase \ - sql_stmt_geos_tests/boundary9.testcase \ - sql_stmt_geos_tests/buffer10.testcase \ - sql_stmt_geos_tests/buffer1.testcase \ - sql_stmt_geos_tests/buffer2.testcase \ - sql_stmt_geos_tests/buffer3.testcase \ - sql_stmt_geos_tests/buffer4.testcase \ - sql_stmt_geos_tests/buffer5.testcase \ - sql_stmt_geos_tests/buffer6.testcase \ - sql_stmt_geos_tests/buffer7.testcase \ - sql_stmt_geos_tests/buffer8.testcase \ - sql_stmt_geos_tests/buffer9.testcase \ - sql_stmt_geos_tests/buildarea1.testcase \ - sql_stmt_geos_tests/buildarea2.testcase \ - sql_stmt_geos_tests/buildarea3.testcase \ - sql_stmt_geos_tests/buildarea4.testcase \ - sql_stmt_geos_tests/buildarea5.testcase \ - sql_stmt_geos_tests/buildarea6.testcase \ - sql_stmt_tests/buildcirclembr10.testcase \ - sql_stmt_tests/buildcirclembr11.testcase \ - sql_stmt_tests/buildcirclembr12.testcase \ - sql_stmt_tests/buildcirclembr1.testcase \ - sql_stmt_tests/buildcirclembr2.testcase \ - sql_stmt_tests/buildcirclembr3.testcase \ - sql_stmt_tests/buildcirclembr4.testcase \ - sql_stmt_tests/buildcirclembr5.testcase \ - sql_stmt_tests/buildcirclembr6.testcase \ - sql_stmt_tests/buildcirclembr7.testcase \ - sql_stmt_tests/buildcirclembr8.testcase \ - sql_stmt_tests/buildcirclembr9.testcase \ - sql_stmt_tests/buildmbr10.testcase \ - sql_stmt_tests/buildmbr11.testcase \ - sql_stmt_tests/buildmbr12.testcase \ - sql_stmt_tests/buildmbr13.testcase \ - sql_stmt_tests/buildmbr14.testcase \ - sql_stmt_tests/buildmbr1.testcase \ - sql_stmt_tests/buildmbr2.testcase \ - sql_stmt_tests/buildmbr3.testcase \ - sql_stmt_tests/buildmbr4.testcase \ - sql_stmt_tests/buildmbr5.testcase \ - sql_stmt_tests/buildmbr6.testcase \ - sql_stmt_tests/buildmbr7.testcase \ - sql_stmt_tests/buildmbr8.testcase \ - sql_stmt_tests/buildmbr9.testcase \ - sql_stmt_tests/casttogeometrycollection2.testcase \ - sql_stmt_tests/casttogeometrycollection3.testcase \ - sql_stmt_tests/casttogeometrycollection4.testcase \ - sql_stmt_tests/casttogeometrycollection5.testcase \ - sql_stmt_tests/casttogeometrycollection6.testcase \ - sql_stmt_tests/casttogeometrycollection.testcase \ - sql_stmt_tests/casttolinestring1.testcase \ - sql_stmt_tests/casttolinestring2.testcase \ - sql_stmt_tests/casttolinestring3.testcase \ - sql_stmt_tests/casttolinestring4.testcase \ - sql_stmt_tests/casttolinestring5.testcase \ - sql_stmt_tests/casttolinestring6.testcase \ - sql_stmt_tests/casttolinestring7.testcase \ - sql_stmt_tests/casttolinestring8.testcase \ - sql_stmt_tests/casttomulti11.testcase \ - sql_stmt_tests/casttomulti1.testcase \ - sql_stmt_tests/casttomulti2.testcase \ - sql_stmt_tests/casttomulti3.testcase \ - sql_stmt_tests/casttomulti4.testcase \ - sql_stmt_tests/casttomulti5.testcase \ - sql_stmt_tests/casttomulti6.testcase \ - sql_stmt_tests/casttomulti7.testcase \ - sql_stmt_tests/casttomulti8.testcase \ - sql_stmt_tests/casttomultilinestring1.testcase \ - sql_stmt_tests/casttomultilinestring2.testcase \ - sql_stmt_tests/casttomultilinestring3.testcase \ - sql_stmt_tests/casttomultilinestring4.testcase \ - sql_stmt_tests/casttomultilinestring5.testcase \ - sql_stmt_tests/casttomultilinestring6.testcase \ - sql_stmt_tests/casttomultilinestring7.testcase \ - sql_stmt_tests/casttomultipoint1.testcase \ - sql_stmt_tests/casttomultipoint2.testcase \ - sql_stmt_tests/casttomultipoint3.testcase \ - sql_stmt_tests/casttomultipoint4.testcase \ - sql_stmt_tests/casttomultipoint5.testcase \ - sql_stmt_tests/casttomultipoint6.testcase \ - sql_stmt_tests/casttomultipoint7.testcase \ - sql_stmt_tests/casttomultipoint8.testcase \ - sql_stmt_tests/casttomultipoint9.testcase \ - sql_stmt_tests/casttomultipolygon1.testcase \ - sql_stmt_tests/casttomultipolygon2.testcase \ - sql_stmt_tests/casttomultipolygon3.testcase \ - sql_stmt_tests/casttomultipolygon4.testcase \ - sql_stmt_tests/casttomultipolygon5.testcase \ - sql_stmt_tests/casttopoint1.testcase \ - sql_stmt_tests/casttopoint2.testcase \ - sql_stmt_tests/casttopoint3.testcase \ - sql_stmt_tests/casttopoint4.testcase \ - sql_stmt_tests/casttopoint5.testcase \ - sql_stmt_tests/casttopoint6.testcase \ - sql_stmt_tests/casttopoint7.testcase \ - sql_stmt_tests/casttopoint8.testcase \ - sql_stmt_tests/casttopoly1.testcase \ - sql_stmt_tests/casttopoly2.testcase \ - sql_stmt_tests/casttopoly3.testcase \ - sql_stmt_tests/casttopoly4.testcase \ - sql_stmt_tests/casttopoly5.testcase \ - sql_stmt_tests/casttopoly6.testcase \ - sql_stmt_tests/casttopoly7.testcase \ - sql_stmt_tests/casttopoly8.testcase \ - sql_stmt_tests/casttosingle10.testcase \ - sql_stmt_tests/casttosingle12.testcase \ - sql_stmt_tests/casttosingle1.testcase \ - sql_stmt_tests/casttosingle2.testcase \ - sql_stmt_tests/casttosingle3.testcase \ - sql_stmt_tests/casttosingle4.testcase \ - sql_stmt_tests/casttosingle5.testcase \ - sql_stmt_tests/casttosingle6.testcase \ - sql_stmt_tests/casttosingle7.testcase \ - sql_stmt_tests/casttosingle8.testcase \ - sql_stmt_tests/casttosingle9.testcase \ - sql_stmt_tests/casttoxy1.testcase \ - sql_stmt_tests/casttoxy2.testcase \ - sql_stmt_tests/casttoxy3.testcase \ - sql_stmt_tests/casttoxym1.testcase \ - sql_stmt_tests/casttoxym2.testcase \ - sql_stmt_tests/casttoxym3.testcase \ - sql_stmt_tests/casttoxym4.testcase \ - sql_stmt_tests/casttoxym5.testcase \ - sql_stmt_tests/casttoxym6.testcase \ - sql_stmt_tests/casttoxyz1.testcase \ - sql_stmt_tests/casttoxyz2.testcase \ - sql_stmt_tests/casttoxyz3.testcase \ - sql_stmt_tests/casttoxyz4.testcase \ - sql_stmt_tests/casttoxyz5.testcase \ - sql_stmt_tests/casttoxyz6.testcase \ - sql_stmt_tests/casttoxyzm1.testcase \ - sql_stmt_tests/casttoxyzm2.testcase \ - sql_stmt_tests/casttoxyzm3.testcase \ - sql_stmt_tests/casttoxyzm4.testcase \ - sql_stmt_tests/casttoxyzm5.testcase \ - sql_stmt_tests/casttoxyzm6.testcase \ - sql_stmt_mathsql_tests/ceilfloat2.testcase \ - sql_stmt_mathsql_tests/ceilfloat.testcase \ - sql_stmt_mathsql_tests/ceil-int.testcase \ - sql_stmt_mathsql_tests/ceilnull.testcase \ - sql_stmt_geos_tests/centroid1.testcase \ - sql_stmt_geos_tests/centroid2.testcase \ - sql_stmt_geos_tests/centroid3.testcase \ - sql_stmt_geos_tests/centroid4.testcase \ - sql_stmt_geos_tests/centroid5.testcase \ - sql_stmt_geos_tests/centroid6.testcase \ - sql_stmt_geos_tests/centroid7.testcase \ - sql_stmt_geos_tests/centroid8.testcase \ - sql_stmt_tests/checkspatialmetadata1.testcase \ - sql_stmt_tests/checkspatialmetadata2.testcase \ - sql_stmt_tests/checkspatialmetadata3.testcase \ - sql_stmt_tests/checkspatialmetadata4.testcase \ - sql_stmt_tests/checkspatialmetadata5.testcase \ - sql_stmt_tests/ch_m.testcase \ - sql_stmt_geosadvanced_tests/closestpoint10.testcase \ - sql_stmt_geosadvanced_tests/closestpoint11.testcase \ - sql_stmt_geosadvanced_tests/closestpoint12.testcase \ - sql_stmt_geosadvanced_tests/closestpoint13.testcase \ - sql_stmt_geosadvanced_tests/closestpoint14.testcase \ - sql_stmt_geosadvanced_tests/closestpoint15.testcase \ - sql_stmt_geosadvanced_tests/closestpoint16.testcase \ - sql_stmt_geosadvanced_tests/closestpoint17.testcase \ - sql_stmt_geosadvanced_tests/closestpoint18.testcase \ - sql_stmt_geosadvanced_tests/closestpoint19.testcase \ - sql_stmt_geosadvanced_tests/closestpoint1.testcase \ - sql_stmt_geosadvanced_tests/closestpoint20.testcase \ - sql_stmt_geosadvanced_tests/closestpoint21.testcase \ - sql_stmt_geosadvanced_tests/closestpoint22.testcase \ - sql_stmt_geosadvanced_tests/closestpoint2.testcase \ - sql_stmt_geosadvanced_tests/closestpoint3.testcase \ - sql_stmt_geosadvanced_tests/closestpoint4.testcase \ - sql_stmt_geosadvanced_tests/closestpoint5.testcase \ - sql_stmt_geosadvanced_tests/closestpoint6.testcase \ - sql_stmt_geosadvanced_tests/closestpoint7.testcase \ - sql_stmt_geosadvanced_tests/closestpoint8.testcase \ - sql_stmt_geosadvanced_tests/closestpoint9.testcase \ - sql_stmt_tests/cm_m.testcase \ - sql_stmt_tests/collect10.testcase \ - sql_stmt_tests/collect11.testcase \ - sql_stmt_tests/collect12.testcase \ - sql_stmt_tests/collect13.testcase \ - sql_stmt_tests/collect14.testcase \ - sql_stmt_tests/collect15.testcase \ - sql_stmt_tests/collect16.testcase \ - sql_stmt_tests/collect17.testcase \ - sql_stmt_tests/collect18.testcase \ - sql_stmt_tests/collect19.testcase \ - sql_stmt_tests/collect1.testcase \ - sql_stmt_tests/collect20.testcase \ - sql_stmt_tests/collect21.testcase \ - sql_stmt_tests/collect23.testcase \ - sql_stmt_tests/collect24.testcase \ - sql_stmt_tests/collect25.testcase \ - sql_stmt_tests/collect26.testcase \ - sql_stmt_tests/collect27.testcase \ - sql_stmt_tests/collect28.testcase \ - sql_stmt_tests/collect29.testcase \ - sql_stmt_tests/collect2.testcase \ - sql_stmt_tests/collect30.testcase \ - sql_stmt_tests/collect31.testcase \ - sql_stmt_tests/collect32.testcase \ - sql_stmt_tests/collect33.testcase \ - sql_stmt_tests/collect34.testcase \ - sql_stmt_tests/collect35.testcase \ - sql_stmt_tests/collect36.testcase \ - sql_stmt_tests/collect37.testcase \ - sql_stmt_tests/collect38.testcase \ - sql_stmt_tests/collect39.testcase \ - sql_stmt_tests/collect3.testcase \ - sql_stmt_tests/collect40.testcase \ - sql_stmt_tests/collect41.testcase \ - sql_stmt_tests/collect42.testcase \ - sql_stmt_tests/collect43.testcase \ - sql_stmt_tests/collect44.testcase \ - sql_stmt_tests/collect45.testcase \ - sql_stmt_tests/collect46.testcase \ - sql_stmt_tests/collect47.testcase \ - sql_stmt_tests/collect48.testcase \ - sql_stmt_tests/collect49.testcase \ - sql_stmt_tests/collect4.testcase \ - sql_stmt_tests/collect50.testcase \ - sql_stmt_tests/collect51.testcase \ - sql_stmt_tests/collect52.testcase \ - sql_stmt_tests/collect53.testcase \ - sql_stmt_tests/collect54.testcase \ - sql_stmt_tests/collect55.testcase \ - sql_stmt_tests/collect56.testcase \ - sql_stmt_tests/collect57.testcase \ - sql_stmt_tests/collect58.testcase \ - sql_stmt_tests/collect59.testcase \ - sql_stmt_tests/collect5.testcase \ - sql_stmt_tests/collect6.testcase \ - sql_stmt_tests/collect7.testcase \ - sql_stmt_tests/collect8.testcase \ - sql_stmt_tests/collect9.testcase \ - sql_stmt_tests/collectextract10.testcase \ - sql_stmt_tests/collectextract11.testcase \ - sql_stmt_tests/collectextract12.testcase \ - sql_stmt_tests/collectextract13.testcase \ - sql_stmt_tests/collectextract14.testcase \ - sql_stmt_tests/collectextract15.testcase \ - sql_stmt_tests/collectextract16.testcase \ - sql_stmt_tests/collectextract17.testcase \ - sql_stmt_tests/collectextract18.testcase \ - sql_stmt_tests/collectextract19.testcase \ - sql_stmt_tests/collectextract1.testcase \ - sql_stmt_tests/collectextract20.testcase \ - sql_stmt_tests/collectextract21.testcase \ - sql_stmt_tests/collectextract22.testcase \ - sql_stmt_tests/collectextract2.testcase \ - sql_stmt_tests/collectextract3.testcase \ - sql_stmt_tests/collectextract4.testcase \ - sql_stmt_tests/collectextract5.testcase \ - sql_stmt_tests/collectextract6.testcase \ - sql_stmt_tests/collectextract7.testcase \ - sql_stmt_tests/collectextract8.testcase \ - sql_stmt_tests/collectextract9.testcase \ - sql_stmt_tests/compressgeometry10.testcase \ - sql_stmt_tests/compressgeometry11.testcase \ - sql_stmt_tests/compressgeometry12.testcase \ - sql_stmt_tests/compressgeometry13.testcase \ - sql_stmt_tests/compressgeometry14.testcase \ - sql_stmt_tests/compressgeometry15.testcase \ - sql_stmt_tests/compressgeometry17.testcase \ - sql_stmt_tests/compressgeometry18.testcase \ - sql_stmt_tests/compressgeometry19.testcase \ - sql_stmt_tests/compressgeometry1.testcase \ - sql_stmt_tests/compressgeometry20.testcase \ - sql_stmt_tests/compressgeometry21.testcase \ - sql_stmt_tests/compressgeometry22.testcase \ - sql_stmt_tests/compressgeometry23.testcase \ - sql_stmt_tests/compressgeometry24.testcase \ - sql_stmt_tests/compressgeometry25.testcase \ - sql_stmt_tests/compressgeometry26.testcase \ - sql_stmt_tests/compressgeometry27.testcase \ - sql_stmt_tests/compressgeometry28.testcase \ - sql_stmt_tests/compressgeometry29.testcase \ - sql_stmt_tests/compressgeometry2.testcase \ - sql_stmt_tests/compressgeometry30.testcase \ - sql_stmt_tests/compressgeometry31.testcase \ - sql_stmt_tests/compressgeometry32.testcase \ - sql_stmt_tests/compressgeometry33.testcase \ - sql_stmt_tests/compressgeometry34.testcase \ - sql_stmt_tests/compressgeometry35.testcase \ - sql_stmt_tests/compressgeometry36.testcase \ - sql_stmt_tests/compressgeometry37.testcase \ - sql_stmt_tests/compressgeometry38.testcase \ - sql_stmt_tests/compressgeometry39.testcase \ - sql_stmt_tests/compressgeometry3.testcase \ - sql_stmt_tests/compressgeometry40.testcase \ - sql_stmt_tests/compressgeometry41.testcase \ - sql_stmt_tests/compressgeometry42.testcase \ - sql_stmt_tests/compressgeometry43.testcase \ - sql_stmt_tests/compressgeometry44.testcase \ - sql_stmt_tests/compressgeometry45.testcase \ - sql_stmt_tests/compressgeometry46.testcase \ - sql_stmt_tests/compressgeometry47.testcase \ - sql_stmt_tests/compressgeometry48.testcase \ - sql_stmt_tests/compressgeometry49.testcase \ - sql_stmt_tests/compressgeometry4.testcase \ - sql_stmt_tests/compressgeometry50.testcase \ - sql_stmt_tests/compressgeometry51.testcase \ - sql_stmt_tests/compressgeometry52.testcase \ - sql_stmt_tests/compressgeometry53.testcase \ - sql_stmt_tests/compressgeometry54.testcase \ - sql_stmt_tests/compressgeometry55.testcase \ - sql_stmt_tests/compressgeometry56.testcase \ - sql_stmt_tests/compressgeometry57.testcase \ - sql_stmt_tests/compressgeometry58.testcase \ - sql_stmt_tests/compressgeometry59.testcase \ - sql_stmt_tests/compressgeometry5.testcase \ - sql_stmt_tests/compressgeometry60.testcase \ - sql_stmt_tests/compressgeometry61.testcase \ - sql_stmt_tests/compressgeometry62.testcase \ - sql_stmt_tests/compressgeometry63.testcase \ - sql_stmt_tests/compressgeometry64.testcase \ - sql_stmt_tests/compressgeometry65.testcase \ - sql_stmt_tests/compressgeometry66.testcase \ - sql_stmt_tests/compressgeometry67.testcase \ - sql_stmt_tests/compressgeometry68.testcase \ - sql_stmt_tests/compressgeometry69.testcase \ - sql_stmt_tests/compressgeometry6.testcase \ - sql_stmt_tests/compressgeometry7.testcase \ - sql_stmt_tests/compressgeometry8.testcase \ - sql_stmt_tests/compressgeometry9.testcase \ - sql_stmt_geos_tests/convexhull10.testcase \ - sql_stmt_geos_tests/convexhull1.testcase \ - sql_stmt_geos_tests/convexhull2.testcase \ - sql_stmt_geos_tests/convexhull3.testcase \ - sql_stmt_geos_tests/convexhull4.testcase \ - sql_stmt_geos_tests/convexhull5.testcase \ - sql_stmt_geos_tests/convexhull6.testcase \ - sql_stmt_geos_tests/convexhull7.testcase \ - sql_stmt_geos_tests/convexhull8.testcase \ - sql_stmt_geos_tests/convexhull9.testcase \ - sql_stmt_mathsql_tests/cos00.testcase \ - sql_stmt_mathsql_tests/cos0.testcase \ - sql_stmt_mathsql_tests/cos-text.testcase \ - sql_stmt_mathsql_tests/cot00.testcase \ - sql_stmt_mathsql_tests/cot0.testcase \ - sql_stmt_mathsql_tests/cotpi2.testcase \ - sql_stmt_mathsql_tests/cot-text.testcase \ - sql_stmt_geosadvanced_tests/coveredby1.testcase \ - sql_stmt_geosadvanced_tests/coveredby2.testcase \ - sql_stmt_geosadvanced_tests/covers1.testcase \ - sql_stmt_geosadvanced_tests/covers2.testcase \ - sql_stmt_geosadvanced_tests/covers_covered1.testcase \ - sql_stmt_geosadvanced_tests/covers_covered2.testcase \ - sql_stmt_geosadvanced_tests/covers_covered3.testcase \ - sql_stmt_geosadvanced_tests/covers_covered4.testcase \ - sql_stmt_geosadvanced_tests/covers_covered5.testcase \ - sql_stmt_geosadvanced_tests/covers_covered6.testcase \ - sql_stmt_geosadvanced_tests/covers_covered7.testcase \ - sql_stmt_geosadvanced_tests/createtopo10.testcase \ - sql_stmt_geosadvanced_tests/createtopo11.testcase \ - sql_stmt_geosadvanced_tests/createtopo12.testcase \ - sql_stmt_geosadvanced_tests/createtopo13.testcase \ - sql_stmt_geosadvanced_tests/createtopo14.testcase \ - sql_stmt_geosadvanced_tests/createtopo15.testcase \ - sql_stmt_geosadvanced_tests/createtopo16.testcase \ - sql_stmt_geosadvanced_tests/createtopo17.testcase \ - sql_stmt_geosadvanced_tests/createtopo18.testcase \ - sql_stmt_geosadvanced_tests/createtopo1.testcase \ - sql_stmt_geosadvanced_tests/createtopo2.testcase \ - sql_stmt_geosadvanced_tests/createtopo3.testcase \ - sql_stmt_geosadvanced_tests/createtopo4.testcase \ - sql_stmt_geosadvanced_tests/createtopo5.testcase \ - sql_stmt_geosadvanced_tests/createtopo6.testcase \ - sql_stmt_geosadvanced_tests/createtopo7.testcase \ - sql_stmt_geosadvanced_tests/createtopo8.testcase \ - sql_stmt_geosadvanced_tests/createtopo9.testcase \ - sql_stmt_mathsql_tests/degrees45.testcase \ - sql_stmt_mathsql_tests/degrees.testcase \ - sql_stmt_mathsql_tests/degreestext.testcase \ - sql_stmt_geos_tests/difference10.testcase \ - sql_stmt_geos_tests/difference11.testcase \ - sql_stmt_geos_tests/difference12.testcase \ - sql_stmt_geos_tests/difference1.testcase \ - sql_stmt_geos_tests/difference2.testcase \ - sql_stmt_geos_tests/difference3.testcase \ - sql_stmt_geos_tests/difference4.testcase \ - sql_stmt_geos_tests/difference6.testcase \ - sql_stmt_geos_tests/difference7.testcase \ - sql_stmt_geos_tests/difference8.testcase \ - sql_stmt_geos_tests/difference9.testcase \ - sql_stmt_tests/dimension1.testcase \ - sql_stmt_tests/dimension2.testcase \ - sql_stmt_tests/dimension3.testcase \ - sql_stmt_tests/dimension4.testcase \ - sql_stmt_tests/dimension5.testcase \ - sql_stmt_tests/dimension6.testcase \ - sql_stmt_tests/dimension7.testcase \ - sql_stmt_tests/dimension8.testcase \ - sql_stmt_tests/dissolve10.testcase \ - sql_stmt_tests/dissolve11.testcase \ - sql_stmt_tests/dissolve12.testcase \ - sql_stmt_tests/dissolve13.testcase \ - sql_stmt_tests/dissolve14.testcase \ - sql_stmt_tests/dissolve15.testcase \ - sql_stmt_tests/dissolve16.testcase \ - sql_stmt_tests/dissolve17.testcase \ - sql_stmt_tests/dissolve18.testcase \ - sql_stmt_tests/dissolve19.testcase \ - sql_stmt_tests/dissolve1.testcase \ - sql_stmt_tests/dissolve20.testcase \ - sql_stmt_tests/dissolve21.testcase \ - sql_stmt_tests/dissolve22.testcase \ - sql_stmt_tests/dissolve23.testcase \ - sql_stmt_tests/dissolve24.testcase \ - sql_stmt_tests/dissolve25.testcase \ - sql_stmt_tests/dissolve26.testcase \ - sql_stmt_tests/dissolve27.testcase \ - sql_stmt_tests/dissolve28.testcase \ - sql_stmt_tests/dissolve29.testcase \ - sql_stmt_tests/dissolve2.testcase \ - sql_stmt_tests/dissolve30.testcase \ - sql_stmt_tests/dissolve3.testcase \ - sql_stmt_tests/dissolve4.testcase \ - sql_stmt_tests/dissolve5.testcase \ - sql_stmt_tests/dissolve6.testcase \ - sql_stmt_tests/dissolve7.testcase \ - sql_stmt_tests/dissolve8.testcase \ - sql_stmt_tests/dissolve9.testcase \ - sql_stmt_geos_tests/distance1.testcase \ - sql_stmt_geos_tests/distance2.testcase \ - sql_stmt_geos_tests/distance3.testcase \ - sql_stmt_geos_tests/distance4.testcase \ - sql_stmt_geos_tests/distance5.testcase \ - sql_stmt_geos_tests/distance6.testcase \ - sql_stmt_geos_tests/distance7.testcase \ - sql_stmt_geos_tests/distance8.testcase \ - sql_stmt_geos_tests/distance9.testcase \ - sql_stmt_geos_tests/distance10.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr1.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr2.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr3.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr4.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr5.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr6.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr7.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr8.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr9.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr10.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr11.testcase \ - sql_stmt_geosadvanced_tests/distance_geogr12.testcase \ - sql_stmt_tests/dm_m.testcase \ - sql_stmt_tests/DSC_1467.JPG \ - sql_stmt_tests/DSCN0042.JPG \ - sql_stmt_tests/emptyfile.txt \ - sql_stmt_tests/endpoint1.testcase \ - sql_stmt_tests/envelope1.testcase \ - sql_stmt_tests/envelope2.testcase \ - sql_stmt_tests/envelope3.testcase \ - sql_stmt_tests/envelope4.testcase \ - sql_stmt_tests/envelope5.testcase \ - sql_stmt_tests/envelope6.testcase \ - sql_stmt_tests/envelope7.testcase \ - sql_stmt_tests/envintersects10.testcase \ - sql_stmt_tests/envintersects1.testcase \ - sql_stmt_tests/envintersects2.testcase \ - sql_stmt_tests/envintersects3.testcase \ - sql_stmt_tests/envintersects4.testcase \ - sql_stmt_tests/envintersects5.testcase \ - sql_stmt_tests/envintersects6.testcase \ - sql_stmt_tests/envintersects7.testcase \ - sql_stmt_tests/envintersects8.testcase \ - sql_stmt_tests/envintersects9.testcase \ - sql_stmt_tests/ewkb10.testcase \ - sql_stmt_tests/ewkb11.testcase \ - sql_stmt_tests/ewkb12.testcase \ - sql_stmt_tests/ewkb1.testcase \ - sql_stmt_tests/ewkb2.testcase \ - sql_stmt_tests/ewkb3.testcase \ - sql_stmt_tests/ewkb4.testcase \ - sql_stmt_tests/ewkb5.testcase \ - sql_stmt_tests/ewkb6.testcase \ - sql_stmt_tests/ewkb7.testcase \ - sql_stmt_tests/ewkb8.testcase \ - sql_stmt_tests/ewkb9.testcase \ - sql_stmt_mathsql_tests/exp00.testcase \ - sql_stmt_mathsql_tests/exp0.testcase \ - sql_stmt_mathsql_tests/exp10.testcase \ - sql_stmt_mathsql_tests/exp1.testcase \ - sql_stmt_tests/expand1.testcase \ - sql_stmt_tests/expand2.testcase \ - sql_stmt_tests/expand3.testcase \ - sql_stmt_tests/expand4.testcase \ - sql_stmt_tests/expand5.testcase \ - sql_stmt_tests/expand6.testcase \ - sql_stmt_tests/expand7.testcase \ - sql_stmt_mathsql_tests/expneg.testcase \ - sql_stmt_mathsql_tests/exptext.testcase \ - sql_stmt_tests/extent1.testcase \ - sql_stmt_tests/extractmultilinestring1.testcase \ - sql_stmt_tests/extractmultilinestring2.testcase \ - sql_stmt_tests/extractmultilinestring3.testcase \ - sql_stmt_tests/extractmultipoint1.testcase \ - sql_stmt_tests/extractmultipoint2.testcase \ - sql_stmt_tests/extractmultipoint3.testcase \ - sql_stmt_tests/extractmultipolygon1.testcase \ - sql_stmt_tests/extractmultipolygon2.testcase \ - sql_stmt_tests/extractmultipolygon3.testcase \ - sql_stmt_tests/fath_m.testcase \ - sql_stmt_tests/fdo_ogr1.testcase \ - sql_stmt_tests/fdo_ogr2.testcase \ - sql_stmt_tests/fdo-wkb.sqlite_RO \ - sql_stmt_mathsql_tests/floor32.testcase \ - sql_stmt_mathsql_tests/floorint.testcase \ - sql_stmt_mathsql_tests/floornull.testcase \ - sql_stmt_tests/fromewkt1.testcase \ - sql_stmt_tests/fromewkt2.testcase \ - sql_stmt_tests/fromewkt3.testcase \ - sql_stmt_tests/fromewkt4.testcase \ - sql_stmt_tests/fromewkt5.testcase \ - sql_stmt_tests/fromewkt6.testcase \ - sql_stmt_tests/fromewkt7.testcase \ - sql_stmt_tests/fromewkt8.testcase \ - sql_stmt_tests/fromewkt9.testcase \ - sql_stmt_tests/fromewkt10.testcase \ - sql_stmt_tests/fromewkt11.testcase \ - sql_stmt_tests/fromewkt12.testcase \ - sql_stmt_tests/fromewkt13.testcase \ - sql_stmt_tests/fromewkt14.testcase \ - sql_stmt_tests/fromewkt15.testcase \ - sql_stmt_tests/fromewkt16.testcase \ - sql_stmt_tests/fromewkt17.testcase \ - sql_stmt_tests/fromewkt18.testcase \ - sql_stmt_tests/fromewkt19.testcase \ - sql_stmt_tests/fromewkt20.testcase \ - sql_stmt_tests/fromewkt22.testcase \ - sql_stmt_tests/fromewkt23.testcase \ - sql_stmt_tests/fromewkt24.testcase \ - sql_stmt_tests/fromewkt25.testcase \ - sql_stmt_tests/fromewkt26.testcase \ - sql_stmt_tests/fromewkt27.testcase \ - sql_stmt_tests/fromewkt28.testcase \ - sql_stmt_tests/fromewkt29.testcase \ - sql_stmt_tests/fromewkt30.testcase \ - sql_stmt_tests/fromewkt31.testcase \ - sql_stmt_tests/fromewkt32.testcase \ - sql_stmt_tests/fromewkt33.testcase \ - sql_stmt_tests/fromewkt34.testcase \ - sql_stmt_tests/fromewkt35.testcase \ - sql_stmt_tests/fromewkt36.testcase \ - sql_stmt_tests/fromewkt37.testcase \ - sql_stmt_tests/fromewkt38.testcase \ - sql_stmt_tests/fromewkt39.testcase \ - sql_stmt_tests/fromgeojson10.testcase \ - sql_stmt_tests/fromgeojson11.testcase \ - sql_stmt_tests/fromgeojson12.testcase \ - sql_stmt_tests/fromgeojson13.testcase \ - sql_stmt_tests/fromgeojson14.testcase \ - sql_stmt_tests/fromgeojson15.testcase \ - sql_stmt_tests/fromgeojson16.testcase \ - sql_stmt_tests/fromgeojson17.testcase \ - sql_stmt_tests/fromgeojson18.testcase \ - sql_stmt_tests/fromgeojson19.testcase \ - sql_stmt_tests/fromgeojson1.testcase \ - sql_stmt_tests/fromgeojson20.testcase \ - sql_stmt_tests/fromgeojson21.testcase \ - sql_stmt_tests/fromgeojson22.testcase \ - sql_stmt_tests/fromgeojson23.testcase \ - sql_stmt_tests/fromgeojson24.testcase \ - sql_stmt_tests/fromgeojson25.testcase \ - sql_stmt_tests/fromgeojson26.testcase \ - sql_stmt_tests/fromgeojson27.testcase \ - sql_stmt_tests/fromgeojson28.testcase \ - sql_stmt_tests/fromgeojson29.testcase \ - sql_stmt_tests/fromgeojson2.testcase \ - sql_stmt_tests/fromgeojson30.testcase \ - sql_stmt_tests/fromgeojson31.testcase \ - sql_stmt_tests/fromgeojson32.testcase \ - sql_stmt_tests/fromgeojson3.testcase \ - sql_stmt_tests/fromgeojson4.testcase \ - sql_stmt_tests/fromgeojson5.testcase \ - sql_stmt_tests/fromgeojson6.testcase \ - sql_stmt_tests/fromgeojson7.testcase \ - sql_stmt_tests/fromgeojson8.testcase \ - sql_stmt_tests/fromgeojson9.testcase \ - sql_stmt_tests/fromgml10.testcase \ - sql_stmt_tests/fromgml11.testcase \ - sql_stmt_tests/fromgml12.testcase \ - sql_stmt_tests/fromgml13.testcase \ - sql_stmt_tests/fromgml14.testcase \ - sql_stmt_tests/fromgml15.testcase \ - sql_stmt_tests/fromgml16.testcase \ - sql_stmt_tests/fromgml17.testcase \ - sql_stmt_tests/fromgml18.testcase \ - sql_stmt_tests/fromgml19.testcase \ - sql_stmt_tests/fromgml1.testcase \ - sql_stmt_tests/fromgml20.testcase \ - sql_stmt_tests/fromgml21.testcase \ - sql_stmt_tests/fromgml22.testcase \ - sql_stmt_tests/fromgml23.testcase \ - sql_stmt_tests/fromgml24.testcase \ - sql_stmt_tests/fromgml25.testcase \ - sql_stmt_tests/fromgml26.testcase \ - sql_stmt_tests/fromgml27.testcase \ - sql_stmt_tests/fromgml28.testcase \ - sql_stmt_tests/fromgml29.testcase \ - sql_stmt_tests/fromgml2.testcase \ - sql_stmt_tests/fromgml30.testcase \ - sql_stmt_tests/fromgml31.testcase \ - sql_stmt_tests/fromgml32.testcase \ - sql_stmt_tests/fromgml33.testcase \ - sql_stmt_tests/fromgml34.testcase \ - sql_stmt_tests/fromgml35.testcase \ - sql_stmt_tests/fromgml36.testcase \ - sql_stmt_tests/fromgml37.testcase \ - sql_stmt_tests/fromgml38.testcase \ - sql_stmt_tests/fromgml39.testcase \ - sql_stmt_tests/fromgml3.testcase \ - sql_stmt_tests/fromgml40.testcase \ - sql_stmt_tests/fromgml41.testcase \ - sql_stmt_proj_tests/fromgml42.testcase \ - sql_stmt_tests/fromgml43.testcase \ - sql_stmt_tests/fromgml4.testcase \ - sql_stmt_tests/fromgml5.testcase \ - sql_stmt_tests/fromgml6.testcase \ - sql_stmt_tests/fromgml7.testcase \ - sql_stmt_tests/fromgml8.testcase \ - sql_stmt_tests/fromgml9.testcase \ - sql_stmt_tests/fromWkb10.testcase \ - sql_stmt_tests/fromWkb11.testcase \ - sql_stmt_tests/fromWkb12.testcase \ - sql_stmt_tests/fromWkb13.testcase \ - sql_stmt_tests/fromWkb14.testcase \ - sql_stmt_tests/fromWkb15.testcase \ - sql_stmt_tests/fromWkb16.testcase \ - sql_stmt_tests/fromWkb17.testcase \ - sql_stmt_tests/fromWkb18.testcase \ - sql_stmt_tests/fromWkb19.testcase \ - sql_stmt_tests/fromWkb1.testcase \ - sql_stmt_tests/fromWkb20.testcase \ - sql_stmt_tests/fromWkb21.testcase \ - sql_stmt_tests/fromWkb22.testcase \ - sql_stmt_tests/fromWkb23.testcase \ - sql_stmt_tests/fromWkb2.testcase \ - sql_stmt_tests/fromWkb3.testcase \ - sql_stmt_tests/fromWkb4.testcase \ - sql_stmt_tests/fromWkb5.testcase \ - sql_stmt_tests/fromWkb6.testcase \ - sql_stmt_tests/fromWkb7.testcase \ - sql_stmt_tests/fromWkb8.testcase \ - sql_stmt_tests/fromWkb9.testcase \ - sql_stmt_tests/ft_m.testcase \ - sql_stmt_tests/garsmbr10.testcase \ - sql_stmt_tests/garsmbr11.testcase \ - sql_stmt_tests/garsmbr12.testcase \ - sql_stmt_tests/garsmbr13.testcase \ - sql_stmt_tests/garsmbr14.testcase \ - sql_stmt_tests/garsmbr15.testcase \ - sql_stmt_tests/garsmbr16.testcase \ - sql_stmt_tests/garsmbr17.testcase \ - sql_stmt_tests/garsmbr18.testcase \ - sql_stmt_tests/garsmbr1.testcase \ - sql_stmt_tests/garsmbr20.testcase \ - sql_stmt_tests/garsmbr21.testcase \ - sql_stmt_tests/garsmbr22.testcase \ - sql_stmt_tests/garsmbr23.testcase \ - sql_stmt_tests/garsmbr24.testcase \ - sql_stmt_tests/garsmbr25.testcase \ - sql_stmt_tests/garsmbr26.testcase \ - sql_stmt_tests/garsmbr27.testcase \ - sql_stmt_tests/garsmbr28.testcase \ - sql_stmt_tests/garsmbr29.testcase \ - sql_stmt_tests/garsmbr2.testcase \ - sql_stmt_tests/garsmbr30.testcase \ - sql_stmt_tests/garsmbr31.testcase \ - sql_stmt_tests/garsmbr32.testcase \ - sql_stmt_tests/garsmbr33.testcase \ - sql_stmt_tests/garsmbr34.testcase \ - sql_stmt_tests/garsmbr35.testcase \ - sql_stmt_tests/garsmbr36.testcase \ - sql_stmt_tests/garsmbr3.testcase \ - sql_stmt_tests/garsmbr4.testcase \ - sql_stmt_tests/garsmbr5.testcase \ - sql_stmt_tests/garsmbr6.testcase \ - sql_stmt_tests/garsmbr7.testcase \ - sql_stmt_tests/garsmbr8.testcase \ - sql_stmt_tests/garsmbr9.testcase \ - sql_stmt_tests/geodesic-len1.testcase \ - sql_stmt_tests/geodesic-len2.testcase \ - sql_stmt_tests/geodesic-len3.testcase \ - sql_stmt_tests/geodesic-len4.testcase \ - sql_stmt_tests/geodesic-len5.testcase \ - sql_stmt_tests/geodesic-len6.testcase \ - sql_stmt_tests/geodesic-len7.testcase \ - sql_stmt_tests/geodesic-len8.testcase \ - sql_stmt_tests/geojson1.testcase \ - sql_stmt_tests/geojson2.testcase \ - sql_stmt_tests/geojson3.testcase \ - sql_stmt_tests/geojson4.testcase \ - sql_stmt_tests/geojson5.testcase \ - sql_stmt_tests/geojson6.testcase \ - sql_stmt_tests/geomcollfromtext1.testcase \ - sql_stmt_tests/geomcollfromtext2.testcase \ - sql_stmt_tests/geomconstraints10.testcase \ - sql_stmt_tests/geomconstraints11.testcase \ - sql_stmt_tests/geomconstraints12.testcase \ - sql_stmt_tests/geomconstraints13.testcase \ - sql_stmt_tests/geomconstraints14.testcase \ - sql_stmt_tests/geomconstraints15.testcase \ - sql_stmt_tests/geomconstraints16.testcase \ - sql_stmt_tests/geomconstraints17.testcase \ - sql_stmt_tests/geomconstraints18.testcase \ - sql_stmt_tests/geomconstraints19.testcase \ - sql_stmt_tests/geomconstraints1.testcase \ - sql_stmt_tests/geomconstraints20.testcase \ - sql_stmt_tests/geomconstraints21.testcase \ - sql_stmt_tests/geomconstraints22.testcase \ - sql_stmt_tests/geomconstraints23.testcase \ - sql_stmt_tests/geomconstraints24.testcase \ - sql_stmt_tests/geomconstraints25.testcase \ - sql_stmt_tests/geomconstraints26.testcase \ - sql_stmt_tests/geomconstraints27.testcase \ - sql_stmt_tests/geomconstraints28.testcase \ - sql_stmt_tests/geomconstraints2.testcase \ - sql_stmt_tests/geomconstraints3.testcase \ - sql_stmt_tests/geomconstraints4.testcase \ - sql_stmt_tests/geomconstraints5.testcase \ - sql_stmt_tests/geomconstraints6.testcase \ - sql_stmt_tests/geomconstraints7.testcase \ - sql_stmt_tests/geomconstraints8.testcase \ - sql_stmt_tests/geomconstraints9.testcase \ - sql_stmt_tests/geometryn10.testcase \ - sql_stmt_tests/geometryn11.testcase \ - sql_stmt_tests/geometryn12.testcase \ - sql_stmt_tests/geometryn13.testcase \ - sql_stmt_tests/geometryn14.testcase \ - sql_stmt_tests/geometryn15.testcase \ - sql_stmt_tests/geometryn16.testcase \ - sql_stmt_tests/geometryn17.testcase \ - sql_stmt_tests/geometryn18.testcase \ - sql_stmt_tests/geometryn19.testcase \ - sql_stmt_tests/geometryn1.testcase \ - sql_stmt_tests/geometryn20.testcase \ - sql_stmt_tests/geometryn2.testcase \ - sql_stmt_tests/geometryn3.testcase \ - sql_stmt_tests/geometryn4.testcase \ - sql_stmt_tests/geometryn5.testcase \ - sql_stmt_tests/geometryn6.testcase \ - sql_stmt_tests/geometryn7.testcase \ - sql_stmt_tests/geometryn8.testcase \ - sql_stmt_tests/geometryn9.testcase \ - sql_stmt_tests/geometryn.testcase \ - sql_stmt_tests/geomfromewkb1.testcase \ - sql_stmt_tests/geomfromewkb2.testcase \ - sql_stmt_tests/geomfromkml10.testcase \ - sql_stmt_tests/geomfromkml11.testcase \ - sql_stmt_tests/geomfromkml12.testcase \ - sql_stmt_tests/geomfromkml13.testcase \ - sql_stmt_tests/geomfromkml14.testcase \ - sql_stmt_tests/geomfromkml15.testcase \ - sql_stmt_tests/geomfromkml16.testcase \ - sql_stmt_tests/geomfromkml17.testcase \ - sql_stmt_tests/geomfromkml18.testcase \ - sql_stmt_tests/geomfromkml19.testcase \ - sql_stmt_tests/geomfromkml1.testcase \ - sql_stmt_tests/geomfromkml20.testcase \ - sql_stmt_tests/geomfromkml21.testcase \ - sql_stmt_tests/geomfromkml22.testcase \ - sql_stmt_tests/geomfromkml23.testcase \ - sql_stmt_tests/geomfromkml2.testcase \ - sql_stmt_tests/geomfromkml3.testcase \ - sql_stmt_tests/geomfromkml4.testcase \ - sql_stmt_tests/geomfromkml5.testcase \ - sql_stmt_tests/geomfromkml6.testcase \ - sql_stmt_tests/geomfromkml7.testcase \ - sql_stmt_tests/geomfromkml8.testcase \ - sql_stmt_tests/geomfromkml9.testcase \ - sql_stmt_tests/geomfromtext1.testcase \ - sql_stmt_tests/geomfromtext2.testcase \ - sql_stmt_tests/geomfromtext3.testcase \ - sql_stmt_tests/geomfromtext4.testcase \ - sql_stmt_tests/geomfromtext5.testcase \ - sql_stmt_tests/geomfromtext6.testcase \ - sql_stmt_tests/geomfromtext7.testcase \ - sql_stmt_tests/geomfromtext8.testcase \ - sql_stmt_tests/geomfromtext9.testcase \ - sql_stmt_tests/geomfromtext10.testcase \ - sql_stmt_tests/geomfromtext11.testcase \ - sql_stmt_tests/geomfromtext12.testcase \ - sql_stmt_tests/geomfromtext13.testcase \ - sql_stmt_tests/geomfromtext14.testcase \ - sql_stmt_tests/geomfromtext15.testcase \ - sql_stmt_tests/geomfromtext16.testcase \ - sql_stmt_tests/geomfromtext17.testcase \ - sql_stmt_tests/geomfromtext18.testcase \ - sql_stmt_tests/geomfromtext19.testcase \ - sql_stmt_tests/geomfromtext20.testcase \ - sql_stmt_tests/geomfromtext21.testcase \ - sql_stmt_tests/geomfromtext22.testcase \ - sql_stmt_tests/geomfromtext23.testcase \ - sql_stmt_tests/geomfromtext24.testcase \ - sql_stmt_tests/geomfromtext25.testcase \ - sql_stmt_tests/geomfromtext26.testcase \ - sql_stmt_tests/geomfromtext27.testcase \ - sql_stmt_tests/geomfromtext28.testcase \ - sql_stmt_tests/geomfromtext29.testcase \ - sql_stmt_tests/geomfromtext30.testcase \ - sql_stmt_tests/geomfromtext31.testcase \ - sql_stmt_tests/geomfromtext32.testcase \ - sql_stmt_tests/geomfromtext33.testcase \ - sql_stmt_tests/geomfromtext34.testcase \ - sql_stmt_tests/geomfromtext35.testcase \ - sql_stmt_tests/geomfromtext36.testcase \ - sql_stmt_tests/geomfromtext37.testcase \ - sql_stmt_tests/geomfromtext38.testcase \ - sql_stmt_tests/geomfromtext39.testcase \ - sql_stmt_tests/geomfromtext40.testcase \ - sql_stmt_tests/geomfromtext41.testcase \ - sql_stmt_tests/geomfromtext42.testcase \ - sql_stmt_tests/geomfromtext43.testcase \ - sql_stmt_tests/geomfromtext44.testcase \ - sql_stmt_tests/geomfromtext45.testcase \ - sql_stmt_tests/geomtype10.testcase \ - sql_stmt_tests/geomtype11.testcase \ - sql_stmt_tests/geomtype12.testcase \ - sql_stmt_tests/geomtype13.testcase \ - sql_stmt_tests/geomtype14.testcase \ - sql_stmt_tests/geomtype15.testcase \ - sql_stmt_tests/geomtype16.testcase \ - sql_stmt_tests/geomtype17.testcase \ - sql_stmt_tests/geomtype18.testcase \ - sql_stmt_tests/geomtype19.testcase \ - sql_stmt_tests/geomtype1.testcase \ - sql_stmt_tests/geomtype20.testcase \ - sql_stmt_tests/geomtype21.testcase \ - sql_stmt_tests/geomtype22.testcase \ - sql_stmt_tests/geomtype23.testcase \ - sql_stmt_tests/geomtype24.testcase \ - sql_stmt_tests/geomtype25.testcase \ - sql_stmt_tests/geomtype26.testcase \ - sql_stmt_tests/geomtype27.testcase \ - sql_stmt_tests/geomtype28.testcase \ - sql_stmt_tests/geomtype29.testcase \ - sql_stmt_tests/geomtype2.testcase \ - sql_stmt_tests/geomtype30.testcase \ - sql_stmt_tests/geomtype31.testcase \ - sql_stmt_tests/geomtype32.testcase \ - sql_stmt_tests/geomtype33.testcase \ - sql_stmt_tests/geomtype34.testcase \ - sql_stmt_tests/geomtype35.testcase \ - sql_stmt_tests/geomtype36.testcase \ - sql_stmt_tests/geomtype37.testcase \ - sql_stmt_tests/geomtype38.testcase \ - sql_stmt_tests/geomtype39.testcase \ - sql_stmt_tests/geomtype3.testcase \ - sql_stmt_tests/geomtype40.testcase \ - sql_stmt_tests/geomtype41.testcase \ - sql_stmt_tests/geomtype42.testcase \ - sql_stmt_tests/geomtype43.testcase \ - sql_stmt_tests/geomtype44.testcase \ - sql_stmt_tests/geomtype45.testcase \ - sql_stmt_tests/geomtype46.testcase \ - sql_stmt_tests/geomtype47.testcase \ - sql_stmt_tests/geomtype48.testcase \ - sql_stmt_tests/geomtype49.testcase \ - sql_stmt_tests/geomtype4.testcase \ - sql_stmt_tests/geomtype50.testcase \ - sql_stmt_tests/geomtype51.testcase \ - sql_stmt_tests/geomtype52.testcase \ - sql_stmt_tests/geomtype53.testcase \ - sql_stmt_tests/geomtype54.testcase \ - sql_stmt_tests/geomtype55.testcase \ - sql_stmt_tests/geomtype56.testcase \ - sql_stmt_tests/geomtype57.testcase \ - sql_stmt_tests/geomtype58.testcase \ - sql_stmt_tests/geomtype59.testcase \ - sql_stmt_tests/geomtype5.testcase \ - sql_stmt_tests/geomtype60.testcase \ - sql_stmt_tests/geomtype61.testcase \ - sql_stmt_tests/geomtype62.testcase \ - sql_stmt_tests/geomtype63.testcase \ - sql_stmt_tests/geomtype64.testcase \ - sql_stmt_tests/geomtype65.testcase \ - sql_stmt_tests/geomtype66.testcase \ - sql_stmt_tests/geomtype67.testcase \ - sql_stmt_tests/geomtype68.testcase \ - sql_stmt_tests/geomtype69.testcase \ - sql_stmt_tests/geomtype6.testcase \ - sql_stmt_tests/geomtype7.testcase \ - sql_stmt_tests/geomtype8.testcase \ - sql_stmt_tests/geomtype9.testcase \ - sql_stmt_tests/gml10.testcase \ - sql_stmt_tests/gml11.testcase \ - sql_stmt_tests/gml12.testcase \ - sql_stmt_tests/gml13.testcase \ - sql_stmt_tests/gml14.testcase \ - sql_stmt_tests/gml15.testcase \ - sql_stmt_tests/gml16.testcase \ - sql_stmt_tests/gml1.testcase \ - sql_stmt_tests/gml2.testcase \ - sql_stmt_tests/gml3.testcase \ - sql_stmt_tests/gml4.testcase \ - sql_stmt_tests/gml5.testcase \ - sql_stmt_tests/gml6.testcase \ - sql_stmt_tests/gml7.testcase \ - sql_stmt_tests/gml8.testcase \ - sql_stmt_tests/gml9.testcase \ - sql_stmt_tests/greatcircle-badblob.testcase \ - sql_stmt_tests/greatcircle-poly2.testcase \ - sql_stmt_tests/greatcircle-poly3.testcase \ - sql_stmt_tests/greatcircle-poly4.testcase \ - sql_stmt_tests/greatcircle-poly5.testcase \ - sql_stmt_tests/greatcircle-poly6.testcase \ - sql_stmt_tests/greatcircle-poly7.testcase \ - sql_stmt_tests/greatcircle-poly.testcase \ - sql_stmt_tests/greatcircle.testcase \ - sql_stmt_tests/greatcircle-text.testcase \ - sql_stmt_geosadvanced_tests/hausdorffdistance1.testcase \ - sql_stmt_geosadvanced_tests/hausdorffdistance2.testcase \ - sql_stmt_geosadvanced_tests/hausdorffdistance3.testcase \ - sql_stmt_geosadvanced_tests/hausdorffdistance4.testcase \ - sql_stmt_geosadvanced_tests/hausdorffdistance5.testcase \ - sql_stmt_geosadvanced_tests/hausdorffdistance6.testcase \ - sql_stmt_geosadvanced_tests/hausdorffdistance7.testcase \ - sql_stmt_tests/ind_ch_m.testcase \ - sql_stmt_tests/ind_ft_m.testcase \ - sql_stmt_tests/ind_yd_m.testcase \ - sql_stmt_tests/in_m.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint10.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint11.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint12.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint13.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint14.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint1.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint2.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint3.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint4.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint5.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint6.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint7.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint8.testcase \ - sql_stmt_geosadvanced_tests/interpolatepoint9.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint10.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint11.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint12.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint13.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint14.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint1.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint2.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint3.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint4.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint5.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint6.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint7.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint8.testcase \ - sql_stmt_geosadvanced_tests/interpolateequidistantpoint9.testcase \ - sql_stmt_geos_tests/intersection10.testcase \ - sql_stmt_geos_tests/intersection11.testcase \ - sql_stmt_geos_tests/intersection12.testcase \ - sql_stmt_geos_tests/intersection1.testcase \ - sql_stmt_geos_tests/intersection2.testcase \ - sql_stmt_geos_tests/intersection3.testcase \ - sql_stmt_geos_tests/intersection4.testcase \ - sql_stmt_geos_tests/intersection5.testcase \ - sql_stmt_geos_tests/intersection6.testcase \ - sql_stmt_geos_tests/intersection7.testcase \ - sql_stmt_geos_tests/intersection8.testcase \ - sql_stmt_geos_tests/intersection9.testcase \ - sql_stmt_tests/is3d1.testcase \ - sql_stmt_tests/is3d2.testcase \ - sql_stmt_tests/is3d3.testcase \ - sql_stmt_tests/is3d4.testcase \ - sql_stmt_tests/is3d5.testcase \ - sql_stmt_tests/is3d6.testcase \ - sql_stmt_geos_tests/isclosed10.testcase \ - sql_stmt_geos_tests/isclosed1.testcase \ - sql_stmt_geos_tests/isclosed2.testcase \ - sql_stmt_geos_tests/isclosed3.testcase \ - sql_stmt_geos_tests/isclosed4.testcase \ - sql_stmt_geos_tests/isclosed5.testcase \ - sql_stmt_geos_tests/isclosed6.testcase \ - sql_stmt_geos_tests/isclosed7.testcase \ - sql_stmt_geos_tests/isclosed8.testcase \ - sql_stmt_geos_tests/isclosed9.testcase \ - sql_stmt_tests/isempty2.testcase \ - sql_stmt_tests/isempty3.testcase \ - sql_stmt_tests/isempty4.testcase \ - sql_stmt_tests/isempty.testcase \ - sql_stmt_tests/ismeasured1.testcase \ - sql_stmt_tests/ismeasured2.testcase \ - sql_stmt_tests/ismeasured3.testcase \ - sql_stmt_tests/ismeasured4.testcase \ - sql_stmt_tests/ismeasured5.testcase \ - sql_stmt_tests/ismeasured6.testcase \ - sql_stmt_geos_tests/isring1.testcase \ - sql_stmt_geos_tests/isring2.testcase \ - sql_stmt_geos_tests/isring3.testcase \ - sql_stmt_geos_tests/isring4.testcase \ - sql_stmt_geos_tests/isring5.testcase \ - sql_stmt_geos_tests/isring6.testcase \ - sql_stmt_geos_tests/isring7.testcase \ - sql_stmt_geos_tests/isring8.testcase \ - sql_stmt_geos_tests/isring9.testcase \ - sql_stmt_geos_tests/issimple1.testcase \ - sql_stmt_geos_tests/issimple2.testcase \ - sql_stmt_geos_tests/issimple3.testcase \ - sql_stmt_geos_tests/issimple4.testcase \ - sql_stmt_geos_tests/issimple5.testcase \ - sql_stmt_geos_tests/issimple6.testcase \ - sql_stmt_geos_tests/isvalid10.testcase \ - sql_stmt_geos_tests/isvalid11.testcase \ - sql_stmt_geos_tests/isvalid12.testcase \ - sql_stmt_geos_tests/isvalid13.testcase \ - sql_stmt_geos_tests/isvalid14.testcase \ - sql_stmt_geos_tests/isvalid15.testcase \ - sql_stmt_geos_tests/isvalid16.testcase \ - sql_stmt_geos_tests/isvalid17.testcase \ - sql_stmt_geos_tests/isvalid18.testcase \ - sql_stmt_geos_tests/isvalid19.testcase \ - sql_stmt_geos_tests/isvalid1.testcase \ - sql_stmt_geos_tests/isvalid20.testcase \ - sql_stmt_geos_tests/isvalid2.testcase \ - sql_stmt_geos_tests/isvalid3.testcase \ - sql_stmt_geos_tests/isvalid4.testcase \ - sql_stmt_geos_tests/isvalid5.testcase \ - sql_stmt_geos_tests/isvalid6.testcase \ - sql_stmt_geos_tests/isvalid7.testcase \ - sql_stmt_geos_tests/isvalid8.testcase \ - sql_stmt_geos_tests/isvalid9.testcase \ - sql_stmt_tests/isXblob5.testcase \ - sql_stmt_tests/isXblob6.testcase \ - sql_stmt_tests/isXblob7.testcase \ - sql_stmt_tests/k3b-icon.png \ - sql_stmt_tests/km_m.testcase \ - sql_stmt_tests/ktorrent_grad1.jpg \ - sql_stmt_tests/ktorrent_sidebar.gif \ - sql_stmt_tests/La_folla_durante_il_Palio.jpg \ - sql_stmt_tests/lhr1.testcase \ - sql_stmt_tests/lhr2.testcase \ - sql_stmt_tests/lhr3.testcase \ - sql_stmt_tests/lhr4.testcase \ - sql_stmt_tests/lhr5.testcase \ - sql_stmt_tests/lhr6.testcase \ - sql_stmt_tests/linefromtext1.testcase \ - sql_stmt_tests/linefromtext2.testcase \ - sql_stmt_geosadvanced_tests/linemerge10.testcase \ - sql_stmt_geosadvanced_tests/linemerge1.testcase \ - sql_stmt_geosadvanced_tests/linemerge2.testcase \ - sql_stmt_geosadvanced_tests/linemerge3.testcase \ - sql_stmt_geosadvanced_tests/linemerge4.testcase \ - sql_stmt_geosadvanced_tests/linemerge5.testcase \ - sql_stmt_geosadvanced_tests/linemerge6.testcase \ - sql_stmt_geosadvanced_tests/linemerge7.testcase \ - sql_stmt_geosadvanced_tests/linemerge8.testcase \ - sql_stmt_geosadvanced_tests/linemerge9.testcase \ - sql_stmt_tests/linesfromrings1.testcase \ - sql_stmt_tests/linesfromrings2.testcase \ - sql_stmt_tests/linesfromrings3.testcase \ - sql_stmt_tests/linesfromrings4.testcase \ - sql_stmt_tests/linesfromrings5.testcase \ - sql_stmt_tests/linesfromrings6.testcase \ - sql_stmt_tests/linesfromrings7.testcase \ - sql_stmt_geosadvanced_tests/linesnodes10.testcase \ - sql_stmt_geosadvanced_tests/linesnodes11.testcase \ - sql_stmt_geosadvanced_tests/linesnodes12.testcase \ - sql_stmt_geosadvanced_tests/linesnodes13.testcase \ - sql_stmt_geosadvanced_tests/linesnodes14.testcase \ - sql_stmt_geosadvanced_tests/linesnodes15.testcase \ - sql_stmt_geosadvanced_tests/linesnodes16.testcase \ - sql_stmt_geosadvanced_tests/linesnodes17.testcase \ - sql_stmt_geosadvanced_tests/linesnodes18.testcase \ - sql_stmt_geosadvanced_tests/linesnodes19.testcase \ - sql_stmt_geosadvanced_tests/linesnodes1.testcase \ - sql_stmt_geosadvanced_tests/linesnodes2.testcase \ - sql_stmt_geosadvanced_tests/linesnodes3.testcase \ - sql_stmt_geosadvanced_tests/linesnodes4.testcase \ - sql_stmt_geosadvanced_tests/linesnodes5.testcase \ - sql_stmt_geosadvanced_tests/linesnodes6.testcase \ - sql_stmt_geosadvanced_tests/linesnodes7.testcase \ - sql_stmt_geosadvanced_tests/linesnodes8.testcase \ - sql_stmt_geosadvanced_tests/linesnodes9.testcase \ - sql_stmt_geosadvanced_tests/linesubstring10.testcase \ - sql_stmt_geosadvanced_tests/linesubstring11.testcase \ - sql_stmt_geosadvanced_tests/linesubstring12.testcase \ - sql_stmt_geosadvanced_tests/linesubstring13.testcase \ - sql_stmt_geosadvanced_tests/linesubstring14.testcase \ - sql_stmt_geosadvanced_tests/linesubstring15.testcase \ - sql_stmt_geosadvanced_tests/linesubstring16.testcase \ - sql_stmt_geosadvanced_tests/linesubstring17.testcase \ - sql_stmt_geosadvanced_tests/linesubstring18.testcase \ - sql_stmt_geosadvanced_tests/linesubstring19.testcase \ - sql_stmt_geosadvanced_tests/linesubstring1.testcase \ - sql_stmt_geosadvanced_tests/linesubstring20.testcase \ - sql_stmt_geosadvanced_tests/linesubstring21.testcase \ - sql_stmt_geosadvanced_tests/linesubstring22.testcase \ - sql_stmt_geosadvanced_tests/linesubstring23.testcase \ - sql_stmt_geosadvanced_tests/linesubstring24.testcase \ - sql_stmt_geosadvanced_tests/linesubstring25.testcase \ - sql_stmt_geosadvanced_tests/linesubstring26.testcase \ - sql_stmt_geosadvanced_tests/linesubstring2.testcase \ - sql_stmt_geosadvanced_tests/linesubstring3.testcase \ - sql_stmt_geosadvanced_tests/linesubstring4.testcase \ - sql_stmt_geosadvanced_tests/linesubstring5.testcase \ - sql_stmt_geosadvanced_tests/linesubstring6.testcase \ - sql_stmt_geosadvanced_tests/linesubstring7.testcase \ - sql_stmt_geosadvanced_tests/linesubstring8.testcase \ - sql_stmt_geosadvanced_tests/linesubstring9.testcase \ - sql_stmt_tests/link_m.testcase \ - sql_stmt_tests/locatemeasure10.testcase \ - sql_stmt_tests/locatemeasure11.testcase \ - sql_stmt_tests/locatemeasure12.testcase \ - sql_stmt_tests/locatemeasure13.testcase \ - sql_stmt_tests/locatemeasure14.testcase \ - sql_stmt_tests/locatemeasure15.testcase \ - sql_stmt_tests/locatemeasure16.testcase \ - sql_stmt_tests/locatemeasure17.testcase \ - sql_stmt_tests/locatemeasure1.testcase \ - sql_stmt_tests/locatemeasure2.testcase \ - sql_stmt_tests/locatemeasure3.testcase \ - sql_stmt_tests/locatemeasure4.testcase \ - sql_stmt_tests/locatemeasure5.testcase \ - sql_stmt_tests/locatemeasure6.testcase \ - sql_stmt_tests/locatemeasure7.testcase \ - sql_stmt_tests/locatemeasure8.testcase \ - sql_stmt_tests/locatemeasure9.testcase \ - sql_stmt_geosadvanced_tests/locatepoint10.testcase \ - sql_stmt_geosadvanced_tests/locatepoint11.testcase \ - sql_stmt_geosadvanced_tests/locatepoint12.testcase \ - sql_stmt_geosadvanced_tests/locatepoint1.testcase \ - sql_stmt_geosadvanced_tests/locatepoint2.testcase \ - sql_stmt_geosadvanced_tests/locatepoint3.testcase \ - sql_stmt_geosadvanced_tests/locatepoint4.testcase \ - sql_stmt_geosadvanced_tests/locatepoint5.testcase \ - sql_stmt_geosadvanced_tests/locatepoint6.testcase \ - sql_stmt_geosadvanced_tests/locatepoint7.testcase \ - sql_stmt_geosadvanced_tests/locatepoint8.testcase \ - sql_stmt_geosadvanced_tests/locatepoint9.testcase \ - sql_stmt_mathsql_tests/log10-0.0.testcase \ - sql_stmt_mathsql_tests/log10-100.0.testcase \ - sql_stmt_mathsql_tests/log10-100.testcase \ - sql_stmt_mathsql_tests/log10-text.testcase \ - sql_stmt_mathsql_tests/log2-0.0.testcase \ - sql_stmt_mathsql_tests/log2-0.testcase \ - sql_stmt_mathsql_tests/log2-4.0.testcase \ - sql_stmt_mathsql_tests/log2-4.testcase \ - sql_stmt_mathsql_tests/log2-text.testcase \ - sql_stmt_mathsql_tests/logn00.testcase \ - sql_stmt_mathsql_tests/logn0.testcase \ - sql_stmt_mathsql_tests/logn10.testcase \ - sql_stmt_mathsql_tests/logn1.testcase \ - sql_stmt_mathsql_tests/logn2-01.testcase \ - sql_stmt_mathsql_tests/logn2-02.testcase \ - sql_stmt_mathsql_tests/logn2-2.2.testcase \ - sql_stmt_mathsql_tests/logn2-4.2int.testcase \ - sql_stmt_mathsql_tests/logn2-4.2.testcase \ - sql_stmt_mathsql_tests/logn2-text2.testcase \ - sql_stmt_mathsql_tests/logn2-text3.testcase \ - sql_stmt_mathsql_tests/logn2-text4.testcase \ - sql_stmt_mathsql_tests/logn2-text.testcase \ - sql_stmt_mathsql_tests/logn-text.testcase \ - sql_stmt_tests/makeline10.testcase \ - sql_stmt_tests/makeline11.testcase \ - sql_stmt_tests/makeline12.testcase \ - sql_stmt_tests/makeline13.testcase \ - sql_stmt_tests/makeline14.testcase \ - sql_stmt_tests/makeline15.testcase \ - sql_stmt_tests/makeline16.testcase \ - sql_stmt_tests/makeline17.testcase \ - sql_stmt_tests/makeline18.testcase \ - sql_stmt_tests/makeline19.testcase \ - sql_stmt_tests/makeline20.testcase \ - sql_stmt_tests/makeline21.testcase \ - sql_stmt_tests/makeline22.testcase \ - sql_stmt_tests/makeline23.testcase \ - sql_stmt_tests/makeline24.testcase \ - sql_stmt_tests/makeline2.testcase \ - sql_stmt_tests/makeline3.testcase \ - sql_stmt_tests/makeline4.testcase \ - sql_stmt_tests/makeline5.testcase \ - sql_stmt_tests/makeline6.testcase \ - sql_stmt_tests/makeline7.testcase \ - sql_stmt_tests/makeline8.testcase \ - sql_stmt_tests/makeline9.testcase \ - sql_stmt_tests/makeline.testcase \ - sql_stmt_tests/makepoint10.testcase \ - sql_stmt_tests/makepoint11.testcase \ - sql_stmt_tests/makepoint12.testcase \ - sql_stmt_tests/makepoint13.testcase \ - sql_stmt_tests/makepoint14.testcase \ - sql_stmt_tests/makepoint15.testcase \ - sql_stmt_tests/makepoint1.testcase \ - sql_stmt_tests/makepoint2.testcase \ - sql_stmt_tests/makepoint3.testcase \ - sql_stmt_tests/makepoint4.testcase \ - sql_stmt_tests/makepoint5.testcase \ - sql_stmt_tests/makepoint6.testcase \ - sql_stmt_tests/makepoint7.testcase \ - sql_stmt_tests/makepoint8.testcase \ - sql_stmt_tests/makepoint9.testcase \ - sql_stmt_tests/makepointm-null1.testcase \ - sql_stmt_tests/makepointm-null2.testcase \ - sql_stmt_tests/makepointm-null3.testcase \ - sql_stmt_tests/makepointm-null4.testcase \ - sql_stmt_tests/makepointm-null5.testcase \ - sql_stmt_tests/makepointm-null6.testcase \ - sql_stmt_tests/makepointm-null7.testcase \ - sql_stmt_tests/makepointm-null8.testcase \ - sql_stmt_tests/makepoint-null1.testcase \ - sql_stmt_tests/makepoint-null2.testcase \ - sql_stmt_tests/makepoint-null3.testcase \ - sql_stmt_tests/makepoint-null4.testcase \ - sql_stmt_tests/makepoint-null5.testcase \ - sql_stmt_tests/makepoint-null6.testcase \ - sql_stmt_tests/makepoint-null7.testcase \ - sql_stmt_tests/makepointzm-null10.testcase \ - sql_stmt_tests/makepointzm-null1.testcase \ - sql_stmt_tests/makepointzm-null2.testcase \ - sql_stmt_tests/makepointzm-null3.testcase \ - sql_stmt_tests/makepointzm-null4.testcase \ - sql_stmt_tests/makepointzm-null5.testcase \ - sql_stmt_tests/makepointzm-null6.testcase \ - sql_stmt_tests/makepointzm-null7.testcase \ - sql_stmt_tests/makepointzm-null8.testcase \ - sql_stmt_tests/makepointzm-null9.testcase \ - sql_stmt_tests/makepointz-null1.testcase \ - sql_stmt_tests/makepointz-null2.testcase \ - sql_stmt_tests/makepointz-null3.testcase \ - sql_stmt_tests/makepointz-null4.testcase \ - sql_stmt_tests/makepointz-null5.testcase \ - sql_stmt_tests/makepointz-null6.testcase \ - sql_stmt_tests/makepointz-null7.testcase \ - sql_stmt_tests/makepointz-null8.testcase \ - sql_stmt_tests/maxm1.testcase \ - sql_stmt_tests/maxm2.testcase \ - sql_stmt_tests/maxm3.testcase \ - sql_stmt_tests/maxm4.testcase \ - sql_stmt_tests/maxm5.testcase \ - sql_stmt_tests/maxm6.testcase \ - sql_stmt_tests/maxm7.testcase \ - sql_stmt_tests/maxz1.testcase \ - sql_stmt_tests/maxz2.testcase \ - sql_stmt_tests/maxz3.testcase \ - sql_stmt_tests/maxz4.testcase \ - sql_stmt_tests/maxz5.testcase \ - sql_stmt_tests/maxz6.testcase \ - sql_stmt_tests/maxz7.testcase \ - sql_stmt_tests/mbr10.testcase \ - sql_stmt_tests/mbr11.testcase \ - sql_stmt_tests/mbr12.testcase \ - sql_stmt_tests/mbr13.testcase \ - sql_stmt_tests/mbr14.testcase \ - sql_stmt_tests/mbr15.testcase \ - sql_stmt_tests/mbr16.testcase \ - sql_stmt_tests/mbr17.testcase \ - sql_stmt_tests/mbr18.testcase \ - sql_stmt_tests/mbr19.testcase \ - sql_stmt_tests/mbr1.testcase \ - sql_stmt_tests/mbr20.testcase \ - sql_stmt_tests/mbr21.testcase \ - sql_stmt_tests/mbr22.testcase \ - sql_stmt_tests/mbr23.testcase \ - sql_stmt_tests/mbr24.testcase \ - sql_stmt_tests/mbr25.testcase \ - sql_stmt_tests/mbr26.testcase \ - sql_stmt_tests/mbr27.testcase \ - sql_stmt_tests/mbr28.testcase \ - sql_stmt_tests/mbr29.testcase \ - sql_stmt_tests/mbr2.testcase \ - sql_stmt_tests/mbr30.testcase \ - sql_stmt_tests/mbr31.testcase \ - sql_stmt_tests/mbr32.testcase \ - sql_stmt_tests/mbr3.testcase \ - sql_stmt_tests/mbr4.testcase \ - sql_stmt_tests/mbr5.testcase \ - sql_stmt_tests/mbr6.testcase \ - sql_stmt_tests/mbr7.testcase \ - sql_stmt_tests/mbr8.testcase \ - sql_stmt_tests/mbr9.testcase \ - sql_stmt_tests/mbrminmax1.testcase \ - sql_stmt_tests/mbrminmax2.testcase \ - sql_stmt_tests/mbrminmax3.testcase \ - sql_stmt_tests/mbrminmax4.testcase \ - sql_stmt_tests/mbrminmax5.testcase \ - sql_stmt_tests/mbrminmax6.testcase \ - sql_stmt_tests/mbrminmax7.testcase \ - sql_stmt_tests/mbrminmax8.testcase \ - sql_stmt_tests/m_ch.testcase \ - sql_stmt_tests/m_cm.testcase \ - sql_stmt_tests/m_dm.testcase \ - sql_stmt_tests/m_fath.testcase \ - sql_stmt_tests/m_ft.testcase \ - sql_stmt_tests/m_ft-text.testcase \ - sql_stmt_tests/mi_m.testcase \ - sql_stmt_tests/m_ind_ch.testcase \ - sql_stmt_tests/m_ind_ft.testcase \ - sql_stmt_tests/m_ind_yd.testcase \ - sql_stmt_tests/minm1.testcase \ - sql_stmt_tests/minm2.testcase \ - sql_stmt_tests/minm3.testcase \ - sql_stmt_tests/minm4.testcase \ - sql_stmt_tests/minm5.testcase \ - sql_stmt_tests/minm6.testcase \ - sql_stmt_tests/m_in.testcase \ - sql_stmt_tests/m_in_us.testcase \ - sql_stmt_tests/minz1.testcase \ - sql_stmt_tests/minz2.testcase \ - sql_stmt_tests/minz3.testcase \ - sql_stmt_tests/minz4.testcase \ - sql_stmt_tests/minz5.testcase \ - sql_stmt_tests/minz6.testcase \ - sql_stmt_tests/m_km.testcase \ - sql_stmt_tests/mlinefromtext1.testcase \ - sql_stmt_tests/mlinefromtext2.testcase \ - sql_stmt_tests/m_ln.testcase \ - sql_stmt_tests/m_mi.testcase \ - sql_stmt_tests/m_mm.testcase \ - sql_stmt_tests/mm_m.testcase \ - sql_stmt_tests/m_nm.testcase \ - sql_stmt_tests/mpointfromtext1.testcase \ - sql_stmt_tests/mpointfromtext2.testcase \ - sql_stmt_tests/mpolygonfromtext1.testcase \ - sql_stmt_tests/mpolygonfromtext2.testcase \ - sql_stmt_tests/m_us_ch.testcase \ - sql_stmt_tests/m_us_ft.testcase \ - sql_stmt_tests/m_usmi.testcase \ - sql_stmt_tests/m_yd.testcase \ - sql_stmt_tests/m_yd_us.testcase \ - sql_stmt_tests/ndims1.testcase \ - sql_stmt_tests/ndims2.testcase \ - sql_stmt_tests/ndims3.testcase \ - sql_stmt_tests/ndims4.testcase \ - sql_stmt_tests/ndims5.testcase \ - sql_stmt_tests/ndims6.testcase \ - sql_stmt_tests/nm_m.testcase \ - sql_stmt_tests/normalizelonlat10.testcase \ - sql_stmt_tests/normalizelonlat11.testcase \ - sql_stmt_tests/normalizelonlat12.testcase \ - sql_stmt_tests/normalizelonlat13.testcase \ - sql_stmt_tests/normalizelonlat14.testcase \ - sql_stmt_tests/normalizelonlat15.testcase \ - sql_stmt_tests/normalizelonlat16.testcase \ - sql_stmt_tests/normalizelonlat17.testcase \ - sql_stmt_tests/normalizelonlat18.testcase \ - sql_stmt_tests/normalizelonlat19.testcase \ - sql_stmt_tests/normalizelonlat1.testcase \ - sql_stmt_tests/normalizelonlat20.testcase \ - sql_stmt_tests/normalizelonlat21.testcase \ - sql_stmt_tests/normalizelonlat22.testcase \ - sql_stmt_tests/normalizelonlat23.testcase \ - sql_stmt_tests/normalizelonlat24.testcase \ - sql_stmt_tests/normalizelonlat25.testcase \ - sql_stmt_tests/normalizelonlat26.testcase \ - sql_stmt_tests/normalizelonlat27.testcase \ - sql_stmt_tests/normalizelonlat2.testcase \ - sql_stmt_tests/normalizelonlat3.testcase \ - sql_stmt_tests/normalizelonlat4.testcase \ - sql_stmt_tests/normalizelonlat5.testcase \ - sql_stmt_tests/normalizelonlat6.testcase \ - sql_stmt_tests/normalizelonlat7.testcase \ - sql_stmt_tests/normalizelonlat8.testcase \ - sql_stmt_tests/normalizelonlat9.testcase \ - sql_stmt_tests/npoints1.testcase \ - sql_stmt_tests/npoints2.testcase \ - sql_stmt_tests/npoints3.testcase \ - sql_stmt_tests/npoints4.testcase \ - sql_stmt_tests/npoints5.testcase \ - sql_stmt_tests/npoints6.testcase \ - sql_stmt_tests/nrings1.testcase \ - sql_stmt_tests/nrings2.testcase \ - sql_stmt_tests/nrings3.testcase \ - sql_stmt_tests/nrings4.testcase \ - sql_stmt_tests/nrings5.testcase \ - sql_stmt_tests/nrings6.testcase \ - sql_stmt_tests/numgeometries1.testcase \ - sql_stmt_tests/numgeometries2.testcase \ - sql_stmt_tests/numgeometries3.testcase \ - sql_stmt_tests/numgeometries4.testcase \ - sql_stmt_tests/numgeometries5.testcase \ - sql_stmt_tests/numgeometries6.testcase \ - sql_stmt_tests/NumPoints2.testcase \ - sql_stmt_tests/NumPoints3.testcase \ - sql_stmt_tests/NumPoints4.testcase \ - sql_stmt_tests/NumPoints5.testcase \ - sql_stmt_tests/NumPoints6.testcase \ - sql_stmt_tests/NumPoints7.testcase \ - sql_stmt_tests/NumPoints.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve10.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve11.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve12.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve13.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve14.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve1.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve2.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve3.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve4.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve5.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve6.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve7.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve8.testcase \ - sql_stmt_geosadvanced_tests/offsetcurve9.testcase \ - sql_stmt_proj_tests/output10.testcase \ - sql_stmt_proj_tests/output11.testcase \ - sql_stmt_proj_tests/output12.testcase \ - sql_stmt_proj_tests/output13.testcase \ - sql_stmt_proj_tests/output14.testcase \ - sql_stmt_proj_tests/output15.testcase \ - sql_stmt_proj_tests/output16.testcase \ - sql_stmt_proj_tests/output17.testcase \ - sql_stmt_proj_tests/output18.testcase \ - sql_stmt_proj_tests/output19.testcase \ - sql_stmt_proj_tests/output1.testcase \ - sql_stmt_proj_tests/output20.testcase \ - sql_stmt_proj_tests/output21.testcase \ - sql_stmt_proj_tests/output22.testcase \ - sql_stmt_proj_tests/output23.testcase \ - sql_stmt_proj_tests/output24.testcase \ - sql_stmt_proj_tests/output25.testcase \ - sql_stmt_proj_tests/output26.testcase \ - sql_stmt_proj_tests/output27.testcase \ - sql_stmt_proj_tests/output28.testcase \ - sql_stmt_proj_tests/output29.testcase \ - sql_stmt_proj_tests/output2.testcase \ - sql_stmt_proj_tests/output30.testcase \ - sql_stmt_proj_tests/output31.testcase \ - sql_stmt_proj_tests/output32.testcase \ - sql_stmt_proj_tests/output33.testcase \ - sql_stmt_proj_tests/output34.testcase \ - sql_stmt_proj_tests/output35.testcase \ - sql_stmt_proj_tests/output36.testcase \ - sql_stmt_proj_tests/output37.testcase \ - sql_stmt_proj_tests/output38.testcase \ - sql_stmt_proj_tests/output3.testcase \ - sql_stmt_proj_tests/output4.testcase \ - sql_stmt_proj_tests/output5.testcase \ - sql_stmt_proj_tests/output6.testcase \ - sql_stmt_proj_tests/output7.testcase \ - sql_stmt_proj_tests/output8.testcase \ - sql_stmt_proj_tests/output9.testcase \ - sql_stmt_mathsql_tests/pi.testcase \ - sql_stmt_tests/pointfromtext1.testcase \ - sql_stmt_tests/pointfromtext2.testcase \ - sql_stmt_tests/pointn10.testcase \ - sql_stmt_tests/pointn11.testcase \ - sql_stmt_tests/pointn12.testcase \ - sql_stmt_tests/pointn13.testcase \ - sql_stmt_tests/pointn14.testcase \ - sql_stmt_tests/pointn15.testcase \ - sql_stmt_tests/pointn1.testcase \ - sql_stmt_tests/pointn2.testcase \ - sql_stmt_tests/pointn3.testcase \ - sql_stmt_tests/pointn4.testcase \ - sql_stmt_tests/pointn5.testcase \ - sql_stmt_tests/pointn6.testcase \ - sql_stmt_tests/pointn7.testcase \ - sql_stmt_tests/pointn8.testcase \ - sql_stmt_tests/pointn9.testcase \ - sql_stmt_geos_tests/pointonsurface1.testcase \ - sql_stmt_geos_tests/pointonsurface2.testcase \ - sql_stmt_geos_tests/pointonsurface3.testcase \ - sql_stmt_geos_tests/pointonsurface4.testcase \ - sql_stmt_geos_tests/pointonsurface5.testcase \ - sql_stmt_geos_tests/pointonsurface6.testcase \ - sql_stmt_geos_tests/pointonsurface7.testcase \ - sql_stmt_tests/polygonfromtext1.testcase \ - sql_stmt_tests/polygonfromtext2.testcase \ - sql_stmt_geos_tests/polygonize10.testcase \ - sql_stmt_geos_tests/polygonize11.testcase \ - sql_stmt_geos_tests/polygonize12.testcase \ - sql_stmt_geos_tests/polygonize13.testcase \ - sql_stmt_geos_tests/polygonize14.testcase \ - sql_stmt_geos_tests/polygonize1.testcase \ - sql_stmt_geos_tests/polygonize2.testcase \ - sql_stmt_geos_tests/polygonize3.testcase \ - sql_stmt_geos_tests/polygonize4.testcase \ - sql_stmt_geos_tests/polygonize5.testcase \ - sql_stmt_geos_tests/polygonize6.testcase \ - sql_stmt_geos_tests/polygonize7.testcase \ - sql_stmt_geos_tests/polygonize8.testcase \ - sql_stmt_geos_tests/polygonize9.testcase \ - sql_stmt_mathsql_tests/pow00-1.testcase \ - sql_stmt_mathsql_tests/pow00-2.testcase \ - sql_stmt_mathsql_tests/pow00double.testcase \ - sql_stmt_mathsql_tests/pow00.testcase \ - sql_stmt_mathsql_tests/pow-badarg1.testcase \ - sql_stmt_mathsql_tests/pow-badarg2.testcase \ - sql_stmt_mathsql_tests/pow-edom.testcase \ - sql_stmt_mathsql_tests/pow-fp.testcase \ - sql_stmt_geos_tests/ptdistancewithin10.testcase \ - sql_stmt_geos_tests/ptdistancewithin11.testcase \ - sql_stmt_geos_tests/ptdistancewithin12.testcase \ - sql_stmt_geos_tests/ptdistancewithin13.testcase \ - sql_stmt_geos_tests/ptdistancewithin14.testcase \ - sql_stmt_geos_tests/ptdistancewithin15.testcase \ - sql_stmt_geos_tests/ptdistancewithin16.testcase \ - sql_stmt_geos_tests/ptdistancewithin17.testcase \ - sql_stmt_geos_tests/ptdistancewithin18.testcase \ - sql_stmt_geos_tests/ptdistancewithin1.testcase \ - sql_stmt_geos_tests/ptdistancewithin2.testcase \ - sql_stmt_geos_tests/ptdistancewithin3.testcase \ - sql_stmt_geos_tests/ptdistancewithin4.testcase \ - sql_stmt_geos_tests/ptdistancewithin5.testcase \ - sql_stmt_geos_tests/ptdistancewithin6.testcase \ - sql_stmt_geos_tests/ptdistancewithin7.testcase \ - sql_stmt_geos_tests/ptdistancewithin8.testcase \ - sql_stmt_geos_tests/ptdistancewithin9.testcase \ - sql_stmt_geos_tests/ptdistwithin10.testcase \ - sql_stmt_geos_tests/ptdistwithin11.testcase \ - sql_stmt_geos_tests/ptdistwithin12.testcase \ - sql_stmt_geos_tests/ptdistwithin13.testcase \ - sql_stmt_geos_tests/ptdistwithin14.testcase \ - sql_stmt_geos_tests/ptdistwithin15.testcase \ - sql_stmt_geos_tests/ptdistwithin16.testcase \ - sql_stmt_geos_tests/ptdistwithin1.testcase \ - sql_stmt_geos_tests/ptdistwithin2.testcase \ - sql_stmt_geos_tests/ptdistwithin3.testcase \ - sql_stmt_geos_tests/ptdistwithin4.testcase \ - sql_stmt_geos_tests/ptdistwithin5.testcase \ - sql_stmt_geos_tests/ptdistwithin6.testcase \ - sql_stmt_geos_tests/ptdistwithin7.testcase \ - sql_stmt_geos_tests/ptdistwithin8.testcase \ - sql_stmt_geos_tests/ptdistwithin9.testcase \ - sql_stmt_mathsql_tests/rad0.testcase \ - sql_stmt_mathsql_tests/radpi.testcase \ - sql_stmt_mathsql_tests/rad-text.testcase \ - sql_stmt_tests/reflectcoords10.testcase \ - sql_stmt_tests/reflectcoords11.testcase \ - sql_stmt_tests/reflectcoords12.testcase \ - sql_stmt_tests/reflectcoords13.testcase \ - sql_stmt_tests/reflectcoords14.testcase \ - sql_stmt_tests/reflectcoords15.testcase \ - sql_stmt_tests/reflectcoords16.testcase \ - sql_stmt_tests/reflectcoords17.testcase \ - sql_stmt_tests/reflectcoords1.testcase \ - sql_stmt_tests/reflectcoords2.testcase \ - sql_stmt_tests/reflectcoords3.testcase \ - sql_stmt_tests/reflectcoords4.testcase \ - sql_stmt_tests/reflectcoords5.testcase \ - sql_stmt_tests/reflectcoords6.testcase \ - sql_stmt_tests/reflectcoords7.testcase \ - sql_stmt_tests/reflectcoords8.testcase \ - sql_stmt_tests/reflectcoords9.testcase \ - sql_stmt_geos_tests/relate1.testcase \ - sql_stmt_geos_tests/relate2.testcase \ - sql_stmt_geos_tests/relate3.testcase \ - sql_stmt_geos_tests/relate4.testcase \ - sql_stmt_geos_tests/relate5.testcase \ - sql_stmt_geos_tests/relate6.testcase \ - sql_stmt_geos_tests/relate7.testcase \ - sql_stmt_geos_tests/relate8.testcase \ - sql_stmt_geos_tests/relate9.testcase \ - sql_stmt_geos_tests/relations1.testcase \ - sql_stmt_geos_tests/relations2.testcase \ - sql_stmt_geos_tests/relations3.testcase \ - sql_stmt_geos_tests/relations4.testcase \ - sql_stmt_geos_tests/relations5.testcase \ - sql_stmt_geos_tests/relations6.testcase \ - sql_stmt_geos_tests/relations7.testcase \ - sql_stmt_geos_tests/relations8.testcase \ - sql_stmt_tests/reverse1.testcase \ - sql_stmt_tests/reverse2.testcase \ - sql_stmt_tests/reverse3.testcase \ - sql_stmt_tests/reverse4.testcase \ - sql_stmt_tests/reverse5.testcase \ - sql_stmt_tests/reverse6.testcase \ - sql_stmt_tests/ring10.testcase \ - sql_stmt_tests/ring11.testcase \ - sql_stmt_tests/ring12.testcase \ - sql_stmt_tests/ring13.testcase \ - sql_stmt_tests/ring14.testcase \ - sql_stmt_tests/ring15.testcase \ - sql_stmt_tests/ring16.testcase \ - sql_stmt_tests/ring17.testcase \ - sql_stmt_tests/ring18.testcase \ - sql_stmt_tests/ring19.testcase \ - sql_stmt_tests/ring1.testcase \ - sql_stmt_tests/ring20.testcase \ - sql_stmt_tests/ring21.testcase \ - sql_stmt_tests/ring22.testcase \ - sql_stmt_tests/ring23.testcase \ - sql_stmt_tests/ring24.testcase \ - sql_stmt_tests/ring25.testcase \ - sql_stmt_tests/ring26.testcase \ - sql_stmt_tests/ring27.testcase \ - sql_stmt_tests/ring28.testcase \ - sql_stmt_tests/ring2.testcase \ - sql_stmt_tests/ring3.testcase \ - sql_stmt_tests/ring4.testcase \ - sql_stmt_tests/ring5.testcase \ - sql_stmt_tests/ring6.testcase \ - sql_stmt_tests/ring7.testcase \ - sql_stmt_tests/ring8.testcase \ - sql_stmt_tests/ring9.testcase \ - sql_stmt_geosadvanced_tests/ringsnodes1.testcase \ - sql_stmt_geosadvanced_tests/ringsnodes2.testcase \ - sql_stmt_geosadvanced_tests/ringsnodes3.testcase \ - sql_stmt_geosadvanced_tests/ringsnodes4.testcase \ - sql_stmt_geosadvanced_tests/ringsnodes5.testcase \ - sql_stmt_geosadvanced_tests/ringsnodes6.testcase \ - sql_stmt_tests/rotatecoords10.testcase \ - sql_stmt_tests/rotatecoords11.testcase \ - sql_stmt_tests/rotatecoords12.testcase \ - sql_stmt_tests/rotatecoords13.testcase \ - sql_stmt_tests/rotatecoords14.testcase \ - sql_stmt_tests/rotatecoords1.testcase \ - sql_stmt_tests/rotatecoords2.testcase \ - sql_stmt_tests/rotatecoords3.testcase \ - sql_stmt_tests/rotatecoords4.testcase \ - sql_stmt_tests/rotatecoords5.testcase \ - sql_stmt_tests/rotatecoords6.testcase \ - sql_stmt_tests/rotatecoords7.testcase \ - sql_stmt_tests/rotatecoords8.testcase \ - sql_stmt_tests/rotatecoords9.testcase \ - sql_stmt_mathsql_tests/round0.testcase \ - sql_stmt_mathsql_tests/round-29.testcase \ - sql_stmt_mathsql_tests/round29.testcase \ - sql_stmt_mathsql_tests/round30.testcase \ - sql_stmt_mathsql_tests/round-31.testcase \ - sql_stmt_mathsql_tests/round31.testcase \ - sql_stmt_mathsql_tests/round3.testcase \ - sql_stmt_mathsql_tests/round-text.testcase \ - sql_stmt_tests/routing1.testcase \ - sql_stmt_tests/routing2.testcase \ - sql_stmt_tests/routing3.testcase \ - sql_stmt_tests/routing4.testcase \ - sql_stmt_tests/routing5.testcase \ - sql_stmt_geos_tests/routing6.testcase \ - sql_stmt_tests/sandro.jpg \ - sql_stmt_tests/sanitizeGeometry10.testcase \ - sql_stmt_tests/sanitizeGeometry11.testcase \ - sql_stmt_tests/sanitizeGeometry12.testcase \ - sql_stmt_tests/sanitizeGeometry13.testcase \ - sql_stmt_tests/sanitizeGeometry14.testcase \ - sql_stmt_tests/sanitizeGeometry15.testcase \ - sql_stmt_tests/sanitizeGeometry16.testcase \ - sql_stmt_tests/sanitizeGeometry1.testcase \ - sql_stmt_tests/sanitizeGeometry2.testcase \ - sql_stmt_tests/sanitizeGeometry3.testcase \ - sql_stmt_tests/sanitizeGeometry4.testcase \ - sql_stmt_tests/sanitizeGeometry5.testcase \ - sql_stmt_tests/sanitizeGeometry6.testcase \ - sql_stmt_tests/sanitizeGeometry7.testcase \ - sql_stmt_tests/sanitizeGeometry8.testcase \ - sql_stmt_tests/sanitizeGeometry9.testcase \ - sql_stmt_tests/scalecoords10.testcase \ - sql_stmt_tests/scalecoords11.testcase \ - sql_stmt_tests/scalecoords12.testcase \ - sql_stmt_tests/scalecoords13.testcase \ - sql_stmt_tests/scalecoords1.testcase \ - sql_stmt_tests/scalecoords2.testcase \ - sql_stmt_tests/scalecoords3.testcase \ - sql_stmt_tests/scalecoords4.testcase \ - sql_stmt_tests/scalecoords5.testcase \ - sql_stmt_tests/scalecoords6.testcase \ - sql_stmt_tests/scalecoords7.testcase \ - sql_stmt_tests/scalecoords8.testcase \ - sql_stmt_tests/scalecoords9.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths10.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths11.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths12.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths13.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths14.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths15.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths16.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths17.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths18.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths19.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths1.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths20.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths21.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths22.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths23.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths24.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths25.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths26.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths27.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths28.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths29.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths2.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths30.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths31.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths32.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths3.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths4.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths5.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths6.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths7.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths8.testcase \ - sql_stmt_geosadvanced_tests/sharedpaths9.testcase \ - sql_stmt_tests/shiftcoords10.testcase \ - sql_stmt_tests/shiftcoords11.testcase \ - sql_stmt_tests/shiftcoords12.testcase \ - sql_stmt_tests/shiftcoords13.testcase \ - sql_stmt_tests/shiftcoords14.testcase \ - sql_stmt_tests/shiftcoords15.testcase \ - sql_stmt_tests/shiftcoords1.testcase \ - sql_stmt_tests/shiftcoords2.testcase \ - sql_stmt_tests/shiftcoords3.testcase \ - sql_stmt_tests/shiftcoords4.testcase \ - sql_stmt_tests/shiftcoords5.testcase \ - sql_stmt_tests/shiftcoords6.testcase \ - sql_stmt_tests/shiftcoords7.testcase \ - sql_stmt_tests/shiftcoords8.testcase \ - sql_stmt_tests/shiftcoords9.testcase \ - sql_stmt_tests/shiftlongitude10.testcase \ - sql_stmt_tests/shiftlongitude11.testcase \ - sql_stmt_tests/shiftlongitude12.testcase \ - sql_stmt_tests/shiftlongitude13.testcase \ - sql_stmt_tests/shiftlongitude14.testcase \ - sql_stmt_tests/shiftlongitude15.testcase \ - sql_stmt_tests/shiftlongitude16.testcase \ - sql_stmt_tests/shiftlongitude17.testcase \ - sql_stmt_tests/shiftlongitude18.testcase \ - sql_stmt_tests/shiftlongitude19.testcase \ - sql_stmt_tests/shiftlongitude1.testcase \ - sql_stmt_tests/shiftlongitude20.testcase \ - sql_stmt_tests/shiftlongitude21.testcase \ - sql_stmt_tests/shiftlongitude22.testcase \ - sql_stmt_tests/shiftlongitude23.testcase \ - sql_stmt_tests/shiftlongitude24.testcase \ - sql_stmt_tests/shiftlongitude25.testcase \ - sql_stmt_tests/shiftlongitude26.testcase \ - sql_stmt_tests/shiftlongitude2.testcase \ - sql_stmt_tests/shiftlongitude3.testcase \ - sql_stmt_tests/shiftlongitude4.testcase \ - sql_stmt_tests/shiftlongitude5.testcase \ - sql_stmt_tests/shiftlongitude6.testcase \ - sql_stmt_tests/shiftlongitude7.testcase \ - sql_stmt_tests/shiftlongitude8.testcase \ - sql_stmt_tests/shiftlongitude9.testcase \ - sql_stmt_geosadvanced_tests/shortestline1.testcase \ - sql_stmt_geosadvanced_tests/shortestline2.testcase \ - sql_stmt_geosadvanced_tests/shortestline3.testcase \ - sql_stmt_geosadvanced_tests/shortestline4.testcase \ - sql_stmt_geosadvanced_tests/shortestline5.testcase \ - sql_stmt_geosadvanced_tests/shortestline6.testcase \ - sql_stmt_geosadvanced_tests/shortestline7.testcase \ - sql_stmt_mathsql_tests/sign00.testcase \ - sql_stmt_mathsql_tests/sign01.testcase \ - sql_stmt_mathsql_tests/sign0.testcase \ - sql_stmt_mathsql_tests/sign10.testcase \ - sql_stmt_mathsql_tests/signeg2int.testcase \ - sql_stmt_mathsql_tests/signeg2.testcase \ - sql_stmt_mathsql_tests/signeg.testcase \ - sql_stmt_mathsql_tests/signtext.testcase \ - sql_stmt_geos_tests/simplify10.testcase \ - sql_stmt_geos_tests/simplify11.testcase \ - sql_stmt_geos_tests/simplify12.testcase \ - sql_stmt_geos_tests/simplify13.testcase \ - sql_stmt_geos_tests/simplify14.testcase \ - sql_stmt_geos_tests/simplify15.testcase \ - sql_stmt_geos_tests/simplify16.testcase \ - sql_stmt_geos_tests/simplify1.testcase \ - sql_stmt_geos_tests/simplify2.testcase \ - sql_stmt_geos_tests/simplify3.testcase \ - sql_stmt_geos_tests/simplify4.testcase \ - sql_stmt_geos_tests/simplify5.testcase \ - sql_stmt_geos_tests/simplify6.testcase \ - sql_stmt_geos_tests/simplify7.testcase \ - sql_stmt_geos_tests/simplify8.testcase \ - sql_stmt_geos_tests/simplify9.testcase \ - sql_stmt_mathsql_tests/sin00.testcase \ - sql_stmt_mathsql_tests/sin0.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer11.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer12.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer13.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer14.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer15.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer16.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer17.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer1.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer2.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer3.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer4.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer5.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer6.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer7.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer8.testcase \ - sql_stmt_geosadvanced_tests/singlesidedbuffer9.testcase \ - sql_stmt_mathsql_tests/sin-pi2.testcase \ - sql_stmt_mathsql_tests/sinpi2.testcase \ - sql_stmt_mathsql_tests/sin-pi.testcase \ - sql_stmt_mathsql_tests/sinpi.testcase \ - sql_stmt_mathsql_tests/sin-text.testcase \ - sql_stmt_geosadvanced_tests/snap10.testcase \ - sql_stmt_geosadvanced_tests/snap1.testcase \ - sql_stmt_geosadvanced_tests/snap2.testcase \ - sql_stmt_geosadvanced_tests/snap3.testcase \ - sql_stmt_geosadvanced_tests/snap4.testcase \ - sql_stmt_geosadvanced_tests/snap5.testcase \ - sql_stmt_geosadvanced_tests/snap6.testcase \ - sql_stmt_geosadvanced_tests/snap7.testcase \ - sql_stmt_geosadvanced_tests/snap8.testcase \ - sql_stmt_geosadvanced_tests/snap9.testcase \ - sql_stmt_tests/spatialindex.testcase \ - sql_stmt_mathsql_tests/sqrt00.testcase \ - sql_stmt_mathsql_tests/sqrt0.testcase \ - sql_stmt_mathsql_tests/sqrt-10.testcase \ - sql_stmt_mathsql_tests/sqrt-1.testcase \ - sql_stmt_mathsql_tests/sqrt-640.testcase \ - sql_stmt_mathsql_tests/sqrt-64.testcase \ - sql_stmt_mathsql_tests/sqrt-text.testcase \ - sql_stmt_tests/srid10.testcase \ - sql_stmt_tests/srid11.testcase \ - sql_stmt_tests/srid1.testcase \ - sql_stmt_tests/srid2.testcase \ - sql_stmt_tests/srid3.testcase \ - sql_stmt_tests/srid4.testcase \ - sql_stmt_tests/srid5.testcase \ - sql_stmt_tests/srid6.testcase \ - sql_stmt_tests/srid7.testcase \ - sql_stmt_tests/srid8.testcase \ - sql_stmt_tests/srid9.testcase \ - sql_stmt_tests/SridFromAuthCRS2.testcase \ - sql_stmt_tests/SridFromAuthCRS3.testcase \ - sql_stmt_tests/SridFromAuthCRS4.testcase \ - sql_stmt_tests/SridFromAuthCRS5.testcase \ - sql_stmt_tests/SridFromAuthCRS6.testcase \ - sql_stmt_tests/SridFromAuthCRS.testcase \ - sql_stmt_geos_tests/st_area1.testcase \ - sql_stmt_geos_tests/st_area2.testcase \ - sql_stmt_geos_tests/st_area3.testcase \ - sql_stmt_geos_tests/st_area4.testcase \ - sql_stmt_geos_tests/st_area5.testcase \ - sql_stmt_geos_tests/st_area6.testcase \ - sql_stmt_geos_tests/st_area7.testcase \ - sql_stmt_geos_tests/st_area8.testcase \ - sql_stmt_geos_tests/st_area9.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid1.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid2.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid3.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid4.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid5.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid6.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid7.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid8.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid9.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid10.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid11.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid12.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid13.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid14.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid15.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid16.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid17.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid18.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid19.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid20.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid21.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid22.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid23.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid24.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid25.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid26.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid27.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid28.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid29.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid30.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid31.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid32.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid33.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid34.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid35.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid36.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid37.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid38.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid39.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid40.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid41.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid42.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid43.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid44.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid45.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid46.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid47.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid48.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid49.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid50.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid51.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid52.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid53.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid54.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid55.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid56.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid57.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid58.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid59.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid60.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid61.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid62.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid63.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid64.testcase \ - sql_stmt_lwgeom_tests/st_snaptogrid65.testcase \ - sql_stmt_lwgeom_tests/st_makevalid1.testcase \ - sql_stmt_lwgeom_tests/st_makevalid2.testcase \ - sql_stmt_lwgeom_tests/st_makevalid3.testcase \ - sql_stmt_lwgeom_tests/st_makevalid4.testcase \ - sql_stmt_lwgeom_tests/st_makevalid5.testcase \ - sql_stmt_lwgeom_tests/st_makevalid6.testcase \ - sql_stmt_lwgeom_tests/st_makevalid7.testcase \ - sql_stmt_lwgeom_tests/st_makevalid8.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded1.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded2.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded3.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded4.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded5.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded6.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded7.testcase \ - sql_stmt_lwgeom_tests/st_makevaliddiscarded8.testcase \ - sql_stmt_lwgeom_tests/st_segmentize1.testcase \ - sql_stmt_lwgeom_tests/st_segmentize2.testcase \ - sql_stmt_lwgeom_tests/st_segmentize3.testcase \ - sql_stmt_lwgeom_tests/st_segmentize4.testcase \ - sql_stmt_lwgeom_tests/st_segmentize5.testcase \ - sql_stmt_lwgeom_tests/st_segmentize6.testcase \ - sql_stmt_lwgeom_tests/st_segmentize7.testcase \ - sql_stmt_lwgeom_tests/st_segmentize8.testcase \ - sql_stmt_lwgeom_tests/st_segmentize9.testcase \ - sql_stmt_lwgeom_tests/st_segmentize10.testcase \ - sql_stmt_lwgeom_tests/st_segmentize11.testcase \ - sql_stmt_lwgeom_tests/st_segmentize12.testcase \ - sql_stmt_lwgeom_tests/st_segmentize13.testcase \ - sql_stmt_lwgeom_tests/st_segmentize14.testcase \ - sql_stmt_lwgeom_tests/st_segmentize16.testcase \ - sql_stmt_lwgeom_tests/st_segmentize16.testcase \ - sql_stmt_lwgeom_tests/st_segmentize17.testcase \ - sql_stmt_lwgeom_tests/st_segmentize18.testcase \ - sql_stmt_lwgeom_tests/st_segmentize19.testcase \ - sql_stmt_lwgeom_tests/st_segmentize20.testcase \ - sql_stmt_lwgeom_tests/st_segmentize21.testcase \ - sql_stmt_lwgeom_tests/st_segmentize22.testcase \ - sql_stmt_lwgeom_tests/st_segmentize23.testcase \ - sql_stmt_lwgeom_tests/st_segmentize24.testcase \ - sql_stmt_lwgeom_tests/st_segmentize25.testcase \ - sql_stmt_lwgeom_tests/st_segmentize26.testcase \ - sql_stmt_lwgeom_tests/st_segmentize27.testcase \ - sql_stmt_lwgeom_tests/st_segmentize28.testcase \ - sql_stmt_lwgeom_tests/st_segmentize29.testcase \ - sql_stmt_lwgeom_tests/st_segmentize30.testcase \ - sql_stmt_lwgeom_tests/st_segmentize31.testcase \ - sql_stmt_lwgeom_tests/st_azimuth1.testcase \ - sql_stmt_lwgeom_tests/st_azimuth2.testcase \ - sql_stmt_lwgeom_tests/st_azimuth3.testcase \ - sql_stmt_lwgeom_tests/st_azimuth4.testcase \ - sql_stmt_lwgeom_tests/st_azimuth5.testcase \ - sql_stmt_lwgeom_tests/st_azimuth6.testcase \ - sql_stmt_lwgeom_tests/st_azimuth7.testcase \ - sql_stmt_lwgeom_tests/st_azimuth8.testcase \ - sql_stmt_lwgeom_tests/st_azimuth9.testcase \ - sql_stmt_lwgeom_tests/st_azimuth10.testcase \ - sql_stmt_lwgeom_tests/st_azimuth11.testcase \ - sql_stmt_lwgeom_tests/st_azimuth12.testcase \ - sql_stmt_lwgeom_tests/st_azimuth13.testcase \ - sql_stmt_lwgeom_tests/st_azimuth14.testcase \ - sql_stmt_lwgeom_tests/st_azimuth15.testcase \ - sql_stmt_lwgeom_tests/st_azimuth16.testcase \ - sql_stmt_lwgeom_tests/st_azimuth17.testcase \ - sql_stmt_lwgeom_tests/st_geohash1.testcase \ - sql_stmt_lwgeom_tests/st_geohash2.testcase \ - sql_stmt_lwgeom_tests/st_geohash3.testcase \ - sql_stmt_lwgeom_tests/st_geohash4.testcase \ - sql_stmt_lwgeom_tests/st_geohash5.testcase \ - sql_stmt_lwgeom_tests/st_geohash6.testcase \ - sql_stmt_lwgeom_tests/st_geohash7.testcase \ - sql_stmt_lwgeom_tests/st_geohash8.testcase \ - sql_stmt_lwgeom_tests/st_geohash9.testcase \ - sql_stmt_lwgeom_tests/st_geohash10.testcase \ - sql_stmt_lwgeom_tests/st_asx3d1.testcase \ - sql_stmt_lwgeom_tests/st_asx3d2.testcase \ - sql_stmt_lwgeom_tests/st_asx3d3.testcase \ - sql_stmt_lwgeom_tests/st_asx3d4.testcase \ - sql_stmt_lwgeom_tests/st_asx3d5.testcase \ - sql_stmt_lwgeom_tests/st_asx3d6.testcase \ - sql_stmt_lwgeom_tests/st_asx3d7.testcase \ - sql_stmt_lwgeom_tests/st_asx3d8.testcase \ - sql_stmt_lwgeom_tests/st_asx3d9.testcase \ - sql_stmt_lwgeom_tests/st_asx3d10.testcase \ - sql_stmt_lwgeom_tests/st_asx3d11.testcase \ - sql_stmt_lwgeom_tests/st_asx3d12.testcase \ - sql_stmt_lwgeom_tests/st_asx3d13.testcase \ - sql_stmt_lwgeom_tests/st_asx3d14.testcase \ - sql_stmt_lwgeom_tests/st_asx3d15.testcase \ - sql_stmt_lwgeom_tests/st_asx3d16.testcase \ - sql_stmt_lwgeom_tests/st_asx3d17.testcase \ - sql_stmt_lwgeom_tests/st_asx3d18.testcase \ - sql_stmt_lwgeom_tests/st_asx3d19.testcase \ - sql_stmt_lwgeom_tests/st_asx3d20.testcase \ - sql_stmt_lwgeom_tests/st_asx3d21.testcase \ - sql_stmt_lwgeom_tests/st_asx3d22.testcase \ - sql_stmt_lwgeom_tests/st_asx3d23.testcase \ - sql_stmt_lwgeom_tests/st_asx3d24.testcase \ - sql_stmt_lwgeom_tests/st_asx3d25.testcase \ - sql_stmt_lwgeom_tests/st_asx3d26.testcase \ - sql_stmt_lwgeom_tests/st_asx3d27.testcase \ - sql_stmt_lwgeom_tests/st_asx3d28.testcase \ - sql_stmt_lwgeom_tests/st_asx3d29.testcase \ - sql_stmt_lwgeom_tests/st_asx3d30.testcase \ - sql_stmt_lwgeom_tests/3ddistance1.testcase \ - sql_stmt_lwgeom_tests/3ddistance2.testcase \ - sql_stmt_lwgeom_tests/3ddistance3.testcase \ - sql_stmt_lwgeom_tests/3ddistance4.testcase \ - sql_stmt_lwgeom_tests/3ddistance5.testcase \ - sql_stmt_lwgeom_tests/3ddistance6.testcase \ - sql_stmt_lwgeom_tests/3ddistance7.testcase \ - sql_stmt_lwgeom_tests/3ddistance8.testcase \ - sql_stmt_lwgeom_tests/3ddistance9.testcase \ - sql_stmt_lwgeom_tests/3ddistance10.testcase \ - sql_stmt_lwgeom_tests/maxdistance1.testcase \ - sql_stmt_lwgeom_tests/maxdistance2.testcase \ - sql_stmt_lwgeom_tests/maxdistance3.testcase \ - sql_stmt_lwgeom_tests/maxdistance4.testcase \ - sql_stmt_lwgeom_tests/maxdistance5.testcase \ - sql_stmt_lwgeom_tests/maxdistance6.testcase \ - sql_stmt_lwgeom_tests/maxdistance7.testcase \ - sql_stmt_lwgeom_tests/maxdistance8.testcase \ - sql_stmt_lwgeom_tests/maxdistance9.testcase \ - sql_stmt_lwgeom_tests/maxdistance10.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance1.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance2.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance3.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance4.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance5.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance6.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance7.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance8.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance9.testcase \ - sql_stmt_lwgeom_tests/3dmaxdistance10.testcase \ - sql_stmt_lwgeom_tests/st_split1.testcase \ - sql_stmt_lwgeom_tests/st_split2.testcase \ - sql_stmt_lwgeom_tests/st_split3.testcase \ - sql_stmt_lwgeom_tests/st_split4.testcase \ - sql_stmt_lwgeom_tests/st_split5.testcase \ - sql_stmt_lwgeom_tests/st_split6.testcase \ - sql_stmt_lwgeom_tests/st_split7.testcase \ - sql_stmt_lwgeom_tests/st_split8.testcase \ - sql_stmt_lwgeom_tests/st_split9.testcase \ - sql_stmt_lwgeom_tests/st_split10.testcase \ - sql_stmt_lwgeom_tests/st_split11.testcase \ - sql_stmt_lwgeom_tests/st_split12.testcase \ - sql_stmt_lwgeom_tests/st_split13.testcase \ - sql_stmt_lwgeom_tests/st_split14.testcase \ - sql_stmt_lwgeom_tests/st_split15.testcase \ - sql_stmt_lwgeom_tests/st_split16.testcase \ - sql_stmt_lwgeom_tests/st_split17.testcase \ - sql_stmt_lwgeom_tests/st_split18.testcase \ - sql_stmt_lwgeom_tests/st_split19.testcase \ - sql_stmt_lwgeom_tests/st_split20.testcase \ - sql_stmt_lwgeom_tests/st_split21.testcase \ - sql_stmt_lwgeom_tests/st_split22.testcase \ - sql_stmt_lwgeom_tests/st_split23.testcase \ - sql_stmt_lwgeom_tests/st_split24.testcase \ - sql_stmt_lwgeom_tests/st_split25.testcase \ - sql_stmt_lwgeom_tests/st_split26.testcase \ - sql_stmt_lwgeom_tests/st_split27.testcase \ - sql_stmt_lwgeom_tests/st_split28.testcase \ - sql_stmt_lwgeom_tests/st_split29.testcase \ - sql_stmt_lwgeom_tests/st_split30.testcase \ - sql_stmt_lwgeom_tests/st_split31.testcase \ - sql_stmt_lwgeom_tests/st_split32.testcase \ - sql_stmt_lwgeom_tests/st_split33.testcase \ - sql_stmt_lwgeom_tests/st_split34.testcase \ - sql_stmt_lwgeom_tests/st_split35.testcase \ - sql_stmt_lwgeom_tests/st_split36.testcase \ - sql_stmt_lwgeom_tests/st_split37.testcase \ - sql_stmt_lwgeom_tests/st_split38.testcase \ - sql_stmt_lwgeom_tests/st_split39.testcase \ - sql_stmt_lwgeom_tests/st_split40.testcase \ - sql_stmt_lwgeom_tests/st_split41.testcase \ - sql_stmt_lwgeom_tests/st_split42.testcase \ - sql_stmt_lwgeom_tests/st_split43.testcase \ - sql_stmt_lwgeom_tests/st_split44.testcase \ - sql_stmt_lwgeom_tests/st_split45.testcase \ - sql_stmt_lwgeom_tests/st_split46.testcase \ - sql_stmt_lwgeom_tests/st_split47.testcase \ - sql_stmt_lwgeom_tests/st_split48.testcase \ - sql_stmt_lwgeom_tests/st_split49.testcase \ - sql_stmt_tests/startpoint1.testcase \ - sql_stmt_tests/startpoint2.testcase \ - sql_stmt_tests/startpoint3.testcase \ - sql_stmt_mathsql_tests/stddev.testcase \ - sql_stmt_geos_tests/st_length1.testcase \ - sql_stmt_geos_tests/st_length2.testcase \ - sql_stmt_geos_tests/st_length3.testcase \ - sql_stmt_geos_tests/st_length4.testcase \ - sql_stmt_geos_tests/st_length5.testcase \ - sql_stmt_geos_tests/st_length6.testcase \ - sql_stmt_geos_tests/st_length7.testcase \ - sql_stmt_geos_tests/st_length8.testcase \ - sql_stmt_geos_tests/st_length9.testcase \ - sql_stmt_geos_tests/st_length10.testcase \ - sql_stmt_geos_tests/st_length11.testcase \ - sql_stmt_geos_tests/st_length12.testcase \ - sql_stmt_geos_tests/st_length13.testcase \ - sql_stmt_geos_tests/st_length14.testcase \ - sql_stmt_geos_tests/st_length15.testcase \ - sql_stmt_geos_tests/st_length16.testcase \ - sql_stmt_geos_tests/st_length17.testcase \ - sql_stmt_geos_tests/st_length18.testcase \ - sql_stmt_geos_tests/st_perimeter1.testcase \ - sql_stmt_geos_tests/st_perimeter2.testcase \ - sql_stmt_geos_tests/st_perimeter3.testcase \ - sql_stmt_geos_tests/st_perimeter4.testcase \ - sql_stmt_geos_tests/st_perimeter5.testcase \ - sql_stmt_geos_tests/st_perimeter6.testcase \ - sql_stmt_geos_tests/st_perimeter7.testcase \ - sql_stmt_geos_tests/st_perimeter8.testcase \ - sql_stmt_geos_tests/st_perimeter9.testcase \ - sql_stmt_geos_tests/st_perimeter10.testcase \ - sql_stmt_geos_tests/st_perimeter11.testcase \ - sql_stmt_geos_tests/st_perimeter12.testcase \ - sql_stmt_geos_tests/st_perimeter13.testcase \ - sql_stmt_geos_tests/st_perimeter14.testcase \ - sql_stmt_geos_tests/st_perimeter15.testcase \ - sql_stmt_geos_tests/st_perimeter16.testcase \ - sql_stmt_geos_tests/st_perimeter17.testcase \ - sql_stmt_geos_tests/st_perimeter18.testcase \ - sql_stmt_tests/st_m1.testcase \ - sql_stmt_tests/st_m2.testcase \ - sql_stmt_tests/st_m3.testcase \ - sql_stmt_tests/st_m4.testcase \ - sql_stmt_tests/st_m5.testcase \ - sql_stmt_tests/st_m6.testcase \ - sql_stmt_tests/st_m8.testcase \ - sql_stmt_tests/st_x1.testcase \ - sql_stmt_tests/st_x2.testcase \ - sql_stmt_tests/st_x3.testcase \ - sql_stmt_tests/st_x4.testcase \ - sql_stmt_tests/st_x5.testcase \ - sql_stmt_tests/st_x6.testcase \ - sql_stmt_tests/st_x7.testcase \ - sql_stmt_tests/st_x8.testcase \ - sql_stmt_tests/st_x9.testcase \ - sql_stmt_tests/st_y1.testcase \ - sql_stmt_tests/st_y2.testcase \ - sql_stmt_tests/st_y3.testcase \ - sql_stmt_tests/st_y4.testcase \ - sql_stmt_tests/st_y5.testcase \ - sql_stmt_tests/st_y7.testcase \ - sql_stmt_tests/st_y8.testcase \ - sql_stmt_tests/st_y9.testcase \ - sql_stmt_tests/st_z1.testcase \ - sql_stmt_tests/st_z2.testcase \ - sql_stmt_tests/st_z3.testcase \ - sql_stmt_tests/st_z4.testcase \ - sql_stmt_tests/st_z5.testcase \ - sql_stmt_tests/st_z6.testcase \ - sql_stmt_tests/st_z7.testcase \ - sql_stmt_tests/st_z8.testcase \ - sql_stmt_tests/st_z9.testcase \ - sql_stmt_tests/swapcoords10.testcase \ - sql_stmt_tests/swapcoords11.testcase \ - sql_stmt_tests/swapcoords1.testcase \ - sql_stmt_tests/swapcoords2.testcase \ - sql_stmt_tests/swapcoords3.testcase \ - sql_stmt_tests/swapcoords4.testcase \ - sql_stmt_tests/swapcoords5.testcase \ - sql_stmt_tests/swapcoords6.testcase \ - sql_stmt_tests/swapcoords7.testcase \ - sql_stmt_tests/swapcoords8.testcase \ - sql_stmt_tests/swapcoords9.testcase \ - sql_stmt_geos_tests/symdifference10.testcase \ - sql_stmt_geos_tests/symdifference11.testcase \ - sql_stmt_geos_tests/symdifference1.testcase \ - sql_stmt_geos_tests/symdifference2.testcase \ - sql_stmt_geos_tests/symdifference3.testcase \ - sql_stmt_geos_tests/symdifference4.testcase \ - sql_stmt_geos_tests/symdifference5.testcase \ - sql_stmt_geos_tests/symdifference6.testcase \ - sql_stmt_geos_tests/symdifference7.testcase \ - sql_stmt_geos_tests/symdifference8.testcase \ - sql_stmt_geos_tests/symdifference9.testcase \ - sql_stmt_mathsql_tests/tan00.testcase \ - sql_stmt_mathsql_tests/tan0.testcase \ - sql_stmt_mathsql_tests/tanpi4.testcase \ - sql_stmt_mathsql_tests/tan-pi.testcase \ - sql_stmt_mathsql_tests/tanpi.testcase \ - sql_stmt_mathsql_tests/tan-text.testcase \ - sql_stmt_tests/testdb1.sqlite \ - sql_stmt_tests/testFDO.sqlite \ - sql_stmt_tests/testFGF.sqlite \ - sql_stmt_tests/togars10.testcase \ - sql_stmt_tests/togars11.testcase \ - sql_stmt_tests/togars12.testcase \ - sql_stmt_tests/togars1.testcase \ - sql_stmt_tests/togars2.testcase \ - sql_stmt_tests/togars3.testcase \ - sql_stmt_tests/togars4.testcase \ - sql_stmt_tests/togars5.testcase \ - sql_stmt_tests/togars6.testcase \ - sql_stmt_tests/togars7.testcase \ - sql_stmt_tests/togars8.testcase \ - sql_stmt_tests/togars9.testcase \ - sql_stmt_proj_tests/transform10.testcase \ - sql_stmt_proj_tests/transform11.testcase \ - sql_stmt_proj_tests/transform12.testcase \ - sql_stmt_proj_tests/transform13.testcase \ - sql_stmt_proj_tests/transform14.testcase \ - sql_stmt_proj_tests/transform15.testcase \ - sql_stmt_proj_tests/transform16.testcase \ - sql_stmt_proj_tests/transform17.testcase \ - sql_stmt_proj_tests/transform18.testcase \ - sql_stmt_proj_tests/transform19.testcase \ - sql_stmt_proj_tests/transform1.testcase \ - sql_stmt_proj_tests/transform20.testcase \ - sql_stmt_proj_tests/transform21.testcase \ - sql_stmt_proj_tests/transform2.testcase \ - sql_stmt_proj_tests/transform3.testcase \ - sql_stmt_proj_tests/transform4.testcase \ - sql_stmt_proj_tests/transform5.testcase \ - sql_stmt_proj_tests/transform6.testcase \ - sql_stmt_proj_tests/transform7.testcase \ - sql_stmt_proj_tests/transform8.testcase \ - sql_stmt_proj_tests/transform9.testcase \ - sql_stmt_tests/translate10.testcase \ - sql_stmt_tests/translate11.testcase \ - sql_stmt_tests/translate12.testcase \ - sql_stmt_tests/translate13.testcase \ - sql_stmt_tests/translate14.testcase \ - sql_stmt_tests/translate15.testcase \ - sql_stmt_tests/translate16.testcase \ - sql_stmt_tests/translate17.testcase \ - sql_stmt_tests/translate18.testcase \ - sql_stmt_tests/translate19.testcase \ - sql_stmt_tests/translate1.testcase \ - sql_stmt_tests/translate2.testcase \ - sql_stmt_tests/translate3.testcase \ - sql_stmt_tests/translate4.testcase \ - sql_stmt_tests/translate5.testcase \ - sql_stmt_tests/translate6.testcase \ - sql_stmt_tests/translate7.testcase \ - sql_stmt_tests/translate8.testcase \ - sql_stmt_tests/translate9.testcase \ - sql_stmt_tests/trivial.sqlite_RO \ - sql_stmt_geosadvanced_tests/unaryunion1.testcase \ - sql_stmt_geosadvanced_tests/unaryunion2.testcase \ - sql_stmt_geosadvanced_tests/unaryunion3.testcase \ - sql_stmt_geosadvanced_tests/unaryunion4.testcase \ - sql_stmt_geosadvanced_tests/unaryunion5.testcase \ - sql_stmt_geosadvanced_tests/unaryunion6.testcase \ - sql_stmt_geosadvanced_tests/unaryunion7.testcase \ - sql_stmt_geosadvanced_tests/unaryunion8.testcase \ - sql_stmt_geostrunk_tests/delaunay1.testcase \ - sql_stmt_geostrunk_tests/delaunay2.testcase \ - sql_stmt_geostrunk_tests/delaunay3.testcase \ - sql_stmt_geostrunk_tests/delaunay4.testcase \ - sql_stmt_geostrunk_tests/delaunay5.testcase \ - sql_stmt_geostrunk_tests/delaunay6.testcase \ - sql_stmt_geostrunk_tests/delaunay7.testcase \ - sql_stmt_geostrunk_tests/delaunay8.testcase \ - sql_stmt_geostrunk_tests/delaunay9.testcase \ - sql_stmt_geostrunk_tests/delaunay10.testcase \ - sql_stmt_geostrunk_tests/delaunay11.testcase \ - sql_stmt_geostrunk_tests/delaunay12.testcase \ - sql_stmt_geostrunk_tests/delaunay13.testcase \ - sql_stmt_geostrunk_tests/delaunay14.testcase \ - sql_stmt_geostrunk_tests/delaunay15.testcase \ - sql_stmt_geostrunk_tests/delaunay16.testcase \ - sql_stmt_geostrunk_tests/delaunay17.testcase \ - sql_stmt_geostrunk_tests/delaunay18.testcase \ - sql_stmt_geostrunk_tests/delaunay19.testcase \ - sql_stmt_geostrunk_tests/voronoj1.testcase \ - sql_stmt_geostrunk_tests/voronoj2.testcase \ - sql_stmt_geostrunk_tests/voronoj3.testcase \ - sql_stmt_geostrunk_tests/voronoj4.testcase \ - sql_stmt_geostrunk_tests/voronoj5.testcase \ - sql_stmt_geostrunk_tests/voronoj6.testcase \ - sql_stmt_geostrunk_tests/voronoj8.testcase \ - sql_stmt_geostrunk_tests/voronoj9.testcase \ - sql_stmt_geostrunk_tests/voronoj10.testcase \ - sql_stmt_geostrunk_tests/voronoj11.testcase \ - sql_stmt_geostrunk_tests/voronoj12.testcase \ - sql_stmt_geostrunk_tests/voronoj13.testcase \ - sql_stmt_geostrunk_tests/voronoj14.testcase \ - sql_stmt_geostrunk_tests/voronoj15.testcase \ - sql_stmt_geostrunk_tests/voronoj16.testcase \ - sql_stmt_geostrunk_tests/voronoj17.testcase \ - sql_stmt_geostrunk_tests/voronoj18.testcase \ - sql_stmt_geostrunk_tests/voronoj19.testcase \ - sql_stmt_geostrunk_tests/voronoj20.testcase \ - sql_stmt_geostrunk_tests/concave_hull1.testcase \ - sql_stmt_geostrunk_tests/concave_hull2.testcase \ - sql_stmt_geostrunk_tests/concave_hull3.testcase \ - sql_stmt_geostrunk_tests/concave_hull4.testcase \ - sql_stmt_geostrunk_tests/concave_hull5.testcase \ - sql_stmt_geostrunk_tests/concave_hull6.testcase \ - sql_stmt_geostrunk_tests/concave_hull7.testcase \ - sql_stmt_geostrunk_tests/concave_hull8.testcase \ - sql_stmt_geostrunk_tests/concave_hull9.testcase \ - sql_stmt_geostrunk_tests/concave_hull10.testcase \ - sql_stmt_geostrunk_tests/concave_hull11.testcase \ - sql_stmt_geostrunk_tests/concave_hull12.testcase \ - sql_stmt_geostrunk_tests/concave_hull13.testcase \ - sql_stmt_geostrunk_tests/concave_hull14.testcase \ - sql_stmt_geostrunk_tests/concave_hull15.testcase \ - sql_stmt_geostrunk_tests/concave_hull16.testcase \ - sql_stmt_geostrunk_tests/concave_hull17.testcase \ - sql_stmt_geostrunk_tests/concave_hull18.testcase \ - sql_stmt_geostrunk_tests/concave_hull19.testcase \ - sql_stmt_tests/uncompressgeom1.testcase \ - sql_stmt_tests/uncompressgeom2.testcase \ - sql_stmt_tests/uncompressgeom3.testcase \ - sql_stmt_geos_tests/union10.testcase \ - sql_stmt_geos_tests/union11.testcase \ - sql_stmt_geos_tests/union12.testcase \ - sql_stmt_geos_tests/union13.testcase \ - sql_stmt_geos_tests/union14.testcase \ - sql_stmt_geos_tests/union15.testcase \ - sql_stmt_geos_tests/union16.testcase \ - sql_stmt_geos_tests/union17.testcase \ - sql_stmt_geos_tests/union18.testcase \ - sql_stmt_geos_tests/union19.testcase \ - sql_stmt_geos_tests/union1.testcase \ - sql_stmt_geos_tests/union20.testcase \ - sql_stmt_geos_tests/union21.testcase \ - sql_stmt_geos_tests/union22.testcase \ - sql_stmt_geos_tests/union23.testcase \ - sql_stmt_geos_tests/union24.testcase \ - sql_stmt_geos_tests/union25.testcase \ - sql_stmt_geos_tests/union26.testcase \ - sql_stmt_geos_tests/union27.testcase \ - sql_stmt_geos_tests/union28.testcase \ - sql_stmt_geos_tests/union29.testcase \ - sql_stmt_geos_tests/union2.testcase \ - sql_stmt_geos_tests/union3.testcase \ - sql_stmt_geos_tests/union4.testcase \ - sql_stmt_geos_tests/union5.testcase \ - sql_stmt_geos_tests/union6.testcase \ - sql_stmt_geos_tests/union7.testcase \ - sql_stmt_geos_tests/union8.testcase \ - sql_stmt_geos_tests/union9.testcase \ - sql_stmt_geosadvanced_tests/hexgrid1.testcase \ - sql_stmt_geosadvanced_tests/hexgrid2.testcase \ - sql_stmt_geosadvanced_tests/hexgrid3.testcase \ - sql_stmt_geosadvanced_tests/hexgrid4.testcase \ - sql_stmt_geosadvanced_tests/hexgrid5.testcase \ - sql_stmt_geosadvanced_tests/hexgrid6.testcase \ - sql_stmt_geosadvanced_tests/hexgrid7.testcase \ - sql_stmt_geosadvanced_tests/hexgrid8.testcase \ - sql_stmt_geosadvanced_tests/hexgrid9.testcase \ - sql_stmt_geosadvanced_tests/hexgrid10.testcase \ - sql_stmt_geosadvanced_tests/hexgrid11.testcase \ - sql_stmt_geosadvanced_tests/hexgrid12.testcase \ - sql_stmt_geosadvanced_tests/hexgrid13.testcase \ - sql_stmt_geosadvanced_tests/hexgrid14.testcase \ - sql_stmt_geosadvanced_tests/hexgrid15.testcase \ - sql_stmt_geosadvanced_tests/hexgrid16.testcase \ - sql_stmt_geosadvanced_tests/hexgrid17.testcase \ - sql_stmt_geosadvanced_tests/hexgrid18.testcase \ - sql_stmt_geosadvanced_tests/hexgrid19.testcase \ - sql_stmt_geosadvanced_tests/hexgrid20.testcase \ - sql_stmt_geosadvanced_tests/hexgrid21.testcase \ - sql_stmt_geosadvanced_tests/hexgrid22.testcase \ - sql_stmt_geosadvanced_tests/hexgrid23.testcase \ - sql_stmt_geosadvanced_tests/squaregrid1.testcase \ - sql_stmt_geosadvanced_tests/squaregrid2.testcase \ - sql_stmt_geosadvanced_tests/squaregrid3.testcase \ - sql_stmt_geosadvanced_tests/squaregrid4.testcase \ - sql_stmt_geosadvanced_tests/squaregrid5.testcase \ - sql_stmt_geosadvanced_tests/squaregrid6.testcase \ - sql_stmt_geosadvanced_tests/squaregrid7.testcase \ - sql_stmt_geosadvanced_tests/squaregrid8.testcase \ - sql_stmt_geosadvanced_tests/squaregrid9.testcase \ - sql_stmt_geosadvanced_tests/squaregrid10.testcase \ - sql_stmt_geosadvanced_tests/squaregrid11.testcase \ - sql_stmt_geosadvanced_tests/squaregrid12.testcase \ - sql_stmt_geosadvanced_tests/squaregrid13.testcase \ - sql_stmt_geosadvanced_tests/squaregrid14.testcase \ - sql_stmt_geosadvanced_tests/squaregrid15.testcase \ - sql_stmt_geosadvanced_tests/squaregrid16.testcase \ - sql_stmt_geosadvanced_tests/squaregrid17.testcase \ - sql_stmt_geosadvanced_tests/squaregrid18.testcase \ - sql_stmt_geosadvanced_tests/squaregrid19.testcase \ - sql_stmt_geosadvanced_tests/squaregrid20.testcase \ - sql_stmt_geosadvanced_tests/squaregrid21.testcase \ - sql_stmt_geosadvanced_tests/squaregrid22.testcase \ - sql_stmt_geosadvanced_tests/squaregrid23.testcase \ - sql_stmt_geosadvanced_tests/trianggrid1.testcase \ - sql_stmt_geosadvanced_tests/trianggrid2.testcase \ - sql_stmt_geosadvanced_tests/trianggrid3.testcase \ - sql_stmt_geosadvanced_tests/trianggrid4.testcase \ - sql_stmt_geosadvanced_tests/trianggrid5.testcase \ - sql_stmt_geosadvanced_tests/trianggrid6.testcase \ - sql_stmt_geosadvanced_tests/trianggrid7.testcase \ - sql_stmt_geosadvanced_tests/trianggrid8.testcase \ - sql_stmt_geosadvanced_tests/trianggrid9.testcase \ - sql_stmt_geosadvanced_tests/trianggrid10.testcase \ - sql_stmt_geosadvanced_tests/trianggrid11.testcase \ - sql_stmt_geosadvanced_tests/trianggrid12.testcase \ - sql_stmt_geosadvanced_tests/trianggrid13.testcase \ - sql_stmt_geosadvanced_tests/trianggrid14.testcase \ - sql_stmt_geosadvanced_tests/trianggrid15.testcase \ - sql_stmt_geosadvanced_tests/trianggrid16.testcase \ - sql_stmt_geosadvanced_tests/trianggrid17.testcase \ - sql_stmt_geosadvanced_tests/trianggrid18.testcase \ - sql_stmt_geosadvanced_tests/trianggrid19.testcase \ - sql_stmt_geosadvanced_tests/trianggrid20.testcase \ - sql_stmt_geosadvanced_tests/trianggrid21.testcase \ - sql_stmt_geosadvanced_tests/trianggrid22.testcase \ - sql_stmt_geosadvanced_tests/trianggrid23.testcase \ - sql_stmt_tests/us_ch_m.testcase \ - sql_stmt_tests/us_ft_m.testcase \ - sql_stmt_tests/us_in_m.testcase \ - sql_stmt_tests/us_mi_m.testcase \ - sql_stmt_tests/us_yd_m.testcase \ - sql_stmt_mathsql_tests/variance.testcase \ - sql_stmt_tests/wkb10.testcase \ - sql_stmt_tests/wkb11.testcase \ - sql_stmt_tests/wkb12.testcase \ - sql_stmt_tests/wkb13.testcase \ - sql_stmt_tests/wkb14.testcase \ - sql_stmt_tests/wkb15.testcase \ - sql_stmt_tests/wkb16.testcase \ - sql_stmt_tests/wkb17.testcase \ - sql_stmt_tests/wkb18.testcase \ - sql_stmt_tests/wkb19.testcase \ - sql_stmt_tests/wkb1.testcase \ - sql_stmt_tests/wkb20.testcase \ - sql_stmt_tests/wkb21.testcase \ - sql_stmt_tests/wkb22.testcase \ - sql_stmt_tests/wkb23.testcase \ - sql_stmt_tests/wkb24.testcase \ - sql_stmt_tests/wkb25.testcase \ - sql_stmt_tests/wkb26.testcase \ - sql_stmt_tests/wkb27.testcase \ - sql_stmt_tests/wkb28.testcase \ - sql_stmt_tests/wkb29.testcase \ - sql_stmt_tests/wkb2.testcase \ - sql_stmt_tests/wkb30.testcase \ - sql_stmt_tests/wkb31.testcase \ - sql_stmt_tests/wkb32.testcase \ - sql_stmt_tests/wkb33.testcase \ - sql_stmt_tests/wkb34.testcase \ - sql_stmt_tests/wkb35.testcase \ - sql_stmt_tests/wkb36.testcase \ - sql_stmt_tests/wkb3.testcase \ - sql_stmt_tests/wkb4.testcase \ - sql_stmt_tests/wkb5.testcase \ - sql_stmt_tests/wkb6.testcase \ - sql_stmt_tests/wkb7.testcase \ - sql_stmt_tests/wkb8.testcase \ - sql_stmt_tests/wkb9.testcase \ - sql_stmt_tests/wkbtosql1.testcase \ - sql_stmt_tests/wkbtosql2.testcase \ - sql_stmt_tests/wkbtosql3.testcase \ - sql_stmt_tests/wkttosql1.testcase \ - sql_stmt_tests/wkttosql2.testcase \ - sql_stmt_tests/wkttosql3.testcase \ - sql_stmt_tests/yd_m.testcase - -all: all-am - -.SUFFIXES: -.SUFFIXES: .c .lo .o .obj -$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) - @for dep in $?; do \ - case '$(am__configure_deps)' in \ - *$$dep*) \ - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ - && { if test -f $@; then exit 0; else break; fi; }; \ - exit 1;; \ - esac; \ - done; \ - echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/Makefile'; \ - $(am__cd) $(top_srcdir) && \ - $(AUTOMAKE) --foreign test/Makefile -.PRECIOUS: Makefile -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - @case '$?' in \ - *config.status*) \ - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ - *) \ - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ - esac; - -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - -$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -$(am__aclocal_m4_deps): - -clean-checkPROGRAMS: - @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ - echo " rm -f" $$list; \ - rm -f $$list || exit $$?; \ - test -n "$(EXEEXT)" || exit 0; \ - list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ - echo " rm -f" $$list; \ - rm -f $$list -check_bufovflw$(EXEEXT): $(check_bufovflw_OBJECTS) $(check_bufovflw_DEPENDENCIES) $(EXTRA_check_bufovflw_DEPENDENCIES) - @rm -f check_bufovflw$(EXEEXT) - $(LINK) $(check_bufovflw_OBJECTS) $(check_bufovflw_LDADD) $(LIBS) -check_create$(EXEEXT): $(check_create_OBJECTS) $(check_create_DEPENDENCIES) $(EXTRA_check_create_DEPENDENCIES) - @rm -f check_create$(EXEEXT) - $(LINK) $(check_create_OBJECTS) $(check_create_LDADD) $(LIBS) -check_dbf_load$(EXEEXT): $(check_dbf_load_OBJECTS) $(check_dbf_load_DEPENDENCIES) $(EXTRA_check_dbf_load_DEPENDENCIES) - @rm -f check_dbf_load$(EXEEXT) - $(LINK) $(check_dbf_load_OBJECTS) $(check_dbf_load_LDADD) $(LIBS) -check_endian$(EXEEXT): $(check_endian_OBJECTS) $(check_endian_DEPENDENCIES) $(EXTRA_check_endian_DEPENDENCIES) - @rm -f check_endian$(EXEEXT) - $(LINK) $(check_endian_OBJECTS) $(check_endian_LDADD) $(LIBS) -check_exif$(EXEEXT): $(check_exif_OBJECTS) $(check_exif_DEPENDENCIES) $(EXTRA_check_exif_DEPENDENCIES) - @rm -f check_exif$(EXEEXT) - $(LINK) $(check_exif_OBJECTS) $(check_exif_LDADD) $(LIBS) -check_extension$(EXEEXT): $(check_extension_OBJECTS) $(check_extension_DEPENDENCIES) $(EXTRA_check_extension_DEPENDENCIES) - @rm -f check_extension$(EXEEXT) - $(LINK) $(check_extension_OBJECTS) $(check_extension_LDADD) $(LIBS) -check_extra_relations_fncts$(EXEEXT): $(check_extra_relations_fncts_OBJECTS) $(check_extra_relations_fncts_DEPENDENCIES) $(EXTRA_check_extra_relations_fncts_DEPENDENCIES) - @rm -f check_extra_relations_fncts$(EXEEXT) - $(LINK) $(check_extra_relations_fncts_OBJECTS) $(check_extra_relations_fncts_LDADD) $(LIBS) -check_fdo1$(EXEEXT): $(check_fdo1_OBJECTS) $(check_fdo1_DEPENDENCIES) $(EXTRA_check_fdo1_DEPENDENCIES) - @rm -f check_fdo1$(EXEEXT) - $(LINK) $(check_fdo1_OBJECTS) $(check_fdo1_LDADD) $(LIBS) -check_fdo2$(EXEEXT): $(check_fdo2_OBJECTS) $(check_fdo2_DEPENDENCIES) $(EXTRA_check_fdo2_DEPENDENCIES) - @rm -f check_fdo2$(EXEEXT) - $(LINK) $(check_fdo2_OBJECTS) $(check_fdo2_LDADD) $(LIBS) -check_fdo3$(EXEEXT): $(check_fdo3_OBJECTS) $(check_fdo3_DEPENDENCIES) $(EXTRA_check_fdo3_DEPENDENCIES) - @rm -f check_fdo3$(EXEEXT) - $(LINK) $(check_fdo3_OBJECTS) $(check_fdo3_LDADD) $(LIBS) -check_fdo_bufovflw$(EXEEXT): $(check_fdo_bufovflw_OBJECTS) $(check_fdo_bufovflw_DEPENDENCIES) $(EXTRA_check_fdo_bufovflw_DEPENDENCIES) - @rm -f check_fdo_bufovflw$(EXEEXT) - $(LINK) $(check_fdo_bufovflw_OBJECTS) $(check_fdo_bufovflw_LDADD) $(LIBS) -check_gaia_utf8$(EXEEXT): $(check_gaia_utf8_OBJECTS) $(check_gaia_utf8_DEPENDENCIES) $(EXTRA_check_gaia_utf8_DEPENDENCIES) - @rm -f check_gaia_utf8$(EXEEXT) - $(LINK) $(check_gaia_utf8_OBJECTS) $(check_gaia_utf8_LDADD) $(LIBS) -check_gaia_util$(EXEEXT): $(check_gaia_util_OBJECTS) $(check_gaia_util_DEPENDENCIES) $(EXTRA_check_gaia_util_DEPENDENCIES) - @rm -f check_gaia_util$(EXEEXT) - $(LINK) $(check_gaia_util_OBJECTS) $(check_gaia_util_LDADD) $(LIBS) -check_geom_aux$(EXEEXT): $(check_geom_aux_OBJECTS) $(check_geom_aux_DEPENDENCIES) $(EXTRA_check_geom_aux_DEPENDENCIES) - @rm -f check_geom_aux$(EXEEXT) - $(LINK) $(check_geom_aux_OBJECTS) $(check_geom_aux_LDADD) $(LIBS) -check_geometry_cols$(EXEEXT): $(check_geometry_cols_OBJECTS) $(check_geometry_cols_DEPENDENCIES) $(EXTRA_check_geometry_cols_DEPENDENCIES) - @rm -f check_geometry_cols$(EXEEXT) - $(LINK) $(check_geometry_cols_OBJECTS) $(check_geometry_cols_LDADD) $(LIBS) -check_geoscvt_fncts$(EXEEXT): $(check_geoscvt_fncts_OBJECTS) $(check_geoscvt_fncts_DEPENDENCIES) $(EXTRA_check_geoscvt_fncts_DEPENDENCIES) - @rm -f check_geoscvt_fncts$(EXEEXT) - $(LINK) $(check_geoscvt_fncts_OBJECTS) $(check_geoscvt_fncts_LDADD) $(LIBS) -check_init$(EXEEXT): $(check_init_OBJECTS) $(check_init_DEPENDENCIES) $(EXTRA_check_init_DEPENDENCIES) - @rm -f check_init$(EXEEXT) - $(LINK) $(check_init_OBJECTS) $(check_init_LDADD) $(LIBS) -check_init2$(EXEEXT): $(check_init2_OBJECTS) $(check_init2_DEPENDENCIES) $(EXTRA_check_init2_DEPENDENCIES) - @rm -f check_init2$(EXEEXT) - $(LINK) $(check_init2_OBJECTS) $(check_init2_LDADD) $(LIBS) -check_math_funcs$(EXEEXT): $(check_math_funcs_OBJECTS) $(check_math_funcs_DEPENDENCIES) $(EXTRA_check_math_funcs_DEPENDENCIES) - @rm -f check_math_funcs$(EXEEXT) - $(LINK) $(check_math_funcs_OBJECTS) $(check_math_funcs_LDADD) $(LIBS) -check_mbrcache$(EXEEXT): $(check_mbrcache_OBJECTS) $(check_mbrcache_DEPENDENCIES) $(EXTRA_check_mbrcache_DEPENDENCIES) - @rm -f check_mbrcache$(EXEEXT) - $(LINK) $(check_mbrcache_OBJECTS) $(check_mbrcache_LDADD) $(LIBS) -check_recover_geom$(EXEEXT): $(check_recover_geom_OBJECTS) $(check_recover_geom_DEPENDENCIES) $(EXTRA_check_recover_geom_DEPENDENCIES) - @rm -f check_recover_geom$(EXEEXT) - $(LINK) $(check_recover_geom_OBJECTS) $(check_recover_geom_LDADD) $(LIBS) -check_relations_fncts$(EXEEXT): $(check_relations_fncts_OBJECTS) $(check_relations_fncts_DEPENDENCIES) $(EXTRA_check_relations_fncts_DEPENDENCIES) - @rm -f check_relations_fncts$(EXEEXT) - $(LINK) $(check_relations_fncts_OBJECTS) $(check_relations_fncts_LDADD) $(LIBS) -check_shp_load$(EXEEXT): $(check_shp_load_OBJECTS) $(check_shp_load_DEPENDENCIES) $(EXTRA_check_shp_load_DEPENDENCIES) - @rm -f check_shp_load$(EXEEXT) - $(LINK) $(check_shp_load_OBJECTS) $(check_shp_load_LDADD) $(LIBS) -check_shp_load_3d$(EXEEXT): $(check_shp_load_3d_OBJECTS) $(check_shp_load_3d_DEPENDENCIES) $(EXTRA_check_shp_load_3d_DEPENDENCIES) - @rm -f check_shp_load_3d$(EXEEXT) - $(LINK) $(check_shp_load_3d_OBJECTS) $(check_shp_load_3d_LDADD) $(LIBS) -check_spatialindex$(EXEEXT): $(check_spatialindex_OBJECTS) $(check_spatialindex_DEPENDENCIES) $(EXTRA_check_spatialindex_DEPENDENCIES) - @rm -f check_spatialindex$(EXEEXT) - $(LINK) $(check_spatialindex_OBJECTS) $(check_spatialindex_LDADD) $(LIBS) -check_sql_stmt$(EXEEXT): $(check_sql_stmt_OBJECTS) $(check_sql_stmt_DEPENDENCIES) $(EXTRA_check_sql_stmt_DEPENDENCIES) - @rm -f check_sql_stmt$(EXEEXT) - $(LINK) $(check_sql_stmt_OBJECTS) $(check_sql_stmt_LDADD) $(LIBS) -check_version$(EXEEXT): $(check_version_OBJECTS) $(check_version_DEPENDENCIES) $(EXTRA_check_version_DEPENDENCIES) - @rm -f check_version$(EXEEXT) - $(LINK) $(check_version_OBJECTS) $(check_version_LDADD) $(LIBS) -check_virtual_ovflw$(EXEEXT): $(check_virtual_ovflw_OBJECTS) $(check_virtual_ovflw_DEPENDENCIES) $(EXTRA_check_virtual_ovflw_DEPENDENCIES) - @rm -f check_virtual_ovflw$(EXEEXT) - $(LINK) $(check_virtual_ovflw_OBJECTS) $(check_virtual_ovflw_LDADD) $(LIBS) -check_virtualtable1$(EXEEXT): $(check_virtualtable1_OBJECTS) $(check_virtualtable1_DEPENDENCIES) $(EXTRA_check_virtualtable1_DEPENDENCIES) - @rm -f check_virtualtable1$(EXEEXT) - $(LINK) $(check_virtualtable1_OBJECTS) $(check_virtualtable1_LDADD) $(LIBS) -check_virtualtable2$(EXEEXT): $(check_virtualtable2_OBJECTS) $(check_virtualtable2_DEPENDENCIES) $(EXTRA_check_virtualtable2_DEPENDENCIES) - @rm -f check_virtualtable2$(EXEEXT) - $(LINK) $(check_virtualtable2_OBJECTS) $(check_virtualtable2_LDADD) $(LIBS) -check_virtualtable3$(EXEEXT): $(check_virtualtable3_OBJECTS) $(check_virtualtable3_DEPENDENCIES) $(EXTRA_check_virtualtable3_DEPENDENCIES) - @rm -f check_virtualtable3$(EXEEXT) - $(LINK) $(check_virtualtable3_OBJECTS) $(check_virtualtable3_LDADD) $(LIBS) -check_virtualtable4$(EXEEXT): $(check_virtualtable4_OBJECTS) $(check_virtualtable4_DEPENDENCIES) $(EXTRA_check_virtualtable4_DEPENDENCIES) - @rm -f check_virtualtable4$(EXEEXT) - $(LINK) $(check_virtualtable4_OBJECTS) $(check_virtualtable4_LDADD) $(LIBS) -check_virtualtable5$(EXEEXT): $(check_virtualtable5_OBJECTS) $(check_virtualtable5_DEPENDENCIES) $(EXTRA_check_virtualtable5_DEPENDENCIES) - @rm -f check_virtualtable5$(EXEEXT) - $(LINK) $(check_virtualtable5_OBJECTS) $(check_virtualtable5_LDADD) $(LIBS) -check_virtualtable6$(EXEEXT): $(check_virtualtable6_OBJECTS) $(check_virtualtable6_DEPENDENCIES) $(EXTRA_check_virtualtable6_DEPENDENCIES) - @rm -f check_virtualtable6$(EXEEXT) - $(LINK) $(check_virtualtable6_OBJECTS) $(check_virtualtable6_LDADD) $(LIBS) -check_xls_load$(EXEEXT): $(check_xls_load_OBJECTS) $(check_xls_load_DEPENDENCIES) $(EXTRA_check_xls_load_DEPENDENCIES) - @rm -f check_xls_load$(EXEEXT) - $(LINK) $(check_xls_load_OBJECTS) $(check_xls_load_LDADD) $(LIBS) -shape_3d$(EXEEXT): $(shape_3d_OBJECTS) $(shape_3d_DEPENDENCIES) $(EXTRA_shape_3d_DEPENDENCIES) - @rm -f shape_3d$(EXEEXT) - $(LINK) $(shape_3d_OBJECTS) $(shape_3d_LDADD) $(LIBS) -shape_cp1252$(EXEEXT): $(shape_cp1252_OBJECTS) $(shape_cp1252_DEPENDENCIES) $(EXTRA_shape_cp1252_DEPENDENCIES) - @rm -f shape_cp1252$(EXEEXT) - $(LINK) $(shape_cp1252_OBJECTS) $(shape_cp1252_LDADD) $(LIBS) -shape_primitives$(EXEEXT): $(shape_primitives_OBJECTS) $(shape_primitives_DEPENDENCIES) $(EXTRA_shape_primitives_DEPENDENCIES) - @rm -f shape_primitives$(EXEEXT) - $(LINK) $(shape_primitives_OBJECTS) $(shape_primitives_LDADD) $(LIBS) -shape_utf8_1$(EXEEXT): $(shape_utf8_1_OBJECTS) $(shape_utf8_1_DEPENDENCIES) $(EXTRA_shape_utf8_1_DEPENDENCIES) - @rm -f shape_utf8_1$(EXEEXT) - $(LINK) $(shape_utf8_1_OBJECTS) $(shape_utf8_1_LDADD) $(LIBS) -shape_utf8_1ex$(EXEEXT): $(shape_utf8_1ex_OBJECTS) $(shape_utf8_1ex_DEPENDENCIES) $(EXTRA_shape_utf8_1ex_DEPENDENCIES) - @rm -f shape_utf8_1ex$(EXEEXT) - $(LINK) $(shape_utf8_1ex_OBJECTS) $(shape_utf8_1ex_LDADD) $(LIBS) -shape_utf8_2$(EXEEXT): $(shape_utf8_2_OBJECTS) $(shape_utf8_2_DEPENDENCIES) $(EXTRA_shape_utf8_2_DEPENDENCIES) - @rm -f shape_utf8_2$(EXEEXT) - $(LINK) $(shape_utf8_2_OBJECTS) $(shape_utf8_2_LDADD) $(LIBS) - -mostlyclean-compile: - -rm -f *.$(OBJEXT) - -distclean-compile: - -rm -f *.tab.c - -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_bufovflw.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_create.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_dbf_load.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_endian.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_exif.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_extension.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_extra_relations_fncts.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_fdo1.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_fdo2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_fdo3.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_fdo_bufovflw.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gaia_utf8.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gaia_util.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_geom_aux.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_geometry_cols.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_geoscvt_fncts.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_init2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_math_funcs.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_mbrcache.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_recover_geom.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_relations_fncts.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_shp_load.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_shp_load_3d.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_spatialindex.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sql_stmt.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_version.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtual_ovflw.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtualtable1.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtualtable2.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtualtable3.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtualtable4.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtualtable5.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtualtable6.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_xls_load.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shape_3d.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shape_cp1252.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shape_primitives.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shape_utf8_1.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shape_utf8_1ex.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shape_utf8_2.Po@am__quote@ - -.c.o: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c $< - -.c.obj: -@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'` - -.c.lo: -@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< -@am__fastdepCC_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $< - -mostlyclean-libtool: - -rm -f *.lo - -clean-libtool: - -rm -rf .libs _libs - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - set x; \ - here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - shift; \ - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ - test -n "$$unique" || unique=$$empty_fix; \ - if test $$# -gt 0; then \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - "$$@" $$unique; \ - else \ - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ - $$unique; \ - fi; \ - fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - test -z "$(CTAGS_ARGS)$$unique" \ - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ - $$unique - -GTAGS: - here=`$(am__cd) $(top_builddir) && pwd` \ - && $(am__cd) $(top_srcdir) \ - && gtags -i $(GTAGS_ARGS) "$$here" - -distclean-tags: - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags - -check-TESTS: $(TESTS) - @failed=0; all=0; xfail=0; xpass=0; skip=0; \ - srcdir=$(srcdir); export srcdir; \ - list=' $(TESTS) '; \ - $(am__tty_colors); \ - if test -n "$$list"; then \ - for tst in $$list; do \ - if test -f ./$$tst; then dir=./; \ - elif test -f $$tst; then dir=; \ - else dir="$(srcdir)/"; fi; \ - if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xpass=`expr $$xpass + 1`; \ - failed=`expr $$failed + 1`; \ - col=$$red; res=XPASS; \ - ;; \ - *) \ - col=$$grn; res=PASS; \ - ;; \ - esac; \ - elif test $$? -ne 77; then \ - all=`expr $$all + 1`; \ - case " $(XFAIL_TESTS) " in \ - *[\ \ ]$$tst[\ \ ]*) \ - xfail=`expr $$xfail + 1`; \ - col=$$lgn; res=XFAIL; \ - ;; \ - *) \ - failed=`expr $$failed + 1`; \ - col=$$red; res=FAIL; \ - ;; \ - esac; \ - else \ - skip=`expr $$skip + 1`; \ - col=$$blu; res=SKIP; \ - fi; \ - echo "$${col}$$res$${std}: $$tst"; \ - done; \ - if test "$$all" -eq 1; then \ - tests="test"; \ - All=""; \ - else \ - tests="tests"; \ - All="All "; \ - fi; \ - if test "$$failed" -eq 0; then \ - if test "$$xfail" -eq 0; then \ - banner="$$All$$all $$tests passed"; \ - else \ - if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \ - banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \ - fi; \ - else \ - if test "$$xpass" -eq 0; then \ - banner="$$failed of $$all $$tests failed"; \ - else \ - if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \ - banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \ - fi; \ - fi; \ - dashes="$$banner"; \ - skipped=""; \ - if test "$$skip" -ne 0; then \ - if test "$$skip" -eq 1; then \ - skipped="($$skip test was not run)"; \ - else \ - skipped="($$skip tests were not run)"; \ - fi; \ - test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$skipped"; \ - fi; \ - report=""; \ - if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \ - report="Please report to $(PACKAGE_BUGREPORT)"; \ - test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \ - dashes="$$report"; \ - fi; \ - dashes=`echo "$$dashes" | sed s/./=/g`; \ - if test "$$failed" -eq 0; then \ - col="$$grn"; \ - else \ - col="$$red"; \ - fi; \ - echo "$${col}$$dashes$${std}"; \ - echo "$${col}$$banner$${std}"; \ - test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \ - test -z "$$report" || echo "$${col}$$report$${std}"; \ - echo "$${col}$$dashes$${std}"; \ - test "$$failed" -eq 0; \ - else :; fi - -distdir: $(DISTFILES) - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ - list='$(DISTFILES)'; \ - dist_files=`for file in $$list; do echo $$file; done | \ - sed -e "s|^$$srcdirstrip/||;t" \ - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ - case $$dist_files in \ - */*) $(MKDIR_P) `echo "$$dist_files" | \ - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ - sort -u` ;; \ - esac; \ - for file in $$dist_files; do \ - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ - if test -d $$d/$$file; then \ - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ - if test -d "$(distdir)/$$file"; then \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ - fi; \ - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ - else \ - test -f "$(distdir)/$$file" \ - || cp -p $$d/$$file "$(distdir)/$$file" \ - || exit 1; \ - fi; \ - done -check-am: all-am - $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) - $(MAKE) $(AM_MAKEFLAGS) check-TESTS -check: check-am -all-am: Makefile -installdirs: -install: install-am -install-exec: install-exec-am -install-data: install-data-am -uninstall: uninstall-am - -install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am - -installcheck: installcheck-am -install-strip: - if test -z '$(STRIP)'; then \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - install; \ - else \ - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ - fi -mostlyclean-generic: - -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - -distclean-generic: - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) - -maintainer-clean-generic: - @echo "This command is intended for maintainers to use" - @echo "it deletes files that may require special tools to rebuild." -clean: clean-am - -clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ - mostlyclean-am - -distclean: distclean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -distclean-am: clean-am distclean-compile distclean-generic \ - distclean-tags - -dvi: dvi-am - -dvi-am: - -html: html-am - -html-am: - -info: info-am - -info-am: - -install-data-am: - -install-dvi: install-dvi-am - -install-dvi-am: - -install-exec-am: - -install-html: install-html-am - -install-html-am: - -install-info: install-info-am - -install-info-am: - -install-man: - -install-pdf: install-pdf-am - -install-pdf-am: - -install-ps: install-ps-am - -install-ps-am: - -installcheck-am: - -maintainer-clean: maintainer-clean-am - -rm -rf ./$(DEPDIR) - -rm -f Makefile -maintainer-clean-am: distclean-am maintainer-clean-generic - -mostlyclean: mostlyclean-am - -mostlyclean-am: mostlyclean-compile mostlyclean-generic \ - mostlyclean-libtool - -pdf: pdf-am - -pdf-am: - -ps: ps-am - -ps-am: - -uninstall-am: - -.MAKE: check-am install-am install-strip - -.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \ - clean-checkPROGRAMS clean-generic clean-libtool ctags \ - distclean distclean-compile distclean-generic \ - distclean-libtool distclean-tags distdir dvi dvi-am html \ - html-am info info-am install install-am install-data \ - install-data-am install-dvi install-dvi-am install-exec \ - install-exec-am install-html install-html-am install-info \ - install-info-am install-man install-pdf install-pdf-am \ - install-ps install-ps-am install-strip installcheck \ - installcheck-am installdirs maintainer-clean \ - maintainer-clean-generic mostlyclean mostlyclean-compile \ - mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ - tags uninstall uninstall-am - - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/src/spatialite/test/WritingSQLTestCase.txt b/src/spatialite/test/WritingSQLTestCase.txt deleted file mode 100644 index 63b337d..0000000 --- a/src/spatialite/test/WritingSQLTestCase.txt +++ /dev/null @@ -1,195 +0,0 @@ -Building a SQL statement test case - -This probably requires that you're using the "autoconf" build system at the -moment. This is the case if you're running on Linux or some other Unix variant, -including Mac OS X. It is the case for some kinds of Windows builds too (using -MinGW / MSYS). - -I assume that you're mostly OK with building from subversion. If not, start -at http://www.gaia-gis.it/spatialite/sources.html. Make sure you read -Sandro's "short note" - it is at -http://www.gaia-gis.it/spatialite/how_to_build_libspatialite.html -if you missed it. - -Make sure you have all the dependencies. It is a bit of work but it will pay off -in the long run. - -Once you've got that far, its time to start with the testing. - -Step 1. Just get the tests building. -If you're in the build directory (i.e. where you ran the "./configure" and -"make" steps), you should be able to run "make check" and have the tests -build and run. Towards the end, it should report something like: -=================== -All 15 tests passed -=================== - -If any of them fail, please let us know ASAP. - -Step 2. After that works, its time to set up the coverage testing. Obviously we -want to understand which code isn't being tested, then write a test to check -that code, and finally make sure that the code is being tested. Fortunately, -there are nice tools to check which code is being run. On Unix / Linux, you -should have no problem obtaining "gcov" and "lcov" - they're probably available -using your package / build system. - -Clean up the build: -make distclean -and then run configure with the --enable-gcov=yes option: -./configure --enable-gcov=yes -You can add in any other options for configure at the same time (just as you -did for the initial build). Then build as normal: -make check - -You don't need to install (and probably don't want to install this version). - -Then zero out the coverage numbers: -make coverage-init - -and build the tests: -make check - -and finally do the coverage summary: -make coverage - -At the end, you should see something like: -Writing directory view page. -Overall coverage rate: - lines......: 64.9% (64946 of 100079 lines) - functions..: 16.4% (218 of 1329 functions) - branches...: 8.2% (1929 of 23468 branches) - -Step 3. Find some untested code. -The results of the testing are converted into nice HTML, which is in the -covresults/ directory. Point your web browser at covresults/index.html. -Untested functions are the most important, then untested branches. Don't worry -too much about untested lines. The colour coding should help. - -Step 4. Decide to do something about it. -This is really the only hard part. - -Step 5. Think about how to test the code using SQL. -Lets say you notice that the fnct_math_floor() function isn't being tested. -[It is in src/spatialite/spatialite.c if you're looking for it]. Now further -inspection shows its being mapped to the SQL floor function using: -sqlite3_create_function (db, "floor", 1, SQLITE_ANY, 0, fnct_math_floor, 0, 0); -So something like "SELECT floor(3.2);" would give us a test case. However -libspatialite doesn't include the command line tools, so we have a simple test -harness in the test directory called "check_sql_stmt". It basically loads test -cases from a directory (test/sql_stmt_tests/). Any file ending with .testcase -will be checked. - -A quick overview of the format: -* anything after a # character is a comment. -Line 1: the name of the test -Line 2: the database file to use. ":memory:" is usually the best option, but -you can load a pre-existing database if you need source data. -Line 3: the SQL to run. -Line 4: the number of rows of results you're expecting (not including the -header row) -Line 5: the number of columns of results you're expecting. -remaining lines: the results, one line per cell. - -So lets write such a file: -floor(3.2) # you can use the SQL if you're not feeling imaginative. -:memory: -SELECT floor(3.2); -1 # rows -1 # columns -floor(3.2) # this is the header row -3.0 # this is really the result - -and save it (in test/sql_stmt_tests/ - I called mine floor32.testcase, but you -can use anything that doesn't already exist and ends with .testcase). - -Now when you run "make check" you should see your new test being run, marked by -an entry just above the PASS: check_sql_stmt that looks like: -Test case: floor(3.2) - -[It won't change the total number of test cases reported by "make check" because -that is just the number of unique programs that were run, and this is an extra -test file within an existing program] - -Step 6. Re-run the coverage programs: -make coverage-init && make check && make coverage -and check the results with the browser. You should now see some green lines in -fnct_math_floor. However you might notice that there are still some red lines -(and red - and # marks on the left side, which indicate branches not taken). We -can see that we're testing the case where we have SQLITE_FLOAT input, but not -integer or some other inputs. - -Step 7. Write another test file: - -floor(integer) # integer input - this is just the name remember -:memory: -SELECT floor(3); # the SQL to run -1 # rows -1 # columns -floor(3) # this is the header row -3.0 # this is really the result - -Save it, again in test/sql_stmt_tests/ - I called mine floorint.testcase, but -anything will do. -Then run the tests again: -make check -and you should see your new test case as well: -Test case: floor(3.2) -Test case: floor(integer) - -Step 8. Repeat the coverage program runs: -make coverage-init && make check && make coverage -and check the results with the browser. You should now see even more green lines -in fnct_math_floor. However there is still the case for what happens if the -input is neither integer nor float. For example, what happens if we put in a -test entry. - -Step 9. Write another test file. -floor(null) # text input, expecting null output -:memory: -SELECT floor("some text"); # the SQL to run -1 # rows -1 # columns -floor("some text") # this is the header row -(NULL) # this is really the result - special case for null value - -and do the save / check / check coverage things again. - -You should see pretty much all of that function is now being tested. - -Step 10. Send the results to be added to libspatialite! -You can make a svn diff output if you're familiar with SVN, but you can just -send the new files that you're written (e.g. as a tar.gz or zip file) to me -(bradh@frogmouth.net) or to the spatialite-users mailing list. - - -Hints: -1. If your test results in a null value, use "(NULL)" as the expected cell -value. - -2. If your test result is a floating point value, and it might vary at the least -significant values, then you can make the test more reliable by limiting how -close things need to be. You do this by adding a : character, then the number -of characters to compare. So if you're looking for 2.7182818, but the result -could vary a bit, then write the result as 2.7182818:8. If you need to put a -colon (:) character in the value, you can use :0 at the end, to indicate that -the precision should be "absolute match". - -3. If you want to run the tests under valgrind, change into the test/ directory -and use: -libtool --mode=execute valgrind --track-origins=yes --tool=memcheck --num-callers=20 --leak-check=full --show-reachable=yes ./check_sql_stmt - -4. Don't worry about the not-taken branch for GAIA_UNUSED(). This is just to -avoid a warning, and isn't a problem. - -5. Don't worry about not being able to write a test for every possible scenario. -Even a little extra coverage helps. - -6. If your test shows a problem, think twice before fixing the test to match -the code. It could be that you've just found a bug, and that is really important -news - we have a reliable way to reproduce the problem, and a way to make sure -it doesn't sneak back in later. Please raise these issues separately. - -7. You can "hold" failing test cases by renaming the file (I usually add -".on-hold", so pow00.testcase becomes pow00.testcase.on-hold). This allows you -to keep testing without loosing the problem test cases. You can use that to -"remove" the test cases for fnct_math_floor() if you want to reproduce this. diff --git a/src/spatialite/test/asprintf4win.h b/src/spatialite/test/asprintf4win.h deleted file mode 100644 index 6a5b01f..0000000 --- a/src/spatialite/test/asprintf4win.h +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright (C) 2001 Federico Di Gregorio - * Copyright (C) 1991, 1994-1999, 2000, 2001 Free Software Foundation, Inc. - * - * This code has been derived from an example in the glibc2 documentation. - * This file is part of the psycopg module. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2, - * or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - */ - -/* - * asprintf.c -- asprintf() implementation for braindamaged operating systems - * $Id: asprintf.c 554 2004-10-30 00:19:27Z fog $ - */ - -#ifndef _WIN32 -#include -#endif -#include -#include -#ifndef _WIN32 -#include -#endif -#include - -#ifdef _WIN32 -#define vsnprintf _vsnprintf -#endif - -int -asprintf(char **buffer, char *fmt, ...) -{ - /* Guess we need no more than 200 chars of space. */ - int size = 200; - int nchars; - va_list ap; - - *buffer = (char*)malloc(size); - if (*buffer == NULL) return -1; - - /* Try to print in the allocated space. */ - va_start(ap, fmt); - nchars = vsnprintf(*buffer, size, fmt, ap); - va_end(ap); - - if (nchars >= size) - { - char *tmpbuff; - /* Reallocate buffer now that we know how much space is needed. */ - size = nchars+1; - tmpbuff = (char*)realloc(*buffer, size); - - - if (tmpbuff == NULL) { /* we need to free it*/ - free(*buffer); - return -1; - } - - *buffer=tmpbuff; - /* Try again. */ - va_start(ap, fmt); - nchars = vsnprintf(*buffer, size, fmt, ap); - va_end(ap); - } - - if (nchars < 0) return nchars; - return size; -} diff --git a/src/spatialite/test/check_bufovflw.c b/src/spatialite/test/check_bufovflw.c deleted file mode 100644 index fb287ab..0000000 --- a/src/spatialite/test/check_bufovflw.c +++ /dev/null @@ -1,1627 +0,0 @@ -/* - - check_bufovflw.c -- SpatiaLite Test Case - buffer overflows - - Author: Sandro Furieri - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include -#include - -#include "sqlite3.h" -#include "spatialite.h" -#include - -void cleanup_shapefile(const char *filename) -{ - char nam[1000]; - - if (!filename) { - return; - } - - snprintf(nam, 1000, "%s.dbf", filename); - unlink(nam); - snprintf(nam, 1000, "%s.prj", filename); - unlink(nam); - snprintf(nam, 1000, "%s.shp", filename); - unlink(nam); - snprintf(nam, 1000, "%s.shx", filename); - unlink(nam); -} - -int main (int argc, char *argv[]) -{ - int ret; - sqlite3 *handle; - sqlite3_stmt *stmt; - char *err_msg = NULL; - int suffix_len = 16 * 1024; /* 16 KB suffix */ - char *suffix; - char *xtable; - char *shape; - char *shape2; - char *shape2geom; - char *dbf; - char *table_a; - char *table_b; - char *topology; - char *auth; - char *kml1; - char *kml2; - char *resvalue; - char *pk; - char *name; - char *geom; - char *sql; - char **results; - const char *value; - int rows; - int columns; - char *string; - int len; - char frmt[2048]; - int row_count; - char *dumpname = __FILE__"dump"; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - -/* setting up very long table and column names */ - suffix = malloc(suffix_len); - memset(suffix, 'z', suffix_len); - suffix[suffix_len-1] = '\0'; - - table_a = sqlite3_mprintf("table_a_%s", suffix); - table_b = sqlite3_mprintf("table_b_%s", suffix); - shape2 = sqlite3_mprintf("shape_table_2_%s", suffix); - shape2geom = sqlite3_mprintf("shape_table_2_geom_%s", suffix); - shape = sqlite3_mprintf("shape_table_%s", suffix); - dbf = sqlite3_mprintf("dbf_tbale_%s", suffix); - pk = sqlite3_mprintf("id_%s", suffix); - name = sqlite3_mprintf("name_%s", suffix); - geom = sqlite3_mprintf("geom_%s", suffix); - topology = sqlite3_mprintf("topology_%s_", suffix); - -/* creating table "A" */ - sql = sqlite3_mprintf("CREATE TABLE %s (\n" - "%s INTEGER NOT NULL PRIMARY KEY,\n" - "%s TEXT NOT NULL)", table_a, pk, name); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE TABLE-A error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -3; - } - -/* adding a POINT Geometry to table "A" */ - sql = sqlite3_mprintf("SELECT AddGeometryColumn(%Q, %Q, " - "4326, 'POINT', 'XY')", table_a, geom); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -4; - } - -/* creating a Spatial Index on table "A" */ - sql = sqlite3_mprintf("SELECT CreateSpatialIndex(%Q, %Q)", table_a, geom); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "CreateSpatialIndex (TABLE-A) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -5; - } - -/* inserting few valid rows on table "A" */ - sql = sqlite3_mprintf("INSERT INTO %s (%s, %s, %s) VALUES " - "(1, 'alpha', MakePoint(1, 10, 4326))", table_a, pk, name, geom); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT INTO error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -6; - } - sql = sqlite3_mprintf("INSERT INTO %s (%s, %s, %s) VALUES " - "(2, 'beta', MakePoint(2, 20, 4326))", table_a, pk, name, geom); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT INTO error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -106; - } - sql = sqlite3_mprintf("INSERT INTO %s (%s, %s, %s) VALUES " - "(3, 'gamma', MakePoint(3, 30, 4326))", table_a, pk, name, geom); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT INTO error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -206; - } - sql = sqlite3_mprintf("INSERT INTO %s (%s, %s, %s) VALUES " - "(4, 'delta', MakePoint(4, 40, 4326))", table_a, pk, name, geom); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT INTO error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -306; - } - sql = sqlite3_mprintf("INSERT INTO %s (%s, %s, %s) VALUES " - "(5, 'epsilon', MakePoint(5, 50, 4326))", table_a, pk, name, geom); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT INTO error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -406; - } - -/* inserting few invalid geometries on table "A" */ - sql = sqlite3_mprintf("INSERT INTO %s (%s, %s, %s) VALUES " - "(6, 'zeta', MakePoint(10, 10))", table_a, pk, name, geom); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - sql = sqlite3_mprintf("%s.%s violates Geometry constraint " - "[geom-type or SRID not allowed]", table_a, geom); - ret = strcmp(sql, err_msg); - sqlite3_free(err_msg); - sqlite3_free(sql); - if (ret == 0) - goto test2; - sqlite3_close(handle); - return -7; - } -test2: - sql = sqlite3_mprintf("INSERT INTO %s (%s, %s, %s) VALUES " - "(7, 'eta', MakePointZ(20, 20, 20, 4326))", table_a, pk, name, geom); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - sql = sqlite3_mprintf("%s.%s violates Geometry constraint " - "[geom-type or SRID not allowed]", table_a, geom); - ret = strcmp(sql, err_msg); - sqlite3_free(err_msg); - sqlite3_free(sql); - if (ret == 0) - goto test3; - sqlite3_close(handle); - return -8; - } -test3: - sql = sqlite3_mprintf("INSERT INTO %s (%s, %s, %s) VALUES " - "(8, 'theta', GeomFromText('LINESTRING(0 0, 1 1)', 4326))", table_a, pk, name, geom); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - sql = sqlite3_mprintf("%s.%s violates Geometry constraint " - "[geom-type or SRID not allowed]", table_a, geom); - ret = strcmp(sql, err_msg); - sqlite3_free(err_msg); - sqlite3_free(sql); - if (ret == 0) - goto test4; - sqlite3_close(handle); - return -9; - } -test4: - -/* checking for validity (table A) */ - sql = sqlite3_mprintf("SELECT Count(*) FROM %s WHERE ROWID IN (" - "SELECT ROWID FROM SpatialIndex WHERE " - "f_table_name = %Q AND f_geometry_column = %Q " - "AND search_frame = BuildCircleMbr(3, 30, 1))", table_a, table_a, geom); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Test TABLE-A error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -10; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (TABLE-A): r=%d c=%d\n", rows, columns); - return -11; - } - value = results[1]; - if (strcmp ("1", value) != 0) { - fprintf (stderr, "Unexpected result (TABLE-A): %s\n", results[1]); - return -12; - } - sqlite3_free_table (results); - -/* creating table "B" */ - sql = sqlite3_mprintf("CREATE TABLE %s AS " - "SELECT * FROM %s", table_b, table_a); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE TABLE-B error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -13; - } - -/* recovering Geometry for table "B" */ - sql = sqlite3_mprintf("SELECT RecoverGeometryColumn(%Q, %Q, " - "4326, 'POINT', 'XY')", table_b, geom); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "RecoverGeometryColumn error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -14; - } - -/* creating a Spatial Index on table "B" */ - sql = sqlite3_mprintf("SELECT CreateSpatialIndex(%Q, %Q)", table_b, geom); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "CreateSpatialIndex (TABLE-B) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -15; - } - -/* checking for validity (table B) */ - sql = sqlite3_mprintf("SELECT Count(*) FROM %s WHERE ROWID IN (" - "SELECT ROWID FROM SpatialIndex WHERE " - "f_table_name = %Q AND f_geometry_column = %Q " - "AND search_frame = BuildCircleMbr(2, 20, 1))", table_b, table_b, geom); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Test TABLE-B error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -16; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (TABLE-B): r=%d c=%d\n", rows, columns); - return -17; - } - value = results[1]; - if (strcmp ("1", value) != 0) { - fprintf (stderr, "Unexpected result (TABLE-B): %s\n", results[1]); - return -18; - } - sqlite3_free_table (results); - -/* deleting one row from Table B */ - sql = sqlite3_mprintf("DELETE FROM %s WHERE %s = 2", table_b, pk); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE (TABLE-B) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -19; - } - -/* updating one row into Table B */ - sql = sqlite3_mprintf("UPDATE %s SET %s = MakePoint(-3, -30, 4326) " - "WHERE %s = 4", table_b, geom, pk); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "UPDATE (TABLE-B) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -20; - } - -/* invalid updates table "B" */ - sql = sqlite3_mprintf("UPDATE %s SET %s = MakePoint(-2, -20) " - "WHERE %s = 2", table_b, geom, pk); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - sql = sqlite3_mprintf("%s.%s violates Geometry constraint " - "[geom-type or SRID not allowed]", table_b, geom); - ret = strcmp(sql, err_msg); - sqlite3_free(sql); - if (ret == 0) - goto test5; - sqlite3_free(sql); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -21; - } -test5: - sql = sqlite3_mprintf("UPDATE %s SET %s = MakePointZ(-2, -20, 20, 4326) " - "WHERE %s = 2", table_b, geom, pk); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - sql = sqlite3_mprintf("%s.%s violates Geometry constraint " - "[geom-type or SRID not allowed]", table_b, geom); - ret = strcmp(sql, err_msg); - sqlite3_free(sql); - if (ret == 0) - goto test6; - sqlite3_free(sql); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -22; - } -test6: - sql = sqlite3_mprintf("UPDATE %s SET %s = GeomFromText('LINESTRING(0 0, 1 1)', 4326) " - "WHERE %s = 2", table_b, geom, pk); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - sql = sqlite3_mprintf("%s.%s violates Geometry constraint " - "[geom-type or SRID not allowed]", table_b, geom); - ret = strcmp(sql, err_msg); - sqlite3_free(sql); - if (ret == 0) - goto test7; - sqlite3_free(sql); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -23; - } -test7: - -/* VACUUM - thus invalidating TABLE-B Spatial Index */ - ret = sqlite3_exec (handle, "VACUUM", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VACUUM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -24; - } - -/* checking the Spatial Index on table "B" */ - sql = sqlite3_mprintf("SELECT CheckSpatialIndex(%Q, %Q)", table_b, geom); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "CheckSpatialIndex TABLE-B error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -25; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (check RTree TABLE-B): r=%d c=%d\n", rows, columns); - return -26; - } - value = results[1]; - if (strcmp ("0", value) != 0) { - fprintf (stderr, "Unexpected result (check RTree TABLE-B): %s\n", results[1]); - return -27; - } - sqlite3_free_table (results); - -/* checking the Spatial Index all table */ - ret = sqlite3_get_table (handle, "SELECT CheckSpatialIndex()", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CheckSpatialIndex ALL error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -28; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (check RTree ALL): r=%d c=%d\n", rows, columns); - return -29; - } - value = results[1]; - if (strcmp ("0", value) != 0) { - fprintf (stderr, "Unexpected result (check RTree ALL): %s\n", results[1]); - return -30; - } - sqlite3_free_table (results); - -/* recovering the Spatial Index all table */ - ret = sqlite3_get_table (handle, "SELECT RecoverSpatialIndex()", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RecoverSpatialIndex ALL error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -34; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (recover RTree ALL): r=%d c=%d\n", rows, columns); - return -35; - } - value = results[1]; - if (strcmp ("1", value) != 0) { - fprintf (stderr, "Unexpected result (recover RTree ALL): %s\n", results[1]); - return -36; - } - sqlite3_free_table (results); - -/* recovering the Spatial Index on table "B" */ - sql = sqlite3_mprintf("SELECT RecoverSpatialIndex(%Q, %Q)", table_b, geom); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "RecoverSpatialIndex TABLE-B error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -37; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (recover RTree TABLE-B): r=%d c=%d\n", rows, columns); - return -38; - } - value = results[1]; - if (strcmp ("1", value) != 0) { - fprintf (stderr, "Unexpected result (recover RTree TABLE-B): %s\n", results[1]); - return -39; - } - sqlite3_free_table (results); - -/* updating layer statistics for table "B" */ - sql = sqlite3_mprintf("SELECT UpdateLayerStatistics(%Q, %Q)", table_b, geom); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "UpdateLayerStatistics TABLE-B error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -40; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (statistics TABLE-B): r=%d c=%d\n", rows, columns); - return -41; - } - value = results[1]; - if (strcmp ("1", value) != 0) { - fprintf (stderr, "Unexpected result (statistics TABLE-B): %s\n", results[1]); - return -42; - } - sqlite3_free_table (results); - -/* updating layer statistics ALL */ - ret = sqlite3_get_table (handle, "SELECT UpdateLayerStatistics()", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "UpdateLayerStatistics ALL error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -43; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (statistics ALL): r=%d c=%d\n", rows, columns); - return -44; - } - value = results[1]; - if (strcmp ("1", value) != 0) { - fprintf (stderr, "Unexpected result (statistics ALL): %s\n", results[1]); - return -45; - } - sqlite3_free_table (results); - -/* disabling the Spatial Index on table "B" */ - sql = sqlite3_mprintf("SELECT DisableSpatialIndex(%Q, %Q)", table_b, geom); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "DisableSpatialIndex TABLE-B error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -46; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (disable TABLE-B): r=%d c=%d\n", rows, columns); - return -47; - } - value = results[1]; - if (strcmp ("1", value) != 0) { - fprintf (stderr, "Unexpected result (disable TABLE-B): %s\n", results[1]); - return -48; - } - sqlite3_free_table (results); - -/* creating an MbrCache on table "B" */ - sql = sqlite3_mprintf("SELECT CreateMbrCache(%Q, %Q)", table_b, geom); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "CreateMbrCache TABLE-B error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -49; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (disable TABLE-B): r=%d c=%d\n", rows, columns); - return -50; - } - value = results[1]; - if (strcmp ("1", value) != 0) { - fprintf (stderr, "Unexpected result (disable TABLE-B): %s\n", results[1]); - return -51; - } - sqlite3_free_table (results); - -/* checking the MbrCache on table "B" */ - sql = sqlite3_mprintf("SELECT Count(*) FROM %s WHERE ROWID IN (" - "SELECT ROWID FROM cache_%s_%s WHERE " - "mbr = FilterMbrIntersects(0, 0, 11, 11))", table_b, table_b, geom); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Test MbrCache error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -52; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (MbrCache): r=%d c=%d\n", rows, columns); - return -53; - } - value = results[1]; - if (strcmp ("1", value) != 0) { - fprintf (stderr, "Unexpected result (MbrCache): %s\n", results[1]); - return -54; - } - sqlite3_free_table (results); - -/* disabling the Spatial Index [MbrCache] on table "B" */ - sql = sqlite3_mprintf("SELECT DisableSpatialIndex(%Q, %Q)", table_b, geom); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "DisableSpatialIndex TABLE-B error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -55; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (disable TABLE-B): r=%d c=%d\n", rows, columns); - return -56; - } - value = results[1]; - if (strcmp ("1", value) != 0) { - fprintf (stderr, "Unexpected result (disable TABLE-B): %s\n", results[1]); - return -57; - } - sqlite3_free_table (results); - -/* discarding geometry from table "B" */ - sql = sqlite3_mprintf("SELECT DiscardGeometryColumn(%Q, %Q)", table_b, geom); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "DiscardGeometryColumn TABLE-B error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -58; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (discard TABLE-B): r=%d c=%d\n", rows, columns); - return -59; - } - value = results[1]; - if (strcmp ("1", value) != 0) { - fprintf (stderr, "Unexpected result (discard TABLE-B): %s\n", results[1]); - return -60; - } - sqlite3_free_table (results); - -#ifdef GEOS_ADVANCED /* GEOS advanced features */ - -/* creating a topology */ - sql = sqlite3_mprintf("SELECT CreateTopologyTables(%Q, 4326, 'XY')", topology); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "CreateTopologyTables error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -61; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (CreateTopologyTables): r=%d c=%d\n", rows, columns); - return -62; - } - value = results[1]; - if (strcmp ("1", value) != 0) { - fprintf (stderr, "Unexpected result (CreateTopologyTables): %s\n", results[1]); - return -63; - } - sqlite3_free_table (results); - -#endif /* end GEOS advanced features */ - - sqlite3_free(table_a); - sqlite3_free(table_b); - sqlite3_free(pk); - sqlite3_free(name); - sqlite3_free(geom); - sqlite3_free(topology); - -/* inserting a CRS (very long auth) */ - auth = sqlite3_mprintf("authority_%s", suffix); - sql = sqlite3_mprintf("INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, " - "ref_sys_name, proj4text, srtext) VALUES (NULL, %Q, 1122, " - "'silly CRS', 'silly proj def', 'silly wkt def')", auth); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT CRS error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -64; - } - -/* checking for validity (SRID from Auth) */ - sql = sqlite3_mprintf("SELECT SridFromAuthCrs(%Q, %d)", auth, 1122); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Test TABLE-A error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -65; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (SRID from Auth): r=%d c=%d\n", rows, columns); - return -66; - } - value = results[1]; - if (strcmp ("325834", value) != 0) { - fprintf (stderr, "Unexpected result (SRID from Auth): %s\n", results[1]); - return -67; - } - sqlite3_free_table (results); - -/* deleting the odd CRS */ - sql = "DELETE FROM spatial_ref_sys WHERE srid = 325834"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE (CRS) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -68; - } - - sqlite3_free(auth); - -/* checking AsKML (1) */ - kml1 = sqlite3_mprintf("kml_name_%s", suffix); - kml2 = sqlite3_mprintf("kml_description_%s", suffix); - strcpy(frmt, "%s%s" - "%1.0f,%1.0f" - "0,0 " - "%1.0f,%1.0f"); - strcat(frmt, "" - "0,0 0,%1.0f %1.0f,%1.0f %1.0f,0 0,0" - "" - "5,5 5,%1.0f %1.0f,%1.0f " - "%1.0f,5 5,5" - ""); - resvalue = sqlite3_mprintf(frmt, kml1, kml2, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128); - sql = sqlite3_mprintf("SELECT AsKml(%Q, %Q, GeomFromText('GEOMETRYCOLLECTION(" - "POINT(%1.0f %1.0f), LINESTRING(0 0, %1.0f %1.0f), " - "POLYGON((0 0, 0 %1.0f, %1.0f %1.0f, %1.0f 0, 0 0), " - "(5 5, 5 %1.0f, %1.0f %1.0f, %1.0f 5, 5 5)))'" - ", 4326), 300)", kml1, kml2, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Test AsKML#1 error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -69; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (AsKML#1): r=%d c=%d\n", rows, columns); - return -70; - } - value = results[1]; - if (strcmp (resvalue, value) != 0) { - fprintf (stderr, "Unexpected result (AsKML#1): %s\n", results[1]); - return -71; - } - sqlite3_free_table (results); - sqlite3_free(kml1); - sqlite3_free(kml2); - sqlite3_free(resvalue); - -/* checking AsKML (2) */ - kml1 = sqlite3_mprintf("%1.0f", 1e128); - kml2 = sqlite3_mprintf("%2.0f", 2e128); - strcpy(frmt, "%s%s" - "%1.0f,%1.0f,%1.0f" - "0,0,0 " - "%1.0f,%1.0f,%1.0f"); - strcat(frmt, "" - "0,0,0 0,%1.0f,0 %1.0f,%1.0f,%1.0f %1.0f,0,0 0,0,0" - "" - "5,5,0 5,%1.0f,0 %1.0f,%1.0f,%1.0f " - "%1.0f,5,0 5,5,0" - ""); - resvalue = sqlite3_mprintf(frmt, kml1, kml2, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - sql = sqlite3_mprintf("SELECT AsKml(%Q, %Q, GeomFromText('GEOMETRYCOLLECTIONZ(" - "POINTZ(%1.0f %1.0f %1.0f), LINESTRINGZ(0 0 0, %1.0f %1.0f %1.0f), " - "POLYGONZ((0 0 0, 0 %1.0f 0, %1.0f %1.0f %1.0f, %1.0f 0 0, 0 0 0), " - "(5 5 0, 5 %1.0f 0, %1.0f %1.0f %1.0f, %1.0f 5 0, 5 5 0)))'" - ", 4326), 300)", kml1, kml2, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Test AsKML#2 error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -72; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (AsKML#2): r=%d c=%d\n", rows, columns); - return -73; - } - value = results[1]; - if (strcmp (resvalue, value) != 0) { - fprintf (stderr, "Unexpected result (AsKML#2): %s\n", results[1]); - return -74; - } - sqlite3_free_table (results); - sqlite3_free(kml1); - sqlite3_free(kml2); - sqlite3_free(resvalue); - -/* checking AsGML (1) */ - strcpy(frmt, "" - "%1.0f,%1.0f" - "" - "0,0 %1.0f,%1.0f" - ""); - strcat(frmt, "" - "0,0 0,%1.0f %1.0f,%1.0f %1.0f,0 0,0" - "" - "5,5 5,%1.0f %1.0f,%1.0f %1.0f,5 5,5" - ""); - resvalue = sqlite3_mprintf(frmt, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - sql = sqlite3_mprintf("SELECT AsGml(GeomFromText('GEOMETRYCOLLECTION(" - "POINT(%1.0f %1.0f), LINESTRING(0 0, %1.0f %1.0f), " - "POLYGON((0 0, 0 %1.0f, %1.0f %1.0f, %1.0f 0, 0 0), " - "(5 5, 5 %1.0f, %1.0f %1.0f, %1.0f 5, 5 5)))'" - ", 4326), 300)", 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Test AsGML#1 error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -75; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (AsGML#1): r=%d c=%d\n", rows, columns); - return -76; - } - value = results[1]; - if (strcmp (resvalue, value) != 0) { - fprintf (stderr, "Unexpected result (AsGML#1): %s\n", results[1]); - return -77; - } - sqlite3_free_table (results); - sqlite3_free(resvalue); - -/* checking AsGML (2) */ - strcpy(frmt, "" - "%1.0f %1.0f %1.0f" - "" - "0 0 0 " - "%1.0f %1.0f %1.0f" - ""); - strcat(frmt, "" - "0 0 0 0 %1.0f 0 %1.0f %1.0f %1.0f %1.0f 0 0 0 0 0" - "" - "5 5 0 5 %1.0f 0 %1.0f %1.0f %1.0f " - "%1.0f 5 0 5 5 0" - ""); - resvalue = sqlite3_mprintf(frmt, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - sql = sqlite3_mprintf("SELECT AsGml(3, GeomFromText('GEOMETRYCOLLECTIONZ(" - "POINTZ(%1.0f %1.0f %1.0f), LINESTRINGZ(0 0 0, %1.0f %1.0f %1.0f), " - "POLYGONZ((0 0 0, 0 %1.0f 0, %1.0f %1.0f %1.0f, %1.0f 0 0, 0 0 0), " - "(5 5 0, 5 %1.0f 0, %1.0f %1.0f %1.0f, %1.0f 5 0, 5 5 0)))'" - ", 4326), 300)", 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Test AsGML#2 error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -78; - } - if (rows != 1 || columns != 1) { - fprintf (stderr, "Unexpected rows/columns (AsGML#2): r=%d c=%d\n", rows, columns); - return -79; - } - value = results[1]; - if (strcmp (resvalue, value) != 0) { - fprintf (stderr, "Unexpected result (AsGML#2): %s\n", results[1]); - return -80; - } - sqlite3_free_table (results); - sqlite3_free(resvalue); - -/* checking WKT 2D */ - resvalue = sqlite3_mprintf("GEOMETRYCOLLECTION(POINT(%1.0f %1.0f), " - "LINESTRING(0 0, %1.0f %1.0f), " - "POLYGON((0 0, %1.0f 0, %1.0f %1.0f, 0 %1.0f, 0 0), " - "(5 5, %1.0f 5, %1.0f %1.0f, 5 %1.0f, 5 5)))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128); - sql = sqlite3_mprintf("SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(" - "POINT(%1.0f %1.0f), LINESTRING(0 0, %1.0f %1.0f), " - "POLYGON((0 0, %1.0f 0, %1.0f %1.0f, 0 %1.0f, 0 0), " - "(5 5, %1.0f 5, %1.0f %1.0f, 5 %1.0f, 5 5)))'))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free(sql); - if (ret != SQLITE_OK) - { - fprintf (stderr, "WKT 2D: error \"%s\"\n", sqlite3_errmsg (handle)); - return -81; - } - string = NULL; - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) - { - value = (const char *)sqlite3_column_text(stmt, 0); - len = sqlite3_column_bytes(stmt, 0); - string = malloc(len + 1); - strcpy(string, value); - } - } - } - ret = sqlite3_finalize (stmt); - if (string == NULL) { - fprintf (stderr, "Unexpected NULL result (WKT 2D)\n"); - return -82; - } - if (strcmp (resvalue, string) != 0) { - fprintf (stderr, "Unexpected result (WKT 2D): %s\n", string); - return -83; - } - free(string); - sqlite3_free(resvalue); - -/* checking WKT 3D */ - resvalue = sqlite3_mprintf("GEOMETRYCOLLECTION Z(POINT Z(%1.0f %1.0f %1.0f), " - "LINESTRING Z(0 0 0, %1.0f %1.0f %1.0f), " - "POLYGON Z((0 0 0, %1.0f 0 0, %1.0f %1.0f %1.0f, 0 %1.0f 0, 0 0 0), " - "(5 5 0, %1.0f 5 0, %1.0f %1.0f %1.0f, 5 %1.0f 0, 5 5 0)))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - sql = sqlite3_mprintf("SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(" - "POINTZ(%1.0f %1.0f %1.0f), LINESTRINGZ(0 0 0, %1.0f %1.0f %1.0f), " - "POLYGONZ((0 0 0, %1.0f 0 0, %1.0f %1.0f %1.0f, 0 %1.0f 0, 0 0 0), " - "(5 5 0, %1.0f 5 0, %1.0f %1.0f %1.0f, 5 %1.0f 0, 5 5 0)))'))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free(sql); - if (ret != SQLITE_OK) - { - fprintf (stderr, "WKT 3D: error \"%s\"\n", sqlite3_errmsg (handle)); - return -84; - } - string = NULL; - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) - { - value = (const char *)sqlite3_column_text(stmt, 0); - len = sqlite3_column_bytes(stmt, 0); - string = malloc(len + 1); - strcpy(string, value); - } - } - } - ret = sqlite3_finalize (stmt); - if (string == NULL) { - fprintf (stderr, "Unexpected NULL result (WKT 3D)\n"); - return -85; - } - if (strcmp (resvalue, string) != 0) { - fprintf (stderr, "Unexpected result (WKT 3D): %s\n", string); - return -86; - } - free(string); - sqlite3_free(resvalue); - -/* checking WKT M */ - resvalue = sqlite3_mprintf("GEOMETRYCOLLECTION M(POINT M(%1.0f %1.0f %1.0f), " - "LINESTRING M(0 0 0, %1.0f %1.0f %1.0f), " - "POLYGON M((0 0 0, %1.0f 0 0, %1.0f %1.0f %1.0f, 0 %1.0f 0, 0 0 0), " - "(5 5 0, %1.0f 5 0, %1.0f %1.0f %1.0f, 5 %1.0f 0, 5 5 0)))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - sql = sqlite3_mprintf("SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(" - "POINTM(%1.0f %1.0f %1.0f), LINESTRINGM(0 0 0, %1.0f %1.0f %1.0f), " - "POLYGONM((0 0 0, %1.0f 0 0, %1.0f %1.0f %1.0f, 0 %1.0f 0, 0 0 0), " - "(5 5 0, %1.0f 5 0, %1.0f %1.0f %1.0f, 5 %1.0f 0, 5 5 0)))'))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free(sql); - if (ret != SQLITE_OK) - { - fprintf (stderr, "WKT M: error \"%s\"\n", sqlite3_errmsg (handle)); - return -87; - } - string = NULL; - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) - { - value = (const char *)sqlite3_column_text(stmt, 0); - len = sqlite3_column_bytes(stmt, 0); - string = malloc(len + 1); - strcpy(string, value); - } - } - } - ret = sqlite3_finalize (stmt); - if (string == NULL) { - fprintf (stderr, "Unexpected NULL result (WKT M)\n"); - return -88; - } - if (strcmp (resvalue, string) != 0) { - fprintf (stderr, "Unexpected result (WKT M): %s\n", string); - return -89; - } - free(string); - sqlite3_free(resvalue); - -/* checking WKT 3D M */ - resvalue = sqlite3_mprintf("GEOMETRYCOLLECTION ZM(POINT ZM(%1.0f %1.0f %1.0f %1.0f), " - "LINESTRING ZM(0 0 0 0, %1.0f %1.0f %1.0f %1.0f), " - "POLYGON ZM((0 0 0 0, %1.0f 0 0 0, %1.0f %1.0f %1.0f %1.0f, 0 %1.0f 0 0, 0 0 0 0), " - "(5 5 0 0, %1.0f 5 0 0, %1.0f %1.0f %1.0f %1.0f, 5 %1.0f 0 0, 5 5 0 0)))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - sql = sqlite3_mprintf("SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(" - "POINTZM(%1.0f %1.0f %1.0f %1.0f), LINESTRINGZM(0 0 0 0, %1.0f %1.0f %1.0f %1.0f), " - "POLYGONZM((0 0 0 0, %1.0f 0 0 0, %1.0f %1.0f %1.0f %1.0f, 0 %1.0f 0 0, 0 0 0 0), " - "(5 5 0 0, %1.0f 5 0 0, %1.0f %1.0f %1.0f %1.0f, 5 %1.0f 0 0, 5 5 0 0)))'))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free(sql); - if (ret != SQLITE_OK) - { - fprintf (stderr, "WKT 3D M: error \"%s\"\n", sqlite3_errmsg (handle)); - return -90; - } - string = NULL; - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) - { - value = (const char *)sqlite3_column_text(stmt, 0); - len = sqlite3_column_bytes(stmt, 0); - string = malloc(len + 1); - strcpy(string, value); - } - } - } - ret = sqlite3_finalize (stmt); - if (string == NULL) { - fprintf (stderr, "Unexpected NULL result (WKT 3D M)\n"); - return -91; - } - if (strcmp (resvalue, string) != 0) { - fprintf (stderr, "Unexpected result (WKT 3D M): %s\n", string); - return -92; - } - free(string); - sqlite3_free(resvalue); - -/* checking EWKT 2D */ - resvalue = sqlite3_mprintf("SRID=4326;GEOMETRYCOLLECTION(POINT(%1.0f %1.0f)," - "LINESTRING(0 0,%1.0f %1.0f)," - "POLYGON((0 0,%1.0f 0,%1.0f %1.0f,0 %1.0f,0 0)," - "(5 5,%1.0f 5,%1.0f %1.0f,5 %1.0f,5 5)))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128); - sql = sqlite3_mprintf("SELECT AsEWKT(GeomFromText('GEOMETRYCOLLECTION(" - "POINT(%1.0f %1.0f), LINESTRING(0 0, %1.0f %1.0f), " - "POLYGON((0 0, %1.0f 0, %1.0f %1.0f, 0 %1.0f, 0 0), " - "(5 5, %1.0f 5, %1.0f %1.0f, 5 %1.0f, 5 5)))', 4326))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free(sql); - if (ret != SQLITE_OK) - { - fprintf (stderr, "EWKT 2D: error \"%s\"\n", sqlite3_errmsg (handle)); - return -93; - } - string = NULL; - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) - { - value = (const char *)sqlite3_column_text(stmt, 0); - len = sqlite3_column_bytes(stmt, 0); - string = malloc(len + 1); - strcpy(string, value); - } - } - } - ret = sqlite3_finalize (stmt); - if (string == NULL) { - fprintf (stderr, "Unexpected NULL result (EWKT 2D)\n"); - return -94; - } - if (strcmp (resvalue, string) != 0) { - fprintf (stderr, "Unexpected result (EWKT 2D): %s\n", string); - return -95; - } - free(string); - sqlite3_free(resvalue); - -/* checking EWKT 3D */ - resvalue = sqlite3_mprintf("SRID=4326;GEOMETRYCOLLECTION(POINT(%1.0f %1.0f %1.0f)," - "LINESTRING(0 0 0,%1.0f %1.0f %1.0f)," - "POLYGON((0 0 0,%1.0f 0 0,%1.0f %1.0f %1.0f,0 %1.0f 0,0 0 0)," - "(5 5 0,%1.0f 5 0,%1.0f %1.0f %1.0f,5 %1.0f 0,5 5 0)))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - sql = sqlite3_mprintf("SELECT AsEWKT(GeomFromText('GEOMETRYCOLLECTIONZ(" - "POINTZ(%1.0f %1.0f %1.0f), LINESTRINGZ(0 0 0, %1.0f %1.0f %1.0f), " - "POLYGONZ((0 0 0, %1.0f 0 0, %1.0f %1.0f %1.0f, 0 %1.0f 0, 0 0 0), " - "(5 5 0, %1.0f 5 0, %1.0f %1.0f %1.0f, 5 %1.0f 0, 5 5 0)))', 4326))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free(sql); - if (ret != SQLITE_OK) - { - fprintf (stderr, "EWKT 3D: error \"%s\"\n", sqlite3_errmsg (handle)); - return -96; - } - string = NULL; - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) - { - value = (const char *)sqlite3_column_text(stmt, 0); - len = sqlite3_column_bytes(stmt, 0); - string = malloc(len + 1); - strcpy(string, value); - } - } - } - ret = sqlite3_finalize (stmt); - if (string == NULL) { - fprintf (stderr, "Unexpected NULL result (EWKT 3D)\n"); - return -97; - } - if (strcmp (resvalue, string) != 0) { - fprintf (stderr, "Unexpected result (EWKT 3D): %s\n", string); - return -98; - } - free(string); - sqlite3_free(resvalue); - -/* checking EWKT M */ - resvalue = sqlite3_mprintf("SRID=4326;GEOMETRYCOLLECTIONM(POINTM(%1.0f %1.0f %1.0f)," - "LINESTRINGM(0 0 0,%1.0f %1.0f %1.0f)," - "POLYGONM((0 0 0,%1.0f 0 0,%1.0f %1.0f %1.0f,0 %1.0f 0,0 0 0)," - "(5 5 0,%1.0f 5 0,%1.0f %1.0f %1.0f,5 %1.0f 0,5 5 0)))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - sql = sqlite3_mprintf("SELECT AsEWKT(GeomFromText('GEOMETRYCOLLECTIONM(" - "POINTM(%1.0f %1.0f %1.0f), LINESTRINGM(0 0 0, %1.0f %1.0f %1.0f), " - "POLYGONM((0 0 0, %1.0f 0 0, %1.0f %1.0f %1.0f, 0 %1.0f 0, 0 0 0), " - "(5 5 0, %1.0f 5 0, %1.0f %1.0f %1.0f, 5 %1.0f 0, 5 5 0)))', 4326))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free(sql); - if (ret != SQLITE_OK) - { - fprintf (stderr, "EWKT M: error \"%s\"\n", sqlite3_errmsg (handle)); - return -99; - } - string = NULL; - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) - { - value = (const char *)sqlite3_column_text(stmt, 0); - len = sqlite3_column_bytes(stmt, 0); - string = malloc(len + 1); - strcpy(string, value); - } - } - } - ret = sqlite3_finalize (stmt); - if (string == NULL) { - fprintf (stderr, "Unexpected NULL result (EWKT M)\n"); - return -100; - } - if (strcmp (resvalue, string) != 0) { - fprintf (stderr, "Unexpected result (EWKT M): %s\n", string); - return -101; - } - free(string); - sqlite3_free(resvalue); - -/* checking EWKT 3D M */ - resvalue = sqlite3_mprintf("SRID=4326;GEOMETRYCOLLECTION(POINT(%1.0f %1.0f %1.0f %1.0f)," - "LINESTRING(0 0 0 0,%1.0f %1.0f %1.0f %1.0f)," - "POLYGON((0 0 0 0,%1.0f 0 0 0,%1.0f %1.0f %1.0f %1.0f,0 %1.0f 0 0,0 0 0 0)," - "(5 5 0 0,%1.0f 5 0 0,%1.0f %1.0f %1.0f %1.0f,5 %1.0f 0 0,5 5 0 0)))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128,1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - sql = sqlite3_mprintf("SELECT AsEWKT(GeomFromText('GEOMETRYCOLLECTIONZM(" - "POINTZM(%1.0f %1.0f %1.0f %1.0f), LINESTRINGZM(0 0 0 0, %1.0f %1.0f %1.0f %1.0f), " - "POLYGONZM((0 0 0 0, %1.0f 0 0 0, %1.0f %1.0f %1.0f %1.0f, 0 %1.0f 0 0, 0 0 0 0), " - "(5 5 0 0, %1.0f 5 0 0, %1.0f %1.0f %1.0f %1.0f, 5 %1.0f 0 0, 5 5 0 0)))', 4326))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128,1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free(sql); - if (ret != SQLITE_OK) - { - fprintf (stderr, "EWKT 3D M: error \"%s\"\n", sqlite3_errmsg (handle)); - return -102; - } - string = NULL; - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) - { - value = (const char *)sqlite3_column_text(stmt, 0); - len = sqlite3_column_bytes(stmt, 0); - string = malloc(len + 1); - strcpy(string, value); - } - } - } - ret = sqlite3_finalize (stmt); - if (string == NULL) { - fprintf (stderr, "Unexpected NULL result (EWKT 3D M)\n"); - return -103; - } - if (strcmp (resvalue, string) != 0) { - fprintf (stderr, "Unexpected result (EWKT 3D M): %s\n", string); - return -104; - } - free(string); - sqlite3_free(resvalue); - -/* checking WKT Strict */ - resvalue = sqlite3_mprintf("GEOMETRYCOLLECTION(POINT(%1.0f %1.0f)," - "LINESTRING(0 0,%1.0f %1.0f)," - "POLYGON((0 0,%1.0f 0,%1.0f %1.0f,0 %1.0f,0 0)," - "(5 5,%1.0f 5,%1.0f %1.0f,5 %1.0f,5 5)))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128); - sql = sqlite3_mprintf("SELECT AsWKT(GeomFromText('GEOMETRYCOLLECTIONZM(" - "POINTZM(%1.0f %1.0f %1.0f %1.0f), LINESTRINGZM(0 0 0 0, %1.0f %1.0f %1.0f %1.0f), " - "POLYGONZM((0 0 0 0, %1.0f 0 0 0, %1.0f %1.0f %1.0f %1.0f, 0 %1.0f 0 0, 0 0 0 0), " - "(5 5 0 0, %1.0f 5 0 0, %1.0f %1.0f %1.0f %1.0f, 5 %1.0f 0 0, 5 5 0 0)))', 4326))", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128,1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free(sql); - if (ret != SQLITE_OK) - { - fprintf (stderr, "WKT Strict: error \"%s\"\n", sqlite3_errmsg (handle)); - return -105; - } - string = NULL; - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) - { - value = (const char *)sqlite3_column_text(stmt, 0); - len = sqlite3_column_bytes(stmt, 0); - string = malloc(len + 1); - strcpy(string, value); - } - } - } - ret = sqlite3_finalize (stmt); - if (string == NULL) { - fprintf (stderr, "Unexpected NULL result (WKT Strict)\n"); - return -106; - } - if (strcmp (resvalue, string) != 0) { - fprintf (stderr, "Unexpected result (WKT Strict): %s\n", string); - return -107; - } - free(string); - sqlite3_free(resvalue); - -/* checking GeoJSON 2D */ - resvalue = sqlite3_mprintf("{\"type\":\"GeometryCollection\",\"crs\":{\"type\":\"name\",\"properties\":" - "{\"name\":\"urn:ogc:def:crs:EPSG:4326\"}},\"bbox\":[0,0,%1.0f,%1.0f]," - "\"geometries\":[{\"type\":\"Point\",\"coordinates\":[%1.0f,%1.0f]}," - "{\"type\":\"LineString\",\"coordinates\":[[0,0],[%1.0f,%1.0f]]}," - "{\"type\":\"Polygon\",\"coordinates\":" - "[[[0,0],[%1.0f,0],[%1.0f,%1.0f],[0,%1.0f],[0,0]]," - "[[5,5],[%1.0f,5],[%1.0f,%1.0f],[5,%1.0f],[5,5]]]}]}", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - sql = sqlite3_mprintf("SELECT AsGeoJSON(GeomFromText('GEOMETRYCOLLECTION(" - "POINT(%1.0f %1.0f), LINESTRING(0 0, %1.0f %1.0f), " - "POLYGON((0 0, %1.0f 0, %1.0f %1.0f, 0 %1.0f, 0 0), " - "(5 5, %1.0f 5, %1.0f %1.0f, 5 %1.0f, 5 5)))', 4326), 2, 5)", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free(sql); - if (ret != SQLITE_OK) - { - fprintf (stderr, "GeoJSON 2D: error \"%s\"\n", sqlite3_errmsg (handle)); - return -108; - } - string = NULL; - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) - { - value = (const char *)sqlite3_column_text(stmt, 0); - len = sqlite3_column_bytes(stmt, 0); - string = malloc(len + 1); - strcpy(string, value); - } - } - } - ret = sqlite3_finalize (stmt); - if (string == NULL) { - fprintf (stderr, "Unexpected NULL result (GeoJSON 2D)\n"); - return -109; - } - if (strcmp (resvalue, string) != 0) { - fprintf (stderr, "Unexpected result (GeoJSON 2D): %s\n", string); - return -110; - } - free(string); - sqlite3_free(resvalue); - -/* checking GeoJSON 3D */ - resvalue = sqlite3_mprintf("{\"type\":\"GeometryCollection\",\"crs\":{\"type\":\"name\",\"properties\":" - "{\"name\":\"urn:ogc:def:crs:EPSG:4326\"}},\"bbox\":[0,0,%1.0f,%1.0f]," - "\"geometries\":[{\"type\":\"Point\",\"coordinates\":[%1.0f,%1.0f,%1.0f]}," - "{\"type\":\"LineString\",\"coordinates\":[[0,0,0],[%1.0f,%1.0f,%1.0f]]}," - "{\"type\":\"Polygon\",\"coordinates\":" - "[[[0,0,0],[%1.0f,0,0],[%1.0f,%1.0f,%1.0f],[0,%1.0f,0],[0,0,0]]," - "[[5,5,0],[%1.0f,5,0],[%1.0f,%1.0f,%1.0f],[5,%1.0f,0],[5,5,0]]]}]}", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - sql = sqlite3_mprintf("SELECT AsGeoJSON(GeomFromText('GEOMETRYCOLLECTIONZ(" - "POINTZ(%1.0f %1.0f %1.0f), LINESTRINGZ(0 0 0, %1.0f %1.0f %1.0f), " - "POLYGONZ((0 0 0, %1.0f 0 0, %1.0f %1.0f %1.0f, 0 %1.0f 0, 0 0 0), " - "(5 5 0, %1.0f 5 0, %1.0f %1.0f %1.0f, 5 %1.0f 0, 5 5 0)))', 4326), 2, 5)", - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, - 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); - ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); - sqlite3_free(sql); - if (ret != SQLITE_OK) - { - fprintf (stderr, "GeoJSON 3D: error \"%s\"\n", sqlite3_errmsg (handle)); - return -111; - } - string = NULL; - while (1) - { - ret = sqlite3_step (stmt); - if (ret == SQLITE_DONE) - break; - if (ret == SQLITE_ROW) - { - if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) - { - value = (const char *)sqlite3_column_text(stmt, 0); - len = sqlite3_column_bytes(stmt, 0); - string = malloc(len + 1); - strcpy(string, value); - } - } - } - ret = sqlite3_finalize (stmt); - if (string == NULL) { - fprintf (stderr, "Unexpected NULL result (GeoJSON 3D)\n"); - return -112; - } - if (strcmp (resvalue, string) != 0) { - fprintf (stderr, "Unexpected result (GeoJSON 3D): %s\n", string); - return -113; - } - free(string); - sqlite3_free(resvalue); - -/* checking gaiaDequotedSql */ - resvalue = gaiaDequotedSql("'a''b''c''d''e''f''ghiklmnopqrst''u''vwy''z'"); - if (strcmp(resvalue, "a'b'c'd'e'f'ghiklmnopqrst'u'vwy'z") != 0) { - fprintf (stderr, "Unexpected result (Dequote 1): %s\n", resvalue); - return -114; - } - free(resvalue); - - resvalue = gaiaDequotedSql("\"abcdef\"\"ghijkmlmnopqsrt\"\"uvwy\"\"z\""); - if (strcmp(resvalue, "abcdef\"ghijkmlmnopqsrt\"uvwy\"z") != 0) { - fprintf (stderr, "Unexpected result (Dequote 2): %s\n", resvalue); - return -115; - } - free(resvalue); - - resvalue = gaiaDequotedSql("abcdefghijkmlnopqrtsuvwyz"); - if (strcmp(resvalue, "abcdefghijkmlnopqrtsuvwyz") != 0) { - fprintf (stderr, "Unexpected result (Dequote 3): %s\n", resvalue); - return -116; - } - free(resvalue); - - resvalue = gaiaDequotedSql("'a''b''c''d''e''f''ghiklmnopqrst''u'vwy''z'"); - if (resvalue != NULL) { - fprintf (stderr, "Unexpected result (Dequote 4): %s\n", resvalue); - return -117; - } - -/* checking load_shapefile */ - ret = load_shapefile (handle, "./shp/gaza/route", shape, "UTF-8", 4326, - NULL, 1, 0, 1, 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error: %s\n", err_msg); - sqlite3_close(handle); - return -118; - } - if (row_count != 2) { - fprintf (stderr, "unexpected row count for load_shapefile: %i\n", row_count); - sqlite3_close(handle); - return -119; - } -/* checking dump_shapefile */ - ret = dump_shapefile (handle, shape, "Geometry", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error: %s\n", err_msg); - sqlite3_close(handle); - return -120; - } - cleanup_shapefile(dumpname); - if (row_count != 2) { - fprintf (stderr, "unexpected dump row count for shapefile: %i\n", row_count); - sqlite3_close(handle); - return -121; - } -/* checking dump_kml */ - ret = dump_kml (handle, shape, "geometry", dumpname, "sub_type", "name", 10); - if (!ret) { - fprintf (stderr, "dump_kml() error: %s\n", err_msg); - sqlite3_close(handle); - return -122; - } - unlink(dumpname); -/* checking dump_geojson */ - ret = dump_geojson(handle, shape, "col1", dumpname, 10, 5); - if (!ret) { - fprintf (stderr, "dump_geojson() error: %s\n", err_msg); - sqlite3_close(handle); - return -123; - } - unlink(dumpname); -/* dropping virtual geometry */ - sql = sqlite3_mprintf("SELECT DropVirtualGeometry(%Q)", shape); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP VIRTUAL GEOMETRT /shp/gaza/barrier error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -124; - } - sqlite3_free(shape); - -/* checking load_dbf */ - ret = load_dbf (handle, "./shapetest1.dbf", dbf, "UTF-8", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_dbf() error: %s\n", err_msg); - sqlite3_close(handle); - return -125; - } - if (row_count != 2) { - fprintf (stderr, "unexpected row count for load_dbf: %i\n", row_count); - sqlite3_close(handle); - return -126; - } -/* checking dump_dbf */ - ret = dump_dbf (handle, dbf, dumpname, "CP1252", err_msg); - if (!ret) { - fprintf (stderr, "dump_dbf() error for points: %s\n", err_msg); - sqlite3_close(handle); - return -127; - } - unlink(dumpname); - sqlite3_free(dbf); - -/* checking load_shapefile (2) */ - ret = load_shapefile (handle, "./shp/merano-3d/polygons", shape2, "CP1252", 25832, - shape2geom, 0, 1, 1, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() #2 error: %s\n", err_msg); - sqlite3_close(handle); - return -128; - } - if (row_count != 10) { - fprintf (stderr, "unexpected row count for load_shapefile #2: %i\n", row_count); - sqlite3_close(handle); - return -129; - } - xtable = gaiaDoubleQuotedSql(shape2); - sql = sqlite3_mprintf("INSERT INTO \"%s\" (FEATURE_ID, DATUM, HAUSNR) " - "VALUES (1250000, 0.1, 'alpha')", xtable); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT polygons (1) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -130; - } - sql = sqlite3_mprintf("INSERT INTO \"%s\" (FEATURE_ID, DATUM, HAUSNR) " - "VALUES (1250000, 0.1, 'alpha')", xtable); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT polygons (1) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -131; - } - sql = sqlite3_mprintf("INSERT INTO \"%s\" (FEATURE_ID, DATUM, TEXT_I) " - "VALUES (1250000, 0.1, 'alpha')", xtable); - free(xtable); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT polygons (1) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -132; - } - - remove_duplicated_rows(handle, shape2); - elementary_geometries (handle, shape2, shape2geom, "elem_poly", "pk_elem", "mul_id"); - sqlite3_free(shape2); - sqlite3_free(shape2geom); - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -133; - } - - spatialite_cleanup(); - free(suffix); - - return 0; -} diff --git a/src/spatialite/test/check_create.c b/src/spatialite/test/check_create.c deleted file mode 100644 index 5ec93e5..0000000 --- a/src/spatialite/test/check_create.c +++ /dev/null @@ -1,143 +0,0 @@ -/* - - check_create.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - sqlite3_int64 log_pk; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - ret = sqlite3_exec (handle, "SELECT HasProj()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "HasProj() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -3; - } - ret = sqlite3_exec (handle, "SELECT HasGeos()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "HasGeos() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -4; - } - ret = sqlite3_exec (handle, "SELECT HasGeosAdvanced()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "HasGeosAdvanced() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -5; - } - ret = sqlite3_exec (handle, "SELECT HasIconv()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "HasIconv() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -6; - } - ret = sqlite3_exec (handle, "SELECT HasMathSql()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "HasMathSql() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -7; - } - ret = sqlite3_exec (handle, "SELECT HasGeoCallbacks()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "HasGeoCallbacks() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -8; - } - ret = sqlite3_exec (handle, "SELECT HasFreeXL()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "HasFreeXL() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -9; - } - ret = sqlite3_exec (handle, "SELECT HasEpsg()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "HasEpsg() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -10; - } - - gaiaInsertIntoSqlLog (handle, "test", "sql_statement_ok", &log_pk); - gaiaUpdateSqlLog (handle, log_pk, 1, NULL); - gaiaInsertIntoSqlLog (handle, "test", "sql_statement_no", &log_pk); - gaiaUpdateSqlLog (handle, log_pk, 0, "some error message"); - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -11; - } - - spatialite_cleanup(); - - return 0; -} diff --git a/src/spatialite/test/check_dbf_load.c b/src/spatialite/test/check_dbf_load.c deleted file mode 100644 index 09c5567..0000000 --- a/src/spatialite/test/check_dbf_load.c +++ /dev/null @@ -1,99 +0,0 @@ -/* - - check_dbf_load.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - int row_count; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory databse: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - - ret = load_dbf (handle, "./shapetest1.dbf", "test1", "UTF-8", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_dbf() error: %s\n", err_msg); - sqlite3_close(handle); - return -3; - } - if (row_count != 2) { - fprintf (stderr, "unexpected row count for load_dbf: %i\n", row_count); - sqlite3_close(handle); - return -4; - } - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -5; - } - - spatialite_cleanup(); -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/check_endian.c b/src/spatialite/test/check_endian.c deleted file mode 100644 index bf3b44d..0000000 --- a/src/spatialite/test/check_endian.c +++ /dev/null @@ -1,337 +0,0 @@ -/* - - check_endian.c -- SpatiaLite Test Case - - Author: Sandro Furieri - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "sqlite3.h" -#include - -#define LITTLE_ENDIAN_ENCODED 1 -#define BIG_ENDIAN_ENCODED 0 -#define LITTLE_ENDIAN_ARCH 1 -#define BIG_ENDIAN_ARCH 0 - -int main (int argc, char *argv[]) -{ - unsigned char buf_in[8]; - unsigned char buf_out[8]; - short shrt_val; - int int_val; - sqlite3_int64 i64_val; - float flt_val; - double dbl_val; - -/* testing short values [16 bit] */ - buf_in[0] = 0xdf; - buf_in[1] = 0xfd; - shrt_val = gaiaImport16(buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - gaiaExport16(buf_out, shrt_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - if (buf_out[0] != 0xdf || buf_out[1] != 0xfd) { - fprintf(stderr, "endian INT16 (1): got 0x%02x%02x, expected 0xdffd\n", - buf_out[0], buf_out[1]); - return -1; - } - shrt_val = gaiaImport16(buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - gaiaExport16(buf_out, shrt_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - if (buf_out[0] != 0xdf || buf_out[1] != 0xfd) { - fprintf(stderr, "endian INT16 (2): got 0x%02x%02x, expected 0xdffd\n", - buf_out[0], buf_out[1]); - return -2; - } - shrt_val = gaiaImport16(buf_in, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - gaiaExport16(buf_out, shrt_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xdf) { - fprintf(stderr, "endian INT16 (3): got 0x%02x%02x, expected 0xfddf\n", - buf_out[0], buf_out[1]); - return -3; - } - shrt_val = gaiaImport16(buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - gaiaExport16(buf_out, shrt_val, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xdf) { - fprintf(stderr, "endian INT16 (4): got 0x%02x%02x, expected 0xfddf\n", - buf_out[0], buf_out[1]); - return -4; - } - shrt_val = gaiaImport16(buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - gaiaExport16(buf_out, shrt_val, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - if (buf_out[0] != 0xdf || buf_out[1] != 0xfd) { - fprintf(stderr, "endian 16 bit (5): got 0x%02x%02x, expected 0xdffd\n", - buf_out[0], buf_out[1]); - return -5; - } - shrt_val = gaiaImport16(buf_in, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - gaiaExport16(buf_out, shrt_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xdf) { - fprintf(stderr, "endian INT16 (6): got 0x%02x%02x, expected 0xfddf\n", - buf_out[0], buf_out[1]); - return -6; - } - -/* testing int values [32 bit] */ - buf_in[0] = 0xdf; - buf_in[1] = 0xec; - buf_in[2] = 0xce; - buf_in[3] = 0xfd; - int_val = gaiaImport32(buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - gaiaExport32(buf_out, int_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xce || buf_out[3] != 0xfd) { - fprintf(stderr, "endian INT32 (1): got 0x%02x%02x%02x%02x, expected 0xdfeccefd\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3]); - return -7; - } - int_val = gaiaImport32(buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - gaiaExport32(buf_out, int_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xce || buf_out[3] != 0xfd) { - fprintf(stderr, "endian INT32 (2): got 0x%02x%02x%02x%02x, expected 0xdfeccefd\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3]); - return -8; - } - int_val = gaiaImport32(buf_in, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - gaiaExport32(buf_out, int_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec || buf_out[3] != 0xdf) { - fprintf(stderr, "endian INT32 (3): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3]); - return -9; - } - int_val = gaiaImport32(buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - gaiaExport32(buf_out, int_val, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec || buf_out[3] != 0xdf) { - fprintf(stderr, "endian INT32 (4): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3]); - return -10; - } - int_val = gaiaImport32(buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - gaiaExport32(buf_out, int_val, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec || buf_out[3] != 0xdf) { - fprintf(stderr, "endian INT32 (5): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3]); - return -11; - } - int_val = gaiaImport32(buf_in, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - gaiaExport32(buf_out, int_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec || buf_out[3] != 0xdf) { - fprintf(stderr, "endian INT32 (6): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3]); - return -12; - } - -/* testing long values [64 bit] */ - buf_in[0] = 0xdf; - buf_in[1] = 0xec; - buf_in[2] = 0xa8; - buf_in[3] = 0x63; - buf_in[4] = 0x36; - buf_in[5] = 0x8a; - buf_in[6] = 0xce; - buf_in[7] = 0xfd; - i64_val = gaiaImportI64(buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - gaiaExportI64(buf_out, i64_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xa8 || buf_out[3] != 0x63 || - buf_out[4] != 0x36 || buf_out[5] != 0x8a || buf_out[6] != 0xce || buf_out[7] != 0xfd) { - fprintf(stderr, "endian INT64 (1): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xdfeca863368acefd\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], buf_out[5], - buf_out[6], buf_out[7]); - return -13; - } - i64_val = gaiaImportI64(buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - gaiaExportI64(buf_out, i64_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xa8 || buf_out[3] != 0x63 || - buf_out[4] != 0x36 || buf_out[5] != 0x8a || buf_out[6] != 0xce || buf_out[7] != 0xfd) { - fprintf(stderr, "endian INT64 (2): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xdfeca863368acefd\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], buf_out[5], - buf_out[6], buf_out[7]); - return -14; - } - i64_val = gaiaImportI64(buf_in, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - gaiaExportI64(buf_out, i64_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a || buf_out[3] != 0x36 || - buf_out[4] != 0x63 || buf_out[5] != 0xa8 || buf_out[6] != 0xec || buf_out[7] != 0xdf) { - fprintf(stderr, "endian INT64 (3): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], buf_out[5], - buf_out[6], buf_out[7]); - return -15; - } - i64_val = gaiaImportI64(buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - gaiaExportI64(buf_out, i64_val, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a || buf_out[3] != 0x36 || - buf_out[4] != 0x63 || buf_out[5] != 0xa8 || buf_out[6] != 0xec || buf_out[7] != 0xdf) { - fprintf(stderr, "endian INT64 (4): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], buf_out[5], - buf_out[6], buf_out[7]); - return -16; - } - i64_val = gaiaImportI64(buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - gaiaExportI64(buf_out, i64_val, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a || buf_out[3] != 0x36 || - buf_out[4] != 0x63 || buf_out[5] != 0xa8 || buf_out[6] != 0xec || buf_out[7] != 0xdf) { - fprintf(stderr, "endian INT64 (5): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], buf_out[5], - buf_out[6], buf_out[7]); - return -17; - } - i64_val = gaiaImportI64(buf_in, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - gaiaExportI64(buf_out, i64_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a || buf_out[3] != 0x36 || - buf_out[4] != 0x63 || buf_out[5] != 0xa8 || buf_out[6] != 0xec || buf_out[7] != 0xdf) { - fprintf(stderr, "endian INT64 (6): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], buf_out[5], - buf_out[6], buf_out[7]); - return -18; - } - -/* testing float values */ - buf_in[0] = 0xdf; - buf_in[1] = 0xec; - buf_in[2] = 0xce; - buf_in[3] = 0xfd; - flt_val = gaiaImportF32(buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - gaiaExportF32(buf_out, flt_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xce || buf_out[3] != 0xfd) { - fprintf(stderr, "endian FLOAT (1): got 0x%02x%02x%02x%02x, expected 0xdfeccefd\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3]); - return -19; - } - flt_val = gaiaImportF32(buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - gaiaExportF32(buf_out, flt_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xce || buf_out[3] != 0xfd) { - fprintf(stderr, "endian FLOAT (2): got 0x%02x%02x%02x%02x, expected 0xdfeccefd\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3]); - return -20; - } - flt_val = gaiaImportF32(buf_in, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - gaiaExportF32(buf_out, flt_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec || buf_out[3] != 0xdf) { - fprintf(stderr, "endian FLOAT (3): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3]); - return -21; - } - flt_val = gaiaImportF32(buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - gaiaExportF32(buf_out, flt_val, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec || buf_out[3] != 0xdf) { - fprintf(stderr, "endian FLOAT (4): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3]); - return -22; - } - flt_val = gaiaImportF32(buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - gaiaExportF32(buf_out, flt_val, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec || buf_out[3] != 0xdf) { - fprintf(stderr, "endian FLOAT (5): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3]); - return -23; - } - flt_val = gaiaImportF32(buf_in, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - gaiaExportF32(buf_out, flt_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec || buf_out[3] != 0xdf) { - fprintf(stderr, "endian FLOAT (6): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3]); - return -24; - } - -/* testing double values */ - buf_in[0] = 0xdf; - buf_in[1] = 0xec; - buf_in[2] = 0xa8; - buf_in[3] = 0x63; - buf_in[4] = 0x36; - buf_in[5] = 0x8a; - buf_in[6] = 0xce; - buf_in[7] = 0xfd; - dbl_val = gaiaImport64(buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - gaiaExport64(buf_out, dbl_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xa8 || buf_out[3] != 0x63 || - buf_out[4] != 0x36 || buf_out[5] != 0x8a || buf_out[6] != 0xce || buf_out[7] != 0xfd) { - fprintf(stderr, "endian DOUBLE (1): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xdfeca863368acefd\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], buf_out[5], - buf_out[6], buf_out[7]); - return -25; - } - dbl_val = gaiaImport64(buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - gaiaExport64(buf_out, dbl_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xa8 || buf_out[3] != 0x63 || - buf_out[4] != 0x36 || buf_out[5] != 0x8a || buf_out[6] != 0xce || buf_out[7] != 0xfd) { - fprintf(stderr, "endian DOUBLE (2): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xdfeca863368acefd\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], buf_out[5], - buf_out[6], buf_out[7]); - return -26; - } - dbl_val = gaiaImport64(buf_in, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - gaiaExport64(buf_out, dbl_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a || buf_out[3] != 0x36 || - buf_out[4] != 0x63 || buf_out[5] != 0xa8 || buf_out[6] != 0xec || buf_out[7] != 0xdf) { - fprintf(stderr, "endian DOUBLE (3): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], buf_out[5], - buf_out[6], buf_out[7]); - return -27; - } - dbl_val = gaiaImport64(buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - gaiaExport64(buf_out, dbl_val, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a || buf_out[3] != 0x36 || - buf_out[4] != 0x63 || buf_out[5] != 0xa8 || buf_out[6] != 0xec || buf_out[7] != 0xdf) { - fprintf(stderr, "endian DOUBLE (4): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], buf_out[5], - buf_out[6], buf_out[7]); - return -28; - } - dbl_val = gaiaImport64(buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - gaiaExport64(buf_out, dbl_val, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a || buf_out[3] != 0x36 || - buf_out[4] != 0x63 || buf_out[5] != 0xa8 || buf_out[6] != 0xec || buf_out[7] != 0xdf) { - fprintf(stderr, "endian DOUBLE (5): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], buf_out[5], - buf_out[6], buf_out[7]); - return -29; - } - dbl_val = gaiaImport64(buf_in, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - gaiaExport64(buf_out, dbl_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); - if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a || buf_out[3] != 0x36 || - buf_out[4] != 0x63 || buf_out[5] != 0xa8 || buf_out[6] != 0xec || buf_out[7] != 0xdf) { - fprintf(stderr, "endian DOUBLE (6): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", - buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], buf_out[5], - buf_out[6], buf_out[7]); - return -30; - } - - return 0; -} diff --git a/src/spatialite/test/check_exif.c b/src/spatialite/test/check_exif.c deleted file mode 100644 index c6a35e0..0000000 --- a/src/spatialite/test/check_exif.c +++ /dev/null @@ -1,569 +0,0 @@ - -/* - - check_exif.c -- SpatiaLite Test Case - - Author: Sandro Furieri - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "sqlite3.h" -#include "spatialite.h" - -#include - -static sqlite3_int64 -get_pixel_x(gaiaExifTagListPtr tag_list, int *ok) -{ -/* trying to retrieve the ExifImageWidth */ - gaiaExifTagPtr tag = tag_list->First; - *ok = 0; - - while (tag) - { - if (tag->TagId == 0xA002) - { - /* ok, this one is the ExifImageWidth tag */ - if (tag->Type == 3 && tag->Count == 1) - { - *ok = 1; - return *(tag->ShortValues + 0); - } - else if (tag->Type == 4 && tag->Count == 1) - { - *ok = 1; - return *(tag->LongValues + 0); - } - } - tag = tag->Next; - } - return 0; -} - -static sqlite3_int64 -get_pixel_y(gaiaExifTagListPtr tag_list, int *ok) -{ -/* trying to retrieve the ExifImageLength */ - gaiaExifTagPtr tag = tag_list->First; - *ok = 0; - - while (tag) - { - if (tag->TagId == 0xA003) - { - /* ok, this one is the ExifImageLength tag */ - if (tag->Type == 3 && tag->Count == 1) - { - *ok = 1; - return *(tag->ShortValues + 0); - } - else if (tag->Type == 4 && tag->Count == 1) - { - *ok = 1; - return *(tag->LongValues + 0); - } - } - tag = tag->Next; - } - return 0; -} - -static void -get_make(gaiaExifTagListPtr tag_list, const char **str, int *ok) -{ -/* trying to retrieve the Make */ - gaiaExifTagPtr tag = tag_list->First; - *ok = 0; - - while (tag) - { - if (tag->TagId == 0x010F) - { - /* ok, this one is the Make tag */ - if (tag->Type == 2) - { - *ok = 1; - *str = tag->StringValue; - return; - } - } - tag = tag->Next; - } - return; -} - -static void -get_model(gaiaExifTagListPtr tag_list, const char **str, int *ok) -{ -/* trying to retrieve the Model */ - gaiaExifTagPtr tag = tag_list->First; - *ok = 0; - - while (tag) - { - if (tag->TagId == 0x0110) - { - /* ok, this one is the Model tag */ - if (tag->Type == 2) - { - *ok = 1; - *str = tag->StringValue; - return; - } - } - tag = tag->Next; - } - return; -} - -static void -get_date(gaiaExifTagListPtr tag_list, const char **str, int *ok) -{ -/* trying to retrieve the Date */ - gaiaExifTagPtr tag = tag_list->First; - *ok = 0; - - while (tag) - { - if (tag->TagId == 0x9003) - { - /* ok, this one is the Make tag */ - if (tag->Type == 2) - { - *ok = 1; - *str = tag->StringValue; - return; - } - } - tag = tag->Next; - } - return; -} - -int main (int argc, char *argv[]) -{ - FILE *fl; - int sz = 0; - int rd; - int ok; - int i; - char tag_name[128]; - char human[8192]; - gaiaExifTagPtr pT; - sqlite3_int64 val64; - const char *result; - unsigned char *blob = NULL; - gaiaExifTagListPtr tag_list = NULL; - double longitude; - double latitude; - - spatialite_init (0); - - fl = fopen("sql_stmt_tests/DSC_1467.JPG", "rb"); - if (!fl) { - fprintf(stderr, "cannot open EXIF-JPEG image: DSC_1467.JPG\n"); - return -1; - } - if (fseek(fl, 0, SEEK_END) == 0) - sz = ftell(fl); - if (sz <= 14) { - fprintf(stderr, "invalid size EXIF-JPEG image: DSC_1467.JPG\n"); - return -2; - } - - blob = (unsigned char *) malloc(sz); - rewind(fl); - rd = fread(blob, 1, sz, fl); - if (rd != sz) { - fprintf(stderr, "read error EXIF-JPEG image: DSC_1467.JPG\n"); - return -3; - } - - tag_list = gaiaGetExifTags(blob, sz); - if (tag_list == NULL) { - fprintf(stderr, "cannot extract EXIF tags from JPEG image: DSC_1467.JPG\n"); - return -4; - } - - val64 = get_pixel_x(tag_list, &ok); - if (!ok) { - fprintf(stderr, "DSC_1467.JPG: PixelX tag not found\n"); - return -5; - } - if (val64 != 2128) { - fprintf(stderr, "DSC_1467.JPG: PixelX unexpected value: %d\n", (int)val64); - return -6; - } - - val64 = get_pixel_y(tag_list, &ok); - if (!ok) { - fprintf(stderr, "DSC_1467.JPG: PixelY tag not found\n"); - return -7; - } - if (val64 != 1416) { - fprintf(stderr, "DSC_1467.JPG: PixelY unexpected value: %d\n", (int)val64); - return -8; - } - - get_make(tag_list, &result, &ok); - if (!ok) { - fprintf(stderr, "DSC_1467.JPG: Make tag not found\n"); - return -9; - } - if (strcmp(result, "NIKON CORPORATION") != 0) { - fprintf(stderr, "DSC_1467.JPG: Make unexpected value: %s|\n", result); - return -10; - }; - - get_model(tag_list, &result, &ok); - if (!ok) { - fprintf(stderr, "DSC_1467.JPG: Model tag not found\n"); - return -11; - } - if (strcmp(result, "NIKON D700") != 0) { - fprintf(stderr, "DSC_1467.JPG: Model unexpected value: %s|\n", result); - return -12; - }; - - get_date(tag_list, &result, &ok); - if (!ok) { - fprintf(stderr, "DSC_1467.JPG: Date tag not found\n"); - return -13; - } - if (strcmp(result, "2011:03:26 11:01:13") != 0) { - fprintf(stderr, "DSC_1467.JPG: Date unexpected value: %s|\n", result); - return -14; - }; - - for (i = 0; i < gaiaGetExifTagsCount(tag_list); i++) - { - pT = gaiaGetExifTagByPos(tag_list, i); - if (pT) - { - gaiaExifTagGetName(pT, tag_name, 128); - gaiaExifTagGetValueType(pT); - gaiaIsExifGpsTag(pT); - gaiaExifTagGetValueType(pT); - gaiaExifTagGetNumValues(pT); - gaiaExifTagGetHumanReadable (pT, human, 8190, &ok); - } - } - - pT = gaiaGetExifTagById (tag_list, 0x0112); - if (pT == NULL) { - fprintf(stderr, "DSC_1467.JPG: tag Orientation not found: %s|\n", result); - return -15; - }; - - pT = gaiaGetExifTagByName (tag_list, "YCbCrPositioning"); - if (pT == NULL) { - fprintf(stderr, "DSC_1467.JPG: tag YCbCrPositioning not found: %s|\n", result); - return -16; - }; - - for (i = 0x0000; i < 0xffff; i++) - { - gaiaExifTag tag; - tag.Gps = 0; - tag.TagId = i; - gaiaExifTagGetName(&tag, tag_name, 128); - } - for (i = 0x0000; i < 0xffff; i++) - { - gaiaExifTag tag; - tag.Gps = 1; - tag.TagId = i; - gaiaExifTagGetName(&tag, tag_name, 128); - } - - if (blob) - free(blob); - if (tag_list) - gaiaExifTagsFree(tag_list); - fclose(fl); - - fl = fopen("sql_stmt_tests/DSCN0042.JPG", "rb"); - if (!fl) { - fprintf(stderr, "cannot open EXIF-JPEG image: DSCN0042.JPG\n"); - return -100; - } - if (fseek(fl, 0, SEEK_END) == 0) - sz = ftell(fl); - if (sz <= 14) { - fprintf(stderr, "invalid size EXIF-JPEG image: DSCN0042.JPG\n"); - return -17; - } - - blob = (unsigned char *) malloc(sz); - rewind(fl); - rd = fread(blob, 1, sz, fl); - if (rd != sz) { - fprintf(stderr, "read error EXIF-JPEG image: DSCN0042.JPG\n"); - return -18; - } - - tag_list = gaiaGetExifTags(blob, sz); - if (tag_list == NULL) { - fprintf(stderr, "cannot extract EXIF tags from JPEG image: DSCN0042.JPG\n"); - return -19; - } - - val64 = get_pixel_x(tag_list, &ok); - if (!ok) { - fprintf(stderr, "DSCN0042.JPG: PixelX tag not found\n"); - return -20; - } - if (val64 != 640) { - fprintf(stderr, "DSCN0042.JPG: PixelX unexpected value: %d\n", (int)val64); - return -21; - } - - val64 = get_pixel_y(tag_list, &ok); - if (!ok) { - fprintf(stderr, "DSCN0042.JPG: PixelY tag not found\n"); - return -22; - } - if (val64 != 480) { - fprintf(stderr, "DSCN0042.JPG: PixelY unexpected value: %d\n", (int)val64); - return -23; - } - - get_make(tag_list, &result, &ok); - if (!ok) { - fprintf(stderr, "DSCN0042.JPG: Make tag not found\n"); - return -24; - } - if (strcmp(result, "NIKON") != 0) { - fprintf(stderr, "DSCN0042.JPG: Make unexpected value: %s|\n", result); - return -25; - }; - - get_model(tag_list, &result, &ok); - if (!ok) { - fprintf(stderr, "DSCN0042.JPG: Model tag not found\n"); - return -26; - } - if (strcmp(result, "COOLPIX P6000") != 0) { - fprintf(stderr, "DSCN0042.JPG: Model unexpected value: %s|\n", result); - return -27; - }; - - get_date(tag_list, &result, &ok); - if (!ok) { - fprintf(stderr, "DSCN0042.JPG: Date tag not found\n"); - return -28; - } - if (strcmp(result, "2008:10:22 17:00:07") != 0) { - fprintf(stderr, "DSCN0042.JPG: Date unexpected value: %s|\n", result); - return -29; - }; - - for (i = 0; i < gaiaGetExifTagsCount(tag_list); i++) - { - pT = gaiaGetExifTagByPos(tag_list, i); - if (pT) - { - gaiaExifTagGetName(pT, tag_name, 128); - gaiaExifTagGetValueType(pT); - gaiaIsExifGpsTag(pT); - gaiaExifTagGetValueType(pT); - gaiaExifTagGetNumValues(pT); - gaiaExifTagGetHumanReadable (pT, human, 8190, &ok); - } - } - - pT = gaiaGetExifTagById (tag_list, 0x0112); - if (pT == NULL) { - fprintf(stderr, "DSCN0042.JPG: tag Orientation not found: %s|\n", result); - return -30; - }; - - pT = gaiaGetExifTagByName (tag_list, "YCbCrPositioning"); - if (pT == NULL) { - fprintf(stderr, "DSCN0042.JPG: tag YCbCrPositioning not found: %s|\n", result); - return -31; - }; - - for (i = 0x0000; i < 0xffff; i++) - { - gaiaExifTag tag; - tag.Gps = 0; - tag.TagId = i; - gaiaExifTagGetName(&tag, tag_name, 128); - } - for (i = 0x0000; i < 0xffff; i++) - { - gaiaExifTag tag; - tag.Gps = 1; - tag.TagId = i; - gaiaExifTagGetName(&tag, tag_name, 128); - } - - if (!gaiaGetGpsLatLong(blob, sz, human, 8192)) { - fprintf(stderr, "cannot extract GPS coords from JPEG image: DSCN0042.JPG\n"); - return -32; - } - if (strcmp(human, "N 43.00 27.00 52.04 / E 11.00 52.00 53.32") != 0) { - fprintf(stderr, "DSCN0042.JPG: GPS coords unexpected value: %s|\n", human); - return -33; - }; - if (!gaiaGetGpsLatLong(blob, sz, human, 20)) { - fprintf(stderr, "cannot extract GPS coords(20) from JPEG image: DSCN0042.JPG\n"); - return -34; - } - if (strcmp(human, "N 43.00 27.00 52.04 ") != 0) { - fprintf(stderr, "DSCN0042.JPG: GPS coords(20) unexpected value: %s|\n", human); - return -35; - }; - if (!gaiaGetGpsCoords(blob, sz, &longitude, &latitude)) { - fprintf(stderr, "cannot extract GPS long/lat from JPEG image: DSCN0042.JPG\n"); - return -36; - } - if (longitude != 11.881478 || latitude != 43.464455) { - fprintf(stderr, "DSCN0042.JPG: GPS long/lat unexpected values: %1.9f %1.9f|\n", longitude, latitude); - return -37; - }; - - if (blob) - free(blob); - if (tag_list) - gaiaExifTagsFree(tag_list); - fclose(fl); - - fl = fopen("sql_stmt_tests/La_folla_durante_il_Palio.jpg", "rb"); - if (!fl) { - fprintf(stderr, "cannot open EXIF-JPEG image: La_folla_durante_il_Palio.jpg\n"); - return -50; - } - if (fseek(fl, 0, SEEK_END) == 0) - sz = ftell(fl); - if (sz <= 14) { - fprintf(stderr, "invalid size EXIF-JPEG image: La_folla_durante_il_Palio.jpg\n"); - return -51; - } - - blob = (unsigned char *) malloc(sz); - rewind(fl); - rd = fread(blob, 1, sz, fl); - if (rd != sz) { - fprintf(stderr, "read error EXIF-JPEG image: La_folla_durante_il_Palio.jpg\n"); - return -52; - } - - tag_list = gaiaGetExifTags(blob, sz); - if (tag_list == NULL) { - fprintf(stderr, "cannot extract EXIF tags from JPEG image: La_folla_durante_il_Palio.jpg\n"); - return -53; - } - - val64 = get_pixel_x(tag_list, &ok); - if (!ok) { - fprintf(stderr, "La_folla_durante_il_Palio.jpg: PixelX tag not found\n"); - return -54; - } - if (val64 != 1280) { - fprintf(stderr, "La_folla_durante_il_Palio.jpg: PixelX unexpected value: %d\n", (int)val64); - return -55; - } - - val64 = get_pixel_y(tag_list, &ok); - if (!ok) { - fprintf(stderr, "La_folla_durante_il_Palio.jpg: PixelY tag not found\n"); - return -56; - } - if (val64 != 960) { - fprintf(stderr, "La_folla_durante_il_Palio.jpg: PixelY unexpected value: %d\n", (int)val64); - return -57; - } - - get_make(tag_list, &result, &ok); - if (!ok) { - fprintf(stderr, "La_folla_durante_il_Palio.jpg: Make tag not found\n"); - return -58; - } - if (strcmp(result, "Nokia") != 0) { - fprintf(stderr, "La_folla_durante_il_Palio.jpg: Make unexpected value: %s|\n", result); - return -59; - }; - - get_model(tag_list, &result, &ok); - if (!ok) { - fprintf(stderr, "La_folla_durante_il_Palio.jpg: Model tag not found\n"); - return -60; - } - if (strcmp(result, "6630") != 0) { - fprintf(stderr, "La_folla_durante_il_Palio.jpg: Model unexpected value: %s|\n", result); - return -61; - }; - - for (i = 0; i < gaiaGetExifTagsCount(tag_list); i++) - { - pT = gaiaGetExifTagByPos(tag_list, i); - if (pT) - { - gaiaExifTagGetName(pT, tag_name, 128); - gaiaExifTagGetValueType(pT); - gaiaIsExifGpsTag(pT); - gaiaExifTagGetValueType(pT); - gaiaExifTagGetNumValues(pT); - gaiaExifTagGetHumanReadable (pT, human, 8190, &ok); - } - } - - for (i = 0x0000; i < 0xffff; i++) - { - gaiaExifTag tag; - tag.Gps = 0; - tag.TagId = i; - gaiaExifTagGetName(&tag, tag_name, 128); - } - - if (blob) - free(blob); - if (tag_list) - gaiaExifTagsFree(tag_list); - fclose(fl); - - spatialite_cleanup(); - - return 0; -} diff --git a/src/spatialite/test/check_extension.c b/src/spatialite/test/check_extension.c deleted file mode 100644 index d49b594..0000000 --- a/src/spatialite/test/check_extension.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - - check_extension.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#define _GNU_SOURCE -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -#ifdef _WIN32 -#include "asprintf4win.h" -#endif - -int main (int argc, char *argv[]) -{ - sqlite3 *db_handle = NULL; - char *sql_statement; - int ret; - char *err_msg = NULL; - char **results; - int rows; - int columns; - - ret = sqlite3_open_v2 (":memory:", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf (stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (db_handle)); - sqlite3_close (db_handle); - db_handle = NULL; - return -1; - } - - sqlite3_enable_load_extension (db_handle, 1); - -#if defined(_WIN32) || defined(__APPLE__) -#ifdef __APPLE__ /* Mac Os X */ - asprintf(&sql_statement, "SELECT load_extension('libspatialite.dylib')"); -#else /* Windows */ - asprintf(&sql_statement, "SELECT load_extension('libspatialite.dll')"); -#endif -#else /* neither Mac nor Windows: may be Linux or Unix */ - asprintf(&sql_statement, "SELECT load_extension('libspatialite.so')"); -#endif - ret = sqlite3_exec (db_handle, sql_statement, NULL, NULL, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "load_extension() error: %s\n", err_msg); - sqlite3_free (err_msg); - return -2; - } - - asprintf(&sql_statement, "SELECT spatialite_version()"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -10; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: spatialite_version() bad result: %i/%i.\n", rows, columns); - return -11; - } - if (strcmp(results[1], VERSION) != 0) { - fprintf (stderr, "Unexpected error: spatialite_version() bad result: %s.\n", results[1]); - return -12; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "SELECT geos_version()"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error2: %s\n", err_msg); - sqlite3_free (err_msg); - return -13; - } - -#ifndef OMIT_GEOS /* only if GEOS is supported */ - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: geos_version() bad result: %i/%i.\n", rows, columns); - return -14; - } - /* we tolerate any string here, because versions always change */ - if (strlen(results[1]) == 0) { - fprintf (stderr, "Unexpected error: geos_version() bad result.\n"); - return -15; - } - sqlite3_free_table (results); -#else /* GEOS is not supported */ - /* in this case we expect a NULL */ - if (results[1] != NULL) { - fprintf (stderr, "Unexpected error: geos_version() bad result.\n"); - return -15; - } -#endif /* end GEOS conditional */ - - - asprintf(&sql_statement, "SELECT proj4_version()"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error3: %s\n", err_msg); - sqlite3_free (err_msg); - return -14; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: proj4_version() bad result: %i/%i.\n", rows, columns); - return -14; - } - -#ifndef OMIT_PROJ /* only if PROJ is supported */ - /* we tolerate any string here, because versions always change */ - if (strlen(results[1]) == 0) { - fprintf (stderr, "Unexpected error: proj4_version() bad result.\n"); - return -15; - } -#else /* PROJ is not supported */ - /* in this case we expect a NULL */ - if (results[1] != NULL) { - fprintf (stderr, "Unexpected error: proj4_version() bad result.\n"); - return -15; - } -#endif /* end PROJ conditional */ - - sqlite3_free_table (results); - sqlite3_close (db_handle); - spatialite_cleanup(); - - return 0; -} diff --git a/src/spatialite/test/check_extra_relations_fncts.c b/src/spatialite/test/check_extra_relations_fncts.c deleted file mode 100644 index 8aa02ca..0000000 --- a/src/spatialite/test/check_extra_relations_fncts.c +++ /dev/null @@ -1,236 +0,0 @@ -/* - - check_extra_relations_fncts.c -- SpatiaLite Test Case - - This tests a couple of functions in gg_relations.c that aren't used in - spatialite, but are provided for backwards compatibility. - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "sqlite3.h" -#include "spatialite.h" -#include "spatialite/gaiageo.h" - -static const double double_eps = 0.00000001; - -int main (int argc, char *argv[]) -{ - int result; - int returnValue = 0; - gaiaRingPtr interior; - - /* Common setup */ - gaiaLinestringPtr linestr1 = gaiaAllocLinestring(0); - gaiaLinestringPtr linestr2 = gaiaAllocLinestring(0); - gaiaPolygonPtr poly1 = gaiaAllocPolygon(0, 0); - gaiaPolygonPtr poly2 = gaiaAllocPolygon(0, 0); - - /* Tests start here */ - - /* zero length linestring */ - result = gaiaLinestringEquals(linestr1, linestr2); - if (result != 1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -1; - goto exit; - } - - /* non-matching linestring lengths */ - gaiaFreeLinestring (linestr1); - gaiaFreeLinestring (linestr2); - linestr1 = gaiaAllocLinestring(2); - linestr2 = gaiaAllocLinestring(3); - gaiaSetPoint(linestr1->Coords, 0, 1, 3); /* line1, first point */ - gaiaSetPoint(linestr1->Coords, 1, 2, 4); /* line1, second point */ - gaiaSetPoint(linestr2->Coords, 0, 4, -2); /* line2, first point */ - gaiaSetPoint(linestr2->Coords, 1, 1, 5); /* line2, second point */ - gaiaSetPoint(linestr2->Coords, 2, 3, 4); /* line2, third point */ - result = gaiaLinestringEquals(linestr1, linestr2); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -2; - goto exit; - } - - /* identical lines */ - gaiaFreeLinestring (linestr2); - linestr2 = gaiaCloneLinestring(linestr1); - result = gaiaLinestringEquals(linestr1, linestr2); - if (result != 1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -3; - goto exit; - } - - /* not quite identical lines */ - gaiaSetPoint(linestr2->Coords, 1, 2, -4); - result = gaiaLinestringEquals(linestr1, linestr2); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -4; - goto exit; - } - - /* zero length polygon */ - result = gaiaPolygonEquals(poly1, poly2); - if (result != 1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -5; - goto exit; - } - - /* matching polygons */ - gaiaFreePolygon (poly1); - gaiaFreePolygon (poly2); - poly1 = gaiaAllocPolygon(5, 0); - gaiaSetPoint(poly1->Exterior->Coords, 0, 0, 0); - gaiaSetPoint(poly1->Exterior->Coords, 1, 10, 0); - gaiaSetPoint(poly1->Exterior->Coords, 2, 10, 10); - gaiaSetPoint(poly1->Exterior->Coords, 3, 0, 10); - gaiaSetPoint(poly1->Exterior->Coords, 4, 0, 0); - poly2 = gaiaClonePolygon(poly1); - result = gaiaPolygonEquals(poly1, poly2); - if (result != 1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -6; - goto exit; - } - - /* not quite matching polygons */ - gaiaSetPoint(poly2->Exterior->Coords, 2, 10, -10); - result = gaiaPolygonEquals(poly1, poly2); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -7; - goto exit; - } - - /* polygons with different numbers of interiors */ - gaiaFreePolygon (poly2); - poly2 = gaiaAllocPolygon(5, 1); - gaiaSetPoint(poly2->Exterior->Coords, 0, 0, 0); - gaiaSetPoint(poly2->Exterior->Coords, 1, 10, 0); - gaiaSetPoint(poly2->Exterior->Coords, 2, 10, 10); - gaiaSetPoint(poly2->Exterior->Coords, 3, 0, 10); - gaiaSetPoint(poly2->Exterior->Coords, 4, 0, 0); - interior = gaiaAddInteriorRing(poly2, 0, 4); - gaiaSetPoint(interior->Coords, 0, 1, 1); - gaiaSetPoint(interior->Coords, 1, 3, 2); - gaiaSetPoint(interior->Coords, 2, 3, 1); - gaiaSetPoint(interior->Coords, 3, 1, 1); - result = gaiaPolygonEquals(poly1, poly2); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -8; - goto exit; - } - - /* same exteriors and interiors */ - gaiaFreePolygon (poly1); - poly1 = gaiaClonePolygon(poly2); - result = gaiaPolygonEquals(poly1, poly2); - if (result != 1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -9; - goto exit; - } - - /* slightly different interiors */ - gaiaSetPoint(interior->Coords, 2, 3, 3); - result = gaiaPolygonEquals(poly1, poly2); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -10; - goto exit; - } - - /* different number of exterior points */ - gaiaFreePolygon(poly2); - poly2 = gaiaAllocPolygon(4, 1); - gaiaSetPoint(poly2->Exterior->Coords, 0, 0, 0); - gaiaSetPoint(poly2->Exterior->Coords, 1, 10, 0); - gaiaSetPoint(poly2->Exterior->Coords, 2, 10, 10); - gaiaSetPoint(poly2->Exterior->Coords, 3, 0, 0); - interior = gaiaAddInteriorRing(poly2, 0, 4); - gaiaSetPoint(interior->Coords, 0, 1, 1); - gaiaSetPoint(interior->Coords, 1, 3, 2); - gaiaSetPoint(interior->Coords, 2, 3, 1); - gaiaSetPoint(interior->Coords, 3, 1, 1); - result = gaiaPolygonEquals(poly1, poly2); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -11; - goto exit; - } - - /* same exterior points, but different number of points on first interior */ - gaiaFreePolygon (poly2); - poly2 = gaiaAllocPolygon(5, 1); - gaiaSetPoint(poly2->Exterior->Coords, 0, 0, 0); - gaiaSetPoint(poly2->Exterior->Coords, 1, 10, 0); - gaiaSetPoint(poly2->Exterior->Coords, 2, 10, 10); - gaiaSetPoint(poly2->Exterior->Coords, 3, 0, 10); - gaiaSetPoint(poly2->Exterior->Coords, 4, 0, 0); - interior = gaiaAddInteriorRing(poly2, 0, 5); - gaiaSetPoint(interior->Coords, 0, 1, 1); - gaiaSetPoint(interior->Coords, 1, 3, 2); - gaiaSetPoint(interior->Coords, 2, 3, 3); - gaiaSetPoint(interior->Coords, 3, 1, 3); - gaiaSetPoint(interior->Coords, 4, 1, 1); - result = gaiaPolygonEquals(poly1, poly2); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -12; - goto exit; - } - - /* Cleanup and exit */ -exit: - gaiaFreeLinestring (linestr1); - gaiaFreeLinestring (linestr2); - gaiaFreePolygon (poly1); - gaiaFreePolygon (poly2); - - return returnValue; -} diff --git a/src/spatialite/test/check_fdo1.c b/src/spatialite/test/check_fdo1.c deleted file mode 100644 index cae3399..0000000 --- a/src/spatialite/test/check_fdo1.c +++ /dev/null @@ -1,425 +0,0 @@ -/* - - check_fdo1.c -- SpatiaLite Test Case - - Author: Sandro Furieri - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -#include "spatialite/gaiageo.h" - -#ifndef OMIT_GEOS /* including GEOS */ -#include -#endif - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_GEOS /* only if GEOS is supported */ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - const char *sql; - int i; - char **results; - int rows; - int columns; - - spatialite_init (0); - ret = sqlite3_open_v2 ("sql_stmt_tests/testFDO.sqlite", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open testFDO.sqlite db: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1000; - } - -/* FDO start-up */ - sql = "SELECT AutoFDOStart()"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -1; - } - -/* testing aggregate Union() PointZ WKT "p02" */ - sql = "SELECT AsText(ST_Union(WKT_GEOMETRY)) FROM fdo_p02"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -2; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -3; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -4; - } - if (strcmp(results[1], "MULTIPOINT Z(664350.17954 5171957.915655 314.52, 664642.363686 5169415.339218 294.37, 664964.447225 5170571.245732 318.25)") != 0) { - fprintf (stderr, "Unexpected error: invalid result |%s|\n", results[1]); - return -5; - } - sqlite3_free_table (results); - -/* testing aggregate Union() PointZ WKB "p03" */ - sql = "SELECT AsText(ST_Union(GEOMETRY)) FROM fdo_p03 WHERE text_dil IS NULL AND OGC_FID < 3"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -6; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -7; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -8; - } - if (strcmp(results[1], "MULTIPOINT Z(665216.306643 5169825.707161 296.06, 665224.506512 5169827.907054 296.16)") != 0) { - fprintf (stderr, "Unexpected error: invalid result |%s|\n", results[1]); - return -9; - } - sqlite3_free_table (results); - -/* testing aggregate Union() PointZ SpatiaLite "p05" */ - sql = "SELECT AsText(ST_Union(GEOMETRY)) FROM fdo_p05 WHERE text_dil IS NULL AND OGC_FID < 3"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -10; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -11; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result |%s|\n", results[1]); - return -12; - } - if (strcmp(results[1], "MULTIPOINT Z(667687.978175 5169352.045712 583.140015, 667710.008189 5169402.894615 589.849976)") != 0) { - fprintf (stderr, "Unexpected error: invalid result b|%s|\n", results[1]); - return -13; - } - sqlite3_free_table (results); - -/* testing Sum(GLength()) LinestringZ WKT "l05" */ - sql = "SELECT Sum(GLength(WKT_GEOMETRY)) FROM fdo_l05"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -14; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -15; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -16; - } - if (strncmp(results[1], "59.417763", 9) != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -17; - } - sqlite3_free_table (results); - -/* testing Sum(GLength()) LinestringZ WKB "l06" */ - sql = "SELECT Sum(GLength(GEOMETRY)) FROM fdo_l06"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -18; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -19; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -20; - } - if (strncmp(results[1], "273.076064", 10) != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -21; - } - sqlite3_free_table (results); - -/* testing Sum(GLength()) LinestringZ SpatiaLite "l07" */ - sql = "SELECT Sum(GLength(GEOMETRY)) FROM fdo_l07"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -22; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -23; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -24; - } - if (strncmp(results[1], "219.459808", 10) != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -25; - } - sqlite3_free_table (results); - -/* testing Sum(Area()) PolygonZ WKT "f04" */ - sql = "SELECT Sum(Area(WKT_GEOMETRY)) FROM fdo_f04"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -26; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -27; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -28; - } - if (strncmp(results[1], "9960.931239", 11) != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -29; - } - sqlite3_free_table (results); - -/* testing Sum(Area()) PolygonZ WKB "f05" */ - sql = "SELECT Sum(Area(GEOMETRY)) FROM fdo_f05"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -30; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -31; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -32; - } - if (strncmp(results[1], "69972.113393", 12) != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -33; - } - sqlite3_free_table (results); - -/* testing Sum(Area()) PolygonZ SpatiaLite "f06" */ - sql = "SELECT Sum(Area(GEOMETRY)) FROM fdo_f06"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -34; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -35; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -36; - } - if (strncmp(results[1], "1125.064396", 11) != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -37; - } - sqlite3_free_table (results); - -/* testing IsValid() LinestringZ WKB "l06" */ - sql = "SELECT IsValid(GEOMETRY) FROM fdo_l06"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -38; - } - if ((rows != 12) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -39; - } - for (i = 1; i <= rows; i++) - { - if (results[i] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -40; - } - if (strcmp(results[i], "0") == 0) { - const char *geos_msg = gaiaGetGeosErrorMsg(); - if (strlen(geos_msg) == 0) - geos_msg = gaiaGetGeosWarningMsg(); - if (strlen(geos_msg) == 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -41; - } - } - } - sqlite3_free_table (results); - -/* testing IsValid() PolygonZ WKT "f04" */ - sql = "SELECT IsValid(WKT_GEOMETRY) FROM fdo_f04"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -42; - } - if ((rows != 16) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -43; - } - for (i = 1; i <= rows; i++) - { - if (results[i] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -44; - } - if (strcmp(results[i], "0") == 0) { - const char *geos_msg = gaiaGetGeosErrorMsg(); - if (strlen(geos_msg) == 0) - geos_msg = gaiaGetGeosWarningMsg(); - if (strlen(geos_msg) == 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -45; - } - } - } - sqlite3_free_table (results); - -/* testing IsValid() PolygonZ WKB "f05" */ - sql = "SELECT IsValid(GEOMETRY) FROM fdo_f05"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -46; - } - if ((rows != 13) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -47; - } - for (i = 1; i <= rows; i++) - { - if (results[i] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -48; - } - if (strcmp(results[i], "0") == 0) { - const char *geos_msg = gaiaGetGeosErrorMsg(); - if (strlen(geos_msg) == 0) - geos_msg = gaiaGetGeosWarningMsg(); - if (strlen(geos_msg) == 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -49; - } - } - } - sqlite3_free_table (results); - -/* testing DOUBLE and TEXT columns */ - sql = "SELECT datum, hoehe FROM fdo_p05 WHERE OGC_FID = 5"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -50; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -51; - } - if (results[2] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -52; - } - if (strcmp(results[2], "1997/03/07") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -53; - } - if (results[3] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -54; - } - if (strcmp(results[3], "277.55") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -54; - } - sqlite3_free_table (results); - -/* FDO shut-down */ - sql = "SELECT AutoFDOStop()"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -55; - } - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -56; - } - - spatialite_cleanup(); -#endif /* end GEOS conditional */ - - return 0; -} diff --git a/src/spatialite/test/check_fdo2.c b/src/spatialite/test/check_fdo2.c deleted file mode 100644 index d8f1e9c..0000000 --- a/src/spatialite/test/check_fdo2.c +++ /dev/null @@ -1,881 +0,0 @@ -/* - - check_fdo2.c -- SpatiaLite Test Case - - Author: Sandro Furieri - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - const char *sql; - char **results; - int rows; - int columns; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - -/* FDO initialization */ - sql = "SELECT InitFDOSpatialMetadata()"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -2; - } - -/* creating a Point 2D WKT table */ - sql = "CREATE TABLE pt_2d_wkt (id INTEGER, name TEXT, value DOUBLE)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -3; - } - sql = "SELECT AddFDOGeometryColumn('pt_2d_wkt', 'g', -1, 1, 2, 'WKT')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -4; - } - -/* creating a Point 3D WKT table */ - sql = "CREATE TABLE pt_3d_wkt (id INTEGER, pic1 BLOB, pic2 BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -5; - } - sql = "SELECT AddFDOGeometryColumn('pt_3d_wkt', 'g', -1, 1, 3, 'WKT')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -6; - } - -/* creating a Point 2D WKB table */ - sql = "CREATE TABLE pt_2d_wkb (id INTEGER)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -6; - } - sql = "SELECT AddFDOGeometryColumn('pt_2d_wkb', 'g', -1, 1, 2, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -7; - } - -/* creating a Point 3D WKB table */ - sql = "CREATE TABLE pt_3d_wkb (id INTEGER)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -8; - } - sql = "SELECT AddFDOGeometryColumn('pt_3d_wkb', 'g', -1, 1, 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -9; - } - -/* creating a Point 3D WKB table */ - sql = "CREATE TABLE pt_3d_spl (id INTEGER)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -10; - } - sql = "SELECT AddFDOGeometryColumn('pt_3d_spl', 'g', -1, 1, 3, 'SPATIALITE')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -11; - } - -/* creating a Linestring 3D WKT table */ - sql = "CREATE TABLE ln_3d_wkt (id INTEGER)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -12; - } - sql = "SELECT AddFDOGeometryColumn('ln_3d_wkt', 'g', -1, 2, 3, 'WKT')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -13; - } - -/* creating a Linestring 3D WKB table */ - sql = "CREATE TABLE ln_3d_wkb (id INTEGER)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -14; - } - sql = "SELECT AddFDOGeometryColumn('ln_3d_wkb', 'g', -1, 2, 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -15; - } - -/* creating a Polygon 3D WKT table */ - sql = "CREATE TABLE pg_3d_wkt (id INTEGER)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -16; - } - sql = "SELECT AddFDOGeometryColumn('pg_3d_wkt', 'g', -1, 3, 3, 'WKT')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -17; - } - -/* creating a Polygon 3D WKB table */ - sql = "CREATE TABLE pg_3d_wkb (id INTEGER)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -18; - } - sql = "SELECT AddFDOGeometryColumn('pg_3d_wkb', 'g', -1, 3, 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -19; - } - -/* creating a MultiPoint 3D WKT table */ - sql = "CREATE TABLE mpt_3d_wkt (id INTEGER)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -20; - } - sql = "SELECT AddFDOGeometryColumn('mpt_3d_wkt', 'g', -1, 4, 3, 'WKT')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -21; - } - -/* creating a MultiPoint 3D WKB table */ - sql = "CREATE TABLE mpt_3d_wkb (id INTEGER)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -22; - } - sql = "SELECT AddFDOGeometryColumn('mpt_3d_wkb', 'g', -1, 4, 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -23; - } - -/* creating a MultiLinestring 3D WKT table */ - sql = "CREATE TABLE mln_3d_wkt (id INTEGER)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -24; - } - sql = "SELECT AddFDOGeometryColumn('mln_3d_wkt', 'g', -1, 5, 3, 'WKT')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -25; - } - -/* creating a MultiLinestring 3D WKB table */ - sql = "CREATE TABLE mln_3d_wkb (id INTEGER)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -26; - } - sql = "SELECT AddFDOGeometryColumn('mln_3d_wkb', 'g', -1, 5, 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -27; - } - -/* creating a MultiPolygon 3D WKT table */ - sql = "CREATE TABLE mpg_3d_wkt (id INTEGER)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -28; - } - sql = "SELECT AddFDOGeometryColumn('mpg_3d_wkt', 'g', -1, 6, 3, 'WKT')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -29; - } - -/* creating a MultiPolygon 3D WKB table */ - sql = "CREATE TABLE mpg_3d_wkb (id INTEGER)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -30; - } - sql = "SELECT AddFDOGeometryColumn('mpg_3d_wkb', 'g', -1, 6, 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -31; - } - -/* creating a GeometryCollection 3D WKT table */ - sql = "CREATE TABLE gcoll_3d_wkt (id INTEGER)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -32; - } - sql = "SELECT AddFDOGeometryColumn('gcoll_3d_wkt', 'g', -1, 7, 3, 'WKT')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -33; - } - -/* creating a GeometryCollection 3D WKB table */ - sql = "CREATE TABLE gcoll_3d_wkb (id INTEGER)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -34; - } - sql = "SELECT AddFDOGeometryColumn('gcoll_3d_wkb', 'g', -1, 7, 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -35; - } - -/* FDO start-up */ - sql = "SELECT AutoFDOStart()"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -36; - } - -/* Inserting into pt_2d_wkt */ - sql = "INSERT INTO fdo_pt_2d_wkt (id, name, value, g) VALUES (1, 'alpha', 0.1, GeomFromText('POINT(1 2)', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -37; - } - -/* Updating pt_2d_wkt */ - sql = "UPDATE fdo_pt_2d_wkt SET name = 'beta', value = 0.2, g = GeomFromText('POINT(10 20)', -1) WHERE id = 1"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -38; - } - -/* Deleting form pt_2d_wkt */ - sql = "DELETE FROM fdo_pt_2d_wkt"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -39; - } - -/* Inserting into pt_3d_wkt */ - sql = "INSERT INTO fdo_pt_3d_wkt (id, pic1, pic2, g) VALUES (1, zeroblob(16), NULL, GeomFromText('POINTZ(1 2 3)', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -40; - } - -/* Updating pt_3d_wkt */ - sql = "UPDATE fdo_pt_3d_wkt SET pic1 = NULL, pic2 = zeroblob(8), g = GeomFromText('POINTZ(10 20 30)', -1) WHERE id = 1"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -41; - } - -/* Inserting into pt_2d_wkb */ - sql = "INSERT INTO fdo_pt_2d_wkb (id, g) VALUES (1, GeomFromText('POINT(1 2)', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -42; - } - -/* Updating pt_2d_wkb */ - sql = "UPDATE fdo_pt_2d_wkb SET g = GeomFromText('POINT(10 20)', -1) WHERE id = 1"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -43; - } - -/* Inserting into pt_3d_wkb */ - sql = "INSERT INTO fdo_pt_3d_wkb (id, g) VALUES (1, GeomFromText('POINTZ(1 2 3)', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -44; - } - -/* Updating pt_3d_wkb */ - sql = "UPDATE fdo_pt_3d_wkb SET g = GeomFromText('POINTZ(10 20 30)', -1) WHERE id = 1"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -45; - } - -/* Inserting into pt_3d_spl */ - sql = "INSERT INTO fdo_pt_3d_spl (id, g) VALUES (1, GeomFromText('POINTZ(1 2 3)', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -46; - } - -/* Updating pt_3d_spl */ - sql = "UPDATE fdo_pt_3d_spl SET g = GeomFromText('POINTZ(10 20 30)', -1) WHERE id = 1"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -47; - } - -/* Inserting into ln_3d_wkt */ - sql = "INSERT INTO fdo_ln_3d_wkt (id, g) VALUES (1, GeomFromText('LINESTRINGZ(1 2 3, 4 5 6)', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -48; - } - -/* Inserting into ln_3d_wkb */ - sql = "INSERT INTO fdo_ln_3d_wkb (id, g) VALUES (1, GeomFromText('LINESTRINGZ(1 2 3, 4 5 6)', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -49; - } - -/* Inserting into ln_3d_wkb */ - sql = "INSERT INTO fdo_ln_3d_wkb (id, g) VALUES (2, GeomFromText('LINESTRINGM(1 2 10, 4 5 11)', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -50; - } - -/* Inserting into ln_3d_wkb */ - sql = "INSERT INTO fdo_ln_3d_wkb (id, g) VALUES (3, GeomFromText('LINESTRINGZM(1 2 3 10, 4 5 6 11)', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -51; - } - -/* Inserting into ln_3d_wkb */ - sql = "INSERT INTO fdo_ln_3d_wkb (id, g) VALUES (4, GeomFromText('LINESTRING(1 2, 4 5)', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -52; - } - -/* Inserting into pg_3d_wkt */ - sql = "INSERT INTO fdo_pg_3d_wkt (id, g) VALUES (1, GeomFromText('POLYGONZ((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 1 12 102, 11 12 103, 11 11 100))', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -53; - } - -/* Inserting into pg_3d_wkb */ - sql = "INSERT INTO fdo_pg_3d_wkb (id, g) VALUES (1, GeomFromText('POLYGONZ((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 1 12 102, 11 12 103, 11 11 100))', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -54; - } - -/* Inserting into pg_3d_wkb */ - sql = "INSERT INTO fdo_pg_3d_wkb (id, g) VALUES (2, GeomFromText('POLYGONZM((10 10 100 10, 15 10 101 11, 15 15 102 12, 10 15 103 13, 10 10 100 10), (11 11 100 10, 12 11 101 11, 1 12 102 12, 11 12 103 13, 11 11 100 10))', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -55; - } - -/* Inserting into pg_3d_wkb */ - sql = "INSERT INTO fdo_pg_3d_wkb (id, g) VALUES (3, GeomFromText('POLYGONM((10 10 10, 15 10 11, 15 15 12, 10 15 13, 10 10 10), (11 11 10, 12 11 11, 1 12 12, 11 12 13, 11 11 10))', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -56; - } - -/* Inserting into pg_3d_wkb */ - sql = "INSERT INTO fdo_pg_3d_wkb (id, g) VALUES (4, GeomFromText('POLYGON((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 1 12, 11 12, 11 11))', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -57; - } - -/* Inserting into mpt_3d_wkt */ - sql = "INSERT INTO fdo_mpt_3d_wkt (id, g) VALUES (1, GeomFromText('MULTIPOINTZ(1 2 3, 4 5 6)', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -58; - } - -/* Inserting into mpt_3d_wkb */ - sql = "INSERT INTO fdo_mpt_3d_wkb (id, g) VALUES (1, GeomFromText('MULTIPOINTZ(1 2 3, 4 5 6)', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -59; - } - -/* Inserting into mln_3d_wkt */ - sql = "INSERT INTO fdo_mln_3d_wkt (id, g) VALUES (1, GeomFromText('MULTILINESTRINGZ((1 2 3, 4 5 6), (7 8 9, 10 11 12))', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -60; - } - -/* Inserting into mln_3d_wkb */ - sql = "INSERT INTO fdo_mln_3d_wkb (id, g) VALUES (1, GeomFromText('MULTILINESTRINGZ((1 2 3, 4 5 6), (7 8 9, 10 11 12))', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -61; - } - -/* Inserting into mpg_3d_wkt */ - sql = "INSERT INTO fdo_mpg_3d_wkt (id, g) VALUES (1, GeomFromText('MULTIPOLYGONZ(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 1 12 102, 11 12 103, 11 11 100)), ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -62; - } - -/* Inserting into mpg_3d_wkb */ - sql = "INSERT INTO fdo_mpg_3d_wkb (id, g) VALUES (1, GeomFromText('MULTIPOLYGONZ(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 1 12 102, 11 12 103, 11 11 100)), ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -63; - } - -/* Inserting into gcoll_3d_wkt */ - sql = "INSERT INTO fdo_gcoll_3d_wkt (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(10 10 100), LINESTRINGZ(5 5 10, 6 6 11), POLYGONZ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -64; - } - -/* Inserting into gcoll_3d_wkb */ - sql = "INSERT INTO fdo_gcoll_3d_wkb (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONZ(POINZ(10 10 100), LINESTRINGZ(5 5 10, 6 6 11), POLYGONZ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', -1))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -65; - } - -/* checking MultiPoint 3D WKT */ - sql = "SELECT AsText(g) FROM fdo_mpt_3d_wkt"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -66; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -67; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -68; - } - if (strcmp(results[1], "MULTIPOINT Z(1 2 3, 4 5 6)") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -69; - } - sqlite3_free_table (results); - -/* checking MultiLinestring 3D WKT */ - sql = "SELECT AsText(g) FROM fdo_mln_3d_wkt"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -70; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -71; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -72; - } - if (strcmp(results[1], "MULTILINESTRING Z((1 2 3, 4 5 6), (7 8 9, 10 11 12))") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -73; - } - sqlite3_free_table (results); - -/* checking MultiPolygon 3D WKT */ - sql = "SELECT AsText(g) FROM fdo_mpg_3d_wkt"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -74; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -75; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -76; - } - if (strcmp(results[1], "MULTIPOLYGON Z(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 1 12 102, 11 12 103, 11 11 100)), ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -77; - } - sqlite3_free_table (results); - -/* checking GeometryCollection 3D WKT */ - sql = "SELECT AsText(g) FROM fdo_gcoll_3d_wkt"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -78; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -79; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -80; - } - if (strcmp(results[1], "GEOMETRYCOLLECTION Z(POINT Z(10 10 100), LINESTRING Z(5 5 10, 6 6 11), POLYGON Z((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -81; - } - sqlite3_free_table (results); - -/* dropping an FDO virtual table */ - sql = "DROP TABLE fdo_mpt_3d_wkt"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -82; - } - -/* discarding an FDO Geometry column */ - sql = "SELECT DiscardFDOGeometryColumn('fdo_mpt_3d_wkt', 'g')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -83; - } - sql = "SELECT DiscardFDOGeometryColumn(1, 'g')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -84; - } - sql = "SELECT DiscardFDOGeometryColumn('mpt_3d_wkt', 2)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -85; - } - -/* recovering an FDO Geometry column */ - sql = "SELECT RecoverFDOGeometryColumn('mpt_3d_wkt', 'g', -1, 4, 3, 'WKT')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -86; - } - -/* FDO shut-down */ - sql = "SELECT AutoFDOStop()"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -66; - } - - sql = "SELECT AddFDOGeometryColumn(1, 'g', -1, 7, 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -67; - } - sql = "SELECT AddFDOGeometryColumn('a', 2, -1, 7, 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -68; - } - sql = "SELECT AddFDOGeometryColumn('a', 'g', -1.5, 7, 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -69; - } - sql = "SELECT AddFDOGeometryColumn('a', 'g', -1, 'a', 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -70; - } - sql = "SELECT AddFDOGeometryColumn('a', 'g', -1, 7, 'a', 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -71; - } - sql = "SELECT AddFDOGeometryColumn('a', 'g', -1, 17, 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -72; - } - sql = "SELECT AddFDOGeometryColumn('a', 'g', -1, 7, 13, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -73; - } - sql = "SELECT AddFDOGeometryColumn('a', 'g', -1, 7, 3, 'DUMMY')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -74; - } - - sql = "SELECT RecoverFDOGeometryColumn(1, 'g', -1, 7, 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -75; - } - sql = "SELECT RecoverFDOGeometryColumn('a', 2, -1, 7, 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -76; - } - sql = "SELECT RecoverFDOGeometryColumn('a', 'g', -1.5, 7, 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -77; - } - sql = "SELECT RecoverFDOGeometryColumn('a', 'g', -1, 'a', 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -78; - } - sql = "SELECT RecoverFDOGeometryColumn('a', 'g', -1, 7, 'a', 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -79; - } - sql = "SELECT RecoverFDOGeometryColumn('a', 'g', -1, 17, 3, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -80; - } - sql = "SELECT RecoverFDOGeometryColumn('a', 'g', -1, 7, 13, 'WKB')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -81; - } - sql = "SELECT RecoverFDOGeometryColumn('a', 'g', -1, 7, 3, 'DUMMY')"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -82; - } - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -83; - } - - spatialite_cleanup(); - - return 0; -} diff --git a/src/spatialite/test/check_fdo3.c b/src/spatialite/test/check_fdo3.c deleted file mode 100644 index 1d15ce5..0000000 --- a/src/spatialite/test/check_fdo3.c +++ /dev/null @@ -1,172 +0,0 @@ -/* - - check_fdo3.c -- SpatiaLite Test Case - - Author: Sandro Furieri - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -#include "spatialite/gaiageo.h" - -#ifndef OMIT_GEOS /* including GEOS */ -#include -#endif - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_GEOS /* only if GEOS is supported */ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - const char *sql; - char **results; - int rows; - int columns; - - spatialite_init (0); - ret = sqlite3_open_v2 ("sql_stmt_tests/testFGF.sqlite", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open testFDO.sqlite db: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1000; - } - -/* FDO start-up */ - sql = "SELECT AutoFDOStart()"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -1; - } - -/* testing aggregate Union() Point FGF "HouseNumbers" */ - sql = "SELECT AsText(ST_Union(Geometry)) FROM fdo_HouseNumbers WHERE TEXT_LABEL LIKE '11%'"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -2; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -3; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -4; - } - if (strcmp(results[1], "MULTIPOINT(430417.1 5448290.9, 430666.6 5448125.4)") != 0) { - fprintf (stderr, "Unexpected error: invalid result |%s|\n", results[1]); - return -5; - } - sqlite3_free_table (results); - -/* testing Sum(GLength()) Linestring FGF "Centrerlines" */ - sql = "SELECT Sum(GLength(Geometry)) FROM fdo_Centerlines"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -6; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -7; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -8; - } - if (strncmp(results[1], "895.3351", 7) != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -9; - } - sqlite3_free_table (results); - -/* testing Sum(Area()) Polygon FGF "AssessmentParcels" */ - sql = "SELECT Sum(Area(Geometry)) FROM fdo_AssessmentParcels"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -10; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -11; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -12; - } - if (strncmp(results[1], "9022.1792", 9) != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -13; - } - sqlite3_free_table (results); - -/* FDO shut-down */ - sql = "SELECT AutoFDOStop()"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -14; - } - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -15; - } - - spatialite_cleanup(); -#endif /* end GEOS conditional */ - - return 0; -} diff --git a/src/spatialite/test/check_fdo_bufovflw.c b/src/spatialite/test/check_fdo_bufovflw.c deleted file mode 100644 index 686e66b..0000000 --- a/src/spatialite/test/check_fdo_bufovflw.c +++ /dev/null @@ -1,294 +0,0 @@ -/* - - check_fdo2.c -- SpatiaLite Test Case - - Author: Sandro Furieri - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - int suffix_len = 16 * 1024; /* 16 KB suffix */ - char *suffix; - char *pt_2d_wkt; - char *pt_3d_wkt; - char *geometry; - char *sql; - char **results; - int rows; - int columns; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - -/* FDO initialization */ - sql = "SELECT InitFDOSpatialMetadata()"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -2; - } - -/* setting up very long table and column names */ - suffix = malloc(suffix_len); - memset(suffix, 'z', suffix_len); - suffix[suffix_len-1] = '\0'; - - pt_2d_wkt = sqlite3_mprintf("pt_2d_wkt_%s", suffix); - pt_3d_wkt = sqlite3_mprintf("pt_3d_wkt_%s", suffix); - geometry = sqlite3_mprintf("geometry_%s", suffix); - -/* creating a Point 2D WKT table */ - sql = sqlite3_mprintf("CREATE TABLE %s (id INTEGER, name TEXT, value DOUBLE)", pt_2d_wkt); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -3; - } - sql = sqlite3_mprintf( "SELECT AddFDOGeometryColumn(%Q, %Q, -1, 1, 2, 'WKT')", pt_2d_wkt, geometry); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -4; - } - -/* creating a Point 3D WKT table */ - sql = sqlite3_mprintf("CREATE TABLE %s (id INTEGER, pic1 BLOB, pic2 BLOB)", pt_3d_wkt); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -5; - } - sql = sqlite3_mprintf("SELECT AddFDOGeometryColumn(%Q, %Q, -1, 1, 3, 'WKT')", pt_3d_wkt, geometry); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -6; - } - -/* FDO start-up */ - sql = "SELECT AutoFDOStart()"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -7; - } - -/* Inserting into pt_2d_wkt */ - sql = sqlite3_mprintf("INSERT INTO %s (id, name, value, %s) VALUES " - "(1, 'alpha', 0.1, GeomFromText('POINT(1 2)', -1))", - pt_2d_wkt, geometry); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -8; - } - -/* Inserting (take two) into pt_2d_wkt */ - sql = sqlite3_mprintf("INSERT INTO %s (id, name, value, %s) VALUES " - "(2, 'beta', 0.2, GeomFromText('POINT(2 3)', -1))", - pt_2d_wkt, geometry); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -9; - } - -/* Updating pt_2d_wkt */ - sql = sqlite3_mprintf("UPDATE %s SET name = 'beta', value = 0.2, " - "%s = GeomFromText('POINT(10 20)', -1) WHERE id = 1", - pt_2d_wkt, geometry); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -10; - } - -/* Deleting form pt_2d_wkt */ - sql = sqlite3_mprintf("DELETE FROM %s WHERE id = 1", pt_2d_wkt); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -11; - } - -/* Inserting into pt_3d_wkt */ - sql = sqlite3_mprintf("INSERT INTO %s (id, pic1, pic2, %s) VALUES " - "(1, zeroblob(16), NULL, GeomFromText('POINTZ(1 2 3)', -1))", - pt_3d_wkt, geometry); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -12; - } - -/* checking pt_2d_wkt */ - sql = sqlite3_mprintf("SELECT AsText(%s) FROM %s", geometry, pt_2d_wkt); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -13; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -14; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -15; - } - if (strcmp(results[1], "POINT(2 3)") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -16; - } - sqlite3_free_table (results); - -/* checking pt_3d_wkt */ - sql = sqlite3_mprintf("SELECT AsText(%s) FROM %s", geometry, pt_3d_wkt); - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -17; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -18; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -19; - } - if (strcmp(results[1], "POINT Z(1 2 3)") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -20; - } - sqlite3_free_table (results); - -/* dropping an FDO virtual table */ - sql = sqlite3_mprintf("DROP TABLE %s", pt_2d_wkt); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -21; - } - -/* discarding an FDO Geometry column */ - sql = sqlite3_mprintf("SELECT DiscardFDOGeometryColumn(%Q, %Q)", pt_3d_wkt, geometry); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -22; - } - -/* recovering an FDO Geometry column */ - sql = sqlite3_mprintf("SELECT RecoverFDOGeometryColumn(%Q, %Q, -1, 1, 3, 'WKT')", pt_3d_wkt, geometry); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -23; - } - -/* FDO shut-down */ - sql = "SELECT AutoFDOStop()"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -24; - } - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -25; - } - - spatialite_cleanup(); - - sqlite3_free(pt_2d_wkt); - sqlite3_free(pt_3d_wkt); - sqlite3_free(geometry); - free(suffix); - - return 0; -} diff --git a/src/spatialite/test/check_gaia_utf8.c b/src/spatialite/test/check_gaia_utf8.c deleted file mode 100644 index cc50199..0000000 --- a/src/spatialite/test/check_gaia_utf8.c +++ /dev/null @@ -1,117 +0,0 @@ -/* - - check_gaia_utf8.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#define _GNU_SOURCE -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" -#include "spatialite/gaiaaux.h" - -#ifdef _WIN32 -#include "asprintf4win.h" -#endif - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - void * converter; - char *test_str1; - int err; - - asprintf(&test_str1, "Hello World"); - gaiaConvertCharset(&test_str1, "ASCII", "UTF-8"); - if (strcmp(test_str1, "Hello World") != 0) { - fprintf(stderr, "bad ASCII to UTF-8 conversion: %s\n", test_str1); - free(test_str1); - return -1; - } - free(test_str1); - -#if 0 - /* TODO: this will cause a buffer overflow */ - asprintf(&test_str1, "Hello World"); - gaiaConvertCharset(&test_str1, "ASCII", "UTF-16LE"); - if (memcmp(test_str1, "H\0e\0l\0l\0o\0 \0W\0o\0r\0l\0d\0\0\0", 24) != 0) { - fprintf(stderr, "bad ASCII to UTF-16LE conversion\n"); - free(test_str1); - return -2; - } - free(test_str1); -#endif - - converter = gaiaCreateUTF8Converter ("CP1252"); - if (! converter) { - fprintf(stderr, "null UTF8 converter\n"); - return -3; - } - - test_str1 = gaiaConvertToUTF8(converter, "Hello world", strlen("Hello world"), &err); - if (memcmp("Hello world", test_str1, strlen("Hello world") + 1) != 0) { - fprintf(stderr, "bad conversion to UTF8: %s\n", test_str1); - free(test_str1); - return -4; - } - free(test_str1); - - gaiaFreeUTF8Converter (converter); - converter = NULL; - /* test null converter */ - gaiaFreeUTF8Converter (converter); - - test_str1 = gaiaConvertToUTF8(converter, "Hello world", strlen("Hello world"), &err); - if ((test_str1 != NULL) || (err != 1)) { - fprintf(stderr, "unexpected null converter result: %s, %i\n", test_str1, err); - return -5; - } - - /* there is no sane way to test this automatically */ - printf("Local codeset: %s\n", gaiaGetLocaleCharset() ); -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/check_gaia_util.c b/src/spatialite/test/check_gaia_util.c deleted file mode 100644 index 9a832aa..0000000 --- a/src/spatialite/test/check_gaia_util.c +++ /dev/null @@ -1,413 +0,0 @@ -/* - - check_gaia_util.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#define _GNU_SOURCE -#include -#include -#include - -#include "sqlite3.h" -#include "spatialite.h" -#include "spatialite/gaiaaux.h" - -#ifdef _WIN32 -#include "asprintf4win.h" -#endif - -int main (int argc, char *argv[]) -{ - int result; - char *test_str1; - char *quoted_str; - - result = gaiaIsReservedSqliteName ("AUTOINCREMENT"); - if (!result) { - fprintf(stderr, "gaiaIsReservedSqliteName() fail for AUTOINCREMENT: %i\n", result); - return -1; - } - - result = gaiaIsReservedSqliteName ("AUTOINCREMEN"); - if (result) { - fprintf(stderr, "gaiaIsReservedSqliteName() fail for AUTOINCREMEN: %i\n", result); - return -2; - } - - result = gaiaIsReservedSqliteName ("AUTOINCREMENTED"); - if (result) { - fprintf(stderr, "gaiaIsReservedSqliteName() fail for AUTOINCREMENT: %i\n", result); - return -3; - } - - result = gaiaIsReservedSqliteName ("foo"); - if (result) { - fprintf(stderr, "gaiaIsReservedSqliteName() fail for foo: %i\n", result); - return -4; - } - - result = gaiaIsReservedSqliteName ("ALL"); /* first item */ - if (!result) { - fprintf(stderr, "gaiaIsReservedSqliteName() fail for ALL: %i\n", result); - return -5; - } - - result = gaiaIsReservedSqliteName ("WHERE"); /* last item */ - if (!result) { - fprintf(stderr, "gaiaIsReservedSqliteName() fail for WHERE: %i\n", result); - return -6; - } - - result = gaiaIsReservedSqliteName ("autoincrement"); - if (!result) { - fprintf(stderr, "gaiaIsReservedSqliteName() fail for autoincrement: %i\n", result); - return -7; - } - - result = gaiaIsReservedSqlName ("SELECT"); - if (!result) { - fprintf(stderr, "gaiaIsReservedSqlName() fail for SELECT: %i\n", result); - return -8; - } - - result = gaiaIsReservedSqlName ("select"); - if (!result) { - fprintf(stderr, "gaiaIsReservedSqlName() fail for select: %i\n", result); - return -9; - } - - result = gaiaIsReservedSqlName ("foo"); - if (result) { - fprintf(stderr, "gaiaIsReservedSqlName() fail for foo: %i\n", result); - return -10; - } - - result = gaiaIsReservedSqlName ("ABSOLUTE"); - if (!result) { - fprintf(stderr, "gaiaIsReservedSqlName() fail for ABSOLUTE: %i\n", result); - return -11; - } - - result = gaiaIsReservedSqlName ("ZONE"); - if (!result) { - fprintf(stderr, "gaiaIsReservedSqlName() fail for ZONE: %i\n", result); - return -12; - } - - result = gaiaIsReservedSqlName ("SELECTED"); - if (result) { - fprintf(stderr, "gaiaIsReservedSqlName() fail for SELECTED: %i\n", result); - return -13; - } - - result = gaiaIsReservedSqlName ("SELEC"); - if (result) { - fprintf(stderr, "gaiaIsReservedSqlName() fail for SELEC: %i\n", result); - return -14; - } - - result = gaiaIllegalSqlName(NULL); - if (!result) { - fprintf(stderr, "gaiaIllegalSqlName() fail for (NULL): %i\n", result); - return -15; - } - - result = gaiaIllegalSqlName("a"); - if (result) { - fprintf(stderr, "gaiaIllegalSqlName() fail for a: %i\n", result); - return -16; - } - result = gaiaIllegalSqlName("-"); - if (!result) { - fprintf(stderr, "gaiaIllegalSqlName() fail for -: %i\n", result); - return -17; - } - result = gaiaIllegalSqlName("AbbcdE0187r"); - if (result) { - fprintf(stderr, "gaiaIllegalSqlName() fail for AbbcdE0187r: %i\n", result); - return -18; - } - result = gaiaIllegalSqlName("AbbcdE0187+"); - if (!result) { - fprintf(stderr, "gaiaIllegalSqlName() fail for AbbcdE0187r+: %i\n", result); - return -19; - } - result = gaiaIllegalSqlName(""); - if (!result) { - fprintf(stderr, "gaiaIllegalSqlName() fail for (empty): %i\n", result); - return -20; - } - result = gaiaIllegalSqlName("_ABCedFg"); - if (!result) { - fprintf(stderr, "gaiaIllegalSqlName() fail for (empty): %i\n", result); - return -21; - } - - asprintf(&test_str1, "SELECT %s from %s;", "Foo", "Bar"); - gaiaCleanSqlString(test_str1); - if (strcmp(test_str1, "SELECT Foo from Bar;") != 0) { - fprintf(stderr, "gaiaCleanSqlString failure: %s\n", test_str1); - free(test_str1); - return -22; - } - free(test_str1); - - asprintf(&test_str1, "SELECT %s from %s; ", "Foo", "Bar"); - gaiaCleanSqlString(test_str1); - if (strcmp(test_str1, "SELECT Foo from Bar;") != 0) { - fprintf(stderr, "gaiaCleanSqlString failure: %s\n", test_str1); - free(test_str1); - return -23; - } - free(test_str1); - - asprintf(&test_str1, "SELECT %s from %s; ", "Foo", "'"); - gaiaCleanSqlString(test_str1); - if (strcmp(test_str1, "SELECT Foo from '';") != 0) { - fprintf(stderr, "gaiaCleanSqlString failure: %s\n", test_str1); - free(test_str1); - return -24; - } - free(test_str1); - -#if 0 - /* TODO: This will cause a buffer overflow */ - asprintf(&test_str1, "SELECT %s from %s;", "Foo", "'"); - gaiaCleanSqlString(test_str1); - if (strcmp(test_str1, "SELECT Foo from '';") != 0) { - fprintf(stderr, "gaiaCleanSqlString failure: %s\n", test_str1); - free(test_str1); - return -25; - } - free(test_str1); -#endif - - asprintf(&test_str1, " "); - gaiaCleanSqlString(test_str1); - if (strcmp(test_str1, "") != 0) { - fprintf(stderr, "gaiaCleanSqlString failure: %s\n", test_str1); - free(test_str1); - return -26; - } - free(test_str1); - - asprintf(&test_str1, "SELECT %s from %s;", "Foo", "Bar"); - quoted_str = gaiaSingleQuotedSql(test_str1); - if (strcmp(quoted_str, "SELECT Foo from Bar;") != 0) { - fprintf(stderr, "gaiaSingleQuotedSql failure: %s\n", quoted_str); - free(test_str1); - free(quoted_str); - return -27; - } - free(test_str1); - free(quoted_str); - - asprintf(&test_str1, "SELECT %s from %s; ", "Foo", "Bar"); - quoted_str = gaiaSingleQuotedSql(test_str1); - if (strcmp(quoted_str, "SELECT Foo from Bar;") != 0) { - fprintf(stderr, "gaiaSingleQuotedSql failure: %s\n", quoted_str); - free(test_str1); - free(quoted_str); - return -28; - } - free(test_str1); - free(quoted_str); - - asprintf(&test_str1, "SELECT %s from %s;", "Foo", "'"); - quoted_str = gaiaSingleQuotedSql(test_str1); - if (strcmp(quoted_str, "SELECT Foo from '';") != 0) { - fprintf(stderr, "gaiaSingleQuotedSql failure: %s\n", quoted_str); - free(test_str1); - free(quoted_str); - return -29; - } - free(test_str1); - free(quoted_str); - - asprintf(&test_str1, "SELECT %s from %s ; ", "Foo", "Bar"); - quoted_str = gaiaSingleQuotedSql(test_str1); - if (strcmp(quoted_str, "SELECT Foo from Bar ;") != 0) { - fprintf(stderr, "gaiaSingleQuotedSql failure: %s\n", quoted_str); - free(test_str1); - free(quoted_str); - return -30; - } - free(test_str1); - free(quoted_str); - - asprintf(&test_str1, "SELECT %s from %s;", "'", "Bar"); - quoted_str = gaiaSingleQuotedSql(test_str1); - if (strcmp(quoted_str, "SELECT '' from Bar;") != 0) { - fprintf(stderr, "gaiaSingleQuotedSql failure: %s\n", quoted_str); - free(test_str1); - free(quoted_str); - return -31; - } - free(test_str1); - free(quoted_str); - - asprintf(&test_str1, "My Name"); - quoted_str = gaiaDoubleQuotedSql(test_str1); - if (strcmp(quoted_str, "My Name") != 0) { - fprintf(stderr, "gaiaDoubleQuotedSql failure: %s\n", quoted_str); - free(test_str1); - free(quoted_str); - return -32; - } - free(test_str1); - free(quoted_str); - - quoted_str = gaiaDoubleQuotedSql(NULL); - if (quoted_str != NULL) { - fprintf(stderr, "gaiaDoubleQuotedSql NULL failure: %s\n", quoted_str); - free(quoted_str); - return -33; - } - - quoted_str = gaiaSingleQuotedSql(NULL); - if (quoted_str != NULL) { - fprintf(stderr, "gaiaSingleQuotedSql NULL failure: %s\n", quoted_str); - free(quoted_str); - return -34; - } - - quoted_str = gaiaQuotedSql("foo", GAIA_SQL_SINGLE_QUOTE); - if (strcmp(quoted_str, "foo") != 0) { - fprintf(stderr, "gaiaQuotedSql failure SINGLE_QUOTE: %s\n", quoted_str); - free(quoted_str); - return -35; - } - free(quoted_str); - - quoted_str = gaiaQuotedSql("foo", GAIA_SQL_DOUBLE_QUOTE); - if (strcmp(quoted_str, "foo") != 0) { - fprintf(stderr, "gaiaQuotedSql failure DOUBLE_QUOTE: %s\n", quoted_str); - free(quoted_str); - return -36; - } - free(quoted_str); - - quoted_str = gaiaQuotedSql("foo", 1000); - if (quoted_str != NULL) { - fprintf(stderr, "gaiaQuotedSql failure 1000: %s\n", quoted_str); - free(quoted_str); - return -37; - } - - asprintf(&test_str1, "My \"Name"); - quoted_str = gaiaDoubleQuotedSql(test_str1); - if (strcmp(quoted_str, "My \"\"Name") != 0) { - fprintf(stderr, "gaiaDoubleQuotedSql failure: %s\n", quoted_str); - free(test_str1); - free(quoted_str); - return -38; - } - free(test_str1); - free(quoted_str); - - asprintf(&test_str1, "My \"Name "); - quoted_str = gaiaDoubleQuotedSql(test_str1); - if (strcmp(quoted_str, "My \"\"Name") != 0) { - fprintf(stderr, "gaiaDoubleQuotedSql failure: %s\n", quoted_str); - free(test_str1); - free(quoted_str); - return -39; - } - free(test_str1); - free(quoted_str); - - asprintf(&test_str1, "%s", ""); - quoted_str = gaiaDoubleQuotedSql(test_str1); - if (strcmp(quoted_str, "") != 0) { - fprintf(stderr, "gaiaDoubleQuotedSql failure: %s\n", quoted_str); - free(test_str1); - free(quoted_str); - return -40; - } - free(test_str1); - free(quoted_str); - - asprintf(&test_str1, " "); - quoted_str = gaiaDoubleQuotedSql(test_str1); - if (strcmp(quoted_str, "") != 0) { - fprintf(stderr, "gaiaDoubleQuotedSql failure: |%s|\n", quoted_str); - free(test_str1); - free(quoted_str); - return -41; - } - free(test_str1); - free(quoted_str); - - asprintf(&test_str1, "' "); - quoted_str = gaiaDoubleQuotedSql(test_str1); - if (strcmp(quoted_str, "'") != 0) { - fprintf(stderr, "gaiaDoubleQuotedSql failure: %s\n", quoted_str); - free(test_str1); - free(quoted_str); - return -42; - } - free(test_str1); - free(quoted_str); - - asprintf(&test_str1, "'"); - quoted_str = gaiaDoubleQuotedSql(test_str1); - if (strcmp(quoted_str, "'") != 0) { - fprintf(stderr, "gaiaDoubleQuotedSql failure: %s\n", quoted_str); - free(test_str1); - free(quoted_str); - return -43; - } - free(test_str1); - free(quoted_str); - - asprintf(&test_str1, "\""); - quoted_str = gaiaSingleQuotedSql(test_str1); - if (strcmp(quoted_str, "\"") != 0) { - fprintf(stderr, "gaiaSingleQuotedSql failure: %s\n", quoted_str); - free(test_str1); - free(quoted_str); - return -44; - } - free(test_str1); - free(quoted_str); - - return 0; -} diff --git a/src/spatialite/test/check_geom_aux.c b/src/spatialite/test/check_geom_aux.c deleted file mode 100644 index e276fbd..0000000 --- a/src/spatialite/test/check_geom_aux.c +++ /dev/null @@ -1,995 +0,0 @@ -/* - - check_geoms.c -- SpatiaLite Test Case - - Author: Sandro Furieri - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "sqlite3.h" -#include "spatialite.h" - -#include - -int main (int argc, char *argv[]) -{ - int ret; - sqlite3 *handle; - gaiaDynamicLinePtr dyn; - gaiaDynamicLinePtr dyn2; - gaiaDynamicLinePtr dyn3; - gaiaPointPtr pt; - gaiaPointPtr pt1; - gaiaPointPtr pt2; - gaiaGeomCollPtr geom_pt; - gaiaGeomCollPtr geom1; - gaiaGeomCollPtr geom2; - gaiaGeomCollPtr geom3; - gaiaLinestringPtr ln; - gaiaLinestringPtr line1; - gaiaLinestringPtr line2; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - gaiaRingPtr ring1; - gaiaRingPtr ring2; - gaiaPolygonPtr polyg1; - gaiaPolygonPtr polyg2; - double xy[6]; - unsigned char *blob; - int size; - double min; - double max; - int cnt; - gaiaOutBuffer wkt; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1000; - } - gaiaOutBufferInitialize (&wkt); - -/* testing Dynamic Line */ - dyn = gaiaAllocDynamicLine(); - pt1 = gaiaAppendPointToDynamicLine(dyn, 1.0, 2.0); - pt2 = gaiaAppendPointToDynamicLine(dyn, 10.0, 11.0); - gaiaDynamicLineInsertAfter(dyn, pt1, 2.0, 3.0); - gaiaDynamicLineInsertBefore(dyn, pt2, 9.0, 10.0); - gaiaAppendPointToDynamicLine(dyn, 11.0, 12.0); - gaiaDynamicLineDeletePoint(dyn, pt2); - dyn2 = gaiaCloneDynamicLine(dyn); - dyn3 = gaiaReverseDynamicLine(dyn2); - - pt = dyn3->First; - cnt = 0; - while (pt) - { - /* testing result */ - switch (cnt) - { - case 0: - if (pt->X != 11.0 || pt->Y != 12.0) - { - fprintf(stderr, "ReverseDynamicLine: unexpected result (0)\n"); - return -1; - } - break; - case 1: - if (pt->X != 9.0 || pt->Y != 10.0) - { - fprintf(stderr, "ReverseDynamicLine: unexpected result (1)\n"); - return -3; - } - break; - case 2: - if (pt->X != 2.0 || pt->Y != 3.0) - { - fprintf(stderr, "ReverseDynamicLine: unexpected result (2)\n"); - return -4; - } - break; - case 3: - if (pt->X != 1.0 || pt->Y != 2.0) - { - fprintf(stderr, "ReverseDynamicLine: unexpected result (3)\n"); - return -5; - } - break; - default: - fprintf(stderr, "ReverseDynamicLine: Point count > 4\n"); - return -6; - }; - cnt++; - pt = pt->Next; - } - - gaiaFreeDynamicLine(dyn3); - gaiaFreeDynamicLine(dyn2); - xy[0] = 10.0; - xy[1] = 20.0; - xy[2] = 11.0; - xy[3] = 21.0; - xy[4] = 12.0; - xy[5] = 22.0; - dyn3 = gaiaCreateDynamicLine(xy, 3); - dyn2 = gaiaDynamicLineJoinAfter(dyn, pt1, dyn3); - - pt = dyn2->First; - cnt = 0; - while (pt) - { - /* testing result */ - switch (cnt) - { - case 0: - if (pt->X != 1.0 || pt->Y != 2.0) - { - fprintf(stderr, "DynamicLineJoinAfter: unexpected result (0)\n"); - return -7; - } - break; - case 1: - if (pt->X != 10.0 || pt->Y != 20.0) - { - fprintf(stderr, "DynamicLineJoinAfter: unexpected result (1)\n"); - return -8; - } - break; - case 2: - if (pt->X != 11.0 || pt->Y != 21.0) - { - fprintf(stderr, "DynamicLineJoinAfter: unexpected result (2)\n"); - return -9; - } - break; - case 3: - if (pt->X != 12.0 || pt->Y != 22.0) - { - fprintf(stderr, "DynamicLineJoinAfter: unexpected result (3)\n"); - return -10; - } - break; - case 4: - if (pt->X != 2.0 || pt->Y != 3.0) - { - fprintf(stderr, "DynamicLineJoinAfter: unexpected result (4)\n"); - return -11; - } - break; - case 5: - if (pt->X != 9.0 || pt->Y != 10.0) - { - fprintf(stderr, "DynamicLineJoinAfter: unexpected result (5)\n"); - return -12; - } - break; - case 6: - if (pt->X != 11.0 || pt->Y != 12.0) - { - fprintf(stderr, "DynamicLineJoinAfter: unexpected result (6)\n"); - return -13; - } - break; - default: - fprintf(stderr, "DynamicLineJoinAfter: Point count > 7\n"); - return -14; - }; - cnt++; - pt = pt->Next; - } - - gaiaFreeDynamicLine(dyn2); - dyn2 = gaiaDynamicLineJoinBefore(dyn, pt1, dyn3); - - pt = dyn2->First; - cnt = 0; - while (pt) - { - /* testing result */ - switch (cnt) - { - case 0: - if (pt->X != 10.0 || pt->Y != 20.0) - { - fprintf(stderr, "DynamicLineJoinBefore: unexpected result (0)\n"); - return -15; - } - break; - case 1: - if (pt->X != 11.0 || pt->Y != 21.0) - { - fprintf(stderr, "DynamicLineJoinBefore: unexpected result (1)\n"); - return -16; - } - break; - case 2: - if (pt->X != 12.0 || pt->Y != 22.0) - { - fprintf(stderr, "DynamicLineJoinBefore: unexpected result (2)\n"); - return -17; - } - break; - case 3: - if (pt->X != 1.0 || pt->Y != 2.0) - { - fprintf(stderr, "DynamicLineJoinBefore: unexpected result (3)\n"); - return -18; - } - break; - case 4: - if (pt->X != 2.0 || pt->Y != 3.0) - { - fprintf(stderr, "DynamicLineJoinBefore: unexpected result (4)\n"); - return -19; - } - break; - case 5: - if (pt->X != 9.0 || pt->Y != 10.0) - { - fprintf(stderr, "DynamicLineJoinBefore: unexpected result (5)\n"); - return -20; - } - break; - case 6: - if (pt->X != 11.0 || pt->Y != 12.0) - { - fprintf(stderr, "DynamicLineJoinBefore: unexpected result (6)\n"); - return -21; - } - break; - default: - fprintf(stderr, "DynamicLineJoinBefore: Point count > 7\n"); - return -22; - }; - cnt++; - pt = pt->Next; - } - - gaiaFreeDynamicLine(dyn3); - gaiaFreeDynamicLine(dyn2); - dyn3 = gaiaCloneDynamicLine(dyn); - pt1 = gaiaDynamicLineFindByCoords(dyn, 9.0, 10.0); - dyn2 = gaiaDynamicLineSplitBefore(dyn, pt1); - - pt = dyn2->First; - cnt = 0; - while (pt) - { - /* testing result */ - switch (cnt) - { - case 0: - if (pt->X != 1.0 || pt->Y != 2.0) - { - fprintf(stderr, "DynamicLineSplitBefore: unexpected result (0)\n"); - return -23; - } - break; - case 1: - if (pt->X != 2.0 || pt->Y != 3.0) - { - fprintf(stderr, "DynamicLineSplitBefore: unexpected result (1)\n"); - return -24; - } - break; - default: - fprintf(stderr, "DynamicLineSplitBefore: Point count > 2\n"); - return -25; - }; - cnt++; - pt = pt->Next; - } - - gaiaFreeDynamicLine(dyn2); - gaiaFreeDynamicLine(dyn); - pt1 = gaiaDynamicLineFindByPos(dyn3, 1); - - dyn2 = gaiaDynamicLineSplitAfter(dyn3, pt1); - - pt = dyn2->First; - cnt = 0; - while (pt) - { - /* testing result */ - switch (cnt) - { - case 0: - if (pt->X != 9.0 || pt->Y != 10.0) - { - fprintf(stderr, "DynamicLineSplitAfter: unexpected result (0)\n"); - return -26; - } - break; - case 1: - if (pt->X != 11.0 || pt->Y != 12.0) - { - fprintf(stderr, "DynamicLineSplitAfter: unexpected result (1)\n"); - return -27; - } - break; - default: - fprintf(stderr, "DynamicLineSplitAfter: Point count > 2\n"); - return -28; - }; - cnt++; - pt = pt->Next; - } - - gaiaFreeDynamicLine(dyn2); - gaiaFreeDynamicLine(dyn3); - -/* testing Geometry */ - geom_pt = gaiaAllocGeomColl(); - gaiaAddPointToGeomColl(geom_pt, 5.0, 5.0); - geom1 = gaiaAllocGeomColl(); - gaiaAddPointToGeomColl(geom1, 15.0, 15.0); - ln = gaiaAddLinestringToGeomColl(geom1, 2); - gaiaLineSetPoint(ln, 0, 1.0, 1.0, 0.0, 0.0); - gaiaLineSetPoint(ln, 1, 2.0, 2.0, 0.0, 0.0); - pg = gaiaAddPolygonToGeomColl(geom1, 5, 0); - rng = pg->Exterior; - gaiaRingSetPoint(rng, 0, 1.0, 1.0, 0.0, 0.0); - gaiaRingSetPoint(rng, 1, 5.0, 1.0, 0.0, 0.0); - gaiaRingSetPoint(rng, 2, 5.0, 5.0, 0.0, 0.0); - gaiaRingSetPoint(rng, 3, 1.0, 5.0, 0.0, 0.0); - gaiaRingSetPoint(rng, 4, 1.0, 1.0, 0.0, 0.0); - rng = gaiaAllocRing (5); - gaiaRingSetPoint(rng, 0, 2.0, 2.0, 0.0, 0.0); - gaiaRingSetPoint(rng, 1, 3.0, 2.0, 0.0, 0.0); - gaiaRingSetPoint(rng, 2, 3.0, 3.0, 0.0, 0.0); - gaiaRingSetPoint(rng, 3, 2.0, 3.0, 0.0, 0.0); - gaiaRingSetPoint(rng, 4, 2.0, 2.0, 0.0, 0.0); - gaiaInsertInteriorRing(pg, rng); - gaiaFreeRing(rng); - rng = gaiaAllocRing (5); - gaiaRingSetPoint(rng, 0, 3.5, 3.5, 0.0, 0.0); - gaiaRingSetPoint(rng, 1, 4.0, 3.5, 0.0, 0.0); - gaiaRingSetPoint(rng, 2, 4.0, 4.0, 0.0, 0.0); - gaiaRingSetPoint(rng, 3, 3.5, 4.0, 0.0, 0.0); - gaiaRingSetPoint(rng, 4, 3.5, 3.5, 0.0, 0.0); - gaiaInsertInteriorRing(pg, rng); - gaiaFreeRing(rng); - geom2 = gaiaCloneGeomColl(geom1); - - gaiaOutWkt(&wkt, geom2); - if (wkt.Error || wkt.Buffer == NULL) - { - fprintf(stderr, "Geom2D: unable to get WKT\n"); - return -29; - } - else - { - /* testing WKT result */ - if (strcmp(wkt.Buffer, "GEOMETRYCOLLECTION(POINT(15 15), LINESTRING(1 1, 2 2), POLYGON((1 1, 5 1, 5 5, 1 5, 1 1), (2 2, 3 2, 3 3, 2 3, 2 2), (3.5 3.5, 4 3.5, 4 4, 3.5 4, 3.5 3.5)))") != 0) - { - /* unexpected result */ - fprintf(stderr, "Geom2D: unexpected result %s|\n", wkt.Buffer); - return -30; - } - gaiaOutBufferReset (&wkt); - } - - gaiaMakeLine(NULL, geom2, &blob, &size); - if (blob) - free(blob); - gaiaMakeLine(geom_pt, NULL, &blob, &size); - if (blob) - free(blob); - gaiaMakeLine(geom_pt, geom2, &blob, &size); - if (blob) - free(blob); - gaiaMakeLine(geom1, geom2, &blob, &size); - if (blob) - free(blob); - gaiaFreeGeomColl(geom2); - geom2 = gaiaCloneGeomCollPoints(geom1); - - gaiaOutWkt(&wkt, geom2); - if (wkt.Error || wkt.Buffer == NULL) - { - fprintf(stderr, "Geom2D Points: unable to get WKT\n"); - return -30; - } - else - { - /* testing WKT result */ - if (strcmp(wkt.Buffer, "MULTIPOINT(15 15)") != 0) - { - /* unexpected result */ - fprintf(stderr, "Geom2D Points: unexpected result %s|\n", wkt.Buffer); - return -31; - } - gaiaOutBufferReset (&wkt); - } - - gaiaFreeGeomColl(geom2); - geom2 = gaiaCloneGeomCollLinestrings(geom1); - - gaiaOutWkt(&wkt, geom2); - if (wkt.Error || wkt.Buffer == NULL) - { - fprintf(stderr, "Geom2D Lines: unable to get WKT\n"); - return -32; - } - else - { - /* testing WKT result */ - if (strcmp(wkt.Buffer, "MULTILINESTRING((1 1, 2 2))") != 0) - { - /* unexpected result */ - fprintf(stderr, "Geom2D Lines: unexpected result %s|\n", wkt.Buffer); - return -33; - } - gaiaOutBufferReset (&wkt); - } - - gaiaFreeGeomColl(geom2); - geom2 = gaiaCloneGeomCollPolygons(geom1); - - gaiaOutWkt(&wkt, geom2); - if (wkt.Error || wkt.Buffer == NULL) - { - fprintf(stderr, "Geom2D Polygons: unable to get WKT\n"); - return -34; - } - else - { - /* testing WKT result */ - if (strcmp(wkt.Buffer, "MULTIPOLYGON(((1 1, 5 1, 5 5, 1 5, 1 1), (2 2, 3 2, 3 3, 2 3, 2 2), (3.5 3.5, 4 3.5, 4 4, 3.5 4, 3.5 3.5)))") != 0) - { - /* unexpected result */ - fprintf(stderr, "Geom2D Polygons: unexpected result %s|\n", wkt.Buffer); - return -35; - } - gaiaOutBufferReset (&wkt); - } - - gaiaFreeGeomColl(geom2); - min = gaiaMeasureLength(geom1->FirstLinestring->DimensionModel, - geom1->FirstLinestring->Coords, geom1->FirstLinestring->Points); - rng = geom1->FirstPolygon->Exterior; - min = gaiaMeasureArea(rng); - gaiaRingCentroid(rng, &min, &max); - gaiaIsPointOnPolygonSurface(geom1->FirstPolygon, 17.0, 22.0); - min = gaiaMinDistance(1.0, 2.0, geom1->FirstLinestring->DimensionModel, - geom1->FirstLinestring->Coords, geom1->FirstLinestring->Points); - -/* cast XYZ */ - geom2 = gaiaCastGeomCollToXY(geom1); - gaiaFreeGeomColl(geom2); - geom2 = gaiaCastGeomCollToXYZ(geom1); - geom3 = gaiaCloneGeomColl(geom2); - gaiaFreeGeomColl(geom3); - geom3 = gaiaCloneGeomCollPoints(geom2); - gaiaFreeGeomColl(geom3); - geom3 = gaiaCloneGeomCollLinestrings(geom2); - gaiaFreeGeomColl(geom3); - geom3 = gaiaCloneGeomCollPolygons(geom2); - gaiaFreeGeomColl(geom3); - rng = geom2->FirstPolygon->Exterior; - - min = gaiaMeasureLength(geom2->FirstLinestring->DimensionModel, - geom2->FirstLinestring->Coords, geom2->FirstLinestring->Points); - if (min < 1.41421 || min > 1.41422) - { - /* unexpected result */ - fprintf(stderr, "Geom3D Length: unexpected result %1.6f|\n", min); - return -36; - } - - min = gaiaMeasureArea(rng); - if (min != 16.0) - { - /* unexpected result */ - fprintf(stderr, "Geom3D Area: unexpected result %1.6f|\n", min); - return -37; - } - - gaiaRingCentroid(rng, &min, &max); - if (min != 3.0 || max != 3.0) - { - /* unexpected result */ - fprintf(stderr, "Geom3D Centroid: unexpected result %1.6f %1.6f|\n", min, max); - return -38; - } - - cnt = gaiaIsPointOnPolygonSurface(geom2->FirstPolygon, 17.0, 22.0); - if (cnt) - { - /* unexpected result */ - fprintf(stderr, "Geom3D IsPointOnPolygonSurface: unexpected result %d|\n", cnt); - return -39; - } - - min = gaiaMinDistance(1.0, 2.0, geom2->FirstLinestring->DimensionModel, - geom2->FirstLinestring->Coords, geom2->FirstLinestring->Points); - if (min < 0.70710 || min > 0.70711) - { - /* unexpected result */ - fprintf(stderr, "Geom3D MinDistance: unexpected result %1.6f|\n", min); - return -40; - } - - gaiaFreeGeomColl(geom2); - -/* cast to XYM */ - geom2 = gaiaCastGeomCollToXYM(geom1); - geom3 = gaiaCloneGeomColl(geom2); - gaiaFreeGeomColl(geom3); - geom3 = gaiaCloneGeomCollPoints(geom2); - gaiaFreeGeomColl(geom3); - geom3 = gaiaCloneGeomCollLinestrings(geom2); - gaiaFreeGeomColl(geom3); - geom3 = gaiaCloneGeomCollPolygons(geom2); - gaiaFreeGeomColl(geom3); - min = gaiaMeasureLength(geom2->FirstLinestring->DimensionModel, - geom2->FirstLinestring->Coords, geom2->FirstLinestring->Points); - if (min < 1.41421 || min > 1.41422) - { - /* unexpected result */ - fprintf(stderr, "GeomM Length: unexpected result %1.6f|\n", min); - return -41; - } - - rng = geom2->FirstPolygon->Exterior; - min = gaiaMeasureArea(rng); - if (min != 16.0) - { - /* unexpected result */ - fprintf(stderr, "GeomM Area: unexpected result %1.6f|\n", min); - return -42; - } - - gaiaRingCentroid(rng, &min, &max); - if (min != 3.0 || max != 3.0) - { - /* unexpected result */ - fprintf(stderr, "GeomM Centroid: unexpected result %1.6f %1.6f|\n", min, max); - return -43; - } - - gaiaIsPointOnPolygonSurface(geom2->FirstPolygon, 17.0, 22.0); - if (cnt) - { - /* unexpected result */ - fprintf(stderr, "GeomM IsPointOnPolygonSurface: unexpected result %d|\n", cnt); - return -44; - } - - min = gaiaMinDistance(1.0, 2.0, geom2->FirstLinestring->DimensionModel, - geom2->FirstLinestring->Coords, geom2->FirstLinestring->Points); - if (min < 0.70710 || min > 0.70711) - { - /* unexpected result */ - fprintf(stderr, "GeomM MinDistance: unexpected result %1.6f|\n", min); - return -45; - } - - gaiaFreeGeomColl(geom2); - -/* cast to XYZM */ - geom2 = gaiaCastGeomCollToXYZM(geom1); - geom3 = gaiaCloneGeomColl(geom2); - gaiaFreeGeomColl(geom3); - gaiaMRangeGeometry(geom2, &min, &max); - gaiaZRangeGeometry(geom2, &min, &max); - geom3 = gaiaCloneGeomCollPoints(geom2); - gaiaFreeGeomColl(geom3); - geom3 = gaiaCloneGeomCollLinestrings(geom2); - gaiaFreeGeomColl(geom3); - geom3 = gaiaCloneGeomCollPolygons(geom2); - gaiaFreeGeomColl(geom3); - min = gaiaMeasureLength(geom2->FirstLinestring->DimensionModel, - geom2->FirstLinestring->Coords, geom2->FirstLinestring->Points); - if (min < 1.41421 || min > 1.41422) - { - /* unexpected result */ - fprintf(stderr, "GeomZM Length: unexpected result %1.6f|\n", min); - return -46; - } - - rng = geom2->FirstPolygon->Exterior; - min = gaiaMeasureArea(rng); - if (min != 16.0) - { - /* unexpected result */ - fprintf(stderr, "GeomZM Area: unexpected result %1.6f|\n", min); - return -47; - } - - gaiaRingCentroid(rng, &min, &max); - if (min != 3.0 || max != 3.0) - { - /* unexpected result */ - fprintf(stderr, "GeomZM Centroid: unexpected result %1.6f %1.6f|\n", min, max); - return -48; - } - - gaiaIsPointOnPolygonSurface(geom2->FirstPolygon, 17.0, 22.0); - if (cnt) - { - /* unexpected result */ - fprintf(stderr, "GeomZM IsPointOnPolygonSurface: unexpected result %d|\n", cnt); - return -49; - } - - min = gaiaMinDistance(1.0, 2.0, geom2->FirstLinestring->DimensionModel, - geom2->FirstLinestring->Coords, geom2->FirstLinestring->Points); - if (min < 0.70710 || min > 0.70711) - { - /* unexpected result */ - fprintf(stderr, "GeomZM MinDistance: unexpected result %1.6f|\n", min); - return -50; - } - - gaiaFreeGeomColl(geom2); - - - gaiaFreeGeomColl(geom_pt); - gaiaFreeGeomColl(geom1); - - gaiaIntersect(&min, &max, 0.0, 10.0, 20.0, 10.0, 5.0, 0.0, 5.0, 20.0); - if (min != 5.0 || max != 10.0) - { - /* unexpected result */ - fprintf(stderr, "gaiaIntersect: unexpected result %1.6f %1.6f|\n", min, max); - return -51; - } - -/* same, reversed line direction */ - gaiaIntersect(&min, &max, 20.0, 10.0, 0.0, 10.0, 5.0, 20.0, 5.0, 0.0); - if (min != 5.0 || max != 10.0) - { - /* unexpected result */ - fprintf(stderr, "gaiaIntersect: unexpected result %1.6f %1.6f|\n", min, max); - return -52; - } - -/* non-intersecting MBRs*/ - min = -20; - max = -20; - gaiaIntersect(&min, &max, 20.0, 12.0, 0.0, 10.0, 25.0, 40.0, 45.0, 40.0); - if (min != -20 || max != -20) - { - /* unexpected result */ - fprintf(stderr, "gaiaIntersect: unexpected result %1.6f %1.6f|\n", min, max); - return -53; - } - -/* Just intersecting */ - min = 0; - max = 0; - gaiaIntersect(&min, &max, 0.0, 10.0, 20.0, 10.0, 5.0, 0.0, 5.0, 10.0); - if (min != 5.0 || max != 10.0) - { - /* unexpected result */ - fprintf(stderr, "gaiaIntersect: unexpected result %1.6f %1.6f|\n", min, max); - return -54; - } - -/* cloning a Linestring XY */ - line1 = gaiaAllocLinestring(4); - gaiaLineSetPoint(line1, 0, 1.1, 1.2, 100.1, 10.1); - gaiaLineSetPoint(line1, 1, 1.3, 1.4, 100.2, 10.2); - gaiaLineSetPoint(line1, 2, 1.5, 1.6, 100.3, 10.3); - gaiaLineSetPoint(line1, 3, 1.7, 1.8, 100.4, 10.4); - line2 = gaiaCloneLinestringSpecial(line1, GAIA_SAME_ORDER); - gaiaFreeLinestring(line2); - line2 = gaiaCloneLinestringSpecial(line1, GAIA_REVERSE_ORDER); - gaiaFreeLinestring(line2); - gaiaFreeLinestring(line1); - -/* cloning a Linestring XYZ */ - line1 = gaiaAllocLinestringXYZ(4); - gaiaLineSetPoint(line1, 0, 1.1, 1.2, 100.1, 10.1); - gaiaLineSetPoint(line1, 1, 1.3, 1.4, 100.2, 10.2); - gaiaLineSetPoint(line1, 2, 1.5, 1.6, 100.3, 10.3); - gaiaLineSetPoint(line1, 3, 1.7, 1.8, 100.4, 10.4); - line2 = gaiaCloneLinestringSpecial(line1, GAIA_SAME_ORDER); - gaiaFreeLinestring(line2); - line2 = gaiaCloneLinestringSpecial(line1, GAIA_REVERSE_ORDER); - gaiaFreeLinestring(line2); - gaiaFreeLinestring(line1); - -/* cloning a Linestring XYM */ - line1 = gaiaAllocLinestringXYM(4); - gaiaLineSetPoint(line1, 0, 1.1, 1.2, 100.1, 10.1); - gaiaLineSetPoint(line1, 1, 1.3, 1.4, 100.2, 10.2); - gaiaLineSetPoint(line1, 2, 1.5, 1.6, 100.3, 10.3); - gaiaLineSetPoint(line1, 3, 1.7, 1.8, 100.4, 10.4); - line2 = gaiaCloneLinestringSpecial(line1, GAIA_SAME_ORDER); - gaiaFreeLinestring(line2); - line2 = gaiaCloneLinestringSpecial(line1, GAIA_REVERSE_ORDER); - gaiaFreeLinestring(line2); - gaiaFreeLinestring(line1); - -/* cloning a Linestring XYZM */ - line1 = gaiaAllocLinestringXYZM(4); - gaiaLineSetPoint(line1, 0, 1.1, 1.2, 100.1, 10.1); - gaiaLineSetPoint(line1, 1, 1.3, 1.4, 100.2, 10.2); - gaiaLineSetPoint(line1, 2, 1.5, 1.6, 100.3, 10.3); - gaiaLineSetPoint(line1, 3, 1.7, 1.8, 100.4, 10.4); - line2 = gaiaCloneLinestringSpecial(line1, GAIA_SAME_ORDER); - gaiaFreeLinestring(line2); - line2 = gaiaCloneLinestringSpecial(line1, GAIA_REVERSE_ORDER); - gaiaFreeLinestring(line2); - gaiaFreeLinestring(line1); - -/* cloning a Ring XY */ - ring1 = gaiaAllocRing(5); - gaiaRingSetPoint(ring1, 0, 1.1, 1.1, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.2, 1.1, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 1.2, 1.2, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.1, 1.2, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.1, 1.1, 100.1, 10.1); - ring2 = gaiaCloneRingSpecial(ring1, GAIA_SAME_ORDER); - gaiaFreeRing(ring2); - ring2 = gaiaCloneRingSpecial(ring1, GAIA_REVERSE_ORDER); - gaiaFreeRing(ring2); - gaiaFreeRing(ring1); - -/* cloning a Ring XYZ */ - ring1 = gaiaAllocRingXYZ(5); - gaiaRingSetPoint(ring1, 0, 1.1, 1.1, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.2, 1.1, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 1.2, 1.2, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.1, 1.2, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.1, 1.1, 100.1, 10.1); - ring2 = gaiaCloneRingSpecial(ring1, GAIA_SAME_ORDER); - gaiaFreeRing(ring2); - ring2 = gaiaCloneRingSpecial(ring1, GAIA_REVERSE_ORDER); - gaiaFreeRing(ring2); - gaiaFreeRing(ring1); - -/* cloning a Ring XYM */ - ring1 = gaiaAllocRingXYM(5); - gaiaRingSetPoint(ring1, 0, 1.1, 1.1, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.2, 1.1, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 1.2, 1.2, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.1, 1.2, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.1, 1.1, 100.1, 10.1); - ring2 = gaiaCloneRingSpecial(ring1, GAIA_SAME_ORDER); - gaiaFreeRing(ring2); - ring2 = gaiaCloneRingSpecial(ring1, GAIA_REVERSE_ORDER); - gaiaFreeRing(ring2); - gaiaFreeRing(ring1); - -/* cloning a Ring XYZM */ - ring1 = gaiaAllocRingXYZM(4); - gaiaRingSetPoint(ring1, 0, 1.1, 1.1, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.2, 1.1, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 1.2, 1.2, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.1, 1.2, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.1, 1.1, 100.1, 10.1); - ring2 = gaiaCloneRingSpecial(ring1, GAIA_SAME_ORDER); - gaiaFreeRing(ring2); - ring2 = gaiaCloneRingSpecial(ring1, GAIA_REVERSE_ORDER); - gaiaFreeRing(ring2); - gaiaFreeRing(ring1); - -/* cloning a Polygon XY (1) */ - polyg1 = gaiaAllocPolygon(5, 1); - ring1 = polyg1->Exterior; - gaiaRingSetPoint(ring1, 0, 1.0, 1.0, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 2.0, 1.0, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 2.0, 2.0, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.0, 2.0, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.0, 1.0, 100.1, 10.1); - ring1 = gaiaAddInteriorRing (polyg1, 0, 5); - gaiaRingSetPoint(ring1, 0, 1.1, 1.1, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.2, 1.1, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 1.2, 1.2, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.1, 1.2, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.1, 1.1, 100.1, 10.1); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_SAME_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_REVERSE_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_LHR_ORDER); - gaiaFreePolygon(polyg2); - gaiaFreePolygon(polyg1); - -/* cloning a Polygon XY (2) */ - polyg1 = gaiaAllocPolygon(5, 1); - ring1 = polyg1->Exterior; - gaiaRingSetPoint(ring1, 0, 1.0, 1.0, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.0, 2.0, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 2.0, 2.0, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 2.0, 1.0, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.0, 1.0, 100.1, 10.1); - ring1 = gaiaAddInteriorRing (polyg1, 0, 5); - gaiaRingSetPoint(ring1, 0, 1.1, 1.1, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.1, 1.2, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 1.2, 1.2, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.2, 1.1, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.1, 1.1, 100.1, 10.1); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_SAME_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_REVERSE_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_LHR_ORDER); - gaiaFreePolygon(polyg2); - gaiaFreePolygon(polyg1); - -/* cloning a Polygon XYZ (1) */ - polyg1 = gaiaAllocPolygonXYZ(5, 1); - ring1 = polyg1->Exterior; - gaiaRingSetPoint(ring1, 0, 1.0, 1.0, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 2.0, 1.0, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 2.0, 2.0, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.0, 2.0, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.0, 1.0, 100.1, 10.1); - ring1 = gaiaAddInteriorRing (polyg1, 0, 5); - gaiaRingSetPoint(ring1, 0, 1.1, 1.1, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.2, 1.1, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 1.2, 1.2, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.1, 1.2, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.1, 1.1, 100.1, 10.1); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_SAME_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_REVERSE_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_LHR_ORDER); - gaiaFreePolygon(polyg2); - gaiaFreePolygon(polyg1); - -/* cloning a Polygon XYZ (2) */ - polyg1 = gaiaAllocPolygonXYZ(5, 1); - ring1 = polyg1->Exterior; - gaiaRingSetPoint(ring1, 0, 1.0, 1.0, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.0, 2.0, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 2.0, 2.0, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 2.0, 1.0, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.0, 1.0, 100.1, 10.1); - ring1 = gaiaAddInteriorRing (polyg1, 0, 5); - gaiaRingSetPoint(ring1, 0, 1.1, 1.1, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.1, 1.2, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 1.2, 1.2, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.2, 1.1, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.1, 1.1, 100.1, 10.1); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_SAME_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_REVERSE_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_LHR_ORDER); - gaiaFreePolygon(polyg2); - gaiaFreePolygon(polyg1); - -/* cloning a Polygon XYM (1) */ - polyg1 = gaiaAllocPolygonXYM(5, 1); - ring1 = polyg1->Exterior; - gaiaRingSetPoint(ring1, 0, 1.0, 1.0, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 2.0, 1.0, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 2.0, 2.0, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.0, 2.0, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.0, 1.0, 100.1, 10.1); - ring1 = gaiaAddInteriorRing (polyg1, 0, 5); - gaiaRingSetPoint(ring1, 0, 1.1, 1.1, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.2, 1.1, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 1.2, 1.2, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.1, 1.2, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.1, 1.1, 100.1, 10.1); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_SAME_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_REVERSE_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_LHR_ORDER); - gaiaFreePolygon(polyg2); - gaiaFreePolygon(polyg1); - -/* cloning a Polygon XYM (2) */ - polyg1 = gaiaAllocPolygonXYM(5, 1); - ring1 = polyg1->Exterior; - gaiaRingSetPoint(ring1, 0, 1.0, 1.0, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.0, 2.0, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 2.0, 2.0, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 2.0, 1.0, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.0, 1.0, 100.1, 10.1); - ring1 = gaiaAddInteriorRing (polyg1, 0, 5); - gaiaRingSetPoint(ring1, 0, 1.1, 1.1, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.1, 1.2, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 1.2, 1.2, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.2, 1.1, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.1, 1.1, 100.1, 10.1); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_SAME_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_REVERSE_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_LHR_ORDER); - gaiaFreePolygon(polyg2); - gaiaFreePolygon(polyg1); - -/* cloning a Polygon XYZM (1) */ - polyg1 = gaiaAllocPolygonXYZM(5, 1); - ring1 = polyg1->Exterior; - gaiaRingSetPoint(ring1, 0, 1.0, 1.0, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 2.0, 1.0, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 2.0, 2.0, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.0, 2.0, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.0, 1.0, 100.1, 10.1); - ring1 = gaiaAddInteriorRing (polyg1, 0, 5); - gaiaRingSetPoint(ring1, 0, 1.1, 1.1, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.2, 1.1, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 1.2, 1.2, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.1, 1.2, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.1, 1.1, 100.1, 10.1); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_SAME_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_REVERSE_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_LHR_ORDER); - gaiaFreePolygon(polyg2); - gaiaFreePolygon(polyg1); - -/* cloning a Polygon XYZM (2) */ - polyg1 = gaiaAllocPolygonXYZM(5, 1); - ring1 = polyg1->Exterior; - gaiaRingSetPoint(ring1, 0, 1.0, 1.0, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.0, 2.0, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 2.0, 2.0, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 2.0, 1.0, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.0, 1.0, 100.1, 10.1); - ring1 = gaiaAddInteriorRing (polyg1, 0, 5); - gaiaRingSetPoint(ring1, 0, 1.1, 1.1, 100.1, 10.1); - gaiaRingSetPoint(ring1, 1, 1.1, 1.2, 100.2, 10.2); - gaiaRingSetPoint(ring1, 2, 1.2, 1.2, 100.3, 10.3); - gaiaRingSetPoint(ring1, 3, 1.2, 1.1, 100.4, 10.4); - gaiaRingSetPoint(ring1, 4, 1.1, 1.1, 100.1, 10.1); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_SAME_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_REVERSE_ORDER); - gaiaFreePolygon(polyg2); - polyg2 = gaiaClonePolygonSpecial(polyg1, GAIA_LHR_ORDER); - gaiaFreePolygon(polyg2); - gaiaFreePolygon(polyg1); - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -1001; - } - spatialite_cleanup(); - - return 0; -} diff --git a/src/spatialite/test/check_geometry_cols.c b/src/spatialite/test/check_geometry_cols.c deleted file mode 100644 index 6c9dde0..0000000 --- a/src/spatialite/test/check_geometry_cols.c +++ /dev/null @@ -1,195 +0,0 @@ -/* - - check_create.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - char **results; - int rows; - int columns; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - - ret = sqlite3_exec (handle, "CREATE TABLE Point_Test (Name TEXT, Description TEXT)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE TABLE error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -3; - } - - ret = sqlite3_get_table (handle, "SELECT AddGeometryColumn(26, 'geomZ', 4326, 'POINT', 'XYZ', 0)", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -4; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected result AddGeometryColumn int arg1 bad result: %i/%i.\n", rows, columns); - return -5; - } - if (strcmp(results[1], "0") != 0) { - fprintf (stderr, "Unexpected result: AddGeometryColumn with non-text arg1 passed: %s.\n", results[1]); - return -6; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (handle, "SELECT AddGeometryColumn('Point_Test', 8, 4326, 'POINT', 'XYZ', 0)", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -7; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected result AddGeometryColumn int arg2 bad result: %i/%i.\n", rows, columns); - return -8; - } - if (strcmp(results[1], "0") != 0) { - fprintf (stderr, "Unexpected result: AddGeometryColumn with non-text arg2 passed: %s.\n", results[1]); - return -9; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (handle, "SELECT AddGeometryColumn('Point_Test', 'geomZ', 'sometext', 'POINT', 'XYZ', 0)", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -10; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected result AddGeometryColumn text arg3 bad result: %i/%i.\n", rows, columns); - return -11; - } - if (strcmp(results[1], "0") != 0) { - fprintf (stderr, "Unexpected result: AddGeometryColumn with non-int arg3 passed: %s.\n", results[1]); - return -12; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (handle, "SELECT AddGeometryColumn('Point_Test', 'geomZ', 4326, 'POINT', 'XYZ', 0)", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -13; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected result AddGeometryColumn bad result: %i/%i.\n", rows, columns); - return -14; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: AddGeometryColumn with good args failed: %s.\n", results[1]); - return -15; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (handle, "INSERT INTO Point_Test (Name, Description, geomZ) VALUES ('Point 1', 'Some point', GeomFromText('POINTZ(136 -33 365)', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT POINT XYZ error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -16; - } - - ret = sqlite3_get_table (handle, "SELECT DiscardGeometryColumn('Point_Test', 'geomZ')", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -17; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected result DiscardGeometryColumn bad result: %i/%i.\n", rows, columns); - return -18; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: DiscardGeometryColumn failed: %s.\n", results[1]); - return -19; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (handle, "SELECT RecoverGeometryColumn('Point_Test', 'geomZ', 4326, 'POINT', 'XYZ')", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -20; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected result RecoverGeometryColumn bad result: %i/%i.\n", rows, columns); - return -21; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: RecoverGeometryColumn failed: %s.\n", results[1]); - return -22; - } - sqlite3_free_table (results); - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -23; - } - - spatialite_cleanup(); - - return 0; -} diff --git a/src/spatialite/test/check_geoscvt_fncts.c b/src/spatialite/test/check_geoscvt_fncts.c deleted file mode 100644 index 2b44ffe..0000000 --- a/src/spatialite/test/check_geoscvt_fncts.c +++ /dev/null @@ -1,101 +0,0 @@ -/* - - check_geoscvt_fncts.c -- SpatiaLite Test Case - - This does "boundary conditions" and error checks for gg_geoscvt - functions that are hard to test with SQL. - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" -#include "spatialite/gaiageo.h" - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_GEOS /* only if GEOS is supported */ - gaiaGeomCollPtr result; - void *resultVoid; - int returnValue = 0; - - /* Common setup */ - - gaiaGeomCollPtr emptyGeometry = gaiaAllocGeomColl(); - - /* Tests start here */ - - /* null input test */ - result = gaiaFromGeos_XY ( (const void*) NULL ); - if (result != NULL) { - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -1; - goto exit; - } - - resultVoid = gaiaToGeos ((gaiaGeomCollPtr)NULL); - if (resultVoid != NULL) { - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -2; - goto exit; - } - - /* unknown type geometry collection */ - resultVoid = gaiaToGeos ( emptyGeometry ); - if (resultVoid != NULL) { - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -3; - goto exit; - } - - /* Cleanup and exit */ -exit: - gaiaFreeGeomColl (emptyGeometry); - return returnValue; - -#endif /* end GEOS conditional */ - - return 0; -} diff --git a/src/spatialite/test/check_init.c b/src/spatialite/test/check_init.c deleted file mode 100644 index 28b5812..0000000 --- a/src/spatialite/test/check_init.c +++ /dev/null @@ -1,60 +0,0 @@ -/* - - check_init.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ - spatialite_init(0); - spatialite_cleanup(); - - spatialite_init(1); - spatialite_cleanup(); - - return 0; -} diff --git a/src/spatialite/test/check_init2.c b/src/spatialite/test/check_init2.c deleted file mode 100644 index cd027d5..0000000 --- a/src/spatialite/test/check_init2.c +++ /dev/null @@ -1,292 +0,0 @@ -/* - - check_init2.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - char **results; - int rows; - int columns; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata(\"NONE\")", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata(\"NONE\") error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - - ret = sqlite3_exec (handle, "SELECT InsertEpsgSrid(4326)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Insert SRID 4326 error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -3; - } - - ret = sqlite3_exec (handle, "SELECT InsertEpsgSrid(2998)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Insert SRID 2998 error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -4; - } - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -5; - } - - spatialite_cleanup(); - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -6; - } - - ret = sqlite3_get_table (handle, "SELECT InitSpatialMetadata(34)", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -7; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected result InitSpatialMetadata() bad result: %i/%i.\n", rows, columns); - return -8; - } - if (strcmp(results[1], "0") != 0) { - fprintf (stderr, "Unexpected result: InitSpatialMetadata() with non-text passed: %s.\n", results[1]); - return -9; - } - sqlite3_free_table (results); - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -10; - } - - spatialite_cleanup(); - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -11; - } - - ret = sqlite3_get_table (handle, "SELECT InitSpatialMetadata(\"EMPTY\")", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -12; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected result InitSpatialMetadata(\"EMPTY\") bad result: %i/%i.\n", rows, columns); - return -13; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: InitSpatialMetadata(\"EMPTY\"): %s.\n", results[1]); - return -14; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (handle, "SELECT InsertEpsgSrid(4326)", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -15; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected result InsertEpsgSrid(4326) bad result: %i/%i.\n", rows, columns); - return -16; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: InsertEpsgSrid(4326): %s.\n", results[1]); - return -17; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (handle, "SELECT InsertEpsgSrid(\"Non-integer\")", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -18; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected result InsertEpsgSrid(\"Non-integer\") bad result: %i/%i.\n", rows, columns); - return -19; - } - if (strcmp(results[1], "0") != 0) { - fprintf (stderr, "Unexpected result: InsertEpsgSrid() with non-integer passed: %s.\n", results[1]); - return -20; - } - sqlite3_free_table (results); - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -21; - } - - spatialite_cleanup(); - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -22; - } - - ret = sqlite3_get_table (handle, "SELECT InitSpatialMetadata(\"WGS84\")", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -23; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected result InitSpatialMetadata(\"WGS84\") bad result: %i/%i.\n", rows, columns); - return -24; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: InitSpatialMetadata(\"WGS84\"): %s.\n", results[1]); - return -25; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (handle, "SELECT InsertEpsgSrid(3003)", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -26; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected result InsertEpsgSrid(3003) bad result: %i/%i.\n", rows, columns); - return -27; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: InsertEpsgSrid(3003): %s.\n", results[1]); - return -28; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (handle, "SELECT InsertEpsgSrid(4326)", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -29; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected result InsertEpsgSrid(4326) (dupe) bad result: %i/%i.\n", rows, columns); - return -30; - } - if (strcmp(results[1], "0") != 0) { - fprintf (stderr, "Unexpected result: InsertEpsgSrid(4326) duplicate passed: %s.\n", results[1]); - return -31; - } - sqlite3_free_table (results); - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -32; - } - - spatialite_cleanup(); - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -33; - } - - ret = sqlite3_get_table (handle, "SELECT InitSpatialMetadata(\"WGS84_only\")", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -34; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected result InitSpatialMetadata(\"WGS84_ONLY\") bad result: %i/%i.\n", rows, columns); - return -35; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: InitSpatialMetadata(\"WGS84_ONLY\"): %s.\n", results[1]); - return -36; - } - sqlite3_free_table (results); - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -32; - } - - spatialite_cleanup(); - - return 0; -} diff --git a/src/spatialite/test/check_math_funcs.c b/src/spatialite/test/check_math_funcs.c deleted file mode 100644 index a5296ec..0000000 --- a/src/spatialite/test/check_math_funcs.c +++ /dev/null @@ -1,95 +0,0 @@ -/* - - check_math_funcs.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "sqlite3.h" -#include "spatialite.h" - -static const double double_eps = 0.00000001; - -int main (int argc, char *argv[]) -{ - double result; - sqlite3_int64 result64; - - result = math_round(3.4); - if (abs(result - 3) > double_eps) { - fprintf(stderr, "bad math_round() result for 3.4: %f\n", result); - return -1; - } - - result = math_round(3.6); - if (abs(result - 4) > double_eps) { - fprintf(stderr, "bad math_round() result for 3.6: %f\n", result); - return -2; - } - - result = math_round(-3.4); - if (abs(result + 3) > double_eps) { - fprintf(stderr, "bad math_round() result for -3.4: %f\n", result); - return -3; - } - - result = math_round(-3.6); - if (abs(result + 4) > double_eps) { - fprintf(stderr, "bad math_round() result for -3.6: %f\n", result); - return -4; - } - - result64 = math_llabs((sqlite3_int64) 26); - if (result64 != 26) { - fprintf(stderr, "bad math_llabs() result for 26"); - return -5; - } - - result64 = math_llabs((sqlite3_int64) -26); - if (result64 != 26) { - fprintf(stderr, "bad math_llabs() result for -26"); - return -6; - } - - return 0; -} diff --git a/src/spatialite/test/check_mbrcache.c b/src/spatialite/test/check_mbrcache.c deleted file mode 100644 index 32d291c..0000000 --- a/src/spatialite/test/check_mbrcache.c +++ /dev/null @@ -1,491 +0,0 @@ -/* - - check_mbrcache.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - int row_count; - char **results; - int rows; - int columns; - int pt; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - - ret = load_shapefile (handle, "shp/foggia/local_councils", "Councils", - "CP1252", 23032, "geom", 1, 0, 1, 0, &row_count, - err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error: %s\n", err_msg); - sqlite3_close(handle); - return -3; - } - if (row_count != 61) { - fprintf (stderr, "unexpected number of rows loaded: %i\n", row_count); - sqlite3_close(handle); - return -4; - } - - ret = sqlite3_get_table (handle, "SELECT lc_name FROM Councils WHERE MbrWithin(geom, BuildMbr(1040523, 4010000, 1140523, 4850000)) ORDER BY lc_name;", - &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -5; - } - if ((rows != 22) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select lc_name bad result: %i/%i.\n", rows, columns); - sqlite3_free_table (results); - sqlite3_close(handle); - return -6; - } - if (strcmp(results[1], "Ascoli Satriano") != 0) { - fprintf (stderr, "unexpected result at 1: %s\n", results[1]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -7; - } - if (strcmp(results[22], "Zapponeta") != 0) { - fprintf (stderr, "unexpected result at 22: %s\n", results[22]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -8; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (handle, "SELECT CreateMbrCache('Councils', 'geom');", - NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CreateMbrCache error: %s\n", err_msg); - sqlite3_free (err_msg); - return -9; - } - - rows = 0; - columns = 0; - ret = sqlite3_get_table (handle, "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT rowid FROM cache_Councils_geom WHERE mbr = FilterMbrWithin(1040523, 4010000, 1140523, 4850000)) ORDER BY lc_name;", - &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error in Mbr SELECT: %s\n", err_msg); - sqlite3_free (err_msg); - return -14; - } - if ((rows != 22) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select lc_name bad cache result: %i/%i.\n", rows, columns); - sqlite3_free_table (results); - sqlite3_close(handle); - return -15; - } - if (strcmp(results[1], "Ascoli Satriano") != 0) { - fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -16; - } - if (strcmp(results[22], "Zapponeta") != 0) { - fprintf (stderr, "unexpected mbr result at 22: %s\n", results[22]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -17; - } - sqlite3_free_table (results); - - rows = 0; - columns = 0; - ret = sqlite3_get_table (handle, "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT rowid FROM cache_Councils_geom WHERE mbr = FilterMbrContains(997226.750031, 4627372.000018, 997226.750031, 4627372.000018)) ORDER BY lc_name;", - &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error in Mbr SELECT Contains: %s\n", err_msg); - sqlite3_free (err_msg); - return -18; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select lc_name bad cache result: %i/%i.\n", rows, columns); - sqlite3_free_table (results); - sqlite3_close(handle); - return -19; - } - if (strcmp(results[1], "Carlantino") != 0) { - fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -20; - } - sqlite3_free_table (results); - - rows = 0; - columns = 0; - ret = sqlite3_get_table (handle, "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT rowid FROM cache_Councils_geom WHERE mbr = FilterMbrIntersects(1040523, 4010000, 1140523, 4850000)) ORDER BY lc_name;", - &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error in Mbr SELECT: %s\n", err_msg); - sqlite3_free (err_msg); - return -21; - } - if ((rows != 35) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select lc_name bad cache result: %i/%i.\n", rows, columns); - sqlite3_free_table (results); - sqlite3_close(handle); - return -22; - } - if (strcmp(results[1], "Apricena") != 0) { - fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -23; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (handle, "DELETE FROM Councils WHERE lc_name = 'Zapponeta';", - NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -24; - } - - rows = 0; - columns = 0; - ret = sqlite3_get_table (handle, "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT rowid FROM cache_Councils_geom WHERE mbr = FilterMbrWithin(1040523, 4010000, 1140523, 4850000)) ORDER BY lc_name;", - &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error in Mbr SELECT: %s\n", err_msg); - sqlite3_free (err_msg); - return -25; - } - if ((rows != 21) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select lc_name bad cache result: %i/%i.\n", rows, columns); - sqlite3_free_table (results); - sqlite3_close(handle); - return -26; - } - if (strcmp(results[1], "Ascoli Satriano") != 0) { - fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -27; - } - if (strcmp(results[21], "Vieste") != 0) { - fprintf (stderr, "unexpected mbr result at 21: %s\n", results[21]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -28; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (handle, "INSERT INTO Councils (lc_name, geom) VALUES ('Quairading', GeomFromText('MULTIPOLYGON(((997226.750031 4627372.000018, 997301.750031 4627332.000018, 997402.500031 4627344.000018, 997541.500031 4627326.500018,997226.750031 4627372.000018)))', 23032));", - NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT error: %s\n", err_msg); - sqlite3_free (err_msg); - return -29; - } - - rows = 0; - columns = 0; - ret = sqlite3_get_table (handle, "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT rowid FROM cache_Councils_geom WHERE mbr = FilterMbrWithin(1040523, 4010000, 1140523, 4850000)) ORDER BY lc_name;", - &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error in Mbr SELECT2: %s\n", err_msg); - sqlite3_free (err_msg); - return -30; - } - if ((rows != 21) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select lc_name bad cache result: %i/%i.\n", rows, columns); - sqlite3_free_table (results); - sqlite3_close(handle); - return -31; - } - if (strcmp(results[1], "Ascoli Satriano") != 0) { - fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -32; - } - if (strcmp(results[21], "Vieste") != 0) { - fprintf (stderr, "unexpected mbr result at 21: %s\n", results[21]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -33; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (handle, "UPDATE Councils SET geom = GeomFromText('MULTIPOLYGON(((987226.750031 4627372.000018, 997301.750031 4627331.000018, 997402.500032 4627344.000018, 997541.500031 4627326.500018, 987226.750031 4627372.000018)))', 23032) WHERE lc_name = \"Quairading\";", - NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "UPDATE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -34; - } - - rows = 0; - columns = 0; - ret = sqlite3_get_table (handle, "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT rowid FROM cache_Councils_geom WHERE mbr = FilterMbrWithin(1040523, 4010000, 1140523, 4850000)) ORDER BY lc_name;", - &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error in Mbr SELECT3: %s\n", err_msg); - sqlite3_free (err_msg); - return -35; - } - if ((rows != 21) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select lc_name bad cache result: %i/%i.\n", rows, columns); - sqlite3_free_table (results); - sqlite3_close(handle); - return -36; - } - if (strcmp(results[1], "Ascoli Satriano") != 0) { - fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -37; - } - if (strcmp(results[21], "Vieste") != 0) { - fprintf (stderr, "unexpected mbr result at 21: %s\n", results[21]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -38; - } - sqlite3_free_table (results); - - rows = 0; - columns = 0; - ret = sqlite3_get_table (handle, "SELECT rowid, mbr FROM cache_Councils_geom;", - &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error in Mbr SELECT: %s\n", err_msg); - sqlite3_free (err_msg); - return -39; - } - if ((rows != 61) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select lc_name bad cache2 result: %i/%i.\n", rows, columns); - sqlite3_free_table (results); - sqlite3_close(handle); - return -40; - } - if (strcmp(results[2], "1") != 0) { - fprintf (stderr, "unexpected mbr result at 1: %s\n", results[2]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -41; - } - if (strcmp(results[12], "6") != 0) { - fprintf (stderr, "unexpected mbr result at 6: %s\n", results[12]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -42; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (handle, "DROP TABLE Councils;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE Councils error: %s\n", err_msg); - sqlite3_free (err_msg); - return -44; - } - -/* creating and feeding a Point table */ - ret = sqlite3_exec (handle, "CREATE TABLE pt (id INTEGER);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE TABLE pt error: %s\n", err_msg); - sqlite3_free (err_msg); - return -45; - } - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('pt', 'g', 4326, 1, 'XY');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn pt error: %s\n", err_msg); - sqlite3_free (err_msg); - return -46; - } - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('pt', 'g', 4326, 'POINT', 2.5);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn pt error: %s\n", err_msg); - sqlite3_free (err_msg); - return -47; - } - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('pt', 'g', 4326, 'POINT', 'XY', 0.5);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn pt error: %s\n", err_msg); - sqlite3_free (err_msg); - return -48; - } - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('pt', 'g', 4326, 'DUMMY', 'XY');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn pt error: %s\n", err_msg); - sqlite3_free (err_msg); - return -49; - } - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('pt', 'g', 4326, 'POINT', 'DUMMY');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn pt error: %s\n", err_msg); - sqlite3_free (err_msg); - return -50; - } - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('pt', 'g', 4326, 'POINT', 2);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn pt error: %s\n", err_msg); - sqlite3_free (err_msg); - return -51; - } - ret = sqlite3_exec (handle, "SELECT CreateMbrCache('pt', 'g');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CreateMbrCache pt.g error: %s\n", err_msg); - sqlite3_free (err_msg); - return -52; - } - for (pt = 0; pt < 10000; pt++) - { - /* inserting Points */ - char sql[1024]; - sprintf(sql, "INSERT INTO pt (id, g) VALUES (%d, GeomFromText('POINT(%1.2f %1.2f)', 4326));", pt, 11.0 + (pt / 10000.0), 43.0 + (pt / 10000.0)); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT INTO pt error: %s\n", err_msg); - sqlite3_free (err_msg); - return -53; - } - } - for (pt = 5000; pt < 6000; pt++) - { - /* updating Points */ - char sql[1024]; - sprintf(sql, "UPDATE pt SET g = GeomFromText('POINT(%1.2f %1.2f)', 4326) WHERE id = %d;", 12.0 + (pt / 10000.0), 42.0 + (pt / 10000.0), pt); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "UPDATE pt error: %s\n", err_msg); - sqlite3_free (err_msg); - return -54; - } - } - for (pt = 7000; pt < 8000; pt++) - { - /* deleting Points */ - char sql[1024]; - sprintf(sql, "DELETE FROM pt WHERE id = %d;", pt); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "UPDATE pt error: %s\n", err_msg); - sqlite3_free (err_msg); - return -55; - } - } - - ret = sqlite3_exec (handle, "SELECT CreateMbrCache(1, 'geom');", - NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid CreateMbrCache error: %s\n", err_msg); - sqlite3_free (err_msg); - return -56; - } - ret = sqlite3_exec (handle, "SELECT CreateMbrCache('Councils', 2);", - NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid CreateMbrCache error: %s\n", err_msg); - sqlite3_free (err_msg); - return -57; - } - ret = sqlite3_exec (handle, "SELECT FilterMbrWithin('a', 2, 3, 4);", - NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid FilterMbrWithin error: %s\n", err_msg); - sqlite3_free (err_msg); - return -58; - } - ret = sqlite3_exec (handle, "SELECT FilterMbrWithin(1, 'a', 3, 4);", - NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid FilterMbrWithin error: %s\n", err_msg); - sqlite3_free (err_msg); - return -59; - } - ret = sqlite3_exec (handle, "SELECT FilterMbrWithin(1, 2, 'a', 4);", - NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid FilterMbrWithin error: %s\n", err_msg); - sqlite3_free (err_msg); - return -60; - } - ret = sqlite3_exec (handle, "SELECT FilterMbrWithin(1, 2, 3, 'a');", - NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid FilterMbrWithin error: %s\n", err_msg); - sqlite3_free (err_msg); - return -61; - } - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -62; - } - - spatialite_cleanup(); -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/check_recover_geom.c b/src/spatialite/test/check_recover_geom.c deleted file mode 100644 index 0b9bad6..0000000 --- a/src/spatialite/test/check_recover_geom.c +++ /dev/null @@ -1,1394 +0,0 @@ -/* - - check_recover_geom.c -- SpatiaLite Test Case - - Author: Sandro Furieri - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - const char *sql; - char **results; - int rows; - int columns; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } -/* creating a Point XY table */ - sql = "CREATE TABLE pt_xy (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -3; - } - -/* creating a Point XYZ table */ - sql = "CREATE TABLE pt_xyz (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -4; - } - -/* creating a Point XYM table */ - sql = "CREATE TABLE pt_xym (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -5; - } - -/* creating a Point XYZM table */ - sql = "CREATE TABLE pt_xyzm (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -6; - } - -/* creating a Linestring XY table */ - sql = "CREATE TABLE ln_xy (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -7; - } - -/* creating a Linestring XYZ table */ - sql = "CREATE TABLE ln_xyz (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -8; - } - -/* creating a Linestring XYM table */ - sql = "CREATE TABLE ln_xym (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -9; - } - -/* creating a Linestring XYZM table */ - sql = "CREATE TABLE ln_xyzm (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -10; - } - -/* creating a Polygon XY table */ - sql = "CREATE TABLE pg_xy (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -11; - } - -/* creating a Polygon XYZ table */ - sql = "CREATE TABLE pg_xyz (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -12; - } - -/* creating a Polygon XYM table */ - sql = "CREATE TABLE pg_xym (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -13; - } - -/* creating a Polygon XYZM table */ - sql = "CREATE TABLE pg_xyzm (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -14; - } - -/* creating a MultiPoint XY table */ - sql = "CREATE TABLE mpt_xy (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -15; - } - -/* creating a MultiPoint XYZ table */ - sql = "CREATE TABLE mpt_XYZ (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -16; - } - -/* creating a MultiPoint XYM table */ - sql = "CREATE TABLE mpt_xym (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -17; - } - -/* creating a MultiPoint XYZM table */ - sql = "CREATE TABLE mpt_xyzm (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -18; - } - -/* creating a MultiLinestring XY table */ - sql = "CREATE TABLE mln_xy (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -19; - } - -/* creating a MultiLinestring XYZ table */ - sql = "CREATE TABLE mln_xyz (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -20; - } - -/* creating a MultiLinestring XYM table */ - sql = "CREATE TABLE mln_xym (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -21; - } - -/* creating a MultiLinestring XYZM table */ - sql = "CREATE TABLE mln_xyzm (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -22; - } - -/* creating a MultiPolygon XY table */ - sql = "CREATE TABLE mpg_xy (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -23; - } - -/* creating a MultiPolygon XYZ table */ - sql = "CREATE TABLE mpg_xyz (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -24; - } - -/* creating a MultiPolygon XYM table */ - sql = "CREATE TABLE mpg_xym (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -25; - } - -/* creating a MultiPolygon XYZM table */ - sql = "CREATE TABLE mpg_xyzm (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -26; - } - -/* creating a GeometryCollection XY table */ - sql = "CREATE TABLE gcoll_xy (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -27; - } - -/* creating a GeometryCollection XYZ table */ - sql = "CREATE TABLE gcoll_xyz (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -28; - } - -/* creating a GeometryCollection XYM table */ - sql = "CREATE TABLE gcoll_xym (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -29; - } - -/* creating a GeometryCollection XYZM table */ - sql = "CREATE TABLE gcoll_xyzm (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -30; - } - - -/* creating a Geometry XY table */ - sql = "CREATE TABLE geom_xy (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -31; - } - -/* creating a Geometry XYZ table */ - sql = "CREATE TABLE geom_xyz (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -32; - } - -/* creating a Geometry XYM table */ - sql = "CREATE TABLE geom_xym (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -33; - } - -/* creating a Geometry XYZM table */ - sql = "CREATE TABLE geom_xyzm (id INTEGER, g BLOB)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -34; - } - -/* Inserting into pt_xy */ - sql = "INSERT INTO pt_xy (id, g) VALUES (1, GeomFromText('POINT(1 2)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -35; - } - -/* Inserting into pt_xyz */ - sql = "INSERT INTO pt_xyz (id, g) VALUES (1, GeomFromText('POINTZ(1 2 3)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -36; - } - -/* Inserting into pt_xym */ - sql = "INSERT INTO pt_xym (id, g) VALUES (1, GeomFromText('POINTM(1 2 10)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -37; - } - -/* Inserting into pt_xyzm */ - sql = "INSERT INTO pt_xyzm (id, g) VALUES (1, GeomFromText('POINTZM(1 2 3 10)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -38; - } - -/* Inserting into ln_xy */ - sql = "INSERT INTO ln_xy (id, g) VALUES (1, GeomFromText('LINESTRING(1 2, 4 5)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -39; - } - -/* Inserting into ln_xyz */ - sql = "INSERT INTO ln_xyz (id, g) VALUES (1, GeomFromText('LINESTRINGZ(1 2 3, 4 5 6)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -40; - } - -/* Inserting into ln_xym */ - sql = "INSERT INTO ln_xym (id, g) VALUES (1, GeomFromText('LINESTRINGM(1 2 10, 4 5 11)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -41; - } - -/* Inserting into ln_xyzm */ - sql = "INSERT INTO ln_xyzm (id, g) VALUES (2, GeomFromText('LINESTRINGZM(1 2 3 10, 4 5 6 11)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -42; - } - -/* Inserting into pg_xy */ - sql = "INSERT INTO pg_xy (id, g) VALUES (1, GeomFromText('POLYGON((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 1 12, 11 12, 11 11))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -43; - } - -/* Inserting into pg_xyz */ - sql = "INSERT INTO pg_xyz (id, g) VALUES (1, GeomFromText('POLYGONZ((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 1 12 102, 11 12 103, 11 11 100))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -44; - } - -/* Inserting into pg_xym */ - sql = "INSERT INTO pg_xym (id, g) VALUES (1, GeomFromText('POLYGONM((10 10 10, 15 10 11, 15 15 12, 10 15 13, 10 10 10), (11 11 10, 12 11 11, 1 12 12, 11 12 13, 11 11 10))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -45; - } - -/* Inserting into pg_xyzm */ - sql = "INSERT INTO pg_xyzm (id, g) VALUES (1, GeomFromText('POLYGONZM((10 10 100 10, 15 10 101 11, 15 15 102 12, 10 15 103 13, 10 10 100 10), (11 11 100 10, 12 11 101 11, 1 12 102 12, 11 12 103 13, 11 11 100 10))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -46; - } - -/* Inserting into mpt_xy */ - sql = "INSERT INTO mpt_xy (id, g) VALUES (1, GeomFromText('MULTIPOINT(1 2, 4 5)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -47; - } - -/* Inserting into mpt_xyz */ - sql = "INSERT INTO mpt_xyz (id, g) VALUES (1, GeomFromText('MULTIPOINTZ(1 2 3, 4 5 6)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -48; - } - -/* Inserting into mpt_xym */ - sql = "INSERT INTO mpt_xym (id, g) VALUES (1, GeomFromText('MULTIPOINTM(1 2 10, 4 5 11)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -49; - } - -/* Inserting into mpt_xyzm */ - sql = "INSERT INTO mpt_xyzm (id, g) VALUES (1, GeomFromText('MULTIPOINTZM(1 2 3 10, 4 5 6 10)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -50; - } - -/* Inserting into mln_xy */ - sql = "INSERT INTO mln_xy (id, g) VALUES (1, GeomFromText('MULTILINESTRING((1 2, 4 5), (7 8, 10 11))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -51; - } - -/* Inserting into mln_xyz */ - sql = "INSERT INTO mln_xyz (id, g) VALUES (1, GeomFromText('MULTILINESTRINGZ((1 2 3, 4 5 6), (7 8 9, 10 11 12))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -52; - } - -/* Inserting into mln_xym */ - sql = "INSERT INTO mln_xym (id, g) VALUES (1, GeomFromText('MULTILINESTRINGM((1 2 10, 4 5 11), (7 8 12, 10 11 13))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -53; - } - -/* Inserting into mln_xyzm */ - sql = "INSERT INTO mln_xyzm (id, g) VALUES (1, GeomFromText('MULTILINESTRINGZM((1 2 3 10, 4 5 6 11), (7 8 9 12, 10 11 12 13))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -54; - } - -/* Inserting into mpg_xy */ - sql = "INSERT INTO mpg_xy (id, g) VALUES (1, GeomFromText('MULTIPOLYGON(((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 1 12, 11 12, 11 11)), ((0 0, 1 0, 1 1, 0 1, 0 0)))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -55; - } - -/* Inserting into mpg_xyz */ - sql = "INSERT INTO mpg_xyz (id, g) VALUES (1, GeomFromText('MULTIPOLYGONZ(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 1 12 102, 11 12 103, 11 11 100)), ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -56; - } - -/* Inserting into mpg_xym */ - sql = "INSERT INTO mpg_xym (id, g) VALUES (1, GeomFromText('MULTIPOLYGONM(((10 10 11, 15 10 12, 15 15 13, 10 15 14, 10 10 11), (11 11 5, 12 11 6, 12 12 7, 11 12 8, 11 11 5)), ((0 0 11, 1 0 12, 1 1 13, 0 1 14, 0 0 11)))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -57; - } - -/* Inserting into mpg_xyzm */ - sql = "INSERT INTO mpg_xyzm (id, g) VALUES (1, GeomFromText('MULTIPOLYGONZM(((10 10 100 11, 15 10 101 12, 15 15 102 13, 10 15 103 14, 10 10 100 11), (11 11 100 5, 12 11 101 6, 1 12 102 7, 11 12 103 8, 11 11 100 5)), ((0 0 1 11, 1 0 2 12, 1 1 3 13, 0 1 4 14, 0 0 1 11)))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -58; - } - -/* Inserting into gcoll_xy */ - sql = "INSERT INTO gcoll_xy (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(5 5, 6 6), POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -59; - } - -/* Inserting into gcoll_xyz */ - sql = "INSERT INTO gcoll_xyz (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(10 10 100), LINESTRINGZ(5 5 10, 6 6 11), POLYGONZ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -60; - } - -/* Inserting into gcoll_xym */ - sql = "INSERT INTO gcoll_xym (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONM(POINTM(10 10 100), LINESTRINGM(5 5 10, 6 6 11), POLYGONM((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -61; - } - -/* Inserting into gcoll_xyzm */ - sql = "INSERT INTO gcoll_xyzm (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(10 10 100 11), LINESTRINGZM(5 5 10 11, 6 6 11 12), POLYGONZM((0 0 1 10, 1 0 2 11, 1 1 3 12, 0 1 4 13, 0 0 1 10)))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -62; - } - -/* Inserting into geom_xy */ - sql = "INSERT INTO geom_xy (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(5 5, 6 6), POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -63; - } - sql = "INSERT INTO geom_xy (id, g) VALUES (2, GeomFromText('POINT(10 10)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -64; - } - -/* Inserting into geom_xyz */ - sql = "INSERT INTO geom_xyz (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(10 10 100), LINESTRINGZ(5 5 10, 6 6 11), POLYGONZ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -65; - } - sql = "INSERT INTO geom_xyz (id, g) VALUES (2, GeomFromText('POINTZ(10 10 100)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -66; - } - -/* Inserting into geom_xym */ - sql = "INSERT INTO geom_xym (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONM(POINTM(10 10 100), LINESTRINGM(5 5 10, 6 6 11), POLYGONM((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -67; - } - sql = "INSERT INTO geom_xym (id, g) VALUES (2, GeomFromText('POINTM(10 10 100)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -68; - } - -/* Inserting into geom_xyzm */ - sql = "INSERT INTO geom_xyzm (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(10 10 100 11), LINESTRINGZM(5 5 10 11, 6 6 11 12), POLYGONZM((0 0 1 10, 1 0 2 11, 1 1 3 12, 0 1 4 13, 0 0 1 10)))', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -69; - } - sql = "INSERT INTO geom_xyzm (id, g) VALUES (2, GeomFromText('POINTZM(10 10 100 11)', 4326))"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -70; - } - -/* recovering pt_xy */ - sql = "SELECT RecoverGeometryColumn('pt_xy', 'g', 4326, 'POINT', 2);"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -71; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -72; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -73; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -74; - } - sqlite3_free_table (results); - -/* recovering pt_xyz */ - sql = "SELECT RecoverGeometryColumn('pt_xyz', 'g', 4326, 'POINT', 3);"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -75; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -76; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -77; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -78; - } - sqlite3_free_table (results); - -/* recovering pt_xym */ - sql = "SELECT RecoverGeometryColumn('pt_xym', 'g', 4326, 'POINT', 'XYM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -79; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -80; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -81; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -82; - } - sqlite3_free_table (results); - -/* recovering pt_xyzm */ - sql = "SELECT RecoverGeometryColumn('pt_xyzm', 'g', 4326, 'POINT', 'XYZM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -83; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -84; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -85; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -86; - } - sqlite3_free_table (results); - -/* recovering ln_xy */ - sql = "SELECT RecoverGeometryColumn('ln_xy', 'g', 4326, 'LINESTRING', 'XY');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -87; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -88; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -89; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -90; - } - sqlite3_free_table (results); - -/* recovering ln_xyz */ - sql = "SELECT RecoverGeometryColumn('ln_xyz', 'g', 4326, 'LINESTRING', 'XYZ');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -91; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -92; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -93; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -94; - } - sqlite3_free_table (results); - -/* recovering ln_xym */ - sql = "SELECT RecoverGeometryColumn('ln_xym', 'g', 4326, 'LINESTRING', 'XYM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -95; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -96; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -97; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -98; - } - sqlite3_free_table (results); - -/* recovering ln_xyzm */ - sql = "SELECT RecoverGeometryColumn('ln_xyzm', 'g', 4326, 'LINESTRING', 'XYZM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -99; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -100; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -101; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -102; - } - sqlite3_free_table (results); - -/* recovering pg_xy */ - sql = "SELECT RecoverGeometryColumn('pg_xy', 'g', 4326, 'POLYGON', 'XY');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -103; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -104; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -105; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -106; - } - sqlite3_free_table (results); - -/* recovering pg_xyz */ - sql = "SELECT RecoverGeometryColumn('pg_xyz', 'g', 4326, 'POLYGON', 'XYZ');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -107; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -108; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -109; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -110; - } - sqlite3_free_table (results); - -/* recovering pg_xym */ - sql = "SELECT RecoverGeometryColumn('pg_xym', 'g', 4326, 'POLYGON', 'XYM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -111; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -112; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -113; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -114; - } - sqlite3_free_table (results); - -/* recovering pg_xyzm */ - sql = "SELECT RecoverGeometryColumn('pg_xyzm', 'g', 4326, 'POLYGON', 'XYZM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -115; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -116; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -117; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -118; - } - sqlite3_free_table (results); - -/* recovering mpt_xy */ - sql = "SELECT RecoverGeometryColumn('mpt_xy', 'g', 4326, 'MULTIPOINT', 'XY');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -119; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -120; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -121; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -122; - } - sqlite3_free_table (results); - -/* recovering mpt_xyz */ - sql = "SELECT RecoverGeometryColumn('mpt_xyz', 'g', 4326, 'MULTIPOINT', 'XYZ');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -123; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -124; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -125; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -126; - } - sqlite3_free_table (results); - -/* recovering mpt_xym */ - sql = "SELECT RecoverGeometryColumn('mpt_xym', 'g', 4326, 'MULTIPOINT', 'XYM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -127; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -128; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -129; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -130; - } - sqlite3_free_table (results); - -/* recovering mpt_xyzm */ - sql = "SELECT RecoverGeometryColumn('mpt_xyzm', 'g', 4326, 'MULTIPOINT', 'XYZM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -131; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -132; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -133; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -134; - } - sqlite3_free_table (results); - -/* recovering mln_xy */ - sql = "SELECT RecoverGeometryColumn('mln_xy', 'g', 4326, 'MULTILINESTRING', 'XY');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -135; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -136; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -137; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -138; - } - sqlite3_free_table (results); - -/* recovering mln_xyz */ - sql = "SELECT RecoverGeometryColumn('mln_xyz', 'g', 4326, 'MULTILINESTRING', 'XYZ');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -139; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -140; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -141; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -142; - } - sqlite3_free_table (results); - -/* recovering mln_xym */ - sql = "SELECT RecoverGeometryColumn('mln_xym', 'g', 4326, 'MULTILINESTRING', 'XYM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -143; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -144; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -145; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -146; - } - sqlite3_free_table (results); - -/* recovering mln_xyzm */ - sql = "SELECT RecoverGeometryColumn('mln_xyzm', 'g', 4326, 'MULTILINESTRING', 'XYZM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -147; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -148; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -149; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -150; - } - sqlite3_free_table (results); - -/* recovering mpg_xy */ - sql = "SELECT RecoverGeometryColumn('mpg_xy', 'g', 4326, 'MULTIPOLYGON', 'XY');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -151; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -152; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -153; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -154; - } - sqlite3_free_table (results); - -/* recovering mpg_xyz */ - sql = "SELECT RecoverGeometryColumn('mpg_xyz', 'g', 4326, 'MULTIPOLYGON', 'XYZ');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -155; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -156; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -157; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -158; - } - sqlite3_free_table (results); - -/* recovering mpg_xym */ - sql = "SELECT RecoverGeometryColumn('mpg_xym', 'g', 4326, 'MULTIPOLYGON', 'XYM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -159; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -160; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -161; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -162; - } - sqlite3_free_table (results); - -/* recovering mpg_xyzm */ - sql = "SELECT RecoverGeometryColumn('mpg_xyzm', 'g', 4326, 'MULTIPOLYGON', 'XYZM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -163; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -164; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -165; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -166; - } - sqlite3_free_table (results); - -/* recovering gcoll_xy */ - sql = "SELECT RecoverGeometryColumn('gcoll_xy', 'g', 4326, 'GEOMETRYCOLLECTION', 'XY');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -167; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -168; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -169; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -170; - } - sqlite3_free_table (results); - -/* recovering gcoll_xyz */ - sql = "SELECT RecoverGeometryColumn('gcoll_xyz', 'g', 4326, 'GEOMETRYCOLLECTION', 'XYZ');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -171; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -172; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -173; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -174; - } - sqlite3_free_table (results); - -/* recovering gcoll_xym */ - sql = "SELECT RecoverGeometryColumn('gcoll_xym', 'g', 4326, 'GEOMETRYCOLLECTION', 'XYM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -175; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -176; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -177; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -178; - } - sqlite3_free_table (results); - -/* recovering gcoll_xyzm */ - sql = "SELECT RecoverGeometryColumn('gcoll_xyzm', 'g', 4326, 'GEOMETRYCOLLECTION', 'XYZM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -179; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -180; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -181; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -182; - } - sqlite3_free_table (results); - -/* recovering geom_xy */ - sql = "SELECT RecoverGeometryColumn('geom_xy', 'g', 4326, 'GEOMETRY', 'XY');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -183; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -184; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -185; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -186; - } - sqlite3_free_table (results); - -/* recovering geom_xyz */ - sql = "SELECT RecoverGeometryColumn('geom_xyz', 'g', 4326, 'GEOMETRY', 'XYZ');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -187; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -188; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -189; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -190; - } - sqlite3_free_table (results); - -/* recovering geom_xym */ - sql = "SELECT RecoverGeometryColumn('geom_xym', 'g', 4326, 'GEOMETRY', 'XYM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -191; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -192; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -193; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -194; - } - sqlite3_free_table (results); - -/* recovering geom_xyzm */ - sql = "SELECT RecoverGeometryColumn('geom_xyzm', 'g', 4326, 'GEOMETRY', 'XYZM');"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -195; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -196; - } - if (results[1] == NULL) { - fprintf (stderr, "Unexpected error: NULL result\n"); - return -197; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "Unexpected error: invalid result\n"); - return -198; - } - sqlite3_free_table (results); - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -199; - } - - spatialite_cleanup(); - - return 0; -} diff --git a/src/spatialite/test/check_relations_fncts.c b/src/spatialite/test/check_relations_fncts.c deleted file mode 100644 index a51a289..0000000 --- a/src/spatialite/test/check_relations_fncts.c +++ /dev/null @@ -1,793 +0,0 @@ -/* - - check_relations_fncts.c -- SpatiaLite Test Case - - This does "boundary conditions" and error checks for gg_relations - functions that are hard to test with SQL. - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" -#include "spatialite/gaiageo.h" - -static const double double_eps = 0.00000001; - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_GEOS /* only if GEOS is supported */ - int result; - double resultDouble; - int returnValue = 0; - gaiaGeomCollPtr geom; - gaiaGeomCollPtr g; - gaiaPolygonPtr pg; - gaiaRingPtr rng; - - /* Common setup */ - gaiaGeomCollPtr validGeometry = gaiaAllocGeomColl(); - double dummyResultArg = 0.0; - double dummyResultArg2 = 0.0; - - /* Tests start here */ - spatialite_init (0); - - /* null inputs for a range of geometry functions */ - result = gaiaGeomCollEquals(0, validGeometry); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -1; - goto exit; - } - - result = gaiaGeomCollEquals(validGeometry, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -2; - goto exit; - } - - result = gaiaGeomCollEquals(0, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -3; - goto exit; - } - - result = gaiaGeomCollIntersects(0, validGeometry); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -4; - goto exit; - } - - result = gaiaGeomCollIntersects(validGeometry, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -5; - goto exit; - } - - result = gaiaGeomCollIntersects(0, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -6; - goto exit; - } - - result = gaiaGeomCollOverlaps(0, validGeometry); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -7; - goto exit; - } - - result = gaiaGeomCollOverlaps(validGeometry, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -8; - goto exit; - } - - result = gaiaGeomCollOverlaps(0, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -9; - goto exit; - } - - result = gaiaGeomCollCrosses(0, validGeometry); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -10; - goto exit; - } - - result = gaiaGeomCollCrosses(validGeometry, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -11; - goto exit; - } - - result = gaiaGeomCollCrosses(0, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -12; - goto exit; - } - - result = gaiaGeomCollTouches(0, validGeometry); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -13; - goto exit; - } - - result = gaiaGeomCollTouches(validGeometry, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -14; - goto exit; - } - - result = gaiaGeomCollTouches(0, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -15; - goto exit; - } - - result = gaiaGeomCollDisjoint(0, validGeometry); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -16; - goto exit; - } - - result = gaiaGeomCollDisjoint(validGeometry, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -17; - goto exit; - } - - result = gaiaGeomCollDisjoint(0, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -18; - goto exit; - } - - result = gaiaGeomCollWithin(0, validGeometry); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -19; - goto exit; - } - - result = gaiaGeomCollWithin(validGeometry, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -20; - goto exit; - } - - result = gaiaGeomCollWithin(0, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -21; - goto exit; - } - - result = gaiaGeomCollContains(0, validGeometry); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -22; - goto exit; - } - - result = gaiaGeomCollContains(validGeometry, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -23; - goto exit; - } - - result = gaiaGeomCollContains(0, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -24; - goto exit; - } - - result = gaiaGeomCollRelate(0, validGeometry, "T********"); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -25; - goto exit; - } - - result = gaiaGeomCollRelate(validGeometry, 0, "T********"); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -26; - goto exit; - } - - result = gaiaGeomCollRelate(0, 0, "T********"); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -27; - goto exit; - } - -#ifdef GEOS_ADVANCED /* only if GEOS_ADVANCED is supported */ - result = gaiaHausdorffDistance(0, validGeometry, &dummyResultArg); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -34; - goto exit; - } - - result = gaiaHausdorffDistance(validGeometry, 0, &dummyResultArg); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -35; - goto exit; - } - - result = gaiaHausdorffDistance(0, 0, &dummyResultArg); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -36; - goto exit; - } - - result = gaiaGeomCollCovers(0, validGeometry); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -37; - goto exit; - } - - result = gaiaGeomCollCovers(validGeometry, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -38; - goto exit; - } - - result = gaiaGeomCollCovers(0, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -39; - goto exit; - } - - result = gaiaGeomCollCoveredBy(0, validGeometry); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -40; - goto exit; - } - - result = gaiaGeomCollCoveredBy(validGeometry, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -41; - goto exit; - } - - result = gaiaGeomCollCoveredBy(0, 0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -42; - goto exit; - } -#endif /* end GEOS_ADVANCED conditional */ - - result = gaiaGeomCollDistance(0, validGeometry, &dummyResultArg); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -43; - goto exit; - } - - result = gaiaGeomCollDistance(validGeometry, 0, &dummyResultArg); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -44; - goto exit; - } - - result = gaiaGeomCollDistance(0, 0, &dummyResultArg); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -45; - goto exit; - } - /* Check some of the single geometry analysis routines */ - - result = gaiaGeomCollLength(0, &dummyResultArg); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -46; - goto exit; - } - - result = gaiaGeomCollArea(0, &dummyResultArg); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -47; - goto exit; - } - - result = gaiaGeomCollCentroid(0, &dummyResultArg, &dummyResultArg2); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -48; - goto exit; - } - - result = gaiaGetPointOnSurface(0, &dummyResultArg, &dummyResultArg2); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -49; - goto exit; - } - - result = gaiaIsSimple(0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -32; - goto exit; - } - - result = gaiaIsValid(0); - if (result != -1) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -33; - goto exit; - } - -#ifdef GEOS_ADVANCED /* only if GEOS_ADVANCED is supported */ - resultDouble = gaiaLineLocatePoint(0, validGeometry); - if (abs (resultDouble - -1.0) > double_eps) { - fprintf(stderr, "bad result at %s:%i: %f\n", __FILE__, __LINE__, resultDouble); - returnValue = -62; - goto exit; - } - - resultDouble = gaiaLineLocatePoint(validGeometry, 0); - if (abs (resultDouble - -1.0) > double_eps) { - fprintf(stderr, "bad result at %s:%i: %f\n", __FILE__, __LINE__, resultDouble); - returnValue = -63; - goto exit; - } - - resultDouble = gaiaLineLocatePoint(0, 0); - if (abs (resultDouble - -1.0) > double_eps) { - fprintf(stderr, "bad result at %s:%i: %f\n", __FILE__, __LINE__, resultDouble); - returnValue = -64; - goto exit; - } - - /* geometry generating functionality */ - geom = NULL; - geom = gaiaLinesCutAtNodes(0, validGeometry); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -50; - goto exit; - } - - geom = gaiaLinesCutAtNodes(validGeometry, 0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -51; - goto exit; - } - - geom = gaiaLinesCutAtNodes(0, 0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -52; - goto exit; - } - - geom = gaiaUnaryUnion(0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -53; - goto exit; - } - - geom = gaiaLineMerge(0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -54; - goto exit; - } - - geom = gaiaSnap(0, validGeometry, 4); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -55; - goto exit; - } - - geom = gaiaSnap(validGeometry, 0, 4); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -56; - goto exit; - } - - geom = gaiaSnap(0, 0, 4); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -57; - goto exit; - } - - geom = gaiaShortestLine(0, validGeometry); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -58; - goto exit; - } - - geom = gaiaShortestLine(validGeometry, 0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -59; - goto exit; - } - - geom = gaiaShortestLine(0, 0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -60; - goto exit; - } - - geom = gaiaLineSubstring(0, 0, 1); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -61; - goto exit; - } -#endif /* end GEOS_ADVANCED conditional */ - - geom = gaiaGeometryIntersection(0, validGeometry); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -65; - goto exit; - } - - geom = gaiaGeometryIntersection(validGeometry, 0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -66; - goto exit; - } - - geom = gaiaGeometryIntersection(0, 0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -67; - goto exit; - } - - geom = gaiaGeometryUnion(0, validGeometry); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -68; - goto exit; - } - - geom = gaiaGeometryUnion(validGeometry, 0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -69; - goto exit; - } - - geom = gaiaGeometryUnion(0, 0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -70; - goto exit; - } - - geom = gaiaGeometryDifference(0, validGeometry); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -71; - goto exit; - } - - geom = gaiaGeometryDifference(validGeometry, 0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -72; - goto exit; - } - - geom = gaiaGeometryDifference(0, 0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -73; - goto exit; - } - - geom = gaiaGeometrySymDifference(0, validGeometry); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -74; - goto exit; - } - - geom = gaiaGeometrySymDifference(validGeometry, 0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -75; - goto exit; - } - - geom = gaiaGeometrySymDifference(0, 0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -76; - goto exit; - } - - geom = gaiaBoundary(0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -77; - goto exit; - } - - geom = gaiaGeomCollSimplify(0, 1.0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -78; - goto exit; - } - - geom = gaiaGeomCollSimplifyPreserveTopology(0, 1.0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -79; - goto exit; - } - - geom = gaiaConvexHull(0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -80; - goto exit; - } - - geom = gaiaGeomCollBuffer(0, 0.1, 10); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -81; - goto exit; - } - -#ifdef GEOS_ADVANCED /* only if GEOS_ADVANCED is supported */ - geom = gaiaOffsetCurve (0, 1.5, 10, 1); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -82; - goto exit; - } - - geom = gaiaSingleSidedBuffer (0, 1.5, 10, 1); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -83; - goto exit; - } - - geom = gaiaSharedPaths(0, validGeometry); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -84; - goto exit; - } - - geom = gaiaSharedPaths(validGeometry, 0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -85; - goto exit; - } - - geom = gaiaSharedPaths(0, 0); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -86; - goto exit; - } - - geom = gaiaLineInterpolatePoint (0, 0.6); - if (geom != NULL) { - gaiaFree(geom); - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -87; - goto exit; - } -#endif /* end GEOS_ADVANCED conditional */ - - /* Test some strange conditions */ - result = gaiaGeomCollLength(validGeometry, &dummyResultArg); - if (result != 0) { - fprintf(stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, result); - returnValue = -88; - goto exit; - } - - /* preparing a collection of Polygons */ - geom = gaiaAllocGeomColl(); - pg = gaiaAddPolygonToGeomColl(geom, 5, 1); - rng = pg->Exterior; - gaiaSetPoint(rng->Coords, 0, 1.5, 1.5); - gaiaSetPoint(rng->Coords, 1, 10.5, 1.5); - gaiaSetPoint(rng->Coords, 2, 10.5, 10.5); - gaiaSetPoint(rng->Coords, 3, 1.5, 10.5); - gaiaSetPoint(rng->Coords, 4, 1.5, 1.5); - rng = gaiaAddInteriorRing(pg, 0, 5); - gaiaSetPoint(rng->Coords, 0, 5.5, 5.5); - gaiaSetPoint(rng->Coords, 1, 6.5, 1.5); - gaiaSetPoint(rng->Coords, 2, 6.5, 6.5); - gaiaSetPoint(rng->Coords, 3, 5.5, 6.5); - gaiaSetPoint(rng->Coords, 4, 5.5, 5.5); - pg = gaiaAddPolygonToGeomColl(geom, 5, 1); - rng = pg->Exterior; - gaiaSetPoint(rng->Coords, 0, 8.5, 8.5); - gaiaSetPoint(rng->Coords, 1, 18.5, 8.5); - gaiaSetPoint(rng->Coords, 2, 18.5, 18.5); - gaiaSetPoint(rng->Coords, 3, 8.5, 18.5); - gaiaSetPoint(rng->Coords, 4, 8.5, 8.5); - rng = gaiaAddInteriorRing(pg, 0, 5); - gaiaSetPoint(rng->Coords, 0, 11.5, 11.5); - gaiaSetPoint(rng->Coords, 1, 12.5, 11.5); - gaiaSetPoint(rng->Coords, 2, 12.5, 12.5); - gaiaSetPoint(rng->Coords, 3, 11.5, 12.5); - gaiaSetPoint(rng->Coords, 4, 11.5, 11.5); - pg = gaiaAddPolygonToGeomColl(geom, 5, 0); - rng = pg->Exterior; - gaiaSetPoint(rng->Coords, 0, 4.5, 4.5); - gaiaSetPoint(rng->Coords, 1, 30.5, 4.5); - gaiaSetPoint(rng->Coords, 2, 30.5, 30.5); - gaiaSetPoint(rng->Coords, 3, 4.5, 30.5); - gaiaSetPoint(rng->Coords, 4, 4.5, 4.5); - -#ifdef GEOS_ADVANCED /* only if GEOS_ADVANCED is supported */ - /* Tests Polygons UnaryUnion [as in aggregate ST_Union] */ - g = gaiaUnaryUnion(geom); - if (g == NULL) { - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -89; - goto exit; - } - result = gaiaGeomCollLength(g, &dummyResultArg); - if (result == 1 && (dummyResultArg >= 122.84232 && dummyResultArg <= 122.84233)) - ; - else { - fprintf(stderr, "bad result at %s:%i: %i %f\n", __FILE__, __LINE__, result, dummyResultArg); - returnValue = -90; - goto exit; - } - gaiaFreeGeomColl(g); -#endif /* end GEOS_ADVANCED conditional */ - - /* Tests Polygons UnionCascaded [as in aggregate ST_Union] */ - g = gaiaUnionCascaded(geom); - if (g == NULL) { - fprintf(stderr, "bad result at %s:%i\n", __FILE__, __LINE__); - returnValue = -91; - goto exit; - } - result = gaiaGeomCollLength(g, &dummyResultArg); - if (result == 1 && (dummyResultArg >= 122.84232 && dummyResultArg <= 122.84233)) - ; - else { - fprintf(stderr, "bad result at %s:%i: %i %f\n", __FILE__, __LINE__, result, dummyResultArg); - returnValue = -92; - goto exit; - } - gaiaFreeGeomColl(g); - gaiaFreeGeomColl(geom); - - /* Cleanup and exit */ -exit: - gaiaFreeGeomColl (validGeometry); - spatialite_cleanup(); - return returnValue; - -#endif /* end GEOS conditional */ - return 0; -} diff --git a/src/spatialite/test/check_shp_load.c b/src/spatialite/test/check_shp_load.c deleted file mode 100644 index 4b14a70..0000000 --- a/src/spatialite/test/check_shp_load.c +++ /dev/null @@ -1,96 +0,0 @@ -/* - - check_shp_load.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards -Ahmadou Dicko - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - int row_count; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - - ret = load_shapefile (handle, "./shapetest1", "test1", "UTF-8", 4326, - "col1", 1, 0, 1, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error: %s\n", err_msg); - sqlite3_close(handle); - return -3; - } - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -4; - } - - spatialite_cleanup(); -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/check_shp_load_3d.c b/src/spatialite/test/check_shp_load_3d.c deleted file mode 100644 index b91c4ab..0000000 --- a/src/spatialite/test/check_shp_load_3d.c +++ /dev/null @@ -1,506 +0,0 @@ -/* - - check_shp_load_3d.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - int row_count; - const char *sql; - char **results; - int rows; - int columns; - double tic; - gaiaVectorLayersListPtr list; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - - ret = load_shapefile (handle, "shp/merano-3d/polygons", "polygons", "CP1252", 25832, - "geom", 0, 1, 1, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error: %s\n", err_msg); - sqlite3_close(handle); - return -3; - } - - ret = update_layer_statistics (handle, "polygons", "geom"); - if (!ret) { - fprintf (stderr, "update_layer_statistics() error %s\n", err_msg); - sqlite3_close(handle); - return -8; - } - - ret = load_shapefile (handle, "shp/merano-3d/roads", "roads", "CP1252", 25832, - "geom", 0, 0, 1, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error: %s\n", err_msg); - sqlite3_close(handle); - return -4; - } - - ret = load_shapefile (handle, "shp/merano-3d/points", "points", "CP1252", 25832, - "geom", 0, 0, 1, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error: %s\n", err_msg); - sqlite3_close(handle); - return -5; - } - - ret = sqlite3_exec (handle, "INSERT INTO polygons (FEATURE_ID, DATUM, HAUSNR) VALUES (1250000, 0.1, 'alpha')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT polygons (1) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -14; - } - ret = sqlite3_exec (handle, "INSERT INTO polygons (FEATURE_ID, DATUM, HAUSNR) VALUES (1250000, 0.1, 'alpha')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT polygons (1) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -15; - } - ret = sqlite3_exec (handle, "INSERT INTO polygons (FEATURE_ID, DATUM, TEXT_I) VALUES (1250000, 0.1, 'alpha')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT polygons (1) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -16; - } - - ret = sqlite3_exec (handle, "CREATE TABLE polyg_xy (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE polyg_xy error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -17; - } - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('polyg_xy', 'geom', 25832, 'POLYGON', 'XY')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeomety polyg_xy error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -17; - } - ret = sqlite3_exec (handle, "INSERT INTO polyg_xy (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXY(geom) FROM polygons WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding polyg_xy (1) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -18; - } - ret = sqlite3_exec (handle, "INSERT INTO polyg_xy (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXY(geom) FROM polygons WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding polyg_xy (2) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -19; - } - ret = sqlite3_exec (handle, "CREATE TABLE polyg_xym (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE polyg_xym error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -20; - } - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('polyg_xym', 'geom', 25832, 'POLYGON', 'XYM')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometry polyg_xym error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -21; - } - ret = sqlite3_exec (handle, "INSERT INTO polyg_xym (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYM(geom) FROM polygons WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding polyg_xym (1) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -22; - } - ret = sqlite3_exec (handle, "INSERT INTO polyg_xym (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYM(geom) FROM polygons WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding polyg_xym (2) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -23; - } - ret = sqlite3_exec (handle, "CREATE TABLE polyg_xyz (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE polyg_xyz error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -24; - } - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('polyg_xyz', 'geom', 25832, 'POLYGON', 'XYZ')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometry polyg_xyz error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -25; - } - ret = sqlite3_exec (handle, "INSERT INTO polyg_xyz (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZ(geom) FROM polygons WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding polyg_xyz (1) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -26; - } - ret = sqlite3_exec (handle, "INSERT INTO polyg_xyz (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZ(geom) FROM polygons WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding polyg_xyz (2) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -27; - } - - ret = sqlite3_exec (handle, "CREATE TABLE roads_xyz (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE roads_xyz error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -28; - } - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('roads_xyz', 'geom', 25832, 'LINESTRING', 'XYZ')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeomety roads_xyz error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -29; - } - ret = sqlite3_exec (handle, "INSERT INTO roads_xyz (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZ(geom) FROM roads WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding roads_xyz (1) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -30; - } - ret = sqlite3_exec (handle, "INSERT INTO roads_xyz (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZ(geom) FROM roads WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding roads_xyz (2) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -31; - } - ret = sqlite3_exec (handle, "CREATE TABLE roads_xym (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE roads_xym error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -32; - } - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('roads_xym', 'geom', 25832, 'LINESTRING', 'XYM')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometry roads_xym error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -33; - } - ret = sqlite3_exec (handle, "INSERT INTO roads_xym (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYM(geom) FROM roads WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding roads_xym (1) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -34; - } - ret = sqlite3_exec (handle, "INSERT INTO roads_xym (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYM(geom) FROM roads WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding roads_xym (2) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -35; - } - ret = sqlite3_exec (handle, "CREATE TABLE roads_xyzm (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE roads_xyzm error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -36; - } - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('roads_xyzm', 'geom', 25832, 'LINESTRING', 'XYZM')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometry roads_xyzm error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -37; - } - ret = sqlite3_exec (handle, "INSERT INTO roads_xyzm (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZM(geom) FROM roads WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding roads_xyzm (1) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -38; - } - ret = sqlite3_exec (handle, "INSERT INTO roads_xyzm (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZM(geom) FROM roads WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding roads_xyzm (2) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -39; - } - - ret = sqlite3_exec (handle, "CREATE TABLE points_xyz (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE points_xyz error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -40; - } - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('points_xyz', 'geom', 25832, 'POINT', 'XYZ')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeomety points_xyz error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -41; - } - ret = sqlite3_exec (handle, "INSERT INTO points_xyz (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZ(geom) FROM points WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding points_xyz (1) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -42; - } - ret = sqlite3_exec (handle, "INSERT INTO points_xyz (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZ(geom) FROM points WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding points_xyz (2) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -43; - } - ret = sqlite3_exec (handle, "CREATE TABLE points_xym (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE points_xym error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -44; - } - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('points_xym', 'geom', 25832, 'POINT', 'XYM')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometry points_xym error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -45; - } - ret = sqlite3_exec (handle, "INSERT INTO points_xym (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYM(geom) FROM points WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding points_xym (1) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -46; - } - ret = sqlite3_exec (handle, "INSERT INTO points_xym (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYM(geom) FROM points WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding points_xym (2) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -47; - } - ret = sqlite3_exec (handle, "CREATE TABLE points_xyzm (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE points_xyzm error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -48; - } - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('points_xyzm', 'geom', 25832, 'POINT', 'XYZM')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometry points_xyzm error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -49; - } - ret = sqlite3_exec (handle, "INSERT INTO points_xyzm (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZM(geom) FROM points WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding points_xyzm (1) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -50; - } - ret = sqlite3_exec (handle, "INSERT INTO points_xyzm (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZM(geom) FROM points WHERE geom IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "feeding points_xyzm (2) error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -51; - } - - elementary_geometries (handle, "points", "geom", "elem_point", "pk_elem", "mul_id"); - elementary_geometries (handle, "roads", "geom", "elem_linestring", "pk_elem", "mul_id"); - elementary_geometries (handle, "polygons", "geom", "elem_poly", "pk_elem", "mul_id"); - - elementary_geometries (handle, "polyg_xy", "geom", "elem_poly_xy", "pk_elem1", "mul_id"); - elementary_geometries (handle, "polyg_xym", "geom", "elem_poly_xym", "pk_elem1", "mul_id"); - elementary_geometries (handle, "polyg_xyz", "geom", "elem_poly_xyz", "pk_elem1", "mul_id"); - - elementary_geometries (handle, "roads_xyz", "geom", "elem_roads_xy", "pk_elem1", "mul_id"); - elementary_geometries (handle, "roads_xym", "geom", "elem_roads_xym", "pk_elem1", "mul_id"); - elementary_geometries (handle, "roads_xyzm", "geom", "elem_roads_xyz", "pk_elem1", "mul_id"); - - elementary_geometries (handle, "points_xyz", "geom", "elem_points_xy", "pk_elem1", "mul_id"); - elementary_geometries (handle, "points_xym", "geom", "elem_points_xym", "pk_elem1", "mul_id"); - elementary_geometries (handle, "points_xyzm", "geom", "elem_points_xyz", "pk_elem1", "mul_id"); - - remove_duplicated_rows(handle, "polyg_xy"); - remove_duplicated_rows(handle, "polyg_xyz"); - remove_duplicated_rows(handle, "polyg_xym"); - remove_duplicated_rows(handle, "roads_xyz"); - remove_duplicated_rows(handle, "roads_xym"); - remove_duplicated_rows(handle, "roads_xyzm"); - remove_duplicated_rows(handle, "points_xyz"); - remove_duplicated_rows(handle, "points_xym"); - remove_duplicated_rows(handle, "points_xyzm"); - - sql = "CREATE VIEW test_view AS " - "SELECT ROWID AS ROWID, pk_elem AS id, geom AS geometry FROM roads_xyz"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE test_view error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -52; - } - - sql = "INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, " - "f_table_name, f_geometry_column, read_only) VALUES " - "('test_view', 'geometry', 'rowid', 'roads_xyz', 'geom', 1)"; - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Register SpatialView error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -53; - } - - ret = update_layer_statistics (handle, NULL, NULL); - if (!ret) { - fprintf (stderr, "update_layer_statistics() error %s\n", err_msg); - sqlite3_close(handle); - return -54; - } - - sql = "SELECT row_count, extent_min_x, extent_max_y " - "FROM geometry_columns_statistics " - "WHERE f_table_name LIKE 'roads' " - "AND f_geometry_column LIKE 'geom'"; - ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -55; - } - if (rows != 1) { - fprintf (stderr, "Unexpected num of rows for GEOMETRY_COLUMNS_STATISTICS.\n"); - return -56; - } - if (atoi(results[columns+0]) != 18) { - fprintf (stderr, "Unexpected error: GEOMETRY_COLUMNS_STATISTICS bad result row_count: %s\n", results[columns+0]); - return -57; - } - tic = fabs(atof(results[columns+1]) - 666057.648017325); - if (tic >= 0.00000002) { - fprintf (stderr, "Unexpected error: GEOMETRY_COLUMNS_STATISTICS bad result extent_min_x: %s\n", results[columns+1]); - return -58; - } - tic = fabs(atof(results[columns+2]) - 5170671.31627796); - if (tic >= 0.0000002) { - fprintf (stderr, "Unexpected error: GEOMETRY_COLUMNS_STATISTICS bad result extent_max_y: %s\n", results[columns+2]); - return -59; - } - sqlite3_free_table (results); - - ret = gaiaDropTable (handle, "polygons"); - if (!ret) { - fprintf (stderr, "DROP polygons error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -60; - } - -/* checking gaiaGetVectorLayersList() - ALL */ - list = gaiaGetVectorLayersList(handle, NULL, NULL, GAIA_VECTORS_LIST_FAST); - gaiaFreeVectorLayersList(list); - -/* checking gaiaGetVectorLayersList() - Table */ - list = gaiaGetVectorLayersList(handle, "elem_points_xyz", NULL, GAIA_VECTORS_LIST_FAST); - gaiaFreeVectorLayersList(list); - -/* checking gaiaGetVectorLayersList() - Table and Geometry */ - list = gaiaGetVectorLayersList(handle, "elem_roads_xy", "geom", GAIA_VECTORS_LIST_FAST); - gaiaFreeVectorLayersList(list); - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -61; - } - - spatialite_cleanup(); -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/check_spatialindex.c b/src/spatialite/test/check_spatialindex.c deleted file mode 100644 index f85f4e9..0000000 --- a/src/spatialite/test/check_spatialindex.c +++ /dev/null @@ -1,733 +0,0 @@ -/* - - check_spatialindex.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -int do_test(sqlite3 *handle, int legacy) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - int ret; - char *err_msg = NULL; - int row_count; - char **results; - int rows; - int columns; - char sql[1024]; - - ret = load_shapefile (handle, "shp/foggia/local_councils", "Councils", - "CP1252", 23032, "geom", 1, 0, 1, 0, &row_count, - err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error: %s\n", err_msg); - sqlite3_close(handle); - return -3; - } - if (row_count != 61) { - fprintf (stderr, "unexpected number of rows loaded: %i\n", row_count); - sqlite3_close(handle); - return -4; - } - - ret = sqlite3_get_table (handle, "SELECT lc_name FROM Councils WHERE MbrWithin(geom, BuildMbr(1040523, 4010000, 1140523, 4850000)) ORDER BY lc_name;", - &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -5; - } - if ((rows != 22) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select lc_name bad result: %i/%i.\n", rows, columns); - sqlite3_free_table (results); - sqlite3_close(handle); - return -6; - } - if (strcmp(results[1], "Ascoli Satriano") != 0) { - fprintf (stderr, "unexpected result at 1: %s\n", results[1]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -7; - } - if (strcmp(results[22], "Zapponeta") != 0) { - fprintf (stderr, "unexpected result at 22: %s\n", results[22]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -8; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (handle, "SELECT CreateSpatialIndex('Councils', 'geom');", - NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CreateSpatialIndex error: %s\n", err_msg); - sqlite3_free (err_msg); - return -9; - } - - rows = 0; - columns = 0; - ret = sqlite3_get_table (handle, "SELECT pkid FROM idx_Councils_geom;", - &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error in idx SELECT: %s\n", err_msg); - sqlite3_free (err_msg); - return -10; - } - if ((rows != 61) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select pkid bad idx result: %i/%i.\n", rows, columns); - sqlite3_free_table (results); - sqlite3_close(handle); - return -11; - } - sqlite3_free_table (results); - - rows = 0; - columns = 0; - ret = sqlite3_get_table (handle, "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT pkid FROM idx_Councils_geom WHERE xmin > 1040523 AND ymin > 4010000 AND xmax < 1140523 AND ymax < 4850000) ORDER BY lc_name;", - &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error in Mbr SELECT Contains: %s\n", err_msg); - sqlite3_free (err_msg); - return -12; - } - if ((rows != 22) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select lc_name bad idx result: %i/%i.\n", rows, columns); - sqlite3_free_table (results); - sqlite3_close(handle); - return -13; - } - if (strcmp(results[1], "Ascoli Satriano") != 0) { - fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -14; - } - if (strcmp(results[22], "Zapponeta") != 0) { - fprintf (stderr, "unexpected mbr result at 22: %s\n", results[22]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -15; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (handle, "INSERT INTO Councils (lc_name, geom) VALUES ('Quairading', GeomFromText('MULTIPOLYGON(((997226.750031 4627372.000018, 997301.750031 4627332.000018, 997402.500031 4627344.000018, 997541.500031 4627326.500018,997226.750031 4627372.000018)))', 23032));", - NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT error: %s\n", err_msg); - sqlite3_free (err_msg); - return -16; - } - - rows = 0; - columns = 0; - ret = sqlite3_get_table (handle, "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT pkid FROM idx_Councils_geom WHERE xmin > 1040523 AND ymin > 4010000 AND xmax < 1140523 AND ymax < 4850000) ORDER BY lc_name;", - &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error in Mbr SELECT2: %s\n", err_msg); - sqlite3_free (err_msg); - return -17; - } - if ((rows != 22) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select lc_name bad idx result: %i/%i.\n", rows, columns); - sqlite3_free_table (results); - sqlite3_close(handle); - return -18; - } - if (strcmp(results[1], "Ascoli Satriano") != 0) { - fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -19; - } - if (strcmp(results[22], "Zapponeta") != 0) { - fprintf (stderr, "unexpected mbr result at 22: %s\n", results[22]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -20; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (handle, "UPDATE Councils SET geom = GeomFromText('MULTIPOLYGON(((987226.750031 4627372.000018, 997301.750031 4627331.000018, 997402.500032 4627344.000018, 997541.500031 4627326.500018, 987226.750031 4627372.000018)))', 23032) WHERE lc_name = \"Quairading\";", - NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "UPDATE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -34; - } - - rows = 0; - columns = 0; - ret = sqlite3_get_table (handle, "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT pkid FROM idx_Councils_geom WHERE xmin > 1040523 AND ymin > 4010000 AND xmax < 1140523 AND ymax < 4850000) ORDER BY lc_name;", - &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error in Mbr SELECT3: %s\n", err_msg); - sqlite3_free (err_msg); - return -35; - } - if ((rows != 22) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select lc_name bad idx result: %i/%i.\n", rows, columns); - sqlite3_free_table (results); - sqlite3_close(handle); - return -36; - } - if (strcmp(results[1], "Ascoli Satriano") != 0) { - fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -37; - } - if (strcmp(results[22], "Zapponeta") != 0) { - fprintf (stderr, "unexpected mbr result at 22: %s\n", results[22]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -38; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (handle, "DELETE FROM Councils WHERE lc_name = \"Ascoli Satriano\";", - NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -39; - } - - rows = 0; - columns = 0; - ret = sqlite3_get_table (handle, "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT pkid FROM idx_Councils_geom WHERE xmin > 1040523 AND ymin > 4010000 AND xmax < 1140523 AND ymax < 4850000) ORDER BY lc_name;", - &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error in Mbr SELECT3: %s\n", err_msg); - sqlite3_free (err_msg); - return -40; - } - if ((rows != 21) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select lc_name bad idx result: %i/%i.\n", rows, columns); - sqlite3_free_table (results); - sqlite3_close(handle); - return -41; - } - if (strcmp(results[1], "Cagnano Varano") != 0) { - fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -42; - } - if (strcmp(results[21], "Zapponeta") != 0) { - fprintf (stderr, "unexpected mbr result at 21: %s\n", results[21]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -43; - } - sqlite3_free_table (results); - - rows = 0; - columns = 0; - ret = sqlite3_get_table (handle, "SELECT rowid, nodeno FROM idx_Councils_geom_rowid ORDER BY rowid;", - &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error in Mbr SELECT: %s\n", err_msg); - sqlite3_free (err_msg); - return -44; - } - if ((rows != 61) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select rowid bad idx result: %i/%i.\n", rows, columns); - sqlite3_free_table (results); - sqlite3_close(handle); - return -45; - } - if (strcmp(results[2], "1") != 0) { - fprintf (stderr, "unexpected mbr result at 1: %s\n", results[2]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -46; - } - if (strcmp(results[12], "6") != 0) { - fprintf (stderr, "unexpected mbr result at 6: %s\n", results[12]); - sqlite3_free_table (results); - sqlite3_close(handle); - return -47; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (handle, "SELECT CheckSpatialIndex('Councils', 'geom');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CheckSpatialIndex (1) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -48; - } - - ret = sqlite3_exec (handle, "SELECT CheckSpatialIndex();", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CheckSpatialIndex (2) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -49; - } - - ret = sqlite3_exec (handle, "SELECT RecoverSpatialIndex('Councils', 'geom');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RecoverSpatialIndex (1) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -50; - } - - ret = sqlite3_exec (handle, "SELECT RecoverSpatialIndex();", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RecoverSpatialIndex (2) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -51; - } - -/* -/ going to create a broken/corrupted SpatialIndex -/ -/ - we'll create a new table (with no Primary Key) -/ - then we'll delete some rows -/ - and finally we'll perform a Vacuum -/ - all this notoriously causes R*Tree corruption -*/ - ret = sqlite3_exec (handle, "CREATE TABLE bad_councils AS SELECT lc_name, geom FROM Councils", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE TABLE bad_councils error: %s\n", err_msg); - sqlite3_free (err_msg); - return -52; - } - - ret = sqlite3_exec (handle, "SELECT RecoverGeometryColumn(1, 'geom', 23032, 'MULTIPOLYGON', 'XY')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -54; - } - ret = sqlite3_exec (handle, "SELECT RecoverGeometryColumn('bad_councils', 1, 23032, 'MULTIPOLYGON', 'XY')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -55; - } - ret = sqlite3_exec (handle, "SELECT RecoverGeometryColumn('bad_councils', 'geom', 23032.5, 'MULTIPOLYGON', 'XY')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -56; - } - ret = sqlite3_exec (handle, "SELECT RecoverGeometryColumn('bad_councils', 'geom', 23032, 1, 'XY')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -57; - } - ret = sqlite3_exec (handle, "SELECT RecoverGeometryColumn('bad_councils', 'geom', 23032, 'MULTIPOLYGON', 1.5)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -58; - } - ret = sqlite3_exec (handle, "SELECT RecoverGeometryColumn('bad_councils', 'geom', 23032, 'DUMMY', 'XY')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -59; - } - ret = sqlite3_exec (handle, "SELECT RecoverGeometryColumn('bad_councils', 'geom', 23032, 'MULTIPOLYGON', 'DUMMY')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -60; - } - ret = sqlite3_exec (handle, "SELECT RecoverGeometryColumn('bad_councils', 'geom', 23032, 'MULTIPOLYGON', 2)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -61; - } - - ret = sqlite3_exec (handle, "SELECT CreateSpatialIndex('bad_councils', 'geom')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CreateSpatialIndex(bad_councils) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -62; - } - - ret = sqlite3_exec (handle, "DELETE FROM bad_councils WHERE lc_name LIKE 'C%'", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE FROM bad_councils error: %s\n", err_msg); - sqlite3_free (err_msg); - return -63; - } - - ret = sqlite3_exec (handle, "VACUUM", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VACUUM error: %s\n", err_msg); - sqlite3_free (err_msg); - return -64; - } - ret = sqlite3_exec (handle, "SELECT CheckSpatialIndex('bad_councils', 'geom');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CheckSpatialIndex (3) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -65; - } - - ret = sqlite3_exec (handle, "SELECT RecoverSpatialIndex('bad_councils', 'geom');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RecoverSpatialIndex (3) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -66; - } - - ret = sqlite3_exec (handle, "SELECT UpdateLayerStatistics('bad_councils', 'geom');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "UpdateLayerStatistics (1) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -67; - } - - ret = sqlite3_exec (handle, "SELECT UpdateLayerStatistics();", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "UpdateLayerStatistics (2) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -68; - } -/* END broken SpatialIndex check/recover */ - - ret = sqlite3_exec (handle, "SELECT Extent(geom) FROM Councils;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Extent (1) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -69; - } - - strcpy (sql, "SELECT Count(*) FROM Councils WHERE ROWID IN ("); - strcat (sql, "SELECT ROWID FROM SpatialIndex WHERE "); - strcat (sql, "f_table_name = 'Councils' AND search_frame = "); - strcat (sql, "BuildMbr(10, 10, 20, 20));"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualSpatialIndex (1) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -70; - } - - strcpy (sql, "SELECT Count(*) FROM Councils WHERE ROWID IN ("); - strcat (sql, "SELECT ROWID FROM SpatialIndex WHERE "); - strcat (sql, "f_table_name = 'Councils' AND f_geometry_column = "); - strcat (sql, "'geom' AND search_frame = BuildCircleMbr(1019000, "); - strcat (sql, "4592000, 10000));"); - ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualSpatialIndex (2) error: %s\n", err_msg); - sqlite3_free (err_msg); - return -71; - } - - ret = sqlite3_exec (handle, "SELECT RebuildGeometryTriggers('Councils', 'geom');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Rebuild triggers error: %s\n", err_msg); - sqlite3_free (err_msg); - return -72; - } - - ret = sqlite3_exec (handle, "SELECT DisableSpatialIndex('Councils', 'geom');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Disable index error: %s\n", err_msg); - sqlite3_free (err_msg); - return -73; - } - - ret = sqlite3_exec (handle, "SELECT RebuildGeometryTriggers('Councils', 'geom');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Disable index error: %s\n", err_msg); - sqlite3_free (err_msg); - return -74; - } - - ret = sqlite3_exec (handle, "DROP TABLE Councils;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE Councils error: %s\n", err_msg); - sqlite3_free (err_msg); - return -75; - } - - ret = sqlite3_exec (handle, "SELECT DiscardGeometryColumn(1, 'a');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid DiscardGeometryColumn error: %s\n", err_msg); - sqlite3_free (err_msg); - return -76; - } - ret = sqlite3_exec (handle, "SELECT DiscardGeometryColumn('a', 1);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid DiscardGeometryColumn error: %s\n", err_msg); - sqlite3_free (err_msg); - return -77; - } - - ret = sqlite3_exec (handle, "SELECT CheckSpatialIndex(1, 'a');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid CheckSpatialIndex error: %s\n", err_msg); - sqlite3_free (err_msg); - return -78; - } - ret = sqlite3_exec (handle, "SELECT CheckSpatialIndex('a', 2);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid CheckSpatialIndex error: %s\n", err_msg); - sqlite3_free (err_msg); - return -79; - } - ret = sqlite3_exec (handle, "SELECT RecoverSpatialIndex(1, 'a');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid RecoverSpatialIndex error: %s\n", err_msg); - sqlite3_free (err_msg); - return -80; - } - ret = sqlite3_exec (handle, "SELECT RecoverSpatialIndex('a', 2);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid RecoverSpatialIndex error: %s\n", err_msg); - sqlite3_free (err_msg); - return -81; - } - ret = sqlite3_exec (handle, "SELECT RecoverSpatialIndex('a');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid RecoverSpatialIndex error: %s\n", err_msg); - sqlite3_free (err_msg); - return -82; - } - ret = sqlite3_exec (handle, "SELECT RecoverSpatialIndex(1);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid RecoverSpatialIndex error: %s\n", err_msg); - sqlite3_free (err_msg); - return -83; - } - ret = sqlite3_exec (handle, "SELECT RecoverSpatialIndex('a', 'b', 'c');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid RecoverSpatialIndex error: %s\n", err_msg); - sqlite3_free (err_msg); - return -84; - } - ret = sqlite3_exec (handle, "SELECT RecoverSpatialIndex('a', 'b', 1);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid RecoverSpatialIndex error: %s\n", err_msg); - sqlite3_free (err_msg); - return -85; - } - ret = sqlite3_exec (handle, "SELECT CreateSpatialIndex(1, 'a');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid CreateSpatialIndex error: %s\n", err_msg); - sqlite3_free (err_msg); - return -86; - } - ret = sqlite3_exec (handle, "SELECT CreateSpatialIndex('a', 2);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid CreateSpatialIndex error: %s\n", err_msg); - sqlite3_free (err_msg); - return -87; - } - ret = sqlite3_exec (handle, "SELECT DisableSpatialIndex(1, 'a');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid DisableSpatialIndex error: %s\n", err_msg); - sqlite3_free (err_msg); - return -88; - } - ret = sqlite3_exec (handle, "SELECT DisableSpatialIndex('a', 2);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid DisableSpatialIndex error: %s\n", err_msg); - sqlite3_free (err_msg); - return -89; - } - ret = sqlite3_exec (handle, "SELECT RebuildGeometryTriggers(1, 'a');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid RebuildGeometryTriggers error: %s\n", err_msg); - sqlite3_free (err_msg); - return -90; - } - ret = sqlite3_exec (handle, "SELECT RebuildGeometryTriggers('a', 2);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid RebuildGeometryTriggers error: %s\n", err_msg); - sqlite3_free (err_msg); - return -91; - } - ret = sqlite3_exec (handle, "SELECT UpdateLayerStatistics('a', 2);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid UpdateLayerStatistics error: %s\n", err_msg); - sqlite3_free (err_msg); - return -92; - } - ret = sqlite3_exec (handle, "SELECT UpdateLayerStatistics(2, 'a');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "invalid UpdateLayerStatistics error: %s\n", err_msg); - sqlite3_free (err_msg); - return -93; - } - -/* final DB cleanup */ - ret = sqlite3_exec (handle, "DROP TABLE bad_councils", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE bad_councils error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -94; - } - ret = sqlite3_exec (handle, "DROP TABLE idx_bad_councils_geom", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE idx_bad_councils_geom error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -95; - } - ret = sqlite3_exec (handle, "DROP TABLE idx_Councils_geom", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE idx_Councils_geom error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -96; - } - ret = sqlite3_exec (handle, "DELETE FROM geometry_columns", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE FROM geometry_columns error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -97; - } - if (legacy) - { - /* only required for legacy style metadata */ - ret = sqlite3_exec (handle, "DELETE FROM layer_statistics", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE FROM layer_statistics error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -98; - } - } - ret = sqlite3_exec (handle, "DELETE FROM spatialite_history WHERE geometry_column IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE FROM spatialite_history error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -99; - } - ret = sqlite3_exec (handle, "VACUUM", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VACUUM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -100; - } - -#endif /* end ICONV conditional */ - -/* ok, succesfull termination */ - return 0; -} - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - -/* testing current style metadata layout >= v.4.0.0 */ - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - - ret = do_test(handle, 0); - if (ret != 0) { - fprintf(stderr, "error while testing current style metadata layout\n"); - return ret; - } - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -101; - } - - spatialite_cleanup(); - -/* testing legacy style metadata layout <= v.3.1.0 */ - spatialite_init (0); - ret = sqlite3_open_v2 ("test-legacy-3.0.1.sqlite", &handle, SQLITE_OPEN_READWRITE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open legacy v.3.0.1 database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = do_test(handle, 1); - if (ret != 0) { - fprintf(stderr, "error while testing legacy style metadata layout\n"); - return ret; - } - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -101; - } - - spatialite_cleanup(); - -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/check_sql_stmt.c b/src/spatialite/test/check_sql_stmt.c deleted file mode 100644 index e2a33c7..0000000 --- a/src/spatialite/test/check_sql_stmt.c +++ /dev/null @@ -1,577 +0,0 @@ -/* - - check_sql_stmt.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#define _GNU_SOURCE -#include -#include -#include - -#ifndef _WIN32 -#include -#include -#endif - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -#ifndef OMIT_GEOS /* including GEOS */ -#include -#endif - -#ifdef _WIN32 -#include "fnmatch4win.h" -#include "scandir4win.h" -#include "asprintf4win.h" -#include "fnmatch_impl4win.h" -#endif - -struct test_data -{ - char * test_case_name; - char * database_name; - char * sql_statement; - int expected_rows; - int expected_columns; - char ** expected_results; - int *expected_precision; -}; - -int do_one_case (const struct test_data *data) -{ - sqlite3 *db_handle = NULL; - int ret; - char *err_msg = NULL; - int i; - char **results; - int rows; - int columns; - - fprintf(stderr, "Test case: %s\n", data->test_case_name); - /* This hack checks if the name ends with _RO */ - if (strncmp("_RO", data->database_name + strlen(data->database_name) - 3, strlen("_RO")) == 0) { - fprintf(stderr, "opening read_only\n"); - ret = sqlite3_open_v2 (data->database_name, &db_handle, SQLITE_OPEN_READONLY, NULL); - } else { - ret = sqlite3_open_v2 (data->database_name, &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - } - if (ret != SQLITE_OK) { - fprintf (stderr, "cannot open %s db: %s\n", data->database_name, sqlite3_errmsg (db_handle)); - sqlite3_close (db_handle); - db_handle = NULL; - return -1; - } - - ret = sqlite3_exec (db_handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(db_handle); - return -2; - } - - ret = sqlite3_get_table (db_handle, data->sql_statement, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -10; - } - if ((rows != data->expected_rows) || (columns != data->expected_columns)) { - fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, columns); - return -11; - } - for (i = 0; i < (data->expected_rows + 1) * data->expected_columns; ++i) { - if (results[i] != NULL && data->expected_precision[i] == 0) { - data->expected_precision[i] = strlen(results[i]); - } - if (results[i] == NULL) { - if (strcmp("(NULL)", data->expected_results[i]) == 0) { - /* we expected this */ - continue; - } else { - fprintf (stderr, "Null value at %i.\n", i); - fprintf (stderr, "Expected value was: %s\n", data->expected_results[i]); - return -12; - } - } else if (strlen(results[i]) == 0) { - fprintf (stderr, "zero length result at %i\n", i); - fprintf (stderr, "Expected value was : %s|\n", data->expected_results[i]); - return -13; - } else if (strncmp(results[i], data->expected_results[i], data->expected_precision[i]) != 0) { - fprintf (stderr, "Unexpected value at %i: %s|\n", i, results[i]); - fprintf (stderr, "Expected value was : %s|\n", data->expected_results[i]); - return -14; - } - } - sqlite3_free_table (results); - - sqlite3_close (db_handle); - - return 0; -} - -int get_clean_line(FILE *f, char ** line) -{ - size_t len = 0; - ssize_t num_read = 0; - ssize_t end = 0; - char *tmp_line = NULL; - -#if !defined(_WIN32) &&!defined(__APPLE__) -/* expecpting to be on a sane minded platform [linux-like] */ - num_read = getline(&(tmp_line), &len, f); -#else -/* neither Windows nor MacOsX support getline() */ - len = 1024 * 1024; - tmp_line = malloc(len); - if (fgets(tmp_line, len, f) == NULL) - { - free(tmp_line); - num_read = -1; - } - else - num_read = strlen(tmp_line); -#endif - - if (num_read < 1) { - fprintf(stderr, "failed to read at %li: %zi\n", ftell(f), num_read); - return -1; - } - /* trim the trailing new line and any comments */ - for (end = 0; end < num_read; ++end) { - if (*(tmp_line + end) == '\n') - break; - if (*(tmp_line + end) == '#') - break; - } - /* trim any trailing spaces */ - while (end > 0) { - if (*(tmp_line + end -1) != ' ') { - break; - } - *(tmp_line + end -1) = '\0'; - end--; - } - *line = malloc(end + 1); - memcpy(*line, tmp_line, end); - (*line)[end] = '\0'; - free(tmp_line); - return 0; -} - -void handle_precision(char *expected_result, int *precision) -{ - int i; - int result_len = strlen(expected_result); - *precision = 0; - for (i = result_len - 1; i >= 0; --i) { - if (expected_result[i] == ':') { - expected_result[i] = '\0'; - *precision = atoi(&(expected_result[i + 1])); - break; - } - } -} - -struct test_data *read_one_case(const char *filepath) -{ - int num_results; - int i; - char *tmp; - FILE *f; - struct test_data* data; - - f = fopen(filepath, "r"); - - data = malloc(sizeof(struct test_data)); - get_clean_line(f, &(data->test_case_name)); - get_clean_line(f, &(data->database_name)); - get_clean_line(f, &(data->sql_statement)); - get_clean_line(f, &(tmp)); - data->expected_rows = atoi(tmp); - free(tmp); - get_clean_line(f, &(tmp)); - data->expected_columns = atoi(tmp); - free(tmp); - num_results = (data->expected_rows + 1) * data->expected_columns; - data->expected_results = malloc(num_results * sizeof(char*)); - data->expected_precision = malloc(num_results * sizeof(int)); - for (i = 0; i < num_results; ++i) { - get_clean_line(f, &(data->expected_results[i])); - handle_precision(data->expected_results[i], &(data->expected_precision[i])); - } - fclose(f); - return data; -} - -void cleanup_test_data(struct test_data *data) -{ - int i; - int num_results = (data->expected_rows + 1) * (data->expected_columns); - - for (i = 0; i < num_results; ++i) { - free(data->expected_results[i]); - } - free(data->expected_results); - free(data->expected_precision); - free(data->test_case_name); - free(data->database_name); - free(data->sql_statement); - free(data); -} - -int test_case_filter(const struct dirent *entry) -{ - return (fnmatch("*.testcase", entry->d_name, FNM_PERIOD) == 0); -} - -int run_all_testcases() -{ - struct dirent **namelist; - int n; - int i; - int result = 0; - const char *security_level; - - n = scandir("sql_stmt_tests", &namelist, test_case_filter, alphasort); - if (n < 0) { - perror("scandir"); - return -1; - } - - for (i = 0; i < n; ++i) { - struct test_data *data; - char *path; - if (asprintf(&path, "sql_stmt_tests/%s", namelist[i]->d_name) < 0) { - return -1; - } - data = read_one_case(path); - free(path); - - result = do_one_case(data); - - cleanup_test_data(data); - if (result != 0) { - return result; - } - free(namelist[i]); - } - free(namelist); - - security_level = getenv ("SPATIALITE_SECURITY"); - if (security_level == NULL) - ; - else if (strcasecmp (security_level, "relaxed") == 0) { - n = scandir("sql_stmt_security_tests", &namelist, test_case_filter, alphasort); - if (n < 0) { - perror("scandir"); - return -1; - } - - for (i = 0; i < n; ++i) { - struct test_data *data; - char *path; - if (asprintf(&path, "sql_stmt_security_tests/%s", namelist[i]->d_name) < 0) { - return -1; - } - data = read_one_case(path); - free(path); - - result = do_one_case(data); - - cleanup_test_data(data); - if (result != 0) { - return result; - } - free(namelist[i]); - } - free(namelist); - } - -#ifndef OMIT_MATHSQL /* only if MATHSQL is supported */ - n = scandir("sql_stmt_mathsql_tests", &namelist, test_case_filter, alphasort); - if (n < 0) { - perror("scandir"); - return -1; - } - - for (i = 0; i < n; ++i) { - struct test_data *data; - char *path; - if (asprintf(&path, "sql_stmt_mathsql_tests/%s", namelist[i]->d_name) < 0) { - return -1; - } - data = read_one_case(path); - free(path); - - result = do_one_case(data); - - cleanup_test_data(data); - if (result != 0) { - return result; - } - free(namelist[i]); - } - free(namelist); -#endif /* end MATHSQL conditional */ - -#ifndef OMIT_PROJ /* only if PROJ is supported */ - n = scandir("sql_stmt_proj_tests", &namelist, test_case_filter, alphasort); - if (n < 0) { - perror("scandir"); - return -1; - } - - for (i = 0; i < n; ++i) { - struct test_data *data; - char *path; - if (asprintf(&path, "sql_stmt_proj_tests/%s", namelist[i]->d_name) < 0) { - return -1; - } - data = read_one_case(path); - free(path); - - result = do_one_case(data); - - cleanup_test_data(data); - if (result != 0) { - return result; - } - free(namelist[i]); - } - free(namelist); -#endif /* end PROJ conditional */ - -#ifndef OMIT_GEOS /* only if GEOS is supported */ - if (strcmp(GEOSversion (), "3.3") < 0) - { - /* - skipping GEOS tests if some obsolete version is found - - rationale: obsolete versions may return substantially - different results, thus causing many testcases to fail - */ - fprintf(stderr, "WARNING: skipping GEOS testcases; obsolete version found !!!\n"); - goto skip_geos; - } - - n = scandir("sql_stmt_geos_tests", &namelist, test_case_filter, alphasort); - if (n < 0) { - perror("scandir"); - return -1; - } - - for (i = 0; i < n; ++i) { - struct test_data *data; - char *path; - if (asprintf(&path, "sql_stmt_geos_tests/%s", namelist[i]->d_name) < 0) { - return -1; - } - data = read_one_case(path); - free(path); - - result = do_one_case(data); - - cleanup_test_data(data); - if (result != 0) { - return result; - } - free(namelist[i]); - } - free(namelist); -skip_geos: -#endif /* end GEOS conditional */ - -#ifdef GEOS_ADVANCED /* only if GEOS_ADVANCED is supported */ - if (strcmp(GEOSversion (), "3.3") < 0) - { - /* - skipping GEOS tests if some obsolete version is found - - rationale: obsolete versions may return substantially - different results, thus causing many testcases to fail - */ - fprintf(stderr, "WARNING: skipping GEOS_ADVANCED testcases; obsolete version found !!!\n"); - goto skip_geos_advanced; - } - n = scandir("sql_stmt_geosadvanced_tests", &namelist, test_case_filter, alphasort); - if (n < 0) { - perror("scandir"); - return -1; - } - - for (i = 0; i < n; ++i) { - struct test_data *data; - char *path; - if (asprintf(&path, "sql_stmt_geosadvanced_tests/%s", namelist[i]->d_name) < 0) { - return -1; - } - data = read_one_case(path); - free(path); - - result = do_one_case(data); - - cleanup_test_data(data); - if (result != 0) { - return result; - } - free(namelist[i]); - } - free(namelist); -skip_geos_advanced: -#endif /* end GEOS_ADVANCED conditional */ - -#ifdef GEOS_TRUNK /* only if GEOS_TRUNK is supported */ - if (strcmp(GEOSversion (), "3.3") < 0) - { - /* - skipping GEOS tests if some obsolete version is found - - rationale: obsolete versions may return substantially - different results, thus causing many testcases to fail - */ - fprintf(stderr, "WARNING: skipping GEOS_TRUNK testcases; obsolete version found !!!\n"); - goto skip_geos_trunk; - } - n = scandir("sql_stmt_geostrunk_tests", &namelist, test_case_filter, alphasort); - if (n < 0) { - perror("scandir"); - return -1; - } - - for (i = 0; i < n; ++i) { - struct test_data *data; - char *path; - if (asprintf(&path, "sql_stmt_geostrunk_tests/%s", namelist[i]->d_name) < 0) { - return -1; - } - data = read_one_case(path); - free(path); - - result = do_one_case(data); - - cleanup_test_data(data); - if (result != 0) { - return result; - } - free(namelist[i]); - } - free(namelist); -skip_geos_trunk: -#endif /* end GEOS_TRUNK conditional */ - -#ifdef ENABLE_LWGEOM /* only if LWGEOM is supported */ - n = scandir("sql_stmt_lwgeom_tests", &namelist, test_case_filter, alphasort); - if (n < 0) { - perror("scandir"); - return -1; - } - - for (i = 0; i < n; ++i) { - struct test_data *data; - char *path; - if (asprintf(&path, "sql_stmt_lwgeom_tests/%s", namelist[i]->d_name) < 0) { - return -1; - } - data = read_one_case(path); - free(path); - - result = do_one_case(data); - - cleanup_test_data(data); - if (result != 0) { - return result; - } - free(namelist[i]); - } - free(namelist); -#endif /* end LWGEOM conditional */ - - return result; -} - -int run_specified_testcases(int argc, char *argv[]) -{ - int result = 0; - int i = 0; - - for (i = 1; i < argc; ++i) - { - struct test_data *data; - data = read_one_case(argv[i]); - result = do_one_case(data); - cleanup_test_data(data); - if (result != 0) { - break; - } - } - return result; -} - -int main (int argc, char *argv[]) -{ - int result = 0; - - spatialite_init (0); - - if (argc == 1) - { - result = run_all_testcases(); - } - else - { - result = run_specified_testcases(argc, argv); - } - if (result != 0) - { - /* it looks like if MinGW applies some wrong assumption */ - /* some negative values are incorrectly reported to be OK */ - /* forcing -1 seems to resolve this issue */ - result = -1; - } - - spatialite_cleanup(); - - return result; -} diff --git a/src/spatialite/test/check_version.c b/src/spatialite/test/check_version.c deleted file mode 100644 index 5a8c268..0000000 --- a/src/spatialite/test/check_version.c +++ /dev/null @@ -1,62 +0,0 @@ -/* - - check_version.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ - if (strcmp(spatialite_version(), VERSION) != 0) { - fprintf(stderr, "SpatiaLite version mismatch: %s and %s\n", - VERSION, spatialite_version()); - return -1; - } - - return 0; -} diff --git a/src/spatialite/test/check_virtual_ovflw.c b/src/spatialite/test/check_virtual_ovflw.c deleted file mode 100644 index b9b171e..0000000 --- a/src/spatialite/test/check_virtual_ovflw.c +++ /dev/null @@ -1,329 +0,0 @@ -/* - - check_virtual_ovflw.c -- SpatiaLite Test Case - - Author: Sandro Furieri - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#define _GNU_SOURCE -#include -#include -#include - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ - sqlite3 *db_handle = NULL; - int ret; - char *err_msg = NULL; - char **results; - int rows; - int columns; - int suffix_len = 16 * 1024; /* 16 KB suffix */ - char *suffix; - char *table; - char *sql; - - spatialite_init (0); - - ret = sqlite3_open_v2 (":memory:", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf (stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (db_handle)); - sqlite3_close (db_handle); - db_handle = NULL; - return -1; - } - - ret = sqlite3_exec (db_handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(db_handle); - return -2; - } - -/* setting up very long table and column names */ - suffix = malloc(suffix_len); - memset(suffix, 'z', suffix_len); - suffix[suffix_len-1] = '\0'; - -#ifndef OMIT_FREEXL /* only if FreeXL is supported */ - table = sqlite3_mprintf("xltest_%s", suffix); - - sql = sqlite3_mprintf("create VIRTUAL TABLE %s USING VirtualXL(\"testcase1.xls\");", table); - ret = sqlite3_exec (db_handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualXL error: %s\n", err_msg); - sqlite3_free (err_msg); - return -3; - } - - sql = sqlite3_mprintf("select col_2, col_4, col_5, col_7, rowid " - "from %s WHERE col_2 = \"Canal Creek\";", table); - ret = sqlite3_get_table (db_handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -4; - } - if ((rows != 2) || (columns != 5)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -5; - } - if (strcmp(results[0], "col_2") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -6; - } - if (strcmp(results[5], "Canal Creek") != 0) { - fprintf (stderr, "Unexpected error: name5() bad result: %s.\n", results[5]); - return -7; - } - if (strncmp(results[6], "-27.86667", 9) != 0) { - fprintf (stderr, "Unexpected error: lat1() bad result: %s.\n", results[6]); - return -8; - } - if (strncmp(results[7], "151.51667", 9) != 0) { - fprintf (stderr, "Unexpected error: lon2() bad result: %s.\n", results[7]); - return -9; - } - if (strcmp(results[10], "Canal Creek") != 0) { - fprintf (stderr, "Unexpected error: name10() bad result: %s.\n", results[10]); - return -10; - } - sqlite3_free_table (results); - - sqlite3_free(table); -#endif /* end FreeXL conditional */ - -#ifndef OMIT_ICONV /* only if ICONV is supported */ - table = sqlite3_mprintf("shapetest_%s", suffix); - - sql = sqlite3_mprintf("create VIRTUAL TABLE %s USING VirtualShape(\"shapetest1\", UTF-8, 4326);", table); - ret = sqlite3_exec (db_handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualShape error: %s\n", err_msg); - sqlite3_free (err_msg); - return -11; - } - sql = sqlite3_mprintf("SELECT RegisterVirtualGeometry(%Q)", table); - ret = sqlite3_get_table (db_handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "RegisterVirtualGeometry error: %s\n", err_msg); - sqlite3_free (err_msg); - return -12; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "RegisterVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -13; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "RegisterVirtualGeometry Unexpected error: header() bad result: %s.\n", results[1]); - return -14; - } - sqlite3_free_table (results); - - sql = sqlite3_mprintf( "select testcase1, testcase2, AsText(Geometry) from %s where testcase2 < 20;", table); - ret = sqlite3_get_table (db_handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -15; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -16; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -17; - } - if (strcmp(results[3], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[3]); - return -18; - } - if (strcmp(results[4], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[4]); - return -19; - } - if (strcmp(results[5], "POINT(3480766.311245 4495355.740524)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -20; - } - sqlite3_free_table (results); - - sql = sqlite3_mprintf("SELECT DropVirtualGeometry(%Q)", table); - ret = sqlite3_get_table (db_handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "DropVirtualGeometry error: %s\n", err_msg); - sqlite3_free (err_msg); - return -21; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "DropVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -22; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "DropVirtualGeometry Unexpected error: header() bad result: %s.\n", results[0]); - return -23; - } - sqlite3_free_table (results); - - sql = sqlite3_mprintf("create VIRTUAL TABLE %s USING VirtualDBF(shapetest1.dbf, UTF-8);", table); - ret = sqlite3_exec (db_handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualDBF error: %s\n", err_msg); - sqlite3_free (err_msg); - return -24; - } - - sql = sqlite3_mprintf("select testcase1, testcase2 from %s where testcase2 < 20;", table); - ret = sqlite3_get_table (db_handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -25; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -26; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -27; - } - if (strcmp(results[2], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[2]); - return -28; - } - if (strcmp(results[3], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[3]); - return -29; - } - sqlite3_free_table (results); - - sql = sqlite3_mprintf("DROP TABLE %s;", table); - ret = sqlite3_exec (db_handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -30; - } - - sqlite3_free(table); -#endif /* end ICONV conditional */ - - sqlite3_close (db_handle); - spatialite_cleanup(); - - spatialite_init (0); - - ret = sqlite3_open_v2 ("./sql_stmt_tests/testdb1.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf (stderr, "cannot open testdb1.sqlite db: %s\n", sqlite3_errmsg (db_handle)); - sqlite3_close (db_handle); - db_handle = NULL; - return -31; - } - - table = sqlite3_mprintf("roads_net_%s", suffix); - - sql = sqlite3_mprintf("create VIRTUAL TABLE %s USING VirtualNetwork(\"roads_net_data\");", table); - ret = sqlite3_exec (db_handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualNetwork error: %s\n", err_msg); - sqlite3_free (err_msg); - return -32; - } - - sql = sqlite3_mprintf("SELECT NodeFrom, NodeTo FROM %s WHERE NodeTo = 29 AND NodeFrom = 32;", table); - ret = sqlite3_get_table (db_handle, sql, &results, &rows, &columns, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -33; - } - if ((rows != 4) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -34; - } - if (strcmp(results[0], "NodeFrom") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -35; - } - if (strcmp(results[2], "32") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[2]); - return -36; - } - if (strcmp(results[3], "29") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[3]); - return -37; - } - sqlite3_free_table (results); - - sql = sqlite3_mprintf("DROP TABLE %s;", table); - ret = sqlite3_exec (db_handle, sql, NULL, NULL, &err_msg); - sqlite3_free(sql); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -38; - } - - sqlite3_free(table); - - sqlite3_close (db_handle); - spatialite_cleanup(); - - free(suffix); - - return 0; -} diff --git a/src/spatialite/test/check_virtualtable1.c b/src/spatialite/test/check_virtualtable1.c deleted file mode 100644 index 5df53da..0000000 --- a/src/spatialite/test/check_virtualtable1.c +++ /dev/null @@ -1,347 +0,0 @@ -/* - - check_virtualtable1.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards -Ahmadou Dicko - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#define _GNU_SOURCE -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -#ifdef _WIN32 -#include "asprintf4win.h" -#endif - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - sqlite3 *db_handle = NULL; - char *sql_statement; - int ret; - char *err_msg = NULL; - char **results; - int rows; - int columns; - - spatialite_init (0); - - ret = sqlite3_open_v2 (":memory:", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf (stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (db_handle)); - sqlite3_close (db_handle); - db_handle = NULL; - return -1; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE places USING VirtualText(\"testcase1.csv\", UTF-8, 0, POINT, DOUBLEQUOTE);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualText error: %s\n", err_msg); - sqlite3_free (err_msg); - return -2; - } - - asprintf(&sql_statement, "select col003, col005, col006, col008 from places WHERE col003 = \"Canal Creek\";"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -10; - } - if ((rows != 2) || (columns != 4)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -11; - } - if (strcmp(results[0], "COL003") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -12; - } - if (strcmp(results[4], "Canal Creek") != 0) { - fprintf (stderr, "Unexpected error: name4() bad result: %s.\n", results[4]); - return -13; - } - if (strncmp(results[5], "-27.86667", 9) != 0) { - fprintf (stderr, "Unexpected error: lat1() bad result: %s.\n", results[5]); - return -14; - } - if (strncmp(results[6], "151.51667", 9) != 0) { - fprintf (stderr, "Unexpected error: lon2() bad result: %s.\n", results[6]); - return -15; - } - if (strcmp(results[8], "Canal Creek") != 0) { - fprintf (stderr, "Unexpected error: name8() bad result: %s.\n", results[8]); - return -16; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (db_handle, "BEGIN;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "BEGIN error: %s\n", err_msg); - sqlite3_free (err_msg); - return -21; - } - - ret = sqlite3_exec (db_handle, "DELETE FROM places WHERE col015 > 100000;", NULL, NULL, &err_msg); - if (ret != SQLITE_READONLY) { - fprintf (stderr, "UPDATE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -21; - } - sqlite3_free (err_msg); - - ret = sqlite3_exec (db_handle, "ROLLBACK;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "ROLLBACK error: %s\n", err_msg); - sqlite3_free (err_msg); - return -22; - } - ret = sqlite3_get_table (db_handle, "SELECT ROWNO, col003, col015 FROM places WHERE col015 > 100000", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -23; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -24; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT col002 FROM places WHERE col001 > 2172517 AND col001 <= 2172519", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -25; - } - if ((rows != 2) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -26; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT col002 FROM places WHERE col001 >= 2172517 AND col001 < 2172519", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -27; - } - if ((rows != 2) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -28; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT col002 FROM places WHERE col001 = 2172517", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -29; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -30; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT col001 FROM places WHERE col002 > 'Canberra' AND col002 <= 'Canbrae'", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -31; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -32; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT col001 FROM places WHERE col002 >= 'Canberra' AND col002 < 'Canbrae'", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -33; - } - if ((rows != 2) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -34; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT col001 FROM places WHERE col002 = 'Canbrae'", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -29; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -30; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT col001 FROM places WHERE ROWNO = 5", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -31; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -32; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT col001 FROM places WHERE col006 > 149.0 AND col006 <= 149.1", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -33; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -34; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT col001 FROM places WHERE col006 >= 149.1 AND col006 < 149.2", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -35; - } - if ((rows != 2) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -36; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT col001 FROM places WHERE col006 = 149.1", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -37; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -38; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT col001 FROM places WHERE col006 >= 149 AND col006 < 150", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -39; - } - if ((rows != 4) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -40; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT col001 FROM places WHERE col006 > 149 AND col006 <= 150", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -41; - } - if ((rows != 4) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -42; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT col001 FROM places WHERE col012 = 23940.0", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -43; - } - if ((rows != 2) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -44; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT col001 FROM places WHERE col012 >= 20000.0 AND col012 < 24000.0", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -45; - } - if ((rows != 2) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -46; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT col001 FROM places WHERE col012 > 20000.0 AND col012 <= 24000.0", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -45; - } - if ((rows != 2) || (columns != 1)) { - fprintf (stderr, "Unexpected error: select columns bad result2: %i/%i.\n", rows, columns); - return -46; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (db_handle, "DROP TABLE places;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -47; - } - - sqlite3_close (db_handle); - spatialite_cleanup(); -#endif /* end ICONV conditional */ - - - return 0; -} diff --git a/src/spatialite/test/check_virtualtable2.c b/src/spatialite/test/check_virtualtable2.c deleted file mode 100644 index 4f75644..0000000 --- a/src/spatialite/test/check_virtualtable2.c +++ /dev/null @@ -1,824 +0,0 @@ -/* - - check_virtualtable2.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards -Ahmadou Dicko - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#define _GNU_SOURCE -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -#ifdef _WIN32 -#include "asprintf4win.h" -#endif - -int do_test(sqlite3 *db_handle) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - char *sql_statement; - int ret; - char *err_msg = NULL; - char **results; - int rows; - int columns; - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE shapetest USING VirtualShape(\"shapetest1\", UTF-8, 4326);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualShape error: %s\n", err_msg); - sqlite3_free (err_msg); - return -2; - } - ret = sqlite3_get_table (db_handle, "SELECT RegisterVirtualGeometry('shapetest')", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RegisterVirtualGeometry error: %s\n", err_msg); - sqlite3_free (err_msg); - return -3; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "RegisterVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -4; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "RegisterVirtualGeometry Unexpected error: header() bad result: %s.\n", results[0]); - return -5; - } - sqlite3_free_table (results); - - - asprintf(&sql_statement, "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase2 < 20;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -6; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -7; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -8; - } - if (strcmp(results[3], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[3]); - return -9; - } - if (strcmp(results[4], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[4]); - return -10; - } - if (strcmp(results[5], "POINT(3480766.311245 4495355.740524)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -11; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase2 <= 19;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -12; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -13; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -14; - } - if (strcmp(results[3], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[3]); - return -15; - } - if (strcmp(results[4], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[4]); - return -16; - } - if (strcmp(results[5], "POINT(3480766.311245 4495355.740524)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -17; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase2 = 20;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -18; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -19; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -20; - } - if (strcmp(results[3], "orde lees") != 0) { - fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", results[3]); - return -21; - } - if (strcmp(results[4], "20") != 0) { - fprintf (stderr, "Unexpected error: integer2() bad result: %s.\n", results[4]); - return -22; - } - if (strcmp(results[5], "POINT(3482470.825574 4495691.054818)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -23; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase2 > 2;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -24; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -25; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -26; - } - if (strcmp(results[3], "orde lees") != 0) { - fprintf (stderr, "Unexpected error: orde lees2 bad result: %s.\n", results[3]); - return -27; - } - if (strcmp(results[4], "20") != 0) { - fprintf (stderr, "Unexpected error: integer4() bad result: %s.\n", results[4]); - return -28; - } - if (strcmp(results[5], "POINT(3482470.825574 4495691.054818)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -29; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase2 >= 20;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -30; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -31; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -32; - } - if (strcmp(results[3], "orde lees") != 0) { - fprintf (stderr, "Unexpected error: orde lees3 bad result: %s.\n", results[3]); - return -33; - } - if (strcmp(results[4], "20") != 0) { - fprintf (stderr, "Unexpected error: integer5() bad result: %s.\n", results[4]); - return -33; - } - if (strcmp(results[5], "POINT(3482470.825574 4495691.054818)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -34; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase1 < \"p\";"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -35; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -36; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -37; - } - if (strcmp(results[3], "orde lees") != 0) { - fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", results[3]); - return -38; - } - if (strcmp(results[4], "20") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[4]); - return -39; - } - if (strcmp(results[5], "POINT(3482470.825574 4495691.054818)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -40; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase1 <= \"p\";"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -41; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -42; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -43; - } - if (strcmp(results[3], "orde lees") != 0) { - fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", results[3]); - return -44; - } - if (strcmp(results[4], "20") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[4]); - return -45; - } - if (strcmp(results[5], "POINT(3482470.825574 4495691.054818)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -46; - } - sqlite3_free_table (results); - - - ret = sqlite3_exec (db_handle, "BEGIN;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "BEGIN error: %s\n", err_msg); - sqlite3_free (err_msg); - return -47; - } - - asprintf(&sql_statement, "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase1 > \"p\";"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -48; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -49; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -50; - } - if (strcmp(results[3], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[3]); - return -51; - } - if (strcmp(results[4], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[4]); - return -52; - } - if (strcmp(results[5], "POINT(3480766.311245 4495355.740524)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -53; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (db_handle, "DELETE FROM shapetest WHERE testcase2 = 2;", NULL, NULL, &err_msg); - if (ret != SQLITE_READONLY) { - fprintf (stderr, "UPDATE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -54; - } - sqlite3_free (err_msg); - - ret = sqlite3_exec (db_handle, "ROLLBACK;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "ROLLBACK error: %s\n", err_msg); - sqlite3_free (err_msg); - return -55; - } - - asprintf(&sql_statement, "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase1 >= \"p\";"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -56; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -57; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -58; - } - if (strcmp(results[3], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[3]); - return -59; - } - if (strcmp(results[4], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[4]); - return -60; - } - if (strcmp(results[5], "POINT(3480766.311245 4495355.740524)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -61; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase1 = \"windward\";"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -62; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -63; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -64; - } - if (strcmp(results[3], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[3]); - return -65; - } - if (strcmp(results[4], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[4]); - return -66; - } - if (strcmp(results[5], "POINT(3480766.311245 4495355.740524)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -67; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2, AsText(Geometry) from shapetest where PKUID = 1;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -68; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -69; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -70; - } - if (strcmp(results[3], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[3]); - return -71; - } - if (strcmp(results[4], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[4]); - return -72; - } - if (strcmp(results[5], "POINT(3480766.311245 4495355.740524)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -73; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2, AsText(Geometry) from shapetest where PKUID < 2;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -74; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -75; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -76; - } - if (strcmp(results[3], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[3]); - return -77; - } - if (strcmp(results[4], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[4]); - return -78; - } - if (strcmp(results[5], "POINT(3480766.311245 4495355.740524)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -79; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2, AsText(Geometry) from shapetest where PKUID <= 1;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -80; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -81; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -82; - } - if (strcmp(results[3], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[3]); - return -83; - } - if (strcmp(results[4], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[4]); - return -84; - } - if (strcmp(results[5], "POINT(3480766.311245 4495355.740524)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -85; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2, AsText(Geometry) from shapetest where PKUID > 1;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -86; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -87; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -88; - } - if (strcmp(results[3], "orde lees") != 0) { - fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", results[3]); - return -89; - } - if (strcmp(results[4], "20") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[4]); - return -90; - } - if (strcmp(results[5], "POINT(3482470.825574 4495691.054818)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -91; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2, AsText(Geometry) from shapetest where PKUID >= 2;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -92; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -93; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -94; - } - if (strcmp(results[3], "orde lees") != 0) { - fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", results[3]); - return -95; - } - if (strcmp(results[4], "20") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[4]); - return -96; - } - if (strcmp(results[5], "POINT(3482470.825574 4495691.054818)") != 0) { - fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", results[5]); - return -97; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select PKUID, testcase1, testcase2, AsText(Geometry) from shapetest where testcase1 LIKE \"wind%%\";"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -98; - } - if ((rows != 1) || (columns != 4)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -99; - } - if (strcmp(results[0], "PKUID") != 0) { - fprintf (stderr, "Unexpected error: header uid bad result: %s.\n", results[0]); - return -100; - } - if (strcmp(results[1], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header bad result: %s.\n", results[1]); - return -101; - } - if (strcmp(results[4], "1") != 0) { - fprintf (stderr, "Unexpected error: windward PK bad result: %s.\n", results[4]); - return -102; - } - if (strcmp(results[5], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[5]); - return -103; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT DropVirtualGeometry('shapetest')", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DropVirtualGeometry error: %s\n", err_msg); - sqlite3_free (err_msg); - return -104; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "DropVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -105; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "DropVirtualGeometry Unexpected error: header() bad result: %s.\n", results[0]); - return -106; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE shapetest2 USING VirtualShape(\"shp/merano-3d/roads\", CP1252, 25832);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualShape error: %s\n", err_msg); - sqlite3_free (err_msg); - return -107; - } - ret = sqlite3_get_table (db_handle, "SELECT RegisterVirtualGeometry('shapetest2')", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RegisterVirtualGeometry error: %s\n", err_msg); - sqlite3_free (err_msg); - return -108; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "RegisterVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -109; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "RegisterVirtualGeometry Unexpected error: header() bad result: %s.\n", results[0]); - return -110; - } - sqlite3_free_table (results); - ret = sqlite3_get_table (db_handle, "SELECT UpdateLayerStatistics('shapetest2')", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "UpdateLayerStatistics error: %s\n", err_msg); - sqlite3_free (err_msg); - return -111; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "UpdateLayerStatistics Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -112; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "UpdateLayerStatistics Unexpected error: header() bad result: %s.\n", results[0]); - return -113; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT DropVirtualGeometry('shapetest2')", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DropVirtualGeometry error: %s\n", err_msg); - sqlite3_free (err_msg); - return -114; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "DropVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -115; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "DropVirtualGeometry Unexpected error: header() bad result: %s.\n", results[0]); - return -116; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE shapetest3 USING VirtualShape(\"shp/merano-3d/points\", CP1252, 25832);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualShape error: %s\n", err_msg); - sqlite3_free (err_msg); - return -117; - } - ret = sqlite3_get_table (db_handle, "SELECT RegisterVirtualGeometry('shapetest3')", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RegisterVirtualGeometry error: %s\n", err_msg); - sqlite3_free (err_msg); - return -118; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "RegisterVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -119; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "RegisterVirtualGeometry Unexpected error: header() bad result: %s.\n", results[0]); - return -120; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT DropVirtualGeometry('shapetest3')", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DropVirtualGeometry error: %s\n", err_msg); - sqlite3_free (err_msg); - return -121; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "DropVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -122; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "DropVirtualGeometry Unexpected error: header() bad result: %s.\n", results[0]); - return -123; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE shapetest4 USING VirtualShape(\"shp/merano-3d/polygons\", CP1252, 25832);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualShape error: %s\n", err_msg); - sqlite3_free (err_msg); - return -124; - } - ret = sqlite3_get_table (db_handle, "SELECT RegisterVirtualGeometry('shapetest4')", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "RegisterVirtualGeometry error: %s\n", err_msg); - sqlite3_free (err_msg); - return -125; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "RegisterVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -126; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "RegisterVirtualGeometry Unexpected error: header() bad result: %s.\n", results[0]); - return -127; - } - sqlite3_free_table (results); - - ret = sqlite3_get_table (db_handle, "SELECT DropVirtualGeometry('shapetest4')", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DropVirtualGeometry error: %s\n", err_msg); - sqlite3_free (err_msg); - return -128; - } - if ((rows != 1) || (columns != 1)) { - fprintf (stderr, "DropVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -129; - } - if (strcmp(results[1], "1") != 0) { - fprintf (stderr, "DropVirtualGeometry Unexpected error: header() bad result: %s.\n", results[0]); - return -130; - } - sqlite3_free_table (results); - -/* final DB cleanup */ - ret = sqlite3_exec (db_handle, "DELETE FROM spatialite_history WHERE geometry_column IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE FROM spatialite_history error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(db_handle); - return -131; - } - ret = sqlite3_exec (db_handle, "VACUUM", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VACUUM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(db_handle); - return -132; - } -#endif /* end ICONV conditional */ - - return 0; -} - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - sqlite3 *db_handle = NULL; - int ret; - char *err_msg = NULL; - -/* testing current style metadata layout >= v.4.0.0 */ - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf (stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (db_handle)); - sqlite3_close (db_handle); - db_handle = NULL; - return -1; - } - - ret = sqlite3_exec (db_handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(db_handle); - return -2; - } - - ret = do_test(db_handle); - if (ret != 0) { - fprintf(stderr, "error while testing legacy style metadata layout\n"); - return ret; - } - - sqlite3_close (db_handle); - spatialite_cleanup(); - -/* testing legacy style metadata layout <= v.3.1.0 */ - spatialite_init (0); - ret = sqlite3_open_v2 ("test-legacy-3.0.1.sqlite", &db_handle, SQLITE_OPEN_READWRITE, NULL); - if (ret != SQLITE_OK) { - fprintf (stderr, "cannot open legacy v.3.0.1 database: %s\n", sqlite3_errmsg (db_handle)); - sqlite3_close (db_handle); - db_handle = NULL; - return -1; - } - - ret = sqlite3_exec (db_handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(db_handle); - return -2; - } - - ret = do_test(db_handle); - if (ret != 0) { - fprintf(stderr, "error while testing legacy style metadata layout\n"); - return ret; - } - - sqlite3_close (db_handle); - spatialite_cleanup(); - -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/check_virtualtable3.c b/src/spatialite/test/check_virtualtable3.c deleted file mode 100644 index e1a22b6..0000000 --- a/src/spatialite/test/check_virtualtable3.c +++ /dev/null @@ -1,587 +0,0 @@ -/* - - check_virtualtable3.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards -Ahmadou Dicko - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#define _GNU_SOURCE -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -#ifdef _WIN32 -#include "asprintf4win.h" -#endif - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - sqlite3 *db_handle = NULL; - char *sql_statement; - int ret; - char *err_msg = NULL; - char **results; - int rows; - int columns; - - spatialite_init (0); - - ret = sqlite3_open_v2 (":memory:", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf (stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (db_handle)); - sqlite3_close (db_handle); - db_handle = NULL; - return -1; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE dbftest USING VirtualDBF(shapetest1.dbf, UTF-8);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualDBF error: %s\n", err_msg); - sqlite3_free (err_msg); - return -2; - } - - asprintf(&sql_statement, "select testcase1, testcase2 from dbftest where testcase2 < 20;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -3; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -4; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -5; - } - if (strcmp(results[2], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[2]); - return -6; - } - if (strcmp(results[3], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[3]); - return -7; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2 from dbftest where testcase2 <= 19;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -10; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -11; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -12; - } - if (strcmp(results[2], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[2]); - return -13; - } - if (strcmp(results[3], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[3]); - return -14; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2 from dbftest where testcase2 = 20;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -16; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -17; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -18; - } - if (strcmp(results[2], "orde lees") != 0) { - fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", results[2]); - return -19; - } - if (strcmp(results[3], "20") != 0) { - fprintf (stderr, "Unexpected error: integer2() bad result: %s.\n", results[3]); - return -20; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2 from dbftest where testcase2 > 2;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -22; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -23; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -24; - } - if (strcmp(results[2], "orde lees") != 0) { - fprintf (stderr, "Unexpected error: orde lees2 bad result: %s.\n", results[2]); - return -25; - } - if (strcmp(results[3], "20") != 0) { - fprintf (stderr, "Unexpected error: integer4() bad result: %s.\n", results[3]); - return -26; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2 from dbftest where testcase2 >= 20;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -28; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -29; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -30; - } - if (strcmp(results[2], "orde lees") != 0) { - fprintf (stderr, "Unexpected error: orde lees3 bad result: %s.\n", results[2]); - return -31; - } - if (strcmp(results[3], "20") != 0) { - fprintf (stderr, "Unexpected error: integer5() bad result: %s.\n", results[3]); - return -32; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2 from dbftest where testcase1 < \"p\";"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -34; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -35; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -36; - } - if (strcmp(results[2], "orde lees") != 0) { - fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", results[2]); - return -37; - } - if (strcmp(results[3], "20") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[3]); - return -38; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2 from dbftest where testcase1 <= \"p\";"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -40; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -41; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -42; - } - if (strcmp(results[2], "orde lees") != 0) { - fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", results[2]); - return -43; - } - if (strcmp(results[3], "20") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[3]); - return -44; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (db_handle, "BEGIN;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "BEGIN error: %s\n", err_msg); - sqlite3_free (err_msg); - return -46; - } - - asprintf(&sql_statement, "select testcase1, testcase2 from dbftest where testcase1 > \"p\";"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -48; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -49; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -50; - } - if (strcmp(results[2], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[2]); - return -51; - } - if (strcmp(results[3], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[3]); - return -52; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (db_handle, "DELETE FROM dbftest WHERE testcase2 = 2;", NULL, NULL, &err_msg); - if (ret != SQLITE_READONLY) { - fprintf (stderr, "UPDATE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -46; - } - sqlite3_free (err_msg); - - ret = sqlite3_exec (db_handle, "ROLLBACK;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "ROLLBACK error: %s\n", err_msg); - sqlite3_free (err_msg); - return -47; - } - - asprintf(&sql_statement, "select testcase1, testcase2 from dbftest where testcase1 >= \"p\";"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -54; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -55; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -56; - } - if (strcmp(results[2], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[2]); - return -57; - } - if (strcmp(results[3], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[3]); - return -58; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2 from dbftest where testcase1 = \"windward\";"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -54; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -55; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -56; - } - if (strcmp(results[2], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[2]); - return -57; - } - if (strcmp(results[3], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[3]); - return -58; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2 from dbftest where PKUID = 1;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -60; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -61; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -62; - } - if (strcmp(results[2], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[2]); - return -63; - } - if (strcmp(results[3], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[3]); - return -64; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2 from dbftest where PKUID < 2;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -66; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -67; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -68; - } - if (strcmp(results[2], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[2]); - return -69; - } - if (strcmp(results[3], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[3]); - return -70; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2 from dbftest where PKUID <= 1;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -72; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -73; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -74; - } - if (strcmp(results[2], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[2]); - return -75; - } - if (strcmp(results[3], "2") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[3]); - return -76; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2 from dbftest where PKUID > 1;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -78; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -79; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -80; - } - if (strcmp(results[2], "orde lees") != 0) { - fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", results[2]); - return -81; - } - if (strcmp(results[3], "20") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[3]); - return -82; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select testcase1, testcase2 from dbftest where PKUID >= 2;"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -84; - } - if ((rows != 1) || (columns != 2)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -85; - } - if (strcmp(results[0], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -86; - } - if (strcmp(results[2], "orde lees") != 0) { - fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", results[2]); - return -87; - } - if (strcmp(results[3], "20") != 0) { - fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", results[3]); - return -88; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select PKUID, testcase1, testcase2 from dbftest where testcase1 LIKE \"wind%%\";"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -90; - } - if ((rows != 1) || (columns != 3)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -91; - } - if (strcmp(results[0], "PKUID") != 0) { - fprintf (stderr, "Unexpected error: header uid bad result: %s.\n", results[0]); - return -92; - } - if (strcmp(results[1], "testcase1") != 0) { - fprintf (stderr, "Unexpected error: header bad result: %s.\n", results[1]); - return -93; - } - if (strcmp(results[3], "1") != 0) { - fprintf (stderr, "Unexpected error: windward PK bad result: %s.\n", results[3]); - return -93; - } - if (strcmp(results[4], "windward") != 0) { - fprintf (stderr, "Unexpected error: windward bad result: %s.\n", results[4]); - return -94; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (db_handle, "DROP TABLE dbftest;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -49; - } - - /* error cases */ - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE toofewargs USING VirtualDBF(\"shapetest1.dbf\");", NULL, NULL, &err_msg); - if (ret != SQLITE_ERROR) { - fprintf (stderr, "VirtualDBF unexpected result: %i\n", ret); - return -95; - } - sqlite3_free (err_msg); - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE toomanyargs USING VirtualDBF(\"shapetest1.dbf\", UTF-8, 1);", NULL, NULL, &err_msg); - if (ret != SQLITE_ERROR) { - fprintf (stderr, "VirtualDBF unexpected result: %i\n", ret); - return -96; - } - sqlite3_free (err_msg); - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE nosuchfile USING VirtualDBF(\"not_a_file.dbf\", UTF-8);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualDBF error: %s\n", err_msg); - sqlite3_free (err_msg); - return -97; - } - ret = sqlite3_get_table (db_handle, "SELECT * from nosuchfile;", &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -98; - } - if ((rows != 0) || (columns != 0)) { - fprintf (stderr, "Unexpected error: select columns no suchfile: %i/%i.\n", rows, columns); - return -99; - } - sqlite3_free_table (results); - ret = sqlite3_exec (db_handle, "DROP TABLE nosuchfile;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -100; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE onesidedquote USING VirtualDBF('shapetest1.dbf, UTF-8);", NULL, NULL, &err_msg); - if (ret != SQLITE_ERROR) { - fprintf (stderr, "VirtualDBF unexpected result: %i\n", ret); - return -101; - } - sqlite3_free (err_msg); - - sqlite3_close (db_handle); - spatialite_cleanup(); -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/check_virtualtable4.c b/src/spatialite/test/check_virtualtable4.c deleted file mode 100644 index c028960..0000000 --- a/src/spatialite/test/check_virtualtable4.c +++ /dev/null @@ -1,350 +0,0 @@ -/* - - check_virtualtable4.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#define _GNU_SOURCE -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -#ifdef _WIN32 -#include "asprintf4win.h" -#endif - -struct test_step -{ - const char *sql; - const int num_rows; -}; - -#define NUMSTEPS 36 - -struct test_step steps[NUMSTEPS] = { - { "select col_2, col_4, col_5, col_7 from xltest WHERE col_2 > \"Canary Creek\";", 9 }, - { "select col_2, col_4, col_5, col_7 from xltest WHERE col_2 < \"Canary Creek\";", 7 }, - { "select col_2, col_4, col_5, col_7 from xltest WHERE col_2 >= \"Canary Creek\";", 10 }, - { "select col_2, col_4, col_5, col_7 from xltest WHERE col_2 <= \"Canary Creek\";", 8 }, - { "select col_2, col_4, col_5, col_7 from xltest WHERE col_2 = 3;", 0 }, - { "SELECT col_2, col_14 FROM xltest WHERE col_14 > 100000;", 1 }, - { "SELECT col_2, col_14 FROM xltest WHERE col_14 < 100000;", 16 }, - { "SELECT col_2, col_14 FROM xltest WHERE col_14 < 100000 AND col_14 > 0;", 1 }, - { "SELECT col_2, col_14 FROM xltest WHERE col_14 = 895;", 1 }, - { "SELECT col_2, col_14 FROM xltest WHERE col_14 = 895.0;", 1 }, - { "SELECT col_2, col_14 FROM xltest WHERE col_14 <= 895;", 16 }, - { "SELECT col_2, col_14 FROM xltest WHERE col_14 >= 895;", 2 }, - { "SELECT col_2, col_14 FROM xltest WHERE col_14 > 100000.0;", 1 }, - { "SELECT col_2, col_14 FROM xltest WHERE col_14 < 100000.0;", 16 }, - { "SELECT col_2, col_14 FROM xltest WHERE col_14 = 895.0;", 1 }, - { "SELECT col_2, col_14 FROM xltest WHERE col_14 <= 895.0;", 16 }, - { "SELECT col_2, col_14 FROM xltest WHERE col_14 >= 895.0;", 2 }, - { "SELECT col_2, col_14 FROM xltest WHERE row_no = 4", 1 }, - { "SELECT col_2, col_14 FROM xltest WHERE row_no < 4", 3 }, - { "SELECT col_2, col_14 FROM xltest WHERE row_no <= 4", 4 }, - { "SELECT col_2, col_14 FROM xltest WHERE row_no >= 4", 14 }, - { "SELECT col_2, col_14 FROM xltest WHERE row_no > 4", 13 }, - { "SELECT col_2, col_14 FROM xltest WHERE row_no = 4.00", 0 }, - { "select col_2, col_4, col_5 from xltest where col_4 < -30.0;", 8 }, - { "select col_2, col_4, col_5 from xltest where col_4 > -30.0;", 9 }, - { "select col_2, col_4, col_5 from xltest where col_4 <= -30.0;", 8 }, - { "select col_2, col_4, col_5 from xltest where col_4 >= -30.0;", 9 }, - { "select col_2, col_4, col_5 from xltest where col_5 = 149.1;", 1 }, - { "select col_2, col_4, col_5 from xltest where col_4 < -30;", 8 }, - { "select col_2, col_4, col_5 from xltest where col_4 > -30;", 9 }, - { "select col_2, col_4, col_5 from xltest where col_4 <= -30;", 8 }, - { "select col_2, col_4, col_5 from xltest where col_4 >= -30;", 9 }, - { "select col_2, col_4, col_5 from xltest where col_4 = -30;", 0 }, - { "SELECT row_no, col_4, col_5 from xltest", 17 }, - { "select rowid, col_4, col_5 from xltest where col_4 = -26.0;", 1 }, - { "select rowid, col_4, col_5 from xltest where col_4 = -26;", 1 }, -}; - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_FREEXL /* only if FreeXL is supported */ - sqlite3 *db_handle = NULL; - char *sql_statement; - int ret; - char *err_msg = NULL; - int i; - char **results; - int rows; - int columns; - - spatialite_init (0); - - ret = sqlite3_open_v2 (":memory:", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf (stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (db_handle)); - sqlite3_close (db_handle); - db_handle = NULL; - return -1; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE xltest USING VirtualXL(\"testcase1.xls\");", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualXL error: %s\n", err_msg); - sqlite3_free (err_msg); - return -2; - } - - asprintf(&sql_statement, "select col_2, col_4, col_5, col_7, rowid from xltest WHERE col_2 = \"Canal Creek\";"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -10; - } - if ((rows != 2) || (columns != 5)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -11; - } - if (strcmp(results[0], "col_2") != 0) { - fprintf (stderr, "Unexpected error: header() bad result: %s.\n", results[0]); - return -12; - } - if (strcmp(results[5], "Canal Creek") != 0) { - fprintf (stderr, "Unexpected error: name5() bad result: %s.\n", results[5]); - return -13; - } - if (strncmp(results[6], "-27.86667", 9) != 0) { - fprintf (stderr, "Unexpected error: lat1() bad result: %s.\n", results[6]); - return -14; - } - if (strncmp(results[7], "151.51667", 9) != 0) { - fprintf (stderr, "Unexpected error: lon2() bad result: %s.\n", results[7]); - return -15; - } - if (strcmp(results[10], "Canal Creek") != 0) { - fprintf (stderr, "Unexpected error: name10() bad result: %s.\n", results[10]); - return -16; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (db_handle, "BEGIN;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "BEGIN error: %s\n", err_msg); - sqlite3_free (err_msg); - return -21; - } - - ret = sqlite3_exec (db_handle, "DELETE FROM xltest WHERE col_14 > 100000;", NULL, NULL, &err_msg); - if (ret != SQLITE_READONLY) { - fprintf (stderr, "UPDATE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -21; - } - sqlite3_free (err_msg); - - ret = sqlite3_exec (db_handle, "ROLLBACK;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "ROLLBACK error: %s\n", err_msg); - sqlite3_free (err_msg); - return -22; - } - - for (i = 0; i < NUMSTEPS; ++i) { - ret = sqlite3_get_table (db_handle, steps[i].sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -23; - } - if (rows != steps[i].num_rows) { - fprintf (stderr, "Unexpected num of rows for test %i: %i.\n", i, rows); - return -24; - } - sqlite3_free_table (results); - } - - ret = sqlite3_exec (db_handle, "DROP TABLE xltest;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -25; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE nosuchworksheet USING VirtualXL(\"testcase1.xls\", 3);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualXL error: %s\n", err_msg); - sqlite3_free (err_msg); - return -26; - } - ret = sqlite3_exec (db_handle, "DROP TABLE nosuchworksheet;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -27; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE nosuchfile USING VirtualXL(\"not_a_file.xls\", 3);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualXL error: %s\n", err_msg); - sqlite3_free (err_msg); - return -28; - } - ret = sqlite3_exec (db_handle, "DROP TABLE nosuchfile;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -29; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE sheet2 USING VirtualXL(\"testcase1.xls\", 1, 1);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualXL error: %s\n", err_msg); - sqlite3_free (err_msg); - return -30; - } - asprintf(&sql_statement, "select row_no, place, lat, lon, rowid from sheet2 WHERE place = \"Canal Creek\";"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -31; - } - if ((rows != 4) || (columns != 5)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -32; - } - if (strcmp(results[0], "row_no") != 0) { - fprintf (stderr, "Unexpected error: sheet2() bad result: %s.\n", results[0]); - return -33; - } - if (strcmp(results[6], "Canal Creek") != 0) { - fprintf (stderr, "Unexpected error: sheet2() bad result place: %s.\n", results[6]); - return -34; - } - if (strncmp(results[7], "-27.86667", 9) != 0) { - fprintf (stderr, "Unexpected error: sheet2() bad result lat: %s.\n", results[7]); - return -35; - } - if (strncmp(results[8], "151.51667", 9) != 0) { - fprintf (stderr, "Unexpected error: sheet2() bad result lon: %s.\n", results[8]); - return -36; - } - if (strcmp(results[11], "Canal Creek") != 0) { - fprintf (stderr, "Unexpected error: sheet2() bad result place2: %s.\n", results[11]); - return -37; - } - sqlite3_free_table (results); - - asprintf(&sql_statement, "select row_no, place, lat, lon, rowid from sheet2 WHERE row_no = 16"); - ret = sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, &err_msg); - free(sql_statement); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -38; - } - if ((rows != 1) || (columns != 5)) { - fprintf (stderr, "Unexpected error: select columns bad result: %i/%i.\n", rows, columns); - return -39; - } - if (strcmp(results[0], "row_no") != 0) { - fprintf (stderr, "Unexpected error: sheet2() bad result: %s.\n", results[0]); - return -40; - } - if (strcmp(results[6], "Canal Creek") != 0) { - fprintf (stderr, "Unexpected error: sheet2() bad result place: %s.\n", results[6]); - return -41; - } - if (strncmp(results[7], "-27.86667", 9) != 0) { - fprintf (stderr, "Unexpected error: sheet2() bad result lat: %s.\n", results[7]); - return -42; - } - if (strncmp(results[8], "151.51667", 9) != 0) { - fprintf (stderr, "Unexpected error: sheet2() bad result lon: %s.\n", results[8]); - return -43; - } - sqlite3_free_table (results); - - ret = sqlite3_exec (db_handle, "DROP TABLE sheet2;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -44; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE noquote USING VirtualXL(testcase1.xls);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualXL error: %s\n", err_msg); - sqlite3_free (err_msg); - return -45; - } - ret = sqlite3_exec (db_handle, "DROP TABLE noquote;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -46; - } - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE noheader USING VirtualXL(\"testcase1.xls\", 0, 0);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualXL error: %s\n", err_msg); - sqlite3_free (err_msg); - return -47; - } - ret = sqlite3_exec (db_handle, "DROP TABLE noheader;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -48; - } - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE nofile USING VirtualXL();", NULL, NULL, &err_msg); - if (ret != SQLITE_ERROR) { - fprintf (stderr, "VirtualXL unexpected result: %i\n", ret); - return -49; - } - sqlite3_free (err_msg); - - sqlite3_close (db_handle); - spatialite_cleanup(); -#endif /* end FreeXL conditional */ - - return 0; -} diff --git a/src/spatialite/test/check_virtualtable5.c b/src/spatialite/test/check_virtualtable5.c deleted file mode 100644 index cbc47b0..0000000 --- a/src/spatialite/test/check_virtualtable5.c +++ /dev/null @@ -1,174 +0,0 @@ -/* - - check_virtualtable5.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#define _GNU_SOURCE -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -struct test_step -{ - const char *sql; - const int num_rows; -}; - -struct test_step steps[] = { - { "select DATUM from dbftest WHERE DATUM = 2450514.5;", 18 }, - { "select DATUM from dbftest WHERE DATUM < 2450514.5;", 0 }, - { "select DATUM from dbftest WHERE DATUM > 2450514.5;", 0 }, - { "select DATUM from dbftest WHERE DATUM >= 2450514.5;", 18 }, - { "select DATUM from dbftest WHERE DATUM <= 2450514.5;", 18 }, - { "select DATUM from dbftest WHERE DATUM = 2450514.5;", 18 }, - { "select Length, HOEHE from dbftest WHERE HOEHE = 0.0;", 18 }, - { "select Length, HOEHE from dbftest WHERE HOEHE = 1.0;", 0 }, - { "select Length, HOEHE from dbftest WHERE HOEHE != 0.0;", 0 }, - { "select Length, HOEHE from dbftest WHERE Length > 0.0;", 18 }, - { "select Length, HOEHE from dbftest WHERE Length >= 0.0;", 18 }, - { "select Length, HOEHE from dbftest WHERE Length <= 0.0;", 0 }, - { "select Length, HOEHE from dbftest WHERE Length > 1.0;", 0 }, - { "select Length, HOEHE from dbftest WHERE Length > 0.1;", 10 }, - { "select Length, HOEHE from dbftest WHERE Length < 0.1;", 8 }, - { "select Length, HOEHE from dbftest WHERE Length >= 0.1;", 10 }, - { "select Length, HOEHE from dbftest WHERE HOEHE = 0;", 18 }, - { "select Length, HOEHE from dbftest WHERE HOEHE >= 0;", 18 }, - { "select Length, HOEHE from dbftest WHERE HOEHE <= 0;", 18 }, - { "select Length, HOEHE from dbftest WHERE HOEHE > 0;", 0 }, - { "select Length, HOEHE from dbftest WHERE HOEHE < 0;", 0 }, - { "select Length, HOEHE from dbftest WHERE HOEHE = 1;", 0 }, - { "select Length, HOEHE from dbftest WHERE HOEHE <= 1;", 18 }, - { "select Length, HOEHE from dbftest WHERE HOEHE >= 1;", 0 }, - { "select Length, HOEHE from dbftest WHERE HOEHE < 1;", 18 }, - { "select Length, HOEHE from dbftest WHERE HOEHE > -1;", 18 }, - { "select Length, HOEHE from dbftest WHERE HOEHE < -1;", 0 }, - { "select Length, HOEHE from dbftest WHERE HOEHE <= -1;", 0 }, - { NULL, 0 } -}; - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - sqlite3 *db_handle = NULL; - int ret; - char *err_msg = NULL; - int i; - char **results; - int rows; - int columns; - - spatialite_init (0); - - ret = sqlite3_open_v2 (":memory:", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf (stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (db_handle)); - sqlite3_close (db_handle); - db_handle = NULL; - return -1; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE dbftest USING VirtualDBF(\"shp/merano-3d/roads.dbf\", 'CP1252');", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualDBF error: %s\n", err_msg); - sqlite3_free (err_msg); - return -2; - } - - ret = sqlite3_exec (db_handle, "DROP TABLE dbftest;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -3; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE dbftest USING VirtualDBF('shp/merano-3d/roads.dbf', \"CP1252\");", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualDBF error: %s\n", err_msg); - sqlite3_free (err_msg); - return -4; - } - - ret = sqlite3_exec (db_handle, "DROP TABLE dbftest;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -5; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE dbftest USING VirtualDBF('shp/merano-3d/roads.dbf', CP1252);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualDBF error: %s\n", err_msg); - sqlite3_free (err_msg); - return -6; - } - - for (i = 0; steps[i].sql; ++i) { - ret = sqlite3_get_table (db_handle, steps[i].sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -7; - } - if (rows != steps[i].num_rows) { - fprintf (stderr, "Unexpected num of rows for test %i: %i.\n", i, rows); - return -8; - } - sqlite3_free_table (results); - } - - ret = sqlite3_exec (db_handle, "DROP TABLE dbftest;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -9; - } - - sqlite3_close (db_handle); - spatialite_cleanup(); -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/check_virtualtable6.c b/src/spatialite/test/check_virtualtable6.c deleted file mode 100644 index 37bafae..0000000 --- a/src/spatialite/test/check_virtualtable6.c +++ /dev/null @@ -1,217 +0,0 @@ -/* - - check_virtualtable6.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#define _GNU_SOURCE -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -struct test_step -{ - const char *sql; - const int num_rows; -}; - -struct test_step steps[] = { - { "select DATUM, Geometry from shapetest WHERE DATUM = 2450514.5;", 18 }, - { "select DATUM from shapetest WHERE DATUM < 2450514.5;", 0 }, - { "select DATUM from shapetest WHERE DATUM > 2450514.5;", 0 }, - { "select DATUM from shapetest WHERE DATUM >= 2450514.5;", 18 }, - { "select DATUM from shapetest WHERE DATUM <= 2450514.5;", 18 }, - { "select DATUM from shapetest WHERE DATUM = 2450514.5;", 18 }, - { "select Length, HOEHE from shapetest WHERE HOEHE = 0.0;", 18 }, - { "select Length, HOEHE from shapetest WHERE HOEHE = 1.0;", 0 }, - { "select Length, HOEHE, Geometry from shapetest WHERE HOEHE != 0.0;", 0 }, - { "select Length, HOEHE from shapetest WHERE Length > 0.0;", 18 }, - { "select Length, HOEHE from shapetest WHERE Length >= 0.0;", 18 }, - { "select Length, HOEHE from shapetest WHERE Length <= 0.0;", 0 }, - { "select Length, HOEHE from shapetest WHERE Length > 1.0;", 0 }, - { "select Length, HOEHE from shapetest WHERE Length > 0.1;", 10 }, - { "select Length, HOEHE from shapetest WHERE Length < 0.1;", 8 }, - { "select Length, HOEHE from shapetest WHERE Length >= 0.1;", 10 }, - { "select Length, HOEHE from shapetest WHERE HOEHE = 0;", 18 }, - { "select Length, HOEHE from shapetest WHERE HOEHE >= 0;", 18 }, - { "select Length, HOEHE from shapetest WHERE HOEHE <= 0;", 18 }, - { "select Length, HOEHE from shapetest WHERE HOEHE > 0;", 0 }, - { "select Length, HOEHE from shapetest WHERE HOEHE < 0;", 0 }, - { "select Length, HOEHE from shapetest WHERE HOEHE = 1;", 0 }, - { "select Length, HOEHE from shapetest WHERE HOEHE <= 1;", 18 }, - { "select Length, HOEHE from shapetest WHERE HOEHE >= 1;", 0 }, - { "select Length, HOEHE from shapetest WHERE HOEHE < 1;", 18 }, - { "select Length, HOEHE from shapetest WHERE HOEHE > -1;", 18 }, - { "select Length, HOEHE from shapetest WHERE HOEHE < -1;", 0 }, - { "select Length, HOEHE from shapetest WHERE HOEHE <= -1;", 0 }, - { "select * from shapetest LIMIT 5 OFFSET 2;", 5 }, - { NULL, 0 } -}; - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - sqlite3 *db_handle = NULL; - int ret; - char *err_msg = NULL; - int i; - char **results; - int rows; - int columns; - - spatialite_init (0); - - ret = sqlite3_open_v2 (":memory:", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf (stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (db_handle)); - sqlite3_close (db_handle); - db_handle = NULL; - return -1; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE shapetest USING VirtualShape('shp/merano-3d/roads', CP1252, 25832);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualShape error: %s\n", err_msg); - sqlite3_free (err_msg); - return -2; - } - - ret = sqlite3_exec (db_handle, "DROP TABLE shapetest;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -3; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE shapetest USING VirtualShape(\"shp/merano-3d/roads\", 'CP1252', -1);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualShape error: %s\n", err_msg); - sqlite3_free (err_msg); - return -4; - } - - ret = sqlite3_exec (db_handle, "DROP TABLE shapetest;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -5; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE unquoted USING VirtualShape(shapetest1, UTF8, -1);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualShape error: %s\n", err_msg); - sqlite3_free (err_msg); - return -6; - } - - ret = sqlite3_exec (db_handle, "DROP TABLE unquoted;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -7; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE shapetest USING VirtualShape('shp/merano-3d/roads', \"CP1252\", 25832);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualShape error: %s\n", err_msg); - sqlite3_free (err_msg); - return -8; - } - - for (i = 0; steps[i].sql; ++i) { - ret = sqlite3_get_table (db_handle, steps[i].sql, &results, &rows, &columns, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "Error: %s\n", err_msg); - sqlite3_free (err_msg); - return -9; - } - if (rows != steps[i].num_rows) { - fprintf (stderr, "Unexpected num of rows for test %i: %i.\n", i, rows); - return -10; - } - sqlite3_free_table (results); - } - - ret = sqlite3_exec (db_handle, "DROP TABLE shapetest;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -11; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE nosuchfile USING VirtualShape(nosuchfile, UTF8, -1);", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VirtualShape error: %s\n", err_msg); - sqlite3_free (err_msg); - return -12; - } - - ret = sqlite3_exec (db_handle, "DROP TABLE nosuchfile;", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE error: %s\n", err_msg); - sqlite3_free (err_msg); - return -13; - } - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE toofewargs USING VirtualShape(\"shapetest1\", UTF8);", NULL, NULL, &err_msg); - if (ret != SQLITE_ERROR) { - fprintf (stderr, "VirtualShape unexpected result: %i\n", ret); - return -14; - } - sqlite3_free (err_msg); - - ret = sqlite3_exec (db_handle, "create VIRTUAL TABLE toomanyargs USING VirtualShape(\"shapetest1\", UTF8, 4386, 1);", NULL, NULL, &err_msg); - if (ret != SQLITE_ERROR) { - fprintf (stderr, "VirtualShape unexpected result: %i\n", ret); - return -15; - } - sqlite3_free (err_msg); - - sqlite3_close (db_handle); - spatialite_cleanup(); -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/check_xls_load.c b/src/spatialite/test/check_xls_load.c deleted file mode 100644 index be18d95..0000000 --- a/src/spatialite/test/check_xls_load.c +++ /dev/null @@ -1,130 +0,0 @@ -/* - - check_xls_load.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_FREEXL /* only if FreeXL is supported */ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - unsigned int row_count; - int rcnt; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory db: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - - ret = load_XL (handle, "./testcase1.xls", "test1", 0, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_XL() error: %s\n", err_msg); - sqlite3_close(handle); - return -3; - } - if (row_count != 17) { - fprintf (stderr, "load_XL() unexpected row count: %u\n", row_count); - sqlite3_close(handle); - return -4; - } - - ret = load_XL (handle, "./testcase1.xls", "test2", 1, 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_XL() error sheet 2: %s\n", err_msg); - sqlite3_close(handle); - return -5; - } - if (row_count != 19) { - fprintf (stderr, "load_XL() unexpected row count sheet 2: %u\n", row_count); - sqlite3_close(handle); - return -6; - } - - check_duplicated_rows (handle, "test1", &rcnt); - if (rcnt != 0) { - fprintf (stderr, "check_duplicated_rows() unexpected duplicate count: %d\n", rcnt); - sqlite3_close(handle); - return -8; - } - - check_duplicated_rows (handle, "test2", &rcnt); - if (rcnt != 2) { - fprintf (stderr, "check_duplicated_rows() unexpected duplicate count sheet 2: %d\n", rcnt); - sqlite3_close(handle); - return -10; - } - - remove_duplicated_rows (handle, "test1"); - - remove_duplicated_rows (handle, "test2"); - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -11; - } - - spatialite_cleanup(); -#endif /* end FreeXL conditional */ - - return 0; -} diff --git a/src/spatialite/test/fnmatch4win.h b/src/spatialite/test/fnmatch4win.h deleted file mode 100644 index a91b072..0000000 --- a/src/spatialite/test/fnmatch4win.h +++ /dev/null @@ -1,63 +0,0 @@ -/* Copyright (C) 1992 Free Software Foundation, Inc. -This file is part of the GNU C Library. - -The GNU C Library is free software; you can redistribute it and/or -modify it under the terms of the GNU Library General Public License as -published by the Free Software Foundation; either version 2 of the -License, or (at your option) any later version. - -The GNU C Library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Library General Public License for more details. */ - -/* - * Modified for WinCvs/MacCVS : Alexandre Parenteau --- June 1998 - */ - -#ifndef _FNMATCH_H - -#define _FNMATCH_H 1 - -#ifdef __cplusplus -extern "C" -{ -#endif - -#define FNM_NOMATCH 1 /* Match failed. */ -#define FNM_NOESCAPE 0x01 /* Disable backslash escaping. */ -#define FNM_PATHNAME 0x02 /* Slash must be matched by slash. */ -#define FNM_PERIOD 0x04 /* Period must be matched by period. */ -#define FNM_LEADING_DIR 0x08 /* Ignore / after Imatch. */ -#define FNM_CASEFOLD 0x10 /* Case insensitive search. */ -#define FNM_PREFIX_DIRS 0x20 /* Directory prefixes of pattern match too. */ - -/* Value returned by `fnmatch' if STRING does not match PATTERN. */ -#undef FNM_NOMATCH -#define FNM_NOMATCH 1 - -#if !defined(__STDC__) && (defined(WIN32)|| defined(TARGET_OS_MAC)) -# define __STDC__ 1 -#endif - -/* Match STRING against the filename pattern PATTERN, - returning zero if it matches, FNM_NOMATCH if not. */ -#if __STDC__ - extern int fnmatch (const char *pattern, const char *string, int flags); -#else - extern int fnmatch (); -#endif - -#if defined (__CYGWIN32__) || defined (WIN32) - /* Under Windows NT, filenames are case-insensitive, and both / and \ - are path component separators. */ - -# define FOLD_FN_CHAR(c) (WNT_filename_classes[(unsigned char) (c)]) - extern unsigned char WNT_filename_classes[]; -#endif /* defined (__CYGWIN32__) || defined (WIN32) */ - -#ifdef __cplusplus -} -#endif - -#endif /* fnmatch.h */ diff --git a/src/spatialite/test/fnmatch_impl4win.h b/src/spatialite/test/fnmatch_impl4win.h deleted file mode 100644 index 31184d6..0000000 --- a/src/spatialite/test/fnmatch_impl4win.h +++ /dev/null @@ -1,193 +0,0 @@ -/* - * Copyright (c) 1989, 1993, 1994 - * The Regents of the University of California. All rights reserved. - * - * This code is derived from software contributed to Berkeley by - * Guido van Rossum. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the University of - * California, Berkeley and its contributors. - * 4. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * From FreeBSD fnmatch.c 1.11 - * $Id: fnmatch.c 273994 2009-01-20 01:37:48Z pajoye $ - */ - -#if defined(LIBC_SCCS) && !defined(lint) -static char sccsid[] = "@(#)fnmatch.c 8.2 (Berkeley) 4/16/94"; -#endif /* LIBC_SCCS and not lint */ - -/* - * Function fnmatch() as specified in POSIX 1003.2-1992, section B.6. - * Compares a filename or pathname to a pattern. - */ - -#define EOS '\0' - -static const char *rangematch(const char *, char, int); - -int fnmatch(const char *pattern, const char *string, int flags) -{ - const char *stringstart; - char c, test; - - for (stringstart = string;;) - switch (c = *pattern++) { - case EOS: - if ((flags & FNM_LEADING_DIR) && *string == '/') - return (0); - return (*string == EOS ? 0 : FNM_NOMATCH); - case '?': - if (*string == EOS) - return (FNM_NOMATCH); - if (*string == '/' && (flags & FNM_PATHNAME)) - return (FNM_NOMATCH); - if (*string == '.' && (flags & FNM_PERIOD) && - (string == stringstart || - ((flags & FNM_PATHNAME) && *(string - 1) == '/'))) - return (FNM_NOMATCH); - ++string; - break; - case '*': - c = *pattern; - /* Collapse multiple stars. */ - while (c == '*') - c = *++pattern; - - if (*string == '.' && (flags & FNM_PERIOD) && - (string == stringstart || - ((flags & FNM_PATHNAME) && *(string - 1) == '/'))) - return (FNM_NOMATCH); - - /* Optimize for pattern with * at end or before /. */ - if (c == EOS) - if (flags & FNM_PATHNAME) - return ((flags & FNM_LEADING_DIR) || - strchr(string, '/') == NULL ? - 0 : FNM_NOMATCH); - else - return (0); - else if (c == '/' && flags & FNM_PATHNAME) { - if ((string = strchr(string, '/')) == NULL) - return (FNM_NOMATCH); - break; - } - - /* General case, use recursion. */ - while ((test = *string) != EOS) { - if (!fnmatch(pattern, string, flags & ~FNM_PERIOD)) - return (0); - if (test == '/' && flags & FNM_PATHNAME) - break; - ++string; - } - return (FNM_NOMATCH); - case '[': - if (*string == EOS) - return (FNM_NOMATCH); - if (*string == '/' && flags & FNM_PATHNAME) - return (FNM_NOMATCH); - if ((pattern = - rangematch(pattern, *string, flags)) == NULL) - return (FNM_NOMATCH); - ++string; - break; - case '\\': - if (!(flags & FNM_NOESCAPE)) { - if ((c = *pattern++) == EOS) { - c = '\\'; - --pattern; - } - } - /* FALLTHROUGH */ - default: - if (c == *string) - ; - else if ((flags & FNM_CASEFOLD) && - (tolower((unsigned char)c) == - tolower((unsigned char)*string))) - ; - else if ((flags & FNM_PREFIX_DIRS) && *string == EOS && - (c == '/' && string != stringstart || - string == stringstart+1 && *stringstart == '/') ) - return (0); - else - return (FNM_NOMATCH); - string++; - break; - } - /* NOTREACHED */ -} - -static const char * -rangematch(const char *pattern, char test, int flags) -{ - int negate, ok; - char c, c2; - - /* - * A bracket expression starting with an unquoted circumflex - * character produces unspecified results (IEEE 1003.2-1992, - * 3.13.2). This implementation treats it like '!', for - * consistency with the regular expression syntax. - * J.T. Conklin (conklin@ngai.kaleida.com) - */ - if ( (negate = (*pattern == '!' || *pattern == '^')) ) - ++pattern; - - if (flags & FNM_CASEFOLD) - test = tolower((unsigned char)test); - - for (ok = 0; (c = *pattern++) != ']';) { - if (c == '\\' && !(flags & FNM_NOESCAPE)) - c = *pattern++; - if (c == EOS) - return (NULL); - - if (flags & FNM_CASEFOLD) - c = tolower((unsigned char)c); - - if (*pattern == '-' - && (c2 = *(pattern+1)) != EOS && c2 != ']') { - pattern += 2; - if (c2 == '\\' && !(flags & FNM_NOESCAPE)) - c2 = *pattern++; - if (c2 == EOS) - return (NULL); - - if (flags & FNM_CASEFOLD) - c2 = tolower((unsigned char)c2); - - if ((unsigned char)c <= (unsigned char)test && - (unsigned char)test <= (unsigned char)c2) - ok = 1; - } else if (c == test) - ok = 1; - } - return (ok == negate ? NULL : pattern); -} - diff --git a/src/spatialite/test/scandir4win.h b/src/spatialite/test/scandir4win.h deleted file mode 100644 index 82c70b9..0000000 --- a/src/spatialite/test/scandir4win.h +++ /dev/null @@ -1,168 +0,0 @@ -/* - * scandir() for win32 - * this tool should make life easier for people writing for both unix -and wintel - * written by Tom Torfs, 2002/10/31 - * donated to the public domain; use this code for anything you like -as long as - * it is understood there are absolutely *NO* warranties of any kind, -even implied - */ - -#ifdef _WIN32 - -#include -#include -#include - -#define MAXNAMLEN FILENAME_MAX - -/* directory entry structure */ -struct dirent -{ - char d_name[MAXNAMLEN + 1]; /* name of directory entry (0 terminated) */ - ino_t d_ino; /* file serial number -- will be 0 for win32 */ - short d_namlen; /* length of string in d_name */ - short d_reclen; /* length of this record */ -}; - -/* the scandir() function */ -int scandir (const char *dirname, - struct dirent ***namelist, - int (*select) (const struct dirent *), - int (*compar) (const void *, const void *)); - -/* compare function for scandir() for alphabetic sort (case-insensitive on Win32) */ -int alphasort (const void *d1, const void *d2); - -/* case-insensitive strcmp() */ -int istrcmp (const char *s1, const char *s2); - -#endif - -/* - * scandir() for win32 - * this tool should make life easier for people writing for both unix and wintel - * written by Tom Torfs, 2002/10/31 - * donated to the public domain; use this code for anything you like as long as - * it is understood there are absolutely *NO* warranties of any kind, even implied - */ - -int -scandir (const char *dirname, - struct dirent ***namelist, - int (*select) (const struct dirent *), - int (*compar) (const void *, const void *)) -{ - WIN32_FIND_DATA wfd; - HANDLE hf; - struct dirent **plist, **newlist; - struct dirent d; - int numentries = 0; - int allocentries = 255; - int i; - char path[FILENAME_MAX]; - - i = strlen (dirname); - - if (i > sizeof path - 5) - return -1; - - strcpy (path, dirname); - if (i > 0 && dirname[i - 1] != '\\' && dirname[i - 1] != '/') - strcat (path, "\\"); - strcat (path, "*.*"); - - hf = FindFirstFile (path, &wfd); - if (hf == INVALID_HANDLE_VALUE) - return -1; - - plist = malloc (sizeof *plist * allocentries); - if (plist == NULL) - { - FindClose (hf); - return -1; - } - - do - { - if (numentries == allocentries) - { - allocentries *= 2; - newlist = realloc (plist, sizeof *plist * allocentries); - if (newlist == NULL) - { - for (i = 0; i < numentries; i++) - free (plist[i]); - free (plist); - FindClose (hf); - return -1; - } - plist = newlist; - } - - strncpy (d.d_name, wfd.cFileName, sizeof d.d_name); - d.d_ino = 0; - d.d_namlen = strlen (wfd.cFileName); - d.d_reclen = sizeof d; - - if (select == NULL || select (&d)) - { - plist[numentries] = malloc (sizeof d); - if (plist[numentries] == NULL) - { - for (i = 0; i < numentries; i++) - free (plist[i]); - free (plist); - FindClose (hf); - return -1; - }; - memcpy (plist[numentries], &d, sizeof d); - numentries++; - } - } - while (FindNextFile (hf, &wfd)); - - FindClose (hf); - - if (numentries == 0) - { - free (plist); - *namelist = NULL; - } - else - { - newlist = realloc (plist, sizeof *plist * numentries); - if (newlist != NULL) - plist = newlist; - - if (compar != NULL) - qsort (plist, numentries, sizeof *plist, compar); - - *namelist = plist; - } - - return numentries; -} - -int -alphasort (const void *x1, const void *x2) -{ - const struct dirent **d1 = (const struct dirent **) x1; - const struct dirent **d2 = (const struct dirent **) x2; - return istrcmp ((*d1)->d_name, (*d2)->d_name); -} - -int -istrcmp (const char *s1, const char *s2) -{ - int d; - for (;;) - { - d = tolower (*s1) - tolower (*s2); - if (d != 0 || *s1 == '\0' || *s2 == '\0') - return d; - s1++; - s2++; - } -} diff --git a/src/spatialite/test/shape_3d.c b/src/spatialite/test/shape_3d.c deleted file mode 100644 index 007ad39..0000000 --- a/src/spatialite/test/shape_3d.c +++ /dev/null @@ -1,185 +0,0 @@ -/* - - shape_3d.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -void cleanup_shapefile(const char *filename) -{ - char nam[1000]; - - if (!filename) { - return; - } - - snprintf(nam, 1000, "%s.dbf", filename); - unlink(nam); - snprintf(nam, 1000, "%s.prj", filename); - unlink(nam); - snprintf(nam, 1000, "%s.shp", filename); - unlink(nam); - snprintf(nam, 1000, "%s.shx", filename); - unlink(nam); -} - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - int ret; - sqlite3 *handle; - char *dumpname = __FILE__"dump"; - char *err_msg = NULL; - int row_count; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - - ret = load_shapefile (handle, "./shp/merano-3d/points", "points", "CP1252", 25832, - "col1", 0, 0, 1, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error for shp/merano-3d/points: %s\n", err_msg); - sqlite3_close(handle); - return -3; - } - if (row_count != 20) { - fprintf (stderr, "unexpected row count for shp/merano-3d/points: %i\n", row_count); - sqlite3_close(handle); - return -4; - } - - ret = load_shapefile (handle, "./shp/merano-3d/polygons", "polygons", "CP1252", 25832, - "col1", 0, 0, 1, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error for shp/merano-3d/polygons: %s\n", err_msg); - sqlite3_close(handle); - return -5; - } - if (row_count != 10) { - fprintf (stderr, "unexpected row count for shp/merano-3d/polygons: %i\n", row_count); - sqlite3_close(handle); - return -6; - } - - ret = load_shapefile (handle, "./shp/merano-3d/roads", "roads", "CP1252", 25832, - "col1", 0, 0, 1, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error for shp/merano-3d/roads: %s\n", err_msg); - sqlite3_close(handle); - return -7; - } - if (row_count != 18) { - fprintf (stderr, "unexpected row count for shp/merano-3d/roads: %i\n", row_count); - sqlite3_close(handle); - return -8; - } - - ret = dump_shapefile (handle, "roads", "col1", dumpname, "CP1252", "LINESTRING", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for 3d roads: %s\n", err_msg); - sqlite3_close(handle); - return -9; - } - cleanup_shapefile(dumpname); - if (row_count != 18) { - fprintf (stderr, "unexpected row count for 3d roads: %i\n", row_count); - sqlite3_close(handle); - return -10; - } - - ret = dump_shapefile (handle, "polygons", "col1", dumpname, "CP1252", "POLYGON", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for 3d polygons: %s\n", err_msg); - sqlite3_close(handle); - return -11; - } - cleanup_shapefile(dumpname); - if (row_count != 10) { - fprintf (stderr, "unexpected row count for 3d polygons: %i\n", row_count); - sqlite3_close(handle); - return -12; - } - - ret = dump_shapefile (handle, "points", "col1", dumpname, "CP1252", "POINT", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for 3d points: %s\n", err_msg); - sqlite3_close(handle); - return -13; - } - cleanup_shapefile(dumpname); - if (row_count != 20) { - fprintf (stderr, "unexpected row count for 3d points: %i\n", row_count); - sqlite3_close(handle); - return -14; - } - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -15; - } - - spatialite_cleanup(); -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/shape_cp1252.c b/src/spatialite/test/shape_cp1252.c deleted file mode 100644 index 75223da..0000000 --- a/src/spatialite/test/shape_cp1252.c +++ /dev/null @@ -1,136 +0,0 @@ -/* - - shape_cp1252.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - int ret; - sqlite3 *handle; - char *dbfname = __FILE__"test.dbf"; - char *err_msg = NULL; - int row_count; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - - ret = load_shapefile (handle, "./shp/new-caledonia/points", "points", "CP1252", 4326, - "col1", 1, 0, 1, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error for shp/new-caledonia/points: %s\n", err_msg); - sqlite3_close(handle); - return -3; - } - if (row_count != 10) { - fprintf (stderr, "unexpected row count for shp/new-caledonia/points: %i\n", row_count); - sqlite3_close(handle); - return -4; - } - - ret = load_shapefile (handle, "./shp/new-caledonia/railways", "railways", "CP1252", 4326, - "col1", 1, 0, 1, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error for shp/new-caledonia/railways: %s\n", err_msg); - sqlite3_close(handle); - return -5; - } - if (row_count != 13) { - fprintf (stderr, "unexpected row count for shp/new-caledonia/points: %i\n", row_count); - sqlite3_close(handle); - return -6; - } - - ret = load_shapefile (handle, "./shp/new-caledonia/buildings", "buildings", "CP1252", 4326, - "col1", 1, 0, 1, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error for shp/new-caledonia/buildings: %s\n", err_msg); - sqlite3_close(handle); - return -7; - } - if (row_count != 10) { - fprintf (stderr, "unexpected row count for shp/new-caledonia/buildings: %i\n", row_count); - sqlite3_close(handle); - return -8; - } - - ret = dump_dbf (handle, "points", dbfname, "CP1252", err_msg); - if (!ret) { - fprintf (stderr, "dump_dbf() error for points: %s\n", err_msg); - sqlite3_close(handle); - return -9; - } - unlink(dbfname); - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -9; - } - - spatialite_cleanup(); -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/shape_primitives.c b/src/spatialite/test/shape_primitives.c deleted file mode 100644 index 14587bc..0000000 --- a/src/spatialite/test/shape_primitives.c +++ /dev/null @@ -1,673 +0,0 @@ -/* - - shape_primitives.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards -Ahmadou Dicko - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -void cleanup_shapefile(const char *filename) -{ - char nam[1000]; - - if (!filename) { - return; - } - - snprintf(nam, 1000, "%s.dbf", filename); - unlink(nam); - snprintf(nam, 1000, "%s.prj", filename); - unlink(nam); - snprintf(nam, 1000, "%s.shp", filename); - unlink(nam); - snprintf(nam, 1000, "%s.shx", filename); - unlink(nam); -} - -int do_test(sqlite3 *handle) -{ -/* testing some DB */ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - char *dumpname = __FILE__"dump"; - char *err_msg = NULL; - int row_count; - int ret; - gaiaVectorLayersListPtr list; - - ret = sqlite3_exec (handle, "CREATE TABLE Point_Test (Name TEXT, Description TEXT)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE TABLE error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -3; - } - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('Point_Test', 'geomZ', 4326, 'POINT', 'XYZ', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn POINT XYZ error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -4; - } - - ret = sqlite3_exec (handle, "INSERT INTO Point_Test (Name, Description, geomZ) VALUES ('Point 1', 'Some point', GeomFromText('POINTZ(136 -33 365)', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT POINT XYZ error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -5; - } - - ret = dump_shapefile (handle, "Point_Test", "geomZ", dumpname, "UTF-8", "POINT", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for POINT XYZ: %s\n", err_msg); - sqlite3_close(handle); - return -6; - } - cleanup_shapefile(dumpname); - - ret = dump_shapefile (handle, "Point_Test", "geomZ", dumpname, "UTF-8", "MULTIPOINT", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for POINT XYZ: %s\n", err_msg); - sqlite3_close(handle); - return -7; - } - cleanup_shapefile(dumpname); - - ret = dump_shapefile (handle, "Point_Test", "geomZ", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for POINT XYZ: %s\n", err_msg); - sqlite3_close(handle); - return -7; /* dupe */ - } - cleanup_shapefile(dumpname); - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('Point_Test', 'geomM', 4326, 'POINT', 'XYM', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn POINT XYM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -8; - } - - ret = sqlite3_exec (handle, "INSERT INTO Point_Test (Name, Description, geomM) VALUES ('Point 2', 'Some pointM', GeomFromText('POINTM(136 -33 26.7)', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT POINT XYM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -9; - } - - ret = dump_shapefile (handle, "Point_Test", "geomM", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for POINT XYM: %s\n", err_msg); - sqlite3_close(handle); - return -10; - } - cleanup_shapefile(dumpname); - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('Point_Test', 'geomXY', 4326, 'POINT', 'XY', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn POINT XY error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -11; - } - - ret = sqlite3_exec (handle, "INSERT INTO Point_Test (Name, Description, geomXY) VALUES ('Point 3', 'Some point', GeomFromText('POINT(136 -33)', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT POINT XY error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -12; - } - - ret = dump_shapefile (handle, "Point_Test", "geomXY", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for POINT XY: %s\n", err_msg); - sqlite3_close(handle); - return -13; - } - cleanup_shapefile(dumpname); - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('Point_Test', 'geomXYZM', 4326, 'POINT', 'XYZM', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn POINT XYZM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -14; - } - - ret = sqlite3_exec (handle, "INSERT INTO Point_Test (Name, Description, geomXYZM) VALUES ('Point 4', 'Some pointXYZM', GeomFromText('POINT(136 -33 424 233.2)', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT POINT XYZM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -15; - } - - ret = dump_shapefile (handle, "Point_Test", "geomXYZM", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for POINT XYZM: %s\n", err_msg); - sqlite3_close(handle); - return -16; - } - cleanup_shapefile(dumpname); - - ret = sqlite3_exec (handle, "DROP TABLE Point_Test", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE Point_Test error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -20; - } - - ret = sqlite3_exec (handle, "CREATE TABLE MPoint_Test (Name TEXT, Description TEXT)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE TABLE MPoint_Test error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -21; - } - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('MPoint_Test', 'geom', 4326, 'MULTIPOINT', 'XY', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn MPOINT XY error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -22; - } - - ret = sqlite3_exec (handle, "INSERT INTO MPoint_Test (Name, Description, geom) VALUES ('Point 1', 'Some point', GeomFromText('MULTIPOINT(136 -33, 47 2, -20, 12)', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT MPOINT XY error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -23; - } - - ret = dump_shapefile (handle, "MPoint_Test", "geom", dumpname, "UTF-8", "MULTIPOINT", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for MPOINT XY: %s\n", err_msg); - sqlite3_close(handle); - return -24; - } - cleanup_shapefile(dumpname); - - ret = dump_shapefile (handle, "MPoint_Test", "geom", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for MPOINT XY: %s\n", err_msg); - sqlite3_close(handle); - return -25; - } - cleanup_shapefile(dumpname); - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('MPoint_Test', 'geomZ', 4326, 'MULTIPOINT', 'XYZ', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn MPOINT XYZ error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -26; - } - - ret = sqlite3_exec (handle, "INSERT INTO MPoint_Test (Name, Description, geomZ) VALUES ('Point 2', 'Some pointZ', GeomFromText('MULTIPOINTZ(136 -33 1, 47 2 2, -20, 12 3)', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT MPOINT XYZ error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -27; - } - - ret = dump_shapefile (handle, "MPoint_Test", "geomZ", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for MPOINT XYZ: %s\n", err_msg); - sqlite3_close(handle); - return -28; - } - cleanup_shapefile(dumpname); - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('MPoint_Test', 'geomM', 4326, 'MULTIPOINT', 'XYM', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn MPOINT XYM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -29; - } - - ret = sqlite3_exec (handle, "INSERT INTO MPoint_Test (Name, Description, geomM) VALUES ('Point 3', 'Some pointM', GeomFromText('MULTIPOINTM(136 -33 1, 47 2 2, -20, 12 3)', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT MPOINT XYM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -30; - } - - ret = dump_shapefile (handle, "MPoint_Test", "geomM", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for MPOINT XYM: %s\n", err_msg); - sqlite3_close(handle); - return -31; - } - cleanup_shapefile(dumpname); - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('MPoint_Test', 'geomMZ', 4326, 'MULTIPOINT', 'XYZM', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn MPOINT XYZM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -32; - } - - ret = sqlite3_exec (handle, "INSERT INTO MPoint_Test (Name, Description, geomMZ) VALUES ('Point 4', 'Some pointMZ', GeomFromText('MULTIPOINTMZ(136 -33 1 4.2, 47 2 2.3 1, -20, 12 3 -2)', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT MPOINT XYZM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -33; - } - - ret = dump_shapefile (handle, "MPoint_Test", "geomMZ", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for MPOINT XYZM %s\n", err_msg); - sqlite3_close(handle); - return -34; - } - cleanup_shapefile(dumpname); - - ret = sqlite3_exec (handle, "DROP TABLE MPoint_Test", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE MPoint_Test error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -35; - } - - ret = sqlite3_exec (handle, "CREATE TABLE Linestring_Test (Name TEXT, Description TEXT)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE TABLE Linestring_Test error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -36; - } - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('Linestring_Test', 'geom', 4326, 'LINESTRING', 'XY', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn LINESTRING XY error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -37; - } - - ret = sqlite3_exec (handle, "INSERT INTO Linestring_Test (Name, Description, geom) VALUES ('Point 1', 'Some linestring', GeomFromText('LINESTRING(136 -33, 47 2, -20, 12)', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT LINESTRING XY error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -38; - } - - ret = dump_shapefile (handle, "Linestring_Test", "geom", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for LINESTRING XY: %s\n", err_msg); - sqlite3_close(handle); - return -39; - } - cleanup_shapefile(dumpname); - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('Linestring_Test', 'geomZ', 4326, 'LINESTRING', 'XYZ', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn LINESTRING XYZ error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -40; - } - - ret = sqlite3_exec (handle, "INSERT INTO Linestring_Test (Name, Description, geomZ) VALUES ('Point 2', 'Some linestringZ', GeomFromText('LINESTRINGZ(136 -33 3, 47 2 3.8, -20 12 10.1)', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT LINESTRING XYZ error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -41; - } - - ret = dump_shapefile (handle, "Linestring_Test", "geomZ", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for LINESTRING XYZ: %s\n", err_msg); - sqlite3_close(handle); - return -42; - } - cleanup_shapefile(dumpname); - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('Linestring_Test', 'geomM', 4326, 'LINESTRING', 'XYM', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn LINESTRING XYM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -43; - } - - ret = sqlite3_exec (handle, "INSERT INTO Linestring_Test (Name, Description, geomM) VALUES ('Point 3', 'Some linestringM', GeomFromText('LINESTRINGM(136 -33 3, 47 2 3.8, -20 12 10.1)', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT LINESTRING XYM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -44; - } - - ret = dump_shapefile (handle, "Linestring_Test", "geomM", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for LINESTRING XYM: %s\n", err_msg); - sqlite3_close(handle); - return -45; - } - cleanup_shapefile(dumpname); - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('Linestring_Test', 'geomMZ', 4326, 'LINESTRING', 'XYZM', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn LINESTRING XYZM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -46; - } - - ret = sqlite3_exec (handle, "INSERT INTO Linestring_Test (Name, Description, geomMZ) VALUES ('Point 3', 'Some linestringZM', GeomFromText('LINESTRINGZM(136 -33 3 4.2, 47 2 3.8 1, -20 12 10.1 321)', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT LINESTRING XYZM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -47; - } - - ret = dump_shapefile (handle, "Linestring_Test", "geomMZ", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for LINESTRING XYZM: %s\n", err_msg); - sqlite3_close(handle); - return -48; - } - cleanup_shapefile(dumpname); - - ret = sqlite3_exec (handle, "DROP TABLE Linestring_Test", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE Linestring_Test error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -49; - } - - ret = sqlite3_exec (handle, "CREATE TABLE Polygon_Test (Name TEXT, Description TEXT, thing1 INTEGER, thing2 REAL, thing3 DOUBLE, thing4 BLOB)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "CREATE TABLE Polygon_Test error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -50; - } - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('Polygon_Test', 'geom', 4326, 'POLYGON', 'XY', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn POLYGON XY error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -51; - } - /* TODO: try dumping an empty table */ - - ret = sqlite3_exec (handle, "INSERT INTO Polygon_Test (Name, Description, thing1, thing2, thing3, thing4, geom) VALUES ('Polygon 1', 'Some polygon', 2, 4.25, 343.343, zeroblob(40), GeomFromText('POLYGON((136 -33, 47 2, -20 -1, 136 -33),(10 -2, -20 -0.4, 40 0.1, 10 -2))', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT POLYGON XY error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -54; - } - - ret = dump_shapefile (handle, "Polygon_Test", "geom", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for POLYGON XY: %s\n", err_msg); - sqlite3_close(handle); - return -55; - } - cleanup_shapefile(dumpname); - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('Polygon_Test', 'geomZ', 4326, 'POLYGON', 'XYZ', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn POLYGON XYZ error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -56; - } - - ret = sqlite3_exec (handle, "INSERT INTO Polygon_Test (Name, Description, thing1, thing2, thing3, thing4, geomZ) VALUES ('Polygon 2', 'Some polygonZ', 12, 14.25, 1343.343, zeroblob(140), GeomFromText('POLYGONZ((136 -33 4, 47 2 4.2, -20 -1 1, 136 -33 4),(10 -2 4, 40 0.1 1.6, -20 -0.4 1, 10 -2 4)', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT POLYGON XYZ error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -57; - } - ret = sqlite3_exec (handle, "INSERT INTO Polygon_Test (Name, Description, geomZ) VALUES ('Polygon 2', 'wrong direction', GeomFromText('POLYGONZ((136 -33 4, 47 2 4.2, -20 -1 1, 136 -33 4),(10 -2 4, -20 -0.4 1, 40 0.1 1.6, 10 -2 4))', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT POLYGON XYZ 2 error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -57; /* dupe */ - } - - ret = dump_shapefile (handle, "Polygon_Test", "geomZ", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for POLYGON XYZ: %s\n", err_msg); - sqlite3_close(handle); - return -58; - } - cleanup_shapefile(dumpname); - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('Polygon_Test', 'geomM', 4326, 'POLYGON', 'XYM', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn POLYGON XYM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -59; - } - - ret = sqlite3_exec (handle, "INSERT INTO Polygon_Test (Name, Description, geomM) VALUES ('Polygon 3', 'Some polygonM', GeomFromText('POLYGONM((136 -33 4, 47 2 4.2, -20 -1 1, 136 -33 4),(10 -2 4, -20 -0.4 1, 40 0.1 1.6, 10 -2 4))', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT POLYGON XYM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -60; - } - - ret = dump_shapefile (handle, "Polygon_Test", "geomM", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for POLYGON XYM: %s\n", err_msg); - sqlite3_close(handle); - return -61; - } - cleanup_shapefile(dumpname); - - ret = sqlite3_exec (handle, "SELECT AddGeometryColumn('Polygon_Test', 'geomZM', 4326, 'POLYGON', 'XYZM', 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "AddGeometryColumn POLYGON XYZM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -62; - } - - ret = sqlite3_exec (handle, "INSERT INTO Polygon_Test (Name, Description, geomZM) VALUES ('Polygon 4', 'Some polygonZM', GeomFromText('POLYGONZM((136 -33 4 4, 47 2 4.2 4.4, -20 -1 1 1, 136 -33 4 4),(10 -2 4 1, -20 -0.4 1 1, 40 0.1 1.6 1, 10 -2 4 1))', 4326))", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "INSERT POLYGON XYZM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -63; - } - - ret = dump_shapefile (handle, "Polygon_Test", "geomZM", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for POLYGON XYZM: %s\n", err_msg); - sqlite3_close(handle); - return -64; - } - cleanup_shapefile(dumpname); - -/* testing VectorLayersList (several flavors) */ - list = gaiaGetVectorLayersList (handle, NULL, NULL, GAIA_VECTORS_LIST_FAST); - gaiaFreeVectorLayersList (list); - list = gaiaGetVectorLayersList (handle, NULL, NULL, GAIA_VECTORS_LIST_PESSIMISTIC); - gaiaFreeVectorLayersList (list); - list = gaiaGetVectorLayersList (handle, "Polygon_Test", "geomZM", GAIA_VECTORS_LIST_FAST); - gaiaFreeVectorLayersList (list); - list = gaiaGetVectorLayersList (handle, "Polygon_Test", "geomZM", GAIA_VECTORS_LIST_OPTIMISTIC); - gaiaFreeVectorLayersList (list); - - ret = sqlite3_exec (handle, "DROP TABLE Polygon_Test", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE Polygon_Test error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -65; - } - -/* final DB cleanup */ - ret = sqlite3_exec (handle, "DELETE FROM geometry_columns", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE FROM geometry_columns error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -66; - } - ret = sqlite3_exec (handle, "DELETE FROM spatialite_history WHERE geometry_column IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE FROM spatialite_history error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -66; - } - ret = sqlite3_exec (handle, "VACUUM", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VACUUM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -66; - } -#endif /* end ICONV conditional */ - -/* ok, succesfull termination */ - return 0; -} - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - - spatialite_init (0); -/* testing current style metadata layout >= v.4.0.0 */ - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - - ret = do_test(handle); - if (ret != 0) { - fprintf(stderr, "error while testing current style metadata layout\n"); - return ret; - } - - spatialite_cleanup(); - sqlite3_close(handle); - -/* testing legacy style metadata layout <= v.3.1.0 */ - spatialite_init (0); - ret = sqlite3_open_v2 ("test-legacy-3.0.1.sqlite", &handle, SQLITE_OPEN_READWRITE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open legacy v.3.0.1 database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = do_test(handle); - if (ret != 0) { - fprintf(stderr, "error while testing legacy style metadata layout\n"); - return ret; - } - - spatialite_cleanup(); - sqlite3_close(handle); - -/* testing legacy style metadata layout (v.2.3.1) */ - spatialite_init (0); - ret = sqlite3_open_v2 ("test-legacy-2.3.1.sqlite", &handle, SQLITE_OPEN_READWRITE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open legacy v.2.3.1 database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = do_test(handle); - if (ret != 0) { - fprintf(stderr, "error while testing legacy (2.3.1) style metadata layout\n"); - return ret; - } - - spatialite_cleanup(); - sqlite3_close(handle); - -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/shape_utf8_1.c b/src/spatialite/test/shape_utf8_1.c deleted file mode 100644 index c00c33a..0000000 --- a/src/spatialite/test/shape_utf8_1.c +++ /dev/null @@ -1,341 +0,0 @@ -/* - - shape_utf8_1.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards -Ahmadou Dicko - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -void cleanup_shapefile(const char *filename) -{ - char nam[1000]; - - if (!filename) { - return; - } - - snprintf(nam, 1000, "%s.dbf", filename); - unlink(nam); - snprintf(nam, 1000, "%s.prj", filename); - unlink(nam); - snprintf(nam, 1000, "%s.shp", filename); - unlink(nam); - snprintf(nam, 1000, "%s.shx", filename); - unlink(nam); -} - -int do_test(sqlite3 *handle, int legacy) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - int ret; - char *dumpname = __FILE__"dump"; - char *err_msg = NULL; - int row_count; - - ret = load_shapefile (handle, "./shp/gaza/barrier", "barrier", "UTF-8", 4326, - NULL, 1, 0, 1, 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error for shp/gaza/barrier: %s\n", err_msg); - sqlite3_close(handle); - return -3; - } - if (row_count != 5) { - fprintf (stderr, "unexpected row count for shp/gaza/barrier: %i\n", row_count); - sqlite3_close(handle); - return -4; - } - - ret = load_shapefile (handle, "./shp/gaza/aeroway", "aeroway", "UTF-8", 4326, - "col1", 1, 0, 0, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error for shp/gaza/aeroway: %s\n", err_msg); - sqlite3_close(handle); - return -5; - } - if (row_count != 1) { - fprintf (stderr, "unexpected row count for shp/gaza/aeroway: %i\n", row_count); - sqlite3_close(handle); - return -6; - } - - ret = load_shapefile (handle, "./shp/gaza/route", "route", "UTF-8", 4326, - NULL, 1, 0, 1, 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error for shp/gaza/route: %s\n", err_msg); - sqlite3_close(handle); - return -7; - } - if (row_count != 2) { - fprintf (stderr, "unexpected row count for shp/gaza/route: %i\n", row_count); - sqlite3_close(handle); - return -8; - } - - if (legacy) - { - sqlite3_exec (handle, "DELETE FROM layer_statistics", NULL, NULL, NULL); - sqlite3_exec (handle, "DELETE FROM views_layer_statistics", NULL, NULL, NULL); - } - else - { - sqlite3_exec (handle, "DELETE FROM geometry_columns_statistics", NULL, NULL, NULL); - sqlite3_exec (handle, "DELETE FROM views_geometry_columns_statistics", NULL, NULL, NULL); - } - - ret = dump_shapefile (handle, "route", "Geometry", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for UTF-8_1 route: %s\n", err_msg); - sqlite3_close(handle); - return -9; - } - cleanup_shapefile(dumpname); - if (row_count != 2) { - fprintf (stderr, "unexpected dump row count for UTF-8_1 route: %i\n", row_count); - sqlite3_close(handle); - return -10; - } - - ret = dump_shapefile (handle, "route", "Geometry", dumpname, "UTF-8", "LINESTRING", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for UTF-8_1 route: %s\n", err_msg); - sqlite3_close(handle); - return -13; - } - cleanup_shapefile(dumpname); - if (row_count != 2) { - fprintf (stderr, "unexpected dump row count for UTF-8_1 route LINESTRING: %i\n", row_count); - sqlite3_close(handle); - return -14; - } - - ret = sqlite3_exec (handle, "SELECT DiscardGeometryColumn('route', 'Geometry')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DiscardGeometry route error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -15; - } - - if (legacy) - ret = sqlite3_exec (handle, "INSERT INTO geometry_columns (f_table_name, f_geometry_column, type, coord_dimension, srid, spatial_index_enabled) VALUES ('beta', 'gamma', 'LINESTRING', 'XY', 4326, 0)", NULL, NULL, &err_msg); - else - ret = sqlite3_exec (handle, "INSERT INTO geometry_columns (f_table_name, f_geometry_column, geometry_type, coord_dimension, srid, spatial_index_enabled) VALUES (Lower('Beta'), Lower('Gamma'), 2, 2, 4326, 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "GeometryColumns route error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -16; - } - - if (legacy) - { - sqlite3_exec (handle, "DELETE FROM layer_statistics", NULL, NULL, NULL); - ret = sqlite3_exec (handle, "INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, f_table_name, f_geometry_column) VALUES ('route', 'Geometry', 'ROWID', 'beta', 'gamma')", NULL, NULL, &err_msg); - } - else - { - sqlite3_exec (handle, "DELETE FROM geometry_columns_statistics", NULL, NULL, NULL); - ret = sqlite3_exec (handle, "INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, f_table_name, f_geometry_column, read_only) VALUES (Lower('Route'), Lower('Geometry'), Lower('ROWID'), Lower('Beta'), Lower('gamma'), 1)", NULL, NULL, &err_msg); - } - if (ret != SQLITE_OK) { - fprintf (stderr, "ViewsGeometryColumns route error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -17; - } - - ret = dump_shapefile (handle, "route", "Geometry", dumpname, "UTF-8", NULL, 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for UTF-8_1 route (2): %s\n", err_msg); - sqlite3_close(handle); - return -17; - } - cleanup_shapefile(dumpname); - if (row_count != 2) { - fprintf (stderr, "unexpected dump row count for UTF-8_1 route LINESTRING (2): %i\n", row_count); - sqlite3_close(handle); - return -18; - } - - if (legacy) - { - /* final DB cleanup */ - ret = sqlite3_exec (handle, "DROP TABLE aeroway", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE aeroway error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -19; - } - ret = sqlite3_exec (handle, "DROP TABLE barrier", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE barrier error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -20; - } - ret = sqlite3_exec (handle, "DROP TABLE route", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE route error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -21; - } - ret = sqlite3_exec (handle, "DROP TABLE idx_route_Geometry", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE idx_route_Geometry error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -22; - } - ret = sqlite3_exec (handle, "DROP TABLE idx_barrier_Geometry", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE idx_barrier_Geometry error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -23; - } - ret = sqlite3_exec (handle, "DELETE FROM geometry_columns", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE FROM geometry_columns error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -24; - } - ret = sqlite3_exec (handle, "DELETE FROM views_geometry_columns", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE FROM views_geometry_columns error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -25; - } - ret = sqlite3_exec (handle, "DELETE FROM spatialite_history WHERE geometry_column IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE FROM spatialite_history error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -26; - } - ret = sqlite3_exec (handle, "VACUUM", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VACUUM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -27; - } - } -#endif /* end ICONV conditional */ - -/* ok, succesfull termination */ - return 0; - -} - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - -/* testing current style metadata layout >= v.4.0.0 */ - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - - ret = do_test(handle, 0); - if (ret != 0) { - fprintf(stderr, "error while testing current style metadata layout\n"); - return ret; - } - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -19; - } - -/* testing legacy style metadata layout <= v.3.1.0 */ - spatialite_init (0); - ret = sqlite3_open_v2 ("test-legacy-3.0.1.sqlite", &handle, SQLITE_OPEN_READWRITE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open legacy v.3.0.1 database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = do_test(handle, 1); - if (ret != 0) { - fprintf(stderr, "error while testing legacy style metadata layout\n"); - return ret; - } - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -19; - } - spatialite_cleanup(); - -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/shape_utf8_1ex.c b/src/spatialite/test/shape_utf8_1ex.c deleted file mode 100644 index d51de64..0000000 --- a/src/spatialite/test/shape_utf8_1ex.c +++ /dev/null @@ -1,342 +0,0 @@ -/* - - shape_utf8_1.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards -Ahmadou Dicko - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -void cleanup_shapefile(const char *filename) -{ - char nam[1000]; - - if (!filename) { - return; - } - - snprintf(nam, 1000, "%s.dbf", filename); - unlink(nam); - snprintf(nam, 1000, "%s.prj", filename); - unlink(nam); - snprintf(nam, 1000, "%s.shp", filename); - unlink(nam); - snprintf(nam, 1000, "%s.shx", filename); - unlink(nam); -} - -int do_test(sqlite3 *handle, int legacy) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - int ret; - char *dumpname = __FILE__"dump"; - char *err_msg = NULL; - int row_count; - - ret = load_shapefile_ex (handle, "./shp/gaza/barrier", "barrier", "UTF-8", 4326, - NULL, NULL, "POINT", 1, 0, 1, 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile_ex() error for shp/gaza/barrier: %s\n", err_msg); - sqlite3_close(handle); - return -3; - } - if (row_count != 5) { - fprintf (stderr, "unexpected row count for shp/gaza/barrier: %i\n", row_count); - sqlite3_close(handle); - return -4; - } - - ret = load_shapefile_ex (handle, "./shp/gaza/aeroway", "aeroway", "UTF-8", 4326, - "col1", NULL, "LINESTRING", 1, 0, 0, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile_ex() error for shp/gaza/aeroway: %s\n", err_msg); - sqlite3_close(handle); - return -5; - } - if (row_count != 1) { - fprintf (stderr, "unexpected row count for shp/gaza/aeroway: %i\n", row_count); - sqlite3_close(handle); - return -6; - } - - ret = load_shapefile_ex (handle, "./shp/gaza/route", "route", "UTF-8", 4326, - NULL, NULL, "MULTILINESTRING", 1, 0, 1, 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile_ex() error for shp/gaza/route: %s\n", err_msg); - sqlite3_close(handle); - return -7; - } - if (row_count != 2) { - fprintf (stderr, "unexpected row count for shp/gaza/route: %i\n", row_count); - sqlite3_close(handle); - return -8; - } - - if (legacy) - { - sqlite3_exec (handle, "DELETE FROM layer_statistics", NULL, NULL, NULL); - sqlite3_exec (handle, "DELETE FROM views_layer_statistics", NULL, NULL, NULL); - } - else - { - sqlite3_exec (handle, "DELETE FROM geometry_columns_statistics", NULL, NULL, NULL); - sqlite3_exec (handle, "DELETE FROM views_geometry_columns_statistics", NULL, NULL, NULL); - } - - ret = dump_shapefile (handle, "route", "Geometry", dumpname, "UTF-8", "", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for UTF-8_1 route: %s\n", err_msg); - sqlite3_close(handle); - return -9; - } - cleanup_shapefile(dumpname); - if (row_count != 2) { - fprintf (stderr, "unexpected dump row count for UTF-8_1 route: %i\n", row_count); - sqlite3_close(handle); - return -10; - } - - ret = dump_shapefile (handle, "route", "Geometry", dumpname, "UTF-8", "LINESTRING", 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for UTF-8_1 route: %s\n", err_msg); - sqlite3_close(handle); - return -13; - } - cleanup_shapefile(dumpname); - if (row_count != 2) { - fprintf (stderr, "unexpected dump row count for UTF-8_1 route LINESTRING: %i\n", row_count); - sqlite3_close(handle); - return -14; - } - - ret = sqlite3_exec (handle, "SELECT DiscardGeometryColumn('route', 'Geometry')", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DiscardGeometry route error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -15; - } - - if (legacy) - ret = sqlite3_exec (handle, "INSERT INTO geometry_columns (f_table_name, f_geometry_column, type, coord_dimension, srid, spatial_index_enabled) VALUES ('beta', 'gamma', 'LINESTRING', 'XY', 4326, 0)", NULL, NULL, &err_msg); - else - ret = sqlite3_exec (handle, "INSERT INTO geometry_columns (f_table_name, f_geometry_column, geometry_type, coord_dimension, srid, spatial_index_enabled) VALUES (Lower('Beta'), Lower('Gamma'), 2, 2, 4326, 0)", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "GeometryColumns route error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -16; - } - - if (legacy) - { - sqlite3_exec (handle, "DELETE FROM layer_statistics", NULL, NULL, NULL); - ret = sqlite3_exec (handle, "INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, f_table_name, f_geometry_column) VALUES ('route', 'Geometry', 'ROWID', 'beta', 'gamma')", NULL, NULL, &err_msg); - } - else - { - sqlite3_exec (handle, "DELETE FROM geometry_columns_statistics", NULL, NULL, NULL); - ret = sqlite3_exec (handle, "INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, f_table_name, f_geometry_column, read_only) VALUES (Lower('Route'), Lower('Geometry'), Lower('ROWID'), Lower('Beta'), Lower('Gamma'), 1)", NULL, NULL, &err_msg); - } - if (ret != SQLITE_OK) { - fprintf (stderr, "ViewsGeometryColumns route error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -17; - } - - ret = dump_shapefile (handle, "route", "Geometry", dumpname, "UTF-8", NULL, 1, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "dump_shapefile() error for UTF-8_1 route (2): %s\n", err_msg); - sqlite3_close(handle); - return -17; - } - cleanup_shapefile(dumpname); - if (row_count != 2) { - fprintf (stderr, "unexpected dump row count for UTF-8_1 route LINESTRING (2): %i\n", row_count); - sqlite3_close(handle); - return -18; - } - - if (legacy) - { - /* final DB cleanup */ - ret = sqlite3_exec (handle, "DROP TABLE aeroway", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE aeroway error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -19; - } - ret = sqlite3_exec (handle, "DROP TABLE barrier", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE barrier error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -20; - } - ret = sqlite3_exec (handle, "DROP TABLE route", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE route error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -21; - } - ret = sqlite3_exec (handle, "DROP TABLE idx_route_Geometry", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE idx_route_Geometry error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -22; - } - ret = sqlite3_exec (handle, "DROP TABLE idx_barrier_Geometry", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DROP TABLE idx_barrier_Geometry error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -23; - } - ret = sqlite3_exec (handle, "DELETE FROM geometry_columns", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE FROM geometry_columns error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -24; - } - ret = sqlite3_exec (handle, "DELETE FROM views_geometry_columns", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE FROM views_geometry_columns error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -25; - } - ret = sqlite3_exec (handle, "DELETE FROM spatialite_history WHERE geometry_column IS NOT NULL", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "DELETE FROM spatialite_history error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -26; - } - ret = sqlite3_exec (handle, "VACUUM", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "VACUUM error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -27; - } - } -#endif /* end ICONV conditional */ - -/* ok, succesfull termination */ - return 0; - -} - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - int ret; - sqlite3 *handle; - char *err_msg = NULL; - -/* testing current style metadata layout >= v.4.0.0 */ - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - - ret = do_test(handle, 0); - if (ret != 0) { - fprintf(stderr, "error while testing current style metadata layout\n"); - return ret; - } - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -19; - } - spatialite_cleanup(); - -/* testing legacy style metadata layout <= v.3.1.0 */ - spatialite_init (0); - ret = sqlite3_open_v2 ("test-legacy-3.0.1.sqlite", &handle, SQLITE_OPEN_READWRITE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open legacy v.3.0.1 database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = do_test(handle, 1); - if (ret != 0) { - fprintf(stderr, "error while testing legacy style metadata layout\n"); - return ret; - } - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -19; - } - spatialite_cleanup(); - -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/shape_utf8_2.c b/src/spatialite/test/shape_utf8_2.c deleted file mode 100644 index 1bd287a..0000000 --- a/src/spatialite/test/shape_utf8_2.c +++ /dev/null @@ -1,189 +0,0 @@ -/* - - shape_utf8_2.c -- SpatiaLite Test Case - - Author: Brad Hards - - ------------------------------------------------------------------------------ - - Version: MPL 1.1/GPL 2.0/LGPL 2.1 - - The contents of this file are subject to the Mozilla Public License Version - 1.1 (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - http://www.mozilla.org/MPL/ - -Software distributed under the License is distributed on an "AS IS" basis, -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License -for the specific language governing rights and limitations under the -License. - -The Original Code is the SpatiaLite library - -The Initial Developer of the Original Code is Alessandro Furieri - -Portions created by the Initial Developer are Copyright (C) 2011 -the Initial Developer. All Rights Reserved. - -Contributor(s): -Brad Hards -Ahmadou Dicko - -Alternatively, the contents of this file may be used under the terms of -either the GNU General Public License Version 2 or later (the "GPL"), or -the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), -in which case the provisions of the GPL or the LGPL are applicable instead -of those above. If you wish to allow use of your version of this file only -under the terms of either the GPL or the LGPL, and not to allow others to -use your version of this file under the terms of the MPL, indicate your -decision by deleting the provisions above and replace them with the notice -and other provisions required by the GPL or the LGPL. If you do not delete -the provisions above, a recipient may use your version of this file under -the terms of any one of the MPL, the GPL or the LGPL. - -*/ -#include -#include -#include -#include - -#include "config.h" - -#include "sqlite3.h" -#include "spatialite.h" - -int main (int argc, char *argv[]) -{ -#ifndef OMIT_ICONV /* only if ICONV is supported */ - int ret; - sqlite3 *handle; - char *kmlname = __FILE__"test.kml"; - char *geojsonname = __FILE__"test.geojson"; - char *err_msg = NULL; - int row_count; - - spatialite_init (0); - ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); - if (ret != SQLITE_OK) { - fprintf(stderr, "cannot open in-memory database: %s\n", sqlite3_errmsg (handle)); - sqlite3_close(handle); - return -1; - } - - ret = sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, &err_msg); - if (ret != SQLITE_OK) { - fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); - sqlite3_free(err_msg); - sqlite3_close(handle); - return -2; - } - - ret = load_shapefile (handle, "./shp/taiwan/hystoric", "hystoric", "UTF-8", 4326, - "col1", 1, 0, 1, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error for shp/taiwan/hystoric: %s\n", err_msg); - sqlite3_close(handle); - return -3; - } - if (row_count != 15) { - fprintf (stderr, "unexpected row count for shp/taiwan/hystoric: %i\n", row_count); - sqlite3_close(handle); - return -4; - } - - ret = load_shapefile (handle, "./shp/taiwan/leisure", "leisure", "UTF-8", 4326, - "col1", 1, 0, 1, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error for shp/taiwan/leisure: %s\n", err_msg); - sqlite3_close(handle); - return -5; - } - if (row_count != 5) { - fprintf (stderr, "unexpected row count for shp/taiwan/leisure: %i\n", row_count); - sqlite3_close(handle); - return -6; - } - - ret = load_shapefile (handle, "./shp/taiwan/route", "route", "UTF-8", 4326, - "col1", 1, 0, 1, 0, &row_count, err_msg); - if (!ret) { - fprintf (stderr, "load_shapefile() error for shp/taiwan/route: %s\n", err_msg); - sqlite3_close(handle); - return -7; - } - if (row_count != 4) { - fprintf (stderr, "unexpected row count for shp/taiwan/route: %i\n", row_count); - sqlite3_close(handle); - return -8; - } - -#ifndef OMIT_PROJ /* only if PROJ is supported */ - if (is_kml_constant (handle, "route", "name")) { - fprintf(stderr, "unexpected result for is_kml_constant (1)\n"); - return -9; - } - if (! is_kml_constant (handle, "route", "foo")) { - fprintf(stderr, "unexpected result for is_kml_constant (2)\n"); - return -10; - } - - ret = dump_kml (handle, "route", "col1", kmlname, NULL, NULL, 10); - if (!ret) { - fprintf (stderr, "dump_kml (1) error for shp/taiwan/route: %s\n", err_msg); - sqlite3_close(handle); - return -11; - } - unlink(kmlname); - - ret = dump_kml (handle, "route", "col1", kmlname, "name", NULL, 10); - if (!ret) { - fprintf (stderr, "dump_kml (2) error for shp/taiwan/route: %s\n", err_msg); - sqlite3_close(handle); - return -12; - } - unlink(kmlname); - - ret = dump_kml (handle, "route", "col1", kmlname, "theta", NULL, 10); - if (!ret) { - fprintf (stderr, "dump_kml (3) error for shp/taiwan/route: %s\n", err_msg); - sqlite3_close(handle); - return -13; - } - unlink(kmlname); - - ret = dump_kml (handle, "route", "col1", kmlname, "name", "sub_type", 10); - if (!ret) { - fprintf (stderr, "dump_kml (4) error for shp/taiwan/route: %s\n", err_msg); - sqlite3_close(handle); - return -14; - } - unlink(kmlname); - - ret = dump_kml (handle, "route", "col1", kmlname, "theta", "beta", 10); - if (!ret) { - fprintf (stderr, "dump_kml (5) error for shp/taiwan/route: %s\n", err_msg); - sqlite3_close(handle); - return -15; - } - unlink(kmlname); -#endif /* end PROJ conditional */ - - ret = dump_geojson(handle, "route", "col1", geojsonname, 10, 5); - if (!ret) { - fprintf (stderr, "dump_geojson() error for shp/taiwan/route: %s\n", err_msg); - sqlite3_close(handle); - return -16; - } - unlink(geojsonname); - - ret = sqlite3_close (handle); - if (ret != SQLITE_OK) { - fprintf (stderr, "sqlite3_close() error: %s\n", sqlite3_errmsg (handle)); - return -17; - } - - spatialite_cleanup(); -#endif /* end ICONV conditional */ - - return 0; -} diff --git a/src/spatialite/test/shapetest1.dbf b/src/spatialite/test/shapetest1.dbf deleted file mode 100644 index 8d914b192df89d2aa630f55d7bf065682ec45208..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 199 zcmZRMXP07PU|>jOFb0xnAe@1rB(=CCIk7m^kb%J&B&&g@1SW69z~Bdx;zE<>RVdHQ cODRt*N>Lyd7%AizrKBq4q^1@Vsl~_u0DZI@0{{R3 diff --git a/src/spatialite/test/shapetest1.prj b/src/spatialite/test/shapetest1.prj deleted file mode 100644 index a30c00a..0000000 --- a/src/spatialite/test/shapetest1.prj +++ /dev/null @@ -1 +0,0 @@ -GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/src/spatialite/test/shapetest1.qpj b/src/spatialite/test/shapetest1.qpj deleted file mode 100644 index edb0142..0000000 --- a/src/spatialite/test/shapetest1.qpj +++ /dev/null @@ -1 +0,0 @@ -GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9108"]],AUTHORITY["EPSG","4326"]] diff --git a/src/spatialite/test/shapetest1.shp b/src/spatialite/test/shapetest1.shp deleted file mode 100644 index 6c1d7ff31ac7e35bf1eef87329d486a1ed2b4224..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156 zcmZQzQ0HR64*Xs)GcYg$<+vVSQ;+ZSax~nR^8TM{prb+hn#|1;y&Qv-n+^x51v+Ba Vjv@*+2Af$xRZJi&Kyv8j0sx$e9JK%d diff --git a/src/spatialite/test/shapetest1.shx b/src/spatialite/test/shapetest1.shx deleted file mode 100644 index 5124cfddfa9ce482eab636faaf4ecbcca8696afa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116 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

C 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 SSP6?h_&q@9XZ_!QANW6iQuNpW diff --git a/src/spatialite/test/shp/foggia/local_councils.shx b/src/spatialite/test/shp/foggia/local_councils.shx deleted file mode 100644 index 5ee7429a390be350514a0f20db795c0f18ba4338..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 588 zcmZvYO-R&H6vco4ujk;`{2Qm7oRYzEoWyEy#Dp>&3LL^k6McdU7eRv+ZK6d^G>aB4 zW-&#?BrQb9O&|pkgNQ_n7{rCNa#1NR!YGOsn!7sKD)7PMym#+8_nv#9qm~_y6<>G2 zQ!bGmySZ`YNc#2H!qmcOHoX|MdHODyzA=O!{gzGdDE~j$4Z(`;4~QgHu}$wKIJPO& zf3Oo818|`iLJ_!j4%*{T%tOlnOuvQQRhTP6-*?zheBUHiCUO#lC+BjtgfOpx(!R{~0=S z*uT!m-(&1QYv7k~eDS1nQg?+3oQu=ahjB*dVb>B){*nA;aLUq$gfBE-u!=Lg2|eQf zRKHUbxZRqoE`Zy=s6JKPoP0(rxDVtzHIG}_1064MSL7$Piq|v)rXFvv`UIBo+B8Sc z8s4P>#4~vJRHvzg_i#kGh4*~;A8)1)4o>2I_y|YmF!nR;a~u;%Kx+)sJG8wglP$si rGUiqnG?XxT`DySwPWBF1 zwWA6$0=YkkF$<(n2CDb(+({BEk?fu5qQ5u-$k%ab*q97-$NM=lU!sBh=Zg*h_X7Da zcj}&#c*bIF@9?sZ|HxsW{In*OMSk}74!1l`d=pT1bcilJ^kJK$y~FCoGw*r=`R|%! z-oFI$)u)s+hXeUAf89H}U`Gd#ziD~Jc3z-A7w%R$*9GKvO!wJ!38<{56NTkIw+|4LJ8$OmnbzaB5$l`U1%RE_{DhE71O=Gs|y00`e!$70UJj@?qf^ zz-Tbf5y6P=3Qa&p=rqzoNhP)+ZqUnVlt<0Fb}irA**m;wPR#+?uYO>|pPxYfnH?(|p8@$lGw;m4 z59Aje>wa(x$Um|1E6+n9U+%`VWovy4c^R@~UAaI^Ww#+$7QHx}PmakE3=#^xK#Z?*vWrUoWP78a(aCUApO zfd(e#C8sKYfp21Fo&sDbEx$-1)GsL95h96?1Q~2;Y;0zX!{Fe=qQuHX1y>Z?@EHh` zGc_&5PEl7=bVo|PwV^XO?aAHnsu7Yz>esOVTUOG%WZraeu%*@2X Wz|;WlWK@HL64MehNH7m(lN10@T6o9+ diff --git a/src/spatialite/test/shp/gaza/barrier.prj b/src/spatialite/test/shp/gaza/barrier.prj deleted file mode 100644 index 58af98c..0000000 --- a/src/spatialite/test/shp/gaza/barrier.prj +++ /dev/null @@ -1 +0,0 @@ -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"]] diff --git a/src/spatialite/test/shp/gaza/barrier.shp b/src/spatialite/test/shp/gaza/barrier.shp deleted file mode 100644 index 92e061bd7aff111faa80a1edad465391c97f36fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 240 zcmZQzQ0HR64k}(SGcYg$l3c8xIRxm0sz)&D$M`@ diff --git a/src/spatialite/test/shp/gaza/route.prj b/src/spatialite/test/shp/gaza/route.prj deleted file mode 100644 index 58af98c..0000000 --- a/src/spatialite/test/shp/gaza/route.prj +++ /dev/null @@ -1 +0,0 @@ -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"]] diff --git a/src/spatialite/test/shp/gaza/route.shp b/src/spatialite/test/shp/gaza/route.shp deleted file mode 100644 index d7d72a3edfbd187c3ffa245a04b0db32959b18a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11020 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 Po(J-U0uu0l*N6WP<)xaq diff --git a/src/spatialite/test/shp/gaza/route.shx b/src/spatialite/test/shp/gaza/route.shx deleted file mode 100644 index 1c6578dd57bf98c42b6652d3060551f731a65a3d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116 zcmZQzQ0HR64y;}b1IF?X{TmR8$3*bsMWb+hn{AvFc?tmEwJ? z+F13h?tayDp!MquoPg?I&huiG+T+t|zLser`ug8YpZQGa6vEOu+V$=8ZS;cI6R^gw__BTg zdII+G)2dt-{p(xs>5qK#OqQZZ%aYsqFDkwi`9i+-%unx3J-j{sEnmN=#nr_+|4W}W z(Vc6=#sSs_9ksb-`VHNj)NqO9>2fVHz5lW9Nuq>(VZ9E z>(RQxfmPiR^}X+Rdue2|re0+7*$eusrXe6C*JKk3TVvr3`)|N!fUfH4g{a!?~#y``hnW%HSuG zlplbn`ZD}p20xLcJUIc%;3txlAy?JJhu_QKCz6!SL|}Nz;3t}tAz5{EE`y(FQif#J z3FUwE+s}B39hfgONLJlY20PK*%aE+Pp$vASNg0w=HV`7di6&)8R^3nr mJJF;J$*LR5U?-ZCAz5`p8SF%oa%lYFHu!J980$vK$c-Vq3tn`?FDiZeux4JOxiU}LxjQ0}T|c&0r>jvXeKbnkqk z4p8oKmzahnM2-U{x70LRMGYwDrz}-r29e{0$+f-hHg*NdIqZA(!~`M-3SY3_Pq|8+ z5CY2aZi&v;hRAWl9%*zuK_Q2DC4kp)T%L1_gj Ktp}xTKr{egYZsFM diff --git a/src/spatialite/test/shp/merano-3d/polygons.dbf b/src/spatialite/test/shp/merano-3d/polygons.dbf deleted file mode 100644 index 64f2715f5a419b26ae723fbc37e613f33ef77415..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4382 zcmds)!BT@T5Qf3dcyPvx-aO$8bOHs6M_SSvTc86$>nS(i{}D_U%CJpPXPm*B9DwY< zo9up@$+R=qb#ENUd7OQ?@}-T#PBbh7bD^GhXC51x@}{Cf`WW?fnb9u9sMpO(@b`oA zG3uFIK5rKQ{r(y!pw<@~R^_QVK5aIINGm?Jez|&~YYr6}_b)51YE#3gb9&^W)z`}D zN<9VxbOwfTegBP~G37BH-$FL#_gvEFt^r1Vpo=^`cJ-a}ZS{)E1dQ=H-OC0*0_OeG zrY@@S`nGiSC0~|_npbIEQ#1cIII$Ibrp|=dBJI${vDHmEc%)Hz!<=Sbg=w_GJ^X5C`(+3klq{* z^HjX1r;IvnCFM{%mD5v3owkxPzJdSdETc|aNjbiNvy3`zC1w5B!t^%=>a>-VlM6V@ csMA(be!2k4sMA(b*8e(8e`BCd+erE06QBtBKL7v# diff --git a/src/spatialite/test/shp/merano-3d/polygons.prj b/src/spatialite/test/shp/merano-3d/polygons.prj deleted file mode 100644 index 9ff5cda..0000000 --- a/src/spatialite/test/shp/merano-3d/polygons.prj +++ /dev/null @@ -1 +0,0 @@ -PROJCS["ETRS89 / UTM zone 32N",GEOGCS["ETRS89",DATUM["European_Terrestrial_Reference_System_1989",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6258"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4258"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",9],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],AUTHORITY["EPSG","25832"],AXIS["Easting",EAST],AXIS["Northing",NORTH]] diff --git a/src/spatialite/test/shp/merano-3d/polygons.shp b/src/spatialite/test/shp/merano-3d/polygons.shp deleted file mode 100644 index d3c7a5a24c304e3714910c1a55e45b8d762c5d1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7388 zcmeI1dsxls7RNV2Qn`#F%|3IU^E~IAXU@#?%zGR( z`rrohKEtSeN7O_KNL@$8cuh^Ks)vyJovat*ABBfGj8ECsunJ6m)IfBE6o1wZf)0na;i z1K%oNmgft;UVLr}=`SQ?n|}>X^saCrmMa|AtOn3B-5zyu9KF=5u`h5ltTl@V)+T)^vt`M2TS^;;gl`ohY7wWQT?s;KW{$ z^N9V91~gE<4(;&%sW$kbcDJWy;6Z!GIMMuQ_jNx&`CGZYUj*^sxIjPByS07To$?`J z-Rv||@a`3*YbbyCXO4eq>0N%_^dInIxGrPR@n^3zT2m9Pug zVsMQX#oG{VJWvaqlx){98*DcDM`Plup`k%EpI-zQO`~`(?_N4>CRlTb;tjRGdVk2Z zIpD3=+$YfbP4!(gjplFJyyrq%uNw=qKd1ccvSs)V;)f|G3(23L-c66ca(SSF8?h!{g^6vg_F4{G7kwLQ+* zT$hN1FjHhnL}@D{`>16|M92KcYZRqRM28OIf_@#$N^i7CQ@Ue6V zHzV;aiHOi2aoo9$E04Q>Un1&H0o{{`ULwrU+w^Uol|tW2ZXB=VrxYLV^OC>6P^Q%LQe=wp!EOM}V=JlZS0MbgzYJOr*k|Zr{E&P< zyd7@+b^SF1|FaorD-g69lfZ%kJ2CkS%aTP;1h<_rK`aO7uHO}H1?FSpV;$>Iq__tC{M=ph zNq=VlT3H%6^hBc}weRp|hWHYALXbFzczTV#@B;YxPNV(QpXEVU@%Lb}l89)EM;P%z zaUNX!sxFh_t=*DvmGmO>x$!g}zt3{y6z|Y++XHRDhi7<*FM~UtQjVXWOB1UqLz+9) z`BGgyR&Q&$y4*%8V)g2yL_}rF@n=>C1OiA_FI!1gw**q9-Ak_hTdw}SmWWtgeZ}n; zkgV=kb9D}qXD_;5NJPA3`vv^*ajC}pCt!LVI6!%QFlD5?7Hbn#Q9pYa)}pO$(7A!w zv$gM~g_wdVuRC%BT9Bt+`3APUZozq>&Ihoa?GN(LVf(=RLWMrsN@D9%TKnRCZ*|E$ z_Y>@I-yax9_I%%7qMP2-m#TlR+h)P`pHgo99&_vTqeMj8Vh`-gY&}nN`EZQW!@k+U zfB!=bF1FFUjf_5O^c-VxuzjID9I?l{?RM41*dOj~dNdMD^VWguZ+i9iwN{c zmXmEq+n&$J_VAW|;&gEGs;PU4^L1VsQ5~7^vDZZ68B3gH=fD>)RA^g(6LJTOW5Imi zd@R-lsaGf#<1l4x+h;l!5WkSM0K(A@<3ba zFS~cO5yfLZYibIyYW&==ngu&wp>DDB8uF6ySuTIiar1wLW8^QZR|Q<%DQS_c-E(d| zQFqum6@GdD%^m*!KPbhkXx)>dX3F9*H+|PTDkw+yMElEgzwwza!NvYTkz;Hu<%d!8E6{%RF| z93Q7PQ7mzNbi@~7KW|f|Hrd~i2g#|u@%3qi#7{OnGs*yq7L>Df?`NPbrv3v)2cDw- zRO97_(JbioL<8%}_6zJI?76Dp_6JCI?#BMX8a&|EFSlj=*?OjO_UF0#2@(ptcGo+n}+o$ z*xKLSCkp_7w@t~Khdjiq$hW>^DCzrj*e9dDE`)vYj-E%GlQ-nVW(!yN5WkEZB3uc+ zTc@>|)^($S)1$A!Tg-2UP;B8Ip)z7V*2=%(6XZl|6ZCZ;{}__4EjPT& zBMutuE~7KjSH`+U6iX-15#lG{}3p9`K(ygj7Jh|WoT?Cl%Xgw^1typWI7 z{?mn4;%DHM&eix*iF$UoOz{Y;ZmC;D{A|PkA;lXnw~wcIuL<5N?t^!HpW;u<&&{0J z^;c;wRL8Hno@`%v%AJqPx%z_rgw-9?Czf|O7qjz$g4?ft;_|MEJ72YxD!-GcNtNfU z_EP2df{xtz8uwYhkjx*>>Fm2h9k;Kcf7Q7DK->v=r%v^5*wec3#rP&~5i!}&4d38@ z&ap{91|Bi*^@w0F<()PcIB(1AUaWl^?hf1CJM<07Rxnw(!XG?-Tx0qg@aQWRUj~C0 zSS#N9gVi+8T8D#m5>vK%gU2q}QFjC!+IiBZMPR<~cTSThQ7pUH^$d@No{!BX#3TJ6 zc*m2Kjf<)MlXru5fbBOItS5h2p@nr@z(qDkrhWy!9dtE)Be=K1vyuA$q-K|kA2_go zW*Wt(Iv&;aVfDjDs@&i3y@}Nud#Um}o1IkoeQ1VMc^=1ob}olx?@JDxofDTQbEV4n zC)XCq&Pkq9Wt~Dls{Q{T82{n4Vds7RznX&cF1^-cuJ)N3)MsGs`2T7sFM4qSs_OC* z^_lJUPEv3BU+2dO-?_w5+xJ?T5#Y${{WErfPk(N`FB}|o;NjK~u*1_Q-|hh43e0s0 z09W;T=C>Ve-(~J~TDP9V^nJp>RcZHKyuq4XDs#7jyRPUE;R!CR>>IlUylanlJ>_)X z*$l%_u-B)H2d@O%{F1IqV>vL!q+SZ<$2LeNh#-4^gU#NXq36fGY1SqowGV9Yt*1PX zNq>Hp{I?H`8N3v{^21zdA%=qzJXl;#rL6$TEr^w^>5dOQT*nm3+w4QD2_@@ zqw!5JdmSzVC%5YsOXI)wOg-Zi*rY_OjOIsmK2`I8?W1C;@;vM;Rql((GxmJ|dB@IC zxX<1n=eJ1qeHZQ6KHDk}*>?oAWA$(bFzj7)S!K*$U;Uifze%~j8xC#bKX2XBwZ-My)cv6|gKZPVm%GLs z+eh*JVKMZd?_HZH-dOXS(SXO_yu_myg|k0gx80_W_pcAv+oA6Ir|j<*w`SS<8Aiw7 zb-kOLD^a{R5B)IWOV{Xyd!XX+)_-^!U;hPfTGzt&e}`L*k;;`&OtL-VsZ&o@@&Kl^RFqZum@T5PXVOhXu6hvg{toL;{5XCK8c&z-GEiU3`=#@L2G2-;D3sy(x1?B(Qs}?U2=H#pT7S4? zO5y`AQ7m=*%P<4Zntv+n4_|j#{)640K!0SI0q4!XR7~N3CyL|cNTEMvc-xva|4eWl zp1%~wa+HSu=X3rADys1QO^MX^4`m>TndhGXCB=eIlt`Wblr-3ZS?do~T2rk5Z+`)F C4-0Sr diff --git a/src/spatialite/test/shp/merano-3d/roads.prj b/src/spatialite/test/shp/merano-3d/roads.prj deleted file mode 100644 index 9ff5cda..0000000 --- a/src/spatialite/test/shp/merano-3d/roads.prj +++ /dev/null @@ -1 +0,0 @@ -PROJCS["ETRS89 / UTM zone 32N",GEOGCS["ETRS89",DATUM["European_Terrestrial_Reference_System_1989",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6258"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4258"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",9],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],AUTHORITY["EPSG","25832"],AXIS["Easting",EAST],AXIS["Northing",NORTH]] diff --git a/src/spatialite/test/shp/merano-3d/roads.shp b/src/spatialite/test/shp/merano-3d/roads.shp deleted file mode 100644 index 70573d928ced4ffa217eb4f591af5fb2aad0d5d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5716 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 G?f(sB#_qiU diff --git a/src/spatialite/test/shp/merano-3d/roads.shx b/src/spatialite/test/shp/merano-3d/roads.shx deleted file mode 100644 index 72032ee91dd197eef86a0e874ffca061b8b9063a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmZQzQ0HR64ys--GcW)VgWKB^-jjn>99?5&V-j}+JL)v}9#W20aeVgF_Dc26U`OoQ zQACY^ycIxv4~R7w7#Klz{$OBWVgu3>fb=W~&8!EcD}c7H0;=I)U|`t>xUFkGO45!{7Syk(1=h++U2;-lhu9J76Du0PVa1;G*<-jY}Ok#x1Km;95ZBx@Qps%%`Oaci1TDJjGyvIGl~ zHRx=(ieD75;6iTsevb(SLz9ggYutjANqU65V%X4>?%qBDLS1#jh5l&b8Mt~5^_4N$ zRZx=&3R~^II!yu$O%~2K&atci-5E{TIOCjYh73QdpBp3aNSe6_n4&B>6Db!3O45vC z(kC{I#-`XgfpuDsRE@XC$_iPh-*eA-K@;HeA_j#W0d%yGXcxK~xpS(sF zHmUGP-f~tX5XL)KMoIIrcX4aby>N!5WkL&DI(riv)Y~b7Fwow zo7}peiF;f7>nNVpvTIU!N;LSD^PV8m&7!qs#5W4=`x2XsO)7{2mxjd~5L@rx`l%yB+IOwZM|pt}`?Xsc5Ex&JCLlJ4c~j zsr}*5C$xE}kw0Od%b&!hW5-P*{(MGD)OX;o^m|;18|HlDPyF(H{VL*Gy|gs)^QQ+l zYlGkV8@}F8dUVFG#NvXUFTKHsR>&ke;Oz0eaU=JldYY{+nB5!Y`+-|D8f)a7M#rVE zo(HciGl74|UMNqlyDD7-*0@t~eH)m2POD5c){&N3u%IR!+L@H#4a6BOVcR3YlF<4< zZZ4Ml(k^c=Kj?kMUODsO-+U{#Y$w<*ULhqe%L#bq4dxBriQ?`pRu>#6_Uo=*;|smI z>Pf!^c(=IeD6t^XwU^jM;4@|ic-Xqo(;Te5eAO?+?+q%wh~3V)bdo>S!|CNhaQzXF zd9;6sYT_H>AgMuDAUJR0?h~|M*pi3`0bn+ZaTWGO)UR^?m?0ev7y1*KbT_~Nv8HMF zrc2?C7;ij#8hD*|){*bQG{>=6bbUCv{emG!8+CM8jlAc|jpQddvCHlTSDgkAYDIOB zpXGj>Aqb|uYL{94bp|@yJM*F)KMAayA6u$o*;1Vr;qUY5UAj^+I5^qi<2!z_iIqqP z%zd9QZ(WwZEqN8bb=4HhyzKX(tm4}tik)PADwcjPSZ?KbY)>N?nOD49eRB?ah!*)b zl%eLm7J`mEaNO&>!+Butyz*+77?IXjGSEO8^M*JKSKa_SKd?G~m6MC*);%#~T?qZa zGJp9MPVNYCLpJ$6e)O|0hOV3+HL77H(!7Rcak^UY%C=px8CWZnukh_5=n21qZLiP+w~m?e=B-?fdA%p(JfZnH V?d;OFc8FK&t diff --git a/src/spatialite/test/shp/new-caledonia/points.dbf b/src/spatialite/test/shp/new-caledonia/points.dbf deleted file mode 100644 index 1d6da57586dc167e0855776e330b4cbc4c0c58df..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1304 zcma)*%Z}496oyl=LqbT16)W$6MWkcLx!5}>NFXGHsxXUeDmQgoizKdcLE`avlUec@ zIBD&4Ty->FBq!%M{`~(wezsUFo(DnjH_+yJJ$`&!|NQ!C%6}i9ue>R`tJi9KyWXo> zcD<;NL9iTWz4rcZL@m#$ss7fh_kWHL>My~6q0u8l^nEMJUg_pEiMT~=aKbSFn+OaJLck$`959azkrj_1E=xWxa*Ns^ z!X(8pWwY)HX9N_(`Ey z>I&T>3;^}TYFD9;ODx5`Pq-+XH*!+vaKI@u>bi2MBwFfTqR(BA-mOHl)kd&!47EnE zY-RV}KfBanY+!IHBpI8V$eL+76DTJMk6F>_p)KW=8b9Hy%PhscCtM0Qa4|Q>htpyu zcf)=SgQFb3<5OL^GUZX>w^Mu<`5&9xnn(Ib_9$velc`^vl7x ncYF9|;<+QvJd2w*GF=2nrh8{tz)Aeni*OX}FV*bre%|~Cv`)w~ diff --git a/src/spatialite/test/shp/new-caledonia/points.prj b/src/spatialite/test/shp/new-caledonia/points.prj deleted file mode 100644 index 58af98c..0000000 --- a/src/spatialite/test/shp/new-caledonia/points.prj +++ /dev/null @@ -1 +0,0 @@ -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"]] diff --git a/src/spatialite/test/shp/new-caledonia/points.shp b/src/spatialite/test/shp/new-caledonia/points.shp deleted file mode 100644 index 592b275ecbc595e23614d086387723c470eac33e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380 zcmZQzQ0HR64)(oZW?*0h%7vQF>D_QT#o_cm?WX^$%?|vT96ZhDLyCh(@&0*S&rJ_t z*N!3zGKLF8{CZM!_T77gSwJBsm>kU9RUxzP@vk&H02Bwh0HRN6+p63C=TaQfJXIe) z_X5kYz~prAtYG;CbRUCb{(~bQ!0us%$;ljEduHj`6o+$px|1J5g@E=cWg+ lYex|^0`friI6!GXC>;Z(v!HYZlx~C4Q=s%BD7^th0{{hZ7c>9> diff --git a/src/spatialite/test/shp/new-caledonia/railways.dbf b/src/spatialite/test/shp/new-caledonia/railways.dbf deleted file mode 100644 index 2c6c35faf93aa281c6de4bde0f3c3e1a701308d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1117 zcmb`Dv2Md45QZ&f=uk!K+=)lP!3I2589F5Cls!W6B|);m!Z38q*2C}v0c(UQ+GRQxgQ@V*o!35)!$rrQNfH?B19FRJYjWr%!h#y?@-Yc)I znW%!xJg-=}JSlgC77zf2Y`{&rZj-K2{$O1@Rs^r4q^w*k(u3=erExf1b!CIXGwvPV o@9y}`;(wj%7nVrJDynolmPJAqPsoz#Se&L~iA6FNqyPTfFf2CpeU40T7-%Q_MDY(hQ48jGkgB{?RnnkJ?A~={WzR; z+MGqlGQp%ehl3x7yIyYD(DVv%Dxrs^HCee1KOrA>(484zQ4aXt_84wurxQxnsR z+{^cwv*ugjv+8(t^QCZ-?xTf4P6M2{PE)3|d{?3);}$5vu~kDm6uuUDS{vvVN@4^wqsLxn}TC$!1l@1>YX zD4LynVc#vKg{Kzd%g!k`mHP)Hk8x$|fcgA+nK~||g(rEks(yCe4chW?&yr8 z=tt4{eOcf;y1@?Bu`lb$^fOyqnVlkugI3kAh~4YUEl&cwnx6}>1>2r{^^e0~p8MVL z+wfw0V-Gr*4&*-BYwTVkbt6ql23u?6pgBm;Sd=Z?h4!D(D06K62n3l_Q@ zj+&6<^$IK66x}KoWmIh~sz|2j0uNm$a`(*rk-X-ZWH8!Nx31pvGKx0*WzHubu~!9x zP1nFZ-BPs*u=w!Qff2CctQr3+aIf)EpJ!m1=f{t`!HSh0!CJ^QX{k@&0_(OX85w~E z%8cL#VDBq3{WrjU3Vx7!n^<%yO!uBU*x;UNt`NMrp*<)9++rrXycwK&t=c*r{A9X# z#v5#Ga8RFjfL?OjqmJ5BC50M0zcl$={h> z=|F?4{REwz*uSM+QQb{&jpgTqZ-bR(Pu5L<^|FTV_9aoY>1?Wa7TjV>xw?RVHAzq8 zqn1vsIZykg6rGctZ?Oi<`?EZ757<$C?Rsl)?xeoM3UF>k_G$`Tsa5+!M;0P z28Uh^G;sxwv}+c7fVcm%>Z8H^sBfF_m3P3;e{+fZ5G=_u9PhX;!4nH|Jx@T9i0J^9P SNLv8uV?Z?uKv%v3@-+bM(HN=# diff --git a/src/spatialite/test/shp/taiwan/hystoric.dbf b/src/spatialite/test/shp/taiwan/hystoric.dbf deleted file mode 100644 index 67de6177afea26c1f4e343f20b825785661a7f71..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 940 zcma)*%Sz-x6o$K*wJ0+?SM>;~d)L;>2s*f#2WZMzn1W6ssS47&7G|Tuh$zff8eA$0 zGcXI$moeS=7A751Dd?uL7AL1p<;#E0PwGpz+g>j$prurtW?BwB z=>6CI(J1SoPO~+RN;6N}g2th41uQmOBQM~+_-n|y%>)FRJ?{UNfOdTb&Fp?@A zq(?fGgTB#L6_<~1|L-R^FYlw%;%Ni`6O<6fSli)=92$M7`Xiv&LM@Z)&dWU^Rvn0W${psc00oap(O=Hs}*WH>>o+%HTN^kZ3K4OT1_DV zof`|NZE36z0YMl=gyN+gZbo`fCO^`=8BmaFG6cyot({Cs3%ouB5sX3XX?>bocMWr=n4nQF$m|RKMd;xE>I0s%I;pk_}EkJTW7eMq~ zS#bFJCgC^-mWs5yvs%qTax5@8H}5M44RqohT9n_uPE`ZzV};3uM#KwuB*!^SZJ5!* z%?x%c8%*x&g~xMht>YXfiiUqMy9YLt9VW*Xc4WS|TAV}t%8J~E>0ozqz~mI1kMph4 zM}!AZoD(K@dey#_|A2Bo5A^+KVg&00g)i9euy7Pi@p~BbA1ucWlUp)>7c(1goP*dU z?e)w4faQ2#au>HJu)F}uZBevg(^b diff --git a/src/spatialite/test/shp/taiwan/hystoric.shx b/src/spatialite/test/shp/taiwan/hystoric.shx deleted file mode 100644 index 3cde1b8af845ee8bc20645218e06f7758dc1e6b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 220 zcmZQzQ0HR64)R_wGcYg$2SGe&taj&I0r`0+J6e%mJZmp zqlhvBc}!3d5DjAkZGf{`kk}w=3y85BWH2`ng8*aLBKPM&cf#CNkW#tn8<0PDdzgYe z(486fK`v}ScR$>BgijL4hxy}}ZnvHYkl#Kd<{BSRUbtSQ^cm2f&gDx&Ie`4DN4FoG z1?12EbX|%8$cKdkEL?J`cdJ?goCBk0?LP%>O9$-Q XQACY^JSHHvfYNqQ+678`0qFt&)i@5} diff --git a/src/spatialite/test/shp/taiwan/route.dbf b/src/spatialite/test/shp/taiwan/route.dbf deleted file mode 100644 index d749b0a11db58774537e1d6f98911eb0ee079eba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 302 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

~$uo@b$V7+i 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 diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext1.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext1.testcase deleted file mode 100644 index 88a51d8..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext1.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromText -:memory: #use in-memory database -SELECT AsText(BdMPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')); -1 # rows (not including the header row) -1 # columns -AsText(BdMPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')) -MULTIPOLYGON(((0 0, 0 1, 1 1, 1 0, 0 0))) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext10.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext10.testcase deleted file mode 100644 index 2e534f2..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext10.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromText - point, no SRID -:memory: #use in-memory database -SELECT BdMPolyFromText("Point(1 2)"); -1 # rows (not including the header row) -1 # columns -BdMPolyFromText("Point(1 2)") -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext13.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext13.testcase deleted file mode 100644 index 89b677d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext13.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromText - text SRID -:memory: #use in-memory database -SELECT BdMPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int"); -1 # rows (not including the header row) -1 # columns -BdMPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int") -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext14.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext14.testcase deleted file mode 100644 index 764c23c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext14.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromText - bad wkt, SRID -:memory: #use in-memory database -SELECT BdMPolyFromText("Point(1,2)", 4326); -1 # rows (not including the header row) -1 # columns -BdMPolyFromText("Point(1,2)", 4326) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext15.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext15.testcase deleted file mode 100644 index f3d8ea1..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext15.testcase +++ /dev/null @@ -1,8 +0,0 @@ -BdMPolyFromText -:memory: #use in-memory database -SELECT AsEwkt(BdMPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')); -1 # rows (not including the header row) -1 # columns -AsEwkt(BdMPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')) -SRID=0;MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2))) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext16.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext16.testcase deleted file mode 100644 index 45de68e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext16.testcase +++ /dev/null @@ -1,8 +0,0 @@ -BdMPolyFromText -:memory: #use in-memory database -SELECT AsEwkt(BdMPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))', 4326)); -1 # rows (not including the header row) -1 # columns -AsEwkt(BdMPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))', 4326)) -SRID=4326;MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2))) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext17.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext17.testcase deleted file mode 100644 index 0028f4e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext17.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromText - bad wkt, no SRID -:memory: #use in-memory database -SELECT BdMPolyFromText("Point(1,2)"); -1 # rows (not including the header row) -1 # columns -BdMPolyFromText("Point(1,2)") -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext2.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext2.testcase deleted file mode 100644 index 5069194..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext2.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromText - SRID -:memory: #use in-memory database -SELECT AsEWkt(BdMPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', 4326)); -1 # rows (not including the header row) -1 # columns -AsEWkt(BdMPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', 4326)) -SRID=4326;MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0))) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext3.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext3.testcase deleted file mode 100644 index 87b124e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext3.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromText - non-text, no SRID -:memory: #use in-memory database -SELECT BdMPolyFromText(26); -1 # rows (not including the header row) -1 # columns -BdMPolyFromText(26) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext4.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext4.testcase deleted file mode 100644 index 0ea7630..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext4.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromText - non-text, SRID -:memory: #use in-memory database -SELECT BdMPolyFromText(26, 4326); -1 # rows (not including the header row) -1 # columns -BdMPolyFromText(26, 4326) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext9.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext9.testcase deleted file mode 100644 index 8d3fa13..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext9.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromText - point, SRID -:memory: #use in-memory database -SELECT BdMPolyFromText("Point(1 2)", 4); -1 # rows (not including the header row) -1 # columns -BdMPolyFromText("Point(1 2)", 4) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb1.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb1.testcase deleted file mode 100644 index a62fc39..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb1.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromWKB -:memory: #use in-memory database -SELECT AsText(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')))); -1 # rows (not including the header row) -1 # columns -AsText(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')))) -MULTIPOLYGON(((0 0, 0 1, 1 1, 1 0, 0 0))) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb10.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb10.testcase deleted file mode 100644 index 684dce6..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb10.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromWKB - point, no SRID -:memory: #use in-memory database -SELECT BdMPolyFromWKB(AsBinary(GeomFromText("Point(1 2)"))); -1 # rows (not including the header row) -1 # columns -BdMPolyFromWKB(AsBinary(GeomFromText("Point(1 2)"))) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb11.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb11.testcase deleted file mode 100644 index a1ee090..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb11.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromWKB - toxic, no SRID -:memory: #use in-memory database -SELECT BdMPolyFromWKB(AsBinary(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))); -1 # rows (not including the header row) -1 # columns -BdMPolyFromWKB(AsBinary(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb12.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb12.testcase deleted file mode 100644 index a8b5c3a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb12.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMpolyFromWKB - toxic, SRID -:memory: #use in-memory database -SELECT BdMpolyFromWKB(AsBinary(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326))); -1 # rows (not including the header row) -1 # columns -BdMpolyFromWKB(AsBinary(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326))) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb13.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb13.testcase deleted file mode 100644 index 0c87ee6..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb13.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromWKB - text SRID -:memory: #use in-memory database -SELECT BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int"))); -1 # rows (not including the header row) -1 # columns -BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int"))) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb14.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb14.testcase deleted file mode 100644 index f2a7f2a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb14.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromWKB - point, SRID -:memory: #use in-memory database -SELECT BdMPolyFromWKB(AsBinary(GeomFromText("Point(1,2)")), 4326); -1 # rows (not including the header row) -1 # columns -BdMPolyFromWKB(AsBinary(GeomFromText("Point(1,2)")), 4326) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb15.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb15.testcase deleted file mode 100644 index bb16819..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb15.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromWKB -:memory: #use in-memory database -SELECT AsText(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')))); -1 # rows (not including the header row) -1 # columns -AsText(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')))) -MULTIPOLYGON(((0 0, 0 10, 10 10, 10 0, 0 0), (2 2, 8 2, 8 8, 2 8, 2 2))) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb16.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb16.testcase deleted file mode 100644 index b06f70d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb16.testcase +++ /dev/null @@ -1,8 +0,0 @@ -BdMPolyFromWKB -:memory: #use in-memory database -SELECT AsEwkt(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')), 4326)); -1 # rows (not including the header row) -1 # columns -AsEwkt(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')), 4326)) -SRID=4326;MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2))) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb17.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb17.testcase deleted file mode 100644 index ffcd56b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb17.testcase +++ /dev/null @@ -1,8 +0,0 @@ -BdMPolyFromWKB - zeroblob -:memory: #use in-memory database -SELECT BdMPolyFromWKB(zeroblob(25)); -1 # rows (not including the header row) -1 # columns -BdMPolyFromWKB(zeroblob(25)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb18.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb18.testcase deleted file mode 100644 index 7c7d42c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb18.testcase +++ /dev/null @@ -1,8 +0,0 @@ -BdMPolyFromWKB - zeroblob, invalid SRID -:memory: #use in-memory database -SELECT BdMPolyFromWKB(zeroblob(25), 'a'); -1 # rows (not including the header row) -1 # columns -BdMPolyFromWKB(zeroblob(25), 'a') -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb19.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb19.testcase deleted file mode 100644 index ae11321..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb19.testcase +++ /dev/null @@ -1,8 +0,0 @@ -BdMPolyFromWKB - zeroblob, SRID -:memory: #use in-memory database -SELECT BdMPolyFromWKB(zeroblob(25), 4326); -1 # rows (not including the header row) -1 # columns -BdMPolyFromWKB(zeroblob(25), 4326) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb2.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb2.testcase deleted file mode 100644 index ff113e6..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb2.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromWKB - SRID -:memory: #use in-memory database -SELECT AsEWkt(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')), 4326)); -1 # rows (not including the header row) -1 # columns -AsEWkt(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')), 4326)) -SRID=4326;MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0))) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb3.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb3.testcase deleted file mode 100644 index ff8e73e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb3.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromWKB - non-text, no SRID -:memory: #use in-memory database -SELECT BdMPolyFromWKB(26); -1 # rows (not including the header row) -1 # columns -BdMPolyFromWKB(26) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb4.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb4.testcase deleted file mode 100644 index 9fdb41a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb4.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromWKB - non-text, SRID -:memory: #use in-memory database -SELECT BdMPolyFromWKB(26, 4326); -1 # rows (not including the header row) -1 # columns -BdMPolyFromWKB(26, 4326) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb5.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb5.testcase deleted file mode 100644 index 6d7eb61..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb5.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromWKB - null, SRID -:memory: #use in-memory database -SELECT BdMPolyFromWKB(null, 4326); -1 # rows (not including the header row) -1 # columns -BdMPolyFromWKB(null, 4326) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb6.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb6.testcase deleted file mode 100644 index 2a35b04..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb6.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromWKB - null, no SRID -:memory: #use in-memory database -SELECT BdMPolyFromWKB(null); -1 # rows (not including the header row) -1 # columns -BdMPolyFromWKB(null) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb7.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb7.testcase deleted file mode 100644 index 9be741d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb7.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromWKB - zeroblob(58), no SRID -:memory: #use in-memory database -SELECT BdMPolyFromWKB(zeroblob(58)); -1 # rows (not including the header row) -1 # columns -BdMPolyFromWKB(zeroblob(58)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb8.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb8.testcase deleted file mode 100644 index 0ecbb6e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb8.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromWKB - zeroblob(58), SRID -:memory: #use in-memory database -SELECT BdMPolyFromWKB(zeroblob(58), 4); -1 # rows (not including the header row) -1 # columns -BdMPolyFromWKB(zeroblob(58), 4) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb9.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb9.testcase deleted file mode 100644 index a406363..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb9.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdMPolyFromWKB - point, SRID -:memory: #use in-memory database -SELECT BdMPolyFromWKB("Point(1 2)", 4); -1 # rows (not including the header row) -1 # columns -BdMPolyFromWKB("Point(1 2)", 4) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext1.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext1.testcase deleted file mode 100644 index a80e364..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext1.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromText -:memory: #use in-memory database -SELECT AsText(BdPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')); -1 # rows (not including the header row) -1 # columns -AsText(BdPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')) -POLYGON((0 0, 0 1, 1 1, 1 0, 0 0)) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext10.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext10.testcase deleted file mode 100644 index bb0fd47..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext10.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromText - point, no SRID -:memory: #use in-memory database -SELECT BdPolyFromText("Point(1 2)"); -1 # rows (not including the header row) -1 # columns -BdPolyFromText("Point(1 2)") -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext11.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext11.testcase deleted file mode 100644 index a339831..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext11.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromText - toxic, no SRID -:memory: #use in-memory database -SELECT BdPolyFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"); -1 # rows (not including the header row) -1 # columns -BdPolyFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))") -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext12.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext12.testcase deleted file mode 100644 index 628695e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext12.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromText - toxic, SRID -:memory: #use in-memory database -SELECT BdPolyFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326); -1 # rows (not including the header row) -1 # columns -BdPolyFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext13.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext13.testcase deleted file mode 100644 index cb270f8..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext13.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromText - text SRID -:memory: #use in-memory database -SELECT BdPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int"); -1 # rows (not including the header row) -1 # columns -BdPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int") -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext14.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext14.testcase deleted file mode 100644 index 199d172..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext14.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromText - point, SRID -:memory: #use in-memory database -SELECT BdPolyFromText("Point(1,2)", 4326); -1 # rows (not including the header row) -1 # columns -BdPolyFromText("Point(1,2)", 4326) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext15.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext15.testcase deleted file mode 100644 index bee36df..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext15.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromText -:memory: #use in-memory database -SELECT AsText(BdPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')); -1 # rows (not including the header row) -1 # columns -AsText(BdPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')) -POLYGON((0 0, 0 10, 10 10, 10 0, 0 0), (2 2, 8 2, 8 8, 2 8, 2 2)) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext16.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext16.testcase deleted file mode 100644 index db7c48a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext16.testcase +++ /dev/null @@ -1,8 +0,0 @@ -BdPolyFromText -:memory: #use in-memory database -SELECT AsEwkt(BdPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))', 4326)); -1 # rows (not including the header row) -1 # columns -AsEwkt(BdPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))', 4326)) -SRID=4326;POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2)) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext2.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext2.testcase deleted file mode 100644 index bcfe428..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext2.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromText - SRID -:memory: #use in-memory database -SELECT AsEWkt(BdPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', 4326)); -1 # rows (not including the header row) -1 # columns -AsEWkt(BdPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', 4326)) -SRID=4326;POLYGON((0 0,0 1,1 1,1 0,0 0)) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext3.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext3.testcase deleted file mode 100644 index 2b6242f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext3.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromText - non-text, no SRID -:memory: #use in-memory database -SELECT BdPolyFromText(26); -1 # rows (not including the header row) -1 # columns -BdPolyFromText(26) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext4.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext4.testcase deleted file mode 100644 index 454bf9f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext4.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromText - non-text, SRID -:memory: #use in-memory database -SELECT BdPolyFromText(26, 4326); -1 # rows (not including the header row) -1 # columns -BdPolyFromText(26, 4326) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext5.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext5.testcase deleted file mode 100644 index 8dfd95b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext5.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromText - null, SRID -:memory: #use in-memory database -SELECT BdPolyFromText(null, 4326); -1 # rows (not including the header row) -1 # columns -BdPolyFromText(null, 4326) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext6.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext6.testcase deleted file mode 100644 index dba5588..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext6.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromText - null, no SRID -:memory: #use in-memory database -SELECT BdPolyFromText(null); -1 # rows (not including the header row) -1 # columns -BdPolyFromText(null) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext7.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext7.testcase deleted file mode 100644 index 08fe5b2..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext7.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromText - zeroblob(58), no SRID -:memory: #use in-memory database -SELECT BdPolyFromText(zeroblob(58)); -1 # rows (not including the header row) -1 # columns -BdPolyFromText(zeroblob(58)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext8.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext8.testcase deleted file mode 100644 index a79c5c3..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext8.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromText - zeroblob(58), SRID -:memory: #use in-memory database -SELECT BdPolyFromText(zeroblob(58), 4); -1 # rows (not including the header row) -1 # columns -BdPolyFromText(zeroblob(58), 4) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext9.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext9.testcase deleted file mode 100644 index 5bdfa25..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext9.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromText - point, SRID -:memory: #use in-memory database -SELECT BdPolyFromText("Point(1 2)", 4); -1 # rows (not including the header row) -1 # columns -BdPolyFromText("Point(1 2)", 4) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb1.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb1.testcase deleted file mode 100644 index b3ab196..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb1.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromWKB -:memory: #use in-memory database -SELECT AsText(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')))); -1 # rows (not including the header row) -1 # columns -AsText(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')))) -POLYGON((0 0, 0 1, 1 1, 1 0, 0 0)) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb10.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb10.testcase deleted file mode 100644 index 02299e2..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb10.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromWKB - point, no SRID -:memory: #use in-memory database -SELECT BdPolyFromWKB(AsBinary(GeomFromText("Point(1 2)"))); -1 # rows (not including the header row) -1 # columns -BdPolyFromWKB(AsBinary(GeomFromText("Point(1 2)"))) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb11.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb11.testcase deleted file mode 100644 index d8ecf07..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb11.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromWKB - toxic, no SRID -:memory: #use in-memory database -SELECT BdPolyFromWKB(AsBinary(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))); -1 # rows (not including the header row) -1 # columns -BdPolyFromWKB(AsBinary(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb12.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb12.testcase deleted file mode 100644 index e88be46..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb12.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromWKB - toxic, SRID -:memory: #use in-memory database -SELECT BdPolyFromWKB(AsBinary(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326))); -1 # rows (not including the header row) -1 # columns -BdPolyFromWKB(AsBinary(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326))) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb13.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb13.testcase deleted file mode 100644 index 2b23c18..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb13.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromWKB - text SRID -:memory: #use in-memory database -SELECT BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int"))); -1 # rows (not including the header row) -1 # columns -BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int"))) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb14.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb14.testcase deleted file mode 100644 index 5146862..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb14.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromWKB - point, SRID -:memory: #use in-memory database -SELECT BdPolyFromWKB(AsBinary(GeomFromText("Point(1,2)")), 4326); -1 # rows (not including the header row) -1 # columns -BdPolyFromWKB(AsBinary(GeomFromText("Point(1,2)")), 4326) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb15.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb15.testcase deleted file mode 100644 index 5cbd9e4..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb15.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromWKB -:memory: #use in-memory database -SELECT AsText(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')))); -1 # rows (not including the header row) -1 # columns -AsText(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')))) -POLYGON((0 0, 0 10, 10 10, 10 0, 0 0), (2 2, 8 2, 8 8, 2 8, 2 2)) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb16.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb16.testcase deleted file mode 100644 index 3a2de2b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb16.testcase +++ /dev/null @@ -1,8 +0,0 @@ -BdPolyFromWKB -:memory: #use in-memory database -SELECT AsEwkt(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')), 4326)); -1 # rows (not including the header row) -1 # columns -AsEwkt(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')), 4326)) -SRID=4326;POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2)) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb17.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb17.testcase deleted file mode 100644 index 697f59a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb17.testcase +++ /dev/null @@ -1,8 +0,0 @@ -BdPolyFromWKB - zeroblob -:memory: #use in-memory database -SELECT BdPolyFromWKB(zeroblob(25)); -1 # rows (not including the header row) -1 # columns -BdPolyFromWKB(zeroblob(25)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb18.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb18.testcase deleted file mode 100644 index 48962dd..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb18.testcase +++ /dev/null @@ -1,8 +0,0 @@ -BdPolyFromWKB - zeroblob, invalid SRID -:memory: #use in-memory database -SELECT BdPolyFromWKB(zeroblob(25), 'a'); -1 # rows (not including the header row) -1 # columns -BdPolyFromWKB(zeroblob(25), 'a') -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb19.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb19.testcase deleted file mode 100644 index b700d3b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb19.testcase +++ /dev/null @@ -1,8 +0,0 @@ -BdPolyFromWKB - zeroblob, SRID -:memory: #use in-memory database -SELECT BdPolyFromWKB(zeroblob(25), 4326); -1 # rows (not including the header row) -1 # columns -BdPolyFromWKB(zeroblob(25), 4326) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb2.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb2.testcase deleted file mode 100644 index 5713210..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb2.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromWKB - SRID -:memory: #use in-memory database -SELECT AsEWkt(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')), 4326)); -1 # rows (not including the header row) -1 # columns -AsEWkt(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')), 4326)) -SRID=4326;POLYGON((0 0,0 1,1 1,1 0,0 0)) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb3.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb3.testcase deleted file mode 100644 index a6a6683..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb3.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromWKB - non-text, no SRID -:memory: #use in-memory database -SELECT BdPolyFromWKB(26); -1 # rows (not including the header row) -1 # columns -BdPolyFromWKB(26) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb4.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb4.testcase deleted file mode 100644 index b507e4b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb4.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromWKB - non-text, SRID -:memory: #use in-memory database -SELECT BdPolyFromWKB(26, 4326); -1 # rows (not including the header row) -1 # columns -BdPolyFromWKB(26, 4326) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb5.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb5.testcase deleted file mode 100644 index d913c47..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb5.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromWKB - null, SRID -:memory: #use in-memory database -SELECT BdPolyFromWKB(null, 4326); -1 # rows (not including the header row) -1 # columns -BdPolyFromWKB(null, 4326) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb6.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb6.testcase deleted file mode 100644 index c9cde9c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb6.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromWKB - null, no SRID -:memory: #use in-memory database -SELECT BdPolyFromWKB(null); -1 # rows (not including the header row) -1 # columns -BdPolyFromWKB(null) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb7.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb7.testcase deleted file mode 100644 index 1269110..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb7.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromWKB - zeroblob(58), no SRID -:memory: #use in-memory database -SELECT BdPolyFromWKB(zeroblob(58)); -1 # rows (not including the header row) -1 # columns -BdPolyFromWKB(zeroblob(58)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb8.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb8.testcase deleted file mode 100644 index b943ee0..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb8.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromWKB - zeroblob(58), SRID -:memory: #use in-memory database -SELECT BdPolyFromWKB(zeroblob(58), 4); -1 # rows (not including the header row) -1 # columns -BdPolyFromWKB(zeroblob(58), 4) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb9.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb9.testcase deleted file mode 100644 index fe99f06..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb9.testcase +++ /dev/null @@ -1,9 +0,0 @@ -BdPolyFromWKB - point, SRID -:memory: #use in-memory database -SELECT BdPolyFromWKB("Point(1 2)", 4); -1 # rows (not including the header row) -1 # columns -BdPolyFromWKB("Point(1 2)", 4) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary1.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary1.testcase deleted file mode 100644 index ab329fe..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/boundary1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Boundary - Point -:memory: #use in-memory database -SELECT AsText(Boundary(GeomFromText("POINT(1 2)"))) -1 # rows (not including the header row) -1 # columns -AsText(Boundary(GeomFromText("POINT(1 2)"))) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary2.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary2.testcase deleted file mode 100644 index c20806d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/boundary2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Boundary - non-blob -:memory: #use in-memory database -SELECT Boundary("hello") -1 # rows (not including the header row) -1 # columns -Boundary("hello") -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary3.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary3.testcase deleted file mode 100644 index 803be32..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/boundary3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Boundary - bad blob -:memory: #use in-memory database -SELECT Boundary(zeroblob(100)) -1 # rows (not including the header row) -1 # columns -Boundary(zeroblob(100)) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary4.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary4.testcase deleted file mode 100644 index 6019c9d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/boundary4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Boundary - open linestring -:memory: #use in-memory database -SELECT AsText(Boundary(GeomFromText("LINESTRING(1 2, 4 -3, 0 -1)"))) -1 # rows (not including the header row) -1 # columns -AsText(Boundary(GeomFromText("LINESTRING(1 2, 4 -3, 0 -1)"))) -MULTIPOINT(1 2, 0 -1) diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary5.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary5.testcase deleted file mode 100644 index a4685f6..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/boundary5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Boundary - closed linestring -:memory: #use in-memory database -SELECT AsText(Boundary(GeomFromText("LINESTRING(1 2, 4 -3, 0 -1, 1 2)"))) -1 # rows (not including the header row) -1 # columns -AsText(Boundary(GeomFromText("LINESTRING(1 2, 4 -3, 0 -1, 1 2)"))) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary6.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary6.testcase deleted file mode 100644 index e487807..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/boundary6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Boundary - open linestringZ -:memory: #use in-memory database -SELECT AsText(Boundary(GeomFromText("LINESTRINGZ(1 2 3, 4 -3 6, 2 -1 -4)"))) -1 # rows (not including the header row) -1 # columns -AsText(Boundary(GeomFromText("LINESTRINGZ(1 2 3, 4 -3 6, 2 -1 -4)"))) -MULTIPOINT Z(1 2 3, 2 -1 -4) diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary7.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary7.testcase deleted file mode 100644 index 55a1f9c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/boundary7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Boundary - open linestringZM -:memory: #use in-memory database -SELECT AsText(Boundary(GeomFromText("LINESTRINGZM(1 2 3 5, 4 -3 6 -3, 2 -1 -4 8)"))) -1 # rows (not including the header row) -1 # columns -AsText(Boundary(GeomFromText("LINESTRINGZM(1 2 3 5, 4 -3 6 -3, 2 -1 -4 8)"))) -MULTIPOINT ZM(1 2 3 0, 2 -1 -4 0) diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary8.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary8.testcase deleted file mode 100644 index eb1aee1..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/boundary8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Boundary - open linestringM -:memory: #use in-memory database -SELECT AsText(Boundary(GeomFromText("LINESTRINGM(1 2 3, 4 -3 6, 2 -1 -4)"))) -1 # rows (not including the header row) -1 # columns -AsText(Boundary(GeomFromText("LINESTRINGM(1 2 3, 4 -3 6, 2 -1 -4)"))) -MULTIPOINT M(1 2 0, 2 -1 0) diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary9.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary9.testcase deleted file mode 100644 index db78852..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/boundary9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -boundary - toxic polygon -:memory: #use in-memory database -SELECT AsText(Boundary(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) -1 # rows (not including the header row) -1 # columns -AsText(Boundary(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) -LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5, 136 -35) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer1.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer1.testcase deleted file mode 100644 index 5d2e95b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buffer1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -buffer1 -:memory: #use in-memory database -SELECT AsText(Buffer(GeomFromText("LINESTRING(0 0, 1 0)"), 0.2)); -1 # rows (not including the header row) -1 # columns -AsText(Buffer(GeomFromText("LINESTRING(0 0, 1 0)"), 0.2)) -POLYGON((1 0.2, 1.010467 0.199726, 1.020906 0.198904, 1.031287 0.197538, 1.041582 0.19563, 1.051764 0.193185, 1.061803 0.190211, 1.071674 0.186716, 1.081347 0.182709, 1.090798 0.178201, 1.1 0.173205, 1.108928 0.167734, 1.117557 0.161803, 1.125864 0.155429, 1.133826 0.148629, 1.141421 0.141421, 1.148629 0.133826, 1.155429 0.125864, 1.161803 0.117557, 1.167734 0.108928, 1.173205 0.1, 1.178201 0.090798, 1.182709 0.081347, 1.186716 0.071674, 1.190211 0.061803, 1.193185 0.051764, 1.19563 0.041582, 1.197538 0.031287, 1.198904 0.020906, 1.199726 0.010467, 1.2 0, 1.199726 -0.010467, 1.198904 -0.020906, 1.197538 -0.031287, 1.19563 -0.041582, 1.193185 -0.051764, 1.190211 -0.061803, 1.186716 -0.071674, 1.182709 -0.081347, 1.178201 -0.090798, 1.173205 -0.1, 1.167734 -0.108928, 1.161803 -0.117557, 1.155429 -0.125864, 1.148629 -0.133826, 1.141421 -0.141421, 1.133826 -0.148629, 1.125864 -0.155429, 1.117557 -0.161803, 1.108928 -0.167734, 1.1 -0.173205, 1.090798 -0.178201, 1.081347 -0.182709, 1.071674 -0.186716, 1.061803 -0.190211, 1.051764 -0.193185, 1.041582 -0.19563, 1.031287 -0.197538, 1.020906 -0.198904, 1.010467 -0.199726, 1 -0.2, 0 -0.2, -0.010467 -0.199726, -0.020906 -0.198904, -0.031287 -0.197538, -0.041582 -0.19563, -0.051764 -0.193185, -0.061803 -0.190211, -0.071674 -0.186716, -0.081347 -0.182709, -0.090798 -0.178201, -0.1 -0.173205, -0.108928 -0.167734, -0.117557 -0.161803, -0.125864 -0.155429, -0.133826 -0.148629, -0.141421 -0.141421, -0.148629 -0.133826, -0.155429 -0.125864, -0.161803 -0.117557, -0.167734 -0.108928, -0.173205 -0.1, -0.178201 -0.090798, -0.182709 -0.081347, -0.186716 -0.071674, -0.190211 -0.061803, -0.193185 -0.051764, -0.19563 -0.041582, -0.197538 -0.031287, -0.198904 -0.020906, -0.199726 -0.010467, -0.2 0, -0.199726 0.010467, -0.198904 0.020906, -0.197538 0.031287, -0.19563 0.041582, -0.193185 0.051764, -0.190211 0.061803, -0.186716 0.071674, -0.182709 0.081347, -0.178201 0.090798, -0.173205 0.1, -0.167734 0.108928, -0.161803 0.117557, -0.155429 0.125864, -0.148629 0.133826, -0.141421 0.141421, -0.133826 0.148629, -0.125864 0.155429, -0.117557 0.161803, -0.108928 0.167734, -0.1 0.173205, -0.090798 0.178201, -0.081347 0.182709, -0.071674 0.186716, -0.061803 0.190211, -0.051764 0.193185, -0.041582 0.19563, -0.031287 0.197538, -0.020906 0.198904, -0.010467 0.199726, 0 0.2, 1 0.2)) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer10.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer10.testcase deleted file mode 100644 index a8ce4df..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buffer10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -buffer - linestringzm -:memory: #use in-memory database -SELECT AsText(Buffer(GeomFromText("LINESTRINGZM(1 2 1 4, 4 6 3 4)"), 1)) -1 # rows (not including the header row) -1 # columns -AsText(Buffer(GeomFromText("LINESTRINGZM(1 2 1 4, 4 6 3 4)"), 1)) -POLYGON ZM((3.2 6.6 0 0, 3.232498 6.641046 0 0, 3.2671 6.680336 0 0, 3.30371 6.717761 0 0, 3.342229 6.753218 0 0, 3.382551 6.786611 0 0, 3.424565 6.817848 0 0, 3.468156 6.846843 0 0, 3.513206 6.873517 0 0, 3.559589 6.897796 0 0, 3.60718 6.919615 0 0, 3.655847 6.938914 0 0, 3.705458 6.955638 0 0, 3.755875 6.969744 0 0, 3.806963 6.981191 0 0, 3.858579 6.989949 0 0, 3.910582 6.995994 0 0, 3.962831 6.999309 0 0, 4.015182 6.999885 0 0, 4.067491 6.99772 0 0, 4.119615 6.99282 0 0, 4.171412 6.9852 0 0, 4.222738 6.974878 0 0, 4.273454 6.961885 0 0, 4.32342 6.946255 0 0, 4.3725 6.928032 0 0, 4.420559 6.907265 0 0, 4.467465 6.884011 0 0, 4.51309 6.858335 0 0, 4.557309 6.830305 0 0, 4.6 6.8 0 0, 4.641046 6.767502 0 0, 4.680336 6.7329 0 0, 4.717761 6.69629 0 0, 4.753218 6.657771 0 0, 4.786611 6.617449 0 0, 4.817848 6.575435 0 0, 4.846843 6.531844 0 0, 4.873517 6.486794 0 0, 4.897796 6.440411 0 0, 4.919615 6.39282 0 0, 4.938914 6.344153 0 0, 4.955638 6.294542 0 0, 4.969744 6.244125 0 0, 4.981191 6.193037 0 0, 4.989949 6.141421 0 0, 4.995994 6.089418 0 0, 4.999309 6.037169 0 0, 4.999885 5.984818 0 0, 4.99772 5.932509 0 0, 4.99282 5.880385 0 0, 4.9852 5.828588 0 0, 4.974878 5.777262 0 0, 4.961885 5.726546 0 0, 4.946255 5.67658 0 0, 4.928032 5.6275 0 0, 4.907265 5.579441 0 0, 4.884011 5.532535 0 0, 4.858335 5.48691 0 0, 4.830305 5.442691 0 0, 4.8 5.4 0 0, 1.8 1.4 0 0, 1.767502 1.358954 0 0, 1.7329 1.319664 0 0, 1.69629 1.282239 0 0, 1.657771 1.246782 0 0, 1.617449 1.213389 0 0, 1.575435 1.182152 0 0, 1.531844 1.153157 0 0, 1.486794 1.126483 0 0, 1.440411 1.102204 0 0, 1.39282 1.080385 0 0, 1.344153 1.061086 0 0, 1.294542 1.044362 0 0, 1.244125 1.030256 0 0, 1.193037 1.018809 0 0, 1.141421 1.010051 0 0, 1.089418 1.004006 0 0, 1.037169 1.000691 0 0, 0.984818 1.000115 0 0, 0.932509 1.00228 0 0, 0.880385 1.00718 0 0, 0.828588 1.0148 0 0, 0.777262 1.025122 0 0, 0.726546 1.038115 0 0, 0.67658 1.053745 0 0, 0.6275 1.071968 0 0, 0.579441 1.092735 0 0, 0.532535 1.115989 0 0, 0.48691 1.141665 0 0, 0.442691 1.169695 0 0, 0.4 1.2 0 0, 0.358954 1.232498 0 0, 0.319664 1.2671 0 0, 0.282239 1.30371 0 0, 0.246782 1.342229 0 0, 0.213389 1.382551 0 0, 0.182152 1.424565 0 0, 0.153157 1.468156 0 0, 0.126483 1.513206 0 0, 0.102204 1.559589 0 0, 0.080385 1.60718 0 0, 0.061086 1.655847 0 0, 0.044362 1.705458 0 0, 0.030256 1.755875 0 0, 0.018809 1.806963 0 0, 0.010051 1.858579 0 0, 0.004006 1.910582 0 0, 0.000691 1.962831 0 0, 0.000115 2.015182 0 0, 0.00228 2.067491 0 0, 0.00718 2.119615 0 0, 0.0148 2.171412 0 0, 0.025122 2.222738 0 0, 0.038115 2.273454 0 0, 0.053745 2.32342 0 0, 0.071968 2.3725 0 0, 0.092735 2.420559 0 0, 0.115989 2.467465 0 0, 0.141665 2.51309 0 0, 0.169695 2.557309 0 0, 0.2 2.6 0 0, 3.2 6.6 0 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer2.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer2.testcase deleted file mode 100644 index 59680f6..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buffer2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -buffer2 -:memory: #use in-memory database -SELECT AsText(Buffer(GeomFromText("LINESTRING(0 0, 100 0)"), 1)); -1 # rows (not including the header row) -1 # columns -AsText(Buffer(GeomFromText("LINESTRING(0 0, 100 0)"), 1)) -POLYGON((100 1, 100.052336 0.99863, 100.104528 0.994522, 100.156434 0.987688, 100.207912 0.978148, 100.258819 0.965926, 100.309017 0.951057, 100.358368 0.93358, 100.406737 0.913545, 100.45399 0.891007, 100.5 0.866025, 100.544639 0.838671, 100.587785 0.809017, 100.62932 0.777146, 100.669131 0.743145, 100.707107 0.707107, 100.743145 0.669131, 100.777146 0.62932, 100.809017 0.587785, 100.838671 0.544639, 100.866025 0.5, 100.891007 0.45399, 100.913545 0.406737, 100.93358 0.358368, 100.951057 0.309017, 100.965926 0.258819, 100.978148 0.207912, 100.987688 0.156434, 100.994522 0.104528, 100.99863 0.052336, 101 0, 100.99863 -0.052336, 100.994522 -0.104528, 100.987688 -0.156434, 100.978148 -0.207912, 100.965926 -0.258819, 100.951057 -0.309017, 100.93358 -0.358368, 100.913545 -0.406737, 100.891007 -0.45399, 100.866025 -0.5, 100.838671 -0.544639, 100.809017 -0.587785, 100.777146 -0.62932, 100.743145 -0.669131, 100.707107 -0.707107, 100.669131 -0.743145, 100.62932 -0.777146, 100.587785 -0.809017, 100.544639 -0.838671, 100.5 -0.866025, 100.45399 -0.891007, 100.406737 -0.913545, 100.358368 -0.93358, 100.309017 -0.951057, 100.258819 -0.965926, 100.207912 -0.978148, 100.156434 -0.987688, 100.104528 -0.994522, 100.052336 -0.99863, 100 -1, 0 -1, -0.052336 -0.99863, -0.104528 -0.994522, -0.156434 -0.987688, -0.207912 -0.978148, -0.258819 -0.965926, -0.309017 -0.951057, -0.358368 -0.93358, -0.406737 -0.913545, -0.45399 -0.891007, -0.5 -0.866025, -0.544639 -0.838671, -0.587785 -0.809017, -0.62932 -0.777146, -0.669131 -0.743145, -0.707107 -0.707107, -0.743145 -0.669131, -0.777146 -0.62932, -0.809017 -0.587785, -0.838671 -0.544639, -0.866025 -0.5, -0.891007 -0.45399, -0.913545 -0.406737, -0.93358 -0.358368, -0.951057 -0.309017, -0.965926 -0.258819, -0.978148 -0.207912, -0.987688 -0.156434, -0.994522 -0.104528, -0.99863 -0.052336, -1 0, -0.99863 0.052336, -0.994522 0.104528, -0.987688 0.156434, -0.978148 0.207912, -0.965926 0.258819, -0.951057 0.309017, -0.93358 0.358368, -0.913545 0.406737, -0.891007 0.45399, -0.866025 0.5, -0.838671 0.544639, -0.809017 0.587785, -0.777146 0.62932, -0.743145 0.669131, -0.707107 0.707107, -0.669131 0.743145, -0.62932 0.777146, -0.587785 0.809017, -0.544639 0.838671, -0.5 0.866025, -0.45399 0.891007, -0.406737 0.913545, -0.358368 0.93358, -0.309017 0.951057, -0.258819 0.965926, -0.207912 0.978148, -0.156434 0.987688, -0.104528 0.994522, -0.052336 0.99863, 0 1, 100 1)) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer3.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer3.testcase deleted file mode 100644 index 110281f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buffer3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -buffer3 -:memory: #use in-memory database -SELECT Buffer("foo", 1); -1 # rows (not including the header row) -1 # columns -Buffer("foo", 1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer4.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer4.testcase deleted file mode 100644 index 92abc64..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buffer4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -buffer4 -:memory: #use in-memory database -SELECT Buffer(GeomFromText("LINESTRING(0 0, 100 0)"), "foo"); -1 # rows (not including the header row) -1 # columns -Buffer(GeomFromText("LINESTRING(0 0, 100 0)"), "foo") -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer5.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer5.testcase deleted file mode 100644 index c5029e2..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buffer5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -buffer5 -:memory: #use in-memory database -SELECT Buffer(zeroblob(40), 1); -1 # rows (not including the header row) -1 # columns -Buffer(zeroblob(40), 1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer6.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer6.testcase deleted file mode 100644 index 01ab4b6..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buffer6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -buffer6 -:memory: #use in-memory database -SELECT Buffer(GeomFromText("LINESTRING()"), 1); -1 # rows (not including the header row) -1 # columns -Buffer(GeomFromText("LINESTRING()"), 1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer7.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer7.testcase deleted file mode 100644 index 1522616..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buffer7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -buffer7 -:memory: #use in-memory database -SELECT AsText(ST_ForceLHR(Buffer(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 1))); -1 # rows (not including the header row) -1 # columns -AsText(ST_ForceLHR(Buffer(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 1))) -POLYGON((136.529999 -34.152002, 136.529999 -34.152002, 136.574402 -34.181426, 136.617174 -34.213174, 136.658196 -34.247153, 136.69735 -34.283269, 136.734525 -34.321419, 136.769617 -34.361494, 136.802524 -34.40338, 136.833155 -34.44696, 136.861421 -34.492109, 136.887243 -34.538698, 136.910548 -34.586597, 136.931269 -34.635669, 136.949348 -34.685774, 136.964733 -34.736771, 136.977381 -34.788515, 136.987256 -34.840859, 136.994329 -34.893654, 136.998581 -34.946752, 137 -35, 137 -35.2, 136.998646 -35.252013, 136.994589 -35.303886, 136.987839 -35.355478, 136.978415 -35.406648, 136.966342 -35.457259, 136.951653 -35.507174, 136.934388 -35.556257, 136.914593 -35.604375, 136.892322 -35.651399, 136.867635 -35.697201, 136.8406 -35.741657, 136.811289 -35.784646, 136.779781 -35.826052, 136.746162 -35.865764, 136.710524 -35.903673, 136.672961 -35.939678, 136.633577 -35.97368, 136.592478 -36.005587, 136.549774 -36.035313, 136.505583 -36.062778, 136.460022 -36.087907, 136.413216 -36.110633, 136.365292 -36.130893, 136.316378 -36.148633, 136.266608 -36.163805, 136.216117 -36.176368, 136.16504 -36.186287, 136.113516 -36.193536, 136.061685 -36.198096, 136.009687 -36.199953, 135.957663 -36.199103, 135.905754 -36.195549, 135.854099 -36.189299, 135.80284 -36.180371, 135.752114 -36.168789, 135.70206 -36.154584, 135.652812 -36.137795, 135.604504 -36.118468, 135.557266 -36.096653, 135.511228 -36.072411, 135.466512 -36.045808, 135.423241 -36.016914, 135.381531 -35.985809, 135.341495 -35.952577, 134.541495 -35.252577, 134.503051 -35.21712, 134.466512 -35.179703, 134.43198 -35.140426, 134.399548 -35.099397, 134.369306 -35.056729, 134.341336 -35.012539, 134.315714 -34.966946, 134.292511 -34.920076, 134.27179 -34.872058, 134.253608 -34.823021, 134.238015 -34.773102, 134.225052 -34.722435, 134.214757 -34.67116, 134.207156 -34.619416, 134.20227 -34.567346, 134.200114 -34.515092, 134.200692 -34.462797, 134.204004 -34.410603, 134.21004 -34.358654, 134.218783 -34.307091, 134.230211 -34.256056, 134.24429 -34.205689, 134.260984 -34.156126, 134.280246 -34.107504, 134.302024 -34.059955, 134.326258 -34.01361, 134.352882 -33.968595, 134.381823 -33.925034, 134.413001 -33.883046, 134.446332 -33.842744, 134.481725 -33.804241, 134.519082 -33.76764, 134.558301 -33.733043, 134.599276 -33.700543, 134.641894 -33.670231, 134.686038 -33.642187, 134.731588 -33.61649, 134.778419 -33.593209, 134.826403 -33.572409, 134.875409 -33.554145, 134.925303 -33.538469, 134.975949 -33.525423, 135.027207 -33.515042, 135.078937 -33.507355, 135.130999 -33.502383, 135.18325 -33.50014, 135.235546 -33.500632, 135.287745 -33.503857, 135.339704 -33.509807, 135.391281 -33.518465, 135.442335 -33.529807, 135.492726 -33.543804, 135.542316 -33.560415, 135.59097 -33.579597, 135.638555 -33.601296, 135.68494 -33.625453, 135.729999 -33.652002, 136.529999 -34.152002, 136.529999 -34.152002), (135.132863 -35.497419, 135.165007 -35.499388, 135.217358 -35.499849, 135.269663 -35.497571, 135.321776 -35.492558, 135.373556 -35.484824, 135.42486 -35.474391, 135.475547 -35.461288, 135.525479 -35.445549, 135.574519 -35.427219, 135.622533 -35.406347, 135.669389 -35.382992, 135.714958 -35.357216, 135.759115 -35.32909, 135.80174 -35.298692, 135.842716 -35.266105, 135.88193 -35.231418, 135.919275 -35.194726, 135.954648 -35.15613, 135.987953 -35.115736, 136.019098 -35.073653, 136.047998 -35.029999, 136.074574 -34.984892, 136.098753 -34.938456, 136.120468 -34.890818, 136.13966 -34.842108, 136.156277 -34.792462, 136.170273 -34.742013, 136.181609 -34.690901, 136.190255 -34.639266, 136.196187 -34.587249, 136.199388 -34.534993, 136.199849 -34.482642, 136.197571 -34.430337, 136.192558 -34.378224, 136.184824 -34.326444, 136.174391 -34.27514, 136.161288 -34.224453, 136.145549 -34.174521, 136.127219 -34.125481, 136.106347 -34.077467, 136.082992 -34.030611, 136.067137 -34.002581, 136.034993 -34.000612, 135.982642 -34.000151, 135.930337 -34.002429, 135.878224 -34.007442, 135.826444 -34.015176, 135.77514 -34.025609, 135.724453 -34.038712, 135.674521 -34.054451, 135.625481 -34.072781, 135.577467 -34.093653, 135.530611 -34.117008, 135.485042 -34.142784, 135.440885 -34.17091, 135.39826 -34.201308, 135.357284 -34.233895, 135.31807 -34.268582, 135.280725 -34.305274, 135.245352 -34.34387, 135.212047 -34.384264, 135.180902 -34.426347, 135.152002 -34.470001, 135.125426 -34.515108, 135.101247 -34.561544, 135.079532 -34.609182, 135.06034 -34.657892, 135.043723 -34.707538, 135.029727 -34.757987, 135.018391 -34.809099, 135.009745 -34.860734, 135.003813 -34.912751, 135.000612 -34.965007, 135.000151 -35.017358, 135.002429 -35.069663, 135.007442 -35.121776, 135.015176 -35.173556, 135.025609 -35.22486, 135.038712 -35.275547, 135.054451 -35.325479, 135.072781 -35.374519, 135.093653 -35.422533, 135.117008 -35.469389, 135.132863 -35.497419)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer8.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer8.testcase deleted file mode 100644 index a525c3c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buffer8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -buffer - linestringz -:memory: #use in-memory database -SELECT AsText(Buffer(GeomFromText("LINESTRINGZ(1 2 1, 4 6 3)"), 1)) -1 # rows (not including the header row) -1 # columns -AsText(Buffer(GeomFromText("LINESTRINGZ(1 2 1, 4 6 3)"), 1)) -POLYGON Z((3.2 6.6 0, 3.232498 6.641046 0, 3.2671 6.680336 0, 3.30371 6.717761 0, 3.342229 6.753218 0, 3.382551 6.786611 0, 3.424565 6.817848 0, 3.468156 6.846843 0, 3.513206 6.873517 0, 3.559589 6.897796 0, 3.60718 6.919615 0, 3.655847 6.938914 0, 3.705458 6.955638 0, 3.755875 6.969744 0, 3.806963 6.981191 0, 3.858579 6.989949 0, 3.910582 6.995994 0, 3.962831 6.999309 0, 4.015182 6.999885 0, 4.067491 6.99772 0, 4.119615 6.99282 0, 4.171412 6.9852 0, 4.222738 6.974878 0, 4.273454 6.961885 0, 4.32342 6.946255 0, 4.3725 6.928032 0, 4.420559 6.907265 0, 4.467465 6.884011 0, 4.51309 6.858335 0, 4.557309 6.830305 0, 4.6 6.8 0, 4.641046 6.767502 0, 4.680336 6.7329 0, 4.717761 6.69629 0, 4.753218 6.657771 0, 4.786611 6.617449 0, 4.817848 6.575435 0, 4.846843 6.531844 0, 4.873517 6.486794 0, 4.897796 6.440411 0, 4.919615 6.39282 0, 4.938914 6.344153 0, 4.955638 6.294542 0, 4.969744 6.244125 0, 4.981191 6.193037 0, 4.989949 6.141421 0, 4.995994 6.089418 0, 4.999309 6.037169 0, 4.999885 5.984818 0, 4.99772 5.932509 0, 4.99282 5.880385 0, 4.9852 5.828588 0, 4.974878 5.777262 0, 4.961885 5.726546 0, 4.946255 5.67658 0, 4.928032 5.6275 0, 4.907265 5.579441 0, 4.884011 5.532535 0, 4.858335 5.48691 0, 4.830305 5.442691 0, 4.8 5.4 0, 1.8 1.4 0, 1.767502 1.358954 0, 1.7329 1.319664 0, 1.69629 1.282239 0, 1.657771 1.246782 0, 1.617449 1.213389 0, 1.575435 1.182152 0, 1.531844 1.153157 0, 1.486794 1.126483 0, 1.440411 1.102204 0, 1.39282 1.080385 0, 1.344153 1.061086 0, 1.294542 1.044362 0, 1.244125 1.030256 0, 1.193037 1.018809 0, 1.141421 1.010051 0, 1.089418 1.004006 0, 1.037169 1.000691 0, 0.984818 1.000115 0, 0.932509 1.00228 0, 0.880385 1.00718 0, 0.828588 1.0148 0, 0.777262 1.025122 0, 0.726546 1.038115 0, 0.67658 1.053745 0, 0.6275 1.071968 0, 0.579441 1.092735 0, 0.532535 1.115989 0, 0.48691 1.141665 0, 0.442691 1.169695 0, 0.4 1.2 0, 0.358954 1.232498 0, 0.319664 1.2671 0, 0.282239 1.30371 0, 0.246782 1.342229 0, 0.213389 1.382551 0, 0.182152 1.424565 0, 0.153157 1.468156 0, 0.126483 1.513206 0, 0.102204 1.559589 0, 0.080385 1.60718 0, 0.061086 1.655847 0, 0.044362 1.705458 0, 0.030256 1.755875 0, 0.018809 1.806963 0, 0.010051 1.858579 0, 0.004006 1.910582 0, 0.000691 1.962831 0, 0.000115 2.015182 0, 0.00228 2.067491 0, 0.00718 2.119615 0, 0.0148 2.171412 0, 0.025122 2.222738 0, 0.038115 2.273454 0, 0.053745 2.32342 0, 0.071968 2.3725 0, 0.092735 2.420559 0, 0.115989 2.467465 0, 0.141665 2.51309 0, 0.169695 2.557309 0, 0.2 2.6 0, 3.2 6.6 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer9.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer9.testcase deleted file mode 100644 index d3f1eef..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buffer9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -buffer - linestringm -:memory: #use in-memory database -SELECT AsText(Buffer(GeomFromText("LINESTRINGM(1 2 1, 4 6 3)"), 1)) -1 # rows (not including the header row) -1 # columns -AsText(Buffer(GeomFromText("LINESTRINGM(1 2 1, 4 6 3)"), 1)) -POLYGON M((3.2 6.6 0, 3.232498 6.641046 0, 3.2671 6.680336 0, 3.30371 6.717761 0, 3.342229 6.753218 0, 3.382551 6.786611 0, 3.424565 6.817848 0, 3.468156 6.846843 0, 3.513206 6.873517 0, 3.559589 6.897796 0, 3.60718 6.919615 0, 3.655847 6.938914 0, 3.705458 6.955638 0, 3.755875 6.969744 0, 3.806963 6.981191 0, 3.858579 6.989949 0, 3.910582 6.995994 0, 3.962831 6.999309 0, 4.015182 6.999885 0, 4.067491 6.99772 0, 4.119615 6.99282 0, 4.171412 6.9852 0, 4.222738 6.974878 0, 4.273454 6.961885 0, 4.32342 6.946255 0, 4.3725 6.928032 0, 4.420559 6.907265 0, 4.467465 6.884011 0, 4.51309 6.858335 0, 4.557309 6.830305 0, 4.6 6.8 0, 4.641046 6.767502 0, 4.680336 6.7329 0, 4.717761 6.69629 0, 4.753218 6.657771 0, 4.786611 6.617449 0, 4.817848 6.575435 0, 4.846843 6.531844 0, 4.873517 6.486794 0, 4.897796 6.440411 0, 4.919615 6.39282 0, 4.938914 6.344153 0, 4.955638 6.294542 0, 4.969744 6.244125 0, 4.981191 6.193037 0, 4.989949 6.141421 0, 4.995994 6.089418 0, 4.999309 6.037169 0, 4.999885 5.984818 0, 4.99772 5.932509 0, 4.99282 5.880385 0, 4.9852 5.828588 0, 4.974878 5.777262 0, 4.961885 5.726546 0, 4.946255 5.67658 0, 4.928032 5.6275 0, 4.907265 5.579441 0, 4.884011 5.532535 0, 4.858335 5.48691 0, 4.830305 5.442691 0, 4.8 5.4 0, 1.8 1.4 0, 1.767502 1.358954 0, 1.7329 1.319664 0, 1.69629 1.282239 0, 1.657771 1.246782 0, 1.617449 1.213389 0, 1.575435 1.182152 0, 1.531844 1.153157 0, 1.486794 1.126483 0, 1.440411 1.102204 0, 1.39282 1.080385 0, 1.344153 1.061086 0, 1.294542 1.044362 0, 1.244125 1.030256 0, 1.193037 1.018809 0, 1.141421 1.010051 0, 1.089418 1.004006 0, 1.037169 1.000691 0, 0.984818 1.000115 0, 0.932509 1.00228 0, 0.880385 1.00718 0, 0.828588 1.0148 0, 0.777262 1.025122 0, 0.726546 1.038115 0, 0.67658 1.053745 0, 0.6275 1.071968 0, 0.579441 1.092735 0, 0.532535 1.115989 0, 0.48691 1.141665 0, 0.442691 1.169695 0, 0.4 1.2 0, 0.358954 1.232498 0, 0.319664 1.2671 0, 0.282239 1.30371 0, 0.246782 1.342229 0, 0.213389 1.382551 0, 0.182152 1.424565 0, 0.153157 1.468156 0, 0.126483 1.513206 0, 0.102204 1.559589 0, 0.080385 1.60718 0, 0.061086 1.655847 0, 0.044362 1.705458 0, 0.030256 1.755875 0, 0.018809 1.806963 0, 0.010051 1.858579 0, 0.004006 1.910582 0, 0.000691 1.962831 0, 0.000115 2.015182 0, 0.00228 2.067491 0, 0.00718 2.119615 0, 0.0148 2.171412 0, 0.025122 2.222738 0, 0.038115 2.273454 0, 0.053745 2.32342 0, 0.071968 2.3725 0, 0.092735 2.420559 0, 0.115989 2.467465 0, 0.141665 2.51309 0, 0.169695 2.557309 0, 0.2 2.6 0, 3.2 6.6 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buildarea1.testcase b/src/spatialite/test/sql_stmt_geos_tests/buildarea1.testcase deleted file mode 100644 index d8591c5..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buildarea1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -buildarea - null arg -:memory: #use in-memory database -SELECT BuildArea(NULL) -1 # rows (not including the header row) -1 # columns -BuildArea(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buildarea2.testcase b/src/spatialite/test/sql_stmt_geos_tests/buildarea2.testcase deleted file mode 100644 index f20c6a6..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buildarea2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -buildarea - zeroblob arg -:memory: #use in-memory database -SELECT BuildArea(zeroblob(48)) -1 # rows (not including the header row) -1 # columns -BuildArea(zeroblob(48)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buildarea3.testcase b/src/spatialite/test/sql_stmt_geos_tests/buildarea3.testcase deleted file mode 100644 index ad8a630..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buildarea3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -buildarea - simple polygon -:memory: #use in-memory database -SELECT AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0), (10 0, 10 10), (10 10, 0 10), (0 10, 0 0))'))) -1 # rows (not including the header row) -1 # columns -AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0), (10 0, 10 10), (10 10, 0 10), (0 10, 0 0))'))) -POLYGON((10 0, 0 0, 0 10, 10 10, 10 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buildarea4.testcase b/src/spatialite/test/sql_stmt_geos_tests/buildarea4.testcase deleted file mode 100644 index 1fe1762..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buildarea4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -buildarea - polygon-hole -:memory: #use in-memory database -SELECT AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10), (10 10, 0 10, 0 0), (5 5, 6 5, 6 6), (6 6, 5 6, 5 5))'))) -1 # rows (not including the header row) -1 # columns -AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10), (10 10, 0 10, 0 0), (5 5, 6 5, 6 6), (6 6, 5 6, 5 5))'))) -POLYGON((10 10, 10 0, 0 0, 0 10, 10 10), (5 5, 6 5, 6 6, 5 6, 5 5)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buildarea5.testcase b/src/spatialite/test/sql_stmt_geos_tests/buildarea5.testcase deleted file mode 100644 index d569e5b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buildarea5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -buildarea - multipolygon -:memory: #use in-memory database -SELECT AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10), (10 10, 0 10, 0 0), (15 15, 16 15, 16 16), (16 16, 15 16, 15 15))'))) -1 # rows (not including the header row) -1 # columns -AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10), (10 10, 0 10, 0 0), (15 15, 16 15, 16 16), (16 16, 15 16, 15 15))'))) -MULTIPOLYGON(((10 10, 10 0, 0 0, 0 10, 10 10)), ((16 16, 16 15, 15 15, 15 16, 16 16))) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buildarea6.testcase b/src/spatialite/test/sql_stmt_geos_tests/buildarea6.testcase deleted file mode 100644 index f9e7860..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/buildarea6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -buildarea - not a polygon -:memory: #use in-memory database -SELECT AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0), (10 0, 10 10), (10 10, 0 10))'))) -1 # rows (not including the header row) -1 # columns -AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0), (10 0, 10 10), (10 10, 0 10))'))) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid1.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid1.testcase deleted file mode 100644 index 5a5630f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/centroid1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Centroid - polygon -:memory: #use in-memory database -SELECT astext(centroid(geomFromText("POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))", 4326))); -1 # rows (not including the header row) -1 # columns -astext(centroid(geomFromText("POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))", 4326))); -POINT(1 1) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid2.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid2.testcase deleted file mode 100644 index 1e06c95..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/centroid2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Centroid - point -:memory: #use in-memory database -SELECT astext(centroid(geomFromText("POINT(1,1)", 4326))); -1 # rows (not including the header row) -1 # columns -astext(centroid(geomFromText("POINT(1,1)", 4326))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid3.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid3.testcase deleted file mode 100644 index 625369b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/centroid3.testcase +++ /dev/null @@ -1,9 +0,0 @@ -Centroid - non-geometry -:memory: #use in-memory database -SELECT astext(centroid("foo")); -1 # rows (not including the header row) -1 # columns -astext(centroid("foo")) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid4.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid4.testcase deleted file mode 100644 index 9e06ede..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/centroid4.testcase +++ /dev/null @@ -1,9 +0,0 @@ -Centroid - toxic -:memory: #use in-memory database -SELECT astext(centroid(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))); -1 # rows (not including the header row) -1 # columns -astext(centroid(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) -POINT(135.733333 -34.9) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid5.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid5.testcase deleted file mode 100644 index ed6d925..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/centroid5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Centroid - zeroblob -:memory: #use in-memory database -SELECT centroid(zeroblob(40)); -1 # rows (not including the header row) -1 # columns -centroid(zeroblob(40)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid6.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid6.testcase deleted file mode 100644 index 0cc4286..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/centroid6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Centroid - polygonZ (problem case - GEOS throws away the Z coordinates) -:memory: #use in-memory database -SELECT astext(centroid(geomFromText("POLYGONZ((0 0 1, 0 2 1, 2 2 1, 2 0 1, 0 0 1))"))) -1 # rows (not including the header row) -1 # columns -astext(centroid(geomFromText("POLYGONZ((0 0 1, 0 2 1, 2 2 1, 2 0 1, 0 0 1))"))) -POINT(1 1) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid7.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid7.testcase deleted file mode 100644 index a4c1c68..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/centroid7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Centroid - polygonZM (problem case - GEOS throws away the Z and M coordinates) -:memory: #use in-memory database -SELECT astext(centroid(geomFromText("POLYGONZM((0 0 1 4, 0 2 1 4, 2 2 1 4, 2 0 1 4, 0 0 1 4))"))) -1 # rows (not including the header row) -1 # columns -astext(centroid(geomFromText("POLYGONZM((0 0 1 4, 0 2 1 4, 2 2 1 4, 2 0 1 4, 0 0 1 4))"))) -POINT(1 1) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid8.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid8.testcase deleted file mode 100644 index 3a36769..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/centroid8.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Centroid - polygonM (problem case - GEOS throws away the M coordinates) -:memory: #use in-memory database -SELECT astext(centroid(geomFromText("POLYGONM((0 0 1, 0 2 1, 2 2 1, 2 0 1, 0 0 1))"))) -1 # rows (not including the header row) -1 # columns -astext(centroid(geomFromText("POLYGONM((0 0 1, 0 2 1, 2 2 1, 2 0 1, 0 0 1))"))) -POINT(1 1) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull1.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull1.testcase deleted file mode 100644 index 4a70677..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/convexhull1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -convex hull - points -:memory: #use in-memory database -SELECT AsText(ConvexHull(GeomFromText("MULTIPOINT(0 0, 1 0, 1 1, 2 1, 2 0, 10 0, 10 10, 0 10)"))) -1 # rows (not including the header row) -1 # columns -AsText(ConvexHull(GeomFromText("MULTIPOINT(0 0, 1 0, 1 1, 2 1, 2 0, 10 0, 10 10, 0 10)"))) -POLYGON((0 0, 0 10, 10 10, 10 0, 0 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull10.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull10.testcase deleted file mode 100644 index 15916ca..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/convexhull10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -convex hull - polygonM -:memory: #use in-memory database -SELECT AsText(ConvexHull(GeomFromText("POLYGONM((0 0 1, 1 0 2, 1 1 3, 2 1 4, 2 0 5, 10 0 6, 10 10 7, 0 10 2, 0 0 1))"))) -1 # rows (not including the header row) -1 # columns -AsText(ConvexHull(GeomFromText("POLYGONM((0 0 1, 1 0 2, 1 1 3, 2 1 4, 2 0 5, 10 0 6, 10 10 7, 0 10 2, 0 0 1))"))) -POLYGON M((0 0 0, 0 10 0, 10 10 0, 10 0 0, 0 0 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull2.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull2.testcase deleted file mode 100644 index 3cc3ddd..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/convexhull2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -convex hull - linestring -:memory: #use in-memory database -SELECT AsText(ConvexHull(GeomFromText("LINESTRING(0 0, 1 0, 1 1, 2 1, 2 0, 10 0, 10 10, 0 10)"))) -1 # rows (not including the header row) -1 # columns -AsText(ConvexHull(GeomFromText("LINESTRING(0 0, 1 0, 1 1, 2 1, 2 0, 10 0, 10 10, 0 10)"))) -POLYGON((0 0, 0 10, 10 10, 10 0, 0 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull3.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull3.testcase deleted file mode 100644 index fbc7690..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/convexhull3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -convex hull - polygon -:memory: #use in-memory database -SELECT AsText(ConvexHull(GeomFromText("POLYGON((0 0, 1 0, 1 1, 2 1, 2 0, 10 0, 10 10, 0 10, 0 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(ConvexHull(GeomFromText("POLYGON((0 0, 1 0, 1 1, 2 1, 2 0, 10 0, 10 10, 0 10, 0 0))"))) -POLYGON((0 0, 0 10, 10 10, 10 0, 0 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull4.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull4.testcase deleted file mode 100644 index 4955ee2..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/convexhull4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -convex hull - polygon without chip -:memory: #use in-memory database -SELECT AsText(ConvexHull(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(ConvexHull(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"))) -POLYGON((0 0, 0 10, 10 10, 10 0, 0 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull5.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull5.testcase deleted file mode 100644 index f615b0f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/convexhull5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -convex hull - zeroblob -:memory: #use in-memory database -SELECT ConvexHull(zeroblob(100)) -1 # rows (not including the header row) -1 # columns -ConvexHull(zeroblob(100)) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull6.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull6.testcase deleted file mode 100644 index 9aeec9a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/convexhull6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -convex hull - non-blob -:memory: #use in-memory database -SELECT ConvexHull(3.2) -1 # rows (not including the header row) -1 # columns -ConvexHull(3.2) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull7.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull7.testcase deleted file mode 100644 index 0a22d2a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/convexhull7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -convex hull - toxic polygon -:memory: #use in-memory database -SELECT AsText(ConvexHull(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) -1 # rows (not including the header row) -1 # columns -AsText(ConvexHull(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) -POLYGON((136 -35.2, 135.2 -34.5, 136 -35, 136 -35.2)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull8.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull8.testcase deleted file mode 100644 index 59bf176..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/convexhull8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -convex hull - polygonZ -:memory: #use in-memory database -SELECT AsText(ConvexHull(GeomFromText("POLYGONZ((0 0 1, 1 0 3, 1 1 5, 2 1 5, 2 0 3, 10 0 1, 10 10 2, 0 10 2, 0 0 1))"))) -1 # rows (not including the header row) -1 # columns -AsText(ConvexHull(GeomFromText("POLYGONZ((0 0 1, 1 0 3, 1 1 5, 2 1 5, 2 0 3, 10 0 1, 10 10 2, 0 10 2, 0 0 1))"))) -POLYGON Z((0 0 1, 0 10 2, 10 10 2, 10 0 1, 0 0 1)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull9.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull9.testcase deleted file mode 100644 index 85c9494..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/convexhull9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -convex hull - polygonZM -:memory: #use in-memory database -SELECT AsText(ConvexHull(GeomFromText("POLYGONZM((0 0 1 1, 1 0 3 2, 1 1 5 3, 2 1 5 4, 2 0 3 5, 10 0 1 6, 10 10 2 7, 0 10 2 2, 0 0 1 1))"))) -1 # rows (not including the header row) -1 # columns -AsText(ConvexHull(GeomFromText("POLYGONZM((0 0 1 1, 1 0 3 2, 1 1 5 3, 2 1 5 4, 2 0 3 5, 10 0 1 6, 10 10 2 7, 0 10 2 2, 0 0 1 1))"))) -POLYGON ZM((0 0 1 0, 0 10 2 0, 10 10 2 0, 10 0 1 0, 0 0 1 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference1.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference1.testcase deleted file mode 100644 index 4e2436a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/difference1.testcase +++ /dev/null @@ -1,9 +0,0 @@ -difference - two points -:memory: #use in-memory database -SELECT AsText(Difference(Makepoint(1,2), MakePoint(2,3))); -1 # rows (not including the header row) -1 # columns -AsText(Difference(Makepoint(1,2), MakePoint(2,3))) -POINT(1 2) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference10.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference10.testcase deleted file mode 100644 index 58e6239..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/difference10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -difference - XYM points -:memory: #use in-memory database -SELECT AsText(Difference(GeomFromText("POINTM(1 3 4)"), GeomFromText("POINTM(2 4 9)"))) -1 # rows (not including the header row) -1 # columns -AsText(Difference(GeomFromText("POINTM(1 3 4)"), GeomFromText("POINTM(2 4 9)"))) -POINT M(1 3 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference11.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference11.testcase deleted file mode 100644 index d321da1..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/difference11.testcase +++ /dev/null @@ -1,8 +0,0 @@ -difference - zeroblob second point -:memory: #use in-memory database -SELECT AsText(Difference(MakePoint(2,3),zeroblob(48))) -1 # rows (not including the header row) -1 # columns -AsText(Difference(MakePoint(2,3),zeroblob(48))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference12.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference12.testcase deleted file mode 100644 index 63d6135..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/difference12.testcase +++ /dev/null @@ -1,8 +0,0 @@ -difference - toxic second point -:memory: #use in-memory database -SELECT ST_Difference(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) -1 # rows (not including the header row) -1 # columns -ST_Difference(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference2.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference2.testcase deleted file mode 100644 index 473675f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/difference2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -difference - two common points -:memory: #use in-memory database -SELECT AsText(Difference(Makepoint(1,2), MakePoint(1,2))); -1 # rows (not including the header row) -1 # columns -AsText(Difference(Makepoint(1,2), MakePoint(1,2))) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference3.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference3.testcase deleted file mode 100644 index 0d4f3cb..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/difference3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -difference - null first point -:memory: #use in-memory database -SELECT AsText(Difference(null, MakePoint(2,3))); -1 # rows (not including the header row) -1 # columns -AsText(Difference(null, MakePoint(2,3))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference4.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference4.testcase deleted file mode 100644 index e94376b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/difference4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -difference - null second point -:memory: #use in-memory database -SELECT AsText(Difference(MakePoint(2,3), null)); -1 # rows (not including the header row) -1 # columns -AsText(Difference(MakePoint(2,3), null)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference6.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference6.testcase deleted file mode 100644 index a0975b4..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/difference6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -difference - zeroblob first point -:memory: #use in-memory database -SELECT AsText(Difference(zeroblob(48), MakePoint(2,3))); -1 # rows (not including the header row) -1 # columns -AsText(Difference(zeroblob(48), MakePoint(2,3))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference7.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference7.testcase deleted file mode 100644 index ad15cc6..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/difference7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -difference - toxic first point -:memory: #use in-memory database -SELECT AsText(Difference(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))); -1 # rows (not including the header row) -1 # columns -AsText(Difference(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference8.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference8.testcase deleted file mode 100644 index 546d753..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/difference8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -difference - XYZ points -:memory: #use in-memory database -SELECT AsText(Difference(GeomFromText("POINTZ(1 3 5)"), GeomFromText("POINTZ(2 4 6)"))) -1 # rows (not including the header row) -1 # columns -AsText(Difference(GeomFromText("POINTZ(1 3 5)"), GeomFromText("POINTZ(2 4 6)"))) -POINT Z(1 3 5) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference9.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference9.testcase deleted file mode 100644 index 052217a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/difference9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -difference - XYZM points -:memory: #use in-memory database -SELECT AsText(Difference(GeomFromText("POINTZM(1 3 5 4)"), GeomFromText("POINTZM(2 4 6 9)"))) -1 # rows (not including the header row) -1 # columns -AsText(Difference(GeomFromText("POINTZM(1 3 5 4)"), GeomFromText("POINTZM(2 4 6 9)"))) -POINT ZM(1 3 5 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance1.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance1.testcase deleted file mode 100644 index 58d5fc4..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/distance1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance - two points -:memory: #use in-memory database -SELECT ST_Distance(MakePoint(1, 2), MakePoint(4, 6)) -1 # rows (not including the header row) -1 # columns -ST_Distance(MakePoint(1, 2), MakePoint(4, 6)) -5.0 - diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance10.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance10.testcase deleted file mode 100644 index 4562395..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/distance10.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance - toxic first line -:memory: #use in-memory database -SELECT Distance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 0)")) -1 # rows (not including the header row) -1 # columns -Distance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 0)")) -0.0 - diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance2.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance2.testcase deleted file mode 100644 index 10bb7b0..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/distance2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance - two identical points -:memory: #use in-memory database -SELECT ST_Distance(MakePoint(1, 2), MakePoint(1, 2)) -1 # rows (not including the header row) -1 # columns -ST_Distance(MakePoint(1, 2), MakePoint(1, 2)) -0.0 - diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance3.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance3.testcase deleted file mode 100644 index df346ba..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/distance3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance - bad blob first arg -:memory: #use in-memory database -SELECT Distance(zeroblob(100), MakePoint(1, 2)) -1 # rows (not including the header row) -1 # columns -Distance(zeroblob(100), MakePoint(1, 2)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance4.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance4.testcase deleted file mode 100644 index 704a202..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/distance4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance - bad blob second arg -:memory: #use in-memory database -SELECT Distance(MakePoint(1, 2), zeroblob(100)) -1 # rows (not including the header row) -1 # columns -Distance(MakePoint(1, 2), zeroblob(100)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance5.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance5.testcase deleted file mode 100644 index b65dd97..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/distance5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance - non-blob first arg -:memory: #use in-memory database -SELECT Distance(3, MakePoint(1, 2)) -1 # rows (not including the header row) -1 # columns -Distance(3, MakePoint(1, 2)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance6.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance6.testcase deleted file mode 100644 index 9acc346..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/distance6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance - bad blob second arg -:memory: #use in-memory database -SELECT Distance(MakePoint(1, 2), "hello") -1 # rows (not including the header row) -1 # columns -Distance(MakePoint(1, 2), "hello") -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance7.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance7.testcase deleted file mode 100644 index 079597f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/distance7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance - parallel lines -:memory: #use in-memory database -SELECT Distance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) -1 # rows (not including the header row) -1 # columns -Distance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) -2.0 - diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance8.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance8.testcase deleted file mode 100644 index 428a43d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/distance8.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance - intersecting lines -:memory: #use in-memory database -SELECT Distance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) -1 # rows (not including the header row) -1 # columns -Distance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) -0.0 - diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance9.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance9.testcase deleted file mode 100644 index 45d40a9..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/distance9.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance - toxic first line -:memory: #use in-memory database -SELECT Distance(GeomFromText("LINESTRING(0 0, 0 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) -1 # rows (not including the header row) -1 # columns -Distance(GeomFromText("LINESTRING(0 0, 0 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) -0.0 - diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection1.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection1.testcase deleted file mode 100644 index 97d22dc..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/intersection1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -intersection - two points -:memory: #use in-memory database -SELECT AsText(Intersection(Makepoint(1,2), MakePoint(2,3))); -1 # rows (not including the header row) -1 # columns -AsText(Intersection(Makepoint(1,2), MakePoint(2,3))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection10.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection10.testcase deleted file mode 100644 index 31b6428..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/intersection10.testcase +++ /dev/null @@ -1,8 +0,0 @@ -intersection - POLYGONM, POINTM -:memory: #use in-memory database -SELECT AsText(Intersection(GeomFromText("POLYGONM((0 0 1, 4 0 1, 4 4 1, 0 4 1, 0 0 1))"), GeomFromText("POINT M(0 3 1)"))) -1 # rows (not including the header row) -1 # columns -AsText(Intersection(GeomFromText("POLYGONM((0 0 1, 4 0 1, 4 4 1, 0 4 1, 0 0 1))"), GeomFromText("POINT M(0 3 1)"))) -POINT M(0 3 0) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection11.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection11.testcase deleted file mode 100644 index 73e1e03..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/intersection11.testcase +++ /dev/null @@ -1,8 +0,0 @@ -intersection - POLYGONZM, POINTZM -:memory: #use in-memory database -SELECT AsText(Intersection(GeomFromText("POLYGONZM((0 0 1 4, 4 0 1 2, 4 4 1 4, 0 4 1 2, 0 0 1 4))"), GeomFromText("POINTZM(0 3 1 4)"))) -1 # rows (not including the header row) -1 # columns -AsText(Intersection(GeomFromText("POLYGONZM((0 0 1 4, 4 0 1 2, 4 4 1 4, 0 4 1 2, 0 0 1 4))"), GeomFromText("POINTZM(0 3 1 4)"))) -POINT ZM(0 3 1 0) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection12.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection12.testcase deleted file mode 100644 index c9df9b0..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/intersection12.testcase +++ /dev/null @@ -1,8 +0,0 @@ -intersection - POLYGONZM, POINTZM, non-intersecting -:memory: #use in-memory database -SELECT AsText(Intersection(GeomFromText("POLYGONZM((0 0 1 4, 4 0 1 2, 4 4 1 4, 0 4 1 2, 0 0 1 4))"), GeomFromText("POINTZM(-1 3 1 4)"))) -1 # rows (not including the header row) -1 # columns -AsText(Intersection(GeomFromText("POLYGONZM((0 0 1 4, 4 0 1 2, 4 4 1 4, 0 4 1 2, 0 0 1 4))"), GeomFromText("POINTZM(-1 3 1 4)"))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection2.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection2.testcase deleted file mode 100644 index 299136f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/intersection2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -intersection - two common points -:memory: #use in-memory database -SELECT AsText(Intersection(Makepoint(1,2), MakePoint(1,2))); -1 # rows (not including the header row) -1 # columns -AsText(Intersection(Makepoint(1,2), MakePoint(1,2))) -POINT(1 2) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection3.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection3.testcase deleted file mode 100644 index c12c16e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/intersection3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -intersection - null first point -:memory: #use in-memory database -SELECT AsText(Intersection(null, MakePoint(2,3))); -1 # rows (not including the header row) -1 # columns -AsText(Intersection(null, MakePoint(2,3))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection4.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection4.testcase deleted file mode 100644 index 96baf31..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/intersection4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -intersection - null second point -:memory: #use in-memory database -SELECT AsText(Intersection(MakePoint(2,3), null)); -1 # rows (not including the header row) -1 # columns -AsText(Intersection(MakePoint(2,3), null)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection5.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection5.testcase deleted file mode 100644 index c80f329..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/intersection5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -intersection - zeroblob second point -:memory: #use in-memory database -SELECT AsText(Intersection(MakePoint(2,3), zeroblob(48))); -1 # rows (not including the header row) -1 # columns -AsText(Intersection(MakePoint(2,3), zeroblob(48))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection6.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection6.testcase deleted file mode 100644 index aba1f2c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/intersection6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -intersection - zeroblob first point -:memory: #use in-memory database -SELECT AsText(Intersection(zeroblob(48), MakePoint(2,3))); -1 # rows (not including the header row) -1 # columns -AsText(Intersection(zeroblob(48), MakePoint(2,3))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection7.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection7.testcase deleted file mode 100644 index 3db7f7c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/intersection7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -intersection - toxic first point -:memory: #use in-memory database -SELECT AsText(Intersection(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))); -1 # rows (not including the header row) -1 # columns -AsText(Intersection(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection8.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection8.testcase deleted file mode 100644 index c71c001..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/intersection8.testcase +++ /dev/null @@ -1,8 +0,0 @@ -intersection - toxic second point -:memory: #use in-memory database -SELECT AsText(Intersection(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))); -1 # rows (not including the header row) -1 # columns -AsText(Intersection(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection9.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection9.testcase deleted file mode 100644 index 6d1763e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/intersection9.testcase +++ /dev/null @@ -1,8 +0,0 @@ -intersection - POLYGONZ, POINT -:memory: #use in-memory database -SELECT AsText(Intersection(GeomFromText("POLYGONZ((0 0 1, 4 0 1, 4 4 1, 0 4 1, 0 0 1))"), GeomFromText("POINT Z(0 3 1)"))) -1 # rows (not including the header row) -1 # columns -AsText(Intersection(GeomFromText("POLYGONZ((0 0 1, 4 0 1, 4 4 1, 0 4 1, 0 0 1))"), GeomFromText("POINT Z(0 3 1)"))) -POINT Z(0 3 1) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed1.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed1.testcase deleted file mode 100644 index 79ca1a4..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isclosed1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isclosed1 -:memory: #use in-memory database -SELECT IsClosed(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35)")); -1 # rows (not including the header row) -1 # columns -IsClosed(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35)")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed10.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed10.testcase deleted file mode 100644 index 56d7f25..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isclosed10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isclosed - multilinestring, first not closed -:memory: #use in-memory database -SELECT IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35.4),(10 10, 0 10, 0 0, 10 10))")) -1 # rows (not including the header row) -1 # columns -IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35.4),(10 10, 0 10, 0 0, 10 10))")) -0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed2.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed2.testcase deleted file mode 100644 index f9b28f5..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isclosed2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -isclosed2 -:memory: #use in-memory database -SELECT IsClosed(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")); -1 # rows (not including the header row) -1 # columns -IsClosed(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) -0 - diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed3.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed3.testcase deleted file mode 100644 index 9e6ebaa..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isclosed3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isclosed3 -:memory: #use in-memory database -SELECT IsClosed(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -36)")); -1 # rows (not including the header row) -1 # columns -IsClosed(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -36)")) -0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed4.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed4.testcase deleted file mode 100644 index 8373258..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isclosed4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isclosed4 -:memory: #use in-memory database -SELECT IsClosed(zeroblob(10)); -1 # rows (not including the header row) -1 # columns -IsClosed(zeroblob(10)) --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed5.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed5.testcase deleted file mode 100644 index 964755f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isclosed5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isclosed5 -:memory: #use in-memory database -SELECT IsClosed(3); -1 # rows (not including the header row) -1 # columns -IsClosed(3) --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed6.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed6.testcase deleted file mode 100644 index d9729ba..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isclosed6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isclosed - multilinestring, one linestring -:memory: #use in-memory database -SELECT IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -36))")) -1 # rows (not including the header row) -1 # columns -IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -36))")) -0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed7.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed7.testcase deleted file mode 100644 index ddf3f32..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isclosed7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isclosed - multilinestring -:memory: #use in-memory database -SELECT IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")) -1 # rows (not including the header row) -1 # columns -IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed8.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed8.testcase deleted file mode 100644 index 7017a94..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isclosed8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isclosed - multilinestring, both closed -:memory: #use in-memory database -SELECT IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35),(10 10, 0 10, 0 0, 10 10))")) -1 # rows (not including the header row) -1 # columns -IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35),(10 10, 0 10, 0 0, 10 10))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed9.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed9.testcase deleted file mode 100644 index 3abb6e2..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isclosed9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isclosed - multilinestring, second not closed -:memory: #use in-memory database -SELECT IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35),(1 10, 0 10, 0 0, 10 10))")) -1 # rows (not including the header row) -1 # columns -IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35),(1 10, 0 10, 0 0, 10 10))")) -0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring1.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring1.testcase deleted file mode 100644 index f321ac4..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isring1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isring1 -:memory: #use in-memory database -SELECT IsRing(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35)")); -1 # rows (not including the header row) -1 # columns -IsRing(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35)")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring2.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring2.testcase deleted file mode 100644 index b124da9..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isring2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -isring2 -:memory: #use in-memory database -SELECT IsRing(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")); -1 # rows (not including the header row) -1 # columns -IsRing(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) --1 - diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring3.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring3.testcase deleted file mode 100644 index dfc61bd..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isring3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isring3 -:memory: #use in-memory database -SELECT IsRing("hello"); -1 # rows (not including the header row) -1 # columns -IsRing("hello") --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring4.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring4.testcase deleted file mode 100644 index 4c87475..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isring4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isring4 -:memory: #use in-memory database -SELECT IsRing(zeroblob(10)); -1 # rows (not including the header row) -1 # columns -IsRing(zeroblob(10)) --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring5.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring5.testcase deleted file mode 100644 index e589f04..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isring5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isring1 - LINESTRINGZ -:memory: #use in-memory database -SELECT IsRing(GeomFromText("LINESTRINGZ(1 1 3, 2 1 4, 2 2 5, 1 2 4, 1 1 3)")) -1 # rows (not including the header row) -1 # columns -IsRing(GeomFromText("LINESTRINGZ(1 1 3, 2 1 4, 2 2 5, 1 2 4, 1 1 3)")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring6.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring6.testcase deleted file mode 100644 index 34a18ba..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isring6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isring1 - LINESTRINGM -:memory: #use in-memory database -SELECT IsRing(GeomFromText("LINESTRINGM(1 1 3, 2 1 4, 2 2 5, 1 2 4, 1 1 3)")) -1 # rows (not including the header row) -1 # columns -IsRing(GeomFromText("LINESTRINGM(1 1 3, 2 1 4, 2 2 5, 1 2 4, 1 1 3)")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring7.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring7.testcase deleted file mode 100644 index 5cdd4ab..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isring7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isring1 - LINESTRINGZM -:memory: #use in-memory database -SELECT IsRing(GeomFromText("LINESTRINGZM(1 1 3 4, 2 1 4 9, 2 2 5 4, 1 2 4 3, 1 1 3 1)")) -1 # rows (not including the header row) -1 # columns -IsRing(GeomFromText("LINESTRINGZM(1 1 3 4, 2 1 4 9, 2 2 5 4, 1 2 4 3, 1 1 3 1)")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring8.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring8.testcase deleted file mode 100644 index 784ce0b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isring8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isring1 - LINESTRINGZM, non-ring -:memory: #use in-memory database -SELECT IsRing(GeomFromText("LINESTRINGZM(1 1 3 4, 2 1 4 9, 2 2 5 4, 1 2 4 3)")) -1 # rows (not including the header row) -1 # columns -IsRing(GeomFromText("LINESTRINGZM(1 1 3 4, 2 1 4 9, 2 2 5 4, 1 2 4 3)")) -0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring9.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring9.testcase deleted file mode 100644 index 56a0808..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isring9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isring9 - toxic ring -:memory: #use in-memory database -SELECT IsRing(GeomFromText("LINESTRING(1 1, 1 1, 1 1, 1 1, 1 1)")) -1 # rows (not including the header row) -1 # columns -IsRing(GeomFromText("LINESTRING(1 1, 1 1, 1 1, 1 1, 1 1)")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/issimple1.testcase b/src/spatialite/test/sql_stmt_geos_tests/issimple1.testcase deleted file mode 100644 index a61bff3..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/issimple1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -issimple1 -:memory: #use in-memory database -SELECT IsSimple(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")); -1 # rows (not including the header row) -1 # columns -IsSimple(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/issimple2.testcase b/src/spatialite/test/sql_stmt_geos_tests/issimple2.testcase deleted file mode 100644 index 6a9dbc4..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/issimple2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -issimple2 -:memory: #use in-memory database -SELECT IsSimple(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")); -1 # rows (not including the header row) -1 # columns -IsSimple(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) -1 - diff --git a/src/spatialite/test/sql_stmt_geos_tests/issimple3.testcase b/src/spatialite/test/sql_stmt_geos_tests/issimple3.testcase deleted file mode 100644 index 14ccb64..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/issimple3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -issimple3 -:memory: #use in-memory database -SELECT IsSimple(GeomFromText("POLYGON()")); -1 # rows (not including the header row) -1 # columns -IsSimple(GeomFromText("POLYGON()")) --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/issimple4.testcase b/src/spatialite/test/sql_stmt_geos_tests/issimple4.testcase deleted file mode 100644 index 22a1f9f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/issimple4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -issimple4 -:memory: #use in-memory database -SELECT IsSimple(zeroblob(10)); -1 # rows (not including the header row) -1 # columns -IsSimple(zeroblob(10)) --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/issimple5.testcase b/src/spatialite/test/sql_stmt_geos_tests/issimple5.testcase deleted file mode 100644 index c331ee0..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/issimple5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -issimple5 -:memory: #use in-memory database -SELECT IsSimple("hello"); -1 # rows (not including the header row) -1 # columns -IsSimple("hello") --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/issimple6.testcase b/src/spatialite/test/sql_stmt_geos_tests/issimple6.testcase deleted file mode 100644 index aa8530d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/issimple6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -IsSimple - GeometryCollection, single point -:memory: #use in-memory database -SELECT IsSimple(GeomFromText("GEOMETRYCOLLECTION(POINT(1 2))")) -1 # rows (not including the header row) -1 # columns -IsSimple(GeomFromText("GEOMETRYCOLLECTION(POINT(1 2))")) --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid1.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid1.testcase deleted file mode 100644 index beaf998..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid1 -:memory: #use in-memory database -SELECT IsValid(zeroblob(10)); -1 # rows (not including the header row) -1 # columns -IsValid(zeroblob(10)) --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid10.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid10.testcase deleted file mode 100644 index c0b6b9a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid (MULTYPOLYGONZM with hole) -:memory: #use in-memory database -SELECT IsValid(GeomFromText("MULTIPOLYGONZM(((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 4, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 4, 11 11 100 1)), ((20 20 110 11, 21 20 111 12, 21 21 112 13, 20 21 113 14, 20 20 110 11)))")); -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("MULTIPOLYGONZM(((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 4, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 4, 11 11 100 1)), ((20 20 110 11, 21 20 111 12, 21 21 112 13, 20 21 113 14, 20 20 110 11)))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid11.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid11.testcase deleted file mode 100644 index 4cc136d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid (POLYGON Z with hole) -:memory: #use in-memory database -SELECT IsValid(GeomFromText("POLYGONZ((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100))")); -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("POLYGONZ((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid12.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid12.testcase deleted file mode 100644 index 20ab52c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid (POLYGONM with hole) -:memory: #use in-memory database -SELECT IsValid(GeomFromText("POLYGONM((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1))")); -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("POLYGONM((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid13.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid13.testcase deleted file mode 100644 index 35582c4..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid (POLYGONZM with hole) -:memory: #use in-memory database -SELECT IsValid(GeomFromText("POLYGONZM((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 4, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 4, 11 11 100 1))")); -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("POLYGONZM((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 4, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 4, 11 11 100 1))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid14.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid14.testcase deleted file mode 100644 index 793e837..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid Geometry Collection of one polygon -:memory: #use in-memory database -SELECT IsValid(GeomFromText("GEOMETRYCOLLECTION(POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)))")) -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("GEOMETRYCOLLECTION(POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid15.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid15.testcase deleted file mode 100644 index f1c510f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid Geometry Collection of two polygons -:memory: #use in-memory database -SELECT IsValid(GeomFromText("GEOMETRYCOLLECTION(POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("GEOMETRYCOLLECTION(POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid16.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid16.testcase deleted file mode 100644 index 1e78885..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid Geometry Collection of point and polygon -:memory: #use in-memory database -SELECT IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid17.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid17.testcase deleted file mode 100644 index 5f5002c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid Geometry Collection of point and linestring -:memory: #use in-memory database -SELECT IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(1 1, 4 1, 4 4, 1 4, 1 1))")) -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(1 1, 4 1, 4 4, 1 4, 1 1))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid18.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid18.testcase deleted file mode 100644 index bdca2b8..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid Geometry Collection of two points and linestring -:memory: #use in-memory database -SELECT IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),POINT(3 4),LINESTRING(1 1, 4 1, 4 4, 1 4, 1 1))")) -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),POINT(3 4),LINESTRING(1 1, 4 1, 4 4, 1 4, 1 1))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid19.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid19.testcase deleted file mode 100644 index 7056b91..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid Geometry Collection of two points and a polygon -:memory: #use in-memory database -SELECT IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),POINT(3 4),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),POINT(3 4),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid2.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid2.testcase deleted file mode 100644 index 27c34fe..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid2 -:memory: #use in-memory database -SELECT IsValid(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")); -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid20.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid20.testcase deleted file mode 100644 index 126f898..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid Geometry Collection of two lines and a polygon -:memory: #use in-memory database -SELECT IsValid(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(0 0, 4 1),LINESTRING(3 4, 4 6),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(0 0, 4 1),LINESTRING(3 4, 4 6),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid3.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid3.testcase deleted file mode 100644 index 98249aa..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid3 -:memory: #use in-memory database -SELECT IsValid(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")); -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid4.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid4.testcase deleted file mode 100644 index 39381e1..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid4 -:memory: #use in-memory database -SELECT IsValid(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")); -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) -0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid5.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid5.testcase deleted file mode 100644 index 7fec46b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid5 -:memory: #use in-memory database -SELECT IsValid("hello"); -1 # rows (not including the header row) -1 # columns -IsValid("hello") --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid6.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid6.testcase deleted file mode 100644 index 89733ad..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid6 -:memory: #use in-memory database -SELECT IsValid(GeomFromText("POLYGON()")); -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("POLYGON()")) --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid7.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid7.testcase deleted file mode 100644 index 6ee79b2..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid (MULTYPOLYGON with hole) -:memory: #use in-memory database -SELECT IsValid(GeomFromText("MULTIPOLYGON(((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11)), ((20 20, 21 20, 21 21, 20 21, 20 20)))")); -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("MULTIPOLYGON(((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11)), ((20 20, 21 20, 21 21, 20 21, 20 20)))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid8.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid8.testcase deleted file mode 100644 index ea037ab..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid (MULTYPOLYGON Z with hole) -:memory: #use in-memory database -SELECT IsValid(GeomFromText("MULTIPOLYGONZ(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100)), ((20 20 110, 21 20 111, 21 21 112, 20 21 113, 20 20 110)))")); -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("MULTIPOLYGONZ(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100)), ((20 20 110, 21 20 111, 21 21 112, 20 21 113, 20 20 110)))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid9.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid9.testcase deleted file mode 100644 index 8715da4..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/isvalid9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isvalid (MULTYPOLYGONM with hole) -:memory: #use in-memory database -SELECT IsValid(GeomFromText("MULTIPOLYGONM(((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1)), ((20 20 2, 21 20 3, 21 21 4, 20 21 5, 20 20 2)))")); -1 # rows (not including the header row) -1 # columns -IsValid(GeomFromText("MULTIPOLYGONM(((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1)), ((20 20 2, 21 20 3, 21 21 4, 20 21 5, 20 20 2)))")) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface1.testcase b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface1.testcase deleted file mode 100644 index b2feb4d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -pointonsurface - point -:memory: #use in-memory database -SELECT astext(PointOnSurface(geomFromText("POINT(1,1)", 4326))); -1 # rows (not including the header row) -1 # columns -astext(PointOnSurface(geomFromText("POINT(1,1)", 4326))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface2.testcase b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface2.testcase deleted file mode 100644 index 70d33de..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface2.testcase +++ /dev/null @@ -1,9 +0,0 @@ -PointOnSurface - toxic -:memory: #use in-memory database -SELECT PointOnSurface(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")); -1 # rows (not including the header row) -1 # columns -PointOnSurface(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface3.testcase b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface3.testcase deleted file mode 100644 index 49308f9..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface3.testcase +++ /dev/null @@ -1,9 +0,0 @@ -PointOnSurface - null blob -:memory: #use in-memory database -SELECT PointOnSurface(zeroblob(40)); -1 # rows (not including the header row) -1 # columns -PointOnSurface(zeroblob(40)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface4.testcase b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface4.testcase deleted file mode 100644 index 3d81242..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface4.testcase +++ /dev/null @@ -1,9 +0,0 @@ -PointOnSurface - square -:memory: #use in-memory database -SELECT Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326))); -1 # rows (not including the header row) -1 # columns -Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326))) -1 - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface5.testcase b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface5.testcase deleted file mode 100644 index 56739f0..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -PointOnSurface - square, Z (problem case - throws away Z component) -:memory: #use in-memory database -SELECT Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGONZ((0 0 1, 0 1 2, 1 1 2, 0 0 1))", 4326))) -1 # rows (not including the header row) -1 # columns -Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGONZ((0 0 1, 0 1 2, 1 1 2, 0 0 1))", 4326))) -1 - diff --git a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface6.testcase b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface6.testcase deleted file mode 100644 index 84be68b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -PointOnSurface - square, M (problem case - throws away M component) -:memory: #use in-memory database -SELECT Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGONM((0 0 1, 0 1 2, 1 1 2, 0 0 1))", 4326))) -1 # rows (not including the header row) -1 # columns -Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGONM((0 0 1, 0 1 2, 1 1 2, 0 0 1))", 4326))) -1 - diff --git a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface7.testcase b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface7.testcase deleted file mode 100644 index 34d2cc4..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -PointOnSurface - square, Z and M (problem case - throws away Z and M component) -:memory: #use in-memory database -SELECT Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGONZM((0 0 1 4, 0 1 2 4, 1 1 2 2, 0 0 1 4))", 4326))) -1 # rows (not including the header row) -1 # columns -Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGONZM((0 0 1 4, 0 1 2 4, 1 1 2 2, 0 0 1 4))", 4326))) -1 - diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize1.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize1.testcase deleted file mode 100644 index 4d6d437..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/polygonize1.testcase +++ /dev/null @@ -1,10 +0,0 @@ -POLYGONIZE - simple polygon -:memory: #use in-memory database -SELECT AsText(Polygonize(GeomFromText("LINESTRING(0 0, 1 1, 0 2, -1 1, 0 0)"))); -1 # rows (not including the header row) -1 # columns -AsText(Polygonize(GeomFromText("LINESTRING(0 0, 1 1, 0 2, -1 1, 0 0)"))) -POLYGON((0 0, -1 1, 0 2, 1 1, 0 0)) - - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize10.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize10.testcase deleted file mode 100644 index 4de0b34..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/polygonize10.testcase +++ /dev/null @@ -1,10 +0,0 @@ -POLYGONIZE - polygonM with inner ring -:memory: #use in-memory database -SELECT AsText(Polygonize(GeomFromText("MULTILINESTRINGM((0 0 5, 10 0 6, 10 12 7, 0 12 6, 0 0 5),(1 1 0, 3 1 0, 3 3 4, 1 3 1, 1 1 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(Polygonize(GeomFromText("MULTILINESTRINGM((0 0 5, 10 0 6, 10 12 7, 0 12 6, 0 0 5),(1 1 0, 3 1 0, 3 3 4, 1 3 1, 1 1 0))"))) -POLYGON M((0 0 0, 0 12 0, 10 12 0, 10 0 0, 0 0 0), (1 1 0, 3 1 0, 3 3 0, 1 3 0, 1 1 0)) - - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize11.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize11.testcase deleted file mode 100644 index bdc18d7..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/polygonize11.testcase +++ /dev/null @@ -1,10 +0,0 @@ -POLYGONIZE - points -:memory: #use in-memory database -SELECT AsText(Polygonize(GeomFromText("MULTIPOINT(0 0, 1 1, 0 2, -1 1)"))); -1 # rows (not including the header row) -1 # columns -AsText(Polygonize(GeomFromText("MULTIPOINT(0 0, 1 1, 0 2, -1 1)"))); -(NULL) - - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize12.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize12.testcase deleted file mode 100644 index 543a61d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/polygonize12.testcase +++ /dev/null @@ -1,10 +0,0 @@ -POLYGONIZE - already Polygon -:memory: #use in-memory database -SELECT AsText(Polygonize(GeomFromText("POLYGON((0 0, 1 1, 0 2, 0 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(Polygonize(GeomFromText("POLYGON((0 0, 1 1, 0 2, 0 0))"))) -(NULL) - - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize13.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize13.testcase deleted file mode 100644 index 3033839..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/polygonize13.testcase +++ /dev/null @@ -1,10 +0,0 @@ -POLYGONIZE - polygonzm with two inner ring -:memory: #use in-memory database -SELECT AsText(Polygonize(GeomFromText("MULTILINESTRINGZM((0 0 5 4, 10 0 6 2, 10 12 7 3, 0 12 6 1, 0 0 5 4),(1 1 0 0, 3 1 0 2, 3 3 4 1, 1 3 1 2, 1 1 0 0),(4 4 0 0, 5 4 0 0, 5 5 0 0, 4 5 1 0, 4 4 0 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(Polygonize(GeomFromText("MULTILINESTRINGZM((0 0 5 4, 10 0 6 2, 10 12 7 3, 0 12 6 1, 0 0 5 4),(1 1 0 0, 3 1 0 2, 3 3 4 1, 1 3 1 2, 1 1 0 0),(4 4 0 0, 5 4 0 0, 5 5 0 0, 4 5 1 0, 4 4 0 0))"))) -POLYGON ZM((0 0 5 0, 0 12 6 0, 10 12 7 0, 10 0 6 0, 0 0 5 0), (1 1 0 0, 3 1 0 0, 3 3 4 0, 1 3 1 0, 1 1 0 0), (4 4 0 0, 5 4 0 0, 5 5 0 0, 4 5 1 0, 4 4 0 0)) - - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize14.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize14.testcase deleted file mode 100644 index b0a59cb..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/polygonize14.testcase +++ /dev/null @@ -1,10 +0,0 @@ -POLYGONIZE - toxic geometry -:memory: #use in-memory database -SELECT AsText(Polygonize(GeomFromText("MULTILINESTRING((0 0, 1 1, 0 2, -1 1), (4 0, 4 0), (-1 1, 0 0))"))); -1 # rows (not including the header row) -1 # columns -AsText(Polygonize(GeomFromText("MULTILINESTRING((0 0, 1 1, 0 2, -1 1), (4 0, 4 0), (-1 1, 0 0))"))) -POLYGON((-1 1, 0 2, 1 1, 0 0, -1 1)) - - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize2.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize2.testcase deleted file mode 100644 index a8196d8..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/polygonize2.testcase +++ /dev/null @@ -1,10 +0,0 @@ -POLYGONIZE - not ring -:memory: #use in-memory database -SELECT AsText(Polygonize(GeomFromText("LINESTRING(0 0, 1 1, 0 2, -1 1)"))); -1 # rows (not including the header row) -1 # columns -AsText(Polygonize(GeomFromText("LINESTRING(0 0, 1 1, 0 2, -1 1)"))) -(NULL) - - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize3.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize3.testcase deleted file mode 100644 index 1349c12..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/polygonize3.testcase +++ /dev/null @@ -1,10 +0,0 @@ -POLYGONIZE - bad blob -:memory: #use in-memory database -SELECT Polygonize(zeroblob(9)); -1 # rows (not including the header row) -1 # columns -Polygonize(zeroblob(9)) -(NULL) - - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize4.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize4.testcase deleted file mode 100644 index 462703f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/polygonize4.testcase +++ /dev/null @@ -1,10 +0,0 @@ -POLYGONIZE - text -:memory: #use in-memory database -SELECT Polygonize("hello world"); -1 # rows (not including the header row) -1 # columns -Polygonize("hello world") -(NULL) - - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize5.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize5.testcase deleted file mode 100644 index 1a54385..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/polygonize5.testcase +++ /dev/null @@ -1,10 +0,0 @@ -POLYGONIZE - simple polygonz -:memory: #use in-memory database -SELECT AsText(Polygonize(GeomFromText("LINESTRINGZ(0 0 5, 1 1 6, 0 2 7, -1 1 6, 0 0 5)"))) -1 # rows (not including the header row) -1 # columns -AsText(Polygonize(GeomFromText("LINESTRINGZ(0 0 5, 1 1 6, 0 2 7, -1 1 6, 0 0 5)"))) -POLYGON Z((0 0 5, -1 1 6, 0 2 7, 1 1 6, 0 0 5)) - - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize6.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize6.testcase deleted file mode 100644 index 0efa0d1..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/polygonize6.testcase +++ /dev/null @@ -1,10 +0,0 @@ -POLYGONIZE - simple polygonm -:memory: #use in-memory database -SELECT AsText(Polygonize(GeomFromText("LINESTRINGM(0 0 5, 1 1 6, 0 2 7, -1 1 6, 0 0 5)"))) -1 # rows (not including the header row) -1 # columns -AsText(Polygonize(GeomFromText("LINESTRINGM(0 0 5, 1 1 6, 0 2 7, -1 1 6, 0 0 5)"))) -POLYGON M((0 0 0, -1 1 0, 0 2 0, 1 1 0, 0 0 0)) - - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize7.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize7.testcase deleted file mode 100644 index ee599b6..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/polygonize7.testcase +++ /dev/null @@ -1,10 +0,0 @@ -POLYGONIZE - simple polygonzm -:memory: #use in-memory database -SELECT AsText(Polygonize(GeomFromText("LINESTRINGZM(0 0 5 4, 1 1 6 2, 0 2 7 3, -1 1 6 1, 0 0 5 4)"))) -1 # rows (not including the header row) -1 # columns -AsText(Polygonize(GeomFromText("LINESTRINGZM(0 0 5 4, 1 1 6 2, 0 2 7 3, -1 1 6 1, 0 0 5 4)"))) -POLYGON ZM((0 0 5 0, -1 1 6 0, 0 2 7 0, 1 1 6 0, 0 0 5 0)) - - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize8.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize8.testcase deleted file mode 100644 index efc3463..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/polygonize8.testcase +++ /dev/null @@ -1,10 +0,0 @@ -POLYGONIZE - polygonzm with inner ring -:memory: #use in-memory database -SELECT AsText(Polygonize(GeomFromText("MULTILINESTRINGZM((0 0 5 4, 10 0 6 2, 10 12 7 3, 0 12 6 1, 0 0 5 4),(1 1 0 0, 3 1 0 2, 3 3 4 1, 1 3 1 2, 1 1 0 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(Polygonize(GeomFromText("MULTILINESTRINGZM((0 0 5 4, 10 0 6 2, 10 12 7 3, 0 12 6 1, 0 0 5 4),(1 1 0 0, 3 1 0 2, 3 3 4 1, 1 3 1 2, 1 1 0 0))"))) -POLYGON ZM((0 0 5 0, 0 12 6 0, 10 12 7 0, 10 0 6 0, 0 0 5 0), (1 1 0 0, 3 1 0 0, 3 3 4 0, 1 3 1 0, 1 1 0 0)) - - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize9.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize9.testcase deleted file mode 100644 index 54b35d4..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/polygonize9.testcase +++ /dev/null @@ -1,10 +0,0 @@ -POLYGONIZE - polygonz with inner ring -:memory: #use in-memory database -SELECT AsText(Polygonize(GeomFromText("MULTILINESTRINGZ((0 0 5, 10 0 6, 10 12 7, 0 12 6, 0 0 5),(1 1 0, 3 1 0, 3 3 4, 1 3 1, 1 1 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(Polygonize(GeomFromText("MULTILINESTRINGZ((0 0 5, 10 0 6, 10 12 7, 0 12 6, 0 0 5),(1 1 0, 3 1 0, 3 3 4, 1 3 1, 1 1 0))"))) -POLYGON Z((0 0 5, 0 12 6, 10 12 7, 10 0 6, 0 0 5), (1 1 0, 3 1 0, 3 3 4, 1 3 1, 1 1 0)) - - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin1.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin1.testcase deleted file mode 100644 index 0541f4e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin- two points -:memory: #use in-memory database -SELECT PtDistWithin(Makepoint(1,2), MakePoint(4,4), 2) -1 # rows (not including the header row) -1 # columns -PtDistWithin(Makepoint(1,2), MakePoint(4,4), 2) -0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin10.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin10.testcase deleted file mode 100644 index 2c78c8f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin - bad blob second arg -:memory: #use in-memory database -SELECT PtDistWithin(MakePoint(4,4), zeroblob(98), 2) -1 # rows (not including the header row) -1 # columns -PtDistWithin(MakePoint(4,4), zeroblob(98), 2) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin11.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin11.testcase deleted file mode 100644 index 0f147bf..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin - WGS-84 first arg -:memory: #use in-memory database -SELECT PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4), 2) -1 # rows (not including the header row) -1 # columns -PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4), 2) -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin12.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin12.testcase deleted file mode 100644 index 550739e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin - WGS-84 first arg -:memory: #use in-memory database -SELECT PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4), 1) -1 # rows (not including the header row) -1 # columns -PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4), 1) -0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin13.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin13.testcase deleted file mode 100644 index c5641e7..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin - WGS-84 both args -:memory: #use in-memory database -SELECT PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 2) -1 # rows (not including the header row) -1 # columns -PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 2) -0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin14.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin14.testcase deleted file mode 100644 index 01732f5..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin - WGS-84 both args -:memory: #use in-memory database -SELECT PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 2000000) -1 # rows (not including the header row) -1 # columns -PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 2000000) -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin15.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin15.testcase deleted file mode 100644 index e26b910..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin - WGS-84 both args, geodesic -:memory: #use in-memory database -SELECT PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 2000000, 1) -1 # rows (not including the header row) -1 # columns -PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 2000000, 1) -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin16.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin16.testcase deleted file mode 100644 index 79fbf76..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin - WGS-84 both args, geodesic -:memory: #use in-memory database -SELECT PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 100000, 1) -1 # rows (not including the header row) -1 # columns -PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 100000, 1) -0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin17.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin17.testcase deleted file mode 100644 index b43603b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin - LINESTRING and POINT, first arg WGS-84 -:memory: #use in-memory database -SELECT PtDistWithin(GeomFromText("LINESTRING(4 2, 3 2)", 4326), MakePoint(4,4), 5) -1 # rows (not including the header row) -1 # columns -PtDistWithin(GeomFromText("LINESTRING(4 2, 3 2)", 4326), MakePoint(4,4), 5) -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin18.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin18.testcase deleted file mode 100644 index 3e64ede..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin - LINESTRING and POINT, WGS-84 both args, geodesic -:memory: #use in-memory database -SELECT PtDistWithin(GeomFromText("LINESTRING(4 2, 3 2)", 4326), MakePoint(4,4,4326), 5, 1) -1 # rows (not including the header row) -1 # columns -PtDistWithin(GeomFromText("LINESTRING(4 2, 3 2)", 4326), MakePoint(4,4,4326), 5, 1) -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin2.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin2.testcase deleted file mode 100644 index a52d148..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin- two points -:memory: #use in-memory database -SELECT PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2) -1 # rows (not including the header row) -1 # columns -PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2) -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin3.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin3.testcase deleted file mode 100644 index b1fd22e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin - bad first arg -:memory: #use in-memory database -SELECT PtDistWithin(4, MakePoint(4,4), 2) -1 # rows (not including the header row) -1 # columns -PtDistWithin(4, MakePoint(4,4), 2) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin4.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin4.testcase deleted file mode 100644 index dc2e84e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin - bad second arg -:memory: #use in-memory database -SELECT PtDistWithin(Makepoint(4,2), "helo", 2) -1 # rows (not including the header row) -1 # columns -PtDistWithin(Makepoint(4,2), "helo", 2) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin5.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin5.testcase deleted file mode 100644 index fe3bae3..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin - bad third arg -:memory: #use in-memory database -SELECT PtDistWithin(Makepoint(4,2), MakePoint(4,4), "hello") -1 # rows (not including the header row) -1 # columns -PtDistWithin(Makepoint(4,2), MakePoint(4,4), "hello") -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin6.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin6.testcase deleted file mode 100644 index e05bbd0..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin- two points, float distance -:memory: #use in-memory database -SELECT PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2.1) -1 # rows (not including the header row) -1 # columns -PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2.1) -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin7.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin7.testcase deleted file mode 100644 index ce1a862..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin- two points, float distance, optional fourth arg -:memory: #use in-memory database -SELECT PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2.1, 0) -1 # rows (not including the header row) -1 # columns -PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2.1, 0) -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin8.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin8.testcase deleted file mode 100644 index 3b3df4a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin - bad blob first arg -:memory: #use in-memory database -SELECT PtDistWithin(zeroblob(98), MakePoint(4,4), 2) -1 # rows (not including the header row) -1 # columns -PtDistWithin(zeroblob(98), MakePoint(4,4), 2) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin9.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin9.testcase deleted file mode 100644 index fce6a03..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin- two points, float distance, bad fourth arg -:memory: #use in-memory database -SELECT PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2.1, "hello") -1 # rows (not including the header row) -1 # columns -PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2.1, "hello") -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin1.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin1.testcase deleted file mode 100644 index a5c7dbb..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin invalid arg: NULL pt1 -:memory: -SELECT PtDistWithin(NULL, GeomFromText("POINT(5 5)", 4326), 10.0, 1); -1 # rows -1 # column -PtDistWithin(NULL, GeomFromText("POINT(5 5)", 4326), 10.0, 1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin10.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin10.testcase deleted file mode 100644 index 343f482..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin invalid arg: zeroblob pt2 -:memory: -SELECT PtDistWithin(GeomFromText("POINT(5 5)", 4326), zeroblob(25), 10.0, 1); -1 # rows -1 # column -PtDistWithin(GeomFromText("POINT(5 5)", 4326), zeroblob(25), 10.0, 1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin11.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin11.testcase deleted file mode 100644 index 1830f72..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin: WGS84 no spheroid -:memory: -SELECT PtDistWithin(GeomFromText("POINT(5 5)", 4326), GeomFromText("POINT(5.1 5.1)", 4326), 100000.0); -1 # rows -1 # column -PtDistWithin(GeomFromText("POINT(5 5)", 4326), GeomFromText("POINT(5.1 5.1)", 4326), 100000.0) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin12.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin12.testcase deleted file mode 100644 index 570e5b9..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin: WGS84 spheroid -:memory: -SELECT PtDistWithin(GeomFromText("POINT(5 5)", 4326), GeomFromText("POINT(5.1 5.1)", 4326), 100000.0, 1); -1 # rows -1 # column -PtDistWithin(GeomFromText("POINT(5 5)", 4326), GeomFromText("POINT(5.1 5.1)", 4326), 100000.0, 1) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin13.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin13.testcase deleted file mode 100644 index 8314c8d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin: WGS84 (INT dist) -:memory: -SELECT PtDistWithin(GeomFromText("POINT(5 5)", 4326), GeomFromText("POINT(5.1 5.1)", 4326), 100000); -1 # rows -1 # column -PtDistWithin(GeomFromText("POINT(5 5)", 4326), GeomFromText("POINT(5.1 5.1)", 4326), 100000) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin14.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin14.testcase deleted file mode 100644 index e878d7d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin: Linestring / Polygon -:memory: -SELECT PtDistWithin(GeomFromText("LINESTRING(4 4, 4.1 4.1)", 4326), GeomFromText("POLYGON((5 5, 5.1 5, 5.1 5.1, 5 5.1, 5 5))", 4326), 200); -1 # rows -1 # column -PtDistWithin(GeomFromText("LINESTRING(4 4, 4.1 4.1)", 4326), GeomFromText("POLYGON((5 5, 5.1 5, 5.1 5.1, 5 5.1, 5 5))", 4326), 200) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin15.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin15.testcase deleted file mode 100644 index b156a90..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin: unknown Srid -:memory: -SELECT PtDistWithin(GeomFromText("POINT(5 5)", -1), GeomFromText("POINT(5.1 5.1)", -1), 1); -1 # rows -1 # column -PtDistWithin(GeomFromText("POINT(5 5)", -1), GeomFromText("POINT(5.1 5.1)", -1), 1) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin16.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin16.testcase deleted file mode 100644 index 7de302c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin: Polygon / Linestring -:memory: -SELECT PtDistWithin(GeomFromText("POLYGON((5 5, 5.1 5, 5.1 5.1, 5 5.1, 5 5))", 4326), GeomFromText("LINESTRING(4 4, 4.1 4.1)", 4326), 200); -1 # rows -1 # column -PtDistWithin(GeomFromText("POLYGON((5 5, 5.1 5, 5.1 5.1, 5 5.1, 5 5))", 4326), GeomFromText("LINESTRING(4 4, 4.1 4.1)", 4326), 200) -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin2.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin2.testcase deleted file mode 100644 index 8c49a2c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin invalid arg: NULL pt2 -:memory: -SELECT PtDistWithin(GeomFromText("POINT(5 5)", 4326), NULL, 10.0, 1); -1 # rows -1 # column -PtDistWithin(GeomFromText("POINT(5 5)", 4326), NULL, 10.0, 1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin3.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin3.testcase deleted file mode 100644 index dd44efc..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin invalid arg: NULL distance -:memory: -SELECT PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), NULL, 1); -1 # rows -1 # column -PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), NULL, 1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin4.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin4.testcase deleted file mode 100644 index a6a2140..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin invalid arg: NULL use-sferoid -:memory: -SELECT PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), 10.0, NULL); -1 # rows -1 # column -PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), 10.0, NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin5.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin5.testcase deleted file mode 100644 index 38f5e66..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin invalid arg: TEXT pt1 -:memory: -SELECT PtDistWithin('a', GeomFromText("POINT(5 5)", 4326), 10.0, 1); -1 # rows -1 # column -PtDistWithin('a', GeomFromText("POINT(5 5)", 4326), 10.0, 1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin6.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin6.testcase deleted file mode 100644 index 5a89a8e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin invalid arg: TEXT pt2 -:memory: -SELECT PtDistWithin(GeomFromText("POINT(5 5)", 4326), 'a', 10.0, 1); -1 # rows -1 # column -PtDistWithin(GeomFromText("POINT(5 5)", 4326), 'a', 10.0, 1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin7.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin7.testcase deleted file mode 100644 index 834a64a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin invalid arg: TEXT distance -:memory: -SELECT PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), 'a', 1); -1 # rows -1 # column -PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), 'a', 1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin8.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin8.testcase deleted file mode 100644 index 938c21b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin invalid arg: TEXT use-sferoid -:memory: -SELECT PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), 10.0, 'a'); -1 # rows -1 # column -PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), 10.0, 'a') -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin9.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin9.testcase deleted file mode 100644 index 9c9db5f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -PtDistWithin invalid arg: zeroblob pt1 -:memory: -SELECT PtDistWithin(zeroblob(25), GeomFromText("POINT(5 5)", 4326), 10.0, 1); -1 # rows -1 # column -PtDistWithin(zeroblob(25), GeomFromText("POINT(5 5)", 4326), 10.0, 1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate1.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate1.testcase deleted file mode 100644 index 9e5432d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relate1.testcase +++ /dev/null @@ -1,11 +0,0 @@ -Relate - POINTs identical -:memory: #use in-memory database -SELECT Relate(geom1, geom2, "T*T***T**"), Relate(geom1, geom2, "T*F**FFF*"), Relate(geom1, geom2, "FF*FF****") FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; -1 # rows (not including the header row) -3 # columns -Relate(geom1, geom2, "T*T***T**") # overlaps -Relate(geom1, geom2, "T*F**FFF*") # equal -Relate(geom1, geom2, "FF*FF****") # disjoint -0 -1 -0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate2.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate2.testcase deleted file mode 100644 index 96fad2d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relate2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Relate - bad blob first arg -:memory: #use in-memory database -SELECT Relate(zeroblob(100), geom2, "T*T***T**") FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; -1 # rows (not including the header row) -1 # columns -Relate(zeroblob(100), geom2, "T*T***T**") --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate3.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate3.testcase deleted file mode 100644 index 071160c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relate3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Relate - non blob first arg -:memory: #use in-memory database -SELECT Relate("hello", geom2, "T*T***T**") FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; -1 # rows (not including the header row) -1 # columns -Relate("hello", geom2, "T*T***T**") --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate4.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate4.testcase deleted file mode 100644 index 3d65a64..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relate4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Relate - bad blob second arg -:memory: #use in-memory database -SELECT Relate(geom1, zeroblob(100), "T*T***T**") FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; -1 # rows (not including the header row) -1 # columns -Relate(geom1, zeroblob(100), "T*T***T**") --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate5.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate5.testcase deleted file mode 100644 index 0c599f3..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relate5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Relate - non blob second arg -:memory: #use in-memory database -SELECT Relate(geom1, "foo", "T*T***T**") FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; -1 # rows (not including the header row) -1 # columns -Relate(geom1, "foo", "T*T***T**") --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate6.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate6.testcase deleted file mode 100644 index a19e713..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relate6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Relate - non text third arg -:memory: #use in-memory database -SELECT Relate(geom1, geom2, 26.7) FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; -1 # rows (not including the header row) -1 # columns -Relate(geom1, geom2, 26.7) --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate7.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate7.testcase deleted file mode 100644 index 017e09a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relate7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Relate - bad text third arg -:memory: #use in-memory database -SELECT Relate(geom1, geom2, "") FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; -1 # rows (not including the header row) -1 # columns -Relate(geom1, geom2, "") --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate8.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate8.testcase deleted file mode 100644 index dda5980..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relate8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Relate - toxic first arg -:memory: #use in-memory database -SELECT Relate(geom1, geom2, "T*T***T**") FROM (SELECT GeomFromText('LINESTRING(1 1, 1 1)') as geom1, GeomFromText("LINESTRING(1 1, 2 2)") as geom2) dummy; -1 # rows (not including the header row) -1 # columns -Relate(geom1, geom2, "T*T***T**") -0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate9.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate9.testcase deleted file mode 100644 index 387eedd..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relate9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Relate - toxic second arg -:memory: #use in-memory database -SELECT Relate(geom1, geom2, "T*T***T**") FROM (SELECT GeomFromText("LINESTRING(1 1, 2 2)") as geom1, GeomFromText('LINESTRING(1 1, 1 1)') as geom2) dummy; -1 # rows (not including the header row) -1 # columns -Relate(geom1, geom2, "T*T***T**") -0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations1.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations1.testcase deleted file mode 100644 index 241c539..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relations1.testcase +++ /dev/null @@ -1,21 +0,0 @@ -Relationship tests - POINTs identical -:memory: #use in-memory database -SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; -1 # rows (not including the header row) -8 # columns -Equals(geom1, geom2) -Intersects(geom1, geom2) -Disjoint(geom1, geom2) -Overlaps(geom1, geom2) -Crosses(geom1, geom2) -Touches(geom1, geom2) -Within(geom1, geom2) -Contains(geom1, geom2) -1 -1 -0 -0 -0 -0 -1 -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations2.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations2.testcase deleted file mode 100644 index 6438754..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relations2.testcase +++ /dev/null @@ -1,21 +0,0 @@ -Relationship tests - POINTs different -:memory: #use in-memory database -SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(3 4)") as geom2) dummy; -1 # rows (not including the header row) -8 # columns -Equals(geom1, geom2) -Intersects(geom1, geom2) -Disjoint(geom1, geom2) -Overlaps(geom1, geom2) -Crosses(geom1, geom2) -Touches(geom1, geom2) -Within(geom1, geom2) -Contains(geom1, geom2) -0 -0 -1 -0 -0 -0 -0 -0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations3.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations3.testcase deleted file mode 100644 index eda1fa7..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relations3.testcase +++ /dev/null @@ -1,21 +0,0 @@ -Relationship tests - bad first blob -:memory: #use in-memory database -SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT zeroblob(10) as geom1, GeomFromText("POINT(3 4)") as geom2) dummy; -1 # rows (not including the header row) -8 # columns -Equals(geom1, geom2) -Intersects(geom1, geom2) -Disjoint(geom1, geom2) -Overlaps(geom1, geom2) -Crosses(geom1, geom2) -Touches(geom1, geom2) -Within(geom1, geom2) -Contains(geom1, geom2) --1 --1 --1 --1 --1 --1 --1 --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations4.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations4.testcase deleted file mode 100644 index 2e5310a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relations4.testcase +++ /dev/null @@ -1,21 +0,0 @@ -Relationship tests - bad second blob -:memory: #use in-memory database -SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT GeomFromText("POINT(3 4)") as geom1, zeroblob(10) as geom2) dummy; -1 # rows (not including the header row) -8 # columns -Equals(geom1, geom2) -Intersects(geom1, geom2) -Disjoint(geom1, geom2) -Overlaps(geom1, geom2) -Crosses(geom1, geom2) -Touches(geom1, geom2) -Within(geom1, geom2) -Contains(geom1, geom2) --1 --1 --1 --1 --1 --1 --1 --1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations5.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations5.testcase deleted file mode 100644 index 9830665..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relations5.testcase +++ /dev/null @@ -1,21 +0,0 @@ -Relationship tests - bad second arg -:memory: #use in-memory database -SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT GeomFromText("POINT(3 4)") as geom1, "hello" as geom2) dummy; -1 # rows (not including the header row) -8 # columns -Equals(geom1, geom2) -Intersects(geom1, geom2) -Disjoint(geom1, geom2) -Overlaps(geom1, geom2) -Crosses(geom1, geom2) -Touches(geom1, geom2) -Within(geom1, geom2) -Contains(geom1, geom2) --1 --1 --1 --1 --1 --1 --1 --1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations6.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations6.testcase deleted file mode 100644 index a645dc6..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relations6.testcase +++ /dev/null @@ -1,21 +0,0 @@ -Relationship tests - bad first arg -:memory: #use in-memory database -SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT "hello" as geom1, GeomFromText("POINT(3 4)") as geom2) dummy; -1 # rows (not including the header row) -8 # columns -Equals(geom1, geom2) -Intersects(geom1, geom2) -Disjoint(geom1, geom2) -Overlaps(geom1, geom2) -Crosses(geom1, geom2) -Touches(geom1, geom2) -Within(geom1, geom2) -Contains(geom1, geom2) --1 --1 --1 --1 --1 --1 --1 --1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations7.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations7.testcase deleted file mode 100644 index 714e231..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relations7.testcase +++ /dev/null @@ -1,21 +0,0 @@ -Relationship tests - toxic first arg -:memory: #use in-memory database -SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT GeomFromText('LINESTRING(1 1, 1 1)') as geom1, GeomFromText("LINESTRING(1 1, 2 2)") as geom2) dummy; -1 # rows (not including the header row) -8 # columns -Equals(geom1, geom2) -Intersects(geom1, geom2) -Disjoint(geom1, geom2) -Overlaps(geom1, geom2) -Crosses(geom1, geom2) -Touches(geom1, geom2) -Within(geom1, geom2) -Contains(geom1, geom2) -0 -1 -0 -0 -0 -0 -1 -0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations8.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations8.testcase deleted file mode 100644 index 52fbb61..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/relations8.testcase +++ /dev/null @@ -1,21 +0,0 @@ -Relationship tests - toxic second arg -:memory: #use in-memory database -SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT GeomFromText("LINESTRING(1 1, 2 2)") as geom1, GeomFromText('LINESTRING(1 1, 1 1)') as geom2) dummy; -1 # rows (not including the header row) -8 # columns -Equals(geom1, geom2) -Intersects(geom1, geom2) -Disjoint(geom1, geom2) -Overlaps(geom1, geom2) -Crosses(geom1, geom2) -Touches(geom1, geom2) -Within(geom1, geom2) -Contains(geom1, geom2) -0 -1 -0 -0 -0 -0 -0 -1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/routing6.testcase b/src/spatialite/test/sql_stmt_geos_tests/routing6.testcase deleted file mode 100644 index feb7d56..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/routing6.testcase +++ /dev/null @@ -1,10 +0,0 @@ -routing: integer ids (A*, from-to) -sql_stmt_tests/testdb1.sqlite -UPDATE roads_net SET Algorithm = 'a*'; SELECT GLength(Geometry) FROM roads_net WHERE NodeTo = 29 AND NodeFrom = 32; -4 # rows (not including the header row) -1 # columns -GLength(Geometry) -0.0018:4 -(NULL) -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify1.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify1.testcase deleted file mode 100644 index cc7f8e3..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify1.testcase +++ /dev/null @@ -1,10 +0,0 @@ -Simplify - linestring -:memory: #use in-memory database -SELECT AsText(Simplify(geom, 0.1)), AsText(SimplifyPreserveTopology(geom, 0.1)) FROM (SELECT GeomFromText("LINESTRING(1 2, 4 5)") as geom) dummy -1 # rows (not including the header row) -2 # columns -AsText(Simplify(geom, 0.1)) -AsText(SimplifyPreserveTopology(geom, 0.1)) -LINESTRING(1 2, 4 5) -LINESTRING(1 2, 4 5) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify10.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify10.testcase deleted file mode 100644 index ad1a697..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify10.testcase +++ /dev/null @@ -1,8 +0,0 @@ -SimplifyPreserveTopology - negative second arg -:memory: #use in-memory database -SELECT SimplifyPreserveTopology(GeomFromText("LINESTRING(1 2, 3 4)"), -287.3) -1 # rows (not including the header row) -1 # columns -SimplifyPreserveTopology(GeomFromText("LINESTRING(1 2, 3 4)"), -287.3) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify11.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify11.testcase deleted file mode 100644 index 0d903e8..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify11.testcase +++ /dev/null @@ -1,8 +0,0 @@ -SimplifyPreserveTopology - zeroblob arg -:memory: #use in-memory database -SELECT SimplifyPreserveTopology(zeroblob(1000), 0) -1 # rows (not including the header row) -1 # columns -SimplifyPreserveTopology(zeroblob(1000), 0) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify12.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify12.testcase deleted file mode 100644 index 0f116e8..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify12.testcase +++ /dev/null @@ -1,10 +0,0 @@ -Simplify - linestringZ -:memory: #use in-memory database -SELECT AsText(Simplify(geom, 0.1)), AsText(SimplifyPreserveTopology(geom, 0.1)) FROM (SELECT GeomFromText("LINESTRINGZ(1 2 1, 4.0001 4.9999 5, 4 5 5)") as geom) dummy -1 # rows (not including the header row) -2 # columns -AsText(Simplify(geom, 0.1)) -AsText(SimplifyPreserveTopology(geom, 0.1)) -LINESTRING Z(1 2 1, 4 5 5) -LINESTRING Z(1 2 1, 4 5 5) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify13.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify13.testcase deleted file mode 100644 index cda6aea..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify13.testcase +++ /dev/null @@ -1,10 +0,0 @@ -Simplify - linestringM -:memory: #use in-memory database -SELECT AsText(Simplify(geom, 0.1)), AsText(SimplifyPreserveTopology(geom, 0.1)) FROM (SELECT GeomFromText("LINESTRINGM(1 2 1, 4.0001 4.9999 5, 4 5 5)") as geom) dummy -1 # rows (not including the header row) -2 # columns -AsText(Simplify(geom, 0.1)) -AsText(SimplifyPreserveTopology(geom, 0.1)) -LINESTRING M(1 2 0, 4 5 0) -LINESTRING M(1 2 0, 4 5 0) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify14.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify14.testcase deleted file mode 100644 index 1c7e35a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify14.testcase +++ /dev/null @@ -1,10 +0,0 @@ -Simplify - linestringZM -:memory: #use in-memory database -SELECT AsText(Simplify(geom, 0.1)), AsText(SimplifyPreserveTopology(geom, 0.1)) FROM (SELECT GeomFromText("LINESTRINGZM(1 2 1 4, 4.0001 4.9999 5 6, 4 5 5 6)") as geom) dummy -1 # rows (not including the header row) -2 # columns -AsText(Simplify(geom, 0.1)) -AsText(SimplifyPreserveTopology(geom, 0.1)) -LINESTRING ZM(1 2 1 0, 4 5 5 0) -LINESTRING ZM(1 2 1 0, 4 5 5 0) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify15.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify15.testcase deleted file mode 100644 index ac861ff..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify15.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Simplify - toxic first arg -:memory: #use in-memory database -SELECT AsText(Simplify(GeomFromText('LINESTRING(1 1, 1 1)'),0.1)) -1 # rows (not including the header row) -1 # columns -AsText(Simplify(GeomFromText('LINESTRING(1 1, 1 1)'),0.1)) -LINESTRING(1 1, 1 1) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify16.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify16.testcase deleted file mode 100644 index d647176..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify16.testcase +++ /dev/null @@ -1,8 +0,0 @@ -SimplifyPreserveTopology - toxic first arg -:memory: #use in-memory database -SELECT AsText(SimplifyPreserveTopology(GeomFromText('LINESTRING(1 1, 1 1)'),0.1)) -1 # rows (not including the header row) -1 # columns -AsText(SimplifyPreserveTopology(GeomFromText('LINESTRING(1 1, 1 1)'),0.1)) -LINESTRING(1 1, 1 1) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify2.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify2.testcase deleted file mode 100644 index afcb759..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify2.testcase +++ /dev/null @@ -1,10 +0,0 @@ -Simplify - linestring -:memory: #use in-memory database -SELECT AsText(Simplify(geom, 0.1)), AsText(SimplifyPreserveTopology(geom, 0.1)) FROM (SELECT GeomFromText("LINESTRING(1 2, 4.0001 4.9999, 4 5)") as geom) dummy -1 # rows (not including the header row) -2 # columns -AsText(Simplify(geom, 0.1)) -AsText(SimplifyPreserveTopology(geom, 0.1)) -LINESTRING(1 2, 4 5) -LINESTRING(1 2, 4 5) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify3.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify3.testcase deleted file mode 100644 index ef1eddf..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify3.testcase +++ /dev/null @@ -1,10 +0,0 @@ -Simplify - linestring -:memory: #use in-memory database -SELECT AsText(Simplify(geom, 0)), AsText(SimplifyPreserveTopology(geom, 0)) FROM (SELECT GeomFromText("LINESTRING(1 2, 4 5)") as geom) dummy -1 # rows (not including the header row) -2 # columns -AsText(Simplify(geom, 0)) -AsText(SimplifyPreserveTopology(geom, 0)) -LINESTRING(1 2, 4 5) -LINESTRING(1 2, 4 5) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify4.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify4.testcase deleted file mode 100644 index 60dd36e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Simplify - bad arg -:memory: #use in-memory database -SELECT Simplify("hello", 0) -1 # rows (not including the header row) -1 # columns -Simplify("hello", 0) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify5.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify5.testcase deleted file mode 100644 index ddd3686..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Simplify - bad second arg -:memory: #use in-memory database -SELECT Simplify(GeomFromText("LINESTRING(1 2, 3 4)"), "hello") -1 # rows (not including the header row) -1 # columns -Simplify(GeomFromText("LINESTRING(1 2, 3 4)"), "hello") -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify6.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify6.testcase deleted file mode 100644 index 0a817a8..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Simplify - negative second arg -:memory: #use in-memory database -SELECT Simplify(GeomFromText("LINESTRING(1 2, 3 4)"), -287.3) -1 # rows (not including the header row) -1 # columns -Simplify(GeomFromText("LINESTRING(1 2, 3 4)"), -287.3) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify7.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify7.testcase deleted file mode 100644 index d01e4f0..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Simplify - zeroblob arg -:memory: #use in-memory database -SELECT Simplify(zeroblob(1000), 0) -1 # rows (not including the header row) -1 # columns -Simplify(zeroblob(1000), 0) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify8.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify8.testcase deleted file mode 100644 index 271ee5f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify8.testcase +++ /dev/null @@ -1,8 +0,0 @@ -SimplifyPreserveTopology - bad arg -:memory: #use in-memory database -SELECT SimplifyPreserveTopology("hello", 0) -1 # rows (not including the header row) -1 # columns -SimplifyPreserveTopology("hello", 0) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify9.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify9.testcase deleted file mode 100644 index 8d6ae5e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/simplify9.testcase +++ /dev/null @@ -1,8 +0,0 @@ -SimplifyPreserveTopology - bad second arg -:memory: #use in-memory database -SELECT SimplifyPreserveTopology(GeomFromText("LINESTRING(1 2, 3 4)"), "hello") -1 # rows (not including the header row) -1 # columns -SimplifyPreserveTopology(GeomFromText("LINESTRING(1 2, 3 4)"), "hello") -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area1.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area1.testcase deleted file mode 100644 index db47265..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_area1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Area - Polygon with 1 interior -:memory: #use in-memory database -SELECT ST_Area(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1))")); -1 # rows (not including the header row) -1 # columns -ST_Area(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1))")) -12.0 # 16.0 for the exterior, 4.0 for the interior diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area2.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area2.testcase deleted file mode 100644 index dc297ea..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_area2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Area - Simple Polygon -:memory: #use in-memory database -SELECT ST_Area(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))")); -1 # rows (not including the header row) -1 # columns -ST_Area(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))")) -16.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area3.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area3.testcase deleted file mode 100644 index 194d9fd..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_area3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Area - Linestring -:memory: #use in-memory database -SELECT ST_Area(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0)")); -1 # rows (not including the header row) -1 # columns -ST_Area(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0)")) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area4.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area4.testcase deleted file mode 100644 index 755bbfa..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_area4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Area - Linestring not closed -:memory: #use in-memory database -SELECT ST_Area(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0)")); -1 # rows (not including the header row) -1 # columns -ST_Area(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0)")) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area5.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area5.testcase deleted file mode 100644 index aa0737e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_area5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Area - Point -:memory: #use in-memory database -SELECT ST_Area(GeomFromText("POINT(0 0)")); -1 # rows (not including the header row) -1 # columns -ST_Area(GeomFromText("POINT(0 0)")) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area6.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area6.testcase deleted file mode 100644 index 9e3c3f2..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_area6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Area - bad blob (error) -:memory: #use in-memory database -SELECT ST_Area(zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_Area(zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area7.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area7.testcase deleted file mode 100644 index b9fc315..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_area7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Area - Empty linestring -:memory: #use in-memory database -SELECT ST_Area(GeomFromText("LINESTRING()")); -1 # rows (not including the header row) -1 # columns -ST_Area(GeomFromText("LINESTRING()")) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area8.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area8.testcase deleted file mode 100644 index 76c6605..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_area8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Area - text (error) -:memory: #use in-memory database -SELECT ST_Area("hello"); -1 # rows (not including the header row) -1 # columns -ST_Area("hello") -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area9.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area9.testcase deleted file mode 100644 index 59cc9ad..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_area9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Area - Toxic Polygon -:memory: #use in-memory database -SELECT ST_Area(GeomFromText('POLYGON((0 0, 0 0, 0 4, 4 0, 0 0))')); -1 # rows (not including the header row) -1 # columns -ST_Area(GeomFromText('POLYGON((0 0, 0 0, 0 4, 4 0, 0 0))')) -8.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length1.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length1.testcase deleted file mode 100644 index 00e2b30..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - Polygon with 1 interior -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1))")); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1))")) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length10.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length10.testcase deleted file mode 100644 index 970d3d8..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - MultiLinestring -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("MULTILINESTRING((0 0, 0 4, 4 4, 4 0, 0 0), (10 10, 11 10, 11 11))")); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("MULTILINESTRING((0 0, 0 4, 4 4, 4 0, 0 0), (10 10, 11 10, 11 11))")) -18.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length11.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length11.testcase deleted file mode 100644 index 046b0e0..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - GeometryCollection -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(100 100), POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)), LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0), LINESTRING(10 10, 11 10, 11 11), POINT(200 200))")); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(100 100), POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)), LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0), LINESTRING(10 10, 11 10, 11 11), POINT(200 200))")) -18.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length12.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length12.testcase deleted file mode 100644 index 9d68499..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - Polygon with 1 interior (Long/Lat metric - GreatCircle) -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 0); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 0) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length13.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length13.testcase deleted file mode 100644 index 5c7f177..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - Polygon with 1 interior (Long/Lat metric - Ellipsoid) -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 1); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 1) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length14.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length14.testcase deleted file mode 100644 index 7317197..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - Linestring (Long/Lat metric - GreatCircle) -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 0); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 0) -49082.124419:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length15.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length15.testcase deleted file mode 100644 index f938e04..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - Linestring (Long/Lat metric - Ellipsoid) -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 1); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 1) -48935.452049:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length16.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length16.testcase deleted file mode 100644 index aafc4ab..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - GeometryCollection (Long/Lat metric - GreatCircle) -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 0); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 0) -49082.124419:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length17.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length17.testcase deleted file mode 100644 index af8bf2b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - GeometryCollection (Long/Lat metric - Ellipsoid) -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 1); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 1) -48935.452049:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length18.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length18.testcase deleted file mode 100644 index 2e185cc..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - GeometryCollection (Long/Lat metric - text use_ellipsoid) -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length2.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length2.testcase deleted file mode 100644 index 37c1cb7..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - Simple Polygon -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))")); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))")) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length3.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length3.testcase deleted file mode 100644 index 44ae959..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - Linestring -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0)")); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0)")) -16.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length4.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length4.testcase deleted file mode 100644 index ae27c54..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - Linestring not closed -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0)")); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0)")) -12.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length5.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length5.testcase deleted file mode 100644 index 8e551b7..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - Point -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("POINT(0 0)")); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("POINT(0 0)")) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length6.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length6.testcase deleted file mode 100644 index e72696b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - bad blob (error) -:memory: #use in-memory database -SELECT ST_Length(zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_Length(zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length7.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length7.testcase deleted file mode 100644 index 56fa9ed..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - Empty linestring -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("LINESTRING()")); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("LINESTRING()")) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length8.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length8.testcase deleted file mode 100644 index 5a01e97..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - toxic linestring -:memory: #use in-memory database -SELECT ST_Length(GeomFromText('LINESTRING(1 1, 1 1)')); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText('LINESTRING(1 1, 1 1)')) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length9.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length9.testcase deleted file mode 100644 index 5bcd7ac..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_length9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Length - MultiPolygon -:memory: #use in-memory database -SELECT ST_Length(GeomFromText("MULTIPOLYGON(((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10)))")); -1 # rows (not including the header row) -1 # columns -ST_Length(GeomFromText("MULTIPOLYGON(((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10)))")) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter1.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter1.testcase deleted file mode 100644 index 210acaa..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - Polygon with 1 interior -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1))")); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1))")) -24.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter10.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter10.testcase deleted file mode 100644 index 0931eb8..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - MultiLinestring -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("MULTILINESTRING((0 0, 0 4, 4 4, 4 0, 0 0), (10 10, 11 10, 11 11))")); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("MULTILINESTRING((0 0, 0 4, 4 4, 4 0, 0 0), (10 10, 11 10, 11 11))")) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter11.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter11.testcase deleted file mode 100644 index f07a773..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - GeometryCollection -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(100 100), POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)), LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0), LINESTRING(10 10, 11 10, 11 11), POINT(200 200))")); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(100 100), POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)), LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0), LINESTRING(10 10, 11 10, 11 11), POINT(200 200))")) -28.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter12.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter12.testcase deleted file mode 100644 index 74bed5e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - Polygon with 1 interior (Long/Lat metric - GreatCircle) -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 0); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 0) -102862.738784:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter13.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter13.testcase deleted file mode 100644 index ba30e17..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - Polygon with 1 interior (Long/Lat metric - Ellipsoid) -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 1); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 1) -102821.231470:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter14.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter14.testcase deleted file mode 100644 index 80c6f75..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - Linestring (Long/Lat metric - GreatCircle) -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 0); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 0) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter15.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter15.testcase deleted file mode 100644 index 95a7c03..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - Linestring (Long/Lat metric - Ellipsoid) -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 1); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 1) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter16.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter16.testcase deleted file mode 100644 index 1d8655a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - GeometryCollection (Long/Lat metric - GreatCircle) -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 0); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 0) -102862.738784:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter17.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter17.testcase deleted file mode 100644 index 16dc3ec..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - GeometryCollection (Long/Lat metric - Ellipsoid) -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 1); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 1) -102821.231470:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter18.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter18.testcase deleted file mode 100644 index d3606a6..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - GeometryCollection (Long/Lat metric - text use_ellipsoid) -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter2.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter2.testcase deleted file mode 100644 index 595cc5d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - Simple Polygon -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))")); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))")) -16.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter3.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter3.testcase deleted file mode 100644 index 9ca2f4c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - Linestring -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0)")); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0)")) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter4.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter4.testcase deleted file mode 100644 index 9c8cf7f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - Linestring not closed -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0)")); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0)")) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter5.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter5.testcase deleted file mode 100644 index fb1c1b8..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - Point -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("POINT(0 0)")); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("POINT(0 0)")) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter6.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter6.testcase deleted file mode 100644 index 29b15e8..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - bad blob (error) -:memory: #use in-memory database -SELECT ST_Perimeter(zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter7.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter7.testcase deleted file mode 100644 index 49c59ec..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - Empty linestring -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("LINESTRING()")); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("LINESTRING()")) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter8.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter8.testcase deleted file mode 100644 index 76c5e77..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - toxic linestring -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText('LINESTRING(1 1, 1 1)')); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText('LINESTRING(1 1, 1 1)')) -0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter9.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter9.testcase deleted file mode 100644 index 44a98df..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Perimeter - MultiPolygon -:memory: #use in-memory database -SELECT ST_Perimeter(GeomFromText("MULTIPOLYGON(((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10)))")); -1 # rows (not including the header row) -1 # columns -ST_Perimeter(GeomFromText("MULTIPOLYGON(((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10)))")) -28.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference1.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference1.testcase deleted file mode 100644 index 965b023..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/symdifference1.testcase +++ /dev/null @@ -1,9 +0,0 @@ -symdifference - two points -:memory: #use in-memory database -SELECT AsText(SymDifference(Makepoint(1,2), MakePoint(2,3))) -1 # rows (not including the header row) -1 # columns -AsText(SymDifference(Makepoint(1,2), MakePoint(2,3))) -MULTIPOINT(1 2, 2 3) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference10.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference10.testcase deleted file mode 100644 index 0f2fc1e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/symdifference10.testcase +++ /dev/null @@ -1,8 +0,0 @@ -symdifference - toxic first point -:memory: #use in-memory database -SELECT AsText(SymDifference(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))); -1 # rows (not including the header row) -1 # columns -AsText(SymDifference(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference11.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference11.testcase deleted file mode 100644 index 05460fe..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/symdifference11.testcase +++ /dev/null @@ -1,8 +0,0 @@ -symdifference - toxic second point -:memory: #use in-memory database -SELECT AsText(SymDifference(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) -1 # rows (not including the header row) -1 # columns -AsText(SymDifference(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference2.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference2.testcase deleted file mode 100644 index a9bc4a1..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/symdifference2.testcase +++ /dev/null @@ -1,9 +0,0 @@ -symdifference - two points, same -:memory: #use in-memory database -SELECT AsText(SymDifference(Makepoint(1,2), MakePoint(1,2))) -1 # rows (not including the header row) -1 # columns -AsText(SymDifference(Makepoint(1,2), MakePoint(1,2))) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference3.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference3.testcase deleted file mode 100644 index eb3ce00..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/symdifference3.testcase +++ /dev/null @@ -1,9 +0,0 @@ -symdifference - zeroblob first arg -:memory: #use in-memory database -SELECT AsText(SymDifference(zeroblob(50), MakePoint(1,2))) -1 # rows (not including the header row) -1 # columns -AsText(SymDifference(zeroblob(50), MakePoint(1,2))) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference4.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference4.testcase deleted file mode 100644 index 4354cbd..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/symdifference4.testcase +++ /dev/null @@ -1,9 +0,0 @@ -symdifference - zeroblob second arg -:memory: #use in-memory database -SELECT AsText(SymDifference(MakePoint(1,2),zeroblob(50))) -1 # rows (not including the header row) -1 # columns -AsText(SymDifference(MakePoint(1,2),zeroblob(50))) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference5.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference5.testcase deleted file mode 100644 index f5b5c1c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/symdifference5.testcase +++ /dev/null @@ -1,9 +0,0 @@ -symdifference - non-blob first point -:memory: #use in-memory database -SELECT AsText(SymDifference("hello", MakePoint(1,2))) -1 # rows (not including the header row) -1 # columns -AsText(SymDifference("hello", MakePoint(1,2))) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference6.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference6.testcase deleted file mode 100644 index 17cf53a..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/symdifference6.testcase +++ /dev/null @@ -1,9 +0,0 @@ -symdifference - non-blob second point -:memory: #use in-memory database -SELECT AsText(SymDifference(MakePoint(1,2),"hello")) -1 # rows (not including the header row) -1 # columns -AsText(SymDifference(MakePoint(1,2),"hello")) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference7.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference7.testcase deleted file mode 100644 index 96a2d6d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/symdifference7.testcase +++ /dev/null @@ -1,9 +0,0 @@ -symdifference - two pointZ -:memory: #use in-memory database -SELECT AsText(SymDifference(GeomFromText("POINTZ(1 3 4)"),GeomFromText("POINTZ(4 2 6)"))) -1 # rows (not including the header row) -1 # columns -AsText(SymDifference(GeomFromText("POINTZ(1 3 4)"),GeomFromText("POINTZ(4 2 6)"))) -MULTIPOINT Z(1 3 4, 4 2 6) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference8.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference8.testcase deleted file mode 100644 index 24e42b9..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/symdifference8.testcase +++ /dev/null @@ -1,9 +0,0 @@ -symdifference - two pointM -:memory: #use in-memory database -SELECT AsText(SymDifference(GeomFromText("POINTM(1 3 4)"),GeomFromText("POINTM(4 2 6)"))) -1 # rows (not including the header row) -1 # columns -AsText(SymDifference(GeomFromText("POINTM(1 3 4)"),GeomFromText("POINTM(4 2 6)"))) -MULTIPOINT M(1 3 0, 4 2 0) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference9.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference9.testcase deleted file mode 100644 index 5ab8b92..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/symdifference9.testcase +++ /dev/null @@ -1,9 +0,0 @@ -symdifference - two pointZM -:memory: #use in-memory database -SELECT AsText(SymDifference(GeomFromText("POINTZM(1 3 6 4)"),GeomFromText("POINTZM(4 2 3 6)"))) -1 # rows (not including the header row) -1 # columns -AsText(SymDifference(GeomFromText("POINTZM(1 3 6 4)"),GeomFromText("POINTZM(4 2 3 6)"))) -MULTIPOINT ZM(1 3 6 0, 4 2 3 0) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union1.testcase b/src/spatialite/test/sql_stmt_geos_tests/union1.testcase deleted file mode 100644 index d3bf92d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union1.testcase +++ /dev/null @@ -1,9 +0,0 @@ -union - two points -:memory: #use in-memory database -SELECT AsText(GUnion(Makepoint(1,2), MakePoint(2,3))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(Makepoint(1,2), MakePoint(2,3))) -MULTIPOINT(1 2, 2 3) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union10.testcase b/src/spatialite/test/sql_stmt_geos_tests/union10.testcase deleted file mode 100644 index 5e00d38..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union10.testcase +++ /dev/null @@ -1,8 +0,0 @@ -union - POINTM -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("POINTM(1 3 4)"),GeomFromText("POINTM(2 5 9)"))) -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("POINTM(1 3 4)"),GeomFromText("POINTM(2 5 9)"))) -MULTIPOINT M(1 3 0, 2 5 0) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union11.testcase b/src/spatialite/test/sql_stmt_geos_tests/union11.testcase deleted file mode 100644 index 4a9fd02..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union11.testcase +++ /dev/null @@ -1,8 +0,0 @@ -union - POINTZM -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("POINTZM(1 3 4 5)"),GeomFromText("POINTZM(2 5 9 5)"))) -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("POINTZM(1 3 4 5)"),GeomFromText("POINTZM(2 5 9 5)"))) -MULTIPOINT ZM(1 3 4 0, 2 5 9 0) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union12.testcase b/src/spatialite/test/sql_stmt_geos_tests/union12.testcase deleted file mode 100644 index 157c509..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union12.testcase +++ /dev/null @@ -1,8 +0,0 @@ -union - POLYGON and POINT -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))"),GeomFromText("POINT(0 0)"))) -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))"),GeomFromText("POINT(0 0)"))) -POLYGON((0 0, 0 2, 2 2, 2 0, 0 0)) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union13.testcase b/src/spatialite/test/sql_stmt_geos_tests/union13.testcase deleted file mode 100644 index 096b114..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union13.testcase +++ /dev/null @@ -1,8 +0,0 @@ -union - MULTIPOLYGON and POINT -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("MULTIPOLYGON(((0 0, 2 0, 2 2, 0 2, 0 0)))"),GeomFromText("POINT(0 0)"))) -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("MULTIPOLYGON(((0 0, 2 0, 2 2, 0 2, 0 0)))"),GeomFromText("POINT(0 0)"))) -MULTIPOLYGON(((0 0, 0 2, 2 2, 2 0, 0 0))) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union14.testcase b/src/spatialite/test/sql_stmt_geos_tests/union14.testcase deleted file mode 100644 index b88df05..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union14.testcase +++ /dev/null @@ -1,8 +0,0 @@ -union - LINESTRING and POINT -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("LINESTRING(0 0, 2 0, 2 2, 0 2)"),GeomFromText("POINT(0 0)"))) -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("LINESTRING(0 0, 2 0, 2 2, 0 2)"),GeomFromText("POINT(0 0)"))) -LINESTRING(0 0, 2 0, 2 2, 0 2) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union15.testcase b/src/spatialite/test/sql_stmt_geos_tests/union15.testcase deleted file mode 100644 index 49636cd..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union15.testcase +++ /dev/null @@ -1,8 +0,0 @@ -union - MULTILINESTRING and POINT -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("MULTILINESTRING((0 0, 2 0, 2 2, 0 2))"),GeomFromText("POINT(0 0)"))) -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("MULTILINESTRING((0 0, 2 0, 2 2, 0 2))"),GeomFromText("POINT(0 0)"))) -MULTILINESTRING((0 0, 2 0, 2 2, 0 2)) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union16.testcase b/src/spatialite/test/sql_stmt_geos_tests/union16.testcase deleted file mode 100644 index 01d30a9..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union16.testcase +++ /dev/null @@ -1,8 +0,0 @@ -union - MULTIPOINTM -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("MULTIPOINTM(1 3 4)"),GeomFromText("POINTM(1 3 4)"))) -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("MULTIPOINTM(1 3 4)"),GeomFromText("POINTM(1 3 4)"))) -MULTIPOINT M(1 3 0) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union17.testcase b/src/spatialite/test/sql_stmt_geos_tests/union17.testcase deleted file mode 100644 index 92d5b4f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -union - POLYGON with hole -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("POLYGON((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11))"), GeomFromText("POLYGON((15 10, 16 10, 16 15, 10 15, 15 10))"))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("POLYGON((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11))"), GeomFromText("POLYGON((15 10, 16 10, 16 15, 10 15, 15 10))"))) -POLYGON((15 10, 10 10, 10 15, 15 15, 16 15, 16 10, 15 10), (11 11, 12 11, 12 12, 11 12, 11 11)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union18.testcase b/src/spatialite/test/sql_stmt_geos_tests/union18.testcase deleted file mode 100644 index da7d581..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -union - POLYGON Z with hole -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("POLYGONZ((10 10 100, 15 10 100, 15 15 100, 10 15 100, 10 10 100), (11 11 102, 12 11 102, 12 12 102, 11 12 102, 11 11 102))"), GeomFromText("POLYGONZ((15 10 100, 16 10 100, 16 15 100, 10 15 100, 15 10 100))"))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("POLYGONZ((10 10 100, 15 10 100, 15 15 100, 10 15 100, 10 10 100), (11 11 102, 12 11 102, 12 12 102, 11 12 102, 11 11 102))"), GeomFromText("POLYGONZ((15 10 100, 16 10 100, 16 15 100, 10 15 100, 15 10 100))"))) -POLYGON Z((15 10 100, 10 10 100, 10 15 100, 15 15 100, 16 15 100, 16 10 100, 15 10 100), (11 11 102, 12 11 102, 12 12 102, 11 12 102, 11 11 102)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union19.testcase b/src/spatialite/test/sql_stmt_geos_tests/union19.testcase deleted file mode 100644 index 33ae015..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -union - POLYGON M with hole -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("POLYGONM((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1))"), GeomFromText("POLYGONM((15 10 2, 16 10 1, 16 15 3, 10 15 4, 15 10 2))"))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("POLYGONM((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1))"), GeomFromText("POLYGONM((15 10 2, 16 10 1, 16 15 3, 10 15 4, 15 10 2))"))) -POLYGON M((15 10 0, 10 10 0, 10 15 0, 15 15 0, 16 15 0, 16 10 0, 15 10 0), (11 11 0, 12 11 0, 12 12 0, 11 12 0, 11 11 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union2.testcase b/src/spatialite/test/sql_stmt_geos_tests/union2.testcase deleted file mode 100644 index a79d59b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -union - two common points -:memory: #use in-memory database -SELECT AsText(GUnion(Makepoint(1,2), MakePoint(1,2))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(Makepoint(1,2), MakePoint(1,2))) -POINT(1 2) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/union20.testcase b/src/spatialite/test/sql_stmt_geos_tests/union20.testcase deleted file mode 100644 index 6eb498f..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -union - POLYGON ZM with hole -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("POLYGONZM((10 10 100 1, 15 10 100 2, 15 15 100 3, 10 15 100 4, 10 10 100 1), (11 11 102 1, 12 11 102 2, 12 12 102 3, 11 12 102 4, 11 11 102 1))"), GeomFromText("POLYGONZM((15 10 100 2, 16 10 100 1, 16 15 100 3, 10 15 100 4, 15 10 100 2))"))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("POLYGONZM((10 10 100 1, 15 10 100 2, 15 15 100 3, 10 15 100 4, 10 10 100 1), (11 11 102 1, 12 11 102 2, 12 12 102 3, 11 12 102 4, 11 11 102 1))"), GeomFromText("POLYGONZM((15 10 100 2, 16 10 100 1, 16 15 100 3, 10 15 100 4, 15 10 100 2))"))) -POLYGON ZM((15 10 100 0, 10 10 100 0, 10 15 100 0, 15 15 100 0, 16 15 100 0, 16 10 100 0, 15 10 100 0), (11 11 102 0, 12 11 102 0, 12 12 102 0, 11 12 102 0, 11 11 102 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union21.testcase b/src/spatialite/test/sql_stmt_geos_tests/union21.testcase deleted file mode 100644 index a138df7..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union21.testcase +++ /dev/null @@ -1,8 +0,0 @@ -union - GEOMETRYCOLLECTION (Polygon with hole / Linestring) -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(30 30, 31 31), POLYGON((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11)))"), GeomFromText("GEOMETRYCOLLECTION(LINESTRING(31 31, 35 0), POLYGON((15 10, 16 10, 16 15, 10 15, 15 10)))"))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(30 30, 31 31), POLYGON((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11)))"), GeomFromText("GEOMETRYCOLLECTION(LINESTRING(31 31, 35 0), POLYGON((15 10, 16 10, 16 15, 10 15, 15 10)))"))) -GEOMETRYCOLLECTION(LINESTRING(30 30, 31 31), LINESTRING(31 31, 35 0), POLYGON((15 10, 10 10, 10 15, 15 15, 16 15, 16 10, 15 10), (11 11, 12 11, 12 12, 11 12, 11 11))) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union22.testcase b/src/spatialite/test/sql_stmt_geos_tests/union22.testcase deleted file mode 100644 index 6addd2b..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union22.testcase +++ /dev/null @@ -1,7 +0,0 @@ -union - GEOMETRYCOLLECTION Z (Polygon with hole / Linestring) -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(30 30 100, 31 31 101), POLYGONZ((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100)))"), GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(31 31 101, 35 0 100), POLYGONZ((15 10 101, 16 10 102, 16 15 102, 10 15 103, 15 10 101)))"))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(30 30 100, 31 31 101), POLYGONZ((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100)))"), GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(31 31 101, 35 0 100), POLYGONZ((15 10 101, 16 10 102, 16 15 102, 10 15 103, 15 10 101)))"))) -GEOMETRYCOLLECTION Z(LINESTRING Z(30 30 100, 31 31 101), LINESTRING Z(31 31 101, 35 0 100), POLYGON Z((15 10 101, 10 10 100, 10 15 103, 15 15 102, 16 15 102, 16 10 102, 15 10 101), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100))) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union23.testcase b/src/spatialite/test/sql_stmt_geos_tests/union23.testcase deleted file mode 100644 index 4f89405..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union23.testcase +++ /dev/null @@ -1,7 +0,0 @@ -union - GEOMETRYCOLLECTION M (Polygon with hole / Linestring) -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(30 30 1, 31 31 2), POLYGONM((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1)))"), GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(31 31 2, 35 0 1), POLYGONM((15 10 2, 16 10 1, 16 15 3, 10 15 4, 15 10 2)))"))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(30 30 1, 31 31 2), POLYGONM((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1)))"), GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(31 31 2, 35 0 1), POLYGONM((15 10 2, 16 10 1, 16 15 3, 10 15 4, 15 10 2)))"))) -GEOMETRYCOLLECTION M(LINESTRING M(30 30 0, 31 31 0), LINESTRING M(31 31 0, 35 0 0), POLYGON M((15 10 0, 10 10 0, 10 15 0, 15 15 0, 16 15 0, 16 10 0, 15 10 0), (11 11 0, 12 11 0, 12 12 0, 11 12 0, 11 11 0))) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union24.testcase b/src/spatialite/test/sql_stmt_geos_tests/union24.testcase deleted file mode 100644 index 3475014..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union24.testcase +++ /dev/null @@ -1,7 +0,0 @@ -union - GEOMETRYCOLLECTION ZM (Polygon with hole / Linestring) -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(30 30 100 1, 31 31 101 2), POLYGONZM((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 4, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 4, 11 11 100 1)))"), GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(31 31 101 2, 35 0 100 1), POLYGONZM((15 10 101 2, 16 10 102 1, 16 15 102 3, 10 15 103 4, 15 10 101 2)))"))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(30 30 100 1, 31 31 101 2), POLYGONZM((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 4, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 4, 11 11 100 1)))"), GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(31 31 101 2, 35 0 100 1), POLYGONZM((15 10 101 2, 16 10 102 1, 16 15 102 3, 10 15 103 4, 15 10 101 2)))"))) -GEOMETRYCOLLECTION ZM(LINESTRING ZM(30 30 100 0, 31 31 101 0), LINESTRING ZM(31 31 101 0, 35 0 100 0), POLYGON ZM((15 10 101 0, 10 10 100 0, 10 15 103 0, 15 15 102 0, 16 15 102 0, 16 10 102 0, 15 10 101 0), (11 11 100 0, 12 11 101 0, 12 12 102 0, 11 12 103 0, 11 11 100 0))) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union25.testcase b/src/spatialite/test/sql_stmt_geos_tests/union25.testcase deleted file mode 100644 index 8c0646d..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union25.testcase +++ /dev/null @@ -1,7 +0,0 @@ -union - MULTILINESTRING (two Lines) -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("LINESTRING(30 30, 31 31)"), GeomFromText("LINESTRING(20 20, 10 10)"))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("LINESTRING(30 30, 31 31)"), GeomFromText("LINESTRING(20 20, 10 10)"))) -MULTILINESTRING((30 30, 31 31), (20 20, 10 10)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union26.testcase b/src/spatialite/test/sql_stmt_geos_tests/union26.testcase deleted file mode 100644 index 8e9e403..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union26.testcase +++ /dev/null @@ -1,7 +0,0 @@ -union - MULTIPOLYGON (two Polygons) -:memory: #use in-memory database -SELECT AsText(ST_ForceLHR(GUnion(GeomFromText("POLYGON((10 10, 15 10, 15 15, 10 15, 10 10))"), GeomFromText("POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))")))); -1 # rows (not including the header row) -1 # columns -AsText(ST_ForceLHR(GUnion(GeomFromText("POLYGON((10 10, 15 10, 15 15, 10 15, 10 10))"), GeomFromText("POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))")))) -MULTIPOLYGON(((10 10, 10 15, 15 15, 15 10, 10 10)), ((1 1, 1 2, 2 2, 2 1, 1 1))) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union27.testcase b/src/spatialite/test/sql_stmt_geos_tests/union27.testcase deleted file mode 100644 index 5d7bc57..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union27.testcase +++ /dev/null @@ -1,9 +0,0 @@ -union - POINT -:memory: #use in-memory database -SELECT AsText(GUnion(makepoint(1,2))) -1 # rows (not including the header row) -1 # columns -AsText(GUnion(makepoint(1,2))) -POINT(1 2) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union28.testcase b/src/spatialite/test/sql_stmt_geos_tests/union28.testcase deleted file mode 100644 index d92b7ba..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union28.testcase +++ /dev/null @@ -1,9 +0,0 @@ -union - zeroblob -:memory: #use in-memory database -SELECT GUnion(zeroblob(100)) -1 # rows (not including the header row) -1 # columns -GUnion(zeroblob(100)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union29.testcase b/src/spatialite/test/sql_stmt_geos_tests/union29.testcase deleted file mode 100644 index 6c96dc4..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union29.testcase +++ /dev/null @@ -1,9 +0,0 @@ -union - non-blob -:memory: #use in-memory database -SELECT GUnion(4.78) -1 # rows (not including the header row) -1 # columns -GUnion(4.78) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union3.testcase b/src/spatialite/test/sql_stmt_geos_tests/union3.testcase deleted file mode 100644 index fdff5e6..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -union - null first point -:memory: #use in-memory database -SELECT AsText(GUnion(null, MakePoint(2,3))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(null, MakePoint(2,3))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union4.testcase b/src/spatialite/test/sql_stmt_geos_tests/union4.testcase deleted file mode 100644 index e402aaf..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -union - null second point -:memory: #use in-memory database -SELECT AsText(GUnion(MakePoint(2,3), null)); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(MakePoint(2,3), null)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union5.testcase b/src/spatialite/test/sql_stmt_geos_tests/union5.testcase deleted file mode 100644 index f48fe0c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -union - zeroblob second point -:memory: #use in-memory database -SELECT AsText(GUnion(MakePoint(2,3), zeroblob(48))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(MakePoint(2,3), zeroblob(48))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union6.testcase b/src/spatialite/test/sql_stmt_geos_tests/union6.testcase deleted file mode 100644 index 357d4e2..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -union - zeroblob first point -:memory: #use in-memory database -SELECT AsText(GUnion(zeroblob(48), MakePoint(2,3))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(zeroblob(48), MakePoint(2,3))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union7.testcase b/src/spatialite/test/sql_stmt_geos_tests/union7.testcase deleted file mode 100644 index c1d523e..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -union - toxic first point -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union8.testcase b/src/spatialite/test/sql_stmt_geos_tests/union8.testcase deleted file mode 100644 index 76378de..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union8.testcase +++ /dev/null @@ -1,8 +0,0 @@ -union - toxic second point -:memory: #use in-memory database -SELECT AsText(GUnion(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))); -1 # rows (not including the header row) -1 # columns -AsText(GUnion(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geos_tests/union9.testcase b/src/spatialite/test/sql_stmt_geos_tests/union9.testcase deleted file mode 100644 index 310442c..0000000 --- a/src/spatialite/test/sql_stmt_geos_tests/union9.testcase +++ /dev/null @@ -1,8 +0,0 @@ -union - POINTZ -:memory: #use in-memory database -SELECT AsText(GUnion(GeomFromText("POINTZ(1 3 4)"),GeomFromText("POINTZ(2 5 9)"))) -1 # rows (not including the header row) -1 # columns -AsText(GUnion(GeomFromText("POINTZ(1 3 4)"),GeomFromText("POINTZ(2 5 9)"))) -MULTIPOINT Z(1 3 4, 2 5 9) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint1.testcase deleted file mode 100644 index 9b3480f..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - two points -:memory: #use in-memory database -SELECT AsText(ClosestPoint(MakePoint(1, 2), MakePoint(4, 6))); -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(MakePoint(1, 2), MakePoint(4, 6))) -POINT(1 2) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint10.testcase deleted file mode 100644 index 06e4ada..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint10.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - Point and line -:memory: #use in-memory database -SELECT AsText(ClosestPoint(GeomFromText("LINESTRING(0 0, 0 10)"), MakePoint(4, 6))); -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(GeomFromText("LINESTRING(0 0, 0 10)"), MakePoint(4, 6))) -POINT(0 6) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint11.testcase deleted file mode 100644 index b2d4da6..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint11.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - Point and lineZ -:memory: #use in-memory database -SELECT AsText(ClosestPoint(GeomFromText("LINESTRINGZ(0 0 0, 0 10 5)"), MakePoint(4, 6))); -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(GeomFromText("LINESTRINGZ(0 0 0, 0 10 5)"), MakePoint(4, 6))) -POINT Z(0 6 3) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint12.testcase deleted file mode 100644 index c814ef8..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint12.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - PointZ and line -:memory: #use in-memory database -SELECT AsText(ClosestPoint(GeomFromText("LINESTRING(0 0, 0 10)"), GeomFromText("POINTZ(4 6 4)"))); -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(GeomFromText("LINESTRING(0 0, 0 10)"), GeomFromText("POINTZ(4 6 4)"))) -POINT(0 6) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint13.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint13.testcase deleted file mode 100644 index d4fe2fe..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint13.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - lineZ and Point -:memory: #use in-memory database -SELECT AsText(ClosestPoint(MakePoint(4, 6), GeomFromText("LINESTRINGZ(0 0 0, 0 10 5)"))); -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(MakePoint(4, 6), GeomFromText("LINESTRINGZ(0 0 0, 0 10 5)"))) -POINT(4 6) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint14.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint14.testcase deleted file mode 100644 index 8e401e2..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint14.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - LINE AND PointZ -:memory: #use in-memory database -SELECT AsText(ClosestPoint(GeomFromText("POINTZ(4 6 4)"), GeomFromText("LINESTRING(0 0, 0 10)"))); -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(GeomFromText("POINTZ(4 6 4)"), GeomFromText("LINESTRING(0 0, 0 10)"))) -POINT Z(4 6 4) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint15.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint15.testcase deleted file mode 100644 index bfefd70..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint15.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - toxic geom -:memory: #use in-memory database -SELECT AsText(ClosestPoint(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(130, -35))) -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(130, -35))) -POINT(135.2 -34.5) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint16.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint16.testcase deleted file mode 100644 index 36deea9..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint16.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - toxic geom + line -:memory: #use in-memory database -SELECT AsText(ClosestPoint(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), GeomFromText("LINESTRING(130 -35, 0 0)"))) -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), GeomFromText("LINESTRING(130 -35, 0 0)"))) -POINT(135.2 -34.5) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint17.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint17.testcase deleted file mode 100644 index 7ad41f7..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint17.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - polygon with interior and Point -:memory: #use in-memory database -SELECT AsText(ClosestPoint(MakePoint(4, 6), GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),( 1 1, 3 1, 3 3, 1 3, 1 1))"))) -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(MakePoint(4, 6), GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),( 1 1, 3 1, 3 3, 1 3, 1 1))"))) -POINT(4 6) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint18.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint18.testcase deleted file mode 100644 index 9a53b82..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint18.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - polygonZ with interior and Point -:memory: #use in-memory database -SELECT AsText(ClosestPoint(GeomFromText("POINTZ(4 6 1)"), GeomFromText("POLYGONZ((0 0 1, 10 0 2, 10 10 3, 0 10 2, 0 0 1),( 1 1 4, 3 1 5, 3 3 6, 1 3 5, 1 1 4))"))) -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(GeomFromText("POINTZ(4 6 1)"), GeomFromText("POLYGONZ((0 0 1, 10 0 2, 10 10 3, 0 10 2, 0 0 1),( 1 1 4, 3 1 5, 3 3 6, 1 3 5, 1 1 4))"))) -POINT Z(4 6 1) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint19.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint19.testcase deleted file mode 100644 index f035c3b..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint19.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - polygonM with interior and Point -:memory: #use in-memory database -SELECT AsText(ClosestPoint(GeomFromText("POINTM(4 6 1)"), GeomFromText("POLYGONM((0 0 1, 10 0 2, 10 10 3, 0 10 2, 0 0 1),( 1 1 4, 3 1 5, 3 3 6, 1 3 5, 1 1 4))"))) -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(GeomFromText("POINTM(4 6 1)"), GeomFromText("POLYGONM((0 0 1, 10 0 2, 10 10 3, 0 10 2, 0 0 1),( 1 1 4, 3 1 5, 3 3 6, 1 3 5, 1 1 4))"))) -POINT M(4 6 0) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint2.testcase deleted file mode 100644 index 0c023e9..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - coincident points -:memory: #use in-memory database -SELECT ClosestPoint(MakePoint(1, 2), MakePoint(1, 2)); -1 # rows (not including the header row) -1 # columns -ClosestPoint(MakePoint(1, 2), MakePoint(1, 2)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint20.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint20.testcase deleted file mode 100644 index 3e0b485..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint20.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - polygonZM with interior and Point -:memory: #use in-memory database -SELECT AsText(ClosestPoint(GeomFromText("POINTZM(4 6 1 3)"), GeomFromText("POLYGONZM((0 0 1 3, 10 0 2 3, 10 10 3 3, 0 10 2 3, 0 0 1 3),( 1 1 4 1, 3 1 5 1, 3 3 6 1, 1 3 5 2, 1 1 4 1))"))) -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(GeomFromText("POINTZM(4 6 1 3)"), GeomFromText("POLYGONZM((0 0 1 3, 10 0 2 3, 10 10 3 3, 0 10 2 3, 0 0 1 3),( 1 1 4 1, 3 1 5 1, 3 3 6 1, 1 3 5 2, 1 1 4 1))"))) -POINT ZM(4 6 1 0) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint21.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint21.testcase deleted file mode 100644 index 94fbb19..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint21.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - Point and lineM -:memory: #use in-memory database -SELECT AsText(ClosestPoint(GeomFromText("LINESTRINGM(0 0 0, 0 10 5)"), MakePoint(4, 6))); -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(GeomFromText("LINESTRINGM(0 0 0, 0 10 5)"), MakePoint(4, 6))) -POINT M(0 6 0) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint22.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint22.testcase deleted file mode 100644 index 447560f..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint22.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - Point and lineZM -:memory: #use in-memory database -SELECT AsText(ClosestPoint(GeomFromText("LINESTRINGZM(0 0 0 0, 0 10 5 2)"), MakePoint(4, 6))) -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(GeomFromText("LINESTRINGZM(0 0 0 0, 0 10 5 2)"), MakePoint(4, 6))) -POINT ZM(0 6 3 0) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint3.testcase deleted file mode 100644 index a1d8a63..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - bad first geom -:memory: #use in-memory database -SELECT ClosestPoint(zeroblob(67), MakePoint(1, 2)); -1 # rows (not including the header row) -1 # columns -ClosestPoint(zeroblob(67), MakePoint(1, 2)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint4.testcase deleted file mode 100644 index 75d18dd..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - bad second blob -:memory: #use in-memory database -SELECT ClosestPoint(MakePoint(1, 2), zeroblob(25)); -1 # rows (not including the header row) -1 # columns -ClosestPoint(MakePoint(1, 2), zeroblob(25)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint5.testcase deleted file mode 100644 index 8c4be8a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - text first geom -:memory: #use in-memory database -SELECT ClosestPoint("world", MakePoint(1, 2)); -1 # rows (not including the header row) -1 # columns -ClosestPoint("world", MakePoint(1, 2)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint6.testcase deleted file mode 100644 index d341fb6..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - text second blob -:memory: #use in-memory database -SELECT ClosestPoint(MakePoint(1, 2), "hello"); -1 # rows (not including the header row) -1 # columns -ClosestPoint(MakePoint(1, 2), "hello") -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint7.testcase deleted file mode 100644 index f07738a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - two pointZs -:memory: #use in-memory database -SELECT AsText(ClosestPoint(GeomFromText("POINTZ(1 2 3)"), GeomFromText("POINTZ(4 6 0)"))); -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(GeomFromText("POINTZ(1 2 3)"), GeomFromText("POINTZ(4 6 0)"))) -POINT Z(1 2 3) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint8.testcase deleted file mode 100644 index dd5addd..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint8.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - two pointMs -:memory: #use in-memory database -SELECT AsText(ClosestPoint(GeomFromText("POINTM(1 2 4)"), GeomFromText("POINTM(4 6 5)"))); -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(GeomFromText("POINTM(1 2 4)"), GeomFromText("POINTM(4 6 5)"))) -POINT M(1 2 0) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint9.testcase deleted file mode 100644 index a717cb0..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/closestpoint9.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Closest Point - two pointZMs -:memory: #use in-memory database -SELECT AsText(ClosestPoint(GeomFromText("POINTZM(1 2 0 4)"), GeomFromText("POINTZM(4 6 1 5)"))); -1 # rows (not including the header row) -1 # columns -AsText(ClosestPoint(GeomFromText("POINTZM(1 2 0 4)"), GeomFromText("POINTZM(4 6 1 5)"))) -POINT ZM(1 2 0 0) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/coveredby1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/coveredby1.testcase deleted file mode 100644 index 3cb9efd..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/coveredby1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CoveredBy - non-geom1 -:memory: #use in-memory database -SELECT CoveredBy(geom1,geom2) from (SELECT "hello" as geom1,GeomFromText("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))") as geom2) dummy; -1 # rows (not including the header row) -1 # columns -CoveredBy(geom1,geom2) --1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/coveredby2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/coveredby2.testcase deleted file mode 100644 index 3f187e4..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/coveredby2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CoveredBy - non-geom2 -:memory: #use in-memory database -SELECT CoveredBy(geom1,geom2) from (SELECT "hello" as geom2,GeomFromText("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))") as geom1) dummy; -1 # rows (not including the header row) -1 # columns -CoveredBy(geom1,geom2) --1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/covers1.testcase deleted file mode 100644 index c24e65a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Covers - non-geom1 -:memory: #use in-memory database -SELECT Covers(geom1,geom2) from (SELECT "hello" as geom1,GeomFromText("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))") as geom2) dummy; -1 # rows (not including the header row) -1 # columns -Covers(geom1,geom2) --1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/covers2.testcase deleted file mode 100644 index 3ef35ce..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Covers - non-geom2 -:memory: #use in-memory database -SELECT Covers(geom1,geom2) from (SELECT "hello" as geom2,GeomFromText("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))") as geom1) dummy; -1 # rows (not including the header row) -1 # columns -Covers(geom1,geom2) --1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered1.testcase deleted file mode 100644 index 79f4e14..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered1.testcase +++ /dev/null @@ -1,17 +0,0 @@ -Covers / Covered -:memory: #use in-memory database -SELECT Covers(geom1,geom2),CoveredBy(geom1,geom2),Covers(geom2,geom1),CoveredBy(geom2,geom1) from (SELECT GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom1,GeomFromText("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))") as geom2) dummy; -1 # rows (not including the header row) -4 # columns -Covers(geom1,geom2) -CoveredBy(geom1,geom2) -Covers(geom2,geom1) -CoveredBy(geom2,geom1) -0 -1 -1 -0 - - - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered2.testcase deleted file mode 100644 index a249bb0..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered2.testcase +++ /dev/null @@ -1,17 +0,0 @@ -Covers / Covered - partial overlap -:memory: #use in-memory database -SELECT Covers(geom1,geom2),CoveredBy(geom1,geom2),Covers(geom2,geom1),CoveredBy(geom2,geom1) from (SELECT GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom1,GeomFromText("POLYGON((0.5 0.5, 2.5 0.5, 2.5 2.5, 0.5 2.5, 0.5 0.5))") as geom2) dummy; -1 # rows (not including the header row) -4 # columns -Covers(geom1,geom2) -CoveredBy(geom1,geom2) -Covers(geom2,geom1) -CoveredBy(geom2,geom1) -0 -0 -0 -0 - - - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered3.testcase deleted file mode 100644 index 86b95ee..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered3.testcase +++ /dev/null @@ -1,17 +0,0 @@ -Covers / Covered - identical -:memory: #use in-memory database -SELECT Covers(geom1,geom2),CoveredBy(geom1,geom2),Covers(geom2,geom1),CoveredBy(geom2,geom1) from (SELECT GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom1,GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom2) dummy; -1 # rows (not including the header row) -4 # columns -Covers(geom1,geom2) -CoveredBy(geom1,geom2) -Covers(geom2,geom1) -CoveredBy(geom2,geom1) -1 -1 -1 -1 - - - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered4.testcase deleted file mode 100644 index be43e86..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered4.testcase +++ /dev/null @@ -1,11 +0,0 @@ -CoveredBy- zero blob first arg -:memory: #use in-memory database -SELECT CoveredBy(geom1,geom2) from (SELECT zeroblob(48) as geom1,GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom2) dummy; -1 # rows (not including the header row) -1 # columns -CoveredBy(geom1,geom2) --1 - - - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered5.testcase deleted file mode 100644 index 27e5500..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered5.testcase +++ /dev/null @@ -1,11 +0,0 @@ -Covers - zero blob second arg -:memory: #use in-memory database -SELECT Covers(geom2,geom1) from (SELECT zeroblob(48) as geom1,GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom2) dummy; -1 # rows (not including the header row) -1 # columns -Covers(geom2,geom1) --1 - - - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered6.testcase deleted file mode 100644 index 86ba616..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered6.testcase +++ /dev/null @@ -1,11 +0,0 @@ -Covers - zero blob first arg -:memory: #use in-memory database -SELECT Covers(geom1,geom2) from (SELECT zeroblob(48) as geom1,GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom2) dummy; -1 # rows (not including the header row) -1 # columns -Covers(geom1,geom2) --1 - - - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered7.testcase deleted file mode 100644 index 5cf4e26..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/covers_covered7.testcase +++ /dev/null @@ -1,11 +0,0 @@ -CoveredBy - zero blob second arg -:memory: #use in-memory database -SELECT CoveredBy(geom2,geom1) from (SELECT zeroblob(48) as geom1,GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom2) dummy; -1 # rows (not including the header row) -1 # columns -CoveredBy(geom2,geom1) --1 - - - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo1.testcase deleted file mode 100644 index 920de0b..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 2 arguments, 2D -:memory: #use in-memory database -SELECT CreateTopologyTables(4326, "XY"); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables(4326, "XY") -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo10.testcase deleted file mode 100644 index 55cad2c..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 3 arguments, integer prefix (error) -:memory: #use in-memory database -SELECT CreateTopologyTables(3, 4326, 3); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables(3, 4326, 3) -0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo11.testcase deleted file mode 100644 index fffd330..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 3 arguments, float dim (error) -:memory: #use in-memory database -SELECT CreateTopologyTables("hello_world", 4326, 3.3); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables("hello_world", 4326, 3.3) -0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo12.testcase deleted file mode 100644 index 8b12dfc..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 3 arguments, spaces in prefix -:memory: #use in-memory database -SELECT CreateTopologyTables("hello world", 4326, 3); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables("hello world", 4326, 3) -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo13.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo13.testcase deleted file mode 100644 index 068d863..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 3 arguments, quote in prefix -:memory: #use in-memory database -SELECT CreateTopologyTables("hello'_world", 4326, 3); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables("hello'_world", 4326, 3) -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo14.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo14.testcase deleted file mode 100644 index a155ed5..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 2 arguments, 2D int -:memory: #use in-memory database -SELECT CreateTopologyTables(4326, 2); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables(4326, 2) -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo15.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo15.testcase deleted file mode 100644 index 92c20c8..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 2 arguments, 3D int -:memory: #use in-memory database -SELECT CreateTopologyTables(4326, 3); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables(4326, 3) -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo16.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo16.testcase deleted file mode 100644 index a32e31e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 2 arguments, 4D int (error) -:memory: #use in-memory database -SELECT CreateTopologyTables(4326, 4); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables(4326, 4) -0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo17.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo17.testcase deleted file mode 100644 index c2e9c50..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 2 arguments, text SRID (error) -:memory: #use in-memory database -SELECT CreateTopologyTables("4326", 2); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables("4326", 2) -0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo18.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo18.testcase deleted file mode 100644 index 8ea52ed..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 2 arguments, float dims (error) -:memory: #use in-memory database -SELECT CreateTopologyTables(4326, 2.0); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables(4326, 2.0) -0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo2.testcase deleted file mode 100644 index 64f2b61..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 2 arguments, 3D -:memory: #use in-memory database -SELECT CreateTopologyTables(4326, "XYZ"); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables(4326, "XYZ") -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo3.testcase deleted file mode 100644 index 586f181..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 3 arguments, 2D -:memory: #use in-memory database -SELECT CreateTopologyTables("my_prefix", 4326, "XY"); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables("my_prefix", 4326, "XY") -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo4.testcase deleted file mode 100644 index 3e75e6b..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 3 arguments, 3D -:memory: #use in-memory database -SELECT CreateTopologyTables("my_prefix", 4326, "XYZ"); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables("my_prefix", 4326, "XYZ") -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo5.testcase deleted file mode 100644 index 0a1b86d..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 3 arguments, 3D int -:memory: #use in-memory database -SELECT CreateTopologyTables("my_prefix", 4326, 3); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables("my_prefix", 4326, 3) -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo6.testcase deleted file mode 100644 index ae3429c..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 3 arguments, 2D int -:memory: #use in-memory database -SELECT CreateTopologyTables("my_prefix", 4326, 2); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables("my_prefix", 4326, 2) -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo7.testcase deleted file mode 100644 index bffbf4e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 3 arguments, 4D (error) -:memory: #use in-memory database -SELECT CreateTopologyTables("my_prefix", 4326, 4); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables("my_prefix", 4326, 4) -0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo8.testcase deleted file mode 100644 index fbb59d8..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 3 arguments, text SRID (error) -:memory: #use in-memory database -SELECT CreateTopologyTables("my_prefix", "WGS-84", 3); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables("my_prefix", "WGS-84", 3) -0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo9.testcase deleted file mode 100644 index b01f8b2..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/createtopo9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -CreateTopology - 3 arguments, 0 SRID (error) -:memory: #use in-memory database -SELECT CreateTopologyTables("my_prefix", 0, 3); -1 # rows (not including the header row) -1 # columns -CreateTopologyTables("my_prefix", 0, 3) -0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr1.testcase deleted file mode 100644 index 5984a7e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance Long/Lat metric (great circle) - two 2D points -:memory: #use in-memory database -SELECT ST_Distance(MakePoint(11.1, 42.1), MakePoint(11.2, 42.2), 0); -1 # rows (not including the header row) -1 # columns -ST_Distance(MakePoint(11.1, 42.1), MakePoint(11.2, 42.2), 0) -15577.651163:6 - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr10.testcase deleted file mode 100644 index fe840be..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr10.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance Long/Lat metric (ellipsoid) - Linestring/Polygon -:memory: #use in-memory database -SELECT ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), 1); -1 # rows (not including the header row) -1 # columns -ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), 1) -11061.654932:6 - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr11.testcase deleted file mode 100644 index 70e5eb3..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr11.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance Long/Lat metric (text use_ellipsoid) -:memory: #use in-memory database -SELECT ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), 'alpha') -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr12.testcase deleted file mode 100644 index 60ace5c..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr12.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance Long/Lat metric (NULL use_ellipsoid) -:memory: #use in-memory database -SELECT ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), NULL); -1 # rows (not including the header row) -1 # columns -ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), NULL) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr2.testcase deleted file mode 100644 index b13ec9a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance Long/Lat metric (great circle) - two 3D points -:memory: #use in-memory database -SELECT ST_Distance(MakePointZ(11.1, 42.1, 0.1), MakePointZ(11.2, 42.2, 0.2), 0); -1 # rows (not including the header row) -1 # columns -ST_Distance(MakePointZ(11.1, 42.1, 0.1), MakePointZ(11.2, 42.2, 0.2), 0) -15577.651163:6 - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr3.testcase deleted file mode 100644 index 154408a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance Long/Lat metric (great circle) - two 2D-M points -:memory: #use in-memory database -SELECT ST_Distance(MakePointM(11.1, 42.1, 0.1), MakePointM(11.2, 42.2, 0.2), 0); -1 # rows (not including the header row) -1 # columns -ST_Distance(MakePointM(11.1, 42.1, 0.1), MakePointM(11.2, 42.2, 0.2), 0) -15577.651163:6 - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr4.testcase deleted file mode 100644 index 981e089..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance Long/Lat metric (great circle) - two 3D-M points -:memory: #use in-memory database -SELECT ST_Distance(MakePointZM(11.1, 42.1, 0.1, 1), MakePointZM(11.2, 42.2, 0.2, 2), 0); -1 # rows (not including the header row) -1 # columns -ST_Distance(MakePointZM(11.1, 42.1, 0.1, 1), MakePointZM(11.2, 42.2, 0.2, 2), 0) -15577.651163:6 - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr5.testcase deleted file mode 100644 index 6a839ed..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance Long/Lat metric (ellipsoid) - two 2D points -:memory: #use in-memory database -SELECT ST_Distance(MakePoint(11.1, 42.1), MakePoint(11.2, 42.2), 1); -1 # rows (not including the header row) -1 # columns -ST_Distance(MakePoint(11.1, 42.1), MakePoint(11.2, 42.2), 1) -15545.889589:6 - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr6.testcase deleted file mode 100644 index 3a7b0ac..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance Long/Lat metric (ellipsoid) - two 3D points -:memory: #use in-memory database -SELECT ST_Distance(MakePointZ(11.1, 42.1, 0.1), MakePointZ(11.2, 42.2, 0.2), 1); -1 # rows (not including the header row) -1 # columns -ST_Distance(MakePointZ(11.1, 42.1, 0.1), MakePointZ(11.2, 42.2, 0.2), 1) -15545.889589:6 - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr7.testcase deleted file mode 100644 index d1db500..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance Long/Lat metric (ellipsoid) - two 2D-M points -:memory: #use in-memory database -SELECT ST_Distance(MakePointM(11.1, 42.1, 0.1), MakePointM(11.2, 42.2, 0.2), 1); -1 # rows (not including the header row) -1 # columns -ST_Distance(MakePointM(11.1, 42.1, 0.1), MakePointM(11.2, 42.2, 0.2), 1) -15545.889589:6 - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr8.testcase deleted file mode 100644 index 85cfb0b..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr8.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance Long/Lat metric (ellipsoid) - two 3D-M points -:memory: #use in-memory database -SELECT ST_Distance(MakePointZM(11.1, 42.1, 0.1, 1), MakePointZM(11.2, 42.2, 0.2, 2), 1); -1 # rows (not including the header row) -1 # columns -ST_Distance(MakePointZM(11.1, 42.1, 0.1, 1), MakePointZM(11.2, 42.2, 0.2, 2), 1) -15545.889589:6 - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr9.testcase deleted file mode 100644 index 982f62a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/distance_geogr9.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Distance Long/Lat metric (great circle) - Linestring/Polygon -:memory: #use in-memory database -SELECT ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), 0); -1 # rows (not including the header row) -1 # columns -ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), 0) -11119.507973:6 - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance1.testcase deleted file mode 100644 index d3b1124..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -HausdorffDistance - parallel lines -:memory: #use in-memory database -SELECT HausdorffDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) -1 # rows (not including the header row) -1 # columns -HausdorffDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) -2.0 - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance2.testcase deleted file mode 100644 index 09fc1a1..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -HausdorffDistance - bad blob first arg -:memory: #use in-memory database -SELECT HausdorffDistance(zeroblob(100), GeomFromText("LINESTRING(0 2, 10 2)")) -1 # rows (not including the header row) -1 # columns -HausdorffDistance(zeroblob(100), GeomFromText("LINESTRING(0 2, 10 2)")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance3.testcase deleted file mode 100644 index 773162a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -HausdorffDistance - non blob first arg -:memory: #use in-memory database -SELECT HausdorffDistance(3, GeomFromText("LINESTRING(0 2, 10 2)")) -1 # rows (not including the header row) -1 # columns -HausdorffDistance(3, GeomFromText("LINESTRING(0 2, 10 2)")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance4.testcase deleted file mode 100644 index a4118a3..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -HausdorffDistance - bad blob second arg -:memory: #use in-memory database -SELECT HausdorffDistance(GeomFromText("LINESTRING(0 0, 10 0)"), zeroblob(40)) -1 # rows (not including the header row) -1 # columns -HausdorffDistance(GeomFromText("LINESTRING(0 0, 10 0)"), zeroblob(40)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance5.testcase deleted file mode 100644 index 3731e45..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -HausdorffDistance - non blob second arg -:memory: #use in-memory database -SELECT HausdorffDistance(GeomFromText("LINESTRING(0 0, 10 0)"), "hello") -1 # rows (not including the header row) -1 # columns -HausdorffDistance(GeomFromText("LINESTRING(0 0, 10 0)"), "hello") -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance6.testcase deleted file mode 100644 index 12b4f20..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -HausdorffDistance - two multipoints -:memory: #use in-memory database -SELECT HausdorffDistance(GeomFromText("MULTIPOINT(0 0, 10 0)"), GeomFromText("MULTIPOINT(0 2, 10 2)")) -1 # rows (not including the header row) -1 # columns -HausdorffDistance(GeomFromText("MULTIPOINT(0 0, 10 0)"), GeomFromText("MULTIPOINT(0 2, 10 2)")) -2.0 - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance7.testcase deleted file mode 100644 index 57a8da2..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hausdorffdistance7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -HausdorffDistance - co-incident multipoints -:memory: #use in-memory database -SELECT HausdorffDistance(GeomFromText("MULTIPOINT(0 0, 10 0)"), GeomFromText("MULTIPOINT(0 0, 10 0)")) -1 # rows (not including the header row) -1 # columns -HausdorffDistance(GeomFromText("MULTIPOINT(0 0, 10 0)"), GeomFromText("MULTIPOINT(0 0, 10 0)")) -0.0 - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid1.testcase deleted file mode 100644 index 177aaf9..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid1.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - NULL geom -:memory: #use in-memory database -SELECT HexagonalGrid(NULL, 1.0); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(NULL, 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid10.testcase deleted file mode 100644 index 2da7a76..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid10.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Polygon geom - text edges_only -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 'alpha'); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 'alpha') -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid11.testcase deleted file mode 100644 index 6d85bf8..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid11.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Polygon geom - double edges_only -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 4.5); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 4.5) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid12.testcase deleted file mode 100644 index 951db8e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid12.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Polygon geom - BLOB edges_only -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, zeroblob(4)); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, zeroblob(4)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid13.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid13.testcase deleted file mode 100644 index 03ccfc9..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid13.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Polygon geom - NULL origin -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, NULL); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, NULL) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid14.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid14.testcase deleted file mode 100644 index f95ddd6..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid14.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Polygon geom - zeroblob origin -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, zeroblob(4)); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, zeroblob(4)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid15.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid15.testcase deleted file mode 100644 index 01dd250..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid15.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Polygon geom - Linestring origin -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('LINESTRING(0 0, 1 1)')); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('LINESTRING(0 0, 1 1)')) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid16.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid16.testcase deleted file mode 100644 index 9ad5aff..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid16.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Polygon geom - Polygon Origin -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid17.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid17.testcase deleted file mode 100644 index e280184..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid17.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Polygon geom - negative size -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), -1.0); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), -1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid18.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid18.testcase deleted file mode 100644 index 480d9f3..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid18.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Polygon geom - zero size -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 0.0); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 0.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid19.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid19.testcase deleted file mode 100644 index 9718588..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid19.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Polygon geom - MultiPoint Origin -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('MULTIPOINT(0 0, 1 1)')); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('MULTIPOINT(0 0, 1 1)')) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid2.testcase deleted file mode 100644 index 38f425a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid2.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - zeroblob geom -:memory: #use in-memory database -SELECT HexagonalGrid(zeroblob(4), 1.0); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(zeroblob(4), 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid20.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid20.testcase deleted file mode 100644 index ef3914a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -HexagonalGrid - valid - with Origin -:memory: #use in-memory database -SELECT AsText(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 0, GeomFromText('POINT(0.1 0.1)'))); -1 # rows (not including the header row) -1 # columns -AsText(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 0, GeomFromText('POINT(0.1 0.1)'))) -MULTIPOLYGON(((0.1 0.1, 0.6 -0.766025, 1.6 -0.766025, 2.1 0.1, 1.6 0.966025, 0.6 0.966025, 0.1 0.1)), ((-1.4 0.966025, -0.9 0.1, 0.1 0.1, 0.6 0.966025, 0.1 1.832051, -0.9 1.832051, -1.4 0.966025)), ((1.6 0.966025, 2.1 0.1, 3.1 0.1, 3.6 0.966025, 3.1 1.832051, 2.1 1.832051, 1.6 0.966025)), ((0.1 1.832051, 0.6 0.966025, 1.6 0.966025, 2.1 1.832051, 1.6 2.698076, 0.6 2.698076, 0.1 1.832051))) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid21.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid21.testcase deleted file mode 100644 index c8bd97a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid21.testcase +++ /dev/null @@ -1,10 +0,0 @@ -HexagonalGrid - valid - no Origin -:memory: #use in-memory database -SELECT AsText(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0)); -1 # rows (not including the header row) -1 # columns -AsText(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0)) -MULTIPOLYGON(((0 0, 0.5 -0.866025, 1.5 -0.866025, 2 0, 1.5 0.866025, 0.5 0.866025, 0 0)), ((-1.5 0.866025, -1 0, 0 0, 0.5 0.866025, 0 1.732051, -1 1.732051, -1.5 0.866025)), ((1.5 0.866025, 2 0, 3 0, 3.5 0.866025, 3 1.732051, 2 1.732051, 1.5 0.866025)), ((0 1.732051, 0.5 0.866025, 1.5 0.866025, 2 1.732051, 1.5 2.598076, 0.5 2.598076, 0 1.732051))) - - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid22.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid22.testcase deleted file mode 100644 index aaacd35..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid22.testcase +++ /dev/null @@ -1,7 +0,0 @@ -HexagonalGrid - valid - with Origin, edges_only -:memory: #use in-memory database -SELECT ST_Length(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1, GeomFromText('POINT(0.1 0.1)'))); -1 # rows (not including the header row) -1 # columns -ST_Length(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1, GeomFromText('POINT(0.1 0.1)'))) -24.0 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid23.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid23.testcase deleted file mode 100644 index a54198f..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid23.testcase +++ /dev/null @@ -1,7 +0,0 @@ -HexagonalGrid - valid - no Origin, edges_only -:memory: #use in-memory database -SELECT ST_Length(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1)); -1 # rows (not including the header row) -1 # columns -ST_Length(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1)) -19.0 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid3.testcase deleted file mode 100644 index 9a307de..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid3.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Point geom -:memory: #use in-memory database -SELECT HexagonalGrid(MakePoint(1, 1, 4326), 1.0); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(MakePoint(1, 1, 4326), 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid4.testcase deleted file mode 100644 index d29a67a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid4.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Linestring geom -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('LINESTRING(1 1, 2 2)', 4326), 1.0); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('LINESTRING(1 1, 2 2)', 4326), 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid5.testcase deleted file mode 100644 index cde71cb..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid5.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Collection (Point - Polygon) geom -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid6.testcase deleted file mode 100644 index efe7980..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid6.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Collection (Linestring - Polygon) geom -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 2 2), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 2 2), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid7.testcase deleted file mode 100644 index 6d849ce..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid7.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Polygon geom - NULL size -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), NULL); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), NULL) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid8.testcase deleted file mode 100644 index 273dd19..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid8.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Polygon geom - alpha size -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 'alpha'); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 'alpha') -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid9.testcase deleted file mode 100644 index a863d24..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/hexgrid9.testcase +++ /dev/null @@ -1,9 +0,0 @@ -HexagonalGrid - Polygon geom - NULL edges_only -:memory: #use in-memory database -SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, NULL); -1 # rows (not including the header row) -1 # columns -HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, NULL) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint1.testcase deleted file mode 100644 index 5ccbd95..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate equidistant points - basic line -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), 0.5)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), 0.5)) -MULTIPOINT M(0.428746 0.257248 0.5, 0.857493 0.514496 1, 1.286239 0.771744 1.5, 1.714986 1.028992 2, 2.143732 1.286239 2.5, 2.572479 1.543487 3, 3.001225 1.800735 3.5, 3.429972 2.057983 4, 3.858718 2.315231 4.5, 4.287465 2.572479 5, 4.716211 2.829727 5.5, 5.144958 3.086975 6, 5.573704 3.344222 6.5, 6.00245 3.60147 7, 6.431197 3.858718 7.5, 6.859943 4.115966 8, 7.28869 4.373214 8.5, 7.717436 4.630462 9, 8.146183 4.88771 9.5, 8.574929 5.144958 10, 9.003676 5.402205 10.5, 9.432422 5.659453 11, 9.861169 5.916701 11.5) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint10.testcase deleted file mode 100644 index a11dd52..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate equidistant points - wrong geometry type -:memory: #use in-memory database -SELECT Line_Interpolate_Equidistant_Points(GeomFromText("POLYGON((0 0, 10 6, 10 0, 0 0))"), 0.6) -1 # rows (not including the header row) -1 # columns -Line_Interpolate_Equidistant_Points(GeomFromText("POLYGON((0 0, 10 6, 10 0, 0 0))"), 0.6) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint11.testcase deleted file mode 100644 index efccde5..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate equidistant points - wrong geometry type -:memory: #use in-memory database -SELECT Line_Interpolate_Equidistant_Points(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),POLYGON((0 0, 10 0, 10 10, 0 0)))"), 0.6) -1 # rows (not including the header row) -1 # columns -Line_Interpolate_Equidistant_Points(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),POLYGON((0 0, 10 0, 10 10, 0 0)))"), 0.6) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint12.testcase deleted file mode 100644 index 875a201..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate equidistant points - basic lineZ -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRINGZ(0 0 4, 10 6 14)"), 2.5)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRINGZ(0 0 4, 10 6 14)"), 2.5)) -MULTIPOINT ZM(2.143732 1.286239 6.143732 2.5, 4.287465 2.572479 8.287465 5, 6.431197 3.858718 10.431197 7.5, 8.574929 5.144958 12.574929 10) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint13.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint13.testcase deleted file mode 100644 index 33da445..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate equidistant points - basic lineZM -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRINGZM(0 0 4 2, 10 6 14 12)"), 2.5)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRINGZM(0 0 4 2, 10 6 14 12)"), 2.5)) -MULTIPOINT ZM(2.143732 1.286239 6.143732 2.5, 4.287465 2.572479 8.287465 5, 6.431197 3.858718 10.431197 7.5, 8.574929 5.144958 12.574929 10) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint14.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint14.testcase deleted file mode 100644 index c0d3afc..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate equidistant points - basic lineM -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRINGM(0 0 4, 10 6 14)"), 2.5)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRINGM(0 0 4, 10 6 14)"), 2.5)) -MULTIPOINT M(2.143732 1.286239 2.5, 4.287465 2.572479 5, 6.431197 3.858718 7.5, 8.574929 5.144958 10) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint2.testcase deleted file mode 100644 index 2d6b39a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate equidistant points - basic line -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), 5)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), 5)) -MULTIPOINT M(4.287465 2.572479 5, 8.574929 5.144958 10) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint3.testcase deleted file mode 100644 index 446b627..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate equidistant points - basic line, exceding distance -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 1 1)"), 3)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 1 1)"), 3)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint4.testcase deleted file mode 100644 index c3f3b55..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate equidistant points - basic line, zero distance -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), 0)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), 0)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint5.testcase deleted file mode 100644 index 20b54e7..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate equidistant points - basic line, negative distance -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), -1)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), -1)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint6.testcase deleted file mode 100644 index 0b19efe..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate equidistant points - bad blob -:memory: #use in-memory database -SELECT Line_Interpolate_Equidistant_Points(zeroblob(100), 0.5) -1 # rows (not including the header row) -1 # columns -Line_Interpolate_Equidistant_Points(zeroblob(100), 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint7.testcase deleted file mode 100644 index ecbcbff..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate equidistant points - non-blob -:memory: #use in-memory database -SELECT Line_Interpolate_Equidistant_Points("hello", 0.5) -1 # rows (not including the header row) -1 # columns -Line_Interpolate_Equidistant_Points("hello", 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint8.testcase deleted file mode 100644 index 35e7063..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate equidistant points - non-number -:memory: #use in-memory database -SELECT Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), "hello") -1 # rows (not including the header row) -1 # columns -Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), "hello") -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint9.testcase deleted file mode 100644 index 5888a60..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolateequidistantpoint9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate equidistant points - wrong geometry type -:memory: #use in-memory database -SELECT Line_Interpolate_Equidistant_Points(GeomFromText("POINT(10 6)"), 0.6) -1 # rows (not including the header row) -1 # columns -Line_Interpolate_Equidistant_Points(GeomFromText("POINT(10 6)"), 0.6) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint1.testcase deleted file mode 100644 index 601dad5..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate point - basic line -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 0.5)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 0.5)) -POINT(5 3) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint10.testcase deleted file mode 100644 index 5dc03e1..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate point - wrong geometry type -:memory: #use in-memory database -SELECT Line_Interpolate_Point(GeomFromText("POLYGON((0 0, 10 6, 10 0, 0 0))"), 0.6) -1 # rows (not including the header row) -1 # columns -Line_Interpolate_Point(GeomFromText("POLYGON((0 0, 10 6, 10 0, 0 0))"), 0.6) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint11.testcase deleted file mode 100644 index fa7b66f..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate point - wrong geometry type -:memory: #use in-memory database -SELECT Line_Interpolate_Point(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),POLYGON((0 0, 10 0, 10 10, 0 0)))"), 0.6) -1 # rows (not including the header row) -1 # columns -Line_Interpolate_Point(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),POLYGON((0 0, 10 0, 10 10, 0 0)))"), 0.6) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint12.testcase deleted file mode 100644 index 7fae3b2..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate point - basic lineZ -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRINGZ(0 0 4, 10 6 14)"), 0.5)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Point(GeomFromText("LINESTRINGZ(0 0 4, 10 6 14)"), 0.5)) -POINT Z(5 3 9) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint13.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint13.testcase deleted file mode 100644 index 4a483ef..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate point - basic lineZM -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRINGZM(0 0 4 2, 10 6 14 12)"), 0.5)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Point(GeomFromText("LINESTRINGZM(0 0 4 2, 10 6 14 12)"), 0.5)) -POINT ZM(5 3 9 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint14.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint14.testcase deleted file mode 100644 index 409c1d6..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate point - basic lineM -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRINGM(0 0 4, 10 6 14)"), 0.5)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Point(GeomFromText("LINESTRINGM(0 0 4, 10 6 14)"), 0.5)) -POINT M(5 3 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint2.testcase deleted file mode 100644 index 601dad5..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate point - basic line -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 0.5)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 0.5)) -POINT(5 3) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint3.testcase deleted file mode 100644 index f451b8b..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate point - basic line, endpoint -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 1)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 1)) -POINT(10 6) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint4.testcase deleted file mode 100644 index 7ba55dc..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate point - basic line, out of range -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), -1)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), -1)) -POINT(0 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint5.testcase deleted file mode 100644 index cefaa84..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate point - basic line, out of range -:memory: #use in-memory database -SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 1.6)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 1.6)) -POINT(10 6) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint6.testcase deleted file mode 100644 index 4a2bcfe..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate point - bad blob -:memory: #use in-memory database -SELECT Line_Interpolate_Point(zeroblob(100), 0.5) -1 # rows (not including the header row) -1 # columns -Line_Interpolate_Point(zeroblob(100), 0.5) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint7.testcase deleted file mode 100644 index 09a53e5..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate point - non-blob -:memory: #use in-memory database -SELECT Line_Interpolate_Point("hello", 0.5) -1 # rows (not including the header row) -1 # columns -Line_Interpolate_Point("hello", 0.5) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint8.testcase deleted file mode 100644 index 84b61e2..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate point - non-number -:memory: #use in-memory database -SELECT Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), "hello") -1 # rows (not including the header row) -1 # columns -Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), "hello") -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint9.testcase deleted file mode 100644 index fcabedc..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/interpolatepoint9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -interpolate point - wrong geometry type -:memory: #use in-memory database -SELECT Line_Interpolate_Point(GeomFromText("POINT(10 6)"), 0.6) -1 # rows (not including the header row) -1 # columns -Line_Interpolate_Point(GeomFromText("POINT(10 6)"), 0.6) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge1.testcase deleted file mode 100644 index c98c289..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linemerge - bad blob -:memory: #use in-memory database -SELECT LineMerge(zeroblob(44)) -1 # rows (not including the header row) -1 # columns -LineMerge(zeroblob(44)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge10.testcase deleted file mode 100644 index 239f95c..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge10.testcase +++ /dev/null @@ -1,9 +0,0 @@ -linemerge - weird linestring -:memory: #use in-memory database -SELECT AsText(LineMerge(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5)"))) -1 # rows (not including the header row) -1 # columns -AsText(LineMerge(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5)"))) -LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge2.testcase deleted file mode 100644 index 10d4fa6..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linemerge - non-blob -:memory: #use in-memory database -SELECT LineMerge(44) -1 # rows (not including the header row) -1 # columns -LineMerge(44) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge3.testcase deleted file mode 100644 index 5dfc403..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linemerge - single line -:memory: #use in-memory database -SELECT AsText(LineMerge(GeomFromText("LINESTRING(0 0, 2 3)"))) -1 # rows (not including the header row) -1 # columns -AsText(LineMerge(GeomFromText("LINESTRING(0 0, 2 3)"))) -LINESTRING(0 0, 2 3) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge4.testcase deleted file mode 100644 index 1c5e1a2..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linemerge - single line Z -:memory: #use in-memory database -SELECT AsText(LineMerge(GeomFromText("LINESTRINGZ(0 0 1, 2 3 3)"))) -1 # rows (not including the header row) -1 # columns -AsText(LineMerge(GeomFromText("LINESTRINGZ(0 0 1, 2 3 3)"))) -LINESTRING Z(0 0 1, 2 3 3) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge5.testcase deleted file mode 100644 index 9d5907a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linemerge - POINT -:memory: #use in-memory database -SELECT AsText(LineMerge(GeomFromText("POINT(3 3)"))) -1 # rows (not including the header row) -1 # columns -AsText(LineMerge(GeomFromText("POINT(3 3)"))) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge6.testcase deleted file mode 100644 index b941fcf..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linemerge - GEOMETRY COLLECTION -:memory: #use in-memory database -SELECT AsText(LineMerge(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),LINESTRING(1 2, 3 4))"))) -1 # rows (not including the header row) -1 # columns -AsText(LineMerge(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),LINESTRING(1 2, 3 4))"))) -LINESTRING(0 1, 1 2, 3 4) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge7.testcase deleted file mode 100644 index b1e8d65..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linemerge - GEOMETRY COLLECTION M -:memory: #use in-memory database -SELECT AsText(LineMerge(GeomFromText("GeometryCollectionM(LINESTRINGM(0 1 0, 1 2 0),LINESTRINGM(1 2 0, 3 4 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(LineMerge(GeomFromText("GeometryCollectionM(LINESTRINGM(0 1 0, 1 2 0),LINESTRINGM(1 2 0, 3 4 0))"))) -LINESTRING M(0 1 0, 1 2 0, 3 4 0) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge8.testcase deleted file mode 100644 index 324609e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge8.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linemerge - GEOMETRY COLLECTION ZM -:memory: #use in-memory database -SELECT AsText(LineMerge(GeomFromText("GeometryCollectionZM(LINESTRINGZM(0 1 1 0, 1 2 1 0),LINESTRINGZM(1 2 1 0, 3 4 1 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(LineMerge(GeomFromText("GeometryCollectionZM(LINESTRINGZM(0 1 1 0, 1 2 1 0),LINESTRINGZM(1 2 1 0, 3 4 1 0))"))) -LINESTRING ZM(0 1 1 0, 1 2 1 0, 3 4 1 0) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge9.testcase deleted file mode 100644 index 5c61128..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linemerge9.testcase +++ /dev/null @@ -1,9 +0,0 @@ -linemerge - toxic blob -:memory: #use in-memory database -SELECT AsText(LineMerge(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) -1 # rows (not including the header row) -1 # columns -AsText(LineMerge(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes1.testcase deleted file mode 100644 index 859dc9a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - line, non-node -:memory: #use in-memory database -SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("POINT(0 5)"))) -1 # rows (not including the header row) -1 # columns -AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("POINT(0 5)"))) -LINESTRING(0 0, 0 10, 10 10, 10 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes10.testcase deleted file mode 100644 index bcb8d1b..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - non-blob first arg -:memory: #use in-memory database -SELECT LinesCutAtNodes(6.3 ,GeomFromText("MULTIPOINT(0 10, 10 10)")) -1 # rows (not including the header row) -1 # columns -LinesCutAtNodes(6.3 ,GeomFromText("MULTIPOINT(0 10, 10 10)")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes11.testcase deleted file mode 100644 index aff28c3..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - non-blob second arg -:memory: #use in-memory database -SELECT LinesCutAtNodes(GeomFromText("MULTIPOINT(0 10, 10 10)"), "get") -1 # rows (not including the header row) -1 # columns -LinesCutAtNodes(GeomFromText("MULTIPOINT(0 10, 10 10)"), "get") -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes12.testcase deleted file mode 100644 index 60e8683..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - zeroblob second arg -:memory: #use in-memory database -SELECT LinesCutAtNodes(GeomFromText("MULTIPOINT(0 10, 10 10)"), zeroblob(100)) -1 # rows (not including the header row) -1 # columns -LinesCutAtNodes(GeomFromText("MULTIPOINT(0 10, 10 10)"), zeroblob(100)) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes13.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes13.testcase deleted file mode 100644 index 6c42921..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - zeroblob first arg -:memory: #use in-memory database -SELECT LinesCutAtNodes(zeroblob(100), GeomFromText("MULTIPOINT(0 10, 10 10)")) -1 # rows (not including the header row) -1 # columns -LinesCutAtNodes(zeroblob(100), GeomFromText("MULTIPOINT(0 10, 10 10)")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes14.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes14.testcase deleted file mode 100644 index c33a674..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - point first arg -:memory: #use in-memory database -SELECT LinesCutAtNodes(GeomFromText("MULTIPOINT(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("MULTIPOINT(0 10, 10 10)")) -1 # rows (not including the header row) -1 # columns -LinesCutAtNodes(GeomFromText("MULTIPOINT(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("MULTIPOINT(0 10, 10 10)")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes15.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes15.testcase deleted file mode 100644 index 0bc7a1f..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - closed linestring, lines second arg -:memory: #use in-memory database -SELECT LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("LINESTRING(0 10, 10 10)")) -1 # rows (not including the header row) -1 # columns -LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("LINESTRING(0 10, 10 10)")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes16.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes16.testcase deleted file mode 100644 index 9aaf39d..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - closed linestring, polygon second arg -:memory: #use in-memory database -SELECT LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("POLYGON((1 1, 1 2, 2 2, 2 1, 1 1))")) -1 # rows (not including the header row) -1 # columns -LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("POLYGON((1 1, 1 2, 2 2, 2 1, 1 1))")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes17.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes17.testcase deleted file mode 100644 index b4c08c5..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - closed linestringZ, nodes -:memory: #use in-memory database -SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRINGZ(0 0 1, 0 10 1, 10 10 1, 10 0 1, 0 0 1)"),GeomFromText("MULTIPOINTZ(0 10 1, 10 10 1)"))) -1 # rows (not including the header row) -1 # columns -AsText(LinesCutAtNodes(GeomFromText("LINESTRINGZ(0 0 1, 0 10 1, 10 10 1, 10 0 1, 0 0 1)"),GeomFromText("MULTIPOINTZ(0 10 1, 10 10 1)"))) -MULTILINESTRING Z((10 10 1, 10 0 1, 0 0 1, 0 10 1), (0 10 1, 10 10 1)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes18.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes18.testcase deleted file mode 100644 index 7703af5..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - closed linestringM, nodes -:memory: #use in-memory database -SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRINGM(0 0 1, 0 10 1, 10 10 1, 10 0 1, 0 0 1)"),GeomFromText("MULTIPOINTM(0 10 1, 10 10 1)"))) -1 # rows (not including the header row) -1 # columns -AsText(LinesCutAtNodes(GeomFromText("LINESTRINGM(0 0 1, 0 10 1, 10 10 1, 10 0 1, 0 0 1)"),GeomFromText("MULTIPOINTM(0 10 1, 10 10 1)"))) -MULTILINESTRING M((10 10 1, 10 0 1, 0 0 1, 0 10 1), (0 10 1, 10 10 1)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes19.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes19.testcase deleted file mode 100644 index 0eacbbf..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - closed linestringZM, nodes -:memory: #use in-memory database -SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRINGZM(0 0 1 4, 0 10 1 2, 10 10 1 6, 10 0 1 3, 0 0 1 4)"),GeomFromText("MULTIPOINTZM(0 10 1 2, 10 10 1 6)"))) -1 # rows (not including the header row) -1 # columns -AsText(LinesCutAtNodes(GeomFromText("LINESTRINGZM(0 0 1 4, 0 10 1 2, 10 10 1 6, 10 0 1 3, 0 0 1 4)"),GeomFromText("MULTIPOINTZM(0 10 1 2, 10 10 1 6)"))) -MULTILINESTRING ZM((10 10 1 6, 10 0 1 3, 0 0 1 4, 0 10 1 2), (0 10 1 2, 10 10 1 6)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes2.testcase deleted file mode 100644 index 1fbd609..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - line, node -:memory: #use in-memory database -SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("POINT(0 10)"))) -1 # rows (not including the header row) -1 # columns -AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("POINT(0 10)"))) -MULTILINESTRING((0 0, 0 10), (0 10, 10 10, 10 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes3.testcase deleted file mode 100644 index 45fd72d..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - line, multinodes -:memory: #use in-memory database -SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 10, 0 4, 3 10)"))) -1 # rows (not including the header row) -1 # columns -AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 10, 0 4, 3 10)"))) -MULTILINESTRING((0 0, 0 10), (0 10, 10 10, 10 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes4.testcase deleted file mode 100644 index 7fa4cdf..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - line, multinodes -:memory: #use in-memory database -SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 10, 0 4, 3 10, 10 10)"))) -1 # rows (not including the header row) -1 # columns -AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 10, 0 4, 3 10, 10 10)"))) -MULTILINESTRING((0 0, 0 10), (0 10, 10 10), (10 10, 10 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes5.testcase deleted file mode 100644 index 133c00e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - line, endnodes -:memory: #use in-memory database -SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 0, 10 0)"))) -1 # rows (not including the header row) -1 # columns -AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 0, 10 0)"))) -LINESTRING(0 0, 0 10, 10 10, 10 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes6.testcase deleted file mode 100644 index 672c878..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - line, co-incident nodes -:memory: #use in-memory database -SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 10, 0 10)"))) -1 # rows (not including the header row) -1 # columns -AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 10, 0 10)"))) -MULTILINESTRING((0 0, 0 10), (0 10, 10 10, 10 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes7.testcase deleted file mode 100644 index 6b95416..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - line, wrong geometry -:memory: #use in-memory database -SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINTZ(0 10 0)"))) -1 # rows (not including the header row) -1 # columns -AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINTZ(0 10 0)"))) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes8.testcase deleted file mode 100644 index bc1ea32..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - polygon, nodes -:memory: #use in-memory database -SELECT AsText(LinesCutAtNodes(GeomFromText("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))"),GeomFromText("MULTIPOINT(0 10, 10 10)"))) -1 # rows (not including the header row) -1 # columns -AsText(LinesCutAtNodes(GeomFromText("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))"),GeomFromText("MULTIPOINT(0 10, 10 10)"))) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes9.testcase deleted file mode 100644 index 8dbb509..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesnodes9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -LinesCutAtNodes - closed linestring, nodes -:memory: #use in-memory database -SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("MULTIPOINT(0 10, 10 10)"))) -1 # rows (not including the header row) -1 # columns -AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("MULTIPOINT(0 10, 10 10)"))) -MULTILINESTRING((10 10, 10 0, 0 0, 0 10), (0 10, 10 10)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring1.testcase deleted file mode 100644 index cd3aecb..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - basic -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRINGZ(0 0 10, 10 0 10)"), 0, 0.4)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRINGZ(0 0 10, 10 0 10)"), 0, 0.4)) -LINESTRING Z(0 0 10, 4 0 10) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring10.testcase deleted file mode 100644 index 089b170..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring10.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - geometry collection - line -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("GeometryCollection(LINESTRING(0 0, 1 2))"), 0.2, 0.6)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("GeometryCollection(LINESTRING(0 0, 1 2))"), 0.2, 0.6)) -LINESTRING(0.2 0.4, 0.6 1.2) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring11.testcase deleted file mode 100644 index 87ace1e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring11.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - bad blob -:memory: #use in-memory database -SELECT AsText(Line_Substring(zeroblob(10), 0.2, 0.6)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(zeroblob(10), 0.2, 0.6)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring12.testcase deleted file mode 100644 index fc70b13..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring12.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - geometry collection - point -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("GeometryCollection(POINT(1 2))"), 0.2, 0.6)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("GeometryCollection(POINT(1 2))"), 0.2, 0.6)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring13.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring13.testcase deleted file mode 100644 index 2f70ce4..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring13.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - geometry collection - polygon -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("GeometryCollection(POLYGON((0 0, 1 0, 1 2, 0 2, 0 0)))"), 0.2, 0.6)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("GeometryCollection(POLYGON((0 0, 1 0, 1 2, 0 2, 0 0)))"), 0.2, 0.6)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring14.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring14.testcase deleted file mode 100644 index 161d41d..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring14.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - geometry collection - polygon and linestring -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("GeometryCollection(LINESTRING(0 0, 10 0),POLYGON((0 0, 1 0, 1 2, 0 2, 0 0)))"), 0.2, 0.6)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("GeometryCollection(LINESTRING(0 0, 10 0),POLYGON((0 0, 1 0, 1 2, 0 2, 0 0)))"), 0.2, 0.6)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring15.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring15.testcase deleted file mode 100644 index bd030c5..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring15.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - basic vary Z -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRINGZ(0 0 0, 10 0 5)"), 0.2, 0.7)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRINGZ(0 0 0, 10 0 5)"), 0.2, 0.7)) -LINESTRING Z(2 0 1, 7 0 3.5) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring16.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring16.testcase deleted file mode 100644 index 8b62cb7..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring16.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - basic vary M -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRINGM(0 0 0, 10 0 5)"), 0.2, 0.7)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRINGM(0 0 0, 10 0 5)"), 0.2, 0.7)) -LINESTRING M(2 0 0, 7 0 0) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring17.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring17.testcase deleted file mode 100644 index ff58bca..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring17.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - basic vary ZM -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 10 5, 10 0 5 0)"), 0.2, 0.7)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 10 5, 10 0 5 0)"), 0.2, 0.7)) -LINESTRING ZM(2 0 9 0, 7 0 6.5 0) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring18.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring18.testcase deleted file mode 100644 index d2b5656..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring18.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - ignoring second segment -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0, 10 10)"), 0, 0.2)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0, 10 10)"), 0, 0.2)) -LINESTRING(0 0, 4 0) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring19.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring19.testcase deleted file mode 100644 index abcdb9d..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring19.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - using second segment -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0, 10 10)"), 0.6, 0.8)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0, 10 10)"), 0.6, 0.8)) -LINESTRING(10 2, 10 6) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring2.testcase deleted file mode 100644 index 14dfe09..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - basic -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 0.2, 0.6)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 0.2, 0.6)) -LINESTRING(2 0, 6 0) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring20.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring20.testcase deleted file mode 100644 index 02d0307..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring20.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - using both segments -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0, 10 10)"), 0.2, 0.8)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0, 10 10)"), 0.2, 0.8)) -LINESTRING(4 0, 10 0, 10 6) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring21.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring21.testcase deleted file mode 100644 index ac758c6..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring21.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - using both segments M -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRINGM(0 0 0, 10 0 0, 10 10 0)"), 0.2, 0.8)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRINGM(0 0 0, 10 0 0, 10 10 0)"), 0.2, 0.8)) -LINESTRING M(4 0 0, 10 0 0, 10 6 0) # yeah, it would have been m = 0.0 anyway. - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring22.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring22.testcase deleted file mode 100644 index fa22b98..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring22.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - using both segments ZM -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 1 0, 10 0 1 0, 10 10 1 0)"), 0.2, 0.8)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 1 0, 10 0 1 0, 10 10 1 0)"), 0.2, 0.8)) -LINESTRING ZM(4 0 1 0, 10 0 1 0, 10 6 1 0) # yeah, it would have been m = 0.0 anyway. - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring23.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring23.testcase deleted file mode 100644 index fb25cee..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring23.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - using no segments ZM -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 1 0, 10 0 1 0, 10 10 1 0)"), 0, 0)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 1 0, 10 0 1 0, 10 10 1 0)"), 0, 0)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring24.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring24.testcase deleted file mode 100644 index 3c89399..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring24.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - zero length -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 1 0, 0 0 2 2, 0 0 3 4)"), 0, 1)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 1 0, 0 0 2 2, 0 0 3 4)"), 0, 1)) -LINESTRING ZM(0 0 1 0, 0 0 1 0) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring25.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring25.testcase deleted file mode 100644 index 6b84643..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring25.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - zero length 2d -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRING(1 1, 1 1)"), 0, 1)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRING(1 1, 1 1)"), 0, 1)) -LINESTRING(1 1, 1 1) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring26.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring26.testcase deleted file mode 100644 index 4941058..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring26.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - using both segments Z -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRINGZ(0 0 0, 10 0 0, 10 10 0)"), 0.2, 0.8)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRINGZ(0 0 0, 10 0 0, 10 10 0)"), 0.2, 0.8)) -LINESTRING Z(4 0 0, 10 0 0, 10 6 0) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring3.testcase deleted file mode 100644 index fb12e0c..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - int limits -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 0, 1)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 0, 1)) -LINESTRING(0 0, 10 0) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring4.testcase deleted file mode 100644 index 8b854de..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring4.testcase +++ /dev/null @@ -1,9 +0,0 @@ -linesubstring - out-of-range limits -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), -1, 2)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), -1, 2)) -LINESTRING(0 0, 10 0) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring5.testcase deleted file mode 100644 index e829fbf..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - bad geom -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("POINT(0 0"), 0.2, 0.6)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("POINT(0 0"), 0.2, 0.6)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring6.testcase deleted file mode 100644 index 5d9a5a3..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -linesubstring - bad arg -:memory: #use in-memory database -SELECT AsText(Line_Substring(null, 0.2, 0.6)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(null, 0.2, 0.6)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring7.testcase deleted file mode 100644 index 183bd42..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring7.testcase +++ /dev/null @@ -1,9 +0,0 @@ -linesubstring - out-of-range limits 2 -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 2, -0.5)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 2, -0.5)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring8.testcase deleted file mode 100644 index 81f7840..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring8.testcase +++ /dev/null @@ -1,9 +0,0 @@ -linesubstring - wrong type of limits 1 -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), "hello", null)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), "hello", null)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring9.testcase deleted file mode 100644 index d113c82..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/linesubstring9.testcase +++ /dev/null @@ -1,9 +0,0 @@ -linesubstring - wrong type of limits 2 -:memory: #use in-memory database -SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 0, null)) -1 # rows (not including the header row) -1 # columns -AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 0, null)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint1.testcase deleted file mode 100644 index f180ea9..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -locate point - basic line -:memory: #use in-memory database -SELECT Line_Locate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), GeomFromText("POINT(5 3)")) -1 # rows (not including the header row) -1 # columns -Line_Locate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), GeomFromText("POINT(5 3)")) -0.5 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint10.testcase deleted file mode 100644 index 60bbf82..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -locate point - NULL first arg -:memory: #use in-memory database -SELECT Line_Locate_Point(NULL, GeomFromText("GeometryCollection(POINT(0 1),LINESTRING(0 0, 10 0, 10 10, 0 0))")) -1 # rows (not including the header row) -1 # columns -Line_Locate_Point(NULL, GeomFromText("GeometryCollection(POINT(0 1),LINESTRING(0 0, 10 0, 10 10, 0 0))")) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint11.testcase deleted file mode 100644 index 73cf83c..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -locate point - bad blob first arg -:memory: #use in-memory database -SELECT Line_Locate_Point(zeroblob(100), GeomFromText("POINT(0 1)")) -1 # rows (not including the header row) -1 # columns -Line_Locate_Point(zeroblob(100), GeomFromText("POINT(0 1)")) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint12.testcase deleted file mode 100644 index 7d3a246..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -locate point - bad blob second arg -:memory: #use in-memory database -SELECT Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 1)"), zeroblob(47)) -1 # rows (not including the header row) -1 # columns -Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 1)"), zeroblob(47)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint2.testcase deleted file mode 100644 index 6d8a61e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -locate point - POLYGON first arg -:memory: #use in-memory database -SELECT Line_Locate_Point(GeomFromText("POLYGON((0 0, 10 10, 0 10, 0 0))"), GeomFromText("POINT(5 3)")) -1 # rows (not including the header row) -1 # columns -Line_Locate_Point(GeomFromText("POLYGON((0 0, 10 10, 0 10, 0 0))"), GeomFromText("POINT(5 3)")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint3.testcase deleted file mode 100644 index 3014705..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -locate point - POINT first arg -:memory: #use in-memory database -SELECT Line_Locate_Point(GeomFromText("POINT(0 0)"), GeomFromText("POINT(5 3)")) -1 # rows (not including the header row) -1 # columns -Line_Locate_Point(GeomFromText("POINT(0 0)"), GeomFromText("POINT(5 3)")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint4.testcase deleted file mode 100644 index 97bb03a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -locate point - GeomCollection first arg -:memory: #use in-memory database -SELECT Line_Locate_Point(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),POLYGON((0 0, 10 0, 10 10, 0 0)))"), GeomFromText("POINT(5 3)")) -1 # rows (not including the header row) -1 # columns -Line_Locate_Point(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),POLYGON((0 0, 10 0, 10 10, 0 0)))"), GeomFromText("POINT(5 3)")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint5.testcase deleted file mode 100644 index 8100389..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -locate point - LINESTRING second arg -:memory: #use in-memory database -SELECT Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("LINESTRING(10 0, 0 10)")) -1 # rows (not including the header row) -1 # columns -Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("LINESTRING(10 0, 0 10)")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint6.testcase deleted file mode 100644 index 2242aeb..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -locate point - POLYGON second arg -:memory: #use in-memory database -SELECT Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("POLYGON((10 0, 0 10, 0 0, 10 0))")) -1 # rows (not including the header row) -1 # columns -Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("POLYGON((10 0, 0 10, 0 0, 10 0))")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint7.testcase deleted file mode 100644 index 8243b46..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -locate point - GeometryCollection second arg -:memory: #use in-memory database -SELECT Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("GeometryCollection(POINT(0 1),POLYGON((0 0, 10 0, 10 10, 0 0)))")) -1 # rows (not including the header row) -1 # columns -Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("GeometryCollection(POINT(0 1),POLYGON((0 0, 10 0, 10 10, 0 0)))")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint8.testcase deleted file mode 100644 index 56bceba..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -locate point - GeometryCollection second arg -:memory: #use in-memory database -SELECT Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("GeometryCollection(POINT(0 1),LINESTRING(0 0, 10 0, 10 10, 0 0))")) -1 # rows (not including the header row) -1 # columns -Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("GeometryCollection(POINT(0 1),LINESTRING(0 0, 10 0, 10 10, 0 0))")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint9.testcase deleted file mode 100644 index 37d59ab..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/locatepoint9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -locate point - NULL second arg -:memory: #use in-memory database -SELECT Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), NULL) -1 # rows (not including the header row) -1 # columns -Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve1.testcase deleted file mode 100644 index dcd2f63..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve1.testcase +++ /dev/null @@ -1,9 +0,0 @@ -OffsetCurve - non-int side -:memory: #use in-memory database -SELECT AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), 1, "hello")); -1 # rows (not including the header row) -1 # columns -AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), 1, "hello")) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve10.testcase deleted file mode 100644 index 6097b3c..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve10.testcase +++ /dev/null @@ -1,9 +0,0 @@ -OffsetCurve - multilinestring, 1 linestring -:memory: #use in-memory database -SELECT AsText(OffsetCurve(GeomFromText('MULTILINESTRING((0 0, 0 1, 4 1, 4 0))'), 1, 0)); -1 # rows (not including the header row) -1 # columns -AsText(OffsetCurve(GeomFromText('MULTILINESTRING((0 0, 0 1, 4 1, 4 0))'), 1, 0)) -LINESTRING(3 0, 1 0) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve11.testcase deleted file mode 100644 index 06ce475..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve11.testcase +++ /dev/null @@ -1,9 +0,0 @@ -OffsetCurve - multilinestring, 2 linestring -:memory: #use in-memory database -SELECT AsText(OffsetCurve(GeomFromText('MULTILINESTRING((0 0, 0 1, 4 1, 4 0),(4 1, 3 2))'), 1, 0)) -1 # rows (not including the header row) -1 # columns -AsText(OffsetCurve(GeomFromText('MULTILINESTRING((0 0, 0 1, 4 1, 4 0),(4 1, 3 2))'), 1, 0)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve12.testcase deleted file mode 100644 index 0947e28..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve12.testcase +++ /dev/null @@ -1,9 +0,0 @@ -OffsetCurve - linestringz -:memory: #use in-memory database -SELECT AsText(OffsetCurve(GeomFromText('LINESTRINGZ(0 0 1, 0 1 2, 4 1 2, 4 0 1)'), 1, 0)) -1 # rows (not including the header row) -1 # columns -AsText(OffsetCurve(GeomFromText('LINESTRINGZ(0 0 1, 0 1 2, 4 1 2, 4 0 1)'), 1, 0)) -LINESTRING Z(3 0 0, 1 0 0) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve13.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve13.testcase deleted file mode 100644 index cfdd6f8..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve13.testcase +++ /dev/null @@ -1,9 +0,0 @@ -OffsetCurve - linestringm -:memory: #use in-memory database -SELECT AsText(OffsetCurve(GeomFromText('LINESTRINGM(0 0 1, 0 1 2, 4 1 2, 4 0 1)'), 1, 0)) -1 # rows (not including the header row) -1 # columns -AsText(OffsetCurve(GeomFromText('LINESTRINGM(0 0 1, 0 1 2, 4 1 2, 4 0 1)'), 1, 0)) -LINESTRING M(3 0 0, 1 0 0) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve14.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve14.testcase deleted file mode 100644 index ac88cc1..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve14.testcase +++ /dev/null @@ -1,9 +0,0 @@ -OffsetCurve - linestringzm -:memory: #use in-memory database -SELECT AsText(OffsetCurve(GeomFromText('LINESTRINGZM(0 0 1 4, 0 1 2 4, 4 1 2 4, 4 0 1 4)'), 1, 0)) -1 # rows (not including the header row) -1 # columns -AsText(OffsetCurve(GeomFromText('LINESTRINGZM(0 0 1 4, 0 1 2 4, 4 1 2 4, 4 0 1 4)'), 1, 0)) -LINESTRING ZM(3 0 0 0, 1 0 0 0) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve2.testcase deleted file mode 100644 index 66c7bbe..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve2.testcase +++ /dev/null @@ -1,10 +0,0 @@ -OffsetCurve - polygon -:memory: #use in-memory database -SELECT AsText(OffsetCurve(GeomFromText('POLYGON((0 0, 0 1, 4 1, 4 0, 0 0))'), 1, 0)); -1 # rows (not including the header row) -1 # columns -AsText(OffsetCurve(GeomFromText('POLYGON((0 0, 0 1, 4 1, 4 0, 0 0))'), 1, 0)) -(NULL) - - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve3.testcase deleted file mode 100644 index 7bac8d1..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve3.testcase +++ /dev/null @@ -1,10 +0,0 @@ -OffsetCurve - null -:memory: #use in-memory database -SELECT AsText(OffsetCurve(null, 1, 0)); -1 # rows (not including the header row) -1 # columns -AsText(OffsetCurve(null, 1, 0)) -(NULL) - - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve4.testcase deleted file mode 100644 index 185dfbe..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve4.testcase +++ /dev/null @@ -1,9 +0,0 @@ -OffsetCurve -:memory: #use in-memory database -SELECT AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), 1, 0)); -1 # rows (not including the header row) -1 # columns -AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), 1, 0)) -LINESTRING(3 0, 1 0) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve5.testcase deleted file mode 100644 index 419bb3d..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve5.testcase +++ /dev/null @@ -1,9 +0,0 @@ -OffsetCurve - non-number radius -:memory: #use in-memory database -SELECT AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), "not a number", 0)); -1 # rows (not including the header row) -1 # columns -AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), "not a number", 0)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve6.testcase deleted file mode 100644 index 2efb49e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve6.testcase +++ /dev/null @@ -1,9 +0,0 @@ -OffsetCurve - float radius -:memory: #use in-memory database -SELECT AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), 1.0, 0)); -1 # rows (not including the header row) -1 # columns -AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), 1.0, 0)) -LINESTRING(3 0, 1 0) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve7.testcase deleted file mode 100644 index cbed3b0..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve7.testcase +++ /dev/null @@ -1,10 +0,0 @@ -OffsetCurve - zeroblob -:memory: #use in-memory database -SELECT AsText(OffsetCurve(zeroblob(40), 1, 0)); -1 # rows (not including the header row) -1 # columns -AsText(OffsetCurve(zeroblob(40), 1, 0)) -(NULL) - - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve8.testcase deleted file mode 100644 index 47db790..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve8.testcase +++ /dev/null @@ -1,9 +0,0 @@ -OffsetCurve - points -:memory: #use in-memory database -SELECT AsText(OffsetCurve(GeomFromText('MULTIPOINT(0 0, 0 1, 4 1, 4 0)'), 1, 0)); -1 # rows (not including the header row) -1 # columns -AsText(OffsetCurve(GeomFromText('MULTIPOINT(0 0, 0 1, 4 1, 4 0)'), 1, 0)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve9.testcase deleted file mode 100644 index 44255aa..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/offsetcurve9.testcase +++ /dev/null @@ -1,9 +0,0 @@ -OffsetCurve - closed linestring -:memory: #use in-memory database -SELECT AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0, 0 0)'), 1, 0)); -1 # rows (not including the header row) -1 # columns -AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0, 0 0)'), 1, 0)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes1.testcase deleted file mode 100644 index 6bf9f7e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -RingsCutAtNodes -:memory: #use in-memory database -SELECT AsText(RingsCutAtNodes(GeomFromText("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(RingsCutAtNodes(GeomFromText("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))"))) -MULTILINESTRING((0 0, 0 10, 10 10, 10 0, 0 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes2.testcase deleted file mode 100644 index 8b5eeb5..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -RingsCutAtNodes - with internal ring -:memory: #use in-memory database -SELECT AsText(RingsCutAtNodes(GeomFromText("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0),(1 1, 3 1, 3 3, 1 3, 1 1))"))) -1 # rows (not including the header row) -1 # columns -AsText(RingsCutAtNodes(GeomFromText("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0),(1 1, 3 1, 3 3, 1 3, 1 1))"))) -MULTILINESTRING((0 0, 0 10, 10 10, 10 0, 0 0), (1 1, 3 1, 3 3, 1 3, 1 1)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes3.testcase deleted file mode 100644 index 08c43dd..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -RingsCutAtNodes - non-blob -:memory: #use in-memory database -SELECT RingsCutAtNodes("hello") -1 # rows (not including the header row) -1 # columns -RingsCutAtNodes("hello") -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes4.testcase deleted file mode 100644 index 743e869..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -RingsCutAtNodes - bad blob -:memory: #use in-memory database -SELECT RingsCutAtNodes(zeroblob(100)) -1 # rows (not including the header row) -1 # columns -RingsCutAtNodes(zeroblob(100)) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes5.testcase deleted file mode 100644 index 31a11a6..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -RingsCutAtNodes - non-polygon (point) -:memory: #use in-memory database -SELECT RingsCutAtNodes(GeomFromText("POINT(1 2)")) -1 # rows (not including the header row) -1 # columns -RingsCutAtNodes(GeomFromText("POINT(1 2)")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes6.testcase deleted file mode 100644 index a2568a3..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/ringsnodes6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -RingsCutAtNodes - non-polygon (linestring) -:memory: #use in-memory database -SELECT RingsCutAtNodes(GeomFromText("LINESTRING(1 3, 2 6)")) -1 # rows (not including the header row) -1 # columns -RingsCutAtNodes(GeomFromText("LINESTRING(1 3, 2 6)")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths1.testcase deleted file mode 100644 index 47367bf..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two lines -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("LINESTRING(0 0, 10 0)"),GeomFromText("LINESTRING(5 0, 15 0)"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("LINESTRING(0 0, 10 0)"),GeomFromText("LINESTRING(5 0, 15 0)"))) -MULTILINESTRING((5 0, 10 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths10.testcase deleted file mode 100644 index 7f5a1d2..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two lineZ -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("LINESTRINGZ(0 0 1, 10 0 1)"),GeomFromText("LINESTRINGZ(5 0 1, 15 0 1)"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("LINESTRINGZ(0 0 1, 10 0 1)"),GeomFromText("LINESTRINGZ(5 0 1, 15 0 1)"))) -MULTILINESTRING Z((5 0 1, 10 0 1)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths11.testcase deleted file mode 100644 index 3cb23ca..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two lineZM -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("LINESTRINGZM(0 0 4 1, 10 0 4 1)"),GeomFromText("LINESTRINGZM(5 0 4 1, 15 0 4 1)"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("LINESTRINGZM(0 0 4 1, 10 0 4 1)"),GeomFromText("LINESTRINGZM(5 0 4 1, 15 0 4 1)"))) -MULTILINESTRING ZM((5 0 4 0, 10 0 4 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths12.testcase deleted file mode 100644 index 09f9b09..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two polygonZM -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("POLYGONZM((0 0 4 1, 10 0 4 1, 10 10 4 1, 0 10 4 1, 0 0 4 1))"),GeomFromText("POLYGONZM((5 0 4 1, 15 0 4 1, 15 10 4 1, 5 10 4 1, 5 0 4 1))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("POLYGONZM((0 0 4 1, 10 0 4 1, 10 10 4 1, 0 10 4 1, 0 0 4 1))"),GeomFromText("POLYGONZM((5 0 4 1, 15 0 4 1, 15 10 4 1, 5 10 4 1, 5 0 4 1))"))) -MULTILINESTRING ZM((5 0 4 0, 10 0 4 0), (10 10 4 0, 5 10 4 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths13.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths13.testcase deleted file mode 100644 index 70a2655..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two polygonZ -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("POLYGONZ((0 0 4, 10 0 4, 10 10 4, 0 10 4, 0 0 4))"),GeomFromText("POLYGONZ((5 0 4, 15 0 4, 15 10 4, 5 10 4, 5 0 4))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("POLYGONZ((0 0 4, 10 0 4, 10 10 4, 0 10 4, 0 0 4))"),GeomFromText("POLYGONZ((5 0 4, 15 0 4, 15 10 4, 5 10 4, 5 0 4))"))) -MULTILINESTRING Z((5 0 4, 10 0 4), (10 10 4, 5 10 4)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths14.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths14.testcase deleted file mode 100644 index d182502..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two polygonM -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("POLYGONM((0 0 4, 10 0 4, 10 10 4, 0 10 4, 0 0 4))"),GeomFromText("POLYGONM((5 0 4, 15 0 4, 15 10 4, 5 10 4, 5 0 4))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("POLYGONM((0 0 4, 10 0 4, 10 10 4, 0 10 4, 0 0 4))"),GeomFromText("POLYGONM((5 0 4, 15 0 4, 15 10 4, 5 10 4, 5 0 4))"))) -MULTILINESTRING M((5 0 0, 10 0 0), (10 10 0, 5 10 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths15.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths15.testcase deleted file mode 100644 index aee43b9..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two polygon, internal ring -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 3 1, 3 3, 1 3, 1 1))"),GeomFromText("POLYGON((5 0, 15 0, 15 10, 5 10, 5 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 3 1, 3 3, 1 3, 1 1))"),GeomFromText("POLYGON((5 0, 15 0, 15 10, 5 10, 5 0))"))) -MULTILINESTRING((5 0, 10 0), (10 10, 5 10)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths16.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths16.testcase deleted file mode 100644 index b92f327..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two polygon -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"),GeomFromText("POLYGON((5 0, 15 0, 15 10, 5 10, 5 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"),GeomFromText("POLYGON((5 0, 15 0, 15 10, 5 10, 5 0))"))) -MULTILINESTRING((5 0, 10 0), (10 10, 5 10)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths17.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths17.testcase deleted file mode 100644 index c018e48..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two polygon - different overlap -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"),GeomFromText("POLYGON((-5 0, 15 0, 15 10, -5 10, -5 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"),GeomFromText("POLYGON((-5 0, 15 0, 15 10, -5 10, -5 0))"))) -MULTILINESTRING((0 0, 10 0), (10 10, 0 10)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths18.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths18.testcase deleted file mode 100644 index 3ea0f74..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two polygon - different overlap -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"),GeomFromText("POLYGON((5 0, 15 0, 15 10, -5 10, -5 0, 5 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"),GeomFromText("POLYGON((5 0, 15 0, 15 10, -5 10, -5 0, 5 0))"))) -MULTILINESTRING((0 0, 5 0, 10 0), (10 10, 0 10)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths19.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths19.testcase deleted file mode 100644 index 3980fce..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two polygonZ, internal ring -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("POLYGONZ((0 0 2, 10 0 12, 10 10 12, 0 10 2, 0 0 2),(1 1 3, 3 1 5, 3 3 5, 1 3 3, 1 1 3))"),GeomFromText("POLYGONZ((5 0 7, 15 0 17, 15 10 17, 5 10 7, 5 0 7))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("POLYGONZ((0 0 2, 10 0 12, 10 10 12, 0 10 2, 0 0 2),(1 1 3, 3 1 5, 3 3 5, 1 3 3, 1 1 3))"),GeomFromText("POLYGONZ((5 0 7, 15 0 17, 15 10 17, 5 10 7, 5 0 7))"))) -MULTILINESTRING Z((5 0 7, 10 0 12), (10 10 12, 5 10 7)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths2.testcase deleted file mode 100644 index c85a603..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - zeroblob first arg -:memory: #use in-memory database -SELECT AsText(SharedPaths(zeroblob(100),GeomFromText("LINESTRING(5 0, 15 0)"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(zeroblob(100),GeomFromText("LINESTRING(5 0, 15 0)"))) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths20.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths20.testcase deleted file mode 100644 index 95189d3..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two polygonZM, internal ring -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("POLYGONZM((0 0 2 4, 10 0 12 4, 10 10 12 4, 0 10 2 4, 0 0 2 4),(1 1 3 5, 3 1 5 5, 3 3 5 5, 1 3 3 5, 1 1 3 5))"),GeomFromText("POLYGONZM((5 0 7 4, 15 0 17 4, 15 10 17 4, 5 10 7 4, 5 0 7 4))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("POLYGONZM((0 0 2 4, 10 0 12 4, 10 10 12 4, 0 10 2 4, 0 0 2 4),(1 1 3 5, 3 1 5 5, 3 3 5 5, 1 3 3 5, 1 1 3 5))"),GeomFromText("POLYGONZM((5 0 7 4, 15 0 17 4, 15 10 17 4, 5 10 7 4, 5 0 7 4))"))) -MULTILINESTRING ZM((5 0 7 0, 10 0 12 0), (10 10 12 0, 5 10 7 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths21.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths21.testcase deleted file mode 100644 index c499a6d..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths21.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two polygonM, internal ring -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("POLYGONM((0 0 4, 10 0 4, 10 10 4, 0 10 4, 0 0 4),(1 1 5, 3 1 5, 3 3 5, 1 3 5, 1 1 5))"),GeomFromText("POLYGONM((5 0 4, 15 0 4, 15 10 4, 5 10 4, 5 0 4))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("POLYGONM((0 0 4, 10 0 4, 10 10 4, 0 10 4, 0 0 4),(1 1 5, 3 1 5, 3 3 5, 1 3 5, 1 1 5))"),GeomFromText("POLYGONM((5 0 4, 15 0 4, 15 10 4, 5 10 4, 5 0 4))"))) -MULTILINESTRING M((5 0 0, 10 0 0), (10 10 0, 5 10 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths22.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths22.testcase deleted file mode 100644 index 344e247..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths22.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two multilines -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRING((0 0, 10 0),(12 0, 16 0))"),GeomFromText("LINESTRING(5 0, 15 0)"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("MULTILINESTRING((0 0, 10 0),(12 0, 16 0))"),GeomFromText("LINESTRING(5 0, 15 0)"))) -MULTILINESTRING((5 0, 10 0), (12 0, 15 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths23.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths23.testcase deleted file mode 100644 index 2ceef0e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths23.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two multilines, reverse order -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRING((0 0, 10 0),(16 0, 12 0))"),GeomFromText("LINESTRING(5 0, 15 0)"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("MULTILINESTRING((0 0, 10 0),(16 0, 12 0))"),GeomFromText("LINESTRING(5 0, 15 0)"))) -MULTILINESTRING((5 0, 10 0), (15 0, 12 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths24.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths24.testcase deleted file mode 100644 index 6af5a2b..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths24.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - multiline -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("LINESTRING(5 0, 15 0)"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("LINESTRING(5 0, 15 0)"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0))"))) -MULTILINESTRING((5 0, 6 0, 10 0, 11 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths25.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths25.testcase deleted file mode 100644 index 37c7309..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths25.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - multiline -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0),(5 0, 5 5))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0),(5 0, 5 5))"))) -MULTILINESTRING((5 5, 5 0, 6 0, 10 0, 11 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths26.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths26.testcase deleted file mode 100644 index 22895ae..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths26.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - multiline, not quite matching -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0),(5 5, 5 1))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0),(5 5, 5 1))"))) -MULTILINESTRING((5 0, 6 0, 10 0, 11 0), (5 1, 5 5)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths27.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths27.testcase deleted file mode 100644 index 599d83c..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths27.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - multiline -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0),(5 5, 5 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0),(5 5, 5 0))"))) -MULTILINESTRING((5 5, 5 0, 6 0, 10 0, 11 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths28.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths28.testcase deleted file mode 100644 index a6806bb..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths28.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - multilineZ - prepend -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRINGZ((5 0 10, 15 0 30),(5 0 10, 5 5 10))"),GeomFromText("MULTILINESTRINGZ((0 0 0, 4 0 8, 6 0 12, 10 0 20),(11 0 22, 5 0 10),(5 0 10, 5 5 10))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("MULTILINESTRINGZ((5 0 10, 15 0 30),(5 0 10, 5 5 10))"),GeomFromText("MULTILINESTRINGZ((0 0 0, 4 0 8, 6 0 12, 10 0 20),(11 0 22, 5 0 10),(5 0 10, 5 5 10))"))) -MULTILINESTRING Z((5 5 10, 5 0 10, 6 0 12, 10 0 20, 11 0 22)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths29.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths29.testcase deleted file mode 100644 index 00bbd57..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths29.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - multilineM - prepend -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRINGM((5 0 10, 15 0 30),(5 0 10, 5 5 10))"),GeomFromText("MULTILINESTRINGM((0 0 0, 4 0 8, 6 0 12, 10 0 20),(11 0 22, 5 0 10),(5 0 10, 5 5 10))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("MULTILINESTRINGM((5 0 10, 15 0 30),(5 0 10, 5 5 10))"),GeomFromText("MULTILINESTRINGM((0 0 0, 4 0 8, 6 0 12, 10 0 20),(11 0 22, 5 0 10),(5 0 10, 5 5 10))"))) -MULTILINESTRING M((5 5 0, 5 0 0, 6 0 0, 10 0 0, 11 0 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths3.testcase deleted file mode 100644 index 03624a0..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - zeroblob second arg -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("LINESTRING(5 0, 15 0)"),zeroblob(100))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("LINESTRING(5 0, 15 0)"),zeroblob(100))) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths30.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths30.testcase deleted file mode 100644 index 86b0229..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths30.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - multilineZM - prepend -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRINGZM((5 0 10 0, 15 0 30 0),(5 0 10 0, 5 5 10 0))"),GeomFromText("MULTILINESTRINGZM((0 0 0 0, 4 0 8 0, 6 0 12 0, 10 0 20 0),(11 0 22 0, 5 0 10 0),(5 0 10 0, 5 5 10 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("MULTILINESTRINGZM((5 0 10 0, 15 0 30 0),(5 0 10 0, 5 5 10 0))"),GeomFromText("MULTILINESTRINGZM((0 0 0 0, 4 0 8 0, 6 0 12 0, 10 0 20 0),(11 0 22 0, 5 0 10 0),(5 0 10 0, 5 5 10 0))"))) -MULTILINESTRING ZM((5 5 10 0, 5 0 10 0, 6 0 12 0, 10 0 20 0, 11 0 22 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths31.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths31.testcase deleted file mode 100644 index 35bb520..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths31.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - multiline, reverse -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(5 0, 11 0),(5 0, 5 5))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(5 0, 11 0),(5 0, 5 5))"))) -MULTILINESTRING((5 5, 5 0, 6 0, 10 0, 11 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths32.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths32.testcase deleted file mode 100644 index cf47c9a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths32.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - multiline, reverse first -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 5 5),(5 0, 15 0))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(5 0, 11 0),(5 0, 5 5))"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 5 5),(5 0, 15 0))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(5 0, 11 0),(5 0, 5 5))"))) -MULTILINESTRING((11 0, 10 0, 6 0, 5 0, 5 5)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths4.testcase deleted file mode 100644 index e537c05..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - non-blob second arg -:memory: #use in-memory database -SELECT SharedPaths(GeomFromText("LINESTRING(5 0, 15 0)"), 3.4) -1 # rows (not including the header row) -1 # columns -SharedPaths(GeomFromText("LINESTRING(5 0, 15 0)"), 3.4) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths5.testcase deleted file mode 100644 index 93d0593..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - non-blob first arg -:memory: #use in-memory database -SELECT SharedPaths(1, GeomFromText("LINESTRING(5 0, 15 0)")) -1 # rows (not including the header row) -1 # columns -SharedPaths(1, GeomFromText("LINESTRING(5 0, 15 0)")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths6.testcase deleted file mode 100644 index 28d4697..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two lines, no intersect. -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("LINESTRING(0 0, 1 0)"),GeomFromText("LINESTRING(5 0, 15 0)"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("LINESTRING(0 0, 1 0)"),GeomFromText("LINESTRING(5 0, 15 0)"))) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths7.testcase deleted file mode 100644 index a0ca486..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - line and point -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("LINESTRING(0 0, 1 0)"),GeomFromText("POINT(15 0)"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("LINESTRING(0 0, 1 0)"),GeomFromText("POINT(15 0)"))) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths8.testcase deleted file mode 100644 index e24b7c5..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - point and line -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("POINT(15 0)"),GeomFromText("LINESTRING(0 0, 1 0)"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("POINT(15 0)"),GeomFromText("LINESTRING(0 0, 1 0)"))) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths9.testcase deleted file mode 100644 index a7e69b7..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/sharedpaths9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shared paths - two lineM -:memory: #use in-memory database -SELECT AsText(SharedPaths(GeomFromText("LINESTRINGM(1 2 1, 10 2 1)"),GeomFromText("LINESTRINGM(5 2 1, 15 2 1)"))) -1 # rows (not including the header row) -1 # columns -AsText(SharedPaths(GeomFromText("LINESTRINGM(1 2 1, 10 2 1)"),GeomFromText("LINESTRINGM(5 2 1, 15 2 1)"))) -MULTILINESTRING M((5 2 0, 10 2 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline1.testcase deleted file mode 100644 index a39e245..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ShortestLine - line and point -:memory: #use in-memory database -SELECT AsText(ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("POINT(0 2)"))) -1 # rows (not including the header row) -1 # columns -AsText(ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("POINT(0 2)"))) -LINESTRING(0 0, 0 2) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline2.testcase deleted file mode 100644 index c685559..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ShortestLine - line and point -:memory: #use in-memory database -SELECT AsText(ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("POINT(10 2)"))) -1 # rows (not including the header row) -1 # columns -AsText(ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("POINT(10 2)"))) -LINESTRING(10 0, 10 2) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline3.testcase deleted file mode 100644 index da7b982..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ShortestLine - zeroblob first arg -:memory: #use in-memory database -SELECT ShortestLine(zeroblob(100), GeomFromText("POINT(10 2)")) -1 # rows (not including the header row) -1 # columns -ShortestLine(zeroblob(100), GeomFromText("POINT(10 2)")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline4.testcase deleted file mode 100644 index 21b5940..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ShortestLine - non-blob first arg -:memory: #use in-memory database -SELECT ShortestLine(3, GeomFromText("POINT(10 2)")) -1 # rows (not including the header row) -1 # columns -ShortestLine(3, GeomFromText("POINT(10 2)")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline5.testcase deleted file mode 100644 index b8a1044..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ShortestLine - zeroblob second arg -:memory: #use in-memory database -SELECT ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), zeroblob(487)) -1 # rows (not including the header row) -1 # columns -ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), zeroblob(487)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline6.testcase deleted file mode 100644 index 9e0b31a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ShortestLine - non-blob second arg -:memory: #use in-memory database -SELECT ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), 3.4) -1 # rows (not including the header row) -1 # columns -ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), 3.4) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline7.testcase deleted file mode 100644 index ec2e664..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/shortestline7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ShortestLine - coincident lines -:memory: #use in-memory database -SELECT ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(10 0, 0 0)")) -1 # rows (not including the header row) -1 # columns -ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(10 0, 0 0)")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer1.testcase deleted file mode 100644 index 2c710df..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - bad args (point, left side) -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer(GeomFromText("Point(1 2)", 4326), 3, 1)); -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer(GeomFromText("Point(1 2)", 4326), 3, 1)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer11.testcase deleted file mode 100644 index 438d13b..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - closed LINESTRING, int radius, left side -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20, 1 20, 1 0, 0 0)"), 3, 1)) -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20, 1 20, 1 0, 0 0)"), 3, 1)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer12.testcase deleted file mode 100644 index 97418a9..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - POLYGON, int radius, right side -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer(GeomFromText("POLYGON((0 0, 0 20, 1 20, 1 0, 0 0))"), 3, 0)) -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer(GeomFromText("POLYGON((0 0, 0 20, 1 20, 1 0, 0 0))"), 3, 0)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer13.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer13.testcase deleted file mode 100644 index 97418a9..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - POLYGON, int radius, right side -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer(GeomFromText("POLYGON((0 0, 0 20, 1 20, 1 0, 0 0))"), 3, 0)) -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer(GeomFromText("POLYGON((0 0, 0 20, 1 20, 1 0, 0 0))"), 3, 0)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer14.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer14.testcase deleted file mode 100644 index 353b420..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - toxic blob -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 3, 0)) -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 3, 0)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer15.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer15.testcase deleted file mode 100644 index 2fdccb7..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - LINESTRINGZ -X, float radius, right side -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRINGZ(0 20 1, 0 0 2)"), 3.5, 0)) -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer(GeomFromText("LINESTRINGZ(0 20 1, 0 0 2)"), 3.5, 0)) -POLYGON Z((0 20 1, 0 0 2, -3.5 0 nan, -3.5 20 nan, 0 20 1)) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer16.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer16.testcase deleted file mode 100644 index 17907d4..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - LINESTRINGM -X, float radius, right side -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRINGM(0 20 1, 0 0 2)"), 3.5, 0)); -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer(GeomFromText("LINESTRINGM(0 20 1, 0 0 2)"), 3.5, 0)) -POLYGON M((0 20 0, 0 0 0, -3.5 0 0, -3.5 20 0, 0 20 0)) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer17.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer17.testcase deleted file mode 100644 index 1ffcce6..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - LINESTRINGZM -X, float radius, right side -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRINGZM(0 20 1 4, 0 0 2 6)"), 3.5, 0)) -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer(GeomFromText("LINESTRINGZM(0 20 1 4, 0 0 2 6)"), 3.5, 0)) -POLYGON ZM((0 20 1 0, 0 0 2 0, -3.5 0 nan 0, -3.5 20 nan 0, 0 20 1 0)) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer2.testcase deleted file mode 100644 index a35f3b3..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - LINESTRING X, int radius, left side -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3, 1)); -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3, 1)) -POLYGON((0 20, 0 0, -3 0, -3 20, 0 20)) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer3.testcase deleted file mode 100644 index 3be0d22..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - LINESTRING X, int radius, right side -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3, 0)); -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3, 0)) -POLYGON((0 0, 0 20, 3 20, 3 0, 0 0)) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer4.testcase deleted file mode 100644 index 5579388..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - LINESTRING X, float radius, right side -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3.5, 0)); -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3.5, 0)) -POLYGON((0 0, 0 20, 3.5 20, 3.5 0, 0 0)) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer5.testcase deleted file mode 100644 index 0c04149..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - text arg, float radius, right side (error) -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer("hello", 3.5, 0)); -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer("hello", 3.5, 0)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer6.testcase deleted file mode 100644 index 07b4828..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - bad blob, float radius, right side (error) -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer(zeroblob(20), 3.5, 0)); -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer(zeroblob(20), 3.5, 0)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer7.testcase deleted file mode 100644 index 299a96b..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - LINESTRING -X, float radius, right side -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 20, 0 0)"), 3.5, 0)); -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 20, 0 0)"), 3.5, 0)) -POLYGON((0 20, 0 0, -3.5 0, -3.5 20, 0 20)) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer8.testcase deleted file mode 100644 index 1b57f29..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - LINESTRING X, bad radius, right side (error) -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), "foo", 0)); -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), "foo", 0)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer9.testcase deleted file mode 100644 index 397d2f6..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/singlesidedbuffer9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -singlesidedbuffer - LINESTRING X, int radius, bad side (error) -:memory: #use in-memory database -SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3, 3.5)); -1 # rows (not including the header row) -1 # columns -AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3, 3.5)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/snap1.testcase deleted file mode 100644 index ebcbdd3..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Snap, LINESTRING, point -:memory: #use in-memory database -SELECT AsText(Snap(GeomFromText("POINT(1 1)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2)) -1 # rows (not including the header row) -1 # columns -AsText(Snap(GeomFromText("POINT(1 1)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2)) -POINT(0 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/snap10.testcase deleted file mode 100644 index 58b2ce6..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Snap, LINESTRING, pointZM -:memory: #use in-memory database -SELECT AsText(Snap(GeomFromText("POINTZM(0.1 0.2 1 4)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 0.4)) -1 # rows (not including the header row) -1 # columns -AsText(Snap(GeomFromText("POINTZM(0.1 0.2 1 4)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 0.4)) -POINT ZM(0 0 0 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/snap2.testcase deleted file mode 100644 index 6b96819..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Snap, LINESTRING, point -:memory: #use in-memory database -SELECT AsText(Snap(GeomFromText("POINT(0.1 0.2)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 0.4)) -1 # rows (not including the header row) -1 # columns -AsText(Snap(GeomFromText("POINT(0.1 0.2)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 0.4)) -POINT(0 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/snap3.testcase deleted file mode 100644 index b23e70f..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Snap, LINESTRING, point, non-number 3rd arg -:memory: #use in-memory database -SELECT AsText(Snap(GeomFromText("POINT(0.1 0.2)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), "hello")) -1 # rows (not including the header row) -1 # columns -AsText(Snap(GeomFromText("POINT(0.1 0.2)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), "hello")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/snap4.testcase deleted file mode 100644 index 9faa8f9..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Snap - non-blob second arg -:memory: #use in-memory database -SELECT Snap(GeomFromText("POINT(0.1 0.2)"), 5, 0.4) -1 # rows (not including the header row) -1 # columns -Snap(GeomFromText("POINT(0.1 0.2)"), 5, 0.4) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/snap5.testcase deleted file mode 100644 index a119b05..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Snap - non blob first arg -:memory: #use in-memory database -SELECT Snap("hello", GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2) -1 # rows (not including the header row) -1 # columns -Snap("hello", GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/snap6.testcase deleted file mode 100644 index a4f984c..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Snap - bad blob first arg -:memory: #use in-memory database -SELECT Snap(zeroblob(50), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2) -1 # rows (not including the header row) -1 # columns -Snap(zeroblob(50), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/snap7.testcase deleted file mode 100644 index da823f7..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Snap - bad blob second arg -:memory: #use in-memory database -SELECT Snap(GeomFromText("POINT(0.1 0.2)"), zeroblob(87), 0.4) -1 # rows (not including the header row) -1 # columns -Snap(GeomFromText("POINT(0.1 0.2)"), zeroblob(87), 0.4) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/snap8.testcase deleted file mode 100644 index 8d4b59f..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Snap, mismatched geom dims -:memory: #use in-memory database -SELECT AsText(Snap(GeomFromText("POINTZ(1 1 4)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2)) -1 # rows (not including the header row) -1 # columns -AsText(Snap(GeomFromText("POINTZ(1 1 4)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2)) -POINT Z(0 0 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/snap9.testcase deleted file mode 100644 index 5d5a9be..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/snap9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Snap, LINESTRING, pointM -:memory: #use in-memory database -SELECT AsText(Snap(GeomFromText("POINTM(0.1 0.2 4)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 0.4)) -1 # rows (not including the header row) -1 # columns -AsText(Snap(GeomFromText("POINTM(0.1 0.2 4)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 0.4)) -POINT M(0 0 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid1.testcase deleted file mode 100644 index bc1a36e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid1.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - NULL geom -:memory: #use in-memory database -SELECT SquareGrid(NULL, 1.0); -1 # rows (not including the header row) -1 # columns -SquareGrid(NULL, 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid10.testcase deleted file mode 100644 index 506ca7a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid10.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Polygon geom - text edges_only -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 'alpha'); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 'alpha') -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid11.testcase deleted file mode 100644 index cb6be6b..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid11.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Polygon geom - double edges_only -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 1.6); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 1.6) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid12.testcase deleted file mode 100644 index a302600..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid12.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Polygon geom - BLOB edges_only -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, zeroblob(4)); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, zeroblob(4)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid13.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid13.testcase deleted file mode 100644 index 1788a4c..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid13.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Polygon geom - NULL origin -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, NULL); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, NULL) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid14.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid14.testcase deleted file mode 100644 index 1bc8bdf..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid14.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Polygon geom - zeroblob origin -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, zeroblob(4)); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, zeroblob(4)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid15.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid15.testcase deleted file mode 100644 index 38363b3..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid15.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Polygon geom - Linestring origin -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('LINESTRING(0 0, 1 1)')); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('LINESTRING(0 0, 1 1)')) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid16.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid16.testcase deleted file mode 100644 index ec22b57..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid16.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Polygon geom - Polygon Origin -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid17.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid17.testcase deleted file mode 100644 index eec79fe..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid17.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Polygon geom - negative size -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), -1.0); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), -1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid18.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid18.testcase deleted file mode 100644 index 580c09e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid18.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Polygon geom - zero size -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 0.0); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 0.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid19.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid19.testcase deleted file mode 100644 index ccf3530..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid19.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Polygon geom - MultiPoint Origin -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('MULTIPOINT(0 0, 1 1)')); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('MULTIPOINT(0 0, 1 1)')) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid2.testcase deleted file mode 100644 index a0895c5..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid2.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - zeroblob geom -:memory: #use in-memory database -SELECT SquareGrid(zeroblob(4), 1.0); -1 # rows (not including the header row) -1 # columns -SquareGrid(zeroblob(4), 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid20.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid20.testcase deleted file mode 100644 index 1281d9b..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid20.testcase +++ /dev/null @@ -1,11 +0,0 @@ -SquareGrid - valid - no Origin -:memory: #use in-memory database -SELECT AsText(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0)); -1 # rows (not including the header row) -1 # columns -AsText(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0)) -MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((1 0, 2 0, 2 1, 1 1, 1 0)), ((2 0, 3 0, 3 1, 2 1, 2 0)), ((0 1, 1 1, 1 2, 0 2, 0 1)), ((1 1, 2 1, 2 2, 1 2, 1 1)), ((2 1, 3 1, 3 2, 2 2, 2 1))) - - - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid21.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid21.testcase deleted file mode 100644 index e6e681e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid21.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - valid - with Origin -:memory: #use in-memory database -SELECT AsText(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 0, GeomFromText('POINT(0.1 0.1)'))); -1 # rows (not including the header row) -1 # columns -AsText(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 0, GeomFromText('POINT(0.1 0.1)'))) -MULTIPOLYGON(((0.1 0.1, 1.1 0.1, 1.1 1.1, 0.1 1.1, 0.1 0.1)), ((1.1 0.1, 2.1 0.1, 2.1 1.1, 1.1 1.1, 1.1 0.1)), ((2.1 0.1, 3.1 0.1, 3.1 1.1, 2.1 1.1, 2.1 0.1)), ((0.1 1.1, 1.1 1.1, 1.1 2.1, 0.1 2.1, 0.1 1.1)), ((1.1 1.1, 2.1 1.1, 2.1 2.1, 1.1 2.1, 1.1 1.1)), ((2.1 1.1, 3.1 1.1, 3.1 2.1, 2.1 2.1, 2.1 1.1))) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid22.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid22.testcase deleted file mode 100644 index cf61bca..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid22.testcase +++ /dev/null @@ -1,8 +0,0 @@ -SquareGrid - valid - no Origin, only_edges -:memory: #use in-memory database -SELECT ST_Length(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1)); -1 # rows (not including the header row) -1 # columns -ST_Length(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1)) -17.0 - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid23.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid23.testcase deleted file mode 100644 index 4a8a63a..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid23.testcase +++ /dev/null @@ -1,7 +0,0 @@ -SquareGrid - valid - with Origin, only_edges -:memory: #use in-memory database -SELECT ST_Length(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1, GeomFromText('POINT(0.1 0.1)'))); -1 # rows (not including the header row) -1 # columns -ST_Length(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1, GeomFromText('POINT(0.1 0.1)'))) -17.0 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid3.testcase deleted file mode 100644 index 44bfd6e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid3.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Point geom -:memory: #use in-memory database -SELECT SquareGrid(MakePoint(1, 1, 4326), 1.0); -1 # rows (not including the header row) -1 # columns -SquareGrid(MakePoint(1, 1, 4326), 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid4.testcase deleted file mode 100644 index d2f896f..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid4.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Linestring geom -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('LINESTRING(1 1, 2 2)', 4326), 1.0); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('LINESTRING(1 1, 2 2)', 4326), 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid5.testcase deleted file mode 100644 index bfe2726..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid5.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Collection (Point - Polygon) geom -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid6.testcase deleted file mode 100644 index c678eef..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid6.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Collection (Linestring - Polygon) geom -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 2 2), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 2 2), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid7.testcase deleted file mode 100644 index f08e3d1..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid7.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Polygon geom - NULL size -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), NULL); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), NULL) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid8.testcase deleted file mode 100644 index c33cbd0..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid8.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Polygon geom - alpha size -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 'alpha'); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 'alpha') -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid9.testcase deleted file mode 100644 index 165b30d..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/squaregrid9.testcase +++ /dev/null @@ -1,9 +0,0 @@ -SquareGrid - Polygon geom - NULL edges_only -:memory: #use in-memory database -SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, NULL); -1 # rows (not including the header row) -1 # columns -SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, NULL) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid1.testcase deleted file mode 100644 index 66dd830..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid1.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - NULL geom -:memory: #use in-memory database -SELECT TriangularGrid(NULL, 1.0); -1 # rows (not including the header row) -1 # columns -TriangularGrid(NULL, 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid10.testcase deleted file mode 100644 index f5c29b2..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid10.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Polygon geom - text edges_only -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 'alpha'); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 'alpha') -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid11.testcase deleted file mode 100644 index 8f39a19..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid11.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Polygon geom - double edges_only -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 4.5); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 4.5) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid12.testcase deleted file mode 100644 index fb05393..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid12.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Polygon geom - BLOB edges_only -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, zeroblob(4)); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, zeroblob(4)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid13.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid13.testcase deleted file mode 100644 index 5f166b7..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid13.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Polygon geom - NULL origin -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, NULL); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, NULL) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid14.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid14.testcase deleted file mode 100644 index 66fa818..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid14.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Polygon geom - zeroblob origin -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, zeroblob(4)); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, zeroblob(4)) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid15.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid15.testcase deleted file mode 100644 index 0c67757..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid15.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Polygon geom - Linestring origin -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('LINESTRING(0 0, 1 1)')); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('LINESTRING(0 0, 1 1)')) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid16.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid16.testcase deleted file mode 100644 index 5c084c5..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid16.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Polygon geom - Polygon Origin -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid17.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid17.testcase deleted file mode 100644 index bc5b81f..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid17.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Polygon geom - negative size -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), -1.0); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), -1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid18.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid18.testcase deleted file mode 100644 index bd43850..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid18.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Polygon geom - zero size -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 0.0); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 0.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid19.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid19.testcase deleted file mode 100644 index 5cb57af..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid19.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Polygon geom - MultiPoint Origin -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('MULTIPOINT(0 0, 1 1)')); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('MULTIPOINT(0 0, 1 1)')) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid2.testcase deleted file mode 100644 index c9c40cb..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid2.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - zeroblob geom -:memory: #use in-memory database -SELECT TriangularGrid(zeroblob(4), 1.0); -1 # rows (not including the header row) -1 # columns -TriangularGrid(zeroblob(4), 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid20.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid20.testcase deleted file mode 100644 index d74abcd..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid20.testcase +++ /dev/null @@ -1,10 +0,0 @@ -TriangularGrid - valid - no Origin -:memory: #use in-memory database -SELECT AsText(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0)); -1 # rows (not including the header row) -1 # columns -AsText(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0)) -MULTIPOLYGON(((0 0, 1 0, 0.5 0.866025, 0 0)), ((0.5 0.866025, 1 0, 1.5 0.866025, 0.5 0.866025)), ((1 0, 2 0, 1.5 0.866025, 1 0)), ((1.5 0.866025, 2 0, 2.5 0.866025, 1.5 0.866025)), ((2 0, 3 0, 2.5 0.866025, 2 0)), ((-0.5 0.866025, 0.5 0.866025, 0 1.732051, -0.5 0.866025)), ((0 1.732051, 0.5 0.866025, 1 1.732051, 0 1.732051)), ((0.5 0.866025, 1.5 0.866025, 1 1.732051, 0.5 0.866025)), ((1 1.732051, 1.5 0.866025, 2 1.732051, 1 1.732051)), ((1.5 0.866025, 2.5 0.866025, 2 1.732051, 1.5 0.866025))) - - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid21.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid21.testcase deleted file mode 100644 index b19d523..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid21.testcase +++ /dev/null @@ -1,7 +0,0 @@ -TriangularGrid - valid - with Origin -:memory: #use in-memory database -SELECT AsText(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 0, GeomFromText('POINT(0.1 0.1)'))); -1 # rows (not including the header row) -1 # columns -AsText(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 0, GeomFromText('POINT(0.1 0.1)'))) -MULTIPOLYGON(((0.1 0.1, 1.1 0.1, 0.6 0.966025, 0.1 0.1)), ((0.6 0.966025, 1.1 0.1, 1.6 0.966025, 0.6 0.966025)), ((1.1 0.1, 2.1 0.1, 1.6 0.966025, 1.1 0.1)), ((1.6 0.966025, 2.1 0.1, 2.6 0.966025, 1.6 0.966025)), ((2.1 0.1, 3.1 0.1, 2.6 0.966025, 2.1 0.1)), ((-0.4 0.966025, 0.6 0.966025, 0.1 1.832051, -0.4 0.966025)), ((0.1 1.832051, 0.6 0.966025, 1.1 1.832051, 0.1 1.832051)), ((0.6 0.966025, 1.6 0.966025, 1.1 1.832051, 0.6 0.966025)), ((1.1 1.832051, 1.6 0.966025, 2.1 1.832051, 1.1 1.832051)), ((1.6 0.966025, 2.6 0.966025, 2.1 1.832051, 1.6 0.966025))) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid22.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid22.testcase deleted file mode 100644 index 5c08ffd..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid22.testcase +++ /dev/null @@ -1,10 +0,0 @@ -TriangularGrid - valid - no Origin, edges_only -:memory: #use in-memory database -SELECT ST_Length(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1)); -1 # rows (not including the header row) -1 # columns -ST_Length(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1)) -18.0 - - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid23.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid23.testcase deleted file mode 100644 index ada451e..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid23.testcase +++ /dev/null @@ -1,7 +0,0 @@ -TriangularGrid - valid - with Origin, edges_only -:memory: #use in-memory database -SELECT ST_Length(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1, GeomFromText('POINT(0.1 0.1)'))); -1 # rows (not including the header row) -1 # columns -ST_Length(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1, GeomFromText('POINT(0.1 0.1)'))) -18.0 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid3.testcase deleted file mode 100644 index d80c9a5..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid3.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Point geom -:memory: #use in-memory database -SELECT TriangularGrid(MakePoint(1, 1, 4326), 1.0); -1 # rows (not including the header row) -1 # columns -TriangularGrid(MakePoint(1, 1, 4326), 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid4.testcase deleted file mode 100644 index 1c60362..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid4.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Linestring geom -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('LINESTRING(1 1, 2 2)', 4326), 1.0); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('LINESTRING(1 1, 2 2)', 4326), 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid5.testcase deleted file mode 100644 index 2626148..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid5.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Collection (Point - Polygon) geom -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid6.testcase deleted file mode 100644 index 22079d8..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid6.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Collection (Linestring - Polygon) geom -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 2 2), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 2 2), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid7.testcase deleted file mode 100644 index 860427f..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid7.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Polygon geom - NULL size -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), NULL); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), NULL) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid8.testcase deleted file mode 100644 index 52f06e3..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid8.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Polygon geom - alpha size -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 'alpha'); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 'alpha') -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid9.testcase deleted file mode 100644 index d8aec54..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/trianggrid9.testcase +++ /dev/null @@ -1,9 +0,0 @@ -TriangularGrid - Polygon geom - NULL edges_only -:memory: #use in-memory database -SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, NULL); -1 # rows (not including the header row) -1 # columns -TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, NULL) -(NULL) - - diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion1.testcase deleted file mode 100644 index 0d914dc..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -unaryunion - point -:memory: #use in-memory database -SELECT AsText(UnaryUnion(GeomFromText("POINT(1 2)"))); -1 # rows (not including the header row) -1 # columns -AsText(UnaryUnion(GeomFromText("POINT(1 2)"))) -POINT(1 2) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion2.testcase deleted file mode 100644 index e785689..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -unaryunion - points -:memory: #use in-memory database -SELECT AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTION(POINT(1 2), POINT(2 3))"))) -1 # rows (not including the header row) -1 # columns -AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTION(POINT(1 2), POINT(2 3))"))); -MULTIPOINT(1 2, 2 3) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion3.testcase deleted file mode 100644 index 72e2b74..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -unaryunion - points Z -:memory: #use in-memory database -SELECT AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(1 2 3), POINTZ(2 3 4))"))) -1 # rows (not including the header row) -1 # columns -AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(1 2 3), POINTZ(2 3 4))"))); -MULTIPOINT Z(1 2 3, 2 3 4) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion4.testcase deleted file mode 100644 index 42631f8..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -unaryunion - points M -:memory: #use in-memory database -SELECT AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTIONM(POINTM(1 2 3), POINTM(2 3 4))"))) -1 # rows (not including the header row) -1 # columns -AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTIONM(POINTM(1 2 3), POINTM(2 3 4))"))); -MULTIPOINT M(1 2 0, 2 3 0) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion5.testcase deleted file mode 100644 index 2e6623f..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -unaryunion - points ZM -:memory: #use in-memory database -SELECT AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(1 2 3 1), POINTZM(2 3 4 1))"))) -1 # rows (not including the header row) -1 # columns -AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(1 2 3 1), POINTZM(2 3 4 1))"))); -MULTIPOINT ZM(1 2 3 0, 2 3 4 0) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion6.testcase deleted file mode 100644 index c25c693..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -unaryunion - non-blob -:memory: #use in-memory database -SELECT AsText(UnaryUnion(3.14)) -1 # rows (not including the header row) -1 # columns -AsText(UnaryUnion(3.14)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion7.testcase deleted file mode 100644 index 0572565..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -unaryunion - bad blob -:memory: #use in-memory database -SELECT UnaryUnion(zeroblob(40)) -1 # rows (not including the header row) -1 # columns -UnaryUnion(zeroblob(40)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion8.testcase deleted file mode 100644 index 51d0f4d..0000000 --- a/src/spatialite/test/sql_stmt_geosadvanced_tests/unaryunion8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -unaryunion - toxic blob -:memory: #use in-memory database -SELECT AsText(UnaryUnion(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) -1 # rows (not including the header row) -1 # columns -AsText(UnaryUnion(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) -POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5, 136 -35)) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull1.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull1.testcase deleted file mode 100644 index a3edde4..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - Invalid BLOB input (error) -:memory: #use in-memory database -SELECT ST_ConcaveHull(zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_ConcaveHull(zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull10.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull10.testcase deleted file mode 100644 index 0a17f50..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - double allow_holes (error) -:memory: #use in-memory database -SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 2.3); -1 # rows (not including the header row) -1 # columns -ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 2.3) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull11.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull11.testcase deleted file mode 100644 index 140112a..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - NULL allow_holes (error) -:memory: #use in-memory database -SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, NULL); -1 # rows (not including the header row) -1 # columns -ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull12.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull12.testcase deleted file mode 100644 index ab3b037..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - BLOB tolerance (error) -:memory: #use in-memory database -SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 1, zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 1, zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull13.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull13.testcase deleted file mode 100644 index 255959e..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - text tolerance (error) -:memory: #use in-memory database -SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 1, 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 1, 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull14.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull14.testcase deleted file mode 100644 index bac103a..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - NULL tolerance (error) -:memory: #use in-memory database -SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 1, NULL); -1 # rows (not including the header row) -1 # columns -ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 1, NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull15.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull15.testcase deleted file mode 100644 index 9244fca..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - no_holes -:memory: #use in-memory database -SELECT ST_Area(ST_ConcaveHull(GeomFromText('MULTIPOINT(10 10, 10 12, 10 14, 10 16, 10 18, 10 20, 12 10, 12 12, 12 14, 12 16, 12 18, 12 20, 14 10, 14 12, 14 14, 14 18, 14 20, 17 10, 17 12, 17 14, 17 16, 17 18, 17 20, 16 10, 16 12, 16 14, 16 16, 16 18, 16 20, 18 10, 18 20, 20 10, 20 20)'))); -1 # rows (not including the header row) -1 # columns -ST_Area(ST_ConcaveHull(GeomFromText('MULTIPOINT(10 10, 10 12, 10 14, 10 16, 10 18, 10 20, 12 10, 12 12, 12 14, 12 16, 12 18, 12 20, 14 10, 14 12, 14 14, 14 18, 14 20, 17 10, 17 12, 17 14, 17 16, 17 18, 17 20, 16 10, 16 12, 16 14, 16 16, 16 18, 16 20, 18 10, 18 20, 20 10, 20 20)'))) -72.0 diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull16.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull16.testcase deleted file mode 100644 index 1c53c75..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - allow_holes -:memory: #use in-memory database -SELECT ST_Area(ST_ConcaveHull(GeomFromText('MULTIPOINT(10 10, 10 12, 10 14, 10 16, 10 18, 10 20, 12 10, 12 12, 12 14, 12 16, 12 18, 12 20, 14 10, 14 12, 14 14, 14 18, 14 20, 17 10, 17 12, 17 14, 17 16, 17 18, 17 20, 16 10, 16 12, 16 14, 16 16, 16 18, 16 20, 18 10, 18 20, 20 10, 20 20)'), 3, 1)); -1 # rows (not including the header row) -1 # columns -ST_Area(ST_ConcaveHull(GeomFromText('MULTIPOINT(10 10, 10 12, 10 14, 10 16, 10 18, 10 20, 12 10, 12 12, 12 14, 12 16, 12 18, 12 20, 14 10, 14 12, 14 14, 14 18, 14 20, 17 10, 17 12, 17 14, 17 16, 17 18, 17 20, 16 10, 16 12, 16 14, 16 16, 16 18, 16 20, 18 10, 18 20, 20 10, 20 20)'), 3, 1)) -64.0 diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull17.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull17.testcase deleted file mode 100644 index bbd90b4..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull XYZ - no_holes -:memory: #use in-memory database -SELECT ST_Equals(ST_ConcaveHull(GeomFromText('MULTIPOINTZ(10 10 100, 10 12 100, 10 14 100, 10 16 100, 10 18 100, 10 20 100, 12 10 100, 12 12 100, 12 14 100, 12 16 100, 12 18 100, 12 20 100, 14 10 100, 14 12 100, 14 14 100, 14 18 100, 14 20 100, 17 10 100, 17 12 100, 17 14 100, 17 16 100, 17 18 100, 17 20 100, 16 10 100, 16 12 100, 16 14 100, 16 16 100, 16 18 100, 16 20 100, 18 10 100, 18 20 100, 20 10 100, 20 20 100)')), GeomFromText('POLYGONZ((12 10 100, 10 10 100, 10 12 100, 10 14 100, 10 16 100, 10 18 100, 10 20 100, 12 20 100, 14 20 100, 16 20 100, 17 20 100, 18 20 100, 17 18 100, 17 16 100, 17 14 100, 17 12 100, 18 10 100, 17 10 100, 16 10 100, 14 10 100, 12 10 100))')); -1 # rows (not including the header row) -1 # columns -ST_Equals(ST_ConcaveHull(GeomFromText('MULTIPOINTZ(10 10 100, 10 12 100, 10 14 100, 10 16 100, 10 18 100, 10 20 100, 12 10 100, 12 12 100, 12 14 100, 12 16 100, 12 18 100, 12 20 100, 14 10 100, 14 12 100, 14 14 100, 14 18 100, 14 20 100, 17 10 100, 17 12 100, 17 14 100, 17 16 100, 17 18 100, 17 20 100, 16 10 100, 16 12 100, 16 14 100, 16 16 100, 16 18 100, 16 20 100, 18 10 100, 18 20 100, 20 10 100, 20 20 100)')), GeomFromText('POLYGONZ((12 10 100, 10 10 100, 10 12 100, 10 14 100, 10 16 100, 10 18 100, 10 20 100, 12 20 100, 14 20 100, 16 20 100, 17 20 100, 18 20 100, 17 18 100, 17 16 100, 17 14 100, 17 12 100, 18 10 100, 17 10 100, 16 10 100, 14 10 100, 12 10 100))')) -1 diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull18.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull18.testcase deleted file mode 100644 index 86e9fe7..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull XYM - no_holes -:memory: #use in-memory database -SELECT ST_Equals(ST_ConcaveHull(GeomFromText('MULTIPOINTM(10 10 100, 10 12 100, 10 14 100, 10 16 100, 10 18 100, 10 20 100, 12 10 100, 12 12 100, 12 14 100, 12 16 100, 12 18 100, 12 20 100, 14 10 100, 14 12 100, 14 14 100, 14 18 100, 14 20 100, 17 10 100, 17 12 100, 17 14 100, 17 16 100, 17 18 100, 17 20 100, 16 10 100, 16 12 100, 16 14 100, 16 16 100, 16 18 100, 16 20 100, 18 10 100, 18 20 100, 20 10 100, 20 20 100)')), GeomFromText('POLYGON M((12 10 0, 10 10 0, 10 12 0, 10 14 0, 10 16 0, 10 18 0, 10 20 0, 12 20 0, 14 20 0, 16 20 0, 17 20 0, 18 20 0, 17 18 0, 17 16 0, 17 14 0, 17 12 0, 18 10 0, 17 10 0, 16 10 0, 14 10 0, 12 10 0))')); -1 # rows (not including the header row) -1 # columns -ST_Equals(ST_ConcaveHull(GeomFromText('MULTIPOINTM(10 10 100, 10 12 100, 10 14 100, 10 16 100, 10 18 100, 10 20 100, 12 10 100, 12 12 100, 12 14 100, 12 16 100, 12 18 100, 12 20 100, 14 10 100, 14 12 100, 14 14 100, 14 18 100, 14 20 100, 17 10 100, 17 12 100, 17 14 100, 17 16 100, 17 18 100, 17 20 100, 16 10 100, 16 12 100, 16 14 100, 16 16 100, 16 18 100, 16 20 100, 18 10 100, 18 20 100, 20 10 100, 20 20 100)')), GeomFromText('POLYGON M((12 10 0, 10 10 0, 10 12 0, 10 14 0, 10 16 0, 10 18 0, 10 20 0, 12 20 0, 14 20 0, 16 20 0, 17 20 0, 18 20 0, 17 18 0, 17 16 0, 17 14 0, 17 12 0, 18 10 0, 17 10 0, 16 10 0, 14 10 0, 12 10 0))')) -1 diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull19.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull19.testcase deleted file mode 100644 index 24a0aca..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull XYZM - no_holes -:memory: #use in-memory database -SELECT ST_Equals(ST_ConcaveHull(GeomFromText('MULTIPOINTZM(10 10 100 10, 10 12 100 10, 10 14 100 10, 10 16 100 10, 10 18 100 10, 10 20 100 10, 12 10 100 10, 12 12 100 10, 12 14 100 10, 12 16 100 10, 12 18 100 10, 12 20 100 10, 14 10 100 10, 14 12 100 10, 14 14 100 10, 14 18 100 10, 14 20 100 10, 17 10 100 10, 17 12 100 10, 17 14 100 10, 17 16 100 10, 17 18 100 10, 17 20 100 10, 16 10 100 10, 16 12 100 10, 16 14 100 10, 16 16 100 10, 16 18 100 10, 16 20 100 10, 18 10 100 10, 18 20 100 10, 20 10 100 10, 20 20 100 10)')), GeomfromText('POLYGON ZM((12 10 100 0, 10 10 100 0, 10 12 100 0, 10 14 100 0, 10 16 100 0, 10 18 100 0, 10 20 100 0, 12 20 100 0, 14 20 100 0, 16 20 100 0, 17 20 100 0, 18 20 100 0, 17 18 100 0, 17 16 100 0, 17 14 100 0, 17 12 100 0, 18 10 100 0, 17 10 100 0, 16 10 100 0, 14 10 100 0, 12 10 100 0))')); -1 # rows (not including the header row) -1 # columns -ST_Equals(ST_ConcaveHull(GeomFromText('MULTIPOINTZM(10 10 100 10, 10 12 100 10, 10 14 100 10, 10 16 100 10, 10 18 100 10, 10 20 100 10, 12 10 100 10, 12 12 100 10, 12 14 100 10, 12 16 100 10, 12 18 100 10, 12 20 100 10, 14 10 100 10, 14 12 100 10, 14 14 100 10, 14 18 100 10, 14 20 100 10, 17 10 100 10, 17 12 100 10, 17 14 100 10, 17 16 100 10, 17 18 100 10, 17 20 100 10, 16 10 100 10, 16 12 100 10, 16 14 100 10, 16 16 100 10, 16 18 100 10, 16 20 100 10, 18 10 100 10, 18 20 100 10, 20 10 100 10, 20 20 100 10)')), GeomfromText('POLYGON ZM((12 10 100 0, 10 10 100 0, 10 12 100 0, 10 14 100 0, 10 16 100 0, 10 18 100 0, 10 20 100 0, 12 20 100 0, 14 20 100 0, 16 20 100 0, 17 20 100 0, 18 20 100 0, 17 18 100 0, 17 16 100 0, 17 14 100 0, 17 12 100 0, 18 10 100 0, 17 10 100 0, 16 10 100 0, 14 10 100 0, 12 10 100 0))')) -1 diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull2.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull2.testcase deleted file mode 100644 index 471cb7a..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - text input (error) -:memory: #use in-memory database -SELECT ST_ConcaveHull('alpha'); -1 # rows (not including the header row) -1 # columns -ST_ConcaveHull('alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull3.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull3.testcase deleted file mode 100644 index 3a4757d..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - integer input (error) -:memory: #use in-memory database -SELECT ST_ConcaveHull(1); -1 # rows (not including the header row) -1 # columns -ST_ConcaveHull(1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull4.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull4.testcase deleted file mode 100644 index 64d6a6c..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - NULL input (error) -:memory: #use in-memory database -SELECT ST_ConcaveHull(NULL); -1 # rows (not including the header row) -1 # columns -ST_ConcaveHull(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull5.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull5.testcase deleted file mode 100644 index c29a1a3..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - BLOB factor (error) -:memory: #use in-memory database -SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull6.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull6.testcase deleted file mode 100644 index c67de21..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - text factor (error) -:memory: #use in-memory database -SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull7.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull7.testcase deleted file mode 100644 index c076fd3..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - NULL factor (error) -:memory: #use in-memory database -SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), NULL); -1 # rows (not including the header row) -1 # columns -ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull8.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull8.testcase deleted file mode 100644 index 6064fc0..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - BLOB allow_holes (error) -:memory: #use in-memory database -SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull9.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull9.testcase deleted file mode 100644 index b77f962..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/concave_hull9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_ConcaveHull - text allow_holes (error) -:memory: #use in-memory database -SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay1.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay1.testcase deleted file mode 100644 index 74f29e3..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation - Invalid BLOB input (error) -:memory: #use in-memory database -SELECT ST_DelaunayTriangulation(zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_DelaunayTriangulation(zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay10.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay10.testcase deleted file mode 100644 index 039e1a8..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation - text tolerancey (error) -:memory: #use in-memory database -SELECT ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay11.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay11.testcase deleted file mode 100644 index 806a189..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation - NULL tolerance (error) -:memory: #use in-memory database -SELECT ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, NULL); -1 # rows (not including the header row) -1 # columns -ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay12.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay12.testcase deleted file mode 100644 index 330aa52..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation XY - (only_edges=no) -:memory: #use in-memory database -SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0), GeomFromText('MULTIPOLYGON(((0 1, 1 1, 0 0, 0 1)), ((0 1, 2 2, 1 1, 0 1)), ((2 2, 2 1, 1 1, 2 2)), ((0 0, 1 1, 2 1, 0 0)))')); -1 # rows (not including the header row) -1 # columns -ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0), GeomFromText('MULTIPOLYGON(((0 1, 1 1, 0 0, 0 1)), ((0 1, 2 2, 1 1, 0 1)), ((2 2, 2 1, 1 1, 2 2)), ((0 0, 1 1, 2 1, 0 0)))')) -1 diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay13.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay13.testcase deleted file mode 100644 index 72b0c5c..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation XY - (only_edges=yes) -:memory: #use in-memory database -SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1), GeomFromText('MULTILINESTRING((0 1, 2 2), (0 0, 0 1), (0 0, 2 1), (2 1, 2 2), (1 1, 2 1), (1 1, 2 2), (0 1, 1 1), (0 0, 1 1))')); -1 # rows (not including the header row) -1 # columns -ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1), GeomFromText('MULTILINESTRING((0 1, 2 2), (0 0, 0 1), (0 0, 2 1), (2 1, 2 2), (1 1, 2 1), (1 1, 2 2), (0 1, 1 1), (0 0, 1 1))')) -1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay14.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay14.testcase deleted file mode 100644 index fd8702a..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation XYZ - (only_edges=no) -:memory: #use in-memory database -SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZ(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 0), GeomFromText('MULTIPOLYGONZ(((0 1 13, 1 1 11, 0 0 10, 0 1 13)), ((0 1 13, 2 2 12, 1 1 11, 0 1 13)), ((2 2 12, 2 1 14, 1 1 11, 2 2 12)), ((0 0 10, 1 1 11, 2 1 14, 0 0 10)))')); -1 # rows (not including the header row) -1 # columns -ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZ(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 0), GeomFromText('MULTIPOLYGONZ(((0 1 13, 1 1 11, 0 0 10, 0 1 13)), ((0 1 13, 2 2 12, 1 1 11, 0 1 13)), ((2 2 12, 2 1 14, 1 1 11, 2 2 12)), ((0 0 10, 1 1 11, 2 1 14, 0 0 10)))')) -1 diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay15.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay15.testcase deleted file mode 100644 index 3a0b533..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation - (only_edges=yes) -:memory: #use in-memory database -SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZ(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 1), GeomFromText('MULTILINESTRINGZ((0 1 13, 2 2 12), (0 0 10, 0 1 13), (0 0 10, 2 1 14), (2 1 14, 2 2 12), (1 1 11, 2 1 14), (1 1 11, 2 2 12), (0 1 13, 1 1 11), (0 0 10, 1 1 11))')); -1 # rows (not including the header row) -1 # columns -ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZ(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 1), GeomFromText('MULTILINESTRINGZ((0 1 13, 2 2 12), (0 0 10, 0 1 13), (0 0 10, 2 1 14), (2 1 14, 2 2 12), (1 1 11, 2 1 14), (1 1 11, 2 2 12), (0 1 13, 1 1 11), (0 0 10, 1 1 11))')) -1 diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay16.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay16.testcase deleted file mode 100644 index 88f1205..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation XYM - (only_edges=no) -:memory: #use in-memory database -SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTM(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 0), GeomFromText('MULTIPOLYGONM(((0 1 0, 1 1 0, 0 0 0, 0 1 0)), ((0 1 0, 2 2 0, 1 1 0, 0 1 0)), ((2 2 0, 2 1 0, 1 1 0, 2 2 0)), ((0 0 0, 1 1 0, 2 1 0, 0 0 0)))')); -1 # rows (not including the header row) -1 # columns -ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTM(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 0), GeomFromText('MULTIPOLYGONM(((0 1 0, 1 1 0, 0 0 0, 0 1 0)), ((0 1 0, 2 2 0, 1 1 0, 0 1 0)), ((2 2 0, 2 1 0, 1 1 0, 2 2 0)), ((0 0 0, 1 1 0, 2 1 0, 0 0 0)))')) -1 diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay17.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay17.testcase deleted file mode 100644 index 688774c..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation XYM - (only_edges=yes) -:memory: #use in-memory database -SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTM(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 1), GeomFromText('MULTILINESTRINGM((0 1 0, 2 2 0), (0 0 0, 0 1 0), (0 0 0, 2 1 0), (2 1 0, 2 2 0), (1 1 0, 2 1 0), (1 1 0, 2 2 0), (0 1 0, 1 1 0), (0 0 0, 1 1 0)) ')); -1 # rows (not including the header row) -1 # columns -ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTM(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 1), GeomFromText('MULTILINESTRINGM((0 1 0, 2 2 0), (0 0 0, 0 1 0), (0 0 0, 2 1 0), (2 1 0, 2 2 0), (1 1 0, 2 1 0), (1 1 0, 2 2 0), (0 1 0, 1 1 0), (0 0 0, 1 1 0)) ')) -1 diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay18.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay18.testcase deleted file mode 100644 index 24be2cb..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation XYZM - (only_edges=no) -:memory: #use in-memory database -SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZM(0 0 10 1, 1 1 11 2, 2 2 12 3, 0 1 13 4, 2 1 14 5)'), 0), GeomFromText('MULTIPOLYGONZM(((0 1 13 0, 1 1 11 0, 0 0 10 0, 0 1 13 0)), ((0 1 13 0, 2 2 12 0, 1 1 11 0, 0 1 13 0)), ((2 2 12 0, 2 1 14 0, 1 1 11 0, 2 2 12 0)), ((0 0 10 0, 1 1 11 0, 2 1 14 0, 0 0 10 0))) ')); -1 # rows (not including the header row) -1 # columns -ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZM(0 0 10 1, 1 1 11 2, 2 2 12 3, 0 1 13 4, 2 1 14 5)'), 0), GeomFromText('MULTIPOLYGONZM(((0 1 13 0, 1 1 11 0, 0 0 10 0, 0 1 13 0)), ((0 1 13 0, 2 2 12 0, 1 1 11 0, 0 1 13 0)), ((2 2 12 0, 2 1 14 0, 1 1 11 0, 2 2 12 0)), ((0 0 10 0, 1 1 11 0, 2 1 14 0, 0 0 10 0))) ')) -1 diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay19.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay19.testcase deleted file mode 100644 index 543deac..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation XYZM - (only_edges=yes) -:memory: #use in-memory database -SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZM(0 0 10 1, 1 1 11 2, 2 2 12 3, 0 1 13 4, 2 1 14 5)'), 1), GeomFromText('MULTILINESTRINGZM((0 1 13 0, 2 2 12 0), (0 0 10 0, 0 1 13 0), (0 0 10 0, 2 1 14 0), (2 1 14 0, 2 2 12 0), (1 1 11 0, 2 1 14 0), (1 1 11 0, 2 2 12 0), (0 1 13 0, 1 1 11 0), (0 0 10 0, 1 1 11 0)) ')); -1 # rows (not including the header row) -1 # columns -ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZM(0 0 10 1, 1 1 11 2, 2 2 12 3, 0 1 13 4, 2 1 14 5)'), 1), GeomFromText('MULTILINESTRINGZM((0 1 13 0, 2 2 12 0), (0 0 10 0, 0 1 13 0), (0 0 10 0, 2 1 14 0), (2 1 14 0, 2 2 12 0), (1 1 11 0, 2 1 14 0), (1 1 11 0, 2 2 12 0), (0 1 13 0, 1 1 11 0), (0 0 10 0, 1 1 11 0)) ')) -1 diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay2.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay2.testcase deleted file mode 100644 index 6bd891b..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation - text input (error) -:memory: #use in-memory database -SELECT ST_DelaunayTriangulation('alpha'); -1 # rows (not including the header row) -1 # columns -ST_DelaunayTriangulation('alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay3.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay3.testcase deleted file mode 100644 index 4ea2798..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation - integer input (error) -:memory: #use in-memory database -SELECT ST_DelaunayTriangulation(1); -1 # rows (not including the header row) -1 # columns -ST_DelaunayTriangulation(1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay4.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay4.testcase deleted file mode 100644 index fbfbcc3..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation - NULL input (error) -:memory: #use in-memory database -SELECT ST_DelaunayTriangulation(NULL); -1 # rows (not including the header row) -1 # columns -ST_DelaunayTriangulation(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay5.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay5.testcase deleted file mode 100644 index 2d822a4..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation - NULL edges_only (error) -:memory: #use in-memory database -SELECT ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), NULL); -1 # rows (not including the header row) -1 # columns -ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay6.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay6.testcase deleted file mode 100644 index 95fbe1a..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation - text edges_only (error) -:memory: #use in-memory database -SELECT ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay7.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay7.testcase deleted file mode 100644 index bb59f3c..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation - BLOB edges_only (error) -:memory: #use in-memory database -SELECT ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay8.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay8.testcase deleted file mode 100644 index 55b0d1d..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation - double edges_only (error) -:memory: #use in-memory database -SELECT ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0.0); -1 # rows (not including the header row) -1 # columns -ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0.0) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay9.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay9.testcase deleted file mode 100644 index 3d3ee18..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/delaunay9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_DelaunayTriangulation - BLOB tolerance (error) -:memory: #use in-memory database -SELECT ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj1.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj1.testcase deleted file mode 100644 index 70a65d0..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - Invalid BLOB input (error) -:memory: #use in-memory database -SELECT ST_VoronojDiagram(zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_VoronojDiagram(zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj10.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj10.testcase deleted file mode 100644 index a71c4c6..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - text extra_frame_size (error) -:memory: #use in-memory database -SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj11.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj11.testcase deleted file mode 100644 index b29da82..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - NULL extra_frame_size (error) -:memory: #use in-memory database -SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, NULL); -1 # rows (not including the header row) -1 # columns -ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj12.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj12.testcase deleted file mode 100644 index b1ee203..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - BLOB tolerance (error) -:memory: #use in-memory database -SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 0.0, zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 0.0, zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj13.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj13.testcase deleted file mode 100644 index 7b37da7..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - text tolerancey (error) -:memory: #use in-memory database -SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 0.0, 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 0.0, 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj14.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj14.testcase deleted file mode 100644 index 35a4046..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - NULL tolerance (error) -:memory: #use in-memory database -SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 0.0, NULL); -1 # rows (not including the header row) -1 # columns -ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 0.0, NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj15.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj15.testcase deleted file mode 100644 index 8437a24..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - (only_edges=no) -:memory: #use in-memory database -SELECT AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINT(10 5, 15 5, 20 4, 12 3, 17 2, 16 6)'), 0))); -1 # rows (not including the header row) -1 # columns -AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINT(10 5, 15 5, 20 4, 12 3, 17 2, 16 6)'), 0))) -MULTIPOLYGON(((12.5 5.5, 14.5 2.5, 14.5 1.5, 9.5 1.5, 9.5 2.5, 12.5 5.5)), ((14.5 2.5, 12.5 5.5, 12.5 8.5, 16.9 4.1, 14.5 2.5)), ((12.5 8.5, 12.5 5.5, 9.5 2.5, 9.5 9, 12.416667 9, 12.5 8.5)), ((16.9 4.1, 12.5 8.5, 12.416667 9, 20 9, 17.642857 4.285714, 16.9 4.1)), ((14.5 2.5, 16.9 4.1, 17.642857 4.285714, 19.5 1.5, 14.5 1.5, 14.5 2.5)), ((19.5 1.5, 17.642857 4.285714, 20 9, 20.5 9, 20.5 1.5, 19.5 1.5))) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj16.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj16.testcase deleted file mode 100644 index 460aea3..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - (only_edges=yes) -:memory: #use in-memory database -SELECT AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINT(10 5, 15 5, 20 4, 12 3, 17 2, 16 6)'), 1))); -1 # rows (not including the header row) -1 # columns -AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINT(10 5, 15 5, 20 4, 12 3, 17 2, 16 6)'), 1))) -MULTILINESTRING((12.5 5.5, 14.5 2.5), (12.5 5.5, 12.5 8.5), (12.5 5.5, 9.5 2.5), (12.5 8.5, 16.9 4.1), (12.5 8.5, 12.416667 9), (16.9 4.1, 14.5 2.5), (16.9 4.1, 17.642857 4.285714), (17.642857 4.285714, 19.5 1.5), (17.642857 4.285714, 20 9), (14.5 2.5, 14.5 1.5)) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj17.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj17.testcase deleted file mode 100644 index 060bb56..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - (only_edges=no) -:memory: #use in-memory database -SELECT AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINTZ(10 5 10, 15 5 11, 20 4 12, 12 3 13, 17 2 14, 16 6 15)'), 0))); -1 # rows (not including the header row) -1 # columns -AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINTZ(10 5 10, 15 5 11, 20 4 12, 12 3 13, 17 2 14, 16 6 15)'), 0))) -MULTIPOLYGON Z(((12.5 5.5 0, 14.5 2.5 0, 14.5 1.5 0, 9.5 1.5 0, 9.5 2.5 0, 12.5 5.5 0)), ((14.5 2.5 0, 12.5 5.5 0, 12.5 8.5 0, 16.9 4.1 0, 14.5 2.5 0)), ((12.5 8.5 0, 12.5 5.5 0, 9.5 2.5 0, 9.5 9 0, 12.416667 9 0, 12.5 8.5 0)), ((16.9 4.1 0, 12.5 8.5 0, 12.416667 9 0, 20 9 0, 17.642857 4.285714 0, 16.9 4.1 0)), ((14.5 2.5 0, 16.9 4.1 0, 17.642857 4.285714 0, 19.5 1.5 0, 14.5 1.5 0, 14.5 2.5 0)), ((19.5 1.5 0, 17.642857 4.285714 0, 20 9 0, 20.5 9 0, 20.5 1.5 0, 19.5 1.5 0))) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj18.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj18.testcase deleted file mode 100644 index a871310..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - XYM (only_edges=no) -:memory: #use in-memory database -SELECT AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINTM(10 5 10, 15 5 11, 20 4 12, 12 3 13, 17 2 14, 16 6 15)'), 0))); -1 # rows (not including the header row) -1 # columns -AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINTM(10 5 10, 15 5 11, 20 4 12, 12 3 13, 17 2 14, 16 6 15)'), 0))) -MULTIPOLYGON M(((12.5 5.5 0, 14.5 2.5 0, 14.5 1.5 0, 9.5 1.5 0, 9.5 2.5 0, 12.5 5.5 0)), ((14.5 2.5 0, 12.5 5.5 0, 12.5 8.5 0, 16.9 4.1 0, 14.5 2.5 0)), ((12.5 8.5 0, 12.5 5.5 0, 9.5 2.5 0, 9.5 9 0, 12.416667 9 0, 12.5 8.5 0)), ((16.9 4.1 0, 12.5 8.5 0, 12.416667 9 0, 20 9 0, 17.642857 4.285714 0, 16.9 4.1 0)), ((14.5 2.5 0, 16.9 4.1 0, 17.642857 4.285714 0, 19.5 1.5 0, 14.5 1.5 0, 14.5 2.5 0)), ((19.5 1.5 0, 17.642857 4.285714 0, 20 9 0, 20.5 9 0, 20.5 1.5 0, 19.5 1.5 0))) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj19.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj19.testcase deleted file mode 100644 index 43362f5..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - XYZM (only_edges=no) -:memory: #use in-memory database -SELECT AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINTZM(10 5 10 1, 15 5 11 2, 20 4 12 3, 12 3 13 4, 17 2 14 5, 16 6 15 6)'), 0))); -1 # rows (not including the header row) -1 # columns -AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINTZM(10 5 10 1, 15 5 11 2, 20 4 12 3, 12 3 13 4, 17 2 14 5, 16 6 15 6)'), 0))) -MULTIPOLYGON ZM(((12.5 5.5 0 0, 14.5 2.5 0 0, 14.5 1.5 0 0, 9.5 1.5 0 0, 9.5 2.5 0 0, 12.5 5.5 0 0)), ((14.5 2.5 0 0, 12.5 5.5 0 0, 12.5 8.5 0 0, 16.9 4.1 0 0, 14.5 2.5 0 0)), ((12.5 8.5 0 0, 12.5 5.5 0 0, 9.5 2.5 0 0, 9.5 9 0 0, 12.416667 9 0 0, 12.5 8.5 0 0)), ((16.9 4.1 0 0, 12.5 8.5 0 0, 12.416667 9 0 0, 20 9 0 0, 17.642857 4.285714 0 0, 16.9 4.1 0 0)), ((14.5 2.5 0 0, 16.9 4.1 0 0, 17.642857 4.285714 0 0, 19.5 1.5 0 0, 14.5 1.5 0 0, 14.5 2.5 0 0)), ((19.5 1.5 0 0, 17.642857 4.285714 0 0, 20 9 0 0, 20.5 9 0 0, 20.5 1.5 0 0, 19.5 1.5 0 0))) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj2.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj2.testcase deleted file mode 100644 index 5f81088..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - text input (error) -:memory: #use in-memory database -SELECT ST_VoronojDiagram('alpha'); -1 # rows (not including the header row) -1 # columns -ST_VoronojDiagram('alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj20.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj20.testcase deleted file mode 100644 index 9c2a068..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - (only_edges=no) -:memory: #use in-memory database -SELECT AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINT(5 10, 2 15, 4 20, 3 12, 2 17, 6 16)'), 0))); -1 # rows (not including the header row) -1 # columns -AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINT(5 10, 2 15, 4 20, 3 12, 2 17, 6 16)'), 0))) -MULTIPOLYGON(((3.875 16, 4.346154 14.115385, 1.5 13.166667, 1.5 16, 3.875 16)), ((4.346154 14.115385, 3.875 16, 4.285714 17.642857, 6.5 18.75, 6.5 12.833333, 5.928571 12.928571, 4.346154 14.115385)), ((4.285714 17.642857, 3.875 16, 1.5 16, 1.5 19.5, 4.285714 17.642857)), ((6.5 18.75, 4.285714 17.642857, 1.5 19.5, 1.5 20.5, 6.5 20.5, 6.5 18.75)), ((4.346154 14.115385, 5.928571 12.928571, 2.5 9.5, 1.5 9.5, 1.5 13.166667, 4.346154 14.115385)), ((2.5 9.5, 5.928571 12.928571, 6.5 12.833333, 6.5 9.5, 2.5 9.5))) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj3.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj3.testcase deleted file mode 100644 index 29eb76c..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - integer input (error) -:memory: #use in-memory database -SELECT ST_VoronojDiagram(1); -1 # rows (not including the header row) -1 # columns -ST_VoronojDiagram(1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj4.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj4.testcase deleted file mode 100644 index 55cb17f..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - NULL input (error) -:memory: #use in-memory database -SELECT ST_VoronojDiagram(NULL); -1 # rows (not including the header row) -1 # columns -ST_VoronojDiagram(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj5.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj5.testcase deleted file mode 100644 index 3601e8e..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - NULL edges_only (error) -:memory: #use in-memory database -SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), NULL); -1 # rows (not including the header row) -1 # columns -ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj6.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj6.testcase deleted file mode 100644 index edd3899..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - text edges_only (error) -:memory: #use in-memory database -SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj8.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj8.testcase deleted file mode 100644 index 5485eeb..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - double edges_only (error) -:memory: #use in-memory database -SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0.0); -1 # rows (not including the header row) -1 # columns -ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0.0) -(NULL) diff --git a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj9.testcase b/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj9.testcase deleted file mode 100644 index 05af63a..0000000 --- a/src/spatialite/test/sql_stmt_geostrunk_tests/voronoj9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_VoronojDiagram - BLOB tolerance (error) -:memory: #use in-memory database -SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance1.testcase deleted file mode 100644 index a39f29f..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DDistance - two 2D points -:memory: #use in-memory database -SELECT ST_3DDistance(MakePoint(1, 2), MakePoint(4, 6)) -1 # rows (not including the header row) -1 # columns -ST_3DDistance(MakePoint(1, 2), MakePoint(4, 6)) -5.0 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance10.testcase deleted file mode 100644 index 7c9d8d4..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance10.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DDistance - two 3D linestring -:memory: #use in-memory database -SELECT ST_3DDistance(GeomFromText("LINESTRINGZ(0 0 1, 10 2 5)"), GeomFromText("LINESTRINGZ(0 2 3, 10 3 4)")); -1 # rows (not including the header row) -1 # columns -ST_3DDistance(GeomFromText("LINESTRINGZ(0 0 1, 10 2 5)"), GeomFromText("LINESTRINGZ(0 2 3, 10 3 4)")); -1.262388:6 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance2.testcase deleted file mode 100644 index 3f4100a..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DDistance - two 2D identical points -:memory: #use in-memory database -SELECT ST_3DDistance(MakePoint(1, 2), MakePoint(1, 2)) -1 # rows (not including the header row) -1 # columns -ST_3DDistance(MakePoint(1, 2), MakePoint(1, 2)) -0.0 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance3.testcase deleted file mode 100644 index b5cabab..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DDistance - bad blob first arg -:memory: #use in-memory database -SELECT ST_3DDistance(zeroblob(100), MakePoint(1, 2)) -1 # rows (not including the header row) -1 # columns -ST_3DDistance(zeroblob(100), MakePoint(1, 2)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance4.testcase deleted file mode 100644 index dff3841..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DDistance - bad blob second arg -:memory: #use in-memory database -SELECT ST_3DDistance(MakePoint(1, 2), zeroblob(100)) -1 # rows (not including the header row) -1 # columns -ST_3DDistance(MakePoint(1, 2), zeroblob(100)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance5.testcase deleted file mode 100644 index d1c4f55..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DDistance - non-blob first arg -:memory: #use in-memory database -SELECT ST_3DDistance(3, MakePoint(1, 2)) -1 # rows (not including the header row) -1 # columns -ST_3DDistance(3, MakePoint(1, 2)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance6.testcase deleted file mode 100644 index d1e5bc5..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DDistance - bad blob second arg -:memory: #use in-memory database -SELECT ST_3DDistance(MakePoint(1, 2), "hello") -1 # rows (not including the header row) -1 # columns -ST_3DDistance(MakePoint(1, 2), "hello") -(NULL) - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance7.testcase deleted file mode 100644 index 782178a..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DDistance - parallel 2D lines -:memory: #use in-memory database -SELECT ST_3DDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) -1 # rows (not including the header row) -1 # columns -ST_3DDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) -2.0 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance8.testcase deleted file mode 100644 index e8cfb3e..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance8.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DDistance - intersecting 2D lines -:memory: #use in-memory database -SELECT ST_3DDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) -1 # rows (not including the header row) -1 # columns -ST_3DDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) -0.0 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance9.testcase deleted file mode 100644 index f0570ed..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance9.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DDistance - two 3D points -:memory: #use in-memory database -SELECT ST_3DDistance(MakePointZ(1, 2, 3), MakePointZ(4, 6, 5)); -1 # rows (not including the header row) -1 # columns -ST_3DDistance(MakePointZ(1, 2, 3), MakePointZ(4, 6, 5)) -5.385164:6 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance1.testcase deleted file mode 100644 index 23a72e8..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DMaxDistance - two 2D points -:memory: #use in-memory database -SELECT ST_3DMaxDistance(MakePoint(1, 2), MakePoint(4, 6)) -1 # rows (not including the header row) -1 # columns -ST_3DMaxDistance(MakePoint(1, 2), MakePoint(4, 6)) -5.0 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance10.testcase deleted file mode 100644 index e8dbb43..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance10.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DMaxDistance - two 3D linestring -:memory: #use in-memory database -SELECT ST_3DMaxDistance(GeomFromText("LINESTRINGZ(0 0 1, 10 2 5)"), GeomFromText("LINESTRINGZ(0 2 3, 10 3 4)")); -1 # rows (not including the header row) -1 # columns -ST_3DMaxDistance(GeomFromText("LINESTRINGZ(0 0 1, 10 2 5)"), GeomFromText("LINESTRINGZ(0 2 3, 10 3 4)")); -10.862780:6 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance2.testcase deleted file mode 100644 index 7757f4c..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DMaxDistance - two 2D identical points -:memory: #use in-memory database -SELECT ST_3DMaxDistance(MakePoint(1, 2), MakePoint(1, 2)) -1 # rows (not including the header row) -1 # columns -ST_3DMaxDistance(MakePoint(1, 2), MakePoint(1, 2)) -0.0 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance3.testcase deleted file mode 100644 index 22d2270..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -MaxDistance - bad blob first arg -:memory: #use in-memory database -SELECT ST_MaxDistance(zeroblob(100), MakePoint(1, 2)) -1 # rows (not including the header row) -1 # columns -ST_MaxDistance(zeroblob(100), MakePoint(1, 2)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance4.testcase deleted file mode 100644 index 2da201e..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DMaxDistance - bad blob second arg -:memory: #use in-memory database -SELECT ST_3DMaxDistance(MakePoint(1, 2), zeroblob(100)) -1 # rows (not including the header row) -1 # columns -ST_3DMaxDistance(MakePoint(1, 2), zeroblob(100)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance5.testcase deleted file mode 100644 index 9658b77..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DMaxDistance - non-blob first arg -:memory: #use in-memory database -SELECT ST_3DMaxDistance(3, MakePoint(1, 2)) -1 # rows (not including the header row) -1 # columns -ST_3DMaxDistance(3, MakePoint(1, 2)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance6.testcase deleted file mode 100644 index ee5cb70..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DMaxDistance - bad blob second arg -:memory: #use in-memory database -SELECT ST_3DMaxDistance(MakePoint(1, 2), "hello") -1 # rows (not including the header row) -1 # columns -ST_3DMaxDistance(MakePoint(1, 2), "hello") -(NULL) - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance7.testcase deleted file mode 100644 index 53c1af0..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DMaxDistance - parallel 2D lines -:memory: #use in-memory database -SELECT ST_3DMaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) -1 # rows (not including the header row) -1 # columns -ST_3DMaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) -10.198039:6 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance8.testcase deleted file mode 100644 index 404bb2a..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance8.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DMaxDistance - intersecting 2D lines -:memory: #use in-memory database -SELECT ST_3DMaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) -1 # rows (not including the header row) -1 # columns -ST_3DMaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) -11.180339:6 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance9.testcase deleted file mode 100644 index 82b178b..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance9.testcase +++ /dev/null @@ -1,8 +0,0 @@ -3DMaxDistance - two 3D points -:memory: #use in-memory database -SELECT ST_3DMaxDistance(MakePointZ(1, 2, 3), MakePointZ(4, 6, 5)); -1 # rows (not including the header row) -1 # columns -ST_3DMaxDistance(MakePointZ(1, 2, 3), MakePointZ(4, 6, 5)) -5.385164:6 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance1.testcase deleted file mode 100644 index 1c8076e..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -MaxDistance - two 2D points -:memory: #use in-memory database -SELECT ST_MaxDistance(MakePoint(1, 2), MakePoint(4, 6)) -1 # rows (not including the header row) -1 # columns -ST_MaxDistance(MakePoint(1, 2), MakePoint(4, 6)) -5.0 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance10.testcase deleted file mode 100644 index 962550c..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance10.testcase +++ /dev/null @@ -1,8 +0,0 @@ -MaxDistance - two 3D linestring -:memory: #use in-memory database -SELECT ST_MaxDistance(GeomFromText("LINESTRINGZ(0 0 1, 10 2 5)"), GeomFromText("LINESTRINGZ(0 2 3, 10 3 4)")); -1 # rows (not including the header row) -1 # columns -ST_MaxDistance(GeomFromText("LINESTRINGZ(0 0 1, 10 2 5)"), GeomFromText("LINESTRINGZ(0 2 3, 10 3 4)")); -10.440306:6 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance2.testcase deleted file mode 100644 index 313f526..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -MaxDistance - two 2D identical points -:memory: #use in-memory database -SELECT ST_MaxDistance(MakePoint(1, 2), MakePoint(1, 2)) -1 # rows (not including the header row) -1 # columns -ST_MaxDistance(MakePoint(1, 2), MakePoint(1, 2)) -0.0 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance3.testcase deleted file mode 100644 index 22d2270..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -MaxDistance - bad blob first arg -:memory: #use in-memory database -SELECT ST_MaxDistance(zeroblob(100), MakePoint(1, 2)) -1 # rows (not including the header row) -1 # columns -ST_MaxDistance(zeroblob(100), MakePoint(1, 2)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance4.testcase deleted file mode 100644 index 5016871..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -MaxDistance - bad blob second arg -:memory: #use in-memory database -SELECT ST_MaxDistance(MakePoint(1, 2), zeroblob(100)) -1 # rows (not including the header row) -1 # columns -ST_MaxDistance(MakePoint(1, 2), zeroblob(100)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance5.testcase deleted file mode 100644 index 650d395..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -MaxDistance - non-blob first arg -:memory: #use in-memory database -SELECT ST_MaxDistance(3, MakePoint(1, 2)) -1 # rows (not including the header row) -1 # columns -ST_MaxDistance(3, MakePoint(1, 2)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance6.testcase deleted file mode 100644 index 336e561..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -MaxDistance - bad blob second arg -:memory: #use in-memory database -SELECT ST_MaxDistance(MakePoint(1, 2), "hello") -1 # rows (not including the header row) -1 # columns -ST_MaxDistance(MakePoint(1, 2), "hello") -(NULL) - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance7.testcase deleted file mode 100644 index e8970f5..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -MaxDistance - parallel 2D lines -:memory: #use in-memory database -SELECT ST_MaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) -1 # rows (not including the header row) -1 # columns -ST_MaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) -10.198039:6 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance8.testcase deleted file mode 100644 index 26ae547..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance8.testcase +++ /dev/null @@ -1,8 +0,0 @@ -MaxDistance - intersecting 2D lines -:memory: #use in-memory database -SELECT ST_MaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) -1 # rows (not including the header row) -1 # columns -ST_MaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) -11.180339:6 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance9.testcase deleted file mode 100644 index 7bbadd3..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance9.testcase +++ /dev/null @@ -1,8 +0,0 @@ -MaxDistance - two 3D points -:memory: #use in-memory database -SELECT ST_MaxDistance(MakePointZ(1, 2, 3), MakePointZ(4, 6, 5)); -1 # rows (not including the header row) -1 # columns -ST_MaxDistance(MakePointZ(1, 2, 3), MakePointZ(4, 6, 5)) -5.0 - diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d1.testcase deleted file mode 100644 index 766b0ea..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - NULL geometry -:memory: #use in-memory database -SELECT ST_AsX3D(NULL); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d10.testcase deleted file mode 100644 index e69d34d..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 2D multipoint -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('MULTIPOINT(10 10, 11 10, 11 11)')); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('MULTIPOINT(10 10, 11 10, 11 11)')) -:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d11.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d11.testcase deleted file mode 100644 index 4816c3e..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D multipoint -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('MULTIPOINTZ(10 10 101, 11 10 102, 11 11 103)')); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('MULTIPOINTZ(10 10 101, 11 10 102, 11 11 103)')) -:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d12.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d12.testcase deleted file mode 100644 index dea5f0f..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 2D multilinestring -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('MULTILINESTRING((10 10, 11 10, 11 11), (20 20, 21 20, 21 21))')); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('MULTILINESTRING((10 10, 11 10, 11 11), (20 20, 21 20, 21 21))')) -10 10 11 10 11 11 20 20 21 20 21 21 ' />:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d13.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d13.testcase deleted file mode 100644 index 3ca0693..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D multilinestring -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('MULTILINESTRINGZ((10 10 1, 11 10 2, 11 11 2), (20 20 4, 21 20 5, 21 21 6))')); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('MULTILINESTRINGZ((10 10 1, 11 10 2, 11 11 2), (20 20 4, 21 20 5, 21 21 6))')) -:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d14.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d14.testcase deleted file mode 100644 index 89da3df..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 2D multipolygon -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('MULTIPOLYGON(((10 10, 11 10, 11 11, 10 11, 10 10)), ((20 20, 21 20, 21 21, 20 21, 20 20)))')); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('MULTIPOLYGON(((10 10, 11 10, 11 11, 10 11, 10 10)), ((20 20, 21 20, 21 21, 20 21, 20 20)))')) -10 10 11 10 11 11 10 11 20 20 21 20 21 21 20 21 ' />:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d15.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d15.testcase deleted file mode 100644 index a9ac86c..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D multipolygon -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('MULTIPOLYGONZ(((10 10 1, 11 10 2, 11 11 3, 10 11 4, 10 10 1)), ((20 20 5, 21 20 6, 21 21 7, 20 21 8, 20 20 5)))')); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('MULTIPOLYGONZ(((10 10 1, 11 10 2, 11 11 3, 10 11 4, 10 10 1)), ((20 20 5, 21 20 6, 21 21 7, 20 21 8, 20 20 5)))')) -:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d16.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d16.testcase deleted file mode 100644 index 9ed6856..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring NULL precision -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), NULL); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d17.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d17.testcase deleted file mode 100644 index 9989e48..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring TEXT precision -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d18.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d18.testcase deleted file mode 100644 index 76d4865..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring BLOB precision -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d19.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d19.testcase deleted file mode 100644 index e4c6340..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring DOUBLE precision -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), 0.5); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d2.testcase deleted file mode 100644 index 6eec944..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - text geometry -:memory: #use in-memory database -SELECT ST_AsX3D('alpha'); -1 # rows (not including the header row) -1 # columns -ST_AsX3D('alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d20.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d20.testcase deleted file mode 100644 index a7406cd..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring, 6 digit precision -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6) -:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d21.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d21.testcase deleted file mode 100644 index f60bdd7..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d21.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring, 6 digit precision, NULL options -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, NULL); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d22.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d22.testcase deleted file mode 100644 index df1b429..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d22.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring, 6 digit precision, text options -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d23.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d23.testcase deleted file mode 100644 index 9b501c2..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d23.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring, 6 digit precision, blob options -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d24.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d24.testcase deleted file mode 100644 index c2fd476..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d24.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring, 6 digit precision, double options -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, 0.5); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d25.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d25.testcase deleted file mode 100644 index e449650..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d25.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring, 6 digit precision, short SRS -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 0); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 0) -15.123457 14.765432 7.654321:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d26.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d26.testcase deleted file mode 100644 index 9195e9e..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d26.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring, 6 digit precision, long SRS -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1) -15.123457 14.765432 7.654321:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d27.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d27.testcase deleted file mode 100644 index 2690e48..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d27.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring, 6 digit precision, long SRS, NULL refid -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, NULL); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d28.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d28.testcase deleted file mode 100644 index dad06f7..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d28.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring, 6 digit precision, long SRS, int refid -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, 1); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, 1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d29.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d29.testcase deleted file mode 100644 index 8115707..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d29.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring, 6 digit precision, long SRS, BLOB refid -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d3.testcase deleted file mode 100644 index bcfd760..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - int geometry -:memory: #use in-memory database -SELECT ST_AsX3D(1); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d30.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d30.testcase deleted file mode 100644 index 5635b22..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d30.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring, 6 digit precision, long SRS, refid -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, 'test_'); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, 'test_') -15.123457 14.765432 7.654321:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d4.testcase deleted file mode 100644 index 6d7ee98..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 2D point -:memory: #use in-memory database -SELECT ST_AsX3D(MakePoint(12, 21)); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(MakePoint(12, 21)) -12 21 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d5.testcase deleted file mode 100644 index b1421f4..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D point -:memory: #use in-memory database -SELECT ST_AsX3D(MakePointZ(12, 21, 101)); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(MakePointZ(12, 21, 101)) -12 21 101 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d6.testcase deleted file mode 100644 index 9771a0a..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 2D linestring -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('LINESTRING(10 10, 11 10, 11 11)')); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('LINESTRING(10 10, 11 10, 11 11)')) -:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d7.testcase deleted file mode 100644 index 225f12c..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D linestring -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)')); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)')) -:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d8.testcase deleted file mode 100644 index a2aa04c..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 2D polygon -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('POLYGON((10 10, 11 10, 11 11, 10 11, 10 10))')); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('POLYGON((10 10, 11 10, 11 11, 10 11, 10 10))')) -10 10 11 10 11 11 10 11 ' />:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d9.testcase deleted file mode 100644 index 73c5485..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_AsX3D - 3D polygon -:memory: #use in-memory database -SELECT ST_AsX3D(GeomFromText('POLYGONZ((10 10 101, 11 10 102, 11 11 103, 10 11 104, 10 10 101))')); -1 # rows (not including the header row) -1 # columns -ST_AsX3D(GeomFromText('POLYGONZ((10 10 101, 11 10 102, 11 11 103, 10 11 104, 10 10 101))')) -:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth1.testcase deleted file mode 100644 index c88c965..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - WGS84 points -:memory: #use in-memory database -SELECT ST_Azimuth(MakePoint(10.5, 10, 4326), MakePoint(11.5, 11, 4326)); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(MakePoint(10.5, 10, 4326), MakePoint(11.5, 11, 4326)) -0.785398:6 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth10.testcase deleted file mode 100644 index 1fbae7f..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - text PointA (error) -:memory: #use in-memory database -SELECT ST_Azimuth('alpha', MakePoint(10, 10, 4326)); -1 # rows (not including the header row) -1 # columns -ST_Azimuth('alpha', MakePoint(10, 10, 4326)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth11.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth11.testcase deleted file mode 100644 index 877bb36..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - text PointB (error) -:memory: #use in-memory database -SELECT ST_Azimuth(MakePoint(10, 10, 4326), 'beta'); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(MakePoint(10, 10, 4326), 'beta') -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth12.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth12.testcase deleted file mode 100644 index f68490e..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - NULL PointA (error) -:memory: #use in-memory database -SELECT ST_Azimuth(NULL, MakePoint(10, 10, 4326)); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(NULL, MakePoint(10, 10, 4326)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth13.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth13.testcase deleted file mode 100644 index b90c129..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - NULL PointB (error) -:memory: #use in-memory database -SELECT ST_Azimuth(MakePoint(10, 10, 4326), NULL); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(MakePoint(10, 10, 4326), NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth14.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth14.testcase deleted file mode 100644 index 0f7a266..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - MultiPoint (error) -:memory: #use in-memory database -SELECT ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('MULTIPOINT(0 0, 1 1)')); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('MULTIPOINT(0 0, 1 1)')) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth15.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth15.testcase deleted file mode 100644 index 9798862..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - Linestring (error) -:memory: #use in-memory database -SELECT ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('LINESTRING(0 0, 1 1)')); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('LINESTRING(0 0, 1 1)')) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth16.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth16.testcase deleted file mode 100644 index bc7b638..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - Polygon (error) -:memory: #use in-memory database -SELECT ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth17.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth17.testcase deleted file mode 100644 index f319efe..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - Collection (error) -:memory: #use in-memory database -SELECT ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 0, 1 1), POINT(2 2))')); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 0, 1 1), POINT(2 2))')) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth2.testcase deleted file mode 100644 index db71a12..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - no SRID points -:memory: #use in-memory database -SELECT ST_Azimuth(MakePoint(123456, 12345678.5), MakePoint(123457, 12345679.5)); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(MakePoint(123456, 12345678.5), MakePoint(123457, 12345679.5)); -0.785398:6 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth3.testcase deleted file mode 100644 index 3f4cdcc..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - same Point -:memory: #use in-memory database -SELECT ST_Azimuth(MakePoint(10.5, 10.5, 4326), MakePoint(10.5, 10.5, 4326)); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(MakePoint(10.5, 10.5, 4326), MakePoint(10.5, 10.5, 4326)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth4.testcase deleted file mode 100644 index e87cdcc..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - bad blob PointA (error) -:memory: #use in-memory database -SELECT ST_Azimuth(zeroblob(4), MakePoint(10, 10, 4326)); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(zeroblob(4), MakePoint(10, 10, 4326)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth5.testcase deleted file mode 100644 index caeb51f..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - bad blob PointB (error) -:memory: #use in-memory database -SELECT ST_Azimuth(MakePoint(10, 10, 4326), zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(MakePoint(10, 10, 4326), zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth6.testcase deleted file mode 100644 index 6ac2de0..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - integer PointA (error) -:memory: #use in-memory database -SELECT ST_Azimuth(1, MakePoint(10, 10, 4326)); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(1, MakePoint(10, 10, 4326)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth7.testcase deleted file mode 100644 index 6aaa284..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - integer PointB (error) -:memory: #use in-memory database -SELECT ST_Azimuth(MakePoint(10, 10, 4326), 1); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(MakePoint(10, 10, 4326), 1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth8.testcase deleted file mode 100644 index 90b589d..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - double PointA (error) -:memory: #use in-memory database -SELECT ST_Azimuth(1.1, MakePoint(10, 10, 4326)); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(1.1, MakePoint(10, 10, 4326)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth9.testcase deleted file mode 100644 index 0ca222e..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Azimuth - double PointB (error) -:memory: #use in-memory database -SELECT ST_Azimuth(MakePoint(10, 10, 4326), 1.1); -1 # rows (not including the header row) -1 # columns -ST_Azimuth(MakePoint(10, 10, 4326), 1.1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash1.testcase deleted file mode 100644 index 5b05624..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_GeoHash - NULL geometry -:memory: #use in-memory database -SELECT ST_GeoHash(NULL); -1 # rows (not including the header row) -1 # columns -ST_GeoHash(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash10.testcase deleted file mode 100644 index 1dec1a1..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_GeoHash - WGS84 Point, precision 6 -:memory: #use in-memory database -SELECT ST_GeoHash(MakePoint(10, -20, 4326), 6); -1 # rows (not including the header row) -1 # columns -ST_GeoHash(MakePoint(10, -20, 4326), 6) -khrn5x diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash2.testcase deleted file mode 100644 index f67e93f..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_GeoHash - text geometry -:memory: #use in-memory database -SELECT ST_GeoHash('alpha'); -1 # rows (not including the header row) -1 # columns -ST_GeoHash('alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash3.testcase deleted file mode 100644 index 8616d41..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_GeoHash - int geometry -:memory: #use in-memory database -SELECT ST_GeoHash(1); -1 # rows (not including the header row) -1 # columns -ST_GeoHash(1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash4.testcase deleted file mode 100644 index 978062b..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_GeoHash - not Long/Lat geometry -:memory: #use in-memory database -SELECT ST_GeoHash(MakePoint(123456, 654321)); -1 # rows (not including the header row) -1 # columns -ST_GeoHash(MakePoint(123456, 654321)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash5.testcase deleted file mode 100644 index 5d5eac6..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_GeoHash - zeroblob geometry -:memory: #use in-memory database -SELECT ST_GeoHash(zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_GeoHash(zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash6.testcase deleted file mode 100644 index 926b7bf..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_GeoHash - WGS84 Point -:memory: #use in-memory database -SELECT ST_GeoHash(MakePoint(10, -20, 4326)); -1 # rows (not including the header row) -1 # columns -ST_GeoHash(MakePoint(10, -20, 4326)) -khrn5x1g8cu2yhrn5x1g diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash7.testcase deleted file mode 100644 index 10ff251..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_GeoHash - WGS84 Linestring -:memory: #use in-memory database -SELECT ST_GeoHash(GeomFromText('LINESTRING(10 -20, 10.0001 -19.9899, 10.0002 -19.9899)', 4326)); -1 # rows (not including the header row) -1 # columns -ST_GeoHash(GeomFromText('LINESTRING(10 -20, 10.0001 -19.9899, 10.0002 -19.9899)', 4326)) -khrn diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash8.testcase deleted file mode 100644 index 58976b5..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_GeoHash - WGS84 Polygon -:memory: #use in-memory database -SELECT ST_GeoHash(GeomFromText('POLYGON((7 10, 7.0001 10, 7.0001 10.0001, 7 10.0001, 7 10))', 4326)); -1 # rows (not including the header row) -1 # columns -ST_GeoHash(GeomFromText('POLYGON((7 10, 7.0001 10, 7.0001 10.0001, 7 10.0001, 7 10))', 4326)) -s1ubzk3 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash9.testcase deleted file mode 100644 index fd0569c..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_GeoHash - WGS84 Point, invalid precision -:memory: #use in-memory database -SELECT ST_GeoHash(MakePoint(10, -20, 4326), 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_GeoHash(MakePoint(10, -20, 4326), 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid1.testcase deleted file mode 100644 index 20a2a2e..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_MakeValid - Invalid BLOB (error) -:memory: #use in-memory database -SELECT ST_MakeValid(zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_MakeValid(zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid2.testcase deleted file mode 100644 index fdb7ef7..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_MakeValid - NULL BLOB (error) -:memory: #use in-memory database -SELECT ST_MakeValid(NULL); -1 # rows (not including the header row) -1 # columns -ST_MakeValid(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid3.testcase deleted file mode 100644 index 88b61dc..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_MakeValid - text (error) -:memory: #use in-memory database -SELECT ST_MakeValid('alpha'); -1 # rows (not including the header row) -1 # columns -ST_MakeValid('alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid4.testcase deleted file mode 100644 index e064db6..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_MakeValid - already valid MultiPolygon -:memory: #use in-memory database -SELECT ST_IsValid(ST_MakeValid(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))'))); -1 # rows (not including the header row) -1 # columns -ST_IsValid(ST_MakeValid(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))'))) -1 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid5.testcase deleted file mode 100644 index 05effbb..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_MakeValid - already valid Polygon -:memory: #use in-memory database -SELECT ST_IsValid(ST_MakeValid(GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'))); -1 # rows (not including the header row) -1 # columns -ST_IsValid(ST_MakeValid(GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'))) -1 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid6.testcase deleted file mode 100644 index c06033f..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_MakeValid - invalid MultiPolygon -:memory: #use in-memory database -SELECT ST_IsValid(ST_MakeValid(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 0 1, 1 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))'))); -1 # rows (not including the header row) -1 # columns -ST_IsValid(ST_MakeValid(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 0 1, 1 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))'))) -1 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid7.testcase deleted file mode 100644 index a730185..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_MakeValid - invalid Polygon -:memory: #use in-memory database -SELECT ST_IsValid(ST_MakeValid(GeomFromText('POLYGON((0 0, 1 0, 0 1, 1 1, 0 0))'))); -1 # rows (not including the header row) -1 # columns -ST_IsValid(ST_MakeValid(GeomFromText('POLYGON((0 0, 1 0, 0 1, 1 1, 0 0))'))) -1 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid8.testcase deleted file mode 100644 index 43a5def..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid8.testcase +++ /dev/null @@ -1,11 +0,0 @@ -ST_MakeValid - invalid MultiPolygon [discarded items] -:memory: #use in-memory database -SELECT IsValid(v.v), NumGeometries(v.v), GeometryType(v.v) FROM (SELECT MakeValid(g.g) AS v FROM (SELECT GeomFromText ('MULTIPOLYGON(((0 0, 1 0, 1 2, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 2.5, 2.5 2.5, 3 2.5, 3 3, 2 3, 2 2)))') AS g) AS g) AS v; -1 # rows (not including the header row) -3 # columns -IsValid(v.v) -NumGeometries(v.v) -GeometryType(v.v) -1 -2 -MULTIPOLYGON diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded1.testcase deleted file mode 100644 index 6308e6b..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_MakeValidDiscarded - Invalid BLOB (error) -:memory: #use in-memory database -SELECT ST_MakeValidDiscarded(zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_MakeValidDiscarded(zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded2.testcase deleted file mode 100644 index 724e155..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_MakeValidDiscarded - NULL BLOB (error) -:memory: #use in-memory database -SELECT ST_MakeValidDiscarded(NULL); -1 # rows (not including the header row) -1 # columns -ST_MakeValidDiscarded(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded3.testcase deleted file mode 100644 index 9bbfde2..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_MakeValidDiscarded - text (error) -:memory: #use in-memory database -SELECT ST_MakeValidDiscarded('alpha'); -1 # rows (not including the header row) -1 # columns -ST_MakeValidDiscarded('alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded4.testcase deleted file mode 100644 index 1ab5ad0..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_MakeValid - already valid MultiPolygon -:memory: #use in-memory database -SELECT ST_MakeValidDiscarded(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))')); -1 # rows (not including the header row) -1 # columns -ST_MakeValidDiscarded(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))')) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded5.testcase deleted file mode 100644 index e521491..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_MakeValidDiscarded - already valid Polygon -:memory: #use in-memory database -SELECT ST_MakeValidDiscarded(GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')); -1 # rows (not including the header row) -1 # columns -ST_MakeValidDiscarded(GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded6.testcase deleted file mode 100644 index c06033f..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_MakeValid - invalid MultiPolygon -:memory: #use in-memory database -SELECT ST_IsValid(ST_MakeValid(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 0 1, 1 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))'))); -1 # rows (not including the header row) -1 # columns -ST_IsValid(ST_MakeValid(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 0 1, 1 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))'))) -1 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded7.testcase deleted file mode 100644 index a730185..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_MakeValid - invalid Polygon -:memory: #use in-memory database -SELECT ST_IsValid(ST_MakeValid(GeomFromText('POLYGON((0 0, 1 0, 0 1, 1 1, 0 0))'))); -1 # rows (not including the header row) -1 # columns -ST_IsValid(ST_MakeValid(GeomFromText('POLYGON((0 0, 1 0, 0 1, 1 1, 0 0))'))) -1 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded8.testcase deleted file mode 100644 index c7ca050..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded8.testcase +++ /dev/null @@ -1,11 +0,0 @@ -ST_MakeValidDiscarded - invalid MultiPolygon [discarded items] -:memory: #use in-memory database -SELECT IsValid(v.v), NumGeometries(v.v), GeometryType(v.v) FROM (SELECT MakeValidDiscarded(g.g) AS v FROM (SELECT GeomFromText ('MULTIPOLYGON(((0 0, 1 0, 1 2, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 2.5, 2.5 2.5, 3 2.5, 3 3, 2 3, 2 2)))') AS g) AS g) AS v; -1 # rows (not including the header row) -3 # columns -IsValid(v.v) -NumGeometries(v.v) -GeometryType(v.v) -1 -2 -MULTILINESTRING diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize1.testcase deleted file mode 100644 index 5de9c42..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Collection -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 1 2), POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 1 2), POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)) -GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 1 1.5, 1 2), POLYGON((3 3, 3.5 3, 4 3, 4.5 3, 5 3, 5.5 3, 6 3, 6 3.5, 6 4, 6 4.5, 6 5, 6 5.5, 6 6, 5.5 6, 5 6, 4.5 6, 4 6, 3.5 6, 3 6, 3 5.5, 3 5, 3 4.5, 3 4, 3 3.5, 3 3), (4 4, 4.5 4, 5 4, 5 4.5, 5 5, 5 4.5, 5 4, 4.5 4, 4 4))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize10.testcase deleted file mode 100644 index 88983a0..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - NULL BLOB (error) -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(NULL, 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(NULL, 0.5)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize11.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize11.testcase deleted file mode 100644 index b38ccca..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Collection Z -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(0 0 10), LINESTRINGZ(1 1 10, 1 2 11), POLYGONZ((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10)))'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(0 0 10), LINESTRINGZ(1 1 10, 1 2 11), POLYGONZ((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10)))'), 0.5)) -GEOMETRYCOLLECTION Z(POINT Z(0 0 10), LINESTRING Z(1 1 10, 1 1.5 10.5, 1 2 11), POLYGON Z((3 3 10, 3.5 3 10.166667, 4 3 10.333333, 4.5 3 10.5, 5 3 10.666667, 5.5 3 10.833333, 6 3 11, 6 3.5 11.166667, 6 4 11.333333, 6 4.5 11.5, 6 5 11.666667, 6 5.5 11.833333, 6 6 12, 5.5 6 12.166667, 5 6 12.333333, 4.5 6 12.5, 4 6 12.666667, 3.5 6 12.833333, 3 6 13, 3 5.5 12.5, 3 5 12, 3 4.5 11.5, 3 4 11, 3 3.5 10.5, 3 3 10), (4 4 10, 4.5 4 10.5, 5 4 11, 5 4.5 11.5, 5 5 12, 5 4.5 12.5, 5 4 13, 4.5 4 11.5, 4 4 10))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize12.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize12.testcase deleted file mode 100644 index 0275ee7..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Collection M -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTIONM(POINTM(0 0 10), LINESTRINGM(1 1 10, 1 2 11), POLYGONM((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10)))'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTIONM(POINTM(0 0 10), LINESTRINGM(1 1 10, 1 2 11), POLYGONM((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10)))'), 0.5)) -GEOMETRYCOLLECTION M(POINT M(0 0 10), LINESTRING M(1 1 10, 1 1.5 10.5, 1 2 11), POLYGON M((3 3 10, 3.5 3 10.166667, 4 3 10.333333, 4.5 3 10.5, 5 3 10.666667, 5.5 3 10.833333, 6 3 11, 6 3.5 11.166667, 6 4 11.333333, 6 4.5 11.5, 6 5 11.666667, 6 5.5 11.833333, 6 6 12, 5.5 6 12.166667, 5 6 12.333333, 4.5 6 12.5, 4 6 12.666667, 3.5 6 12.833333, 3 6 13, 3 5.5 12.5, 3 5 12, 3 4.5 11.5, 3 4 11, 3 3.5 10.5, 3 3 10), (4 4 10, 4.5 4 10.5, 5 4 11, 5 4.5 11.5, 5 5 12, 5 4.5 12.5, 5 4 13, 4.5 4 11.5, 4 4 10))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize13.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize13.testcase deleted file mode 100644 index cb0ce95..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Collection ZM -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(0 0 10 11), LINESTRINGZM(1 1 10 11, 1 2 11 13), POLYGONZM((3 3 10 11, 6 3 11 12, 6 6 12 13, 3 6 13 14, 3 3 10 11), (4 4 10 11, 5 4 11 12, 5 5 12 13, 5 4 13 14, 4 4 10 11)))'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(0 0 10 11), LINESTRINGZM(1 1 10 11, 1 2 11 13), POLYGONZM((3 3 10 11, 6 3 11 12, 6 6 12 13, 3 6 13 14, 3 3 10 11), (4 4 10 11, 5 4 11 12, 5 5 12 13, 5 4 13 14, 4 4 10 11)))'), 0.5)) -GEOMETRYCOLLECTION ZM(POINT ZM(0 0 10 11), LINESTRING ZM(1 1 10 11, 1 1.5 10.5 12, 1 2 11 13), POLYGON ZM((3 3 10 11, 3.5 3 10.166667 11.166667, 4 3 10.333333 11.333333, 4.5 3 10.5 11.5, 5 3 10.666667 11.666667, 5.5 3 10.833333 11.833333, 6 3 11 12, 6 3.5 11.166667 12.166667, 6 4 11.333333 12.333333, 6 4.5 11.5 12.5, 6 5 11.666667 12.666667, 6 5.5 11.833333 12.833333, 6 6 12 13, 5.5 6 12.166667 13.166667, 5 6 12.333333 13.333333, 4.5 6 12.5 13.5, 4 6 12.666667 13.666667, 3.5 6 12.833333 13.833333, 3 6 13 14, 3 5.5 12.5 13.5, 3 5 12 13, 3 4.5 11.5 12.5, 3 4 11 12, 3 3.5 10.5 11.5, 3 3 10 11), (4 4 10 11, 4.5 4 10.5 11.5, 5 4 11 12, 5 4.5 11.5 12.5, 5 5 12 13, 5 4.5 12.5 13.5, 5 4 13 14, 4.5 4 11.5 12.5, 4 4 10 11))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize14.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize14.testcase deleted file mode 100644 index ff8068d..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Point -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('POINT(0 0)'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('POINT(0 0)'), 0.5)) -POINT(0 0) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize16.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize16.testcase deleted file mode 100644 index 42430e8..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Point M -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('POINTM(0 0 10)'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('POINTM(0 0 10)'), 0.5)) -POINT M(0 0 10) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize17.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize17.testcase deleted file mode 100644 index 6832861..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Point ZM -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('POINTZM(0 0 10 11)'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('POINTZM(0 0 10 11)'), 0.5)) -POINT ZM(0 0 10 11) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize18.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize18.testcase deleted file mode 100644 index cd94868..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Linestring -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('LINESTRING(1 1, 1 2)'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('LINESTRING(1 1, 1 2)'), 0.5)) -LINESTRING(1 1, 1 1.5, 1 2) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize19.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize19.testcase deleted file mode 100644 index fc3e9d5..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Linestring Z -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('LINESTRINGZ(1 1 10, 1 2 11)'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('LINESTRINGZ(1 1 10, 1 2 11)'), 0.5)) -LINESTRING Z(1 1 10, 1 1.5 10.5, 1 2 11) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize2.testcase deleted file mode 100644 index 4123696..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - MultiPoint -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('MULTIPOINT(0 1, 2 3, 4 5)'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('MULTIPOINT(0 1, 2 3, 4 5)'), 0.5)) -MULTIPOINT(0 1, 2 3, 4 5) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize20.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize20.testcase deleted file mode 100644 index 5c834bc..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Linestring M -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('LINESTRINGM(1 1 10, 1 2 11)'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('LINESTRINGM(1 1 10, 1 2 11)'), 0.5)) -LINESTRING M(1 1 10, 1 1.5 10.5, 1 2 11) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize21.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize21.testcase deleted file mode 100644 index cc50ab8..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize21.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Linestring ZM -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('LINESTRINGZM(1 1 10 11, 1 2 11 13)'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('LINESTRINGZM(1 1 10 11, 1 2 11 13)'), 0.5)) -LINESTRING ZM(1 1 10 11, 1 1.5 10.5 12, 1 2 11 13) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize22.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize22.testcase deleted file mode 100644 index b75339c..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize22.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Polygon -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4))'), 0.5)); -1 # rows (not including the header row) -1 # column -ST_AsText(ST_Segmentize(GeomFromText('POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4))'), 0.5)) -POLYGON((3 3, 3.5 3, 4 3, 4.5 3, 5 3, 5.5 3, 6 3, 6 3.5, 6 4, 6 4.5, 6 5, 6 5.5, 6 6, 5.5 6, 5 6, 4.5 6, 4 6, 3.5 6, 3 6, 3 5.5, 3 5, 3 4.5, 3 4, 3 3.5, 3 3), (4 4, 4.5 4, 5 4, 5 4.5, 5 5, 5 4.5, 5 4, 4.5 4, 4 4)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize23.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize23.testcase deleted file mode 100644 index 8ddc8a6..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize23.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Polygon Z -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('POLYGONZ((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10))'), 0.5)); -1 # rows (not including the header row) -1 # column -ST_AsText(ST_Segmentize(GeomFromText('POLYGONZ((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10))'), 0.5)) -POLYGON Z((3 3 10, 3.5 3 10.166667, 4 3 10.333333, 4.5 3 10.5, 5 3 10.666667, 5.5 3 10.833333, 6 3 11, 6 3.5 11.166667, 6 4 11.333333, 6 4.5 11.5, 6 5 11.666667, 6 5.5 11.833333, 6 6 12, 5.5 6 12.166667, 5 6 12.333333, 4.5 6 12.5, 4 6 12.666667, 3.5 6 12.833333, 3 6 13, 3 5.5 12.5, 3 5 12, 3 4.5 11.5, 3 4 11, 3 3.5 10.5, 3 3 10), (4 4 10, 4.5 4 10.5, 5 4 11, 5 4.5 11.5, 5 5 12, 5 4.5 12.5, 5 4 13, 4.5 4 11.5, 4 4 10)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize24.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize24.testcase deleted file mode 100644 index dec2828..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize24.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Polygon M -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('POLYGONM((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10))'), 0.5)); -1 # rows (not including the header row) -1 # column -ST_AsText(ST_Segmentize(GeomFromText('POLYGONM((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10))'), 0.5)) -POLYGON M((3 3 10, 3.5 3 10.166667, 4 3 10.333333, 4.5 3 10.5, 5 3 10.666667, 5.5 3 10.833333, 6 3 11, 6 3.5 11.166667, 6 4 11.333333, 6 4.5 11.5, 6 5 11.666667, 6 5.5 11.833333, 6 6 12, 5.5 6 12.166667, 5 6 12.333333, 4.5 6 12.5, 4 6 12.666667, 3.5 6 12.833333, 3 6 13, 3 5.5 12.5, 3 5 12, 3 4.5 11.5, 3 4 11, 3 3.5 10.5, 3 3 10), (4 4 10, 4.5 4 10.5, 5 4 11, 5 4.5 11.5, 5 5 12, 5 4.5 12.5, 5 4 13, 4.5 4 11.5, 4 4 10)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize25.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize25.testcase deleted file mode 100644 index d420191..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize25.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Polygon ZM -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('POLYGONZM((3 3 10 11, 6 3 11 12, 6 6 12 13, 3 6 13 14, 3 3 10 11), (4 4 10 11, 5 4 11 12, 5 5 12 13, 5 4 13 14, 4 4 10 11))'), 0.5)); -1 # rows (not including the header row) -1 # column -ST_AsText(ST_Segmentize(GeomFromText('POLYGONZM((3 3 10 11, 6 3 11 12, 6 6 12 13, 3 6 13 14, 3 3 10 11), (4 4 10 11, 5 4 11 12, 5 5 12 13, 5 4 13 14, 4 4 10 11))'), 0.5)) -POLYGON ZM((3 3 10 11, 3.5 3 10.166667 11.166667, 4 3 10.333333 11.333333, 4.5 3 10.5 11.5, 5 3 10.666667 11.666667, 5.5 3 10.833333 11.833333, 6 3 11 12, 6 3.5 11.166667 12.166667, 6 4 11.333333 12.333333, 6 4.5 11.5 12.5, 6 5 11.666667 12.666667, 6 5.5 11.833333 12.833333, 6 6 12 13, 5.5 6 12.166667 13.166667, 5 6 12.333333 13.333333, 4.5 6 12.5 13.5, 4 6 12.666667 13.666667, 3.5 6 12.833333 13.833333, 3 6 13 14, 3 5.5 12.5 13.5, 3 5 12 13, 3 4.5 11.5 12.5, 3 4 11 12, 3 3.5 10.5 11.5, 3 3 10 11), (4 4 10 11, 4.5 4 10.5 11.5, 5 4 11 12, 5 4.5 11.5 12.5, 5 5 12 13, 5 4.5 12.5 13.5, 5 4 13 14, 4.5 4 11.5 12.5, 4 4 10 11)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize26.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize26.testcase deleted file mode 100644 index abb53ba..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize26.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Collection - single Point -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0))'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0))'), 0.5)) -GEOMETRYCOLLECTION(POINT(0 0)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize27.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize27.testcase deleted file mode 100644 index bc36d19..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize27.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Collection - single Linestring -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 1 2))'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 1 2))'), 0.5)) -GEOMETRYCOLLECTION(LINESTRING(1 1, 1 1.5, 1 2)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize28.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize28.testcase deleted file mode 100644 index 88badd4..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize28.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Collection - single Polygon -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)) -GEOMETRYCOLLECTION(POLYGON((3 3, 3.5 3, 4 3, 4.5 3, 5 3, 5.5 3, 6 3, 6 3.5, 6 4, 6 4.5, 6 5, 6 5.5, 6 6, 5.5 6, 5 6, 4.5 6, 4 6, 3.5 6, 3 6, 3 5.5, 3 5, 3 4.5, 3 4, 3 3.5, 3 3), (4 4, 4.5 4, 5 4, 5 4.5, 5 5, 5 4.5, 5 4, 4.5 4, 4 4))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize29.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize29.testcase deleted file mode 100644 index 83c9d63..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize29.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Collection - three Points -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POINT(1 1), POINT(2 2))'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POINT(1 1), POINT(2 2))'), 0.5)) -GEOMETRYCOLLECTION(POINT(0 0), POINT(1 1), POINT(2 2)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize3.testcase deleted file mode 100644 index ffcf4fb..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Multilinestring -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('MULTILINESTRING((1 1, 1 2), (3 3, 4 3))'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('MULTILINESTRING((1 1, 1 2), (3 3, 4 3))'), 0.5)) -MULTILINESTRING((1 1, 1 1.5, 1 2), (3 3, 3.5 3, 4 3)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize30.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize30.testcase deleted file mode 100644 index 5ed4323..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize30.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Collection - two Linestrings -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 1 2), LINESTRING(3 3, 4 3))'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 1 2), LINESTRING(3 3, 4 3))'), 0.5)) -GEOMETRYCOLLECTION(LINESTRING(1 1, 1 1.5, 1 2), LINESTRING(3 3, 3.5 3, 4 3)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize31.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize31.testcase deleted file mode 100644 index 9d5dcb4..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize31.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Collection - two Polygons -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)), POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)), POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)) -GEOMETRYCOLLECTION(POLYGON((0 0, 0.5 0, 1 0, 1 0.5, 1 1, 0.5 1, 0 1, 0 0.5, 0 0)), POLYGON((3 3, 3.5 3, 4 3, 4.5 3, 5 3, 5.5 3, 6 3, 6 3.5, 6 4, 6 4.5, 6 5, 6 5.5, 6 6, 5.5 6, 5 6, 4.5 6, 4 6, 3.5 6, 3 6, 3 5.5, 3 5, 3 4.5, 3 4, 3 3.5, 3 3), (4 4, 4.5 4, 5 4, 5 4.5, 5 5, 5 4.5, 5 4, 4.5 4, 4 4))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize4.testcase deleted file mode 100644 index 11a5133..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Multipolygon -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)) -MULTIPOLYGON(((0 0, 0.5 0, 1 0, 1 0.5, 1 1, 0.5 1, 0 1, 0 0.5, 0 0)), ((3 3, 3.5 3, 4 3, 4.5 3, 5 3, 5.5 3, 6 3, 6 3.5, 6 4, 6 4.5, 6 5, 6 5.5, 6 6, 5.5 6, 5 6, 4.5 6, 4 6, 3.5 6, 3 6, 3 5.5, 3 5, 3 4.5, 3 4, 3 3.5, 3 3), (4 4, 4.5 4, 5 4, 5 4.5, 5 5, 5 4.5, 5 4, 4.5 4, 4 4))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize5.testcase deleted file mode 100644 index 2b1d41e..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - Invalid BLOB (error) -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(zeroblob(4), 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(zeroblob(4), 0.5)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize6.testcase deleted file mode 100644 index 88983a0..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - NULL BLOB (error) -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(NULL, 0.5)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(NULL, 0.5)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize7.testcase deleted file mode 100644 index 7df20d5..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - NULL distance (error) -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('LINESTRING(1 1, 2 2)'), NULL)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('LINESTRING(1 1, 2 2)'), NULL)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize8.testcase deleted file mode 100644 index 1713786..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - text distance (error) -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize(GeomFromText('LINESTRING(1 1, 2 2)'), 'alpha')); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize(GeomFromText('LINESTRING(1 1, 2 2)'), 'alpha')) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize9.testcase deleted file mode 100644 index 9983432..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Segmentize - text geometry (error) -:memory: #use in-memory database -SELECT ST_AsText(ST_Segmentize('alpha', 0)); -1 # rows (not including the header row) -1 # columns -ST_AsText(ST_Segmentize('alpha', 0)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid1.testcase deleted file mode 100644 index 456e026..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - two args - NULL BLOB (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(NULL, 0.5); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(NULL, 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid10.testcase deleted file mode 100644 index 5ca8074..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - three args - NULL sizeY (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 0.5, NULL); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 0.5, NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid11.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid11.testcase deleted file mode 100644 index 7b513b6..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - three args - BLOB sizeY (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 0.5, zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 0.5, zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid12.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid12.testcase deleted file mode 100644 index 3f3b36c..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - three args - text sizeY (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 0.5, 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 0.5, 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid13.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid13.testcase deleted file mode 100644 index 59773c6..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - five args - NULL originX (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), NULL, 1, 0.5, 0.5); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), NULL, 1, 0.5, 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid14.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid14.testcase deleted file mode 100644 index 9ad2792..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - five args - BLOB originX (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), zeroblob(0), 1, 0.5, 0.5); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), zeroblob(0), 1, 0.5, 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid15.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid15.testcase deleted file mode 100644 index 24855fc..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - five args - text originX (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha', 1, 0.5, 0.5); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha', 1, 0.5, 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid16.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid16.testcase deleted file mode 100644 index a3a356f..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - five args - NULL originY (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, NULL, 0.5, 0.5); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 1, NULL, 0.5, 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid17.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid17.testcase deleted file mode 100644 index bb9c2bd..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - five args - BLOB originY (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, zeroblob(0), 0.5, 0.5); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 1, zeroblob(0), 0.5, 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid18.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid18.testcase deleted file mode 100644 index a53e66e..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - five args - text originY (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 'alpha', 0.5, 0.5); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 'alpha', 0.5, 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid19.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid19.testcase deleted file mode 100644 index 30c2469..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - five args - NULL sizeX (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, NULL, 0.5); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, NULL, 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid2.testcase deleted file mode 100644 index e6ac983..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - two args - invalid BLOB (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(zeroblob(4), 0.5); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(zeroblob(4), 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid20.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid20.testcase deleted file mode 100644 index 371ae77..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - five args - BLOB sizeX (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, zeroblob(0), 0.5); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, zeroblob(0), 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid21.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid21.testcase deleted file mode 100644 index b6bbf0c..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid21.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - five args - text sizeX (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 'alpha', 0.5); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 'alpha', 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid22.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid22.testcase deleted file mode 100644 index a4977a7..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid22.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - five args - NULL sizeY (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 0.5, NULL); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 0.5, NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid23.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid23.testcase deleted file mode 100644 index 7ef55f8..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid23.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - five args - BLOB sizeY (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 0.5, zeroblob(0)); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 0.5, zeroblob(0)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid24.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid24.testcase deleted file mode 100644 index b809b39..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid24.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - five args - text sizeY (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 0.5, 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 0.5, 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid25.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid25.testcase deleted file mode 100644 index 9a2334b..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid25.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - NULL grid origin (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), NULL, 1, 2, 3, 4); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), NULL, 1, 2, 3, 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid26.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid26.testcase deleted file mode 100644 index 07ec5aa..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid26.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - invalid BLOB grid origin (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), zeroblob(4), 1, 2, 3, 4); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), zeroblob(4), 1, 2, 3, 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid27.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid27.testcase deleted file mode 100644 index 02ee289..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid27.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - text grid origin (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha', 1, 2, 3, 4); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha', 1, 2, 3, 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid28.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid28.testcase deleted file mode 100644 index 5a078da..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid28.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - num grid origin (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1.1, 1, 2, 3, 4); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 1.1, 1, 2, 3, 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid29.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid29.testcase deleted file mode 100644 index e308542..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid29.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - not-point grid origin (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), GeomFromText('LINESTRING(0 0, 1 1)'), 1, 2, 3, 4); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), GeomFromText('LINESTRING(0 0, 1 1)'), 1, 2, 3, 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid3.testcase deleted file mode 100644 index 2d4e7d8..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - two args - NULL size (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), NULL); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid30.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid30.testcase deleted file mode 100644 index e69cd2d..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid30.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - NULL sizeX (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), NULL, 2, 3, 4); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), NULL, 2, 3, 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid31.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid31.testcase deleted file mode 100644 index e5643b1..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid31.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - BLOB sizeX (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), zeroblob(4), 2, 3, 4); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), zeroblob(4), 2, 3, 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid32.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid32.testcase deleted file mode 100644 index 1017069..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid32.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - text sizeX (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 'alpha', 2, 3, 4); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 'alpha', 2, 3, 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid33.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid33.testcase deleted file mode 100644 index d675f16..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid33.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - NULL sizeM (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 3, NULL); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 3, NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid34.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid34.testcase deleted file mode 100644 index b2752e4..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid34.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - BLOB sizeM (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 3, zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 3, zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid35.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid35.testcase deleted file mode 100644 index 8948d11..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid35.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - text sizeM (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 3, 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 3, 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid36.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid36.testcase deleted file mode 100644 index c309eab..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid36.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - NULL sizeY (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, NULL, 3, 4); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, NULL, 3, 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid37.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid37.testcase deleted file mode 100644 index 7195806..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid37.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - BLOB sizeY (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, zeroblob(4), 3, 4); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, zeroblob(4), 3, 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid38.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid38.testcase deleted file mode 100644 index c64b8ce..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid38.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - text sizeY (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 'alpha', 3, 4); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 'alpha', 3, 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid39.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid39.testcase deleted file mode 100644 index 9306bd8..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid39.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - NULL sizeZ (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, NULL, 4); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, NULL, 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid4.testcase deleted file mode 100644 index c217471..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - two args - text size (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid40.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid40.testcase deleted file mode 100644 index 01800cf..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid40.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - BLOB sizeZ (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, zeroblob(4), 4); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, zeroblob(4), 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid41.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid41.testcase deleted file mode 100644 index 0c372ec..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid41.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - six args - text sizeZ (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 'alpha', 4); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 'alpha', 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid42.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid42.testcase deleted file mode 100644 index af56c08..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid42.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - Point 2D -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('POINT(1.2 2.3)'), 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('POINT(1.2 2.3)'), 0.25)) -POINT(1.25 2.25) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid43.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid43.testcase deleted file mode 100644 index df3c3bd..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid43.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - Linestring 2D -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('LINESTRING(1.2 2.3, 1.21 2.31, 1.22 2.32, 2.1 3.9)'), 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('LINESTRING(1.2 2.3, 1.21 2.31, 1.22 2.32, 2.1 3.9)'), 0.25)) -LINESTRING(1.25 2.25, 2 4) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid44.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid44.testcase deleted file mode 100644 index ac22544..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid44.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - Polygon 2D -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('POLYGON((0.1 0.1, 0.2 0.2, 0.2 5.1, 4.9 4.9, 5.1 5.1, 4.9 0.15, 0.1 0.1), (3.1 3.1, 3.2 3.1, 3.2 3.2, 3.2 3.1, 3.1 3.1), (1.1 1.1, 1.1 2.1, 2.1 2.1, 2.1 1.1, 1.1 1.1))'), 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('POLYGON((0.1 0.1, 0.2 0.2, 0.2 5.1, 4.9 4.9, 5.1 5.1, 4.9 0.15, 0.1 0.1), (3.1 3.1, 3.2 3.1, 3.2 3.2, 3.2 3.1, 3.1 3.1), (1.1 1.1, 1.1 2.1, 2.1 2.1, 2.1 1.1, 1.1 1.1))'), 0.25)) -POLYGON((0 0, 0.25 0.25, 0.25 5, 5 5, 5 0.25, 0 0), (3 3, 3.25 3, 3.25 3.25, 3.25 3, 3 3), (1 1, 1 2, 2 2, 2 1, 1 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid45.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid45.testcase deleted file mode 100644 index 7d8d57a..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid45.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - MultiPoint 2D -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOINT(1.2 2.3, 1.21 2.31, 2.2 3.3, 2.21 3.33)'), 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('MULTIPOINT(1.2 2.3, 1.21 2.31, 2.2 3.3, 2.21 3.33)'), 0.25)) -MULTIPOINT(1.25 2.25, 2.25 3.25) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid46.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid46.testcase deleted file mode 100644 index 6b9819a..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid46.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - MultiLinestring 2D -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRING((1.2 2.3, 1.21 2.31, 1.22 2.32, 2.1 3.9), (2.11 3.11, 2.12 3.12), (3.2 4.2, 4.2 3.2))'), 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRING((1.2 2.3, 1.21 2.31, 1.22 2.32, 2.1 3.9), (2.11 3.11, 2.12 3.12), (3.2 4.2, 4.2 3.2))'), 0.25)) -MULTILINESTRING((1.25 2.25, 2 4), (3.25 4.25, 4.25 3.25)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid47.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid47.testcase deleted file mode 100644 index 5fbc673..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid47.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - MultiPolygon 2D -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGON(((5.11 5.11, 5.12 5.11, 4.11 5.11, 5.11 5.12, 5.11 5.11)), ((0.1 0.1, 0.2 0.2, 0.2 5.1, 4.9 4.9, 5.1 5.1, 4.9 0.15, 0.1 0.1), (3.1 3.1, 3.2 3.1, 3.2 3.2, 3.2 3.1, 3.1 3.1), (1.1 1.1, 1.1 2.1, 2.1 2.1, 2.1 1.1, 1.1 1.1)), ((5.51 5.51, 6.51 5.51, 6.51 6.51, 5.51 6.51, 5.51 5.51)))'), 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGON(((5.11 5.11, 5.12 5.11, 4.11 5.11, 5.11 5.12, 5.11 5.11)), ((0.1 0.1, 0.2 0.2, 0.2 5.1, 4.9 4.9, 5.1 5.1, 4.9 0.15, 0.1 0.1), (3.1 3.1, 3.2 3.1, 3.2 3.2, 3.2 3.1, 3.1 3.1), (1.1 1.1, 1.1 2.1, 2.1 2.1, 2.1 1.1, 1.1 1.1)), ((5.51 5.51, 6.51 5.51, 6.51 6.51, 5.51 6.51, 5.51 5.51)))'), 0.25)) -MULTIPOLYGON(((0 0, 0.25 0.25, 0.25 5, 5 5, 5 0.25, 0 0), (3 3, 3.25 3, 3.25 3.25, 3.25 3, 3 3), (1 1, 1 2, 2 2, 2 1, 1 1)), ((5.5 5.5, 6.5 5.5, 6.5 6.5, 5.5 6.5, 5.5 5.5))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid48.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid48.testcase deleted file mode 100644 index 4bb5f45..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid48.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - Point ZM -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('POINTZM(1.2 2.3 10.1 20.1)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('POINTZM(1.2 2.3 10.1 20.1)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -POINT ZM(1.25 2.25 10 20) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid49.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid49.testcase deleted file mode 100644 index 8ac8c2c..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid49.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - Linestring ZM -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('LINESTRINGZM(1.2 2.3 10.1 20.1, 1.21 2.31 10.11 20.11, 1.22 2.32 10.12 20.12, 2.1 3.9 11.4 21.4)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('LINESTRINGZM(1.2 2.3 10.1 20.1, 1.21 2.31 10.11 20.11, 1.22 2.32 10.12 20.12, 2.1 3.9 11.4 21.4)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -LINESTRING ZM(1.25 2.25 10 20, 2 4 11.5 21.5) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid5.testcase deleted file mode 100644 index c77c4d2..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - two args - text geom (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid('alpha', NULL); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid('alpha', NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid50.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid50.testcase deleted file mode 100644 index d5ce6a6..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid50.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - Polygon ZM -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('POLYGONZM((0.1 0.1 10.1 20.1, 0.2 0.2 10.11 20.12, 0.2 5.1 10.12 20.13, 4.9 4.9 10.51 20.51, 5.1 5.1 10.49 20.49, 4.9 0.15 10.1 20.1, 0.1 0.1 10.1 20.1), (3.1 3.1 10.1 20.1, 3.2 3.1 10.11 20.11, 3.2 3.2 10.12 20.12, 3.2 3.1 10.13 20.13, 3.1 3.1 10.1 20.1), (1.1 1.1 10.1 20.1, 1.1 2.1 10.2 20.2, 2.1 2.1 10.3 20.3, 2.1 1.1 10.4 20.4, 1.1 1.1 10.1 20.1))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('POLYGONZM((0.1 0.1 10.1 20.1, 0.2 0.2 10.11 20.12, 0.2 5.1 10.12 20.13, 4.9 4.9 10.51 20.51, 5.1 5.1 10.49 20.49, 4.9 0.15 10.1 20.1, 0.1 0.1 10.1 20.1), (3.1 3.1 10.1 20.1, 3.2 3.1 10.11 20.11, 3.2 3.2 10.12 20.12, 3.2 3.1 10.13 20.13, 3.1 3.1 10.1 20.1), (1.1 1.1 10.1 20.1, 1.1 2.1 10.2 20.2, 2.1 2.1 10.3 20.3, 2.1 1.1 10.4 20.4, 1.1 1.1 10.1 20.1))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -POLYGON ZM((0 0 10 20, 0.25 0.25 10 20, 0.25 5 10 20.25, 5 5 10.5 20.5, 5 0.25 10 20, 0 0 10 20), (3 3 10 20, 3.25 3 10 20, 3.25 3.25 10 20, 3.25 3 10.25 20.25, 3 3 10 20), (1 1 10 20, 1 2 10.25 20.25, 2 2 10.25 20.25, 2 1 10.5 20.5, 1 1 10 20)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid51.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid51.testcase deleted file mode 100644 index bd14ef6..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid51.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - MultiPoint ZM -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOINTZM(1.2 2.3 10.1 20.1, 1.21 2.31 10.11 20.11, 2.2 3.3 21.1 31.1, 2.21 3.33 21.12 31.12)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('MULTIPOINTZM(1.2 2.3 10.1 20.1, 1.21 2.31 10.11 20.11, 2.2 3.3 21.1 31.1, 2.21 3.33 21.12 31.12)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -MULTIPOINT ZM(1.25 2.25 10 20, 2.25 3.25 21 31) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid52.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid52.testcase deleted file mode 100644 index 7437f9b..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid52.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - MultiLinestring ZM -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRINGZM((1.2 2.3 10.1 20.1, 1.21 2.31 10.11 20.11, 1.22 2.32 10.1 20.1, 2.1 3.9 10.11 20.11), (2.11 3.11 10 20, 2.12 3.12 10.1 20.1), (3.2 4.2 10.1 20.1, 4.2 3.2 10.4 20.4))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRINGZM((1.2 2.3 10.1 20.1, 1.21 2.31 10.11 20.11, 1.22 2.32 10.1 20.1, 2.1 3.9 10.11 20.11), (2.11 3.11 10 20, 2.12 3.12 10.1 20.1), (3.2 4.2 10.1 20.1, 4.2 3.2 10.4 20.4))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -MULTILINESTRING ZM((1.25 2.25 10 20, 2 4 10 20), (3.25 4.25 10 20, 4.25 3.25 10.5 20.5)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid53.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid53.testcase deleted file mode 100644 index 8a5a10e..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid53.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - MultiPolygon ZM -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGONZM(((5.11 5.11 10.1 20.1, 5.12 5.11 10.11 20.11, 5.11 5.11 10.12 20.12, 5.11 5.12 10.13 20.13, 5.11 5.11 10.1 20.1)), ((0.1 0.1 10.1 20.1, 0.2 0.2 10.11 20.11, 0.2 5.1 10.12 20.12, 4.9 4.9 10.13 20.13, 5.1 5.1 10.14 20.14, 4.9 0.15 10.15 20.15, 0.1 0.1 10.1 20.1), (3.1 3.1 10.1 20.1, 3.2 3.1 10.11 20.11, 3.2 3.2 10.11 20.11, 3.2 3.1 10.12 20.12, 3.1 3.1 10.1 20.1), (1.1 1.1 10.1 20.1, 1.1 2.1 10.11 20.11, 2.1 2.1 10.12 20.12, 2.1 1.1 10.13 20.13, 1.1 1.1 10.1 20.1)), ((5.51 5.51 10.1 20.1, 6.51 5.51 10.11 20.11, 6.51 6.51 10.12 20.12, 5.51 6.51 10.13 20.13, 5.51 5.51 10.1 20.1)))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGONZM(((5.11 5.11 10.1 20.1, 5.12 5.11 10.11 20.11, 5.11 5.11 10.12 20.12, 5.11 5.12 10.13 20.13, 5.11 5.11 10.1 20.1)), ((0.1 0.1 10.1 20.1, 0.2 0.2 10.11 20.11, 0.2 5.1 10.12 20.12, 4.9 4.9 10.13 20.13, 5.1 5.1 10.14 20.14, 4.9 0.15 10.15 20.15, 0.1 0.1 10.1 20.1), (3.1 3.1 10.1 20.1, 3.2 3.1 10.11 20.11, 3.2 3.2 10.11 20.11, 3.2 3.1 10.12 20.12, 3.1 3.1 10.1 20.1), (1.1 1.1 10.1 20.1, 1.1 2.1 10.11 20.11, 2.1 2.1 10.12 20.12, 2.1 1.1 10.13 20.13, 1.1 1.1 10.1 20.1)), ((5.51 5.51 10.1 20.1, 6.51 5.51 10.11 20.11, 6.51 6.51 10.12 20.12, 5.51 6.51 10.13 20.13, 5.51 5.51 10.1 20.1)))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -MULTIPOLYGON ZM(((0 0 10 20, 0.25 0.25 10 20, 0.25 5 10 20, 5 5 10.25 20.25, 5 0.25 10.25 20.25, 0 0 10 20), (3 3 10 20, 3.25 3 10 20, 3.25 3.25 10 20, 3.25 3 10 20, 3 3 10 20), (1 1 10 20, 1 2 10 20, 2 2 10 20, 2 1 10.25 20.25, 1 1 10 20)), ((5.5 5.5 10 20, 6.5 5.5 10 20, 6.5 6.5 10 20, 5.5 6.5 10.25 20.25, 5.5 5.5 10 20))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid54.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid54.testcase deleted file mode 100644 index 77f66ec..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid54.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - Point Z -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('POINTZ(1.2 2.3 10.1)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('POINTZ(1.2 2.3 10.1)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -POINT Z(1.25 2.25 10) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid55.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid55.testcase deleted file mode 100644 index 3092cc1..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid55.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - Linestring Z -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('LINESTRINGZ(1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.12, 2.1 3.9 11.4)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('LINESTRINGZ(1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.12, 2.1 3.9 11.4)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -LINESTRING Z(1.25 2.25 10, 2 4 11.5) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid56.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid56.testcase deleted file mode 100644 index cc8b8a8..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid56.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - Polygon Z -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('POLYGONZ((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.51, 5.1 5.1 10.49, 4.9 0.15 10.1, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.12, 3.2 3.1 10.13, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.2, 2.1 2.1 10.3, 2.1 1.1 10.4, 1.1 1.1 10.1))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('POLYGONZ((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.51, 5.1 5.1 10.49, 4.9 0.15 10.1, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.12, 3.2 3.1 10.13, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.2, 2.1 2.1 10.3, 2.1 1.1 10.4, 1.1 1.1 10.1))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -POLYGON Z((0 0 10, 0.25 0.25 10, 0.25 5 10, 5 5 10.5, 5 0.25 10, 0 0 10), (3 3 10, 3.25 3 10, 3.25 3.25 10, 3.25 3 10.25, 3 3 10), (1 1 10, 1 2 10.25, 2 2 10.25, 2 1 10.5, 1 1 10)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid57.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid57.testcase deleted file mode 100644 index 0e88342..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid57.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - MultiPoint Z -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOINTZ(1.2 2.3 10.1, 1.21 2.31 10.11, 2.2 3.3 21.1, 2.21 3.33 21.12)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('MULTIPOINTZ(1.2 2.3 10.1, 1.21 2.31 10.11, 2.2 3.3 21.1, 2.21 3.33 21.12)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -MULTIPOINT Z(1.25 2.25 10, 2.25 3.25 21) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid58.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid58.testcase deleted file mode 100644 index 3c4e9b0..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid58.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - MultiLinestring Z -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRINGZ((1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.1, 2.1 3.9 10.11), (2.11 3.11 10, 2.12 3.12 10.1), (3.2 4.2 10.1, 4.2 3.2 10.4))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRINGZ((1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.1, 2.1 3.9 10.11), (2.11 3.11 10, 2.12 3.12 10.1), (3.2 4.2 10.1, 4.2 3.2 10.4))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -MULTILINESTRING Z((1.25 2.25 10, 2 4 10), (3.25 4.25 10, 4.25 3.25 10.5)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid59.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid59.testcase deleted file mode 100644 index abfad9d..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid59.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - MultiPolygon Z -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGONZ(((5.11 5.11 10.1, 5.12 5.11 10.11, 5.11 5.11 10.12, 5.11 5.12 10.13, 5.11 5.11 10.1)), ((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.13, 5.1 5.1 10.14, 4.9 0.15 10.15, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.11, 3.2 3.1 10.12, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.11, 2.1 2.1 10.12, 2.1 1.1 10.13, 1.1 1.1 10.1)), ((5.51 5.51 10.1, 6.51 5.51 10.11, 6.51 6.51 10.12, 5.51 6.51 10.13, 5.51 5.51 10.1)))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGONZ(((5.11 5.11 10.1, 5.12 5.11 10.11, 5.11 5.11 10.12, 5.11 5.12 10.13, 5.11 5.11 10.1)), ((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.13, 5.1 5.1 10.14, 4.9 0.15 10.15, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.11, 3.2 3.1 10.12, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.11, 2.1 2.1 10.12, 2.1 1.1 10.13, 1.1 1.1 10.1)), ((5.51 5.51 10.1, 6.51 5.51 10.11, 6.51 6.51 10.12, 5.51 6.51 10.13, 5.51 5.51 10.1)))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -MULTIPOLYGON Z(((0 0 10, 0.25 0.25 10, 0.25 5 10, 5 5 10.25, 5 0.25 10.25, 0 0 10), (3 3 10, 3.25 3 10, 3.25 3.25 10, 3.25 3 10, 3 3 10), (1 1 10, 1 2 10, 2 2 10, 2 1 10.25, 1 1 10)), ((5.5 5.5 10, 6.5 5.5 10, 6.5 6.5 10, 5.5 6.5 10.25, 5.5 5.5 10))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid6.testcase deleted file mode 100644 index 9ebe09a..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - two args - double geom (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(1.2, NULL); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(1.2, NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid60.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid60.testcase deleted file mode 100644 index b833565..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid60.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - Point M -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('POINTM(1.2 2.3 10.1)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('POINTM(1.2 2.3 10.1)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -POINT M(1.25 2.25 10) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid61.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid61.testcase deleted file mode 100644 index 57a1f9e..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid61.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - Linestring M -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('LINESTRINGM(1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.12, 2.1 3.9 11.4)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('LINESTRINGM(1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.12, 2.1 3.9 11.4)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -LINESTRING M(1.25 2.25 10, 2 4 11.5) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid62.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid62.testcase deleted file mode 100644 index af1a880..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid62.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - Polygon M -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('POLYGONM((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.51, 5.1 5.1 10.49, 4.9 0.15 10.1, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.12, 3.2 3.1 10.13, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.2, 2.1 2.1 10.3, 2.1 1.1 10.4, 1.1 1.1 10.1))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('POLYGONM((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.51, 5.1 5.1 10.49, 4.9 0.15 10.1, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.12, 3.2 3.1 10.13, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.2, 2.1 2.1 10.3, 2.1 1.1 10.4, 1.1 1.1 10.1))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -POLYGON M((0 0 10, 0.25 0.25 10, 0.25 5 10, 5 5 10.5, 5 0.25 10, 0 0 10), (3 3 10, 3.25 3 10, 3.25 3.25 10, 3.25 3 10.25, 3 3 10), (1 1 10, 1 2 10.25, 2 2 10.25, 2 1 10.5, 1 1 10)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid63.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid63.testcase deleted file mode 100644 index b5d1b63..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid63.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - MultiPoint M -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOINTM(1.2 2.3 10.1, 1.21 2.31 10.11, 2.2 3.3 21.1, 2.21 3.33 21.12)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('MULTIPOINTM(1.2 2.3 10.1, 1.21 2.31 10.11, 2.2 3.3 21.1, 2.21 3.33 21.12)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -MULTIPOINT M(1.25 2.25 10, 2.25 3.25 21) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid64.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid64.testcase deleted file mode 100644 index eea01f4..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid64.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - MultiLinestring M -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRINGM((1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.1, 2.1 3.9 10.11), (2.11 3.11 10, 2.12 3.12 10.1), (3.2 4.2 10.1, 4.2 3.2 10.4))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRINGM((1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.1, 2.1 3.9 10.11), (2.11 3.11 10, 2.12 3.12 10.1), (3.2 4.2 10.1, 4.2 3.2 10.4))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -MULTILINESTRING M((1.25 2.25 10, 2 4 10), (3.25 4.25 10, 4.25 3.25 10.5)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid65.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid65.testcase deleted file mode 100644 index 011346b..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid65.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - MultiPolygon M -:memory: #use in-memory database -SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGONM(((5.11 5.11 10.1, 5.12 5.11 10.11, 5.11 5.11 10.12, 5.11 5.12 10.13, 5.11 5.11 10.1)), ((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.13, 5.1 5.1 10.14, 4.9 0.15 10.15, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.11, 3.2 3.1 10.12, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.11, 2.1 2.1 10.12, 2.1 1.1 10.13, 1.1 1.1 10.1)), ((5.51 5.51 10.1, 6.51 5.51 10.11, 6.51 6.51 10.12, 5.51 6.51 10.13, 5.51 5.51 10.1)))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); -1 # rows (not including the header row) -1 # columns -AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGONM(((5.11 5.11 10.1, 5.12 5.11 10.11, 5.11 5.11 10.12, 5.11 5.12 10.13, 5.11 5.11 10.1)), ((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.13, 5.1 5.1 10.14, 4.9 0.15 10.15, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.11, 3.2 3.1 10.12, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.11, 2.1 2.1 10.12, 2.1 1.1 10.13, 1.1 1.1 10.1)), ((5.51 5.51 10.1, 6.51 5.51 10.11, 6.51 6.51 10.12, 5.51 6.51 10.13, 5.51 5.51 10.1)))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) -MULTIPOLYGON M(((0 0 10, 0.25 0.25 10, 0.25 5 10, 5 5 10.25, 5 0.25 10.25, 0 0 10), (3 3 10, 3.25 3 10, 3.25 3.25 10, 3.25 3 10, 3 3 10), (1 1 10, 1 2 10, 2 2 10, 2 1 10.25, 1 1 10)), ((5.5 5.5 10, 6.5 5.5 10, 6.5 6.5 10, 5.5 6.5 10.25, 5.5 5.5 10))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid7.testcase deleted file mode 100644 index 7697b93..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - three args - NULL sizeX (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), NULL, 0.5); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), NULL, 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid8.testcase deleted file mode 100644 index cdbbe6b..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - three args - BLOB sizeX (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), zeroblob(4), 0.5); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), zeroblob(4), 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid9.testcase deleted file mode 100644 index c8b6ee1..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SnapToGrid - three args - text sizeX (error) -:memory: #use in-memory database -SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha', 0.5); -1 # rows (not including the header row) -1 # columns -ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha', 0.5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split1.testcase deleted file mode 100644 index 860ab30..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Invalid BLOB input (error) -:memory: #use in-memory database -SELECT ST_Split(zeroblob(4), MakePoint(5, 0)); -1 # rows (not including the header row) -1 # columns -ST_Split(zeroblob(4), MakePoint(5, 0)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split10.testcase deleted file mode 100644 index 9cb28c4..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Polygon-Point (error) -:memory: #use in-memory database -SELECT ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), MakePoint(4, 1)); -1 # rows (not including the header row) -1 # columns -ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), MakePoint(4, 1)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split11.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split11.testcase deleted file mode 100644 index a8d9c94..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Line-Polygon (error) -:memory: #use in-memory database -SELECT ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')); -1 # rows (not including the header row) -1 # columns -ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split12.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split12.testcase deleted file mode 100644 index 9599012..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Line-Collection (error) -:memory: #use in-memory database -SELECT ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2)')); -1 # rows (not including the header row) -1 # columns -ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2)')) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split13.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split13.testcase deleted file mode 100644 index 38ab239..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Line-Point (split) -:memory: #use in-memory database -SELECT AsText(ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(7, 0))); -1 # rows (not including the header row) -1 # columns -AsText(ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(7, 0))) -MULTILINESTRING((0 0, 7 0), (7 0, 10 0)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split14.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split14.testcase deleted file mode 100644 index 98815e2..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Line-Line (split) -:memory: #use in-memory database -SELECT AsText(ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(7 0, 7 3)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(7 0, 7 3)'))) -MULTILINESTRING((0 1, 7 1), (7 1, 10 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split15.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split15.testcase deleted file mode 100644 index 4c43039..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - MultiLine-Point (split) -:memory: #use in-memory database -SELECT AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(7, 0))); -1 # rows (not including the header row) -1 # columns -AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(7, 0))) -MULTILINESTRING((0 2, 10 2), (0 0, 7 0), (7 0, 10 0)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split16.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split16.testcase deleted file mode 100644 index 1fee99b..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - MultiLine-Line (split) -:memory: #use in-memory database -SELECT AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(7 0, 7 3)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(7 0, 7 3)'))) -MULTILINESTRING((0 2, 7 2), (7 2, 10 2), (0 1, 7 1), (7 1, 10 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split17.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split17.testcase deleted file mode 100644 index d778ff4..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Polygon-Line (split) -:memory: #use in-memory database -SELECT AsText(ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('LINESTRING(7 0, 7 20)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('LINESTRING(7 0, 7 20)'))) -MULTIPOLYGON(((7 1, 0 1, 0 10, 7 10, 7 1)), ((7 10, 10 10, 10 1, 7 1, 7 10))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split18.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split18.testcase deleted file mode 100644 index a1b533b..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Collection-Line (split) -:memory: #use in-memory database -SELECT AsText(ST_Split(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1)))'), GeomFromText('LINESTRING(7 0, 7 20)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_Split(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1)))'), GeomFromText('LINESTRING(7 0, 7 20)'))) -GEOMETRYCOLLECTION(LINESTRING(0 11, 7 11), LINESTRING(7 11, 10 11), POLYGON((7 1, 0 1, 0 10, 7 10, 7 1)), POLYGON((7 10, 10 10, 10 1, 7 1, 7 10))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split19.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split19.testcase deleted file mode 100644 index befdd00..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Line-Point (not split) -:memory: #use in-memory database -SELECT AsText(ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))); -1 # rows (not including the header row) -1 # columns -AsText(ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))) -LINESTRING(0 0, 10 0) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split2.testcase deleted file mode 100644 index 62e4458..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - NULL BLOB input (error) -:memory: #use in-memory database -SELECT ST_Split(NULL, MakePoint(5, 0)); -1 # rows (not including the header row) -1 # columns -ST_Split(NULL, MakePoint(5, 0)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split20.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split20.testcase deleted file mode 100644 index e74db29..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Line-Line (not split) -:memory: #use in-memory database -SELECT AsText(ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(11 0, 11 3)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(11 0, 11 3)'))) -LINESTRING(0 1, 10 1) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split21.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split21.testcase deleted file mode 100644 index 5b330fe..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split21.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - MultiLine-Point (not split) -:memory: #use in-memory database -SELECT AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(-1, 0))); -1 # rows (not including the header row) -1 # columns -AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(-1, 0))) -MULTILINESTRING((0 2, 10 2), (0 0, 10 0)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split22.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split22.testcase deleted file mode 100644 index 874f1df..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split22.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - MultiLine-Line (not split) -:memory: #use in-memory database -SELECT AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(-1 0, -1 3)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(-1 0, -1 3)'))) -MULTILINESTRING((0 2, 10 2), (0 1, 10 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split23.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split23.testcase deleted file mode 100644 index 1a885f1..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split23.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Polygon-Line (not split) -:memory: #use in-memory database -SELECT AsText(ST_ForceLHR(ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('LINESTRING(12 0, 12 20)')))); -1 # rows (not including the header row) -1 # columns -AsText(ST_ForceLHR(ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('LINESTRING(12 0, 12 20)')))) -POLYGON((0 1, 0 10, 10 10, 10 1, 0 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split24.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split24.testcase deleted file mode 100644 index 93f066b..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split24.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Collection-Line (not split) -:memory: #use in-memory database -SELECT AsText(ST_ForceLHR(ST_Split(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1)))'), GeomFromText('LINESTRING(-1 0, -1 20)')))); -1 # rows (not including the header row) -1 # columns -AsText(ST_ForceLHR(ST_Split(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1)))'), GeomFromText('LINESTRING(-1 0, -1 20)')))) -GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 0 10, 10 10, 10 1, 0 1))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split25.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split25.testcase deleted file mode 100644 index befdd00..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split25.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Line-Point (not split) -:memory: #use in-memory database -SELECT AsText(ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))); -1 # rows (not including the header row) -1 # columns -AsText(ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))) -LINESTRING(0 0, 10 0) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split26.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split26.testcase deleted file mode 100644 index c86a9f1..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split26.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitlLeft - Line-Point (split) -:memory: #use in-memory database -SELECT AsText(ST_SplitLeft(GeomFromText('LINESTRINGZM(0 0 10 100, 10 0 11 101)'), MakePointZM(7, 0, 10, 100))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitLeft(GeomFromText('LINESTRINGZM(0 0 10 100, 10 0 11 101)'), MakePointZM(7, 0, 10, 100))) -LINESTRING ZM(0 0 10 100, 7 0 10.7 100.7) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split27.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split27.testcase deleted file mode 100644 index 79f1465..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split27.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitLeft - Line-Line (split) -:memory: #use in-memory database -SELECT AsText(ST_SplitLeft(GeomFromText('LINESTRINGM(0 1 10, 10 1 10)'), GeomFromText('LINESTRING(7 0, 7 3)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitLeft(GeomFromText('LINESTRINGM(0 1 10, 10 1 10)'), GeomFromText('LINESTRING(7 0, 7 3)'))) -LINESTRING M(0 1 0, 7 1 0) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split28.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split28.testcase deleted file mode 100644 index 8152949..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split28.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitLeft - MultiLine-Point (split) -:memory: #use in-memory database -SELECT AsText(ST_SplitLeft(GeomFromText('MULTILINESTRINGZ((0 2 10, 10 2 11), (0 0 10, 10 0 11))'), MakePointZ(7, 0, 10))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitLeft(GeomFromText('MULTILINESTRINGZ((0 2 10, 10 2 11), (0 0 10, 10 0 11))'), MakePointZ(7, 0, 10))) -MULTILINESTRING Z((0 2 10, 10 2 11), (0 0 10, 7 0 10.7)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split29.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split29.testcase deleted file mode 100644 index b649b08..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split29.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitLeft - MultiLine-Line (split) -:memory: #use in-memory database -SELECT AsText(ST_SplitLeft(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(7 0, 7 3)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitLeft(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(7 0, 7 3)'))) -MULTILINESTRING((0 2, 7 2), (0 1, 7 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split3.testcase deleted file mode 100644 index e46f7ac..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - text input (error) -:memory: #use in-memory database -SELECT ST_Split('alpha', MakePoint(5, 0)); -1 # rows (not including the header row) -1 # columns -ST_Split('alpha', MakePoint(5, 0)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split30.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split30.testcase deleted file mode 100644 index a0ba9ea..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split30.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitLeft - Polygon-Line (split) -:memory: #use in-memory database -SELECT AsText(ST_ForceLHR(ST_SplitLeft(GeomFromText('POLYGONZ((0 1 10, 10 1 11, 10 10 12, 0 10 13, 0 1 10), (5 5 10, 9 5 11, 9 9 12, 5 9 13, 5 5 10))'), GeomFromText('LINESTRING(7 0, 7 20)')))); -1 # rows (not including the header row) -1 # columns -AsText(ST_ForceLHR(ST_SplitLeft(GeomFromText('POLYGONZ((0 1 10, 10 1 11, 10 10 12, 0 10 13, 0 1 10), (5 5 10, 9 5 11, 9 9 12, 5 9 13, 5 5 10))'), GeomFromText('LINESTRING(7 0, 7 20)')))) -POLYGON Z((7 1 10.7, 0 1 10, 0 10 13, 7 10 12.3, 7 9 12.5, 5 9 13, 5 5 10, 7 5 10.5, 7 1 10.7)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split31.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split31.testcase deleted file mode 100644 index c4207cb..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split31.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitLeft - Collection-Line (split) -:memory: #use in-memory database -SELECT AsText(ST_SplitLeft(GeomFromText('GEOMETRYCOLLECTIONM(LINESTRINGM(0 11 10, 10 11 10), POLYGONM((0 1 10, 10 1 11, 10 10 12, 0 10 13, 0 1 10), (5 5 10, 9 5 11, 9 9 12, 5 9 13, 5 5 10)))'), GeomFromText('LINESTRING(7 0, 7 20)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitLeft(GeomFromText('GEOMETRYCOLLECTIONM(LINESTRINGM(0 11 10, 10 11 10), POLYGONM((0 1 10, 10 1 11, 10 10 12, 0 10 13, 0 1 10), (5 5 10, 9 5 11, 9 9 12, 5 9 13, 5 5 10)))'), GeomFromText('LINESTRING(7 0, 7 20)'))) -GEOMETRYCOLLECTION M(LINESTRING M(0 11 0, 7 11 0), POLYGON M((7 1 0, 0 1 0, 0 10 0, 7 10 0, 7 9 0, 5 9 0, 5 5 0, 7 5 0, 7 1 0))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split32.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split32.testcase deleted file mode 100644 index fe098e1..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split32.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitLeft - Line-Point (not split) -:memory: #use in-memory database -SELECT AsText(ST_SplitLeft(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitLeft(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))) -LINESTRING(0 0, 10 0) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split33.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split33.testcase deleted file mode 100644 index ae07635..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split33.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitLeft - Line-Line (not split) -:memory: #use in-memory database -SELECT AsText(ST_SplitLeft(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(11 0, 11 3)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitLeft(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(11 0, 11 3)'))) -LINESTRING(0 1, 10 1) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split34.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split34.testcase deleted file mode 100644 index 301ffa9..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split34.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitLeft - MultiLine-Point (not split) -:memory: #use in-memory database -SELECT AsText(ST_SplitLeft(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(-1, 0))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitLeft(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(-1, 0))) -MULTILINESTRING((0 2, 10 2), (0 0, 10 0)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split35.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split35.testcase deleted file mode 100644 index b91b0e8..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split35.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitLeft - MultiLine-Line (not split) -:memory: #use in-memory database -SELECT AsText(ST_SplitLeft(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(-1 0, -1 3)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitLeft(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(-1 0, -1 3)'))) -MULTILINESTRING((0 2, 10 2), (0 1, 10 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split36.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split36.testcase deleted file mode 100644 index f3f736f..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split36.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitLeft - Polygon-Line (not split) -:memory: #use in-memory database -SELECT AsText(ST_ForceLHR(ST_SplitLeft(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5))'), GeomFromText('LINESTRING(12 0, 12 20)')))); -1 # rows (not including the header row) -1 # columns -AsText(ST_ForceLHR(ST_SplitLeft(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5))'), GeomFromText('LINESTRING(12 0, 12 20)')))) -POLYGON((0 1, 0 10, 10 10, 10 1, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split37.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split37.testcase deleted file mode 100644 index 39b6809..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split37.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitLeft - Collection-Line (not split) -:memory: #use in-memory database -SELECT AsText(ST_ForceLHR(ST_SplitLeft(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5)))'), GeomFromText('LINESTRING(-1 0, -1 20)')))); -1 # rows (not including the header row) -1 # columns -AsText(ST_ForceLHR(ST_SplitLeft(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5)))'), GeomFromText('LINESTRING(-1 0, -1 20)')))) -GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 0 10, 10 10, 10 1, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split38.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split38.testcase deleted file mode 100644 index 927f068..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split38.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitlRight - Line-Point (split) -:memory: #use in-memory database -SELECT AsText(ST_SplitRight(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(7, 0))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitRight(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(7, 0))) -LINESTRING(7 0, 10 0) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split39.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split39.testcase deleted file mode 100644 index 0015c44..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split39.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitRight - Line-Line (split) -:memory: #use in-memory database -SELECT AsText(ST_SplitRight(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(7 0, 7 3)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitRight(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(7 0, 7 3)'))) -LINESTRING(7 1, 10 1) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split4.testcase deleted file mode 100644 index 148e34c..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Invalid BLOB blade (error) -:memory: #use in-memory database -SELECT ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), zeroblob(4)); -1 # rows (not including the header row) -1 # columns -ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), zeroblob(4)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split40.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split40.testcase deleted file mode 100644 index 6119e2f..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split40.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitRight - MultiLine-Point (split) -:memory: #use in-memory database -SELECT AsText(ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(7, 0))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(7, 0))) -LINESTRING(7 0, 10 0) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split41.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split41.testcase deleted file mode 100644 index 61649a4..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split41.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitRight - MultiLine-Line (split) -:memory: #use in-memory database -SELECT AsText(ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(7 0, 7 3)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(7 0, 7 3)'))) -MULTILINESTRING((7 2, 10 2), (7 1, 10 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split42.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split42.testcase deleted file mode 100644 index 13c4213..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split42.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitRight - Polygon-Line (split) -:memory: #use in-memory database -SELECT AsText(ST_SplitRight(GeomFromText('POLYGONZM((0 1 10 100, 10 1 11 101, 10 10 12 102, 0 10 13 103, 0 1 10 100), (5 5 10 100, 9 5 11 101, 9 9 12 102, 5 9 13 103, 5 5 10 100))'), GeomFromText('LINESTRING(7 0, 7 20)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitRight(GeomFromText('POLYGONZM((0 1 10 100, 10 1 11 101, 10 10 12 102, 0 10 13 103, 0 1 10 100), (5 5 10 100, 9 5 11 101, 9 9 12 102, 5 9 13 103, 5 5 10 100))'), GeomFromText('LINESTRING(7 0, 7 20)'))) -POLYGON ZM((7 10 12.3 0, 10 10 12 0, 10 1 11 0, 7 1 10.7 0, 7 5 10.5 0, 9 5 11 0, 9 9 12 0, 7 9 12.5 0, 7 10 12.3 0)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split43.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split43.testcase deleted file mode 100644 index 00f3efd..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split43.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitRight - Collection-Line (split) -:memory: #use in-memory database -SELECT AsText(ST_SplitRight(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5)))'), GeomFromText('LINESTRING(7 0, 7 20)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitRight(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5)))'), GeomFromText('LINESTRING(7 0, 7 20)'))) -GEOMETRYCOLLECTION(LINESTRING(7 11, 10 11), POLYGON((7 10, 10 10, 10 1, 7 1, 7 5, 9 5, 9 9, 7 9, 7 10))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split44.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split44.testcase deleted file mode 100644 index 9534d34..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split44.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitRight - Line-Point (not split) -:memory: #use in-memory database -SELECT AsText(ST_SplitRight(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitRight(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split45.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split45.testcase deleted file mode 100644 index 5de5167..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split45.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitRight - Line-Line (not split) -:memory: #use in-memory database -SELECT AsText(ST_SplitRight(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(11 0, 11 3)'))); -1 # rows (not including the header row) -1 # columns -AsText(ST_SplitRight(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(11 0, 11 3)'))) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split46.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split46.testcase deleted file mode 100644 index cbbe595..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split46.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitRigt - MultiLine-Point (not split) -:memory: #use in-memory database -SELECT ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(-1, 0)); -1 # rows (not including the header row) -1 # columns -ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(-1, 0)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split47.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split47.testcase deleted file mode 100644 index 61b2427..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split47.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitRight - MultiLine-Line (not split) -:memory: #use in-memory database -SELECT ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(-1 0, -1 3)')); -1 # rows (not including the header row) -1 # columns -ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(-1 0, -1 3)')) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split48.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split48.testcase deleted file mode 100644 index 6ae0938..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split48.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitRight - Polygon-Line (not split) -:memory: #use in-memory database -SELECT AsText(ST_ForceLHR(ST_SplitRight(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('LINESTRING(12 0, 12 20)')))); -1 # rows (not including the header row) -1 # columns -AsText(ST_ForceLHR(ST_SplitRight(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('LINESTRING(12 0, 12 20)')))) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split49.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split49.testcase deleted file mode 100644 index ca2fa7f..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split49.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_SplitRight - Collection-Line (not split) -:memory: #use in-memory database -SELECT ST_ForceLHR(ST_SplitRight(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1)))'), GeomFromText('LINESTRING(-1 0, -1 20)'))); -1 # rows (not including the header row) -1 # columns -ST_ForceLHR(ST_SplitRight(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1)))'), GeomFromText('LINESTRING(-1 0, -1 20)'))) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split5.testcase deleted file mode 100644 index a10e674..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - NULL BLOB blade (error) -:memory: #use in-memory database -SELECT ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), NULL); -1 # rows (not including the header row) -1 # columns -ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split6.testcase deleted file mode 100644 index 15577db..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - text input blade (error) -:memory: #use in-memory database -SELECT ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), 'alpha'); -1 # rows (not including the header row) -1 # columns -ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), 'alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split7.testcase deleted file mode 100644 index 70a8d15..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Point-Point (error) -:memory: #use in-memory database -SELECT ST_Split(MakePoint(0, 0), MakePoint(1, 1)); -1 # rows (not including the header row) -1 # columns -ST_Split(MakePoint(0, 0), MakePoint(1, 1)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split8.testcase deleted file mode 100644 index 7caa8fd..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Line-Multiline (error) -:memory: #use in-memory database -SELECT ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('MULTILINESTRING((3 0, 3 3), (5 0, 5 3))')); -1 # rows (not including the header row) -1 # columns -ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('MULTILINESTRING((3 0, 3 3), (5 0, 5 3))')) -(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split9.testcase deleted file mode 100644 index feeefee..0000000 --- a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Split - Polygon-Multiline (error) -:memory: #use in-memory database -SELECT ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('MULTILINESTRING((3 0, 3 3), (5 0, 5 3))')); -1 # rows (not including the header row) -1 # columns -ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('MULTILINESTRING((3 0, 3 3), (5 0, 5 3))')) -(NULL) diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/acos-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/acos-text.testcase deleted file mode 100644 index 10c6848..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/acos-text.testcase +++ /dev/null @@ -1,7 +0,0 @@ -acos-text # check of text argument to acos() -:memory: #use in-memory database -SELECT acos("test"); -1 # rows (not including the header row) -1 # columns -acos("test") # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/acos.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/acos.testcase deleted file mode 100644 index d9847ef..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/acos.testcase +++ /dev/null @@ -1,7 +0,0 @@ -acos(1) -:memory: #use in-memory database -SELECT acos(1); -1 # rows (not including the header row) -1 # columns -acos(1) # header -0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/acos10.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/acos10.testcase deleted file mode 100644 index fbaf4b4..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/acos10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -acos(1.0) -:memory: #use in-memory database -SELECT acos(1.0); -1 # rows (not including the header row) -1 # columns -acos(1.0) # header -0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/acos2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/acos2.testcase deleted file mode 100644 index a1604ad..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/acos2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -acos(2) -:memory: #use in-memory database -SELECT acos(2); -1 # rows (not including the header row) -1 # columns -acos(2) # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/acos20.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/acos20.testcase deleted file mode 100644 index 0c61a1a..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/acos20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -acos(2.0) -:memory: #use in-memory database -SELECT acos(2.0); -1 # rows (not including the header row) -1 # columns -acos(2.0) # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/asin-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/asin-text.testcase deleted file mode 100644 index 0cce86d..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/asin-text.testcase +++ /dev/null @@ -1,7 +0,0 @@ -asin-text # check of text argument to asin() -:memory: #use in-memory database -SELECT asin("test"); -1 # rows (not including the header row) -1 # columns -asin("test") # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/asin1.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/asin1.testcase deleted file mode 100644 index bb00f60..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/asin1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -asin(1) -:memory: #use in-memory database -SELECT asin(1); -1 # rows (not including the header row) -1 # columns -asin(1) # header -1.570796326794:14 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/asin10.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/asin10.testcase deleted file mode 100644 index a9f752b..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/asin10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -asin(1.0) -:memory: #use in-memory database -SELECT asin(1.0); -1 # rows (not including the header row) -1 # columns -asin(1.0) # header -1.570796326794:14 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/asin2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/asin2.testcase deleted file mode 100644 index 8ed485d..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/asin2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -asin(2) -:memory: #use in-memory database -SELECT asin(2); -1 # rows (not including the header row) -1 # columns -asin(2) # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/asin20.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/asin20.testcase deleted file mode 100644 index a437a45..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/asin20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -asin(2.0) -:memory: #use in-memory database -SELECT asin(2.0); -1 # rows (not including the header row) -1 # columns -asin(2.0) # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/atan-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/atan-text.testcase deleted file mode 100644 index f3e0a9d..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/atan-text.testcase +++ /dev/null @@ -1,8 +0,0 @@ -atan-text -:memory: # use in-memory database -SELECT atan('test'); -1 # rows (not including the header row) -1 # columns -atan('test') # header -(NULL) - diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/atan0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/atan0.testcase deleted file mode 100644 index ee53585..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/atan0.testcase +++ /dev/null @@ -1,7 +0,0 @@ -atan(0) -:memory: #use in-memory database -SELECT atan(0); -1 # rows (not including the header row) -1 # columns -atan(0) # header -0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/atan00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/atan00.testcase deleted file mode 100644 index 82962a4..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/atan00.testcase +++ /dev/null @@ -1,7 +0,0 @@ -atan(0.0) -:memory: # use in-memory database -SELECT atan(0.0); -1 # rows (not including the header row) -1 # columns -atan(0.0) # header -0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/ceil-int.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/ceil-int.testcase deleted file mode 100644 index 819cbf3..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/ceil-int.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ceil(integer) # integer input - this is just the name remember -:memory: -SELECT ceil(3); # the SQL to run -1 # rows -1 # column -ceil(3) # this is the header row -3.0 # this is really the result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat.testcase deleted file mode 100644 index 22d5d2d..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ceil-float -:memory: -SELECT ceil(3.0); # the SQL to run -1 # rows -1 # column -ceil(3.0) # this is the header row -3.0 # this is really the result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat2.testcase deleted file mode 100644 index 338b171..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ceil-float2 -:memory: -SELECT ceil(3.1); # the SQL to run -1 # rows -1 # column -ceil(3.1) # this is the header row -4.0 # this is really the result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/ceilnull.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/ceilnull.testcase deleted file mode 100644 index 99bb1ac..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/ceilnull.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ceil(null) # text input, expecting null output -:memory: -SELECT ceil("some text"); # the SQL to run -1 # rows -1 # columns -ceil("some text") # this is the header row -(NULL) # this is really the result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/cos-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/cos-text.testcase deleted file mode 100644 index e105038..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/cos-text.testcase +++ /dev/null @@ -1,7 +0,0 @@ -cos-text -:memory: #use in-memory database -SELECT cos('test'); -1 # rows (not including the header row) -1 # columns -cos('test') # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/cos0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/cos0.testcase deleted file mode 100644 index 7831518..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/cos0.testcase +++ /dev/null @@ -1,7 +0,0 @@ -cos(0) -:memory: #use in-memory database -SELECT cos(0); -1 # rows (not including the header row) -1 # columns -cos(0) # header -1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/cos00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/cos00.testcase deleted file mode 100644 index c3d2a60..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/cos00.testcase +++ /dev/null @@ -1,7 +0,0 @@ -cos(0.0) -:memory: #use in-memory database -SELECT cos(0.0); -1 # rows (not including the header row) -1 # columns -cos(0.0) # header -1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/cot-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/cot-text.testcase deleted file mode 100644 index 08eff3b..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/cot-text.testcase +++ /dev/null @@ -1,7 +0,0 @@ -cot(text) -:memory: #use in-memory database -SELECT cot("text"); -1 # rows (not including the header row) -1 # columns -cot("text") # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/cot0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/cot0.testcase deleted file mode 100644 index 540f43b..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/cot0.testcase +++ /dev/null @@ -1,7 +0,0 @@ -cot(0) -:memory: #use in-memory database -SELECT cot(0); -1 # rows (not including the header row) -1 # columns -cot(0) # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/cot00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/cot00.testcase deleted file mode 100644 index cfb0659..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/cot00.testcase +++ /dev/null @@ -1,7 +0,0 @@ -cot(0.0) -:memory: #use in-memory database -SELECT cot(0.0); -1 # rows (not including the header row) -1 # columns -cot(0.0) # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/cotpi2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/cotpi2.testcase deleted file mode 100644 index 6e49225..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/cotpi2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -cot(pi2) -:memory: #use in-memory database -SELECT (1 + cot(pi()/2)); -1 # rows (not including the header row) -1 # columns -(1 + cot(pi()/2)) # header -1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/degrees.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/degrees.testcase deleted file mode 100644 index ccd59c1..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/degrees.testcase +++ /dev/null @@ -1,7 +0,0 @@ -degrees(0) -:memory: #use in-memory database -SELECT degrees(0); -1 # rows (not including the header row) -1 # columns -degrees(0) # header -0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/degrees45.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/degrees45.testcase deleted file mode 100644 index 7b89773..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/degrees45.testcase +++ /dev/null @@ -1,7 +0,0 @@ -degrees45 -:memory: #use in-memory database -SELECT degrees(pi()/4); -1 # rows (not including the header row) -1 # columns -degrees(pi()/4) # header -45.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/degreestext.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/degreestext.testcase deleted file mode 100644 index fa6cf49..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/degreestext.testcase +++ /dev/null @@ -1,7 +0,0 @@ -degrees-text -:memory: #use in-memory database -SELECT degrees("foo"); -1 # rows (not including the header row) -1 # columns -degrees("foo") # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/exp0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/exp0.testcase deleted file mode 100644 index c5c7a69..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/exp0.testcase +++ /dev/null @@ -1,8 +0,0 @@ -exp(0) # test of exp() function, with argument 0 -:memory: #use in-memory database -SELECT exp(0); -1 # rows (not including the header row) -1 # columns -exp(0)# header -1.0#result - diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/exp00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/exp00.testcase deleted file mode 100644 index a66071d..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/exp00.testcase +++ /dev/null @@ -1,8 +0,0 @@ -exp(0.0) # test of exp() function, with argument 0 (i.e. a float) -:memory: #use in-memory database -SELECT exp(0.0); -1 # rows (not including the header row) -1 # columns -exp(0.0)# header -1.0#result - diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/exp1.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/exp1.testcase deleted file mode 100644 index aec7953..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/exp1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -exp(1) # test of exp() function, with argument 1 -:memory: #use in-memory database -SELECT exp(1); -1 # rows (not including the header row) -1 # columns -exp(1)# header -2.71828182845905:8#result, with limited precision comparision - diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/exp10.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/exp10.testcase deleted file mode 100644 index b5c3e05..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/exp10.testcase +++ /dev/null @@ -1,8 +0,0 @@ -exp(1.0) # test of exp() function, with argument 1.0 -:memory: #use in-memory database -SELECT exp(1.0); -1 # rows (not including the header row) -1 # columns -exp(1.0)# header -2.71828182845905:8#result, with limited precision comparision - diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/expneg.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/expneg.testcase deleted file mode 100644 index 6983762..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/expneg.testcase +++ /dev/null @@ -1,7 +0,0 @@ -exp-neg # test of exp() function, with negative -:memory: #use in-memory database -SELECT exp(-1.0); -1 # rows (not including the header row) -1 # columns -exp(-1.0)# header -0.36787944:8 diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/exptext.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/exptext.testcase deleted file mode 100644 index 64290d1..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/exptext.testcase +++ /dev/null @@ -1,8 +0,0 @@ -exp-text # test of exp() function, with text argument -:memory: #use in-memory database -SELECT exp("hello world"); -1 # rows (not including the header row) -1 # columns -exp("hello world") # header -(NULL) #result - diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/floor32.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/floor32.testcase deleted file mode 100644 index 6c48125..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/floor32.testcase +++ /dev/null @@ -1,7 +0,0 @@ -floor(3.2) # you can use the SQL if you're not feeling imaginative. -:memory: -SELECT floor(3.2); -1 # rows -1 # columns -floor(3.2) # this is the header row -3.0 # this is really the result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/floorint.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/floorint.testcase deleted file mode 100644 index b841b1a..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/floorint.testcase +++ /dev/null @@ -1,7 +0,0 @@ -floor(integer) # integer input - this is just the name remember -:memory: -SELECT floor(3); # the SQL to run -1 # rows -1 # columns -floor(3) # this is the header row -3.0 # this is really the result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/floornull.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/floornull.testcase deleted file mode 100644 index 0591ce7..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/floornull.testcase +++ /dev/null @@ -1,7 +0,0 @@ -floor(null) # text input, expecting null output -:memory: -SELECT floor("some text"); # the SQL to run -1 # rows -1 # columns -floor("some text") # this is the header row -(NULL) # this is really the result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log10-0.0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log10-0.0.testcase deleted file mode 100644 index e80eb3d..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/log10-0.0.testcase +++ /dev/null @@ -1,7 +0,0 @@ -log10(0.0) -:memory: #use in-memory database -SELECT log10(0.0); -1 # rows (not including the header row) -1 # columns -log10(0.0) # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log10-100.0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log10-100.0.testcase deleted file mode 100644 index b01b50c..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/log10-100.0.testcase +++ /dev/null @@ -1,7 +0,0 @@ -log10(100.0) -:memory: #use in-memory database -SELECT log10(100.0); -1 # rows (not including the header row) -1 # columns -log10(100.0) # header -2.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log10-100.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log10-100.testcase deleted file mode 100644 index 703abb0..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/log10-100.testcase +++ /dev/null @@ -1,7 +0,0 @@ -log10(100) -:memory: #use in-memory database -SELECT log10(100); -1 # rows (not including the header row) -1 # columns -log10(100) # header -2.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log10-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log10-text.testcase deleted file mode 100644 index f437a08..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/log10-text.testcase +++ /dev/null @@ -1,7 +0,0 @@ -log10(text) -:memory: #use in-memory database -SELECT log10("text"); -1 # rows (not including the header row) -1 # columns -log10("text") # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log2-0.0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log2-0.0.testcase deleted file mode 100644 index 84f4d57..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/log2-0.0.testcase +++ /dev/null @@ -1,7 +0,0 @@ -log2(0.0) -:memory: #use in-memory database -SELECT log2(0.0); -1 # rows (not including the header row) -1 # columns -log2(0.0) # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log2-0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log2-0.testcase deleted file mode 100644 index d063948..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/log2-0.testcase +++ /dev/null @@ -1,7 +0,0 @@ -log2(0) -:memory: #use in-memory database -SELECT log2(0); -1 # rows (not including the header row) -1 # columns -log2(0) # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log2-4.0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log2-4.0.testcase deleted file mode 100644 index c4e9e1b..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/log2-4.0.testcase +++ /dev/null @@ -1,7 +0,0 @@ -log2(4.0) -:memory: #use in-memory database -SELECT log2(4.0); -1 # rows (not including the header row) -1 # columns -log2(4.0) # header -2.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log2-4.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log2-4.testcase deleted file mode 100644 index e2c82b0..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/log2-4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -log2(4) -:memory: #use in-memory database -SELECT log2(4); -1 # rows (not including the header row) -1 # columns -log2(4) # header -2.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log2-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log2-text.testcase deleted file mode 100644 index fb342de..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/log2-text.testcase +++ /dev/null @@ -1,7 +0,0 @@ -log2(text) -:memory: #use in-memory database -SELECT log2("text"); -1 # rows (not including the header row) -1 # columns -log2("text") # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn-text.testcase deleted file mode 100644 index 8d7382e..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/logn-text.testcase +++ /dev/null @@ -1,7 +0,0 @@ -logn(text) -:memory: #use in-memory database -SELECT log("text"); -1 # rows (not including the header row) -1 # columns -log("text") # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn0.testcase deleted file mode 100644 index 77256ae..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/logn0.testcase +++ /dev/null @@ -1,7 +0,0 @@ -log(0) -:memory: #use in-memory database -SELECT log(0); -1 # rows (not including the header row) -1 # columns -log(0) # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn00.testcase deleted file mode 100644 index 037fc80..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/logn00.testcase +++ /dev/null @@ -1,7 +0,0 @@ -log(0.0) -:memory: #use in-memory database -SELECT log(0.0); -1 # rows (not including the header row) -1 # columns -log(0.0) # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn1.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn1.testcase deleted file mode 100644 index f01e8bd..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/logn1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -logn(1) -:memory: #use in-memory database -SELECT log(1); -1 # rows (not including the header row) -1 # columns -log(1) # header -0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn10.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn10.testcase deleted file mode 100644 index 805e7ec..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/logn10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -logn(1.0) -:memory: #use in-memory database -SELECT log(1.0); -1 # rows (not including the header row) -1 # columns -log(1.0) # header -0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-01.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-01.testcase deleted file mode 100644 index 944c56a..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-01.testcase +++ /dev/null @@ -1,7 +0,0 @@ -logn(-0.1, 2) -:memory: #use in-memory database -SELECT log(-0.1, 2); -1 # rows (not including the header row) -1 # columns -log(-0.1, 2) # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-02.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-02.testcase deleted file mode 100644 index 5906ab6..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-02.testcase +++ /dev/null @@ -1,7 +0,0 @@ -logn(1.0, 1.0) -:memory: #use in-memory database -SELECT log(1.0, 1.0); -1 # rows (not including the header row) -1 # columns -log(1.0, 1.0) # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-2.2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-2.2.testcase deleted file mode 100644 index 55f3014..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-2.2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -logn(2.0, 2.0) -:memory: #use in-memory database -SELECT log(2.0, 2.0); -1 # rows (not including the header row) -1 # columns -log(2.0, 2.0) # header -1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2.testcase deleted file mode 100644 index 6b81202..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -logn(4.0, 2.0) -:memory: #use in-memory database -SELECT log(4.0, 2.0); -1 # rows (not including the header row) -1 # columns -log(4.0, 2.0) # header -2.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2int.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2int.testcase deleted file mode 100644 index 1c13a40..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2int.testcase +++ /dev/null @@ -1,7 +0,0 @@ -logn(4, 2) -:memory: #use in-memory database -SELECT log(4, 2); -1 # rows (not including the header row) -1 # columns -log(4, 2) # header -2.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text.testcase deleted file mode 100644 index 27420d9..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text.testcase +++ /dev/null @@ -1,7 +0,0 @@ -logn(text, double) -:memory: #use in-memory database -SELECT log("text", 0.0); -1 # rows (not including the header row) -1 # columns -log("text", 0.0) # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text2.testcase deleted file mode 100644 index c9b7d21..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -logn(text, double) -:memory: #use in-memory database -SELECT log("text", 0); -1 # rows (not including the header row) -1 # columns -log("text", 0) # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text3.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text3.testcase deleted file mode 100644 index 4576048..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -logn(text, double) -:memory: #use in-memory database -SELECT log(1, "text"); -1 # rows (not including the header row) -1 # columns -log(1, "text") # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text4.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text4.testcase deleted file mode 100644 index b4b102b..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -logn(text, double) -:memory: #use in-memory database -SELECT log(1.0, "text"); -1 # rows (not including the header row) -1 # columns -log(1.0, "text") # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pi.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pi.testcase deleted file mode 100644 index d641d6d..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/pi.testcase +++ /dev/null @@ -1,7 +0,0 @@ -pi -:memory: # use in-memory database -SELECT pi(); -1 # rows (not including the header row) -1 # columns -pi() # header -3.141592653589:14 # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg1.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg1.testcase deleted file mode 100644 index 919ff56..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -pow(0.0, "test") # test of pow() function with bad arguments -:memory: #use in-memory database -SELECT pow(0.0, "test"); -1 # rows (not including the header row) -1 # columns -pow(0.0, "test") # header -(NULL) # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg2.testcase deleted file mode 100644 index fcfbc8d..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -pow("test", 1) # test of pow() function with bad arguments -:memory: #use in-memory database -SELECT pow("test", 1); -1 # rows (not including the header row) -1 # columns -pow("test", 1) # header -(NULL) # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow-edom.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow-edom.testcase deleted file mode 100644 index 0a0e3c7..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/pow-edom.testcase +++ /dev/null @@ -1,7 +0,0 @@ -pow(-2.1, 3.6) # test of pow() function -:memory: #use in-memory database -SELECT pow(-2.1, 3.6); -1 # rows (not including the header row) -1 # columns -pow(-2.1, 3.6) # header -(NULL) # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow-fp.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow-fp.testcase deleted file mode 100644 index 0e532a3..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/pow-fp.testcase +++ /dev/null @@ -1,7 +0,0 @@ -pow(0, -3.6) # test of pow() function -:memory: #use in-memory database -SELECT pow(0, -3.6); -1 # rows (not including the header row) -1 # columns -pow(0, -3.6) # header -(NULL) # result - its basically division by zero. diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow00-1.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow00-1.testcase deleted file mode 100644 index 24ade7c..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/pow00-1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -pow(0.0, 0) # test of pow() function -:memory: #use in-memory database -SELECT pow(0.0, 0); -1 # rows (not including the header row) -1 # columns -pow(0.0, 0) # header -1.0 # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow00-2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow00-2.testcase deleted file mode 100644 index b7ee8f7..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/pow00-2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -pow(0, 0.0) # test of pow() function -:memory: #use in-memory database -SELECT pow(0, 0.0); -1 # rows (not including the header row) -1 # columns -pow(0, 0.0) # header -1.0 # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow00.testcase deleted file mode 100644 index e535008..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/pow00.testcase +++ /dev/null @@ -1,7 +0,0 @@ -pow(0, 0) # test of pow() function -:memory: #use in-memory database -SELECT pow(0, 0); -1 # rows (not including the header row) -1 # columns -pow(0, 0) # header -1.0 # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow00double.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow00double.testcase deleted file mode 100644 index d7eadc6..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/pow00double.testcase +++ /dev/null @@ -1,7 +0,0 @@ -pow(0.0, 0.0) # test of pow() function -:memory: #use in-memory database -SELECT pow(0.0, 0.0); -1 # rows (not including the header row) -1 # columns -pow(0.0, 0.0) # header -1.0 # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/rad-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/rad-text.testcase deleted file mode 100644 index e71b308..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/rad-text.testcase +++ /dev/null @@ -1,7 +0,0 @@ -radians(text) # test of radians() -:memory: #use in-memory database -SELECT radians("text"); -1 # rows (not including the header row) -1 # columns -radians("text") # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/rad0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/rad0.testcase deleted file mode 100644 index ec08505..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/rad0.testcase +++ /dev/null @@ -1,7 +0,0 @@ -radians(0) # test of radians() -:memory: #use in-memory database -SELECT radians(0); -1 # rows (not including the header row) -1 # columns -radians(0) # header -0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/radpi.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/radpi.testcase deleted file mode 100644 index ee265a4..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/radpi.testcase +++ /dev/null @@ -1,7 +0,0 @@ -radians(pi()) # test of radians() -:memory: #use in-memory database -SELECT radians(180.0); -1 # rows (not including the header row) -1 # columns -radians(180.0) # header -3.1415:6 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/round-29.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/round-29.testcase deleted file mode 100644 index bfdd3be..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/round-29.testcase +++ /dev/null @@ -1,7 +0,0 @@ -round(-2.9) -:memory: -SELECT round(-2.9); # the SQL to run -1 # rows -1 # column -round(-2.9) # this is the header row --3.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/round-31.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/round-31.testcase deleted file mode 100644 index 9960065..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/round-31.testcase +++ /dev/null @@ -1,7 +0,0 @@ -round(-3.1) -:memory: -SELECT round(-3.1); # the SQL to run -1 # rows -1 # column -round(-3.1) # this is the header row --3.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/round-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/round-text.testcase deleted file mode 100644 index 9962b01..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/round-text.testcase +++ /dev/null @@ -1,7 +0,0 @@ -round(text) -:memory: -SELECT round("text"); # the SQL to run -1 # rows -1 # column -round("text") # this is the header row -(NULL) # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/round0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/round0.testcase deleted file mode 100644 index bfe58db..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/round0.testcase +++ /dev/null @@ -1,7 +0,0 @@ -round(0) -:memory: -SELECT round(0); # the SQL to run -1 # rows -1 # column -round(0) # this is the header row -0.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/round29.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/round29.testcase deleted file mode 100644 index 8c060bb..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/round29.testcase +++ /dev/null @@ -1,7 +0,0 @@ -round(2.9) -:memory: -SELECT round(2.9); # the SQL to run -1 # rows -1 # column -round(2.9) # this is the header row -3.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/round3.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/round3.testcase deleted file mode 100644 index f6e8eb5..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/round3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -round(3) -:memory: -SELECT round(3); # the SQL to run -1 # rows -1 # column -round(3) # this is the header row -3.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/round30.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/round30.testcase deleted file mode 100644 index 2bdad47..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/round30.testcase +++ /dev/null @@ -1,7 +0,0 @@ -round(3.0) -:memory: -SELECT round(3.0); # the SQL to run -1 # rows -1 # column -round(3.0) # this is the header row -3.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/round31.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/round31.testcase deleted file mode 100644 index 561d151..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/round31.testcase +++ /dev/null @@ -1,7 +0,0 @@ -round(3.1) -:memory: -SELECT round(3.1); # the SQL to run -1 # rows -1 # column -round(3.1) # this is the header row -3.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sign0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sign0.testcase deleted file mode 100644 index 4603047..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sign0.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sign0 -:memory: -SELECT sign(0); # the SQL to run -1 # rows -1 # column -sign(0) # this is the header row -0.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sign00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sign00.testcase deleted file mode 100644 index 6916676..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sign00.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sign00 -:memory: -SELECT sign(0.0); # the SQL to run -1 # rows -1 # column -sign(0.0) # this is the header row -0.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sign01.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sign01.testcase deleted file mode 100644 index c371cb3..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sign01.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sign01 -:memory: -SELECT sign(0.1); # the SQL to run -1 # rows -1 # column -sign(0.1) # this is the header row -1.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sign10.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sign10.testcase deleted file mode 100644 index 78a4c48..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sign10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sign10 -:memory: -SELECT sign(1.0); # the SQL to run -1 # rows -1 # column -sign(1.0) # this is the header row -1.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/signeg.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/signeg.testcase deleted file mode 100644 index 8f7d982..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/signeg.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sign-neg -:memory: -SELECT sign(-1.0); # the SQL to run -1 # rows -1 # column -sign(-1.0) # this is the header row --1.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/signeg2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/signeg2.testcase deleted file mode 100644 index a41b35f..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/signeg2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sign-neg2 -:memory: -SELECT sign(-2.0); # the SQL to run -1 # rows -1 # column -sign(-2.0) # this is the header row --1.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/signeg2int.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/signeg2int.testcase deleted file mode 100644 index f644772..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/signeg2int.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sign-neg2int -:memory: -SELECT sign(-2); # the SQL to run -1 # rows -1 # column -sign(-2) # this is the header row --1.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/signtext.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/signtext.testcase deleted file mode 100644 index 0668d73..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/signtext.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sign-text -:memory: -SELECT sign("text"); # the SQL to run -1 # rows -1 # column -sign("text") # this is the header row -(NULL) # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sin-pi.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sin-pi.testcase deleted file mode 100644 index 27784a8..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sin-pi.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sin(-pi) -:memory: #use in-memory database -SELECT 1 + sin(-pi()); -1 # rows (not including the header row) -1 # columns -1 + sin(-pi()) # header -1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sin-pi2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sin-pi2.testcase deleted file mode 100644 index 310ef51..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sin-pi2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sin(-pi/2) -:memory: #use in-memory database -SELECT sin(-pi()/2); -1 # rows (not including the header row) -1 # columns -sin(-pi()/2) # header --1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sin-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sin-text.testcase deleted file mode 100644 index 12b274b..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sin-text.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sin(text) -:memory: #use in-memory database -SELECT sin("text"); -1 # rows (not including the header row) -1 # columns -sin("text") # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sin0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sin0.testcase deleted file mode 100644 index 5fc40f4..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sin0.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sin(0) -:memory: #use in-memory database -SELECT sin(0); -1 # rows (not including the header row) -1 # columns -sin(0) # header -0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sin00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sin00.testcase deleted file mode 100644 index 1c00940..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sin00.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sin(0.0) -:memory: #use in-memory database -SELECT sin(0.0); -1 # rows (not including the header row) -1 # columns -sin(0.0) # header -0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sinpi.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sinpi.testcase deleted file mode 100644 index 9b8f8c3..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sinpi.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sin(pi) -:memory: #use in-memory database -SELECT 1 + sin(pi()); -1 # rows (not including the header row) -1 # columns -1 + sin(pi()) # header -1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sinpi2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sinpi2.testcase deleted file mode 100644 index b11de6f..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sinpi2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sin(pi/2) -:memory: #use in-memory database -SELECT sin(pi()/2); -1 # rows (not including the header row) -1 # columns -sin(pi()/2) # header -1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-1.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-1.testcase deleted file mode 100644 index 547f894..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sqrt(-1) -:memory: -SELECT sqrt(-1); # the SQL to run -1 # rows -1 # column -sqrt(-1) # this is the header row -(NULL) # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-10.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-10.testcase deleted file mode 100644 index 6308f3f..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sqrt(-1.0) -:memory: -SELECT sqrt(-1.0); # the SQL to run -1 # rows -1 # column -sqrt(-1.0) # this is the header row -(NULL) # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-64.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-64.testcase deleted file mode 100644 index 9497eed..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-64.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sqrt(64) -:memory: -SELECT sqrt(64); # the SQL to run -1 # rows -1 # column -sqrt(64) # this is the header row -8.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-640.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-640.testcase deleted file mode 100644 index ad69f51..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-640.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sqrt(64.0) -:memory: -SELECT sqrt(64.0); # the SQL to run -1 # rows -1 # column -sqrt(64.0) # this is the header row -8.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-text.testcase deleted file mode 100644 index 23d7beb..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-text.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sqrt(text) -:memory: -SELECT sqrt("text"); # the SQL to run -1 # rows -1 # column -sqrt("text") # this is the header row -(NULL) # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt0.testcase deleted file mode 100644 index 23d7beb..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt0.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sqrt(text) -:memory: -SELECT sqrt("text"); # the SQL to run -1 # rows -1 # column -sqrt("text") # this is the header row -(NULL) # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt00.testcase deleted file mode 100644 index 9f9dbc5..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt00.testcase +++ /dev/null @@ -1,7 +0,0 @@ -sqrt(0) -:memory: -SELECT sqrt(0); # the SQL to run -1 # rows -1 # column -sqrt(0) # this is the header row -0.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/stddev.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/stddev.testcase deleted file mode 100644 index cbaa13b..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/stddev.testcase +++ /dev/null @@ -1,21 +0,0 @@ -stddev -sql_stmt_tests/testdb1.sqlite -SELECT stddev_pop(a), stddev_pop(b), stddev_pop(nulls), stddev_pop(blobs), stddev_samp(a), stddev_samp(b), stddev_samp(blobs), stddev_samp(nulls) from data1; -1 # rows (not including the header row) -8 # columns -stddev_pop(a) -stddev_pop(b) -stddev_pop(nulls) -stddev_pop(blobs) -stddev_samp(a) -stddev_samp(b) -stddev_samp(blobs) -stddev_samp(nulls) -10.2211654:8 -12.252709:8 -(NULL) -(NULL) -11.1967257:8 -13.422171:8 -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/tan-pi.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/tan-pi.testcase deleted file mode 100644 index 145335b..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/tan-pi.testcase +++ /dev/null @@ -1,7 +0,0 @@ -tan(-pi) -:memory: #use in-memory database -SELECT 1 + tan(-pi()); -1 # rows (not including the header row) -1 # columns -1 + tan(-pi()) # header -1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/tan-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/tan-text.testcase deleted file mode 100644 index 0c437d6..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/tan-text.testcase +++ /dev/null @@ -1,7 +0,0 @@ -tan(text) -:memory: #use in-memory database -SELECT tan("text"); -1 # rows (not including the header row) -1 # columns -tan("text") # header -(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/tan0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/tan0.testcase deleted file mode 100644 index 917a4c2..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/tan0.testcase +++ /dev/null @@ -1,7 +0,0 @@ -tan(0) -:memory: #use in-memory database -SELECT tan(0); -1 # rows (not including the header row) -1 # columns -tan(0) # header -0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/tan00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/tan00.testcase deleted file mode 100644 index ae17b9c..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/tan00.testcase +++ /dev/null @@ -1,7 +0,0 @@ -tan(0.0) -:memory: #use in-memory database -SELECT tan(0.0); -1 # rows (not including the header row) -1 # columns -tan(0.0) # header -0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/tanpi.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/tanpi.testcase deleted file mode 100644 index be34bde..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/tanpi.testcase +++ /dev/null @@ -1,7 +0,0 @@ -tan(pi) -:memory: #use in-memory database -SELECT 1 + tan(pi()); -1 # rows (not including the header row) -1 # columns -1 + tan(pi()) # header -1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/tanpi4.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/tanpi4.testcase deleted file mode 100644 index 11c98d2..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/tanpi4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -tan(pi/4) -:memory: #use in-memory database -SELECT tan(pi()/4); -1 # rows (not including the header row) -1 # columns -tan(pi()/4) # header -1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/variance.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/variance.testcase deleted file mode 100644 index 33f9ae2..0000000 --- a/src/spatialite/test/sql_stmt_mathsql_tests/variance.testcase +++ /dev/null @@ -1,21 +0,0 @@ -variance -sql_stmt_tests/testdb1.sqlite -SELECT var_pop(a), var_pop(b), var_pop(nulls), var_pop(blobs), var_samp(a), var_samp(b), var_samp(blobs), var_samp(nulls) from data1; -1 # rows (not including the header row) -8 # columns -var_pop(a) -var_pop(b) -var_pop(nulls) -var_pop(blobs) -var_samp(a) -var_samp(b) -var_samp(blobs) -var_samp(nulls) -104.472222222222:10 -150.12888888888:10 -(NULL) -(NULL) -125.36666666666:10 -180.15466666666:10 -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml1.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml1.testcase deleted file mode 100644 index 2197d26..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/askml1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -askml - 2 arg bad precision (error) -:memory: #use in-memory database -SELECT askml(GeomFromText("Point(1 2)", 4326), "hello") -1 # rows (not including the header row) -1 # columns -askml(GeomFromText("Point(1 2)", 4326), "hello") -(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml10.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml10.testcase deleted file mode 100644 index 31671ba..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/askml10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -askml - 4 arg int descriptions excessive precision -:memory: #use in-memory database -SELECT askml(2, 3, GeomFromText("Point(1 2)", 4326), 44) -1 # rows (not including the header row) -1 # columns -askml(2, 3, GeomFromText("Point(1 2)", 4326), 44) -231,2 diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml11.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml11.testcase deleted file mode 100644 index 46f8317..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/askml11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -askml - 2 arg int descriptions excessive precision -:memory: #use in-memory database -SELECT askml(GeomFromText("Point(1 2)", 4326), 44) -1 # rows (not including the header row) -1 # columns -askml(GeomFromText("Point(1 2)", 4326), 44) -1,2 diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml2.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml2.testcase deleted file mode 100644 index 7a59fb9..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/askml2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -askml - 2 arg weird SRID (error) -:memory: #use in-memory database -SELECT askml(GeomFromText("Point(1 2)", 9999989), 4) -1 # rows (not including the header row) -1 # columns -askml(GeomFromText("Point(1 2)", 9999989), 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml3.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml3.testcase deleted file mode 100644 index 7184d3f..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/askml3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -askml - 4 arg int descriptions -:memory: #use in-memory database -SELECT askml(2, 3, GeomFromText("Point(1 2)", 4326), 4) -1 # rows (not including the header row) -1 # columns -askml(2, 3, GeomFromText("Point(1 2)", 4326), 4) -231,2 diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml4.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml4.testcase deleted file mode 100644 index dd5d254..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/askml4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -askml - 4 arg float descriptions -:memory: #use in-memory database -SELECT askml(2.5, 3.2, GeomFromText("Point(1 2)", 4326), 4) -1 # rows (not including the header row) -1 # columns -askml(2.5, 3.2, GeomFromText("Point(1 2)", 4326), 4) -2.5000003.2000001,2 - diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml5.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml5.testcase deleted file mode 100644 index fd48289..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/askml5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -askml - 4 arg blob descriptions -:memory: #use in-memory database -SELECT askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 4326), 4) -1 # rows (not including the header row) -1 # columns -askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 4326), 4) -BLOBBLOB1,2 - diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml6.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml6.testcase deleted file mode 100644 index 6ba20e8..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/askml6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -askml - 4 arg blob descriptions, bad precision (error) -:memory: #use in-memory database -SELECT askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 4326), 4.2) -1 # rows (not including the header row) -1 # columns -askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 4326), 4.2) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml7.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml7.testcase deleted file mode 100644 index b4b9ec9..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/askml7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -askml - 4 arg blob descriptions, weird SRID (error) -:memory: #use in-memory database -SELECT askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 9999989), 4) -1 # rows (not including the header row) -1 # columns -askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 9999989), 4) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml8.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml8.testcase deleted file mode 100644 index b53d017..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/askml8.testcase +++ /dev/null @@ -1,8 +0,0 @@ -askml - 4 arg blob descriptions, GDA94 -:memory: #use in-memory database -SELECT askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 4283), 4) -1 # rows (not including the header row) -1 # columns -askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 4283), 4) -BLOBBLOB1,2 - diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml9.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml9.testcase deleted file mode 100644 index 811da35..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/askml9.testcase +++ /dev/null @@ -1,8 +0,0 @@ -askml - 4 arg null descriptions -:memory: #use in-memory database -SELECT askml(null, null, GeomFromText("Point(1 2)", 4326), 4) -1 # rows (not including the header row) -1 # columns -askml(null, null, GeomFromText("Point(1 2)", 4326), 4) -NULLNULL1,2 - diff --git a/src/spatialite/test/sql_stmt_proj_tests/fromgml42.testcase b/src/spatialite/test/sql_stmt_proj_tests/fromgml42.testcase deleted file mode 100644 index 9a746f4..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/fromgml42.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - multipointZ, multiple SRID, no namespace -:memory: #use in-memory database -SELECT AsText(GeomFromGml('1,2,3.22,4,3.2')) -1 # rows (not including the header row) -1 # columns -AsText(GeomFromGml('1,2,3.22,4,3.2')):0 -MULTIPOINT Z(1 2 3.2, -4.356405 0.000738 79.631063) diff --git a/src/spatialite/test/sql_stmt_proj_tests/output1.testcase b/src/spatialite/test/sql_stmt_proj_tests/output1.testcase deleted file mode 100644 index 9f4abd9..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output1.testcase +++ /dev/null @@ -1,18 +0,0 @@ -Output format tests - POLYGON, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT GeomFromEWkt("SRID=4326;POLYGON((0 0, 1 1, 0 2, -1 1, 0 0))") as geom) dummy; -1 # rows (not including the header row) -6 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -POLYGON((0 0, 1 1, 0 2, -1 1, 0 0)) -0,0 1,1 0,2 -1,1 0,0 -0,0 1,1 0,2 -1,1 0,0:0 -{"type":"Polygon","coordinates":[[[0,0],[1,1],[0,2],[-1,1],[0,0]]]}:0 -POLYGON((0 0,1 1,0 2,-1 1,0 0)) -SRID=4326;POLYGON((0 0,1 1,0 2,-1 1,0 0)) - diff --git a/src/spatialite/test/sql_stmt_proj_tests/output10.testcase b/src/spatialite/test/sql_stmt_proj_tests/output10.testcase deleted file mode 100644 index 70dca37..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output10.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - POINT via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;POINT(-1 1)") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -POINT(-1 1) --1,1 --1,1:0 -{"type":"Point","coordinates":[-1,1]}:0 -POINT(-1 1) -SRID=4326;POINT(-1 1) -535249443D343332363B303130313030303030303030303030303030303030304630424630303030303030303030303046303346 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output11.testcase b/src/spatialite/test/sql_stmt_proj_tests/output11.testcase deleted file mode 100644 index 8733c3c..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output11.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - POINTZ via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;POINT(-1 1 2.3)") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(GeomFromWkb(AsBinary(geom))) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -POINT Z(-1 1 2.3) --1,1,2.3 --1,1,2.3:0 -{"type":"Point","coordinates":[-1,1,2.3]}:0 -POINT(-1 1) -SRID=4326;POINT(-1 1 2.3) -535249443D343332363B30313031303030303830303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output12.testcase b/src/spatialite/test/sql_stmt_proj_tests/output12.testcase deleted file mode 100644 index 044e837..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output12.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - POINTM via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;POINTM(-1 1 2.3)") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(GeomFromWkb(AsBinary(geom))) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -POINT M(-1 1 2.3) --1,1 --1,1:0 -{"type":"Point","coordinates":[-1,1]}:0 -POINT(-1 1) -SRID=4326;POINTM(-1 1 2.3) -535249443D343332363B30313031303030303430303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output13.testcase b/src/spatialite/test/sql_stmt_proj_tests/output13.testcase deleted file mode 100644 index 959886e..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output13.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - POINTZM via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;POINT(-1 1 2.3 4)") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(GeomFromWkb(AsBinary(geom))) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -POINT ZM(-1 1 2.3 4) --1,1,2.3 --1,1,2.3:0 -{"type":"Point","coordinates":[-1,1,2.3]}:0 -POINT(-1 1) -SRID=4326;POINT(-1 1 2.3 4) -535249443D343332363B3031303130303030433030303030303030303030303046304246303030303030303030303030463033463636363636363636363636363032343030303030303030303030303031303430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output14.testcase b/src/spatialite/test/sql_stmt_proj_tests/output14.testcase deleted file mode 100644 index 03a3e25..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output14.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - LINESTRINGZ via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;LINESTRING(-1 1 2.3, 1 -2 4.6)") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(GeomFromWkb(AsBinary(geom))) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -LINESTRING Z(-1 1 2.3, 1 -2 4.6) --1,1,2.3 1,-2,4.6 --1,1,2.3 1,-2,4.6:0 -{"type":"LineString","coordinates":[[-1,1,2.3],[1,-2,4.6]]}:0 -LINESTRING(-1 1,1 -2) -SRID=4326;LINESTRING(-1 1 2.3,1 -2 4.6) -535249443D343332363B303130323030303038303032303030303030303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430303030303030303030303030463033463030303030303030303030303030433036363636363636363636363631323430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output15.testcase b/src/spatialite/test/sql_stmt_proj_tests/output15.testcase deleted file mode 100644 index 300e336..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output15.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - LINESTRINGM via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;LINESTRINGM(-1 1 2.3, 1 -2 4.6)") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(GeomFromWkb(AsBinary(geom))) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -LINESTRING M(-1 1 2.3, 1 -2 4.6) --1,1 1,-2 --1,1 1,-2:0 -{"type":"LineString","coordinates":[[-1,1],[1,-2]]}:0 -LINESTRING(-1 1,1 -2) -SRID=4326;LINESTRINGM(-1 1 2.3,1 -2 4.6) -535249443D343332363B303130323030303034303032303030303030303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430303030303030303030303030463033463030303030303030303030303030433036363636363636363636363631323430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output16.testcase b/src/spatialite/test/sql_stmt_proj_tests/output16.testcase deleted file mode 100644 index 7a3f52f..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output16.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - LINESTRINGZM via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;LINESTRING(-1 1 2.3 -1, 1 -2 4.6 -6)") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(GeomFromWkb(AsBinary(geom))) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -LINESTRING ZM(-1 1 2.3 -1, 1 -2 4.6 -6) --1,1,2.3 1,-2,4.6 --1,1,2.3 1,-2,4.6:0 -{"type":"LineString","coordinates":[[-1,1,2.3],[1,-2,4.6]]}:0 -LINESTRING(-1 1,1 -2) -SRID=4326;LINESTRING(-1 1 2.3 -1,1 -2 4.6 -6):0 -535249443D343332363B3031303230303030433030323030303030303030303030303030303030304630424630303030303030303030303046303346363636363636363636363636303234303030303030303030303030304630424630303030303030303030303046303346303030303030303030303030303043303636363636363636363636363132343030303030303030303030303031384330 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output17.testcase b/src/spatialite/test/sql_stmt_proj_tests/output17.testcase deleted file mode 100644 index 565574d..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output17.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - POLYGONZ via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;POLYGON((-10 -10 1, -10 10 2, 10 10 3, 10 -10 4, -10 -10 1),(-1 1 2.3, 1 -2 4.6, 0 -2 1.6, -1 1 2.3))") as geom) dummy -1 # rows (not including the header row) -7 # columns -AsText(GeomFromWkb(AsBinary(geom))) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -POLYGON Z((-10 -10 1, -10 10 2, 10 10 3, 10 -10 4, -10 -10 1), (-1 1 2.3, 1 -2 4.6, 0 -2 1.6, -1 1 2.3)) --10,-10,1 -10,10,2 10,10,3 10,-10,4 -10,-10,1-1,1,2.3 1,-2,4.6 0,-2,1.6 -1,1,2.3 --10,-10,1 -10,10,2 10,10,3 10,-10,4 -10,-10,1-1,1,2.3 1,-2,4.6 0,-2,1.6 -1,1,2.3:0 -{"type":"Polygon","coordinates":[[[-10,-10,1],[-10,10,2],[10,10,3],[10,-10,4],[-10,-10,1]],[[-1,1,2.3],[1,-2,4.6],[0,-2,1.6],[-1,1,2.3]]]}:0 -POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-1 1,1 -2,0 -2,-1 1)) -SRID=4326;POLYGON((-10 -10 1,-10 10 2,10 10 3,10 -10 4,-10 -10 1),(-1 1 2.3,1 -2 4.6,0 -2 1.6,-1 1 2.3)) -535249443D343332363B30313033303030303830303230303030303030353030303030303030303030303030303030303234433030303030303030303030303032344330303030303030303030303030463033463030303030303030303030303234433030303030303030303030303032343430303030303030303030303030303034303030303030303030303030303234343030303030303030303030303032343430303030303030303030303030303834303030303030303030303030303234343030303030303030303030303032344330303030303030303030303030313034303030303030303030303030303234433030303030303030303030303032344330303030303030303030303030463033463034303030303030303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430303030303030303030303030463033463030303030303030303030303030433036363636363636363636363631323430303030303030303030303030303030303030303030303030303030303030433039413939393939393939393946393346303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output18.testcase b/src/spatialite/test/sql_stmt_proj_tests/output18.testcase deleted file mode 100644 index f9d888b..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output18.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - POLYGONM via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;POLYGONM((-10 -10 1, -10 10 2, 10 10 3, 10 -10 4, -10 -10 1),(-1 1 2.3, 1 -2 4.6, 0 -2 1.6, -1 1 2.3))") as geom) dummy -1 # rows (not including the header row) -7 # columns -AsText(GeomFromWkb(AsBinary(geom))) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -POLYGON M((-10 -10 1, -10 10 2, 10 10 3, 10 -10 4, -10 -10 1), (-1 1 2.3, 1 -2 4.6, 0 -2 1.6, -1 1 2.3)) --10,-10 -10,10 10,10 10,-10 -10,-10-1,1 1,-2 0,-2 -1,1 --10,-10 -10,10 10,10 10,-10 -10,-10-1,1 1,-2 0,-2 -1,1:0 -{"type":"Polygon","coordinates":[[[-10,-10],[-10,10],[10,10],[10,-10],[-10,-10]],[[-1,1],[1,-2],[0,-2],[-1,1]]]}:0 -POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-1 1,1 -2,0 -2,-1 1)):0 -SRID=4326;POLYGONM((-10 -10 1,-10 10 2,10 10 3,10 -10 4,-10 -10 1),(-1 1 2.3,1 -2 4.6,0 -2 1.6,-1 1 2.3)) -535249443D343332363B30313033303030303430303230303030303030353030303030303030303030303030303030303234433030303030303030303030303032344330303030303030303030303030463033463030303030303030303030303234433030303030303030303030303032343430303030303030303030303030303034303030303030303030303030303234343030303030303030303030303032343430303030303030303030303030303834303030303030303030303030303234343030303030303030303030303032344330303030303030303030303030313034303030303030303030303030303234433030303030303030303030303032344330303030303030303030303030463033463034303030303030303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430303030303030303030303030463033463030303030303030303030303030433036363636363636363636363631323430303030303030303030303030303030303030303030303030303030303030433039413939393939393939393946393346303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output19.testcase b/src/spatialite/test/sql_stmt_proj_tests/output19.testcase deleted file mode 100644 index 4ed52b5..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output19.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - POLYGONZM via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;POLYGON((-10 -10 1 4, -10 10 2 5, 10 10 3 6.8, 10 -10 4 5, -10 -10 1 4),(-1 1 2.3 1, 1 -2 4.6 2, 0 -2 1.6 3.333, -1 1 2.3 1))") as geom) dummy -1 # rows (not including the header row) -7 # columns -AsText(GeomFromWkb(AsBinary(geom))) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -POLYGON ZM((-10 -10 1 4, -10 10 2 5, 10 10 3 6.8, 10 -10 4 5, -10 -10 1 4), (-1 1 2.3 1, 1 -2 4.6 2, 0 -2 1.6 3.333, -1 1 2.3 1)) --10,-10,1 -10,10,2 10,10,3 10,-10,4 -10,-10,1-1,1,2.3 1,-2,4.6 0,-2,1.6 -1,1,2.3 --10,-10,1 -10,10,2 10,10,3 10,-10,4 -10,-10,1-1,1,2.3 1,-2,4.6 0,-2,1.6 -1,1,2.3:0 -{"type":"Polygon","coordinates":[[[-10,-10,1],[-10,10,2],[10,10,3],[10,-10,4],[-10,-10,1]],[[-1,1,2.3],[1,-2,4.6],[0,-2,1.6],[-1,1,2.3]]]}:0 -POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-1 1,1 -2,0 -2,-1 1)) -SRID=4326;POLYGON((-10 -10 1 4,-10 10 2 5,10 10 3 6.8,10 -10 4 5,-10 -10 1 4),(-1 1 2.3 1,1 -2 4.6 2,0 -2 1.6 3.333,-1 1 2.3 1)) -535249443D343332363B30313033303030304330303230303030303030353030303030303030303030303030303030303234433030303030303030303030303032344330303030303030303030303030463033463030303030303030303030303130343030303030303030303030303032344330303030303030303030303030323434303030303030303030303030303030343030303030303030303030303031343430303030303030303030303030323434303030303030303030303030303234343030303030303030303030303030383430333333333333333333333333314234303030303030303030303030303234343030303030303030303030303032344330303030303030303030303030313034303030303030303030303030303134343030303030303030303030303032344330303030303030303030303030323443303030303030303030303030304630334630303030303030303030303031303430303430303030303030303030303030303030303046304246303030303030303030303030463033463636363636363636363636363032343030303030303030303030303046303346303030303030303030303030463033463030303030303030303030303030433036363636363636363636363631323430303030303030303030303030303034303030303030303030303030303030303030303030303030303030303030304330394139393939393939393939463933463434384236434537464241393041343030303030303030303030303046304246303030303030303030303030463033463636363636363636363636363032343030303030303030303030303046303346 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output2.testcase b/src/spatialite/test/sql_stmt_proj_tests/output2.testcase deleted file mode 100644 index bcdf4b1..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output2.testcase +++ /dev/null @@ -1,20 +0,0 @@ -Output format tests - POLYGON, no SRID -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsKML("myname", "mydesc", geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT GeomFromText("POLYGON((0 0, 1 1, 0 2, -1 1, 0 0))") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsKML("myname", "mydesc", geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -POLYGON((0 0, 1 1, 0 2, -1 1, 0 0)) -(NULL) -(NULL) -0,0 1,1 0,2 -1,1 0,0:0 # trailing ":0" required to avoid truncation !!! -{"type":"Polygon","coordinates":[[[0,0],[1,1],[0,2],[-1,1],[0,0]]]}:0 # trailing ":0" required to avoid truncation !!! -POLYGON((0 0,1 1,0 2,-1 1,0 0)) -SRID=0;POLYGON((0 0,1 1,0 2,-1 1,0 0)) - diff --git a/src/spatialite/test/sql_stmt_proj_tests/output20.testcase b/src/spatialite/test/sql_stmt_proj_tests/output20.testcase deleted file mode 100644 index a756b0f..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output20.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - MULTIPOINTZM via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOINT(-1 1 2.3 4,1 2 4.1 1.9)") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -MULTIPOINT ZM(-1 1 2.3 4, 1 2 4.1 1.9) --1,1,2.31,2,4.1 --1,1,2.31,2,4.1:0 -{"type":"MultiPoint","coordinates":[[-1,1,2.3],[1,2,4.1]]}:0 -MULTIPOINT(-1 1,1 2) -SRID=4326;MULTIPOINT(-1 1 2.3 4,1 2 4.1 1.9) -535249443D343332363B30313034303030304330303230303030303030313031303030304330303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430303030303030303030303030313034303031303130303030433030303030303030303030303046303346303030303030303030303030303034303636363636363636363636363130343036363636363636363636363646453346 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output21.testcase b/src/spatialite/test/sql_stmt_proj_tests/output21.testcase deleted file mode 100644 index ba7b063..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output21.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - MULTIPOINTZ via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOINT(-1 1 2.3,1 2 4.1)") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -MULTIPOINT Z(-1 1 2.3, 1 2 4.1) --1,1,2.31,2,4.1 --1,1,2.31,2,4.1:0 -{"type":"MultiPoint","coordinates":[[-1,1,2.3],[1,2,4.1]]}:0 -MULTIPOINT(-1 1,1 2) -SRID=4326;MULTIPOINT(-1 1 2.3,1 2 4.1) -535249443D343332363B3031303430303030383030323030303030303031303130303030383030303030303030303030303046304246303030303030303030303030463033463636363636363636363636363032343030313031303030303830303030303030303030303030463033463030303030303030303030303030343036363636363636363636363631303430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output22.testcase b/src/spatialite/test/sql_stmt_proj_tests/output22.testcase deleted file mode 100644 index a0f08ee..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output22.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - MULTIPOINTM via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOINTM(-1 1 2.3,1 2 4.1)") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -MULTIPOINT M(-1 1 2.3, 1 2 4.1) --1,11,2 --1,11,2:0 -{"type":"MultiPoint","coordinates":[[-1,1],[1,2]]}:0 -MULTIPOINT(-1 1,1 2) -SRID=4326;MULTIPOINTM(-1 1 2.3,1 2 4.1) -535249443D343332363B3031303430303030343030323030303030303031303130303030343030303030303030303030303046304246303030303030303030303030463033463636363636363636363636363032343030313031303030303430303030303030303030303030463033463030303030303030303030303030343036363636363636363636363631303430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output23.testcase b/src/spatialite/test/sql_stmt_proj_tests/output23.testcase deleted file mode 100644 index a3abfc7..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output23.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - MULTILINESTRING via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTILINESTRING((-1 1, 2 3, 4 1),(0 2, 2 0, 0 0, 1 1))") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -MULTILINESTRING((-1 1, 2 3, 4 1), (0 2, 2 0, 0 0, 1 1)) --1,1 2,3 4,10,2 2,0 0,0 1,1 --1,1 2,3 4,10,2 2,0 0,0 1,1:0 -{"type":"MultiLineString","coordinates":[[[-1,1],[2,3],[4,1]],[[0,2],[2,0],[0,0],[1,1]]]}:0 -MULTILINESTRING((-1 1,2 3,4 1),(0 2,2 0,0 0,1 1)) -SRID=4326;MULTILINESTRING((-1 1,2 3,4 1),(0 2,2 0,0 0,1 1)) -535249443D343332363B3031303530303030303030323030303030303031303230303030303030333030303030303030303030303030303030304630424630303030303030303030303046303346303030303030303030303030303034303030303030303030303030303038343030303030303030303030303031303430303030303030303030303030463033463031303230303030303030343030303030303030303030303030303030303030303030303030303030303030303030303430303030303030303030303030303034303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030304630334630303030303030303030303046303346 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_proj_tests/output24.testcase b/src/spatialite/test/sql_stmt_proj_tests/output24.testcase deleted file mode 100644 index 7850800..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output24.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - MULTILINESTRINGZ via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTILINESTRING((-1 1 9, 2 3 8.4, 4 1 9.4),(0 2 1, 2 0 1, 0 0 2, 1 1 3))") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -MULTILINESTRING Z((-1 1 9, 2 3 8.4, 4 1 9.4), (0 2 1, 2 0 1, 0 0 2, 1 1 3)) --1,1,9 2,3,8.4 4,1,9.40,2,1 2,0,1 0,0,2 1,1,3 --1,1,9 2,3,8.4 4,1,9.40,2,1 2,0,1 0,0,2 1,1,3:0 -{"type":"MultiLineString","coordinates":[[[-1,1,9],[2,3,8.4],[4,1,9.4]],[[0,2,1],[2,0,1],[0,0,2],[1,1,3]]]}:0 -MULTILINESTRING((-1 1,2 3,4 1),(0 2,2 0,0 0,1 1)) -SRID=4326;MULTILINESTRING((-1 1 9,2 3 8.4,4 1 9.4),(0 2 1,2 0 1,0 0 2,1 1 3)) -535249443D343332363B303130353030303038303032303030303030303130323030303038303033303030303030303030303030303030303030463042463030303030303030303030304630334630303030303030303030303032323430303030303030303030303030303034303030303030303030303030303038343043444343434343434343434332303430303030303030303030303030313034303030303030303030303030304630334643444343434343434343434332323430303130323030303038303034303030303030303030303030303030303030303030303030303030303030303030303030343030303030303030303030303046303346303030303030303030303030303034303030303030303030303030303030303030303030303030303030303046303346303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303430303030303030303030303030463033463030303030303030303030304630334630303030303030303030303030383430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output25.testcase b/src/spatialite/test/sql_stmt_proj_tests/output25.testcase deleted file mode 100644 index 3eec2f5..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output25.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - MULTILINESTRINGM via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTILINESTRINGM((-1 1 9, 2 3 8.4, 4 1 9.4),(0 2 1, 2 0 1, 0 0 2, 1 1 3))") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -MULTILINESTRING M((-1 1 9, 2 3 8.4, 4 1 9.4), (0 2 1, 2 0 1, 0 0 2, 1 1 3)) --1,1 2,3 4,10,2 2,0 0,0 1,1 --1,1 2,3 4,10,2 2,0 0,0 1,1:0 -{"type":"MultiLineString","coordinates":[[[-1,1],[2,3],[4,1]],[[0,2],[2,0],[0,0],[1,1]]]}:0 -MULTILINESTRING((-1 1,2 3,4 1),(0 2,2 0,0 0,1 1)) -SRID=4326;MULTILINESTRINGM((-1 1 9,2 3 8.4,4 1 9.4),(0 2 1,2 0 1,0 0 2,1 1 3)) -535249443D343332363B303130353030303034303032303030303030303130323030303034303033303030303030303030303030303030303030463042463030303030303030303030304630334630303030303030303030303032323430303030303030303030303030303034303030303030303030303030303038343043444343434343434343434332303430303030303030303030303030313034303030303030303030303030304630334643444343434343434343434332323430303130323030303034303034303030303030303030303030303030303030303030303030303030303030303030303030343030303030303030303030303046303346303030303030303030303030303034303030303030303030303030303030303030303030303030303030303046303346303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303430303030303030303030303030463033463030303030303030303030304630334630303030303030303030303030383430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output26.testcase b/src/spatialite/test/sql_stmt_proj_tests/output26.testcase deleted file mode 100644 index 0e5a68e..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output26.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - MULTILINESTRINGZM via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTILINESTRING((-1 1 9 1, 2 3 8.4 3, 4 1 9.4 1),(0 2 1 84, 2 0 1 26, 0 0 2 -2.1, 1 1 3 0))") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -MULTILINESTRING ZM((-1 1 9 1, 2 3 8.4 3, 4 1 9.4 1), (0 2 1 84, 2 0 1 26, 0 0 2 -2.1, 1 1 3 0)) --1,1,9 2,3,8.4 4,1,9.40,2,1 2,0,1 0,0,2 1,1,3 --1,1,9 2,3,8.4 4,1,9.40,2,1 2,0,1 0,0,2 1,1,3:0 -{"type":"MultiLineString","coordinates":[[[-1,1,9],[2,3,8.4],[4,1,9.4]],[[0,2,1],[2,0,1],[0,0,2],[1,1,3]]]}:0 -MULTILINESTRING((-1 1,2 3,4 1),(0 2,2 0,0 0,1 1)) -SRID=4326;MULTILINESTRING((-1 1 9 1,2 3 8.4 3,4 1 9.4 1),(0 2 1 84,2 0 1 26,0 0 2 -2.1,1 1 3 0)) -535249443D343332363B30313035303030304330303230303030303030313032303030304330303330303030303030303030303030303030303046304246303030303030303030303030463033463030303030303030303030303232343030303030303030303030303046303346303030303030303030303030303034303030303030303030303030303038343043444343434343434343434332303430303030303030303030303030303834303030303030303030303030303130343030303030303030303030303046303346434443434343434343434343323234303030303030303030303030304630334630313032303030304330303430303030303030303030303030303030303030303030303030303030303030303030303034303030303030303030303030304630334630303030303030303030303035353430303030303030303030303030303034303030303030303030303030303030303030303030303030303030303046303346303030303030303030303030334134303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303034304344434343434343434343433030433030303030303030303030303046303346303030303030303030303030463033463030303030303030303030303038343030303030303030303030303030303030 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output27.testcase b/src/spatialite/test/sql_stmt_proj_tests/output27.testcase deleted file mode 100644 index 1d5b274..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output27.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - MULTIPOLYGON via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOLYGON(((10 10, 0 10, 0 0, 0 10, 10 10)),((-10 -10, -10 10, 10 10, 10 -10, -10 -10),(-8 -8, -2 -8, -2 -2, -8 -2, -8 -8),(8 8, 2 8, 2 2, 8 2, 8 8)))") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -MULTIPOLYGON(((10 10, 0 10, 0 0, 0 10, 10 10)), ((-10 -10, -10 10, 10 10, 10 -10, -10 -10), (-8 -8, -2 -8, -2 -2, -8 -2, -8 -8), (8 8, 2 8, 2 2, 8 2, 8 8))) -10,10 0,10 0,0 0,10 10,10-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8 -10,10 0,10 0,0 0,10 10,10-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8:0 -{"type":"MultiPolygon","coordinates":[[[[10,10],[0,10],[0,0],[0,10],[10,10]]],[[[-10,-10],[-10,10],[10,10],[10,-10],[-10,-10]],[[-8,-8],[-2,-8],[-2,-2],[-8,-2],[-8,-8]],[[8,8],[2,8],[2,2],[8,2],[8,8]]]]}:0 -MULTIPOLYGON(((10 10,0 10,0 0,0 10,10 10)),((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) -SRID=4326;MULTIPOLYGON(((10 10,0 10,0 0,0 10,10 10)),((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) -535249443D343332363B303130363030303030303032303030303030303130333030303030303031303030303030303530303030303030303030303030303030303032343430303030303030303030303030323434303030303030303030303030303030303030303030303030303030303032343430303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030323434303030303030303030303030303234343030303030303030303030303032343430303130333030303030303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303234433030303030303030303030303032343430303030303030303030303030323434303030303030303030303030303234343030303030303030303030303032343430303030303030303030303030323443303030303030303030303030303234433030303030303030303030303032344330303530303030303030303030303030303030303032304330303030303030303030303030323043303030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303043303030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303043303030303030303030303030303230433030303030303030303030303032304330303530303030303030303030303030303030303032303430303030303030303030303030323034303030303030303030303030303030343030303030303030303030303032303430303030303030303030303030303034303030303030303030303030303030343030303030303030303030303032303430303030303030303030303030303034303030303030303030303030303230343030303030303030303030303032303430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output28.testcase b/src/spatialite/test/sql_stmt_proj_tests/output28.testcase deleted file mode 100644 index 932b8ac..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output28.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - MULTIPOLYGONZ via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOLYGON(((10 10 1.2, 0 10 1.3, 0 0 1.1, 0 10 1.3, 10 10 1.2)),((-10 -10 4, -10 10 5, 10 10 6, 10 -10 5, -10 -10 4),(-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1),(8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11)))") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -MULTIPOLYGON Z(((10 10 1.2, 0 10 1.3, 0 0 1.1, 0 10 1.3, 10 10 1.2)), ((-10 -10 4, -10 10 5, 10 10 6, 10 -10 5, -10 -10 4), (-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1), (8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11))) -10,10,1.2 0,10,1.3 0,0,1.1 0,10,1.3 10,10,1.2-10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11 -10,10,1.2 0,10,1.3 0,0,1.1 0,10,1.3 10,10,1.2-10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11:0 -{"type":"MultiPolygon","coordinates":[[[[10,10,1.2],[0,10,1.3],[0,0,1.1],[0,10,1.3],[10,10,1.2]]],[[[-10,-10,4],[-10,10,5],[10,10,6],[10,-10,5],[-10,-10,4]],[[-8,-8,1],[-2,-8,3],[-2,-2,5],[-8,-2,7],[-8,-8,1]],[[8,8,11],[2,8,13],[2,2,17],[8,2,13],[8,8,11]]]]}:0 -MULTIPOLYGON(((10 10,0 10,0 0,0 10,10 10)),((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) -SRID=4326;MULTIPOLYGON(((10 10 1.2,0 10 1.3,0 0 1.1,0 10 1.3,10 10 1.2)),((-10 -10 4,-10 10 5,10 10 6,10 -10 5,-10 -10 4),(-8 -8 1,-2 -8 3,-2 -2 5,-8 -2 7,-8 -8 1),(8 8 11,2 8 13,2 2 17,8 2 13,8 8 11))) -535249443D343332363B3031303630303030383030323030303030303031303330303030383030313030303030303035303030303030303030303030303030303030323434303030303030303030303030303234343033333333333333333333333346333346303030303030303030303030303030303030303030303030303030303234343043444343434343434343434346343346303030303030303030303030303030303030303030303030303030303030303039413939393939393939393946313346303030303030303030303030303030303030303030303030303030303234343043444343434343434343434346343346303030303030303030303030323434303030303030303030303030303234343033333333333333333333333346333346303130333030303038303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030303030303030303030303032344330303030303030303030303030323434303030303030303030303030303134343030303030303030303030303032343430303030303030303030303030323434303030303030303030303030303138343030303030303030303030303032343430303030303030303030303030323443303030303030303030303030303134343030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030353030303030303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303834303030303030303030303030303030433030303030303030303030303030304330303030303030303030303030313434303030303030303030303030303230433030303030303030303030303030304330303030303030303030303030314334303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463035303030303030303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430303030303030303030303030303034303030303030303030303030303230343030303030303030303030303032413430303030303030303030303030303034303030303030303030303030303030343030303030303030303030303033313430303030303030303030303030323034303030303030303030303030303030343030303030303030303030303032413430303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_proj_tests/output29.testcase b/src/spatialite/test/sql_stmt_proj_tests/output29.testcase deleted file mode 100644 index d50064d..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output29.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - MULTIPOLYGONM via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOLYGONM(((10 10 1.2, 0 10 1.3, 0 0 1.1, 0 10 1.3, 10 10 1.2)),((-10 -10 4, -10 10 5, 10 10 6, 10 -10 5, -10 -10 4),(-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1),(8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11)))") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -MULTIPOLYGON M(((10 10 1.2, 0 10 1.3, 0 0 1.1, 0 10 1.3, 10 10 1.2)), ((-10 -10 4, -10 10 5, 10 10 6, 10 -10 5, -10 -10 4), (-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1), (8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11))) -10,10 0,10 0,0 0,10 10,10-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8 -10,10 0,10 0,0 0,10 10,10-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8:0 -{"type":"MultiPolygon","coordinates":[[[[10,10],[0,10],[0,0],[0,10],[10,10]]],[[[-10,-10],[-10,10],[10,10],[10,-10],[-10,-10]],[[-8,-8],[-2,-8],[-2,-2],[-8,-2],[-8,-8]],[[8,8],[2,8],[2,2],[8,2],[8,8]]]]}:0 -MULTIPOLYGON(((10 10,0 10,0 0,0 10,10 10)),((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) -SRID=4326;MULTIPOLYGONM(((10 10 1.2,0 10 1.3,0 0 1.1,0 10 1.3,10 10 1.2)),((-10 -10 4,-10 10 5,10 10 6,10 -10 5,-10 -10 4),(-8 -8 1,-2 -8 3,-2 -2 5,-8 -2 7,-8 -8 1),(8 8 11,2 8 13,2 2 17,8 2 13,8 8 11))) -535249443D343332363B3031303630303030343030323030303030303031303330303030343030313030303030303035303030303030303030303030303030303030323434303030303030303030303030303234343033333333333333333333333346333346303030303030303030303030303030303030303030303030303030303234343043444343434343434343434346343346303030303030303030303030303030303030303030303030303030303030303039413939393939393939393946313346303030303030303030303030303030303030303030303030303030303234343043444343434343434343434346343346303030303030303030303030323434303030303030303030303030303234343033333333333333333333333346333346303130333030303034303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030303030303030303030303032344330303030303030303030303030323434303030303030303030303030303134343030303030303030303030303032343430303030303030303030303030323434303030303030303030303030303138343030303030303030303030303032343430303030303030303030303030323443303030303030303030303030303134343030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030353030303030303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303834303030303030303030303030303030433030303030303030303030303030304330303030303030303030303030313434303030303030303030303030303230433030303030303030303030303030304330303030303030303030303030314334303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463035303030303030303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430303030303030303030303030303034303030303030303030303030303230343030303030303030303030303032413430303030303030303030303030303034303030303030303030303030303030343030303030303030303030303033313430303030303030303030303030323034303030303030303030303030303030343030303030303030303030303032413430303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output3.testcase b/src/spatialite/test/sql_stmt_proj_tests/output3.testcase deleted file mode 100644 index 6203fbe..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output3.testcase +++ /dev/null @@ -1,20 +0,0 @@ -Output format tests - bad blob input -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsKML("myname", "mydesc", geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT zeroblob(40) as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsKML("myname", "mydesc", geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -(NULL) -(NULL) -(NULL) -(NULL) -(NULL) -(NULL) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_proj_tests/output30.testcase b/src/spatialite/test/sql_stmt_proj_tests/output30.testcase deleted file mode 100644 index bc1abae..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output30.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - MULTIPOLYGONZM via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOLYGON(((10 10 1.2 1, 0 10 1.3 -2, 0 0 1.1 5.8, 0 10 1.3 3, 10 10 1.2 1)),((-10 -10 4 0, -10 10 5 0, 10 10 6 1, 10 -10 5 0, -10 -10 4 0),(-8 -8 1 1, -2 -8 3 4, -2 -2 5 6, -8 -2 7 9, -8 -8 1 1),(8 8 11 0, 2 8 13 -2, 2 2 17 -4, 8 2 13 -8, 8 8 11 0)))") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -MULTIPOLYGON ZM(((10 10 1.2 1, 0 10 1.3 -2, 0 0 1.1 5.8, 0 10 1.3 3, 10 10 1.2 1)), ((-10 -10 4 0, -10 10 5 0, 10 10 6 1, 10 -10 5 0, -10 -10 4 0), (-8 -8 1 1, -2 -8 3 4, -2 -2 5 6, -8 -2 7 9, -8 -8 1 1), (8 8 11 0, 2 8 13 -2, 2 2 17 -4, 8 2 13 -8, 8 8 11 0))) -10,10,1.2 0,10,1.3 0,0,1.1 0,10,1.3 10,10,1.2-10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11 -10,10,1.2 0,10,1.3 0,0,1.1 0,10,1.3 10,10,1.2-10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11:0 -{"type":"MultiPolygon","coordinates":[[[[10,10,1.2],[0,10,1.3],[0,0,1.1],[0,10,1.3],[10,10,1.2]]],[[[-10,-10,4],[-10,10,5],[10,10,6],[10,-10,5],[-10,-10,4]],[[-8,-8,1],[-2,-8,3],[-2,-2,5],[-8,-2,7],[-8,-8,1]],[[8,8,11],[2,8,13],[2,2,17],[8,2,13],[8,8,11]]]]}:0 -MULTIPOLYGON(((10 10,0 10,0 0,0 10,10 10)),((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) -SRID=4326;MULTIPOLYGON(((10 10 1.2 1,0 10 1.3 -2,0 0 1.1 5.8,0 10 1.3 3,10 10 1.2 1)),((-10 -10 4 0,-10 10 5 0,10 10 6 1,10 -10 5 0,-10 -10 4 0),(-8 -8 1 1,-2 -8 3 4,-2 -2 5 6,-8 -2 7 9,-8 -8 1 1),(8 8 11 0,2 8 13 -2,2 2 17 -4,8 2 13 -8,8 8 11 0))) -535249443D343332363B30313036303030304330303230303030303030313033303030304330303130303030303030353030303030303030303030303030303030303234343030303030303030303030303032343430333333333333333333333333463333463030303030303030303030304630334630303030303030303030303030303030303030303030303030303030323434304344434343434343434343434634334630303030303030303030303030304330303030303030303030303030303030303030303030303030303030303030303039413939393939393939393946313346333333333333333333333333313734303030303030303030303030303030303030303030303030303030303032343430434443434343434343434343463433463030303030303030303030303038343030303030303030303030303032343430303030303030303030303030323434303333333333333333333333334633334630303030303030303030303046303346303130333030303043303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030303030303030303030303030303030303030303030303030303030323443303030303030303030303030303234343030303030303030303030303031343430303030303030303030303030303030303030303030303030303030303234343030303030303030303030303032343430303030303030303030303030313834303030303030303030303030304630334630303030303030303030303032343430303030303030303030303030323443303030303030303030303030303134343030303030303030303030303030303030303030303030303030303030323443303030303030303030303030303234433030303030303030303030303031303430303030303030303030303030303030303035303030303030303030303030303030303030323043303030303030303030303030303230433030303030303030303030303046303346303030303030303030303030463033463030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303834303030303030303030303030303130343030303030303030303030303030304330303030303030303030303030303043303030303030303030303030303134343030303030303030303030303031383430303030303030303030303030323043303030303030303030303030303030433030303030303030303030303031433430303030303030303030303030323234303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463030303030303030303030304630334630353030303030303030303030303030303030303230343030303030303030303030303032303430303030303030303030303030323634303030303030303030303030303030303030303030303030303030303030303430303030303030303030303030323034303030303030303030303030303241343030303030303030303030303030304330303030303030303030303030303034303030303030303030303030303030343030303030303030303030303033313430303030303030303030303030313043303030303030303030303030303230343030303030303030303030303030303430303030303030303030303030324134303030303030303030303030303230433030303030303030303030303032303430303030303030303030303030323034303030303030303030303030303236343030303030303030303030303030303030 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output31.testcase b/src/spatialite/test/sql_stmt_proj_tests/output31.testcase deleted file mode 100644 index d4ee857..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output31.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - GEOMETRY COLLECTION OF POLYGONZM via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;GEOMETRYCOLLECTION(POLYGON((-10 -10 4 0, -10 10 5 0, 10 10 6 1, 10 -10 5 0, -10 -10 4 0),(-8 -8 1 1, -2 -8 3 4, -2 -2 5 6, -8 -2 7 9, -8 -8 1 1),(8 8 11 0, 2 8 13 -2, 2 2 17 -4, 8 2 13 -8, 8 8 11 0)))") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -GEOMETRYCOLLECTION ZM(POLYGON ZM((-10 -10 4 0, -10 10 5 0, 10 10 6 1, 10 -10 5 0, -10 -10 4 0), (-8 -8 1 1, -2 -8 3 4, -2 -2 5 6, -8 -2 7 9, -8 -8 1 1), (8 8 11 0, 2 8 13 -2, 2 2 17 -4, 8 2 13 -8, 8 8 11 0))) --10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11 --10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11:0 -{"type":"GeometryCollection","geometries":[{"type":"Polygon","coordinates":[[[-10,-10,4],[-10,10,5],[10,10,6],[10,-10,5],[-10,-10,4]],[[-8,-8,1],[-2,-8,3],[-2,-2,5],[-8,-2,7],[-8,-8,1]],[[8,8,11],[2,8,13],[2,2,17],[8,2,13],[8,8,11]]]}]}:0 -GEOMETRYCOLLECTION(POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) -SRID=4326;GEOMETRYCOLLECTION(POLYGON((-10 -10 4 0,-10 10 5 0,10 10 6 1,10 -10 5 0,-10 -10 4 0),(-8 -8 1 1,-2 -8 3 4,-2 -2 5 6,-8 -2 7 9,-8 -8 1 1),(8 8 11 0,2 8 13 -2,2 2 17 -4,8 2 13 -8,8 8 11 0))) -535249443D343332363B303130373030303043303031303030303030303130333030303043303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030303030303030303030303030303030303030303030303030303030323443303030303030303030303030303234343030303030303030303030303031343430303030303030303030303030303030303030303030303030303030303234343030303030303030303030303032343430303030303030303030303030313834303030303030303030303030304630334630303030303030303030303032343430303030303030303030303030323443303030303030303030303030303134343030303030303030303030303030303030303030303030303030303030323443303030303030303030303030303234433030303030303030303030303031303430303030303030303030303030303030303035303030303030303030303030303030303030323043303030303030303030303030303230433030303030303030303030303046303346303030303030303030303030463033463030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303834303030303030303030303030303130343030303030303030303030303030304330303030303030303030303030303043303030303030303030303030303134343030303030303030303030303031383430303030303030303030303030323043303030303030303030303030303030433030303030303030303030303031433430303030303030303030303030323234303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463030303030303030303030304630334630353030303030303030303030303030303030303230343030303030303030303030303032303430303030303030303030303030323634303030303030303030303030303030303030303030303030303030303030303430303030303030303030303030323034303030303030303030303030303241343030303030303030303030303030304330303030303030303030303030303034303030303030303030303030303030343030303030303030303030303033313430303030303030303030303030313043303030303030303030303030303230343030303030303030303030303030303430303030303030303030303030324134303030303030303030303030303230433030303030303030303030303032303430303030303030303030303030323034303030303030303030303030303236343030303030303030303030303030303030 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output32.testcase b/src/spatialite/test/sql_stmt_proj_tests/output32.testcase deleted file mode 100644 index 7647811..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output32.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - GEOMETRY COLLECTION OF POINTZ and POLYGONZ via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;GEOMETRYCOLLECTION(POINT(1 2 3),POLYGON((-10 -10 4, -10 10 5, 10 10 6 , 10 -10 5, -10 -10 4),(-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1),(8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11)))") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -GEOMETRYCOLLECTION Z(POINT Z(1 2 3), POLYGON Z((-10 -10 4, -10 10 5, 10 10 6, 10 -10 5, -10 -10 4), (-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1), (8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11))) -1,2,3-10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11 -1,2,3-10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11:0 -{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1,2,3]},{"type":"Polygon","coordinates":[[[-10,-10,4],[-10,10,5],[10,10,6],[10,-10,5],[-10,-10,4]],[[-8,-8,1],[-2,-8,3],[-2,-2,5],[-8,-2,7],[-8,-8,1]],[[8,8,11],[2,8,13],[2,2,17],[8,2,13],[8,8,11]]]}]}:0 -GEOMETRYCOLLECTION(POINT(1 2),POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) -SRID=4326;GEOMETRYCOLLECTION(POINT(1 2 3),POLYGON((-10 -10 4,-10 10 5,10 10 6,10 -10 5,-10 -10 4),(-8 -8 1,-2 -8 3,-2 -2 5,-8 -2 7,-8 -8 1),(8 8 11,2 8 13,2 2 17,8 2 13,8 8 11))) -535249443D343332363B30313037303030303830303230303030303030313031303030303830303030303030303030303030463033463030303030303030303030303030343030303030303030303030303030383430303130333030303038303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030303030303030303030303032344330303030303030303030303030323434303030303030303030303030303134343030303030303030303030303032343430303030303030303030303030323434303030303030303030303030303138343030303030303030303030303032343430303030303030303030303030323443303030303030303030303030303134343030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030353030303030303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303834303030303030303030303030303030433030303030303030303030303030304330303030303030303030303030313434303030303030303030303030303230433030303030303030303030303030304330303030303030303030303030314334303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463035303030303030303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430303030303030303030303030303034303030303030303030303030303230343030303030303030303030303032413430303030303030303030303030303034303030303030303030303030303030343030303030303030303030303033313430303030303030303030303030323034303030303030303030303030303030343030303030303030303030303032413430303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output33.testcase b/src/spatialite/test/sql_stmt_proj_tests/output33.testcase deleted file mode 100644 index 608912f..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output33.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - GEOMETRY COLLECTION OF POINTM and POLYGONM via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;GEOMETRYCOLLECTIONM(POINTM(1 2 3),POLYGONM((-10 -10 4, -10 10 5, 10 10 6 , 10 -10 5, -10 -10 4),(-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1),(8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11)))") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -GEOMETRYCOLLECTION M(POINT M(1 2 3), POLYGON M((-10 -10 4, -10 10 5, 10 10 6, 10 -10 5, -10 -10 4), (-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1), (8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11))) -1,2-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8:0 -1,2-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8:0 -{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1,2]},{"type":"Polygon","coordinates":[[[-10,-10],[-10,10],[10,10],[10,-10],[-10,-10]],[[-8,-8],[-2,-8],[-2,-2],[-8,-2],[-8,-8]],[[8,8],[2,8],[2,2],[8,2],[8,8]]]}]}:0 -GEOMETRYCOLLECTION(POINT(1 2),POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) -SRID=4326;GEOMETRYCOLLECTIONM(POINTM(1 2 3),POLYGONM((-10 -10 4,-10 10 5,10 10 6,10 -10 5,-10 -10 4),(-8 -8 1,-2 -8 3,-2 -2 5,-8 -2 7,-8 -8 1),(8 8 11,2 8 13,2 2 17,8 2 13,8 8 11))) -535249443D343332363B30313037303030303430303230303030303030313031303030303430303030303030303030303030463033463030303030303030303030303030343030303030303030303030303030383430303130333030303034303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030303030303030303030303032344330303030303030303030303030323434303030303030303030303030303134343030303030303030303030303032343430303030303030303030303030323434303030303030303030303030303138343030303030303030303030303032343430303030303030303030303030323443303030303030303030303030303134343030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030353030303030303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303834303030303030303030303030303030433030303030303030303030303030304330303030303030303030303030313434303030303030303030303030303230433030303030303030303030303030304330303030303030303030303030314334303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463035303030303030303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430303030303030303030303030303034303030303030303030303030303230343030303030303030303030303032413430303030303030303030303030303034303030303030303030303030303030343030303030303030303030303033313430303030303030303030303030323034303030303030303030303030303030343030303030303030303030303032413430303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output34.testcase b/src/spatialite/test/sql_stmt_proj_tests/output34.testcase deleted file mode 100644 index 37858a3..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output34.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - GEOMETRY COLLECTION OF POINT and POLYGON via EWKB, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;GEOMETRYCOLLECTION(POINT(1 2),POLYGON((-10 -10, -10 10, 10 10 , 10 -10, -10 -10),(-8 -8, -2 -8, -2 -2, -8 -2, -8 -8),(8 8, 2 8, 2 2, 8 2, 8 8)))") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -GEOMETRYCOLLECTION(POINT(1 2), POLYGON((-10 -10, -10 10, 10 10, 10 -10, -10 -10), (-8 -8, -2 -8, -2 -2, -8 -2, -8 -8), (8 8, 2 8, 2 2, 8 2, 8 8))) -1,2-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8 -1,2-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8:0 -{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1,2]},{"type":"Polygon","coordinates":[[[-10,-10],[-10,10],[10,10],[10,-10],[-10,-10]],[[-8,-8],[-2,-8],[-2,-2],[-8,-2],[-8,-8]],[[8,8],[2,8],[2,2],[8,2],[8,8]]]}]}:0 -GEOMETRYCOLLECTION(POINT(1 2),POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) -SRID=4326;GEOMETRYCOLLECTION(POINT(1 2),POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) -535249443D343332363B303130373030303030303032303030303030303130313030303030303030303030303030303030304630334630303030303030303030303030303430303130333030303030303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303234433030303030303030303030303032343430303030303030303030303030323434303030303030303030303030303234343030303030303030303030303032343430303030303030303030303030323443303030303030303030303030303234433030303030303030303030303032344330303530303030303030303030303030303030303032304330303030303030303030303030323043303030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303043303030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303043303030303030303030303030303230433030303030303030303030303032304330303530303030303030303030303030303030303032303430303030303030303030303030323034303030303030303030303030303030343030303030303030303030303032303430303030303030303030303030303034303030303030303030303030303030343030303030303030303030303032303430303030303030303030303030303034303030303030303030303030303230343030303030303030303030303032303430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output35.testcase b/src/spatialite/test/sql_stmt_proj_tests/output35.testcase deleted file mode 100644 index 34007f4..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output35.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - GEOMETRYCOLLECTION XYZM (POINT, POINT LINESTRING) -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(1 2 100 10), POINTZM(2 3 101 11), LINESTRINGZM(3 4 100 10, 4 5 101 11))", 4326) AS geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -GEOMETRYCOLLECTION ZM(POINT ZM(1 2 100 10), POINT ZM(2 3 101 11), LINESTRING ZM(3 4 100 10, 4 5 101 11)) -1,2,1002,3,1013,4,100 4,5,101 -1,2,1002,3,1013,4,100 4,5,101:0 # trailing ":0" required to avoid truncation !!! -{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1,2,100]},{"type":"Point","coordinates":[2,3,101]},{"type":"LineString","coordinates":[[3,4,100],[4,5,101]]}]}:0 # trailing ":0" required to avoid truncation !!! -GEOMETRYCOLLECTION(POINT(1 2),POINT(2 3),LINESTRING(3 4,4 5)) -SRID=4326;GEOMETRYCOLLECTION(POINT(1 2 100 10),POINT(2 3 101 11),LINESTRING(3 4 100 10,4 5 101 11)) -535249443D343332363B303130373030303043303033303030303030303130313030303043303030303030303030303030304630334630303030303030303030303030303430303030303030303030303030353934303030303030303030303030303234343030313031303030304330303030303030303030303030303034303030303030303030303030303038343030303030303030303030343035393430303030303030303030303030323634303031303230303030433030323030303030303030303030303030303030303038343030303030303030303030303031303430303030303030303030303030353934303030303030303030303030303234343030303030303030303030303031303430303030303030303030303030313434303030303030303030303034303539343030303030303030303030303032363430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output36.testcase b/src/spatialite/test/sql_stmt_proj_tests/output36.testcase deleted file mode 100644 index 018ab33..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output36.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - GEOMETRYCOLLECTION XYZ (POINT LINESTRING) -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(1 2 100), LINESTRINGZ(3 4 100, 4 5 101))", 4326) AS geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -GEOMETRYCOLLECTION Z(POINT Z(1 2 100), LINESTRING Z(3 4 100, 4 5 101)) -1,2,1003,4,100 4,5,101 -1,2,1003,4,100 4,5,101:0 # trailing ":0" required to avoid truncation !!! -{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1,2,100]},{"type":"LineString","coordinates":[[3,4,100],[4,5,101]]}]}:0 # trailing ":0" required to avoid truncation !!! -GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(3 4,4 5)) -SRID=4326;GEOMETRYCOLLECTION(POINT(1 2 100),LINESTRING(3 4 100,4 5 101)) -535249443D343332363B30313037303030303830303230303030303030313031303030303830303030303030303030303030463033463030303030303030303030303030343030303030303030303030303035393430303130323030303038303032303030303030303030303030303030303030303834303030303030303030303030303130343030303030303030303030303035393430303030303030303030303030313034303030303030303030303030303134343030303030303030303030343035393430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output37.testcase b/src/spatialite/test/sql_stmt_proj_tests/output37.testcase deleted file mode 100644 index 29c5651..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output37.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - GEOMETRYCOLLECTION XYM (POINT LINESTRING) -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromText("GEOMETRYCOLLECTIONM(POINTM(1 2 10), LINESTRINGM(3 4 10, 4 5 11))", 4326) AS geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -Hex(AsEWKB(geom)) -GEOMETRYCOLLECTION M(POINT M(1 2 10), LINESTRING M(3 4 10, 4 5 11)) -1,23,4 4,5 -1,23,4 4,5:0 # trailing ":0" required to avoid truncation !!! -{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1,2]},{"type":"LineString","coordinates":[[3,4],[4,5]]}]}:0 # trailing ":0" required to avoid truncation !!! -GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(3 4,4 5)) -SRID=4326;GEOMETRYCOLLECTIONM(POINTM(1 2 10),LINESTRINGM(3 4 10,4 5 11)) -535249443D343332363B30313037303030303430303230303030303030313031303030303430303030303030303030303030463033463030303030303030303030303030343030303030303030303030303032343430303130323030303034303032303030303030303030303030303030303030303834303030303030303030303030303130343030303030303030303030303032343430303030303030303030303030313034303030303030303030303030303134343030303030303030303030303032363430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output38.testcase b/src/spatialite/test/sql_stmt_proj_tests/output38.testcase deleted file mode 100644 index 5785004..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output38.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Output format tests - XML masked chars -:memory: #use in-memory database -SELECT AsKML('myname', 'mydesc &"<>', GeomFromText("POLYGON((0 0, 1 1, 0 2, -1 1, 0 0))", 4326)); -1 # rows (not including the header row) -1 # columns -AsKML('myname', 'mydesc &"<>', GeomFromText("POLYGON((0 0, 1 1, 0 2, -1 1, 0 0))", 4326)) -mynamemydesc &"<>0,0 1,1 0,2 -1,1 0,0 - diff --git a/src/spatialite/test/sql_stmt_proj_tests/output4.testcase b/src/spatialite/test/sql_stmt_proj_tests/output4.testcase deleted file mode 100644 index 0600668..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output4.testcase +++ /dev/null @@ -1,20 +0,0 @@ -Output format tests - text input -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsKML("myname", "mydesc", geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT "hello" as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsKML("myname", "mydesc", geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -(NULL) -(NULL) -(NULL) -(NULL) -(NULL) -(NULL) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_proj_tests/output5.testcase b/src/spatialite/test/sql_stmt_proj_tests/output5.testcase deleted file mode 100644 index ceabe67..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output5.testcase +++ /dev/null @@ -1,20 +0,0 @@ -Output format tests - POINT input, no SRID -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsKML("myname", "mydesc", geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT MakePoint(1,2) as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsKML("myname", "mydesc", geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -POINT(1 2) -(NULL) -(NULL) -1,2:0" required to avoid truncation !! -{"type":"Point","coordinates":[1,2]}:0" required to avoid truncation !! -POINT(1 2) -SRID=0;POINT(1 2) - diff --git a/src/spatialite/test/sql_stmt_proj_tests/output6.testcase b/src/spatialite/test/sql_stmt_proj_tests/output6.testcase deleted file mode 100644 index 3c0fa55..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output6.testcase +++ /dev/null @@ -1,20 +0,0 @@ -Output format tests - POINT input, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsKML("myname", "mydesc", geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT MakePoint(1, 2, 4326) as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom) -AsKML("myname", "mydesc", geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -POINT(1 2) -1,2 -mynamemydesc1,2 -1,2:0 -{"type":"Point","coordinates":[1,2]}:0 -POINT(1 2) -SRID=4326;POINT(1 2) - diff --git a/src/spatialite/test/sql_stmt_proj_tests/output7.testcase b/src/spatialite/test/sql_stmt_proj_tests/output7.testcase deleted file mode 100644 index 208018e..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output7.testcase +++ /dev/null @@ -1,19 +0,0 @@ -Output format tests - Linestring, NAD83 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom, 6), AsGML(2, geom, 7), AsGML(3, geom, 8), AsGeoJSON(geom, 6), AsGeoJSON(geom, 5, 4), AsWkt(geom, 5) FROM (SELECT GeomFromEwkt("SRID=3636;LINESTRING(1065407.0674 116445.5897, 2968193.5686 805860.5650)") as geom) dummy; -1 # rows (not including the header row) -7 # columns -AsText(geom) -AsKML(geom, 6) -AsGML(2, geom, 7) -AsGML(3, geom, 8) -AsGeoJSON(geom, 6) -AsGeoJSON(geom, 5, 4) -AsWkt(geom, 5) -LINESTRING(1065407.0674 116445.5897, 2968193.5686 805860.565) --104.05,45.93 -96.430658,47.805216 -1065407.0674,116445.5897 2968193.5686,805860.565:0 -1065407.0674 116445.5897 2968193.5686 805860.565:0 -{"type":"LineString","coordinates":[[1065407.0674,116445.5897],[2968193.5686,805860.565]]}:0 -{"type":"LineString","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG:3636"}},"coordinates":[[1065407.0674,116445.5897],[2968193.5686,805860.565]]}:0 -LINESTRING(1065407.0674 116445.5897,2968193.5686 805860.565) diff --git a/src/spatialite/test/sql_stmt_proj_tests/output8.testcase b/src/spatialite/test/sql_stmt_proj_tests/output8.testcase deleted file mode 100644 index 8ebbd8c..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output8.testcase +++ /dev/null @@ -1,18 +0,0 @@ -Output format tests - MULTIPOINT, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOINT(0 0, 1 1, 0 2, -1 1)") as geom) dummy; -1 # rows (not including the header row) -6 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -MULTIPOINT(0 0, 1 1, 0 2, -1 1) -0,01,10,2-1,1 -0,01,10,2-1,1:0 -{"type":"MultiPoint","coordinates":[[0,0],[1,1],[0,2],[-1,1]]}:0 -MULTIPOINT(0 0,1 1,0 2,-1 1) -SRID=4326;MULTIPOINT(0 0,1 1,0 2,-1 1) - diff --git a/src/spatialite/test/sql_stmt_proj_tests/output9.testcase b/src/spatialite/test/sql_stmt_proj_tests/output9.testcase deleted file mode 100644 index 02a0866..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/output9.testcase +++ /dev/null @@ -1,18 +0,0 @@ -Output format tests - POINT, WGS-84 -:memory: #use in-memory database -SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT GeomFromEWkt("SRID=4326;POINT(-1 1)") as geom) dummy; -1 # rows (not including the header row) -6 # columns -AsText(geom) -AsKML(geom) -AsGML(geom) -AsGeoJSON(geom) -AsWkt(geom) -AsEWkt(geom) -POINT(-1 1) --1,1 --1,1:0 -{"type":"Point","coordinates":[-1,1]}:0 -POINT(-1 1) -SRID=4326;POINT(-1 1) - diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform1.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform1.testcase deleted file mode 100644 index e786b82..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - null args -:memory: #use in-memory database -SELECT Transform(NULL, NULL) -1 # rows (not including the header row) -1 # columns -Transform(NULL, NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform10.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform10.testcase deleted file mode 100644 index a62ec32..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Linestring M -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('LINESTRINGM(11 43 1, 12 43 2, 12 42 3)', 4326), 32632)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('LINESTRINGM(11 43 1, 12 43 2, 12 42 3)', 4326), 32632)) -LINESTRING M(663019.070082 4762755.64169 1, 744533.019451 4765182.932802 2, 748464.920716 4654130.891324 3) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform11.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform11.testcase deleted file mode 100644 index b429cad..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Linestring ZM -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('LINESTRINGZM(11 43 100 1, 12 43 101 2, 12 42 102 3)', 4326), 32632)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('LINESTRINGZM(11 43 100 1, 12 43 101 2, 12 42 102 3)', 4326), 32632)) -LINESTRING ZM(663019.070082 4762755.64169 100 1, 744533.019451 4765182.932802 101 2, 748464.920716 4654130.891324 102 3) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform12.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform12.testcase deleted file mode 100644 index dd43534..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Point Z -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('POINTZ(11 43 100)', 4326), 32632)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('POINTZ(11 43 100)', 4326), 32632)) -POINT Z(663019.070082 4762755.64169 100) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform13.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform13.testcase deleted file mode 100644 index c36b4cd..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Point M -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('POINTM(11 43 1)', 4326), 32632)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('POINTM(11 43 1)', 4326), 32632)) -POINT M(663019.070082 4762755.64169 1) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform14.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform14.testcase deleted file mode 100644 index cbe9133..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Point ZM -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('POINTZM(11 43 100 1)', 4326), 32632)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('POINTZM(11 43 100 1)', 4326), 32632)) -POINT ZM(663019.070082 4762755.64169 100 1) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform15.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform15.testcase deleted file mode 100644 index e015988..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Point ZM -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('POINTZM(663019 4762755 100 1)', 32632), 4326)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('POINTZM(663019 4762755 100 1)', 32632), 4326)) -POINT ZM(10.999999 42.999994 100 1) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform16.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform16.testcase deleted file mode 100644 index 3718cce..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Polygon -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('POLYGON((11 43, 12 43, 12 44, 11 44, 11 43), (11.4 43.4, 11.6 43.4, 11.6 43.6, 11.4 43.6, 11.4 43.4))', 4326), 32632)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('POLYGON((11 43, 12 43, 12 44, 11 44, 11 43), (11.4 43.4, 11.6 43.4, 11.6 43.6, 11.4 43.6, 11.4 43.4))', 4326), 32632)) -POLYGON((663019.070082 4762755.64169, 744533.019451 4765182.932802, 740526.321055 4876249.126963, 660349.410579 4873817.333441, 663019.070082 4762755.64169), (694349.575562 4808033.274618, 710545.984354 4808519.151148, 709851.653212 4830731.987849, 693708.725206 4830245.931093, 694349.575562 4808033.274618)) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform17.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform17.testcase deleted file mode 100644 index aa34fec..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Polygon Z -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('POLYGONZ((11 43 100, 12 43 101, 12 44 102, 11 44 103, 11 43 100), (11.4 43.4 100, 11.6 43.4 101, 11.6 43.6 102, 11.4 43.6 103, 11.4 43.4 100))', 4326), 32632)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('POLYGONZ((11 43 100, 12 43 101, 12 44 102, 11 44 103, 11 43 100), (11.4 43.4 100, 11.6 43.4 101, 11.6 43.6 102, 11.4 43.6 103, 11.4 43.4 100))', 4326), 32632)) -POLYGON Z((663019.070082 4762755.64169 100, 744533.019451 4765182.932802 101, 740526.321055 4876249.126963 102, 660349.410579 4873817.333441 103, 663019.070082 4762755.64169 100), (694349.575562 4808033.274618 100, 710545.984354 4808519.151148 101, 709851.653212 4830731.987849 102, 693708.725206 4830245.931093 103, 694349.575562 4808033.274618 100)) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform18.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform18.testcase deleted file mode 100644 index eacf5db..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Polygon M -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('POLYGONM((11 43 1, 12 43 2, 12 44 3, 11 44 4, 11 43 1), (11.4 43.4 1, 11.6 43.4 2, 11.6 43.6 3, 11.4 43.6 4, 11.4 43.4 1))', 4326), 32632)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('POLYGONM((11 43 1, 12 43 2, 12 44 3, 11 44 4, 11 43 1), (11.4 43.4 1, 11.6 43.4 2, 11.6 43.6 3, 11.4 43.6 4, 11.4 43.4 1))', 4326), 32632)) -POLYGON M((663019.070082 4762755.64169 1, 744533.019451 4765182.932802 2, 740526.321055 4876249.126963 3, 660349.410579 4873817.333441 4, 663019.070082 4762755.64169 1), (694349.575562 4808033.274618 1, 710545.984354 4808519.151148 2, 709851.653212 4830731.987849 3, 693708.725206 4830245.931093 4, 694349.575562 4808033.274618 1)) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform19.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform19.testcase deleted file mode 100644 index 3043f49..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Polygon ZM -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('POLYGONZM((11 43 100 1, 12 43 101 2, 12 44 102 3, 11 44 103 4, 11 43 100 1), (11.4 43.4 100 1, 11.6 43.4 101 2, 11.6 43.6 102 3, 11.4 43.6 103 4, 11.4 43.4 100 1))', 4326), 32632)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('POLYGONZM((11 43 100 1, 12 43 101 2, 12 44 102 3, 11 44 103 4, 11 43 100 1), (11.4 43.4 100 1, 11.6 43.4 101 2, 11.6 43.6 102 3, 11.4 43.6 103 4, 11.4 43.4 100 1))', 4326), 32632)) -POLYGON ZM((663019.070082 4762755.64169 100 1, 744533.019451 4765182.932802 101 2, 740526.321055 4876249.126963 102 3, 660349.410579 4873817.333441 103 4, 663019.070082 4762755.64169 100 1), (694349.575562 4808033.274618 100 1, 710545.984354 4808519.151148 101 2, 709851.653212 4830731.987849 102 3, 693708.725206 4830245.931093 103 4, 694349.575562 4808033.274618 100 1)) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform2.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform2.testcase deleted file mode 100644 index f775958..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - zeroblob arg -:memory: #use in-memory database -SELECT Transform(zeroblob(48), NULL) -1 # rows (not including the header row) -1 # columns -Transform(zeroblob(48), NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform20.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform20.testcase deleted file mode 100644 index 22f8313..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Polygon -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('POLYGON((663000 4762000, 663100 4762000, 663100 4762100, 663000 4762100, 663000 4762000), (663010 4762010, 663020 4762010, 663020 4762020, 663010 4762020, 663010 4762010))', 32632), 4326)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('POLYGON((663000 4762000, 663100 4762000, 663100 4762100, 663000 4762100, 663000 4762000), (663010 4762010, 663020 4762010, 663020 4762020, 663010 4762020, 663010 4762010))', 32632), 4326)) -POLYGON((10.999546 42.993204, 11.000772 42.993182, 11.000801 42.994082, 10.999575 42.994104, 10.999546 42.993204), (10.999671 42.993291, 10.999794 42.993289, 10.999797 42.993379, 10.999674 42.993381, 10.999671 42.993291)) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform21.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform21.testcase deleted file mode 100644 index 53ada83..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform21.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Point -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('POINT(11 43)', 4326), 32656)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('POINT(11 43)', 4326), 32656)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform3.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform3.testcase deleted file mode 100644 index ecdea8f..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Point -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('POINT(11 43)', 4326), 32632)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('POINT(11 43)', 4326), 32632)) -POINT(663019.070082 4762755.64169) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform4.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform4.testcase deleted file mode 100644 index dba97a7..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Point (unknown srid) -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('POINT(11 43)'), 32632)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('POINT(11 43)'), 32632)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform5.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform5.testcase deleted file mode 100644 index 63f907c..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Point (unknown destination SRID) -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('POINT(11 43)', 4326), 326320)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('POINT(11 43)', 4326), 326320)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform6.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform6.testcase deleted file mode 100644 index 532b051..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Point (NULL srid) -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('POINT(11 43)', 4326), NULL)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('POINT(11 43)', 4326), NULL)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform7.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform7.testcase deleted file mode 100644 index 8e79010..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Linestring -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('LINESTRING(11 43, 12 43, 12 42)', 4326), 32632)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('LINESTRING(11 43, 12 43, 12 42)', 4326), 32632)) -LINESTRING(663019.070082 4762755.64169, 744533.019451 4765182.932802, 748464.920716 4654130.891324) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform8.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform8.testcase deleted file mode 100644 index b767437..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - illegal Linestring -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('LINESTRING(11 43, 12 43, 12 42', 4326), 32632)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('LINESTRING(11 43, 12 43, 12 42', 4326), 32632)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform9.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform9.testcase deleted file mode 100644 index 6a08d91..0000000 --- a/src/spatialite/test/sql_stmt_proj_tests/transform9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -transform - Linestring Z -:memory: #use in-memory database -SELECT AsText(Transform(GeomFromText('LINESTRINGZ(11 43 100, 12 43 101, 12 42 102)', 4326), 32632)) -1 # rows (not including the header row) -1 # columns -AsText(Transform(GeomFromText('LINESTRINGZ(11 43 100, 12 43 101, 12 42 102)', 4326), 32632)) -LINESTRING Z(663019.070082 4762755.64169 100, 744533.019451 4765182.932802 101, 748464.920716 4654130.891324 102) diff --git a/src/spatialite/test/sql_stmt_security_tests/blobfromfile1.testcase b/src/spatialite/test/sql_stmt_security_tests/blobfromfile1.testcase deleted file mode 100644 index 7162b02..0000000 --- a/src/spatialite/test/sql_stmt_security_tests/blobfromfile1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -blobfromfile - null input -:memory: #use in-memory database -SELECT BlobFromFile(null) -1 # rows (not including the header row) -1 # columns -BlobFromFile(null) -(NULL) diff --git a/src/spatialite/test/sql_stmt_security_tests/blobfromfile2.testcase b/src/spatialite/test/sql_stmt_security_tests/blobfromfile2.testcase deleted file mode 100644 index 03b39fa..0000000 --- a/src/spatialite/test/sql_stmt_security_tests/blobfromfile2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -blobfromfile - non-text -:memory: #use in-memory database -SELECT BlobFromFile(32) -1 # rows (not including the header row) -1 # columns -BlobFromFile(32) -(NULL) diff --git a/src/spatialite/test/sql_stmt_security_tests/blobfromfile3.testcase b/src/spatialite/test/sql_stmt_security_tests/blobfromfile3.testcase deleted file mode 100644 index fefa3c6..0000000 --- a/src/spatialite/test/sql_stmt_security_tests/blobfromfile3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -blobfromfile - missing file -:memory: #use in-memory database -SELECT BlobFromFile("no such file.whatever") -1 # rows (not including the header row) -1 # columns -BlobFromFile("no such file.whatever") -(NULL) diff --git a/src/spatialite/test/sql_stmt_security_tests/blobfromfile4.testcase b/src/spatialite/test/sql_stmt_security_tests/blobfromfile4.testcase deleted file mode 100644 index f38850f..0000000 --- a/src/spatialite/test/sql_stmt_security_tests/blobfromfile4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -blobfromfile - emptyfile -:memory: #use in-memory database -SELECT BlobFromFile("emptyfile.txt") -1 # rows (not including the header row) -1 # columns -BlobFromFile("emptyfile.txt") -(NULL) diff --git a/src/spatialite/test/sql_stmt_security_tests/isXblob1.testcase b/src/spatialite/test/sql_stmt_security_tests/isXblob1.testcase deleted file mode 100644 index 9f77078..0000000 --- a/src/spatialite/test/sql_stmt_security_tests/isXblob1.testcase +++ /dev/null @@ -1,27 +0,0 @@ -isXblob - png -:memory: #use in-memory database -SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT BlobFromFile("sql_stmt_tests/k3b-icon.png") as blob) dummy -1 # rows (not including the header rows) -11 # columns -Hex(blob) -IsPngBlob(blob) -IsGifBlob(blob) -IsGeometryBlob(blob) -IsZipBlob(blob) -IsPdfBlob(blob) -IsTiffBlob(blob) -IsJpegBlob(blob) -IsExifBlob(blob) -IsExifGpsBlob(blob) -IsWebpBlob(blob) -89504E470D0A1A0A0000000D4948445200000010000000100803000000282D0F5300000231504C54450000009FA1ACA1A0AAAFB2B7A3A7ADAFB2B7919AABADA796AFB4B6B7BBBDBCC0C4BEC4C62122239FA495B9BDBFBFC3C5000000000000121212131313989CA4A2A7AD989CA5A2A7AD5E61640000000404040000000303039B9FA79EA2A99A9FA79EA3A91D1E1E1A1B1C1415162A2B2D2B2C2E212223979CA9AB9AA2B4B8BCADB2B6BCC0C3C8CBCE504C535A585C737374767673EBE6E7F0F0F19CA7B1B1B39CC6C8CBCCCFD0D2D5D7D2D5D6A8A8A8ACACACB8B8B8888889878788B2B4BEB9AFB8D8DADEC1C4C9CCCED3F4F4F5E9D9CD898A8BBDC3C98E8E8E959595E7E7E718181E1B1B2123222927252E3231393938423E3D4441404B4A49504C4B574C4C504F4F5651515559585E59585F5958605A5A5F5D5C645E5E625F60687272757B7C7F7D7C818080868686898A8A8C8F8E90908F9493939495949696969B9797989A9A9B9F9FA1A3A2A7AAAAADB4B4B5B6B6B7B8B8BCB9B9BDB9B9BEC2C7D8C3C3C5C6CEDBC7C8D0C7C8D1CBCCCCD1D8E4D2D4C5D4D4DFD4D7E3D5D6DED6C2BDD7D7DED7D8DDD9D9D9DACBD3DAD7BFDADAE2DBDBE2DBDCE3DBDECDDCD6DEDFE0E7E0E0E7E0E1E7E1CCCDE2D8DEE3E5ECE4DAC6E4E6D5E5E4EAE5E5E6E5E5EBE8E7ECE9D9DBE9E9ECEBE8EDEBEBEFEBEBF0ECECF1EDEDF1EFEEF2F1F1F4F2F2F4F2F3F3F3F3F4F3F3F5F3F3F6F4F4F6F4F4F7F5F5F6F6F6F6F6F6F8F6F7F7F7F7F7F7F7F8F7F7F9F8F8FAF9F9FAF9F9FBFBFBFBFBFBFCFBFBFDFCFBFCFCFCFCFCFCFDFDFDFEFEFEFDFEFEFEFEFEFFFEFFFFFFFFFF42B14FFC0000004A74524E53000B0B0B0D0D111111111213212526282D303F404B4B4C4D585B5E60656C6C6D6E6F71768181858F9090929498C7C7C8C8D0D0DBDBDCDCDEDFE6E6E9F1F2F6F6F7F8F8F8F9FBFDFEFEFEC6B2B0FB0000010A4944415478DA35CF855242011445D163777737767762777777773776B762072A0662A2A0E0FD3A9FCCB03E60CF6CC829993B385AA84141DD3D6E8CB3329BE8AD0D39BDE0A1A9A50DEE19FF2EDC000C8D90C991E975EEE9D5CBB738420780C7CCE2EAC4CE05FF5D267DE3F900CAEC85ADDDBDD4D898F4CE8EB6D6145D988EAE6D1F250710E3B7EF809C60C7D9DC3F09F4A3F1DEAE86C101891BEC97995E90EF6D7FFBF58D544CAE309B3BE7BF26F93FD5940D57F7D4923354E2EF0522499AB0B0BCA2AAA494AC014FDEE787A0F939BFBBA8A0BE38C30AD00A133D5C36092B5BF27289220D01E8871E1F363E6666E76451B431FE697A25D4D1D78F6C3ECA44F1AB6AC962B9D8DA1801F8033208565E8EDAAFA30000000049454E44AE426082 -1 -0 -0 -0 -0 -0 -0 -0 -0 -0 diff --git a/src/spatialite/test/sql_stmt_security_tests/isXblob2.testcase b/src/spatialite/test/sql_stmt_security_tests/isXblob2.testcase deleted file mode 100644 index 9f2dde2..0000000 --- a/src/spatialite/test/sql_stmt_security_tests/isXblob2.testcase +++ /dev/null @@ -1,27 +0,0 @@ -isXblob - gif -:memory: #use in-memory database -SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT BlobFromFile("sql_stmt_tests/ktorrent_sidebar.gif") as blob) dummy -1 # rows (not including the header row) -11 # columns -Hex(blob) -IsPngBlob(blob) -IsGifBlob(blob) -IsGeometryBlob(blob) -IsZipBlob(blob) -IsPdfBlob(blob) -IsTiffBlob(blob) -IsJpegBlob(blob) -IsExifBlob(blob) -IsExifGpsBlob(blob) -IsWebpBlob(blob) -4749463839610D00B80BA52E00BDBDBDCBCBCBCCCCCCCFCFCFD0D0D0D1D1D1D3D3D3D4D4D4D5D5D5D7D7D7D8D8D8D9D9D9DBDBDBDCDCDCDEDEDEDFDFDFE2E2E2E3E3E3E4E4E4E5E5E5E6E6E6E7E7E7E8E8E8E9E9E9EAEAEAEBEBEBECECECEDEDEDEEEEEEEFEFEFF0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFFFFFFBDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC121F904010A003F002C000000000D00B80B0006FEC0952A853291449E4DA63201088946A492E91C168FC965F379956AAB50EC746B8D66A95CF318DC3D93C35E7459FC4DD3E570375B5D9FC7DF6D6B767F7B77807C78817D79827E7A838F8E8D8C8B8A898887868584909396999C9295989B9194979A9DA3A9A2A8A1A7A0A69FA59EA4AAAEB2B6ADB1B5ACB0B4ABAFB3B7BCC1B9BEC3BBC0B8BDC2BABFC4CBC5CCC6CDC7CEC8CFC9D0CAD1DEDDE0DCE2DBE4DAE6D9E8D8EAD7ECD6EED5F0D4F2D3F4D2F6DFE3E7EBEFF3F7E1E5E9DAC5AB870FE0BE81FEF205E447F09F3E81FD0A3E6498D020C4860A0F4674B810A1C48E1B335EAC38D123478D182D52FC889224C8942543AA342972E5C9912C71DEB45993E6FE4C993161BE74D93227CF9F428BEEF41994A8CE9E40871A652A756954A550933E45EAF468D3A957B77EB5AAD56BD5AC5DA962E50AB6AC5AB167D9924D1BD6ECDAB168DBD2755BF7AD5DB877E3E2959B77AEDEC38613175E4CB8F1E0C78223079E0CB8F2DFCB7E33F7DDCCB7F3DECF881943A68C993368C58E255BD6EC39746AD2AC4F8B565DBA35EAD1AB4DBBC65D5BF6EBDCB667C3D67D9B76ECDDC6890B07EE9BF7F1E2C383FFEE8D3C7AF3E4D29D2B9FFE7C3975E8CCAB8707FFDD7B77EEDBB567C77EDDBAF8F2E8D7BB277F5E7DFBF1E6D3B37F5F7F3F7DFDF3E5271F7EF1DD079F7DFC01482082FF0D78A07F021AD85F800526E8E0840B4258618312FE2AF820850C46686187177A88E1871982A861881B8AC8E18830BE28A38B34B668238B38AEA8A38A3CA6E8238A409E28A489449668248948C658638E3D0659649233DEB8E38F431EA9A4944D5609E592533A6965944C52F9E495617AB92596627EC965966382D9A59664BED9E69A699E59269C6EB2A9269A66C6A9A79D72EE79E79C7CE249679F79D6E9A7A289227AA8A185123AA8A08102FAE7A28E464AE9A58D423AA9A58C3E2A69A5987A4A6AA7A3722AEAA6A16A0A6AA69F969A6AABB1A2CA2AACA7AEFAAAA9AABA2AEBADBCD29AABAFB6EE3A2BAEBDD6AAEBAFC6027B6CB0C80A9BECB0CA12BB6CB1CC668BEDB6D7766BEDB7D5864BEDB8D3962BEDB9FED1A60BEDBACFB6EBECBBCDC6ABADB7E29AABAEBBF2720B2EB9E8B20BEFBCFBDAEB6FBEF4F27BEFBFFAD6DB2FBE002B7C30C1012F8C70C102339CB0C103378CB1C5144B0CB1C3195F5CF1C4113FACF1C81F6F4C32C81C971C72C7268BECF1C933CB1C33CC2FBBDC32CB2BAB9C32CA34DFAC73CF40DB9C33CF3FD78CF3CE3E077D74D346335DF4D2442B3D74D24223EDB4D4566B1D75D559434D35D64F4F7DF5D66097DDB5D8677F4D36D7619BEDF5D868BF9D36DC6AC7BDB6DC6CCFDD36DD6ED72D78E084036EF8DF88FBAD78DF8CF3EDF8DE90EB2D79DE94E36DF9DD98DBADF9E0872FFEF8E4976F5E78E28D475E79E69C93FEF9E9A2775E3AE8A88FEEB9FEE9A1A73E3BECADAB4E7BECAEAF5EBBECAFB36E7BF0BFF7BE7BEEB70B0FBCEFBCEB8EFBF0CC234F7CF3C917EFBCF2C63FBFFCF1D073BFBDF6D9637FBDF5D5533FBDF4D1770FFEF8E6A7FFBDF8E5A3EF7DF8E49FAF3EFCF6BF5FBFFBF4B73F3FFBF25B5FFCEEB7BFFF0D507FFE1360FEFA1740FCF10F80044CA0030DB8400822104A2A48C6106CF1040E0EE1049A60C10A8450841120810319C840004448421398D0032854210B33E8C213A6708523A4E10B39A0810C0860866DE0A10F8108C213F6F087394401084700C3231291044CEC8006348044122EF1031D50C2009E38022C6A918B5844E11693B8441074808704E022089A98463242718D3C2C8008FE5590C1327A208B7274E308D6884722BA30041FD8C0060C30C3149CE08F1FE0C0060E30C70F2292031C60A4101C390240425292563864251319C93912419396E400023CA9C4478AB291A5DC24073A304A32D6D08B09F0A30961294B11C0510185D4E41E6188CB1C1AD285BBE4C00266A88243BE118BC3F4A53137D98164E67099806C2631515082128820046B64000B4958CD4A66739B19EC26363DA0CD1176B004DE242738536002748EB39CBE6C673AE179CE7436009C2A90A72D3D70CF6D12019DD704810358E0CF1300149B030527358F10821024D49CE16468081E405088A6A00412A5A8428D50C9895634891C6DA846734843288AB405D3C4A8086CFE09019492949AD664A94B27598483B6749AF2AC6404664AC79A8E40A73CDD203043B0D3692E53044525E92FA12802091094881835E1049E4AC6A88A800254B522468F80D58FD6B19A5CCD6A1DDB09C50A88B594DD34AB57D18A4EB5FAB19B16F8E8130E6904125C40AE8EACEB5DD7790263DA55AC863C6435310058B612D6AB9F34A8093080D2422A91AE1968AC2F1F6B02136440AE56346607B26A452596C0039CB582673F20D9C99692B47825C2691B5BC8C48280B54A45816C43D082D2AA800B2810416D9FCAC214586104BBCDAA6F89005CD6F6D60A2408AE57877051E58AB091C574EE0A66B802144897BAD635EE74E758DDDAB2B605D3F5A5779F0A415E8B8E97A0E535670ACECB02F0FA93BDEE15AF724BBB82F5CE57AEF6FD6E7BD5EB5DF6EE5705FD752E78011C60DE0E38C0286DAC4B11DC5EF48A10C1C175691000003B -0 -1 -0 -0 -0 -0 -0 -0 -0 -0 diff --git a/src/spatialite/test/sql_stmt_security_tests/isXblob3.testcase b/src/spatialite/test/sql_stmt_security_tests/isXblob3.testcase deleted file mode 100644 index ec8360d..0000000 --- a/src/spatialite/test/sql_stmt_security_tests/isXblob3.testcase +++ /dev/null @@ -1,27 +0,0 @@ -isXblob - jpeg with (token) EXIF header -:memory: #use in-memory database -SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT BlobFromFile("sql_stmt_tests/ktorrent_grad1.jpg") as blob) dummy -1 # rows (not including the header row) -11 # columns -Hex(blob) -IsPngBlob(blob) -IsGifBlob(blob) -IsGeometryBlob(blob) -IsZipBlob(blob) -IsPdfBlob(blob) -IsTiffBlob(blob) -IsJpegBlob(blob) -IsExifBlob(blob) -IsExifGpsBlob(blob) -IsWebpBlob(blob) -FFD8FFE000104A46494600010101004800480000FFE100164578696600004D4D002A00000008000000000000FFFE0017437265617465642077697468205468652047494D50FFDB0043000503040404030504040405050506070C08070707070F0B0B090C110F1212110F111113161C1713141A1511111821181A1D1D1F1F1F13172224221E241C1E1F1EFFDB0043010505050706070E08080E1E1411141E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1EFFC00011080014000103012200021101031101FFC400160001010100000000000000000000000000000607FFC4001C1001000104030000000000000000000000000401031453151661FFC40017010003010000000000000000000000000003040607FFC400161101010100000000000000000000000000000313FFDA000C03010002110311003F0087EB9E8B6E62269B225729361D6CCC33E56CA8019F7FFFD9 -0 -0 -0 -0 -0 -0 -1 -1 -0 -0 diff --git a/src/spatialite/test/sql_stmt_security_tests/isXblob4.testcase b/src/spatialite/test/sql_stmt_security_tests/isXblob4.testcase deleted file mode 100644 index 799a999..0000000 --- a/src/spatialite/test/sql_stmt_security_tests/isXblob4.testcase +++ /dev/null @@ -1,30 +0,0 @@ -isXblob - jpeg with plain jfif -:memory: #use in-memory database -SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), GeomFromExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT BlobFromFile("sql_stmt_tests/sandro.jpg") as blob) dummy -1 # rows (not including the header row) -12 # columns -Hex(blob) -IsPngBlob(blob) -IsGifBlob(blob) -IsGeometryBlob(blob) -IsZipBlob(blob) -IsPdfBlob(blob) -IsTiffBlob(blob) -IsJpegBlob(blob) -IsExifBlob(blob) -IsExifGpsBlob(blob) -GeomFromExifGpsBlob(blob) -IsWebpBlob(blob) -FFD8FFE000104A46494600010101006000600000FFDB004300080606070605080707070909080A0C140D0C0B0B0C1912130F141D1A1F1E1D1A1C1C20242E2720222C231C1C2837292C30313434341F27393D38323C2E333432FFDB0043010909090C0B0C180D0D1832211C213232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232FFC000110801BC019103012200021101031101FFC4001F0000010501010101010100000000000000000102030405060708090A0BFFC400B5100002010303020403050504040000017D01020300041105122131410613516107227114328191A1082342B1C11552D1F02433627282090A161718191A25262728292A3435363738393A434445464748494A535455565758595A636465666768696A737475767778797A838485868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE1E2E3E4E5E6E7E8E9EAF1F2F3F4F5F6F7F8F9FAFFC4001F0100030101010101010101010000000000000102030405060708090A0BFFC400B51100020102040403040705040400010277000102031104052131061241510761711322328108144291A1B1C109233352F0156272D10A162434E125F11718191A262728292A35363738393A434445464748494A535455565758595A636465666768696A737475767778797A82838485868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE2E3E4E5E6E7E8E9EAF2F3F4F5F6F7F8F9FAFFDA000C03010002110311003F00E7A63E58C2F5A8A3259B9144F932F1DA9DF7938EB5CAAC6EC942957049E2AC34E235155A29047804673533468E410719A99414B4218E7954C79C1DC6A4B2642DF21FAD218D4C617AD3A3B4318DCB54E8C6F6B9375B171C608C77A4DA0723AD4225DDC13C8A59AE4469CF3E9554612827CAC9E5EC32691A352455337B23B6D04D2CB72D3FCA071489118D8498FAD6737389B463A5C922B2673BD8F5AB325B2797EE05391D4C791D69F80E8413DAB921527CDA99A93E6B1CC6A0B2962AAD5425B6610E5AB6AF4086427AD5195CCE028E95DB037B9911CDE4822B52D0968779CD5596C5B7E40AD6B4B561128038C735AF425B23B666F38291C1AB3F628FCECCB8C1AB5FD9FB7122727B8A8AEB7F93C81C5429F41295F433EE2D5239405EE78AB71C6020E7B5518964925249E053A799A3F9492293D50DAE83A72CAFF275AB96F7F709185CB0AA302BB1DC7935AF05BADC4391D452BBD912DA5A0D6BD778F0CE7352D8DC0F35738358DA9412C4FB17F9D3AD1655019B3C5394535EF21B49A3B7578576B155DBDFDAA1BEB28EEE3FDC63A66B063BC6C8C9C015A11EA5E56369A8D1AB1924EF638FD663786708C738E2B4349984B12C48393D6AA6BB3ADD5FA9038EF52DB1FB2A87420E450D3E4B22E71B1AF26991C9F2103279A866B21671706A8C9AD323648271EF56ADEF85E8F99703153084D6AD93CB6DCB1A4EA889BE2989C56D45756061666703EB5CCDDD8EC569554F159B148FB8AF35BA9329C5337353D42371E5DBE37671915269B17C9BE5EA6B02390C73E4F526B516579000AC40A372ED6469F92AEE5D78C77AAE18A4E7B5448F3C7DCE28944870C463DEB2690ACB62E4A1DE2CA803DEAB477064631C9F3678C55796E6541B4138C5436F38598FA8F5A86899268BD259C6483B40AD08E18E3B518E5B233F4A84C82450A42F4A8E47920889078A9A53704D128E7B5485DEE58AF037D64DCDA48581C9ADAB8BB469C2B2F350CE30BB86306BAA2EF1D4D22AE675B40CA84F5C547223BC9B066B46D24015948EB5616D2320C9D0D5329AE873732C904A3B5753A65D34B6613B8C5635DB45E61DE79157F4E936E0A8E2B44F415AC6D2C7BBEF534C4037CBD6A58EE41501979C75A52A0FCC2B2722B7162B60F8F3077AB2BB2D158E38AABF680AC15DB0296770C07395ACD4AC4DFA0EFED28FFBB4567ED87D28A63B1388D9DB766A5F2B0327EF546B2EC2715346E1816C73513B6E84EE4241246E26985C86C0356A70121DDD73FA55581433E722926DEE4FA97212FD6A532100F207E350C93C691E10FCD5488966CB64E0D69192BD992D21F24C4B900F7ED53A06D80BF4A6D9C2A189735627202E145126E3AC41BB11EC1C143565197006066AA443073939A591F6F3CD613ABCCAC0E572E92A2AB5CCAC8410D5596EB2D83D2A5660E3AD73A5283215D320B964963DA4E4D64CC4433715A5700015952C666623278AED83B9D0B6356CE48660A09C9ADC8E2531E140AE6F4F876483731DB5ACACD1BFC84E3AD697B12D96E777B5C038C524EAB3C448DBC8E6ABDC4CD30553CE2890F976ACC302B2B59E84346529D9707681C0ED4D92DCCF282073524316EF9CF735A11C6888188EF436DC95C3616D6148D4029CFD2B46358421643B5B15424BD4CEE180CB5546A4C250C3E95A3496A8D2C90F9545C5D2A939C1AD3B6D3A39131C64565199DA5F315307D7157ECEF248F923AD65CD27A33297910DFE9FE53652B318BAE54E6BA2FB50958865ACCBC306E2C78AA50499317AD9986D67E74DB9873EE6B40D895B704F4C7AD1106918B295D83DAAFC68C63E7A5134FA1ACAE73B2D96E2715369F6F24326DE715ADF620AC189EBCD3E2B6CB0E78F5AD2DA06E36EDCB45B36F18AA16D14692E48E48AD7BA81120DEAC49F7AC891F6364F7A8BBBD90ED6216B5696E8140703DAB41A29309B570075CD4BA588DBE6DC377BD6D3881E0257018751EB577B2D48948C41763E4475E6A596E50C206DC567DD2849B23D6AB35D10369E952A3ADC1334F08E8718E9583743C8988049C9E82B5A201EDC90C738E959132CAB38CA9233D69B5729BD0E874DC4F165B3B40EF4EBC62C1906738E2ABE992930640C01D73523DC61CB374A53A6AC4C7439B9E1717592C7AD3EE66DB08526ADCD26F727670735957870DC55A7A58D63DC44BB112E69EF7CEE9956359524723B67071535B8DB8073BAA9A25B63E289EE2E7735743671794A062AA5BC7198F7A9F9875AB3148C930C74A71611376D4C0ABFBD1D689539CC472B598F261860E0F5A58EEA4924D91124F7ACE5665105F098C9819A6C7E62A7CD9AD68A357CEF5CB5588B4F4DA7CC5F96946C294D18DBE3F7A2B67EC367FDCA295919F3A284ABB73EA285621783572F210916E93AD6389CF2AA72B9A1492DCB8CEE5A7B85F2886A8A2324BF2C60E09A87CA321041AEA7C356F0484C7228CD29479824D1942C1C2867069E0AA4654AEDC7EB5DDDCE9F6CB6E7E51D2B88D5422C8C141001A8E5B33353B9044F96E29F2C809009159F1B75C1A1CBB2F3D29B684685B8567E48C54D7289B40522B151DB76326ACAC9271BB2454AB3D1A08C6EC2E202002386A626E5FBC307D6AFF962664CF4AB77360AB16E0474A27C91668EC63CF8F2B3D78AA56D1F985B03BD5BB8011B6B1E2A3B7951186315AA8E9745BD8B76D0AEEC77AB2919590861C55769D11C321C9A53702543CE0D2775B9832748402CC181F6ACFBEB96542AA6AF5B95D87CC7359F7A232FD49152DDF6057B95209A451D3BE6B612EF36F823B553822495311FDE14E8E611131C839A15EE532B4A5B793D0135AFA4E9915C1F3646C0159B727760A0247D2ACC578E96E235C8C569A0DDDAD0E8E65B1B75E194903A562DD6A51862B128FCAA8B79CC093B9B3EB55D62669390C315124C8E5B6E5FFED2644CB20E7DAB2EFAF45CB6D43863E956C94F2C86038AE7E639BBF93D6A612E834BA9BDA6C726DDA1B033D6B50799171B4FD6B12DA4F940E7356D2FDA27C392456CB52AF226BAB9742158633566D1D5D46587D33542EE54B8883E7F3AA705CEE72AA7A53B341AB3AE8AD639970C462ABDDE851C8A7691F9D621BD9E08CB2B9AA6BE2AB889CA1E68F7591CB27B1ABFD8D35B31113633E94D924B8B71F30C91505A7884C9303236DCD5DBCBA49632EA3F1C54CA2839ADF114B7BDD3EE75E9556E6D955B72F5A8E4BC68C9C1205471EA11BB61DB9A6B5D8D3D0B3672132F96091EB5A0230FC1C567DA812CDF20AD78230BC3F5349BE84912DB32A9F28601EB8A85AD2E300E188AD62040A1997E53DEAF453C0F0E3159B972EEC96D9CABA80D87419EF542482396751C6DAE9B52B78D90B2FA5721347379ADE5E7835709A975358CB42DCB6688BC0CD2E9FA38BEBAF2FA5374F7B933A24CA48ADB7DD63751CF1E013D45689A5A89BBAD027F0A9B605831FCEA93C06252003915D10D57ED1101228CD53B82AD1B00A39ACDD5F7AC8CE329276673E0962771E86AE5A148C83EB55E580A316CF14D8DD54F2DC8AB5A9B5EE8DF836AB83EB5667B958E3318C7358ABA846F10552430EF42CB2C8F907358A7A9935A9A5C51553F7D455E8216F2EFED69B631D7AD57B6D3C004B7D69D6BB221F37DEABF1B8671E95CCE72BD81DD10A591C12AB9A7432BD94DBD49535D0C4B0A44A4E39ACCD412170769E6B452E55AB1467DCBABAACB7511C31248C5737AA09048793935622B892D14EDE955A69FED321663CD369BD4D144A36C1CB1FAD6AC70078F9F4A448A30A08EBDEACA1D98E38A9926C4D36CA31D9E6E39E055E4B252DC638EB4F65DC3280D32396446C9527156B468228936A47301C51792AB21553CD559655793207CD55E49D95B04F1594E3CD2B8ED7654B942F2E064D53689E36E322B5ADC2BCA180C9A59ADB73E76D752D2C5B9AB5834FB759E125BA8ABE34C5F2F2A4EFA9349B7467D8DC29AD868BCA976AE0FA62AF97988B5CC48B4D65187E79A827D38EE2D818AE8DA40CBE591F3E6A94CA3241EB495149DC6A36336CEC8447918CD597D263BA67E30C3BD2EF6538C7152A5C98C71C735A72A2D2221A4C22DF3BF2CBC62991DA26EC6C07356D672D9269B905B766928AB87290CD6A122FDD281EB541ED8B5B971F7C1ADADCACB86EF4A60DB0384C1CF7A5288389C75C9740C08AC7B65F36F0B01CD7577763210DEF5434ED2985D0C9EF9359C29EA2B5916EDAC4F925C8ACABB53BDB03A1AED2E16386D9109038E6B16F6C53C82EB839E6A9AB3B2239AC732C6428474150AA10FB831CD59955951C01D3D2A8C32319B695EF47A976D0DB8EE11ADB6375C77EF5913D982ECE077AD04B56900299CD25D42D145F364543D04B429D95B34B3A8C702BA395521B72319207E55574844C827F33526A6C76944E7F1A3DAAD8C9EE60CECD3CCCABD3352DB6932CAF902AC5BAC71924AFCDDEB560BD10E0AA8349CE2B52AF61B636C6C9C6EC669D7377E5DC8C83F85477372D2CEADF773E956D34E33A891B26A14B9DE84DC94DE35D43B1B9514F556823DE0E57D2A54B68618BE7C0A85D034676B647A66954A4DEA3BDF42BDEEA48C87E604F4C547A67D9DCB3BEDC9AC2D464F2E723DEA6D2A744219C9AB8538D8D251B2D0E99AD637914C6A1467A8AB9259C2B18691C961D05627DBB3CC44E451F6C9193E673549A5A196ACD19A38946500CD352DA475201E2AB40E1F0ACC6AF21D831BA9B485668C5BDB768D8824D67BA6D5F97926BB982D2DEE53E7C13552EF4681918A6030E6A13B32E3516C72F6F03860D5B5630A632E696D523F99187DDEB556EA5584B18891533B3D86F5357F73ED45733FDA12FA9A2B3E590CBF359B862C87233D33562CD18BED6EB5316690E01A72DB9116F1C3A9A728F32D09E5722D943B3058D51B9DD8386E95777F99B54919AA9771321C9E86B9D51A97BB25C1A3325B97DBB48C7BD2C76CD2464FE35604119F99A9AF3345809D2BBA3A2D4AE633DA796D9FE66CAE6B7F4CBCB59E20ACC035511686E46E3CD67C96A6090ECC839A57426EE75933C16F1EE0C0E6AAC2CB2877ED585FE912A85DC58569D9C86280A91CD24D028D86BEC0EC4F18AA93B46C6A697A9383CD5616E5B712322A22A4DEA5242D8DC86970BDAB7A2113A8F33A5615BDB7D9F2E0633561EE5963F95B9AEB514D072B66A4A8D6CC190E54F7A924BD668D76707B9CD64457F205C3F407A521BB5572C01287B568A362E31B1A323C8C3218E6A3599C1C30CD555BF848C6E3F4A6C9768065723DE997A17DEF220B8D8775536B9DD9DBC7D6A9BDFC4CA42805AA9BDD10D90314981BB0EA007CB260E6A7F396442ABC5728D7FF00360D588AFBD09A561A67422E0960B9EB57E1B9C46C871D38AE6C5E062A33CD68C528F2FB9CD00CB129F3140CD374F0B6F3EE6E6A16DDD4A9C52A44DC3026AA3125D993DE5C0964EF8ACF98B08CAA9F94F5AB6F3281B5D727B544CC9B71851DEB1941AD4CEDA98D6F6A669FCB23A9AB575E1F6800655F7A96DF6A5F06CF02BA976436E0AAEE5C7358D476444A4E2CE26D1CC5742274F6AB3AD08CC6BB7AD695C450ADD799803158DA94827B95588E547A53BA71D071D5DCA7179912E5692499D949639ABC96B3B20C8FA5413D932AE76F1DEA1A57D43DD331AE0A9E8685D40E7183C569A58C663CB019354E4B2891C9E0FB5528402C9920BA2CE84D7456D76E6DD4E722B9868589181C0AE86C7E6B45E3A75AA518AD899C52D892EA4927C04C8A6AC1288F68E49AB65D7002819A05EAC71153B7352A69BB5C13387D4D1D2E595877A742AE60E335AB7C90CD3B3BE3F0A8C08D13E515527CAB4346F41D618119127DEED560A2B37CB9CD55F30120E3A55FB650CB90C302B35EF6E28F7258230A320E0D48E431081C934AD6EC5320E0D5531C88C5F18C77AA9241A1665BC6B7503730FC6922BE91F80C4E7D6B3A676B97C67914F84CB6FCB722A254D5AEC4D2DD13B993CEC86C64D5B96CA0FB296763BCF3C9ACB9EE5DDC6D1CD598A5775646C9C8A70DAC540A3F668BD28AB3E437A51556197B732AAC8B9CFA55D82E01521D4E2AB6F884BB4B023AE28B8B901B3101C534AC692D116248E6077203C552B896565C30E95AD67741A221F9CF634CBC48CA80075A72764649B7B9908588C126A786C9A51C8357E1B153B5B2055CDEB1FCA00E3BD73CA49194AD7D0A696A208F7303557EC4B71B9B774E79AB5784C876A9E3DAB2E795ADFF00D5B93EA694277DC493420CDBCA3D055BF314AEEC0F7ACAF3CCC0E7AFAD2FEF5149C9C56D08F565A4CD433DBFDE6C715526BA46E231C565C92396DB9A74730036F1EF5718F315187565F92E95A0DA383545A6656E738A9B642E99DDCD5770002324D6E958D50EF3D4F73BAA19AE004E324D4582BCE0E2A5B785E66F9467DAA9B2922012CACDF22D38C7339F989C62BA1B4D19E5C1740056849A6C76F09017E63EB52E48AE4672D145B23C18FF001A69B6791BD05755168AC2332CA98CF4A41A67CFB767068E743F6672CDA4B93D31DF34F82D4893CBC64D75CFA76C83762AAB69C194346B86CD1CE907B3673973692C278CB77A75BDCB8187C8C5744D6DF26D65E6B3EE74E27E64068B8B95A245BC32205660C076A74775B1FE539F6ACA8F10BED93E5E7A9ABC8B1AB874915891D335A42572251B16819267DF8E2A5B9B450AB2EE04E3A556FB4242B82E0F3D05496D70970CC9B80AA6AE40D8EDF2C0E2B52D98AA6D3D2991A94E3A8C52991924031C573D4A69E8C4E2A454BE4FDDB1DA473D6B374C8152E8B4A720FAD744CA254C11D6A9358A46FBB0466B250E4D81C34099E3DC020E3B552BB05A3CF4C7EB53CAA911C83546EA767C8403A566D36EECC54599D25DB2B150B93515BC325CC9B9860D5C8E04542F20C93E950DA4DB2EB6ED20138AA8D9152565A0DB89A4B63B0A023D6B4B4B94B0C30C034F9ADA39143639F7AA858C120028751DEC4AD51AAC5564C564EA4CC9C21EB5656662A49C566DD4A5C905AB0517CF72E31B156490CA154F63CD4F2288E2071DA99A7C22691BDAB4DA05D9B08AE89AD2E5E864A4FE648136F06B4576C2005E491F95361B758B7B6DEDD69801E48E953CD6417E84E2F1C0C9EC6A49AE32A03E3E6AA139022CF3C551696675C163B6886A4346D048E32240C29D713F98BE5A8AC74B870A16ADC722AA6E6355E424996EDC2C52A34C702AD5CBC6CCA6D5867BE2B026BB695F686E2A7B6B8168C19BB534ADAA2D2B6A6879777E868A3FB757DE8A9B95CCC65C6C0BC3F3E951DADC046C120D51B82D34C719A7DBC522B6D23AD28EA42379278D88C707FBBEB561DDB2A7F86A85AC1BA3E7822AD96963B6E4657349A7DC4CB4976ACB81F7AABDC5EEC1822A0B7FDEC873C1A5B86C29561C7AD60A9F33B9318A6C8DAF5A58C8E54F6AAA632E32DCD4E20E3746777B51BFE5DA7835A72EBB1725D88EDADCB4D82BC568C962E230A0706ABC44A0DF91ED514DAC3C64C790D55EF3D8145943508D6038EFDEB29E71D3356350BB32C9B9F8AC992652DEB5D34E324B52D16C5CB03C3714E5B87638DC6B3C4A49C2D741A26912DDC8AECBC6456927646905763EC6C27BB208C81FCEBB2D2B458A3452C70DEF5ABA5688B0C6A5900E2B623B4883636573CEA763A141257328411C2DB63F9A4F6153DA69524D3F9938DA17A0ADA8ACE2DC0E02B763530B69B3F2B67EB4E226CCD92C2338500D41269C106702B7D2DC8FBDD695ED948E141A56EA2E6B1CDC9684C2C0293590D13C1303B322BB0962238C62B2A7832C72A0D4DEC5C59962D96E172AA03546B6BE54BB64515AB1DB37F0260D366B5B8917E64C01DEA9484EC72FABE8AB3A99235DAF5CCB5A5C45294319E3B8AF4E8ECCCABB0E73E9505CE8411BCCD8369E0D3E66B506A2CF2CBB9658F77CA476E6A2D2F5065BA0AE786AED756D054C6CC16B85FB3FD97515ED835B52AB77631AB4D257476D6D778552B82BDEAE6E571C9EBDAB9E8E42846D3F291E95A105C212037CBEF5B4B7325B1A6C372FC840351B1900C32803D69A170BC37068705700B641ACDAB8CAF2C2A7276E47A8A8E3D3FCC6CEDE2A612491B7CAD91E86AF59B317E71CFA56328E867233E5B38A35D8F8ACEB98A2421971C56F6A2A255D8A0EFAE72E20624A93CFA563CCCCD223379BB807DAA1B857765614490889727AD3332B61BF8455246D106326CC7355C2160D91CD69B3C49065BA9150C4D1648C8E6AB9496EC54D343453E08E0D74712C4E9BB1F38ACF8AD148DEB5AB6691B47F370450E2D99F35CAD2C024538C5575B144255CF5E956EE06C63B18E2AB08DE7942E6A5C4D23A14AEADC46A4679ED59E96D2313806BA7B9D2D9234773C1E2AACEB1C0032E188A2324129186D6CCBF29C64D2ADA4F2360A9DB5D3E916505C48269CAE3D2B62F21B18E12576F029BBA5733F69AD91E6D7567244F95EB54A49645386E6BA2D52E944C4200547A561CB8B8B90AAB834A1293D0A23F347A5157BFB2DE8ABB05CB89B5183704D58FB42291C0A80C0FB37015098E40DCF4AE74E4D917B9A915D38195ABD6F722E0B213C1AC7806EE054920922F993838F5AD05CA7450C36EA30CCABDEAB5EF922220373DAB005DDC96C3EE22A691DA58B38E40A4D7612BDC48EE1E198004804D5D96781828380DEB58A66F9F6B1A90C2EE0143BAAA37364EDB9A6C437CA1B8C5625DA94909FD6AEC70DC6D2C3B555BE98888EF5C1E9546AA57463DC5CE060F35577296CE2A39DF32127A669605324800AD5099B5A1E98DA85CAA81800E7EB5EABA35847668A020181C9AC4F09E9BE4D9F9BB704E2BB0B6882F240AC6ACBA1D34A3A5CB91A2923157618323A55584027815A9011C035314549E83A28005E477AB4A836F3D0530B85028F313D79AD0C58FC2FB52140698641C62977D17158AF3C391C0AA52DA16E475AD5CE47423EB5132AD4B452958CA587675AB7188DE3DA466A492253D7AD45B769C0CE292299524B4757DC838CD5F5459622ACBB4E3AD4B16D03E6A4930A32381552D89673DA95A654A91915E5FE24B236D73E6A8EF5ECB76A92C5B8726BCF7C5967BA0638ACE32E59A364EF139BB7937DB2483A8EB56D0A91BBB562691721247B5978049C569C5B95B693F4AED4EFA9CB6B5CD9B36F308849F97D6A676F2D8A13C67AD65412295250FCC0F35712549464FE34D88B4E8AEA1F2A40A9ADE5546C0C0A8E2CAA6DFE135048460B2B104563376224AE8B97775E58E3696AE7EE44D2C8641F77393537DB064890671ED55E7D5146026467B62B06AFB1118114872BF30AA77137969B7B5692CB1CB1E4F5F7E2A19ED22788B6FE7146A8B5646499BCD5C134D96711C8857823355F3E4CC71D8D4371234F28F6A7177645EE741A7EA1BA250E01607D6B5A3B98719FBA3B8AE72D60912D7BE0D59198EDF1CE4D69715936695D5CA09032F4A6B5F2C255947CB594B704B61C6714F7963F2F6FDE27B54295F41E8F437354D7239AC9638C7CF8C573F2BCCF116C9AB165664B07704A9ED8ADD9B4FB76B3255467152ED129B5B1C8C5AADDC0C5558A0A9CDF5D5D11BE4622AC4BA7066248E29F6B6055B38E2AE3A912496A52BD2CB092413C77ACAB462D72BF5AE9754548AD082064D62E9702CB71803BD3F2426EE8DADF27A0A2AC7D968ACB9591CC3E7223B7DB815451C73BB18AB1A9DEC1E52953838AC579B3CAB1E6AA9C6E99A289A913C692E5783FCEAF3AACF1650FCDE95CF5A095E655EC7BD742B6EF0C40E4F22869A15ACCA6B2794C5644EF56522329DA8BD69D25A79E8181C11CF34A924B0018619142B0A450BDD16757F342E02D5AB29A282DBF7806E15249AA5CCDF2390474AA4EB1B0209009AB5E434EFB8B35CF9CC7C9231DEB0F532CB192CC6BA3B6B48BCA2432D61788D045B54107E94752A32B3B1CCB37CDF8D6AE8B6C66BA45C719ACA55264FC6BABF0C460DEA2F15ABD8D23AB3D474E8560B08D40E702AEA4A138A8A00AB0A81E82A46C2906B8A4FDE3BE0B42FDBCC091DAB4E3689B18E4FD6B9D490F9838ABF048E7A71FD6AE2C528E86D87555C6051E728FE1AA7E6BEC2314CDCDD4E6AB98CB94BA6507B6293CDC1AA8920CF5A93706E7AD170B16FCCC8EA0D2EF045552572300D264E0ED6E68B8B94B0D8269A63C722ABE64F5A9E370461A80155493C83C539B19E4FCB4E041E94E2A08CF7A64B6529E2C2E54900D727E27847D89CF5E3AD76D291B086F4AE23C4EC3C860A3039AC9EE6B06790DC86B7BD2CBEB5B505D89163627B62B1EF97FD218FB9A7DA4C231B4F7AEE83F74E79FC46FA38864DE3BD5817217A8F94D6525CE70AC06DA9B398D81E0F51CF5A7703A28240F08208C531B19259B8ACFD3AE03ED04F03B55FB84E772E4715135A0B72BCD0C2E8581E7D2B31E0323E5578156AE498C03B855BD205BDC4A51DF69358A8DC87EEA334C68A00CE0D55B966F2C85735D1EBBA5476E9E6023047506B023884AA71DAB3D6E4395D188B03B31269D159BC936D4FBD56675314D800D6DF8634F59EFC3C99C63D2B5859937B17346B1FDC9132FCA0537508228C1DA38AEBAF2D2381408FD2B95D619605209049ED512776445BB9CBDC154738A20864790360919A956D6495BCC6076F5AD2B19D213B24033DB8A4BB94E5627B67380AC9C0AD88648EE144298DC7B5436F61F6C24C446719A4B4B57B3BECCBC91D2A92BBD494EE6AC3A246C374A99AA77F6B6B6CB88D9777A54FA8EBC218B6469838EB5CCCB70F3167DDC934E52E9140AEF723BFD3E5BBC2A679A974FD064B16F35C7CB52E9D2CCB38671951D2B4EFF5192E13CB44EDD850A492F31B6F62BED5A2A879973FDD6A298F90E7EEE19DA62190E054304644815860679AEA9A58A4C9603BD65496A5E5668CE067349688A726CB2628618D5D480702A7374644209E08ED589E63F9DE5BE4807D6B4D140404F031533936856688A5BCF24901B27D2A0FB7BC8D8CD3AE56262486E6ABC76E9E670DEF59C65706D1604E54E48CF155637325C373C7A5687D9D4AF079C5662829767033DAB483D471B17E3F354923381589AE4EF2C801F4AE8D166588E14F35CE6B21837CC3BD34EECB49190A36F23AD759E1019BE5245721BBE6AEB7C1F9FB58AD65B1A53F88F558581451ED53E323A66AADB65D40C7402B5218B29CD72B5A9DA9E85711924718AB3146C185598E25C0C8AB0B1467A641A690390D8D4EDA76187503153793B704B7148E140ABB195C88804F414F11061C669E3611CF4A95546383C50D03643B481F4A00DDCED3563691CE38A51186E84D1626E43B72285524E31563CAC53845F2FCBD68B09B1A8B814E39DC33D2906E51C8A6BC831EF49E84EE457526D8DAB80F1348595F9AED6EE4DC0F3DAB84F123633F35657D4DE11B23CE6EC1F349F7AA8C4A1AB53CA12E1870431FCAA29143A647D2BBE3F09CD3DC9619C48A39E455DF30B6DF6AC44631B95CF35A30DC00016FA53BDC9BEA5B8AE4DA5D29CFCA4D750255BBB74F9C7CA3A5724CCB2C647F10E455DB1BA2B11049E38A7D2C1D6E69DCAAFDD65C1EC6A28ADCC6E0C6793CD06556B439FBE3A525A09656E338FA573ECCCEA3BA26BB13DD204691B155E087ECD2056E56B65ACC0803375C566C8CE84AE32B59CD58C6EED6257D36DEE50B20F9B19A7E828F6D7251CE3078A642DB10B21C1EF50DCDE155C29018F7A8836B7295DAB1D3EB1AC456F005420B918AE61ED64BA93CDB83C7500D4B676C5D84B33167EB52DEDCC61B2E4285C5529C6E28AB6887C761E62055191493E80EC85829FCE922F135940A149C9AA5A878B5DDB6C3F76B4959A128C9B24B3B9B9D326C07185EC69B79AEB4D2176DA081DAB0E6BF9EF5B209269D059967CCA719ACDBBB4996A296E4B25E4978F8C607AD6843A7CDE4072C31491DAA478D9926B562B59DA1C6D38C5689240D896AD1A42438E7A50EC76EE518155CE612CAE87DA98B787695DB85A57438F2963268AADF686F43456856860DCDD3A12AAB5556E6743C77AD59ED04EA19579A3EC8890012280E2B2725B13B19A03CAFB80FAD6BC65362AB119231562C96048BE60A6A2BD8D2393318032334F634E533F518360DCA6B31657F3319ABF79B9F02AB08B0C38A99596C4CAC5BB7959577134968565BCCF39A57888849C76ACA8E768E62C38E68845DEE36F4D0EF1A4416DB7603C75AE27C472A99004E9CE6ADC7AC481705B8E959DAA8F363F36B6EA440C2DDCD767E0C4DD705BD057143FD67E35E81E0E84A5B4929C512D8DE9EE7A2E9E381C8AD512855183CD734FAB5BDB5A1669141AE7DFC632AB9556C8278ACA316CEA7247A38B84DBC9E6A51729B7E53CD79D43E2C42A3CC3DFB56841E248266187C53706851699DAFDBC0C0269C6E430CE6B9A8AF965F995B35762B8053AD45CD390D7370B8E0D3D6EF6E39AC7330084E6AADC5F794B90C29F30721D543A820387008AB6972ADC8C62BCF64F10245D7B5363F1C47136C54E7E956B53294123D2448A48CE29E5D3036D79FC7E388FAB01F80AD2B3F175ADC4806E20FA62AB9198B3AC6C483E955245E0F3525B5CA4F1074C1434E9C284C8EF594D148C99DB927AD71BE2880F905D4735D9CCB96AE7B5D80496E466B15B9D1077D0F1BBC6DB31F5CD2472E633CD4BADC5E55D371DCD66C521DD8AEE84AF1396A46D22590E79CF7A911CB601AAE18799CD5948CB26F5ED5713365B824CB6DCD6B5B44CC9951F5AE7E094C72EEEF9ADDB2BC68B8ED4DEC3B9BFA5588B985989E8718ABD15BA40C471C1AC7B5D53C8C90719ED9A8A6D4E691C9407AD60DEA6351366FCCDE6C7807AD312D944641048354B4EBD5C137008AD09358D3A043FBCCB63A62B29DCC9292322F627B7CB6085359E268CA36E3CD5E9EECEA329C2ED8FD6A196DA3007CA3FC694636344C34E9C87EA76D1AB6658B282AD5A5BA8889C628B9B77751B7915A3F215ECCE4BECAE492734F485470D9CD6E3DA10A485E7BD55F257761C629DC398A91AB2E36AD5A57651F32D3F7AC4C002314F6B88F1F32D165226FA9ABA2CD6CF28FB4BAA80323353EA5E29B485FECF6C77638F6AE36F2E70488883ED59E209C9DDD3273D69ABEC8B51BEACEE23D4639FAE327DAAC1781622300135CDE92AE0A863CD6EBDB9700F145AC4CA36D887CE4F514527D98FB5145905988F2B464C4AB91EBD6A41242C3F7C08C0AAB6B7F1C8833CF4EB566568A588F2A2B994A5CDB1ADECCCD96E5239B0A4E0F4A11A498FCDBBDB351EF84C8720707A8AD884C3E41231D2B66FA96E7745286D55C1DC3F3AAB7D1796408D7A56BC5776E8C54A8A86E5E3954BC2B9352DE974427E46349741632AF58ACE59C91D335A97D04810BB022B2E18998B71DE9C1B7B8D8E50491497DBD21193907B5685B593C8724702A1D5D5447803A56B7222B539F8577495EA1A1DA08BC3DB80E4AD79CD943BEE1411C135EC36368174A8579E528A8ED13A68ABB3909EDA7B96DA1B8069B1E813CADFCAB56F675B095FA6DACA3E21BB95F16EA06DEF8AC94B4D0EA715BB245F0DDC2B649E2A78F4A7894E4D64C9AE6A46522491B1E9535AEA577231605CEDEB4ED2EE28B8DCDDB69A4B7214E715D0D94A5D41DD5C82EA066FBCBC8AECFC390C77606E27A54289AB6922E3E5A3C62B0AF0BABB0CF15DBDC58A2C4401F376AE17577F225209E01359BBDC70926664B6AF364AB73541B45BA66383C1AB8FAA0897E414C4D76784190852BE98AB8B904A2ADA91DBF87EF18EDCB63EB5B369A05CC3872C4629B61E35B1120134657B64575763AB69D7F16619E324FF0E79AD54A68C1A453B0BFBDB2611B0252BA0B6D44DC2E0F07D2A9EC8DCF18C7B52888472020D4CA57DC9E54693F2BF5ACEBE80342D91D41AD18A32F1D3258098C8AC648A83B3B1E29E2CB4F2E72C076AE5617C3107D6BD3FC6DA7010170066BCBA41B24603AD6F41F433AEBA96650032903AD4F0C8108C0F97BD546626119A9607DC361AE9473962E061D5D7BD68C522B468EA7E6C63158AE5973CF15A1A6481CED6E68DD033650AE0165AB9E746231B1067E95527B7D90A9539C8E94EB79BCB2A64C62B06FA112B9A56E629A3FDE802B3DACE396F7098C54F3324D8308C1F6A8D7313E4F5A4C8499AD1086D6DC97C71D2B0752D5CE0AC63BD43A8DE3BB050E71543CA675DC4E693BC89B5B52C41AD5D29C6EE2B734DD51E76D920CD61AD81316E009A92CA66B594920FA53D85A48EA9191DC1000CF5AA1AE4512425D080D4DB3959994E71CF4357EFE08E5B262402F4360B738396E9C3632473D6ADDBCDE647F33738A82EA02588C703354B7340E00E9445E853D49963792EB70048CD757696493C284A7207A553D20DB940D2804E4D74B697766B6C4719DB4F9EC3DCC75B6F2674DAB85E7352CBAB476E183AF4E0536EF528A1763D49E95837024BB98CBB4EDA1C9D8125D4D2FEDE4FEE1A2B33ECCBFDDA2A39E44DC5D3EE905B608E69F24DBC1C122B3B4EF99B67BD6FC5A7A98F737A56AEC916DEA51B4684B00EDCFBD6BC422C6E57AC86B0227053A66AD2C0F10AE6946EEE989E85D314326777E753C30C59D8879ACE8EE0C6D89055C8E51B83464D3517D589C9B35AD34886F4324CD818ACCBBD0E0B6B82B110C2AEC372C9C96238AAB7774EED88D4F3DEA95A2AE0AFD4ACF6E026D8D79359379A74922152BEF5B28B703E6DADF9536E27916221929C67760A4D3395B0B60B7F146C3AB7F5AF63B58BFD123451FC02BC9AC72DAAC5D3EF67F5AF65B44DB0464A8E9FD2AAAEC76D2393F1068C2460CC00CFA56041606DA40CAB9FC2BD13514496221B1815CADC4524521F2CE07D2B04ECCEB4935631DF4CB79E4DEC594F702ACA410409E5A29FA9A9F32370596A486105BA64D69CED96A9A4578AD1031D8BC9AEEBC2762523F308E6B06DED871C576FA045B213C55C4C6AE88BB7A0242186738E78AF3DD62106779186466BD22F08303645729A85A09413818AC5AD428B3CFA4B5865930475AD28E087EC6D6EC830C382474ABF71A41C33AEDAAA85E066478C30FA552925A1BD948E7D7C3F2BCDC6D31E73E957CE872295368591C742A6B76136DC168F04D6DDA4B0C6A36A63F0A7CFA19B82462593EB5628A278CC9181D475C574B6334572A1991B3DC55986412021C02A6AC5AD9C6242C00C54F35CCDB45DB70021DAA454AD1A953BB19C539612B8C74A47F93A9A662B7389F195BA9D36463DABC5E5B60D33807B935EE3E3260DA5C871D01AF16639B87FA9AAA1F132AAFC2527502323D38A62F038AB724259B6A8E4D4B3696F05AF9A7D6B6E6E531507B99ECFB9866B63478774BB82922B12089A4B80067AD75D6509B6851BA1AAE6B2B994DD8BD28560303040AC998912E01EA6ADEA179E4A1914FCC6A85990F3AB39E7AD63BBB99B6CDBD3A248C02DB73D79AB570226383B72476AAF2C0C63DC848E2B35BCF59482D4E4D1317AEA367B54766D8DCE69608140C375A622C9B89EBCD499937671ED4B9ACAC8D7DD7A166DE748D8A374E956D6CA1964040CE6B14C4DE76EDC6B66D6E502283F7871445BEA65285B635A3B38E350CAAA4FF002A8EEC85B73BB8152C775184F988CE2A86A574AF1158EA657212BB32A45888271DEB15ADBED5A8AC682BA7D3ADE29C32CB8CD3A5D3ADED65330602B48C6CAECBBDB42A3686F6D0AB039518CFB56749712425922C9E6B426D5AE6E0F916E3776E2A0B5B77B7B80D71839EA0D26B504C86CAD8DC4FE65C723D0D744915B184200A3FAD54B811050D1E071DAA92CD9629B88A69AD85ABD4D3FB241E94550C9FEF8A29F2B118506DB7D44291C66BA0F343FCA84D606B16CD6F7C3070D9C839AE93C3568B704194E57BD6525CCAE99ACAD6B95FED5144D86EB532DC4521E718A8BC4DA415B906D7A1A4B3D39D61065C6462B073E5DD99BB3572C9B48AE40C114C5B296DE71B7EED2A03149B51BF2AB5733B247B7B915BD3926AF61C5142EAF5623B0E334EB1BE8A4750DB6AAC5A736A321264DA474A53626D9FCBDDC8EF435D472B743A412C463F9596A85DB2796722AB448D1AE77B545216964F2E3059BE953ECECEF72229DCCBB450BAC42303064AF558E42EA8071800579A0865B6D4626923C7CF5E97A76C90A96E3815ABD51E951562DA42B37CAEB9AAB73A1A15DC09FA56E46B1F04629D2BA04CFE1C566E28D949A6714DA118E419E41A93FB3960E5579AE8E7542735937F751AC78192C0E2935D8D549C886D606320CF4CD769A745E5C2081DAB9AD22279232EDC1ED5D0DB3E3E5C90075AD228C2A6A5B9D4B21E2B2DA0DC4A915B51912C657AD665D388652306A651D49837B23365B1562700F359373A4488C5D5777B5740B751BF01B0476A9136B9EC6A394B8CDA7A9CA476AEADF3427F2AD0B7B47E8A315B86DD09CD4F1C0AA320668E52A552E5382D9940C9AB918DAC2A50BB79DB4D7007238354A36326EE5A497E5C71515C302BDAAB87DA41A599B70E4F18A5222C71FE2E971A748993CE6BC8645FDFE71DEBD6FC5481EDD80AF3C96C4CF791A4606E634E8E8CDAA6B12ADADBBC9280172C6AFEA91EDB44B7C727935B7169B16991FCD9F37191C573DAADC19261DBB7D6AD7BD2B035681976B6DE5DDA903EB5D0C9708D0E075C556B586230EE7F4A259A2887CA9F9D762C3F32D59E64DEA654C6479CAB7DDABB6DB565527B542D7B1AB92235CFD2946A2A7A2283F4A6B0CBB90DB3A269649200B10C71D6B224F32390BB118CF355FF00B5E651B54002A95CDE4B28249C544B0DAEE091B56F79BC96500A8EB4925CC3BB71183F5AADA5CF8B1313203939DD505E468FF75B9AE4A914A6921D8B8668DD81040A6BF1F3A1C9AA515B654E5A9F11789C863F2D1A6CD97177D19A56972EE3F78A49078AD48521B85C11B4FBD66DB95E08ABBBC323150722B4768A14A367A15AF3CCB29F117208ED593777D7370E626042D6879CDE7319074F5A45586497076E4D4295F60B2B5D9069B726D1B2137135A4C8F7AC1F183508B58C3E43015604DF67C00D9CD536DAB1056943C4DB1BE9493D8F96BE6E054F719970C3934C68EE658F6E702A146C3451DAFF00DEA2A7FB0CBFDF14555995CC52F104892B2BC67357F459674B5578F35CE5C82D0E58F4AD8F0F6A8B0DBB46C338EF4249C5A29EC6DCBA9FCF89796C77A8DAE5A75FDD8FCAAB3AC77731207279ABB6968D9C29AE78E1A3CD705156D45B28FCA23CCFBC6A4BF1163E56DC4D3DAC5A39B731F4A9560881CB64D74D95AC89725D0CFD3FE4663BB1CFAD2DD79724DF2BE5AB425D2E0B9C6D3B0FA834DFEC58A101F712477A9688D0AAF12CF0FC8DF30EA2B47C3B62A1CBBAE48AA73948082320D3AD3580AF8CFCA38A526AC26FB16FC4CF089A05014303E95A3A6DD80AA73D40AC6BE85F53B85911B2A8292199A371CFDDE0D28AD2E77E1A57D19DA477D85ED4F9750181CF38ED5CDA5F61339A25BEDCBF4A4D9DD1822FDD5F119C37E759F6D18BCBB0646C2039FAD645DDFEE6DABEBCD58B6129B7631B329EBF5A499A3492D0EC2D6ED47CA8460715785DAEE1F30C9AF348B5896DE628CE720FAD6ADB6B9E61C16357CFA1972DCF458AED76819ED53792B71CF1D2BCF26F108B751B4B31FEEAD59B3F1C4D9082D654038DC56872BAB19BA5AE86AEACAF6574083C1A75ADF1651C9CD433DE7F6B448C14AB01D4D663335BCBB318F7ACEFCA6C95D599D743759503357E1941ED5C95B5E1DA0135AF6D7A0601AA4CC674EC6D79AA0FB543704B29C7DEED51098491F140723BD36EE656B0D0ACE879E45207C2153C7BD4E0C6AB9279354EE1B61C8EF5160B9CF78890CB1E10F359BA568C14A5C3A80F9E09ADBBB8D64DACDD8E6B434F8E296D4A91F38E956B443E631357D126BAB8F3768F2C28C915E69AB301A9BC648C06C57B2EA9AA47A768770EE7E6DB851EF5E27A96E90B5C8CE4E4F4A745352B8E736E362486F52198275FAD5E9228E68F700B93CD7173DC4A2424B115D06937A5E1018E78AF5E8C94958F366ACC4B9B603381CD52F25D1B24715B1332C99C75ACD176D0C85641B97E954D244904922A0C0EB5116DE7048E69F3324AC6448CD440EE6E9822B1A92D0691D8E85A50BBB3241191583ACC12DBDE18FA30E98ABFE1DD65ED6EF6B1FDDF43536BE63B8BE5940C826BCE9AF7D32A1B98511B950090D814497722F5CFE35A4F7F147085118C8E2AA1F2E7380BC9A1C55EECB5143EC6F24DDB71F29AEAAC823465940E7AD73966A910208C1AD4B7B95806DDC0E7B0A26D35621B7B0DD460712EE8C7E5550432FE35B0CFE66D239AA57F7AD6ECA1A3C03DF15947B137E85495A50B8C9E2A9497B3C6F863C56CAA25CC41D3AE2B3AFAD7099C722B4B3409F4342C276914349C8C55A6B95DBB41AE7EDA7744DA4E055E42D210471EF4E49EE2B17BCCFF006A8AAD86F5A28BB1D8C5B987742703A543A432ABBAB1C735B32AC4B0383D40AC6B4B4737BB941C75E94E0BA1A43537E0DA0EF5FBD5D0E9F340B0F992B006B0E3511A2E7A77AC9BFBB9B7958C90BFCEADF61CA29A3AC9EE5667C093A5461A3EF2AFE75C8412C8CBF7883F5A9FC87671BA46C1F7ACECD333505DCEA4DE4710E25FCA8FED0338DAA73F53587F641115657DFED56243F67405090C0670686C1C2C1A807047E7D6A8C21919B3DE8176F2C803734970EE23F97BD652D46917ECEF6E2D4B387E08A920BBDEEC4E0B31C9C5645BC3249C1240357DADC5B9520F26AD2B235A2ECCD21758E2ABDE5E6C434C51BB1516A3183016F4ACDAB33D38CFDDB956DAEC49382D8C66BACB79635B6CF1C8AE0127DAC09EC6B7ACEF0B47D7802B7B2B58C5D46D8BA8D9896E4B463049CE45476D14B1B6CCB7AD5A86569266DA7A0A92CE546B96F348F4E2A792C3532C416F2160C5719EF8ADEB3D3E376024079154BCE894AAAB55F8EE4803239F5CD160E766EA5BC7145B500E9599A85B99790071518D4994633542E75B4809539C9A8942E5466D318B73E449B589E38AD9B3B95600F02B8CBCBF8E53E6838E6B4749BF5917839CD4AB9AB9268EDA1B8C0F94FF00F5EACF9F9231D6B1A0756C1CE0E2A74971C64F06998C91A9E696E07350CEC4A7D2A34942AE3A13DE846E092D95A7632910CA53CA663C6C527EB5C4C5E3B82CEFA5565638622BA7D5E71069372E3BAD7855F485AE5DB77539FD69C55E56279AD13ADF1278BE6D71F68F921FEEE7AD65ADD0680072DB7B573A2E0A8E4D4B1DF100A9F98574C22A2633A8E4497AD06415CE7356F4B6207CB5852CACD2138C73572C7526B66E06735D1467CBB984F53A5919B6E704D519E497BC7C7A91500D55E453DBE94D134B29DA58E2BA1C9321683D8EE1F7706A291B647B875A98293C67352CBA55C5C2828A0D6334DAD1149A441A7CD8739FAD684B74C4605525B19EDF968CFA74A9141046462B99C1ADCAD3702924AD9CD5CB742B8623A547BC2AF039A7472939C8A8B264B771B737059C761D2ACDAAACACA371CD549222E09C525ACC61941C74A5648967676B6E362E79E2AAEBF10B8B4215482BDEA1B5D4833AEE180055D9248EE3E4E81856334B7410D19CEE9D72D000AFC01C569CE3ED3092BCF154756B416AE181183CF152E9776A61298CB7A56B1775660D6B728450C827218719AD2F385BC38E334F74C3921304F35977DE6679E47A5269A29163ED87D28ACDDC7D28A5C84DCD57DA570FD0D32D716F29665C8ED50CE5A40D8FBBD45537BAC2ED1D4714FD0D9248E865BA8E540A005A82E6DA168490C09ACB8659188A9F05A4C39DB9A8B3B94D6822DB9119640302AEDAC4F3A74E955DC2DBA81BB39ABB6B7236809C57652C3CA68CA5A6C4AB68EBF7739A65CD94B36001CD5A8EF1A12491BA9FFDA99E8A0557D4F5D599B948CE1A3CB12F98EC063D4D45318E060D292C07A735A52DC99D4E7D2B25E768DC8DB91F4AD3D8462526D8B26BD69163C98B91EB5147AAAEA371B768423D29FF00D943506023B472C7BC60D6A587C3BD6F7ACF05BB08C0E778C7158D4925A686D4E37632370985EA6A6BA8BCFB5FBBDAA1311B4B931B8F9D4E1867BD5B0C366411F415C9257D51DD17A58E6934D677254720D483CEB4E0838AE974DB64999F70C9A7DDE991B823151CD62D462CE5E39897C062A0D5AC0500A4993DEADCBA4847195A174A63D8814F999A46921F05D148BE6396ED532EAB232ED0D8C5363D21C8E738FAD685AF877CD6C818E3D69DD87B24B76517BC729BB7F359B712195B2EC71ED5DA43E168800586E3E9573FE11BB768F1E50A96EC26A279B4685C61726B63C3F0C893312A719AD4D5741160DBD4000D49605228576804E79A77E6445ADA9B70E0ED0320D4E8CD14BEB8F5AA124E17E74E302A582569C641CD28A264CD38E4DEA4D3D5C9427B551590EC2A0F353C05CEE20135691949983E2CB9820D39D6462A5870335E2F772833B1073C9AF49F1B433EA372FE5E709D4579A5DDB4B0C8564520E68835733A89F2DCA8CF93499A423A8A4ED5D0998343B348A79A68A55EB4D12F62EDA49F3638AD783F79C2A804F1F5AC9B680BD743A7DB796A1CF6E4574C2E413C360EACACE302B44460600CD480B491866EC29AC78EB5D508D913262E767CC4861E8695AD6D6E8E0808DEA2AB34809C134F570A722938296E85B10CFA3CA9F34443AFD6A382C676932548C54D25F491FDDA6C5ACCB1B61C03587D5E170BB3456C1E58B6ECE7D6A8CBA3C8AF95CB1ADBB2BD8EEA2040C3549233104A9E9553C246DA13CCCE70C12C2E032E2B56DE2135BE3EEB0EF9A9D9525E1C65A9F0DAB44F946CA7A5727D56517B1AD396BA9CC5FACE5CA9762B9A8F4D97C89C120FF8D7417167BA7DAC0E0D674B65E54F90302B9FE16693E57B175AFA250011824542B6875062C1B03E9559ECA6940703E4156639A4B34C8CE3149CB52A14EFB8BFD89FEDD1517F6E37A515361F2C4CCB8B9C828A78AC79652B36735A0CBB989ACDBB5C4A2B4B10A57356D6F7080922A633995F7E7F2AC78812BC66B52CE3731924F15AD28733264EC3C312D97AD1B7701460D517288401D69CB36D239AF462AC8CEF735B79618A824CA026A386E033019A9E42A63CD53D808E19599B0B5E91E13F0025EC11DFEAABB53A845EF5E6F672A5A5F4533A078D64048C57B368FE23FED308226C46A00C7A579F8BA8E2B436A71B97EF6EF4EF0F43E5DA5A226070DB79AE52FF00C537B704A23ED435DB4E96B7B118E755607B9F5AE2F57F0FBD948CF02968739C8ED5E2CE72BDD9E861D42DA9C1EA01FED0663EBC9AA29787795CD74B7D67E64046391EB5CEC902C72AFCBCE7B575D19F32B0EAAB6A74361246B10C1F988AB52905723AD6645B52340A46F22B4162DD18607B734548D8AA4EE548D1EE262AED8029E51B7E232768A710501C734B1C8AAC33D2848D5A922731BC61586EC1AB56BE62C831DEA14767808C9C76AB1048410083ED43D04AEF737A1902AED2C326AE46EABC9F4AC5491B19E054DE7B607CC6A6F7225128788C19622532BDB3589A6C8B110642A42D74971207859A450CB8AE488FF4C3B09C6738AA8AB10DE96375904ADE60C00471835774CB6440DB8FCA6B0C4D24800185ADDB19018822F27BD5A443629288EC429273C55D8A7FB259C933272074AB16B63E69C9183D6A1D442888C3C302289691334EEEC7150DD25FDEC8FC7CCC462B3F5CF0EC5751332A618F435185934ED70A36423B035D8246B3DA29C673CD724A4E2D33AB953563C4351D2A7B4959194ED1596E841E7B57AFEB1A42CC8C760AF3FD574A680B10B819AE9A75948E5AB42DAA39D3D6A48C6E2291D486C1F5A9ED23324C00E95D91D4E57E66E69D688A9E6CA404519FAD4BFDAC5E5F2D5711E700D50BEBC202403E55039152D8797238661DFAE2BA69DDBB112D8E8ECA42CBC9C8238A95CE01A7585AE14BC4C590919A7DCC0D19DC075AEB6EC8C96E67C980D9A546E3AD4533104D3A26CF4A94CA1D2E31D2A94984E7DEAEB9F7E6B3EE7201A89E9A81A9A35D0572B9E6BA02D9C7BD7116371E55C29EDDEBB086457B7DE4F2456B195E24C85F2C87C8353AB9523D6ABF9C00EB406EFBAAEE27B1796542C19B069D2C304A47CAA0D54461D722964948E8C2B39422F742BB25FB2A98D9558153D8563DFD948AA5149C56825C957DC4D4D30F35432919AC658583D51B2AAD6871FF00607F4FD68AE9361FEE8A2B0FAAC85ED2272A8C0BA8CD56D4E0DB8615D04FA65AA0CA484375C564DFC32347B03647BD73CA94E1BA293445A6DAACC8377AD6CADB851B41381595636F342A1FF833C9ADC5002061C922BBA9455886EECAAD6418E7351BC088304E2ADB3B0ED8A89CF99C30AD9A0BD8AC235072AE2A4329098CE6A19ADCAF22A03BD7AD436348B3E70EC715D4784F5E82C6730CCCC164E03678CD71DD7AD1BB69E0FEB58D6829C6C5C25CACF775170504A8FF00BB23208A9D2F1CA947191EE2BCF3C1DE32FB3B2586A0FBA0230AE4F4AF459200D18922219586411E95E0D6A52A6F5D8EEA735232EE74FB79A5121F950F5FAD79E7896CA4B1BC2D18FDDB670457A549B92B9ED76CC5FD9B20C6E00D2A35395E86CEED58E174F9CB488ACDDFB9AEDACE2431005D79C5799CBE6DADE0472576B74AEEF492B25B23C848040C73D6BD071538DCC6327066B3DAC4A37D569238719C714FBC90AC2761E2A9DBDC128C3AFAD64A1637552E6C58470942AF8C91C55C5B38990945CE2B05660250C187B8AD887508635210E0B0E71DE9B57D84E7664896C4BE3A6298FD4853F38ED534371BD095EA7D6A85E86B7944D9E7EB53C9617B4B85D4C8B091BB63775F5AE7E62219074F9B9E2AEDE4A8C8E58FCE464563C9302E04A7EB54C85B9A1692ABCD920EDC62BAFD22CC7941C827BD723A647E6BE509C0AEE74E93CB87A718C552D889B7B1A2932DBA3A907A7158D74C19CB6339AD295D5A22188C1E959876997682BC9A97AB260ADA989E2AD1C1D262BD403CC8D8678ED468B26FB55049C915D46AD0097C3CE8573C1FE55C86920DBA053D3D3F1AC2BC2C6D4677BA2DDEDBEE0470735C8EB1A76F46E3D6BB794871C0AC3D4A3054822B960ECCDB7D0F1ED42D8C53E31DEB4344B5DCE1D8702AEEB56799F2077AB16A82DACC0EE6BDAC2EB13CEAF1B339FD56331DD31038CD2D949B4F1D7EB56F54C32EEC550B5C06539AE885D48C65B58EC74AD44C7180D90727F1AE863960BE4DA40DD8AE0E37654C8269D0EAB35BCA0876EB5D4A6B6662E2F7474D7FA25C14926890B44BD71DAB1A21B4F7F706BA3D1BC48242125230C3057D6B3B51B658AE9D9010AC77714AD67E452D7733E5E083546E4E50D5B98F6AA770DF2D4CC119EAE56503D6BACD32E0B44AA4F18C571CDF2C99AE8F49941500D3A2FA0A68DB9A2DC495CD428CCA08A59E59624132F207DEA549A1B840CBC377ADC91E64253E5EB5089F920919F4A93203E6ABDCA05F9F1498D0B3C984C818FA55AB1BD5C6D73594ECC53EF715145261B8A4A4368E9FCE8A8AC0F3CFA9A29F399EA2DC96490B0E5BB532175BB04E06E1D56AC5CC44AF4E958324D2595C8719C75ACDB49EA696B9AAB98E52840D87B527CE246447E319E7B52C57705C8560DB4E39A56C79B8539E29E9D0051BD47CCCA69BB8EEF5A949F9306A2240CE298C46208E8735149B4AFBD3C93EB4C23DA9302AB32AF5A85893C81C55A9222DD2AA1C86C7359BD4698190A0C8C83ED5D3E8DE3FD4B4987C80566847457ED5CC330C540C0139AC2AD252566691958F5ED3FC71A76A5B63B91F6798FBF04D694A524883C4C1D0F71DEBC2BCD646E718AD7D33C4B7BA71FDDCE4A7F718F15E6D5C1DB589D54EBD8E8FC51A72EFF3D5003D4D47A46A70344B1B3306048DB9A078B2CB5180C7748232C396C715CCDEA7D96E0CF6CE194F4C5141CA0B9648AA9696A8EE0CE6672A1F083A5430DEADB09233939EF5C8DBEBB2C60248D9FAF6AB49A9A49D5BA9AD9C5742633B1BF25C8DDF2373D6B474998CF3AAB9C81EF5CC2CE8C41DC315A5677AB1B7C87269452454A6D9DCAF951B9CB14502B135DD50074880C9C706B227D72701A109B95BBD436F135C4F991B24FAD0F508AEE3A6BA96755755391C5322B76B9B81BC633CD6BC16313A95CE0FB55882C80932B8C0359DCB26D32DBECE188AE82C5D9D1901C7154E3410A0210722AC5AE63752ADB726A5B605E28444559B355ADED59AE965CF02A66642FB4364F6AD5B18408C31037678AD69A727A9954972A1D7B1EFB09148CFCBFD2BCFE0320B865087258D7A16A2C2DF4D98F42578AE574F895E2DCCBB8939CFE35962878695F50112B4008FBF58D7EAD8208EF5AD793B5B4A06D18ACFBA2658B785C91C9C0AF3A3B9D870DAA427CC271D0D66CAF9C2E2AF6A57C93CCEAAAC36920D649396C8AF73091F76E79F887A95F506FDD609AA76AA4C9C8E2ADDEB6E8BA7350D98CB735D515EF1CACBFB711D509C1526B418E78C76AA338EB4E42432DEE9E271824735D6699A826A10FD9E46C31E15AB8C084FE75AFA5C7B2656DD8239ABA4DBD052EE5DBB8DE39D95D791D6A8CA320D7517B69F6FB40EA3F7CA3A7A8AE6A6050B291834E4ADA045DCC990624AD6D2D886AC8B804393EF5A1A6361C54D27EF0E5B1D746CAF16D7E878358B70AD67707A85ED5A2BB8C24AE7355E6FF4980A4872CA78ADE7DC843A0B95917AF38A573E6A94279ACCB690C52EC3D01EF5A2FC30751F29A39AE8A2165C82777355A173BF04E6A794104E41C1ACF12F9530FAD45ECC0D2C51507DB17D051556417357CC1247D727A62B2750B7DC086A9E29F3839C03524C8B22ED0738F5A53D50A3A1CEC2CD0BB01D29E9A8C90C993F30F4A7DCC451C37BD527526421BA1AC6ED6C568CD51AEDBB603A907BE29DFDB168064135CEDC5B98CE71C540A8C4F4A8F6D25D07CA8E99F5AB4C701B34875BB7DBF709AE7D2DD98F4A97EC6C474A3DA4FB072A35CEB909E361A60D46DE407276D63496AE8338AAEC0AF1DEA7DA496E87CA7426589FEEB8A61EB5802465EF532DD4ABFC4714FDAA61CACD475C026AB3B751512DF9E8DCFD69C2747EB8149B4C3541E66D14E4BB9138DC714A155FA114D680D4385C6A6C1E7F33918CD2C7395C7CD51FD9CF5A4284543A6D16A66DDB5D23200E79AD6B4BB44233820D7182529F74F7AD3B29DB1C1E4D672491A293675C648E49877E33F4ADAB78E310A61B935C85A19C306F2D8FD056DC573347183342E80F4256B26D23A237674410C2002460D4A2540030EA2B121BC0CE159CF357A0491E5DA8AC54F7A98C64D96D5B7353ED724AA14118AB11CEFF00280B91D2A1B6D0AEE739DE573D2BAAD2F40481559C6E3DCD6F1A2DEE73CEAA8AD0874FD3A494AB48319E40AE8A1B711A74E82A6860589460548548E4F4AD9251395C9C9985AC032C4D1E782318ACB48C5ADB796A3915AB7A7CCB82076AA1700918AF2B155799D91D9423631AED3CD42A57AD67F972A46CBB7E5ADA9532DD4563EA971E4C6C3763835CF057D0EBBE879F6B6228EFA4318C66B36340E7827352DFCFE6DD3F7E4D247D057D061E368A3CCAEEECA77A984C62996AA00A935166C0DD496C38FC2B68FC4623E438AA770C2ACCC39AA57272B8A52D0105BB03F9D6C592E58560DB311263DEB7ED932015393E9574D899D369F390007C83D07BD606B050DDB94C63BD684770D1424483031D7158973207958F6AAA9A931D0CBB81F355AB0E1C555B8FBF566CC7CE2A29FC5729EC7516CDF22F6FEB55A43E5CC5BDEA5B53F28A6DEA60835D3244752ADE20389579C8E7DAA5B790CB114CFCC071490B07568DFA76A822636D7015BA03C56696A038B49F7475AA13E77FCC2B56E474753C1E6B32E4926A665221DDEF45378F5A2A2E3B0B6975BC019AD249B74785AE7195ADA5C7419AD1827240A719BB5989A2EB849010E4038AC79F0B71B54E40ABB3390B935987972D9EF52D8D2349A1596D57039AAA2CB0DD2AF594A863DAD57D604C6477ABE55215CCE82CC63A55B16CA1718AB202A8C5073F855D905CA12DB8CF4ACABCB0201602BA3201ED50CB0864E959CE0A48699C7B4641C1A6ECAD9BCB20A4B28FAD6718F69E9DEB99C1A2EE57F2CD33054D5E45E6A536CAEA76F5A9E5BEC1733D642BDEA659E4ECD51CB6EC8DD2888956191446F7B0684E2694D059CF5AD182249541EF52FD90775AD7D9B1736A6384C9E3AD58B72D13061DAADBD88EA8706A1314B1F54CFBD672A65266F69DAE1876EFC7A74AEEB4CF1869F750C76B7D0C6D10C0CEDE6BCBAD844D2A87DC173CD76BA6F8562D46D966B4995BD549AE2AF4D257675529F31E816B61E1AB9512452C4A4F3826B5ADACF4B8F063B98BF3AF365F096A16E4928E57FD96AB96FE1F989CC9F6853F535CB1ADC9B48DDD252DD9EA96E2D1480B347F98AD289622BF248A47B5798DB786D8E31797087AFDEAD18ACB58D3C07B7BB13A8EAB9E456B0C759FBC632C2A7B33D15631B7819AA778EE91938C015CED97895DD845701E3940C618704D4936BB25CDC0B35030DC9239AE975A138E8CC3D84E2C936972493D6A19A2C9ABB1AF18EF54B59BFB6D32D1A79DC03D96BC89EB2D0EB87632751963B481A491C228AF34D7BC482E64686DFEE03827D699E21D7EE757B86C3110E4802B9C652A726BAF0D4B5BB1D47CB11B23664E4D588580C60D502C379E6A78CE08C1AF6E9E88F3A5B8CBD7DF2E3D296DD874A714F358B1A043B1F35496B72465C1C1AA531C8AB539F9AA9CC78A8982196E7F7AA2BA0B655DA0EE22B9C849F33F1ADCB4B8C300C323157498A46A4B21F24464E6B2A662091524B390F9538A8269038F7AB9058A731F9AADD983E62D5373FBC157EC465A9535A8337213802A69C6F8BF0AAEBC2D5946DC9B2BA1ED623632F2525AB457CC8BCC2318EF50DD2104E3AD32DAE4A12A4FCADD6B34FA0C987EF63233D2A85CAB2AF6AD1F2F69C8E954E751D73F5A52434CCEF9BDE8AB5B93D28A9E463B9527417306FC7CC38AAB03B44F83C76ABF0A18C119AA5347B27040ACEDADC0B1248596AA39F9AAC970630075AAA47CD431972DB35A08E42F5ACEB6EB8ABAA3156844A246CD58472C306AAA819A91060F5AD101688E29B8F6A11BDC5389CD31156484329C564DD5B146276F5ADDCF5A86689655DA475ACE51BA04CE6CA61AA589B69EB535D4062931DAA151CD64958A2CB42B32F4AAAF6786E054BE6ED1D6945D91D70687CA21F66851F15A3818ACD5B919E3BD594B918C1357192D80B45723A53367B0A12506A5041AB7A8109811CF400D58B3B9BBD39FCCB59DA3C1EC7834C2280D8ACA54949598D49A3BAD17E24490958755837A0E03A8E6BBCD3F54D3B568C3D9DCA1623EE9E08AF0D204CB8619F4AACB35EE9337996F23800E72A7A579B88C0C7747442B1F40CB34968DFE9280C47A3AD68C2209E2055B9238E2BC6349F8917210417E3CD8CF19EE05761E1FF11C32CCA239B742E72013D0D79F2C34E27429A92D0EC2EB498AEA32B26063906B0F4C8DAC755962B83BCA8F90FB574DBF741B8376C935C6EAD34906AC92924A9E2B08B7176358372D19D6ACEA096FE155CD79178A750B8D4F5290166F2D090057A4DBCC64D36E4AFDE20D713368ECEC5C8CF7AB8AF7B51C236B9C67D91DFF0086A9EA16C605C918AEE45924470C066B93F11B0F3C8EC2BB68CEF2B13517BB7399C64935246C77E2A3C839A72B00C2BD781E6CB72E400EE34F9411CE6A1824C93CD12BFCA6B4B928A739E4D5793EED3E46EB50BF295949DC63623F3F35AB07CB1EE159B0C409CD5DCEC4DB9EB4E1A0873C9C55779483448DC55566E69B9022CAB6F39AD8D3D30BBAB2ADA3DC335B16FF00200B9EB5AD3D0522E87EC7F0AB31310C2B399BE5EB53432E4806B45225A27BC8F90D8EB596D9563F5AD863BE1E7B74ACB9D08E693566345A85FCD50BD187EB55AF632AD9E9C5321728E1853EF24F341CFA54C9DD09197BA8A5D87D68AC79CBB0E49FCC3EF493AE4038AAF1FC8D56C90C83355B888542F9673D69850751526E0ADCF4A6C93C78C28E696831F6E486AB80E455280F39AB41B8AA4C44EAD8A432EDE6A2DD504AF95AA720B0F92F4AB706A68EF72464D663F5A6A9C1A853770E53A0122C801CD23120F159B6F332F19AB624E335AA62B0E9A359D318E6B16789A0739AD766E73514A1278F6B019159CA3D50D18CCE48A666AD4F68D19C8E45562A4562CAD0746DCD4BB88AAEA79A9450845B8A53BBAD5A496B39477A9D1C835A290AC682BE452D5647A943639ABBDC0941C1A9D595D0AB60A91554B6450B260E334D24F46056BDD3D95BCC8B91E9505A6A371652E55D9483D01AD98E55CFCC01AA57BA7097324630DD6B9AA51EA8D233B1E8DE14F88E0AA5AEA446CC001CF6AE875A962BBB6F3A13B97EF022BC0C33C2F8DC4106BA4D17C5171643C9918B43FDDAF32B61549DE3B9D34AAF2B3D87C2B74B730CB131CFB1AD0B9B550182815C4784B58886AEBB48DB276AF44BD40A770E8466B8AB46516AE7429A6EE721A85B6CDCD5E61AF49BEEA4FAD7AB6B122AC4E723A1AF22D6240F70F8F535D58357770AEFDC324D3148C9CD4990074A86461B4D7AFD0F349607DA4F3523BE54D5489AA72DFBBAA5B125673F3535BEED29FBD4D6A902584038C9A57399300D2C4BB62CD318F0698586BB13C522479393483AE6A78D7730A23AB132DDB21C8C55D71B306A2B74DAB9A9E400AD745AC840AF9142B957C8351C630DC7E353601EF420342DA4DE98FCEA1B98C60902A2B66DA460E3FAD5C9BE688FAD5BD50BA9963AE33529198EA26FBE454B1328E0F7ACDEC5329EDA2ADF934567CA519F243CE7DE81F77156582B74A81F1B48154F425155F1B8D47800E69C4FCF4A7150864B15585E955E3A9F3C55880B62A176A73B62A02D9349B18D6A5419348DD69E9D2A5012C6B8A90CD8E334C4CF34D78DBA81557603BCDE7AD065AACCA452648A5CC05F8E7523630C8351CB64AEBBE3E7DAAA6F3EB5621B8643D78A774F416A566B7653C8A6918AD5631DC0E4735566B465E40C8A4E361DCA60D4B19C734D68D8750C2914106A501695B9CD4A24C0AAAB4ACDC555EC05A128A52475AA1E61079353C72E451CD702D24841A9D27F7C8F4AA61C50DC8E2A930B12DC5AA4EA597EFD67342C8D91C1156966643D6A50D1CC3D5AB394131A6D1268FA84965748E0FDD35EFF00A2DFC5ADE8092464191061BF2AF9F0C07395EB5D7F81BC48FA3DF88266220938DB9EF5C389C3A9C4DA9CEC759E213E55ACB9CF4C5792EA0DBA53F5AF5AF126CD40C90D99591997762BC9B55825B6BA78E75DAE2B2C1C1C7E23A2BD44D19CEC40355A47F7AB123A95C0EB54646DCD8AF424CE22646A943E4D55071522373426038E771A7042EC053704B7D6AD46BB5735691235F8403D2A16E952B72D4C601450C647D2ADDAA16238AA89CBF15AB6C9B06EAA82B92CB29F2AFD28F37A8C530B64D2AA16AD2EC444642AFED532BEE14935BB609029918238340C97356ADE7326E8D875E955B1C7D6A5830AE2A968C4C65C2ED7CD350F39AB9771868C102A829C1C1A5D750E85AF30FA515167DA8AA24CB49C90013521E573544707AD5946F96B04EE6840C48969DBB34C93EFD203CD45F5196236AB1BBE5AAD19A99F85AB4C4472373D6A3CE294E73CD34F5A901734E52453075A7D0809E1724E2AEAA02BD2B3A238357A37E2B48F98991C90E41AA924441AD5FBC2A292307B50E3D84999456984907AD5B921C678AAEC959B4CA4093153D6AE45780100D50DB8A4342935B8DA35D923B81943F37A553920643D0F5A8239995BAD5D8AE4300AE01156ACF626D62A12453431E6B41ED1261BA26FC2AA4B6EF11C1C9A4D31A657273406C538AD467AD43605857E9CD588E504609AA19E29C09C7154A405F74DE32315015646CD4693329E6AC090498C9A603E1BADA70D560CA5712467E61CD52DA326A44057273C5125741B1BD67AD3FF0068C772F29407E4722B235FB9FB45EB48AC5D4F4268B56DF6D3425410DCEE3DA924B352983229C0E95828B6F62D3309F7119A8B1CD58B9528E573C544B116E943DEC219D294139E2A4F239A916309CF7A12B08727CB8CF5A999B0B558C84B6295DCE6B4E6113A48B91BAA59635299154A205DEAD9E5428AB4EE8432DE2DCFD3A569E00502A18A308A08EB53A8DD571D0058E3E7245598B078C1A87385C6696263BC73DEAD09974AEF4C75AA72405189ABE8015CD472C794CE2A9A1265655F96A445F9C5440E1B152A1E6945EA365C74F321183F5ACB993CB63DB9AD78496E2A9DE4203138A2A2B893286EF61452EC14545CA332480A9351A928D8AD560922F1551E10AC6B371B0EE5394E1F34D46F98D24C7E7C546A7E6ACAFA8CB8870455C48F760D6723E6B4219300735AC1888E540A0E055467DA79AD195770CD674E9934A4AC084F3076A5128355B247149CF5ACF98763423705AAE44D9158D1CB83D6AFDBCE3D6B48484D1A2A6A4C645451B86152A8ADB72485D073559E2C76AD02063A544D18349A1DCCD6515195ABF242369E2AB18F07A566D0CAE4522E41AB053DA91539A94807452306041AD059B78024C1154963DBCD3CB718AB8BB0AC4B359C720CC640359D2DBC91FDE5C0F51575646079E952EF0C30CB9068693D82E64018352C6326ADCD6B952D18CFB55239538231516E5DC65811034BB369A8A39086193C54AF260552D0052FC62985CE2A32C739A4627143606959DF4105B4B1CF1960FF00C40F4AAF717B0471958D58679C9AA0CCD4D9C16407BD65CCD3D0A424920979CD2420EEE7A51042C54961C54C133C29AADF5621CC19B8514D16CCC79AB300DBD6A772BB6AF9534233668BCA1D6AAB31AB574D9EF548F5AC9EE51244C41AD1832E326B3E35216B56D93080D694F725965178152A0E0D22E734B9CF15B122E3DE80841CD3945588941EA0534AE17258394FA54B9C8C5406650DB40A9030718CD52D40A738DB25119E6A6B84DC954E3728DB73DEA7E1606B40453AE53CC4CD410BE5463A55B203475A3D5096E66793455CD83D28ACF94B3944B865E86A47BC0633DCD53CF14D62715CDCEC761ACDB9C9A13EF53475A55EB59DEE3274EB56E235493A55984D6B164B2EE32B54E45C135763E54D579C0CD68F5424674A8435308C0AB4E38AACE39AC1A2D32339A9A194AD46DD29AA79A85A31B46C433838157A3932466B1216391CD6942C7239AE984AE4346881B8535979A48D8D48C38AD6C495DD6ABC91D5DDA09E6A19635E78A4D0265365C0A881F9AA761559FEF565D4A2C03F2FD695549A231902ACA20AB5110C58F38E2A748C63A538281DA9C055A49031D1A67B0C550D46D3F8907D6B4E2E3344AA194E7D289A4D093B1CC213BB1E95230239C53AE5024E71EB53200C83358228AE0F1F4A6F9841E94E97E56E295147A75A96C640EDCE4D3D537A734E9401D2851B6318A9B6B718A64CA05C702846543C75A55398CD30D5DC9272D9C1A6BC85462A2DE474A6312413439680412B139CD44A371A593934E8C62B3193C69C0AD3B7E702B354D5AB5918498ADA0C4D1A0CDB475A6F9A3AD473B9249AAAD237AD539D98AC5D374B1F5A960BD8D9F05B00D639624F35164AB1C1A4AADFA09A3AA681644DC873507EF623C838ACFB19E40400C6B6E2959C00D820D6C85B15C4C5FE5355A550AF9AD836D1633B71F4AA7731A8538A24BA85C2D9805AD0425A3E2B2AD865B9AD3878381D2AA2EE21B86A2A7A2819FFD9 -0 -0 -0 -0 -0 -0 -1 -0 -0 -(NULL) -0 - diff --git a/src/spatialite/test/sql_stmt_security_tests/isXblob8.testcase b/src/spatialite/test/sql_stmt_security_tests/isXblob8.testcase deleted file mode 100644 index 0dd5bae..0000000 --- a/src/spatialite/test/sql_stmt_security_tests/isXblob8.testcase +++ /dev/null @@ -1,30 +0,0 @@ -isXblob - RIFF, not Webp -:memory: #use in-memory database -SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), GeomFromExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT BlobFromFile("sql_stmt_tests/seconds.wav") as blob) dummy -1 # rows (not including the header row) -12 # columns -Hex(blob) -IsPngBlob(blob) -IsGifBlob(blob) -IsGeometryBlob(blob) -IsZipBlob(blob) -IsPdfBlob(blob) -IsTiffBlob(blob) -IsJpegBlob(blob) -IsExifBlob(blob) -IsExifGpsBlob(blob) -GeomFromExifGpsBlob(blob) -IsWebpBlob(blob) -524946467C01000057415645666D74201200000007000100401F0000401F000001000800000066616374040000004A010000646174614A010000523B2832AC9EAE2E3D61432B2BB49FA43B3560493827D5A2A0F62E5E4B3D293EA79EB52D4B4B3B2B2CB09DA53435593E3728F7A19E682D5E4B3E2737A89DBB2B4E56442D2EAD9CAA2F3E59453126C09E9F40306B41392544A49ED12EEF4C41292EAB9DB52C42624C3029BA9EA837397E4C3A27649F9F5C3463473D283BA89EBD304D45422E2DAF9DAB3540523C3328D29FA24534553E392A4DA29ED5315C423E2D32AC9EB3344F5644322AB99EA83D37504139284CA1A0713250483E2A38A89EBC2E44574D2F2CB49DAA343C5E443627DF9EA247345E4B3F273FA19FDD2D4949442C2FA99DB4303F6446302ABB9DA83C35584A3D284EA09F7D314E3E3F2A36A59DBC2E4E4B442F2BB29EAB3336574B3B28E89FA24D3150503E2646A29FDA2D4851522C32AA9DB52E3E4D4E312AB79DA733335D563B27E99FA2462D584C3F2941A29ECB2C4449402D31AB -0 -0 -0 -0 -0 -0 -0 -0 -0 -(NULL) -0 - diff --git a/src/spatialite/test/sql_stmt_security_tests/isXblob9.testcase b/src/spatialite/test/sql_stmt_security_tests/isXblob9.testcase deleted file mode 100644 index aed9633..0000000 --- a/src/spatialite/test/sql_stmt_security_tests/isXblob9.testcase +++ /dev/null @@ -1,30 +0,0 @@ -isXblob - Webp -:memory: #use in-memory database -SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), GeomFromExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT BlobFromFile("sql_stmt_tests/test.webp") as blob) dummy -1 # rows (not including the header row) -12 # columns -Hex(blob) -IsPngBlob(blob) -IsGifBlob(blob) -IsGeometryBlob(blob) -IsZipBlob(blob) -IsPdfBlob(blob) -IsTiffBlob(blob) -IsJpegBlob(blob) -IsExifBlob(blob) -IsExifGpsBlob(blob) -GeomFromExifGpsBlob(blob) -IsWebpBlob(blob) -52494646381300005745425056503820FC120000D03E009D012A80008000000708858588858488028219C1D32F2755672A4E67F137FFDD8CFDBE9D39FDFA9FE7536E0AFC2BF32FC1D7AD7DCFF573C95F595A85FCB3EDE7EA3FBCFEE3FC65FE03BCFF923A82FB13FD5F8ABEC36DA3FD6FFCEF505EF07FC5FF01E2DBFEE7A0DF5BBFE77B80FF32FE61FEDBD54FF37E141F75FF4BEC03FD1BFB67FD6FF3DF98DF249FF17F99FCDEF6EFF4CFFE4FF35F00FFAB3FF2FFBC7B5EFFFFF73DFB85ECB1FAC7FF87DEFCD6E1CCB7C52211F324FAD197772F07ADFF320C8A6E3C954257AA7D1D37D2E3DFE692A22442982085E1D214D44549FE4B87B9AF1AA705E5618B9A6CB936CF8D950E9D08F2262F84562F4D3A9EC827E7EEBDD7BD95ED9637C83E991EB4E61D31D8688EDC9F6DAE95789CF8178A989A30CE4B3DBBF88671461109594162D6878D75E4198E04D7225B1A17CBC83189D0AA0EBF3290BE2B020FB221914F0E75A2FE86661E2224636ECB04DA2E078107BDD1BD79A073912F2255BA4A9E3F2E5CAB360885056C7FF617FF2D128EC21630BAA994E7FF19467493FA443061439801CCE618020B0A60E239DC6DCC4E6E9D21EBAF822697B6731EDF7766E4EB449B6870CB32CD316120FFFF112CB5AB755AC0A728D7CF1C882794C50DF5BC848870054E346FB04C426A5DEE7E50F9B6CA043A4D5819BF7500DF3DD5EB43A5EDA5F766B8733DE67B21D802F45D051870127ABBB9A0FEFFFE1381F5747C039FFF921BF9E7FD5E69A3FFC9BC2FEE2C690BA401704F7EF1BF3EACDCE82334409DED4675F173A1C1C417F03FC220A554FD54F4DBD328E45139063A58698F766F82FCD2B591549E20E23BF425C47FC7A1FCAE2DFFB04ECB2C8076274C9FF456233F65E2F6ABEA766FD6F30CD8596D9DDE7F491BF36955BA853B80B7DD7D2DB7466230967B8035373285B84630EF4A084D1388367502F970A662A37561708B6B7D392C1D959FCA8DD88A5BEA53C69FC239E39CF0A500D2658B751E67D12F185EADB6664F2B58573CB7880F61F8B54E7F66BFD6DFFBE896767BFE61931A97F9442FBFEE2CBB9EE91A4D215960754CA00BD922C191AA1F949535D7E26A5BE8002ADD5CD8B1B8A7F43E3851AD08BF00B5FF7AE99D3D3474CD0388168AEE9775E50BB7D0FA08327B3D04BC2F77EFA0D157E9C5D32A155C4714A97531FFC1B55B1363E825BD814D13EF96CF72363FFEFC44357DCC6283F4D30FF3C32ADC0E7FFE733B95DA5B3D7BB9FFA67F6571D35612FFF109509DE5DA5AFBFDB95896E2B2E51FAAD29F41787A55C068A62E011F1AFC72E709D7F2FAA2FEAF7F46E64FD6514D34EE1C0A11EAC027FC578C58D02DCCABF46A6AB2B2EAB608BD1903E3D882EA978A6D80304A127A0E8BEE556567DF49447780352611F4D253C4ECE8FCC8EFDB1D6F946FFF011C9E981C8F795C91F26DA2DDFEECE906CA45832D4201B17E5E2CCAE32E75871588DE9ADBF75FB3577F9D4AD9F0135BBF8624DE5FF880A1C293C1C4B94305366B09E25FC07EBB23D4920988B08D39024334650A9D1576A8955C5D1BB5FF56F9A6B3743FD39F8F04F10835E088A68F03D11D0C11AF2939721065C8C87FFA6A5E964AC9C914684D9D4489A42558716F07CB7A781D6342CF8C42B07414A8322CEDA3C88DF2691FD146B6405116000F21294A9C1303491EB1228668ED7767F72CA5A4B5E8B9C09277ADAC135353AADF56D858D240CB91EFCB37E68E3B687DC74D8FE4D9FDF41F0B435839C87D9971EFF3ACF1D15C477D84E3E01231B174F16E4D1C84A12FE9D9E7ACD3256D28B32E751641CA25663EDA61D903A00D2141C16D9E2A9A98F2DC6776DB2F2DFC1E72B97A5142DC347B48E23AE9706311E9E987F5543AF8CF2983C2CD1BE96D2EF46FEC81105A1C92B9E6D03631E0201271437201299B73D6F8733BC6FEFB31934D8FBF6F6F900E2809F05A1643364566C6ABF94F96095E7CD5F47B69F891C0ECB906A706106010730D01A20460FD122A9CAD3471A0A2F85918883AE0E6F43FE6AE84B0E23DD80A57F50DE5BFB5DA6F0F2A650971267B7D2925EE5A16D387A2BBC441443F66DA408991A23CF13DF96615385430C544F62CF0BB4E0DA8C663E78D868D4688DC1175A01B5DEFA2720075AB17CA74084D4B9EE325F33A11AB969742857EC5461B9050F0475983F94E6B6CC27D04E01313A52A9CD8F949925B781A4484675499BADBF8B9904F31BA5CC2266820E65662688FA65E3D47DA990098933EA095642C430C8120F80ACF1BD7B0FC44F1F4CF7D4610EFAE786C658A821F4A0EF142F546455692A296B8DCC28C57C4AEC85AF4DFE680749C3065CE2EE8A716F2B1E518FB01ED4B76B5EBF225EC13877A71E614E25C4B4B72B068A68E4FCF5EEE6C879B22C4DCE83C6F33EB8B144F4A2BA134B962FDC8B42B50E3CA19BCF431A7D746CC681C5CB9C789BEB4F3373029511B2A62C038CDC1FF612A903D2A6242FC75ECDA5FBB6B830F3F09C0589A6C9E0FE162B5736B957073931DF627E0A95593DDED2F919F96C281458B75F16F71BD8721EA97D45FD9BE3D4BA97EF1E8478B25172F3D8E2F35CAE99B96DAF13D060C96C1901A6E42A18BCE7913CCAC787778C970AB41E3489E5D37EBEFDDE1AE28793D6129F01E79BFE8F71EF9E2FBA6FEF5184C6F0878FF3FCEABF97CA7D1552D623B980CF69409A0B8AD241EF855F79C2DF32B66A26730F03124C04F56AF74C3BC5C8B7050982CAF44CB23A3A12FF25305D98556D854E9578CAFFA14F30317B784429AA6FE4521F16B179AC8724A78FCBC2398676EEF4809FD47BA160BEB3008B55403374EFE07D3FBB1BFD25A2771D8B414DAE124561355D39CBB6E3A919FAD83F12C83EBFDA741D5A7F0976CA032A194FC3A2490DBE9C373E1EFC555175979283DC2F22B7FEA0E3C0139DEA1E60865B88D156907B738CE1896679C1156F348C3A71F84ED748D8CE7F61C2F01073848BA043CDF4C46B0237C9BF5F7C58A02EE25F1FDADF45E3D5D98F93E2211263E07B368A76A9B8CADC0878C48D591E14693DE1E8D4EFC192B4235CF5F54C191E39EC66C2B59A4B36B4A38961A60D7F20B6B038C50468CF6AB7105EF7C5BB5FDF855C2AB9BE89D39C1C38394701D5EEA1E62FFBC9B41B6B3FB5D9A15316F05AA31FA0791EBE7FEEBBCBF8A1196372196794CA47A9F361AACCFC998CF9273FC3ECE5B38944DD276B0C45C2C97B749B745B84752CCA1F9F8ECFE0041023F8D5455F86745F6D7F0343A7951524F4DF4CC5B9314BF0DF650D43C006A5DD6DCB75761D7603150FDADCDC100C7E84C641157B80B4688C054BAAFB0AC8F79A19728F473D4A6491D8CC940A9985B91F731F79677F30F982F615F5D1E8B710A04A3CEC757477C7903F39BA92A1815571990770813EE970AFB080F0D99D8888B59157900AF8FFC54F117B089A2D9FF99E6B1948A7A2BFA779CD7EED737C911020D2281A833D70A5EAD5A9625786570CD7D4E834F6D6EF5C16DDF88BE427EB417F098532175F7FA1E9858C5C3E75CD5EE8733DB3830116FFF0669FCDD3FC1AAABBD9D65F2FB15AE2D142CCD1452C850FC6B563880E35DA8D6CD937B263699C3B974151AAB748EAB8922B3478531B43B4A505AF8C2DE2A2F660D9A5E37AEFACFB6AFA5D981A8C70A6F04B76197261EBB0FF3328ED056EF9C24AE8754E0A3F42D23D2FF7F6E8566B6D91DEC01DF4C272479593B9A2B6519EC16FFA83CBED670867AEE5D806D75CD6BD4F9BB47E4447A2439619F2EDF1F913632617DF30203AF0251FC82455FA639983E5332E44F9B00BB66AFEC61DC21CBDA5419BCE84FD1FF55F845A9063AC622B451D8465E7E7D893C3565B5DD06E49FE6CCE94F5EDB3EF441EC8AF35FA69681799FFEE9462F3CD7EEB9BE83C411CA2EBECA8A42B8CD5627F6E25A3875A9E12784E259C1844F4B7B3A582147CCE8C32553C25B75CB727758FEF364CB0F687330601B9AC8EABB67B426C1B4348D64B1578E79C09A4C5D971E3D5C4834E4245EC778F05E5423183A9B3415A115B6FA910561C053F41A57C67A23578ED3B45B63BE6433FE51444E0FE2D764FC1655AF28918AAA87FC2F926D01CA76DE6451287ABFC5B3197ED971A0CDBC35F6D39F82F497A7C9C5EBE757E00182941DE76F22CF3BE0D835CA1D60E33B2DEF7AB1D4760DCA69AABBCD9868BD05E748C3D49DC74F2D9BC04E37F676E67BFB086EFB6C6CBF4127EC3011B70A9F483381DEC0018C1A1B3724AAFCEC8A0973BEA7FD31FA7CF50C3FA99C8A8123EF0EF92D4CDA395D1915B02693D375D576DD29AE5280B454537A5B6009AB1137D296C47715398E1038FC0E7F01B2B034FD1361717416E75157D7E5B14C0F3825170708C009B86A25B168935D3C7609F6F47F6F2035C02C78079BD45C6E28C6B71E8C0E539FE8A2C2F58E1B072B0109318E5CE0DC7EB3CAA10EEFA1C5A3711FAD493B5C7EC999D27E657369E439B4D08302B8AEE65F8D73DB79D9DEE1696232359FE7F68D196C683787E278221228D5D7253F0E7278A0947E073ED2AC4559AE65247A98736793B9FBED54D3CBBF8D215D95010FE2BA7F0C6C16F38B7CD152F04BD39BDD681EA7CA6372CF33F1C8AB544D97C03594B2F3DF9B74B889F070CCCBCF7D2CE63A096BEB28785705B74E54139DEF95B0F210C7CFB1E030AB4E39FBD0866BE0DFE4BF6BA43C6EF34D7EEFC770DC76326D0F8289323044C38E78E5D08FDFDE4DAE74B47EA2FD38C2E847340D6D2C5AD71281C8687320CDFFD7DA37F2B1BD7A26D3C6DF60DDE0AD5AFD201C237F203C473417AFF8F551B7D49575A086910D59E65011661FC2EA0F54B5919B26DAE1A1E9B7BD8B46CF984637B9C70DA2C5B6A7297FD6420F16CFEF7F839DC0E97BE8A80729FCF2CEE4E0FFA440B0D36B6828CEBF2618DE96F70340B317D524D0D701BEF4624580BD576C109F46083226AB7B163280B21778F371B32B186EF4005383538E5EFFF8B09EE648E32D79022ED5F305F0262D20A434C7D6463B520430C480800AF5D3E880F133D0781A2C61B358519DE88003B1C843ADE2F1201BA10B83D57255B8EF70663C139B27609240580D4B8168C6AC4F014D6032209928BF5FB65A293F1CACFE3491313DD683040F97452C9C48EFD6365C152A74E94156F8CBA544388FFAD737199D9269D2447821C88133DA943FD56663CE10F2574D53C85190BB7768AFF7189548FE817726C6ED00C43A383C34955CD09443A35326693524F65E94048D9D13740D39D0B27ABB3B111FB0C91779D5913B28E61FFF965999C6662A48A0E4643834F2D6CA8E5098DE1520B5EFCB7B0BD34F36388B5B23A35A7A50B893EECF3CC7396CFF51FE1CDB1C9736C40DB11B2022A65D43FED9189CF9B6D24D88EAA613949425030861FE846CEC72BD5D1329167CB2B134518959485587E18D98ABA1B10095673ED69E1458410337DCE7D02A1CE49116E3959E897033639F56711501298FB4CE63280BFB51188590BAD6654F823CD4E7416EC031DD3268125DB01C2867780427D309208971E6CF9AFED31E91F0C31A6B2EA4F9992BA582CC7D221C55436637FE3145E4CABDB051320BD52CC5805FDCAE119DB659D90EE08F35F4009C9E1B578E863F8720B824134175FC7C757EB0318E0BCFF64DB8EA99D8B7FFE59D19BA0796A3FF94312ED0D26549D6E1E3B2619EA0C4B529B19A9B1CA82740D38437ADD1D6BB0EA4C502774F539F0A34193EA9108D7860CB0800E81B94D0C966F1893D102E91BF22730D7A9B8768C7ABED66016CBC430F00163F5F3B5EBBA2F0EEA0BA8DA054DD18437BD4CA49725FE6FB06F609AC4829B158D4C03A4952A2226F378E50130DA7625021260533393929024CECC98564D0A0F5179E25A444F31B5BCFBEE042C4310816604534B42AE39B0C337A42C4C8F6595A6690FA47D698FCFA8C81A6114AB5149E29A77F57DB5AF5FE974FCA5FD676A1D18E47E983A842ABB4D3A24366993CEC14790B44481DC7B98CD8BF023EB2BC80EC58C6ED80C406C79B89F8003EBE641731864EC091464367A30405B7406713805F60038037B94D403181E2CE30EA92EB1F1405ED43DB6704BE529F94B3FA130EB13E31554788FC996D08AE2B50CDB2CE06EE60AFD6E404863069CB7229041A9A00BCA53347BAC08C2A60BDC708916ACCA8176AF5C30C80E3501A98AC99535A0324E8C9AE9BE365C64212677CF11F7897F852A8F240135F9F7622BAEC84B962285E65503BDA3BD0E5D674EE36B54C9EAC921EE7EF6A7C8E169D14D034223CD55AB82BAA1700467C42FD7954148032D919E9C00E247A26364046F09E86CB9E24B48D7EEE1949E698B0731033C79022715A5B3ACEF98DD3AB4E6E0F9F32C0BB563C31C1D9F700694623BB6881C184B1BFDBB2FDE4552DA930FD0B7A247DC121884709258EA5EF46EE15D4A5BF1F37A274432AE1CA0A54FE12B43CA9D49EC25F300CD3021DCC4BC651265F7C2FB4F61941B360A70371F4EB3CBA13480CF3C5B1B28C3E59FC8F6F0990C46F033E2643736C00DE293FB65ACFB9AD54BEAAD5B4B2EF47CEC5C8D804EA198646E61BCB3E0E3A6AE1F63834470F228740D0C12EB4860A5A962BCB74D62C66EDE2A2AC5E845EB6A23BF6726B027ECA8C599719E43C910BFBA285FD0AD1E5184623A1B47691C3105D5906DA48EA8D929EA89A4801CA3D2586CF4A84732C0750A94B1D489F9C6C3205BE384E0CCBD41D70B1D198A1AEC92B7133551E7948932A900494B61154C4A86DCCF37DE4BE3D6A6E7508AA288A3C1E627CB942CD11E8FE27A75E070686B90846A6AC7F460CECA0FD032A23DA8730B11CA3D417565FFC1C82B23F1AA0432037911B27A04468EE14BB69928074E834EF5ABAB3110EC3E7DEE90700004941525408000000756E6B6E6F776E0049434F5005000000323031300000494E414D09000000796F73656D6974650000 -0 -0 -0 -0 -0 -0 -0 -0 -0 -(NULL) -1 - diff --git a/src/spatialite/test/sql_stmt_tests/DSCN0042.JPG b/src/spatialite/test/sql_stmt_tests/DSCN0042.JPG deleted file mode 100644 index 3bec2f7b9725faae7be63fa291966704d16830ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 156695 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%0DWo3&6&d)E|I;}d72X3P--XJ?VI%+j6N{t&sv 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%0D=4Q%R27lDVBF9FgJ9Yc$QWKgvLjK3 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

  • iUt{?%F8R-e|BHPb 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 z%0D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 CS|m3B diff --git a/src/spatialite/test/sql_stmt_tests/uncompressgeom1.testcase b/src/spatialite/test/sql_stmt_tests/uncompressgeom1.testcase deleted file mode 100644 index 7cefa9d..0000000 --- a/src/spatialite/test/sql_stmt_tests/uncompressgeom1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -uncompressgeometry -:memory: #use in-memory database -SELECT AsText(UncompressGeometry(GeomFromText("POLYGON((1 2, 3 1, 4 4, 1 2))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(UncompressGeometry(GeomFromText("POLYGON((1 2, 3 1, 4 4, 1 2))", 4326))) -POLYGON((1 2, 3 1, 4 4, 1 2)) diff --git a/src/spatialite/test/sql_stmt_tests/uncompressgeom2.testcase b/src/spatialite/test/sql_stmt_tests/uncompressgeom2.testcase deleted file mode 100644 index 7c565c8..0000000 --- a/src/spatialite/test/sql_stmt_tests/uncompressgeom2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -uncompressgeometry - non blob -:memory: #use in-memory database -SELECT UncompressGeometry("foo") -1 # rows (not including the header row) -1 # columns -UncompressGeometry("foo") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/uncompressgeom3.testcase b/src/spatialite/test/sql_stmt_tests/uncompressgeom3.testcase deleted file mode 100644 index 43980de..0000000 --- a/src/spatialite/test/sql_stmt_tests/uncompressgeom3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -uncompressgeometry - bad blob -:memory: #use in-memory database -SELECT UncompressGeometry(zeroblob(99)) -1 # rows (not including the header row) -1 # columns -UncompressGeometry(zeroblob(99)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/us_ch_m.testcase b/src/spatialite/test/sql_stmt_tests/us_ch_m.testcase deleted file mode 100644 index 23c9027..0000000 --- a/src/spatialite/test/sql_stmt_tests/us_ch_m.testcase +++ /dev/null @@ -1,7 +0,0 @@ -US chains to metres -:memory: #use in-memory database -SELECT CvtFromUsCh(100); -1 # rows (not including the header row) -1 # columns -CvtFromUsCh(100); -2011.684:8 diff --git a/src/spatialite/test/sql_stmt_tests/us_ft_m.testcase b/src/spatialite/test/sql_stmt_tests/us_ft_m.testcase deleted file mode 100644 index 979a6ee..0000000 --- a/src/spatialite/test/sql_stmt_tests/us_ft_m.testcase +++ /dev/null @@ -1,7 +0,0 @@ -US feet to metres -:memory: #use in-memory database -SELECT CvtFromUsFt(10); -1 # rows (not including the header row) -1 # columns -CvtFromUsFt(10); -3.048:5 diff --git a/src/spatialite/test/sql_stmt_tests/us_in_m.testcase b/src/spatialite/test/sql_stmt_tests/us_in_m.testcase deleted file mode 100644 index a451f5b..0000000 --- a/src/spatialite/test/sql_stmt_tests/us_in_m.testcase +++ /dev/null @@ -1,7 +0,0 @@ -us inches to metres -:memory: #use in-memory database -SELECT CvtFromUsIn(10); -1 # rows (not including the header row) -1 # columns -CvtFromUsIn(10); -0.254:5 diff --git a/src/spatialite/test/sql_stmt_tests/us_mi_m.testcase b/src/spatialite/test/sql_stmt_tests/us_mi_m.testcase deleted file mode 100644 index 9b3ed74..0000000 --- a/src/spatialite/test/sql_stmt_tests/us_mi_m.testcase +++ /dev/null @@ -1,7 +0,0 @@ -US miles to metres -:memory: #use in-memory database -SELECT CvtFromUsMi(1.0); -1 # rows (not including the header row) -1 # columns -CvtFromUsMi(1.0); -1609.347:8 diff --git a/src/spatialite/test/sql_stmt_tests/us_yd_m.testcase b/src/spatialite/test/sql_stmt_tests/us_yd_m.testcase deleted file mode 100644 index 3ccd1c6..0000000 --- a/src/spatialite/test/sql_stmt_tests/us_yd_m.testcase +++ /dev/null @@ -1,7 +0,0 @@ -US yards to metres -:memory: #use in-memory database -SELECT CvtFromUsYd(10); -1 # rows (not including the header row) -1 # columns -CvtFromUsYd(10); -9.144:5 diff --git a/src/spatialite/test/sql_stmt_tests/wkb1.testcase b/src/spatialite/test/sql_stmt_tests/wkb1.testcase deleted file mode 100644 index 8675219..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: MultiPoint XY (single point) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("MULTIPOINT(1.2 3.4)", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("MULTIPOINT(1.2 3.4)", 4326))); -0104000000010000000101000000333333333333F33F3333333333330B40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb10.testcase b/src/spatialite/test/sql_stmt_tests/wkb10.testcase deleted file mode 100644 index 01628d2..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: MultiLinestring XYZ (single line) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("MULTILINESTRINGZ((1.2 3.4 100, 5.6 7.8 101))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("MULTILINESTRINGZ((1.2 3.4 100, 5.6 7.8 101))", 4326))); -01ED0300000100000001EA03000002000000333333333333F33F3333333333330B40000000000000594066666666666616403333333333331F400000000000405940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb11.testcase b/src/spatialite/test/sql_stmt_tests/wkb11.testcase deleted file mode 100644 index 1af58d6..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: MultiLinestring XYM (single line) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("MULTILINESTRINGM((1.2 3.4 12, 5.6 7.8 13))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("MULTILINESTRINGM((1.2 3.4 12, 5.6 7.8 13))", 4326))); -01D50700000100000001D207000002000000333333333333F33F3333333333330B40000000000000284066666666666616403333333333331F400000000000002A40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb12.testcase b/src/spatialite/test/sql_stmt_tests/wkb12.testcase deleted file mode 100644 index 02f2bbc..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: MultiLinestring XYZM (single line) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("MULTILINESTRINGZM((1.2 3.4 100 12, 5.6 7.8 101 13))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("MULTILINESTRINGZM((1.2 3.4 100 12, 5.6 7.8 101 13))", 4326))); -01BD0B00000100000001BA0B000002000000333333333333F33F3333333333330B400000000000005940000000000000284066666666666616403333333333331F4000000000004059400000000000002A40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb13.testcase b/src/spatialite/test/sql_stmt_tests/wkb13.testcase deleted file mode 100644 index 9c03110..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XY(single line) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(1.2 3.4, 5.6 7.8))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(1.2 3.4, 5.6 7.8))", 4326))); -010700000001000000010200000002000000333333333333F33F3333333333330B4066666666666616403333333333331F40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb14.testcase b/src/spatialite/test/sql_stmt_tests/wkb14.testcase deleted file mode 100644 index af12746..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYZ (single line) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(1.2 3.4 100, 5.6 7.8 101))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(1.2 3.4 100, 5.6 7.8 101))", 4326))) -01EF0300000100000001EA03000002000000333333333333F33F3333333333330B40000000000000594066666666666616403333333333331F400000000000405940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb15.testcase b/src/spatialite/test/sql_stmt_tests/wkb15.testcase deleted file mode 100644 index 9e35fd8..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYM (single line) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(1.2 3.4 12, 5.6 7.8 13))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(1.2 3.4 12, 5.6 7.8 13))", 4326))); -01D70700000100000001D207000002000000333333333333F33F3333333333330B40000000000000284066666666666616403333333333331F400000000000002A40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb16.testcase b/src/spatialite/test/sql_stmt_tests/wkb16.testcase deleted file mode 100644 index 423b81b..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYZM (single line) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(1.2 3.4 100 12, 5.6 7.8 101 13))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(1.2 3.4 100 12, 5.6 7.8 101 13))", 4326))); -01BF0B00000100000001BA0B000002000000333333333333F33F3333333333330B400000000000005940000000000000284066666666666616403333333333331F4000000000004059400000000000002A40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb17.testcase b/src/spatialite/test/sql_stmt_tests/wkb17.testcase deleted file mode 100644 index 1c607ba..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XY (2 lines) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(1.2 3.4, 5.6 7.8), LINESTRING(5 6, 7 8))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(1.2 3.4, 5.6 7.8), LINESTRING(5 6, 7 8))", 4326))); -010700000002000000010200000002000000333333333333F33F3333333333330B4066666666666616403333333333331F40010200000002000000000000000000144000000000000018400000000000001C400000000000002040 diff --git a/src/spatialite/test/sql_stmt_tests/wkb18.testcase b/src/spatialite/test/sql_stmt_tests/wkb18.testcase deleted file mode 100644 index addc9a3..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYZ (2 lines) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(1.2 3.4 100, 5.6 7.8 101), LINESTRINGZ(5 6 110, 7 8 111))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(1.2 3.4 100, 5.6 7.8 101), LINESTRINGZ(5 6 110, 7 8 111))", 4326))); -01EF0300000200000001EA03000002000000333333333333F33F3333333333330B40000000000000594066666666666616403333333333331F40000000000040594001EA03000002000000000000000000144000000000000018400000000000805B400000000000001C4000000000000020400000000000C05B40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb19.testcase b/src/spatialite/test/sql_stmt_tests/wkb19.testcase deleted file mode 100644 index 96dc740..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYM (2 lines) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(1.2 3.4 12, 5.6 7.8 13), LINESTRINGM(5 6 11, 7 8 12))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(1.2 3.4 12, 5.6 7.8 13), LINESTRINGM(5 6 11, 7 8 12))", 4326))); -01D70700000200000001D207000002000000333333333333F33F3333333333330B40000000000000284066666666666616403333333333331F400000000000002A4001D2070000020000000000000000001440000000000000184000000000000026400000000000001C4000000000000020400000000000002840 diff --git a/src/spatialite/test/sql_stmt_tests/wkb2.testcase b/src/spatialite/test/sql_stmt_tests/wkb2.testcase deleted file mode 100644 index 9605195..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: MultiPoint XYZ (single point) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("MULTIPOINTZ(1.2 3.4 100)", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("MULTIPOINTZ(1.2 3.4 100)", 4326))); -01EC0300000100000001E9030000333333333333F33F3333333333330B400000000000005940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb20.testcase b/src/spatialite/test/sql_stmt_tests/wkb20.testcase deleted file mode 100644 index e4093d0..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYZM (2 lines) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(1.2 3.4 100 12, 5.6 7.8 101 13), LINESTRINGZM(5 6 110 11, 7 8 111 12))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(1.2 3.4 100 12, 5.6 7.8 101 13), LINESTRINGZM(5 6 110 11, 7 8 111 12))", 4326))); -01BF0B00000200000001BA0B000002000000333333333333F33F3333333333330B400000000000005940000000000000284066666666666616403333333333331F4000000000004059400000000000002A4001BA0B000002000000000000000000144000000000000018400000000000805B4000000000000026400000000000001C4000000000000020400000000000C05B400000000000002840 diff --git a/src/spatialite/test/sql_stmt_tests/wkb21.testcase b/src/spatialite/test/sql_stmt_tests/wkb21.testcase deleted file mode 100644 index 2f35b6c..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb21.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XY (single polygon) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)))", 4326))); -010700000001000000010300000001000000050000000000000000002440000000000000244000000000000026400000000000002440000000000000264000000000000026400000000000002440000000000000264000000000000024400000000000002440 diff --git a/src/spatialite/test/sql_stmt_tests/wkb22.testcase b/src/spatialite/test/sql_stmt_tests/wkb22.testcase deleted file mode 100644 index 1e2a054..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb22.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYZ (single polygon) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POLYGONZ((10 10 100, 11 10 101, 11 11 102, 10 11 103, 10 10 100)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POLYGONZ((10 10 100, 11 10 101, 11 11 102, 10 11 103, 10 10 100)))", 4326))); -01EF0300000100000001EB0300000100000005000000000000000000244000000000000024400000000000005940000000000000264000000000000024400000000000405940000000000000264000000000000026400000000000805940000000000000244000000000000026400000000000C05940000000000000244000000000000024400000000000005940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb23.testcase b/src/spatialite/test/sql_stmt_tests/wkb23.testcase deleted file mode 100644 index 49be622..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb23.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYZM (single polygon) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)))", 4326))); -01BF0B00000100000001BB0B00000100000005000000000000000000244000000000000024400000000000005940000000000000F03F00000000000026400000000000002440000000000040594000000000000000400000000000002640000000000000264000000000008059400000000000000840000000000000244000000000000026400000000000C059400000000000000840000000000000244000000000000024400000000000005940000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb24.testcase b/src/spatialite/test/sql_stmt_tests/wkb24.testcase deleted file mode 100644 index 49be622..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb24.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYZM (single polygon) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)))", 4326))); -01BF0B00000100000001BB0B00000100000005000000000000000000244000000000000024400000000000005940000000000000F03F00000000000026400000000000002440000000000040594000000000000000400000000000002640000000000000264000000000008059400000000000000840000000000000244000000000000026400000000000C059400000000000000840000000000000244000000000000024400000000000005940000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb25.testcase b/src/spatialite/test/sql_stmt_tests/wkb25.testcase deleted file mode 100644 index 41b3029..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb25.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XY (2 polygons) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)), POLYGON((15 15, 16 15, 16 16, 15 16, 15 15)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)), POLYGON((15 15, 16 15, 16 16, 15 16, 15 15)))", 4326))); -010700000002000000010300000001000000050000000000000000002440000000000000244000000000000026400000000000002440000000000000264000000000000026400000000000002440000000000000264000000000000024400000000000002440010300000001000000050000000000000000002E400000000000002E4000000000000030400000000000002E40000000000000304000000000000030400000000000002E4000000000000030400000000000002E400000000000002E40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb26.testcase b/src/spatialite/test/sql_stmt_tests/wkb26.testcase deleted file mode 100644 index 1042004..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb26.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYZ (2 polygons) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POLYGONZ((10 10 100, 11 10 101, 11 11 102, 10 11 103, 10 10 100)), POLYGONZ((15 15 100, 16 15 101, 16 16 102, 15 16 103, 15 15 100)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POLYGONZ((10 10 100, 11 10 101, 11 11 102, 10 11 103, 10 10 100)), POLYGONZ((15 15 100, 16 15 101, 16 16 102, 15 16 103, 15 15 100)))", 4326))); -01EF0300000200000001EB0300000100000005000000000000000000244000000000000024400000000000005940000000000000264000000000000024400000000000405940000000000000264000000000000026400000000000805940000000000000244000000000000026400000000000C0594000000000000024400000000000002440000000000000594001EB03000001000000050000000000000000002E400000000000002E40000000000000594000000000000030400000000000002E4000000000004059400000000000003040000000000000304000000000008059400000000000002E4000000000000030400000000000C059400000000000002E400000000000002E400000000000005940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb27.testcase b/src/spatialite/test/sql_stmt_tests/wkb27.testcase deleted file mode 100644 index b6fd5d0..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb27.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYM (2 polygons) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(POLYGONM((10 10 1, 11 10 2, 11 11 3, 10 11 3, 10 10 1)), POLYGONM((15 15 1, 16 15 2, 16 16 3, 15 16 3, 15 15 1)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(POLYGONM((10 10 1, 11 10 2, 11 11 3, 10 11 3, 10 10 1)), POLYGONM((15 15 1, 16 15 2, 16 16 3, 15 16 3, 15 15 1)))", 4326))); -01D70700000200000001D3070000010000000500000000000000000024400000000000002440000000000000F03F00000000000026400000000000002440000000000000004000000000000026400000000000002640000000000000084000000000000024400000000000002640000000000000084000000000000024400000000000002440000000000000F03F01D307000001000000050000000000000000002E400000000000002E40000000000000F03F00000000000030400000000000002E4000000000000000400000000000003040000000000000304000000000000008400000000000002E40000000000000304000000000000008400000000000002E400000000000002E40000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb28.testcase b/src/spatialite/test/sql_stmt_tests/wkb28.testcase deleted file mode 100644 index a0cee33..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb28.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYZM (2 polygons) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)), POLYGONZM((15 15 100 1, 16 15 101 2, 16 16 102 3, 15 16 103 3, 15 15 100 1)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)), POLYGONZM((15 15 100 1, 16 15 101 2, 16 16 102 3, 15 16 103 3, 15 15 100 1)))", 4326))); -01BF0B00000200000001BB0B00000100000005000000000000000000244000000000000024400000000000005940000000000000F03F00000000000026400000000000002440000000000040594000000000000000400000000000002640000000000000264000000000008059400000000000000840000000000000244000000000000026400000000000C059400000000000000840000000000000244000000000000024400000000000005940000000000000F03F01BB0B000001000000050000000000000000002E400000000000002E400000000000005940000000000000F03F00000000000030400000000000002E400000000000405940000000000000004000000000000030400000000000003040000000000080594000000000000008400000000000002E4000000000000030400000000000C0594000000000000008400000000000002E400000000000002E400000000000005940000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb29.testcase b/src/spatialite/test/sql_stmt_tests/wkb29.testcase deleted file mode 100644 index 12860f2..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb29.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XY (point, polygon) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POINT(1 2), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POINT(1 2), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)))", 4326))); -0107000000020000000101000000000000000000F03F0000000000000040010300000001000000050000000000000000002440000000000000244000000000000026400000000000002440000000000000264000000000000026400000000000002440000000000000264000000000000024400000000000002440 diff --git a/src/spatialite/test/sql_stmt_tests/wkb3.testcase b/src/spatialite/test/sql_stmt_tests/wkb3.testcase deleted file mode 100644 index 7e81584..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: MultiPoint XYM (single point) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("MULTIPOINTM(1.2 3.4 12)", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("MULTIPOINTM(1.2 3.4 12)", 4326))); -01D40700000100000001D1070000333333333333F33F3333333333330B400000000000002840 diff --git a/src/spatialite/test/sql_stmt_tests/wkb30.testcase b/src/spatialite/test/sql_stmt_tests/wkb30.testcase deleted file mode 100644 index 5fbef6d..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb30.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYZ (point, polygon) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(1 2 100), POLYGONZ((10 10 100, 11 10 101, 11 11 102, 10 11 103, 10 10 100)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(1 2 100), POLYGONZ((10 10 100, 11 10 101, 11 11 102, 10 11 103, 10 10 100)))", 4326))); -01EF0300000200000001E9030000000000000000F03F0000000000000040000000000000594001EB0300000100000005000000000000000000244000000000000024400000000000005940000000000000264000000000000024400000000000405940000000000000264000000000000026400000000000805940000000000000244000000000000026400000000000C05940000000000000244000000000000024400000000000005940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb31.testcase b/src/spatialite/test/sql_stmt_tests/wkb31.testcase deleted file mode 100644 index f2c540d..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb31.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYM (point, polygon) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(POINTM(1 2 11), POLYGONM((10 10 1, 11 10 2, 11 11 3, 10 11 3, 10 10 1)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(POINTM(1 2 11), POLYGONM((10 10 1, 11 10 2, 11 11 3, 10 11 3, 10 10 1)))", 4326))); -01D70700000200000001D1070000000000000000F03F0000000000000040000000000000264001D3070000010000000500000000000000000024400000000000002440000000000000F03F00000000000026400000000000002440000000000000004000000000000026400000000000002640000000000000084000000000000024400000000000002640000000000000084000000000000024400000000000002440000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb32.testcase b/src/spatialite/test/sql_stmt_tests/wkb32.testcase deleted file mode 100644 index be4dfac..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb32.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYZM (point, polygon) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(1 2 100 11), POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(1 2 100 11), POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)))", 4326))); -01BF0B00000200000001B90B0000000000000000F03F00000000000000400000000000005940000000000000264001BB0B00000100000005000000000000000000244000000000000024400000000000005940000000000000F03F00000000000026400000000000002440000000000040594000000000000000400000000000002640000000000000264000000000008059400000000000000840000000000000244000000000000026400000000000C059400000000000000840000000000000244000000000000024400000000000005940000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb33.testcase b/src/spatialite/test/sql_stmt_tests/wkb33.testcase deleted file mode 100644 index cd5a947..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb33.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: MultiPolygon XY (single polygon with interior ring) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("MULTIPOLYGON(((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("MULTIPOLYGON(((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11)))", 4326))); -01060000000100000001030000000200000005000000000000000000244000000000000024400000000000002E4000000000000024400000000000002E400000000000002E4000000000000024400000000000002E4000000000000024400000000000002440050000000000000000002640000000000000264000000000000028400000000000002640000000000000284000000000000028400000000000002640000000000000284000000000000026400000000000002640 diff --git a/src/spatialite/test/sql_stmt_tests/wkb34.testcase b/src/spatialite/test/sql_stmt_tests/wkb34.testcase deleted file mode 100644 index a68b874..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb34.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: MultiPolygon XYZ (single polygon with interior ring) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("MULTIPOLYGONZ(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("MULTIPOLYGONZ(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100)))", 4326))); -01EE0300000100000001EB03000002000000050000000000000000002440000000000000244000000000000059400000000000002E40000000000000244000000000004059400000000000002E400000000000002E40000000000080594000000000000024400000000000002E400000000000C0594000000000000024400000000000002440000000000000594005000000000000000000264000000000000026400000000000005940000000000000284000000000000026400000000000405940000000000000284000000000000028400000000000805940000000000000264000000000000028400000000000C05940000000000000264000000000000026400000000000005940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb35.testcase b/src/spatialite/test/sql_stmt_tests/wkb35.testcase deleted file mode 100644 index afaf83f..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb35.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: MultiPolygon XYM (single polygon with interior ring) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("MULTIPOLYGONM(((10 10 1, 15 10 2, 15 15 3, 10 15 3, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 3, 11 11 1)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("MULTIPOLYGONM(((10 10 1, 15 10 2, 15 15 3, 10 15 3, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 3, 11 11 1)))", 4326))); -01D60700000100000001D3070000020000000500000000000000000024400000000000002440000000000000F03F0000000000002E40000000000000244000000000000000400000000000002E400000000000002E40000000000000084000000000000024400000000000002E40000000000000084000000000000024400000000000002440000000000000F03F0500000000000000000026400000000000002640000000000000F03F00000000000028400000000000002640000000000000004000000000000028400000000000002840000000000000084000000000000026400000000000002840000000000000084000000000000026400000000000002640000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb36.testcase b/src/spatialite/test/sql_stmt_tests/wkb36.testcase deleted file mode 100644 index 2867e27..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb36.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: MultiPolygon XYZM (single polygon with interior ring) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("MULTIPOLYGONZM(((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 3, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 3, 11 11 100 1)))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("MULTIPOLYGONZM(((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 3, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 3, 11 11 100 1)))", 4326))); -01BE0B00000100000001BB0B00000200000005000000000000000000244000000000000024400000000000005940000000000000F03F0000000000002E400000000000002440000000000040594000000000000000400000000000002E400000000000002E400000000000805940000000000000084000000000000024400000000000002E400000000000C059400000000000000840000000000000244000000000000024400000000000005940000000000000F03F05000000000000000000264000000000000026400000000000005940000000000000F03F00000000000028400000000000002640000000000040594000000000000000400000000000002840000000000000284000000000008059400000000000000840000000000000264000000000000028400000000000C059400000000000000840000000000000264000000000000026400000000000005940000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb4.testcase b/src/spatialite/test/sql_stmt_tests/wkb4.testcase deleted file mode 100644 index 693431a..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: MultiPoint XYZM (single point) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("MULTIPOINTZM(1.2 3.4 100 12)", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("MULTIPOINTZM(1.2 3.4 100 12)", 4326))); -01BC0B00000100000001B90B0000333333333333F33F3333333333330B4000000000000059400000000000002840 diff --git a/src/spatialite/test/sql_stmt_tests/wkb5.testcase b/src/spatialite/test/sql_stmt_tests/wkb5.testcase deleted file mode 100644 index 2e9a0bc..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XY (2 points) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POINT(1.2 3.4), POINT(5.6 7.8))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POINT(1.2 3.4), POINT(5.6 7.8))", 4326))); -0107000000020000000101000000333333333333F33F3333333333330B40010100000066666666666616403333333333331F40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb6.testcase b/src/spatialite/test/sql_stmt_tests/wkb6.testcase deleted file mode 100644 index bb658ca..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYZ (2 points) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(1.2 3.4 100), POINTZ(5.6 7.8 101))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(1.2 3.4 100), POINTZ(5.6 7.8 101))", 4326))); -01EF0300000200000001E9030000333333333333F33F3333333333330B40000000000000594001E903000066666666666616403333333333331F400000000000405940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb7.testcase b/src/spatialite/test/sql_stmt_tests/wkb7.testcase deleted file mode 100644 index 220770c..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryCollection XYM (2 points) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(POINTM(1.2 3.4 12), POINTM(5.6 7.8 11))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(POINTM(1.2 3.4 12), POINTM(5.6 7.8 11))", 4326))); -01D70700000200000001D1070000333333333333F33F3333333333330B40000000000000284001D107000066666666666616403333333333331F400000000000002640 diff --git a/src/spatialite/test/sql_stmt_tests/wkb8.testcase b/src/spatialite/test/sql_stmt_tests/wkb8.testcase deleted file mode 100644 index b26ac75..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: GeometryColelction XYZM (2 points) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(1.2 3.4 100 12), POINTZM(5.6 7.8 101 11))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(1.2 3.4 100 12), POINTZM(5.6 7.8 101 11))", 4326))); -01BF0B00000200000001B90B0000333333333333F33F3333333333330B400000000000005940000000000000284001B90B000066666666666616403333333333331F4000000000004059400000000000002640 diff --git a/src/spatialite/test/sql_stmt_tests/wkb9.testcase b/src/spatialite/test/sql_stmt_tests/wkb9.testcase deleted file mode 100644 index 888c5dd..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkb9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Hex Wkb: MultiLinestring XY (single line) -:memory: #use in-memory database -SELECT Hex(AsBinary(GeomFromText("MULTILINESTRING((1.2 3.4, 5.6 7.8))", 4326))); -1 # rows (not including the header row) -1 # columns -Hex(AsBinary(GeomFromText("MULTILINESTRING((1.2 3.4, 5.6 7.8))", 4326))); -010500000001000000010200000002000000333333333333F33F3333333333330B4066666666666616403333333333331F40 diff --git a/src/spatialite/test/sql_stmt_tests/wkbtosql1.testcase b/src/spatialite/test/sql_stmt_tests/wkbtosql1.testcase deleted file mode 100644 index ffced2a..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkbtosql1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_WKBToSQL -:memory: #use in-memory database -SELECT Hex(ST_WKBToSQL(AsBinary(GeomFromText("Point(1 2)", 4326)))) -1 # rows (not including the header row) -1 # columns -Hex(ST_WKBToSQL(AsBinary(GeomFromText("Point(1 2)", 4326)))) -000100000000000000000000F03F0000000000000040000000000000F03F00000000000000407C01000000000000000000F03F0000000000000040FE diff --git a/src/spatialite/test/sql_stmt_tests/wkbtosql2.testcase b/src/spatialite/test/sql_stmt_tests/wkbtosql2.testcase deleted file mode 100644 index d309571..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkbtosql2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_WKBToSQL - bad blob -:memory: #use in-memory database -SELECT ST_WKBToSQL(zeroblob(50)) -1 # rows (not including the header row) -1 # columns -ST_WKBToSQL(zeroblob(50)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/wkbtosql3.testcase b/src/spatialite/test/sql_stmt_tests/wkbtosql3.testcase deleted file mode 100644 index 4f0517f..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkbtosql3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_WKBToSQL - float -:memory: #use in-memory database -SELECT ST_WKBToSQL(1.67) -1 # rows (not including the header row) -1 # columns -ST_WKBToSQL(1.67) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/wkttosql1.testcase b/src/spatialite/test/sql_stmt_tests/wkttosql1.testcase deleted file mode 100644 index e909df4..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkttosql1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_WKTToSQL -:memory: #use in-memory database -SELECT AsEWKT(ST_WKTToSQL("Point(1 2)")) -1 # rows (not including the header row) -1 # columns -AsEWKT(ST_WKTToSQL("Point(1 2)")) -SRID=0;POINT(1 2) diff --git a/src/spatialite/test/sql_stmt_tests/wkttosql2.testcase b/src/spatialite/test/sql_stmt_tests/wkttosql2.testcase deleted file mode 100644 index 5f0a22c..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkttosql2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_WKTToSQL - blob -:memory: #use in-memory database -SELECT ST_WKTToSQL(zeroblob(50)) -1 # rows (not including the header row) -1 # columns -ST_WKTToSQL(zeroblob(50)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/wkttosql3.testcase b/src/spatialite/test/sql_stmt_tests/wkttosql3.testcase deleted file mode 100644 index 29f29db..0000000 --- a/src/spatialite/test/sql_stmt_tests/wkttosql3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_WKTToSQL - bad WKT -:memory: #use in-memory database -SELECT ST_WKTToSQL("Point(1 2 3)") -1 # rows (not including the header row) -1 # columns -ST_WKTToSQL("Point(1 2 3)") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/yd_m.testcase b/src/spatialite/test/sql_stmt_tests/yd_m.testcase deleted file mode 100644 index f09d163..0000000 --- a/src/spatialite/test/sql_stmt_tests/yd_m.testcase +++ /dev/null @@ -1,7 +0,0 @@ -yards to metres -:memory: #use in-memory database -SELECT CvtFromYd(10); -1 # rows (not including the header row) -1 # columns -CvtFromYd(10); -9.144 \ No newline at end of file diff --git a/src/spatialite/test/test-legacy-2.3.1.sqlite b/src/spatialite/test/test-legacy-2.3.1.sqlite deleted file mode 100644 index 5810f8ad932977e302de0a528f423e366ca53e79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15360 zcmeHOO>7&-72e%hiR4MfU?4Fvf?5MOc$0_2i6yGv;~yL8|ft|Vg@ zGR2+u=FOXL=Dm6Io?Lz-rAg#jV>$)R0RjO6&jx{?odCI05%`Eq!bcdLgij9L zVbH(fBX|M?0tB830>%6P+@55nxrL6>HMTaslQOSg#20Y2lE;74H3ctRDkQr-{SQlh zvxAeQX=&jSPActo*H}_DvyGE|O*M@rplZ6@R9eRJ-&;gt%#wKei?x+9zPxA)Y3tfn z8_sj5Kaegj;$*XK_B%_?iz9^C|H!HSOlBVl4G;(rIEn}a_J0&tCD18A;QxaFv40kQ z$-qzW1PBBOJf8?eSv1cX-MXpP+mP>*@2G~U_jYD5vH#QT*9>}y{)7IC{)BF!G4@J*7Q-(F^+-5rtCCYSP@<=5Tl?DNYt~RxGlN^e zW^3ceW{n11^5eK_92s)z+~6(XnkK0)#z)rK!Db{p6SH#K`Bfcm+-_~o4BiB4)R&6R z3~r7i*0>i3H6YrK3}8+Ve?GVY zEKwhpJZE#fJg5?mh*wC>W)J|5(_EWDpQHbw57A%H4yvPT=pu?CmivCs8^AsjZ{Cr$dPl)GQl<2@R4IPx^gSL89Pj48s z4+JN6r?^mbZjRl%ZcUUN@QT^nksEru-_Z>E9gR$trovoXvL(l>i)$_|nd*3;+~}mu zo$di33l|U67KMhc_nLB3?I@a|>Y4{$aRhaEvjbXL)tbt-tY~Cay^E6AjiFFd1=wgA%dQlTOWE*vY;I&2ze zHk5bziq=rI$H>i9f)R# zN2C{6o~K(v#QuZ&-*I;=f&KvkKMetL{}1f{r(qZL3J^H%2-xv|o?-K75#2xTvpHn_ z_nM(l^vV_Xy@nM8-c^-%4Nnl}-ztnm=KeeopA&+84X5se7GW5;(zm}uiN43o!IdGw z@%`zDcw_>ekb8`QI?`?sIC7YRjY z=GgncwnBEbxlQsYkf`xwX-+yjq*}1-hu&QlLTBfb;Rg#)-`?6%dabvcq}%}2hM|`qrm&rK|1b(D zWmiaD!OM@AC35Hu^FZM9DG36Qv6M<*!=>UHaIa(wLK%`q=?aF#SXqjfin-i!Dt%qV zvrVO~K&}`v?N+>kXJ;v4v$Jq6>+qN4ih&!t24(s>)X9DWjPyzK8YyGU&dw%;wQG>! z!f|IztGaQuRLpzMCTufW3`@9}%UB{3I9uM&8~#?13Yp!TCji8`@Po!ai0TkM2TWQS z4~le$A&S{TSt?b0PtGTRQPm8kXS!je6&jBt1vm{OE=X&yy+Sa0#SM&*Dr9^hri6_m zOe7IOHo{P>ve32dUt_orSnc^V!lN{+-G!5(=?fRa4`L)5B)fz}pvJHS>1l8_@{O#t zX4%gOH%^s@mJP{bciP#LI)?lE&m~0eR0aL_QEz@en?#iTy_luE& zua$d-aQp*pA@;~iz6$MbOxYel-uD3gC-neyhoJ|ku4YJ;*DrQ{0uRvd!vC!qaisM8 Np3Vah;Gd2C{{T>y7=!=- diff --git a/src/spatialite/test/test-legacy-3.0.1.sqlite b/src/spatialite/test/test-legacy-3.0.1.sqlite deleted file mode 100644 index cf08c4e3f8443641fa111e2cfffdc7e2957895f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32768 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 diff --git a/src/spatialite/test/test_under_valgrind.sh b/src/spatialite/test/test_under_valgrind.sh deleted file mode 100755 index 50e792c..0000000 --- a/src/spatialite/test/test_under_valgrind.sh +++ /dev/null @@ -1,6 +0,0 @@ -#! /bin/bash -for i in *; do -if test -x $i -a -f $i -a $i != "test_under_valgrind.sh"; then - libtool --mode=execute valgrind --track-origins=yes --tool=memcheck --num-callers=20 --leak-check=full --show-reachable=yes $i -fi; -done; diff --git a/src/spatialite/test/testcase1.csv b/src/spatialite/test/testcase1.csv deleted file mode 100644 index ad474b2..0000000 --- a/src/spatialite/test/testcase1.csv +++ /dev/null @@ -1,17 +0,0 @@ -2172515 "Candelo" "Candelo" "Candelo,Kandelo,Кандело" -36.76667 149.68333 "P" "PPL" "AU" 2 10550 895 152 "Australia/Sydney" "2011-08-08" -2172516 "Canbrae" "Canbrae" -28.21667 149.1 "S" "FRM" "AU" 4 33610 0 212 "Australia/Brisbane" "2011-06-04" -2172517 "Canberra" "Canberra" "Camberra,Canberra,Gorad Kanbera,Kamberra,Kambra,Kampera,Kanapera,Kanbera,Kanbero,Kanberra,Kanberrae,Kanbérra,Kānapera,kaenbeola,kainabara,kan pei la,kanbra,kanpara,kenabera,kyanabera,kyanbera,kynbra,qnbrh,Καμπέρα,Горад Канбера,Канбера,Канберрæ,Канберра,Канбє́ра,Կանբեռա,קאנבערא,קנברה,كانبرا,کانبرا,کینبرا,कॅनबेरा,कैनबरा,ক্যানবেরা,கான்பரா,แคนเบอร์รา,ཁན་པེ་ར།,კანბერა,ካንበራ,キャンベラ,坎培拉,堪培拉,캔버라" -35.28346 149.12807 "P" "PPLC" "AU" 1 327700 609 "Australia/Sydney" "2009-08-04" -2172518 "Canberra" "Canberra" -26.78333 148.43333 "S" "FRM" "AU" 4 34860 0 386 "Australia/Brisbane" "2011-06-04" -2172519 "Canbelego" "Canbelego" -31.56667 146.31667 "P" "PPL" "AU" 2 11750 0 347 "Australia/Sydney" "2011-06-04" -2172520 "Canaway Range" "Canaway Range" -26.11667 142.86667 "T" "MTS" "AU" 4 0 175 "Australia/Brisbane" "1993-12-30" -2172521 "Mount Canaway" "Mount Canaway" -26 143.91667 "T" "MT" "AU" 4 0 305 "Australia/Brisbane" "1993-12-30" -2172522 "Canary Island South" "Canary Island South" -36.05 143.86667 "P" "PPL" "AU" 7 23940 0 124 "Australia/Melbourne" "2011-06-04" -2172523 "Canary Island" "Canary Island" -35.98333 143.85 "P" "PPL" "AU" 7 23940 0 105 "Australia/Melbourne" "2011-06-04" -2172524 "Canary Creek" "Canary Creek" -24.28333 148.61667 "H" "STM" "AU" 4 0 221 "Australia/Brisbane" "1993-12-30" -2172525 "Canara Creek" "Canara Creek" -26.36667 144.23333 "H" "STM" "AU" 4 0 269 "Australia/Brisbane" "1993-12-30" -2172526 "Canally" "Canally" -34.7 143.43333 "S" "FRM" "AU" 2 10300 0 62 "Australia/Sydney" "2011-06-04" -2172527 "Canally" "Canally" -32.61667 144.38333 "S" "FRM" "AU" 2 11700 0 93 "Australia/Sydney" "2011-06-04" -2172528 "Canal Lagoon" "Canal Lagoon" -35.21667 150.55 "H" "LGN" "AU" 2 0 -9999 "Australia/Sydney" "1993-12-30" -2172529 "Canal Creek Bore" "Canal Creek Bore" -20.63333 140.9 "H" "WLL" "AU" 4 0 252 "Australia/Brisbane" "1993-12-30" -2172530 "Canal Creek" "Canal Creek" -27.86667 151.51667 "H" "STM" "AU" 4 0 459 "Australia/Brisbane" "1993-12-30" -2172531 "Canal Creek" "Canal Creek" -25.91667 149.48333 "H" "STM" "AU" 4 0 287 "Australia/Brisbane" "1993-12-30" diff --git a/src/spatialite/test/testcase1.xls b/src/spatialite/test/testcase1.xls deleted file mode 100644 index 2f12b1063840bc318d125e95bd3c6eed7a7e5191..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16896 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 From b2b326ed56f9d8d3bb33d19cff62261f8e798fc1 Mon Sep 17 00:00:00 2001 From: Norman Barker Date: Mon, 13 Apr 2015 17:26:28 -0600 Subject: [PATCH 2/3] spatialite 4.2.0 --- Makefile | 2 +- binding.gyp | 38 +- lib/spatialite.js | 20 +- package.json | 8 +- src/config/linux/ia32/config.h | 12 +- src/config/linux/x64/config.h | 13 +- src/config/mac/x64/config.h | 12 +- src/config/win/ia32/config-msvc.h | 12 +- src/config/win/x64/config-msvc.h | 8 +- src/spatialite/AUTHORS | 13 + src/spatialite/Android.mk | 49 + src/spatialite/Android_4.2.0.mk | 23 + src/spatialite/COPYING | 478 + src/spatialite/Doxyfile.in | 1667 + src/spatialite/INSTALL | 183 + src/spatialite/Makefile.am | 25 + src/spatialite/Makefile.in | 880 + src/spatialite/README | 173 + src/spatialite/README.coverage | 12 + src/spatialite/aclocal.m4 | 1324 + src/spatialite/config-msvc.h | 239 + src/spatialite/config.guess | 1501 + src/spatialite/config.h.in | 234 + src/spatialite/config.sub | 1705 + src/spatialite/configure | 21144 +++++++++++ src/spatialite/configure.ac | 367 + src/spatialite/depcomp | 630 + src/spatialite/examples/Makefile.am | 10 + src/spatialite/examples/Makefile.in | 627 + src/spatialite/examples/demo1.c | 386 + src/spatialite/examples/demo2.c | 547 + src/spatialite/examples/demo3.c | 366 + src/spatialite/examples/demo4.c | 363 + src/spatialite/examples/demo5.c | 326 + src/spatialite/examples/examples.doxy | 611 + src/spatialite/install-sh | 520 + src/spatialite/ltmain.sh | 9661 +++++ src/spatialite/m4/libtool.m4 | 7835 ++++ src/spatialite/m4/ltoptions.m4 | 369 + src/spatialite/m4/ltsugar.m4 | 123 + src/spatialite/m4/ltversion.m4 | 23 + src/spatialite/m4/lt~obsolete.m4 | 98 + src/spatialite/mainpage.doxy | 140 + src/spatialite/makefile.vc | 112 + src/spatialite/missing | 376 + src/spatialite/nmake.opt | 12 + src/spatialite/spatialite-4.2.0.mk | 169 + src/spatialite/spatialite-sql-latest.html | 3292 ++ src/spatialite/spatialite.pc.in | 12 + src/spatialite/src/Makefile.am | 81 + src/spatialite/src/Makefile.in | 846 + .../src/connection_cache/Makefile.am | 22 + .../src/connection_cache/Makefile.in | 733 + .../src/connection_cache/alloc_cache.c | 756 + .../src/connection_cache/cache_aux_1.h | 76 + .../src/connection_cache/cache_aux_2.h | 1152 + .../src/connection_cache/cache_aux_3.h | 261 + .../connection_cache/generator/Makefile.am | 3 + .../connection_cache/generator/Makefile.in | 437 + .../src/connection_cache/generator/README.txt | 35 + .../generator/code_generator.c | 140 + src/spatialite/src/dxf/Makefile.am | 22 + src/spatialite/src/dxf/Makefile.in | 658 + src/spatialite/src/dxf/dxf_load_distinct.c | 2465 ++ src/spatialite/src/dxf/dxf_load_mixed.c | 2403 ++ src/spatialite/src/dxf/dxf_loader.c | 3939 ++ src/spatialite/src/dxf/dxf_parser.c | 3551 ++ src/spatialite/src/dxf/dxf_private.h | 196 + src/spatialite/src/dxf/dxf_writer.c | 717 + src/spatialite/src/gaiaaux/Makefile.am | 19 + src/spatialite/src/gaiaaux/Makefile.in | 622 + src/spatialite/src/gaiaaux/gg_sqlaux.c | 1200 + src/spatialite/src/gaiaaux/gg_utf8.c | 184 + src/spatialite/src/gaiaexif/Makefile.am | 17 + src/spatialite/src/gaiaexif/Makefile.in | 611 + src/spatialite/src/gaiaexif/gaia_exif.c | 2742 ++ src/spatialite/src/gaiageo/Ewkt.c | 2696 ++ src/spatialite/src/gaiageo/Ewkt.h | 21 + src/spatialite/src/gaiageo/Gml.c | 1258 + src/spatialite/src/gaiageo/Gml.h | 8 + src/spatialite/src/gaiageo/Kml.c | 1258 + src/spatialite/src/gaiageo/Kml.h | 8 + src/spatialite/src/gaiageo/Makefile.am | 47 + src/spatialite/src/gaiageo/Makefile.in | 941 + src/spatialite/src/gaiageo/flex/Makefile.am | 4 + src/spatialite/src/gaiageo/flex/Makefile.in | 439 + src/spatialite/src/gaiageo/flex/ReadMe.txt | 116 + src/spatialite/src/gaiageo/flex/ewktLexer.l | 89 + .../src/gaiageo/flex/geoJsonLexer.l | 94 + src/spatialite/src/gaiageo/flex/gmlLexer.l | 78 + src/spatialite/src/gaiageo/flex/kmlLexer.l | 78 + .../src/gaiageo/flex/vanuatuLexer.l | 145 + src/spatialite/src/gaiageo/geoJSON.c | 2480 ++ src/spatialite/src/gaiageo/geoJSON.h | 24 + src/spatialite/src/gaiageo/gg_advanced.c | 2105 ++ src/spatialite/src/gaiageo/gg_endian.c | 754 + src/spatialite/src/gaiageo/gg_ewkt.c | 2086 ++ src/spatialite/src/gaiageo/gg_extras.c | 1362 + src/spatialite/src/gaiageo/gg_geoJSON.c | 1484 + src/spatialite/src/gaiageo/gg_geodesic.c | 405 + src/spatialite/src/gaiageo/gg_geometries.c | 4732 +++ src/spatialite/src/gaiageo/gg_geoscvt.c | 2109 ++ src/spatialite/src/gaiageo/gg_gml.c | 3699 ++ src/spatialite/src/gaiageo/gg_kml.c | 2129 ++ src/spatialite/src/gaiageo/gg_lwgeom.c | 2425 ++ src/spatialite/src/gaiageo/gg_relations.c | 3988 ++ src/spatialite/src/gaiageo/gg_relations_ext.c | 4405 +++ src/spatialite/src/gaiageo/gg_shape.c | 5198 +++ src/spatialite/src/gaiageo/gg_transform.c | 2141 ++ src/spatialite/src/gaiageo/gg_vanuatu.c | 2097 ++ src/spatialite/src/gaiageo/gg_voronoj.c | 1920 + src/spatialite/src/gaiageo/gg_wkb.c | 6368 ++++ src/spatialite/src/gaiageo/gg_wkt.c | 4174 +++ src/spatialite/src/gaiageo/gg_xml.c | 4233 +++ src/spatialite/src/gaiageo/lemon/Ewkt.y | 852 + src/spatialite/src/gaiageo/lemon/Gml.y | 184 + src/spatialite/src/gaiageo/lemon/Kml.y | 184 + src/spatialite/src/gaiageo/lemon/Makefile.am | 5 + src/spatialite/src/gaiageo/lemon/Makefile.in | 618 + src/spatialite/src/gaiageo/lemon/ReadMe.txt | 161 + src/spatialite/src/gaiageo/lemon/geoJSON.y | 745 + .../src/gaiageo/lemon/lemon_src/Makefile.am | 3 + .../src/gaiageo/lemon/lemon_src/Makefile.in | 437 + .../src/gaiageo/lemon/lemon_src/lemon.c | 4889 +++ .../src/gaiageo/lemon/lemon_src/lempar.c | 842 + src/spatialite/src/gaiageo/lemon/vanuatuWkt.y | 901 + src/spatialite/src/gaiageo/lex.Ewkt.c | 2162 ++ src/spatialite/src/gaiageo/lex.GeoJson.c | 2229 ++ src/spatialite/src/gaiageo/lex.Gml.c | 2042 ++ src/spatialite/src/gaiageo/lex.Kml.c | 2042 ++ src/spatialite/src/gaiageo/lex.VanuatuWkt.c | 2348 ++ src/spatialite/src/gaiageo/vanuatuWkt.c | 2708 ++ src/spatialite/src/gaiageo/vanuatuWkt.h | 33 + src/spatialite/src/geopackage/Makefile.am | 39 + src/spatialite/src/geopackage/Makefile.in | 876 + src/spatialite/src/geopackage/gaia_cvt_gpkg.c | 1412 + .../src/geopackage/geopackage_internal.h | 46 + .../src/geopackage/gpkgAddGeometryColumn.c | 209 + src/spatialite/src/geopackage/gpkgBinary.c | 512 + .../src/geopackage/gpkgCreateBaseTables.c | 373 + .../src/geopackage/gpkgCreateTilesTable.c | 205 + .../src/geopackage/gpkgCreateTilesZoomLevel.c | 148 + .../src/geopackage/gpkgGetImageType.c | 106 + .../src/geopackage/gpkgInsertEpsgSRID.c | 129 + src/spatialite/src/geopackage/gpkgMakePoint.c | 826 + .../geopackage/gpkg_add_geometry_triggers.c | 191 + .../src/geopackage/gpkg_add_spatial_index.c | 214 + .../src/geopackage/gpkg_add_tile_triggers.c | 143 + .../src/geopackage/gpkg_get_normal_row.c | 150 + .../src/geopackage/gpkg_get_normal_zoom.c | 140 + src/spatialite/src/headers/Makefile.am | 20 + src/spatialite/src/headers/Makefile.in | 580 + src/spatialite/src/headers/spatialite.h | 1049 + src/spatialite/src/headers/spatialite/debug.h | 77 + .../src/headers/spatialite/gaiaaux.h | 405 + .../src/headers/spatialite/gaiaexif.h | 653 + .../src/headers/spatialite/gaiageo.h | 77 + .../src/headers/spatialite/geopackage.h | 184 + .../src/headers/spatialite/gg_advanced.h | 3697 ++ .../src/headers/spatialite/gg_const.h | 572 + .../src/headers/spatialite/gg_core.h | 1959 + .../src/headers/spatialite/gg_dxf.h | 992 + .../src/headers/spatialite/gg_dynamic.h | 420 + .../src/headers/spatialite/gg_formats.h | 1594 + .../src/headers/spatialite/gg_mbr.h | 464 + .../src/headers/spatialite/gg_structs.h | 820 + .../src/headers/spatialite/gg_wfs.h | 517 + .../src/headers/spatialite/gg_xml.h | 760 + .../src/headers/spatialite/spatialite.h | 59 + .../src/headers/spatialite/sqlite.h | 65 + .../src/headers/spatialite_private.h | 402 + src/spatialite/src/md5/Makefile.am | 18 + src/spatialite/src/md5/Makefile.in | 622 + src/spatialite/src/md5/gaia_md5.c | 116 + src/spatialite/src/md5/md5.c | 302 + src/spatialite/src/md5/md5.h | 64 + src/spatialite/src/shapefiles/Makefile.am | 17 + src/spatialite/src/shapefiles/Makefile.in | 621 + src/spatialite/src/shapefiles/shapefiles.c | 6050 ++++ src/spatialite/src/shapefiles/validator.c | 3745 ++ src/spatialite/src/spatialite/Makefile.am | 36 + src/spatialite/src/spatialite/Makefile.in | 880 + src/spatialite/src/spatialite/extra_tables.c | 4428 +++ src/spatialite/src/spatialite/mbrcache.c | 1532 + src/spatialite/src/spatialite/metatables.c | 6105 ++++ src/spatialite/src/spatialite/spatialite.c | 30155 ++++++++++++++++ .../src/spatialite/spatialite_init.c | 141 + src/spatialite/src/spatialite/statistics.c | 2261 ++ src/spatialite/src/spatialite/virtualXL.c | 938 + src/spatialite/src/spatialite/virtualbbox.c | 984 + src/spatialite/src/spatialite/virtualdbf.c | 907 + src/spatialite/src/spatialite/virtualfdo.c | 2196 ++ src/spatialite/src/spatialite/virtualgpkg.c | 1077 + .../src/spatialite/virtualnetwork.c | 2263 ++ src/spatialite/src/spatialite/virtualshape.c | 1194 + .../src/spatialite/virtualspatialindex.c | 930 + src/spatialite/src/spatialite/virtualxpath.c | 1148 + src/spatialite/src/srsinit/Makefile.am | 76 + src/spatialite/src/srsinit/Makefile.in | 1669 + src/spatialite/src/srsinit/epsg_inlined_00.c | 3366 ++ src/spatialite/src/srsinit/epsg_inlined_01.c | 3502 ++ src/spatialite/src/srsinit/epsg_inlined_02.c | 3672 ++ src/spatialite/src/srsinit/epsg_inlined_03.c | 3164 ++ src/spatialite/src/srsinit/epsg_inlined_04.c | 3376 ++ src/spatialite/src/srsinit/epsg_inlined_05.c | 3488 ++ src/spatialite/src/srsinit/epsg_inlined_06.c | 3492 ++ src/spatialite/src/srsinit/epsg_inlined_07.c | 3662 ++ src/spatialite/src/srsinit/epsg_inlined_08.c | 3936 ++ src/spatialite/src/srsinit/epsg_inlined_09.c | 3376 ++ src/spatialite/src/srsinit/epsg_inlined_10.c | 3416 ++ src/spatialite/src/srsinit/epsg_inlined_11.c | 3552 ++ src/spatialite/src/srsinit/epsg_inlined_12.c | 3480 ++ src/spatialite/src/srsinit/epsg_inlined_13.c | 3556 ++ src/spatialite/src/srsinit/epsg_inlined_14.c | 3862 ++ src/spatialite/src/srsinit/epsg_inlined_15.c | 3828 ++ src/spatialite/src/srsinit/epsg_inlined_16.c | 3804 ++ src/spatialite/src/srsinit/epsg_inlined_17.c | 3344 ++ src/spatialite/src/srsinit/epsg_inlined_18.c | 2770 ++ src/spatialite/src/srsinit/epsg_inlined_19.c | 2050 ++ src/spatialite/src/srsinit/epsg_inlined_20.c | 1902 + src/spatialite/src/srsinit/epsg_inlined_21.c | 3106 ++ src/spatialite/src/srsinit/epsg_inlined_22.c | 2526 ++ src/spatialite/src/srsinit/epsg_inlined_23.c | 1960 + src/spatialite/src/srsinit/epsg_inlined_24.c | 2800 ++ src/spatialite/src/srsinit/epsg_inlined_25.c | 3204 ++ src/spatialite/src/srsinit/epsg_inlined_26.c | 3166 ++ src/spatialite/src/srsinit/epsg_inlined_27.c | 3386 ++ src/spatialite/src/srsinit/epsg_inlined_28.c | 3594 ++ src/spatialite/src/srsinit/epsg_inlined_29.c | 3558 ++ src/spatialite/src/srsinit/epsg_inlined_30.c | 3708 ++ src/spatialite/src/srsinit/epsg_inlined_31.c | 3494 ++ src/spatialite/src/srsinit/epsg_inlined_32.c | 3450 ++ src/spatialite/src/srsinit/epsg_inlined_33.c | 3330 ++ src/spatialite/src/srsinit/epsg_inlined_34.c | 3388 ++ src/spatialite/src/srsinit/epsg_inlined_35.c | 3396 ++ src/spatialite/src/srsinit/epsg_inlined_36.c | 3710 ++ src/spatialite/src/srsinit/epsg_inlined_37.c | 3498 ++ src/spatialite/src/srsinit/epsg_inlined_38.c | 3568 ++ src/spatialite/src/srsinit/epsg_inlined_39.c | 3442 ++ src/spatialite/src/srsinit/epsg_inlined_40.c | 3508 ++ src/spatialite/src/srsinit/epsg_inlined_41.c | 3600 ++ src/spatialite/src/srsinit/epsg_inlined_42.c | 3494 ++ src/spatialite/src/srsinit/epsg_inlined_43.c | 3290 ++ src/spatialite/src/srsinit/epsg_inlined_44.c | 3290 ++ src/spatialite/src/srsinit/epsg_inlined_45.c | 1146 + .../src/srsinit/epsg_inlined_extra.c | 258 + .../src/srsinit/epsg_inlined_prussian.c | 771 + .../src/srsinit/epsg_inlined_wgs84_00.c | 2886 ++ .../src/srsinit/epsg_inlined_wgs84_01.c | 840 + .../src/srsinit/epsg_update/Makefile.am | 3 + .../src/srsinit/epsg_update/Makefile.in | 437 + .../src/srsinit/epsg_update/README.txt | 57 + .../src/srsinit/epsg_update/auto_epsg.c | 2301 ++ src/spatialite/src/srsinit/srs_init.c | 525 + src/spatialite/src/versioninfo/version.c | 68 + src/spatialite/src/virtualtext/Makefile.am | 17 + src/spatialite/src/virtualtext/Makefile.in | 611 + src/spatialite/src/virtualtext/virtualtext.c | 1804 + src/spatialite/src/wfs/Makefile.am | 17 + src/spatialite/src/wfs/Makefile.in | 610 + src/spatialite/src/wfs/wfs_in.c | 4587 +++ src/spatialite/test-driver | 127 + src/spatialite/test/22.dxf | 2988 ++ src/spatialite/test/Apple-iPhone-4.jpg | Bin 0 -> 338025 bytes src/spatialite/test/Makefile.am | 182 + src/spatialite/test/Makefile.in | 2529 ++ src/spatialite/test/WritingSQLTestCase.txt | 195 + src/spatialite/test/archaic.dxf | 628 + src/spatialite/test/asprintf4win.h | 83 + src/spatialite/test/books-bad.xml | 9 + src/spatialite/test/books-bad.xsd | 20 + src/spatialite/test/books.xml | 9 + src/spatialite/test/books.xsd | 20 + src/spatialite/test/check_add_tile_triggers.c | 492 + .../check_add_tile_triggers_bad_table_name.c | 199 + src/spatialite/test/check_bufovflw.c | 1945 + src/spatialite/test/check_create.c | 283 + src/spatialite/test/check_createBaseTables.c | 173 + src/spatialite/test/check_dbf_load.c | 121 + src/spatialite/test/check_dxf.c | 1449 + src/spatialite/test/check_endian.c | 427 + src/spatialite/test/check_exif.c | 688 + src/spatialite/test/check_exif2.c | 411 + src/spatialite/test/check_extension.c | 293 + .../test/check_extra_relations_fncts.c | 265 + src/spatialite/test/check_fdo1.c | 587 + src/spatialite/test/check_fdo2.c | 1038 + src/spatialite/test/check_fdo3.c | 218 + src/spatialite/test/check_fdo_bufovflw.c | 345 + src/spatialite/test/check_gaia_utf8.c | 132 + src/spatialite/test/check_gaia_util.c | 489 + src/spatialite/test/check_geom_aux.c | 1064 + src/spatialite/test/check_geometry_cols.c | 280 + src/spatialite/test/check_geoscvt_fncts.c | 109 + src/spatialite/test/check_get_normal_row.c | 450 + .../check_get_normal_row_bad_geopackage.c | 182 + .../check_get_normal_row_bad_geopackage2.c | 125 + src/spatialite/test/check_get_normal_zoom.c | 350 + .../check_get_normal_zoom_bad_geopackage.c | 149 + .../check_get_normal_zoom_bad_geopackage2.c | 166 + .../check_get_normal_zoom_extension_load.c | 362 + src/spatialite/test/check_gpkgConvert.c | 307 + .../test/check_gpkgCreateFeaturesTable.c | 534 + .../test/check_gpkgCreateTilesTable.c | 487 + .../check_gpkgCreateTilesTableMissingSRID.c | 115 + .../test/check_gpkgCreateTilesZoomLevel.c | 317 + .../test/check_gpkgGetImageFormat.c | 159 + .../test/check_gpkgGetImageFormat_nonblob.c | 110 + .../test/check_gpkgGetImageFormat_nonimage.c | 129 + .../test/check_gpkgGetImageFormat_png.c | 159 + .../test/check_gpkgGetImageFormat_tiff.c | 159 + .../test/check_gpkgGetImageFormat_webp.c | 159 + .../test/check_gpkgInsertEpsgSRID.c | 260 + src/spatialite/test/check_gpkgVirtual.c | 686 + ...ontainer_data_file_format_application_id.c | 150 + ...k_gpkg_base_core_contents_data_table_def.c | 356 + ...base_core_spatial_ref_sys_data_table_def.c | 384 + ...core_spatial_ref_sys_data_values_default.c | 279 + ...sion_mechanism_extensions_data_table_def.c | 311 + src/spatialite/test/check_init.c | 103 + src/spatialite/test/check_init2.c | 417 + src/spatialite/test/check_libxml2.c | 746 + src/spatialite/test/check_math_funcs.c | 105 + src/spatialite/test/check_mbrcache.c | 624 + src/spatialite/test/check_md5.c | 274 + src/spatialite/test/check_metacatalog.c | 623 + src/spatialite/test/check_multithread.c | 967 + src/spatialite/test/check_recover_geom.c | 1701 + src/spatialite/test/check_relations_fncts.c | 2181 ++ src/spatialite/test/check_shp_load.c | 219 + src/spatialite/test/check_shp_load_3d.c | 791 + src/spatialite/test/check_spatialindex.c | 1856 + src/spatialite/test/check_sql_stmt.c | 729 + src/spatialite/test/check_styling.c | 743 + src/spatialite/test/check_version.c | 68 + src/spatialite/test/check_virtual_ovflw.c | 452 + src/spatialite/test/check_virtualbbox.c | 604 + src/spatialite/test/check_virtualtable1.c | 495 + src/spatialite/test/check_virtualtable2.c | 1210 + src/spatialite/test/check_virtualtable3.c | 842 + src/spatialite/test/check_virtualtable4.c | 461 + src/spatialite/test/check_virtualtable5.c | 205 + src/spatialite/test/check_virtualtable6.c | 272 + src/spatialite/test/check_virtualxpath.c | 633 + src/spatialite/test/check_wfsin.c | 826 + src/spatialite/test/check_xls_load.c | 159 + src/spatialite/test/describefeaturetype.wfs | 22 + src/spatialite/test/empty.png | Bin 0 -> 166 bytes src/spatialite/test/empty.tif | Bin 0 -> 39827 bytes src/spatialite/test/f06.dxf | 1394 + src/spatialite/test/fnmatch4win.h | 63 + src/spatialite/test/fnmatch_impl4win.h | 198 + src/spatialite/test/getcapabilities-1.0.0.wfs | 1 + src/spatialite/test/getcapabilities-1.1.0.wfs | 1 + src/spatialite/test/gpkg_test.gpkg | Bin 0 -> 384000 bytes src/spatialite/test/gpkg_test.sqlite | Bin 0 -> 444416 bytes src/spatialite/test/hatch.dxf | 3116 ++ src/spatialite/test/inspire-data-example.xml | 303 + src/spatialite/test/l02.dxf | 324 + src/spatialite/test/linked.dxf | 7656 ++++ src/spatialite/test/movies.xml | Bin 0 -> 1770 bytes src/spatialite/test/movies.xsd | 21 + src/spatialite/test/opera.xml | 25 + src/spatialite/test/opera.xsd | 21 + src/spatialite/test/p05.dxf | 2178 ++ src/spatialite/test/raster_se.xml | 42 + src/spatialite/test/scandir4win.h | 168 + src/spatialite/test/shape_3d.c | 242 + src/spatialite/test/shape_cp1252.c | 177 + src/spatialite/test/shape_primitives.c | 1097 + src/spatialite/test/shape_utf8_1.c | 472 + src/spatialite/test/shape_utf8_1ex.c | 478 + src/spatialite/test/shape_utf8_2.c | 235 + src/spatialite/test/shapetest1.dbf | Bin 0 -> 199 bytes src/spatialite/test/shapetest1.prj | 1 + src/spatialite/test/shapetest1.qpj | 1 + src/spatialite/test/shapetest1.shp | Bin 0 -> 156 bytes src/spatialite/test/shapetest1.shx | Bin 0 -> 116 bytes .../test/shp/foggia/local_councils.dbf | Bin 0 -> 10297 bytes .../test/shp/foggia/local_councils.prj | 1 + .../test/shp/foggia/local_councils.shp | Bin 0 -> 935760 bytes .../test/shp/foggia/local_councils.shx | Bin 0 -> 588 bytes src/spatialite/test/shp/gaza/aeroway.dbf | Bin 0 -> 212 bytes src/spatialite/test/shp/gaza/aeroway.prj | 1 + src/spatialite/test/shp/gaza/aeroway.shp | Bin 0 -> 604 bytes src/spatialite/test/shp/gaza/aeroway.shx | Bin 0 -> 108 bytes src/spatialite/test/shp/gaza/barrier.dbf | Bin 0 -> 575 bytes src/spatialite/test/shp/gaza/barrier.prj | 1 + src/spatialite/test/shp/gaza/barrier.shp | Bin 0 -> 240 bytes src/spatialite/test/shp/gaza/barrier.shx | Bin 0 -> 140 bytes src/spatialite/test/shp/gaza/route.dbf | Bin 0 -> 220 bytes src/spatialite/test/shp/gaza/route.prj | 1 + src/spatialite/test/shp/gaza/route.shp | Bin 0 -> 11020 bytes src/spatialite/test/shp/gaza/route.shx | Bin 0 -> 116 bytes src/spatialite/test/shp/merano-3d/points.dbf | Bin 0 -> 7962 bytes src/spatialite/test/shp/merano-3d/points.prj | 1 + src/spatialite/test/shp/merano-3d/points.shp | Bin 0 -> 660 bytes src/spatialite/test/shp/merano-3d/points.shx | Bin 0 -> 260 bytes .../test/shp/merano-3d/polygons.dbf | Bin 0 -> 4382 bytes .../test/shp/merano-3d/polygons.prj | 1 + .../test/shp/merano-3d/polygons.shp | Bin 0 -> 7388 bytes .../test/shp/merano-3d/polygons.shx | Bin 0 -> 180 bytes src/spatialite/test/shp/merano-3d/roads.dbf | Bin 0 -> 7714 bytes src/spatialite/test/shp/merano-3d/roads.prj | 1 + src/spatialite/test/shp/merano-3d/roads.shp | Bin 0 -> 5716 bytes src/spatialite/test/shp/merano-3d/roads.shx | Bin 0 -> 244 bytes .../test/shp/new-caledonia/buildings.dbf | Bin 0 -> 952 bytes .../test/shp/new-caledonia/buildings.prj | 1 + .../test/shp/new-caledonia/buildings.shp | Bin 0 -> 2404 bytes .../test/shp/new-caledonia/buildings.shx | Bin 0 -> 180 bytes .../test/shp/new-caledonia/points.dbf | Bin 0 -> 1304 bytes .../test/shp/new-caledonia/points.prj | 1 + .../test/shp/new-caledonia/points.shp | Bin 0 -> 380 bytes .../test/shp/new-caledonia/points.shx | Bin 0 -> 180 bytes .../test/shp/new-caledonia/railways.dbf | Bin 0 -> 1117 bytes .../test/shp/new-caledonia/railways.shp | Bin 0 -> 2092 bytes .../test/shp/new-caledonia/railways.shx | Bin 0 -> 204 bytes src/spatialite/test/shp/taiwan/hystoric.dbf | Bin 0 -> 940 bytes src/spatialite/test/shp/taiwan/hystoric.prj | 1 + src/spatialite/test/shp/taiwan/hystoric.shp | Bin 0 -> 520 bytes src/spatialite/test/shp/taiwan/hystoric.shx | Bin 0 -> 220 bytes src/spatialite/test/shp/taiwan/leisure.dbf | Bin 0 -> 385 bytes src/spatialite/test/shp/taiwan/leisure.prj | 1 + src/spatialite/test/shp/taiwan/leisure.shp | Bin 0 -> 380 bytes src/spatialite/test/shp/taiwan/leisure.shx | Bin 0 -> 140 bytes src/spatialite/test/shp/taiwan/route.dbf | Bin 0 -> 302 bytes src/spatialite/test/shp/taiwan/route.prj | 1 + src/spatialite/test/shp/taiwan/route.shp | Bin 0 -> 9196 bytes src/spatialite/test/shp/taiwan/route.shx | Bin 0 -> 132 bytes src/spatialite/test/sld_sample.xml | 21 + .../sql_stmt_geopackage_tests/Makefile.am | 74 + .../sql_stmt_geopackage_tests/Makefile.in | 510 + .../sql_stmt_geopackage_tests/asgpb1.testcase | 7 + .../sql_stmt_geopackage_tests/asgpb2.testcase | 8 + .../sql_stmt_geopackage_tests/asgpb3.testcase | 8 + .../sql_stmt_geopackage_tests/asgpb4.testcase | 9 + .../sql_stmt_geopackage_tests/asgpb5.testcase | 8 + .../sql_stmt_geopackage_tests/asgpb6.testcase | 9 + .../geomfromgpb1.testcase | 7 + .../geomfromgpb10.testcase | 8 + .../geomfromgpb11.testcase | 7 + .../geomfromgpb12.testcase | 7 + .../geomfromgpb13.testcase | 7 + .../geomfromgpb14.testcase | 7 + .../geomfromgpb15.testcase | 7 + .../geomfromgpb16.testcase | 7 + .../geomfromgpb17.testcase | 8 + .../geomfromgpb18.testcase | 8 + .../geomfromgpb19.testcase | 7 + .../geomfromgpb2.testcase | 8 + .../geomfromgpb3.testcase | 8 + .../geomfromgpb4.testcase | 8 + .../geomfromgpb5.testcase | 8 + .../geomfromgpb6.testcase | 8 + .../geomfromgpb7.testcase | 8 + .../geomfromgpb8.testcase | 8 + .../geomfromgpb9.testcase | 7 + .../implicitgeopackagebinary1.testcase | 7 + .../implicitgeopackagebinary2.testcase | 7 + .../makepoint1.testcase | 7 + .../makepoint2.testcase | 7 + .../makepoint3.testcase | 7 + .../makepoint4.testcase | 7 + .../makepoint5.testcase | 7 + .../makepoint6.testcase | 7 + .../makepoint7.testcase | 7 + .../makepoint8.testcase | 7 + .../makepoint9.testcase | 7 + .../makepointm1.testcase | 8 + .../makepointm10.testcase | 8 + .../makepointm11.testcase | 9 + .../makepointm2.testcase | 8 + .../makepointm3.testcase | 7 + .../makepointm4.testcase | 8 + .../makepointm5.testcase | 8 + .../makepointm6.testcase | 8 + .../makepointm7.testcase | 8 + .../makepointm8.testcase | 7 + .../makepointm9.testcase | 8 + .../makepointz1.testcase | 8 + .../makepointz10.testcase | 7 + .../makepointz11.testcase | 7 + .../makepointz2.testcase | 8 + .../makepointz3.testcase | 8 + .../makepointz4.testcase | 8 + .../makepointz5.testcase | 7 + .../makepointz6.testcase | 7 + .../makepointz7.testcase | 7 + .../makepointz8.testcase | 7 + .../makepointz9.testcase | 7 + .../makepointzm1.testcase | 8 + .../makepointzm10.testcase | 8 + .../makepointzm11.testcase | 9 + .../makepointzm12.testcase | 9 + .../makepointzm13.testcase | 9 + .../makepointzm14.testcase | 9 + .../makepointzm15.testcase | 8 + .../makepointzm2.testcase | 8 + .../makepointzm3.testcase | 9 + .../makepointzm4.testcase | 9 + .../makepointzm5.testcase | 9 + .../makepointzm6.testcase | 9 + .../makepointzm7.testcase | 9 + .../makepointzm8.testcase | 8 + .../makepointzm9.testcase | 8 + .../test/sql_stmt_geos_tests/Makefile.am | 743 + .../test/sql_stmt_geos_tests/Makefile.in | 1179 + .../bdmpolyfromtext1.testcase | 9 + .../bdmpolyfromtext10.testcase | 9 + .../bdmpolyfromtext13.testcase | 9 + .../bdmpolyfromtext14.testcase | 9 + .../bdmpolyfromtext15.testcase | 8 + .../bdmpolyfromtext16.testcase | 8 + .../bdmpolyfromtext17.testcase | 9 + .../bdmpolyfromtext2.testcase | 9 + .../bdmpolyfromtext3.testcase | 9 + .../bdmpolyfromtext4.testcase | 9 + .../bdmpolyfromtext9.testcase | 9 + .../bdmpolyfromwkb1.testcase | 9 + .../bdmpolyfromwkb10.testcase | 9 + .../bdmpolyfromwkb11.testcase | 9 + .../bdmpolyfromwkb12.testcase | 9 + .../bdmpolyfromwkb13.testcase | 9 + .../bdmpolyfromwkb14.testcase | 9 + .../bdmpolyfromwkb15.testcase | 9 + .../bdmpolyfromwkb16.testcase | 8 + .../bdmpolyfromwkb17.testcase | 8 + .../bdmpolyfromwkb18.testcase | 8 + .../bdmpolyfromwkb19.testcase | 8 + .../bdmpolyfromwkb2.testcase | 9 + .../bdmpolyfromwkb3.testcase | 9 + .../bdmpolyfromwkb4.testcase | 9 + .../bdmpolyfromwkb5.testcase | 9 + .../bdmpolyfromwkb6.testcase | 9 + .../bdmpolyfromwkb7.testcase | 9 + .../bdmpolyfromwkb8.testcase | 9 + .../bdmpolyfromwkb9.testcase | 9 + .../bdpolyfromtext1.testcase | 9 + .../bdpolyfromtext10.testcase | 9 + .../bdpolyfromtext11.testcase | 9 + .../bdpolyfromtext12.testcase | 9 + .../bdpolyfromtext13.testcase | 9 + .../bdpolyfromtext14.testcase | 9 + .../bdpolyfromtext15.testcase | 9 + .../bdpolyfromtext16.testcase | 8 + .../bdpolyfromtext2.testcase | 9 + .../bdpolyfromtext3.testcase | 9 + .../bdpolyfromtext4.testcase | 9 + .../bdpolyfromtext5.testcase | 9 + .../bdpolyfromtext6.testcase | 9 + .../bdpolyfromtext7.testcase | 9 + .../bdpolyfromtext8.testcase | 9 + .../bdpolyfromtext9.testcase | 9 + .../bdpolyfromwkb1.testcase | 9 + .../bdpolyfromwkb10.testcase | 9 + .../bdpolyfromwkb11.testcase | 9 + .../bdpolyfromwkb12.testcase | 9 + .../bdpolyfromwkb13.testcase | 9 + .../bdpolyfromwkb14.testcase | 9 + .../bdpolyfromwkb15.testcase | 9 + .../bdpolyfromwkb16.testcase | 8 + .../bdpolyfromwkb17.testcase | 8 + .../bdpolyfromwkb18.testcase | 8 + .../bdpolyfromwkb19.testcase | 8 + .../bdpolyfromwkb2.testcase | 9 + .../bdpolyfromwkb3.testcase | 9 + .../bdpolyfromwkb4.testcase | 9 + .../bdpolyfromwkb5.testcase | 9 + .../bdpolyfromwkb6.testcase | 9 + .../bdpolyfromwkb7.testcase | 9 + .../bdpolyfromwkb8.testcase | 9 + .../bdpolyfromwkb9.testcase | 9 + .../sql_stmt_geos_tests/boundary1.testcase | 7 + .../sql_stmt_geos_tests/boundary2.testcase | 7 + .../sql_stmt_geos_tests/boundary3.testcase | 7 + .../sql_stmt_geos_tests/boundary4.testcase | 7 + .../sql_stmt_geos_tests/boundary5.testcase | 7 + .../sql_stmt_geos_tests/boundary6.testcase | 7 + .../sql_stmt_geos_tests/boundary7.testcase | 7 + .../sql_stmt_geos_tests/boundary8.testcase | 7 + .../sql_stmt_geos_tests/boundary9.testcase | 7 + .../test/sql_stmt_geos_tests/buffer1.testcase | 8 + .../sql_stmt_geos_tests/buffer10.testcase | 7 + .../test/sql_stmt_geos_tests/buffer2.testcase | 8 + .../test/sql_stmt_geos_tests/buffer3.testcase | 7 + .../test/sql_stmt_geos_tests/buffer4.testcase | 7 + .../test/sql_stmt_geos_tests/buffer5.testcase | 7 + .../test/sql_stmt_geos_tests/buffer6.testcase | 7 + .../test/sql_stmt_geos_tests/buffer7.testcase | 7 + .../test/sql_stmt_geos_tests/buffer8.testcase | 7 + .../test/sql_stmt_geos_tests/buffer9.testcase | 7 + .../sql_stmt_geos_tests/buildarea1.testcase | 7 + .../sql_stmt_geos_tests/buildarea2.testcase | 7 + .../sql_stmt_geos_tests/buildarea3.testcase | 7 + .../sql_stmt_geos_tests/buildarea4.testcase | 7 + .../sql_stmt_geos_tests/buildarea5.testcase | 7 + .../sql_stmt_geos_tests/buildarea6.testcase | 7 + .../sql_stmt_geos_tests/centroid1.testcase | 8 + .../sql_stmt_geos_tests/centroid2.testcase | 8 + .../sql_stmt_geos_tests/centroid3.testcase | 9 + .../sql_stmt_geos_tests/centroid4.testcase | 9 + .../sql_stmt_geos_tests/centroid5.testcase | 8 + .../sql_stmt_geos_tests/centroid6.testcase | 8 + .../sql_stmt_geos_tests/centroid7.testcase | 8 + .../sql_stmt_geos_tests/centroid8.testcase | 8 + .../closestpoint1.testcase | 8 + .../closestpoint10.testcase | 8 + .../closestpoint11.testcase | 8 + .../closestpoint12.testcase | 8 + .../closestpoint13.testcase | 8 + .../closestpoint14.testcase | 8 + .../closestpoint15.testcase | 8 + .../closestpoint16.testcase | 8 + .../closestpoint17.testcase | 8 + .../closestpoint18.testcase | 8 + .../closestpoint19.testcase | 8 + .../closestpoint2.testcase | 8 + .../closestpoint20.testcase | 8 + .../closestpoint21.testcase | 8 + .../closestpoint22.testcase | 8 + .../closestpoint3.testcase | 8 + .../closestpoint4.testcase | 8 + .../closestpoint5.testcase | 8 + .../closestpoint6.testcase | 8 + .../closestpoint7.testcase | 8 + .../closestpoint8.testcase | 8 + .../closestpoint9.testcase | 8 + .../sql_stmt_geos_tests/convexhull1.testcase | 7 + .../sql_stmt_geos_tests/convexhull10.testcase | 7 + .../sql_stmt_geos_tests/convexhull2.testcase | 7 + .../sql_stmt_geos_tests/convexhull3.testcase | 7 + .../sql_stmt_geos_tests/convexhull4.testcase | 7 + .../sql_stmt_geos_tests/convexhull5.testcase | 7 + .../sql_stmt_geos_tests/convexhull6.testcase | 7 + .../sql_stmt_geos_tests/convexhull7.testcase | 7 + .../sql_stmt_geos_tests/convexhull8.testcase | 7 + .../sql_stmt_geos_tests/convexhull9.testcase | 7 + .../sql_stmt_geos_tests/coveredby1.testcase | 7 + .../sql_stmt_geos_tests/coveredby2.testcase | 7 + .../test/sql_stmt_geos_tests/covers1.testcase | 7 + .../test/sql_stmt_geos_tests/covers2.testcase | 7 + .../covers_covered1.testcase | 17 + .../covers_covered2.testcase | 17 + .../covers_covered3.testcase | 17 + .../covers_covered4.testcase | 11 + .../covers_covered5.testcase | 11 + .../covers_covered6.testcase | 11 + .../covers_covered7.testcase | 11 + .../sql_stmt_geos_tests/createtopo1.testcase | 7 + .../sql_stmt_geos_tests/createtopo10.testcase | 7 + .../sql_stmt_geos_tests/createtopo11.testcase | 7 + .../sql_stmt_geos_tests/createtopo12.testcase | 7 + .../sql_stmt_geos_tests/createtopo13.testcase | 7 + .../sql_stmt_geos_tests/createtopo14.testcase | 7 + .../sql_stmt_geos_tests/createtopo15.testcase | 7 + .../sql_stmt_geos_tests/createtopo16.testcase | 7 + .../sql_stmt_geos_tests/createtopo17.testcase | 7 + .../sql_stmt_geos_tests/createtopo18.testcase | 7 + .../sql_stmt_geos_tests/createtopo2.testcase | 7 + .../sql_stmt_geos_tests/createtopo3.testcase | 7 + .../sql_stmt_geos_tests/createtopo4.testcase | 7 + .../sql_stmt_geos_tests/createtopo5.testcase | 7 + .../sql_stmt_geos_tests/createtopo6.testcase | 7 + .../sql_stmt_geos_tests/createtopo7.testcase | 7 + .../sql_stmt_geos_tests/createtopo8.testcase | 7 + .../sql_stmt_geos_tests/createtopo9.testcase | 7 + .../sql_stmt_geos_tests/difference1.testcase | 9 + .../sql_stmt_geos_tests/difference10.testcase | 7 + .../sql_stmt_geos_tests/difference11.testcase | 8 + .../sql_stmt_geos_tests/difference12.testcase | 8 + .../sql_stmt_geos_tests/difference2.testcase | 7 + .../sql_stmt_geos_tests/difference3.testcase | 8 + .../sql_stmt_geos_tests/difference4.testcase | 8 + .../sql_stmt_geos_tests/difference6.testcase | 8 + .../sql_stmt_geos_tests/difference7.testcase | 8 + .../sql_stmt_geos_tests/difference8.testcase | 7 + .../sql_stmt_geos_tests/difference9.testcase | 7 + .../sql_stmt_geos_tests/distance1.testcase | 8 + .../sql_stmt_geos_tests/distance10.testcase | 8 + .../sql_stmt_geos_tests/distance2.testcase | 8 + .../sql_stmt_geos_tests/distance3.testcase | 8 + .../sql_stmt_geos_tests/distance4.testcase | 8 + .../sql_stmt_geos_tests/distance5.testcase | 8 + .../sql_stmt_geos_tests/distance6.testcase | 8 + .../sql_stmt_geos_tests/distance7.testcase | 8 + .../sql_stmt_geos_tests/distance8.testcase | 8 + .../sql_stmt_geos_tests/distance9.testcase | 8 + .../distance_geogr1.testcase | 8 + .../distance_geogr10.testcase | 8 + .../distance_geogr11.testcase | 8 + .../distance_geogr12.testcase | 8 + .../distance_geogr2.testcase | 8 + .../distance_geogr3.testcase | 8 + .../distance_geogr4.testcase | 8 + .../distance_geogr5.testcase | 8 + .../distance_geogr6.testcase | 8 + .../distance_geogr7.testcase | 8 + .../distance_geogr8.testcase | 8 + .../distance_geogr9.testcase | 8 + .../sql_stmt_geos_tests/geoserror1.testcase | 18 + .../sql_stmt_geos_tests/geoserror2.testcase | 18 + .../sql_stmt_geos_tests/geoserror3.testcase | 18 + .../sql_stmt_geos_tests/geoserror4.testcase | 18 + .../sql_stmt_geos_tests/geoserror5.testcase | 18 + .../sql_stmt_geos_tests/geoserror6.testcase | 19 + .../sql_stmt_geos_tests/geoserror7.testcase | 19 + .../hausdorffdistance1.testcase | 8 + .../hausdorffdistance2.testcase | 8 + .../hausdorffdistance3.testcase | 8 + .../hausdorffdistance4.testcase | 8 + .../hausdorffdistance5.testcase | 8 + .../hausdorffdistance6.testcase | 8 + .../hausdorffdistance7.testcase | 8 + .../sql_stmt_geos_tests/hexgrid1.testcase | 9 + .../sql_stmt_geos_tests/hexgrid10.testcase | 9 + .../sql_stmt_geos_tests/hexgrid11.testcase | 9 + .../sql_stmt_geos_tests/hexgrid12.testcase | 9 + .../sql_stmt_geos_tests/hexgrid13.testcase | 9 + .../sql_stmt_geos_tests/hexgrid14.testcase | 9 + .../sql_stmt_geos_tests/hexgrid15.testcase | 9 + .../sql_stmt_geos_tests/hexgrid16.testcase | 9 + .../sql_stmt_geos_tests/hexgrid17.testcase | 9 + .../sql_stmt_geos_tests/hexgrid18.testcase | 9 + .../sql_stmt_geos_tests/hexgrid19.testcase | 9 + .../sql_stmt_geos_tests/hexgrid2.testcase | 9 + .../sql_stmt_geos_tests/hexgrid20.testcase | 7 + .../sql_stmt_geos_tests/hexgrid21.testcase | 10 + .../sql_stmt_geos_tests/hexgrid22.testcase | 7 + .../sql_stmt_geos_tests/hexgrid23.testcase | 7 + .../sql_stmt_geos_tests/hexgrid3.testcase | 9 + .../sql_stmt_geos_tests/hexgrid4.testcase | 9 + .../sql_stmt_geos_tests/hexgrid5.testcase | 9 + .../sql_stmt_geos_tests/hexgrid6.testcase | 9 + .../sql_stmt_geos_tests/hexgrid7.testcase | 9 + .../sql_stmt_geos_tests/hexgrid8.testcase | 9 + .../sql_stmt_geos_tests/hexgrid9.testcase | 9 + .../interpolateequidistantpoint1.testcase | 7 + .../interpolateequidistantpoint10.testcase | 7 + .../interpolateequidistantpoint11.testcase | 7 + .../interpolateequidistantpoint12.testcase | 7 + .../interpolateequidistantpoint13.testcase | 7 + .../interpolateequidistantpoint14.testcase | 7 + .../interpolateequidistantpoint2.testcase | 7 + .../interpolateequidistantpoint3.testcase | 7 + .../interpolateequidistantpoint4.testcase | 7 + .../interpolateequidistantpoint5.testcase | 7 + .../interpolateequidistantpoint6.testcase | 7 + .../interpolateequidistantpoint7.testcase | 7 + .../interpolateequidistantpoint8.testcase | 7 + .../interpolateequidistantpoint9.testcase | 7 + .../interpolatepoint1.testcase | 7 + .../interpolatepoint10.testcase | 7 + .../interpolatepoint11.testcase | 7 + .../interpolatepoint12.testcase | 7 + .../interpolatepoint13.testcase | 7 + .../interpolatepoint14.testcase | 7 + .../interpolatepoint2.testcase | 7 + .../interpolatepoint3.testcase | 7 + .../interpolatepoint4.testcase | 7 + .../interpolatepoint5.testcase | 7 + .../interpolatepoint6.testcase | 7 + .../interpolatepoint7.testcase | 7 + .../interpolatepoint8.testcase | 7 + .../interpolatepoint9.testcase | 7 + .../intersection1.testcase | 8 + .../intersection10.testcase | 8 + .../intersection11.testcase | 8 + .../intersection12.testcase | 8 + .../intersection2.testcase | 8 + .../intersection3.testcase | 8 + .../intersection4.testcase | 8 + .../intersection5.testcase | 8 + .../intersection6.testcase | 8 + .../intersection7.testcase | 8 + .../intersection8.testcase | 8 + .../intersection9.testcase | 8 + .../sql_stmt_geos_tests/isclosed1.testcase | 7 + .../sql_stmt_geos_tests/isclosed10.testcase | 7 + .../sql_stmt_geos_tests/isclosed2.testcase | 8 + .../sql_stmt_geos_tests/isclosed3.testcase | 7 + .../sql_stmt_geos_tests/isclosed4.testcase | 7 + .../sql_stmt_geos_tests/isclosed5.testcase | 7 + .../sql_stmt_geos_tests/isclosed6.testcase | 7 + .../sql_stmt_geos_tests/isclosed7.testcase | 7 + .../sql_stmt_geos_tests/isclosed8.testcase | 7 + .../sql_stmt_geos_tests/isclosed9.testcase | 7 + .../test/sql_stmt_geos_tests/isring1.testcase | 7 + .../test/sql_stmt_geos_tests/isring2.testcase | 8 + .../test/sql_stmt_geos_tests/isring3.testcase | 7 + .../test/sql_stmt_geos_tests/isring4.testcase | 7 + .../test/sql_stmt_geos_tests/isring5.testcase | 7 + .../test/sql_stmt_geos_tests/isring6.testcase | 7 + .../test/sql_stmt_geos_tests/isring7.testcase | 7 + .../test/sql_stmt_geos_tests/isring8.testcase | 7 + .../test/sql_stmt_geos_tests/isring9.testcase | 7 + .../sql_stmt_geos_tests/issimple1.testcase | 7 + .../sql_stmt_geos_tests/issimple2.testcase | 8 + .../sql_stmt_geos_tests/issimple3.testcase | 7 + .../sql_stmt_geos_tests/issimple4.testcase | 7 + .../sql_stmt_geos_tests/issimple5.testcase | 7 + .../sql_stmt_geos_tests/issimple6.testcase | 7 + .../sql_stmt_geos_tests/isvalid1.testcase | 7 + .../sql_stmt_geos_tests/isvalid10.testcase | 7 + .../sql_stmt_geos_tests/isvalid11.testcase | 7 + .../sql_stmt_geos_tests/isvalid12.testcase | 7 + .../sql_stmt_geos_tests/isvalid13.testcase | 7 + .../sql_stmt_geos_tests/isvalid14.testcase | 7 + .../sql_stmt_geos_tests/isvalid15.testcase | 7 + .../sql_stmt_geos_tests/isvalid16.testcase | 7 + .../sql_stmt_geos_tests/isvalid17.testcase | 7 + .../sql_stmt_geos_tests/isvalid18.testcase | 7 + .../sql_stmt_geos_tests/isvalid19.testcase | 7 + .../sql_stmt_geos_tests/isvalid2.testcase | 7 + .../sql_stmt_geos_tests/isvalid20.testcase | 7 + .../sql_stmt_geos_tests/isvalid3.testcase | 7 + .../sql_stmt_geos_tests/isvalid4.testcase | 7 + .../sql_stmt_geos_tests/isvalid5.testcase | 7 + .../sql_stmt_geos_tests/isvalid6.testcase | 7 + .../sql_stmt_geos_tests/isvalid7.testcase | 7 + .../sql_stmt_geos_tests/isvalid8.testcase | 7 + .../sql_stmt_geos_tests/isvalid9.testcase | 7 + .../isvaliddetail1.testcase | 7 + .../isvaliddetail2.testcase | 7 + .../isvaliddetail3.testcase | 7 + .../isvaliddetail4.testcase | 7 + .../isvaliddetail5.testcase | 7 + .../isvalidreason1.testcase | 7 + .../isvalidreason2.testcase | 7 + .../isvalidreason3.testcase | 7 + .../isvalidreason4.testcase | 7 + .../isvalidreason5.testcase | 7 + .../sql_stmt_geos_tests/linemerge1.testcase | 8 + .../sql_stmt_geos_tests/linemerge10.testcase | 9 + .../sql_stmt_geos_tests/linemerge2.testcase | 8 + .../sql_stmt_geos_tests/linemerge3.testcase | 8 + .../sql_stmt_geos_tests/linemerge4.testcase | 8 + .../sql_stmt_geos_tests/linemerge5.testcase | 8 + .../sql_stmt_geos_tests/linemerge6.testcase | 8 + .../sql_stmt_geos_tests/linemerge7.testcase | 8 + .../sql_stmt_geos_tests/linemerge8.testcase | 8 + .../sql_stmt_geos_tests/linemerge9.testcase | 9 + .../sql_stmt_geos_tests/linesnodes1.testcase | 7 + .../sql_stmt_geos_tests/linesnodes10.testcase | 7 + .../sql_stmt_geos_tests/linesnodes11.testcase | 7 + .../sql_stmt_geos_tests/linesnodes12.testcase | 7 + .../sql_stmt_geos_tests/linesnodes13.testcase | 7 + .../sql_stmt_geos_tests/linesnodes14.testcase | 7 + .../sql_stmt_geos_tests/linesnodes15.testcase | 7 + .../sql_stmt_geos_tests/linesnodes16.testcase | 7 + .../sql_stmt_geos_tests/linesnodes17.testcase | 7 + .../sql_stmt_geos_tests/linesnodes18.testcase | 7 + .../sql_stmt_geos_tests/linesnodes19.testcase | 7 + .../sql_stmt_geos_tests/linesnodes2.testcase | 7 + .../sql_stmt_geos_tests/linesnodes3.testcase | 7 + .../sql_stmt_geos_tests/linesnodes4.testcase | 7 + .../sql_stmt_geos_tests/linesnodes5.testcase | 7 + .../sql_stmt_geos_tests/linesnodes6.testcase | 7 + .../sql_stmt_geos_tests/linesnodes7.testcase | 7 + .../sql_stmt_geos_tests/linesnodes8.testcase | 7 + .../sql_stmt_geos_tests/linesnodes9.testcase | 7 + .../linesubstring1.testcase | 8 + .../linesubstring10.testcase | 8 + .../linesubstring11.testcase | 8 + .../linesubstring12.testcase | 8 + .../linesubstring13.testcase | 8 + .../linesubstring14.testcase | 8 + .../linesubstring15.testcase | 8 + .../linesubstring16.testcase | 8 + .../linesubstring17.testcase | 8 + .../linesubstring18.testcase | 8 + .../linesubstring19.testcase | 8 + .../linesubstring2.testcase | 8 + .../linesubstring20.testcase | 8 + .../linesubstring21.testcase | 8 + .../linesubstring22.testcase | 8 + .../linesubstring23.testcase | 8 + .../linesubstring24.testcase | 8 + .../linesubstring25.testcase | 8 + .../linesubstring26.testcase | 8 + .../linesubstring3.testcase | 8 + .../linesubstring4.testcase | 9 + .../linesubstring5.testcase | 8 + .../linesubstring6.testcase | 8 + .../linesubstring7.testcase | 9 + .../linesubstring8.testcase | 9 + .../linesubstring9.testcase | 9 + .../sql_stmt_geos_tests/locatepoint1.testcase | 7 + .../locatepoint10.testcase | 7 + .../locatepoint11.testcase | 7 + .../locatepoint12.testcase | 7 + .../sql_stmt_geos_tests/locatepoint2.testcase | 7 + .../sql_stmt_geos_tests/locatepoint3.testcase | 7 + .../sql_stmt_geos_tests/locatepoint4.testcase | 7 + .../sql_stmt_geos_tests/locatepoint5.testcase | 7 + .../sql_stmt_geos_tests/locatepoint6.testcase | 7 + .../sql_stmt_geos_tests/locatepoint7.testcase | 7 + .../sql_stmt_geos_tests/locatepoint8.testcase | 7 + .../sql_stmt_geos_tests/locatepoint9.testcase | 7 + .../sql_stmt_geos_tests/makearc15.testcase | 8 + .../sql_stmt_geos_tests/makearc19.testcase | 8 + .../sql_stmt_geos_tests/makearc23.testcase | 8 + .../sql_stmt_geos_tests/makecircle10.testcase | 8 + .../sql_stmt_geos_tests/makecircle11.testcase | 8 + .../sql_stmt_geos_tests/makecircle12.testcase | 8 + .../sql_stmt_geos_tests/makecircle13.testcase | 8 + .../sql_stmt_geos_tests/makecircle14.testcase | 8 + .../sql_stmt_geos_tests/makecircle15.testcase | 8 + .../sql_stmt_geos_tests/makecircle16.testcase | 8 + .../sql_stmt_geos_tests/makecircle17.testcase | 8 + .../sql_stmt_geos_tests/makecircle18.testcase | 8 + .../makecircularsector15.testcase | 8 + .../makecircularsector19.testcase | 8 + .../makecircularsector23.testcase | 8 + .../makecircularstripe15.testcase | 8 + .../makecircularstripe19.testcase | 8 + .../makecircularstripe23.testcase | 8 + .../makeellipse13.testcase | 8 + .../makeellipse17.testcase | 8 + .../makeellipse21.testcase | 8 + .../makeellipticarc18.testcase | 8 + .../makeellipticarc22.testcase | 8 + .../makeellipticarc26.testcase | 8 + .../makeellipticsector18.testcase | 8 + .../makeellipticsector22.testcase | 8 + .../makeellipticsector26.testcase | 8 + .../sql_stmt_geos_tests/offsetcurve1.testcase | 9 + .../offsetcurve10.testcase | 9 + .../offsetcurve11.testcase | 9 + .../offsetcurve12.testcase | 9 + .../offsetcurve13.testcase | 9 + .../offsetcurve14.testcase | 9 + .../sql_stmt_geos_tests/offsetcurve2.testcase | 10 + .../sql_stmt_geos_tests/offsetcurve3.testcase | 10 + .../sql_stmt_geos_tests/offsetcurve4.testcase | 9 + .../sql_stmt_geos_tests/offsetcurve5.testcase | 9 + .../sql_stmt_geos_tests/offsetcurve6.testcase | 9 + .../sql_stmt_geos_tests/offsetcurve7.testcase | 10 + .../sql_stmt_geos_tests/offsetcurve8.testcase | 9 + .../sql_stmt_geos_tests/offsetcurve9.testcase | 9 + .../pointonsurface1.testcase | 8 + .../pointonsurface2.testcase | 9 + .../pointonsurface3.testcase | 9 + .../pointonsurface4.testcase | 9 + .../pointonsurface5.testcase | 8 + .../pointonsurface6.testcase | 8 + .../pointonsurface7.testcase | 8 + .../sql_stmt_geos_tests/polygonize1.testcase | 10 + .../sql_stmt_geos_tests/polygonize10.testcase | 10 + .../sql_stmt_geos_tests/polygonize11.testcase | 10 + .../sql_stmt_geos_tests/polygonize12.testcase | 10 + .../sql_stmt_geos_tests/polygonize13.testcase | 10 + .../sql_stmt_geos_tests/polygonize14.testcase | 10 + .../sql_stmt_geos_tests/polygonize2.testcase | 10 + .../sql_stmt_geos_tests/polygonize3.testcase | 10 + .../sql_stmt_geos_tests/polygonize4.testcase | 10 + .../sql_stmt_geos_tests/polygonize5.testcase | 10 + .../sql_stmt_geos_tests/polygonize6.testcase | 10 + .../sql_stmt_geos_tests/polygonize7.testcase | 10 + .../sql_stmt_geos_tests/polygonize8.testcase | 10 + .../sql_stmt_geos_tests/polygonize9.testcase | 10 + .../ptdistancewithin1.testcase | 7 + .../ptdistancewithin10.testcase | 7 + .../ptdistancewithin11.testcase | 7 + .../ptdistancewithin12.testcase | 7 + .../ptdistancewithin13.testcase | 7 + .../ptdistancewithin14.testcase | 7 + .../ptdistancewithin15.testcase | 7 + .../ptdistancewithin16.testcase | 7 + .../ptdistancewithin17.testcase | 7 + .../ptdistancewithin18.testcase | 7 + .../ptdistancewithin2.testcase | 7 + .../ptdistancewithin3.testcase | 7 + .../ptdistancewithin4.testcase | 7 + .../ptdistancewithin5.testcase | 7 + .../ptdistancewithin6.testcase | 7 + .../ptdistancewithin7.testcase | 7 + .../ptdistancewithin8.testcase | 7 + .../ptdistancewithin9.testcase | 7 + .../ptdistwithin1.testcase | 7 + .../ptdistwithin10.testcase | 7 + .../ptdistwithin11.testcase | 7 + .../ptdistwithin12.testcase | 7 + .../ptdistwithin13.testcase | 7 + .../ptdistwithin14.testcase | 7 + .../ptdistwithin15.testcase | 7 + .../ptdistwithin16.testcase | 7 + .../ptdistwithin2.testcase | 7 + .../ptdistwithin3.testcase | 7 + .../ptdistwithin4.testcase | 7 + .../ptdistwithin5.testcase | 7 + .../ptdistwithin6.testcase | 7 + .../ptdistwithin7.testcase | 7 + .../ptdistwithin8.testcase | 7 + .../ptdistwithin9.testcase | 7 + .../test/sql_stmt_geos_tests/relate1.testcase | 11 + .../test/sql_stmt_geos_tests/relate2.testcase | 7 + .../test/sql_stmt_geos_tests/relate3.testcase | 7 + .../test/sql_stmt_geos_tests/relate4.testcase | 7 + .../test/sql_stmt_geos_tests/relate5.testcase | 7 + .../test/sql_stmt_geos_tests/relate6.testcase | 7 + .../test/sql_stmt_geos_tests/relate7.testcase | 7 + .../test/sql_stmt_geos_tests/relate8.testcase | 7 + .../test/sql_stmt_geos_tests/relate9.testcase | 7 + .../sql_stmt_geos_tests/relations1.testcase | 21 + .../sql_stmt_geos_tests/relations2.testcase | 21 + .../sql_stmt_geos_tests/relations3.testcase | 21 + .../sql_stmt_geos_tests/relations4.testcase | 21 + .../sql_stmt_geos_tests/relations5.testcase | 21 + .../sql_stmt_geos_tests/relations6.testcase | 21 + .../sql_stmt_geos_tests/relations7.testcase | 21 + .../sql_stmt_geos_tests/relations8.testcase | 21 + .../sql_stmt_geos_tests/ringsnodes1.testcase | 7 + .../sql_stmt_geos_tests/ringsnodes2.testcase | 7 + .../sql_stmt_geos_tests/ringsnodes3.testcase | 7 + .../sql_stmt_geos_tests/ringsnodes4.testcase | 7 + .../sql_stmt_geos_tests/ringsnodes5.testcase | 7 + .../sql_stmt_geos_tests/ringsnodes6.testcase | 7 + .../sql_stmt_geos_tests/routing6.testcase | 10 + .../sql_stmt_geos_tests/sharedpaths1.testcase | 7 + .../sharedpaths10.testcase | 7 + .../sharedpaths11.testcase | 7 + .../sharedpaths12.testcase | 7 + .../sharedpaths13.testcase | 7 + .../sharedpaths14.testcase | 7 + .../sharedpaths15.testcase | 7 + .../sharedpaths16.testcase | 7 + .../sharedpaths17.testcase | 7 + .../sharedpaths18.testcase | 7 + .../sharedpaths19.testcase | 7 + .../sql_stmt_geos_tests/sharedpaths2.testcase | 7 + .../sharedpaths20.testcase | 7 + .../sharedpaths21.testcase | 7 + .../sharedpaths22.testcase | 7 + .../sharedpaths23.testcase | 7 + .../sharedpaths24.testcase | 7 + .../sharedpaths25.testcase | 7 + .../sharedpaths26.testcase | 7 + .../sharedpaths27.testcase | 7 + .../sharedpaths28.testcase | 7 + .../sharedpaths29.testcase | 7 + .../sql_stmt_geos_tests/sharedpaths3.testcase | 7 + .../sharedpaths30.testcase | 7 + .../sharedpaths31.testcase | 7 + .../sharedpaths32.testcase | 7 + .../sql_stmt_geos_tests/sharedpaths4.testcase | 7 + .../sql_stmt_geos_tests/sharedpaths5.testcase | 7 + .../sql_stmt_geos_tests/sharedpaths6.testcase | 7 + .../sql_stmt_geos_tests/sharedpaths7.testcase | 7 + .../sql_stmt_geos_tests/sharedpaths8.testcase | 7 + .../sql_stmt_geos_tests/sharedpaths9.testcase | 7 + .../shortestline1.testcase | 8 + .../shortestline2.testcase | 8 + .../shortestline3.testcase | 8 + .../shortestline4.testcase | 8 + .../shortestline5.testcase | 8 + .../shortestline6.testcase | 8 + .../shortestline7.testcase | 8 + .../sql_stmt_geos_tests/simplify1.testcase | 10 + .../sql_stmt_geos_tests/simplify10.testcase | 8 + .../sql_stmt_geos_tests/simplify11.testcase | 8 + .../sql_stmt_geos_tests/simplify12.testcase | 10 + .../sql_stmt_geos_tests/simplify13.testcase | 10 + .../sql_stmt_geos_tests/simplify14.testcase | 10 + .../sql_stmt_geos_tests/simplify15.testcase | 8 + .../sql_stmt_geos_tests/simplify16.testcase | 8 + .../sql_stmt_geos_tests/simplify2.testcase | 10 + .../sql_stmt_geos_tests/simplify3.testcase | 10 + .../sql_stmt_geos_tests/simplify4.testcase | 8 + .../sql_stmt_geos_tests/simplify5.testcase | 8 + .../sql_stmt_geos_tests/simplify6.testcase | 8 + .../sql_stmt_geos_tests/simplify7.testcase | 8 + .../sql_stmt_geos_tests/simplify8.testcase | 8 + .../sql_stmt_geos_tests/simplify9.testcase | 8 + .../singlesidedbuffer1.testcase | 7 + .../singlesidedbuffer11.testcase | 7 + .../singlesidedbuffer12.testcase | 7 + .../singlesidedbuffer13.testcase | 7 + .../singlesidedbuffer14.testcase | 7 + .../singlesidedbuffer15.testcase | 7 + .../singlesidedbuffer16.testcase | 7 + .../singlesidedbuffer17.testcase | 7 + .../singlesidedbuffer2.testcase | 7 + .../singlesidedbuffer3.testcase | 7 + .../singlesidedbuffer4.testcase | 7 + .../singlesidedbuffer5.testcase | 7 + .../singlesidedbuffer6.testcase | 7 + .../singlesidedbuffer7.testcase | 7 + .../singlesidedbuffer8.testcase | 7 + .../singlesidedbuffer9.testcase | 7 + .../test/sql_stmt_geos_tests/snap1.testcase | 7 + .../test/sql_stmt_geos_tests/snap10.testcase | 7 + .../test/sql_stmt_geos_tests/snap2.testcase | 7 + .../test/sql_stmt_geos_tests/snap3.testcase | 7 + .../test/sql_stmt_geos_tests/snap4.testcase | 7 + .../test/sql_stmt_geos_tests/snap5.testcase | 7 + .../test/sql_stmt_geos_tests/snap6.testcase | 7 + .../test/sql_stmt_geos_tests/snap7.testcase | 7 + .../test/sql_stmt_geos_tests/snap8.testcase | 7 + .../test/sql_stmt_geos_tests/snap9.testcase | 7 + .../sql_stmt_geos_tests/squaregrid1.testcase | 9 + .../sql_stmt_geos_tests/squaregrid10.testcase | 9 + .../sql_stmt_geos_tests/squaregrid11.testcase | 9 + .../sql_stmt_geos_tests/squaregrid12.testcase | 9 + .../sql_stmt_geos_tests/squaregrid13.testcase | 9 + .../sql_stmt_geos_tests/squaregrid14.testcase | 9 + .../sql_stmt_geos_tests/squaregrid15.testcase | 9 + .../sql_stmt_geos_tests/squaregrid16.testcase | 9 + .../sql_stmt_geos_tests/squaregrid17.testcase | 9 + .../sql_stmt_geos_tests/squaregrid18.testcase | 9 + .../sql_stmt_geos_tests/squaregrid19.testcase | 9 + .../sql_stmt_geos_tests/squaregrid2.testcase | 9 + .../sql_stmt_geos_tests/squaregrid20.testcase | 11 + .../sql_stmt_geos_tests/squaregrid21.testcase | 9 + .../sql_stmt_geos_tests/squaregrid22.testcase | 8 + .../sql_stmt_geos_tests/squaregrid23.testcase | 7 + .../sql_stmt_geos_tests/squaregrid3.testcase | 9 + .../sql_stmt_geos_tests/squaregrid4.testcase | 9 + .../sql_stmt_geos_tests/squaregrid5.testcase | 9 + .../sql_stmt_geos_tests/squaregrid6.testcase | 9 + .../sql_stmt_geos_tests/squaregrid7.testcase | 9 + .../sql_stmt_geos_tests/squaregrid8.testcase | 9 + .../sql_stmt_geos_tests/squaregrid9.testcase | 9 + .../sql_stmt_geos_tests/st_area1.testcase | 7 + .../sql_stmt_geos_tests/st_area2.testcase | 7 + .../sql_stmt_geos_tests/st_area3.testcase | 7 + .../sql_stmt_geos_tests/st_area4.testcase | 7 + .../sql_stmt_geos_tests/st_area5.testcase | 7 + .../sql_stmt_geos_tests/st_area6.testcase | 7 + .../sql_stmt_geos_tests/st_area7.testcase | 7 + .../sql_stmt_geos_tests/st_area8.testcase | 7 + .../sql_stmt_geos_tests/st_area9.testcase | 7 + .../sql_stmt_geos_tests/st_length1.testcase | 7 + .../sql_stmt_geos_tests/st_length10.testcase | 7 + .../sql_stmt_geos_tests/st_length11.testcase | 7 + .../sql_stmt_geos_tests/st_length12.testcase | 7 + .../sql_stmt_geos_tests/st_length13.testcase | 7 + .../sql_stmt_geos_tests/st_length14.testcase | 7 + .../sql_stmt_geos_tests/st_length15.testcase | 7 + .../sql_stmt_geos_tests/st_length16.testcase | 7 + .../sql_stmt_geos_tests/st_length17.testcase | 7 + .../sql_stmt_geos_tests/st_length18.testcase | 7 + .../sql_stmt_geos_tests/st_length2.testcase | 7 + .../sql_stmt_geos_tests/st_length3.testcase | 7 + .../sql_stmt_geos_tests/st_length4.testcase | 7 + .../sql_stmt_geos_tests/st_length5.testcase | 7 + .../sql_stmt_geos_tests/st_length6.testcase | 7 + .../sql_stmt_geos_tests/st_length7.testcase | 7 + .../sql_stmt_geos_tests/st_length8.testcase | 7 + .../sql_stmt_geos_tests/st_length9.testcase | 7 + .../st_perimeter1.testcase | 7 + .../st_perimeter10.testcase | 7 + .../st_perimeter11.testcase | 7 + .../st_perimeter12.testcase | 7 + .../st_perimeter13.testcase | 7 + .../st_perimeter14.testcase | 7 + .../st_perimeter15.testcase | 7 + .../st_perimeter16.testcase | 7 + .../st_perimeter17.testcase | 7 + .../st_perimeter18.testcase | 7 + .../st_perimeter2.testcase | 7 + .../st_perimeter3.testcase | 7 + .../st_perimeter4.testcase | 7 + .../st_perimeter5.testcase | 7 + .../st_perimeter6.testcase | 7 + .../st_perimeter7.testcase | 7 + .../st_perimeter8.testcase | 7 + .../st_perimeter9.testcase | 7 + .../symdifference1.testcase | 9 + .../symdifference10.testcase | 8 + .../symdifference11.testcase | 8 + .../symdifference2.testcase | 9 + .../symdifference3.testcase | 9 + .../symdifference4.testcase | 9 + .../symdifference5.testcase | 9 + .../symdifference6.testcase | 9 + .../symdifference7.testcase | 9 + .../symdifference8.testcase | 9 + .../symdifference9.testcase | 9 + .../sql_stmt_geos_tests/testgeos1.testcase | 7 + .../sql_stmt_geos_tests/testgeos10.testcase | 7 + .../sql_stmt_geos_tests/testgeos2.testcase | 7 + .../sql_stmt_geos_tests/testgeos3.testcase | 7 + .../sql_stmt_geos_tests/testgeos4.testcase | 7 + .../sql_stmt_geos_tests/testgeos5.testcase | 7 + .../sql_stmt_geos_tests/testgeos6.testcase | 7 + .../sql_stmt_geos_tests/testgeos7.testcase | 7 + .../sql_stmt_geos_tests/testgeos8.testcase | 7 + .../sql_stmt_geos_tests/testgeos9.testcase | 7 + .../sql_stmt_geos_tests/trianggrid1.testcase | 9 + .../sql_stmt_geos_tests/trianggrid10.testcase | 9 + .../sql_stmt_geos_tests/trianggrid11.testcase | 9 + .../sql_stmt_geos_tests/trianggrid12.testcase | 9 + .../sql_stmt_geos_tests/trianggrid13.testcase | 9 + .../sql_stmt_geos_tests/trianggrid14.testcase | 9 + .../sql_stmt_geos_tests/trianggrid15.testcase | 9 + .../sql_stmt_geos_tests/trianggrid16.testcase | 9 + .../sql_stmt_geos_tests/trianggrid17.testcase | 9 + .../sql_stmt_geos_tests/trianggrid18.testcase | 9 + .../sql_stmt_geos_tests/trianggrid19.testcase | 9 + .../sql_stmt_geos_tests/trianggrid2.testcase | 9 + .../sql_stmt_geos_tests/trianggrid20.testcase | 10 + .../sql_stmt_geos_tests/trianggrid21.testcase | 7 + .../sql_stmt_geos_tests/trianggrid22.testcase | 10 + .../sql_stmt_geos_tests/trianggrid23.testcase | 7 + .../sql_stmt_geos_tests/trianggrid3.testcase | 9 + .../sql_stmt_geos_tests/trianggrid4.testcase | 9 + .../sql_stmt_geos_tests/trianggrid5.testcase | 9 + .../sql_stmt_geos_tests/trianggrid6.testcase | 9 + .../sql_stmt_geos_tests/trianggrid7.testcase | 9 + .../sql_stmt_geos_tests/trianggrid8.testcase | 9 + .../sql_stmt_geos_tests/trianggrid9.testcase | 9 + .../sql_stmt_geos_tests/unaryunion1.testcase | 7 + .../sql_stmt_geos_tests/unaryunion2.testcase | 7 + .../sql_stmt_geos_tests/unaryunion3.testcase | 7 + .../sql_stmt_geos_tests/unaryunion4.testcase | 7 + .../sql_stmt_geos_tests/unaryunion5.testcase | 7 + .../sql_stmt_geos_tests/unaryunion6.testcase | 7 + .../sql_stmt_geos_tests/unaryunion7.testcase | 7 + .../sql_stmt_geos_tests/unaryunion8.testcase | 7 + .../test/sql_stmt_geos_tests/union1.testcase | 9 + .../test/sql_stmt_geos_tests/union10.testcase | 8 + .../test/sql_stmt_geos_tests/union11.testcase | 8 + .../test/sql_stmt_geos_tests/union12.testcase | 8 + .../test/sql_stmt_geos_tests/union13.testcase | 8 + .../test/sql_stmt_geos_tests/union14.testcase | 8 + .../test/sql_stmt_geos_tests/union15.testcase | 8 + .../test/sql_stmt_geos_tests/union16.testcase | 8 + .../test/sql_stmt_geos_tests/union17.testcase | 7 + .../test/sql_stmt_geos_tests/union18.testcase | 7 + .../test/sql_stmt_geos_tests/union19.testcase | 7 + .../test/sql_stmt_geos_tests/union2.testcase | 7 + .../test/sql_stmt_geos_tests/union20.testcase | 7 + .../test/sql_stmt_geos_tests/union21.testcase | 8 + .../test/sql_stmt_geos_tests/union22.testcase | 7 + .../test/sql_stmt_geos_tests/union23.testcase | 7 + .../test/sql_stmt_geos_tests/union24.testcase | 7 + .../test/sql_stmt_geos_tests/union25.testcase | 7 + .../test/sql_stmt_geos_tests/union26.testcase | 7 + .../test/sql_stmt_geos_tests/union27.testcase | 9 + .../test/sql_stmt_geos_tests/union28.testcase | 9 + .../test/sql_stmt_geos_tests/union29.testcase | 9 + .../test/sql_stmt_geos_tests/union3.testcase | 8 + .../test/sql_stmt_geos_tests/union4.testcase | 8 + .../test/sql_stmt_geos_tests/union5.testcase | 8 + .../test/sql_stmt_geos_tests/union6.testcase | 8 + .../test/sql_stmt_geos_tests/union7.testcase | 8 + .../test/sql_stmt_geos_tests/union8.testcase | 8 + .../test/sql_stmt_geos_tests/union9.testcase | 8 + .../sql_stmt_geosadvanced_tests/Makefile.am | 58 + .../sql_stmt_geosadvanced_tests/Makefile.in | 494 + .../concave_hull1.testcase | 7 + .../concave_hull10.testcase | 7 + .../concave_hull11.testcase | 7 + .../concave_hull12.testcase | 7 + .../concave_hull13.testcase | 7 + .../concave_hull14.testcase | 7 + .../concave_hull15.testcase | 7 + .../concave_hull16.testcase | 7 + .../concave_hull17.testcase | 7 + .../concave_hull18.testcase | 7 + .../concave_hull19.testcase | 7 + .../concave_hull2.testcase | 7 + .../concave_hull3.testcase | 7 + .../concave_hull4.testcase | 7 + .../concave_hull5.testcase | 7 + .../concave_hull6.testcase | 7 + .../concave_hull7.testcase | 7 + .../concave_hull8.testcase | 7 + .../concave_hull9.testcase | 7 + .../delaunay1.testcase | 7 + .../delaunay10.testcase | 7 + .../delaunay11.testcase | 7 + .../delaunay12.testcase | 7 + .../delaunay13.testcase | 7 + .../delaunay14.testcase | 7 + .../delaunay15.testcase | 7 + .../delaunay16.testcase | 7 + .../delaunay17.testcase | 7 + .../delaunay18.testcase | 7 + .../delaunay19.testcase | 7 + .../delaunay2.testcase | 7 + .../delaunay3.testcase | 7 + .../delaunay4.testcase | 7 + .../delaunay5.testcase | 7 + .../delaunay6.testcase | 7 + .../delaunay7.testcase | 7 + .../delaunay8.testcase | 7 + .../delaunay9.testcase | 7 + .../voronoj1.testcase | 7 + .../voronoj10.testcase | 7 + .../voronoj11.testcase | 7 + .../voronoj12.testcase | 7 + .../voronoj13.testcase | 7 + .../voronoj14.testcase | 7 + .../voronoj15.testcase | 7 + .../voronoj16.testcase | 7 + .../voronoj17.testcase | 7 + .../voronoj18.testcase | 7 + .../voronoj19.testcase | 7 + .../voronoj2.testcase | 7 + .../voronoj20.testcase | 7 + .../voronoj3.testcase | 7 + .../voronoj4.testcase | 7 + .../voronoj5.testcase | 7 + .../voronoj6.testcase | 7 + .../voronoj8.testcase | 7 + .../voronoj9.testcase | 7 + .../test/sql_stmt_libxml2_tests/Makefile.am | 334 + .../test/sql_stmt_libxml2_tests/Makefile.in | 770 + .../addfileid1.testcase | 8 + .../addfileid2.testcase | 8 + .../addfileid3.testcase | 8 + .../addfileid4.testcase | 8 + .../addfileid5.testcase | 8 + .../addfileid6.testcase | 8 + .../addfileid7.testcase | 8 + .../addparentid1.testcase | 8 + .../addparentid2.testcase | 8 + .../addparentid3.testcase | 8 + .../addparentid4.testcase | 8 + .../addparentid5.testcase | 8 + .../addparentid6.testcase | 8 + .../addparentid7.testcase | 8 + .../createisometa1.testcase | 8 + .../createisometa2.testcase | 8 + .../createisometa3.testcase | 8 + .../createisometa4.testcase | 8 + .../createisometa5.testcase | 8 + .../createisometa6.testcase | 8 + .../createstyling1.testcase | 8 + .../createstyling2.testcase | 8 + .../createstyling3.testcase | 8 + .../createstyling4.testcase | 8 + .../createstyling5.testcase | 8 + .../createstyling6.testcase | 8 + .../getIsoMetaId1.testcase | 8 + .../getIsoMetaId2.testcase | 8 + .../getIsoMetaId3.testcase | 8 + .../getIsoMetaId4.testcase | 8 + .../getIsoMetaId5.testcase | 8 + .../iscompressedxmlblob1.testcase | 8 + .../iscompressedxmlblob2.testcase | 8 + .../iscompressedxmlblob3.testcase | 8 + .../iscompressedxmlblob4.testcase | 8 + .../iscompressedxmlblob5.testcase | 8 + .../iscompressedxmlblob6.testcase | 8 + .../iscompressedxmlblob7.testcase | 8 + .../isisometadata1.testcase | 8 + .../isisometadata2.testcase | 8 + .../isisometadata3.testcase | 8 + .../isisometadata4.testcase | 8 + .../isisometadata5.testcase | 8 + .../isisometadata6.testcase | 8 + .../isisometadata7.testcase | 8 + .../isschemavalidatedxmlblob1.testcase | 8 + .../isschemavalidatedxmlblob2.testcase | 8 + .../isschemavalidatedxmlblob3.testcase | 8 + .../isschemavalidatedxmlblob4.testcase | 8 + .../isschemavalidatedxmlblob5.testcase | 8 + .../isschemavalidatedxmlblob6.testcase | 8 + .../issldserststyle1.testcase | 8 + .../issldserststyle2.testcase | 8 + .../issldserststyle3.testcase | 8 + .../issldserststyle4.testcase | 8 + .../issldserststyle5.testcase | 8 + .../issldserststyle6.testcase | 8 + .../issldserststyle7.testcase | 8 + .../issldsestyle1.testcase | 8 + .../issldsestyle2.testcase | 8 + .../issldsestyle3.testcase | 8 + .../issldsestyle4.testcase | 8 + .../issldsestyle5.testcase | 8 + .../issldsestyle6.testcase | 8 + .../issldsestyle7.testcase | 8 + .../sql_stmt_libxml2_tests/issvg1.testcase | 8 + .../sql_stmt_libxml2_tests/issvg2.testcase | 8 + .../sql_stmt_libxml2_tests/issvg3.testcase | 8 + .../sql_stmt_libxml2_tests/issvg4.testcase | 8 + .../sql_stmt_libxml2_tests/issvg5.testcase | 8 + .../sql_stmt_libxml2_tests/issvg6.testcase | 8 + .../sql_stmt_libxml2_tests/issvg7.testcase | 8 + .../isvalidxmlblob1.testcase | 8 + .../isvalidxmlblob2.testcase | 8 + .../isvalidxmlblob3.testcase | 8 + .../isvalidxmlblob4.testcase | 8 + .../isvalidxmlblob5.testcase | 8 + .../isvalidxmlblob6.testcase | 8 + .../registerGraphic1.testcase | 8 + .../registerGraphic10.testcase | 8 + .../registerGraphic11.testcase | 8 + .../registerGraphic12.testcase | 8 + .../registerGraphic13.testcase | 8 + .../registerGraphic14.testcase | 8 + .../registerGraphic15.testcase | 8 + .../registerGraphic16.testcase | 8 + .../registerGraphic17.testcase | 8 + .../registerGraphic18.testcase | 8 + .../registerGraphic19.testcase | 8 + .../registerGraphic2.testcase | 8 + .../registerGraphic20.testcase | 8 + .../registerGraphic21.testcase | 8 + .../registerGraphic22.testcase | 8 + .../registerGraphic3.testcase | 8 + .../registerGraphic4.testcase | 8 + .../registerGraphic5.testcase | 8 + .../registerGraphic6.testcase | 8 + .../registerGraphic7.testcase | 8 + .../registerGraphic8.testcase | 8 + .../registerGraphic9.testcase | 8 + .../registerGroup1.testcase | 8 + .../registerGroup14.testcase | 8 + .../registerGroup15.testcase | 8 + .../registerGroup16.testcase | 8 + .../registerGroup17.testcase | 8 + .../registerGroup18.testcase | 8 + .../registerGroup2.testcase | 8 + .../registerGroup25.testcase | 8 + .../registerGroup26.testcase | 8 + .../registerGroup27.testcase | 8 + .../registerGroup28.testcase | 8 + .../registerGroup29.testcase | 8 + .../registerGroup3.testcase | 8 + .../registerGroup4.testcase | 8 + .../registerGroup5.testcase | 8 + .../registerGroup6.testcase | 8 + .../registerGroup7.testcase | 8 + .../registerGroup8.testcase | 8 + .../registerGroupStyle1.testcase | 8 + .../registerGroupStyle10.testcase | 8 + .../registerGroupStyle11.testcase | 8 + .../registerGroupStyle12.testcase | 8 + .../registerGroupStyle13.testcase | 8 + .../registerGroupStyle14.testcase | 8 + .../registerGroupStyle15.testcase | 8 + .../registerGroupStyle16.testcase | 8 + .../registerGroupStyle17.testcase | 8 + .../registerGroupStyle2.testcase | 8 + .../registerGroupStyle3.testcase | 8 + .../registerGroupStyle4.testcase | 8 + .../registerGroupStyle5.testcase | 8 + .../registerGroupStyle6.testcase | 8 + .../registerGroupStyle7.testcase | 8 + .../registerGroupStyle8.testcase | 8 + .../registerGroupStyle9.testcase | 8 + .../registerIsoMeta1.testcase | 8 + .../registerIsoMeta10.testcase | 8 + .../registerIsoMeta11.testcase | 8 + .../registerIsoMeta12.testcase | 8 + .../registerIsoMeta13.testcase | 8 + .../registerIsoMeta14.testcase | 8 + .../registerIsoMeta2.testcase | 8 + .../registerIsoMeta3.testcase | 8 + .../registerIsoMeta4.testcase | 8 + .../registerIsoMeta5.testcase | 8 + .../registerIsoMeta6.testcase | 8 + .../registerIsoMeta7.testcase | 8 + .../registerIsoMeta8.testcase | 8 + .../registerIsoMeta9.testcase | 8 + .../registerRaster1.testcase | 8 + .../registerRaster10.testcase | 8 + .../registerRaster11.testcase | 8 + .../registerRaster12.testcase | 8 + .../registerRaster13.testcase | 8 + .../registerRaster14.testcase | 8 + .../registerRaster15.testcase | 8 + .../registerRaster16.testcase | 8 + .../registerRaster17.testcase | 8 + .../registerRaster2.testcase | 8 + .../registerRaster3.testcase | 8 + .../registerRaster4.testcase | 8 + .../registerRaster5.testcase | 8 + .../registerRaster6.testcase | 8 + .../registerRaster7.testcase | 8 + .../registerRaster8.testcase | 8 + .../registerRaster9.testcase | 8 + .../registerVector1.testcase | 8 + .../registerVector10.testcase | 8 + .../registerVector11.testcase | 8 + .../registerVector12.testcase | 8 + .../registerVector13.testcase | 8 + .../registerVector14.testcase | 8 + .../registerVector15.testcase | 8 + .../registerVector16.testcase | 8 + .../registerVector17.testcase | 8 + .../registerVector18.testcase | 8 + .../registerVector19.testcase | 8 + .../registerVector2.testcase | 8 + .../registerVector20.testcase | 8 + .../registerVector21.testcase | 8 + .../registerVector22.testcase | 8 + .../registerVector3.testcase | 8 + .../registerVector4.testcase | 8 + .../registerVector5.testcase | 8 + .../registerVector6.testcase | 8 + .../registerVector7.testcase | 8 + .../registerVector8.testcase | 8 + .../registerVector9.testcase | 8 + .../setGroupInfos1.testcase | 8 + .../setGroupInfos10.testcase | 8 + .../setGroupInfos11.testcase | 8 + .../setGroupInfos12.testcase | 8 + .../setGroupInfos13.testcase | 8 + .../setGroupInfos2.testcase | 8 + .../setGroupInfos3.testcase | 8 + .../setGroupInfos4.testcase | 8 + .../setGroupInfos5.testcase | 8 + .../setGroupInfos6.testcase | 8 + .../setGroupInfos7.testcase | 8 + .../setGroupInfos8.testcase | 8 + .../setGroupInfos9.testcase | 8 + .../setfileid1.testcase | 8 + .../setfileid2.testcase | 8 + .../setfileid3.testcase | 8 + .../setfileid4.testcase | 8 + .../setfileid5.testcase | 8 + .../setparentid1.testcase | 8 + .../setparentid2.testcase | 8 + .../setparentid3.testcase | 8 + .../setparentid4.testcase | 8 + .../setparentid5.testcase | 8 + .../xmlblobgetabstract1.testcase | 8 + .../xmlblobgetabstract2.testcase | 8 + .../xmlblobgetabstract3.testcase | 8 + .../xmlblobgetabstract4.testcase | 8 + .../xmlblobgetabstract5.testcase | 8 + .../xmlblobgetabstract6.testcase | 8 + .../xmlblobgetdocumentsize1.testcase | 8 + .../xmlblobgetdocumentsize2.testcase | 8 + .../xmlblobgetdocumentsize3.testcase | 8 + .../xmlblobgetdocumentsize4.testcase | 8 + .../xmlblobgetdocumentsize5.testcase | 8 + .../xmlblobgetdocumentsize6.testcase | 7 + .../xmlblobgetencoding1.testcase | 8 + .../xmlblobgetencoding2.testcase | 8 + .../xmlblobgetencoding3.testcase | 8 + .../xmlblobgetencoding4.testcase | 8 + .../xmlblobgetencoding5.testcase | 8 + .../xmlblobgetencoding6.testcase | 8 + .../xmlblobgetencoding7.testcase | 8 + .../xmlblobgetfileid1.testcase | 8 + .../xmlblobgetfileid2.testcase | 8 + .../xmlblobgetfileid3.testcase | 8 + .../xmlblobgetfileid4.testcase | 8 + .../xmlblobgetfileid5.testcase | 8 + .../xmlblobgetfileid6.testcase | 8 + .../xmlblobgetgeometry1.testcase | 8 + .../xmlblobgetgeometry2.testcase | 8 + .../xmlblobgetgeometry3.testcase | 8 + .../xmlblobgetgeometry4.testcase | 8 + .../xmlblobgetgeometry5.testcase | 8 + .../xmlblobgetgeometry6.testcase | 8 + .../xmlblobgetinternalschemauri1.testcase | 8 + .../xmlblobgetinternalschemauri2.testcase | 8 + .../xmlblobgetinternalschemauri3.testcase | 8 + .../xmlblobgetinternalschemauri4.testcase | 8 + .../xmlblobgetinternalschemauri5.testcase | 8 + .../xmlblobgetname1.testcase | 8 + .../xmlblobgetname2.testcase | 8 + .../xmlblobgetname3.testcase | 8 + .../xmlblobgetname4.testcase | 8 + .../xmlblobgetname5.testcase | 8 + .../xmlblobgetname6.testcase | 8 + .../xmlblobgetname7.testcase | 8 + .../xmlblobgetname8.testcase | 8 + .../xmlblobgetparentid1.testcase | 8 + .../xmlblobgetparentid2.testcase | 8 + .../xmlblobgetparentid3.testcase | 8 + .../xmlblobgetparentid4.testcase | 8 + .../xmlblobgetparentid5.testcase | 8 + .../xmlblobgetparentid6.testcase | 8 + .../xmlblobgetschemauri1.testcase | 8 + .../xmlblobgetschemauri2.testcase | 8 + .../xmlblobgetschemauri3.testcase | 8 + .../xmlblobgetschemauri4.testcase | 8 + .../xmlblobgetschemauri5.testcase | 8 + .../xmlblobgetschemauri6.testcase | 8 + .../xmlblobgettitle1.testcase | 8 + .../xmlblobgettitle2.testcase | 8 + .../xmlblobgettitle3.testcase | 8 + .../xmlblobgettitle4.testcase | 8 + .../xmlblobgettitle5.testcase | 8 + .../xmlblobgettitle6.testcase | 8 + .../xmlcompress1.testcase | 7 + .../xmlcompress2.testcase | 7 + .../xmlcompress3.testcase | 7 + .../xmlcompress4.testcase | 7 + .../xmlcompress5.testcase | 7 + .../xmlcompress6.testcase | 8 + .../xmlcompress7.testcase | 7 + .../xmlcompress8.testcase | 8 + .../xmlfromblob1.testcase | 8 + .../xmlfromblob10.testcase | 7 + .../xmlfromblob11.testcase | 7 + .../xmlfromblob12.testcase | 7 + .../xmlfromblob13.testcase | 7 + .../xmlfromblob2.testcase | 8 + .../xmlfromblob3.testcase | 8 + .../xmlfromblob4.testcase | 8 + .../xmlfromblob5.testcase | 8 + .../xmlfromblob6.testcase | 8 + .../xmlfromblob7.testcase | 8 + .../xmlfromblob8.testcase | 8 + .../xmlfromblob9.testcase | 7 + .../xmltextfromblob1.testcase | 8 + .../xmltextfromblob10.testcase | 7 + .../xmltextfromblob11.testcase | 7 + .../xmltextfromblob12.testcase | 7 + .../xmltextfromblob13.testcase | 7 + .../xmltextfromblob2.testcase | 8 + .../xmltextfromblob3.testcase | 8 + .../xmltextfromblob4.testcase | 8 + .../xmltextfromblob5.testcase | 8 + .../xmltextfromblob6.testcase | 8 + .../xmltextfromblob7.testcase | 8 + .../xmltextfromblob8.testcase | 8 + .../xmltextfromblob9.testcase | 7 + .../xmltoblob1.testcase | 8 + .../xmltoblob10.testcase | 8 + .../xmltoblob11.testcase | 8 + .../xmltoblob12.testcase | 8 + .../xmltoblob13.testcase | 8 + .../xmltoblob14.testcase | 8 + .../xmltoblob15.testcase | 8 + .../xmltoblob16.testcase | 8 + .../xmltoblob17.testcase | 8 + .../xmltoblob18.testcase | 7 + .../xmltoblob2.testcase | 8 + .../xmltoblob3.testcase | 8 + .../xmltoblob4.testcase | 8 + .../xmltoblob5.testcase | 8 + .../xmltoblob6.testcase | 8 + .../xmltoblob7.testcase | 8 + .../xmltoblob8.testcase | 8 + .../xmltoblob9.testcase | 8 + .../xmluncompress1.testcase | 7 + .../xmluncompress2.testcase | 7 + .../xmluncompress3.testcase | 7 + .../xmluncompress4.testcase | 7 + .../xmluncompress5.testcase | 7 + .../xmluncompress6.testcase | 7 + .../xmluncompress7.testcase | 7 + .../xmluncompress8.testcase | 7 + .../3ddistance1.testcase | 8 + .../3ddistance10.testcase | 8 + .../3ddistance2.testcase | 8 + .../3ddistance3.testcase | 8 + .../3ddistance4.testcase | 8 + .../3ddistance5.testcase | 8 + .../3ddistance6.testcase | 8 + .../3ddistance7.testcase | 8 + .../3ddistance8.testcase | 8 + .../3ddistance9.testcase | 8 + .../3dmaxdistance1.testcase | 8 + .../3dmaxdistance10.testcase | 8 + .../3dmaxdistance2.testcase | 8 + .../3dmaxdistance3.testcase | 8 + .../3dmaxdistance4.testcase | 8 + .../3dmaxdistance5.testcase | 8 + .../3dmaxdistance6.testcase | 8 + .../3dmaxdistance7.testcase | 8 + .../3dmaxdistance8.testcase | 8 + .../3dmaxdistance9.testcase | 8 + .../test/sql_stmt_lwgeom_tests/Makefile.am | 290 + .../test/sql_stmt_lwgeom_tests/Makefile.in | 725 + .../maxdistance1.testcase | 8 + .../maxdistance10.testcase | 8 + .../maxdistance2.testcase | 8 + .../maxdistance3.testcase | 8 + .../maxdistance4.testcase | 8 + .../maxdistance5.testcase | 8 + .../maxdistance6.testcase | 8 + .../maxdistance7.testcase | 8 + .../maxdistance8.testcase | 8 + .../maxdistance9.testcase | 8 + .../sql_stmt_lwgeom_tests/st_area10.testcase | 7 + .../sql_stmt_lwgeom_tests/st_area11.testcase | 7 + .../sql_stmt_lwgeom_tests/st_area12.testcase | 7 + .../sql_stmt_lwgeom_tests/st_area13.testcase | 7 + .../sql_stmt_lwgeom_tests/st_area14.testcase | 7 + .../sql_stmt_lwgeom_tests/st_area15.testcase | 7 + .../sql_stmt_lwgeom_tests/st_area16.testcase | 7 + .../sql_stmt_lwgeom_tests/st_area17.testcase | 7 + .../sql_stmt_lwgeom_tests/st_area18.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d1.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d10.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d11.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d12.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d13.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d14.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d15.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d16.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d17.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d18.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d19.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d2.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d20.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d21.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d22.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d23.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d24.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d25.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d26.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d27.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d28.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d29.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d3.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d30.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d4.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d5.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d6.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d7.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d8.testcase | 7 + .../sql_stmt_lwgeom_tests/st_asx3d9.testcase | 7 + .../st_azimuth1.testcase | 7 + .../st_azimuth11.testcase | 7 + .../st_azimuth12.testcase | 7 + .../st_azimuth13.testcase | 7 + .../st_azimuth14.testcase | 7 + .../st_azimuth15.testcase | 7 + .../st_azimuth16.testcase | 7 + .../st_azimuth17.testcase | 7 + .../st_azimuth2.testcase | 7 + .../st_azimuth3.testcase | 7 + .../st_azimuth4.testcase | 7 + .../st_azimuth5.testcase | 7 + .../st_azimuth6.testcase | 7 + .../st_azimuth7.testcase | 7 + .../st_azimuth8.testcase | 7 + .../st_azimuth9.testcase | 7 + .../st_geohash1.testcase | 7 + .../st_geohash10.testcase | 7 + .../st_geohash2.testcase | 7 + .../st_geohash3.testcase | 7 + .../st_geohash4.testcase | 7 + .../st_geohash5.testcase | 7 + .../st_geohash6.testcase | 7 + .../st_geohash7.testcase | 7 + .../st_geohash8.testcase | 7 + .../st_geohash9.testcase | 7 + .../st_makevalid1.testcase | 7 + .../st_makevalid2.testcase | 7 + .../st_makevalid3.testcase | 7 + .../st_makevalid4.testcase | 7 + .../st_makevalid5.testcase | 7 + .../st_makevalid6.testcase | 7 + .../st_makevalid7.testcase | 7 + .../st_makevalid8.testcase | 11 + .../st_makevaliddiscarded1.testcase | 7 + .../st_makevaliddiscarded2.testcase | 7 + .../st_makevaliddiscarded3.testcase | 7 + .../st_makevaliddiscarded4.testcase | 7 + .../st_makevaliddiscarded5.testcase | 7 + .../st_makevaliddiscarded6.testcase | 7 + .../st_makevaliddiscarded7.testcase | 7 + .../st_makevaliddiscarded8.testcase | 11 + .../sql_stmt_lwgeom_tests/st_node1.testcase | 7 + .../sql_stmt_lwgeom_tests/st_node2.testcase | 7 + .../sql_stmt_lwgeom_tests/st_node3.testcase | 7 + .../sql_stmt_lwgeom_tests/st_node4.testcase | 7 + .../sql_stmt_lwgeom_tests/st_node5.testcase | 7 + .../sql_stmt_lwgeom_tests/st_node6.testcase | 7 + .../sql_stmt_lwgeom_tests/st_node7.testcase | 7 + .../sql_stmt_lwgeom_tests/st_node8.testcase | 7 + .../sql_stmt_lwgeom_tests/st_node9.testcase | 7 + .../st_project1.testcase | 7 + .../st_project10.testcase | 7 + .../st_project11.testcase | 7 + .../st_project12.testcase | 7 + .../st_project13.testcase | 7 + .../st_project14.testcase | 7 + .../st_project2.testcase | 7 + .../st_project3.testcase | 7 + .../st_project4.testcase | 7 + .../st_project5.testcase | 7 + .../st_project6.testcase | 7 + .../st_project7.testcase | 7 + .../st_project8.testcase | 7 + .../st_project9.testcase | 7 + .../st_segmentize1.testcase | 7 + .../st_segmentize10.testcase | 7 + .../st_segmentize11.testcase | 7 + .../st_segmentize12.testcase | 7 + .../st_segmentize13.testcase | 7 + .../st_segmentize14.testcase | 7 + .../st_segmentize15.testcase | 7 + .../st_segmentize16.testcase | 7 + .../st_segmentize17.testcase | 7 + .../st_segmentize18.testcase | 7 + .../st_segmentize19.testcase | 7 + .../st_segmentize2.testcase | 7 + .../st_segmentize20.testcase | 7 + .../st_segmentize21.testcase | 7 + .../st_segmentize22.testcase | 7 + .../st_segmentize23.testcase | 7 + .../st_segmentize24.testcase | 7 + .../st_segmentize25.testcase | 7 + .../st_segmentize26.testcase | 7 + .../st_segmentize27.testcase | 7 + .../st_segmentize28.testcase | 7 + .../st_segmentize29.testcase | 7 + .../st_segmentize3.testcase | 7 + .../st_segmentize30.testcase | 7 + .../st_segmentize31.testcase | 7 + .../st_segmentize4.testcase | 7 + .../st_segmentize5.testcase | 7 + .../st_segmentize6.testcase | 7 + .../st_segmentize7.testcase | 7 + .../st_segmentize8.testcase | 7 + .../st_segmentize9.testcase | 7 + .../sql_stmt_lwgeom_tests/st_self1.testcase | 7 + .../sql_stmt_lwgeom_tests/st_self2.testcase | 7 + .../sql_stmt_lwgeom_tests/st_self3.testcase | 7 + .../sql_stmt_lwgeom_tests/st_self4.testcase | 7 + .../sql_stmt_lwgeom_tests/st_self5.testcase | 7 + .../sql_stmt_lwgeom_tests/st_self6.testcase | 7 + .../sql_stmt_lwgeom_tests/st_self7.testcase | 7 + .../sql_stmt_lwgeom_tests/st_self8.testcase | 7 + .../sql_stmt_lwgeom_tests/st_self9.testcase | 7 + .../st_snaptogrid1.testcase | 7 + .../st_snaptogrid10.testcase | 7 + .../st_snaptogrid11.testcase | 7 + .../st_snaptogrid12.testcase | 7 + .../st_snaptogrid13.testcase | 7 + .../st_snaptogrid14.testcase | 7 + .../st_snaptogrid15.testcase | 7 + .../st_snaptogrid16.testcase | 7 + .../st_snaptogrid17.testcase | 7 + .../st_snaptogrid18.testcase | 7 + .../st_snaptogrid19.testcase | 7 + .../st_snaptogrid2.testcase | 7 + .../st_snaptogrid20.testcase | 7 + .../st_snaptogrid21.testcase | 7 + .../st_snaptogrid22.testcase | 7 + .../st_snaptogrid23.testcase | 7 + .../st_snaptogrid24.testcase | 7 + .../st_snaptogrid25.testcase | 7 + .../st_snaptogrid26.testcase | 7 + .../st_snaptogrid27.testcase | 7 + .../st_snaptogrid28.testcase | 7 + .../st_snaptogrid29.testcase | 7 + .../st_snaptogrid3.testcase | 7 + .../st_snaptogrid30.testcase | 7 + .../st_snaptogrid31.testcase | 7 + .../st_snaptogrid32.testcase | 7 + .../st_snaptogrid33.testcase | 7 + .../st_snaptogrid34.testcase | 7 + .../st_snaptogrid35.testcase | 7 + .../st_snaptogrid36.testcase | 7 + .../st_snaptogrid37.testcase | 7 + .../st_snaptogrid38.testcase | 7 + .../st_snaptogrid39.testcase | 7 + .../st_snaptogrid4.testcase | 7 + .../st_snaptogrid40.testcase | 7 + .../st_snaptogrid41.testcase | 7 + .../st_snaptogrid42.testcase | 7 + .../st_snaptogrid43.testcase | 7 + .../st_snaptogrid44.testcase | 7 + .../st_snaptogrid45.testcase | 7 + .../st_snaptogrid46.testcase | 7 + .../st_snaptogrid47.testcase | 7 + .../st_snaptogrid48.testcase | 7 + .../st_snaptogrid49.testcase | 7 + .../st_snaptogrid5.testcase | 7 + .../st_snaptogrid50.testcase | 7 + .../st_snaptogrid51.testcase | 7 + .../st_snaptogrid52.testcase | 7 + .../st_snaptogrid53.testcase | 7 + .../st_snaptogrid54.testcase | 7 + .../st_snaptogrid55.testcase | 7 + .../st_snaptogrid56.testcase | 7 + .../st_snaptogrid57.testcase | 7 + .../st_snaptogrid58.testcase | 7 + .../st_snaptogrid59.testcase | 7 + .../st_snaptogrid6.testcase | 7 + .../st_snaptogrid60.testcase | 7 + .../st_snaptogrid61.testcase | 7 + .../st_snaptogrid62.testcase | 7 + .../st_snaptogrid63.testcase | 7 + .../st_snaptogrid64.testcase | 7 + .../st_snaptogrid65.testcase | 7 + .../st_snaptogrid7.testcase | 7 + .../st_snaptogrid8.testcase | 7 + .../st_snaptogrid9.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split1.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split10.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split11.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split12.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split13.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split14.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split15.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split16.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split17.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split18.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split19.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split2.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split20.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split21.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split22.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split23.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split24.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split25.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split26.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split27.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split28.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split29.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split3.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split30.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split31.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split32.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split33.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split34.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split35.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split36.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split37.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split38.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split39.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split4.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split40.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split41.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split42.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split43.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split44.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split45.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split46.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split47.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split48.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split49.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split5.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split6.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split7.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split8.testcase | 7 + .../sql_stmt_lwgeom_tests/st_split9.testcase | 7 + .../test/sql_stmt_mathsql_tests/Makefile.am | 102 + .../test/sql_stmt_mathsql_tests/Makefile.in | 538 + .../sql_stmt_mathsql_tests/acos-text.testcase | 7 + .../test/sql_stmt_mathsql_tests/acos.testcase | 7 + .../sql_stmt_mathsql_tests/acos10.testcase | 7 + .../sql_stmt_mathsql_tests/acos2.testcase | 7 + .../sql_stmt_mathsql_tests/acos20.testcase | 7 + .../sql_stmt_mathsql_tests/asin-text.testcase | 7 + .../sql_stmt_mathsql_tests/asin1.testcase | 7 + .../sql_stmt_mathsql_tests/asin10.testcase | 7 + .../sql_stmt_mathsql_tests/asin2.testcase | 7 + .../sql_stmt_mathsql_tests/asin20.testcase | 7 + .../sql_stmt_mathsql_tests/atan-text.testcase | 8 + .../sql_stmt_mathsql_tests/atan0.testcase | 7 + .../sql_stmt_mathsql_tests/atan00.testcase | 7 + .../sql_stmt_mathsql_tests/ceil-int.testcase | 7 + .../sql_stmt_mathsql_tests/ceilfloat.testcase | 7 + .../ceilfloat2.testcase | 7 + .../sql_stmt_mathsql_tests/ceilnull.testcase | 7 + .../sql_stmt_mathsql_tests/cos-text.testcase | 7 + .../test/sql_stmt_mathsql_tests/cos0.testcase | 7 + .../sql_stmt_mathsql_tests/cos00.testcase | 7 + .../sql_stmt_mathsql_tests/cot-text.testcase | 7 + .../test/sql_stmt_mathsql_tests/cot0.testcase | 7 + .../sql_stmt_mathsql_tests/cot00.testcase | 7 + .../sql_stmt_mathsql_tests/cotpi2.testcase | 7 + .../sql_stmt_mathsql_tests/degrees.testcase | 7 + .../sql_stmt_mathsql_tests/degrees45.testcase | 7 + .../degreestext.testcase | 7 + .../test/sql_stmt_mathsql_tests/exp0.testcase | 8 + .../sql_stmt_mathsql_tests/exp00.testcase | 8 + .../test/sql_stmt_mathsql_tests/exp1.testcase | 8 + .../sql_stmt_mathsql_tests/exp10.testcase | 8 + .../sql_stmt_mathsql_tests/expneg.testcase | 7 + .../sql_stmt_mathsql_tests/exptext.testcase | 8 + .../sql_stmt_mathsql_tests/floor32.testcase | 7 + .../sql_stmt_mathsql_tests/floorint.testcase | 7 + .../sql_stmt_mathsql_tests/floornull.testcase | 7 + .../sql_stmt_mathsql_tests/log10-0.0.testcase | 7 + .../log10-100.0.testcase | 7 + .../sql_stmt_mathsql_tests/log10-100.testcase | 7 + .../log10-text.testcase | 7 + .../sql_stmt_mathsql_tests/log2-0.0.testcase | 7 + .../sql_stmt_mathsql_tests/log2-0.testcase | 7 + .../sql_stmt_mathsql_tests/log2-4.0.testcase | 7 + .../sql_stmt_mathsql_tests/log2-4.testcase | 7 + .../sql_stmt_mathsql_tests/log2-text.testcase | 7 + .../sql_stmt_mathsql_tests/logn-text.testcase | 7 + .../sql_stmt_mathsql_tests/logn0.testcase | 7 + .../sql_stmt_mathsql_tests/logn00.testcase | 7 + .../sql_stmt_mathsql_tests/logn1.testcase | 7 + .../sql_stmt_mathsql_tests/logn10.testcase | 7 + .../sql_stmt_mathsql_tests/logn2-01.testcase | 7 + .../sql_stmt_mathsql_tests/logn2-02.testcase | 7 + .../sql_stmt_mathsql_tests/logn2-2.2.testcase | 7 + .../sql_stmt_mathsql_tests/logn2-4.2.testcase | 7 + .../logn2-4.2int.testcase | 7 + .../logn2-text.testcase | 7 + .../logn2-text2.testcase | 7 + .../logn2-text3.testcase | 7 + .../logn2-text4.testcase | 7 + .../test/sql_stmt_mathsql_tests/pi.testcase | 7 + .../pow-badarg1.testcase | 7 + .../pow-badarg2.testcase | 7 + .../sql_stmt_mathsql_tests/pow-edom.testcase | 7 + .../sql_stmt_mathsql_tests/pow-fp.testcase | 7 + .../sql_stmt_mathsql_tests/pow00-1.testcase | 7 + .../sql_stmt_mathsql_tests/pow00-2.testcase | 7 + .../sql_stmt_mathsql_tests/pow00.testcase | 7 + .../pow00double.testcase | 7 + .../sql_stmt_mathsql_tests/rad-text.testcase | 7 + .../test/sql_stmt_mathsql_tests/rad0.testcase | 7 + .../sql_stmt_mathsql_tests/radpi.testcase | 7 + .../sql_stmt_mathsql_tests/sign0.testcase | 7 + .../sql_stmt_mathsql_tests/sign00.testcase | 7 + .../sql_stmt_mathsql_tests/sign01.testcase | 7 + .../sql_stmt_mathsql_tests/sign10.testcase | 7 + .../sql_stmt_mathsql_tests/signeg.testcase | 7 + .../sql_stmt_mathsql_tests/signeg2.testcase | 7 + .../signeg2int.testcase | 7 + .../sql_stmt_mathsql_tests/signtext.testcase | 7 + .../sql_stmt_mathsql_tests/sin-pi.testcase | 7 + .../sql_stmt_mathsql_tests/sin-pi2.testcase | 7 + .../sql_stmt_mathsql_tests/sin-text.testcase | 7 + .../test/sql_stmt_mathsql_tests/sin0.testcase | 7 + .../sql_stmt_mathsql_tests/sin00.testcase | 7 + .../sql_stmt_mathsql_tests/sinpi.testcase | 7 + .../sql_stmt_mathsql_tests/sinpi2.testcase | 7 + .../sql_stmt_mathsql_tests/sqrt-1.testcase | 7 + .../sql_stmt_mathsql_tests/sqrt-10.testcase | 7 + .../sql_stmt_mathsql_tests/sqrt-64.testcase | 7 + .../sql_stmt_mathsql_tests/sqrt-640.testcase | 7 + .../sql_stmt_mathsql_tests/sqrt-text.testcase | 7 + .../sql_stmt_mathsql_tests/sqrt0.testcase | 7 + .../sql_stmt_mathsql_tests/sqrt00.testcase | 7 + .../sql_stmt_mathsql_tests/stddev.testcase | 21 + .../sql_stmt_mathsql_tests/tan-pi.testcase | 7 + .../sql_stmt_mathsql_tests/tan-text.testcase | 7 + .../test/sql_stmt_mathsql_tests/tan0.testcase | 7 + .../sql_stmt_mathsql_tests/tan00.testcase | 7 + .../sql_stmt_mathsql_tests/tanpi.testcase | 7 + .../sql_stmt_mathsql_tests/tanpi4.testcase | 7 + .../sql_stmt_mathsql_tests/variance.testcase | 21 + .../test/sql_stmt_proj_tests/Makefile.am | 72 + .../test/sql_stmt_proj_tests/Makefile.in | 508 + .../test/sql_stmt_proj_tests/askml1.testcase | 7 + .../test/sql_stmt_proj_tests/askml10.testcase | 7 + .../test/sql_stmt_proj_tests/askml11.testcase | 7 + .../test/sql_stmt_proj_tests/askml2.testcase | 7 + .../test/sql_stmt_proj_tests/askml3.testcase | 7 + .../test/sql_stmt_proj_tests/askml4.testcase | 8 + .../test/sql_stmt_proj_tests/askml5.testcase | 8 + .../test/sql_stmt_proj_tests/askml6.testcase | 8 + .../test/sql_stmt_proj_tests/askml7.testcase | 8 + .../test/sql_stmt_proj_tests/askml8.testcase | 8 + .../test/sql_stmt_proj_tests/askml9.testcase | 8 + .../sql_stmt_proj_tests/fromgml42.testcase | 7 + .../test/sql_stmt_proj_tests/output1.testcase | 18 + .../sql_stmt_proj_tests/output10.testcase | 19 + .../sql_stmt_proj_tests/output11.testcase | 19 + .../sql_stmt_proj_tests/output12.testcase | 19 + .../sql_stmt_proj_tests/output13.testcase | 19 + .../sql_stmt_proj_tests/output14.testcase | 19 + .../sql_stmt_proj_tests/output15.testcase | 19 + .../sql_stmt_proj_tests/output16.testcase | 19 + .../sql_stmt_proj_tests/output17.testcase | 19 + .../sql_stmt_proj_tests/output18.testcase | 19 + .../sql_stmt_proj_tests/output19.testcase | 19 + .../test/sql_stmt_proj_tests/output2.testcase | 20 + .../sql_stmt_proj_tests/output20.testcase | 19 + .../sql_stmt_proj_tests/output21.testcase | 19 + .../sql_stmt_proj_tests/output22.testcase | 19 + .../sql_stmt_proj_tests/output23.testcase | 19 + .../sql_stmt_proj_tests/output24.testcase | 19 + .../sql_stmt_proj_tests/output25.testcase | 19 + .../sql_stmt_proj_tests/output26.testcase | 19 + .../sql_stmt_proj_tests/output27.testcase | 19 + .../sql_stmt_proj_tests/output28.testcase | 19 + .../sql_stmt_proj_tests/output29.testcase | 19 + .../test/sql_stmt_proj_tests/output3.testcase | 20 + .../sql_stmt_proj_tests/output30.testcase | 19 + .../sql_stmt_proj_tests/output31.testcase | 19 + .../sql_stmt_proj_tests/output32.testcase | 19 + .../sql_stmt_proj_tests/output33.testcase | 19 + .../sql_stmt_proj_tests/output34.testcase | 19 + .../sql_stmt_proj_tests/output35.testcase | 19 + .../sql_stmt_proj_tests/output36.testcase | 19 + .../sql_stmt_proj_tests/output37.testcase | 19 + .../sql_stmt_proj_tests/output38.testcase | 8 + .../test/sql_stmt_proj_tests/output4.testcase | 20 + .../test/sql_stmt_proj_tests/output5.testcase | 20 + .../test/sql_stmt_proj_tests/output6.testcase | 20 + .../test/sql_stmt_proj_tests/output7.testcase | 19 + .../test/sql_stmt_proj_tests/output8.testcase | 18 + .../test/sql_stmt_proj_tests/output9.testcase | 18 + .../sql_stmt_proj_tests/transform1.testcase | 7 + .../sql_stmt_proj_tests/transform10.testcase | 7 + .../sql_stmt_proj_tests/transform11.testcase | 7 + .../sql_stmt_proj_tests/transform12.testcase | 7 + .../sql_stmt_proj_tests/transform13.testcase | 7 + .../sql_stmt_proj_tests/transform14.testcase | 7 + .../sql_stmt_proj_tests/transform15.testcase | 7 + .../sql_stmt_proj_tests/transform16.testcase | 7 + .../sql_stmt_proj_tests/transform17.testcase | 7 + .../sql_stmt_proj_tests/transform18.testcase | 7 + .../sql_stmt_proj_tests/transform19.testcase | 7 + .../sql_stmt_proj_tests/transform2.testcase | 7 + .../sql_stmt_proj_tests/transform20.testcase | 7 + .../sql_stmt_proj_tests/transform21.testcase | 7 + .../sql_stmt_proj_tests/transform3.testcase | 7 + .../sql_stmt_proj_tests/transform4.testcase | 7 + .../sql_stmt_proj_tests/transform5.testcase | 7 + .../sql_stmt_proj_tests/transform6.testcase | 7 + .../sql_stmt_proj_tests/transform7.testcase | 7 + .../sql_stmt_proj_tests/transform8.testcase | 7 + .../sql_stmt_proj_tests/transform9.testcase | 7 + .../test/sql_stmt_security_tests/Makefile.am | 15 + .../test/sql_stmt_security_tests/Makefile.in | 451 + .../blobfromfile1.testcase | 7 + .../blobfromfile2.testcase | 7 + .../blobfromfile3.testcase | 7 + .../blobfromfile4.testcase | 7 + .../blobtofile1.testcase | 7 + .../blobtofile2.testcase | 7 + .../blobtofile3.testcase | 7 + .../blobtofile4.testcase | 7 + .../sql_stmt_security_tests/isXblob1.testcase | 27 + .../sql_stmt_security_tests/isXblob2.testcase | 27 + .../sql_stmt_security_tests/isXblob3.testcase | 27 + .../sql_stmt_security_tests/isXblob4.testcase | 30 + .../sql_stmt_security_tests/isXblob8.testcase | 30 + .../sql_stmt_security_tests/isXblob9.testcase | 30 + .../test/sql_stmt_tests/DSCN0042.JPG | Bin 0 -> 156695 bytes .../test/sql_stmt_tests/DSC_1467.JPG | Bin 0 -> 121505 bytes .../La_folla_durante_il_Palio.jpg | Bin 0 -> 130368 bytes .../test/sql_stmt_tests/Makefile.am | 1912 + .../test/sql_stmt_tests/Makefile.in | 2348 ++ .../test/sql_stmt_tests/NumPoints.testcase | 7 + .../test/sql_stmt_tests/NumPoints2.testcase | 7 + .../test/sql_stmt_tests/NumPoints3.testcase | 7 + .../test/sql_stmt_tests/NumPoints4.testcase | 7 + .../test/sql_stmt_tests/NumPoints5.testcase | 7 + .../test/sql_stmt_tests/NumPoints6.testcase | 7 + .../test/sql_stmt_tests/NumPoints7.testcase | 7 + .../sql_stmt_tests/SridFromAuthCRS.testcase | 7 + .../sql_stmt_tests/SridFromAuthCRS2.testcase | 7 + .../sql_stmt_tests/SridFromAuthCRS3.testcase | 7 + .../sql_stmt_tests/SridFromAuthCRS4.testcase | 7 + .../sql_stmt_tests/SridFromAuthCRS5.testcase | 7 + .../sql_stmt_tests/SridFromAuthCRS6.testcase | 7 + .../test/sql_stmt_tests/addpoint1.testcase | 7 + .../test/sql_stmt_tests/addpoint10.testcase | 7 + .../test/sql_stmt_tests/addpoint11.testcase | 7 + .../test/sql_stmt_tests/addpoint12.testcase | 7 + .../test/sql_stmt_tests/addpoint13.testcase | 7 + .../test/sql_stmt_tests/addpoint14.testcase | 7 + .../test/sql_stmt_tests/addpoint15.testcase | 7 + .../test/sql_stmt_tests/addpoint16.testcase | 7 + .../test/sql_stmt_tests/addpoint17.testcase | 7 + .../test/sql_stmt_tests/addpoint18.testcase | 7 + .../test/sql_stmt_tests/addpoint19.testcase | 7 + .../test/sql_stmt_tests/addpoint2.testcase | 7 + .../test/sql_stmt_tests/addpoint20.testcase | 7 + .../test/sql_stmt_tests/addpoint21.testcase | 7 + .../test/sql_stmt_tests/addpoint22.testcase | 7 + .../test/sql_stmt_tests/addpoint23.testcase | 7 + .../test/sql_stmt_tests/addpoint24.testcase | 7 + .../test/sql_stmt_tests/addpoint25.testcase | 7 + .../test/sql_stmt_tests/addpoint26.testcase | 7 + .../test/sql_stmt_tests/addpoint27.testcase | 7 + .../test/sql_stmt_tests/addpoint28.testcase | 7 + .../test/sql_stmt_tests/addpoint3.testcase | 7 + .../test/sql_stmt_tests/addpoint4.testcase | 7 + .../test/sql_stmt_tests/addpoint5.testcase | 7 + .../test/sql_stmt_tests/addpoint6.testcase | 7 + .../test/sql_stmt_tests/addpoint7.testcase | 7 + .../test/sql_stmt_tests/addpoint8.testcase | 7 + .../test/sql_stmt_tests/addpoint9.testcase | 7 + .../test/sql_stmt_tests/asbinary1.testcase | 7 + .../test/sql_stmt_tests/asbinary10.testcase | 7 + .../test/sql_stmt_tests/asbinary11.testcase | 7 + .../test/sql_stmt_tests/asbinary12.testcase | 9 + .../test/sql_stmt_tests/asbinary13.testcase | 9 + .../test/sql_stmt_tests/asbinary14.testcase | 9 + .../test/sql_stmt_tests/asbinary15.testcase | 7 + .../test/sql_stmt_tests/asbinary16.testcase | 7 + .../test/sql_stmt_tests/asbinary17.testcase | 7 + .../test/sql_stmt_tests/asbinary2.testcase | 7 + .../test/sql_stmt_tests/asbinary3.testcase | 7 + .../test/sql_stmt_tests/asbinary4.testcase | 7 + .../test/sql_stmt_tests/asbinary5.testcase | 7 + .../test/sql_stmt_tests/asbinary6.testcase | 7 + .../test/sql_stmt_tests/asbinary7.testcase | 7 + .../test/sql_stmt_tests/asbinary8.testcase | 7 + .../test/sql_stmt_tests/asbinary9.testcase | 7 + .../test/sql_stmt_tests/asewkb1.testcase | 10 + .../test/sql_stmt_tests/asewkb10.testcase | 9 + .../test/sql_stmt_tests/asewkb11.testcase | 9 + .../test/sql_stmt_tests/asewkb12.testcase | 9 + .../test/sql_stmt_tests/asewkb13.testcase | 9 + .../test/sql_stmt_tests/asewkb14.testcase | 9 + .../test/sql_stmt_tests/asewkb15.testcase | 9 + .../test/sql_stmt_tests/asewkb16.testcase | 9 + .../test/sql_stmt_tests/asewkb17.testcase | 9 + .../test/sql_stmt_tests/asewkb2.testcase | 8 + .../test/sql_stmt_tests/asewkb3.testcase | 9 + .../test/sql_stmt_tests/asewkb4.testcase | 9 + .../test/sql_stmt_tests/asewkb5.testcase | 11 + .../test/sql_stmt_tests/asewkb6.testcase | 9 + .../test/sql_stmt_tests/asewkb7.testcase | 10 + .../test/sql_stmt_tests/asewkb8.testcase | 9 + .../test/sql_stmt_tests/asewkb9.testcase | 9 + .../test/sql_stmt_tests/asfgf1.testcase | 7 + .../test/sql_stmt_tests/asfgf2.testcase | 7 + .../test/sql_stmt_tests/asfgf3.testcase | 7 + .../test/sql_stmt_tests/asfgf4.testcase | 7 + .../test/sql_stmt_tests/asfgf5.testcase | 7 + .../test/sql_stmt_tests/asfgf6.testcase | 7 + .../test/sql_stmt_tests/asfgf7.testcase | 7 + .../test/sql_stmt_tests/asfgf8.testcase | 7 + .../test/sql_stmt_tests/asfgf9.testcase | 7 + .../test/sql_stmt_tests/asgeojson1.testcase | 7 + .../test/sql_stmt_tests/asgeojson2.testcase | 7 + .../test/sql_stmt_tests/asgeojson3.testcase | 7 + .../test/sql_stmt_tests/asgeojson4.testcase | 7 + .../test/sql_stmt_tests/asgeojson5.testcase | 7 + .../test/sql_stmt_tests/asgeojson6.testcase | 7 + .../test/sql_stmt_tests/asgeojson7.testcase | 7 + .../test/sql_stmt_tests/asgeojson8.testcase | 7 + .../test/sql_stmt_tests/asgml1.testcase | 7 + .../test/sql_stmt_tests/asgml10.testcase | 7 + .../test/sql_stmt_tests/asgml11.testcase | 7 + .../test/sql_stmt_tests/asgml2.testcase | 7 + .../test/sql_stmt_tests/asgml3.testcase | 7 + .../test/sql_stmt_tests/asgml4.testcase | 7 + .../test/sql_stmt_tests/asgml5.testcase | 7 + .../test/sql_stmt_tests/asgml6.testcase | 7 + .../test/sql_stmt_tests/asgml7.testcase | 7 + .../test/sql_stmt_tests/asgml8.testcase | 7 + .../test/sql_stmt_tests/asgml9.testcase | 7 + .../test/sql_stmt_tests/assvg1.testcase | 7 + .../test/sql_stmt_tests/assvg17.testcase | 7 + .../test/sql_stmt_tests/assvg18.testcase | 9 + .../test/sql_stmt_tests/assvg19.testcase | 9 + .../test/sql_stmt_tests/assvg2.testcase | 7 + .../test/sql_stmt_tests/assvg20.testcase | 9 + .../test/sql_stmt_tests/assvg21.testcase | 9 + .../test/sql_stmt_tests/assvg22.testcase | 9 + .../test/sql_stmt_tests/assvg23.testcase | 9 + .../test/sql_stmt_tests/assvg24.testcase | 9 + .../test/sql_stmt_tests/assvg25.testcase | 9 + .../test/sql_stmt_tests/assvg26.testcase | 9 + .../test/sql_stmt_tests/assvg3.testcase | 7 + .../test/sql_stmt_tests/assvg4.testcase | 7 + .../test/sql_stmt_tests/assvg5.testcase | 7 + .../test/sql_stmt_tests/assvg6.testcase | 7 + .../test/sql_stmt_tests/assvg7.testcase | 7 + .../test/sql_stmt_tests/assvg8.testcase | 7 + .../test/sql_stmt_tests/assvg9.testcase | 7 + .../test/sql_stmt_tests/aswkt-text.testcase | 7 + .../test/sql_stmt_tests/badEWKT1.testcase | 7 + .../test/sql_stmt_tests/badEWKT2.testcase | 7 + .../test/sql_stmt_tests/badEWKT3.testcase | 7 + .../test/sql_stmt_tests/badEWKT4.testcase | 7 + .../test/sql_stmt_tests/badEWKT5.testcase | 7 + .../test/sql_stmt_tests/badEWKT6.testcase | 7 + .../test/sql_stmt_tests/badEWKT7.testcase | 7 + .../test/sql_stmt_tests/badEWKT8.testcase | 7 + .../test/sql_stmt_tests/badGML1.testcase | 7 + .../test/sql_stmt_tests/badGML2.testcase | 7 + .../test/sql_stmt_tests/badGML3.testcase | 7 + .../test/sql_stmt_tests/badGML4.testcase | 7 + .../test/sql_stmt_tests/badGML5.testcase | 7 + .../test/sql_stmt_tests/badGML6.testcase | 7 + .../test/sql_stmt_tests/badGML7.testcase | 7 + .../test/sql_stmt_tests/badGeoJSON1.testcase | 7 + .../test/sql_stmt_tests/badGeoJSON2.testcase | 7 + .../test/sql_stmt_tests/badGeoJSON3.testcase | 7 + .../test/sql_stmt_tests/badGeoJSON4.testcase | 7 + .../test/sql_stmt_tests/badGeoJSON5.testcase | 7 + .../test/sql_stmt_tests/badGeoJSON6.testcase | 7 + .../test/sql_stmt_tests/badGeoJSON7.testcase | 7 + .../test/sql_stmt_tests/badKML1.testcase | 7 + .../test/sql_stmt_tests/badKML2.testcase | 7 + .../test/sql_stmt_tests/badKML3.testcase | 7 + .../test/sql_stmt_tests/badKML4.testcase | 7 + .../test/sql_stmt_tests/badKML5.testcase | 7 + .../test/sql_stmt_tests/badKML6.testcase | 7 + .../test/sql_stmt_tests/badKML7.testcase | 7 + .../test/sql_stmt_tests/badwkt1.testcase | 7 + .../test/sql_stmt_tests/badwkt2.testcase | 7 + .../test/sql_stmt_tests/badwkt3.testcase | 7 + .../test/sql_stmt_tests/badwkt4.testcase | 7 + .../test/sql_stmt_tests/badwkt5.testcase | 7 + .../test/sql_stmt_tests/badwkt6.testcase | 7 + .../test/sql_stmt_tests/badwkt7.testcase | 7 + .../test/sql_stmt_tests/badwkt8.testcase | 7 + .../test/sql_stmt_tests/badwkt9.testcase | 7 + .../sql_stmt_tests/buildcirclembr1.testcase | 7 + .../sql_stmt_tests/buildcirclembr10.testcase | 7 + .../sql_stmt_tests/buildcirclembr11.testcase | 7 + .../sql_stmt_tests/buildcirclembr12.testcase | 7 + .../sql_stmt_tests/buildcirclembr2.testcase | 7 + .../sql_stmt_tests/buildcirclembr3.testcase | 7 + .../sql_stmt_tests/buildcirclembr4.testcase | 7 + .../sql_stmt_tests/buildcirclembr5.testcase | 7 + .../sql_stmt_tests/buildcirclembr6.testcase | 7 + .../sql_stmt_tests/buildcirclembr7.testcase | 7 + .../sql_stmt_tests/buildcirclembr8.testcase | 7 + .../sql_stmt_tests/buildcirclembr9.testcase | 7 + .../test/sql_stmt_tests/buildmbr1.testcase | 7 + .../test/sql_stmt_tests/buildmbr10.testcase | 7 + .../test/sql_stmt_tests/buildmbr11.testcase | 7 + .../test/sql_stmt_tests/buildmbr12.testcase | 7 + .../test/sql_stmt_tests/buildmbr13.testcase | 7 + .../test/sql_stmt_tests/buildmbr14.testcase | 7 + .../test/sql_stmt_tests/buildmbr2.testcase | 7 + .../test/sql_stmt_tests/buildmbr3.testcase | 7 + .../test/sql_stmt_tests/buildmbr4.testcase | 7 + .../test/sql_stmt_tests/buildmbr5.testcase | 7 + .../test/sql_stmt_tests/buildmbr6.testcase | 7 + .../test/sql_stmt_tests/buildmbr7.testcase | 7 + .../test/sql_stmt_tests/buildmbr8.testcase | 7 + .../test/sql_stmt_tests/buildmbr9.testcase | 7 + .../test/sql_stmt_tests/casttoblob1.testcase | 7 + .../test/sql_stmt_tests/casttoblob10.testcase | 9 + .../test/sql_stmt_tests/casttoblob12.testcase | 9 + .../test/sql_stmt_tests/casttoblob13.testcase | 9 + .../test/sql_stmt_tests/casttoblob14.testcase | 9 + .../test/sql_stmt_tests/casttoblob2.testcase | 9 + .../test/sql_stmt_tests/casttoblob3.testcase | 9 + .../test/sql_stmt_tests/casttoblob4.testcase | 9 + .../test/sql_stmt_tests/casttoblob5.testcase | 9 + .../test/sql_stmt_tests/casttoblob6.testcase | 9 + .../test/sql_stmt_tests/casttoblob7.testcase | 9 + .../test/sql_stmt_tests/casttoblob8.testcase | 9 + .../test/sql_stmt_tests/casttoblob9.testcase | 9 + .../sql_stmt_tests/casttodouble1.testcase | 7 + .../sql_stmt_tests/casttodouble2.testcase | 7 + .../sql_stmt_tests/casttodouble3.testcase | 7 + .../sql_stmt_tests/casttodouble4.testcase | 10 + .../sql_stmt_tests/casttodouble5.testcase | 10 + .../sql_stmt_tests/casttodouble6.testcase | 10 + .../sql_stmt_tests/casttodouble7.testcase | 10 + .../casttogeometrycollection.testcase | 7 + .../casttogeometrycollection2.testcase | 7 + .../casttogeometrycollection3.testcase | 7 + .../casttogeometrycollection4.testcase | 7 + .../casttogeometrycollection5.testcase | 7 + .../casttogeometrycollection6.testcase | 7 + .../test/sql_stmt_tests/casttoint1.testcase | 7 + .../test/sql_stmt_tests/casttoint2.testcase | 7 + .../test/sql_stmt_tests/casttoint3.testcase | 7 + .../test/sql_stmt_tests/casttoint4.testcase | 10 + .../test/sql_stmt_tests/casttoint5.testcase | 10 + .../test/sql_stmt_tests/casttoint6.testcase | 10 + .../test/sql_stmt_tests/casttoint7.testcase | 10 + .../sql_stmt_tests/casttolinestring1.testcase | 7 + .../sql_stmt_tests/casttolinestring2.testcase | 7 + .../sql_stmt_tests/casttolinestring3.testcase | 8 + .../sql_stmt_tests/casttolinestring4.testcase | 8 + .../sql_stmt_tests/casttolinestring5.testcase | 8 + .../sql_stmt_tests/casttolinestring6.testcase | 9 + .../sql_stmt_tests/casttolinestring7.testcase | 9 + .../sql_stmt_tests/casttolinestring8.testcase | 9 + .../test/sql_stmt_tests/casttomulti1.testcase | 7 + .../sql_stmt_tests/casttomulti11.testcase | 7 + .../test/sql_stmt_tests/casttomulti2.testcase | 7 + .../test/sql_stmt_tests/casttomulti3.testcase | 7 + .../test/sql_stmt_tests/casttomulti4.testcase | 7 + .../test/sql_stmt_tests/casttomulti5.testcase | 7 + .../test/sql_stmt_tests/casttomulti6.testcase | 7 + .../test/sql_stmt_tests/casttomulti7.testcase | 7 + .../test/sql_stmt_tests/casttomulti8.testcase | 7 + .../casttomultilinestring1.testcase | 7 + .../casttomultilinestring2.testcase | 7 + .../casttomultilinestring3.testcase | 7 + .../casttomultilinestring4.testcase | 7 + .../casttomultilinestring5.testcase | 7 + .../casttomultilinestring6.testcase | 9 + .../casttomultilinestring7.testcase | 9 + .../sql_stmt_tests/casttomultipoint1.testcase | 7 + .../sql_stmt_tests/casttomultipoint2.testcase | 7 + .../sql_stmt_tests/casttomultipoint3.testcase | 7 + .../sql_stmt_tests/casttomultipoint4.testcase | 7 + .../sql_stmt_tests/casttomultipoint5.testcase | 7 + .../sql_stmt_tests/casttomultipoint6.testcase | 7 + .../sql_stmt_tests/casttomultipoint7.testcase | 7 + .../sql_stmt_tests/casttomultipoint8.testcase | 7 + .../sql_stmt_tests/casttomultipoint9.testcase | 7 + .../casttomultipolygon1.testcase | 7 + .../casttomultipolygon2.testcase | 7 + .../casttomultipolygon3.testcase | 7 + .../casttomultipolygon4.testcase | 7 + .../casttomultipolygon5.testcase | 7 + .../test/sql_stmt_tests/casttopoint1.testcase | 7 + .../test/sql_stmt_tests/casttopoint2.testcase | 7 + .../test/sql_stmt_tests/casttopoint3.testcase | 7 + .../test/sql_stmt_tests/casttopoint4.testcase | 7 + .../test/sql_stmt_tests/casttopoint5.testcase | 7 + .../test/sql_stmt_tests/casttopoint6.testcase | 7 + .../test/sql_stmt_tests/casttopoint7.testcase | 7 + .../test/sql_stmt_tests/casttopoint8.testcase | 7 + .../test/sql_stmt_tests/casttopoly1.testcase | 7 + .../test/sql_stmt_tests/casttopoly2.testcase | 7 + .../test/sql_stmt_tests/casttopoly3.testcase | 7 + .../test/sql_stmt_tests/casttopoly4.testcase | 7 + .../test/sql_stmt_tests/casttopoly5.testcase | 7 + .../test/sql_stmt_tests/casttopoly6.testcase | 7 + .../test/sql_stmt_tests/casttopoly7.testcase | 7 + .../test/sql_stmt_tests/casttopoly8.testcase | 9 + .../sql_stmt_tests/casttosingle1.testcase | 7 + .../sql_stmt_tests/casttosingle10.testcase | 7 + .../sql_stmt_tests/casttosingle12.testcase | 7 + .../sql_stmt_tests/casttosingle2.testcase | 7 + .../sql_stmt_tests/casttosingle3.testcase | 7 + .../sql_stmt_tests/casttosingle4.testcase | 7 + .../sql_stmt_tests/casttosingle5.testcase | 7 + .../sql_stmt_tests/casttosingle6.testcase | 7 + .../sql_stmt_tests/casttosingle7.testcase | 7 + .../sql_stmt_tests/casttosingle8.testcase | 7 + .../sql_stmt_tests/casttosingle9.testcase | 8 + .../test/sql_stmt_tests/casttotext1.testcase | 7 + .../test/sql_stmt_tests/casttotext10.testcase | 11 + .../test/sql_stmt_tests/casttotext11.testcase | 9 + .../test/sql_stmt_tests/casttotext12.testcase | 9 + .../test/sql_stmt_tests/casttotext13.testcase | 9 + .../test/sql_stmt_tests/casttotext14.testcase | 9 + .../test/sql_stmt_tests/casttotext15.testcase | 11 + .../test/sql_stmt_tests/casttotext2.testcase | 7 + .../test/sql_stmt_tests/casttotext3.testcase | 9 + .../test/sql_stmt_tests/casttotext4.testcase | 11 + .../test/sql_stmt_tests/casttotext5.testcase | 11 + .../test/sql_stmt_tests/casttotext6.testcase | 9 + .../test/sql_stmt_tests/casttotext7.testcase | 9 + .../test/sql_stmt_tests/casttotext8.testcase | 9 + .../test/sql_stmt_tests/casttotext9.testcase | 9 + .../test/sql_stmt_tests/casttoxy1.testcase | 7 + .../test/sql_stmt_tests/casttoxy2.testcase | 7 + .../test/sql_stmt_tests/casttoxy3.testcase | 7 + .../test/sql_stmt_tests/casttoxym1.testcase | 7 + .../test/sql_stmt_tests/casttoxym2.testcase | 7 + .../test/sql_stmt_tests/casttoxym3.testcase | 7 + .../test/sql_stmt_tests/casttoxym4.testcase | 7 + .../test/sql_stmt_tests/casttoxym5.testcase | 7 + .../test/sql_stmt_tests/casttoxym6.testcase | 7 + .../test/sql_stmt_tests/casttoxyz1.testcase | 7 + .../test/sql_stmt_tests/casttoxyz2.testcase | 7 + .../test/sql_stmt_tests/casttoxyz3.testcase | 7 + .../test/sql_stmt_tests/casttoxyz4.testcase | 7 + .../test/sql_stmt_tests/casttoxyz5.testcase | 7 + .../test/sql_stmt_tests/casttoxyz6.testcase | 7 + .../test/sql_stmt_tests/casttoxyzm1.testcase | 7 + .../test/sql_stmt_tests/casttoxyzm2.testcase | 7 + .../test/sql_stmt_tests/casttoxyzm3.testcase | 7 + .../test/sql_stmt_tests/casttoxyzm4.testcase | 7 + .../test/sql_stmt_tests/casttoxyzm5.testcase | 7 + .../test/sql_stmt_tests/casttoxyzm6.testcase | 7 + .../test/sql_stmt_tests/ch_m.testcase | 7 + .../checkspatialmetadata1.testcase | 7 + .../checkspatialmetadata2.testcase | 7 + .../checkspatialmetadata3.testcase | 7 + .../checkspatialmetadata4.testcase | 7 + .../checkspatialmetadata5.testcase | 7 + .../test/sql_stmt_tests/cm_m.testcase | 7 + .../test/sql_stmt_tests/collect1.testcase | 8 + .../test/sql_stmt_tests/collect10.testcase | 8 + .../test/sql_stmt_tests/collect11.testcase | 8 + .../test/sql_stmt_tests/collect12.testcase | 8 + .../test/sql_stmt_tests/collect13.testcase | 8 + .../test/sql_stmt_tests/collect14.testcase | 8 + .../test/sql_stmt_tests/collect15.testcase | 8 + .../test/sql_stmt_tests/collect16.testcase | 8 + .../test/sql_stmt_tests/collect17.testcase | 8 + .../test/sql_stmt_tests/collect18.testcase | 8 + .../test/sql_stmt_tests/collect19.testcase | 8 + .../test/sql_stmt_tests/collect2.testcase | 8 + .../test/sql_stmt_tests/collect20.testcase | 8 + .../test/sql_stmt_tests/collect21.testcase | 8 + .../test/sql_stmt_tests/collect23.testcase | 8 + .../test/sql_stmt_tests/collect24.testcase | 8 + .../test/sql_stmt_tests/collect25.testcase | 8 + .../test/sql_stmt_tests/collect26.testcase | 8 + .../test/sql_stmt_tests/collect27.testcase | 8 + .../test/sql_stmt_tests/collect28.testcase | 8 + .../test/sql_stmt_tests/collect29.testcase | 8 + .../test/sql_stmt_tests/collect3.testcase | 8 + .../test/sql_stmt_tests/collect30.testcase | 8 + .../test/sql_stmt_tests/collect31.testcase | 8 + .../test/sql_stmt_tests/collect32.testcase | 8 + .../test/sql_stmt_tests/collect33.testcase | 8 + .../test/sql_stmt_tests/collect34.testcase | 8 + .../test/sql_stmt_tests/collect35.testcase | 8 + .../test/sql_stmt_tests/collect36.testcase | 8 + .../test/sql_stmt_tests/collect37.testcase | 8 + .../test/sql_stmt_tests/collect38.testcase | 8 + .../test/sql_stmt_tests/collect39.testcase | 8 + .../test/sql_stmt_tests/collect4.testcase | 8 + .../test/sql_stmt_tests/collect40.testcase | 8 + .../test/sql_stmt_tests/collect41.testcase | 8 + .../test/sql_stmt_tests/collect42.testcase | 8 + .../test/sql_stmt_tests/collect43.testcase | 8 + .../test/sql_stmt_tests/collect44.testcase | 8 + .../test/sql_stmt_tests/collect45.testcase | 8 + .../test/sql_stmt_tests/collect46.testcase | 8 + .../test/sql_stmt_tests/collect47.testcase | 8 + .../test/sql_stmt_tests/collect48.testcase | 8 + .../test/sql_stmt_tests/collect49.testcase | 8 + .../test/sql_stmt_tests/collect5.testcase | 8 + .../test/sql_stmt_tests/collect50.testcase | 8 + .../test/sql_stmt_tests/collect51.testcase | 8 + .../test/sql_stmt_tests/collect52.testcase | 8 + .../test/sql_stmt_tests/collect53.testcase | 8 + .../test/sql_stmt_tests/collect54.testcase | 8 + .../test/sql_stmt_tests/collect55.testcase | 8 + .../test/sql_stmt_tests/collect56.testcase | 8 + .../test/sql_stmt_tests/collect57.testcase | 7 + .../test/sql_stmt_tests/collect58.testcase | 7 + .../test/sql_stmt_tests/collect59.testcase | 7 + .../test/sql_stmt_tests/collect6.testcase | 7 + .../test/sql_stmt_tests/collect7.testcase | 7 + .../test/sql_stmt_tests/collect8.testcase | 8 + .../test/sql_stmt_tests/collect9.testcase | 8 + .../sql_stmt_tests/collectextract1.testcase | 8 + .../sql_stmt_tests/collectextract10.testcase | 8 + .../sql_stmt_tests/collectextract11.testcase | 8 + .../sql_stmt_tests/collectextract12.testcase | 8 + .../sql_stmt_tests/collectextract13.testcase | 8 + .../sql_stmt_tests/collectextract14.testcase | 8 + .../sql_stmt_tests/collectextract15.testcase | 9 + .../sql_stmt_tests/collectextract16.testcase | 9 + .../sql_stmt_tests/collectextract17.testcase | 9 + .../sql_stmt_tests/collectextract18.testcase | 9 + .../sql_stmt_tests/collectextract19.testcase | 9 + .../sql_stmt_tests/collectextract2.testcase | 8 + .../sql_stmt_tests/collectextract20.testcase | 9 + .../sql_stmt_tests/collectextract21.testcase | 9 + .../sql_stmt_tests/collectextract22.testcase | 9 + .../sql_stmt_tests/collectextract23.testcase | 7 + .../sql_stmt_tests/collectextract24.testcase | 7 + .../sql_stmt_tests/collectextract25.testcase | 7 + .../sql_stmt_tests/collectextract3.testcase | 8 + .../sql_stmt_tests/collectextract4.testcase | 8 + .../sql_stmt_tests/collectextract5.testcase | 8 + .../sql_stmt_tests/collectextract6.testcase | 8 + .../sql_stmt_tests/collectextract7.testcase | 8 + .../sql_stmt_tests/collectextract8.testcase | 8 + .../sql_stmt_tests/collectextract9.testcase | 8 + .../sql_stmt_tests/compressgeometry1.testcase | 7 + .../compressgeometry10.testcase | 9 + .../compressgeometry11.testcase | 11 + .../compressgeometry12.testcase | 8 + .../compressgeometry13.testcase | 9 + .../compressgeometry14.testcase | 8 + .../compressgeometry15.testcase | 10 + .../compressgeometry17.testcase | 7 + .../compressgeometry18.testcase | 7 + .../compressgeometry19.testcase | 7 + .../sql_stmt_tests/compressgeometry2.testcase | 7 + .../compressgeometry20.testcase | 7 + .../compressgeometry21.testcase | 8 + .../compressgeometry22.testcase | 9 + .../compressgeometry23.testcase | 7 + .../compressgeometry24.testcase | 7 + .../compressgeometry25.testcase | 8 + .../compressgeometry26.testcase | 7 + .../compressgeometry27.testcase | 7 + .../compressgeometry28.testcase | 7 + .../compressgeometry29.testcase | 7 + .../sql_stmt_tests/compressgeometry3.testcase | 7 + .../compressgeometry30.testcase | 7 + .../compressgeometry31.testcase | 7 + .../compressgeometry32.testcase | 7 + .../compressgeometry33.testcase | 7 + .../compressgeometry34.testcase | 7 + .../compressgeometry35.testcase | 7 + .../compressgeometry36.testcase | 7 + .../compressgeometry37.testcase | 7 + .../compressgeometry38.testcase | 7 + .../compressgeometry39.testcase | 7 + .../sql_stmt_tests/compressgeometry4.testcase | 7 + .../compressgeometry40.testcase | 7 + .../compressgeometry41.testcase | 7 + .../compressgeometry42.testcase | 7 + .../compressgeometry43.testcase | 7 + .../compressgeometry44.testcase | 7 + .../compressgeometry45.testcase | 7 + .../compressgeometry46.testcase | 7 + .../compressgeometry47.testcase | 7 + .../compressgeometry48.testcase | 7 + .../compressgeometry49.testcase | 7 + .../sql_stmt_tests/compressgeometry5.testcase | 8 + .../compressgeometry50.testcase | 7 + .../compressgeometry51.testcase | 7 + .../compressgeometry52.testcase | 7 + .../compressgeometry53.testcase | 7 + .../compressgeometry54.testcase | 7 + .../compressgeometry55.testcase | 7 + .../compressgeometry56.testcase | 7 + .../compressgeometry57.testcase | 7 + .../compressgeometry58.testcase | 7 + .../compressgeometry59.testcase | 7 + .../sql_stmt_tests/compressgeometry6.testcase | 9 + .../compressgeometry60.testcase | 7 + .../compressgeometry61.testcase | 7 + .../compressgeometry62.testcase | 7 + .../compressgeometry63.testcase | 7 + .../compressgeometry64.testcase | 7 + .../compressgeometry65.testcase | 7 + .../compressgeometry66.testcase | 7 + .../compressgeometry67.testcase | 7 + .../compressgeometry68.testcase | 7 + .../compressgeometry69.testcase | 7 + .../sql_stmt_tests/compressgeometry7.testcase | 10 + .../sql_stmt_tests/compressgeometry8.testcase | 8 + .../sql_stmt_tests/compressgeometry9.testcase | 8 + .../createrastercoverages.testcase | 8 + .../test/sql_stmt_tests/createuuid1.testcase | 7 + .../test/sql_stmt_tests/dimension1.testcase | 7 + .../test/sql_stmt_tests/dimension2.testcase | 7 + .../test/sql_stmt_tests/dimension3.testcase | 7 + .../test/sql_stmt_tests/dimension4.testcase | 7 + .../test/sql_stmt_tests/dimension5.testcase | 7 + .../test/sql_stmt_tests/dimension6.testcase | 7 + .../test/sql_stmt_tests/dimension7.testcase | 7 + .../test/sql_stmt_tests/dimension8.testcase | 7 + .../test/sql_stmt_tests/dissolve1.testcase | 9 + .../test/sql_stmt_tests/dissolve10.testcase | 9 + .../test/sql_stmt_tests/dissolve11.testcase | 9 + .../test/sql_stmt_tests/dissolve12.testcase | 9 + .../test/sql_stmt_tests/dissolve13.testcase | 9 + .../test/sql_stmt_tests/dissolve14.testcase | 9 + .../test/sql_stmt_tests/dissolve15.testcase | 9 + .../test/sql_stmt_tests/dissolve16.testcase | 9 + .../test/sql_stmt_tests/dissolve17.testcase | 9 + .../test/sql_stmt_tests/dissolve18.testcase | 9 + .../test/sql_stmt_tests/dissolve19.testcase | 9 + .../test/sql_stmt_tests/dissolve2.testcase | 7 + .../test/sql_stmt_tests/dissolve20.testcase | 9 + .../test/sql_stmt_tests/dissolve21.testcase | 9 + .../test/sql_stmt_tests/dissolve22.testcase | 9 + .../test/sql_stmt_tests/dissolve23.testcase | 9 + .../test/sql_stmt_tests/dissolve24.testcase | 9 + .../test/sql_stmt_tests/dissolve25.testcase | 9 + .../test/sql_stmt_tests/dissolve26.testcase | 9 + .../test/sql_stmt_tests/dissolve27.testcase | 9 + .../test/sql_stmt_tests/dissolve28.testcase | 9 + .../test/sql_stmt_tests/dissolve29.testcase | 9 + .../test/sql_stmt_tests/dissolve3.testcase | 7 + .../test/sql_stmt_tests/dissolve30.testcase | 9 + .../test/sql_stmt_tests/dissolve4.testcase | 7 + .../test/sql_stmt_tests/dissolve5.testcase | 7 + .../test/sql_stmt_tests/dissolve6.testcase | 7 + .../test/sql_stmt_tests/dissolve7.testcase | 7 + .../test/sql_stmt_tests/dissolve8.testcase | 9 + .../test/sql_stmt_tests/dissolve9.testcase | 9 + .../test/sql_stmt_tests/dm_m.testcase | 7 + .../test/sql_stmt_tests/emptyfile.txt | 0 .../test/sql_stmt_tests/endpoint1.testcase | 7 + .../test/sql_stmt_tests/envelope1.testcase | 7 + .../test/sql_stmt_tests/envelope2.testcase | 7 + .../test/sql_stmt_tests/envelope3.testcase | 7 + .../test/sql_stmt_tests/envelope4.testcase | 7 + .../test/sql_stmt_tests/envelope5.testcase | 7 + .../test/sql_stmt_tests/envelope6.testcase | 7 + .../test/sql_stmt_tests/envelope7.testcase | 7 + .../sql_stmt_tests/envintersects1.testcase | 7 + .../sql_stmt_tests/envintersects10.testcase | 7 + .../sql_stmt_tests/envintersects2.testcase | 7 + .../sql_stmt_tests/envintersects3.testcase | 7 + .../sql_stmt_tests/envintersects4.testcase | 7 + .../sql_stmt_tests/envintersects5.testcase | 7 + .../sql_stmt_tests/envintersects6.testcase | 7 + .../sql_stmt_tests/envintersects7.testcase | 7 + .../sql_stmt_tests/envintersects8.testcase | 7 + .../sql_stmt_tests/envintersects9.testcase | 7 + .../test/sql_stmt_tests/ewkb1.testcase | 7 + .../test/sql_stmt_tests/ewkb10.testcase | 7 + .../test/sql_stmt_tests/ewkb11.testcase | 7 + .../test/sql_stmt_tests/ewkb12.testcase | 7 + .../test/sql_stmt_tests/ewkb2.testcase | 7 + .../test/sql_stmt_tests/ewkb3.testcase | 7 + .../test/sql_stmt_tests/ewkb4.testcase | 7 + .../test/sql_stmt_tests/ewkb5.testcase | 7 + .../test/sql_stmt_tests/ewkb6.testcase | 7 + .../test/sql_stmt_tests/ewkb7.testcase | 7 + .../test/sql_stmt_tests/ewkb8.testcase | 7 + .../test/sql_stmt_tests/ewkb9.testcase | 7 + .../test/sql_stmt_tests/expand1.testcase | 7 + .../test/sql_stmt_tests/expand2.testcase | 7 + .../test/sql_stmt_tests/expand3.testcase | 7 + .../test/sql_stmt_tests/expand4.testcase | 7 + .../test/sql_stmt_tests/expand5.testcase | 7 + .../test/sql_stmt_tests/expand6.testcase | 7 + .../test/sql_stmt_tests/expand7.testcase | 7 + .../test/sql_stmt_tests/extent1.testcase | 8 + .../extractmultilinestring1.testcase | 7 + .../extractmultilinestring2.testcase | 7 + .../extractmultilinestring3.testcase | 7 + .../extractmultipoint1.testcase | 7 + .../extractmultipoint2.testcase | 7 + .../extractmultipoint3.testcase | 7 + .../extractmultipolygon1.testcase | 7 + .../extractmultipolygon2.testcase | 7 + .../extractmultipolygon3.testcase | 7 + .../test/sql_stmt_tests/fath_m.testcase | 7 + .../test/sql_stmt_tests/fdo-wkb.sqlite_RO | Bin 0 -> 5120 bytes .../test/sql_stmt_tests/fdo_ogr1.testcase | 7 + .../test/sql_stmt_tests/fdo_ogr2.testcase | 7 + .../test/sql_stmt_tests/forcenull1.testcase | 7 + .../test/sql_stmt_tests/forcenull10.testcase | 7 + .../test/sql_stmt_tests/forcenull11.testcase | 7 + .../test/sql_stmt_tests/forcenull12.testcase | 7 + .../test/sql_stmt_tests/forcenull13.testcase | 7 + .../test/sql_stmt_tests/forcenull14.testcase | 7 + .../test/sql_stmt_tests/forcenull15.testcase | 7 + .../test/sql_stmt_tests/forcenull16.testcase | 7 + .../test/sql_stmt_tests/forcenull17.testcase | 7 + .../test/sql_stmt_tests/forcenull18.testcase | 7 + .../test/sql_stmt_tests/forcenull19.testcase | 7 + .../test/sql_stmt_tests/forcenull2.testcase | 7 + .../test/sql_stmt_tests/forcenull20.testcase | 7 + .../test/sql_stmt_tests/forcenull21.testcase | 7 + .../test/sql_stmt_tests/forcenull22.testcase | 7 + .../test/sql_stmt_tests/forcenull23.testcase | 7 + .../test/sql_stmt_tests/forcenull24.testcase | 7 + .../test/sql_stmt_tests/forcenull25.testcase | 7 + .../test/sql_stmt_tests/forcenull26.testcase | 7 + .../test/sql_stmt_tests/forcenull27.testcase | 7 + .../test/sql_stmt_tests/forcenull28.testcase | 7 + .../test/sql_stmt_tests/forcenull3.testcase | 7 + .../test/sql_stmt_tests/forcenull4.testcase | 7 + .../test/sql_stmt_tests/forcenull5.testcase | 7 + .../test/sql_stmt_tests/forcenull6.testcase | 7 + .../test/sql_stmt_tests/forcenull7.testcase | 7 + .../test/sql_stmt_tests/forcenull8.testcase | 7 + .../test/sql_stmt_tests/forcenull9.testcase | 7 + .../test/sql_stmt_tests/fromWkb1.testcase | 8 + .../test/sql_stmt_tests/fromWkb10.testcase | 7 + .../test/sql_stmt_tests/fromWkb11.testcase | 7 + .../test/sql_stmt_tests/fromWkb12.testcase | 7 + .../test/sql_stmt_tests/fromWkb13.testcase | 7 + .../test/sql_stmt_tests/fromWkb14.testcase | 7 + .../test/sql_stmt_tests/fromWkb15.testcase | 8 + .../test/sql_stmt_tests/fromWkb16.testcase | 8 + .../test/sql_stmt_tests/fromWkb17.testcase | 8 + .../test/sql_stmt_tests/fromWkb18.testcase | 8 + .../test/sql_stmt_tests/fromWkb19.testcase | 8 + .../test/sql_stmt_tests/fromWkb2.testcase | 7 + .../test/sql_stmt_tests/fromWkb20.testcase | 8 + .../test/sql_stmt_tests/fromWkb21.testcase | 8 + .../test/sql_stmt_tests/fromWkb22.testcase | 9 + .../test/sql_stmt_tests/fromWkb23.testcase | 11 + .../test/sql_stmt_tests/fromWkb24.testcase | 9 + .../test/sql_stmt_tests/fromWkb25.testcase | 9 + .../test/sql_stmt_tests/fromWkb26.testcase | 9 + .../test/sql_stmt_tests/fromWkb3.testcase | 7 + .../test/sql_stmt_tests/fromWkb4.testcase | 7 + .../test/sql_stmt_tests/fromWkb5.testcase | 8 + .../test/sql_stmt_tests/fromWkb6.testcase | 7 + .../test/sql_stmt_tests/fromWkb7.testcase | 8 + .../test/sql_stmt_tests/fromWkb8.testcase | 7 + .../test/sql_stmt_tests/fromWkb9.testcase | 8 + .../test/sql_stmt_tests/fromdms1.testcase | 10 + .../test/sql_stmt_tests/fromdms2.testcase | 10 + .../test/sql_stmt_tests/fromdms3.testcase | 10 + .../test/sql_stmt_tests/fromdms4.testcase | 10 + .../test/sql_stmt_tests/fromdms5.testcase | 10 + .../test/sql_stmt_tests/fromdms6.testcase | 10 + .../test/sql_stmt_tests/fromdms7.testcase | 10 + .../test/sql_stmt_tests/fromdms8.testcase | 11 + .../test/sql_stmt_tests/fromdms9.testcase | 9 + .../test/sql_stmt_tests/fromewkt1.testcase | 7 + .../test/sql_stmt_tests/fromewkt10.testcase | 7 + .../test/sql_stmt_tests/fromewkt11.testcase | 7 + .../test/sql_stmt_tests/fromewkt12.testcase | 7 + .../test/sql_stmt_tests/fromewkt13.testcase | 7 + .../test/sql_stmt_tests/fromewkt14.testcase | 7 + .../test/sql_stmt_tests/fromewkt15.testcase | 7 + .../test/sql_stmt_tests/fromewkt16.testcase | 7 + .../test/sql_stmt_tests/fromewkt17.testcase | 7 + .../test/sql_stmt_tests/fromewkt18.testcase | 7 + .../test/sql_stmt_tests/fromewkt19.testcase | 7 + .../test/sql_stmt_tests/fromewkt2.testcase | 7 + .../test/sql_stmt_tests/fromewkt20.testcase | 7 + .../test/sql_stmt_tests/fromewkt22.testcase | 7 + .../test/sql_stmt_tests/fromewkt23.testcase | 7 + .../test/sql_stmt_tests/fromewkt24.testcase | 7 + .../test/sql_stmt_tests/fromewkt25.testcase | 7 + .../test/sql_stmt_tests/fromewkt26.testcase | 7 + .../test/sql_stmt_tests/fromewkt27.testcase | 7 + .../test/sql_stmt_tests/fromewkt28.testcase | 7 + .../test/sql_stmt_tests/fromewkt29.testcase | 7 + .../test/sql_stmt_tests/fromewkt3.testcase | 7 + .../test/sql_stmt_tests/fromewkt30.testcase | 7 + .../test/sql_stmt_tests/fromewkt31.testcase | 7 + .../test/sql_stmt_tests/fromewkt32.testcase | 7 + .../test/sql_stmt_tests/fromewkt33.testcase | 7 + .../test/sql_stmt_tests/fromewkt34.testcase | 7 + .../test/sql_stmt_tests/fromewkt35.testcase | 7 + .../test/sql_stmt_tests/fromewkt36.testcase | 7 + .../test/sql_stmt_tests/fromewkt37.testcase | 7 + .../test/sql_stmt_tests/fromewkt38.testcase | 7 + .../test/sql_stmt_tests/fromewkt39.testcase | 7 + .../test/sql_stmt_tests/fromewkt4.testcase | 7 + .../test/sql_stmt_tests/fromewkt5.testcase | 7 + .../test/sql_stmt_tests/fromewkt6.testcase | 7 + .../test/sql_stmt_tests/fromewkt7.testcase | 7 + .../test/sql_stmt_tests/fromewkt8.testcase | 7 + .../test/sql_stmt_tests/fromewkt9.testcase | 7 + .../test/sql_stmt_tests/fromgeojson1.testcase | 7 + .../sql_stmt_tests/fromgeojson10.testcase | 7 + .../sql_stmt_tests/fromgeojson11.testcase | 7 + .../sql_stmt_tests/fromgeojson12.testcase | 7 + .../sql_stmt_tests/fromgeojson13.testcase | 7 + .../sql_stmt_tests/fromgeojson14.testcase | 7 + .../sql_stmt_tests/fromgeojson15.testcase | 7 + .../sql_stmt_tests/fromgeojson16.testcase | 7 + .../sql_stmt_tests/fromgeojson17.testcase | 8 + .../sql_stmt_tests/fromgeojson18.testcase | 8 + .../sql_stmt_tests/fromgeojson19.testcase | 9 + .../test/sql_stmt_tests/fromgeojson2.testcase | 7 + .../sql_stmt_tests/fromgeojson20.testcase | 7 + .../sql_stmt_tests/fromgeojson21.testcase | 7 + .../sql_stmt_tests/fromgeojson22.testcase | 8 + .../sql_stmt_tests/fromgeojson23.testcase | 8 + .../sql_stmt_tests/fromgeojson24.testcase | 9 + .../sql_stmt_tests/fromgeojson25.testcase | 8 + .../sql_stmt_tests/fromgeojson26.testcase | 8 + .../sql_stmt_tests/fromgeojson27.testcase | 7 + .../sql_stmt_tests/fromgeojson28.testcase | 8 + .../sql_stmt_tests/fromgeojson29.testcase | 7 + .../test/sql_stmt_tests/fromgeojson3.testcase | 7 + .../sql_stmt_tests/fromgeojson30.testcase | 7 + .../sql_stmt_tests/fromgeojson31.testcase | 8 + .../sql_stmt_tests/fromgeojson32.testcase | 7 + .../test/sql_stmt_tests/fromgeojson4.testcase | 7 + .../test/sql_stmt_tests/fromgeojson5.testcase | 7 + .../test/sql_stmt_tests/fromgeojson6.testcase | 7 + .../test/sql_stmt_tests/fromgeojson7.testcase | 7 + .../test/sql_stmt_tests/fromgeojson8.testcase | 7 + .../test/sql_stmt_tests/fromgeojson9.testcase | 8 + .../test/sql_stmt_tests/fromgml1.testcase | 7 + .../test/sql_stmt_tests/fromgml10.testcase | 7 + .../test/sql_stmt_tests/fromgml11.testcase | 7 + .../test/sql_stmt_tests/fromgml12.testcase | 7 + .../test/sql_stmt_tests/fromgml13.testcase | 7 + .../test/sql_stmt_tests/fromgml14.testcase | 7 + .../test/sql_stmt_tests/fromgml15.testcase | 7 + .../test/sql_stmt_tests/fromgml16.testcase | 7 + .../test/sql_stmt_tests/fromgml17.testcase | 7 + .../test/sql_stmt_tests/fromgml18.testcase | 7 + .../test/sql_stmt_tests/fromgml19.testcase | 7 + .../test/sql_stmt_tests/fromgml2.testcase | 7 + .../test/sql_stmt_tests/fromgml20.testcase | 7 + .../test/sql_stmt_tests/fromgml21.testcase | 7 + .../test/sql_stmt_tests/fromgml22.testcase | 7 + .../test/sql_stmt_tests/fromgml23.testcase | 7 + .../test/sql_stmt_tests/fromgml24.testcase | 7 + .../test/sql_stmt_tests/fromgml25.testcase | 7 + .../test/sql_stmt_tests/fromgml26.testcase | 7 + .../test/sql_stmt_tests/fromgml27.testcase | 7 + .../test/sql_stmt_tests/fromgml28.testcase | 7 + .../test/sql_stmt_tests/fromgml29.testcase | 7 + .../test/sql_stmt_tests/fromgml3.testcase | 7 + .../test/sql_stmt_tests/fromgml30.testcase | 7 + .../test/sql_stmt_tests/fromgml31.testcase | 7 + .../test/sql_stmt_tests/fromgml32.testcase | 7 + .../test/sql_stmt_tests/fromgml33.testcase | 7 + .../test/sql_stmt_tests/fromgml34.testcase | 7 + .../test/sql_stmt_tests/fromgml35.testcase | 8 + .../test/sql_stmt_tests/fromgml36.testcase | 8 + .../test/sql_stmt_tests/fromgml37.testcase | 8 + .../test/sql_stmt_tests/fromgml38.testcase | 8 + .../test/sql_stmt_tests/fromgml39.testcase | 7 + .../test/sql_stmt_tests/fromgml4.testcase | 7 + .../test/sql_stmt_tests/fromgml40.testcase | 7 + .../test/sql_stmt_tests/fromgml41.testcase | 7 + .../test/sql_stmt_tests/fromgml43.testcase | 7 + .../test/sql_stmt_tests/fromgml44.testcase | 7 + .../test/sql_stmt_tests/fromgml45.testcase | 7 + .../test/sql_stmt_tests/fromgml46.testcase | 7 + .../test/sql_stmt_tests/fromgml47.testcase | 7 + .../test/sql_stmt_tests/fromgml48.testcase | 7 + .../test/sql_stmt_tests/fromgml49.testcase | 7 + .../test/sql_stmt_tests/fromgml5.testcase | 7 + .../test/sql_stmt_tests/fromgml50.testcase | 7 + .../test/sql_stmt_tests/fromgml51.testcase | 7 + .../test/sql_stmt_tests/fromgml52.testcase | 7 + .../test/sql_stmt_tests/fromgml53.testcase | 7 + .../test/sql_stmt_tests/fromgml54.testcase | 7 + .../test/sql_stmt_tests/fromgml55.testcase | 7 + .../test/sql_stmt_tests/fromgml56.testcase | 7 + .../test/sql_stmt_tests/fromgml57.testcase | 7 + .../test/sql_stmt_tests/fromgml58.testcase | 7 + .../test/sql_stmt_tests/fromgml59.testcase | 8 + .../test/sql_stmt_tests/fromgml6.testcase | 7 + .../test/sql_stmt_tests/fromgml60.testcase | 8 + .../test/sql_stmt_tests/fromgml61.testcase | 8 + .../test/sql_stmt_tests/fromgml7.testcase | 7 + .../test/sql_stmt_tests/fromgml8.testcase | 7 + .../test/sql_stmt_tests/fromgml9.testcase | 7 + .../test/sql_stmt_tests/ft_m.testcase | 7 + .../test/sql_stmt_tests/garsmbr1.testcase | 8 + .../test/sql_stmt_tests/garsmbr10.testcase | 8 + .../test/sql_stmt_tests/garsmbr11.testcase | 7 + .../test/sql_stmt_tests/garsmbr12.testcase | 7 + .../test/sql_stmt_tests/garsmbr13.testcase | 7 + .../test/sql_stmt_tests/garsmbr14.testcase | 8 + .../test/sql_stmt_tests/garsmbr15.testcase | 8 + .../test/sql_stmt_tests/garsmbr16.testcase | 8 + .../test/sql_stmt_tests/garsmbr17.testcase | 8 + .../test/sql_stmt_tests/garsmbr18.testcase | 7 + .../test/sql_stmt_tests/garsmbr2.testcase | 7 + .../test/sql_stmt_tests/garsmbr20.testcase | 7 + .../test/sql_stmt_tests/garsmbr21.testcase | 7 + .../test/sql_stmt_tests/garsmbr22.testcase | 8 + .../test/sql_stmt_tests/garsmbr23.testcase | 8 + .../test/sql_stmt_tests/garsmbr24.testcase | 8 + .../test/sql_stmt_tests/garsmbr25.testcase | 8 + .../test/sql_stmt_tests/garsmbr26.testcase | 8 + .../test/sql_stmt_tests/garsmbr27.testcase | 8 + .../test/sql_stmt_tests/garsmbr28.testcase | 8 + .../test/sql_stmt_tests/garsmbr29.testcase | 8 + .../test/sql_stmt_tests/garsmbr3.testcase | 7 + .../test/sql_stmt_tests/garsmbr30.testcase | 7 + .../test/sql_stmt_tests/garsmbr31.testcase | 7 + .../test/sql_stmt_tests/garsmbr32.testcase | 7 + .../test/sql_stmt_tests/garsmbr33.testcase | 8 + .../test/sql_stmt_tests/garsmbr34.testcase | 8 + .../test/sql_stmt_tests/garsmbr35.testcase | 8 + .../test/sql_stmt_tests/garsmbr36.testcase | 8 + .../test/sql_stmt_tests/garsmbr4.testcase | 7 + .../test/sql_stmt_tests/garsmbr5.testcase | 7 + .../test/sql_stmt_tests/garsmbr6.testcase | 7 + .../test/sql_stmt_tests/garsmbr7.testcase | 7 + .../test/sql_stmt_tests/garsmbr8.testcase | 7 + .../test/sql_stmt_tests/garsmbr9.testcase | 8 + .../sql_stmt_tests/geodesic-len1.testcase | 7 + .../sql_stmt_tests/geodesic-len2.testcase | 7 + .../sql_stmt_tests/geodesic-len3.testcase | 7 + .../sql_stmt_tests/geodesic-len4.testcase | 7 + .../sql_stmt_tests/geodesic-len5.testcase | 7 + .../sql_stmt_tests/geodesic-len6.testcase | 7 + .../sql_stmt_tests/geodesic-len7.testcase | 7 + .../sql_stmt_tests/geodesic-len8.testcase | 7 + .../test/sql_stmt_tests/geojson1.testcase | 8 + .../test/sql_stmt_tests/geojson2.testcase | 8 + .../test/sql_stmt_tests/geojson3.testcase | 8 + .../test/sql_stmt_tests/geojson4.testcase | 8 + .../test/sql_stmt_tests/geojson5.testcase | 8 + .../test/sql_stmt_tests/geojson6.testcase | 8 + .../sql_stmt_tests/geomcollfromtext1.testcase | 7 + .../sql_stmt_tests/geomcollfromtext2.testcase | 7 + .../sql_stmt_tests/geomconstraints1.testcase | 8 + .../sql_stmt_tests/geomconstraints10.testcase | 8 + .../sql_stmt_tests/geomconstraints11.testcase | 8 + .../sql_stmt_tests/geomconstraints12.testcase | 8 + .../sql_stmt_tests/geomconstraints13.testcase | 8 + .../sql_stmt_tests/geomconstraints14.testcase | 8 + .../sql_stmt_tests/geomconstraints15.testcase | 8 + .../sql_stmt_tests/geomconstraints16.testcase | 8 + .../sql_stmt_tests/geomconstraints17.testcase | 8 + .../sql_stmt_tests/geomconstraints18.testcase | 8 + .../sql_stmt_tests/geomconstraints19.testcase | 8 + .../sql_stmt_tests/geomconstraints2.testcase | 8 + .../sql_stmt_tests/geomconstraints20.testcase | 8 + .../sql_stmt_tests/geomconstraints21.testcase | 8 + .../sql_stmt_tests/geomconstraints22.testcase | 8 + .../sql_stmt_tests/geomconstraints23.testcase | 8 + .../sql_stmt_tests/geomconstraints24.testcase | 8 + .../sql_stmt_tests/geomconstraints25.testcase | 8 + .../sql_stmt_tests/geomconstraints26.testcase | 8 + .../sql_stmt_tests/geomconstraints27.testcase | 8 + .../sql_stmt_tests/geomconstraints28.testcase | 8 + .../sql_stmt_tests/geomconstraints3.testcase | 8 + .../sql_stmt_tests/geomconstraints4.testcase | 8 + .../sql_stmt_tests/geomconstraints5.testcase | 8 + .../sql_stmt_tests/geomconstraints6.testcase | 8 + .../sql_stmt_tests/geomconstraints7.testcase | 8 + .../sql_stmt_tests/geomconstraints8.testcase | 8 + .../sql_stmt_tests/geomconstraints9.testcase | 8 + .../test/sql_stmt_tests/geometryn.testcase | 7 + .../test/sql_stmt_tests/geometryn1.testcase | 7 + .../test/sql_stmt_tests/geometryn10.testcase | 7 + .../test/sql_stmt_tests/geometryn11.testcase | 7 + .../test/sql_stmt_tests/geometryn12.testcase | 7 + .../test/sql_stmt_tests/geometryn13.testcase | 7 + .../test/sql_stmt_tests/geometryn14.testcase | 7 + .../test/sql_stmt_tests/geometryn15.testcase | 7 + .../test/sql_stmt_tests/geometryn16.testcase | 7 + .../test/sql_stmt_tests/geometryn17.testcase | 7 + .../test/sql_stmt_tests/geometryn18.testcase | 7 + .../test/sql_stmt_tests/geometryn19.testcase | 7 + .../test/sql_stmt_tests/geometryn2.testcase | 7 + .../test/sql_stmt_tests/geometryn20.testcase | 7 + .../test/sql_stmt_tests/geometryn3.testcase | 7 + .../test/sql_stmt_tests/geometryn4.testcase | 7 + .../test/sql_stmt_tests/geometryn5.testcase | 8 + .../test/sql_stmt_tests/geometryn6.testcase | 7 + .../test/sql_stmt_tests/geometryn7.testcase | 7 + .../test/sql_stmt_tests/geometryn8.testcase | 7 + .../test/sql_stmt_tests/geometryn9.testcase | 7 + .../sql_stmt_tests/geomfromewkb1.testcase | 7 + .../sql_stmt_tests/geomfromewkb2.testcase | 7 + .../test/sql_stmt_tests/geomfromkml1.testcase | 7 + .../sql_stmt_tests/geomfromkml10.testcase | 7 + .../sql_stmt_tests/geomfromkml11.testcase | 7 + .../sql_stmt_tests/geomfromkml12.testcase | 7 + .../sql_stmt_tests/geomfromkml13.testcase | 7 + .../sql_stmt_tests/geomfromkml14.testcase | 7 + .../sql_stmt_tests/geomfromkml15.testcase | 7 + .../sql_stmt_tests/geomfromkml16.testcase | 7 + .../sql_stmt_tests/geomfromkml17.testcase | 7 + .../sql_stmt_tests/geomfromkml18.testcase | 7 + .../sql_stmt_tests/geomfromkml19.testcase | 7 + .../test/sql_stmt_tests/geomfromkml2.testcase | 7 + .../sql_stmt_tests/geomfromkml20.testcase | 7 + .../sql_stmt_tests/geomfromkml21.testcase | 7 + .../sql_stmt_tests/geomfromkml22.testcase | 7 + .../sql_stmt_tests/geomfromkml23.testcase | 7 + .../test/sql_stmt_tests/geomfromkml3.testcase | 7 + .../test/sql_stmt_tests/geomfromkml4.testcase | 7 + .../test/sql_stmt_tests/geomfromkml5.testcase | 7 + .../test/sql_stmt_tests/geomfromkml6.testcase | 7 + .../test/sql_stmt_tests/geomfromkml7.testcase | 7 + .../test/sql_stmt_tests/geomfromkml8.testcase | 7 + .../test/sql_stmt_tests/geomfromkml9.testcase | 7 + .../sql_stmt_tests/geomfromtext1.testcase | 7 + .../sql_stmt_tests/geomfromtext10.testcase | 7 + .../sql_stmt_tests/geomfromtext11.testcase | 7 + .../sql_stmt_tests/geomfromtext12.testcase | 7 + .../sql_stmt_tests/geomfromtext13.testcase | 7 + .../sql_stmt_tests/geomfromtext14.testcase | 7 + .../sql_stmt_tests/geomfromtext15.testcase | 7 + .../sql_stmt_tests/geomfromtext16.testcase | 7 + .../sql_stmt_tests/geomfromtext17.testcase | 7 + .../sql_stmt_tests/geomfromtext18.testcase | 7 + .../sql_stmt_tests/geomfromtext19.testcase | 7 + .../sql_stmt_tests/geomfromtext2.testcase | 7 + .../sql_stmt_tests/geomfromtext20.testcase | 7 + .../sql_stmt_tests/geomfromtext21.testcase | 7 + .../sql_stmt_tests/geomfromtext22.testcase | 7 + .../sql_stmt_tests/geomfromtext23.testcase | 7 + .../sql_stmt_tests/geomfromtext24.testcase | 7 + .../sql_stmt_tests/geomfromtext25.testcase | 7 + .../sql_stmt_tests/geomfromtext26.testcase | 7 + .../sql_stmt_tests/geomfromtext27.testcase | 7 + .../sql_stmt_tests/geomfromtext28.testcase | 7 + .../sql_stmt_tests/geomfromtext29.testcase | 7 + .../sql_stmt_tests/geomfromtext3.testcase | 7 + .../sql_stmt_tests/geomfromtext30.testcase | 7 + .../sql_stmt_tests/geomfromtext31.testcase | 7 + .../sql_stmt_tests/geomfromtext32.testcase | 7 + .../sql_stmt_tests/geomfromtext33.testcase | 7 + .../sql_stmt_tests/geomfromtext34.testcase | 7 + .../sql_stmt_tests/geomfromtext35.testcase | 7 + .../sql_stmt_tests/geomfromtext36.testcase | 7 + .../sql_stmt_tests/geomfromtext37.testcase | 7 + .../sql_stmt_tests/geomfromtext38.testcase | 7 + .../sql_stmt_tests/geomfromtext39.testcase | 7 + .../sql_stmt_tests/geomfromtext4.testcase | 7 + .../sql_stmt_tests/geomfromtext40.testcase | 7 + .../sql_stmt_tests/geomfromtext41.testcase | 7 + .../sql_stmt_tests/geomfromtext42.testcase | 7 + .../sql_stmt_tests/geomfromtext43.testcase | 7 + .../sql_stmt_tests/geomfromtext44.testcase | 7 + .../sql_stmt_tests/geomfromtext45.testcase | 7 + .../sql_stmt_tests/geomfromtext5.testcase | 7 + .../sql_stmt_tests/geomfromtext6.testcase | 7 + .../sql_stmt_tests/geomfromtext7.testcase | 7 + .../sql_stmt_tests/geomfromtext8.testcase | 7 + .../sql_stmt_tests/geomfromtext9.testcase | 7 + .../test/sql_stmt_tests/geomtype1.testcase | 9 + .../test/sql_stmt_tests/geomtype10.testcase | 9 + .../test/sql_stmt_tests/geomtype11.testcase | 9 + .../test/sql_stmt_tests/geomtype12.testcase | 11 + .../test/sql_stmt_tests/geomtype13.testcase | 11 + .../test/sql_stmt_tests/geomtype14.testcase | 9 + .../test/sql_stmt_tests/geomtype15.testcase | 9 + .../test/sql_stmt_tests/geomtype16.testcase | 9 + .../test/sql_stmt_tests/geomtype17.testcase | 9 + .../test/sql_stmt_tests/geomtype18.testcase | 9 + .../test/sql_stmt_tests/geomtype19.testcase | 9 + .../test/sql_stmt_tests/geomtype2.testcase | 9 + .../test/sql_stmt_tests/geomtype20.testcase | 11 + .../test/sql_stmt_tests/geomtype21.testcase | 11 + .../test/sql_stmt_tests/geomtype22.testcase | 9 + .../test/sql_stmt_tests/geomtype23.testcase | 11 + .../test/sql_stmt_tests/geomtype24.testcase | 9 + .../test/sql_stmt_tests/geomtype25.testcase | 11 + .../test/sql_stmt_tests/geomtype26.testcase | 9 + .../test/sql_stmt_tests/geomtype27.testcase | 9 + .../test/sql_stmt_tests/geomtype28.testcase | 9 + .../test/sql_stmt_tests/geomtype29.testcase | 9 + .../test/sql_stmt_tests/geomtype3.testcase | 9 + .../test/sql_stmt_tests/geomtype30.testcase | 11 + .../test/sql_stmt_tests/geomtype31.testcase | 11 + .../test/sql_stmt_tests/geomtype32.testcase | 9 + .../test/sql_stmt_tests/geomtype33.testcase | 11 + .../test/sql_stmt_tests/geomtype34.testcase | 9 + .../test/sql_stmt_tests/geomtype35.testcase | 9 + .../test/sql_stmt_tests/geomtype36.testcase | 11 + .../test/sql_stmt_tests/geomtype37.testcase | 11 + .../test/sql_stmt_tests/geomtype38.testcase | 11 + .../test/sql_stmt_tests/geomtype39.testcase | 11 + .../test/sql_stmt_tests/geomtype4.testcase | 9 + .../test/sql_stmt_tests/geomtype40.testcase | 11 + .../test/sql_stmt_tests/geomtype41.testcase | 11 + .../test/sql_stmt_tests/geomtype42.testcase | 11 + .../test/sql_stmt_tests/geomtype43.testcase | 11 + .../test/sql_stmt_tests/geomtype44.testcase | 11 + .../test/sql_stmt_tests/geomtype45.testcase | 11 + .../test/sql_stmt_tests/geomtype46.testcase | 11 + .../test/sql_stmt_tests/geomtype47.testcase | 11 + .../test/sql_stmt_tests/geomtype48.testcase | 11 + .../test/sql_stmt_tests/geomtype49.testcase | 11 + .../test/sql_stmt_tests/geomtype5.testcase | 11 + .../test/sql_stmt_tests/geomtype50.testcase | 11 + .../test/sql_stmt_tests/geomtype51.testcase | 11 + .../test/sql_stmt_tests/geomtype52.testcase | 11 + .../test/sql_stmt_tests/geomtype53.testcase | 11 + .../test/sql_stmt_tests/geomtype54.testcase | 11 + .../test/sql_stmt_tests/geomtype55.testcase | 11 + .../test/sql_stmt_tests/geomtype56.testcase | 11 + .../test/sql_stmt_tests/geomtype57.testcase | 11 + .../test/sql_stmt_tests/geomtype58.testcase | 11 + .../test/sql_stmt_tests/geomtype59.testcase | 9 + .../test/sql_stmt_tests/geomtype6.testcase | 9 + .../test/sql_stmt_tests/geomtype60.testcase | 11 + .../test/sql_stmt_tests/geomtype61.testcase | 11 + .../test/sql_stmt_tests/geomtype62.testcase | 11 + .../test/sql_stmt_tests/geomtype63.testcase | 11 + .../test/sql_stmt_tests/geomtype64.testcase | 11 + .../test/sql_stmt_tests/geomtype65.testcase | 11 + .../test/sql_stmt_tests/geomtype66.testcase | 11 + .../test/sql_stmt_tests/geomtype67.testcase | 11 + .../test/sql_stmt_tests/geomtype68.testcase | 11 + .../test/sql_stmt_tests/geomtype69.testcase | 11 + .../test/sql_stmt_tests/geomtype7.testcase | 11 + .../test/sql_stmt_tests/geomtype8.testcase | 9 + .../test/sql_stmt_tests/geomtype9.testcase | 9 + .../sql_stmt_tests/getlayerextent1.testcase | 7 + .../sql_stmt_tests/getlayerextent10.testcase | 7 + .../sql_stmt_tests/getlayerextent11.testcase | 7 + .../sql_stmt_tests/getlayerextent12.testcase | 7 + .../sql_stmt_tests/getlayerextent13.testcase | 7 + .../sql_stmt_tests/getlayerextent14.testcase | 7 + .../sql_stmt_tests/getlayerextent2.testcase | 7 + .../sql_stmt_tests/getlayerextent3.testcase | 7 + .../sql_stmt_tests/getlayerextent4.testcase | 7 + .../sql_stmt_tests/getlayerextent5.testcase | 7 + .../sql_stmt_tests/getlayerextent6.testcase | 7 + .../sql_stmt_tests/getlayerextent7.testcase | 7 + .../sql_stmt_tests/getlayerextent8.testcase | 7 + .../sql_stmt_tests/getlayerextent9.testcase | 7 + .../test/sql_stmt_tests/getmimetype1.testcase | 8 + .../test/sql_stmt_tests/getmimetype2.testcase | 8 + .../test/sql_stmt_tests/getmimetype3.testcase | 8 + .../test/sql_stmt_tests/getmimetype4.testcase | 8 + .../test/sql_stmt_tests/getmimetype5.testcase | 8 + .../test/sql_stmt_tests/gml1.testcase | 8 + .../test/sql_stmt_tests/gml10.testcase | 8 + .../test/sql_stmt_tests/gml11.testcase | 8 + .../test/sql_stmt_tests/gml12.testcase | 8 + .../test/sql_stmt_tests/gml13.testcase | 8 + .../test/sql_stmt_tests/gml14.testcase | 8 + .../test/sql_stmt_tests/gml15.testcase | 8 + .../test/sql_stmt_tests/gml16.testcase | 8 + .../test/sql_stmt_tests/gml2.testcase | 8 + .../test/sql_stmt_tests/gml3.testcase | 8 + .../test/sql_stmt_tests/gml4.testcase | 8 + .../test/sql_stmt_tests/gml5.testcase | 8 + .../test/sql_stmt_tests/gml6.testcase | 8 + .../test/sql_stmt_tests/gml7.testcase | 8 + .../test/sql_stmt_tests/gml8.testcase | 8 + .../test/sql_stmt_tests/gml9.testcase | 8 + .../greatcircle-badblob.testcase | 7 + .../sql_stmt_tests/greatcircle-poly.testcase | 7 + .../sql_stmt_tests/greatcircle-poly2.testcase | 7 + .../sql_stmt_tests/greatcircle-poly3.testcase | 7 + .../sql_stmt_tests/greatcircle-poly4.testcase | 7 + .../sql_stmt_tests/greatcircle-poly5.testcase | 7 + .../sql_stmt_tests/greatcircle-poly6.testcase | 7 + .../sql_stmt_tests/greatcircle-poly7.testcase | 7 + .../sql_stmt_tests/greatcircle-text.testcase | 7 + .../test/sql_stmt_tests/greatcircle.testcase | 7 + .../test/sql_stmt_tests/in_m.testcase | 7 + .../test/sql_stmt_tests/ind_ch_m.testcase | 7 + .../test/sql_stmt_tests/ind_ft_m.testcase | 7 + .../test/sql_stmt_tests/ind_yd_m.testcase | 7 + .../sql_stmt_tests/invalidatestats1.testcase | 7 + .../sql_stmt_tests/invalidatestats10.testcase | 7 + .../sql_stmt_tests/invalidatestats2.testcase | 7 + .../sql_stmt_tests/invalidatestats3.testcase | 7 + .../sql_stmt_tests/invalidatestats4.testcase | 7 + .../sql_stmt_tests/invalidatestats5.testcase | 7 + .../sql_stmt_tests/invalidatestats6.testcase | 7 + .../sql_stmt_tests/invalidatestats7.testcase | 7 + .../sql_stmt_tests/invalidatestats8.testcase | 7 + .../sql_stmt_tests/invalidatestats9.testcase | 7 + .../test/sql_stmt_tests/is3d1.testcase | 8 + .../test/sql_stmt_tests/is3d2.testcase | 8 + .../test/sql_stmt_tests/is3d3.testcase | 8 + .../test/sql_stmt_tests/is3d4.testcase | 8 + .../test/sql_stmt_tests/is3d5.testcase | 8 + .../test/sql_stmt_tests/is3d6.testcase | 8 + .../test/sql_stmt_tests/isXblob5.testcase | 27 + .../test/sql_stmt_tests/isXblob6.testcase | 27 + .../test/sql_stmt_tests/isXblob7.testcase | 25 + .../test/sql_stmt_tests/isempty.testcase | 7 + .../test/sql_stmt_tests/isempty2.testcase | 7 + .../test/sql_stmt_tests/isempty3.testcase | 7 + .../test/sql_stmt_tests/isempty4.testcase | 7 + .../test/sql_stmt_tests/ismeasured1.testcase | 8 + .../test/sql_stmt_tests/ismeasured2.testcase | 8 + .../test/sql_stmt_tests/ismeasured3.testcase | 8 + .../test/sql_stmt_tests/ismeasured4.testcase | 8 + .../test/sql_stmt_tests/ismeasured5.testcase | 8 + .../test/sql_stmt_tests/ismeasured6.testcase | 8 + .../ispopulatedcoverage1.testcase | 8 + .../ispopulatedcoverage2.testcase | 9 + .../sql_stmt_tests/isvalidnodata1.testcase | 8 + .../sql_stmt_tests/isvalidnodata2.testcase | 8 + .../sql_stmt_tests/isvalidnodata3.testcase | 8 + .../sql_stmt_tests/isvalidnodata4.testcase | 8 + .../sql_stmt_tests/isvalidpalette1.testcase | 8 + .../sql_stmt_tests/isvalidpalette2.testcase | 8 + .../sql_stmt_tests/isvalidpalette3.testcase | 8 + .../isvalidrasterstats1.testcase | 8 + .../isvalidrasterstats2.testcase | 8 + .../isvalidrasterstats3.testcase | 8 + .../isvalidrasterstats4.testcase | 8 + .../isvalidrasterstats5.testcase | 8 + .../isvalidrasterstats6.testcase | 8 + .../isvalidrasterstats7.testcase | 8 + .../isvalidrastertile1.testcase | 8 + .../isvalidrastertile2.testcase | 8 + .../isvalidrastertile3.testcase | 8 + .../isvalidrastertile4.testcase | 8 + .../isvalidrastertile5.testcase | 8 + .../isvalidrastertile6.testcase | 8 + .../test/sql_stmt_tests/k3b-icon.png | Bin 0 -> 982 bytes .../test/sql_stmt_tests/km_m.testcase | 7 + .../test/sql_stmt_tests/ktorrent_grad1.jpg | Bin 0 -> 367 bytes .../test/sql_stmt_tests/ktorrent_sidebar.gif | Bin 0 -> 2077 bytes .../test/sql_stmt_tests/lhr1.testcase | 7 + .../test/sql_stmt_tests/lhr2.testcase | 7 + .../test/sql_stmt_tests/lhr3.testcase | 7 + .../test/sql_stmt_tests/lhr4.testcase | 7 + .../test/sql_stmt_tests/lhr5.testcase | 7 + .../test/sql_stmt_tests/lhr6.testcase | 7 + .../sql_stmt_tests/linefromtext1.testcase | 7 + .../sql_stmt_tests/linefromtext2.testcase | 7 + .../sql_stmt_tests/linesfromrings1.testcase | 8 + .../sql_stmt_tests/linesfromrings2.testcase | 9 + .../sql_stmt_tests/linesfromrings3.testcase | 9 + .../sql_stmt_tests/linesfromrings4.testcase | 9 + .../sql_stmt_tests/linesfromrings5.testcase | 9 + .../sql_stmt_tests/linesfromrings6.testcase | 8 + .../sql_stmt_tests/linesfromrings7.testcase | 8 + .../test/sql_stmt_tests/link_m.testcase | 7 + .../sql_stmt_tests/locatemeasure1.testcase | 7 + .../sql_stmt_tests/locatemeasure10.testcase | 7 + .../sql_stmt_tests/locatemeasure11.testcase | 7 + .../sql_stmt_tests/locatemeasure12.testcase | 7 + .../sql_stmt_tests/locatemeasure13.testcase | 7 + .../sql_stmt_tests/locatemeasure14.testcase | 7 + .../sql_stmt_tests/locatemeasure15.testcase | 7 + .../sql_stmt_tests/locatemeasure16.testcase | 7 + .../sql_stmt_tests/locatemeasure17.testcase | 7 + .../sql_stmt_tests/locatemeasure18.testcase | 7 + .../sql_stmt_tests/locatemeasure19.testcase | 7 + .../sql_stmt_tests/locatemeasure2.testcase | 7 + .../sql_stmt_tests/locatemeasure3.testcase | 7 + .../sql_stmt_tests/locatemeasure4.testcase | 7 + .../sql_stmt_tests/locatemeasure5.testcase | 7 + .../sql_stmt_tests/locatemeasure6.testcase | 7 + .../sql_stmt_tests/locatemeasure7.testcase | 7 + .../sql_stmt_tests/locatemeasure8.testcase | 7 + .../sql_stmt_tests/locatemeasure9.testcase | 7 + .../test/sql_stmt_tests/m_ch.testcase | 7 + .../test/sql_stmt_tests/m_cm.testcase | 7 + .../test/sql_stmt_tests/m_dm.testcase | 7 + .../test/sql_stmt_tests/m_fath.testcase | 7 + .../test/sql_stmt_tests/m_ft-text.testcase | 7 + .../test/sql_stmt_tests/m_ft.testcase | 7 + .../test/sql_stmt_tests/m_in.testcase | 7 + .../test/sql_stmt_tests/m_in_us.testcase | 7 + .../test/sql_stmt_tests/m_ind_ch.testcase | 7 + .../test/sql_stmt_tests/m_ind_ft.testcase | 7 + .../test/sql_stmt_tests/m_ind_yd.testcase | 7 + .../test/sql_stmt_tests/m_km.testcase | 7 + .../test/sql_stmt_tests/m_ln.testcase | 7 + .../test/sql_stmt_tests/m_mi.testcase | 7 + .../test/sql_stmt_tests/m_mm.testcase | 7 + .../test/sql_stmt_tests/m_nm.testcase | 7 + .../test/sql_stmt_tests/m_us_ch.testcase | 7 + .../test/sql_stmt_tests/m_us_ft.testcase | 7 + .../test/sql_stmt_tests/m_usmi.testcase | 7 + .../test/sql_stmt_tests/m_yd.testcase | 7 + .../test/sql_stmt_tests/m_yd_us.testcase | 7 + .../test/sql_stmt_tests/makearc1.testcase | 8 + .../test/sql_stmt_tests/makearc10.testcase | 8 + .../test/sql_stmt_tests/makearc11.testcase | 8 + .../test/sql_stmt_tests/makearc12.testcase | 8 + .../test/sql_stmt_tests/makearc13.testcase | 8 + .../test/sql_stmt_tests/makearc14.testcase | 8 + .../test/sql_stmt_tests/makearc16.testcase | 8 + .../test/sql_stmt_tests/makearc17.testcase | 8 + .../test/sql_stmt_tests/makearc18.testcase | 8 + .../test/sql_stmt_tests/makearc2.testcase | 8 + .../test/sql_stmt_tests/makearc20.testcase | 8 + .../test/sql_stmt_tests/makearc21.testcase | 8 + .../test/sql_stmt_tests/makearc22.testcase | 8 + .../test/sql_stmt_tests/makearc3.testcase | 8 + .../test/sql_stmt_tests/makearc4.testcase | 8 + .../test/sql_stmt_tests/makearc5.testcase | 8 + .../test/sql_stmt_tests/makearc6.testcase | 8 + .../test/sql_stmt_tests/makearc7.testcase | 8 + .../test/sql_stmt_tests/makearc8.testcase | 8 + .../test/sql_stmt_tests/makearc9.testcase | 8 + .../test/sql_stmt_tests/makecircle1.testcase | 8 + .../test/sql_stmt_tests/makecircle2.testcase | 8 + .../test/sql_stmt_tests/makecircle3.testcase | 8 + .../test/sql_stmt_tests/makecircle4.testcase | 8 + .../test/sql_stmt_tests/makecircle5.testcase | 8 + .../test/sql_stmt_tests/makecircle6.testcase | 8 + .../test/sql_stmt_tests/makecircle7.testcase | 8 + .../test/sql_stmt_tests/makecircle8.testcase | 8 + .../test/sql_stmt_tests/makecircle9.testcase | 8 + .../makecircularsector1.testcase | 8 + .../makecircularsector10.testcase | 8 + .../makecircularsector11.testcase | 8 + .../makecircularsector12.testcase | 8 + .../makecircularsector13.testcase | 8 + .../makecircularsector14.testcase | 8 + .../makecircularsector16.testcase | 8 + .../makecircularsector17.testcase | 8 + .../makecircularsector18.testcase | 8 + .../makecircularsector2.testcase | 8 + .../makecircularsector20.testcase | 8 + .../makecircularsector21.testcase | 8 + .../makecircularsector22.testcase | 8 + .../makecircularsector3.testcase | 8 + .../makecircularsector4.testcase | 8 + .../makecircularsector5.testcase | 8 + .../makecircularsector6.testcase | 8 + .../makecircularsector7.testcase | 8 + .../makecircularsector8.testcase | 8 + .../makecircularsector9.testcase | 8 + .../makecircularstripe1.testcase | 8 + .../makecircularstripe10.testcase | 8 + .../makecircularstripe11.testcase | 8 + .../makecircularstripe12.testcase | 8 + .../makecircularstripe13.testcase | 8 + .../makecircularstripe14.testcase | 8 + .../makecircularstripe16.testcase | 8 + .../makecircularstripe17.testcase | 8 + .../makecircularstripe18.testcase | 8 + .../makecircularstripe2.testcase | 8 + .../makecircularstripe20.testcase | 8 + .../makecircularstripe21.testcase | 8 + .../makecircularstripe22.testcase | 8 + .../makecircularstripe24.testcase | 8 + .../makecircularstripe25.testcase | 8 + .../makecircularstripe26.testcase | 8 + .../makecircularstripe3.testcase | 8 + .../makecircularstripe4.testcase | 8 + .../makecircularstripe5.testcase | 8 + .../makecircularstripe6.testcase | 8 + .../makecircularstripe7.testcase | 8 + .../makecircularstripe8.testcase | 8 + .../makecircularstripe9.testcase | 8 + .../test/sql_stmt_tests/makeellipse1.testcase | 8 + .../sql_stmt_tests/makeellipse10.testcase | 8 + .../sql_stmt_tests/makeellipse11.testcase | 8 + .../sql_stmt_tests/makeellipse12.testcase | 8 + .../sql_stmt_tests/makeellipse14.testcase | 8 + .../sql_stmt_tests/makeellipse15.testcase | 8 + .../sql_stmt_tests/makeellipse16.testcase | 8 + .../sql_stmt_tests/makeellipse18.testcase | 8 + .../sql_stmt_tests/makeellipse19.testcase | 8 + .../test/sql_stmt_tests/makeellipse2.testcase | 8 + .../sql_stmt_tests/makeellipse20.testcase | 8 + .../test/sql_stmt_tests/makeellipse3.testcase | 8 + .../test/sql_stmt_tests/makeellipse4.testcase | 8 + .../test/sql_stmt_tests/makeellipse5.testcase | 8 + .../test/sql_stmt_tests/makeellipse6.testcase | 8 + .../test/sql_stmt_tests/makeellipse7.testcase | 8 + .../test/sql_stmt_tests/makeellipse8.testcase | 8 + .../test/sql_stmt_tests/makeellipse9.testcase | 8 + .../sql_stmt_tests/makeellipticarc1.testcase | 8 + .../sql_stmt_tests/makeellipticarc10.testcase | 8 + .../sql_stmt_tests/makeellipticarc11.testcase | 8 + .../sql_stmt_tests/makeellipticarc12.testcase | 8 + .../sql_stmt_tests/makeellipticarc13.testcase | 8 + .../sql_stmt_tests/makeellipticarc14.testcase | 8 + .../sql_stmt_tests/makeellipticarc15.testcase | 8 + .../sql_stmt_tests/makeellipticarc16.testcase | 8 + .../sql_stmt_tests/makeellipticarc17.testcase | 8 + .../sql_stmt_tests/makeellipticarc19.testcase | 8 + .../sql_stmt_tests/makeellipticarc2.testcase | 8 + .../sql_stmt_tests/makeellipticarc20.testcase | 8 + .../sql_stmt_tests/makeellipticarc21.testcase | 8 + .../sql_stmt_tests/makeellipticarc23.testcase | 8 + .../sql_stmt_tests/makeellipticarc24.testcase | 8 + .../sql_stmt_tests/makeellipticarc25.testcase | 8 + .../sql_stmt_tests/makeellipticarc3.testcase | 8 + .../sql_stmt_tests/makeellipticarc4.testcase | 8 + .../sql_stmt_tests/makeellipticarc5.testcase | 8 + .../sql_stmt_tests/makeellipticarc6.testcase | 8 + .../sql_stmt_tests/makeellipticarc7.testcase | 8 + .../sql_stmt_tests/makeellipticarc8.testcase | 8 + .../sql_stmt_tests/makeellipticarc9.testcase | 8 + .../makeellipticsector1.testcase | 8 + .../makeellipticsector10.testcase | 8 + .../makeellipticsector11.testcase | 8 + .../makeellipticsector12.testcase | 8 + .../makeellipticsector13.testcase | 8 + .../makeellipticsector14.testcase | 8 + .../makeellipticsector15.testcase | 8 + .../makeellipticsector16.testcase | 8 + .../makeellipticsector17.testcase | 8 + .../makeellipticsector19.testcase | 8 + .../makeellipticsector2.testcase | 8 + .../makeellipticsector20.testcase | 8 + .../makeellipticsector21.testcase | 8 + .../makeellipticsector23.testcase | 8 + .../makeellipticsector24.testcase | 8 + .../makeellipticsector25.testcase | 8 + .../makeellipticsector3.testcase | 8 + .../makeellipticsector4.testcase | 8 + .../makeellipticsector5.testcase | 8 + .../makeellipticsector6.testcase | 8 + .../makeellipticsector7.testcase | 8 + .../makeellipticsector8.testcase | 8 + .../makeellipticsector9.testcase | 8 + .../test/sql_stmt_tests/makeline.testcase | 8 + .../test/sql_stmt_tests/makeline10.testcase | 8 + .../test/sql_stmt_tests/makeline11.testcase | 8 + .../test/sql_stmt_tests/makeline12.testcase | 8 + .../test/sql_stmt_tests/makeline13.testcase | 8 + .../test/sql_stmt_tests/makeline14.testcase | 8 + .../test/sql_stmt_tests/makeline15.testcase | 8 + .../test/sql_stmt_tests/makeline16.testcase | 8 + .../test/sql_stmt_tests/makeline17.testcase | 8 + .../test/sql_stmt_tests/makeline18.testcase | 8 + .../test/sql_stmt_tests/makeline19.testcase | 8 + .../test/sql_stmt_tests/makeline2.testcase | 8 + .../test/sql_stmt_tests/makeline20.testcase | 8 + .../test/sql_stmt_tests/makeline21.testcase | 8 + .../test/sql_stmt_tests/makeline22.testcase | 7 + .../test/sql_stmt_tests/makeline23.testcase | 8 + .../test/sql_stmt_tests/makeline24.testcase | 8 + .../test/sql_stmt_tests/makeline25.testcase | 7 + .../test/sql_stmt_tests/makeline26.testcase | 7 + .../test/sql_stmt_tests/makeline27.testcase | 7 + .../test/sql_stmt_tests/makeline28.testcase | 7 + .../test/sql_stmt_tests/makeline29.testcase | 7 + .../test/sql_stmt_tests/makeline3.testcase | 8 + .../test/sql_stmt_tests/makeline30.testcase | 7 + .../test/sql_stmt_tests/makeline31.testcase | 7 + .../test/sql_stmt_tests/makeline32.testcase | 7 + .../test/sql_stmt_tests/makeline4.testcase | 8 + .../test/sql_stmt_tests/makeline5.testcase | 8 + .../test/sql_stmt_tests/makeline6.testcase | 8 + .../test/sql_stmt_tests/makeline7.testcase | 8 + .../test/sql_stmt_tests/makeline8.testcase | 8 + .../test/sql_stmt_tests/makeline9.testcase | 8 + .../sql_stmt_tests/makepoint-null1.testcase | 7 + .../sql_stmt_tests/makepoint-null2.testcase | 7 + .../sql_stmt_tests/makepoint-null3.testcase | 7 + .../sql_stmt_tests/makepoint-null4.testcase | 7 + .../sql_stmt_tests/makepoint-null5.testcase | 7 + .../sql_stmt_tests/makepoint-null6.testcase | 7 + .../sql_stmt_tests/makepoint-null7.testcase | 7 + .../test/sql_stmt_tests/makepoint1.testcase | 7 + .../test/sql_stmt_tests/makepoint10.testcase | 7 + .../test/sql_stmt_tests/makepoint11.testcase | 7 + .../test/sql_stmt_tests/makepoint12.testcase | 7 + .../test/sql_stmt_tests/makepoint13.testcase | 7 + .../test/sql_stmt_tests/makepoint14.testcase | 7 + .../test/sql_stmt_tests/makepoint15.testcase | 7 + .../test/sql_stmt_tests/makepoint2.testcase | 7 + .../test/sql_stmt_tests/makepoint3.testcase | 7 + .../test/sql_stmt_tests/makepoint4.testcase | 7 + .../test/sql_stmt_tests/makepoint5.testcase | 7 + .../test/sql_stmt_tests/makepoint6.testcase | 7 + .../test/sql_stmt_tests/makepoint7.testcase | 7 + .../test/sql_stmt_tests/makepoint8.testcase | 7 + .../test/sql_stmt_tests/makepoint9.testcase | 7 + .../sql_stmt_tests/makepointm-null1.testcase | 7 + .../sql_stmt_tests/makepointm-null2.testcase | 7 + .../sql_stmt_tests/makepointm-null3.testcase | 7 + .../sql_stmt_tests/makepointm-null4.testcase | 7 + .../sql_stmt_tests/makepointm-null5.testcase | 7 + .../sql_stmt_tests/makepointm-null6.testcase | 7 + .../sql_stmt_tests/makepointm-null7.testcase | 7 + .../sql_stmt_tests/makepointm-null8.testcase | 7 + .../sql_stmt_tests/makepointz-null1.testcase | 7 + .../sql_stmt_tests/makepointz-null2.testcase | 7 + .../sql_stmt_tests/makepointz-null3.testcase | 7 + .../sql_stmt_tests/makepointz-null4.testcase | 7 + .../sql_stmt_tests/makepointz-null5.testcase | 7 + .../sql_stmt_tests/makepointz-null6.testcase | 7 + .../sql_stmt_tests/makepointz-null7.testcase | 7 + .../sql_stmt_tests/makepointz-null8.testcase | 7 + .../sql_stmt_tests/makepointz-null9.testcase | 7 + .../sql_stmt_tests/makepointzm-null1.testcase | 7 + .../makepointzm-null10.testcase | 7 + .../sql_stmt_tests/makepointzm-null2.testcase | 7 + .../sql_stmt_tests/makepointzm-null3.testcase | 7 + .../sql_stmt_tests/makepointzm-null4.testcase | 7 + .../sql_stmt_tests/makepointzm-null5.testcase | 7 + .../sql_stmt_tests/makepointzm-null6.testcase | 7 + .../sql_stmt_tests/makepointzm-null7.testcase | 7 + .../sql_stmt_tests/makepointzm-null8.testcase | 7 + .../sql_stmt_tests/makepointzm-null9.testcase | 7 + .../test/sql_stmt_tests/makepolygon1.testcase | 8 + .../sql_stmt_tests/makepolygon10.testcase | 8 + .../sql_stmt_tests/makepolygon11.testcase | 8 + .../sql_stmt_tests/makepolygon12.testcase | 8 + .../sql_stmt_tests/makepolygon13.testcase | 8 + .../sql_stmt_tests/makepolygon14.testcase | 8 + .../sql_stmt_tests/makepolygon15.testcase | 8 + .../sql_stmt_tests/makepolygon16.testcase | 8 + .../sql_stmt_tests/makepolygon17.testcase | 8 + .../sql_stmt_tests/makepolygon18.testcase | 8 + .../sql_stmt_tests/makepolygon19.testcase | 8 + .../test/sql_stmt_tests/makepolygon2.testcase | 8 + .../sql_stmt_tests/makepolygon20.testcase | 8 + .../sql_stmt_tests/makepolygon21.testcase | 8 + .../sql_stmt_tests/makepolygon22.testcase | 8 + .../sql_stmt_tests/makepolygon23.testcase | 8 + .../sql_stmt_tests/makepolygon24.testcase | 8 + .../sql_stmt_tests/makepolygon25.testcase | 8 + .../sql_stmt_tests/makepolygon26.testcase | 8 + .../test/sql_stmt_tests/makepolygon3.testcase | 8 + .../test/sql_stmt_tests/makepolygon4.testcase | 8 + .../test/sql_stmt_tests/makepolygon5.testcase | 8 + .../test/sql_stmt_tests/makepolygon7.testcase | 8 + .../test/sql_stmt_tests/makepolygon8.testcase | 8 + .../test/sql_stmt_tests/makepolygon9.testcase | 8 + .../test/sql_stmt_tests/maxm1.testcase | 8 + .../test/sql_stmt_tests/maxm2.testcase | 8 + .../test/sql_stmt_tests/maxm3.testcase | 8 + .../test/sql_stmt_tests/maxm4.testcase | 8 + .../test/sql_stmt_tests/maxm5.testcase | 8 + .../test/sql_stmt_tests/maxm6.testcase | 8 + .../test/sql_stmt_tests/maxm7.testcase | 8 + .../test/sql_stmt_tests/maxz1.testcase | 8 + .../test/sql_stmt_tests/maxz2.testcase | 8 + .../test/sql_stmt_tests/maxz3.testcase | 8 + .../test/sql_stmt_tests/maxz4.testcase | 8 + .../test/sql_stmt_tests/maxz5.testcase | 8 + .../test/sql_stmt_tests/maxz6.testcase | 8 + .../test/sql_stmt_tests/maxz7.testcase | 8 + .../test/sql_stmt_tests/mbr1.testcase | 7 + .../test/sql_stmt_tests/mbr10.testcase | 7 + .../test/sql_stmt_tests/mbr11.testcase | 7 + .../test/sql_stmt_tests/mbr12.testcase | 7 + .../test/sql_stmt_tests/mbr13.testcase | 7 + .../test/sql_stmt_tests/mbr14.testcase | 7 + .../test/sql_stmt_tests/mbr15.testcase | 7 + .../test/sql_stmt_tests/mbr16.testcase | 7 + .../test/sql_stmt_tests/mbr17.testcase | 7 + .../test/sql_stmt_tests/mbr18.testcase | 7 + .../test/sql_stmt_tests/mbr19.testcase | 7 + .../test/sql_stmt_tests/mbr2.testcase | 7 + .../test/sql_stmt_tests/mbr20.testcase | 7 + .../test/sql_stmt_tests/mbr21.testcase | 7 + .../test/sql_stmt_tests/mbr22.testcase | 7 + .../test/sql_stmt_tests/mbr23.testcase | 7 + .../test/sql_stmt_tests/mbr24.testcase | 7 + .../test/sql_stmt_tests/mbr25.testcase | 7 + .../test/sql_stmt_tests/mbr26.testcase | 7 + .../test/sql_stmt_tests/mbr27.testcase | 7 + .../test/sql_stmt_tests/mbr28.testcase | 7 + .../test/sql_stmt_tests/mbr29.testcase | 7 + .../test/sql_stmt_tests/mbr3.testcase | 7 + .../test/sql_stmt_tests/mbr30.testcase | 7 + .../test/sql_stmt_tests/mbr31.testcase | 7 + .../test/sql_stmt_tests/mbr32.testcase | 7 + .../test/sql_stmt_tests/mbr4.testcase | 7 + .../test/sql_stmt_tests/mbr5.testcase | 7 + .../test/sql_stmt_tests/mbr6.testcase | 7 + .../test/sql_stmt_tests/mbr7.testcase | 7 + .../test/sql_stmt_tests/mbr8.testcase | 7 + .../test/sql_stmt_tests/mbr9.testcase | 7 + .../test/sql_stmt_tests/mbrminmax1.testcase | 8 + .../test/sql_stmt_tests/mbrminmax2.testcase | 8 + .../test/sql_stmt_tests/mbrminmax3.testcase | 8 + .../test/sql_stmt_tests/mbrminmax4.testcase | 8 + .../test/sql_stmt_tests/mbrminmax5.testcase | 8 + .../test/sql_stmt_tests/mbrminmax6.testcase | 8 + .../test/sql_stmt_tests/mbrminmax7.testcase | 8 + .../test/sql_stmt_tests/mbrminmax8.testcase | 8 + .../test/sql_stmt_tests/mi_m.testcase | 7 + .../test/sql_stmt_tests/minm1.testcase | 8 + .../test/sql_stmt_tests/minm2.testcase | 8 + .../test/sql_stmt_tests/minm3.testcase | 8 + .../test/sql_stmt_tests/minm4.testcase | 8 + .../test/sql_stmt_tests/minm5.testcase | 8 + .../test/sql_stmt_tests/minm6.testcase | 8 + .../test/sql_stmt_tests/minz1.testcase | 8 + .../test/sql_stmt_tests/minz2.testcase | 8 + .../test/sql_stmt_tests/minz3.testcase | 8 + .../test/sql_stmt_tests/minz4.testcase | 8 + .../test/sql_stmt_tests/minz5.testcase | 8 + .../test/sql_stmt_tests/minz6.testcase | 8 + .../sql_stmt_tests/mlinefromtext1.testcase | 7 + .../sql_stmt_tests/mlinefromtext2.testcase | 7 + .../test/sql_stmt_tests/mm_m.testcase | 7 + .../sql_stmt_tests/mpointfromtext1.testcase | 7 + .../sql_stmt_tests/mpointfromtext2.testcase | 7 + .../sql_stmt_tests/mpolygonfromtext1.testcase | 7 + .../sql_stmt_tests/mpolygonfromtext2.testcase | 7 + .../test/sql_stmt_tests/ndims1.testcase | 9 + .../test/sql_stmt_tests/ndims2.testcase | 9 + .../test/sql_stmt_tests/ndims3.testcase | 9 + .../test/sql_stmt_tests/ndims4.testcase | 9 + .../test/sql_stmt_tests/ndims5.testcase | 9 + .../test/sql_stmt_tests/ndims6.testcase | 9 + .../test/sql_stmt_tests/nm_m.testcase | 7 + .../sql_stmt_tests/normalizelonlat1.testcase | 7 + .../sql_stmt_tests/normalizelonlat10.testcase | 7 + .../sql_stmt_tests/normalizelonlat11.testcase | 7 + .../sql_stmt_tests/normalizelonlat12.testcase | 7 + .../sql_stmt_tests/normalizelonlat13.testcase | 7 + .../sql_stmt_tests/normalizelonlat14.testcase | 7 + .../sql_stmt_tests/normalizelonlat15.testcase | 7 + .../sql_stmt_tests/normalizelonlat16.testcase | 7 + .../sql_stmt_tests/normalizelonlat17.testcase | 7 + .../sql_stmt_tests/normalizelonlat18.testcase | 8 + .../sql_stmt_tests/normalizelonlat19.testcase | 8 + .../sql_stmt_tests/normalizelonlat2.testcase | 7 + .../sql_stmt_tests/normalizelonlat20.testcase | 8 + .../sql_stmt_tests/normalizelonlat21.testcase | 8 + .../sql_stmt_tests/normalizelonlat22.testcase | 8 + .../sql_stmt_tests/normalizelonlat23.testcase | 7 + .../sql_stmt_tests/normalizelonlat24.testcase | 7 + .../sql_stmt_tests/normalizelonlat25.testcase | 7 + .../sql_stmt_tests/normalizelonlat26.testcase | 7 + .../sql_stmt_tests/normalizelonlat27.testcase | 7 + .../sql_stmt_tests/normalizelonlat3.testcase | 7 + .../sql_stmt_tests/normalizelonlat4.testcase | 7 + .../sql_stmt_tests/normalizelonlat5.testcase | 7 + .../sql_stmt_tests/normalizelonlat6.testcase | 7 + .../sql_stmt_tests/normalizelonlat7.testcase | 7 + .../sql_stmt_tests/normalizelonlat8.testcase | 7 + .../sql_stmt_tests/normalizelonlat9.testcase | 7 + .../test/sql_stmt_tests/npoints1.testcase | 7 + .../test/sql_stmt_tests/npoints2.testcase | 7 + .../test/sql_stmt_tests/npoints3.testcase | 7 + .../test/sql_stmt_tests/npoints4.testcase | 7 + .../test/sql_stmt_tests/npoints5.testcase | 7 + .../test/sql_stmt_tests/npoints6.testcase | 7 + .../test/sql_stmt_tests/nrings1.testcase | 7 + .../test/sql_stmt_tests/nrings2.testcase | 7 + .../test/sql_stmt_tests/nrings3.testcase | 7 + .../test/sql_stmt_tests/nrings4.testcase | 7 + .../test/sql_stmt_tests/nrings5.testcase | 7 + .../test/sql_stmt_tests/nrings6.testcase | 7 + .../sql_stmt_tests/numgeometries1.testcase | 7 + .../sql_stmt_tests/numgeometries2.testcase | 7 + .../sql_stmt_tests/numgeometries3.testcase | 7 + .../sql_stmt_tests/numgeometries4.testcase | 7 + .../sql_stmt_tests/numgeometries5.testcase | 7 + .../sql_stmt_tests/numgeometries6.testcase | 7 + .../sql_stmt_tests/pointfromtext1.testcase | 7 + .../sql_stmt_tests/pointfromtext2.testcase | 7 + .../test/sql_stmt_tests/pointn1.testcase | 7 + .../test/sql_stmt_tests/pointn10.testcase | 7 + .../test/sql_stmt_tests/pointn11.testcase | 7 + .../test/sql_stmt_tests/pointn12.testcase | 7 + .../test/sql_stmt_tests/pointn13.testcase | 7 + .../test/sql_stmt_tests/pointn14.testcase | 7 + .../test/sql_stmt_tests/pointn15.testcase | 7 + .../test/sql_stmt_tests/pointn2.testcase | 7 + .../test/sql_stmt_tests/pointn3.testcase | 7 + .../test/sql_stmt_tests/pointn4.testcase | 7 + .../test/sql_stmt_tests/pointn5.testcase | 7 + .../test/sql_stmt_tests/pointn6.testcase | 7 + .../test/sql_stmt_tests/pointn7.testcase | 7 + .../test/sql_stmt_tests/pointn8.testcase | 7 + .../test/sql_stmt_tests/pointn9.testcase | 7 + .../sql_stmt_tests/polygonfromtext1.testcase | 7 + .../sql_stmt_tests/polygonfromtext2.testcase | 7 + .../sql_stmt_tests/reflectcoords1.testcase | 7 + .../sql_stmt_tests/reflectcoords10.testcase | 7 + .../sql_stmt_tests/reflectcoords11.testcase | 7 + .../sql_stmt_tests/reflectcoords12.testcase | 7 + .../sql_stmt_tests/reflectcoords13.testcase | 7 + .../sql_stmt_tests/reflectcoords14.testcase | 7 + .../sql_stmt_tests/reflectcoords15.testcase | 7 + .../sql_stmt_tests/reflectcoords16.testcase | 7 + .../sql_stmt_tests/reflectcoords17.testcase | 7 + .../sql_stmt_tests/reflectcoords2.testcase | 7 + .../sql_stmt_tests/reflectcoords3.testcase | 7 + .../sql_stmt_tests/reflectcoords4.testcase | 7 + .../sql_stmt_tests/reflectcoords5.testcase | 7 + .../sql_stmt_tests/reflectcoords6.testcase | 7 + .../sql_stmt_tests/reflectcoords7.testcase | 7 + .../sql_stmt_tests/reflectcoords8.testcase | 7 + .../sql_stmt_tests/reflectcoords9.testcase | 7 + .../test/sql_stmt_tests/removepoint1.testcase | 7 + .../sql_stmt_tests/removepoint10.testcase | 7 + .../sql_stmt_tests/removepoint11.testcase | 7 + .../sql_stmt_tests/removepoint12.testcase | 7 + .../sql_stmt_tests/removepoint13.testcase | 7 + .../sql_stmt_tests/removepoint14.testcase | 7 + .../sql_stmt_tests/removepoint15.testcase | 7 + .../sql_stmt_tests/removepoint16.testcase | 7 + .../test/sql_stmt_tests/removepoint2.testcase | 7 + .../test/sql_stmt_tests/removepoint3.testcase | 7 + .../test/sql_stmt_tests/removepoint4.testcase | 7 + .../test/sql_stmt_tests/removepoint5.testcase | 7 + .../test/sql_stmt_tests/removepoint6.testcase | 7 + .../test/sql_stmt_tests/removepoint7.testcase | 7 + .../test/sql_stmt_tests/removepoint8.testcase | 7 + .../test/sql_stmt_tests/removepoint9.testcase | 7 + .../test/sql_stmt_tests/reverse1.testcase | 7 + .../test/sql_stmt_tests/reverse2.testcase | 7 + .../test/sql_stmt_tests/reverse3.testcase | 7 + .../test/sql_stmt_tests/reverse4.testcase | 7 + .../test/sql_stmt_tests/reverse5.testcase | 7 + .../test/sql_stmt_tests/reverse6.testcase | 7 + .../test/sql_stmt_tests/ring1.testcase | 7 + .../test/sql_stmt_tests/ring10.testcase | 7 + .../test/sql_stmt_tests/ring11.testcase | 7 + .../test/sql_stmt_tests/ring12.testcase | 7 + .../test/sql_stmt_tests/ring13.testcase | 7 + .../test/sql_stmt_tests/ring14.testcase | 7 + .../test/sql_stmt_tests/ring15.testcase | 7 + .../test/sql_stmt_tests/ring16.testcase | 7 + .../test/sql_stmt_tests/ring17.testcase | 7 + .../test/sql_stmt_tests/ring18.testcase | 7 + .../test/sql_stmt_tests/ring19.testcase | 7 + .../test/sql_stmt_tests/ring2.testcase | 7 + .../test/sql_stmt_tests/ring20.testcase | 7 + .../test/sql_stmt_tests/ring21.testcase | 7 + .../test/sql_stmt_tests/ring22.testcase | 7 + .../test/sql_stmt_tests/ring23.testcase | 7 + .../test/sql_stmt_tests/ring24.testcase | 7 + .../test/sql_stmt_tests/ring25.testcase | 7 + .../test/sql_stmt_tests/ring26.testcase | 7 + .../test/sql_stmt_tests/ring27.testcase | 7 + .../test/sql_stmt_tests/ring28.testcase | 7 + .../test/sql_stmt_tests/ring3.testcase | 7 + .../test/sql_stmt_tests/ring4.testcase | 7 + .../test/sql_stmt_tests/ring5.testcase | 7 + .../test/sql_stmt_tests/ring6.testcase | 7 + .../test/sql_stmt_tests/ring7.testcase | 7 + .../test/sql_stmt_tests/ring8.testcase | 7 + .../test/sql_stmt_tests/ring9.testcase | 7 + .../sql_stmt_tests/rotatecoords1.testcase | 19 + .../sql_stmt_tests/rotatecoords10.testcase | 19 + .../sql_stmt_tests/rotatecoords11.testcase | 19 + .../sql_stmt_tests/rotatecoords12.testcase | 19 + .../sql_stmt_tests/rotatecoords13.testcase | 19 + .../sql_stmt_tests/rotatecoords14.testcase | 19 + .../sql_stmt_tests/rotatecoords2.testcase | 19 + .../sql_stmt_tests/rotatecoords3.testcase | 19 + .../sql_stmt_tests/rotatecoords4.testcase | 19 + .../sql_stmt_tests/rotatecoords5.testcase | 19 + .../sql_stmt_tests/rotatecoords6.testcase | 19 + .../sql_stmt_tests/rotatecoords7.testcase | 19 + .../sql_stmt_tests/rotatecoords8.testcase | 19 + .../sql_stmt_tests/rotatecoords9.testcase | 19 + .../test/sql_stmt_tests/routing1.testcase | 30 + .../test/sql_stmt_tests/routing2.testcase | 30 + .../test/sql_stmt_tests/routing3.testcase | 30 + .../test/sql_stmt_tests/routing4.testcase | 30 + .../test/sql_stmt_tests/routing5.testcase | 30 + .../test/sql_stmt_tests/rtreealign1.testcase | 7 + .../test/sql_stmt_tests/rtreealign2.testcase | 7 + .../test/sql_stmt_tests/rtreealign3.testcase | 7 + .../test/sql_stmt_tests/rtreealign4.testcase | 7 + src/spatialite/test/sql_stmt_tests/sandro.jpg | Bin 0 -> 23003 bytes .../sql_stmt_tests/sanitizeGeometry1.testcase | 9 + .../sanitizeGeometry10.testcase | 9 + .../sanitizeGeometry11.testcase | 9 + .../sanitizeGeometry12.testcase | 10 + .../sanitizeGeometry13.testcase | 9 + .../sanitizeGeometry14.testcase | 9 + .../sanitizeGeometry15.testcase | 9 + .../sanitizeGeometry16.testcase | 9 + .../sql_stmt_tests/sanitizeGeometry2.testcase | 10 + .../sql_stmt_tests/sanitizeGeometry3.testcase | 10 + .../sql_stmt_tests/sanitizeGeometry4.testcase | 9 + .../sql_stmt_tests/sanitizeGeometry5.testcase | 9 + .../sql_stmt_tests/sanitizeGeometry6.testcase | 9 + .../sql_stmt_tests/sanitizeGeometry7.testcase | 9 + .../sql_stmt_tests/sanitizeGeometry8.testcase | 9 + .../sql_stmt_tests/sanitizeGeometry9.testcase | 9 + .../test/sql_stmt_tests/scalecoords1.testcase | 21 + .../sql_stmt_tests/scalecoords10.testcase | 21 + .../sql_stmt_tests/scalecoords11.testcase | 21 + .../sql_stmt_tests/scalecoords12.testcase | 21 + .../sql_stmt_tests/scalecoords13.testcase | 21 + .../test/sql_stmt_tests/scalecoords2.testcase | 21 + .../test/sql_stmt_tests/scalecoords3.testcase | 21 + .../test/sql_stmt_tests/scalecoords4.testcase | 21 + .../test/sql_stmt_tests/scalecoords5.testcase | 21 + .../test/sql_stmt_tests/scalecoords6.testcase | 21 + .../test/sql_stmt_tests/scalecoords7.testcase | 21 + .../test/sql_stmt_tests/scalecoords8.testcase | 21 + .../test/sql_stmt_tests/scalecoords9.testcase | 21 + .../test/sql_stmt_tests/seconds.wav | Bin 0 -> 388 bytes .../test/sql_stmt_tests/setpoint1.testcase | 7 + .../test/sql_stmt_tests/setpoint10.testcase | 7 + .../test/sql_stmt_tests/setpoint11.testcase | 7 + .../test/sql_stmt_tests/setpoint12.testcase | 7 + .../test/sql_stmt_tests/setpoint13.testcase | 7 + .../test/sql_stmt_tests/setpoint14.testcase | 7 + .../test/sql_stmt_tests/setpoint15.testcase | 7 + .../test/sql_stmt_tests/setpoint16.testcase | 7 + .../test/sql_stmt_tests/setpoint17.testcase | 7 + .../test/sql_stmt_tests/setpoint18.testcase | 7 + .../test/sql_stmt_tests/setpoint19.testcase | 7 + .../test/sql_stmt_tests/setpoint2.testcase | 7 + .../test/sql_stmt_tests/setpoint20.testcase | 7 + .../test/sql_stmt_tests/setpoint21.testcase | 7 + .../test/sql_stmt_tests/setpoint22.testcase | 7 + .../test/sql_stmt_tests/setpoint23.testcase | 7 + .../test/sql_stmt_tests/setpoint3.testcase | 7 + .../test/sql_stmt_tests/setpoint4.testcase | 7 + .../test/sql_stmt_tests/setpoint5.testcase | 7 + .../test/sql_stmt_tests/setpoint6.testcase | 7 + .../test/sql_stmt_tests/setpoint7.testcase | 7 + .../test/sql_stmt_tests/setpoint8.testcase | 7 + .../test/sql_stmt_tests/setpoint9.testcase | 7 + .../test/sql_stmt_tests/shiftcoords1.testcase | 7 + .../sql_stmt_tests/shiftcoords10.testcase | 7 + .../sql_stmt_tests/shiftcoords11.testcase | 7 + .../sql_stmt_tests/shiftcoords12.testcase | 7 + .../sql_stmt_tests/shiftcoords13.testcase | 7 + .../sql_stmt_tests/shiftcoords14.testcase | 7 + .../sql_stmt_tests/shiftcoords15.testcase | 7 + .../test/sql_stmt_tests/shiftcoords2.testcase | 7 + .../test/sql_stmt_tests/shiftcoords3.testcase | 7 + .../test/sql_stmt_tests/shiftcoords4.testcase | 7 + .../test/sql_stmt_tests/shiftcoords5.testcase | 10 + .../test/sql_stmt_tests/shiftcoords6.testcase | 7 + .../test/sql_stmt_tests/shiftcoords7.testcase | 7 + .../test/sql_stmt_tests/shiftcoords8.testcase | 7 + .../test/sql_stmt_tests/shiftcoords9.testcase | 7 + .../sql_stmt_tests/shiftlongitude1.testcase | 7 + .../sql_stmt_tests/shiftlongitude10.testcase | 7 + .../sql_stmt_tests/shiftlongitude11.testcase | 7 + .../sql_stmt_tests/shiftlongitude12.testcase | 7 + .../sql_stmt_tests/shiftlongitude13.testcase | 7 + .../sql_stmt_tests/shiftlongitude14.testcase | 7 + .../sql_stmt_tests/shiftlongitude15.testcase | 7 + .../sql_stmt_tests/shiftlongitude16.testcase | 7 + .../sql_stmt_tests/shiftlongitude17.testcase | 7 + .../sql_stmt_tests/shiftlongitude18.testcase | 7 + .../sql_stmt_tests/shiftlongitude19.testcase | 7 + .../sql_stmt_tests/shiftlongitude2.testcase | 7 + .../sql_stmt_tests/shiftlongitude20.testcase | 7 + .../sql_stmt_tests/shiftlongitude21.testcase | 7 + .../sql_stmt_tests/shiftlongitude22.testcase | 7 + .../sql_stmt_tests/shiftlongitude23.testcase | 7 + .../sql_stmt_tests/shiftlongitude24.testcase | 7 + .../sql_stmt_tests/shiftlongitude25.testcase | 7 + .../sql_stmt_tests/shiftlongitude26.testcase | 7 + .../sql_stmt_tests/shiftlongitude3.testcase | 7 + .../sql_stmt_tests/shiftlongitude4.testcase | 7 + .../sql_stmt_tests/shiftlongitude5.testcase | 7 + .../sql_stmt_tests/shiftlongitude6.testcase | 7 + .../sql_stmt_tests/shiftlongitude7.testcase | 7 + .../sql_stmt_tests/shiftlongitude8.testcase | 7 + .../sql_stmt_tests/shiftlongitude9.testcase | 7 + .../test/sql_stmt_tests/spatialindex.testcase | 8 + .../test/sql_stmt_tests/srid1.testcase | 7 + .../test/sql_stmt_tests/srid10.testcase | 7 + .../test/sql_stmt_tests/srid11.testcase | 7 + .../test/sql_stmt_tests/srid2.testcase | 7 + .../test/sql_stmt_tests/srid3.testcase | 7 + .../test/sql_stmt_tests/srid4.testcase | 7 + .../test/sql_stmt_tests/srid5.testcase | 7 + .../test/sql_stmt_tests/srid6.testcase | 7 + .../test/sql_stmt_tests/srid7.testcase | 7 + .../test/sql_stmt_tests/srid8.testcase | 7 + .../test/sql_stmt_tests/srid9.testcase | 7 + .../test/sql_stmt_tests/st_m1.testcase | 7 + .../test/sql_stmt_tests/st_m2.testcase | 8 + .../test/sql_stmt_tests/st_m3.testcase | 7 + .../test/sql_stmt_tests/st_m4.testcase | 7 + .../test/sql_stmt_tests/st_m5.testcase | 8 + .../test/sql_stmt_tests/st_m6.testcase | 8 + .../test/sql_stmt_tests/st_m8.testcase | 7 + .../test/sql_stmt_tests/st_x1.testcase | 7 + .../test/sql_stmt_tests/st_x2.testcase | 7 + .../test/sql_stmt_tests/st_x3.testcase | 7 + .../test/sql_stmt_tests/st_x4.testcase | 7 + .../test/sql_stmt_tests/st_x5.testcase | 8 + .../test/sql_stmt_tests/st_x6.testcase | 8 + .../test/sql_stmt_tests/st_x7.testcase | 7 + .../test/sql_stmt_tests/st_x8.testcase | 7 + .../test/sql_stmt_tests/st_x9.testcase | 7 + .../test/sql_stmt_tests/st_y1.testcase | 7 + .../test/sql_stmt_tests/st_y2.testcase | 7 + .../test/sql_stmt_tests/st_y3.testcase | 7 + .../test/sql_stmt_tests/st_y4.testcase | 8 + .../test/sql_stmt_tests/st_y5.testcase | 8 + .../test/sql_stmt_tests/st_y7.testcase | 7 + .../test/sql_stmt_tests/st_y8.testcase | 7 + .../test/sql_stmt_tests/st_y9.testcase | 7 + .../test/sql_stmt_tests/st_z1.testcase | 7 + .../test/sql_stmt_tests/st_z2.testcase | 7 + .../test/sql_stmt_tests/st_z3.testcase | 7 + .../test/sql_stmt_tests/st_z4.testcase | 7 + .../test/sql_stmt_tests/st_z5.testcase | 8 + .../test/sql_stmt_tests/st_z6.testcase | 8 + .../test/sql_stmt_tests/st_z7.testcase | 7 + .../test/sql_stmt_tests/st_z8.testcase | 7 + .../test/sql_stmt_tests/st_z9.testcase | 7 + .../test/sql_stmt_tests/startpoint1.testcase | 7 + .../test/sql_stmt_tests/startpoint2.testcase | 7 + .../test/sql_stmt_tests/startpoint3.testcase | 7 + .../test/sql_stmt_tests/swapcoords1.testcase | 7 + .../test/sql_stmt_tests/swapcoords10.testcase | 7 + .../test/sql_stmt_tests/swapcoords11.testcase | 7 + .../test/sql_stmt_tests/swapcoords2.testcase | 7 + .../test/sql_stmt_tests/swapcoords3.testcase | 7 + .../test/sql_stmt_tests/swapcoords4.testcase | 7 + .../test/sql_stmt_tests/swapcoords5.testcase | 7 + .../test/sql_stmt_tests/swapcoords6.testcase | 7 + .../test/sql_stmt_tests/swapcoords7.testcase | 7 + .../test/sql_stmt_tests/swapcoords8.testcase | 7 + .../test/sql_stmt_tests/swapcoords9.testcase | 7 + src/spatialite/test/sql_stmt_tests/test.webp | Bin 0 -> 4928 bytes .../test/sql_stmt_tests/testFDO.sqlite | Bin 0 -> 129024 bytes .../test/sql_stmt_tests/testFGF.sqlite | Bin 0 -> 229376 bytes .../test/sql_stmt_tests/testdb1.sqlite | Bin 0 -> 4213760 bytes .../test/sql_stmt_tests/todms1.testcase | 8 + .../test/sql_stmt_tests/todms10.testcase | 8 + .../test/sql_stmt_tests/todms11.testcase | 8 + .../test/sql_stmt_tests/todms12.testcase | 8 + .../test/sql_stmt_tests/todms13.testcase | 8 + .../test/sql_stmt_tests/todms2.testcase | 8 + .../test/sql_stmt_tests/todms3.testcase | 8 + .../test/sql_stmt_tests/todms4.testcase | 8 + .../test/sql_stmt_tests/todms5.testcase | 8 + .../test/sql_stmt_tests/todms6.testcase | 8 + .../test/sql_stmt_tests/todms7.testcase | 8 + .../test/sql_stmt_tests/todms8.testcase | 8 + .../test/sql_stmt_tests/todms9.testcase | 8 + .../test/sql_stmt_tests/togars1.testcase | 7 + .../test/sql_stmt_tests/togars10.testcase | 7 + .../test/sql_stmt_tests/togars11.testcase | 7 + .../test/sql_stmt_tests/togars12.testcase | 7 + .../test/sql_stmt_tests/togars13.testcase | 7 + .../test/sql_stmt_tests/togars2.testcase | 7 + .../test/sql_stmt_tests/togars3.testcase | 7 + .../test/sql_stmt_tests/togars4.testcase | 7 + .../test/sql_stmt_tests/togars5.testcase | 7 + .../test/sql_stmt_tests/togars6.testcase | 7 + .../test/sql_stmt_tests/togars7.testcase | 7 + .../test/sql_stmt_tests/togars8.testcase | 7 + .../test/sql_stmt_tests/togars9.testcase | 7 + .../test/sql_stmt_tests/translate1.testcase | 7 + .../test/sql_stmt_tests/translate10.testcase | 7 + .../test/sql_stmt_tests/translate11.testcase | 7 + .../test/sql_stmt_tests/translate12.testcase | 7 + .../test/sql_stmt_tests/translate13.testcase | 7 + .../test/sql_stmt_tests/translate14.testcase | 7 + .../test/sql_stmt_tests/translate15.testcase | 7 + .../test/sql_stmt_tests/translate16.testcase | 7 + .../test/sql_stmt_tests/translate17.testcase | 7 + .../test/sql_stmt_tests/translate18.testcase | 7 + .../test/sql_stmt_tests/translate19.testcase | 7 + .../test/sql_stmt_tests/translate2.testcase | 7 + .../test/sql_stmt_tests/translate3.testcase | 7 + .../test/sql_stmt_tests/translate4.testcase | 7 + .../test/sql_stmt_tests/translate5.testcase | 10 + .../test/sql_stmt_tests/translate6.testcase | 7 + .../test/sql_stmt_tests/translate7.testcase | 7 + .../test/sql_stmt_tests/translate8.testcase | 7 + .../test/sql_stmt_tests/translate9.testcase | 7 + .../test/sql_stmt_tests/trivial.sqlite_RO | Bin 0 -> 2048 bytes .../sql_stmt_tests/uncompressgeom1.testcase | 7 + .../sql_stmt_tests/uncompressgeom2.testcase | 7 + .../sql_stmt_tests/uncompressgeom3.testcase | 7 + .../sql_stmt_tests/unsafeTriggers1.testcase | 7 + .../test/sql_stmt_tests/updatestats1.testcase | 7 + .../sql_stmt_tests/updatestats10.testcase | 7 + .../test/sql_stmt_tests/updatestats2.testcase | 7 + .../test/sql_stmt_tests/updatestats3.testcase | 7 + .../test/sql_stmt_tests/updatestats4.testcase | 7 + .../test/sql_stmt_tests/updatestats5.testcase | 7 + .../test/sql_stmt_tests/updatestats6.testcase | 7 + .../test/sql_stmt_tests/updatestats7.testcase | 7 + .../test/sql_stmt_tests/updatestats8.testcase | 7 + .../test/sql_stmt_tests/updatestats9.testcase | 7 + .../test/sql_stmt_tests/us_ch_m.testcase | 7 + .../test/sql_stmt_tests/us_ft_m.testcase | 7 + .../test/sql_stmt_tests/us_in_m.testcase | 7 + .../test/sql_stmt_tests/us_mi_m.testcase | 7 + .../test/sql_stmt_tests/us_yd_m.testcase | 7 + .../test/sql_stmt_tests/wkb1.testcase | 7 + .../test/sql_stmt_tests/wkb10.testcase | 7 + .../test/sql_stmt_tests/wkb11.testcase | 7 + .../test/sql_stmt_tests/wkb12.testcase | 7 + .../test/sql_stmt_tests/wkb13.testcase | 7 + .../test/sql_stmt_tests/wkb14.testcase | 7 + .../test/sql_stmt_tests/wkb15.testcase | 7 + .../test/sql_stmt_tests/wkb16.testcase | 7 + .../test/sql_stmt_tests/wkb17.testcase | 7 + .../test/sql_stmt_tests/wkb18.testcase | 7 + .../test/sql_stmt_tests/wkb19.testcase | 7 + .../test/sql_stmt_tests/wkb2.testcase | 7 + .../test/sql_stmt_tests/wkb20.testcase | 7 + .../test/sql_stmt_tests/wkb21.testcase | 7 + .../test/sql_stmt_tests/wkb22.testcase | 7 + .../test/sql_stmt_tests/wkb23.testcase | 7 + .../test/sql_stmt_tests/wkb24.testcase | 7 + .../test/sql_stmt_tests/wkb25.testcase | 7 + .../test/sql_stmt_tests/wkb26.testcase | 7 + .../test/sql_stmt_tests/wkb27.testcase | 7 + .../test/sql_stmt_tests/wkb28.testcase | 7 + .../test/sql_stmt_tests/wkb29.testcase | 7 + .../test/sql_stmt_tests/wkb3.testcase | 7 + .../test/sql_stmt_tests/wkb30.testcase | 7 + .../test/sql_stmt_tests/wkb31.testcase | 7 + .../test/sql_stmt_tests/wkb32.testcase | 7 + .../test/sql_stmt_tests/wkb33.testcase | 7 + .../test/sql_stmt_tests/wkb34.testcase | 7 + .../test/sql_stmt_tests/wkb35.testcase | 7 + .../test/sql_stmt_tests/wkb36.testcase | 7 + .../test/sql_stmt_tests/wkb4.testcase | 7 + .../test/sql_stmt_tests/wkb5.testcase | 7 + .../test/sql_stmt_tests/wkb6.testcase | 7 + .../test/sql_stmt_tests/wkb7.testcase | 7 + .../test/sql_stmt_tests/wkb8.testcase | 7 + .../test/sql_stmt_tests/wkb9.testcase | 7 + .../test/sql_stmt_tests/wkbtosql1.testcase | 7 + .../test/sql_stmt_tests/wkbtosql2.testcase | 7 + .../test/sql_stmt_tests/wkbtosql3.testcase | 7 + .../test/sql_stmt_tests/wkttosql1.testcase | 7 + .../test/sql_stmt_tests/wkttosql2.testcase | 7 + .../test/sql_stmt_tests/wkttosql3.testcase | 7 + .../test/sql_stmt_tests/yd_m.testcase | 7 + .../test/sql_stmt_xmlsec_tests/Makefile.am | 23 + .../test/sql_stmt_xmlsec_tests/Makefile.in | 459 + .../sql_stmt_xmlsec_tests/loadxml1.testcase | 7 + .../sql_stmt_xmlsec_tests/loadxml2.testcase | 7 + .../sql_stmt_xmlsec_tests/loadxml3.testcase | 7 + .../sql_stmt_xmlsec_tests/loadxml4.testcase | 7 + .../sql_stmt_xmlsec_tests/loadxml5.testcase | 7 + .../sql_stmt_xmlsec_tests/loadxml6.testcase | 8 + .../sql_stmt_xmlsec_tests/storexml1.testcase | 7 + .../sql_stmt_xmlsec_tests/storexml10.testcase | 7 + .../sql_stmt_xmlsec_tests/storexml11.testcase | 7 + .../sql_stmt_xmlsec_tests/storexml12.testcase | 7 + .../sql_stmt_xmlsec_tests/storexml13.testcase | 7 + .../sql_stmt_xmlsec_tests/storexml14.testcase | 7 + .../sql_stmt_xmlsec_tests/storexml15.testcase | 7 + .../sql_stmt_xmlsec_tests/storexml16.testcase | 7 + .../sql_stmt_xmlsec_tests/storexml2.testcase | 7 + .../sql_stmt_xmlsec_tests/storexml3.testcase | 7 + .../sql_stmt_xmlsec_tests/storexml4.testcase | 7 + .../sql_stmt_xmlsec_tests/storexml5.testcase | 7 + .../sql_stmt_xmlsec_tests/storexml6.testcase | 7 + .../sql_stmt_xmlsec_tests/storexml7.testcase | 7 + .../sql_stmt_xmlsec_tests/storexml8.testcase | 7 + .../sql_stmt_xmlsec_tests/storexml9.testcase | 7 + src/spatialite/test/stazioni_se.xml | 102 + src/spatialite/test/symbol.dxf | 204 + src/spatialite/test/test-invalid.sqlite | Bin 0 -> 435200 bytes src/spatialite/test/test-legacy-2.3.1.sqlite | Bin 0 -> 15360 bytes src/spatialite/test/test-legacy-3.0.1.sqlite | Bin 0 -> 32768 bytes src/spatialite/test/test.webp | Bin 0 -> 4928 bytes src/spatialite/test/test.wfs | 1 + .../test/testDescribeFeatureType.wfs | 38 + src/spatialite/test/test_geos.sqlite | Bin 0 -> 272384 bytes src/spatialite/test/test_helpers.h | 80 + src/spatialite/test/test_under_valgrind.sh | 6 + src/spatialite/test/testcase1.csv | 17 + src/spatialite/test/testcase1.xls | Bin 0 -> 16896 bytes src/spatialite/test/thunderstorm_mild.svg | 79 + src/spatialite/test/tile000.jpeg | Bin 0 -> 9137 bytes src/spatialite/test/tile100.jpeg | Bin 0 -> 9124 bytes src/spatialite/test/tile101.jpeg | Bin 0 -> 6742 bytes src/spatialite/test/tile110.jpeg | Bin 0 -> 9847 bytes src/spatialite/test/tile111.jpeg | Bin 0 -> 6173 bytes 4080 files changed, 532050 insertions(+), 37 deletions(-) create mode 100644 src/spatialite/AUTHORS create mode 100644 src/spatialite/Android.mk create mode 100644 src/spatialite/Android_4.2.0.mk create mode 100644 src/spatialite/COPYING create mode 100644 src/spatialite/Doxyfile.in create mode 100644 src/spatialite/INSTALL create mode 100644 src/spatialite/Makefile.am create mode 100644 src/spatialite/Makefile.in create mode 100644 src/spatialite/README create mode 100644 src/spatialite/README.coverage create mode 100644 src/spatialite/aclocal.m4 create mode 100644 src/spatialite/config-msvc.h create mode 100755 src/spatialite/config.guess create mode 100644 src/spatialite/config.h.in create mode 100755 src/spatialite/config.sub create mode 100755 src/spatialite/configure create mode 100644 src/spatialite/configure.ac create mode 100755 src/spatialite/depcomp create mode 100644 src/spatialite/examples/Makefile.am create mode 100644 src/spatialite/examples/Makefile.in create mode 100644 src/spatialite/examples/demo1.c create mode 100644 src/spatialite/examples/demo2.c create mode 100644 src/spatialite/examples/demo3.c create mode 100644 src/spatialite/examples/demo4.c create mode 100644 src/spatialite/examples/demo5.c create mode 100644 src/spatialite/examples/examples.doxy create mode 100755 src/spatialite/install-sh create mode 100644 src/spatialite/ltmain.sh create mode 100644 src/spatialite/m4/libtool.m4 create mode 100644 src/spatialite/m4/ltoptions.m4 create mode 100644 src/spatialite/m4/ltsugar.m4 create mode 100644 src/spatialite/m4/ltversion.m4 create mode 100644 src/spatialite/m4/lt~obsolete.m4 create mode 100644 src/spatialite/mainpage.doxy create mode 100644 src/spatialite/makefile.vc create mode 100755 src/spatialite/missing create mode 100644 src/spatialite/nmake.opt create mode 100644 src/spatialite/spatialite-4.2.0.mk create mode 100644 src/spatialite/spatialite-sql-latest.html create mode 100644 src/spatialite/spatialite.pc.in create mode 100644 src/spatialite/src/Makefile.am create mode 100644 src/spatialite/src/Makefile.in create mode 100644 src/spatialite/src/connection_cache/Makefile.am create mode 100644 src/spatialite/src/connection_cache/Makefile.in create mode 100644 src/spatialite/src/connection_cache/alloc_cache.c create mode 100644 src/spatialite/src/connection_cache/cache_aux_1.h create mode 100644 src/spatialite/src/connection_cache/cache_aux_2.h create mode 100644 src/spatialite/src/connection_cache/cache_aux_3.h create mode 100644 src/spatialite/src/connection_cache/generator/Makefile.am create mode 100644 src/spatialite/src/connection_cache/generator/Makefile.in create mode 100644 src/spatialite/src/connection_cache/generator/README.txt create mode 100644 src/spatialite/src/connection_cache/generator/code_generator.c create mode 100644 src/spatialite/src/dxf/Makefile.am create mode 100644 src/spatialite/src/dxf/Makefile.in create mode 100644 src/spatialite/src/dxf/dxf_load_distinct.c create mode 100644 src/spatialite/src/dxf/dxf_load_mixed.c create mode 100644 src/spatialite/src/dxf/dxf_loader.c create mode 100644 src/spatialite/src/dxf/dxf_parser.c create mode 100644 src/spatialite/src/dxf/dxf_private.h create mode 100644 src/spatialite/src/dxf/dxf_writer.c create mode 100644 src/spatialite/src/gaiaaux/Makefile.am create mode 100644 src/spatialite/src/gaiaaux/Makefile.in create mode 100644 src/spatialite/src/gaiaaux/gg_sqlaux.c create mode 100644 src/spatialite/src/gaiaaux/gg_utf8.c create mode 100644 src/spatialite/src/gaiaexif/Makefile.am create mode 100644 src/spatialite/src/gaiaexif/Makefile.in create mode 100644 src/spatialite/src/gaiaexif/gaia_exif.c create mode 100644 src/spatialite/src/gaiageo/Ewkt.c create mode 100644 src/spatialite/src/gaiageo/Ewkt.h create mode 100644 src/spatialite/src/gaiageo/Gml.c create mode 100644 src/spatialite/src/gaiageo/Gml.h create mode 100644 src/spatialite/src/gaiageo/Kml.c create mode 100644 src/spatialite/src/gaiageo/Kml.h create mode 100644 src/spatialite/src/gaiageo/Makefile.am create mode 100644 src/spatialite/src/gaiageo/Makefile.in create mode 100644 src/spatialite/src/gaiageo/flex/Makefile.am create mode 100644 src/spatialite/src/gaiageo/flex/Makefile.in create mode 100644 src/spatialite/src/gaiageo/flex/ReadMe.txt create mode 100644 src/spatialite/src/gaiageo/flex/ewktLexer.l create mode 100644 src/spatialite/src/gaiageo/flex/geoJsonLexer.l create mode 100644 src/spatialite/src/gaiageo/flex/gmlLexer.l create mode 100644 src/spatialite/src/gaiageo/flex/kmlLexer.l create mode 100644 src/spatialite/src/gaiageo/flex/vanuatuLexer.l create mode 100644 src/spatialite/src/gaiageo/geoJSON.c create mode 100644 src/spatialite/src/gaiageo/geoJSON.h create mode 100644 src/spatialite/src/gaiageo/gg_advanced.c create mode 100644 src/spatialite/src/gaiageo/gg_endian.c create mode 100644 src/spatialite/src/gaiageo/gg_ewkt.c create mode 100644 src/spatialite/src/gaiageo/gg_extras.c create mode 100644 src/spatialite/src/gaiageo/gg_geoJSON.c create mode 100644 src/spatialite/src/gaiageo/gg_geodesic.c create mode 100644 src/spatialite/src/gaiageo/gg_geometries.c create mode 100644 src/spatialite/src/gaiageo/gg_geoscvt.c create mode 100644 src/spatialite/src/gaiageo/gg_gml.c create mode 100644 src/spatialite/src/gaiageo/gg_kml.c create mode 100644 src/spatialite/src/gaiageo/gg_lwgeom.c create mode 100644 src/spatialite/src/gaiageo/gg_relations.c create mode 100644 src/spatialite/src/gaiageo/gg_relations_ext.c create mode 100644 src/spatialite/src/gaiageo/gg_shape.c create mode 100644 src/spatialite/src/gaiageo/gg_transform.c create mode 100644 src/spatialite/src/gaiageo/gg_vanuatu.c create mode 100644 src/spatialite/src/gaiageo/gg_voronoj.c create mode 100644 src/spatialite/src/gaiageo/gg_wkb.c create mode 100644 src/spatialite/src/gaiageo/gg_wkt.c create mode 100644 src/spatialite/src/gaiageo/gg_xml.c create mode 100644 src/spatialite/src/gaiageo/lemon/Ewkt.y create mode 100644 src/spatialite/src/gaiageo/lemon/Gml.y create mode 100644 src/spatialite/src/gaiageo/lemon/Kml.y create mode 100644 src/spatialite/src/gaiageo/lemon/Makefile.am create mode 100644 src/spatialite/src/gaiageo/lemon/Makefile.in create mode 100644 src/spatialite/src/gaiageo/lemon/ReadMe.txt create mode 100644 src/spatialite/src/gaiageo/lemon/geoJSON.y create mode 100644 src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.am create mode 100644 src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.in create mode 100644 src/spatialite/src/gaiageo/lemon/lemon_src/lemon.c create mode 100644 src/spatialite/src/gaiageo/lemon/lemon_src/lempar.c create mode 100644 src/spatialite/src/gaiageo/lemon/vanuatuWkt.y create mode 100644 src/spatialite/src/gaiageo/lex.Ewkt.c create mode 100644 src/spatialite/src/gaiageo/lex.GeoJson.c create mode 100644 src/spatialite/src/gaiageo/lex.Gml.c create mode 100644 src/spatialite/src/gaiageo/lex.Kml.c create mode 100644 src/spatialite/src/gaiageo/lex.VanuatuWkt.c create mode 100644 src/spatialite/src/gaiageo/vanuatuWkt.c create mode 100644 src/spatialite/src/gaiageo/vanuatuWkt.h create mode 100644 src/spatialite/src/geopackage/Makefile.am create mode 100644 src/spatialite/src/geopackage/Makefile.in create mode 100644 src/spatialite/src/geopackage/gaia_cvt_gpkg.c create mode 100644 src/spatialite/src/geopackage/geopackage_internal.h create mode 100644 src/spatialite/src/geopackage/gpkgAddGeometryColumn.c create mode 100644 src/spatialite/src/geopackage/gpkgBinary.c create mode 100644 src/spatialite/src/geopackage/gpkgCreateBaseTables.c create mode 100644 src/spatialite/src/geopackage/gpkgCreateTilesTable.c create mode 100644 src/spatialite/src/geopackage/gpkgCreateTilesZoomLevel.c create mode 100644 src/spatialite/src/geopackage/gpkgGetImageType.c create mode 100644 src/spatialite/src/geopackage/gpkgInsertEpsgSRID.c create mode 100644 src/spatialite/src/geopackage/gpkgMakePoint.c create mode 100644 src/spatialite/src/geopackage/gpkg_add_geometry_triggers.c create mode 100644 src/spatialite/src/geopackage/gpkg_add_spatial_index.c create mode 100644 src/spatialite/src/geopackage/gpkg_add_tile_triggers.c create mode 100644 src/spatialite/src/geopackage/gpkg_get_normal_row.c create mode 100644 src/spatialite/src/geopackage/gpkg_get_normal_zoom.c create mode 100644 src/spatialite/src/headers/Makefile.am create mode 100644 src/spatialite/src/headers/Makefile.in create mode 100644 src/spatialite/src/headers/spatialite.h create mode 100644 src/spatialite/src/headers/spatialite/debug.h create mode 100644 src/spatialite/src/headers/spatialite/gaiaaux.h create mode 100644 src/spatialite/src/headers/spatialite/gaiaexif.h create mode 100644 src/spatialite/src/headers/spatialite/gaiageo.h create mode 100644 src/spatialite/src/headers/spatialite/geopackage.h create mode 100644 src/spatialite/src/headers/spatialite/gg_advanced.h create mode 100644 src/spatialite/src/headers/spatialite/gg_const.h create mode 100644 src/spatialite/src/headers/spatialite/gg_core.h create mode 100644 src/spatialite/src/headers/spatialite/gg_dxf.h create mode 100644 src/spatialite/src/headers/spatialite/gg_dynamic.h create mode 100644 src/spatialite/src/headers/spatialite/gg_formats.h create mode 100644 src/spatialite/src/headers/spatialite/gg_mbr.h create mode 100644 src/spatialite/src/headers/spatialite/gg_structs.h create mode 100644 src/spatialite/src/headers/spatialite/gg_wfs.h create mode 100644 src/spatialite/src/headers/spatialite/gg_xml.h create mode 100644 src/spatialite/src/headers/spatialite/spatialite.h create mode 100644 src/spatialite/src/headers/spatialite/sqlite.h create mode 100644 src/spatialite/src/headers/spatialite_private.h create mode 100644 src/spatialite/src/md5/Makefile.am create mode 100644 src/spatialite/src/md5/Makefile.in create mode 100644 src/spatialite/src/md5/gaia_md5.c create mode 100644 src/spatialite/src/md5/md5.c create mode 100644 src/spatialite/src/md5/md5.h create mode 100644 src/spatialite/src/shapefiles/Makefile.am create mode 100644 src/spatialite/src/shapefiles/Makefile.in create mode 100644 src/spatialite/src/shapefiles/shapefiles.c create mode 100644 src/spatialite/src/shapefiles/validator.c create mode 100644 src/spatialite/src/spatialite/Makefile.am create mode 100644 src/spatialite/src/spatialite/Makefile.in create mode 100644 src/spatialite/src/spatialite/extra_tables.c create mode 100644 src/spatialite/src/spatialite/mbrcache.c create mode 100644 src/spatialite/src/spatialite/metatables.c create mode 100644 src/spatialite/src/spatialite/spatialite.c create mode 100644 src/spatialite/src/spatialite/spatialite_init.c create mode 100644 src/spatialite/src/spatialite/statistics.c create mode 100644 src/spatialite/src/spatialite/virtualXL.c create mode 100644 src/spatialite/src/spatialite/virtualbbox.c create mode 100644 src/spatialite/src/spatialite/virtualdbf.c create mode 100644 src/spatialite/src/spatialite/virtualfdo.c create mode 100644 src/spatialite/src/spatialite/virtualgpkg.c create mode 100644 src/spatialite/src/spatialite/virtualnetwork.c create mode 100644 src/spatialite/src/spatialite/virtualshape.c create mode 100644 src/spatialite/src/spatialite/virtualspatialindex.c create mode 100644 src/spatialite/src/spatialite/virtualxpath.c create mode 100644 src/spatialite/src/srsinit/Makefile.am create mode 100644 src/spatialite/src/srsinit/Makefile.in create mode 100644 src/spatialite/src/srsinit/epsg_inlined_00.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_01.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_02.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_03.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_04.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_05.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_06.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_07.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_08.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_09.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_10.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_11.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_12.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_13.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_14.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_15.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_16.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_17.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_18.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_19.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_20.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_21.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_22.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_23.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_24.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_25.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_26.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_27.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_28.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_29.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_30.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_31.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_32.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_33.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_34.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_35.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_36.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_37.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_38.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_39.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_40.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_41.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_42.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_43.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_44.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_45.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_extra.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_prussian.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_wgs84_00.c create mode 100644 src/spatialite/src/srsinit/epsg_inlined_wgs84_01.c create mode 100644 src/spatialite/src/srsinit/epsg_update/Makefile.am create mode 100644 src/spatialite/src/srsinit/epsg_update/Makefile.in create mode 100644 src/spatialite/src/srsinit/epsg_update/README.txt create mode 100644 src/spatialite/src/srsinit/epsg_update/auto_epsg.c create mode 100644 src/spatialite/src/srsinit/srs_init.c create mode 100644 src/spatialite/src/versioninfo/version.c create mode 100644 src/spatialite/src/virtualtext/Makefile.am create mode 100644 src/spatialite/src/virtualtext/Makefile.in create mode 100644 src/spatialite/src/virtualtext/virtualtext.c create mode 100644 src/spatialite/src/wfs/Makefile.am create mode 100644 src/spatialite/src/wfs/Makefile.in create mode 100644 src/spatialite/src/wfs/wfs_in.c create mode 100755 src/spatialite/test-driver create mode 100644 src/spatialite/test/22.dxf create mode 100644 src/spatialite/test/Apple-iPhone-4.jpg create mode 100644 src/spatialite/test/Makefile.am create mode 100644 src/spatialite/test/Makefile.in create mode 100644 src/spatialite/test/WritingSQLTestCase.txt create mode 100644 src/spatialite/test/archaic.dxf create mode 100644 src/spatialite/test/asprintf4win.h create mode 100644 src/spatialite/test/books-bad.xml create mode 100644 src/spatialite/test/books-bad.xsd create mode 100644 src/spatialite/test/books.xml create mode 100644 src/spatialite/test/books.xsd create mode 100644 src/spatialite/test/check_add_tile_triggers.c create mode 100644 src/spatialite/test/check_add_tile_triggers_bad_table_name.c create mode 100644 src/spatialite/test/check_bufovflw.c create mode 100644 src/spatialite/test/check_create.c create mode 100644 src/spatialite/test/check_createBaseTables.c create mode 100644 src/spatialite/test/check_dbf_load.c create mode 100644 src/spatialite/test/check_dxf.c create mode 100644 src/spatialite/test/check_endian.c create mode 100644 src/spatialite/test/check_exif.c create mode 100644 src/spatialite/test/check_exif2.c create mode 100644 src/spatialite/test/check_extension.c create mode 100644 src/spatialite/test/check_extra_relations_fncts.c create mode 100644 src/spatialite/test/check_fdo1.c create mode 100644 src/spatialite/test/check_fdo2.c create mode 100644 src/spatialite/test/check_fdo3.c create mode 100644 src/spatialite/test/check_fdo_bufovflw.c create mode 100644 src/spatialite/test/check_gaia_utf8.c create mode 100644 src/spatialite/test/check_gaia_util.c create mode 100644 src/spatialite/test/check_geom_aux.c create mode 100644 src/spatialite/test/check_geometry_cols.c create mode 100644 src/spatialite/test/check_geoscvt_fncts.c create mode 100644 src/spatialite/test/check_get_normal_row.c create mode 100644 src/spatialite/test/check_get_normal_row_bad_geopackage.c create mode 100644 src/spatialite/test/check_get_normal_row_bad_geopackage2.c create mode 100644 src/spatialite/test/check_get_normal_zoom.c create mode 100644 src/spatialite/test/check_get_normal_zoom_bad_geopackage.c create mode 100644 src/spatialite/test/check_get_normal_zoom_bad_geopackage2.c create mode 100644 src/spatialite/test/check_get_normal_zoom_extension_load.c create mode 100644 src/spatialite/test/check_gpkgConvert.c create mode 100644 src/spatialite/test/check_gpkgCreateFeaturesTable.c create mode 100644 src/spatialite/test/check_gpkgCreateTilesTable.c create mode 100644 src/spatialite/test/check_gpkgCreateTilesTableMissingSRID.c create mode 100644 src/spatialite/test/check_gpkgCreateTilesZoomLevel.c create mode 100644 src/spatialite/test/check_gpkgGetImageFormat.c create mode 100644 src/spatialite/test/check_gpkgGetImageFormat_nonblob.c create mode 100644 src/spatialite/test/check_gpkgGetImageFormat_nonimage.c create mode 100644 src/spatialite/test/check_gpkgGetImageFormat_png.c create mode 100644 src/spatialite/test/check_gpkgGetImageFormat_tiff.c create mode 100644 src/spatialite/test/check_gpkgGetImageFormat_webp.c create mode 100644 src/spatialite/test/check_gpkgInsertEpsgSRID.c create mode 100644 src/spatialite/test/check_gpkgVirtual.c create mode 100644 src/spatialite/test/check_gpkg_base_core_container_data_file_format_application_id.c create mode 100644 src/spatialite/test/check_gpkg_base_core_contents_data_table_def.c create mode 100644 src/spatialite/test/check_gpkg_base_core_spatial_ref_sys_data_table_def.c create mode 100644 src/spatialite/test/check_gpkg_base_core_spatial_ref_sys_data_values_default.c create mode 100644 src/spatialite/test/check_gpkg_opt_extension_mechanism_extensions_data_table_def.c create mode 100644 src/spatialite/test/check_init.c create mode 100644 src/spatialite/test/check_init2.c create mode 100644 src/spatialite/test/check_libxml2.c create mode 100644 src/spatialite/test/check_math_funcs.c create mode 100644 src/spatialite/test/check_mbrcache.c create mode 100644 src/spatialite/test/check_md5.c create mode 100644 src/spatialite/test/check_metacatalog.c create mode 100644 src/spatialite/test/check_multithread.c create mode 100644 src/spatialite/test/check_recover_geom.c create mode 100644 src/spatialite/test/check_relations_fncts.c create mode 100644 src/spatialite/test/check_shp_load.c create mode 100644 src/spatialite/test/check_shp_load_3d.c create mode 100644 src/spatialite/test/check_spatialindex.c create mode 100644 src/spatialite/test/check_sql_stmt.c create mode 100644 src/spatialite/test/check_styling.c create mode 100644 src/spatialite/test/check_version.c create mode 100644 src/spatialite/test/check_virtual_ovflw.c create mode 100644 src/spatialite/test/check_virtualbbox.c create mode 100644 src/spatialite/test/check_virtualtable1.c create mode 100644 src/spatialite/test/check_virtualtable2.c create mode 100644 src/spatialite/test/check_virtualtable3.c create mode 100644 src/spatialite/test/check_virtualtable4.c create mode 100644 src/spatialite/test/check_virtualtable5.c create mode 100644 src/spatialite/test/check_virtualtable6.c create mode 100644 src/spatialite/test/check_virtualxpath.c create mode 100644 src/spatialite/test/check_wfsin.c create mode 100644 src/spatialite/test/check_xls_load.c create mode 100644 src/spatialite/test/describefeaturetype.wfs create mode 100644 src/spatialite/test/empty.png create mode 100644 src/spatialite/test/empty.tif create mode 100644 src/spatialite/test/f06.dxf create mode 100644 src/spatialite/test/fnmatch4win.h create mode 100644 src/spatialite/test/fnmatch_impl4win.h create mode 100644 src/spatialite/test/getcapabilities-1.0.0.wfs create mode 100644 src/spatialite/test/getcapabilities-1.1.0.wfs create mode 100644 src/spatialite/test/gpkg_test.gpkg create mode 100644 src/spatialite/test/gpkg_test.sqlite create mode 100644 src/spatialite/test/hatch.dxf create mode 100644 src/spatialite/test/inspire-data-example.xml create mode 100644 src/spatialite/test/l02.dxf create mode 100644 src/spatialite/test/linked.dxf create mode 100644 src/spatialite/test/movies.xml create mode 100644 src/spatialite/test/movies.xsd create mode 100644 src/spatialite/test/opera.xml create mode 100644 src/spatialite/test/opera.xsd create mode 100644 src/spatialite/test/p05.dxf create mode 100644 src/spatialite/test/raster_se.xml create mode 100644 src/spatialite/test/scandir4win.h create mode 100644 src/spatialite/test/shape_3d.c create mode 100644 src/spatialite/test/shape_cp1252.c create mode 100644 src/spatialite/test/shape_primitives.c create mode 100644 src/spatialite/test/shape_utf8_1.c create mode 100644 src/spatialite/test/shape_utf8_1ex.c create mode 100644 src/spatialite/test/shape_utf8_2.c create mode 100644 src/spatialite/test/shapetest1.dbf create mode 100644 src/spatialite/test/shapetest1.prj create mode 100644 src/spatialite/test/shapetest1.qpj create mode 100644 src/spatialite/test/shapetest1.shp create mode 100644 src/spatialite/test/shapetest1.shx create mode 100644 src/spatialite/test/shp/foggia/local_councils.dbf create mode 100644 src/spatialite/test/shp/foggia/local_councils.prj create mode 100644 src/spatialite/test/shp/foggia/local_councils.shp create mode 100644 src/spatialite/test/shp/foggia/local_councils.shx create mode 100644 src/spatialite/test/shp/gaza/aeroway.dbf create mode 100644 src/spatialite/test/shp/gaza/aeroway.prj create mode 100644 src/spatialite/test/shp/gaza/aeroway.shp create mode 100644 src/spatialite/test/shp/gaza/aeroway.shx create mode 100644 src/spatialite/test/shp/gaza/barrier.dbf create mode 100644 src/spatialite/test/shp/gaza/barrier.prj create mode 100644 src/spatialite/test/shp/gaza/barrier.shp create mode 100644 src/spatialite/test/shp/gaza/barrier.shx create mode 100644 src/spatialite/test/shp/gaza/route.dbf create mode 100644 src/spatialite/test/shp/gaza/route.prj create mode 100644 src/spatialite/test/shp/gaza/route.shp create mode 100644 src/spatialite/test/shp/gaza/route.shx create mode 100644 src/spatialite/test/shp/merano-3d/points.dbf create mode 100644 src/spatialite/test/shp/merano-3d/points.prj create mode 100644 src/spatialite/test/shp/merano-3d/points.shp create mode 100644 src/spatialite/test/shp/merano-3d/points.shx create mode 100644 src/spatialite/test/shp/merano-3d/polygons.dbf create mode 100644 src/spatialite/test/shp/merano-3d/polygons.prj create mode 100644 src/spatialite/test/shp/merano-3d/polygons.shp create mode 100644 src/spatialite/test/shp/merano-3d/polygons.shx create mode 100644 src/spatialite/test/shp/merano-3d/roads.dbf create mode 100644 src/spatialite/test/shp/merano-3d/roads.prj create mode 100644 src/spatialite/test/shp/merano-3d/roads.shp create mode 100644 src/spatialite/test/shp/merano-3d/roads.shx create mode 100644 src/spatialite/test/shp/new-caledonia/buildings.dbf create mode 100644 src/spatialite/test/shp/new-caledonia/buildings.prj create mode 100644 src/spatialite/test/shp/new-caledonia/buildings.shp create mode 100644 src/spatialite/test/shp/new-caledonia/buildings.shx create mode 100644 src/spatialite/test/shp/new-caledonia/points.dbf create mode 100644 src/spatialite/test/shp/new-caledonia/points.prj create mode 100644 src/spatialite/test/shp/new-caledonia/points.shp create mode 100644 src/spatialite/test/shp/new-caledonia/points.shx create mode 100644 src/spatialite/test/shp/new-caledonia/railways.dbf create mode 100644 src/spatialite/test/shp/new-caledonia/railways.shp create mode 100644 src/spatialite/test/shp/new-caledonia/railways.shx create mode 100644 src/spatialite/test/shp/taiwan/hystoric.dbf create mode 100644 src/spatialite/test/shp/taiwan/hystoric.prj create mode 100644 src/spatialite/test/shp/taiwan/hystoric.shp create mode 100644 src/spatialite/test/shp/taiwan/hystoric.shx create mode 100644 src/spatialite/test/shp/taiwan/leisure.dbf create mode 100644 src/spatialite/test/shp/taiwan/leisure.prj create mode 100644 src/spatialite/test/shp/taiwan/leisure.shp create mode 100644 src/spatialite/test/shp/taiwan/leisure.shx create mode 100644 src/spatialite/test/shp/taiwan/route.dbf create mode 100644 src/spatialite/test/shp/taiwan/route.prj create mode 100644 src/spatialite/test/shp/taiwan/route.shp create mode 100644 src/spatialite/test/shp/taiwan/route.shx create mode 100644 src/spatialite/test/sld_sample.xml create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/Makefile.am create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/Makefile.in create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/asgpb1.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/asgpb2.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/asgpb3.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/asgpb4.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/asgpb5.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/asgpb6.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb1.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb10.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb11.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb12.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb13.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb14.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb15.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb16.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb17.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb18.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb19.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb2.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb3.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb4.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb5.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb6.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb7.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb8.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb9.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/implicitgeopackagebinary1.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/implicitgeopackagebinary2.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepoint1.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepoint2.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepoint3.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepoint4.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepoint5.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepoint6.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepoint7.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepoint8.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepoint9.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointm1.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointm10.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointm11.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointm2.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointm3.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointm4.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointm5.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointm6.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointm7.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointm8.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointm9.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointz1.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointz10.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointz11.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointz2.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointz3.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointz4.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointz5.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointz6.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointz7.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointz8.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointz9.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointzm1.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointzm10.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointzm11.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointzm12.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointzm13.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointzm14.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointzm15.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointzm2.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointzm3.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointzm4.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointzm5.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointzm6.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointzm7.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointzm8.testcase create mode 100644 src/spatialite/test/sql_stmt_geopackage_tests/makepointzm9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/Makefile.am create mode 100644 src/spatialite/test/sql_stmt_geos_tests/Makefile.in create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb19.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb19.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/boundary9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buffer9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buildarea1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buildarea2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buildarea3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buildarea4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buildarea5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/buildarea6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/centroid8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint19.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint20.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint21.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint22.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/closestpoint9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/convexhull9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/coveredby1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/coveredby2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/covers1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/covers2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/covers_covered1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/covers_covered2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/covers_covered3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/covers_covered4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/covers_covered5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/covers_covered6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/covers_covered7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/createtopo9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/difference9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance_geogr1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance_geogr10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance_geogr11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance_geogr12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance_geogr2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance_geogr3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance_geogr4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance_geogr5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance_geogr6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance_geogr7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance_geogr8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/distance_geogr9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/geoserror1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/geoserror2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/geoserror3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/geoserror4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/geoserror5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/geoserror6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/geoserror7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid19.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid20.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid21.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid22.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid23.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/hexgrid9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolatepoint1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolatepoint10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolatepoint11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolatepoint12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolatepoint13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolatepoint14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolatepoint2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolatepoint3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolatepoint4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolatepoint5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolatepoint6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolatepoint7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolatepoint8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/interpolatepoint9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/intersection9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isclosed9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isring9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/issimple1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/issimple2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/issimple3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/issimple4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/issimple5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/issimple6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid19.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid20.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalid9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvaliddetail1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvaliddetail2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvaliddetail3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvaliddetail4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvaliddetail5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalidreason1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalidreason2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalidreason3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalidreason4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/isvalidreason5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linemerge1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linemerge10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linemerge2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linemerge3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linemerge4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linemerge5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linemerge6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linemerge7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linemerge8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linemerge9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes19.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesnodes9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring19.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring20.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring21.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring22.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring23.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring24.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring25.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring26.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/linesubstring9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/locatepoint1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/locatepoint10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/locatepoint11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/locatepoint12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/locatepoint2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/locatepoint3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/locatepoint4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/locatepoint5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/locatepoint6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/locatepoint7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/locatepoint8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/locatepoint9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makearc15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makearc19.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makearc23.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makecircle10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makecircle11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makecircle12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makecircle13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makecircle14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makecircle15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makecircle16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makecircle17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makecircle18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makecircularsector15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makecircularsector19.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makecircularsector23.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makecircularstripe15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makecircularstripe19.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makecircularstripe23.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makeellipse13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makeellipse17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makeellipse21.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makeellipticarc18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makeellipticarc22.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makeellipticarc26.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makeellipticsector18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makeellipticsector22.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/makeellipticsector26.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/offsetcurve1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/offsetcurve10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/offsetcurve11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/offsetcurve12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/offsetcurve13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/offsetcurve14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/offsetcurve2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/offsetcurve3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/offsetcurve4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/offsetcurve5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/offsetcurve6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/offsetcurve7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/offsetcurve8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/offsetcurve9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/pointonsurface1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/pointonsurface2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/pointonsurface3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/pointonsurface4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/pointonsurface5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/pointonsurface6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/pointonsurface7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/polygonize9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ptdistwithin9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relate9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/relations8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ringsnodes1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ringsnodes2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ringsnodes3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ringsnodes4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ringsnodes5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/ringsnodes6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/routing6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths19.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths20.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths21.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths22.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths23.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths24.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths25.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths26.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths27.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths28.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths29.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths30.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths31.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths32.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/sharedpaths9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/shortestline1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/shortestline2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/shortestline3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/shortestline4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/shortestline5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/shortestline6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/shortestline7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/simplify9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/snap1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/snap10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/snap2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/snap3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/snap4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/snap5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/snap6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/snap7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/snap8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/snap9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid19.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid20.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid21.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid22.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid23.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/squaregrid9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_area9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_length9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/st_perimeter9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/symdifference9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/testgeos1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/testgeos10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/testgeos2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/testgeos3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/testgeos4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/testgeos5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/testgeos6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/testgeos7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/testgeos8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/testgeos9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid19.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid20.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid21.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid22.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid23.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/trianggrid9.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/unaryunion1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/unaryunion2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/unaryunion3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/unaryunion4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/unaryunion5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/unaryunion6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/unaryunion7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/unaryunion8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union1.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union10.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union11.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union12.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union13.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union14.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union15.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union16.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union17.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union18.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union19.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union2.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union20.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union21.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union22.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union23.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union24.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union25.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union26.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union27.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union28.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union29.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union3.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union4.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union5.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union6.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union7.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union8.testcase create mode 100644 src/spatialite/test/sql_stmt_geos_tests/union9.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/Makefile.am create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/Makefile.in create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull1.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull10.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull11.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull12.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull13.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull14.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull15.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull16.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull17.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull18.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull19.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull2.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull3.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull4.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull5.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull6.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull7.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull8.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull9.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay1.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay10.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay11.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay12.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay13.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay14.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay15.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay16.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay17.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay18.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay19.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay2.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay3.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay4.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay5.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay6.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay7.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay8.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay9.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj1.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj10.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj11.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj12.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj13.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj14.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj15.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj16.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj17.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj18.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj19.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj2.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj20.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj3.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj4.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj5.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj6.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj8.testcase create mode 100644 src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj9.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/Makefile.am create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/Makefile.in create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/addfileid1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/addfileid2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/addfileid3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/addfileid4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/addfileid5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/addfileid6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/addfileid7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/addparentid1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/addparentid2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/addparentid3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/addparentid4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/addparentid5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/addparentid6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/addparentid7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/createisometa1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/createisometa2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/createisometa3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/createisometa4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/createisometa5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/createisometa6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/createstyling1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/createstyling2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/createstyling3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/createstyling4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/createstyling5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/createstyling6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isisometadata1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isisometadata2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isisometadata3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isisometadata4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isisometadata5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isisometadata6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isisometadata7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issvg1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issvg2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issvg3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issvg4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issvg5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issvg6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/issvg7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic10.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic11.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic12.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic13.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic14.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic15.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic16.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic17.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic18.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic19.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic20.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic21.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic22.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic8.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic9.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup14.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup15.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup16.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup17.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup18.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup25.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup26.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup27.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup28.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup29.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroup8.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle10.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle11.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle12.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle13.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle14.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle15.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle16.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle17.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle8.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle9.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta10.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta11.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta12.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta13.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta14.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta8.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta9.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster10.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster11.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster12.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster13.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster14.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster15.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster16.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster17.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster8.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerRaster9.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector10.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector11.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector12.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector13.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector14.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector15.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector16.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector17.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector18.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector19.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector20.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector21.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector22.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector8.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/registerVector9.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos10.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos11.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos12.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos13.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos8.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos9.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setfileid1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setfileid2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setfileid3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setfileid4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setfileid5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setparentid1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setparentid2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setparentid3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setparentid4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/setparentid5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname8.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress8.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob10.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob11.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob12.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob13.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob8.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob9.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob10.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob11.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob12.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob13.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob8.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob9.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob10.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob11.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob12.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob13.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob14.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob15.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob16.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob17.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob18.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob8.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob9.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress1.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress2.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress3.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress4.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress5.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress6.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress7.testcase create mode 100644 src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress8.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance1.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance10.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance2.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance3.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance4.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance5.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance6.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance7.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance8.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance9.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance1.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance10.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance2.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance3.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance4.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance5.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance6.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance7.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance8.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance9.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/Makefile.am create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/Makefile.in create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance1.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance10.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance2.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance3.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance4.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance5.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance6.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance7.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance8.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance9.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_area10.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_area11.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_area12.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_area13.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_area14.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_area15.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_area16.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_area17.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_area18.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d1.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d10.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d11.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d12.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d13.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d14.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d15.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d16.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d17.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d18.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d19.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d2.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d20.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d21.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d22.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d23.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d24.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d25.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d26.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d27.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d28.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d29.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d3.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d30.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d4.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d5.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d6.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d7.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d8.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d9.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth1.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth11.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth12.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth13.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth14.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth15.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth16.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth17.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth2.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth3.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth4.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth5.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth6.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth7.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth8.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth9.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash1.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash10.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash2.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash3.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash4.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash5.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash6.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash7.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash8.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash9.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid1.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid2.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid3.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid4.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid5.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid6.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid7.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid8.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded1.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded2.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded3.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded4.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded5.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded6.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded7.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded8.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_node1.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_node2.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_node3.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_node4.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_node5.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_node6.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_node7.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_node8.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_node9.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_project1.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_project10.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_project11.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_project12.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_project13.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_project14.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_project2.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_project3.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_project4.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_project5.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_project6.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_project7.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_project8.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_project9.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize1.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize10.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize11.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize12.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize13.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize14.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize15.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize16.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize17.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize18.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize19.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize2.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize20.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize21.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize22.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize23.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize24.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize25.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize26.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize27.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize28.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize29.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize3.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize30.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize31.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize4.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize5.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize6.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize7.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize8.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize9.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_self1.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_self2.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_self3.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_self4.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_self5.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_self6.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_self7.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_self8.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_self9.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid1.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid10.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid11.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid12.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid13.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid14.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid15.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid16.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid17.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid18.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid19.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid2.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid20.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid21.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid22.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid23.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid24.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid25.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid26.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid27.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid28.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid29.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid3.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid30.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid31.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid32.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid33.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid34.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid35.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid36.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid37.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid38.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid39.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid4.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid40.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid41.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid42.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid43.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid44.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid45.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid46.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid47.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid48.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid49.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid5.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid50.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid51.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid52.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid53.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid54.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid55.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid56.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid57.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid58.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid59.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid6.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid60.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid61.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid62.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid63.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid64.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid65.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid7.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid8.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid9.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split1.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split10.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split11.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split12.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split13.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split14.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split15.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split16.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split17.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split18.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split19.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split2.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split20.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split21.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split22.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split23.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split24.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split25.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split26.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split27.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split28.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split29.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split3.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split30.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split31.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split32.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split33.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split34.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split35.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split36.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split37.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split38.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split39.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split4.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split40.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split41.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split42.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split43.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split44.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split45.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split46.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split47.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split48.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split49.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split5.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split6.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split7.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split8.testcase create mode 100644 src/spatialite/test/sql_stmt_lwgeom_tests/st_split9.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/Makefile.am create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/Makefile.in create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/acos-text.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/acos.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/acos10.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/acos2.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/acos20.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/asin-text.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/asin1.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/asin10.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/asin2.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/asin20.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/atan-text.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/atan0.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/atan00.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/ceil-int.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat2.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/ceilnull.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/cos-text.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/cos0.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/cos00.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/cot-text.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/cot0.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/cot00.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/cotpi2.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/degrees.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/degrees45.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/degreestext.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/exp0.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/exp00.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/exp1.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/exp10.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/expneg.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/exptext.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/floor32.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/floorint.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/floornull.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log10-0.0.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log10-100.0.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log10-100.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log10-text.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log2-0.0.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log2-0.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log2-4.0.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log2-4.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/log2-text.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn-text.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn0.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn00.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn1.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn10.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-01.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-02.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-2.2.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2int.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-text.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-text2.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-text3.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/logn2-text4.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pi.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg1.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg2.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow-edom.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow-fp.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow00-1.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow00-2.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow00.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/pow00double.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/rad-text.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/rad0.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/radpi.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sign0.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sign00.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sign01.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sign10.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/signeg.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/signeg2.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/signeg2int.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/signtext.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sin-pi.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sin-pi2.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sin-text.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sin0.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sin00.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sinpi.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sinpi2.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sqrt-1.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sqrt-10.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sqrt-64.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sqrt-640.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sqrt-text.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sqrt0.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/sqrt00.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/stddev.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/tan-pi.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/tan-text.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/tan0.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/tan00.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/tanpi.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/tanpi4.testcase create mode 100644 src/spatialite/test/sql_stmt_mathsql_tests/variance.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/Makefile.am create mode 100644 src/spatialite/test/sql_stmt_proj_tests/Makefile.in create mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml1.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml10.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml11.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml2.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml3.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml4.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml5.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml6.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml7.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml8.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/askml9.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/fromgml42.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output1.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output10.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output11.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output12.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output13.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output14.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output15.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output16.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output17.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output18.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output19.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output2.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output20.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output21.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output22.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output23.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output24.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output25.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output26.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output27.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output28.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output29.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output3.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output30.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output31.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output32.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output33.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output34.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output35.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output36.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output37.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output38.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output4.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output5.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output6.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output7.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output8.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/output9.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform1.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform10.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform11.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform12.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform13.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform14.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform15.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform16.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform17.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform18.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform19.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform2.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform20.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform21.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform3.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform4.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform5.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform6.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform7.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform8.testcase create mode 100644 src/spatialite/test/sql_stmt_proj_tests/transform9.testcase create mode 100644 src/spatialite/test/sql_stmt_security_tests/Makefile.am create mode 100644 src/spatialite/test/sql_stmt_security_tests/Makefile.in create mode 100644 src/spatialite/test/sql_stmt_security_tests/blobfromfile1.testcase create mode 100644 src/spatialite/test/sql_stmt_security_tests/blobfromfile2.testcase create mode 100644 src/spatialite/test/sql_stmt_security_tests/blobfromfile3.testcase create mode 100644 src/spatialite/test/sql_stmt_security_tests/blobfromfile4.testcase create mode 100644 src/spatialite/test/sql_stmt_security_tests/blobtofile1.testcase create mode 100644 src/spatialite/test/sql_stmt_security_tests/blobtofile2.testcase create mode 100644 src/spatialite/test/sql_stmt_security_tests/blobtofile3.testcase create mode 100644 src/spatialite/test/sql_stmt_security_tests/blobtofile4.testcase create mode 100644 src/spatialite/test/sql_stmt_security_tests/isXblob1.testcase create mode 100644 src/spatialite/test/sql_stmt_security_tests/isXblob2.testcase create mode 100644 src/spatialite/test/sql_stmt_security_tests/isXblob3.testcase create mode 100644 src/spatialite/test/sql_stmt_security_tests/isXblob4.testcase create mode 100644 src/spatialite/test/sql_stmt_security_tests/isXblob8.testcase create mode 100644 src/spatialite/test/sql_stmt_security_tests/isXblob9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/DSCN0042.JPG create mode 100644 src/spatialite/test/sql_stmt_tests/DSC_1467.JPG create mode 100644 src/spatialite/test/sql_stmt_tests/La_folla_durante_il_Palio.jpg create mode 100644 src/spatialite/test/sql_stmt_tests/Makefile.am create mode 100644 src/spatialite/test/sql_stmt_tests/Makefile.in create mode 100644 src/spatialite/test/sql_stmt_tests/NumPoints.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/NumPoints2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/NumPoints3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/NumPoints4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/NumPoints5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/NumPoints6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/NumPoints7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/SridFromAuthCRS.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/SridFromAuthCRS2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/SridFromAuthCRS3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/SridFromAuthCRS4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/SridFromAuthCRS5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/SridFromAuthCRS6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/addpoint9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asbinary9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asewkb9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asfgf1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asfgf2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asfgf3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asfgf4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asfgf5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asfgf6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asfgf7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asfgf8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asfgf9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgeojson1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgeojson2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgeojson3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgeojson4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgeojson5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgeojson6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgeojson7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgeojson8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgml1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgml10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgml11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgml2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgml3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgml4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgml5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgml6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgml7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgml8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/asgml9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/assvg9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/aswkt-text.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badEWKT8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badGML1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badGML2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badGML3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badGML4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badGML5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badGML6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badGML7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badGeoJSON1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badGeoJSON2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badGeoJSON3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badGeoJSON4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badGeoJSON5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badGeoJSON6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badGeoJSON7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badKML1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badKML2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badKML3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badKML4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badKML5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badKML6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badKML7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badwkt1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badwkt2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badwkt3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badwkt4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badwkt5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badwkt6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badwkt7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badwkt8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/badwkt9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildcirclembr9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/buildmbr9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoblob1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoblob10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoblob12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoblob13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoblob14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoblob2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoblob3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoblob4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoblob5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoblob6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoblob7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoblob8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoblob9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttodouble1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttodouble2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttodouble3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttodouble4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttodouble5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttodouble6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttodouble7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttogeometrycollection.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttogeometrycollection2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttogeometrycollection3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttogeometrycollection4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttogeometrycollection5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttogeometrycollection6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoint1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoint2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoint3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoint4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoint5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoint6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoint7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttolinestring8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomulti8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultilinestring1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultilinestring2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultilinestring3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultilinestring4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultilinestring5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultilinestring6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultilinestring7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipoint9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipolygon1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipolygon2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipolygon3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipolygon4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttomultipolygon5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoint8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttopoly8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttosingle9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttotext1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttotext10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttotext11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttotext12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttotext13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttotext14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttotext15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttotext2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttotext3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttotext4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttotext5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttotext6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttotext7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttotext8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttotext9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxy1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxy2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxy3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxym1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxym2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxym3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxym4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxym5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxym6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyz1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyz2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyz3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyz4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyz5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyz6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyzm1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyzm2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyzm3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyzm4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyzm5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/casttoxyzm6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ch_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/checkspatialmetadata1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/checkspatialmetadata2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/checkspatialmetadata3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/checkspatialmetadata4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/checkspatialmetadata5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/cm_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect29.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect30.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect31.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect32.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect33.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect34.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect35.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect36.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect37.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect38.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect39.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect40.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect41.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect42.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect43.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect44.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect45.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect46.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect47.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect48.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect49.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect50.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect51.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect52.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect53.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect54.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect55.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect56.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect57.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect58.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect59.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collect9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/collectextract9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry29.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry30.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry31.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry32.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry33.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry34.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry35.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry36.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry37.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry38.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry39.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry40.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry41.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry42.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry43.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry44.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry45.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry46.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry47.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry48.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry49.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry50.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry51.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry52.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry53.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry54.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry55.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry56.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry57.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry58.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry59.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry60.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry61.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry62.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry63.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry64.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry65.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry66.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry67.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry68.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry69.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/compressgeometry9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/createrastercoverages.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/createuuid1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dimension1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dimension2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dimension3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dimension4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dimension5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dimension6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dimension7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dimension8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve29.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve30.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dissolve9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/dm_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/emptyfile.txt create mode 100644 src/spatialite/test/sql_stmt_tests/endpoint1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envelope1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envelope2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envelope3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envelope4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envelope5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envelope6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envelope7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envintersects1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envintersects10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envintersects2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envintersects3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envintersects4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envintersects5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envintersects6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envintersects7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envintersects8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/envintersects9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ewkb1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ewkb10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ewkb11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ewkb12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ewkb2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ewkb3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ewkb4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ewkb5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ewkb6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ewkb7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ewkb8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ewkb9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/expand1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/expand2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/expand3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/expand4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/expand5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/expand6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/expand7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/extent1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/extractmultilinestring1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/extractmultilinestring2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/extractmultilinestring3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/extractmultipoint1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/extractmultipoint2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/extractmultipoint3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/extractmultipolygon1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/extractmultipolygon2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/extractmultipolygon3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fath_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fdo-wkb.sqlite_RO create mode 100644 src/spatialite/test/sql_stmt_tests/fdo_ogr1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fdo_ogr2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/forcenull9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromWkb9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromdms1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromdms2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromdms3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromdms4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromdms5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromdms6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromdms7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromdms8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromdms9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt29.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt30.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt31.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt32.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt33.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt34.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt35.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt36.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt37.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt38.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt39.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromewkt9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson29.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson30.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson31.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson32.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgeojson9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml29.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml30.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml31.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml32.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml33.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml34.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml35.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml36.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml37.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml38.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml39.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml40.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml41.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml43.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml44.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml45.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml46.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml47.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml48.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml49.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml50.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml51.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml52.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml53.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml54.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml55.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml56.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml57.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml58.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml59.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml60.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml61.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/fromgml9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ft_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr29.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr30.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr31.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr32.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr33.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr34.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr35.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr36.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/garsmbr9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geodesic-len8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geojson1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geojson2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geojson3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geojson4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geojson5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geojson6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomcollfromtext1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomcollfromtext2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomconstraints9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geometryn9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromewkb1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromewkb2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromkml9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext29.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext30.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext31.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext32.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext33.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext34.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext35.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext36.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext37.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext38.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext39.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext40.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext41.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext42.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext43.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext44.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext45.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomfromtext9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype29.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype30.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype31.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype32.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype33.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype34.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype35.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype36.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype37.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype38.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype39.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype40.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype41.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype42.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype43.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype44.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype45.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype46.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype47.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype48.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype49.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype50.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype51.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype52.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype53.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype54.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype55.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype56.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype57.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype58.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype59.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype60.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype61.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype62.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype63.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype64.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype65.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype66.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype67.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype68.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype69.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/geomtype9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getlayerextent1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getlayerextent10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getlayerextent11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getlayerextent12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getlayerextent13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getlayerextent14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getlayerextent2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getlayerextent3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getlayerextent4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getlayerextent5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getlayerextent6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getlayerextent7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getlayerextent8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getlayerextent9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getmimetype1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getmimetype2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getmimetype3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getmimetype4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/getmimetype5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/gml9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-badblob.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-poly.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-poly2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-poly3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-poly4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-poly5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-poly6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-poly7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle-text.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/greatcircle.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/in_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ind_ch_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ind_ft_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ind_yd_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/invalidatestats1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/invalidatestats10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/invalidatestats2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/invalidatestats3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/invalidatestats4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/invalidatestats5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/invalidatestats6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/invalidatestats7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/invalidatestats8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/invalidatestats9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/is3d1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/is3d2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/is3d3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/is3d4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/is3d5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/is3d6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isXblob5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isXblob6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isXblob7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isempty.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isempty2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isempty3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isempty4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ismeasured1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ismeasured2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ismeasured3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ismeasured4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ismeasured5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ismeasured6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ispopulatedcoverage1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ispopulatedcoverage2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidnodata1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidnodata2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidnodata3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidnodata4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidpalette1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidpalette2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidpalette3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidrasterstats1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidrasterstats2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidrasterstats3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidrasterstats4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidrasterstats5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidrasterstats6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidrasterstats7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidrastertile1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidrastertile2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidrastertile3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidrastertile4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidrastertile5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/isvalidrastertile6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/k3b-icon.png create mode 100644 src/spatialite/test/sql_stmt_tests/km_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ktorrent_grad1.jpg create mode 100644 src/spatialite/test/sql_stmt_tests/ktorrent_sidebar.gif create mode 100644 src/spatialite/test/sql_stmt_tests/lhr1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/lhr2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/lhr3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/lhr4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/lhr5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/lhr6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/linefromtext1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/linefromtext2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/linesfromrings1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/linesfromrings2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/linesfromrings3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/linesfromrings4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/linesfromrings5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/linesfromrings6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/linesfromrings7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/link_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/locatemeasure9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_ch.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_cm.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_dm.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_fath.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_ft-text.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_ft.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_in.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_in_us.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_ind_ch.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_ind_ft.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_ind_yd.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_km.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_ln.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_mi.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_mm.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_nm.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_us_ch.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_us_ft.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_usmi.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_yd.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/m_yd_us.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makearc9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircle1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircle2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircle3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircle4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircle5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircle6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircle7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircle8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircle9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularsector9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makecircularstripe9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipse9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticarc9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeellipticsector9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline29.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline30.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline31.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline32.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makeline9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint-null1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint-null2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint-null3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint-null4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint-null5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint-null6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint-null7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepoint9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointm-null8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointz-null9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepointzm-null9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/makepolygon9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/maxm1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/maxm2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/maxm3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/maxm4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/maxm5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/maxm6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/maxm7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/maxz1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/maxz2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/maxz3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/maxz4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/maxz5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/maxz6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/maxz7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr29.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr30.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr31.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr32.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbr9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mbrminmax8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mi_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/minm1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/minm2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/minm3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/minm4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/minm5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/minm6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/minz1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/minz2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/minz3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/minz4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/minz5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/minz6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mlinefromtext1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mlinefromtext2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mm_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mpointfromtext1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mpointfromtext2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mpolygonfromtext1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/mpolygonfromtext2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ndims1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ndims2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ndims3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ndims4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ndims5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ndims6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/nm_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/normalizelonlat9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/npoints1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/npoints2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/npoints3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/npoints4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/npoints5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/npoints6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/nrings1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/nrings2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/nrings3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/nrings4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/nrings5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/nrings6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/numgeometries1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/numgeometries2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/numgeometries3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/numgeometries4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/numgeometries5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/numgeometries6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointfromtext1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointfromtext2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointn1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointn10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointn11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointn12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointn13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointn14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointn15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointn2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointn3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointn4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointn5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointn6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointn7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointn8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/pointn9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/polygonfromtext1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/polygonfromtext2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reflectcoords9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/removepoint9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reverse1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reverse2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reverse3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reverse4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reverse5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/reverse6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/ring9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rotatecoords9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/routing1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/routing2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/routing3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/routing4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/routing5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rtreealign1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rtreealign2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rtreealign3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/rtreealign4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sandro.jpg create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/sanitizeGeometry9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/scalecoords9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/seconds.wav create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/setpoint9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftcoords9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/shiftlongitude9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/spatialindex.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/srid1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/srid10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/srid11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/srid2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/srid3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/srid4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/srid5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/srid6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/srid7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/srid8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/srid9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_m1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_m2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_m3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_m4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_m5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_m6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_m8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_x1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_x2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_x3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_x4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_x5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_x6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_x7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_x8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_x9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_y1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_y2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_y3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_y4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_y5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_y7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_y8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_y9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_z1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_z2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_z3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_z4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_z5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_z6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_z7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_z8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/st_z9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/startpoint1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/startpoint2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/startpoint3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/swapcoords9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/test.webp create mode 100644 src/spatialite/test/sql_stmt_tests/testFDO.sqlite create mode 100644 src/spatialite/test/sql_stmt_tests/testFGF.sqlite create mode 100644 src/spatialite/test/sql_stmt_tests/testdb1.sqlite create mode 100644 src/spatialite/test/sql_stmt_tests/todms1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/todms10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/todms11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/todms12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/todms13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/todms2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/todms3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/todms4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/todms5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/todms6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/todms7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/todms8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/todms9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/togars1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/togars10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/togars11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/togars12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/togars13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/togars2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/togars3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/togars4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/togars5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/togars6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/togars7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/togars8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/togars9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/translate9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/trivial.sqlite_RO create mode 100644 src/spatialite/test/sql_stmt_tests/uncompressgeom1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/uncompressgeom2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/uncompressgeom3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/unsafeTriggers1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/updatestats1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/updatestats10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/updatestats2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/updatestats3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/updatestats4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/updatestats5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/updatestats6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/updatestats7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/updatestats8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/updatestats9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/us_ch_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/us_ft_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/us_in_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/us_mi_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/us_yd_m.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb10.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb11.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb12.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb13.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb14.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb15.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb16.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb17.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb18.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb19.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb20.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb21.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb22.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb23.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb24.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb25.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb26.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb27.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb28.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb29.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb30.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb31.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb32.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb33.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb34.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb35.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb36.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb4.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb5.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb6.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb7.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb8.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkb9.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkbtosql1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkbtosql2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkbtosql3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkttosql1.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkttosql2.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/wkttosql3.testcase create mode 100644 src/spatialite/test/sql_stmt_tests/yd_m.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/Makefile.am create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/Makefile.in create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/loadxml1.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/loadxml2.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/loadxml3.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/loadxml4.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/loadxml5.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/loadxml6.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml1.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml10.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml11.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml12.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml13.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml14.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml15.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml16.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml2.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml3.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml4.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml5.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml6.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml7.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml8.testcase create mode 100644 src/spatialite/test/sql_stmt_xmlsec_tests/storexml9.testcase create mode 100644 src/spatialite/test/stazioni_se.xml create mode 100644 src/spatialite/test/symbol.dxf create mode 100644 src/spatialite/test/test-invalid.sqlite create mode 100644 src/spatialite/test/test-legacy-2.3.1.sqlite create mode 100644 src/spatialite/test/test-legacy-3.0.1.sqlite create mode 100644 src/spatialite/test/test.webp create mode 100644 src/spatialite/test/test.wfs create mode 100644 src/spatialite/test/testDescribeFeatureType.wfs create mode 100644 src/spatialite/test/test_geos.sqlite create mode 100644 src/spatialite/test/test_helpers.h create mode 100755 src/spatialite/test/test_under_valgrind.sh create mode 100644 src/spatialite/test/testcase1.csv create mode 100644 src/spatialite/test/testcase1.xls create mode 100644 src/spatialite/test/thunderstorm_mild.svg create mode 100644 src/spatialite/test/tile000.jpeg create mode 100644 src/spatialite/test/tile100.jpeg create mode 100644 src/spatialite/test/tile101.jpeg create mode 100644 src/spatialite/test/tile110.jpeg create mode 100644 src/spatialite/test/tile111.jpeg diff --git a/Makefile b/Makefile index 8a69d18..baf8dc0 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ test: mocha \ --reporter $(REPORTER) \ --require should \ - --compilers coffee:coffee-script \ + --compilers coffee:coffee-script/register \ $(TESTS) .PHONY: build clean test diff --git a/binding.gyp b/binding.gyp index ce6cc36..e3cf178 100755 --- a/binding.gyp +++ b/binding.gyp @@ -1,5 +1,5 @@ { - 'variables': { 'target_arch%': 'ia32' }, + 'variables': { 'target_arch%': 'ia32'}, 'target_defaults': { 'default_configuration': 'Debug', @@ -48,7 +48,7 @@ 'targets': [ { - 'target_name': 'spatialite', + 'target_name': 'mod_spatialite', 'type': 'shared_library', 'direct_dependent_settings': { 'include_dirs': [ @@ -67,9 +67,12 @@ 'src/spatialite/deps/freexl/binding.gyp:freexl' ], 'sources': [ + 'src/spatialite/src/connection_cache/generator/code_generator.c', + 'src/spatialite/src/connection_cache/alloc_cache.c', + 'src/spatialite/src/dxf/dxf_writer.c', 'src/spatialite/src/gaiaaux/gg_sqlaux.c', 'src/spatialite/src/gaiaaux/gg_utf8.c', - 'src/spatialite/src/gaiaexif/gaia_exif.c', + 'src/spatialite/src/gaiaexif/gaia_exif.c', 'src/spatialite/src/gaiageo/gg_advanced.c', 'src/spatialite/src/gaiageo/gg_endian.c', 'src/spatialite/src/gaiageo/gg_ewkt.c', @@ -82,16 +85,37 @@ 'src/spatialite/src/gaiageo/gg_kml.c', 'src/spatialite/src/gaiageo/gg_lwgeom.c', 'src/spatialite/src/gaiageo/gg_relations.c', + 'src/spatialite/src/gaiageo/gg_relations_ext.c', 'src/spatialite/src/gaiageo/gg_shape.c', 'src/spatialite/src/gaiageo/gg_transform.c', 'src/spatialite/src/gaiageo/gg_vanuatu.c', 'src/spatialite/src/gaiageo/gg_voronoj.c', 'src/spatialite/src/gaiageo/gg_wkb.c', 'src/spatialite/src/gaiageo/gg_wkt.c', + 'src/spatialite/src/gaiageo/gg_xml.c', + 'src/spatialite/src/geopackage/gaia_cvt_gpkg.c', + 'src/spatialite/src/geopackage/gpkgAddGeometryColumn.c', + 'src/spatialite/src/geopackage/gpkgBinary.c', + 'src/spatialite/src/geopackage/gpkgCreateBaseTables.c', + 'src/spatialite/src/geopackage/gpkgCreateTilesTable.c', + 'src/spatialite/src/geopackage/gpkgCreateTilesZoomLevel.c', + 'src/spatialite/src/geopackage/gpkgGetImageType.c', + 'src/spatialite/src/geopackage/gpkgInsertEpsgSRID.c', + 'src/spatialite/src/geopackage/gpkgMakePoint.c', + 'src/spatialite/src/geopackage/gpkg_add_geometry_triggers.c', + 'src/spatialite/src/geopackage/gpkg_add_spatial_index.c', + 'src/spatialite/src/geopackage/gpkg_add_tile_triggers.c', + 'src/spatialite/src/geopackage/gpkg_get_normal_row.c', + 'src/spatialite/src/geopackage/gpkg_get_normal_zoom.c', + 'src/spatialite/src/md5/gaia_md5.c', + 'src/spatialite/src/md5/md5.c', 'src/spatialite/src/shapefiles/shapefiles.c', + 'src/spatialite/src/shapefiles/validator.c', + 'src/spatialite/src/spatialite/extra_tables.c', 'src/spatialite/src/spatialite/mbrcache.c', 'src/spatialite/src/spatialite/metatables.c', 'src/spatialite/src/spatialite/spatialite.c', + 'src/spatialite/src/spatialite/spatialite_init.c', 'src/spatialite/src/spatialite/statistics.c', 'src/spatialite/src/spatialite/virtualdbf.c', 'src/spatialite/src/spatialite/virtualfdo.c', @@ -99,6 +123,9 @@ 'src/spatialite/src/spatialite/virtualshape.c', 'src/spatialite/src/spatialite/virtualspatialindex.c', 'src/spatialite/src/spatialite/virtualXL.c', + 'src/spatialite/src/spatialite/virtualbbox.c', + 'src/spatialite/src/spatialite/virtualgpkg.c', + 'src/spatialite/src/spatialite/virtualxpath.c', 'src/spatialite/src/srsinit/epsg_inlined_00.c', 'src/spatialite/src/srsinit/epsg_inlined_01.c', 'src/spatialite/src/srsinit/epsg_inlined_02.c', @@ -140,6 +167,11 @@ 'src/spatialite/src/srsinit/epsg_inlined_38.c', 'src/spatialite/src/srsinit/epsg_inlined_39.c', 'src/spatialite/src/srsinit/epsg_inlined_40.c', + 'src/spatialite/src/srsinit/epsg_inlined_41.c', + 'src/spatialite/src/srsinit/epsg_inlined_42.c', + 'src/spatialite/src/srsinit/epsg_inlined_43.c', + 'src/spatialite/src/srsinit/epsg_inlined_44.c', + 'src/spatialite/src/srsinit/epsg_inlined_45.c', 'src/spatialite/src/srsinit/epsg_inlined_extra.c', 'src/spatialite/src/srsinit/epsg_inlined_prussian.c', 'src/spatialite/src/srsinit/epsg_inlined_wgs84_00.c', diff --git a/lib/spatialite.js b/lib/spatialite.js index ba0b786..cea60f0 100644 --- a/lib/spatialite.js +++ b/lib/spatialite.js @@ -2,22 +2,6 @@ var sqlite3 = module.exports = exports = require('sqlite3'); var fs = require('fs'); sqlite3.Database.prototype.spatialite = function(callback) { - var base_path = __dirname + '/../build/Release/spatialite'; - var linux_path = base_path + '.so'; - var osx_path = base_path + '.dylib'; - var windows_path = base_path + '.dll'; - - var extension_path = null; - - if (fs.existsSync(linux_path)) { - extension_path = linux_path; - } else if (fs.existsSync(osx_path)) { - extension_path = osx_path; - } else if (fs.existsSync(windows_path)) { - extension_path = windows_path; - } else { - throw new Error("Unable to find spatialite extension."); - } - - this.loadExtension(extension_path, callback); + var base_path = __dirname + '/../build/Release/mod_spatialite'; + this.loadExtension(base_path, callback); }; diff --git a/package.json b/package.json index 4d3bb4d..4fc84e1 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,7 @@ "url": "git://github.com/zhm/node-spatialite.git" }, "dependencies": { - "sqlite3": "*" + "sqlite3": "^3.0.5" }, "devDependencies": { "coffee-script": "*", @@ -32,6 +32,10 @@ "scripts": { "test": "make test" }, - "licenses": [{ "type": "BSD" }], + "licenses": [ + { + "type": "BSD" + } + ], "main": "./lib/spatialite" } diff --git a/src/config/linux/ia32/config.h b/src/config/linux/ia32/config.h index 0e2d2d3..938c091 100644 --- a/src/config/linux/ia32/config.h +++ b/src/config/linux/ia32/config.h @@ -172,7 +172,7 @@ #define PACKAGE_NAME "libspatialite" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "libspatialite 4.0.0" +#define PACKAGE_STRING "libspatialite 4.2.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "libspatialite" @@ -181,7 +181,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "4.0.0" +#define PACKAGE_VERSION "4.2.0" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 @@ -193,7 +193,7 @@ /* #undef TM_IN_SYS_TIME */ /* Version number of package */ -#define VERSION "4.0.0" +#define VERSION "4.2.0" /* Must be =64 in order to enable huge-file support. */ #define _FILE_OFFSET_BITS 64 @@ -216,3 +216,9 @@ /* Define to empty if the keyword `volatile' does not work. Warning: valid code using `volatile' can become incorrect without. Disable with care. */ /* #undef volatile */ + +/* Define target cpu */ +#define TARGET_CPU "x86_64-pc-linux-gnu" + +/* make library loadable */ +#define LOADABLE_EXTENSION 1 diff --git a/src/config/linux/x64/config.h b/src/config/linux/x64/config.h index 0e2d2d3..e1dfad8 100644 --- a/src/config/linux/x64/config.h +++ b/src/config/linux/x64/config.h @@ -172,7 +172,7 @@ #define PACKAGE_NAME "libspatialite" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "libspatialite 4.0.0" +#define PACKAGE_STRING "libspatialite 4.2.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "libspatialite" @@ -181,7 +181,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "4.0.0" +#define PACKAGE_VERSION "4.2.0" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 @@ -193,7 +193,7 @@ /* #undef TM_IN_SYS_TIME */ /* Version number of package */ -#define VERSION "4.0.0" +#define VERSION "4.2.0" /* Must be =64 in order to enable huge-file support. */ #define _FILE_OFFSET_BITS 64 @@ -216,3 +216,10 @@ /* Define to empty if the keyword `volatile' does not work. Warning: valid code using `volatile' can become incorrect without. Disable with care. */ /* #undef volatile */ +/* Define target cpu */ + +/* Define target cpu */ +#define TARGET_CPU "x86_64-pc-linux-gnu" + +/* make library loadable */ +#define LOADABLE_EXTENSION 1 diff --git a/src/config/mac/x64/config.h b/src/config/mac/x64/config.h index 6efe6f1..f28a381 100644 --- a/src/config/mac/x64/config.h +++ b/src/config/mac/x64/config.h @@ -172,7 +172,7 @@ #define PACKAGE_NAME "libspatialite" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "libspatialite 4.0.0" +#define PACKAGE_STRING "libspatialite 4.2.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "libspatialite" @@ -181,7 +181,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "4.0.0" +#define PACKAGE_VERSION "4.2.0" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 @@ -193,7 +193,7 @@ /* #undef TM_IN_SYS_TIME */ /* Version number of package */ -#define VERSION "4.0.0" +#define VERSION "4.2.0" /* Must be =64 in order to enable huge-file support. */ #define _FILE_OFFSET_BITS 64 @@ -216,3 +216,9 @@ /* Define to empty if the keyword `volatile' does not work. Warning: valid code using `volatile' can become incorrect without. Disable with care. */ /* #undef volatile */ + +/* Define target cpu */ +#define TARGET_CPU "x86_64-apple-darwin14.1.0" + +/* make library loadable */ +#define LOADABLE_EXTENSION 1 diff --git a/src/config/win/ia32/config-msvc.h b/src/config/win/ia32/config-msvc.h index e0f44b1..258474d 100644 --- a/src/config/win/ia32/config-msvc.h +++ b/src/config/win/ia32/config-msvc.h @@ -177,7 +177,7 @@ #define PACKAGE_NAME "libspatialite" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "libspatialite 4.0.0" +#define PACKAGE_STRING "libspatialite 4.2.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "libspatialite" @@ -186,7 +186,7 @@ #define PACKAGE_URL "" /* Define to the version of this package. */ -#define PACKAGE_VERSION "4.0.0" +#define PACKAGE_VERSION "4.2.0" /* Define to 1 if you have the ANSI C header files. */ #define STDC_HEADERS 1 @@ -198,7 +198,7 @@ /* #undef TM_IN_SYS_TIME */ /* Version number of package */ -#define VERSION "4.0.0" +#define VERSION "4.2.0" /* Must be =64 in order to enable huge-file support. */ #define _FILE_OFFSET_BITS 64 @@ -221,3 +221,9 @@ /* Define to empty if the keyword `volatile' does not work. Warning: valid code using `volatile' can become incorrect without. Disable with care. */ /* #undef volatile */ + +/* Define target cpu */ +#define TARGET_CPU "msvc-32" + +/* make library loadable */ +#define LOADABLE_EXTENSION 1 diff --git a/src/config/win/x64/config-msvc.h b/src/config/win/x64/config-msvc.h index ea00597..a289cf6 100644 --- a/src/config/win/x64/config-msvc.h +++ b/src/config/win/x64/config-msvc.h @@ -177,7 +177,7 @@ #define PACKAGE_NAME "libspatialite" /* Define to the full name and version of this package. */ -#define PACKAGE_STRING "libspatialite 4.0.0" +#define PACKAGE_STRING "libspatialite 4.2.0" /* Define to the one symbol short name of this package. */ #define PACKAGE_TARNAME "libspatialite" @@ -221,3 +221,9 @@ /* Define to empty if the keyword `volatile' does not work. Warning: valid code using `volatile' can become incorrect without. Disable with care. */ /* #undef volatile */ + +/* Define target cpu */ +#define TARGET_CPU "msvc-32" + +/* make library loadable */ +#define LOADABLE_EXTENSION 1 diff --git a/src/spatialite/AUTHORS b/src/spatialite/AUTHORS new file mode 100644 index 0000000..475c203 --- /dev/null +++ b/src/spatialite/AUTHORS @@ -0,0 +1,13 @@ +Original Author: +Alessandro Furieri + +Contributors: +Klaus Foerster +Luigi Costalli +Ahmadou Dicko +Brad Hards +Pepijn Van Eeckhoudt + +The Vanuatu Team - University of Toronto - Supervisor: +Greg Wilson +[you can find the complete team composition in gg_wkt.c] diff --git a/src/spatialite/Android.mk b/src/spatialite/Android.mk new file mode 100644 index 0000000..063c051 --- /dev/null +++ b/src/spatialite/Android.mk @@ -0,0 +1,49 @@ +LOCAL_PATH:= $(call my-dir)/.. + +include ${CLEAR_VARS} + +LOCAL_SRC_FILES := \ + src/gaiaaux/gg_sqlaux.c \ + src/gaiaexif/gaia_exif.c \ + src/gaiageo/gg_advanced.c \ + src/gaiageo/gg_endian.c \ + src/gaiageo/gg_ewkt.c \ + src/gaiageo/gg_geodesic.c \ + src/gaiageo/gg_geoJSON.c \ + src/gaiageo/gg_geometries.c \ + src/gaiageo/gg_geoscvt.c \ + src/gaiageo/gg_gml.c \ + src/gaiageo/gg_kml.c \ + src/gaiageo/gg_relations.c \ + src/gaiageo/gg_transform.c \ + src/gaiageo/gg_vanuatu.c \ + src/gaiageo/gg_wkb.c \ + src/gaiageo/gg_wkt.c \ + src/spatialite/mbrcache.c \ + src/spatialite/spatialite.c \ + src/spatialite/virtualfdo.c \ + src/spatialite/virtualnetwork.c \ + src/spatialite/virtualspatialindex.c \ + src/srsinit/srs_init.c \ + src/versioninfo/version.c + +LOCAL_C_INCLUDES := \ + $(LOCAL_PATH)/jni/src/headers \ + $(LOCAL_PATH)/src/headers \ + $(LOCAL_PATH)/../SQLite + +LOCAL_MODULE := spatialite + +LOCAL_LDLIBS := -ldl -llog + +LOCAL_CFLAGS := \ + -fvisibility=hidden \ + -DOMIT_GEOCALLBACKS \ + -DOMIT_GEOS \ + -DOMIT_PROJ \ + -DOMIT_EPSG \ + -DOMIT_ICONV \ + -DVERSION="\"3.0.2\"" + +include $(BUILD_SHARED_LIBRARY) + diff --git a/src/spatialite/Android_4.2.0.mk b/src/spatialite/Android_4.2.0.mk new file mode 100644 index 0000000..b7f8bac --- /dev/null +++ b/src/spatialite/Android_4.2.0.mk @@ -0,0 +1,23 @@ +# ------------------- +# Android_4.2.0.mk +# ndk-build clean +# ndk-build +# ------------------- +LOCAL_PATH := $(call my-dir) +JSQLITE_PATH := javasqlite-20120209 +SPATIALITE_PATH := libspatialite-4.2.0-rc1 +GEOS_PATH := geos-3.4.2 +PROJ4_PATH := proj-4.8.0 +SQLITE_PATH := sqlite-amalgamation-3080403 +ICONV_PATH := libiconv-1.13.1 +XML2_PATH := libxml2-2.9.1 +LZMA_PATH := xz-5.1.3alpha + +include $(LOCAL_PATH)/iconv-1.13.1.mk +include $(LOCAL_PATH)/sqlite-3080403.mk +include $(LOCAL_PATH)/proj4-4.8.0.mk +include $(LOCAL_PATH)/geos-3.4.2.mk +include $(LOCAL_PATH)/libxml2-2.9.1.mk +include $(LOCAL_PATH)/lzma-xz-5.1.3a.mk +include $(LOCAL_PATH)/spatialite-4.2.0.mk +include $(LOCAL_PATH)/jsqlite-20120209.mk diff --git a/src/spatialite/COPYING b/src/spatialite/COPYING new file mode 100644 index 0000000..d9e23c0 --- /dev/null +++ b/src/spatialite/COPYING @@ -0,0 +1,478 @@ + MOZILLA PUBLIC LICENSE + Version 1.1 + + --------------- + +1. Definitions. + + 1.0.1. "Commercial Use" means distribution or otherwise making the + Covered Code available to a third party. + + 1.1. "Contributor" means each entity that creates or contributes to + the creation of Modifications. + + 1.2. "Contributor Version" means the combination of the Original + Code, prior Modifications used by a Contributor, and the Modifications + made by that particular Contributor. + + 1.3. "Covered Code" means the Original Code or Modifications or the + combination of the Original Code and Modifications, in each case + including portions thereof. + + 1.4. "Electronic Distribution Mechanism" means a mechanism generally + accepted in the software development community for the electronic + transfer of data. + + 1.5. "Executable" means Covered Code in any form other than Source + Code. + + 1.6. "Initial Developer" means the individual or entity identified + as the Initial Developer in the Source Code notice required by Exhibit + A. + + 1.7. "Larger Work" means a work which combines Covered Code or + portions thereof with code not governed by the terms of this License. + + 1.8. "License" means this document. + + 1.8.1. "Licensable" means having the right to grant, to the maximum + extent possible, whether at the time of the initial grant or + subsequently acquired, any and all of the rights conveyed herein. + + 1.9. "Modifications" means any addition to or deletion from the + substance or structure of either the Original Code or any previous + Modifications. When Covered Code is released as a series of files, a + Modification is: + A. Any addition to or deletion from the contents of a file + containing Original Code or previous Modifications. + + B. Any new file that contains any part of the Original Code or + previous Modifications. + + 1.10. "Original Code" means Source Code of computer software code + which is described in the Source Code notice required by Exhibit A as + Original Code, and which, at the time of its release under this + License is not already Covered Code governed by this License. + + 1.10.1. "Patent Claims" means any patent claim(s), now owned or + hereafter acquired, including without limitation, method, process, + and apparatus claims, in any patent Licensable by grantor. + + 1.11. "Source Code" means the preferred form of the Covered Code for + making modifications to it, including all modules it contains, plus + any associated interface definition files, scripts used to control + compilation and installation of an Executable, or source code + differential comparisons against either the Original Code or another + well known, available Covered Code of the Contributor's choice. The + Source Code can be in a compressed or archival form, provided the + appropriate decompression or de-archiving software is widely available + for no charge. + + 1.12. "You" (or "Your") means an individual or a legal entity + exercising rights under, and complying with all of the terms of, this + License or a future version of this License issued under Section 6.1. + For legal entities, "You" includes any entity which controls, is + controlled by, or is under common control with You. For purposes of + this definition, "control" means (a) the power, direct or indirect, + to cause the direction or management of such entity, whether by + contract or otherwise, or (b) ownership of more than fifty percent + (50%) of the outstanding shares or beneficial ownership of such + entity. + +2. Source Code License. + + 2.1. The Initial Developer Grant. + The Initial Developer hereby grants You a world-wide, royalty-free, + non-exclusive license, subject to third party intellectual property + claims: + (a) under intellectual property rights (other than patent or + trademark) Licensable by Initial Developer to use, reproduce, + modify, display, perform, sublicense and distribute the Original + Code (or portions thereof) with or without Modifications, and/or + as part of a Larger Work; and + + (b) under Patents Claims infringed by the making, using or + selling of Original Code, to make, have made, use, practice, + sell, and offer for sale, and/or otherwise dispose of the + Original Code (or portions thereof). + + (c) the licenses granted in this Section 2.1(a) and (b) are + effective on the date Initial Developer first distributes + Original Code under the terms of this License. + + (d) Notwithstanding Section 2.1(b) above, no patent license is + granted: 1) for code that You delete from the Original Code; 2) + separate from the Original Code; or 3) for infringements caused + by: i) the modification of the Original Code or ii) the + combination of the Original Code with other software or devices. + + 2.2. Contributor Grant. + Subject to third party intellectual property claims, each Contributor + hereby grants You a world-wide, royalty-free, non-exclusive license + + (a) under intellectual property rights (other than patent or + trademark) Licensable by Contributor, to use, reproduce, modify, + display, perform, sublicense and distribute the Modifications + created by such Contributor (or portions thereof) either on an + unmodified basis, with other Modifications, as Covered Code + and/or as part of a Larger Work; and + + (b) under Patent Claims infringed by the making, using, or + selling of Modifications made by that Contributor either alone + and/or in combination with its Contributor Version (or portions + of such combination), to make, use, sell, offer for sale, have + made, and/or otherwise dispose of: 1) Modifications made by that + Contributor (or portions thereof); and 2) the combination of + Modifications made by that Contributor with its Contributor + Version (or portions of such combination). + + (c) the licenses granted in Sections 2.2(a) and 2.2(b) are + effective on the date Contributor first makes Commercial Use of + the Covered Code. + + (d) Notwithstanding Section 2.2(b) above, no patent license is + granted: 1) for any code that Contributor has deleted from the + Contributor Version; 2) separate from the Contributor Version; + 3) for infringements caused by: i) third party modifications of + Contributor Version or ii) the combination of Modifications made + by that Contributor with other software (except as part of the + Contributor Version) or other devices; or 4) under Patent Claims + infringed by Covered Code in the absence of Modifications made by + that Contributor. + +3. Distribution Obligations. + + 3.1. Application of License. + The Modifications which You create or to which You contribute are + governed by the terms of this License, including without limitation + Section 2.2. The Source Code version of Covered Code may be + distributed only under the terms of this License or a future version + of this License released under Section 6.1, and You must include a + copy of this License with every copy of the Source Code You + distribute. You may not offer or impose any terms on any Source Code + version that alters or restricts the applicable version of this + License or the recipients' rights hereunder. However, You may include + an additional document offering the additional rights described in + Section 3.5. + + 3.2. Availability of Source Code. + Any Modification which You create or to which You contribute must be + made available in Source Code form under the terms of this License + either on the same media as an Executable version or via an accepted + Electronic Distribution Mechanism to anyone to whom you made an + Executable version available; and if made available via Electronic + Distribution Mechanism, must remain available for at least twelve (12) + months after the date it initially became available, or at least six + (6) months after a subsequent version of that particular Modification + has been made available to such recipients. You are responsible for + ensuring that the Source Code version remains available even if the + Electronic Distribution Mechanism is maintained by a third party. + + 3.3. Description of Modifications. + You must cause all Covered Code to which You contribute to contain a + file documenting the changes You made to create that Covered Code and + the date of any change. You must include a prominent statement that + the Modification is derived, directly or indirectly, from Original + Code provided by the Initial Developer and including the name of the + Initial Developer in (a) the Source Code, and (b) in any notice in an + Executable version or related documentation in which You describe the + origin or ownership of the Covered Code. + + 3.4. Intellectual Property Matters + (a) Third Party Claims. + If Contributor has knowledge that a license under a third party's + intellectual property rights is required to exercise the rights + granted by such Contributor under Sections 2.1 or 2.2, + Contributor must include a text file with the Source Code + distribution titled "LEGAL" which describes the claim and the + party making the claim in sufficient detail that a recipient will + know whom to contact. If Contributor obtains such knowledge after + the Modification is made available as described in Section 3.2, + Contributor shall promptly modify the LEGAL file in all copies + Contributor makes available thereafter and shall take other steps + (such as notifying appropriate mailing lists or newsgroups) + reasonably calculated to inform those who received the Covered + Code that new knowledge has been obtained. + + (b) Contributor APIs. + If Contributor's Modifications include an application programming + interface and Contributor has knowledge of patent licenses which + are reasonably necessary to implement that API, Contributor must + also include this information in the LEGAL file. + + (c) Representations. + Contributor represents that, except as disclosed pursuant to + Section 3.4(a) above, Contributor believes that Contributor's + Modifications are Contributor's original creation(s) and/or + Contributor has sufficient rights to grant the rights conveyed by + this License. + + 3.5. Required Notices. + You must duplicate the notice in Exhibit A in each file of the Source + Code. If it is not possible to put such notice in a particular Source + Code file due to its structure, then You must include such notice in a + location (such as a relevant directory) where a user would be likely + to look for such a notice. If You created one or more Modification(s) + You may add your name as a Contributor to the notice described in + Exhibit A. You must also duplicate this License in any documentation + for the Source Code where You describe recipients' rights or ownership + rights relating to Covered Code. You may choose to offer, and to + charge a fee for, warranty, support, indemnity or liability + obligations to one or more recipients of Covered Code. However, You + may do so only on Your own behalf, and not on behalf of the Initial + Developer or any Contributor. You must make it absolutely clear than + any such warranty, support, indemnity or liability obligation is + offered by You alone, and You hereby agree to indemnify the Initial + Developer and every Contributor for any liability incurred by the + Initial Developer or such Contributor as a result of warranty, + support, indemnity or liability terms You offer. + + 3.6. Distribution of Executable Versions. + You may distribute Covered Code in Executable form only if the + requirements of Section 3.1-3.5 have been met for that Covered Code, + and if You include a notice stating that the Source Code version of + the Covered Code is available under the terms of this License, + including a description of how and where You have fulfilled the + obligations of Section 3.2. The notice must be conspicuously included + in any notice in an Executable version, related documentation or + collateral in which You describe recipients' rights relating to the + Covered Code. You may distribute the Executable version of Covered + Code or ownership rights under a license of Your choice, which may + contain terms different from this License, provided that You are in + compliance with the terms of this License and that the license for the + Executable version does not attempt to limit or alter the recipient's + rights in the Source Code version from the rights set forth in this + License. If You distribute the Executable version under a different + license You must make it absolutely clear that any terms which differ + from this License are offered by You alone, not by the Initial + Developer or any Contributor. You hereby agree to indemnify the + Initial Developer and every Contributor for any liability incurred by + the Initial Developer or such Contributor as a result of any such + terms You offer. + + 3.7. Larger Works. + You may create a Larger Work by combining Covered Code with other code + not governed by the terms of this License and distribute the Larger + Work as a single product. In such a case, You must make sure the + requirements of this License are fulfilled for the Covered Code. + +4. Inability to Comply Due to Statute or Regulation. + + If it is impossible for You to comply with any of the terms of this + License with respect to some or all of the Covered Code due to + statute, judicial order, or regulation then You must: (a) comply with + the terms of this License to the maximum extent possible; and (b) + describe the limitations and the code they affect. Such description + must be included in the LEGAL file described in Section 3.4 and must + be included with all distributions of the Source Code. Except to the + extent prohibited by statute or regulation, such description must be + sufficiently detailed for a recipient of ordinary skill to be able to + understand it. + +5. Application of this License. + + This License applies to code to which the Initial Developer has + attached the notice in Exhibit A and to related Covered Code. + +6. Versions of the License. + + 6.1. New Versions. + Netscape Communications Corporation ("Netscape") may publish revised + and/or new versions of the License from time to time. Each version + will be given a distinguishing version number. + + 6.2. Effect of New Versions. + Once Covered Code has been published under a particular version of the + License, You may always continue to use it under the terms of that + version. You may also choose to use such Covered Code under the terms + of any subsequent version of the License published by Netscape. No one + other than Netscape has the right to modify the terms applicable to + Covered Code created under this License. + + 6.3. Derivative Works. + If You create or use a modified version of this License (which you may + only do in order to apply it to code which is not already Covered Code + governed by this License), You must (a) rename Your license so that + the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape", + "MPL", "NPL" or any confusingly similar phrase do not appear in your + license (except to note that your license differs from this License) + and (b) otherwise make it clear that Your version of the license + contains terms which differ from the Mozilla Public License and + Netscape Public License. (Filling in the name of the Initial + Developer, Original Code or Contributor in the notice described in + Exhibit A shall not of themselves be deemed to be modifications of + this License.) + +7. DISCLAIMER OF WARRANTY. + + COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS, + WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF + DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. + THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE + IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, + YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE + COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER + OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF + ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER. + +8. TERMINATION. + + 8.1. This License and the rights granted hereunder will terminate + automatically if You fail to comply with terms herein and fail to cure + such breach within 30 days of becoming aware of the breach. All + sublicenses to the Covered Code which are properly granted shall + survive any termination of this License. Provisions which, by their + nature, must remain in effect beyond the termination of this License + shall survive. + + 8.2. If You initiate litigation by asserting a patent infringement + claim (excluding declatory judgment actions) against Initial Developer + or a Contributor (the Initial Developer or Contributor against whom + You file such action is referred to as "Participant") alleging that: + + (a) such Participant's Contributor Version directly or indirectly + infringes any patent, then any and all rights granted by such + Participant to You under Sections 2.1 and/or 2.2 of this License + shall, upon 60 days notice from Participant terminate prospectively, + unless if within 60 days after receipt of notice You either: (i) + agree in writing to pay Participant a mutually agreeable reasonable + royalty for Your past and future use of Modifications made by such + Participant, or (ii) withdraw Your litigation claim with respect to + the Contributor Version against such Participant. If within 60 days + of notice, a reasonable royalty and payment arrangement are not + mutually agreed upon in writing by the parties or the litigation claim + is not withdrawn, the rights granted by Participant to You under + Sections 2.1 and/or 2.2 automatically terminate at the expiration of + the 60 day notice period specified above. + + (b) any software, hardware, or device, other than such Participant's + Contributor Version, directly or indirectly infringes any patent, then + any rights granted to You by such Participant under Sections 2.1(b) + and 2.2(b) are revoked effective as of the date You first made, used, + sold, distributed, or had made, Modifications made by that + Participant. + + 8.3. If You assert a patent infringement claim against Participant + alleging that such Participant's Contributor Version directly or + indirectly infringes any patent where such claim is resolved (such as + by license or settlement) prior to the initiation of patent + infringement litigation, then the reasonable value of the licenses + granted by such Participant under Sections 2.1 or 2.2 shall be taken + into account in determining the amount or value of any payment or + license. + + 8.4. In the event of termination under Sections 8.1 or 8.2 above, + all end user license agreements (excluding distributors and resellers) + which have been validly granted by You or any distributor hereunder + prior to termination shall survive termination. + +9. LIMITATION OF LIABILITY. + + UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT + (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL + DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, + OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR + ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY + CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, + WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER + COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN + INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF + LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY + RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW + PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE + EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO + THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU. + +10. U.S. GOVERNMENT END USERS. + + The Covered Code is a "commercial item," as that term is defined in + 48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer + software" and "commercial computer software documentation," as such + terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 + C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), + all U.S. Government End Users acquire Covered Code with only those + rights set forth herein. + +11. MISCELLANEOUS. + + This License represents the complete agreement concerning subject + matter hereof. If any provision of this License is held to be + unenforceable, such provision shall be reformed only to the extent + necessary to make it enforceable. This License shall be governed by + California law provisions (except to the extent applicable law, if + any, provides otherwise), excluding its conflict-of-law provisions. + With respect to disputes in which at least one party is a citizen of, + or an entity chartered or registered to do business in the United + States of America, any litigation relating to this License shall be + subject to the jurisdiction of the Federal Courts of the Northern + District of California, with venue lying in Santa Clara County, + California, with the losing party responsible for costs, including + without limitation, court costs and reasonable attorneys' fees and + expenses. The application of the United Nations Convention on + Contracts for the International Sale of Goods is expressly excluded. + Any law or regulation which provides that the language of a contract + shall be construed against the drafter shall not apply to this + License. + +12. RESPONSIBILITY FOR CLAIMS. + + As between Initial Developer and the Contributors, each party is + responsible for claims and damages arising, directly or indirectly, + out of its utilization of rights under this License and You agree to + work with Initial Developer and Contributors to distribute such + responsibility on an equitable basis. Nothing herein is intended or + shall be deemed to constitute any admission of liability. + +13. MULTIPLE-LICENSED CODE. + + Initial Developer may designate portions of the Covered Code as + "Multiple-Licensed". "Multiple-Licensed" means that the Initial + Developer permits you to utilize portions of the Covered Code under + Your choice of the NPL or the alternative licenses, if any, specified + by the Initial Developer in the file described in Exhibit A. + +EXHIBIT A -Mozilla Public License. + + ``The contents of this file are subject to the Mozilla Public License + Version 1.1 (the "License"); you may not use this file except in + compliance with the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + + Software distributed under the License is distributed on an "AS IS" + basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the + License for the specific language governing rights and limitations + under the License. + + The Original Code is the SpatiaLite library. + + The Initial Developer of the Original Code is Alessandro Furieri. + Portions created by the Initial Developer are Copyright (C) 2008 + the Initial Developer. All Rights Reserved. + + Contributor(s): + Klaus Foerster [AsSvg()] + Luigi Costalli [Dijkstra's shortest path algorithm] + + The Vanuatu Team - University of Toronto [WKT parser] + Supervisor: Greg Wilson + [you can find the complete team composition in gg_wkt.c] + + + Alternatively, the contents of this file may be used under the terms of + either the GNU General Public License Version 2 or later (the "GPL"), or + the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), + in which case the provisions of the GPL or the LGPL are applicable instead + of those above. If you wish to allow use of your version of this file only + under the terms of either the GPL or the LGPL, and not to allow others to + use your version of this file under the terms of the MPL, indicate your + decision by deleting the provisions above and replace them with the notice + and other provisions required by the GPL or the LGPL. If you do not delete + the provisions above, a recipient may use your version of this file under + the terms of any one of the MPL, the GPL or the LGPL. + + [NOTE: The text of this Exhibit A may differ slightly from the text of + the notices in the Source Code files of the Original Code. You should + use the text of this Exhibit A rather than the text found in the + Original Code Source Code for Your Modifications.] + diff --git a/src/spatialite/Doxyfile.in b/src/spatialite/Doxyfile.in new file mode 100644 index 0000000..709c166 --- /dev/null +++ b/src/spatialite/Doxyfile.in @@ -0,0 +1,1667 @@ +# Doxyfile 1.7.3 + +# This file describes the settings to be used by the documentation system +# doxygen (www.doxygen.org) for a project. +# +# All text after a hash (#) is considered a comment and will be ignored. +# The format is: +# TAG = value [value, ...] +# For lists items can also be appended using: +# TAG += value [value, ...] +# Values that contain spaces should be placed between quotes (" "). + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- + +# This tag specifies the encoding used for all characters in the config file +# that follow. The default is UTF-8 which is also the encoding used for all +# text before the first occurrence of this tag. Doxygen uses libiconv (or the +# iconv built into libc) for the transcoding. See +# http://www.gnu.org/software/libiconv for the list of possible encodings. + +DOXYFILE_ENCODING = UTF-8 + +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded +# by quotes) that should identify the project. + +PROJECT_NAME = SpatiaLite + +# The PROJECT_NUMBER tag can be used to enter a project or revision number. +# This could be handy for archiving the generated documentation or +# if some version control system is used. + +PROJECT_NUMBER = @VERSION@ + +# Using the PROJECT_BRIEF tag one can provide an optional one line description for a project that appears at the top of each page and should give viewer a quick idea about the purpose of the project. Keep the description short. + +PROJECT_BRIEF = + +# With the PROJECT_LOGO tag one can specify an logo or icon that is +# included in the documentation. The maximum height of the logo should not +# exceed 55 pixels and the maximum width should not exceed 200 pixels. +# Doxygen will copy the logo to the output directory. + +PROJECT_LOGO = + +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) +# base path where the generated documentation will be put. +# If a relative path is entered, it will be relative to the location +# where doxygen was started. If left blank the current directory will be used. + +OUTPUT_DIRECTORY = + +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create +# 4096 sub-directories (in 2 levels) under the output directory of each output +# format and will distribute the generated files over these directories. +# Enabling this option can be useful when feeding doxygen a huge amount of +# source files, where putting all generated files in the same directory would +# otherwise cause performance problems for the file system. + +CREATE_SUBDIRS = NO + +# The OUTPUT_LANGUAGE tag is used to specify the language in which all +# documentation generated by doxygen is written. Doxygen will use this +# information to generate all constant output in the proper language. +# The default language is English, other supported languages are: +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional, +# Croatian, Czech, Danish, Dutch, Esperanto, Farsi, Finnish, French, German, +# Greek, Hungarian, Italian, Japanese, Japanese-en (Japanese with English +# messages), Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, +# Polish, Portuguese, Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, +# Slovene, Spanish, Swedish, Ukrainian, and Vietnamese. + +OUTPUT_LANGUAGE = English + +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will +# include brief member descriptions after the members that are listed in +# the file and class documentation (similar to JavaDoc). +# Set to NO to disable this. + +BRIEF_MEMBER_DESC = YES + +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend +# the brief description of a member or function before the detailed description. +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the +# brief descriptions will be completely suppressed. + +REPEAT_BRIEF = YES + +# This tag implements a quasi-intelligent brief description abbreviator +# that is used to form the text in various listings. Each string +# in this list, if found as the leading text of the brief description, will be +# stripped from the text and the result after processing the whole list, is +# used as the annotated text. Otherwise, the brief description is used as-is. +# If left blank, the following values are used ("$name" is automatically +# replaced with the name of the entity): "The $name class" "The $name widget" +# "The $name file" "is" "provides" "specifies" "contains" +# "represents" "a" "an" "the" + +ABBREVIATE_BRIEF = + +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then +# Doxygen will generate a detailed section even if there is only a brief +# description. + +ALWAYS_DETAILED_SEC = NO + +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# inherited members of a class in the documentation of that class as if those +# members were ordinary class members. Constructors, destructors and assignment +# operators of the base classes will not be shown. + +INLINE_INHERITED_MEMB = NO + +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full +# path before files name in the file list and in the header files. If set +# to NO the shortest path that makes the file name unique will be used. + +FULL_PATH_NAMES = YES + +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag +# can be used to strip a user-defined part of the path. Stripping is +# only done if one of the specified strings matches the left-hand part of +# the path. The tag can be used to show relative paths in the file list. +# If left blank the directory from which doxygen is run is used as the +# path to strip. + +STRIP_FROM_PATH = + +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of +# the path mentioned in the documentation of a class, which tells +# the reader which header file to include in order to use a class. +# If left blank only the name of the header file containing the class +# definition is used. Otherwise one should specify the include paths that +# are normally passed to the compiler using the -I flag. + +STRIP_FROM_INC_PATH = + +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter +# (but less readable) file names. This can be useful if your file system +# doesn't support long names like on DOS, Mac, or CD-ROM. + +SHORT_NAMES = NO + +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen +# will interpret the first line (until the first dot) of a JavaDoc-style +# comment as the brief description. If set to NO, the JavaDoc +# comments will behave just like regular Qt-style comments +# (thus requiring an explicit @brief command for a brief description.) + +JAVADOC_AUTOBRIEF = YES + +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will +# interpret the first line (until the first dot) of a Qt-style +# comment as the brief description. If set to NO, the comments +# will behave just like regular Qt-style comments (thus requiring +# an explicit \brief command for a brief description.) + +QT_AUTOBRIEF = NO + +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen +# treat a multi-line C++ special comment block (i.e. a block of //! or /// +# comments) as a brief description. This used to be the default behaviour. +# The new default is to treat a multi-line C++ comment block as a detailed +# description. Set this tag to YES if you prefer the old behaviour instead. + +MULTILINE_CPP_IS_BRIEF = NO + +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented +# member inherits the documentation from any documented member that it +# re-implements. + +INHERIT_DOCS = YES + +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce +# a new page for each member. If set to NO, the documentation of a member will +# be part of the file/class/namespace that contains it. + +SEPARATE_MEMBER_PAGES = NO + +# The TAB_SIZE tag can be used to set the number of spaces in a tab. +# Doxygen uses this value to replace tabs by spaces in code fragments. + +TAB_SIZE = 8 + +# This tag can be used to specify a number of aliases that acts +# as commands in the documentation. An alias has the form "name=value". +# For example adding "sideeffect=\par Side Effects:\n" will allow you to +# put the command \sideeffect (or @sideeffect) in the documentation, which +# will result in a user-defined paragraph with heading "Side Effects:". +# You can put \n's in the value part of an alias to insert newlines. + +ALIASES = + +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C +# sources only. Doxygen will then generate output that is more tailored for C. +# For instance, some of the names that are used will be different. The list +# of all members will be omitted, etc. + +OPTIMIZE_OUTPUT_FOR_C = YES + +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java +# sources only. Doxygen will then generate output that is more tailored for +# Java. For instance, namespaces will be presented as packages, qualified +# scopes will look different, etc. + +OPTIMIZE_OUTPUT_JAVA = NO + +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran +# sources only. Doxygen will then generate output that is more tailored for +# Fortran. + +OPTIMIZE_FOR_FORTRAN = NO + +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL +# sources. Doxygen will then generate output that is tailored for +# VHDL. + +OPTIMIZE_OUTPUT_VHDL = NO + +# Doxygen selects the parser to use depending on the extension of the files it +# parses. With this tag you can assign which parser to use for a given extension. +# Doxygen has a built-in mapping, but you can override or extend it using this +# tag. The format is ext=language, where ext is a file extension, and language +# is one of the parsers supported by doxygen: IDL, Java, Javascript, CSharp, C, +# C++, D, PHP, Objective-C, Python, Fortran, VHDL, C, C++. For instance to make +# doxygen treat .inc files as Fortran files (default is PHP), and .f files as C +# (default is Fortran), use: inc=Fortran f=C. Note that for custom extensions +# you also need to set FILE_PATTERNS otherwise the files are not read by doxygen. + +EXTENSION_MAPPING = + +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want +# to include (a tag file for) the STL sources as input, then you should +# set this tag to YES in order to let doxygen match functions declarations and +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s. +# func(std::string) {}). This also makes the inheritance and collaboration +# diagrams that involve STL classes more complete and accurate. + +BUILTIN_STL_SUPPORT = NO + +# If you use Microsoft's C++/CLI language, you should set this option to YES to +# enable parsing support. + +CPP_CLI_SUPPORT = NO + +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only. +# Doxygen will parse them like normal C++ but will assume all classes use public +# instead of private inheritance when no explicit protection keyword is present. + +SIP_SUPPORT = NO + +# For Microsoft's IDL there are propget and propput attributes to indicate getter +# and setter methods for a property. Setting this option to YES (the default) +# will make doxygen replace the get and set methods by a property in the +# documentation. This will only work if the methods are indeed getting or +# setting a simple type. If this is not the case, or you want to show the +# methods anyway, you should set this option to NO. + +IDL_PROPERTY_SUPPORT = YES + +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC +# tag is set to YES, then doxygen will reuse the documentation of the first +# member in the group (if any) for the other members of the group. By default +# all members of a group must be documented explicitly. + +DISTRIBUTE_GROUP_DOC = NO + +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of +# the same type (for instance a group of public functions) to be put as a +# subgroup of that type (e.g. under the Public Functions section). Set it to +# NO to prevent subgrouping. Alternatively, this can be done per class using +# the \nosubgrouping command. + +SUBGROUPING = YES + +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum +# is documented as struct, union, or enum with the name of the typedef. So +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct +# with name TypeT. When disabled the typedef will appear as a member of a file, +# namespace, or class. And the struct will be named TypeS. This can typically +# be useful for C code in case the coding convention dictates that all compound +# types are typedef'ed and only the typedef is referenced, never the tag name. + +TYPEDEF_HIDES_STRUCT = NO + +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to +# determine which symbols to keep in memory and which to flush to disk. +# When the cache is full, less often used symbols will be written to disk. +# For small to medium size projects (<1000 input files) the default value is +# probably good enough. For larger projects a too small cache size can cause +# doxygen to be busy swapping symbols to and from disk most of the time +# causing a significant performance penalty. +# If the system has enough physical memory increasing the cache will improve the +# performance by keeping more symbols in memory. Note that the value works on +# a logarithmic scale so increasing the size by one will roughly double the +# memory usage. The cache size is given by this formula: +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0, +# corresponding to a cache size of 2^16 = 65536 symbols + +SYMBOL_CACHE_SIZE = 0 + +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- + +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in +# documentation are documented, even if no documentation was available. +# Private class members and static file members will be hidden unless +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES + +EXTRACT_ALL = NO + +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class +# will be included in the documentation. + +EXTRACT_PRIVATE = NO + +# If the EXTRACT_STATIC tag is set to YES all static members of a file +# will be included in the documentation. + +EXTRACT_STATIC = NO + +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs) +# defined locally in source files will be included in the documentation. +# If set to NO only classes defined in header files are included. + +EXTRACT_LOCAL_CLASSES = YES + +# This flag is only useful for Objective-C code. When set to YES local +# methods, which are defined in the implementation section but not in +# the interface are included in the documentation. +# If set to NO (the default) only methods in the interface are included. + +EXTRACT_LOCAL_METHODS = NO + +# If this flag is set to YES, the members of anonymous namespaces will be +# extracted and appear in the documentation as a namespace called +# 'anonymous_namespace{file}', where file will be replaced with the base +# name of the file that contains the anonymous namespace. By default +# anonymous namespaces are hidden. + +EXTRACT_ANON_NSPACES = NO + +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all +# undocumented members of documented classes, files or namespaces. +# If set to NO (the default) these members will be included in the +# various overviews, but no documentation section is generated. +# This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_MEMBERS = NO + +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all +# undocumented classes that are normally visible in the class hierarchy. +# If set to NO (the default) these classes will be included in the various +# overviews. This option has no effect if EXTRACT_ALL is enabled. + +HIDE_UNDOC_CLASSES = NO + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all +# friend (class|struct|union) declarations. +# If set to NO (the default) these declarations will be included in the +# documentation. + +HIDE_FRIEND_COMPOUNDS = NO + +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any +# documentation blocks found inside the body of a function. +# If set to NO (the default) these blocks will be appended to the +# function's detailed documentation block. + +HIDE_IN_BODY_DOCS = NO + +# The INTERNAL_DOCS tag determines if documentation +# that is typed after a \internal command is included. If the tag is set +# to NO (the default) then the documentation will be excluded. +# Set it to YES to include the internal documentation. + +INTERNAL_DOCS = NO + +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate +# file names in lower-case letters. If set to YES upper-case letters are also +# allowed. This is useful if you have classes or files whose names only differ +# in case and if your file system supports case sensitive file names. Windows +# and Mac users are advised to set this option to NO. + +CASE_SENSE_NAMES = YES + +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen +# will show members with their full class and namespace scopes in the +# documentation. If set to YES the scope will be hidden. + +HIDE_SCOPE_NAMES = NO + +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen +# will put a list of the files that are included by a file in the documentation +# of that file. + +SHOW_INCLUDE_FILES = YES + +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen +# will list include files with double quotes in the documentation +# rather than with sharp brackets. + +FORCE_LOCAL_INCLUDES = NO + +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline] +# is inserted in the documentation for inline members. + +INLINE_INFO = YES + +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen +# will sort the (detailed) documentation of file and class members +# alphabetically by member name. If set to NO the members will appear in +# declaration order. + +SORT_MEMBER_DOCS = YES + +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the +# brief documentation of file, namespace and class members alphabetically +# by member name. If set to NO (the default) the members will appear in +# declaration order. + +SORT_BRIEF_DOCS = NO + +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen +# will sort the (brief and detailed) documentation of class members so that +# constructors and destructors are listed first. If set to NO (the default) +# the constructors will appear in the respective orders defined by +# SORT_MEMBER_DOCS and SORT_BRIEF_DOCS. +# This tag will be ignored for brief docs if SORT_BRIEF_DOCS is set to NO +# and ignored for detailed docs if SORT_MEMBER_DOCS is set to NO. + +SORT_MEMBERS_CTORS_1ST = NO + +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the +# hierarchy of group names into alphabetical order. If set to NO (the default) +# the group names will appear in their defined order. + +SORT_GROUP_NAMES = NO + +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be +# sorted by fully-qualified names, including namespaces. If set to +# NO (the default), the class list will be sorted only by class name, +# not including the namespace part. +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES. +# Note: This option applies only to the class list, not to the +# alphabetical list. + +SORT_BY_SCOPE_NAME = NO + +# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper type resolution of all parameters of a function it will reject a +# match between the prototype and the implementation of a member function even if there is only one candidate or it is obvious which candidate to choose by doing a simple string match. By disabling STRICT_PROTO_MATCHING doxygen +# will still accept a match between prototype and implementation in such cases. + +STRICT_PROTO_MATCHING = NO + +# The GENERATE_TODOLIST tag can be used to enable (YES) or +# disable (NO) the todo list. This list is created by putting \todo +# commands in the documentation. + +GENERATE_TODOLIST = YES + +# The GENERATE_TESTLIST tag can be used to enable (YES) or +# disable (NO) the test list. This list is created by putting \test +# commands in the documentation. + +GENERATE_TESTLIST = YES + +# The GENERATE_BUGLIST tag can be used to enable (YES) or +# disable (NO) the bug list. This list is created by putting \bug +# commands in the documentation. + +GENERATE_BUGLIST = YES + +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or +# disable (NO) the deprecated list. This list is created by putting +# \deprecated commands in the documentation. + +GENERATE_DEPRECATEDLIST= YES + +# The ENABLED_SECTIONS tag can be used to enable conditional +# documentation sections, marked by \if sectionname ... \endif. + +ENABLED_SECTIONS = + +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines +# the initial value of a variable or macro consists of for it to appear in +# the documentation. If the initializer consists of more lines than specified +# here it will be hidden. Use a value of 0 to hide initializers completely. +# The appearance of the initializer of individual variables and macros in the +# documentation can be controlled using \showinitializer or \hideinitializer +# command in the documentation regardless of this setting. + +MAX_INITIALIZER_LINES = 30 + +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated +# at the bottom of the documentation of classes and structs. If set to YES the +# list will mention the files that were used to generate the documentation. + +SHOW_USED_FILES = YES + +# Set the SHOW_FILES tag to NO to disable the generation of the Files page. +# This will remove the Files entry from the Quick Index and from the +# Folder Tree View (if specified). The default is YES. + +SHOW_FILES = YES + +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the +# Namespaces page. +# This will remove the Namespaces entry from the Quick Index +# and from the Folder Tree View (if specified). The default is YES. + +SHOW_NAMESPACES = YES + +# The FILE_VERSION_FILTER tag can be used to specify a program or script that +# doxygen should invoke to get the current version for each file (typically from +# the version control system). Doxygen will invoke the program by executing (via +# popen()) the command , where is the value of +# the FILE_VERSION_FILTER tag, and is the name of an input file +# provided by doxygen. Whatever the program writes to standard output +# is used as the file version. See the manual for examples. + +FILE_VERSION_FILTER = + +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed +# by doxygen. The layout file controls the global structure of the generated +# output files in an output format independent way. The create the layout file +# that represents doxygen's defaults, run doxygen with the -l option. +# You can optionally specify a file name after the option, if omitted +# DoxygenLayout.xml will be used as the name of the layout file. + +LAYOUT_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- + +# The QUIET tag can be used to turn on/off the messages that are generated +# by doxygen. Possible values are YES and NO. If left blank NO is used. + +QUIET = NO + +# The WARNINGS tag can be used to turn on/off the warning messages that are +# generated by doxygen. Possible values are YES and NO. If left blank +# NO is used. + +WARNINGS = YES + +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will +# automatically be disabled. + +WARN_IF_UNDOCUMENTED = YES + +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for +# potential errors in the documentation, such as not documenting some +# parameters in a documented function, or documenting parameters that +# don't exist or using markup commands wrongly. + +WARN_IF_DOC_ERROR = YES + +# The WARN_NO_PARAMDOC option can be enabled to get warnings for +# functions that are documented, but have no documentation for their parameters +# or return value. If set to NO (the default) doxygen will only warn about +# wrong or incomplete parameter documentation, but not about the absence of +# documentation. + +WARN_NO_PARAMDOC = NO + +# The WARN_FORMAT tag determines the format of the warning messages that +# doxygen can produce. The string should contain the $file, $line, and $text +# tags, which will be replaced by the file and line number from which the +# warning originated and the warning text. Optionally the format may contain +# $version, which will be replaced by the version of the file (if it could +# be obtained via FILE_VERSION_FILTER) + +WARN_FORMAT = "$file:$line: $text" + +# The WARN_LOGFILE tag can be used to specify a file to which warning +# and error messages should be written. If left blank the output is written +# to stderr. + +WARN_LOGFILE = + +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- + +# The INPUT tag can be used to specify the files and/or directories that contain +# documented source files. You may enter file names like "myfile.cpp" or +# directories like "/usr/src/myproject". Separate the files or directories +# with spaces. + +INPUT = src/headers/spatialite.h \ + src/headers/spatialite/gaiaaux.h \ + src/headers/spatialite/gaiaexif.h \ + src/headers/spatialite/gaiageo.h \ + src/headers/spatialite/gg_const.h \ + src/headers/spatialite/gg_structs.h \ + src/headers/spatialite/gg_core.h \ + src/headers/spatialite/gg_mbr.h \ + src/headers/spatialite/gg_formats.h \ + src/headers/spatialite/gg_dynamic.h \ + src/headers/spatialite/gg_advanced.h \ + src/headers/spatialite/gg_xml.h \ + src/headers/spatialite/gg_wfs.h \ + src/headers/spatialite/gg_dxf.h \ + examples/examples.doxy \ + mainpage.doxy + +# This tag can be used to specify the character encoding of the source files +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is +# also the default input encoding. Doxygen uses libiconv (or the iconv built +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for +# the list of possible encodings. + +INPUT_ENCODING = UTF-8 + +# If the value of the INPUT tag contains directories, you can use the +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank the following patterns are tested: +# *.c *.cc *.cxx *.cpp *.c++ *.d *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh +# *.hxx *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.dox *.py +# *.f90 *.f *.for *.vhd *.vhdl + +FILE_PATTERNS = + +# The RECURSIVE tag can be used to turn specify whether or not subdirectories +# should be searched for input files as well. Possible values are YES and NO. +# If left blank NO is used. + +RECURSIVE = NO + +# The EXCLUDE tag can be used to specify files and/or directories that should +# excluded from the INPUT source files. This way you can easily exclude a +# subdirectory from a directory tree whose root is specified with the INPUT tag. + +EXCLUDE = + +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or +# directories that are symbolic links (a Unix file system feature) are excluded +# from the input. + +EXCLUDE_SYMLINKS = NO + +# If the value of the INPUT tag contains directories, you can use the +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude +# certain files from those directories. Note that the wildcards are matched +# against the file with absolute path, so to exclude all test directories +# for example use the pattern */test/* + +EXCLUDE_PATTERNS = + +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names +# (namespaces, classes, functions, etc.) that should be excluded from the +# output. The symbol name can be a fully qualified name, a word, or if the +# wildcard * is used, a substring. Examples: ANamespace, AClass, +# AClass::ANamespace, ANamespace::*Test + +EXCLUDE_SYMBOLS = + +# The EXAMPLE_PATH tag can be used to specify one or more files or +# directories that contain example code fragments that are included (see +# the \include command). + +EXAMPLE_PATH = examples + +# If the value of the EXAMPLE_PATH tag contains directories, you can use the +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp +# and *.h) to filter out the source-files in the directories. If left +# blank all files are included. + +EXAMPLE_PATTERNS = + +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be +# searched for input files to be used with the \include or \dontinclude +# commands irrespective of the value of the RECURSIVE tag. +# Possible values are YES and NO. If left blank NO is used. + +EXAMPLE_RECURSIVE = NO + +# The IMAGE_PATH tag can be used to specify one or more files or +# directories that contain image that are included in the documentation (see +# the \image command). + +IMAGE_PATH = + +# The INPUT_FILTER tag can be used to specify a program that doxygen should +# invoke to filter for each input file. Doxygen will invoke the filter program +# by executing (via popen()) the command , where +# is the value of the INPUT_FILTER tag, and is the name of an +# input file. Doxygen will then use the output that the filter program writes +# to standard output. +# If FILTER_PATTERNS is specified, this tag will be +# ignored. + +INPUT_FILTER = + +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern +# basis. +# Doxygen will compare the file name with each pattern and apply the +# filter if there is a match. +# The filters are a list of the form: +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further +# info on how filters are used. If FILTER_PATTERNS is empty or if +# non of the patterns match the file name, INPUT_FILTER is applied. + +FILTER_PATTERNS = + +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using +# INPUT_FILTER) will be used to filter the input files when producing source +# files to browse (i.e. when SOURCE_BROWSER is set to YES). + +FILTER_SOURCE_FILES = NO + +# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file +# pattern. A pattern will override the setting for FILTER_PATTERN (if any) +# and it is also possible to disable source filtering for a specific pattern +# using *.ext= (so without naming a filter). This option only has effect when +# FILTER_SOURCE_FILES is enabled. + +FILTER_SOURCE_PATTERNS = + +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- + +# If the SOURCE_BROWSER tag is set to YES then a list of source files will +# be generated. Documented entities will be cross-referenced with these sources. +# Note: To get rid of all source code in the generated output, make sure also +# VERBATIM_HEADERS is set to NO. + +SOURCE_BROWSER = NO + +# Setting the INLINE_SOURCES tag to YES will include the body +# of functions and classes directly in the documentation. + +INLINE_SOURCES = NO + +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct +# doxygen to hide any special comment blocks from generated source code +# fragments. Normal C and C++ comments will always remain visible. + +STRIP_CODE_COMMENTS = YES + +# If the REFERENCED_BY_RELATION tag is set to YES +# then for each documented function all documented +# functions referencing it will be listed. + +REFERENCED_BY_RELATION = NO + +# If the REFERENCES_RELATION tag is set to YES +# then for each documented function all documented entities +# called/used by that function will be listed. + +REFERENCES_RELATION = NO + +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default) +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will +# link to the source code. +# Otherwise they will link to the documentation. + +REFERENCES_LINK_SOURCE = YES + +# If the USE_HTAGS tag is set to YES then the references to source code +# will point to the HTML generated by the htags(1) tool instead of doxygen +# built-in source browser. The htags tool is part of GNU's global source +# tagging system (see http://www.gnu.org/software/global/global.html). You +# will need version 4.8.6 or higher. + +USE_HTAGS = NO + +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen +# will generate a verbatim copy of the header file for each class for +# which an include is specified. Set to NO to disable this. + +VERBATIM_HEADERS = YES + +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- + +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index +# of all compounds will be generated. Enable this if the project +# contains a lot of classes, structs, unions or interfaces. + +ALPHABETICAL_INDEX = YES + +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns +# in which this list will be split (can be a number in the range [1..20]) + +COLS_IN_ALPHA_INDEX = 5 + +# In case all classes in a project start with a common prefix, all +# classes will be put under the same header in the alphabetical index. +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that +# should be ignored while generating the index headers. + +IGNORE_PREFIX = + +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- + +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will +# generate HTML output. + +GENERATE_HTML = YES + +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `html' will be used as the default path. + +HTML_OUTPUT = html + +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank +# doxygen will generate files with .html extension. + +HTML_FILE_EXTENSION = .html + +# The HTML_HEADER tag can be used to specify a personal HTML header for +# each generated HTML page. If it is left blank doxygen will generate a +# standard header. + +HTML_HEADER = + +# The HTML_FOOTER tag can be used to specify a personal HTML footer for +# each generated HTML page. If it is left blank doxygen will generate a +# standard footer. + +HTML_FOOTER = + +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading +# style sheet that is used by each HTML page. It can be used to +# fine-tune the look of the HTML output. If the tag is left blank doxygen +# will generate a default style sheet. Note that doxygen will try to copy +# the style sheet file to the HTML output directory, so don't put your own +# stylesheet in the HTML output directory as well, or it will be erased! + +HTML_STYLESHEET = + +# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. +# Doxygen will adjust the colors in the stylesheet and background images +# according to this color. Hue is specified as an angle on a colorwheel, +# see http://en.wikipedia.org/wiki/Hue for more information. +# For instance the value 0 represents red, 60 is yellow, 120 is green, +# 180 is cyan, 240 is blue, 300 purple, and 360 is red again. +# The allowed range is 0 to 359. + +HTML_COLORSTYLE_HUE = 220 + +# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of +# the colors in the HTML output. For a value of 0 the output will use +# grayscales only. A value of 255 will produce the most vivid colors. + +HTML_COLORSTYLE_SAT = 100 + +# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to +# the luminance component of the colors in the HTML output. Values below +# 100 gradually make the output lighter, whereas values above 100 make +# the output darker. The value divided by 100 is the actual gamma applied, +# so 80 represents a gamma of 0.8, The value 220 represents a gamma of 2.2, +# and 100 does not change the gamma. + +HTML_COLORSTYLE_GAMMA = 80 + +# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML +# page will contain the date and time when the page was generated. Setting +# this to NO can help when comparing the output of multiple runs. + +HTML_TIMESTAMP = YES + +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML +# documentation will contain sections that can be hidden and shown after the +# page has loaded. For this to work a browser that supports +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari). + +HTML_DYNAMIC_SECTIONS = NO + +# If the GENERATE_DOCSET tag is set to YES, additional index files +# will be generated that can be used as input for Apple's Xcode 3 +# integrated development environment, introduced with OSX 10.5 (Leopard). +# To create a documentation set, doxygen will generate a Makefile in the +# HTML output directory. Running make will produce the docset in that +# directory and running "make install" will install the docset in +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find +# it at startup. +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html +# for more information. + +GENERATE_DOCSET = NO + +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the +# feed. A documentation feed provides an umbrella under which multiple +# documentation sets from a single provider (such as a company or product suite) +# can be grouped. + +DOCSET_FEEDNAME = "Doxygen generated docs" + +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that +# should uniquely identify the documentation set bundle. This should be a +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen +# will append .docset to the name. + +DOCSET_BUNDLE_ID = org.doxygen.Project + +# When GENERATE_PUBLISHER_ID tag specifies a string that should uniquely identify +# the documentation publisher. This should be a reverse domain-name style +# string, e.g. com.mycompany.MyDocSet.documentation. + +DOCSET_PUBLISHER_ID = org.doxygen.Publisher + +# The GENERATE_PUBLISHER_NAME tag identifies the documentation publisher. + +DOCSET_PUBLISHER_NAME = Publisher + +# If the GENERATE_HTMLHELP tag is set to YES, additional index files +# will be generated that can be used as input for tools like the +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm) +# of the generated HTML documentation. + +GENERATE_HTMLHELP = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can +# be used to specify the file name of the resulting .chm file. You +# can add a path in front of the file if the result should not be +# written to the html output directory. + +CHM_FILE = + +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can +# be used to specify the location (absolute path including file name) of +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run +# the HTML help compiler on the generated index.hhp. + +HHC_LOCATION = + +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag +# controls if a separate .chi index file is generated (YES) or that +# it should be included in the master .chm file (NO). + +GENERATE_CHI = NO + +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING +# is used to encode HtmlHelp index (hhk), content (hhc) and project file +# content. + +CHM_INDEX_ENCODING = + +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag +# controls whether a binary table of contents is generated (YES) or a +# normal table of contents (NO) in the .chm file. + +BINARY_TOC = NO + +# The TOC_EXPAND flag can be set to YES to add extra items for group members +# to the contents of the HTML help documentation and to the tree view. + +TOC_EXPAND = NO + +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and +# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated +# that can be used as input for Qt's qhelpgenerator to generate a +# Qt Compressed Help (.qch) of the generated HTML documentation. + +GENERATE_QHP = NO + +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can +# be used to specify the file name of the resulting .qch file. +# The path specified is relative to the HTML output folder. + +QCH_FILE = + +# The QHP_NAMESPACE tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#namespace + +QHP_NAMESPACE = org.doxygen.Project + +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating +# Qt Help Project output. For more information please see +# http://doc.trolltech.com/qthelpproject.html#virtual-folders + +QHP_VIRTUAL_FOLDER = doc + +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to +# add. For more information please see +# http://doc.trolltech.com/qthelpproject.html#custom-filters + +QHP_CUST_FILTER_NAME = + +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the +# custom filter to add. For more information please see +# +# Qt Help Project / Custom Filters. + +QHP_CUST_FILTER_ATTRS = + +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this +# project's +# filter section matches. +# +# Qt Help Project / Filter Attributes. + +QHP_SECT_FILTER_ATTRS = + +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can +# be used to specify the location of Qt's qhelpgenerator. +# If non-empty doxygen will try to run qhelpgenerator on the generated +# .qhp file. + +QHG_LOCATION = + +# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files +# will be generated, which together with the HTML files, form an Eclipse help +# plugin. To install this plugin and make it available under the help contents +# menu in Eclipse, the contents of the directory containing the HTML and XML +# files needs to be copied into the plugins directory of eclipse. The name of +# the directory within the plugins directory should be the same as +# the ECLIPSE_DOC_ID value. After copying Eclipse needs to be restarted before +# the help appears. + +GENERATE_ECLIPSEHELP = NO + +# A unique identifier for the eclipse help plugin. When installing the plugin +# the directory name containing the HTML and XML files should also have +# this name. + +ECLIPSE_DOC_ID = org.doxygen.Project + +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at +# top of each HTML page. The value NO (the default) enables the index and +# the value YES disables it. + +DISABLE_INDEX = NO + +# This tag can be used to set the number of enum values (range [0,1..20]) +# that doxygen will group on one line in the generated HTML documentation. +# Note that a value of 0 will completely suppress the enum values from appearing in the overview section. + +ENUM_VALUES_PER_LINE = 4 + +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be +# used to set the initial width (in pixels) of the frame in which the tree +# is shown. + +TREEVIEW_WIDTH = 250 + +# When the EXT_LINKS_IN_WINDOW option is set to YES doxygen will open +# links to external symbols imported via tag files in a separate window. + +EXT_LINKS_IN_WINDOW = NO + +# Use this tag to change the font size of Latex formulas included +# as images in the HTML documentation. The default is 10. Note that +# when you change the font size after a successful doxygen run you need +# to manually remove any form_*.png images from the HTML output directory +# to force them to be regenerated. + +FORMULA_FONTSIZE = 10 + +# Use the FORMULA_TRANPARENT tag to determine whether or not the images +# generated for formulas are transparent PNGs. Transparent PNGs are +# not supported properly for IE 6.0, but are supported on all modern browsers. +# Note that when changing this option you need to delete any form_*.png files +# in the HTML output before the changes have effect. + +FORMULA_TRANSPARENT = YES + +# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax +# (see http://www.mathjax.org) which uses client side Javascript for the +# rendering instead of using prerendered bitmaps. Use this if you do not +# have LaTeX installed or if you want to formulas look prettier in the HTML +# output. When enabled you also need to install MathJax separately and +# configure the path to it using the MATHJAX_RELPATH option. + +USE_MATHJAX = NO + +# When MathJax is enabled you need to specify the location relative to the +# HTML output directory using the MATHJAX_RELPATH option. The destination +# directory should contain the MathJax.js script. For instance, if the mathjax +# directory is located at the same level as the HTML output directory, then +# MATHJAX_RELPATH should be ../mathjax. The default value points to the mathjax.org site, so you can quickly see the result without installing +# MathJax, but it is strongly recommended to install a local copy of MathJax +# before deployment. + +MATHJAX_RELPATH = http://www.mathjax.org/mathjax + +# When the SEARCHENGINE tag is enabled doxygen will generate a search box +# for the HTML output. The underlying search engine uses javascript +# and DHTML and should work on any modern browser. Note that when using +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets +# (GENERATE_DOCSET) there is already a search function so this one should +# typically be disabled. For large projects the javascript based search engine +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution. + +SEARCHENGINE = YES + +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be +# implemented using a PHP enabled web server instead of at the web client +# using Javascript. Doxygen will generate the search PHP script and index +# file to put on the web server. The advantage of the server +# based approach is that it scales better to large projects and allows +# full text search. The disadvantages are that it is more difficult to setup +# and does not have live searching capabilities. + +SERVER_BASED_SEARCH = NO + +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- + +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will +# generate Latex output. + +GENERATE_LATEX = YES + +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `latex' will be used as the default path. + +LATEX_OUTPUT = latex + +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be +# invoked. If left blank `latex' will be used as the default command name. +# Note that when enabling USE_PDFLATEX this option is only used for +# generating bitmaps for formulas in the HTML output, but not in the +# Makefile that is written to the output directory. + +LATEX_CMD_NAME = latex + +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to +# generate index for LaTeX. If left blank `makeindex' will be used as the +# default command name. + +MAKEINDEX_CMD_NAME = makeindex + +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact +# LaTeX documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_LATEX = NO + +# The PAPER_TYPE tag can be used to set the paper type that is used +# by the printer. Possible values are: a4, letter, legal and +# executive. If left blank a4wide will be used. + +PAPER_TYPE = a4 + +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX +# packages that should be included in the LaTeX output. + +EXTRA_PACKAGES = + +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for +# the generated latex document. The header should contain everything until +# the first chapter. If it is left blank doxygen will generate a +# standard header. Notice: only use this tag if you know what you are doing! + +LATEX_HEADER = + +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated +# is prepared for conversion to pdf (using ps2pdf). The pdf file will +# contain links (just like the HTML output) instead of page references +# This makes the output suitable for online browsing using a pdf viewer. + +PDF_HYPERLINKS = YES + +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of +# plain latex in the generated Makefile. Set this option to YES to get a +# higher quality PDF documentation. + +USE_PDFLATEX = YES + +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode. +# command to the generated LaTeX files. This will instruct LaTeX to keep +# running if errors occur, instead of asking the user for help. +# This option is also used when generating formulas in HTML. + +LATEX_BATCHMODE = NO + +# If LATEX_HIDE_INDICES is set to YES then doxygen will not +# include the index chapters (such as File Index, Compound Index, etc.) +# in the output. + +LATEX_HIDE_INDICES = NO + +# If LATEX_SOURCE_CODE is set to YES then doxygen will include +# source code with syntax highlighting in the LaTeX output. +# Note that which sources are shown also depends on other settings +# such as SOURCE_BROWSER. + +LATEX_SOURCE_CODE = NO + +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- + +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output +# The RTF output is optimized for Word 97 and may not look very pretty with +# other RTF readers or editors. + +GENERATE_RTF = NO + +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `rtf' will be used as the default path. + +RTF_OUTPUT = rtf + +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact +# RTF documents. This may be useful for small projects and may help to +# save some trees in general. + +COMPACT_RTF = NO + +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated +# will contain hyperlink fields. The RTF file will +# contain links (just like the HTML output) instead of page references. +# This makes the output suitable for online browsing using WORD or other +# programs which support those fields. +# Note: wordpad (write) and others do not support links. + +RTF_HYPERLINKS = NO + +# Load stylesheet definitions from file. Syntax is similar to doxygen's +# config file, i.e. a series of assignments. You only have to provide +# replacements, missing definitions are set to their default value. + +RTF_STYLESHEET_FILE = + +# Set optional variables used in the generation of an rtf document. +# Syntax is similar to doxygen's config file. + +RTF_EXTENSIONS_FILE = + +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- + +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will +# generate man pages + +GENERATE_MAN = NO + +# The MAN_OUTPUT tag is used to specify where the man pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `man' will be used as the default path. + +MAN_OUTPUT = man + +# The MAN_EXTENSION tag determines the extension that is added to +# the generated man pages (default is the subroutine's section .3) + +MAN_EXTENSION = .3 + +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, +# then it will generate one additional man file for each entity +# documented in the real man page(s). These additional files +# only source the real man page, but without them the man command +# would be unable to find the correct page. The default is NO. + +MAN_LINKS = NO + +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- + +# If the GENERATE_XML tag is set to YES Doxygen will +# generate an XML file that captures the structure of +# the code including all documentation. + +GENERATE_XML = NO + +# The XML_OUTPUT tag is used to specify where the XML pages will be put. +# If a relative path is entered the value of OUTPUT_DIRECTORY will be +# put in front of it. If left blank `xml' will be used as the default path. + +XML_OUTPUT = xml + +# The XML_SCHEMA tag can be used to specify an XML schema, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_SCHEMA = + +# The XML_DTD tag can be used to specify an XML DTD, +# which can be used by a validating XML parser to check the +# syntax of the XML files. + +XML_DTD = + +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will +# dump the program listings (including syntax highlighting +# and cross-referencing information) to the XML output. Note that +# enabling this will significantly increase the size of the XML output. + +XML_PROGRAMLISTING = YES + +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- + +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will +# generate an AutoGen Definitions (see autogen.sf.net) file +# that captures the structure of the code including all +# documentation. Note that this feature is still experimental +# and incomplete at the moment. + +GENERATE_AUTOGEN_DEF = NO + +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- + +# If the GENERATE_PERLMOD tag is set to YES Doxygen will +# generate a Perl module file that captures the structure of +# the code including all documentation. Note that this +# feature is still experimental and incomplete at the +# moment. + +GENERATE_PERLMOD = NO + +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate +# the necessary Makefile rules, Perl scripts and LaTeX code to be able +# to generate PDF and DVI output from the Perl module output. + +PERLMOD_LATEX = NO + +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be +# nicely formatted so it can be parsed by a human reader. +# This is useful +# if you want to understand what is going on. +# On the other hand, if this +# tag is set to NO the size of the Perl module output will be much smaller +# and Perl will parse it just the same. + +PERLMOD_PRETTY = YES + +# The names of the make variables in the generated doxyrules.make file +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. +# This is useful so different doxyrules.make files included by the same +# Makefile don't overwrite each other's variables. + +PERLMOD_MAKEVAR_PREFIX = + +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- + +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will +# evaluate all C-preprocessor directives found in the sources and include +# files. + +ENABLE_PREPROCESSING = YES + +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro +# names in the source code. If set to NO (the default) only conditional +# compilation will be performed. Macro expansion can be done in a controlled +# way by setting EXPAND_ONLY_PREDEF to YES. + +MACRO_EXPANSION = NO + +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES +# then the macro expansion is limited to the macros specified with the +# PREDEFINED and EXPAND_AS_DEFINED tags. + +EXPAND_ONLY_PREDEF = NO + +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files +# in the INCLUDE_PATH (see below) will be search if a #include is found. + +SEARCH_INCLUDES = YES + +# The INCLUDE_PATH tag can be used to specify one or more directories that +# contain include files that are not input files but should be processed by +# the preprocessor. + +INCLUDE_PATH = + +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard +# patterns (like *.h and *.hpp) to filter out the header-files in the +# directories. If left blank, the patterns specified with FILE_PATTERNS will +# be used. + +INCLUDE_FILE_PATTERNS = + +# The PREDEFINED tag can be used to specify one or more macro names that +# are defined before the preprocessor is started (similar to the -D option of +# gcc). The argument of the tag is a list of macros of the form: name +# or name=definition (no spaces). If the definition and the = are +# omitted =1 is assumed. To prevent a macro definition from being +# undefined via #undef or recursively expanded use the := operator +# instead of the = operator. + +PREDEFINED = DOXYGEN_SHOULD_SKIP_THIS + +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then +# this tag can be used to specify a list of macro names that should be expanded. +# The macro definition that is found in the sources will be used. +# Use the PREDEFINED tag if you want to use a different macro definition that overrules the definition found in the source code. + +EXPAND_AS_DEFINED = + +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then +# doxygen's preprocessor will remove all references to function-like macros +# that are alone on a line, have an all uppercase name, and do not end with a +# semicolon, because these will confuse the parser if not removed. + +SKIP_FUNCTION_MACROS = YES + +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- + +# The TAGFILES option can be used to specify one or more tagfiles. +# Optionally an initial location of the external documentation +# can be added for each tagfile. The format of a tag file without +# this location is as follows: +# +# TAGFILES = file1 file2 ... +# Adding location for the tag files is done as follows: +# +# TAGFILES = file1=loc1 "file2 = loc2" ... +# where "loc1" and "loc2" can be relative or absolute paths or +# URLs. If a location is present for each tag, the installdox tool +# does not have to be run to correct the links. +# Note that each tag file must have a unique name +# (where the name does NOT include the path) +# If a tag file is not located in the directory in which doxygen +# is run, you must also specify the path to the tagfile here. + +TAGFILES = + +# When a file name is specified after GENERATE_TAGFILE, doxygen will create +# a tag file that is based on the input files it reads. + +GENERATE_TAGFILE = + +# If the ALLEXTERNALS tag is set to YES all external classes will be listed +# in the class index. If set to NO only the inherited external classes +# will be listed. + +ALLEXTERNALS = NO + +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed +# in the modules index. If set to NO, only the current project's groups will +# be listed. + +EXTERNAL_GROUPS = YES + +# The PERL_PATH should be the absolute path and name of the perl script +# interpreter (i.e. the result of `which perl'). + +PERL_PATH = /usr/bin/perl + +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- + +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base +# or super classes. Setting the tag to NO turns the diagrams off. Note that +# this option also works with HAVE_DOT disabled, but it is recommended to +# install and use dot, since it yields more powerful graphs. + +CLASS_DIAGRAMS = YES + +# You can define message sequence charts within doxygen comments using the \msc +# command. Doxygen will then run the mscgen tool (see +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the +# documentation. The MSCGEN_PATH tag allows you to specify the directory where +# the mscgen tool resides. If left empty the tool is assumed to be found in the +# default search path. + +MSCGEN_PATH = + +# If set to YES, the inheritance and collaboration graphs will hide +# inheritance and usage relations if the target is undocumented +# or is not a class. + +HIDE_UNDOC_RELATIONS = YES + +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# available from the path. This tool is part of Graphviz, a graph visualization +# toolkit from AT&T and Lucent Bell Labs. The other options in this section +# have no effect if this option is set to NO (the default) + +HAVE_DOT = YES + +# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is +# allowed to run in parallel. When set to 0 (the default) doxygen will +# base this on the number of processors available in the system. You can set it +# explicitly to a value larger than 0 to get control over the balance +# between CPU load and processing speed. + +DOT_NUM_THREADS = 0 + +# By default doxygen will write a font called Helvetica to the output +# directory and reference it in all dot files that doxygen generates. +# When you want a differently looking font you can specify the font name +# using DOT_FONTNAME. You need to make sure dot is able to find the font, +# which can be done by putting it in a standard location or by setting the +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory +# containing the font. + +DOT_FONTNAME = Helvetica + +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs. +# The default size is 10pt. + +DOT_FONTSIZE = 10 + +# By default doxygen will tell dot to use the output directory to look for the +# FreeSans.ttf font (which doxygen will put there itself). If you specify a +# different font using DOT_FONTNAME you can set the path where dot +# can find it using this tag. + +DOT_FONTPATH = + +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect inheritance relations. Setting this tag to YES will force the +# the CLASS_DIAGRAMS tag to NO. + +CLASS_GRAPH = YES + +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for each documented class showing the direct and +# indirect implementation dependencies (inheritance, containment, and +# class references variables) of the class with other documented classes. + +COLLABORATION_GRAPH = YES + +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen +# will generate a graph for groups, showing the direct groups dependencies + +GROUP_GRAPHS = YES + +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and +# collaboration diagrams in a style similar to the OMG's Unified Modeling +# Language. + +UML_LOOK = NO + +# If set to YES, the inheritance and collaboration graphs will show the +# relations between templates and their instances. + +TEMPLATE_RELATIONS = NO + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT +# tags are set to YES then doxygen will generate a graph for each documented +# file showing the direct and indirect include dependencies of the file with +# other documented files. + +INCLUDE_GRAPH = YES + +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each +# documented header file showing the documented files that directly or +# indirectly include this file. + +INCLUDED_BY_GRAPH = YES + +# If the CALL_GRAPH and HAVE_DOT options are set to YES then +# doxygen will generate a call dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable call graphs +# for selected functions only using the \callgraph command. + +CALL_GRAPH = NO + +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then +# doxygen will generate a caller dependency graph for every global function +# or class method. Note that enabling this option will significantly increase +# the time of a run. So in most cases it will be better to enable caller +# graphs for selected functions only using the \callergraph command. + +CALLER_GRAPH = NO + +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen +# will generate a graphical hierarchy of all classes instead of a textual one. + +GRAPHICAL_HIERARCHY = YES + +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES +# then doxygen will show the dependencies a directory has on other directories +# in a graphical way. The dependency relations are determined by the #include +# relations between the files in the directories. + +DIRECTORY_GRAPH = YES + +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images +# generated by dot. Possible values are png, svg, gif or svg. +# If left blank png will be used. + +DOT_IMAGE_FORMAT = png + +# The tag DOT_PATH can be used to specify the path where the dot tool can be +# found. If left blank, it is assumed the dot tool can be found in the path. + +DOT_PATH = + +# The DOTFILE_DIRS tag can be used to specify one or more directories that +# contain dot files that are included in the documentation (see the +# \dotfile command). + +DOTFILE_DIRS = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the +# \mscfile command). + +MSCFILE_DIRS = + +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of +# nodes that will be shown in the graph. If the number of nodes in a graph +# becomes larger than this value, doxygen will truncate the graph, which is +# visualized by representing a node as a red box. Note that doxygen if the +# number of direct children of the root node in a graph is already larger than +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. + +DOT_GRAPH_MAX_NODES = 50 + +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the +# graphs generated by dot. A depth value of 3 means that only nodes reachable +# from the root by following a path via at most 3 edges will be shown. Nodes +# that lay further from the root node will be omitted. Note that setting this +# option to 1 or 2 may greatly reduce the computation time needed for large +# code bases. Also note that the size of a graph can be further restricted by +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction. + +MAX_DOT_GRAPH_DEPTH = 0 + +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent +# background. This is disabled by default, because dot on Windows does not +# seem to support this out of the box. Warning: Depending on the platform used, +# enabling this option may lead to badly anti-aliased labels on the edges of +# a graph (i.e. they become hard to read). + +DOT_TRANSPARENT = NO + +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output +# files in one run (i.e. multiple -o and -T options on the command line). This +# makes dot run faster, but since only newer versions of dot (>1.8.10) +# support this, this feature is disabled by default. + +DOT_MULTI_TARGETS = YES + +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will +# generate a legend page explaining the meaning of the various boxes and +# arrows in the dot generated graphs. + +GENERATE_LEGEND = YES + +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will +# remove the intermediate dot files that are used to generate +# the various graphs. + +DOT_CLEANUP = YES diff --git a/src/spatialite/INSTALL b/src/spatialite/INSTALL new file mode 100644 index 0000000..50dbe43 --- /dev/null +++ b/src/spatialite/INSTALL @@ -0,0 +1,183 @@ +Basic Installation +================== + + These are generic installation instructions. + + The `configure' shell script attempts to guess correct values for +various system-dependent variables used during compilation. It uses +those values to create a `Makefile' in each directory of the package. +It may also create one or more `.h' files containing system-dependent +definitions. Finally, it creates a shell script `config.status' that +you can run in the future to recreate the current configuration, a file +`config.cache' that saves the results of its tests to speed up +reconfiguring, and a file `config.log' containing compiler output +(useful mainly for debugging `configure'). + + If you need to do unusual things to compile the package, please try +to figure out how `configure' could check whether to do them, and mail +diffs or instructions to the address given in the `README' so they can +be considered for the next release. If at some point `config.cache' +contains results you don't want to keep, you may remove or edit it. + + The file `configure.in' is used to create `configure' by a program +called `autoconf'. You only need `configure.in' if you want to change +it or regenerate `configure' using a newer version of `autoconf'. + +The simplest way to compile this package is: + + 1. `cd' to the directory containing the package's source code and type + `./configure' to configure the package for your system. If you're + using `csh' on an old version of System V, you might need to type + `sh ./configure' instead to prevent `csh' from trying to execute + `configure' itself. + + Running `configure' takes awhile. While running, it prints some + messages telling which features it is checking for. + + 2. Type `make' to compile the package. + + 3. Optionally, type `make check' to run any self-tests that come with + the package. + + 4. Type `make install' to install the programs and any data files and + documentation. + + 5. You can remove the program binaries and object files from the + source code directory by typing `make clean'. To also remove the + files that `configure' created (so you can compile the package for + a different kind of computer), type `make distclean'. There is + also a `make maintainer-clean' target, but that is intended mainly + for the package's developers. If you use it, you may have to get + all sorts of other programs in order to regenerate files that came + with the distribution. + +Compilers and Options +===================== + + Some systems require unusual options for compilation or linking that +the `configure' script does not know about. You can give `configure' +initial values for variables by setting them in the environment. Using +a Bourne-compatible shell, you can do that on the command line like +this: + CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure + +Or on systems that have the `env' program, you can do it like this: + env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure + +Compiling For Multiple Architectures +==================================== + + You can compile the package for more than one kind of computer at the +same time, by placing the object files for each architecture in their +own directory. To do this, you must use a version of `make' that +supports the `VPATH' variable, such as GNU `make'. `cd' to the +directory where you want the object files and executables to go and run +the `configure' script. `configure' automatically checks for the +source code in the directory that `configure' is in and in `..'. + + If you have to use a `make' that does not supports the `VPATH' +variable, you have to compile the package for one architecture at a time +in the source code directory. After you have installed the package for +one architecture, use `make distclean' before reconfiguring for another +architecture. + +Installation Names +================== + + By default, `make install' will install the package's files in +`/usr/local/bin', `/usr/local/man', etc. You can specify an +installation prefix other than `/usr/local' by giving `configure' the +option `--prefix=PATH'. + + You can specify separate installation prefixes for +architecture-specific files and architecture-independent files. If you +give `configure' the option `--exec-prefix=PATH', the package will use +PATH as the prefix for installing programs and libraries. +Documentation and other data files will still use the regular prefix. + + In addition, if you use an unusual directory layout you can give +options like `--bindir=PATH' to specify different values for particular +kinds of files. Run `configure --help' for a list of the directories +you can set and what kinds of files go in them. + + If the package supports it, you can cause programs to be installed +with an extra prefix or suffix on their names by giving `configure' the +option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. + +Optional Features +================= + + Some packages pay attention to `--enable-FEATURE' options to +`configure', where FEATURE indicates an optional part of the package. +They may also pay attention to `--with-PACKAGE' options, where PACKAGE +is something like `gnu-as' or `x' (for the X Window System). The +`README' should mention any `--enable-' and `--with-' options that the +package recognizes. + + For packages that use the X Window System, `configure' can usually +find the X include and library files automatically, but if it doesn't, +you can use the `configure' options `--x-includes=DIR' and +`--x-libraries=DIR' to specify their locations. + +Specifying the System Type +========================== + + There may be some features `configure' can not figure out +automatically, but needs to determine by the type of host the package +will run on. Usually `configure' can figure that out, but if it prints +a message saying it can not guess the host type, give it the +`--host=TYPE' option. TYPE can either be a short name for the system +type, such as `sun4', or a canonical name with three fields: + CPU-COMPANY-SYSTEM + +See the file `config.sub' for the possible values of each field. If +`config.sub' isn't included in this package, then this package doesn't +need to know the host type. + + If you are building compiler tools for cross-compiling, you can also +use the `--target=TYPE' option to select the type of system they will +produce code for and the `--build=TYPE' option to select the type of +system on which you are compiling the package. + +Sharing Defaults +================ + + If you want to set default values for `configure' scripts to share, +you can create a site shell script called `config.site' that gives +default values for variables like `CC', `cache_file', and `prefix'. +`configure' looks for `PREFIX/share/config.site' if it exists, then +`PREFIX/etc/config.site' if it exists. Or, you can set the +`CONFIG_SITE' environment variable to the location of the site script. +A warning: not all `configure' scripts look for a site script. + +Operation Controls +================== + + `configure' recognizes the following options to control how it +operates. + +`--cache-file=FILE' + Use and save the results of the tests in FILE instead of + `./config.cache'. Set FILE to `/dev/null' to disable caching, for + debugging `configure'. + +`--help' + Print a summary of the options to `configure', and exit. + +`--quiet' +`--silent' +`-q' + Do not print messages saying which checks are being made. To + suppress all normal output, redirect it to `/dev/null' (any error + messages will still be shown). + +`--srcdir=DIR' + Look for the package's source code in directory DIR. Usually + `configure' can determine that directory automatically. + +`--version' + Print the version of Autoconf used to generate the `configure' + script, and exit. + +`configure' also accepts some other, not widely useful, options. + diff --git a/src/spatialite/Makefile.am b/src/spatialite/Makefile.am new file mode 100644 index 0000000..e14a393 --- /dev/null +++ b/src/spatialite/Makefile.am @@ -0,0 +1,25 @@ +ACLOCAL_AMFLAGS = -I m4 + +AUTOMAKE_OPTIONS = dist-zip + +EXTRA_DIST = makefile.vc nmake.opt Android.mk Android_4.2.0.mk \ + spatialite-4.2.0.mk mainpage.doxy README.coverage \ + spatialite-sql-latest.html config-msvc.h + +if ENABLE_EXAMPLES +EXAMPLES = examples +endif + +SUBDIRS = src test $(EXAMPLES) + +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = spatialite.pc + +coverage-init: + lcov --directory src --capture --initial --output-file libspatialite_cov.info + +coverage:: + lcov --directory src --output-file libspatialite_cov.info --capture + genhtml -o covresults libspatialite_cov.info + +MOSTLYCLEANFILES = libspatialite_cov.info diff --git a/src/spatialite/Makefile.in b/src/spatialite/Makefile.in new file mode 100644 index 0000000..8b71414 --- /dev/null +++ b/src/spatialite/Makefile.in @@ -0,0 +1,880 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = . +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/configure $(am__configure_deps) \ + $(srcdir)/config.h.in $(srcdir)/Doxyfile.in \ + $(srcdir)/spatialite.pc.in AUTHORS COPYING INSTALL README \ + config.guess config.sub depcomp install-sh missing ltmain.sh +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = config.h +CONFIG_CLEAN_FILES = Doxyfile spatialite.pc +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(pkgconfigdir)" +DATA = $(pkgconfig_DATA) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ + $(LISP)config.h.in +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +DIST_SUBDIRS = src test examples +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz $(distdir).zip +GZIP_ENV = --best +DIST_TARGETS = dist-gzip dist-zip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +ACLOCAL_AMFLAGS = -I m4 +AUTOMAKE_OPTIONS = dist-zip +EXTRA_DIST = makefile.vc nmake.opt Android.mk Android_4.2.0.mk \ + spatialite-4.2.0.mk mainpage.doxy README.coverage \ + spatialite-sql-latest.html config-msvc.h + +@ENABLE_EXAMPLES_TRUE@EXAMPLES = examples +SUBDIRS = src test $(EXAMPLES) +pkgconfigdir = $(libdir)/pkgconfig +pkgconfig_DATA = spatialite.pc +MOSTLYCLEANFILES = libspatialite_cov.info +all: config.h + $(MAKE) $(AM_MAKEFLAGS) all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +config.h: stamp-h1 + @if test ! -f $@; then rm -f stamp-h1; else :; fi + @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) stamp-h1; else :; fi + +stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status + @rm -f stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status config.h +$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f stamp-h1 + touch $@ + +distclean-hdr: + -rm -f config.h stamp-h1 +Doxyfile: $(top_builddir)/config.status $(srcdir)/Doxyfile.in + cd $(top_builddir) && $(SHELL) ./config.status $@ +spatialite.pc: $(top_builddir)/config.status $(srcdir)/spatialite.pc.in + cd $(top_builddir) && $(SHELL) ./config.status $@ + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +distclean-libtool: + -rm -f libtool config.lt +install-pkgconfigDATA: $(pkgconfig_DATA) + @$(NORMAL_INSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(pkgconfigdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(pkgconfigdir)" || exit 1; \ + fi; \ + for p in $$list; do \ + if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ + echo "$$d$$p"; \ + done | $(am__base_list) | \ + while read files; do \ + echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(pkgconfigdir)'"; \ + $(INSTALL_DATA) $$files "$(DESTDIR)$(pkgconfigdir)" || exit $$?; \ + done + +uninstall-pkgconfigDATA: + @$(NORMAL_UNINSTALL) + @list='$(pkgconfig_DATA)'; test -n "$(pkgconfigdir)" || list=; \ + files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ + dir='$(DESTDIR)$(pkgconfigdir)'; $(am__uninstall_files_from_dir) + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__post_remove_distdir) +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build \ + && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile $(DATA) config.h +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(pkgconfigdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr \ + distclean-libtool distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: install-pkgconfigDATA + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-pkgconfigDATA + +.MAKE: $(am__recursive_targets) all install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + clean-libtool cscope cscopelist-am ctags ctags-am dist \ + dist-all dist-bzip2 dist-gzip dist-lzip dist-shar dist-tarZ \ + dist-xz dist-zip distcheck distclean distclean-generic \ + distclean-hdr distclean-libtool distclean-tags distcleancheck \ + distdir distuninstallcheck dvi dvi-am html html-am info \ + info-am install install-am install-data install-data-am \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-pkgconfigDATA \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-pkgconfigDATA + + +coverage-init: + lcov --directory src --capture --initial --output-file libspatialite_cov.info + +coverage:: + lcov --directory src --output-file libspatialite_cov.info --capture + genhtml -o covresults libspatialite_cov.info + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/README b/src/spatialite/README new file mode 100644 index 0000000..faa73ca --- /dev/null +++ b/src/spatialite/README @@ -0,0 +1,173 @@ + --------------------- libspatialite ------------------------ + +PLEASE read the following information. + +1 - Installation +2 - Required dependencies +3 - Build notes + 3.1: Building on Linux + 3.2: Building on Mac OS X + 3.3: Building on Windows + 3.3.1: using MinGW / MSYS + 3.3.2: using Visual Studio .NET + +===================================================================== + +1. Installation: +================= + +The default destination path prefix for installed files is /usr/local. +Results from the installation script will be placed into subdirectories +include and lib. If this default path prefix is appropriate, then execute: + + ./configure + +If another path prefix is required, then execute: + + ./configure --prefix=/my/path + +In either case, the directory of the prefix path must exist and be +writable by the installer. + +After executing configure, execute: + + make + make install + +Or even better, you can *strip* any executable binary, in order +to eliminate any debugging symbol, and thus widely reducing +their size: + + make install-strip + +2. Required dependencies: +========================= + +The main external dependencies needed in order to build 'libspatialite' +are: + - SQLite 3 (http://www.sqlite.org) + This is a hard dependency - you can't build libspatialite without it. SQLite + version 3.7.3 or later is strongly preferred - if you have an earlier + version then you will need to pass --enable-geocallbacks=no to the + ./configure script. + + - PROJ.4 (http://trac.osgeo.org/proj/) + This is strongly recommended, unless you have a particular purpose in mind + for your libspatialite build, and know that you won't need it. It is usually + available as a package, and libspatialite is pretty flexible about versions. + + - GEOS (http://trac.osgeo.org/geos/) + This is strongly recommended, unless you have a particular purpose in mind + for your libspatialite build, and know that you won't need it. It is usually + available as a package, but libspatialite will have more capability if you + use version 3.3.0 or later so make sure that the package is recent enough. + Use --enable-geosadvanced=no argument to the ./configure script if you want + to use an earlier version of GEOS. + + - FreeXL (http://www.gaia-gis.it/FreeXL/) + This is recommended if you want to be able to import data from Microsoft + Excel format (.xls suffix) files. If you do not wish to use it, you will + need to pass --enable-freexl=no to the ./configure script. Version 0.0.4 + or later is required. + +Note that you need development code (e.g. -dev packages on Debian Linux and +derivatives such as Ubuntu, or -devel packages on most other Linux +distributions). + + +ICONV [Windows] +--------------- +When building on Windows, then you also need to provide iconv to ensure that +appropriate character set conversions are available. This dependency is not +usually an issue when building on Linux or Mac OS X, because these systems +provide iconv as a standard component. + +For Windows the preferred solution is to download and install the pre-built +iconv binaries and related files from: +http://gnuwin32.sourceforge.net/packages/libiconv.htm + +3 - Build notes +=============== + +3.1: Building on Linux and similar systems +------------------------------------------ + +Building libspatialite on Linux and similar systems such as BSD or other Unix +variants does not require any special settings. If you have unpacked the sources +as ./libspatialite-3.1.0, then the required steps are: + +# cd libspatialite-3.1.0 +# ./configure +# make +# sudo make install +# or (in order to save some disk space) +# sudo make install-strip + +3.2: Building on Mac OS X +------------------------- + +Building 'libspatialite' on Mac OS X very similar to Linux. You simply have to +set explicitly some environment variables. If you have unpacked the sources as +./libspatialite-3.1.0, then the required steps are: + +# cd libspatialite-3.1.0 +# export "CFLAGS=-I/opt/local/include" +# export "LDFLAGS=-I/opt/local/lib" +# ./configure +# make +# sudo make install +# or (in order to save some disk space) +# sudo make install-strip + +IMPORTANT NOTICE: this will build an executable for your specific platform. +That is, when building on a PPC Mac, the resulting binary will be be for PPC. +Similarly, when building on Intel Mac, resulting binary will be for Intel. + +3.3: Building on Windows +------------------------ + +On Windows systems you can choose using two different compilers: +- MinGW / MSYS + This represents a smart porting of a minimalistic Linux-like + development toolkit +- Microsoft Visual Studio .NET + This is the standard platform development toolkit from Microsoft. + +3.3.1: using MinGW / MSYS +------------------------- + +We assume that you have already installed the MinGW compiler and the MSYS shell. +Building 'libspatialite' under Windows is then more or less like building +on any other UNIX-like system. If you have unpacked the sources as +C:\libspatialite-3.1.0, then the required steps are: + +$ cd c:/libspatialite-3.1.0 +$ export "CFLAGS=-I/usr/local/include" +$ export "LDFLAGS=-L/usr/local/lib" +$ ./configure --target=mingw32 +$ make +$ make install-strip +$ or (in order to save some disk space) +$ make install-strip + + +3.3.2: using Microsoft Visual Studio .NET +----------------------------------------- + +We assume that you have already installed Visual Studio enabling the command +line tools. Note that you are expected to the Visual Studio command prompt shell +rather than the GUI build environment. If you have unpacked the sources as +C:\libspatialite-3.1.0, then the required steps are: + +> cd c:\libspatialite-3.1.0 +> nmake /f makefile.vc +> nmake /f makefile.vc install + +Please note: standard definitions in 'makefile.vc' assumes: +- enabling PROJ +- disabling GEOS + +If you want to alter the default behaviour then make modifications in +'makefile.vc'. Also note that 'libspatialite-geos.def' contains those external +symbols to be exported from the DLL when you build GEOS. + diff --git a/src/spatialite/README.coverage b/src/spatialite/README.coverage new file mode 100644 index 0000000..83a8ebb --- /dev/null +++ b/src/spatialite/README.coverage @@ -0,0 +1,12 @@ +Coverage testing +---------------- +You need to have gcov and lcov installed. + +Process: +1. Use --enable-gcov=yes with configure script +2. Clean and rebuild. +3. make coverage-init +4. make check (or whatever other tests you want to check coverage for) +5. make coverage +6. check summary on command line output. +7. review detailed coverage results in covresults/index.html diff --git a/src/spatialite/aclocal.m4 b/src/spatialite/aclocal.m4 new file mode 100644 index 0000000..f209970 --- /dev/null +++ b/src/spatialite/aclocal.m4 @@ -0,0 +1,1324 @@ +# generated automatically by aclocal 1.13.4 -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*- +# serial 1 (pkg-config-0.24) +# +# Copyright © 2004 Scott James Remnant . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# PKG_PROG_PKG_CONFIG([MIN-VERSION]) +# ---------------------------------- +AC_DEFUN([PKG_PROG_PKG_CONFIG], +[m4_pattern_forbid([^_?PKG_[A-Z_]+$]) +m4_pattern_allow([^PKG_CONFIG(_(PATH|LIBDIR|SYSROOT_DIR|ALLOW_SYSTEM_(CFLAGS|LIBS)))?$]) +m4_pattern_allow([^PKG_CONFIG_(DISABLE_UNINSTALLED|TOP_BUILD_DIR|DEBUG_SPEW)$]) +AC_ARG_VAR([PKG_CONFIG], [path to pkg-config utility]) +AC_ARG_VAR([PKG_CONFIG_PATH], [directories to add to pkg-config's search path]) +AC_ARG_VAR([PKG_CONFIG_LIBDIR], [path overriding pkg-config's built-in search path]) + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + AC_PATH_TOOL([PKG_CONFIG], [pkg-config]) +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=m4_default([$1], [0.9.0]) + AC_MSG_CHECKING([pkg-config is at least version $_pkg_min_version]) + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + PKG_CONFIG="" + fi +fi[]dnl +])# PKG_PROG_PKG_CONFIG + +# PKG_CHECK_EXISTS(MODULES, [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# +# Check to see whether a particular set of modules exists. Similar +# to PKG_CHECK_MODULES(), but does not set variables or print errors. +# +# Please remember that m4 expands AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +# only at the first occurence in configure.ac, so if the first place +# it's called might be skipped (such as if it is within an "if", you +# have to call PKG_CHECK_EXISTS manually +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_EXISTS], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +if test -n "$PKG_CONFIG" && \ + AC_RUN_LOG([$PKG_CONFIG --exists --print-errors "$1"]); then + m4_default([$2], [:]) +m4_ifvaln([$3], [else + $3])dnl +fi]) + +# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES]) +# --------------------------------------------- +m4_define([_PKG_CONFIG], +[if test -n "$$1"; then + pkg_cv_[]$1="$$1" + elif test -n "$PKG_CONFIG"; then + PKG_CHECK_EXISTS([$3], + [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes ], + [pkg_failed=yes]) + else + pkg_failed=untried +fi[]dnl +])# _PKG_CONFIG + +# _PKG_SHORT_ERRORS_SUPPORTED +# ----------------------------- +AC_DEFUN([_PKG_SHORT_ERRORS_SUPPORTED], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG]) +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi[]dnl +])# _PKG_SHORT_ERRORS_SUPPORTED + + +# PKG_CHECK_MODULES(VARIABLE-PREFIX, MODULES, [ACTION-IF-FOUND], +# [ACTION-IF-NOT-FOUND]) +# +# +# Note that if there is a possibility the first call to +# PKG_CHECK_MODULES might not happen, you should be sure to include an +# explicit call to PKG_PROG_PKG_CONFIG in your configure.ac +# +# +# -------------------------------------------------------------- +AC_DEFUN([PKG_CHECK_MODULES], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1][_CFLAGS], [C compiler flags for $1, overriding pkg-config])dnl +AC_ARG_VAR([$1][_LIBS], [linker flags for $1, overriding pkg-config])dnl + +pkg_failed=no +AC_MSG_CHECKING([for $1]) + +_PKG_CONFIG([$1][_CFLAGS], [cflags], [$2]) +_PKG_CONFIG([$1][_LIBS], [libs], [$2]) + +m4_define([_PKG_TEXT], [Alternatively, you may set the environment variables $1[]_CFLAGS +and $1[]_LIBS to avoid the need to call pkg-config. +See the pkg-config man page for more details.]) + +if test $pkg_failed = yes; then + AC_MSG_RESULT([no]) + _PKG_SHORT_ERRORS_SUPPORTED + if test $_pkg_short_errors_supported = yes; then + $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "$2" 2>&1` + else + $1[]_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "$2" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD + + m4_default([$4], [AC_MSG_ERROR( +[Package requirements ($2) were not met: + +$$1_PKG_ERRORS + +Consider adjusting the PKG_CONFIG_PATH environment variable if you +installed software in a non-standard prefix. + +_PKG_TEXT])[]dnl + ]) +elif test $pkg_failed = untried; then + AC_MSG_RESULT([no]) + m4_default([$4], [AC_MSG_FAILURE( +[The pkg-config script could not be found or is too old. Make sure it +is in your PATH or set the PKG_CONFIG environment variable to the full +path to pkg-config. + +_PKG_TEXT + +To get pkg-config, see .])[]dnl + ]) +else + $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS + $1[]_LIBS=$pkg_cv_[]$1[]_LIBS + AC_MSG_RESULT([yes]) + $3 +fi[]dnl +])# PKG_CHECK_MODULES + + +# PKG_INSTALLDIR(DIRECTORY) +# ------------------------- +# Substitutes the variable pkgconfigdir as the location where a module +# should install pkg-config .pc files. By default the directory is +# $libdir/pkgconfig, but the default can be changed by passing +# DIRECTORY. The user can override through the --with-pkgconfigdir +# parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +]) dnl PKG_INSTALLDIR + + +# PKG_NOARCH_INSTALLDIR(DIRECTORY) +# ------------------------- +# Substitutes the variable noarch_pkgconfigdir as the location where a +# module should install arch-independent pkg-config .pc files. By +# default the directory is $datadir/pkgconfig, but the default can be +# changed by passing DIRECTORY. The user can override through the +# --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +]) dnl PKG_NOARCH_INSTALLDIR + + +# PKG_CHECK_VAR(VARIABLE, MODULE, CONFIG-VARIABLE, +# [ACTION-IF-FOUND], [ACTION-IF-NOT-FOUND]) +# ------------------------------------------- +# Retrieves the value of the pkg-config variable for the given module. +AC_DEFUN([PKG_CHECK_VAR], +[AC_REQUIRE([PKG_PROG_PKG_CONFIG])dnl +AC_ARG_VAR([$1], [value of $3 for $2, overriding pkg-config])dnl + +_PKG_CONFIG([$1], [variable="][$3]["], [$2]) +AS_VAR_COPY([$1], [pkg_cv_][$1]) + +AS_VAR_IF([$1], [""], [$5], [$4])dnl +])# PKG_CHECK_VAR + +# Copyright (C) 2002-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.13' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.13.4], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.13.4])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[dnl Rely on autoconf to set up CDPATH properly. +AC_PREREQ([2.50])dnl +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each '.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +# From Jim Meyering + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAINTAINER_MODE([DEFAULT-MODE]) +# ---------------------------------- +# Control maintainer-specific portions of Makefiles. +# Default is to disable them, unless 'enable' is passed literally. +# For symmetry, 'disable' may be passed as well. Anyway, the user +# can override the default with the --enable/--disable switch. +AC_DEFUN([AM_MAINTAINER_MODE], +[m4_case(m4_default([$1], [disable]), + [enable], [m4_define([am_maintainer_other], [disable])], + [disable], [m4_define([am_maintainer_other], [enable])], + [m4_define([am_maintainer_other], [enable]) + m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) + dnl maintainer-mode's default is 'disable' unless 'enable' is passed + AC_ARG_ENABLE([maintainer-mode], + [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], + am_maintainer_other[ make rules and dependencies not useful + (and sometimes confusing) to the casual installer])], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + AC_MSG_RESULT([$USE_MAINTAINER_MODE]) + AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) + MAINT=$MAINTAINER_MODE_TRUE + AC_SUBST([MAINT])dnl +] +) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# -*- Autoconf -*- +# Obsolete and "removed" macros, that must however still report explicit +# error messages when used, to smooth transition. +# +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +AC_DEFUN([AM_CONFIG_HEADER], +[AC_DIAGNOSE([obsolete], +['$0': this macro is obsolete. +You should use the 'AC][_CONFIG_HEADERS' macro instead.])dnl +AC_CONFIG_HEADERS($@)]) + +AC_DEFUN([AM_PROG_CC_STDC], +[AC_PROG_CC +am_cv_prog_cc_stdc=$ac_cv_prog_cc_stdc +AC_DIAGNOSE([obsolete], +['$0': this macro is obsolete. +You should simply use the 'AC][_PROG_CC' macro instead. +Also, your code should no longer depend upon 'am_cv_prog_cc_stdc', +but upon 'ac_cv_prog_cc_stdc'.])]) + +AC_DEFUN([AM_C_PROTOTYPES], + [AC_FATAL([automatic de-ANSI-fication support has been removed])]) +AU_DEFUN([fp_C_PROTOTYPES], [AM_C_PROTOTYPES]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + +m4_include([m4/libtool.m4]) +m4_include([m4/ltoptions.m4]) +m4_include([m4/ltsugar.m4]) +m4_include([m4/ltversion.m4]) +m4_include([m4/lt~obsolete.m4]) diff --git a/src/spatialite/config-msvc.h b/src/spatialite/config-msvc.h new file mode 100644 index 0000000..b95d9a6 --- /dev/null +++ b/src/spatialite/config-msvc.h @@ -0,0 +1,239 @@ +/* config.h. Generated from config.h.in by configure. */ +/* config.h.in. Generated from configure.ac by autoheader. */ +/* +/ Sandro: manually adjusted so to support the MSVC compiler +/ using the OsGeo4W libraries +*/ + +/* Should be defined in order to enable GeoPackage support. */ +/* #undef ENABLE_GEOPACKAGE */ + +/* Should be defined in order to enable LIBXML2 support. */ +#define ENABLE_LIBXML2 1 + +/* Should be defined in order to enable LWGEOM support. */ +/* #undef ENABLE_LWGEOM */ + +/* Should be defined in order to enable GEOS_ADVANCED support. */ +#define GEOS_ADVANCED 1 + +/* Should be defined in order to enable GEOS_TRUNK experimental support. */ +/* #undef GEOS_TRUNK */ + +/* Define to 1 if you have the header file. */ +/* #undef HAVE_DLFCN_H */ + +/* Define to 1 if you have the header file. */ +#define HAVE_FCNTL_H 1 + +/* Define to 1 if you have the `fdatasync' function. */ +/* #undef HAVE_FDATASYNC */ + +/* Define to 1 if you have the header file. */ +#define HAVE_FLOAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_FREEXL_H 1 + +/* Define to 1 if you have the `ftruncate' function. */ +#define HAVE_FTRUNCATE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_GEOS_C_H 1 + +/* Define to 1 if you have the `getcwd' function. */ +#define HAVE_GETCWD 1 + +/* Define to 1 if you have the `gettimeofday' function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ICONV_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_LIBLWGEOM_H 1 + +/* Define to 1 if you have the `sqlite3' library (-lsqlite3). */ +#define HAVE_LIBSQLITE3 1 + +/* Define to 1 if you have the `z' library (-lz). */ +#define HAVE_LIBZ 1 + +/* Define to 1 if you have the `localtime_r' function. */ +/* #undef HAVE_LOCALTIME_R */ + +/* Define to 1 if `lstat' has the bug that it succeeds when given the + zero-length file name argument. */ +#define HAVE_LSTAT_EMPTY_STRING_BUG 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MATH_H 1 + +/* Define to 1 if you have the `memmove' function. */ +#define HAVE_MEMMOVE 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memset' function. */ +#define HAVE_MEMSET 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_PROJ_API_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SQLITE3EXT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SQLITE3_H 1 + +/* Define to 1 if you have the `sqrt' function. */ +#define HAVE_SQRT 1 + +/* Define to 1 if `stat' has the bug that it succeeds when given the + zero-length file name argument. */ +/* #undef HAVE_STAT_EMPTY_STRING_BUG */ + +/* Define to 1 if you have the header file. */ +#define HAVE_STDDEF_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDINT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDIO_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STDLIB_H 1 + +/* Define to 1 if you have the `strcasecmp' function. */ +/* #undef HAVE_STRCASECMP */ + +/* Define to 1 if you have the `strerror' function. */ +#define HAVE_STRERROR 1 + +/* Define to 1 if you have the `strftime' function. */ +#define HAVE_STRFTIME 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strncasecmp' function. */ +/* #undef HAVE_STRNCASECMP */ + +/* Define to 1 if you have the `strstr' function. */ +#define HAVE_STRSTR 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the header file. */ +#define HAVE_ZLIB_H 1 + +/* Define to 1 if `lstat' dereferences a symlink specified with a trailing + slash. */ +/* #undef LSTAT_FOLLOWS_SLASHED_SYMLINK */ + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#define LT_OBJDIR ".libs/" + +/* Must be defined in order to disable debug mode. */ +#define NDEBUG 1 + +/* Should be defined in order to disable EPSG full support. */ +/* #undef OMIT_EPSG */ + +/* Should be defined in order to disable FREEXL support. */ +/* #undef OMIT_FREEXL */ + +/* Should be defined in order to disable GEOCALLBACKS support. */ +#define OMIT_GEOCALLBACKS 1 + +/* Should be defined in order to disable GEOS support. */ +/* #undef OMIT_GEOS */ + +/* Should be defined in order to disable ICONV support. */ +/* #undef OMIT_ICONV */ + +/* Should be defined in order to disable MATHSQL support. */ +/* #undef OMIT_MATHSQL */ + +/* Should be defined in order to disable PROJ.4 support. */ +/* #undef OMIT_PROJ */ + +/* Name of package */ +#define PACKAGE "libspatialite" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "a.furieri@lqt.it" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "libspatialite" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "libspatialite 4.2.0" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "libspatialite" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "4.2.0" + +/* Should be defined when linking liblwgeom from PostGIS 2.1 (or later). */ +/* #undef POSTGIS_2_1 1 */ + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Should contain a text-string describing the intended target CPU */ +#define TARGET_CPU "msvc-32" + +/* Define to 1 if you can safely include both and . */ +#define TIME_WITH_SYS_TIME 1 + +/* Define to 1 if your declares `struct tm'. */ +/* #undef TM_IN_SYS_TIME */ + +/* Version number of package */ +#define VERSION "4.2.0-rc2" + +/* Must be =64 in order to enable huge-file support. */ +#define _FILE_OFFSET_BITS 64 + +/* Must be defined in order to enable huge-file support. */ +#define _LARGEFILE_SOURCE 1 + +/* Must be defined in order to enable huge-file support. */ +#define _LARGE_FILE 1 + +/* Define to empty if `const' does not conform to ANSI C. */ +/* #undef const */ + +/* Define to `long int' if does not define. */ +/* #undef off_t */ + +/* Define to `unsigned int' if does not define. */ +/* #undef size_t */ + +/* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ +/* #undef volatile */ diff --git a/src/spatialite/config.guess b/src/spatialite/config.guess new file mode 100755 index 0000000..dc84c68 --- /dev/null +++ b/src/spatialite/config.guess @@ -0,0 +1,1501 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Free Software Foundation, Inc. + +timestamp='2009-11-20' + +# This file is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Originally written by Per Bothner. Please send patches (context +# diff format) to and include a ChangeLog +# entry. +# +# This script attempts to guess a canonical system name similar to +# config.sub. If it succeeds, it prints the system name on stdout, and +# exits with 0. Otherwise, it exits with 1. +# +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +trap 'exit 1' 1 2 15 + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +set_cc_for_build=' +trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; +trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; +: ${TMPDIR=/tmp} ; + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; +dummy=$tmp/dummy ; +tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; +case $CC_FOR_BUILD,$HOST_CC,$CC in + ,,) echo "int x;" > $dummy.c ; + for c in cc gcc c89 c99 ; do + if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then + CC_FOR_BUILD="$c"; break ; + fi ; + done ; + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found ; + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; +esac ; set_cc_for_build= ;' + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if (test -f /.attbin/uname) >/dev/null 2>&1 ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +# Note: order is significant - the case branches are not exclusive. + +case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + sysctl="sysctl -n hw.machine_arch" + UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ + /usr/sbin/$sysctl 2>/dev/null || echo unknown)` + case "${UNAME_MACHINE_ARCH}" in + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + *) machine=${UNAME_MACHINE_ARCH}-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently, or will in the future. + case "${UNAME_MACHINE_ARCH}" in + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + eval $set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case "${UNAME_VERSION}" in + Debian*) + release='-gnu' + ;; + *) + release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + echo "${machine}-${os}${release}" + exit ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} + exit ;; + *:ekkoBSD:*:*) + echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} + exit ;; + *:SolidBSD:*:*) + echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} + exit ;; + macppc:MirBSD:*:*) + echo powerpc-unknown-mirbsd${UNAME_RELEASE} + exit ;; + *:MirBSD:*:*) + echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} + exit ;; + alpha:OSF1:*:*) + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case "$ALPHA_CPU_TYPE" in + "EV4 (21064)") + UNAME_MACHINE="alpha" ;; + "EV4.5 (21064)") + UNAME_MACHINE="alpha" ;; + "LCA4 (21066/21068)") + UNAME_MACHINE="alpha" ;; + "EV5 (21164)") + UNAME_MACHINE="alphaev5" ;; + "EV5.6 (21164A)") + UNAME_MACHINE="alphaev56" ;; + "EV5.6 (21164PC)") + UNAME_MACHINE="alphapca56" ;; + "EV5.7 (21164PC)") + UNAME_MACHINE="alphapca57" ;; + "EV6 (21264)") + UNAME_MACHINE="alphaev6" ;; + "EV6.7 (21264A)") + UNAME_MACHINE="alphaev67" ;; + "EV6.8CB (21264C)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8AL (21264B)") + UNAME_MACHINE="alphaev68" ;; + "EV6.8CX (21264D)") + UNAME_MACHINE="alphaev68" ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE="alphaev69" ;; + "EV7 (21364)") + UNAME_MACHINE="alphaev7" ;; + "EV7.9 (21364A)") + UNAME_MACHINE="alphaev79" ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + exit ;; + Alpha\ *:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # Should we change UNAME_MACHINE based on the output of uname instead + # of the specific Alpha model? + echo alpha-pc-interix + exit ;; + 21064:Windows_NT:50:3) + echo alpha-dec-winnt3.5 + exit ;; + Amiga*:UNIX_System_V:4.0:*) + echo m68k-unknown-sysv4 + exit ;; + *:[Aa]miga[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-amigaos + exit ;; + *:[Mm]orph[Oo][Ss]:*:*) + echo ${UNAME_MACHINE}-unknown-morphos + exit ;; + *:OS/390:*:*) + echo i370-ibm-openedition + exit ;; + *:z/VM:*:*) + echo s390-ibm-zvmoe + exit ;; + *:OS400:*:*) + echo powerpc-ibm-os400 + exit ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + echo arm-acorn-riscix${UNAME_RELEASE} + exit ;; + arm:riscos:*:*|arm:RISCOS:*:*) + echo arm-unknown-riscos + exit ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + echo hppa1.1-hitachi-hiuxmpp + exit ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + if test "`(/bin/universe) 2>/dev/null`" = att ; then + echo pyramid-pyramid-sysv3 + else + echo pyramid-pyramid-bsd + fi + exit ;; + NILE*:*:*:dcosx) + echo pyramid-pyramid-svr4 + exit ;; + DRS?6000:unix:4.0:6*) + echo sparc-icl-nx6 + exit ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) echo sparc-icl-nx7; exit ;; + esac ;; + s390x:SunOS:*:*) + echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4H:SunOS:5.*:*) + echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + echo i386-pc-auroraux${UNAME_RELEASE} + exit ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + eval $set_cc_for_build + SUN_ARCH="i386" + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH="x86_64" + fi + fi + echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + sun4*:SunOS:*:*) + case "`/usr/bin/arch -k`" in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` + exit ;; + sun3*:SunOS:*:*) + echo m68k-sun-sunos${UNAME_RELEASE} + exit ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 + case "`/bin/arch`" in + sun3) + echo m68k-sun-sunos${UNAME_RELEASE} + ;; + sun4) + echo sparc-sun-sunos${UNAME_RELEASE} + ;; + esac + exit ;; + aushp:SunOS:*:*) + echo sparc-auspex-sunos${UNAME_RELEASE} + exit ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + echo m68k-atari-mint${UNAME_RELEASE} + exit ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + echo m68k-milan-mint${UNAME_RELEASE} + exit ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + echo m68k-hades-mint${UNAME_RELEASE} + exit ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + echo m68k-unknown-mint${UNAME_RELEASE} + exit ;; + m68k:machten:*:*) + echo m68k-apple-machten${UNAME_RELEASE} + exit ;; + powerpc:machten:*:*) + echo powerpc-apple-machten${UNAME_RELEASE} + exit ;; + RISC*:Mach:*:*) + echo mips-dec-mach_bsd4.3 + exit ;; + RISC*:ULTRIX:*:*) + echo mips-dec-ultrix${UNAME_RELEASE} + exit ;; + VAX*:ULTRIX*:*:*) + echo vax-dec-ultrix${UNAME_RELEASE} + exit ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + echo clipper-intergraph-clix${UNAME_RELEASE} + exit ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && + dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`$dummy $dummyarg` && + { echo "$SYSTEM_NAME"; exit; } + echo mips-mips-riscos${UNAME_RELEASE} + exit ;; + Motorola:PowerMAX_OS:*:*) + echo powerpc-motorola-powermax + exit ;; + Motorola:*:4.3:PL8-*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + echo powerpc-harris-powermax + exit ;; + Night_Hawk:Power_UNIX:*:*) + echo powerpc-harris-powerunix + exit ;; + m88k:CX/UX:7*:*) + echo m88k-harris-cxux7 + exit ;; + m88k:*:4*:R4*) + echo m88k-motorola-sysv4 + exit ;; + m88k:*:3*:R3*) + echo m88k-motorola-sysv3 + exit ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] + then + if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ + [ ${TARGET_BINARY_INTERFACE}x = x ] + then + echo m88k-dg-dgux${UNAME_RELEASE} + else + echo m88k-dg-dguxbcs${UNAME_RELEASE} + fi + else + echo i586-dg-dgux${UNAME_RELEASE} + fi + exit ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + echo m88k-dolphin-sysv3 + exit ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + echo m88k-motorola-sysv3 + exit ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + echo m88k-tektronix-sysv3 + exit ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + echo m68k-tektronix-bsd + exit ;; + *:IRIX*:*:*) + echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` + exit ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id + exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + echo i386-ibm-aix + exit ;; + ia64:AIX:*:*) + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} + exit ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` + then + echo "$SYSTEM_NAME" + else + echo rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + echo rs6000-ibm-aix3.2.4 + else + echo rs6000-ibm-aix3.2 + fi + exit ;; + *:AIX:*:[456]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if [ -x /usr/bin/oslevel ] ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} + fi + echo ${IBM_ARCH}-ibm-aix${IBM_REV} + exit ;; + *:AIX:*:*) + echo rs6000-ibm-aix + exit ;; + ibmrt:4.4BSD:*|romp-ibm:BSD:*) + echo romp-ibm-bsd4.4 + exit ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to + exit ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + echo rs6000-bull-bosx + exit ;; + DPX/2?00:B.O.S.:*:*) + echo m68k-bull-sysv3 + exit ;; + 9000/[34]??:4.3bsd:1.*:*) + echo m68k-hp-bsd + exit ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + echo m68k-hp-bsd4.4 + exit ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + case "${UNAME_MACHINE}" in + 9000/31? ) HP_ARCH=m68000 ;; + 9000/[34]?? ) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if [ -x /usr/bin/getconf ]; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case "${sc_cpu_version}" in + 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 + 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case "${sc_kernel_bits}" in + 32) HP_ARCH="hppa2.0n" ;; + 64) HP_ARCH="hppa2.0w" ;; + '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 + esac ;; + esac + fi + if [ "${HP_ARCH}" = "" ]; then + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if [ ${HP_ARCH} = "hppa2.0w" ] + then + eval $set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH="hppa2.0w" + else + HP_ARCH="hppa64" + fi + fi + echo ${HP_ARCH}-hp-hpux${HPUX_REV} + exit ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` + echo ia64-hp-hpux${HPUX_REV} + exit ;; + 3050*:HI-UX:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + echo unknown-hitachi-hiuxwe2 + exit ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) + echo hppa1.1-hp-bsd + exit ;; + 9000/8??:4.3bsd:*:*) + echo hppa1.0-hp-bsd + exit ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + echo hppa1.0-hp-mpeix + exit ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) + echo hppa1.1-hp-osf + exit ;; + hp8??:OSF1:*:*) + echo hppa1.0-hp-osf + exit ;; + i*86:OSF1:*:*) + if [ -x /usr/sbin/sysversion ] ; then + echo ${UNAME_MACHINE}-unknown-osf1mk + else + echo ${UNAME_MACHINE}-unknown-osf1 + fi + exit ;; + parisc*:Lites*:*:*) + echo hppa1.1-hp-lites + exit ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + echo c1-convex-bsd + exit ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + echo c34-convex-bsd + exit ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + echo c38-convex-bsd + exit ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + echo c4-convex-bsd + exit ;; + CRAY*Y-MP:*:*:*) + echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*[A-Z]90:*:*:*) + echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*T3E:*:*:*) + echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*SV1:*:*:*) + echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + *:UNICOS/mp:*:*) + echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' + exit ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` + echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` + FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` + echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" + exit ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} + exit ;; + sparc*:BSD/OS:*:*) + echo sparc-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:BSD/OS:*:*) + echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} + exit ;; + *:FreeBSD:*:*) + case ${UNAME_MACHINE} in + pc98) + echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + amd64) + echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + *) + echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + esac + exit ;; + i*:CYGWIN*:*) + echo ${UNAME_MACHINE}-pc-cygwin + exit ;; + *:MINGW*:*) + echo ${UNAME_MACHINE}-pc-mingw32 + exit ;; + i*:windows32*:*) + # uname -m includes "-pc" on this system. + echo ${UNAME_MACHINE}-mingw32 + exit ;; + i*:PW*:*) + echo ${UNAME_MACHINE}-pc-pw32 + exit ;; + *:Interix*:*) + case ${UNAME_MACHINE} in + x86) + echo i586-pc-interix${UNAME_RELEASE} + exit ;; + authenticamd | genuineintel | EM64T) + echo x86_64-unknown-interix${UNAME_RELEASE} + exit ;; + IA64) + echo ia64-unknown-interix${UNAME_RELEASE} + exit ;; + esac ;; + [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) + echo i${UNAME_MACHINE}-pc-mks + exit ;; + 8664:Windows_NT:*) + echo x86_64-pc-mks + exit ;; + i*:Windows_NT*:* | Pentium*:Windows_NT*:*) + # How do we know it's Interix rather than the generic POSIX subsystem? + # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we + # UNAME_MACHINE based on the output of uname instead of i386? + echo i586-pc-interix + exit ;; + i*:UWIN*:*) + echo ${UNAME_MACHINE}-pc-uwin + exit ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + echo x86_64-unknown-cygwin + exit ;; + p*:CYGWIN*:*) + echo powerpcle-unknown-cygwin + exit ;; + prep*:SunOS:5.*:*) + echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + exit ;; + *:GNU:*:*) + # the GNU system + echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` + exit ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu + exit ;; + i*86:Minix:*:*) + echo ${UNAME_MACHINE}-pc-minix + exit ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi + echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC} + exit ;; + arm*:Linux:*:*) + eval $set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + echo ${UNAME_MACHINE}-unknown-linux-gnu + else + echo ${UNAME_MACHINE}-unknown-linux-gnueabi + fi + exit ;; + avr32*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + cris:Linux:*:*) + echo cris-axis-linux-gnu + exit ;; + crisv32:Linux:*:*) + echo crisv32-axis-linux-gnu + exit ;; + frv:Linux:*:*) + echo frv-unknown-linux-gnu + exit ;; + i*86:Linux:*:*) + LIBC=gnu + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #ifdef __dietlibc__ + LIBC=dietlibc + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` + echo "${UNAME_MACHINE}-pc-linux-${LIBC}" + exit ;; + ia64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m32r*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + m68*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + mips:Linux:*:* | mips64:Linux:*:*) + eval $set_cc_for_build + sed 's/^ //' << EOF >$dummy.c + #undef CPU + #undef ${UNAME_MACHINE} + #undef ${UNAME_MACHINE}el + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + CPU=${UNAME_MACHINE}el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + CPU=${UNAME_MACHINE} + #else + CPU= + #endif + #endif +EOF + eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` + test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; } + ;; + or32:Linux:*:*) + echo or32-unknown-linux-gnu + exit ;; + padre:Linux:*:*) + echo sparc-unknown-linux-gnu + exit ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + echo hppa64-unknown-linux-gnu + exit ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) echo hppa1.1-unknown-linux-gnu ;; + PA8*) echo hppa2.0-unknown-linux-gnu ;; + *) echo hppa-unknown-linux-gnu ;; + esac + exit ;; + ppc64:Linux:*:*) + echo powerpc64-unknown-linux-gnu + exit ;; + ppc:Linux:*:*) + echo powerpc-unknown-linux-gnu + exit ;; + s390:Linux:*:* | s390x:Linux:*:*) + echo ${UNAME_MACHINE}-ibm-linux + exit ;; + sh64*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sh*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + vax:Linux:*:*) + echo ${UNAME_MACHINE}-dec-linux-gnu + exit ;; + x86_64:Linux:*:*) + echo x86_64-unknown-linux-gnu + exit ;; + xtensa*:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-gnu + exit ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + echo i386-sequent-sysv4 + exit ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} + exit ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + echo ${UNAME_MACHINE}-pc-os2-emx + exit ;; + i*86:XTS-300:*:STOP) + echo ${UNAME_MACHINE}-unknown-stop + exit ;; + i*86:atheos:*:*) + echo ${UNAME_MACHINE}-unknown-atheos + exit ;; + i*86:syllable:*:*) + echo ${UNAME_MACHINE}-pc-syllable + exit ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + echo i386-unknown-lynxos${UNAME_RELEASE} + exit ;; + i*86:*DOS:*:*) + echo ${UNAME_MACHINE}-pc-msdosdjgpp + exit ;; + i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) + UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} + else + echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} + fi + exit ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + exit ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + echo ${UNAME_MACHINE}-pc-sco$UNAME_REL + else + echo ${UNAME_MACHINE}-pc-sysv32 + fi + exit ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configury will decide that + # this is a cross-build. + echo i586-pc-msdosdjgpp + exit ;; + Intel:Mach:3*:*) + echo i386-pc-mach3 + exit ;; + paragon:*:*:*) + echo i860-intel-osf1 + exit ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 + fi + exit ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + echo m68010-convergent-sysv + exit ;; + mc68k:UNIX:SYSTEM5:3.51m) + echo m68k-convergent-sysv + exit ;; + M680?0:D-NIX:5.3:*) + echo m68k-diab-dnix + exit ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + echo m68k-unknown-lynxos${UNAME_RELEASE} + exit ;; + mc68030:UNIX_System_V:4.*:*) + echo m68k-atari-sysv4 + exit ;; + TSUNAMI:LynxOS:2.*:*) + echo sparc-unknown-lynxos${UNAME_RELEASE} + exit ;; + rs6000:LynxOS:2.*:*) + echo rs6000-unknown-lynxos${UNAME_RELEASE} + exit ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + echo powerpc-unknown-lynxos${UNAME_RELEASE} + exit ;; + SM[BE]S:UNIX_SV:*:*) + echo mips-dde-sysv${UNAME_RELEASE} + exit ;; + RM*:ReliantUNIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + RM*:SINIX-*:*:*) + echo mips-sni-sysv4 + exit ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + echo ${UNAME_MACHINE}-sni-sysv4 + else + echo ns32k-sni-sysv + fi + exit ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + echo i586-unisys-sysv4 + exit ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + echo hppa1.1-stratus-sysv4 + exit ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + echo i860-stratus-sysv4 + exit ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + echo ${UNAME_MACHINE}-stratus-vos + exit ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + echo hppa1.1-stratus-vos + exit ;; + mc68*:A/UX:*:*) + echo m68k-apple-aux${UNAME_RELEASE} + exit ;; + news*:NEWS-OS:6*:*) + echo mips-sony-newsos6 + exit ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if [ -d /usr/nec ]; then + echo mips-nec-sysv${UNAME_RELEASE} + else + echo mips-unknown-sysv${UNAME_RELEASE} + fi + exit ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + echo powerpc-be-beos + exit ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + echo powerpc-apple-beos + exit ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + echo i586-pc-beos + exit ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + echo i586-pc-haiku + exit ;; + SX-4:SUPER-UX:*:*) + echo sx4-nec-superux${UNAME_RELEASE} + exit ;; + SX-5:SUPER-UX:*:*) + echo sx5-nec-superux${UNAME_RELEASE} + exit ;; + SX-6:SUPER-UX:*:*) + echo sx6-nec-superux${UNAME_RELEASE} + exit ;; + SX-7:SUPER-UX:*:*) + echo sx7-nec-superux${UNAME_RELEASE} + exit ;; + SX-8:SUPER-UX:*:*) + echo sx8-nec-superux${UNAME_RELEASE} + exit ;; + SX-8R:SUPER-UX:*:*) + echo sx8r-nec-superux${UNAME_RELEASE} + exit ;; + Power*:Rhapsody:*:*) + echo powerpc-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Rhapsody:*:*) + echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} + exit ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown + case $UNAME_PROCESSOR in + i386) + eval $set_cc_for_build + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + UNAME_PROCESSOR="x86_64" + fi + fi ;; + unknown) UNAME_PROCESSOR=powerpc ;; + esac + echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} + exit ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = "x86"; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} + exit ;; + *:QNX:*:4*) + echo i386-pc-qnx + exit ;; + NSE-?:NONSTOP_KERNEL:*:*) + echo nse-tandem-nsk${UNAME_RELEASE} + exit ;; + NSR-?:NONSTOP_KERNEL:*:*) + echo nsr-tandem-nsk${UNAME_RELEASE} + exit ;; + *:NonStop-UX:*:*) + echo mips-compaq-nonstopux + exit ;; + BS2000:POSIX*:*:*) + echo bs2000-siemens-sysv + exit ;; + DS/*:UNIX_System_V:*:*) + echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} + exit ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "$cputype" = "386"; then + UNAME_MACHINE=i386 + else + UNAME_MACHINE="$cputype" + fi + echo ${UNAME_MACHINE}-unknown-plan9 + exit ;; + *:TOPS-10:*:*) + echo pdp10-unknown-tops10 + exit ;; + *:TENEX:*:*) + echo pdp10-unknown-tenex + exit ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + echo pdp10-dec-tops20 + exit ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + echo pdp10-xkl-tops20 + exit ;; + *:TOPS-20:*:*) + echo pdp10-unknown-tops20 + exit ;; + *:ITS:*:*) + echo pdp10-unknown-its + exit ;; + SEI:*:*:SEIUX) + echo mips-sei-seiux${UNAME_RELEASE} + exit ;; + *:DragonFly:*:*) + echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + exit ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case "${UNAME_MACHINE}" in + A*) echo alpha-dec-vms ; exit ;; + I*) echo ia64-dec-vms ; exit ;; + V*) echo vax-dec-vms ; exit ;; + esac ;; + *:XENIX:*:SysV) + echo i386-pc-xenix + exit ;; + i*86:skyos:*:*) + echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' + exit ;; + i*86:rdos:*:*) + echo ${UNAME_MACHINE}-pc-rdos + exit ;; + i*86:AROS:*:*) + echo ${UNAME_MACHINE}-pc-aros + exit ;; +esac + +#echo '(No uname command or uname output not recognized.)' 1>&2 +#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 + +eval $set_cc_for_build +cat >$dummy.c < +# include +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (__arm) && defined (__acorn) && defined (__unix) + printf ("arm-acorn-riscix\n"); exit (0); +#endif + +#if defined (hp300) && !defined (hpux) + printf ("m68k-hp-bsd\n"); exit (0); +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); + +#endif + +#if defined (vax) +# if !defined (ultrix) +# include +# if defined (BSD) +# if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +# else +# if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# endif +# else + printf ("vax-dec-bsd\n"); exit (0); +# endif +# else + printf ("vax-dec-ultrix\n"); exit (0); +# endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. + +test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; } + +# Convex versions that predate uname can use getsysinfo(1) + +if [ -x /usr/convex/getsysinfo ] +then + case `getsysinfo -f cpu_type` in + c1*) + echo c1-convex-bsd + exit ;; + c2*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + c34*) + echo c34-convex-bsd + exit ;; + c38*) + echo c38-convex-bsd + exit ;; + c4*) + echo c4-convex-bsd + exit ;; + esac +fi + +cat >&2 < in order to provide the needed +information to handle your system. + +config.guess timestamp = $timestamp + +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = ${UNAME_MACHINE} +UNAME_RELEASE = ${UNAME_RELEASE} +UNAME_SYSTEM = ${UNAME_SYSTEM} +UNAME_VERSION = ${UNAME_VERSION} +EOF + +exit 1 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/src/spatialite/config.h.in b/src/spatialite/config.h.in new file mode 100644 index 0000000..a37c737 --- /dev/null +++ b/src/spatialite/config.h.in @@ -0,0 +1,234 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Should be defined in order to enable GeoPackage support. */ +#undef ENABLE_GEOPACKAGE + +/* Should be defined in order to enable LIBXML2 support. */ +#undef ENABLE_LIBXML2 + +/* Should be defined in order to enable LWGEOM support. */ +#undef ENABLE_LWGEOM + +/* Should be defined in order to enable GEOS_ADVANCED support. */ +#undef GEOS_ADVANCED + +/* Should be defined in order to enable GEOS_TRUNK experimental support. */ +#undef GEOS_TRUNK + +/* Define to 1 if you have the header file. */ +#undef HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_FCNTL_H + +/* Define to 1 if you have the `fdatasync' function. */ +#undef HAVE_FDATASYNC + +/* Define to 1 if you have the header file. */ +#undef HAVE_FLOAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_FREEXL_H + +/* Define to 1 if you have the `ftruncate' function. */ +#undef HAVE_FTRUNCATE + +/* Define to 1 if you have the header file. */ +#undef HAVE_GEOS_C_H + +/* Define to 1 if you have the `getcwd' function. */ +#undef HAVE_GETCWD + +/* Define to 1 if you have the `gettimeofday' function. */ +#undef HAVE_GETTIMEOFDAY + +/* Define to 1 if you have the header file. */ +#undef HAVE_ICONV_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_LIBLWGEOM_H + +/* Define to 1 if you have the `sqlite3' library (-lsqlite3). */ +#undef HAVE_LIBSQLITE3 + +/* Define to 1 if you have the `z' library (-lz). */ +#undef HAVE_LIBZ + +/* Define to 1 if you have the `localtime_r' function. */ +#undef HAVE_LOCALTIME_R + +/* Define to 1 if `lstat' has the bug that it succeeds when given the + zero-length file name argument. */ +#undef HAVE_LSTAT_EMPTY_STRING_BUG + +/* Define to 1 if you have the header file. */ +#undef HAVE_MATH_H + +/* Define to 1 if you have the `memmove' function. */ +#undef HAVE_MEMMOVE + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the `memset' function. */ +#undef HAVE_MEMSET + +/* Define to 1 if you have the header file. */ +#undef HAVE_PROJ_API_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SQLITE3EXT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SQLITE3_H + +/* Define to 1 if you have the `sqrt' function. */ +#undef HAVE_SQRT + +/* Define to 1 if `stat' has the bug that it succeeds when given the + zero-length file name argument. */ +#undef HAVE_STAT_EMPTY_STRING_BUG + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDDEF_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDIO_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the `strcasecmp' function. */ +#undef HAVE_STRCASECMP + +/* Define to 1 if you have the `strerror' function. */ +#undef HAVE_STRERROR + +/* Define to 1 if you have the `strftime' function. */ +#undef HAVE_STRFTIME + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the `strncasecmp' function. */ +#undef HAVE_STRNCASECMP + +/* Define to 1 if you have the `strstr' function. */ +#undef HAVE_STRSTR + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TIME_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_ZLIB_H + +/* Define to 1 if `lstat' dereferences a symlink specified with a trailing + slash. */ +#undef LSTAT_FOLLOWS_SLASHED_SYMLINK + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#undef LT_OBJDIR + +/* Must be defined in order to disable debug mode. */ +#undef NDEBUG + +/* Should be defined in order to disable EPSG full support. */ +#undef OMIT_EPSG + +/* Should be defined in order to disable FREEXL support. */ +#undef OMIT_FREEXL + +/* Should be defined in order to disable GEOCALLBACKS support. */ +#undef OMIT_GEOCALLBACKS + +/* Should be defined in order to disable GEOS support. */ +#undef OMIT_GEOS + +/* Should be defined in order to disable ICONV support. */ +#undef OMIT_ICONV + +/* Should be defined in order to disable MATHSQL support. */ +#undef OMIT_MATHSQL + +/* Should be defined in order to disable PROJ.4 support. */ +#undef OMIT_PROJ + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Should be defined when linking liblwgeom from PostGIS 2.1 (or later). */ +#undef POSTGIS_2_1 + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Should contain a text-string describing the intended target CPU */ +#undef TARGET_CPU + +/* Define to 1 if you can safely include both and . */ +#undef TIME_WITH_SYS_TIME + +/* Define to 1 if your declares `struct tm'. */ +#undef TM_IN_SYS_TIME + +/* Version number of package */ +#undef VERSION + +/* Must be =64 in order to enable huge-file support. */ +#undef _FILE_OFFSET_BITS + +/* Must be defined in order to enable huge-file support. */ +#undef _LARGEFILE_SOURCE + +/* Must be defined in order to enable huge-file support. */ +#undef _LARGE_FILE + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `long int' if does not define. */ +#undef off_t + +/* Define to `unsigned int' if does not define. */ +#undef size_t + +/* Define to empty if the keyword `volatile' does not work. Warning: valid + code using `volatile' can become incorrect without. Disable with care. */ +#undef volatile diff --git a/src/spatialite/config.sub b/src/spatialite/config.sub new file mode 100755 index 0000000..2a55a50 --- /dev/null +++ b/src/spatialite/config.sub @@ -0,0 +1,1705 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 +# Free Software Foundation, Inc. + +timestamp='2009-11-20' + +# This file is (in principle) common to ALL GNU software. +# The presence of a machine in this file suggests that SOME GNU software +# can handle that machine. It does not imply ALL GNU software can. +# +# This file is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA +# 02110-1301, USA. +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + + +# Please send patches to . Submit a context +# diff and a properly formatted GNU ChangeLog entry. +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.sub;hb=HEAD + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS + $0 [OPTION] ALIAS + +Canonicalize a configuration name. + +Operation modes: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, +2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. + +This is free software; see the source for copying conditions. There is NO +warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo $1 + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). +# Here we must recognize all the valid KERNEL-OS combinations. +maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` +case $maybe_os in + nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \ + uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \ + kopensolaris*-gnu* | \ + storm-chaos* | os2-emx* | rtmk-nova*) + os=-$maybe_os + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` + ;; + *) + basic_machine=`echo $1 | sed 's/-[^-]*$//'` + if [ $basic_machine != $1 ] + then os=`echo $1 | sed 's/.*-/-/'` + else os=; fi + ;; +esac + +### Let's recognize common machines as not being operating systems so +### that things like config.sub decstation-3100 work. We also +### recognize some manufacturers as not being operating systems, so we +### can provide default operating systems below. +case $os in + -sun*os*) + # Prevent following clause from handling this invalid input. + ;; + -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \ + -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \ + -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \ + -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ + -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ + -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ + -apple | -axis | -knuth | -cray | -microblaze) + os= + basic_machine=$1 + ;; + -bluegene*) + os=-cnk + ;; + -sim | -cisco | -oki | -wec | -winbond) + os= + basic_machine=$1 + ;; + -scout) + ;; + -wrs) + os=-vxworks + basic_machine=$1 + ;; + -chorusos*) + os=-chorusos + basic_machine=$1 + ;; + -chorusrdb) + os=-chorusrdb + basic_machine=$1 + ;; + -hiux*) + os=-hiuxwe2 + ;; + -sco6) + os=-sco5v6 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5) + os=-sco3.2v5 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco4) + os=-sco3.2v4 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2.[4-9]*) + os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco3.2v[4-9]*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco5v6*) + # Don't forget version if it is 3.2v4 or newer. + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -sco*) + os=-sco3.2v2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -udk*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -isc) + os=-isc2.2 + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -clix*) + basic_machine=clipper-intergraph + ;; + -isc*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + ;; + -lynx*) + os=-lynxos + ;; + -ptx*) + basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ;; + -windowsnt*) + os=`echo $os | sed -e 's/windowsnt/winnt/'` + ;; + -psos*) + os=-psos + ;; + -mint | -mint[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; +esac + +# Decode aliases for certain CPU-COMPANY combinations. +case $basic_machine in + # Recognize the basic CPU types without company name. + # Some are omitted here because they have special meanings below. + 1750a | 580 \ + | a29k \ + | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ + | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ + | am33_2.0 \ + | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | bfin \ + | c4x | clipper \ + | d10v | d30v | dlx | dsp16xx \ + | fido | fr30 | frv \ + | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | i370 | i860 | i960 | ia64 \ + | ip2k | iq2000 \ + | lm32 \ + | m32c | m32r | m32rle | m68000 | m68k | m88k \ + | maxq | mb | microblaze | mcore | mep | metag \ + | mips | mipsbe | mipseb | mipsel | mipsle \ + | mips16 \ + | mips64 | mips64el \ + | mips64octeon | mips64octeonel \ + | mips64orion | mips64orionel \ + | mips64r5900 | mips64r5900el \ + | mips64vr | mips64vrel \ + | mips64vr4100 | mips64vr4100el \ + | mips64vr4300 | mips64vr4300el \ + | mips64vr5000 | mips64vr5000el \ + | mips64vr5900 | mips64vr5900el \ + | mipsisa32 | mipsisa32el \ + | mipsisa32r2 | mipsisa32r2el \ + | mipsisa64 | mipsisa64el \ + | mipsisa64r2 | mipsisa64r2el \ + | mipsisa64sb1 | mipsisa64sb1el \ + | mipsisa64sr71k | mipsisa64sr71kel \ + | mipstx39 | mipstx39el \ + | mn10200 | mn10300 \ + | moxie \ + | mt \ + | msp430 \ + | nios | nios2 \ + | ns16k | ns32k \ + | or32 \ + | pdp10 | pdp11 | pj | pjl \ + | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | pyramid \ + | rx \ + | score \ + | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ + | sh64 | sh64le \ + | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ + | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ + | spu | strongarm \ + | tahoe | thumb | tic4x | tic80 | tron \ + | ubicom32 \ + | v850 | v850e \ + | we32k \ + | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | z8k | z80) + basic_machine=$basic_machine-unknown + ;; + m6811 | m68hc11 | m6812 | m68hc12 | picochip) + # Motorola 68HC11/12. + basic_machine=$basic_machine-unknown + os=-none + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + ;; + ms1) + basic_machine=mt-unknown + ;; + + # We use `pc' rather than `unknown' + # because (1) that's what they normally are, and + # (2) the word "unknown" tends to confuse beginning users. + i*86 | x86_64) + basic_machine=$basic_machine-pc + ;; + # Object if more than one company name word. + *-*-*) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; + # Recognize the basic CPU types with company name. + 580-* \ + | a29k-* \ + | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ + | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ + | avr-* | avr32-* \ + | bfin-* | bs2000-* \ + | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ + | clipper-* | craynv-* | cydra-* \ + | d10v-* | d30v-* | dlx-* \ + | elxsi-* \ + | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ + | h8300-* | h8500-* \ + | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | i*86-* | i860-* | i960-* | ia64-* \ + | ip2k-* | iq2000-* \ + | lm32-* \ + | m32c-* | m32r-* | m32rle-* \ + | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ + | mips16-* \ + | mips64-* | mips64el-* \ + | mips64octeon-* | mips64octeonel-* \ + | mips64orion-* | mips64orionel-* \ + | mips64r5900-* | mips64r5900el-* \ + | mips64vr-* | mips64vrel-* \ + | mips64vr4100-* | mips64vr4100el-* \ + | mips64vr4300-* | mips64vr4300el-* \ + | mips64vr5000-* | mips64vr5000el-* \ + | mips64vr5900-* | mips64vr5900el-* \ + | mipsisa32-* | mipsisa32el-* \ + | mipsisa32r2-* | mipsisa32r2el-* \ + | mipsisa64-* | mipsisa64el-* \ + | mipsisa64r2-* | mipsisa64r2el-* \ + | mipsisa64sb1-* | mipsisa64sb1el-* \ + | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipstx39-* | mipstx39el-* \ + | mmix-* \ + | mt-* \ + | msp430-* \ + | nios-* | nios2-* \ + | none-* | np1-* | ns16k-* | ns32k-* \ + | orion-* \ + | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | pyramid-* \ + | romp-* | rs6000-* | rx-* \ + | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ + | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ + | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ + | sparclite-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ + | tahoe-* | thumb-* \ + | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* | tile-* \ + | tron-* \ + | ubicom32-* \ + | v850-* | v850e-* | vax-* \ + | we32k-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | xstormy16-* | xtensa*-* \ + | ymp-* \ + | z8k-* | z80-*) + ;; + # Recognize the basic CPU types without company name, with glob match. + xtensa*) + basic_machine=$basic_machine-unknown + ;; + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 386bsd) + basic_machine=i386-unknown + os=-bsd + ;; + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + basic_machine=m68000-att + ;; + 3b*) + basic_machine=we32k-att + ;; + a29khif) + basic_machine=a29k-amd + os=-udi + ;; + abacus) + basic_machine=abacus-unknown + ;; + adobe68k) + basic_machine=m68010-adobe + os=-scout + ;; + alliant | fx80) + basic_machine=fx80-alliant + ;; + altos | altos3068) + basic_machine=m68k-altos + ;; + am29k) + basic_machine=a29k-none + os=-bsd + ;; + amd64) + basic_machine=x86_64-pc + ;; + amd64-*) + basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + amdahl) + basic_machine=580-amdahl + os=-sysv + ;; + amiga | amiga-*) + basic_machine=m68k-unknown + ;; + amigaos | amigados) + basic_machine=m68k-unknown + os=-amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + os=-sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + os=-sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + os=-bsd + ;; + aros) + basic_machine=i386-pc + os=-aros + ;; + aux) + basic_machine=m68k-apple + os=-aux + ;; + balance) + basic_machine=ns32k-sequent + os=-dynix + ;; + blackfin) + basic_machine=bfin-unknown + os=-linux + ;; + blackfin-*) + basic_machine=bfin-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + bluegene*) + basic_machine=powerpc-ibm + os=-cnk + ;; + c90) + basic_machine=c90-cray + os=-unicos + ;; + cegcc) + basic_machine=arm-unknown + os=-cegcc + ;; + convex-c1) + basic_machine=c1-convex + os=-bsd + ;; + convex-c2) + basic_machine=c2-convex + os=-bsd + ;; + convex-c32) + basic_machine=c32-convex + os=-bsd + ;; + convex-c34) + basic_machine=c34-convex + os=-bsd + ;; + convex-c38) + basic_machine=c38-convex + os=-bsd + ;; + cray | j90) + basic_machine=j90-cray + os=-unicos + ;; + craynv) + basic_machine=craynv-cray + os=-unicosmp + ;; + cr16) + basic_machine=cr16-unknown + os=-elf + ;; + crds | unos) + basic_machine=m68k-crds + ;; + crisv32 | crisv32-* | etraxfs*) + basic_machine=crisv32-axis + ;; + cris | cris-* | etrax*) + basic_machine=cris-axis + ;; + crx) + basic_machine=crx-unknown + os=-elf + ;; + da30 | da30-*) + basic_machine=m68k-da30 + ;; + decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) + basic_machine=mips-dec + ;; + decsystem10* | dec10*) + basic_machine=pdp10-dec + os=-tops10 + ;; + decsystem20* | dec20*) + basic_machine=pdp10-dec + os=-tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + basic_machine=m68k-motorola + ;; + delta88) + basic_machine=m88k-motorola + os=-sysv3 + ;; + dicos) + basic_machine=i686-pc + os=-dicos + ;; + djgpp) + basic_machine=i586-pc + os=-msdosdjgpp + ;; + dpx20 | dpx20-*) + basic_machine=rs6000-bull + os=-bosx + ;; + dpx2* | dpx2*-bull) + basic_machine=m68k-bull + os=-sysv3 + ;; + ebmon29k) + basic_machine=a29k-amd + os=-ebmon + ;; + elxsi) + basic_machine=elxsi-elxsi + os=-bsd + ;; + encore | umax | mmax) + basic_machine=ns32k-encore + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + os=-ose + ;; + fx2800) + basic_machine=i860-alliant + ;; + genix) + basic_machine=ns32k-ns + ;; + gmicro) + basic_machine=tron-gmicro + os=-sysv + ;; + go32) + basic_machine=i386-pc + os=-go32 + ;; + h3050r* | hiux*) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + h8300hms) + basic_machine=h8300-hitachi + os=-hms + ;; + h8300xray) + basic_machine=h8300-hitachi + os=-xray + ;; + h8500hms) + basic_machine=h8500-hitachi + os=-hms + ;; + harris) + basic_machine=m88k-harris + os=-sysv3 + ;; + hp300-*) + basic_machine=m68k-hp + ;; + hp300bsd) + basic_machine=m68k-hp + os=-bsd + ;; + hp300hpux) + basic_machine=m68k-hp + os=-hpux + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + basic_machine=m68000-hp + ;; + hp9k3[2-9][0-9]) + basic_machine=m68k-hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + basic_machine=hppa1.1-hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + basic_machine=hppa1.1-hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + basic_machine=hppa1.0-hp + ;; + hppa-next) + os=-nextstep3 + ;; + hppaosf) + basic_machine=hppa1.1-hp + os=-osf + ;; + hppro) + basic_machine=hppa1.1-hp + os=-proelf + ;; + i370-ibm* | ibm*) + basic_machine=i370-ibm + ;; +# I'm not sure what "Sysv32" means. Should this be sysv3.2? + i*86v32) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv32 + ;; + i*86v4*) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv4 + ;; + i*86v) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-sysv + ;; + i*86sol2) + basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` + os=-solaris2 + ;; + i386mach) + basic_machine=i386-mach + os=-mach + ;; + i386-vsta | vsta) + basic_machine=i386-unknown + os=-vsta + ;; + iris | iris4d) + basic_machine=mips-sgi + case $os in + -irix*) + ;; + *) + os=-irix4 + ;; + esac + ;; + isi68 | isi) + basic_machine=m68k-isi + os=-sysv + ;; + m68knommu) + basic_machine=m68k-unknown + os=-linux + ;; + m68knommu-*) + basic_machine=m68k-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + m88k-omron*) + basic_machine=m88k-omron + ;; + magnum | m3230) + basic_machine=mips-mips + os=-sysv + ;; + merlin) + basic_machine=ns32k-utek + os=-sysv + ;; + microblaze) + basic_machine=microblaze-xilinx + ;; + mingw32) + basic_machine=i386-pc + os=-mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + os=-mingw32ce + ;; + miniframe) + basic_machine=m68000-convergent + ;; + *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) + basic_machine=m68k-atari + os=-mint + ;; + mips3*-*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + ;; + mips3*) + basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown + ;; + monitor) + basic_machine=m68k-rom68k + os=-coff + ;; + morphos) + basic_machine=powerpc-unknown + os=-morphos + ;; + msdos) + basic_machine=i386-pc + os=-msdos + ;; + ms1-*) + basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` + ;; + mvs) + basic_machine=i370-ibm + os=-mvs + ;; + ncr3000) + basic_machine=i486-ncr + os=-sysv4 + ;; + netbsd386) + basic_machine=i386-unknown + os=-netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + os=-linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + os=-newsos + ;; + news1000) + basic_machine=m68030-sony + os=-newsos + ;; + news-3600 | risc-news) + basic_machine=mips-sony + os=-newsos + ;; + necv70) + basic_machine=v70-nec + os=-sysv + ;; + next | m*-next ) + basic_machine=m68k-next + case $os in + -nextstep* ) + ;; + -ns2*) + os=-nextstep2 + ;; + *) + os=-nextstep3 + ;; + esac + ;; + nh3000) + basic_machine=m68k-harris + os=-cxux + ;; + nh[45]000) + basic_machine=m88k-harris + os=-cxux + ;; + nindy960) + basic_machine=i960-intel + os=-nindy + ;; + mon960) + basic_machine=i960-intel + os=-mon960 + ;; + nonstopux) + basic_machine=mips-compaq + os=-nonstopux + ;; + np1) + basic_machine=np1-gould + ;; + nsr-tandem) + basic_machine=nsr-tandem + ;; + op50n-* | op60c-*) + basic_machine=hppa1.1-oki + os=-proelf + ;; + openrisc | openrisc-*) + basic_machine=or32-unknown + ;; + os400) + basic_machine=powerpc-ibm + os=-os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + os=-ose + ;; + os68k) + basic_machine=m68k-none + os=-os68k + ;; + pa-hitachi) + basic_machine=hppa1.1-hitachi + os=-hiuxwe2 + ;; + paragon) + basic_machine=i860-intel + os=-osf + ;; + parisc) + basic_machine=hppa-unknown + os=-linux + ;; + parisc-*) + basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` + os=-linux + ;; + pbd) + basic_machine=sparc-tti + ;; + pbb) + basic_machine=m68k-tti + ;; + pc532 | pc532-*) + basic_machine=ns32k-pc532 + ;; + pc98) + basic_machine=i386-pc + ;; + pc98-*) + basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium | p5 | k5 | k6 | nexgen | viac3) + basic_machine=i586-pc + ;; + pentiumpro | p6 | 6x86 | athlon | athlon_*) + basic_machine=i686-pc + ;; + pentiumii | pentium2 | pentiumiii | pentium3) + basic_machine=i686-pc + ;; + pentium4) + basic_machine=i786-pc + ;; + pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) + basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumpro-* | p6-* | 6x86-* | athlon-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) + basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pentium4-*) + basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + pn) + basic_machine=pn-gould + ;; + power) basic_machine=power-ibm + ;; + ppc) basic_machine=powerpc-unknown + ;; + ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppcle | powerpclittle | ppc-le | powerpc-little) + basic_machine=powerpcle-unknown + ;; + ppcle-* | powerpclittle-*) + basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64) basic_machine=powerpc64-unknown + ;; + ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ppc64le | powerpc64little | ppc64-le | powerpc64-little) + basic_machine=powerpc64le-unknown + ;; + ppc64le-* | powerpc64little-*) + basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; + ps2) + basic_machine=i386-ibm + ;; + pw32) + basic_machine=i586-unknown + os=-pw32 + ;; + rdos) + basic_machine=i386-pc + os=-rdos + ;; + rom68k) + basic_machine=m68k-rom68k + os=-coff + ;; + rm[46]00) + basic_machine=mips-siemens + ;; + rtpc | rtpc-*) + basic_machine=romp-ibm + ;; + s390 | s390-*) + basic_machine=s390-ibm + ;; + s390x | s390x-*) + basic_machine=s390x-ibm + ;; + sa29200) + basic_machine=a29k-amd + os=-udi + ;; + sb1) + basic_machine=mipsisa64sb1-unknown + ;; + sb1el) + basic_machine=mipsisa64sb1el-unknown + ;; + sde) + basic_machine=mipsisa32-sde + os=-elf + ;; + sei) + basic_machine=mips-sei + os=-seiux + ;; + sequent) + basic_machine=i386-sequent + ;; + sh) + basic_machine=sh-hitachi + os=-hms + ;; + sh5el) + basic_machine=sh5le-unknown + ;; + sh64) + basic_machine=sh64-unknown + ;; + sparclite-wrs | simso-wrs) + basic_machine=sparclite-wrs + os=-vxworks + ;; + sps7) + basic_machine=m68k-bull + os=-sysv2 + ;; + spur) + basic_machine=spur-unknown + ;; + st2000) + basic_machine=m68k-tandem + ;; + stratus) + basic_machine=i860-stratus + os=-sysv4 + ;; + sun2) + basic_machine=m68000-sun + ;; + sun2os3) + basic_machine=m68000-sun + os=-sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=-sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=-sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=-sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=-sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=-sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=-solaris2 + ;; + sun3 | sun3-*) + basic_machine=m68k-sun + ;; + sun4) + basic_machine=sparc-sun + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + ;; + sv1) + basic_machine=sv1-cray + os=-unicos + ;; + symmetry) + basic_machine=i386-sequent + os=-dynix + ;; + t3e) + basic_machine=alphaev5-cray + os=-unicos + ;; + t90) + basic_machine=t90-cray + os=-unicos + ;; + tic54x | c54x*) + basic_machine=tic54x-unknown + os=-coff + ;; + tic55x | c55x*) + basic_machine=tic55x-unknown + os=-coff + ;; + tic6x | c6x*) + basic_machine=tic6x-unknown + os=-coff + ;; + tile*) + basic_machine=tile-unknown + os=-linux-gnu + ;; + tx39) + basic_machine=mipstx39-unknown + ;; + tx39el) + basic_machine=mipstx39el-unknown + ;; + toad1) + basic_machine=pdp10-xkl + os=-tops20 + ;; + tower | tower-32) + basic_machine=m68k-ncr + ;; + tpf) + basic_machine=s390x-ibm + os=-tpf + ;; + udi29k) + basic_machine=a29k-amd + os=-udi + ;; + ultra3) + basic_machine=a29k-nyu + os=-sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + os=-none + ;; + vaxv) + basic_machine=vax-dec + os=-sysv + ;; + vms) + basic_machine=vax-dec + os=-vms + ;; + vpp*|vx|vx-*) + basic_machine=f301-fujitsu + ;; + vxworks960) + basic_machine=i960-wrs + os=-vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + os=-vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + os=-vxworks + ;; + w65*) + basic_machine=w65-wdc + os=-none + ;; + w89k-*) + basic_machine=hppa1.1-winbond + os=-proelf + ;; + xbox) + basic_machine=i686-pc + os=-mingw32 + ;; + xps | xps100) + basic_machine=xps100-honeywell + ;; + ymp) + basic_machine=ymp-cray + os=-unicos + ;; + z8k-*-coff) + basic_machine=z8k-unknown + os=-sim + ;; + z80-*-coff) + basic_machine=z80-unknown + os=-sim + ;; + none) + basic_machine=none-none + os=-none + ;; + +# Here we handle the default manufacturer of certain CPU types. It is in +# some cases the only manufacturer, in others, it is the most popular. + w89k) + basic_machine=hppa1.1-winbond + ;; + op50n) + basic_machine=hppa1.1-oki + ;; + op60c) + basic_machine=hppa1.1-oki + ;; + romp) + basic_machine=romp-ibm + ;; + mmix) + basic_machine=mmix-knuth + ;; + rs6000) + basic_machine=rs6000-ibm + ;; + vax) + basic_machine=vax-dec + ;; + pdp10) + # there are many clones, so DEC is not a safe bet + basic_machine=pdp10-unknown + ;; + pdp11) + basic_machine=pdp11-dec + ;; + we32k) + basic_machine=we32k-att + ;; + sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) + basic_machine=sh-unknown + ;; + sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) + basic_machine=sparc-sun + ;; + cydra) + basic_machine=cydra-cydrome + ;; + orion) + basic_machine=orion-highlevel + ;; + orion105) + basic_machine=clipper-highlevel + ;; + mac | mpw | mac-mpw) + basic_machine=m68k-apple + ;; + pmac | pmac-mpw) + basic_machine=powerpc-apple + ;; + *-unknown) + # Make sure to match an already-canonicalized machine name. + ;; + *) + echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + exit 1 + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $basic_machine in + *-digital*) + basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + ;; + *-commodore*) + basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if [ x"$os" != x"" ] +then +case $os in + # First match some system type aliases + # that might get confused with valid system types. + # -solaris* is a basic system type, with this one exception. + -auroraux) + os=-auroraux + ;; + -solaris1 | -solaris1.*) + os=`echo $os | sed -e 's|solaris1|sunos4|'` + ;; + -solaris) + os=-solaris2 + ;; + -svr4*) + os=-sysv4 + ;; + -unixware*) + os=-sysv4.2uw + ;; + -gnu/linux*) + os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` + ;; + # First accept the basic system types. + # The portable systems comes first. + # Each alternative MUST END IN A *, to match a version number. + # -sysv* is not here because it comes later, after sysvr4. + -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ + | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ + | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ + | -sym* | -kopensolaris* \ + | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ + | -aos* | -aros* \ + | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ + | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ + | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ + | -openbsd* | -solidbsd* \ + | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ + | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ + | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ + | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ + | -chorusos* | -chorusrdb* | -cegcc* \ + | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -linux-gnu* | -linux-newlib* | -linux-uclibc* \ + | -uxpv* | -beos* | -mpeix* | -udk* \ + | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ + | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ + | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ + | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ + | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ + | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*) + # Remember, each alternative MUST END IN *, to match a version number. + ;; + -qnx*) + case $basic_machine in + x86-* | i*86-*) + ;; + *) + os=-nto$os + ;; + esac + ;; + -nto-qnx*) + ;; + -nto*) + os=`echo $os | sed -e 's|nto|nto-qnx|'` + ;; + -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ + | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ + | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + ;; + -mac*) + os=`echo $os | sed -e 's|mac|macos|'` + ;; + -linux-dietlibc) + os=-linux-dietlibc + ;; + -linux*) + os=`echo $os | sed -e 's|linux|linux-gnu|'` + ;; + -sunos5*) + os=`echo $os | sed -e 's|sunos5|solaris2|'` + ;; + -sunos6*) + os=`echo $os | sed -e 's|sunos6|solaris3|'` + ;; + -opened*) + os=-openedition + ;; + -os400*) + os=-os400 + ;; + -wince*) + os=-wince + ;; + -osfrose*) + os=-osfrose + ;; + -osf*) + os=-osf + ;; + -utek*) + os=-bsd + ;; + -dynix*) + os=-bsd + ;; + -acis*) + os=-aos + ;; + -atheos*) + os=-atheos + ;; + -syllable*) + os=-syllable + ;; + -386bsd) + os=-bsd + ;; + -ctix* | -uts*) + os=-sysv + ;; + -nova*) + os=-rtmk-nova + ;; + -ns2 ) + os=-nextstep2 + ;; + -nsk*) + os=-nsk + ;; + # Preserve the version number of sinix5. + -sinix5.*) + os=`echo $os | sed -e 's|sinix|sysv|'` + ;; + -sinix*) + os=-sysv4 + ;; + -tpf*) + os=-tpf + ;; + -triton*) + os=-sysv3 + ;; + -oss*) + os=-sysv3 + ;; + -svr4) + os=-sysv4 + ;; + -svr3) + os=-sysv3 + ;; + -sysvr4) + os=-sysv4 + ;; + # This must come after -sysvr4. + -sysv*) + ;; + -ose*) + os=-ose + ;; + -es1800*) + os=-ose + ;; + -xenix) + os=-xenix + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + os=-mint + ;; + -aros*) + os=-aros + ;; + -kaos*) + os=-kaos + ;; + -zvmoe) + os=-zvmoe + ;; + -dicos*) + os=-dicos + ;; + -none) + ;; + *) + # Get rid of the `-' at the beginning of $os. + os=`echo $os | sed 's/[^-]*-//'` + echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 + exit 1 + ;; +esac +else + +# Here we handle the default operating systems that come with various machines. +# The value should be what the vendor currently ships out the door with their +# machine or put another way, the most popular os provided with the machine. + +# Note that if you're going to try to match "-MANUFACTURER" here (say, +# "-sun"), then you have to tell the case statement up towards the top +# that MANUFACTURER isn't an operating system. Otherwise, code above +# will signal an error saying that MANUFACTURER isn't an operating +# system, and we'll never get to this point. + +case $basic_machine in + score-*) + os=-elf + ;; + spu-*) + os=-elf + ;; + *-acorn) + os=-riscix1.2 + ;; + arm*-rebel) + os=-linux + ;; + arm*-semi) + os=-aout + ;; + c4x-* | tic4x-*) + os=-coff + ;; + # This must come before the *-dec entry. + pdp10-*) + os=-tops20 + ;; + pdp11-*) + os=-none + ;; + *-dec | vax-*) + os=-ultrix4.2 + ;; + m68*-apollo) + os=-domain + ;; + i386-sun) + os=-sunos4.0.2 + ;; + m68000-sun) + os=-sunos3 + # This also exists in the configure program, but was not the + # default. + # os=-sunos4 + ;; + m68*-cisco) + os=-aout + ;; + mep-*) + os=-elf + ;; + mips*-cisco) + os=-elf + ;; + mips*-*) + os=-elf + ;; + or32-*) + os=-coff + ;; + *-tti) # must be before sparc entry or we get the wrong os. + os=-sysv3 + ;; + sparc-* | *-sun) + os=-sunos4.1.1 + ;; + *-be) + os=-beos + ;; + *-haiku) + os=-haiku + ;; + *-ibm) + os=-aix + ;; + *-knuth) + os=-mmixware + ;; + *-wec) + os=-proelf + ;; + *-winbond) + os=-proelf + ;; + *-oki) + os=-proelf + ;; + *-hp) + os=-hpux + ;; + *-hitachi) + os=-hiux + ;; + i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) + os=-sysv + ;; + *-cbm) + os=-amigaos + ;; + *-dg) + os=-dgux + ;; + *-dolphin) + os=-sysv3 + ;; + m68k-ccur) + os=-rtu + ;; + m88k-omron*) + os=-luna + ;; + *-next ) + os=-nextstep + ;; + *-sequent) + os=-ptx + ;; + *-crds) + os=-unos + ;; + *-ns) + os=-genix + ;; + i370-*) + os=-mvs + ;; + *-next) + os=-nextstep3 + ;; + *-gould) + os=-sysv + ;; + *-highlevel) + os=-bsd + ;; + *-encore) + os=-bsd + ;; + *-sgi) + os=-irix + ;; + *-siemens) + os=-sysv4 + ;; + *-masscomp) + os=-rtu + ;; + f30[01]-fujitsu | f700-fujitsu) + os=-uxpv + ;; + *-rom68k) + os=-coff + ;; + *-*bug) + os=-coff + ;; + *-apple) + os=-macos + ;; + *-atari*) + os=-mint + ;; + *) + os=-none + ;; +esac +fi + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +vendor=unknown +case $basic_machine in + *-unknown) + case $os in + -riscix*) + vendor=acorn + ;; + -sunos*) + vendor=sun + ;; + -cnk*|-aix*) + vendor=ibm + ;; + -beos*) + vendor=be + ;; + -hpux*) + vendor=hp + ;; + -mpeix*) + vendor=hp + ;; + -hiux*) + vendor=hitachi + ;; + -unos*) + vendor=crds + ;; + -dgux*) + vendor=dg + ;; + -luna*) + vendor=omron + ;; + -genix*) + vendor=ns + ;; + -mvs* | -opened*) + vendor=ibm + ;; + -os400*) + vendor=ibm + ;; + -ptx*) + vendor=sequent + ;; + -tpf*) + vendor=ibm + ;; + -vxsim* | -vxworks* | -windiss*) + vendor=wrs + ;; + -aux*) + vendor=apple + ;; + -hms*) + vendor=hitachi + ;; + -mpw* | -macos*) + vendor=apple + ;; + -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) + vendor=atari + ;; + -vos*) + vendor=stratus + ;; + esac + basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` + ;; +esac + +echo $basic_machine$os +exit + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/src/spatialite/configure b/src/spatialite/configure new file mode 100755 index 0000000..b8cdd25 --- /dev/null +++ b/src/spatialite/configure @@ -0,0 +1,21144 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for libspatialite 4.2.0. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1 + + test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ + || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and a.furieri@lqt.it +$0: about your system, including any error possibly output +$0: before this message. Then install a modern shell, or +$0: manually run the script under such a shell if you do +$0: have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + +SHELL=${CONFIG_SHELL-/bin/sh} + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='libspatialite' +PACKAGE_TARNAME='libspatialite' +PACKAGE_VERSION='4.2.0' +PACKAGE_STRING='libspatialite 4.2.0' +PACKAGE_BUGREPORT='a.furieri@lqt.it' +PACKAGE_URL='' + +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +ANDROID_FALSE +ANDROID_TRUE +MACOSX_FALSE +MACOSX_TRUE +MINGW_FALSE +MINGW_TRUE +ENABLE_EXAMPLES_FALSE +ENABLE_EXAMPLES_TRUE +ENABLE_GEOPACKAGE_FALSE +ENABLE_GEOPACKAGE_TRUE +LIBXML2_LIBS +LIBXML2_CFLAGS +PKG_CONFIG_LIBDIR +PKG_CONFIG_PATH +PKG_CONFIG +GEOS_CFLAGS +GEOS_LDFLAGS +GEOSCONFIG +LIBOBJS +CXXCPP +OTOOL64 +OTOOL +LIPO +NMEDIT +DSYMUTIL +MANIFEST_TOOL +RANLIB +ac_ct_AR +AR +NM +ac_ct_DUMPBIN +DUMPBIN +LD +FGREP +SED +LIBTOOL +OBJDUMP +DLLTOOL +AS +host_os +host_vendor +host_cpu +host +build_os +build_vendor +build_cpu +build +LN_S +am__fastdepCXX_FALSE +am__fastdepCXX_TRUE +CXXDEPMODE +ac_ct_CXX +CXXFLAGS +CXX +EGREP +GREP +CPP +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +MAINT +MAINTAINER_MODE_FALSE +MAINTAINER_MODE_TRUE +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_silent_rules +enable_maintainer_mode +enable_dependency_tracking +enable_shared +enable_static +with_pic +enable_fast_install +with_gnu_ld +with_sysroot +enable_libtool_lock +enable_mathsql +enable_geocallbacks +enable_proj +enable_iconv +enable_freexl +enable_epsg +enable_geos +with_geosconfig +enable_geosadvanced +enable_lwgeom +enable_libxml2 +enable_geopackage +enable_gcov +enable_examples +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP +CXX +CXXFLAGS +CCC +CXXCPP +PKG_CONFIG +PKG_CONFIG_PATH +PKG_CONFIG_LIBDIR +LIBXML2_CFLAGS +LIBXML2_LIBS' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures libspatialite 4.2.0 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/libspatialite] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST cross-compile to build programs to run on HOST [BUILD] +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of libspatialite 4.2.0:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-maintainer-mode + enable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + --enable-shared[=PKGS] build shared libraries [default=yes] + --enable-static[=PKGS] build static libraries [default=yes] + --enable-fast-install[=PKGS] + optimize for fast installation [default=yes] + --disable-libtool-lock avoid locking (might break parallel builds) + --enable-mathsql enables SQL math functions [default=yes] + --enable-geocallbacks enables geometry callbacks [default=no] + --enable-proj enables PROJ.4 inclusion [default=yes] + --enable-iconv enables ICONV inclusion [default=yes] + --enable-freexl enables FreeXL inclusion [default=yes] + --enable-epsg enables full EPSG dataset support [default=yes] + --enable-geos enables GEOS inclusion [default=yes] + --enable-geosadvanced enables GEOS advanced features [default=yes] + --enable-lwgeom enables LWGEOM support [default=no] + --enable-libxml2 enables libxml2 inclusion [default=yes] + --enable-geopackage enables GeoPackage support [default=yes] + --enable-gcov turn on code coverage analysis tools + --enable-examples enables building examples [default=yes] + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-sysroot=DIR Search for dependent libraries within DIR + (or the compiler's sysroot if not specified). + --with-geosconfig=FILE specify an alternative geos-config file + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + PKG_CONFIG path to pkg-config utility + PKG_CONFIG_PATH + directories to add to pkg-config's search path + PKG_CONFIG_LIBDIR + path overriding pkg-config's built-in search path + LIBXML2_CFLAGS + C compiler flags for LIBXML2, overriding pkg-config + LIBXML2_LIBS + linker flags for LIBXML2, overriding pkg-config + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +libspatialite configure 4.2.0 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ------------------------------- ## +## Report this to a.furieri@lqt.it ## +## ------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile + +# ac_fn_cxx_try_compile LINENO +# ---------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_compile + +# ac_fn_c_try_link LINENO +# ----------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_link + +# ac_fn_c_check_func LINENO FUNC VAR +# ---------------------------------- +# Tests whether FUNC exists, setting the cache variable VAR accordingly +ac_fn_c_check_func () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +/* Define $2 to an innocuous variant, in case declares $2. + For example, HP-UX 11i declares gettimeofday. */ +#define $2 innocuous_$2 + +/* System header to define __stub macros and hopefully few prototypes, + which can conflict with char $2 (); below. + Prefer to if __STDC__ is defined, since + exists even on freestanding compilers. */ + +#ifdef __STDC__ +# include +#else +# include +#endif + +#undef $2 + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char $2 (); +/* The GNU C library defines this for functions which it implements + to always fail with ENOSYS. Some functions are actually named + something starting with __ and the normal name is an alias. */ +#if defined __stub_$2 || defined __stub___$2 +choke me +#endif + +int +main () +{ +return $2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_func + +# ac_fn_cxx_try_cpp LINENO +# ------------------------ +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_cpp + +# ac_fn_cxx_try_link LINENO +# ------------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. +ac_fn_cxx_try_link () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext conftest$ac_exeext + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_cxx_werror_flag" || + test ! -s conftest.err + } && test -s conftest$ac_exeext && { + test "$cross_compiling" = yes || + test -x conftest$ac_exeext + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information + # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would + # interfere with the next link command; also delete a directory that is + # left behind by Apple's compiler. We do this before executing the actions. + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_cxx_try_link + +# ac_fn_c_check_type LINENO TYPE VAR INCLUDES +# ------------------------------------------- +# Tests whether TYPE exists after having included INCLUDES, setting cache +# variable VAR accordingly. +ac_fn_c_check_type () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=no" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof ($2)) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +int +main () +{ +if (sizeof (($2))) + return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + eval "$3=yes" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_type +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by libspatialite $as_me 4.2.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +am__api_version='1.13' + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# expand $ac_aux_dir to an absolute path +am_aux_dir=`cd $ac_aux_dir && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='libspatialite' + VERSION='4.2.0' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target. The system "awk" is bad on +# some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } + # Check whether --enable-maintainer-mode was given. +if test "${enable_maintainer_mode+set}" = set; then : + enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +else + USE_MAINTAINER_MODE=no +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +$as_echo "$USE_MAINTAINER_MODE" >&6; } + if test $USE_MAINTAINER_MODE = yes; then + MAINTAINER_MODE_TRUE= + MAINTAINER_MODE_FALSE='#' +else + MAINTAINER_MODE_TRUE='#' + MAINTAINER_MODE_FALSE= +fi + + MAINT=$MAINTAINER_MODE_TRUE + + +ac_config_headers="$ac_config_headers config.h" + + +# enabling huge-file support (64 bit file pointers) + +$as_echo "#define _LARGE_FILE 1" >>confdefs.h + + +$as_echo "#define _FILE_OFFSET_BITS 64" >>confdefs.h + + +$as_echo "#define _LARGEFILE_SOURCE 1" >>confdefs.h + + +# disablibg debug support + +$as_echo "#define NDEBUG 1" >>confdefs.h + + +# config depending options + + + + + + + + + + + + + + + +# Checks for header files. +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in stdlib.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "stdlib.h" "ac_cv_header_stdlib_h" "$ac_includes_default" +if test "x$ac_cv_header_stdlib_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STDLIB_H 1 +_ACEOF + +else + as_fn_error $? "cannot find stdlib.h, bailing out" "$LINENO" 5 +fi + +done + +for ac_header in stdio.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "stdio.h" "ac_cv_header_stdio_h" "$ac_includes_default" +if test "x$ac_cv_header_stdio_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STDIO_H 1 +_ACEOF + +else + as_fn_error $? "cannot find stdio.h, bailing out" "$LINENO" 5 +fi + +done + +for ac_header in string.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "string.h" "ac_cv_header_string_h" "$ac_includes_default" +if test "x$ac_cv_header_string_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STRING_H 1 +_ACEOF + +else + as_fn_error $? "cannot find string.h, bailing out" "$LINENO" 5 +fi + +done + +for ac_header in memory.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "memory.h" "ac_cv_header_memory_h" "$ac_includes_default" +if test "x$ac_cv_header_memory_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_MEMORY_H 1 +_ACEOF + +else + as_fn_error $? "cannot find memory.h, bailing out" "$LINENO" 5 +fi + +done + +for ac_header in math.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "math.h" "ac_cv_header_math_h" "$ac_includes_default" +if test "x$ac_cv_header_math_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_MATH_H 1 +_ACEOF + +else + as_fn_error $? "cannot find math.h, bailing out" "$LINENO" 5 +fi + +done + +for ac_header in float.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "float.h" "ac_cv_header_float_h" "$ac_includes_default" +if test "x$ac_cv_header_float_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_FLOAT_H 1 +_ACEOF + +else + as_fn_error $? "cannot find float.h, bailing out" "$LINENO" 5 +fi + +done + +for ac_header in fcntl.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "fcntl.h" "ac_cv_header_fcntl_h" "$ac_includes_default" +if test "x$ac_cv_header_fcntl_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_FCNTL_H 1 +_ACEOF + +else + as_fn_error $? "cannot find fcntl.h, bailing out" "$LINENO" 5 +fi + +done + +for ac_header in inttypes.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "inttypes.h" "ac_cv_header_inttypes_h" "$ac_includes_default" +if test "x$ac_cv_header_inttypes_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_INTTYPES_H 1 +_ACEOF + +else + as_fn_error $? "cannot find inttypes.h, bailing out" "$LINENO" 5 +fi + +done + +for ac_header in stddef.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "stddef.h" "ac_cv_header_stddef_h" "$ac_includes_default" +if test "x$ac_cv_header_stddef_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STDDEF_H 1 +_ACEOF + +else + as_fn_error $? "cannot find stddef.h, bailing out" "$LINENO" 5 +fi + +done + +for ac_header in stdint.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default" +if test "x$ac_cv_header_stdint_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STDINT_H 1 +_ACEOF + +else + as_fn_error $? "cannot find stdint.h, bailing out" "$LINENO" 5 +fi + +done + +for ac_header in sys/time.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sys/time.h" "ac_cv_header_sys_time_h" "$ac_includes_default" +if test "x$ac_cv_header_sys_time_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SYS_TIME_H 1 +_ACEOF + +else + as_fn_error $? "cannot find sys/time.h, bailing out" "$LINENO" 5 +fi + +done + +for ac_header in unistd.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "unistd.h" "ac_cv_header_unistd_h" "$ac_includes_default" +if test "x$ac_cv_header_unistd_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_UNISTD_H 1 +_ACEOF + +else + as_fn_error $? "cannot find unistd.h, bailing out" "$LINENO" 5 +fi + +done + +for ac_header in sqlite3.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sqlite3.h" "ac_cv_header_sqlite3_h" "$ac_includes_default" +if test "x$ac_cv_header_sqlite3_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SQLITE3_H 1 +_ACEOF + +else + as_fn_error $? "cannot find sqlite3.h, bailing out" "$LINENO" 5 +fi + +done + +for ac_header in sqlite3ext.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "sqlite3ext.h" "ac_cv_header_sqlite3ext_h" "$ac_includes_default" +if test "x$ac_cv_header_sqlite3ext_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_SQLITE3EXT_H 1 +_ACEOF + +else + as_fn_error $? "cannot find sqlite3ext.h, bailing out" "$LINENO" 5 +fi + +done + +for ac_header in zlib.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "zlib.h" "ac_cv_header_zlib_h" "$ac_includes_default" +if test "x$ac_cv_header_zlib_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_ZLIB_H 1 +_ACEOF + +else + as_fn_error $? "cannot find zlib.h, bailing out" "$LINENO" 5 +fi + +done + + + +# Checks for programs. +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +if test -z "$CXX"; then + if test -n "$CCC"; then + CXX=$CCC + else + if test -n "$ac_tool_prefix"; then + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXX" >&5 +$as_echo "$CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CXX="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CXX" >&5 +$as_echo "$ac_ct_CXX" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CXX" && break +done + + if test "x$ac_ct_CXX" = x; then + CXX="g++" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CXX=$ac_ct_CXX + fi +fi + + fi +fi +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C++ compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C++ compiler" >&5 +$as_echo_n "checking whether we are using the GNU C++ compiler... " >&6; } +if ${ac_cv_cxx_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_cxx_compiler_gnu" >&5 +$as_echo "$ac_cv_cxx_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GXX=yes +else + GXX= +fi +ac_test_CXXFLAGS=${CXXFLAGS+set} +ac_save_CXXFLAGS=$CXXFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX accepts -g" >&5 +$as_echo_n "checking whether $CXX accepts -g... " >&6; } +if ${ac_cv_prog_cxx_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_cxx_werror_flag=$ac_cxx_werror_flag + ac_cxx_werror_flag=yes + ac_cv_prog_cxx_g=no + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +else + CXXFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + +else + ac_cxx_werror_flag=$ac_save_cxx_werror_flag + CXXFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_compile "$LINENO"; then : + ac_cv_prog_cxx_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_cxx_werror_flag=$ac_save_cxx_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cxx_g" >&5 +$as_echo "$ac_cv_prog_cxx_g" >&6; } +if test "$ac_test_CXXFLAGS" = set; then + CXXFLAGS=$ac_save_CXXFLAGS +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CXX" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CXX_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CXX_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CXX_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CXX_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CXX_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CXX_dependencies_compiler_type" >&6; } +CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then + am__fastdepCXX_TRUE= + am__fastdepCXX_FALSE='#' +else + am__fastdepCXX_TRUE='#' + am__fastdepCXX_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="gcc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="${ac_tool_prefix}cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + fi +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue + fi + ac_cv_prog_CC="cc" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +if test $ac_prog_rejected = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl.exe + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl.exe +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +$as_echo_n "checking whether ln -s works... " >&6; } +LN_S=$as_ln_s +if test "$LN_S" = "ln -s"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +$as_echo "no, using $LN_S" >&6; } +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +# Make sure we can run config.sub. +$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || + as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +$as_echo_n "checking build system type... " >&6; } +if ${ac_cv_build+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_build_alias=$build_alias +test "x$ac_build_alias" = x && + ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +test "x$ac_build_alias" = x && + as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +$as_echo "$ac_cv_build" >&6; } +case $ac_cv_build in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +esac +build=$ac_cv_build +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_build +shift +build_cpu=$1 +build_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +build_os=$* +IFS=$ac_save_IFS +case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +$as_echo_n "checking host system type... " >&6; } +if ${ac_cv_host+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "x$host_alias" = x; then + ac_cv_host=$ac_cv_build +else + ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || + as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +$as_echo "$ac_cv_host" >&6; } +case $ac_cv_host in +*-*-*) ;; +*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +esac +host=$ac_cv_host +ac_save_IFS=$IFS; IFS='-' +set x $ac_cv_host +shift +host_cpu=$1 +host_vendor=$2 +shift; shift +# Remember, the first character of IFS is used to create $*, +# except with old shells: +host_os=$* +IFS=$ac_save_IFS +case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac + + +enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}as", so it can be a program name with args. +set dummy ${ac_tool_prefix}as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AS"; then + ac_cv_prog_AS="$AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AS="${ac_tool_prefix}as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AS=$ac_cv_prog_AS +if test -n "$AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AS" >&5 +$as_echo "$AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_AS"; then + ac_ct_AS=$AS + # Extract the first word of "as", so it can be a program name with args. +set dummy as; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AS+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AS"; then + ac_cv_prog_ac_ct_AS="$ac_ct_AS" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AS="as" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AS=$ac_cv_prog_ac_ct_AS +if test -n "$ac_ct_AS"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AS" >&5 +$as_echo "$ac_ct_AS" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_AS" = x; then + AS="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AS=$ac_ct_AS + fi +else + AS="$ac_cv_prog_AS" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + + ;; +esac + +test -z "$AS" && AS=as + + + + + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + +case `pwd` in + *\ * | *\ *) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac + + + +macro_version='2.4.2' +macro_revision='1.3337' + + + + + + + + + + + + + +ltmain="$ac_aux_dir/ltmain.sh" + +# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\(["`$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' + +ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +$as_echo_n "checking how to print strings... " >&6; } +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "" +} + +case "$ECHO" in + printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +$as_echo "printf" >&6; } ;; + print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +$as_echo "print -r" >&6; } ;; + *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +$as_echo "cat" >&6; } ;; +esac + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +$as_echo_n "checking for a sed that does not truncate output... " >&6; } +if ${ac_cv_path_SED+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ + for ac_i in 1 2 3 4 5 6 7; do + ac_script="$ac_script$as_nl$ac_script" + done + echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed + { ac_script=; unset ac_script;} + if test -z "$SED"; then + ac_path_SED_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_SED" || continue +# Check for GNU ac_path_SED and select it if it is found. + # Check for GNU $ac_path_SED +case `"$ac_path_SED" --version 2>&1` in +*GNU*) + ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo '' >> "conftest.nl" + "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_SED_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_SED="$ac_path_SED" + ac_path_SED_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_SED_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_SED"; then + as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 + fi +else + ac_cv_path_SED=$SED +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +$as_echo "$ac_cv_path_SED" >&6; } + SED="$ac_cv_path_SED" + rm -f conftest.sed + +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +$as_echo_n "checking for fgrep... " >&6; } +if ${ac_cv_path_FGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + if test -z "$FGREP"; then + ac_path_FGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in fgrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_FGREP" || continue +# Check for GNU ac_path_FGREP and select it if it is found. + # Check for GNU $ac_path_FGREP +case `"$ac_path_FGREP" --version 2>&1` in +*GNU*) + ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'FGREP' >> "conftest.nl" + "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_FGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_FGREP="$ac_path_FGREP" + ac_path_FGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_FGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_FGREP"; then + as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_FGREP=$FGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +$as_echo "$ac_cv_path_FGREP" >&6; } + FGREP="$ac_cv_path_FGREP" + + +test -z "$GREP" && GREP=grep + + + + + + + + + + + + + + + + + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +if ${lt_cv_path_NM+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +$as_echo "$lt_cv_path_NM" >&6; } +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + if test -n "$ac_tool_prefix"; then + for ac_prog in dumpbin "link -dump" + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DUMPBIN"; then + ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DUMPBIN=$ac_cv_prog_DUMPBIN +if test -n "$DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +$as_echo "$DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$DUMPBIN" && break + done +fi +if test -z "$DUMPBIN"; then + ac_ct_DUMPBIN=$DUMPBIN + for ac_prog in dumpbin "link -dump" +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DUMPBIN"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +if test -n "$ac_ct_DUMPBIN"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +$as_echo "$ac_ct_DUMPBIN" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_DUMPBIN" && break +done + + if test "x$ac_ct_DUMPBIN" = x; then + DUMPBIN=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DUMPBIN=$ac_ct_DUMPBIN + fi +fi + + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +$as_echo_n "checking the name lister ($NM) interface... " >&6; } +if ${lt_cv_nm_interface+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&5 + (eval echo "\"\$as_me:$LINENO: output\"" >&5) + cat conftest.out >&5 + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +$as_echo "$lt_cv_nm_interface" >&6; } + +# find the maximum length of command line arguments +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +$as_echo_n "checking the maximum length of command line arguments... " >&6; } +if ${lt_cv_sys_max_cmd_len+:} false; then : + $as_echo_n "(cached) " >&6 +else + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac + +fi + +if test -n $lt_cv_sys_max_cmd_len ; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +$as_echo "none" >&6; } +fi +max_cmd_len=$lt_cv_sys_max_cmd_len + + + + + + +: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +$as_echo "$xsi_shell" >&6; } + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +lt_shell_append=no +( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +$as_echo "$lt_shell_append" >&6; } + + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi + + + + + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to $host format" >&5 +$as_echo_n "checking how to convert $build file names to $host format... " >&6; } +if ${lt_cv_to_host_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac + +fi + +to_host_file_cmd=$lt_cv_to_host_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_host_file_cmd" >&5 +$as_echo "$lt_cv_to_host_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to convert $build file names to toolchain format" >&5 +$as_echo_n "checking how to convert $build file names to toolchain format... " >&6; } +if ${lt_cv_to_tool_file_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + #assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac + +fi + +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_to_tool_file_cmd" >&5 +$as_echo "$lt_cv_to_tool_file_cmd" >&6; } + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +$as_echo_n "checking for $LD option to reload object files... " >&6; } +if ${lt_cv_ld_reload_flag+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_reload_flag='-r' +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +$as_echo "$lt_cv_ld_reload_flag" >&6; } +reload_flag=$lt_cv_ld_reload_flag +case $reload_flag in +"" | " "*) ;; +*) reload_flag=" $reload_flag" ;; +esac +reload_cmds='$LD$reload_flag -o $output$reload_objs' +case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + if test "$GCC" != yes; then + reload_cmds=false + fi + ;; + darwin*) + if test "$GCC" = yes; then + reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' + else + reload_cmds='$LD$reload_flag -o $output$reload_objs' + fi + ;; +esac + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +$as_echo "$OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +$as_echo "$ac_ct_OBJDUMP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OBJDUMP" = x; then + OBJDUMP="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OBJDUMP=$ac_ct_OBJDUMP + fi +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +$as_echo_n "checking how to recognize dependent libraries... " >&6; } +if ${lt_cv_deplibs_check_method+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_file_magic_cmd='$MAGIC_CMD' +lt_cv_file_magic_test_file= +lt_cv_deplibs_check_method='unknown' +# Need to set the preceding variable on all platforms that support +# interlibrary dependencies. +# 'none' -- dependencies not supported. +# `unknown' -- same as none, but documents that we really don't know. +# 'pass_all' -- all dependencies passed with no checks. +# 'test_compile' -- check by making test program. +# 'file_magic [[regex]]' -- check by looking for files in library path +# which responds to the $file_magic_cmd with a given extended regex. +# If you have `file' or equivalent on your system and you're not sure +# whether `pass_all' will *always* work, you probably want this one. + +case $host_os in +aix[4-9]*) + lt_cv_deplibs_check_method=pass_all + ;; + +beos*) + lt_cv_deplibs_check_method=pass_all + ;; + +bsdi[45]*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' + lt_cv_file_magic_cmd='/usr/bin/file -L' + lt_cv_file_magic_test_file=/shlib/libc.so + ;; + +cygwin*) + # func_win32_libid is a shell function defined in ltmain.sh + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + ;; + +mingw* | pw32*) + # Base MSYS/MinGW do not provide the 'file' command needed by + # func_win32_libid shell function, so use a weaker test based on 'objdump', + # unless we find 'file', for example because we are cross-compiling. + # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. + if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[3-9]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +$as_echo "$lt_cv_deplibs_check_method" >&6; } + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[\1]\/[\1]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + + + + + + + + + + + + + + + + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dlltool", so it can be a program name with args. +set dummy ${ac_tool_prefix}dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DLLTOOL"; then + ac_cv_prog_DLLTOOL="$DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DLLTOOL="${ac_tool_prefix}dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DLLTOOL=$ac_cv_prog_DLLTOOL +if test -n "$DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DLLTOOL" >&5 +$as_echo "$DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DLLTOOL"; then + ac_ct_DLLTOOL=$DLLTOOL + # Extract the first word of "dlltool", so it can be a program name with args. +set dummy dlltool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DLLTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DLLTOOL"; then + ac_cv_prog_ac_ct_DLLTOOL="$ac_ct_DLLTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DLLTOOL="dlltool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DLLTOOL=$ac_cv_prog_ac_ct_DLLTOOL +if test -n "$ac_ct_DLLTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DLLTOOL" >&5 +$as_echo "$ac_ct_DLLTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DLLTOOL" = x; then + DLLTOOL="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DLLTOOL=$ac_ct_DLLTOOL + fi +else + DLLTOOL="$ac_cv_prog_DLLTOOL" +fi + +test -z "$DLLTOOL" && DLLTOOL=dlltool + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to associate runtime and link libraries" >&5 +$as_echo_n "checking how to associate runtime and link libraries... " >&6; } +if ${lt_cv_sharedlib_from_linklib_cmd+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sharedlib_from_linklib_cmd" >&5 +$as_echo "$lt_cv_sharedlib_from_linklib_cmd" >&6; } +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + + + + + + + +if test -n "$ac_tool_prefix"; then + for ac_prog in ar + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AR="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +$as_echo "$AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AR" && break + done +fi +if test -z "$AR"; then + ac_ct_AR=$AR + for ac_prog in ar +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_AR+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_AR="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +$as_echo "$ac_ct_AR" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_AR" && break +done + + if test "x$ac_ct_AR" = x; then + AR="false" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + AR=$ac_ct_AR + fi +fi + +: ${AR=ar} +: ${AR_FLAGS=cru} + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for archiver @FILE support" >&5 +$as_echo_n "checking for archiver @FILE support... " >&6; } +if ${lt_cv_ar_at_file+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ar_at_file=no + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&5' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$lt_ar_try\""; } >&5 + (eval $lt_ar_try) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ar_at_file" >&5 +$as_echo "$lt_cv_ar_at_file" >&6; } + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi + + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +test -z "$STRIP" && STRIP=: + + + + + + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +$as_echo "$RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_RANLIB"; then + ac_ct_RANLIB=$RANLIB + # Extract the first word of "ranlib", so it can be a program name with args. +set dummy ranlib; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_RANLIB="ranlib" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +$as_echo "$ac_ct_RANLIB" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_RANLIB" = x; then + RANLIB=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + RANLIB=$ac_ct_RANLIB + fi +else + RANLIB="$ac_cv_prog_RANLIB" +fi + +test -z "$RANLIB" && RANLIB=: + + + + + + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + +# Check for command to grab the raw symbol name followed by C symbol from nm. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +if ${lt_cv_sys_global_symbol_pipe+:} false; then : + $as_echo_n "(cached) " >&6 +else + +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[BCDEGRST]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([_A-Za-z][_A-Za-z0-9]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[BCDT]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[ABCDGISTW]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[ABCDEGRST]' + fi + ;; +irix* | nonstopux*) + symcode='[BCDEGRST]' + ;; +osf*) + symcode='[BCDEGQRST]' + ;; +solaris*) + symcode='[BDRT]' + ;; +sco3.2v5*) + symcode='[DT]' + ;; +sysv4.2uw2*) + symcode='[DT]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[ABDT]' + ;; +sysv4) + symcode='[DFNSTU]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[ABCDGIRSTW]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\)[ ]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK '"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Now try to grab the symbols. + nlist=conftest.nm + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 + (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&5 + fi + else + echo "cannot find nm_test_var in $nlist" >&5 + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 + fi + else + echo "$progname: failed program was:" >&5 + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done + +fi + +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +$as_echo "failed" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +$as_echo "ok" >&6; } +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[@]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sysroot" >&5 +$as_echo_n "checking for sysroot... " >&6; } + +# Check whether --with-sysroot was given. +if test "${with_sysroot+set}" = set; then : + withval=$with_sysroot; +else + with_sysroot=no +fi + + +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${with_sysroot}" >&5 +$as_echo "${with_sysroot}" >&6; } + as_fn_error $? "The sysroot must be an absolute path." "$LINENO" 5 + ;; +esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${lt_sysroot:-no}" >&5 +$as_echo "${lt_sysroot:-no}" >&6; } + + + + + +# Check whether --enable-libtool-lock was given. +if test "${enable_libtool_lock+set}" = set; then : + enableval=$enable_libtool_lock; +fi + +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '#line '$LINENO' "configure"' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +if ${lt_cv_cc_needs_belf+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_cc_needs_belf=yes +else + lt_cv_cc_needs_belf=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +$as_echo "$lt_cv_cc_needs_belf" >&6; } + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" + +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}mt", so it can be a program name with args. +set dummy ${ac_tool_prefix}mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$MANIFEST_TOOL"; then + ac_cv_prog_MANIFEST_TOOL="$MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_MANIFEST_TOOL="${ac_tool_prefix}mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +MANIFEST_TOOL=$ac_cv_prog_MANIFEST_TOOL +if test -n "$MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MANIFEST_TOOL" >&5 +$as_echo "$MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_MANIFEST_TOOL"; then + ac_ct_MANIFEST_TOOL=$MANIFEST_TOOL + # Extract the first word of "mt", so it can be a program name with args. +set dummy mt; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_MANIFEST_TOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_MANIFEST_TOOL"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="$ac_ct_MANIFEST_TOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_MANIFEST_TOOL="mt" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_MANIFEST_TOOL=$ac_cv_prog_ac_ct_MANIFEST_TOOL +if test -n "$ac_ct_MANIFEST_TOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_MANIFEST_TOOL" >&5 +$as_echo "$ac_ct_MANIFEST_TOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_MANIFEST_TOOL" = x; then + MANIFEST_TOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + MANIFEST_TOOL=$ac_ct_MANIFEST_TOOL + fi +else + MANIFEST_TOOL="$ac_cv_prog_MANIFEST_TOOL" +fi + +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $MANIFEST_TOOL is a manifest tool" >&5 +$as_echo_n "checking if $MANIFEST_TOOL is a manifest tool... " >&6; } +if ${lt_cv_path_mainfest_tool+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&5 + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&5 + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest* +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_mainfest_tool" >&5 +$as_echo "$lt_cv_path_mainfest_tool" >&6; } +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi + + + + + + + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +$as_echo "$DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +$as_echo "$ac_ct_DSYMUTIL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_DSYMUTIL" = x; then + DSYMUTIL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + DSYMUTIL=$ac_ct_DSYMUTIL + fi +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +$as_echo "$NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +$as_echo "$ac_ct_NMEDIT" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_NMEDIT" = x; then + NMEDIT=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + NMEDIT=$ac_ct_NMEDIT + fi +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +$as_echo "$LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_LIPO+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +$as_echo "$ac_ct_LIPO" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_LIPO" = x; then + LIPO=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + LIPO=$ac_ct_LIPO + fi +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +$as_echo "$OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +$as_echo "$ac_ct_OTOOL" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL" = x; then + OTOOL=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL=$ac_ct_OTOOL + fi +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +$as_echo "$OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +$as_echo "$ac_ct_OTOOL64" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_OTOOL64" = x; then + OTOOL64=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + OTOOL64=$ac_ct_OTOOL64 + fi +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +$as_echo_n "checking for -single_module linker flag... " >&6; } +if ${lt_cv_apple_cc_single_mod+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +$as_echo "$lt_cv_apple_cc_single_mod" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +if ${lt_cv_ld_exported_symbols_list+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_ld_exported_symbols_list=yes +else + lt_cv_ld_exported_symbols_list=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +$as_echo_n "checking for -force_load linker flag... " >&6; } +if ${lt_cv_ld_force_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 + echo "$AR cru libconftest.a conftest.o" >&5 + $AR cru libconftest.a conftest.o 2>&5 + echo "$RANLIB libconftest.a" >&5 + $RANLIB libconftest.a 2>&5 + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&5 + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +$as_echo "$lt_cv_ld_force_load" >&6; } + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + +for ac_header in dlfcn.h +do : + ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +" +if test "x$ac_cv_header_dlfcn_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_DLFCN_H 1 +_ACEOF + +fi + +done + + + + +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf + + + + + +# Set options + + + + enable_dlopen=no + + + + # Check whether --enable-shared was given. +if test "${enable_shared+set}" = set; then : + enableval=$enable_shared; p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi + + + + + + + + + + # Check whether --enable-static was given. +if test "${enable_static+set}" = set; then : + enableval=$enable_static; p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi + + + + + + + + + + +# Check whether --with-pic was given. +if test "${with_pic+set}" = set; then : + withval=$with_pic; pic_mode="$withval" +else + pic_mode=default +fi + + +test -z "$pic_mode" && pic_mode=default + + + + + + + + # Check whether --enable-fast-install was given. +if test "${enable_fast_install+set}" = set; then : + enableval=$enable_fast_install; p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi + + + + + + + + + + + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' + + + + + + + + + + + + + + + + + + + + + + + + + + +test -z "$LN_S" && LN_S="ln -s" + + + + + + + + + + + + + + +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +$as_echo_n "checking for objdir... " >&6; } +if ${lt_cv_objdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +$as_echo "$lt_cv_objdir" >&6; } +objdir=$lt_cv_objdir + + + + + +cat >>confdefs.h <<_ACEOF +#define LT_OBJDIR "$lt_cv_objdir/" +_ACEOF + + + + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/${ac_tool_prefix}file; then + lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + + + +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +$as_echo_n "checking for file... " >&6; } +if ${lt_cv_path_MAGIC_CMD+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $MAGIC_CMD in +[\\/*] | ?:[\\/]*) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/file; then + lt_cv_path_MAGIC_CMD="$ac_dir/file" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac +fi + +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +$as_echo "$MAGIC_CMD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + else + MAGIC_CMD=: + fi +fi + + fi + ;; +esac + +# Use C for the default configuration in the libtool script + +lt_save_CC="$CC" +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +objext=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + +lt_prog_compiler_no_builtin_flag= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; + *) + lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_rtti_exceptions=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="-fno-rtti -fno-exceptions" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_rtti_exceptions=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } + +if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then + lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +else + : +fi + +fi + + + + + + + lt_prog_compiler_wl= +lt_prog_compiler_pic= +lt_prog_compiler_static= + + + if test "$GCC" = yes; then + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_static='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + ;; + + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + lt_prog_compiler_can_build_shared=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic=-Kconform_pic + fi + ;; + + *) + lt_prog_compiler_pic='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + lt_prog_compiler_wl='-Xlinker ' + lt_prog_compiler_pic='-Xcompiler -fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + lt_prog_compiler_wl='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static='-Bstatic' + else + lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic='-DDLL_EXPORT' + ;; + + hpux9* | hpux10* | hpux11*) + lt_prog_compiler_wl='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + lt_prog_compiler_static='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + lt_prog_compiler_wl='-Wl,' + # PIC (with -KPIC) is the default. + lt_prog_compiler_static='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; + nagfor*) + # NAG Fortran compiler + lt_prog_compiler_wl='-Wl,-Wl,,' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fpic' + lt_prog_compiler_static='-Bstatic' + ;; + ccc*) + lt_prog_compiler_wl='-Wl,' + # All Alpha code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ F* | *Sun*Fortran*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='' + ;; + *Sun\ C*) + # Sun C 5.9 + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + lt_prog_compiler_wl='-Wl,' + ;; + esac + ;; + esac + ;; + + newsos6) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + lt_prog_compiler_wl='-Wl,' + # All OSF/1 code is PIC. + lt_prog_compiler_static='-non_shared' + ;; + + rdos*) + lt_prog_compiler_static='-non_shared' + ;; + + solaris*) + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + lt_prog_compiler_wl='-Qoption ld ';; + *) + lt_prog_compiler_wl='-Wl,';; + esac + ;; + + sunos4*) + lt_prog_compiler_wl='-Qoption ld ' + lt_prog_compiler_pic='-PIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + lt_prog_compiler_pic='-Kconform_pic' + lt_prog_compiler_static='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-KPIC' + lt_prog_compiler_static='-Bstatic' + ;; + + unicos*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_can_build_shared=no + ;; + + uts4*) + lt_prog_compiler_pic='-pic' + lt_prog_compiler_static='-Bstatic' + ;; + + *) + lt_prog_compiler_can_build_shared=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic= + ;; + *) + lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic=$lt_prog_compiler_pic +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic" >&5 +$as_echo "$lt_cv_prog_compiler_pic" >&6; } +lt_prog_compiler_pic=$lt_cv_prog_compiler_pic + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +if ${lt_cv_prog_compiler_pic_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then + case $lt_prog_compiler_pic in + "" | " "*) ;; + *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; + esac +else + lt_prog_compiler_pic= + lt_prog_compiler_can_build_shared=no +fi + +fi + + + + + + + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works=yes + fi + else + lt_cv_prog_compiler_static_works=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +$as_echo "$lt_cv_prog_compiler_static_works" >&6; } + +if test x"$lt_cv_prog_compiler_static_works" = xyes; then + : +else + lt_prog_compiler_static= +fi + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +$as_echo "$lt_cv_prog_compiler_c_o" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + runpath_var= + allow_undefined_flag= + always_export_symbols=no + archive_cmds= + archive_expsym_cmds= + compiler_needs_object=no + enable_shared_with_static_runtimes=no + export_dynamic_flag_spec= + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + hardcode_automatic=no + hardcode_direct=no + hardcode_direct_absolute=no + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld= + hardcode_libdir_separator= + hardcode_minus_L=no + hardcode_shlibpath_var=unsupported + inherit_rpath=no + link_all_deplibs=unknown + module_cmds= + module_expsym_cmds= + old_archive_from_new_cmds= + old_archive_from_expsyms_cmds= + thread_safe_flag_spec= + whole_archive_flag_spec= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + include_expsyms= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + ld_shlibs=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; + *\ \(GNU\ Binutils\)\ [3-9]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[3-9]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec='-L$libdir' + export_dynamic_flag_spec='${wl}--export-all-symbols' + allow_undefined_flag=unsupported + always_export_symbols=no + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs=no + fi + ;; + + haiku*) + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs=yes + ;; + + interix[3-9]*) + hardcode_direct=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld='-rpath $libdir' + archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + ld_shlibs=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) + ld_shlibs=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + ;; + + sunos4*) + archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + ld_shlibs=no + fi + ;; + esac + + if test "$ld_shlibs" = no; then + runpath_var= + hardcode_libdir_flag_spec= + export_dynamic_flag_spec= + whole_archive_flag_spec= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + allow_undefined_flag=unsupported + always_export_symbols=yes + archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + hardcode_minus_L=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + hardcode_direct=unsupported + fi + ;; + + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds='' + hardcode_direct=yes + hardcode_direct_absolute=yes + hardcode_libdir_separator=':' + link_all_deplibs=yes + file_list_spec='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L=yes + hardcode_libdir_flag_spec='-L$libdir' + hardcode_libdir_separator= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + always_export_symbols=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag="-z nodefs" + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath_+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath_=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath_"; then + lt_cv_aix_libpath_="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath_ +fi + + hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag=' ${wl}-bernotok' + allow_undefined_flag=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec='$convenience' + fi + archive_cmds_need_lc=yes + # This is similar to how AIX traditionally builds its shared libraries. + archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac + ;; + + bsdi[45]*) + export_dynamic_flag_spec=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + always_export_symbols=yes + file_list_spec='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, )='true' + enable_shared_with_static_runtimes=yes + export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + old_postinstall_cmds='chmod 644 $oldlib' + postlink_cmds='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + hardcode_libdir_flag_spec=' ' + allow_undefined_flag=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + old_archive_from_new_cmds='true' + # FIXME: Should let the user specify the lib program. + old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' + enable_shared_with_static_runtimes=yes + ;; + esac + ;; + + darwin* | rhapsody*) + + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else + whole_archive_flag_spec='' + fi + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + + ;; + + dgux*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + freebsd1*) + ld_shlibs=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + hpux9*) + if test "$GCC" = yes; then + archive_cmds='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + export_dynamic_flag_spec='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_flag_spec_ld='+b $libdir' + hardcode_libdir_separator=: + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +$as_echo_n "checking if $CC understands -b... " >&6; } +if ${lt_cv_prog_compiler__b+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler__b=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -b" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler__b=yes + fi + else + lt_cv_prog_compiler__b=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +$as_echo "$lt_cv_prog_compiler__b" >&6; } + +if test x"$lt_cv_prog_compiler__b" = xyes; then + archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +else + archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +fi + + ;; + esac + fi + if test "$with_gnu_ld" = no; then + hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' + hardcode_libdir_separator=: + + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct=no + hardcode_shlibpath_var=no + ;; + *) + hardcode_direct=yes + hardcode_direct_absolute=yes + export_dynamic_flag_spec='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + hardcode_minus_L=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $host_os linker accepts -exported_symbol" >&5 +$as_echo_n "checking whether the $host_os linker accepts -exported_symbol... " >&6; } +if ${lt_cv_irix_exported_symbol+:} false; then : + $as_echo_n "(cached) " >&6 +else + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int foo (void) { return 0; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + lt_cv_irix_exported_symbol=yes +else + lt_cv_irix_exported_symbol=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_irix_exported_symbol" >&5 +$as_echo "$lt_cv_irix_exported_symbol" >&6; } + if test "$lt_cv_irix_exported_symbol" = yes; then + archive_expsym_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + inherit_rpath=yes + link_all_deplibs=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_direct=yes + hardcode_shlibpath_var=no + ;; + + newsos6) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + hardcode_shlibpath_var=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no + fi + ;; + + os2*) + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + allow_undefined_flag=unsupported + archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + archive_cmds_need_lc='no' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' + else + allow_undefined_flag=' -expect_unresolved \*' + archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + hardcode_libdir_flag_spec='-rpath $libdir' + fi + archive_cmds_need_lc='no' + hardcode_libdir_separator=: + ;; + + solaris*) + no_undefined_flag=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + archive_cmds='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + hardcode_libdir_flag_spec='-R$libdir' + hardcode_shlibpath_var=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + whole_archive_flag_spec='-z allextract$convenience -z defaultextract' + fi + ;; + esac + link_all_deplibs=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + hardcode_libdir_flag_spec='-L$libdir' + hardcode_direct=yes + hardcode_minus_L=yes + hardcode_shlibpath_var=no + ;; + + sysv4) + case $host_vendor in + sni) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' + reload_cmds='$CC -r -o $output$reload_objs' + hardcode_direct=no + ;; + motorola) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_direct=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + hardcode_shlibpath_var=no + ;; + + sysv4.3*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + export_dynamic_flag_spec='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_shlibpath_var=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + ld_shlibs=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag='${wl}-z,text' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag='${wl}-z,text' + allow_undefined_flag='${wl}-z,nodefs' + archive_cmds_need_lc=no + hardcode_shlibpath_var=no + hardcode_libdir_flag_spec='${wl}-R,$libdir' + hardcode_libdir_separator=':' + link_all_deplibs=yes + export_dynamic_flag_spec='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_shlibpath_var=no + ;; + + *) + ld_shlibs=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + export_dynamic_flag_spec='${wl}-Blargedynsym' + ;; + esac + fi + fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +$as_echo "$ld_shlibs" >&6; } +test "$ld_shlibs" = no && can_build_shared=no + +with_gnu_ld=$with_gnu_ld + + + + + + + + + + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl + pic_flag=$lt_prog_compiler_pic + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag + allow_undefined_flag= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc=no + else + lt_cv_archive_cmds_need_lc=yes + fi + allow_undefined_flag=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } + archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[lt_foo]++; } + if (lt_freq[lt_foo] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([A-Za-z]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action= +if test -n "$hardcode_libdir_flag_spec" || + test -n "$runpath_var" || + test "X$hardcode_automatic" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && + test "$hardcode_minus_L" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +$as_echo "$hardcode_action" >&6; } + +if test "$hardcode_action" = relink || + test "$inherit_rpath" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + +fi + + ;; + + *) + ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +if test "x$ac_cv_func_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +$as_echo_n "checking for shl_load in -ldld... " >&6; } +if ${ac_cv_lib_dld_shl_load+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char shl_load (); +int +main () +{ +return shl_load (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_shl_load=yes +else + ac_cv_lib_dld_shl_load=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +if test "x$ac_cv_lib_dld_shl_load" = xyes; then : + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +else + ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +if test "x$ac_cv_func_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +$as_echo_n "checking for dlopen in -ldl... " >&6; } +if ${ac_cv_lib_dl_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dl_dlopen=yes +else + ac_cv_lib_dl_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +if test "x$ac_cv_lib_dl_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +$as_echo_n "checking for dlopen in -lsvld... " >&6; } +if ${ac_cv_lib_svld_dlopen+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsvld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dlopen (); +int +main () +{ +return dlopen (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_svld_dlopen=yes +else + ac_cv_lib_svld_dlopen=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +if test "x$ac_cv_lib_svld_dlopen" = xyes; then : + lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +$as_echo_n "checking for dld_link in -ldld... " >&6; } +if ${ac_cv_lib_dld_dld_link+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldld $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char dld_link (); +int +main () +{ +return dld_link (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_dld_dld_link=yes +else + ac_cv_lib_dld_dld_link=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +if test "x$ac_cv_lib_dld_dld_link" = xyes; then : + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +fi + + +fi + + +fi + + +fi + + +fi + + +fi + + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +$as_echo_n "checking whether a program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +$as_echo "$lt_cv_dlopen_self" >&6; } + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +if ${lt_cv_dlopen_self_static+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + lt_cv_dlopen_self_static=cross +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +} +_LT_EOF + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 + (eval $ac_link) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&5 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; + x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; + esac + else : + # compilation failed + lt_cv_dlopen_self_static=no + fi +fi +rm -fr conftest* + + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +$as_echo "$lt_cv_dlopen_self_static" >&6; } + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi + + + + + + + + + + + + + + + + + +striplib= +old_striplib= +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +$as_echo_n "checking whether stripping libraries is possible... " >&6; } +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + fi + ;; + *) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + ;; + esac +fi + + + + + + + + + + + + + # Report which library types will actually be built + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +$as_echo_n "checking if libtool supports shared libraries... " >&6; } + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +$as_echo "$can_build_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +$as_echo_n "checking whether to build shared libraries... " >&6; } + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[4-9]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +$as_echo "$enable_shared" >&6; } + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +$as_echo_n "checking whether to build static libraries... " >&6; } + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +$as_echo "$enable_static" >&6; } + + + + +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +CC="$lt_save_CC" + + if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C++ preprocessor" >&5 +$as_echo_n "checking how to run the C++ preprocessor... " >&6; } +if test -z "$CXXCPP"; then + if ${ac_cv_prog_CXXCPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CXXCPP" >&5 +$as_echo "$CXXCPP" >&6; } +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_cxx_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C++ preprocessor \"$CXXCPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +else + _lt_caught_CXX_error=yes +fi + +ac_ext=cpp +ac_cpp='$CXXCPP $CPPFLAGS' +ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + +archive_cmds_need_lc_CXX=no +allow_undefined_flag_CXX= +always_export_symbols_CXX=no +archive_expsym_cmds_CXX= +compiler_needs_object_CXX=no +export_dynamic_flag_spec_CXX= +hardcode_direct_CXX=no +hardcode_direct_absolute_CXX=no +hardcode_libdir_flag_spec_CXX= +hardcode_libdir_flag_spec_ld_CXX= +hardcode_libdir_separator_CXX= +hardcode_minus_L_CXX=no +hardcode_shlibpath_var_CXX=unsupported +hardcode_automatic_CXX=no +inherit_rpath_CXX=no +module_cmds_CXX= +module_expsym_cmds_CXX= +link_all_deplibs_CXX=unknown +old_archive_cmds_CXX=$old_archive_cmds +reload_flag_CXX=$reload_flag +reload_cmds_CXX=$reload_cmds +no_undefined_flag_CXX= +whole_archive_flag_spec_CXX= +enable_shared_with_static_runtimes_CXX=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +objext_CXX=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + + + + + + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC + + + # save warnings/boilerplate of simple test code + ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* + + ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* + + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + compiler_CXX=$CC + for cc_temp in $compiler""; do + case $cc_temp in + compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; + distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` + + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin' + else + lt_prog_compiler_no_builtin_flag_CXX= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + + +# Check whether --with-gnu-ld was given. +if test "${with_gnu_ld+set}" = set; then : + withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +else + with_gnu_ld=no +fi + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +$as_echo_n "checking for ld used by $CC... " >&6; } + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [\\/]* | ?:[\\/]*) + re_direlt='/[^/][^/]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +$as_echo_n "checking for GNU ld... " >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +$as_echo_n "checking for non-GNU ld... " >&6; } +fi +if ${lt_cv_path_LD+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &5 +$as_echo "$LD" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi +test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +if ${lt_cv_prog_gnu_ld+:} false; then : + $as_echo_n "(cached) " >&6 +else + # I'd rather use --version here, but apparently some GNU lds only accept -v. +case `$LD -v 2>&1 &5 +$as_echo "$lt_cv_prog_gnu_ld" >&6; } +with_gnu_ld=$lt_cv_prog_gnu_ld + + + + + + + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + archive_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + whole_archive_flag_spec_CXX= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + ld_shlibs_CXX=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aix[4-9]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + archive_cmds_CXX='' + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + file_list_spec_CXX='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[012]|aix4.[012].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + hardcode_direct_CXX=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + hardcode_minus_L_CXX=yes + hardcode_libdir_flag_spec_CXX='-L$libdir' + hardcode_libdir_separator_CXX= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + export_dynamic_flag_spec_CXX='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + always_export_symbols_CXX=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + allow_undefined_flag_CXX='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + + archive_expsym_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + hardcode_libdir_flag_spec_CXX='${wl}-R $libdir:/usr/lib:/lib' + allow_undefined_flag_CXX="-z nodefs" + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + if ${lt_cv_aix_libpath__CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + + lt_aix_libpath_sed=' + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }' + lt_cv_aix_libpath__CXX=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + if test -z "$lt_cv_aix_libpath__CXX"; then + lt_cv_aix_libpath__CXX="/usr/lib:/lib" + fi + +fi + + aix_libpath=$lt_cv_aix_libpath__CXX +fi + + hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + no_undefined_flag_CXX=' ${wl}-bernotok' + allow_undefined_flag_CXX=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + whole_archive_flag_spec_CXX='$convenience' + fi + archive_cmds_need_lc_CXX=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + archive_expsym_cmds_CXX="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + allow_undefined_flag_CXX=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + ld_shlibs_CXX=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + hardcode_libdir_flag_spec_CXX=' ' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=yes + file_list_spec_CXX='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + archive_cmds_CXX='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, CXX)='true' + enable_shared_with_static_runtimes_CXX=yes + # Don't use ranlib + old_postinstall_cmds_CXX='chmod 644 $oldlib' + postlink_cmds_CXX='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless, + # as there is no search path for DLLs. + hardcode_libdir_flag_spec_CXX='-L$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-all-symbols' + allow_undefined_flag_CXX=unsupported + always_export_symbols_CXX=no + enable_shared_with_static_runtimes_CXX=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + archive_expsym_cmds_CXX='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + ld_shlibs_CXX=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + + + archive_cmds_need_lc_CXX=no + hardcode_direct_CXX=no + hardcode_automatic_CXX=yes + hardcode_shlibpath_var_CXX=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + whole_archive_flag_spec_CXX='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else + whole_archive_flag_spec_CXX='' + fi + link_all_deplibs_CXX=yes + allow_undefined_flag_CXX="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + archive_cmds_CXX="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds_CXX="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds_CXX="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + if test "$lt_cv_apple_cc_single_mod" != "yes"; then + archive_cmds_CXX="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + archive_expsym_cmds_CXX="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi + + else + ld_shlibs_CXX=no + fi + + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + freebsd[12]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + ld_shlibs_CXX=no + ;; + + freebsd-elf*) + archive_cmds_need_lc_CXX=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + ld_shlibs_CXX=yes + ;; + + gnu*) + ;; + + haiku*) + archive_cmds_CXX='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + link_all_deplibs_CXX=yes + ;; + + hpux9*) + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + export_dynamic_flag_spec_CXX='${wl}-E' + hardcode_direct_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + archive_cmds_CXX='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + export_dynamic_flag_spec_CXX='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + ;; + *) + hardcode_direct_CXX=yes + hardcode_direct_absolute_CXX=yes + hardcode_minus_L_CXX=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + interix[3-9]*) + hardcode_direct_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + archive_cmds_CXX='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + archive_expsym_cmds_CXX='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + link_all_deplibs_CXX=yes + ;; + esac + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + inherit_rpath_CXX=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + archive_expsym_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + archive_cmds_need_lc_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [1-5].* | *pgcpp\ [1-5].*) + prelink_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + old_archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + archive_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + export_dynamic_flag_spec_CXX='${wl}--export-dynamic' + archive_cmds_CXX='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds_CXX='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + hardcode_libdir_flag_spec_CXX='-R$libdir' + whole_archive_flag_spec_CXX='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + compiler_needs_object_CXX=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + ld_shlibs_CXX=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + ld_shlibs_CXX=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + hardcode_direct_CXX=yes + hardcode_shlibpath_var_CXX=no + hardcode_direct_absolute_CXX=yes + archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + export_dynamic_flag_spec_CXX='${wl}-E' + whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + ld_shlibs_CXX=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + archive_cmds_CXX='tempext=`echo $shared_ext | $SED -e '\''s/\([^()0-9A-Za-z{}]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir' + hardcode_libdir_separator_CXX=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) old_archive_cmds_CXX='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + cxx*) + case $host in + osf3*) + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + ;; + *) + allow_undefined_flag_CXX=' -expect_unresolved \*' + archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + archive_expsym_cmds_CXX='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + hardcode_libdir_flag_spec_CXX='-rpath $libdir' + ;; + esac + + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir' + hardcode_libdir_separator_CXX=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + archive_cmds_need_lc_CXX=yes + no_undefined_flag_CXX=' -zdefs' + archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + hardcode_libdir_flag_spec_CXX='-R$libdir' + hardcode_shlibpath_var_CXX=no + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + whole_archive_flag_spec_CXX='-z allextract$convenience -z defaultextract' + ;; + esac + link_all_deplibs_CXX=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + no_undefined_flag_CXX=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + archive_cmds_CXX='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + archive_expsym_cmds_CXX='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir' + case $host_os in + solaris2.[0-5] | solaris2.[0-5].*) ;; + *) + whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) + no_undefined_flag_CXX='${wl}-z,text' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + no_undefined_flag_CXX='${wl}-z,text' + allow_undefined_flag_CXX='${wl}-z,nodefs' + archive_cmds_need_lc_CXX=no + hardcode_shlibpath_var_CXX=no + hardcode_libdir_flag_spec_CXX='${wl}-R,$libdir' + hardcode_libdir_separator_CXX=':' + link_all_deplibs_CXX=yes + export_dynamic_flag_spec_CXX='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + old_archive_cmds_CXX='$CC -Tprelink_objects $oldobjs~ + '"$old_archive_cmds_CXX" + reload_cmds_CXX='$CC -Tprelink_objects $reload_objs~ + '"$reload_cmds_CXX" + ;; + *) + archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + + *) + # FIXME: insert proper C++ library support + ld_shlibs_CXX=no + ;; + esac + + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } + test "$ld_shlibs_CXX" = no && can_build_shared=no + + GCC_CXX="$GXX" + LD_CXX="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + # Dependencies to place before and after the object being linked: +predep_objects_CXX= +postdep_objects_CXX= +predeps_CXX= +postdeps_CXX= +compiler_lib_search_path_CXX= + +cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF + + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +esac + +if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$compiler_lib_search_path_CXX"; then + compiler_lib_search_path_CXX="${prev}${p}" + else + compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$postdeps_CXX"; then + postdeps_CXX="${prev}${p}" + else + postdeps_CXX="${postdeps_CXX} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$predep_objects_CXX"; then + predep_objects_CXX="$p" + else + predep_objects_CXX="$predep_objects_CXX $p" + fi + else + if test -z "$postdep_objects_CXX"; then + postdep_objects_CXX="$p" + else + postdep_objects_CXX="$postdep_objects_CXX $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling CXX test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +case $host_os in +interix[3-9]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + predep_objects_CXX= + postdep_objects_CXX= + postdeps_CXX= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + postdeps_CXX='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac + + +case " $postdeps_CXX " in +*" -lc "*) archive_cmds_need_lc_CXX=no ;; +esac + compiler_lib_search_dirs_CXX= +if test -n "${compiler_lib_search_path_CXX}"; then + compiler_lib_search_dirs_CXX=`echo " ${compiler_lib_search_path_CXX}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + lt_prog_compiler_wl_CXX= +lt_prog_compiler_pic_CXX= +lt_prog_compiler_static_CXX= + + + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic_CXX='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic_CXX='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + lt_prog_compiler_pic_CXX='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + lt_prog_compiler_pic_CXX= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + lt_prog_compiler_static_CXX= + ;; + interix[3-9]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + lt_prog_compiler_pic_CXX=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + *) + lt_prog_compiler_pic_CXX='-fPIC' + ;; + esac + else + case $host_os in + aix[4-9]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + lt_prog_compiler_static_CXX='-Bstatic' + else + lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, CXX)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + lt_prog_compiler_pic_CXX='-DDLL_EXPORT' + ;; + dgux*) + case $cc_basename in + ec++*) + lt_prog_compiler_pic_CXX='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + lt_prog_compiler_pic_CXX='+Z' + fi + ;; + aCC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + lt_prog_compiler_pic_CXX='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_static_CXX='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + lt_prog_compiler_wl_CXX='--backend -Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fPIC' + lt_prog_compiler_static_CXX='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-fpic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + xlc* | xlC* | bgxl[cC]* | mpixl[cC]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-qpic' + lt_prog_compiler_static_CXX='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + lt_prog_compiler_pic_CXX='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + lt_prog_compiler_pic_CXX='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + lt_prog_compiler_wl_CXX='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + lt_prog_compiler_pic_CXX='-pic' + ;; + cxx*) + # Digital/Compaq C++ + lt_prog_compiler_wl_CXX='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + lt_prog_compiler_pic_CXX= + lt_prog_compiler_static_CXX='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + lt_prog_compiler_wl_CXX='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + lt_prog_compiler_pic_CXX='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + lt_prog_compiler_pic_CXX='-pic' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + lcc*) + # Lucid + lt_prog_compiler_pic_CXX='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + lt_prog_compiler_wl_CXX='-Wl,' + lt_prog_compiler_pic_CXX='-KPIC' + lt_prog_compiler_static_CXX='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + lt_prog_compiler_pic_CXX='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + lt_prog_compiler_can_build_shared_CXX=no + ;; + esac + fi + +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + lt_prog_compiler_pic_CXX= + ;; + *) + lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC" + ;; +esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +if ${lt_cv_prog_compiler_pic_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_CXX=$lt_prog_compiler_pic_CXX +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_CXX" >&6; } +lt_prog_compiler_pic_CXX=$lt_cv_prog_compiler_pic_CXX + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$lt_prog_compiler_pic_CXX"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5 +$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... " >&6; } +if ${lt_cv_prog_compiler_pic_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_pic_works_CXX=no + ac_outfile=conftest.$ac_objext + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$lt_prog_compiler_pic_CXX -DPIC" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_pic_works_CXX=yes + fi + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_pic_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_pic_works_CXX" = xyes; then + case $lt_prog_compiler_pic_CXX in + "" | " "*) ;; + *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;; + esac +else + lt_prog_compiler_pic_CXX= + lt_prog_compiler_can_build_shared_CXX=no +fi + +fi + + + + + +# +# Check to make sure the static flag actually works. +# +wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\" +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +if ${lt_cv_prog_compiler_static_works_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_static_works_CXX=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $lt_tmp_static_flag" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&5 + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + lt_cv_prog_compiler_static_works_CXX=yes + fi + else + lt_cv_prog_compiler_static_works_CXX=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_static_works_CXX" >&6; } + +if test x"$lt_cv_prog_compiler_static_works_CXX" = xyes; then + : +else + lt_prog_compiler_static_CXX= +fi + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +if ${lt_cv_prog_compiler_c_o_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_prog_compiler_c_o_CXX=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + lt_cv_prog_compiler_c_o_CXX=yes + fi + fi + chmod u+w . 2>&5 + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o_CXX" >&5 +$as_echo "$lt_cv_prog_compiler_c_o_CXX" >&6; } + + + + +hard_links="nottested" +if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +$as_echo_n "checking if we can lock with hard links... " >&6; } + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +$as_echo "$hard_links" >&6; } + if test "$hard_links" = no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} + need_locks=warn + fi +else + need_locks=no +fi + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } + + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' + case $host_os in + aix[4-9]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + export_symbols_cmds_CXX="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/;s/^.*[ ]__nm__\([^ ]*\)[ ][^ ]*/\1 DATA/;/^I[ ]/d;/^[AITW][ ]/s/.* //'\'' | sort | uniq > $export_symbols' + exclude_expsyms_CXX='[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname' + ;; + esac + ;; + *) + export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs_CXX" >&5 +$as_echo "$ld_shlibs_CXX" >&6; } +test "$ld_shlibs_CXX" = no && can_build_shared=no + +with_gnu_ld_CXX=$with_gnu_ld + + + + + + +# +# Do we need to explicitly link libc? +# +case "x$archive_cmds_need_lc_CXX" in +x|xyes) + # Assume -lc should be added + archive_cmds_need_lc_CXX=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $archive_cmds_CXX in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +if ${lt_cv_archive_cmds_need_lc_CXX+:} false; then : + $as_echo_n "(cached) " >&6 +else + $RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$lt_prog_compiler_wl_CXX + pic_flag=$lt_prog_compiler_pic_CXX + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$allow_undefined_flag_CXX + allow_undefined_flag_CXX= + if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 + (eval $archive_cmds_CXX 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + then + lt_cv_archive_cmds_need_lc_CXX=no + else + lt_cv_archive_cmds_need_lc_CXX=yes + fi + allow_undefined_flag_CXX=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc_CXX" >&5 +$as_echo "$lt_cv_archive_cmds_need_lc_CXX" >&6; } + archive_cmds_need_lc_CXX=$lt_cv_archive_cmds_need_lc_CXX + ;; + esac + fi + ;; +esac + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +$as_echo_n "checking dynamic linker characteristics... " >&6; } + +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[4-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[01] | aix4.[01].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[45]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([a-zA-Z]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | $GREP ';[c-zC-Z]:/' >/dev/null; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' + + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[123]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[01]* | freebsdelf3.[01]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ + freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[3-9]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + if ${lt_cv_shlibpath_overrides_runpath+:} false; then : + $as_echo_n "(cached) " >&6 +else + lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$lt_prog_compiler_wl_CXX\"; \ + LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec_CXX\"" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_cxx_try_link "$LINENO"; then : + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : + lt_cv_shlibpath_overrides_runpath=yes +fi +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + +fi + + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[89] | openbsd2.[89].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +$as_echo "$dynamic_linker" >&6; } +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +hardcode_action_CXX= +if test -n "$hardcode_libdir_flag_spec_CXX" || + test -n "$runpath_var_CXX" || + test "X$hardcode_automatic_CXX" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$hardcode_direct_CXX" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, CXX)" != no && + test "$hardcode_minus_L_CXX" != no; then + # Linking always hardcodes the temporary library directory. + hardcode_action_CXX=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + hardcode_action_CXX=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + hardcode_action_CXX=unsupported +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action_CXX" >&5 +$as_echo "$hardcode_action_CXX" >&6; } + +if test "$hardcode_action_CXX" = relink || + test "$inherit_rpath_CXX" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi + + + + + + + + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + + + + + + + + + + + + ac_config_commands="$ac_config_commands libtool" + + + + +# Only expand once: + + + +# Checks for typedefs, structures, and compiler characteristics. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for an ANSI C-conforming const" >&5 +$as_echo_n "checking for an ANSI C-conforming const... " >&6; } +if ${ac_cv_c_const+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +#ifndef __cplusplus + /* Ultrix mips cc rejects this sort of thing. */ + typedef int charset[2]; + const charset cs = { 0, 0 }; + /* SunOS 4.1.1 cc rejects this. */ + char const *const *pcpcc; + char **ppc; + /* NEC SVR4.0.2 mips cc rejects this. */ + struct point {int x, y;}; + static struct point const zero = {0,0}; + /* AIX XL C 1.02.0.0 rejects this. + It does not let you subtract one const X* pointer from another in + an arm of an if-expression whose if-part is not a constant + expression */ + const char *g = "string"; + pcpcc = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++pcpcc; + ppc = (char**) pcpcc; + pcpcc = (char const *const *) ppc; + { /* SCO 3.2v4 cc rejects this sort of thing. */ + char tx; + char *t = &tx; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + if (s) return 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this sort of thing, saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; } bx; + struct s *b = &bx; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + if (!foo) return 0; + } + return !cs[0] && !zero.x; +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_const=yes +else + ac_cv_c_const=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_const" >&5 +$as_echo "$ac_cv_c_const" >&6; } +if test $ac_cv_c_const = no; then + +$as_echo "#define const /**/" >>confdefs.h + +fi + +ac_fn_c_check_type "$LINENO" "off_t" "ac_cv_type_off_t" "$ac_includes_default" +if test "x$ac_cv_type_off_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define off_t long int +_ACEOF + +fi + +ac_fn_c_check_type "$LINENO" "size_t" "ac_cv_type_size_t" "$ac_includes_default" +if test "x$ac_cv_type_size_t" = xyes; then : + +else + +cat >>confdefs.h <<_ACEOF +#define size_t unsigned int +_ACEOF + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether time.h and sys/time.h may both be included" >&5 +$as_echo_n "checking whether time.h and sys/time.h may both be included... " >&6; } +if ${ac_cv_header_time+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include + +int +main () +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_time=yes +else + ac_cv_header_time=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_time" >&5 +$as_echo "$ac_cv_header_time" >&6; } +if test $ac_cv_header_time = yes; then + +$as_echo "#define TIME_WITH_SYS_TIME 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether struct tm is in sys/time.h or time.h" >&5 +$as_echo_n "checking whether struct tm is in sys/time.h or time.h... " >&6; } +if ${ac_cv_struct_tm+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include + +int +main () +{ +struct tm tm; + int *p = &tm.tm_sec; + return !p; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_struct_tm=time.h +else + ac_cv_struct_tm=sys/time.h +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_struct_tm" >&5 +$as_echo "$ac_cv_struct_tm" >&6; } +if test $ac_cv_struct_tm = sys/time.h; then + +$as_echo "#define TM_IN_SYS_TIME 1" >>confdefs.h + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working volatile" >&5 +$as_echo_n "checking for working volatile... " >&6; } +if ${ac_cv_c_volatile+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + +volatile int x; +int * volatile y = (int *) 0; +return !x && !y; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_c_volatile=yes +else + ac_cv_c_volatile=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_volatile" >&5 +$as_echo "$ac_cv_c_volatile" >&6; } +if test $ac_cv_c_volatile = no; then + +$as_echo "#define volatile /**/" >>confdefs.h + +fi + + +# Checks for library functions. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 +$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } +if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f conftest.sym conftest.file +echo >conftest.file +if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then + if test "$cross_compiling" = yes; then : + ac_cv_func_lstat_dereferences_slashed_symlink=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +struct stat sbuf; + /* Linux will dereference the symlink and fail, as required by POSIX. + That is better in the sense that it means we will not + have to compile and use the lstat wrapper. */ + return lstat ("conftest.sym/", &sbuf) == 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_lstat_dereferences_slashed_symlink=yes +else + ac_cv_func_lstat_dereferences_slashed_symlink=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +else + # If the `ln -s' command failed, then we probably don't even + # have an lstat function. + ac_cv_func_lstat_dereferences_slashed_symlink=no +fi +rm -f conftest.sym conftest.file + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 +$as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } + +test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && + +cat >>confdefs.h <<_ACEOF +#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 +_ACEOF + + +if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then + case " $LIBOBJS " in + *" lstat.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS lstat.$ac_objext" + ;; +esac + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat accepts an empty string" >&5 +$as_echo_n "checking whether lstat accepts an empty string... " >&6; } +if ${ac_cv_func_lstat_empty_string_bug+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_lstat_empty_string_bug=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +struct stat sbuf; + return lstat ("", &sbuf) == 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_lstat_empty_string_bug=no +else + ac_cv_func_lstat_empty_string_bug=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_empty_string_bug" >&5 +$as_echo "$ac_cv_func_lstat_empty_string_bug" >&6; } +if test $ac_cv_func_lstat_empty_string_bug = yes; then + case " $LIBOBJS " in + *" lstat.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS lstat.$ac_objext" + ;; +esac + + +cat >>confdefs.h <<_ACEOF +#define HAVE_LSTAT_EMPTY_STRING_BUG 1 +_ACEOF + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether lstat correctly handles trailing slash" >&5 +$as_echo_n "checking whether lstat correctly handles trailing slash... " >&6; } +if ${ac_cv_func_lstat_dereferences_slashed_symlink+:} false; then : + $as_echo_n "(cached) " >&6 +else + rm -f conftest.sym conftest.file +echo >conftest.file +if test "$as_ln_s" = "ln -s" && ln -s conftest.file conftest.sym; then + if test "$cross_compiling" = yes; then : + ac_cv_func_lstat_dereferences_slashed_symlink=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +struct stat sbuf; + /* Linux will dereference the symlink and fail, as required by POSIX. + That is better in the sense that it means we will not + have to compile and use the lstat wrapper. */ + return lstat ("conftest.sym/", &sbuf) == 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_lstat_dereferences_slashed_symlink=yes +else + ac_cv_func_lstat_dereferences_slashed_symlink=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +else + # If the `ln -s' command failed, then we probably don't even + # have an lstat function. + ac_cv_func_lstat_dereferences_slashed_symlink=no +fi +rm -f conftest.sym conftest.file + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_lstat_dereferences_slashed_symlink" >&5 +$as_echo "$ac_cv_func_lstat_dereferences_slashed_symlink" >&6; } + +test $ac_cv_func_lstat_dereferences_slashed_symlink = yes && + +cat >>confdefs.h <<_ACEOF +#define LSTAT_FOLLOWS_SLASHED_SYMLINK 1 +_ACEOF + + +if test "x$ac_cv_func_lstat_dereferences_slashed_symlink" = xno; then + case " $LIBOBJS " in + *" lstat.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS lstat.$ac_objext" + ;; +esac + +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for working memcmp" >&5 +$as_echo_n "checking for working memcmp... " >&6; } +if ${ac_cv_func_memcmp_working+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_memcmp_working=no +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ + + /* Some versions of memcmp are not 8-bit clean. */ + char c0 = '\100', c1 = '\200', c2 = '\201'; + if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0) + return 1; + + /* The Next x86 OpenStep bug shows up only when comparing 16 bytes + or more and with at least one buffer not starting on a 4-byte boundary. + William Lewis provided this test program. */ + { + char foo[21]; + char bar[21]; + int i; + for (i = 0; i < 4; i++) + { + char *a = foo + i; + char *b = bar + i; + strcpy (a, "--------01111111"); + strcpy (b, "--------10000000"); + if (memcmp (a, b, 16) >= 0) + return 1; + } + return 0; + } + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_memcmp_working=yes +else + ac_cv_func_memcmp_working=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_memcmp_working" >&5 +$as_echo "$ac_cv_func_memcmp_working" >&6; } +test $ac_cv_func_memcmp_working = no && case " $LIBOBJS " in + *" memcmp.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS memcmp.$ac_objext" + ;; +esac + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stat accepts an empty string" >&5 +$as_echo_n "checking whether stat accepts an empty string... " >&6; } +if ${ac_cv_func_stat_empty_string_bug+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test "$cross_compiling" = yes; then : + ac_cv_func_stat_empty_string_bug=yes +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +struct stat sbuf; + return stat ("", &sbuf) == 0; + ; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + ac_cv_func_stat_empty_string_bug=no +else + ac_cv_func_stat_empty_string_bug=yes +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_func_stat_empty_string_bug" >&5 +$as_echo "$ac_cv_func_stat_empty_string_bug" >&6; } +if test $ac_cv_func_stat_empty_string_bug = yes; then + case " $LIBOBJS " in + *" stat.$ac_objext "* ) ;; + *) LIBOBJS="$LIBOBJS stat.$ac_objext" + ;; +esac + + +cat >>confdefs.h <<_ACEOF +#define HAVE_STAT_EMPTY_STRING_BUG 1 +_ACEOF + +fi + +for ac_func in strftime +do : + ac_fn_c_check_func "$LINENO" "strftime" "ac_cv_func_strftime" +if test "x$ac_cv_func_strftime" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_STRFTIME 1 +_ACEOF + +else + # strftime is in -lintl on SCO UNIX. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for strftime in -lintl" >&5 +$as_echo_n "checking for strftime in -lintl... " >&6; } +if ${ac_cv_lib_intl_strftime+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char strftime (); +int +main () +{ +return strftime (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_intl_strftime=yes +else + ac_cv_lib_intl_strftime=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_intl_strftime" >&5 +$as_echo "$ac_cv_lib_intl_strftime" >&6; } +if test "x$ac_cv_lib_intl_strftime" = xyes; then : + $as_echo "#define HAVE_STRFTIME 1" >>confdefs.h + +LIBS="-lintl $LIBS" +fi + +fi +done + +for ac_func in memset sqrt strcasecmp strerror strncasecmp strstr fdatasync ftruncate getcwd gettimeofday localtime_r memmove strerror +do : + as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh` +ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var" +if eval test \"x\$"$as_ac_var"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1 +_ACEOF + +fi +done + + +# Checks for installed libraries +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_prepare_v2 in -lsqlite3" >&5 +$as_echo_n "checking for sqlite3_prepare_v2 in -lsqlite3... " >&6; } +if ${ac_cv_lib_sqlite3_sqlite3_prepare_v2+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsqlite3 -lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char sqlite3_prepare_v2 (); +int +main () +{ +return sqlite3_prepare_v2 (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_sqlite3_sqlite3_prepare_v2=yes +else + ac_cv_lib_sqlite3_sqlite3_prepare_v2=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_prepare_v2" >&5 +$as_echo "$ac_cv_lib_sqlite3_sqlite3_prepare_v2" >&6; } +if test "x$ac_cv_lib_sqlite3_sqlite3_prepare_v2" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSQLITE3 1 +_ACEOF + + LIBS="-lsqlite3 $LIBS" + +else + as_fn_error $? "'libsqlite3' is required but it doesn't seem to be installed on this system." "$LINENO" 5 +fi + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for inflateInit_ in -lz" >&5 +$as_echo_n "checking for inflateInit_ in -lz... " >&6; } +if ${ac_cv_lib_z_inflateInit_+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lz -lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char inflateInit_ (); +int +main () +{ +return inflateInit_ (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_z_inflateInit_=yes +else + ac_cv_lib_z_inflateInit_=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_z_inflateInit_" >&5 +$as_echo "$ac_cv_lib_z_inflateInit_" >&6; } +if test "x$ac_cv_lib_z_inflateInit_" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBZ 1 +_ACEOF + + LIBS="-lz $LIBS" + +else + as_fn_error $? "'libz' is required but it doesn't seem to be installed on this system." "$LINENO" 5 +fi + + +ac_config_files="$ac_config_files Makefile src/Makefile src/headers/Makefile src/gaiaaux/Makefile src/gaiaexif/Makefile src/gaiageo/Makefile src/gaiageo/flex/Makefile src/gaiageo/lemon/Makefile src/gaiageo/lemon/lemon_src/Makefile src/geopackage/Makefile src/spatialite/Makefile src/shapefiles/Makefile src/dxf/Makefile src/md5/Makefile src/srsinit/Makefile src/srsinit/epsg_update/Makefile src/connection_cache/Makefile src/connection_cache/generator/Makefile src/virtualtext/Makefile src/wfs/Makefile test/Makefile test/sql_stmt_tests/Makefile test/sql_stmt_geos_tests/Makefile test/sql_stmt_geosadvanced_tests/Makefile test/sql_stmt_geopackage_tests/Makefile test/sql_stmt_proj_tests/Makefile test/sql_stmt_mathsql_tests/Makefile test/sql_stmt_lwgeom_tests/Makefile test/sql_stmt_libxml2_tests/Makefile test/sql_stmt_security_tests/Makefile test/sql_stmt_xmlsec_tests/Makefile examples/Makefile Doxyfile spatialite.pc" + + +# exporting the TARGET_CPU string +splite_cpu=`$CC -dumpmachine` +cat >>confdefs.h <<_ACEOF +#define TARGET_CPU "$splite_cpu" +_ACEOF + + + +#----------------------------------------------------------------------- +# --enable-mathsql +# +# Check whether --enable-mathsql was given. +if test "${enable_mathsql+set}" = set; then : + enableval=$enable_mathsql; +else + enable_mathsql=yes +fi + +if test x"$enable_mathsql" != "xyes"; then + $as_echo "#define OMIT_MATHSQL 1" >>confdefs.h + +fi +#----------------------------------------------------------------------- + +#----------------------------------------------------------------------- +# --enable-geocallbacks +# +# Check whether --enable-geocallbacks was given. +if test "${enable_geocallbacks+set}" = set; then : + enableval=$enable_geocallbacks; +else + enable_geocallbacks=no +fi + +if test x"$enable_geocallbacks" == "xyes"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for sqlite3_rtree_geometry_callback in -lsqlite3" >&5 +$as_echo_n "checking for sqlite3_rtree_geometry_callback in -lsqlite3... " >&6; } +if ${ac_cv_lib_sqlite3_sqlite3_rtree_geometry_callback+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsqlite3 -lm $LIBS" +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char sqlite3_rtree_geometry_callback (); +int +main () +{ +return sqlite3_rtree_geometry_callback (); + ; + return 0; +} +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + ac_cv_lib_sqlite3_sqlite3_rtree_geometry_callback=yes +else + ac_cv_lib_sqlite3_sqlite3_rtree_geometry_callback=no +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext +LIBS=$ac_check_lib_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_sqlite3_sqlite3_rtree_geometry_callback" >&5 +$as_echo "$ac_cv_lib_sqlite3_sqlite3_rtree_geometry_callback" >&6; } +if test "x$ac_cv_lib_sqlite3_sqlite3_rtree_geometry_callback" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBSQLITE3 1 +_ACEOF + + LIBS="-lsqlite3 $LIBS" + +else + as_fn_error $? "obsolete 'libsqlite3' (< v.3.7.3). please retry specifying: --disable-geocallbacks" "$LINENO" 5 +fi + +else + $as_echo "#define OMIT_GEOCALLBACKS 1" >>confdefs.h + +fi +#----------------------------------------------------------------------- + +#----------------------------------------------------------------------- +# --enable-proj +# +# Check whether --enable-proj was given. +if test "${enable_proj+set}" = set; then : + enableval=$enable_proj; +else + enable_proj=yes +fi + +if test x"$enable_proj" != "xno"; then + for ac_header in proj_api.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "proj_api.h" "ac_cv_header_proj_api_h" "$ac_includes_default" +if test "x$ac_cv_header_proj_api_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_PROJ_API_H 1 +_ACEOF + +else + as_fn_error $? "cannot find proj_api.h, bailing out" "$LINENO" 5 +fi + +done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pj_init_plus" >&5 +$as_echo_n "checking for library containing pj_init_plus... " >&6; } +if ${ac_cv_search_pj_init_plus+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pj_init_plus (); +int +main () +{ +return pj_init_plus (); + ; + return 0; +} +_ACEOF +for ac_lib in '' proj; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib -lm $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_pj_init_plus=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_pj_init_plus+:} false; then : + break +fi +done +if ${ac_cv_search_pj_init_plus+:} false; then : + +else + ac_cv_search_pj_init_plus=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pj_init_plus" >&5 +$as_echo "$ac_cv_search_pj_init_plus" >&6; } +ac_res=$ac_cv_search_pj_init_plus +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + as_fn_error $? "'libproj' is required but it doesn't seem to be installed on this system." "$LINENO" 5 +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing pj_init_ctx" >&5 +$as_echo_n "checking for library containing pj_init_ctx... " >&6; } +if ${ac_cv_search_pj_init_ctx+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char pj_init_ctx (); +int +main () +{ +return pj_init_ctx (); + ; + return 0; +} +_ACEOF +for ac_lib in '' proj; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib -lm $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_pj_init_ctx=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_pj_init_ctx+:} false; then : + break +fi +done +if ${ac_cv_search_pj_init_ctx+:} false; then : + +else + ac_cv_search_pj_init_ctx=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_pj_init_ctx" >&5 +$as_echo "$ac_cv_search_pj_init_ctx" >&6; } +ac_res=$ac_cv_search_pj_init_ctx +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + as_fn_error $? "'libproj' is required but the version on this system does not support the required features (Version 4.8.0 or later is needed)." "$LINENO" 5 +fi + +else + $as_echo "#define OMIT_PROJ 1" >>confdefs.h + +fi +#----------------------------------------------------------------------- + +#----------------------------------------------------------------------- +# --enable-iconv +# +# Check whether --enable-iconv was given. +if test "${enable_iconv+set}" = set; then : + enableval=$enable_iconv; +else + enable_iconv=yes +fi + +if test x"$enable_iconv" != "xno"; then + for ac_header in iconv.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "iconv.h" "ac_cv_header_iconv_h" "$ac_includes_default" +if test "x$ac_cv_header_iconv_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_ICONV_H 1 +_ACEOF + +else + as_fn_error $? "cannot find iconv.h, bailing out" "$LINENO" 5 +fi + +done + +# on some systems "iconv()" lives in libc. On others it lives in libiconv +# on older systems "libiconv()" lives in libiconv + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing iconv" >&5 +$as_echo_n "checking for library containing iconv... " >&6; } +if ${ac_cv_search_iconv+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char iconv (); +int +main () +{ +return iconv (); + ; + return 0; +} +_ACEOF +for ac_lib in '' iconv; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_iconv=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_iconv+:} false; then : + break +fi +done +if ${ac_cv_search_iconv+:} false; then : + +else + ac_cv_search_iconv=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_iconv" >&5 +$as_echo "$ac_cv_search_iconv" >&6; } +ac_res=$ac_cv_search_iconv +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing libiconv" >&5 +$as_echo_n "checking for library containing libiconv... " >&6; } +if ${ac_cv_search_libiconv+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char libiconv (); +int +main () +{ +return libiconv (); + ; + return 0; +} +_ACEOF +for ac_lib in '' iconv; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_libiconv=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_libiconv+:} false; then : + break +fi +done +if ${ac_cv_search_libiconv+:} false; then : + +else + ac_cv_search_libiconv=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_libiconv" >&5 +$as_echo "$ac_cv_search_libiconv" >&6; } +ac_res=$ac_cv_search_libiconv +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + as_fn_error $? "'libiconv' is required but it doesn't seem to be installed on this system." "$LINENO" 5 +fi + +fi + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing locale_charset" >&5 +$as_echo_n "checking for library containing locale_charset... " >&6; } +if ${ac_cv_search_locale_charset+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char locale_charset (); +int +main () +{ +return locale_charset (); + ; + return 0; +} +_ACEOF +for ac_lib in '' charset; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_locale_charset=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_locale_charset+:} false; then : + break +fi +done +if ${ac_cv_search_locale_charset+:} false; then : + +else + ac_cv_search_locale_charset=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_locale_charset" >&5 +$as_echo "$ac_cv_search_locale_charset" >&6; } +ac_res=$ac_cv_search_locale_charset +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing nl_langinfo" >&5 +$as_echo_n "checking for library containing nl_langinfo... " >&6; } +if ${ac_cv_search_nl_langinfo+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char nl_langinfo (); +int +main () +{ +return nl_langinfo (); + ; + return 0; +} +_ACEOF +for ac_lib in '' c; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_nl_langinfo=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_nl_langinfo+:} false; then : + break +fi +done +if ${ac_cv_search_nl_langinfo+:} false; then : + +else + ac_cv_search_nl_langinfo=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_nl_langinfo" >&5 +$as_echo "$ac_cv_search_nl_langinfo" >&6; } +ac_res=$ac_cv_search_nl_langinfo +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + as_fn_error $? "'libcharset' is required but it doesn't seem to be installed on this system." "$LINENO" 5 +fi + +fi + +else + $as_echo "#define OMIT_ICONV 1" >>confdefs.h + +fi + +#----------------------------------------------------------------------- +# --enable-freexl +# +# Check whether --enable-freexl was given. +if test "${enable_freexl+set}" = set; then : + enableval=$enable_freexl; +else + enable_freexl=yes +fi + +if test x"$enable_freexl" != "xno"; then + for ac_header in freexl.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "freexl.h" "ac_cv_header_freexl_h" "$ac_includes_default" +if test "x$ac_cv_header_freexl_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_FREEXL_H 1 +_ACEOF + +else + as_fn_error $? "cannot find freexl.h, bailing out" "$LINENO" 5 +fi + +done + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing freexl_open" >&5 +$as_echo_n "checking for library containing freexl_open... " >&6; } +if ${ac_cv_search_freexl_open+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char freexl_open (); +int +main () +{ +return freexl_open (); + ; + return 0; +} +_ACEOF +for ac_lib in '' freexl; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib -lm $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_freexl_open=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_freexl_open+:} false; then : + break +fi +done +if ${ac_cv_search_freexl_open+:} false; then : + +else + ac_cv_search_freexl_open=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_freexl_open" >&5 +$as_echo "$ac_cv_search_freexl_open" >&6; } +ac_res=$ac_cv_search_freexl_open +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + as_fn_error $? "'libfreexl' is required but it doesn't seem to be installed on this system." "$LINENO" 5 +fi + +else + $as_echo "#define OMIT_FREEXL 1" >>confdefs.h + +fi +#----------------------------------------------------------------------- + +#----------------------------------------------------------------------- +# --enable-epsg +# +# Check whether --enable-epsg was given. +if test "${enable_epsg+set}" = set; then : + enableval=$enable_epsg; +else + enable_epsg=yes +fi + +if test x"$enable_epsg" != "xyes"; then + $as_echo "#define OMIT_EPSG 1" >>confdefs.h + +fi +#----------------------------------------------------------------------- + +#----------------------------------------------------------------------- +# --enable-geos +# +# Check whether --enable-geos was given. +if test "${enable_geos+set}" = set; then : + enableval=$enable_geos; +else + enable_geos=yes +fi + +if test x"$enable_geos" != "xno"; then + #----------------------------------------------------------------------- + # --with-geosconfig + # + +# Check whether --with-geosconfig was given. +if test "${with_geosconfig+set}" = set; then : + withval=$with_geosconfig; GEOSCONFIG="$withval" +else + GEOSCONFIG="" +fi + + if test "x$GEOSCONFIG" = "x"; then + # GEOSCONFIG was not specified, so search within the current path + # Extract the first word of "geos-config", so it can be a program name with args. +set dummy geos-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_GEOSCONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $GEOSCONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_GEOSCONFIG="$GEOSCONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_GEOSCONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +GEOSCONFIG=$ac_cv_path_GEOSCONFIG +if test -n "$GEOSCONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GEOSCONFIG" >&5 +$as_echo "$GEOSCONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + # If we couldn't find geos-config, display an error + if test "x$GEOSCONFIG" = "x"; then + as_fn_error $? "could not find geos-config within the current path. You may need to try re-running configure with a --with-geosconfig parameter." "$LINENO" 5 + fi + else + # GEOSCONFIG was specified; display a message to the user + if test "x$GEOSCONFIG" = "xyes"; then + as_fn_error $? "you must specify a parameter to --with-geosconfig, e.g. --with-geosconfig=/path/to/geos-config" "$LINENO" 5 + else + if test -f $GEOSCONFIG; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: Using user-specified geos-config file: $GEOSCONFIG" >&5 +$as_echo "Using user-specified geos-config file: $GEOSCONFIG" >&6; } + else + as_fn_error $? "the user-specified geos-config file $GEOSCONFIG does not exist" "$LINENO" 5 + fi + fi + fi + # Extract the linker and include flags + GEOS_LDFLAGS=`$GEOSCONFIG --ldflags` + GEOS_CFLAGS=-I`$GEOSCONFIG --includes` + + + # Ensure that we can parse geos_c.h + CPPFLAGS_SAVE="$CPPFLAGS" + CPPFLAGS="$GEOS_CFLAGS" + for ac_header in geos_c.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "geos_c.h" "ac_cv_header_geos_c_h" "$ac_includes_default" +if test "x$ac_cv_header_geos_c_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GEOS_C_H 1 +_ACEOF + +else + as_fn_error $? "could not find geos_c.h - you may need to specify the directory of a geos-config file using --with-geosconfig" "$LINENO" 5 +fi + +done + + CPPFLAGS="$CPPFLAGS_SAVE" + # Ensure we can link against libgeos_c + LIBS_SAVE="$LIBS" + LIBS="$GEOS_LDFLAGS" + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing GEOSCoveredBy" >&5 +$as_echo_n "checking for library containing GEOSCoveredBy... " >&6; } +if ${ac_cv_search_GEOSCoveredBy+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char GEOSCoveredBy (); +int +main () +{ +return GEOSCoveredBy (); + ; + return 0; +} +_ACEOF +for ac_lib in '' geos_c; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_GEOSCoveredBy=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_GEOSCoveredBy+:} false; then : + break +fi +done +if ${ac_cv_search_GEOSCoveredBy+:} false; then : + +else + ac_cv_search_GEOSCoveredBy=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_GEOSCoveredBy" >&5 +$as_echo "$ac_cv_search_GEOSCoveredBy" >&6; } +ac_res=$ac_cv_search_GEOSCoveredBy +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + as_fn_error $? "could not find libgeos_c (or obsolete 'libgeos_c' < v.3.3.0 found) - you may need to specify the directory of a geos-config file using --with-geosconfig" "$LINENO" 5 +fi + + LIBS="$LIBS_SAVE" + LIBS="$LIBS $GEOS_LDFLAGS -lgeos_c" + + #----------------------------------------------------------------------- + # --enable-geosadvanced + # + # Check whether --enable-geosadvanced was given. +if test "${enable_geosadvanced+set}" = set; then : + enableval=$enable_geosadvanced; +else + enable_geosadvanced=yes +fi + + if test x"$enable_geosadvanced" != "xno"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing GEOSDelaunayTriangulation" >&5 +$as_echo_n "checking for library containing GEOSDelaunayTriangulation... " >&6; } +if ${ac_cv_search_GEOSDelaunayTriangulation+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char GEOSDelaunayTriangulation (); +int +main () +{ +return GEOSDelaunayTriangulation (); + ; + return 0; +} +_ACEOF +for ac_lib in '' geos_c; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_GEOSDelaunayTriangulation=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_GEOSDelaunayTriangulation+:} false; then : + break +fi +done +if ${ac_cv_search_GEOSDelaunayTriangulation+:} false; then : + +else + ac_cv_search_GEOSDelaunayTriangulation=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_GEOSDelaunayTriangulation" >&5 +$as_echo "$ac_cv_search_GEOSDelaunayTriangulation" >&6; } +ac_res=$ac_cv_search_GEOSDelaunayTriangulation +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + +else + as_fn_error $? "'libgeos_c' (>= v.3.4.0) is required but it doesn't seem to be installed on this system." "$LINENO" 5 +fi + + $as_echo "#define GEOS_ADVANCED 1" >>confdefs.h + + fi + + #----------------------------------------------------------------------- + # --enable-lwgeom + # + # Check whether --enable-lwgeom was given. +if test "${enable_lwgeom+set}" = set; then : + enableval=$enable_lwgeom; +else + enable_lwgeom=no +fi + + if test x"$enable_lwgeom" != "xno"; then + for ac_header in liblwgeom.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "liblwgeom.h" "ac_cv_header_liblwgeom_h" "$ac_includes_default" +if test "x$ac_cv_header_liblwgeom_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_LIBLWGEOM_H 1 +_ACEOF + +else + as_fn_error $? "cannot find liblwgeom.h, bailing out" "$LINENO" 5 +fi + +done + + _save_libs="$LIBS" + LIBS=$LIBS' -llwgeom -lgeos_c' + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +int main() { return lwgeom_make_valid(); return 0; } + void lwgeom_init_allocators(void) { return; } +_ACEOF +if ac_fn_c_try_link "$LINENO"; then : + $as_echo "#define ENABLE_LWGEOM 1" >>confdefs.h + +else + as_fn_error $? "'liblwgeom' doesn't seem to be installed on this system; unsupported lwgeom_make_valid()." "$LINENO" 5 +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LIBS="$_save_libs" + LIBS=$LIBS' -llwgeom -lgeos_c' + # + # testing for PostGIS 2.1 - lwgeom_set_handlers + # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing lwgeom_set_handlers" >&5 +$as_echo_n "checking for library containing lwgeom_set_handlers... " >&6; } +if ${ac_cv_search_lwgeom_set_handlers+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_func_search_save_LIBS=$LIBS +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +/* Override any GCC internal prototype to avoid an error. + Use char because int might match the return type of a GCC + builtin and then its argument prototype would still apply. */ +#ifdef __cplusplus +extern "C" +#endif +char lwgeom_set_handlers (); +int +main () +{ +return lwgeom_set_handlers (); + ; + return 0; +} +_ACEOF +for ac_lib in '' geos_c; do + if test -z "$ac_lib"; then + ac_res="none required" + else + ac_res=-l$ac_lib + LIBS="-l$ac_lib $ac_func_search_save_LIBS" + fi + if ac_fn_c_try_link "$LINENO"; then : + ac_cv_search_lwgeom_set_handlers=$ac_res +fi +rm -f core conftest.err conftest.$ac_objext \ + conftest$ac_exeext + if ${ac_cv_search_lwgeom_set_handlers+:} false; then : + break +fi +done +if ${ac_cv_search_lwgeom_set_handlers+:} false; then : + +else + ac_cv_search_lwgeom_set_handlers=no +fi +rm conftest.$ac_ext +LIBS=$ac_func_search_save_LIBS +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_lwgeom_set_handlers" >&5 +$as_echo "$ac_cv_search_lwgeom_set_handlers" >&6; } +ac_res=$ac_cv_search_lwgeom_set_handlers +if test "$ac_res" != no; then : + test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" + $as_echo "#define POSTGIS_2_1 1" >>confdefs.h + +fi + + fi +else + $as_echo "#define OMIT_GEOS 1" >>confdefs.h + +fi + +#----------------------------------------------------------------------- +# --enable-libxml2 +# +# Check whether --enable-libxml2 was given. +if test "${enable_libxml2+set}" = set; then : + enableval=$enable_libxml2; +else + enable_libxml2=yes +fi + +if test x"$enable_libxml2" != "xno"; then + + + + + + + +if test "x$ac_cv_env_PKG_CONFIG_set" != "xset"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}pkg-config", so it can be a program name with args. +set dummy ${ac_tool_prefix}pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG +if test -n "$PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PKG_CONFIG" >&5 +$as_echo "$PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_path_PKG_CONFIG"; then + ac_pt_PKG_CONFIG=$PKG_CONFIG + # Extract the first word of "pkg-config", so it can be a program name with args. +set dummy pkg-config; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_path_ac_pt_PKG_CONFIG+:} false; then : + $as_echo_n "(cached) " >&6 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # Let the user override the test with a path. + ;; + *) + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG +if test -n "$ac_pt_PKG_CONFIG"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_pt_PKG_CONFIG" >&5 +$as_echo "$ac_pt_PKG_CONFIG" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_pt_PKG_CONFIG" = x; then + PKG_CONFIG="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + PKG_CONFIG=$ac_pt_PKG_CONFIG + fi +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + +fi +if test -n "$PKG_CONFIG"; then + _pkg_min_version=0.9.0 + { $as_echo "$as_me:${as_lineno-$LINENO}: checking pkg-config is at least version $_pkg_min_version" >&5 +$as_echo_n "checking pkg-config is at least version $_pkg_min_version... " >&6; } + if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + PKG_CONFIG="" + fi +fi + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for LIBXML2" >&5 +$as_echo_n "checking for LIBXML2... " >&6; } + +if test -n "$LIBXML2_CFLAGS"; then + pkg_cv_LIBXML2_CFLAGS="$LIBXML2_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libxml-2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBXML2_CFLAGS=`$PKG_CONFIG --cflags "libxml-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$LIBXML2_LIBS"; then + pkg_cv_LIBXML2_LIBS="$LIBXML2_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"libxml-2.0\""; } >&5 + ($PKG_CONFIG --exists --print-errors "libxml-2.0") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_LIBXML2_LIBS=`$PKG_CONFIG --libs "libxml-2.0" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + LIBXML2_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "libxml-2.0" 2>&1` + else + LIBXML2_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "libxml-2.0" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$LIBXML2_PKG_ERRORS" >&5 + + as_fn_error $? "'libxml2' is required but it doesn't seem to be installed on this system." "$LINENO" 5 +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + as_fn_error $? "'libxml2' is required but it doesn't seem to be installed on this system." "$LINENO" 5 +else + LIBXML2_CFLAGS=$pkg_cv_LIBXML2_CFLAGS + LIBXML2_LIBS=$pkg_cv_LIBXML2_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + +fi + + + $as_echo "#define ENABLE_LIBXML2 1" >>confdefs.h + +fi + +#----------------------------------------------------------------------- +# --enable-geopackage +# +# Check whether --enable-geopackage was given. +if test "${enable_geopackage+set}" = set; then : + enableval=$enable_geopackage; +else + enable_geopackage=yes +fi + +if test x"$enable_geopackage" != "xno"; then + $as_echo "#define ENABLE_GEOPACKAGE 1" >>confdefs.h + +fi + if test x"$enable_geopackage" == "xyes"; then + ENABLE_GEOPACKAGE_TRUE= + ENABLE_GEOPACKAGE_FALSE='#' +else + ENABLE_GEOPACKAGE_TRUE='#' + ENABLE_GEOPACKAGE_FALSE= +fi + + +#----------------------------------------------------------------------- + +#----------------------------------------------------------------------- +# --enable-gcov +# +# Check whether --enable-gcov was given. +if test "${enable_gcov+set}" = set; then : + enableval=$enable_gcov; +fi + +if test "x$enable_gcov" = "xyes"; then + CFLAGS=$CFLAGS" -fprofile-arcs -ftest-coverage -g" + GCOV_FLAGS="-lgcov" +fi +#----------------------------------------------------------------------- + +#----------------------------------------------------------------------- +# --enable-examples +# +# Check whether --enable-examples was given. +if test "${enable_examples+set}" = set; then : + enableval=$enable_examples; +else + enable_examples=yes +fi + + if test x"$enable_examples" != "xno"; then + ENABLE_EXAMPLES_TRUE= + ENABLE_EXAMPLES_FALSE='#' +else + ENABLE_EXAMPLES_TRUE='#' + ENABLE_EXAMPLES_FALSE= +fi + +#----------------------------------------------------------------------- + +# Checking for MinGW + if test "$target_alias" = "mingw32"; then + MINGW_TRUE= + MINGW_FALSE='#' +else + MINGW_TRUE='#' + MINGW_FALSE= +fi + +# Checking for Mac OsX + if test "$target_alias" = "macosx"; then + MACOSX_TRUE= + MACOSX_FALSE='#' +else + MACOSX_TRUE='#' + MACOSX_FALSE= +fi + +# Checking for Android + if test "$target_alias" = "android"; then + ANDROID_TRUE= + ANDROID_FALSE='#' +else + ANDROID_TRUE='#' + ANDROID_FALSE= +fi + + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then + as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCXX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_GEOPACKAGE_TRUE}" && test -z "${ENABLE_GEOPACKAGE_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_GEOPACKAGE\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ENABLE_EXAMPLES_TRUE}" && test -z "${ENABLE_EXAMPLES_FALSE}"; then + as_fn_error $? "conditional \"ENABLE_EXAMPLES\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MINGW_TRUE}" && test -z "${MINGW_FALSE}"; then + as_fn_error $? "conditional \"MINGW\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${MACOSX_TRUE}" && test -z "${MACOSX_FALSE}"; then + as_fn_error $? "conditional \"MACOSX\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${ANDROID_TRUE}" && test -z "${ANDROID_FALSE}"; then + as_fn_error $? "conditional \"ANDROID\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by libspatialite $as_me 4.2.0, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +libspatialite config.status 4.2.0 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +AS='`$ECHO "$AS" | $SED "$delay_single_quote_subst"`' +DLLTOOL='`$ECHO "$DLLTOOL" | $SED "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +lt_cv_to_host_file_cmd='`$ECHO "$lt_cv_to_host_file_cmd" | $SED "$delay_single_quote_subst"`' +lt_cv_to_tool_file_cmd='`$ECHO "$lt_cv_to_tool_file_cmd" | $SED "$delay_single_quote_subst"`' +reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +file_magic_glob='`$ECHO "$file_magic_glob" | $SED "$delay_single_quote_subst"`' +want_nocaseglob='`$ECHO "$want_nocaseglob" | $SED "$delay_single_quote_subst"`' +sharedlib_from_linklib_cmd='`$ECHO "$sharedlib_from_linklib_cmd" | $SED "$delay_single_quote_subst"`' +AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +archiver_list_spec='`$ECHO "$archiver_list_spec" | $SED "$delay_single_quote_subst"`' +STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +nm_file_list_spec='`$ECHO "$nm_file_list_spec" | $SED "$delay_single_quote_subst"`' +lt_sysroot='`$ECHO "$lt_sysroot" | $SED "$delay_single_quote_subst"`' +objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +MANIFEST_TOOL='`$ECHO "$MANIFEST_TOOL" | $SED "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +postlink_cmds='`$ECHO "$postlink_cmds" | $SED "$delay_single_quote_subst"`' +file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs='`$ECHO "$compiler_lib_search_dirs" | $SED "$delay_single_quote_subst"`' +predep_objects='`$ECHO "$predep_objects" | $SED "$delay_single_quote_subst"`' +postdep_objects='`$ECHO "$postdep_objects" | $SED "$delay_single_quote_subst"`' +predeps='`$ECHO "$predeps" | $SED "$delay_single_quote_subst"`' +postdeps='`$ECHO "$postdeps" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path='`$ECHO "$compiler_lib_search_path" | $SED "$delay_single_quote_subst"`' +LD_CXX='`$ECHO "$LD_CXX" | $SED "$delay_single_quote_subst"`' +reload_flag_CXX='`$ECHO "$reload_flag_CXX" | $SED "$delay_single_quote_subst"`' +reload_cmds_CXX='`$ECHO "$reload_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_cmds_CXX='`$ECHO "$old_archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +compiler_CXX='`$ECHO "$compiler_CXX" | $SED "$delay_single_quote_subst"`' +GCC_CXX='`$ECHO "$GCC_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_no_builtin_flag_CXX='`$ECHO "$lt_prog_compiler_no_builtin_flag_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_pic_CXX='`$ECHO "$lt_prog_compiler_pic_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_wl_CXX='`$ECHO "$lt_prog_compiler_wl_CXX" | $SED "$delay_single_quote_subst"`' +lt_prog_compiler_static_CXX='`$ECHO "$lt_prog_compiler_static_CXX" | $SED "$delay_single_quote_subst"`' +lt_cv_prog_compiler_c_o_CXX='`$ECHO "$lt_cv_prog_compiler_c_o_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_need_lc_CXX='`$ECHO "$archive_cmds_need_lc_CXX" | $SED "$delay_single_quote_subst"`' +enable_shared_with_static_runtimes_CXX='`$ECHO "$enable_shared_with_static_runtimes_CXX" | $SED "$delay_single_quote_subst"`' +export_dynamic_flag_spec_CXX='`$ECHO "$export_dynamic_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +whole_archive_flag_spec_CXX='`$ECHO "$whole_archive_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +compiler_needs_object_CXX='`$ECHO "$compiler_needs_object_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_new_cmds_CXX='`$ECHO "$old_archive_from_new_cmds_CXX" | $SED "$delay_single_quote_subst"`' +old_archive_from_expsyms_cmds_CXX='`$ECHO "$old_archive_from_expsyms_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_cmds_CXX='`$ECHO "$archive_cmds_CXX" | $SED "$delay_single_quote_subst"`' +archive_expsym_cmds_CXX='`$ECHO "$archive_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_cmds_CXX='`$ECHO "$module_cmds_CXX" | $SED "$delay_single_quote_subst"`' +module_expsym_cmds_CXX='`$ECHO "$module_expsym_cmds_CXX" | $SED "$delay_single_quote_subst"`' +with_gnu_ld_CXX='`$ECHO "$with_gnu_ld_CXX" | $SED "$delay_single_quote_subst"`' +allow_undefined_flag_CXX='`$ECHO "$allow_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +no_undefined_flag_CXX='`$ECHO "$no_undefined_flag_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_CXX='`$ECHO "$hardcode_libdir_flag_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_flag_spec_ld_CXX='`$ECHO "$hardcode_libdir_flag_spec_ld_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_libdir_separator_CXX='`$ECHO "$hardcode_libdir_separator_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_CXX='`$ECHO "$hardcode_direct_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_direct_absolute_CXX='`$ECHO "$hardcode_direct_absolute_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_minus_L_CXX='`$ECHO "$hardcode_minus_L_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_shlibpath_var_CXX='`$ECHO "$hardcode_shlibpath_var_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_automatic_CXX='`$ECHO "$hardcode_automatic_CXX" | $SED "$delay_single_quote_subst"`' +inherit_rpath_CXX='`$ECHO "$inherit_rpath_CXX" | $SED "$delay_single_quote_subst"`' +link_all_deplibs_CXX='`$ECHO "$link_all_deplibs_CXX" | $SED "$delay_single_quote_subst"`' +always_export_symbols_CXX='`$ECHO "$always_export_symbols_CXX" | $SED "$delay_single_quote_subst"`' +export_symbols_cmds_CXX='`$ECHO "$export_symbols_cmds_CXX" | $SED "$delay_single_quote_subst"`' +exclude_expsyms_CXX='`$ECHO "$exclude_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +include_expsyms_CXX='`$ECHO "$include_expsyms_CXX" | $SED "$delay_single_quote_subst"`' +prelink_cmds_CXX='`$ECHO "$prelink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +postlink_cmds_CXX='`$ECHO "$postlink_cmds_CXX" | $SED "$delay_single_quote_subst"`' +file_list_spec_CXX='`$ECHO "$file_list_spec_CXX" | $SED "$delay_single_quote_subst"`' +hardcode_action_CXX='`$ECHO "$hardcode_action_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_dirs_CXX='`$ECHO "$compiler_lib_search_dirs_CXX" | $SED "$delay_single_quote_subst"`' +predep_objects_CXX='`$ECHO "$predep_objects_CXX" | $SED "$delay_single_quote_subst"`' +postdep_objects_CXX='`$ECHO "$postdep_objects_CXX" | $SED "$delay_single_quote_subst"`' +predeps_CXX='`$ECHO "$predeps_CXX" | $SED "$delay_single_quote_subst"`' +postdeps_CXX='`$ECHO "$postdeps_CXX" | $SED "$delay_single_quote_subst"`' +compiler_lib_search_path_CXX='`$ECHO "$compiler_lib_search_path_CXX" | $SED "$delay_single_quote_subst"`' + +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in AS \ +DLLTOOL \ +OBJDUMP \ +SHELL \ +ECHO \ +SED \ +GREP \ +EGREP \ +FGREP \ +LD \ +NM \ +LN_S \ +lt_SP2NL \ +lt_NL2SP \ +reload_flag \ +deplibs_check_method \ +file_magic_cmd \ +file_magic_glob \ +want_nocaseglob \ +sharedlib_from_linklib_cmd \ +AR \ +AR_FLAGS \ +archiver_list_spec \ +STRIP \ +RANLIB \ +CC \ +CFLAGS \ +compiler \ +lt_cv_sys_global_symbol_pipe \ +lt_cv_sys_global_symbol_to_cdecl \ +lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +nm_file_list_spec \ +lt_prog_compiler_no_builtin_flag \ +lt_prog_compiler_pic \ +lt_prog_compiler_wl \ +lt_prog_compiler_static \ +lt_cv_prog_compiler_c_o \ +need_locks \ +MANIFEST_TOOL \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ +shrext_cmds \ +export_dynamic_flag_spec \ +whole_archive_flag_spec \ +compiler_needs_object \ +with_gnu_ld \ +allow_undefined_flag \ +no_undefined_flag \ +hardcode_libdir_flag_spec \ +hardcode_libdir_flag_spec_ld \ +hardcode_libdir_separator \ +exclude_expsyms \ +include_expsyms \ +file_list_spec \ +variables_saved_for_relink \ +libname_spec \ +library_names_spec \ +soname_spec \ +install_override_mode \ +finish_eval \ +old_striplib \ +striplib \ +compiler_lib_search_dirs \ +predep_objects \ +postdep_objects \ +predeps \ +postdeps \ +compiler_lib_search_path \ +LD_CXX \ +reload_flag_CXX \ +compiler_CXX \ +lt_prog_compiler_no_builtin_flag_CXX \ +lt_prog_compiler_pic_CXX \ +lt_prog_compiler_wl_CXX \ +lt_prog_compiler_static_CXX \ +lt_cv_prog_compiler_c_o_CXX \ +export_dynamic_flag_spec_CXX \ +whole_archive_flag_spec_CXX \ +compiler_needs_object_CXX \ +with_gnu_ld_CXX \ +allow_undefined_flag_CXX \ +no_undefined_flag_CXX \ +hardcode_libdir_flag_spec_CXX \ +hardcode_libdir_flag_spec_ld_CXX \ +hardcode_libdir_separator_CXX \ +exclude_expsyms_CXX \ +include_expsyms_CXX \ +file_list_spec_CXX \ +compiler_lib_search_dirs_CXX \ +predep_objects_CXX \ +postdep_objects_CXX \ +predeps_CXX \ +postdeps_CXX \ +compiler_lib_search_path_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in reload_cmds \ +old_postinstall_cmds \ +old_postuninstall_cmds \ +old_archive_cmds \ +extract_expsyms_cmds \ +old_archive_from_new_cmds \ +old_archive_from_expsyms_cmds \ +archive_cmds \ +archive_expsym_cmds \ +module_cmds \ +module_expsym_cmds \ +export_symbols_cmds \ +prelink_cmds \ +postlink_cmds \ +postinstall_cmds \ +postuninstall_cmds \ +finish_cmds \ +sys_lib_search_path_spec \ +sys_lib_dlsearch_path_spec \ +reload_cmds_CXX \ +old_archive_cmds_CXX \ +old_archive_from_new_cmds_CXX \ +old_archive_from_expsyms_cmds_CXX \ +archive_cmds_CXX \ +archive_expsym_cmds_CXX \ +module_cmds_CXX \ +module_expsym_cmds_CXX \ +export_symbols_cmds_CXX \ +prelink_cmds_CXX \ +postlink_cmds_CXX; do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[\\\\\\\`\\"\\\$]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +ac_aux_dir='$ac_aux_dir' +xsi_shell='$xsi_shell' +lt_shell_append='$lt_shell_append' + +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + + + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile' + + + + + + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "src/Makefile") CONFIG_FILES="$CONFIG_FILES src/Makefile" ;; + "src/headers/Makefile") CONFIG_FILES="$CONFIG_FILES src/headers/Makefile" ;; + "src/gaiaaux/Makefile") CONFIG_FILES="$CONFIG_FILES src/gaiaaux/Makefile" ;; + "src/gaiaexif/Makefile") CONFIG_FILES="$CONFIG_FILES src/gaiaexif/Makefile" ;; + "src/gaiageo/Makefile") CONFIG_FILES="$CONFIG_FILES src/gaiageo/Makefile" ;; + "src/gaiageo/flex/Makefile") CONFIG_FILES="$CONFIG_FILES src/gaiageo/flex/Makefile" ;; + "src/gaiageo/lemon/Makefile") CONFIG_FILES="$CONFIG_FILES src/gaiageo/lemon/Makefile" ;; + "src/gaiageo/lemon/lemon_src/Makefile") CONFIG_FILES="$CONFIG_FILES src/gaiageo/lemon/lemon_src/Makefile" ;; + "src/geopackage/Makefile") CONFIG_FILES="$CONFIG_FILES src/geopackage/Makefile" ;; + "src/spatialite/Makefile") CONFIG_FILES="$CONFIG_FILES src/spatialite/Makefile" ;; + "src/shapefiles/Makefile") CONFIG_FILES="$CONFIG_FILES src/shapefiles/Makefile" ;; + "src/dxf/Makefile") CONFIG_FILES="$CONFIG_FILES src/dxf/Makefile" ;; + "src/md5/Makefile") CONFIG_FILES="$CONFIG_FILES src/md5/Makefile" ;; + "src/srsinit/Makefile") CONFIG_FILES="$CONFIG_FILES src/srsinit/Makefile" ;; + "src/srsinit/epsg_update/Makefile") CONFIG_FILES="$CONFIG_FILES src/srsinit/epsg_update/Makefile" ;; + "src/connection_cache/Makefile") CONFIG_FILES="$CONFIG_FILES src/connection_cache/Makefile" ;; + "src/connection_cache/generator/Makefile") CONFIG_FILES="$CONFIG_FILES src/connection_cache/generator/Makefile" ;; + "src/virtualtext/Makefile") CONFIG_FILES="$CONFIG_FILES src/virtualtext/Makefile" ;; + "src/wfs/Makefile") CONFIG_FILES="$CONFIG_FILES src/wfs/Makefile" ;; + "test/Makefile") CONFIG_FILES="$CONFIG_FILES test/Makefile" ;; + "test/sql_stmt_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_tests/Makefile" ;; + "test/sql_stmt_geos_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_geos_tests/Makefile" ;; + "test/sql_stmt_geosadvanced_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_geosadvanced_tests/Makefile" ;; + "test/sql_stmt_geopackage_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_geopackage_tests/Makefile" ;; + "test/sql_stmt_proj_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_proj_tests/Makefile" ;; + "test/sql_stmt_mathsql_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_mathsql_tests/Makefile" ;; + "test/sql_stmt_lwgeom_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_lwgeom_tests/Makefile" ;; + "test/sql_stmt_libxml2_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_libxml2_tests/Makefile" ;; + "test/sql_stmt_security_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_security_tests/Makefile" ;; + "test/sql_stmt_xmlsec_tests/Makefile") CONFIG_FILES="$CONFIG_FILES test/sql_stmt_xmlsec_tests/Makefile" ;; + "examples/Makefile") CONFIG_FILES="$CONFIG_FILES examples/Makefile" ;; + "Doxyfile") CONFIG_FILES="$CONFIG_FILES Doxyfile" ;; + "spatialite.pc") CONFIG_FILES="$CONFIG_FILES spatialite.pc" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + "libtool":C) + + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, +# Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + +# The names of the tagged configurations supported by this script. +available_tags="CXX " + +# ### BEGIN LIBTOOL CONFIG + +# Assembler program. +AS=$lt_AS + +# DLL creation program. +DLLTOOL=$lt_DLLTOOL + +# Object dumper program. +OBJDUMP=$lt_OBJDUMP + +# Which release of libtool.m4 was used? +macro_version=$macro_version +macro_revision=$macro_revision + +# Whether or not to build shared libraries. +build_libtool_libs=$enable_shared + +# Whether or not to build static libraries. +build_old_libs=$enable_static + +# What type of objects to build. +pic_mode=$pic_mode + +# Whether or not to optimize for fast installation. +fast_install=$enable_fast_install + +# Shell to use when invoking shell scripts. +SHELL=$lt_SHELL + +# An echo program that protects backslashes. +ECHO=$lt_ECHO + +# The host system. +host_alias=$host_alias +host=$host +host_os=$host_os + +# The build system. +build_alias=$build_alias +build=$build +build_os=$build_os + +# A sed program that does not truncate output. +SED=$lt_SED + +# Sed that helps us avoid accidentally triggering echo(1) options like -n. +Xsed="\$SED -e 1s/^X//" + +# A grep program that handles long lines. +GREP=$lt_GREP + +# An ERE matcher. +EGREP=$lt_EGREP + +# A literal string matcher. +FGREP=$lt_FGREP + +# A BSD- or MS-compatible name lister. +NM=$lt_NM + +# Whether we need soft or hard links. +LN_S=$lt_LN_S + +# What is the maximum length of a command? +max_cmd_len=$max_cmd_len + +# Object file suffix (normally "o"). +objext=$ac_objext + +# Executable file suffix (normally ""). +exeext=$exeext + +# whether the shell understands "unset". +lt_unset=$lt_unset + +# turn spaces into newlines. +SP2NL=$lt_lt_SP2NL + +# turn newlines into spaces. +NL2SP=$lt_lt_NL2SP + +# convert \$build file names to \$host format. +to_host_file_cmd=$lt_cv_to_host_file_cmd + +# convert \$build files to toolchain format. +to_tool_file_cmd=$lt_cv_to_tool_file_cmd + +# Method to check whether dependent libraries are shared objects. +deplibs_check_method=$lt_deplibs_check_method + +# Command to use when deplibs_check_method = "file_magic". +file_magic_cmd=$lt_file_magic_cmd + +# How to find potential files when deplibs_check_method = "file_magic". +file_magic_glob=$lt_file_magic_glob + +# Find potential files using nocaseglob when deplibs_check_method = "file_magic". +want_nocaseglob=$lt_want_nocaseglob + +# Command to associate shared and link libraries. +sharedlib_from_linklib_cmd=$lt_sharedlib_from_linklib_cmd + +# The archiver. +AR=$lt_AR + +# Flags to create an archive. +AR_FLAGS=$lt_AR_FLAGS + +# How to feed a file listing to the archiver. +archiver_list_spec=$lt_archiver_list_spec + +# A symbol stripping program. +STRIP=$lt_STRIP + +# Commands used to install an old-style archive. +RANLIB=$lt_RANLIB +old_postinstall_cmds=$lt_old_postinstall_cmds +old_postuninstall_cmds=$lt_old_postuninstall_cmds + +# Whether to use a lock for old archive extraction. +lock_old_archive_extraction=$lock_old_archive_extraction + +# A C compiler. +LTCC=$lt_CC + +# LTCC compiler flags. +LTCFLAGS=$lt_CFLAGS + +# Take the output of nm and produce a listing of raw symbols and C names. +global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe + +# Transform the output of nm in a proper C declaration. +global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl + +# Transform the output of nm in a C name address pair. +global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address + +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + +# Specify filename containing input files for \$NM. +nm_file_list_spec=$lt_nm_file_list_spec + +# The root where to search for dependent libraries,and in which our libraries should be installed. +lt_sysroot=$lt_sysroot + +# The name of the directory that contains temporary libtool files. +objdir=$objdir + +# Used to examine libraries when file_magic_cmd begins with "file". +MAGIC_CMD=$MAGIC_CMD + +# Must we lock files when doing compilation? +need_locks=$lt_need_locks + +# Manifest tool. +MANIFEST_TOOL=$lt_MANIFEST_TOOL + +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + +# Old archive suffix (normally "a"). +libext=$libext + +# Shared library suffix (normally ".so"). +shrext_cmds=$lt_shrext_cmds + +# The commands to extract the exported symbol list from a shared archive. +extract_expsyms_cmds=$lt_extract_expsyms_cmds + +# Variables whose values should be saved in libtool wrapper scripts and +# restored at link time. +variables_saved_for_relink=$lt_variables_saved_for_relink + +# Do we need the "lib" prefix for modules? +need_lib_prefix=$need_lib_prefix + +# Do we need a version for libraries? +need_version=$need_version + +# Library versioning type. +version_type=$version_type + +# Shared library runtime path variable. +runpath_var=$runpath_var + +# Shared library path variable. +shlibpath_var=$shlibpath_var + +# Is shlibpath searched before the hard-coded library search path? +shlibpath_overrides_runpath=$shlibpath_overrides_runpath + +# Format of library name prefix. +libname_spec=$lt_libname_spec + +# List of archive names. First name is the real one, the rest are links. +# The last name is the one that the linker finds with -lNAME +library_names_spec=$lt_library_names_spec + +# The coded name of the library, if different from the real name. +soname_spec=$lt_soname_spec + +# Permission mode override for installation of shared libraries. +install_override_mode=$lt_install_override_mode + +# Command to use after installation of a shared archive. +postinstall_cmds=$lt_postinstall_cmds + +# Command to use after uninstallation of a shared archive. +postuninstall_cmds=$lt_postuninstall_cmds + +# Commands used to finish a libtool library installation in a directory. +finish_cmds=$lt_finish_cmds + +# As "finish_cmds", except a single script fragment to be evaled but +# not shown. +finish_eval=$lt_finish_eval + +# Whether we should hardcode library paths into libraries. +hardcode_into_libs=$hardcode_into_libs + +# Compile-time system search path for libraries. +sys_lib_search_path_spec=$lt_sys_lib_search_path_spec + +# Run-time system search path for libraries. +sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec + +# Whether dlopen is supported. +dlopen_support=$enable_dlopen + +# Whether dlopen of programs is supported. +dlopen_self=$enable_dlopen_self + +# Whether dlopen of statically linked programs is supported. +dlopen_self_static=$enable_dlopen_self_static + +# Commands to strip libraries. +old_striplib=$lt_old_striplib +striplib=$lt_striplib + + +# The linker used to build libraries. +LD=$lt_LD + +# How to create reloadable object files. +reload_flag=$lt_reload_flag +reload_cmds=$lt_reload_cmds + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds + +# A language specific compiler. +CC=$lt_compiler + +# Is the compiler the GNU compiler? +with_gcc=$GCC + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds +archive_expsym_cmds=$lt_archive_expsym_cmds + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds +module_expsym_cmds=$lt_module_expsym_cmds + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects +postdep_objects=$lt_postdep_objects +predeps=$lt_predeps +postdeps=$lt_postdeps + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path + +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + +ltmain="$ac_aux_dir/ltmain.sh" + + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + if test x"$xsi_shell" = xyes; then + sed -e '/^func_dirname ()$/,/^} # func_dirname /c\ +func_dirname ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +} # Extended-shell func_dirname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_basename ()$/,/^} # func_basename /c\ +func_basename ()\ +{\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_dirname_and_basename ()$/,/^} # func_dirname_and_basename /c\ +func_dirname_and_basename ()\ +{\ +\ case ${1} in\ +\ */*) func_dirname_result="${1%/*}${2}" ;;\ +\ * ) func_dirname_result="${3}" ;;\ +\ esac\ +\ func_basename_result="${1##*/}"\ +} # Extended-shell func_dirname_and_basename implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_stripname ()$/,/^} # func_stripname /c\ +func_stripname ()\ +{\ +\ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are\ +\ # positional parameters, so assign one to ordinary parameter first.\ +\ func_stripname_result=${3}\ +\ func_stripname_result=${func_stripname_result#"${1}"}\ +\ func_stripname_result=${func_stripname_result%"${2}"}\ +} # Extended-shell func_stripname implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_long_opt ()$/,/^} # func_split_long_opt /c\ +func_split_long_opt ()\ +{\ +\ func_split_long_opt_name=${1%%=*}\ +\ func_split_long_opt_arg=${1#*=}\ +} # Extended-shell func_split_long_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_split_short_opt ()$/,/^} # func_split_short_opt /c\ +func_split_short_opt ()\ +{\ +\ func_split_short_opt_arg=${1#??}\ +\ func_split_short_opt_name=${1%"$func_split_short_opt_arg"}\ +} # Extended-shell func_split_short_opt implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_lo2o ()$/,/^} # func_lo2o /c\ +func_lo2o ()\ +{\ +\ case ${1} in\ +\ *.lo) func_lo2o_result=${1%.lo}.${objext} ;;\ +\ *) func_lo2o_result=${1} ;;\ +\ esac\ +} # Extended-shell func_lo2o implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_xform ()$/,/^} # func_xform /c\ +func_xform ()\ +{\ + func_xform_result=${1%.*}.lo\ +} # Extended-shell func_xform implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_arith ()$/,/^} # func_arith /c\ +func_arith ()\ +{\ + func_arith_result=$(( $* ))\ +} # Extended-shell func_arith implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_len ()$/,/^} # func_len /c\ +func_len ()\ +{\ + func_len_result=${#1}\ +} # Extended-shell func_len implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + +fi + +if test x"$lt_shell_append" = xyes; then + sed -e '/^func_append ()$/,/^} # func_append /c\ +func_append ()\ +{\ + eval "${1}+=\\${2}"\ +} # Extended-shell func_append implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + sed -e '/^func_append_quoted ()$/,/^} # func_append_quoted /c\ +func_append_quoted ()\ +{\ +\ func_quote_for_eval "${2}"\ +\ eval "${1}+=\\\\ \\$func_quote_for_eval_result"\ +} # Extended-shell func_append_quoted implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: + + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([a-zA-Z_]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Unable to substitute extended shell functions in $ofile" >&5 +$as_echo "$as_me: WARNING: Unable to substitute extended shell functions in $ofile" >&2;} +fi + + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" + + + cat <<_LT_EOF >> "$ofile" + +# ### BEGIN LIBTOOL TAG CONFIG: CXX + +# The linker used to build libraries. +LD=$lt_LD_CXX + +# How to create reloadable object files. +reload_flag=$lt_reload_flag_CXX +reload_cmds=$lt_reload_cmds_CXX + +# Commands used to build an old-style archive. +old_archive_cmds=$lt_old_archive_cmds_CXX + +# A language specific compiler. +CC=$lt_compiler_CXX + +# Is the compiler the GNU compiler? +with_gcc=$GCC_CXX + +# Compiler flag to turn off builtin functions. +no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX + +# Additional compiler flags for building library objects. +pic_flag=$lt_lt_prog_compiler_pic_CXX + +# How to pass a linker flag through the compiler. +wl=$lt_lt_prog_compiler_wl_CXX + +# Compiler flag to prevent dynamic linking. +link_static_flag=$lt_lt_prog_compiler_static_CXX + +# Does compiler simultaneously support -c and -o options? +compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX + +# Whether or not to add -lc for building shared libraries. +build_libtool_need_lc=$archive_cmds_need_lc_CXX + +# Whether or not to disallow shared libs when runtime libs are static. +allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX + +# Compiler flag to allow reflexive dlopens. +export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX + +# Compiler flag to generate shared objects directly from archives. +whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX + +# Whether the compiler copes with passing no objects directly. +compiler_needs_object=$lt_compiler_needs_object_CXX + +# Create an old-style archive from a shared archive. +old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX + +# Create a temporary old-style archive to link instead of a shared archive. +old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX + +# Commands used to build a shared archive. +archive_cmds=$lt_archive_cmds_CXX +archive_expsym_cmds=$lt_archive_expsym_cmds_CXX + +# Commands used to build a loadable module if different from building +# a shared archive. +module_cmds=$lt_module_cmds_CXX +module_expsym_cmds=$lt_module_expsym_cmds_CXX + +# Whether we are building with GNU ld or not. +with_gnu_ld=$lt_with_gnu_ld_CXX + +# Flag that allows shared libraries with undefined symbols to be built. +allow_undefined_flag=$lt_allow_undefined_flag_CXX + +# Flag that enforces no undefined symbols. +no_undefined_flag=$lt_no_undefined_flag_CXX + +# Flag to hardcode \$libdir into a binary during linking. +# This must work even if \$libdir does not exist +hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec_CXX + +# If ld is used when linking, flag to hardcode \$libdir into a binary +# during linking. This must work even if \$libdir does not exist. +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld_CXX + +# Whether we need a single "-rpath" flag with a separated argument. +hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary. +hardcode_direct=$hardcode_direct_CXX + +# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +# DIR into the resulting binary and the resulting library dependency is +# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +# library is relocated. +hardcode_direct_absolute=$hardcode_direct_absolute_CXX + +# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +# into the resulting binary. +hardcode_minus_L=$hardcode_minus_L_CXX + +# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +# into the resulting binary. +hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX + +# Set to "yes" if building a shared library automatically hardcodes DIR +# into the library and all subsequent libraries and executables linked +# against it. +hardcode_automatic=$hardcode_automatic_CXX + +# Set to yes if linker adds runtime paths of dependent libraries +# to runtime path list. +inherit_rpath=$inherit_rpath_CXX + +# Whether libtool must link a program against all its dependency libraries. +link_all_deplibs=$link_all_deplibs_CXX + +# Set to "yes" if exported symbols are required. +always_export_symbols=$always_export_symbols_CXX + +# The commands to list exported symbols. +export_symbols_cmds=$lt_export_symbols_cmds_CXX + +# Symbols that should not be listed in the preloaded symbols. +exclude_expsyms=$lt_exclude_expsyms_CXX + +# Symbols that must always be exported. +include_expsyms=$lt_include_expsyms_CXX + +# Commands necessary for linking programs (against libraries) with templates. +prelink_cmds=$lt_prelink_cmds_CXX + +# Commands necessary for finishing linking programs. +postlink_cmds=$lt_postlink_cmds_CXX + +# Specify filename containing input files. +file_list_spec=$lt_file_list_spec_CXX + +# How to hardcode a shared library path into an executable. +hardcode_action=$hardcode_action_CXX + +# The directories searched by this compiler when creating a shared library. +compiler_lib_search_dirs=$lt_compiler_lib_search_dirs_CXX + +# Dependencies to place before and after the objects being linked to +# create a shared library. +predep_objects=$lt_predep_objects_CXX +postdep_objects=$lt_postdep_objects_CXX +predeps=$lt_predeps_CXX +postdeps=$lt_postdeps_CXX + +# The library search path used internally by the compiler when linking +# a shared library. +compiler_lib_search_path=$lt_compiler_lib_search_path_CXX + +# ### END LIBTOOL TAG CONFIG: CXX +_LT_EOF + + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/src/spatialite/configure.ac b/src/spatialite/configure.ac new file mode 100644 index 0000000..a42cac4 --- /dev/null +++ b/src/spatialite/configure.ac @@ -0,0 +1,367 @@ +# -*- Autoconf -*- +# Process this file with autoconf to produce a configure script. + +AC_PREREQ(2.61) +AC_INIT(libspatialite, 4.2.0, a.furieri@lqt.it) +AC_LANG(C) +AC_CONFIG_MACRO_DIR([m4]) + +AM_INIT_AUTOMAKE([foreign]) +AM_MAINTAINER_MODE +AM_CONFIG_HEADER(config.h) + +# enabling huge-file support (64 bit file pointers) +AH_TEMPLATE([_LARGE_FILE], + [Must be defined in order to enable huge-file support.]) +AC_DEFINE(_LARGE_FILE) +AH_TEMPLATE([_FILE_OFFSET_BITS], + [Must be =64 in order to enable huge-file support.]) +AC_DEFINE(_FILE_OFFSET_BITS, 64) +AH_TEMPLATE([_LARGEFILE_SOURCE], + [Must be defined in order to enable huge-file support.]) +AC_DEFINE(_LARGEFILE_SOURCE) + +# disablibg debug support +AH_TEMPLATE([NDEBUG], + [Must be defined in order to disable debug mode.]) +AC_DEFINE(NDEBUG) + +# config depending options +AH_TEMPLATE([OMIT_GEOS], + [Should be defined in order to disable GEOS support.]) +AH_TEMPLATE([GEOS_ADVANCED], + [Should be defined in order to enable GEOS_ADVANCED support.]) +AH_TEMPLATE([GEOS_TRUNK], + [Should be defined in order to enable GEOS_TRUNK experimental support.]) +AH_TEMPLATE([ENABLE_LWGEOM], + [Should be defined in order to enable LWGEOM support.]) +AH_TEMPLATE([OMIT_PROJ], + [Should be defined in order to disable PROJ.4 support.]) +AH_TEMPLATE([OMIT_ICONV], + [Should be defined in order to disable ICONV support.]) +AH_TEMPLATE([OMIT_MATHSQL], + [Should be defined in order to disable MATHSQL support.]) +AH_TEMPLATE([OMIT_EPSG], + [Should be defined in order to disable EPSG full support.]) +AH_TEMPLATE([OMIT_GEOCALLBACKS], + [Should be defined in order to disable GEOCALLBACKS support.]) +AH_TEMPLATE([OMIT_FREEXL], + [Should be defined in order to disable FREEXL support.]) +AH_TEMPLATE([ENABLE_LIBXML2], + [Should be defined in order to enable LIBXML2 support.]) +AH_TEMPLATE([ENABLE_GEOPACKAGE], + [Should be defined in order to enable GeoPackage support.]) +AH_TEMPLATE([POSTGIS_2_1], + [Should be defined when linking liblwgeom from PostGIS 2.1 (or later).]) +AH_TEMPLATE([TARGET_CPU], + [Should contain a text-string describing the intended target CPU]) + +# Checks for header files. +AC_CHECK_HEADERS(stdlib.h,, [AC_MSG_ERROR([cannot find stdlib.h, bailing out])]) +AC_CHECK_HEADERS(stdio.h,, [AC_MSG_ERROR([cannot find stdio.h, bailing out])]) +AC_CHECK_HEADERS(string.h,, [AC_MSG_ERROR([cannot find string.h, bailing out])]) +AC_CHECK_HEADERS(memory.h,, [AC_MSG_ERROR([cannot find memory.h, bailing out])]) +AC_CHECK_HEADERS(math.h,, [AC_MSG_ERROR([cannot find math.h, bailing out])]) +AC_CHECK_HEADERS(float.h,, [AC_MSG_ERROR([cannot find float.h, bailing out])]) +AC_CHECK_HEADERS(fcntl.h,, [AC_MSG_ERROR([cannot find fcntl.h, bailing out])]) +AC_CHECK_HEADERS(inttypes.h,, [AC_MSG_ERROR([cannot find inttypes.h, bailing out])]) +AC_CHECK_HEADERS(stddef.h,, [AC_MSG_ERROR([cannot find stddef.h, bailing out])]) +AC_CHECK_HEADERS(stdint.h,, [AC_MSG_ERROR([cannot find stdint.h, bailing out])]) +AC_CHECK_HEADERS(sys/time.h,, [AC_MSG_ERROR([cannot find sys/time.h, bailing out])]) +AC_CHECK_HEADERS(unistd.h,, [AC_MSG_ERROR([cannot find unistd.h, bailing out])]) +AC_CHECK_HEADERS(sqlite3.h,, [AC_MSG_ERROR([cannot find sqlite3.h, bailing out])]) +AC_CHECK_HEADERS(sqlite3ext.h,, [AC_MSG_ERROR([cannot find sqlite3ext.h, bailing out])]) +AC_CHECK_HEADERS(zlib.h,, [AC_MSG_ERROR([cannot find zlib.h, bailing out])]) + + +# Checks for programs. +AC_PROG_CXX +AC_PROG_CC +AC_PROG_CPP +AC_PROG_INSTALL +AC_PROG_LN_S +AC_PROG_MAKE_SET +AC_LIBTOOL_WIN32_DLL +AC_PROG_LIBTOOL + +# Checks for typedefs, structures, and compiler characteristics. +AC_C_CONST +AC_TYPE_OFF_T +AC_TYPE_SIZE_T +AC_HEADER_TIME +AC_STRUCT_TM +AC_C_VOLATILE + +# Checks for library functions. +AC_FUNC_LSTAT +AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK +AC_FUNC_MEMCMP +AC_FUNC_STAT +AC_FUNC_STRFTIME +AC_CHECK_FUNCS([memset sqrt strcasecmp strerror strncasecmp strstr fdatasync ftruncate getcwd gettimeofday localtime_r memmove strerror]) + +# Checks for installed libraries +AC_CHECK_LIB(sqlite3,sqlite3_prepare_v2,,AC_MSG_ERROR(['libsqlite3' is required but it doesn't seem to be installed on this system.]),-lm) +AC_CHECK_LIB(z,inflateInit_,,AC_MSG_ERROR(['libz' is required but it doesn't seem to be installed on this system.]),-lm) + +AC_CONFIG_FILES([Makefile \ + src/Makefile \ + src/headers/Makefile \ + src/gaiaaux/Makefile \ + src/gaiaexif/Makefile \ + src/gaiageo/Makefile \ + src/gaiageo/flex/Makefile \ + src/gaiageo/lemon/Makefile \ + src/gaiageo/lemon/lemon_src/Makefile \ + src/geopackage/Makefile \ + src/spatialite/Makefile \ + src/shapefiles/Makefile \ + src/dxf/Makefile \ + src/md5/Makefile \ + src/srsinit/Makefile \ + src/srsinit/epsg_update/Makefile \ + src/connection_cache/Makefile \ + src/connection_cache/generator/Makefile \ + src/virtualtext/Makefile \ + src/wfs/Makefile \ + test/Makefile \ + test/sql_stmt_tests/Makefile \ + test/sql_stmt_geos_tests/Makefile \ + test/sql_stmt_geosadvanced_tests/Makefile \ + test/sql_stmt_geopackage_tests/Makefile \ + test/sql_stmt_proj_tests/Makefile \ + test/sql_stmt_mathsql_tests/Makefile \ + test/sql_stmt_lwgeom_tests/Makefile \ + test/sql_stmt_libxml2_tests/Makefile \ + test/sql_stmt_security_tests/Makefile \ + test/sql_stmt_xmlsec_tests/Makefile \ + examples/Makefile \ + Doxyfile \ + spatialite.pc]) + +# exporting the TARGET_CPU string +splite_cpu=`$CC -dumpmachine` +AC_DEFINE_UNQUOTED([TARGET_CPU], ["$splite_cpu"]) + + +#----------------------------------------------------------------------- +# --enable-mathsql +# +AC_ARG_ENABLE(mathsql, [AS_HELP_STRING( + [--enable-mathsql], [enables SQL math functions [default=yes]])], + [], [enable_mathsql=yes]) +if test x"$enable_mathsql" != "xyes"; then + AC_DEFINE(OMIT_MATHSQL) +fi +#----------------------------------------------------------------------- + +#----------------------------------------------------------------------- +# --enable-geocallbacks +# +AC_ARG_ENABLE(geocallbacks, [AS_HELP_STRING( + [--enable-geocallbacks], [enables geometry callbacks [default=no]])], + [], [enable_geocallbacks=no]) +if test x"$enable_geocallbacks" == "xyes"; then + AC_CHECK_LIB(sqlite3,sqlite3_rtree_geometry_callback,,AC_MSG_ERROR([obsolete 'libsqlite3' (< v.3.7.3). please retry specifying: --disable-geocallbacks]),-lm) +else + AC_DEFINE(OMIT_GEOCALLBACKS) +fi +#----------------------------------------------------------------------- + +#----------------------------------------------------------------------- +# --enable-proj +# +AC_ARG_ENABLE(proj, [AS_HELP_STRING( + [--enable-proj], [enables PROJ.4 inclusion [default=yes]])], + [], [enable_proj=yes]) +if test x"$enable_proj" != "xno"; then + AC_CHECK_HEADERS(proj_api.h,, [AC_MSG_ERROR([cannot find proj_api.h, bailing out])]) + AC_SEARCH_LIBS(pj_init_plus,proj,,AC_MSG_ERROR(['libproj' is required but it doesn't seem to be installed on this system.]),-lm) + AC_SEARCH_LIBS(pj_init_ctx,proj,,AC_MSG_ERROR(['libproj' is required but the version on this system does not support the required features (Version 4.8.0 or later is needed).]),-lm) +else + AC_DEFINE(OMIT_PROJ) +fi +#----------------------------------------------------------------------- + +#----------------------------------------------------------------------- +# --enable-iconv +# +AC_ARG_ENABLE(iconv, [AS_HELP_STRING( + [--enable-iconv], [enables ICONV inclusion [default=yes]])], + [], [enable_iconv=yes]) +if test x"$enable_iconv" != "xno"; then + AC_CHECK_HEADERS(iconv.h,, [AC_MSG_ERROR([cannot find iconv.h, bailing out])]) +# on some systems "iconv()" lives in libc. On others it lives in libiconv +# on older systems "libiconv()" lives in libiconv + AC_SEARCH_LIBS(iconv,iconv,, + AC_SEARCH_LIBS(libiconv,iconv,,AC_MSG_ERROR(['libiconv' is required but it doesn't seem to be installed on this system.]),)) + AC_SEARCH_LIBS(locale_charset,charset,, + AC_SEARCH_LIBS(nl_langinfo,c,,AC_MSG_ERROR(['libcharset' is required but it doesn't seem to be installed on this system.]),)) +else + AC_DEFINE(OMIT_ICONV) +fi + +#----------------------------------------------------------------------- +# --enable-freexl +# +AC_ARG_ENABLE(freexl, [AS_HELP_STRING( + [--enable-freexl], [enables FreeXL inclusion [default=yes]])], + [], [enable_freexl=yes]) +if test x"$enable_freexl" != "xno"; then + AC_CHECK_HEADERS(freexl.h,, [AC_MSG_ERROR([cannot find freexl.h, bailing out])]) + AC_SEARCH_LIBS(freexl_open,freexl,,AC_MSG_ERROR(['libfreexl' is required but it doesn't seem to be installed on this system.]),-lm) +else + AC_DEFINE(OMIT_FREEXL) +fi +#----------------------------------------------------------------------- + +#----------------------------------------------------------------------- +# --enable-epsg +# +AC_ARG_ENABLE(epsg, [AS_HELP_STRING( + [--enable-epsg], [enables full EPSG dataset support [default=yes]])], + [], [enable_epsg=yes]) +if test x"$enable_epsg" != "xyes"; then + AC_DEFINE(OMIT_EPSG) +fi +#----------------------------------------------------------------------- + +#----------------------------------------------------------------------- +# --enable-geos +# +AC_ARG_ENABLE(geos, [AS_HELP_STRING( + [--enable-geos], [enables GEOS inclusion [default=yes]])], + [], [enable_geos=yes]) +if test x"$enable_geos" != "xno"; then + #----------------------------------------------------------------------- + # --with-geosconfig + # + AC_ARG_WITH([geosconfig], + [AS_HELP_STRING([--with-geosconfig=FILE], [specify an alternative geos-config file])], + [GEOSCONFIG="$withval"], [GEOSCONFIG=""]) + if test "x$GEOSCONFIG" = "x"; then + # GEOSCONFIG was not specified, so search within the current path + AC_PATH_PROG([GEOSCONFIG], [geos-config]) + # If we couldn't find geos-config, display an error + if test "x$GEOSCONFIG" = "x"; then + AC_MSG_ERROR([could not find geos-config within the current path. You may need to try re-running configure with a --with-geosconfig parameter.]) + fi + else + # GEOSCONFIG was specified; display a message to the user + if test "x$GEOSCONFIG" = "xyes"; then + AC_MSG_ERROR([you must specify a parameter to --with-geosconfig, e.g. --with-geosconfig=/path/to/geos-config]) + else + if test -f $GEOSCONFIG; then + AC_MSG_RESULT([Using user-specified geos-config file: $GEOSCONFIG]) + else + AC_MSG_ERROR([the user-specified geos-config file $GEOSCONFIG does not exist]) + fi + fi + fi + # Extract the linker and include flags + GEOS_LDFLAGS=`$GEOSCONFIG --ldflags` + GEOS_CFLAGS=-I`$GEOSCONFIG --includes` + AC_SUBST([GEOS_LDFLAGS]) + AC_SUBST([GEOS_CFLAGS]) + # Ensure that we can parse geos_c.h + CPPFLAGS_SAVE="$CPPFLAGS" + CPPFLAGS="$GEOS_CFLAGS" + AC_CHECK_HEADERS([geos_c.h],, [AC_MSG_ERROR([could not find geos_c.h - you may need to specify the directory of a geos-config file using --with-geosconfig])]) + CPPFLAGS="$CPPFLAGS_SAVE" + # Ensure we can link against libgeos_c + LIBS_SAVE="$LIBS" + LIBS="$GEOS_LDFLAGS" + AC_SEARCH_LIBS(GEOSCoveredBy,geos_c,,AC_MSG_ERROR([could not find libgeos_c (or obsolete 'libgeos_c' < v.3.3.0 found) - you may need to specify the directory of a geos-config file using --with-geosconfig])) + LIBS="$LIBS_SAVE" + LIBS="$LIBS $GEOS_LDFLAGS -lgeos_c" + + #----------------------------------------------------------------------- + # --enable-geosadvanced + # + AC_ARG_ENABLE(geosadvanced, [AS_HELP_STRING( + [--enable-geosadvanced], [enables GEOS advanced features [default=yes]])], + [], [enable_geosadvanced=yes]) + if test x"$enable_geosadvanced" != "xno"; then + AC_SEARCH_LIBS(GEOSDelaunayTriangulation,geos_c,,AC_MSG_ERROR(['libgeos_c' (>= v.3.4.0) is required but it doesn't seem to be installed on this system.])) + AC_DEFINE(GEOS_ADVANCED) + fi + + #----------------------------------------------------------------------- + # --enable-lwgeom + # + AC_ARG_ENABLE(lwgeom, [AS_HELP_STRING( + [--enable-lwgeom], [enables LWGEOM support [default=no]])], + [], [enable_lwgeom=no]) + if test x"$enable_lwgeom" != "xno"; then + AC_CHECK_HEADERS(liblwgeom.h,, [AC_MSG_ERROR([cannot find liblwgeom.h, bailing out])]) + _save_libs="$LIBS" + LIBS=$LIBS' -llwgeom -lgeos_c' + AC_LINK_IFELSE([AC_LANG_SOURCE([int main() { return lwgeom_make_valid(); return 0; } + void lwgeom_init_allocators(void) { return; } ])], + [AC_DEFINE(ENABLE_LWGEOM)], + [AC_MSG_ERROR(['liblwgeom' doesn't seem to be installed on this system; unsupported lwgeom_make_valid().])]) + LIBS="$_save_libs" + LIBS=$LIBS' -llwgeom -lgeos_c' + # + # testing for PostGIS 2.1 - lwgeom_set_handlers + # + AC_SEARCH_LIBS(lwgeom_set_handlers,geos_c,AC_DEFINE(POSTGIS_2_1)) + fi +else + AC_DEFINE(OMIT_GEOS) +fi + +#----------------------------------------------------------------------- +# --enable-libxml2 +# +AC_ARG_ENABLE(libxml2, [AS_HELP_STRING( + [--enable-libxml2], [enables libxml2 inclusion [default=yes]])], + [], [enable_libxml2=yes]) +if test x"$enable_libxml2" != "xno"; then + PKG_CHECK_MODULES([LIBXML2], [libxml-2.0], , AC_MSG_ERROR(['libxml2' is required but it doesn't seem to be installed on this system.])) + AC_SUBST(LIBXML2_CFLAGS) + AC_SUBST(LIBXML2_LIBS) + AC_DEFINE(ENABLE_LIBXML2) +fi + +#----------------------------------------------------------------------- +# --enable-geopackage +# +AC_ARG_ENABLE(geopackage, [AS_HELP_STRING( + [--enable-geopackage], [enables GeoPackage support [default=yes]])], + [], [enable_geopackage=yes]) +if test x"$enable_geopackage" != "xno"; then + AC_DEFINE(ENABLE_GEOPACKAGE) +fi +AM_CONDITIONAL([ENABLE_GEOPACKAGE], [test x"$enable_geopackage" == "xyes"]) + +#----------------------------------------------------------------------- + +#----------------------------------------------------------------------- +# --enable-gcov +# +AC_ARG_ENABLE(gcov, AC_HELP_STRING([--enable-gcov],[turn on code coverage analysis tools])) +if test "x$enable_gcov" = "xyes"; then + dnl Check for -fprofile-arcs and -ftest-coverage option + CFLAGS=$CFLAGS" -fprofile-arcs -ftest-coverage -g" + GCOV_FLAGS="-lgcov" +fi +#----------------------------------------------------------------------- + +#----------------------------------------------------------------------- +# --enable-examples +# +AC_ARG_ENABLE(examples, [AS_HELP_STRING( + [--enable-examples], [enables building examples [default=yes]])], + [], [enable_examples=yes]) +AM_CONDITIONAL(ENABLE_EXAMPLES, [test x"$enable_examples" != "xno"]) +#----------------------------------------------------------------------- + +# Checking for MinGW +AM_CONDITIONAL([MINGW], [test "$target_alias" = "mingw32"]) +# Checking for Mac OsX +AM_CONDITIONAL([MACOSX], [test "$target_alias" = "macosx"]) +# Checking for Android +AM_CONDITIONAL([ANDROID], [test "$target_alias" = "android"]) + +AC_OUTPUT diff --git a/src/spatialite/depcomp b/src/spatialite/depcomp new file mode 100755 index 0000000..df8eea7 --- /dev/null +++ b/src/spatialite/depcomp @@ -0,0 +1,630 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2009-04-28.21; # UTC + +# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free +# Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by `PROGRAMS ARGS'. + object Object file output by `PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputing dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u="sed s,\\\\\\\\,/,g" + depmode=msvisualcpp +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +## The second -e expression handles DOS-style file names with drive letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the `deleted header file' problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. + tr ' ' ' +' < "$tmpdepfile" | +## Some versions of gcc put a space before the `:'. On the theory +## that the space means something, we add a space to the output as +## well. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like `#:fec' to the end of the + # dependency line. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ + tr ' +' ' ' >> "$depfile" + echo >> "$depfile" + + # The second pass generates a dummy entry for each header file. + tr ' ' ' +' < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts `$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + # Each line is of the form `foo.o: dependent.h'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + # The sourcefile does not contain any dependencies, so just + # store a dummy comment line, to avoid errors with the Makefile + # "include basename.Plo" scheme. + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +icc) + # Intel's C compiler understands `-MD -MF file'. However on + # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c + # ICC 7.0 will fill foo.d with something like + # foo.o: sub/foo.c + # foo.o: sub/foo.h + # which is wrong. We want: + # sub/foo.o: sub/foo.c + # sub/foo.o: sub/foo.h + # sub/foo.c: + # sub/foo.h: + # ICC 7.1 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using \ : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | + sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" + # Add `dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in `foo.d' instead, so we check for that too. + # Subdirectories are respected. + dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` + test "x$dir" = "x$object" && dir= + base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + + if test "$libtool" = yes; then + # With Tru64 cc, shared objects can also be used to make a + # static library. This mechanism is used in libtool 1.4 series to + # handle both shared and static libraries in a single compilation. + # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. + # + # With libtool 1.5 this exception was removed, and libtool now + # generates 2 separate objects for the 2 libraries. These two + # compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 + tmpdepfile2=$dir$base.o.d # libtool 1.5 + tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 + tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.o.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + tmpdepfile4=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -eq 0; then : + else + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" + # That's a tab and a space in the []. + sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" + else + echo "#dummy" > "$depfile" + fi + rm -f "$tmpdepfile" + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for `:' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + "$@" $dashmflag | + sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + tr ' ' ' +' < "$tmpdepfile" | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + sed '1,2d' "$tmpdepfile" | tr ' ' ' +' | \ +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove `-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E | + sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | + sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" + echo " " >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/src/spatialite/examples/Makefile.am b/src/spatialite/examples/Makefile.am new file mode 100644 index 0000000..f796a97 --- /dev/null +++ b/src/spatialite/examples/Makefile.am @@ -0,0 +1,10 @@ +noinst_PROGRAMS = demo1 demo2 demo3 demo4 demo5 + +AM_CFLAGS = -I@srcdir@/../src/headers +AM_LDFLAGS = -L../src -lspatialite -lm $(GCOV_FLAGS) + +LDADD = @LIBXML2_LIBS@ + +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda + +EXTRA_DIST = examples.doxy diff --git a/src/spatialite/examples/Makefile.in b/src/spatialite/examples/Makefile.in new file mode 100644 index 0000000..3cb7144 --- /dev/null +++ b/src/spatialite/examples/Makefile.in @@ -0,0 +1,627 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +noinst_PROGRAMS = demo1$(EXEEXT) demo2$(EXEEXT) demo3$(EXEEXT) \ + demo4$(EXEEXT) demo5$(EXEEXT) +subdir = examples +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +PROGRAMS = $(noinst_PROGRAMS) +demo1_SOURCES = demo1.c +demo1_OBJECTS = demo1.$(OBJEXT) +demo1_LDADD = $(LDADD) +demo1_DEPENDENCIES = +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +demo2_SOURCES = demo2.c +demo2_OBJECTS = demo2.$(OBJEXT) +demo2_LDADD = $(LDADD) +demo2_DEPENDENCIES = +demo3_SOURCES = demo3.c +demo3_OBJECTS = demo3.$(OBJEXT) +demo3_LDADD = $(LDADD) +demo3_DEPENDENCIES = +demo4_SOURCES = demo4.c +demo4_OBJECTS = demo4.$(OBJEXT) +demo4_LDADD = $(LDADD) +demo4_DEPENDENCIES = +demo5_SOURCES = demo5.c +demo5_OBJECTS = demo5.$(OBJEXT) +demo5_LDADD = $(LDADD) +demo5_DEPENDENCIES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = demo1.c demo2.c demo3.c demo4.c demo5.c +DIST_SOURCES = demo1.c demo2.c demo3.c demo4.c demo5.c +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CFLAGS = -I@srcdir@/../src/headers +AM_LDFLAGS = -L../src -lspatialite -lm $(GCOV_FLAGS) +LDADD = @LIBXML2_LIBS@ +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda +EXTRA_DIST = examples.doxy +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign examples/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign examples/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstPROGRAMS: + @list='$(noinst_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +demo1$(EXEEXT): $(demo1_OBJECTS) $(demo1_DEPENDENCIES) $(EXTRA_demo1_DEPENDENCIES) + @rm -f demo1$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(demo1_OBJECTS) $(demo1_LDADD) $(LIBS) + +demo2$(EXEEXT): $(demo2_OBJECTS) $(demo2_DEPENDENCIES) $(EXTRA_demo2_DEPENDENCIES) + @rm -f demo2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(demo2_OBJECTS) $(demo2_LDADD) $(LIBS) + +demo3$(EXEEXT): $(demo3_OBJECTS) $(demo3_DEPENDENCIES) $(EXTRA_demo3_DEPENDENCIES) + @rm -f demo3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(demo3_OBJECTS) $(demo3_LDADD) $(LIBS) + +demo4$(EXEEXT): $(demo4_OBJECTS) $(demo4_DEPENDENCIES) $(EXTRA_demo4_DEPENDENCIES) + @rm -f demo4$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(demo4_OBJECTS) $(demo4_LDADD) $(LIBS) + +demo5$(EXEEXT): $(demo5_OBJECTS) $(demo5_DEPENDENCIES) $(EXTRA_demo5_DEPENDENCIES) + @rm -f demo5$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(demo5_OBJECTS) $(demo5_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/demo1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/demo2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/demo3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/demo4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/demo5.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstPROGRAMS \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstPROGRAMS cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/examples/demo1.c b/src/spatialite/examples/demo1.c new file mode 100644 index 0000000..7e731a2 --- /dev/null +++ b/src/spatialite/examples/demo1.c @@ -0,0 +1,386 @@ +/* + +demo1.c + +Author: Sandro Furieri a-furieri@lqt.it + +This software is provided 'as-is', without any express or implied +warranty. In no event will the author be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely + +*/ + +#include +#include +#include + +#include "config.h" + +/* +these headers are required in order to support +SQLite/SpatiaLite +*/ +#include +#include +#include + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + sqlite3_stmt *stmt; + gaiaGeomCollPtr geom; + char sql[256]; + int i; + int ic; + char **results; + int n_rows; + int n_columns; + char *err_msg = NULL; + int len; + char *table_name; + char **p_geotables = NULL; + int n_geotables = 0; + int row_no; + const void *blob; + int blob_size; + int geom_type; + double measure; + void *cache; + + + if (argc != 2) + { + fprintf (stderr, "usage: %s test_db_path\n", argv[0]); + return -1; + } + + +/* +trying to connect the test DB: +- this demo was designed in order to connect the standard + TEST-2.3.SQLITE sample DB +- but you can try to use any SQLite/SpatiaLite DB at your will + +Please notice: we'll establish a READ ONLY connection +*/ + ret = sqlite3_open_v2 (argv[1], &handle, SQLITE_OPEN_READONLY, NULL); + if (ret != SQLITE_OK) + { + printf ("cannot open '%s': %s\n", argv[1], sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + +/* +VERY IMPORTANT: +you must initialize the SpatiaLite extension [and related] +BEFORE attempting to perform any other SQLite call +========================================================== +Please note: starting since 4.1.0 this is completely canged: +- a separate memory block (internal cache) is required by + each single connection +- allocating/freeing this block falls under the responsibility + of the program handling the connection +- in multithreaded programs a connection can never be share by + different threads; the internal-cache block must be allocated + by the same thread holding the connection +*/ + + cache = spatialite_alloc_connection (); + spatialite_init_ex (handle, cache, 0); + + +/* showing the SQLite version */ + printf ("SQLite version: %s\n", sqlite3_libversion ()); +/* showing the SpatiaLite version */ + printf ("SpatiaLite version: %s\n", spatialite_version ()); + printf ("\n\n"); + + + +/* +SQL query #1 +we'll retrieve GEOMETRY tables from Spatial Metadata +we are assuming this query will return only few rows, +so this time we'll use the sqlite3_get_table() interface + +this interface is very simple to use +the result set is returned as a rectangular array [rows/columns] +allocated in a temporary memory storage +so, this interface is well suited for small sized result sets, +but performs badly when accessing a large sized resul set + +as a side effect, each column value is returned as text, and +isn't possible at all to retrieve true column types +(INTEGER, FLOAT ...) +*/ + strcpy (sql, + "SELECT DISTINCT f_table_name FROM geometry_columns ORDER BY 1"); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + &err_msg); + if (ret != SQLITE_OK) + { +/* some error occurred */ + printf ("query#1 SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + if (n_rows > 1) + { +/* first row always contains column names and is meaningless in this context */ + n_geotables = n_rows; +/* allocating a dynamic pointer array to store geotable names */ + p_geotables = malloc (sizeof (char *) * n_geotables); + for (i = 1; i <= n_rows; i++) + { +/* +now we'll fetch one row at each time [and we have only one column to fetch] + +this one is is a simplified demo; but when writing a real application +you always must check for NULL values !!!! +*/ + table_name = results[(i * n_columns) + 0]; +/* and we'll store each geotable name into the dynamic pointer array */ + len = strlen (table_name); + p_geotables[i - 1] = malloc (len + 1); + strcpy (p_geotables[i - 1], table_name); + } +/* we can now free the table results */ + sqlite3_free_table (results); + } + + + + for (i = 0; i < n_geotables; i++) + { +/* now we'll scan each geotable we've found in Spatial Metadata */ + printf ("========= table '%s' ========================\n", + p_geotables[i]); + + + +/* +SQL query #2 +we'll retrieve any column from the current geotable +we are assuming this query will return lots of rows, +so we have to use sqlite3_prepare_v2() interface + +this interface is a more complex one, but is well +suited in order to access huge sized result sets +and true value type control is supported +*/ + sprintf (sql, "SELECT * FROM %s", p_geotables[i]); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { +/* some error occurred */ + printf ("query#2 SQL error: %s\n", sqlite3_errmsg (handle)); + goto abort; + } + +/* +the sqlite3_prepare_v2() call simply parses the SQL statement, +checking for syntax validity, allocating internal structs etc +but no result set row is really yet available +*/ + +/* we'll now save the #columns within the result set */ + n_columns = sqlite3_column_count (stmt); + row_no = 0; + + + while (1) + { +/* this is an infinite loop, intended to fetch any row */ + +/* we are now trying to fetch the next available row */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + { +/* there are no more rows to fetch - we can stop looping */ + break; + } + if (ret == SQLITE_ROW) + { +/* ok, we've just fetched a valid row to process */ + row_no++; + printf ("row #%d\n", row_no); + + + for (ic = 0; ic < n_columns; ic++) + { +/* +and now we'll fetch column values + +for each column we'll then get: +- the column name +- a column value, that can be of type: SQLITE_NULL, SQLITE_INTEGER, + SQLITE_FLOAT, SQLITE_TEXT or SQLITE_BLOB, according to internal DB storage type +*/ + printf ("\t%-10s = ", + sqlite3_column_name (stmt, ic)); + switch (sqlite3_column_type (stmt, ic)) + { + case SQLITE_NULL: + printf ("NULL"); + break; + case SQLITE_INTEGER: + printf ("%d", sqlite3_column_int (stmt, ic)); + break; + case SQLITE_FLOAT: + printf ("%1.4f", + sqlite3_column_double (stmt, ic)); + break; + case SQLITE_TEXT: + printf ("'%s'", + sqlite3_column_text (stmt, ic)); + break; + case SQLITE_BLOB: + blob = sqlite3_column_blob (stmt, ic); + blob_size = sqlite3_column_bytes (stmt, ic); + +/* checking if this BLOB actually is a GEOMETRY */ + geom = + gaiaFromSpatiaLiteBlobWkb (blob, + blob_size); + if (!geom) + { +/* for sure this one is not a GEOMETRY */ + printf ("BLOB [%d bytes]", blob_size); + } + else + { + geom_type = gaiaGeometryType (geom); + if (geom_type == GAIA_UNKNOWN) + printf ("EMPTY or NULL GEOMETRY"); + else + { + char *geom_name; + if (geom_type == GAIA_POINT) + geom_name = "POINT"; + if (geom_type == GAIA_LINESTRING) + geom_name = "LINESTRING"; + if (geom_type == GAIA_POLYGON) + geom_name = "POLYGON"; + if (geom_type == GAIA_MULTIPOINT) + geom_name = "MULTIPOINT"; + if (geom_type == + GAIA_MULTILINESTRING) + geom_name = "MULTILINESTRING"; + if (geom_type == + GAIA_MULTIPOLYGON) + geom_name = "MULTIPOLYGON"; + if (geom_type == + GAIA_GEOMETRYCOLLECTION) + geom_name = + "GEOMETRYCOLLECTION"; + printf ("%s SRID=%d", geom_name, + geom->Srid); + if (geom_type == GAIA_LINESTRING + || geom_type == + GAIA_MULTILINESTRING) + { +#ifndef OMIT_GEOS /* GEOS is required */ + gaiaGeomCollLength (geom, + &measure); + printf (" length=%1.2f", + measure); +#else + printf + (" length=?? [no GEOS support available]"); +#endif /* GEOS enabled/disabled */ + } + if (geom_type == GAIA_POLYGON || + geom_type == + GAIA_MULTIPOLYGON) + { +#ifndef OMIT_GEOS /* GEOS is required */ + gaiaGeomCollArea (geom, + &measure); + printf (" area=%1.2f", + measure); +#else + printf + ("area=?? [no GEOS support available]"); +#endif /* GEOS enabled/disabled */ + } + } +/* we have now to free the GEOMETRY */ + gaiaFreeGeomColl (geom); + } + + break; + }; + printf ("\n"); + } + + if (row_no >= 5) + { +/* we'll exit the loop after the first 5 rows - this is only a demo :-) */ + break; + } + } + else + { +/* some unexpected error occurred */ + printf ("sqlite3_step() error: %s\n", + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + goto abort; + } + } +/* we have now to finalize the query [memory cleanup] */ + sqlite3_finalize (stmt); + printf ("\n\n"); + + } + + + +/* disconnecting the test DB */ + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + printf ("close() error: %s\n", sqlite3_errmsg (handle)); + return -1; + } + +/* freeing the internal-cache memory block */ + spatialite_cleanup_ex (cache); + + printf ("\n\nsample successfully terminated\n"); +/* we have to free the dynamic pointer array used to store geotable names */ + for (i = 0; i < n_geotables; i++) + { +/* freeing each tablename */ + free (p_geotables[i]); + } + free (p_geotables); + spatialite_shutdown(); + return 0; + + abort: + sqlite3_close (handle); + +/* freeing the internal-cache memory block */ + spatialite_cleanup_ex (cache); + + if (p_geotables) + { +/* we have to free the dynamic pointer array used to store geotable names */ + for (i = 0; i < n_geotables; i++) + { +/* freeing each tablename */ + free (p_geotables[i]); + } + free (p_geotables); + } + spatialite_shutdown(); + return -1; +} diff --git a/src/spatialite/examples/demo2.c b/src/spatialite/examples/demo2.c new file mode 100644 index 0000000..ebc6e94 --- /dev/null +++ b/src/spatialite/examples/demo2.c @@ -0,0 +1,547 @@ +/* + +demo2.c + +Author: Sandro Furieri a-furieri@lqt.it + +This software is provided 'as-is', without any express or implied +warranty. In no event will the author be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely + +*/ + +#include +#include +#include + +#include "config.h" + +/* +these headers are required in order to support +SQLite/SpatiaLite +*/ + +#include + +#include +#include +#include + +static char * +geom_type (int type) +{ +/* utility function returning corresponding GeometryType as a string */ + static char *name = "EMPTY / NULL GEOMETRY"; + if (type == GAIA_POINT) + name = "POINT"; + if (type == GAIA_LINESTRING) + name = "LINESTRING"; + if (type == GAIA_POLYGON) + name = "POLYGON"; + if (type == GAIA_MULTIPOINT) + name = "MULTIPOINT"; + if (type == GAIA_MULTILINESTRING) + name = "MULTILINESTRING"; + if (type == GAIA_MULTIPOLYGON) + name = "MULTIPOLYGON"; + if (type == GAIA_GEOMETRYCOLLECTION) + name = "GEOMETRYCOLLECTION"; + return name; +} + +static void +geometry_printout (gaiaGeomCollPtr geom) +{ +/* utility function printing a generic Geometry object */ + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + int n_pts = 0; + int n_lns = 0; + int n_pgs = 0; + int cnt; + int iv; + int ir; + double x; + double y; + + +/* we'll now count how many POINTs are there */ + pt = geom->FirstPoint; + while (pt) + { + n_pts++; + pt = pt->Next; + } +/* we'll now count how many LINESTRINGs are there */ + ln = geom->FirstLinestring; + while (ln) + { + n_lns++; + ln = ln->Next; + } +/* we'll now count how many POLYGONs are there */ + pg = geom->FirstPolygon; + while (pg) + { + n_pgs++; + pg = pg->Next; + } + + + + if (n_pts) + { +/* printing POINTs coordinates */ + cnt = 0; + pt = geom->FirstPoint; + while (pt) + { +/* we'll now scan the linked list of POINTs */ + printf ("\t\t\tPOINT %d/%d x=%1.4f y=%1.4f\n", + cnt, n_pts, pt->X, pt->Y); + cnt++; + pt = pt->Next; + } + } + + + if (n_lns) + { +/* printing LINESTRINGs coordinates */ + cnt = 0; + ln = geom->FirstLinestring; + while (ln) + { +/* we'll now scan the linked list of LINESTRINGs */ + printf ("\t\t\tLINESTRING %d/%d has %d vertices\n", + cnt, n_lns, ln->Points); + for (iv = 0; iv < ln->Points; iv++) + { +/* we'll now retrieve coordinates for each vertex */ + gaiaGetPoint (ln->Coords, iv, &x, &y); + printf ("\t\t\t\tvertex %d/%d x=%1.4f y=%1.4f\n", + iv, ln->Points, x, y); + } + cnt++; + ln = ln->Next; + } + } + + + if (n_pgs) + { +/* printing POLYGONs coordinates */ + cnt = 0; + pg = geom->FirstPolygon; + while (pg) + { +/* we'll now scan the linked list of POLYGONs */ + printf ("\t\t\tPOLYGON %d/%d has %d hole%c\n", + cnt, n_pgs, pg->NumInteriors, + (pg->NumInteriors == 1) ? ' ' : 's'); + +/* +now we'll print out the Exterior ring +[surely a POLYGON has an Exterior ring +*/ + rng = pg->Exterior; + printf ("\t\t\t\tExteriorRing has %d vertices\n", rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { +/* we'll now retrieve coordinates for each vertex */ + gaiaGetPoint (rng->Coords, iv, &x, &y); + printf ("\t\t\t\t\tvertex %d/%d x=%1.4f y=%1.4f\n", + iv, rng->Points, x, y); + } + + for (ir = 0; ir < pg->NumInteriors; ir++) + { +/* +a POLYGON can contain an arbitrary number of Interior rings (including zero) +*/ + rng = pg->Interiors + ir; + printf ("\t\t\t\tInteriorRing %d/%d has %d vertices\n", + ir, pg->NumInteriors, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { +/* we'll now retrieve coordinates for each vertex */ + gaiaGetPoint (rng->Coords, iv, &x, &y); + printf + ("\t\t\t\t\tvertex %d/%d x=%1.4f y=%1.4f\n", + iv, rng->Points, x, y); + } + } + + cnt++; + pg = pg->Next; + } + } +} + +int +main (int argc, char *argv[]) +{ + gaiaGeomCollPtr geo_pt = NULL; + gaiaGeomCollPtr geo_ln = NULL; + gaiaGeomCollPtr geo_pg = NULL; + gaiaGeomCollPtr geo_mpt = NULL; + gaiaGeomCollPtr geo_mln = NULL; + gaiaGeomCollPtr geo_mpg = NULL; + gaiaGeomCollPtr geo_coll = NULL; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + gaiaOutBuffer wkt; + int ret; + sqlite3 *handle; + void *cache; + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + +/* + +this demo does not strictly require any DB connection to be established + +However you must initialize the SpatiaLite extension [and related] +and you *must* establish a "fake" DB connection in order to +properly initialize SpatiaLite and GEOS libraries + +*/ + ret = sqlite3_open_v2 (":memory:", &handle, SQLITE_OPEN_READONLY, NULL); + if (ret != SQLITE_OK) + { + printf ("cannot open '%s': %s\n", ":memory:", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + cache = spatialite_alloc_connection (); + spatialite_init_ex (handle, cache, 0); + + +#ifndef OMIT_GEOS /* GEOS must be enabled */ + +/* +Step #1 +creating and checking a POINT Geometry +*/ + +/* we'll allocate a Geometry object */ + geo_pt = gaiaAllocGeomColl (); +/* then we insert a POINT, directly passing its coordinates */ + gaiaAddPointToGeomColl (geo_pt, 1.5, 2.75); +/* now we'll print the main attributes for this geometry */ + printf ("step#1: %s\t\tDimension=%d IsValid=%d\n", + geom_type (gaiaGeometryType (geo_pt)), + gaiaDimension (geo_pt), gaiaIsValid (geo_pt)); + geometry_printout (geo_pt); + + + +/* +Step #2 +creating and checking a LINESTRING Geometry +*/ + geo_ln = gaiaAllocGeomColl (); +/* then we insert a LINESTRING, specifying how many vertices it contains */ + line = gaiaAddLinestringToGeomColl (geo_ln, 5); +/* +we've got a pointer referencing the linestring we've just inserted +now we'll set coordinates for each vertex +*/ + gaiaSetPoint (line->Coords, 0, 1.0, 1.0); + gaiaSetPoint (line->Coords, 1, 2.0, 1.0); + gaiaSetPoint (line->Coords, 2, 2.0, 2.0); + gaiaSetPoint (line->Coords, 3, 100.0, 2.0); + gaiaSetPoint (line->Coords, 4, 100.0, 100.0); + + + printf ("\nstep#2: %s\tDimension=%d IsValid=%d\n", + geom_type (gaiaGeometryType (geo_ln)), + gaiaDimension (geo_ln), gaiaIsValid (geo_ln)); + geometry_printout (geo_ln); + + + +/* +Step #3 +creating and checking a POLYGON Geometry +*/ + geo_pg = gaiaAllocGeomColl (); +/* +then we insert a POLYGON, specifying: +- how many vertices have to be allocated for the Exterior Ring +- how many Interior Rings it has +*/ + polyg = gaiaAddPolygonToGeomColl (geo_pg, 5, 2); +/* +we've got a pointer referencing the polygon we've just inserted +now we'll get a pointer referencing its Exterior ring +*/ + ring = polyg->Exterior; + + +/* now we'll set coordinates for each Exterior ring vertex */ + gaiaSetPoint (ring->Coords, 0, 0.0, 0.0); + gaiaSetPoint (ring->Coords, 1, 50.0, 0.0); + gaiaSetPoint (ring->Coords, 2, 50.0, 50.0); + gaiaSetPoint (ring->Coords, 3, 0.0, 50.0); +/* please note: a Ring is a CLOSED figure, so last and first vertex have to be coincident */ + gaiaSetPoint (ring->Coords, 4, 0.0, 0.0); + + +/* +we'll now get a pointer referencing the FIRST interior ring, +specifying how vertices have to be allocated +*/ + ring = gaiaAddInteriorRing (polyg, 0, 5); +/* then setting coordinates for each Interior ring vertex */ + gaiaSetPoint (ring->Coords, 0, 40.0, 40.0); + gaiaSetPoint (ring->Coords, 1, 41.0, 40.0); + gaiaSetPoint (ring->Coords, 2, 41.0, 41.0); + gaiaSetPoint (ring->Coords, 3, 40.0, 41.0); + gaiaSetPoint (ring->Coords, 4, 40.0, 40.0); + + +/* +we'll now get a pointer referencing the SECOND interior ring, +specifying how vertices have to be allocated +*/ + ring = gaiaAddInteriorRing (polyg, 1, 5); +/* then setting coordinates for each Interior ring vertex */ + gaiaSetPoint (ring->Coords, 0, 30.0, 30.0); + gaiaSetPoint (ring->Coords, 1, 31.0, 30.0); + gaiaSetPoint (ring->Coords, 2, 31.0, 31.0); + gaiaSetPoint (ring->Coords, 3, 30.0, 31.0); + gaiaSetPoint (ring->Coords, 4, 30.0, 30.0); + + + printf ("\nstep#3: %s\tDimension=%d IsValid=%d\n", + geom_type (gaiaGeometryType (geo_pg)), + gaiaDimension (geo_pg), gaiaIsValid (geo_pg)); + geometry_printout (geo_pg); + + + +/* +Step #4 +creating and checking a MULTIPOINT Geometry +*/ + geo_mpt = gaiaAllocGeomColl (); +/* then we'll insert some POINTs */ + gaiaAddPointToGeomColl (geo_mpt, 5.0, 5.0); + gaiaAddPointToGeomColl (geo_mpt, 15.0, 5.0); + gaiaAddPointToGeomColl (geo_mpt, 5.0, 15.0); + gaiaAddPointToGeomColl (geo_mpt, 25.0, 5.0); + gaiaAddPointToGeomColl (geo_mpt, 5.0, 25.0); + printf ("\nstep#4: %s\tDimension=%d IsValid=%d\n", + geom_type (gaiaGeometryType (geo_mpt)), + gaiaDimension (geo_mpt), gaiaIsValid (geo_mpt)); + geometry_printout (geo_mpt); + + + +/* +Step #5 +creating and checking a MULTILINESTRING Geometry +*/ + geo_mln = gaiaAllocGeomColl (); + +/* then we'll insert two LINESTRINGs */ + line = gaiaAddLinestringToGeomColl (geo_mln, 2); + gaiaSetPoint (line->Coords, 0, 30.0, 10.0); + gaiaSetPoint (line->Coords, 1, 10.0, 30.0); + + line = gaiaAddLinestringToGeomColl (geo_mln, 2); + gaiaSetPoint (line->Coords, 0, 40.0, 50.0); + gaiaSetPoint (line->Coords, 1, 50.0, 40.0); + + printf ("\nstep#5: %s\tDimension=%d IsValid=%d\n", + geom_type (gaiaGeometryType (geo_mln)), + gaiaDimension (geo_mln), gaiaIsValid (geo_mln)); + geometry_printout (geo_mln); + + + +/* +Step #6 +creating and checking a MULTIPOLYGON Geometry +*/ + geo_mpg = gaiaAllocGeomColl (); + +/* then we'll insert two POLYGONs */ + polyg = gaiaAddPolygonToGeomColl (geo_mpg, 5, 0); + ring = polyg->Exterior; + gaiaSetPoint (ring->Coords, 0, 60.0, 60.0); + gaiaSetPoint (ring->Coords, 1, 70.0, 60.0); + gaiaSetPoint (ring->Coords, 2, 70.0, 70.0); + gaiaSetPoint (ring->Coords, 3, 60.0, 70.0); + gaiaSetPoint (ring->Coords, 4, 60.0, 60.0); + + polyg = gaiaAddPolygonToGeomColl (geo_mpg, 5, 0); + ring = polyg->Exterior; + gaiaSetPoint (ring->Coords, 0, 80.0, 80.0); + gaiaSetPoint (ring->Coords, 1, 90.0, 80.0); + gaiaSetPoint (ring->Coords, 2, 90.0, 90.0); + gaiaSetPoint (ring->Coords, 3, 80.0, 90.0); + gaiaSetPoint (ring->Coords, 4, 80.0, 80.0); + + printf ("\nstep#6: %s\tDimension=%d IsValid=%d\n", + geom_type (gaiaGeometryType (geo_mpg)), + gaiaDimension (geo_mpg), gaiaIsValid (geo_mpg)); + geometry_printout (geo_mpg); + + + +/* +Step #7 +creating and checking a GEOMETRYCOLLECTION Geometry +*/ + geo_coll = gaiaAllocGeomColl (); + +/* then we'll insert two POINTs */ + gaiaAddPointToGeomColl (geo_coll, 100.0, 100.0); + gaiaAddPointToGeomColl (geo_coll, 100.0, 0.0); + +/* then we'll insert two LINESTRINGs */ + line = gaiaAddLinestringToGeomColl (geo_coll, 2); + gaiaSetPoint (line->Coords, 0, 130.0, 110.0); + gaiaSetPoint (line->Coords, 1, 110.0, 130.0); + + line = gaiaAddLinestringToGeomColl (geo_coll, 2); + gaiaSetPoint (line->Coords, 0, 140.0, 150.0); + gaiaSetPoint (line->Coords, 1, 150.0, 140.0); + +/* then we'll insert two POLYGONs */ + polyg = gaiaAddPolygonToGeomColl (geo_coll, 5, 0); + ring = polyg->Exterior; + gaiaSetPoint (ring->Coords, 0, 160.0, 160.0); + gaiaSetPoint (ring->Coords, 1, 170.0, 160.0); + gaiaSetPoint (ring->Coords, 2, 170.0, 170.0); + gaiaSetPoint (ring->Coords, 3, 160.0, 170.0); + gaiaSetPoint (ring->Coords, 4, 160.0, 160.0); + + polyg = gaiaAddPolygonToGeomColl (geo_coll, 5, 0); + ring = polyg->Exterior; + gaiaSetPoint (ring->Coords, 0, 180.0, 180.0); + gaiaSetPoint (ring->Coords, 1, 190.0, 180.0); + gaiaSetPoint (ring->Coords, 2, 190.0, 190.0); + gaiaSetPoint (ring->Coords, 3, 180.0, 190.0); + gaiaSetPoint (ring->Coords, 4, 180.0, 180.0); + + printf ("\nstep#7: %s\tDimension=%d IsValid=%d\n", + geom_type (gaiaGeometryType (geo_coll)), + gaiaDimension (geo_coll), gaiaIsValid (geo_coll)); + geometry_printout (geo_coll); + + + + +/* +Step #8 +printing each geometry as Well Known Text (WKT) +*/ + + printf ("\nstep#8: checking WKT representations\n"); + +/* first we'll get the WKT corresponding to geometry */ + gaiaOutBufferInitialize (&wkt); + gaiaOutWkt (&wkt, geo_pt); +/* we have to check wkt is not NULL */ + if (wkt.Error == 0 && wkt.Buffer != NULL) + { +/* printing the WKT */ + printf ("\n%s\n", wkt.Buffer); + +/* finally freeing the wkt temporary storage allocation */ + gaiaOutBufferReset (&wkt); + } + + + gaiaOutBufferInitialize (&wkt); + gaiaOutWkt (&wkt, geo_ln); + if (wkt.Error == 0 && wkt.Buffer != NULL) + { + printf ("\n%s\n", wkt.Buffer); + gaiaOutBufferReset (&wkt); + } + + + gaiaOutBufferInitialize (&wkt); + gaiaOutWkt (&wkt, geo_pg); + if (wkt.Error == 0 && wkt.Buffer != NULL) + { + printf ("\n%s\n", wkt.Buffer); + gaiaOutBufferReset (&wkt); + } + + + gaiaOutBufferInitialize (&wkt); + gaiaOutWkt (&wkt, geo_mpt); + if (wkt.Error == 0 && wkt.Buffer != NULL) + { + printf ("\n%s\n", wkt.Buffer); + gaiaOutBufferReset (&wkt); + } + + + gaiaOutBufferInitialize (&wkt); + gaiaOutWkt (&wkt, geo_mln); + if (wkt.Error == 0 && wkt.Buffer != NULL) + { + printf ("\n%s\n", wkt.Buffer); + gaiaOutBufferReset (&wkt); + } + + + gaiaOutBufferInitialize (&wkt); + gaiaOutWkt (&wkt, geo_mpg); + if (wkt.Error == 0 && wkt.Buffer != NULL) + { + printf ("\n%s\n", wkt.Buffer); + gaiaOutBufferReset (&wkt); + } + + + gaiaOutBufferInitialize (&wkt); + gaiaOutWkt (&wkt, geo_coll); + if (wkt.Error == 0 && wkt.Buffer != NULL) + { + printf ("\n%s\n", wkt.Buffer); + gaiaOutBufferReset (&wkt); + } + +#else + printf ("no GEOS support available: skipping any test\n"); +#endif /* GEOS enabled/disabled */ + +/* +memory cleanup +we have to destroy each object using temporary storage before exit +*/ + if (geo_pt) + gaiaFreeGeomColl (geo_pt); + if (geo_ln) + gaiaFreeGeomColl (geo_ln); + if (geo_pg) + gaiaFreeGeomColl (geo_pg); + if (geo_mpt) + gaiaFreeGeomColl (geo_mpt); + if (geo_mln) + gaiaFreeGeomColl (geo_mln); + if (geo_mpg) + gaiaFreeGeomColl (geo_mpg); + if (geo_coll) + gaiaFreeGeomColl (geo_coll); + sqlite3_close (handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown(); + return 0; +} diff --git a/src/spatialite/examples/demo3.c b/src/spatialite/examples/demo3.c new file mode 100644 index 0000000..bc63f45 --- /dev/null +++ b/src/spatialite/examples/demo3.c @@ -0,0 +1,366 @@ +/* + +demo3.c + +Author: Sandro Furieri a-furieri@lqt.it + +This software is provided 'as-is', without any express or implied +warranty. In no event will the author be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely + +*/ + +#include +#include +#include +#include + +/* +these headers are required in order to support +SQLite/SpatiaLite +*/ +#include +#include +#include + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + sqlite3_stmt *stmt; + char sql[256]; + char *err_msg = NULL; + double x; + double y; + int pk; + int ix; + int iy; + gaiaGeomCollPtr geo = NULL; + unsigned char *blob; + int blob_size; + int i; + char **results; + int n_rows; + int n_columns; + char *count; + clock_t t0; + clock_t t1; + void *cache; + + + if (argc != 2) + { + fprintf (stderr, "usage: %s test_db_path\n", argv[0]); + return -1; + } + + +/* +trying to connect the test DB: +- this demo is intended to create a new, empty database +*/ + ret = sqlite3_open_v2 (argv[1], &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + printf ("cannot open '%s': %s\n", argv[1], sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + cache = spatialite_alloc_connection (); + spatialite_init_ex (handle, cache, 0); + + +/* showing the SQLite version */ + printf ("SQLite version: %s\n", sqlite3_libversion ()); +/* showing the SpatiaLite version */ + printf ("SpatiaLite version: %s\n", spatialite_version ()); + printf ("\n\n"); + + +/* +we are supposing this one is an empty database, +so we have to create the Spatial Metadata +*/ + strcpy (sql, "SELECT InitSpatialMetadata(1)"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + + +/* +now we can create the test table +for simplicity we'll define only one column, the primary key +*/ + strcpy (sql, "CREATE TABLE test ("); + strcat (sql, "PK INTEGER NOT NULL PRIMARY KEY)"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("CREATE TABLE 'test' error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + + +/* +... we'll add a Geometry column of POINT type to the test table +*/ + strcpy (sql, "SELECT AddGeometryColumn('test', 'geom', 3003, 'POINT', 2)"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("AddGeometryColumn() error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + + +/* +and finally we'll enable this geo-column to have a Spatial Index based on R*Tree +*/ + strcpy (sql, "SELECT CreateSpatialIndex('test', 'geom')"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("CreateSpatialIndex() error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + + printf + ("\nnow we are going to insert 1 million POINTs; wait, please ...\n\n"); + + t0 = clock (); +/* +beginning a transaction + +*** this step is absolutely critical *** + +the SQLite engine is a TRANSACTIONAL one +the whole batch of INSERTs has to be performed as an unique transaction, +otherwise performance will be surely very poor +*/ + strcpy (sql, "BEGIN"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("BEGIN error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + + + +/* +preparing to populate the test table +we'll use a Prepared Statement we can reuse in order to insert each row +*/ + strcpy (sql, "INSERT INTO test (pk, geom) VALUES (?, ?)"); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("INSERT SQL error: %s\n", sqlite3_errmsg (handle)); + goto abort; + } + + pk = 0; + for (ix = 0; ix < 1000; ix++) + { + x = 1000000.0 + (ix * 10.0); + for (iy = 0; iy < 1000; iy++) + { +/* this double loop will insert 1 million rows into the the test table */ + + y = 4000000.0 + (iy * 10.0); + pk++; + if ((pk % 25000) == 0) + { + t1 = clock (); + printf ("insert row: %d\t\t[elapsed time: %1.3f]\n", + pk, (double) (t1 - t0) / CLOCKS_PER_SEC); + } + +/* preparing the geometry to insert */ + geo = gaiaAllocGeomColl (); + geo->Srid = 3003; + gaiaAddPointToGeomColl (geo, x, y); + +/* transforming this geometry into the SpatiaLite BLOB format */ + gaiaToSpatiaLiteBlobWkb (geo, &blob, &blob_size); + +/* we can now destroy the geometry object */ + gaiaFreeGeomColl (geo); + +/* resetting Prepared Statement and bindings */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + +/* binding parameters to Prepared Statement */ + sqlite3_bind_int64 (stmt, 1, pk); + sqlite3_bind_blob (stmt, 2, blob, blob_size, free); + +/* performing actual row insert */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { +/* an unexpected error occurred */ + printf ("sqlite3_step() error: %s\n", + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + goto abort; + } + + } + } +/* we have now to finalize the query [memory cleanup] */ + sqlite3_finalize (stmt); + + + +/* +committing the transaction + +*** this step is absolutely critical *** + +if we don't confirm the still pending transaction, +any update will be lost +*/ + strcpy (sql, "COMMIT"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("COMMIT error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + + + +/* +now we'll optimize the table +*/ + strcpy (sql, "ANALYZE test"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("ANALYZE error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + + + for (ix = 0; ix < 3; ix++) + { + printf ("\nperforming test#%d - not using Spatial Index\n", ix); +/* +now we'll perform the spatial query WITHOUT using the Spatial Index +we'll loop 3 times in order to avoid buffering-caching side effects +*/ + strcpy (sql, "SELECT Count(*) FROM test "); + strcat (sql, "WHERE MbrWithin(geom, BuildMbr("); + strcat (sql, "1000400.5, 4000400.5, "); + strcat (sql, "1000450.5, 4000450.5))"); + t0 = clock (); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("NoSpatialIndex SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + count = ""; + for (i = 1; i <= n_rows; i++) + { + count = results[(i * n_columns) + 0]; + } + t1 = clock (); + printf ("Count(*) = %d\t\t[elapsed time: %1.4f]\n", atoi (count), + (double) (t1 - t0) / CLOCKS_PER_SEC); +/* we can now free the table results */ + sqlite3_free_table (results); + } + + + for (ix = 0; ix < 3; ix++) + { + printf ("\nperforming test#%d - using the R*Tree Spatial Index\n", + ix); +/* +now we'll perform the spatial query USING the R*Tree Spatial Index +we'll loop 3 times in order to avoid buffering-caching side effects +*/ + strcpy (sql, "SELECT Count(*) FROM test "); + strcat (sql, "WHERE MbrWithin(geom, BuildMbr("); + strcat (sql, "1000400.5, 4000400.5, "); + strcat (sql, "1000450.5, 4000450.5)) AND ROWID IN ("); + strcat (sql, "SELECT pkid FROM idx_test_geom WHERE "); + strcat (sql, "xmin > 1000400.5 AND "); + strcat (sql, "xmax < 1000450.5 AND "); + strcat (sql, "ymin > 4000400.5 AND "); + strcat (sql, "ymax < 4000450.5)"); +/* +YES, this query is a very unhappy one +the idea is simply to simulate exactly the same conditions as above +*/ + t0 = clock (); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("SpatialIndex SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + count = ""; + for (i = 1; i <= n_rows; i++) + { + count = results[(i * n_columns) + 0]; + } + t1 = clock (); + printf ("Count(*) = %d\t\t[elapsed time: %1.4f]\n", atoi (count), + (double) (t1 - t0) / CLOCKS_PER_SEC); +/* we can now free the table results */ + sqlite3_free_table (results); + } + + +/* disconnecting the test DB */ + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + printf ("close() error: %s\n", sqlite3_errmsg (handle)); + return -1; + } + spatialite_cleanup_ex (cache); + printf ("\n\nsample successfully terminated\n"); + return 0; + + abort: + sqlite3_close (handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown(); + return -1; +} diff --git a/src/spatialite/examples/demo4.c b/src/spatialite/examples/demo4.c new file mode 100644 index 0000000..110137f --- /dev/null +++ b/src/spatialite/examples/demo4.c @@ -0,0 +1,363 @@ +/* + +demo4.c + +Author: Sandro Furieri a-furieri@lqt.it + +This software is provided 'as-is', without any express or implied +warranty. In no event will the author be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely + +*/ + +#include +#include +#include +#include + +/* +these headers are required in order to support +SQLite/SpatiaLite +*/ +#include +#include +#include + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + sqlite3_stmt *stmt; + char sql[256]; + char *err_msg = NULL; + double x; + double y; + int pk; + int ix; + int iy; + gaiaGeomCollPtr geo = NULL; + unsigned char *blob; + int blob_size; + int i; + char **results; + int n_rows; + int n_columns; + char *count; + clock_t t0; + clock_t t1; + void *cache; + + + if (argc != 2) + { + fprintf (stderr, "usage: %s test_db_path\n", argv[0]); + return -1; + } + + +/* +trying to connect the test DB: +- this demo is intended to create a new, empty database +*/ + ret = sqlite3_open_v2 (argv[1], &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + printf ("cannot open '%s': %s\n", argv[1], sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + cache = spatialite_alloc_connection (); + spatialite_init_ex (handle, cache, 0); + + +/* showing the SQLite version */ + printf ("SQLite version: %s\n", sqlite3_libversion ()); +/* showing the SpatiaLite version */ + printf ("SpatiaLite version: %s\n", spatialite_version ()); + printf ("\n\n"); + + +/* +we are supposing this one is an empty database, +so we have to create the Spatial Metadata +*/ + strcpy (sql, "SELECT InitSpatialMetadata(1)"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { +/* some error occurred */ + printf ("InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + + +/* +now we can create the test table +for simplicity we'll define only one column, the primary key +*/ + strcpy (sql, "CREATE TABLE test ("); + strcat (sql, "PK INTEGER NOT NULL PRIMARY KEY)"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("CREATE TABLE 'test' error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + + +/* +... we'll add a Geometry column of POINT type to the test table +*/ + strcpy (sql, "SELECT AddGeometryColumn('test', 'geom', 3003, 'POINT', 2)"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("AddGeometryColumn() error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + + +/* +and finally we'll enable this geo-column to have a Spatial Index based on MBR caching +*/ + strcpy (sql, "SELECT CreateMbrCache('test', 'geom')"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("CreateMbrCache() error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + + printf + ("\nnow we are going to insert 1 million POINTs; wait, please ...\n\n"); + + t0 = clock (); +/* +beginning a transaction + +*** this step is absolutely critical *** + +the SQLite engine is a TRANSACTIONAL one +the whole batch of INSERTs has to be performed as an unique transaction, +otherwise performance will be surely very poor +*/ + strcpy (sql, "BEGIN"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("BEGIN error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + + + +/* +preparing to populate the test table +we'll use a Prepared Statement we can reuse in order to insert each row +*/ + strcpy (sql, "INSERT INTO test (pk, geom) VALUES (?, ?)"); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("INSERT SQL error: %s\n", sqlite3_errmsg (handle)); + goto abort; + } + + pk = 0; + for (ix = 0; ix < 1000; ix++) + { + x = 1000000.0 + (ix * 10.0); + for (iy = 0; iy < 1000; iy++) + { +/* this double loop will insert 1 million rows into the the test table */ + + y = 4000000.0 + (iy * 10.0); + pk++; + if ((pk % 25000) == 0) + { + t1 = clock (); + printf ("insert row: %d\t\t[elapsed time: %1.3f]\n", + pk, (double) (t1 - t0) / CLOCKS_PER_SEC); + } + +/* preparing the geometry to insert */ + geo = gaiaAllocGeomColl (); + geo->Srid = 3003; + gaiaAddPointToGeomColl (geo, x, y); + +/* transforming this geometry into the SpatiaLite BLOB format */ + gaiaToSpatiaLiteBlobWkb (geo, &blob, &blob_size); + +/* we can now destroy the geometry object */ + gaiaFreeGeomColl (geo); + +/* resetting Prepared Statement and bindings */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + +/* binding parameters to Prepared Statement */ + sqlite3_bind_int64 (stmt, 1, pk); + sqlite3_bind_blob (stmt, 2, blob, blob_size, free); + +/* performing actual row insert */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { +/* an unexpected error occurred */ + printf ("sqlite3_step() error: %s\n", + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + goto abort; + } + + } + } +/* we have now to finalize the query [memory cleanup] */ + sqlite3_finalize (stmt); + + + +/* +committing the transaction + +*** this step is absolutely critical *** + +if we don't confirm the still pending transaction, +any update will be lost +*/ + strcpy (sql, "COMMIT"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("COMMIT error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + + + +/* +now we'll optimize the table +*/ + strcpy (sql, "ANALYZE test"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("ANALYZE error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + + + for (ix = 0; ix < 3; ix++) + { + printf ("\nperforming test#%d - not using Spatial Index\n", ix); +/* +now we'll perform the spatial query WITHOUT using the Spatial Index +we'll loop 3 times in order to avoid buffering-caching side effects +*/ + strcpy (sql, "SELECT Count(*) FROM test "); + strcat (sql, "WHERE MbrWithin(geom, BuildMbr("); + strcat (sql, "1000400.5, 4000400.5, "); + strcat (sql, "1000450.5, 4000450.5))"); + t0 = clock (); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("NoSpatialIndex SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + count = ""; + for (i = 1; i <= n_rows; i++) + { + count = results[(i * n_columns) + 0]; + } + t1 = clock (); + printf ("Count(*) = %d\t\t[elapsed time: %1.4f]\n", atoi (count), + (double) (t1 - t0) / CLOCKS_PER_SEC); +/* we can now free the table results */ + sqlite3_free_table (results); + } + + + for (ix = 0; ix < 3; ix++) + { + printf ("\nperforming test#%d - using the MBR cache Spatial Index\n", + ix); +/* +now we'll perform the spatial query USING the MBR cache Spatial Index +we'll loop 3 times in order to avoid buffering-caching side effects +*/ + strcpy (sql, "SELECT Count(*) FROM test "); + strcat (sql, "WHERE ROWID IN ("); + strcat (sql, "SELECT rowid FROM cache_test_geom WHERE "); + strcat (sql, + "mbr = FilterMbrWithin(1000400.5, 4000400.5, 1000450.5, 4000450.5))"); + +/* +YES, this query is a very unhappy one +the idea is simply to simulate exactly the same conditions as above +*/ + t0 = clock (); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + &err_msg); + if (ret != SQLITE_OK) + { +/* an error occurred */ + printf ("SpatialIndex SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + goto abort; + } + count = ""; + for (i = 1; i <= n_rows; i++) + { + count = results[(i * n_columns) + 0]; + } + t1 = clock (); + printf ("Count(*) = %d\t\t[elapsed time: %1.4f]\n", atoi (count), + (double) (t1 - t0) / CLOCKS_PER_SEC); +/* we can now free the table results */ + sqlite3_free_table (results); + } + + +/* disconnecting the test DB */ + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + printf ("close() error: %s\n", sqlite3_errmsg (handle)); + return -1; + } + printf ("\n\nsample successfully terminated\n"); + spatialite_cleanup_ex (cache); + return 0; + + abort: + sqlite3_close (handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown(); + return -1; +} diff --git a/src/spatialite/examples/demo5.c b/src/spatialite/examples/demo5.c new file mode 100644 index 0000000..85839d5 --- /dev/null +++ b/src/spatialite/examples/demo5.c @@ -0,0 +1,326 @@ +/* + +demo5.c + +Author: Sandro Furieri a-furieri@lqt.it + +This software is provided 'as-is', without any express or implied +warranty. In no event will the author be held liable for any +damages arising from the use of this software. + +Permission is granted to anyone to use this software for any +purpose, including commercial applications, and to alter it and +redistribute it freely + +*/ + +#include +#include +#include +#include + +/* +these headers are required in order to support +SQLite/SpatiaLite +*/ +#include +#include +#include + +#define ARG_NONE 0 +#define ARG_DB_PATH 1 +#define ARG_TABLE 2 +#define ARG_GEOMETRY 3 + +static void +do_print_list (gaiaVectorLayersListPtr list, int n_mode) +{ +/* prints the layers list */ + gaiaVectorLayerPtr lyr; + gaiaLayerAttributeFieldPtr fld; + const char *mode = "FAST"; + if (n_mode == GAIA_VECTORS_LIST_OPTIMISTIC) + mode = "OPTIMISTIC"; + if (n_mode == GAIA_VECTORS_LIST_PESSIMISTIC) + mode = "PESSIMISTIC"; + + printf ("\n****** VectorLayersList (mode=%s) *********\n", mode); + if (list == NULL) + { + printf ("The VectorLayersList is empty !!!\n\n"); + return; + } + + lyr = list->First; + while (lyr) + { + /* printing the Layer Header */ + const char *lyr_type = "UnknownType"; + const char *geom_type = "UnknownType"; + const char *dims = "UnknownDims"; + switch (lyr->LayerType) + { + case GAIA_VECTOR_TABLE: + lyr_type = "BasedOnSqlTable"; + break; + case GAIA_VECTOR_VIEW: + lyr_type = "BasedOnSqlView"; + break; + case GAIA_VECTOR_VIRTUAL: + lyr_type = "BasedOnVirtualShape"; + break; + }; + switch (lyr->GeometryType) + { + case GAIA_VECTOR_GEOMETRY: + geom_type = "GEOMETRY"; + break; + case GAIA_VECTOR_POINT: + geom_type = "POINT"; + break; + case GAIA_VECTOR_LINESTRING: + geom_type = "LINESTRING"; + break; + case GAIA_VECTOR_POLYGON: + geom_type = "POLYGON"; + break; + case GAIA_VECTOR_MULTIPOINT: + geom_type = "MULTIPOINT"; + break; + case GAIA_VECTOR_MULTILINESTRING: + geom_type = "MULTILINESTRING"; + break; + case GAIA_VECTOR_MULTIPOLYGON: + geom_type = "MULTIPOLYGON"; + break; + case GAIA_VECTOR_GEOMETRYCOLLECTION: + geom_type = "GEOMETRYCOLLECTION"; + break; + }; + switch (lyr->Dimensions) + { + case GAIA_XY: + dims = "XY"; + break; + case GAIA_XY_Z: + dims = "XYZ"; + break; + case GAIA_XY_M: + dims = "XYM"; + break; + case GAIA_XY_Z_M: + dims = "XYXM"; + break; + }; + printf ("VectorLayer: Type=%s TableName=%s\n", lyr_type, + lyr->TableName); + printf ("\tGeometryName=%s SRID=%d GeometryType=%s Dims=%s\n", + lyr->GeometryName, lyr->Srid, geom_type, dims); + if (lyr->ExtentInfos) + { + printf ("\tRowCount=%d\n", lyr->ExtentInfos->Count); + printf ("\tExtentMin %f / %f\n\tExtentMax %f / %f\n", + lyr->ExtentInfos->MinX, + lyr->ExtentInfos->MinY, lyr->ExtentInfos->MaxX, + lyr->ExtentInfos->MaxY); + } + if (lyr->AuthInfos) + printf ("\tReadOnly=%s Hidden=%s\n", + (lyr->AuthInfos->IsReadOnly == 0) ? "FALSE" : "TRUE", + (lyr->AuthInfos->IsHidden == 0) ? "FALSE" : "TRUE"); + fld = lyr->First; + while (fld) + { + /* printing AttributeFields infos */ + printf ("\t\tField #%d) FieldName=%s\n", fld->Ordinal, + fld->AttributeFieldName); + printf ("\t\t\t"); + if (fld->NullValuesCount) + printf ("NullValues=%d ", fld->NullValuesCount); + if (fld->IntegerValuesCount) + printf ("IntegerValues=%d ", fld->IntegerValuesCount); + if (fld->DoubleValuesCount) + printf ("DoubleValues=%d ", fld->DoubleValuesCount); + if (fld->TextValuesCount) + printf ("TextValues=%d ", fld->TextValuesCount); + if (fld->BlobValuesCount) + printf ("BlobValues=%d ", fld->BlobValuesCount); + printf ("\n"); + if (fld->MaxSize) + printf ("\t\t\tMaxSize/Length=%d\n", fld->MaxSize->MaxSize); + if (fld->IntRange) +#if defined(_WIN32) || defined(__MINGW32__) +/* CAVEAT: M$ runtime doesn't supports %lld for 64 bits */ + printf ("\t\t\tIntRange %I64d / %I64d\n", +#else + printf ("\t\t\tIntRange %lld / %lld\n", +#endif + fld->IntRange->MinValue, fld->IntRange->MaxValue); + if (fld->DoubleRange) + printf ("\t\t\tDoubleRange %f / %f\n", + fld->DoubleRange->MinValue, + fld->DoubleRange->MaxValue); + fld = fld->Next; + } + lyr = lyr->Next; + } + printf ("\n"); +} + +static void +do_help () +{ +/* printing the argument list */ + fprintf (stderr, "\n\nusage: demo5 ARGLIST\n"); + fprintf (stderr, + "==============================================================\n"); + fprintf (stderr, "-d or --db-path pathname the SpatiaLite DB path\n"); + fprintf (stderr, + "-t or --table table-name the table to be checked\n"); + fprintf (stderr, + "-g or --geometry column_name geometry column [optional]\n\n"); + fprintf (stderr, "you can specify one of the following modes:\n"); + fprintf (stderr, "-o or --optimistic OPTIMISTIC mode\n"); + fprintf (stderr, "-p or --pessimistic PESSIMISTIC mode\n"); +} + + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + int i; + int next_arg = ARG_NONE; + int mode = GAIA_VECTORS_LIST_OPTIMISTIC; + int error = 0; + const char *db_path = NULL; + const char *table = NULL; + const char *geometry = NULL; + gaiaVectorLayersListPtr list; + void *cache; + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + for (i = 1; i < argc; i++) + { + /* parsing the invocation arguments */ + if (next_arg != ARG_NONE) + { + switch (next_arg) + { + case ARG_DB_PATH: + db_path = argv[i]; + break; + case ARG_TABLE: + table = argv[i]; + break; + case ARG_GEOMETRY: + geometry = argv[i]; + break; + }; + next_arg = ARG_NONE; + continue; + } + if (strcasecmp (argv[i], "--help") == 0 + || strcmp (argv[i], "-h") == 0) + { + do_help (); + return -1; + } + if (strcasecmp (argv[i], "-d") == 0 + || strcasecmp (argv[i], "--db-path") == 0) + { + next_arg = ARG_DB_PATH; + continue; + } + if (strcasecmp (argv[i], "-t") == 0 + || strcmp (argv[i], "--table") == 0) + { + next_arg = ARG_TABLE; + continue; + } + if (strcasecmp (argv[i], "-g") == 0 + || strcmp (argv[i], "--geometry") == 0) + { + next_arg = ARG_GEOMETRY; + continue; + } + if (strcasecmp (argv[i], "-p") == 0 + || strcmp (argv[i], "--pessimistic") == 0) + { + mode = GAIA_VECTORS_LIST_PESSIMISTIC; + next_arg = ARG_NONE; + continue; + } + if (strcasecmp (argv[i], "-o") == 0 + || strcmp (argv[i], "--optimistic") == 0) + { + mode = GAIA_VECTORS_LIST_OPTIMISTIC; + next_arg = ARG_NONE; + continue; + } + fprintf (stderr, "unknown argument: %s\n", argv[i]); + error = 1; + } + if (error) + { + do_help (); + return -1; + } + +/* checking the arguments */ + if (!db_path) + { + fprintf (stderr, "did you forget setting the --db-path argument ?\n"); + error = 1; + } + + if (error) + { + do_help (); + return -1; + } + + +/* +trying to connect the test DB: +- this demo is intended to create an existing, already populated database +*/ + ret = sqlite3_open_v2 (db_path, &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + printf ("cannot open '%s': %s\n", argv[1], sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + cache = spatialite_alloc_connection (); + spatialite_init_ex (handle, cache, 0); + + +/* showing the SQLite version */ + printf ("SQLite version: %s\n", sqlite3_libversion ()); +/* showing the SpatiaLite version */ + printf ("SpatiaLite version: %s\n", spatialite_version ()); + printf ("\n\n"); + + +/* listing the requested layer(s) */ + list = gaiaGetVectorLayersList (handle, table, geometry, mode); + do_print_list (list, mode); + gaiaFreeVectorLayersList (list); + +/* disconnecting the test DB */ + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + printf ("close() error: %s\n", sqlite3_errmsg (handle)); + return -1; + } + spatialite_cleanup_ex (cache); + printf ("\n\nsample successfully terminated\n"); + spatialite_shutdown(); + return 0; +} diff --git a/src/spatialite/examples/examples.doxy b/src/spatialite/examples/examples.doxy new file mode 100644 index 0000000..8bd502c --- /dev/null +++ b/src/spatialite/examples/examples.doxy @@ -0,0 +1,611 @@ +/** \example demo1.c + +This is a sample C source showing how to use SQLite / SpatiaLite +from C. + +This program shows the basic functionality that will be required for most +SpatiaLite programs: + - how to connect an SQLite+SpatiaLite database + - executing an SQL query + - fetching values from a result set + - transforming BLOB-values into GEOMETRY + - elementary processing GEOMETRY + +The typical output of this demo is shown below, when run against the sample +database. +\verbatim +$ ./demo1 test-2.3.sqlite +SQLite version: 3.7.4 +SpatiaLite version: 3.0.0-beta1 + + +========= table 'HighWays' ======================== +row #1 + PK_UID = 1 + Name = 'Unknown' + Geometry = LINESTRING SRID=32632 length=8697.57 +row #2 + PK_UID = 2 + Name = 'Unknown' + Geometry = LINESTRING SRID=32632 length=39.79 +row #3 + PK_UID = 3 + Name = 'Unknown' + Geometry = LINESTRING SRID=32632 length=14610.39 +row #4 + PK_UID = 4 + Name = 'Unknown' + Geometry = LINESTRING SRID=32632 length=878.01 +row #5 + PK_UID = 5 + Name = 'Unknown' + Geometry = LINESTRING SRID=32632 length=10.05 + + +========= table 'Regions' ======================== +row #1 + PK_UID = 1 + Name = 'VENETO' + Geometry = MULTIPOLYGON SRID=32632 area=646397.81 +row #2 + PK_UID = 2 + Name = 'VENETO' + Geometry = MULTIPOLYGON SRID=32632 area=1290337.69 +row #3 + PK_UID = 3 + Name = 'VENETO' + Geometry = MULTIPOLYGON SRID=32632 area=8784619.92 +row #4 + PK_UID = 4 + Name = 'VENETO' + Geometry = MULTIPOLYGON SRID=32632 area=530524.68 +row #5 + PK_UID = 5 + Name = 'LIGURIA' + Geometry = MULTIPOLYGON SRID=32632 area=5450277374.12 + + +========= table 'Towns' ======================== +row #1 + PK_UID = 1 + Name = 'Brozolo' + Peoples = 435 + LocalCounc = 1 + County = 0 + Region = 0 + Geometry = POINT SRID=32632 +row #2 + PK_UID = 2 + Name = 'Campiglione-Fenile' + Peoples = 1284 + LocalCounc = 1 + County = 0 + Region = 0 + Geometry = POINT SRID=32632 +row #3 + PK_UID = 3 + Name = 'Canischio' + Peoples = 274 + LocalCounc = 1 + County = 0 + Region = 0 + Geometry = POINT SRID=32632 +row #4 + PK_UID = 4 + Name = 'Cavagnolo' + Peoples = 2281 + LocalCounc = 1 + County = 0 + Region = 0 + Geometry = POINT SRID=32632 +row #5 + PK_UID = 5 + Name = 'Magliano Alfieri' + Peoples = 1674 + LocalCounc = 1 + County = 0 + Region = 0 + Geometry = POINT SRID=32632 + + + + +sample successfully terminated +\endverbatim + +*/ + +/** \example demo2.c + +This is a sample C source showing how to manipulate GEOMETRY within +Spatialite. It essentially follows on from the functionality shown in the +demo1.c example, and covers: + - creating geometries + - exploring geometries + - querying the basic properties of a geometry + + Note that this does not require a database command line argument. Here is a + typical run: +\verbatim +$ ./demo2 +step#1: POINT Dimension=0 IsValid=1 + POINT 0/1 x=1.5000 y=2.7500 + +step#2: LINESTRING Dimension=1 IsValid=1 + LINESTRING 0/1 has 5 vertices + vertex 0/5 x=1.0000 y=1.0000 + vertex 1/5 x=2.0000 y=1.0000 + vertex 2/5 x=2.0000 y=2.0000 + vertex 3/5 x=100.0000 y=2.0000 + vertex 4/5 x=100.0000 y=100.0000 + +step#3: POLYGON Dimension=2 IsValid=1 + POLYGON 0/1 has 2 holes + ExteriorRing has 5 vertices + vertex 0/5 x=0.0000 y=0.0000 + vertex 1/5 x=50.0000 y=0.0000 + vertex 2/5 x=50.0000 y=50.0000 + vertex 3/5 x=0.0000 y=50.0000 + vertex 4/5 x=0.0000 y=0.0000 + InteriorRing 0/2 has 5 vertices + vertex 0/5 x=40.0000 y=40.0000 + vertex 1/5 x=41.0000 y=40.0000 + vertex 2/5 x=41.0000 y=41.0000 + vertex 3/5 x=40.0000 y=41.0000 + vertex 4/5 x=40.0000 y=40.0000 + InteriorRing 1/2 has 5 vertices + vertex 0/5 x=30.0000 y=30.0000 + vertex 1/5 x=31.0000 y=30.0000 + vertex 2/5 x=31.0000 y=31.0000 + vertex 3/5 x=30.0000 y=31.0000 + vertex 4/5 x=30.0000 y=30.0000 + +step#4: MULTIPOINT Dimension=0 IsValid=1 + POINT 0/5 x=5.0000 y=5.0000 + POINT 1/5 x=15.0000 y=5.0000 + POINT 2/5 x=5.0000 y=15.0000 + POINT 3/5 x=25.0000 y=5.0000 + POINT 4/5 x=5.0000 y=25.0000 + +step#5: MULTILINESTRING Dimension=1 IsValid=1 + LINESTRING 0/2 has 2 vertices + vertex 0/2 x=30.0000 y=10.0000 + vertex 1/2 x=10.0000 y=30.0000 + LINESTRING 1/2 has 2 vertices + vertex 0/2 x=40.0000 y=50.0000 + vertex 1/2 x=50.0000 y=40.0000 + +step#6: MULTIPOLYGON Dimension=2 IsValid=1 + POLYGON 0/2 has 0 holes + ExteriorRing has 5 vertices + vertex 0/5 x=60.0000 y=60.0000 + vertex 1/5 x=70.0000 y=60.0000 + vertex 2/5 x=70.0000 y=70.0000 + vertex 3/5 x=60.0000 y=70.0000 + vertex 4/5 x=60.0000 y=60.0000 + POLYGON 1/2 has 0 holes + ExteriorRing has 5 vertices + vertex 0/5 x=80.0000 y=80.0000 + vertex 1/5 x=90.0000 y=80.0000 + vertex 2/5 x=90.0000 y=90.0000 + vertex 3/5 x=80.0000 y=90.0000 + vertex 4/5 x=80.0000 y=80.0000 + +step#7: GEOMETRYCOLLECTION Dimension=2 IsValid=1 + POINT 0/2 x=100.0000 y=100.0000 + POINT 1/2 x=100.0000 y=0.0000 + LINESTRING 0/2 has 2 vertices + vertex 0/2 x=130.0000 y=110.0000 + vertex 1/2 x=110.0000 y=130.0000 + LINESTRING 1/2 has 2 vertices + vertex 0/2 x=140.0000 y=150.0000 + vertex 1/2 x=150.0000 y=140.0000 + POLYGON 0/2 has 0 holes + ExteriorRing has 5 vertices + vertex 0/5 x=160.0000 y=160.0000 + vertex 1/5 x=170.0000 y=160.0000 + vertex 2/5 x=170.0000 y=170.0000 + vertex 3/5 x=160.0000 y=170.0000 + vertex 4/5 x=160.0000 y=160.0000 + POLYGON 1/2 has 0 holes + ExteriorRing has 5 vertices + vertex 0/5 x=180.0000 y=180.0000 + vertex 1/5 x=190.0000 y=180.0000 + vertex 2/5 x=190.0000 y=190.0000 + vertex 3/5 x=180.0000 y=190.0000 + vertex 4/5 x=180.0000 y=180.0000 + +step#8: checking WKT representations + +GEOMETRYCOLLECTION(POINT(1.5 2.75)) + +GEOMETRYCOLLECTION(LINESTRING(1 1, 2 1, 2 2, 100 2, 100 100)) + +GEOMETRYCOLLECTION(POLYGON((0 0, 50 0, 50 50, 0 50, 0 0), (40 40, 41 40, 41 41, 40 41, 40 40), (30 30, 31 30, 31 31, 30 31, 30 30))) + +GEOMETRYCOLLECTION(POINT(5 5), POINT(15 5), POINT(5 15), POINT(25 5), POINT(5 25)) + +GEOMETRYCOLLECTION(LINESTRING(30 10, 10 30), LINESTRING(40 50, 50 40)) + +GEOMETRYCOLLECTION(POLYGON((60 60, 70 60, 70 70, 60 70, 60 60)), POLYGON((80 80, 90 80, 90 90, 80 90, 80 80))) + +GEOMETRYCOLLECTION(POINT(100 100), POINT(100 0), LINESTRING(130 110, 110 130), LINESTRING(140 150, 150 140), POLYGON((160 160, 170 160, 170 170, 160 170, 160 160)), POLYGON((180 180, 190 180, 190 190, 180 190, 180 180))) +\endverbatim +*/ + +/** \example demo3.c + +This is a sample C source showing how to use the SQLite / SpatiaLite +Spatial Index [RTree]. + +It follows on from demo1.c. + +The main steps in this example are: + - creating a new database + - creating a sample geo-table + - inserting 1 million rows into this table + - performing some spatial queries without Spatial Indexing + - performing the same queries using the Spatial Index + +The typical output of this demo is shown below (where test.sqlite does not +exist before the run). + +\verbatim +$ ./demo3 test.sqlite +SQLite version: 3.7.4 +SpatiaLite version: 3.0.0-beta1 + + + +now we are going to insert 1 million POINTs; wait, please ... + +insert row: 25000 [elapsed time: 1.910] +insert row: 50000 [elapsed time: 4.050] +insert row: 75000 [elapsed time: 6.270] +insert row: 100000 [elapsed time: 8.460] +insert row: 125000 [elapsed time: 10.740] +insert row: 150000 [elapsed time: 12.910] +insert row: 175000 [elapsed time: 15.080] +insert row: 200000 [elapsed time: 17.350] +insert row: 225000 [elapsed time: 19.610] +insert row: 250000 [elapsed time: 21.890] +insert row: 275000 [elapsed time: 24.170] +insert row: 300000 [elapsed time: 26.380] +insert row: 325000 [elapsed time: 28.650] +insert row: 350000 [elapsed time: 30.900] +insert row: 375000 [elapsed time: 33.130] +insert row: 400000 [elapsed time: 35.340] +insert row: 425000 [elapsed time: 37.540] +insert row: 450000 [elapsed time: 39.760] +insert row: 475000 [elapsed time: 41.980] +insert row: 500000 [elapsed time: 44.220] +insert row: 525000 [elapsed time: 46.500] +insert row: 550000 [elapsed time: 48.740] +insert row: 575000 [elapsed time: 50.960] +insert row: 600000 [elapsed time: 53.190] +insert row: 625000 [elapsed time: 55.430] +insert row: 650000 [elapsed time: 57.670] +insert row: 675000 [elapsed time: 59.900] +insert row: 700000 [elapsed time: 62.130] +insert row: 725000 [elapsed time: 64.400] +insert row: 750000 [elapsed time: 66.660] +insert row: 775000 [elapsed time: 68.900] +insert row: 800000 [elapsed time: 71.140] +insert row: 825000 [elapsed time: 73.410] +insert row: 850000 [elapsed time: 75.670] +insert row: 875000 [elapsed time: 77.940] +insert row: 900000 [elapsed time: 80.230] +insert row: 925000 [elapsed time: 82.540] +insert row: 950000 [elapsed time: 84.840] +insert row: 975000 [elapsed time: 87.150] +insert row: 1000000 [elapsed time: 89.450] + +performing test#0 - not using Spatial Index +Count(*) = 25 [elapsed time: 1.2700] + +performing test#1 - not using Spatial Index +Count(*) = 25 [elapsed time: 1.2700] + +performing test#2 - not using Spatial Index +Count(*) = 25 [elapsed time: 1.2900] + +performing test#0 - using the R*Tree Spatial Index +Count(*) = 25 [elapsed time: 0.0000] + +performing test#1 - using the R*Tree Spatial Index +Count(*) = 25 [elapsed time: 0.0000] + +performing test#2 - using the R*Tree Spatial Index +Count(*) = 25 [elapsed time: 0.0000] + + +sample successfully terminated +\endverbatim + +Note the significant difference in elapsed time associated with use of an +appropriate index. + +*/ + +/** \example demo4.c + +This is a sample C source showing how to use the SQLite / SpatiaLite +Spatial Index [MbrCache]. + +It is very similar to demo3.c, but uses a different indexing approach + +The main steps in this example are: + - creating a new database + - creating a sample geo-table + - inserting 1 million rows into this table + - performing some spatial queries without Spatial Indexing + - performing the same queries using the Spatial Index + +The typical output of this demo is shown below (where test.sqlite does not +exist before the run). + +\verbatim +$ ./demo4 test.sqlite +SQLite version: 3.7.4 +SpatiaLite version: 3.0.0-beta1 + + + +now we are going to insert 1 million POINTs; wait, please ... + +insert row: 25000 [elapsed time: 0.370] +insert row: 50000 [elapsed time: 0.820] +insert row: 75000 [elapsed time: 1.280] +insert row: 100000 [elapsed time: 1.750] +insert row: 125000 [elapsed time: 2.210] +insert row: 150000 [elapsed time: 2.690] +insert row: 175000 [elapsed time: 3.180] +insert row: 200000 [elapsed time: 3.670] +insert row: 225000 [elapsed time: 4.210] +insert row: 250000 [elapsed time: 4.720] +insert row: 275000 [elapsed time: 5.240] +insert row: 300000 [elapsed time: 5.780] +insert row: 325000 [elapsed time: 6.330] +insert row: 350000 [elapsed time: 6.910] +insert row: 375000 [elapsed time: 7.510] +insert row: 400000 [elapsed time: 8.120] +insert row: 425000 [elapsed time: 8.750] +insert row: 450000 [elapsed time: 9.420] +insert row: 475000 [elapsed time: 10.120] +insert row: 500000 [elapsed time: 10.850] +insert row: 525000 [elapsed time: 11.610] +insert row: 550000 [elapsed time: 12.390] +insert row: 575000 [elapsed time: 13.200] +insert row: 600000 [elapsed time: 14.040] +insert row: 625000 [elapsed time: 14.900] +insert row: 650000 [elapsed time: 15.790] +insert row: 675000 [elapsed time: 16.700] +insert row: 700000 [elapsed time: 17.650] +insert row: 725000 [elapsed time: 18.620] +insert row: 750000 [elapsed time: 19.610] +insert row: 775000 [elapsed time: 20.650] +insert row: 800000 [elapsed time: 21.700] +insert row: 825000 [elapsed time: 22.760] +insert row: 850000 [elapsed time: 23.860] +insert row: 875000 [elapsed time: 25.060] +insert row: 900000 [elapsed time: 26.290] +insert row: 925000 [elapsed time: 27.480] +insert row: 950000 [elapsed time: 28.760] +insert row: 975000 [elapsed time: 30.020] +insert row: 1000000 [elapsed time: 31.280] + +performing test#0 - not using Spatial Index +Count(*) = 25 [elapsed time: 1.2500] + +performing test#1 - not using Spatial Index +Count(*) = 25 [elapsed time: 1.2400] + +performing test#2 - not using Spatial Index +Count(*) = 25 [elapsed time: 1.2400] + +performing test#0 - using the MBR cache Spatial Index +Count(*) = 25 [elapsed time: 0.0000] + +performing test#1 - using the MBR cache Spatial Index +Count(*) = 25 [elapsed time: 0.0000] + +performing test#2 - using the MBR cache Spatial Index +Count(*) = 25 [elapsed time: 0.0000] + + +sample successfully terminated +\endverbatim + +As for demo3.c, note the significant speed difference between the indexed +and non-indexed queries. +*/ + +/** \example demo5.c + +This is a sample C source showing how to use the SpatiaLite's API +gaiaGetVectorLayersList(), i.e. the one gathering statistic infos +for Vector Layers. +The typical output of this demo is shown below. + +By simply specifying a DB-path demo5 will print the complete list +of all Vector Layers found in that DB: + +\verbatim +$ ./demo5 /home/sandro/db-4.0.sqlite +SQLite version: 3.7.11 +SpatiaLite version: 4.0.0-RC2 + +****** VectorLayersList (mode=FAST) ********* +VectorLayer: Type=BasedOnSqlTable TableName=com2011 + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=8094 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220492.095518 + ReadOnly=FALSE Hidden=FALSE +VectorLayer: Type=BasedOnSqlTable TableName=prov2011 + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=110 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220491.200018 + ReadOnly=FALSE Hidden=FALSE +VectorLayer: Type=BasedOnSqlTable TableName=reg2011 + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=20 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220491.200018 + ReadOnly=FALSE Hidden=FALSE +VectorLayer: Type=BasedOnSqlView TableName=com_prov + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=8094 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220492.095518 + ReadOnly=FALSE Hidden=FALSE +VectorLayer: Type=BasedOnSqlView TableName=prov_reg + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=110 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220491.200018 + ReadOnly=TRUE Hidden=FALSE +VectorLayer: Type=BasedOnVirtualShape TableName=com2011a + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=8094 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220492.095518 +VectorLayer: Type=BasedOnVirtualShape TableName=prov2011a + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=110 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220491.200018 +VectorLayer: Type=BasedOnVirtualShape TableName=reg2011a + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=20 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220491.200018 + + +****** VectorLayersList (mode=PRECISE) ********* +VectorLayer: Type=BasedOnSqlTable TableName=com2011 + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=8094 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220492.095518 + ReadOnly=FALSE Hidden=FALSE +VectorLayer: Type=BasedOnSqlTable TableName=prov2011 + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=110 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220491.200018 + ReadOnly=FALSE Hidden=FALSE +VectorLayer: Type=BasedOnSqlTable TableName=reg2011 + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=20 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220491.200018 + ReadOnly=FALSE Hidden=FALSE +VectorLayer: Type=BasedOnSqlView TableName=com_prov + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=8094 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220492.095518 + ReadOnly=FALSE Hidden=FALSE +VectorLayer: Type=BasedOnSqlView TableName=prov_reg + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=110 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220491.200018 + ReadOnly=TRUE Hidden=FALSE +VectorLayer: Type=BasedOnVirtualShape TableName=com2011a + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=8094 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220492.095518 +VectorLayer: Type=BasedOnVirtualShape TableName=prov2011a + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=110 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220491.200018 +VectorLayer: Type=BasedOnVirtualShape TableName=reg2011a + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=20 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220491.200018 + +sample successfully terminated +\endverbatim + +By optionally specifying a Layer name demo5 will print a more detailed +list for that single Layer: + +\verbatim +$ ./demo5 /home/sandro/db-4.0.sqlite com2011 +SQLite version: 3.7.11 +SpatiaLite version: 4.0.0-RC2 + +****** VectorLayersList (mode=FAST) ********* +VectorLayer: Type=BasedOnSqlTable TableName=com2011 + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=8094 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220492.095518 + ReadOnly=FALSE Hidden=FALSE + Field #0) FieldName=PRO_COM + IntegerValues=8094 + IntRange 1001 / 110010 + Field #1) FieldName=COD_REG + IntegerValues=8094 + IntRange 1 / 20 + Field #2) FieldName=COD_PRO + IntegerValues=8094 + IntRange 1 / 110 + Field #3) FieldName=NOME_COM + TextValues=8094 + MaxSize/Length=35 + Field #4) FieldName=NOME_TED + TextValues=8094 + MaxSize/Length=36 + Field #5) FieldName=SHAPE_Leng + DoubleValues=8094 + DoubleRange 1566.303618 / 327044.574999 + Field #6) FieldName=SHAPE_Area + DoubleValues=8094 + DoubleRange 120613.967719 / 1287358944.600000 + Field #7) FieldName=Geometry + BlobValues=8094 + MaxSize/Length=222151 + + +****** VectorLayersList (mode=PRECISE) ********* +VectorLayer: Type=BasedOnSqlTable TableName=com2011 + GeometryName=geometry SRID=23032 GeometryType=MULTIPOLYGON Dims=XY + RowCount=8094 + ExtentMin 313360.999831 / 3933878.175118 + ExtentMax 1312106.500031 / 5220492.095518 + ReadOnly=FALSE Hidden=FALSE + Field #0) FieldName=PRO_COM + IntegerValues=8094 + IntRange 1001 / 110010 + Field #1) FieldName=COD_REG + IntegerValues=8094 + IntRange 1 / 20 + Field #2) FieldName=COD_PRO + IntegerValues=8094 + IntRange 1 / 110 + Field #3) FieldName=NOME_COM + TextValues=8094 + MaxSize/Length=35 + Field #4) FieldName=NOME_TED + TextValues=8094 + MaxSize/Length=36 + Field #5) FieldName=SHAPE_Leng + DoubleValues=8094 + DoubleRange 1566.303618 / 327044.574999 + Field #6) FieldName=SHAPE_Area + DoubleValues=8094 + DoubleRange 120613.967719 / 1287358944.600000 + Field #7) FieldName=Geometry + BlobValues=8094 + MaxSize/Length=222151 + +sample successfully terminated +\endverbatim +*/ diff --git a/src/spatialite/install-sh b/src/spatialite/install-sh new file mode 100755 index 0000000..6781b98 --- /dev/null +++ b/src/spatialite/install-sh @@ -0,0 +1,520 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2009-04-28.21; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# 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 +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# `make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +nl=' +' +IFS=" "" $nl" + +# set DOITPROG to echo to test this script + +# Don't use :- since 4.3BSD and earlier shells don't like it. +doit=${DOITPROG-} +if test -z "$doit"; then + doit_exec=exec +else + doit_exec=$doit +fi + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_glob='?' +initialize_posix_glob=' + test "$posix_glob" != "?" || { + if (set -f) 2>/dev/null; then + posix_glob= + else + posix_glob=: + fi + } +' + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +no_target_directory= + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *' '* | *' +'* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) dst_arg=$2 + shift;; + + -T) no_target_directory=true;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call `install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + trap '(exit $?); exit' 1 2 13 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names starting with `-'. + case $src in + -*) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + + dst=$dst_arg + # Protect names starting with `-'. + case $dst in + -*) dst=./$dst;; + esac + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test -n "$no_target_directory"; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + # Prefer dirname, but fall back on a substitute if dirname fails. + dstdir=` + (dirname "$dst") 2>/dev/null || + expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$dst" : 'X\(//\)[^/]' \| \ + X"$dst" : 'X\(//\)$' \| \ + X"$dst" : 'X\(/\)' \| . 2>/dev/null || + echo X"$dst" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q' + ` + + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writeable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + -*) prefix='./';; + *) prefix='';; + esac + + eval "$initialize_posix_glob" + + oIFS=$IFS + IFS=/ + $posix_glob set -f + set fnord $dstdir + shift + $posix_glob set +f + IFS=$oIFS + + prefixes= + + for d + do + test -z "$d" && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + + eval "$initialize_posix_glob" && + $posix_glob set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + $posix_glob set +f && + + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/src/spatialite/ltmain.sh b/src/spatialite/ltmain.sh new file mode 100644 index 0000000..c2852d8 --- /dev/null +++ b/src/spatialite/ltmain.sh @@ -0,0 +1,9661 @@ + +# libtool (GNU libtool) 2.4.2 +# Written by Gordon Matzigkeit , 1996 + +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006, +# 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. +# This is free software; see the source for copying conditions. There is NO +# warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +# GNU Libtool is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, +# or obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +# Usage: $progname [OPTION]... [MODE-ARG]... +# +# Provide generalized library-building support services. +# +# --config show all configuration variables +# --debug enable verbose shell tracing +# -n, --dry-run display commands without modifying any files +# --features display basic configuration information and exit +# --mode=MODE use operation mode MODE +# --preserve-dup-deps don't remove duplicate dependency libraries +# --quiet, --silent don't print informational messages +# --no-quiet, --no-silent +# print informational messages (default) +# --no-warn don't display warning messages +# --tag=TAG use configuration variables from tag TAG +# -v, --verbose print more informational messages than default +# --no-verbose don't print the extra informational messages +# --version print version information +# -h, --help, --help-all print short, long, or detailed help message +# +# MODE must be one of the following: +# +# clean remove files from the build directory +# compile compile a source file into a libtool object +# execute automatically set library path, then run a program +# finish complete the installation of libtool libraries +# install install libraries or executables +# link create a library or an executable +# uninstall remove libraries from an installed directory +# +# MODE-ARGS vary depending on the MODE. When passed as first option, +# `--mode=MODE' may be abbreviated as `MODE' or a unique abbreviation of that. +# Try `$progname --help --mode=MODE' for a more detailed description of MODE. +# +# When reporting a bug, please describe a test case to reproduce it and +# include the following information: +# +# host-triplet: $host +# shell: $SHELL +# compiler: $LTCC +# compiler flags: $LTCFLAGS +# linker: $LD (gnu? $with_gnu_ld) +# $progname: (GNU libtool) 2.4.2 Debian-2.4.2-1ubuntu1 +# automake: $automake_version +# autoconf: $autoconf_version +# +# Report bugs to . +# GNU libtool home page: . +# General help using GNU software: . + +PROGRAM=libtool +PACKAGE=libtool +VERSION="2.4.2 Debian-2.4.2-1ubuntu1" +TIMESTAMP="" +package_revision=1.3337 + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +$1 +_LTECHO_EOF' +} + +# NLS nuisances: We save the old values to restore during execute mode. +lt_user_locale= +lt_safe_locale= +for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES +do + eval "if test \"\${$lt_var+set}\" = set; then + save_$lt_var=\$$lt_var + $lt_var=C + export $lt_var + lt_user_locale=\"$lt_var=\\\$save_\$lt_var; \$lt_user_locale\" + lt_safe_locale=\"$lt_var=C; \$lt_safe_locale\" + fi" +done +LC_ALL=C +LANGUAGE=C +export LANGUAGE LC_ALL + +$lt_unset CDPATH + + +# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh +# is ksh but when the shell is invoked as "sh" and the current value of +# the _XPG environment variable is not equal to 1 (one), the special +# positional parameter $0, within a function call, is the name of the +# function. +progpath="$0" + + + +: ${CP="cp -f"} +test "${ECHO+set}" = set || ECHO=${as_echo-'printf %s\n'} +: ${MAKE="make"} +: ${MKDIR="mkdir"} +: ${MV="mv -f"} +: ${RM="rm -f"} +: ${SHELL="${CONFIG_SHELL-/bin/sh}"} +: ${Xsed="$SED -e 1s/^X//"} + +# Global variables: +EXIT_SUCCESS=0 +EXIT_FAILURE=1 +EXIT_MISMATCH=63 # $? = 63 is used to indicate version mismatch to missing. +EXIT_SKIP=77 # $? = 77 is used to indicate a skipped test to automake. + +exit_status=$EXIT_SUCCESS + +# Make sure IFS has a sensible default +lt_nl=' +' +IFS=" $lt_nl" + +dirname="s,/[^/]*$,," +basename="s,^.*/,," + +# func_dirname file append nondir_replacement +# Compute the dirname of FILE. If nonempty, add APPEND to the result, +# otherwise set result to NONDIR_REPLACEMENT. +func_dirname () +{ + func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi +} # func_dirname may be replaced by extended shell implementation + + +# func_basename file +func_basename () +{ + func_basename_result=`$ECHO "${1}" | $SED "$basename"` +} # func_basename may be replaced by extended shell implementation + + +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + # Extract subdirectory from the argument. + func_dirname_result=`$ECHO "${1}" | $SED -e "$dirname"` + if test "X$func_dirname_result" = "X${1}"; then + func_dirname_result="${3}" + else + func_dirname_result="$func_dirname_result${2}" + fi + func_basename_result=`$ECHO "${1}" | $SED -e "$basename"` +} # func_dirname_and_basename may be replaced by extended shell implementation + + +# func_stripname prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# func_strip_suffix prefix name +func_stripname () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname may be replaced by extended shell implementation + + +# These SED scripts presuppose an absolute path with a trailing slash. +pathcar='s,^/\([^/]*\).*$,\1,' +pathcdr='s,^/[^/]*,,' +removedotparts=':dotsl + s@/\./@/@g + t dotsl + s,/\.$,/,' +collapseslashes='s@/\{1,\}@/@g' +finalslash='s,/*$,/,' + +# func_normal_abspath PATH +# Remove doubled-up and trailing slashes, "." path components, +# and cancel out any ".." path components in PATH after making +# it an absolute path. +# value returned in "$func_normal_abspath_result" +func_normal_abspath () +{ + # Start from root dir and reassemble the path. + func_normal_abspath_result= + func_normal_abspath_tpath=$1 + func_normal_abspath_altnamespace= + case $func_normal_abspath_tpath in + "") + # Empty path, that just means $cwd. + func_stripname '' '/' "`pwd`" + func_normal_abspath_result=$func_stripname_result + return + ;; + # The next three entries are used to spot a run of precisely + # two leading slashes without using negated character classes; + # we take advantage of case's first-match behaviour. + ///*) + # Unusual form of absolute path, do nothing. + ;; + //*) + # Not necessarily an ordinary path; POSIX reserves leading '//' + # and for example Cygwin uses it to access remote file shares + # over CIFS/SMB, so we conserve a leading double slash if found. + func_normal_abspath_altnamespace=/ + ;; + /*) + # Absolute path, do nothing. + ;; + *) + # Relative path, prepend $cwd. + func_normal_abspath_tpath=`pwd`/$func_normal_abspath_tpath + ;; + esac + # Cancel out all the simple stuff to save iterations. We also want + # the path to end with a slash for ease of parsing, so make sure + # there is one (and only one) here. + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$removedotparts" -e "$collapseslashes" -e "$finalslash"` + while :; do + # Processed it all yet? + if test "$func_normal_abspath_tpath" = / ; then + # If we ascended to the root using ".." the result may be empty now. + if test -z "$func_normal_abspath_result" ; then + func_normal_abspath_result=/ + fi + break + fi + func_normal_abspath_tcomponent=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcar"` + func_normal_abspath_tpath=`$ECHO "$func_normal_abspath_tpath" | $SED \ + -e "$pathcdr"` + # Figure out what to do with it + case $func_normal_abspath_tcomponent in + "") + # Trailing empty path component, ignore it. + ;; + ..) + # Parent dir; strip last assembled component from result. + func_dirname "$func_normal_abspath_result" + func_normal_abspath_result=$func_dirname_result + ;; + *) + # Actual path component, append it. + func_normal_abspath_result=$func_normal_abspath_result/$func_normal_abspath_tcomponent + ;; + esac + done + # Restore leading double-slash if one was found on entry. + func_normal_abspath_result=$func_normal_abspath_altnamespace$func_normal_abspath_result +} + +# func_relative_path SRCDIR DSTDIR +# generates a relative path from SRCDIR to DSTDIR, with a trailing +# slash if non-empty, suitable for immediately appending a filename +# without needing to append a separator. +# value returned in "$func_relative_path_result" +func_relative_path () +{ + func_relative_path_result= + func_normal_abspath "$1" + func_relative_path_tlibdir=$func_normal_abspath_result + func_normal_abspath "$2" + func_relative_path_tbindir=$func_normal_abspath_result + + # Ascend the tree starting from libdir + while :; do + # check if we have found a prefix of bindir + case $func_relative_path_tbindir in + $func_relative_path_tlibdir) + # found an exact match + func_relative_path_tcancelled= + break + ;; + $func_relative_path_tlibdir*) + # found a matching prefix + func_stripname "$func_relative_path_tlibdir" '' "$func_relative_path_tbindir" + func_relative_path_tcancelled=$func_stripname_result + if test -z "$func_relative_path_result"; then + func_relative_path_result=. + fi + break + ;; + *) + func_dirname $func_relative_path_tlibdir + func_relative_path_tlibdir=${func_dirname_result} + if test "x$func_relative_path_tlibdir" = x ; then + # Have to descend all the way to the root! + func_relative_path_result=../$func_relative_path_result + func_relative_path_tcancelled=$func_relative_path_tbindir + break + fi + func_relative_path_result=../$func_relative_path_result + ;; + esac + done + + # Now calculate path; take care to avoid doubling-up slashes. + func_stripname '' '/' "$func_relative_path_result" + func_relative_path_result=$func_stripname_result + func_stripname '/' '/' "$func_relative_path_tcancelled" + if test "x$func_stripname_result" != x ; then + func_relative_path_result=${func_relative_path_result}/${func_stripname_result} + fi + + # Normalisation. If bindir is libdir, return empty string, + # else relative path ending with a slash; either way, target + # file name can be directly appended. + if test ! -z "$func_relative_path_result"; then + func_stripname './' '' "$func_relative_path_result/" + func_relative_path_result=$func_stripname_result + fi +} + +# The name of this program: +func_dirname_and_basename "$progpath" +progname=$func_basename_result + +# Make sure we have an absolute path for reexecution: +case $progpath in + [\\/]*|[A-Za-z]:\\*) ;; + *[\\/]*) + progdir=$func_dirname_result + progdir=`cd "$progdir" && pwd` + progpath="$progdir/$progname" + ;; + *) + save_IFS="$IFS" + IFS=${PATH_SEPARATOR-:} + for progdir in $PATH; do + IFS="$save_IFS" + test -x "$progdir/$progname" && break + done + IFS="$save_IFS" + test -n "$progdir" || progdir=`pwd` + progpath="$progdir/$progname" + ;; +esac + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +Xsed="${SED}"' -e 1s/^X//' +sed_quote_subst='s/\([`"$\\]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\(["`\\]\)/\\\1/g' + +# Sed substitution that turns a string into a regex matching for the +# string literally. +sed_make_literal_regex='s,[].[^$\\*\/],\\&,g' + +# Sed substitution that converts a w32 file name or path +# which contains forward slashes, into one that contains +# (escaped) backslashes. A very naive implementation. +lt_sed_naive_backslashify='s|\\\\*|\\|g;s|/|\\|g;s|\\|\\\\|g' + +# Re-`\' parameter expansions in output of double_quote_subst that were +# `\'-ed in input to the same. If an odd number of `\' preceded a '$' +# in input to double_quote_subst, that '$' was protected from expansion. +# Since each input `\' is now two `\'s, look for any number of runs of +# four `\'s followed by two `\'s and then a '$'. `\' that '$'. +bs='\\' +bs2='\\\\' +bs4='\\\\\\\\' +dollar='\$' +sed_double_backslash="\ + s/$bs4/&\\ +/g + s/^$bs2$dollar/$bs&/ + s/\\([^$bs]\\)$bs2$dollar/\\1$bs2$bs$dollar/g + s/\n//g" + +# Standard options: +opt_dry_run=false +opt_help=false +opt_quiet=false +opt_verbose=false +opt_warning=: + +# func_echo arg... +# Echo program name prefixed message, along with the current mode +# name if it has been set yet. +func_echo () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }$*" +} + +# func_verbose arg... +# Echo program name prefixed message in verbose mode only. +func_verbose () +{ + $opt_verbose && func_echo ${1+"$@"} + + # A bug in bash halts the script if the last line of a function + # fails when set -e is in force, so we need another command to + # work around that: + : +} + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +# func_error arg... +# Echo program name prefixed message to standard error. +func_error () +{ + $ECHO "$progname: ${opt_mode+$opt_mode: }"${1+"$@"} 1>&2 +} + +# func_warning arg... +# Echo program name prefixed warning message to standard error. +func_warning () +{ + $opt_warning && $ECHO "$progname: ${opt_mode+$opt_mode: }warning: "${1+"$@"} 1>&2 + + # bash bug again: + : +} + +# func_fatal_error arg... +# Echo program name prefixed message to standard error, and exit. +func_fatal_error () +{ + func_error ${1+"$@"} + exit $EXIT_FAILURE +} + +# func_fatal_help arg... +# Echo program name prefixed message to standard error, followed by +# a help hint, and exit. +func_fatal_help () +{ + func_error ${1+"$@"} + func_fatal_error "$help" +} +help="Try \`$progname --help' for more information." ## default + + +# func_grep expression filename +# Check whether EXPRESSION matches any line of FILENAME, without output. +func_grep () +{ + $GREP "$1" "$2" >/dev/null 2>&1 +} + + +# func_mkdir_p directory-path +# Make sure the entire path to DIRECTORY-PATH is available. +func_mkdir_p () +{ + my_directory_path="$1" + my_dir_list= + + if test -n "$my_directory_path" && test "$opt_dry_run" != ":"; then + + # Protect directory names starting with `-' + case $my_directory_path in + -*) my_directory_path="./$my_directory_path" ;; + esac + + # While some portion of DIR does not yet exist... + while test ! -d "$my_directory_path"; do + # ...make a list in topmost first order. Use a colon delimited + # list incase some portion of path contains whitespace. + my_dir_list="$my_directory_path:$my_dir_list" + + # If the last portion added has no slash in it, the list is done + case $my_directory_path in */*) ;; *) break ;; esac + + # ...otherwise throw away the child directory and loop + my_directory_path=`$ECHO "$my_directory_path" | $SED -e "$dirname"` + done + my_dir_list=`$ECHO "$my_dir_list" | $SED 's,:*$,,'` + + save_mkdir_p_IFS="$IFS"; IFS=':' + for my_dir in $my_dir_list; do + IFS="$save_mkdir_p_IFS" + # mkdir can fail with a `File exist' error if two processes + # try to create one of the directories concurrently. Don't + # stop in that case! + $MKDIR "$my_dir" 2>/dev/null || : + done + IFS="$save_mkdir_p_IFS" + + # Bail out if we (or some other process) failed to create a directory. + test -d "$my_directory_path" || \ + func_fatal_error "Failed to create \`$1'" + fi +} + + +# func_mktempdir [string] +# Make a temporary directory that won't clash with other running +# libtool processes, and avoids race conditions if possible. If +# given, STRING is the basename for that directory. +func_mktempdir () +{ + my_template="${TMPDIR-/tmp}/${1-$progname}" + + if test "$opt_dry_run" = ":"; then + # Return a directory name, but don't create it in dry-run mode + my_tmpdir="${my_template}-$$" + else + + # If mktemp works, use that first and foremost + my_tmpdir=`mktemp -d "${my_template}-XXXXXXXX" 2>/dev/null` + + if test ! -d "$my_tmpdir"; then + # Failing that, at least try and use $RANDOM to avoid a race + my_tmpdir="${my_template}-${RANDOM-0}$$" + + save_mktempdir_umask=`umask` + umask 0077 + $MKDIR "$my_tmpdir" + umask $save_mktempdir_umask + fi + + # If we're not in dry-run mode, bomb out on failure + test -d "$my_tmpdir" || \ + func_fatal_error "cannot create temporary directory \`$my_tmpdir'" + fi + + $ECHO "$my_tmpdir" +} + + +# func_quote_for_eval arg +# Aesthetically quote ARG to be evaled later. +# This function returns two values: FUNC_QUOTE_FOR_EVAL_RESULT +# is double-quoted, suitable for a subsequent eval, whereas +# FUNC_QUOTE_FOR_EVAL_UNQUOTED_RESULT has merely all characters +# which are still active within double quotes backslashified. +func_quote_for_eval () +{ + case $1 in + *[\\\`\"\$]*) + func_quote_for_eval_unquoted_result=`$ECHO "$1" | $SED "$sed_quote_subst"` ;; + *) + func_quote_for_eval_unquoted_result="$1" ;; + esac + + case $func_quote_for_eval_unquoted_result in + # Double-quote args containing shell metacharacters to delay + # word splitting, command substitution and and variable + # expansion for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + func_quote_for_eval_result="\"$func_quote_for_eval_unquoted_result\"" + ;; + *) + func_quote_for_eval_result="$func_quote_for_eval_unquoted_result" + esac +} + + +# func_quote_for_expand arg +# Aesthetically quote ARG to be evaled later; same as above, +# but do not quote variable references. +func_quote_for_expand () +{ + case $1 in + *[\\\`\"]*) + my_arg=`$ECHO "$1" | $SED \ + -e "$double_quote_subst" -e "$sed_double_backslash"` ;; + *) + my_arg="$1" ;; + esac + + case $my_arg in + # Double-quote args containing shell metacharacters to delay + # word splitting and command substitution for a subsequent eval. + # Many Bourne shells cannot handle close brackets correctly + # in scan sets, so we specify it separately. + *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"") + my_arg="\"$my_arg\"" + ;; + esac + + func_quote_for_expand_result="$my_arg" +} + + +# func_show_eval cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. +func_show_eval () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$my_cmd" + my_status=$? + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + + +# func_show_eval_locale cmd [fail_exp] +# Unless opt_silent is true, then output CMD. Then, if opt_dryrun is +# not true, evaluate CMD. If the evaluation of CMD fails, and FAIL_EXP +# is given, then evaluate it. Use the saved locale for evaluation. +func_show_eval_locale () +{ + my_cmd="$1" + my_fail_exp="${2-:}" + + ${opt_silent-false} || { + func_quote_for_expand "$my_cmd" + eval "func_echo $func_quote_for_expand_result" + } + + if ${opt_dry_run-false}; then :; else + eval "$lt_user_locale + $my_cmd" + my_status=$? + eval "$lt_safe_locale" + if test "$my_status" -eq 0; then :; else + eval "(exit $my_status); $my_fail_exp" + fi + fi +} + +# func_tr_sh +# Turn $1 into a string suitable for a shell variable name. +# Result is stored in $func_tr_sh_result. All characters +# not in the set a-zA-Z0-9_ are replaced with '_'. Further, +# if $1 begins with a digit, a '_' is prepended as well. +func_tr_sh () +{ + case $1 in + [0-9]* | *[!a-zA-Z0-9_]*) + func_tr_sh_result=`$ECHO "$1" | $SED 's/^\([0-9]\)/_\1/; s/[^a-zA-Z0-9_]/_/g'` + ;; + * ) + func_tr_sh_result=$1 + ;; + esac +} + + +# func_version +# Echo version message to standard output and exit. +func_version () +{ + $opt_debug + + $SED -n '/(C)/!b go + :more + /\./!{ + N + s/\n# / / + b more + } + :go + /^# '$PROGRAM' (GNU /,/# warranty; / { + s/^# // + s/^# *$// + s/\((C)\)[ 0-9,-]*\( [1-9][0-9]*\)/\1\2/ + p + }' < "$progpath" + exit $? +} + +# func_usage +# Echo short help message to standard output and exit. +func_usage () +{ + $opt_debug + + $SED -n '/^# Usage:/,/^# *.*--help/ { + s/^# // + s/^# *$// + s/\$progname/'$progname'/ + p + }' < "$progpath" + echo + $ECHO "run \`$progname --help | more' for full usage" + exit $? +} + +# func_help [NOEXIT] +# Echo long help message to standard output and exit, +# unless 'noexit' is passed as argument. +func_help () +{ + $opt_debug + + $SED -n '/^# Usage:/,/# Report bugs to/ { + :print + s/^# // + s/^# *$// + s*\$progname*'$progname'* + s*\$host*'"$host"'* + s*\$SHELL*'"$SHELL"'* + s*\$LTCC*'"$LTCC"'* + s*\$LTCFLAGS*'"$LTCFLAGS"'* + s*\$LD*'"$LD"'* + s/\$with_gnu_ld/'"$with_gnu_ld"'/ + s/\$automake_version/'"`(${AUTOMAKE-automake} --version) 2>/dev/null |$SED 1q`"'/ + s/\$autoconf_version/'"`(${AUTOCONF-autoconf} --version) 2>/dev/null |$SED 1q`"'/ + p + d + } + /^# .* home page:/b print + /^# General help using/b print + ' < "$progpath" + ret=$? + if test -z "$1"; then + exit $ret + fi +} + +# func_missing_arg argname +# Echo program name prefixed message to standard error and set global +# exit_cmd. +func_missing_arg () +{ + $opt_debug + + func_error "missing argument for $1." + exit_cmd=exit +} + + +# func_split_short_opt shortopt +# Set func_split_short_opt_name and func_split_short_opt_arg shell +# variables after splitting SHORTOPT after the 2nd character. +func_split_short_opt () +{ + my_sed_short_opt='1s/^\(..\).*$/\1/;q' + my_sed_short_rest='1s/^..\(.*\)$/\1/;q' + + func_split_short_opt_name=`$ECHO "$1" | $SED "$my_sed_short_opt"` + func_split_short_opt_arg=`$ECHO "$1" | $SED "$my_sed_short_rest"` +} # func_split_short_opt may be replaced by extended shell implementation + + +# func_split_long_opt longopt +# Set func_split_long_opt_name and func_split_long_opt_arg shell +# variables after splitting LONGOPT at the `=' sign. +func_split_long_opt () +{ + my_sed_long_opt='1s/^\(--[^=]*\)=.*/\1/;q' + my_sed_long_arg='1s/^--[^=]*=//' + + func_split_long_opt_name=`$ECHO "$1" | $SED "$my_sed_long_opt"` + func_split_long_opt_arg=`$ECHO "$1" | $SED "$my_sed_long_arg"` +} # func_split_long_opt may be replaced by extended shell implementation + +exit_cmd=: + + + + + +magic="%%%MAGIC variable%%%" +magic_exe="%%%MAGIC EXE variable%%%" + +# Global variables. +nonopt= +preserve_args= +lo2o="s/\\.lo\$/.${objext}/" +o2lo="s/\\.${objext}\$/.lo/" +extracted_archives= +extracted_serial=0 + +# If this variable is set in any of the actions, the command in it +# will be execed at the end. This prevents here-documents from being +# left over by shells. +exec_cmd= + +# func_append var value +# Append VALUE to the end of shell variable VAR. +func_append () +{ + eval "${1}=\$${1}\${2}" +} # func_append may be replaced by extended shell implementation + +# func_append_quoted var value +# Quote VALUE and append to the end of shell variable VAR, separated +# by a space. +func_append_quoted () +{ + func_quote_for_eval "${2}" + eval "${1}=\$${1}\\ \$func_quote_for_eval_result" +} # func_append_quoted may be replaced by extended shell implementation + + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "${@}"` +} # func_arith may be replaced by extended shell implementation + + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "${1}" : ".*" 2>/dev/null || echo $max_cmd_len` +} # func_len may be replaced by extended shell implementation + + +# func_lo2o object +func_lo2o () +{ + func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +} # func_lo2o may be replaced by extended shell implementation + + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` +} # func_xform may be replaced by extended shell implementation + + +# func_fatal_configuration arg... +# Echo program name prefixed message to standard error, followed by +# a configuration failure hint, and exit. +func_fatal_configuration () +{ + func_error ${1+"$@"} + func_error "See the $PACKAGE documentation for more information." + func_fatal_error "Fatal configuration error." +} + + +# func_config +# Display the configuration for all the tags in this script. +func_config () +{ + re_begincf='^# ### BEGIN LIBTOOL' + re_endcf='^# ### END LIBTOOL' + + # Default configuration. + $SED "1,/$re_begincf CONFIG/d;/$re_endcf CONFIG/,\$d" < "$progpath" + + # Now print the configurations for the tags. + for tagname in $taglist; do + $SED -n "/$re_begincf TAG CONFIG: $tagname\$/,/$re_endcf TAG CONFIG: $tagname\$/p" < "$progpath" + done + + exit $? +} + +# func_features +# Display the features supported by this script. +func_features () +{ + echo "host: $host" + if test "$build_libtool_libs" = yes; then + echo "enable shared libraries" + else + echo "disable shared libraries" + fi + if test "$build_old_libs" = yes; then + echo "enable static libraries" + else + echo "disable static libraries" + fi + + exit $? +} + +# func_enable_tag tagname +# Verify that TAGNAME is valid, and either flag an error and exit, or +# enable the TAGNAME tag. We also add TAGNAME to the global $taglist +# variable here. +func_enable_tag () +{ + # Global variable: + tagname="$1" + + re_begincf="^# ### BEGIN LIBTOOL TAG CONFIG: $tagname\$" + re_endcf="^# ### END LIBTOOL TAG CONFIG: $tagname\$" + sed_extractcf="/$re_begincf/,/$re_endcf/p" + + # Validate tagname. + case $tagname in + *[!-_A-Za-z0-9,/]*) + func_fatal_error "invalid tag name: $tagname" + ;; + esac + + # Don't test for the "default" C tag, as we know it's + # there but not specially marked. + case $tagname in + CC) ;; + *) + if $GREP "$re_begincf" "$progpath" >/dev/null 2>&1; then + taglist="$taglist $tagname" + + # Evaluate the configuration. Be careful to quote the path + # and the sed script, to avoid splitting on whitespace, but + # also don't use non-portable quotes within backquotes within + # quotes we have to do it in 2 steps: + extractedcf=`$SED -n -e "$sed_extractcf" < "$progpath"` + eval "$extractedcf" + else + func_error "ignoring unknown tag $tagname" + fi + ;; + esac +} + +# func_check_version_match +# Ensure that we are using m4 macros, and libtool script from the same +# release of libtool. +func_check_version_match () +{ + if test "$package_revision" != "$macro_revision"; then + if test "$VERSION" != "$macro_version"; then + if test -z "$macro_version"; then + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from an older release. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, but the +$progname: definition of this LT_INIT comes from $PACKAGE $macro_version. +$progname: You should recreate aclocal.m4 with macros from $PACKAGE $VERSION +$progname: and run autoconf again. +_LT_EOF + fi + else + cat >&2 <<_LT_EOF +$progname: Version mismatch error. This is $PACKAGE $VERSION, revision $package_revision, +$progname: but the definition of this LT_INIT comes from revision $macro_revision. +$progname: You should recreate aclocal.m4 with macros from revision $package_revision +$progname: of $PACKAGE $VERSION and run autoconf again. +_LT_EOF + fi + + exit $EXIT_MISMATCH + fi +} + + +# Shorthand for --mode=foo, only valid as the first argument +case $1 in +clean|clea|cle|cl) + shift; set dummy --mode clean ${1+"$@"}; shift + ;; +compile|compil|compi|comp|com|co|c) + shift; set dummy --mode compile ${1+"$@"}; shift + ;; +execute|execut|execu|exec|exe|ex|e) + shift; set dummy --mode execute ${1+"$@"}; shift + ;; +finish|finis|fini|fin|fi|f) + shift; set dummy --mode finish ${1+"$@"}; shift + ;; +install|instal|insta|inst|ins|in|i) + shift; set dummy --mode install ${1+"$@"}; shift + ;; +link|lin|li|l) + shift; set dummy --mode link ${1+"$@"}; shift + ;; +uninstall|uninstal|uninsta|uninst|unins|unin|uni|un|u) + shift; set dummy --mode uninstall ${1+"$@"}; shift + ;; +esac + + + +# Option defaults: +opt_debug=: +opt_dry_run=false +opt_config=false +opt_preserve_dup_deps=false +opt_features=false +opt_finish=false +opt_help=false +opt_help_all=false +opt_silent=: +opt_warning=: +opt_verbose=: +opt_silent=false +opt_verbose=false + + +# Parse options once, thoroughly. This comes as soon as possible in the +# script to make things like `--version' happen as quickly as we can. +{ + # this just eases exit handling + while test $# -gt 0; do + opt="$1" + shift + case $opt in + --debug|-x) opt_debug='set -x' + func_echo "enabling shell trace mode" + $opt_debug + ;; + --dry-run|--dryrun|-n) + opt_dry_run=: + ;; + --config) + opt_config=: +func_config + ;; + --dlopen|-dlopen) + optarg="$1" + opt_dlopen="${opt_dlopen+$opt_dlopen +}$optarg" + shift + ;; + --preserve-dup-deps) + opt_preserve_dup_deps=: + ;; + --features) + opt_features=: +func_features + ;; + --finish) + opt_finish=: +set dummy --mode finish ${1+"$@"}; shift + ;; + --help) + opt_help=: + ;; + --help-all) + opt_help_all=: +opt_help=': help-all' + ;; + --mode) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_mode="$optarg" +case $optarg in + # Valid mode arguments: + clean|compile|execute|finish|install|link|relink|uninstall) ;; + + # Catch anything else as an error + *) func_error "invalid argument for $opt" + exit_cmd=exit + break + ;; +esac + shift + ;; + --no-silent|--no-quiet) + opt_silent=false +func_append preserve_args " $opt" + ;; + --no-warning|--no-warn) + opt_warning=false +func_append preserve_args " $opt" + ;; + --no-verbose) + opt_verbose=false +func_append preserve_args " $opt" + ;; + --silent|--quiet) + opt_silent=: +func_append preserve_args " $opt" + opt_verbose=false + ;; + --verbose|-v) + opt_verbose=: +func_append preserve_args " $opt" +opt_silent=false + ;; + --tag) + test $# = 0 && func_missing_arg $opt && break + optarg="$1" + opt_tag="$optarg" +func_append preserve_args " $opt $optarg" +func_enable_tag "$optarg" + shift + ;; + + -\?|-h) func_usage ;; + --help) func_help ;; + --version) func_version ;; + + # Separate optargs to long options: + --*=*) + func_split_long_opt "$opt" + set dummy "$func_split_long_opt_name" "$func_split_long_opt_arg" ${1+"$@"} + shift + ;; + + # Separate non-argument short options: + -\?*|-h*|-n*|-v*) + func_split_short_opt "$opt" + set dummy "$func_split_short_opt_name" "-$func_split_short_opt_arg" ${1+"$@"} + shift + ;; + + --) break ;; + -*) func_fatal_help "unrecognized option \`$opt'" ;; + *) set dummy "$opt" ${1+"$@"}; shift; break ;; + esac + done + + # Validate options: + + # save first non-option argument + if test "$#" -gt 0; then + nonopt="$opt" + shift + fi + + # preserve --debug + test "$opt_debug" = : || func_append preserve_args " --debug" + + case $host in + *cygwin* | *mingw* | *pw32* | *cegcc*) + # don't eliminate duplications in $postdeps and $predeps + opt_duplicate_compiler_generated_deps=: + ;; + *) + opt_duplicate_compiler_generated_deps=$opt_preserve_dup_deps + ;; + esac + + $opt_help || { + # Sanity checks first: + func_check_version_match + + if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then + func_fatal_configuration "not configured to build any kind of library" + fi + + # Darwin sucks + eval std_shrext=\"$shrext_cmds\" + + # Only execute mode is allowed to have -dlopen flags. + if test -n "$opt_dlopen" && test "$opt_mode" != execute; then + func_error "unrecognized option \`-dlopen'" + $ECHO "$help" 1>&2 + exit $EXIT_FAILURE + fi + + # Change the help message to a mode-specific one. + generic_help="$help" + help="Try \`$progname --help --mode=$opt_mode' for more information." + } + + + # Bail if the options were screwed + $exit_cmd $EXIT_FAILURE +} + + + + +## ----------- ## +## Main. ## +## ----------- ## + +# func_lalib_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_lalib_p () +{ + test -f "$1" && + $SED -e 4q "$1" 2>/dev/null \ + | $GREP "^# Generated by .*$PACKAGE" > /dev/null 2>&1 +} + +# func_lalib_unsafe_p file +# True iff FILE is a libtool `.la' library or `.lo' object file. +# This function implements the same check as func_lalib_p without +# resorting to external programs. To this end, it redirects stdin and +# closes it afterwards, without saving the original file descriptor. +# As a safety measure, use it only where a negative result would be +# fatal anyway. Works if `file' does not exist. +func_lalib_unsafe_p () +{ + lalib_p=no + if test -f "$1" && test -r "$1" && exec 5<&0 <"$1"; then + for lalib_p_l in 1 2 3 4 + do + read lalib_p_line + case "$lalib_p_line" in + \#\ Generated\ by\ *$PACKAGE* ) lalib_p=yes; break;; + esac + done + exec 0<&5 5<&- + fi + test "$lalib_p" = yes +} + +# func_ltwrapper_script_p file +# True iff FILE is a libtool wrapper script +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_script_p () +{ + func_lalib_p "$1" +} + +# func_ltwrapper_executable_p file +# True iff FILE is a libtool wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_executable_p () +{ + func_ltwrapper_exec_suffix= + case $1 in + *.exe) ;; + *) func_ltwrapper_exec_suffix=.exe ;; + esac + $GREP "$magic_exe" "$1$func_ltwrapper_exec_suffix" >/dev/null 2>&1 +} + +# func_ltwrapper_scriptname file +# Assumes file is an ltwrapper_executable +# uses $file to determine the appropriate filename for a +# temporary ltwrapper_script. +func_ltwrapper_scriptname () +{ + func_dirname_and_basename "$1" "" "." + func_stripname '' '.exe' "$func_basename_result" + func_ltwrapper_scriptname_result="$func_dirname_result/$objdir/${func_stripname_result}_ltshwrapper" +} + +# func_ltwrapper_p file +# True iff FILE is a libtool wrapper script or wrapper executable +# This function is only a basic sanity check; it will hardly flush out +# determined imposters. +func_ltwrapper_p () +{ + func_ltwrapper_script_p "$1" || func_ltwrapper_executable_p "$1" +} + + +# func_execute_cmds commands fail_cmd +# Execute tilde-delimited COMMANDS. +# If FAIL_CMD is given, eval that upon failure. +# FAIL_CMD may read-access the current command in variable CMD! +func_execute_cmds () +{ + $opt_debug + save_ifs=$IFS; IFS='~' + for cmd in $1; do + IFS=$save_ifs + eval cmd=\"$cmd\" + func_show_eval "$cmd" "${2-:}" + done + IFS=$save_ifs +} + + +# func_source file +# Source FILE, adding directory component if necessary. +# Note that it is not necessary on cygwin/mingw to append a dot to +# FILE even if both FILE and FILE.exe exist: automatic-append-.exe +# behavior happens only for exec(3), not for open(2)! Also, sourcing +# `FILE.' does not work on cygwin managed mounts. +func_source () +{ + $opt_debug + case $1 in + */* | *\\*) . "$1" ;; + *) . "./$1" ;; + esac +} + + +# func_resolve_sysroot PATH +# Replace a leading = in PATH with a sysroot. Store the result into +# func_resolve_sysroot_result +func_resolve_sysroot () +{ + func_resolve_sysroot_result=$1 + case $func_resolve_sysroot_result in + =*) + func_stripname '=' '' "$func_resolve_sysroot_result" + func_resolve_sysroot_result=$lt_sysroot$func_stripname_result + ;; + esac +} + +# func_replace_sysroot PATH +# If PATH begins with the sysroot, replace it with = and +# store the result into func_replace_sysroot_result. +func_replace_sysroot () +{ + case "$lt_sysroot:$1" in + ?*:"$lt_sysroot"*) + func_stripname "$lt_sysroot" '' "$1" + func_replace_sysroot_result="=$func_stripname_result" + ;; + *) + # Including no sysroot. + func_replace_sysroot_result=$1 + ;; + esac +} + +# func_infer_tag arg +# Infer tagged configuration to use if any are available and +# if one wasn't chosen via the "--tag" command line option. +# Only attempt this if the compiler in the base compile +# command doesn't match the default compiler. +# arg is usually of the form 'gcc ...' +func_infer_tag () +{ + $opt_debug + if test -n "$available_tags" && test -z "$tagname"; then + CC_quoted= + for arg in $CC; do + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case $@ in + # Blanks in the command may have been stripped by the calling shell, + # but not from the CC environment variable when configure was run. + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) ;; + # Blanks at the start of $base_compile will cause this to fail + # if we don't check for them as well. + *) + for z in $available_tags; do + if $GREP "^# ### BEGIN LIBTOOL TAG CONFIG: $z$" < "$progpath" > /dev/null; then + # Evaluate the configuration. + eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$z'$/,/^# ### END LIBTOOL TAG CONFIG: '$z'$/p' < $progpath`" + CC_quoted= + for arg in $CC; do + # Double-quote args containing other shell metacharacters. + func_append_quoted CC_quoted "$arg" + done + CC_expanded=`func_echo_all $CC` + CC_quoted_expanded=`func_echo_all $CC_quoted` + case "$@ " in + " $CC "* | "$CC "* | " $CC_expanded "* | "$CC_expanded "* | \ + " $CC_quoted"* | "$CC_quoted "* | " $CC_quoted_expanded "* | "$CC_quoted_expanded "*) + # The compiler in the base compile command matches + # the one in the tagged configuration. + # Assume this is the tagged configuration we want. + tagname=$z + break + ;; + esac + fi + done + # If $tagname still isn't set, then no tagged configuration + # was found and let the user know that the "--tag" command + # line option must be used. + if test -z "$tagname"; then + func_echo "unable to infer tagged configuration" + func_fatal_error "specify a tag with \`--tag'" +# else +# func_verbose "using $tagname tagged configuration" + fi + ;; + esac + fi +} + + + +# func_write_libtool_object output_name pic_name nonpic_name +# Create a libtool object file (analogous to a ".la" file), +# but don't create it if we're doing a dry run. +func_write_libtool_object () +{ + write_libobj=${1} + if test "$build_libtool_libs" = yes; then + write_lobj=\'${2}\' + else + write_lobj=none + fi + + if test "$build_old_libs" = yes; then + write_oldobj=\'${3}\' + else + write_oldobj=none + fi + + $opt_dry_run || { + cat >${write_libobj}T </dev/null` + if test "$?" -eq 0 && test -n "${func_convert_core_file_wine_to_w32_tmp}"; then + func_convert_core_file_wine_to_w32_result=`$ECHO "$func_convert_core_file_wine_to_w32_tmp" | + $SED -e "$lt_sed_naive_backslashify"` + else + func_convert_core_file_wine_to_w32_result= + fi + fi +} +# end: func_convert_core_file_wine_to_w32 + + +# func_convert_core_path_wine_to_w32 ARG +# Helper function used by path conversion functions when $build is *nix, and +# $host is mingw, cygwin, or some other w32 environment. Relies on a correctly +# configured wine environment available, with the winepath program in $build's +# $PATH. Assumes ARG has no leading or trailing path separator characters. +# +# ARG is path to be converted from $build format to win32. +# Result is available in $func_convert_core_path_wine_to_w32_result. +# Unconvertible file (directory) names in ARG are skipped; if no directory names +# are convertible, then the result may be empty. +func_convert_core_path_wine_to_w32 () +{ + $opt_debug + # unfortunately, winepath doesn't convert paths, only file names + func_convert_core_path_wine_to_w32_result="" + if test -n "$1"; then + oldIFS=$IFS + IFS=: + for func_convert_core_path_wine_to_w32_f in $1; do + IFS=$oldIFS + func_convert_core_file_wine_to_w32 "$func_convert_core_path_wine_to_w32_f" + if test -n "$func_convert_core_file_wine_to_w32_result" ; then + if test -z "$func_convert_core_path_wine_to_w32_result"; then + func_convert_core_path_wine_to_w32_result="$func_convert_core_file_wine_to_w32_result" + else + func_append func_convert_core_path_wine_to_w32_result ";$func_convert_core_file_wine_to_w32_result" + fi + fi + done + IFS=$oldIFS + fi +} +# end: func_convert_core_path_wine_to_w32 + + +# func_cygpath ARGS... +# Wrapper around calling the cygpath program via LT_CYGPATH. This is used when +# when (1) $build is *nix and Cygwin is hosted via a wine environment; or (2) +# $build is MSYS and $host is Cygwin, or (3) $build is Cygwin. In case (1) or +# (2), returns the Cygwin file name or path in func_cygpath_result (input +# file name or path is assumed to be in w32 format, as previously converted +# from $build's *nix or MSYS format). In case (3), returns the w32 file name +# or path in func_cygpath_result (input file name or path is assumed to be in +# Cygwin format). Returns an empty string on error. +# +# ARGS are passed to cygpath, with the last one being the file name or path to +# be converted. +# +# Specify the absolute *nix (or w32) name to cygpath in the LT_CYGPATH +# environment variable; do not put it in $PATH. +func_cygpath () +{ + $opt_debug + if test -n "$LT_CYGPATH" && test -f "$LT_CYGPATH"; then + func_cygpath_result=`$LT_CYGPATH "$@" 2>/dev/null` + if test "$?" -ne 0; then + # on failure, ensure result is empty + func_cygpath_result= + fi + else + func_cygpath_result= + func_error "LT_CYGPATH is empty or specifies non-existent file: \`$LT_CYGPATH'" + fi +} +#end: func_cygpath + + +# func_convert_core_msys_to_w32 ARG +# Convert file name or path ARG from MSYS format to w32 format. Return +# result in func_convert_core_msys_to_w32_result. +func_convert_core_msys_to_w32 () +{ + $opt_debug + # awkward: cmd appends spaces to result + func_convert_core_msys_to_w32_result=`( cmd //c echo "$1" ) 2>/dev/null | + $SED -e 's/[ ]*$//' -e "$lt_sed_naive_backslashify"` +} +#end: func_convert_core_msys_to_w32 + + +# func_convert_file_check ARG1 ARG2 +# Verify that ARG1 (a file name in $build format) was converted to $host +# format in ARG2. Otherwise, emit an error message, but continue (resetting +# func_to_host_file_result to ARG1). +func_convert_file_check () +{ + $opt_debug + if test -z "$2" && test -n "$1" ; then + func_error "Could not determine host file name corresponding to" + func_error " \`$1'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback: + func_to_host_file_result="$1" + fi +} +# end func_convert_file_check + + +# func_convert_path_check FROM_PATHSEP TO_PATHSEP FROM_PATH TO_PATH +# Verify that FROM_PATH (a path in $build format) was converted to $host +# format in TO_PATH. Otherwise, emit an error message, but continue, resetting +# func_to_host_file_result to a simplistic fallback value (see below). +func_convert_path_check () +{ + $opt_debug + if test -z "$4" && test -n "$3"; then + func_error "Could not determine the host path corresponding to" + func_error " \`$3'" + func_error "Continuing, but uninstalled executables may not work." + # Fallback. This is a deliberately simplistic "conversion" and + # should not be "improved". See libtool.info. + if test "x$1" != "x$2"; then + lt_replace_pathsep_chars="s|$1|$2|g" + func_to_host_path_result=`echo "$3" | + $SED -e "$lt_replace_pathsep_chars"` + else + func_to_host_path_result="$3" + fi + fi +} +# end func_convert_path_check + + +# func_convert_path_front_back_pathsep FRONTPAT BACKPAT REPL ORIG +# Modifies func_to_host_path_result by prepending REPL if ORIG matches FRONTPAT +# and appending REPL if ORIG matches BACKPAT. +func_convert_path_front_back_pathsep () +{ + $opt_debug + case $4 in + $1 ) func_to_host_path_result="$3$func_to_host_path_result" + ;; + esac + case $4 in + $2 ) func_append func_to_host_path_result "$3" + ;; + esac +} +# end func_convert_path_front_back_pathsep + + +################################################## +# $build to $host FILE NAME CONVERSION FUNCTIONS # +################################################## +# invoked via `$to_host_file_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# Result will be available in $func_to_host_file_result. + + +# func_to_host_file ARG +# Converts the file name ARG from $build format to $host format. Return result +# in func_to_host_file_result. +func_to_host_file () +{ + $opt_debug + $to_host_file_cmd "$1" +} +# end func_to_host_file + + +# func_to_tool_file ARG LAZY +# converts the file name ARG from $build format to toolchain format. Return +# result in func_to_tool_file_result. If the conversion in use is listed +# in (the comma separated) LAZY, no conversion takes place. +func_to_tool_file () +{ + $opt_debug + case ,$2, in + *,"$to_tool_file_cmd",*) + func_to_tool_file_result=$1 + ;; + *) + $to_tool_file_cmd "$1" + func_to_tool_file_result=$func_to_host_file_result + ;; + esac +} +# end func_to_tool_file + + +# func_convert_file_noop ARG +# Copy ARG to func_to_host_file_result. +func_convert_file_noop () +{ + func_to_host_file_result="$1" +} +# end func_convert_file_noop + + +# func_convert_file_msys_to_w32 ARG +# Convert file name ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_file_result. +func_convert_file_msys_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_to_host_file_result="$func_convert_core_msys_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_w32 + + +# func_convert_file_cygwin_to_w32 ARG +# Convert file name ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_file_cygwin_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # because $build is cygwin, we call "the" cygpath in $PATH; no need to use + # LT_CYGPATH in this case. + func_to_host_file_result=`cygpath -m "$1"` + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_cygwin_to_w32 + + +# func_convert_file_nix_to_w32 ARG +# Convert file name ARG from *nix to w32 format. Requires a wine environment +# and a working winepath. Returns result in func_to_host_file_result. +func_convert_file_nix_to_w32 () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_file_wine_to_w32 "$1" + func_to_host_file_result="$func_convert_core_file_wine_to_w32_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_w32 + + +# func_convert_file_msys_to_cygwin ARG +# Convert file name ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_file_msys_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + func_convert_core_msys_to_w32 "$1" + func_cygpath -u "$func_convert_core_msys_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_msys_to_cygwin + + +# func_convert_file_nix_to_cygwin ARG +# Convert file name ARG from *nix to Cygwin format. Requires Cygwin installed +# in a wine environment, working winepath, and LT_CYGPATH set. Returns result +# in func_to_host_file_result. +func_convert_file_nix_to_cygwin () +{ + $opt_debug + func_to_host_file_result="$1" + if test -n "$1"; then + # convert from *nix to w32, then use cygpath to convert from w32 to cygwin. + func_convert_core_file_wine_to_w32 "$1" + func_cygpath -u "$func_convert_core_file_wine_to_w32_result" + func_to_host_file_result="$func_cygpath_result" + fi + func_convert_file_check "$1" "$func_to_host_file_result" +} +# end func_convert_file_nix_to_cygwin + + +############################################# +# $build to $host PATH CONVERSION FUNCTIONS # +############################################# +# invoked via `$to_host_path_cmd ARG' +# +# In each case, ARG is the path to be converted from $build to $host format. +# The result will be available in $func_to_host_path_result. +# +# Path separators are also converted from $build format to $host format. If +# ARG begins or ends with a path separator character, it is preserved (but +# converted to $host format) on output. +# +# All path conversion functions are named using the following convention: +# file name conversion function : func_convert_file_X_to_Y () +# path conversion function : func_convert_path_X_to_Y () +# where, for any given $build/$host combination the 'X_to_Y' value is the +# same. If conversion functions are added for new $build/$host combinations, +# the two new functions must follow this pattern, or func_init_to_host_path_cmd +# will break. + + +# func_init_to_host_path_cmd +# Ensures that function "pointer" variable $to_host_path_cmd is set to the +# appropriate value, based on the value of $to_host_file_cmd. +to_host_path_cmd= +func_init_to_host_path_cmd () +{ + $opt_debug + if test -z "$to_host_path_cmd"; then + func_stripname 'func_convert_file_' '' "$to_host_file_cmd" + to_host_path_cmd="func_convert_path_${func_stripname_result}" + fi +} + + +# func_to_host_path ARG +# Converts the path ARG from $build format to $host format. Return result +# in func_to_host_path_result. +func_to_host_path () +{ + $opt_debug + func_init_to_host_path_cmd + $to_host_path_cmd "$1" +} +# end func_to_host_path + + +# func_convert_path_noop ARG +# Copy ARG to func_to_host_path_result. +func_convert_path_noop () +{ + func_to_host_path_result="$1" +} +# end func_convert_path_noop + + +# func_convert_path_msys_to_w32 ARG +# Convert path ARG from (mingw) MSYS to (mingw) w32 format; automatic +# conversion to w32 is not available inside the cwrapper. Returns result in +# func_to_host_path_result. +func_convert_path_msys_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from ARG. MSYS + # behavior is inconsistent here; cygpath turns them into '.;' and ';.'; + # and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_msys_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_msys_to_w32 + + +# func_convert_path_cygwin_to_w32 ARG +# Convert path ARG from Cygwin to w32 format. Returns result in +# func_to_host_file_result. +func_convert_path_cygwin_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_to_host_path_result=`cygpath -m -p "$func_to_host_path_tmp1"` + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_cygwin_to_w32 + + +# func_convert_path_nix_to_w32 ARG +# Convert path ARG from *nix to w32 format. Requires a wine environment and +# a working winepath. Returns result in func_to_host_file_result. +func_convert_path_nix_to_w32 () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_to_host_path_result="$func_convert_core_path_wine_to_w32_result" + func_convert_path_check : ";" \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" ";" "$1" + fi +} +# end func_convert_path_nix_to_w32 + + +# func_convert_path_msys_to_cygwin ARG +# Convert path ARG from MSYS to Cygwin format. Requires LT_CYGPATH set. +# Returns result in func_to_host_file_result. +func_convert_path_msys_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # See func_convert_path_msys_to_w32: + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_msys_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_msys_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_msys_to_cygwin + + +# func_convert_path_nix_to_cygwin ARG +# Convert path ARG from *nix to Cygwin format. Requires Cygwin installed in a +# a wine environment, working winepath, and LT_CYGPATH set. Returns result in +# func_to_host_file_result. +func_convert_path_nix_to_cygwin () +{ + $opt_debug + func_to_host_path_result="$1" + if test -n "$1"; then + # Remove leading and trailing path separator characters from + # ARG. msys behavior is inconsistent here, cygpath turns them + # into '.;' and ';.', and winepath ignores them completely. + func_stripname : : "$1" + func_to_host_path_tmp1=$func_stripname_result + func_convert_core_path_wine_to_w32 "$func_to_host_path_tmp1" + func_cygpath -u -p "$func_convert_core_path_wine_to_w32_result" + func_to_host_path_result="$func_cygpath_result" + func_convert_path_check : : \ + "$func_to_host_path_tmp1" "$func_to_host_path_result" + func_convert_path_front_back_pathsep ":*" "*:" : "$1" + fi +} +# end func_convert_path_nix_to_cygwin + + +# func_mode_compile arg... +func_mode_compile () +{ + $opt_debug + # Get the compilation command and the source file. + base_compile= + srcfile="$nonopt" # always keep a non-empty value in "srcfile" + suppress_opt=yes + suppress_output= + arg_mode=normal + libobj= + later= + pie_flag= + + for arg + do + case $arg_mode in + arg ) + # do not "continue". Instead, add this to base_compile + lastarg="$arg" + arg_mode=normal + ;; + + target ) + libobj="$arg" + arg_mode=normal + continue + ;; + + normal ) + # Accept any command-line options. + case $arg in + -o) + test -n "$libobj" && \ + func_fatal_error "you cannot specify \`-o' more than once" + arg_mode=target + continue + ;; + + -pie | -fpie | -fPIE) + func_append pie_flag " $arg" + continue + ;; + + -shared | -static | -prefer-pic | -prefer-non-pic) + func_append later " $arg" + continue + ;; + + -no-suppress) + suppress_opt=no + continue + ;; + + -Xcompiler) + arg_mode=arg # the next one goes into the "base_compile" arg list + continue # The current "srcfile" will either be retained or + ;; # replaced later. I would guess that would be a bug. + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + lastarg= + save_ifs="$IFS"; IFS=',' + for arg in $args; do + IFS="$save_ifs" + func_append_quoted lastarg "$arg" + done + IFS="$save_ifs" + func_stripname ' ' '' "$lastarg" + lastarg=$func_stripname_result + + # Add the arguments to base_compile. + func_append base_compile " $lastarg" + continue + ;; + + *) + # Accept the current argument as the source file. + # The previous "srcfile" becomes the current argument. + # + lastarg="$srcfile" + srcfile="$arg" + ;; + esac # case $arg + ;; + esac # case $arg_mode + + # Aesthetically quote the previous argument. + func_append_quoted base_compile "$lastarg" + done # for arg + + case $arg_mode in + arg) + func_fatal_error "you must specify an argument for -Xcompile" + ;; + target) + func_fatal_error "you must specify a target with \`-o'" + ;; + *) + # Get the name of the library object. + test -z "$libobj" && { + func_basename "$srcfile" + libobj="$func_basename_result" + } + ;; + esac + + # Recognize several different file suffixes. + # If the user specifies -o file.o, it is replaced with file.lo + case $libobj in + *.[cCFSifmso] | \ + *.ada | *.adb | *.ads | *.asm | \ + *.c++ | *.cc | *.ii | *.class | *.cpp | *.cxx | \ + *.[fF][09]? | *.for | *.java | *.go | *.obj | *.sx | *.cu | *.cup) + func_xform "$libobj" + libobj=$func_xform_result + ;; + esac + + case $libobj in + *.lo) func_lo2o "$libobj"; obj=$func_lo2o_result ;; + *) + func_fatal_error "cannot determine name of library object from \`$libobj'" + ;; + esac + + func_infer_tag $base_compile + + for arg in $later; do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + continue + ;; + + -static) + build_libtool_libs=no + build_old_libs=yes + continue + ;; + + -prefer-pic) + pic_mode=yes + continue + ;; + + -prefer-non-pic) + pic_mode=no + continue + ;; + esac + done + + func_quote_for_eval "$libobj" + test "X$libobj" != "X$func_quote_for_eval_result" \ + && $ECHO "X$libobj" | $GREP '[]~#^*{};<>?"'"'"' &()|`$[]' \ + && func_warning "libobj name \`$libobj' may not contain shell special characters." + func_dirname_and_basename "$obj" "/" "" + objname="$func_basename_result" + xdir="$func_dirname_result" + lobj=${xdir}$objdir/$objname + + test -z "$base_compile" && \ + func_fatal_help "you must specify a compilation command" + + # Delete any leftover library objects. + if test "$build_old_libs" = yes; then + removelist="$obj $lobj $libobj ${libobj}T" + else + removelist="$lobj $libobj ${libobj}T" + fi + + # On Cygwin there's no "real" PIC flag so we must build both object types + case $host_os in + cygwin* | mingw* | pw32* | os2* | cegcc*) + pic_mode=default + ;; + esac + if test "$pic_mode" = no && test "$deplibs_check_method" != pass_all; then + # non-PIC code in shared libraries is not supported + pic_mode=default + fi + + # Calculate the filename of the output object if compiler does + # not support -o with -c + if test "$compiler_c_o" = no; then + output_obj=`$ECHO "$srcfile" | $SED 's%^.*/%%; s%\.[^.]*$%%'`.${objext} + lockfile="$output_obj.lock" + else + output_obj= + need_locks=no + lockfile= + fi + + # Lock this critical section if it is needed + # We use this script file to make the link, it avoids creating a new file + if test "$need_locks" = yes; then + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + elif test "$need_locks" = warn; then + if test -f "$lockfile"; then + $ECHO "\ +*** ERROR, $lockfile exists and contains: +`cat $lockfile 2>/dev/null` + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + func_append removelist " $output_obj" + $ECHO "$srcfile" > "$lockfile" + fi + + $opt_dry_run || $RM $removelist + func_append removelist " $lockfile" + trap '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' 1 2 15 + + func_to_tool_file "$srcfile" func_convert_file_msys_to_w32 + srcfile=$func_to_tool_file_result + func_quote_for_eval "$srcfile" + qsrcfile=$func_quote_for_eval_result + + # Only build a PIC object if we are building libtool libraries. + if test "$build_libtool_libs" = yes; then + # Without this assignment, base_compile gets emptied. + fbsd_hideous_sh_bug=$base_compile + + if test "$pic_mode" != no; then + command="$base_compile $qsrcfile $pic_flag" + else + # Don't build PIC code + command="$base_compile $qsrcfile" + fi + + func_mkdir_p "$xdir$objdir" + + if test -z "$output_obj"; then + # Place PIC objects in $objdir + func_append command " -o $lobj" + fi + + func_show_eval_locale "$command" \ + 'test -n "$output_obj" && $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed, then go on to compile the next one + if test -n "$output_obj" && test "X$output_obj" != "X$lobj"; then + func_show_eval '$MV "$output_obj" "$lobj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + + # Allow error messages only from the first compilation. + if test "$suppress_opt" = yes; then + suppress_output=' >/dev/null 2>&1' + fi + fi + + # Only build a position-dependent object if we build old libraries. + if test "$build_old_libs" = yes; then + if test "$pic_mode" != yes; then + # Don't build PIC code + command="$base_compile $qsrcfile$pie_flag" + else + command="$base_compile $qsrcfile $pic_flag" + fi + if test "$compiler_c_o" = yes; then + func_append command " -o $obj" + fi + + # Suppress compiler output if we already did a PIC compilation. + func_append command "$suppress_output" + func_show_eval_locale "$command" \ + '$opt_dry_run || $RM $removelist; exit $EXIT_FAILURE' + + if test "$need_locks" = warn && + test "X`cat $lockfile 2>/dev/null`" != "X$srcfile"; then + $ECHO "\ +*** ERROR, $lockfile contains: +`cat $lockfile 2>/dev/null` + +but it should contain: +$srcfile + +This indicates that another process is trying to use the same +temporary object file, and libtool could not work around it because +your compiler does not support \`-c' and \`-o' together. If you +repeat this compilation, it may succeed, by chance, but you had better +avoid parallel builds (make -j) in this platform, or get a better +compiler." + + $opt_dry_run || $RM $removelist + exit $EXIT_FAILURE + fi + + # Just move the object if needed + if test -n "$output_obj" && test "X$output_obj" != "X$obj"; then + func_show_eval '$MV "$output_obj" "$obj"' \ + 'error=$?; $opt_dry_run || $RM $removelist; exit $error' + fi + fi + + $opt_dry_run || { + func_write_libtool_object "$libobj" "$objdir/$objname" "$objname" + + # Unlock the critical section if it was locked + if test "$need_locks" != no; then + removelist=$lockfile + $RM "$lockfile" + fi + } + + exit $EXIT_SUCCESS +} + +$opt_help || { + test "$opt_mode" = compile && func_mode_compile ${1+"$@"} +} + +func_mode_help () +{ + # We need to display help for each of the modes. + case $opt_mode in + "") + # Generic help is extracted from the usage comments + # at the start of this file. + func_help + ;; + + clean) + $ECHO \ +"Usage: $progname [OPTION]... --mode=clean RM [RM-OPTION]... FILE... + +Remove files from the build directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, object or program, all the files associated +with it are deleted. Otherwise, only FILE itself is deleted using RM." + ;; + + compile) + $ECHO \ +"Usage: $progname [OPTION]... --mode=compile COMPILE-COMMAND... SOURCEFILE + +Compile a source file into a libtool library object. + +This mode accepts the following additional options: + + -o OUTPUT-FILE set the output file name to OUTPUT-FILE + -no-suppress do not suppress compiler output for multiple passes + -prefer-pic try to build PIC objects only + -prefer-non-pic try to build non-PIC objects only + -shared do not build a \`.o' file suitable for static linking + -static only build a \`.o' file suitable for static linking + -Wc,FLAG pass FLAG directly to the compiler + +COMPILE-COMMAND is a command to be used in creating a \`standard' object file +from the given SOURCEFILE. + +The output file name is determined by removing the directory component from +SOURCEFILE, then substituting the C source code suffix \`.c' with the +library object suffix, \`.lo'." + ;; + + execute) + $ECHO \ +"Usage: $progname [OPTION]... --mode=execute COMMAND [ARGS]... + +Automatically set library path, then run a program. + +This mode accepts the following additional options: + + -dlopen FILE add the directory containing FILE to the library path + +This mode sets the library path environment variable according to \`-dlopen' +flags. + +If any of the ARGS are libtool executable wrappers, then they are translated +into their corresponding uninstalled binary, and any of their required library +directories are added to the library path. + +Then, COMMAND is executed, with ARGS as arguments." + ;; + + finish) + $ECHO \ +"Usage: $progname [OPTION]... --mode=finish [LIBDIR]... + +Complete the installation of libtool libraries. + +Each LIBDIR is a directory that contains libtool libraries. + +The commands that this mode executes may require superuser privileges. Use +the \`--dry-run' option if you just want to see what would be executed." + ;; + + install) + $ECHO \ +"Usage: $progname [OPTION]... --mode=install INSTALL-COMMAND... + +Install executables or libraries. + +INSTALL-COMMAND is the installation command. The first component should be +either the \`install' or \`cp' program. + +The following components of INSTALL-COMMAND are treated specially: + + -inst-prefix-dir PREFIX-DIR Use PREFIX-DIR as a staging area for installation + +The rest of the components are interpreted as arguments to that command (only +BSD-compatible install options are recognized)." + ;; + + link) + $ECHO \ +"Usage: $progname [OPTION]... --mode=link LINK-COMMAND... + +Link object files or libraries together to form another library, or to +create an executable program. + +LINK-COMMAND is a command using the C compiler that you would use to create +a program from several object files. + +The following components of LINK-COMMAND are treated specially: + + -all-static do not do any dynamic linking at all + -avoid-version do not add a version suffix if possible + -bindir BINDIR specify path to binaries directory (for systems where + libraries must be found in the PATH setting at runtime) + -dlopen FILE \`-dlpreopen' FILE if it cannot be dlopened at runtime + -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols + -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3) + -export-symbols SYMFILE + try to export only the symbols listed in SYMFILE + -export-symbols-regex REGEX + try to export only the symbols matching REGEX + -LLIBDIR search LIBDIR for required installed libraries + -lNAME OUTPUT-FILE requires the installed library libNAME + -module build a library that can dlopened + -no-fast-install disable the fast-install mode + -no-install link a not-installable executable + -no-undefined declare that a library does not refer to external symbols + -o OUTPUT-FILE create OUTPUT-FILE from the specified objects + -objectlist FILE Use a list of object files found in FILE to specify objects + -precious-files-regex REGEX + don't remove output files matching REGEX + -release RELEASE specify package release information + -rpath LIBDIR the created library will eventually be installed in LIBDIR + -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries + -shared only do dynamic linking of libtool libraries + -shrext SUFFIX override the standard shared library file extension + -static do not do any dynamic linking of uninstalled libtool libraries + -static-libtool-libs + do not do any dynamic linking of libtool libraries + -version-info CURRENT[:REVISION[:AGE]] + specify library version info [each variable defaults to 0] + -weak LIBNAME declare that the target provides the LIBNAME interface + -Wc,FLAG + -Xcompiler FLAG pass linker-specific FLAG directly to the compiler + -Wl,FLAG + -Xlinker FLAG pass linker-specific FLAG directly to the linker + -XCClinker FLAG pass link-specific FLAG to the compiler driver (CC) + +All other options (arguments beginning with \`-') are ignored. + +Every other argument is treated as a filename. Files ending in \`.la' are +treated as uninstalled libtool libraries, other files are standard or library +object files. + +If the OUTPUT-FILE ends in \`.la', then a libtool library is created, +only library objects (\`.lo' files) may be specified, and \`-rpath' is +required, except when creating a convenience library. + +If OUTPUT-FILE ends in \`.a' or \`.lib', then a standard library is created +using \`ar' and \`ranlib', or on Windows using \`lib'. + +If OUTPUT-FILE ends in \`.lo' or \`.${objext}', then a reloadable object file +is created, otherwise an executable program is created." + ;; + + uninstall) + $ECHO \ +"Usage: $progname [OPTION]... --mode=uninstall RM [RM-OPTION]... FILE... + +Remove libraries from an installation directory. + +RM is the name of the program to use to delete files associated with each FILE +(typically \`/bin/rm'). RM-OPTIONS are options (such as \`-f') to be passed +to RM. + +If FILE is a libtool library, all the files associated with it are deleted. +Otherwise, only FILE itself is deleted using RM." + ;; + + *) + func_fatal_help "invalid operation mode \`$opt_mode'" + ;; + esac + + echo + $ECHO "Try \`$progname --help' for more information about other modes." +} + +# Now that we've collected a possible --mode arg, show help if necessary +if $opt_help; then + if test "$opt_help" = :; then + func_mode_help + else + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + func_mode_help + done + } | sed -n '1p; 2,$s/^Usage:/ or: /p' + { + func_help noexit + for opt_mode in compile link execute install finish uninstall clean; do + echo + func_mode_help + done + } | + sed '1d + /^When reporting/,/^Report/{ + H + d + } + $x + /information about other modes/d + /more detailed .*MODE/d + s/^Usage:.*--mode=\([^ ]*\) .*/Description of \1 mode:/' + fi + exit $? +fi + + +# func_mode_execute arg... +func_mode_execute () +{ + $opt_debug + # The first argument is the command name. + cmd="$nonopt" + test -z "$cmd" && \ + func_fatal_help "you must specify a COMMAND" + + # Handle -dlopen flags immediately. + for file in $opt_dlopen; do + test -f "$file" \ + || func_fatal_help "\`$file' is not a file" + + dir= + case $file in + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$lib' is not a valid libtool archive" + + # Read the libtool library. + dlname= + library_names= + func_source "$file" + + # Skip this library if it cannot be dlopened. + if test -z "$dlname"; then + # Warn if it was a shared library. + test -n "$library_names" && \ + func_warning "\`$file' was not linked with \`-export-dynamic'" + continue + fi + + func_dirname "$file" "" "." + dir="$func_dirname_result" + + if test -f "$dir/$objdir/$dlname"; then + func_append dir "/$objdir" + else + if test ! -f "$dir/$dlname"; then + func_fatal_error "cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" + fi + fi + ;; + + *.lo) + # Just add the directory containing the .lo file. + func_dirname "$file" "" "." + dir="$func_dirname_result" + ;; + + *) + func_warning "\`-dlopen' is ignored for non-libtool libraries and objects" + continue + ;; + esac + + # Get the absolute pathname. + absdir=`cd "$dir" && pwd` + test -n "$absdir" && dir="$absdir" + + # Now add the directory to shlibpath_var. + if eval "test -z \"\$$shlibpath_var\""; then + eval "$shlibpath_var=\"\$dir\"" + else + eval "$shlibpath_var=\"\$dir:\$$shlibpath_var\"" + fi + done + + # This variable tells wrapper scripts just to set shlibpath_var + # rather than running their programs. + libtool_execute_magic="$magic" + + # Check if any of the arguments is a wrapper script. + args= + for file + do + case $file in + -* | *.la | *.lo ) ;; + *) + # Do a test to see if this is really a libtool program. + if func_ltwrapper_script_p "$file"; then + func_source "$file" + # Transform arg to wrapped name. + file="$progdir/$program" + elif func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + func_source "$func_ltwrapper_scriptname_result" + # Transform arg to wrapped name. + file="$progdir/$program" + fi + ;; + esac + # Quote arguments (to preserve shell metacharacters). + func_append_quoted args "$file" + done + + if test "X$opt_dry_run" = Xfalse; then + if test -n "$shlibpath_var"; then + # Export the shlibpath_var. + eval "export $shlibpath_var" + fi + + # Restore saved environment variables + for lt_var in LANG LANGUAGE LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES + do + eval "if test \"\${save_$lt_var+set}\" = set; then + $lt_var=\$save_$lt_var; export $lt_var + else + $lt_unset $lt_var + fi" + done + + # Now prepare to actually exec the command. + exec_cmd="\$cmd$args" + else + # Display what would be done. + if test -n "$shlibpath_var"; then + eval "\$ECHO \"\$shlibpath_var=\$$shlibpath_var\"" + echo "export $shlibpath_var" + fi + $ECHO "$cmd$args" + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = execute && func_mode_execute ${1+"$@"} + + +# func_mode_finish arg... +func_mode_finish () +{ + $opt_debug + libs= + libdirs= + admincmds= + + for opt in "$nonopt" ${1+"$@"} + do + if test -d "$opt"; then + func_append libdirs " $opt" + + elif test -f "$opt"; then + if func_lalib_unsafe_p "$opt"; then + func_append libs " $opt" + else + func_warning "\`$opt' is not a valid libtool archive" + fi + + else + func_fatal_error "invalid argument \`$opt'" + fi + done + + if test -n "$libs"; then + if test -n "$lt_sysroot"; then + sysroot_regex=`$ECHO "$lt_sysroot" | $SED "$sed_make_literal_regex"` + sysroot_cmd="s/\([ ']\)$sysroot_regex/\1/g;" + else + sysroot_cmd= + fi + + # Remove sysroot references + if $opt_dry_run; then + for lib in $libs; do + echo "removing references to $lt_sysroot and \`=' prefixes from $lib" + done + else + tmpdir=`func_mktempdir` + for lib in $libs; do + sed -e "${sysroot_cmd} s/\([ ']-[LR]\)=/\1/g; s/\([ ']\)=/\1/g" $lib \ + > $tmpdir/tmp-la + mv -f $tmpdir/tmp-la $lib + done + ${RM}r "$tmpdir" + fi + fi + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + for libdir in $libdirs; do + if test -n "$finish_cmds"; then + # Do each command in the finish commands. + func_execute_cmds "$finish_cmds" 'admincmds="$admincmds +'"$cmd"'"' + fi + if test -n "$finish_eval"; then + # Do the single finish_eval. + eval cmds=\"$finish_eval\" + $opt_dry_run || eval "$cmds" || func_append admincmds " + $cmds" + fi + done + fi + + # Exit here if they wanted silent mode. + $opt_silent && exit $EXIT_SUCCESS + + if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then + echo "----------------------------------------------------------------------" + echo "Libraries have been installed in:" + for libdir in $libdirs; do + $ECHO " $libdir" + done + echo + echo "If you ever happen to want to link against installed libraries" + echo "in a given directory, LIBDIR, you must either use libtool, and" + echo "specify the full pathname of the library, or use the \`-LLIBDIR'" + echo "flag during linking and do at least one of the following:" + if test -n "$shlibpath_var"; then + echo " - add LIBDIR to the \`$shlibpath_var' environment variable" + echo " during execution" + fi + if test -n "$runpath_var"; then + echo " - add LIBDIR to the \`$runpath_var' environment variable" + echo " during linking" + fi + if test -n "$hardcode_libdir_flag_spec"; then + libdir=LIBDIR + eval flag=\"$hardcode_libdir_flag_spec\" + + $ECHO " - use the \`$flag' linker flag" + fi + if test -n "$admincmds"; then + $ECHO " - have your system administrator run these commands:$admincmds" + fi + if test -f /etc/ld.so.conf; then + echo " - have your system administrator add LIBDIR to \`/etc/ld.so.conf'" + fi + echo + + echo "See any operating system documentation about shared libraries for" + case $host in + solaris2.[6789]|solaris2.1[0-9]) + echo "more information, such as the ld(1), crle(1) and ld.so(8) manual" + echo "pages." + ;; + *) + echo "more information, such as the ld(1) and ld.so(8) manual pages." + ;; + esac + echo "----------------------------------------------------------------------" + fi + exit $EXIT_SUCCESS +} + +test "$opt_mode" = finish && func_mode_finish ${1+"$@"} + + +# func_mode_install arg... +func_mode_install () +{ + $opt_debug + # There may be an optional sh(1) argument at the beginning of + # install_prog (especially on Windows NT). + if test "$nonopt" = "$SHELL" || test "$nonopt" = /bin/sh || + # Allow the use of GNU shtool's install command. + case $nonopt in *shtool*) :;; *) false;; esac; then + # Aesthetically quote it. + func_quote_for_eval "$nonopt" + install_prog="$func_quote_for_eval_result " + arg=$1 + shift + else + install_prog= + arg=$nonopt + fi + + # The real first argument should be the name of the installation program. + # Aesthetically quote it. + func_quote_for_eval "$arg" + func_append install_prog "$func_quote_for_eval_result" + install_shared_prog=$install_prog + case " $install_prog " in + *[\\\ /]cp\ *) install_cp=: ;; + *) install_cp=false ;; + esac + + # We need to accept at least all the BSD install flags. + dest= + files= + opts= + prev= + install_type= + isdir=no + stripme= + no_mode=: + for arg + do + arg2= + if test -n "$dest"; then + func_append files " $dest" + dest=$arg + continue + fi + + case $arg in + -d) isdir=yes ;; + -f) + if $install_cp; then :; else + prev=$arg + fi + ;; + -g | -m | -o) + prev=$arg + ;; + -s) + stripme=" -s" + continue + ;; + -*) + ;; + *) + # If the previous option needed an argument, then skip it. + if test -n "$prev"; then + if test "x$prev" = x-m && test -n "$install_override_mode"; then + arg2=$install_override_mode + no_mode=false + fi + prev= + else + dest=$arg + continue + fi + ;; + esac + + # Aesthetically quote the argument. + func_quote_for_eval "$arg" + func_append install_prog " $func_quote_for_eval_result" + if test -n "$arg2"; then + func_quote_for_eval "$arg2" + fi + func_append install_shared_prog " $func_quote_for_eval_result" + done + + test -z "$install_prog" && \ + func_fatal_help "you must specify an install program" + + test -n "$prev" && \ + func_fatal_help "the \`$prev' option requires an argument" + + if test -n "$install_override_mode" && $no_mode; then + if $install_cp; then :; else + func_quote_for_eval "$install_override_mode" + func_append install_shared_prog " -m $func_quote_for_eval_result" + fi + fi + + if test -z "$files"; then + if test -z "$dest"; then + func_fatal_help "no file or destination specified" + else + func_fatal_help "you must specify a destination" + fi + fi + + # Strip any trailing slash from the destination. + func_stripname '' '/' "$dest" + dest=$func_stripname_result + + # Check to see that the destination is a directory. + test -d "$dest" && isdir=yes + if test "$isdir" = yes; then + destdir="$dest" + destname= + else + func_dirname_and_basename "$dest" "" "." + destdir="$func_dirname_result" + destname="$func_basename_result" + + # Not a directory, so check to see that there is only one file specified. + set dummy $files; shift + test "$#" -gt 1 && \ + func_fatal_help "\`$dest' is not a directory" + fi + case $destdir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + for file in $files; do + case $file in + *.lo) ;; + *) + func_fatal_help "\`$destdir' must be an absolute directory name" + ;; + esac + done + ;; + esac + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + staticlibs= + future_libdirs= + current_libdirs= + for file in $files; do + + # Do each installation. + case $file in + *.$libext) + # Do the static libraries later. + func_append staticlibs " $file" + ;; + + *.la) + func_resolve_sysroot "$file" + file=$func_resolve_sysroot_result + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$file" \ + || func_fatal_help "\`$file' is not a valid libtool archive" + + library_names= + old_library= + relink_command= + func_source "$file" + + # Add the libdir to current_libdirs if it is the destination. + if test "X$destdir" = "X$libdir"; then + case "$current_libdirs " in + *" $libdir "*) ;; + *) func_append current_libdirs " $libdir" ;; + esac + else + # Note the libdir as a future libdir. + case "$future_libdirs " in + *" $libdir "*) ;; + *) func_append future_libdirs " $libdir" ;; + esac + fi + + func_dirname "$file" "/" "" + dir="$func_dirname_result" + func_append dir "$objdir" + + if test -n "$relink_command"; then + # Determine the prefix the user has applied to our future dir. + inst_prefix_dir=`$ECHO "$destdir" | $SED -e "s%$libdir\$%%"` + + # Don't allow the user to place us outside of our expected + # location b/c this prevents finding dependent libraries that + # are installed to the same prefix. + # At present, this check doesn't affect windows .dll's that + # are installed into $libdir/../bin (currently, that works fine) + # but it's something to keep an eye on. + test "$inst_prefix_dir" = "$destdir" && \ + func_fatal_error "error: cannot install \`$file' to a directory not ending in $libdir" + + if test -n "$inst_prefix_dir"; then + # Stick the inst_prefix_dir data into the link command. + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"` + else + relink_command=`$ECHO "$relink_command" | $SED "s%@inst_prefix_dir@%%"` + fi + + func_warning "relinking \`$file'" + func_show_eval "$relink_command" \ + 'func_fatal_error "error: relink \`$file'\'' with the above command before installing it"' + fi + + # See the names of the shared library. + set dummy $library_names; shift + if test -n "$1"; then + realname="$1" + shift + + srcname="$realname" + test -n "$relink_command" && srcname="$realname"T + + # Install the shared library and build the symlinks. + func_show_eval "$install_shared_prog $dir/$srcname $destdir/$realname" \ + 'exit $?' + tstripme="$stripme" + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + case $realname in + *.dll.a) + tstripme="" + ;; + esac + ;; + esac + if test -n "$tstripme" && test -n "$striplib"; then + func_show_eval "$striplib $destdir/$realname" 'exit $?' + fi + + if test "$#" -gt 0; then + # Delete the old symlinks, and create new ones. + # Try `ln -sf' first, because the `ln' binary might depend on + # the symlink we replace! Solaris /bin/ln does not understand -f, + # so we also need to try rm && ln -s. + for linkname + do + test "$linkname" != "$realname" \ + && func_show_eval "(cd $destdir && { $LN_S -f $realname $linkname || { $RM $linkname && $LN_S $realname $linkname; }; })" + done + fi + + # Do each command in the postinstall commands. + lib="$destdir/$realname" + func_execute_cmds "$postinstall_cmds" 'exit $?' + fi + + # Install the pseudo-library for information purposes. + func_basename "$file" + name="$func_basename_result" + instname="$dir/$name"i + func_show_eval "$install_prog $instname $destdir/$name" 'exit $?' + + # Maybe install the static library, too. + test -n "$old_library" && func_append staticlibs " $dir/$old_library" + ;; + + *.lo) + # Install (i.e. copy) a libtool object. + + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # Deduce the name of the destination old-style object file. + case $destfile in + *.lo) + func_lo2o "$destfile" + staticdest=$func_lo2o_result + ;; + *.$objext) + staticdest="$destfile" + destfile= + ;; + *) + func_fatal_help "cannot copy a libtool object to \`$destfile'" + ;; + esac + + # Install the libtool object if requested. + test -n "$destfile" && \ + func_show_eval "$install_prog $file $destfile" 'exit $?' + + # Install the old object if enabled. + if test "$build_old_libs" = yes; then + # Deduce the name of the old-style object file. + func_lo2o "$file" + staticobj=$func_lo2o_result + func_show_eval "$install_prog \$staticobj \$staticdest" 'exit $?' + fi + exit $EXIT_SUCCESS + ;; + + *) + # Figure out destination file name, if it wasn't already specified. + if test -n "$destname"; then + destfile="$destdir/$destname" + else + func_basename "$file" + destfile="$func_basename_result" + destfile="$destdir/$destfile" + fi + + # If the file is missing, and there is a .exe on the end, strip it + # because it is most likely a libtool script we actually want to + # install + stripped_ext="" + case $file in + *.exe) + if test ! -f "$file"; then + func_stripname '' '.exe' "$file" + file=$func_stripname_result + stripped_ext=".exe" + fi + ;; + esac + + # Do a test to see if this is really a libtool program. + case $host in + *cygwin* | *mingw*) + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + wrapper=$func_ltwrapper_scriptname_result + else + func_stripname '' '.exe' "$file" + wrapper=$func_stripname_result + fi + ;; + *) + wrapper=$file + ;; + esac + if func_ltwrapper_script_p "$wrapper"; then + notinst_deplibs= + relink_command= + + func_source "$wrapper" + + # Check the variables that should have been set. + test -z "$generated_by_libtool_version" && \ + func_fatal_error "invalid libtool wrapper script \`$wrapper'" + + finalize=yes + for lib in $notinst_deplibs; do + # Check to see that each library is installed. + libdir= + if test -f "$lib"; then + func_source "$lib" + fi + libfile="$libdir/"`$ECHO "$lib" | $SED 's%^.*/%%g'` ### testsuite: skip nested quoting test + if test -n "$libdir" && test ! -f "$libfile"; then + func_warning "\`$lib' has not been installed in \`$libdir'" + finalize=no + fi + done + + relink_command= + func_source "$wrapper" + + outputname= + if test "$fast_install" = no && test -n "$relink_command"; then + $opt_dry_run || { + if test "$finalize" = yes; then + tmpdir=`func_mktempdir` + func_basename "$file$stripped_ext" + file="$func_basename_result" + outputname="$tmpdir/$file" + # Replace the output file specification. + relink_command=`$ECHO "$relink_command" | $SED 's%@OUTPUT@%'"$outputname"'%g'` + + $opt_silent || { + func_quote_for_expand "$relink_command" + eval "func_echo $func_quote_for_expand_result" + } + if eval "$relink_command"; then : + else + func_error "error: relink \`$file' with the above command before installing it" + $opt_dry_run || ${RM}r "$tmpdir" + continue + fi + file="$outputname" + else + func_warning "cannot relink \`$file'" + fi + } + else + # Install the binary that we compiled earlier. + file=`$ECHO "$file$stripped_ext" | $SED "s%\([^/]*\)$%$objdir/\1%"` + fi + fi + + # remove .exe since cygwin /usr/bin/install will append another + # one anyway + case $install_prog,$host in + */usr/bin/install*,*cygwin*) + case $file:$destfile in + *.exe:*.exe) + # this is ok + ;; + *.exe:*) + destfile=$destfile.exe + ;; + *:*.exe) + func_stripname '' '.exe' "$destfile" + destfile=$func_stripname_result + ;; + esac + ;; + esac + func_show_eval "$install_prog\$stripme \$file \$destfile" 'exit $?' + $opt_dry_run || if test -n "$outputname"; then + ${RM}r "$tmpdir" + fi + ;; + esac + done + + for file in $staticlibs; do + func_basename "$file" + name="$func_basename_result" + + # Set up the ranlib parameters. + oldlib="$destdir/$name" + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + + func_show_eval "$install_prog \$file \$oldlib" 'exit $?' + + if test -n "$stripme" && test -n "$old_striplib"; then + func_show_eval "$old_striplib $tool_oldlib" 'exit $?' + fi + + # Do each command in the postinstall commands. + func_execute_cmds "$old_postinstall_cmds" 'exit $?' + done + + test -n "$future_libdirs" && \ + func_warning "remember to run \`$progname --finish$future_libdirs'" + + if test -n "$current_libdirs"; then + # Maybe just do a dry run. + $opt_dry_run && current_libdirs=" -n$current_libdirs" + exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs' + else + exit $EXIT_SUCCESS + fi +} + +test "$opt_mode" = install && func_mode_install ${1+"$@"} + + +# func_generate_dlsyms outputname originator pic_p +# Extract symbols from dlprefiles and create ${outputname}S.o with +# a dlpreopen symbol table. +func_generate_dlsyms () +{ + $opt_debug + my_outputname="$1" + my_originator="$2" + my_pic_p="${3-no}" + my_prefix=`$ECHO "$my_originator" | sed 's%[^a-zA-Z0-9]%_%g'` + my_dlsyms= + + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + if test -n "$NM" && test -n "$global_symbol_pipe"; then + my_dlsyms="${my_outputname}S.c" + else + func_error "not configured to extract global symbols from dlpreopened files" + fi + fi + + if test -n "$my_dlsyms"; then + case $my_dlsyms in + "") ;; + *.c) + # Discover the nlist of each of the dlfiles. + nlist="$output_objdir/${my_outputname}.nm" + + func_show_eval "$RM $nlist ${nlist}S ${nlist}T" + + # Parse the name list into a source file. + func_verbose "creating $output_objdir/$my_dlsyms" + + $opt_dry_run || $ECHO > "$output_objdir/$my_dlsyms" "\ +/* $my_dlsyms - symbol resolution table for \`$my_outputname' dlsym emulation. */ +/* Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION */ + +#ifdef __cplusplus +extern \"C\" { +#endif + +#if defined(__GNUC__) && (((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4)) || (__GNUC__ > 4)) +#pragma GCC diagnostic ignored \"-Wstrict-prototypes\" +#endif + +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT_DLSYM_CONST +#else +# define LT_DLSYM_CONST const +#endif + +/* External symbol declarations for the compiler. */\ +" + + if test "$dlself" = yes; then + func_verbose "generating symbol list for \`$output'" + + $opt_dry_run || echo ': @PROGRAM@ ' > "$nlist" + + # Add our own program objects to the symbol list. + progfiles=`$ECHO "$objs$old_deplibs" | $SP2NL | $SED "$lo2o" | $NL2SP` + for progfile in $progfiles; do + func_to_tool_file "$progfile" func_convert_file_msys_to_w32 + func_verbose "extracting global C symbols from \`$func_to_tool_file_result'" + $opt_dry_run || eval "$NM $func_to_tool_file_result | $global_symbol_pipe >> '$nlist'" + done + + if test -n "$exclude_expsyms"; then + $opt_dry_run || { + eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + if test -n "$export_symbols_regex"; then + $opt_dry_run || { + eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + } + fi + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + export_symbols="$output_objdir/$outputname.exp" + $opt_dry_run || { + $RM $export_symbols + eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"' + ;; + esac + } + else + $opt_dry_run || { + eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"' + eval '$GREP -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T' + eval '$MV "$nlist"T "$nlist"' + case $host in + *cygwin* | *mingw* | *cegcc* ) + eval "echo EXPORTS "'> "$output_objdir/$outputname.def"' + eval 'cat "$nlist" >> "$output_objdir/$outputname.def"' + ;; + esac + } + fi + fi + + for dlprefile in $dlprefiles; do + func_verbose "extracting global C symbols from \`$dlprefile'" + func_basename "$dlprefile" + name="$func_basename_result" + case $host in + *cygwin* | *mingw* | *cegcc* ) + # if an import library, we need to obtain dlname + if func_win32_import_lib_p "$dlprefile"; then + func_tr_sh "$dlprefile" + eval "curr_lafile=\$libfile_$func_tr_sh_result" + dlprefile_dlbasename="" + if test -n "$curr_lafile" && func_lalib_p "$curr_lafile"; then + # Use subshell, to avoid clobbering current variable values + dlprefile_dlname=`source "$curr_lafile" && echo "$dlname"` + if test -n "$dlprefile_dlname" ; then + func_basename "$dlprefile_dlname" + dlprefile_dlbasename="$func_basename_result" + else + # no lafile. user explicitly requested -dlpreopen . + $sharedlib_from_linklib_cmd "$dlprefile" + dlprefile_dlbasename=$sharedlib_from_linklib_result + fi + fi + $opt_dry_run || { + if test -n "$dlprefile_dlbasename" ; then + eval '$ECHO ": $dlprefile_dlbasename" >> "$nlist"' + else + func_warning "Could not compute DLL name from $name" + eval '$ECHO ": $name " >> "$nlist"' + fi + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe | + $SED -e '/I __imp/d' -e 's/I __nm_/D /;s/_nm__//' >> '$nlist'" + } + else # not an import lib + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + fi + ;; + *) + $opt_dry_run || { + eval '$ECHO ": $name " >> "$nlist"' + func_to_tool_file "$dlprefile" func_convert_file_msys_to_w32 + eval "$NM \"$func_to_tool_file_result\" 2>/dev/null | $global_symbol_pipe >> '$nlist'" + } + ;; + esac + done + + $opt_dry_run || { + # Make sure we have at least an empty file. + test -f "$nlist" || : > "$nlist" + + if test -n "$exclude_expsyms"; then + $EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T + $MV "$nlist"T "$nlist" + fi + + # Try sorting and uniquifying the output. + if $GREP -v "^: " < "$nlist" | + if sort -k 3 /dev/null 2>&1; then + sort -k 3 + else + sort +2 + fi | + uniq > "$nlist"S; then + : + else + $GREP -v "^: " < "$nlist" > "$nlist"S + fi + + if test -f "$nlist"S; then + eval "$global_symbol_to_cdecl"' < "$nlist"S >> "$output_objdir/$my_dlsyms"' + else + echo '/* NONE */' >> "$output_objdir/$my_dlsyms" + fi + + echo >> "$output_objdir/$my_dlsyms" "\ + +/* The mapping between symbol names and symbols. */ +typedef struct { + const char *name; + void *address; +} lt_dlsymlist; +extern LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[]; +LT_DLSYM_CONST lt_dlsymlist +lt_${my_prefix}_LTX_preloaded_symbols[] = +{\ + { \"$my_originator\", (void *) 0 }," + + case $need_lib_prefix in + no) + eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + *) + eval "$global_symbol_to_c_name_address_lib_prefix" < "$nlist" >> "$output_objdir/$my_dlsyms" + ;; + esac + echo >> "$output_objdir/$my_dlsyms" "\ + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt_${my_prefix}_LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif\ +" + } # !$opt_dry_run + + pic_flag_for_symtable= + case "$compile_command " in + *" -static "*) ;; + *) + case $host in + # compiling the symbol table file with pic_flag works around + # a FreeBSD bug that causes programs to crash when -lm is + # linked before any other PIC object. But we must not use + # pic_flag when linking with -static. The problem exists in + # FreeBSD 2.2.6 and is fixed in FreeBSD 3.1. + *-*-freebsd2.*|*-*-freebsd3.0*|*-*-freebsdelf3.0*) + pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND" ;; + *-*-hpux*) + pic_flag_for_symtable=" $pic_flag" ;; + *) + if test "X$my_pic_p" != Xno; then + pic_flag_for_symtable=" $pic_flag" + fi + ;; + esac + ;; + esac + symtab_cflags= + for arg in $LTCFLAGS; do + case $arg in + -pie | -fpie | -fPIE) ;; + *) func_append symtab_cflags " $arg" ;; + esac + done + + # Now compile the dynamic symbol file. + func_show_eval '(cd $output_objdir && $LTCC$symtab_cflags -c$no_builtin_flag$pic_flag_for_symtable "$my_dlsyms")' 'exit $?' + + # Clean up the generated files. + func_show_eval '$RM "$output_objdir/$my_dlsyms" "$nlist" "${nlist}S" "${nlist}T"' + + # Transform the symbol file into the correct name. + symfileobj="$output_objdir/${my_outputname}S.$objext" + case $host in + *cygwin* | *mingw* | *cegcc* ) + if test -f "$output_objdir/$my_outputname.def"; then + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$output_objdir/$my_outputname.def $symfileobj%"` + else + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + fi + ;; + *) + compile_command=`$ECHO "$compile_command" | $SED "s%@SYMFILE@%$symfileobj%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s%@SYMFILE@%$symfileobj%"` + ;; + esac + ;; + *) + func_fatal_error "unknown suffix for \`$my_dlsyms'" + ;; + esac + else + # We keep going just in case the user didn't refer to + # lt_preloaded_symbols. The linker will fail if global_symbol_pipe + # really was required. + + # Nullify the symbol file. + compile_command=`$ECHO "$compile_command" | $SED "s% @SYMFILE@%%"` + finalize_command=`$ECHO "$finalize_command" | $SED "s% @SYMFILE@%%"` + fi +} + +# func_win32_libid arg +# return the library type of file 'arg' +# +# Need a lot of goo to handle *both* DLLs and import libs +# Has to be a shell function in order to 'eat' the argument +# that is supplied when $file_magic_command is called. +# Despite the name, also deal with 64 bit binaries. +func_win32_libid () +{ + $opt_debug + win32_libid_type="unknown" + win32_fileres=`file -L $1 2>/dev/null` + case $win32_fileres in + *ar\ archive\ import\ library*) # definitely import + win32_libid_type="x86 archive import" + ;; + *ar\ archive*) # could be an import, or static + # Keep the egrep pattern in sync with the one in _LT_CHECK_MAGIC_METHOD. + if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | + $EGREP 'file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' >/dev/null; then + func_to_tool_file "$1" func_convert_file_msys_to_w32 + win32_nmres=`eval $NM -f posix -A \"$func_to_tool_file_result\" | + $SED -n -e ' + 1,100{ + / I /{ + s,.*,import, + p + q + } + }'` + case $win32_nmres in + import*) win32_libid_type="x86 archive import";; + *) win32_libid_type="x86 archive static";; + esac + fi + ;; + *DLL*) + win32_libid_type="x86 DLL" + ;; + *executable*) # but shell scripts are "executable" too... + case $win32_fileres in + *MS\ Windows\ PE\ Intel*) + win32_libid_type="x86 DLL" + ;; + esac + ;; + esac + $ECHO "$win32_libid_type" +} + +# func_cygming_dll_for_implib ARG +# +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib () +{ + $opt_debug + sharedlib_from_linklib_result=`$DLLTOOL --identify-strict --identify "$1"` +} + +# func_cygming_dll_for_implib_fallback_core SECTION_NAME LIBNAMEs +# +# The is the core of a fallback implementation of a +# platform-specific function to extract the name of the +# DLL associated with the specified import library LIBNAME. +# +# SECTION_NAME is either .idata$6 or .idata$7, depending +# on the platform and compiler that created the implib. +# +# Echos the name of the DLL associated with the +# specified import library. +func_cygming_dll_for_implib_fallback_core () +{ + $opt_debug + match_literal=`$ECHO "$1" | $SED "$sed_make_literal_regex"` + $OBJDUMP -s --section "$1" "$2" 2>/dev/null | + $SED '/^Contents of section '"$match_literal"':/{ + # Place marker at beginning of archive member dllname section + s/.*/====MARK====/ + p + d + } + # These lines can sometimes be longer than 43 characters, but + # are always uninteresting + /:[ ]*file format pe[i]\{,1\}-/d + /^In archive [^:]*:/d + # Ensure marker is printed + /^====MARK====/p + # Remove all lines with less than 43 characters + /^.\{43\}/!d + # From remaining lines, remove first 43 characters + s/^.\{43\}//' | + $SED -n ' + # Join marker and all lines until next marker into a single line + /^====MARK====/ b para + H + $ b para + b + :para + x + s/\n//g + # Remove the marker + s/^====MARK====// + # Remove trailing dots and whitespace + s/[\. \t]*$// + # Print + /./p' | + # we now have a list, one entry per line, of the stringified + # contents of the appropriate section of all members of the + # archive which possess that section. Heuristic: eliminate + # all those which have a first or second character that is + # a '.' (that is, objdump's representation of an unprintable + # character.) This should work for all archives with less than + # 0x302f exports -- but will fail for DLLs whose name actually + # begins with a literal '.' or a single character followed by + # a '.'. + # + # Of those that remain, print the first one. + $SED -e '/^\./d;/^.\./d;q' +} + +# func_cygming_gnu_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is a GNU/binutils-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_gnu_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_gnu_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $EGREP ' (_head_[A-Za-z0-9_]+_[ad]l*|[A-Za-z0-9_]+_[ad]l*_iname)$'` + test -n "$func_cygming_gnu_implib_tmp" +} + +# func_cygming_ms_implib_p ARG +# This predicate returns with zero status (TRUE) if +# ARG is an MS-style import library. Returns +# with nonzero status (FALSE) otherwise. +func_cygming_ms_implib_p () +{ + $opt_debug + func_to_tool_file "$1" func_convert_file_msys_to_w32 + func_cygming_ms_implib_tmp=`$NM "$func_to_tool_file_result" | eval "$global_symbol_pipe" | $GREP '_NULL_IMPORT_DESCRIPTOR'` + test -n "$func_cygming_ms_implib_tmp" +} + +# func_cygming_dll_for_implib_fallback ARG +# Platform-specific function to extract the +# name of the DLL associated with the specified +# import library ARG. +# +# This fallback implementation is for use when $DLLTOOL +# does not support the --identify-strict option. +# Invoked by eval'ing the libtool variable +# $sharedlib_from_linklib_cmd +# Result is available in the variable +# $sharedlib_from_linklib_result +func_cygming_dll_for_implib_fallback () +{ + $opt_debug + if func_cygming_gnu_implib_p "$1" ; then + # binutils import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$7' "$1"` + elif func_cygming_ms_implib_p "$1" ; then + # ms-generated import library + sharedlib_from_linklib_result=`func_cygming_dll_for_implib_fallback_core '.idata$6' "$1"` + else + # unknown + sharedlib_from_linklib_result="" + fi +} + + +# func_extract_an_archive dir oldlib +func_extract_an_archive () +{ + $opt_debug + f_ex_an_ar_dir="$1"; shift + f_ex_an_ar_oldlib="$1" + if test "$lock_old_archive_extraction" = yes; then + lockfile=$f_ex_an_ar_oldlib.lock + until $opt_dry_run || ln "$progpath" "$lockfile" 2>/dev/null; do + func_echo "Waiting for $lockfile to be removed" + sleep 2 + done + fi + func_show_eval "(cd \$f_ex_an_ar_dir && $AR x \"\$f_ex_an_ar_oldlib\")" \ + 'stat=$?; rm -f "$lockfile"; exit $stat' + if test "$lock_old_archive_extraction" = yes; then + $opt_dry_run || rm -f "$lockfile" + fi + if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then + : + else + func_fatal_error "object name conflicts in archive: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" + fi +} + + +# func_extract_archives gentop oldlib ... +func_extract_archives () +{ + $opt_debug + my_gentop="$1"; shift + my_oldlibs=${1+"$@"} + my_oldobjs="" + my_xlib="" + my_xabs="" + my_xdir="" + + for my_xlib in $my_oldlibs; do + # Extract the objects. + case $my_xlib in + [\\/]* | [A-Za-z]:[\\/]*) my_xabs="$my_xlib" ;; + *) my_xabs=`pwd`"/$my_xlib" ;; + esac + func_basename "$my_xlib" + my_xlib="$func_basename_result" + my_xlib_u=$my_xlib + while :; do + case " $extracted_archives " in + *" $my_xlib_u "*) + func_arith $extracted_serial + 1 + extracted_serial=$func_arith_result + my_xlib_u=lt$extracted_serial-$my_xlib ;; + *) break ;; + esac + done + extracted_archives="$extracted_archives $my_xlib_u" + my_xdir="$my_gentop/$my_xlib_u" + + func_mkdir_p "$my_xdir" + + case $host in + *-darwin*) + func_verbose "Extracting $my_xabs" + # Do not bother doing anything if just a dry run + $opt_dry_run || { + darwin_orig_dir=`pwd` + cd $my_xdir || exit $? + darwin_archive=$my_xabs + darwin_curdir=`pwd` + darwin_base_archive=`basename "$darwin_archive"` + darwin_arches=`$LIPO -info "$darwin_archive" 2>/dev/null | $GREP Architectures 2>/dev/null || true` + if test -n "$darwin_arches"; then + darwin_arches=`$ECHO "$darwin_arches" | $SED -e 's/.*are://'` + darwin_arch= + func_verbose "$darwin_base_archive has multiple architectures $darwin_arches" + for darwin_arch in $darwin_arches ; do + func_mkdir_p "unfat-$$/${darwin_base_archive}-${darwin_arch}" + $LIPO -thin $darwin_arch -output "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" "${darwin_archive}" + cd "unfat-$$/${darwin_base_archive}-${darwin_arch}" + func_extract_an_archive "`pwd`" "${darwin_base_archive}" + cd "$darwin_curdir" + $RM "unfat-$$/${darwin_base_archive}-${darwin_arch}/${darwin_base_archive}" + done # $darwin_arches + ## Okay now we've a bunch of thin objects, gotta fatten them up :) + darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print | $SED -e "$basename" | sort -u` + darwin_file= + darwin_files= + for darwin_file in $darwin_filelist; do + darwin_files=`find unfat-$$ -name $darwin_file -print | sort | $NL2SP` + $LIPO -create -output "$darwin_file" $darwin_files + done # $darwin_filelist + $RM -rf unfat-$$ + cd "$darwin_orig_dir" + else + cd $darwin_orig_dir + func_extract_an_archive "$my_xdir" "$my_xabs" + fi # $darwin_arches + } # !$opt_dry_run + ;; + *) + func_extract_an_archive "$my_xdir" "$my_xabs" + ;; + esac + my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | sort | $NL2SP` + done + + func_extract_archives_result="$my_oldobjs" +} + + +# func_emit_wrapper [arg=no] +# +# Emit a libtool wrapper script on stdout. +# Don't directly open a file because we may want to +# incorporate the script contents within a cygwin/mingw +# wrapper executable. Must ONLY be called from within +# func_mode_link because it depends on a number of variables +# set therein. +# +# ARG is the value that the WRAPPER_SCRIPT_BELONGS_IN_OBJDIR +# variable will take. If 'yes', then the emitted script +# will assume that the directory in which it is stored is +# the $objdir directory. This is a cygwin/mingw-specific +# behavior. +func_emit_wrapper () +{ + func_emit_wrapper_arg1=${1-no} + + $ECHO "\ +#! $SHELL + +# $output - temporary wrapper script for $objdir/$outputname +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# The $output program cannot be directly executed until all the libtool +# libraries that it depends on are installed. +# +# This wrapper script should never be moved out of the build directory. +# If it is, it will not operate correctly. + +# Sed substitution that helps us do robust quoting. It backslashifies +# metacharacters that are still active within double-quoted strings. +sed_quote_subst='$sed_quote_subst' + +# Be Bourne compatible +if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: + # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac +fi +BIN_SH=xpg4; export BIN_SH # for Tru64 +DUALCASE=1; export DUALCASE # for MKS sh + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +relink_command=\"$relink_command\" + +# This environment variable determines our operation mode. +if test \"\$libtool_install_magic\" = \"$magic\"; then + # install mode needs the following variables: + generated_by_libtool_version='$macro_version' + notinst_deplibs='$notinst_deplibs' +else + # When we are sourced in execute mode, \$file and \$ECHO are already set. + if test \"\$libtool_execute_magic\" != \"$magic\"; then + file=\"\$0\"" + + qECHO=`$ECHO "$ECHO" | $SED "$sed_quote_subst"` + $ECHO "\ + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$1 +_LTECHO_EOF' +} + ECHO=\"$qECHO\" + fi + +# Very basic option parsing. These options are (a) specific to +# the libtool wrapper, (b) are identical between the wrapper +# /script/ and the wrapper /executable/ which is used only on +# windows platforms, and (c) all begin with the string "--lt-" +# (application programs are unlikely to have options which match +# this pattern). +# +# There are only two supported options: --lt-debug and +# --lt-dump-script. There is, deliberately, no --lt-help. +# +# The first argument to this parsing function should be the +# script's $0 value, followed by "$@". +lt_option_debug= +func_parse_lt_options () +{ + lt_script_arg0=\$0 + shift + for lt_opt + do + case \"\$lt_opt\" in + --lt-debug) lt_option_debug=1 ;; + --lt-dump-script) + lt_dump_D=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%/[^/]*$%%'\` + test \"X\$lt_dump_D\" = \"X\$lt_script_arg0\" && lt_dump_D=. + lt_dump_F=\`\$ECHO \"X\$lt_script_arg0\" | $SED -e 's/^X//' -e 's%^.*/%%'\` + cat \"\$lt_dump_D/\$lt_dump_F\" + exit 0 + ;; + --lt-*) + \$ECHO \"Unrecognized --lt- option: '\$lt_opt'\" 1>&2 + exit 1 + ;; + esac + done + + # Print the debug banner immediately: + if test -n \"\$lt_option_debug\"; then + echo \"${outputname}:${output}:\${LINENO}: libtool wrapper (GNU $PACKAGE$TIMESTAMP) $VERSION\" 1>&2 + fi +} + +# Used when --lt-debug. Prints its arguments to stdout +# (redirection is the responsibility of the caller) +func_lt_dump_args () +{ + lt_dump_args_N=1; + for lt_arg + do + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[\$lt_dump_args_N]: \$lt_arg\" + lt_dump_args_N=\`expr \$lt_dump_args_N + 1\` + done +} + +# Core function for launching the target application +func_exec_program_core () +{ +" + case $host in + # Backslashes separate directories on plain windows + *-*-mingw | *-*-os2* | *-cegcc*) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir\\\\\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir\\\\\$program\" \${1+\"\$@\"} +" + ;; + + *) + $ECHO "\ + if test -n \"\$lt_option_debug\"; then + \$ECHO \"${outputname}:${output}:\${LINENO}: newargv[0]: \$progdir/\$program\" 1>&2 + func_lt_dump_args \${1+\"\$@\"} 1>&2 + fi + exec \"\$progdir/\$program\" \${1+\"\$@\"} +" + ;; + esac + $ECHO "\ + \$ECHO \"\$0: cannot exec \$program \$*\" 1>&2 + exit 1 +} + +# A function to encapsulate launching the target application +# Strips options in the --lt-* namespace from \$@ and +# launches target application with the remaining arguments. +func_exec_program () +{ + case \" \$* \" in + *\\ --lt-*) + for lt_wr_arg + do + case \$lt_wr_arg in + --lt-*) ;; + *) set x \"\$@\" \"\$lt_wr_arg\"; shift;; + esac + shift + done ;; + esac + func_exec_program_core \${1+\"\$@\"} +} + + # Parse options + func_parse_lt_options \"\$0\" \${1+\"\$@\"} + + # Find the directory that this script lives in. + thisdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*$%%'\` + test \"x\$thisdir\" = \"x\$file\" && thisdir=. + + # Follow symbolic links until we get to the real thisdir. + file=\`ls -ld \"\$file\" | $SED -n 's/.*-> //p'\` + while test -n \"\$file\"; do + destdir=\`\$ECHO \"\$file\" | $SED 's%/[^/]*\$%%'\` + + # If there was a directory component, then change thisdir. + if test \"x\$destdir\" != \"x\$file\"; then + case \"\$destdir\" in + [\\\\/]* | [A-Za-z]:[\\\\/]*) thisdir=\"\$destdir\" ;; + *) thisdir=\"\$thisdir/\$destdir\" ;; + esac + fi + + file=\`\$ECHO \"\$file\" | $SED 's%^.*/%%'\` + file=\`ls -ld \"\$thisdir/\$file\" | $SED -n 's/.*-> //p'\` + done + + # Usually 'no', except on cygwin/mingw when embedded into + # the cwrapper. + WRAPPER_SCRIPT_BELONGS_IN_OBJDIR=$func_emit_wrapper_arg1 + if test \"\$WRAPPER_SCRIPT_BELONGS_IN_OBJDIR\" = \"yes\"; then + # special case for '.' + if test \"\$thisdir\" = \".\"; then + thisdir=\`pwd\` + fi + # remove .libs from thisdir + case \"\$thisdir\" in + *[\\\\/]$objdir ) thisdir=\`\$ECHO \"\$thisdir\" | $SED 's%[\\\\/][^\\\\/]*$%%'\` ;; + $objdir ) thisdir=. ;; + esac + fi + + # Try to get the absolute directory name. + absdir=\`cd \"\$thisdir\" && pwd\` + test -n \"\$absdir\" && thisdir=\"\$absdir\" +" + + if test "$fast_install" = yes; then + $ECHO "\ + program=lt-'$outputname'$exeext + progdir=\"\$thisdir/$objdir\" + + if test ! -f \"\$progdir/\$program\" || + { file=\`ls -1dt \"\$progdir/\$program\" \"\$progdir/../\$program\" 2>/dev/null | ${SED} 1q\`; \\ + test \"X\$file\" != \"X\$progdir/\$program\"; }; then + + file=\"\$\$-\$program\" + + if test ! -d \"\$progdir\"; then + $MKDIR \"\$progdir\" + else + $RM \"\$progdir/\$file\" + fi" + + $ECHO "\ + + # relink executable if necessary + if test -n \"\$relink_command\"; then + if relink_command_output=\`eval \$relink_command 2>&1\`; then : + else + $ECHO \"\$relink_command_output\" >&2 + $RM \"\$progdir/\$file\" + exit 1 + fi + fi + + $MV \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null || + { $RM \"\$progdir/\$program\"; + $MV \"\$progdir/\$file\" \"\$progdir/\$program\"; } + $RM \"\$progdir/\$file\" + fi" + else + $ECHO "\ + program='$outputname' + progdir=\"\$thisdir/$objdir\" +" + fi + + $ECHO "\ + + if test -f \"\$progdir/\$program\"; then" + + # fixup the dll searchpath if we need to. + # + # Fix the DLL searchpath if we need to. Do this before prepending + # to shlibpath, because on Windows, both are PATH and uninstalled + # libraries must come first. + if test -n "$dllsearchpath"; then + $ECHO "\ + # Add the dll search path components to the executable PATH + PATH=$dllsearchpath:\$PATH +" + fi + + # Export our shlibpath_var if we have one. + if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then + $ECHO "\ + # Add our own library path to $shlibpath_var + $shlibpath_var=\"$temp_rpath\$$shlibpath_var\" + + # Some systems cannot cope with colon-terminated $shlibpath_var + # The second colon is a workaround for a bug in BeOS R4 sed + $shlibpath_var=\`\$ECHO \"\$$shlibpath_var\" | $SED 's/::*\$//'\` + + export $shlibpath_var +" + fi + + $ECHO "\ + if test \"\$libtool_execute_magic\" != \"$magic\"; then + # Run the actual program with our arguments. + func_exec_program \${1+\"\$@\"} + fi + else + # The program doesn't exist. + \$ECHO \"\$0: error: \\\`\$progdir/\$program' does not exist\" 1>&2 + \$ECHO \"This script is just a wrapper for \$program.\" 1>&2 + \$ECHO \"See the $PACKAGE documentation for more information.\" 1>&2 + exit 1 + fi +fi\ +" +} + + +# func_emit_cwrapperexe_src +# emit the source code for a wrapper executable on stdout +# Must ONLY be called from within func_mode_link because +# it depends on a number of variable set therein. +func_emit_cwrapperexe_src () +{ + cat < +#include +#ifdef _MSC_VER +# include +# include +# include +#else +# include +# include +# ifdef __CYGWIN__ +# include +# endif +#endif +#include +#include +#include +#include +#include +#include +#include +#include + +/* declarations of non-ANSI functions */ +#if defined(__MINGW32__) +# ifdef __STRICT_ANSI__ +int _putenv (const char *); +# endif +#elif defined(__CYGWIN__) +# ifdef __STRICT_ANSI__ +char *realpath (const char *, char *); +int putenv (char *); +int setenv (const char *, const char *, int); +# endif +/* #elif defined (other platforms) ... */ +#endif + +/* portability defines, excluding path handling macros */ +#if defined(_MSC_VER) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +# define S_IXUSR _S_IEXEC +# ifndef _INTPTR_T_DEFINED +# define _INTPTR_T_DEFINED +# define intptr_t int +# endif +#elif defined(__MINGW32__) +# define setmode _setmode +# define stat _stat +# define chmod _chmod +# define getcwd _getcwd +# define putenv _putenv +#elif defined(__CYGWIN__) +# define HAVE_SETENV +# define FOPEN_WB "wb" +/* #elif defined (other platforms) ... */ +#endif + +#if defined(PATH_MAX) +# define LT_PATHMAX PATH_MAX +#elif defined(MAXPATHLEN) +# define LT_PATHMAX MAXPATHLEN +#else +# define LT_PATHMAX 1024 +#endif + +#ifndef S_IXOTH +# define S_IXOTH 0 +#endif +#ifndef S_IXGRP +# define S_IXGRP 0 +#endif + +/* path handling portability macros */ +#ifndef DIR_SEPARATOR +# define DIR_SEPARATOR '/' +# define PATH_SEPARATOR ':' +#endif + +#if defined (_WIN32) || defined (__MSDOS__) || defined (__DJGPP__) || \ + defined (__OS2__) +# define HAVE_DOS_BASED_FILE_SYSTEM +# define FOPEN_WB "wb" +# ifndef DIR_SEPARATOR_2 +# define DIR_SEPARATOR_2 '\\' +# endif +# ifndef PATH_SEPARATOR_2 +# define PATH_SEPARATOR_2 ';' +# endif +#endif + +#ifndef DIR_SEPARATOR_2 +# define IS_DIR_SEPARATOR(ch) ((ch) == DIR_SEPARATOR) +#else /* DIR_SEPARATOR_2 */ +# define IS_DIR_SEPARATOR(ch) \ + (((ch) == DIR_SEPARATOR) || ((ch) == DIR_SEPARATOR_2)) +#endif /* DIR_SEPARATOR_2 */ + +#ifndef PATH_SEPARATOR_2 +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR) +#else /* PATH_SEPARATOR_2 */ +# define IS_PATH_SEPARATOR(ch) ((ch) == PATH_SEPARATOR_2) +#endif /* PATH_SEPARATOR_2 */ + +#ifndef FOPEN_WB +# define FOPEN_WB "w" +#endif +#ifndef _O_BINARY +# define _O_BINARY 0 +#endif + +#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type))) +#define XFREE(stale) do { \ + if (stale) { free ((void *) stale); stale = 0; } \ +} while (0) + +#if defined(LT_DEBUGWRAPPER) +static int lt_debug = 1; +#else +static int lt_debug = 0; +#endif + +const char *program_name = "libtool-wrapper"; /* in case xstrdup fails */ + +void *xmalloc (size_t num); +char *xstrdup (const char *string); +const char *base_name (const char *name); +char *find_executable (const char *wrapper); +char *chase_symlinks (const char *pathspec); +int make_executable (const char *path); +int check_executable (const char *path); +char *strendzap (char *str, const char *pat); +void lt_debugprintf (const char *file, int line, const char *fmt, ...); +void lt_fatal (const char *file, int line, const char *message, ...); +static const char *nonnull (const char *s); +static const char *nonempty (const char *s); +void lt_setenv (const char *name, const char *value); +char *lt_extend_str (const char *orig_value, const char *add, int to_end); +void lt_update_exe_path (const char *name, const char *value); +void lt_update_lib_path (const char *name, const char *value); +char **prepare_spawn (char **argv); +void lt_dump_script (FILE *f); +EOF + + cat <= 0) + && (st.st_mode & (S_IXUSR | S_IXGRP | S_IXOTH))) + return 1; + else + return 0; +} + +int +make_executable (const char *path) +{ + int rval = 0; + struct stat st; + + lt_debugprintf (__FILE__, __LINE__, "(make_executable): %s\n", + nonempty (path)); + if ((!path) || (!*path)) + return 0; + + if (stat (path, &st) >= 0) + { + rval = chmod (path, st.st_mode | S_IXOTH | S_IXGRP | S_IXUSR); + } + return rval; +} + +/* Searches for the full path of the wrapper. Returns + newly allocated full path name if found, NULL otherwise + Does not chase symlinks, even on platforms that support them. +*/ +char * +find_executable (const char *wrapper) +{ + int has_slash = 0; + const char *p; + const char *p_next; + /* static buffer for getcwd */ + char tmp[LT_PATHMAX + 1]; + int tmp_len; + char *concat_name; + + lt_debugprintf (__FILE__, __LINE__, "(find_executable): %s\n", + nonempty (wrapper)); + + if ((wrapper == NULL) || (*wrapper == '\0')) + return NULL; + + /* Absolute path? */ +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + if (isalpha ((unsigned char) wrapper[0]) && wrapper[1] == ':') + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + else + { +#endif + if (IS_DIR_SEPARATOR (wrapper[0])) + { + concat_name = xstrdup (wrapper); + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } +#if defined (HAVE_DOS_BASED_FILE_SYSTEM) + } +#endif + + for (p = wrapper; *p; p++) + if (*p == '/') + { + has_slash = 1; + break; + } + if (!has_slash) + { + /* no slashes; search PATH */ + const char *path = getenv ("PATH"); + if (path != NULL) + { + for (p = path; *p; p = p_next) + { + const char *q; + size_t p_len; + for (q = p; *q; q++) + if (IS_PATH_SEPARATOR (*q)) + break; + p_len = q - p; + p_next = (*q == '\0' ? q : q + 1); + if (p_len == 0) + { + /* empty path: current directory */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = + XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + } + else + { + concat_name = + XMALLOC (char, p_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, p, p_len); + concat_name[p_len] = '/'; + strcpy (concat_name + p_len + 1, wrapper); + } + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + } + } + /* not found in PATH; assume curdir */ + } + /* Relative path | not found in path: prepend cwd */ + if (getcwd (tmp, LT_PATHMAX) == NULL) + lt_fatal (__FILE__, __LINE__, "getcwd failed: %s", + nonnull (strerror (errno))); + tmp_len = strlen (tmp); + concat_name = XMALLOC (char, tmp_len + 1 + strlen (wrapper) + 1); + memcpy (concat_name, tmp, tmp_len); + concat_name[tmp_len] = '/'; + strcpy (concat_name + tmp_len + 1, wrapper); + + if (check_executable (concat_name)) + return concat_name; + XFREE (concat_name); + return NULL; +} + +char * +chase_symlinks (const char *pathspec) +{ +#ifndef S_ISLNK + return xstrdup (pathspec); +#else + char buf[LT_PATHMAX]; + struct stat s; + char *tmp_pathspec = xstrdup (pathspec); + char *p; + int has_symlinks = 0; + while (strlen (tmp_pathspec) && !has_symlinks) + { + lt_debugprintf (__FILE__, __LINE__, + "checking path component for symlinks: %s\n", + tmp_pathspec); + if (lstat (tmp_pathspec, &s) == 0) + { + if (S_ISLNK (s.st_mode) != 0) + { + has_symlinks = 1; + break; + } + + /* search backwards for last DIR_SEPARATOR */ + p = tmp_pathspec + strlen (tmp_pathspec) - 1; + while ((p > tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + p--; + if ((p == tmp_pathspec) && (!IS_DIR_SEPARATOR (*p))) + { + /* no more DIR_SEPARATORS left */ + break; + } + *p = '\0'; + } + else + { + lt_fatal (__FILE__, __LINE__, + "error accessing file \"%s\": %s", + tmp_pathspec, nonnull (strerror (errno))); + } + } + XFREE (tmp_pathspec); + + if (!has_symlinks) + { + return xstrdup (pathspec); + } + + tmp_pathspec = realpath (pathspec, buf); + if (tmp_pathspec == 0) + { + lt_fatal (__FILE__, __LINE__, + "could not follow symlinks for %s", pathspec); + } + return xstrdup (tmp_pathspec); +#endif +} + +char * +strendzap (char *str, const char *pat) +{ + size_t len, patlen; + + assert (str != NULL); + assert (pat != NULL); + + len = strlen (str); + patlen = strlen (pat); + + if (patlen <= len) + { + str += len - patlen; + if (strcmp (str, pat) == 0) + *str = '\0'; + } + return str; +} + +void +lt_debugprintf (const char *file, int line, const char *fmt, ...) +{ + va_list args; + if (lt_debug) + { + (void) fprintf (stderr, "%s:%s:%d: ", program_name, file, line); + va_start (args, fmt); + (void) vfprintf (stderr, fmt, args); + va_end (args); + } +} + +static void +lt_error_core (int exit_status, const char *file, + int line, const char *mode, + const char *message, va_list ap) +{ + fprintf (stderr, "%s:%s:%d: %s: ", program_name, file, line, mode); + vfprintf (stderr, message, ap); + fprintf (stderr, ".\n"); + + if (exit_status >= 0) + exit (exit_status); +} + +void +lt_fatal (const char *file, int line, const char *message, ...) +{ + va_list ap; + va_start (ap, message); + lt_error_core (EXIT_FAILURE, file, line, "FATAL", message, ap); + va_end (ap); +} + +static const char * +nonnull (const char *s) +{ + return s ? s : "(null)"; +} + +static const char * +nonempty (const char *s) +{ + return (s && !*s) ? "(empty)" : nonnull (s); +} + +void +lt_setenv (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_setenv) setting '%s' to '%s'\n", + nonnull (name), nonnull (value)); + { +#ifdef HAVE_SETENV + /* always make a copy, for consistency with !HAVE_SETENV */ + char *str = xstrdup (value); + setenv (name, str, 1); +#else + int len = strlen (name) + 1 + strlen (value) + 1; + char *str = XMALLOC (char, len); + sprintf (str, "%s=%s", name, value); + if (putenv (str) != EXIT_SUCCESS) + { + XFREE (str); + } +#endif + } +} + +char * +lt_extend_str (const char *orig_value, const char *add, int to_end) +{ + char *new_value; + if (orig_value && *orig_value) + { + int orig_value_len = strlen (orig_value); + int add_len = strlen (add); + new_value = XMALLOC (char, add_len + orig_value_len + 1); + if (to_end) + { + strcpy (new_value, orig_value); + strcpy (new_value + orig_value_len, add); + } + else + { + strcpy (new_value, add); + strcpy (new_value + add_len, orig_value); + } + } + else + { + new_value = xstrdup (add); + } + return new_value; +} + +void +lt_update_exe_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_exe_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + /* some systems can't cope with a ':'-terminated path #' */ + int len = strlen (new_value); + while (((len = strlen (new_value)) > 0) && IS_PATH_SEPARATOR (new_value[len-1])) + { + new_value[len-1] = '\0'; + } + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +void +lt_update_lib_path (const char *name, const char *value) +{ + lt_debugprintf (__FILE__, __LINE__, + "(lt_update_lib_path) modifying '%s' by prepending '%s'\n", + nonnull (name), nonnull (value)); + + if (name && *name && value && *value) + { + char *new_value = lt_extend_str (getenv (name), value, 0); + lt_setenv (name, new_value); + XFREE (new_value); + } +} + +EOF + case $host_os in + mingw*) + cat <<"EOF" + +/* Prepares an argument vector before calling spawn(). + Note that spawn() does not by itself call the command interpreter + (getenv ("COMSPEC") != NULL ? getenv ("COMSPEC") : + ({ OSVERSIONINFO v; v.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + GetVersionEx(&v); + v.dwPlatformId == VER_PLATFORM_WIN32_NT; + }) ? "cmd.exe" : "command.com"). + Instead it simply concatenates the arguments, separated by ' ', and calls + CreateProcess(). We must quote the arguments since Win32 CreateProcess() + interprets characters like ' ', '\t', '\\', '"' (but not '<' and '>') in a + special way: + - Space and tab are interpreted as delimiters. They are not treated as + delimiters if they are surrounded by double quotes: "...". + - Unescaped double quotes are removed from the input. Their only effect is + that within double quotes, space and tab are treated like normal + characters. + - Backslashes not followed by double quotes are not special. + - But 2*n+1 backslashes followed by a double quote become + n backslashes followed by a double quote (n >= 0): + \" -> " + \\\" -> \" + \\\\\" -> \\" + */ +#define SHELL_SPECIAL_CHARS "\"\\ \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +#define SHELL_SPACE_CHARS " \001\002\003\004\005\006\007\010\011\012\013\014\015\016\017\020\021\022\023\024\025\026\027\030\031\032\033\034\035\036\037" +char ** +prepare_spawn (char **argv) +{ + size_t argc; + char **new_argv; + size_t i; + + /* Count number of arguments. */ + for (argc = 0; argv[argc] != NULL; argc++) + ; + + /* Allocate new argument vector. */ + new_argv = XMALLOC (char *, argc + 1); + + /* Put quoted arguments into the new argument vector. */ + for (i = 0; i < argc; i++) + { + const char *string = argv[i]; + + if (string[0] == '\0') + new_argv[i] = xstrdup ("\"\""); + else if (strpbrk (string, SHELL_SPECIAL_CHARS) != NULL) + { + int quote_around = (strpbrk (string, SHELL_SPACE_CHARS) != NULL); + size_t length; + unsigned int backslashes; + const char *s; + char *quoted_string; + char *p; + + length = 0; + backslashes = 0; + if (quote_around) + length++; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + length += backslashes + 1; + length++; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + length += backslashes + 1; + + quoted_string = XMALLOC (char, length + 1); + + p = quoted_string; + backslashes = 0; + if (quote_around) + *p++ = '"'; + for (s = string; *s != '\0'; s++) + { + char c = *s; + if (c == '"') + { + unsigned int j; + for (j = backslashes + 1; j > 0; j--) + *p++ = '\\'; + } + *p++ = c; + if (c == '\\') + backslashes++; + else + backslashes = 0; + } + if (quote_around) + { + unsigned int j; + for (j = backslashes; j > 0; j--) + *p++ = '\\'; + *p++ = '"'; + } + *p = '\0'; + + new_argv[i] = quoted_string; + } + else + new_argv[i] = (char *) string; + } + new_argv[argc] = NULL; + + return new_argv; +} +EOF + ;; + esac + + cat <<"EOF" +void lt_dump_script (FILE* f) +{ +EOF + func_emit_wrapper yes | + $SED -n -e ' +s/^\(.\{79\}\)\(..*\)/\1\ +\2/ +h +s/\([\\"]\)/\\\1/g +s/$/\\n/ +s/\([^\n]*\).*/ fputs ("\1", f);/p +g +D' + cat <<"EOF" +} +EOF +} +# end: func_emit_cwrapperexe_src + +# func_win32_import_lib_p ARG +# True if ARG is an import lib, as indicated by $file_magic_cmd +func_win32_import_lib_p () +{ + $opt_debug + case `eval $file_magic_cmd \"\$1\" 2>/dev/null | $SED -e 10q` in + *import*) : ;; + *) false ;; + esac +} + +# func_mode_link arg... +func_mode_link () +{ + $opt_debug + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + # It is impossible to link a dll without this setting, and + # we shouldn't force the makefile maintainer to figure out + # which system we are compiling for in order to pass an extra + # flag for every libtool invocation. + # allow_undefined=no + + # FIXME: Unfortunately, there are problems with the above when trying + # to make a dll which has undefined symbols, in which case not + # even a static library is built. For now, we need to specify + # -no-undefined on the libtool link line when we can be certain + # that all symbols are satisfied, otherwise we get a static library. + allow_undefined=yes + ;; + *) + allow_undefined=yes + ;; + esac + libtool_args=$nonopt + base_compile="$nonopt $@" + compile_command=$nonopt + finalize_command=$nonopt + + compile_rpath= + finalize_rpath= + compile_shlibpath= + finalize_shlibpath= + convenience= + old_convenience= + deplibs= + old_deplibs= + compiler_flags= + linker_flags= + dllsearchpath= + lib_search_path=`pwd` + inst_prefix_dir= + new_inherited_linker_flags= + + avoid_version=no + bindir= + dlfiles= + dlprefiles= + dlself=no + export_dynamic=no + export_symbols= + export_symbols_regex= + generated= + libobjs= + ltlibs= + module=no + no_install=no + objs= + non_pic_objects= + precious_files_regex= + prefer_static_libs=no + preload=no + prev= + prevarg= + release= + rpath= + xrpath= + perm_rpath= + temp_rpath= + thread_safe=no + vinfo= + vinfo_number=no + weak_libs= + single_module="${wl}-single_module" + func_infer_tag $base_compile + + # We need to know -static, to get the right output filenames. + for arg + do + case $arg in + -shared) + test "$build_libtool_libs" != yes && \ + func_fatal_configuration "can not build a shared library" + build_old_libs=no + break + ;; + -all-static | -static | -static-libtool-libs) + case $arg in + -all-static) + if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then + func_warning "complete static linking is impossible in this configuration" + fi + if test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + -static) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=built + ;; + -static-libtool-libs) + if test -z "$pic_flag" && test -n "$link_static_flag"; then + dlopen_self=$dlopen_self_static + fi + prefer_static_libs=yes + ;; + esac + build_libtool_libs=no + build_old_libs=yes + break + ;; + esac + done + + # See if our shared archives depend on static archives. + test -n "$old_archive_from_new_cmds" && build_old_libs=yes + + # Go through the arguments, transforming them on the way. + while test "$#" -gt 0; do + arg="$1" + shift + func_quote_for_eval "$arg" + qarg=$func_quote_for_eval_unquoted_result + func_append libtool_args " $func_quote_for_eval_result" + + # If the previous option needs an argument, assign it. + if test -n "$prev"; then + case $prev in + output) + func_append compile_command " @OUTPUT@" + func_append finalize_command " @OUTPUT@" + ;; + esac + + case $prev in + bindir) + bindir="$arg" + prev= + continue + ;; + dlfiles|dlprefiles) + if test "$preload" = no; then + # Add the symbol object into the linking commands. + func_append compile_command " @SYMFILE@" + func_append finalize_command " @SYMFILE@" + preload=yes + fi + case $arg in + *.la | *.lo) ;; # We handle these cases below. + force) + if test "$dlself" = no; then + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + self) + if test "$prev" = dlprefiles; then + dlself=yes + elif test "$prev" = dlfiles && test "$dlopen_self" != yes; then + dlself=yes + else + dlself=needless + export_dynamic=yes + fi + prev= + continue + ;; + *) + if test "$prev" = dlfiles; then + func_append dlfiles " $arg" + else + func_append dlprefiles " $arg" + fi + prev= + continue + ;; + esac + ;; + expsyms) + export_symbols="$arg" + test -f "$arg" \ + || func_fatal_error "symbol file \`$arg' does not exist" + prev= + continue + ;; + expsyms_regex) + export_symbols_regex="$arg" + prev= + continue + ;; + framework) + case $host in + *-*-darwin*) + case "$deplibs " in + *" $qarg.ltframework "*) ;; + *) func_append deplibs " $qarg.ltframework" # this is fixed later + ;; + esac + ;; + esac + prev= + continue + ;; + inst_prefix) + inst_prefix_dir="$arg" + prev= + continue + ;; + objectlist) + if test -f "$arg"; then + save_arg=$arg + moreargs= + for fil in `cat "$save_arg"` + do +# func_append moreargs " $fil" + arg=$fil + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + done + else + func_fatal_error "link input file \`$arg' does not exist" + fi + arg=$save_arg + prev= + continue + ;; + precious_regex) + precious_files_regex="$arg" + prev= + continue + ;; + release) + release="-$arg" + prev= + continue + ;; + rpath | xrpath) + # We need an absolute path. + case $arg in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + if test "$prev" = rpath; then + case "$rpath " in + *" $arg "*) ;; + *) func_append rpath " $arg" ;; + esac + else + case "$xrpath " in + *" $arg "*) ;; + *) func_append xrpath " $arg" ;; + esac + fi + prev= + continue + ;; + shrext) + shrext_cmds="$arg" + prev= + continue + ;; + weak) + func_append weak_libs " $arg" + prev= + continue + ;; + xcclinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xcompiler) + func_append compiler_flags " $qarg" + prev= + func_append compile_command " $qarg" + func_append finalize_command " $qarg" + continue + ;; + xlinker) + func_append linker_flags " $qarg" + func_append compiler_flags " $wl$qarg" + prev= + func_append compile_command " $wl$qarg" + func_append finalize_command " $wl$qarg" + continue + ;; + *) + eval "$prev=\"\$arg\"" + prev= + continue + ;; + esac + fi # test -n "$prev" + + prevarg="$arg" + + case $arg in + -all-static) + if test -n "$link_static_flag"; then + # See comment for -static flag below, for more details. + func_append compile_command " $link_static_flag" + func_append finalize_command " $link_static_flag" + fi + continue + ;; + + -allow-undefined) + # FIXME: remove this flag sometime in the future. + func_fatal_error "\`-allow-undefined' must not be used because it is the default" + ;; + + -avoid-version) + avoid_version=yes + continue + ;; + + -bindir) + prev=bindir + continue + ;; + + -dlopen) + prev=dlfiles + continue + ;; + + -dlpreopen) + prev=dlprefiles + continue + ;; + + -export-dynamic) + export_dynamic=yes + continue + ;; + + -export-symbols | -export-symbols-regex) + if test -n "$export_symbols" || test -n "$export_symbols_regex"; then + func_fatal_error "more than one -exported-symbols argument is not allowed" + fi + if test "X$arg" = "X-export-symbols"; then + prev=expsyms + else + prev=expsyms_regex + fi + continue + ;; + + -framework) + prev=framework + continue + ;; + + -inst-prefix-dir) + prev=inst_prefix + continue + ;; + + # The native IRIX linker understands -LANG:*, -LIST:* and -LNO:* + # so, if we see these flags be careful not to treat them like -L + -L[A-Z][A-Z]*:*) + case $with_gcc/$host in + no/*-*-irix* | /*-*-irix*) + func_append compile_command " $arg" + func_append finalize_command " $arg" + ;; + esac + continue + ;; + + -L*) + func_stripname "-L" '' "$arg" + if test -z "$func_stripname_result"; then + if test "$#" -gt 0; then + func_fatal_error "require no space between \`-L' and \`$1'" + else + func_fatal_error "need path for \`-L' option" + fi + fi + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + *) + absdir=`cd "$dir" && pwd` + test -z "$absdir" && \ + func_fatal_error "cannot determine absolute directory name of \`$dir'" + dir="$absdir" + ;; + esac + case "$deplibs " in + *" -L$dir "* | *" $arg "*) + # Will only happen for absolute or sysroot arguments + ;; + *) + # Preserve sysroot, but never include relative directories + case $dir in + [\\/]* | [A-Za-z]:[\\/]* | =*) func_append deplibs " $arg" ;; + *) func_append deplibs " -L$dir" ;; + esac + func_append lib_search_path " $dir" + ;; + esac + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`$ECHO "$dir" | $SED 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$dir:"*) ;; + ::) dllsearchpath=$dir;; + *) func_append dllsearchpath ":$dir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + continue + ;; + + -l*) + if test "X$arg" = "X-lc" || test "X$arg" = "X-lm"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-beos* | *-cegcc* | *-*-haiku*) + # These systems don't actually have a C or math library (as such) + continue + ;; + *-*-os2*) + # These systems don't actually have a C library (as such) + test "X$arg" = "X-lc" && continue + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + test "X$arg" = "X-lc" && continue + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C and math libraries are in the System framework + func_append deplibs " System.ltframework" + continue + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + test "X$arg" = "X-lc" && continue + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + test "X$arg" = "X-lc" && continue + ;; + esac + elif test "X$arg" = "X-lc_r"; then + case $host in + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc_r directly, use -pthread flag. + continue + ;; + esac + fi + func_append deplibs " $arg" + continue + ;; + + -module) + module=yes + continue + ;; + + # Tru64 UNIX uses -model [arg] to determine the layout of C++ + # classes, name mangling, and exception handling. + # Darwin uses the -arch flag to determine output architecture. + -model|-arch|-isysroot|--sysroot) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + prev=xcompiler + continue + ;; + + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + func_append compiler_flags " $arg" + func_append compile_command " $arg" + func_append finalize_command " $arg" + case "$new_inherited_linker_flags " in + *" $arg "*) ;; + * ) func_append new_inherited_linker_flags " $arg" ;; + esac + continue + ;; + + -multi_module) + single_module="${wl}-multi_module" + continue + ;; + + -no-fast-install) + fast_install=no + continue + ;; + + -no-install) + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin* | *-cegcc*) + # The PATH hackery in wrapper scripts is required on Windows + # and Darwin in order for the loader to find any dlls it needs. + func_warning "\`-no-install' is ignored for $host" + func_warning "assuming \`-no-fast-install' instead" + fast_install=no + ;; + *) no_install=yes ;; + esac + continue + ;; + + -no-undefined) + allow_undefined=no + continue + ;; + + -objectlist) + prev=objectlist + continue + ;; + + -o) prev=output ;; + + -precious-files-regex) + prev=precious_regex + continue + ;; + + -release) + prev=release + continue + ;; + + -rpath) + prev=rpath + continue + ;; + + -R) + prev=xrpath + continue + ;; + + -R*) + func_stripname '-R' '' "$arg" + dir=$func_stripname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) ;; + =*) + func_stripname '=' '' "$dir" + dir=$lt_sysroot$func_stripname_result + ;; + *) + func_fatal_error "only absolute run-paths are allowed" + ;; + esac + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + continue + ;; + + -shared) + # The effects of -shared are defined in a previous loop. + continue + ;; + + -shrext) + prev=shrext + continue + ;; + + -static | -static-libtool-libs) + # The effects of -static are defined in a previous loop. + # We used to do the same as -all-static on platforms that + # didn't have a PIC flag, but the assumption that the effects + # would be equivalent was wrong. It would break on at least + # Digital Unix and AIX. + continue + ;; + + -thread-safe) + thread_safe=yes + continue + ;; + + -version-info) + prev=vinfo + continue + ;; + + -version-number) + prev=vinfo + vinfo_number=yes + continue + ;; + + -weak) + prev=weak + continue + ;; + + -Wc,*) + func_stripname '-Wc,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $func_quote_for_eval_result" + func_append compiler_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Wl,*) + func_stripname '-Wl,' '' "$arg" + args=$func_stripname_result + arg= + save_ifs="$IFS"; IFS=',' + for flag in $args; do + IFS="$save_ifs" + func_quote_for_eval "$flag" + func_append arg " $wl$func_quote_for_eval_result" + func_append compiler_flags " $wl$func_quote_for_eval_result" + func_append linker_flags " $func_quote_for_eval_result" + done + IFS="$save_ifs" + func_stripname ' ' '' "$arg" + arg=$func_stripname_result + ;; + + -Xcompiler) + prev=xcompiler + continue + ;; + + -Xlinker) + prev=xlinker + continue + ;; + + -XCClinker) + prev=xcclinker + continue + ;; + + # -msg_* for osf cc + -msg_*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + # Flags to be passed through unchanged, with rationale: + # -64, -mips[0-9] enable 64-bit mode for the SGI compiler + # -r[0-9][0-9]* specify processor for the SGI compiler + # -xarch=*, -xtarget=* enable 64-bit mode for the Sun compiler + # +DA*, +DD* enable 64-bit mode for the HP compiler + # -q* compiler args for the IBM compiler + # -m*, -t[45]*, -txscale* architecture-specific flags for GCC + # -F/path path to uninstalled frameworks, gcc on darwin + # -p, -pg, --coverage, -fprofile-* profiling flags for GCC + # @file GCC response files + # -tp=* Portland pgcc target processor selection + # --sysroot=* for sysroot support + # -O*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization + -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \ + -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*| \ + -O*|-flto*|-fwhopr*|-fuse-linker-plugin) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + func_append compile_command " $arg" + func_append finalize_command " $arg" + func_append compiler_flags " $arg" + continue + ;; + + # Some other compiler flag. + -* | +*) + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + + *.$objext) + # A standard object. + func_append objs " $arg" + ;; + + *.lo) + # A libtool-controlled object. + + # Check to see that this really is a libtool object. + if func_lalib_unsafe_p "$arg"; then + pic_object= + non_pic_object= + + # Read the .lo file + func_source "$arg" + + if test -z "$pic_object" || + test -z "$non_pic_object" || + test "$pic_object" = none && + test "$non_pic_object" = none; then + func_fatal_error "cannot find name of object for \`$arg'" + fi + + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + if test "$pic_object" != none; then + # Prepend the subdirectory the object is found in. + pic_object="$xdir$pic_object" + + if test "$prev" = dlfiles; then + if test "$build_libtool_libs" = yes && test "$dlopen_support" = yes; then + func_append dlfiles " $pic_object" + prev= + continue + else + # If libtool objects are unsupported, then we need to preload. + prev=dlprefiles + fi + fi + + # CHECK ME: I think I busted this. -Ossama + if test "$prev" = dlprefiles; then + # Preload the old-style object. + func_append dlprefiles " $pic_object" + prev= + fi + + # A PIC object. + func_append libobjs " $pic_object" + arg="$pic_object" + fi + + # Non-PIC object. + if test "$non_pic_object" != none; then + # Prepend the subdirectory the object is found in. + non_pic_object="$xdir$non_pic_object" + + # A standard non-PIC object + func_append non_pic_objects " $non_pic_object" + if test -z "$pic_object" || test "$pic_object" = none ; then + arg="$non_pic_object" + fi + else + # If the PIC object exists, use it instead. + # $xdir was prepended to $pic_object above. + non_pic_object="$pic_object" + func_append non_pic_objects " $non_pic_object" + fi + else + # Only an error if not doing a dry-run. + if $opt_dry_run; then + # Extract subdirectory from the argument. + func_dirname "$arg" "/" "" + xdir="$func_dirname_result" + + func_lo2o "$arg" + pic_object=$xdir$objdir/$func_lo2o_result + non_pic_object=$xdir$func_lo2o_result + func_append libobjs " $pic_object" + func_append non_pic_objects " $non_pic_object" + else + func_fatal_error "\`$arg' is not a valid libtool object" + fi + fi + ;; + + *.$libext) + # An archive. + func_append deplibs " $arg" + func_append old_deplibs " $arg" + continue + ;; + + *.la) + # A libtool-controlled library. + + func_resolve_sysroot "$arg" + if test "$prev" = dlfiles; then + # This library was specified with -dlopen. + func_append dlfiles " $func_resolve_sysroot_result" + prev= + elif test "$prev" = dlprefiles; then + # The library was specified with -dlpreopen. + func_append dlprefiles " $func_resolve_sysroot_result" + prev= + else + func_append deplibs " $func_resolve_sysroot_result" + fi + continue + ;; + + # Some other compiler argument. + *) + # Unknown arguments in both finalize_command and compile_command need + # to be aesthetically quoted because they are evaled later. + func_quote_for_eval "$arg" + arg="$func_quote_for_eval_result" + ;; + esac # arg + + # Now actually substitute the argument into the commands. + if test -n "$arg"; then + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + done # argument parsing loop + + test -n "$prev" && \ + func_fatal_help "the \`$prevarg' option requires an argument" + + if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then + eval arg=\"$export_dynamic_flag_spec\" + func_append compile_command " $arg" + func_append finalize_command " $arg" + fi + + oldlibs= + # calculate the name of the file, without its directory + func_basename "$output" + outputname="$func_basename_result" + libobjs_save="$libobjs" + + if test -n "$shlibpath_var"; then + # get the directories listed in $shlibpath_var + eval shlib_search_path=\`\$ECHO \"\${$shlibpath_var}\" \| \$SED \'s/:/ /g\'\` + else + shlib_search_path= + fi + eval sys_lib_search_path=\"$sys_lib_search_path_spec\" + eval sys_lib_dlsearch_path=\"$sys_lib_dlsearch_path_spec\" + + func_dirname "$output" "/" "" + output_objdir="$func_dirname_result$objdir" + func_to_tool_file "$output_objdir/" + tool_output_objdir=$func_to_tool_file_result + # Create the object directory. + func_mkdir_p "$output_objdir" + + # Determine the type of output + case $output in + "") + func_fatal_help "you must specify an output file" + ;; + *.$libext) linkmode=oldlib ;; + *.lo | *.$objext) linkmode=obj ;; + *.la) linkmode=lib ;; + *) linkmode=prog ;; # Anything else should be a program. + esac + + specialdeplibs= + + libs= + # Find all interdependent deplibs by searching for libraries + # that are linked more than once (e.g. -la -lb -la) + for deplib in $deplibs; do + if $opt_preserve_dup_deps ; then + case "$libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append libs " $deplib" + done + + if test "$linkmode" = lib; then + libs="$predeps $libs $compiler_lib_search_path $postdeps" + + # Compute libraries that are listed more than once in $predeps + # $postdeps and mark them as special (i.e., whose duplicates are + # not to be eliminated). + pre_post_deps= + if $opt_duplicate_compiler_generated_deps; then + for pre_post_dep in $predeps $postdeps; do + case "$pre_post_deps " in + *" $pre_post_dep "*) func_append specialdeplibs " $pre_post_deps" ;; + esac + func_append pre_post_deps " $pre_post_dep" + done + fi + pre_post_deps= + fi + + deplibs= + newdependency_libs= + newlib_search_path= + need_relink=no # whether we're linking any uninstalled libtool libraries + notinst_deplibs= # not-installed libtool libraries + notinst_path= # paths that contain not-installed libtool libraries + + case $linkmode in + lib) + passes="conv dlpreopen link" + for file in $dlfiles $dlprefiles; do + case $file in + *.la) ;; + *) + func_fatal_help "libraries can \`-dlopen' only libtool libraries: $file" + ;; + esac + done + ;; + prog) + compile_deplibs= + finalize_deplibs= + alldeplibs=no + newdlfiles= + newdlprefiles= + passes="conv scan dlopen dlpreopen link" + ;; + *) passes="conv" + ;; + esac + + for pass in $passes; do + # The preopen pass in lib mode reverses $deplibs; put it back here + # so that -L comes before libs that need it for instance... + if test "$linkmode,$pass" = "lib,link"; then + ## FIXME: Find the place where the list is rebuilt in the wrong + ## order, and fix it there properly + tmp_deplibs= + for deplib in $deplibs; do + tmp_deplibs="$deplib $tmp_deplibs" + done + deplibs="$tmp_deplibs" + fi + + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan"; then + libs="$deplibs" + deplibs= + fi + if test "$linkmode" = prog; then + case $pass in + dlopen) libs="$dlfiles" ;; + dlpreopen) libs="$dlprefiles" ;; + link) + libs="$deplibs %DEPLIBS%" + test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs" + ;; + esac + fi + if test "$linkmode,$pass" = "lib,dlpreopen"; then + # Collect and forward deplibs of preopened libtool libs + for lib in $dlprefiles; do + # Ignore non-libtool-libs + dependency_libs= + func_resolve_sysroot "$lib" + case $lib in + *.la) func_source "$func_resolve_sysroot_result" ;; + esac + + # Collect preopened libtool deplibs, except any this library + # has declared as weak libs + for deplib in $dependency_libs; do + func_basename "$deplib" + deplib_base=$func_basename_result + case " $weak_libs " in + *" $deplib_base "*) ;; + *) func_append deplibs " $deplib" ;; + esac + done + done + libs="$dlprefiles" + fi + if test "$pass" = dlopen; then + # Collect dlpreopened libraries + save_deplibs="$deplibs" + deplibs= + fi + + for deplib in $libs; do + lib= + found=no + case $deplib in + -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe \ + |-threads|-fopenmp|-openmp|-mp|-xopenmp|-omp|-qsmp=*) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append compiler_flags " $deplib" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -l*) + if test "$linkmode" != lib && test "$linkmode" != prog; then + func_warning "\`-l' is ignored for archives/objects" + continue + fi + func_stripname '-l' '' "$deplib" + name=$func_stripname_result + if test "$linkmode" = lib; then + searchdirs="$newlib_search_path $lib_search_path $compiler_lib_search_dirs $sys_lib_search_path $shlib_search_path" + else + searchdirs="$newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path" + fi + for searchdir in $searchdirs; do + for search_ext in .la $std_shrext .so .a; do + # Search the libtool library + lib="$searchdir/lib${name}${search_ext}" + if test -f "$lib"; then + if test "$search_ext" = ".la"; then + found=yes + else + found=no + fi + break 2 + fi + done + done + if test "$found" != yes; then + # deplib doesn't seem to be a libtool library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + else # deplib is a libtool library + # If $allow_libtool_libs_with_static_runtimes && $deplib is a stdlib, + # We need to do some special things here, and not later. + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $deplib "*) + if func_lalib_p "$lib"; then + library_names= + old_library= + func_source "$lib" + for l in $old_library $library_names; do + ll="$l" + done + if test "X$ll" = "X$old_library" ; then # only static version available + found=no + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + lib=$ladir/$old_library + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + test "$linkmode" = lib && newdependency_libs="$deplib $newdependency_libs" + fi + continue + fi + fi + ;; + *) ;; + esac + fi + fi + ;; # -l + *.ltframework) + if test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + deplibs="$deplib $deplibs" + if test "$linkmode" = lib ; then + case "$new_inherited_linker_flags " in + *" $deplib "*) ;; + * ) func_append new_inherited_linker_flags " $deplib" ;; + esac + fi + fi + continue + ;; + -L*) + case $linkmode in + lib) + deplibs="$deplib $deplibs" + test "$pass" = conv && continue + newdependency_libs="$deplib $newdependency_libs" + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + prog) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + if test "$pass" = scan; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + *) + func_warning "\`-L' is ignored for archives/objects" + ;; + esac # linkmode + continue + ;; # -L + -R*) + if test "$pass" = link; then + func_stripname '-R' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + dir=$func_resolve_sysroot_result + # Make sure the xrpath contains only unique directories. + case "$xrpath " in + *" $dir "*) ;; + *) func_append xrpath " $dir" ;; + esac + fi + deplibs="$deplib $deplibs" + continue + ;; + *.la) + func_resolve_sysroot "$deplib" + lib=$func_resolve_sysroot_result + ;; + *.$libext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + continue + fi + case $linkmode in + lib) + # Linking convenience modules into shared libraries is allowed, + # but linking other static libraries is non-portable. + case " $dlpreconveniencelibs " in + *" $deplib "*) ;; + *) + valid_a_lib=no + case $deplibs_check_method in + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + if eval "\$ECHO \"$deplib\"" 2>/dev/null | $SED 10q \ + | $EGREP "$match_pattern_regex" > /dev/null; then + valid_a_lib=yes + fi + ;; + pass_all) + valid_a_lib=yes + ;; + esac + if test "$valid_a_lib" != yes; then + echo + $ECHO "*** Warning: Trying to link with static lib archive $deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because the file extensions .$libext of this argument makes me believe" + echo "*** that it is just a static archive that I should not use here." + else + echo + $ECHO "*** Warning: Linking the shared library $output against the" + $ECHO "*** static library $deplib is not portable!" + deplibs="$deplib $deplibs" + fi + ;; + esac + continue + ;; + prog) + if test "$pass" != link; then + deplibs="$deplib $deplibs" + else + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + fi + continue + ;; + esac # linkmode + ;; # *.$libext + *.lo | *.$objext) + if test "$pass" = conv; then + deplibs="$deplib $deplibs" + elif test "$linkmode" = prog; then + if test "$pass" = dlpreopen || test "$dlopen_support" != yes || test "$build_libtool_libs" = no; then + # If there is no dlopen support or we're linking statically, + # we need to preload. + func_append newdlprefiles " $deplib" + compile_deplibs="$deplib $compile_deplibs" + finalize_deplibs="$deplib $finalize_deplibs" + else + func_append newdlfiles " $deplib" + fi + fi + continue + ;; + %DEPLIBS%) + alldeplibs=yes + continue + ;; + esac # case $deplib + + if test "$found" = yes || test -f "$lib"; then : + else + func_fatal_error "cannot find the library \`$lib' or unhandled argument \`$deplib'" + fi + + # Check to see that this really is a libtool archive. + func_lalib_unsafe_p "$lib" \ + || func_fatal_error "\`$lib' is not a valid libtool archive" + + func_dirname "$lib" "" "." + ladir="$func_dirname_result" + + dlname= + dlopen= + dlpreopen= + libdir= + library_names= + old_library= + inherited_linker_flags= + # If the library was installed with an old release of libtool, + # it will not redefine variables installed, or shouldnotlink + installed=yes + shouldnotlink=no + avoidtemprpath= + + + # Read the .la file + func_source "$lib" + + # Convert "-framework foo" to "foo.ltframework" + if test -n "$inherited_linker_flags"; then + tmp_inherited_linker_flags=`$ECHO "$inherited_linker_flags" | $SED 's/-framework \([^ $]*\)/\1.ltframework/g'` + for tmp_inherited_linker_flag in $tmp_inherited_linker_flags; do + case " $new_inherited_linker_flags " in + *" $tmp_inherited_linker_flag "*) ;; + *) func_append new_inherited_linker_flags " $tmp_inherited_linker_flag";; + esac + done + fi + dependency_libs=`$ECHO " $dependency_libs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + if test "$linkmode,$pass" = "lib,link" || + test "$linkmode,$pass" = "prog,scan" || + { test "$linkmode" != prog && test "$linkmode" != lib; }; then + test -n "$dlopen" && func_append dlfiles " $dlopen" + test -n "$dlpreopen" && func_append dlprefiles " $dlpreopen" + fi + + if test "$pass" = conv; then + # Only check for convenience libraries + deplibs="$lib $deplibs" + if test -z "$libdir"; then + if test -z "$old_library"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + # It is a libtool convenience library, so add in its objects. + func_append convenience " $ladir/$objdir/$old_library" + func_append old_convenience " $ladir/$objdir/$old_library" + tmp_libs= + for deplib in $dependency_libs; do + deplibs="$deplib $deplibs" + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done + elif test "$linkmode" != prog && test "$linkmode" != lib; then + func_fatal_error "\`$lib' is not a convenience library" + fi + continue + fi # $pass = conv + + + # Get the name of the library we link against. + linklib= + if test -n "$old_library" && + { test "$prefer_static_libs" = yes || + test "$prefer_static_libs,$installed" = "built,no"; }; then + linklib=$old_library + else + for l in $old_library $library_names; do + linklib="$l" + done + fi + if test -z "$linklib"; then + func_fatal_error "cannot find name of link library for \`$lib'" + fi + + # This library was specified with -dlopen. + if test "$pass" = dlopen; then + if test -z "$libdir"; then + func_fatal_error "cannot -dlopen a convenience library: \`$lib'" + fi + if test -z "$dlname" || + test "$dlopen_support" != yes || + test "$build_libtool_libs" = no; then + # If there is no dlname, no dlopen support or we're linking + # statically, we need to preload. We also need to preload any + # dependent libraries so libltdl's deplib preloader doesn't + # bomb out in the load deplibs phase. + func_append dlprefiles " $lib $dependency_libs" + else + func_append newdlfiles " $lib" + fi + continue + fi # $pass = dlopen + + # We need an absolute path. + case $ladir in + [\\/]* | [A-Za-z]:[\\/]*) abs_ladir="$ladir" ;; + *) + abs_ladir=`cd "$ladir" && pwd` + if test -z "$abs_ladir"; then + func_warning "cannot determine absolute directory name of \`$ladir'" + func_warning "passing it literally to the linker, although it might fail" + abs_ladir="$ladir" + fi + ;; + esac + func_basename "$lib" + laname="$func_basename_result" + + # Find the relevant object directory and library name. + if test "X$installed" = Xyes; then + if test ! -f "$lt_sysroot$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then + func_warning "library \`$lib' was moved." + dir="$ladir" + absdir="$abs_ladir" + libdir="$abs_ladir" + else + dir="$lt_sysroot$libdir" + absdir="$lt_sysroot$libdir" + fi + test "X$hardcode_automatic" = Xyes && avoidtemprpath=yes + else + if test ! -f "$ladir/$objdir/$linklib" && test -f "$abs_ladir/$linklib"; then + dir="$ladir" + absdir="$abs_ladir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + else + dir="$ladir/$objdir" + absdir="$abs_ladir/$objdir" + # Remove this search path later + func_append notinst_path " $abs_ladir" + fi + fi # $installed = yes + func_stripname 'lib' '.la' "$laname" + name=$func_stripname_result + + # This library was specified with -dlpreopen. + if test "$pass" = dlpreopen; then + if test -z "$libdir" && test "$linkmode" = prog; then + func_fatal_error "only libraries may -dlpreopen a convenience library: \`$lib'" + fi + case "$host" in + # special handling for platforms with PE-DLLs. + *cygwin* | *mingw* | *cegcc* ) + # Linker will automatically link against shared library if both + # static and shared are present. Therefore, ensure we extract + # symbols from the import library if a shared library is present + # (otherwise, the dlopen module name will be incorrect). We do + # this by putting the import library name into $newdlprefiles. + # We recover the dlopen module name by 'saving' the la file + # name in a special purpose variable, and (later) extracting the + # dlname from the la file. + if test -n "$dlname"; then + func_tr_sh "$dir/$linklib" + eval "libfile_$func_tr_sh_result=\$abs_ladir/\$laname" + func_append newdlprefiles " $dir/$linklib" + else + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + fi + ;; + * ) + # Prefer using a static library (so that no silly _DYNAMIC symbols + # are required to link). + if test -n "$old_library"; then + func_append newdlprefiles " $dir/$old_library" + # Keep a list of preopened convenience libraries to check + # that they are being used correctly in the link pass. + test -z "$libdir" && \ + func_append dlpreconveniencelibs " $dir/$old_library" + # Otherwise, use the dlname, so that lt_dlopen finds it. + elif test -n "$dlname"; then + func_append newdlprefiles " $dir/$dlname" + else + func_append newdlprefiles " $dir/$linklib" + fi + ;; + esac + fi # $pass = dlpreopen + + if test -z "$libdir"; then + # Link the convenience library + if test "$linkmode" = lib; then + deplibs="$dir/$old_library $deplibs" + elif test "$linkmode,$pass" = "prog,link"; then + compile_deplibs="$dir/$old_library $compile_deplibs" + finalize_deplibs="$dir/$old_library $finalize_deplibs" + else + deplibs="$lib $deplibs" # used for prog,scan pass + fi + continue + fi + + + if test "$linkmode" = prog && test "$pass" != link; then + func_append newlib_search_path " $ladir" + deplibs="$lib $deplibs" + + linkalldeplibs=no + if test "$link_all_deplibs" != no || test -z "$library_names" || + test "$build_libtool_libs" = no; then + linkalldeplibs=yes + fi + + tmp_libs= + for deplib in $dependency_libs; do + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result" + func_append newlib_search_path " $func_resolve_sysroot_result" + ;; + esac + # Need to link against all dependency_libs? + if test "$linkalldeplibs" = yes; then + deplibs="$deplib $deplibs" + else + # Need to hardcode shared library paths + # or/and link against static libraries + newdependency_libs="$deplib $newdependency_libs" + fi + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $deplib "*) func_append specialdeplibs " $deplib" ;; + esac + fi + func_append tmp_libs " $deplib" + done # for deplib + continue + fi # $linkmode = prog... + + if test "$linkmode,$pass" = "prog,link"; then + if test -n "$library_names" && + { { test "$prefer_static_libs" = no || + test "$prefer_static_libs,$installed" = "built,yes"; } || + test -z "$old_library"; }; then + # We need to hardcode the library path + if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then + # Make sure the rpath contains only unique directories. + case "$temp_rpath:" in + *"$absdir:"*) ;; + *) func_append temp_rpath "$absdir:" ;; + esac + fi + + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi # $linkmode,$pass = prog,link... + + if test "$alldeplibs" = yes && + { test "$deplibs_check_method" = pass_all || + { test "$build_libtool_libs" = yes && + test -n "$library_names"; }; }; then + # We only need to search for static libraries + continue + fi + fi + + link_static=no # Whether the deplib will be linked statically + use_static_libs=$prefer_static_libs + if test "$use_static_libs" = built && test "$installed" = yes; then + use_static_libs=no + fi + if test -n "$library_names" && + { test "$use_static_libs" = no || test -z "$old_library"; }; then + case $host in + *cygwin* | *mingw* | *cegcc*) + # No point in relinking DLLs because paths are not encoded + func_append notinst_deplibs " $lib" + need_relink=no + ;; + *) + if test "$installed" = no; then + func_append notinst_deplibs " $lib" + need_relink=yes + fi + ;; + esac + # This is a shared library + + # Warn about portability, can't link against -module's on some + # systems (darwin). Don't bleat about dlopened modules though! + dlopenmodule="" + for dlpremoduletest in $dlprefiles; do + if test "X$dlpremoduletest" = "X$lib"; then + dlopenmodule="$dlpremoduletest" + break + fi + done + if test -z "$dlopenmodule" && test "$shouldnotlink" = yes && test "$pass" = link; then + echo + if test "$linkmode" = prog; then + $ECHO "*** Warning: Linking the executable $output against the loadable module" + else + $ECHO "*** Warning: Linking the shared library $output against the loadable module" + fi + $ECHO "*** $linklib is not portable!" + fi + if test "$linkmode" = lib && + test "$hardcode_into_libs" = yes; then + # Hardcode the library path. + # Skip directories that are in the system default run-time + # search path. + case " $sys_lib_dlsearch_path " in + *" $absdir "*) ;; + *) + case "$compile_rpath " in + *" $absdir "*) ;; + *) func_append compile_rpath " $absdir" ;; + esac + ;; + esac + case " $sys_lib_dlsearch_path " in + *" $libdir "*) ;; + *) + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + ;; + esac + fi + + if test -n "$old_archive_from_expsyms_cmds"; then + # figure out the soname + set dummy $library_names + shift + realname="$1" + shift + libname=`eval "\\$ECHO \"$libname_spec\""` + # use dlname if we got it. it's perfectly good, no? + if test -n "$dlname"; then + soname="$dlname" + elif test -n "$soname_spec"; then + # bleh windows + case $host in + *cygwin* | mingw* | *cegcc*) + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + esac + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + + # Make a new name for the extract_expsyms_cmds to use + soroot="$soname" + func_basename "$soroot" + soname="$func_basename_result" + func_stripname 'lib' '.dll' "$soname" + newlib=libimp-$func_stripname_result.a + + # If the library has no export list, then create one now + if test -f "$output_objdir/$soname-def"; then : + else + func_verbose "extracting exported symbol list from \`$soname'" + func_execute_cmds "$extract_expsyms_cmds" 'exit $?' + fi + + # Create $newlib + if test -f "$output_objdir/$newlib"; then :; else + func_verbose "generating import library for \`$soname'" + func_execute_cmds "$old_archive_from_expsyms_cmds" 'exit $?' + fi + # make sure the library variables are pointing to the new library + dir=$output_objdir + linklib=$newlib + fi # test -n "$old_archive_from_expsyms_cmds" + + if test "$linkmode" = prog || test "$opt_mode" != relink; then + add_shlibpath= + add_dir= + add= + lib_linked=yes + case $hardcode_action in + immediate | unsupported) + if test "$hardcode_direct" = no; then + add="$dir/$linklib" + case $host in + *-*-sco3.2v5.0.[024]*) add_dir="-L$dir" ;; + *-*-sysv4*uw2*) add_dir="-L$dir" ;; + *-*-sysv5OpenUNIX* | *-*-sysv5UnixWare7.[01].[10]* | \ + *-*-unixware7*) add_dir="-L$dir" ;; + *-*-darwin* ) + # if the lib is a (non-dlopened) module then we can not + # link against it, someone is ignoring the earlier warnings + if /usr/bin/file -L $add 2> /dev/null | + $GREP ": [^:]* bundle" >/dev/null ; then + if test "X$dlopenmodule" != "X$lib"; then + $ECHO "*** Warning: lib $linklib is a module, not a shared library" + if test -z "$old_library" ; then + echo + echo "*** And there doesn't seem to be a static archive available" + echo "*** The link will probably fail, sorry" + else + add="$dir/$old_library" + fi + elif test -n "$old_library"; then + add="$dir/$old_library" + fi + fi + esac + elif test "$hardcode_minus_L" = no; then + case $host in + *-*-sunos*) add_shlibpath="$dir" ;; + esac + add_dir="-L$dir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = no; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + relink) + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$dir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$absdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + add_shlibpath="$dir" + add="-l$name" + else + lib_linked=no + fi + ;; + *) lib_linked=no ;; + esac + + if test "$lib_linked" != yes; then + func_fatal_configuration "unsupported hardcode properties" + fi + + if test -n "$add_shlibpath"; then + case :$compile_shlibpath: in + *":$add_shlibpath:"*) ;; + *) func_append compile_shlibpath "$add_shlibpath:" ;; + esac + fi + if test "$linkmode" = prog; then + test -n "$add_dir" && compile_deplibs="$add_dir $compile_deplibs" + test -n "$add" && compile_deplibs="$add $compile_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + if test "$hardcode_direct" != yes && + test "$hardcode_minus_L" != yes && + test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + fi + fi + fi + + if test "$linkmode" = prog || test "$opt_mode" = relink; then + add_shlibpath= + add_dir= + add= + # Finalize command for both is simple: just hardcode it. + if test "$hardcode_direct" = yes && + test "$hardcode_direct_absolute" = no; then + add="$libdir/$linklib" + elif test "$hardcode_minus_L" = yes; then + add_dir="-L$libdir" + add="-l$name" + elif test "$hardcode_shlibpath_var" = yes; then + case :$finalize_shlibpath: in + *":$libdir:"*) ;; + *) func_append finalize_shlibpath "$libdir:" ;; + esac + add="-l$name" + elif test "$hardcode_automatic" = yes; then + if test -n "$inst_prefix_dir" && + test -f "$inst_prefix_dir$libdir/$linklib" ; then + add="$inst_prefix_dir$libdir/$linklib" + else + add="$libdir/$linklib" + fi + else + # We cannot seem to hardcode it, guess we'll fake it. + add_dir="-L$libdir" + # Try looking first in the location we're being installed to. + if test -n "$inst_prefix_dir"; then + case $libdir in + [\\/]*) + func_append add_dir " -L$inst_prefix_dir$libdir" + ;; + esac + fi + add="-l$name" + fi + + if test "$linkmode" = prog; then + test -n "$add_dir" && finalize_deplibs="$add_dir $finalize_deplibs" + test -n "$add" && finalize_deplibs="$add $finalize_deplibs" + else + test -n "$add_dir" && deplibs="$add_dir $deplibs" + test -n "$add" && deplibs="$add $deplibs" + fi + fi + elif test "$linkmode" = prog; then + # Here we assume that one of hardcode_direct or hardcode_minus_L + # is not unsupported. This is valid on all known static and + # shared platforms. + if test "$hardcode_direct" != unsupported; then + test -n "$old_library" && linklib="$old_library" + compile_deplibs="$dir/$linklib $compile_deplibs" + finalize_deplibs="$dir/$linklib $finalize_deplibs" + else + compile_deplibs="-l$name -L$dir $compile_deplibs" + finalize_deplibs="-l$name -L$dir $finalize_deplibs" + fi + elif test "$build_libtool_libs" = yes; then + # Not a shared library + if test "$deplibs_check_method" != pass_all; then + # We're trying link a shared library against a static one + # but the system doesn't support it. + + # Just print a warning and add the library to dependency_libs so + # that the program can be linked against the static library. + echo + $ECHO "*** Warning: This system can not link to static lib archive $lib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have." + if test "$module" = yes; then + echo "*** But as you try to build a module library, libtool will still create " + echo "*** a static module, that should work as long as the dlopening application" + echo "*** is linked with the -dlopen flag to resolve symbols at runtime." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + else + deplibs="$dir/$old_library $deplibs" + link_static=yes + fi + fi # link shared/static library? + + if test "$linkmode" = lib; then + if test -n "$dependency_libs" && + { test "$hardcode_into_libs" != yes || + test "$build_old_libs" = yes || + test "$link_static" = yes; }; then + # Extract -R from dependency_libs + temp_deplibs= + for libdir in $dependency_libs; do + case $libdir in + -R*) func_stripname '-R' '' "$libdir" + temp_xrpath=$func_stripname_result + case " $xrpath " in + *" $temp_xrpath "*) ;; + *) func_append xrpath " $temp_xrpath";; + esac;; + *) func_append temp_deplibs " $libdir";; + esac + done + dependency_libs="$temp_deplibs" + fi + + func_append newlib_search_path " $absdir" + # Link against this library + test "$link_static" = no && newdependency_libs="$abs_ladir/$laname $newdependency_libs" + # ... and its dependency_libs + tmp_libs= + for deplib in $dependency_libs; do + newdependency_libs="$deplib $newdependency_libs" + case $deplib in + -L*) func_stripname '-L' '' "$deplib" + func_resolve_sysroot "$func_stripname_result";; + *) func_resolve_sysroot "$deplib" ;; + esac + if $opt_preserve_dup_deps ; then + case "$tmp_libs " in + *" $func_resolve_sysroot_result "*) + func_append specialdeplibs " $func_resolve_sysroot_result" ;; + esac + fi + func_append tmp_libs " $func_resolve_sysroot_result" + done + + if test "$link_all_deplibs" != no; then + # Add the search paths of all dependency libraries + for deplib in $dependency_libs; do + path= + case $deplib in + -L*) path="$deplib" ;; + *.la) + func_resolve_sysroot "$deplib" + deplib=$func_resolve_sysroot_result + func_dirname "$deplib" "" "." + dir=$func_dirname_result + # We need an absolute path. + case $dir in + [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;; + *) + absdir=`cd "$dir" && pwd` + if test -z "$absdir"; then + func_warning "cannot determine absolute directory name of \`$dir'" + absdir="$dir" + fi + ;; + esac + if $GREP "^installed=no" $deplib > /dev/null; then + case $host in + *-*-darwin*) + depdepl= + eval deplibrary_names=`${SED} -n -e 's/^library_names=\(.*\)$/\1/p' $deplib` + if test -n "$deplibrary_names" ; then + for tmp in $deplibrary_names ; do + depdepl=$tmp + done + if test -f "$absdir/$objdir/$depdepl" ; then + depdepl="$absdir/$objdir/$depdepl" + darwin_install_name=`${OTOOL} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + if test -z "$darwin_install_name"; then + darwin_install_name=`${OTOOL64} -L $depdepl | awk '{if (NR == 2) {print $1;exit}}'` + fi + func_append compiler_flags " ${wl}-dylib_file ${wl}${darwin_install_name}:${depdepl}" + func_append linker_flags " -dylib_file ${darwin_install_name}:${depdepl}" + path= + fi + fi + ;; + *) + path="-L$absdir/$objdir" + ;; + esac + else + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + test "$absdir" != "$libdir" && \ + func_warning "\`$deplib' seems to be moved" + + path="-L$absdir" + fi + ;; + esac + case " $deplibs " in + *" $path "*) ;; + *) deplibs="$path $deplibs" ;; + esac + done + fi # link_all_deplibs != no + fi # linkmode = lib + done # for deplib in $libs + if test "$pass" = link; then + if test "$linkmode" = "prog"; then + compile_deplibs="$new_inherited_linker_flags $compile_deplibs" + finalize_deplibs="$new_inherited_linker_flags $finalize_deplibs" + else + compiler_flags="$compiler_flags "`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + fi + fi + dependency_libs="$newdependency_libs" + if test "$pass" = dlpreopen; then + # Link the dlpreopened libraries before other libraries + for deplib in $save_deplibs; do + deplibs="$deplib $deplibs" + done + fi + if test "$pass" != dlopen; then + if test "$pass" != conv; then + # Make sure lib_search_path contains only unique directories. + lib_search_path= + for dir in $newlib_search_path; do + case "$lib_search_path " in + *" $dir "*) ;; + *) func_append lib_search_path " $dir" ;; + esac + done + newlib_search_path= + fi + + if test "$linkmode,$pass" != "prog,link"; then + vars="deplibs" + else + vars="compile_deplibs finalize_deplibs" + fi + for var in $vars dependency_libs; do + # Add libraries to $var in reverse order + eval tmp_libs=\"\$$var\" + new_libs= + for deplib in $tmp_libs; do + # FIXME: Pedantically, this is the right thing to do, so + # that some nasty dependency loop isn't accidentally + # broken: + #new_libs="$deplib $new_libs" + # Pragmatically, this seems to cause very few problems in + # practice: + case $deplib in + -L*) new_libs="$deplib $new_libs" ;; + -R*) ;; + *) + # And here is the reason: when a library appears more + # than once as an explicit dependence of a library, or + # is implicitly linked in more than once by the + # compiler, it is considered special, and multiple + # occurrences thereof are not removed. Compare this + # with having the same library being listed as a + # dependency of multiple other libraries: in this case, + # we know (pedantically, we assume) the library does not + # need to be listed more than once, so we keep only the + # last copy. This is not always right, but it is rare + # enough that we require users that really mean to play + # such unportable linking tricks to link the library + # using -Wl,-lname, so that libtool does not consider it + # for duplicate removal. + case " $specialdeplibs " in + *" $deplib "*) new_libs="$deplib $new_libs" ;; + *) + case " $new_libs " in + *" $deplib "*) ;; + *) new_libs="$deplib $new_libs" ;; + esac + ;; + esac + ;; + esac + done + tmp_libs= + for deplib in $new_libs; do + case $deplib in + -L*) + case " $tmp_libs " in + *" $deplib "*) ;; + *) func_append tmp_libs " $deplib" ;; + esac + ;; + *) func_append tmp_libs " $deplib" ;; + esac + done + eval $var=\"$tmp_libs\" + done # for var + fi + # Last step: remove runtime libs from dependency_libs + # (they stay in deplibs) + tmp_libs= + for i in $dependency_libs ; do + case " $predeps $postdeps $compiler_lib_search_path " in + *" $i "*) + i="" + ;; + esac + if test -n "$i" ; then + func_append tmp_libs " $i" + fi + done + dependency_libs=$tmp_libs + done # for pass + if test "$linkmode" = prog; then + dlfiles="$newdlfiles" + fi + if test "$linkmode" = prog || test "$linkmode" = lib; then + dlprefiles="$newdlprefiles" + fi + + case $linkmode in + oldlib) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for archives" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for archives" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for archives" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for archives" + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for archives" + + test -n "$release" && \ + func_warning "\`-release' is ignored for archives" + + test -n "$export_symbols$export_symbols_regex" && \ + func_warning "\`-export-symbols' is ignored for archives" + + # Now set the variables for building old libraries. + build_libtool_libs=no + oldlibs="$output" + func_append objs "$old_deplibs" + ;; + + lib) + # Make sure we only generate libraries of the form `libNAME.la'. + case $outputname in + lib*) + func_stripname 'lib' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + ;; + *) + test "$module" = no && \ + func_fatal_help "libtool library \`$output' must begin with \`lib'" + + if test "$need_lib_prefix" != no; then + # Add the "lib" prefix for modules if required + func_stripname '' '.la' "$outputname" + name=$func_stripname_result + eval shared_ext=\"$shrext_cmds\" + eval libname=\"$libname_spec\" + else + func_stripname '' '.la' "$outputname" + libname=$func_stripname_result + fi + ;; + esac + + if test -n "$objs"; then + if test "$deplibs_check_method" != pass_all; then + func_fatal_error "cannot build libtool library \`$output' from non-libtool objects on this host:$objs" + else + echo + $ECHO "*** Warning: Linking the shared library $output against the non-libtool" + $ECHO "*** objects $objs is not portable!" + func_append libobjs " $objs" + fi + fi + + test "$dlself" != no && \ + func_warning "\`-dlopen self' is ignored for libtool libraries" + + set dummy $rpath + shift + test "$#" -gt 1 && \ + func_warning "ignoring multiple \`-rpath's for a libtool library" + + install_libdir="$1" + + oldlibs= + if test -z "$rpath"; then + if test "$build_libtool_libs" = yes; then + # Building a libtool convenience library. + # Some compilers have problems with a `.al' extension so + # convenience libraries should have the same extension an + # archive normally would. + oldlibs="$output_objdir/$libname.$libext $oldlibs" + build_libtool_libs=convenience + build_old_libs=yes + fi + + test -n "$vinfo" && \ + func_warning "\`-version-info/-version-number' is ignored for convenience libraries" + + test -n "$release" && \ + func_warning "\`-release' is ignored for convenience libraries" + else + + # Parse the version information argument. + save_ifs="$IFS"; IFS=':' + set dummy $vinfo 0 0 0 + shift + IFS="$save_ifs" + + test -n "$7" && \ + func_fatal_help "too many parameters to \`-version-info'" + + # convert absolute version numbers to libtool ages + # this retains compatibility with .la files and attempts + # to make the code below a bit more comprehensible + + case $vinfo_number in + yes) + number_major="$1" + number_minor="$2" + number_revision="$3" + # + # There are really only two kinds -- those that + # use the current revision as the major version + # and those that subtract age and use age as + # a minor version. But, then there is irix + # which has an extra 1 added just for fun + # + case $version_type in + # correct linux to gnu/linux during the next big refactor + darwin|linux|osf|windows|none) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_revision" + ;; + freebsd-aout|freebsd-elf|qnx|sunos) + current="$number_major" + revision="$number_minor" + age="0" + ;; + irix|nonstopux) + func_arith $number_major + $number_minor + current=$func_arith_result + age="$number_minor" + revision="$number_minor" + lt_irix_increment=no + ;; + *) + func_fatal_configuration "$modename: unknown library version type \`$version_type'" + ;; + esac + ;; + no) + current="$1" + revision="$2" + age="$3" + ;; + esac + + # Check that each of the things are valid numbers. + case $current in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "CURRENT \`$current' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $revision in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "REVISION \`$revision' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + case $age in + 0|[1-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-9][0-9][0-9][0-9]|[1-9][0-9][0-9][0-9][0-9]) ;; + *) + func_error "AGE \`$age' must be a nonnegative integer" + func_fatal_error "\`$vinfo' is not valid version information" + ;; + esac + + if test "$age" -gt "$current"; then + func_error "AGE \`$age' is greater than the current interface number \`$current'" + func_fatal_error "\`$vinfo' is not valid version information" + fi + + # Calculate the version variables. + major= + versuffix= + verstring= + case $version_type in + none) ;; + + darwin) + # Like Linux, but with the current version available in + # verstring for coding it into the library header + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + # Darwin ld doesn't like 0 for these options... + func_arith $current + 1 + minor_current=$func_arith_result + xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision" + verstring="-compatibility_version $minor_current -current_version $minor_current.$revision" + ;; + + freebsd-aout) + major=".$current" + versuffix=".$current.$revision"; + ;; + + freebsd-elf) + major=".$current" + versuffix=".$current" + ;; + + irix | nonstopux) + if test "X$lt_irix_increment" = "Xno"; then + func_arith $current - $age + else + func_arith $current - $age + 1 + fi + major=$func_arith_result + + case $version_type in + nonstopux) verstring_prefix=nonstopux ;; + *) verstring_prefix=sgi ;; + esac + verstring="$verstring_prefix$major.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$revision + while test "$loop" -ne 0; do + func_arith $revision - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring_prefix$major.$iface:$verstring" + done + + # Before this point, $major must not contain `.'. + major=.$major + versuffix="$major.$revision" + ;; + + linux) # correct to gnu/linux during the next big refactor + func_arith $current - $age + major=.$func_arith_result + versuffix="$major.$age.$revision" + ;; + + osf) + func_arith $current - $age + major=.$func_arith_result + versuffix=".$current.$age.$revision" + verstring="$current.$age.$revision" + + # Add in all the interfaces that we are compatible with. + loop=$age + while test "$loop" -ne 0; do + func_arith $current - $loop + iface=$func_arith_result + func_arith $loop - 1 + loop=$func_arith_result + verstring="$verstring:${iface}.0" + done + + # Make executables depend on our current version. + func_append verstring ":${current}.0" + ;; + + qnx) + major=".$current" + versuffix=".$current" + ;; + + sunos) + major=".$current" + versuffix=".$current.$revision" + ;; + + windows) + # Use '-' rather than '.', since we only want one + # extension on DOS 8.3 filesystems. + func_arith $current - $age + major=$func_arith_result + versuffix="-$major" + ;; + + *) + func_fatal_configuration "unknown library version type \`$version_type'" + ;; + esac + + # Clear the version info if we defaulted, and they specified a release. + if test -z "$vinfo" && test -n "$release"; then + major= + case $version_type in + darwin) + # we can't check for "0.0" in archive_cmds due to quoting + # problems, so we reset it completely + verstring= + ;; + *) + verstring="0.0" + ;; + esac + if test "$need_version" = no; then + versuffix= + else + versuffix=".0.0" + fi + fi + + # Remove version info from name if versioning should be avoided + if test "$avoid_version" = yes && test "$need_version" = no; then + major= + versuffix= + verstring="" + fi + + # Check to see if the archive will have undefined symbols. + if test "$allow_undefined" = yes; then + if test "$allow_undefined_flag" = unsupported; then + func_warning "undefined symbols not allowed in $host shared libraries" + build_libtool_libs=no + build_old_libs=yes + fi + else + # Don't allow undefined symbols. + allow_undefined_flag="$no_undefined_flag" + fi + + fi + + func_generate_dlsyms "$libname" "$libname" "yes" + func_append libobjs " $symfileobj" + test "X$libobjs" = "X " && libobjs= + + if test "$opt_mode" != relink; then + # Remove our outputs, but don't remove object files since they + # may have been created when compiling PIC objects. + removelist= + tempremovelist=`$ECHO "$output_objdir/*"` + for p in $tempremovelist; do + case $p in + *.$objext | *.gcno) + ;; + $output_objdir/$outputname | $output_objdir/$libname.* | $output_objdir/${libname}${release}.*) + if test "X$precious_files_regex" != "X"; then + if $ECHO "$p" | $EGREP -e "$precious_files_regex" >/dev/null 2>&1 + then + continue + fi + fi + func_append removelist " $p" + ;; + *) ;; + esac + done + test -n "$removelist" && \ + func_show_eval "${RM}r \$removelist" + fi + + # Now set the variables for building old libraries. + if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then + func_append oldlibs " $output_objdir/$libname.$libext" + + # Transform .lo files to .o files. + oldobjs="$objs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; $lo2o" | $NL2SP` + fi + + # Eliminate all temporary directories. + #for path in $notinst_path; do + # lib_search_path=`$ECHO "$lib_search_path " | $SED "s% $path % %g"` + # deplibs=`$ECHO "$deplibs " | $SED "s% -L$path % %g"` + # dependency_libs=`$ECHO "$dependency_libs " | $SED "s% -L$path % %g"` + #done + + if test -n "$xrpath"; then + # If the user specified any rpath flags, then add them. + temp_xrpath= + for libdir in $xrpath; do + func_replace_sysroot "$libdir" + func_append temp_xrpath " -R$func_replace_sysroot_result" + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + if test "$hardcode_into_libs" != yes || test "$build_old_libs" = yes; then + dependency_libs="$temp_xrpath $dependency_libs" + fi + fi + + # Make sure dlfiles contains only unique files that won't be dlpreopened + old_dlfiles="$dlfiles" + dlfiles= + for lib in $old_dlfiles; do + case " $dlprefiles $dlfiles " in + *" $lib "*) ;; + *) func_append dlfiles " $lib" ;; + esac + done + + # Make sure dlprefiles contains only unique files + old_dlprefiles="$dlprefiles" + dlprefiles= + for lib in $old_dlprefiles; do + case "$dlprefiles " in + *" $lib "*) ;; + *) func_append dlprefiles " $lib" ;; + esac + done + + if test "$build_libtool_libs" = yes; then + if test -n "$rpath"; then + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos* | *-cegcc* | *-*-haiku*) + # these systems don't actually have a c library (as such)! + ;; + *-*-rhapsody* | *-*-darwin1.[012]) + # Rhapsody C library is in the System framework + func_append deplibs " System.ltframework" + ;; + *-*-netbsd*) + # Don't link with libc until the a.out ld.so is fixed. + ;; + *-*-openbsd* | *-*-freebsd* | *-*-dragonfly*) + # Do not include libc due to us having libc/libc_r. + ;; + *-*-sco3.2v5* | *-*-sco5v6*) + # Causes problems with __ctype + ;; + *-*-sysv4.2uw2* | *-*-sysv5* | *-*-unixware* | *-*-OpenUNIX*) + # Compiler inserts libc in the correct place for threads to work + ;; + *) + # Add libc to deplibs on all other systems if necessary. + if test "$build_libtool_need_lc" = "yes"; then + func_append deplibs " -lc" + fi + ;; + esac + fi + + # Transform deplibs into only deplibs that can be linked in shared. + name_save=$name + libname_save=$libname + release_save=$release + versuffix_save=$versuffix + major_save=$major + # I'm not sure if I'm treating the release correctly. I think + # release should show up in the -l (ie -lgmp5) so we don't want to + # add it in twice. Is that correct? + release="" + versuffix="" + major="" + newdeplibs= + droppeddeps=no + case $deplibs_check_method in + pass_all) + # Don't check for shared/static. Everything works. + # This might be a little naive. We might want to check + # whether the library exists or not. But this is on + # osf3 & osf4 and I'm not really sure... Just + # implementing what was already the behavior. + newdeplibs=$deplibs + ;; + test_compile) + # This code stresses the "libraries are programs" paradigm to its + # limits. Maybe even breaks it. We compile a program, linking it + # against the deplibs as a proxy for the library. Then we can check + # whether they linked in statically or dynamically with ldd. + $opt_dry_run || $RM conftest.c + cat > conftest.c </dev/null` + $nocaseglob + else + potential_libs=`ls $i/$libnameglob[.-]* 2>/dev/null` + fi + for potent_lib in $potential_libs; do + # Follow soft links. + if ls -lLd "$potent_lib" 2>/dev/null | + $GREP " -> " >/dev/null; then + continue + fi + # The statement above tries to avoid entering an + # endless loop below, in case of cyclic links. + # We might still enter an endless loop, since a link + # loop can be closed while we follow links, + # but so what? + potlib="$potent_lib" + while test -h "$potlib" 2>/dev/null; do + potliblink=`ls -ld $potlib | ${SED} 's/.* -> //'` + case $potliblink in + [\\/]* | [A-Za-z]:[\\/]*) potlib="$potliblink";; + *) potlib=`$ECHO "$potlib" | $SED 's,[^/]*$,,'`"$potliblink";; + esac + done + if eval $file_magic_cmd \"\$potlib\" 2>/dev/null | + $SED -e 10q | + $EGREP "$file_magic_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for file magic test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a file magic. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + match_pattern*) + set dummy $deplibs_check_method; shift + match_pattern_regex=`expr "$deplibs_check_method" : "$1 \(.*\)"` + for a_deplib in $deplibs; do + case $a_deplib in + -l*) + func_stripname -l '' "$a_deplib" + name=$func_stripname_result + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + case " $predeps $postdeps " in + *" $a_deplib "*) + func_append newdeplibs " $a_deplib" + a_deplib="" + ;; + esac + fi + if test -n "$a_deplib" ; then + libname=`eval "\\$ECHO \"$libname_spec\""` + for i in $lib_search_path $sys_lib_search_path $shlib_search_path; do + potential_libs=`ls $i/$libname[.-]* 2>/dev/null` + for potent_lib in $potential_libs; do + potlib="$potent_lib" # see symlink-check above in file_magic test + if eval "\$ECHO \"$potent_lib\"" 2>/dev/null | $SED 10q | \ + $EGREP "$match_pattern_regex" > /dev/null; then + func_append newdeplibs " $a_deplib" + a_deplib="" + break 2 + fi + done + done + fi + if test -n "$a_deplib" ; then + droppeddeps=yes + echo + $ECHO "*** Warning: linker path does not have real file for library $a_deplib." + echo "*** I have the capability to make that library automatically link in when" + echo "*** you link to this library. But I can only do this if you have a" + echo "*** shared version of the library, which you do not appear to have" + echo "*** because I did check the linker path looking for a file starting" + if test -z "$potlib" ; then + $ECHO "*** with $libname but no candidates were found. (...for regex pattern test)" + else + $ECHO "*** with $libname and none of the candidates passed a file format test" + $ECHO "*** using a regex pattern. Last file checked: $potlib" + fi + fi + ;; + *) + # Add a -L argument. + func_append newdeplibs " $a_deplib" + ;; + esac + done # Gone through all deplibs. + ;; + none | unknown | *) + newdeplibs="" + tmp_deplibs=`$ECHO " $deplibs" | $SED 's/ -lc$//; s/ -[LR][^ ]*//g'` + if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then + for i in $predeps $postdeps ; do + # can't use Xsed below, because $i might contain '/' + tmp_deplibs=`$ECHO " $tmp_deplibs" | $SED "s,$i,,"` + done + fi + case $tmp_deplibs in + *[!\ \ ]*) + echo + if test "X$deplibs_check_method" = "Xnone"; then + echo "*** Warning: inter-library dependencies are not supported in this platform." + else + echo "*** Warning: inter-library dependencies are not known to be supported." + fi + echo "*** All declared inter-library dependencies are being dropped." + droppeddeps=yes + ;; + esac + ;; + esac + versuffix=$versuffix_save + major=$major_save + release=$release_save + libname=$libname_save + name=$name_save + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library with the System framework + newdeplibs=`$ECHO " $newdeplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + if test "$droppeddeps" = yes; then + if test "$module" = yes; then + echo + echo "*** Warning: libtool could not satisfy all declared inter-library" + $ECHO "*** dependencies of module $libname. Therefore, libtool will create" + echo "*** a static module, that should work as long as the dlopening" + echo "*** application is linked with the -dlopen flag." + if test -z "$global_symbol_pipe"; then + echo + echo "*** However, this would only work if libtool was able to extract symbol" + echo "*** lists from a program, using \`nm' or equivalent, but libtool could" + echo "*** not find such a program. So, this module is probably useless." + echo "*** \`nm' from GNU binutils and a full rebuild may help." + fi + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + else + echo "*** The inter-library dependencies that have been dropped here will be" + echo "*** automatically added whenever a program is linked with this library" + echo "*** or is declared to -dlopen it." + + if test "$allow_undefined" = no; then + echo + echo "*** Since this library must not contain undefined symbols," + echo "*** because either the platform does not support them or" + echo "*** it was explicitly requested with -no-undefined," + echo "*** libtool will only create a static version of it." + if test "$build_old_libs" = no; then + oldlibs="$output_objdir/$libname.$libext" + build_libtool_libs=module + build_old_libs=yes + else + build_libtool_libs=no + fi + fi + fi + fi + # Done checking deplibs! + deplibs=$newdeplibs + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + case $host in + *-*-darwin*) + newdeplibs=`$ECHO " $newdeplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + new_inherited_linker_flags=`$ECHO " $new_inherited_linker_flags" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + deplibs=`$ECHO " $deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + deplibs="$new_libs" + + # All the library-specific variables (install_libdir is set above). + library_names= + old_library= + dlname= + + # Test again, we may have decided not to build it any more + if test "$build_libtool_libs" = yes; then + # Remove ${wl} instances when linking with ld. + # FIXME: should test the right _cmds variable. + case $archive_cmds in + *\$LD\ *) wl= ;; + esac + if test "$hardcode_into_libs" = yes; then + # Hardcode the library paths + hardcode_libdirs= + dep_rpath= + rpath="$finalize_rpath" + test "$opt_mode" != relink && rpath="$compile_rpath$rpath" + for libdir in $rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + func_replace_sysroot "$libdir" + libdir=$func_replace_sysroot_result + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append dep_rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval "dep_rpath=\"$hardcode_libdir_flag_spec\"" + fi + if test -n "$runpath_var" && test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + eval "$runpath_var='$rpath\$$runpath_var'; export $runpath_var" + fi + test -n "$dep_rpath" && deplibs="$dep_rpath $deplibs" + fi + + shlibpath="$finalize_shlibpath" + test "$opt_mode" != relink && shlibpath="$compile_shlibpath$shlibpath" + if test -n "$shlibpath"; then + eval "$shlibpath_var='$shlibpath\$$shlibpath_var'; export $shlibpath_var" + fi + + # Get the real and link names of the library. + eval shared_ext=\"$shrext_cmds\" + eval library_names=\"$library_names_spec\" + set dummy $library_names + shift + realname="$1" + shift + + if test -n "$soname_spec"; then + eval soname=\"$soname_spec\" + else + soname="$realname" + fi + if test -z "$dlname"; then + dlname=$soname + fi + + lib="$output_objdir/$realname" + linknames= + for link + do + func_append linknames " $link" + done + + # Use standard objects if they are pic + test -z "$pic_flag" && libobjs=`$ECHO "$libobjs" | $SP2NL | $SED "$lo2o" | $NL2SP` + test "X$libobjs" = "X " && libobjs= + + delfiles= + if test -n "$export_symbols" && test -n "$include_expsyms"; then + $opt_dry_run || cp "$export_symbols" "$output_objdir/$libname.uexp" + export_symbols="$output_objdir/$libname.uexp" + func_append delfiles " $export_symbols" + fi + + orig_export_symbols= + case $host_os in + cygwin* | mingw* | cegcc*) + if test -n "$export_symbols" && test -z "$export_symbols_regex"; then + # exporting using user supplied symfile + if test "x`$SED 1q $export_symbols`" != xEXPORTS; then + # and it's NOT already a .def file. Must figure out + # which of the given symbols are data symbols and tag + # them as such. So, trigger use of export_symbols_cmds. + # export_symbols gets reassigned inside the "prepare + # the list of exported symbols" if statement, so the + # include_expsyms logic still works. + orig_export_symbols="$export_symbols" + export_symbols= + always_export_symbols=yes + fi + fi + ;; + esac + + # Prepare the list of exported symbols + if test -z "$export_symbols"; then + if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + cmds=$export_symbols_cmds + save_ifs="$IFS"; IFS='~' + for cmd1 in $cmds; do + IFS="$save_ifs" + # Take the normal branch if the nm_file_list_spec branch + # doesn't work or if tool conversion is not needed. + case $nm_file_list_spec~$to_tool_file_cmd in + *~func_convert_file_noop | *~func_convert_file_msys_to_w32 | ~*) + try_normal_branch=yes + eval cmd=\"$cmd1\" + func_len " $cmd" + len=$func_len_result + ;; + *) + try_normal_branch=no + ;; + esac + if test "$try_normal_branch" = yes \ + && { test "$len" -lt "$max_cmd_len" \ + || test "$max_cmd_len" -le -1; } + then + func_show_eval "$cmd" 'exit $?' + skipped_export=false + elif test -n "$nm_file_list_spec"; then + func_basename "$output" + output_la=$func_basename_result + save_libobjs=$libobjs + save_output=$output + output=${output_objdir}/${output_la}.nm + func_to_tool_file "$output" + libobjs=$nm_file_list_spec$func_to_tool_file_result + func_append delfiles " $output" + func_verbose "creating $NM input file list: $output" + for obj in $save_libobjs; do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > "$output" + eval cmd=\"$cmd1\" + func_show_eval "$cmd" 'exit $?' + output=$save_output + libobjs=$save_libobjs + skipped_export=false + else + # The command line is too long to execute in one step. + func_verbose "using reloadable object file for export list..." + skipped_export=: + # Break out early, otherwise skipped_export may be + # set to false by a later but shorter cmd. + break + fi + done + IFS="$save_ifs" + if test -n "$export_symbols_regex" && test "X$skipped_export" != "X:"; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + fi + + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test "X$skipped_export" != "X:" && test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + + tmp_deplibs= + for test_deplib in $deplibs; do + case " $convenience " in + *" $test_deplib "*) ;; + *) + func_append tmp_deplibs " $test_deplib" + ;; + esac + done + deplibs="$tmp_deplibs" + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec" && + test "$compiler_needs_object" = yes && + test -z "$libobjs"; then + # extract the archives, so we have objects to list. + # TODO: could optimize this to just extract one archive. + whole_archive_flag_spec= + fi + if test -n "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + else + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + fi + + if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then + eval flag=\"$thread_safe_flag_spec\" + func_append linker_flags " $flag" + fi + + # Make a backup of the uninstalled library when relinking + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}U && $MV $realname ${realname}U)' || exit $? + fi + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + eval test_cmds=\"$module_expsym_cmds\" + cmds=$module_expsym_cmds + else + eval test_cmds=\"$module_cmds\" + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + eval test_cmds=\"$archive_expsym_cmds\" + cmds=$archive_expsym_cmds + else + eval test_cmds=\"$archive_cmds\" + cmds=$archive_cmds + fi + fi + + if test "X$skipped_export" != "X:" && + func_len " $test_cmds" && + len=$func_len_result && + test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + : + else + # The command line is too long to link in one step, link piecewise + # or, if using GNU ld and skipped_export is not :, use a linker + # script. + + # Save the value of $output and $libobjs because we want to + # use them later. If we have whole_archive_flag_spec, we + # want to use save_libobjs as it was before + # whole_archive_flag_spec was expanded, because we can't + # assume the linker understands whole_archive_flag_spec. + # This may have to be revisited, in case too many + # convenience libraries get linked in and end up exceeding + # the spec. + if test -z "$convenience" || test -z "$whole_archive_flag_spec"; then + save_libobjs=$libobjs + fi + save_output=$output + func_basename "$output" + output_la=$func_basename_result + + # Clear the reloadable object creation command queue and + # initialize k to one. + test_cmds= + concat_cmds= + objlist= + last_robj= + k=1 + + if test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "$with_gnu_ld" = yes; then + output=${output_objdir}/${output_la}.lnkscript + func_verbose "creating GNU ld script: $output" + echo 'INPUT (' > $output + for obj in $save_libobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + echo ')' >> $output + func_append delfiles " $output" + func_to_tool_file "$output" + output=$func_to_tool_file_result + elif test -n "$save_libobjs" && test "X$skipped_export" != "X:" && test "X$file_list_spec" != X; then + output=${output_objdir}/${output_la}.lnk + func_verbose "creating linker input file list: $output" + : > $output + set x $save_libobjs + shift + firstobj= + if test "$compiler_needs_object" = yes; then + firstobj="$1 " + shift + fi + for obj + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" >> $output + done + func_append delfiles " $output" + func_to_tool_file "$output" + output=$firstobj\"$file_list_spec$func_to_tool_file_result\" + else + if test -n "$save_libobjs"; then + func_verbose "creating reloadable object files..." + output=$output_objdir/$output_la-${k}.$objext + eval test_cmds=\"$reload_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + + # Loop over the list of objects to be linked. + for obj in $save_libobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + if test "X$objlist" = X || + test "$len" -lt "$max_cmd_len"; then + func_append objlist " $obj" + else + # The command $test_cmds is almost too long, add a + # command to the queue. + if test "$k" -eq 1 ; then + # The first file doesn't have a previous command to add. + reload_objs=$objlist + eval concat_cmds=\"$reload_cmds\" + else + # All subsequent reloadable object files will link in + # the last one created. + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\$concat_cmds~$reload_cmds~\$RM $last_robj\" + fi + last_robj=$output_objdir/$output_la-${k}.$objext + func_arith $k + 1 + k=$func_arith_result + output=$output_objdir/$output_la-${k}.$objext + objlist=" $obj" + func_len " $last_robj" + func_arith $len0 + $func_len_result + len=$func_arith_result + fi + done + # Handle the remaining objects by creating one last + # reloadable object file. All subsequent reloadable object + # files will link in the last one created. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + reload_objs="$objlist $last_robj" + eval concat_cmds=\"\${concat_cmds}$reload_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\${concat_cmds}~\$RM $last_robj\" + fi + func_append delfiles " $output" + + else + output= + fi + + if ${skipped_export-false}; then + func_verbose "generating symbol list for \`$libname.la'" + export_symbols="$output_objdir/$libname.exp" + $opt_dry_run || $RM $export_symbols + libobjs=$output + # Append the command to create the export file. + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\$concat_cmds$export_symbols_cmds\" + if test -n "$last_robj"; then + eval concat_cmds=\"\$concat_cmds~\$RM $last_robj\" + fi + fi + + test -n "$save_libobjs" && + func_verbose "creating a temporary reloadable object file: $output" + + # Loop through the commands generated above and execute them. + save_ifs="$IFS"; IFS='~' + for cmd in $concat_cmds; do + IFS="$save_ifs" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + if test -n "$export_symbols_regex" && ${skipped_export-false}; then + func_show_eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"' + func_show_eval '$MV "${export_symbols}T" "$export_symbols"' + fi + fi + + if ${skipped_export-false}; then + if test -n "$export_symbols" && test -n "$include_expsyms"; then + tmp_export_symbols="$export_symbols" + test -n "$orig_export_symbols" && tmp_export_symbols="$orig_export_symbols" + $opt_dry_run || eval '$ECHO "$include_expsyms" | $SP2NL >> "$tmp_export_symbols"' + fi + + if test -n "$orig_export_symbols"; then + # The given exports_symbols file has to be filtered, so filter it. + func_verbose "filter symbol list for \`$libname.la' to tag DATA exports" + # FIXME: $output_objdir/$libname.filter potentially contains lots of + # 's' commands which not all seds can handle. GNU sed should be fine + # though. Also, the filter scales superlinearly with the number of + # global variables. join(1) would be nice here, but unfortunately + # isn't a blessed tool. + $opt_dry_run || $SED -e '/[ ,]DATA/!d;s,\(.*\)\([ \,].*\),s|^\1$|\1\2|,' < $export_symbols > $output_objdir/$libname.filter + func_append delfiles " $export_symbols $output_objdir/$libname.filter" + export_symbols=$output_objdir/$libname.def + $opt_dry_run || $SED -f $output_objdir/$libname.filter < $orig_export_symbols > $export_symbols + fi + fi + + libobjs=$output + # Restore the value of output. + output=$save_output + + if test -n "$convenience" && test -n "$whole_archive_flag_spec"; then + eval libobjs=\"\$libobjs $whole_archive_flag_spec\" + test "X$libobjs" = "X " && libobjs= + fi + # Expand the library linking commands again to reset the + # value of $libobjs for piecewise linking. + + # Do each of the archive commands. + if test "$module" = yes && test -n "$module_cmds" ; then + if test -n "$export_symbols" && test -n "$module_expsym_cmds"; then + cmds=$module_expsym_cmds + else + cmds=$module_cmds + fi + else + if test -n "$export_symbols" && test -n "$archive_expsym_cmds"; then + cmds=$archive_expsym_cmds + else + cmds=$archive_cmds + fi + fi + fi + + if test -n "$delfiles"; then + # Append the command to remove temporary files to $cmds. + eval cmds=\"\$cmds~\$RM $delfiles\" + fi + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append libobjs " $func_extract_archives_result" + test "X$libobjs" = "X " && libobjs= + fi + + save_ifs="$IFS"; IFS='~' + for cmd in $cmds; do + IFS="$save_ifs" + eval cmd=\"$cmd\" + $opt_silent || { + func_quote_for_expand "$cmd" + eval "func_echo $func_quote_for_expand_result" + } + $opt_dry_run || eval "$cmd" || { + lt_exit=$? + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + ( cd "$output_objdir" && \ + $RM "${realname}T" && \ + $MV "${realname}U" "$realname" ) + fi + + exit $lt_exit + } + done + IFS="$save_ifs" + + # Restore the uninstalled library and exit + if test "$opt_mode" = relink; then + $opt_dry_run || eval '(cd $output_objdir && $RM ${realname}T && $MV $realname ${realname}T && $MV ${realname}U $realname)' || exit $? + + if test -n "$convenience"; then + if test -z "$whole_archive_flag_spec"; then + func_show_eval '${RM}r "$gentop"' + fi + fi + + exit $EXIT_SUCCESS + fi + + # Create links to the real library. + for linkname in $linknames; do + if test "$realname" != "$linkname"; then + func_show_eval '(cd "$output_objdir" && $RM "$linkname" && $LN_S "$realname" "$linkname")' 'exit $?' + fi + done + + # If -module or -export-dynamic was specified, set the dlname. + if test "$module" = yes || test "$export_dynamic" = yes; then + # On all known operating systems, these are identical. + dlname="$soname" + fi + fi + ;; + + obj) + if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then + func_warning "\`-dlopen' is ignored for objects" + fi + + case " $deplibs" in + *\ -l* | *\ -L*) + func_warning "\`-l' and \`-L' are ignored for objects" ;; + esac + + test -n "$rpath" && \ + func_warning "\`-rpath' is ignored for objects" + + test -n "$xrpath" && \ + func_warning "\`-R' is ignored for objects" + + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for objects" + + test -n "$release" && \ + func_warning "\`-release' is ignored for objects" + + case $output in + *.lo) + test -n "$objs$old_deplibs" && \ + func_fatal_error "cannot build library object \`$output' from non-libtool objects" + + libobj=$output + func_lo2o "$libobj" + obj=$func_lo2o_result + ;; + *) + libobj= + obj="$output" + ;; + esac + + # Delete the old objects. + $opt_dry_run || $RM $obj $libobj + + # Objects from convenience libraries. This assumes + # single-version convenience libraries. Whenever we create + # different ones for PIC/non-PIC, this we'll have to duplicate + # the extraction. + reload_conv_objs= + gentop= + # reload_cmds runs $LD directly, so let us get rid of + # -Wl from whole_archive_flag_spec and hope we can get by with + # turning comma into space.. + wl= + + if test -n "$convenience"; then + if test -n "$whole_archive_flag_spec"; then + eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\" + reload_conv_objs=$reload_objs\ `$ECHO "$tmp_whole_archive_flags" | $SED 's|,| |g'` + else + gentop="$output_objdir/${obj}x" + func_append generated " $gentop" + + func_extract_archives $gentop $convenience + reload_conv_objs="$reload_objs $func_extract_archives_result" + fi + fi + + # If we're not building shared, we need to use non_pic_objs + test "$build_libtool_libs" != yes && libobjs="$non_pic_objects" + + # Create the old-style object. + reload_objs="$objs$old_deplibs "`$ECHO "$libobjs" | $SP2NL | $SED "/\.${libext}$/d; /\.lib$/d; $lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test + + output="$obj" + func_execute_cmds "$reload_cmds" 'exit $?' + + # Exit if we aren't doing a library object file. + if test -z "$libobj"; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + fi + + if test "$build_libtool_libs" != yes; then + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + # Create an invalid libtool object if no PIC, so that we don't + # accidentally link it into a program. + # $show "echo timestamp > $libobj" + # $opt_dry_run || eval "echo timestamp > $libobj" || exit $? + exit $EXIT_SUCCESS + fi + + if test -n "$pic_flag" || test "$pic_mode" != default; then + # Only do commands if we really have different PIC objects. + reload_objs="$libobjs $reload_conv_objs" + output="$libobj" + func_execute_cmds "$reload_cmds" 'exit $?' + fi + + if test -n "$gentop"; then + func_show_eval '${RM}r "$gentop"' + fi + + exit $EXIT_SUCCESS + ;; + + prog) + case $host in + *cygwin*) func_stripname '' '.exe' "$output" + output=$func_stripname_result.exe;; + esac + test -n "$vinfo" && \ + func_warning "\`-version-info' is ignored for programs" + + test -n "$release" && \ + func_warning "\`-release' is ignored for programs" + + test "$preload" = yes \ + && test "$dlopen_support" = unknown \ + && test "$dlopen_self" = unknown \ + && test "$dlopen_self_static" = unknown && \ + func_warning "\`LT_INIT([dlopen])' not used. Assuming no dlopen support." + + case $host in + *-*-rhapsody* | *-*-darwin1.[012]) + # On Rhapsody replace the C library is the System framework + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's/ -lc / System.ltframework /'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's/ -lc / System.ltframework /'` + ;; + esac + + case $host in + *-*-darwin*) + # Don't allow lazy linking, it breaks C++ global constructors + # But is supposedly fixed on 10.4 or later (yay!). + if test "$tagname" = CXX ; then + case ${MACOSX_DEPLOYMENT_TARGET-10.0} in + 10.[0123]) + func_append compile_command " ${wl}-bind_at_load" + func_append finalize_command " ${wl}-bind_at_load" + ;; + esac + fi + # Time to change all our "foo.ltframework" stuff back to "-framework foo" + compile_deplibs=`$ECHO " $compile_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + finalize_deplibs=`$ECHO " $finalize_deplibs" | $SED 's% \([^ $]*\).ltframework% -framework \1%g'` + ;; + esac + + + # move library search paths that coincide with paths to not yet + # installed libraries to the beginning of the library search list + new_libs= + for path in $notinst_path; do + case " $new_libs " in + *" -L$path/$objdir "*) ;; + *) + case " $compile_deplibs " in + *" -L$path/$objdir "*) + func_append new_libs " -L$path/$objdir" ;; + esac + ;; + esac + done + for deplib in $compile_deplibs; do + case $deplib in + -L*) + case " $new_libs " in + *" $deplib "*) ;; + *) func_append new_libs " $deplib" ;; + esac + ;; + *) func_append new_libs " $deplib" ;; + esac + done + compile_deplibs="$new_libs" + + + func_append compile_command " $compile_deplibs" + func_append finalize_command " $finalize_deplibs" + + if test -n "$rpath$xrpath"; then + # If the user specified any rpath flags, then add them. + for libdir in $rpath $xrpath; do + # This is the magic to use -rpath. + case "$finalize_rpath " in + *" $libdir "*) ;; + *) func_append finalize_rpath " $libdir" ;; + esac + done + fi + + # Now hardcode the library paths + rpath= + hardcode_libdirs= + for libdir in $compile_rpath $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$perm_rpath " in + *" $libdir "*) ;; + *) func_append perm_rpath " $libdir" ;; + esac + fi + case $host in + *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-cegcc*) + testbindir=`${ECHO} "$libdir" | ${SED} -e 's*/lib$*/bin*'` + case :$dllsearchpath: in + *":$libdir:"*) ;; + ::) dllsearchpath=$libdir;; + *) func_append dllsearchpath ":$libdir";; + esac + case :$dllsearchpath: in + *":$testbindir:"*) ;; + ::) dllsearchpath=$testbindir;; + *) func_append dllsearchpath ":$testbindir";; + esac + ;; + esac + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + compile_rpath="$rpath" + + rpath= + hardcode_libdirs= + for libdir in $finalize_rpath; do + if test -n "$hardcode_libdir_flag_spec"; then + if test -n "$hardcode_libdir_separator"; then + if test -z "$hardcode_libdirs"; then + hardcode_libdirs="$libdir" + else + # Just accumulate the unique libdirs. + case $hardcode_libdir_separator$hardcode_libdirs$hardcode_libdir_separator in + *"$hardcode_libdir_separator$libdir$hardcode_libdir_separator"*) + ;; + *) + func_append hardcode_libdirs "$hardcode_libdir_separator$libdir" + ;; + esac + fi + else + eval flag=\"$hardcode_libdir_flag_spec\" + func_append rpath " $flag" + fi + elif test -n "$runpath_var"; then + case "$finalize_perm_rpath " in + *" $libdir "*) ;; + *) func_append finalize_perm_rpath " $libdir" ;; + esac + fi + done + # Substitute the hardcoded libdirs into the rpath. + if test -n "$hardcode_libdir_separator" && + test -n "$hardcode_libdirs"; then + libdir="$hardcode_libdirs" + eval rpath=\" $hardcode_libdir_flag_spec\" + fi + finalize_rpath="$rpath" + + if test -n "$libobjs" && test "$build_old_libs" = yes; then + # Transform all the library objects into standard objects. + compile_command=`$ECHO "$compile_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + finalize_command=`$ECHO "$finalize_command" | $SP2NL | $SED "$lo2o" | $NL2SP` + fi + + func_generate_dlsyms "$outputname" "@PROGRAM@" "no" + + # template prelinking step + if test -n "$prelink_cmds"; then + func_execute_cmds "$prelink_cmds" 'exit $?' + fi + + wrappers_required=yes + case $host in + *cegcc* | *mingw32ce*) + # Disable wrappers for cegcc and mingw32ce hosts, we are cross compiling anyway. + wrappers_required=no + ;; + *cygwin* | *mingw* ) + if test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + *) + if test "$need_relink" = no || test "$build_libtool_libs" != yes; then + wrappers_required=no + fi + ;; + esac + if test "$wrappers_required" = no; then + # Replace the output file specification. + compile_command=`$ECHO "$compile_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + link_command="$compile_command$compile_rpath" + + # We have no uninstalled library dependencies, so finalize right now. + exit_status=0 + func_show_eval "$link_command" 'exit_status=$?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Delete the generated files. + if test -f "$output_objdir/${outputname}S.${objext}"; then + func_show_eval '$RM "$output_objdir/${outputname}S.${objext}"' + fi + + exit $exit_status + fi + + if test -n "$compile_shlibpath$finalize_shlibpath"; then + compile_command="$shlibpath_var=\"$compile_shlibpath$finalize_shlibpath\$$shlibpath_var\" $compile_command" + fi + if test -n "$finalize_shlibpath"; then + finalize_command="$shlibpath_var=\"$finalize_shlibpath\$$shlibpath_var\" $finalize_command" + fi + + compile_var= + finalize_var= + if test -n "$runpath_var"; then + if test -n "$perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $perm_rpath; do + func_append rpath "$dir:" + done + compile_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + if test -n "$finalize_perm_rpath"; then + # We should set the runpath_var. + rpath= + for dir in $finalize_perm_rpath; do + func_append rpath "$dir:" + done + finalize_var="$runpath_var=\"$rpath\$$runpath_var\" " + fi + fi + + if test "$no_install" = yes; then + # We don't need to create a wrapper script. + link_command="$compile_var$compile_command$compile_rpath" + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output"'%g'` + # Delete the old output file. + $opt_dry_run || $RM $output + # Link the executable and exit + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + exit $EXIT_SUCCESS + fi + + if test "$hardcode_action" = relink; then + # Fast installation is not supported + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + + func_warning "this platform does not like uninstalled shared libraries" + func_warning "\`$output' will be relinked during installation" + else + if test "$fast_install" != no; then + link_command="$finalize_var$compile_command$finalize_rpath" + if test "$fast_install" = yes; then + relink_command=`$ECHO "$compile_var$compile_command$compile_rpath" | $SED 's%@OUTPUT@%\$progdir/\$file%g'` + else + # fast_install is set to needless + relink_command= + fi + else + link_command="$compile_var$compile_command$compile_rpath" + relink_command="$finalize_var$finalize_command$finalize_rpath" + fi + fi + + # Replace the output file specification. + link_command=`$ECHO "$link_command" | $SED 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'` + + # Delete the old output files. + $opt_dry_run || $RM $output $output_objdir/$outputname $output_objdir/lt-$outputname + + func_show_eval "$link_command" 'exit $?' + + if test -n "$postlink_cmds"; then + func_to_tool_file "$output_objdir/$outputname" + postlink_cmds=`func_echo_all "$postlink_cmds" | $SED -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g' -e 's%@TOOL_OUTPUT@%'"$func_to_tool_file_result"'%g'` + func_execute_cmds "$postlink_cmds" 'exit $?' + fi + + # Now create the wrapper script. + func_verbose "creating $output" + + # Quote the relink command for shipping. + if test -n "$relink_command"; then + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + relink_command="(cd `pwd`; $relink_command)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + fi + + # Only actually do things if not in dry run mode. + $opt_dry_run || { + # win32 will think the script is a binary if it has + # a .exe suffix, so we strip it off here. + case $output in + *.exe) func_stripname '' '.exe' "$output" + output=$func_stripname_result ;; + esac + # test for cygwin because mv fails w/o .exe extensions + case $host in + *cygwin*) + exeext=.exe + func_stripname '' '.exe' "$outputname" + outputname=$func_stripname_result ;; + *) exeext= ;; + esac + case $host in + *cygwin* | *mingw* ) + func_dirname_and_basename "$output" "" "." + output_name=$func_basename_result + output_path=$func_dirname_result + cwrappersource="$output_path/$objdir/lt-$output_name.c" + cwrapper="$output_path/$output_name.exe" + $RM $cwrappersource $cwrapper + trap "$RM $cwrappersource $cwrapper; exit $EXIT_FAILURE" 1 2 15 + + func_emit_cwrapperexe_src > $cwrappersource + + # The wrapper executable is built using the $host compiler, + # because it contains $host paths and files. If cross- + # compiling, it, like the target executable, must be + # executed on the $host or under an emulation environment. + $opt_dry_run || { + $LTCC $LTCFLAGS -o $cwrapper $cwrappersource + $STRIP $cwrapper + } + + # Now, create the wrapper script for func_source use: + func_ltwrapper_scriptname $cwrapper + $RM $func_ltwrapper_scriptname_result + trap "$RM $func_ltwrapper_scriptname_result; exit $EXIT_FAILURE" 1 2 15 + $opt_dry_run || { + # note: this script will not be executed, so do not chmod. + if test "x$build" = "x$host" ; then + $cwrapper --lt-dump-script > $func_ltwrapper_scriptname_result + else + func_emit_wrapper no > $func_ltwrapper_scriptname_result + fi + } + ;; + * ) + $RM $output + trap "$RM $output; exit $EXIT_FAILURE" 1 2 15 + + func_emit_wrapper no > $output + chmod +x $output + ;; + esac + } + exit $EXIT_SUCCESS + ;; + esac + + # See if we need to build an old-fashioned archive. + for oldlib in $oldlibs; do + + if test "$build_libtool_libs" = convenience; then + oldobjs="$libobjs_save $symfileobj" + addlibs="$convenience" + build_libtool_libs=no + else + if test "$build_libtool_libs" = module; then + oldobjs="$libobjs_save" + build_libtool_libs=no + else + oldobjs="$old_deplibs $non_pic_objects" + if test "$preload" = yes && test -f "$symfileobj"; then + func_append oldobjs " $symfileobj" + fi + fi + addlibs="$old_convenience" + fi + + if test -n "$addlibs"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $addlibs + func_append oldobjs " $func_extract_archives_result" + fi + + # Do each command in the archive commands. + if test -n "$old_archive_from_new_cmds" && test "$build_libtool_libs" = yes; then + cmds=$old_archive_from_new_cmds + else + + # Add any objects from preloaded convenience libraries + if test -n "$dlprefiles"; then + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + + func_extract_archives $gentop $dlprefiles + func_append oldobjs " $func_extract_archives_result" + fi + + # POSIX demands no paths to be encoded in archives. We have + # to avoid creating archives with duplicate basenames if we + # might have to extract them afterwards, e.g., when creating a + # static archive out of a convenience library, or when linking + # the entirety of a libtool archive into another (currently + # not supported by libtool). + if (for obj in $oldobjs + do + func_basename "$obj" + $ECHO "$func_basename_result" + done | sort | sort -uc >/dev/null 2>&1); then + : + else + echo "copying selected object files to avoid basename conflicts..." + gentop="$output_objdir/${outputname}x" + func_append generated " $gentop" + func_mkdir_p "$gentop" + save_oldobjs=$oldobjs + oldobjs= + counter=1 + for obj in $save_oldobjs + do + func_basename "$obj" + objbase="$func_basename_result" + case " $oldobjs " in + " ") oldobjs=$obj ;; + *[\ /]"$objbase "*) + while :; do + # Make sure we don't pick an alternate name that also + # overlaps. + newobj=lt$counter-$objbase + func_arith $counter + 1 + counter=$func_arith_result + case " $oldobjs " in + *[\ /]"$newobj "*) ;; + *) if test ! -f "$gentop/$newobj"; then break; fi ;; + esac + done + func_show_eval "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj" + func_append oldobjs " $gentop/$newobj" + ;; + *) func_append oldobjs " $obj" ;; + esac + done + fi + func_to_tool_file "$oldlib" func_convert_file_msys_to_w32 + tool_oldlib=$func_to_tool_file_result + eval cmds=\"$old_archive_cmds\" + + func_len " $cmds" + len=$func_len_result + if test "$len" -lt "$max_cmd_len" || test "$max_cmd_len" -le -1; then + cmds=$old_archive_cmds + elif test -n "$archiver_list_spec"; then + func_verbose "using command file archive linking..." + for obj in $oldobjs + do + func_to_tool_file "$obj" + $ECHO "$func_to_tool_file_result" + done > $output_objdir/$libname.libcmd + func_to_tool_file "$output_objdir/$libname.libcmd" + oldobjs=" $archiver_list_spec$func_to_tool_file_result" + cmds=$old_archive_cmds + else + # the command line is too long to link in one step, link in parts + func_verbose "using piecewise archive linking..." + save_RANLIB=$RANLIB + RANLIB=: + objlist= + concat_cmds= + save_oldobjs=$oldobjs + oldobjs= + # Is there a better way of finding the last object in the list? + for obj in $save_oldobjs + do + last_oldobj=$obj + done + eval test_cmds=\"$old_archive_cmds\" + func_len " $test_cmds" + len0=$func_len_result + len=$len0 + for obj in $save_oldobjs + do + func_len " $obj" + func_arith $len + $func_len_result + len=$func_arith_result + func_append objlist " $obj" + if test "$len" -lt "$max_cmd_len"; then + : + else + # the above command should be used before it gets too long + oldobjs=$objlist + if test "$obj" = "$last_oldobj" ; then + RANLIB=$save_RANLIB + fi + test -z "$concat_cmds" || concat_cmds=$concat_cmds~ + eval concat_cmds=\"\${concat_cmds}$old_archive_cmds\" + objlist= + len=$len0 + fi + done + RANLIB=$save_RANLIB + oldobjs=$objlist + if test "X$oldobjs" = "X" ; then + eval cmds=\"\$concat_cmds\" + else + eval cmds=\"\$concat_cmds~\$old_archive_cmds\" + fi + fi + fi + func_execute_cmds "$cmds" 'exit $?' + done + + test -n "$generated" && \ + func_show_eval "${RM}r$generated" + + # Now create the libtool archive. + case $output in + *.la) + old_library= + test "$build_old_libs" = yes && old_library="$libname.$libext" + func_verbose "creating $output" + + # Preserve any variables that may affect compiler behavior + for var in $variables_saved_for_relink; do + if eval test -z \"\${$var+set}\"; then + relink_command="{ test -z \"\${$var+set}\" || $lt_unset $var || { $var=; export $var; }; }; $relink_command" + elif eval var_value=\$$var; test -z "$var_value"; then + relink_command="$var=; export $var; $relink_command" + else + func_quote_for_eval "$var_value" + relink_command="$var=$func_quote_for_eval_result; export $var; $relink_command" + fi + done + # Quote the link command for shipping. + relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)" + relink_command=`$ECHO "$relink_command" | $SED "$sed_quote_subst"` + if test "$hardcode_automatic" = yes ; then + relink_command= + fi + + # Only create the output if not a dry run. + $opt_dry_run || { + for installed in no yes; do + if test "$installed" = yes; then + if test -z "$install_libdir"; then + break + fi + output="$output_objdir/$outputname"i + # Replace all uninstalled libtool libraries with the installed ones + newdependency_libs= + for deplib in $dependency_libs; do + case $deplib in + *.la) + func_basename "$deplib" + name="$func_basename_result" + func_resolve_sysroot "$deplib" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $func_resolve_sysroot_result` + test -z "$libdir" && \ + func_fatal_error "\`$deplib' is not a valid libtool archive" + func_append newdependency_libs " ${lt_sysroot:+=}$libdir/$name" + ;; + -L*) + func_stripname -L '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -L$func_replace_sysroot_result" + ;; + -R*) + func_stripname -R '' "$deplib" + func_replace_sysroot "$func_stripname_result" + func_append newdependency_libs " -R$func_replace_sysroot_result" + ;; + *) func_append newdependency_libs " $deplib" ;; + esac + done + dependency_libs="$newdependency_libs" + newdlfiles= + + for lib in $dlfiles; do + case $lib in + *.la) + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlfiles " ${lt_sysroot:+=}$libdir/$name" + ;; + *) func_append newdlfiles " $lib" ;; + esac + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + *.la) + # Only pass preopened files to the pseudo-archive (for + # eventual linking with the app. that links it) if we + # didn't already link the preopened objects directly into + # the library: + func_basename "$lib" + name="$func_basename_result" + eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib` + test -z "$libdir" && \ + func_fatal_error "\`$lib' is not a valid libtool archive" + func_append newdlprefiles " ${lt_sysroot:+=}$libdir/$name" + ;; + esac + done + dlprefiles="$newdlprefiles" + else + newdlfiles= + for lib in $dlfiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlfiles " $abs" + done + dlfiles="$newdlfiles" + newdlprefiles= + for lib in $dlprefiles; do + case $lib in + [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;; + *) abs=`pwd`"/$lib" ;; + esac + func_append newdlprefiles " $abs" + done + dlprefiles="$newdlprefiles" + fi + $RM $output + # place dlname in correct position for cygwin + # In fact, it would be nice if we could use this code for all target + # systems that can't hard-code library paths into their executables + # and that have no shared library path variable independent of PATH, + # but it turns out we can't easily determine that from inspecting + # libtool variables, so we have to hard-code the OSs to which it + # applies here; at the moment, that means platforms that use the PE + # object format with DLL files. See the long comment at the top of + # tests/bindir.at for full details. + tdlname=$dlname + case $host,$output,$installed,$module,$dlname in + *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll | *cegcc*,*lai,yes,no,*.dll) + # If a -bindir argument was supplied, place the dll there. + if test "x$bindir" != x ; + then + func_relative_path "$install_libdir" "$bindir" + tdlname=$func_relative_path_result$dlname + else + # Otherwise fall back on heuristic. + tdlname=../bin/$dlname + fi + ;; + esac + $ECHO > $output "\ +# $outputname - a libtool library file +# Generated by $PROGRAM (GNU $PACKAGE$TIMESTAMP) $VERSION +# +# Please DO NOT delete this file! +# It is necessary for linking the library. + +# The name that we can dlopen(3). +dlname='$tdlname' + +# Names of this library. +library_names='$library_names' + +# The name of the static archive. +old_library='$old_library' + +# Linker flags that can not go in dependency_libs. +inherited_linker_flags='$new_inherited_linker_flags' + +# Libraries that this one depends upon. +dependency_libs='$dependency_libs' + +# Names of additional weak libraries provided by this library +weak_library_names='$weak_libs' + +# Version information for $libname. +current=$current +age=$age +revision=$revision + +# Is this an already installed library? +installed=$installed + +# Should we warn about portability when linking against -modules? +shouldnotlink=$module + +# Files to dlopen/dlpreopen +dlopen='$dlfiles' +dlpreopen='$dlprefiles' + +# Directory that this library needs to be installed in: +libdir='$install_libdir'" + if test "$installed" = no && test "$need_relink" = yes; then + $ECHO >> $output "\ +relink_command=\"$relink_command\"" + fi + done + } + + # Do a symbolic link so that the libtool archive can be found in + # LD_LIBRARY_PATH before the program is installed. + func_show_eval '( cd "$output_objdir" && $RM "$outputname" && $LN_S "../$outputname" "$outputname" )' 'exit $?' + ;; + esac + exit $EXIT_SUCCESS +} + +{ test "$opt_mode" = link || test "$opt_mode" = relink; } && + func_mode_link ${1+"$@"} + + +# func_mode_uninstall arg... +func_mode_uninstall () +{ + $opt_debug + RM="$nonopt" + files= + rmforce= + exit_status=0 + + # This variable tells wrapper scripts just to set variables rather + # than running their programs. + libtool_install_magic="$magic" + + for arg + do + case $arg in + -f) func_append RM " $arg"; rmforce=yes ;; + -*) func_append RM " $arg" ;; + *) func_append files " $arg" ;; + esac + done + + test -z "$RM" && \ + func_fatal_help "you must specify an RM program" + + rmdirs= + + for file in $files; do + func_dirname "$file" "" "." + dir="$func_dirname_result" + if test "X$dir" = X.; then + odir="$objdir" + else + odir="$dir/$objdir" + fi + func_basename "$file" + name="$func_basename_result" + test "$opt_mode" = uninstall && odir="$dir" + + # Remember odir for removal later, being careful to avoid duplicates + if test "$opt_mode" = clean; then + case " $rmdirs " in + *" $odir "*) ;; + *) func_append rmdirs " $odir" ;; + esac + fi + + # Don't error if the file doesn't exist and rm -f was used. + if { test -L "$file"; } >/dev/null 2>&1 || + { test -h "$file"; } >/dev/null 2>&1 || + test -f "$file"; then + : + elif test -d "$file"; then + exit_status=1 + continue + elif test "$rmforce" = yes; then + continue + fi + + rmfiles="$file" + + case $name in + *.la) + # Possibly a libtool archive, so verify it. + if func_lalib_p "$file"; then + func_source $dir/$name + + # Delete the libtool libraries and symlinks. + for n in $library_names; do + func_append rmfiles " $odir/$n" + done + test -n "$old_library" && func_append rmfiles " $odir/$old_library" + + case "$opt_mode" in + clean) + case " $library_names " in + *" $dlname "*) ;; + *) test -n "$dlname" && func_append rmfiles " $odir/$dlname" ;; + esac + test -n "$libdir" && func_append rmfiles " $odir/$name $odir/${name}i" + ;; + uninstall) + if test -n "$library_names"; then + # Do each command in the postuninstall commands. + func_execute_cmds "$postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + + if test -n "$old_library"; then + # Do each command in the old_postuninstall commands. + func_execute_cmds "$old_postuninstall_cmds" 'test "$rmforce" = yes || exit_status=1' + fi + # FIXME: should reinstall the best remaining shared library. + ;; + esac + fi + ;; + + *.lo) + # Possibly a libtool object, so verify it. + if func_lalib_p "$file"; then + + # Read the .lo file + func_source $dir/$name + + # Add PIC object to the list of files to remove. + if test -n "$pic_object" && + test "$pic_object" != none; then + func_append rmfiles " $dir/$pic_object" + fi + + # Add non-PIC object to the list of files to remove. + if test -n "$non_pic_object" && + test "$non_pic_object" != none; then + func_append rmfiles " $dir/$non_pic_object" + fi + fi + ;; + + *) + if test "$opt_mode" = clean ; then + noexename=$name + case $file in + *.exe) + func_stripname '' '.exe' "$file" + file=$func_stripname_result + func_stripname '' '.exe' "$name" + noexename=$func_stripname_result + # $file with .exe has already been added to rmfiles, + # add $file without .exe + func_append rmfiles " $file" + ;; + esac + # Do a test to see if this is a libtool program. + if func_ltwrapper_p "$file"; then + if func_ltwrapper_executable_p "$file"; then + func_ltwrapper_scriptname "$file" + relink_command= + func_source $func_ltwrapper_scriptname_result + func_append rmfiles " $func_ltwrapper_scriptname_result" + else + relink_command= + func_source $dir/$noexename + fi + + # note $name still contains .exe if it was in $file originally + # as does the version of $file that was added into $rmfiles + func_append rmfiles " $odir/$name $odir/${name}S.${objext}" + if test "$fast_install" = yes && test -n "$relink_command"; then + func_append rmfiles " $odir/lt-$name" + fi + if test "X$noexename" != "X$name" ; then + func_append rmfiles " $odir/lt-${noexename}.c" + fi + fi + fi + ;; + esac + func_show_eval "$RM $rmfiles" 'exit_status=1' + done + + # Try to remove the ${objdir}s in the directories where we deleted files + for dir in $rmdirs; do + if test -d "$dir"; then + func_show_eval "rmdir $dir >/dev/null 2>&1" + fi + done + + exit $exit_status +} + +{ test "$opt_mode" = uninstall || test "$opt_mode" = clean; } && + func_mode_uninstall ${1+"$@"} + +test -z "$opt_mode" && { + help="$generic_help" + func_fatal_help "you must specify a MODE" +} + +test -z "$exec_cmd" && \ + func_fatal_help "invalid operation mode \`$opt_mode'" + +if test -n "$exec_cmd"; then + eval exec "$exec_cmd" + exit $EXIT_FAILURE +fi + +exit $exit_status + + +# The TAGs below are defined such that we never get into a situation +# in which we disable both kinds of libraries. Given conflicting +# choices, we go for a static library, that is the most portable, +# since we can't tell whether shared libraries were disabled because +# the user asked for that or because the platform doesn't support +# them. This is particularly important on AIX, because we don't +# support having both static and shared libraries enabled at the same +# time on that platform, so we default to a shared-only configuration. +# If a disable-shared tag is given, we'll fallback to a static-only +# configuration. But we'll never go from static-only to shared-only. + +# ### BEGIN LIBTOOL TAG CONFIG: disable-shared +build_libtool_libs=no +build_old_libs=yes +# ### END LIBTOOL TAG CONFIG: disable-shared + +# ### BEGIN LIBTOOL TAG CONFIG: disable-static +build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac` +# ### END LIBTOOL TAG CONFIG: disable-static + +# Local Variables: +# mode:shell-script +# sh-indentation:2 +# End: +# vi:sw=2 + diff --git a/src/spatialite/m4/libtool.m4 b/src/spatialite/m4/libtool.m4 new file mode 100644 index 0000000..88de383 --- /dev/null +++ b/src/spatialite/m4/libtool.m4 @@ -0,0 +1,7835 @@ +# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*- +# +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, +# Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +m4_define([_LT_COPYING], [dnl +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008, 2009, 2010 Free Software Foundation, +# Inc. +# Written by Gordon Matzigkeit, 1996 +# +# This file is part of GNU Libtool. +# +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. +# +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. +# +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +]) + +# serial 57 LT_INIT + + +# LT_PREREQ(VERSION) +# ------------------ +# Complain and exit if this libtool version is less that VERSION. +m4_defun([LT_PREREQ], +[m4_if(m4_version_compare(m4_defn([LT_PACKAGE_VERSION]), [$1]), -1, + [m4_default([$3], + [m4_fatal([Libtool version $1 or higher is required], + 63)])], + [$2])]) + + +# _LT_CHECK_BUILDDIR +# ------------------ +# Complain if the absolute build directory name contains unusual characters +m4_defun([_LT_CHECK_BUILDDIR], +[case `pwd` in + *\ * | *\ *) + AC_MSG_WARN([Libtool does not cope well with whitespace in `pwd`]) ;; +esac +]) + + +# LT_INIT([OPTIONS]) +# ------------------ +AC_DEFUN([LT_INIT], +[AC_PREREQ([2.58])dnl We use AC_INCLUDES_DEFAULT +AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +AC_BEFORE([$0], [LT_LANG])dnl +AC_BEFORE([$0], [LT_OUTPUT])dnl +AC_BEFORE([$0], [LTDL_INIT])dnl +m4_require([_LT_CHECK_BUILDDIR])dnl + +dnl Autoconf doesn't catch unexpanded LT_ macros by default: +m4_pattern_forbid([^_?LT_[A-Z_]+$])dnl +m4_pattern_allow([^(_LT_EOF|LT_DLGLOBAL|LT_DLLAZY_OR_NOW|LT_MULTI_MODULE)$])dnl +dnl aclocal doesn't pull ltoptions.m4, ltsugar.m4, or ltversion.m4 +dnl unless we require an AC_DEFUNed macro: +AC_REQUIRE([LTOPTIONS_VERSION])dnl +AC_REQUIRE([LTSUGAR_VERSION])dnl +AC_REQUIRE([LTVERSION_VERSION])dnl +AC_REQUIRE([LTOBSOLETE_VERSION])dnl +m4_require([_LT_PROG_LTMAIN])dnl + +_LT_SHELL_INIT([SHELL=${CONFIG_SHELL-/bin/sh}]) + +dnl Parse OPTIONS +_LT_SET_OPTIONS([$0], [$1]) + +# This can be used to rebuild libtool when needed +LIBTOOL_DEPS="$ltmain" + +# Always use our own libtool. +LIBTOOL='$(SHELL) $(top_builddir)/libtool' +AC_SUBST(LIBTOOL)dnl + +_LT_SETUP + +# Only expand once: +m4_define([LT_INIT]) +])# LT_INIT + +# Old names: +AU_ALIAS([AC_PROG_LIBTOOL], [LT_INIT]) +AU_ALIAS([AM_PROG_LIBTOOL], [LT_INIT]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PROG_LIBTOOL], []) +dnl AC_DEFUN([AM_PROG_LIBTOOL], []) + + +# _LT_CC_BASENAME(CC) +# ------------------- +# Calculate cc_basename. Skip known compiler wrappers and cross-prefix. +m4_defun([_LT_CC_BASENAME], +[for cc_temp in $1""; do + case $cc_temp in + compile | *[[\\/]]compile | ccache | *[[\\/]]ccache ) ;; + distcc | *[[\\/]]distcc | purify | *[[\\/]]purify ) ;; + \-*) ;; + *) break;; + esac +done +cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +]) + + +# _LT_FILEUTILS_DEFAULTS +# ---------------------- +# It is okay to use these file commands and assume they have been set +# sensibly after `m4_require([_LT_FILEUTILS_DEFAULTS])'. +m4_defun([_LT_FILEUTILS_DEFAULTS], +[: ${CP="cp -f"} +: ${MV="mv -f"} +: ${RM="rm -f"} +])# _LT_FILEUTILS_DEFAULTS + + +# _LT_SETUP +# --------- +m4_defun([_LT_SETUP], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_REQUIRE([_LT_PREPARE_SED_QUOTE_VARS])dnl +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH])dnl + +_LT_DECL([], [host_alias], [0], [The host system])dnl +_LT_DECL([], [host], [0])dnl +_LT_DECL([], [host_os], [0])dnl +dnl +_LT_DECL([], [build_alias], [0], [The build system])dnl +_LT_DECL([], [build], [0])dnl +_LT_DECL([], [build_os], [0])dnl +dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +dnl +AC_REQUIRE([AC_PROG_LN_S])dnl +test -z "$LN_S" && LN_S="ln -s" +_LT_DECL([], [LN_S], [1], [Whether we need soft or hard links])dnl +dnl +AC_REQUIRE([LT_CMD_MAX_LEN])dnl +_LT_DECL([objext], [ac_objext], [0], [Object file suffix (normally "o")])dnl +_LT_DECL([], [exeext], [0], [Executable file suffix (normally "")])dnl +dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +m4_require([_LT_PATH_CONVERSION_FUNCTIONS])dnl +m4_require([_LT_CMD_RELOAD])dnl +m4_require([_LT_CHECK_MAGIC_METHOD])dnl +m4_require([_LT_CHECK_SHAREDLIB_FROM_LINKLIB])dnl +m4_require([_LT_CMD_OLD_ARCHIVE])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_WITH_SYSROOT])dnl + +_LT_CONFIG_LIBTOOL_INIT([ +# See if we are running on zsh, and set the options which allow our +# commands through without removal of \ escapes INIT. +if test -n "\${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi +]) +if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST +fi + +_LT_CHECK_OBJDIR + +m4_require([_LT_TAG_COMPILER])dnl + +case $host_os in +aix3*) + # AIX sometimes has problems with the GCC collect2 program. For some + # reason, if we set the COLLECT_NAMES environment variable, the problems + # vanish in a puff of smoke. + if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES + fi + ;; +esac + +# Global variables: +ofile=libtool +can_build_shared=yes + +# All known linkers require a `.a' archive for static linking (except MSVC, +# which needs '.lib'). +libext=a + +with_gnu_ld="$lt_cv_prog_gnu_ld" + +old_CC="$CC" +old_CFLAGS="$CFLAGS" + +# Set sane defaults for various variables +test -z "$CC" && CC=cc +test -z "$LTCC" && LTCC=$CC +test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +test -z "$LD" && LD=ld +test -z "$ac_objext" && ac_objext=o + +_LT_CC_BASENAME([$compiler]) + +# Only perform the check for file, if the check method requires it +test -z "$MAGIC_CMD" && MAGIC_CMD=file +case $deplibs_check_method in +file_magic*) + if test "$file_magic_cmd" = '$MAGIC_CMD'; then + _LT_PATH_MAGIC + fi + ;; +esac + +# Use C for the default configuration in the libtool script +LT_SUPPORTED_TAG([CC]) +_LT_LANG_C_CONFIG +_LT_LANG_DEFAULT_CONFIG +_LT_CONFIG_COMMANDS +])# _LT_SETUP + + +# _LT_PREPARE_SED_QUOTE_VARS +# -------------------------- +# Define a few sed substitution that help us do robust quoting. +m4_defun([_LT_PREPARE_SED_QUOTE_VARS], +[# Backslashify metacharacters that are still active within +# double-quoted strings. +sed_quote_subst='s/\([["`$\\]]\)/\\\1/g' + +# Same as above, but do not quote variable references. +double_quote_subst='s/\([["`\\]]\)/\\\1/g' + +# Sed substitution to delay expansion of an escaped shell variable in a +# double_quote_subst'ed string. +delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' + +# Sed substitution to delay expansion of an escaped single quote. +delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' + +# Sed substitution to avoid accidental globbing in evaled expressions +no_glob_subst='s/\*/\\\*/g' +]) + +# _LT_PROG_LTMAIN +# --------------- +# Note that this code is called both from `configure', and `config.status' +# now that we use AC_CONFIG_COMMANDS to generate libtool. Notably, +# `config.status' has no value for ac_aux_dir unless we are using Automake, +# so we pass a copy along to make sure it has a sensible value anyway. +m4_defun([_LT_PROG_LTMAIN], +[m4_ifdef([AC_REQUIRE_AUX_FILE], [AC_REQUIRE_AUX_FILE([ltmain.sh])])dnl +_LT_CONFIG_LIBTOOL_INIT([ac_aux_dir='$ac_aux_dir']) +ltmain="$ac_aux_dir/ltmain.sh" +])# _LT_PROG_LTMAIN + + +## ------------------------------------- ## +## Accumulate code for creating libtool. ## +## ------------------------------------- ## + +# So that we can recreate a full libtool script including additional +# tags, we accumulate the chunks of code to send to AC_CONFIG_COMMANDS +# in macros and then make a single call at the end using the `libtool' +# label. + + +# _LT_CONFIG_LIBTOOL_INIT([INIT-COMMANDS]) +# ---------------------------------------- +# Register INIT-COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL_INIT], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_INIT], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_INIT]) + + +# _LT_CONFIG_LIBTOOL([COMMANDS]) +# ------------------------------ +# Register COMMANDS to be passed to AC_CONFIG_COMMANDS later. +m4_define([_LT_CONFIG_LIBTOOL], +[m4_ifval([$1], + [m4_append([_LT_OUTPUT_LIBTOOL_COMMANDS], + [$1 +])])]) + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS]) + + +# _LT_CONFIG_SAVE_COMMANDS([COMMANDS], [INIT_COMMANDS]) +# ----------------------------------------------------- +m4_defun([_LT_CONFIG_SAVE_COMMANDS], +[_LT_CONFIG_LIBTOOL([$1]) +_LT_CONFIG_LIBTOOL_INIT([$2]) +]) + + +# _LT_FORMAT_COMMENT([COMMENT]) +# ----------------------------- +# Add leading comment marks to the start of each line, and a trailing +# full-stop to the whole comment if one is not present already. +m4_define([_LT_FORMAT_COMMENT], +[m4_ifval([$1], [ +m4_bpatsubst([m4_bpatsubst([$1], [^ *], [# ])], + [['`$\]], [\\\&])]m4_bmatch([$1], [[!?.]$], [], [.]) +)]) + + + +## ------------------------ ## +## FIXME: Eliminate VARNAME ## +## ------------------------ ## + + +# _LT_DECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION], [IS-TAGGED?]) +# ------------------------------------------------------------------- +# CONFIGNAME is the name given to the value in the libtool script. +# VARNAME is the (base) name used in the configure script. +# VALUE may be 0, 1 or 2 for a computed quote escaped value based on +# VARNAME. Any other value will be used directly. +m4_define([_LT_DECL], +[lt_if_append_uniq([lt_decl_varnames], [$2], [, ], + [lt_dict_add_subkey([lt_decl_dict], [$2], [libtool_name], + [m4_ifval([$1], [$1], [$2])]) + lt_dict_add_subkey([lt_decl_dict], [$2], [value], [$3]) + m4_ifval([$4], + [lt_dict_add_subkey([lt_decl_dict], [$2], [description], [$4])]) + lt_dict_add_subkey([lt_decl_dict], [$2], + [tagged?], [m4_ifval([$5], [yes], [no])])]) +]) + + +# _LT_TAGDECL([CONFIGNAME], VARNAME, VALUE, [DESCRIPTION]) +# -------------------------------------------------------- +m4_define([_LT_TAGDECL], [_LT_DECL([$1], [$2], [$3], [$4], [yes])]) + + +# lt_decl_tag_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_tag_varnames], +[_lt_decl_filter([tagged?], [yes], $@)]) + + +# _lt_decl_filter(SUBKEY, VALUE, [SEPARATOR], [VARNAME1..]) +# --------------------------------------------------------- +m4_define([_lt_decl_filter], +[m4_case([$#], + [0], [m4_fatal([$0: too few arguments: $#])], + [1], [m4_fatal([$0: too few arguments: $#: $1])], + [2], [lt_dict_filter([lt_decl_dict], [$1], [$2], [], lt_decl_varnames)], + [3], [lt_dict_filter([lt_decl_dict], [$1], [$2], [$3], lt_decl_varnames)], + [lt_dict_filter([lt_decl_dict], $@)])[]dnl +]) + + +# lt_decl_quote_varnames([SEPARATOR], [VARNAME1...]) +# -------------------------------------------------- +m4_define([lt_decl_quote_varnames], +[_lt_decl_filter([value], [1], $@)]) + + +# lt_decl_dquote_varnames([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_dquote_varnames], +[_lt_decl_filter([value], [2], $@)]) + + +# lt_decl_varnames_tagged([SEPARATOR], [VARNAME1...]) +# --------------------------------------------------- +m4_define([lt_decl_varnames_tagged], +[m4_assert([$# <= 2])dnl +_$0(m4_quote(m4_default([$1], [[, ]])), + m4_ifval([$2], [[$2]], [m4_dquote(lt_decl_tag_varnames)]), + m4_split(m4_normalize(m4_quote(_LT_TAGS)), [ ]))]) +m4_define([_lt_decl_varnames_tagged], +[m4_ifval([$3], [lt_combine([$1], [$2], [_], $3)])]) + + +# lt_decl_all_varnames([SEPARATOR], [VARNAME1...]) +# ------------------------------------------------ +m4_define([lt_decl_all_varnames], +[_$0(m4_quote(m4_default([$1], [[, ]])), + m4_if([$2], [], + m4_quote(lt_decl_varnames), + m4_quote(m4_shift($@))))[]dnl +]) +m4_define([_lt_decl_all_varnames], +[lt_join($@, lt_decl_varnames_tagged([$1], + lt_decl_tag_varnames([[, ]], m4_shift($@))))dnl +]) + + +# _LT_CONFIG_STATUS_DECLARE([VARNAME]) +# ------------------------------------ +# Quote a variable value, and forward it to `config.status' so that its +# declaration there will have the same value as in `configure'. VARNAME +# must have a single quote delimited value for this to work. +m4_define([_LT_CONFIG_STATUS_DECLARE], +[$1='`$ECHO "$][$1" | $SED "$delay_single_quote_subst"`']) + + +# _LT_CONFIG_STATUS_DECLARATIONS +# ------------------------------ +# We delimit libtool config variables with single quotes, so when +# we write them to config.status, we have to be sure to quote all +# embedded single quotes properly. In configure, this macro expands +# each variable declared with _LT_DECL (and _LT_TAGDECL) into: +# +# ='`$ECHO "$" | $SED "$delay_single_quote_subst"`' +m4_defun([_LT_CONFIG_STATUS_DECLARATIONS], +[m4_foreach([_lt_var], m4_quote(lt_decl_all_varnames), + [m4_n([_LT_CONFIG_STATUS_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAGS +# ---------------- +# Output comment and list of tags supported by the script +m4_defun([_LT_LIBTOOL_TAGS], +[_LT_FORMAT_COMMENT([The names of the tagged configurations supported by this script])dnl +available_tags="_LT_TAGS"dnl +]) + + +# _LT_LIBTOOL_DECLARE(VARNAME, [TAG]) +# ----------------------------------- +# Extract the dictionary values for VARNAME (optionally with TAG) and +# expand to a commented shell variable setting: +# +# # Some comment about what VAR is for. +# visible_name=$lt_internal_name +m4_define([_LT_LIBTOOL_DECLARE], +[_LT_FORMAT_COMMENT(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], + [description])))[]dnl +m4_pushdef([_libtool_name], + m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [libtool_name])))[]dnl +m4_case(m4_quote(lt_dict_fetch([lt_decl_dict], [$1], [value])), + [0], [_libtool_name=[$]$1], + [1], [_libtool_name=$lt_[]$1], + [2], [_libtool_name=$lt_[]$1], + [_libtool_name=lt_dict_fetch([lt_decl_dict], [$1], [value])])[]dnl +m4_ifval([$2], [_$2])[]m4_popdef([_libtool_name])[]dnl +]) + + +# _LT_LIBTOOL_CONFIG_VARS +# ----------------------- +# Produce commented declarations of non-tagged libtool config variables +# suitable for insertion in the LIBTOOL CONFIG section of the `libtool' +# script. Tagged libtool config variables (even for the LIBTOOL CONFIG +# section) are produced by _LT_LIBTOOL_TAG_VARS. +m4_defun([_LT_LIBTOOL_CONFIG_VARS], +[m4_foreach([_lt_var], + m4_quote(_lt_decl_filter([tagged?], [no], [], lt_decl_varnames)), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var)])])]) + + +# _LT_LIBTOOL_TAG_VARS(TAG) +# ------------------------- +m4_define([_LT_LIBTOOL_TAG_VARS], +[m4_foreach([_lt_var], m4_quote(lt_decl_tag_varnames), + [m4_n([_LT_LIBTOOL_DECLARE(_lt_var, [$1])])])]) + + +# _LT_TAGVAR(VARNAME, [TAGNAME]) +# ------------------------------ +m4_define([_LT_TAGVAR], [m4_ifval([$2], [$1_$2], [$1])]) + + +# _LT_CONFIG_COMMANDS +# ------------------- +# Send accumulated output to $CONFIG_STATUS. Thanks to the lists of +# variables for single and double quote escaping we saved from calls +# to _LT_DECL, we can put quote escaped variables declarations +# into `config.status', and then the shell code to quote escape them in +# for loops in `config.status'. Finally, any additional code accumulated +# from calls to _LT_CONFIG_LIBTOOL_INIT is expanded. +m4_defun([_LT_CONFIG_COMMANDS], +[AC_PROVIDE_IFELSE([LT_OUTPUT], + dnl If the libtool generation code has been placed in $CONFIG_LT, + dnl instead of duplicating it all over again into config.status, + dnl then we will have config.status run $CONFIG_LT later, so it + dnl needs to know what name is stored there: + [AC_CONFIG_COMMANDS([libtool], + [$SHELL $CONFIG_LT || AS_EXIT(1)], [CONFIG_LT='$CONFIG_LT'])], + dnl If the libtool generation code is destined for config.status, + dnl expand the accumulated commands and init code now: + [AC_CONFIG_COMMANDS([libtool], + [_LT_OUTPUT_LIBTOOL_COMMANDS], [_LT_OUTPUT_LIBTOOL_COMMANDS_INIT])]) +])#_LT_CONFIG_COMMANDS + + +# Initialize. +m4_define([_LT_OUTPUT_LIBTOOL_COMMANDS_INIT], +[ + +# The HP-UX ksh and POSIX shell print the target directory to stdout +# if CDPATH is set. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +sed_quote_subst='$sed_quote_subst' +double_quote_subst='$double_quote_subst' +delay_variable_subst='$delay_variable_subst' +_LT_CONFIG_STATUS_DECLARATIONS +LTCC='$LTCC' +LTCFLAGS='$LTCFLAGS' +compiler='$compiler_DEFAULT' + +# A function that is used when there is no print builtin or printf. +func_fallback_echo () +{ + eval 'cat <<_LTECHO_EOF +\$[]1 +_LTECHO_EOF' +} + +# Quote evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_quote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +# Double-quote double-evaled strings. +for var in lt_decl_all_varnames([[ \ +]], lt_decl_dquote_varnames); do + case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in + *[[\\\\\\\`\\"\\\$]]*) + eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" + ;; + *) + eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" + ;; + esac +done + +_LT_OUTPUT_LIBTOOL_INIT +]) + +# _LT_GENERATED_FILE_INIT(FILE, [COMMENT]) +# ------------------------------------ +# Generate a child script FILE with all initialization necessary to +# reuse the environment learned by the parent script, and make the +# file executable. If COMMENT is supplied, it is inserted after the +# `#!' sequence but before initialization text begins. After this +# macro, additional text can be appended to FILE to form the body of +# the child script. The macro ends with non-zero status if the +# file could not be fully written (such as if the disk is full). +m4_ifdef([AS_INIT_GENERATED], +[m4_defun([_LT_GENERATED_FILE_INIT],[AS_INIT_GENERATED($@)])], +[m4_defun([_LT_GENERATED_FILE_INIT], +[m4_require([AS_PREPARE])]dnl +[m4_pushdef([AS_MESSAGE_LOG_FD])]dnl +[lt_write_fail=0 +cat >$1 <<_ASEOF || lt_write_fail=1 +#! $SHELL +# Generated by $as_me. +$2 +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$1 <<\_ASEOF || lt_write_fail=1 +AS_SHELL_SANITIZE +_AS_PREPARE +exec AS_MESSAGE_FD>&1 +_ASEOF +test $lt_write_fail = 0 && chmod +x $1[]dnl +m4_popdef([AS_MESSAGE_LOG_FD])])])# _LT_GENERATED_FILE_INIT + +# LT_OUTPUT +# --------- +# This macro allows early generation of the libtool script (before +# AC_OUTPUT is called), incase it is used in configure for compilation +# tests. +AC_DEFUN([LT_OUTPUT], +[: ${CONFIG_LT=./config.lt} +AC_MSG_NOTICE([creating $CONFIG_LT]) +_LT_GENERATED_FILE_INIT(["$CONFIG_LT"], +[# Run this file to recreate a libtool stub with the current configuration.]) + +cat >>"$CONFIG_LT" <<\_LTEOF +lt_cl_silent=false +exec AS_MESSAGE_LOG_FD>>config.log +{ + echo + AS_BOX([Running $as_me.]) +} >&AS_MESSAGE_LOG_FD + +lt_cl_help="\ +\`$as_me' creates a local libtool stub from the current configuration, +for use in further configure time tests before the real libtool is +generated. + +Usage: $[0] [[OPTIONS]] + + -h, --help print this help, then exit + -V, --version print version number, then exit + -q, --quiet do not print progress messages + -d, --debug don't remove temporary files + +Report bugs to ." + +lt_cl_version="\ +m4_ifset([AC_PACKAGE_NAME], [AC_PACKAGE_NAME ])config.lt[]dnl +m4_ifset([AC_PACKAGE_VERSION], [ AC_PACKAGE_VERSION]) +configured by $[0], generated by m4_PACKAGE_STRING. + +Copyright (C) 2010 Free Software Foundation, Inc. +This config.lt script is free software; the Free Software Foundation +gives unlimited permision to copy, distribute and modify it." + +while test $[#] != 0 +do + case $[1] in + --version | --v* | -V ) + echo "$lt_cl_version"; exit 0 ;; + --help | --h* | -h ) + echo "$lt_cl_help"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --quiet | --q* | --silent | --s* | -q ) + lt_cl_silent=: ;; + + -*) AC_MSG_ERROR([unrecognized option: $[1] +Try \`$[0] --help' for more information.]) ;; + + *) AC_MSG_ERROR([unrecognized argument: $[1] +Try \`$[0] --help' for more information.]) ;; + esac + shift +done + +if $lt_cl_silent; then + exec AS_MESSAGE_FD>/dev/null +fi +_LTEOF + +cat >>"$CONFIG_LT" <<_LTEOF +_LT_OUTPUT_LIBTOOL_COMMANDS_INIT +_LTEOF + +cat >>"$CONFIG_LT" <<\_LTEOF +AC_MSG_NOTICE([creating $ofile]) +_LT_OUTPUT_LIBTOOL_COMMANDS +AS_EXIT(0) +_LTEOF +chmod +x "$CONFIG_LT" + +# configure is writing to config.log, but config.lt does its own redirection, +# appending to config.log, which fails on DOS, as config.log is still kept +# open by configure. Here we exec the FD to /dev/null, effectively closing +# config.log, so it can be properly (re)opened and appended to by config.lt. +lt_cl_success=: +test "$silent" = yes && + lt_config_lt_args="$lt_config_lt_args --quiet" +exec AS_MESSAGE_LOG_FD>/dev/null +$SHELL "$CONFIG_LT" $lt_config_lt_args || lt_cl_success=false +exec AS_MESSAGE_LOG_FD>>config.log +$lt_cl_success || AS_EXIT(1) +])# LT_OUTPUT + + +# _LT_CONFIG(TAG) +# --------------- +# If TAG is the built-in tag, create an initial libtool script with a +# default configuration from the untagged config vars. Otherwise add code +# to config.status for appending the configuration named by TAG from the +# matching tagged config vars. +m4_defun([_LT_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_CONFIG_SAVE_COMMANDS([ + m4_define([_LT_TAG], m4_if([$1], [], [C], [$1]))dnl + m4_if(_LT_TAG, [C], [ + # See if we are running on zsh, and set the options which allow our + # commands through without removal of \ escapes. + if test -n "${ZSH_VERSION+set}" ; then + setopt NO_GLOB_SUBST + fi + + cfgfile="${ofile}T" + trap "$RM \"$cfgfile\"; exit 1" 1 2 15 + $RM "$cfgfile" + + cat <<_LT_EOF >> "$cfgfile" +#! $SHELL + +# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +# NOTE: Changes made to this file will be lost: look at ltmain.sh. +# +_LT_COPYING +_LT_LIBTOOL_TAGS + +# ### BEGIN LIBTOOL CONFIG +_LT_LIBTOOL_CONFIG_VARS +_LT_LIBTOOL_TAG_VARS +# ### END LIBTOOL CONFIG + +_LT_EOF + + case $host_os in + aix3*) + cat <<\_LT_EOF >> "$cfgfile" +# AIX sometimes has problems with the GCC collect2 program. For some +# reason, if we set the COLLECT_NAMES environment variable, the problems +# vanish in a puff of smoke. +if test "X${COLLECT_NAMES+set}" != Xset; then + COLLECT_NAMES= + export COLLECT_NAMES +fi +_LT_EOF + ;; + esac + + _LT_PROG_LTMAIN + + # We use sed instead of cat because bash on DJGPP gets confused if + # if finds mixed CR/LF and LF-only lines. Since sed operates in + # text mode, it properly converts lines to CR/LF. This bash problem + # is reportedly fixed, but why not run on old versions too? + sed '$q' "$ltmain" >> "$cfgfile" \ + || (rm -f "$cfgfile"; exit 1) + + _LT_PROG_REPLACE_SHELLFNS + + mv -f "$cfgfile" "$ofile" || + (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") + chmod +x "$ofile" +], +[cat <<_LT_EOF >> "$ofile" + +dnl Unfortunately we have to use $1 here, since _LT_TAG is not expanded +dnl in a comment (ie after a #). +# ### BEGIN LIBTOOL TAG CONFIG: $1 +_LT_LIBTOOL_TAG_VARS(_LT_TAG) +# ### END LIBTOOL TAG CONFIG: $1 +_LT_EOF +])dnl /m4_if +], +[m4_if([$1], [], [ + PACKAGE='$PACKAGE' + VERSION='$VERSION' + TIMESTAMP='$TIMESTAMP' + RM='$RM' + ofile='$ofile'], []) +])dnl /_LT_CONFIG_SAVE_COMMANDS +])# _LT_CONFIG + + +# LT_SUPPORTED_TAG(TAG) +# --------------------- +# Trace this macro to discover what tags are supported by the libtool +# --tag option, using: +# autoconf --trace 'LT_SUPPORTED_TAG:$1' +AC_DEFUN([LT_SUPPORTED_TAG], []) + + +# C support is built-in for now +m4_define([_LT_LANG_C_enabled], []) +m4_define([_LT_TAGS], []) + + +# LT_LANG(LANG) +# ------------- +# Enable libtool support for the given language if not already enabled. +AC_DEFUN([LT_LANG], +[AC_BEFORE([$0], [LT_OUTPUT])dnl +m4_case([$1], + [C], [_LT_LANG(C)], + [C++], [_LT_LANG(CXX)], + [Java], [_LT_LANG(GCJ)], + [Fortran 77], [_LT_LANG(F77)], + [Fortran], [_LT_LANG(FC)], + [Windows Resource], [_LT_LANG(RC)], + [m4_ifdef([_LT_LANG_]$1[_CONFIG], + [_LT_LANG($1)], + [m4_fatal([$0: unsupported language: "$1"])])])dnl +])# LT_LANG + + +# _LT_LANG(LANGNAME) +# ------------------ +m4_defun([_LT_LANG], +[m4_ifdef([_LT_LANG_]$1[_enabled], [], + [LT_SUPPORTED_TAG([$1])dnl + m4_append([_LT_TAGS], [$1 ])dnl + m4_define([_LT_LANG_]$1[_enabled], [])dnl + _LT_LANG_$1_CONFIG($1)])dnl +])# _LT_LANG + + +# _LT_LANG_DEFAULT_CONFIG +# ----------------------- +m4_defun([_LT_LANG_DEFAULT_CONFIG], +[AC_PROVIDE_IFELSE([AC_PROG_CXX], + [LT_LANG(CXX)], + [m4_define([AC_PROG_CXX], defn([AC_PROG_CXX])[LT_LANG(CXX)])]) + +AC_PROVIDE_IFELSE([AC_PROG_F77], + [LT_LANG(F77)], + [m4_define([AC_PROG_F77], defn([AC_PROG_F77])[LT_LANG(F77)])]) + +AC_PROVIDE_IFELSE([AC_PROG_FC], + [LT_LANG(FC)], + [m4_define([AC_PROG_FC], defn([AC_PROG_FC])[LT_LANG(FC)])]) + +dnl The call to [A][M_PROG_GCJ] is quoted like that to stop aclocal +dnl pulling things in needlessly. +AC_PROVIDE_IFELSE([AC_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([A][M_PROG_GCJ], + [LT_LANG(GCJ)], + [AC_PROVIDE_IFELSE([LT_PROG_GCJ], + [LT_LANG(GCJ)], + [m4_ifdef([AC_PROG_GCJ], + [m4_define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([A][M_PROG_GCJ], + [m4_define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[LT_LANG(GCJ)])]) + m4_ifdef([LT_PROG_GCJ], + [m4_define([LT_PROG_GCJ], defn([LT_PROG_GCJ])[LT_LANG(GCJ)])])])])]) + +AC_PROVIDE_IFELSE([LT_PROG_RC], + [LT_LANG(RC)], + [m4_define([LT_PROG_RC], defn([LT_PROG_RC])[LT_LANG(RC)])]) +])# _LT_LANG_DEFAULT_CONFIG + +# Obsolete macros: +AU_DEFUN([AC_LIBTOOL_CXX], [LT_LANG(C++)]) +AU_DEFUN([AC_LIBTOOL_F77], [LT_LANG(Fortran 77)]) +AU_DEFUN([AC_LIBTOOL_FC], [LT_LANG(Fortran)]) +AU_DEFUN([AC_LIBTOOL_GCJ], [LT_LANG(Java)]) +AU_DEFUN([AC_LIBTOOL_RC], [LT_LANG(Windows Resource)]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_CXX], []) +dnl AC_DEFUN([AC_LIBTOOL_F77], []) +dnl AC_DEFUN([AC_LIBTOOL_FC], []) +dnl AC_DEFUN([AC_LIBTOOL_GCJ], []) +dnl AC_DEFUN([AC_LIBTOOL_RC], []) + + +# _LT_TAG_COMPILER +# ---------------- +m4_defun([_LT_TAG_COMPILER], +[AC_REQUIRE([AC_PROG_CC])dnl + +_LT_DECL([LTCC], [CC], [1], [A C compiler])dnl +_LT_DECL([LTCFLAGS], [CFLAGS], [1], [LTCC compiler flags])dnl +_LT_TAGDECL([CC], [compiler], [1], [A language specific compiler])dnl +_LT_TAGDECL([with_gcc], [GCC], [0], [Is the compiler the GNU compiler?])dnl + +# If no C compiler was specified, use CC. +LTCC=${LTCC-"$CC"} + +# If no C compiler flags were specified, use CFLAGS. +LTCFLAGS=${LTCFLAGS-"$CFLAGS"} + +# Allow CC to be a program name with arguments. +compiler=$CC +])# _LT_TAG_COMPILER + + +# _LT_COMPILER_BOILERPLATE +# ------------------------ +# Check for compiler boilerplate output or warnings with +# the simple compiler test code. +m4_defun([_LT_COMPILER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_compile_test_code" >conftest.$ac_ext +eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_compiler_boilerplate=`cat conftest.err` +$RM conftest* +])# _LT_COMPILER_BOILERPLATE + + +# _LT_LINKER_BOILERPLATE +# ---------------------- +# Check for linker boilerplate output or warnings with +# the simple link test code. +m4_defun([_LT_LINKER_BOILERPLATE], +[m4_require([_LT_DECL_SED])dnl +ac_outfile=conftest.$ac_objext +echo "$lt_simple_link_test_code" >conftest.$ac_ext +eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +_lt_linker_boilerplate=`cat conftest.err` +$RM -r conftest* +])# _LT_LINKER_BOILERPLATE + +# _LT_REQUIRED_DARWIN_CHECKS +# ------------------------- +m4_defun_once([_LT_REQUIRED_DARWIN_CHECKS],[ + case $host_os in + rhapsody* | darwin*) + AC_CHECK_TOOL([DSYMUTIL], [dsymutil], [:]) + AC_CHECK_TOOL([NMEDIT], [nmedit], [:]) + AC_CHECK_TOOL([LIPO], [lipo], [:]) + AC_CHECK_TOOL([OTOOL], [otool], [:]) + AC_CHECK_TOOL([OTOOL64], [otool64], [:]) + _LT_DECL([], [DSYMUTIL], [1], + [Tool to manipulate archived DWARF debug symbol files on Mac OS X]) + _LT_DECL([], [NMEDIT], [1], + [Tool to change global to local symbols on Mac OS X]) + _LT_DECL([], [LIPO], [1], + [Tool to manipulate fat objects and archives on Mac OS X]) + _LT_DECL([], [OTOOL], [1], + [ldd/readelf like tool for Mach-O binaries on Mac OS X]) + _LT_DECL([], [OTOOL64], [1], + [ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4]) + + AC_CACHE_CHECK([for -single_module linker flag],[lt_cv_apple_cc_single_mod], + [lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi]) + AC_CACHE_CHECK([for -exported_symbols_list linker flag], + [lt_cv_ld_exported_symbols_list], + [lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [lt_cv_ld_exported_symbols_list=yes], + [lt_cv_ld_exported_symbols_list=no]) + LDFLAGS="$save_LDFLAGS" + ]) + AC_CACHE_CHECK([for -force_load linker flag],[lt_cv_ld_force_load], + [lt_cv_ld_force_load=no + cat > conftest.c << _LT_EOF +int forced_loaded() { return 2;} +_LT_EOF + echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&AS_MESSAGE_LOG_FD + echo "$AR cru libconftest.a conftest.o" >&AS_MESSAGE_LOG_FD + $AR cru libconftest.a conftest.o 2>&AS_MESSAGE_LOG_FD + echo "$RANLIB libconftest.a" >&AS_MESSAGE_LOG_FD + $RANLIB libconftest.a 2>&AS_MESSAGE_LOG_FD + cat > conftest.c << _LT_EOF +int main() { return 0;} +_LT_EOF + echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&AS_MESSAGE_LOG_FD + $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err + _lt_result=$? + if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then + lt_cv_ld_force_load=yes + else + cat conftest.err >&AS_MESSAGE_LOG_FD + fi + rm -f conftest.err libconftest.a conftest conftest.c + rm -rf conftest.dSYM + ]) + case $host_os in + rhapsody* | darwin1.[[012]]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[[91]]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[[012]]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac +]) + + +# _LT_DARWIN_LINKER_FEATURES +# -------------------------- +# Checks for linker and compiler features on darwin +m4_defun([_LT_DARWIN_LINKER_FEATURES], +[ + m4_require([_LT_REQUIRED_DARWIN_CHECKS]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_automatic, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + if test "$lt_cv_ld_force_load" = "yes"; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='' + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=func_echo_all + _LT_TAGVAR(archive_cmds, $1)="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + _LT_TAGVAR(module_cmds, $1)="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + _LT_TAGVAR(module_expsym_cmds, $1)="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + m4_if([$1], [CXX], +[ if test "$lt_cv_apple_cc_single_mod" != "yes"; then + _LT_TAGVAR(archive_cmds, $1)="\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dsymutil}" + _LT_TAGVAR(archive_expsym_cmds, $1)="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -r -keep_private_externs -nostdlib -o \${lib}-master.o \$libobjs~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \${lib}-master.o \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring${_lt_dar_export_syms}${_lt_dsymutil}" + fi +],[]) + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi +]) + +# _LT_SYS_MODULE_PATH_AIX([TAGNAME]) +# ---------------------------------- +# Links a minimal program and checks the executable +# for the system default hardcoded library path. In most cases, +# this is /usr/lib:/lib, but when the MPI compilers are used +# the location of the communication and MPI libs are included too. +# If we don't find anything, use the default library path according +# to the aix ld manual. +# Store the results from the different compilers for each TAGNAME. +# Allow to override them for all tags through lt_cv_aix_libpath. +m4_defun([_LT_SYS_MODULE_PATH_AIX], +[m4_require([_LT_DECL_SED])dnl +if test "${lt_cv_aix_libpath+set}" = set; then + aix_libpath=$lt_cv_aix_libpath +else + AC_CACHE_VAL([_LT_TAGVAR([lt_cv_aix_libpath_], [$1])], + [AC_LINK_IFELSE([AC_LANG_PROGRAM],[ + lt_aix_libpath_sed='[ + /Import File Strings/,/^$/ { + /^0/ { + s/^0 *\([^ ]*\) *$/\1/ + p + } + }]' + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + # Check for a 64-bit object if we didn't find anything. + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` + fi],[]) + if test -z "$_LT_TAGVAR([lt_cv_aix_libpath_], [$1])"; then + _LT_TAGVAR([lt_cv_aix_libpath_], [$1])="/usr/lib:/lib" + fi + ]) + aix_libpath=$_LT_TAGVAR([lt_cv_aix_libpath_], [$1]) +fi +])# _LT_SYS_MODULE_PATH_AIX + + +# _LT_SHELL_INIT(ARG) +# ------------------- +m4_define([_LT_SHELL_INIT], +[m4_divert_text([M4SH-INIT], [$1 +])])# _LT_SHELL_INIT + + + +# _LT_PROG_ECHO_BACKSLASH +# ----------------------- +# Find how we can fake an echo command that does not interpret backslash. +# In particular, with Autoconf 2.60 or later we add some code to the start +# of the generated configure script which will find a shell with a builtin +# printf (which we can use as an echo command). +m4_defun([_LT_PROG_ECHO_BACKSLASH], +[ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + +AC_MSG_CHECKING([how to print strings]) +# Test print first, because it will be a builtin if present. +if test "X`( print -r -- -n ) 2>/dev/null`" = X-n && \ + test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='print -r --' +elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then + ECHO='printf %s\n' +else + # Use this function as a fallback that always works. + func_fallback_echo () + { + eval 'cat <<_LTECHO_EOF +$[]1 +_LTECHO_EOF' + } + ECHO='func_fallback_echo' +fi + +# func_echo_all arg... +# Invoke $ECHO with all args, space-separated. +func_echo_all () +{ + $ECHO "$*" +} + +case "$ECHO" in + printf*) AC_MSG_RESULT([printf]) ;; + print*) AC_MSG_RESULT([print -r]) ;; + *) AC_MSG_RESULT([cat]) ;; +esac + +m4_ifdef([_AS_DETECT_SUGGESTED], +[_AS_DETECT_SUGGESTED([ + test -n "${ZSH_VERSION+set}${BASH_VERSION+set}" || ( + ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO + ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO + PATH=/empty FPATH=/empty; export PATH FPATH + test "X`printf %s $ECHO`" = "X$ECHO" \ + || test "X`print -r -- $ECHO`" = "X$ECHO" )])]) + +_LT_DECL([], [SHELL], [1], [Shell to use when invoking shell scripts]) +_LT_DECL([], [ECHO], [1], [An echo program that protects backslashes]) +])# _LT_PROG_ECHO_BACKSLASH + + +# _LT_WITH_SYSROOT +# ---------------- +AC_DEFUN([_LT_WITH_SYSROOT], +[AC_MSG_CHECKING([for sysroot]) +AC_ARG_WITH([sysroot], +[ --with-sysroot[=DIR] Search for dependent libraries within DIR + (or the compiler's sysroot if not specified).], +[], [with_sysroot=no]) + +dnl lt_sysroot will always be passed unquoted. We quote it here +dnl in case the user passed a directory name. +lt_sysroot= +case ${with_sysroot} in #( + yes) + if test "$GCC" = yes; then + lt_sysroot=`$CC --print-sysroot 2>/dev/null` + fi + ;; #( + /*) + lt_sysroot=`echo "$with_sysroot" | sed -e "$sed_quote_subst"` + ;; #( + no|'') + ;; #( + *) + AC_MSG_RESULT([${with_sysroot}]) + AC_MSG_ERROR([The sysroot must be an absolute path.]) + ;; +esac + + AC_MSG_RESULT([${lt_sysroot:-no}]) +_LT_DECL([], [lt_sysroot], [0], [The root where to search for ]dnl +[dependent libraries, and in which our libraries should be installed.])]) + +# _LT_ENABLE_LOCK +# --------------- +m4_defun([_LT_ENABLE_LOCK], +[AC_ARG_ENABLE([libtool-lock], + [AS_HELP_STRING([--disable-libtool-lock], + [avoid locking (might break parallel builds)])]) +test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes + +# Some flags need to be propagated to the compiler or linker for good +# libtool support. +case $host in +ia64-*-hpux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.$ac_objext` in + *ELF-32*) + HPUX_IA64_MODE="32" + ;; + *ELF-64*) + HPUX_IA64_MODE="64" + ;; + esac + fi + rm -rf conftest* + ;; +*-*-irix6*) + # Find out which ABI we are using. + echo '[#]line '$LINENO' "configure"' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + if test "$lt_cv_prog_gnu_ld" = yes; then + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -melf32bsmip" + ;; + *N32*) + LD="${LD-ld} -melf32bmipn32" + ;; + *64-bit*) + LD="${LD-ld} -melf64bmip" + ;; + esac + else + case `/usr/bin/file conftest.$ac_objext` in + *32-bit*) + LD="${LD-ld} -32" + ;; + *N32*) + LD="${LD-ld} -n32" + ;; + *64-bit*) + LD="${LD-ld} -64" + ;; + esac + fi + fi + rm -rf conftest* + ;; + +x86_64-*kfreebsd*-gnu|x86_64-*linux*|ppc*-*linux*|powerpc*-*linux*| \ +s390*-*linux*|s390*-*tpf*|sparc*-*linux*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *32-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_i386_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_i386" + ;; + ppc64-*linux*|powerpc64-*linux*) + LD="${LD-ld} -m elf32ppclinux" + ;; + s390x-*linux*) + LD="${LD-ld} -m elf_s390" + ;; + sparc64-*linux*) + LD="${LD-ld} -m elf32_sparc" + ;; + esac + ;; + *64-bit*) + case $host in + x86_64-*kfreebsd*-gnu) + LD="${LD-ld} -m elf_x86_64_fbsd" + ;; + x86_64-*linux*) + LD="${LD-ld} -m elf_x86_64" + ;; + ppc*-*linux*|powerpc*-*linux*) + LD="${LD-ld} -m elf64ppc" + ;; + s390*-*linux*|s390*-*tpf*) + LD="${LD-ld} -m elf64_s390" + ;; + sparc*-*linux*) + LD="${LD-ld} -m elf64_sparc" + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; + +*-*-sco3.2v5*) + # On SCO OpenServer 5, we need -belf to get full-featured binaries. + SAVE_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS -belf" + AC_CACHE_CHECK([whether the C compiler needs -belf], lt_cv_cc_needs_belf, + [AC_LANG_PUSH(C) + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]],[[]])],[lt_cv_cc_needs_belf=yes],[lt_cv_cc_needs_belf=no]) + AC_LANG_POP]) + if test x"$lt_cv_cc_needs_belf" != x"yes"; then + # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf + CFLAGS="$SAVE_CFLAGS" + fi + ;; +sparc*-*solaris*) + # Find out which ABI we are using. + echo 'int i;' > conftest.$ac_ext + if AC_TRY_EVAL(ac_compile); then + case `/usr/bin/file conftest.o` in + *64-bit*) + case $lt_cv_prog_gnu_ld in + yes*) LD="${LD-ld} -m elf64_sparc" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; + esac + ;; + esac + fi + rm -rf conftest* + ;; +esac + +need_locks="$enable_libtool_lock" +])# _LT_ENABLE_LOCK + + +# _LT_PROG_AR +# ----------- +m4_defun([_LT_PROG_AR], +[AC_CHECK_TOOLS(AR, [ar], false) +: ${AR=ar} +: ${AR_FLAGS=cru} +_LT_DECL([], [AR], [1], [The archiver]) +_LT_DECL([], [AR_FLAGS], [1], [Flags to create an archive]) + +AC_CACHE_CHECK([for archiver @FILE support], [lt_cv_ar_at_file], + [lt_cv_ar_at_file=no + AC_COMPILE_IFELSE([AC_LANG_PROGRAM], + [echo conftest.$ac_objext > conftest.lst + lt_ar_try='$AR $AR_FLAGS libconftest.a @conftest.lst >&AS_MESSAGE_LOG_FD' + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -eq 0; then + # Ensure the archiver fails upon bogus file names. + rm -f conftest.$ac_objext libconftest.a + AC_TRY_EVAL([lt_ar_try]) + if test "$ac_status" -ne 0; then + lt_cv_ar_at_file=@ + fi + fi + rm -f conftest.* libconftest.a + ]) + ]) + +if test "x$lt_cv_ar_at_file" = xno; then + archiver_list_spec= +else + archiver_list_spec=$lt_cv_ar_at_file +fi +_LT_DECL([], [archiver_list_spec], [1], + [How to feed a file listing to the archiver]) +])# _LT_PROG_AR + + +# _LT_CMD_OLD_ARCHIVE +# ------------------- +m4_defun([_LT_CMD_OLD_ARCHIVE], +[_LT_PROG_AR + +AC_CHECK_TOOL(STRIP, strip, :) +test -z "$STRIP" && STRIP=: +_LT_DECL([], [STRIP], [1], [A symbol stripping program]) + +AC_CHECK_TOOL(RANLIB, ranlib, :) +test -z "$RANLIB" && RANLIB=: +_LT_DECL([], [RANLIB], [1], + [Commands used to install an old-style archive]) + +# Determine commands to create old-style static archives. +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +old_postinstall_cmds='chmod 644 $oldlib' +old_postuninstall_cmds= + +if test -n "$RANLIB"; then + case $host_os in + openbsd*) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" + ;; + *) + old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" + ;; + esac + old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +fi + +case $host_os in + darwin*) + lock_old_archive_extraction=yes ;; + *) + lock_old_archive_extraction=no ;; +esac +_LT_DECL([], [old_postinstall_cmds], [2]) +_LT_DECL([], [old_postuninstall_cmds], [2]) +_LT_TAGDECL([], [old_archive_cmds], [2], + [Commands used to build an old-style archive]) +_LT_DECL([], [lock_old_archive_extraction], [0], + [Whether to use a lock for old archive extraction]) +])# _LT_CMD_OLD_ARCHIVE + + +# _LT_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------------------- +# Check whether the given compiler option works +AC_DEFUN([_LT_COMPILER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + m4_if([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4]) + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + lt_compiler_flag="$3" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + # The option is referenced via a variable to avoid confusing sed. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>conftest.err) + ac_status=$? + cat conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s "$ac_outfile"; then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings other than the usual output. + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + fi + $RM conftest* +]) + +if test x"[$]$2" = xyes; then + m4_if([$5], , :, [$5]) +else + m4_if([$6], , :, [$6]) +fi +])# _LT_COMPILER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_COMPILER_OPTION], [_LT_COMPILER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION], []) + + +# _LT_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS, +# [ACTION-SUCCESS], [ACTION-FAILURE]) +# ---------------------------------------------------- +# Check whether the given linker option works +AC_DEFUN([_LT_LINKER_OPTION], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_SED])dnl +AC_CACHE_CHECK([$1], [$2], + [$2=no + save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS $3" + echo "$lt_simple_link_test_code" > conftest.$ac_ext + if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then + # The linker can only warn and ignore the option if not recognized + # So say no if there are warnings + if test -s conftest.err; then + # Append any errors to the config.log. + cat conftest.err 1>&AS_MESSAGE_LOG_FD + $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp + $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 + if diff conftest.exp conftest.er2 >/dev/null; then + $2=yes + fi + else + $2=yes + fi + fi + $RM -r conftest* + LDFLAGS="$save_LDFLAGS" +]) + +if test x"[$]$2" = xyes; then + m4_if([$4], , :, [$4]) +else + m4_if([$5], , :, [$5]) +fi +])# _LT_LINKER_OPTION + +# Old name: +AU_ALIAS([AC_LIBTOOL_LINKER_OPTION], [_LT_LINKER_OPTION]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_LINKER_OPTION], []) + + +# LT_CMD_MAX_LEN +#--------------- +AC_DEFUN([LT_CMD_MAX_LEN], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +# find the maximum length of command line arguments +AC_MSG_CHECKING([the maximum length of command line arguments]) +AC_CACHE_VAL([lt_cv_sys_max_cmd_len], [dnl + i=0 + teststring="ABCD" + + case $build_os in + msdosdjgpp*) + # On DJGPP, this test can blow up pretty badly due to problems in libc + # (any single argument exceeding 2000 bytes causes a buffer overrun + # during glob expansion). Even if it were fixed, the result of this + # check would be larger than it should be. + lt_cv_sys_max_cmd_len=12288; # 12K is about right + ;; + + gnu*) + # Under GNU Hurd, this test is not required because there is + # no limit to the length of command line arguments. + # Libtool will interpret -1 as no limit whatsoever + lt_cv_sys_max_cmd_len=-1; + ;; + + cygwin* | mingw* | cegcc*) + # On Win9x/ME, this test blows up -- it succeeds, but takes + # about 5 minutes as the teststring grows exponentially. + # Worse, since 9x/ME are not pre-emptively multitasking, + # you end up with a "frozen" computer, even though with patience + # the test eventually succeeds (with a max line length of 256k). + # Instead, let's just punt: use the minimum linelength reported by + # all of the supported platforms: 8192 (on NT/2K/XP). + lt_cv_sys_max_cmd_len=8192; + ;; + + mint*) + # On MiNT this can take a long time and run out of memory. + lt_cv_sys_max_cmd_len=8192; + ;; + + amigaos*) + # On AmigaOS with pdksh, this test takes hours, literally. + # So we just punt and use a minimum line length of 8192. + lt_cv_sys_max_cmd_len=8192; + ;; + + netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) + # This has been around since 386BSD, at least. Likely further. + if test -x /sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` + elif test -x /usr/sbin/sysctl; then + lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` + else + lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs + fi + # And add a safety zone + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + ;; + + interix*) + # We know the value 262144 and hardcode it with a safety zone (like BSD) + lt_cv_sys_max_cmd_len=196608 + ;; + + osf*) + # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure + # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not + # nice to cause kernel panics so lets avoid the loop below. + # First set a reasonable default. + lt_cv_sys_max_cmd_len=16384 + # + if test -x /sbin/sysconfig; then + case `/sbin/sysconfig -q proc exec_disable_arg_limit` in + *1*) lt_cv_sys_max_cmd_len=-1 ;; + esac + fi + ;; + sco3.2v5*) + lt_cv_sys_max_cmd_len=102400 + ;; + sysv5* | sco5v6* | sysv4.2uw2*) + kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` + if test -n "$kargmax"; then + lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[[ ]]//'` + else + lt_cv_sys_max_cmd_len=32768 + fi + ;; + *) + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` + else + # Make teststring a little bigger before we do anything with it. + # a 1K string should be a reasonable start. + for i in 1 2 3 4 5 6 7 8 ; do + teststring=$teststring$teststring + done + SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} + # If test is not a shell built-in, we'll probably end up computing a + # maximum length that is only half of the actual maximum length, but + # we can't tell. + while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ + = "X$teststring$teststring"; } >/dev/null 2>&1 && + test $i != 17 # 1/2 MB should be enough + do + i=`expr $i + 1` + teststring=$teststring$teststring + done + # Only check the string length outside the loop. + lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` + teststring= + # Add a significant safety factor because C++ compilers can tack on + # massive amounts of additional arguments before passing them to the + # linker. It appears as though 1/2 is a usable value. + lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` + fi + ;; + esac +]) +if test -n $lt_cv_sys_max_cmd_len ; then + AC_MSG_RESULT($lt_cv_sys_max_cmd_len) +else + AC_MSG_RESULT(none) +fi +max_cmd_len=$lt_cv_sys_max_cmd_len +_LT_DECL([], [max_cmd_len], [0], + [What is the maximum length of a command?]) +])# LT_CMD_MAX_LEN + +# Old name: +AU_ALIAS([AC_LIBTOOL_SYS_MAX_CMD_LEN], [LT_CMD_MAX_LEN]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN], []) + + +# _LT_HEADER_DLFCN +# ---------------- +m4_defun([_LT_HEADER_DLFCN], +[AC_CHECK_HEADERS([dlfcn.h], [], [], [AC_INCLUDES_DEFAULT])dnl +])# _LT_HEADER_DLFCN + + +# _LT_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE, +# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING) +# ---------------------------------------------------------------- +m4_defun([_LT_TRY_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "$cross_compiling" = yes; then : + [$4] +else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +[#line $LINENO "configure" +#include "confdefs.h" + +#if HAVE_DLFCN_H +#include +#endif + +#include + +#ifdef RTLD_GLOBAL +# define LT_DLGLOBAL RTLD_GLOBAL +#else +# ifdef DL_GLOBAL +# define LT_DLGLOBAL DL_GLOBAL +# else +# define LT_DLGLOBAL 0 +# endif +#endif + +/* We may have to define LT_DLLAZY_OR_NOW in the command line if we + find out it does not work in some platform. */ +#ifndef LT_DLLAZY_OR_NOW +# ifdef RTLD_LAZY +# define LT_DLLAZY_OR_NOW RTLD_LAZY +# else +# ifdef DL_LAZY +# define LT_DLLAZY_OR_NOW DL_LAZY +# else +# ifdef RTLD_NOW +# define LT_DLLAZY_OR_NOW RTLD_NOW +# else +# ifdef DL_NOW +# define LT_DLLAZY_OR_NOW DL_NOW +# else +# define LT_DLLAZY_OR_NOW 0 +# endif +# endif +# endif +# endif +#endif + +/* When -fvisbility=hidden is used, assume the code has been annotated + correspondingly for the symbols needed. */ +#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +int fnord () __attribute__((visibility("default"))); +#endif + +int fnord () { return 42; } +int main () +{ + void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); + int status = $lt_dlunknown; + + if (self) + { + if (dlsym (self,"fnord")) status = $lt_dlno_uscore; + else + { + if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; + else puts (dlerror ()); + } + /* dlclose (self); */ + } + else + puts (dlerror ()); + + return status; +}] +_LT_EOF + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext} 2>/dev/null; then + (./conftest; exit; ) >&AS_MESSAGE_LOG_FD 2>/dev/null + lt_status=$? + case x$lt_status in + x$lt_dlno_uscore) $1 ;; + x$lt_dlneed_uscore) $2 ;; + x$lt_dlunknown|x*) $3 ;; + esac + else : + # compilation failed + $3 + fi +fi +rm -fr conftest* +])# _LT_TRY_DLOPEN_SELF + + +# LT_SYS_DLOPEN_SELF +# ------------------ +AC_DEFUN([LT_SYS_DLOPEN_SELF], +[m4_require([_LT_HEADER_DLFCN])dnl +if test "x$enable_dlopen" != xyes; then + enable_dlopen=unknown + enable_dlopen_self=unknown + enable_dlopen_self_static=unknown +else + lt_cv_dlopen=no + lt_cv_dlopen_libs= + + case $host_os in + beos*) + lt_cv_dlopen="load_add_on" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ;; + + mingw* | pw32* | cegcc*) + lt_cv_dlopen="LoadLibrary" + lt_cv_dlopen_libs= + ;; + + cygwin*) + lt_cv_dlopen="dlopen" + lt_cv_dlopen_libs= + ;; + + darwin*) + # if libdl is installed we need to link against it + AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"],[ + lt_cv_dlopen="dyld" + lt_cv_dlopen_libs= + lt_cv_dlopen_self=yes + ]) + ;; + + *) + AC_CHECK_FUNC([shl_load], + [lt_cv_dlopen="shl_load"], + [AC_CHECK_LIB([dld], [shl_load], + [lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld"], + [AC_CHECK_FUNC([dlopen], + [lt_cv_dlopen="dlopen"], + [AC_CHECK_LIB([dl], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"], + [AC_CHECK_LIB([svld], [dlopen], + [lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"], + [AC_CHECK_LIB([dld], [dld_link], + [lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld"]) + ]) + ]) + ]) + ]) + ]) + ;; + esac + + if test "x$lt_cv_dlopen" != xno; then + enable_dlopen=yes + else + enable_dlopen=no + fi + + case $lt_cv_dlopen in + dlopen) + save_CPPFLAGS="$CPPFLAGS" + test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" + + save_LDFLAGS="$LDFLAGS" + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" + + save_LIBS="$LIBS" + LIBS="$lt_cv_dlopen_libs $LIBS" + + AC_CACHE_CHECK([whether a program can dlopen itself], + lt_cv_dlopen_self, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self=yes, lt_cv_dlopen_self=yes, + lt_cv_dlopen_self=no, lt_cv_dlopen_self=cross) + ]) + + if test "x$lt_cv_dlopen_self" = xyes; then + wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" + AC_CACHE_CHECK([whether a statically linked program can dlopen itself], + lt_cv_dlopen_self_static, [dnl + _LT_TRY_DLOPEN_SELF( + lt_cv_dlopen_self_static=yes, lt_cv_dlopen_self_static=yes, + lt_cv_dlopen_self_static=no, lt_cv_dlopen_self_static=cross) + ]) + fi + + CPPFLAGS="$save_CPPFLAGS" + LDFLAGS="$save_LDFLAGS" + LIBS="$save_LIBS" + ;; + esac + + case $lt_cv_dlopen_self in + yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; + *) enable_dlopen_self=unknown ;; + esac + + case $lt_cv_dlopen_self_static in + yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; + *) enable_dlopen_self_static=unknown ;; + esac +fi +_LT_DECL([dlopen_support], [enable_dlopen], [0], + [Whether dlopen is supported]) +_LT_DECL([dlopen_self], [enable_dlopen_self], [0], + [Whether dlopen of programs is supported]) +_LT_DECL([dlopen_self_static], [enable_dlopen_self_static], [0], + [Whether dlopen of statically linked programs is supported]) +])# LT_SYS_DLOPEN_SELF + +# Old name: +AU_ALIAS([AC_LIBTOOL_DLOPEN_SELF], [LT_SYS_DLOPEN_SELF]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF], []) + + +# _LT_COMPILER_C_O([TAGNAME]) +# --------------------------- +# Check to see if options -c and -o are simultaneously supported by compiler. +# This macro does not hard code the compiler like AC_PROG_CC_C_O. +m4_defun([_LT_COMPILER_C_O], +[m4_require([_LT_DECL_SED])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no + $RM -r conftest 2>/dev/null + mkdir conftest + cd conftest + mkdir out + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + lt_compiler_flag="-o out/conftest2.$ac_objext" + # Insert the option either (1) after the last *FLAGS variable, or + # (2) before a word containing "conftest.", or (3) at the end. + # Note that $ac_compile itself does not contain backslashes and begins + # with a dollar sign (not a hyphen), so the echo should work correctly. + lt_compile=`echo "$ac_compile" | $SED \ + -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ + -e 's: [[^ ]]*conftest\.: $lt_compiler_flag&:; t' \ + -e 's:$: $lt_compiler_flag:'` + (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$lt_compile" 2>out/conftest.err) + ac_status=$? + cat out/conftest.err >&AS_MESSAGE_LOG_FD + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + if (exit $ac_status) && test -s out/conftest2.$ac_objext + then + # The compiler can only warn and ignore the option if not recognized + # So say no if there are warnings + $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp + $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 + if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then + _LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + fi + fi + chmod u+w . 2>&AS_MESSAGE_LOG_FD + $RM conftest* + # SGI C++ compiler will create directory out/ii_files/ for + # template instantiation + test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files + $RM out/* && rmdir out + cd .. + $RM -r conftest + $RM conftest* +]) +_LT_TAGDECL([compiler_c_o], [lt_cv_prog_compiler_c_o], [1], + [Does compiler simultaneously support -c and -o options?]) +])# _LT_COMPILER_C_O + + +# _LT_COMPILER_FILE_LOCKS([TAGNAME]) +# ---------------------------------- +# Check to see if we can do hard links to lock some files if needed +m4_defun([_LT_COMPILER_FILE_LOCKS], +[m4_require([_LT_ENABLE_LOCK])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +_LT_COMPILER_C_O([$1]) + +hard_links="nottested" +if test "$_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)" = no && test "$need_locks" != no; then + # do not overwrite the value of need_locks provided by the user + AC_MSG_CHECKING([if we can lock with hard links]) + hard_links=yes + $RM conftest* + ln conftest.a conftest.b 2>/dev/null && hard_links=no + touch conftest.a + ln conftest.a conftest.b 2>&5 || hard_links=no + ln conftest.a conftest.b 2>/dev/null && hard_links=no + AC_MSG_RESULT([$hard_links]) + if test "$hard_links" = no; then + AC_MSG_WARN([`$CC' does not support `-c -o', so `make -j' may be unsafe]) + need_locks=warn + fi +else + need_locks=no +fi +_LT_DECL([], [need_locks], [1], [Must we lock files when doing compilation?]) +])# _LT_COMPILER_FILE_LOCKS + + +# _LT_CHECK_OBJDIR +# ---------------- +m4_defun([_LT_CHECK_OBJDIR], +[AC_CACHE_CHECK([for objdir], [lt_cv_objdir], +[rm -f .libs 2>/dev/null +mkdir .libs 2>/dev/null +if test -d .libs; then + lt_cv_objdir=.libs +else + # MS-DOS does not allow filenames that begin with a dot. + lt_cv_objdir=_libs +fi +rmdir .libs 2>/dev/null]) +objdir=$lt_cv_objdir +_LT_DECL([], [objdir], [0], + [The name of the directory that contains temporary libtool files])dnl +m4_pattern_allow([LT_OBJDIR])dnl +AC_DEFINE_UNQUOTED(LT_OBJDIR, "$lt_cv_objdir/", + [Define to the sub-directory in which libtool stores uninstalled libraries.]) +])# _LT_CHECK_OBJDIR + + +# _LT_LINKER_HARDCODE_LIBPATH([TAGNAME]) +# -------------------------------------- +# Check hardcoding attributes. +m4_defun([_LT_LINKER_HARDCODE_LIBPATH], +[AC_MSG_CHECKING([how to hardcode library paths into programs]) +_LT_TAGVAR(hardcode_action, $1)= +if test -n "$_LT_TAGVAR(hardcode_libdir_flag_spec, $1)" || + test -n "$_LT_TAGVAR(runpath_var, $1)" || + test "X$_LT_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then + + # We can hardcode non-existent directories. + if test "$_LT_TAGVAR(hardcode_direct, $1)" != no && + # If the only mechanism to avoid hardcoding is shlibpath_var, we + # have to relink, otherwise we might link with an installed library + # when we should be linking with a yet-to-be-installed one + ## test "$_LT_TAGVAR(hardcode_shlibpath_var, $1)" != no && + test "$_LT_TAGVAR(hardcode_minus_L, $1)" != no; then + # Linking always hardcodes the temporary library directory. + _LT_TAGVAR(hardcode_action, $1)=relink + else + # We can link without hardcoding, and we can hardcode nonexisting dirs. + _LT_TAGVAR(hardcode_action, $1)=immediate + fi +else + # We cannot hardcode anything, or else we can only hardcode existing + # directories. + _LT_TAGVAR(hardcode_action, $1)=unsupported +fi +AC_MSG_RESULT([$_LT_TAGVAR(hardcode_action, $1)]) + +if test "$_LT_TAGVAR(hardcode_action, $1)" = relink || + test "$_LT_TAGVAR(inherit_rpath, $1)" = yes; then + # Fast installation is not supported + enable_fast_install=no +elif test "$shlibpath_overrides_runpath" = yes || + test "$enable_shared" = no; then + # Fast installation is not necessary + enable_fast_install=needless +fi +_LT_TAGDECL([], [hardcode_action], [0], + [How to hardcode a shared library path into an executable]) +])# _LT_LINKER_HARDCODE_LIBPATH + + +# _LT_CMD_STRIPLIB +# ---------------- +m4_defun([_LT_CMD_STRIPLIB], +[m4_require([_LT_DECL_EGREP]) +striplib= +old_striplib= +AC_MSG_CHECKING([whether stripping libraries is possible]) +if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then + test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" + test -z "$striplib" && striplib="$STRIP --strip-unneeded" + AC_MSG_RESULT([yes]) +else +# FIXME - insert some real tests, host_os isn't really good enough + case $host_os in + darwin*) + if test -n "$STRIP" ; then + striplib="$STRIP -x" + old_striplib="$STRIP -S" + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + fi + ;; + *) + AC_MSG_RESULT([no]) + ;; + esac +fi +_LT_DECL([], [old_striplib], [1], [Commands to strip libraries]) +_LT_DECL([], [striplib], [1]) +])# _LT_CMD_STRIPLIB + + +# _LT_SYS_DYNAMIC_LINKER([TAG]) +# ----------------------------- +# PORTME Fill in your ld.so characteristics +m4_defun([_LT_SYS_DYNAMIC_LINKER], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_OBJDUMP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CHECK_SHELL_FEATURES])dnl +AC_MSG_CHECKING([dynamic linker characteristics]) +m4_if([$1], + [], [ +if test "$GCC" = yes; then + case $host_os in + darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; + *) lt_awk_arg="/^libraries:/" ;; + esac + case $host_os in + mingw* | cegcc*) lt_sed_strip_eq="s,=\([[A-Za-z]]:\),\1,g" ;; + *) lt_sed_strip_eq="s,=/,/,g" ;; + esac + lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` + case $lt_search_path_spec in + *\;*) + # if the path contains ";" then we assume it to be the separator + # otherwise default to the standard path separator (i.e. ":") - it is + # assumed that no part of a normal pathname contains ";" but that should + # okay in the real world where ";" in dirpaths is itself problematic. + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` + ;; + *) + lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` + ;; + esac + # Ok, now we have the path, separated by spaces, we can step through it + # and add multilib dir if necessary. + lt_tmp_lt_search_path_spec= + lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` + for lt_sys_path in $lt_search_path_spec; do + if test -d "$lt_sys_path/$lt_multi_os_dir"; then + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" + else + test -d "$lt_sys_path" && \ + lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" + fi + done + lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +BEGIN {RS=" "; FS="/|\n";} { + lt_foo=""; + lt_count=0; + for (lt_i = NF; lt_i > 0; lt_i--) { + if ($lt_i != "" && $lt_i != ".") { + if ($lt_i == "..") { + lt_count++; + } else { + if (lt_count == 0) { + lt_foo="/" $lt_i lt_foo; + } else { + lt_count--; + } + } + } + } + if (lt_foo != "") { lt_freq[[lt_foo]]++; } + if (lt_freq[[lt_foo]] == 1) { print lt_foo; } +}'` + # AWK program above erroneously prepends '/' to C:/dos/paths + # for these hosts. + case $host_os in + mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ + $SED 's,/\([[A-Za-z]]:\),\1,g'` ;; + esac + sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +else + sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +fi]) +library_names_spec= +libname_spec='lib$name' +soname_spec= +shrext_cmds=".so" +postinstall_cmds= +postuninstall_cmds= +finish_cmds= +finish_eval= +shlibpath_var= +shlibpath_overrides_runpath=unknown +version_type=none +dynamic_linker="$host_os ld.so" +sys_lib_dlsearch_path_spec="/lib /usr/lib" +need_lib_prefix=unknown +hardcode_into_libs=no + +# when you set need_version to no, make sure it does not cause -set_version +# flags to be left without arguments +need_version=unknown + +case $host_os in +aix3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' + shlibpath_var=LIBPATH + + # AIX 3 has no versioning support, so we append a major version to the name. + soname_spec='${libname}${release}${shared_ext}$major' + ;; + +aix[[4-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + hardcode_into_libs=yes + if test "$host_cpu" = ia64; then + # AIX 5 supports IA64 + library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + else + # With GCC up to 2.95.x, collect2 would create an import file + # for dependence libraries. The import file would start with + # the line `#! .'. This would cause the generated library to + # depend on `.', always an invalid library. This was fixed in + # development snapshots of GCC prior to 3.0. + case $host_os in + aix4 | aix4.[[01]] | aix4.[[01]].*) + if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' + echo ' yes ' + echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then + : + else + can_build_shared=no + fi + ;; + esac + # AIX (on Power*) has no versioning support, so currently we can not hardcode correct + # soname into executable. Probably we can add versioning support to + # collect2, so additional links can be useful in future. + if test "$aix_use_runtimelinking" = yes; then + # If using run time linking (on AIX 4.2 or later) use lib.so + # instead of lib.a to let people know that these are not + # typical AIX shared libraries. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + else + # We preserve .a as extension for shared libraries through AIX4.2 + # and later when we are not doing run time linking. + library_names_spec='${libname}${release}.a $libname.a' + soname_spec='${libname}${release}${shared_ext}$major' + fi + shlibpath_var=LIBPATH + fi + ;; + +amigaos*) + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) + library_names_spec='$libname.ixlibrary $libname.a' + # Create ${libname}_ixlibrary.a entries in /sys/libs. + finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([[^/]]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' + ;; + esac + ;; + +beos*) + library_names_spec='${libname}${shared_ext}' + dynamic_linker="$host_os ld.so" + shlibpath_var=LIBRARY_PATH + ;; + +bsdi[[45]]*) + version_type=linux + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" + sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" + # the default ld.so.conf also contains /usr/contrib/lib and + # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow + # libtool to hard-code these into programs + ;; + +cygwin* | mingw* | pw32* | cegcc*) + version_type=windows + shrext_cmds=".dll" + need_version=no + need_lib_prefix=no + + case $GCC,$cc_basename in + yes,*) + # gcc + library_names_spec='$libname.dll.a' + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname~ + chmod a+x \$dldir/$dlname~ + if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then + eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; + fi' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + + case $host_os in + cygwin*) + # Cygwin DLLs use 'cyg' prefix rather than 'lib' + soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api"]) + ;; + mingw* | cegcc*) + # MinGW DLLs use traditional 'lib' prefix + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + pw32*) + # pw32 DLLs use 'pw' prefix rather than 'lib' + library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + ;; + esac + dynamic_linker='Win32 ld.exe' + ;; + + *,cl*) + # Native MSVC + libname_spec='$name' + soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}' + library_names_spec='${libname}.dll.lib' + + case $build_os in + mingw*) + sys_lib_search_path_spec= + lt_save_ifs=$IFS + IFS=';' + for lt_path in $LIB + do + IFS=$lt_save_ifs + # Let DOS variable expansion print the short 8.3 style file name. + lt_path=`cd "$lt_path" 2>/dev/null && cmd //C "for %i in (".") do @echo %~si"` + sys_lib_search_path_spec="$sys_lib_search_path_spec $lt_path" + done + IFS=$lt_save_ifs + # Convert to MSYS style. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | sed -e 's|\\\\|/|g' -e 's| \\([[a-zA-Z]]\\):| /\\1|g' -e 's|^ ||'` + ;; + cygwin*) + # Convert to unix form, then to dos form, then back to unix form + # but this time dos style (no spaces!) so that the unix form looks + # like /cygdrive/c/PROGRA~1:/cygdr... + sys_lib_search_path_spec=`cygpath --path --unix "$LIB"` + sys_lib_search_path_spec=`cygpath --path --dos "$sys_lib_search_path_spec" 2>/dev/null` + sys_lib_search_path_spec=`cygpath --path --unix "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + ;; + *) + sys_lib_search_path_spec="$LIB" + if $ECHO "$sys_lib_search_path_spec" | [$GREP ';[c-zC-Z]:/' >/dev/null]; then + # It is most probably a Windows format PATH. + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e 's/;/ /g'` + else + sys_lib_search_path_spec=`$ECHO "$sys_lib_search_path_spec" | $SED -e "s/$PATH_SEPARATOR/ /g"` + fi + # FIXME: find the short name or the path components, as spaces are + # common. (e.g. "Program Files" -> "PROGRA~1") + ;; + esac + + # DLL is installed to $(libdir)/../bin by postinstall_cmds + postinstall_cmds='base_file=`basename \${file}`~ + dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ + dldir=$destdir/`dirname \$dlpath`~ + test -d \$dldir || mkdir -p \$dldir~ + $install_prog $dir/$dlname \$dldir/$dlname' + postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ + dlpath=$dir/\$dldll~ + $RM \$dlpath' + shlibpath_overrides_runpath=yes + dynamic_linker='Win32 link.exe' + ;; + + *) + # Assume MSVC wrapper + library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib' + dynamic_linker='Win32 ld.exe' + ;; + esac + # FIXME: first we should search . and the directory the executable is in + shlibpath_var=PATH + ;; + +darwin* | rhapsody*) + dynamic_linker="$host_os dyld" + version_type=darwin + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' + soname_spec='${libname}${release}${major}$shared_ext' + shlibpath_overrides_runpath=yes + shlibpath_var=DYLD_LIBRARY_PATH + shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +m4_if([$1], [],[ + sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib"]) + sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' + ;; + +dgux*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +freebsd1*) + dynamic_linker=no + ;; + +freebsd* | dragonfly*) + # DragonFly does not have aout. When/if they implement a new + # versioning mechanism, adjust this. + if test -x /usr/bin/objformat; then + objformat=`/usr/bin/objformat` + else + case $host_os in + freebsd[[123]]*) objformat=aout ;; + *) objformat=elf ;; + esac + fi + version_type=freebsd-$objformat + case $version_type in + freebsd-elf*) + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + need_version=no + need_lib_prefix=no + ;; + freebsd-*) + library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' + need_version=yes + ;; + esac + shlibpath_var=LD_LIBRARY_PATH + case $host_os in + freebsd2*) + shlibpath_overrides_runpath=yes + ;; + freebsd3.[[01]]* | freebsdelf3.[[01]]*) + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + freebsd3.[[2-9]]* | freebsdelf3.[[2-9]]* | \ + freebsd4.[[0-5]] | freebsdelf4.[[0-5]] | freebsd4.1.1 | freebsdelf4.1.1) + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + *) # from 4.6 on, and DragonFly + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + esac + ;; + +gnu*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + hardcode_into_libs=yes + ;; + +haiku*) + version_type=linux + need_lib_prefix=no + need_version=no + dynamic_linker="$host_os runtime_loader" + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LIBRARY_PATH + shlibpath_overrides_runpath=yes + sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' + hardcode_into_libs=yes + ;; + +hpux9* | hpux10* | hpux11*) + # Give a soname corresponding to the major version so that dld.sl refuses to + # link against other versions. + version_type=sunos + need_lib_prefix=no + need_version=no + case $host_cpu in + ia64*) + shrext_cmds='.so' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.so" + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + if test "X$HPUX_IA64_MODE" = X32; then + sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" + else + sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" + fi + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + hppa*64*) + shrext_cmds='.sl' + hardcode_into_libs=yes + dynamic_linker="$host_os dld.sl" + shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH + shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" + sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec + ;; + *) + shrext_cmds='.sl' + dynamic_linker="$host_os dld.sl" + shlibpath_var=SHLIB_PATH + shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + ;; + esac + # HP-UX runs *really* slowly unless shared libraries are mode 555, ... + postinstall_cmds='chmod 555 $lib' + # or fails outright, so override atomically: + install_override_mode=555 + ;; + +interix[[3-9]]*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +irix5* | irix6* | nonstopux*) + case $host_os in + nonstopux*) version_type=nonstopux ;; + *) + if test "$lt_cv_prog_gnu_ld" = yes; then + version_type=linux + else + version_type=irix + fi ;; + esac + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' + case $host_os in + irix5* | nonstopux*) + libsuff= shlibsuff= + ;; + *) + case $LD in # libtool.m4 will add one of these switches to LD + *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") + libsuff= shlibsuff= libmagic=32-bit;; + *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") + libsuff=32 shlibsuff=N32 libmagic=N32;; + *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") + libsuff=64 shlibsuff=64 libmagic=64-bit;; + *) libsuff= shlibsuff= libmagic=never-match;; + esac + ;; + esac + shlibpath_var=LD_LIBRARY${shlibsuff}_PATH + shlibpath_overrides_runpath=no + sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" + sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" + hardcode_into_libs=yes + ;; + +# No shared lib support for Linux oldld, aout, or coff. +linux*oldld* | linux*aout* | linux*coff*) + dynamic_linker=no + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + + # Some binutils ld are patched to set DT_RUNPATH + AC_CACHE_VAL([lt_cv_shlibpath_overrides_runpath], + [lt_cv_shlibpath_overrides_runpath=no + save_LDFLAGS=$LDFLAGS + save_libdir=$libdir + eval "libdir=/foo; wl=\"$_LT_TAGVAR(lt_prog_compiler_wl, $1)\"; \ + LDFLAGS=\"\$LDFLAGS $_LT_TAGVAR(hardcode_libdir_flag_spec, $1)\"" + AC_LINK_IFELSE([AC_LANG_PROGRAM([],[])], + [AS_IF([ ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null], + [lt_cv_shlibpath_overrides_runpath=yes])]) + LDFLAGS=$save_LDFLAGS + libdir=$save_libdir + ]) + shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath + + # This implies no fast_install, which is unacceptable. + # Some rework will be needed to allow for fast_install + # before this can be enabled. + hardcode_into_libs=yes + + # Add ABI-specific directories to the system library path. + sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib" + + # Append ld.so.conf contents to the search path + if test -f /etc/ld.so.conf; then + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` + sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra" + + fi + + # We used to test for /lib/ld.so.1 and disable shared libraries on + # powerpc, because MkLinux only supported shared libraries with the + # GNU dynamic linker. Since this was broken with cross compilers, + # most powerpc-linux boxes support dynamic linking these days and + # people can always --disable-shared, the test was removed, and we + # assume the GNU/Linux dynamic linker is in use. + dynamic_linker='GNU/Linux ld.so' + ;; + +netbsd*) + version_type=sunos + need_lib_prefix=no + need_version=no + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + dynamic_linker='NetBSD (a.out) ld.so' + else + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + dynamic_linker='NetBSD ld.elf_so' + fi + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + ;; + +newsos6) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + ;; + +*nto* | *qnx*) + version_type=qnx + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + dynamic_linker='ldqnx.so' + ;; + +openbsd*) + version_type=sunos + sys_lib_dlsearch_path_spec="/usr/lib" + need_lib_prefix=no + # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. + case $host_os in + openbsd3.3 | openbsd3.3.*) need_version=yes ;; + *) need_version=no ;; + esac + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' + shlibpath_var=LD_LIBRARY_PATH + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + case $host_os in + openbsd2.[[89]] | openbsd2.[[89]].*) + shlibpath_overrides_runpath=no + ;; + *) + shlibpath_overrides_runpath=yes + ;; + esac + else + shlibpath_overrides_runpath=yes + fi + ;; + +os2*) + libname_spec='$name' + shrext_cmds=".dll" + need_lib_prefix=no + library_names_spec='$libname${shared_ext} $libname.a' + dynamic_linker='OS/2 ld.exe' + shlibpath_var=LIBPATH + ;; + +osf3* | osf4* | osf5*) + version_type=osf + need_lib_prefix=no + need_version=no + soname_spec='${libname}${release}${shared_ext}$major' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" + sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" + ;; + +rdos*) + dynamic_linker=no + ;; + +solaris*) + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + # ldd complains unless libraries are executable + postinstall_cmds='chmod +x $lib' + ;; + +sunos4*) + version_type=sunos + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' + finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + if test "$with_gnu_ld" = yes; then + need_lib_prefix=no + fi + need_version=yes + ;; + +sysv4 | sysv4.3*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + case $host_vendor in + sni) + shlibpath_overrides_runpath=no + need_lib_prefix=no + runpath_var=LD_RUN_PATH + ;; + siemens) + need_lib_prefix=no + ;; + motorola) + need_lib_prefix=no + need_version=no + shlibpath_overrides_runpath=no + sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' + ;; + esac + ;; + +sysv4*MP*) + if test -d /usr/nec ;then + version_type=linux + library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' + soname_spec='$libname${shared_ext}.$major' + shlibpath_var=LD_LIBRARY_PATH + fi + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + version_type=freebsd-elf + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=yes + hardcode_into_libs=yes + if test "$with_gnu_ld" = yes; then + sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' + else + sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' + case $host_os in + sco3.2v5*) + sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" + ;; + esac + fi + sys_lib_dlsearch_path_spec='/usr/lib' + ;; + +tpf*) + # TPF is a cross-target only. Preferred cross-host = GNU/Linux. + version_type=linux + need_lib_prefix=no + need_version=no + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + shlibpath_var=LD_LIBRARY_PATH + shlibpath_overrides_runpath=no + hardcode_into_libs=yes + ;; + +uts4*) + version_type=linux + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + soname_spec='${libname}${release}${shared_ext}$major' + shlibpath_var=LD_LIBRARY_PATH + ;; + +*) + dynamic_linker=no + ;; +esac +AC_MSG_RESULT([$dynamic_linker]) +test "$dynamic_linker" = no && can_build_shared=no + +variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +if test "$GCC" = yes; then + variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +fi + +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + +_LT_DECL([], [variables_saved_for_relink], [1], + [Variables whose values should be saved in libtool wrapper scripts and + restored at link time]) +_LT_DECL([], [need_lib_prefix], [0], + [Do we need the "lib" prefix for modules?]) +_LT_DECL([], [need_version], [0], [Do we need a version for libraries?]) +_LT_DECL([], [version_type], [0], [Library versioning type]) +_LT_DECL([], [runpath_var], [0], [Shared library runtime path variable]) +_LT_DECL([], [shlibpath_var], [0],[Shared library path variable]) +_LT_DECL([], [shlibpath_overrides_runpath], [0], + [Is shlibpath searched before the hard-coded library search path?]) +_LT_DECL([], [libname_spec], [1], [Format of library name prefix]) +_LT_DECL([], [library_names_spec], [1], + [[List of archive names. First name is the real one, the rest are links. + The last name is the one that the linker finds with -lNAME]]) +_LT_DECL([], [soname_spec], [1], + [[The coded name of the library, if different from the real name]]) +_LT_DECL([], [install_override_mode], [1], + [Permission mode override for installation of shared libraries]) +_LT_DECL([], [postinstall_cmds], [2], + [Command to use after installation of a shared archive]) +_LT_DECL([], [postuninstall_cmds], [2], + [Command to use after uninstallation of a shared archive]) +_LT_DECL([], [finish_cmds], [2], + [Commands used to finish a libtool library installation in a directory]) +_LT_DECL([], [finish_eval], [1], + [[As "finish_cmds", except a single script fragment to be evaled but + not shown]]) +_LT_DECL([], [hardcode_into_libs], [0], + [Whether we should hardcode library paths into libraries]) +_LT_DECL([], [sys_lib_search_path_spec], [2], + [Compile-time system search path for libraries]) +_LT_DECL([], [sys_lib_dlsearch_path_spec], [2], + [Run-time system search path for libraries]) +])# _LT_SYS_DYNAMIC_LINKER + + +# _LT_PATH_TOOL_PREFIX(TOOL) +# -------------------------- +# find a file program which can recognize shared library +AC_DEFUN([_LT_PATH_TOOL_PREFIX], +[m4_require([_LT_DECL_EGREP])dnl +AC_MSG_CHECKING([for $1]) +AC_CACHE_VAL(lt_cv_path_MAGIC_CMD, +[case $MAGIC_CMD in +[[\\/*] | ?:[\\/]*]) + lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. + ;; +*) + lt_save_MAGIC_CMD="$MAGIC_CMD" + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +dnl $ac_dummy forces splitting on constant user-supplied paths. +dnl POSIX.2 word splitting is done only on the output of word expansions, +dnl not every word. This closes a longstanding sh security hole. + ac_dummy="m4_if([$2], , $PATH, [$2])" + for ac_dir in $ac_dummy; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f $ac_dir/$1; then + lt_cv_path_MAGIC_CMD="$ac_dir/$1" + if test -n "$file_magic_test_file"; then + case $deplibs_check_method in + "file_magic "*) + file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` + MAGIC_CMD="$lt_cv_path_MAGIC_CMD" + if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | + $EGREP "$file_magic_regex" > /dev/null; then + : + else + cat <<_LT_EOF 1>&2 + +*** Warning: the command libtool uses to detect shared libraries, +*** $file_magic_cmd, produces output that libtool cannot recognize. +*** The result is that libtool may fail to recognize shared libraries +*** as such. This will affect the creation of libtool libraries that +*** depend on shared libraries, but programs linked with such libtool +*** libraries will work regardless of this problem. Nevertheless, you +*** may want to report the problem to your system manager and/or to +*** bug-libtool@gnu.org + +_LT_EOF + fi ;; + esac + fi + break + fi + done + IFS="$lt_save_ifs" + MAGIC_CMD="$lt_save_MAGIC_CMD" + ;; +esac]) +MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +if test -n "$MAGIC_CMD"; then + AC_MSG_RESULT($MAGIC_CMD) +else + AC_MSG_RESULT(no) +fi +_LT_DECL([], [MAGIC_CMD], [0], + [Used to examine libraries when file_magic_cmd begins with "file"])dnl +])# _LT_PATH_TOOL_PREFIX + +# Old name: +AU_ALIAS([AC_PATH_TOOL_PREFIX], [_LT_PATH_TOOL_PREFIX]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_PATH_TOOL_PREFIX], []) + + +# _LT_PATH_MAGIC +# -------------- +# find a file program which can recognize a shared library +m4_defun([_LT_PATH_MAGIC], +[_LT_PATH_TOOL_PREFIX(${ac_tool_prefix}file, /usr/bin$PATH_SEPARATOR$PATH) +if test -z "$lt_cv_path_MAGIC_CMD"; then + if test -n "$ac_tool_prefix"; then + _LT_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH) + else + MAGIC_CMD=: + fi +fi +])# _LT_PATH_MAGIC + + +# LT_PATH_LD +# ---------- +# find the pathname to the GNU or non-GNU linker +AC_DEFUN([LT_PATH_LD], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PROG_ECHO_BACKSLASH])dnl + +AC_ARG_WITH([gnu-ld], + [AS_HELP_STRING([--with-gnu-ld], + [assume the C compiler uses GNU ld @<:@default=no@:>@])], + [test "$withval" = no || with_gnu_ld=yes], + [with_gnu_ld=no])dnl + +ac_prog=ld +if test "$GCC" = yes; then + # Check if gcc -print-prog-name=ld gives a path. + AC_MSG_CHECKING([for ld used by $CC]) + case $host in + *-*-mingw*) + # gcc leaves a trailing carriage return which upsets mingw + ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; + *) + ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; + esac + case $ac_prog in + # Accept absolute paths. + [[\\/]]* | ?:[[\\/]]*) + re_direlt='/[[^/]][[^/]]*/\.\./' + # Canonicalize the pathname of ld + ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` + while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do + ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` + done + test -z "$LD" && LD="$ac_prog" + ;; + "") + # If it fails, then pretend we aren't using GCC. + ac_prog=ld + ;; + *) + # If it is relative, then search for the first ld in PATH. + with_gnu_ld=unknown + ;; + esac +elif test "$with_gnu_ld" = yes; then + AC_MSG_CHECKING([for GNU ld]) +else + AC_MSG_CHECKING([for non-GNU ld]) +fi +AC_CACHE_VAL(lt_cv_path_LD, +[if test -z "$LD"; then + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then + lt_cv_path_LD="$ac_dir/$ac_prog" + # Check to see if the program is GNU ld. I'd rather use --version, + # but apparently some variants of GNU ld only accept -v. + # Break only if it was the GNU/non-GNU ld that we prefer. + case `"$lt_cv_path_LD" -v 2>&1 &1 /dev/null 2>&1; then + lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' + lt_cv_file_magic_cmd='func_win32_libid' + else + # Keep this pattern in sync with the one in func_win32_libid. + lt_cv_deplibs_check_method='file_magic file format (pei*-i386(.*architecture: i386)?|pe-arm-wince|pe-x86-64)' + lt_cv_file_magic_cmd='$OBJDUMP -f' + fi + ;; + +cegcc*) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + +darwin* | rhapsody*) + lt_cv_deplibs_check_method=pass_all + ;; + +freebsd* | dragonfly*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + case $host_cpu in + i*86 ) + # Not sure whether the presence of OpenBSD here was a mistake. + # Let's accept both of them until this is cleared up. + lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[[3-9]]86 (compact )?demand paged shared library' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` + ;; + esac + else + lt_cv_deplibs_check_method=pass_all + fi + ;; + +gnu*) + lt_cv_deplibs_check_method=pass_all + ;; + +haiku*) + lt_cv_deplibs_check_method=pass_all + ;; + +hpux10.20* | hpux11*) + lt_cv_file_magic_cmd=/usr/bin/file + case $host_cpu in + ia64*) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|ELF-[[0-9]][[0-9]]) shared object file - IA64' + lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so + ;; + hppa*64*) + [lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]'] + lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl + ;; + *) + lt_cv_deplibs_check_method='file_magic (s[[0-9]][[0-9]][[0-9]]|PA-RISC[[0-9]]\.[[0-9]]) shared library' + lt_cv_file_magic_test_file=/usr/lib/libc.sl + ;; + esac + ;; + +interix[[3-9]]*) + # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|\.a)$' + ;; + +irix5* | irix6* | nonstopux*) + case $LD in + *-32|*"-32 ") libmagic=32-bit;; + *-n32|*"-n32 ") libmagic=N32;; + *-64|*"-64 ") libmagic=64-bit;; + *) libmagic=never-match;; + esac + lt_cv_deplibs_check_method=pass_all + ;; + +# This must be Linux ELF. +linux* | k*bsd*-gnu | kopensolaris*-gnu) + lt_cv_deplibs_check_method=pass_all + ;; + +netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so|_pic\.a)$' + fi + ;; + +newos6*) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (executable|dynamic lib)' + lt_cv_file_magic_cmd=/usr/bin/file + lt_cv_file_magic_test_file=/usr/lib/libnls.so + ;; + +*nto* | *qnx*) + lt_cv_deplibs_check_method=pass_all + ;; + +openbsd*) + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|\.so|_pic\.a)$' + else + lt_cv_deplibs_check_method='match_pattern /lib[[^/]]+(\.so\.[[0-9]]+\.[[0-9]]+|_pic\.a)$' + fi + ;; + +osf3* | osf4* | osf5*) + lt_cv_deplibs_check_method=pass_all + ;; + +rdos*) + lt_cv_deplibs_check_method=pass_all + ;; + +solaris*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) + lt_cv_deplibs_check_method=pass_all + ;; + +sysv4 | sysv4.3*) + case $host_vendor in + motorola) + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[ML]]SB (shared object|dynamic lib) M[[0-9]][[0-9]]* Version [[0-9]]' + lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` + ;; + ncr) + lt_cv_deplibs_check_method=pass_all + ;; + sequent) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method='file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB (shared object|dynamic lib )' + ;; + sni) + lt_cv_file_magic_cmd='/bin/file' + lt_cv_deplibs_check_method="file_magic ELF [[0-9]][[0-9]]*-bit [[LM]]SB dynamic lib" + lt_cv_file_magic_test_file=/lib/libc.so + ;; + siemens) + lt_cv_deplibs_check_method=pass_all + ;; + pc) + lt_cv_deplibs_check_method=pass_all + ;; + esac + ;; + +tpf*) + lt_cv_deplibs_check_method=pass_all + ;; +esac +]) + +file_magic_glob= +want_nocaseglob=no +if test "$build" = "$host"; then + case $host_os in + mingw* | pw32*) + if ( shopt | grep nocaseglob ) >/dev/null 2>&1; then + want_nocaseglob=yes + else + file_magic_glob=`echo aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ | $SED -e "s/\(..\)/s\/[[\1]]\/[[\1]]\/g;/g"` + fi + ;; + esac +fi + +file_magic_cmd=$lt_cv_file_magic_cmd +deplibs_check_method=$lt_cv_deplibs_check_method +test -z "$deplibs_check_method" && deplibs_check_method=unknown + +_LT_DECL([], [deplibs_check_method], [1], + [Method to check whether dependent libraries are shared objects]) +_LT_DECL([], [file_magic_cmd], [1], + [Command to use when deplibs_check_method = "file_magic"]) +_LT_DECL([], [file_magic_glob], [1], + [How to find potential files when deplibs_check_method = "file_magic"]) +_LT_DECL([], [want_nocaseglob], [1], + [Find potential files using nocaseglob when deplibs_check_method = "file_magic"]) +])# _LT_CHECK_MAGIC_METHOD + + +# LT_PATH_NM +# ---------- +# find the pathname to a BSD- or MS-compatible name lister +AC_DEFUN([LT_PATH_NM], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_CACHE_CHECK([for BSD- or MS-compatible name lister (nm)], lt_cv_path_NM, +[if test -n "$NM"; then + # Let the user override the test. + lt_cv_path_NM="$NM" +else + lt_nm_to_check="${ac_tool_prefix}nm" + if test -n "$ac_tool_prefix" && test "$build" = "$host"; then + lt_nm_to_check="$lt_nm_to_check nm" + fi + for lt_tmp_nm in $lt_nm_to_check; do + lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR + for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do + IFS="$lt_save_ifs" + test -z "$ac_dir" && ac_dir=. + tmp_nm="$ac_dir/$lt_tmp_nm" + if test -f "$tmp_nm" || test -f "$tmp_nm$ac_exeext" ; then + # Check to see if the nm accepts a BSD-compat flag. + # Adding the `sed 1q' prevents false positives on HP-UX, which says: + # nm: unknown option "B" ignored + # Tru64's nm complains that /dev/null is an invalid object file + case `"$tmp_nm" -B /dev/null 2>&1 | sed '1q'` in + */dev/null* | *'Invalid file or object type'*) + lt_cv_path_NM="$tmp_nm -B" + break + ;; + *) + case `"$tmp_nm" -p /dev/null 2>&1 | sed '1q'` in + */dev/null*) + lt_cv_path_NM="$tmp_nm -p" + break + ;; + *) + lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but + continue # so that we can try to find one that supports BSD flags + ;; + esac + ;; + esac + fi + done + IFS="$lt_save_ifs" + done + : ${lt_cv_path_NM=no} +fi]) +if test "$lt_cv_path_NM" != "no"; then + NM="$lt_cv_path_NM" +else + # Didn't find any BSD compatible name lister, look for dumpbin. + if test -n "$DUMPBIN"; then : + # Let the user override the test. + else + AC_CHECK_TOOLS(DUMPBIN, [dumpbin "link -dump"], :) + case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in + *COFF*) + DUMPBIN="$DUMPBIN -symbols" + ;; + *) + DUMPBIN=: + ;; + esac + fi + AC_SUBST([DUMPBIN]) + if test "$DUMPBIN" != ":"; then + NM="$DUMPBIN" + fi +fi +test -z "$NM" && NM=nm +AC_SUBST([NM]) +_LT_DECL([], [NM], [1], [A BSD- or MS-compatible name lister])dnl + +AC_CACHE_CHECK([the name lister ($NM) interface], [lt_cv_nm_interface], + [lt_cv_nm_interface="BSD nm" + echo "int some_variable = 0;" > conftest.$ac_ext + (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&AS_MESSAGE_LOG_FD) + (eval "$ac_compile" 2>conftest.err) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&AS_MESSAGE_LOG_FD) + (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) + cat conftest.err >&AS_MESSAGE_LOG_FD + (eval echo "\"\$as_me:$LINENO: output\"" >&AS_MESSAGE_LOG_FD) + cat conftest.out >&AS_MESSAGE_LOG_FD + if $GREP 'External.*some_variable' conftest.out > /dev/null; then + lt_cv_nm_interface="MS dumpbin" + fi + rm -f conftest*]) +])# LT_PATH_NM + +# Old names: +AU_ALIAS([AM_PROG_NM], [LT_PATH_NM]) +AU_ALIAS([AC_PROG_NM], [LT_PATH_NM]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_PROG_NM], []) +dnl AC_DEFUN([AC_PROG_NM], []) + +# _LT_CHECK_SHAREDLIB_FROM_LINKLIB +# -------------------------------- +# how to determine the name of the shared library +# associated with a specific link library. +# -- PORTME fill in with the dynamic library characteristics +m4_defun([_LT_CHECK_SHAREDLIB_FROM_LINKLIB], +[m4_require([_LT_DECL_EGREP]) +m4_require([_LT_DECL_OBJDUMP]) +m4_require([_LT_DECL_DLLTOOL]) +AC_CACHE_CHECK([how to associate runtime and link libraries], +lt_cv_sharedlib_from_linklib_cmd, +[lt_cv_sharedlib_from_linklib_cmd='unknown' + +case $host_os in +cygwin* | mingw* | pw32* | cegcc*) + # two different shell functions defined in ltmain.sh + # decide which to use based on capabilities of $DLLTOOL + case `$DLLTOOL --help 2>&1` in + *--identify-strict*) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib + ;; + *) + lt_cv_sharedlib_from_linklib_cmd=func_cygming_dll_for_implib_fallback + ;; + esac + ;; +*) + # fallback: assume linklib IS sharedlib + lt_cv_sharedlib_from_linklib_cmd="$ECHO" + ;; +esac +]) +sharedlib_from_linklib_cmd=$lt_cv_sharedlib_from_linklib_cmd +test -z "$sharedlib_from_linklib_cmd" && sharedlib_from_linklib_cmd=$ECHO + +_LT_DECL([], [sharedlib_from_linklib_cmd], [1], + [Command to associate shared and link libraries]) +])# _LT_CHECK_SHAREDLIB_FROM_LINKLIB + + +# _LT_PATH_MANIFEST_TOOL +# ---------------------- +# locate the manifest tool +m4_defun([_LT_PATH_MANIFEST_TOOL], +[AC_CHECK_TOOL(MANIFEST_TOOL, mt, :) +test -z "$MANIFEST_TOOL" && MANIFEST_TOOL=mt +AC_CACHE_CHECK([if $MANIFEST_TOOL is a manifest tool], [lt_cv_path_mainfest_tool], + [lt_cv_path_mainfest_tool=no + echo "$as_me:$LINENO: $MANIFEST_TOOL '-?'" >&AS_MESSAGE_LOG_FD + $MANIFEST_TOOL '-?' 2>conftest.err > conftest.out + cat conftest.err >&AS_MESSAGE_LOG_FD + if $GREP 'Manifest Tool' conftest.out > /dev/null; then + lt_cv_path_mainfest_tool=yes + fi + rm -f conftest*]) +if test "x$lt_cv_path_mainfest_tool" != xyes; then + MANIFEST_TOOL=: +fi +_LT_DECL([], [MANIFEST_TOOL], [1], [Manifest tool])dnl +])# _LT_PATH_MANIFEST_TOOL + + +# LT_LIB_M +# -------- +# check for math library +AC_DEFUN([LT_LIB_M], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +LIBM= +case $host in +*-*-beos* | *-*-cegcc* | *-*-cygwin* | *-*-haiku* | *-*-pw32* | *-*-darwin*) + # These system don't have libm, or don't need it + ;; +*-ncr-sysv4.3*) + AC_CHECK_LIB(mw, _mwvalidcheckl, LIBM="-lmw") + AC_CHECK_LIB(m, cos, LIBM="$LIBM -lm") + ;; +*) + AC_CHECK_LIB(m, cos, LIBM="-lm") + ;; +esac +AC_SUBST([LIBM]) +])# LT_LIB_M + +# Old name: +AU_ALIAS([AC_CHECK_LIBM], [LT_LIB_M]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_CHECK_LIBM], []) + + +# _LT_COMPILER_NO_RTTI([TAGNAME]) +# ------------------------------- +m4_defun([_LT_COMPILER_NO_RTTI], +[m4_require([_LT_TAG_COMPILER])dnl + +_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + +if test "$GCC" = yes; then + case $cc_basename in + nvcc*) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -Xcompiler -fno-builtin' ;; + *) + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' ;; + esac + + _LT_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions], + lt_cv_prog_compiler_rtti_exceptions, + [-fno-rtti -fno-exceptions], [], + [_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"]) +fi +_LT_TAGDECL([no_builtin_flag], [lt_prog_compiler_no_builtin_flag], [1], + [Compiler flag to turn off builtin functions]) +])# _LT_COMPILER_NO_RTTI + + +# _LT_CMD_GLOBAL_SYMBOLS +# ---------------------- +m4_defun([_LT_CMD_GLOBAL_SYMBOLS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_PROG_CC])dnl +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([LT_PATH_NM])dnl +AC_REQUIRE([LT_PATH_LD])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_TAG_COMPILER])dnl + +# Check for command to grab the raw symbol name followed by C symbol from nm. +AC_MSG_CHECKING([command to parse $NM output from $compiler object]) +AC_CACHE_VAL([lt_cv_sys_global_symbol_pipe], +[ +# These are sane defaults that work on at least a few old systems. +# [They come from Ultrix. What could be older than Ultrix?!! ;)] + +# Character class describing NM global symbol codes. +symcode='[[BCDEGRST]]' + +# Regexp to match symbols that can be accessed directly from C. +sympat='\([[_A-Za-z]][[_A-Za-z0-9]]*\)' + +# Define system-specific variables. +case $host_os in +aix*) + symcode='[[BCDT]]' + ;; +cygwin* | mingw* | pw32* | cegcc*) + symcode='[[ABCDGISTW]]' + ;; +hpux*) + if test "$host_cpu" = ia64; then + symcode='[[ABCDEGRST]]' + fi + ;; +irix* | nonstopux*) + symcode='[[BCDEGRST]]' + ;; +osf*) + symcode='[[BCDEGQRST]]' + ;; +solaris*) + symcode='[[BDRT]]' + ;; +sco3.2v5*) + symcode='[[DT]]' + ;; +sysv4.2uw2*) + symcode='[[DT]]' + ;; +sysv5* | sco5v6* | unixware* | OpenUNIX*) + symcode='[[ABDT]]' + ;; +sysv4) + symcode='[[DFNSTU]]' + ;; +esac + +# If we're using GNU nm, then use its standard symbol codes. +case `$NM -V 2>&1` in +*GNU* | *'with BFD'*) + symcode='[[ABCDGIRSTW]]' ;; +esac + +# Transform an extracted symbol line into a proper C declaration. +# Some systems (esp. on ia64) link data and code symbols differently, +# so use this general approach. +lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" + +# Transform an extracted symbol line into symbol name and symbol address +lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([[^ ]]*\)[[ ]]*$/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \(lib[[^ ]]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"lib\2\", (void *) \&\2},/p'" + +# Handle CRLF in mingw tool chain +opt_cr= +case $build_os in +mingw*) + opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp + ;; +esac + +# Try without a prefix underscore, then with it. +for ac_symprfx in "" "_"; do + + # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. + symxfrm="\\1 $ac_symprfx\\2 \\2" + + # Write the raw and C identifiers. + if test "$lt_cv_nm_interface" = "MS dumpbin"; then + # Fake it for dumpbin and say T for any non-static function + # and D for any global variable. + # Also find C++ and __fastcall symbols from MSVC++, + # which start with @ or ?. + lt_cv_sys_global_symbol_pipe="$AWK ['"\ +" {last_section=section; section=\$ 3};"\ +" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +" \$ 0!~/External *\|/{next};"\ +" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +" {if(hide[section]) next};"\ +" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +" ' prfx=^$ac_symprfx]" + else + lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" + fi + lt_cv_sys_global_symbol_pipe="$lt_cv_sys_global_symbol_pipe | sed '/ __gnu_lto/d'" + + # Check to see that the pipe works correctly. + pipe_works=no + + rm -f conftest* + cat > conftest.$ac_ext <<_LT_EOF +#ifdef __cplusplus +extern "C" { +#endif +char nm_test_var; +void nm_test_func(void); +void nm_test_func(void){} +#ifdef __cplusplus +} +#endif +int main(){nm_test_var='a';nm_test_func();return(0);} +_LT_EOF + + if AC_TRY_EVAL(ac_compile); then + # Now try to grab the symbols. + nlist=conftest.nm + if AC_TRY_EVAL(NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) && test -s "$nlist"; then + # Try sorting and uniquifying the output. + if sort "$nlist" | uniq > "$nlist"T; then + mv -f "$nlist"T "$nlist" + else + rm -f "$nlist"T + fi + + # Make sure that we snagged all the symbols we need. + if $GREP ' nm_test_var$' "$nlist" >/dev/null; then + if $GREP ' nm_test_func$' "$nlist" >/dev/null; then + cat <<_LT_EOF > conftest.$ac_ext +/* Keep this code in sync between libtool.m4, ltmain, lt_system.h, and tests. */ +#if defined(_WIN32) || defined(__CYGWIN__) || defined(_WIN32_WCE) +/* DATA imports from DLLs on WIN32 con't be const, because runtime + relocations are performed -- see ld's documentation on pseudo-relocs. */ +# define LT@&t@_DLSYM_CONST +#elif defined(__osf__) +/* This system does not cope well with relocations in const data. */ +# define LT@&t@_DLSYM_CONST +#else +# define LT@&t@_DLSYM_CONST const +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +_LT_EOF + # Now generate the symbol file. + eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' + + cat <<_LT_EOF >> conftest.$ac_ext + +/* The mapping between symbol names and symbols. */ +LT@&t@_DLSYM_CONST struct { + const char *name; + void *address; +} +lt__PROGRAM__LTX_preloaded_symbols[[]] = +{ + { "@PROGRAM@", (void *) 0 }, +_LT_EOF + $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext + cat <<\_LT_EOF >> conftest.$ac_ext + {0, (void *) 0} +}; + +/* This works around a problem in FreeBSD linker */ +#ifdef FREEBSD_WORKAROUND +static const void *lt_preloaded_setup() { + return lt__PROGRAM__LTX_preloaded_symbols; +} +#endif + +#ifdef __cplusplus +} +#endif +_LT_EOF + # Now try linking the two files. + mv conftest.$ac_objext conftstm.$ac_objext + lt_globsym_save_LIBS=$LIBS + lt_globsym_save_CFLAGS=$CFLAGS + LIBS="conftstm.$ac_objext" + CFLAGS="$CFLAGS$_LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)" + if AC_TRY_EVAL(ac_link) && test -s conftest${ac_exeext}; then + pipe_works=yes + fi + LIBS=$lt_globsym_save_LIBS + CFLAGS=$lt_globsym_save_CFLAGS + else + echo "cannot find nm_test_func in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot find nm_test_var in $nlist" >&AS_MESSAGE_LOG_FD + fi + else + echo "cannot run $lt_cv_sys_global_symbol_pipe" >&AS_MESSAGE_LOG_FD + fi + else + echo "$progname: failed program was:" >&AS_MESSAGE_LOG_FD + cat conftest.$ac_ext >&5 + fi + rm -rf conftest* conftst* + + # Do not use the global_symbol_pipe unless it works. + if test "$pipe_works" = yes; then + break + else + lt_cv_sys_global_symbol_pipe= + fi +done +]) +if test -z "$lt_cv_sys_global_symbol_pipe"; then + lt_cv_sys_global_symbol_to_cdecl= +fi +if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then + AC_MSG_RESULT(failed) +else + AC_MSG_RESULT(ok) +fi + +# Response file support. +if test "$lt_cv_nm_interface" = "MS dumpbin"; then + nm_file_list_spec='@' +elif $NM --help 2>/dev/null | grep '[[@]]FILE' >/dev/null; then + nm_file_list_spec='@' +fi + +_LT_DECL([global_symbol_pipe], [lt_cv_sys_global_symbol_pipe], [1], + [Take the output of nm and produce a listing of raw symbols and C names]) +_LT_DECL([global_symbol_to_cdecl], [lt_cv_sys_global_symbol_to_cdecl], [1], + [Transform the output of nm in a proper C declaration]) +_LT_DECL([global_symbol_to_c_name_address], + [lt_cv_sys_global_symbol_to_c_name_address], [1], + [Transform the output of nm in a C name address pair]) +_LT_DECL([global_symbol_to_c_name_address_lib_prefix], + [lt_cv_sys_global_symbol_to_c_name_address_lib_prefix], [1], + [Transform the output of nm in a C name address pair when lib prefix is needed]) +_LT_DECL([], [nm_file_list_spec], [1], + [Specify filename containing input files for $NM]) +]) # _LT_CMD_GLOBAL_SYMBOLS + + +# _LT_COMPILER_PIC([TAGNAME]) +# --------------------------- +m4_defun([_LT_COMPILER_PIC], +[m4_require([_LT_TAG_COMPILER])dnl +_LT_TAGVAR(lt_prog_compiler_wl, $1)= +_LT_TAGVAR(lt_prog_compiler_pic, $1)= +_LT_TAGVAR(lt_prog_compiler_static, $1)= + +m4_if([$1], [CXX], [ + # C++ specific cases for pic, static, wl, etc. + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + *djgpp*) + # DJGPP does not support shared libraries at all + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + else + case $host_os in + aix[[4-9]]*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + chorus*) + case $cc_basename in + cxch68*) + # Green Hills C++ Compiler + # _LT_TAGVAR(lt_prog_compiler_static, $1)="--no_auto_instantiation -u __main -u __premain -u _abort -r $COOL_DIR/lib/libOrb.a $MVME_DIR/lib/CC/libC.a $MVME_DIR/lib/classix/libcx.s.a" + ;; + esac + ;; + mingw* | cygwin* | os2* | pw32* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + dgux*) + case $cc_basename in + ec++*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + ghcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + freebsd* | dragonfly*) + # FreeBSD uses GNU C++ + ;; + hpux9* | hpux10* | hpux11*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + if test "$host_cpu" != ia64; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + fi + ;; + aCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + ;; + *) + ;; + esac + ;; + interix*) + # This is c89, which is MS Visual C++ (no shared libs) + # Anyone wants to do a port? + ;; + irix5* | irix6* | nonstopux*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + # CC pic flag -KPIC is the default. + ;; + *) + ;; + esac + ;; + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # KAI C++ Compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + ecpc* ) + # old Intel C++ for x86_64 which still supported -KPIC. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + icpc* ) + # Intel C++, used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + cxx*) + # Compaq C++ + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xlc* | xlC* | bgxl[[cC]]* | mpixl[[cC]]*) + # IBM XL 8.0, 9.0 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + esac + ;; + esac + ;; + lynxos*) + ;; + m88k*) + ;; + mvs*) + case $cc_basename in + cxx*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall' + ;; + *) + ;; + esac + ;; + netbsd*) + ;; + *qnx* | *nto*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,' + ;; + RCC*) + # Rational C++ 2.4.1 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + cxx*) + # Digital/Compaq C++ + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # Make sure the PIC flag is empty. It appears that all Alpha + # Linux and Compaq Tru64 Unix objects are PIC. + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + *) + ;; + esac + ;; + psos*) + ;; + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + ;; + *) + ;; + esac + ;; + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + lcc*) + # Lucid + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + ;; + *) + ;; + esac + ;; + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + case $cc_basename in + CC*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + esac + ;; + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + ;; + *) + ;; + esac + ;; + vxworks*) + ;; + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +], +[ + if test "$GCC" = yes; then + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + + case $host_os in + aix*) + # All AIX code is PIC. + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4' + ;; + esac + ;; + + beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) + # PIC is the default for these OSes. + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + # Although the cygwin gcc ignores -fPIC, still need this for old-style + # (--disable-auto-import) libraries + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + darwin* | rhapsody*) + # PIC is the default on this platform + # Common symbols not allowed in MH_DYLIB files + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common' + ;; + + haiku*) + # PIC is the default for Haiku. + # The "-static" flag exists, but is broken. + _LT_TAGVAR(lt_prog_compiler_static, $1)= + ;; + + hpux*) + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. + case $host_cpu in + hppa*64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + ;; + + interix[[3-9]]*) + # Interix 3.x gcc -fpic/-fPIC options generate broken code. + # Instead, we relocate shared libraries at runtime. + ;; + + msdosdjgpp*) + # Just because we use GCC doesn't mean we suddenly get shared libraries + # on systems that don't support them. + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + enable_shared=no + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic + fi + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + ;; + esac + + case $cc_basename in + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Xlinker ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Xcompiler -fPIC' + ;; + esac + else + # PORTME Check for flag to pass linker flags through the system compiler. + case $host_os in + aix*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + if test "$host_cpu" = ia64; then + # AIX 5 now supports IA64 processor + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + else + _LT_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp' + fi + ;; + + mingw* | cygwin* | pw32* | os2* | cegcc*) + # This hack is so that the source file can tell whether it is being + # built for inclusion in a dll (and should export symbols for example). + m4_if([$1], [GCJ], [], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT']) + ;; + + hpux9* | hpux10* | hpux11*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but + # not for PA HP-UX. + case $host_cpu in + hppa*64*|ia64*) + # +Z the default + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='+Z' + ;; + esac + # Is there a better lt_prog_compiler_static that works with the bundled CC? + _LT_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive' + ;; + + irix5* | irix6* | nonstopux*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # PIC (with -KPIC) is the default. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + # old Intel for x86_64 which still supported -KPIC. + ecc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='--shared' + _LT_TAGVAR(lt_prog_compiler_static, $1)='--static' + ;; + nagfor*) + # NAG Fortran compiler + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,-Wl,,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group compilers (*not* the Pentium gcc compiler, + # which looks to be a dead project) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + ccc*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All Alpha code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + xl* | bgxl* | bgf* | mpixl*) + # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-qpic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-qstaticlink' + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ F* | *Sun*Fortran*) + # Sun Fortran 8.3 passes all unrecognized flags to the linker + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='' + ;; + *Sun\ C*) + # Sun C 5.9 + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + ;; + esac + ;; + esac + ;; + + newsos6) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *nto* | *qnx*) + # QNX uses GNU C++, but need to define -shared option too, otherwise + # it will coredump. + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC -shared' + ;; + + osf3* | osf4* | osf5*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + # All OSF/1 code is PIC. + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + rdos*) + _LT_TAGVAR(lt_prog_compiler_static, $1)='-non_shared' + ;; + + solaris*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + case $cc_basename in + f77* | f90* | f95* | sunf77* | sunf90* | sunf95*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';; + *) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';; + esac + ;; + + sunos4*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-PIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4 | sysv4.2uw2* | sysv4.3*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + sysv4*MP*) + if test -d /usr/nec ;then + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + fi + ;; + + sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + unicos*) + _LT_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,' + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + + uts4*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)='-pic' + _LT_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic' + ;; + + *) + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no + ;; + esac + fi +]) +case $host_os in + # For platforms which do not support PIC, -DPIC is meaningless: + *djgpp*) + _LT_TAGVAR(lt_prog_compiler_pic, $1)= + ;; + *) + _LT_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])" + ;; +esac + +AC_CACHE_CHECK([for $compiler option to produce PIC], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)], + [_LT_TAGVAR(lt_cv_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_prog_compiler_pic, $1)]) +_LT_TAGVAR(lt_prog_compiler_pic, $1)=$_LT_TAGVAR(lt_cv_prog_compiler_pic, $1) + +# +# Check to make sure the PIC flag actually works. +# +if test -n "$_LT_TAGVAR(lt_prog_compiler_pic, $1)"; then + _LT_COMPILER_OPTION([if $compiler PIC flag $_LT_TAGVAR(lt_prog_compiler_pic, $1) works], + [_LT_TAGVAR(lt_cv_prog_compiler_pic_works, $1)], + [$_LT_TAGVAR(lt_prog_compiler_pic, $1)@&t@m4_if([$1],[],[ -DPIC],[m4_if([$1],[CXX],[ -DPIC],[])])], [], + [case $_LT_TAGVAR(lt_prog_compiler_pic, $1) in + "" | " "*) ;; + *) _LT_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_TAGVAR(lt_prog_compiler_pic, $1)" ;; + esac], + [_LT_TAGVAR(lt_prog_compiler_pic, $1)= + _LT_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no]) +fi +_LT_TAGDECL([pic_flag], [lt_prog_compiler_pic], [1], + [Additional compiler flags for building library objects]) + +_LT_TAGDECL([wl], [lt_prog_compiler_wl], [1], + [How to pass a linker flag through the compiler]) +# +# Check to make sure the static flag actually works. +# +wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_TAGVAR(lt_prog_compiler_static, $1)\" +_LT_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works], + _LT_TAGVAR(lt_cv_prog_compiler_static_works, $1), + $lt_tmp_static_flag, + [], + [_LT_TAGVAR(lt_prog_compiler_static, $1)=]) +_LT_TAGDECL([link_static_flag], [lt_prog_compiler_static], [1], + [Compiler flag to prevent dynamic linking]) +])# _LT_COMPILER_PIC + + +# _LT_LINKER_SHLIBS([TAGNAME]) +# ---------------------------- +# See if the linker supports building shared libraries. +m4_defun([_LT_LINKER_SHLIBS], +[AC_REQUIRE([LT_PATH_LD])dnl +AC_REQUIRE([LT_PATH_NM])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_DECL_SED])dnl +m4_require([_LT_CMD_GLOBAL_SYMBOLS])dnl +m4_require([_LT_TAG_COMPILER])dnl +AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) +m4_if([$1], [CXX], [ + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + case $host_os in + aix[[4-9]]*) + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global defined + # symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + ;; + pw32*) + _LT_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds" + ;; + cygwin* | mingw* | cegcc*) + case $cc_basename in + cl*) ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + ;; + esac + ;; + *) + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + ;; + esac +], [ + runpath_var= + _LT_TAGVAR(allow_undefined_flag, $1)= + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(archive_cmds, $1)= + _LT_TAGVAR(archive_expsym_cmds, $1)= + _LT_TAGVAR(compiler_needs_object, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(hardcode_automatic, $1)=no + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= + _LT_TAGVAR(hardcode_libdir_separator, $1)= + _LT_TAGVAR(hardcode_minus_L, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported + _LT_TAGVAR(inherit_rpath, $1)=no + _LT_TAGVAR(link_all_deplibs, $1)=unknown + _LT_TAGVAR(module_cmds, $1)= + _LT_TAGVAR(module_expsym_cmds, $1)= + _LT_TAGVAR(old_archive_from_new_cmds, $1)= + _LT_TAGVAR(old_archive_from_expsyms_cmds, $1)= + _LT_TAGVAR(thread_safe_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + # include_expsyms should be a list of space-separated symbols to be *always* + # included in the symbol list + _LT_TAGVAR(include_expsyms, $1)= + # exclude_expsyms can be an extended regexp of symbols to exclude + # it will be wrapped by ` (' and `)$', so one must not match beginning or + # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', + # as well as any symbol that contains `d'. + _LT_TAGVAR(exclude_expsyms, $1)=['_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*'] + # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out + # platforms (ab)use it in PIC code, but their linkers get confused if + # the symbol is explicitly referenced. Since portable code cannot + # rely on this symbol name, it's probably fine to never include it in + # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. +dnl Note also adjust exclude_expsyms for C++ above. + extract_expsyms_cmds= + + case $host_os in + cygwin* | mingw* | pw32* | cegcc*) + # FIXME: the MSVC++ port hasn't been tested in a loooong time + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + if test "$GCC" != yes; then + with_gnu_ld=no + fi + ;; + interix*) + # we just hope/assume this is gcc and not c89 (= MSVC++) + with_gnu_ld=yes + ;; + openbsd*) + with_gnu_ld=no + ;; + esac + + _LT_TAGVAR(ld_shlibs, $1)=yes + + # On some targets, GNU ld is compatible enough with the native linker + # that we're better off using the native interface for both. + lt_use_gnu_ld_interface=no + if test "$with_gnu_ld" = yes; then + case $host_os in + aix*) + # The AIX port of GNU ld has always aspired to compatibility + # with the native linker. However, as the warning in the GNU ld + # block says, versions before 2.19.5* couldn't really create working + # shared libraries, regardless of the interface used. + case `$LD -v 2>&1` in + *\ \(GNU\ Binutils\)\ 2.19.5*) ;; + *\ \(GNU\ Binutils\)\ 2.[[2-9]]*) ;; + *\ \(GNU\ Binutils\)\ [[3-9]]*) ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + ;; + *) + lt_use_gnu_ld_interface=yes + ;; + esac + fi + + if test "$lt_use_gnu_ld_interface" = yes; then + # If archive_cmds runs LD, not CC, wlarc should be empty + wlarc='${wl}' + + # Set some defaults for GNU ld with shared library support. These + # are reset later if shared libraries are not supported. Putting them + # here allows them to be overridden if necessary. + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + # ancient GNU ld didn't support --whole-archive et. al. + if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + supports_anon_versioning=no + case `$LD -v 2>&1` in + *GNU\ gold*) supports_anon_versioning=yes ;; + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.10.*) ;; # catch versions < 2.11 + *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... + *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... + *\ 2.11.*) ;; # other 2.11 versions + *) supports_anon_versioning=yes ;; + esac + + # See if GNU ld supports shared libraries. + case $host_os in + aix[[3-9]]*) + # On AIX/PPC, the GNU linker is very broken + if test "$host_cpu" != ia64; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: the GNU linker, at least up to release 2.19, is reported +*** to be unable to reliably create shared libraries on AIX. +*** Therefore, libtool is disabling shared libraries support. If you +*** really care for shared libraries, you may want to install binutils +*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +*** You will then need to restart the configuration process. + +_LT_EOF + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1 DATA/;s/^.*[[ ]]__nm__\([[^ ]]*\)[[ ]][[^ ]]*/\1 DATA/;/^I[[ ]]/d;/^[[AITW]][[ ]]/s/.* //'\'' | sort | uniq > $export_symbols' + _LT_TAGVAR(exclude_expsyms, $1)=['[_]+GLOBAL_OFFSET_TABLE_|[_]+GLOBAL__[FID]_.*|[_]+head_[A-Za-z0-9_]+_dll|[A-Za-z0-9_]+_dll_iname'] + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + + gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu) + tmp_diet=no + if test "$host_os" = linux-dietlibc; then + case $cc_basename in + diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) + esac + fi + if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ + && test "$tmp_diet" = no + then + tmp_addflag=' $pic_flag' + tmp_sharedflag='-shared' + case $cc_basename,$host_cpu in + pgcc*) # Portland Group C compiler + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag' + ;; + pgf77* | pgf90* | pgf95* | pgfortran*) + # Portland Group f77 and f90 compilers + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + tmp_addflag=' $pic_flag -Mnomain' ;; + ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 + tmp_addflag=' -i_dynamic' ;; + efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 + tmp_addflag=' -i_dynamic -nofor_main' ;; + ifc* | ifort*) # Intel Fortran compiler + tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + _LT_TAGVAR(whole_archive_flag_spec, $1)= + tmp_sharedflag='--shared' ;; + xl[[cC]]* | bgxl[[cC]]* | mpixl[[cC]]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; + nvcc*) # Cuda Compiler Driver 2.2 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + ;; + esac + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) # Sun C 5.9 + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + tmp_sharedflag='-G' ;; + *Sun\ F*) # Sun Fortran 8.3 + tmp_sharedflag='-G' ;; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + + case $cc_basename in + xlf* | bgf* | bgxlf* | mpixlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + _LT_TAGVAR(whole_archive_flag_spec, $1)='--whole-archive$convenience --no-whole-archive' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir' + _LT_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $linker_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' + wlarc= + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + fi + ;; + + solaris*) + if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: The releases 2.8.* of the GNU linker cannot reliably +*** create shared libraries on Solaris systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.9.1 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) + case `$LD -v 2>&1` in + *\ [[01]].* | *\ 2.[[0-9]].* | *\ 2.1[[0-5]].*) + _LT_TAGVAR(ld_shlibs, $1)=no + cat <<_LT_EOF 1>&2 + +*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +*** reliably create shared libraries on SCO systems. Therefore, libtool +*** is disabling shared libraries support. We urge you to upgrade GNU +*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +*** your PATH or compiler configuration so that the native linker is +*** used, and then restart. + +_LT_EOF + ;; + *) + # For security reasons, it is highly recommended that you always + # use absolute paths for naming shared libraries, and exclude the + # DT_RUNPATH tag from executables and libraries. But doing so + # requires that you compile everything twice, which is a pain. + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + sunos4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + + if test "$_LT_TAGVAR(ld_shlibs, $1)" = no; then + runpath_var= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)= + _LT_TAGVAR(export_dynamic_flag_spec, $1)= + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + # PORTME fill in a description of your system's linker (not GNU ld) + case $host_os in + aix3*) + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(archive_expsym_cmds, $1)='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' + # Note: this linker hardcodes the directories in LIBPATH if there + # are no directories specified by -L. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then + # Neither direct hardcoding nor static linking is supported with a + # broken collect2. + _LT_TAGVAR(hardcode_direct, $1)=unsupported + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + # If we're using GNU nm, then we don't want the "-C" option. + # -C means demangle to AIX nm, but means don't demangle with GNU nm + # Also, AIX nm treats weak defined symbols like other global + # defined symbols, whereas GNU nm marks them as "W". + if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + else + _LT_TAGVAR(export_symbols_cmds, $1)='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && ([substr](\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + fi + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then + aix_use_runtimelinking=yes + break + fi + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GCC" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + ;; + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + amigaos*) + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='' + ;; + m68k) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + ;; + + bsdi[[45]]*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic + ;; + + cygwin* | mingw* | pw32* | cegcc*) + # When not using gcc, we currently assume that we are using + # Microsoft Visual C++. + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + case $cc_basename in + cl*) + # Native MSVC + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + sed -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + sed -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + _LT_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]][[ ]]/s/.*[[ ]]\([[^ ]]*\)/\1,DATA/'\'' | $SED -e '\''/^[[AITW]][[ ]]/s/.*[[ ]]//'\'' | sort | uniq > $export_symbols' + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # Assume MSVC wrapper + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' + # The linker will automatically build a .lib file if we build a DLL. + _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + # FIXME: Should let the user specify the lib program. + _LT_TAGVAR(old_archive_cmds, $1)='lib -OUT:$oldlib$oldobjs$old_deplibs' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + ;; + esac + ;; + + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + freebsd1*) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor + # support. Future versions do this automatically, but an explicit c++rt0.o + # does not break anything, and helps significantly (at the cost of a little + # extra space). + freebsd2.2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # Unfortunately, older versions of FreeBSD 2 do not have this feature. + freebsd2*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + # FreeBSD 3 and greater uses gcc -shared to do shared libraries. + freebsd* | dragonfly*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + hpux9*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + + hpux10*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + fi + ;; + + hpux11*) + if test "$GCC" = yes && test "$with_gnu_ld" = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + else + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + m4_if($1, [], [ + # Older versions of the 11.00 compiler do not understand -b yet + # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) + _LT_LINKER_OPTION([if $CC understands -b], + _LT_TAGVAR(lt_cv_prog_compiler__b, $1), [-b], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'], + [_LT_TAGVAR(archive_cmds, $1)='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags'])], + [_LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags']) + ;; + esac + fi + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + + # hardcode_minus_L: Not really in the search PATH, + # but as the default location of the library. + _LT_TAGVAR(hardcode_minus_L, $1)=yes + ;; + esac + fi + ;; + + irix5* | irix6* | nonstopux*) + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + # Try to use the -exported_symbol ld option, if it does not + # work, assume that -exports_file does not work either and + # implicitly export all symbols. + # This should be the same for all languages, so no per-tag cache variable. + AC_CACHE_CHECK([whether the $host_os linker accepts -exported_symbol], + [lt_cv_irix_exported_symbol], + [save_LDFLAGS="$LDFLAGS" + LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" + AC_LINK_IFELSE( + [AC_LANG_SOURCE( + [AC_LANG_CASE([C], [[int foo (void) { return 0; }]], + [C++], [[int foo (void) { return 0; }]], + [Fortran 77], [[ + subroutine foo + end]], + [Fortran], [[ + subroutine foo + end]])])], + [lt_cv_irix_exported_symbol=yes], + [lt_cv_irix_exported_symbol=no]) + LDFLAGS="$save_LDFLAGS"]) + if test "$lt_cv_irix_exported_symbol" = yes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' + fi + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out + else + _LT_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + newsos6) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *nto* | *qnx*) + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + else + case $host_os in + openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*) + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + ;; + esac + fi + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + os2*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(archive_cmds, $1)='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' + _LT_TAGVAR(old_archive_from_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' + ;; + + osf3*) + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + osf4* | osf5*) # as osf3* with the addition of -msym flag + if test "$GCC" = yes; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $pic_flag $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + else + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ + $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' + + # Both c and cxx compiler support -rpath directly + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)='no' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + ;; + + solaris*) + _LT_TAGVAR(no_undefined_flag, $1)=' -z defs' + if test "$GCC" = yes; then + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + else + case `$CC -V 2>&1` in + *"Compilers 5.0"*) + wlarc='' + _LT_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' + ;; + *) + wlarc='${wl}' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' + ;; + esac + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. GCC discards it without `$wl', + # but is careful enough not to reorder. + # Supported since Solaris 2.6 (maybe 2.5.1?) + if test "$GCC" = yes; then + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + fi + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + sunos4*) + if test "x$host_vendor" = xsequent; then + # Use $CC to link under sequent, because it throws in some extra .o + # files that make .init and .fini sections work. + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' + fi + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4) + case $host_vendor in + sni) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=yes # is this really true??? + ;; + siemens) + ## LD is ld it makes a PLAMLIB + ## CC just makes a GrossModule. + _LT_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs' + _LT_TAGVAR(hardcode_direct, $1)=no + ;; + motorola) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie + ;; + esac + runpath_var='LD_RUN_PATH' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + sysv4.3*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport' + ;; + + sysv4*MP*) + if test -d /usr/nec; then + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var=LD_RUN_PATH + hardcode_runpath_var=yes + _LT_TAGVAR(ld_shlibs, $1)=yes + fi + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + if test "$GCC" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + fi + ;; + + uts4*) + _LT_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + + *) + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + if test x$host_vendor = xsni; then + case $host in + sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Blargedynsym' + ;; + esac + fi + fi +]) +AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) +test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + +_LT_TAGVAR(with_gnu_ld, $1)=$with_gnu_ld + +_LT_DECL([], [libext], [0], [Old archive suffix (normally "a")])dnl +_LT_DECL([], [shrext_cmds], [1], [Shared library suffix (normally ".so")])dnl +_LT_DECL([], [extract_expsyms_cmds], [2], + [The commands to extract the exported symbol list from a shared archive]) + +# +# Do we need to explicitly link libc? +# +case "x$_LT_TAGVAR(archive_cmds_need_lc, $1)" in +x|xyes) + # Assume -lc should be added + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + + if test "$enable_shared" = yes && test "$GCC" = yes; then + case $_LT_TAGVAR(archive_cmds, $1) in + *'~'*) + # FIXME: we may have to deal with multi-command sequences. + ;; + '$CC '*) + # Test whether the compiler implicitly links with -lc since on some + # systems, -lgcc has to come before -lc. If gcc already passes -lc + # to ld, don't add -lc before -lgcc. + AC_CACHE_CHECK([whether -lc should be explicitly linked in], + [lt_cv_]_LT_TAGVAR(archive_cmds_need_lc, $1), + [$RM conftest* + echo "$lt_simple_compile_test_code" > conftest.$ac_ext + + if AC_TRY_EVAL(ac_compile) 2>conftest.err; then + soname=conftest + lib=conftest + libobjs=conftest.$ac_objext + deplibs= + wl=$_LT_TAGVAR(lt_prog_compiler_wl, $1) + pic_flag=$_LT_TAGVAR(lt_prog_compiler_pic, $1) + compiler_flags=-v + linker_flags=-v + verstring= + output_objdir=. + libname=conftest + lt_save_allow_undefined_flag=$_LT_TAGVAR(allow_undefined_flag, $1) + _LT_TAGVAR(allow_undefined_flag, $1)= + if AC_TRY_EVAL(_LT_TAGVAR(archive_cmds, $1) 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) + then + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=no + else + lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1)=yes + fi + _LT_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag + else + cat conftest.err 1>&5 + fi + $RM conftest* + ]) + _LT_TAGVAR(archive_cmds_need_lc, $1)=$lt_cv_[]_LT_TAGVAR(archive_cmds_need_lc, $1) + ;; + esac + fi + ;; +esac + +_LT_TAGDECL([build_libtool_need_lc], [archive_cmds_need_lc], [0], + [Whether or not to add -lc for building shared libraries]) +_LT_TAGDECL([allow_libtool_libs_with_static_runtimes], + [enable_shared_with_static_runtimes], [0], + [Whether or not to disallow shared libs when runtime libs are static]) +_LT_TAGDECL([], [export_dynamic_flag_spec], [1], + [Compiler flag to allow reflexive dlopens]) +_LT_TAGDECL([], [whole_archive_flag_spec], [1], + [Compiler flag to generate shared objects directly from archives]) +_LT_TAGDECL([], [compiler_needs_object], [1], + [Whether the compiler copes with passing no objects directly]) +_LT_TAGDECL([], [old_archive_from_new_cmds], [2], + [Create an old-style archive from a shared archive]) +_LT_TAGDECL([], [old_archive_from_expsyms_cmds], [2], + [Create a temporary old-style archive to link instead of a shared archive]) +_LT_TAGDECL([], [archive_cmds], [2], [Commands used to build a shared archive]) +_LT_TAGDECL([], [archive_expsym_cmds], [2]) +_LT_TAGDECL([], [module_cmds], [2], + [Commands used to build a loadable module if different from building + a shared archive.]) +_LT_TAGDECL([], [module_expsym_cmds], [2]) +_LT_TAGDECL([], [with_gnu_ld], [1], + [Whether we are building with GNU ld or not]) +_LT_TAGDECL([], [allow_undefined_flag], [1], + [Flag that allows shared libraries with undefined symbols to be built]) +_LT_TAGDECL([], [no_undefined_flag], [1], + [Flag that enforces no undefined symbols]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec], [1], + [Flag to hardcode $libdir into a binary during linking. + This must work even if $libdir does not exist]) +_LT_TAGDECL([], [hardcode_libdir_flag_spec_ld], [1], + [[If ld is used when linking, flag to hardcode $libdir into a binary + during linking. This must work even if $libdir does not exist]]) +_LT_TAGDECL([], [hardcode_libdir_separator], [1], + [Whether we need a single "-rpath" flag with a separated argument]) +_LT_TAGDECL([], [hardcode_direct], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary]) +_LT_TAGDECL([], [hardcode_direct_absolute], [0], + [Set to "yes" if using DIR/libNAME${shared_ext} during linking hardcodes + DIR into the resulting binary and the resulting library dependency is + "absolute", i.e impossible to change by setting ${shlibpath_var} if the + library is relocated]) +_LT_TAGDECL([], [hardcode_minus_L], [0], + [Set to "yes" if using the -LDIR flag during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_shlibpath_var], [0], + [Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR + into the resulting binary]) +_LT_TAGDECL([], [hardcode_automatic], [0], + [Set to "yes" if building a shared library automatically hardcodes DIR + into the library and all subsequent libraries and executables linked + against it]) +_LT_TAGDECL([], [inherit_rpath], [0], + [Set to yes if linker adds runtime paths of dependent libraries + to runtime path list]) +_LT_TAGDECL([], [link_all_deplibs], [0], + [Whether libtool must link a program against all its dependency libraries]) +_LT_TAGDECL([], [always_export_symbols], [0], + [Set to "yes" if exported symbols are required]) +_LT_TAGDECL([], [export_symbols_cmds], [2], + [The commands to list exported symbols]) +_LT_TAGDECL([], [exclude_expsyms], [1], + [Symbols that should not be listed in the preloaded symbols]) +_LT_TAGDECL([], [include_expsyms], [1], + [Symbols that must always be exported]) +_LT_TAGDECL([], [prelink_cmds], [2], + [Commands necessary for linking programs (against libraries) with templates]) +_LT_TAGDECL([], [postlink_cmds], [2], + [Commands necessary for finishing linking programs]) +_LT_TAGDECL([], [file_list_spec], [1], + [Specify filename containing input files]) +dnl FIXME: Not yet implemented +dnl _LT_TAGDECL([], [thread_safe_flag_spec], [1], +dnl [Compiler flag to generate thread safe objects]) +])# _LT_LINKER_SHLIBS + + +# _LT_LANG_C_CONFIG([TAG]) +# ------------------------ +# Ensure that the configuration variables for a C compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_C_CONFIG], +[m4_require([_LT_DECL_EGREP])dnl +lt_save_CC="$CC" +AC_LANG_PUSH(C) + +# Source file extension for C test sources. +ac_ext=c + +# Object file extension for compiled C test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="int some_variable = 0;" + +# Code to be used in simple link tests +lt_simple_link_test_code='int main(){return(0);}' + +_LT_TAG_COMPILER +# Save the default compiler, since it gets overwritten when the other +# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +compiler_DEFAULT=$CC + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + LT_SYS_DLOPEN_SELF + _LT_CMD_STRIPLIB + + # Report which library types will actually be built + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_CONFIG($1) +fi +AC_LANG_POP +CC="$lt_save_CC" +])# _LT_LANG_C_CONFIG + + +# _LT_LANG_CXX_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a C++ compiler are suitably +# defined. These variables are subsequently used by _LT_CONFIG to write +# the compiler configuration to `libtool'. +m4_defun([_LT_LANG_CXX_CONFIG], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +m4_require([_LT_DECL_EGREP])dnl +m4_require([_LT_PATH_MANIFEST_TOOL])dnl +if test -n "$CXX" && ( test "X$CXX" != "Xno" && + ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) || + (test "X$CXX" != "Xg++"))) ; then + AC_PROG_CXXCPP +else + _lt_caught_CXX_error=yes +fi + +AC_LANG_PUSH(C++) +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(compiler_needs_object, $1)=no +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_shlibpath_var, $1)=unsupported +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for C++ test sources. +ac_ext=cpp + +# Object file extension for compiled C++ test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the CXX compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_caught_CXX_error" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="int some_variable = 0;" + + # Code to be used in simple link tests + lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }' + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC=$CC + lt_save_CFLAGS=$CFLAGS + lt_save_LD=$LD + lt_save_GCC=$GCC + GCC=$GXX + lt_save_with_gnu_ld=$with_gnu_ld + lt_save_path_LD=$lt_cv_path_LD + if test -n "${lt_cv_prog_gnu_ldcxx+set}"; then + lt_cv_prog_gnu_ld=$lt_cv_prog_gnu_ldcxx + else + $as_unset lt_cv_prog_gnu_ld + fi + if test -n "${lt_cv_path_LDCXX+set}"; then + lt_cv_path_LD=$lt_cv_path_LDCXX + else + $as_unset lt_cv_path_LD + fi + test -z "${LDCXX+set}" || LD=$LDCXX + CC=${CXX-"c++"} + CFLAGS=$CXXFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + # We don't want -fno-exception when compiling C++ code, so set the + # no_builtin_flag separately + if test "$GXX" = yes; then + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin' + else + _LT_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)= + fi + + if test "$GXX" = yes; then + # Set up default GNU C++ configuration + + LT_PATH_LD + + # Check if GNU C++ uses GNU ld as the underlying linker, since the + # archiving commands below assume that GNU ld is being used. + if test "$with_gnu_ld" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC $pic_flag -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # If archive_cmds runs LD, not CC, wlarc should be empty + # XXX I think wlarc can be eliminated in ltcf-cxx, but I need to + # investigate it a little bit more. (MM) + wlarc='${wl}' + + # ancient GNU ld didn't support --whole-archive et. al. + if eval "`$CC -print-prog-name=ld` --help 2>&1" | + $GREP 'no-whole-archive' > /dev/null; then + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + else + _LT_TAGVAR(whole_archive_flag_spec, $1)= + fi + else + with_gnu_ld=no + wlarc= + + # A generic and very simple default shared library creation + # command for GNU C++ for the case where it uses the native + # linker, instead of GNU ld. If possible, this setting should + # overridden to take advantage of the native linker features on + # the platform it is being used on. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + fi + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + GXX=no + with_gnu_ld=no + wlarc= + fi + + # PORTME: fill in a description of your system's C++ link characteristics + AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries]) + _LT_TAGVAR(ld_shlibs, $1)=yes + case $host_os in + aix3*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aix[[4-9]]*) + if test "$host_cpu" = ia64; then + # On IA64, the linker does run time linking by default, so we don't + # have to do anything special. + aix_use_runtimelinking=no + exp_sym_flag='-Bexport' + no_entry_flag="" + else + aix_use_runtimelinking=no + + # Test if we are trying to use run time linking or normal + # AIX style linking. If -brtl is somewhere in LDFLAGS, we + # need to do runtime linking. + case $host_os in aix4.[[23]]|aix4.[[23]].*|aix[[5-9]]*) + for ld_flag in $LDFLAGS; do + case $ld_flag in + *-brtl*) + aix_use_runtimelinking=yes + break + ;; + esac + done + ;; + esac + + exp_sym_flag='-bexport' + no_entry_flag='-bnoentry' + fi + + # When large executables or shared objects are built, AIX ld can + # have problems creating the table of contents. If linking a library + # or program results in "error TOC overflow" add -mminimal-toc to + # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not + # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. + + _LT_TAGVAR(archive_cmds, $1)='' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='${wl}-f,' + + if test "$GXX" = yes; then + case $host_os in aix4.[[012]]|aix4.[[012]].*) + # We only want to do this on AIX 4.2 and lower, the check + # below for broken collect2 doesn't work under 4.3+ + collect2name=`${CC} -print-prog-name=collect2` + if test -f "$collect2name" && + strings "$collect2name" | $GREP resolve_lib_name >/dev/null + then + # We have reworked collect2 + : + else + # We have old collect2 + _LT_TAGVAR(hardcode_direct, $1)=unsupported + # It fails to find uninstalled libraries when the uninstalled + # path is not listed in the libpath. Setting hardcode_minus_L + # to unsupported forces relinking + _LT_TAGVAR(hardcode_minus_L, $1)=yes + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)= + fi + esac + shared_flag='-shared' + if test "$aix_use_runtimelinking" = yes; then + shared_flag="$shared_flag "'${wl}-G' + fi + else + # not using gcc + if test "$host_cpu" = ia64; then + # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release + # chokes on -Wl,-G. The following line is correct: + shared_flag='-G' + else + if test "$aix_use_runtimelinking" = yes; then + shared_flag='${wl}-G' + else + shared_flag='${wl}-bM:SRE' + fi + fi + fi + + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-bexpall' + # It seems that -bexpall does not export symbols beginning with + # underscore (_), so it is better to generate a list of symbols to + # export. + _LT_TAGVAR(always_export_symbols, $1)=yes + if test "$aix_use_runtimelinking" = yes; then + # Warning - without using the other runtime loading flags (-brtl), + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(allow_undefined_flag, $1)='-berok' + # Determine the default libpath from the value encoded in an empty + # executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" + else + if test "$host_cpu" = ia64; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib' + _LT_TAGVAR(allow_undefined_flag, $1)="-z nodefs" + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" + else + # Determine the default libpath from the value encoded in an + # empty executable. + _LT_SYS_MODULE_PATH_AIX([$1]) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath" + # Warning - without using the other run time loading flags, + # -berok will link without error, but may produce a broken library. + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok' + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok' + if test "$with_gnu_ld" = yes; then + # We only use this code for GNU lds that support --whole-archive. + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + else + # Exported symbols can be pulled into shared objects from archives + _LT_TAGVAR(whole_archive_flag_spec, $1)='$convenience' + fi + _LT_TAGVAR(archive_cmds_need_lc, $1)=yes + # This is similar to how AIX traditionally builds its shared + # libraries. + _LT_TAGVAR(archive_expsym_cmds, $1)="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' + fi + fi + ;; + + beos*) + if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + # Joseph Beckenbach says some releases of gcc + # support --undefined. This deserves some investigation. FIXME + _LT_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + chorus*) + case $cc_basename in + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + cygwin* | mingw* | pw32* | cegcc*) + case $GXX,$cc_basename in + ,cl* | no,cl*) + # Native MSVC + # hardcode_libdir_flag_spec is actually meaningless, as there is + # no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)=' ' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=yes + _LT_TAGVAR(file_list_spec, $1)='@' + # Tell ltmain to make .lib files, not .a files. + libext=lib + # Tell ltmain to make .dll files, not .so files. + shrext_cmds=".dll" + # FIXME: Setting linknames here is a bad hack. + _LT_TAGVAR(archive_cmds, $1)='$CC -o $output_objdir/$soname $libobjs $compiler_flags $deplibs -Wl,-dll~linknames=' + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + $SED -n -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' -e '1\\\!p' < $export_symbols > $output_objdir/$soname.exp; + else + $SED -e 's/\\\\\\\(.*\\\\\\\)/-link\\\ -EXPORT:\\\\\\\1/' < $export_symbols > $output_objdir/$soname.exp; + fi~ + $CC -o $tool_output_objdir$soname $libobjs $compiler_flags $deplibs "@$tool_output_objdir$soname.exp" -Wl,-DLL,-IMPLIB:"$tool_output_objdir$libname.dll.lib"~ + linknames=' + # The linker will not automatically build a static lib if we build a DLL. + # _LT_TAGVAR(old_archive_from_new_cmds, $1)='true' + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + # Don't use ranlib + _LT_TAGVAR(old_postinstall_cmds, $1)='chmod 644 $oldlib' + _LT_TAGVAR(postlink_cmds, $1)='lt_outputfile="@OUTPUT@"~ + lt_tool_outputfile="@TOOL_OUTPUT@"~ + case $lt_outputfile in + *.exe|*.EXE) ;; + *) + lt_outputfile="$lt_outputfile.exe" + lt_tool_outputfile="$lt_tool_outputfile.exe" + ;; + esac~ + func_to_tool_file "$lt_outputfile"~ + if test "$MANIFEST_TOOL" != ":" && test -f "$lt_outputfile.manifest"; then + $MANIFEST_TOOL -manifest "$lt_tool_outputfile.manifest" -outputresource:"$lt_tool_outputfile" || exit 1; + $RM "$lt_outputfile.manifest"; + fi' + ;; + *) + # g++ + # _LT_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless, + # as there is no search path for DLLs. + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-all-symbols' + _LT_TAGVAR(allow_undefined_flag, $1)=unsupported + _LT_TAGVAR(always_export_symbols, $1)=no + _LT_TAGVAR(enable_shared_with_static_runtimes, $1)=yes + + if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + # If the export-symbols file already is a .def file (1st line + # is EXPORTS), use it as is; otherwise, prepend... + _LT_TAGVAR(archive_expsym_cmds, $1)='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then + cp $export_symbols $output_objdir/$soname.def; + else + echo EXPORTS > $output_objdir/$soname.def; + cat $export_symbols >> $output_objdir/$soname.def; + fi~ + $CC -shared -nostdlib $output_objdir/$soname.def $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + darwin* | rhapsody*) + _LT_DARWIN_LINKER_FEATURES($1) + ;; + + dgux*) + case $cc_basename in + ec++*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + ghcx*) + # Green Hills C++ Compiler + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + freebsd[[12]]*) + # C++ shared libraries reported to be fairly broken before + # switch to ELF + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + freebsd-elf*) + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + ;; + + freebsd* | dragonfly*) + # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF + # conventions + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + gnu*) + ;; + + haiku*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + + hpux9*) + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -b ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $EGREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + _LT_TAGVAR(archive_cmds, $1)='$RM $output_objdir/$soname~$CC -shared -nostdlib $pic_flag ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + hpux10*|hpux11*) + if test $with_gnu_ld = no; then + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + case $host_cpu in + hppa*64*|ia64*) + ;; + *) + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + ;; + esac + fi + case $host_cpu in + hppa*64*|ia64*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + ;; + *) + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(hardcode_minus_L, $1)=yes # Not in the search PATH, + # but as the default + # location of the library. + ;; + esac + + case $cc_basename in + CC*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + aCC*) + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`($CC -b $CFLAGS -v conftest.$objext 2>&1) | $GREP "\-L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes; then + if test $with_gnu_ld = no; then + case $host_cpu in + hppa*64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + ia64*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $pic_flag ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + ;; + esac + fi + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + interix[[3-9]]*) + _LT_TAGVAR(hardcode_direct, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. + # Instead, shared libraries are loaded at an image base (0x10000000 by + # default) and relocated if they conflict, which is a slow very memory + # consuming and fragmenting process. To avoid this, we pick a random, + # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link + # time. Moving up from 0x10000000 also allows more sbrk(2) space. + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' + ;; + irix5* | irix6*) + case $cc_basename in + CC*) + # SGI C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + + # Archives containing C++ object files must be created using + # "CC -ar", where "CC" is the IRIX C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -ar -WR,-u -o $oldlib $oldobjs' + ;; + *) + if test "$GXX" = yes; then + if test "$with_gnu_ld" = no; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + else + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` -o $lib' + fi + fi + _LT_TAGVAR(link_all_deplibs, $1)=yes + ;; + esac + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + _LT_TAGVAR(inherit_rpath, $1)=yes + ;; + + linux* | k*bsd*-gnu | kopensolaris*-gnu) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo $lib | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib ${wl}-retain-symbols-file,$export_symbols; mv \$templib $lib' + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 | $GREP "ld"`; rm -f libconftest$shared_ext; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + + # Archives containing C++ object files must be created using + # "CC -Bstatic", where "CC" is the KAI C++ compiler. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' + ;; + icpc* | ecpc* ) + # Intel C++ + with_gnu_ld=yes + # version 8.0 and above of icpc choke on multiply defined symbols + # if we add $predep_objects and $postdep_objects, however 7.1 and + # earlier do not add the objects themselves. + case `$CC -V 2>&1` in + *"Version 7."*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + *) # Version 8.0 or newer + tmp_idyn= + case $host_cpu in + ia64*) tmp_idyn=' -i_dynamic';; + esac + _LT_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' + ;; + esac + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive' + ;; + pgCC* | pgcpp*) + # Portland Group C++ compiler + case `$CC -V` in + *pgCC\ [[1-5]].* | *pgcpp\ [[1-5]].*) + _LT_TAGVAR(prelink_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $objs $libobjs $compile_deplibs~ + compile_command="$compile_command `find $tpldir -name \*.o | sort | $NL2SP`"' + _LT_TAGVAR(old_archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $oldobjs$old_deplibs~ + $AR $AR_FLAGS $oldlib$oldobjs$old_deplibs `find $tpldir -name \*.o | sort | $NL2SP`~ + $RANLIB $oldlib' + _LT_TAGVAR(archive_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='tpldir=Template.dir~ + rm -rf $tpldir~ + $CC --prelink_objects --instantiation_dir $tpldir $predep_objects $libobjs $deplibs $convenience $postdep_objects~ + $CC -shared $pic_flag $predep_objects $libobjs $deplibs `find $tpldir -name \*.o | sort | $NL2SP` $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + *) # Version 6 and above use weak symbols + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname ${wl}-retain-symbols-file ${wl}$export_symbols -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + ;; + cxx*) + # Compaq C++ + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib ${wl}-retain-symbols-file $wl$export_symbols' + + runpath_var=LD_RUN_PATH + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld .*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "X$list" | $Xsed' + ;; + xl* | mpixl* | bgxl*) + # IBM XL 8.0 on PPC, with GNU ld + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic' + _LT_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $CC -qmkshrobj $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' + fi + ;; + *) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file ${wl}$export_symbols' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' + _LT_TAGVAR(compiler_needs_object, $1)=yes + + # Not sure whether something based on + # $CC $CFLAGS -v conftest.$objext -o libconftest$shared_ext 2>&1 + # would be better. + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + esac + ;; + esac + ;; + + lynxos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + m88k*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + mvs*) + case $cc_basename in + cxx*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + netbsd*) + if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags' + wlarc= + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + fi + # Workaround some broken pre-1.5 toolchains + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP conftest.$objext | $SED -e "s:-lgcc -lc -lgcc::"' + ;; + + *nto* | *qnx*) + _LT_TAGVAR(ld_shlibs, $1)=yes + ;; + + openbsd2*) + # C++ shared libraries are fairly broken + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + openbsd*) + if test -f /usr/libexec/ld.so; then + _LT_TAGVAR(hardcode_direct, $1)=yes + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_direct_absolute, $1)=yes + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib' + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E' + _LT_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' + fi + output_verbose_link_cmd=func_echo_all + else + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + + osf3* | osf4* | osf5*) + case $cc_basename in + KCC*) + # Kuck and Associates, Inc. (KAI) C++ Compiler + + # KCC will only create a shared library if the output file + # ends with ".so" (or ".sl" for HP-UX), so rename the library + # to its proper name (with version) after linking. + _LT_TAGVAR(archive_cmds, $1)='tempext=`echo $shared_ext | $SED -e '\''s/\([[^()0-9A-Za-z{}]]\)/\\\\\1/g'\''`; templib=`echo "$lib" | $SED -e "s/\${tempext}\..*/.so/"`; $CC $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags --soname $soname -o \$templib; mv \$templib $lib' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Archives containing C++ object files must be created using + # the KAI C++ compiler. + case $host in + osf3*) _LT_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs' ;; + *) _LT_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs' ;; + esac + ;; + RCC*) + # Rational C++ 2.4.1 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + cxx*) + case $host in + osf3*) + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && func_echo_all "${wl}-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + ;; + *) + _LT_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*' + _LT_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done~ + echo "-hidden">> $lib.exp~ + $CC -shared$allow_undefined_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname ${wl}-input ${wl}$lib.exp `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~ + $RM $lib.exp' + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + # + # There doesn't appear to be a way to prevent this compiler from + # explicitly linking system object files so we need to strip them + # from the output so that they don't get included in the library + # dependencies. + output_verbose_link_cmd='templist=`$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP "ld" | $GREP -v "ld:"`; templist=`func_echo_all "$templist" | $SED "s/\(^.*ld.*\)\( .*ld.*$\)/\1/"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; func_echo_all "$list"' + ;; + *) + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*' + case $host in + osf3*) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' + ;; + esac + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=: + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + + else + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + fi + ;; + esac + ;; + + psos*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + sunos4*) + case $cc_basename in + CC*) + # Sun C++ 4.x + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + lcc*) + # Lucid + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + solaris*) + case $cc_basename in + CC* | sunCC*) + # Sun C++ 4.2, 5.x and Centerline C++ + _LT_TAGVAR(archive_cmds_need_lc,$1)=yes + _LT_TAGVAR(no_undefined_flag, $1)=' -zdefs' + _LT_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G${allow_undefined_flag} ${wl}-M ${wl}$lib.exp -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir' + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + # The compiler driver will combine and reorder linker options, + # but understands `-z linker_flag'. + # Supported since Solaris 2.6 (maybe 2.5.1?) + _LT_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' + ;; + esac + _LT_TAGVAR(link_all_deplibs, $1)=yes + + output_verbose_link_cmd='func_echo_all' + + # Archives containing C++ object files must be created using + # "CC -xar", where "CC" is the Sun C++ compiler. This is + # necessary to make sure instantiated templates are included + # in the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs' + ;; + gcx*) + # Green Hills C++ Compiler + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + + # The C++ compiler must be used to create the archive. + _LT_TAGVAR(old_archive_cmds, $1)='$CC $LDFLAGS -archive -o $oldlib $oldobjs' + ;; + *) + # GNU C++ compiler with Solaris linker + if test "$GXX" = yes && test "$with_gnu_ld" = no; then + _LT_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs' + if $CC --version | $GREP -v '^2\.7' > /dev/null; then + _LT_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -shared $pic_flag -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -shared $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + else + # g++ 2.7 appears to require `-G' NOT `-shared' on this + # platform. + _LT_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib' + _LT_TAGVAR(archive_expsym_cmds, $1)='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ + $CC -G -nostdlib ${wl}-M $wl$lib.exp -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags~$RM $lib.exp' + + # Commands to make compiler produce verbose output that lists + # what "hidden" libraries, object files and flags are used when + # linking a shared library. + output_verbose_link_cmd='$CC -G $CFLAGS -v conftest.$objext 2>&1 | $GREP -v "^Configured with:" | $GREP "\-L"' + fi + + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir' + case $host_os in + solaris2.[[0-5]] | solaris2.[[0-5]].*) ;; + *) + _LT_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' + ;; + esac + fi + ;; + esac + ;; + + sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*) + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + sysv5* | sco3.2v5* | sco5v6*) + # Note: We can NOT use -z defs as we might desire, because we do not + # link with -lc, and that would cause any symbols used from libc to + # always be unresolved, which means just about no library would + # ever link correctly. If we're not using GNU ld we use -z text + # though, which does catch some bad symbols but isn't as heavy-handed + # as -z defs. + _LT_TAGVAR(no_undefined_flag, $1)='${wl}-z,text' + _LT_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs' + _LT_TAGVAR(archive_cmds_need_lc, $1)=no + _LT_TAGVAR(hardcode_shlibpath_var, $1)=no + _LT_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R,$libdir' + _LT_TAGVAR(hardcode_libdir_separator, $1)=':' + _LT_TAGVAR(link_all_deplibs, $1)=yes + _LT_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport' + runpath_var='LD_RUN_PATH' + + case $cc_basename in + CC*) + _LT_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(old_archive_cmds, $1)='$CC -Tprelink_objects $oldobjs~ + '"$_LT_TAGVAR(old_archive_cmds, $1)" + _LT_TAGVAR(reload_cmds, $1)='$CC -Tprelink_objects $reload_objs~ + '"$_LT_TAGVAR(reload_cmds, $1)" + ;; + *) + _LT_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + _LT_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' + ;; + esac + ;; + + tandem*) + case $cc_basename in + NCC*) + # NonStop-UX NCC 3.20 + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + ;; + + vxworks*) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + + *) + # FIXME: insert proper C++ library support + _LT_TAGVAR(ld_shlibs, $1)=no + ;; + esac + + AC_MSG_RESULT([$_LT_TAGVAR(ld_shlibs, $1)]) + test "$_LT_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no + + _LT_TAGVAR(GCC, $1)="$GXX" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS + LDCXX=$LD + LD=$lt_save_LD + GCC=$lt_save_GCC + with_gnu_ld=$lt_save_with_gnu_ld + lt_cv_path_LDCXX=$lt_cv_path_LD + lt_cv_path_LD=$lt_save_path_LD + lt_cv_prog_gnu_ldcxx=$lt_cv_prog_gnu_ld + lt_cv_prog_gnu_ld=$lt_save_with_gnu_ld +fi # test "$_lt_caught_CXX_error" != yes + +AC_LANG_POP +])# _LT_LANG_CXX_CONFIG + + +# _LT_FUNC_STRIPNAME_CNF +# ---------------------- +# func_stripname_cnf prefix suffix name +# strip PREFIX and SUFFIX off of NAME. +# PREFIX and SUFFIX must not contain globbing or regex special +# characters, hashes, percent signs, but SUFFIX may contain a leading +# dot (in which case that matches only a dot). +# +# This function is identical to the (non-XSI) version of func_stripname, +# except this one can be used by m4 code that may be executed by configure, +# rather than the libtool script. +m4_defun([_LT_FUNC_STRIPNAME_CNF],[dnl +AC_REQUIRE([_LT_DECL_SED]) +AC_REQUIRE([_LT_PROG_ECHO_BACKSLASH]) +func_stripname_cnf () +{ + case ${2} in + .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; + *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; + esac +} # func_stripname_cnf +])# _LT_FUNC_STRIPNAME_CNF + +# _LT_SYS_HIDDEN_LIBDEPS([TAGNAME]) +# --------------------------------- +# Figure out "hidden" library dependencies from verbose +# compiler output when linking a shared library. +# Parse the compiler output and extract the necessary +# objects, libraries and library flags. +m4_defun([_LT_SYS_HIDDEN_LIBDEPS], +[m4_require([_LT_FILEUTILS_DEFAULTS])dnl +AC_REQUIRE([_LT_FUNC_STRIPNAME_CNF])dnl +# Dependencies to place before and after the object being linked: +_LT_TAGVAR(predep_objects, $1)= +_LT_TAGVAR(postdep_objects, $1)= +_LT_TAGVAR(predeps, $1)= +_LT_TAGVAR(postdeps, $1)= +_LT_TAGVAR(compiler_lib_search_path, $1)= + +dnl we can't use the lt_simple_compile_test_code here, +dnl because it contains code intended for an executable, +dnl not a library. It's possible we should let each +dnl tag define a new lt_????_link_test_code variable, +dnl but it's only used here... +m4_if([$1], [], [cat > conftest.$ac_ext <<_LT_EOF +int a; +void foo (void) { a = 0; } +_LT_EOF +], [$1], [CXX], [cat > conftest.$ac_ext <<_LT_EOF +class Foo +{ +public: + Foo (void) { a = 0; } +private: + int a; +}; +_LT_EOF +], [$1], [F77], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer*4 a + a=0 + return + end +_LT_EOF +], [$1], [FC], [cat > conftest.$ac_ext <<_LT_EOF + subroutine foo + implicit none + integer a + a=0 + return + end +_LT_EOF +], [$1], [GCJ], [cat > conftest.$ac_ext <<_LT_EOF +public class foo { + private int a; + public void bar (void) { + a = 0; + } +}; +_LT_EOF +]) + +_lt_libdeps_save_CFLAGS=$CFLAGS +case "$CC $CFLAGS " in #( +*\ -flto*\ *) CFLAGS="$CFLAGS -fno-lto" ;; +*\ -fwhopr*\ *) CFLAGS="$CFLAGS -fno-whopr" ;; +esac + +dnl Parse the compiler output and extract the necessary +dnl objects, libraries and library flags. +if AC_TRY_EVAL(ac_compile); then + # Parse the compiler output and extract the necessary + # objects, libraries and library flags. + + # Sentinel used to keep track of whether or not we are before + # the conftest object file. + pre_test_object_deps_done=no + + for p in `eval "$output_verbose_link_cmd"`; do + case ${prev}${p} in + + -L* | -R* | -l*) + # Some compilers place space between "-{L,R}" and the path. + # Remove the space. + if test $p = "-L" || + test $p = "-R"; then + prev=$p + continue + fi + + # Expand the sysroot to ease extracting the directories later. + if test -z "$prev"; then + case $p in + -L*) func_stripname_cnf '-L' '' "$p"; prev=-L; p=$func_stripname_result ;; + -R*) func_stripname_cnf '-R' '' "$p"; prev=-R; p=$func_stripname_result ;; + -l*) func_stripname_cnf '-l' '' "$p"; prev=-l; p=$func_stripname_result ;; + esac + fi + case $p in + =*) func_stripname_cnf '=' '' "$p"; p=$lt_sysroot$func_stripname_result ;; + esac + if test "$pre_test_object_deps_done" = no; then + case ${prev} in + -L | -R) + # Internal compiler library paths should come after those + # provided the user. The postdeps already come after the + # user supplied libs so there is no need to process them. + if test -z "$_LT_TAGVAR(compiler_lib_search_path, $1)"; then + _LT_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}" + else + _LT_TAGVAR(compiler_lib_search_path, $1)="${_LT_TAGVAR(compiler_lib_search_path, $1)} ${prev}${p}" + fi + ;; + # The "-l" case would never come before the object being + # linked, so don't bother handling this case. + esac + else + if test -z "$_LT_TAGVAR(postdeps, $1)"; then + _LT_TAGVAR(postdeps, $1)="${prev}${p}" + else + _LT_TAGVAR(postdeps, $1)="${_LT_TAGVAR(postdeps, $1)} ${prev}${p}" + fi + fi + prev= + ;; + + *.lto.$objext) ;; # Ignore GCC LTO objects + *.$objext) + # This assumes that the test object file only shows up + # once in the compiler output. + if test "$p" = "conftest.$objext"; then + pre_test_object_deps_done=yes + continue + fi + + if test "$pre_test_object_deps_done" = no; then + if test -z "$_LT_TAGVAR(predep_objects, $1)"; then + _LT_TAGVAR(predep_objects, $1)="$p" + else + _LT_TAGVAR(predep_objects, $1)="$_LT_TAGVAR(predep_objects, $1) $p" + fi + else + if test -z "$_LT_TAGVAR(postdep_objects, $1)"; then + _LT_TAGVAR(postdep_objects, $1)="$p" + else + _LT_TAGVAR(postdep_objects, $1)="$_LT_TAGVAR(postdep_objects, $1) $p" + fi + fi + ;; + + *) ;; # Ignore the rest. + + esac + done + + # Clean up. + rm -f a.out a.exe +else + echo "libtool.m4: error: problem compiling $1 test program" +fi + +$RM -f confest.$objext +CFLAGS=$_lt_libdeps_save_CFLAGS + +# PORTME: override above test on systems where it is broken +m4_if([$1], [CXX], +[case $host_os in +interix[[3-9]]*) + # Interix 3.5 installs completely hosed .la files for C++, so rather than + # hack all around it, let's just trust "g++" to DTRT. + _LT_TAGVAR(predep_objects,$1)= + _LT_TAGVAR(postdep_objects,$1)= + _LT_TAGVAR(postdeps,$1)= + ;; + +linux*) + case `$CC -V 2>&1 | sed 5q` in + *Sun\ C*) + # Sun C++ 5.9 + + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; + +solaris*) + case $cc_basename in + CC* | sunCC*) + # The more standards-conforming stlport4 library is + # incompatible with the Cstd library. Avoid specifying + # it if it's in CXXFLAGS. Ignore libCrun as + # -library=stlport4 depends on it. + case " $CXX $CXXFLAGS " in + *" -library=stlport4 "*) + solaris_use_stlport4=yes + ;; + esac + + # Adding this requires a known-good setup of shared libraries for + # Sun compiler versions before 5.6, else PIC objects from an old + # archive will be linked into the output, leading to subtle bugs. + if test "$solaris_use_stlport4" != yes; then + _LT_TAGVAR(postdeps,$1)='-library=Cstd -library=Crun' + fi + ;; + esac + ;; +esac +]) + +case " $_LT_TAGVAR(postdeps, $1) " in +*" -lc "*) _LT_TAGVAR(archive_cmds_need_lc, $1)=no ;; +esac + _LT_TAGVAR(compiler_lib_search_dirs, $1)= +if test -n "${_LT_TAGVAR(compiler_lib_search_path, $1)}"; then + _LT_TAGVAR(compiler_lib_search_dirs, $1)=`echo " ${_LT_TAGVAR(compiler_lib_search_path, $1)}" | ${SED} -e 's! -L! !g' -e 's!^ !!'` +fi +_LT_TAGDECL([], [compiler_lib_search_dirs], [1], + [The directories searched by this compiler when creating a shared library]) +_LT_TAGDECL([], [predep_objects], [1], + [Dependencies to place before and after the objects being linked to + create a shared library]) +_LT_TAGDECL([], [postdep_objects], [1]) +_LT_TAGDECL([], [predeps], [1]) +_LT_TAGDECL([], [postdeps], [1]) +_LT_TAGDECL([], [compiler_lib_search_path], [1], + [The library search path used internally by the compiler when linking + a shared library]) +])# _LT_SYS_HIDDEN_LIBDEPS + + +# _LT_LANG_F77_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for a Fortran 77 compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_F77_CONFIG], +[AC_LANG_PUSH(Fortran 77) +if test -z "$F77" || test "X$F77" = "Xno"; then + _lt_disable_F77=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for f77 test sources. +ac_ext=f + +# Object file extension for compiled f77 test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the F77 compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_F77" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${F77-"f77"} + CFLAGS=$FFLAGS + compiler=$CC + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + GCC=$G77 + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$G77" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC="$lt_save_CC" + CFLAGS="$lt_save_CFLAGS" +fi # test "$_lt_disable_F77" != yes + +AC_LANG_POP +])# _LT_LANG_F77_CONFIG + + +# _LT_LANG_FC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for a Fortran compiler are +# suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_FC_CONFIG], +[AC_LANG_PUSH(Fortran) + +if test -z "$FC" || test "X$FC" = "Xno"; then + _lt_disable_FC=yes +fi + +_LT_TAGVAR(archive_cmds_need_lc, $1)=no +_LT_TAGVAR(allow_undefined_flag, $1)= +_LT_TAGVAR(always_export_symbols, $1)=no +_LT_TAGVAR(archive_expsym_cmds, $1)= +_LT_TAGVAR(export_dynamic_flag_spec, $1)= +_LT_TAGVAR(hardcode_direct, $1)=no +_LT_TAGVAR(hardcode_direct_absolute, $1)=no +_LT_TAGVAR(hardcode_libdir_flag_spec, $1)= +_LT_TAGVAR(hardcode_libdir_flag_spec_ld, $1)= +_LT_TAGVAR(hardcode_libdir_separator, $1)= +_LT_TAGVAR(hardcode_minus_L, $1)=no +_LT_TAGVAR(hardcode_automatic, $1)=no +_LT_TAGVAR(inherit_rpath, $1)=no +_LT_TAGVAR(module_cmds, $1)= +_LT_TAGVAR(module_expsym_cmds, $1)= +_LT_TAGVAR(link_all_deplibs, $1)=unknown +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds +_LT_TAGVAR(no_undefined_flag, $1)= +_LT_TAGVAR(whole_archive_flag_spec, $1)= +_LT_TAGVAR(enable_shared_with_static_runtimes, $1)=no + +# Source file extension for fc test sources. +ac_ext=${ac_fc_srcext-f} + +# Object file extension for compiled fc test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# No sense in running all these tests if we already determined that +# the FC compiler isn't working. Some variables (like enable_shared) +# are currently assumed to apply to all compilers on this platform, +# and will be corrupted by setting them based on a non-working compiler. +if test "$_lt_disable_FC" != yes; then + # Code to be used in simple compile tests + lt_simple_compile_test_code="\ + subroutine t + return + end +" + + # Code to be used in simple link tests + lt_simple_link_test_code="\ + program t + end +" + + # ltmain only uses $CC for tagged configurations so make sure $CC is set. + _LT_TAG_COMPILER + + # save warnings/boilerplate of simple test code + _LT_COMPILER_BOILERPLATE + _LT_LINKER_BOILERPLATE + + # Allow CC to be a program name with arguments. + lt_save_CC="$CC" + lt_save_GCC=$GCC + lt_save_CFLAGS=$CFLAGS + CC=${FC-"f95"} + CFLAGS=$FCFLAGS + compiler=$CC + GCC=$ac_cv_fc_compiler_gnu + + _LT_TAGVAR(compiler, $1)=$CC + _LT_CC_BASENAME([$compiler]) + + if test -n "$compiler"; then + AC_MSG_CHECKING([if libtool supports shared libraries]) + AC_MSG_RESULT([$can_build_shared]) + + AC_MSG_CHECKING([whether to build shared libraries]) + test "$can_build_shared" = "no" && enable_shared=no + + # On AIX, shared libraries and static libraries use the same namespace, and + # are all built from PIC. + case $host_os in + aix3*) + test "$enable_shared" = yes && enable_static=no + if test -n "$RANLIB"; then + archive_cmds="$archive_cmds~\$RANLIB \$lib" + postinstall_cmds='$RANLIB $lib' + fi + ;; + aix[[4-9]]*) + if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then + test "$enable_shared" = yes && enable_static=no + fi + ;; + esac + AC_MSG_RESULT([$enable_shared]) + + AC_MSG_CHECKING([whether to build static libraries]) + # Make sure either enable_shared or enable_static is yes. + test "$enable_shared" = yes || enable_static=yes + AC_MSG_RESULT([$enable_static]) + + _LT_TAGVAR(GCC, $1)="$ac_cv_fc_compiler_gnu" + _LT_TAGVAR(LD, $1)="$LD" + + ## CAVEAT EMPTOR: + ## There is no encapsulation within the following macros, do not change + ## the running order or otherwise move them around unless you know exactly + ## what you are doing... + _LT_SYS_HIDDEN_LIBDEPS($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_SYS_DYNAMIC_LINKER($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) + fi # test -n "$compiler" + + GCC=$lt_save_GCC + CC=$lt_save_CC + CFLAGS=$lt_save_CFLAGS +fi # test "$_lt_disable_FC" != yes + +AC_LANG_POP +])# _LT_LANG_FC_CONFIG + + +# _LT_LANG_GCJ_CONFIG([TAG]) +# -------------------------- +# Ensure that the configuration variables for the GNU Java Compiler compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_GCJ_CONFIG], +[AC_REQUIRE([LT_PROG_GCJ])dnl +AC_LANG_SAVE + +# Source file extension for Java test sources. +ac_ext=java + +# Object file extension for compiled Java test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code="class foo {}" + +# Code to be used in simple link tests +lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }' + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC=$CC +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC=yes +CC=${GCJ-"gcj"} +CFLAGS=$GCJFLAGS +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_TAGVAR(LD, $1)="$LD" +_LT_CC_BASENAME([$compiler]) + +# GCJ did not exist at the time GCC didn't implicitly link libc in. +_LT_TAGVAR(archive_cmds_need_lc, $1)=no + +_LT_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds +_LT_TAGVAR(reload_flag, $1)=$reload_flag +_LT_TAGVAR(reload_cmds, $1)=$reload_cmds + +## CAVEAT EMPTOR: +## There is no encapsulation within the following macros, do not change +## the running order or otherwise move them around unless you know exactly +## what you are doing... +if test -n "$compiler"; then + _LT_COMPILER_NO_RTTI($1) + _LT_COMPILER_PIC($1) + _LT_COMPILER_C_O($1) + _LT_COMPILER_FILE_LOCKS($1) + _LT_LINKER_SHLIBS($1) + _LT_LINKER_HARDCODE_LIBPATH($1) + + _LT_CONFIG($1) +fi + +AC_LANG_RESTORE + +GCC=$lt_save_GCC +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_GCJ_CONFIG + + +# _LT_LANG_RC_CONFIG([TAG]) +# ------------------------- +# Ensure that the configuration variables for the Windows resource compiler +# are suitably defined. These variables are subsequently used by _LT_CONFIG +# to write the compiler configuration to `libtool'. +m4_defun([_LT_LANG_RC_CONFIG], +[AC_REQUIRE([LT_PROG_RC])dnl +AC_LANG_SAVE + +# Source file extension for RC test sources. +ac_ext=rc + +# Object file extension for compiled RC test sources. +objext=o +_LT_TAGVAR(objext, $1)=$objext + +# Code to be used in simple compile tests +lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }' + +# Code to be used in simple link tests +lt_simple_link_test_code="$lt_simple_compile_test_code" + +# ltmain only uses $CC for tagged configurations so make sure $CC is set. +_LT_TAG_COMPILER + +# save warnings/boilerplate of simple test code +_LT_COMPILER_BOILERPLATE +_LT_LINKER_BOILERPLATE + +# Allow CC to be a program name with arguments. +lt_save_CC="$CC" +lt_save_CFLAGS=$CFLAGS +lt_save_GCC=$GCC +GCC= +CC=${RC-"windres"} +CFLAGS= +compiler=$CC +_LT_TAGVAR(compiler, $1)=$CC +_LT_CC_BASENAME([$compiler]) +_LT_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes + +if test -n "$compiler"; then + : + _LT_CONFIG($1) +fi + +GCC=$lt_save_GCC +AC_LANG_RESTORE +CC=$lt_save_CC +CFLAGS=$lt_save_CFLAGS +])# _LT_LANG_RC_CONFIG + + +# LT_PROG_GCJ +# ----------- +AC_DEFUN([LT_PROG_GCJ], +[m4_ifdef([AC_PROG_GCJ], [AC_PROG_GCJ], + [m4_ifdef([A][M_PROG_GCJ], [A][M_PROG_GCJ], + [AC_CHECK_TOOL(GCJ, gcj,) + test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2" + AC_SUBST(GCJFLAGS)])])[]dnl +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_GCJ], [LT_PROG_GCJ]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_GCJ], []) + + +# LT_PROG_RC +# ---------- +AC_DEFUN([LT_PROG_RC], +[AC_CHECK_TOOL(RC, windres,) +]) + +# Old name: +AU_ALIAS([LT_AC_PROG_RC], [LT_PROG_RC]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_RC], []) + + +# _LT_DECL_EGREP +# -------------- +# If we don't have a new enough Autoconf to choose the best grep +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_EGREP], +[AC_REQUIRE([AC_PROG_EGREP])dnl +AC_REQUIRE([AC_PROG_FGREP])dnl +test -z "$GREP" && GREP=grep +_LT_DECL([], [GREP], [1], [A grep program that handles long lines]) +_LT_DECL([], [EGREP], [1], [An ERE matcher]) +_LT_DECL([], [FGREP], [1], [A literal string matcher]) +dnl Non-bleeding-edge autoconf doesn't subst GREP, so do it here too +AC_SUBST([GREP]) +]) + + +# _LT_DECL_OBJDUMP +# -------------- +# If we don't have a new enough Autoconf to choose the best objdump +# available, choose the one first in the user's PATH. +m4_defun([_LT_DECL_OBJDUMP], +[AC_CHECK_TOOL(OBJDUMP, objdump, false) +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [An object symbol dumper]) +AC_SUBST([OBJDUMP]) +]) + +# _LT_DECL_DLLTOOL +# ---------------- +# Ensure DLLTOOL variable is set. +m4_defun([_LT_DECL_DLLTOOL], +[AC_CHECK_TOOL(DLLTOOL, dlltool, false) +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program]) +AC_SUBST([DLLTOOL]) +]) + +# _LT_DECL_SED +# ------------ +# Check for a fully-functional sed program, that truncates +# as few characters as possible. Prefer GNU sed if found. +m4_defun([_LT_DECL_SED], +[AC_PROG_SED +test -z "$SED" && SED=sed +Xsed="$SED -e 1s/^X//" +_LT_DECL([], [SED], [1], [A sed program that does not truncate output]) +_LT_DECL([], [Xsed], ["\$SED -e 1s/^X//"], + [Sed that helps us avoid accidentally triggering echo(1) options like -n]) +])# _LT_DECL_SED + +m4_ifndef([AC_PROG_SED], [ +############################################################ +# NOTE: This macro has been submitted for inclusion into # +# GNU Autoconf as AC_PROG_SED. When it is available in # +# a released version of Autoconf we should remove this # +# macro and use it instead. # +############################################################ + +m4_defun([AC_PROG_SED], +[AC_MSG_CHECKING([for a sed that does not truncate output]) +AC_CACHE_VAL(lt_cv_path_SED, +[# Loop through the user's path and test for sed and gsed. +# Then use that list of sed's as ones to test for truncation. +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for lt_ac_prog in sed gsed; do + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$lt_ac_prog$ac_exec_ext"; then + lt_ac_sed_list="$lt_ac_sed_list $as_dir/$lt_ac_prog$ac_exec_ext" + fi + done + done +done +IFS=$as_save_IFS +lt_ac_max=0 +lt_ac_count=0 +# Add /usr/xpg4/bin/sed as it is typically found on Solaris +# along with /bin/sed that truncates output. +for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do + test ! -f $lt_ac_sed && continue + cat /dev/null > conftest.in + lt_ac_count=0 + echo $ECHO_N "0123456789$ECHO_C" >conftest.in + # Check for GNU sed and select it if it is found. + if "$lt_ac_sed" --version 2>&1 < /dev/null | grep 'GNU' > /dev/null; then + lt_cv_path_SED=$lt_ac_sed + break + fi + while true; do + cat conftest.in conftest.in >conftest.tmp + mv conftest.tmp conftest.in + cp conftest.in conftest.nl + echo >>conftest.nl + $lt_ac_sed -e 's/a$//' < conftest.nl >conftest.out || break + cmp -s conftest.out conftest.nl || break + # 10000 chars as input seems more than enough + test $lt_ac_count -gt 10 && break + lt_ac_count=`expr $lt_ac_count + 1` + if test $lt_ac_count -gt $lt_ac_max; then + lt_ac_max=$lt_ac_count + lt_cv_path_SED=$lt_ac_sed + fi + done +done +]) +SED=$lt_cv_path_SED +AC_SUBST([SED]) +AC_MSG_RESULT([$SED]) +])#AC_PROG_SED +])#m4_ifndef + +# Old name: +AU_ALIAS([LT_AC_PROG_SED], [AC_PROG_SED]) +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([LT_AC_PROG_SED], []) + + +# _LT_CHECK_SHELL_FEATURES +# ------------------------ +# Find out whether the shell is Bourne or XSI compatible, +# or has some other useful features. +m4_defun([_LT_CHECK_SHELL_FEATURES], +[AC_MSG_CHECKING([whether the shell understands some XSI constructs]) +# Try some XSI features +xsi_shell=no +( _lt_dummy="a/b/c" + test "${_lt_dummy##*/},${_lt_dummy%/*},${_lt_dummy#??}"${_lt_dummy%"$_lt_dummy"}, \ + = c,a/b,b/c, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ + && xsi_shell=yes +AC_MSG_RESULT([$xsi_shell]) +_LT_CONFIG_LIBTOOL_INIT([xsi_shell='$xsi_shell']) + +AC_MSG_CHECKING([whether the shell understands "+="]) +lt_shell_append=no +( foo=bar; set foo baz; eval "$[1]+=\$[2]" && test "$foo" = barbaz ) \ + >/dev/null 2>&1 \ + && lt_shell_append=yes +AC_MSG_RESULT([$lt_shell_append]) +_LT_CONFIG_LIBTOOL_INIT([lt_shell_append='$lt_shell_append']) + +if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then + lt_unset=unset +else + lt_unset=false +fi +_LT_DECL([], [lt_unset], [0], [whether the shell understands "unset"])dnl + +# test EBCDIC or ASCII +case `echo X|tr X '\101'` in + A) # ASCII based system + # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr + lt_SP2NL='tr \040 \012' + lt_NL2SP='tr \015\012 \040\040' + ;; + *) # EBCDIC based system + lt_SP2NL='tr \100 \n' + lt_NL2SP='tr \r\n \100\100' + ;; +esac +_LT_DECL([SP2NL], [lt_SP2NL], [1], [turn spaces into newlines])dnl +_LT_DECL([NL2SP], [lt_NL2SP], [1], [turn newlines into spaces])dnl +])# _LT_CHECK_SHELL_FEATURES + + +# _LT_PROG_FUNCTION_REPLACE (FUNCNAME, REPLACEMENT-BODY) +# ------------------------------------------------------ +# In `$cfgfile', look for function FUNCNAME delimited by `^FUNCNAME ()$' and +# '^} FUNCNAME ', and replace its body with REPLACEMENT-BODY. +m4_defun([_LT_PROG_FUNCTION_REPLACE], +[dnl { +sed -e '/^$1 ()$/,/^} # $1 /c\ +$1 ()\ +{\ +m4_bpatsubsts([$2], [$], [\\], [^\([ ]\)], [\\\1]) +} # Extended-shell $1 implementation' "$cfgfile" > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") +test 0 -eq $? || _lt_function_replace_fail=: +]) + + +# _LT_PROG_REPLACE_SHELLFNS +# ------------------------- +# Replace existing portable implementations of several shell functions with +# equivalent extended shell implementations where those features are available.. +m4_defun([_LT_PROG_REPLACE_SHELLFNS], +[if test x"$xsi_shell" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_dirname], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_basename], [dnl + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_dirname_and_basename], [dnl + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}"]) + + _LT_PROG_FUNCTION_REPLACE([func_stripname], [dnl + # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are + # positional parameters, so assign one to ordinary parameter first. + func_stripname_result=${3} + func_stripname_result=${func_stripname_result#"${1}"} + func_stripname_result=${func_stripname_result%"${2}"}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_long_opt], [dnl + func_split_long_opt_name=${1%%=*} + func_split_long_opt_arg=${1#*=}]) + + _LT_PROG_FUNCTION_REPLACE([func_split_short_opt], [dnl + func_split_short_opt_arg=${1#??} + func_split_short_opt_name=${1%"$func_split_short_opt_arg"}]) + + _LT_PROG_FUNCTION_REPLACE([func_lo2o], [dnl + case ${1} in + *.lo) func_lo2o_result=${1%.lo}.${objext} ;; + *) func_lo2o_result=${1} ;; + esac]) + + _LT_PROG_FUNCTION_REPLACE([func_xform], [ func_xform_result=${1%.*}.lo]) + + _LT_PROG_FUNCTION_REPLACE([func_arith], [ func_arith_result=$(( $[*] ))]) + + _LT_PROG_FUNCTION_REPLACE([func_len], [ func_len_result=${#1}]) +fi + +if test x"$lt_shell_append" = xyes; then + _LT_PROG_FUNCTION_REPLACE([func_append], [ eval "${1}+=\\${2}"]) + + _LT_PROG_FUNCTION_REPLACE([func_append_quoted], [dnl + func_quote_for_eval "${2}" +dnl m4 expansion turns \\\\ into \\, and then the shell eval turns that into \ + eval "${1}+=\\\\ \\$func_quote_for_eval_result"]) + + # Save a `func_append' function call where possible by direct use of '+=' + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1+="%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +else + # Save a `func_append' function call even when '+=' is not available + sed -e 's%func_append \([[a-zA-Z_]]\{1,\}\) "%\1="$\1%g' $cfgfile > $cfgfile.tmp \ + && mv -f "$cfgfile.tmp" "$cfgfile" \ + || (rm -f "$cfgfile" && cp "$cfgfile.tmp" "$cfgfile" && rm -f "$cfgfile.tmp") + test 0 -eq $? || _lt_function_replace_fail=: +fi + +if test x"$_lt_function_replace_fail" = x":"; then + AC_MSG_WARN([Unable to substitute extended shell functions in $ofile]) +fi +]) + +# _LT_PATH_CONVERSION_FUNCTIONS +# ----------------------------- +# Determine which file name conversion functions should be used by +# func_to_host_file (and, implicitly, by func_to_host_path). These are needed +# for certain cross-compile configurations and native mingw. +m4_defun([_LT_PATH_CONVERSION_FUNCTIONS], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +AC_REQUIRE([AC_CANONICAL_BUILD])dnl +AC_MSG_CHECKING([how to convert $build file names to $host format]) +AC_CACHE_VAL(lt_cv_to_host_file_cmd, +[case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_w32 + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_cygwin_to_w32 + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_w32 + ;; + esac + ;; + *-*-cygwin* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_host_file_cmd=func_convert_file_msys_to_cygwin + ;; + *-*-cygwin* ) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; + * ) # otherwise, assume *nix + lt_cv_to_host_file_cmd=func_convert_file_nix_to_cygwin + ;; + esac + ;; + * ) # unhandled hosts (and "normal" native builds) + lt_cv_to_host_file_cmd=func_convert_file_noop + ;; +esac +]) +to_host_file_cmd=$lt_cv_to_host_file_cmd +AC_MSG_RESULT([$lt_cv_to_host_file_cmd]) +_LT_DECL([to_host_file_cmd], [lt_cv_to_host_file_cmd], + [0], [convert $build file names to $host format])dnl + +AC_MSG_CHECKING([how to convert $build file names to toolchain format]) +AC_CACHE_VAL(lt_cv_to_tool_file_cmd, +[#assume ordinary cross tools, or native build. +lt_cv_to_tool_file_cmd=func_convert_file_noop +case $host in + *-*-mingw* ) + case $build in + *-*-mingw* ) # actually msys + lt_cv_to_tool_file_cmd=func_convert_file_msys_to_w32 + ;; + esac + ;; +esac +]) +to_tool_file_cmd=$lt_cv_to_tool_file_cmd +AC_MSG_RESULT([$lt_cv_to_tool_file_cmd]) +_LT_DECL([to_tool_file_cmd], [lt_cv_to_tool_file_cmd], + [0], [convert $build files to toolchain format])dnl +])# _LT_PATH_CONVERSION_FUNCTIONS diff --git a/src/spatialite/m4/ltoptions.m4 b/src/spatialite/m4/ltoptions.m4 new file mode 100644 index 0000000..17cfd51 --- /dev/null +++ b/src/spatialite/m4/ltoptions.m4 @@ -0,0 +1,369 @@ +# Helper functions for option handling. -*- Autoconf -*- +# +# Copyright (C) 2004, 2005, 2007, 2008, 2009 Free Software Foundation, +# Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 7 ltoptions.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOPTIONS_VERSION], [m4_if([1])]) + + +# _LT_MANGLE_OPTION(MACRO-NAME, OPTION-NAME) +# ------------------------------------------ +m4_define([_LT_MANGLE_OPTION], +[[_LT_OPTION_]m4_bpatsubst($1__$2, [[^a-zA-Z0-9_]], [_])]) + + +# _LT_SET_OPTION(MACRO-NAME, OPTION-NAME) +# --------------------------------------- +# Set option OPTION-NAME for macro MACRO-NAME, and if there is a +# matching handler defined, dispatch to it. Other OPTION-NAMEs are +# saved as a flag. +m4_define([_LT_SET_OPTION], +[m4_define(_LT_MANGLE_OPTION([$1], [$2]))dnl +m4_ifdef(_LT_MANGLE_DEFUN([$1], [$2]), + _LT_MANGLE_DEFUN([$1], [$2]), + [m4_warning([Unknown $1 option `$2'])])[]dnl +]) + + +# _LT_IF_OPTION(MACRO-NAME, OPTION-NAME, IF-SET, [IF-NOT-SET]) +# ------------------------------------------------------------ +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +m4_define([_LT_IF_OPTION], +[m4_ifdef(_LT_MANGLE_OPTION([$1], [$2]), [$3], [$4])]) + + +# _LT_UNLESS_OPTIONS(MACRO-NAME, OPTION-LIST, IF-NOT-SET) +# ------------------------------------------------------- +# Execute IF-NOT-SET unless all options in OPTION-LIST for MACRO-NAME +# are set. +m4_define([_LT_UNLESS_OPTIONS], +[m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [m4_ifdef(_LT_MANGLE_OPTION([$1], _LT_Option), + [m4_define([$0_found])])])[]dnl +m4_ifdef([$0_found], [m4_undefine([$0_found])], [$3 +])[]dnl +]) + + +# _LT_SET_OPTIONS(MACRO-NAME, OPTION-LIST) +# ---------------------------------------- +# OPTION-LIST is a space-separated list of Libtool options associated +# with MACRO-NAME. If any OPTION has a matching handler declared with +# LT_OPTION_DEFINE, dispatch to that macro; otherwise complain about +# the unknown option and exit. +m4_defun([_LT_SET_OPTIONS], +[# Set options +m4_foreach([_LT_Option], m4_split(m4_normalize([$2])), + [_LT_SET_OPTION([$1], _LT_Option)]) + +m4_if([$1],[LT_INIT],[ + dnl + dnl Simply set some default values (i.e off) if boolean options were not + dnl specified: + _LT_UNLESS_OPTIONS([LT_INIT], [dlopen], [enable_dlopen=no + ]) + _LT_UNLESS_OPTIONS([LT_INIT], [win32-dll], [enable_win32_dll=no + ]) + dnl + dnl If no reference was made to various pairs of opposing options, then + dnl we run the default mode handler for the pair. For example, if neither + dnl `shared' nor `disable-shared' was passed, we enable building of shared + dnl archives by default: + _LT_UNLESS_OPTIONS([LT_INIT], [shared disable-shared], [_LT_ENABLE_SHARED]) + _LT_UNLESS_OPTIONS([LT_INIT], [static disable-static], [_LT_ENABLE_STATIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [pic-only no-pic], [_LT_WITH_PIC]) + _LT_UNLESS_OPTIONS([LT_INIT], [fast-install disable-fast-install], + [_LT_ENABLE_FAST_INSTALL]) + ]) +])# _LT_SET_OPTIONS + + +## --------------------------------- ## +## Macros to handle LT_INIT options. ## +## --------------------------------- ## + +# _LT_MANGLE_DEFUN(MACRO-NAME, OPTION-NAME) +# ----------------------------------------- +m4_define([_LT_MANGLE_DEFUN], +[[_LT_OPTION_DEFUN_]m4_bpatsubst(m4_toupper([$1__$2]), [[^A-Z0-9_]], [_])]) + + +# LT_OPTION_DEFINE(MACRO-NAME, OPTION-NAME, CODE) +# ----------------------------------------------- +m4_define([LT_OPTION_DEFINE], +[m4_define(_LT_MANGLE_DEFUN([$1], [$2]), [$3])[]dnl +])# LT_OPTION_DEFINE + + +# dlopen +# ------ +LT_OPTION_DEFINE([LT_INIT], [dlopen], [enable_dlopen=yes +]) + +AU_DEFUN([AC_LIBTOOL_DLOPEN], +[_LT_SET_OPTION([LT_INIT], [dlopen]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `dlopen' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_DLOPEN], []) + + +# win32-dll +# --------- +# Declare package support for building win32 dll's. +LT_OPTION_DEFINE([LT_INIT], [win32-dll], +[enable_win32_dll=yes + +case $host in +*-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-cegcc*) + AC_CHECK_TOOL(AS, as, false) + AC_CHECK_TOOL(DLLTOOL, dlltool, false) + AC_CHECK_TOOL(OBJDUMP, objdump, false) + ;; +esac + +test -z "$AS" && AS=as +_LT_DECL([], [AS], [1], [Assembler program])dnl + +test -z "$DLLTOOL" && DLLTOOL=dlltool +_LT_DECL([], [DLLTOOL], [1], [DLL creation program])dnl + +test -z "$OBJDUMP" && OBJDUMP=objdump +_LT_DECL([], [OBJDUMP], [1], [Object dumper program])dnl +])# win32-dll + +AU_DEFUN([AC_LIBTOOL_WIN32_DLL], +[AC_REQUIRE([AC_CANONICAL_HOST])dnl +_LT_SET_OPTION([LT_INIT], [win32-dll]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `win32-dll' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_WIN32_DLL], []) + + +# _LT_ENABLE_SHARED([DEFAULT]) +# ---------------------------- +# implement the --enable-shared flag, and supports the `shared' and +# `disable-shared' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_SHARED], +[m4_define([_LT_ENABLE_SHARED_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([shared], + [AS_HELP_STRING([--enable-shared@<:@=PKGS@:>@], + [build shared libraries @<:@default=]_LT_ENABLE_SHARED_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_shared=]_LT_ENABLE_SHARED_DEFAULT) + + _LT_DECL([build_libtool_libs], [enable_shared], [0], + [Whether or not to build shared libraries]) +])# _LT_ENABLE_SHARED + +LT_OPTION_DEFINE([LT_INIT], [shared], [_LT_ENABLE_SHARED([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-shared], [_LT_ENABLE_SHARED([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[shared]) +]) + +AC_DEFUN([AC_DISABLE_SHARED], +[_LT_SET_OPTION([LT_INIT], [disable-shared]) +]) + +AU_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)]) +AU_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_SHARED], []) +dnl AC_DEFUN([AM_DISABLE_SHARED], []) + + + +# _LT_ENABLE_STATIC([DEFAULT]) +# ---------------------------- +# implement the --enable-static flag, and support the `static' and +# `disable-static' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_STATIC], +[m4_define([_LT_ENABLE_STATIC_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([static], + [AS_HELP_STRING([--enable-static@<:@=PKGS@:>@], + [build static libraries @<:@default=]_LT_ENABLE_STATIC_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_static=]_LT_ENABLE_STATIC_DEFAULT) + + _LT_DECL([build_old_libs], [enable_static], [0], + [Whether or not to build static libraries]) +])# _LT_ENABLE_STATIC + +LT_OPTION_DEFINE([LT_INIT], [static], [_LT_ENABLE_STATIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-static], [_LT_ENABLE_STATIC([no])]) + +# Old names: +AC_DEFUN([AC_ENABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[static]) +]) + +AC_DEFUN([AC_DISABLE_STATIC], +[_LT_SET_OPTION([LT_INIT], [disable-static]) +]) + +AU_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)]) +AU_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AM_ENABLE_STATIC], []) +dnl AC_DEFUN([AM_DISABLE_STATIC], []) + + + +# _LT_ENABLE_FAST_INSTALL([DEFAULT]) +# ---------------------------------- +# implement the --enable-fast-install flag, and support the `fast-install' +# and `disable-fast-install' LT_INIT options. +# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'. +m4_define([_LT_ENABLE_FAST_INSTALL], +[m4_define([_LT_ENABLE_FAST_INSTALL_DEFAULT], [m4_if($1, no, no, yes)])dnl +AC_ARG_ENABLE([fast-install], + [AS_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@], + [optimize for fast installation @<:@default=]_LT_ENABLE_FAST_INSTALL_DEFAULT[@:>@])], + [p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac], + [enable_fast_install=]_LT_ENABLE_FAST_INSTALL_DEFAULT) + +_LT_DECL([fast_install], [enable_fast_install], [0], + [Whether or not to optimize for fast installation])dnl +])# _LT_ENABLE_FAST_INSTALL + +LT_OPTION_DEFINE([LT_INIT], [fast-install], [_LT_ENABLE_FAST_INSTALL([yes])]) +LT_OPTION_DEFINE([LT_INIT], [disable-fast-install], [_LT_ENABLE_FAST_INSTALL([no])]) + +# Old names: +AU_DEFUN([AC_ENABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], m4_if([$1], [no], [disable-])[fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `fast-install' option into LT_INIT's first parameter.]) +]) + +AU_DEFUN([AC_DISABLE_FAST_INSTALL], +[_LT_SET_OPTION([LT_INIT], [disable-fast-install]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you put +the `disable-fast-install' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_ENABLE_FAST_INSTALL], []) +dnl AC_DEFUN([AM_DISABLE_FAST_INSTALL], []) + + +# _LT_WITH_PIC([MODE]) +# -------------------- +# implement the --with-pic flag, and support the `pic-only' and `no-pic' +# LT_INIT options. +# MODE is either `yes' or `no'. If omitted, it defaults to `both'. +m4_define([_LT_WITH_PIC], +[AC_ARG_WITH([pic], + [AS_HELP_STRING([--with-pic], + [try to use only PIC/non-PIC objects @<:@default=use both@:>@])], + [pic_mode="$withval"], + [pic_mode=default]) + +test -z "$pic_mode" && pic_mode=m4_default([$1], [default]) + +_LT_DECL([], [pic_mode], [0], [What type of objects to build])dnl +])# _LT_WITH_PIC + +LT_OPTION_DEFINE([LT_INIT], [pic-only], [_LT_WITH_PIC([yes])]) +LT_OPTION_DEFINE([LT_INIT], [no-pic], [_LT_WITH_PIC([no])]) + +# Old name: +AU_DEFUN([AC_LIBTOOL_PICMODE], +[_LT_SET_OPTION([LT_INIT], [pic-only]) +AC_DIAGNOSE([obsolete], +[$0: Remove this warning and the call to _LT_SET_OPTION when you +put the `pic-only' option into LT_INIT's first parameter.]) +]) + +dnl aclocal-1.4 backwards compatibility: +dnl AC_DEFUN([AC_LIBTOOL_PICMODE], []) + +## ----------------- ## +## LTDL_INIT Options ## +## ----------------- ## + +m4_define([_LTDL_MODE], []) +LT_OPTION_DEFINE([LTDL_INIT], [nonrecursive], + [m4_define([_LTDL_MODE], [nonrecursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [recursive], + [m4_define([_LTDL_MODE], [recursive])]) +LT_OPTION_DEFINE([LTDL_INIT], [subproject], + [m4_define([_LTDL_MODE], [subproject])]) + +m4_define([_LTDL_TYPE], []) +LT_OPTION_DEFINE([LTDL_INIT], [installable], + [m4_define([_LTDL_TYPE], [installable])]) +LT_OPTION_DEFINE([LTDL_INIT], [convenience], + [m4_define([_LTDL_TYPE], [convenience])]) diff --git a/src/spatialite/m4/ltsugar.m4 b/src/spatialite/m4/ltsugar.m4 new file mode 100644 index 0000000..9000a05 --- /dev/null +++ b/src/spatialite/m4/ltsugar.m4 @@ -0,0 +1,123 @@ +# ltsugar.m4 -- libtool m4 base layer. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2008 Free Software Foundation, Inc. +# Written by Gary V. Vaughan, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 6 ltsugar.m4 + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTSUGAR_VERSION], [m4_if([0.1])]) + + +# lt_join(SEP, ARG1, [ARG2...]) +# ----------------------------- +# Produce ARG1SEPARG2...SEPARGn, omitting [] arguments and their +# associated separator. +# Needed until we can rely on m4_join from Autoconf 2.62, since all earlier +# versions in m4sugar had bugs. +m4_define([lt_join], +[m4_if([$#], [1], [], + [$#], [2], [[$2]], + [m4_if([$2], [], [], [[$2]_])$0([$1], m4_shift(m4_shift($@)))])]) +m4_define([_lt_join], +[m4_if([$#$2], [2], [], + [m4_if([$2], [], [], [[$1$2]])$0([$1], m4_shift(m4_shift($@)))])]) + + +# lt_car(LIST) +# lt_cdr(LIST) +# ------------ +# Manipulate m4 lists. +# These macros are necessary as long as will still need to support +# Autoconf-2.59 which quotes differently. +m4_define([lt_car], [[$1]]) +m4_define([lt_cdr], +[m4_if([$#], 0, [m4_fatal([$0: cannot be called without arguments])], + [$#], 1, [], + [m4_dquote(m4_shift($@))])]) +m4_define([lt_unquote], $1) + + +# lt_append(MACRO-NAME, STRING, [SEPARATOR]) +# ------------------------------------------ +# Redefine MACRO-NAME to hold its former content plus `SEPARATOR'`STRING'. +# Note that neither SEPARATOR nor STRING are expanded; they are appended +# to MACRO-NAME as is (leaving the expansion for when MACRO-NAME is invoked). +# No SEPARATOR is output if MACRO-NAME was previously undefined (different +# than defined and empty). +# +# This macro is needed until we can rely on Autoconf 2.62, since earlier +# versions of m4sugar mistakenly expanded SEPARATOR but not STRING. +m4_define([lt_append], +[m4_define([$1], + m4_ifdef([$1], [m4_defn([$1])[$3]])[$2])]) + + + +# lt_combine(SEP, PREFIX-LIST, INFIX, SUFFIX1, [SUFFIX2...]) +# ---------------------------------------------------------- +# Produce a SEP delimited list of all paired combinations of elements of +# PREFIX-LIST with SUFFIX1 through SUFFIXn. Each element of the list +# has the form PREFIXmINFIXSUFFIXn. +# Needed until we can rely on m4_combine added in Autoconf 2.62. +m4_define([lt_combine], +[m4_if(m4_eval([$# > 3]), [1], + [m4_pushdef([_Lt_sep], [m4_define([_Lt_sep], m4_defn([lt_car]))])]]dnl +[[m4_foreach([_Lt_prefix], [$2], + [m4_foreach([_Lt_suffix], + ]m4_dquote(m4_dquote(m4_shift(m4_shift(m4_shift($@)))))[, + [_Lt_sep([$1])[]m4_defn([_Lt_prefix])[$3]m4_defn([_Lt_suffix])])])])]) + + +# lt_if_append_uniq(MACRO-NAME, VARNAME, [SEPARATOR], [UNIQ], [NOT-UNIQ]) +# ----------------------------------------------------------------------- +# Iff MACRO-NAME does not yet contain VARNAME, then append it (delimited +# by SEPARATOR if supplied) and expand UNIQ, else NOT-UNIQ. +m4_define([lt_if_append_uniq], +[m4_ifdef([$1], + [m4_if(m4_index([$3]m4_defn([$1])[$3], [$3$2$3]), [-1], + [lt_append([$1], [$2], [$3])$4], + [$5])], + [lt_append([$1], [$2], [$3])$4])]) + + +# lt_dict_add(DICT, KEY, VALUE) +# ----------------------------- +m4_define([lt_dict_add], +[m4_define([$1($2)], [$3])]) + + +# lt_dict_add_subkey(DICT, KEY, SUBKEY, VALUE) +# -------------------------------------------- +m4_define([lt_dict_add_subkey], +[m4_define([$1($2:$3)], [$4])]) + + +# lt_dict_fetch(DICT, KEY, [SUBKEY]) +# ---------------------------------- +m4_define([lt_dict_fetch], +[m4_ifval([$3], + m4_ifdef([$1($2:$3)], [m4_defn([$1($2:$3)])]), + m4_ifdef([$1($2)], [m4_defn([$1($2)])]))]) + + +# lt_if_dict_fetch(DICT, KEY, [SUBKEY], VALUE, IF-TRUE, [IF-FALSE]) +# ----------------------------------------------------------------- +m4_define([lt_if_dict_fetch], +[m4_if(lt_dict_fetch([$1], [$2], [$3]), [$4], + [$5], + [$6])]) + + +# lt_dict_filter(DICT, [SUBKEY], VALUE, [SEPARATOR], KEY, [...]) +# -------------------------------------------------------------- +m4_define([lt_dict_filter], +[m4_if([$5], [], [], + [lt_join(m4_quote(m4_default([$4], [[, ]])), + lt_unquote(m4_split(m4_normalize(m4_foreach(_Lt_key, lt_car([m4_shiftn(4, $@)]), + [lt_if_dict_fetch([$1], _Lt_key, [$2], [$3], [_Lt_key ])])))))])[]dnl +]) diff --git a/src/spatialite/m4/ltversion.m4 b/src/spatialite/m4/ltversion.m4 new file mode 100644 index 0000000..07a8602 --- /dev/null +++ b/src/spatialite/m4/ltversion.m4 @@ -0,0 +1,23 @@ +# ltversion.m4 -- version numbers -*- Autoconf -*- +# +# Copyright (C) 2004 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004 +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# @configure_input@ + +# serial 3337 ltversion.m4 +# This file is part of GNU Libtool + +m4_define([LT_PACKAGE_VERSION], [2.4.2]) +m4_define([LT_PACKAGE_REVISION], [1.3337]) + +AC_DEFUN([LTVERSION_VERSION], +[macro_version='2.4.2' +macro_revision='1.3337' +_LT_DECL(, macro_version, 0, [Which release of libtool.m4 was used?]) +_LT_DECL(, macro_revision, 0) +]) diff --git a/src/spatialite/m4/lt~obsolete.m4 b/src/spatialite/m4/lt~obsolete.m4 new file mode 100644 index 0000000..c573da9 --- /dev/null +++ b/src/spatialite/m4/lt~obsolete.m4 @@ -0,0 +1,98 @@ +# lt~obsolete.m4 -- aclocal satisfying obsolete definitions. -*-Autoconf-*- +# +# Copyright (C) 2004, 2005, 2007, 2009 Free Software Foundation, Inc. +# Written by Scott James Remnant, 2004. +# +# This file is free software; the Free Software Foundation gives +# unlimited permission to copy and/or distribute it, with or without +# modifications, as long as this notice is preserved. + +# serial 5 lt~obsolete.m4 + +# These exist entirely to fool aclocal when bootstrapping libtool. +# +# In the past libtool.m4 has provided macros via AC_DEFUN (or AU_DEFUN) +# which have later been changed to m4_define as they aren't part of the +# exported API, or moved to Autoconf or Automake where they belong. +# +# The trouble is, aclocal is a bit thick. It'll see the old AC_DEFUN +# in /usr/share/aclocal/libtool.m4 and remember it, then when it sees us +# using a macro with the same name in our local m4/libtool.m4 it'll +# pull the old libtool.m4 in (it doesn't see our shiny new m4_define +# and doesn't know about Autoconf macros at all.) +# +# So we provide this file, which has a silly filename so it's always +# included after everything else. This provides aclocal with the +# AC_DEFUNs it wants, but when m4 processes it, it doesn't do anything +# because those macros already exist, or will be overwritten later. +# We use AC_DEFUN over AU_DEFUN for compatibility with aclocal-1.6. +# +# Anytime we withdraw an AC_DEFUN or AU_DEFUN, remember to add it here. +# Yes, that means every name once taken will need to remain here until +# we give up compatibility with versions before 1.7, at which point +# we need to keep only those names which we still refer to. + +# This is to help aclocal find these macros, as it can't see m4_define. +AC_DEFUN([LTOBSOLETE_VERSION], [m4_if([1])]) + +m4_ifndef([AC_LIBTOOL_LINKER_OPTION], [AC_DEFUN([AC_LIBTOOL_LINKER_OPTION])]) +m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP])]) +m4_ifndef([_LT_AC_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_AC_SHELL_INIT], [AC_DEFUN([_LT_AC_SHELL_INIT])]) +m4_ifndef([_LT_AC_SYS_LIBPATH_AIX], [AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX])]) +m4_ifndef([_LT_PROG_LTMAIN], [AC_DEFUN([_LT_PROG_LTMAIN])]) +m4_ifndef([_LT_AC_TAGVAR], [AC_DEFUN([_LT_AC_TAGVAR])]) +m4_ifndef([AC_LTDL_ENABLE_INSTALL], [AC_DEFUN([AC_LTDL_ENABLE_INSTALL])]) +m4_ifndef([AC_LTDL_PREOPEN], [AC_DEFUN([AC_LTDL_PREOPEN])]) +m4_ifndef([_LT_AC_SYS_COMPILER], [AC_DEFUN([_LT_AC_SYS_COMPILER])]) +m4_ifndef([_LT_AC_LOCK], [AC_DEFUN([_LT_AC_LOCK])]) +m4_ifndef([AC_LIBTOOL_SYS_OLD_ARCHIVE], [AC_DEFUN([AC_LIBTOOL_SYS_OLD_ARCHIVE])]) +m4_ifndef([_LT_AC_TRY_DLOPEN_SELF], [AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF])]) +m4_ifndef([AC_LIBTOOL_PROG_CC_C_O], [AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O])]) +m4_ifndef([AC_LIBTOOL_SYS_HARD_LINK_LOCKS], [AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS])]) +m4_ifndef([AC_LIBTOOL_OBJDIR], [AC_DEFUN([AC_LIBTOOL_OBJDIR])]) +m4_ifndef([AC_LTDL_OBJDIR], [AC_DEFUN([AC_LTDL_OBJDIR])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH], [AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH])]) +m4_ifndef([AC_LIBTOOL_SYS_LIB_STRIP], [AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP])]) +m4_ifndef([AC_PATH_MAGIC], [AC_DEFUN([AC_PATH_MAGIC])]) +m4_ifndef([AC_PROG_LD_GNU], [AC_DEFUN([AC_PROG_LD_GNU])]) +m4_ifndef([AC_PROG_LD_RELOAD_FLAG], [AC_DEFUN([AC_PROG_LD_RELOAD_FLAG])]) +m4_ifndef([AC_DEPLIBS_CHECK_METHOD], [AC_DEFUN([AC_DEPLIBS_CHECK_METHOD])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_NO_RTTI], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI])]) +m4_ifndef([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE], [AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE])]) +m4_ifndef([AC_LIBTOOL_PROG_COMPILER_PIC], [AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC])]) +m4_ifndef([AC_LIBTOOL_PROG_LD_SHLIBS], [AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS])]) +m4_ifndef([AC_LIBTOOL_POSTDEP_PREDEP], [AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP])]) +m4_ifndef([LT_AC_PROG_EGREP], [AC_DEFUN([LT_AC_PROG_EGREP])]) +m4_ifndef([LT_AC_PROG_SED], [AC_DEFUN([LT_AC_PROG_SED])]) +m4_ifndef([_LT_CC_BASENAME], [AC_DEFUN([_LT_CC_BASENAME])]) +m4_ifndef([_LT_COMPILER_BOILERPLATE], [AC_DEFUN([_LT_COMPILER_BOILERPLATE])]) +m4_ifndef([_LT_LINKER_BOILERPLATE], [AC_DEFUN([_LT_LINKER_BOILERPLATE])]) +m4_ifndef([_AC_PROG_LIBTOOL], [AC_DEFUN([_AC_PROG_LIBTOOL])]) +m4_ifndef([AC_LIBTOOL_SETUP], [AC_DEFUN([AC_LIBTOOL_SETUP])]) +m4_ifndef([_LT_AC_CHECK_DLFCN], [AC_DEFUN([_LT_AC_CHECK_DLFCN])]) +m4_ifndef([AC_LIBTOOL_SYS_DYNAMIC_LINKER], [AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER])]) +m4_ifndef([_LT_AC_TAGCONFIG], [AC_DEFUN([_LT_AC_TAGCONFIG])]) +m4_ifndef([AC_DISABLE_FAST_INSTALL], [AC_DEFUN([AC_DISABLE_FAST_INSTALL])]) +m4_ifndef([_LT_AC_LANG_CXX], [AC_DEFUN([_LT_AC_LANG_CXX])]) +m4_ifndef([_LT_AC_LANG_F77], [AC_DEFUN([_LT_AC_LANG_F77])]) +m4_ifndef([_LT_AC_LANG_GCJ], [AC_DEFUN([_LT_AC_LANG_GCJ])]) +m4_ifndef([AC_LIBTOOL_LANG_C_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG])]) +m4_ifndef([_LT_AC_LANG_C_CONFIG], [AC_DEFUN([_LT_AC_LANG_C_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_CXX_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG])]) +m4_ifndef([_LT_AC_LANG_CXX_CONFIG], [AC_DEFUN([_LT_AC_LANG_CXX_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_F77_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG])]) +m4_ifndef([_LT_AC_LANG_F77_CONFIG], [AC_DEFUN([_LT_AC_LANG_F77_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_GCJ_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG])]) +m4_ifndef([_LT_AC_LANG_GCJ_CONFIG], [AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG])]) +m4_ifndef([AC_LIBTOOL_LANG_RC_CONFIG], [AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG])]) +m4_ifndef([_LT_AC_LANG_RC_CONFIG], [AC_DEFUN([_LT_AC_LANG_RC_CONFIG])]) +m4_ifndef([AC_LIBTOOL_CONFIG], [AC_DEFUN([AC_LIBTOOL_CONFIG])]) +m4_ifndef([_LT_AC_FILE_LTDLL_C], [AC_DEFUN([_LT_AC_FILE_LTDLL_C])]) +m4_ifndef([_LT_REQUIRED_DARWIN_CHECKS], [AC_DEFUN([_LT_REQUIRED_DARWIN_CHECKS])]) +m4_ifndef([_LT_AC_PROG_CXXCPP], [AC_DEFUN([_LT_AC_PROG_CXXCPP])]) +m4_ifndef([_LT_PREPARE_SED_QUOTE_VARS], [AC_DEFUN([_LT_PREPARE_SED_QUOTE_VARS])]) +m4_ifndef([_LT_PROG_ECHO_BACKSLASH], [AC_DEFUN([_LT_PROG_ECHO_BACKSLASH])]) +m4_ifndef([_LT_PROG_F77], [AC_DEFUN([_LT_PROG_F77])]) +m4_ifndef([_LT_PROG_FC], [AC_DEFUN([_LT_PROG_FC])]) +m4_ifndef([_LT_PROG_CXX], [AC_DEFUN([_LT_PROG_CXX])]) diff --git a/src/spatialite/mainpage.doxy b/src/spatialite/mainpage.doxy new file mode 100644 index 0000000..7ee1114 --- /dev/null +++ b/src/spatialite/mainpage.doxy @@ -0,0 +1,140 @@ +/** \mainpage Introduction + +\section Generalities + +SpatiaLite is an open source library intended to extend basic SQLite +core in order to support full fledged Spatial SQL capabilities. + +\n\n SQLite is intrinsically simple and lighweight: +- a single ligthweight library implementing the full SQL engine. +- standard SQL implementation: almost complete SQL-92. +- no complex client/server architecture. +- a whole database simply corresponds to a single monolithic file + [no size limits]. +- any DB-file can be safely exchanged across different platforms, because + the internal architecture is universally portable. +- no installation, no configuration. + +SpatiaLite is smoothly integrated into SQLite so to deploy a +complete and powerfull Spatial DBMS [mostly OGC-SFS compliant]. +\n All this fully preserving the lightness and simplicity typical +of SQLite itself. +\n That's not all: SpatiaLite supports direct SQL access to several +commonly used \e external \e datasources, this including: +- ESRI \b Shapefiles. +- \b DBF Archive Files. +- \b TXT/CSV structured text files. +- \b Spreadsheets [.xls format]. + +And SpatiaLite actively supports many alternative standard Geometry notations: +- \b WKT [Well Known Text] and \b WKB [Well Known Binary]. +- PostGIS own \b EWKT and \b EWKB [Extended WKT / WKB]. +- \b GML [Geography Markup Language, both v2 and v3]. +- \b KML [Keyhole Markup Language, used by Google Maps and Google Earth]. +- \b GeoJSON [Geometry Java Script Object Notation]. +- \b SVG [Scalable Vector Graphics]. + +Conclusion: using SQLite + SpatiaLite you can deploy an +alternative Spatial DBMS roughly equivalent to PostgreSQL + PostGIS. +\n The main difference between them isn't in powerness, but mainly +relies on architecture: +- PostgrSQL + PostGIS fully supports a client/server architecture. + \n This is well fit for complex and sophisticated Spatial Data + infrastructures, but surely implies a certain degree of complexity. +- SQLite + SpatiaLite supports a much more simplest personal architecture. + \n This is most appropriate for desktop, stand-alone, personal activities. + +Choosing the one or the other simply depends on your very specific +requirements: +- no one is better than the other one: + they are simply optimized for different envoronments. +- both them can roughly support the same Spatial Data processing capabilities. +- feel free to choose the best fit one accordingly to your effective goals. + +\section Building + +Building and installing the SpatiaLite library is straightforward: +\verbatim +./configure +make +make install +\endverbatim + +Please note: SpatiaLite depends on the following open source libraries: +- GNU \b ICONV + \n locale charset encodings support +- \b GEOS + \n Geometry engine +- \b PROJ.4 + \n Spatial Reference System handling [coordinate re-projection] +- \b FreeXL + \n Spreadsheet input support [.xls format] + +The library comes in two different flavors: +- \b libspatialite + \n standard, canonical library: the best and safest way to deploy SpatiaLite. + \n this obviously depends on \e external \b libsqlite: thus ensuring full + coherence between libraries. + \n warmly reccomended, mostly on Unix-like systems.\n +- \b libspatialite-amalgamation + \n The whole library is \e amalgamated into a single monolithic file + and includes an \e internal \e private \e copy of \b libsqlite. + \n Using the \e amalgamated library may strongly simplify any following + installation process, and nicely supports \b static \b linkage. + \n Anyway, you can safely apply the \e amalgamated approch only to + self-standing apps. + \n Attempting to use the \e amalgated library on complex frameworks or on + data connectors / language bindings + \n may easily cause serious conflicts. + +\section Deployment + +You can deploy SpatiaLite in two alternative ways: +- you can load the SpatiaLite library as a \b dynamic \b extension to SQLite. + \n This allows SQLite to support SQL Spatial Data [Geometry] and SQL + Spatial Functions. + \n Theorically, any generic tool or language connector supporting SQLite + can support this \e extension mechanism; + \n sadly enough, sometimes this feature is intentionally disabled: + I'm sorry for you if this is your specific case. + \n\n How to load SpatiaLite as a dynamic extension to SQLite: +\verbatim +SELECT load_extension('spatialite_dynamic_library_name'); +\endverbatim + \n +- you can directly link the SpatiaLite library to any application of your own. + \n This allows you to ship a complete, powerfull, self-contained Spatial + SQL engine directly supporting your app. + \n And such Spatial SQL engine doesn't requires any installation or + configuration at all. + \n That's not all: linking the SpatiaLite to your own C/C++ code you aren't + simply constrained to use SQL: + \n adopting this approach you can directly access the complete C API. + \n\n Linking SpatiaLite to your own code is usually simple: +\verbatim +gcc my_program.c -o my_program -lspatialite +\endverbatim + \n On some systems you may have to provide a slightly more complex arrangement: +\verbatim +gcc -I/usr/local/include my_program.c -o my_program \ + -L/usr/local/lib -lpsatialite -lsqlite -lgeos_c -lgeos \ + -lproj -lfreexl -liconv -lm -lstdc++ +\endverbatim + \n SpatiaLite also provides pkg-config support, so you can also do +\verbatim +gcc -I/usr/local/include my_program.c -o my_program \ + `pkg-config --libs spatialite` +\endverbatim + + +\section License + +SpatiaLite is licensed under the MPL tri-license terms: you are free to choose +the best-fit license between: + - the MPL 1.1 + - the GPL v2.0 or any subsequent version + - the LGPL v2.1 or any subsequent version + +Enjoy, and happy coding +*/ + diff --git a/src/spatialite/makefile.vc b/src/spatialite/makefile.vc new file mode 100644 index 0000000..208f460 --- /dev/null +++ b/src/spatialite/makefile.vc @@ -0,0 +1,112 @@ +# $Id: $ +# +# NMAKE Makefile to build libspatialite on Windows +# +!INCLUDE nmake.opt + +LIBOBJ = src\gaiaaux\gg_sqlaux.obj src\gaiaaux\gg_utf8.obj \ + src\gaiaexif\gaia_exif.obj src\gaiageo\gg_advanced.obj \ + src\gaiageo\gg_endian.obj src\gaiageo\gg_ewkt.obj \ + src\gaiageo\gg_geodesic.obj src\gaiageo\gg_geoJSON.obj \ + src\gaiageo\gg_geometries.obj src\gaiageo\gg_geoscvt.obj \ + src\gaiageo\gg_gml.obj src\gaiageo\gg_kml.obj \ + src\gaiageo\gg_relations.obj src\gaiageo\gg_shape.obj \ + src\gaiageo\gg_transform.obj src\gaiageo\gg_vanuatu.obj \ + src\gaiageo\gg_wkb.obj src\gaiageo\gg_wkt.obj \ + src\gaiageo\gg_extras.obj src\gaiageo\gg_xml.obj \ + src\gaiageo\gg_relations_ext.obj src/connection_cache/alloc_cache.obj \ + src\spatialite\mbrcache.obj src\shapefiles\shapefiles.obj \ + src\spatialite\spatialite.obj src\spatialite\virtualdbf.obj \ + src\spatialite\virtualfdo.obj src\spatialite\virtualnetwork.obj \ + src\spatialite\virtualshape.obj src\spatialite\virtualspatialindex.obj \ + src\spatialite\statistics.obj src\spatialite\metatables.obj \ + src\spatialite\virtualXL.obj src\spatialite\extra_tables.obj \ + src\spatialite\virtualxpath.obj src\spatialite\virtualbbox.obj \ + src\spatialite\spatialite_init.obj src\gaiageo\gg_voronoj.obj \ + src\wfs\wfs_in.obj src\srsinit\srs_init.obj \ + src\dxf\dxf_parser.obj src\dxf\dxf_loader.obj src\dxf\dxf_writer.obj \ + src\dxf\dxf_load_distinct.obj src\dxf\dxf_load_mixed.obj \ + src\shapefiles\validator.obj src\md5\md5.obj src\md5\gaia_md5.obj \ + src\srsinit\epsg_inlined_00.obj src\srsinit\epsg_inlined_01.obj \ + src\srsinit\epsg_inlined_02.obj src\srsinit\epsg_inlined_03.obj \ + src\srsinit\epsg_inlined_04.obj src\srsinit\epsg_inlined_05.obj \ + src\srsinit\epsg_inlined_06.obj src\srsinit\epsg_inlined_07.obj \ + src\srsinit\epsg_inlined_08.obj src\srsinit\epsg_inlined_09.obj \ + src\srsinit\epsg_inlined_10.obj src\srsinit\epsg_inlined_11.obj \ + src\srsinit\epsg_inlined_12.obj src\srsinit\epsg_inlined_13.obj \ + src\srsinit\epsg_inlined_14.obj src\srsinit\epsg_inlined_15.obj \ + src\srsinit\epsg_inlined_16.obj src\srsinit\epsg_inlined_17.obj \ + src\srsinit\epsg_inlined_18.obj src\srsinit\epsg_inlined_19.obj \ + src\srsinit\epsg_inlined_20.obj src\srsinit\epsg_inlined_21.obj \ + src\srsinit\epsg_inlined_22.obj src\srsinit\epsg_inlined_23.obj \ + src\srsinit\epsg_inlined_24.obj src\srsinit\epsg_inlined_25.obj \ + src\srsinit\epsg_inlined_26.obj src\srsinit\epsg_inlined_27.obj \ + src\srsinit\epsg_inlined_28.obj src\srsinit\epsg_inlined_29.obj \ + src\srsinit\epsg_inlined_30.obj src\srsinit\epsg_inlined_31.obj \ + src\srsinit\epsg_inlined_32.obj src\srsinit\epsg_inlined_33.obj \ + src\srsinit\epsg_inlined_34.obj src\srsinit\epsg_inlined_35.obj \ + src\srsinit\epsg_inlined_36.obj src\srsinit\epsg_inlined_37.obj \ + src\srsinit\epsg_inlined_38.obj src\srsinit\epsg_inlined_39.obj \ + src\srsinit\epsg_inlined_40.obj src\srsinit\epsg_inlined_41.obj \ + src\srsinit\epsg_inlined_42.obj src\srsinit\epsg_inlined_43.obj \ + src\srsinit\epsg_inlined_44.obj src\srsinit\epsg_inlined_45.obj \ + src\srsinit\epsg_inlined_extra.obj \ + src\srsinit\epsg_inlined_prussian.obj \ + src\srsinit\epsg_inlined_wgs84_00.obj src\srsinit\epsg_inlined_wgs84_01.obj \ + src\versioninfo\version.obj src\virtualtext\virtualtext.obj +SPATIALITE_DLL = spatialite$(VERSION).dll + +CFLAGS = /nologo -I.\src\headers -I. -IC:\OSGeo4W\include $(OPTFLAGS) + +default: all + +all: spatialite.lib spatialite_i.lib +#$(EXIF_LOADER_EXE) + +spatialite.lib: $(LIBOBJ) + if exist spatialite.lib del spatialite.lib + lib /out:spatialite.lib $(LIBOBJ) + +$(SPATIALITE_DLL): spatialite_i.lib + +spatialite_i.lib: $(LIBOBJ) + link /debug /dll /out:$(SPATIALITE_DLL) \ + /implib:spatialite_i.lib $(LIBOBJ) \ + C:\OSGeo4W\lib\proj_i.lib C:\OSGeo4W\lib\geos_c.lib \ + C:\OSGeo4w\lib\freexl_i.lib C:\OSGeo4w\lib\iconv.lib \ + C:\OSGeo4W\lib\sqlite3_i.lib C:\OSGeo4W\lib\zlib.lib \ + C:\OSGeo4W\lib\libxml2.lib + if exist $(SPATIALITE_DLL).manifest mt -manifest \ + $(SPATIALITE_DLL).manifest -outputresource:$(SPATIALITE_DLL);2 + +.c.obj: + $(CC) $(CFLAGS) /c $*.c /Fo$@ + +clean: + del *.dll + del *.exp + del *.manifest + del *.lib + del src\gaiaaux\*.obj + del src\gaiaexif\*.obj + del src\gaiageo\*.obj + del src\spatialite\*.obj + del src\srsinit\*.obj + del src\versioninfo\*.obj + del src\virtualtext\*.obj + del src\wfs\*.obj + del src\dxf\*.obj + del src\md5\*.obj + del *.pdb + +install: all + -mkdir $(INSTDIR) + -mkdir $(INSTDIR)\bin + -mkdir $(INSTDIR)\lib + -mkdir $(INSTDIR)\include + -mkdir $(INSTDIR)\include\spatialite + copy *.dll $(INSTDIR)\bin + copy *.lib $(INSTDIR)\lib + copy src\headers\spatialite.h $(INSTDIR)\include + copy src\headers\spatialite\*.h $(INSTDIR)\include\spatialite + diff --git a/src/spatialite/missing b/src/spatialite/missing new file mode 100755 index 0000000..28055d2 --- /dev/null +++ b/src/spatialite/missing @@ -0,0 +1,376 @@ +#! /bin/sh +# Common stub for a few missing GNU programs while installing. + +scriptversion=2009-04-28.21; # UTC + +# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, +# 2008, 2009 Free Software Foundation, Inc. +# Originally by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 +fi + +run=: +sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' +sed_minuso='s/.* -o \([^ ]*\).*/\1/p' + +# In the cases where this matters, `missing' is being run in the +# srcdir already. +if test -f configure.ac; then + configure_ac=configure.ac +else + configure_ac=configure.in +fi + +msg="missing on your system" + +case $1 in +--run) + # Try to run requested program, and just exit if it succeeds. + run= + shift + "$@" && exit 0 + # Exit code 63 means version mismatch. This often happens + # when the user try to use an ancient version of a tool on + # a file that requires a minimum version. In this case we + # we should proceed has if the program had been absent, or + # if --run hadn't been passed. + if test $? = 63; then + run=: + msg="probably too old" + fi + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an +error status if there is no known handling for PROGRAM. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + --run try to run the given command, and emulate it if it fails + +Supported PROGRAM values: + aclocal touch file \`aclocal.m4' + autoconf touch file \`configure' + autoheader touch file \`config.h.in' + autom4te touch the output file, or create a stub one + automake touch all \`Makefile.in' files + bison create \`y.tab.[ch]', if possible, from existing .[ch] + flex create \`lex.yy.c', if possible, from existing .c + help2man touch the output file + lex create \`lex.yy.c', if possible, from existing .c + makeinfo touch the output file + tar try tar, gnutar, gtar, then tar without non-portable flags + yacc create \`y.tab.[ch]', if possible, from existing .[ch] + +Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and +\`g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: Unknown \`$1' option" + echo 1>&2 "Try \`$0 --help' for more information" + exit 1 + ;; + +esac + +# normalize program name to check for. +program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + +# Now exit if we have it, but it failed. Also exit now if we +# don't have it and --version was passed (most likely to detect +# the program). This is about non-GNU programs, so use $1 not +# $program. +case $1 in + lex*|yacc*) + # Not GNU programs, they don't have --version. + ;; + + tar*) + if test -n "$run"; then + echo 1>&2 "ERROR: \`tar' requires --run" + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + exit 1 + fi + ;; + + *) + if test -z "$run" && ($1 --version) > /dev/null 2>&1; then + # We have it, but it failed. + exit 1 + elif test "x$2" = "x--version" || test "x$2" = "x--help"; then + # Could not run --version or --help. This is probably someone + # running `$TOOL --version' or `$TOOL --help' to check whether + # $TOOL exists and not knowing $TOOL uses missing. + exit 1 + fi + ;; +esac + +# If it does not exist, or fails to run (possibly an outdated version), +# try to emulate it. +case $program in + aclocal*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acinclude.m4' or \`${configure_ac}'. You might want + to install the \`Automake' and \`Perl' packages. Grab them from + any GNU archive site." + touch aclocal.m4 + ;; + + autoconf*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`${configure_ac}'. You might want to install the + \`Autoconf' and \`GNU m4' packages. Grab them from any GNU + archive site." + touch configure + ;; + + autoheader*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`acconfig.h' or \`${configure_ac}'. You might want + to install the \`Autoconf' and \`GNU m4' packages. Grab them + from any GNU archive site." + files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` + test -z "$files" && files="config.h" + touch_files= + for f in $files; do + case $f in + *:*) touch_files="$touch_files "`echo "$f" | + sed -e 's/^[^:]*://' -e 's/:.*//'`;; + *) touch_files="$touch_files $f.in";; + esac + done + touch $touch_files + ;; + + automake*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. + You might want to install the \`Automake' and \`Perl' packages. + Grab them from any GNU archive site." + find . -type f -name Makefile.am -print | + sed 's/\.am$/.in/' | + while read f; do touch "$f"; done + ;; + + autom4te*) + echo 1>&2 "\ +WARNING: \`$1' is needed, but is $msg. + You might have modified some files without having the + proper tools for further handling them. + You can get \`$1' as part of \`Autoconf' from any GNU + archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo "#! /bin/sh" + echo "# Created by GNU Automake missing as a replacement of" + echo "# $ $@" + echo "exit 0" + chmod +x $file + exit 1 + fi + ;; + + bison*|yacc*) + echo 1>&2 "\ +WARNING: \`$1' $msg. You should only need it if + you modified a \`.y' file. You may need the \`Bison' package + in order for those modifications to take effect. You can get + \`Bison' from any GNU archive site." + rm -f y.tab.c y.tab.h + if test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.y) + SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.c + fi + SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" y.tab.h + fi + ;; + esac + fi + if test ! -f y.tab.h; then + echo >y.tab.h + fi + if test ! -f y.tab.c; then + echo 'main() { return 0; }' >y.tab.c + fi + ;; + + lex*|flex*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.l' file. You may need the \`Flex' package + in order for those modifications to take effect. You can get + \`Flex' from any GNU archive site." + rm -f lex.yy.c + if test $# -ne 1; then + eval LASTARG="\${$#}" + case $LASTARG in + *.l) + SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` + if test -f "$SRCFILE"; then + cp "$SRCFILE" lex.yy.c + fi + ;; + esac + fi + if test ! -f lex.yy.c; then + echo 'main() { return 0; }' >lex.yy.c + fi + ;; + + help2man*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a dependency of a manual page. You may need the + \`Help2man' package in order for those modifications to take + effect. You can get \`Help2man' from any GNU archive site." + + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -f "$file"; then + touch $file + else + test -z "$file" || exec >$file + echo ".ab help2man is required to generate this page" + exit $? + fi + ;; + + makeinfo*) + echo 1>&2 "\ +WARNING: \`$1' is $msg. You should only need it if + you modified a \`.texi' or \`.texinfo' file, or any other file + indirectly affecting the aspect of the manual. The spurious + call might also be the consequence of using a buggy \`make' (AIX, + DU, IRIX). You might want to install the \`Texinfo' package or + the \`GNU make' package. Grab either from any GNU archive site." + # The file to touch is that specified with -o ... + file=`echo "$*" | sed -n "$sed_output"` + test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` + if test -z "$file"; then + # ... or it is the one specified with @setfilename ... + infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` + file=`sed -n ' + /^@setfilename/{ + s/.* \([^ ]*\) *$/\1/ + p + q + }' $infile` + # ... or it is derived from the source name (dir/f.texi becomes f.info) + test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info + fi + # If the file does not exist, the user really needs makeinfo; + # let's fail without touching anything. + test -f $file || exit 1 + touch $file + ;; + + tar*) + shift + + # We have already tried tar in the generic part. + # Look for gnutar/gtar before invocation to avoid ugly error + # messages. + if (gnutar --version > /dev/null 2>&1); then + gnutar "$@" && exit 0 + fi + if (gtar --version > /dev/null 2>&1); then + gtar "$@" && exit 0 + fi + firstarg="$1" + if shift; then + case $firstarg in + *o*) + firstarg=`echo "$firstarg" | sed s/o//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + case $firstarg in + *h*) + firstarg=`echo "$firstarg" | sed s/h//` + tar "$firstarg" "$@" && exit 0 + ;; + esac + fi + + echo 1>&2 "\ +WARNING: I can't seem to be able to run \`tar' with the given arguments. + You may want to install GNU tar or Free paxutils, or check the + command line arguments." + exit 1 + ;; + + *) + echo 1>&2 "\ +WARNING: \`$1' is needed, and is $msg. + You might have modified some files without having the + proper tools for further handling them. Check the \`README' file, + it often tells you about the needed prerequisites for installing + this package. You may also peek at any GNU archive site, in case + some other package would contain this missing \`$1' program." + exit 1 + ;; +esac + +exit 0 + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/src/spatialite/nmake.opt b/src/spatialite/nmake.opt new file mode 100644 index 0000000..0960ec1 --- /dev/null +++ b/src/spatialite/nmake.opt @@ -0,0 +1,12 @@ +# Directory tree where SpatiaLite will be installed. +INSTDIR=C:\OSGeo4W + +# Uncomment the first for an optimized build, or the second for debug. +OPTFLAGS= /nologo /Ox /fp:precise /W3 /MD /D_CRT_SECURE_NO_WARNINGS \ + /DDLL_EXPORT /DYY_NO_UNISTD_H +#OPTFLAGS= /nologo /Zi /MD /Fdspatialite.pdb /DDLL_EXPORT + +# Set the version number for the DLL. Normally we leave this blank since +# we want software that is dynamically loading the DLL to have no problem +# with version numbers. +VERSION= diff --git a/src/spatialite/spatialite-4.2.0.mk b/src/spatialite/spatialite-4.2.0.mk new file mode 100644 index 0000000..13c39f2 --- /dev/null +++ b/src/spatialite/spatialite-4.2.0.mk @@ -0,0 +1,169 @@ +include $(CLEAR_VARS) +# ./configure --enable-examples=no --build=x86_64-pc-linux-gnu --host=arm-linux-eabi +# 2015-06-09: libspatialite-4.2.0-rc1 +LOCAL_MODULE := spatialite + +# SQLite flags copied from ASOP +common_sqlite_flags := \ + -DHAVE_USLEEP=1 \ + -DSQLITE_DEFAULT_JOURNAL_SIZE_LIMIT=1048576 \ + -DSQLITE_THREADSAFE=1 \ + -DNDEBUG=1 \ + -DSQLITE_ENABLE_MEMORY_MANAGEMENT=1 \ + -DSQLITE_DEFAULT_AUTOVACUUM=1 \ + -DSQLITE_TEMP_STORE=3 \ + -DSQLITE_ENABLE_FTS3 \ + -DSQLITE_ENABLE_FTS3_BACKWARDS \ + -DSQLITE_ENABLE_RTREE=1 \ + -DSQLITE_DEFAULT_FILE_FORMAT=4 + + +# spatialite flags +# comment out TARGET_CPU in config.h - will be replaced with TARGET_ARCH_ABI +spatialite_flags := \ + -DOMIT_FREEXL \ + -DTARGET_CPU=\"$(TARGET_ARCH_ABI)\" \ + -Dfdatasync=fsync \ + -DSQLITE_ENABLE_RTREE=1 \ + -DSQLITE_OMIT_BUILTIN_TEST=1 + +LOCAL_CFLAGS := \ + $(common_sqlite_flags) \ + $(spatialite_flags) + +# LOCAL_LDLIBS is always ignored for static libraries +# LOCAL_LDLIBS := -llog -lz +# LOADABLE_EXTENSION must NOT be defined +# For Spatialite with VirtualShapes,VirtualXL support iconv is needed +LOCAL_C_INCLUDES := \ + $(SQLITE_PATH) \ + $(SPATIALITE_PATH) \ + $(SPATIALITE_PATH)/src/headers \ + $(ICONV_PATH)/include \ + $(ICONV_PATH)/libcharset/include \ + $(GEOS_PATH)/include \ + $(GEOS_PATH)/capi \ + $(PROJ4_PATH)/src \ + $(LZMA_PATH)/src/liblzma/api \ + $(XML2_PATH)/include +LOCAL_SRC_FILES := \ + $(SPATIALITE_PATH)/src/connection_cache/alloc_cache.c \ + $(SPATIALITE_PATH)/src/connection_cache/generator/code_generator.c \ + $(SPATIALITE_PATH)/src/dxf/dxf_load_distinct.c \ + $(SPATIALITE_PATH)/src/dxf/dxf_loader.c \ + $(SPATIALITE_PATH)/src/dxf/dxf_load_mixed.c \ + $(SPATIALITE_PATH)/src/dxf/dxf_parser.c \ + $(SPATIALITE_PATH)/src/dxf/dxf_writer.c \ + $(SPATIALITE_PATH)/src/gaiaaux/gg_sqlaux.c \ + $(SPATIALITE_PATH)/src/gaiaaux/gg_utf8.c \ + $(SPATIALITE_PATH)/src/gaiaexif/gaia_exif.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_advanced.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_endian.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_ewkt.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_extras.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_geodesic.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_geoJSON.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_geometries.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_geoscvt.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_gml.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_kml.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_lwgeom.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_relations.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_relations_ext.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_shape.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_transform.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_vanuatu.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_voronoj.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_wkb.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_wkt.c \ + $(SPATIALITE_PATH)/src/gaiageo/gg_xml.c \ + $(SPATIALITE_PATH)/src/geopackage/gaia_cvt_gpkg.c \ + $(SPATIALITE_PATH)/src/geopackage/gpkgAddGeometryColumn.c \ + $(SPATIALITE_PATH)/src/geopackage/gpkg_add_geometry_triggers.c \ + $(SPATIALITE_PATH)/src/geopackage/gpkg_add_spatial_index.c \ + $(SPATIALITE_PATH)/src/geopackage/gpkg_add_tile_triggers.c \ + $(SPATIALITE_PATH)/src/geopackage/gpkgBinary.c \ + $(SPATIALITE_PATH)/src/geopackage/gpkgCreateBaseTables.c \ + $(SPATIALITE_PATH)/src/geopackage/gpkgCreateTilesTable.c \ + $(SPATIALITE_PATH)/src/geopackage/gpkgCreateTilesZoomLevel.c \ + $(SPATIALITE_PATH)/src/geopackage/gpkgGetImageType.c \ + $(SPATIALITE_PATH)/src/geopackage/gpkg_get_normal_row.c \ + $(SPATIALITE_PATH)/src/geopackage/gpkg_get_normal_zoom.c \ + $(SPATIALITE_PATH)/src/geopackage/gpkgInsertEpsgSRID.c \ + $(SPATIALITE_PATH)/src/geopackage/gpkgMakePoint.c \ + $(SPATIALITE_PATH)/src/md5/gaia_md5.c \ + $(SPATIALITE_PATH)/src/md5/md5.c \ + $(SPATIALITE_PATH)/src/shapefiles/shapefiles.c \ + $(SPATIALITE_PATH)/src/shapefiles/validator.c \ + $(SPATIALITE_PATH)/src/spatialite/extra_tables.c \ + $(SPATIALITE_PATH)/src/spatialite/mbrcache.c \ + $(SPATIALITE_PATH)/src/spatialite/metatables.c \ + $(SPATIALITE_PATH)/src/spatialite/spatialite.c \ + $(SPATIALITE_PATH)/src/spatialite/spatialite_init.c \ + $(SPATIALITE_PATH)/src/spatialite/statistics.c \ + $(SPATIALITE_PATH)/src/spatialite/virtualbbox.c \ + $(SPATIALITE_PATH)/src/spatialite/virtualdbf.c \ + $(SPATIALITE_PATH)/src/spatialite/virtualfdo.c \ + $(SPATIALITE_PATH)/src/spatialite/virtualgpkg.c \ + $(SPATIALITE_PATH)/src/spatialite/virtualnetwork.c \ + $(SPATIALITE_PATH)/src/spatialite/virtualshape.c \ + $(SPATIALITE_PATH)/src/spatialite/virtualspatialindex.c \ + $(SPATIALITE_PATH)/src/spatialite/virtualXL.c \ + $(SPATIALITE_PATH)/src/spatialite/virtualxpath.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_00.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_01.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_02.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_03.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_04.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_05.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_06.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_07.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_08.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_09.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_10.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_11.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_12.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_13.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_14.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_15.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_16.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_17.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_18.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_19.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_20.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_21.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_22.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_23.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_24.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_25.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_26.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_27.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_28.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_29.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_30.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_31.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_32.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_33.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_34.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_35.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_36.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_37.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_38.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_39.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_40.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_41.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_42.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_43.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_44.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_45.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_extra.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_prussian.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_wgs84_00.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_inlined_wgs84_01.c \ + $(SPATIALITE_PATH)/src/srsinit/srs_init.c \ + $(SPATIALITE_PATH)/src/srsinit/epsg_update/auto_epsg.c \ + $(SPATIALITE_PATH)/src/versioninfo/version.c \ + $(SPATIALITE_PATH)/src/virtualtext/virtualtext.c \ + $(SPATIALITE_PATH)/src/wfs/wfs_in.c +LOCAL_STATIC_LIBRARIES := iconv proj geos libxml2 +include $(BUILD_STATIC_LIBRARY) diff --git a/src/spatialite/spatialite-sql-latest.html b/src/spatialite/spatialite-sql-latest.html new file mode 100644 index 0000000..ca672ba --- /dev/null +++ b/src/spatialite/spatialite-sql-latest.html @@ -0,0 +1,3292 @@ + + + + + + SpatiaLite SQL functions reference list + + +

    SpatiaLite 4.2.0          SQL functions reference list

    + back + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    +

    SQL Version Info [and build options testing] functions

    FunctionSyntaxSummary
    spatialite_versionspatialite_version( void ) : Stringreturns the current SpatiaLite version as a text string
    spatialite_target_cpuspatialite_target_cpu( void ) : Stringreturns the current SpatiaLite Target CPU as a text string
    proj4_versionproj4_version( void ) : Stringreturns the current PROJ.4 version as a text string
    + or NULL if PROJ.4 is currently unsupported
    geos_versiongeos_version( void ) : Stringreturns the current GEOS version as a text string
    + or NULL if GEOS is currently unsupported
    lwgeom_versionlwgeom_version( void ) : Stringreturns the current LWGEOM version as a text string
    + or NULL if LWGEOM is currently unsupported
    libxml2_versionlibxml2_version( void ) : Stringreturns the current LibXML2 version as a text string
    + or NULL if LibXML2 is currently unsupported
    HasIconvHasIconv( void ) : BooleanTRUE if the underlaying library was built enabling ICONV
    HasMathSQLHasMathSQL( void ) : BooleanTRUE if the underlaying library was built enabling MATHSQL
    HasGeoCallbacksHasGeoCallbacks( void ) : BooleanTRUE if the underlaying library was built enabling GEOCALLBACKS
    HasProjHasProj( void ) : BooleanTRUE if the underlaying library was built enabling PROJ
    HasGeosHasGeos( void ) : BooleanTRUE if the underlaying library was built enabling GEOS
    HasGeosAdvancedHasGeosAdvanced( void ) : BooleanTRUE if the underlaying library was built enabling GEOSADVANCED
    HasGeosTrunkHasGeosTrunk( void ) : BooleanTRUE if the underlaying library was built enabling GEOSTRUNK
    HasLwGeomHasLwGeom( void ) : BooleanTRUE if the underlaying library was built enabling LWGEOM
    HasLibXML2HasLibXML2( void ) : BooleanTRUE if the underlaying library was built enabling LibXML2
    HasEpsgHasEpsg( void ) : BooleanTRUE if the underlaying library was built enabling EPSG
    HasFreeXLHasFreeXL( void ) : BooleanTRUE if the underlaying library was built enabling FREEXL
    HasGeoPackageHasGeoPackage( void ) : BooleanTRUE if the underlaying library was built enabling GeoPackage support (GPKG))
    +

    Generic SQL functions

    FunctionSyntaxSummary
    CastToIntegerCastToInteger( value Generic ) : Integerreturns the intput value possibly casted to the Integer data-type: NULL if no conversion is possible.
    CastToDoubleCastToDouble( value Generic ) : Double precisionreturns the intput value possibly casted to the Double data-type: NULL if no conversion is possible.
    CastToTextCastToText( value Generic ) : Text
    + CastToText( value Generic , zero_pad Integer ) : Text
    returns the intput value possibly casted to the Text data-type: NULL if no conversion is possible.
    + If an optional argument zero_pad is passed and the input value is of the Integer or Double type, then the returned string will be padded using as much trailing ZEROs so to ensure the required length.
    CastToBlobCastToBlob( value Generic ) : Blob
    + CastToBlob( value Generic , hex_input Boolean ) : Blob
    returns the intput value possibly casted to the BLOB data-type: + if the optional argument hex_input is set to TRUE the input value will be expected to correspond to an HexaDecimal string, e.g. 01ab89EF; if this assumption fails then NULL will be returned.
    + NULL if no conversion is possible.
    ForceAsNullForceAsNull( val1 Generic , val2 Generic) : Genericif val1 and val2 are equal (and exactly of the same data-type) NULL will be returned; + otherwise val1 will be returned absolutely untouched and still preserving its originale data-type.
    CreateUUIDCreateUUID( void ) : Textreturns a Version 4 (random) UUID (Universally unique identifier).
    MD5ChecksumMD5Checksum( BLOB | TEXT ) : Textreturns the MD5 checksum corresponding to the input value.
    Will return NULL for non-BLOB or non-TEXT input.
    MD5TotalChecksumMD5TotalChecksum( BLOB | TEXT ) : Textreturns a cumulative MD5 checksum.
    aggregate function
    +

    SQL math functions

    FunctionSyntaxSummary
    AbsAbs( x Double precision ) : Double precisionreturns the absolute value of x
    AcosAcos( x Double precision ) : Double precisionreturns the arc cosine of x, that is, the value whose cosine is x
    + returns NULL if x is not in the range -1 to 1
    AsinAsin( x Double precision ) : Double precisionreturns the arc sine of x, that is, the value whose sine is x
    + returns NULL if x is not in the range -1 to 1
    AtanAtan( x Double precision ) : Double precisionreturns the arc tangent of x, that is, the value whose tangent is x
    Ceil
    Ceiling
    Ceil( x Double precision ) : Double precision
    + Ceiling( x Double precision ) : Double precision
    returns the smallest integer value not less than x
    CosCos( x Double precision ) : Double precisionreturns the cosine of x, where x is given in radians
    CotCot( x Double precision ) : Double precisionreturns the cotangent of x, where x is given in radians
    DegreesDegrees( x Double precision ) : Double precisionreturns the argument x, converted from radians to degrees
    ExpExp( x Double precision ) : Double precisionreturns the value of e (the base of natural logarithms) raised to the power of x
    + the inverse of this function is Log() (using a single argument only) or Ln()
    FloorFloor( x Double precision ) : Double precisionreturns the largest integer value not greater than x
    Ln
    Log
    Ln( x Double precision ) : Double precision
    + Log( x Double precision ) : Double precision
    returns the natural logarithm of x; that is, the base-e logarithm of x
    + If x is less than or equal to 0, then NULL is returned
    LogLog( b Double precision , x Double precision ) : Double precisionreturns the logarithm of x to the base b
    + If x is less than or equal to 0, or if b is less than or equal to 1, then NULL is returned
    + Log(b, x) is equivalent to Log(x) / Log(b)
    Log2Log2( x Double precision ) : Double precisionreturns the base-2 logarithm of x
    + Log2(x) is equivalent to Log(x) / Log(2)
    Log10Log10( x Double precision ) : Double precisionreturns the base-10 logarithm of x
    + Log10(x) is equivalent to Log(x) / Log(10)
    PIPI( void ) : Double precisionreturns the value of PI
    Pow
    Power
    Pow( x Double precision , y Double precision ) : Double precision
    + Power( x Double precision , y Double precision ) : Double precision
    returns the value of x raised to the power of y
    RadiansRadians( x Double precision ) : Double precisionreturns the argument x, converted from degrees to radians
    SignSign( x Double precision ) : Double precisionreturns the sign of the argument as -1, 0, or 1, + depending on whether x is negative, zero, or positive.
    SinSin( x Double precision ) : Double precisionreturns the sine of x, where x is given in radians
    SqrtSqrt( x Double precision ) : Double precisionreturns the square root of a non-negative number x
    Stddev_popStddev_pop( x Double precision ) : Double precisionreturns the population standard deviation of the input values
    aggregate function
    Stddev_sampStddev_samp( x Double precision ) : Double precisionreturns the sample standard deviation of the input values
    aggregate function
    TanTan( x Double precision ) : Double precisionreturns the tangent of x, where x is given in radians
    Var_popVar_pop( x Double precision ) : Double precisionreturns the population variance of the input values (square of the population standard deviation)
    + aggregate function
    Var_sampVar_samp( x Double precision ) : Double precisionreturns the sample variance of the input values (square of the sample standard deviation)
    + aggregate function
    +

    SQL functions reporting GEOS / LWGEOM errors and warnings

    FunctionSyntaxSummary
    GEOS_GetLastWarningMsgGEOS_GetLastWarningMsg( void ) : StringGEOSWill return the most recent warning message returned by GEOS (if any).
    + NULL will be returned if there is no pending GEOS warning.
    GEOS_GetLastErrorMsgGEOS_GetLastErrorMsg( void ) : StringGEOSWill return the most recent error message returned by GEOS (if any).
    + NULL will be returned if there is no pending GEOS error.
    GEOS_GetLastAuxErrorMsgGEOS_GetLastAuxErrorMsg( void ) : StringGEOSWill return the most recent error message (auxiliary) returned by GEOS (if any).
    + NULL will be returned if there is no pending GEOS (auxiliary) error.
    GEOS_GetCriticalPointFromMsgGEOS_GetCriticalPointFromMsg( void ) : Point
    + GEOS_GetCriticalPointFromMsg( SRID Integer ) : Point
    GEOSWill (possibly) return a Point Geometry extracted from the latest error / warning + message returned by GEOS.
    + NULL will be returned if there is no pending GEOS message, or if the current GEOS message + doesn't contain a critical Point.
    LWGEOM_GetLastWarningMsgLWGEOM_GetLastWarningMsg( void ) : StringLWGEOMWill return the most recent warning message returned by LWGEOM (if any).
    + NULL will be returned if there is no pending LWGEOM warning.
    LWGEOM_GetLastErrorMsgLWGEOM_GetLastErrorMsg( void ) : StringLWGEOMWill return the most recent error message returned by LWGEOM (if any).
    + NULL will be returned if there is no pending LWGEOM error.
    +

    SQL length/distance unit-conversion functions

    FunctionSyntaxSummary
    KilometerCvtToKm( x Double precision ) : Double precision
    + CvtFromKm( x Double precision ) : Double precision
    meters / kilometers
    DecimeterCvtToDm( x Double precision ) : Double precision
    + CvtFromDm( x Double precision ) : Double precision
    meters / decimeters
    CentimeterCvtToCm( x Double precision ) : Double precision
    + CvtFromCm( x Double precision ) : Double precision
    meters / centimeters
    MillimeterCvtToMm( x Double precision ) : Double precision
    + CvtFromMm( x Double precision ) : Double precision
    meters / millimeters
    International Nautical MileCvtToKmi( x Double precision ) : Double precision
    + CvtFromKmi( x Double precision ) : Double precision
    meters / international nautical miles
    International InchCvtToIn( x Double precision ) : Double precision
    + CvtFromIn( x Double precision ) : Double precision
    meters / international inches
    International FootCvtToFt( x Double precision ) : Double precision
    + CvtFromFt( x Double precision ) : Double precision
    meters / international feet
    International YardCvtToYd( x Double precision ) : Double precision
    + CvtFromYd( x Double precision ) : Double precision
    meters / international yards
    International Statute MileCvtToMi( x Double precision ) : Double precision
    + CvtFromMi( x Double precision ) : Double precision
    meters / international statute miles
    International FathomCvtToFath( x Double precision ) : Double precision
    + CvtFromFath( x Double precision ) : Double precision
    meters / international fathoms
    International ChainCvtToCh( x Double precision ) : Double precision
    + CvtFromCh( x Double precision ) : Double precision
    meters / international chains
    International LinkCvtToLink( x Double precision ) : Double precision
    + CvtFromLink( x Double precision ) : Double precision
    meters / international links
    U.S. InchCvtToUsIn( x Double precision ) : Double precision
    + CvtFromUsIn( x Double precision ) : Double precision
    meters / U.S. inches
    U.S. FootCvtToUsFt( x Double precision ) : Double precision
    + CvtFromUsFt( x Double precision ) : Double precision
    meters / U.S. feet
    U.S. YardCvtToUsYd( x Double precision ) : Double precision
    + CvtFromUsYd( x Double precision ) : Double precision
    meters / U.S. yards
    U.S. Statute MileCvtToUsMi( x Double precision ) : Double precision
    + CvtFromUsMi( x Double precision ) : Double precision
    meters / U.S. statute miles
    U.S. ChainCvtToUsCh( x Double precision ) : Double precision
    + CvtFromUsCh( x Double precision ) : Double precision
    meters / U.S. chains
    Indian FootCvtToIndFt( x Double precision ) : Double precision
    + CvtFromIndFt( x Double precision ) : Double precision
    meters / indian feet
    Indian YardCvtToIndYd( x Double precision ) : Double precision
    + CvtFromIndYd( x Double precision ) : Double precision
    meters / indian yards
    Indian ChainCvtToIndCh( x Double precision ) : Double precision
    + CvtFromIndCh( x Double precision ) : Double precision
    meters / indian chains
    +

    SQL conversion functions from DD/DMS notations (longitude/latitude)

    FunctionSyntaxSummary
    DD to DMSLongLatToDMS( longitude Double precision , latitude Double precision ) : Stringwill return a DMS string (Degrees, Minutes and Seconds) starting from DD (Decimal Degrees) input coordinates
    + NULL will be returned on invalid input.
    DMS to DDLongitudeFromDMS( dms_expression Sting ) : Double precision
    + LatitudeFromDMS( dms_expression Sting ) : Double precision
    will return the DD coordinates from within a DMS expression
    + NULL will be returned on invalid input.
    +

    SQL utility functions for BLOB objects

    FunctionSyntaxSummary
    IsZipBlobIsZipBlob( content BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL or not-BLOB argument.
    + TRUE if this BLOB object corresponds to a valid ZIP-compressed file
    IsPdfBlobIsPdfBlob( content BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL or not-BLOB argument.
    + TRUE if this BLOB object corresponds to a valid PDF document
    IsGifBlobIsGifBlob( image BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL or not-BLOB argument.
    + TRUE if this BLOB object corresponds to a valid GIF image
    IsPngBlobIsPngBlob( image BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL or not-BLOB argument.
    + TRUE if this BLOB object corresponds to a valid PNG image
    IsTiffBlobIsTiffBlob( image BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL or not-BLOB argument.
    + TRUE if this BLOB object corresponds to a valid TIFF image
    IsJpegBlobIsJpegBlob( image BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL or not-BLOB argument.
    + TRUE if this BLOB object corresponds to a valid JPEG image
    IsExifBlobIsExifBlob( image BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL or not-BLOB argument.
    + TRUE if this BLOB object corresponds to a valid EXIF image
    + Please note: any valid EXIF image is a valid JPEG as well
    IsExifGpsBlobIsExifGpsBlob( image BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL or not-BLOB argument.
    + TRUE if this BLOB object corresponds to a valid EXIF-GPS image
    + Please note: any valid EXIF-GPS image is a valid EXIF and JPEG as well
    IsWebpBlobIsWebpBlob( image BLOB ) : IntegerThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL or not-BLOB argument.
    + TRUE if this BLOB object corresponds to a valid WebP image
    GetMimeTypeGetMimeType( payload BLOB ) : StringThe return type is Text, and could be one of: image/gif, image/png, + image/jpeg, image/tiff, image/svg+xml, application/xml, + application/zip, application/pdf.
    + NULL could be returned for an invalid argument or if no valid mime-type is detected.
    BlobFromFileBlobFromFile( filepath String ) : BLOBIf filepath corresponds to some valid pathname, and the corresponding file + can be actually accessed in read mode, then the whole file content will be returned as a + BLOB value.
    + Otherwise NULL will be returned.
    + Please note: SQLite doesn't support BLOB values bigger than SQLITE_MAX_LENGTH (usually, 1 GB).
    + Please note well: this SQL function open the doors to many potential security issues, and thus is always disabled by default.
    + Explicitly setting the environment variable SPATIALITE_SECURITY=relaxed is absolutely required in order to effectively enable this function.
    BlobToFileBlobToFile( payload BLOB , filepath String ) : IntegerIf payload is of the BLOB-type, and if filepath corresponds to some valid pathname + (accessible in write/create mode), then the corresponding file will be created/overwritten so to + contain the payload.
    + The return type is Integer, with a return value of 1 for success, 0 for failure.
    + Please note well: this SQL function open the doors to many potential security issues, and thus is always disabled by default.
    + Explicitly setting the environment variable SPATIALITE_SECURITY=relaxed is absolutely required in order to effectively enable this function.
    CountUnsafeTriggersCountUnsafeTriggers( ) : IntegerThis SQL function checks if the currently connected DB does contain any potentially malicious Trigger; + carefully checking this conditions is a minimal precaution expected to be always verified before eventually activating the SPATIALITE_SECURITY=relaxed mode.
    + The return type is Integer (total count of suspected Triggers); 0 means that the currently connected DB should be considered absolutely safe.
    +

    SQL utility functions [non-standard] for geometric objects

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    GeomFromExifGpsBlobGeomFromExifGpsBlob( image BLOB ) : Geometrybasea POINT Geometry will be returned representing the GPS long/lat contained within EXIF-GPS metadata + for the BLOB image
    + NULL will be returned if for any reason it's not possible to build such a POINT
    ST_PointST_Point( x Double precision , y Double precision ) : Geometrybasesimply an alias-name for MakePoint()
    + Please note: the SRID argument is never supported by ST_Point()
    MakePointMakePoint( x Double precision , y Double precision , + [ , SRID Integer] ) : Geometrybasea Geometry will be returned representing the POINT defined by [x y] coordinates
    MakePointZMakePointZ( x Double precision , y Double precision , z Double precision , + [ , SRID Integer] ) : Geometrybasea Geometry will be returned representing the POINT Z defined by [x y z] coordinates
    MakePointMMakePointM( x Double precision , y Double precision , m Double precision , + [ , SRID Integer] ) : Geometrybasea Geometry will be returned representing the POINT M defined by [x y m] coordinates
    MakePointZMMakePointZM( x Double precision , y Double precision , z Double precision , + m Double precision [ , SRID Integer] ) : Geometrybasea Geometry will be returned representing the POINT ZM defined by [x y z m] coordinates
    MakeLineMakeLine( pt1 PointGeometry , pt2 PointGeometry ) : LinestringGeometrybasea Linestring Geometry will be returned representing the segment connecting pt1 to pt2
    + NULL will be returned if any error is encountered
    MakeLineMakeLine( geom PointGeometry ) : LinestringGeometrybasea Linestring Geometry will be returned connecting all the input Points (accordingly to input sequence)
    + aggregate function
    + NULL will be returned if any error is encountered
    MakeLineMakeLine( geom MultiPointGeometry , direction Boolean ) : LinestringGeometrybasea Linestring Geometry will be returned connecting all the input Points (accordingly to input sequence); direction=FALSE implies reverse order.
    + Please note: similar to the previuous one, but this one is an ordinary (not aggregate) function; a MultiPoint input is always expected.
    + NULL will be returned if any error is encountered
    MakeCircleMakeCircle( cx Double precision , cy Double precision , + radius Double precision [ , SRID Integer [ , + step Double precision ] ] ) : Geometrybasewill return a closed LINESTRING approximating the Circle defined by cx, cy and radius.
    + The optional argument step if specified defines how many points will be interpolated on the circumference; a point will be set every step degrees.
    + The implicit default setting corresponds to a point every 10 degrees.
    MakeEllipseMakeEllipse( cx Double precision , cy Double precision , + x_axis Double precision , y_axis Double precisin [ , SRID Integer [ , + step Double precision ] ] ) : Geometrybasewill return a closed LINESTRING approximating the Ellipse defined by cx, cy and x_axis, y_axis.
    + The optional argument step if specified defines how many points will be interpolated on the ellipse; a point will be set every step degrees.
    + The implicit default setting corresponds to a point every 10 degrees.
    MakeArcMakeArc( cx Double precision , cy Double precision , + radius Double precision , + start Double precision , stop Double precision [ , SRID Integer [ , + step Double precision ] ] ) : Geometrybasewill return a LINESTRING approximating the Circular Arc defined by cx, cy and radius; the arc's extremities will be defined by start, stop angles expressed in degrees.
    + The optional argument step if specified defines how many points will be interpolated on the circumference; a point will be set every step degrees.
    + The implicit default setting corresponds to a point every 10 degrees.
    MakeEllipticArcMakeEllipticArc( cx Double precision , cy Double precision , + x_axis Double precision , y_axis Double precision , + start Double precision , stop Double precision [ , SRID Integer [ , + step Double precision ] ] ) : Geometrybasewill return a LINESTRING approximating the Elliptic Arc defined by cx, cy and x_axis, y_axis; the arc's extremities will be defined by start, stop angles expressed in degrees.
    + The optional argument step if specified defines how many points will be interpolated on the ellipse; a point will be set every step degrees.
    + The implicit default setting corresponds to a point every 10 degrees.
    MakeCircularSectorMakeCircularSector( cx Double precision , cy Double precision , + radius Double precision , + start Double precision , stop Double precision [ , SRID Integer [ , + step Double precision ] ] ) : Geometrybasewill return a POLYGON approximating the Circular Sector defined by cx, cy and radius; the arc's extremities will be defined by start, stop angles expressed in degrees.
    + The optional argument step if specified defines how many points will be interpolated on the circumference; a point will be set every step degrees.
    + The implicit default setting corresponds to a point every 10 degrees.
    MakeEllipticSectorMakeEllipticSector( cx Double precision , cy Double precision , + x_axis Double precision , y_axis Double precision , + start Double precision , stop Double precision [ , SRID Integer [ , + step Double precision ] ] ) : Geometrybasewill return a POLYGON approximating the Elliptic Sector defined by cx, cy and x_axis, y_axis; the arc's extremities will be defined by start, stop angles expressed in degrees.
    + The optional argument step if specified defines how many points will be interpolated on the ellipse; a point will be set every step degrees.
    + The implicit default setting corresponds to a point every 10 degrees.
    MakeCircularStripeMakeCircularStripe( cx Double precision , cy Double precision , + radius_1 Double precision , radius_2 Double precision , + start Double precision , stop Double precision [ , SRID Integer [ , + step Double precision ] ] ) : Geometrybasewill return a POLYGON approximating the Circular Stripe delimited by two arcs sharing the same Centre [cx, cy] + but having different radii [radius_1, radius_2]; the arc's extremities will be defined by start, stop angles expressed in degrees.
    + The optional argument step if specified defines how many points will be interpolated on the circumference; a point will be set every step degrees.
    + The implicit default setting corresponds to a point every 10 degrees.
    SquareGridSquareGrid( geom ArealGeometry , size Double precision [ , edges_only Boolean , [ origing PointGeometry ] ] ) : Geometry
    + ST_SquareGrid( geom ArealGeometry , size Double precision [ , edges_only Boolean , [ origing PointGeometry ] ] ) : Geometry
    GEOSreturn a grid of square cells (having the edge length of size) precisely covering the input Geometry.
    + The returned Geometry will usually be of the MultiPolygon type (a collection of Squares), but will be a MultiLinestring if the optional edges_only argument is set to TRUE
    + If the optional origin argument (expected to be a Point) is not specified then the (0,0) grid origin will be assumed by default.
    + NULL will be returned if any error is encountered.
    TriangularGridTriangularGrid( geom ArealGeometry , size Double precision [ , edges_only Boolean , [ origing PointGeometry ] ] ) : Geometry
    + ST_TriangularGrid( geom ArealGeometry , size Double precision [ , edges_only Boolean , [ origing PointGeometry ] ] ) : Geometry
    GEOSreturn a grid of triangular cells (having the edge length of size) precisely covering the input Geometry.
    + The returned Geometry will usually be of the MultiPolygon type (a collection of Squares), but will be a MultiLinestring if the optional edges_only argument is set to TRUE
    + If the optional origin argument (expected to be a Point) is not specified then the (0,0) grid origin will be assumed by default.
    + NULL will be returned if any error is encountered.
    HexagonalGridHexagonalGrid( geom ArealGeometry , size Double precision [ , edges_only Boolean , [ origing PointGeometry ] ] ) : Geometry
    + ST_HexagonalGrid( geom ArealGeometry , size Double precision [ , edges_only Boolean , [ origing PointGeometry ] ] ) : Geometry
    GEOSreturn a grid of hexagonal cells (having the edge length of size) precisely covering the input Geometry.
    + The returned Geometry will usually be of the MultiPolygon type (a collection of Squares), but will be a MultiLinestring if the optional edges_only argument is set to TRUE
    + If the optional origin argument (expected to be a Point) is not specified then the (0,0) grid origin will be assumed by default.
    + NULL will be returned if any error is encountered.
    BuildMbrBuildMbr( x1 Double precision , y1 Double precision , + x2 Double precision , y2 Double precision [ , SRID Integer] ) : Geometrybase[x1 y1] and [x2 y2] are assumed to be Points identifying a line segment; +then a Geometry will be returned representing the MBR for this line segment
    BuildCircleMbrBuildCircleMbr( x Double precision , y Double precision , + radius Double precision [ , SRID Integer] ) : Geometrybase[x y] is assumed to be the center of a circle of given radius; +then a Geometry will be returned representing the MBR for this circle
    ExtentExtent( geom Geometry ) : Geometrybasereturn a geometric object representing the bounding box that encloses a set of input values
    + aggregate function
    ToGARSToGARS( geom Geometry ) : Stringbasegeom is expected to represent a POINT (longitude and latitude coordinates); + the corresponding GARS area designation code will be returned.
    + NULL will be returned if any error is encountered.
    GARSMbrGARSMbr( code String ) : Geometrybasecode is assumed to represent a valid GARS area designation code; +a Geometry will be returned representing the MBR for the corresponding GARS area.
    + NULL will be returned if any error is encountered.
    MbrMinXMbrMinX( geom Geometry) : Double precision
    + ST_MinX( geom Geometry) : Double precision
    basereturn the x-coordinate for geom MBR's leftmost side as a double precision number.
    + NULL will be returned if geom isn't a valid Geometry.
    MbrMinYMbrMinY( geom Geometry) : Double precision
    + ST_MinY( geom Geometry) : Double precision
    basereturn the y-coordinate for geom MBR's lowermost side as a double precision number.
    + NULL will be returned if geom isn't a valid Geometry.
    MbrMaxXMbrMaxX( geom Geometry) : Double precision
    + ST_MaxX( geom Geometry) : Double precision
    basereturn the x-coordinate for geom MBR's rightmost side as a double precision number.
    + NULL will be returned if geom isn't a valid Geometry.
    MbrMaxYMbrMaxY( geom Geometry) : Double precision
    + ST_MaxY( geom Geometry) : Double precision
    basereturn the y-coordinate for geom MBR's uppermost side as a double precision number.
    + NULL will be returned if geom isn't a valid Geometry.
    MinZST_MinZ( geom Geometry) : Double precisionbasereturn the minimum Z-coordinate value for geom as a double precision number.
    + NULL will be returned if geom isn't a valid Geometry or if geom has no Z dimension.
    MaxZST_MaxZ( geom Geometry) : Double precisionbasereturn the maximum Z-coordinate value for geom as a double precision number.
    + NULL will be returned if geom isn't a valid Geometry or if geom has no Z dimension.
    MinMST_MinM( geom Geometry) : Double precisionbasereturn the minimum M-coordinate value for geom as a double precision number.
    + NULL will be returned if geom isn't a valid Geometry or if geom has no M dimension.
    MaxMST_MaxM( geom Geometry) : Double precisionbasereturn the maximum M-coordinate value for geom as a double precision number.
    + NULL will be returned if geom isn't a valid Geometry or if geom has no M dimension.
    +

    SQL functions for constructing a geometric object given its Well-known Text Representation

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    GeomFromTextGeomFromText( wkt String [ , SRID Integer] ) : Geometry
    + ST_GeomFromText( wkt String [ , SRID Integer] ) : Geometry
    Xbaseconstruct a geometric object given its Well-known text Representation
    ST_WKTToSQLST_WKTToSQL( wkt String ) : GeometrybaseSQL/MM compliant: simply an alias name for ST_GeomFromText
    + Please note: SRID=0 is always assumed.
    PointFromTextPointFromText( wktPoint String [ , SRID Integer] ) : Point
    + ST_PointFromText( wktPoint String [ , SRID Integer] ) : Point
    Xbaseconstruct a Point
    LineFromText
    LineStringFromText
    LineFromText( wktLineString String [ , SRID Integer] ) : Linestring
    + ST_LineFromText( wktLineString String [ , SRID Integer] ) : Linestring
    + LineStringFromText( wktLineString String [ , SRID Integer] ) : Linestring
    + ST_LineStringFromText( wktLineString String [ , SRID Integer] ) : Linestring
    Xbaseconstruct a Linestring
    PolyFromText
    PolygonFromText
    PolyFromText( wktPolygon String [ , SRID Integer] ) : Polygon
    + ST_PolyFromText( wktPolygon String [ , SRID Integer] ) : Polygon
    + PolygonFromText( wktPolygon String [ , SRID Integer] ) : Polygon
    + ST_PolygonFromText( wktPolygon String [ , SRID Integer] ) : Polygon
    Xbaseconstruct a Polygon
    MPointFromText
    MultiPointFromText
    MPointFromText( wktMultiPoint String [ , SRID Integer] ) : MultiPoint
    + ST_MPointFromText( wktMultiPoint String [ , SRID Integer] ) : MultiPoint
    + MultiPointFromText( wktMultiPoint String [ , SRID Integer] ) : MultiPoint
    + ST_MultiPointFromText( wktMultiPoint String [ , SRID Integer] ) : MultiPoint
    Xbaseconstruct a MultiPoint
    MLineFromText
    MultiLineStringFromText
    MLineFromText( wktMultiLineString String [ , SRID Integer] ) : MultiLinestring
    + ST_MLineFromText( wktMultiLineString String [ , SRID Integer] ) : MultiLinestring
    + MultiLineStringFromText( wktMultiLineString String [ , SRID Integer] ) : MultiLinestring
    + ST_MultiLineStringFromText( wktMultiLineString String [ , SRID Integer] ) : MultiLinestring
    Xbaseconstruct a MultiLinestring
    MPolyFromText
    MultiPolygonFromText
    MPolyFromText( wktMultiPolygon String [ , SRID Integer] ) : MultiPolygon
    + ST_MPolyFromText( wktMultiPolygon String [ , SRID Integer] ) : MultiPolygon
    + MultiPolygonFromText( wktMultiPolygon String [ , SRID Integer] ) : MultiPolygon
    + ST_MultiPolygonFromText( wktMultiPolygon String [ , SRID Integer] ) : MultiPolygon
    Xbaseconstruct a MultiPolygon
    GeomCollFromText
    GeometryCollectionFromText
    GeomCollFromText( wktGeometryCollection String [ , SRID Integer] ) : GeometryCollection
    + ST_GeomCollFromText( wktGeometryCollection String [ , SRID Integer] ) : GeometryCollection
    + GeometryCollectionFromText( wktGeometryCollection String [ , SRID Integer] ) : GeometryCollection
    + ST_GeometryCollectionFromText( wktGeometryCollection String [ , SRID Integer] ) : GeometryCollection
    Xbaseconstruct a GeometryCollection
    BdPolyFromTextBdPolyFromText( wktMultilinestring String [ , SRID Integer] ) : Polygon
    + ST_BdPolyFromText( wktMultilinestring String [ , SRID Integer] ) : Polygon
    XGEOSConstruct a Polygon given an arbitrary collection of closed linestrings as a MultiLineString text representation. +
    see also: BuildArea(), Polygonize()
    BdMPolyFromTextBdMPolyFromText( wktMultilinestring String [ , SRID Integer] ) : MultiPolygon
    + ST_BdMPolyFromText( wktMultilinestring String [ , SRID Integer] ) : MultiPolygon
    XGEOSConstruct a MultiPolygon given an arbitrary collection of closed linestrings as a MultiLineString text representation. +
    see also: BuildArea(), Polygonize()
    +

    SQL functions for constructing a geometric object given its Well-known Binary Representation

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    GeomFromWKBGeomFromWKB( wkbGeometry Binary [ , SRID Integer] ) : Geometry
    + ST_GeomFromWKB( wkbGeometry Binary [ , SRID Integer] ) : Geometry
    Xbaseconstruct a geometric object given its Well-known binary Representation
    ST_WKBToSQLST_WKBToSQL( wkbGeometry Binary ) : GeometrybaseSQL/MM compliant: simply an alias name for ST_GeomFromWKB
    + Please note: SRID=0 is always assumed.
    PointFromWKBPointFromWKB( wkbPoint Binary [ , SRID Integer] ) : Point
    + ST_PointFromWKB( wkbPoint Binary [ , SRID Integer] ) : Point
    Xbaseconstruct a Point
    LineFromWKB
    LineStringFromWKB
    LineFromWKB( wkbLineString Binary [ , SRID Integer] ) : Linestring
    + ST_LineFromWKB( wkbLineString Binary [ , SRID Integer] ) : Linestring
    + LineStringFromText( wkbLineString Binary [ , SRID Integer] ) : Linestring
    + ST_LineStringFromText( wkbLineString Binary [ , SRID Integer] ) : Linestring
    Xbaseconstruct a Linestring
    PolyFromWKB
    PolygonFromWKB
    PolyFromWKB( wkbPolygon Binary [ , SRID Integer] ) : Polygon
    + ST_PolyFromWKB( wkbPolygon Binary [ , SRID Integer] ) : Polygon
    + PolygonFromWKB( wkbPolygon Binary [ , SRID Integer] ) : Polygon
    + ST_PolygonFromWKB( wkbPolygon Binary [ , SRID Integer] ) : Polygon
    Xbaseconstruct a Polygon
    MPointFromWKB
    MultiPointFromWKB
    MPointFromWKB( wkbMultiPoint Binary [ , SRID Integer] ) : MultiPoint
    + ST_MPointFromWKB( wkbMultiPoint Binary [ , SRID Integer] ) : MultiPoint
    + MultiPointFromWKB( wkbMultiPoint Binary [ , SRID Integer] ) : MultiPoint + ST_MultiPointFromWKB( wkbMultiPoint Binary [ , SRID Integer] ) : MultiPoint
    Xbaseconstruct a MultiPoint
    MLineFromWKB
    MultiLineStringFromWKB
    MLineFromWKB( wkbMultiLineString Binary [ , SRID Integer] ) : MultiLinestring
    + ST_MLineFromWKB( wkbMultiLineString Binary [ , SRID Integer] ) : MultiLinestring
    + MultiLineStringFromWKB( wkbMultiLineString Binary [ , SRID Integer] ) : MultiLinestring
    + ST_MultiLineStringFromWKB( wkbMultiLineString Binary [ , SRID Integer] ) : MultiLinestring
    Xbaseconstruct a MultiLinestring
    MPolyFromWKB
    MultiPolygonFromWKB
    MPolyFromWKB( wkbMultiPolygon Binary [ , SRID Integer] ) : MultiPolygon
    + ST_MPolyFromWKB( wkbMultiPolygon Binary [ , SRID Integer] ) : MultiPolygon
    + MultiPolygonFromWKB( wkbMultiPolygon Binary [ , SRID Integer] ) : MultiPolygon
    + ST_MultiPolygonFromWKB( wkbMultiPolygon Binary [ , SRID Integer] ) : MultiPolygon
    Xbaseconstruct a MultiPolygon
    GeomCollFromWKB
    GeometryCollectionFromWKB
    GeomCollFromWKB( wkbGeometryCollection Binary [ , SRID Integer] ) : GeometryCollection
    + ST_GeomCollFromWKB( wkbGeometryCollection Binary [ , SRID Integer] ) : GeometryCollection
    + GeometryCollectionFromWKB( wkbGeometryCollection Binary [ , SRID Integer] ) : GeometryCollection
    + ST_GeometryCollectionFromWKB( wkbGeometryCollection Binary [ , SRID Integer] ) : GeometryCollection
    Xbaseconstruct a GeometryCollection
    BdPolyFromWKBBdPolyFromWKB( wkbMultilinestring Binary [ , SRID Integer] ) : Polygon
    + ST_BdPolyFromWKB( wkbMultilinestring Binary [ , SRID Integer] ) : Polygon
    XGEOSConstruct a Polygon given an arbitrary collection of closed linestrings as a MultiLineString binary representation. +
    see also: BuildArea(), Polygonize()
    BdMPolyFromWKBBdMPolyFromWKB( wkbMultilinestring Binary [ , SRID Integer] ) : MultiPolygon
    + ST_BdMPolyFromWKB( wkbMultilinestring Binary [ , SRID Integer] ) : MultiPolygon
    XGEOSConstruct a MultiPolygon given an arbitrary collection of closed linestrings as a MultiLineString binary representation. +
    see also: BuildArea(), Polygonize()
    +

    SQL functions for obtaining the Well-known Text / Well-known Binary Representation of a geometric object

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    AsTextAsText( geom Geometry ) : String
    + ST_AsText( geom Geometry ) : String
    Xbasereturns the Well-known Text representation
    AsWKTAsWKT( geom Geometry [ , precision Integer ] ) : Stringbasereturns the Well-known Text representation
    always return strictly conformant 2D WKT
    AsBinaryAsBinary( geom Geometry ) : Binary
    + ST_AsBinary( geom Geometry ) : Binary
    Xbasereturns the Well-known Binary representation
    +

    SQL functions supporting exotic geometric formats

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    AsSVGAsSVG( geom Geometry [ , relative Integer [ , precision Integer ] ] ) : Stringbasereturns the SVG [Scalable Vector Graphics] representation
    AsKmlAsKml( geom Geometry [ , precision Integer ] ) : String
    + AsKml( name String, description String, geom Geometry [ , precision Integer ] ) : String
    PROJ.4returns the KML [Keyhole Markup Language] representation
    + The first form will simply generate the geometry element: the second form will generate a complete KML entity
    GeomFromKmlGeomFromKml( KmlGeometry String ) : Geometrybaseconstruct a geometric object given its KML Representation
    AsGmlAsGml( geom Geometry [ , precision Integer ] ) : String
    + AsGml( version Integer, geom Geometry [ , precision Integer ] ) : String
    basereturns the GML [Geography Markup Language] representation
    + If version = 3 than GML 3.x is generated, otherwise the output format will be GML 2.x
    GeomFromGMLGeomFromGML( gmlGeometry String ) : Geometrybaseconstruct a geometric object given its GML Representation
    AsGeoJSONAsGeoJSON( geom Geometry [ , precision Integer [ , options Integer ] ] ) : Stringbasereturns the GeoJSON [Geographic JavaScript Object Notation] representation
    + options can assume the following values: +
      +
    • 0 no options [default]
    • +
    • 1 GeoJSON BoundingBox
    • +
    • 2 GeoJSON CRS [short version]
    • +
    • 3 BoundingBox + short CRS
    • +
    • 4 GeoJSON CRS [long version]
    • +
    • 5 BoundingBox + long CRS
    • +
    GeomFromGeoJSONGeomFromGeoJSON( geoJSONGeometry String ) : Geometrybaseconstruct a geometric object given its GeoJSON Representation
    AsEWKBAsEWKB( geom Geometry ) : Stringbasereturns the EWKB [Extended Well Known Binary] representation (PostGIS compatibility)
    GeomFromEWKBGeomFromEWKB( ewkbGeometry String ) : Geometrybaseconstruct a geometric object given its EWKB Representation
    AsEWKTAsEWKT( geom Geometry ) : Stringbasereturns the EWKT [Extended Well Known Text] representation (PostGIS compatibility)
    GeomFromEWKTGeomFromEWKT( ewktGeometry String ) : Geometrybaseconstruct a geometric object given its EWKT Representation
    AsFGFAsFGF( geom Geometry ) : Binarybasereturns the FGF [FDO Geometry Binary Format] representation
    GeomFromFGFGeomFromFGF( fgfGeometry Binary [ , SRID Integer] ) : Geometrybaseconstruct a geometric object given its FGF binary Representation
    ExportDXFExportDXF( out_dir String , filename String , sql_query String , layer_col_name String , + geom_col_name String , label_col_name String , text_height_col_name String , + text_rotation_col_name String , geom_filter Geometry [ , precision Integer ] ) : IntegerWill export a whole DXF file.
      +
    • The output file path is controlled by out_dir and filename.
    • +
    • sql_query is a complete SQL Statement returning the dataset to be exported.
    • +
    • layer_col_name, geom_col_name, label_col_name, text_height_col_name + and text_rotation_col_name must specify the corresponding column names within the resultset + returned by sql_query (label_col_name, text_height_col_name and text_rotation_col_name could be eventually NULL).
    • +
    • geom_filter acts as a spatial filter selecting which entities have to be exported (could be NULL).
    • +
    • the optional argument precision specificies how many decimal digits are required for coordinate values: if not specified the default is 3.
    • +
    + Will return 0 (i.e. FALSE) on failure, any other value (i.e. TRUE) on success.
    + Please note well: this SQL function open the doors to many potential security issues, and thus is always disabled by default.
    + Explicitly setting the environment variable SPATIALITE_SECURITY=relaxed is absolutely required in order to effectively enable this function.
    +

    SQL functions on type Geometry

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    DimensionDimension( geom Geometry ) : Integer
    + ST_Dimension( geom Geometry ) : Integer
    Xbasereturns the dimension of the geometric object, which is less than or equal to the dimension + of the coordinate space
    CoordDimensionCoordDimension( geom Geometry ) : Stringbasereturns the dimension model used by the geometric object as:
    + 'XY', 'XYZ', 'XYM' or 'XYZM'
    NDimsST_NDims( geom Geometry ) : Integerbasereturns the number of dimensions used by the geometric object as:
    + 2, 3 or 4
    Is3DST_Is3D( geom Geometry ) : IntegerbaseChecks if geom has the Z dimension.
    + The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and -1 for UNKNOWN corresponding to a function invocation on invalid arguments.
    IsMeasuredST_IsMeasured( geom Geometry ) : IntegerbaseCheck if geom has the M dimension.
    + The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and -1 for UNKNOWN corresponding to a function invocation on invalid arguments.
    GeometryTypeGeometryType( geom Geometry ) : String
    + ST_GeometryType( geom Geometry ) : String
    Xbasereturns the name of the instantiable subtype of Geometry of which this geometric object is a member, as a string
    SRIDSRID( geom Geometry ) : Integer
    + ST_SRID( geom Geometry ) : Integer
    Xbasereturns the Spatial Reference System ID for this geometric object
    SetSRIDSetSRID( geom Geometry , SRID Integer ) : Integerbasedirectly sets the Spatial Reference System ID for this geometric object [no reprojection is applied]
    + The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL arguments.
    IsEmptyIsEmpty( geom Geometry ) : Integer
    + ST_IsEmpty( geom Geometry ) : Integer
    XbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL arguments.
    + TRUE if this geometric object corresponds to the empty set
    IsSimpleIsSimple( geom Geometry ) : Integer
    + ST_IsSimple( geom Geometry ) : Integer
    XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL arguments.
    + TRUE if this geometric object is simple, as defined in the Geometry Model
    IsValidIsValid( geom Geometry ) : Integer
    + ST_IsValid( geom Geometry ) : Integer
    GEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL arguments.
    + TRUE if this geometric object does not contains any topological error
    IsValidReasonIsValidReason( geom Geometry ) : String
    + ST_IsValidReason( geom Geometry ) : String
    GEOSWill return a TEXT string stating if a Geometry is valid and if not valid, a reason why.
    + NULL will be returned on invalid arguments.
    IsValidDetailIsValidDetail( geom Geometry ) : Geometry
    + ST_IsValidDetail( geom Geometry ) : Geometry
    GEOSWill return a Geometry detail (usually a POINT) causing invalidity.
    + NULL will be returned on invalid arguments, or in the case of a valid Geometry.
    BoundaryBoundary( geom Geometry ) : Geometry
    + ST_Boundary( geom Geometry ) : Geometry
    XGEOSreturns a geometric object that is the combinatorial boundary of g as defined in the Geometry Model
    EnvelopeEnvelope( geom Geometry ) : Geometry
    + ST_Envelope( geom Geometry ) : Geometry
    Xbasereturns the rectangle bounding g as a Polygon. The Polygon is defined by the corner points of the bounding + box [(MINX, MINY),(MAXX, MINY), (MAXX, MAXY), (MINX, MAXY), (MINX, MINY)].
    ExpandST_Expand( geom Geometry , amount Double precision ) : Geometrybasereturns the rectangle bounding g as a Polygon. The bounding rectangle is expanded in all directions by an amount + specified by the second argument.
    NPointsST_NPoints( geom Geometry ) : Integerbasereturn the total number of Points (this including any Linestring/Polygon vertex).
    NRingsST_NRings( geom Geometry ) : Integerbasereturn the total number of Rings (this including both Exterior and Interior Rings).
    ReverseST_Reverse( geom Geometry ) : Geometrybasereturns a new Geometry [if a valid Geometry was supplied], or NULL in any other case.
    + Any Linestring or Ring will be in reverse order (first vertex will be the last one, + and last vertex will be the first one).
    ForceLHRST_ForceLHR( geom Geometry ) : Geometrybasereturns a new Geometry [if a valid Geometry was supplied], or NULL in any other case.
    + Any Polygon Ring will be oriented accordingly to Left Hand Rule (Exterior + Ring will be clockwise oriented, and Interior Rings will be counter-clockwise oriented).
    +

    SQL functions attempting to repair malformed Geometries

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    SanitizeGeometrySanitizeGeometry( geom Geometry ) : geom Geometrybasereturns a (possibly) sanitized Geometry [if a valid Geometry was supplied], or NULL in any other case
    + Please note: current implementations only affects:
      +
    • repeated vertices suppression
    • +
    • Ring's closure enforcement
    • +
    +

    SQL Geometry-compression functions

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    CompressGeometryCompressGeometry( geom Geometry ) : geom Geometrybasereturns a compressed Geometry [if a valid Geometry was supplied], or NULL in any other case
    + Please note: geometry compression only affects LINESTRINGs and POLYGONs, not POINTs
    UncompressGeometryUncompressGeometry( geom Geometry ) : geom Geometrybasereturns an uncompressed Geometry [if a valid Geometry was supplied], or NULL in any other case
    +

    SQL Geometry-type casting functions

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    CastToPointCastToPoint( geom Geometry ) : geom Geometrybasereturns a POINT-type Geometry [if type-conversion is possible], or NULL in any other case
    + can be applied to any Geometry containing only a single POINT and no other elementary sub-geometry
    CastToLinestringCastToLinestring( geom Geometry ) : geom Geometrybasereturns a LINESTRING-type Geometry [if type-conversion is possible], or NULL in any other case
    + can be applied to any Geometry containing only a single LINESTRING and no other elementary sub-geometry
    CastToPolygonCastToPolygon( geom Geometry ) : geom Geometrybasereturns a POLYGON-type Geometry [if type-conversion is possible], or NULL in any other case
    + can be applied to any Geometry containing only a single POLYGON and no other elementary sub-geometry
    CastToMultiPointCastToMultiPoint( geom Geometry ) : geom Geometrybasereturns a MULTIPOINT-type Geometry [if type-conversion is possible], or NULL in any other case
    + can be applied to any Geometry containing one or more POINT(s) and no other elementary sub-geometry
    CastToMultiLinestringCastToMultiLinestring( geom Geometry ) : geom Geometrybasereturns a MULTILINESTRING-type Geometry [if type-conversion is possible], or NULL in any other case
    + can be applied to any Geometry containing one or more LINESTRING(s) and no other elementary sub-geometry
    CastToMultiPolygonCastToMultiPolygon( geom Geometry ) : geom Geometrybasereturns a MULTIPOLYGON-type Geometry [if type-conversion is possible], or NULL in any other case
    + can be applied to any Geometry containing one or more POLYGON(s) and no other elementary sub-geometry
    CastToGeometyCollectionCastToGeometryCollection( geom Geometry ) : geom Geometrybasereturns a GEOMETRYCOLLECTION-type Geometry [if type-conversion is possible], or NULL in any other case
    + can be applied to any valid Geometry
    CastToMultiCastToMulti( geom Geometry ) : geom Geometry
    + ST_Multi( geom Geometry ) : geom Geometry
    basereturns a MULTIPOINT-, MULTILINESTRING- or MULTIPOLYGON-type Geometry [if type-conversion is possible], or NULL in any other case
    +
      +
    • a MULTIPOINT will be returned for a Geometry containing one or more POINT(s) and no other elementary sub-geometry
    • +
    • a MULTILINESTRING will be returned for a Geometry containing one or more LINESTRING(s) and no other elementary sub-geometry
    • +
    • a MULTIPOLYGON will be returned for a Geometry containing one or more POLYGON(s) and no other elementary sub-geometry
    • +
    • a GEOMETRYCOLLECTION will be returned for any other valid Geometry
    • +
    CastToSingleCastToSingle( geom Geometry ) : geom Geometrybasereturns a POINT-, LINESTRING- or POLYGON-type Geometry [if type-conversion is possible], or NULL in any other case
    +
      +
    • a POINT will be returned for a Geometry containing only a single POINT and no other elementary sub-geometry
    • +
    • a LINESTRING will be returned for a Geometry containing only a single LINESTRING and no other elementary sub-geometry
    • +
    • a POLYGON will be returned for a Geometry containing only a single POLYGON and no other elementary sub-geometry
    • +
    +

    SQL Space-dimensions casting functions

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    CastToXYCastToXY( geom Geometry ) : geom Geometrybasereturns a Geometry using the [XY] space dimension
    CastToXYZCastToXYZ( geom Geometry ) : geom Geometrybasereturns a Geometry using the [XYZ] space dimension
    CastToXYMCastToXYM( geom Geometry ) : geom Geometrybasereturns a Geometry using the [XYZM] space dimension
    CastToXYZMCastToXYZM( geom Geometry ) : geom Geometrybasereturns a Geometry using the [XYZM] space dimension
    +

    SQL functions on type Point

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    XX( pt Point ) : Double precision
    + ST_X( pt Point ) : Double precision
    Xbasereturn the x-coordinate of Point p as a double precision number
    YY( pt Point ) : Double precision
    + ST_Y( pt Point ) : Double precision
    Xbasereturn the y-coordinate of Point p as a double precision number
    ZZ( pt Point ) : Double precision
    + ST_Z( pt Point ) : Double precision
    Xbasereturn the z-coordinate of Point p as a double precision number
    + or NULL is no z-coordinate is available
    MM( pt Point ) : Double precision
    + ST_M( pt Point ) : Double precision
    Xbasereturn the m-coordinate of Point p as a double precision number
    + or NULL is no m-coordinate is available
    +

    SQL functions on type Curve [Linestring or Ring]

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    StartPointStartPoint( c Curve ) : Point
    + ST_StartPoint( c Curve ) : Point
    Xbasereturn a Point containing the first Point of c
    EndPointEndPoint( c Curve ) : Point
    + ST_EndPoint( c Curve ) : Point
    Xbasereturn a Point containing the last Point of c
    LengthGLength( c Curve ) : Double precision +
    + OpenGis name for this function is Length(), but it conflicts with an SQLite reserved keyword +

    + ST_Length( c Curve ) : Double precision +
    XGEOSreturn the length of c
    +Starting since v.4.0.0 this function will simply consider Linestrings and MultiLinestrings, ignoring any Polygon or MultiPolygon
    GLength( c Curve , use_ellipsoid Boolean ) : Double precision
    + ST_Length( c Curve , use_ellipsoid Boolean ) : Double precision +
    XGEOSreturn the length of c (measured in meters).
    +If the use_ellipsoid argument is set to TRUE the precise (but slower) length will be computed on the Ellipsoid, otherwise will be computed on the Great Cicle (approximative, but faster).
    +This function only supports Long/Lat coordinates, and will return NULL for any planar CRS
    +Starting since v.4.0.0 this function will simply consider Linestrings and MultiLinestrings, ignoring any Polygon or MultiPolygon
    PerimeterPerimeter( s Surface ) : Double precision + ST_Perimeter( s Surface ) : Double precision + XGEOSreturn the perimeter of s
    +Starting since v.4.0.0 this function will simply consider Polygons and MultiPolygons, ignoring any Linestring or MultiLinestring
    Perimeter( s Surface , use_ellipsoid Boolean ) : Double precision
    + ST_Perimeter( s Surface , use_ellipsoid Boolean ) : Double precision +
    XGEOSreturn the perimeter of s (measured in meters).
    +If the use_ellipsoid argument is set to TRUE the precise (but slower) perimeter will be computed on the Ellipsoid, otherwise will be computed on the Great Cicle (approximative, but faster).
    +This function only supports Long/Lat coordinates, and will return NULL for any planar CRS
    +Starting since v.4.0.0 this function will simply consider Polygons and MultiPolygons, ignoring any Linestring or MultiLinestring
    Geodesic LengthGeodesicLength( c Curve ) : Double precisionbaseIf [and only if] the SRID associated with c is a geographic one [i.e. one using longitude and latitude angles], + then returns the length of c measured on the Ellipsoid [such length is always expressed in meters]
    + Otherwise NULL will be returned
    + Please note: measuring lengths on the Ellipsoid requires complex geodesic calculations, and thus is an + intrinsically slow and time consuming task
    Great Circle LengthGreatCircleLength( c Curve ) : Double precisionbaseIf [and only if] the SRID associated with c is a geographic one [i.e. one using longitude and latitude angles], + then returns the length of c measured on the Great Circle [such length is always expressed in meters]
    + Otherwise NULL will be returned
    + Please note: lengths measured on the Great Circle are less +precise than lengths measured on the Ellipsoid using complex geodesic +calculations; + but they are by far quickest to compute
    IsClosedIsClosed( c Curve ) : Integer
    + ST_IsClosed( c Curve ) : Integer
    XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL arguments;
    + return TRUE if c is closed, i.e., if StartPoint(c) = EndPoint(c)
    IsRingIsRing( c Curve ) : Integer
    + ST_IsRing( c Curve ) : Integer
    XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL arguments.
    + return TRUE if c is a ring, i.e., if c is closed and simple. A simple Curve does not pass through + the same Point more than once.
    PointOnSurfacePointOnSurface( s Surface/Curve ) : Point
    + ST_PointOnSurface( s Surface/Curve ) : Point
    XGEOSreturn a Point guaranteed to lie on the Surface (or Curve)
    SimplifySimplify( c Curve , tolerance Double precision ) : Curve
    + ST_Simplify( c Curve , tolerance Double precision ) : Curve
    + ST_Generalize( c Curve , tolerance Double precision ) : Curve
    GEOSreturn a geometric object representing a simplified version of c applying the Douglas-Peukert +algorithm with given tolerance
    SimplifyPreserveTopologySimplifyPreserveTopology( c Curve , tolerance Double precision ) : Curve
    + ST_SimplifyPreserveTopology( c Curve , tolerance Double precision ) : Curve
    GEOSreturn a geometric object representing a simplified version of c applying the Douglas-Peukert +algorithm with given tolerance and respecting topology
    +

    SQL functions on type LineString

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    NumPointsNumPoints( line LineString ) : Integer
    + ST_NumPoints( line LineString ) : Integer
    Xbasereturn the number of Points in the LineString
    PointNPointN( line LineString , n Integer ) : Point
    + ST_PointN( line LineString , n Integer ) : Point
    Xbasereturn a Point containing Point n of line
    AddPointAddPoint( line LineString , point Point [ , position Integer ] ) : Linestring
    + ST_AddPoint( line LineString , point Point [ , position Integer ] ) : Linestring
    basereturns a new Linestring by adding a new Point into the input Linestring immediately before position (zero-based index).
    + A negative position (default) means appending the new Point to the end of the input Linestring.
    + NULL will be returned if any error is encountered.
    SetPointSetPoint( line LineString , position Integer , point Point ) : Linestring
    + ST_SetPoint( line LineString , position Integer , point Point ) : Linestring
    basereturns a new Linestring by replacing the Point at position (zero-based index).
    + NULL will be returned if any error is encountered.
    RemovePointRemovePoint( line LineString , position Integer ) : Linestring
    + ST_RemovePoint( line LineString , position Integer ) : Linestring
    basereturns a new Linestring by removing the Point at position (zero-based index).
    + NULL will be returned if any error is encountered.
    +

    SQL functions on type Surface [Polygon or Ring]

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    CentroidCentroid( s Surface ) : Point
    + ST_Centroid( s Surface ) : Point
    XGEOSreturn the centroid of s, which may lie outside s
    AreaArea( s Surface ) : Double precision
    + ST_Area( s Surface ) : Double precision
    XGEOSreturn the area of s
    Area( s Surface , use_ellipsoid Boolean ) : Double precision
    + ST_Area( s Surface , use_ellipsoid Boolean ) : Double precision +
    XLWGEOMreturn the area of s (measured in meters).
    +If the use_ellipsoid argument is set to TRUE the precise (but slower) area will be computed on the Ellipsoid, otherwise will be computed on the Sphere (approximative, but faster).
    +This function only supports Long/Lat coordinates, and will return NULL for any planar CRS
    +

    SQL functions on type Polygon

    FunctionSyntaxOGC
    defined
    required moduleSummary
    ExteriorRingExteriorRing( polyg Polygon ) : LineString
    + ST_ExteriorRing( polyg Polygon ) : LineString
    Xbasereturn the exteriorRing of p
    NumInteriorRing
    NumInteriorRings
    NumInteriorRing( polyg Polygon ) : Integer
    + NumInteriorRings( polyg Polygon ) : Integer
    + ST_NumInteriorRing( polyg Polygon ) : Integer
    Xbasereturn the number of interiorRings
    InteriorRingNInteriorRingN( polyg Polygon , n Integer ) : LineString
    + ST_InteriorRingN( polyg Polygon , n Integer ) : LineString
    Xbasereturn the nth interiorRing. The order of Rings is not geometrically significant.
    +

    SQL functions on type GeomCollection

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    NumGeometriesNumGeometries( geom GeomCollection ) : Integer
    + ST_NumGeometries( geom GeomCollection ) : Integer
    Xbasereturn the number of individual Geometries
    GeometryNGeometryN( geom GeomCollection , n Integer ) : Geometry
    + ST_GeometryN( geom GeomCollection , n Integer ) : Geometry
    Xbasereturn the nth geometric object in the collection. + The order of the elements in the collection is not geometrically significant.
    +

    SQL functions that test approximate spatial relationships via MBRs

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    MbrEqualMbrEqual( geom1 Geometry , geom2 Geometry ) : IntegerbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
    + TRUE if g1 and g2 have equal MBRs
    MbrDisjointMbrDisjoint( geom1 Geometry , geom2 Geometry ) : IntegerbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
    + TRUE if the intersection of g1 and g2 MBRs is the empty set
    MbrTouchesMbrTouches( geom1 Geometry , geom2 Geometry ) : IntegerbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
    + TRUE if the only Points in common between g1 and g2 MBRs lie in the union of the boundaries of g1 and g2
    MbrWithinMbrWithin( geom1 Geometry , geom2 Geometry ) : IntegerbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
    + TRUE if g1 MBR is completely contained in g2 MBR
    MbrOverlapsMbrOverlaps( geom1 Geometry , geom2 Geometry ) : IntegerbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
    + TRUE if the intersection of g1 and g2 MBRs results in a value of the same + dimension as g1 and g2 that is different from both g1 and g2
    MbrIntersectsMbrIntersects( geom1 Geometry , geom2 Geometry ) : IntegerbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments;
    + convenience predicate: TRUE if the intersection of g1 and g2 MBRs is not empty
    EnvelopesIntersectsST_EnvIntersects( geom1 Geometry , geom2 Geometry ) : Integer
    + ST_EnvelopesIntersects( geom1 Geometry , geom2 Geometry ) : Integer
    + ST_EnvIntersects( geom1 Geometry , x1 Double precision , y1 Double precision , x2 Double precision , y2 Double precision ) : Integer
    + ST_EnvelopesIntersects( geom1 Geometry , x1 Double precision , y1 Double precision , x2 Double precision , y2 Double precision ) : Integer
    baseThe first form simply is an alias name for MbrIntersects; the other form allows to define the second MBR by two extreme points [x1, y1] and [x2, y2].
    + The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on invalid arguments;
    + convenience predicate: TRUE if the intersection of both MBRs is not empty
    MbrContainsMbrContains( geom1 Geometry , geom2 Geometry ) : IntegerbaseThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments;
    + convenience predicate: TRUE if g2 MBR is completely contained in g1 MBR
    +

    SQL functions that test spatial relationships

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    EqualsEquals( geom1 Geometry , geom2 Geometry ) : Integer
    + ST_Equals( geom1 Geometry , geom2 Geometry ) : Integer
    XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
    + TRUE if g1 and g2 are equal
    DisjointDisjoint( geom1 Geometry , geom2 Geometry ) : Integer
    + ST_Disjoint( geom1 Geometry , geom2 Geometry ) : Integer
    XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
    + TRUE if the intersection of g1 and g2 is the empty set
    TouchesTouches( geom1 Geometry , geom2 Geometry ) : Integer
    + ST_Touches( geom1 Geometry , geom2 Geometry ) : Integer
    XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
    + TRUE if the only Points in common between g1 and g2 lie in the union of the boundaries of g1 and g2
    WithinWithin( geom1 Geometry , geom2 Geometry ) : Integer
    + ST_Within( geom1 Geometry , geom2 Geometry ) : Integer
    XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
    + TRUE if g1 is completely contained in g2
    OverlapsOverlaps( geom1 Geometry , geom2 Geometry ) : Integer
    + ST_Overlaps( geom1 Geometry , geom2 Geometry ) : Integer
    XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
    + TRUE if the intersection of g1 and g2 results in a value of the same + dimension as g1 and g2 that is different from both g1 and g2
    CrossesCrosses( geom1 Geometry , geom2 Geometry ) : Integer
    + ST_Crosses( geom1 Geometry , geom2 Geometry ) : Integer
    XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments.
    + TRUE if the intersection of g1 and g2 results in a value whose dimension is less + than the maximum dimension of g1 and g2 and the intersection value includes Points + interior to both g1 and g2, and the intersection value is not equal to either g1 or g2
    IntersectsIntersects( geom1 Geometry , geom2 Geometry ) : Integer
    + ST_Intersects( geom1 Geometry , geom2 Geometry ) : Integer
    XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments;
    + convenience predicate: TRUE if the intersection of g1 and g2 is not empty
    ContainsContains( geom1 Geometry , geom2 Geometry ) : Integer
    + ST_Contains( geom1 Geometry , geom2 Geometry ) : Integer
    XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments;
    + convenience predicate: TRUE if g2 is completely contained in g1
    CoversCovers( geom1 Geometry , geom2 Geometry ) : Integer
    + ST_Covers( geom1 Geometry , geom2 Geometry ) : Integer
    GEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments;
    + convenience predicate: TRUE if g1 completely covers g2
    CoveredByCoveredBy( geom1 Geometry , geom2 Geometry ) : Integer
    + ST_CoveredBy( geom1 Geometry , geom2 Geometry ) : Integer
    GEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments;
    + convenience predicate: TRUE if g1 is completely covered by g2
    RelateRelate( geom1 Geometry , geom2 Geometry , patternMatrix String ) : Integer
    + ST_Relate( geom1 Geometry , geom2 Geometry , patternMatrix String ) : Integer
    XGEOSThe return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, + and –1 for UNKNOWN corresponding to a function invocation on NULL arguments;
    + returns TRUE if the spatial relationship specified by the patternMatrix holds
    +

    SQL functions for distance relationships

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    DistanceDistance( geom1 Geometry , geom2 Geometry ) : Double precision
    + ST_Distance( geom1 Geometry , geom2 Geometry ) : Double precision
    XGEOSreturn the distance between geom1 and geom2 (always measured in CRS units).
    Distance( geom1 Geometry , geom2 Geometry , use_ellipsoid Boolean ) : Double precision
    + ST_Distance( geom1 Geometry , geom2 Geometry , use_ellipsoid Boolean ) : Double precision
    XGEOSreturn the distance between geom1 and geom2 (measured in meters).
    +If the use_ellipsoid argument is set to TRUE the precise (but slower) distance will be computed on the Ellipsoid, otherwise will be computed on the Great Cicle (approximative, but faster).
    +This function only supports Long/Lat coordinates, and will return NULL for any planar CRS
    PtDistWithinPtDistWithin( geom1 Geometry , geom2 Geometry, range Double precision [, use_spheroid Integer ] ) + : IntegerPROJ.4return TRUE (1) if the distance between geom1 and geom2 is within the given range.
    + Usually distances are expressed in the length unit corresponding to the geoms own SRID: + but if both geoms are simple POINTs and their SRID is 4326 (i.e. WGS84), then distances are + expressed in meters.
    + In this later case the optional arg use_spheroid can be used to select the distance + algorithm to be used: is use_spheroid = 1 the slowest but most accurate geodesic distance + will be evaluated: in any other case the simplest great circle distance will be used instead
    +

    SQL functions that implement spatial operators

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    IntersectionIntersection( geom1 Geometry , geom2 Geometry ) : Geometry
    + ST_Intersection( geom1 Geometry , geom2 Geometry ) : Geometry
    XGEOSreturn a geometric object that is the intersection of geometric objects geom1 and geom2
    DifferenceDifference( geom1 Geometry , geom2 Geometry ) : Geometry
    + ST_Difference( geom1 Geometry , geom2 Geometry ) : Geometry
    XGEOSreturn a geometric object that is the closure of the set difference of geom1 and geom2
    GUnionGUnion( geom1 Geometry , geom2 Geometry ) : Geometry +
    + OpenGis name for this function is Union(), but it conflicts with an SQLite reserved keyword +

    + ST_Union( geom1 Geometry , geom2 Geometry ) : Geometry +
    XGEOSreturn a geometric object that is the set union of geom1 and geom2
    GUnionGUnion( geom Geometry ) : Geometry
    + ST_Union( geom Geometry ) : Geometry
    XGEOSreturn a geometric object that is the set union of input values + aggregate function
    SymDifferenceSymDifference( geom1 Geometry , geom2 Geometry ) : Geometry
    + ST_SymDifference( geom1 Geometry , geom2 Geometry ) : Geometry
    XGEOSreturn a geometric object that is the closure of the set symmetric difference of geom1 and geom2 + (logical XOR of space)
    BufferBuffer( geom Geometry , dist Double precision ) : Geometry
    + ST_Buffer( geom Geometry , dist Double precision ) : Geometry
    XGEOSreturn a geometric object defined by buffering a distance d around geom, + where dist is in the distance units for the Spatial Reference of geom
    ConvexHullConvexHull( geom Geometry ) : Geometry
    + ST_ConvexHull( geom Geometry ) : Geometry
    XGEOSreturn a geometric object that is the convex hull of geom
    +

    SQL functions that implement spatial operators
    [GEOS specific features]

    HausdorffDistanceHausdorffDistance( geom1 Geometry , geom2 Geometry ) : Double precision
    + ST_HausdorffDistance( geom1 Geometry , geom2 Geometry ) : Double precision
    GEOSreturn the Hausdorff distance between geom1 and geom2
    +learn more
    OffestCurveOffsetCurve( geom Curve , radius Double precision , left_or_right Integer ) : Curve
    + ST_OffsetCurve( geom Curve , radius Double precision , left_or_right Integer ) : Curve
    GEOSreturn a geometric object representing the corresponding left- (or right-sided) offset curve
    + NULL is returned whenever is not possible deriving an offset curve from the original geometry
    + [a single not-closed LINESTRING is expected as input]
    SingleSidedBufferSingleSidedBuffer( geom Curve , radius Double precision , left_or_right Integer ) : Curve
    + ST_SingleSidedBuffer( geom Curve , radius Double precision , left_or_right Integer ) : Curve
    GEOSreturn a geometric object representing the corresponding left- (or right-sided) single-sided buffer
    + NULL is returned whenever is not possible deriving a single-sided buffer from the original geometry
    + [a single not-closed LINESTRING is expected as input]
    SharedPathsSharedPaths( geom1 Geometry , geom2 Geomety ) : Geometry
    + ST_SharedPaths( geom1 Geometry , geom2 Geomety ) : Geometry
    GEOSreturn a geometric object (of the MULTILINESTRING type) representing any common lines shared by both geometries
    + NULL is returned is no common line exists
    Line_Interpolate_PointLine_Interpolate_Point( line Curve , fraction Double precision ) : Point
    + ST_Line_Interpolate_Point( line Curve , fraction Double precision ) : Point
    GEOSreturn a point interpolated along a line.
    + Second argument (between 0.0 and 1.0) representing fraction of total length of linestring + the point has to be located.
    + NULL is returned for invalid arguments
    Line_Interpolate_Equidistant_PointsLine_Interpolate_Equidistant_Points( line Curve , distance Double precision) : MultiPoint
    + ST_Line_Interpolate_Equidistant_Points( line Curve , distance Double precision ) : MultiPoint
    GEOSreturn a set of equidistant points interpolated along a line; the returned geometry + always corresponds to a MULTIPOINT supporting the M coordinate (representing the + progressive distance for each interpolated Point).
    + Second argument represents the regular distance between interpolated points.
    + NULL is returned for invalid arguments
    Line_Locate_PointLine_Locate_Point( line Curve , point Point ) : Double precision
    + ST_Line_Locate_Point( line Curve , point Point ) : Double precision
    GEOSreturn a number (between 0.0 and 1.0) representing the location of the closest + point on LineString to the given Point, as a fraction of total 2d line length.
    + NULL is returned for invalid arguments
    Line_SubstringLine_Substring( line Curve , start_fraction Double precision , + end_fraction Double precision ) : Curve
    + ST_Line_Substring( line Curve , start_fraction Double precision , + end_fraction Double precision ) : Curve
    GEOSReturn a Linestring being a substring of the input one starting and ending at the given fractions of total 2d length.
    + Second and third arguments are expected to be in the range between 0.0 and 1.0.
    + NULL is returned for invalid arguments
    ClosestPointClosesetPoint( geom1 Geometry , geom2 Geometry ) : Point
    + ST_ClosesetPoint( geom1 Geometry , geom2 Geometry ) : Point
    GEOSReturns the Point on geom1 that is closest to geom2.
    + NULL is returned for invalid arguments (or if distance is ZERO)
    ShortestLineShortestLine( geom1 Geometry , geom2 Geometry ) : Curve
    + ST_ShortestLine( geom1 Geometry , geom2 Geometry ) : Curve
    GEOSReturns the shortest line between two geometries.
    + NULL is returned for invalid arguments (or if distance is ZERO)
    SnapSnap( geom1 Geometry , geom2 Geometry , tolerance Double precision ) : Geometry
    + ST_Snap( geom1 Geometry , geom2 Geometry , tolerance Double precision ) : Geometry
    GEOSReturns a new Geometry representing a modified geom1, so to "snap" vertices and segments to geom2 vertices; + a snap distance tolerance is used to control where snapping is performed.
    + NULL is returned for invalid arguments
    CollectCollect( geom1 Geometry , geom2 Geometry ) : Geometry
    + ST_Collect( geom1 Geometry , geom2 Geometry ) : Geometry
    GEOSa generic Geometry (possibly a GEOMETRYCOLLECTION) will be returned merging geom1 and geom2
    + NULL will be returned if any error is encountered
    CollectCollect( geom Geometry ) : Geometry
    + ST_Collect( geom Geometry ) : Geometry
    GEOSa generic Geometry (possibly a GEOMETRYCOLLECTION) will be returned merging input Geometries all together
    + aggregate function
    + NULL will be returned if any error is encountered
    LineMergeLineMerge( geom Geometry ) : Geometry
    + ST_LineMerge( geom Geometry ) : Geometry
    GEOSa Geometry (actually corresponding to a LINESTRING or MULTILINESTRING) will be returned.
    + The input Geometry is expected to represent a LINESTRING or a MULTILINESTRING.
    + The input Geometry can be an arbitrary collection of sparse line fragments: this + function will then try to (possibly) reassemble them into one (or more) Linestring(s).
    + NULL will be returned if any error is encountered
    BuildAreaBuildArea( geom Geometry ) : Geometry
    + ST_BuildArea( geom Geometry ) : Geometry
    GEOSa Geometry (actually corresponding to a POLYGON or MULTIPOLYGON) will be returned.
    + The input Geometry is expected to represent a LINESTRING or a MULTILINESTRING.
    + The input Geometry can be an arbitrary collection of sparse Linestrings: this + function will then try to (possibly) reassemble them into one (or more) polygon(s).
    + NULL will be returned if any error is encountered
    PolygonizePolygonize( geom Geometry ) : Geometry
    + ST_Polygonize( geom Geometry ) : Geometry
    GEOSExactly the same as ST_BuildArea, but implemented as an aggregate function.
    + NULL will be returned if any error is encountered
    MakePolygonMakePolygon( geom1 Geometry [ , geom2 Geometry ] ) : Geometry
    + ST_MakePolygon( geom1 Geometry [ , geom2 Geometry ] ) : Geometry
    baseKind of lightweight/simplified ST_BuildArea: the first input Geometry is always expected to represent a closed LINESTRING assumed to identify the output polygon's Exterior Ring.
    + The second input Geometry (if any) is expected to be a LINESTRING or MULTILINESTRING identifying any polygon's Interior Ring (and all them are expected to be correctly closed).
    + Please note well: this function doesn't perform any internal topology check, so it could possibly return an invalid polygon on invalid input.
    + NULL will be returned if any error is encountered
    UnaryUnionUnaryUnion( geom Geometry ) : Geometry
    + ST_UnaryUnion( geom Geometry ) : Geometry
    GEOSExactely the same as ST_Union, but applied to a single Geometry.
    + (set union of elementary Geometries within a MULTI- or GEOMETRYCOLLECTION complex Geometry)
    + NULL will be returned if any error is encountered
    DissolveSegmentsDissolveSegments( geom Geometry ) : Geometry
    + ST_DissolveSegments( geom Geometry ) : Geometry
    basea Geometry (actually corresponding to a LINESTRING, MULTILINESTRING or GEOMETRYCOLLECTION) + will be returned.
    + The input Geometry is arbitrary: any POINT will remain unaffected, but any LINESTRING + or RING will be dissolved into elementary segments.
    + NULL will be returned if any error is encountered
    DissolvePointsDissolvePoints( geom Geometry ) : Geometry
    + ST_DissolvePoints( geom Geometry ) : Geometry
    basea Geometry (actually corresponding to a POINT or MULTIPOINT) + will be returned.
    + The input Geometry is arbitrary: any POINT will remain unaffected, but any LINESTRING + or RING will be dissolved into elementary Points corresponding to each Vertex.
    + NULL will be returned if any error is encountered
    LinesFromRingsLinesFromRings( geom Geometry ) : Geometry
    + ST_LinesFromRings( geom Geometry ) : Geometry
    basea Geometry (actually corresponding to a LINESTRING or MULTILINESTRING) + will be returned.
    + The input Geometry is expected to be a POLYGON or MULTIPOLYGON; + any RING will then be transformed into the corresponding LINESTRING.
    + NULL will be returned if any error is encountered
    LinesCutAtNodesLinesCutAtNodes( geom1 Geometry , geom2 Geometry ) : Geometry
    + ST_LinesCutAtNodes( geom1 Geometry , geom2 Geometry ) : Geometry
    basea Geometry (actually corresponding to a LINESTRING or MULTILINESTRING) + will be returned.
    + The first input Geometry is expected to be a LINESTRING or MULTILINESTRING (Lines); + the second input Geometry is expected to be a POINT or MULTIPOINT (Nodes).
    + any Line will then be possibly split in two halves where some vertex exactly intercepts a Node.
    + NULL will be returned if any error is encountered
    RingsCutAtNodesRingsCutAtNodes( geom Geometry ) : Geometry
    + ST_RingsCutAtNodes( geom Geometry ) : Geometry
    basea Geometry (actually corresponding to a LINESTRING or MULTILINESTRING) + will be returned.
    + The input Geometry is expected to be a POLYGON or MULTIPOLYGON (Rings); + any self-intersection or intersection between Rings is assumed to represent a Node.
    + any Ring will then be possibly split in two halves where some vertex exactly intercepts a Node.
    + NULL will be returned if any error is encountered
    CollectionExtractCollectionExtract( geom Geometry , type Integer ) : Geometry
    + ST_CollectionExtract( geom Geometry , type Integer ) : Geometry
    baseGiven any arbitrary GEOMETRY will return a derived geometry consisting only of the specified type. + Sub-geometries that are not the specified type are ignored.
    +
      +
    • 1 = POINT-type
    • +
    • 2 = LINESTRING-type
    • +
    • 3 = POLYGON-type
    • +
    + NULL will be returned if any error is encountered (or when no item of required type is found)
    + The Type of the returned Geometry could be e.g. POINT or MULTIPOINT depending on actual items count.
    ExtractMultiPointExtractMultiPoint( geom Geometry ) : GeometrybaseGiven any arbitrary GEOMETRY will return a derived MULTIPOINT geometry. + Sub-geometries not being of the POINT type will be ignored.
    + NULL will be returned if any error is encountered (or when no POINT is found).
    ExtractMultiLinestringExtractMultiLinestring( geom Geometry ) : GeometrybaseGiven any arbitrary GEOMETRY will return a derived MULTILINESTRING geometry. + Sub-geometries not being of the LINESTRING type will be ignored.
    + NULL will be returned if any error is encountered (or when no LINESTRING is found).
    ExtractMultiPolygonExtractMultiPolygon( geom Geometry ) : GeometrybaseGiven any arbitrary GEOMETRY will return a derived MULTIPOLYGON geometry. + Sub-geometries not being of the POLYGON type will be ignored.
    + NULL will be returned if any error is encountered (or when no POLYGON is found).
    LocateAlongMeasureST_Locate_Along_Measure( geom Geometry , m_value Double precision ) : Geometry
    + ST_LocateAlong( geom Geometry , m_value Double precision ) : Geometry
    baseReturn a derived geometry collection value with elements that match the specified measure.
    + NULL will be returned if any error is encountered (or when no element corresponding to the given measure is found).
    + Please note: NULL will be returned if geom doesn't contain M-dimension, or if geom contains a Polygon, or if geom is a GeometryCollection.
    LocateBetweenMeasuresST_Locate_Between_Measures( geom Geometry , m_start Double precision , m_end Double precision ) : Geometry
    + ST_LocateBetween( geom Geometry , m_start Double precision , m_end Double precision ) : Geometry
    baseReturn a derived geometry collection value with elements that match the specified range of measures.
    + NULL will be returned if any error is encountered (or when no element corresponding to the given range of measures is found).
    + Please note: NULL will be returned if geom doesn't contain M-dimension, or if geom contains a Polygon, or if geom is a GeometryCollection.
    +

    SQL functions that implement spatial operators
    [GEOS advanced features]

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    DelaunayTriangulationDelaunayTriangulation( geom Geometry [ , edges_only Boolean [ , tolerance Double precision ] ] ) : Geometry
    + ST_DelaunayTriangulation( geom Geometry [ , edges_only Boolean [ , tolerance Double precision ] ] ) : Geometry
    GEOS-advancedreturn a geometric object representing the Delaunay Triangulation corresponding to the input Geometry
    + The input Geometry could have any arbitrary type; eventually all Linestring's / Polygon's vertices will be dissolved into Points, so to implicitly always get a MultiPoint.
    + The returned Geometry will usually be of the MultiPolygon type (a collection of Triangles), but will be a MultiLinestring if the optional edges_only argument is set to TRUE
    + The optional argument tolerance is intended to normalize the input Geometry, suppressing repeated (or too close) Points.
    + NULL is returned on failure.
    VoronojDiagramVoronojDiagram( geom Geometry [ , edges_only Boolean [ , frame_extra_size Double precision [ , tolerance Double precision ] ] ] ) : Geometry
    + ST_VoronojDiagram( geom Geometry [ , edges_only Boolean [ , frame_extra_size Double precision [ , tolerance Double precision ] ] ] ) : Geometry
    GEOS-advancedreturn a geometric object representing the Voronoj Diagram corresponding to the input Geometry
    + The input Geometry could have any arbitrary type; eventually all Linestring's / Polygon's vertices will be dissolved into Points, so to implicitly always get a MultiPoint.
    + The returned Geometry will usually be of the MultiPolygon type, but will be a MultiLinestring if the optional edges_only argument is set to TRUE
    + The optional argument extra_frame_size allows to arbitrarily set the percent extension of the bounding frame: the default value is 5%.
    + The optional argument tolerance is intended to normalize the input Geometry, suppressing repeated (or too close) Points.
    + NULL is returned on failure.
    ConcaveHullConcaveHull( geom Geometry [ , factor Double precision [ , allow_holes Boolean [ , tolerance Double precision ] ] ] ) : Geometry
    + ST_ConcaveHull( geom Geometry [ , factor Double precision [ , allow_holes Boolean [ , tolerance Double precision ] ] ] ) : Geometry
    GEOS-advancedreturn a geometric object representing the ConcaveHull corresponding to the input Geometry
    + The input Geometry could have any arbitrary type; eventually all Linestring's / Polygon's vertices will be dissolved into Points, so to implicitly always get a MultiPoint.
    + The returned Geometry will always be of the Polygon or MultiPolygon type.
    + The default factor applies a filtering; by declaring some lower factor you can get a more aggressive filtering effect.
    + By setting the optional allow_holes argument to TRUE all interior holes will be preserved.
    + The optional argument tolerance is intended to normalize the input Geometry, suppressing repeated (or too close) Points.
    + NULL is returned on failure.
    +

    SQL functions that implement spatial operators
    [LWGEOM features]

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    MakeValidMakeValid( geom Geometry ) : Geometry
    + ST_MakeValid( geom Geometry ) : Geometry
    LWGEOMreturn a geometric object representing the repaired version of the input Geometry.
    + If the input Geometry was already valid, then it will be returned exactly as it was.
    + NULL is returned on failure.
    MakeValidDiscardedMakeValidDiscarded( geom Geometry ) : Geometry
    + ST_MakeValidDiscarded( geom Geometry ) : Geometry
    LWGEOMreturn a geometric object containing all elements that would be eventually discarded by ST_MakeValid() while validating the same input Geometry.
    + NULL is returned on failure, or if no discarded item exists.
    SegmentizeSegmentize( geom Geometry, dist Double precision ) : Geometry
    + ST_Segmentize( geom Geometry , dist Double precision ) : Geometry
    LWGEOMreturn a new Geometry corresponding to the input Geometry; as much Linestring / Ring vertices + as required will be eventually interpolated so to ensure that no segment will be longer than dist.
    + NULL is returned on failure.
    SplitSplit( geom Geometry, blade Geometry ) : Geometry
    + ST_Split( geom Geometry , blade Geometry ) : Geometry
    LWGEOMreturn a new Geometry collecting all items resulting by splitting the input Geometry by the blade.
    + NULL is returned on failure.
    SplitLeftSplitLeft( geom Geometry, blade Geometry ) : Geometry
    + ST_SplitLeft( geom Geometry , blade Geometry ) : Geometry
    LWGEOMreturn a new Geometry collecting all items resulting by splitting the input Geometry by the blade and falling on the left side.
    + All items not affected by the split operation (i.e. not intersecting the blade) will be returned into the left collection.
    + NULL is returned on failure.
    SplitRightSplitRight( geom Geometry, blade Geometry ) : Geometry
    + ST_SplitRight( geom Geometry , blade Geometry ) : Geometry
    LWGEOMreturn a new Geometry collecting all items resulting by splitting the input Geometry by the blade and falling on the right side.
    + NULL is returned on failure (or if the right side is empty).
    AzimuthAzimuth( pt1 Geometry, pt2 Geometry ) : Double precision
    + ST_Azimuth( pt1 Geometry , pt2 Geometry ) : Double precision
    LWGEOMreturn the angle (in radians) from the horizontal of the vector defined by pt1 and pt2.
    + Both pt1 and pt2 are expected to be simple Points.
    + Starting since 4.1.0 if both points supports long/lat coords the returned Azimuth will be precisely computed on the ellipsoid.
    + NULL is returned on failure.
    + On the clock: 12=0; 3=PI/2; 6=PI; 9=3PI/2
    ProjectProject( start_point Geometry, distance Double precision, azimuth Double precision ) : Geometry
    + ST_Project( start_point Geometry, distance Double precision, azimuth Double precision ) : Geometry
    LWGEOMreturn a new Point projected from a start point using a bearing and distance.
    + start_point is expected to be simple long/lat Point.
    + distance is expected to be measured in meters; azimuth (aka bearing or heading) has the same identical meaning as in ST_Azimuth().
    + NULL is returned on failure or on invalid arguments.
    SnapToGridSnapToGrid( geom Geometry , size Double precision ) : Geometry
    + SnapToGrid( geom Geometry , size_x Double precision , size_y Double precision ) : Geometry
    + SnapToGrid( geom Geometry , origin_x Double precision , origin_y Double precision , size_x Double precision , size_y Double precision ) : Geometry
    + SnapToGrid( geom Geometry , origin Geometry , size_x Double precision , size_y Double precision , size_z Double precision , size_m Double precision ) : Geometry
    + ST_SnapToGrid( geom Geometry , size Double precision ) : Geometry
    + ST_SnapToGrid( geom Geometry , size_x Double precision , size_y Double precision ) ) : Geometry
    + ST_SnapToGrid( geom Geometry , origin_x Double precision , origin_y Double precision , size_x Double precision , size_y Double precision ) ) : Geometry
    + ST_SnapToGrid( geom Geometry , origin Geometry , size_x Double precision , size_y Double precision , size_z Double precision , size_m Double precision ) : Geometry
    basereturn a new Geometry corresponding to the input Geometry; all points and vertices will be snapped to the grid defined by its origin and size(s).
    + Removes all consecutive points falling on the same cell.
    + All collapsed geometries will be stripped from the returned Geometry.
    + NULL is returned on failure.
    GeoHashGeoHash( geom Geometry ) : String
    + ST_GeoHash( geom Geometry ) : String
    LWGEOMReturn a GeoHash representation (geohash.org) of the geometry.
    + A GeoHash encodes a point into a text form that is sortable and searchable based on prefixing.
    + ST_GeoHash will not work with geometries that are not in geographic (lon/lat) coordinates
    AsX3DAsX3D( geom Geometry ) : String
    + AsX3D( geom Geometry , precision Integer ) : String
    + AsX3D( geom Geometry , precision Integer , options Integer ) : String
    + AsX3D( geom Geometry , precision Integer , options Integer , refid String ) : String
    + ST_AsX3D( geom Geometry ) : String
    + ST_AsX3D( geom Geometry , precision Integer ) : String
    + ST_AsX3D( geom Geometry , precision Integer , options Integer ) : String
    + ST_AsX3D( geom Geometry , precision Integer , options Integer , refid String ) : String +
    LWGEOMReturns a geometry as an X3D XML formatted node element.
    MaxDistanceMaxDistance( geom1 Geometry , geom2 Geometry ) : Double precision
    + ST_MaxDistance( geom1 Geometry , geom2 Geometry ) : Double precision
    LWGEOMreturn the max distance between geom1 and geom2
    3DDistanceST_3DDistance( geom1 Geometry , geom2 Geometry ) : Double precisionLWGEOMreturn the 3D-distance between geom1 and geom2 (Z coordinates will be considered)
    3DMaxDistanceST_3DMaxDistance( geom1 Geometry , geom2 Geometry ) : Double precisionLWGEOMreturn the max 3D-distance between geom1 and geom2 (Z coordinates will be considered)
    ST_NodeST_Node( geom Geometry ) : GeometryLWGEOMFully nodes a set of linestrings using the least possible number of nodes while preserving all of the input ones.
    + NULL will be returned if the input Geometry isn't a set of linestrings or if any other error occurs.
    SelfIntersectionsSelfIntersections( geom Geometry ) : Geometry
    + ST_SelfIntersections( geom Geometry ) : Geometry
    LWGEOMReturns a MultiPoint Geometry representing any self-intersection found within the input geometry + [expected to be of the Linestring or MultiLinestring type].
    + NULL will be returned for invalid arguments, or when no self-intersections were found.
    +

    SQL functions for coordinate transformations

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    TransformTransform( geom Geometry , newSRID Integer ) : Geometry
    + ST_Transform( geom Geometry , newSRID Integer ) : Geometry
    PROJ.4return a geometric object obtained by reprojecting coordinates into the Reference System identified by newSRID
    SridFromAuthCRSSridFromAuthCRS( auth_name String , auth_SRID Integer ) : Integerbasereturn the internal SRID corresponding to auth_name and auth_SRID
    + -1 will be returned if no such CRS is defined
    ShiftCoords
    ShiftCoordinates
    ShiftCoords( geom Geometry , shiftX Double precision , shiftY Double precision ) : Geometry
    + ShiftCoordinates( geom Geometry , shiftX Double precision , shiftY Double precision ) : Geometry
    basereturn a geometric object obtained by translating coordinates according to shiftX and shiftY values
    ST_TranslateST_Translate( geom Geometry , shiftX Double precision , shiftY Double precision , shiftZ Double precision ) : Geometrybasereturn a geometric object obtained by translating coordinates according to shiftX, shiftY and shiftZ values
    ST_Shift_LongitudeST_Shift_Longitude( geom Geometry ) : Geometrybasereturn a geometric object obtained by translating any negative longitude by 360.
    + Only meaningful for geographic (longitude/latitude) coordinates.
    + Negative longitudes (-180/0) will be shifted by 360, thus allowing to represent longitudes in the 0/360 range and effectively crossing the International Date Line.
    NormalizeLonLatNormalizeLonLat( geom Geometry ) : Geometrybasereturn a geometric object obtained by normalizing any longitude in the range + [-180 / +180] and any latitude in the range [-90 / + 90].
    + Only meaningful for geographic (longitude/latitude) coordinates.
    ScaleCoords
    ScaleCoordinates
    ScaleCoords( geom Geometry , scaleX Double precision [ , scaleY Double precision ] ) : Geometry
    + ScaleCoordinates( geom Geometry , scaleX Double precision [ , scaleY Double precision ] ) : Geometry
    basereturn a geometric object obtained by scaling coordinates according to scaleX and scaleY values
    + if only one scale factor is specified, then an isotropic scaling occurs + [i.e. the same scale factor is applied to both axis]
    + otherwise an anisotropic scaling occurs [i.e. each axis is scaled according to its own scale factor]
    RotateCoords
    RotateCoordinates
    RotateCoords( geom Geometry , angleInDegrees Double precision ) : Geometry
    + RotateCoordinates( geom Geometry , angleInDegrees Double precision ) : Geometry
    basereturn a geometric object obtained by rotating coordinates according to angleInDegrees value.
    +Positive angle = clockwise rotation.
    +Negative angle = counterclockwise rotation.
    ReflectCoords
    ReflectCoordinates
    ReflectCoords( geom Geometry , xAxis Integer , yAxis Integer ) : Geometry
    + ReflectCoordinates( geom Geometry , xAxis Integer , yAxis Integer ) : Geometry
    basereturn a geometric object obtained by reflecting coordinates according to xAxis and yAxis switches
    + i.e. if xAxis is 0 (FALSE), then x-coordinates remains untouched; otherwise x-coordinates will be reflected
    SwapCoords
    SwapCoordinates
    SwapCoords( geom Geometry ) : Geometry
    + SwapCoordinates( geom Geometry ) : Geometry
    basereturn a geometric object obtained by swapping x- and y-coordinates
    +

    SQL functions for Spatial-MetaData and Spatial-Index handling

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    InitSpatialMetaDataInitSpatialMetaData( void ) : Integer
    + InitSpatialMetaData( transaction Integer ) : Integer
    + InitSpatialMetaData( mode String ) : Integer
    + InitSpatialMetaData( transaction Integer , mode String ) : Integer
    baseCreates the geometry_columns and spatial_ref_sys metadata tables
    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE +
      +
    • if the optional argument transaction is set to TRUE the whole operation will be handled as a single Transaction (faster): the default setting is transaction=FALSE (slower, but safer).
    • +
    • if the optional argument mode is not specified then any possible ESPG SRID definition will be inserted into the spatial_ref_sys table.
    • +
    • if the mode arg 'WGS84' (alias 'WGS84_ONLY') is specified, then only WGS84-related EPSG SRIDs will be inserted
    • +
    • if the mode arg 'NONE' (alias 'EMPTY') is specified, no EPSG SRID will be inserted at all
    • +
    InsertEpsgSridInsertEpsgSrid( srid Integer ) : IntegerbaseAttempts to insert into spatial_ref_sys the EPSG definition uniquely identified by srid
    + [the corresponding EPSG SRID definition will be copied from the inlined dataset defined in libspatialite]
    +the return type is Integer, with a return value of 1 for success or 0 for failure
    AddGeometryColumnAddGeometryColumn( table String , column String , srid Integer , +geom_type String [ , dimension String [ , not_null Integer ] ] ) : IntegerXbaseCreates a new geometry column updating the Spatial Metadata tables and creating any +required trigger in order to enforce constraints
    + geom_type has to be one of the followings:
      +
    • 'POINT', 'POINTZ', 'POINTM', 'POINTZM'
    • +
    • 'LINESTRING', 'LINESTRINGZ', 'LINESTRINGM', 'LINESTRINGZM'
    • +
    • 'POLYGON', 'POLYGONZ', 'POLYGONM', 'POLYGONZM'
    • +
    • 'MULTIPOINT', 'MULTIPOINTZ', 'MULTIPOINTM', 'MULTIPOINTZM'
    • +
    • 'MULTILINESTRING', 'MULTILINESTRINGZ', 'MULTILINESTRINGM', 'MULTILINESTRINGZM'
    • +
    • 'MULTIPOLYGON', 'MULTIPOLYGONZ', 'MULTIPOLYGONM', 'MULTIPOLYGONZM'
    • +
    • 'GEOMETRYCOLLECTION', 'GEOMETRYCOLLECTIONZ', 'GEOMETRYCOLLECTIONZM', 'GEOMETRYCOLLECTIONZM'
    • +
    • 'GEOMETRY', 'GEOMETRYZ', 'GEOMETRYM', 'GEOMETRYZM'
    • +
    dimension has to be one of the followings: +
      +
    • 'XY' or 2: 2D points, identified by X and Y coordinates
    • +
    • 'XYM': 2D points, identified by X and Y coordinates. + Each point stores an M-value (measure) as well
    • +
    • 'XYZ' or 3: 3D points, identified by X, Y and Z coordinates
    • +
    • 'XYZM' or 4: 3D points, identified by X, Y and Z coordinates. + Each point stores an M-value (measure) as well
    • +
    + Please note: the dimension argument is optional; anyway, if specified, iy's expected to be consistent with the declared geom_type
    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    +the optional 6th arg [not_null] is a non-standard extension required by the peculiar SQLite arch:
      +
    • if set to 0 [false], then the Geometry column will accept NULL values as well. + This is the default behaviour
    • +
    • if set to any <> 0 value [true], then the Geometry will be defined using a NOT NULL clause
    • +
    RecoverGeometryColumnRecoverGeometryColumn( table String , column String , srid Integer , +geom_type String [ , dimension Integer ] ) : IntegerbaseValidates an existing ordinary column in order to possibly transform it in a real geometry column, +thus updating the Spatial Metadata tables and creating any required trigger in order to enforce constraints
    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    DiscardGeometryColumnDiscardGeometryColumn( table String , column String ) : IntegerbaseRemoves a geometry column from Spatial MetaData tables and drops any related trigger
    +the column itself still continues to exist untouched as an ordinary, unconstrained column
    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    RegisterVirtualGeometryRegisterVirtualGeometry( table String ) : IntegerbaseRegisters a VirtualShape table into Spatial MetaData tables; the VirtualShape table should be previously created by invoking CREATE VIRTUAL TABLE ... USING VirtualShape(...)
    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    DropVirtualGeometryDropVirtualGeometry( table String ) : IntegerbaseRemoves a VirtualShape table from Spatial MetaData tables, dropping the VirtualShape table as well.
    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    CreateSpatialIndexCreateSpatialIndex( table String , column String ) : IntegerbaseBuilds an RTree Spatial Index on a geometry column, creating any required trigger +required in order to enforce full data coherency between the main table and Spatial Index
    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    +-1 will be returned if any physical column named "rowid" (caseless) shadowing the real ROWID is detected.
    CreateMbrCacheCreateMbrCache( table String , column String ) : IntegerbaseBuilds an MbrCache on a geometry column, creating any required trigger +required in order to enforce full data coherency between the main table and the MbrCache
    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    DisableSpatialIndexDisableSpatialIndex( table String , column String ) : IntegerbaseDisables an RTree Spatial Index or MbrCache, removing any related trigger
    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    CheckShadowedRowidCheckShadowedRowid( table String ) : IntegerbaseChecks if some table has a physical column named "rowid" (caseless) shadowing the real ROWID.
    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    +NULL will be returned if the requested table doesn't exist.
    CheckWithoutRowidCheckWithoutRowid( table String ) : IntegerbaseChecks if some table was created by specifying a WITHOUT ROWID clause.
    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    +NULL will be returned if the requested table doesn't exist.
    CheckSpatialIndexCheckSpatialIndex( void ) : Integer
    + CheckSpatialIndex( table String , column String ) : Integer
    baseChecks an RTree Spatial Index for validity and consistency +
      +
    • if no arguments are passed, then any RTree defined into geometry_columns will be checked
    • +
    • otherwise only the RTree corresponding to table and column will be checked
    • +

    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    +NULL will be returned if the requested RTree doesn't exist
    +-1 will be returned if any physical column named "rowid" (caseless) shadowing the real ROWID is detected.
    RecoverSpatialIndexRecoverSpatialIndex( [ no_check : Integer ] ) : Integer
    + RecoverSpatialIndex( table String , column String [ , no_check : Integer ] ) : Integer
    baseRecovers a (possibly broken) RTree Spatial Index +
      +
    • if no arguments are passed, then any RTree defined into geometry_columns will be recovered
    • +
    • otherwise only the RTree corresponding to table and column will be recovered
    • +
    • the optional argument no_check will be interpreted as follows: +
        +
      • if no_check = FALSE (default) the RTree will be checked first: + and only an invalid RTree will be then actually rebuilt
      • +
      • if no_check = TRUE the RTree will be unconditionally rebuilt from scratch
      • +
    • +

    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    +NULL will be returned if the requested RTree doesn't exist
    +-1 will be returned if any physical column named "rowid" (caseless) shadowing the real ROWID is detected.
    InvalidateLayerStatisticsInvalidateLayerStatistics( [ void ) : Integer
    + InvalidateLayerStatistics( table String [ , column String ] ) : Integer
    baseImmediately and unconditionally invalidates the internal Layer Statistics
      +
    • if no arguments are passed, then internal statistics will be invalidated + for any possible Geometry Column defined in the current DB
    • +
    • otherwise statistics will be updated only for Geometry Columns + corresponding to the given table
    • +

    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    + Please note: will effectively work only on behalf DB-files supporting the more recent metatables layout introduced + starting since version 4.x; in any other case will always return an error and no action will happen.
    UpdateLayerStatisticsUpdateLayerStatistics( [ void ) : Integer
    + UpdateLayerStatistics( table String [ , column String ] ) : Integer
    baseUpdates the internal Layer Statistics [Feature Count and Total Extent]
      +
    • if no arguments are passed, then internal statistics will be updated + for any possible Geometry Column defined in the current DB
    • +
    • otherwise statistics will be updated only for Geometry Columns + corresponding to the given table
    • +

    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    GetLayerExtentGetLayerExtent( table String [ , column String [ , mode Boolean] ] ) : GeometrybaseReturn the Envelope corresponding to the Total Extent (bounding box] of some Layer; + if the Table/Layer only contains a single Geometry column passing the column name isn't strictly required.
    + The returned extent will be retrieved from the Statistics tables:
      +
    • if the third argument mode is set to TRUEa PESSIMISTIC + strategy will be applied, i.e. an attempt will be made in order to update the Statistics tables before returning the Envelope.
    • +
    • otherwise the returned Envelope will simply reflect the current values stored into the Statics tables as they are (OPTIMISTIC strategy, adopted by default).
    • +

    + NULL will be returned if any error occurs or if the required table isn't a Layer.
    CreateTopologyTablesCreateTopologyTables( SRID Integer , dims : String ) : Integer
    + CreateTopologyTables( prefix String , SRID Integer , dims : String ) : Integer
    baseCreates a set of Topology tables +
      +
    • SRID argument is mandatory
    • +
    • dims argument must be 'XY' or 'XYZ':
      + 2 or 3 are valid aliases
    • +
    • the optional argument prefix can be used to support more Topology sets on the same DB:
      + if omitted a "topo_" prefix will be assumed by default
    • +

    +the return type is Integer, with a return value of 1 for TRUE (success) or 0 for FALSE (failure)
    CreateRasterCoveragesTableCreateRasterCoveragesTable( void ) : IntegerbaseCreates the raster_coverages table required by RasterLite-2
    +the return type is Integer, with a return value of 1 for TRUE (success) or 0 for FALSE (failure)
    +

    SQL functions supporting the MetaCatalog and related Statistics

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    CreateMetaCatalogTablesCreateMetaCatalogTables( transaction Integer ) : IntegerbaseCreates both splite_metacatalog and splite_metacatalog_statistics tables; + splite_metacatalog will be populated so to describe every table/column currently defined within the DB.
    + if the first argument transaction is set to TRUE the whole operation will be + handled as a single Transaction (faster): the default setting is transaction=FALSE (slower, but safer).
    + the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    UpdateMetaCatalogStatisticsUpdateMetaCatalogStatistics( transaction Integer , table_name String , column_name String ) : Integer
    + UpdateMetaCatalogStatistics( transaction Integer , master_table String , table_name String , column_name String ) : Integer
    baseUpdates the splite_metacatalog_statistics table by computing the statistic summary for the required table/column.
    + if the first argument transaction is set to TRUE the whole operation will be + handled as a single Transaction (faster): the default setting is transaction=FALSE (slower, but safer).
    + the first form (using three arguments) will simply attempt to update the statistic summary for a single + table/column as identified by their names: a matching row is expected to be found in splite_metacatalog.
    + the second form (using four arguments) allows to update the statistic summary for many table/columns in a single pass.
    + in this case master_table should identify an existing table: table_name and column_name should identify two columns belonging to this tables.
    + the statistic summary for every table/columns fetched from the master table will then be updated: + any mismatching table/column will be simply ignored.
    + the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    +

    SQL functions supporting SLD/SE Styled Layers

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    CreateStylingTablesCreateStylingTables() : Integer
    + CreateStylingTables( relaxed Integer ) : Integer
    libxml2Creates a set of tables supporting SLD/SE Styled Layers. +
      +
    • if the optional argument relaxed is specified (any value), then + a relaxed version of the validating Triggers will be installed.
    • +

    +the return type is Integer, with a return value of 1 for TRUE (success) or 0 for FALSE (failure): -1 will be + returned on invalid arguments.
    +Please note: will implicitly invoke CreateRasterCoverages() if the raster_coverages table has not yet been created.
    RegisterExternalGraphicRegisterExternalGraphic( xlink_href String , resource BLOB ) : Integer
    + RegisterExternalGraphic( xlink_href String , resource BLOB , title String , abstract String , file_name String ) : Integer
    libxml2Inserts (or updates) an External Graphic Resource. +
      +
    • xlink_href uniquely identifies each Resource (Primary Key).
    • +
    • resource is expected to be a BLOB containing an image/gif, image/png, image/jpeg or image/svg+xml payload.
    • +
    • the optional arguments title, abstract and file_name could be eventually specified for better human readability.
    • +

    +the return type is Integer, with a return value of 1 for TRUE (success) or 0 for FALSE (failure): -1 will be + returned on invalid arguments.
    RegisterVectorStyledLayerRegisterVectorStyledLayer( f_table_name String , f_geometry_column String , style BLOB ) : Integer
    + RegisterVectorStyledLayer( f_table_name String , f_geometry_column String , style_id Integer , style BLOB ) : Integer
    libxml2Inserts (or updates) a Vector Styled Layer definition. +
      +
    • f_table_name and f_geometry_column must identify an existing Vector Layer.
    • +
    • style is expected to be an XmlBLOB containing a valid SLD/SE Style of the Vector type.
      + If CreatedStylingTables() was invoked without specifying the relaxed option this XmlBLOB is expected to have successfully passed a formal XML Schema Validation.
    • +
    • The same Vector Layer could eventually support more than a single Style; in this case + the optional argument style_id can be explicitly set in order to identify an individual Style.
      + If no style_id argument is specified then a new Styled Layer will be created, and the style_id value will be automatically set so to ensure univocity.
    • +

    +the return type is Integer, with a return value of 1 for TRUE (success) or 0 for FALSE (failure): -1 will be + returned on invalid arguments.
    RegisterRasterStyledLayerRegisterRasterStyledLayer( coverage_name String , style BLOB ) : Integer
    + RegisterRasterStyledLayer( coverage_name String , style_id Integer , style BLOB ) : Integer
    libxml2Inserts (or updates) a Raster Styled Layer definition. +
      +
    • coverage_name must identify an existing Raster Layer.
    • +
    • style is expected to be an XmlBLOB containing a valid SLD/SE Style of the Raster type.
      + If CreatedStylingTables() was invoked without specifying the relaxed option this XmlBLOB is expected to have successfully passed a formal XML Schema Validation.
    • +
    • The same Raster Layer could eventually support more than a single Style; in this case + the optional argument style_id can be explicitly set in order to identify an individual Style.
      + If no style_id argument is specified then a new Styled Layer will be created, and the style_id value will be automatically set so to ensure univocity.
    • +

    +the return type is Integer, with a return value of 1 for TRUE (success) or 0 for FALSE (failure): -1 will be + returned on invalid arguments.
    RegisterStyledGroupRegisterStyledGroup( group_name String , f_table_name String , f_geometry_column String [ , paint_order Integer ] ) : Integer
    + RegisterStyledGroup( group_name String , coverage_name String [ , paint_order Integer ] ) : Integer
    libxml2Inserts (or updates) a Styled Group definition. +
      +
    • group_name must identify a Styled Group: if the Styled Group doesn't yet exists it will be implicitly created.
    • +
    • f_table_name and f_geometry_column must identify an existing Vector Layer.
    • +
    • or alternatively: coverage_name must identify an existing Raster Layer.
    • +
    • the optional paint_order argument could be used to explicitly reference an already defined group item (this implying updating the previous registration)
      + If paint_order is not specified or if a negative value is passed + then the next available order position will be automatically assigned (this always implying inserting a new registration).
      + Please note: the painting order will follow the Painter rule, i.e. a lower paint-order value will always be painted before painting any higher value. +

    +the return type is Integer, with a return value of 1 for TRUE (success) or 0 for FALSE (failure): -1 will be + returned on invalid arguments.
    SetStyledGroupInfosSetStyledGroupInfos( group_name String , title String , abstract String ) : Integerlibxml2Inserts (or updates) the descriptive infos associated to a Styled Group. +
      +
    • group_name must identify a Styled Group: if the Styled Group doesn't yet exists it will be implicitly created.
    • +
    • title and abstract represent the descriptive infos to be set.
    • +

    +the return type is Integer, with a return value of 1 for TRUE (success) or 0 for FALSE (failure): -1 will be + returned on invalid arguments.
    RegisterGroupStyleRegisterGroupStyle( group_name String , style BLOB ) : Integer
    + RegisterGroupStyle( group_name String , style_id Integer , style BLOB ) : Integer
    libxml2Inserts (or updates) a Group Style definition. +
      +
    • group_name must identify an existing Styled Group.
    • +
    • style is expected to be an XmlBLOB containing a valid SLD Style.
      + If CreatedStylingTables() was invoked without specifying the relaxed option this XmlBLOB is expected to have successfully passed a formal XML Schema Validation.
    • +
    • The same Styled Group could eventually support more than a single Style; in this case + the optional argument style_id can be explicitly set in order to identify an individual Style.
      + If no style_id argument is specified then a new Style will be created, and the style_id value will be automatically set so to ensure univocity.
    • +

    +the return type is Integer, with a return value of 1 for TRUE (success) or 0 for FALSE (failure): -1 will be + returned on invalid arguments.
    +

    SQL functions supporting ISO Metadata

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    CreateIsoMetadataTablesCreateIsoMetadataTables() : Integer
    + CreateIsoMetadataTables( relaxed Integer ) : Integer
    libxml2Creates a set of tables supporting ISO Metadata. +
      +
    • if the optional argument relaxed is specified (any value), then + a relaxed version of the validating Triggers will be installed.
    • +

    +the return type is Integer, with a return value of 1 for TRUE (success) or 0 for FALSE (failure): -1 will be + returned on invalid arguments.
    RegisterIsoMetadataRegisterIsoMetadata( scope String , metadata BLOB ) : Integer
    + RegisterIsoMetadata( scope String , metadata BLOB , id Integer ) : Integer
    + RegisterIsoMetadata( scope String , metadata BLOB , fileIdentifier String ) : Integer
    libxml2Inserts (or updates) an ISO Metadata definition. +
      +
    • scope can be one of undefined, fieldSession, collectionSession, + series, dataset, featureType, feature, attributeType, attribute, + tile, model, catalogue, schema, taxonomy, software, + service, collectionHardware, nonGeographicDataset, dimensionGroup.
    • +
    • metadata is expected to be a valid XmlBLOB storing some IsoMetadata payload.
    • +
    • the first form (two arguments only) always performs an INSERT; if one the optional arguments id or fileIdentifier an UPDATE could be eventually performed if a corresponding metadata row is already defined.
    • +

    +the return type is Integer, with a return value of 1 for TRUE (success) or 0 for FALSE (failure): -1 will be + returned on invalid arguments.
    GetIsoMetadataIdGetIsoMetadataId( fileIdentifier String ) : Integerlibxml2Return the unique id corresponding to the ISO Metadata definition identified by fileIdentifier.
    + If no corresponding ISO Metadata definition exists, this function will always return ZERO; -1 will be returned for invalid arguments.
    +

    SQL functions implementing FDO/OGR compatibility

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    CheckSpatialMetaDataCheckSpatialMetaData( void ) : IntegerbaseChecks the Spatial Metadata type, then returning:
      +
    • 0 - if the geometry_columns or spatial_ref_sys table does not exists, or if their actual layout doesn't corresponds to any known implementation
    • +
    • 1 - if both tables exist, and their layout is the one previously used by SpatiaLite legacy (older versions including 3.1.0 any earlier)
    • +
    • 2 - if both tables exist, and their layout is the one used by FDO/OGR
    • +
    • 3 - if both tables exist, and their layout is the one currently used by SpatiaLite (4.0.0 or any subsequent version)
    • +
    AutoFDOStartAutoFDOStart( void ) : IntegerbaseThis function will inspect the Spatial Metadata, then automatically creating/refreshing a VirtualFDO + wrapper for each FDO/OGR geometry table
    +the return type is Integer [how many VirtualFDO tables have been created]
    AutoFDOStopAutoFDOStop( void ) : IntegerbaseThis function will inspect the Spatial Metadata, then automatically destroying any VirtualFDO + wrapper found
    +the return type is Integer [how many VirtualFDO tables have been destroyed]
    InitFDOSpatialMetaDataInitFDOSpatialMetaData( void ) : IntegerbaseCreates the geometry_columns and spatial_ref_sys metadata tables
    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    +Please note: Spatial Metadata created using this function will have the FDO/OGR layout, and not the standard SpatiaLite layout
    AddFDOGeometryColumnAddFDOGeometryColumn( table String , column String , srid Integer , +geom_type Integer , dimension Integer, geometry_format String ) : Integer baseCreates a new geometry column updating the FDO/OGR Spatial Metadata tables
    + geom_type has to be one of the followings:
      +
    • 1 POINT
    • +
    • 2 LINESTRING
    • +
    • 3 POLYGON
    • +
    • 4 MULTIPOINT
    • +
    • 5 MULTILINESTRING
    • +
    • 6 MULTIPOLYGON
    • +
    • 7 GEOMETRYCOLLECTION
    • +
    dimension may be 2, 3 or 4, accordingly to OGR/FDO specs
    + geometry_format has to be one of the followings:
      +
    • 'WBT'
    • +
    • 'WKT'
    • +
    • 'FGF'
    • +

    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    RecoverFDOGeometryColumnRecoverFDOGeometryColumn( table String , column String , srid Integer , +geom_type String , dimension Integer, geometry_format String ) : IntegerbaseValidates an existing ordinary column in order to possibly transform it in a real geometry column, +thus updating the FDO/OGR Spatial Metadata tables
    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    DiscardFDOGeometryColumnDiscardFDOGeometryColumn( table String , column String ) : IntegerbaseRemoves a geometry column from FDO/OGR Spatial MetaData tables
    +the column itself still continues to exist untouched as an ordinary column
    +the return type is Integer, with a return value of 1 for TRUE or 0 for FALSE
    +

    SQL functions implementing OGC GeoPackage compatibility

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    CheckGeoPackageMetaDataCheckGeoPackageMetaData( void ) : IntegerbaseThis function will inspect the DB layout checking if it corresponds to the GPKG own style
    +the return type is Integer, with a return value of 1 for TRUE, 0 for FALSE
    AutoGPKGStartAutoGPKGStart( void ) : IntegerGeoPackageThis function will inspect the DB layout, then automatically creating/refreshing a VirtualGPKG + wrapper for each GPKG geometry table
    +the return type is Integer [how many VirtualGPKG tables have been created]
    AutoGPKGStopAutoGPKGStop( void ) : IntegerGeoPackageThis function will inspect the DB layout, then automatically destroying any VirtualGPKG + wrapper found
    +the return type is Integer [how many VirtualGPKG tables have been destroyed]
    gpkgCreateBaseTablesgpkgCreateBaseTables( void ) : voidGeoPackageThis function will create base tables for an "empty" GeoPackage
    +returns nothing on success, raises exception on error
    gpkgInsertEpsgSRIDgpkgInsertEpsgSRID( srid Integer ) : voidGeoPackageThis function will add a spatial reference system entry for the specified EPSG identifier; + it is an error to try to add the entry if it already exists
    +returns nothing on success, raises exception on error
    gpkgCreateTilesTablegpkgCreateTilesTable( tile_table_name String , srid Integer , min_x Double precision , + min_y Double precision , max_x Double precision , max_y Double precision ) : voidGeoPackageThis function will create a new (empty) Tiles table and the triggers for that table; + It also adds in the matching entries into gpkg_contents and gpkg_tile_matrix_set.
    + This function assumes usual tile conventions, including that the tiles are power-of-two-zoom.
    +returns nothing on success, raises exception on error
    gpkgCreateTilesZoomLevelgpkgCreateTilesZoomLevel( tile_table_name String, zoom_level Integer , extent_width Double precision , + extent_height Double precision ) : voidGeoPackageThis function will add a zoom level for the specified table.
    + This function assumes usual tile conventions, including that the tiles are power-of-two-zoom, + 256x256 pixels, 1 tile at the top level (zoom level 0).
    +returns nothing on success, raises exception on error
    gpkgAddTileTriggersgpkgAddTileTriggers( tile_table_name String ) : voidGeoPackageThis function will add Geopackage tile table triggers for the named table.
    +returns nothing on success, raises exception on error
    gpkgGetNormalZoomgpkgGetNormalZoom( tile_table_name String , inverted_zoom_level Integer ) : IntegerGeoPackageThis function will return the normal integer zoom level for data stored in the specified table.
    + Note that this function can also be used to convert from a normal zoom level + to an inverted zoom level - this conversion is symmetric.
    + Raises a SQL exception if inverted zoom level is outside the range of + tile_matrix_metadata table normal zoom levels defined for the tile_table
    gpkgGetNormalRowgpkgGetNormalRow( tile_table_name String , normal_zoom_level Integer , inverted_row_number Integer ) : IntegerGeoPackageThis function will return the normal integer row number for the specified table, normal zoom level + and inverted row number.
    + Note that this function can also be used to convert from a normal row number + to an inverted row number - this conversion is symmetric.
    + Raises a SQL exception if no zoom level row record in tile_matrix_metadata
    gpkgGetImageTypegpkgGetImageType( image Blob ) : StringGeoPackageThis function will return the image type (as a string) of the blob argument, or "unknown" if + the image type is not one of the PNG, JPEG, TIFF or WebP format types that are supported in GeoPackage. + The result will be one of: +
      +
    • "png" for PNG
    • +
    • "jpeg" for JPEG
    • +
    • "tiff" for TIFF
    • +
    • "x-webp" for WebP
    • +
    + These are the mime type for the image format (without the "image/" prefix).
    + This function raises exception on error (e.g. wrong argument type).
    gpkgAddGeometryColumngpkgAddGeomtryColumn( table_name Sting, geometry_column_name String , geometry_type String , + with_z Integer , with_m Integer , srs_id Integer ) : voidGeoPackageAdds a geometry column to the specified table: +
      +
    • geometry_type is a normal WKT name: +
        +
      • "GEOMETRY"
      • +
      • "POINT"
      • +
      • "LINESTRING"
      • +
      • "POLYGON"
      • +
      • "MULTIPOINT"
      • +
      • "MULTILINESTRING"
      • +
      • "MULTIPOLYGON"
      • +
      • "GEOMETRYCOLLECTION"
      • +
    • +
    • with_z is a flag (0 for no z values, 1 for mandatory z values, 2 for optional z values)
    • +
    • with_m is a flag (0 for no m values, 1 for mandatory m values, 2 for optional m values)
    • +

    + returns nothing on success, raises exception on error
    gpkgAddGeometryTriggersgpkgAddGeometryTriggers( table_name String , geometry_column_name String ) : voidGeoPackageThis function will add Geopackage geometry table triggers for the named table.
    +returns nothing on success, raises exception on error
    gpkgAddSpatialIndexgpkgAddSpatialIndex( table_name String , geometry_column_name String ) : voidGeoPackageThis function will add Geopackage Spatial Index support for the named table.
    +returns nothing on success, raises exception on error
    gpkgMakePointgpkgMakePoint (x Double precision , y Double precision ) : GPKG Blob Geometry
    + gpkgMakePoint (x Double precision , y Double precision , srid Integer ) : GPKG Blob Geometry
    GeoPackageThis function will create a GeoPackage geometry POINT.
    + Raises a SQL exception on error
    gpkgMakePointZgpkgMakePointZ (x Double precision , y Double precision , z Double precision ) : GPKG Blob Geometry
    + gpkgMakePointZ (x Double precision , y Double precision , z Double precision , srid Integer ) : GPKG Blob Geometry
    GeoPackageThis function will create a GeoPackage geometry POINT Z.
    + Raises a SQL exception on error
    gpkgMakePointMgpkgMakePointM (x Double precision , y Double precision , m Double precision ) : GPKG Blob Geometry
    + gpkgMakePointM (x Double precision , y Double precision , m Double precision , srid Integer ) : GPKG Blob Geometry
    GeoPackageThis function will create a GeoPackage geometry POINT M.
    + Raises a SQL exception on error
    gpkgMakePointZMgpkgMakePointZM (x Double precision , y Double precision , z Double precision , m Double precision ) : GPKG Blob Geometry
    + gpkgMakePointZM (x Double precision , y Double precision , z Double precision , m Double precision , srid Integer ) : GPKG Blob Geometry
    GeoPackageThis function will create a GeoPackage geometry POINT ZM.
    + Raises a SQL exception on error
    IsValidGPBIsValidGPB( geom Blob ) : IntegerGeoPackageThis function will inspect a BLOB then checking if it really corresponds to a GPKG own Geometry
    +the return type is Integer, with a return value of 1 for TRUE, 0 for FALSE
    AsGPBAsGPB( geom BLOB encoded geometry ) : GPKG Blob GeometryGeoPackageThis function will convert a SpatiaLite geometry blob into a GeoPackage format geometry blob.
    + Will return NULL if any error is encountered
    GeomFromGPBGeomFromGPB( geom GPKG Blob Geometry ) : BLOB encoded geometryGeoPackageThis function will convert a GeoPackage format geometry blob into a SpatiaLite geometry blob.
    + Will return NULL if any error is encountered
    CastAutomagicCastAutomagic( geom Blob ) : BLOB encoded geometryGeoPackageThis function will indifferently accept on input: +
      +
    • a SpatiaLite own BLOB Geometry
    • +
    • a GPKG own BLOB Geometry
    • +
    + then returning a SpatiaLite own BLOB geometry.
    + Will return NULL if any error is encountered or on invalid / mismatching argument
    GPKG_IsAssignableGPKG_IsAssignable( expected_type_name String , actual_type_name String ) : IntegerGeoPackageThis function will check if expected_type is the same or is a super-type of actual_type; + this function is required by the standard implementation of GPKG Geometry validation Triggers.
    +the return type is Integer, with a return value of 1 for TRUE, 0 for FALSE
    +

    SQL functions for MbrCache-based queries

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    FilterMbrWithinFilterMbrWithin( x1 Double precision , y1 Double precision , + x2 Double precision , y2 Double precision )baseRetrieves from an MbrCache any entity whose MBR falls within + the rectangle identified by extreme points x1 y1 and x2 y2
    FilterMbrContainsFilterMbrContains( x1 Double precision , y1 Double precision , + x2 Double precision , y2 Double precision )baseRetrieves from an MbrCache any entity whose MBR contains + the rectangle identified by extreme points x1 y1 and x2 y2
    FilterMbrIntersectsFilterMbrIntersects( x1 Double precision , y1 Double precision , + x2 Double precision , y2 Double precision )baseRetrieves from an MbrCache any entity whose MBR intersects + the rectangle identified by extreme points x1 y1 and x2 y2
    BuildMbrFilterBuildMbrFilter( x1 Double precision , y1 Double precision , + x2 Double precision , y2 Double precision )baseCreates an MBR identified by extreme points x1 y1 and x2 y2
    + This fuction is used internally by triggers related to MbrCache management, + and is not intended for any other usage
    +

    SQL functions for R*Tree-based queries (Geometry Callbacks)

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    RTreeIntersectsRTreeIntersects( x1 Double precision , y1 Double precision , + x2 Double precision , y2 Double precision )geocallbacksRetrieves from an R*Tree Spatial Index any entity whose MBR intersect + the rectangle identified by extreme points x1 y1 and x2 y2
    RTreeWithinRTreeWithin( x1 Double precision , y1 Double precision , + x2 Double precision , y2 Double precision )geocallbacksDeprecated function
    + Still maintained so to avoid backward compatibility issues, but now simply is an + alias-name for RTreeIntersects
    RTreeContainsRTreeContains( x1 Double precision , y1 Double precision , + x2 Double precision , y2 Double precision )geocallbacksDeprecated function
    + Still maintained so to avoid backward compatibility issues, but now simply is an + alias-name for RTreeIntersects
    RTreeDistWithinRTreeDistWithin( x Double precision , y Double precision , + radius Double precision )geocallbacksRetrieves from an R*Tree Spatial Index any entity whose MBR intersect + the square circumscribed on the given circle (x y center, radius)
    +

    SQL functions supporting XmlBLOB

    FunctionSyntaxOGC
    defined
    required
    module
    Summary
    XB_CreateXB_Create( xmlPayload BLOB ) : XmlBLOB
    + XB_Create( xmlPayload BLOB , compressed Boolean ) : XmlBLOB
    + XB_Create( xmlPayload BLOB , compressed Boolean , + schemaURI Text ) : XmlBLOB
    + XB_Create( xmlPayload BLOB , compressed Boolean , + internalSchemaURI Boolean ) : XmlBLOB
    libxml2Construct an XmlBLOB object starting from an XmlDocument.
      +
    • If compressed is set to TRUE the XmlBlob object will be compressed (default setting).
    • +
    • If schemaURI is specified then the XmlDocument will be validated against the given Schema (default setting is skipping any XML validation).
    • +
    • If internalSchemaURI is set (any value), then the XmlDocument will be validated againt the Schema URI internally defined within the XmlDocument itself (if any).

    + NULL will be returned for not well-formed XmlDocuments, or when XML validation is required but XmlDocument fails to pass validation for any reason.
    XB_GetPayloadXB_GetPayload( xmlObject XmlBLOB [ , indent Integer ] ) : BLOBlibxml2Extracts a generic BLOB from an XmlBLOB object, exactly corresponding to the original XmlDocument and fully preserving the original character encoding.
    + If the optional argument indent is set to some positive value then the returned XmlDocument + will be nicely formatted and properly indented by the required factor; ZERO will cause the whole + XmlDocument to be returned as a single line. (default setting is negative indenting, i.e. not reformatting at all).
    + NULL will be returned for any invalid input (not a valid XmlBLOB object).
    XB_GetDocumentXB_GetDocument( xmlObject XmlBLOB [ , indent Integer ] ) : Stringlibxml2Extracts an XmlDocument from an XmlBLOB object; the returned XmlDocument will always be UTF-8 encoded (TEXT), irrespectively from the original internal encoding declaration.
    + If the optional argument indent is set to some positive value then the returned XmlDocument + will be nicely formatted and properly indented by the required factor; ZERO will cause the whole + XmlDocument to be returned as a single line. (default setting is negative indenting, i.e. not reformatting at all).
    + NULL will be returned for any invalid input (not a valid XmlBLOB object).
    XB_SchemaValidateXB_SchemaValidate( xmlObject XmlBLOB , schemaURI Text [ , compressed Boolean ] ) : XmlBLOB
    + XB_SchemaValidate( xmlObject XmlBLOB , internalSchemaURI Boolean [ , compressed Boolean ] ) : XmlBLOB
    libxml2Construct an XML validated XmlBLOB object starting from an XmlDocument.
      +
    • If compressed is set to TRUE the XmlBlob object will be compressed (default setting).
    • +
    • If schemaURI is specified then the XmlDocument will be validated against the given Schema (default setting is skipping any XML validation).
    • +
    • If internalSchemaURI is set (any value), then the XmlDocument will be validated againt the Schema URI internally defined within the XmlDocument itself (if any).

    + NULL will be returned if the input XmlBLOB fails to pass validation for any reason.
    XB_CompressXB_Compress( xmlObject XmlBLOB ) : XmlBLOBlibxml2A new compressed XmlBLOB object will be returned.
    + If the input XmlBLOB is already compressed this one is a harmless no-op.
    + NULL will be returned for any invalid input (not a valid XmlBLOB object).
    XB_UncompressXB_Uncompress( xmlObject XmlBLOB ) : XmlBLOBlibxml2A new uncompressed XmlBLOB object will be returned.
    + If the input XmlBLOB is already uncompressed this one is a harmless no-op.
    + NULL will be returned for any invalid input (not a valid XmlBLOB object).
    XB_IsValidXB_IsValid( xmlObject XmlBLOB ) : Integerlibxml2The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL arguments.
    XB_IsCompressedXB_IsCompressed( xmlObject XmlBLOB ) : Integerlibxml2The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL arguments.
    XB_IsSchemaValidatedXB_IsSchemaValidated( xmlObject XmlBLOB ) : Integerlibxml2The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL arguments.
    XB_IsIsoMetadataXB_IsIsoMetadata( xmlObject XmlBLOB ) : Integerlibxml2The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL arguments.
    XB_IsSldSeVectorStyleXB_IsSldSeVectorStyle( xmlObject XmlBLOB ) : Integerlibxml2The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL arguments.
    XB_IsSldSeRasterStyleXB_IsSldSeRasterStyle( xmlObject XmlBLOB ) : Integerlibxml2The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL arguments.
    XB_IsSvgXB_IsSvg( xmlObject XmlBLOB ) : Integerlibxml2The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL arguments.
    XB_GetDocumentSizeXB_GetDocumentSize( xmlObject XmlBLOB ) : Integerlibxml2Will return the size in bytes of the corresponding uncompressed XmlDocument.
    + NULL will be returned for any invalid input (not a valid XmlBLOB object).
    XB_GetEncodingXB_GetEncoding( xmlObject XmlBLOB ) : Stringlibxml2Will return the character encoding internally declared by the XmlDocument corresponding to the input XmlBLOB.
    + NULL will be returned for any invalid input (not a valid XmlBLOB object), or when the XmlDocument doesn't explicitly declares any encoding.
    XB_GetSchemaURIXB_GetSchemaURI( xmlObject XmlBLOB ) : Stringlibxml2Will return the Schema URI effectively used to validate an XmlBLOB.
    + NULL will be returned for any invalid input (not a valid XmlBLOB object), or when the XmlBLOB isn't validated.
    XB_GetInternalSchemaURIXB_GetInternalSchemaURI( xmlPayload BLOB ) : Stringlibxml2Will return the Schema URI internally declared by the input XmlDocument + (xsi:noNamespeceSchemaLocation or xsi:schemaLocation).
    + NULL will be returned for any invalid input (not a valid XmlBLOB object), or when the XmlDocument doesn't declares any Schema at all.
    XB_GetFileIdXB_GetFileId( xmlObject XmlBLOB ) : Stringlibxml2Will return the FileIdentifier defined within the XmlBLOB (if any).
    + NULL will be returned for any invalid input (not a valid XmlBLOB object), or when no FileIdentifier is defined.
    Supported only on ISO Metadata XML Documents.
    XB_SetFileIdXB_SetFileId( xmlObject XmlBLOB , fileId String ) : XmlBLOBlibxml2Will return a new XmlBLOB by replacing the FileIdentifier value.
    + The input XmlBLOB is expected to be of the ISO Metadata type and must containt an already defined FileIdentifier.
    + NULL will be returned for any invalid input.
    XB_AddFileIdXB_AddFileId( xmlObject XmlBLOB , fileId String , IdNameSpacePrefix String , IdNameSpaceURI String , CsNameSpacePrefix String , CsNameSpaceURI String ) : XmlBLOBlibxml2Will return a new XmlBLOB by inserting a FileIdentifier value.
    + The input XmlBLOB is expected to be of the ISO Metadata type and must not containt an already defined FileIdentifier.
    + IdNameSpacePrefix and IdNameSpaceURI are expected to represent the namespace (if any) corresponding to the <fileIdentifier> tag (could be eventually NULL).
    + CsNameSpacePrefix and CsNameSpaceURI are expected to represent the namespace (if any) corresponding to the <CharacterString> tag (could be eventually NULL).
    + NULL will be returned for any invalid input.
    XB_GetParentIdXB_GetParentId( xmlObject XmlBLOB ) : Stringlibxml2Will return the ParentIdentifier defined within the XmlBLOB (if any).
    + NULL will be returned for any invalid input (not a valid XmlBLOB object), or when no ParentIdentifier is defined.
    Supported only on ISO Metadata XML Documents.
    XB_SetParentIdXB_SetParentId( xmlObject XmlBLOB , parentId String ) : XmlBLOBlibxml2Will return a new XmlBLOB by replacing the ParentIdentifier value.
    + The input XmlBLOB is expected to be of the ISO Metadata type and must containt an already defined ParentIdentifier.
    + NULL will be returned for any invalid input.
    XB_AddParentIdXB_AddParentId( xmlObject XmlBLOB , parentId String , IdNameSpacePrefix String , IdNameSpaceURI String , CsNameSpacePrefix String , CsNameSpaceURI String ) : XmlBLOBlibxml2Will return a new XmlBLOB by inserting a ParentIdentifier value.
    + The input XmlBLOB is expected to be of the ISO Metadata type and must not containt an already defined ParentIdentifier.
    + IdNameSpacePrefix and IdNameSpaceURI are expected to represent the namespace (if any) corresponding to the <parentIdentifier> tag (could be eventually NULL).
    + CsNameSpacePrefix and CsNameSpaceURI are expected to represent the namespace (if any) corresponding to the <CharacterString> tag (could be eventually NULL).
    + NULL will be returned for any invalid input.
    XB_GetTitleXB_GetTitle( xmlObject XmlBLOB ) : Stringlibxml2Will return the Title defined within the XmlBLOB (if any).
    + NULL will be returned for any invalid input (not a valid XmlBLOB object), or when no Title is defined.
    Supported only on ISO Metadata and SLD/SE Styles.
    XB_GetAbstractXB_GetAbstract( xmlObject XmlBLOB ) : Stringlibxml2Will return the Abstract defined within the XmlBLOB (if any).
    + NULL will be returned for any invalid input (not a valid XmlBLOB object), or when no Abstract is defined.
    Supported only on ISO Metadata and SLD/SE Styles.
    XB_GetGeometryXB_GetGeometry( xmlObject XmlBLOB ) : Geometrylibxml2Will return the Geometry (Bounding Box) defined within the XmlBLOB (if any).
    + NULL will be returned for any invalid input (not a valid XmlBLOB object), or when no Bounding Box is defined.
    Supported only on ISO Metadata XML Documents.
    XB_GetLastParseErrorXB_GetLastParseError( void ) : Stringlibxml2Will return the most recent XML parsing error (if any).
    + NULL will be returned if there is no pending parsing error.
    XB_GetLastValidateErrorXB_GetLastValidateError( void ) : Stringlibxml2Will return the most recent XML validating error (if any).
    + NULL will be returned if there is no pending validating error.
    XB_IsValidXPathExpressionXB_IsValidXPathExpression( expr Text ) : Integerlibxml2The return type is Integer, with a return value of 1 for TRUE, 0 for FALSE, and –1 for UNKNOWN + corresponding to a function invocation on NULL arguments.
    XB_GetLastXPathErrorXB_GetLastXPathError( void ) : Stringlibxml2Will return the most recent XPath error (if any).
    + NULL will be returned if there is no pending XPath error.
    XB_CacheFlushXB_CacheFlush( void ) : Booleanlibxml2Reset the internal XML Schema cache to its initial empty state.
    XB_LoadXMLXB_LoadXML( filepath-or-URL String ) : BLOBlibxml2If filepath-or-URL corresponds to some valid local pathname, and the corresponding file (expected to contain a well-formed XML Document) + can be actually accessed in read mode, then the whole file content will be returned as a + BLOB value.
    + This function is even able to acces a remote XML Document identified by an URL.
    + Otherwise NULL will be returned.
    + Please note: SQLite doesn't support BLOB values bigger than SQLITE_MAX_LENGTH (usually, 1 GB).
    + Please note well: this SQL function open the doors to many potential security issues, and thus is always disabled by default.
    + Explicitly setting the environment variable SPATIALITE_SECURITY=relaxed is absolutely required in order to effectively enable this function.
    + Please see: CountUnsafeTriggers()
    XB_StoreXMLXB_StoreXML( XmlObject XmlBLOB , filepath String ) : Integer
    + XB_StoreXML( XmlObject XmlBLOB , filepath String , indent Integer ) : Integer
    libxml2If XmlObject is of the XmlBLOB-type, and if filepath corresponds to some valid pathname + (accessible in write/create mode), then the corresponding file will be created/overwritten so to + contain the corresponding XML Document (fully preserving the original character encoding).
    + If the optional argument indent is set to some positive value then the returned XmlDocument + will be nicely formatted and properly indented by the required factor; ZERO will cause the whole + XmlDocument to be returned as a single line. (default setting is negative indenting, i.e. not reformatting at all).
    + The return type is Integer, with a return value of 1 for success, 0 for failure and -1 for invalid arguments.
    + Please note well: this SQL function open the doors to many potential security issues, and thus is always disabled by default.
    + Explicitly setting the environment variable SPATIALITE_SECURITY=relaxed is absolutely required in order to effectively enable this function.
    + Please see: CountUnsafeTriggers()
    + back + diff --git a/src/spatialite/spatialite.pc.in b/src/spatialite/spatialite.pc.in new file mode 100644 index 0000000..63d9e36 --- /dev/null +++ b/src/spatialite/spatialite.pc.in @@ -0,0 +1,12 @@ +# Package Information for pkg-config + +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ + +Name: spatialite +Description: Spatial SQL database engine based on SQLite +Version: @VERSION@ +Libs: -L${libdir} -lspatialite -lsqlite3 -lm -lz +Cflags: -I${includedir} diff --git a/src/spatialite/src/Makefile.am b/src/spatialite/src/Makefile.am new file mode 100644 index 0000000..4ebad26 --- /dev/null +++ b/src/spatialite/src/Makefile.am @@ -0,0 +1,81 @@ + +SUBDIRS = headers \ + gaiaaux \ + gaiaexif \ + gaiageo \ + geopackage \ + spatialite \ + shapefiles \ + srsinit \ + connection_cache \ + virtualtext \ + wfs \ + dxf \ + md5 + +AM_CPPFLAGS = @CFLAGS@ +AM_CPPFLAGS += -I$(top_srcdir)/src/headers +AM_CPPFLAGS += -I$(top_srcdir) + +lib_LTLIBRARIES = libspatialite.la mod_spatialite.la + +libspatialite_la_SOURCES = versioninfo/version.c + +libspatialite_la_LIBADD = ./gaiaaux/libgaiaaux.la \ + ./gaiaexif/libgaiaexif.la \ + ./gaiageo/libgaiageo.la \ + ./geopackage/libgeopackage.la \ + ./spatialite/libsplite.la \ + ./shapefiles/libshapefiles.la \ + ./dxf/libdxf.la \ + ./md5/libmd5.la \ + ./srsinit/libsrsinit.la \ + ./connection_cache/libconnection_cache.la \ + ./virtualtext/libvirtualtext.la \ + ./wfs/libwfs.la @LIBXML2_LIBS@ + +if MINGW +libspatialite_la_LDFLAGS = -version-info 4:2:0 -no-undefined +else +if ANDROID +libspatialite_la_LDFLAGS = -version-info 7:0:0 +libspatialite_la_LIBADD += -ldl +else +libspatialite_la_LDFLAGS = -version-info 7:0:0 +libspatialite_la_LIBADD += -lpthread -ldl +endif +endif + +mod_spatialite_la_SOURCES = versioninfo/version.c + +mod_spatialite_la_LIBADD = ./gaiaaux/gaiaaux.la \ + ./gaiaexif/gaiaexif.la \ + ./gaiageo/gaiageo.la \ + ./geopackage/geopackage.la \ + ./spatialite/splite.la \ + ./shapefiles/shapefiles.la \ + ./dxf/dxf.la \ + ./md5/md5.la \ + ./srsinit/srsinit.la \ + ./connection_cache/connection_cache.la \ + ./virtualtext/virtualtext.la \ + ./wfs/wfs.la @LIBXML2_LIBS@ + +mod_spatialite_la_CPPFLAGS = @CFLAGS@ +mod_spatialite_la_CPPFLAGS += -I$(top_srcdir)/src/headers -I. +mod_spatialite_la_CPPFLAGS += -DLOADABLE_EXTENSION +mod_spatialite_la_LIBTOOLFLAGS = --tag=disable-static + +if MINGW +mod_spatialite_la_LDFLAGS = -module -avoid-version -no-undefined +else +if ANDROID +mod_spatialite_la_LDFLAGS = -module -version-info 7:0:0 +mod_spatialite_la_LIBADD += -ldl +else +mod_spatialite_la_LDFLAGS = -module -version-info 7:0:0 +mod_spatialite_la_LIBADD += -lpthread -ldl +endif +endif + +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda diff --git a/src/spatialite/src/Makefile.in b/src/spatialite/src/Makefile.in new file mode 100644 index 0000000..0cf7db7 --- /dev/null +++ b/src/spatialite/src/Makefile.in @@ -0,0 +1,846 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +@ANDROID_TRUE@@MINGW_FALSE@am__append_1 = -ldl +@ANDROID_FALSE@@MINGW_FALSE@am__append_2 = -lpthread -ldl +@ANDROID_TRUE@@MINGW_FALSE@am__append_3 = -ldl +@ANDROID_FALSE@@MINGW_FALSE@am__append_4 = -lpthread -ldl +subdir = src +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(libdir)" +LTLIBRARIES = $(lib_LTLIBRARIES) +am__DEPENDENCIES_1 = +libspatialite_la_DEPENDENCIES = ./gaiaaux/libgaiaaux.la \ + ./gaiaexif/libgaiaexif.la ./gaiageo/libgaiageo.la \ + ./geopackage/libgeopackage.la ./spatialite/libsplite.la \ + ./shapefiles/libshapefiles.la ./dxf/libdxf.la ./md5/libmd5.la \ + ./srsinit/libsrsinit.la \ + ./connection_cache/libconnection_cache.la \ + ./virtualtext/libvirtualtext.la ./wfs/libwfs.la \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am_libspatialite_la_OBJECTS = version.lo +libspatialite_la_OBJECTS = $(am_libspatialite_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libspatialite_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(libspatialite_la_LDFLAGS) $(LDFLAGS) \ + -o $@ +mod_spatialite_la_DEPENDENCIES = ./gaiaaux/gaiaaux.la \ + ./gaiaexif/gaiaexif.la ./gaiageo/gaiageo.la \ + ./geopackage/geopackage.la ./spatialite/splite.la \ + ./shapefiles/shapefiles.la ./dxf/dxf.la ./md5/md5.la \ + ./srsinit/srsinit.la ./connection_cache/connection_cache.la \ + ./virtualtext/virtualtext.la ./wfs/wfs.la \ + $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) +am_mod_spatialite_la_OBJECTS = mod_spatialite_la-version.lo +mod_spatialite_la_OBJECTS = $(am_mod_spatialite_la_OBJECTS) +mod_spatialite_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(mod_spatialite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(mod_spatialite_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libspatialite_la_SOURCES) $(mod_spatialite_la_SOURCES) +DIST_SOURCES = $(libspatialite_la_SOURCES) \ + $(mod_spatialite_la_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = headers \ + gaiaaux \ + gaiaexif \ + gaiageo \ + geopackage \ + spatialite \ + shapefiles \ + srsinit \ + connection_cache \ + virtualtext \ + wfs \ + dxf \ + md5 + +AM_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers -I$(top_srcdir) +lib_LTLIBRARIES = libspatialite.la mod_spatialite.la +libspatialite_la_SOURCES = versioninfo/version.c +libspatialite_la_LIBADD = ./gaiaaux/libgaiaaux.la \ + ./gaiaexif/libgaiaexif.la ./gaiageo/libgaiageo.la \ + ./geopackage/libgeopackage.la ./spatialite/libsplite.la \ + ./shapefiles/libshapefiles.la ./dxf/libdxf.la ./md5/libmd5.la \ + ./srsinit/libsrsinit.la \ + ./connection_cache/libconnection_cache.la \ + ./virtualtext/libvirtualtext.la ./wfs/libwfs.la @LIBXML2_LIBS@ \ + $(am__append_1) $(am__append_2) +@ANDROID_FALSE@@MINGW_FALSE@libspatialite_la_LDFLAGS = -version-info 7:0:0 +@ANDROID_TRUE@@MINGW_FALSE@libspatialite_la_LDFLAGS = -version-info 7:0:0 +@MINGW_TRUE@libspatialite_la_LDFLAGS = -version-info 4:2:0 -no-undefined +mod_spatialite_la_SOURCES = versioninfo/version.c +mod_spatialite_la_LIBADD = ./gaiaaux/gaiaaux.la ./gaiaexif/gaiaexif.la \ + ./gaiageo/gaiageo.la ./geopackage/geopackage.la \ + ./spatialite/splite.la ./shapefiles/shapefiles.la ./dxf/dxf.la \ + ./md5/md5.la ./srsinit/srsinit.la \ + ./connection_cache/connection_cache.la \ + ./virtualtext/virtualtext.la ./wfs/wfs.la @LIBXML2_LIBS@ \ + $(am__append_3) $(am__append_4) +mod_spatialite_la_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers -I. \ + -DLOADABLE_EXTENSION +mod_spatialite_la_LIBTOOLFLAGS = --tag=disable-static +@ANDROID_FALSE@@MINGW_FALSE@mod_spatialite_la_LDFLAGS = -module -version-info 7:0:0 +@ANDROID_TRUE@@MINGW_FALSE@mod_spatialite_la_LDFLAGS = -module -version-info 7:0:0 +@MINGW_TRUE@mod_spatialite_la_LDFLAGS = -module -avoid-version -no-undefined +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +install-libLTLIBRARIES: $(lib_LTLIBRARIES) + @$(NORMAL_INSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + list2=; for p in $$list; do \ + if test -f $$p; then \ + list2="$$list2 $$p"; \ + else :; fi; \ + done; \ + test -z "$$list2" || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(libdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(libdir)" || exit 1; \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \ + } + +uninstall-libLTLIBRARIES: + @$(NORMAL_UNINSTALL) + @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \ + for p in $$list; do \ + $(am__strip_dir) \ + echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \ + $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \ + done + +clean-libLTLIBRARIES: + -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES) + @list='$(lib_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libspatialite.la: $(libspatialite_la_OBJECTS) $(libspatialite_la_DEPENDENCIES) $(EXTRA_libspatialite_la_DEPENDENCIES) + $(AM_V_CCLD)$(libspatialite_la_LINK) -rpath $(libdir) $(libspatialite_la_OBJECTS) $(libspatialite_la_LIBADD) $(LIBS) + +mod_spatialite.la: $(mod_spatialite_la_OBJECTS) $(mod_spatialite_la_DEPENDENCIES) $(EXTRA_mod_spatialite_la_DEPENDENCIES) + $(AM_V_CCLD)$(mod_spatialite_la_LINK) -rpath $(libdir) $(mod_spatialite_la_OBJECTS) $(mod_spatialite_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mod_spatialite_la-version.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/version.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +version.lo: versioninfo/version.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT version.lo -MD -MP -MF $(DEPDIR)/version.Tpo -c -o version.lo `test -f 'versioninfo/version.c' || echo '$(srcdir)/'`versioninfo/version.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/version.Tpo $(DEPDIR)/version.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='versioninfo/version.c' object='version.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o version.lo `test -f 'versioninfo/version.c' || echo '$(srcdir)/'`versioninfo/version.c + +mod_spatialite_la-version.lo: versioninfo/version.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(mod_spatialite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mod_spatialite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT mod_spatialite_la-version.lo -MD -MP -MF $(DEPDIR)/mod_spatialite_la-version.Tpo -c -o mod_spatialite_la-version.lo `test -f 'versioninfo/version.c' || echo '$(srcdir)/'`versioninfo/version.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/mod_spatialite_la-version.Tpo $(DEPDIR)/mod_spatialite_la-version.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='versioninfo/version.c' object='mod_spatialite_la-version.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(mod_spatialite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(mod_spatialite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o mod_spatialite_la-version.lo `test -f 'versioninfo/version.c' || echo '$(srcdir)/'`versioninfo/version.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LTLIBRARIES) +installdirs: installdirs-recursive +installdirs-am: + for dir in "$(DESTDIR)$(libdir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: install-libLTLIBRARIES + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: uninstall-libLTLIBRARIES + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libLTLIBRARIES \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am \ + install-libLTLIBRARIES install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs installdirs-am maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am uninstall-libLTLIBRARIES + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/connection_cache/Makefile.am b/src/spatialite/src/connection_cache/Makefile.am new file mode 100644 index 0000000..3e2c3bc --- /dev/null +++ b/src/spatialite/src/connection_cache/Makefile.am @@ -0,0 +1,22 @@ + +SUBDIRS = generator + +AM_CPPFLAGS = @CFLAGS@ @LIBXML2_CFLAGS@ +AM_CPPFLAGS += -I$(top_srcdir)/src/headers + +noinst_HEADERS = cache_aux_1.h cache_aux_2.h cache_aux_3.h +noinst_LTLIBRARIES = libconnection_cache.la connection_cache.la + +libconnection_cache_la_SOURCES = alloc_cache.c + +connection_cache_la_SOURCES = alloc_cache.c + +connection_cache_la_CPPFLAGS = @CFLAGS@ @LIBXML2_CFLAGS@ +connection_cache_la_CPPFLAGS += -I$(top_srcdir)/src/headers -I. +connection_cache_la_CPPFLAGS += -DLOADABLE_EXTENSION +connection_cache_la_LDFLAGS = -module +connection_cache_la_LIBTOOLFLAGS = --tag=disable-static + +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda + + diff --git a/src/spatialite/src/connection_cache/Makefile.in b/src/spatialite/src/connection_cache/Makefile.in new file mode 100644 index 0000000..b55519c --- /dev/null +++ b/src/spatialite/src/connection_cache/Makefile.in @@ -0,0 +1,733 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/connection_cache +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +connection_cache_la_LIBADD = +am_connection_cache_la_OBJECTS = connection_cache_la-alloc_cache.lo +connection_cache_la_OBJECTS = $(am_connection_cache_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +connection_cache_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(connection_cache_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \ + --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(connection_cache_la_LDFLAGS) $(LDFLAGS) -o $@ +libconnection_cache_la_LIBADD = +am_libconnection_cache_la_OBJECTS = alloc_cache.lo +libconnection_cache_la_OBJECTS = $(am_libconnection_cache_la_OBJECTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(connection_cache_la_SOURCES) \ + $(libconnection_cache_la_SOURCES) +DIST_SOURCES = $(connection_cache_la_SOURCES) \ + $(libconnection_cache_la_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = generator +AM_CPPFLAGS = @CFLAGS@ @LIBXML2_CFLAGS@ -I$(top_srcdir)/src/headers +noinst_HEADERS = cache_aux_1.h cache_aux_2.h cache_aux_3.h +noinst_LTLIBRARIES = libconnection_cache.la connection_cache.la +libconnection_cache_la_SOURCES = alloc_cache.c +connection_cache_la_SOURCES = alloc_cache.c +connection_cache_la_CPPFLAGS = @CFLAGS@ @LIBXML2_CFLAGS@ \ + -I$(top_srcdir)/src/headers -I. -DLOADABLE_EXTENSION +connection_cache_la_LDFLAGS = -module +connection_cache_la_LIBTOOLFLAGS = --tag=disable-static +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/connection_cache/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/connection_cache/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +connection_cache.la: $(connection_cache_la_OBJECTS) $(connection_cache_la_DEPENDENCIES) $(EXTRA_connection_cache_la_DEPENDENCIES) + $(AM_V_CCLD)$(connection_cache_la_LINK) $(connection_cache_la_OBJECTS) $(connection_cache_la_LIBADD) $(LIBS) + +libconnection_cache.la: $(libconnection_cache_la_OBJECTS) $(libconnection_cache_la_DEPENDENCIES) $(EXTRA_libconnection_cache_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libconnection_cache_la_OBJECTS) $(libconnection_cache_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloc_cache.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/connection_cache_la-alloc_cache.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +connection_cache_la-alloc_cache.lo: alloc_cache.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(connection_cache_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(connection_cache_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT connection_cache_la-alloc_cache.lo -MD -MP -MF $(DEPDIR)/connection_cache_la-alloc_cache.Tpo -c -o connection_cache_la-alloc_cache.lo `test -f 'alloc_cache.c' || echo '$(srcdir)/'`alloc_cache.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/connection_cache_la-alloc_cache.Tpo $(DEPDIR)/connection_cache_la-alloc_cache.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='alloc_cache.c' object='connection_cache_la-alloc_cache.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(connection_cache_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(connection_cache_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o connection_cache_la-alloc_cache.lo `test -f 'alloc_cache.c' || echo '$(srcdir)/'`alloc_cache.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/connection_cache/alloc_cache.c b/src/spatialite/src/connection_cache/alloc_cache.c new file mode 100644 index 0000000..4d11912 --- /dev/null +++ b/src/spatialite/src/connection_cache/alloc_cache.c @@ -0,0 +1,756 @@ +/* + alloc_cache.c -- Gaia spatial support for SQLite + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + + +#ifdef _WIN32 +#include +#else +#include +#endif + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#ifdef ENABLE_LIBXML2 /* only if LIBXML2 is supported */ +#include +#endif /* end LIBXML2 conditional */ + +#include +#include + +#include +#include +#include + +#ifndef OMIT_GEOS /* including GEOS */ +#include +#endif + +#ifndef OMIT_PROJ /* including PROJ.4 */ +#include +#endif + +#include "cache_aux_1.h" + +/* GLOBAL variables */ +extern char *gaia_geos_error_msg; +extern char *gaia_geos_warning_msg; + +/* GLOBAL semaphores */ +int gaia_already_initialized = 0; +#ifdef _WIN32 +static CRITICAL_SECTION gaia_cache_semaphore; +static CRITICAL_SECTION gaia_lwgeom_semaphore; +#else +static pthread_mutex_t gaia_cache_semaphore = PTHREAD_MUTEX_INITIALIZER; +static pthread_mutex_t gaia_lwgeom_semaphore = PTHREAD_MUTEX_INITIALIZER; +#endif + +#define GAIA_CONN_RESERVED (char *)1 + +static void +setGeosErrorMsg (int pool_index, const char *msg) +{ +/* setting the latest GEOS error message */ + struct splite_connection *p = &(splite_connection_pool[pool_index]); + int len; + if (p->gaia_geos_error_msg != NULL) + free (p->gaia_geos_error_msg); + p->gaia_geos_error_msg = NULL; + if (msg == NULL) + return; + len = strlen (msg); + p->gaia_geos_error_msg = malloc (len + 1); + strcpy (p->gaia_geos_error_msg, msg); +} + +static void +setGeosWarningMsg (int pool_index, const char *msg) +{ +/* setting the latest GEOS error message */ + struct splite_connection *p = &(splite_connection_pool[pool_index]); + int len; + if (p->gaia_geos_warning_msg != NULL) + free (p->gaia_geos_warning_msg); + p->gaia_geos_warning_msg = NULL; + if (msg == NULL) + return; + len = strlen (msg); + p->gaia_geos_warning_msg = malloc (len + 1); + strcpy (p->gaia_geos_warning_msg, msg); +} + +static void +setGeosAuxErrorMsg (int pool_index, const char *msg) +{ +/* setting the latest GEOS (auxiliary) error message */ + struct splite_connection *p = &(splite_connection_pool[pool_index]); + int len; + if (p->gaia_geosaux_error_msg != NULL) + free (p->gaia_geosaux_error_msg); + p->gaia_geosaux_error_msg = NULL; + if (msg == NULL) + return; + len = strlen (msg); + p->gaia_geosaux_error_msg = malloc (len + 1); + strcpy (p->gaia_geosaux_error_msg, msg); +} + +static void +geos_error_r (int pool_index, const char *fmt, va_list ap) +{ +/* reporting some GEOS error - thread safe */ + char *msg; + msg = sqlite3_vmprintf (fmt, ap); + if (msg) + { + spatialite_e ("GEOS error: %s\n", msg); + setGeosErrorMsg (pool_index, msg); + sqlite3_free (msg); + } + else + setGeosErrorMsg (pool_index, NULL); +} + +static void +geos_warning_r (int pool_index, const char *fmt, va_list ap) +{ +/* reporting some GEOS warning - thread safe */ + char *msg; + msg = sqlite3_vmprintf (fmt, ap); + if (msg) + { + spatialite_e ("GEOS warning: %s\n", msg); + setGeosWarningMsg (pool_index, msg); + sqlite3_free (msg); + } + else + setGeosWarningMsg (pool_index, NULL); +} + +#include "cache_aux_2.h" + +static int +find_free_connection () +{ + int i; + for (i = 0; i < SPATIALITE_MAX_CONNECTIONS; i++) + { + struct splite_connection *p = &(splite_connection_pool[i]); + if (p->conn_ptr == NULL) + { + p->conn_ptr = GAIA_CONN_RESERVED; + return i; + } + } + spatialite_e ("ERROR: Too many connections: max %d\n", + SPATIALITE_MAX_CONNECTIONS); + return -1; +} + +static void +confirm (int i, void *cache) +{ +/* marking the slot as definitely reserved */ + struct splite_connection *p = &(splite_connection_pool[i]); + p->conn_ptr = cache; +} + +static void +invalidate (int i) +{ +/* definitely releasing the slot */ + struct splite_connection *p = &(splite_connection_pool[i]); + if (p->gaia_geos_error_msg != NULL) + free (p->gaia_geos_error_msg); + if (p->gaia_geos_warning_msg != NULL) + free (p->gaia_geos_warning_msg); + if (p->gaia_geosaux_error_msg != NULL) + free (p->gaia_geosaux_error_msg); + p->gaia_geos_error_msg = NULL; + p->gaia_geos_warning_msg = NULL; + p->gaia_geosaux_error_msg = NULL; + p->conn_ptr = NULL; +} + +SPATIALITE_DECLARE void * +spatialite_alloc_connection () +{ +/* allocating and initializing an empty internal cache */ + gaiaOutBufferPtr out; + int i; + struct splite_internal_cache *cache = NULL; + struct splite_geos_cache_item *p; + struct splite_xmlSchema_cache_item *p_xmlSchema; + int pool_index; + +/* attempting to implicitly initialize the library */ + spatialite_initialize (); + +/* locking the semaphore */ + splite_cache_semaphore_lock (); + + pool_index = find_free_connection (); + + if (pool_index < 0) + goto done; + + cache = malloc (sizeof (struct splite_internal_cache)); + if (cache == NULL) + { + invalidate (pool_index); + goto done; + } + cache->magic1 = SPATIALITE_CACHE_MAGIC1; + cache->magic2 = SPATIALITE_CACHE_MAGIC2; + cache->GEOS_handle = NULL; + cache->PROJ_handle = NULL; + cache->pool_index = pool_index; + confirm (pool_index, cache); +/* initializing the XML error buffers */ + out = malloc (sizeof (gaiaOutBuffer)); + gaiaOutBufferInitialize (out); + cache->xmlParsingErrors = out; + out = malloc (sizeof (gaiaOutBuffer)); + gaiaOutBufferInitialize (out); + cache->xmlSchemaValidationErrors = out; + out = malloc (sizeof (gaiaOutBuffer)); + gaiaOutBufferInitialize (out); + cache->xmlXPathErrors = out; +/* initializing the GEOS cache */ + p = &(cache->cacheItem1); + memset (p->gaiaBlob, '\0', 64); + p->gaiaBlobSize = 0; + p->crc32 = 0; + p->geosGeom = NULL; + p->preparedGeosGeom = NULL; + p = &(cache->cacheItem2); + memset (p->gaiaBlob, '\0', 64); + p->gaiaBlobSize = 0; + p->crc32 = 0; + p->geosGeom = NULL; + p->preparedGeosGeom = NULL; + for (i = 0; i < MAX_XMLSCHEMA_CACHE; i++) + { + /* initializing the XmlSchema cache */ + p_xmlSchema = &(cache->xmlSchemaCache[i]); + p_xmlSchema->timestamp = 0; + p_xmlSchema->schemaURI = NULL; + p_xmlSchema->schemaDoc = NULL; + p_xmlSchema->parserCtxt = NULL; + p_xmlSchema->schema = NULL; + } + +#include "cache_aux_3.h" + +/* initializing GEOS and PROJ.4 handles */ + +#ifndef OMIT_GEOS /* initializing GEOS */ + cache->GEOS_handle = initGEOS_r (cache->geos_warning, cache->geos_error); +#endif /* end GEOS */ + +#ifndef OMIT_PROJ /* initializing the PROJ.4 context */ + cache->PROJ_handle = pj_ctx_alloc (); +#endif /* end PROJ.4 */ + + done: +/* unlocking the semaphore */ + splite_cache_semaphore_unlock (); + return cache; +} + +SPATIALITE_PRIVATE void +free_internal_cache (struct splite_internal_cache *cache) +{ +/* freeing an internal cache */ + struct splite_geos_cache_item *p; +#ifndef OMIT_GEOS + GEOSContextHandle_t handle = NULL; +#endif + +#ifdef ENABLE_LIBXML2 + int i; + struct splite_xmlSchema_cache_item *p_xmlSchema; +#endif + + if (cache == NULL) + return; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return; + +#ifndef OMIT_GEOS + handle = cache->GEOS_handle; + if (handle != NULL) + finishGEOS_r (handle); + cache->GEOS_handle = NULL; + gaiaResetGeosMsg_r (cache); +#endif + +#ifndef OMIT_PROJ + if (cache->PROJ_handle != NULL) + pj_ctx_free (cache->PROJ_handle); + cache->PROJ_handle = NULL; +#endif + +/* freeing the XML error buffers */ + gaiaOutBufferReset (cache->xmlParsingErrors); + gaiaOutBufferReset (cache->xmlSchemaValidationErrors); + gaiaOutBufferReset (cache->xmlXPathErrors); + free (cache->xmlParsingErrors); + free (cache->xmlSchemaValidationErrors); + free (cache->xmlXPathErrors); + +/* freeing the GEOS cache */ + p = &(cache->cacheItem1); + splite_free_geos_cache_item_r (cache, p); + p = &(cache->cacheItem2); + splite_free_geos_cache_item_r (cache, p); +#ifdef ENABLE_LIBXML2 + for (i = 0; i < MAX_XMLSCHEMA_CACHE; i++) + { + /* freeing the XmlSchema cache */ + p_xmlSchema = &(cache->xmlSchemaCache[i]); + splite_free_xml_schema_cache_item (p_xmlSchema); + } +#endif + +/* releasing the connection pool object */ + invalidate (cache->pool_index); + +/* freeing the cache itself */ + free (cache); +} + +GAIAGEO_DECLARE void +gaiaResetGeosMsg_r (const void *p_cache) +{ +/* resets the GEOS error and warning messages */ + struct splite_connection *p = NULL; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + if (cache != NULL) + { + if (cache->magic1 == SPATIALITE_CACHE_MAGIC1 + || cache->magic2 == SPATIALITE_CACHE_MAGIC2) + p = &(splite_connection_pool[cache->pool_index]); + } + if (p == NULL) + return; + if (p->gaia_geos_error_msg != NULL) + free (p->gaia_geos_error_msg); + if (p->gaia_geos_warning_msg != NULL) + free (p->gaia_geos_warning_msg); + if (p->gaia_geosaux_error_msg != NULL) + free (p->gaia_geosaux_error_msg); + p->gaia_geos_error_msg = NULL; + p->gaia_geos_warning_msg = NULL; + p->gaia_geosaux_error_msg = NULL; +} + +GAIAGEO_DECLARE const char * +gaiaGetGeosErrorMsg_r (const void *p_cache) +{ +/* return the latest GEOS error message */ + struct splite_connection *p = NULL; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + if (cache != NULL) + { + if (cache->magic1 == SPATIALITE_CACHE_MAGIC1 + || cache->magic2 == SPATIALITE_CACHE_MAGIC2) + p = &(splite_connection_pool[cache->pool_index]); + } + if (p == NULL) + return NULL; + return p->gaia_geos_error_msg; +} + +GAIAGEO_DECLARE const char * +gaiaGetGeosWarningMsg_r (const void *p_cache) +{ +/* return the latest GEOS error message */ + struct splite_connection *p = NULL; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + if (cache != NULL) + { + if (cache->magic1 == SPATIALITE_CACHE_MAGIC1 + || cache->magic2 == SPATIALITE_CACHE_MAGIC2) + p = &(splite_connection_pool[cache->pool_index]); + } + if (p == NULL) + return NULL; + return p->gaia_geos_warning_msg; +} + +GAIAGEO_DECLARE const char * +gaiaGetGeosAuxErrorMsg_r (const void *p_cache) +{ +/* return the latest GEOS (auxialiary) error message */ + struct splite_connection *p = NULL; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + if (cache != NULL) + { + if (cache->magic1 == SPATIALITE_CACHE_MAGIC1 + || cache->magic2 == SPATIALITE_CACHE_MAGIC2) + p = &(splite_connection_pool[cache->pool_index]); + } + if (p == NULL) + return NULL; + return p->gaia_geosaux_error_msg; +} + +GAIAGEO_DECLARE void +gaiaSetGeosErrorMsg_r (const void *p_cache, const char *msg) +{ +/* setting the latest GEOS error message */ + int len; + struct splite_connection *p = NULL; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + if (cache != NULL) + { + if (cache->magic1 == SPATIALITE_CACHE_MAGIC1 + || cache->magic2 == SPATIALITE_CACHE_MAGIC2) + p = &(splite_connection_pool[cache->pool_index]); + } + if (p == NULL) + return; + if (p->gaia_geos_error_msg != NULL) + free (p->gaia_geos_error_msg); + p->gaia_geos_error_msg = NULL; + if (msg == NULL) + return; + len = strlen (msg); + p->gaia_geos_error_msg = malloc (len + 1); + strcpy (p->gaia_geos_error_msg, msg); +} + +GAIAGEO_DECLARE void +gaiaSetGeosWarningMsg_r (const void *p_cache, const char *msg) +{ +/* setting the latest GEOS error message */ + int len; + struct splite_connection *p = NULL; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + if (cache != NULL) + { + if (cache->magic1 == SPATIALITE_CACHE_MAGIC1 + || cache->magic2 == SPATIALITE_CACHE_MAGIC2) + p = &(splite_connection_pool[cache->pool_index]); + } + if (p == NULL) + return; + if (p->gaia_geos_warning_msg != NULL) + free (p->gaia_geos_warning_msg); + p->gaia_geos_warning_msg = NULL; + if (msg == NULL) + return; + len = strlen (msg); + p->gaia_geos_warning_msg = malloc (len + 1); + strcpy (p->gaia_geos_warning_msg, msg); +} + +GAIAGEO_DECLARE void +gaiaSetGeosAuxErrorMsg_r (const void *p_cache, const char *msg) +{ +/* setting the latest GEOS (auxiliary) error message */ + int len; + struct splite_connection *p = NULL; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + if (cache != NULL) + { + if (cache->magic1 == SPATIALITE_CACHE_MAGIC1 + || cache->magic2 == SPATIALITE_CACHE_MAGIC2) + p = &(splite_connection_pool[cache->pool_index]); + } + if (p == NULL) + return; + if (p->gaia_geosaux_error_msg != NULL) + free (p->gaia_geosaux_error_msg); + p->gaia_geosaux_error_msg = NULL; + if (msg == NULL) + return; + len = strlen (msg); + p->gaia_geosaux_error_msg = malloc (len + 1); + strcpy (p->gaia_geosaux_error_msg, msg); +} + +static char * +parse_number_from_msg (const char *str) +{ +/* attempting to parse a number from a string */ + int sign = 0; + int point = 0; + int digit = 0; + int err = 0; + int len; + char *res; + const char *p = str; + while (1) + { + if (*p == '+' || *p == '-') + { + sign++; + p++; + continue; + } + if (*p == '.') + { + point++; + p++; + continue; + } + if (*p >= '0' && *p <= '9') + { + p++; + digit++; + continue; + } + break; + } + if (sign > 1) + err = 1; + if (sign == 1 && *str != '+' && *str != '-') + err = 1; + if (point > 1) + err = 1; + if (!digit) + err = 1; + if (err) + return NULL; + len = p - str; + res = malloc (len + 1); + memcpy (res, str, len); + *(res + len) = '\0'; + return res; +} + +static int +check_geos_critical_point (const char *msg, double *x, double *y) +{ +/* attempts to extract an [X,Y] Point coords from within a string */ + char *px; + char *py; + const char *ref = " at or near point "; + const char *ref2 = " conflict at "; + const char *p = strstr (msg, ref); + if (p != NULL) + goto ok_ref; + p = strstr (msg, ref2); + if (p == NULL) + return 0; + p += strlen (ref2); + goto ok_ref2; + ok_ref: + p += strlen (ref); + ok_ref2: + px = parse_number_from_msg (p); + if (px == NULL) + return 0; + p += strlen (px) + 1; + py = parse_number_from_msg (p); + if (py == NULL) + { + free (px); + return 0; + } + *x = atof (px); + *y = atof (py); + free (px); + free (py); + return 1; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaCriticalPointFromGEOSmsg (void) +{ +/* +/ Attempts to return a Point Geometry extracted from the latest GEOS +/ error / warning message +*/ + double x; + double y; + gaiaGeomCollPtr geom; + const char *msg = gaia_geos_error_msg; + if (msg == NULL) + msg = gaia_geos_warning_msg; + if (msg == NULL) + return NULL; + if (!check_geos_critical_point (msg, &x, &y)) + return NULL; + geom = gaiaAllocGeomColl (); + gaiaAddPointToGeomColl (geom, x, y); + return geom; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaCriticalPointFromGEOSmsg_r (const void *p_cache) +{ +/* +/ Attempts to return a Point Geometry extracted from the latest GEOS +/ error / warning message +*/ + double x; + double y; + gaiaGeomCollPtr geom; + const char *msg; + struct splite_connection *p = NULL; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + if (cache != NULL) + { + if (cache->magic1 == SPATIALITE_CACHE_MAGIC1 + || cache->magic2 == SPATIALITE_CACHE_MAGIC2) + p = &(splite_connection_pool[cache->pool_index]); + } + if (p == NULL) + return NULL; + msg = p->gaia_geos_error_msg; + if (msg == NULL) + msg = p->gaia_geos_warning_msg; + if (msg == NULL) + return NULL; + if (!check_geos_critical_point (msg, &x, &y)) + return NULL; + geom = gaiaAllocGeomColl (); + gaiaAddPointToGeomColl (geom, x, y); + return geom; +} + +SPATIALITE_PRIVATE void +splite_cache_semaphore_lock (void) +{ +#ifdef _WIN32 + EnterCriticalSection (&gaia_cache_semaphore); +#else + pthread_mutex_lock (&gaia_cache_semaphore); +#endif +} + +SPATIALITE_PRIVATE void +splite_cache_semaphore_unlock (void) +{ +#ifdef _WIN32 + LeaveCriticalSection (&gaia_cache_semaphore); +#else + pthread_mutex_unlock (&gaia_cache_semaphore); +#endif +} + +SPATIALITE_PRIVATE void +splite_lwgeom_semaphore_lock (void) +{ +#ifdef _WIN32 + EnterCriticalSection (&gaia_lwgeom_semaphore); +#else + pthread_mutex_lock (&gaia_lwgeom_semaphore); +#endif +} + +SPATIALITE_PRIVATE void +splite_lwgeom_semaphore_unlock (void) +{ +#ifdef _WIN32 + LeaveCriticalSection (&gaia_lwgeom_semaphore); +#else + pthread_mutex_unlock (&gaia_lwgeom_semaphore); +#endif +} + +SPATIALITE_DECLARE void +spatialite_initialize (void) +{ +/* initializes the library */ + if (gaia_already_initialized) + return; + +#ifdef _WIN32 + InitializeCriticalSection (&gaia_cache_semaphore); + InitializeCriticalSection (&gaia_lwgeom_semaphore); +#endif + +#ifdef ENABLE_LIBXML2 /* only if LIBXML2 is supported */ + xmlInitParser (); +#endif /* end LIBXML2 conditional */ + + gaia_already_initialized = 1; +} + +SPATIALITE_DECLARE void +spatialite_shutdown (void) +{ +/* finalizes the library */ + int i; + if (!gaia_already_initialized) + return; + +#ifdef _WIN32 + DeleteCriticalSection (&gaia_cache_semaphore); + DeleteCriticalSection (&gaia_lwgeom_semaphore); +#endif + +#ifdef ENABLE_LIBXML2 /* only if LIBXML2 is supported */ + xmlCleanupParser (); +#endif /* end LIBXML2 conditional */ + + for (i = 0; i < SPATIALITE_MAX_CONNECTIONS; i++) + { + struct splite_connection *p = &(splite_connection_pool[i]); + if (p->conn_ptr != NULL && p->conn_ptr != GAIA_CONN_RESERVED) + free_internal_cache (p->conn_ptr); + } + gaia_already_initialized = 0; +} diff --git a/src/spatialite/src/connection_cache/cache_aux_1.h b/src/spatialite/src/connection_cache/cache_aux_1.h new file mode 100644 index 0000000..fb2060f --- /dev/null +++ b/src/spatialite/src/connection_cache/cache_aux_1.h @@ -0,0 +1,76 @@ +#define SPATIALITE_MAX_CONNECTIONS 64 + +struct splite_connection +{ +/* connections pool */ + void *conn_ptr; + char *gaia_geos_error_msg; + char *gaia_geos_warning_msg; + char *gaia_geosaux_error_msg; +} splite_connection_pool[SPATIALITE_MAX_CONNECTIONS] = +{ + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL}, + {NULL, NULL, NULL, NULL} +}; diff --git a/src/spatialite/src/connection_cache/cache_aux_2.h b/src/spatialite/src/connection_cache/cache_aux_2.h new file mode 100644 index 0000000..b64cc11 --- /dev/null +++ b/src/spatialite/src/connection_cache/cache_aux_2.h @@ -0,0 +1,1152 @@ +static void +geos_error_0 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (0, fmt, ap); + va_end (ap); +} + +static void +geos_error_1 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (1, fmt, ap); + va_end (ap); +} + +static void +geos_error_2 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (2, fmt, ap); + va_end (ap); +} + +static void +geos_error_3 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (3, fmt, ap); + va_end (ap); +} + +static void +geos_error_4 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (4, fmt, ap); + va_end (ap); +} + +static void +geos_error_5 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (5, fmt, ap); + va_end (ap); +} + +static void +geos_error_6 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (6, fmt, ap); + va_end (ap); +} + +static void +geos_error_7 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (7, fmt, ap); + va_end (ap); +} + +static void +geos_error_8 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (8, fmt, ap); + va_end (ap); +} + +static void +geos_error_9 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (9, fmt, ap); + va_end (ap); +} + +static void +geos_error_10 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (10, fmt, ap); + va_end (ap); +} + +static void +geos_error_11 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (11, fmt, ap); + va_end (ap); +} + +static void +geos_error_12 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (12, fmt, ap); + va_end (ap); +} + +static void +geos_error_13 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (13, fmt, ap); + va_end (ap); +} + +static void +geos_error_14 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (14, fmt, ap); + va_end (ap); +} + +static void +geos_error_15 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (15, fmt, ap); + va_end (ap); +} + +static void +geos_error_16 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (16, fmt, ap); + va_end (ap); +} + +static void +geos_error_17 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (17, fmt, ap); + va_end (ap); +} + +static void +geos_error_18 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (18, fmt, ap); + va_end (ap); +} + +static void +geos_error_19 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (19, fmt, ap); + va_end (ap); +} + +static void +geos_error_20 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (20, fmt, ap); + va_end (ap); +} + +static void +geos_error_21 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (21, fmt, ap); + va_end (ap); +} + +static void +geos_error_22 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (22, fmt, ap); + va_end (ap); +} + +static void +geos_error_23 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (23, fmt, ap); + va_end (ap); +} + +static void +geos_error_24 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (24, fmt, ap); + va_end (ap); +} + +static void +geos_error_25 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (25, fmt, ap); + va_end (ap); +} + +static void +geos_error_26 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (26, fmt, ap); + va_end (ap); +} + +static void +geos_error_27 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (27, fmt, ap); + va_end (ap); +} + +static void +geos_error_28 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (28, fmt, ap); + va_end (ap); +} + +static void +geos_error_29 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (29, fmt, ap); + va_end (ap); +} + +static void +geos_error_30 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (30, fmt, ap); + va_end (ap); +} + +static void +geos_error_31 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (31, fmt, ap); + va_end (ap); +} + +static void +geos_error_32 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (32, fmt, ap); + va_end (ap); +} + +static void +geos_error_33 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (33, fmt, ap); + va_end (ap); +} + +static void +geos_error_34 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (34, fmt, ap); + va_end (ap); +} + +static void +geos_error_35 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (35, fmt, ap); + va_end (ap); +} + +static void +geos_error_36 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (36, fmt, ap); + va_end (ap); +} + +static void +geos_error_37 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (37, fmt, ap); + va_end (ap); +} + +static void +geos_error_38 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (38, fmt, ap); + va_end (ap); +} + +static void +geos_error_39 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (39, fmt, ap); + va_end (ap); +} + +static void +geos_error_40 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (40, fmt, ap); + va_end (ap); +} + +static void +geos_error_41 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (41, fmt, ap); + va_end (ap); +} + +static void +geos_error_42 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (42, fmt, ap); + va_end (ap); +} + +static void +geos_error_43 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (43, fmt, ap); + va_end (ap); +} + +static void +geos_error_44 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (44, fmt, ap); + va_end (ap); +} + +static void +geos_error_45 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (45, fmt, ap); + va_end (ap); +} + +static void +geos_error_46 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (46, fmt, ap); + va_end (ap); +} + +static void +geos_error_47 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (47, fmt, ap); + va_end (ap); +} + +static void +geos_error_48 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (48, fmt, ap); + va_end (ap); +} + +static void +geos_error_49 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (49, fmt, ap); + va_end (ap); +} + +static void +geos_error_50 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (50, fmt, ap); + va_end (ap); +} + +static void +geos_error_51 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (51, fmt, ap); + va_end (ap); +} + +static void +geos_error_52 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (52, fmt, ap); + va_end (ap); +} + +static void +geos_error_53 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (53, fmt, ap); + va_end (ap); +} + +static void +geos_error_54 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (54, fmt, ap); + va_end (ap); +} + +static void +geos_error_55 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (55, fmt, ap); + va_end (ap); +} + +static void +geos_error_56 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (56, fmt, ap); + va_end (ap); +} + +static void +geos_error_57 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (57, fmt, ap); + va_end (ap); +} + +static void +geos_error_58 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (58, fmt, ap); + va_end (ap); +} + +static void +geos_error_59 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (59, fmt, ap); + va_end (ap); +} + +static void +geos_error_60 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (60, fmt, ap); + va_end (ap); +} + +static void +geos_error_61 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (61, fmt, ap); + va_end (ap); +} + +static void +geos_error_62 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (62, fmt, ap); + va_end (ap); +} + +static void +geos_error_63 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_error_r (63, fmt, ap); + va_end (ap); +} + +static void +geos_warning_0 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (0, fmt, ap); + va_end (ap); +} + +static void +geos_warning_1 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (1, fmt, ap); + va_end (ap); +} + +static void +geos_warning_2 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (2, fmt, ap); + va_end (ap); +} + +static void +geos_warning_3 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (3, fmt, ap); + va_end (ap); +} + +static void +geos_warning_4 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (4, fmt, ap); + va_end (ap); +} + +static void +geos_warning_5 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (5, fmt, ap); + va_end (ap); +} + +static void +geos_warning_6 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (6, fmt, ap); + va_end (ap); +} + +static void +geos_warning_7 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (7, fmt, ap); + va_end (ap); +} + +static void +geos_warning_8 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (8, fmt, ap); + va_end (ap); +} + +static void +geos_warning_9 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (9, fmt, ap); + va_end (ap); +} + +static void +geos_warning_10 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (10, fmt, ap); + va_end (ap); +} + +static void +geos_warning_11 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (11, fmt, ap); + va_end (ap); +} + +static void +geos_warning_12 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (12, fmt, ap); + va_end (ap); +} + +static void +geos_warning_13 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (13, fmt, ap); + va_end (ap); +} + +static void +geos_warning_14 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (14, fmt, ap); + va_end (ap); +} + +static void +geos_warning_15 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (15, fmt, ap); + va_end (ap); +} + +static void +geos_warning_16 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (16, fmt, ap); + va_end (ap); +} + +static void +geos_warning_17 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (17, fmt, ap); + va_end (ap); +} + +static void +geos_warning_18 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (18, fmt, ap); + va_end (ap); +} + +static void +geos_warning_19 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (19, fmt, ap); + va_end (ap); +} + +static void +geos_warning_20 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (20, fmt, ap); + va_end (ap); +} + +static void +geos_warning_21 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (21, fmt, ap); + va_end (ap); +} + +static void +geos_warning_22 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (22, fmt, ap); + va_end (ap); +} + +static void +geos_warning_23 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (23, fmt, ap); + va_end (ap); +} + +static void +geos_warning_24 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (24, fmt, ap); + va_end (ap); +} + +static void +geos_warning_25 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (25, fmt, ap); + va_end (ap); +} + +static void +geos_warning_26 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (26, fmt, ap); + va_end (ap); +} + +static void +geos_warning_27 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (27, fmt, ap); + va_end (ap); +} + +static void +geos_warning_28 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (28, fmt, ap); + va_end (ap); +} + +static void +geos_warning_29 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (29, fmt, ap); + va_end (ap); +} + +static void +geos_warning_30 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (30, fmt, ap); + va_end (ap); +} + +static void +geos_warning_31 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (31, fmt, ap); + va_end (ap); +} + +static void +geos_warning_32 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (32, fmt, ap); + va_end (ap); +} + +static void +geos_warning_33 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (33, fmt, ap); + va_end (ap); +} + +static void +geos_warning_34 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (34, fmt, ap); + va_end (ap); +} + +static void +geos_warning_35 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (35, fmt, ap); + va_end (ap); +} + +static void +geos_warning_36 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (36, fmt, ap); + va_end (ap); +} + +static void +geos_warning_37 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (37, fmt, ap); + va_end (ap); +} + +static void +geos_warning_38 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (38, fmt, ap); + va_end (ap); +} + +static void +geos_warning_39 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (39, fmt, ap); + va_end (ap); +} + +static void +geos_warning_40 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (40, fmt, ap); + va_end (ap); +} + +static void +geos_warning_41 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (41, fmt, ap); + va_end (ap); +} + +static void +geos_warning_42 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (42, fmt, ap); + va_end (ap); +} + +static void +geos_warning_43 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (43, fmt, ap); + va_end (ap); +} + +static void +geos_warning_44 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (44, fmt, ap); + va_end (ap); +} + +static void +geos_warning_45 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (45, fmt, ap); + va_end (ap); +} + +static void +geos_warning_46 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (46, fmt, ap); + va_end (ap); +} + +static void +geos_warning_47 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (47, fmt, ap); + va_end (ap); +} + +static void +geos_warning_48 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (48, fmt, ap); + va_end (ap); +} + +static void +geos_warning_49 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (49, fmt, ap); + va_end (ap); +} + +static void +geos_warning_50 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (50, fmt, ap); + va_end (ap); +} + +static void +geos_warning_51 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (51, fmt, ap); + va_end (ap); +} + +static void +geos_warning_52 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (52, fmt, ap); + va_end (ap); +} + +static void +geos_warning_53 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (53, fmt, ap); + va_end (ap); +} + +static void +geos_warning_54 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (54, fmt, ap); + va_end (ap); +} + +static void +geos_warning_55 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (55, fmt, ap); + va_end (ap); +} + +static void +geos_warning_56 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (56, fmt, ap); + va_end (ap); +} + +static void +geos_warning_57 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (57, fmt, ap); + va_end (ap); +} + +static void +geos_warning_58 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (58, fmt, ap); + va_end (ap); +} + +static void +geos_warning_59 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (59, fmt, ap); + va_end (ap); +} + +static void +geos_warning_60 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (60, fmt, ap); + va_end (ap); +} + +static void +geos_warning_61 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (61, fmt, ap); + va_end (ap); +} + +static void +geos_warning_62 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (62, fmt, ap); + va_end (ap); +} + +static void +geos_warning_63 (const char *fmt, ...) +{ + va_list ap; + va_start (ap, fmt); + geos_warning_r (63, fmt, ap); + va_end (ap); +} + diff --git a/src/spatialite/src/connection_cache/cache_aux_3.h b/src/spatialite/src/connection_cache/cache_aux_3.h new file mode 100644 index 0000000..2e13c4f --- /dev/null +++ b/src/spatialite/src/connection_cache/cache_aux_3.h @@ -0,0 +1,261 @@ +/* initializing all function pointers */ + switch (cache->pool_index) + { + case 0: + cache->geos_warning = geos_warning_0; + cache->geos_error = geos_error_0; + break; + case 1: + cache->geos_warning = geos_warning_1; + cache->geos_error = geos_error_1; + break; + case 2: + cache->geos_warning = geos_warning_2; + cache->geos_error = geos_error_2; + break; + case 3: + cache->geos_warning = geos_warning_3; + cache->geos_error = geos_error_3; + break; + case 4: + cache->geos_warning = geos_warning_4; + cache->geos_error = geos_error_4; + break; + case 5: + cache->geos_warning = geos_warning_5; + cache->geos_error = geos_error_5; + break; + case 6: + cache->geos_warning = geos_warning_6; + cache->geos_error = geos_error_6; + break; + case 7: + cache->geos_warning = geos_warning_7; + cache->geos_error = geos_error_7; + break; + case 8: + cache->geos_warning = geos_warning_8; + cache->geos_error = geos_error_8; + break; + case 9: + cache->geos_warning = geos_warning_9; + cache->geos_error = geos_error_9; + break; + case 10: + cache->geos_warning = geos_warning_10; + cache->geos_error = geos_error_10; + break; + case 11: + cache->geos_warning = geos_warning_11; + cache->geos_error = geos_error_11; + break; + case 12: + cache->geos_warning = geos_warning_12; + cache->geos_error = geos_error_12; + break; + case 13: + cache->geos_warning = geos_warning_13; + cache->geos_error = geos_error_13; + break; + case 14: + cache->geos_warning = geos_warning_14; + cache->geos_error = geos_error_14; + break; + case 15: + cache->geos_warning = geos_warning_15; + cache->geos_error = geos_error_15; + break; + case 16: + cache->geos_warning = geos_warning_16; + cache->geos_error = geos_error_16; + break; + case 17: + cache->geos_warning = geos_warning_17; + cache->geos_error = geos_error_17; + break; + case 18: + cache->geos_warning = geos_warning_18; + cache->geos_error = geos_error_18; + break; + case 19: + cache->geos_warning = geos_warning_19; + cache->geos_error = geos_error_19; + break; + case 20: + cache->geos_warning = geos_warning_20; + cache->geos_error = geos_error_20; + break; + case 21: + cache->geos_warning = geos_warning_21; + cache->geos_error = geos_error_21; + break; + case 22: + cache->geos_warning = geos_warning_22; + cache->geos_error = geos_error_22; + break; + case 23: + cache->geos_warning = geos_warning_23; + cache->geos_error = geos_error_23; + break; + case 24: + cache->geos_warning = geos_warning_24; + cache->geos_error = geos_error_24; + break; + case 25: + cache->geos_warning = geos_warning_25; + cache->geos_error = geos_error_25; + break; + case 26: + cache->geos_warning = geos_warning_26; + cache->geos_error = geos_error_26; + break; + case 27: + cache->geos_warning = geos_warning_27; + cache->geos_error = geos_error_27; + break; + case 28: + cache->geos_warning = geos_warning_28; + cache->geos_error = geos_error_28; + break; + case 29: + cache->geos_warning = geos_warning_29; + cache->geos_error = geos_error_29; + break; + case 30: + cache->geos_warning = geos_warning_30; + cache->geos_error = geos_error_30; + break; + case 31: + cache->geos_warning = geos_warning_31; + cache->geos_error = geos_error_31; + break; + case 32: + cache->geos_warning = geos_warning_32; + cache->geos_error = geos_error_32; + break; + case 33: + cache->geos_warning = geos_warning_33; + cache->geos_error = geos_error_33; + break; + case 34: + cache->geos_warning = geos_warning_34; + cache->geos_error = geos_error_34; + break; + case 35: + cache->geos_warning = geos_warning_35; + cache->geos_error = geos_error_35; + break; + case 36: + cache->geos_warning = geos_warning_36; + cache->geos_error = geos_error_36; + break; + case 37: + cache->geos_warning = geos_warning_37; + cache->geos_error = geos_error_37; + break; + case 38: + cache->geos_warning = geos_warning_38; + cache->geos_error = geos_error_38; + break; + case 39: + cache->geos_warning = geos_warning_39; + cache->geos_error = geos_error_39; + break; + case 40: + cache->geos_warning = geos_warning_40; + cache->geos_error = geos_error_40; + break; + case 41: + cache->geos_warning = geos_warning_41; + cache->geos_error = geos_error_41; + break; + case 42: + cache->geos_warning = geos_warning_42; + cache->geos_error = geos_error_42; + break; + case 43: + cache->geos_warning = geos_warning_43; + cache->geos_error = geos_error_43; + break; + case 44: + cache->geos_warning = geos_warning_44; + cache->geos_error = geos_error_44; + break; + case 45: + cache->geos_warning = geos_warning_45; + cache->geos_error = geos_error_45; + break; + case 46: + cache->geos_warning = geos_warning_46; + cache->geos_error = geos_error_46; + break; + case 47: + cache->geos_warning = geos_warning_47; + cache->geos_error = geos_error_47; + break; + case 48: + cache->geos_warning = geos_warning_48; + cache->geos_error = geos_error_48; + break; + case 49: + cache->geos_warning = geos_warning_49; + cache->geos_error = geos_error_49; + break; + case 50: + cache->geos_warning = geos_warning_50; + cache->geos_error = geos_error_50; + break; + case 51: + cache->geos_warning = geos_warning_51; + cache->geos_error = geos_error_51; + break; + case 52: + cache->geos_warning = geos_warning_52; + cache->geos_error = geos_error_52; + break; + case 53: + cache->geos_warning = geos_warning_53; + cache->geos_error = geos_error_53; + break; + case 54: + cache->geos_warning = geos_warning_54; + cache->geos_error = geos_error_54; + break; + case 55: + cache->geos_warning = geos_warning_55; + cache->geos_error = geos_error_55; + break; + case 56: + cache->geos_warning = geos_warning_56; + cache->geos_error = geos_error_56; + break; + case 57: + cache->geos_warning = geos_warning_57; + cache->geos_error = geos_error_57; + break; + case 58: + cache->geos_warning = geos_warning_58; + cache->geos_error = geos_error_58; + break; + case 59: + cache->geos_warning = geos_warning_59; + cache->geos_error = geos_error_59; + break; + case 60: + cache->geos_warning = geos_warning_60; + cache->geos_error = geos_error_60; + break; + case 61: + cache->geos_warning = geos_warning_61; + cache->geos_error = geos_error_61; + break; + case 62: + cache->geos_warning = geos_warning_62; + cache->geos_error = geos_error_62; + break; + case 63: + cache->geos_warning = geos_warning_63; + cache->geos_error = geos_error_63; + break; + }; + diff --git a/src/spatialite/src/connection_cache/generator/Makefile.am b/src/spatialite/src/connection_cache/generator/Makefile.am new file mode 100644 index 0000000..9bfe34e --- /dev/null +++ b/src/spatialite/src/connection_cache/generator/Makefile.am @@ -0,0 +1,3 @@ + +EXTRA_DIST = README.txt code_generator.c + diff --git a/src/spatialite/src/connection_cache/generator/Makefile.in b/src/spatialite/src/connection_cache/generator/Makefile.in new file mode 100644 index 0000000..2c5e61c --- /dev/null +++ b/src/spatialite/src/connection_cache/generator/Makefile.in @@ -0,0 +1,437 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/connection_cache/generator +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = README.txt code_generator.c +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/connection_cache/generator/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/connection_cache/generator/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/connection_cache/generator/README.txt b/src/spatialite/src/connection_cache/generator/README.txt new file mode 100644 index 0000000..b527f78 --- /dev/null +++ b/src/spatialite/src/connection_cache/generator/README.txt @@ -0,0 +1,35 @@ +HOW-TO: UPDATE connection_cache.c auto-generated C CODE +============================================================================ +When updating is required: +every time you wish to change the max number of concurrent connections. +the basic default setting supported by any standard distribution always +is 64; anyway you could eventually change this to any other valure +in the range 4 - 1024 +============================================================================ + +STEP #1: compiling the C generator tool +-------- +# cd {libspatialite-source}/src/connection_cache/generator + +Linux: +# gcc code_generator.c -o code_generator + +Windows [MinGW]: +# gcc code_generator.c -o code_generator.exe + + + +STEP #3: generating the C code (#include snippets) +-------- +# rm cache_aux_*.h +# ./code_generator MAX + +at the end of this step several "cache_aux_*.h" files will be generated + + + +STEP #4: final setup +-------- +- copy the generated file into the parent dir: + rm ../cache_aux_*.h + cp cache_aux_*.h .. diff --git a/src/spatialite/src/connection_cache/generator/code_generator.c b/src/spatialite/src/connection_cache/generator/code_generator.c new file mode 100644 index 0000000..717836e --- /dev/null +++ b/src/spatialite/src/connection_cache/generator/code_generator.c @@ -0,0 +1,140 @@ +/* +/ code_generator +/ +/ a tool autogenerating C code for SpatiaLite +/ [#include snippets for alloc_cache.c] +/ +/ version 1.0, 2013 October 30 +/ +/ Author: Sandro Furieri a.furieri@lqt.it +/ +/ Copyright (C) 2013 Alessandro Furieri +/ +/ This program is free software: you can redistribute it and/or modify +/ it under the terms of the GNU General Public License as published by +/ the Free Software Foundation, either version 3 of the License, or +/ (at your option) any later version. +/ +/ This program is distributed in the hope that it will be useful, +/ but WITHOUT ANY WARRANTY; without even the implied warranty of +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +/ GNU General Public License for more details. +/ +/ You should have received a copy of the GNU General Public License +/ along with this program. If not, see . +/ +*/ + +#include +#include +#include + +int +main (int argc, char *argv[]) +{ +/* + this tool autogenerates few #include code snippets + required by ../cache_alloc.c + + the MAX argument corresponds to the max number of + concurrent connections supported by libspatialite + at runtime. + this value is required to be in the range between + 4 and 1024 +*/ + int i; + int max; + FILE *out; + +/* checking the MAX arg for validity */ + if (argc != 2) + { + fprintf (stderr, "usage: code_generator MAX\n"); + return -1; + } + max = atoi (argv[1]); + if (max < 4) + { + fprintf (stderr, "error: MAX has to be >= 4 !!!!\n"); + return -1; + } + if (max > 1024) + { + fprintf (stderr, "error: MAX has to be <= 1024 !!!!\n"); + return -1; + } + +/* generating "cache_aux_1.h" */ + out = fopen ("cache_aux_1.h", "w"); + if (out == NULL) + { + fprintf (stderr, "Unable to create/open \"cache_aux_1.h\"\n"); + return -1; + } + fprintf (out, "#define SPATIALITE_MAX_CONNECTIONS\t%d\n\n", max); + fprintf (out, "struct splite_connection\n{\n"); + fprintf (out, "/* connections pool */\n"); + fprintf (out, "\tvoid *conn_ptr;\n"); + fprintf (out, "\tchar *gaia_geos_error_msg;\n"); + fprintf (out, "\tchar *gaia_geos_warning_msg;\n"); + fprintf (out, "\tchar *gaia_geosaux_error_msg;\n"); + fprintf (out, + "} splite_connection_pool[" "SPATIALITE_MAX_CONNECTIONS] =\n{\n"); + for (i = 0; i < max; i++) + { + if (i == (max - 1)) + fprintf (out, "\t{NULL, NULL, NULL, NULL}\n"); + else + fprintf (out, "\t{NULL, NULL, NULL, NULL},\n"); + } + fprintf (out, "};\n"); + fclose (out); + +/* generating "cache_aux_2.h" */ + out = fopen ("cache_aux_2.h", "w"); + if (out == NULL) + { + fprintf (stderr, "Unable to create/open \"cache_aux_2.h\"\n"); + return -1; + } + for (i = 0; i < max; i++) + { + fprintf (out, "static void\n"); + fprintf (out, "geos_error_%d (const char *fmt, ...)\n{\n", i); + fprintf (out, "\tva_list ap;\n"); + fprintf (out, "\tva_start (ap, fmt);\n"); + fprintf (out, "\tgeos_error_r (%d, fmt, ap);\n", i); + fprintf (out, "\tva_end (ap);\n}\n\n"); + } + for (i = 0; i < max; i++) + { + fprintf (out, "static void\n"); + fprintf (out, "geos_warning_%d (const char *fmt, ...)\n{\n", i); + fprintf (out, "\tva_list ap;\n"); + fprintf (out, "\tva_start (ap, fmt);\n"); + fprintf (out, "\tgeos_warning_r (%d, fmt, ap);\n", i); + fprintf (out, "\tva_end (ap);\n}\n\n"); + } + fclose (out); + +/* generating "cache_aux_3.h" */ + out = fopen ("cache_aux_3.h", "w"); + if (out == NULL) + { + fprintf (stderr, "Unable to create/open \"cache_aux_3.h\"\n"); + return -1; + } + fprintf (out, "/* initializing all function pointers */\n"); + fprintf (out, "\tswitch (cache->pool_index)\n\t{\n"); + for (i = 0; i < max; i++) + { + fprintf (out, "\tcase %d:\n", i); + fprintf (out, "\t\tcache->geos_warning = geos_warning_%d;\n", i); + fprintf (out, "\t\tcache->geos_error = geos_error_%d;\n", i); + fprintf (out, "\t\tbreak;\n"); + } + fprintf (out, "\t};\n\n"); + fclose (out); + + return 0; +} diff --git a/src/spatialite/src/dxf/Makefile.am b/src/spatialite/src/dxf/Makefile.am new file mode 100644 index 0000000..9d6a7af --- /dev/null +++ b/src/spatialite/src/dxf/Makefile.am @@ -0,0 +1,22 @@ + +AM_CPPFLAGS = @CFLAGS@ +AM_CPPFLAGS += -I$(top_srcdir)/src/headers -I. + +noinst_HEADERS = dxf_private.h +noinst_LTLIBRARIES = libdxf.la dxf.la + +DXF_COMMON_SOURCES = dxf_parser.c dxf_loader.c \ + dxf_load_distinct.c dxf_load_mixed.c \ + dxf_writer.c + +libdxf_la_SOURCES = $(DXF_COMMON_SOURCES) + +dxf_la_SOURCES = $(DXF_COMMON_SOURCES) + +dxf_la_CPPFLAGS = @CFLAGS@ +dxf_la_CPPFLAGS += -I$(top_srcdir)/src/headers -I. +dxf_la_CPPFLAGS += -DLOADABLE_EXTENSION +dxf_la_LDFLAGS = -module +dxf_la_LIBTOOLFLAGS = --tag=disable-static + +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda diff --git a/src/spatialite/src/dxf/Makefile.in b/src/spatialite/src/dxf/Makefile.in new file mode 100644 index 0000000..9e53e7e --- /dev/null +++ b/src/spatialite/src/dxf/Makefile.in @@ -0,0 +1,658 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/dxf +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +dxf_la_LIBADD = +am__objects_1 = dxf_la-dxf_parser.lo dxf_la-dxf_loader.lo \ + dxf_la-dxf_load_distinct.lo dxf_la-dxf_load_mixed.lo \ + dxf_la-dxf_writer.lo +am_dxf_la_OBJECTS = $(am__objects_1) +dxf_la_OBJECTS = $(am_dxf_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +dxf_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(dxf_la_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(dxf_la_LDFLAGS) $(LDFLAGS) -o $@ +libdxf_la_LIBADD = +am__objects_2 = dxf_parser.lo dxf_loader.lo dxf_load_distinct.lo \ + dxf_load_mixed.lo dxf_writer.lo +am_libdxf_la_OBJECTS = $(am__objects_2) +libdxf_la_OBJECTS = $(am_libdxf_la_OBJECTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(dxf_la_SOURCES) $(libdxf_la_SOURCES) +DIST_SOURCES = $(dxf_la_SOURCES) $(libdxf_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers -I. +noinst_HEADERS = dxf_private.h +noinst_LTLIBRARIES = libdxf.la dxf.la +DXF_COMMON_SOURCES = dxf_parser.c dxf_loader.c \ + dxf_load_distinct.c dxf_load_mixed.c \ + dxf_writer.c + +libdxf_la_SOURCES = $(DXF_COMMON_SOURCES) +dxf_la_SOURCES = $(DXF_COMMON_SOURCES) +dxf_la_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers -I. \ + -DLOADABLE_EXTENSION +dxf_la_LDFLAGS = -module +dxf_la_LIBTOOLFLAGS = --tag=disable-static +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/dxf/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/dxf/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +dxf.la: $(dxf_la_OBJECTS) $(dxf_la_DEPENDENCIES) $(EXTRA_dxf_la_DEPENDENCIES) + $(AM_V_CCLD)$(dxf_la_LINK) $(dxf_la_OBJECTS) $(dxf_la_LIBADD) $(LIBS) + +libdxf.la: $(libdxf_la_OBJECTS) $(libdxf_la_DEPENDENCIES) $(EXTRA_libdxf_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libdxf_la_OBJECTS) $(libdxf_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dxf_la-dxf_load_distinct.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dxf_la-dxf_load_mixed.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dxf_la-dxf_loader.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dxf_la-dxf_parser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dxf_la-dxf_writer.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dxf_load_distinct.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dxf_load_mixed.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dxf_loader.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dxf_parser.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dxf_writer.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +dxf_la-dxf_parser.lo: dxf_parser.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(dxf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dxf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dxf_la-dxf_parser.lo -MD -MP -MF $(DEPDIR)/dxf_la-dxf_parser.Tpo -c -o dxf_la-dxf_parser.lo `test -f 'dxf_parser.c' || echo '$(srcdir)/'`dxf_parser.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dxf_la-dxf_parser.Tpo $(DEPDIR)/dxf_la-dxf_parser.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dxf_parser.c' object='dxf_la-dxf_parser.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(dxf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dxf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dxf_la-dxf_parser.lo `test -f 'dxf_parser.c' || echo '$(srcdir)/'`dxf_parser.c + +dxf_la-dxf_loader.lo: dxf_loader.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(dxf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dxf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dxf_la-dxf_loader.lo -MD -MP -MF $(DEPDIR)/dxf_la-dxf_loader.Tpo -c -o dxf_la-dxf_loader.lo `test -f 'dxf_loader.c' || echo '$(srcdir)/'`dxf_loader.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dxf_la-dxf_loader.Tpo $(DEPDIR)/dxf_la-dxf_loader.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dxf_loader.c' object='dxf_la-dxf_loader.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(dxf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dxf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dxf_la-dxf_loader.lo `test -f 'dxf_loader.c' || echo '$(srcdir)/'`dxf_loader.c + +dxf_la-dxf_load_distinct.lo: dxf_load_distinct.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(dxf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dxf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dxf_la-dxf_load_distinct.lo -MD -MP -MF $(DEPDIR)/dxf_la-dxf_load_distinct.Tpo -c -o dxf_la-dxf_load_distinct.lo `test -f 'dxf_load_distinct.c' || echo '$(srcdir)/'`dxf_load_distinct.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dxf_la-dxf_load_distinct.Tpo $(DEPDIR)/dxf_la-dxf_load_distinct.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dxf_load_distinct.c' object='dxf_la-dxf_load_distinct.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(dxf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dxf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dxf_la-dxf_load_distinct.lo `test -f 'dxf_load_distinct.c' || echo '$(srcdir)/'`dxf_load_distinct.c + +dxf_la-dxf_load_mixed.lo: dxf_load_mixed.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(dxf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dxf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dxf_la-dxf_load_mixed.lo -MD -MP -MF $(DEPDIR)/dxf_la-dxf_load_mixed.Tpo -c -o dxf_la-dxf_load_mixed.lo `test -f 'dxf_load_mixed.c' || echo '$(srcdir)/'`dxf_load_mixed.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dxf_la-dxf_load_mixed.Tpo $(DEPDIR)/dxf_la-dxf_load_mixed.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dxf_load_mixed.c' object='dxf_la-dxf_load_mixed.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(dxf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dxf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dxf_la-dxf_load_mixed.lo `test -f 'dxf_load_mixed.c' || echo '$(srcdir)/'`dxf_load_mixed.c + +dxf_la-dxf_writer.lo: dxf_writer.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(dxf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dxf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT dxf_la-dxf_writer.lo -MD -MP -MF $(DEPDIR)/dxf_la-dxf_writer.Tpo -c -o dxf_la-dxf_writer.lo `test -f 'dxf_writer.c' || echo '$(srcdir)/'`dxf_writer.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/dxf_la-dxf_writer.Tpo $(DEPDIR)/dxf_la-dxf_writer.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='dxf_writer.c' object='dxf_la-dxf_writer.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(dxf_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(dxf_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o dxf_la-dxf_writer.lo `test -f 'dxf_writer.c' || echo '$(srcdir)/'`dxf_writer.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/dxf/dxf_load_distinct.c b/src/spatialite/src/dxf/dxf_load_distinct.c new file mode 100644 index 0000000..6998709 --- /dev/null +++ b/src/spatialite/src/dxf/dxf_load_distinct.c @@ -0,0 +1,2465 @@ +/* + + dxf_load_distinct.c -- implements DXF support + [loding features into the DB - by distinct layers] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include +#include +#include +#include +#include + +#include "dxf_private.h" + +#if defined(_WIN32) && !defined(__MINGW32__) +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +static int +create_layer_text_table (sqlite3 * handle, const char *name, int srid, + int text3D, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Text-layer" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOTT NULL,\n" + " layer TEXT NOT NULL,\n" + " label TEXT NOT NULL,\n" + " rotation DOUBLE NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = + sqlite3_mprintf ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'POINT', %Q)", name, srid, text3D ? "XYZ" : "XY"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", + name, sqlite3_errmsg (handle)); + return 0; + } + if (!create_text_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +static int +create_layer_point_table (sqlite3 * handle, const char *name, int srid, + int point3D, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Point-layer" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOTT NULL,\n" + " layer TEXT NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = + sqlite3_mprintf ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'POINT', %Q)", name, srid, + point3D ? "XYZ" : "XY"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", + name, sqlite3_errmsg (handle)); + return 0; + } + if (!create_point_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +static int +create_layer_line_table (sqlite3 * handle, const char *name, int srid, + int line3D, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Line-layer" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOTT NULL,\n" + " layer TEXT NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = + sqlite3_mprintf ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'LINESTRING', %Q)", name, srid, + line3D ? "XYZ" : "XY"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", + name, sqlite3_errmsg (handle)); + return 0; + } + if (!create_line_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +static int +create_layer_polyg_table (sqlite3 * handle, const char *name, int srid, + int polyg3D, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Polyg-layer" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOTT NULL,\n" + " layer TEXT NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = + sqlite3_mprintf ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'POLYGON', %Q)", name, srid, + polyg3D ? "XYZ" : "XY"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", + name, sqlite3_errmsg (handle)); + return 0; + } + if (!create_polyg_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +static int +create_layer_hatch_tables (sqlite3 * handle, const char *name, int srid, + sqlite3_stmt ** xstmt, sqlite3_stmt ** xstmt2) +{ +/* attempting to create the "Hatch-layer" tables */ + char *sql; + int ret; + sqlite3_stmt *stmt; + sqlite3_stmt *stmt2; + char *xname; + char *fk_name; + char *xfk_name; + char *pattern; + char *xpattern; + *xstmt = NULL; + *xstmt2 = NULL; + +/* creating the Hatch-Boundary table */ + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOTT NULL,\n" + " layer TEXT NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = + sqlite3_mprintf ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'MULTIPOLYGON', 'XY')", name, srid); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", + name, sqlite3_errmsg (handle)); + return 0; + } + +/* creating the Hatch-Pattern table */ + xname = gaiaDoubleQuotedSql (name); + pattern = sqlite3_mprintf ("%s_pattern", name); + xpattern = gaiaDoubleQuotedSql (pattern); + fk_name = sqlite3_mprintf ("fk_%s_pattern", name); + xfk_name = gaiaDoubleQuotedSql (fk_name); + sqlite3_free (fk_name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY NOT NULL,\n" + " filename TEXT NOTT NULL,\n" + " layer TEXT NOT NULL,\n" + " CONSTRAINT \"%s\" FOREIGN KEY (feature_id) " + " REFERENCES \"%s\" (feature_id))", xpattern, + xfk_name, xname); + free (xname); + free (xfk_name); + free (xpattern); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", pattern, + sqlite3_errmsg (handle)); + return 0; + } + sql = + sqlite3_mprintf ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'MULTILINESTRING', 'XY')", pattern, srid); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", pattern, + sqlite3_errmsg (handle)); + return 0; + } + sql = + sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", pattern); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", + pattern, sqlite3_errmsg (handle)); + return 0; + } + + sqlite3_free (pattern); + if (!create_hatch_boundary_stmt (handle, name, &stmt)) + return 0; + if (!create_hatch_pattern_stmt (handle, name, &stmt2)) + return 0; + + *xstmt = stmt; + *xstmt2 = stmt2; + return 1; +} + +static int +create_layer_text_extra_attr_table (sqlite3 * handle, const char *name, + char *attr_name, sqlite3_stmt ** xstmt_ext) +{ +/* attempting to create the "Text-layer-extra-attr" table */ + char *sql; + int ret; + sqlite3_stmt *stmt_ext; + char *xname; + char *xattr_name; + char *fk_name; + char *xfk_name; + char *idx_name; + char *xidx_name; + char *view_name; + char *xview_name; + *xstmt_ext = NULL; + + fk_name = sqlite3_mprintf ("fk_%s_attr", name); + xfk_name = gaiaDoubleQuotedSql (fk_name); + xattr_name = gaiaDoubleQuotedSql (attr_name); + xname = gaiaDoubleQuotedSql (name); + sqlite3_free (fk_name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " attr_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " feature_id INTEGER NOT NULL,\n" + " attr_key TEXT NOT NULL,\n" + " attr_value TEXT NOT NULL,\n" + " CONSTRAINT \"%s\" FOREIGN KEY (feature_id) " + "REFERENCES \"%s\" (feature_id))", + xattr_name, xfk_name, xname); + free (xfk_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", attr_name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s_attr", name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (feature_id)", xidx_name, xname); + free (xidx_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + view_name = sqlite3_mprintf ("%s_view", name); + xview_name = gaiaDoubleQuotedSql (view_name); + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT f.feature_id AS feature_id, f.layer AS layer, f.label AS label, " + "f.rotation AS rotation, f.geometry AS geometry, " + "a.attr_id AS attr_id, a.attr_key AS attr_key, a.attr_value AS attr_value " + "FROM \"%s\" AS f " + "LEFT JOIN \"%s\" AS a ON (f.feature_id = a.feature_id)", + xview_name, xname, xattr_name); + free (xview_name); + free (xattr_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW %s error: %s\n", view_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (view_name); + if (!create_extra_stmt (handle, attr_name, &stmt_ext)) + return 0; + + *xstmt_ext = stmt_ext; + return 1; +} + +static int +create_layer_point_extra_attr_table (sqlite3 * handle, const char *name, + char *attr_name, sqlite3_stmt ** xstmt_ext) +{ +/* attempting to create the "Point-layer-extra-attr" table */ + char *sql; + int ret; + sqlite3_stmt *stmt_ext; + char *xname; + char *xattr_name; + char *fk_name; + char *xfk_name; + char *idx_name; + char *xidx_name; + char *view_name; + char *xview_name; + *xstmt_ext = NULL; + + fk_name = sqlite3_mprintf ("fk_%s_attr", name); + xfk_name = gaiaDoubleQuotedSql (fk_name); + xattr_name = gaiaDoubleQuotedSql (attr_name); + xname = gaiaDoubleQuotedSql (name); + sqlite3_free (fk_name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " attr_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " feature_id INTEGER NOT NULL,\n" + " attr_key TEXT NOT NULL,\n" + " attr_value TEXT NOT NULL,\n" + " CONSTRAINT \"%s\" FOREIGN KEY (feature_id) " + "REFERENCES \"%s\" (feature_id))", + xattr_name, xfk_name, xname); + free (xfk_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", attr_name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s_attr", name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (feature_id)", xidx_name, xname); + free (xidx_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + view_name = sqlite3_mprintf ("%s_view", name); + xview_name = gaiaDoubleQuotedSql (view_name); + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT f.feature_id AS feature_id, f.layer AS layer, f.geometry AS geometry, " + "a.attr_id AS attr_id, a.attr_key AS attr_key, a.attr_value AS attr_value " + "FROM \"%s\" AS f " + "LEFT JOIN \"%s\" AS a ON (f.feature_id = a.feature_id)", + xview_name, xname, xattr_name); + free (xview_name); + free (xattr_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW %s error: %s\n", view_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (view_name); + if (!create_extra_stmt (handle, attr_name, &stmt_ext)) + return 0; + + *xstmt_ext = stmt_ext; + return 1; +} + +static int +create_layer_line_extra_attr_table (sqlite3 * handle, const char *name, + char *attr_name, sqlite3_stmt ** xstmt_ext) +{ +/* attempting to create the "Line-layer-extra-attr" table */ + char *sql; + int ret; + sqlite3_stmt *stmt_ext; + char *xname; + char *xattr_name; + char *fk_name; + char *xfk_name; + char *idx_name; + char *xidx_name; + char *view_name; + char *xview_name; + *xstmt_ext = NULL; + + fk_name = sqlite3_mprintf ("fk_%s_attr", name); + xfk_name = gaiaDoubleQuotedSql (fk_name); + xattr_name = gaiaDoubleQuotedSql (attr_name); + xname = gaiaDoubleQuotedSql (name); + sqlite3_free (fk_name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " attr_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " feature_id INTEGER NOT NULL,\n" + " attr_key TEXT NOT NULL,\n" + " attr_value TEXT NOT NULL,\n" + " CONSTRAINT \"%s\" FOREIGN KEY (feature_id) " + "REFERENCES \"%s\" (feature_id))", + xattr_name, xfk_name, xname); + free (xfk_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", attr_name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s_attr", name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (feature_id)", xidx_name, xname); + free (xidx_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + view_name = sqlite3_mprintf ("%s_view", name); + xview_name = gaiaDoubleQuotedSql (view_name); + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT f.feature_id AS feature_id, f.layer AS layer, f.geometry AS geometry, " + "a.attr_id AS attr_id, a.attr_key AS attr_key, a.attr_value AS attr_value " + "FROM \"%s\" AS f " + "LEFT JOIN \"%s\" AS a ON (f.feature_id = a.feature_id)", + xview_name, xname, xattr_name); + free (xview_name); + free (xattr_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW %s error: %s\n", view_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (view_name); + if (!create_extra_stmt (handle, attr_name, &stmt_ext)) + return 0; + + *xstmt_ext = stmt_ext; + return 1; +} + +static int +create_layer_polyg_extra_attr_table (sqlite3 * handle, const char *name, + char *attr_name, sqlite3_stmt ** xstmt_ext) +{ +/* attempting to create the "Polyg-layer-extra-attr" table */ + char *sql; + int ret; + sqlite3_stmt *stmt_ext; + char *xname; + char *xattr_name; + char *fk_name; + char *xfk_name; + char *idx_name; + char *xidx_name; + char *view_name; + char *xview_name; + *xstmt_ext = NULL; + + fk_name = sqlite3_mprintf ("fk_%s_attr", name); + xfk_name = gaiaDoubleQuotedSql (fk_name); + xattr_name = gaiaDoubleQuotedSql (attr_name); + xname = gaiaDoubleQuotedSql (name); + sqlite3_free (fk_name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " attr_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " feature_id INTEGER NOT NULL,\n" + " attr_key TEXT NOT NULL,\n" + " attr_value TEXT NOT NULL,\n" + " CONSTRAINT \"%s\" FOREIGN KEY (feature_id) " + "REFERENCES \"%s\" (feature_id))", + xattr_name, xfk_name, xname); + free (xfk_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", attr_name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s_attr", name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (feature_id)", xidx_name, xname); + free (xidx_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + view_name = sqlite3_mprintf ("%s_view", name); + xview_name = gaiaDoubleQuotedSql (view_name); + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT f.feature_id AS feature_id, f.layer AS layer, f.geometry AS geometry, " + "a.attr_id AS attr_id, a.attr_key AS attr_key, a.attr_value AS attr_value " + "FROM \"%s\" AS f " + "LEFT JOIN \"%s\" AS a ON (f.feature_id = a.feature_id)", + xview_name, xname, xattr_name); + free (xview_name); + free (xattr_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW %s error: %s\n", view_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (view_name); + if (!create_extra_stmt (handle, attr_name, &stmt_ext)) + return 0; + + *xstmt_ext = stmt_ext; + return 1; +} + +DXF_PRIVATE int +import_by_layer (sqlite3 * handle, gaiaDxfParserPtr dxf, int append) +{ +/* populating the target DB - by distinct layers */ + int ret; + sqlite3_stmt *stmt; + sqlite3_stmt *stmt_ext; + sqlite3_stmt *stmt_pattern; + unsigned char *blob; + int blob_size; + gaiaGeomCollPtr geom; + gaiaLinestringPtr p_ln; + gaiaPolygonPtr p_pg; + gaiaRingPtr p_rng; + int iv; + char *name; + char *attr_name; + char *block; + gaiaDxfTextPtr txt; + gaiaDxfPointPtr pt; + gaiaDxfPolylinePtr ln; + gaiaDxfPolylinePtr pg; + gaiaDxfHatchPtr p_hatch; + gaiaDxfInsertPtr ins; + + gaiaDxfLayerPtr lyr = dxf->first_layer; + while (lyr != NULL) + { + /* looping on layers */ + int text = 0; + int point = 0; + int line = 0; + int polyg = 0; + int hatch = 0; + int ins_text = 0; + int ins_point = 0; + int ins_line = 0; + int ins_polyg = 0; + int ins_hatch = 0; + if (lyr->first_text != NULL) + text = 1; + if (lyr->first_point != NULL) + point = 1; + if (lyr->first_line != NULL) + line = 1; + if (lyr->first_polyg != NULL) + polyg = 1; + if (lyr->first_hatch != NULL) + hatch = 1; + if (lyr->first_ins_text != NULL) + ins_text = 1; + if (lyr->first_ins_point != NULL) + ins_point = 1; + if (lyr->first_ins_line != NULL) + ins_line = 1; + if (lyr->first_ins_polyg != NULL) + ins_polyg = 1; + if (lyr->first_ins_hatch != NULL) + ins_hatch = 1; + if (text) + { + /* creating and populating the TEXT-layer */ + stmt_ext = NULL; + attr_name = NULL; + if (dxf->prefix == NULL) + name = + sqlite3_mprintf ("%s_text_%s", lyr->layer_name, + lyr->is3Dtext ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%s%s_text_%s", dxf->prefix, + lyr->layer_name, + lyr->is3Dtext ? "3d" : "2d"); + if (append + && check_text_table (handle, name, dxf->srid, + lyr->is3Dtext)) + { + /* appending into the already existing table */ + if (!create_text_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (!create_layer_text_table + (handle, name, dxf->srid, lyr->is3Dtext, &stmt)) + { + sqlite3_free (name); + return 0; + } + } + if (lyr->hasExtraText) + { + attr_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, attr_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt + (handle, attr_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_layer_text_extra_attr_table + (handle, name, attr_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + txt = lyr->first_text; + while (txt != NULL) + { + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, txt->label, + strlen (txt->label), SQLITE_STATIC); + sqlite3_bind_double (stmt, 4, txt->angle); + if (lyr->is3Dtext) + geom = gaiaAllocGeomCollXYZ (); + else + geom = gaiaAllocGeomColl (); + geom->Srid = dxf->srid; + if (lyr->is3Dtext) + gaiaAddPointToGeomCollXYZ (geom, txt->x, txt->y, + txt->z); + else + gaiaAddPointToGeomColl (geom, txt->x, txt->y); + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + gaiaFreeGeomColl (geom); + sqlite3_bind_blob (stmt, 5, blob, blob_size, free); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = txt->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + attr_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + txt = txt->next; + } + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + } + + if (point) + { + /* creating and populating the POINT-layer */ + stmt_ext = NULL; + attr_name = NULL; + if (dxf->prefix == NULL) + name = + sqlite3_mprintf ("%s_point_%s", lyr->layer_name, + lyr->is3Dpoint ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%s%s_point_%s", dxf->prefix, + lyr->layer_name, + lyr->is3Dpoint ? "3d" : "2d"); + if (append + && check_point_table (handle, name, dxf->srid, + lyr->is3Dpoint)) + { + /* appending into the already existing table */ + if (!create_point_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (!create_layer_point_table + (handle, name, dxf->srid, lyr->is3Dpoint, &stmt)) + { + + sqlite3_free (name); + return 0; + } + } + if (lyr->hasExtraPoint) + { + attr_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, attr_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt + (handle, attr_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_layer_point_extra_attr_table + (handle, name, attr_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + pt = lyr->first_point; + while (pt != NULL) + { + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + if (lyr->is3Dpoint) + geom = gaiaAllocGeomCollXYZ (); + else + geom = gaiaAllocGeomColl (); + geom->Srid = dxf->srid; + if (lyr->is3Dpoint) + gaiaAddPointToGeomCollXYZ (geom, pt->x, pt->y, pt->z); + else + gaiaAddPointToGeomColl (geom, pt->x, pt->y); + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + gaiaFreeGeomColl (geom); + sqlite3_bind_blob (stmt, 3, blob, blob_size, free); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = pt->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + attr_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + pt = pt->next; + } + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + } + + if (line) + { + /* creating and populating the LINE-layer */ + stmt_ext = NULL; + attr_name = NULL; + if (dxf->prefix == NULL) + name = + sqlite3_mprintf ("%s_line_%s", lyr->layer_name, + lyr->is3Dline ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%s%s_line_%s", dxf->prefix, + lyr->layer_name, + lyr->is3Dline ? "3d" : "2d"); + if (append + && check_line_table (handle, name, dxf->srid, + lyr->is3Dline)) + { + /* appending into the already existing table */ + if (!create_line_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (!create_layer_line_table + (handle, name, dxf->srid, lyr->is3Dline, &stmt)) + { + + sqlite3_free (name); + return 0; + } + } + if (lyr->hasExtraLine) + { + attr_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, attr_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt + (handle, attr_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_layer_line_extra_attr_table + (handle, name, attr_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + ln = lyr->first_line; + while (ln != NULL) + { + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + if (lyr->is3Dline) + geom = gaiaAllocGeomCollXYZ (); + else + geom = gaiaAllocGeomColl (); + geom->Srid = dxf->srid; + gaiaAddLinestringToGeomColl (geom, ln->points); + p_ln = geom->FirstLinestring; + for (iv = 0; iv < ln->points; iv++) + { + if (lyr->is3Dline) + { + gaiaSetPointXYZ (p_ln->Coords, iv, + *(ln->x + iv), *(ln->y + iv), + *(ln->z + iv)); + } + else + { + gaiaSetPoint (p_ln->Coords, iv, *(ln->x + iv), + *(ln->y + iv)); + } + } + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + gaiaFreeGeomColl (geom); + sqlite3_bind_blob (stmt, 3, blob, blob_size, free); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = ln->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + attr_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + ln = ln->next; + } + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + } + + if (polyg) + { + /* creating and populating the POLYG-layer */ + stmt_ext = NULL; + attr_name = NULL; + if (dxf->prefix == NULL) + name = + sqlite3_mprintf ("%s_polyg_%s", lyr->layer_name, + lyr->is3Dpolyg ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%s%s_polyg_%s", dxf->prefix, + lyr->layer_name, + lyr->is3Dpolyg ? "3d" : "2d"); + if (append + && check_polyg_table (handle, name, dxf->srid, + lyr->is3Dpolyg)) + { + /* appending into the already existing table */ + if (!create_polyg_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (!create_layer_polyg_table + (handle, name, dxf->srid, lyr->is3Dpolyg, &stmt)) + { + + sqlite3_free (name); + return 0; + } + } + if (lyr->hasExtraPolyg) + { + attr_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, attr_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt + (handle, attr_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_layer_polyg_extra_attr_table + (handle, name, attr_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + pg = lyr->first_polyg; + while (pg != NULL) + { + int unclosed = check_unclosed_polyg (pg, lyr->is3Dpolyg); + int num_holes; + gaiaDxfHolePtr hole; + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + if (lyr->is3Dpolyg) + geom = gaiaAllocGeomCollXYZ (); + else + geom = gaiaAllocGeomColl (); + geom->Srid = dxf->srid; + num_holes = 0; + hole = pg->first_hole; + while (hole != NULL) + { + num_holes++; + hole = hole->next; + } + gaiaAddPolygonToGeomColl (geom, pg->points + unclosed, + num_holes); + p_pg = geom->FirstPolygon; + p_rng = p_pg->Exterior; + for (iv = 0; iv < pg->points; iv++) + { + if (lyr->is3Dpolyg) + { + gaiaSetPointXYZ (p_rng->Coords, iv, + *(pg->x + iv), *(pg->y + iv), + *(pg->z + iv)); + } + else + { + gaiaSetPoint (p_rng->Coords, iv, + *(pg->x + iv), *(pg->y + iv)); + } + } + if (unclosed) + { + /* forcing the Ring to be closed */ + if (lyr->is3Dpolyg) + { + gaiaSetPointXYZ (p_rng->Coords, pg->points, + *(pg->x + 0), *(pg->y + 0), + *(pg->z + 0)); + } + else + { + gaiaSetPoint (p_rng->Coords, pg->points, + *(pg->x + 0), *(pg->y + 0)); + } + } + num_holes = 0; + hole = pg->first_hole; + while (hole != NULL) + { + int unclosed = + check_unclosed_hole (hole, lyr->is3Dpolyg); + p_rng = + gaiaAddInteriorRing (p_pg, num_holes, + hole->points + unclosed); + for (iv = 0; iv < hole->points; iv++) + { + if (lyr->is3Dpolyg) + { + gaiaSetPointXYZ (p_rng->Coords, iv, + *(hole->x + iv), + *(hole->y + iv), + *(hole->z + iv)); + } + else + { + gaiaSetPoint (p_rng->Coords, iv, + *(hole->x + iv), + *(hole->y + iv)); + } + } + if (unclosed) + { + /* forcing the Ring to be closed */ + if (lyr->is3Dpolyg) + { + gaiaSetPointXYZ (p_rng->Coords, + hole->points, + *(hole->x + 0), + *(hole->y + 0), + *(hole->z + 0)); + } + else + { + gaiaSetPoint (p_rng->Coords, + hole->points, + *(hole->x + 0), + *(hole->y + 0)); + } + } + num_holes++; + hole = hole->next; + } + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + gaiaFreeGeomColl (geom); + sqlite3_bind_blob (stmt, 3, blob, blob_size, free); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = pg->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + attr_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + pg = pg->next; + } + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + } + + if (hatch) + { + /* creating and populating the HATCH-layer */ + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("%s_hatch_2d", lyr->layer_name); + else + name = + sqlite3_mprintf ("%s%s_hatch_2d", dxf->prefix, + lyr->layer_name); + if (append && check_hatch_tables (handle, name, dxf->srid)) + { + /* appending into the already existing table */ + if (!create_hatch_boundary_stmt (handle, name, &stmt)) + return 0; + if (!create_hatch_pattern_stmt + (handle, name, &stmt_pattern)) + return 0; + } + else + { + /* creating a new table */ + if (!create_layer_hatch_tables + (handle, name, dxf->srid, &stmt, &stmt_pattern)) + { + + sqlite3_free (name); + return 0; + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + p_hatch = lyr->first_hatch; + while (p_hatch != NULL) + { + sqlite3_int64 feature_id; + gaiaDxfHatchSegmPtr segm; + /* inserting the Boundary Geometry */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + if (p_hatch->boundary == NULL) + sqlite3_bind_null (stmt, 2); + else + { + gaiaToSpatiaLiteBlobWkb (p_hatch->boundary, &blob, + &blob_size); + sqlite3_bind_blob (stmt, 3, blob, blob_size, free); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_pattern); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + feature_id = sqlite3_last_insert_rowid (handle); + + /* inserting the Pattern Geometry */ + sqlite3_reset (stmt_pattern); + sqlite3_clear_bindings (stmt_pattern); + sqlite3_bind_int64 (stmt_pattern, 1, feature_id); + sqlite3_bind_text (stmt_pattern, 2, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt_pattern, 3, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + if (p_hatch->first_out == NULL) + sqlite3_bind_null (stmt_pattern, 4); + else + { + geom = gaiaAllocGeomColl (); + geom->Srid = dxf->srid; + geom->DeclaredType = GAIA_MULTILINESTRING; + segm = p_hatch->first_out; + while (segm != NULL) + { + gaiaLinestringPtr p_ln = + gaiaAddLinestringToGeomColl (geom, 2); + gaiaSetPoint (p_ln->Coords, 0, segm->x0, + segm->y0); + gaiaSetPoint (p_ln->Coords, 1, segm->x1, + segm->y1); + segm = segm->next; + } + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + gaiaFreeGeomColl (geom); + sqlite3_bind_blob (stmt_pattern, 4, blob, blob_size, + free); + } + ret = sqlite3_step (stmt_pattern); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_pattern); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + p_hatch = p_hatch->next; + } + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_pattern); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + } + + if (ins_text) + { + /* creating and populating the INSERT (Text reference) layer */ + stmt_ext = NULL; + attr_name = NULL; + if (dxf->prefix == NULL) + name = + sqlite3_mprintf ("%s_instext_%s", lyr->layer_name, + lyr->is3DinsText ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%s%s_instext_%s", dxf->prefix, + lyr->layer_name, + lyr->is3DinsText ? "3d" : "2d"); + if (append && check_insert_table (handle, name)) + { + /* appending into the already existing table */ + if (!create_insert_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (dxf->prefix == NULL) + block = + sqlite3_mprintf ("block_text_%s", + lyr->is3DinsText ? "3d" : "2d"); + else + block = + sqlite3_mprintf ("%sblock_text_%s", dxf->prefix, + lyr->is3DinsText ? "3d" : "2d"); + if (!create_instext_table + (handle, name, block, lyr->is3Dtext, &stmt)) + { + sqlite3_free (name); + return 0; + } + sqlite3_free (block); + } + if (lyr->hasExtraInsText) + { + attr_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, attr_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt + (handle, attr_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_insert_extra_attr_table + (handle, name, attr_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + ins = lyr->first_ins_text; + while (ins != NULL) + { + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, ins->block_id, + strlen (ins->block_id), SQLITE_STATIC); + sqlite3_bind_double (stmt, 4, ins->x); + sqlite3_bind_double (stmt, 5, ins->y); + sqlite3_bind_double (stmt, 6, ins->z); + sqlite3_bind_double (stmt, 7, ins->scale_x); + sqlite3_bind_double (stmt, 8, ins->scale_y); + sqlite3_bind_double (stmt, 9, ins->scale_z); + sqlite3_bind_double (stmt, 10, ins->angle); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = txt->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + attr_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + ins = ins->next; + } + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + } + + if (ins_point) + { + /* creating and populating the INSERT (Point reference) layer */ + stmt_ext = NULL; + attr_name = NULL; + if (dxf->prefix == NULL) + name = + sqlite3_mprintf ("%s_inspoint_%s", lyr->layer_name, + lyr->is3DinsPoint ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%s%s_inspoint_%s", dxf->prefix, + lyr->layer_name, + lyr->is3DinsPoint ? "3d" : "2d"); + if (append && check_insert_table (handle, name)) + { + /* appending into the already existing table */ + if (!create_insert_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (dxf->prefix == NULL) + block = + sqlite3_mprintf ("block_point_%s", + lyr->is3DinsPoint ? "3d" : "2d"); + else + block = + sqlite3_mprintf ("%sblock_point_%s", dxf->prefix, + lyr->is3DinsPoint ? "3d" : "2d"); + if (!create_inspoint_table + (handle, name, block, lyr->is3Dpoint, &stmt)) + { + sqlite3_free (name); + return 0; + } + sqlite3_free (block); + } + if (lyr->hasExtraInsPoint) + { + attr_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, attr_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt + (handle, attr_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_insert_extra_attr_table + (handle, name, attr_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + ins = lyr->first_ins_point; + while (ins != NULL) + { + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, ins->block_id, + strlen (ins->block_id), SQLITE_STATIC); + sqlite3_bind_double (stmt, 4, ins->x); + sqlite3_bind_double (stmt, 5, ins->y); + sqlite3_bind_double (stmt, 6, ins->z); + sqlite3_bind_double (stmt, 7, ins->scale_x); + sqlite3_bind_double (stmt, 8, ins->scale_y); + sqlite3_bind_double (stmt, 9, ins->scale_z); + sqlite3_bind_double (stmt, 10, ins->angle); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = txt->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + attr_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + ins = ins->next; + } + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + } + + if (ins_line) + { + /* creating and populating the INSERT (Line reference) layer */ + stmt_ext = NULL; + attr_name = NULL; + if (dxf->prefix == NULL) + name = + sqlite3_mprintf ("%s_insline_%s", lyr->layer_name, + lyr->is3DinsLine ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%s%s_insline_%s", dxf->prefix, + lyr->layer_name, + lyr->is3DinsLine ? "3d" : "2d"); + if (append && check_insert_table (handle, name)) + { + /* appending into the already existing table */ + if (!create_insert_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (dxf->prefix == NULL) + block = + sqlite3_mprintf ("block_line_%s", + lyr->is3DinsLine ? "3d" : "2d"); + else + block = + sqlite3_mprintf ("%sblock_line_%s", dxf->prefix, + lyr->is3DinsLine ? "3d" : "2d"); + if (!create_insline_table + (handle, name, block, lyr->is3Dline, &stmt)) + { + sqlite3_free (name); + return 0; + } + sqlite3_free (block); + } + if (lyr->hasExtraInsLine) + { + attr_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, attr_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt + (handle, attr_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_insert_extra_attr_table + (handle, name, attr_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + ins = lyr->first_ins_line; + while (ins != NULL) + { + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, ins->block_id, + strlen (ins->block_id), SQLITE_STATIC); + sqlite3_bind_double (stmt, 4, ins->x); + sqlite3_bind_double (stmt, 5, ins->y); + sqlite3_bind_double (stmt, 6, ins->z); + sqlite3_bind_double (stmt, 7, ins->scale_x); + sqlite3_bind_double (stmt, 8, ins->scale_y); + sqlite3_bind_double (stmt, 9, ins->scale_z); + sqlite3_bind_double (stmt, 10, ins->angle); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = txt->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + attr_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + ins = ins->next; + } + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + } + + if (ins_polyg) + { + /* creating and populating the INSERT (Polygon reference) layer */ + stmt_ext = NULL; + attr_name = NULL; + if (dxf->prefix == NULL) + name = + sqlite3_mprintf ("%s_inspolyg_%s", lyr->layer_name, + lyr->is3DinsPolyg ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%s%s_inspolyg_%s", dxf->prefix, + lyr->layer_name, + lyr->is3DinsPolyg ? "3d" : "2d"); + if (append && check_insert_table (handle, name)) + { + /* appending into the already existing table */ + if (!create_insert_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (dxf->prefix == NULL) + block = + sqlite3_mprintf ("block_polyg_%s", + lyr->is3DinsPolyg ? "3d" : "2d"); + else + block = + sqlite3_mprintf ("%sblock_polyg_%s", dxf->prefix, + lyr->is3DinsPolyg ? "3d" : "2d"); + if (!create_inspolyg_table + (handle, name, block, lyr->is3Dpolyg, &stmt)) + { + sqlite3_free (name); + return 0; + } + sqlite3_free (block); + } + if (lyr->hasExtraInsPolyg) + { + attr_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, attr_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt + (handle, attr_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_insert_extra_attr_table + (handle, name, attr_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + ins = lyr->first_ins_polyg; + while (ins != NULL) + { + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, ins->block_id, + strlen (ins->block_id), SQLITE_STATIC); + sqlite3_bind_double (stmt, 4, ins->x); + sqlite3_bind_double (stmt, 5, ins->y); + sqlite3_bind_double (stmt, 6, ins->z); + sqlite3_bind_double (stmt, 7, ins->scale_x); + sqlite3_bind_double (stmt, 8, ins->scale_y); + sqlite3_bind_double (stmt, 9, ins->scale_z); + sqlite3_bind_double (stmt, 10, ins->angle); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = txt->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + attr_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_ext); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + ins = ins->next; + } + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + } + + if (ins_hatch) + { + /* creating and populating the INSERT (Hatch reference) layer */ + stmt_ext = NULL; + attr_name = NULL; + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("%s_inshatch_2d", lyr->layer_name); + else + name = + sqlite3_mprintf ("%s%s_inspolyg_2d", dxf->prefix, + lyr->layer_name); + if (append && check_insert_table (handle, name)) + { + /* appending into the already existing table */ + if (!create_insert_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (dxf->prefix == NULL) + block = sqlite3_mprintf ("block_hatch_2d"); + else + block = + sqlite3_mprintf ("%sblock_polyg_2d", dxf->prefix); + if (!create_inshatch_table (handle, name, block, &stmt)) + { + sqlite3_free (name); + return 0; + } + sqlite3_free (block); + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + ins = lyr->first_ins_polyg; + while (ins != NULL) + { + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, ins->block_id, + strlen (ins->block_id), SQLITE_STATIC); + sqlite3_bind_double (stmt, 4, ins->x); + sqlite3_bind_double (stmt, 5, ins->y); + sqlite3_bind_double (stmt, 6, ins->z); + sqlite3_bind_double (stmt, 7, ins->scale_x); + sqlite3_bind_double (stmt, 8, ins->scale_y); + sqlite3_bind_double (stmt, 9, ins->scale_z); + sqlite3_bind_double (stmt, 10, ins->angle); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + sqlite3_free (name); + return 0; + } + ins = ins->next; + } + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + return 0; + } + sqlite3_free (name); + if (attr_name) + sqlite3_free (attr_name); + } + lyr = lyr->next; + } + return 1; +} diff --git a/src/spatialite/src/dxf/dxf_load_mixed.c b/src/spatialite/src/dxf/dxf_load_mixed.c new file mode 100644 index 0000000..e1f12ec --- /dev/null +++ b/src/spatialite/src/dxf/dxf_load_mixed.c @@ -0,0 +1,2403 @@ +/* + + dxf_load_mixed.c -- implements DXF support + [loding features into the DB - mixed layers by geometry type] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include +#include +#include +#include +#include + +#include "dxf_private.h" + +#if defined(_WIN32) && !defined(__MINGW32__) +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +static int +create_mixed_text_table (sqlite3 * handle, const char *name, int srid, + int text3D, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Text-mixed" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL,\n" + " label TEXT NOT NULL,\n" + " rotation DOUBLE NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = + sqlite3_mprintf + ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'POINT', %Q)", name, srid, text3D ? "XYZ" : "XY"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + if (!create_text_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +static int +create_mixed_point_table (sqlite3 * handle, const char *name, int srid, + int point3D, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Point-mixed" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = + sqlite3_mprintf + ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'POINT', %Q)", name, srid, point3D ? "XYZ" : "XY"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + if (!create_point_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +static int +create_mixed_line_table (sqlite3 * handle, const char *name, int srid, + int line3D, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Line-mixed" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = + sqlite3_mprintf + ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'LINESTRING', %Q)", name, srid, line3D ? "XYZ" : "XY"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + if (!create_line_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +static int +create_mixed_polyg_table (sqlite3 * handle, const char *name, int srid, + int polyg3D, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Polyg-mixed" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = + sqlite3_mprintf + ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'POLYGON', %Q)", name, srid, polyg3D ? "XYZ" : "XY"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + if (!create_polyg_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +static int +create_mixed_hatch_table (sqlite3 * handle, const char *name, int srid, + sqlite3_stmt ** xstmt, sqlite3_stmt ** xstmt2) +{ +/* attempting to create the "Hatch-mixed" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + sqlite3_stmt *stmt2; + char *xname; + char *pattern; + char *xpattern; + char *fk_name; + char *xfk_name; + *xstmt = NULL; + *xstmt2 = NULL; + +/* creating the Hatch-Boundary table */ + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = + sqlite3_mprintf + ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'MULTIPOLYGON', 'XY')", name, srid); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + +/* creating the Hatch-Pattern table */ + xname = gaiaDoubleQuotedSql (name); + pattern = sqlite3_mprintf ("%s_pattern", name); + xpattern = gaiaDoubleQuotedSql (pattern); + fk_name = sqlite3_mprintf ("fk_%s_pattern", name); + xfk_name = gaiaDoubleQuotedSql (fk_name); + sqlite3_free (fk_name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY NOT NULL,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL,\n" + " CONSTRAINT \"%s\" FOREIGN KEY (feature_id) " + " REFERENCES \"%s\" (feature_id))", xpattern, + xfk_name, xname); + free (xname); + free (xfk_name); + free (xpattern); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", pattern, + sqlite3_errmsg (handle)); + return 0; + } + sql = + sqlite3_mprintf + ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'MULTILINESTRING', 'XY')", pattern, srid); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", pattern, + sqlite3_errmsg (handle)); + return 0; + } + sql = + sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", pattern); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", pattern, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (pattern); + if (!create_hatch_boundary_stmt (handle, name, &stmt)) + return 0; + if (!create_hatch_pattern_stmt (handle, name, &stmt2)) + return 0; + + *xstmt = stmt; + *xstmt2 = stmt2; + return 1; +} + +static int +create_mixed_text_extra_attr_table (sqlite3 * handle, const char *name, + char *extra_name, sqlite3_stmt ** xstmt_ext) +{ +/* attempting to create the "Text-mixed-extra-attr" table */ + char *sql; + int ret; + sqlite3_stmt *stmt_ext; + char *xname; + char *xextra_name; + char *fk_name; + char *xfk_name; + char *idx_name; + char *xidx_name; + char *view_name; + char *xview_name; + *xstmt_ext = NULL; + + fk_name = sqlite3_mprintf ("fk_%s", extra_name); + xextra_name = gaiaDoubleQuotedSql (extra_name); + xfk_name = gaiaDoubleQuotedSql (fk_name); + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " attr_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " feature_id INTEGER NOT NULL,\n" + " attr_key TEXT NOT NULL,\n" + " attr_value TEXT NOT NULL,\n" + " CONSTRAINT \"%s\" FOREIGN KEY (feature_id) " + "REFERENCES \"%s\" (feature_id))", + xextra_name, xfk_name, xname); + free (xextra_name); + free (xfk_name); + free (xname); + sqlite3_free (fk_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", extra_name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", extra_name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xextra_name = gaiaDoubleQuotedSql (extra_name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (feature_id)", xidx_name, xextra_name); + free (xidx_name); + free (xextra_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + view_name = sqlite3_mprintf ("%s_view", name); + xview_name = gaiaDoubleQuotedSql (view_name); + xname = gaiaDoubleQuotedSql (name); + xextra_name = gaiaDoubleQuotedSql (extra_name); + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT f.feature_id AS feature_id, f.filename AS filename, " + "f.layer AS layer, f.label AS label, " + "f.rotation AS rotation, f.geometry AS geometry, " + "a.attr_id AS attr_id, a.attr_key AS attr_key, a.attr_value AS attr_value " + "FROM \"%s\" AS f " + "LEFT JOIN \"%s\" AS a ON (f.feature_id = a.feature_id)", + xview_name, xname, xextra_name); + free (xview_name); + free (xname); + free (xextra_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW %s error: %s\n", view_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (view_name); + if (!create_extra_stmt (handle, extra_name, &stmt_ext)) + return 0; + + *xstmt_ext = stmt_ext; + return 1; +} + +static int +create_mixed_point_extra_attr_table (sqlite3 * handle, const char *name, + char *extra_name, + sqlite3_stmt ** xstmt_ext) +{ +/* attempting to create the "Point-mixed-extra-attr" table */ + char *sql; + int ret; + sqlite3_stmt *stmt_ext; + char *xname; + char *xextra_name; + char *fk_name; + char *xfk_name; + char *idx_name; + char *xidx_name; + char *view_name; + char *xview_name; + *xstmt_ext = NULL; + + fk_name = sqlite3_mprintf ("fk_%s", extra_name); + xextra_name = gaiaDoubleQuotedSql (extra_name); + xfk_name = gaiaDoubleQuotedSql (fk_name); + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " attr_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " feature_id INTEGER NOT NULL,\n" + " attr_key TEXT NOT NULL,\n" + " attr_value TEXT NOT NULL,\n" + " CONSTRAINT \"%s\" FOREIGN KEY (feature_id) " + "REFERENCES \"%s\" (feature_id))", + xextra_name, xfk_name, xname); + free (xfk_name); + free (xname); + free (xextra_name); + sqlite3_free (fk_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", extra_name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", extra_name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (feature_id)", xidx_name, xname); + free (xidx_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + view_name = sqlite3_mprintf ("%s_view", name); + xview_name = gaiaDoubleQuotedSql (view_name); + xname = gaiaDoubleQuotedSql (name); + xextra_name = gaiaDoubleQuotedSql (extra_name); + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT f.feature_id AS feature_id, f.filename AS filename, " + "f.layer AS layer, f.geometry AS geometry, " + "a.attr_id AS attr_id, a.attr_key AS attr_key, a.attr_value AS attr_value " + "FROM \"%s\" AS f " + "LEFT JOIN \"%s\" AS a ON (f.feature_id = a.feature_id)", + xview_name, xname, xextra_name); + free (xview_name); + free (xname); + free (xextra_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW %s error: %s\n", view_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (view_name); + if (!create_extra_stmt (handle, extra_name, &stmt_ext)) + return 0; + + *xstmt_ext = stmt_ext; + return 1; +} + +static int +create_mixed_line_extra_attr_table (sqlite3 * handle, const char *name, + char *extra_name, sqlite3_stmt ** xstmt_ext) +{ +/* attempting to create the "Line-mixed-extra-attr" table */ + char *sql; + int ret; + sqlite3_stmt *stmt_ext; + char *xname; + char *xextra_name; + char *fk_name; + char *xfk_name; + char *idx_name; + char *xidx_name; + char *view_name; + char *xview_name; + *xstmt_ext = NULL; + + fk_name = sqlite3_mprintf ("fk_%s", extra_name); + xextra_name = gaiaDoubleQuotedSql (extra_name); + xfk_name = gaiaDoubleQuotedSql (fk_name); + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " attr_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " feature_id INTEGER NOT NULL,\n" + " attr_key TEXT NOT NULL,\n" + " attr_value TEXT NOT NULL,\n" + " CONSTRAINT \"%s\" FOREIGN KEY (feature_id) " + "REFERENCES \"%s\" (feature_id))", + xextra_name, xfk_name, xname); + free (xextra_name); + free (xfk_name); + free (xname); + sqlite3_free (fk_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", extra_name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", extra_name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xextra_name = gaiaDoubleQuotedSql (extra_name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (feature_id)", xidx_name, xextra_name); + free (xidx_name); + free (xextra_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + view_name = sqlite3_mprintf ("%s_view", extra_name); + xview_name = gaiaDoubleQuotedSql (view_name); + xname = gaiaDoubleQuotedSql (name); + xextra_name = gaiaDoubleQuotedSql (extra_name); + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT f.feature_id AS feature_id, f.filename AS filename, " + "f.layer AS layer, f.geometry AS geometry, " + "a.attr_id AS attr_id, a.attr_key AS attr_key, a.attr_value AS attr_value " + "FROM \"%s\" AS f " + "LEFT JOIN \"%s\" AS a ON (f.feature_id = a.feature_id)", + xview_name, xname, xextra_name); + free (xview_name); + free (xname); + free (xextra_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW %s error: %s\n", view_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (view_name); + if (!create_extra_stmt (handle, extra_name, &stmt_ext)) + return 0; + + *xstmt_ext = stmt_ext; + return 1; +} + +static int +create_mixed_polyg_extra_attr_table (sqlite3 * handle, const char *name, + char *extra_name, + sqlite3_stmt ** xstmt_ext) +{ +/* attempting to create the "Polyg-mixed-extra-attr" table */ + char *sql; + int ret; + sqlite3_stmt *stmt_ext; + char *xname; + char *xextra_name; + char *fk_name; + char *xfk_name; + char *idx_name; + char *xidx_name; + char *view_name; + char *xview_name; + *xstmt_ext = NULL; + + fk_name = sqlite3_mprintf ("fk_%s", extra_name); + xextra_name = gaiaDoubleQuotedSql (extra_name); + xfk_name = gaiaDoubleQuotedSql (fk_name); + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " attr_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " feature_id INTEGER NOT NULL,\n" + " attr_key TEXT NOT NULL,\n" + " attr_value TEXT NOT NULL,\n" + " CONSTRAINT \"%s\" FOREIGN KEY (feature_id) " + "REFERENCES \"%s\" (feature_id))", + xextra_name, xfk_name, xname); + free (xextra_name); + free (xfk_name); + free (xname); + sqlite3_free (fk_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", extra_name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", extra_name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xextra_name = gaiaDoubleQuotedSql (extra_name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (feature_id)", xidx_name, xextra_name); + free (xidx_name); + free (xextra_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + view_name = sqlite3_mprintf ("%s_view", name); + xview_name = gaiaDoubleQuotedSql (view_name); + xname = gaiaDoubleQuotedSql (name); + xextra_name = gaiaDoubleQuotedSql (extra_name); + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT f.feature_id AS feature_id, f.filename AS filename, " + "f.layer AS layer, f.geometry AS geometry, " + "a.attr_id AS attr_id, a.attr_key AS attr_key, a.attr_value AS attr_value " + "FROM \"%s\" AS f " + "LEFT JOIN \"%s\" AS a ON (f.feature_id = a.feature_id)", + xview_name, xname, xextra_name); + free (xview_name); + free (xname); + free (xextra_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW %s error: %s\n", view_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (view_name); + if (!create_extra_stmt (handle, extra_name, &stmt_ext)) + return 0; + + *xstmt_ext = stmt_ext; + return 1; +} + +DXF_PRIVATE int +import_mixed (sqlite3 * handle, gaiaDxfParserPtr dxf, int append) +{ +/* populating the target DB - all layers mixed altogether */ + int text = 0; + int point = 0; + int line = 0; + int polyg = 0; + int hatch = 0; + int insText = 0; + int insPoint = 0; + int insLine = 0; + int insPolyg = 0; + int insHatch = 0; + int hasExtraText = 0; + int hasExtraPoint = 0; + int hasExtraLine = 0; + int hasExtraPolyg = 0; + int hasExtraInsText = 0; + int hasExtraInsPoint = 0; + int hasExtraInsLine = 0; + int hasExtraInsPolyg = 0; + int text3D = 0; + int point3D = 0; + int line3D = 0; + int polyg3D = 0; + int insText3D = 0; + int insPoint3D = 0; + int insLine3D = 0; + int insPolyg3D = 0; + int ret; + sqlite3_stmt *stmt; + sqlite3_stmt *stmt_ext; + sqlite3_stmt *stmt_pattern; + unsigned char *blob; + int blob_size; + gaiaGeomCollPtr geom; + char *name; + char *extra_name; + char *block; + + gaiaDxfLayerPtr lyr = dxf->first_layer; + while (lyr != NULL) + { + /* exploring Layers by type */ + if (lyr->first_text != NULL) + text = 1; + if (lyr->first_point != NULL) + point = 1; + if (lyr->first_line != NULL) + line = 1; + if (lyr->first_polyg != NULL) + polyg = 1; + if (lyr->first_hatch != NULL) + hatch = 1; + if (lyr->first_ins_text != NULL) + insText = 1; + if (lyr->first_ins_point != NULL) + insPoint = 1; + if (lyr->first_ins_line != NULL) + insLine = 1; + if (lyr->first_ins_polyg != NULL) + insPolyg = 1; + if (lyr->first_ins_hatch != NULL) + insHatch = 1; + if (lyr->hasExtraText) + hasExtraText = 1; + if (lyr->hasExtraPoint) + hasExtraPoint = 1; + if (lyr->hasExtraLine) + hasExtraLine = 1; + if (lyr->hasExtraPolyg) + hasExtraPolyg = 1; + if (lyr->hasExtraInsText) + hasExtraInsText = 1; + if (lyr->hasExtraInsPoint) + hasExtraInsPoint = 1; + if (lyr->hasExtraInsLine) + hasExtraInsLine = 1; + if (lyr->hasExtraInsPolyg) + hasExtraInsPolyg = 1; + if (lyr->is3Dtext) + text3D = 1; + if (lyr->is3Dpoint) + point3D = 1; + if (lyr->is3Dline) + line3D = 1; + if (lyr->is3Dpolyg) + polyg3D = 1; + if (lyr->is3DinsText) + insText3D = 1; + if (lyr->is3DinsPoint) + insPoint3D = 1; + if (lyr->is3DinsLine) + insLine3D = 1; + if (lyr->is3DinsPolyg) + insPolyg3D = 1; + lyr = lyr->next; + } + + if (text) + { + /* creating and populating the TEXT layer */ + stmt_ext = NULL; + extra_name = NULL; + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("text_layer_%s", text3D ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%stext_layer_%s", dxf->prefix, + text3D ? "3d" : "2d"); + if (append && check_text_table (handle, name, dxf->srid, text3D)) + { + /* appending into the already existing table */ + if (!create_text_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (!create_mixed_text_table + (handle, name, dxf->srid, text3D, &stmt)) + return 0; + } + if (hasExtraText) + { + extra_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, extra_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt (handle, extra_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_mixed_text_extra_attr_table + (handle, name, extra_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + return 0; + } + lyr = dxf->first_layer; + while (lyr != NULL) + { + gaiaDxfTextPtr txt = lyr->first_text; + while (txt != NULL) + { + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, txt->label, + strlen (txt->label), SQLITE_STATIC); + sqlite3_bind_double (stmt, 4, txt->angle); + if (text3D) + geom = gaiaAllocGeomCollXYZ (); + else + geom = gaiaAllocGeomColl (); + geom->Srid = dxf->srid; + if (text3D) + gaiaAddPointToGeomCollXYZ (geom, txt->x, txt->y, + txt->z); + else + gaiaAddPointToGeomColl (geom, txt->x, txt->y); + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + gaiaFreeGeomColl (geom); + sqlite3_bind_blob (stmt, 5, blob, blob_size, free); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = txt->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + extra_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + txt = txt->next; + } + lyr = lyr->next; + } + sqlite3_free (name); + if (extra_name) + sqlite3_free (extra_name); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT text_layer error: %s\n", + sqlite3_errmsg (handle)); + return 0; + } + } + + if (point) + { + /* creating and populating the POINT layer */ + stmt_ext = NULL; + extra_name = NULL; + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("point_layer_%s", point3D ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%spoint_layer_%s", dxf->prefix, + point3D ? "3d" : "2d"); + if (append && check_point_table (handle, name, dxf->srid, point3D)) + { + /* appending into the already existing table */ + if (!create_point_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (!create_mixed_point_table + (handle, name, dxf->srid, point3D, &stmt)) + return 0; + } + if (hasExtraPoint) + { + extra_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, extra_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt (handle, extra_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_mixed_point_extra_attr_table + (handle, name, extra_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + return 0; + } + lyr = dxf->first_layer; + while (lyr != NULL) + { + gaiaDxfPointPtr pt = lyr->first_point; + while (pt != NULL) + { + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + if (point3D) + geom = gaiaAllocGeomCollXYZ (); + else + geom = gaiaAllocGeomColl (); + geom->Srid = dxf->srid; + if (point3D) + gaiaAddPointToGeomCollXYZ (geom, pt->x, pt->y, pt->z); + else + gaiaAddPointToGeomColl (geom, pt->x, pt->y); + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + gaiaFreeGeomColl (geom); + sqlite3_bind_blob (stmt, 3, blob, blob_size, free); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = pt->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + extra_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + pt = pt->next; + } + lyr = lyr->next; + } + sqlite3_free (name); + if (extra_name) + sqlite3_free (extra_name); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT point_layer error: %s\n", + sqlite3_errmsg (handle)); + return 0; + } + } + + if (line) + { + /* creating and populating the LINE layer */ + stmt_ext = NULL; + extra_name = NULL; + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("line_layer_%s", line3D ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%sline_layer_%s", dxf->prefix, + line3D ? "3d" : "2d"); + if (append && check_line_table (handle, name, dxf->srid, line3D)) + { + /* appending into the already existing table */ + if (!create_line_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (!create_mixed_line_table + (handle, name, dxf->srid, line3D, &stmt)) + return 0; + } + if (hasExtraLine) + { + extra_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, extra_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt (handle, extra_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_mixed_line_extra_attr_table + (handle, name, extra_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + return 0; + } + lyr = dxf->first_layer; + while (lyr != NULL) + { + gaiaDxfPolylinePtr ln = lyr->first_line; + while (ln != NULL) + { + int iv; + gaiaLinestringPtr p_ln; + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + if (line3D) + geom = gaiaAllocGeomCollXYZ (); + else + geom = gaiaAllocGeomColl (); + geom->Srid = dxf->srid; + gaiaAddLinestringToGeomColl (geom, ln->points); + p_ln = geom->FirstLinestring; + for (iv = 0; iv < ln->points; iv++) + { + if (line3D) + { + gaiaSetPointXYZ (p_ln->Coords, iv, + *(ln->x + iv), *(ln->y + iv), + *(ln->z + iv)); + } + else + { + gaiaSetPoint (p_ln->Coords, iv, *(ln->x + iv), + *(ln->y + iv)); + } + } + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + gaiaFreeGeomColl (geom); + sqlite3_bind_blob (stmt, 3, blob, blob_size, free); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = ln->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + extra_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + ln = ln->next; + } + lyr = lyr->next; + } + sqlite3_free (name); + if (extra_name) + sqlite3_free (extra_name); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT line_layer error: %s\n", + sqlite3_errmsg (handle)); + return 0; + } + } + + if (polyg) + { + /* creating and populating the POLYG layer */ + stmt_ext = NULL; + extra_name = NULL; + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("polyg_layer_%s", polyg3D ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%spolyg_layer_%s", dxf->prefix, + polyg3D ? "3d" : "2d"); + if (append && check_polyg_table (handle, name, dxf->srid, polyg3D)) + { + /* appending into the already existing table */ + if (!create_polyg_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (!create_mixed_polyg_table + (handle, name, dxf->srid, polyg3D, &stmt)) + return 0; + } + if (hasExtraPolyg) + { + extra_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, extra_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt (handle, extra_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_mixed_polyg_extra_attr_table + (handle, name, extra_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + return 0; + } + lyr = dxf->first_layer; + while (lyr != NULL) + { + gaiaDxfPolylinePtr pg = lyr->first_polyg; + while (pg != NULL) + { + int unclosed = check_unclosed_polyg (pg, lyr->is3Dpolyg); + gaiaDxfHolePtr hole; + int num_holes; + int iv; + gaiaPolygonPtr p_pg; + gaiaRingPtr p_rng; + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + if (polyg3D) + geom = gaiaAllocGeomCollXYZ (); + else + geom = gaiaAllocGeomColl (); + geom->Srid = dxf->srid; + num_holes = 0; + hole = pg->first_hole; + while (hole != NULL) + { + num_holes++; + hole = hole->next; + } + gaiaAddPolygonToGeomColl (geom, pg->points + unclosed, + num_holes); + p_pg = geom->FirstPolygon; + p_rng = p_pg->Exterior; + for (iv = 0; iv < pg->points; iv++) + { + if (lyr->is3Dpolyg) + { + gaiaSetPointXYZ (p_rng->Coords, iv, + *(pg->x + iv), *(pg->y + iv), + *(pg->z + iv)); + } + else + { + gaiaSetPoint (p_rng->Coords, iv, + *(pg->x + iv), *(pg->y + iv)); + } + } + if (unclosed) + { + /* forcing the Ring to be closed */ + if (lyr->is3Dpolyg) + { + gaiaSetPointXYZ (p_rng->Coords, pg->points, + *(pg->x + 0), *(pg->y + 0), + *(pg->z + 0)); + } + else + { + gaiaSetPoint (p_rng->Coords, pg->points, + *(pg->x + 0), *(pg->y + 0)); + } + } + num_holes = 0; + hole = pg->first_hole; + while (hole != NULL) + { + int unclosed = + check_unclosed_hole (hole, lyr->is3Dpolyg); + p_rng = + gaiaAddInteriorRing (p_pg, num_holes, + hole->points + unclosed); + for (iv = 0; iv < hole->points; iv++) + { + if (lyr->is3Dpolyg) + { + gaiaSetPointXYZ (p_rng->Coords, iv, + *(hole->x + iv), + *(hole->y + iv), + *(hole->z + iv)); + } + else + { + gaiaSetPoint (p_rng->Coords, iv, + *(hole->x + iv), + *(hole->y + iv)); + } + } + if (unclosed) + { + /* forcing the Ring to be closed */ + if (lyr->is3Dpolyg) + { + gaiaSetPointXYZ (p_rng->Coords, + hole->points, + *(hole->x + 0), + *(hole->y + 0), + *(hole->z + 0)); + } + else + { + gaiaSetPoint (p_rng->Coords, + hole->points, + *(hole->x + 0), + *(hole->y + 0)); + } + } + num_holes++; + hole = hole->next; + } + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + gaiaFreeGeomColl (geom); + sqlite3_bind_blob (stmt, 3, blob, blob_size, free); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = pg->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + extra_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + pg = pg->next; + } + lyr = lyr->next; + } + sqlite3_free (name); + if (extra_name) + sqlite3_free (extra_name); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT polyg_layer error: %s\n", + sqlite3_errmsg (handle)); + return 0; + } + } + + if (hatch) + { + /* creating and populating the HATCH layer */ + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("hatch_layer_2d"); + else + name = sqlite3_mprintf ("%shatch_layer_2d", dxf->prefix); + if (append && check_hatch_tables (handle, name, dxf->srid)) + { + /* appending into the already existing tables */ + if (!create_hatch_boundary_stmt (handle, name, &stmt)) + return 0; + if (!create_hatch_pattern_stmt (handle, name, &stmt_pattern)) + return 0; + } + else + { + /* creating a new table */ + if (!create_mixed_hatch_table + (handle, name, dxf->srid, &stmt, &stmt_pattern)) + return 0; + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + return 0; + } + lyr = dxf->first_layer; + while (lyr != NULL) + { + gaiaDxfHatchPtr hatch = lyr->first_hatch; + while (hatch != NULL) + { + sqlite3_int64 feature_id; + gaiaDxfHatchSegmPtr segm; + /* inserting the Boundary Geometry */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + if (hatch->boundary == NULL) + sqlite3_bind_null (stmt, 3); + else + { + gaiaToSpatiaLiteBlobWkb (hatch->boundary, &blob, + &blob_size); + sqlite3_bind_blob (stmt, 3, blob, blob_size, free); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_pattern); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + return 0; + } + feature_id = sqlite3_last_insert_rowid (handle); + + /* inserting the Pattern Geometry */ + sqlite3_reset (stmt_pattern); + sqlite3_clear_bindings (stmt_pattern); + sqlite3_bind_int64 (stmt_pattern, 1, feature_id); + sqlite3_bind_text (stmt_pattern, 2, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt_pattern, 3, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + if (hatch->first_out == NULL) + sqlite3_bind_null (stmt_pattern, 4); + else + { + geom = gaiaAllocGeomColl (); + geom->Srid = dxf->srid; + geom->DeclaredType = GAIA_MULTILINESTRING; + segm = hatch->first_out; + while (segm != NULL) + { + gaiaLinestringPtr p_ln = + gaiaAddLinestringToGeomColl (geom, 2); + gaiaSetPoint (p_ln->Coords, 0, segm->x0, + segm->y0); + gaiaSetPoint (p_ln->Coords, 1, segm->x1, + segm->y1); + segm = segm->next; + } + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + gaiaFreeGeomColl (geom); + sqlite3_bind_blob (stmt_pattern, 4, blob, blob_size, + free); + } + ret = sqlite3_step (stmt_pattern); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_pattern); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + return 0; + } + hatch = hatch->next; + } + lyr = lyr->next; + } + sqlite3_free (name); + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_pattern); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT hatch_layer error: %s\n", + sqlite3_errmsg (handle)); + return 0; + } + } + + if (insText) + { + /* creating and populating the INSERT (Text reference) layer */ + stmt_ext = NULL; + extra_name = NULL; + if (dxf->prefix == NULL) + name = + sqlite3_mprintf ("instext_layer_%s", insText3D ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%sinstext_layer_%s", dxf->prefix, + insText3D ? "3d" : "2d"); + if (append && check_insert_table (handle, name)) + { + /* appending into the already existing table */ + if (!create_insert_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (dxf->prefix == NULL) + block = + sqlite3_mprintf ("block_text_%s", + insText3D ? "3d" : "2d"); + else + block = + sqlite3_mprintf ("%sblock_text_%s", dxf->prefix, + insText3D ? "3d" : "2d"); + if (!create_instext_table + (handle, name, block, insText3D, &stmt)) + return 0; + sqlite3_free (block); + } + if (hasExtraInsText) + { + extra_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, extra_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt (handle, extra_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_insert_extra_attr_table + (handle, name, extra_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + return 0; + } + lyr = dxf->first_layer; + while (lyr != NULL) + { + gaiaDxfInsertPtr ins = lyr->first_ins_text; + while (ins != NULL) + { + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, ins->block_id, + strlen (ins->block_id), SQLITE_STATIC); + sqlite3_bind_double (stmt, 4, ins->x); + sqlite3_bind_double (stmt, 5, ins->y); + sqlite3_bind_double (stmt, 6, ins->z); + sqlite3_bind_double (stmt, 7, ins->scale_x); + sqlite3_bind_double (stmt, 8, ins->scale_y); + sqlite3_bind_double (stmt, 9, ins->scale_z); + sqlite3_bind_double (stmt, 10, ins->angle); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = ins->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + extra_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + ins = ins->next; + } + lyr = lyr->next; + } + sqlite3_free (name); + if (extra_name) + sqlite3_free (extra_name); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT hatch_layer error: %s\n", + sqlite3_errmsg (handle)); + return 0; + } + } + + if (insPoint) + { + /* creating and populating the INSERT (Point reference) layer */ + stmt_ext = NULL; + extra_name = NULL; + if (dxf->prefix == NULL) + name = + sqlite3_mprintf ("inspoint_layer_%s", + insPoint3D ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%sinspoint_layer_%s", dxf->prefix, + insPoint3D ? "3d" : "2d"); + if (append && check_insert_table (handle, name)) + { + /* appending into the already existing table */ + if (!create_insert_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (dxf->prefix == NULL) + block = + sqlite3_mprintf ("block_point_%s", + insPoint3D ? "3d" : "2d"); + else + block = + sqlite3_mprintf ("%sblock_point_%s", dxf->prefix, + insPoint3D ? "3d" : "2d"); + if (!create_inspoint_table + (handle, name, block, insPoint3D, &stmt)) + return 0; + sqlite3_free (block); + } + if (hasExtraInsPoint) + { + extra_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, extra_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt (handle, extra_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_insert_extra_attr_table + (handle, name, extra_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + return 0; + } + lyr = dxf->first_layer; + while (lyr != NULL) + { + gaiaDxfInsertPtr ins = lyr->first_ins_point; + while (ins != NULL) + { + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, ins->block_id, + strlen (ins->block_id), SQLITE_STATIC); + sqlite3_bind_double (stmt, 4, ins->x); + sqlite3_bind_double (stmt, 5, ins->y); + sqlite3_bind_double (stmt, 6, ins->z); + sqlite3_bind_double (stmt, 7, ins->scale_x); + sqlite3_bind_double (stmt, 8, ins->scale_y); + sqlite3_bind_double (stmt, 9, ins->scale_z); + sqlite3_bind_double (stmt, 10, ins->angle); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = ins->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + extra_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + ins = ins->next; + } + lyr = lyr->next; + } + sqlite3_free (name); + if (extra_name) + sqlite3_free (extra_name); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT hatch_layer error: %s\n", + sqlite3_errmsg (handle)); + return 0; + } + } + + if (insLine) + { + /* creating and populating the INSERT (Linestring reference) layer */ + stmt_ext = NULL; + extra_name = NULL; + if (dxf->prefix == NULL) + name = + sqlite3_mprintf ("insline_layer_%s", insLine3D ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%sinsline_layer_%s", dxf->prefix, + insLine3D ? "3d" : "2d"); + if (append && check_insert_table (handle, name)) + { + /* appending into the already existing table */ + if (!create_insert_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (dxf->prefix == NULL) + block = + sqlite3_mprintf ("block_line_%s", + insLine3D ? "3d" : "2d"); + else + block = + sqlite3_mprintf ("%sblock_line_%s", dxf->prefix, + insLine3D ? "3d" : "2d"); + if (!create_insline_table + (handle, name, block, insLine3D, &stmt)) + return 0; + sqlite3_free (block); + } + if (hasExtraInsLine) + { + extra_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, extra_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt (handle, extra_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_insert_extra_attr_table + (handle, name, extra_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + return 0; + } + lyr = dxf->first_layer; + while (lyr != NULL) + { + gaiaDxfInsertPtr ins = lyr->first_ins_line; + while (ins != NULL) + { + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, ins->block_id, + strlen (ins->block_id), SQLITE_STATIC); + sqlite3_bind_double (stmt, 4, ins->x); + sqlite3_bind_double (stmt, 5, ins->y); + sqlite3_bind_double (stmt, 6, ins->z); + sqlite3_bind_double (stmt, 7, ins->scale_x); + sqlite3_bind_double (stmt, 8, ins->scale_y); + sqlite3_bind_double (stmt, 9, ins->scale_z); + sqlite3_bind_double (stmt, 10, ins->angle); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = ins->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + extra_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + ins = ins->next; + } + lyr = lyr->next; + } + sqlite3_free (name); + if (extra_name) + sqlite3_free (extra_name); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT hatch_layer error: %s\n", + sqlite3_errmsg (handle)); + return 0; + } + } + + if (insPolyg) + { + /* creating and populating the INSERT (Polygon reference) layer */ + stmt_ext = NULL; + extra_name = NULL; + if (dxf->prefix == NULL) + name = + sqlite3_mprintf ("inspolyg_layer_%s", + insPolyg3D ? "3d" : "2d"); + else + name = + sqlite3_mprintf ("%sinspolyg_layer_%s", dxf->prefix, + insPolyg3D ? "3d" : "2d"); + if (append && check_insert_table (handle, name)) + { + /* appending into the already existing table */ + if (!create_insert_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (dxf->prefix == NULL) + block = + sqlite3_mprintf ("block_polyg_%s", + insPolyg3D ? "3d" : "2d"); + else + block = + sqlite3_mprintf ("%sblock_polyg_%s", dxf->prefix, + insPolyg3D ? "3d" : "2d"); + if (!create_inspolyg_table + (handle, name, block, insPolyg3D, &stmt)) + return 0; + sqlite3_free (block); + } + if (hasExtraInsPolyg) + { + extra_name = create_extra_attr_table_name (name); + if (append && check_extra_attr_table (handle, extra_name)) + { + /* appending into the already existing table */ + if (!create_extra_stmt (handle, extra_name, &stmt_ext)) + return 0; + } + else + { + /* creating the Extra Attribute table */ + if (!create_insert_extra_attr_table + (handle, name, extra_name, &stmt_ext)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + return 0; + } + lyr = dxf->first_layer; + while (lyr != NULL) + { + gaiaDxfInsertPtr ins = lyr->first_ins_polyg; + while (ins != NULL) + { + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, ins->block_id, + strlen (ins->block_id), SQLITE_STATIC); + sqlite3_bind_double (stmt, 4, ins->x); + sqlite3_bind_double (stmt, 5, ins->y); + sqlite3_bind_double (stmt, 6, ins->z); + sqlite3_bind_double (stmt, 7, ins->scale_x); + sqlite3_bind_double (stmt, 8, ins->scale_y); + sqlite3_bind_double (stmt, 9, ins->scale_z); + sqlite3_bind_double (stmt, 10, ins->angle); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + return 0; + } + if (stmt_ext != NULL) + { + /* inserting all Extra Attributes */ + sqlite3_int64 feature_id = + sqlite3_last_insert_rowid (handle); + gaiaDxfExtraAttrPtr ext = ins->first; + while (ext != NULL) + { + sqlite3_reset (stmt_ext); + sqlite3_clear_bindings (stmt_ext); + sqlite3_bind_int64 (stmt_ext, 1, feature_id); + sqlite3_bind_text (stmt_ext, 2, ext->key, + strlen (ext->key), + SQLITE_STATIC); + sqlite3_bind_text (stmt_ext, 3, ext->value, + strlen (ext->value), + SQLITE_STATIC); + ret = sqlite3_step (stmt_ext); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", + extra_name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = + sqlite3_exec (handle, "ROLLBACK", + NULL, NULL, NULL); + return 0; + } + ext = ext->next; + } + } + ins = ins->next; + } + lyr = lyr->next; + } + sqlite3_free (name); + if (extra_name) + sqlite3_free (extra_name); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT hatch_layer error: %s\n", + sqlite3_errmsg (handle)); + return 0; + } + } + + if (insHatch) + { + /* creating and populating the INSERT (Hatch reference) layer */ + stmt_ext = NULL; + extra_name = NULL; + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("inshatch_layer_2d"); + else + name = sqlite3_mprintf ("%sinshatch_layer_2d", dxf->prefix); + if (append && check_insert_table (handle, name)) + { + /* appending into the already existing table */ + if (!create_insert_stmt (handle, name, &stmt)) + return 0; + } + else + { + /* creating a new table */ + if (dxf->prefix == NULL) + block = sqlite3_mprintf ("block_hatch_2d"); + else + block = sqlite3_mprintf ("%sblock_hatch_2d", dxf->prefix); + if (!create_inshatch_table (handle, name, block, &stmt)) + return 0; + sqlite3_free (block); + } + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + return 0; + } + lyr = dxf->first_layer; + while (lyr != NULL) + { + gaiaDxfInsertPtr ins = lyr->first_ins_hatch; + while (ins != NULL) + { + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, lyr->layer_name, + strlen (lyr->layer_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, ins->block_id, + strlen (ins->block_id), SQLITE_STATIC); + sqlite3_bind_double (stmt, 4, ins->x); + sqlite3_bind_double (stmt, 5, ins->y); + sqlite3_bind_double (stmt, 6, ins->z); + sqlite3_bind_double (stmt, 7, ins->scale_x); + sqlite3_bind_double (stmt, 8, ins->scale_y); + sqlite3_bind_double (stmt, 9, ins->scale_z); + sqlite3_bind_double (stmt, 10, ins->angle); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + ret = + sqlite3_exec (handle, "ROLLBACK", NULL, NULL, + NULL); + return 0; + } + ins = ins->next; + } + lyr = lyr->next; + } + sqlite3_free (name); + if (extra_name) + sqlite3_free (extra_name); + sqlite3_finalize (stmt); + if (stmt_ext != NULL) + sqlite3_finalize (stmt_ext); + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT hatch_layer error: %s\n", + sqlite3_errmsg (handle)); + return 0; + } + } + return 1; +} diff --git a/src/spatialite/src/dxf/dxf_loader.c b/src/spatialite/src/dxf/dxf_loader.c new file mode 100644 index 0000000..8d32959 --- /dev/null +++ b/src/spatialite/src/dxf/dxf_loader.c @@ -0,0 +1,3939 @@ +/* + + dxf_loader.c -- implements DXF support + [loding features into the DB - common methods] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include +#include +#include +#include +#include + +#include "dxf_private.h" + +#if defined(_WIN32) && !defined(__MINGW32__) +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +DXF_PRIVATE int +create_text_stmt (sqlite3 * handle, const char *name, sqlite3_stmt ** xstmt) +{ +/* creating the "Text" insert statement */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("INSERT INTO \"%s\" (feature_id, filename, layer, label, rotation, geometry) " + "VALUES (NULL, ?, ?, ?, ?, ?)", xname); + free (xname); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE STATEMENT %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + *xstmt = stmt; + return 1; +} + +DXF_PRIVATE int +create_point_stmt (sqlite3 * handle, const char *name, sqlite3_stmt ** xstmt) +{ +/* creating the "Point" insert statement */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("INSERT INTO \"%s\" (feature_id, filename, layer, geometry) " + "VALUES (NULL, ?, ?, ?)", xname); + free (xname); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE STATEMENT %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + *xstmt = stmt; + return 1; +} + +DXF_PRIVATE int +create_line_stmt (sqlite3 * handle, const char *name, sqlite3_stmt ** xstmt) +{ +/* creating the "Line" insert statement */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("INSERT INTO \"%s\" (feature_id, filename, layer, geometry) " + "VALUES (NULL, ?, ?, ?)", xname); + free (xname); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE STATEMENT %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + *xstmt = stmt; + return 1; +} + +DXF_PRIVATE int +create_polyg_stmt (sqlite3 * handle, const char *name, sqlite3_stmt ** xstmt) +{ +/* creating the "Polyg" insert statement */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("INSERT INTO \"%s\" (feature_id, filename, layer, geometry) " + "VALUES (NULL, ?, ?, ?)", xname); + free (xname); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE STATEMENT %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + *xstmt = stmt; + return 1; +} + +DXF_PRIVATE int +create_hatch_boundary_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt) +{ +/* creating the "Hatch-Boundary" insert statement */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("INSERT INTO \"%s\" (feature_id, filename, layer, geometry) " + "VALUES (NULL, ?, ?, ?)", xname); + free (xname); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE STATEMENT %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + *xstmt = stmt; + return 1; +} + +DXF_PRIVATE int +create_hatch_pattern_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt) +{ +/* creating the "Hatch-Pattern" insert statement */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xpattern; + char *pattern; + *xstmt = NULL; + + pattern = sqlite3_mprintf ("%s_pattern", name); + xpattern = gaiaDoubleQuotedSql (pattern); + sql = + sqlite3_mprintf + ("INSERT INTO \"%s\" (feature_id, filename, layer, geometry) " + "VALUES (?, ?, ?, ?)", xpattern); + free (xpattern); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE STATEMENT %s error: %s\n", pattern, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (pattern); + *xstmt = stmt; + return 1; +} + +DXF_PRIVATE int +create_insert_stmt (sqlite3 * handle, const char *name, sqlite3_stmt ** xstmt) +{ +/* creating the "Insert" insert statement */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("INSERT INTO \"%s\" (feature_id, filename, layer, block_id, x, y, z, scale_x, scale_y, scale_z, angle) " + "VALUES (NULL, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)", xname); + free (xname); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE STATEMENT %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + *xstmt = stmt; + return 1; +} + +DXF_PRIVATE int +create_extra_stmt (sqlite3 * handle, const char *extra_name, + sqlite3_stmt ** xstmt) +{ +/* creating the Extra Attributes insert statement */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xextra_name; + *xstmt = NULL; + + xextra_name = gaiaDoubleQuotedSql (extra_name); + sql = + sqlite3_mprintf + ("INSERT INTO \"%s\" (attr_id, feature_id, attr_key, attr_value) " + "VALUES (NULL, ?, ?, ?)", xextra_name); + free (xextra_name); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE STATEMENT %s error: %s\n", extra_name, + sqlite3_errmsg (handle)); + return 0; + } + *xstmt = stmt; + return 1; +} + +DXF_PRIVATE char * +create_extra_attr_table_name (const char *name) +{ +/* creating the Extra Attributes table name [Mixed Layers] */ + return sqlite3_mprintf ("%s_attr", name); +} + +DXF_PRIVATE int +check_text_table (sqlite3 * handle, const char *name, int srid, int is3D) +{ +/* checking if a Text table already exists */ + char *sql; + int ok_geom = 0; + int ok_data = 0; + int ret; + int i; + char *xname; + char **results; + int n_rows; + int n_columns; + int metadata_version = checkSpatialMetaData (handle); + + if (metadata_version == 1) + { + /* legacy metadata style <= v.3.1.0 */ + int ok_srid = 0; + int ok_type = 0; + int dims2d = 0; + int dims3d = 0; + sql = sqlite3_mprintf ("SELECT srid, type, coord_dimension " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (strcmp ("POINT", results[(i * n_columns) + 1]) == 0) + ok_type = 1; + if (strcmp ("XY", results[(i * n_columns) + 2]) == 0) + dims2d = 1; + if (strcmp ("XYZ", results[(i * n_columns) + 2]) == 0) + dims3d = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + if (is3D && dims3d) + ok_geom = 1; + if (!is3D && dims2d) + ok_geom = 1; + } + } + else + { + /* current metadata style >= v.4.0.0 */ + int ok_srid = 0; + int ok_type = 0; + sql = sqlite3_mprintf ("SELECT srid, geometry_type " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (atoi (results[(i * n_columns) + 1]) == 1 && !is3D) + ok_type = 1; + if (atoi (results[(i * n_columns) + 1]) == 1001 && is3D) + ok_type = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + ok_geom = 1; + } + } + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + int ok_feature_id = 0; + int ok_filename = 0; + int ok_layer = 0; + int ok_label = 0; + int ok_rotation = 0; + for (i = 1; i <= n_rows; i++) + { + if (strcasecmp ("feature_id", results[(i * n_columns) + 1]) == + 0) + ok_feature_id = 1; + if (strcasecmp ("filename", results[(i * n_columns) + 1]) == 0) + ok_filename = 1; + if (strcasecmp ("layer", results[(i * n_columns) + 1]) == 0) + ok_layer = 1; + if (strcasecmp ("label", results[(i * n_columns) + 1]) == 0) + ok_label = 1; + if (strcasecmp ("rotation", results[(i * n_columns) + 1]) == 0) + ok_rotation = 1; + } + if (ok_feature_id && ok_filename && ok_layer && ok_label + && ok_rotation) + ok_data = 1; + } + sqlite3_free_table (results); + + if (ok_geom && ok_data) + return 1; + return 0; +} + +DXF_PRIVATE int +check_point_table (sqlite3 * handle, const char *name, int srid, int is3D) +{ +/* checking if a Point table already exists */ + char *sql; + int ok_geom = 0; + int ok_data = 0; + int ret; + int i; + char *xname; + char **results; + int n_rows; + int n_columns; + int metadata_version = checkSpatialMetaData (handle); + + if (metadata_version == 1) + { + /* legacy metadata style <= v.3.1.0 */ + int ok_srid = 0; + int ok_type = 0; + int dims2d = 0; + int dims3d = 0; + sql = sqlite3_mprintf ("SELECT srid, type, coord_dimension " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (strcmp ("POINT", results[(i * n_columns) + 1]) == 0) + ok_type = 1; + if (strcmp ("XY", results[(i * n_columns) + 2]) == 0) + dims2d = 1; + if (strcmp ("XYZ", results[(i * n_columns) + 2]) == 0) + dims3d = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + if (is3D && dims3d) + ok_geom = 1; + if (!is3D && dims2d) + ok_geom = 1; + } + } + else + { + /* current metadata style >= v.4.0.0 */ + int ok_srid = 0; + int ok_type = 0; + sql = sqlite3_mprintf ("SELECT srid, geometry_type " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (atoi (results[(i * n_columns) + 1]) == 1 && !is3D) + ok_type = 1; + if (atoi (results[(i * n_columns) + 1]) == 1001 && is3D) + ok_type = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + ok_geom = 1; + } + } + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + int ok_feature_id = 0; + int ok_filename = 0; + int ok_layer = 0; + for (i = 1; i <= n_rows; i++) + { + if (strcasecmp ("feature_id", results[(i * n_columns) + 1]) == + 0) + ok_feature_id = 1; + if (strcasecmp ("filename", results[(i * n_columns) + 1]) == 0) + ok_filename = 1; + if (strcasecmp ("layer", results[(i * n_columns) + 1]) == 0) + ok_layer = 1; + } + if (ok_feature_id && ok_filename && ok_layer) + ok_data = 1; + } + sqlite3_free_table (results); + + if (ok_geom && ok_data) + return 1; + return 0; +} + +DXF_PRIVATE int +check_line_table (sqlite3 * handle, const char *name, int srid, int is3D) +{ +/* checking if a Line table already exists */ + char *sql; + int ok_geom = 0; + int ok_data = 0; + int ret; + int i; + char *xname; + char **results; + int n_rows; + int n_columns; + int metadata_version = checkSpatialMetaData (handle); + + if (metadata_version == 1) + { + /* legacy metadata style <= v.3.1.0 */ + int ok_srid = 0; + int ok_type = 0; + int dims2d = 0; + int dims3d = 0; + sql = sqlite3_mprintf ("SELECT srid, type, coord_dimension " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (strcmp ("LINESTRING", results[(i * n_columns) + 1]) == + 0) + ok_type = 1; + if (strcmp ("XY", results[(i * n_columns) + 2]) == 0) + dims2d = 1; + if (strcmp ("XYZ", results[(i * n_columns) + 2]) == 0) + dims3d = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + if (is3D && dims3d) + ok_geom = 1; + if (!is3D && dims2d) + ok_geom = 1; + } + } + else + { + /* current metadata style >= v.4.0.0 */ + int ok_srid = 0; + int ok_type = 0; + sql = sqlite3_mprintf ("SELECT srid, geometry_type " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (atoi (results[(i * n_columns) + 1]) == 2 && !is3D) + ok_type = 1; + if (atoi (results[(i * n_columns) + 1]) == 1002 && is3D) + ok_type = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + ok_geom = 1; + } + } + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + int ok_feature_id = 0; + int ok_filename = 0; + int ok_layer = 0; + for (i = 1; i <= n_rows; i++) + { + if (strcasecmp ("feature_id", results[(i * n_columns) + 1]) == + 0) + ok_feature_id = 1; + if (strcasecmp ("filename", results[(i * n_columns) + 1]) == 0) + ok_filename = 1; + if (strcasecmp ("layer", results[(i * n_columns) + 1]) == 0) + ok_layer = 1; + } + if (ok_feature_id && ok_filename && ok_layer) + ok_data = 1; + } + sqlite3_free_table (results); + + if (ok_geom && ok_data) + return 1; + return 0; +} + +DXF_PRIVATE int +check_polyg_table (sqlite3 * handle, const char *name, int srid, int is3D) +{ +/* checking if a Polygon table already exists */ + char *sql; + int ok_geom = 0; + int ok_data = 0; + int ret; + int i; + char *xname; + char **results; + int n_rows; + int n_columns; + int metadata_version = checkSpatialMetaData (handle); + + if (metadata_version == 1) + { + /* legacy metadata style <= v.3.1.0 */ + int ok_srid = 0; + int ok_type = 0; + int dims2d = 0; + int dims3d = 0; + sql = sqlite3_mprintf ("SELECT srid, type, coord_dimension " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (strcmp ("POLYGON", results[(i * n_columns) + 1]) == 0) + ok_type = 1; + if (strcmp ("XY", results[(i * n_columns) + 2]) == 0) + dims2d = 1; + if (strcmp ("XYZ", results[(i * n_columns) + 2]) == 0) + dims3d = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + if (is3D && dims3d) + ok_geom = 1; + if (!is3D && dims2d) + ok_geom = 1; + } + } + else + { + /* current metadata style >= v.4.0.0 */ + int ok_srid = 0; + int ok_type = 0; + sql = sqlite3_mprintf ("SELECT srid, geometry_type " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (atoi (results[(i * n_columns) + 1]) == 3 && !is3D) + ok_type = 1; + if (atoi (results[(i * n_columns) + 1]) == 1003 && is3D) + ok_type = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + ok_geom = 1; + } + } + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + int ok_feature_id = 0; + int ok_filename = 0; + int ok_layer = 0; + for (i = 1; i <= n_rows; i++) + { + if (strcasecmp ("feature_id", results[(i * n_columns) + 1]) == + 0) + ok_feature_id = 1; + if (strcasecmp ("filename", results[(i * n_columns) + 1]) == 0) + ok_filename = 1; + if (strcasecmp ("layer", results[(i * n_columns) + 1]) == 0) + ok_layer = 1; + } + if (ok_feature_id && ok_filename && ok_layer) + ok_data = 1; + } + sqlite3_free_table (results); + + if (ok_geom && ok_data) + return 1; + return 0; +} + +DXF_PRIVATE int +check_hatch_tables (sqlite3 * handle, const char *name, int srid) +{ +/* checking if Hatch tables already exist */ + char *sql; + int ok_geom = 0; + int ok_pdata = 0; + int ok_bdata = 0; + int ret; + int i; + char *xname; + char *pattern = sqlite3_mprintf ("%s_pattern", name); + char *xpattern; + char **results; + int n_rows; + int n_columns; + int metadata_version = checkSpatialMetaData (handle); + + if (metadata_version == 1) + { + /* legacy metadata style <= v.3.1.0 */ + int ok_bsrid = 0; + int ok_btype = 0; + int bdims2d = 0; + int ok_psrid = 0; + int ok_ptype = 0; + int pdims2d = 0; + sql = + sqlite3_mprintf + ("SELECT srid, type, coord_dimension " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_bsrid = 1; + if (strcmp + ("MULTIPOLYGON", results[(i * n_columns) + 1]) == 0) + ok_btype = 1; + if (strcmp ("XY", results[(i * n_columns) + 2]) == 0) + bdims2d = 1; + } + } + sqlite3_free_table (results); + sql = + sqlite3_mprintf + ("SELECT srid, type, coord_dimension " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", pattern, "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_psrid = 1; + if (strcmp + ("MULTILINESTRING", + results[(i * n_columns) + 1]) == 0) + ok_ptype = 1; + if (strcmp ("XY", results[(i * n_columns) + 2]) == 0) + pdims2d = 1; + } + } + sqlite3_free_table (results); + if (ok_bsrid && ok_btype && bdims2d && ok_psrid && ok_ptype + && pdims2d) + ok_geom = 1; + } + else + { + /* current metadata style >= v.4.0.0 */ + int ok_psrid = 0; + int ok_ptype = 0; + int ok_bsrid = 0; + int ok_btype = 0; + sql = + sqlite3_mprintf ("SELECT srid, geometry_type " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_bsrid = 1; + if (atoi (results[(i * n_columns) + 1]) == 6) + ok_btype = 1; + } + } + sqlite3_free_table (results); + sql = + sqlite3_mprintf ("SELECT srid, geometry_type " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", pattern, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_psrid = 1; + if (atoi (results[(i * n_columns) + 1]) == 5) + ok_ptype = 1; + } + } + sqlite3_free_table (results); + if (ok_bsrid && ok_btype && ok_psrid && ok_ptype) + ok_geom = 1; + } + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + if (n_rows > 0) + { + int ok_feature_id = 0; + int ok_filename = 0; + int ok_layer = 0; + for (i = 1; i <= n_rows; i++) + { + if (strcasecmp ("feature_id", results[(i * n_columns) + 1]) == + 0) + ok_feature_id = 1; + if (strcasecmp ("filename", results[(i * n_columns) + 1]) == 0) + ok_filename = 1; + if (strcasecmp ("layer", results[(i * n_columns) + 1]) == 0) + ok_layer = 1; + } + if (ok_feature_id && ok_filename && ok_layer) + ok_bdata = 1; + } + sqlite3_free_table (results); + + xpattern = gaiaDoubleQuotedSql (pattern); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xpattern); + free (xpattern); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + if (n_rows > 0) + { + int ok_feature_id = 0; + int ok_filename = 0; + int ok_layer = 0; + for (i = 1; i <= n_rows; i++) + { + if (strcasecmp ("feature_id", results[(i * n_columns) + 1]) == + 0) + ok_feature_id = 1; + if (strcasecmp ("filename", results[(i * n_columns) + 1]) == 0) + ok_filename = 1; + if (strcasecmp ("layer", results[(i * n_columns) + 1]) == 0) + ok_layer = 1; + } + if (ok_feature_id && ok_filename && ok_layer) + ok_pdata = 1; + } + sqlite3_free_table (results); + + if (ok_geom && ok_bdata && ok_pdata) + { + sqlite3_free (pattern); + return 1; + } + stop: + sqlite3_free (pattern); + return 0; +} + +DXF_PRIVATE int +check_insert_table (sqlite3 * handle, const char *name) +{ +/* checking if an Insert (indirect refs) table already exists */ + char *sql; + int ok_data = 0; + int ret; + int i; + char *xname; + char **results; + int n_rows; + int n_columns; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + int ok_feature_id = 0; + int ok_filename = 0; + int ok_layer = 0; + int ok_block_id = 0; + int ok_x = 0; + int ok_y = 0; + int ok_z = 0; + int ok_scale_x = 0; + int ok_scale_y = 0; + int ok_scale_z = 0; + int ok_angle = 0; + for (i = 1; i <= n_rows; i++) + { + if (strcasecmp ("feature_id", results[(i * n_columns) + 1]) == + 0) + ok_feature_id = 1; + if (strcasecmp ("filename", results[(i * n_columns) + 1]) == 0) + ok_filename = 1; + if (strcasecmp ("layer", results[(i * n_columns) + 1]) == 0) + ok_layer = 1; + if (strcasecmp ("block_id", results[(i * n_columns) + 1]) == 0) + ok_block_id = 1; + if (strcasecmp ("x", results[(i * n_columns) + 1]) == 0) + ok_x = 1; + if (strcasecmp ("y", results[(i * n_columns) + 1]) == 0) + ok_y = 1; + if (strcasecmp ("z", results[(i * n_columns) + 1]) == 0) + ok_z = 1; + if (strcasecmp ("scale_x", results[(i * n_columns) + 1]) == 0) + ok_scale_x = 1; + if (strcasecmp ("scale_y", results[(i * n_columns) + 1]) == 0) + ok_scale_y = 1; + if (strcasecmp ("scale_z", results[(i * n_columns) + 1]) == 0) + ok_scale_z = 1; + if (strcasecmp ("angle", results[(i * n_columns) + 1]) == 0) + ok_angle = 1; + } + if (ok_feature_id && ok_filename && ok_layer && ok_block_id && ok_x + && ok_y && ok_z && ok_scale_x && ok_scale_y && ok_scale_z + && ok_angle) + ok_data = 1; + } + sqlite3_free_table (results); + + if (ok_data) + return 1; + return 0; +} + +DXF_PRIVATE int +check_extra_attr_table (sqlite3 * handle, const char *name) +{ +/* checking if an Extra Attributes table already exists */ + char *sql; + int ok_data = 0; + int ret; + int i; + char *xname; + char **results; + int n_rows; + int n_columns; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + int ok_attr_id = 0; + int ok_feature_id = 0; + int ok_attr_key = 0; + int ok_attr_value = 0; + for (i = 1; i <= n_rows; i++) + { + if (strcasecmp ("attr_id", results[(i * n_columns) + 1]) == 0) + ok_attr_id = 1; + if (strcasecmp ("feature_id", results[(i * n_columns) + 1]) == + 0) + ok_feature_id = 1; + if (strcasecmp ("attr_key", results[(i * n_columns) + 1]) == 0) + ok_attr_key = 1; + if (strcasecmp ("attr_value", results[(i * n_columns) + 1]) == + 0) + ok_attr_value = 1; + } + if (ok_attr_id && ok_feature_id && ok_attr_key && ok_attr_value) + ok_data = 1; + } + sqlite3_free_table (results); + + if (ok_data) + return 1; + return 0; +} + +DXF_PRIVATE int +create_block_text_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt) +{ +/* creating the "Block-Text" insert statement */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("INSERT INTO \"%s\" (feature_id, filename, layer, block_id, label, rotation, geometry) " + "VALUES (NULL, ?, ?, ?, ?, ?, ?)", xname); + free (xname); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE STATEMENT %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + *xstmt = stmt; + return 1; +} + +static int +create_block_point_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt) +{ +/* creating the "Block-Point" insert statement */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("INSERT INTO \"%s\" (feature_id, filename, layer, block_id, geometry) " + "VALUES (NULL, ?, ?, ?, ?)", xname); + free (xname); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE STATEMENT %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + *xstmt = stmt; + return 1; +} + +static int +create_block_line_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt) +{ +/* creating the "Block-Line" insert statement */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("INSERT INTO \"%s\" (feature_id, filename, layer, block_id, geometry) " + "VALUES (NULL, ?, ?, ?, ?)", xname); + free (xname); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE STATEMENT %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + *xstmt = stmt; + return 1; +} + +static int +create_block_polyg_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt) +{ +/* creating the "Block-Polyg" insert statement */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("INSERT INTO \"%s\" (feature_id, filename, layer, block_id, geometry) " + "VALUES (NULL, ?, ?, ?, ?)", xname); + free (xname); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE STATEMENT %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + *xstmt = stmt; + return 1; +} + +static int +create_block_hatch_boundary_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt) +{ +/* creating the "Block-Hatch-Boundary" insert statement */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("INSERT INTO \"%s\" (feature_id, filename, layer, block_id, geometry) " + "VALUES (NULL, ?, ?, ?, ?)", xname); + free (xname); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE STATEMENT %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + *xstmt = stmt; + return 1; +} + +static int +create_block_hatch_pattern_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt) +{ +/* creating the "Block-Hatch-Pattern" insert statement */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xpattern; + char *pattern; + *xstmt = NULL; + + pattern = sqlite3_mprintf ("%s_pattern", name); + xpattern = gaiaDoubleQuotedSql (pattern); + sql = + sqlite3_mprintf + ("INSERT INTO \"%s\" (feature_id, filename, layer, block_id, geometry) " + "VALUES (?, ?, ?, ?, ?)", xpattern); + free (xpattern); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE STATEMENT %s error: %s\n", pattern, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (pattern); + *xstmt = stmt; + return 1; +} + +static int +check_block_text_table (sqlite3 * handle, const char *name, int srid, int is3D) +{ +/* checking if a Block-Text table already exists */ + char *sql; + int ok_geom = 0; + int ok_data = 0; + int ret; + int i; + char *xname; + char **results; + int n_rows; + int n_columns; + int metadata_version = checkSpatialMetaData (handle); + + if (metadata_version == 1) + { + /* legacy metadata style <= v.3.1.0 */ + int ok_srid = 0; + int ok_type = 0; + int dims2d = 0; + int dims3d = 0; + sql = sqlite3_mprintf ("SELECT srid, type, coord_dimension " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (strcmp ("POINT", results[(i * n_columns) + 1]) == 0) + ok_type = 1; + if (strcmp ("XY", results[(i * n_columns) + 2]) == 0) + dims2d = 1; + if (strcmp ("XYZ", results[(i * n_columns) + 2]) == 0) + dims3d = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + if (is3D && dims3d) + ok_geom = 1; + if (!is3D && dims2d) + ok_geom = 1; + } + } + else + { + /* current metadata style >= v.4.0.0 */ + int ok_srid = 0; + int ok_type = 0; + sql = sqlite3_mprintf ("SELECT srid, geometry_type " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (atoi (results[(i * n_columns) + 1]) == 1 && !is3D) + ok_type = 1; + if (atoi (results[(i * n_columns) + 1]) == 1001 && is3D) + ok_type = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + ok_geom = 1; + } + } + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + int ok_feature_id = 0; + int ok_filename = 0; + int ok_layer = 0; + int ok_block_id = 0; + int ok_label = 0; + int ok_rotation = 0; + for (i = 1; i <= n_rows; i++) + { + if (strcasecmp ("feature_id", results[(i * n_columns) + 1]) == + 0) + ok_feature_id = 1; + if (strcasecmp ("filename", results[(i * n_columns) + 1]) == 0) + ok_filename = 1; + if (strcasecmp ("layer", results[(i * n_columns) + 1]) == 0) + ok_layer = 1; + if (strcasecmp ("block_id", results[(i * n_columns) + 1]) == 0) + ok_block_id = 1; + if (strcasecmp ("label", results[(i * n_columns) + 1]) == 0) + ok_label = 1; + if (strcasecmp ("rotation", results[(i * n_columns) + 1]) == 0) + ok_rotation = 1; + } + if (ok_feature_id && ok_filename && ok_layer && ok_block_id + && ok_label && ok_rotation) + ok_data = 1; + } + sqlite3_free_table (results); + + if (ok_geom && ok_data) + return 1; + return 0; +} + +static int +has_viewgeom_rdonly (sqlite3 * handle) +{ +/* testing if "views_geometry_columns" has a "read_only" column */ + int has_rdonly = 0; + int ret; + int i; + char **results; + int n_rows; + int n_columns; + char *sql = "PRAGMA table_info(views_geometry_columns)"; + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (strcasecmp ("read_only", results[(i * n_columns) + 1]) == 0) + has_rdonly = 1; + } + } + sqlite3_free_table (results); + return has_rdonly; +} + +DXF_PRIVATE int +create_instext_table (sqlite3 * handle, const char *name, + const char *block, int is3d, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Insert-mixed-Text" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + char *idx_name; + char *xidx_name; + char *view; + char *xview; + char *xblock; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL,\n" + " block_id TEXT NOT NULL,\n" + " x DOUBLE NOT NULL,\n" + " y DOUBLE NOT NULL,\n" + " z DOUBLE NOT NULL,\n" + " scale_x DOUBLE NOT NULL,\n" + " scale_y DOUBLE NOT NULL,\n" + " scale_z DOUBLE NOT NULL,\n" + " angle DOUBLE NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (layer, block_id)", xidx_name, xname); + free (xidx_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + + view = sqlite3_mprintf ("%s_view", name); + xview = gaiaDoubleQuotedSql (view); + xname = gaiaDoubleQuotedSql (name); + xblock = gaiaDoubleQuotedSql (block); + if (is3d) + { + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT b.ROWID AS rowid, i.feature_id AS feature_id, " + "i.filename AS filename, i.layer AS layer, i.block_id AS block_id, " + "ST_Translate(ScaleCoords(RotateCoords(b.geometry, i.angle), " + "i.scale_x, i.scale_y), i.x, i.y, i.z) AS geometry " + "FROM \"%s\" AS i JOIN \"%s\" AS b ON " + "(b.layer = i.layer AND b.block_id = i.block_id)", + xview, xname, xblock); + } + else + { + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT b.ROWID AS rowid, i.feature_id AS feature_id, " + "i.filename AS filename, i.layer AS layer, i.block_id AS block_id, " + "ShiftCoords(ScaleCoords(RotateCoords(b.geometry, i.angle), " + "i.scale_x, i.scale_y), i.x, i.y) AS geometry " + "FROM \"%s\" AS i JOIN \"%s\" AS b ON " + "(b.layer = i.layer AND b.block_id = i.block_id)", + xview, xname, xblock); + } + free (xname); + free (xview); + free (xblock); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW %s error: %s\n", view, + sqlite3_errmsg (handle)); + return 0; + } + if (has_viewgeom_rdonly (handle)) + sql = sqlite3_mprintf ("INSERT INTO views_geometry_columns (" + "view_name, view_geometry, view_rowid, f_table_name, " + "f_geometry_column, read_only) VALUES (Lower(%Q), Lower(%Q), " + "Lower(%Q), Lower(%Q), Lower(%Q), 1)", view, + "geometry", "rowid", block, "geometry"); + else + sql = sqlite3_mprintf ("INSERT INTO views_geometry_columns (" + "view_name, view_geometry, view_rowid, f_table_name, " + "f_geometry_column) VALUES (Lower(%Q), Lower(%Q), " + "Lower(%Q), Lower(%Q), Lower(%Q))", view, + "geometry", "rowid", block, "geometry"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("Register Spatial VIEW %s error: %s\n", view, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (view); + + if (!create_insert_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +DXF_PRIVATE int +create_inspoint_table (sqlite3 * handle, const char *name, + const char *block, int is3d, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Insert-mixed-Point" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + char *idx_name; + char *xidx_name; + char *view; + char *xview; + char *xblock; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL,\n" + " block_id TEXT NOT NULL,\n" + " x DOUBLE NOT NULL,\n" + " y DOUBLE NOT NULL,\n" + " z DOUBLE NOT NULL,\n" + " scale_x DOUBLE NOT NULL,\n" + " scale_y DOUBLE NOT NULL,\n" + " scale_z DOUBLE NOT NULL,\n" + " angle DOUBLE NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (layer, block_id)", xidx_name, xname); + free (xidx_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + + view = sqlite3_mprintf ("%s_view", name); + xview = gaiaDoubleQuotedSql (view); + xname = gaiaDoubleQuotedSql (name); + xblock = gaiaDoubleQuotedSql (block); + if (is3d) + { + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT b.ROWID AS rowid, i.feature_id AS feature_id, " + "i.filename AS filename, i.layer AS layer, i.block_id AS block_id, " + "ST_Translate(ScaleCoords(RotateCoords(b.geometry, i.angle), " + "i.scale_x, i.scale_y), i.x, i.y, i.z) AS geometry " + "FROM \"%s\" AS i JOIN \"%s\" AS b ON " + "(b.layer = i.layer AND b.block_id = i.block_id)", + xview, xname, xblock); + } + else + { + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT b.ROWID as rowid, i.feature_id AS feature_id, " + "i.filename AS filename, i.layer AS layer, i.block_id AS block_id, " + "ShiftCoords(ScaleCoords(RotateCoords(b.geometry, i.angle), " + "i.scale_x, i.scale_y), i.x, i.y) AS geometry " + "FROM \"%s\" AS i JOIN \"%s\" AS b ON " + "(b.layer = i.layer AND b.block_id = i.block_id)", + xview, xname, xblock); + } + free (xname); + free (xview); + free (xblock); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW %s error: %s\n", view, + sqlite3_errmsg (handle)); + return 0; + } + if (has_viewgeom_rdonly (handle)) + sql = sqlite3_mprintf ("INSERT INTO views_geometry_columns (" + "view_name, view_geometry, view_rowid, f_table_name, " + "f_geometry_column, read_only) VALUES (Lower(%Q), Lower(%Q), " + "Lower(%Q), Lower(%Q), Lower(%Q), 1)", view, + "geometry", "rowid", block, "geometry"); + else + sql = sqlite3_mprintf ("INSERT INTO views_geometry_columns (" + "view_name, view_geometry, view_rowid, f_table_name, " + "f_geometry_column) VALUES (Lower(%Q), Lower(%Q), " + "Lower(%Q), Lower(%Q), Lower(%Q))", view, + "geometry", "rowid", block, "geometry"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("Register Spatial VIEW %s error: %s\n", view, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (view); + + if (!create_insert_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +DXF_PRIVATE int +create_insline_table (sqlite3 * handle, const char *name, + const char *block, int is3d, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Insert-mixed-Line" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + char *idx_name; + char *xidx_name; + char *view; + char *xview; + char *xblock; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL,\n" + " block_id TEXT NOT NULL,\n" + " x DOUBLE NOT NULL,\n" + " y DOUBLE NOT NULL,\n" + " z DOUBLE NOT NULL,\n" + " scale_x DOUBLE NOT NULL,\n" + " scale_y DOUBLE NOT NULL,\n" + " scale_z DOUBLE NOT NULL,\n" + " angle DOUBLE NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (layer, block_id)", xidx_name, xname); + free (xidx_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + + view = sqlite3_mprintf ("%s_view", name); + xview = gaiaDoubleQuotedSql (view); + xname = gaiaDoubleQuotedSql (name); + xblock = gaiaDoubleQuotedSql (block); + if (is3d) + { + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT b.ROWID AS rowid, i.feature_id AS feature_id, " + "i.filename AS filename, i.layer AS layer, i.block_id AS block_id, " + "ST_Translate(ScaleCoords(RotateCoords(b.geometry, i.angle), " + "i.scale_x, i.scale_y), i.x, i.y, i.z) AS geometry " + "FROM \"%s\" AS i JOIN \"%s\" AS b ON " + "(b.layer = i.layer AND b.block_id = i.block_id)", + xview, xname, xblock); + } + else + { + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT b.ROWID AS rowid, i.feature_id AS feature_id, " + "i.filename AS filename, i.layer AS layer, i.block_id AS block_id, " + "ShiftCoords(ScaleCoords(RotateCoords(b.geometry, i.angle), " + "i.scale_x, i.scale_y), i.x, i.y) AS geometry " + "FROM \"%s\" AS i JOIN \"%s\" AS b ON " + "(b.layer = i.layer AND b.block_id = i.block_id)", + xview, xname, xblock); + } + free (xname); + free (xview); + free (xblock); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW %s error: %s\n", view, + sqlite3_errmsg (handle)); + return 0; + } + if (has_viewgeom_rdonly (handle)) + sql = sqlite3_mprintf ("INSERT INTO views_geometry_columns (" + "view_name, view_geometry, view_rowid, f_table_name, " + "f_geometry_column, read_only) VALUES (Lower(%Q), Lower(%Q), " + "Lower(%Q), Lower(%Q), Lower(%Q), 1)", view, + "geometry", "rowid", block, "geometry"); + else + sql = sqlite3_mprintf ("INSERT INTO views_geometry_columns (" + "view_name, view_geometry, view_rowid, f_table_name, " + "f_geometry_column) VALUES (Lower(%Q), Lower(%Q), " + "Lower(%Q), Lower(%Q), Lower(%Q))", view, + "geometry", "rowid", block, "geometry"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("Register Spatial VIEW %s error: %s\n", view, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (view); + + if (!create_insert_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +DXF_PRIVATE int +create_inspolyg_table (sqlite3 * handle, const char *name, + const char *block, int is3d, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Insert-mixed-Polyg" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + char *idx_name; + char *xidx_name; + char *view; + char *xview; + char *xblock; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL,\n" + " block_id TEXT NOT NULL,\n" + " x DOUBLE NOT NULL,\n" + " y DOUBLE NOT NULL,\n" + " z DOUBLE NOT NULL,\n" + " scale_x DOUBLE NOT NULL,\n" + " scale_y DOUBLE NOT NULL,\n" + " scale_z DOUBLE NOT NULL,\n" + " angle DOUBLE NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (layer, block_id)", xidx_name, xname); + free (xidx_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + + view = sqlite3_mprintf ("%s_view", name); + xview = gaiaDoubleQuotedSql (view); + xname = gaiaDoubleQuotedSql (name); + xblock = gaiaDoubleQuotedSql (block); + if (is3d) + { + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT b.ROWID AS rowid, i.feature_id AS feature_id, " + "i.filename AS filename, i.layer AS layer, i.block_id AS block_id, " + "ST_Translate(ScaleCoords(RotateCoords(b.geometry, i.angle), " + "i.scale_x, i.scale_y), i.x, i.y, i.z) AS geometry " + "FROM \"%s\" AS i JOIN \"%s\" AS b ON " + "(b.layer = i.layer AND b.block_id = i.block_id)", + xview, xname, xblock); + } + else + { + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT b.ROWID AS rowid, i.feature_id AS feature_id, " + "i.filename AS filename, i.layer AS layer, i.block_id AS block_id, " + "ShiftCoords(ScaleCoords(RotateCoords(b.geometry, i.angle), " + "i.scale_x, i.scale_y), i.x, i.y) AS geometry " + "FROM \"%s\" AS i JOIN \"%s\" AS b ON " + "(b.layer = i.layer AND b.block_id = i.block_id)", + xview, xname, xblock); + } + free (xname); + free (xview); + free (xblock); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW %s error: %s\n", view, + sqlite3_errmsg (handle)); + return 0; + } + if (has_viewgeom_rdonly (handle)) + sql = sqlite3_mprintf ("INSERT INTO views_geometry_columns (" + "view_name, view_geometry, view_rowid, f_table_name, " + "f_geometry_column, read_only) VALUES (Lower(%Q), Lower(%Q), " + "Lower(%Q), Lower(%Q), Lower(%Q), 1)", view, + "geometry", "rowid", block, "geometry"); + else + sql = sqlite3_mprintf ("INSERT INTO views_geometry_columns (" + "view_name, view_geometry, view_rowid, f_table_name, " + "f_geometry_column) VALUES (Lower(%Q), Lower(%Q), " + "Lower(%Q), Lower(%Q), Lower(%Q))", view, + "geometry", "rowid", block, "geometry"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("Register Spatial VIEW %s error: %s\n", view, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (view); + + if (!create_insert_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +DXF_PRIVATE int +create_inshatch_table (sqlite3 * handle, const char *name, + const char *block, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Insert-mixed-Hatch" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + char *idx_name; + char *xidx_name; + char *view; + char *xview; + char *xblock; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL,\n" + " block_id TEXT NOT NULL,\n" + " x DOUBLE NOT NULL,\n" + " y DOUBLE NOT NULL,\n" + " z DOUBLE NOT NULL,\n" + " scale_x DOUBLE NOT NULL,\n" + " scale_y DOUBLE NOT NULL,\n" + " scale_z DOUBLE NOT NULL,\n" + " angle DOUBLE NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (layer, block_id)", xidx_name, xname); + free (xidx_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + + view = sqlite3_mprintf ("%s_view", name); + xview = gaiaDoubleQuotedSql (view); + xname = gaiaDoubleQuotedSql (name); + xblock = gaiaDoubleQuotedSql (block); + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT b.ROWID AS rowid, i.feature_id AS feature_id, " + "i.filename AS filename, i.layer AS layer, i.block_id AS block_id, " + "ShiftCoords(ScaleCoords(RotateCoords(b.geometry, i.angle), " + "i.scale_x, i.scale_y), i.x, i.y) AS geometry " + "FROM \"%s\" AS i JOIN \"%s\" AS b ON " + "(b.layer = i.layer AND b.block_id = i.block_id)", + xview, xname, xblock); + free (xname); + free (xview); + free (xblock); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW %s error: %s\n", view, + sqlite3_errmsg (handle)); + return 0; + } + if (has_viewgeom_rdonly (handle)) + sql = sqlite3_mprintf ("INSERT INTO views_geometry_columns (" + "view_name, view_geometry, view_rowid, f_table_name, " + "f_geometry_column, read_only) VALUES (Lower(%Q), Lower(%Q), " + "Lower(%Q), Lower(%Q), Lower(%Q), 1)", view, + "geometry", "rowid", block, "geometry"); + else + sql = sqlite3_mprintf ("INSERT INTO views_geometry_columns (" + "view_name, view_geometry, view_rowid, f_table_name, " + "f_geometry_column) VALUES (Lower(%Q), Lower(%Q), " + "Lower(%Q), Lower(%Q), Lower(%Q))", view, + "geometry", "rowid", block, "geometry"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("Register Spatial VIEW %s error: %s\n", view, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (view); + + if (!create_insert_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +DXF_PRIVATE int +create_insert_extra_attr_table (sqlite3 * handle, const char *name, + char *extra_name, sqlite3_stmt ** xstmt_ext) +{ +/* attempting to create the "Insert-mixed-extra-attr" table */ + char *sql; + int ret; + sqlite3_stmt *stmt_ext; + char *xname; + char *xextra_name; + char *fk_name; + char *xfk_name; + char *idx_name; + char *xidx_name; + char *view_name; + char *xview_name; + *xstmt_ext = NULL; + + fk_name = sqlite3_mprintf ("fk_%s", extra_name); + xextra_name = gaiaDoubleQuotedSql (extra_name); + xfk_name = gaiaDoubleQuotedSql (fk_name); + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " attr_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " feature_id INTEGER NOT NULL,\n" + " attr_key TEXT NOT NULL,\n" + " attr_value TEXT NOT NULL,\n" + " CONSTRAINT \"%s\" FOREIGN KEY (feature_id) " + "REFERENCES \"%s\" (feature_id))", + xextra_name, xfk_name, xname); + free (xextra_name); + free (xfk_name); + free (xname); + sqlite3_free (fk_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", extra_name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", extra_name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xextra_name = gaiaDoubleQuotedSql (extra_name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (feature_id)", xidx_name, xextra_name); + free (xidx_name); + free (xextra_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + view_name = sqlite3_mprintf ("%s_view", name); + xview_name = gaiaDoubleQuotedSql (view_name); + xname = gaiaDoubleQuotedSql (name); + xextra_name = gaiaDoubleQuotedSql (extra_name); + sql = sqlite3_mprintf ("CREATE VIEW \"%s\" AS " + "SELECT f.feature_id AS feature_id, f.filename AS filename, " + "f.layer AS layer, f.x AS x, f.y AS y, f.z AS z, f.scale_x AS scale_x, " + "f.scale_y AS scale_y, f.scale_z AS scale_z, f.angle AS angle, " + "a.attr_id AS attr_id, a.attr_key AS attr_key, a.attr_value AS attr_value " + "FROM \"%s\" AS f " + "LEFT JOIN \"%s\" AS a ON (f.feature_id = a.feature_id)", + xview_name, xname, xextra_name); + free (xview_name); + free (xname); + free (xextra_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW %s error: %s\n", view_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (view_name); + if (!create_extra_stmt (handle, extra_name, &stmt_ext)) + return 0; + + *xstmt_ext = stmt_ext; + return 1; +} + +static int +check_block_point_table (sqlite3 * handle, const char *name, int srid, int is3D) +{ +/* checking if a Block-Point table already exists */ + char *sql; + int ok_geom = 0; + int ok_data = 0; + int ret; + int i; + char *xname; + char **results; + int n_rows; + int n_columns; + int metadata_version = checkSpatialMetaData (handle); + + if (metadata_version == 1) + { + /* legacy metadata style <= v.3.1.0 */ + int ok_srid = 0; + int ok_type = 0; + int dims2d = 0; + int dims3d = 0; + sql = sqlite3_mprintf ("SELECT srid, type, coord_dimension " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (strcmp ("POINT", results[(i * n_columns) + 1]) == 0) + ok_type = 1; + if (strcmp ("XY", results[(i * n_columns) + 2]) == 0) + dims2d = 1; + if (strcmp ("XYZ", results[(i * n_columns) + 2]) == 0) + dims3d = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + if (is3D && dims3d) + ok_geom = 1; + if (!is3D && dims2d) + ok_geom = 1; + } + } + else + { + /* current metadata style >= v.4.0.0 */ + int ok_srid = 0; + int ok_type = 0; + sql = sqlite3_mprintf ("SELECT srid, geometry_type " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (atoi (results[(i * n_columns) + 1]) == 1 && !is3D) + ok_type = 1; + if (atoi (results[(i * n_columns) + 1]) == 1001 && is3D) + ok_type = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + ok_geom = 1; + } + } + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + int ok_feature_id = 0; + int ok_filename = 0; + int ok_layer = 0; + int ok_block_id = 0; + for (i = 1; i <= n_rows; i++) + { + if (strcasecmp ("feature_id", results[(i * n_columns) + 1]) == + 0) + ok_feature_id = 1; + if (strcasecmp ("filename", results[(i * n_columns) + 1]) == 0) + ok_filename = 1; + if (strcasecmp ("layer", results[(i * n_columns) + 1]) == 0) + ok_layer = 1; + if (strcasecmp ("block_id", results[(i * n_columns) + 1]) == 0) + ok_block_id = 1; + } + if (ok_feature_id && ok_filename && ok_layer && ok_block_id) + ok_data = 1; + } + sqlite3_free_table (results); + + if (ok_geom && ok_data) + return 1; + return 0; +} + +static int +check_block_line_table (sqlite3 * handle, const char *name, int srid, int is3D) +{ +/* checking if a Block-Line table already exists */ + char *sql; + int ok_geom = 0; + int ok_data = 0; + int ret; + int i; + char *xname; + char **results; + int n_rows; + int n_columns; + int metadata_version = checkSpatialMetaData (handle); + + if (metadata_version == 1) + { + /* legacy metadata style <= v.3.1.0 */ + int ok_srid = 0; + int ok_type = 0; + int dims2d = 0; + int dims3d = 0; + sql = sqlite3_mprintf ("SELECT srid, type, coord_dimension " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (strcmp ("LINESTRING", results[(i * n_columns) + 1]) == + 0) + ok_type = 1; + if (strcmp ("XY", results[(i * n_columns) + 2]) == 0) + dims2d = 1; + if (strcmp ("XYZ", results[(i * n_columns) + 2]) == 0) + dims3d = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + if (is3D && dims3d) + ok_geom = 1; + if (!is3D && dims2d) + ok_geom = 1; + } + } + else + { + /* current metadata style >= v.4.0.0 */ + int ok_srid = 0; + int ok_type = 0; + sql = sqlite3_mprintf ("SELECT srid, geometry_type " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (atoi (results[(i * n_columns) + 1]) == 2 && !is3D) + ok_type = 1; + if (atoi (results[(i * n_columns) + 1]) == 1002 && is3D) + ok_type = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + ok_geom = 1; + } + } + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + int ok_feature_id = 0; + int ok_filename = 0; + int ok_layer = 0; + int ok_block_id = 0; + for (i = 1; i <= n_rows; i++) + { + if (strcasecmp ("feature_id", results[(i * n_columns) + 1]) == + 0) + ok_feature_id = 1; + if (strcasecmp ("filename", results[(i * n_columns) + 1]) == 0) + ok_filename = 1; + if (strcasecmp ("layer", results[(i * n_columns) + 1]) == 0) + ok_layer = 1; + if (strcasecmp ("block_id", results[(i * n_columns) + 1]) == 0) + ok_block_id = 1; + } + if (ok_feature_id && ok_filename && ok_layer && ok_block_id) + ok_data = 1; + } + sqlite3_free_table (results); + + if (ok_geom && ok_data) + return 1; + return 0; +} + +static int +check_block_polyg_table (sqlite3 * handle, const char *name, int srid, int is3D) +{ +/* checking if a Block-Polygon table already exists */ + char *sql; + int ok_geom = 0; + int ok_data = 0; + int ret; + int i; + char *xname; + char **results; + int n_rows; + int n_columns; + int metadata_version = checkSpatialMetaData (handle); + + if (metadata_version == 1) + { + /* legacy metadata style <= v.3.1.0 */ + int ok_srid = 0; + int ok_type = 0; + int dims2d = 0; + int dims3d = 0; + sql = sqlite3_mprintf ("SELECT srid, type, coord_dimension " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (strcmp ("POLYGON", results[(i * n_columns) + 1]) == 0) + ok_type = 1; + if (strcmp ("XY", results[(i * n_columns) + 2]) == 0) + dims2d = 1; + if (strcmp ("XYZ", results[(i * n_columns) + 2]) == 0) + dims3d = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + if (is3D && dims3d) + ok_geom = 1; + if (!is3D && dims2d) + ok_geom = 1; + } + } + else + { + /* current metadata style >= v.4.0.0 */ + int ok_srid = 0; + int ok_type = 0; + sql = sqlite3_mprintf ("SELECT srid, geometry_type " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_srid = 1; + if (atoi (results[(i * n_columns) + 1]) == 3 && !is3D) + ok_type = 1; + if (atoi (results[(i * n_columns) + 1]) == 1003 && is3D) + ok_type = 1; + } + } + sqlite3_free_table (results); + if (ok_srid && ok_type) + { + ok_geom = 1; + } + } + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (n_rows > 0) + { + int ok_feature_id = 0; + int ok_filename = 0; + int ok_layer = 0; + int ok_block_id = 0; + for (i = 1; i <= n_rows; i++) + { + if (strcasecmp ("feature_id", results[(i * n_columns) + 1]) == + 0) + ok_feature_id = 1; + if (strcasecmp ("filename", results[(i * n_columns) + 1]) == 0) + ok_filename = 1; + if (strcasecmp ("layer", results[(i * n_columns) + 1]) == 0) + ok_layer = 1; + if (strcasecmp ("block_id", results[(i * n_columns) + 1]) == 0) + ok_block_id = 1; + } + if (ok_feature_id && ok_filename && ok_layer && ok_block_id) + ok_data = 1; + } + sqlite3_free_table (results); + + if (ok_geom && ok_data) + return 1; + return 0; +} + +static int +check_block_hatch_tables (sqlite3 * handle, const char *name, int srid) +{ +/* checking if Block-Hatch tables already exist */ + char *sql; + int ok_geom = 0; + int ok_pdata = 0; + int ok_bdata = 0; + int ret; + int i; + char *xname; + char *pattern = sqlite3_mprintf ("%s_pattern", name); + char *xpattern; + char **results; + int n_rows; + int n_columns; + int metadata_version = checkSpatialMetaData (handle); + + if (metadata_version == 1) + { + /* legacy metadata style <= v.3.1.0 */ + int ok_bsrid = 0; + int ok_btype = 0; + int bdims2d = 0; + int ok_psrid = 0; + int ok_ptype = 0; + int pdims2d = 0; + sql = + sqlite3_mprintf + ("SELECT srid, type, coord_dimension " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_bsrid = 1; + if (strcmp + ("MULTIPOLYGON", results[(i * n_columns) + 1]) == 0) + ok_btype = 1; + if (strcmp ("XY", results[(i * n_columns) + 2]) == 0) + bdims2d = 1; + } + } + sqlite3_free_table (results); + sql = + sqlite3_mprintf + ("SELECT srid, type, coord_dimension " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", pattern, "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_psrid = 1; + if (strcmp + ("MULTILINESTRING", + results[(i * n_columns) + 1]) == 0) + ok_ptype = 1; + if (strcmp ("XY", results[(i * n_columns) + 2]) == 0) + pdims2d = 1; + } + } + sqlite3_free_table (results); + if (ok_bsrid && ok_btype && bdims2d && ok_psrid && ok_ptype + && pdims2d) + ok_geom = 1; + } + else + { + /* current metadata style >= v.4.0.0 */ + int ok_psrid = 0; + int ok_ptype = 0; + int ok_bsrid = 0; + int ok_btype = 0; + sql = + sqlite3_mprintf ("SELECT srid, geometry_type " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", name, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_bsrid = 1; + if (atoi (results[(i * n_columns) + 1]) == 6) + ok_btype = 1; + } + } + sqlite3_free_table (results); + sql = + sqlite3_mprintf ("SELECT srid, geometry_type " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", pattern, + "geometry"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + if (atoi (results[(i * n_columns) + 0]) == srid) + ok_psrid = 1; + if (atoi (results[(i * n_columns) + 1]) == 5) + ok_ptype = 1; + } + } + sqlite3_free_table (results); + if (ok_bsrid && ok_btype && ok_psrid && ok_ptype) + ok_geom = 1; + } + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + if (n_rows > 0) + { + int ok_feature_id = 0; + int ok_filename = 0; + int ok_layer = 0; + int ok_block_id = 0; + for (i = 1; i <= n_rows; i++) + { + if (strcasecmp ("feature_id", results[(i * n_columns) + 1]) == + 0) + ok_feature_id = 1; + if (strcasecmp ("filename", results[(i * n_columns) + 1]) == 0) + ok_filename = 1; + if (strcasecmp ("layer", results[(i * n_columns) + 1]) == 0) + ok_layer = 1; + if (strcasecmp ("block_id", results[(i * n_columns) + 1]) == 0) + ok_block_id = 1; + } + if (ok_feature_id && ok_filename && ok_layer && ok_block_id) + ok_bdata = 1; + } + sqlite3_free_table (results); + + xpattern = gaiaDoubleQuotedSql (pattern); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xpattern); + free (xpattern); + ret = sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + if (n_rows > 0) + { + int ok_feature_id = 0; + int ok_filename = 0; + int ok_layer = 0; + int ok_block_id = 0; + for (i = 1; i <= n_rows; i++) + { + if (strcasecmp ("feature_id", results[(i * n_columns) + 1]) == + 0) + ok_feature_id = 1; + if (strcasecmp ("filename", results[(i * n_columns) + 1]) == 0) + ok_filename = 1; + if (strcasecmp ("layer", results[(i * n_columns) + 1]) == 0) + ok_layer = 1; + if (strcasecmp ("block_id", results[(i * n_columns) + 1]) == 0) + ok_block_id = 1; + } + if (ok_feature_id && ok_filename && ok_layer && ok_block_id) + ok_pdata = 1; + } + sqlite3_free_table (results); + + if (ok_geom && ok_bdata && ok_pdata) + { + sqlite3_free (pattern); + return 1; + } + stop: + sqlite3_free (pattern); + return 0; +} + +static int +create_block_text_table (sqlite3 * handle, const char *name, int srid, + int text3D, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Block-Text" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + char *idx_name; + char *xidx_name; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL,\n" + " block_id TEXT NOT NULL,\n" + " label TEXT NOT NULL,\n" + " rotation DOUBLE NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (layer, block_id)", xidx_name, xname); + free (xidx_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + sql = + sqlite3_mprintf + ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'POINT', %Q)", name, srid, text3D ? "XYZ" : "XY"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + if (!create_block_text_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +static int +create_block_point_table (sqlite3 * handle, const char *name, int srid, + int point3D, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Block-Point" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + char *idx_name; + char *xidx_name; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL,\n" + " block_id TEXT NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (layer, block_id)", xidx_name, xname); + free (xidx_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + sql = + sqlite3_mprintf + ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'POINT', %Q)", name, srid, point3D ? "XYZ" : "XY"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + if (!create_block_point_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +static int +create_block_line_table (sqlite3 * handle, const char *name, int srid, + int line3D, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Block-Line" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + char *idx_name; + char *xidx_name; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL,\n" + " block_id TEXT NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (layer, block_id)", xidx_name, xname); + free (xidx_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + sql = + sqlite3_mprintf + ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'LINESTRING', %Q)", name, srid, line3D ? "XYZ" : "XY"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + if (!create_block_line_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +static int +create_block_polyg_table (sqlite3 * handle, const char *name, int srid, + int polyg3D, sqlite3_stmt ** xstmt) +{ +/* attempting to create the "Block-Polyg" table */ + char *sql; + int ret; + sqlite3_stmt *stmt; + char *xname; + char *idx_name; + char *xidx_name; + *xstmt = NULL; + + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL,\n" + " block_id TEXT NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (layer, block_id)", xidx_name, xname); + free (xidx_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + sql = + sqlite3_mprintf + ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'POLYGON', %Q)", name, srid, polyg3D ? "XYZ" : "XY"); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + if (!create_block_polyg_stmt (handle, name, &stmt)) + return 0; + + *xstmt = stmt; + return 1; +} + +static int +create_block_hatch_tables (sqlite3 * handle, const char *name, int srid, + sqlite3_stmt ** xstmt, sqlite3_stmt ** xstmt2) +{ +/* attempting to create the "Block-Hatch" tables */ + char *sql; + int ret; + sqlite3_stmt *stmt; + sqlite3_stmt *stmt2; + char *xname; + char *pattern; + char *xpattern; + char *fk_name; + char *xfk_name; + char *idx_name; + char *xidx_name; + *xstmt = NULL; + *xstmt2 = NULL; + +/* creating the Block-Hatch-Boundary table */ + xname = gaiaDoubleQuotedSql (name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL,\n" + " block_id TEXT NOT NULL)", xname); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", name); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (layer, block_id)", xidx_name, xname); + free (xidx_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + sql = + sqlite3_mprintf + ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'MULTIPOLYGON', 'XY')", name, srid); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", name); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", name, + sqlite3_errmsg (handle)); + return 0; + } + +/* creating the Block-Hatch-Pattern table */ + xname = gaiaDoubleQuotedSql (name); + pattern = sqlite3_mprintf ("%s_pattern", name); + xpattern = gaiaDoubleQuotedSql (pattern); + fk_name = sqlite3_mprintf ("fk_%s_pattern", name); + xfk_name = gaiaDoubleQuotedSql (fk_name); + sqlite3_free (fk_name); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (" + " feature_id INTEGER PRIMARY KEY NOT NULL,\n" + " filename TEXT NOT NULL, \n" + " layer TEXT NOT NULL,\n" + " block_id TEXT NOT NULL,\n" + " CONSTRAINT \"%s\" FOREIGN KEY (feature_id) " + " REFERENCES \"%s\" (feature_id))", xpattern, + xfk_name, xname); + free (xname); + free (xfk_name); + free (xpattern); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE %s error: %s\n", pattern, + sqlite3_errmsg (handle)); + return 0; + } + idx_name = sqlite3_mprintf ("idx_%s", pattern); + xidx_name = gaiaDoubleQuotedSql (idx_name); + xname = gaiaDoubleQuotedSql (name); + sql = + sqlite3_mprintf + ("CREATE INDEX \"%s\" ON \"%s\" (layer, block_id)", xidx_name, xname); + free (xidx_name); + free (xname); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX %s error: %s\n", idx_name, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (idx_name); + sql = + sqlite3_mprintf + ("SELECT AddGeometryColumn(%Q, 'geometry', " + "%d, 'MULTILINESTRING', 'XY')", pattern, srid); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("ADD GEOMETRY %s error: %s\n", pattern, + sqlite3_errmsg (handle)); + return 0; + } + sql = + sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'geometry')", pattern); + ret = sqlite3_exec (handle, sql, NULL, NULL, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE SPATIAL INDEX %s error: %s\n", pattern, + sqlite3_errmsg (handle)); + return 0; + } + sqlite3_free (pattern); + if (!create_block_hatch_boundary_stmt (handle, name, &stmt)) + return 0; + if (!create_block_hatch_pattern_stmt (handle, name, &stmt2)) + return 0; + + *xstmt = stmt; + *xstmt2 = stmt2; + return 1; +} + +DXF_PRIVATE int +check_unclosed_polyg (gaiaDxfPolylinePtr pg, int is3d) +{ +/* checking for unclosed Rings (exterior) */ + int last = pg->points - 1; + if (is3d) + { + if (*(pg->x + 0) == *(pg->x + last) && *(pg->y + 0) == *(pg->y + last) + && *(pg->z + 0) == *(pg->z + last)) + return 0; + } + else + { + if (*(pg->x + 0) == *(pg->x + last) + && *(pg->y + 0) == *(pg->y + last)) + return 0; + } + return 1; +} + +DXF_PRIVATE int +check_unclosed_hole (gaiaDxfHolePtr hole, int is3d) +{ +/* checking for unclosed Rings (interior) */ + int last = hole->points - 1; + if (is3d) + { + if (*(hole->x + 0) == *(hole->x + last) + && *(hole->y + 0) == *(hole->y + last) + && *(hole->z + 0) == *(hole->z + last)) + return 0; + } + else + { + if (*(hole->x + 0) == *(hole->x + last) + && *(hole->y + 0) == *(hole->y + last)) + return 0; + } + return 1; +} + +static int +import_blocks (sqlite3 * handle, gaiaDxfParserPtr dxf, int append) +{ +/* populating the target DB - importing BLOCK geometries */ + gaiaDxfTextPtr txt; + gaiaDxfPointPtr pt; + gaiaDxfPolylinePtr ln; + gaiaDxfPolylinePtr pg; + gaiaDxfHatchPtr htc; + int ret; + unsigned char *blob; + int blob_size; + gaiaGeomCollPtr geom; + int error = 0; + char *name; + sqlite3_stmt *stmt; + sqlite3_stmt *stmt_text_2d = NULL; + sqlite3_stmt *stmt_text_3d = NULL; + sqlite3_stmt *stmt_point_2d = NULL; + sqlite3_stmt *stmt_point_3d = NULL; + sqlite3_stmt *stmt_line_2d = NULL; + sqlite3_stmt *stmt_line_3d = NULL; + sqlite3_stmt *stmt_polyg_2d = NULL; + sqlite3_stmt *stmt_polyg_3d = NULL; + sqlite3_stmt *stmt_hatch_boundary = NULL; + sqlite3_stmt *stmt_hatch_pattern = NULL; + int text = 0; + int point = 0; + int line = 0; + int polyg = 0; + int hatch = 0; + int text2D = 0; + int point2D = 0; + int line2D = 0; + int polyg2D = 0; + int text3D = 0; + int point3D = 0; + int line3D = 0; + int polyg3D = 0; + int iv; + gaiaDxfHolePtr hole; + int num_holes; + gaiaLinestringPtr p_ln; + gaiaPolygonPtr p_pg; + gaiaRingPtr p_rng; + sqlite3_int64 feature_id; + gaiaDxfHatchSegmPtr segm; + + gaiaDxfBlockPtr blk = dxf->first_block; + while (blk != NULL) + { + /* exploring Blocks by type */ + if (blk->hasInsert == 0) + { + blk = blk->next; + continue; + } + if (blk->first_text != NULL) + { + text = 1; + if (blk->is3Dtext) + text3D = 1; + else + text2D = 1; + } + if (blk->first_point != NULL) + { + point = 1; + if (blk->is3Dpoint) + point3D = 1; + else + point2D = 1; + } + if (blk->first_line != NULL) + { + line = 1; + if (blk->is3Dline) + line3D = 1; + else + line2D = 1; + } + if (blk->first_polyg != NULL) + { + polyg = 1; + if (blk->is3Dpolyg) + polyg3D = 1; + else + polyg2D = 1; + } + if (blk->first_hatch != NULL) + hatch = 1; + blk = blk->next; + } + + if (text && text2D) + { + /* preparing to insert into the Block Text 2D table */ + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("block_text_2d"); + else + name = sqlite3_mprintf ("%sblock_text_2d", dxf->prefix); + if (append && check_block_text_table (handle, name, dxf->srid, 0)) + { + /* appending into the already existing table */ + if (!create_block_text_stmt (handle, name, &stmt_text_2d)) + return 0; + } + else + { + /* creating a new table */ + if (!create_block_text_table + (handle, name, dxf->srid, 0, &stmt_text_2d)) + return 0; + } + sqlite3_free (name); + } + if (text && text3D) + { + /* preparing to insert into the Block Text 3D table */ + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("block_text_3d"); + else + name = sqlite3_mprintf ("%sblock_text_3d", dxf->prefix); + if (append && check_block_text_table (handle, name, dxf->srid, 1)) + { + /* appending into the already existing table */ + if (!create_block_text_stmt (handle, name, &stmt_text_3d)) + return 0; + } + else + { + /* creating a new table */ + if (!create_block_text_table + (handle, name, dxf->srid, 1, &stmt_text_3d)) + return 0; + } + sqlite3_free (name); + } + if (point && point2D) + { + /* preparing to insert into the Block Point 2D table */ + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("block_point_2d"); + else + name = sqlite3_mprintf ("%sblock_point_2d", dxf->prefix); + if (append && check_block_point_table (handle, name, dxf->srid, 0)) + { + /* appending into the already existing table */ + if (!create_block_point_stmt (handle, name, &stmt_point_2d)) + return 0; + } + else + { + /* creating a new table */ + if (!create_block_point_table + (handle, name, dxf->srid, 0, &stmt_point_2d)) + return 0; + } + sqlite3_free (name); + } + if (point && point3D) + { + /* preparing to insert into the Block Point 3D table */ + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("block_point_3d"); + else + name = sqlite3_mprintf ("%sblock_point_3d", dxf->prefix); + if (append && check_block_point_table (handle, name, dxf->srid, 1)) + { + /* appending into the already existing table */ + if (!create_block_point_stmt (handle, name, &stmt_point_3d)) + return 0; + } + else + { + /* creating a new table */ + if (!create_block_point_table + (handle, name, dxf->srid, 1, &stmt_point_3d)) + return 0; + } + sqlite3_free (name); + } + if (line && line2D) + { + /* preparing to insert into the Block Line 2D table */ + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("block_line_2d"); + else + name = sqlite3_mprintf ("%sblock_line_2d", dxf->prefix); + if (append && check_block_line_table (handle, name, dxf->srid, 0)) + { + /* appending into the already existing table */ + if (!create_block_line_stmt (handle, name, &stmt_line_2d)) + return 0; + } + else + { + /* creating a new table */ + if (!create_block_line_table + (handle, name, dxf->srid, 0, &stmt_line_2d)) + return 0; + } + sqlite3_free (name); + } + if (line && line3D) + { + /* preparing to insert into the Block Line 3D table */ + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("block_line_3d"); + else + name = sqlite3_mprintf ("%sblock_line_3d", dxf->prefix); + if (append && check_block_line_table (handle, name, dxf->srid, 1)) + { + /* appending into the already existing table */ + if (!create_block_line_stmt (handle, name, &stmt_line_3d)) + return 0; + } + else + { + /* creating a new table */ + if (!create_block_line_table + (handle, name, dxf->srid, 1, &stmt_line_3d)) + return 0; + } + sqlite3_free (name); + } + if (polyg && polyg2D) + { + /* preparing to insert into the Block Polyg 2D table */ + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("block_polyg_2d"); + else + name = sqlite3_mprintf ("%sblock_polyg_2d", dxf->prefix); + if (append && check_block_polyg_table (handle, name, dxf->srid, 0)) + { + /* appending into the already existing table */ + if (!create_block_polyg_stmt (handle, name, &stmt_polyg_2d)) + return 0; + } + else + { + /* creating a new table */ + if (!create_block_polyg_table + (handle, name, dxf->srid, 0, &stmt_polyg_2d)) + return 0; + } + sqlite3_free (name); + } + if (polyg && polyg3D) + { + /* preparing to insert into the Block Polyg 3D table */ + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("block_polyg_3d"); + else + name = sqlite3_mprintf ("%sblock_polyg_3d", dxf->prefix); + if (append && check_block_polyg_table (handle, name, dxf->srid, 1)) + { + /* appending into the already existing table */ + if (!create_block_polyg_stmt (handle, name, &stmt_polyg_3d)) + return 0; + } + else + { + /* creating a new table */ + if (!create_block_polyg_table + (handle, name, dxf->srid, 1, &stmt_polyg_3d)) + return 0; + } + sqlite3_free (name); + } + if (hatch) + { + /* preparing to insert into the Block Hatch table */ + if (dxf->prefix == NULL) + name = sqlite3_mprintf ("block_hatch_2d"); + else + name = sqlite3_mprintf ("%sblock_hatch_2d", dxf->prefix); + if (append && check_block_hatch_tables (handle, name, dxf->srid)) + { + /* appending into the already existing table */ + if (!create_block_hatch_boundary_stmt + (handle, name, &stmt_hatch_boundary)) + return 0; + if (!create_block_hatch_pattern_stmt + (handle, name, &stmt_hatch_pattern)) + return 0; + } + else + { + /* creating a new table */ + if (!create_block_hatch_tables + (handle, name, dxf->srid, &stmt_hatch_boundary, + &stmt_hatch_pattern)) + return 0; + } + sqlite3_free (name); + } + + ret = sqlite3_exec (handle, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN %s error: %s\n", name, sqlite3_errmsg (handle)); + error = 1; + goto stop; + } + + blk = dxf->first_block; + while (blk != NULL) + { + if (blk->hasInsert == 0) + { + blk = blk->next; + continue; + } + txt = blk->first_text; + while (txt) + { + if (blk->is3Dtext) + stmt = stmt_text_3d; + else + stmt = stmt_text_2d; + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, blk->layer_name, + strlen (blk->layer_name), SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, blk->block_id, + strlen (blk->block_id), SQLITE_STATIC); + sqlite3_bind_text (stmt, 4, txt->label, + strlen (txt->label), SQLITE_STATIC); + sqlite3_bind_double (stmt, 5, txt->angle); + if (blk->is3Dtext) + geom = gaiaAllocGeomCollXYZ (); + else + geom = gaiaAllocGeomColl (); + geom->Srid = dxf->srid; + if (blk->is3Dtext) + gaiaAddPointToGeomCollXYZ (geom, txt->x, txt->y, txt->z); + else + gaiaAddPointToGeomColl (geom, txt->x, txt->y); + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + gaiaFreeGeomColl (geom); + sqlite3_bind_blob (stmt, 6, blob, blob_size, free); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + ret = sqlite3_exec (handle, "ROLLBACK", NULL, NULL, NULL); + error = 1; + goto stop; + } + txt = txt->next; + } + pt = blk->first_point; + while (pt) + { + if (blk->is3Dpoint) + stmt = stmt_point_3d; + else + stmt = stmt_point_2d; + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, blk->layer_name, + strlen (blk->layer_name), SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, blk->block_id, + strlen (blk->block_id), SQLITE_STATIC); + if (blk->is3Dpoint) + geom = gaiaAllocGeomCollXYZ (); + else + geom = gaiaAllocGeomColl (); + geom->Srid = dxf->srid; + if (blk->is3Dpoint) + gaiaAddPointToGeomCollXYZ (geom, pt->x, pt->y, pt->z); + else + gaiaAddPointToGeomColl (geom, pt->x, pt->y); + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + gaiaFreeGeomColl (geom); + sqlite3_bind_blob (stmt, 4, blob, blob_size, free); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + ret = sqlite3_exec (handle, "ROLLBACK", NULL, NULL, NULL); + error = 1; + goto stop; + } + pt = pt->next; + } + ln = blk->first_line; + while (ln) + { + if (blk->is3Dline) + stmt = stmt_line_3d; + else + stmt = stmt_line_2d; + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, blk->layer_name, + strlen (blk->layer_name), SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, blk->block_id, + strlen (blk->block_id), SQLITE_STATIC); + if (blk->is3Dline) + geom = gaiaAllocGeomCollXYZ (); + else + geom = gaiaAllocGeomColl (); + geom->Srid = dxf->srid; + gaiaAddLinestringToGeomColl (geom, ln->points); + p_ln = geom->FirstLinestring; + for (iv = 0; iv < ln->points; iv++) + { + if (blk->is3Dline) + { + gaiaSetPointXYZ (p_ln->Coords, iv, + *(ln->x + iv), *(ln->y + iv), + *(ln->z + iv)); + } + else + { + gaiaSetPoint (p_ln->Coords, iv, *(ln->x + iv), + *(ln->y + iv)); + } + } + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + gaiaFreeGeomColl (geom); + sqlite3_bind_blob (stmt, 4, blob, blob_size, free); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + ret = sqlite3_exec (handle, "ROLLBACK", NULL, NULL, NULL); + error = 1; + goto stop; + } + ln = ln->next; + } + pg = blk->first_polyg; + while (pg) + { + int unclosed = check_unclosed_polyg (pg, blk->is3Dpolyg); + if (blk->is3Dpolyg) + stmt = stmt_polyg_3d; + else + stmt = stmt_polyg_2d; + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, blk->layer_name, + strlen (blk->layer_name), SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, blk->block_id, + strlen (blk->block_id), SQLITE_STATIC); + if (blk->is3Dpolyg) + geom = gaiaAllocGeomCollXYZ (); + else + geom = gaiaAllocGeomColl (); + geom->Srid = dxf->srid; + num_holes = 0; + hole = pg->first_hole; + while (hole != NULL) + { + num_holes++; + hole = hole->next; + } + gaiaAddPolygonToGeomColl (geom, pg->points + unclosed, + num_holes); + p_pg = geom->FirstPolygon; + p_rng = p_pg->Exterior; + for (iv = 0; iv < pg->points; iv++) + { + if (blk->is3Dpolyg) + { + gaiaSetPointXYZ (p_rng->Coords, iv, + *(pg->x + iv), *(pg->y + iv), + *(pg->z + iv)); + } + else + { + gaiaSetPoint (p_rng->Coords, iv, + *(pg->x + iv), *(pg->y + iv)); + } + } + if (unclosed) + { + /* forcing the Ring to be closed */ + if (blk->is3Dpolyg) + { + gaiaSetPointXYZ (p_rng->Coords, pg->points, + *(pg->x + 0), *(pg->y + 0), + *(pg->z + 0)); + } + else + { + gaiaSetPoint (p_rng->Coords, pg->points, + *(pg->x + 0), *(pg->y + 0)); + } + } + num_holes = 0; + hole = pg->first_hole; + while (hole != NULL) + { + int unclosed = check_unclosed_hole (hole, polyg3D); + p_rng = + gaiaAddInteriorRing (p_pg, num_holes, + hole->points + unclosed); + for (iv = 0; iv < hole->points; iv++) + { + if (polyg3D) + { + gaiaSetPointXYZ (p_rng->Coords, iv, + *(hole->x + iv), + *(hole->y + iv), + *(hole->z + iv)); + } + else + { + gaiaSetPoint (p_rng->Coords, iv, + *(hole->x + iv), + *(hole->y + iv)); + } + } + if (unclosed) + { + /* forcing the Ring to be closed */ + if (polyg3D) + { + gaiaSetPointXYZ (p_rng->Coords, hole->points, + *(hole->x + 0), + *(hole->y + 0), + *(hole->z + 0)); + } + else + { + gaiaSetPoint (p_rng->Coords, hole->points, + *(hole->x + 0), *(hole->y + 0)); + } + } + num_holes++; + hole = hole->next; + } + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + gaiaFreeGeomColl (geom); + sqlite3_bind_blob (stmt, 4, blob, blob_size, free); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + ret = sqlite3_exec (handle, "ROLLBACK", NULL, NULL, NULL); + error = 1; + goto stop; + } + pg = pg->next; + } + htc = blk->first_hatch; + while (htc) + { + /* inserting the Boundary Geometry */ + stmt = stmt_hatch_boundary; + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, blk->layer_name, + strlen (blk->layer_name), SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, blk->block_id, + strlen (blk->block_id), SQLITE_STATIC); + if (htc->boundary == NULL) + sqlite3_bind_null (stmt, 4); + else + { + gaiaToSpatiaLiteBlobWkb (htc->boundary, &blob, + &blob_size); + sqlite3_bind_blob (stmt, 4, blob, blob_size, free); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + ret = sqlite3_exec (handle, "ROLLBACK", NULL, NULL, NULL); + error = 1; + goto stop; + } + feature_id = sqlite3_last_insert_rowid (handle); + + /* inserting the Pattern Geometry */ + stmt = stmt_hatch_pattern; + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_int64 (stmt, 1, feature_id); + sqlite3_bind_text (stmt, 2, dxf->filename, + strlen (dxf->filename), SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, blk->layer_name, + strlen (blk->layer_name), SQLITE_STATIC); + sqlite3_bind_text (stmt, 4, blk->block_id, + strlen (blk->block_id), SQLITE_STATIC); + if (htc->first_out == NULL) + sqlite3_bind_null (stmt, 5); + else + { + geom = gaiaAllocGeomColl (); + geom->Srid = dxf->srid; + geom->DeclaredType = GAIA_MULTILINESTRING; + segm = htc->first_out; + while (segm != NULL) + { + gaiaLinestringPtr p_ln = + gaiaAddLinestringToGeomColl (geom, 2); + gaiaSetPoint (p_ln->Coords, 0, segm->x0, segm->y0); + gaiaSetPoint (p_ln->Coords, 1, segm->x1, segm->y1); + segm = segm->next; + } + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + gaiaFreeGeomColl (geom); + sqlite3_bind_blob (stmt, 5, blob, blob_size, free); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("INSERT %s error: %s\n", name, + sqlite3_errmsg (handle)); + ret = sqlite3_exec (handle, "ROLLBACK", NULL, NULL, NULL); + error = 1; + goto stop; + } + htc = htc->next; + } + blk = blk->next; + } + + ret = sqlite3_exec (handle, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT text_layer error: %s\n", + sqlite3_errmsg (handle)); + error = 1; + goto stop; + } + + stop: + if (stmt_text_2d != NULL) + sqlite3_finalize (stmt_text_2d); + if (stmt_text_3d != NULL) + sqlite3_finalize (stmt_text_3d); + if (stmt_point_2d != NULL) + sqlite3_finalize (stmt_point_2d); + if (stmt_point_3d != NULL) + sqlite3_finalize (stmt_point_3d); + if (stmt_line_2d != NULL) + sqlite3_finalize (stmt_line_2d); + if (stmt_line_3d != NULL) + sqlite3_finalize (stmt_line_3d); + if (stmt_polyg_2d != NULL) + sqlite3_finalize (stmt_polyg_2d); + if (stmt_polyg_3d != NULL) + sqlite3_finalize (stmt_polyg_3d); + if (stmt_hatch_boundary != NULL) + sqlite3_finalize (stmt_hatch_boundary); + if (stmt_hatch_pattern != NULL) + sqlite3_finalize (stmt_hatch_pattern); + if (error) + return 0; + return 1; +} + +GAIAGEO_DECLARE int +gaiaLoadFromDxfParser (sqlite3 * handle, + gaiaDxfParserPtr dxf, int mode, int append) +{ +/* populating the target DB */ + int ret; + + if (dxf == NULL) + return 0; + if (dxf->first_layer == NULL) + return 0; + + if (dxf->first_block != NULL) + { + if (!import_blocks (handle, dxf, append)) + return 0; + } + + if (mode == GAIA_DXF_IMPORT_MIXED) + ret = import_mixed (handle, dxf, append); + else + ret = import_by_layer (handle, dxf, append); + return ret; +} diff --git a/src/spatialite/src/dxf/dxf_parser.c b/src/spatialite/src/dxf/dxf_parser.c new file mode 100644 index 0000000..a4665b3 --- /dev/null +++ b/src/spatialite/src/dxf/dxf_parser.c @@ -0,0 +1,3551 @@ +/* + + dxf_parser.c -- implements DXF support [parsing] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include +#include +#include + +#include "dxf_private.h" + +#ifndef OMIT_GEOS /* only if GEOS is enabled */ + +typedef struct dxf_segment +{ +/* a DXF segment */ + int valid; + double ax; + double ay; + double az; + double bx; + double by; + double bz; +} dxfSegment; +typedef dxfSegment *dxfSegmentPtr; + +typedef struct dxf_linked_segments +{ +/* a collection of DXF segments */ + int count; + dxfSegmentPtr segments; +} dxfLinkedSegments; +typedef dxfLinkedSegments *dxfLinkedSegmentsPtr; + +typedef struct dxf_rings_collection +{ +/* a collection of rings */ + gaiaDxfPolylinePtr first; + gaiaDxfPolylinePtr last; +} dxfRingsCollection; +typedef dxfRingsCollection *dxfRingsCollectionPtr; + +static gaiaDxfHatchSegmPtr +alloc_dxf_hatch_segm (double x0, double y0, double x1, double y1) +{ +/* allocating and initializing a DXF Hatch Segment object */ + gaiaDxfHatchSegmPtr segm = malloc (sizeof (gaiaDxfHatchSegm)); + segm->x0 = x0; + segm->y0 = y0; + segm->x1 = x1; + segm->y1 = y1; + segm->next = NULL; + return segm; +} + +static void +destroy_dxf_hatch_segm (gaiaDxfHatchSegmPtr segm) +{ +/* memory cleanup - destroying a DXF Hatch Segment object */ + if (segm == NULL) + return; + free (segm); +} + +static gaiaDxfBoundaryPathPtr +alloc_dxf_boundary_path () +{ +/* allocating and initializing a DXF Boundary Path object */ + gaiaDxfBoundaryPathPtr path = malloc (sizeof (gaiaDxfBoundaryPath)); + path->first = NULL; + path->last = NULL; + path->next = NULL; + return path; +} + +static void +insert_dxf_boundary_segm (gaiaDxfBoundaryPathPtr path, gaiaDxfHatchSegmPtr segm) +{ +/* inserting a Segment into a Boundary Path */ + if (path->first == NULL) + path->first = segm; + if (path->last != NULL) + path->last->next = segm; + path->last = segm; +} + +static void +destroy_dxf_boundary_path (gaiaDxfBoundaryPathPtr path) +{ +/* memory cleanup - destroying a DXF Boundary Path object */ + gaiaDxfHatchSegmPtr segm; + gaiaDxfHatchSegmPtr n_segm; + if (path == NULL) + return; + segm = path->first; + while (segm != NULL) + { + n_segm = segm->next; + destroy_dxf_hatch_segm (segm); + segm = n_segm; + } + free (path); +} + +static gaiaDxfHatchPtr +alloc_dxf_hatch () +{ +/* allocating and initializing a DXF Pattern Hatch object */ + gaiaDxfHatchPtr hatch = malloc (sizeof (gaiaDxfHatch)); + hatch->spacing = 0.0; + hatch->angle = 0.0; + hatch->base_x = 0.0; + hatch->base_y = 0.0; + hatch->offset_x = 0.0; + hatch->offset_y = 0.0; + hatch->first = NULL; + hatch->last = NULL; + hatch->boundary = NULL; + hatch->first_out = NULL; + hatch->last_out = NULL; + hatch->next = NULL; + return hatch; +} + +static void +insert_dxf_boundary_path (gaiaDxfHatchPtr hatch, gaiaDxfBoundaryPathPtr path) +{ +/* inserting a Boundary Path into a Hatch */ + if (hatch->first == NULL) + hatch->first = path; + if (hatch->last != NULL) + hatch->last->next = path; + hatch->last = path; +} + +static void +insert_dxf_hatch_out (gaiaDxfHatchPtr hatch, gaiaDxfHatchSegmPtr segm) +{ +/* inserting a Segment into a Hatch */ + if (hatch->first_out == NULL) + hatch->first_out = segm; + if (hatch->last_out != NULL) + hatch->last_out->next = segm; + hatch->last_out = segm; +} + +static void +destroy_dxf_hatch (gaiaDxfHatchPtr hatch) +{ +/* memory cleanup - destroying a DXF Pattern Hatch object */ + gaiaDxfBoundaryPathPtr path; + gaiaDxfBoundaryPathPtr n_path; + gaiaDxfHatchSegmPtr out; + gaiaDxfHatchSegmPtr n_out; + if (hatch == NULL) + return; + path = hatch->first; + while (path != NULL) + { + n_path = path->next; + destroy_dxf_boundary_path (path); + path = n_path; + } + if (hatch->boundary != NULL) + gaiaFreeGeomColl (hatch->boundary); + out = hatch->first_out; + while (out != NULL) + { + n_out = out->next; + destroy_dxf_hatch_segm (out); + out = n_out; + } + free (hatch); +} + +static int +is_valid_dxf_hatch (gaiaDxfHatchPtr hatch) +{ +/* testing for a valid Pattern Hatch */ + if (hatch->first == NULL) + return 0; + return 1; +} + +static void +apply_vertical_hatch (gaiaGeomCollPtr boundary, gaiaGeomCollPtr geom, + double spacing, double base_x) +{ +/* vertical Pattern Hatch Lines */ + double min_x = boundary->MinX; + double max_x = boundary->MaxX; + double min_y = boundary->MinY; + double max_y = boundary->MaxY; + double x; + gaiaLinestringPtr ln; +/* inserting all Hatch Lines into the collection */ + x = base_x + boundary->MinX; + while (x < max_x) + { + ln = gaiaAddLinestringToGeomColl (geom, 2); + gaiaSetPoint (ln->Coords, 0, x, min_y); + gaiaSetPoint (ln->Coords, 1, x, max_y); + x += spacing; + } + x = base_x + boundary->MinX - spacing; + while (x > min_x) + { + ln = gaiaAddLinestringToGeomColl (geom, 2); + gaiaSetPoint (ln->Coords, 0, x, min_y); + gaiaSetPoint (ln->Coords, 1, x, max_y); + x -= spacing; + } +} + +static void +apply_horizontal_hatch (gaiaGeomCollPtr boundary, gaiaGeomCollPtr geom, + double spacing, double base_y) +{ +/* horizontal Pattern Hatch Lines */ + double min_x = boundary->MinX; + double max_x = boundary->MaxX; + double min_y = boundary->MinY; + double max_y = boundary->MaxY; + double y; + gaiaLinestringPtr ln; +/* inserting all Hatch Lines into the collection */ + y = base_y + boundary->MinY; + while (y < max_y) + { + ln = gaiaAddLinestringToGeomColl (geom, 2); + gaiaSetPoint (ln->Coords, 0, min_x, y); + gaiaSetPoint (ln->Coords, 1, max_x, y); + y += spacing; + } + y = base_y + boundary->MinY - spacing; + while (y > min_y) + { + ln = gaiaAddLinestringToGeomColl (geom, 2); + gaiaSetPoint (ln->Coords, 0, min_x, y); + gaiaSetPoint (ln->Coords, 1, max_x, y); + y -= spacing; + } +} + +static void +apply_hatch (gaiaGeomCollPtr boundary, gaiaGeomCollPtr geom, double angle, + double spacing, double base_x, double base_y) +{ +/* ordinary (slant) Pattern Hatch Lines */ + double min_x = boundary->MinX; + double max_x = boundary->MaxX; + double min_y = boundary->MinY; + double max_y = boundary->MaxY; + double ext_x = max_x - min_x; + double ext_y = max_y - min_y; + double ext = (ext_x > ext_y) ? ext_x : ext_y; + double mnx = (ext * 2.0) * -1.0; + double mxx = ext * 3.0; + double mny = (ext * 2.0) * -1.0; + double mxy = ext * 3.0; + gaiaLinestringPtr ln; + double y; +/* inserting all horizontal Hatch Lines into the collection */ + y = 0.0; + while (y < mxy) + { + ln = gaiaAddLinestringToGeomColl (geom, 2); + gaiaSetPoint (ln->Coords, 0, mnx, y); + gaiaSetPoint (ln->Coords, 1, mxx, y); + y += spacing; + } + y = 0.0 - spacing; + while (y > mny) + { + ln = gaiaAddLinestringToGeomColl (geom, 2); + gaiaSetPoint (ln->Coords, 0, mnx, y); + gaiaSetPoint (ln->Coords, 1, mxx, y); + y -= spacing; + } +/* applying the required rotation */ + gaiaRotateCoords (geom, angle * -1.0); +/* translating into base position */ + gaiaShiftCoords (geom, base_x + min_x, base_y + min_y); +} + +static void +create_dxf_hatch_lines (const void *p_cache, gaiaDxfHatchPtr hatch, int srid) +{ +/* creating Pattern Hatch lines */ + gaiaDxfBoundaryPathPtr path; + gaiaDxfHatchSegmPtr out; + gaiaDxfHatchSegmPtr n_out; + gaiaGeomCollPtr geom; + gaiaGeomCollPtr result; + gaiaGeomCollPtr clipped; + double angle; + double x0; + double y0; + double x1; + double y1; + gaiaLinestringPtr ln; + + if (hatch == NULL) + return; + if (hatch->boundary != NULL) + gaiaFreeGeomColl (hatch->boundary); + out = hatch->first_out; + while (out != NULL) + { + /* cleaning all Pattern Hatch lines */ + n_out = out->next; + destroy_dxf_hatch_segm (out); + out = n_out; + } + hatch->boundary = NULL; + hatch->first_out = NULL; + hatch->last_out = NULL; + +/* creating the Pattern Boundary */ + geom = gaiaAllocGeomColl (); + path = hatch->first; + while (path != NULL) + { + /* inserting Boundary lines */ + out = path->first; + while (out != NULL) + { + /* inserting all Boundary segments into the collection */ + ln = gaiaAddLinestringToGeomColl (geom, 2); + gaiaSetPoint (ln->Coords, 0, out->x0, out->y0); + gaiaSetPoint (ln->Coords, 1, out->x1, out->y1); + out = out->next; + } + path = path->next; + } +/* attempting to reassemble the Boundary */ + if (p_cache != NULL) + result = gaiaPolygonize_r (p_cache, geom, 0); + else + result = gaiaPolygonize (geom, 0); + gaiaFreeGeomColl (geom); + if (result == NULL) + return; + gaiaMbrGeometry (result); + result->Srid = srid; + result->DeclaredType = GAIA_MULTIPOLYGON; + hatch->boundary = result; + if (hatch->spacing == 0.0) + { + /* no pattern filling, just the boundary */ + return; + } +/* normalizing the angle */ + angle = hatch->angle; + while (angle >= 360.0) + angle -= 360.0; + while (angle <= -360.0) + angle += 360; +/* preparing the Hatch filling lines */ + geom = gaiaAllocGeomColl (); + if (angle == 90.0 || angle == -90.0 || angle == 270.0 || angle == -270.0) + apply_vertical_hatch (result, geom, hatch->spacing, hatch->base_x); + else if (angle == 0.0 || angle == 180 || angle == -180) + apply_horizontal_hatch (result, geom, hatch->spacing, hatch->base_y); + else + apply_hatch (result, geom, angle, hatch->spacing, hatch->base_x, + hatch->base_y); + gaiaMbrGeometry (geom); + if (p_cache != NULL) + clipped = gaiaGeometryIntersection_r (p_cache, geom, result); + else + clipped = gaiaGeometryIntersection (geom, result); + gaiaFreeGeomColl (geom); + if (clipped == NULL) + return; + ln = clipped->FirstLinestring; + while (ln != NULL) + { + if (ln->Points == 2) + { + gaiaGetPoint (ln->Coords, 0, &x0, &y0); + gaiaGetPoint (ln->Coords, 1, &x1, &y1); + n_out = alloc_dxf_hatch_segm (x0, y0, x1, y1); + insert_dxf_hatch_out (hatch, n_out); + } + ln = ln->Next; + } + gaiaFreeGeomColl (clipped); +} + +static gaiaDxfHolePtr +alloc_dxf_hole (int points) +{ +/* allocating and initializing a DXF Polygon Hole object */ + int i; + gaiaDxfHolePtr hole = malloc (sizeof (gaiaDxfHole)); + hole->points = points; + hole->x = malloc (sizeof (double) * points); + hole->y = malloc (sizeof (double) * points); + hole->z = malloc (sizeof (double) * points); + for (i = 0; i < points; i++) + { + *(hole->x + i) = 0.0; + *(hole->y + i) = 0.0; + *(hole->z + i) = 0.0; + } + hole->next = NULL; + return hole; +} + +static void +insert_dxf_hole (gaiaDxfPolylinePtr line, gaiaDxfHolePtr hole) +{ +/* inserting an Hole into a Polygon */ + if (line->first_hole == NULL) + line->first_hole = hole; + if (line->last_hole != NULL) + line->last_hole->next = hole; + line->last_hole = hole; +} + +static void +destroy_dxf_hole (gaiaDxfHolePtr hole) +{ +/* memory cleanup - destroying a DXF Hole object */ + if (hole == NULL) + return; + if (hole->x != NULL) + free (hole->x); + if (hole->y != NULL) + free (hole->y); + if (hole->z != NULL) + free (hole->z); + free (hole); +} + +static int +force_closure (gaiaDxfPolylinePtr line) +{ +/* checking (and eventually forcing) first/last vertex coherency */ + if (check_unclosed_polyg (line, 1)) + { + /* not properly closed: forcing the last vertex */ + double *ptr_x; + double *ptr_y; + double *ptr_z; + ptr_x = realloc (line->x, sizeof (double) * (line->points + 1)); + ptr_y = realloc (line->y, sizeof (double) * (line->points + 1)); + ptr_z = realloc (line->z, sizeof (double) * (line->points + 1)); + if (ptr_x == NULL || ptr_y == NULL || ptr_z == NULL) + { + /* some unexpected error happened - giving up */ + if (ptr_x == NULL) + free (ptr_x); + if (ptr_y == NULL) + free (ptr_y); + if (ptr_z == NULL) + free (ptr_z); + return 0; + } + line->x = ptr_x; + line->y = ptr_y; + line->z = ptr_z; + *(line->x + line->points) = *(line->x + 0); + *(line->y + line->points) = *(line->y + 0); + *(line->z + line->points) = *(line->z + 0); + line->points += 1; + } + return 1; +} + +static void +linked_rings (const void *p_cache, gaiaDxfPolylinePtr line) +{ +/* attempt to identify linked Polygon rings */ + int i; + int i2; + int match = 0; + double x; + double y; + double z; + gaiaDxfHolePtr hole; + dxfLinkedSegmentsPtr coll; + dxfSegmentPtr seg; + dxfSegmentPtr seg2; + gaiaGeomCollPtr geom; + gaiaGeomCollPtr result; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + int pgs; + int ok; + + if (line == NULL) + return; + if (line->points <= 0) + return; + if (line->is_closed == 0) + return; + + if (!force_closure (line)) + return; + + coll = malloc (sizeof (dxfLinkedSegments)); + coll->count = line->points - 1; + coll->segments = malloc (sizeof (dxfSegment) * coll->count); + x = *(line->x + 0); + y = *(line->y + 0); + z = *(line->z + 0); + for (i2 = 0, i = 1; i < line->points; i++, i2++) + { + /* initializing all segments */ + seg = &(coll->segments[i2]); + seg->valid = 1; + seg->ax = x; + seg->ay = y; + seg->az = z; + x = *(line->x + i); + y = *(line->y + i); + z = *(line->z + i); + seg->bx = x; + seg->by = y; + seg->bz = z; + } + + for (i = 0; i < coll->count - 1; i++) + { + /* testing for linked polygon holes */ + seg = &(coll->segments[i]); + if (seg->valid == 0) + continue; + for (i2 = i + 1; i2 < coll->count; i2++) + { + seg2 = &(coll->segments[i2]); + if (seg2->valid == 0) + continue; + if ((seg->ax == seg2->ax && seg->ay == seg2->ay + && seg->az == seg2->az && seg->bx == seg2->bx + && seg->by == seg2->by && seg->bz == seg2->bz) + || (seg->ax == seg2->bx && seg->ay == seg2->by + && seg->az == seg2->bz && seg->bx == seg2->ax + && seg->by == seg2->ay && seg->bz == seg2->az)) + { + /* found a linked segment */ + seg->valid = 0; + seg2->valid = 0; + match = 1; + } + } + } + + if (match == 0) + { + /* no link segment was found - quitting */ + free (coll->segments); + free (coll); + return; + } + +/* building a candidate geometry (multilinestring) */ + geom = gaiaAllocGeomCollXYZ (); + for (i = 0; i < coll->count; i++) + { + seg = &(coll->segments[i]); + if (seg->valid) + { + /* inserting a valid segment into the collection */ + gaiaLinestringPtr ln = gaiaAddLinestringToGeomColl (geom, 2); + gaiaSetPointXYZ (ln->Coords, 0, seg->ax, seg->ay, seg->az); + gaiaSetPointXYZ (ln->Coords, 1, seg->bx, seg->by, seg->bz); + } + } +/* freeing the linked segments list */ + free (coll->segments); + free (coll); + +/* attempting to reassemble a polygon */ + if (p_cache != NULL) + result = gaiaPolygonize_r (p_cache, geom, 0); + else + result = gaiaPolygonize (geom, 0); + gaiaFreeGeomColl (geom); + if (result == NULL) + return; + +/* checking the returned polygon for validity */ + pgs = 0; + ok = 1; + pg = result->FirstPolygon; + while (pg != NULL) + { + pgs++; + if (pg->NumInteriors == 0) + ok = 0; + pg = pg->Next; + } + if (ok == 1 && pgs == 1) + { + /* found a valid Polygon with internal holes(s) */ + pg = result->FirstPolygon; + rng = pg->Exterior; + /* rebuilding the exterior ring */ + free (line->x); + free (line->y); + free (line->z); + line->points = rng->Points; + line->x = malloc (sizeof (double) * line->points); + line->y = malloc (sizeof (double) * line->points); + line->z = malloc (sizeof (double) * line->points); + for (i = 0; i < line->points; i++) + { + /* setting the exterior ring points */ + gaiaGetPointXYZ (rng->Coords, i, &x, &y, &z); + *(line->x + i) = x; + *(line->y + i) = y; + *(line->z + i) = z; + } + for (i2 = 0; i2 < pg->NumInteriors; i2++) + { + /* saving the Holes */ + rng = pg->Interiors + i2; + hole = alloc_dxf_hole (rng->Points); + insert_dxf_hole (line, hole); + for (i = 0; i < hole->points; i++) + { + /* setting the interior ring points */ + gaiaGetPointXYZ (rng->Coords, i, &x, &y, &z); + *(hole->x + i) = x; + *(hole->y + i) = y; + *(hole->z + i) = z; + } + } + } + gaiaFreeGeomColl (result); +/* forcing the closure flag */ + line->is_closed = 1; +} + +static void +insert_dxf_hatch (gaiaDxfParserPtr dxf, const char *layer_name, + gaiaDxfHatchPtr hatch) +{ +/* inserting a HATCH object into the appropriate Layer */ + gaiaDxfLayerPtr lyr = dxf->first_layer; + while (lyr != NULL) + { + if (strcmp (lyr->layer_name, layer_name) == 0) + { + /* found the matching Layer */ + if (lyr->first_hatch == NULL) + lyr->first_hatch = hatch; + if (lyr->last_hatch != NULL) + lyr->last_hatch->next = hatch; + lyr->last_hatch = hatch; + return; + } + lyr = lyr->next; + } + destroy_dxf_hatch (hatch); +} + +static void +insert_dxf_block_hatch (gaiaDxfParserPtr dxf, gaiaDxfHatchPtr hatch) +{ +/* inserting a HATCH object into the current Block */ + if (dxf->curr_block.first_hatch == NULL) + dxf->curr_block.first_hatch = hatch; + if (dxf->curr_block.last_hatch != NULL) + dxf->curr_block.last_hatch->next = hatch; + dxf->curr_block.last_hatch = hatch; +} + +static gaiaDxfExtraAttrPtr +alloc_dxf_extra () +{ +/* allocating and initializing a DXF Extra Attribute object */ + gaiaDxfExtraAttrPtr ext = malloc (sizeof (gaiaDxfExtraAttr)); + ext->key = NULL; + ext->value = NULL; + ext->next = NULL; + return ext; +} + +static gaiaDxfExtraAttrPtr +clone_dxf_extra (gaiaDxfExtraAttrPtr org) +{ +/* cloning a DXF Extra Attribute object */ + int len; + gaiaDxfExtraAttrPtr ext = malloc (sizeof (gaiaDxfExtraAttr)); + len = strlen (org->key); + ext->key = malloc (len + 1); + strcpy (ext->key, org->key); + len = strlen (org->value); + ext->value = malloc (len + 1); + strcpy (ext->value, org->value); + ext->next = NULL; + return ext; +} + +static void +destroy_dxf_extra (gaiaDxfExtraAttrPtr ext) +{ +/* memory cleanup - destroying a DXF Extra Attribute object */ + if (ext == NULL) + return; + if (ext->key != NULL) + free (ext->key); + if (ext->value != NULL) + free (ext->value); + free (ext); +} + +static gaiaDxfTextPtr +alloc_dxf_text (const char *label, double x, double y, double z, double angle) +{ +/* allocating and initializing a DXF Text object */ + int len; + gaiaDxfTextPtr txt = malloc (sizeof (gaiaDxfText)); + len = strlen (label); + txt->label = malloc (len + 1); + strcpy (txt->label, label); + txt->x = x; + txt->y = y; + txt->z = z; + txt->angle = angle; + txt->first = NULL; + txt->last = NULL; + txt->next = NULL; + return txt; +} + +static void +destroy_dxf_text (gaiaDxfTextPtr txt) +{ +/* memory cleanup - destroying a DXF Text object */ + gaiaDxfExtraAttrPtr ext; + gaiaDxfExtraAttrPtr n_ext; + if (txt == NULL) + return; + if (txt->label != NULL) + free (txt->label); + ext = txt->first; + while (ext != NULL) + { + n_ext = ext->next; + destroy_dxf_extra (ext); + ext = n_ext; + } + free (txt); +} + +static int +is_3d_text (gaiaDxfTextPtr txt) +{ +/* testing if it's really a 3D Text */ + if (txt->z == 0.0) + return 0; + return 1; +} + +static void +insert_dxf_text (gaiaDxfParserPtr dxf, const char *layer_name, + gaiaDxfTextPtr txt) +{ +/* inserting a TEXT object into the appropriate Layer */ + gaiaDxfLayerPtr lyr = dxf->first_layer; + while (lyr != NULL) + { + if (strcmp (lyr->layer_name, layer_name) == 0) + { + /* found the matching Layer */ + if (lyr->first_text == NULL) + lyr->first_text = txt; + if (lyr->last_text != NULL) + lyr->last_text->next = txt; + lyr->last_text = txt; + if (dxf->force_dims == GAIA_DXF_FORCE_2D + || dxf->force_dims == GAIA_DXF_FORCE_3D) + ; + else + { + if (is_3d_text (txt)) + lyr->is3Dtext = 1; + } + txt->first = dxf->first_ext; + txt->last = dxf->last_ext; + dxf->first_ext = NULL; + dxf->last_ext = NULL; + if (txt->first != NULL) + lyr->hasExtraText = 1; + return; + } + lyr = lyr->next; + } + destroy_dxf_text (txt); +} + +static void +insert_dxf_block_text (gaiaDxfParserPtr dxf, gaiaDxfTextPtr txt) +{ +/* inserting a TEXT object into the current Block */ + if (dxf->curr_block.first_text == NULL) + dxf->curr_block.first_text = txt; + if (dxf->curr_block.last_text != NULL) + dxf->curr_block.last_text->next = txt; + dxf->curr_block.last_text = txt; + if (dxf->force_dims == GAIA_DXF_FORCE_2D + || dxf->force_dims == GAIA_DXF_FORCE_3D) + ; + else + { + if (is_3d_text (txt)) + dxf->curr_block.is3Dtext = 1; + } +} + +static gaiaDxfInsertPtr +alloc_dxf_insert (const char *block_id, double x, double y, double z, + double scale_x, double scale_y, double scale_z, double angle) +{ +/* allocating and initializing a DXF Insertt object */ + int len; + gaiaDxfInsertPtr ins = malloc (sizeof (gaiaDxfInsert)); + len = strlen (block_id); + ins->block_id = malloc (len + 1); + strcpy (ins->block_id, block_id); + ins->x = x; + ins->y = y; + ins->z = z; + ins->scale_x = scale_x; + ins->scale_y = scale_y; + ins->scale_z = scale_z; + ins->angle = angle; + ins->hasText = 0; + ins->hasPoint = 0; + ins->hasLine = 0; + ins->hasPolyg = 0; + ins->hasHatch = 0; + ins->is3Dtext = 0; + ins->is3Dpoint = 0; + ins->is3Dline = 0; + ins->is3Dpolyg = 0; + ins->first = NULL; + ins->last = NULL; + ins->next = NULL; + return ins; +} + +static gaiaDxfInsertPtr +clone_dxf_insert (gaiaDxfInsertPtr org) +{ +/* cloning a DXF Insertt object */ + gaiaDxfExtraAttrPtr ext_org; + gaiaDxfExtraAttrPtr ext; + int len; + gaiaDxfInsertPtr ins = malloc (sizeof (gaiaDxfInsert)); + len = strlen (org->block_id); + ins->block_id = malloc (len + 1); + strcpy (ins->block_id, org->block_id); + ins->x = org->x; + ins->y = org->y; + ins->z = org->z; + ins->scale_x = org->scale_x; + ins->scale_y = org->scale_y; + ins->scale_z = org->scale_z; + ins->angle = org->angle; + ins->hasText = org->hasText; + ins->hasPoint = org->hasPoint; + ins->hasLine = org->hasLine; + ins->hasPolyg = org->hasPolyg; + ins->hasHatch = org->hasHatch; + ins->is3Dtext = org->is3Dtext; + ins->is3Dpoint = org->is3Dpoint; + ins->is3Dline = org->is3Dline; + ins->is3Dpolyg = org->is3Dpolyg; + ins->first = NULL; + ins->last = NULL; + ext_org = org->first; + while (ext_org != NULL) + { + ext = clone_dxf_extra (ext_org); + if (ins->first == NULL) + ins->first = ext; + if (ins->last != NULL) + ins->last->next = ext; + ins->last = ext; + ext_org = ext_org->next; + } + ins->next = NULL; + return ins; +} + +static void +destroy_dxf_insert (gaiaDxfInsertPtr ins) +{ +/* memory cleanup - destroying a DXF Insert object */ + gaiaDxfExtraAttrPtr ext; + gaiaDxfExtraAttrPtr n_ext; + if (ins == NULL) + return; + if (ins->block_id != NULL) + free (ins->block_id); + ext = ins->first; + while (ext != NULL) + { + n_ext = ext->next; + destroy_dxf_extra (ext); + ext = n_ext; + } + free (ins); +} + +static void +insert_dxf_insert (gaiaDxfParserPtr dxf, const char *layer_name, + gaiaDxfInsertPtr ins) +{ +/* inserting an INSERT object into the appropriate Layer */ + gaiaDxfLayerPtr lyr = dxf->first_layer; + while (lyr != NULL) + { + if (strcmp (lyr->layer_name, layer_name) == 0) + { + /* found the matching Layer */ + ins->first = dxf->first_ext; + ins->last = dxf->last_ext; + dxf->first_ext = NULL; + dxf->last_ext = NULL; + if (ins->hasText) + { + /* indirect Text reference */ + gaiaDxfInsertPtr ins2 = clone_dxf_insert (ins); + if (lyr->first_ins_text == NULL) + lyr->first_ins_text = ins2; + if (lyr->last_ins_text != NULL) + lyr->last_ins_text->next = ins2; + lyr->last_ins_text = ins2; + if (ins2->is3Dtext) + lyr->is3DinsText = 1; + if (ins2->first != NULL) + lyr->hasExtraInsText = 1; + } + if (ins->hasPoint) + { + /* indirect Point reference */ + gaiaDxfInsertPtr ins2 = clone_dxf_insert (ins); + if (lyr->first_ins_point == NULL) + lyr->first_ins_point = ins2; + if (lyr->last_ins_point != NULL) + lyr->last_ins_point->next = ins2; + lyr->last_ins_point = ins2; + if (ins2->is3Dpoint) + lyr->is3DinsPoint = 1; + if (ins2->first != NULL) + lyr->hasExtraInsPoint = 1; + } + if (ins->hasLine) + { + /* indirect Polyline (Linestring) reference */ + gaiaDxfInsertPtr ins2 = clone_dxf_insert (ins); + if (lyr->first_ins_line == NULL) + lyr->first_ins_line = ins2; + if (lyr->last_ins_line != NULL) + lyr->last_ins_line->next = ins2; + lyr->last_ins_line = ins2; + if (ins2->is3Dline) + lyr->is3DinsLine = 1; + if (ins2->first != NULL) + lyr->hasExtraInsLine = 1; + } + if (ins->hasPolyg) + { + /* indirect Polyline (Polygon) reference */ + gaiaDxfInsertPtr ins2 = clone_dxf_insert (ins); + if (lyr->first_ins_polyg == NULL) + lyr->first_ins_polyg = ins2; + if (lyr->last_ins_polyg != NULL) + lyr->last_ins_polyg->next = ins2; + lyr->last_ins_polyg = ins2; + if (ins2->is3Dpolyg) + lyr->is3DinsPolyg = 1; + if (ins2->first != NULL) + lyr->hasExtraInsPolyg = 1; + } + destroy_dxf_insert (ins); + return; + } + lyr = lyr->next; + } + destroy_dxf_insert (ins); +} + +static gaiaDxfPointPtr +alloc_dxf_point (double x, double y, double z) +{ +/* allocating and initializing a DXF Point object */ + gaiaDxfPointPtr pt = malloc (sizeof (gaiaDxfPoint)); + pt->x = x; + pt->y = y; + pt->z = z; + pt->next = NULL; + pt->first = NULL; + pt->last = NULL; + return pt; +} + +static void +destroy_dxf_point (gaiaDxfPointPtr pt) +{ +/* memory cleanup - destroying a DXF Point object */ + gaiaDxfExtraAttrPtr ext; + gaiaDxfExtraAttrPtr n_ext; + if (pt == NULL) + return; + ext = pt->first; + while (ext != NULL) + { + n_ext = ext->next; + destroy_dxf_extra (ext); + ext = n_ext; + } + free (pt); +} + +static int +is_3d_point (gaiaDxfPointPtr pt) +{ +/* testing if it's really a 3D Point */ + if (pt->z == 0.0) + return 0; + return 1; +} + +static void +insert_dxf_point (gaiaDxfParserPtr dxf, const char *layer_name, + gaiaDxfPointPtr pt) +{ +/* inserting a POINT object into the appropriate Layer */ + gaiaDxfLayerPtr lyr = dxf->first_layer; + while (lyr != NULL) + { + if (strcmp (lyr->layer_name, layer_name) == 0) + { + /* found the matching Layer */ + if (lyr->first_point == NULL) + lyr->first_point = pt; + if (lyr->last_point != NULL) + lyr->last_point->next = pt; + lyr->last_point = pt; + if (dxf->force_dims == GAIA_DXF_FORCE_2D + || dxf->force_dims == GAIA_DXF_FORCE_3D) + ; + else + { + if (is_3d_point (pt)) + lyr->is3Dpoint = 1; + } + pt->first = dxf->first_ext; + pt->last = dxf->last_ext; + dxf->first_ext = NULL; + dxf->last_ext = NULL; + if (pt->first != NULL) + lyr->hasExtraPoint = 1; + return; + } + lyr = lyr->next; + } + destroy_dxf_point (pt); +} + +static void +insert_dxf_block_point (gaiaDxfParserPtr dxf, gaiaDxfPointPtr pt) +{ +/* inserting a POINT object into the current Block */ + if (dxf->curr_block.first_point == NULL) + dxf->curr_block.first_point = pt; + if (dxf->curr_block.last_point != NULL) + dxf->curr_block.last_point->next = pt; + dxf->curr_block.last_point = pt; + if (dxf->force_dims == GAIA_DXF_FORCE_2D + || dxf->force_dims == GAIA_DXF_FORCE_3D) + ; + else + { + if (is_3d_point (pt)) + dxf->curr_block.is3Dpoint = 1; + } +} + +static gaiaDxfPolylinePtr +alloc_dxf_polyline (int is_closed, int points) +{ +/* allocating and initializing a DXF Polyline object */ + int i; + gaiaDxfPolylinePtr ln = malloc (sizeof (gaiaDxfPolyline)); + ln->is_closed = is_closed; + ln->points = points; + ln->x = malloc (sizeof (double) * points); + ln->y = malloc (sizeof (double) * points); + ln->z = malloc (sizeof (double) * points); + for (i = 0; i < points; i++) + { + *(ln->x + i) = 0.0; + *(ln->y + i) = 0.0; + *(ln->z + i) = 0.0; + } + ln->first_hole = NULL; + ln->last_hole = NULL; + ln->first = NULL; + ln->last = NULL; + ln->next = NULL; + return ln; +} + +static gaiaDxfPolylinePtr +alloc_dxf_line (double x0, double y0, double z0, double x1, double y1, + double z1) +{ +/* allocating and initializing a DXF Line object */ + gaiaDxfPolylinePtr ln = malloc (sizeof (gaiaDxfPolyline)); + ln->is_closed = 0; + ln->points = 2; + ln->x = malloc (sizeof (double) * 2); + ln->y = malloc (sizeof (double) * 2); + ln->z = malloc (sizeof (double) * 2); + *(ln->x + 0) = x0; + *(ln->y + 0) = y0; + *(ln->z + 0) = z0; + *(ln->x + 1) = x1; + *(ln->y + 1) = y1; + *(ln->z + 1) = z1; + ln->first_hole = NULL; + ln->last_hole = NULL; + ln->first = NULL; + ln->last = NULL; + ln->next = NULL; + return ln; +} + +static void +destroy_dxf_polyline (gaiaDxfPolylinePtr ln) +{ +/* memory cleanup - destroying a DXF Polyline object */ + gaiaDxfExtraAttrPtr ext; + gaiaDxfExtraAttrPtr n_ext; + gaiaDxfHolePtr hole; + gaiaDxfHolePtr n_hole; + if (ln == NULL) + return; + if (ln->x != NULL) + free (ln->x); + if (ln->y != NULL) + free (ln->y); + if (ln->z != NULL) + free (ln->z); + ext = ln->first; + while (ext != NULL) + { + n_ext = ext->next; + destroy_dxf_extra (ext); + ext = n_ext; + } + hole = ln->first_hole; + while (hole != NULL) + { + n_hole = hole->next; + destroy_dxf_hole (hole); + hole = n_hole; + } + free (ln); +} + +static int +is_3d_line (gaiaDxfPolylinePtr ln) +{ +/* testing if it's really a 3D Polyline */ + gaiaDxfHolePtr hole; + int i; + for (i = 0; i < ln->points; i++) + { + if (*(ln->z + i) != 0.0) + return 1; + } + hole = ln->first_hole; + while (hole != NULL) + { + for (i = 0; i < hole->points; i++) + { + if (*(hole->z + i) != 0.0) + return 1; + } + } + return 0; +} + +static dxfRingsCollectionPtr +alloc_dxf_rings () +{ +/* allocating an empty Rings Collection */ + dxfRingsCollectionPtr coll = malloc (sizeof (dxfRingsCollection)); + coll->first = NULL; + coll->last = NULL; + return coll; +} + +static void +destroy_dxf_rings (dxfRingsCollectionPtr coll) +{ +/* memory cleanup - destroying a Rings Collection */ + gaiaDxfPolylinePtr ln; + gaiaDxfPolylinePtr n_ln; + if (coll == NULL) + return; + ln = coll->first; + while (ln != NULL) + { + n_ln = ln->next; + destroy_dxf_polyline (ln); + ln = n_ln; + } + free (coll); +} + +static void +insert_dxf_ring (dxfRingsCollectionPtr coll, gaiaDxfPolylinePtr line, int start, + int end) +{ +/* inserting a Ring into the collection */ + int i; + int i2; + int points = end - start + 1; + gaiaDxfPolylinePtr out = alloc_dxf_polyline (1, points); + for (i2 = 0, i = start; i <= end; i++, i2++) + { + *(out->x + i2) = *(line->x + i); + *(out->y + i2) = *(line->y + i); + *(out->z + i2) = *(line->z + i); + } + if (coll->first == NULL) + coll->first = out; + if (coll->last != NULL) + coll->last->next = out; + coll->last = out; +} + +static void +unlinked_rings (const void *p_cache, gaiaDxfPolylinePtr line) +{ +/* attempt to identify unlinked Polygon rings */ + int invalid; + int start; + int count; + double x; + double y; + double z; + int i; + int i2; + gaiaDxfHolePtr hole; + dxfRingsCollectionPtr coll; + gaiaDxfPolylinePtr ring; + gaiaGeomCollPtr geom; + gaiaGeomCollPtr result; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + int pgs; + int ok; + + if (line == NULL) + return; + if (line->points <= 0) + return; + if (line->is_closed == 0) + return; + + if (!force_closure (line)) + return; + + coll = alloc_dxf_rings (); + start = 0; + while (start < line->points - 1) + { + /* looping on candidate rings */ + x = *(line->x + start); + y = *(line->y + start); + z = *(line->z + start); + invalid = 1; + for (i = start + 1; i < line->points; i++) + { + if (*(line->x + i) == x && *(line->y + i) == y + && *(line->z + i) == z) + { + insert_dxf_ring (coll, line, start, i); + start = i + 1; + invalid = 0; + break; + } + } + if (invalid) + break; + } + + count = 0; + ring = coll->first; + while (ring != NULL) + { + count++; + ring = ring->next; + } + if (count < 2) + invalid = 1; + if (invalid) + { + /* no unlinked rings were found - quitting */ + destroy_dxf_rings (coll); + return; + } + +/* building a candidate geometry (multilinestring) */ + geom = gaiaAllocGeomCollXYZ (); + ring = coll->first; + while (ring != NULL) + { + /* inserting a ring into the collection */ + gaiaLinestringPtr ln = + gaiaAddLinestringToGeomColl (geom, ring->points); + for (i = 0; i < ring->points; i++) + { + gaiaSetPointXYZ (ln->Coords, i, *(ring->x + i), *(ring->y + i), + *(ring->z + i)); + } + ring = ring->next; + } +/* freeing the rings list */ + destroy_dxf_rings (coll); + +/* attempting to reassemble a polygon */ + if (p_cache != NULL) + result = gaiaPolygonize_r (p_cache, geom, 0); + else + result = gaiaPolygonize (geom, 0); + gaiaFreeGeomColl (geom); + if (result == NULL) + return; + +/* checking the returned polygon for validity */ + pgs = 0; + ok = 1; + pg = result->FirstPolygon; + while (pg != NULL) + { + pgs++; + if (pg->NumInteriors == 0) + ok = 0; + pg = pg->Next; + } + if (ok == 1 && pgs == 1) + { + /* found a valid Polygon with internal holes(s) */ + pg = result->FirstPolygon; + rng = pg->Exterior; + /* rebuilding the exterior ring */ + free (line->x); + free (line->y); + free (line->z); + line->points = rng->Points; + line->x = malloc (sizeof (double) * line->points); + line->y = malloc (sizeof (double) * line->points); + line->z = malloc (sizeof (double) * line->points); + for (i = 0; i < line->points; i++) + { + /* setting the exterior ring points */ + gaiaGetPointXYZ (rng->Coords, i, &x, &y, &z); + *(line->x + i) = x; + *(line->y + i) = y; + *(line->z + i) = z; + } + for (i2 = 0; i2 < pg->NumInteriors; i2++) + { + /* saving the Holes */ + rng = pg->Interiors + i2; + hole = alloc_dxf_hole (rng->Points); + insert_dxf_hole (line, hole); + for (i = 0; i < hole->points; i++) + { + /* setting the interior ring points */ + gaiaGetPointXYZ (rng->Coords, i, &x, &y, &z); + *(hole->x + i) = x; + *(hole->y + i) = y; + *(hole->z + i) = z; + } + } + } + gaiaFreeGeomColl (result); +/* forcing the closure flag */ + line->is_closed = 1; +} + +static void +insert_dxf_polyline (const void *p_cache, gaiaDxfParserPtr dxf, + const char *layer_name, gaiaDxfPolylinePtr ln) +{ +/* inserting a POLYLINE object into the appropriate Layer */ + gaiaDxfLayerPtr lyr = dxf->first_layer; + while (lyr != NULL) + { + if (strcmp (lyr->layer_name, layer_name) == 0) + { + /* found the matching Layer */ + if (dxf->linked_rings) + linked_rings (p_cache, ln); + if (dxf->unlinked_rings) + unlinked_rings (p_cache, ln); + if (ln->is_closed) + { + /* it's a Ring */ + if (lyr->first_polyg == NULL) + lyr->first_polyg = ln; + if (lyr->last_polyg != NULL) + lyr->last_polyg->next = ln; + lyr->last_polyg = ln; + if (dxf->force_dims == GAIA_DXF_FORCE_2D + || dxf->force_dims == GAIA_DXF_FORCE_3D) + ; + else + { + if (is_3d_line (ln)) + lyr->is3Dpolyg = 1; + } + } + else + { + /* it's a Linestring */ + if (lyr->first_line == NULL) + lyr->first_line = ln; + if (lyr->last_line != NULL) + lyr->last_line->next = ln; + lyr->last_line = ln; + if (dxf->force_dims == GAIA_DXF_FORCE_2D + || dxf->force_dims == GAIA_DXF_FORCE_3D) + ; + else + { + if (is_3d_line (ln)) + lyr->is3Dline = 1; + } + } + ln->first = dxf->first_ext; + ln->last = dxf->last_ext; + dxf->first_ext = NULL; + dxf->last_ext = NULL; + if (ln->is_closed && ln->first != NULL) + lyr->hasExtraPolyg = 1; + if (ln->is_closed == 0 && ln->first != NULL) + lyr->hasExtraLine = 1; + return; + } + lyr = lyr->next; + } + destroy_dxf_polyline (ln); +} + +static void +insert_dxf_block_polyline (const void *p_cache, gaiaDxfParserPtr dxf, + gaiaDxfPolylinePtr ln) +{ +/* inserting a POLYLINE object into the current Block */ + if (dxf->linked_rings) + linked_rings (p_cache, ln); + if (dxf->unlinked_rings) + unlinked_rings (p_cache, ln); + if (ln->is_closed) + { + /* it's a Ring */ + if (dxf->curr_block.first_polyg == NULL) + dxf->curr_block.first_polyg = ln; + if (dxf->curr_block.last_polyg != NULL) + dxf->curr_block.last_polyg->next = ln; + dxf->curr_block.last_polyg = ln; + if (dxf->force_dims == GAIA_DXF_FORCE_2D + || dxf->force_dims == GAIA_DXF_FORCE_3D) + ; + else + { + if (is_3d_line (ln)) + dxf->curr_block.is3Dpolyg = 1; + } + } + else + { + /* it's a Linestring */ + if (dxf->curr_block.first_line == NULL) + dxf->curr_block.first_line = ln; + if (dxf->curr_block.last_line != NULL) + dxf->curr_block.last_line->next = ln; + dxf->curr_block.last_line = ln; + if (dxf->force_dims == GAIA_DXF_FORCE_2D + || dxf->force_dims == GAIA_DXF_FORCE_3D) + ; + else + { + if (is_3d_line (ln)) + dxf->curr_block.is3Dline = 1; + } + } + ln->first = dxf->first_ext; + ln->last = dxf->last_ext; + dxf->first_ext = NULL; + dxf->last_ext = NULL; +} + +static gaiaDxfBlockPtr +alloc_dxf_block (const char *layer, const char *id) +{ +/* allocating and initializing a DXF Block object */ + int len; + gaiaDxfBlockPtr blk = malloc (sizeof (gaiaDxfBlock)); + blk->hasInsert = 0; + len = strlen (layer); + blk->layer_name = malloc (len + 1); + strcpy (blk->layer_name, layer); + len = strlen (id); + blk->block_id = malloc (len + 1); + strcpy (blk->block_id, id); + blk->first_text = NULL; + blk->last_text = NULL; + blk->first_point = NULL; + blk->last_point = NULL; + blk->first_line = NULL; + blk->last_line = NULL; + blk->first_polyg = NULL; + blk->last_polyg = NULL; + blk->first_hatch = NULL; + blk->last_hatch = NULL; + blk->is3Dtext = 0; + blk->is3Dpoint = 0; + blk->is3Dline = 0; + blk->is3Dpolyg = 0; + blk->next = NULL; + return blk; +} + +static void +destroy_dxf_block (gaiaDxfBlockPtr blk) +{ +/* memory cleanup - destroying a DXF Block object */ + gaiaDxfTextPtr txt; + gaiaDxfTextPtr n_txt; + gaiaDxfPointPtr pt; + gaiaDxfPointPtr n_pt; + gaiaDxfPolylinePtr ln; + gaiaDxfPolylinePtr n_ln; + gaiaDxfHatchPtr htc; + gaiaDxfHatchPtr n_htc; + if (blk == NULL) + return; + if (blk->layer_name != NULL) + free (blk->layer_name); + if (blk->block_id != NULL) + free (blk->block_id); + txt = blk->first_text; + while (txt != NULL) + { + n_txt = txt->next; + destroy_dxf_text (txt); + txt = n_txt; + } + pt = blk->first_point; + while (pt != NULL) + { + n_pt = pt->next; + destroy_dxf_point (pt); + pt = n_pt; + } + ln = blk->first_line; + while (ln != NULL) + { + n_ln = ln->next; + destroy_dxf_polyline (ln); + ln = n_ln; + } + ln = blk->first_polyg; + while (ln != NULL) + { + n_ln = ln->next; + destroy_dxf_polyline (ln); + ln = n_ln; + } + htc = blk->first_hatch; + while (htc != NULL) + { + n_htc = htc->next; + destroy_dxf_hatch (htc); + htc = n_htc; + } + free (blk); +} + +static void +insert_dxf_block (gaiaDxfParserPtr dxf) +{ +/* inserting a DXF Block object */ + gaiaDxfBlockPtr blk; + int ok = 0; + if (dxf->curr_block.layer_name == NULL) + return; + if (dxf->curr_block.block_id == NULL) + return; + if (dxf->curr_block.first_text != NULL) + ok++; + if (dxf->curr_block.first_point != NULL) + ok++; + if (dxf->curr_block.first_line != NULL) + ok++; + if (dxf->curr_block.first_polyg != NULL) + ok++; + if (dxf->curr_block.first_hatch != NULL) + ok++; + if (ok == 0) + return; + blk = + alloc_dxf_block (dxf->curr_block.layer_name, dxf->curr_block.block_id); + blk->first_text = dxf->curr_block.first_text; + blk->last_text = dxf->curr_block.last_text; + dxf->curr_block.first_text = NULL; + dxf->curr_block.last_text = NULL; + blk->first_point = dxf->curr_block.first_point; + blk->last_point = dxf->curr_block.last_point; + dxf->curr_block.first_point = NULL; + dxf->curr_block.last_point = NULL; + blk->first_line = dxf->curr_block.first_line; + blk->last_line = dxf->curr_block.last_line; + dxf->curr_block.first_line = NULL; + dxf->curr_block.last_line = NULL; + blk->first_polyg = dxf->curr_block.first_polyg; + blk->last_polyg = dxf->curr_block.last_polyg; + dxf->curr_block.first_polyg = NULL; + dxf->curr_block.last_polyg = NULL; + blk->first_hatch = dxf->curr_block.first_hatch; + blk->last_hatch = dxf->curr_block.last_hatch; + dxf->curr_block.first_hatch = NULL; + dxf->curr_block.last_hatch = NULL; + + if (dxf->first_block == NULL) + dxf->first_block = blk; + if (dxf->last_block != NULL) + dxf->last_block->next = blk; + dxf->last_block = blk; +} + +static gaiaDxfLayerPtr +alloc_dxf_layer (const char *name, int force_dims) +{ +/* allocating and initializing a DXF Layer object */ + int len; + gaiaDxfLayerPtr lyr = malloc (sizeof (gaiaDxfLayer)); + len = strlen (name); + lyr->layer_name = malloc (len + 1); + strcpy (lyr->layer_name, name); + lyr->first_text = NULL; + lyr->last_text = NULL; + lyr->first_point = NULL; + lyr->last_point = NULL; + lyr->first_line = NULL; + lyr->last_line = NULL; + lyr->first_polyg = NULL; + lyr->last_polyg = NULL; + lyr->first_hatch = NULL; + lyr->last_hatch = NULL; + lyr->first_ins_text = NULL; + lyr->last_ins_text = NULL; + lyr->first_ins_point = NULL; + lyr->last_ins_point = NULL; + lyr->first_ins_line = NULL; + lyr->last_ins_line = NULL; + lyr->first_ins_polyg = NULL; + lyr->last_ins_polyg = NULL; + lyr->first_ins_hatch = NULL; + lyr->last_ins_hatch = NULL; + if (force_dims == GAIA_DXF_FORCE_3D) + { + lyr->is3Dtext = 1; + lyr->is3Dpoint = 1; + lyr->is3Dline = 1; + lyr->is3Dpolyg = 1; + lyr->is3DinsText = 1; + lyr->is3DinsPoint = 1; + lyr->is3DinsLine = 1; + lyr->is3DinsPolyg = 1; + } + else + { + lyr->is3Dtext = 0; + lyr->is3Dpoint = 0; + lyr->is3Dline = 0; + lyr->is3Dpolyg = 0; + lyr->is3DinsText = 0; + lyr->is3DinsPoint = 0; + lyr->is3DinsLine = 0; + lyr->is3DinsPolyg = 0; + } + lyr->hasExtraText = 0; + lyr->hasExtraPoint = 0; + lyr->hasExtraLine = 0; + lyr->hasExtraPolyg = 0; + lyr->hasExtraInsText = 0; + lyr->hasExtraInsPoint = 0; + lyr->hasExtraInsLine = 0; + lyr->hasExtraInsPolyg = 0; + lyr->next = NULL; + return lyr; +} + +static void +destroy_dxf_layer (gaiaDxfLayerPtr lyr) +{ +/* memory cleanup - destroying a DXF Layer object */ + gaiaDxfTextPtr txt; + gaiaDxfTextPtr n_txt; + gaiaDxfPointPtr pt; + gaiaDxfPointPtr n_pt; + gaiaDxfPolylinePtr ln; + gaiaDxfPolylinePtr n_ln; + gaiaDxfHatchPtr ht; + gaiaDxfHatchPtr n_ht; + gaiaDxfInsertPtr ins; + gaiaDxfInsertPtr n_ins; + if (lyr == NULL) + return; + txt = lyr->first_text; + while (txt != NULL) + { + n_txt = txt->next; + destroy_dxf_text (txt); + txt = n_txt; + } + pt = lyr->first_point; + while (pt != NULL) + { + n_pt = pt->next; + destroy_dxf_point (pt); + pt = n_pt; + } + ln = lyr->first_line; + while (ln != NULL) + { + n_ln = ln->next; + destroy_dxf_polyline (ln); + ln = n_ln; + } + ln = lyr->first_polyg; + while (ln != NULL) + { + n_ln = ln->next; + destroy_dxf_polyline (ln); + ln = n_ln; + } + ht = lyr->first_hatch; + while (ht != NULL) + { + n_ht = ht->next; + destroy_dxf_hatch (ht); + ht = n_ht; + } + ins = lyr->first_ins_text; + while (ins != NULL) + { + n_ins = ins->next; + destroy_dxf_insert (ins); + ins = n_ins; + } + ins = lyr->first_ins_point; + while (ins != NULL) + { + n_ins = ins->next; + destroy_dxf_insert (ins); + ins = n_ins; + } + ins = lyr->first_ins_line; + while (ins != NULL) + { + n_ins = ins->next; + destroy_dxf_insert (ins); + ins = n_ins; + } + ins = lyr->first_ins_polyg; + while (ins != NULL) + { + n_ins = ins->next; + destroy_dxf_insert (ins); + ins = n_ins; + } + ins = lyr->first_ins_hatch; + while (ins != NULL) + { + n_ins = ins->next; + destroy_dxf_insert (ins); + ins = n_ins; + } + if (lyr->layer_name != NULL) + free (lyr->layer_name); + free (lyr); +} + +static void +insert_dxf_layer (gaiaDxfParserPtr dxf, gaiaDxfLayerPtr lyr) +{ +/* inserting a Layer object into the DXF struct */ + if (dxf->first_layer == NULL) + dxf->first_layer = lyr; + if (dxf->last_layer != NULL) + dxf->last_layer->next = lyr; + dxf->last_layer = lyr; +} + +static void +force_missing_layer (gaiaDxfParserPtr dxf) +{ +/* forcing undeclared layers [missing TABLES section] */ + int ok_layer = 1; + if (dxf->undeclared_layers == 0) + return; + if (dxf->selected_layer != NULL) + { + ok_layer = 0; + if (strcmp (dxf->selected_layer, dxf->curr_layer_name) == 0) + ok_layer = 1; + } + if (ok_layer) + { + int already_defined = 0; + gaiaDxfLayerPtr lyr = dxf->first_layer; + while (lyr != NULL) + { + if (strcmp (lyr->layer_name, dxf->curr_layer_name) == 0) + { + already_defined = 1; + break; + } + lyr = lyr->next; + } + if (already_defined) + return; + lyr = alloc_dxf_layer (dxf->curr_layer_name, dxf->force_dims); + insert_dxf_layer (dxf, lyr); + } +} + +static void +set_dxf_vertex (gaiaDxfParserPtr dxf) +{ +/* saving the current Polyline Vertex */ + gaiaDxfPointPtr pt = malloc (sizeof (gaiaDxfPoint)); + pt->x = dxf->curr_point.x; + pt->y = dxf->curr_point.y; + pt->z = dxf->curr_point.z; + pt->first = NULL; + pt->last = NULL; + pt->next = NULL; + if (dxf->first_pt == NULL) + dxf->first_pt = pt; + if (dxf->last_pt != NULL) + dxf->last_pt->next = pt; + dxf->last_pt = pt; + dxf->curr_point.x = 0.0; + dxf->curr_point.y = 0.0; + dxf->curr_point.z = 0.0; +} + +static void +save_current_polyline (const void *p_cache, gaiaDxfParserPtr dxf) +{ +/* saving the current Polyline */ + int points = 0; + gaiaDxfPolylinePtr ln; + gaiaDxfPointPtr n_pt; + gaiaDxfPointPtr pt; + if (dxf->curr_layer_name == NULL) + goto clear; + pt = dxf->first_pt; + while (pt != NULL) + { + /* counting how many vertices are into the polyline */ + points++; + pt = pt->next; + } + ln = alloc_dxf_polyline (dxf->is_closed_polyline, points); + points = 0; + pt = dxf->first_pt; + while (pt != NULL) + { + /* setting vertices into the polyline */ + *(ln->x + points) = pt->x; + *(ln->y + points) = pt->y; + *(ln->z + points) = pt->z; + points++; + pt = pt->next; + } + if (dxf->is_block) + insert_dxf_block_polyline (p_cache, dxf, ln); + else + { + force_missing_layer (dxf); + insert_dxf_polyline (p_cache, dxf, dxf->curr_layer_name, ln); + } + /* resetting the current polyline */ + clear: + pt = dxf->first_pt; + while (pt != NULL) + { + n_pt = pt->next; + destroy_dxf_point (pt); + pt = n_pt; + } + /* resetting curr_layer */ + if (dxf->curr_layer_name != NULL) + free (dxf->curr_layer_name); + dxf->curr_layer_name = NULL; + dxf->first_pt = NULL; + dxf->last_pt = NULL; +} + +static void +reset_dxf_polyline (const void *p_cache, gaiaDxfParserPtr dxf) +{ +/* resetting the current DXF polyline */ + if (dxf->is_polyline) + { + if (dxf->first_pt != NULL) + save_current_polyline (p_cache, dxf); + dxf->is_polyline = 0; + } +} + +static void +reset_dxf_block (gaiaDxfParserPtr dxf) +{ +/* memory cleanup - resetting the current DXF Block */ + gaiaDxfTextPtr txt; + gaiaDxfTextPtr n_txt; + gaiaDxfPointPtr pt; + gaiaDxfPointPtr n_pt; + gaiaDxfPolylinePtr ln; + gaiaDxfPolylinePtr n_ln; + gaiaDxfHatchPtr htc; + gaiaDxfHatchPtr n_htc; + if (dxf->curr_block.layer_name != NULL) + free (dxf->curr_block.layer_name); + if (dxf->curr_block.block_id != NULL) + free (dxf->curr_block.block_id); + txt = dxf->curr_block.first_text; + while (txt != NULL) + { + n_txt = txt->next; + destroy_dxf_text (txt); + txt = n_txt; + } + pt = dxf->curr_block.first_point; + while (pt != NULL) + { + n_pt = pt->next; + destroy_dxf_point (pt); + pt = n_pt; + } + ln = dxf->curr_block.first_line; + while (ln != NULL) + { + n_ln = ln->next; + destroy_dxf_polyline (ln); + ln = n_ln; + } + ln = dxf->curr_block.first_polyg; + while (ln != NULL) + { + n_ln = ln->next; + destroy_dxf_polyline (ln); + ln = n_ln; + } + htc = dxf->curr_block.first_hatch; + while (htc != NULL) + { + n_htc = htc->next; + destroy_dxf_hatch (htc); + htc = n_htc; + } + dxf->curr_block.layer_name = NULL; + dxf->curr_block.block_id = NULL; + dxf->curr_block.first_text = NULL; + dxf->curr_block.last_text = NULL; + dxf->curr_block.first_point = NULL; + dxf->curr_block.last_point = NULL; + dxf->curr_block.first_line = NULL; + dxf->curr_block.last_line = NULL; + dxf->curr_block.first_polyg = NULL; + dxf->curr_block.last_polyg = NULL; + dxf->curr_block.first_hatch = NULL; + dxf->curr_block.last_hatch = NULL; + dxf->curr_block.is3Dtext = 0; + dxf->curr_block.is3Dpoint = 0; + dxf->curr_block.is3Dline = 0; + dxf->curr_block.is3Dpolyg = 0; +} + +static gaiaDxfBlockPtr +find_dxf_block (gaiaDxfParserPtr dxf, const char *layer_name, + const char *block_id) +{ +/* attempting to find a Block object by its Id */ + gaiaDxfBlockPtr blk = dxf->first_block; + while (blk != NULL) + { + if (layer_name != NULL && block_id != NULL) + { + if (strcmp (blk->layer_name, layer_name) == 0 + && strcmp (blk->block_id, block_id) == 0) + { + /* ok, matching item found */ + return blk; + } + } + blk = blk->next; + } + return NULL; +} + +static void +save_current_circle (const void *p_cache, gaiaDxfParserPtr dxf) +{ +/* saving the current Circle */ + int iv; + double x; + double y; + gaiaGeomCollPtr geom = NULL; + gaiaLinestringPtr circle; + gaiaDxfPolylinePtr ln; + if (dxf->curr_layer_name == NULL) + return; + geom = + gaiaMakeCircle (dxf->curr_circle.cx, dxf->curr_circle.cy, + dxf->curr_circle.radius, 2.5); + if (geom == NULL) + goto stop; + circle = geom->FirstLinestring; + if (circle == NULL) + goto stop; + ln = alloc_dxf_polyline (0, circle->Points); + for (iv = 0; iv < circle->Points; iv++) + { + /* setting vertices into the polyline */ + gaiaGetPoint (circle->Coords, iv, &x, &y); + *(ln->x + iv) = x; + *(ln->y + iv) = y; + *(ln->z + iv) = dxf->curr_circle.cz; + } + if (dxf->is_block) + insert_dxf_block_polyline (p_cache, dxf, ln); + else + { + force_missing_layer (dxf); + insert_dxf_polyline (p_cache, dxf, dxf->curr_layer_name, ln); + } + stop: + /* resetting curr_layer */ + if (dxf->curr_layer_name != NULL) + free (dxf->curr_layer_name); + dxf->curr_layer_name = NULL; + if (geom != NULL) + gaiaFreeGeomColl (geom); +} + +static void +save_current_arc (const void *p_cache, gaiaDxfParserPtr dxf) +{ +/* saving the current Arc */ + int iv; + double x; + double y; + gaiaGeomCollPtr geom; + gaiaLinestringPtr arc; + gaiaDxfPolylinePtr ln; + if (dxf->curr_layer_name == NULL) + return; + geom = + gaiaMakeArc (dxf->curr_arc.cx, dxf->curr_arc.cy, dxf->curr_arc.radius, + dxf->curr_arc.start, dxf->curr_arc.stop, 2.5); + if (geom == NULL) + goto stop; + arc = geom->FirstLinestring; + if (arc == NULL) + goto stop; + ln = alloc_dxf_polyline (0, arc->Points); + for (iv = 0; iv < arc->Points; iv++) + { + /* setting vertices into the polyline */ + gaiaGetPoint (arc->Coords, iv, &x, &y); + *(ln->x + iv) = x; + *(ln->y + iv) = y; + *(ln->z + iv) = dxf->curr_arc.cz; + } + if (dxf->is_block) + insert_dxf_block_polyline (p_cache, dxf, ln); + else + { + force_missing_layer (dxf); + insert_dxf_polyline (p_cache, dxf, dxf->curr_layer_name, ln); + } + stop: + /* resetting curr_layer */ + if (dxf->curr_layer_name != NULL) + free (dxf->curr_layer_name); + dxf->curr_layer_name = NULL; + if (geom != NULL) + gaiaFreeGeomColl (geom); +} + +static void +reset_dxf_entity (const void *p_cache, gaiaDxfParserPtr dxf) +{ +/* resetting the current DXF entity */ + gaiaDxfExtraAttrPtr ext; + gaiaDxfExtraAttrPtr n_ext; + if (dxf->is_vertex) + { + /* saving the current Vertex */ + set_dxf_vertex (dxf); + dxf->is_vertex = 0; + return; + } + if (dxf->is_polyline) + return; + if (dxf->is_layer) + { + /* saving the current Table aka Layer */ + int ok_layer = 1; + if (dxf->selected_layer != NULL) + { + ok_layer = 0; + if (strcmp (dxf->selected_layer, dxf->curr_layer_name) == 0) + ok_layer = 1; + } + if (ok_layer) + { + gaiaDxfLayerPtr lyr = + alloc_dxf_layer (dxf->curr_layer_name, dxf->force_dims); + insert_dxf_layer (dxf, lyr); + dxf->undeclared_layers = 0; + } + /* resetting curr_layer */ + if (dxf->curr_layer_name != NULL) + free (dxf->curr_layer_name); + dxf->curr_layer_name = NULL; + dxf->is_layer = 0; + } + if (dxf->is_insert) + { + gaiaDxfBlockPtr blk = find_dxf_block (dxf, dxf->curr_layer_name, + dxf->curr_insert.block_id); + if (blk != NULL) + { + /* saving the current Insert */ + gaiaDxfInsertPtr ins = + alloc_dxf_insert (dxf->curr_insert.block_id, + dxf->curr_insert.x, + dxf->curr_insert.y, dxf->curr_insert.z, + dxf->curr_insert.scale_x, + dxf->curr_insert.scale_y, + dxf->curr_insert.scale_z, + dxf->curr_insert.angle); + blk->hasInsert = 1; + if (blk->first_text != NULL) + { + ins->hasText = 1; + if (blk->is3Dtext) + ins->is3Dtext = 1; + } + if (blk->first_point != NULL) + { + ins->hasPoint = 1; + if (blk->is3Dpoint) + ins->is3Dpoint = 1; + } + if (blk->first_line != NULL) + { + ins->hasLine = 1; + if (blk->is3Dline) + ins->is3Dline = 1; + } + if (blk->first_polyg != NULL) + { + ins->hasPolyg = 1; + if (blk->is3Dpolyg) + ins->is3Dpolyg = 1; + } + if (blk->first_hatch != NULL) + ins->hasHatch = 1; + force_missing_layer (dxf); + insert_dxf_insert (dxf, dxf->curr_layer_name, ins); + } + /* resetting curr_insert */ + dxf->curr_insert.x = 0.0; + dxf->curr_insert.y = 0.0; + dxf->curr_insert.z = 0.0; + dxf->curr_insert.scale_x = 0.0; + dxf->curr_insert.scale_y = 0.0; + dxf->curr_insert.scale_z = 0.0; + dxf->curr_insert.angle = 0.0; + dxf->curr_insert.is3Dtext = 0; + dxf->curr_insert.is3Dpoint = 0; + dxf->curr_insert.is3Dline = 0; + dxf->curr_insert.is3Dpolyg = 0; + if (dxf->curr_insert.block_id != NULL) + free (dxf->curr_insert.block_id); + dxf->curr_insert.block_id = NULL; + dxf->is_insert = 0; + /* resetting curr_layer */ + if (dxf->curr_layer_name != NULL) + free (dxf->curr_layer_name); + dxf->curr_layer_name = NULL; + } + if (dxf->is_line) + { + /* saving the current Line */ + gaiaDxfPolylinePtr ln = + alloc_dxf_line (dxf->curr_point.x, dxf->curr_point.y, + dxf->curr_point.z, + dxf->curr_end_point.x, dxf->curr_end_point.y, + dxf->curr_end_point.z); + if (dxf->is_block) + insert_dxf_block_polyline (p_cache, dxf, ln); + else + { + force_missing_layer (dxf); + insert_dxf_polyline (p_cache, dxf, dxf->curr_layer_name, ln); + } + /* resetting curr_line */ + dxf->curr_point.x = 0.0; + dxf->curr_point.y = 0.0; + dxf->curr_point.z = 0.0; + dxf->curr_end_point.x = 0.0; + dxf->curr_end_point.y = 0.0; + dxf->curr_end_point.z = 0.0; + dxf->is_line = 0; + /* resetting curr_layer */ + if (dxf->curr_layer_name != NULL) + free (dxf->curr_layer_name); + dxf->curr_layer_name = NULL; + } + if (dxf->is_hatch) + { + /* saving the current hatch */ + if (dxf->curr_hatch != NULL) + { + if (is_valid_dxf_hatch (dxf->curr_hatch)) + { + create_dxf_hatch_lines (p_cache, dxf->curr_hatch, + dxf->srid); + if (dxf->is_block) + insert_dxf_block_hatch (dxf, dxf->curr_hatch); + else + { + force_missing_layer (dxf); + insert_dxf_hatch (dxf, dxf->curr_layer_name, + dxf->curr_hatch); + } + dxf->curr_hatch = NULL; + } + } + dxf->is_hatch = 0; + /* resetting curr_layer */ + if (dxf->curr_layer_name != NULL) + free (dxf->curr_layer_name); + dxf->curr_layer_name = NULL; + } + if (dxf->is_text) + { + /* saving the current Text */ + gaiaDxfTextPtr txt = + alloc_dxf_text (dxf->curr_text.label, dxf->curr_text.x, + dxf->curr_text.y, dxf->curr_text.z, + dxf->curr_text.angle); + if (dxf->is_block) + insert_dxf_block_text (dxf, txt); + else + { + force_missing_layer (dxf); + insert_dxf_text (dxf, dxf->curr_layer_name, txt); + } + /* resetting curr_text */ + dxf->curr_text.x = 0.0; + dxf->curr_text.y = 0.0; + dxf->curr_text.z = 0.0; + dxf->curr_text.angle = 0.0; + if (dxf->curr_text.label != NULL) + free (dxf->curr_text.label); + dxf->curr_text.label = NULL; + dxf->is_text = 0; + /* resetting curr_layer */ + if (dxf->curr_layer_name != NULL) + free (dxf->curr_layer_name); + dxf->curr_layer_name = NULL; + } + if (dxf->is_point) + { + /* saving the current Point */ + gaiaDxfPointPtr pt = + alloc_dxf_point (dxf->curr_point.x, dxf->curr_point.y, + dxf->curr_point.z); + if (dxf->is_block) + insert_dxf_block_point (dxf, pt); + else + { + force_missing_layer (dxf); + insert_dxf_point (dxf, dxf->curr_layer_name, pt); + } + /* resetting curr_point */ + dxf->curr_point.x = 0.0; + dxf->curr_point.y = 0.0; + dxf->curr_point.z = 0.0; + dxf->is_point = 0; + /* resetting curr_layer */ + if (dxf->curr_layer_name != NULL) + free (dxf->curr_layer_name); + dxf->curr_layer_name = NULL; + } + if (dxf->is_lwpolyline) + { + /* saving the current Polyline */ + save_current_polyline (p_cache, dxf); + dxf->is_lwpolyline = 0; + } + if (dxf->is_circle) + { + /* saving the current Circle */ + save_current_circle (p_cache, dxf); + /* resetting curr_circle */ + dxf->curr_circle.cx = 0.0; + dxf->curr_circle.cy = 0.0; + dxf->curr_circle.cz = 0.0; + dxf->curr_circle.radius = 0.0; + dxf->is_circle = 0; + /* resetting curr_layer */ + if (dxf->curr_layer_name != NULL) + free (dxf->curr_layer_name); + dxf->curr_layer_name = NULL; + } + if (dxf->is_arc) + { + /* saving the current Arc */ + save_current_arc (p_cache, dxf); + /* resetting curr_arc */ + dxf->curr_arc.cx = 0.0; + dxf->curr_arc.cy = 0.0; + dxf->curr_arc.cz = 0.0; + dxf->curr_arc.radius = 0.0; + dxf->curr_arc.start = 0.0; + dxf->curr_arc.stop = 0.0; + dxf->is_arc = 0; + /* resetting curr_layer */ + if (dxf->curr_layer_name != NULL) + free (dxf->curr_layer_name); + dxf->curr_layer_name = NULL; + } + if (dxf->extra_key != NULL) + free (dxf->extra_key); + if (dxf->extra_value != NULL) + free (dxf->extra_value); + ext = dxf->first_ext; + while (ext != NULL) + { + n_ext = ext->next; + destroy_dxf_extra (ext); + ext = n_ext; + } + dxf->first_ext = NULL; + dxf->last_ext = NULL; + if (dxf->curr_hatch != NULL) + destroy_dxf_hatch (dxf->curr_hatch); + dxf->curr_hatch = NULL; +} + +static void +set_dxf_layer_name (gaiaDxfParserPtr dxf, const char *name) +{ +/* saving the current Layer Name */ + int len; + if (dxf->curr_layer_name != NULL) + free (dxf->curr_layer_name); + len = strlen (name); + dxf->curr_layer_name = malloc (len + 1); + strcpy (dxf->curr_layer_name, name); +} + +static void +set_dxf_block_layer_name (gaiaDxfParserPtr dxf, const char *name) +{ +/* saving the current Block Layer Name */ + int len; + if (dxf->curr_block.layer_name != NULL) + free (dxf->curr_block.layer_name); + len = strlen (name); + dxf->curr_block.layer_name = malloc (len + 1); + strcpy (dxf->curr_block.layer_name, name); +} + +static void +set_dxf_block_id (gaiaDxfParserPtr dxf, const char *id) +{ +/* saving the current Block Id */ + int len; + if (dxf->curr_block.block_id != NULL) + free (dxf->curr_block.block_id); + len = strlen (id); + dxf->curr_block.block_id = malloc (len + 1); + strcpy (dxf->curr_block.block_id, id); +} + +static void +set_dxf_insert_block_id (gaiaDxfParserPtr dxf, const char *id) +{ +/* saving the current Block Id */ + int len; + if (dxf->curr_insert.block_id != NULL) + free (dxf->curr_insert.block_id); + len = strlen (id); + dxf->curr_insert.block_id = malloc (len + 1); + strcpy (dxf->curr_insert.block_id, id); +} + +static void +set_dxf_label (gaiaDxfParserPtr dxf, const char *label) +{ +/* saving the current Text Label */ + int len; + if (dxf->curr_text.label != NULL) + free (dxf->curr_text.label); + len = strlen (label); + dxf->curr_text.label = malloc (len + 1); + strcpy (dxf->curr_text.label, label); +} + +static void +set_dxf_extra_attr (gaiaDxfParserPtr dxf) +{ +/* saving the current Extra Attribute */ + gaiaDxfExtraAttrPtr ext = alloc_dxf_extra (); + ext->key = dxf->extra_key; + ext->value = dxf->extra_value; + if (dxf->first_ext == NULL) + dxf->first_ext = ext; + if (dxf->last_ext != NULL) + dxf->last_ext->next = ext; + dxf->last_ext = ext; + dxf->extra_key = NULL; + dxf->extra_value = NULL; +} + +static void +set_dxf_extra_key (gaiaDxfParserPtr dxf, const char *key) +{ +/* saving the current Extra Attribute Key */ + int len; + if (dxf->extra_key != NULL) + free (dxf->extra_key); + len = strlen (key); + dxf->extra_key = malloc (len + 1); + strcpy (dxf->extra_key, key); + if (dxf->extra_key != NULL && dxf->extra_value != NULL) + set_dxf_extra_attr (dxf); +} + +static void +set_dxf_extra_value (gaiaDxfParserPtr dxf, const char *value) +{ +/* saving the current Extra Attribute Value */ + int len; + if (dxf->extra_value != NULL) + free (dxf->extra_value); + len = strlen (value); + dxf->extra_value = malloc (len + 1); + strcpy (dxf->extra_value, value); + if (dxf->extra_key != NULL && dxf->extra_value != NULL) + set_dxf_extra_attr (dxf); +} + +static void +create_dxf_curr_hatch (gaiaDxfParserPtr dxf) +{ +/* creating the current Hatch being parsed */ + if (dxf->curr_hatch != NULL) + destroy_dxf_hatch (dxf->curr_hatch); + dxf->curr_hatch = alloc_dxf_hatch (); +} + +static void +start_dxf_hatch_boundary (gaiaDxfParserPtr dxf) +{ +/* starting a new Hatch Boundary Path */ + if (dxf->curr_hatch != NULL) + { + gaiaDxfBoundaryPathPtr path = alloc_dxf_boundary_path (); + insert_dxf_boundary_path (dxf->curr_hatch, path); + dxf->is_hatch_boundary = 1; + } +} + +static void +insert_dxf_hatch_boundary_segm (gaiaDxfParserPtr dxf) +{ + if (dxf->curr_hatch != NULL) + { + gaiaDxfBoundaryPathPtr path = dxf->curr_hatch->last; + if (path != NULL) + { + gaiaDxfHatchSegmPtr segm = + alloc_dxf_hatch_segm (dxf->curr_point.x, dxf->curr_point.y, + dxf->curr_end_point.x, + dxf->curr_end_point.y); + insert_dxf_boundary_segm (path, segm); + } + } + dxf->curr_point.x = 0.0; + dxf->curr_point.y = 0.0; + dxf->curr_point.z = 0.0; + dxf->curr_end_point.x = 0.0; + dxf->curr_end_point.y = 0.0; + dxf->curr_end_point.z = 0.0; +} + +static void +set_dxf_hatch_spacing (gaiaDxfParserPtr dxf, double spacing) +{ +/* saving the current Hatch spacing */ + if (dxf->curr_hatch != NULL) + dxf->curr_hatch->spacing = spacing; +} + +static void +set_dxf_hatch_angle (gaiaDxfParserPtr dxf, double angle) +{ +/* saving the current Hatch angle */ + if (dxf->curr_hatch != NULL) + dxf->curr_hatch->angle = angle; +} + +static void +set_dxf_hatch_base_x (gaiaDxfParserPtr dxf, double x) +{ +/* saving the current Hatch base X */ + if (dxf->curr_hatch != NULL) + dxf->curr_hatch->base_x = x; +} + +static void +set_dxf_hatch_base_y (gaiaDxfParserPtr dxf, double y) +{ +/* saving the current Hatch base Y */ + if (dxf->curr_hatch != NULL) + dxf->curr_hatch->base_y = y; +} + +static void +set_dxf_hatch_offset_x (gaiaDxfParserPtr dxf, double x) +{ +/* saving the current Hatch offset X */ + if (dxf->curr_hatch != NULL) + dxf->curr_hatch->offset_x = x; +} + +static void +set_dxf_hatch_offset_y (gaiaDxfParserPtr dxf, double y) +{ +/* saving the current Hatch offset Y */ + if (dxf->curr_hatch != NULL) + dxf->curr_hatch->offset_y = y; +} + +static int +op_code_line (const char *line) +{ +/* checking for a valid op-code */ + int numdigit = 0; + int invalid = 0; + const char *p = line; + while (*p != '\0') + { + /* skipping leading white-spaces */ + if (*p == ' ' || *p == '\t') + { + p++; + continue; + } + else + break; + } + while (*p != '\0') + { + /* evaluating each character */ + if (*p >= '0' && *p <= '9') + { + numdigit++; + p++; + continue; + } + else + { + invalid = 1; + break; + } + } + if (numdigit > 0 && invalid == 0) + return 1; + return 0; +} + +static int +parse_dxf_line (const void *p_cache, gaiaDxfParserPtr dxf, const char *line) +{ +/* parsing a DXF line */ + dxf->line_no += 1; + + if (dxf->tables || dxf->entities || dxf->blocks) + { + /* handling OP-CODE lines */ + if (dxf->op_code_line) + { + if (!op_code_line (line)) + { + /* unexpected value */ + spatialite_e + ("ERROR on line %d: expected on OP-CODE to be found\n", + dxf->line_no); + return 0; + } + dxf->op_code = atoi (line); + if (dxf->op_code == 0) + reset_dxf_entity (p_cache, dxf); + dxf->op_code_line = 0; + return 1; + } + dxf->op_code_line = 1; + } + if (dxf->eof) + { + /* reading past the end */ + spatialite_e ("ERROR on line %d: attempting to read past EOF\n", + dxf->line_no); + return 0; + } + if (strcmp (line, "SECTION") == 0) + { + /* start SECTION tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->section) + { + spatialite_e ("ERROR on line %d: unexpected SECTION\n", + dxf->line_no); + dxf->error = 1; + return 0; + } + dxf->section = 1; + return 1; + } + if (strcmp (line, "ENDSEC") == 0) + { + /* end SECTION tag */ + reset_dxf_polyline (p_cache, dxf); + if (!dxf->section) + { + spatialite_e ("ERROR on line %d: unexpected ENDSEC\n", + dxf->line_no); + dxf->error = 1; + return 0; + } + dxf->section = 0; + dxf->tables = 0; + dxf->blocks = 0; + dxf->is_block = 0; + dxf->entities = 0; + return 1; + } + if (strcmp (line, "TABLES") == 0) + { + /* start TABLES tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->section) + { + dxf->tables = 1; + dxf->op_code_line = 1; + return 1; + } + } + if (strcmp (line, "BLOCKS") == 0) + { + /* start BLOCKS tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->section) + { + dxf->blocks = 1; + dxf->op_code_line = 1; + return 1; + } + } + if (strcmp (line, "BLOCK") == 0) + { + /* start BLOCK tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->blocks) + { + dxf->is_block = 1; + dxf->op_code_line = 1; + return 1; + } + } + if (strcmp (line, "ENDBLK") == 0) + { + /* end BLOCK tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->is_block) + { + insert_dxf_block (dxf); + dxf->is_block = 0; + dxf->op_code_line = 1; + return 1; + } + } + if (strcmp (line, "ENTITIES") == 0) + { + /* start ENTITIES tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->section) + { + dxf->entities = 1; + dxf->op_code_line = 1; + return 1; + } + } + if (strcmp (line, "LAYER") == 0) + { + /* start LAYER tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->tables && dxf->op_code == 0) + { + dxf->is_layer = 1; + return 1; + } + } + if (strcmp (line, "INSERT") == 0) + { + /* start INSERT tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->entities && dxf->op_code == 0) + { + dxf->is_insert = 1; + return 1; + } + } + if (strcmp (line, "INSERT") == 0) + { + /* start INSERT tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->entities && dxf->op_code == 0) + { + dxf->is_insert = 1; + return 1; + } + } + if (strcmp (line, "TEXT") == 0) + { + /* start TEXT tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->entities && dxf->op_code == 0) + { + dxf->is_text = 1; + return 1; + } + if (dxf->is_block && dxf->op_code == 0) + { + dxf->is_text = 1; + return 1; + } + } + if (strcmp (line, "POINT") == 0) + { + /* start POINT tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->entities && dxf->op_code == 0) + { + dxf->is_point = 1; + return 1; + } + if (dxf->is_block && dxf->op_code == 0) + { + dxf->is_point = 1; + return 1; + } + } + if (strcmp (line, "POLYLINE") == 0) + { + /* start POLYLINE tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->entities && dxf->op_code == 0) + { + dxf->is_polyline = 1; + return 1; + } + if (dxf->is_block && dxf->op_code == 0) + { + dxf->is_polyline = 1; + return 1; + } + } + if (strcmp (line, "LWPOLYLINE") == 0) + { + /* start LWPOLYLINE tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->entities && dxf->op_code == 0) + { + dxf->is_lwpolyline = 1; + return 1; + } + if (dxf->is_block && dxf->op_code == 0) + { + dxf->is_lwpolyline = 1; + return 1; + } + } + if (strcmp (line, "LINE") == 0) + { + /* start LINE tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->entities && dxf->op_code == 0) + { + dxf->is_line = 1; + return 1; + } + if (dxf->is_block && dxf->op_code == 0) + { + dxf->is_line = 1; + return 1; + } + } + if (strcmp (line, "CIRCLE") == 0) + { + /* start CIRCLE tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->entities && dxf->op_code == 0) + { + dxf->is_circle = 1; + return 1; + } + if (dxf->is_block && dxf->op_code == 0) + { + dxf->is_circle = 1; + return 1; + } + } + if (strcmp (line, "ARC") == 0) + { + /* start ARC tag */ + reset_dxf_polyline (p_cache, dxf); + if (dxf->entities && dxf->op_code == 0) + { + dxf->is_arc = 1; + return 1; + } + if (dxf->is_block && dxf->op_code == 0) + { + dxf->is_arc = 1; + return 1; + } + } + if (strcmp (line, "VERTEX") == 0) + { + /* start VERTEX tag */ + if (dxf->is_polyline && dxf->op_code == 0) + { + dxf->is_vertex = 1; + return 1; + } + } + if (strcmp (line, "HATCH") == 0) + { + /* start HATCH tag */ + if (dxf->entities && dxf->op_code == 0) + { + dxf->is_hatch = 1; + return 1; + } + if (dxf->is_block && dxf->op_code == 0) + { + dxf->is_hatch = 1; + return 1; + } + } + if (strcmp (line, "EOF") == 0) + { + /* end of file marker tag */ + reset_dxf_polyline (p_cache, dxf); + dxf->eof = 1; + return 1; + } + if (dxf->is_layer) + { + /* parsing Table attributes */ + switch (dxf->op_code) + { + case 2: + set_dxf_layer_name (dxf, line); + break; + }; + } + if (dxf->is_block) + { + /* parsing Block attributes */ + switch (dxf->op_code) + { + case 2: + set_dxf_block_id (dxf, line); + break; + case 8: + set_dxf_block_layer_name (dxf, line); + break; + }; + } + if (dxf->is_line) + { + /* parsing Line attributes */ + switch (dxf->op_code) + { + case 8: + set_dxf_layer_name (dxf, line); + break; + case 10: + dxf->curr_point.x = atof (line); + break; + case 20: + dxf->curr_point.y = atof (line); + break; + case 30: + dxf->curr_point.z = atof (line); + break; + case 11: + dxf->curr_end_point.x = atof (line); + break; + case 21: + dxf->curr_end_point.y = atof (line); + break; + case 31: + dxf->curr_end_point.z = atof (line); + break; + }; + } + if (dxf->is_circle) + { + /* parsing Circle attributes */ + switch (dxf->op_code) + { + case 8: + set_dxf_layer_name (dxf, line); + break; + case 10: + dxf->curr_circle.cx = atof (line); + break; + case 20: + dxf->curr_circle.cy = atof (line); + break; + case 30: + dxf->curr_circle.cz = atof (line); + break; + case 40: + dxf->curr_circle.radius = atof (line); + break; + }; + } + if (dxf->is_arc) + { + /* parsing Arc attributes */ + switch (dxf->op_code) + { + case 8: + set_dxf_layer_name (dxf, line); + break; + case 10: + dxf->curr_arc.cx = atof (line); + break; + case 20: + dxf->curr_arc.cy = atof (line); + break; + case 30: + dxf->curr_arc.cz = atof (line); + break; + case 40: + dxf->curr_arc.radius = atof (line); + break; + case 50: + dxf->curr_arc.start = atof (line); + break; + case 51: + dxf->curr_arc.stop = atof (line); + break; + }; + } + if (dxf->is_insert) + { + /* parsing Insert attributes */ + switch (dxf->op_code) + { + case 2: + set_dxf_insert_block_id (dxf, line); + break; + case 8: + set_dxf_layer_name (dxf, line); + break; + case 10: + dxf->curr_insert.x = atof (line); + break; + case 20: + dxf->curr_insert.y = atof (line); + break; + case 30: + dxf->curr_insert.z = atof (line); + break; + case 41: + dxf->curr_insert.scale_x = atof (line); + break; + case 42: + dxf->curr_insert.scale_y = atof (line); + break; + case 43: + dxf->curr_insert.scale_z = atof (line); + break; + case 50: + dxf->curr_insert.angle = atof (line); + break; + case 1000: + set_dxf_extra_value (dxf, line); + break; + case 1001: + set_dxf_extra_key (dxf, line); + break; + }; + } + if (dxf->is_text) + { + /* parsing Text attributes */ + switch (dxf->op_code) + { + case 1: + set_dxf_label (dxf, line); + break; + case 8: + set_dxf_layer_name (dxf, line); + break; + case 10: + dxf->curr_text.x = atof (line); + break; + case 20: + dxf->curr_text.y = atof (line); + break; + case 30: + dxf->curr_text.z = atof (line); + break; + case 50: + dxf->curr_text.angle = atof (line); + break; + case 1000: + set_dxf_extra_value (dxf, line); + break; + case 1001: + set_dxf_extra_key (dxf, line); + break; + }; + } + if (dxf->is_point) + { + /* parsing Point attributes */ + switch (dxf->op_code) + { + case 8: + set_dxf_layer_name (dxf, line); + break; + case 10: + dxf->curr_point.x = atof (line); + break; + case 20: + dxf->curr_point.y = atof (line); + break; + case 30: + dxf->curr_point.z = atof (line); + break; + case 1000: + set_dxf_extra_value (dxf, line); + break; + case 1001: + set_dxf_extra_key (dxf, line); + break; + }; + } + if (dxf->is_lwpolyline) + { + /* parsing LwPolyline attributes */ + switch (dxf->op_code) + { + case 8: + set_dxf_layer_name (dxf, line); + break; + case 10: + dxf->curr_point.x = atof (line); + break; + case 20: + dxf->curr_point.y = atof (line); + set_dxf_vertex (dxf); + break; + case 70: + if ((atoi (line) & 0x01) == 0x01) + dxf->is_closed_polyline = 1; + else + dxf->is_closed_polyline = 0; + break; + case 1000: + set_dxf_extra_value (dxf, line); + break; + case 1001: + set_dxf_extra_key (dxf, line); + break; + }; + } + if (dxf->is_polyline && dxf->is_vertex != 1) + { + /* parsing Polyline attributes */ + switch (dxf->op_code) + { + case 8: + set_dxf_layer_name (dxf, line); + break; + case 70: + if ((atoi (line) & 0x01) == 0x01) + dxf->is_closed_polyline = 1; + else + dxf->is_closed_polyline = 0; + break; + case 1000: + set_dxf_extra_value (dxf, line); + break; + case 1001: + set_dxf_extra_key (dxf, line); + break; + }; + } + if (dxf->is_vertex) + { + /* parsing Vertex attributes */ + switch (dxf->op_code) + { + case 10: + dxf->curr_point.x = atof (line); + break; + case 20: + dxf->curr_point.y = atof (line); + break; + case 30: + dxf->curr_point.z = atof (line); + break; + }; + } + if (dxf->is_hatch) + { + /* parsing Hatch attributes */ + switch (dxf->op_code) + { + case 8: + set_dxf_layer_name (dxf, line); + create_dxf_curr_hatch (dxf); + break; + case 10: + if (dxf->is_hatch_boundary) + dxf->curr_point.x = atof (line); + break; + case 20: + if (dxf->is_hatch_boundary) + dxf->curr_point.y = atof (line); + break; + case 11: + if (dxf->is_hatch_boundary) + dxf->curr_end_point.x = atof (line); + break; + case 21: + dxf->curr_end_point.y = atof (line); + insert_dxf_hatch_boundary_segm (dxf); + break; + case 41: + set_dxf_hatch_spacing (dxf, atof (line)); + break; + case 43: + set_dxf_hatch_base_x (dxf, atof (line)); + break; + case 44: + set_dxf_hatch_base_y (dxf, atof (line)); + break; + case 45: + set_dxf_hatch_offset_x (dxf, atof (line)); + break; + case 46: + set_dxf_hatch_offset_y (dxf, atof (line)); + break; + case 53: + set_dxf_hatch_angle (dxf, atof (line)); + break; + case 92: + start_dxf_hatch_boundary (dxf); + break; + case 97: + dxf->is_hatch_boundary = 0; + break; + }; + } + return 1; +} + +GAIAGEO_DECLARE gaiaDxfParserPtr +gaiaCreateDxfParser (int srid, + int force_dims, + const char *prefix, + const char *selected_layer, int special_rings) +{ +/* allocating and initializing a DXF parser object */ + gaiaDxfParserPtr dxf = malloc (sizeof (gaiaDxfParser)); + dxf->line_no = 0; + dxf->op_code_line = 0; + dxf->op_code = -1; + dxf->section = 0; + dxf->tables = 0; + dxf->blocks = 0; + dxf->entities = 0; + dxf->is_layer = 0; + dxf->is_block = 0; + dxf->is_text = 0; + dxf->is_point = 0; + dxf->is_polyline = 0; + dxf->is_lwpolyline = 0; + dxf->is_line = 0; + dxf->is_circle = 0; + dxf->is_arc = 0; + dxf->is_vertex = 0; + dxf->is_hatch = 0; + dxf->is_hatch_boundary = 0; + dxf->is_insert = 0; + dxf->eof = 0; + dxf->error = 0; + dxf->curr_layer_name = NULL; + dxf->curr_insert.x = 0.0; + dxf->curr_insert.y = 0.0; + dxf->curr_insert.z = 0.0; + dxf->curr_insert.scale_x = 0.0; + dxf->curr_insert.scale_y = 0.0; + dxf->curr_insert.scale_z = 0.0; + dxf->curr_insert.angle = 0.0; + dxf->curr_insert.block_id = NULL; + dxf->curr_insert.is3Dtext = 0; + dxf->curr_insert.is3Dpoint = 0; + dxf->curr_insert.is3Dline = 0; + dxf->curr_insert.is3Dpolyg = 0; + dxf->curr_text.x = 0.0; + dxf->curr_text.y = 0.0; + dxf->curr_text.z = 0.0; + dxf->curr_text.angle = 0.0; + dxf->curr_text.label = NULL; + dxf->curr_point.x = 0.0; + dxf->curr_point.y = 0.0; + dxf->curr_point.z = 0.0; + dxf->curr_block.layer_name = NULL; + dxf->curr_block.block_id = NULL; + dxf->curr_block.first_text = NULL; + dxf->curr_block.last_text = NULL; + dxf->curr_block.first_point = NULL; + dxf->curr_block.last_point = NULL; + dxf->curr_block.first_line = NULL; + dxf->curr_block.last_line = NULL; + dxf->curr_block.first_polyg = NULL; + dxf->curr_block.last_polyg = NULL; + dxf->curr_block.first_hatch = NULL; + dxf->curr_block.last_hatch = NULL; + dxf->curr_block.is3Dtext = 0; + dxf->curr_block.is3Dpoint = 0; + dxf->curr_block.is3Dline = 0; + dxf->curr_block.is3Dpolyg = 0; + dxf->curr_end_point.x = 0.0; + dxf->curr_end_point.y = 0.0; + dxf->curr_end_point.z = 0.0; + dxf->curr_circle.cx = 0.0; + dxf->curr_circle.cy = 0.0; + dxf->curr_circle.cz = 0.0; + dxf->curr_circle.radius = 0.0; + dxf->curr_arc.cx = 0.0; + dxf->curr_arc.cy = 0.0; + dxf->curr_arc.cz = 0.0; + dxf->curr_arc.radius = 0.0; + dxf->curr_arc.start = 0.0; + dxf->curr_arc.stop = 0.0; + dxf->is_closed_polyline = 0; + dxf->extra_key = NULL; + dxf->extra_value = NULL; + dxf->first_pt = NULL; + dxf->last_pt = NULL; + dxf->first_ext = NULL; + dxf->last_ext = NULL; + dxf->filename = NULL; + dxf->first_layer = NULL; + dxf->last_layer = NULL; + dxf->first_block = NULL; + dxf->last_block = NULL; + dxf->curr_hatch = NULL; + dxf->force_dims = force_dims; + if (srid <= 0) + srid = -1; + dxf->srid = srid; + dxf->prefix = prefix; + dxf->selected_layer = selected_layer; + dxf->linked_rings = 0; + dxf->unlinked_rings = 0; + if (special_rings == GAIA_DXF_RING_LINKED) + dxf->linked_rings = 1; + if (special_rings == GAIA_DXF_RING_UNLINKED) + dxf->unlinked_rings = 1; + dxf->undeclared_layers = 1; + return dxf; +} + +GAIAGEO_DECLARE void +gaiaDestroyDxfParser (gaiaDxfParserPtr dxf) +{ +/* memory cleanup: destroying a DXF parser object */ + gaiaDxfLayerPtr lyr; + gaiaDxfLayerPtr n_lyr; + gaiaDxfPointPtr pt; + gaiaDxfPointPtr n_pt; + gaiaDxfExtraAttrPtr ext; + gaiaDxfExtraAttrPtr n_ext; + gaiaDxfBlockPtr blk; + gaiaDxfBlockPtr n_blk; + if (dxf == NULL) + return; + if (dxf->curr_text.label != NULL) + free (dxf->curr_text.label); + if (dxf->curr_layer_name != NULL) + free (dxf->curr_layer_name); + if (dxf->filename != NULL) + free (dxf->filename); + lyr = dxf->first_layer; + while (lyr != NULL) + { + n_lyr = lyr->next; + destroy_dxf_layer (lyr); + lyr = n_lyr; + } + pt = dxf->first_pt; + while (pt != NULL) + { + n_pt = pt->next; + destroy_dxf_point (pt); + pt = n_pt; + } + if (dxf->extra_key != NULL) + free (dxf->extra_key); + if (dxf->extra_value != NULL) + free (dxf->extra_value); + ext = dxf->first_ext; + while (ext != NULL) + { + n_ext = ext->next; + destroy_dxf_extra (ext); + ext = n_ext; + } + blk = dxf->first_block; + while (blk != NULL) + { + n_blk = blk->next; + destroy_dxf_block (blk); + blk = n_blk; + } + if (dxf->curr_hatch != NULL) + destroy_dxf_hatch (dxf->curr_hatch); + reset_dxf_block (dxf); + free (dxf); +} + +static void +save_dxf_filename (gaiaDxfParserPtr dxf, const char *path) +{ +/* saving the input/origin filename */ + int len = strlen (path); + const char *start = path; + const char *stop = path + len - 1; + const char *p = path; + if (dxf->filename != NULL) + free (dxf->filename); + dxf->filename = NULL; + if (path == NULL) + return; + + while (*p != '\0') + { + if (*p == '/' || *p == '\\') + start = p + 1; + p++; + } + p = stop; + while (p > path) + { + if (*p == '.') + { + stop = p - 1; + break; + } + p--; + } + if (stop > start) + { + len = stop - start + 1; + dxf->filename = malloc (len + 1); + memset (dxf->filename, '\0', len + 1); + memcpy (dxf->filename, start, len); + } + else + { + dxf->filename = malloc (len + 1); + strcpy (dxf->filename, path); + } +} + +static int +gaiaParseDxfFileCommon (const void *p_cache, gaiaDxfParserPtr dxf, + const char *path) +{ +/* parsing the whole DXF file */ + int c; + char line[4192]; + char *p = line; + FILE *fl; + + if (dxf == NULL) + return 0; + save_dxf_filename (dxf, path); + if (dxf->first_layer != NULL || dxf->first_block != NULL) + return 0; + +/* attempting to open the input file */ + fl = fopen (path, "rb"); + if (fl == NULL) + return 0; + +/* scanning the DXF file */ + while ((c = getc (fl)) != EOF) + { + if (c == '\r') + { + /* ignoring any CR */ + continue; + } + if (c == '\n') + { + /* end line found */ + *p = '\0'; + if (!parse_dxf_line (p_cache, dxf, line)) + goto stop; + if (dxf->eof) + { + /* EOF marker found - quitting */ + break; + } + p = line; + continue; + } + *p++ = c; + /* Even Rouault 2013-06-02 - avoiding a potential buffer overflow */ + if (p - line == sizeof (line) - 1) + goto stop; + /* END - Even Rouault 2013-06-02 */ + } + + fclose (fl); + return 1; + stop: + fclose (fl); + return 0; +} + +GAIAGEO_DECLARE int +gaiaParseDxfFile (gaiaDxfParserPtr dxf, const char *path) +{ + return gaiaParseDxfFileCommon (NULL, dxf, path); +} + +GAIAGEO_DECLARE int +gaiaParseDxfFile_r (const void *p_cache, gaiaDxfParserPtr dxf, const char *path) +{ + return gaiaParseDxfFileCommon (p_cache, dxf, path); +} + +#endif /* GEOS enabled */ diff --git a/src/spatialite/src/dxf/dxf_private.h b/src/spatialite/src/dxf/dxf_private.h new file mode 100644 index 0000000..6b38cfb --- /dev/null +++ b/src/spatialite/src/dxf/dxf_private.h @@ -0,0 +1,196 @@ +/* + dxf_private.h -- DXF Import Private API + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +/** + \file spatialite_private.h + + SpatiaLite private header file + */ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#ifdef _WIN32 +#ifdef DLL_EXPORT +#define DXF_PRIVATE +#else +#define DXF_PRIVATE +#endif +#else +#define DXF_PRIVATE __attribute__ ((visibility("hidden"))) +#endif +#endif + +#ifndef _DXF_PRIVATE_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _DXF_PRIVATE_H +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + + typedef struct dxf_out_layer + { + double minx; + double miny; + double maxx; + double maxy; + char *layer_name; + struct dxf_out_layer *next; + } gaiaDxfExportLayer; + typedef gaiaDxfExportLayer *gaiaDxfExportLayerPtr; + + typedef struct dxf_out + { + double minx; + double miny; + double maxx; + double maxy; + gaiaDxfExportLayer *first; + gaiaDxfExportLayer *last; + } gaiaDxfExport; + typedef gaiaDxfExport *gaiaDxfExportPtr; + + DXF_PRIVATE int + create_text_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt); + + DXF_PRIVATE int + create_point_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt); + + DXF_PRIVATE int + create_line_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt); + + DXF_PRIVATE int + create_polyg_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt); + + DXF_PRIVATE int + create_hatch_boundary_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt); + DXF_PRIVATE int + create_hatch_pattern_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt); + + DXF_PRIVATE int + create_insert_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt); + + DXF_PRIVATE int + create_extra_stmt (sqlite3 * handle, const char *extra_name, + sqlite3_stmt ** xstmt); + DXF_PRIVATE char *create_extra_attr_table_name (const char *name); + + DXF_PRIVATE int + check_text_table (sqlite3 * handle, const char *name, int srid, + int is3D); + + DXF_PRIVATE int + check_point_table (sqlite3 * handle, const char *name, int srid, + int is3D); + + DXF_PRIVATE int + check_line_table (sqlite3 * handle, const char *name, int srid, + int is3D); + + DXF_PRIVATE int + check_polyg_table (sqlite3 * handle, const char *name, int srid, + int is3D); + + DXF_PRIVATE int + check_hatch_tables (sqlite3 * handle, const char *name, int srid); + + DXF_PRIVATE int check_insert_table (sqlite3 * handle, const char *name); + + DXF_PRIVATE int check_extra_attr_table (sqlite3 * handle, const char *name); + + DXF_PRIVATE int + create_block_text_stmt (sqlite3 * handle, const char *name, + sqlite3_stmt ** xstmt); + + DXF_PRIVATE int + import_mixed (sqlite3 * handle, gaiaDxfParserPtr dxf, int append); + + DXF_PRIVATE int + import_by_layer (sqlite3 * handle, gaiaDxfParserPtr dxf, int append); + + DXF_PRIVATE int + create_instext_table (sqlite3 * handle, const char *name, + const char *block, int is3d, + sqlite3_stmt ** xstmt); + + DXF_PRIVATE int + create_inspoint_table (sqlite3 * handle, const char *name, + const char *block, int is3d, + sqlite3_stmt ** xstmt); + + DXF_PRIVATE int + create_insline_table (sqlite3 * handle, const char *name, + const char *block, int is3d, + sqlite3_stmt ** xstmt); + + DXF_PRIVATE int + create_inspolyg_table (sqlite3 * handle, const char *name, + const char *block, int is3d, + sqlite3_stmt ** xstmt); + + DXF_PRIVATE int + create_inshatch_table (sqlite3 * handle, const char *name, + const char *block, sqlite3_stmt ** xstmt); + + DXF_PRIVATE int + create_insert_extra_attr_table (sqlite3 * handle, const char *name, + char *extra_name, + sqlite3_stmt ** xstmt_ext); + + DXF_PRIVATE int check_unclosed_polyg (gaiaDxfPolylinePtr pg, int is3d); + + DXF_PRIVATE int check_unclosed_hole (gaiaDxfHolePtr hole, int is3d); + +#ifdef __cplusplus +} +#endif + +#endif /* _DXF_PRIVATE_H */ diff --git a/src/spatialite/src/dxf/dxf_writer.c b/src/spatialite/src/dxf/dxf_writer.c new file mode 100644 index 0000000..413c3f3 --- /dev/null +++ b/src/spatialite/src/dxf/dxf_writer.c @@ -0,0 +1,717 @@ +/* + + dxf_writer.c -- implements DXF support + [exporting a DXF] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include +#include +#include +#include +#include + +#include "dxf_private.h" + +#if defined(_WIN32) && !defined(__MINGW32__) +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +GAIAGEO_DECLARE int +gaiaDxfWriterInit (gaiaDxfWriterPtr dxf, FILE * out, int precision, int version) +{ +/* initializing a DXF Output object */ + if (dxf == NULL) + return 0; + dxf->error = 0; + dxf->precision = precision; + if (precision < 0) + dxf->precision = 0; + if (precision > 10) + dxf->precision = 10; + if (version != GAIA_DXF_V12) + dxf->error = 1; + else + dxf->version = GAIA_DXF_V12; + if (out == NULL) + dxf->error = 1; + else + dxf->out = out; + dxf->count = 0; + return 1; +} + +GAIAGEO_DECLARE int +gaiaDxfWriteHeader (gaiaDxfWriterPtr dxf, double minx, double miny, double minz, + double maxx, double maxy, double maxz) +{ +/* printing the DXF HEADER */ + char format[128]; + if (dxf == NULL) + return 0; + if (dxf->error) + return 0; + if (dxf->out == NULL) + return 0; + + fprintf (dxf->out, "%3d\r\nSECTION\r\n%3d\r\nHEADER\r\n", 0, 2); + fprintf (dxf->out, "%3d\r\n$EXTMIN\r\n", 9); + sprintf (format, + "%%3d\r\n%%1.%df\r\n%%3d\r\n%%1.%df\r\n%%3d\r\n%%1.%df\r\n", + dxf->precision, dxf->precision, dxf->precision); + fprintf (dxf->out, format, 10, minx, 20, miny, 30, minz); + fprintf (dxf->out, "%3d\r\n$EXTMAX\r\n", 9); + sprintf (format, + "%%3d\r\n%%1.%df\r\n%%3d\r\n%%1.%df\r\n%%3d\r\n%%1.%df\r\n", + dxf->precision, dxf->precision, dxf->precision); + fprintf (dxf->out, format, 10, maxx, 20, maxy, 30, maxz); + fprintf (dxf->out, "%3d\r\nENDSEC\r\n", 0); + return 1; +} + +GAIAGEO_DECLARE int +gaiaDxfWriteTables (gaiaDxfWriterPtr dxf) +{ +/* printing the DXF TABLES section header */ + if (dxf == NULL) + return 0; + if (dxf->error) + return 0; + if (dxf->out == NULL) + return 0; + fprintf (dxf->out, "%3d\r\nSECTION\r\n%3d\r\nTABLES\r\n", 0, 2); + return 1; +} + +GAIAGEO_DECLARE int +gaiaDxfWriteLayer (gaiaDxfWriterPtr dxf, const char *layer) +{ +/* printing a DXF TABLE/LAYER definition */ + if (dxf == NULL) + return 0; + if (dxf->error) + return 0; + if (dxf->out == NULL) + return 0; + fprintf (dxf->out, "%3d\r\nTABLE\r\n%3d\r\nLAYER\r\n", 0, 2); + fprintf (dxf->out, "%3d\r\n%3d\r\n%3d\r\nLAYER\r\n%3d\r\n%s\r\n", 70, 1, 0, + 2, layer); + fprintf (dxf->out, "%3d\r\n%d\r\n%3d\r\n%d\r\n%3d\r\nCONTINUOUS\r\n", 70, + 64, 62, 7, 6); + fprintf (dxf->out, "%3d\r\nENDTAB\r\n", 0); + return 1; +} + +GAIAGEO_DECLARE int +gaiaDxfWriteFooter (gaiaDxfWriterPtr dxf) +{ +/* printing the DXF footer */ + if (dxf == NULL) + return 0; + if (dxf->error) + return 0; + if (dxf->out == NULL) + return 0; + fprintf (dxf->out, "%3d\r\nEOF\r\n", 0); + return 1; +} + +GAIAGEO_DECLARE int +gaiaDxfWriteEntities (gaiaDxfWriterPtr dxf) +{ +/* printing the DXF ENTITIES section header */ + if (dxf == NULL) + return 0; + if (dxf->error) + return 0; + if (dxf->out == NULL) + return 0; + fprintf (dxf->out, "%3d\r\nSECTION\r\n%3d\r\nENTITIES\r\n", 0, 2); + return 1; +} + +GAIAGEO_DECLARE int +gaiaDxfWriteEndSection (gaiaDxfWriterPtr dxf) +{ +/* printing a DXF ENDSEC */ + if (dxf == NULL) + return 0; + if (dxf->error) + return 0; + if (dxf->out == NULL) + return 0; + fprintf (dxf->out, "%3d\r\nENDSEC\r\n", 0); + return 1; +} + +GAIAGEO_DECLARE int +gaiaDxfWritePoint (gaiaDxfWriterPtr dxf, const char *layer, double x, double y, + double z) +{ +/* printing a DXF POINT */ + char format[128]; + if (dxf == NULL) + return 0; + if (dxf->error) + return 0; + if (dxf->out == NULL) + return 0; + fprintf (dxf->out, "%3d\r\nPOINT\r\n%3d\r\n%s\r\n", 0, 8, layer); + sprintf (format, + "%%3d\r\n%%1.%df\r\n%%3d\r\n%%1.%df\r\n%%3d\r\n%%1.%df\r\n", + dxf->precision, dxf->precision, dxf->precision); + fprintf (dxf->out, format, 10, x, 20, y, 30, z); + dxf->count++; + return 1; +} + +GAIAGEO_DECLARE int +gaiaDxfWriteText (gaiaDxfWriterPtr dxf, const char *layer, double x, double y, + double z, const char *label, double text_height, double angle) +{ +/* printing a DXF TEXT */ + char format[128]; + if (dxf == NULL) + return 0; + if (dxf->error) + return 0; + if (dxf->out == NULL) + return 0; + fprintf (dxf->out, "%3d\r\nTEXT\r\n%3d\r\n%s\r\n", 0, 8, layer); + sprintf (format, + "%%3d\r\n%%1.%df\r\n%%3d\r\n%%1.%df\r\n%%3d\r\n%%1.%df\r\n", + dxf->precision, dxf->precision, dxf->precision); + fprintf (dxf->out, format, 10, x, 20, y, 30, z); + sprintf (format, "%%3d\r\n%%1.%df\r\n%%3d\r\n%%1.%df\r\n%%3d\r\n%%s\r\n", + dxf->precision, dxf->precision); + fprintf (dxf->out, format, 40, text_height, 50, angle, 1, label); + dxf->count++; + return 1; +} + +GAIAGEO_DECLARE int +gaiaDxfWriteLine (gaiaDxfWriterPtr dxf, const char *layer, + gaiaLinestringPtr line) +{ +/* printing a DXF POLYLINE (opened) */ + int iv; + double x; + double y; + double z; + double m; + char format[128]; + if (dxf == NULL) + return 0; + if (dxf->error) + return 0; + if (dxf->out == NULL) + return 0; + fprintf (dxf->out, "%3d\r\nPOLYLINE\r\n%3d\r\n%s\r\n%3d\r\n%6d\r\n", 0, 8, + layer, 66, 1); + fprintf (dxf->out, "%3d\r\n%6d\r\n", 70, 0); + for (iv = 0; iv < line->Points; iv++) + { + /* exporting all vertices */ + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + fprintf (dxf->out, "%3d\r\nVERTEX\r\n%3d\r\n%s\r\n", 0, 8, layer); + sprintf (format, + "%%3d\r\n%%1.%df\r\n%%3d\r\n%%1.%df\r\n%%3d\r\n%%1.%df\r\n", + dxf->precision, dxf->precision, dxf->precision); + fprintf (dxf->out, format, 10, x, 20, y, 30, z); + } + fprintf (dxf->out, "%3d\r\nSEQEND\r\n%3d\r\n%s\r\n", 0, 8, layer); + dxf->count++; + return 1; +} + +GAIAGEO_DECLARE int +gaiaDxfWriteRing (gaiaDxfWriterPtr dxf, const char *layer, gaiaRingPtr ring) +{ +/* printing a DXF POLYLINE (closed) */ + int iv; + double x; + double y; + double z; + double m; + char format[128]; + if (dxf == NULL) + return 0; + if (dxf->error) + return 0; + if (dxf->out == NULL) + return 0; + fprintf (dxf->out, "%3d\r\nPOLYLINE\r\n%3d\r\n%s\r\n%3d\r\n%6d\r\n", 0, 8, + layer, 66, 1); + fprintf (dxf->out, "%3d\r\n%6d\r\n", 70, 1); + for (iv = 0; iv < ring->Points - 1; iv++) + { + /* sandro 2013-10-19 + exporting all vertices except the last one + because accordingly to DXF specifications the + Ring closure is always implicitly assumed, so + there is no need at all to explicitly export + a last vertex identical to the first one */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + fprintf (dxf->out, "%3d\r\nVERTEX\r\n%3d\r\n%s\r\n", 0, 8, layer); + sprintf (format, + "%%3d\r\n%%1.%df\r\n%%3d\r\n%%1.%df\r\n%%3d\r\n%%1.%df\r\n", + dxf->precision, dxf->precision, dxf->precision); + fprintf (dxf->out, format, 10, x, 20, y, 30, z); + } + fprintf (dxf->out, "%3d\r\nSEQEND\r\n%3d\r\n%s\r\n", 0, 8, layer); + dxf->count++; + return 1; +} + +GAIAGEO_DECLARE int +gaiaDxfWriteGeometry (gaiaDxfWriterPtr dxf, const char *layer, + const char *label, double text_height, + double text_rotation, gaiaGeomCollPtr geom) +{ +/* exporting a whole Geometry into the DXF */ + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + int ib; + if (dxf == NULL) + return 0; + if (dxf->error) + return 0; + if (dxf->out == NULL) + return 0; + pt = geom->FirstPoint; + while (pt != NULL) + { + if (label == NULL) + gaiaDxfWritePoint (dxf, layer, pt->X, pt->Y, pt->Z); + else + gaiaDxfWriteText (dxf, layer, pt->X, pt->Y, pt->Z, label, + text_height, text_rotation); + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln != NULL) + { + gaiaDxfWriteLine (dxf, layer, ln); + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg != NULL) + { + rng = pg->Exterior; + gaiaDxfWriteRing (dxf, layer, rng); + for (ib = 0; ib < pg->NumInteriors; ib++) + { + rng = pg->Interiors + ib; + gaiaDxfWriteRing (dxf, layer, rng); + } + pg = pg->Next; + } + return 1; +} + +static gaiaDxfExportLayerPtr +alloc_aux_layer (const char *layer, gaiaGeomCollPtr geom) +{ +/* allocating and initializing an helper Layer */ + int len; + gaiaDxfExportLayerPtr lyr = malloc (sizeof (gaiaDxfExportLayer)); + len = strlen (layer); + lyr->layer_name = malloc (len + 1); + strcpy (lyr->layer_name, layer), lyr->minx = geom->MinX; + lyr->miny = geom->MinY; + lyr->maxx = geom->MaxX; + lyr->maxy = geom->MaxY; + lyr->next = NULL; + return lyr; +} + +static void +destroy_aux_layer (gaiaDxfExportLayerPtr lyr) +{ +/* destroying a DXF Helper Layer */ + if (lyr == NULL) + return; + if (lyr->layer_name != NULL) + free (lyr->layer_name); + free (lyr); +} + +static gaiaDxfExportPtr +alloc_aux_exporter () +{ +/* allocating and initializing the helper Exporter */ + gaiaDxfExportPtr aux = malloc (sizeof (gaiaDxfExport)); + aux->first = NULL; + aux->last = NULL; + return aux; +} + +static void +destroy_aux_exporter (gaiaDxfExportPtr aux) +{ +/* memory cleanup - destroying the helper Exporter */ + gaiaDxfExportLayerPtr lyr; + gaiaDxfExportLayerPtr n_lyr; + if (aux == NULL) + return; + lyr = aux->first; + while (lyr != NULL) + { + n_lyr = lyr->next; + destroy_aux_layer (lyr); + lyr = n_lyr; + } + free (aux); +} + +static void +update_aux_exporter (gaiaDxfExportPtr aux, const char *layer, + gaiaGeomCollPtr geom) +{ +/* updating the Helper Exporter */ + gaiaDxfExportLayerPtr lyr = aux->first; + while (lyr != NULL) + { + if (strcasecmp (layer, lyr->layer_name) == 0) + { + /* updating an already defined layer */ + if (geom->MinX < lyr->minx) + lyr->minx = geom->MinX; + if (geom->MinY < lyr->miny) + lyr->miny = geom->MinY; + if (geom->MaxX > lyr->maxx) + lyr->maxx = geom->MaxX; + if (geom->MaxY > lyr->maxy) + lyr->maxy = geom->MaxY; + if (geom->MinX < aux->minx) + aux->minx = geom->MinX; + if (geom->MinY < aux->miny) + aux->miny = geom->MinY; + if (geom->MaxX > aux->maxx) + aux->maxx = geom->MaxX; + if (geom->MaxY > aux->maxy) + aux->maxy = geom->MaxY; + return; + } + lyr = lyr->next; + } +/* inserting a new Layer */ + lyr = alloc_aux_layer (layer, geom); + if (aux->first == NULL) + { + aux->first = lyr; + aux->minx = geom->MinX; + aux->miny = geom->MinY; + aux->maxx = geom->MaxX; + aux->maxy = geom->MaxY; + } + if (aux->last != NULL) + aux->last->next = lyr; + aux->last = lyr; +} + +GAIAGEO_DECLARE int +gaiaExportDxf (gaiaDxfWriterPtr dxf, sqlite3 * db_handle, + const char *sql, const char *layer_col_name, + const char *geom_col_name, const char *label_col_name, + const char *text_height_col_name, + const char *text_rotation_col_name, gaiaGeomCollPtr geom_filter) +{ +/* exporting a complex DXF by executing an arbitrary SQL query */ + sqlite3_stmt *stmt = NULL; + int ret; + int params; + int first_row = 1; + int layer_col = -1; + int geom_col = -1; + int label_col = -1; + int text_height_col = -1; + int text_rotation_col = -1; + int i; + unsigned char *p_blob; + const unsigned char *blob; + int len; + const char *layer; + const char *label = NULL; + gaiaGeomCollPtr geom; + gaiaDxfExportPtr aux = NULL; + gaiaDxfExportLayerPtr lyr; + if (dxf == NULL) + return 0; + if (dxf->error) + return 0; + if (dxf->out == NULL) + return 0; + if (db_handle == NULL) + return 0; + if (sql == NULL) + return 0; + if (layer_col_name == NULL) + return 0; + if (geom_col_name == NULL) + return 0; + +/* attempting to create the SQL prepared statement */ + ret = sqlite3_prepare_v2 (db_handle, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("exportDXF - CREATE STATEMENT error: %s\n", + sqlite3_errmsg (db_handle)); + goto stop; + } + params = sqlite3_bind_parameter_count (stmt); + + if (params > 0 && geom_filter != NULL) + { + /* parameter binding - Spatial Filter */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + for (i = 1; i <= params; i++) + { + gaiaToSpatiaLiteBlobWkb (geom_filter, &p_blob, &len); + ret = sqlite3_bind_blob (stmt, i, p_blob, len, free); + if (ret != SQLITE_OK) + { + spatialite_e ("exportDXF - parameter BIND error: %s\n", + sqlite3_errmsg (db_handle)); + goto stop; + } + } + } + +/* pass #1 - sniffing the result set */ + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + if (first_row) + { + /* this one is the first row of the resultset */ + for (i = 0; i < sqlite3_column_count (stmt); i++) + { + /* attempting to identify the resultset columns */ + if (strcasecmp + (layer_col_name, + sqlite3_column_name (stmt, i)) == 0) + layer_col = i; + if (strcasecmp + (geom_col_name, + sqlite3_column_name (stmt, i)) == 0) + geom_col = i; + if (label_col_name != NULL) + { + if (strcasecmp + (label_col_name, + sqlite3_column_name (stmt, i)) == 0) + label_col = i; + } + if (text_height_col_name != NULL) + { + if (strcasecmp + (text_height_col_name, + sqlite3_column_name (stmt, i)) == 0) + text_height_col = i; + } + if (text_rotation_col_name != NULL) + { + if (strcasecmp + (text_rotation_col_name, + sqlite3_column_name (stmt, i)) == 0) + text_rotation_col = i; + } + } + if (layer_col < 0) + { + spatialite_e + ("exportDXF - Layer Column not found into the resultset\n"); + goto stop; + } + if (geom_col < 0) + { + spatialite_e + ("exportDXF - Geometry Column not found into the resultset\n"); + goto stop; + } + first_row = 0; + aux = alloc_aux_exporter (); + } + layer = (const char *) sqlite3_column_text (stmt, layer_col); + blob = sqlite3_column_blob (stmt, geom_col); + len = sqlite3_column_bytes (stmt, geom_col); + geom = gaiaFromSpatiaLiteBlobWkb (blob, len); + if (geom) + { + update_aux_exporter (aux, layer, geom); + gaiaFreeGeomColl (geom); + } + } + } + +/* pass #2 - exporting the DXF file */ + gaiaDxfWriteHeader (dxf, aux->minx, aux->miny, 0, aux->maxx, aux->maxy, 0); + gaiaDxfWriteTables (dxf); + lyr = aux->first; + while (lyr != NULL) + { + gaiaDxfWriteLayer (dxf, lyr->layer_name); + lyr = lyr->next; + } + gaiaDxfWriteEndSection (dxf); + gaiaDxfWriteEntities (dxf); + + sqlite3_reset (stmt); + while (1) + { + /* scrolling the result set rows */ + int ival; + double height = 10.0; + double rotation = 0.0; + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + layer = (const char *) sqlite3_column_text (stmt, layer_col); + if (label_col >= 0) + label = + (const char *) sqlite3_column_text (stmt, label_col); + if (text_height_col >= 0) + { + if (sqlite3_column_type (stmt, text_height_col) == + SQLITE_INTEGER) + { + ival = sqlite3_column_int (stmt, text_height_col); + height = ival; + } + if (sqlite3_column_type (stmt, text_height_col) == + SQLITE_FLOAT) + height = + sqlite3_column_double (stmt, text_height_col); + } + if (text_rotation_col >= 0) + { + if (sqlite3_column_type (stmt, text_rotation_col) == + SQLITE_INTEGER) + { + ival = sqlite3_column_int (stmt, text_rotation_col); + rotation = ival; + } + if (sqlite3_column_type (stmt, text_height_col) == + SQLITE_FLOAT) + rotation = + sqlite3_column_double (stmt, text_rotation_col); + } + blob = sqlite3_column_blob (stmt, geom_col); + len = sqlite3_column_bytes (stmt, geom_col); + geom = gaiaFromSpatiaLiteBlobWkb (blob, len); + if (geom) + { + gaiaDxfWriteGeometry (dxf, layer, label, height, rotation, + geom); + gaiaFreeGeomColl (geom); + } + } + } + gaiaDxfWriteEndSection (dxf); + gaiaDxfWriteFooter (dxf); + + sqlite3_finalize (stmt); + if (aux != NULL) + destroy_aux_exporter (aux); + return dxf->count; + + stop: + if (stmt != NULL) + sqlite3_finalize (stmt); + if (aux != NULL) + destroy_aux_exporter (aux); + return 0; +} diff --git a/src/spatialite/src/gaiaaux/Makefile.am b/src/spatialite/src/gaiaaux/Makefile.am new file mode 100644 index 0000000..40e44dd --- /dev/null +++ b/src/spatialite/src/gaiaaux/Makefile.am @@ -0,0 +1,19 @@ + +AM_CPPFLAGS = @CFLAGS@ +AM_CPPFLAGS += -I$(top_srcdir)/src/headers + +noinst_LTLIBRARIES = libgaiaaux.la gaiaaux.la + +GAIAAUX_COMMON_SOURCES = gg_sqlaux.c gg_utf8.c + +libgaiaaux_la_SOURCES = $(GAIAAUX_COMMON_SOURCES) + +gaiaaux_la_SOURCES = $(GAIAAUX_COMMON_SOURCES) + +gaiaaux_la_CPPFLAGS = @CFLAGS@ +gaiaaux_la_CPPFLAGS += -I$(top_srcdir)/src/headers -I. +gaiaaux_la_CPPFLAGS += -DLOADABLE_EXTENSION +gaiaaux_la_LDFLAGS = -module +gaiaaux_la_LIBTOOLFLAGS = --tag=disable-static + +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda diff --git a/src/spatialite/src/gaiaaux/Makefile.in b/src/spatialite/src/gaiaaux/Makefile.in new file mode 100644 index 0000000..3234ae0 --- /dev/null +++ b/src/spatialite/src/gaiaaux/Makefile.in @@ -0,0 +1,622 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/gaiaaux +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +gaiaaux_la_LIBADD = +am__objects_1 = gaiaaux_la-gg_sqlaux.lo gaiaaux_la-gg_utf8.lo +am_gaiaaux_la_OBJECTS = $(am__objects_1) +gaiaaux_la_OBJECTS = $(am_gaiaaux_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +gaiaaux_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(gaiaaux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(gaiaaux_la_LDFLAGS) $(LDFLAGS) -o $@ +libgaiaaux_la_LIBADD = +am__objects_2 = gg_sqlaux.lo gg_utf8.lo +am_libgaiaaux_la_OBJECTS = $(am__objects_2) +libgaiaaux_la_OBJECTS = $(am_libgaiaaux_la_OBJECTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(gaiaaux_la_SOURCES) $(libgaiaaux_la_SOURCES) +DIST_SOURCES = $(gaiaaux_la_SOURCES) $(libgaiaaux_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers +noinst_LTLIBRARIES = libgaiaaux.la gaiaaux.la +GAIAAUX_COMMON_SOURCES = gg_sqlaux.c gg_utf8.c +libgaiaaux_la_SOURCES = $(GAIAAUX_COMMON_SOURCES) +gaiaaux_la_SOURCES = $(GAIAAUX_COMMON_SOURCES) +gaiaaux_la_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers -I. \ + -DLOADABLE_EXTENSION +gaiaaux_la_LDFLAGS = -module +gaiaaux_la_LIBTOOLFLAGS = --tag=disable-static +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/gaiaaux/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/gaiaaux/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +gaiaaux.la: $(gaiaaux_la_OBJECTS) $(gaiaaux_la_DEPENDENCIES) $(EXTRA_gaiaaux_la_DEPENDENCIES) + $(AM_V_CCLD)$(gaiaaux_la_LINK) $(gaiaaux_la_OBJECTS) $(gaiaaux_la_LIBADD) $(LIBS) + +libgaiaaux.la: $(libgaiaaux_la_OBJECTS) $(libgaiaaux_la_DEPENDENCIES) $(EXTRA_libgaiaaux_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgaiaaux_la_OBJECTS) $(libgaiaaux_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiaaux_la-gg_sqlaux.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiaaux_la-gg_utf8.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_sqlaux.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_utf8.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +gaiaaux_la-gg_sqlaux.lo: gg_sqlaux.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiaaux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiaaux_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiaaux_la-gg_sqlaux.lo -MD -MP -MF $(DEPDIR)/gaiaaux_la-gg_sqlaux.Tpo -c -o gaiaaux_la-gg_sqlaux.lo `test -f 'gg_sqlaux.c' || echo '$(srcdir)/'`gg_sqlaux.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiaaux_la-gg_sqlaux.Tpo $(DEPDIR)/gaiaaux_la-gg_sqlaux.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_sqlaux.c' object='gaiaaux_la-gg_sqlaux.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiaaux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiaaux_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiaaux_la-gg_sqlaux.lo `test -f 'gg_sqlaux.c' || echo '$(srcdir)/'`gg_sqlaux.c + +gaiaaux_la-gg_utf8.lo: gg_utf8.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiaaux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiaaux_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiaaux_la-gg_utf8.lo -MD -MP -MF $(DEPDIR)/gaiaaux_la-gg_utf8.Tpo -c -o gaiaaux_la-gg_utf8.lo `test -f 'gg_utf8.c' || echo '$(srcdir)/'`gg_utf8.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiaaux_la-gg_utf8.Tpo $(DEPDIR)/gaiaaux_la-gg_utf8.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_utf8.c' object='gaiaaux_la-gg_utf8.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiaaux_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiaaux_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiaaux_la-gg_utf8.lo `test -f 'gg_utf8.c' || echo '$(srcdir)/'`gg_utf8.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/gaiaaux/gg_sqlaux.c b/src/spatialite/src/gaiaaux/gg_sqlaux.c new file mode 100644 index 0000000..7906f33 --- /dev/null +++ b/src/spatialite/src/gaiaaux/gg_sqlaux.c @@ -0,0 +1,1200 @@ +/* + + gg_sqlaux.c -- SQL ancillary functions + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include + +#include +#include + +#ifdef _WIN32 +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +/* 64 bit integer: portable format for printf() */ +#if defined(_WIN32) && !defined(__MINGW32__) +#define FRMT64 "%I64d" +#else +#define FRMT64 "%lld" +#endif + +GAIAAUX_DECLARE int +gaiaIllegalSqlName (const char *name) +{ +/* checks if column-name is an SQL illegal name */ + int i; + int len; + if (!name) + return 1; + len = strlen (name); + if (len == 0) + return 1; + for (i = 0; i < len; i++) + { + if (name[i] >= 'a' && name[i] <= 'z') + continue; + if (name[i] >= 'A' && name[i] <= 'Z') + continue; + if (name[i] >= '0' && name[i] <= '9') + continue; + if (name[i] == '_') + continue; + /* the name contains an illegal char */ + return 1; + } + if (name[0] >= 'a' && name[0] <= 'z') + return 0; + if (name[0] >= 'A' && name[0] <= 'Z') + return 0; +/* the first char in the name isn't a letter */ + return 1; +} + +GAIAAUX_DECLARE int +gaiaIsReservedSqliteName (const char *name) +{ +/* checks if column-name is an SQLite reserved keyword */ + char *reserved[] = { + "ALL", + "ALTER", + "AND", + "AS", + "AUTOINCREMENT", + "BETWEEN", + "BLOB", + "BY", + "CASE", + "CHECK", + "COLLATE", + "COMMIT", + "CONSTRAINT", + "CREATE", + "CROSS", + "DATE", + "DATETIME", + "DEFAULT", + "DEFERRABLE", + "DELETE", + "DISTINCT", + "DOUBLE", + "DROP", + "ELSE", + "ESCAPE", + "EXCEPT", + "FOREIGN", + "FROM", + "FULL", + "GLOB", + "GROUP", + "HAVING", + "IN", + "INDEX", + "INNER", + "INSERT", + "INTEGER", + "INTERSECT", + "INTO", + "IS", + "ISNULL", + "JOIN", + "KEY", + "LEFT", + "LIKE", + "LIMIT", + "MATCH", + "NATURAL", + "NOT", + "NOTNULL", + "NULL", + "ON", + "OR", + "ORDER", + "OUTER", + "PRAGMA", + "PRIMARY", + "REFERENCES", + "REPLACE", + "RIGHT", + "ROLLBACK", + "SELECT", + "SET", + "TABLE", + "TEMP", + "TEMPORARY", + "THEN", + "TEXT", + "TIMESTAMP", + "TO", + "TRANSACTION", + "UNION", + "UNIQUE", + "UPDATE", + "USING", + "VALUES", + "VIEW", + "WHEN", + "WHERE", + NULL + }; + char **pw = reserved; + while (*pw != NULL) + { + if (strcasecmp (name, *pw) == 0) + return 1; + pw++; + } + return 0; +} + +GAIAAUX_DECLARE int +gaiaIsReservedSqlName (const char *name) +{ +/* checks if column-name is an SQL reserved keyword */ + char *reserved[] = { + "ABSOLUTE", + "ACTION", + "ADD", + "AFTER", + "ALL", + "ALLOCATE", + "ALTER", + "AND", + "ANY", + "ARE", + "ARRAY", + "AS", + "ASC", + "ASENSITIVE", + "ASSERTION", + "ASYMMETRIC", + "AT", + "ATOMIC", + "AUTHORIZATION", + "AVG", + "BEFORE", + "BEGIN", + "BETWEEN", + "BIGINT", + "BINARY", + "BIT", + "BIT_LENGTH", + "BLOB", + "BOOLEAN", + "BOTH", + "BREADTH", + "BY", + "CALL", + "CALLED", + "CASCADE", + "CASCADED", + "CASE", + "CAST", + "CATALOG", + "CHAR", + "CHARACTER", + "CHARACTER_LENGTH", + "CHAR_LENGTH", + "CHECK", + "CLOB", + "CLOSE", + "COALESCE", + "COLLATE", + "COLLATION", + "COLUMN", + "COMMIT", + "CONDITION", + "CONNECT", + "CONNECTION", + "CONSTRAINT", + "CONSTRAINTS", + "CONSTRUCTOR", + "CONTAINS", + "CONTINUE", + "CONVERT", + "CORRESPONDING", + "COUNT", + "CREATE", + "CROSS", + "CUBE", + "CURRENT", + "CURRENT_DATE", + "CURRENT_DEFAULT_TRANSFORM_GROUP", + "CURRENT_PATH", + "CURRENT_ROLE", + "CURRENT_TIME", + "CURRENT_TIMESTAMP", + "CURRENT_TRANSFORM_GROUP_FOR_TYPE", + "CURRENT_USER", + "CURSOR", + "CYCLE", + "DATA", + "DATE", + "DAY", + "DEALLOCATE", + "DEC", + "DECIMAL", + "DECLARE", + "DEFAULT", + "DEFERRABLE", + "DEFERRED", + "DELETE", + "DEPTH", + "DEREF", + "DESC", + "DESCRIBE", + "DESCRIPTOR", + "DETERMINISTIC", + "DIAGNOSTICS", + "DISCONNECT", + "DISTINCT", + "DO", + "DOMAIN", + "DOUBLE", + "DROP", + "DYNAMIC", + "EACH", + "ELEMENT", + "ELSE", + "ELSEIF", + "END", + "EQUALS", + "ESCAPE", + "EXCEPT", + "EXCEPTION", + "EXEC", + "EXECUTE", + "EXISTS", + "EXIT", + "external", + "EXTRACT", + "FALSE", + "FETCH", + "FILTER", + "FIRST", + "FLOAT", + "FOR", + "FOREIGN", + "FOUND", + "FREE", + "FROM", + "FULL", + "FUNCTION", + "GENERAL", + "GET", + "GLOBAL", + "GO", + "GOTO", + "GRANT", + "GROUP", + "GROUPING", + "HANDLER", + "HAVING", + "HOLD", + "HOUR", + "IDENTITY", + "IF", + "IMMEDIATE", + "IN", + "INDICATOR", + "INITIALLY", + "INNER", + "INOUT", + "INPUT", + "INSENSITIVE", + "INSERT", + "INT", + "INTEGER", + "INTERSECT", + "INTERVAL", + "INTO", + "IS", + "ISOLATION", + "ITERATE", + "JOIN", + "KEY", + "LANGUAGE", + "LARGE", + "LAST", + "LATERAL", + "LEADING", + "LEAVE", + "LEFT", + "LEVEL", + "LIKE", + "LOCAL", + "LOCALTIME", + "LOCALTIMESTAMP", + "LOCATOR", + "LOOP", + "LOWER", + "MAP", + "MATCH", + "MAX", + "MEMBER", + "MERGE", + "METHOD", + "MIN", + "MINUTE", + "MODIFIES", + "MODULE", + "MONTH", + "MULTISET", + "NAMES", + "NATIONAL", + "NATURAL", + "NCHAR", + "NCLOB", + "NEW", + "NEXT", + "NO", + "NONE", + "NOT", + "NULL", + "NULLIF", + "NUMERIC", + "OBJECT", + "OCTET_LENGTH", + "OF", + "OLD", + "ON", + "ONLY", + "OPEN", + "OPTION", + "OR", + "ORDER", + "ORDINALITY", + "OUT", + "OUTER", + "OUTPUT", + "OVER", + "OVERLAPS", + "PAD", + "PARAMETER", + "PARTIAL", + "PARTITION", + "PATH", + "POSITION", + "PRECISION", + "PREPARE", + "PRESERVE", + "PRIMARY", + "PRIOR", + "PRIVILEGES", + "PROCEDURE", + "PUBLIC", + "RANGE", + "READ", + "READS", + "REAL", + "RECURSIVE", + "REF", + "REFERENCES", + "REFERENCING", + "RELATIVE", + "RELEASE", + "REPEAT", + "RESIGNAL", + "RESTRICT", + "RESULT", + "RETURN", + "RETURNS", + "REVOKE", + "RIGHT", + "ROLE", + "ROLLBACK", + "ROLLUP", + "ROUTINE", + "ROW", + "ROWS", + "SAVEPOINT", + "SCHEMA", + "SCOPE", + "SCROLL", + "SEARCH", + "SECOND", + "SECTION", + "SELECT", + "SENSITIVE", + "SESSION", + "SESSION_USER", + "SET", + "SETS", + "SIGNAL", + "SIMILAR", + "SIZE", + "SMALLINT", + "SOME", + "SPACE", + "SPECIFIC", + "SPECIFICTYPE", + "SQL", + "SQLCODE", + "SQLERROR", + "SQLEXCEPTION", + "SQLSTATE", + "SQLWARNING", + "START", + "STATE", + "STATIC", + "SUBMULTISET", + "SUBSTRING", + "SUM", + "SYMMETRIC", + "SYSTEM", + "SYSTEM_USER", + "TABLE", + "TABLESAMPLE", + "TEMPORARY", + "THEN", + "TIME", + "TIMESTAMP", + "TIMEZONE_HOUR", + "TIMEZONE_MINUTE", + "TO", + "TRAILING", + "TRANSACTION", + "TRANSLATE", + "TRANSLATION", + "TREAT", + "TRIGGER", + "TRIM", + "TRUE", + "UNDER", + "UNDO", + "UNION", + "UNIQUE", + "UNKNOWN", + "UNNEST", + "UNTIL", + "UPDATE", + "UPPER", + "USAGE", + "USER", + "USING", + "VALUE", + "VALUES", + "VARCHAR", + "VARYING", + "VIEW", + "WHEN", + "WHENEVER", + "WHERE", + "WHILE", + "WINDOW", + "WITH", + "WITHIN", + "WITHOUT", + "WORK", + "WRITE", + "YEAR", + "ZONE", + NULL + }; + char **pw = reserved; + while (*pw != NULL) + { + if (strcasecmp (name, *pw) == 0) + return 1; + pw++; + } + return 0; +} + +GAIAAUX_DECLARE char * +gaiaDequotedSql (const char *value) +{ +/* +/ returns a well formatted TEXT value from SQL +/ 1] if the input string begins and ends with ' sigle quote will be the target +/ 2] if the input string begins and ends with " double quote will be the target +/ 3] in any othet case the string will simply be copied +*/ + const char *pi = value; + const char *start; + const char *end; + char *clean; + char *po; + int len; + char target; + int mark = 0; + if (value == NULL) + return NULL; + + len = strlen (value); + clean = malloc (len + 1); + if (*(value + 0) == '"' && *(value + len - 1) == '"') + target = '"'; + else if (*(value + 0) == '\'' && *(value + len - 1) == '\'') + target = '\''; + else + { + /* no dequoting; simply copying */ + strcpy (clean, value); + return clean; + } + start = value; + end = value + len - 1; + po = clean; + while (*pi != '\0') + { + if (mark) + { + if (*pi == target) + { + *po++ = *pi++; + mark = 0; + continue; + } + else + { + /* error: mismatching quote */ + free (clean); + return NULL; + } + } + if (*pi == target) + { + if (pi == start || pi == end) + { + /* first or last char */ + pi++; + continue; + } + /* found a quote marker */ + mark = 1; + pi++; + continue; + } + *po++ = *pi++; + } + *po = '\0'; + return clean; +} + +GAIAAUX_DECLARE char * +gaiaQuotedSql (const char *value, int quote) +{ +/* +/ returns a well formatted TEXT value for SQL +/ 1] strips trailing spaces +/ 2] masks any QUOTE inside the string, appending another QUOTE +/ 3] works for both SINGLE- and DOUBLE-QUOTE +*/ + const char *p_in; + const char *p_end; + char qt; + char *out; + char *p_out; + int len = 0; + int i; + + if (!value) + return NULL; + if (quote == GAIA_SQL_SINGLE_QUOTE) + qt = '\''; + else if (quote == GAIA_SQL_DOUBLE_QUOTE) + qt = '"'; + else + return NULL; + + p_end = value; + for (i = (strlen (value) - 1); i >= 0; i--) + { + /* stripping trailing spaces */ + p_end = value + i; + if (value[i] != ' ') + break; + } + + p_in = value; + while (p_in <= p_end) + { + /* computing the output length */ + len++; + if (*p_in == qt) + len++; + p_in++; + } + if (len == 1 && *value == ' ') + { + /* empty string */ + len = 0; + } + + out = malloc (len + 1); + if (!out) + return NULL; + + if (len == 0) + { + /* empty string */ + *out = '\0'; + return out; + } + + p_out = out; + p_in = value; + while (p_in <= p_end) + { + /* creating the output string */ + if (*p_in == qt) + *p_out++ = qt; + *p_out++ = *p_in++; + } + *p_out = '\0'; + return out; +} + +GAIAAUX_DECLARE char * +gaiaSingleQuotedSql (const char *value) +{ +/* convenience method supporting SINGLE-QUOTES */ + return gaiaQuotedSql (value, GAIA_SQL_SINGLE_QUOTE); +} + +GAIAAUX_DECLARE char * +gaiaDoubleQuotedSql (const char *value) +{ +/* convenience method supporting DOUBLE-QUOTES */ + return gaiaQuotedSql (value, GAIA_SQL_DOUBLE_QUOTE); +} + +GAIAAUX_DECLARE void +gaiaCleanSqlString (char *value) +{ +/* +/ returns a well formatted TEXT value for SQL +/ 1] strips trailing spaces +/ 2] masks any ' inside the string, appending another ' +*/ + char new_value[1024]; + char *p; + int len; + int i; + len = strlen (value); + for (i = (len - 1); i >= 0; i--) + { + /* stripping trailing spaces */ + if (value[i] == ' ') + value[i] = '\0'; + else + break; + } + p = new_value; + for (i = 0; i < len; i++) + { + if (value[i] == '\'') + *(p++) = '\''; + *(p++) = value[i]; + } + *p = '\0'; + strcpy (value, new_value); +} + +GAIAAUX_DECLARE void +gaiaInsertIntoSqlLog (sqlite3 * sqlite, const char *user_agent, + const char *utf8Sql, sqlite3_int64 * sqllog_pk) +{ +/* inserting an event into the SQL Log */ + char *sql_statement; + int ret; + + *sqllog_pk = -1; + if (checkSpatialMetaData (sqlite) != 3) + { +/* CURRENT db-schema (>= 4.0.0) required */ + return; + } + + sql_statement = sqlite3_mprintf ("INSERT INTO sql_statements_log " + "(id, time_start, user_agent, sql_statement) VALUES (" + "NULL, strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now'), %Q, %Q)", + user_agent, utf8Sql); + ret = sqlite3_exec (sqlite, sql_statement, NULL, 0, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return; + *sqllog_pk = sqlite3_last_insert_rowid (sqlite); +} + +GAIAAUX_DECLARE void +gaiaUpdateSqlLog (sqlite3 * sqlite, sqlite3_int64 sqllog_pk, int success, + const char *errMsg) +{ +/* completing an event already inserted into the SQL Log */ + char *sql_statement; + char dummy[64]; + + if (checkSpatialMetaData (sqlite) != 3) + { +/* CURRENT db-schema (>= 4.0.0) required */ + return; + } + sprintf (dummy, FRMT64, sqllog_pk); + if (success) + { + sql_statement = sqlite3_mprintf ("UPDATE sql_statements_log SET " + "time_end = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now'), " + "success = 1, error_cause = 'success' WHERE id = %s", + dummy); + } + else + { + sql_statement = sqlite3_mprintf ("UPDATE sql_statements_log SET " + "time_end = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now'), " + "success = 0, error_cause = %Q WHERE id = %s", + (errMsg == NULL) + ? "UNKNOWN" : errMsg, dummy); + } + sqlite3_exec (sqlite, sql_statement, NULL, 0, NULL); + sqlite3_free (sql_statement); +} + +static void +consume_blank (const char *p_start, const char **p_end) +{ +/* consuming blanks */ + const char *p = p_start; + while (1) + { + if (*p == ' ' || *p == '\t') + { + p++; + continue; + } + else + { + *p_end = p; + return; + } + } +} + +static int +check_deg_delimiter (const char *p_start, const char **p_end) +{ +/* testing a "degrees" delimiter/qualifier */ + unsigned char ctrl1; + unsigned char ctrl2; + if (*p_start == 'd') + { + *p_end = p_start + 1; + return 1; + } + ctrl1 = *(p_start + 0); + ctrl2 = *(p_start + 1); + if (ctrl1 == 0xc2 && ctrl2 == 0xb0) + { + *p_end = p_start + 2; + return 1; + } + return 0; +} + +static int +check_min_delimiter (const char *p_start, const char **p_end) +{ +/* testing a "minutes" delimiter/qualifier */ + unsigned char ctrl1; + unsigned char ctrl2; + unsigned char ctrl3; + if (*p_start == '\'') + { + *p_end = p_start + 1; + return 1; + } + ctrl1 = *(p_start + 0); + ctrl2 = *(p_start + 1); + ctrl3 = *(p_start + 2); + if (ctrl1 == 0xe2 && ctrl2 == 0x80 && ctrl3 == 0xb2) + { + *p_end = p_start + 3; + return 1; + } + return 0; +} + +static int +check_sec_delimiter (const char *p_start, const char **p_end) +{ +/* testing a "seconds" delimiter/qualifier */ + unsigned char ctrl1; + unsigned char ctrl2; + unsigned char ctrl3; + if (*p_start == '"') + { + *p_end = p_start + 1; + return 1; + } + ctrl1 = *(p_start + 0); + ctrl2 = *(p_start + 1); + ctrl3 = *(p_start + 2); + if (ctrl1 == 0xe2 && ctrl2 == 0x80 && ctrl3 == 0xb3) + { + *p_end = p_start + 3; + return 1; + } + return 0; +} + +static void +consume_int (const char *p_start, const char **p_end, int *value) +{ +/* consuming an integer value */ + char *buf; + int len = 0; + const char *p = p_start; + while (1) + { + if (*p >= '0' && *p <= '9') + { + len++; + p++; + continue; + } + else + { + *p_end = p; + break; + } + } + if (len == 0) + { + *value = 181; + return; + } + buf = malloc (len + 1); + memcpy (buf, p_start, len); + *(buf + len) = '\0'; + *value = atoi (buf); + free (buf); +} + +static void +consume_float (const char *p_start, const char **p_end, double *value) +{ +/* consuming a double value */ + char *buf; + int pt = 0; + int len = 0; + const char *p = p_start; + while (1) + { + if (*p >= '0' && *p <= '9') + { + len++; + p++; + continue; + } + else if (*p == '.' || *p == ',') + { + len++; + pt++; + p++; + continue; + } + else + { + *p_end = p; + break; + } + } + if (len == 0 || pt > 1) + { + *value = 61.0; + return; + } + buf = malloc (len + 1); + memcpy (buf, p_start, len); + *(buf + len) = '\0'; + *value = atof (buf); + free (buf); +} + +GAIAAUX_DECLARE int +gaiaParseDMS (const char *dms, double *longitude, double *latitude) +{ +/* attempting to parse a DMS string */ + double lg; + double lt; + int lat_d; + int lat_m; + double lat_s; + char lat_prefix = '\0'; + int long_d; + int long_m; + double long_s; + char long_prefix = '\0'; + const char *p = dms; + const char *p_end; + if (dms == NULL) + return 0; + +/* attempting to parse the latitude */ + consume_blank (p, &p_end); + p = p_end; + if (*p == 'S' || *p == 'N') + { + lat_prefix = *p; + p++; + consume_blank (p, &p_end); + p = p_end; + } + if (*p >= '0' && *p <= '9') + { + consume_int (p, &p_end, &lat_d); + if (lat_d < 0 && lat_d > 90) + return 0; + p = p_end; + } + else + return 0; + consume_blank (p, &p_end); + p = p_end; + if (check_deg_delimiter (p, &p_end)) + p = p_end; + else + return 0; + consume_blank (p, &p_end); + p = p_end; + if (*p >= '0' && *p <= '9') + { + consume_int (p, &p_end, &lat_m); + if (lat_m < 0 && lat_m >= 60) + return 0; + p = p_end; + } + else + return 0; + consume_blank (p, &p_end); + p = p_end; + if (check_min_delimiter (p, &p_end)) + p = p_end; + else + return 0; + consume_blank (p, &p_end); + p = p_end; + if (*p >= '0' && *p <= '9') + { + consume_float (p, &p_end, &lat_s); + if (lat_s < 0.0 && lat_s >= 60.0) + return 0; + p = p_end; + } + else + return 0; + consume_blank (p, &p_end); + p = p_end; + if (check_sec_delimiter (p, &p_end)) + p = p_end; + else + return 0; + consume_blank (p, &p_end); + p = p_end; + if (lat_prefix == '\0') + { + /* attempting to retrieve the prefix */ + if (*p == 'S' || *p == 'N') + { + lat_prefix = *p; + p++; + } + else + return 0; + } + lt = (double) lat_d + ((double) lat_m / 60.0) + (lat_s / 3600.0); + if (lat_prefix == 'S') + lt *= -1.0; + if (lt < -90.0 || lt > 90.0) + return 0; + +/* attempting to parse the longitude */ + consume_blank (p, &p_end); + p = p_end; + if (*p == 'E' || *p == 'W') + { + long_prefix = *p; + p++; + consume_blank (p, &p_end); + p = p_end; + } + if (*p >= '0' && *p <= '9') + { + consume_int (p, &p_end, &long_d); + if (long_d < 0 && long_d > 90) + return 0; + p = p_end; + } + else + return 0; + consume_blank (p, &p_end); + p = p_end; + if (check_deg_delimiter (p, &p_end)) + p = p_end; + else + return 0; + consume_blank (p, &p_end); + p = p_end; + if (*p >= '0' && *p <= '9') + { + consume_int (p, &p_end, &long_m); + if (long_m < 0 && long_m >= 60) + return 0; + p = p_end; + } + else + return 0; + consume_blank (p, &p_end); + p = p_end; + if (check_min_delimiter (p, &p_end)) + p = p_end; + else + return 0; + consume_blank (p, &p_end); + p = p_end; + if (*p >= '0' && *p <= '9') + { + consume_float (p, &p_end, &long_s); + if (long_s < 0.0 && long_s >= 60.0) + return 0; + p = p_end; + } + else + return 0; + consume_blank (p, &p_end); + p = p_end; + if (check_sec_delimiter (p, &p_end)) + p = p_end; + else + return 0; + consume_blank (p, &p_end); + p = p_end; + if (long_prefix == '\0') + { + /* attempting to retrieve the prefix */ + if (*p == 'E' || *p == 'W') + { + long_prefix = *p; + p++; + } + else + return 0; + } + lg = (double) long_d + ((double) long_m / 60.0) + (long_s / 3600.0); + if (long_prefix == 'W') + lg *= -1.0; + if (lg < -180.0 || lg > 180.0) + return 0; + + *longitude = lg; + *latitude = lt; + return 1; +} + +GAIAAUX_DECLARE char * +gaiaConvertToDMS (double longitude, double latitude) +{ +/* formatting a DMS string */ + char *dms0; + char *dms; + char long_prefix = 'E'; + char lat_prefix = 'N'; + int long_d; + int long_m; + int long_s; + int lat_d; + int lat_m; + int lat_s; + double val; + int len; + if (longitude < -180.0 || longitude > 180.0) + return NULL; + if (latitude < -90.0 || latitude > 90.0) + return NULL; + if (longitude < 0.0) + { + long_prefix = 'W'; + longitude *= -1.0; + } + if (latitude < 0.0) + { + lat_prefix = 'S'; + latitude *= -1.0; + } + long_d = floor (longitude); + val = 60.0 * (longitude - (double) long_d); + long_m = floor (val); + val = 60.0 * (val - (double) long_m); + long_s = floor (val); + if ((val - (double) long_s) > 0.5) + long_s++; + lat_d = floor (latitude); + val = 60.0 * (latitude - (double) lat_d); + lat_m = floor (val); + val = 60.0 * (val - (double) lat_m); + lat_s = floor (val); + if ((val - (double) lat_s) > 0.5) + lat_s++; + dms0 = + sqlite3_mprintf ("%02d°%02d′%02d″%c %03d°%02d′%02d″%c", lat_d, + lat_m, lat_s, lat_prefix, long_d, long_m, long_s, + long_prefix); + len = strlen (dms0); + dms = malloc (len + 1); + strcpy (dms, dms0); + sqlite3_free (dms0); + return dms; +} diff --git a/src/spatialite/src/gaiaaux/gg_utf8.c b/src/spatialite/src/gaiaaux/gg_utf8.c new file mode 100644 index 0000000..a07bf94 --- /dev/null +++ b/src/spatialite/src/gaiaaux/gg_utf8.c @@ -0,0 +1,184 @@ +/* + + gg_utf8.c -- locale charset handling + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#if OMIT_ICONV == 0 /* ICONV is absolutely required */ + +#if defined(__MINGW32__) || defined(_WIN32) +#define LIBICONV_STATIC +#include +#define LIBCHARSET_STATIC +#ifdef _MSC_VER +/* isn't supported on OSGeo4W */ +/* applying a tricky workaround to fix this issue */ +extern const char *locale_charset (void); +#else /* sane Windows - not OSGeo4W */ +#include +#endif /* end localcharset */ +#else /* not MINGW32 - WIN32 */ +#if defined(__APPLE__) || defined(__ANDROID__) +#include +#include +#else /* neither Mac OsX nor Android */ +#include +#include +#endif +#endif + +#include +#include + +GAIAAUX_DECLARE const char * +gaiaGetLocaleCharset () +{ +/* identifies the locale charset */ +#if defined(__MINGW32__) || defined(_WIN32) + return locale_charset (); +#else /* not MINGW32 - WIN32 */ +#if defined(__APPLE__) || defined(__ANDROID__) + return locale_charset (); +#else /* neither Mac OsX nor Android */ + return nl_langinfo (CODESET); +#endif +#endif +} + +GAIAAUX_DECLARE int +gaiaConvertCharset (char **buf, const char *fromCs, const char *toCs) +{ +/* converting a string from a charset to another "on-the-fly" */ + char utf8buf[65536]; +#if !defined(__MINGW32__) && defined(_WIN32) + const char *pBuf; +#else /* not WIN32 */ + char *pBuf; +#endif + size_t len; + size_t utf8len; + char *pUtf8buf; + iconv_t cvt = iconv_open (toCs, fromCs); + if (cvt == (iconv_t) (-1)) + goto unsupported; + len = strlen (*buf); + utf8len = 65536; + pBuf = *buf; + pUtf8buf = utf8buf; + if (iconv (cvt, &pBuf, &len, &pUtf8buf, &utf8len) == (size_t) (-1)) + goto error; + utf8buf[65536 - utf8len] = '\0'; + memcpy (*buf, utf8buf, (65536 - utf8len) + 1); + iconv_close (cvt); + return 1; + error: + iconv_close (cvt); + unsupported: + return 0; +} + +GAIAAUX_DECLARE void * +gaiaCreateUTF8Converter (const char *fromCS) +{ +/* creating a UTF8 converter and returning an opaque reference to it */ + iconv_t cvt = iconv_open ("UTF-8", fromCS); + if (cvt == (iconv_t) (-1)) + return NULL; + return cvt; +} + +GAIAAUX_DECLARE void +gaiaFreeUTF8Converter (void *cvtCS) +{ +/* destroying a UTF8 converter */ + if (cvtCS) + iconv_close (cvtCS); +} + +GAIAAUX_DECLARE char * +gaiaConvertToUTF8 (void *cvtCS, const char *buf, int buflen, int *err) +{ +/* converting a string to UTF8 */ + char *utf8buf = 0; +#if !defined(__MINGW32__) && defined(_WIN32) + const char *pBuf; +#else + char *pBuf; +#endif + size_t len; + size_t utf8len; + int maxlen = buflen * 4; + char *pUtf8buf; + *err = 0; + if (!cvtCS) + { + *err = 1; + return NULL; + } + utf8buf = malloc (maxlen); + len = buflen; + utf8len = maxlen; + pBuf = (char *) buf; + pUtf8buf = utf8buf; + if (iconv (cvtCS, &pBuf, &len, &pUtf8buf, &utf8len) == (size_t) (-1)) + { + free (utf8buf); + *err = 1; + return NULL; + } + utf8buf[maxlen - utf8len] = '\0'; + return utf8buf; +} + +#endif /* ICONV enabled/disabled */ diff --git a/src/spatialite/src/gaiaexif/Makefile.am b/src/spatialite/src/gaiaexif/Makefile.am new file mode 100644 index 0000000..10ab8b9 --- /dev/null +++ b/src/spatialite/src/gaiaexif/Makefile.am @@ -0,0 +1,17 @@ + +AM_CPPFLAGS = @CFLAGS@ +AM_CPPFLAGS += -I$(top_srcdir)/src/headers + +noinst_LTLIBRARIES = libgaiaexif.la gaiaexif.la + +libgaiaexif_la_SOURCES = gaia_exif.c + +gaiaexif_la_SOURCES = gaia_exif.c + +gaiaexif_la_CPPFLAGS = @CFLAGS@ +gaiaexif_la_CPPFLAGS += -I$(top_srcdir)/src/headers -I. +gaiaexif_la_CPPFLAGS += -DLOADABLE_EXTENSION +gaiaexif_la_LDFLAGS = -module +gaiaexif_la_LIBTOOLFLAGS = --tag=disable-static + +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda diff --git a/src/spatialite/src/gaiaexif/Makefile.in b/src/spatialite/src/gaiaexif/Makefile.in new file mode 100644 index 0000000..b5587cd --- /dev/null +++ b/src/spatialite/src/gaiaexif/Makefile.in @@ -0,0 +1,611 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/gaiaexif +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +gaiaexif_la_LIBADD = +am_gaiaexif_la_OBJECTS = gaiaexif_la-gaia_exif.lo +gaiaexif_la_OBJECTS = $(am_gaiaexif_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +gaiaexif_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(gaiaexif_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(gaiaexif_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +libgaiaexif_la_LIBADD = +am_libgaiaexif_la_OBJECTS = gaia_exif.lo +libgaiaexif_la_OBJECTS = $(am_libgaiaexif_la_OBJECTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(gaiaexif_la_SOURCES) $(libgaiaexif_la_SOURCES) +DIST_SOURCES = $(gaiaexif_la_SOURCES) $(libgaiaexif_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers +noinst_LTLIBRARIES = libgaiaexif.la gaiaexif.la +libgaiaexif_la_SOURCES = gaia_exif.c +gaiaexif_la_SOURCES = gaia_exif.c +gaiaexif_la_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers -I. \ + -DLOADABLE_EXTENSION +gaiaexif_la_LDFLAGS = -module +gaiaexif_la_LIBTOOLFLAGS = --tag=disable-static +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/gaiaexif/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/gaiaexif/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +gaiaexif.la: $(gaiaexif_la_OBJECTS) $(gaiaexif_la_DEPENDENCIES) $(EXTRA_gaiaexif_la_DEPENDENCIES) + $(AM_V_CCLD)$(gaiaexif_la_LINK) $(gaiaexif_la_OBJECTS) $(gaiaexif_la_LIBADD) $(LIBS) + +libgaiaexif.la: $(libgaiaexif_la_OBJECTS) $(libgaiaexif_la_DEPENDENCIES) $(EXTRA_libgaiaexif_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgaiaexif_la_OBJECTS) $(libgaiaexif_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaia_exif.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiaexif_la-gaia_exif.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +gaiaexif_la-gaia_exif.lo: gaia_exif.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiaexif_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiaexif_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiaexif_la-gaia_exif.lo -MD -MP -MF $(DEPDIR)/gaiaexif_la-gaia_exif.Tpo -c -o gaiaexif_la-gaia_exif.lo `test -f 'gaia_exif.c' || echo '$(srcdir)/'`gaia_exif.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiaexif_la-gaia_exif.Tpo $(DEPDIR)/gaiaexif_la-gaia_exif.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gaia_exif.c' object='gaiaexif_la-gaia_exif.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiaexif_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiaexif_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiaexif_la-gaia_exif.lo `test -f 'gaia_exif.c' || echo '$(srcdir)/'`gaia_exif.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/gaiaexif/gaia_exif.c b/src/spatialite/src/gaiaexif/gaia_exif.c new file mode 100644 index 0000000..621bb07 --- /dev/null +++ b/src/spatialite/src/gaiaexif/gaia_exif.c @@ -0,0 +1,2742 @@ +/* + + gaia_exif.c -- Gaia EXIF support + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include + +#include +#include +#include +#include + +#ifdef _WIN32 +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +static void +exifTagName (char gps, unsigned short tag_id, char *str, int len) +{ +/* returns the canonical name corresponding to an EXIF TAG ID */ + int l; + char *name = "UNKNOWN"; + if (gps) + { + switch (tag_id) + { + case 0x00: + name = "GPSVersionID"; + break; + case 0x01: + name = "GPSLatitudeRef"; + break; + case 0x02: + name = "GPSLatitude"; + break; + case 0x03: + name = "GPSLongitudeRef"; + break; + case 0x04: + name = "GPSLongitude"; + break; + case 0x05: + name = "GPSAltitudeRef"; + break; + case 0x06: + name = "GPSAltitude"; + break; + case 0x07: + name = "GPSTimeStamp"; + break; + case 0x08: + name = "GPSSatellites"; + break; + case 0x09: + name = "GPSStatus"; + break; + case 0x0A: + name = "GPSMeasureMode"; + break; + case 0x0B: + name = "GPSDOP"; + break; + case 0x0C: + name = "GPSSpeedRef"; + break; + case 0x0D: + name = "GPSSpeed"; + break; + case 0x0E: + name = "GPSTrackRef"; + break; + case 0x0F: + name = "GPSTrack"; + break; + case 0x10: + name = "GPSImgDirectionRef"; + break; + case 0x11: + name = "GPSImgDirection"; + break; + case 0x12: + name = "GPSMapDatum"; + break; + case 0x13: + name = "GPSDestLatitudeRef"; + break; + case 0x14: + name = "GPSDestLatitude"; + break; + case 0x15: + name = "GPSDestLongitudeRef"; + break; + case 0x16: + name = "GPSDestLongitude"; + break; + case 0x17: + name = "GPSDestBearingRef"; + break; + case 0x18: + name = "GPSDestBearing"; + break; + case 0x19: + name = "GPSDestDistanceRef"; + break; + case 0x1A: + name = "GPSDestDistance"; + break; + case 0x1B: + name = "GPSProcessingMethod"; + break; + case 0x1C: + name = "GPSAreaInformation"; + break; + case 0x1D: + name = "GPSDateStamp"; + break; + case 0x1E: + name = "GPSDifferential"; + break; + }; + } + else + { + switch (tag_id) + { + case 0x000B: + name = "ACDComment"; + break; + case 0x00FE: + name = "NewSubFile"; + break; + case 0x00FF: + name = "SubFile"; + break; + case 0x0100: + name = "ImageWidth"; + break; + case 0x0101: + name = "ImageLength"; + break; + case 0x0102: + name = "BitsPerSample"; + break; + case 0x0103: + name = "Compression"; + break; + case 0x0106: + name = "PhotometricInterpretation"; + break; + case 0x010A: + name = "FillOrder"; + break; + case 0x010D: + name = "DocumentName"; + break; + case 0x010E: + name = "ImageDescription"; + break; + case 0x010F: + name = "Make"; + break; + case 0x0110: + name = "Model"; + break; + case 0x0111: + name = "StripOffsets"; + break; + case 0x0112: + name = "Orientation"; + break; + case 0x0115: + name = "SamplesPerPixel"; + break; + case 0x0116: + name = "RowsPerStrip"; + break; + case 0x0117: + name = "StripByteCounts"; + break; + case 0x0118: + name = "MinSampleValue"; + break; + case 0x0119: + name = "MaxSampleValue"; + break; + case 0x011A: + name = "XResolution"; + break; + case 0x011B: + name = "YResolution"; + break; + case 0x011C: + name = "PlanarConfiguration"; + break; + case 0x011D: + name = "PageName"; + break; + case 0x011E: + name = "XPosition"; + break; + case 0x011F: + name = "YPosition"; + break; + case 0x0120: + name = "FreeOffsets"; + break; + case 0x0121: + name = "FreeByteCounts"; + break; + case 0x0122: + name = "GrayResponseUnit"; + break; + case 0x0123: + name = "GrayResponseCurve"; + break; + case 0x0124: + name = "T4Options"; + break; + case 0x0125: + name = "T6Options"; + break; + case 0x0128: + name = "ResolutionUnit"; + break; + case 0x0129: + name = "PageNumber"; + break; + case 0x012D: + name = "TransferFunction"; + break; + case 0x0131: + name = "Software"; + break; + case 0x0132: + name = "DateTime"; + break; + case 0x013B: + name = "Artist"; + break; + case 0x013C: + name = "HostComputer"; + break; + case 0x013D: + name = "Predictor"; + break; + case 0x013E: + name = "WhitePoint"; + break; + case 0x013F: + name = "PrimaryChromaticities"; + break; + case 0x0140: + name = "ColorMap"; + break; + case 0x0141: + name = "HalfToneHints"; + break; + case 0x0142: + name = "TileWidth"; + break; + case 0x0143: + name = "TileLength"; + break; + case 0x0144: + name = "TileOffsets"; + break; + case 0x0145: + name = "TileByteCounts"; + break; + case 0x014A: + name = "SubIFD"; + break; + case 0x014C: + name = "InkSet"; + break; + case 0x014D: + name = "InkNames"; + break; + case 0x014E: + name = "NumberOfInks"; + break; + case 0x0150: + name = "DotRange"; + break; + case 0x0151: + name = "TargetPrinter"; + break; + case 0x0152: + name = "ExtraSample"; + break; + case 0x0153: + name = "SampleFormat"; + break; + case 0x0154: + name = "SMinSampleValue"; + break; + case 0x0155: + name = "SMaxSampleValue"; + break; + case 0x0156: + name = "TransferRange"; + break; + case 0x0157: + name = "ClipPath"; + break; + case 0x0158: + name = "XClipPathUnits"; + break; + case 0x0159: + name = "YClipPathUnits"; + break; + case 0x015A: + name = "Indexed"; + break; + case 0x015B: + name = "JPEGTables"; + break; + case 0x015F: + name = "OPIProxy"; + break; + case 0x0200: + name = "JPEGProc"; + break; + case 0x0201: + name = "JPEGInterchangeFormat"; + break; + case 0x0202: + name = "JPEGInterchangeFormatLength"; + break; + case 0x0203: + name = "JPEGRestartInterval"; + break; + case 0x0205: + name = "JPEGLosslessPredictors"; + break; + case 0x0206: + name = "JPEGPointTransforms"; + break; + case 0x0207: + name = "JPEGQTables"; + break; + case 0x0208: + name = "JPEGDCTables"; + break; + case 0x0209: + name = "JPEGACTables"; + break; + case 0x0211: + name = "YCbCrCoefficients"; + break; + case 0x0212: + name = "YCbCrSubSampling"; + break; + case 0x0213: + name = "YCbCrPositioning"; + break; + case 0x0214: + name = "ReferenceBlackWhite"; + break; + case 0x02BC: + name = "ExtensibleMetadataPlatform"; + break; + case 0x0301: + name = "Gamma"; + break; + case 0x0302: + name = "ICCProfileDescriptor"; + break; + case 0x0303: + name = "SRGBRenderingIntent"; + break; + case 0x0320: + name = "ImageTitle"; + break; + case 0x5001: + name = "ResolutionXUnit"; + break; + case 0x5002: + name = "ResolutionYUnit"; + break; + case 0x5003: + name = "ResolutionXLengthUnit"; + break; + case 0x5004: + name = "ResolutionYLengthUnit"; + break; + case 0x5005: + name = "PrintFlags"; + break; + case 0x5006: + name = "PrintFlagsVersion"; + break; + case 0x5007: + name = "PrintFlagsCrop"; + break; + case 0x5008: + name = "PrintFlagsBleedWidth"; + break; + case 0x5009: + name = "PrintFlagsBleedWidthScale"; + break; + case 0x500A: + name = "HalftoneLPI"; + break; + case 0x500B: + name = "HalftoneLPIUnit"; + break; + case 0x500C: + name = "HalftoneDegree"; + break; + case 0x500D: + name = "HalftoneShape"; + break; + case 0x500E: + name = "HalftoneMisc"; + break; + case 0x500F: + name = "HalftoneScreen"; + break; + case 0x5010: + name = "JPEGQuality"; + break; + case 0x5011: + name = "GridSize"; + break; + case 0x5012: + name = "ThumbnailFormat"; + break; + case 0x5013: + name = "ThumbnailWidth"; + break; + case 0x5014: + name = "ThumbnailHeight"; + break; + case 0x5015: + name = "ThumbnailColorDepth"; + break; + case 0x5016: + name = "ThumbnailPlanes"; + break; + case 0x5017: + name = "ThumbnailRawBytes"; + break; + case 0x5018: + name = "ThumbnailSize"; + break; + case 0x5019: + name = "ThumbnailCompressedSize"; + break; + case 0x501A: + name = "ColorTransferFunction"; + break; + case 0x501B: + name = "ThumbnailData"; + break; + case 0x5020: + name = "ThumbnailImageWidth"; + break; + case 0x5021: + name = "ThumbnailImageHeight"; + break; + case 0x5022: + name = "ThumbnailBitsPerSample"; + break; + case 0x5023: + name = "ThumbnailCompression"; + break; + case 0x5024: + name = "ThumbnailPhotometricInterp"; + break; + case 0x5025: + name = "ThumbnailImageDescription"; + break; + case 0x5026: + name = "ThumbnailEquipMake"; + break; + case 0x5027: + name = "ThumbnailEquipModel"; + break; + case 0x5028: + name = "ThumbnailStripOffsets"; + break; + case 0x5029: + name = "ThumbnailOrientation"; + break; + case 0x502A: + name = "ThumbnailSamplesPerPixel"; + break; + case 0x502B: + name = "ThumbnailRowsPerStrip"; + break; + case 0x502C: + name = "ThumbnailStripBytesCount"; + break; + case 0x502D: + name = "ThumbnailResolutionX"; + break; + case 0x502E: + name = "ThumbnailResolutionY"; + break; + case 0x502F: + name = "ThumbnailPlanarConfig"; + break; + case 0x5030: + name = "ThumbnailResolutionUnit"; + break; + case 0x5031: + name = "ThumbnailTransferFunction"; + break; + case 0x5032: + name = "ThumbnailSoftwareUsed"; + break; + case 0x5033: + name = "ThumbnailDateTime"; + break; + case 0x5034: + name = "ThumbnailArtist"; + break; + case 0x5035: + name = "ThumbnailWhitePoint"; + break; + case 0x5036: + name = "ThumbnailPrimaryChromaticities"; + break; + case 0x5037: + name = "ThumbnailYCbCrCoefficients"; + break; + case 0x5038: + name = "ThumbnailYCbCrSubsampling"; + break; + case 0x5039: + name = "ThumbnailYCbCrPositioning"; + break; + case 0x503A: + name = "ThumbnailRefBlackWhite"; + break; + case 0x503B: + name = "ThumbnailCopyRight"; + break; + case 0x5090: + name = "LuminanceTable"; + break; + case 0x5091: + name = "ChrominanceTable"; + break; + case 0x5100: + name = "FrameDelay"; + break; + case 0x5101: + name = "LoopCount"; + break; + case 0x5110: + name = "PixelUnit"; + break; + case 0x5111: + name = "PixelPerUnitX"; + break; + case 0x5112: + name = "PixelPerUnitY"; + break; + case 0x5113: + name = "PaletteHistogram"; + break; + case 0x1000: + name = "RelatedImageFileFormat"; + break; + case 0x800D: + name = "ImageID"; + break; + case 0x80E3: + name = "Matteing"; + break; + case 0x80E4: + name = "DataType"; + break; + case 0x80E5: + name = "ImageDepth"; + break; + case 0x80E6: + name = "TileDepth"; + break; + case 0x828D: + name = "CFARepeatPatternDim"; + break; + case 0x828E: + name = "CFAPattern"; + break; + case 0x828F: + name = "BatteryLevel"; + break; + case 0x8298: + name = "Copyright"; + break; + case 0x829A: + name = "ExposureTime"; + break; + case 0x829D: + name = "FNumber"; + break; + case 0x83BB: + name = "IPTC/NAA"; + break; + case 0x84E3: + name = "IT8RasterPadding"; + break; + case 0x84E5: + name = "IT8ColorTable"; + break; + case 0x8649: + name = "ImageResourceInformation"; + break; + case 0x8769: + name = "Exif IFD Pointer"; + break; + case 0x8773: + name = "ICC_Profile"; + break; + case 0x8822: + name = "ExposureProgram"; + break; + case 0x8824: + name = "SpectralSensitivity"; + break; + case 0x8825: + name = "GPSInfo IFD Pointer"; + break; + case 0x8827: + name = "ISOSpeedRatings"; + break; + case 0x8828: + name = "OECF"; + break; + case 0x9000: + name = "ExifVersion"; + break; + case 0x9003: + name = "DateTimeOriginal"; + break; + case 0x9004: + name = "DateTimeDigitized"; + break; + case 0x9101: + name = "ComponentsConfiguration"; + break; + case 0x9102: + name = "CompressedBitsPerPixel"; + break; + case 0x9201: + name = "ShutterSpeedValue"; + break; + case 0x9202: + name = "ApertureValue"; + break; + case 0x9203: + name = "BrightnessValue"; + break; + case 0x9204: + name = "ExposureBiasValue"; + break; + case 0x9205: + name = "MaxApertureValue"; + break; + case 0x9206: + name = "SubjectDistance"; + break; + case 0x9207: + name = "MeteringMode"; + break; + case 0x9208: + name = "LightSource"; + break; + case 0x9209: + name = "Flash"; + break; + case 0x920A: + name = "FocalLength"; + break; + case 0x920B: + case 0xA20B: + name = "FlashEnergy"; + break; + case 0x920C: + case 0xA20C: + name = "SpatialFrequencyResponse"; + break; + case 0x920D: + name = "Noise"; + break; + case 0x920E: + case 0xA20E: + name = "FocalPlaneXResolution"; + break; + case 0x920F: + case 0XA20F: + name = "FocalPlaneYResolution"; + break; + case 0x9210: + case 0xA210: + name = "FocalPlaneResolutionUnit"; + break; + case 0x9211: + name = "ImageNumber"; + break; + case 0x9212: + name = "SecurityClassification"; + break; + case 0x9213: + name = "ImageHistory"; + break; + case 0x9214: + case 0xA214: + name = "SubjectLocation"; + break; + case 0x9215: + case 0xA215: + name = "ExposureIndex"; + break; + case 0x9216: + name = "TIFF/EPStandardID"; + break; + case 0x9217: + case 0xA217: + name = "SensingMethod"; + break; + case 0x923F: + name = "StoNits"; + break; + case 0x927C: + name = "MakerNote"; + break; + case 0x9286: + name = "UserComment"; + break; + case 0x9290: + name = "SubSecTime"; + break; + case 0x9291: + name = "SubSecTimeOriginal"; + break; + case 0x9292: + name = "SubSecTimeDigitized"; + break; + case 0xA000: + name = "FlashpixVersion"; + break; + case 0xA001: + name = "ColorSpace"; + break; + case 0xA002: + name = "ExifImageWidth"; + break; + case 0xA003: + name = "ExifImageLength"; + break; + case 0xA004: + name = "RelatedSoundFile"; + break; + case 0xA005: + name = "Interoperability IFD Pointer"; + break; + case 0xA20D: + name = "Noise"; + break; + case 0xA211: + name = "ImageNumber"; + break; + case 0xA212: + name = "SecurityClassification"; + break; + case 0xA213: + name = "ImageHistory"; + break; + case 0xA216: + name = "TIFF/EPStandardID"; + break; + case 0xA300: + name = "FileSource"; + break; + case 0xA301: + name = "SceneType"; + break; + case 0xA302: + name = "CFAPattern"; + break; + case 0xA401: + name = "CustomRendered"; + break; + case 0xA402: + name = "ExposureMode"; + break; + case 0xA403: + name = "WhiteBalance"; + break; + case 0xA404: + name = "DigitalZoomRatio"; + break; + case 0xA405: + name = "FocalLengthIn35mmFilm"; + break; + case 0xA406: + name = "SceneCaptureType"; + break; + case 0xA407: + name = "GainControl"; + break; + case 0xA408: + name = "Contrast"; + break; + case 0xA409: + name = "Saturation"; + break; + case 0xA40A: + name = "Sharpness"; + break; + case 0xA40B: + name = "DeviceSettingDescription"; + break; + case 0xA40C: + name = "SubjectDistanceRange"; + break; + case 0xA420: + name = "ImageUniqueID"; + break; + }; + } + l = strlen (name); + if (len > l) + strcpy (str, name); + else + { + memset (str, '\0', len); + memcpy (str, name, len - 1); + } +} + +static unsigned short +exifImportU16 (const unsigned char *p, int little_endian, + int little_endian_arch) +{ +/* fetches an unsigned 16bit int from BLOB respecting declared endiannes */ + union cvt + { + unsigned char byte[2]; + unsigned short short_value; + } convert; + if (little_endian_arch) + { + /* Litte-Endian architecture [e.g. x86] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 1); + convert.byte[1] = *(p + 0); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + } + } + else + { + /* Big Endian architecture [e.g. PPC] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 1); + convert.byte[1] = *(p + 0); + } + } + return convert.short_value; +} + +static unsigned int +exifImportU32 (const unsigned char *p, int little_endian, + int little_endian_arch) +{ +/* fetches an unsigned 32bit int from BLOB respecting declared endiannes */ + union cvt + { + unsigned char byte[4]; + unsigned int int_value; + } convert; + if (little_endian_arch) + { + /* Litte-Endian architecture [e.g. x86] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 3); + convert.byte[1] = *(p + 2); + convert.byte[2] = *(p + 1); + convert.byte[3] = *(p + 0); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + convert.byte[2] = *(p + 2); + convert.byte[3] = *(p + 3); + } + } + else + { + /* Big Endian architecture [e.g. PPC] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + convert.byte[2] = *(p + 2); + convert.byte[3] = *(p + 3); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 3); + convert.byte[1] = *(p + 2); + convert.byte[2] = *(p + 1); + convert.byte[3] = *(p + 0); + } + } + return convert.int_value; +} + +static float +exifImportFloat32 (const unsigned char *p, int little_endian, + int little_endian_arch) +{ +/* fetches a 32bit FLOAT from BLOB respecting declared endiannes */ + union cvt + { + unsigned char byte[4]; + float float_value; + } convert; + if (little_endian_arch) + { + /* Litte-Endian architecture [e.g. x86] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 3); + convert.byte[1] = *(p + 2); + convert.byte[2] = *(p + 1); + convert.byte[3] = *(p + 0); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + convert.byte[2] = *(p + 2); + convert.byte[3] = *(p + 3); + } + } + else + { + /* Big Endian architecture [e.g. PPC] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + convert.byte[2] = *(p + 2); + convert.byte[3] = *(p + 3); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 3); + convert.byte[1] = *(p + 2); + convert.byte[2] = *(p + 1); + convert.byte[3] = *(p + 0); + } + } + return convert.float_value; +} + +static void +exifSetTagValue (gaiaExifTagPtr tag, const unsigned char *blob, int endian_mode, + int endian_arch, int app1_offset) +{ +/* setting the TAG value */ + int i; + int sz = 0; + unsigned int offset; + const unsigned char *ptr; + unsigned short short_value; + unsigned int int_value; + short sign_short_value; + int sign_int_value; + float float_value; + double double_value; + if (tag->Type == 1 || tag->Type == 2 || tag->Type == 6 || tag->Type == 7) + sz = tag->Count; + if (tag->Type == 3 || tag->Type == 8) + sz = tag->Count * 2; + if (tag->Type == 4 || tag->Type == 9 || tag->Type == 11) + sz = tag->Count * 4; + if (tag->Type == 5 || tag->Type == 10 || tag->Type == 12) + sz = tag->Count * 8; + if (sz <= 4) + { + /* TAG values is stored within the offset */ + ptr = tag->TagOffset; + } + else + { + /* jumping to offset */ + offset = exifImportU32 (tag->TagOffset, endian_mode, endian_arch); + offset += app1_offset + 10; + ptr = blob + offset; + } + if (tag->Type == 1 || tag->Type == 6 || tag->Type == 7) + { + /* BYTE type */ + tag->ByteValue = malloc (tag->Count); + memcpy (tag->ByteValue, ptr, tag->Count); + } + if (tag->Type == 2) + { + /* STRING type */ + tag->StringValue = malloc (tag->Count); + memcpy (tag->StringValue, ptr, tag->Count); + } + if (tag->Type == 3) + { + /* SHORT type */ + tag->ShortValues = malloc (tag->Count * sizeof (unsigned short)); + for (i = 0; i < tag->Count; i++) + { + short_value = + exifImportU16 (ptr + (i * 2), endian_mode, endian_arch); + *(tag->ShortValues + i) = short_value; + } + } + if (tag->Type == 4) + { + /* LONG type */ + tag->LongValues = malloc (tag->Count * sizeof (unsigned int)); + for (i = 0; i < tag->Count; i++) + { + int_value = + exifImportU32 (ptr + (i * 4), endian_mode, endian_arch); + *(tag->LongValues + i) = int_value; + } + } + if (tag->Type == 5) + { + /* RATIONAL type */ + tag->LongRationals1 = malloc (tag->Count * sizeof (unsigned int)); + tag->LongRationals2 = malloc (tag->Count * sizeof (unsigned int)); + for (i = 0; i < tag->Count; i++) + { + int_value = + exifImportU32 (ptr + (i * 8), endian_mode, endian_arch); + *(tag->LongRationals1 + i) = int_value; + int_value = + exifImportU32 (ptr + (i * 8) + 4, endian_mode, endian_arch); + *(tag->LongRationals2 + i) = int_value; + } + } + if (tag->Type == 8) + { + /* SSHORT type */ + tag->SignedShortValues = malloc (tag->Count * sizeof (short)); + for (i = 0; i < tag->Count; i++) + { + sign_short_value = + gaiaImport16 (ptr + (i * 2), endian_mode, endian_arch); + *(tag->SignedShortValues + i) = sign_short_value; + } + } + if (tag->Type == 9) + { + /* SIGNED LONG type */ + tag->SignedLongValues = malloc (tag->Count * sizeof (int)); + for (i = 0; i < tag->Count; i++) + { + sign_int_value = + gaiaImport32 (ptr + (i * 4), endian_mode, endian_arch); + *(tag->SignedLongValues + i) = sign_int_value; + } + } + if (tag->Type == 10) + { + /* SIGNED RATIONAL type */ + tag->SignedLongRationals1 = malloc (tag->Count * sizeof (int)); + tag->SignedLongRationals2 = malloc (tag->Count * sizeof (int)); + for (i = 0; i < tag->Count; i++) + { + sign_int_value = + gaiaImport32 (ptr + (i * 8), endian_mode, endian_arch); + *(tag->SignedLongRationals1 + i) = sign_int_value; + sign_int_value = + gaiaImport32 (ptr + (i * 8) + 4, endian_mode, endian_arch); + *(tag->SignedLongRationals2 + i) = sign_int_value; + } + } + if (tag->Type == 11) + { + /* FLOAT type */ + tag->FloatValues = malloc (tag->Count * sizeof (float)); + for (i = 0; i < tag->Count; i++) + { + float_value = + exifImportFloat32 (ptr + (i * 4), endian_mode, endian_arch); + *(tag->FloatValues + i) = float_value; + } + } + if (tag->Type == 12) + { + /* DOUBLE type */ + tag->DoubleValues = malloc (tag->Count * sizeof (double)); + for (i = 0; i < tag->Count; i++) + { + double_value = + gaiaImport64 (ptr + (i * 8), endian_mode, endian_arch); + *(tag->DoubleValues + i) = double_value; + } + } +} + +static void +exifParseTag (const unsigned char *blob, unsigned int offset, int endian_mode, + int endian_arch, gaiaExifTagListPtr list, int gps, + int app1_offset) +{ +/* parsing some TAG and inserting into the list */ + unsigned short tag_id; + unsigned short type; + unsigned int count; + gaiaExifTagPtr tag; + tag_id = exifImportU16 (blob + offset, endian_mode, endian_arch); + type = exifImportU16 (blob + offset + 2, endian_mode, endian_arch); + count = exifImportU32 (blob + offset + 4, endian_mode, endian_arch); + tag = malloc (sizeof (gaiaExifTag)); + tag->Gps = (char) gps; + tag->TagId = tag_id; + tag->Type = type; + tag->Count = (unsigned short) count; + memcpy (tag->TagOffset, blob + offset + 8, 4); + tag->ByteValue = NULL; + tag->StringValue = NULL; + tag->ShortValues = NULL; + tag->LongValues = NULL; + tag->LongRationals1 = NULL; + tag->LongRationals2 = NULL; + tag->SignedShortValues = NULL; + tag->SignedLongValues = NULL; + tag->SignedLongRationals1 = NULL; + tag->SignedLongRationals2 = NULL; + tag->FloatValues = NULL; + tag->DoubleValues = NULL; + exifSetTagValue (tag, blob, endian_mode, endian_arch, app1_offset); + tag->Next = NULL; + if (!(list->First)) + list->First = tag; + if (list->Last) + (list->Last)->Next = tag; + list->Last = tag; + (list->NumTags)++; +} + +static void +exifExpandIFD (gaiaExifTagListPtr list, const unsigned char *blob, + int endian_mode, int endian_arch, int app1_offset) +{ +/* trying to expand the EXIF-IFD */ + unsigned int offset; + unsigned short items; + unsigned short i; + gaiaExifTagPtr tag; + if (!list) + return; + tag = list->First; + while (tag) + { + if (tag->TagId == 34665) + { + /* ok, this one is an IFD pointer */ + offset = + exifImportU32 (tag->TagOffset, endian_mode, endian_arch); + offset += app1_offset + 10; + items = exifImportU16 (blob + offset, endian_mode, endian_arch); + offset += 2; + for (i = 0; i < items; i++) + { + /* fetching the TAGs */ + exifParseTag (blob, offset, endian_mode, endian_arch, + list, 0, app1_offset); + offset += 12; + } + } + tag = tag->Next; + } +} + +static void +exifExpandGPS (gaiaExifTagListPtr list, const unsigned char *blob, + int endian_mode, int endian_arch, int app1_offset) +{ +/* trying to expand the EXIF-GPS */ + unsigned int offset; + unsigned short items; + unsigned short i; + gaiaExifTagPtr tag; + if (!list) + return; + tag = list->First; + while (tag) + { + if (tag->TagId == 34853) + { + /* ok, this one is a GPSinfo-IFD pointer */ + offset = + exifImportU32 (tag->TagOffset, endian_mode, endian_arch); + offset += app1_offset + 10; + items = exifImportU16 (blob + offset, endian_mode, endian_arch); + offset += 2; + for (i = 0; i < items; i++) + { + /* fetching the TAGs */ + exifParseTag (blob, offset, endian_mode, endian_arch, + list, 1, app1_offset); + offset += 12; + } + } + tag = tag->Next; + } +} + +GAIAEXIF_DECLARE gaiaExifTagListPtr +gaiaGetExifTags (const unsigned char *blob, int size) +{ +/* trying to parse a BLOB as an EXIF photo */ + gaiaExifTagListPtr list; + int endian_arch = gaiaEndianArch (); + int endian_mode; + unsigned short app1_size; + unsigned int offset; + unsigned short items; + unsigned short i; + int app1_offset; + gaiaExifTagPtr pT; + if (!blob) + goto error; + if (size < 14) + goto error; +/* checking for SOI [Start Of Image] */ + if (*(blob + 0) == 0xff && *(blob + 1) == 0xd8) + ; + else + goto error; + for (app1_offset = 2; app1_offset < size - 1; app1_offset++) + { + if (*(blob + app1_offset) == 0xff + && *(blob + app1_offset + 1) == 0xe1) + { + /* found APP1 marker */ + break; + } + } + if (app1_offset == size - 1) + { + /* we've reached the end of the file, but not found the marker */ + goto error; + } +/* checking for EXIF identifier */ + if (memcmp (blob + app1_offset + 4, "Exif", 4) == 0) + ; + else + goto error; +/* checking for Pad */ + if (*(blob + app1_offset + 8) == 0x00 && *(blob + app1_offset + 9) == 0x00) + ; + else + goto error; + if (memcmp (blob + app1_offset + 10, "II", 2) == 0) + endian_mode = GAIA_LITTLE_ENDIAN; + else if (memcmp (blob + app1_offset + 10, "MM", 2) == 0) + endian_mode = GAIA_BIG_ENDIAN; + else + goto error; +/* OK: this BLOB seems to contain a valid EXIF */ + app1_size = + exifImportU16 (blob + app1_offset + 2, endian_mode, endian_arch); + if ((app1_size + app1_offset + 4) > size) + goto error; +/* checking for marker */ + if (endian_mode == GAIA_BIG_ENDIAN) + { + if (*(blob + app1_offset + 12) == 0x00 + && *(blob + app1_offset + 13) == 0x2a) + ; + else + goto error; + } + else + { + if (*(blob + app1_offset + 12) == 0x2a + && *(blob + app1_offset + 13) == 0x00) + ; + else + goto error; + } +/* allocating an EXIF TAG LIST */ + list = malloc (sizeof (gaiaExifTagList)); + list->First = NULL; + list->Last = NULL; + list->NumTags = 0; + list->TagsArray = NULL; + offset = exifImportU32 (blob + app1_offset + 14, endian_mode, endian_arch); + offset += app1_offset + 10; +/* jump to offset */ + items = exifImportU16 (blob + offset, endian_mode, endian_arch); + offset += 2; + for (i = 0; i < items; i++) + { +/* fetching the EXIF TAGs */ + exifParseTag (blob, offset, endian_mode, endian_arch, list, 0, + app1_offset); + offset += 12; + } +/* expanding the IFD and GPS tags */ + exifExpandIFD (list, blob, endian_mode, endian_arch, app1_offset); + exifExpandGPS (list, blob, endian_mode, endian_arch, app1_offset); + if (list->NumTags) + { + /* organizing the EXIF TAGS as an Array */ + list->TagsArray = malloc (sizeof (gaiaExifTagPtr) * list->NumTags); + pT = list->First; + i = 0; + while (pT) + { + *(list->TagsArray + i++) = pT; + pT = pT->Next; + } + } + return list; + error: + return NULL; +} + +GAIAEXIF_DECLARE void +gaiaExifTagsFree (gaiaExifTagListPtr p) +{ +/* memory cleanup; freeing the EXIF TAG list */ + gaiaExifTagPtr pT; + gaiaExifTagPtr pTn; + if (!p) + return; + pT = p->First; + while (pT) + { + pTn = pT->Next; + if (pT->ByteValue) + free (pT->ByteValue); + if (pT->StringValue) + free (pT->StringValue); + if (pT->ShortValues) + free (pT->ShortValues); + if (pT->LongValues) + free (pT->LongValues); + if (pT->LongRationals1) + free (pT->LongRationals1); + if (pT->LongRationals2) + free (pT->LongRationals2); + if (pT->SignedShortValues) + free (pT->SignedShortValues); + if (pT->SignedLongValues) + free (pT->SignedLongValues); + if (pT->SignedLongRationals1) + free (pT->SignedLongRationals1); + if (pT->SignedLongRationals2) + free (pT->SignedLongRationals2); + if (pT->FloatValues) + free (pT->FloatValues); + if (pT->DoubleValues) + free (pT->DoubleValues); + free (pT); + pT = pTn; + } + if (p->TagsArray) + free (p->TagsArray); + free (p); +} + +GAIAEXIF_DECLARE int +gaiaGetExifTagsCount (gaiaExifTagListPtr tag_list) +{ +/* returns the # TAGSs into this list */ + return tag_list->NumTags; +} + +GAIAEXIF_DECLARE gaiaExifTagPtr +gaiaGetExifTagByPos (gaiaExifTagListPtr tag_list, const int pos) +{ +/* returns the Nth TAG from this list */ + if (pos >= 0 && pos < tag_list->NumTags) + return *(tag_list->TagsArray + pos); + return NULL; +} + +GAIAEXIF_DECLARE gaiaExifTagPtr +gaiaGetExifTagById (const gaiaExifTagListPtr tag_list, + const unsigned short tag_id) +{ +/* returns a not-GPS TAG identified by its ID */ + gaiaExifTagPtr pT = tag_list->First; + while (pT) + { + if (!(pT->Gps) && pT->TagId == tag_id) + return pT; + pT = pT->Next; + } + return NULL; +} + +GAIAEXIF_DECLARE gaiaExifTagPtr +gaiaGetExifGpsTagById (const gaiaExifTagListPtr tag_list, + const unsigned short tag_id) +{ +/* returns a GPS TAG identified by its ID */ + gaiaExifTagPtr pT = tag_list->First; + while (pT) + { + if (pT->Gps && pT->TagId == tag_id) + return pT; + pT = pT->Next; + } + return NULL; +} + +GAIAEXIF_DECLARE gaiaExifTagPtr +gaiaGetExifTagByName (const gaiaExifTagListPtr tag_list, const char *tag_name) +{ +/* returns a TAG identified by its Name */ + char name[128]; + gaiaExifTagPtr pT = tag_list->First; + while (pT) + { + exifTagName (pT->Gps, pT->TagId, name, 128); + if (strcasecmp (name, tag_name) == 0) + return pT; + pT = pT->Next; + } + return NULL; +} + +GAIAEXIF_DECLARE unsigned short +gaiaExifTagGetId (const gaiaExifTagPtr tag) +{ +/* returns the TAG ID */ + return tag->TagId; +} + +GAIAEXIF_DECLARE int +gaiaIsExifGpsTag (const gaiaExifTagPtr tag) +{ +/* checks if this one is a GPS tag */ + return tag->Gps; +} + +GAIAEXIF_DECLARE void +gaiaExifTagGetName (const gaiaExifTagPtr tag, char *str, int len) +{ +/* returns the TAG symbolic Name */ + exifTagName (tag->Gps, tag->TagId, str, len); +} + +GAIAEXIF_DECLARE unsigned short +gaiaExifTagGetValueType (const gaiaExifTagPtr tag) +{ +/* returns the TAG value Type */ + return tag->Type; +} + +GAIAEXIF_DECLARE unsigned short +gaiaExifTagGetNumValues (const gaiaExifTagPtr tag) +{ +/* returns the # TAG Values */ + return tag->Count; +} + +GAIAEXIF_DECLARE unsigned char +gaiaExifTagGetByteValue (const gaiaExifTagPtr tag, const int ind, int *ok) +{ +/* returns the Nth Byte value */ + if (ind >= 0 + && ind < + tag->Count && (tag->Type == 1 || tag->Type == 6 || tag->Type == 7)) + { + *ok = 1; + return *(tag->ByteValue + ind); + } + *ok = 0; + return 0; +} + +GAIAEXIF_DECLARE void +gaiaExifTagGetStringValue (const gaiaExifTagPtr tag, char *str, int len, + int *ok) +{ +/* returns the String value */ + int l; + if (tag->Type == 2) + { + *ok = 1; + l = strlen (tag->StringValue); + if (len > l) + strcpy (str, tag->StringValue); + else + { + memset (str, '\0', len); + memcpy (str, tag->StringValue, len - 1); + } + return; + } + *ok = 0; +} + +GAIAEXIF_DECLARE unsigned short +gaiaExifTagGetShortValue (const gaiaExifTagPtr tag, const int ind, int *ok) +{ +/* returns the Nth Short value */ + if (ind >= 0 && ind < tag->Count && tag->Type == 3) + { + *ok = 1; + return *(tag->ShortValues + ind); + } + *ok = 0; + return 0; +} + +GAIAEXIF_DECLARE unsigned int +gaiaExifTagGetLongValue (const gaiaExifTagPtr tag, const int ind, int *ok) +{ +/* returns the Nth Long value */ + if (ind >= 0 && ind < tag->Count && tag->Type == 4) + { + *ok = 1; + return *(tag->LongValues + ind); + } + *ok = 0; + return 0; +} + +GAIAEXIF_DECLARE unsigned int +gaiaExifTagGetRational1Value (const gaiaExifTagPtr tag, const int ind, int *ok) +{ +/* returns the Nth Rational (1) value */ + if (ind >= 0 && ind < tag->Count && tag->Type == 5) + { + *ok = 1; + return *(tag->LongRationals1 + ind); + } + *ok = 0; + return 0; +} + +GAIAEXIF_DECLARE unsigned int +gaiaExifTagGetRational2Value (const gaiaExifTagPtr tag, const int ind, int *ok) +{ +/* returns the Nth Rational (2) value */ + if (ind >= 0 && ind < tag->Count && tag->Type == 5) + { + *ok = 1; + return *(tag->LongRationals2 + ind); + } + *ok = 0; + return 0; +} + +GAIAEXIF_DECLARE double +gaiaExifTagGetRationalValue (const gaiaExifTagPtr tag, const int ind, int *ok) +{ +/* returns the Nth Rational value as Double */ + double x; + if (ind >= 0 + && ind < tag->Count && tag->Type == 5 && *(tag->LongRationals2 + ind)) + { + *ok = 1; + x = (double) (*(tag->LongRationals1 + ind)) / + (double) (*(tag->LongRationals2 + ind)); + return x; + } + *ok = 0; + return 0; +} + +GAIAEXIF_DECLARE short +gaiaExifTagGetSignedShortValue (const gaiaExifTagPtr tag, const int ind, + int *ok) +{ +/* returns the Nth Signed Short value */ + if (ind >= 0 && ind < tag->Count && tag->Type == 8) + { + *ok = 1; + return *(tag->SignedShortValues + ind); + } + *ok = 0; + return 0; +} + +GAIAEXIF_DECLARE int +gaiaExifTagGetSignedLongValue (const gaiaExifTagPtr tag, const int ind, int *ok) +{ +/* returns the Nth Signed Long value */ + if (ind >= 0 && ind < tag->Count && tag->Type == 9) + { + *ok = 1; + return *(tag->SignedLongValues + ind); + } + *ok = 0; + return 0; +} + +GAIAEXIF_DECLARE int +gaiaExifTagGetSignedRational1Value (const gaiaExifTagPtr tag, const int ind, + int *ok) +{ +/* returns the Nth Signed Rational (1) value */ + if (ind >= 0 && ind < tag->Count && tag->Type == 10) + { + *ok = 1; + return *(tag->SignedLongRationals1 + ind); + } + *ok = 0; + return 0; +} + +GAIAEXIF_DECLARE int +gaiaExifTagGetSignedRational2Value (const gaiaExifTagPtr tag, const int ind, + int *ok) +{ +/* returns the Nth Signed Rational (2) value */ + if (ind >= 0 && ind < tag->Count && tag->Type == 10) + { + *ok = 1; + return *(tag->SignedLongRationals2 + ind); + } + *ok = 0; + return 0; +} + +GAIAEXIF_DECLARE double +gaiaExifTagGetSignedRationalValue (const gaiaExifTagPtr tag, const int ind, + int *ok) +{ +/* returns the Nth Signed Rational value as Double */ + double x; + if (ind >= 0 + && ind < + tag->Count && tag->Type == 10 && *(tag->SignedLongRationals2 + ind)) + { + *ok = 1; + x = (double) (*(tag->SignedLongRationals1 + ind)) / + (double) (*(tag->SignedLongRationals2 + ind)); + return x; + } + *ok = 0; + return 0; +} + +GAIAEXIF_DECLARE float +gaiaExifTagGetFloatValue (const gaiaExifTagPtr tag, const int ind, int *ok) +{ +/* returns the Nth Float value */ + if (ind >= 0 && ind < tag->Count && tag->Type == 11) + { + *ok = 1; + return *(tag->FloatValues + ind); + } + *ok = 0; + return 0; +} + +GAIAEXIF_DECLARE double +gaiaExifTagGetDoubleValue (const gaiaExifTagPtr tag, const int ind, int *ok) +{ +/* returns the Nth Double value */ + if (ind >= 0 && ind < tag->Count && tag->Type == 12) + { + *ok = 1; + return *(tag->DoubleValues + ind); + } + *ok = 0; + return 0; +} + +GAIAEXIF_DECLARE void +gaiaExifTagGetHumanReadable (const gaiaExifTagPtr tag, char *str, int len, + int *ok) +{ +/* returns the Human Readable value */ + char *human = ""; + char dummy[1024]; + int l; + int xok; + double dblval; + switch (tag->TagId) + { + case 0x0128: /* ResolutionUnit */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 2: + human = "Inches"; + break; + case 3: + human = "Centimeters"; + break; + }; + } + break; + case 0x8822: /* ExposureProgram */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 0: + human = "Not defined"; + break; + case 1: + human = "Manual"; + break; + case 2: + human = "Normal program"; + break; + case 3: + human = "Aperture priority"; + break; + case 4: + human = "Shutter priority"; + break; + case 5: + human = "Creative program (biased toward depth of field)"; + break; + case 6: + human = + "Action program (biased toward fast shutter speed)"; + break; + case 7: + human = + "Portrait mode (for closeup photos with the background out of focus)"; + break; + case 8: + human = + "Landscape mode (for landscape photos with the background in focus)"; + break; + }; + } + break; + case 0xA402: /* ExposureMode */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 0: + human = "Auto exposure"; + break; + case 1: + human = "Manual exposure"; + break; + case 2: + human = "Auto bracket"; + break; + }; + } + break; + case 0x0112: /* Orientation */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 1: + human = "Normal"; + break; + case 2: + human = "Mirrored"; + break; + case 3: + human = "Upsidedown"; + break; + case 4: + human = "Upsidedown Mirrored"; + break; + case 5: + human = "90 deg Clockwise Mirrored"; + break; + case 6: + human = "90 deg Counterclocwise"; + break; + case 7: + human = "90 deg Counterclocwise Mirrored"; + break; + case 8: + human = "90 deg Mirrored"; + break; + }; + } + break; + case 0x9207: /* MeteringMode */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 1: + human = "Average"; + break; + case 2: + human = "Center Weighted Average"; + break; + case 3: + human = "Spot"; + break; + case 4: + human = "MultiSpot"; + break; + case 5: + human = "MultiSegment"; + break; + case 6: + human = "Partial"; + break; + case 255: + human = "Other"; + break; + }; + } + break; + case 0xA403: /* WhiteBalance */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 0: + human = "Auto"; + break; + case 1: + human = "Sunny"; + break; + case 2: + human = "Cloudy"; + break; + case 3: + human = "Tungsten"; + break; + case 4: + human = "Fluorescent"; + break; + case 5: + human = "Flash"; + break; + case 6: + human = "Custom"; + break; + case 129: + human = "Manual"; + break; + }; + } + break; + case 0x9209: /* Flash */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 0: + case 16: + case 24: + case 32: + human = "No Flash"; + break; + case 1: + human = "Flash"; + break; + case 5: + human = "Flash, strobe return light not detected"; + break; + case 7: + human = "Flash, strobe return light detected"; + break; + case 9: + human = "Compulsory Flash"; + break; + case 13: + human = "Compulsory Flash, Return light not detected"; + break; + case 15: + human = "Compulsory Flash, Return light detected"; + break; + case 25: + human = "Flash, Auto-Mode"; + break; + case 29: + human = "Flash, Auto-Mode, Return light not detected"; + break; + case 31: + human = "Flash, Auto-Mode, Return light detected"; + break; + case 65: + human = "Red Eye"; + break; + case 69: + human = "Red Eye, Return light not detected"; + break; + case 71: + human = "Red Eye, Return light detected"; + break; + case 73: + human = "Red Eye, Compulsory Flash"; + break; + case 77: + human = + "Red Eye, Compulsory Flash, Return light not detected"; + break; + case 79: + human = + "Red Eye, Compulsory Flash, Return light detected"; + break; + case 89: + human = "Red Eye, Auto-Mode"; + break; + case 93: + human = "Red Eye, Auto-Mode, Return light not detected"; + break; + case 95: + human = "Red Eye, Auto-Mode, Return light detected"; + break; + }; + } + break; + case 0xA217: /* SensingMethod */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 1: + human = "Not defined"; + break; + case 2: + human = "One Chip Color Area Sensor"; + break; + case 3: + human = "Two Chip Color Area Sensor"; + break; + case 4: + human = "Three Chip Color Area Sensor"; + break; + case 5: + human = "Color Sequential Area Sensor"; + break; + case 7: + human = "Trilinear Sensor"; + break; + case 8: + human = "Color Sequential Linear Sensor"; + break; + }; + } + break; + case 0xA406: /* SceneCaptureType */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 0: + human = "Standard"; + break; + case 1: + human = "Landscape"; + break; + case 2: + human = "Portrait"; + break; + case 3: + human = "Night scene"; + break; + }; + } + break; + case 0xA407: /* GainControl */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 0: + human = "None"; + break; + case 1: + human = "Low gain up"; + break; + case 2: + human = "High gain up"; + break; + case 3: + human = "Low gain down"; + break; + case 4: + human = "High gain down"; + break; + }; + } + break; + case 0xA408: /* Contrast */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 0: + human = "Normal"; + break; + case 1: + human = "Soft"; + break; + case 2: + human = "Hard"; + break; + }; + } + break; + case 0xA409: /* Saturation */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 0: + human = "Normal"; + break; + case 1: + human = "Low saturation"; + break; + case 2: + human = "High saturation"; + break; + }; + } + break; + case 0xA40A: /* Sharpness */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 0: + human = "Normal"; + break; + case 1: + human = "Soft"; + break; + case 2: + human = "Hard"; + break; + }; + } + break; + case 0xA40C: /* SubjectDistanceRange */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 0: + human = "Unknown"; + break; + case 1: + human = "Macro"; + break; + case 2: + human = "Close view"; + break; + case 3: + human = "Distant view"; + break; + }; + } + break; + case 0x9208: /* LightSource */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 0: + human = "Unknown"; + break; + case 1: + human = "Daylight"; + break; + case 2: + human = "Fluorescent"; + break; + case 3: + human = "Tungsten (incandescent light)"; + break; + case 4: + human = "Flash"; + break; + case 9: + human = "Fine weather"; + break; + case 10: + human = "Cloudy weather"; + break; + case 11: + human = "Shade"; + case 12: + human = "Daylight fluorescent (D 5700 - 7100K)"; + break; + case 13: + human = "Day white fluorescent (N 4600 - 5400K)"; + break; + case 14: + human = "Cool white fluorescent (W 3900 - 4500K)"; + case 15: + human = "White fluorescent (WW 3200 - 3700K)"; + break; + case 17: + human = "Standard light A"; + break; + case 18: + human = "Standard light B"; + break; + case 19: + human = "Standard light C"; + break; + case 20: + human = "D55"; + break; + case 21: + human = "D65"; + break; + case 22: + human = "D75"; + break; + case 23: + human = "D50"; + break; + case 24: + human = "ISO studio tungsten"; + break; + case 255: + human = "other light source"; + break; + }; + } + break; + case 0xA001: /* ColorSpace */ + if (tag->Type == 3 && tag->Count == 1) + { + switch (*(tag->ShortValues + 0)) + { + case 1: + human = "sRGB"; + break; + case 0xffff: + human = "Uncalibrated"; + break; + }; + } + break; + case 0x8827: /* ISOSpeedRatings */ + if (tag->Type == 3 && tag->Count == 1) + { + sprintf (dummy, "%u ISO", *(tag->ShortValues + 0)); + human = dummy; + } + break; + case 0xA002: /* ExifImageWidth */ + case 0xA003: /* ExifImageLength */ + if (tag->Type == 3 && tag->Count == 1) + { + sprintf (dummy, "%u pixels", *(tag->ShortValues + 0)); + human = dummy; + } + else if (tag->Type == 4 && tag->Count == 1) + { + sprintf (dummy, "%u pixels", *(tag->LongValues + 0)); + human = dummy; + } + break; + case 0x829A: /* ExposureTime */ + if (tag->Type == 5 && tag->Count == 1) + { + dblval = gaiaExifTagGetRationalValue (tag, 0, &xok); + if (xok) + { + if (dblval < 1.0) + { + dblval = 1.0 / dblval; + sprintf (dummy, "1/%1.0f sec", dblval); + human = dummy; + } + else + { + sprintf (dummy, "%1.0f sec", dblval); + human = dummy; + } + } + } + break; + case 0x9201: /* ShutterSpeedValue */ + if (tag->Type == 10 && tag->Count == 1) + { + dblval = gaiaExifTagGetSignedRationalValue (tag, 0, &xok); + if (xok) + { + dblval = exp (dblval * log (2)); + if (dblval > 1.0) + dblval = floor (dblval); + if (dblval < 1.0) + { + dblval = math_round (1.0 / dblval); + sprintf (dummy, "%1.0f sec", dblval); + human = dummy; + } + else + { + sprintf (dummy, "1/%1.0f sec", dblval); + human = dummy; + } + } + } + break; + case 0x829D: /* FNumber */ + if (tag->Type == 5 && tag->Count == 1) + { + dblval = gaiaExifTagGetRationalValue (tag, 0, &xok); + if (xok) + { + sprintf (dummy, "F %1.1f", dblval); + human = dummy; + } + } + break; + case 0x9202: /* ApertureValue */ + case 0x9205: /* MaxApertureValue */ + if (tag->Type == 5 && tag->Count == 1) + { + dblval = gaiaExifTagGetRationalValue (tag, 0, &xok); + if (xok) + { + dblval = exp ((dblval * log (2)) / 2.0); + sprintf (dummy, "F %1.1f", dblval); + human = dummy; + } + } + break; + case 0x920A: /* FocalLength */ + if (tag->Type == 5 && tag->Count == 1) + { + dblval = gaiaExifTagGetRationalValue (tag, 0, &xok); + if (xok) + { + sprintf (dummy, "%1.1f mm", dblval); + human = dummy; + } + } + break; + case 0xA405: /* FocalLengthIn35mmFilm */ + if (tag->Type == 3 && tag->Count == 1) + { + sprintf (dummy, "%u mm", *(tag->ShortValues + 0)); + human = dummy; + } + break; + case 0x9204: /* ExposureBiasValue */ + if (tag->Type == 10 && tag->Count == 1) + { + dblval = gaiaExifTagGetSignedRationalValue (tag, 0, &xok); + if (xok) + { + sprintf (dummy, "%1.2f EV", dblval); + human = dummy; + } + } + break; + }; + l = strlen (human); + if (l > 0) + { + if (len > l) + strcpy (str, human); + else + { + memset (str, '\0', len); + memcpy (str, human, len - 1); + } + *ok = 1; + return; + } + *ok = 0; +} + +GAIAEXIF_DECLARE int +gaiaGuessBlobType (const unsigned char *blob, int size) +{ +/* returns the BLOB content type */ + int jpeg = 0; + int exif = 0; + int exif_gps = 0; + int geom = 1; + gaiaExifTagListPtr exif_list; + gaiaExifTagPtr pT; + unsigned char jpeg1_signature[2]; + unsigned char jpeg2_signature[2]; + unsigned char jpeg3_signature[4]; + unsigned char jfif_signature[4]; + unsigned char exif_signature[4]; + unsigned char png_signature[8]; + unsigned char zip_signature[4]; + unsigned char tiff_signature_little[4]; + unsigned char tiff_signature_big[4]; + unsigned char riff_signature[4]; + unsigned char webp_signature[8]; + jpeg1_signature[0] = 0xff; + jpeg1_signature[1] = 0xd8; + jpeg2_signature[0] = 0xff; + jpeg2_signature[1] = 0xd9; + jpeg3_signature[0] = 0xff; + jpeg3_signature[1] = 0xd8; + jpeg3_signature[2] = 0xff; + jpeg3_signature[3] = 0xe0; + jfif_signature[0] = 0x4a; + jfif_signature[1] = 0x46; + jfif_signature[2] = 0x49; + jfif_signature[3] = 0x46; + exif_signature[0] = 0x45; + exif_signature[1] = 0x78; + exif_signature[2] = 0x69; + exif_signature[3] = 0x66; + png_signature[0] = 0x89; + png_signature[1] = 0x50; + png_signature[2] = 0x4e; + png_signature[3] = 0x47; + png_signature[4] = 0x0d; + png_signature[5] = 0x0a; + png_signature[6] = 0x1a; + png_signature[7] = 0x0a; + zip_signature[0] = 0x50; + zip_signature[1] = 0x4b; + zip_signature[2] = 0x03; + zip_signature[3] = 0x04; + tiff_signature_little[0] = 'I'; + tiff_signature_little[1] = 'I'; + tiff_signature_little[2] = 0x2a; + tiff_signature_little[3] = 0x00; + tiff_signature_big[0] = 'M'; + tiff_signature_big[1] = 'M'; + tiff_signature_big[2] = 0x00; + tiff_signature_big[3] = 0x2a; + riff_signature[0] = 'R'; + riff_signature[1] = 'I'; + riff_signature[2] = 'F'; + riff_signature[3] = 'F'; + webp_signature[0] = 'W'; + webp_signature[1] = 'E'; + webp_signature[2] = 'B'; + webp_signature[3] = 'P'; + webp_signature[4] = 'V'; + webp_signature[5] = 'P'; + webp_signature[6] = '8'; + webp_signature[7] = ' '; + if (size < 1 || !blob) + return GAIA_HEX_BLOB; + if (size > 4) + { + if (memcmp (blob, tiff_signature_big, 4) == 0) + return GAIA_TIFF_BLOB; + if (memcmp (blob, tiff_signature_little, 4) == 0) + return GAIA_TIFF_BLOB; + } + if (size > 5) + { + if (strncmp ((char *) blob, "%PDF-", 5) == 0) + return GAIA_PDF_BLOB; + } + if (size > 4) + { + if (memcmp (blob, zip_signature, 4) == 0) + return GAIA_ZIP_BLOB; + } + if (size > 6) + { + if (strncmp ((char *) blob, "GIF87a", 6) == 0 + || strncmp ((char *) blob, "GIF89a", 6) == 0) + return GAIA_GIF_BLOB; + } + if (size > 8) + { + if (memcmp (blob, png_signature, 8) == 0) + return GAIA_PNG_BLOB; + } + if (size > 4) + { + if (memcmp (blob, jpeg1_signature, 2) == 0 + && memcmp (blob + size - 2, jpeg2_signature, 2) == 0) + jpeg = 1; /* this one is the standard JPEG signature */ + if (memcmp (blob, jpeg3_signature, 4) == 0) + jpeg = 1; /* another common JPEG signature */ + } + if (size > 10) + { + if (memcmp (blob + 6, jfif_signature, 4) == 0) + jpeg = 1; /* standard JFIF signature */ + if (memcmp (blob + 6, exif_signature, 4) == 0) + jpeg = 1; /* standard EXIF signature */ + } + if (jpeg) + { + exif_list = gaiaGetExifTags (blob, size); + if (exif_list) + { + exif = 1; + pT = exif_list->First; + while (pT) + { + if (pT->Gps) + { + exif_gps = 1; + break; + } + pT = pT->Next; + } + gaiaExifTagsFree (exif_list); + } + } + if (jpeg && exif && exif_gps) + return GAIA_EXIF_GPS_BLOB; + if (jpeg && exif) + return GAIA_EXIF_BLOB; + if (jpeg) + return GAIA_JPEG_BLOB; + if (size > 16) + { + if ((memcmp (blob, riff_signature, 4) == 0) && + (memcmp (blob + 8, webp_signature, 8) == 0)) + return GAIA_WEBP_BLOB; + } +/* testing for GEOMETRY */ + if (size < 45) + geom = 0; + else + { + if (*(blob + 0) != GAIA_MARK_START) + geom = 0; + if (*(blob + (size - 1)) != GAIA_MARK_END) + geom = 0; + if (*(blob + 38) != GAIA_MARK_MBR) + geom = 0; + if (*(blob + 1) == 0 || *(blob + 1) == 1) + ; + else + geom = 0; + } + if (geom) + return GAIA_GEOMETRY_BLOB; + +#ifdef ENABLE_LIBXML2 /* LIBXML2 enabled: supporting XML documents */ + + if (gaiaIsValidXmlBlob (blob, size)) + return GAIA_XML_BLOB; + +#endif /* end LIBXML2: supporting XML documents */ + +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE enabled: supporting GPKG geometries */ + + if (gaiaIsValidGPB (blob, size)) + return GAIA_GPB_BLOB; + +#endif /* end GEOPACKAGE: supporting GPKG geometries */ + + return GAIA_HEX_BLOB; +} + +GAIAEXIF_DECLARE int +gaiaGetGpsCoords (const unsigned char *blob, int size, double *longitude, + double *latitude) +{ +/* returns the ExifGps coords, if they exists */ + gaiaExifTagListPtr exif_list; + gaiaExifTagPtr pT; + char lat_ref = '\0'; + char long_ref = '\0'; + double lat_degs = -DBL_MAX; + double lat_mins = -DBL_MAX; + double lat_secs = -DBL_MAX; + double long_degs = -DBL_MAX; + double long_mins = -DBL_MAX; + double long_secs = -DBL_MAX; + double dblval; + double sign; + int ok; + if (size < 1 || !blob) + return 0; + exif_list = gaiaGetExifTags (blob, size); + if (exif_list) + { + pT = exif_list->First; + while (pT) + { + if (pT->Gps && pT->TagId == 0x01) + { + /* ok, this one is the GPSLatitudeRef tag */ + if (pT->Type == 2) + lat_ref = *(pT->StringValue); + } + if (pT->Gps && pT->TagId == 0x03) + { + /* ok, this one is the GPSLongitudeRef tag */ + if (pT->Type == 2) + long_ref = *(pT->StringValue); + } + if (pT->Gps && pT->TagId == 0x02) + { + /* ok, this one is the GPSLatitude tag */ + if (pT->Type == 5 && pT->Count == 3) + { + dblval = gaiaExifTagGetRationalValue (pT, 0, &ok); + if (ok) + lat_degs = dblval; + dblval = gaiaExifTagGetRationalValue (pT, 1, &ok); + if (ok) + lat_mins = dblval; + dblval = gaiaExifTagGetRationalValue (pT, 2, &ok); + if (ok) + lat_secs = dblval; + } + } + if (pT->Gps && pT->TagId == 0x04) + { + /* ok, this one is the GPSLongitude tag */ + if (pT->Type == 5 && pT->Count == 3) + { + dblval = gaiaExifTagGetRationalValue (pT, 0, &ok); + if (ok) + long_degs = dblval; + dblval = gaiaExifTagGetRationalValue (pT, 1, &ok); + if (ok) + long_mins = dblval; + dblval = gaiaExifTagGetRationalValue (pT, 2, &ok); + if (ok) + long_secs = dblval; + } + } + pT = pT->Next; + } + gaiaExifTagsFree (exif_list); + if ((lat_ref == 'N' || lat_ref == 'S' || long_ref == 'E' + || long_ref == 'W') && lat_degs != -DBL_MAX + && lat_mins != -DBL_MAX && lat_secs != -DBL_MAX + && long_degs != -DBL_MAX && long_mins != -DBL_MAX + && long_secs != -DBL_MAX) + { + if (lat_ref == 'S') + sign = -1.0; + else + sign = 1.0; + lat_degs = math_round (lat_degs * 1000000.0); + lat_mins = math_round (lat_mins * 1000000.0); + lat_secs = math_round (lat_secs * 1000000.0); + dblval = + math_round (lat_degs + (lat_mins / 60.0) + + (lat_secs / 3600.0)) * (sign / 1000000.0); + *latitude = dblval; + if (long_ref == 'W') + sign = -1.0; + else + sign = 1.0; + long_degs = math_round (long_degs * 1000000.0); + long_mins = math_round (long_mins * 1000000.0); + long_secs = math_round (long_secs * 1000000.0); + dblval = + math_round (long_degs + (long_mins / 60.0) + + (long_secs / 3600.0)) * (sign / 1000000.0); + *longitude = dblval; + return 1; + } + } + return 0; +} + +GAIAEXIF_DECLARE int +gaiaGetGpsLatLong (const unsigned char *blob, int size, char *latlong, + int ll_size) +{ +/* returns the ExifGps Latitude and Longitude, if they exists */ + gaiaExifTagListPtr exif_list; + gaiaExifTagPtr pT; + char lat_ref = '\0'; + char long_ref = '\0'; + double lat_degs = -DBL_MAX; + double lat_mins = -DBL_MAX; + double lat_secs = -DBL_MAX; + double long_degs = -DBL_MAX; + double long_mins = -DBL_MAX; + double long_secs = -DBL_MAX; + double dblval; + int ok; + char ll[1024]; + int len; + *latlong = '\0'; + if (size < 1 || !blob) + return 0; + exif_list = gaiaGetExifTags (blob, size); + if (exif_list) + { + pT = exif_list->First; + while (pT) + { + if (pT->Gps && pT->TagId == 0x01) + { + /* ok, this one is the GPSLatitudeRef tag */ + if (pT->Type == 2) + lat_ref = *(pT->StringValue); + } + if (pT->Gps && pT->TagId == 0x03) + { + /* ok, this one is the GPSLongitudeRef tag */ + if (pT->Type == 2) + long_ref = *(pT->StringValue); + } + if (pT->Gps && pT->TagId == 0x02) + { + /* ok, this one is the GPSLatitude tag */ + if (pT->Type == 5 && pT->Count == 3) + { + dblval = gaiaExifTagGetRationalValue (pT, 0, &ok); + if (ok) + lat_degs = dblval; + dblval = gaiaExifTagGetRationalValue (pT, 1, &ok); + if (ok) + lat_mins = dblval; + dblval = gaiaExifTagGetRationalValue (pT, 2, &ok); + if (ok) + lat_secs = dblval; + } + } + if (pT->Gps && pT->TagId == 0x04) + { + /* ok, this one is the GPSLongitude tag */ + if (pT->Type == 5 && pT->Count == 3) + { + dblval = gaiaExifTagGetRationalValue (pT, 0, &ok); + if (ok) + long_degs = dblval; + dblval = gaiaExifTagGetRationalValue (pT, 1, &ok); + if (ok) + long_mins = dblval; + dblval = gaiaExifTagGetRationalValue (pT, 2, &ok); + if (ok) + long_secs = dblval; + } + } + pT = pT->Next; + } + gaiaExifTagsFree (exif_list); + if ((lat_ref == 'N' || lat_ref == 'S' || long_ref == 'E' + || long_ref == 'W') && lat_degs != -DBL_MAX + && lat_mins != -DBL_MAX && lat_secs != -DBL_MAX + && long_degs != -DBL_MAX && long_mins != -DBL_MAX + && long_secs != -DBL_MAX) + { + sprintf (ll, + "%c %1.2f %1.2f %1.2f / %c %1.2f %1.2f %1.2f", + lat_ref, lat_degs, lat_mins, lat_secs, long_ref, + long_degs, long_mins, long_secs); + len = strlen (ll); + if (len < ll_size) + strcpy (latlong, ll); + else + { + memcpy (latlong, ll, ll_size - 1); + latlong[ll_size] = '\0'; + } + return 1; + } + } + return 0; +} diff --git a/src/spatialite/src/gaiageo/Ewkt.c b/src/spatialite/src/gaiageo/Ewkt.c new file mode 100644 index 0000000..540dfcc --- /dev/null +++ b/src/spatialite/src/gaiageo/Ewkt.c @@ -0,0 +1,2696 @@ +/* Driver template for the LEMON parser generator. +** The author disclaims copyright to this source code. +*/ +/* First off, code is included that follows the "include" declaration +** in the input grammar file. */ +#include + +/* Next is all token values, in a form suitable for use by makeheaders. +** This section will be null unless lemon is run with the -m switch. +*/ +/* +** These constants (all generated automatically by the parser generator) +** specify the various kinds of tokens (terminals) that the parser +** understands. +** +** Each symbol here is a terminal symbol in the grammar. +*/ +/* Make sure the INTERFACE macro is defined. +*/ +#ifndef INTERFACE +#define INTERFACE 1 +#endif +/* The next thing included is series of defines which control +** various aspects of the generated parser. +** YYCODETYPE is the data type used for storing terminal +** and nonterminal numbers. "unsigned char" is +** used if there are fewer than 250 terminals +** and nonterminals. "int" is used otherwise. +** YYNOCODE is a number of type YYCODETYPE which corresponds +** to no legal terminal or nonterminal number. This +** number is used to fill in empty slots of the hash +** table. +** YYFALLBACK If defined, this indicates that one or more tokens +** have fall-back values which should be used if the +** original value of the token will not parse. +** YYACTIONTYPE is the data type used for storing terminal +** and nonterminal numbers. "unsigned char" is +** used if there are fewer than 250 rules and +** states combined. "int" is used otherwise. +** ParseTOKENTYPE is the data type used for minor tokens given +** directly to the parser from the tokenizer. +** YYMINORTYPE is the data type used for all minor tokens. +** This is typically a union of many types, one of +** which is ParseTOKENTYPE. The entry in the union +** for base tokens is called "yy0". +** YYSTACKDEPTH is the maximum depth of the parser's stack. If +** zero the stack is dynamically sized using realloc() +** ParseARG_SDECL A static variable declaration for the %extra_argument +** ParseARG_PDECL A parameter declaration for the %extra_argument +** ParseARG_STORE Code to store %extra_argument into yypParser +** ParseARG_FETCH Code to extract %extra_argument from yypParser +** YYNSTATE the combined number of states. +** YYNRULE the number of rules in the grammar +** YYERRORSYMBOL is the code number of the error symbol. If not +** defined, then do no error processing. +*/ +#define YYCODETYPE unsigned char +#define YYNOCODE 117 +#define YYACTIONTYPE unsigned short int +#define ParseTOKENTYPE void * +typedef union +{ + int yyinit; + ParseTOKENTYPE yy0; +} YYMINORTYPE; +#ifndef YYSTACKDEPTH +#define YYSTACKDEPTH 1000000 +#endif +#define ParseARG_SDECL struct ewkt_data *p_data ; +#define ParseARG_PDECL , struct ewkt_data *p_data +#define ParseARG_FETCH struct ewkt_data *p_data = yypParser->p_data +#define ParseARG_STORE yypParser->p_data = p_data +#define YYNSTATE 508 +#define YYNRULE 199 +#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) +#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) +#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) + +/* The yyzerominor constant is used to initialize instances of +** YYMINORTYPE objects to zero. */ +static const YYMINORTYPE yyzerominor = { 0 }; + +/* Define the yytestcase() macro to be a no-op if is not already defined +** otherwise. +** +** Applications can choose to define yytestcase() in the %include section +** to a macro that can assist in verifying code coverage. For production +** code the yytestcase() macro should be turned off. But it is useful +** for testing. +*/ +#ifndef yytestcase +#define yytestcase(X) +#endif + + +/* Next are the tables used to determine what action to take based on the +** current state and lookahead token. These tables are used to implement +** functions that take a state number and lookahead value and return an +** action integer. +** +** Suppose the action integer is N. Then the action is determined as +** follows +** +** 0 <= N < YYNSTATE Shift N. That is, push the lookahead +** token onto the stack and goto state N. +** +** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. +** +** N == YYNSTATE+YYNRULE A syntax error has occurred. +** +** N == YYNSTATE+YYNRULE+1 The parser accepts its input. +** +** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused +** slots in the yy_action[] table. +** +** The action table is constructed as a single large table named yy_action[]. +** Given state S and lookahead X, the action is computed as +** +** yy_action[ yy_shift_ofst[S] + X ] +** +** If the index value yy_shift_ofst[S]+X is out of range or if the value +** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] +** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table +** and that yy_default[S] should be used instead. +** +** The formula above is for computing the action when the lookahead is +** a terminal symbol. If the lookahead is a non-terminal (as occurs after +** a reduce action) then the yy_reduce_ofst[] array is used in place of +** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of +** YY_SHIFT_USE_DFLT. +** +** The following are the tables generated in this section: +** +** yy_action[] A single table containing all actions. +** yy_lookahead[] A table containing the lookahead for each entry in +** yy_action. Used to detect hash collisions. +** yy_shift_ofst[] For each state, the offset into yy_action for +** shifting terminals. +** yy_reduce_ofst[] For each state, the offset into yy_action for +** shifting non-terminals after a reduce. +** yy_default[] Default action for each state. +*/ +static const YYACTIONTYPE yy_action[] = { + /* 0 */ 249, 336, 337, 338, 339, 340, 341, 342, 343, 344, + /* 10 */ 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, + /* 20 */ 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, + /* 30 */ 365, 366, 163, 201, 224, 178, 202, 225, 179, 203, + /* 40 */ 226, 180, 204, 227, 181, 205, 228, 182, 206, 229, + /* 50 */ 508, 101, 250, 128, 371, 254, 66, 129, 19, 80, + /* 60 */ 20, 95, 22, 124, 23, 141, 25, 158, 27, 232, + /* 70 */ 250, 254, 708, 1, 13, 80, 19, 95, 20, 124, + /* 80 */ 22, 141, 23, 158, 25, 247, 28, 103, 104, 371, + /* 90 */ 105, 106, 63, 305, 111, 117, 305, 255, 21, 164, + /* 100 */ 66, 165, 164, 166, 165, 167, 166, 169, 167, 177, + /* 110 */ 169, 313, 183, 374, 313, 375, 376, 187, 14, 188, + /* 120 */ 187, 189, 188, 190, 189, 192, 190, 200, 192, 321, + /* 130 */ 207, 404, 321, 405, 406, 210, 62, 211, 210, 212, + /* 140 */ 211, 213, 212, 215, 213, 223, 215, 254, 230, 3, + /* 150 */ 24, 80, 104, 95, 26, 124, 71, 141, 111, 158, + /* 160 */ 171, 240, 2, 172, 194, 163, 173, 195, 178, 174, + /* 170 */ 196, 179, 175, 197, 180, 176, 198, 181, 217, 199, + /* 180 */ 182, 218, 201, 125, 219, 202, 371, 220, 203, 224, + /* 190 */ 221, 204, 225, 222, 205, 226, 108, 206, 227, 371, + /* 200 */ 388, 228, 389, 390, 229, 284, 233, 242, 243, 244, + /* 210 */ 245, 246, 234, 235, 236, 237, 238, 239, 31, 113, + /* 220 */ 251, 252, 371, 253, 83, 63, 256, 258, 87, 260, + /* 230 */ 91, 63, 265, 270, 103, 275, 257, 63, 106, 68, + /* 240 */ 105, 78, 75, 75, 424, 117, 425, 426, 132, 119, + /* 250 */ 135, 138, 371, 436, 64, 437, 438, 146, 69, 150, + /* 260 */ 154, 65, 370, 68, 448, 70, 449, 450, 67, 184, + /* 270 */ 68, 186, 209, 73, 74, 373, 33, 71, 71, 79, + /* 280 */ 262, 75, 81, 66, 82, 66, 265, 66, 266, 267, + /* 290 */ 85, 68, 270, 68, 68, 68, 71, 271, 272, 89, + /* 300 */ 258, 71, 71, 71, 71, 275, 276, 75, 75, 277, + /* 310 */ 93, 75, 75, 280, 281, 282, 66, 66, 66, 377, + /* 320 */ 256, 99, 251, 378, 66, 68, 260, 68, 75, 252, + /* 330 */ 253, 72, 75, 71, 407, 408, 371, 371, 380, 76, + /* 340 */ 259, 77, 35, 36, 381, 38, 261, 383, 84, 263, + /* 350 */ 385, 386, 39, 88, 268, 43, 47, 92, 96, 273, + /* 360 */ 51, 98, 102, 278, 264, 86, 61, 283, 393, 269, + /* 370 */ 287, 285, 90, 400, 286, 396, 107, 97, 274, 94, + /* 380 */ 279, 399, 100, 289, 403, 108, 110, 413, 109, 288, + /* 390 */ 112, 291, 113, 114, 116, 118, 115, 290, 119, 15, + /* 400 */ 415, 419, 125, 120, 121, 123, 292, 122, 126, 130, + /* 410 */ 133, 127, 417, 296, 55, 136, 293, 428, 297, 56, + /* 420 */ 430, 131, 139, 298, 295, 57, 422, 294, 142, 148, + /* 430 */ 144, 147, 301, 152, 134, 151, 155, 137, 156, 140, + /* 440 */ 143, 159, 709, 145, 161, 16, 4, 168, 170, 149, + /* 450 */ 5, 17, 709, 6, 83, 153, 709, 191, 193, 433, + /* 460 */ 87, 709, 160, 157, 432, 299, 91, 162, 435, 374, + /* 470 */ 388, 7, 132, 709, 709, 709, 300, 709, 8, 440, + /* 480 */ 146, 404, 709, 18, 442, 214, 302, 445, 444, 216, + /* 490 */ 424, 709, 303, 709, 709, 709, 447, 709, 709, 709, + /* 500 */ 709, 436, 709, 709, 304, 709, 709, 375, 9, 709, + /* 510 */ 135, 709, 389, 709, 709, 709, 709, 452, 453, 454, + /* 520 */ 709, 455, 456, 709, 457, 185, 306, 312, 709, 150, + /* 530 */ 307, 308, 309, 310, 425, 184, 10, 11, 709, 405, + /* 540 */ 709, 709, 709, 311, 464, 709, 709, 709, 709, 709, + /* 550 */ 709, 709, 437, 709, 376, 466, 390, 709, 335, 709, + /* 560 */ 138, 709, 12, 709, 709, 367, 467, 154, 709, 29, + /* 570 */ 468, 208, 469, 470, 471, 406, 426, 314, 315, 316, + /* 580 */ 317, 318, 186, 319, 478, 368, 369, 372, 320, 379, + /* 590 */ 438, 30, 382, 32, 34, 384, 37, 387, 391, 40, + /* 600 */ 709, 392, 41, 42, 480, 481, 482, 394, 483, 44, + /* 610 */ 58, 45, 484, 46, 395, 48, 397, 485, 59, 231, + /* 620 */ 49, 50, 398, 52, 322, 401, 323, 53, 324, 54, + /* 630 */ 402, 409, 493, 325, 326, 327, 209, 492, 410, 328, + /* 640 */ 495, 496, 411, 412, 497, 498, 241, 499, 500, 501, + /* 650 */ 407, 329, 414, 330, 408, 416, 418, 331, 332, 420, + /* 660 */ 421, 423, 427, 429, 248, 431, 333, 434, 439, 334, + /* 670 */ 441, 443, 446, 451, 458, 459, 460, 461, 462, 463, + /* 680 */ 465, 472, 473, 474, 475, 476, 477, 479, 60, 709, + /* 690 */ 486, 487, 488, 489, 709, 490, 491, 494, 502, 709, + /* 700 */ 503, 504, 505, 506, 709, 507, +}; + +static const YYCODETYPE yy_lookahead[] = { + /* 0 */ 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, + /* 10 */ 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, + /* 20 */ 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, + /* 30 */ 53, 54, 27, 28, 29, 30, 31, 32, 33, 34, + /* 40 */ 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, + /* 50 */ 0, 3, 2, 57, 6, 5, 60, 61, 8, 9, + /* 60 */ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + /* 70 */ 2, 5, 21, 22, 3, 9, 8, 11, 10, 13, + /* 80 */ 12, 15, 14, 17, 16, 19, 18, 55, 56, 6, + /* 90 */ 58, 59, 60, 2, 62, 63, 2, 57, 3, 8, + /* 100 */ 60, 10, 8, 12, 10, 14, 12, 16, 14, 18, + /* 110 */ 16, 2, 18, 72, 2, 74, 75, 8, 3, 10, + /* 120 */ 8, 12, 10, 14, 12, 16, 14, 18, 16, 2, + /* 130 */ 18, 88, 2, 90, 91, 8, 60, 10, 8, 12, + /* 140 */ 10, 14, 12, 16, 14, 18, 16, 5, 18, 3, + /* 150 */ 3, 9, 56, 11, 3, 13, 60, 15, 62, 17, + /* 160 */ 27, 19, 3, 30, 28, 27, 33, 31, 30, 36, + /* 170 */ 34, 33, 39, 37, 36, 42, 40, 39, 29, 43, + /* 180 */ 42, 32, 28, 3, 35, 31, 6, 38, 34, 29, + /* 190 */ 41, 37, 32, 44, 40, 35, 3, 43, 38, 6, + /* 200 */ 76, 41, 78, 79, 44, 60, 48, 49, 50, 51, + /* 210 */ 52, 53, 48, 49, 50, 51, 52, 53, 7, 3, + /* 220 */ 55, 56, 6, 58, 80, 60, 55, 56, 84, 58, + /* 230 */ 86, 60, 55, 56, 55, 58, 68, 60, 59, 60, + /* 240 */ 58, 58, 60, 60, 92, 63, 94, 95, 72, 3, + /* 250 */ 74, 75, 6, 100, 60, 102, 103, 76, 55, 78, + /* 260 */ 79, 60, 60, 60, 108, 55, 110, 111, 60, 108, + /* 270 */ 60, 110, 111, 56, 56, 60, 7, 60, 60, 58, + /* 280 */ 57, 60, 57, 60, 57, 60, 55, 60, 55, 55, + /* 290 */ 55, 60, 56, 60, 60, 60, 60, 56, 56, 56, + /* 300 */ 56, 60, 60, 60, 60, 58, 58, 60, 60, 58, + /* 310 */ 58, 60, 60, 57, 57, 57, 60, 60, 60, 60, + /* 320 */ 55, 57, 55, 68, 60, 60, 58, 60, 60, 56, + /* 330 */ 58, 60, 60, 60, 4, 4, 6, 6, 60, 60, + /* 340 */ 70, 60, 7, 3, 70, 7, 71, 71, 7, 69, + /* 350 */ 73, 69, 3, 7, 68, 3, 3, 7, 3, 70, + /* 360 */ 3, 7, 60, 71, 81, 80, 60, 69, 81, 85, + /* 370 */ 71, 68, 84, 77, 70, 85, 7, 82, 87, 86, + /* 380 */ 83, 87, 82, 64, 83, 3, 59, 64, 60, 60, + /* 390 */ 7, 66, 3, 60, 62, 7, 60, 60, 3, 3, + /* 400 */ 66, 89, 3, 60, 60, 63, 67, 60, 60, 7, + /* 410 */ 7, 60, 67, 96, 3, 7, 60, 96, 98, 3, + /* 420 */ 98, 61, 7, 99, 65, 3, 65, 69, 3, 3, + /* 430 */ 7, 7, 106, 3, 72, 7, 7, 74, 3, 75, + /* 440 */ 73, 3, 116, 73, 7, 3, 7, 3, 3, 76, + /* 450 */ 3, 3, 116, 7, 80, 78, 116, 3, 3, 93, + /* 460 */ 84, 116, 77, 79, 99, 97, 86, 77, 97, 72, + /* 470 */ 76, 3, 72, 116, 116, 116, 104, 116, 7, 104, + /* 480 */ 76, 88, 116, 3, 106, 3, 107, 101, 107, 3, + /* 490 */ 92, 116, 105, 116, 116, 116, 105, 116, 116, 116, + /* 500 */ 116, 100, 116, 116, 112, 116, 116, 74, 3, 116, + /* 510 */ 74, 116, 78, 116, 116, 116, 116, 112, 112, 112, + /* 520 */ 116, 112, 112, 116, 112, 108, 112, 114, 116, 78, + /* 530 */ 112, 112, 112, 112, 94, 108, 3, 7, 116, 90, + /* 540 */ 116, 116, 116, 112, 112, 116, 116, 116, 116, 116, + /* 550 */ 116, 116, 102, 116, 75, 114, 79, 116, 1, 116, + /* 560 */ 75, 116, 3, 116, 116, 4, 114, 79, 116, 3, + /* 570 */ 114, 110, 114, 114, 114, 91, 95, 114, 114, 114, + /* 580 */ 114, 114, 110, 114, 114, 4, 4, 4, 115, 4, + /* 590 */ 103, 7, 4, 7, 7, 4, 7, 4, 4, 7, + /* 600 */ 116, 4, 7, 7, 115, 115, 115, 4, 115, 7, + /* 610 */ 3, 7, 115, 7, 4, 7, 4, 115, 3, 111, + /* 620 */ 7, 7, 4, 7, 115, 4, 115, 7, 115, 7, + /* 630 */ 4, 4, 109, 115, 115, 115, 111, 115, 4, 113, + /* 640 */ 113, 113, 4, 4, 113, 113, 109, 113, 113, 113, + /* 650 */ 4, 113, 4, 113, 4, 4, 4, 113, 113, 4, + /* 660 */ 4, 4, 4, 4, 109, 4, 113, 4, 4, 113, + /* 670 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + /* 680 */ 4, 4, 4, 4, 4, 4, 4, 4, 3, 116, + /* 690 */ 4, 4, 4, 4, 116, 4, 4, 4, 4, 116, + /* 700 */ 4, 4, 4, 4, 116, 4, +}; + +#define YY_SHIFT_USE_DFLT (-1) +#define YY_SHIFT_MAX 334 +static const short yy_shift_ofst[] = { + /* 0 */ -1, 50, 68, 48, 91, 94, 109, 112, 127, 130, + /* 10 */ 66, 142, 83, 83, 83, 180, 193, 216, 246, 71, + /* 20 */ 95, 115, 146, 147, 71, 151, 95, 159, 159, 83, + /* 30 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + /* 40 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + /* 50 */ 83, 83, 83, 83, 83, 83, 83, 83, 83, 83, + /* 60 */ 83, 330, 331, 83, 83, 83, 83, 83, 83, 211, + /* 70 */ 211, 83, 83, 269, 269, 83, 83, 83, 335, 335, + /* 80 */ 340, 338, 338, 341, 349, 211, 341, 346, 352, 269, + /* 90 */ 346, 350, 353, 335, 350, 355, 357, 354, 357, 338, + /* 100 */ 354, 83, 83, 211, 269, 335, 369, 382, 83, 83, + /* 110 */ 369, 383, 389, 83, 83, 83, 383, 388, 395, 83, + /* 120 */ 83, 83, 83, 388, 396, 83, 83, 83, 338, 402, + /* 130 */ 399, 402, 403, 411, 403, 408, 416, 408, 415, 422, + /* 140 */ 415, 425, 340, 423, 340, 423, 424, 426, 349, 424, + /* 150 */ 428, 430, 352, 428, 429, 435, 353, 429, 438, 355, + /* 160 */ 437, 355, 437, 439, 411, 426, 442, 444, 411, 445, + /* 170 */ 426, 439, 439, 439, 439, 439, 439, 447, 439, 439, + /* 180 */ 439, 439, 439, 447, 439, 439, 446, 416, 430, 448, + /* 190 */ 454, 416, 455, 430, 446, 446, 446, 446, 446, 446, + /* 200 */ 468, 446, 446, 446, 446, 446, 446, 468, 446, 471, + /* 210 */ 422, 435, 480, 482, 422, 486, 435, 471, 471, 471, + /* 220 */ 471, 471, 471, 505, 471, 471, 471, 471, 471, 471, + /* 230 */ 505, 471, 533, 530, 530, 530, 530, 530, 530, 530, + /* 240 */ 533, 530, 530, 530, 530, 530, 530, 533, 530, 557, + /* 250 */ 559, 561, 581, 582, 566, 583, 584, 585, 586, 588, + /* 260 */ 587, 591, 589, 593, 594, 592, 595, 596, 597, 603, + /* 270 */ 602, 604, 606, 610, 612, 608, 613, 614, 618, 621, + /* 280 */ 616, 620, 622, 626, 627, 634, 638, 639, 646, 648, + /* 290 */ 650, 651, 652, 655, 656, 657, 658, 659, 661, 663, + /* 300 */ 664, 666, 667, 668, 669, 607, 670, 671, 672, 673, + /* 310 */ 674, 675, 676, 615, 677, 678, 679, 680, 681, 682, + /* 320 */ 683, 685, 686, 687, 688, 689, 691, 692, 693, 694, + /* 330 */ 696, 697, 698, 699, 701, +}; + +#define YY_REDUCE_USE_DFLT (-24) +#define YY_REDUCE_MAX 248 +static const short yy_reduce_ofst[] = { + /* 0 */ 51, -23, 5, 32, 133, 138, 136, 154, 149, 160, + /* 10 */ 158, 164, 165, 171, 177, -4, 179, 96, 182, 41, + /* 20 */ 124, 144, 43, 152, 176, 153, 181, 156, 161, 40, + /* 30 */ 203, 210, 217, 218, 183, 221, 223, 225, 227, 231, + /* 40 */ 233, 234, 235, 236, 241, 242, 243, 247, 248, 251, + /* 50 */ 252, 256, 257, 258, 264, 265, 244, 268, 267, 273, + /* 60 */ 272, 76, 145, 194, 201, 202, 208, 215, 259, 168, + /* 70 */ 255, 271, 278, 270, 274, 279, 281, 202, 275, 276, + /* 80 */ 277, 280, 282, 283, 285, 286, 287, 284, 288, 289, + /* 90 */ 290, 291, 293, 292, 294, 296, 295, 297, 300, 298, + /* 100 */ 301, 302, 306, 303, 304, 299, 319, 327, 328, 329, + /* 110 */ 323, 325, 332, 333, 336, 337, 334, 339, 342, 343, + /* 120 */ 344, 347, 145, 345, 312, 348, 351, 356, 358, 359, + /* 130 */ 360, 361, 317, 362, 321, 320, 363, 322, 324, 364, + /* 140 */ 365, 366, 367, 368, 370, 371, 372, 373, 374, 375, + /* 150 */ 326, 377, 376, 378, 379, 384, 380, 381, 386, 385, + /* 160 */ 387, 390, 391, 392, 397, 394, 393, 398, 400, 401, + /* 170 */ 404, 405, 406, 407, 409, 410, 412, 417, 414, 418, + /* 180 */ 419, 420, 421, 427, 431, 432, 413, 433, 434, 449, + /* 190 */ 440, 436, 450, 451, 441, 452, 456, 458, 459, 460, + /* 200 */ 461, 463, 464, 465, 466, 467, 469, 472, 470, 473, + /* 210 */ 479, 477, 484, 481, 485, 487, 488, 489, 490, 491, + /* 220 */ 493, 497, 502, 508, 509, 511, 513, 518, 519, 520, + /* 230 */ 525, 522, 523, 526, 527, 528, 531, 532, 534, 535, + /* 240 */ 537, 536, 538, 540, 544, 545, 553, 555, 556, +}; + +static const YYACTIONTYPE yy_default[] = { + /* 0 */ 509, 707, 707, 707, 707, 707, 707, 707, 707, 707, + /* 10 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, + /* 20 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, + /* 30 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, + /* 40 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, + /* 50 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, + /* 60 */ 707, 707, 707, 707, 550, 552, 707, 707, 707, 563, + /* 70 */ 563, 707, 707, 567, 567, 707, 707, 707, 569, 569, + /* 80 */ 707, 565, 565, 588, 707, 563, 588, 594, 707, 567, + /* 90 */ 594, 597, 707, 569, 597, 707, 707, 591, 707, 565, + /* 100 */ 591, 707, 707, 563, 567, 569, 555, 707, 707, 707, + /* 110 */ 555, 559, 707, 707, 707, 707, 559, 561, 707, 707, + /* 120 */ 707, 707, 707, 561, 707, 707, 707, 707, 565, 557, + /* 130 */ 707, 557, 616, 707, 616, 622, 707, 622, 625, 707, + /* 140 */ 625, 707, 707, 619, 707, 619, 632, 707, 707, 632, + /* 150 */ 638, 707, 707, 638, 641, 707, 707, 641, 707, 707, + /* 160 */ 635, 707, 635, 654, 707, 707, 707, 707, 707, 707, + /* 170 */ 707, 654, 654, 654, 654, 654, 654, 707, 654, 654, + /* 180 */ 654, 654, 654, 707, 654, 654, 684, 707, 707, 707, + /* 190 */ 707, 707, 707, 707, 684, 684, 684, 684, 684, 684, + /* 200 */ 707, 684, 684, 684, 684, 684, 684, 707, 684, 699, + /* 210 */ 707, 707, 707, 707, 707, 707, 707, 699, 699, 699, + /* 220 */ 699, 699, 699, 707, 699, 699, 699, 699, 699, 699, + /* 230 */ 707, 699, 707, 669, 669, 669, 669, 669, 669, 669, + /* 240 */ 707, 669, 669, 669, 669, 669, 669, 707, 669, 707, + /* 250 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, + /* 260 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, + /* 270 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, + /* 280 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, + /* 290 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, + /* 300 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, + /* 310 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, + /* 320 */ 707, 707, 707, 707, 707, 707, 707, 707, 707, 707, + /* 330 */ 707, 707, 707, 707, 707, 510, 511, 512, 513, 514, + /* 340 */ 515, 516, 517, 518, 519, 520, 521, 522, 523, 524, + /* 350 */ 525, 526, 527, 528, 529, 530, 531, 532, 533, 534, + /* 360 */ 535, 536, 537, 538, 539, 540, 541, 542, 543, 545, + /* 370 */ 553, 554, 544, 551, 571, 573, 574, 550, 564, 575, + /* 380 */ 552, 568, 577, 570, 578, 572, 566, 576, 579, 581, + /* 390 */ 582, 583, 587, 589, 585, 593, 595, 586, 596, 598, + /* 400 */ 580, 584, 590, 592, 599, 601, 602, 546, 548, 549, + /* 410 */ 603, 605, 606, 556, 607, 560, 609, 562, 610, 600, + /* 420 */ 547, 604, 558, 608, 611, 613, 614, 615, 617, 621, + /* 430 */ 623, 624, 626, 612, 618, 620, 627, 629, 630, 631, + /* 440 */ 633, 637, 639, 640, 642, 628, 634, 636, 643, 645, + /* 450 */ 646, 647, 655, 656, 657, 658, 659, 660, 648, 649, + /* 460 */ 650, 651, 652, 653, 661, 683, 685, 686, 687, 688, + /* 470 */ 689, 690, 677, 678, 679, 680, 681, 682, 691, 698, + /* 480 */ 700, 701, 702, 703, 704, 705, 692, 693, 694, 695, + /* 490 */ 696, 697, 706, 644, 662, 670, 671, 672, 673, 674, + /* 500 */ 675, 676, 663, 664, 665, 666, 667, 668, +}; + +#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0])) + +/* The next table maps tokens into fallback tokens. If a construct +** like the following: +** +** %fallback ID X Y Z. +** +** appears in the grammar, then ID becomes a fallback token for X, Y, +** and Z. Whenever one of the tokens X, Y, or Z is input to the parser +** but it does not parse, the type of the token is changed to ID and +** the parse is retried before an error is thrown. +*/ +#ifdef YYFALLBACK +static const YYCODETYPE yyFallback[] = { +}; +#endif /* YYFALLBACK */ + +/* The following structure represents a single element of the +** parser's stack. Information stored includes: +** +** + The state number for the parser at this level of the stack. +** +** + The value of the token stored at this level of the stack. +** (In other words, the "major" token.) +** +** + The semantic value stored at this level of the stack. This is +** the information used by the action routines in the grammar. +** It is sometimes called the "minor" token. +*/ +struct yyStackEntry +{ + YYACTIONTYPE stateno; /* The state-number */ + YYCODETYPE major; /* The major token value. This is the code + ** number for the token at this stack level */ + YYMINORTYPE minor; /* The user-supplied minor token value. This + ** is the value of the token */ +}; +typedef struct yyStackEntry yyStackEntry; + +/* The state of the parser is completely contained in an instance of +** the following structure */ +struct yyParser +{ + int yyidx; /* Index of top element in stack */ +#ifdef YYTRACKMAXSTACKDEPTH + int yyidxMax; /* Maximum value of yyidx */ +#endif + int yyerrcnt; /* Shifts left before out of the error */ + ParseARG_SDECL /* A place to hold %extra_argument */ +#if YYSTACKDEPTH<=0 + int yystksz; /* Current side of the stack */ + yyStackEntry *yystack; /* The parser's stack */ +#else + yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ +#endif +}; +typedef struct yyParser yyParser; + +#ifndef NDEBUG +#include +static FILE *yyTraceFILE = 0; +static char *yyTracePrompt = 0; +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* +** Turn parser tracing on by giving a stream to which to write the trace +** and a prompt to preface each trace message. Tracing is turned off +** by making either argument NULL +** +** Inputs: +**
      +**
    • A FILE* to which trace output should be written. +** If NULL, then tracing is turned off. +**
    • A prefix string written at the beginning of every +** line of trace output. If NULL, then tracing is +** turned off. +**
    +** +** Outputs: +** None. +*/ +void +ParseTrace (FILE * TraceFILE, char *zTracePrompt) +{ + yyTraceFILE = TraceFILE; + yyTracePrompt = zTracePrompt; + if (yyTraceFILE == 0) + yyTracePrompt = 0; + else if (yyTracePrompt == 0) + yyTraceFILE = 0; +} +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* For tracing shifts, the names of all terminals and nonterminals +** are required. The following table supplies these names */ +static const char *const yyTokenName[] = { + "$", "EWKT_NEWLINE", "EWKT_POINT", "EWKT_OPEN_BRACKET", + "EWKT_CLOSE_BRACKET", "EWKT_POINT_M", "EWKT_NUM", "EWKT_COMMA", + "EWKT_LINESTRING", "EWKT_LINESTRING_M", "EWKT_POLYGON", "EWKT_POLYGON_M", + "EWKT_MULTIPOINT", "EWKT_MULTIPOINT_M", "EWKT_MULTILINESTRING", + "EWKT_MULTILINESTRING_M", + "EWKT_MULTIPOLYGON", "EWKT_MULTIPOLYGON_M", "EWKT_GEOMETRYCOLLECTION", + "EWKT_GEOMETRYCOLLECTION_M", + "error", "main", "in", "state", + "program", "geo_text", "geo_textm", "point", + "pointz", "pointzm", "linestring", "linestringz", + "linestringzm", "polygon", "polygonz", "polygonzm", + "multipoint", "multipointz", "multipointzm", "multilinestring", + "multilinestringz", "multilinestringzm", "multipolygon", "multipolygonz", + "multipolygonzm", "geocoll", "geocollz", "geocollzm", + "pointm", "linestringm", "polygonm", "multipointm", + "multilinestringm", "multipolygonm", "geocollm", "point_coordxy", + "point_coordxyz", "point_coordxym", "point_coordxyzm", "point_brkt_coordxy", + "coord", "point_brkt_coordxym", "point_brkt_coordxyz", + "point_brkt_coordxyzm", + "extra_brkt_pointsxy", "extra_brkt_pointsxym", "extra_brkt_pointsxyz", + "extra_brkt_pointsxyzm", + "extra_pointsxy", "extra_pointsxym", "extra_pointsxyz", "extra_pointsxyzm", + "linestring_text", "linestring_textm", "linestring_textz", + "linestring_textzm", + "polygon_text", "polygon_textm", "polygon_textz", "polygon_textzm", + "ring", "extra_rings", "ringm", "extra_ringsm", + "ringz", "extra_ringsz", "ringzm", "extra_ringszm", + "multipoint_text", "multipoint_textm", "multipoint_textz", + "multipoint_textzm", + "multilinestring_text", "multilinestring_textm", "multilinestring_textz", + "multilinestring_textzm", + "multilinestring_text2", "multilinestring_textm2", "multilinestring_textz2", + "multilinestring_textzm2", + "multipolygon_text", "multipolygon_textm", "multipolygon_textz", + "multipolygon_textzm", + "multipolygon_text2", "multipolygon_textm2", "multipolygon_textz2", + "multipolygon_textzm2", + "geocoll_text", "geocoll_textm", "geocoll_textz", "geocoll_textzm", + "geocoll_text2", "geocoll_textm2", "geocoll_textz2", "geocoll_textzm2", +}; +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* For tracing reduce actions, the names of all rules are required. +*/ +static const char *const yyRuleName[] = { + /* 0 */ "main ::= in", + /* 1 */ "in ::=", + /* 2 */ "in ::= in state EWKT_NEWLINE", + /* 3 */ "state ::= program", + /* 4 */ "program ::= geo_text", + /* 5 */ "program ::= geo_textm", + /* 6 */ "geo_text ::= point", + /* 7 */ "geo_text ::= pointz", + /* 8 */ "geo_text ::= pointzm", + /* 9 */ "geo_text ::= linestring", + /* 10 */ "geo_text ::= linestringz", + /* 11 */ "geo_text ::= linestringzm", + /* 12 */ "geo_text ::= polygon", + /* 13 */ "geo_text ::= polygonz", + /* 14 */ "geo_text ::= polygonzm", + /* 15 */ "geo_text ::= multipoint", + /* 16 */ "geo_text ::= multipointz", + /* 17 */ "geo_text ::= multipointzm", + /* 18 */ "geo_text ::= multilinestring", + /* 19 */ "geo_text ::= multilinestringz", + /* 20 */ "geo_text ::= multilinestringzm", + /* 21 */ "geo_text ::= multipolygon", + /* 22 */ "geo_text ::= multipolygonz", + /* 23 */ "geo_text ::= multipolygonzm", + /* 24 */ "geo_text ::= geocoll", + /* 25 */ "geo_text ::= geocollz", + /* 26 */ "geo_text ::= geocollzm", + /* 27 */ "geo_textm ::= pointm", + /* 28 */ "geo_textm ::= linestringm", + /* 29 */ "geo_textm ::= polygonm", + /* 30 */ "geo_textm ::= multipointm", + /* 31 */ "geo_textm ::= multilinestringm", + /* 32 */ "geo_textm ::= multipolygonm", + /* 33 */ "geo_textm ::= geocollm", + /* 34 */ + "point ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxy EWKT_CLOSE_BRACKET", + /* 35 */ + "pointz ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyz EWKT_CLOSE_BRACKET", + /* 36 */ + "pointm ::= EWKT_POINT_M EWKT_OPEN_BRACKET point_coordxym EWKT_CLOSE_BRACKET", + /* 37 */ + "pointzm ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyzm EWKT_CLOSE_BRACKET", + /* 38 */ + "point_brkt_coordxy ::= EWKT_OPEN_BRACKET coord coord EWKT_CLOSE_BRACKET", + /* 39 */ + "point_brkt_coordxym ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET", + /* 40 */ + "point_brkt_coordxyz ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET", + /* 41 */ + "point_brkt_coordxyzm ::= EWKT_OPEN_BRACKET coord coord coord coord EWKT_CLOSE_BRACKET", + /* 42 */ "point_coordxy ::= coord coord", + /* 43 */ "point_coordxym ::= coord coord coord", + /* 44 */ "point_coordxyz ::= coord coord coord", + /* 45 */ "point_coordxyzm ::= coord coord coord coord", + /* 46 */ "coord ::= EWKT_NUM", + /* 47 */ "extra_brkt_pointsxy ::=", + /* 48 */ + "extra_brkt_pointsxy ::= EWKT_COMMA point_brkt_coordxy extra_brkt_pointsxy", + /* 49 */ "extra_brkt_pointsxym ::=", + /* 50 */ + "extra_brkt_pointsxym ::= EWKT_COMMA point_brkt_coordxym extra_brkt_pointsxym", + /* 51 */ "extra_brkt_pointsxyz ::=", + /* 52 */ + "extra_brkt_pointsxyz ::= EWKT_COMMA point_brkt_coordxyz extra_brkt_pointsxyz", + /* 53 */ "extra_brkt_pointsxyzm ::=", + /* 54 */ + "extra_brkt_pointsxyzm ::= EWKT_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm", + /* 55 */ "extra_pointsxy ::=", + /* 56 */ "extra_pointsxy ::= EWKT_COMMA point_coordxy extra_pointsxy", + /* 57 */ "extra_pointsxym ::=", + /* 58 */ "extra_pointsxym ::= EWKT_COMMA point_coordxym extra_pointsxym", + /* 59 */ "extra_pointsxyz ::=", + /* 60 */ "extra_pointsxyz ::= EWKT_COMMA point_coordxyz extra_pointsxyz", + /* 61 */ "extra_pointsxyzm ::=", + /* 62 */ + "extra_pointsxyzm ::= EWKT_COMMA point_coordxyzm extra_pointsxyzm", + /* 63 */ "linestring ::= EWKT_LINESTRING linestring_text", + /* 64 */ "linestringm ::= EWKT_LINESTRING_M linestring_textm", + /* 65 */ "linestringz ::= EWKT_LINESTRING linestring_textz", + /* 66 */ "linestringzm ::= EWKT_LINESTRING linestring_textzm", + /* 67 */ + "linestring_text ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET", + /* 68 */ + "linestring_textm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET", + /* 69 */ + "linestring_textz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET", + /* 70 */ + "linestring_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET", + /* 71 */ "polygon ::= EWKT_POLYGON polygon_text", + /* 72 */ "polygonm ::= EWKT_POLYGON_M polygon_textm", + /* 73 */ "polygonz ::= EWKT_POLYGON polygon_textz", + /* 74 */ "polygonzm ::= EWKT_POLYGON polygon_textzm", + /* 75 */ + "polygon_text ::= EWKT_OPEN_BRACKET ring extra_rings EWKT_CLOSE_BRACKET", + /* 76 */ + "polygon_textm ::= EWKT_OPEN_BRACKET ringm extra_ringsm EWKT_CLOSE_BRACKET", + /* 77 */ + "polygon_textz ::= EWKT_OPEN_BRACKET ringz extra_ringsz EWKT_CLOSE_BRACKET", + /* 78 */ + "polygon_textzm ::= EWKT_OPEN_BRACKET ringzm extra_ringszm EWKT_CLOSE_BRACKET", + /* 79 */ + "ring ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET", + /* 80 */ "extra_rings ::=", + /* 81 */ "extra_rings ::= EWKT_COMMA ring extra_rings", + /* 82 */ + "ringm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET", + /* 83 */ "extra_ringsm ::=", + /* 84 */ "extra_ringsm ::= EWKT_COMMA ringm extra_ringsm", + /* 85 */ + "ringz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET", + /* 86 */ "extra_ringsz ::=", + /* 87 */ "extra_ringsz ::= EWKT_COMMA ringz extra_ringsz", + /* 88 */ + "ringzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET", + /* 89 */ "extra_ringszm ::=", + /* 90 */ "extra_ringszm ::= EWKT_COMMA ringzm extra_ringszm", + /* 91 */ "multipoint ::= EWKT_MULTIPOINT multipoint_text", + /* 92 */ "multipointm ::= EWKT_MULTIPOINT_M multipoint_textm", + /* 93 */ "multipointz ::= EWKT_MULTIPOINT multipoint_textz", + /* 94 */ "multipointzm ::= EWKT_MULTIPOINT multipoint_textzm", + /* 95 */ + "multipoint_text ::= EWKT_OPEN_BRACKET point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET", + /* 96 */ + "multipoint_textm ::= EWKT_OPEN_BRACKET point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET", + /* 97 */ + "multipoint_textz ::= EWKT_OPEN_BRACKET point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET", + /* 98 */ + "multipoint_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET", + /* 99 */ + "multipoint_text ::= EWKT_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy EWKT_CLOSE_BRACKET", + /* 100 */ + "multipoint_textm ::= EWKT_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym EWKT_CLOSE_BRACKET", + /* 101 */ + "multipoint_textz ::= EWKT_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz EWKT_CLOSE_BRACKET", + /* 102 */ + "multipoint_textzm ::= EWKT_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm EWKT_CLOSE_BRACKET", + /* 103 */ "multilinestring ::= EWKT_MULTILINESTRING multilinestring_text", + /* 104 */ + "multilinestringm ::= EWKT_MULTILINESTRING_M multilinestring_textm", + /* 105 */ "multilinestringz ::= EWKT_MULTILINESTRING multilinestring_textz", + /* 106 */ + "multilinestringzm ::= EWKT_MULTILINESTRING multilinestring_textzm", + /* 107 */ + "multilinestring_text ::= EWKT_OPEN_BRACKET linestring_text multilinestring_text2 EWKT_CLOSE_BRACKET", + /* 108 */ "multilinestring_text2 ::=", + /* 109 */ + "multilinestring_text2 ::= EWKT_COMMA linestring_text multilinestring_text2", + /* 110 */ + "multilinestring_textm ::= EWKT_OPEN_BRACKET linestring_textm multilinestring_textm2 EWKT_CLOSE_BRACKET", + /* 111 */ "multilinestring_textm2 ::=", + /* 112 */ + "multilinestring_textm2 ::= EWKT_COMMA linestring_textm multilinestring_textm2", + /* 113 */ + "multilinestring_textz ::= EWKT_OPEN_BRACKET linestring_textz multilinestring_textz2 EWKT_CLOSE_BRACKET", + /* 114 */ "multilinestring_textz2 ::=", + /* 115 */ + "multilinestring_textz2 ::= EWKT_COMMA linestring_textz multilinestring_textz2", + /* 116 */ + "multilinestring_textzm ::= EWKT_OPEN_BRACKET linestring_textzm multilinestring_textzm2 EWKT_CLOSE_BRACKET", + /* 117 */ "multilinestring_textzm2 ::=", + /* 118 */ + "multilinestring_textzm2 ::= EWKT_COMMA linestring_textzm multilinestring_textzm2", + /* 119 */ "multipolygon ::= EWKT_MULTIPOLYGON multipolygon_text", + /* 120 */ "multipolygonm ::= EWKT_MULTIPOLYGON_M multipolygon_textm", + /* 121 */ "multipolygonz ::= EWKT_MULTIPOLYGON multipolygon_textz", + /* 122 */ "multipolygonzm ::= EWKT_MULTIPOLYGON multipolygon_textzm", + /* 123 */ + "multipolygon_text ::= EWKT_OPEN_BRACKET polygon_text multipolygon_text2 EWKT_CLOSE_BRACKET", + /* 124 */ "multipolygon_text2 ::=", + /* 125 */ + "multipolygon_text2 ::= EWKT_COMMA polygon_text multipolygon_text2", + /* 126 */ + "multipolygon_textm ::= EWKT_OPEN_BRACKET polygon_textm multipolygon_textm2 EWKT_CLOSE_BRACKET", + /* 127 */ "multipolygon_textm2 ::=", + /* 128 */ + "multipolygon_textm2 ::= EWKT_COMMA polygon_textm multipolygon_textm2", + /* 129 */ + "multipolygon_textz ::= EWKT_OPEN_BRACKET polygon_textz multipolygon_textz2 EWKT_CLOSE_BRACKET", + /* 130 */ "multipolygon_textz2 ::=", + /* 131 */ + "multipolygon_textz2 ::= EWKT_COMMA polygon_textz multipolygon_textz2", + /* 132 */ + "multipolygon_textzm ::= EWKT_OPEN_BRACKET polygon_textzm multipolygon_textzm2 EWKT_CLOSE_BRACKET", + /* 133 */ "multipolygon_textzm2 ::=", + /* 134 */ + "multipolygon_textzm2 ::= EWKT_COMMA polygon_textzm multipolygon_textzm2", + /* 135 */ "geocoll ::= EWKT_GEOMETRYCOLLECTION geocoll_text", + /* 136 */ "geocollm ::= EWKT_GEOMETRYCOLLECTION_M geocoll_textm", + /* 137 */ "geocollz ::= EWKT_GEOMETRYCOLLECTION geocoll_textz", + /* 138 */ "geocollzm ::= EWKT_GEOMETRYCOLLECTION geocoll_textzm", + /* 139 */ + "geocoll_text ::= EWKT_OPEN_BRACKET point geocoll_text2 EWKT_CLOSE_BRACKET", + /* 140 */ + "geocoll_text ::= EWKT_OPEN_BRACKET linestring geocoll_text2 EWKT_CLOSE_BRACKET", + /* 141 */ + "geocoll_text ::= EWKT_OPEN_BRACKET polygon geocoll_text2 EWKT_CLOSE_BRACKET", + /* 142 */ + "geocoll_text ::= EWKT_OPEN_BRACKET multipoint geocoll_text2 EWKT_CLOSE_BRACKET", + /* 143 */ + "geocoll_text ::= EWKT_OPEN_BRACKET multilinestring geocoll_text2 EWKT_CLOSE_BRACKET", + /* 144 */ + "geocoll_text ::= EWKT_OPEN_BRACKET multipolygon geocoll_text2 EWKT_CLOSE_BRACKET", + /* 145 */ + "geocoll_text ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 EWKT_CLOSE_BRACKET", + /* 146 */ "geocoll_text2 ::=", + /* 147 */ "geocoll_text2 ::= EWKT_COMMA point geocoll_text2", + /* 148 */ "geocoll_text2 ::= EWKT_COMMA linestring geocoll_text2", + /* 149 */ "geocoll_text2 ::= EWKT_COMMA polygon geocoll_text2", + /* 150 */ "geocoll_text2 ::= EWKT_COMMA multipoint geocoll_text2", + /* 151 */ "geocoll_text2 ::= EWKT_COMMA multilinestring geocoll_text2", + /* 152 */ "geocoll_text2 ::= EWKT_COMMA multipolygon geocoll_text2", + /* 153 */ + "geocoll_text2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2", + /* 154 */ + "geocoll_textm ::= EWKT_OPEN_BRACKET pointm geocoll_textm2 EWKT_CLOSE_BRACKET", + /* 155 */ + "geocoll_textm ::= EWKT_OPEN_BRACKET linestringm geocoll_textm2 EWKT_CLOSE_BRACKET", + /* 156 */ + "geocoll_textm ::= EWKT_OPEN_BRACKET polygonm geocoll_textm2 EWKT_CLOSE_BRACKET", + /* 157 */ + "geocoll_textm ::= EWKT_OPEN_BRACKET multipointm geocoll_textm2 EWKT_CLOSE_BRACKET", + /* 158 */ + "geocoll_textm ::= EWKT_OPEN_BRACKET multilinestringm geocoll_textm2 EWKT_CLOSE_BRACKET", + /* 159 */ + "geocoll_textm ::= EWKT_OPEN_BRACKET multipolygonm geocoll_textm2 EWKT_CLOSE_BRACKET", + /* 160 */ + "geocoll_textm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 EWKT_CLOSE_BRACKET", + /* 161 */ "geocoll_textm2 ::=", + /* 162 */ "geocoll_textm2 ::= EWKT_COMMA pointm geocoll_textm2", + /* 163 */ "geocoll_textm2 ::= EWKT_COMMA linestringm geocoll_textm2", + /* 164 */ "geocoll_textm2 ::= EWKT_COMMA polygonm geocoll_textm2", + /* 165 */ "geocoll_textm2 ::= EWKT_COMMA multipointm geocoll_textm2", + /* 166 */ "geocoll_textm2 ::= EWKT_COMMA multilinestringm geocoll_textm2", + /* 167 */ "geocoll_textm2 ::= EWKT_COMMA multipolygonm geocoll_textm2", + /* 168 */ + "geocoll_textm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2", + /* 169 */ + "geocoll_textz ::= EWKT_OPEN_BRACKET pointz geocoll_textz2 EWKT_CLOSE_BRACKET", + /* 170 */ + "geocoll_textz ::= EWKT_OPEN_BRACKET linestringz geocoll_textz2 EWKT_CLOSE_BRACKET", + /* 171 */ + "geocoll_textz ::= EWKT_OPEN_BRACKET polygonz geocoll_textz2 EWKT_CLOSE_BRACKET", + /* 172 */ + "geocoll_textz ::= EWKT_OPEN_BRACKET multipointz geocoll_textz2 EWKT_CLOSE_BRACKET", + /* 173 */ + "geocoll_textz ::= EWKT_OPEN_BRACKET multilinestringz geocoll_textz2 EWKT_CLOSE_BRACKET", + /* 174 */ + "geocoll_textz ::= EWKT_OPEN_BRACKET multipolygonz geocoll_textz2 EWKT_CLOSE_BRACKET", + /* 175 */ + "geocoll_textz ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 EWKT_CLOSE_BRACKET", + /* 176 */ "geocoll_textz2 ::=", + /* 177 */ "geocoll_textz2 ::= EWKT_COMMA pointz geocoll_textz2", + /* 178 */ "geocoll_textz2 ::= EWKT_COMMA linestringz geocoll_textz2", + /* 179 */ "geocoll_textz2 ::= EWKT_COMMA polygonz geocoll_textz2", + /* 180 */ "geocoll_textz2 ::= EWKT_COMMA multipointz geocoll_textz2", + /* 181 */ "geocoll_textz2 ::= EWKT_COMMA multilinestringz geocoll_textz2", + /* 182 */ "geocoll_textz2 ::= EWKT_COMMA multipolygonz geocoll_textz2", + /* 183 */ + "geocoll_textz2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2", + /* 184 */ + "geocoll_textzm ::= EWKT_OPEN_BRACKET pointzm geocoll_textzm2 EWKT_CLOSE_BRACKET", + /* 185 */ + "geocoll_textzm ::= EWKT_OPEN_BRACKET linestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET", + /* 186 */ + "geocoll_textzm ::= EWKT_OPEN_BRACKET polygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET", + /* 187 */ + "geocoll_textzm ::= EWKT_OPEN_BRACKET multipointzm geocoll_textzm2 EWKT_CLOSE_BRACKET", + /* 188 */ + "geocoll_textzm ::= EWKT_OPEN_BRACKET multilinestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET", + /* 189 */ + "geocoll_textzm ::= EWKT_OPEN_BRACKET multipolygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET", + /* 190 */ + "geocoll_textzm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 EWKT_CLOSE_BRACKET", + /* 191 */ "geocoll_textzm2 ::=", + /* 192 */ "geocoll_textzm2 ::= EWKT_COMMA pointzm geocoll_textzm2", + /* 193 */ "geocoll_textzm2 ::= EWKT_COMMA linestringzm geocoll_textzm2", + /* 194 */ "geocoll_textzm2 ::= EWKT_COMMA polygonzm geocoll_textzm2", + /* 195 */ "geocoll_textzm2 ::= EWKT_COMMA multipointzm geocoll_textzm2", + /* 196 */ + "geocoll_textzm2 ::= EWKT_COMMA multilinestringzm geocoll_textzm2", + /* 197 */ "geocoll_textzm2 ::= EWKT_COMMA multipolygonzm geocoll_textzm2", + /* 198 */ + "geocoll_textzm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2", +}; +#endif /* NDEBUG */ + + +#if YYSTACKDEPTH<=0 +/* +** Try to increase the size of the parser stack. +*/ +static void +yyGrowStack (yyParser * p) +{ + int newSize; + yyStackEntry *pNew; + + newSize = p->yystksz * 2 + 100; + pNew = realloc (p->yystack, newSize * sizeof (pNew[0])); + if (pNew) + { + p->yystack = pNew; + p->yystksz = newSize; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sStack grows to %d entries!\n", + yyTracePrompt, p->yystksz); + } +#endif + } +} +#endif + +/* +** This function allocates a new parser. +** The only argument is a pointer to a function which works like +** malloc. +** +** Inputs: +** A pointer to the function used to allocate memory. +** +** Outputs: +** A pointer to a parser. This pointer is used in subsequent calls +** to Parse and ParseFree. +*/ +void * +ParseAlloc (void *(*mallocProc) (size_t)) +{ + yyParser *pParser; + pParser = (yyParser *) (*mallocProc) ((size_t) sizeof (yyParser)); + if (pParser) + { + pParser->yyidx = -1; +#ifdef YYTRACKMAXSTACKDEPTH + pParser->yyidxMax = 0; +#endif +#if YYSTACKDEPTH<=0 + pParser->yystack = NULL; + pParser->yystksz = 0; + yyGrowStack (pParser); +#endif + } + return pParser; +} + +/* The following function deletes the value associated with a +** symbol. The symbol can be either a terminal or nonterminal. +** "yymajor" is the symbol code, and "yypminor" is a pointer to +** the value. +*/ +static void +yy_destructor (yyParser * yypParser, /* The parser */ + YYCODETYPE yymajor, /* Type code for object to destroy */ + YYMINORTYPE * yypminor /* The object to be destroyed */ + ) +{ + ParseARG_FETCH; + switch (yymajor) + { + /* Here is inserted the actions which take place when a + ** terminal or non-terminal is destroyed. This can happen + ** when the symbol is popped from the stack during a + ** reduce or during error processing or when a parser is + ** being destroyed before it is finished parsing. + ** + ** Note: during a reduce, the only symbols destroyed are those + ** which appear on the RHS of the rule, but which are not used + ** inside the C code. + */ + default: + break; /* If no destructor action specified: do nothing */ + } +} + +/* +** Pop the parser's stack once. +** +** If there is a destructor routine associated with the token which +** is popped from the stack, then call it. +** +** Return the major token number for the symbol popped. +*/ +static int +yy_pop_parser_stack (yyParser * pParser) +{ + YYCODETYPE yymajor; + yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; + + if (pParser->yyidx < 0) + return 0; +#ifndef NDEBUG + if (yyTraceFILE && pParser->yyidx >= 0) + { + fprintf (yyTraceFILE, "%sPopping %s\n", + yyTracePrompt, yyTokenName[yytos->major]); + } +#endif + yymajor = yytos->major; + yy_destructor (pParser, yymajor, &yytos->minor); + pParser->yyidx--; + return yymajor; +} + +/* +** Deallocate and destroy a parser. Destructors are all called for +** all stack elements before shutting the parser down. +** +** Inputs: +**
      +**
    • A pointer to the parser. This should be a pointer +** obtained from ParseAlloc. +**
    • A pointer to a function used to reclaim memory obtained +** from malloc. +**
    +*/ +void +ParseFree (void *p, /* The parser to be deleted */ + void (*freeProc) (void *) /* Function used to reclaim memory */ + ) +{ + yyParser *pParser = (yyParser *) p; + if (pParser == 0) + return; + while (pParser->yyidx >= 0) + yy_pop_parser_stack (pParser); +#if YYSTACKDEPTH<=0 + free (pParser->yystack); +#endif + (*freeProc) ((void *) pParser); +} + +/* +** Return the peak depth of the stack for a parser. +*/ +#ifdef YYTRACKMAXSTACKDEPTH +int +ParseStackPeak (void *p) +{ + yyParser *pParser = (yyParser *) p; + return pParser->yyidxMax; +} +#endif + +/* +** Find the appropriate action for a parser given the terminal +** look-ahead token iLookAhead. +** +** If the look-ahead token is YYNOCODE, then check to see if the action is +** independent of the look-ahead. If it is, return the action, otherwise +** return YY_NO_ACTION. +*/ +static int +yy_find_shift_action (yyParser * pParser, /* The parser */ + YYCODETYPE iLookAhead /* The look-ahead token */ + ) +{ + int i; + int stateno = pParser->yystack[pParser->yyidx].stateno; + + if (stateno > YY_SHIFT_MAX + || (i = yy_shift_ofst[stateno]) == YY_SHIFT_USE_DFLT) + { + return yy_default[stateno]; + } + assert (iLookAhead != YYNOCODE); + i += iLookAhead; + if (i < 0 || i >= YY_SZ_ACTTAB || yy_lookahead[i] != iLookAhead) + { + if (iLookAhead > 0) + { +#ifdef YYFALLBACK + YYCODETYPE iFallback; /* Fallback token */ + if (iLookAhead < sizeof (yyFallback) / sizeof (yyFallback[0]) + && (iFallback = yyFallback[iLookAhead]) != 0) + { +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sFALLBACK %s => %s\n", + yyTracePrompt, yyTokenName[iLookAhead], + yyTokenName[iFallback]); + } +#endif + return yy_find_shift_action (pParser, iFallback); + } +#endif +#ifdef YYWILDCARD + { + int j = i - iLookAhead + YYWILDCARD; + if (j >= 0 && j < YY_SZ_ACTTAB + && yy_lookahead[j] == YYWILDCARD) + { +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sWILDCARD %s => %s\n", + yyTracePrompt, yyTokenName[iLookAhead], + yyTokenName[YYWILDCARD]); + } +#endif /* NDEBUG */ + return yy_action[j]; + } + } +#endif /* YYWILDCARD */ + } + return yy_default[stateno]; + } + else + { + return yy_action[i]; + } +} + +/* +** Find the appropriate action for a parser given the non-terminal +** look-ahead token iLookAhead. +** +** If the look-ahead token is YYNOCODE, then check to see if the action is +** independent of the look-ahead. If it is, return the action, otherwise +** return YY_NO_ACTION. +*/ +static int +yy_find_reduce_action (int stateno, /* Current state number */ + YYCODETYPE iLookAhead /* The look-ahead token */ + ) +{ + int i; +#ifdef YYERRORSYMBOL + if (stateno > YY_REDUCE_MAX) + { + return yy_default[stateno]; + } +#else + assert (stateno <= YY_REDUCE_MAX); +#endif + i = yy_reduce_ofst[stateno]; + assert (i != YY_REDUCE_USE_DFLT); + assert (iLookAhead != YYNOCODE); + i += iLookAhead; +#ifdef YYERRORSYMBOL + if (i < 0 || i >= YY_SZ_ACTTAB || yy_lookahead[i] != iLookAhead) + { + return yy_default[stateno]; + } +#else + assert (i >= 0 && i < YY_SZ_ACTTAB); + assert (yy_lookahead[i] == iLookAhead); +#endif + return yy_action[i]; +} + +/* +** The following routine is called if the stack overflows. +*/ +static void +yyStackOverflow (yyParser * yypParser, YYMINORTYPE * yypMinor) +{ + ParseARG_FETCH; + yypParser->yyidx--; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sStack Overflow!\n", yyTracePrompt); + } +#endif + while (yypParser->yyidx >= 0) + yy_pop_parser_stack (yypParser); + /* Here code is inserted which will execute if the parser + ** stack every overflows */ + + spatialite_e ("Giving up. Parser stack overflow\n"); + ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ +} + +/* +** Perform a shift action. +*/ +static void +yy_shift (yyParser * yypParser, /* The parser to be shifted */ + int yyNewState, /* The new state to shift in */ + int yyMajor, /* The major token to shift in */ + YYMINORTYPE * yypMinor /* Pointer to the minor token to shift in */ + ) +{ + yyStackEntry *yytos; + yypParser->yyidx++; +#ifdef YYTRACKMAXSTACKDEPTH + if (yypParser->yyidx > yypParser->yyidxMax) + { + yypParser->yyidxMax = yypParser->yyidx; + } +#endif +#if YYSTACKDEPTH>0 + if (yypParser->yyidx >= YYSTACKDEPTH) + { + yyStackOverflow (yypParser, yypMinor); + return; + } +#else + if (yypParser->yyidx >= yypParser->yystksz) + { + yyGrowStack (yypParser); + if (yypParser->yyidx >= yypParser->yystksz) + { + yyStackOverflow (yypParser, yypMinor); + return; + } + } +#endif + yytos = &yypParser->yystack[yypParser->yyidx]; + yytos->stateno = (YYACTIONTYPE) yyNewState; + yytos->major = (YYCODETYPE) yyMajor; + yytos->minor = *yypMinor; +#ifndef NDEBUG + if (yyTraceFILE && yypParser->yyidx > 0) + { + int i; + fprintf (yyTraceFILE, "%sShift %d\n", yyTracePrompt, yyNewState); + fprintf (yyTraceFILE, "%sStack:", yyTracePrompt); + for (i = 1; i <= yypParser->yyidx; i++) + fprintf (yyTraceFILE, " %s", + yyTokenName[yypParser->yystack[i].major]); + fprintf (yyTraceFILE, "\n"); + } +#endif +} + +/* The following table contains information about every rule that +** is used during the reduce. +*/ +static const struct +{ + YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ + unsigned char nrhs; /* Number of right-hand side symbols in the rule */ +} yyRuleInfo[] = +{ + { + 21, 1}, + { + 22, 0}, + { + 22, 3}, + { + 23, 1}, + { + 24, 1}, + { + 24, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 25, 1}, + { + 26, 1}, + { + 26, 1}, + { + 26, 1}, + { + 26, 1}, + { + 26, 1}, + { + 26, 1}, + { + 26, 1}, + { + 27, 4}, + { + 28, 4}, + { + 48, 4}, + { + 29, 4}, + { + 59, 4}, + { + 61, 5}, + { + 62, 5}, + { + 63, 6}, + { + 55, 2}, + { + 57, 3}, + { + 56, 3}, + { + 58, 4}, + { + 60, 1}, + { + 64, 0}, + { + 64, 3}, + { + 65, 0}, + { + 65, 3}, + { + 66, 0}, + { + 66, 3}, + { + 67, 0}, + { + 67, 3}, + { + 68, 0}, + { + 68, 3}, + { + 69, 0}, + { + 69, 3}, + { + 70, 0}, + { + 70, 3}, + { + 71, 0}, + { + 71, 3}, + { + 30, 2}, + { + 49, 2}, + { + 31, 2}, + { + 32, 2}, + { + 72, 6}, + { + 73, 6}, + { + 74, 6}, + { + 75, 6}, + { + 33, 2}, + { + 50, 2}, + { + 34, 2}, + { + 35, 2}, + { + 76, 4}, + { + 77, 4}, + { + 78, 4}, + { + 79, 4}, + { + 80, 10}, + { + 81, 0}, + { + 81, 3}, + { + 82, 10}, + { + 83, 0}, + { + 83, 3}, + { + 84, 10}, + { + 85, 0}, + { + 85, 3}, + { + 86, 10}, + { + 87, 0}, + { + 87, 3}, + { + 36, 2}, + { + 51, 2}, + { + 37, 2}, + { + 38, 2}, + { + 88, 4}, + { + 89, 4}, + { + 90, 4}, + { + 91, 4}, + { + 88, 4}, + { + 89, 4}, + { + 90, 4}, + { + 91, 4}, + { + 39, 2}, + { + 52, 2}, + { + 40, 2}, + { + 41, 2}, + { + 92, 4}, + { + 96, 0}, + { + 96, 3}, + { + 93, 4}, + { + 97, 0}, + { + 97, 3}, + { + 94, 4}, + { + 98, 0}, + { + 98, 3}, + { + 95, 4}, + { + 99, 0}, + { + 99, 3}, + { + 42, 2}, + { + 53, 2}, + { + 43, 2}, + { + 44, 2}, + { + 100, 4}, + { + 104, 0}, + { + 104, 3}, + { + 101, 4}, + { + 105, 0}, + { + 105, 3}, + { + 102, 4}, + { + 106, 0}, + { + 106, 3}, + { + 103, 4}, + { + 107, 0}, + { + 107, 3}, + { + 45, 2}, + { + 54, 2}, + { + 46, 2}, + { + 47, 2}, + { + 108, 4}, + { + 108, 4}, + { + 108, 4}, + { + 108, 4}, + { + 108, 4}, + { + 108, 4}, + { + 108, 5}, + { + 112, 0}, + { + 112, 3}, + { + 112, 3}, + { + 112, 3}, + { + 112, 3}, + { + 112, 3}, + { + 112, 3}, + { + 112, 4}, + { + 109, 4}, + { + 109, 4}, + { + 109, 4}, + { + 109, 4}, + { + 109, 4}, + { + 109, 4}, + { + 109, 5}, + { + 113, 0}, + { + 113, 3}, + { + 113, 3}, + { + 113, 3}, + { + 113, 3}, + { + 113, 3}, + { + 113, 3}, + { + 113, 4}, + { + 110, 4}, + { + 110, 4}, + { + 110, 4}, + { + 110, 4}, + { + 110, 4}, + { + 110, 4}, + { + 110, 5}, + { + 114, 0}, + { + 114, 3}, + { + 114, 3}, + { + 114, 3}, + { + 114, 3}, + { + 114, 3}, + { + 114, 3}, + { + 114, 4}, + { + 111, 4}, + { + 111, 4}, + { + 111, 4}, + { + 111, 4}, + { + 111, 4}, + { + 111, 4}, + { + 111, 5}, + { + 115, 0}, + { + 115, 3}, + { + 115, 3}, + { + 115, 3}, + { + 115, 3}, + { + 115, 3}, + { + 115, 3}, + { +115, 4},}; + +static void yy_accept (yyParser *); /* Forward Declaration */ + +/* +** Perform a reduce action and the shift that must immediately +** follow the reduce. +*/ +static void +yy_reduce (yyParser * yypParser, /* The parser */ + int yyruleno /* Number of the rule by which to reduce */ + ) +{ + int yygoto; /* The next state */ + int yyact; /* The next action */ + YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ + yyStackEntry *yymsp; /* The top of the parser's stack */ + int yysize; /* Amount to pop the stack */ + ParseARG_FETCH; + yymsp = &yypParser->yystack[yypParser->yyidx]; +#ifndef NDEBUG + if (yyTraceFILE && yyruleno >= 0 + && yyruleno < (int) (sizeof (yyRuleName) / sizeof (yyRuleName[0]))) + { + fprintf (yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt, + yyRuleName[yyruleno]); + } +#endif /* NDEBUG */ + + /* Silence complaints from purify about yygotominor being uninitialized + ** in some cases when it is copied into the stack after the following + ** switch. yygotominor is uninitialized when a rule reduces that does + ** not set the value of its left-hand side nonterminal. Leaving the + ** value of the nonterminal uninitialized is utterly harmless as long + ** as the value is never used. So really the only thing this code + ** accomplishes is to quieten purify. + ** + ** 2007-01-16: The wireshark project (www.wireshark.org) reports that + ** without this code, their parser segfaults. I'm not sure what there + ** parser is doing to make this happen. This is the second bug report + ** from wireshark this week. Clearly they are stressing Lemon in ways + ** that it has not been previously stressed... (SQLite ticket #2172) + */ + /*memset(&yygotominor, 0, sizeof(yygotominor)); */ + yygotominor = yyzerominor; + + + switch (yyruleno) + { + /* Beginning here are the reduction cases. A typical example + ** follows: + ** case 0: + ** #line + ** { ... } // User supplied code + ** #line + ** break; + */ + case 6: /* geo_text ::= point */ + case 7: /* geo_text ::= pointz */ + yytestcase (yyruleno == 7); + case 8: /* geo_text ::= pointzm */ + yytestcase (yyruleno == 8); + case 9: /* geo_text ::= linestring */ + yytestcase (yyruleno == 9); + case 10: /* geo_text ::= linestringz */ + yytestcase (yyruleno == 10); + case 11: /* geo_text ::= linestringzm */ + yytestcase (yyruleno == 11); + case 12: /* geo_text ::= polygon */ + yytestcase (yyruleno == 12); + case 13: /* geo_text ::= polygonz */ + yytestcase (yyruleno == 13); + case 14: /* geo_text ::= polygonzm */ + yytestcase (yyruleno == 14); + case 15: /* geo_text ::= multipoint */ + yytestcase (yyruleno == 15); + case 16: /* geo_text ::= multipointz */ + yytestcase (yyruleno == 16); + case 17: /* geo_text ::= multipointzm */ + yytestcase (yyruleno == 17); + case 18: /* geo_text ::= multilinestring */ + yytestcase (yyruleno == 18); + case 19: /* geo_text ::= multilinestringz */ + yytestcase (yyruleno == 19); + case 20: /* geo_text ::= multilinestringzm */ + yytestcase (yyruleno == 20); + case 21: /* geo_text ::= multipolygon */ + yytestcase (yyruleno == 21); + case 22: /* geo_text ::= multipolygonz */ + yytestcase (yyruleno == 22); + case 23: /* geo_text ::= multipolygonzm */ + yytestcase (yyruleno == 23); + case 24: /* geo_text ::= geocoll */ + yytestcase (yyruleno == 24); + case 25: /* geo_text ::= geocollz */ + yytestcase (yyruleno == 25); + case 26: /* geo_text ::= geocollzm */ + yytestcase (yyruleno == 26); + case 27: /* geo_textm ::= pointm */ + yytestcase (yyruleno == 27); + case 28: /* geo_textm ::= linestringm */ + yytestcase (yyruleno == 28); + case 29: /* geo_textm ::= polygonm */ + yytestcase (yyruleno == 29); + case 30: /* geo_textm ::= multipointm */ + yytestcase (yyruleno == 30); + case 31: /* geo_textm ::= multilinestringm */ + yytestcase (yyruleno == 31); + case 32: /* geo_textm ::= multipolygonm */ + yytestcase (yyruleno == 32); + case 33: /* geo_textm ::= geocollm */ + yytestcase (yyruleno == 33); + { + p_data->result = yymsp[0].minor.yy0; + } + break; + case 34: /* point ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxy EWKT_CLOSE_BRACKET */ + case 35: /* pointz ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyz EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 35); + case 37: /* pointzm ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyzm EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 37); + { + yygotominor.yy0 = + ewkt_buildGeomFromPoint (p_data, + (gaiaPointPtr) yymsp[-1].minor.yy0); + } + break; + case 36: /* pointm ::= EWKT_POINT_M EWKT_OPEN_BRACKET point_coordxym EWKT_CLOSE_BRACKET */ + { + yygotominor.yy0 = + ewkt_buildGeomFromPoint (p_data, + (gaiaPointPtr) yymsp[-1].minor.yy0); + } + break; + case 38: /* point_brkt_coordxy ::= EWKT_OPEN_BRACKET coord coord EWKT_CLOSE_BRACKET */ + { + yygotominor.yy0 = + (void *) ewkt_point_xy (p_data, + (double *) yymsp[-2].minor.yy0, + (double *) yymsp[-1].minor.yy0); + } + break; + case 39: /* point_brkt_coordxym ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET */ + { + yygotominor.yy0 = + (void *) ewkt_point_xym (p_data, + (double *) yymsp[-3].minor.yy0, + (double *) yymsp[-2].minor.yy0, + (double *) yymsp[-1].minor.yy0); + } + break; + case 40: /* point_brkt_coordxyz ::= EWKT_OPEN_BRACKET coord coord coord EWKT_CLOSE_BRACKET */ + { + yygotominor.yy0 = + (void *) ewkt_point_xyz (p_data, + (double *) yymsp[-3].minor.yy0, + (double *) yymsp[-2].minor.yy0, + (double *) yymsp[-1].minor.yy0); + } + break; + case 41: /* point_brkt_coordxyzm ::= EWKT_OPEN_BRACKET coord coord coord coord EWKT_CLOSE_BRACKET */ + { + yygotominor.yy0 = + (void *) ewkt_point_xyzm (p_data, + (double *) yymsp[-4].minor.yy0, + (double *) yymsp[-3].minor.yy0, + (double *) yymsp[-2].minor.yy0, + (double *) yymsp[-1].minor.yy0); + } + break; + case 42: /* point_coordxy ::= coord coord */ + { + yygotominor.yy0 = + (void *) ewkt_point_xy (p_data, + (double *) yymsp[-1].minor.yy0, + (double *) yymsp[0].minor.yy0); + } + break; + case 43: /* point_coordxym ::= coord coord coord */ + { + yygotominor.yy0 = + (void *) ewkt_point_xym (p_data, + (double *) yymsp[-2].minor.yy0, + (double *) yymsp[-1].minor.yy0, + (double *) yymsp[0].minor.yy0); + } + break; + case 44: /* point_coordxyz ::= coord coord coord */ + { + yygotominor.yy0 = + (void *) ewkt_point_xyz (p_data, + (double *) yymsp[-2].minor.yy0, + (double *) yymsp[-1].minor.yy0, + (double *) yymsp[0].minor.yy0); + } + break; + case 45: /* point_coordxyzm ::= coord coord coord coord */ + { + yygotominor.yy0 = + (void *) ewkt_point_xyzm (p_data, + (double *) yymsp[-3].minor.yy0, + (double *) yymsp[-2].minor.yy0, + (double *) yymsp[-1].minor.yy0, + (double *) yymsp[0].minor.yy0); + } + break; + case 46: /* coord ::= EWKT_NUM */ + case 91: /* multipoint ::= EWKT_MULTIPOINT multipoint_text */ + yytestcase (yyruleno == 91); + case 92: /* multipointm ::= EWKT_MULTIPOINT_M multipoint_textm */ + yytestcase (yyruleno == 92); + case 93: /* multipointz ::= EWKT_MULTIPOINT multipoint_textz */ + yytestcase (yyruleno == 93); + case 94: /* multipointzm ::= EWKT_MULTIPOINT multipoint_textzm */ + yytestcase (yyruleno == 94); + case 103: /* multilinestring ::= EWKT_MULTILINESTRING multilinestring_text */ + yytestcase (yyruleno == 103); + case 104: /* multilinestringm ::= EWKT_MULTILINESTRING_M multilinestring_textm */ + yytestcase (yyruleno == 104); + case 105: /* multilinestringz ::= EWKT_MULTILINESTRING multilinestring_textz */ + yytestcase (yyruleno == 105); + case 106: /* multilinestringzm ::= EWKT_MULTILINESTRING multilinestring_textzm */ + yytestcase (yyruleno == 106); + case 119: /* multipolygon ::= EWKT_MULTIPOLYGON multipolygon_text */ + yytestcase (yyruleno == 119); + case 120: /* multipolygonm ::= EWKT_MULTIPOLYGON_M multipolygon_textm */ + yytestcase (yyruleno == 120); + case 121: /* multipolygonz ::= EWKT_MULTIPOLYGON multipolygon_textz */ + yytestcase (yyruleno == 121); + case 122: /* multipolygonzm ::= EWKT_MULTIPOLYGON multipolygon_textzm */ + yytestcase (yyruleno == 122); + case 135: /* geocoll ::= EWKT_GEOMETRYCOLLECTION geocoll_text */ + yytestcase (yyruleno == 135); + case 136: /* geocollm ::= EWKT_GEOMETRYCOLLECTION_M geocoll_textm */ + yytestcase (yyruleno == 136); + case 137: /* geocollz ::= EWKT_GEOMETRYCOLLECTION geocoll_textz */ + yytestcase (yyruleno == 137); + case 138: /* geocollzm ::= EWKT_GEOMETRYCOLLECTION geocoll_textzm */ + yytestcase (yyruleno == 138); + { + yygotominor.yy0 = yymsp[0].minor.yy0; + } + break; + case 47: /* extra_brkt_pointsxy ::= */ + case 49: /* extra_brkt_pointsxym ::= */ + yytestcase (yyruleno == 49); + case 51: /* extra_brkt_pointsxyz ::= */ + yytestcase (yyruleno == 51); + case 53: /* extra_brkt_pointsxyzm ::= */ + yytestcase (yyruleno == 53); + case 55: /* extra_pointsxy ::= */ + yytestcase (yyruleno == 55); + case 57: /* extra_pointsxym ::= */ + yytestcase (yyruleno == 57); + case 59: /* extra_pointsxyz ::= */ + yytestcase (yyruleno == 59); + case 61: /* extra_pointsxyzm ::= */ + yytestcase (yyruleno == 61); + case 80: /* extra_rings ::= */ + yytestcase (yyruleno == 80); + case 83: /* extra_ringsm ::= */ + yytestcase (yyruleno == 83); + case 86: /* extra_ringsz ::= */ + yytestcase (yyruleno == 86); + case 89: /* extra_ringszm ::= */ + yytestcase (yyruleno == 89); + case 108: /* multilinestring_text2 ::= */ + yytestcase (yyruleno == 108); + case 111: /* multilinestring_textm2 ::= */ + yytestcase (yyruleno == 111); + case 114: /* multilinestring_textz2 ::= */ + yytestcase (yyruleno == 114); + case 117: /* multilinestring_textzm2 ::= */ + yytestcase (yyruleno == 117); + case 124: /* multipolygon_text2 ::= */ + yytestcase (yyruleno == 124); + case 127: /* multipolygon_textm2 ::= */ + yytestcase (yyruleno == 127); + case 130: /* multipolygon_textz2 ::= */ + yytestcase (yyruleno == 130); + case 133: /* multipolygon_textzm2 ::= */ + yytestcase (yyruleno == 133); + case 146: /* geocoll_text2 ::= */ + yytestcase (yyruleno == 146); + case 161: /* geocoll_textm2 ::= */ + yytestcase (yyruleno == 161); + case 176: /* geocoll_textz2 ::= */ + yytestcase (yyruleno == 176); + case 191: /* geocoll_textzm2 ::= */ + yytestcase (yyruleno == 191); + { + yygotominor.yy0 = NULL; + } + break; + case 48: /* extra_brkt_pointsxy ::= EWKT_COMMA point_brkt_coordxy extra_brkt_pointsxy */ + case 50: /* extra_brkt_pointsxym ::= EWKT_COMMA point_brkt_coordxym extra_brkt_pointsxym */ + yytestcase (yyruleno == 50); + case 52: /* extra_brkt_pointsxyz ::= EWKT_COMMA point_brkt_coordxyz extra_brkt_pointsxyz */ + yytestcase (yyruleno == 52); + case 54: /* extra_brkt_pointsxyzm ::= EWKT_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm */ + yytestcase (yyruleno == 54); + case 56: /* extra_pointsxy ::= EWKT_COMMA point_coordxy extra_pointsxy */ + yytestcase (yyruleno == 56); + case 58: /* extra_pointsxym ::= EWKT_COMMA point_coordxym extra_pointsxym */ + yytestcase (yyruleno == 58); + case 60: /* extra_pointsxyz ::= EWKT_COMMA point_coordxyz extra_pointsxyz */ + yytestcase (yyruleno == 60); + case 62: /* extra_pointsxyzm ::= EWKT_COMMA point_coordxyzm extra_pointsxyzm */ + yytestcase (yyruleno == 62); + { + ((gaiaPointPtr) yymsp[-1].minor.yy0)->Next = + (gaiaPointPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 63: /* linestring ::= EWKT_LINESTRING linestring_text */ + case 64: /* linestringm ::= EWKT_LINESTRING_M linestring_textm */ + yytestcase (yyruleno == 64); + case 65: /* linestringz ::= EWKT_LINESTRING linestring_textz */ + yytestcase (yyruleno == 65); + case 66: /* linestringzm ::= EWKT_LINESTRING linestring_textzm */ + yytestcase (yyruleno == 66); + { + yygotominor.yy0 = + ewkt_buildGeomFromLinestring (p_data, + (gaiaLinestringPtr) + yymsp[0].minor.yy0); + } + break; + case 67: /* linestring_text ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_linestring_xy (p_data, + (gaiaPointPtr) yymsp[-4].minor. + yy0); + } + break; + case 68: /* linestring_textm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_linestring_xym (p_data, + (gaiaPointPtr) yymsp[-4].minor. + yy0); + } + break; + case 69: /* linestring_textz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_linestring_xyz (p_data, + (gaiaPointPtr) yymsp[-4].minor. + yy0); + } + break; + case 70: /* linestring_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_linestring_xyzm (p_data, + (gaiaPointPtr) yymsp[-4].minor. + yy0); + } + break; + case 71: /* polygon ::= EWKT_POLYGON polygon_text */ + case 72: /* polygonm ::= EWKT_POLYGON_M polygon_textm */ + yytestcase (yyruleno == 72); + case 73: /* polygonz ::= EWKT_POLYGON polygon_textz */ + yytestcase (yyruleno == 73); + case 74: /* polygonzm ::= EWKT_POLYGON polygon_textzm */ + yytestcase (yyruleno == 74); + { + yygotominor.yy0 = + ewkt_buildGeomFromPolygon (p_data, + (gaiaPolygonPtr) yymsp[0].minor. + yy0); + } + break; + case 75: /* polygon_text ::= EWKT_OPEN_BRACKET ring extra_rings EWKT_CLOSE_BRACKET */ + { + ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = + (gaiaRingPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_polygon_xy (p_data, + (gaiaRingPtr) yymsp[-2].minor.yy0); + } + break; + case 76: /* polygon_textm ::= EWKT_OPEN_BRACKET ringm extra_ringsm EWKT_CLOSE_BRACKET */ + { + ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = + (gaiaRingPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_polygon_xym (p_data, + (gaiaRingPtr) yymsp[-2].minor.yy0); + } + break; + case 77: /* polygon_textz ::= EWKT_OPEN_BRACKET ringz extra_ringsz EWKT_CLOSE_BRACKET */ + { + ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = + (gaiaRingPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_polygon_xyz (p_data, + (gaiaRingPtr) yymsp[-2].minor.yy0); + } + break; + case 78: /* polygon_textzm ::= EWKT_OPEN_BRACKET ringzm extra_ringszm EWKT_CLOSE_BRACKET */ + { + ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = + (gaiaRingPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_polygon_xyzm (p_data, + (gaiaRingPtr) yymsp[-2].minor. + yy0); + } + break; + case 79: /* ring ::= EWKT_OPEN_BRACKET point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy EWKT_COMMA point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-6].minor.yy0; + ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-4].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_ring_xy (p_data, + (gaiaPointPtr) yymsp[-8].minor.yy0); + } + break; + case 81: /* extra_rings ::= EWKT_COMMA ring extra_rings */ + case 84: /* extra_ringsm ::= EWKT_COMMA ringm extra_ringsm */ + yytestcase (yyruleno == 84); + case 87: /* extra_ringsz ::= EWKT_COMMA ringz extra_ringsz */ + yytestcase (yyruleno == 87); + case 90: /* extra_ringszm ::= EWKT_COMMA ringzm extra_ringszm */ + yytestcase (yyruleno == 90); + { + ((gaiaRingPtr) yymsp[-1].minor.yy0)->Next = + (gaiaRingPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 82: /* ringm ::= EWKT_OPEN_BRACKET point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym EWKT_COMMA point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-6].minor.yy0; + ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-4].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_ring_xym (p_data, + (gaiaPointPtr) yymsp[-8].minor.yy0); + } + break; + case 85: /* ringz ::= EWKT_OPEN_BRACKET point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz EWKT_COMMA point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-6].minor.yy0; + ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-4].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_ring_xyz (p_data, + (gaiaPointPtr) yymsp[-8].minor.yy0); + } + break; + case 88: /* ringzm ::= EWKT_OPEN_BRACKET point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm EWKT_COMMA point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-6].minor.yy0; + ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-4].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_ring_xyzm (p_data, + (gaiaPointPtr) yymsp[-8].minor.yy0); + } + break; + case 95: /* multipoint_text ::= EWKT_OPEN_BRACKET point_coordxy extra_pointsxy EWKT_CLOSE_BRACKET */ + case 99: /* multipoint_text ::= EWKT_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 99); + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_multipoint_xy (p_data, + (gaiaPointPtr) yymsp[-2].minor. + yy0); + } + break; + case 96: /* multipoint_textm ::= EWKT_OPEN_BRACKET point_coordxym extra_pointsxym EWKT_CLOSE_BRACKET */ + case 100: /* multipoint_textm ::= EWKT_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 100); + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_multipoint_xym (p_data, + (gaiaPointPtr) yymsp[-2].minor. + yy0); + } + break; + case 97: /* multipoint_textz ::= EWKT_OPEN_BRACKET point_coordxyz extra_pointsxyz EWKT_CLOSE_BRACKET */ + case 101: /* multipoint_textz ::= EWKT_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 101); + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_multipoint_xyz (p_data, + (gaiaPointPtr) yymsp[-2].minor. + yy0); + } + break; + case 98: /* multipoint_textzm ::= EWKT_OPEN_BRACKET point_coordxyzm extra_pointsxyzm EWKT_CLOSE_BRACKET */ + case 102: /* multipoint_textzm ::= EWKT_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 102); + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_multipoint_xyzm (p_data, + (gaiaPointPtr) yymsp[-2].minor. + yy0); + } + break; + case 107: /* multilinestring_text ::= EWKT_OPEN_BRACKET linestring_text multilinestring_text2 EWKT_CLOSE_BRACKET */ + { + ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = + (gaiaLinestringPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_multilinestring_xy (p_data, + (gaiaLinestringPtr) + yymsp[-2].minor.yy0); + } + break; + case 109: /* multilinestring_text2 ::= EWKT_COMMA linestring_text multilinestring_text2 */ + case 112: /* multilinestring_textm2 ::= EWKT_COMMA linestring_textm multilinestring_textm2 */ + yytestcase (yyruleno == 112); + case 115: /* multilinestring_textz2 ::= EWKT_COMMA linestring_textz multilinestring_textz2 */ + yytestcase (yyruleno == 115); + case 118: /* multilinestring_textzm2 ::= EWKT_COMMA linestring_textzm multilinestring_textzm2 */ + yytestcase (yyruleno == 118); + { + ((gaiaLinestringPtr) yymsp[-1].minor.yy0)->Next = + (gaiaLinestringPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 110: /* multilinestring_textm ::= EWKT_OPEN_BRACKET linestring_textm multilinestring_textm2 EWKT_CLOSE_BRACKET */ + { + ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = + (gaiaLinestringPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_multilinestring_xym (p_data, + (gaiaLinestringPtr) + yymsp[-2].minor.yy0); + } + break; + case 113: /* multilinestring_textz ::= EWKT_OPEN_BRACKET linestring_textz multilinestring_textz2 EWKT_CLOSE_BRACKET */ + { + ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = + (gaiaLinestringPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_multilinestring_xyz (p_data, + (gaiaLinestringPtr) + yymsp[-2].minor.yy0); + } + break; + case 116: /* multilinestring_textzm ::= EWKT_OPEN_BRACKET linestring_textzm multilinestring_textzm2 EWKT_CLOSE_BRACKET */ + { + ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = + (gaiaLinestringPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_multilinestring_xyzm (p_data, + (gaiaLinestringPtr) + yymsp[-2].minor.yy0); + } + break; + case 123: /* multipolygon_text ::= EWKT_OPEN_BRACKET polygon_text multipolygon_text2 EWKT_CLOSE_BRACKET */ + { + ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPolygonPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_multipolygon_xy (p_data, + (gaiaPolygonPtr) + yymsp[-2].minor.yy0); + } + break; + case 125: /* multipolygon_text2 ::= EWKT_COMMA polygon_text multipolygon_text2 */ + case 128: /* multipolygon_textm2 ::= EWKT_COMMA polygon_textm multipolygon_textm2 */ + yytestcase (yyruleno == 128); + case 131: /* multipolygon_textz2 ::= EWKT_COMMA polygon_textz multipolygon_textz2 */ + yytestcase (yyruleno == 131); + case 134: /* multipolygon_textzm2 ::= EWKT_COMMA polygon_textzm multipolygon_textzm2 */ + yytestcase (yyruleno == 134); + { + ((gaiaPolygonPtr) yymsp[-1].minor.yy0)->Next = + (gaiaPolygonPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 126: /* multipolygon_textm ::= EWKT_OPEN_BRACKET polygon_textm multipolygon_textm2 EWKT_CLOSE_BRACKET */ + { + ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPolygonPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_multipolygon_xym (p_data, + (gaiaPolygonPtr) + yymsp[-2].minor.yy0); + } + break; + case 129: /* multipolygon_textz ::= EWKT_OPEN_BRACKET polygon_textz multipolygon_textz2 EWKT_CLOSE_BRACKET */ + { + ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPolygonPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_multipolygon_xyz (p_data, + (gaiaPolygonPtr) + yymsp[-2].minor.yy0); + } + break; + case 132: /* multipolygon_textzm ::= EWKT_OPEN_BRACKET polygon_textzm multipolygon_textzm2 EWKT_CLOSE_BRACKET */ + { + ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPolygonPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_multipolygon_xyzm (p_data, + (gaiaPolygonPtr) + yymsp[-2].minor.yy0); + } + break; + case 139: /* geocoll_text ::= EWKT_OPEN_BRACKET point geocoll_text2 EWKT_CLOSE_BRACKET */ + case 140: /* geocoll_text ::= EWKT_OPEN_BRACKET linestring geocoll_text2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 140); + case 141: /* geocoll_text ::= EWKT_OPEN_BRACKET polygon geocoll_text2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 141); + case 142: /* geocoll_text ::= EWKT_OPEN_BRACKET multipoint geocoll_text2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 142); + case 143: /* geocoll_text ::= EWKT_OPEN_BRACKET multilinestring geocoll_text2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 143); + case 144: /* geocoll_text ::= EWKT_OPEN_BRACKET multipolygon geocoll_text2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 144); + case 145: /* geocoll_text ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 145); + { + ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = + (gaiaGeomCollPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_geomColl_xy (p_data, + (gaiaGeomCollPtr) yymsp[-2].minor. + yy0); + } + break; + case 147: /* geocoll_text2 ::= EWKT_COMMA point geocoll_text2 */ + case 148: /* geocoll_text2 ::= EWKT_COMMA linestring geocoll_text2 */ + yytestcase (yyruleno == 148); + case 149: /* geocoll_text2 ::= EWKT_COMMA polygon geocoll_text2 */ + yytestcase (yyruleno == 149); + case 150: /* geocoll_text2 ::= EWKT_COMMA multipoint geocoll_text2 */ + yytestcase (yyruleno == 150); + case 151: /* geocoll_text2 ::= EWKT_COMMA multilinestring geocoll_text2 */ + yytestcase (yyruleno == 151); + case 152: /* geocoll_text2 ::= EWKT_COMMA multipolygon geocoll_text2 */ + yytestcase (yyruleno == 152); + case 153: /* geocoll_text2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_text geocoll_text2 */ + yytestcase (yyruleno == 153); + case 162: /* geocoll_textm2 ::= EWKT_COMMA pointm geocoll_textm2 */ + yytestcase (yyruleno == 162); + case 163: /* geocoll_textm2 ::= EWKT_COMMA linestringm geocoll_textm2 */ + yytestcase (yyruleno == 163); + case 164: /* geocoll_textm2 ::= EWKT_COMMA polygonm geocoll_textm2 */ + yytestcase (yyruleno == 164); + case 165: /* geocoll_textm2 ::= EWKT_COMMA multipointm geocoll_textm2 */ + yytestcase (yyruleno == 165); + case 166: /* geocoll_textm2 ::= EWKT_COMMA multilinestringm geocoll_textm2 */ + yytestcase (yyruleno == 166); + case 167: /* geocoll_textm2 ::= EWKT_COMMA multipolygonm geocoll_textm2 */ + yytestcase (yyruleno == 167); + case 168: /* geocoll_textm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 */ + yytestcase (yyruleno == 168); + case 177: /* geocoll_textz2 ::= EWKT_COMMA pointz geocoll_textz2 */ + yytestcase (yyruleno == 177); + case 178: /* geocoll_textz2 ::= EWKT_COMMA linestringz geocoll_textz2 */ + yytestcase (yyruleno == 178); + case 179: /* geocoll_textz2 ::= EWKT_COMMA polygonz geocoll_textz2 */ + yytestcase (yyruleno == 179); + case 180: /* geocoll_textz2 ::= EWKT_COMMA multipointz geocoll_textz2 */ + yytestcase (yyruleno == 180); + case 181: /* geocoll_textz2 ::= EWKT_COMMA multilinestringz geocoll_textz2 */ + yytestcase (yyruleno == 181); + case 182: /* geocoll_textz2 ::= EWKT_COMMA multipolygonz geocoll_textz2 */ + yytestcase (yyruleno == 182); + case 183: /* geocoll_textz2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 */ + yytestcase (yyruleno == 183); + case 192: /* geocoll_textzm2 ::= EWKT_COMMA pointzm geocoll_textzm2 */ + yytestcase (yyruleno == 192); + case 193: /* geocoll_textzm2 ::= EWKT_COMMA linestringzm geocoll_textzm2 */ + yytestcase (yyruleno == 193); + case 194: /* geocoll_textzm2 ::= EWKT_COMMA polygonzm geocoll_textzm2 */ + yytestcase (yyruleno == 194); + case 195: /* geocoll_textzm2 ::= EWKT_COMMA multipointzm geocoll_textzm2 */ + yytestcase (yyruleno == 195); + case 196: /* geocoll_textzm2 ::= EWKT_COMMA multilinestringzm geocoll_textzm2 */ + yytestcase (yyruleno == 196); + case 197: /* geocoll_textzm2 ::= EWKT_COMMA multipolygonzm geocoll_textzm2 */ + yytestcase (yyruleno == 197); + case 198: /* geocoll_textzm2 ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 */ + yytestcase (yyruleno == 198); + { + ((gaiaGeomCollPtr) yymsp[-1].minor.yy0)->Next = + (gaiaGeomCollPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 154: /* geocoll_textm ::= EWKT_OPEN_BRACKET pointm geocoll_textm2 EWKT_CLOSE_BRACKET */ + case 155: /* geocoll_textm ::= EWKT_OPEN_BRACKET linestringm geocoll_textm2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 155); + case 156: /* geocoll_textm ::= EWKT_OPEN_BRACKET polygonm geocoll_textm2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 156); + case 157: /* geocoll_textm ::= EWKT_OPEN_BRACKET multipointm geocoll_textm2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 157); + case 158: /* geocoll_textm ::= EWKT_OPEN_BRACKET multilinestringm geocoll_textm2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 158); + case 159: /* geocoll_textm ::= EWKT_OPEN_BRACKET multipolygonm geocoll_textm2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 159); + case 160: /* geocoll_textm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 160); + { + ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = + (gaiaGeomCollPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_geomColl_xym (p_data, + (gaiaGeomCollPtr) yymsp[-2].minor. + yy0); + } + break; + case 169: /* geocoll_textz ::= EWKT_OPEN_BRACKET pointz geocoll_textz2 EWKT_CLOSE_BRACKET */ + case 170: /* geocoll_textz ::= EWKT_OPEN_BRACKET linestringz geocoll_textz2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 170); + case 171: /* geocoll_textz ::= EWKT_OPEN_BRACKET polygonz geocoll_textz2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 171); + case 172: /* geocoll_textz ::= EWKT_OPEN_BRACKET multipointz geocoll_textz2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 172); + case 173: /* geocoll_textz ::= EWKT_OPEN_BRACKET multilinestringz geocoll_textz2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 173); + case 174: /* geocoll_textz ::= EWKT_OPEN_BRACKET multipolygonz geocoll_textz2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 174); + case 175: /* geocoll_textz ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textz geocoll_textz2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 175); + { + ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = + (gaiaGeomCollPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_geomColl_xyz (p_data, + (gaiaGeomCollPtr) yymsp[-2].minor. + yy0); + } + break; + case 184: /* geocoll_textzm ::= EWKT_OPEN_BRACKET pointzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ + case 185: /* geocoll_textzm ::= EWKT_OPEN_BRACKET linestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 185); + case 186: /* geocoll_textzm ::= EWKT_OPEN_BRACKET polygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 186); + case 187: /* geocoll_textzm ::= EWKT_OPEN_BRACKET multipointzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 187); + case 188: /* geocoll_textzm ::= EWKT_OPEN_BRACKET multilinestringzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 188); + case 189: /* geocoll_textzm ::= EWKT_OPEN_BRACKET multipolygonzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 189); + case 190: /* geocoll_textzm ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textzm geocoll_textzm2 EWKT_CLOSE_BRACKET */ + yytestcase (yyruleno == 190); + { + ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = + (gaiaGeomCollPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) ewkt_geomColl_xyzm (p_data, + (gaiaGeomCollPtr) + yymsp[-2].minor.yy0); + } + break; + default: + /* (0) main ::= in */ yytestcase (yyruleno == 0); + /* (1) in ::= */ yytestcase (yyruleno == 1); + /* (2) in ::= in state EWKT_NEWLINE */ yytestcase (yyruleno == 2); + /* (3) state ::= program */ yytestcase (yyruleno == 3); + /* (4) program ::= geo_text */ yytestcase (yyruleno == 4); + /* (5) program ::= geo_textm */ yytestcase (yyruleno == 5); + break; + }; + yygoto = yyRuleInfo[yyruleno].lhs; + yysize = yyRuleInfo[yyruleno].nrhs; + yypParser->yyidx -= yysize; + yyact = yy_find_reduce_action (yymsp[-yysize].stateno, (YYCODETYPE) yygoto); + if (yyact < YYNSTATE) + { +#ifdef NDEBUG + /* If we are not debugging and the reduce action popped at least + ** one element off the stack, then we can push the new element back + ** onto the stack here, and skip the stack overflow test in yy_shift(). + ** That gives a significant speed improvement. */ + if (yysize) + { + yypParser->yyidx++; + yymsp -= yysize - 1; + yymsp->stateno = (YYACTIONTYPE) yyact; + yymsp->major = (YYCODETYPE) yygoto; + yymsp->minor = yygotominor; + } + else +#endif + { + yy_shift (yypParser, yyact, yygoto, &yygotominor); + } + } + else + { + assert (yyact == YYNSTATE + YYNRULE + 1); + yy_accept (yypParser); + } +} + +/* +** The following code executes when the parse fails +*/ +#ifndef YYNOERRORRECOVERY +static void +yy_parse_failed (yyParser * yypParser /* The parser */ + ) +{ + ParseARG_FETCH; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sFail!\n", yyTracePrompt); + } +#endif + while (yypParser->yyidx >= 0) + yy_pop_parser_stack (yypParser); + /* Here code is inserted which will be executed whenever the + ** parser fails */ + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} +#endif /* YYNOERRORRECOVERY */ + +/* +** The following code executes when a syntax error first occurs. +*/ +static void +yy_syntax_error (yyParser * yypParser, /* The parser */ + int yymajor, /* The major type of the error token */ + YYMINORTYPE yyminor /* The minor type of the error token */ + ) +{ + ParseARG_FETCH; +#define TOKEN (yyminor.yy0) + +/* +** when the LEMON parser encounters an error +** then this global variable is set +*/ + p_data->ewkt_parse_error = 1; + p_data->result = NULL; + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} + +/* +** The following is executed when the parser accepts +*/ +static void +yy_accept (yyParser * yypParser /* The parser */ + ) +{ + ParseARG_FETCH; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sAccept!\n", yyTracePrompt); + } +#endif + while (yypParser->yyidx >= 0) + yy_pop_parser_stack (yypParser); + /* Here code is inserted which will be executed whenever the + ** parser accepts */ + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} + +/* The main parser program. +** The first argument is a pointer to a structure obtained from +** "ParseAlloc" which describes the current state of the parser. +** The second argument is the major token number. The third is +** the minor token. The fourth optional argument is whatever the +** user wants (and specified in the grammar) and is available for +** use by the action routines. +** +** Inputs: +**
      +**
    • A pointer to the parser (an opaque structure.) +**
    • The major token number. +**
    • The minor token number. +**
    • An option argument of a grammar-specified type. +**
    +** +** Outputs: +** None. +*/ +void +Parse (void *yyp, /* The parser */ + int yymajor, /* The major token code number */ + ParseTOKENTYPE yyminor /* The value for the token */ + ParseARG_PDECL /* Optional %extra_argument parameter */ + ) +{ + YYMINORTYPE yyminorunion; + int yyact; /* The parser action. */ + int yyendofinput; /* True if we are at the end of input */ +#ifdef YYERRORSYMBOL + int yyerrorhit = 0; /* True if yymajor has invoked an error */ +#endif + yyParser *yypParser; /* The parser */ + + /* (re)initialize the parser, if necessary */ + yypParser = (yyParser *) yyp; + if (yypParser->yyidx < 0) + { +#if YYSTACKDEPTH<=0 + if (yypParser->yystksz <= 0) + { + /*memset(&yyminorunion, 0, sizeof(yyminorunion)); */ + yyminorunion = yyzerominor; + yyStackOverflow (yypParser, &yyminorunion); + return; + } +#endif + yypParser->yyidx = 0; + yypParser->yyerrcnt = -1; + yypParser->yystack[0].stateno = 0; + yypParser->yystack[0].major = 0; + } + yyminorunion.yy0 = yyminor; + yyendofinput = (yymajor == 0); + ParseARG_STORE; + +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sInput %s\n", yyTracePrompt, + yyTokenName[yymajor]); + } +#endif + + do + { + yyact = yy_find_shift_action (yypParser, (YYCODETYPE) yymajor); + if (yyact < YYNSTATE) + { + assert (!yyendofinput); /* Impossible to shift the $ token */ + yy_shift (yypParser, yyact, yymajor, &yyminorunion); + yypParser->yyerrcnt--; + yymajor = YYNOCODE; + } + else if (yyact < YYNSTATE + YYNRULE) + { + yy_reduce (yypParser, yyact - YYNSTATE); + } + else + { + assert (yyact == YY_ERROR_ACTION); +#ifdef YYERRORSYMBOL + int yymx; +#endif +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sSyntax Error!\n", yyTracePrompt); + } +#endif +#ifdef YYERRORSYMBOL + /* A syntax error has occurred. + ** The response to an error depends upon whether or not the + ** grammar defines an error token "ERROR". + ** + ** This is what we do if the grammar does define ERROR: + ** + ** * Call the %syntax_error function. + ** + ** * Begin popping the stack until we enter a state where + ** it is legal to shift the error symbol, then shift + ** the error symbol. + ** + ** * Set the error count to three. + ** + ** * Begin accepting and shifting new tokens. No new error + ** processing will occur until three tokens have been + ** shifted successfully. + ** + */ + if (yypParser->yyerrcnt < 0) + { + yy_syntax_error (yypParser, yymajor, yyminorunion); + } + yymx = yypParser->yystack[yypParser->yyidx].major; + if (yymx == YYERRORSYMBOL || yyerrorhit) + { +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sDiscard input token %s\n", + yyTracePrompt, yyTokenName[yymajor]); + } +#endif + yy_destructor (yypParser, (YYCODETYPE) yymajor, + &yyminorunion); + yymajor = YYNOCODE; + } + else + { + while (yypParser->yyidx >= 0 && + yymx != YYERRORSYMBOL && + (yyact = + yy_find_reduce_action (yypParser->yystack + [yypParser->yyidx].stateno, + YYERRORSYMBOL)) >= + YYNSTATE) + { + yy_pop_parser_stack (yypParser); + } + if (yypParser->yyidx < 0 || yymajor == 0) + { + yy_destructor (yypParser, (YYCODETYPE) yymajor, + &yyminorunion); + yy_parse_failed (yypParser); + yymajor = YYNOCODE; + } + else if (yymx != YYERRORSYMBOL) + { + YYMINORTYPE u2; + u2.YYERRSYMDT = 0; + yy_shift (yypParser, yyact, YYERRORSYMBOL, &u2); + } + } + yypParser->yyerrcnt = 3; + yyerrorhit = 1; +#elif defined(YYNOERRORRECOVERY) + /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to + ** do any kind of error recovery. Instead, simply invoke the syntax + ** error routine and continue going as if nothing had happened. + ** + ** Applications can set this macro (for example inside %include) if + ** they intend to abandon the parse upon the first syntax error seen. + */ + yy_syntax_error (yypParser, yymajor, yyminorunion); + yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); + yymajor = YYNOCODE; + +#else /* YYERRORSYMBOL is not defined */ + /* This is what we do if the grammar does not define ERROR: + ** + ** * Report an error message, and throw away the input token. + ** + ** * If the input token is $, then fail the parse. + ** + ** As before, subsequent error messages are suppressed until + ** three input tokens have been successfully shifted. + */ + if (yypParser->yyerrcnt <= 0) + { + yy_syntax_error (yypParser, yymajor, yyminorunion); + } + yypParser->yyerrcnt = 3; + yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); + if (yyendofinput) + { + yy_parse_failed (yypParser); + } + yymajor = YYNOCODE; +#endif + } + } + while (yymajor != YYNOCODE && yypParser->yyidx >= 0); + return; +} diff --git a/src/spatialite/src/gaiageo/Ewkt.h b/src/spatialite/src/gaiageo/Ewkt.h new file mode 100644 index 0000000..9670866 --- /dev/null +++ b/src/spatialite/src/gaiageo/Ewkt.h @@ -0,0 +1,21 @@ +#define EWKT_NEWLINE 1 +#define EWKT_POINT 2 +#define EWKT_OPEN_BRACKET 3 +#define EWKT_CLOSE_BRACKET 4 +#define EWKT_POINT_M 5 +#define EWKT_NUM 6 +#define EWKT_COMMA 7 +#define EWKT_LINESTRING 8 +#define EWKT_LINESTRING_M 9 +#define EWKT_POLYGON 10 +#define EWKT_POLYGON_M 11 +#define EWKT_MULTIPOINT 12 +#define EWKT_MULTIPOINT_M 13 +#define EWKT_MULTILINESTRING 14 +#define EWKT_MULTILINESTRING_M 15 +#define EWKT_MULTIPOLYGON 16 +#define EWKT_MULTIPOLYGON_M 17 +#define EWKT_GEOMETRYCOLLECTION 18 +#define EWKT_GEOMETRYCOLLECTION_M 19 +#define EWKT_GEOMETRYCOLLECTION_Z 20 +#define EWKT_GEOMETRYCOLLECTION_ZM 21 diff --git a/src/spatialite/src/gaiageo/Gml.c b/src/spatialite/src/gaiageo/Gml.c new file mode 100644 index 0000000..9a3daa5 --- /dev/null +++ b/src/spatialite/src/gaiageo/Gml.c @@ -0,0 +1,1258 @@ +/* Driver template for the LEMON parser generator. +** The author disclaims copyright to this source code. +*/ +/* First off, code is included that follows the "include" declaration +** in the input grammar file. */ +#include + +/* Next is all token values, in a form suitable for use by makeheaders. +** This section will be null unless lemon is run with the -m switch. +*/ +/* +** These constants (all generated automatically by the parser generator) +** specify the various kinds of tokens (terminals) that the parser +** understands. +** +** Each symbol here is a terminal symbol in the grammar. +*/ +/* Make sure the INTERFACE macro is defined. +*/ +#ifndef INTERFACE +#define INTERFACE 1 +#endif +/* The next thing included is series of defines which control +** various aspects of the generated parser. +** YYCODETYPE is the data type used for storing terminal +** and nonterminal numbers. "unsigned char" is +** used if there are fewer than 250 terminals +** and nonterminals. "int" is used otherwise. +** YYNOCODE is a number of type YYCODETYPE which corresponds +** to no legal terminal or nonterminal number. This +** number is used to fill in empty slots of the hash +** table. +** YYFALLBACK If defined, this indicates that one or more tokens +** have fall-back values which should be used if the +** original value of the token will not parse. +** YYACTIONTYPE is the data type used for storing terminal +** and nonterminal numbers. "unsigned char" is +** used if there are fewer than 250 rules and +** states combined. "int" is used otherwise. +** ParseTOKENTYPE is the data type used for minor tokens given +** directly to the parser from the tokenizer. +** YYMINORTYPE is the data type used for all minor tokens. +** This is typically a union of many types, one of +** which is ParseTOKENTYPE. The entry in the union +** for base tokens is called "yy0". +** YYSTACKDEPTH is the maximum depth of the parser's stack. If +** zero the stack is dynamically sized using realloc() +** ParseARG_SDECL A static variable declaration for the %extra_argument +** ParseARG_PDECL A parameter declaration for the %extra_argument +** ParseARG_STORE Code to store %extra_argument into yypParser +** ParseARG_FETCH Code to extract %extra_argument from yypParser +** YYNSTATE the combined number of states. +** YYNRULE the number of rules in the grammar +** YYERRORSYMBOL is the code number of the error symbol. If not +** defined, then do no error processing. +*/ +#define YYCODETYPE unsigned char +#define YYNOCODE 28 +#define YYACTIONTYPE unsigned char +#define ParseTOKENTYPE void * +typedef union +{ + int yyinit; + ParseTOKENTYPE yy0; +} YYMINORTYPE; +#ifndef YYSTACKDEPTH +#define YYSTACKDEPTH 1000000 +#endif +#define ParseARG_SDECL struct gml_data *p_data ; +#define ParseARG_PDECL , struct gml_data *p_data +#define ParseARG_FETCH struct gml_data *p_data = yypParser->p_data +#define ParseARG_STORE yypParser->p_data = p_data +#define YYNSTATE 49 +#define YYNRULE 34 +#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) +#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) +#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) + +/* The yyzerominor constant is used to initialize instances of +** YYMINORTYPE objects to zero. */ +static const YYMINORTYPE yyzerominor = { 0 }; + +/* Define the yytestcase() macro to be a no-op if is not already defined +** otherwise. +** +** Applications can choose to define yytestcase() in the %include section +** to a macro that can assist in verifying code coverage. For production +** code the yytestcase() macro should be turned off. But it is useful +** for testing. +*/ +#ifndef yytestcase +#define yytestcase(X) +#endif + + +/* Next are the tables used to determine what action to take based on the +** current state and lookahead token. These tables are used to implement +** functions that take a state number and lookahead value and return an +** action integer. +** +** Suppose the action integer is N. Then the action is determined as +** follows +** +** 0 <= N < YYNSTATE Shift N. That is, push the lookahead +** token onto the stack and goto state N. +** +** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. +** +** N == YYNSTATE+YYNRULE A syntax error has occurred. +** +** N == YYNSTATE+YYNRULE+1 The parser accepts its input. +** +** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused +** slots in the yy_action[] table. +** +** The action table is constructed as a single large table named yy_action[]. +** Given state S and lookahead X, the action is computed as +** +** yy_action[ yy_shift_ofst[S] + X ] +** +** If the index value yy_shift_ofst[S]+X is out of range or if the value +** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] +** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table +** and that yy_default[S] should be used instead. +** +** The formula above is for computing the action when the lookahead is +** a terminal symbol. If the lookahead is a non-terminal (as occurs after +** a reduce action) then the yy_reduce_ofst[] array is used in place of +** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of +** YY_SHIFT_USE_DFLT. +** +** The following are the tables generated in this section: +** +** yy_action[] A single table containing all actions. +** yy_lookahead[] A table containing the lookahead for each entry in +** yy_action. Used to detect hash collisions. +** yy_shift_ofst[] For each state, the offset into yy_action for +** shifting terminals. +** yy_reduce_ofst[] For each state, the offset into yy_action for +** shifting non-terminals after a reduce. +** yy_default[] Default action for each state. +*/ +static const YYACTIONTYPE yy_action[] = { + /* 0 */ 20, 28, 29, 4, 48, 5, 3, 3, 5, 5, + /* 10 */ 42, 84, 1, 42, 42, 47, 46, 2, 10, 5, + /* 20 */ 21, 12, 32, 23, 42, 38, 22, 6, 49, 23, + /* 30 */ 13, 19, 14, 15, 35, 8, 8, 10, 25, 11, + /* 40 */ 18, 34, 33, 45, 37, 16, 40, 17, 41, 14, + /* 50 */ 9, 23, 43, 7, 45, 27, 30, 26, 31, 36, + /* 60 */ 39, 44, 24, +}; + +static const YYCODETYPE yy_lookahead[] = { + /* 0 */ 12, 13, 14, 15, 16, 17, 15, 15, 17, 17, + /* 10 */ 22, 10, 11, 22, 22, 24, 24, 15, 18, 17, + /* 20 */ 2, 3, 8, 5, 22, 25, 2, 3, 0, 5, + /* 30 */ 18, 19, 4, 20, 21, 20, 20, 18, 2, 3, + /* 40 */ 2, 26, 26, 5, 25, 20, 21, 20, 21, 4, + /* 50 */ 18, 5, 23, 20, 5, 1, 3, 23, 3, 7, + /* 60 */ 3, 3, 6, +}; + +#define YY_SHIFT_USE_DFLT (-1) +#define YY_SHIFT_MAX 26 +static const signed char yy_shift_ofst[] = { + /* 0 */ -1, 28, 45, 45, 45, 18, 14, 14, 14, 46, + /* 10 */ 46, 14, 14, 24, 38, 14, 14, 14, 49, 36, + /* 20 */ 54, 53, 55, 56, 52, 57, 58, +}; + +#define YY_REDUCE_USE_DFLT (-13) +#define YY_REDUCE_MAX 18 +static const signed char yy_reduce_ofst[] = { + /* 0 */ 1, -12, -9, -8, 2, 12, 13, 15, 16, 0, + /* 10 */ 19, 25, 27, 32, 29, 33, 33, 33, 34, +}; + +static const YYACTIONTYPE yy_default[] = { + /* 0 */ 50, 83, 72, 72, 54, 83, 60, 80, 80, 76, + /* 10 */ 76, 61, 59, 83, 83, 64, 66, 62, 83, 83, + /* 20 */ 83, 83, 83, 83, 83, 83, 83, 51, 52, 53, + /* 30 */ 56, 57, 79, 81, 82, 65, 75, 77, 78, 58, + /* 40 */ 67, 63, 68, 69, 70, 71, 73, 74, 55, +}; + +#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0])) + +/* The next table maps tokens into fallback tokens. If a construct +** like the following: +** +** %fallback ID X Y Z. +** +** appears in the grammar, then ID becomes a fallback token for X, Y, +** and Z. Whenever one of the tokens X, Y, or Z is input to the parser +** but it does not parse, the type of the token is changed to ID and +** the parse is retried before an error is thrown. +*/ +#ifdef YYFALLBACK +static const YYCODETYPE yyFallback[] = { +}; +#endif /* YYFALLBACK */ + +/* The following structure represents a single element of the +** parser's stack. Information stored includes: +** +** + The state number for the parser at this level of the stack. +** +** + The value of the token stored at this level of the stack. +** (In other words, the "major" token.) +** +** + The semantic value stored at this level of the stack. This is +** the information used by the action routines in the grammar. +** It is sometimes called the "minor" token. +*/ +struct yyStackEntry +{ + YYACTIONTYPE stateno; /* The state-number */ + YYCODETYPE major; /* The major token value. This is the code + ** number for the token at this stack level */ + YYMINORTYPE minor; /* The user-supplied minor token value. This + ** is the value of the token */ +}; +typedef struct yyStackEntry yyStackEntry; + +/* The state of the parser is completely contained in an instance of +** the following structure */ +struct yyParser +{ + int yyidx; /* Index of top element in stack */ +#ifdef YYTRACKMAXSTACKDEPTH + int yyidxMax; /* Maximum value of yyidx */ +#endif + int yyerrcnt; /* Shifts left before out of the error */ + ParseARG_SDECL /* A place to hold %extra_argument */ +#if YYSTACKDEPTH<=0 + int yystksz; /* Current side of the stack */ + yyStackEntry *yystack; /* The parser's stack */ +#else + yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ +#endif +}; +typedef struct yyParser yyParser; + +#ifndef NDEBUG +#include +static FILE *yyTraceFILE = 0; +static char *yyTracePrompt = 0; +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* +** Turn parser tracing on by giving a stream to which to write the trace +** and a prompt to preface each trace message. Tracing is turned off +** by making either argument NULL +** +** Inputs: +**
      +**
    • A FILE* to which trace output should be written. +** If NULL, then tracing is turned off. +**
    • A prefix string written at the beginning of every +** line of trace output. If NULL, then tracing is +** turned off. +**
    +** +** Outputs: +** None. +*/ +void +ParseTrace (FILE * TraceFILE, char *zTracePrompt) +{ + yyTraceFILE = TraceFILE; + yyTracePrompt = zTracePrompt; + if (yyTraceFILE == 0) + yyTracePrompt = 0; + else if (yyTracePrompt == 0) + yyTraceFILE = 0; +} +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* For tracing shifts, the names of all terminals and nonterminals +** are required. The following table supplies these names */ +static const char *const yyTokenName[] = { + "$", "GML_NEWLINE", "GML_END", "GML_CLOSE", + "GML_OPEN", "GML_KEYWORD", "GML_EQ", "GML_VALUE", + "GML_COORD", "error", "main", "in", + "state", "program", "gml_tree", "node", + "node_chain", "open_tag", "attr", "attributes", + "coord", "coord_chain", "close_tag", "keyword", + "extra_nodes", "extra_attr", "extra_coord", +}; +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* For tracing reduce actions, the names of all rules are required. +*/ +static const char *const yyRuleName[] = { + /* 0 */ "main ::= in", + /* 1 */ "in ::=", + /* 2 */ "in ::= in state GML_NEWLINE", + /* 3 */ "state ::= program", + /* 4 */ "program ::= gml_tree", + /* 5 */ "gml_tree ::= node", + /* 6 */ "gml_tree ::= node_chain", + /* 7 */ "node ::= open_tag GML_END GML_CLOSE", + /* 8 */ "node ::= open_tag attr GML_END GML_CLOSE", + /* 9 */ "node ::= open_tag attributes GML_END GML_CLOSE", + /* 10 */ "node ::= open_tag GML_CLOSE", + /* 11 */ "node ::= open_tag attr GML_CLOSE", + /* 12 */ "node ::= open_tag attributes GML_CLOSE", + /* 13 */ "node ::= open_tag GML_CLOSE coord", + /* 14 */ "node ::= open_tag GML_CLOSE coord_chain", + /* 15 */ "node ::= open_tag attr GML_CLOSE coord", + /* 16 */ "node ::= open_tag attr GML_CLOSE coord_chain", + /* 17 */ "node ::= open_tag attributes GML_CLOSE coord", + /* 18 */ "node ::= open_tag attributes GML_CLOSE coord_chain", + /* 19 */ "node ::= close_tag", + /* 20 */ "open_tag ::= GML_OPEN keyword", + /* 21 */ "close_tag ::= GML_OPEN GML_END keyword GML_CLOSE", + /* 22 */ "keyword ::= GML_KEYWORD", + /* 23 */ "extra_nodes ::=", + /* 24 */ "extra_nodes ::= node extra_nodes", + /* 25 */ "node_chain ::= node node extra_nodes", + /* 26 */ "attr ::= GML_KEYWORD GML_EQ GML_VALUE", + /* 27 */ "extra_attr ::=", + /* 28 */ "extra_attr ::= attr extra_attr", + /* 29 */ "attributes ::= attr attr extra_attr", + /* 30 */ "coord ::= GML_COORD", + /* 31 */ "extra_coord ::=", + /* 32 */ "extra_coord ::= coord extra_coord", + /* 33 */ "coord_chain ::= coord coord extra_coord", +}; +#endif /* NDEBUG */ + + +#if YYSTACKDEPTH<=0 +/* +** Try to increase the size of the parser stack. +*/ +static void +yyGrowStack (yyParser * p) +{ + int newSize; + yyStackEntry *pNew; + + newSize = p->yystksz * 2 + 100; + pNew = realloc (p->yystack, newSize * sizeof (pNew[0])); + if (pNew) + { + p->yystack = pNew; + p->yystksz = newSize; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sStack grows to %d entries!\n", + yyTracePrompt, p->yystksz); + } +#endif + } +} +#endif + +/* +** This function allocates a new parser. +** The only argument is a pointer to a function which works like +** malloc. +** +** Inputs: +** A pointer to the function used to allocate memory. +** +** Outputs: +** A pointer to a parser. This pointer is used in subsequent calls +** to Parse and ParseFree. +*/ +void * +ParseAlloc (void *(*mallocProc) (size_t)) +{ + yyParser *pParser; + pParser = (yyParser *) (*mallocProc) ((size_t) sizeof (yyParser)); + if (pParser) + { + pParser->yyidx = -1; +#ifdef YYTRACKMAXSTACKDEPTH + pParser->yyidxMax = 0; +#endif +#if YYSTACKDEPTH<=0 + pParser->yystack = NULL; + pParser->yystksz = 0; + yyGrowStack (pParser); +#endif + } + return pParser; +} + +/* The following function deletes the value associated with a +** symbol. The symbol can be either a terminal or nonterminal. +** "yymajor" is the symbol code, and "yypminor" is a pointer to +** the value. +*/ +static void +yy_destructor (yyParser * yypParser, /* The parser */ + YYCODETYPE yymajor, /* Type code for object to destroy */ + YYMINORTYPE * yypminor /* The object to be destroyed */ + ) +{ + switch (yymajor) + { + /* Here is inserted the actions which take place when a + ** terminal or non-terminal is destroyed. This can happen + ** when the symbol is popped from the stack during a + ** reduce or during error processing or when a parser is + ** being destroyed before it is finished parsing. + ** + ** Note: during a reduce, the only symbols destroyed are those + ** which appear on the RHS of the rule, but which are not used + ** inside the C code. + */ + default: + break; /* If no destructor action specified: do nothing */ + } +} + +/* +** Pop the parser's stack once. +** +** If there is a destructor routine associated with the token which +** is popped from the stack, then call it. +** +** Return the major token number for the symbol popped. +*/ +static int +yy_pop_parser_stack (yyParser * pParser) +{ + YYCODETYPE yymajor; + yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; + + if (pParser->yyidx < 0) + return 0; +#ifndef NDEBUG + if (yyTraceFILE && pParser->yyidx >= 0) + { + fprintf (yyTraceFILE, "%sPopping %s\n", + yyTracePrompt, yyTokenName[yytos->major]); + } +#endif + yymajor = yytos->major; + yy_destructor (pParser, yymajor, &yytos->minor); + pParser->yyidx--; + return yymajor; +} + +/* +** Deallocate and destroy a parser. Destructors are all called for +** all stack elements before shutting the parser down. +** +** Inputs: +**
      +**
    • A pointer to the parser. This should be a pointer +** obtained from ParseAlloc. +**
    • A pointer to a function used to reclaim memory obtained +** from malloc. +**
    +*/ +void +ParseFree (void *p, /* The parser to be deleted */ + void (*freeProc) (void *) /* Function used to reclaim memory */ + ) +{ + yyParser *pParser = (yyParser *) p; + if (pParser == 0) + return; + while (pParser->yyidx >= 0) + yy_pop_parser_stack (pParser); +#if YYSTACKDEPTH<=0 + free (pParser->yystack); +#endif + (*freeProc) ((void *) pParser); +} + +/* +** Return the peak depth of the stack for a parser. +*/ +#ifdef YYTRACKMAXSTACKDEPTH +int +ParseStackPeak (void *p) +{ + yyParser *pParser = (yyParser *) p; + return pParser->yyidxMax; +} +#endif + +/* +** Find the appropriate action for a parser given the terminal +** look-ahead token iLookAhead. +** +** If the look-ahead token is YYNOCODE, then check to see if the action is +** independent of the look-ahead. If it is, return the action, otherwise +** return YY_NO_ACTION. +*/ +static int +yy_find_shift_action (yyParser * pParser, /* The parser */ + YYCODETYPE iLookAhead /* The look-ahead token */ + ) +{ + int i; + int stateno = pParser->yystack[pParser->yyidx].stateno; + + if (stateno > YY_SHIFT_MAX + || (i = yy_shift_ofst[stateno]) == YY_SHIFT_USE_DFLT) + { + return yy_default[stateno]; + } + assert (iLookAhead != YYNOCODE); + i += iLookAhead; + if (i < 0 || i >= YY_SZ_ACTTAB || yy_lookahead[i] != iLookAhead) + { + if (iLookAhead > 0) + { +#ifdef YYFALLBACK + YYCODETYPE iFallback; /* Fallback token */ + if (iLookAhead < sizeof (yyFallback) / sizeof (yyFallback[0]) + && (iFallback = yyFallback[iLookAhead]) != 0) + { +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sFALLBACK %s => %s\n", + yyTracePrompt, yyTokenName[iLookAhead], + yyTokenName[iFallback]); + } +#endif + return yy_find_shift_action (pParser, iFallback); + } +#endif +#ifdef YYWILDCARD + { + int j = i - iLookAhead + YYWILDCARD; + if (j >= 0 && j < YY_SZ_ACTTAB + && yy_lookahead[j] == YYWILDCARD) + { +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sWILDCARD %s => %s\n", + yyTracePrompt, yyTokenName[iLookAhead], + yyTokenName[YYWILDCARD]); + } +#endif /* NDEBUG */ + return yy_action[j]; + } + } +#endif /* YYWILDCARD */ + } + return yy_default[stateno]; + } + else + { + return yy_action[i]; + } +} + +/* +** Find the appropriate action for a parser given the non-terminal +** look-ahead token iLookAhead. +** +** If the look-ahead token is YYNOCODE, then check to see if the action is +** independent of the look-ahead. If it is, return the action, otherwise +** return YY_NO_ACTION. +*/ +static int +yy_find_reduce_action (int stateno, /* Current state number */ + YYCODETYPE iLookAhead /* The look-ahead token */ + ) +{ + int i; +#ifdef YYERRORSYMBOL + if (stateno > YY_REDUCE_MAX) + { + return yy_default[stateno]; + } +#else + assert (stateno <= YY_REDUCE_MAX); +#endif + i = yy_reduce_ofst[stateno]; + assert (i != YY_REDUCE_USE_DFLT); + assert (iLookAhead != YYNOCODE); + i += iLookAhead; +#ifdef YYERRORSYMBOL + if (i < 0 || i >= YY_SZ_ACTTAB || yy_lookahead[i] != iLookAhead) + { + return yy_default[stateno]; + } +#else + assert (i >= 0 && i < YY_SZ_ACTTAB); + assert (yy_lookahead[i] == iLookAhead); +#endif + return yy_action[i]; +} + +/* +** The following routine is called if the stack overflows. +*/ +static void +yyStackOverflow (yyParser * yypParser, YYMINORTYPE * yypMinor) +{ + ParseARG_FETCH; + yypParser->yyidx--; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sStack Overflow!\n", yyTracePrompt); + } +#endif + while (yypParser->yyidx >= 0) + yy_pop_parser_stack (yypParser); + /* Here code is inserted which will execute if the parser + ** stack every overflows */ + + spatialite_e ("Giving up. Parser stack overflow\n"); + ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ +} + +/* +** Perform a shift action. +*/ +static void +yy_shift (yyParser * yypParser, /* The parser to be shifted */ + int yyNewState, /* The new state to shift in */ + int yyMajor, /* The major token to shift in */ + YYMINORTYPE * yypMinor /* Pointer to the minor token to shift in */ + ) +{ + yyStackEntry *yytos; + yypParser->yyidx++; +#ifdef YYTRACKMAXSTACKDEPTH + if (yypParser->yyidx > yypParser->yyidxMax) + { + yypParser->yyidxMax = yypParser->yyidx; + } +#endif +#if YYSTACKDEPTH>0 + if (yypParser->yyidx >= YYSTACKDEPTH) + { + yyStackOverflow (yypParser, yypMinor); + return; + } +#else + if (yypParser->yyidx >= yypParser->yystksz) + { + yyGrowStack (yypParser); + if (yypParser->yyidx >= yypParser->yystksz) + { + yyStackOverflow (yypParser, yypMinor); + return; + } + } +#endif + yytos = &yypParser->yystack[yypParser->yyidx]; + yytos->stateno = (YYACTIONTYPE) yyNewState; + yytos->major = (YYCODETYPE) yyMajor; + yytos->minor = *yypMinor; +#ifndef NDEBUG + if (yyTraceFILE && yypParser->yyidx > 0) + { + int i; + fprintf (yyTraceFILE, "%sShift %d\n", yyTracePrompt, yyNewState); + fprintf (yyTraceFILE, "%sStack:", yyTracePrompt); + for (i = 1; i <= yypParser->yyidx; i++) + fprintf (yyTraceFILE, " %s", + yyTokenName[yypParser->yystack[i].major]); + fprintf (yyTraceFILE, "\n"); + } +#endif +} + +/* The following table contains information about every rule that +** is used during the reduce. +*/ +static const struct +{ + YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ + unsigned char nrhs; /* Number of right-hand side symbols in the rule */ +} yyRuleInfo[] = +{ + { + 10, 1}, + { + 11, 0}, + { + 11, 3}, + { + 12, 1}, + { + 13, 1}, + { + 14, 1}, + { + 14, 1}, + { + 15, 3}, + { + 15, 4}, + { + 15, 4}, + { + 15, 2}, + { + 15, 3}, + { + 15, 3}, + { + 15, 3}, + { + 15, 3}, + { + 15, 4}, + { + 15, 4}, + { + 15, 4}, + { + 15, 4}, + { + 15, 1}, + { + 17, 2}, + { + 22, 4}, + { + 23, 1}, + { + 24, 0}, + { + 24, 2}, + { + 16, 3}, + { + 18, 3}, + { + 25, 0}, + { + 25, 2}, + { + 19, 3}, + { + 20, 1}, + { + 26, 0}, + { + 26, 2}, + { +21, 3},}; + +static void yy_accept (yyParser *); /* Forward Declaration */ + +/* +** Perform a reduce action and the shift that must immediately +** follow the reduce. +*/ +static void +yy_reduce (yyParser * yypParser, /* The parser */ + int yyruleno /* Number of the rule by which to reduce */ + ) +{ + int yygoto; /* The next state */ + int yyact; /* The next action */ + YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ + yyStackEntry *yymsp; /* The top of the parser's stack */ + int yysize; /* Amount to pop the stack */ + ParseARG_FETCH; + yymsp = &yypParser->yystack[yypParser->yyidx]; +#ifndef NDEBUG + if (yyTraceFILE && yyruleno >= 0 + && yyruleno < (int) (sizeof (yyRuleName) / sizeof (yyRuleName[0]))) + { + fprintf (yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt, + yyRuleName[yyruleno]); + } +#endif /* NDEBUG */ + + /* Silence complaints from purify about yygotominor being uninitialized + ** in some cases when it is copied into the stack after the following + ** switch. yygotominor is uninitialized when a rule reduces that does + ** not set the value of its left-hand side nonterminal. Leaving the + ** value of the nonterminal uninitialized is utterly harmless as long + ** as the value is never used. So really the only thing this code + ** accomplishes is to quieten purify. + ** + ** 2007-01-16: The wireshark project (www.wireshark.org) reports that + ** without this code, their parser segfaults. I'm not sure what there + ** parser is doing to make this happen. This is the second bug report + ** from wireshark this week. Clearly they are stressing Lemon in ways + ** that it has not been previously stressed... (SQLite ticket #2172) + */ + /*memset(&yygotominor, 0, sizeof(yygotominor)); */ + yygotominor = yyzerominor; + + + switch (yyruleno) + { + /* Beginning here are the reduction cases. A typical example + ** follows: + ** case 0: + ** #line + ** { ... } // User supplied code + ** #line + ** break; + */ + case 5: /* gml_tree ::= node */ + case 6: /* gml_tree ::= node_chain */ + yytestcase (yyruleno == 6); + { + p_data->result = yymsp[0].minor.yy0; + } + break; + case 7: /* node ::= open_tag GML_END GML_CLOSE */ + { + yygotominor.yy0 = + gml_createSelfClosedNode (p_data, + (void *) yymsp[-2].minor.yy0, NULL); + } + break; + case 8: /* node ::= open_tag attr GML_END GML_CLOSE */ + case 9: /* node ::= open_tag attributes GML_END GML_CLOSE */ + yytestcase (yyruleno == 9); + { + yygotominor.yy0 = + gml_createSelfClosedNode (p_data, + (void *) yymsp[-3].minor.yy0, + (void *) yymsp[-2].minor.yy0); + } + break; + case 10: /* node ::= open_tag GML_CLOSE */ + { + yygotominor.yy0 = + gml_createNode (p_data, (void *) yymsp[-1].minor.yy0, NULL, + NULL); + } + break; + case 11: /* node ::= open_tag attr GML_CLOSE */ + case 12: /* node ::= open_tag attributes GML_CLOSE */ + yytestcase (yyruleno == 12); + { + yygotominor.yy0 = + gml_createNode (p_data, (void *) yymsp[-2].minor.yy0, + (void *) yymsp[-1].minor.yy0, NULL); + } + break; + case 13: /* node ::= open_tag GML_CLOSE coord */ + case 14: /* node ::= open_tag GML_CLOSE coord_chain */ + yytestcase (yyruleno == 14); + { + yygotominor.yy0 = + gml_createNode (p_data, (void *) yymsp[-2].minor.yy0, NULL, + (void *) yymsp[0].minor.yy0); + } + break; + case 15: /* node ::= open_tag attr GML_CLOSE coord */ + case 16: /* node ::= open_tag attr GML_CLOSE coord_chain */ + yytestcase (yyruleno == 16); + case 17: /* node ::= open_tag attributes GML_CLOSE coord */ + yytestcase (yyruleno == 17); + case 18: /* node ::= open_tag attributes GML_CLOSE coord_chain */ + yytestcase (yyruleno == 18); + { + yygotominor.yy0 = + gml_createNode (p_data, (void *) yymsp[-3].minor.yy0, + (void *) yymsp[-2].minor.yy0, + (void *) yymsp[0].minor.yy0); + } + break; + case 19: /* node ::= close_tag */ + { + yygotominor.yy0 = + gml_closingNode (p_data, (void *) yymsp[0].minor.yy0); + } + break; + case 20: /* open_tag ::= GML_OPEN keyword */ + case 22: /* keyword ::= GML_KEYWORD */ + yytestcase (yyruleno == 22); + { + yygotominor.yy0 = yymsp[0].minor.yy0; + } + break; + case 21: /* close_tag ::= GML_OPEN GML_END keyword GML_CLOSE */ + { + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 23: /* extra_nodes ::= */ + case 27: /* extra_attr ::= */ + yytestcase (yyruleno == 27); + case 31: /* extra_coord ::= */ + yytestcase (yyruleno == 31); + { + yygotominor.yy0 = NULL; + } + break; + case 24: /* extra_nodes ::= node extra_nodes */ + { + ((gmlNodePtr) yymsp[-1].minor.yy0)->Next = + (gmlNodePtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 25: /* node_chain ::= node node extra_nodes */ + { + ((gmlNodePtr) yymsp[-1].minor.yy0)->Next = + (gmlNodePtr) yymsp[0].minor.yy0; + ((gmlNodePtr) yymsp[-2].minor.yy0)->Next = + (gmlNodePtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = yymsp[-2].minor.yy0; + } + break; + case 26: /* attr ::= GML_KEYWORD GML_EQ GML_VALUE */ + { + yygotominor.yy0 = + gml_attribute (p_data, (void *) yymsp[-2].minor.yy0, + (void *) yymsp[0].minor.yy0); + } + break; + case 28: /* extra_attr ::= attr extra_attr */ + { + ((gmlAttrPtr) yymsp[-1].minor.yy0)->Next = + (gmlAttrPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 29: /* attributes ::= attr attr extra_attr */ + { + ((gmlAttrPtr) yymsp[-1].minor.yy0)->Next = + (gmlAttrPtr) yymsp[0].minor.yy0; + ((gmlAttrPtr) yymsp[-2].minor.yy0)->Next = + (gmlAttrPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = yymsp[-2].minor.yy0; + } + break; + case 30: /* coord ::= GML_COORD */ + { + yygotominor.yy0 = gml_coord (p_data, (void *) yymsp[0].minor.yy0); + } + break; + case 32: /* extra_coord ::= coord extra_coord */ + { + ((gmlCoordPtr) yymsp[-1].minor.yy0)->Next = + (gmlCoordPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 33: /* coord_chain ::= coord coord extra_coord */ + { + ((gmlCoordPtr) yymsp[-1].minor.yy0)->Next = + (gmlCoordPtr) yymsp[0].minor.yy0; + ((gmlCoordPtr) yymsp[-2].minor.yy0)->Next = + (gmlCoordPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = yymsp[-2].minor.yy0; + } + break; + default: + /* (0) main ::= in */ yytestcase (yyruleno == 0); + /* (1) in ::= */ yytestcase (yyruleno == 1); + /* (2) in ::= in state GML_NEWLINE */ yytestcase (yyruleno == 2); + /* (3) state ::= program */ yytestcase (yyruleno == 3); + /* (4) program ::= gml_tree */ yytestcase (yyruleno == 4); + break; + }; + yygoto = yyRuleInfo[yyruleno].lhs; + yysize = yyRuleInfo[yyruleno].nrhs; + yypParser->yyidx -= yysize; + yyact = yy_find_reduce_action (yymsp[-yysize].stateno, (YYCODETYPE) yygoto); + if (yyact < YYNSTATE) + { +#ifdef NDEBUG + /* If we are not debugging and the reduce action popped at least + ** one element off the stack, then we can push the new element back + ** onto the stack here, and skip the stack overflow test in yy_shift(). + ** That gives a significant speed improvement. */ + if (yysize) + { + yypParser->yyidx++; + yymsp -= yysize - 1; + yymsp->stateno = (YYACTIONTYPE) yyact; + yymsp->major = (YYCODETYPE) yygoto; + yymsp->minor = yygotominor; + } + else +#endif + { + yy_shift (yypParser, yyact, yygoto, &yygotominor); + } + } + else + { + assert (yyact == YYNSTATE + YYNRULE + 1); + yy_accept (yypParser); + } +} + +/* +** The following code executes when the parse fails +*/ +#ifndef YYNOERRORRECOVERY +static void +yy_parse_failed (yyParser * yypParser /* The parser */ + ) +{ + ParseARG_FETCH; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sFail!\n", yyTracePrompt); + } +#endif + while (yypParser->yyidx >= 0) + yy_pop_parser_stack (yypParser); + /* Here code is inserted which will be executed whenever the + ** parser fails */ + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} +#endif /* YYNOERRORRECOVERY */ + +/* +** The following code executes when a syntax error first occurs. +*/ +static void +yy_syntax_error (yyParser * yypParser, /* The parser */ + int yymajor, /* The major type of the error token */ + YYMINORTYPE yyminor /* The minor type of the error token */ + ) +{ + ParseARG_FETCH; +#define TOKEN (yyminor.yy0) + +/* +** when the LEMON parser encounters an error +** then this global variable is set +*/ + p_data->gml_parse_error = 1; + p_data->result = NULL; + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} + +/* +** The following is executed when the parser accepts +*/ +static void +yy_accept (yyParser * yypParser /* The parser */ + ) +{ + ParseARG_FETCH; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sAccept!\n", yyTracePrompt); + } +#endif + while (yypParser->yyidx >= 0) + yy_pop_parser_stack (yypParser); + /* Here code is inserted which will be executed whenever the + ** parser accepts */ + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} + +/* The main parser program. +** The first argument is a pointer to a structure obtained from +** "ParseAlloc" which describes the current state of the parser. +** The second argument is the major token number. The third is +** the minor token. The fourth optional argument is whatever the +** user wants (and specified in the grammar) and is available for +** use by the action routines. +** +** Inputs: +**
      +**
    • A pointer to the parser (an opaque structure.) +**
    • The major token number. +**
    • The minor token number. +**
    • An option argument of a grammar-specified type. +**
    +** +** Outputs: +** None. +*/ +void +Parse (void *yyp, /* The parser */ + int yymajor, /* The major token code number */ + ParseTOKENTYPE yyminor /* The value for the token */ + ParseARG_PDECL /* Optional %extra_argument parameter */ + ) +{ + YYMINORTYPE yyminorunion; + int yyact; /* The parser action. */ + int yyendofinput; /* True if we are at the end of input */ +#ifdef YYERRORSYMBOL + int yyerrorhit = 0; /* True if yymajor has invoked an error */ +#endif + yyParser *yypParser; /* The parser */ + + /* (re)initialize the parser, if necessary */ + yypParser = (yyParser *) yyp; + if (yypParser->yyidx < 0) + { +#if YYSTACKDEPTH<=0 + if (yypParser->yystksz <= 0) + { + /*memset(&yyminorunion, 0, sizeof(yyminorunion)); */ + yyminorunion = yyzerominor; + yyStackOverflow (yypParser, &yyminorunion); + return; + } +#endif + yypParser->yyidx = 0; + yypParser->yyerrcnt = -1; + yypParser->yystack[0].stateno = 0; + yypParser->yystack[0].major = 0; + } + yyminorunion.yy0 = yyminor; + yyendofinput = (yymajor == 0); + ParseARG_STORE; + +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sInput %s\n", yyTracePrompt, + yyTokenName[yymajor]); + } +#endif + + do + { + yyact = yy_find_shift_action (yypParser, (YYCODETYPE) yymajor); + if (yyact < YYNSTATE) + { + assert (!yyendofinput); /* Impossible to shift the $ token */ + yy_shift (yypParser, yyact, yymajor, &yyminorunion); + yypParser->yyerrcnt--; + yymajor = YYNOCODE; + } + else if (yyact < YYNSTATE + YYNRULE) + { + yy_reduce (yypParser, yyact - YYNSTATE); + } + else + { + assert (yyact == YY_ERROR_ACTION); +#ifdef YYERRORSYMBOL + int yymx; +#endif +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sSyntax Error!\n", yyTracePrompt); + } +#endif +#ifdef YYERRORSYMBOL + /* A syntax error has occurred. + ** The response to an error depends upon whether or not the + ** grammar defines an error token "ERROR". + ** + ** This is what we do if the grammar does define ERROR: + ** + ** * Call the %syntax_error function. + ** + ** * Begin popping the stack until we enter a state where + ** it is legal to shift the error symbol, then shift + ** the error symbol. + ** + ** * Set the error count to three. + ** + ** * Begin accepting and shifting new tokens. No new error + ** processing will occur until three tokens have been + ** shifted successfully. + ** + */ + if (yypParser->yyerrcnt < 0) + { + yy_syntax_error (yypParser, yymajor, yyminorunion); + } + yymx = yypParser->yystack[yypParser->yyidx].major; + if (yymx == YYERRORSYMBOL || yyerrorhit) + { +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sDiscard input token %s\n", + yyTracePrompt, yyTokenName[yymajor]); + } +#endif + yy_destructor (yypParser, (YYCODETYPE) yymajor, + &yyminorunion); + yymajor = YYNOCODE; + } + else + { + while (yypParser->yyidx >= 0 && + yymx != YYERRORSYMBOL && + (yyact = + yy_find_reduce_action (yypParser->yystack + [yypParser->yyidx].stateno, + YYERRORSYMBOL)) >= + YYNSTATE) + { + yy_pop_parser_stack (yypParser); + } + if (yypParser->yyidx < 0 || yymajor == 0) + { + yy_destructor (yypParser, (YYCODETYPE) yymajor, + &yyminorunion); + yy_parse_failed (yypParser); + yymajor = YYNOCODE; + } + else if (yymx != YYERRORSYMBOL) + { + YYMINORTYPE u2; + u2.YYERRSYMDT = 0; + yy_shift (yypParser, yyact, YYERRORSYMBOL, &u2); + } + } + yypParser->yyerrcnt = 3; + yyerrorhit = 1; +#elif defined(YYNOERRORRECOVERY) + /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to + ** do any kind of error recovery. Instead, simply invoke the syntax + ** error routine and continue going as if nothing had happened. + ** + ** Applications can set this macro (for example inside %include) if + ** they intend to abandon the parse upon the first syntax error seen. + */ + yy_syntax_error (yypParser, yymajor, yyminorunion); + yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); + yymajor = YYNOCODE; + +#else /* YYERRORSYMBOL is not defined */ + /* This is what we do if the grammar does not define ERROR: + ** + ** * Report an error message, and throw away the input token. + ** + ** * If the input token is $, then fail the parse. + ** + ** As before, subsequent error messages are suppressed until + ** three input tokens have been successfully shifted. + */ + if (yypParser->yyerrcnt <= 0) + { + yy_syntax_error (yypParser, yymajor, yyminorunion); + } + yypParser->yyerrcnt = 3; + yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); + if (yyendofinput) + { + yy_parse_failed (yypParser); + } + yymajor = YYNOCODE; +#endif + } + } + while (yymajor != YYNOCODE && yypParser->yyidx >= 0); + return; +} diff --git a/src/spatialite/src/gaiageo/Gml.h b/src/spatialite/src/gaiageo/Gml.h new file mode 100644 index 0000000..549d0d8 --- /dev/null +++ b/src/spatialite/src/gaiageo/Gml.h @@ -0,0 +1,8 @@ +#define GML_NEWLINE 1 +#define GML_END 2 +#define GML_CLOSE 3 +#define GML_OPEN 4 +#define GML_KEYWORD 5 +#define GML_EQ 6 +#define GML_VALUE 7 +#define GML_COORD 8 diff --git a/src/spatialite/src/gaiageo/Kml.c b/src/spatialite/src/gaiageo/Kml.c new file mode 100644 index 0000000..fc425be --- /dev/null +++ b/src/spatialite/src/gaiageo/Kml.c @@ -0,0 +1,1258 @@ +/* Driver template for the LEMON parser generator. +** The author disclaims copyright to this source code. +*/ +/* First off, code is included that follows the "include" declaration +** in the input grammar file. */ +#include + +/* Next is all token values, in a form suitable for use by makeheaders. +** This section will be null unless lemon is run with the -m switch. +*/ +/* +** These constants (all generated automatically by the parser generator) +** specify the various kinds of tokens (terminals) that the parser +** understands. +** +** Each symbol here is a terminal symbol in the grammar. +*/ +/* Make sure the INTERFACE macro is defined. +*/ +#ifndef INTERFACE +#define INTERFACE 1 +#endif +/* The next thing included is series of defines which control +** various aspects of the generated parser. +** YYCODETYPE is the data type used for storing terminal +** and nonterminal numbers. "unsigned char" is +** used if there are fewer than 250 terminals +** and nonterminals. "int" is used otherwise. +** YYNOCODE is a number of type YYCODETYPE which corresponds +** to no legal terminal or nonterminal number. This +** number is used to fill in empty slots of the hash +** table. +** YYFALLBACK If defined, this indicates that one or more tokens +** have fall-back values which should be used if the +** original value of the token will not parse. +** YYACTIONTYPE is the data type used for storing terminal +** and nonterminal numbers. "unsigned char" is +** used if there are fewer than 250 rules and +** states combined. "int" is used otherwise. +** ParseTOKENTYPE is the data type used for minor tokens given +** directly to the parser from the tokenizer. +** YYMINORTYPE is the data type used for all minor tokens. +** This is typically a union of many types, one of +** which is ParseTOKENTYPE. The entry in the union +** for base tokens is called "yy0". +** YYSTACKDEPTH is the maximum depth of the parser's stack. If +** zero the stack is dynamically sized using realloc() +** ParseARG_SDECL A static variable declaration for the %extra_argument +** ParseARG_PDECL A parameter declaration for the %extra_argument +** ParseARG_STORE Code to store %extra_argument into yypParser +** ParseARG_FETCH Code to extract %extra_argument from yypParser +** YYNSTATE the combined number of states. +** YYNRULE the number of rules in the grammar +** YYERRORSYMBOL is the code number of the error symbol. If not +** defined, then do no error processing. +*/ +#define YYCODETYPE unsigned char +#define YYNOCODE 28 +#define YYACTIONTYPE unsigned char +#define ParseTOKENTYPE void * +typedef union +{ + int yyinit; + ParseTOKENTYPE yy0; +} YYMINORTYPE; +#ifndef YYSTACKDEPTH +#define YYSTACKDEPTH 1000000 +#endif +#define ParseARG_SDECL struct kml_data *p_data ; +#define ParseARG_PDECL , struct kml_data *p_data +#define ParseARG_FETCH struct kml_data *p_data = yypParser->p_data +#define ParseARG_STORE yypParser->p_data = p_data +#define YYNSTATE 49 +#define YYNRULE 34 +#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) +#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) +#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) + +/* The yyzerominor constant is used to initialize instances of +** YYMINORTYPE objects to zero. */ +static const YYMINORTYPE yyzerominor = { 0 }; + +/* Define the yytestcase() macro to be a no-op if is not already defined +** otherwise. +** +** Applications can choose to define yytestcase() in the %include section +** to a macro that can assist in verifying code coverage. For production +** code the yytestcase() macro should be turned off. But it is useful +** for testing. +*/ +#ifndef yytestcase +#define yytestcase(X) +#endif + + +/* Next are the tables used to determine what action to take based on the +** current state and lookahead token. These tables are used to implement +** functions that take a state number and lookahead value and return an +** action integer. +** +** Suppose the action integer is N. Then the action is determined as +** follows +** +** 0 <= N < YYNSTATE Shift N. That is, push the lookahead +** token onto the stack and goto state N. +** +** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. +** +** N == YYNSTATE+YYNRULE A syntax error has occurred. +** +** N == YYNSTATE+YYNRULE+1 The parser accepts its input. +** +** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused +** slots in the yy_action[] table. +** +** The action table is constructed as a single large table named yy_action[]. +** Given state S and lookahead X, the action is computed as +** +** yy_action[ yy_shift_ofst[S] + X ] +** +** If the index value yy_shift_ofst[S]+X is out of range or if the value +** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] +** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table +** and that yy_default[S] should be used instead. +** +** The formula above is for computing the action when the lookahead is +** a terminal symbol. If the lookahead is a non-terminal (as occurs after +** a reduce action) then the yy_reduce_ofst[] array is used in place of +** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of +** YY_SHIFT_USE_DFLT. +** +** The following are the tables generated in this section: +** +** yy_action[] A single table containing all actions. +** yy_lookahead[] A table containing the lookahead for each entry in +** yy_action. Used to detect hash collisions. +** yy_shift_ofst[] For each state, the offset into yy_action for +** shifting terminals. +** yy_reduce_ofst[] For each state, the offset into yy_action for +** shifting non-terminals after a reduce. +** yy_default[] Default action for each state. +*/ +static const YYACTIONTYPE yy_action[] = { + /* 0 */ 20, 28, 29, 4, 48, 5, 3, 3, 5, 5, + /* 10 */ 42, 84, 1, 42, 42, 47, 46, 2, 10, 5, + /* 20 */ 21, 12, 32, 23, 42, 38, 22, 6, 49, 23, + /* 30 */ 13, 19, 14, 15, 35, 8, 8, 10, 25, 11, + /* 40 */ 18, 34, 33, 45, 37, 16, 40, 17, 41, 14, + /* 50 */ 9, 23, 43, 7, 45, 27, 30, 26, 31, 36, + /* 60 */ 39, 44, 24, +}; + +static const YYCODETYPE yy_lookahead[] = { + /* 0 */ 12, 13, 14, 15, 16, 17, 15, 15, 17, 17, + /* 10 */ 22, 10, 11, 22, 22, 24, 24, 15, 18, 17, + /* 20 */ 2, 3, 8, 5, 22, 25, 2, 3, 0, 5, + /* 30 */ 18, 19, 4, 20, 21, 20, 20, 18, 2, 3, + /* 40 */ 2, 26, 26, 5, 25, 20, 21, 20, 21, 4, + /* 50 */ 18, 5, 23, 20, 5, 1, 3, 23, 3, 7, + /* 60 */ 3, 3, 6, +}; + +#define YY_SHIFT_USE_DFLT (-1) +#define YY_SHIFT_MAX 26 +static const signed char yy_shift_ofst[] = { + /* 0 */ -1, 28, 45, 45, 45, 18, 14, 14, 14, 46, + /* 10 */ 46, 14, 14, 24, 38, 14, 14, 14, 49, 36, + /* 20 */ 54, 53, 55, 56, 52, 57, 58, +}; + +#define YY_REDUCE_USE_DFLT (-13) +#define YY_REDUCE_MAX 18 +static const signed char yy_reduce_ofst[] = { + /* 0 */ 1, -12, -9, -8, 2, 12, 13, 15, 16, 0, + /* 10 */ 19, 25, 27, 32, 29, 33, 33, 33, 34, +}; + +static const YYACTIONTYPE yy_default[] = { + /* 0 */ 50, 83, 72, 72, 54, 83, 60, 80, 80, 76, + /* 10 */ 76, 61, 59, 83, 83, 64, 66, 62, 83, 83, + /* 20 */ 83, 83, 83, 83, 83, 83, 83, 51, 52, 53, + /* 30 */ 56, 57, 79, 81, 82, 65, 75, 77, 78, 58, + /* 40 */ 67, 63, 68, 69, 70, 71, 73, 74, 55, +}; + +#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0])) + +/* The next table maps tokens into fallback tokens. If a construct +** like the following: +** +** %fallback ID X Y Z. +** +** appears in the grammar, then ID becomes a fallback token for X, Y, +** and Z. Whenever one of the tokens X, Y, or Z is input to the parser +** but it does not parse, the type of the token is changed to ID and +** the parse is retried before an error is thrown. +*/ +#ifdef YYFALLBACK +static const YYCODETYPE yyFallback[] = { +}; +#endif /* YYFALLBACK */ + +/* The following structure represents a single element of the +** parser's stack. Information stored includes: +** +** + The state number for the parser at this level of the stack. +** +** + The value of the token stored at this level of the stack. +** (In other words, the "major" token.) +** +** + The semantic value stored at this level of the stack. This is +** the information used by the action routines in the grammar. +** It is sometimes called the "minor" token. +*/ +struct yyStackEntry +{ + YYACTIONTYPE stateno; /* The state-number */ + YYCODETYPE major; /* The major token value. This is the code + ** number for the token at this stack level */ + YYMINORTYPE minor; /* The user-supplied minor token value. This + ** is the value of the token */ +}; +typedef struct yyStackEntry yyStackEntry; + +/* The state of the parser is completely contained in an instance of +** the following structure */ +struct yyParser +{ + int yyidx; /* Index of top element in stack */ +#ifdef YYTRACKMAXSTACKDEPTH + int yyidxMax; /* Maximum value of yyidx */ +#endif + int yyerrcnt; /* Shifts left before out of the error */ + ParseARG_SDECL /* A place to hold %extra_argument */ +#if YYSTACKDEPTH<=0 + int yystksz; /* Current side of the stack */ + yyStackEntry *yystack; /* The parser's stack */ +#else + yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ +#endif +}; +typedef struct yyParser yyParser; + +#ifndef NDEBUG +#include +static FILE *yyTraceFILE = 0; +static char *yyTracePrompt = 0; +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* +** Turn parser tracing on by giving a stream to which to write the trace +** and a prompt to preface each trace message. Tracing is turned off +** by making either argument NULL +** +** Inputs: +**
      +**
    • A FILE* to which trace output should be written. +** If NULL, then tracing is turned off. +**
    • A prefix string written at the beginning of every +** line of trace output. If NULL, then tracing is +** turned off. +**
    +** +** Outputs: +** None. +*/ +void +ParseTrace (FILE * TraceFILE, char *zTracePrompt) +{ + yyTraceFILE = TraceFILE; + yyTracePrompt = zTracePrompt; + if (yyTraceFILE == 0) + yyTracePrompt = 0; + else if (yyTracePrompt == 0) + yyTraceFILE = 0; +} +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* For tracing shifts, the names of all terminals and nonterminals +** are required. The following table supplies these names */ +static const char *const yyTokenName[] = { + "$", "KML_NEWLINE", "KML_END", "KML_CLOSE", + "KML_OPEN", "KML_KEYWORD", "KML_EQ", "KML_VALUE", + "KML_COORD", "error", "main", "in", + "state", "program", "kml_tree", "node", + "node_chain", "open_tag", "attr", "attributes", + "coord", "coord_chain", "close_tag", "keyword", + "extra_nodes", "extra_attr", "extra_coord", +}; +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* For tracing reduce actions, the names of all rules are required. +*/ +static const char *const yyRuleName[] = { + /* 0 */ "main ::= in", + /* 1 */ "in ::=", + /* 2 */ "in ::= in state KML_NEWLINE", + /* 3 */ "state ::= program", + /* 4 */ "program ::= kml_tree", + /* 5 */ "kml_tree ::= node", + /* 6 */ "kml_tree ::= node_chain", + /* 7 */ "node ::= open_tag KML_END KML_CLOSE", + /* 8 */ "node ::= open_tag attr KML_END KML_CLOSE", + /* 9 */ "node ::= open_tag attributes KML_END KML_CLOSE", + /* 10 */ "node ::= open_tag KML_CLOSE", + /* 11 */ "node ::= open_tag attr KML_CLOSE", + /* 12 */ "node ::= open_tag attributes KML_CLOSE", + /* 13 */ "node ::= open_tag KML_CLOSE coord", + /* 14 */ "node ::= open_tag KML_CLOSE coord_chain", + /* 15 */ "node ::= open_tag attr KML_CLOSE coord", + /* 16 */ "node ::= open_tag attr KML_CLOSE coord_chain", + /* 17 */ "node ::= open_tag attributes KML_CLOSE coord", + /* 18 */ "node ::= open_tag attributes KML_CLOSE coord_chain", + /* 19 */ "node ::= close_tag", + /* 20 */ "open_tag ::= KML_OPEN keyword", + /* 21 */ "close_tag ::= KML_OPEN KML_END keyword KML_CLOSE", + /* 22 */ "keyword ::= KML_KEYWORD", + /* 23 */ "extra_nodes ::=", + /* 24 */ "extra_nodes ::= node extra_nodes", + /* 25 */ "node_chain ::= node node extra_nodes", + /* 26 */ "attr ::= KML_KEYWORD KML_EQ KML_VALUE", + /* 27 */ "extra_attr ::=", + /* 28 */ "extra_attr ::= attr extra_attr", + /* 29 */ "attributes ::= attr attr extra_attr", + /* 30 */ "coord ::= KML_COORD", + /* 31 */ "extra_coord ::=", + /* 32 */ "extra_coord ::= coord extra_coord", + /* 33 */ "coord_chain ::= coord coord extra_coord", +}; +#endif /* NDEBUG */ + + +#if YYSTACKDEPTH<=0 +/* +** Try to increase the size of the parser stack. +*/ +static void +yyGrowStack (yyParser * p) +{ + int newSize; + yyStackEntry *pNew; + + newSize = p->yystksz * 2 + 100; + pNew = realloc (p->yystack, newSize * sizeof (pNew[0])); + if (pNew) + { + p->yystack = pNew; + p->yystksz = newSize; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sStack grows to %d entries!\n", + yyTracePrompt, p->yystksz); + } +#endif + } +} +#endif + +/* +** This function allocates a new parser. +** The only argument is a pointer to a function which works like +** malloc. +** +** Inputs: +** A pointer to the function used to allocate memory. +** +** Outputs: +** A pointer to a parser. This pointer is used in subsequent calls +** to Parse and ParseFree. +*/ +void * +ParseAlloc (void *(*mallocProc) (size_t)) +{ + yyParser *pParser; + pParser = (yyParser *) (*mallocProc) ((size_t) sizeof (yyParser)); + if (pParser) + { + pParser->yyidx = -1; +#ifdef YYTRACKMAXSTACKDEPTH + pParser->yyidxMax = 0; +#endif +#if YYSTACKDEPTH<=0 + pParser->yystack = NULL; + pParser->yystksz = 0; + yyGrowStack (pParser); +#endif + } + return pParser; +} + +/* The following function deletes the value associated with a +** symbol. The symbol can be either a terminal or nonterminal. +** "yymajor" is the symbol code, and "yypminor" is a pointer to +** the value. +*/ +static void +yy_destructor (yyParser * yypParser, /* The parser */ + YYCODETYPE yymajor, /* Type code for object to destroy */ + YYMINORTYPE * yypminor /* The object to be destroyed */ + ) +{ + switch (yymajor) + { + /* Here is inserted the actions which take place when a + ** terminal or non-terminal is destroyed. This can happen + ** when the symbol is popped from the stack during a + ** reduce or during error processing or when a parser is + ** being destroyed before it is finished parsing. + ** + ** Note: during a reduce, the only symbols destroyed are those + ** which appear on the RHS of the rule, but which are not used + ** inside the C code. + */ + default: + break; /* If no destructor action specified: do nothing */ + } +} + +/* +** Pop the parser's stack once. +** +** If there is a destructor routine associated with the token which +** is popped from the stack, then call it. +** +** Return the major token number for the symbol popped. +*/ +static int +yy_pop_parser_stack (yyParser * pParser) +{ + YYCODETYPE yymajor; + yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; + + if (pParser->yyidx < 0) + return 0; +#ifndef NDEBUG + if (yyTraceFILE && pParser->yyidx >= 0) + { + fprintf (yyTraceFILE, "%sPopping %s\n", + yyTracePrompt, yyTokenName[yytos->major]); + } +#endif + yymajor = yytos->major; + yy_destructor (pParser, yymajor, &yytos->minor); + pParser->yyidx--; + return yymajor; +} + +/* +** Deallocate and destroy a parser. Destructors are all called for +** all stack elements before shutting the parser down. +** +** Inputs: +**
      +**
    • A pointer to the parser. This should be a pointer +** obtained from ParseAlloc. +**
    • A pointer to a function used to reclaim memory obtained +** from malloc. +**
    +*/ +void +ParseFree (void *p, /* The parser to be deleted */ + void (*freeProc) (void *) /* Function used to reclaim memory */ + ) +{ + yyParser *pParser = (yyParser *) p; + if (pParser == 0) + return; + while (pParser->yyidx >= 0) + yy_pop_parser_stack (pParser); +#if YYSTACKDEPTH<=0 + free (pParser->yystack); +#endif + (*freeProc) ((void *) pParser); +} + +/* +** Return the peak depth of the stack for a parser. +*/ +#ifdef YYTRACKMAXSTACKDEPTH +int +ParseStackPeak (void *p) +{ + yyParser *pParser = (yyParser *) p; + return pParser->yyidxMax; +} +#endif + +/* +** Find the appropriate action for a parser given the terminal +** look-ahead token iLookAhead. +** +** If the look-ahead token is YYNOCODE, then check to see if the action is +** independent of the look-ahead. If it is, return the action, otherwise +** return YY_NO_ACTION. +*/ +static int +yy_find_shift_action (yyParser * pParser, /* The parser */ + YYCODETYPE iLookAhead /* The look-ahead token */ + ) +{ + int i; + int stateno = pParser->yystack[pParser->yyidx].stateno; + + if (stateno > YY_SHIFT_MAX + || (i = yy_shift_ofst[stateno]) == YY_SHIFT_USE_DFLT) + { + return yy_default[stateno]; + } + assert (iLookAhead != YYNOCODE); + i += iLookAhead; + if (i < 0 || i >= YY_SZ_ACTTAB || yy_lookahead[i] != iLookAhead) + { + if (iLookAhead > 0) + { +#ifdef YYFALLBACK + YYCODETYPE iFallback; /* Fallback token */ + if (iLookAhead < sizeof (yyFallback) / sizeof (yyFallback[0]) + && (iFallback = yyFallback[iLookAhead]) != 0) + { +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sFALLBACK %s => %s\n", + yyTracePrompt, yyTokenName[iLookAhead], + yyTokenName[iFallback]); + } +#endif + return yy_find_shift_action (pParser, iFallback); + } +#endif +#ifdef YYWILDCARD + { + int j = i - iLookAhead + YYWILDCARD; + if (j >= 0 && j < YY_SZ_ACTTAB + && yy_lookahead[j] == YYWILDCARD) + { +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sWILDCARD %s => %s\n", + yyTracePrompt, yyTokenName[iLookAhead], + yyTokenName[YYWILDCARD]); + } +#endif /* NDEBUG */ + return yy_action[j]; + } + } +#endif /* YYWILDCARD */ + } + return yy_default[stateno]; + } + else + { + return yy_action[i]; + } +} + +/* +** Find the appropriate action for a parser given the non-terminal +** look-ahead token iLookAhead. +** +** If the look-ahead token is YYNOCODE, then check to see if the action is +** independent of the look-ahead. If it is, return the action, otherwise +** return YY_NO_ACTION. +*/ +static int +yy_find_reduce_action (int stateno, /* Current state number */ + YYCODETYPE iLookAhead /* The look-ahead token */ + ) +{ + int i; +#ifdef YYERRORSYMBOL + if (stateno > YY_REDUCE_MAX) + { + return yy_default[stateno]; + } +#else + assert (stateno <= YY_REDUCE_MAX); +#endif + i = yy_reduce_ofst[stateno]; + assert (i != YY_REDUCE_USE_DFLT); + assert (iLookAhead != YYNOCODE); + i += iLookAhead; +#ifdef YYERRORSYMBOL + if (i < 0 || i >= YY_SZ_ACTTAB || yy_lookahead[i] != iLookAhead) + { + return yy_default[stateno]; + } +#else + assert (i >= 0 && i < YY_SZ_ACTTAB); + assert (yy_lookahead[i] == iLookAhead); +#endif + return yy_action[i]; +} + +/* +** The following routine is called if the stack overflows. +*/ +static void +yyStackOverflow (yyParser * yypParser, YYMINORTYPE * yypMinor) +{ + ParseARG_FETCH; + yypParser->yyidx--; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sStack Overflow!\n", yyTracePrompt); + } +#endif + while (yypParser->yyidx >= 0) + yy_pop_parser_stack (yypParser); + /* Here code is inserted which will execute if the parser + ** stack every overflows */ + + spatialite_e ("Giving up. Parser stack overflow\n"); + ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ +} + +/* +** Perform a shift action. +*/ +static void +yy_shift (yyParser * yypParser, /* The parser to be shifted */ + int yyNewState, /* The new state to shift in */ + int yyMajor, /* The major token to shift in */ + YYMINORTYPE * yypMinor /* Pointer to the minor token to shift in */ + ) +{ + yyStackEntry *yytos; + yypParser->yyidx++; +#ifdef YYTRACKMAXSTACKDEPTH + if (yypParser->yyidx > yypParser->yyidxMax) + { + yypParser->yyidxMax = yypParser->yyidx; + } +#endif +#if YYSTACKDEPTH>0 + if (yypParser->yyidx >= YYSTACKDEPTH) + { + yyStackOverflow (yypParser, yypMinor); + return; + } +#else + if (yypParser->yyidx >= yypParser->yystksz) + { + yyGrowStack (yypParser); + if (yypParser->yyidx >= yypParser->yystksz) + { + yyStackOverflow (yypParser, yypMinor); + return; + } + } +#endif + yytos = &yypParser->yystack[yypParser->yyidx]; + yytos->stateno = (YYACTIONTYPE) yyNewState; + yytos->major = (YYCODETYPE) yyMajor; + yytos->minor = *yypMinor; +#ifndef NDEBUG + if (yyTraceFILE && yypParser->yyidx > 0) + { + int i; + fprintf (yyTraceFILE, "%sShift %d\n", yyTracePrompt, yyNewState); + fprintf (yyTraceFILE, "%sStack:", yyTracePrompt); + for (i = 1; i <= yypParser->yyidx; i++) + fprintf (yyTraceFILE, " %s", + yyTokenName[yypParser->yystack[i].major]); + fprintf (yyTraceFILE, "\n"); + } +#endif +} + +/* The following table contains information about every rule that +** is used during the reduce. +*/ +static const struct +{ + YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ + unsigned char nrhs; /* Number of right-hand side symbols in the rule */ +} yyRuleInfo[] = +{ + { + 10, 1}, + { + 11, 0}, + { + 11, 3}, + { + 12, 1}, + { + 13, 1}, + { + 14, 1}, + { + 14, 1}, + { + 15, 3}, + { + 15, 4}, + { + 15, 4}, + { + 15, 2}, + { + 15, 3}, + { + 15, 3}, + { + 15, 3}, + { + 15, 3}, + { + 15, 4}, + { + 15, 4}, + { + 15, 4}, + { + 15, 4}, + { + 15, 1}, + { + 17, 2}, + { + 22, 4}, + { + 23, 1}, + { + 24, 0}, + { + 24, 2}, + { + 16, 3}, + { + 18, 3}, + { + 25, 0}, + { + 25, 2}, + { + 19, 3}, + { + 20, 1}, + { + 26, 0}, + { + 26, 2}, + { +21, 3},}; + +static void yy_accept (yyParser *); /* Forward Declaration */ + +/* +** Perform a reduce action and the shift that must immediately +** follow the reduce. +*/ +static void +yy_reduce (yyParser * yypParser, /* The parser */ + int yyruleno /* Number of the rule by which to reduce */ + ) +{ + int yygoto; /* The next state */ + int yyact; /* The next action */ + YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ + yyStackEntry *yymsp; /* The top of the parser's stack */ + int yysize; /* Amount to pop the stack */ + ParseARG_FETCH; + yymsp = &yypParser->yystack[yypParser->yyidx]; +#ifndef NDEBUG + if (yyTraceFILE && yyruleno >= 0 + && yyruleno < (int) (sizeof (yyRuleName) / sizeof (yyRuleName[0]))) + { + fprintf (yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt, + yyRuleName[yyruleno]); + } +#endif /* NDEBUG */ + + /* Silence complaints from purify about yygotominor being uninitialized + ** in some cases when it is copied into the stack after the following + ** switch. yygotominor is uninitialized when a rule reduces that does + ** not set the value of its left-hand side nonterminal. Leaving the + ** value of the nonterminal uninitialized is utterly harmless as long + ** as the value is never used. So really the only thing this code + ** accomplishes is to quieten purify. + ** + ** 2007-01-16: The wireshark project (www.wireshark.org) reports that + ** without this code, their parser segfaults. I'm not sure what there + ** parser is doing to make this happen. This is the second bug report + ** from wireshark this week. Clearly they are stressing Lemon in ways + ** that it has not been previously stressed... (SQLite ticket #2172) + */ + /*memset(&yygotominor, 0, sizeof(yygotominor)); */ + yygotominor = yyzerominor; + + + switch (yyruleno) + { + /* Beginning here are the reduction cases. A typical example + ** follows: + ** case 0: + ** #line + ** { ... } // User supplied code + ** #line + ** break; + */ + case 5: /* kml_tree ::= node */ + case 6: /* kml_tree ::= node_chain */ + yytestcase (yyruleno == 6); + { + p_data->result = yymsp[0].minor.yy0; + } + break; + case 7: /* node ::= open_tag KML_END KML_CLOSE */ + { + yygotominor.yy0 = + kml_createSelfClosedNode (p_data, + (void *) yymsp[-2].minor.yy0, NULL); + } + break; + case 8: /* node ::= open_tag attr KML_END KML_CLOSE */ + case 9: /* node ::= open_tag attributes KML_END KML_CLOSE */ + yytestcase (yyruleno == 9); + { + yygotominor.yy0 = + kml_createSelfClosedNode (p_data, + (void *) yymsp[-3].minor.yy0, + (void *) yymsp[-2].minor.yy0); + } + break; + case 10: /* node ::= open_tag KML_CLOSE */ + { + yygotominor.yy0 = + kml_createNode (p_data, (void *) yymsp[-1].minor.yy0, NULL, + NULL); + } + break; + case 11: /* node ::= open_tag attr KML_CLOSE */ + case 12: /* node ::= open_tag attributes KML_CLOSE */ + yytestcase (yyruleno == 12); + { + yygotominor.yy0 = + kml_createNode (p_data, (void *) yymsp[-2].minor.yy0, + (void *) yymsp[-1].minor.yy0, NULL); + } + break; + case 13: /* node ::= open_tag KML_CLOSE coord */ + case 14: /* node ::= open_tag KML_CLOSE coord_chain */ + yytestcase (yyruleno == 14); + { + yygotominor.yy0 = + kml_createNode (p_data, (void *) yymsp[-2].minor.yy0, NULL, + (void *) yymsp[0].minor.yy0); + } + break; + case 15: /* node ::= open_tag attr KML_CLOSE coord */ + case 16: /* node ::= open_tag attr KML_CLOSE coord_chain */ + yytestcase (yyruleno == 16); + case 17: /* node ::= open_tag attributes KML_CLOSE coord */ + yytestcase (yyruleno == 17); + case 18: /* node ::= open_tag attributes KML_CLOSE coord_chain */ + yytestcase (yyruleno == 18); + { + yygotominor.yy0 = + kml_createNode (p_data, (void *) yymsp[-3].minor.yy0, + (void *) yymsp[-2].minor.yy0, + (void *) yymsp[0].minor.yy0); + } + break; + case 19: /* node ::= close_tag */ + { + yygotominor.yy0 = + kml_closingNode (p_data, (void *) yymsp[0].minor.yy0); + } + break; + case 20: /* open_tag ::= KML_OPEN keyword */ + case 22: /* keyword ::= KML_KEYWORD */ + yytestcase (yyruleno == 22); + { + yygotominor.yy0 = yymsp[0].minor.yy0; + } + break; + case 21: /* close_tag ::= KML_OPEN KML_END keyword KML_CLOSE */ + { + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 23: /* extra_nodes ::= */ + case 27: /* extra_attr ::= */ + yytestcase (yyruleno == 27); + case 31: /* extra_coord ::= */ + yytestcase (yyruleno == 31); + { + yygotominor.yy0 = NULL; + } + break; + case 24: /* extra_nodes ::= node extra_nodes */ + { + ((kmlNodePtr) yymsp[-1].minor.yy0)->Next = + (kmlNodePtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 25: /* node_chain ::= node node extra_nodes */ + { + ((kmlNodePtr) yymsp[-1].minor.yy0)->Next = + (kmlNodePtr) yymsp[0].minor.yy0; + ((kmlNodePtr) yymsp[-2].minor.yy0)->Next = + (kmlNodePtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = yymsp[-2].minor.yy0; + } + break; + case 26: /* attr ::= KML_KEYWORD KML_EQ KML_VALUE */ + { + yygotominor.yy0 = + kml_attribute (p_data, (void *) yymsp[-2].minor.yy0, + (void *) yymsp[0].minor.yy0); + } + break; + case 28: /* extra_attr ::= attr extra_attr */ + { + ((kmlAttrPtr) yymsp[-1].minor.yy0)->Next = + (kmlAttrPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 29: /* attributes ::= attr attr extra_attr */ + { + ((kmlAttrPtr) yymsp[-1].minor.yy0)->Next = + (kmlAttrPtr) yymsp[0].minor.yy0; + ((kmlAttrPtr) yymsp[-2].minor.yy0)->Next = + (kmlAttrPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = yymsp[-2].minor.yy0; + } + break; + case 30: /* coord ::= KML_COORD */ + { + yygotominor.yy0 = kml_coord (p_data, (void *) yymsp[0].minor.yy0); + } + break; + case 32: /* extra_coord ::= coord extra_coord */ + { + ((kmlCoordPtr) yymsp[-1].minor.yy0)->Next = + (kmlCoordPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 33: /* coord_chain ::= coord coord extra_coord */ + { + ((kmlCoordPtr) yymsp[-1].minor.yy0)->Next = + (kmlCoordPtr) yymsp[0].minor.yy0; + ((kmlCoordPtr) yymsp[-2].minor.yy0)->Next = + (kmlCoordPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = yymsp[-2].minor.yy0; + } + break; + default: + /* (0) main ::= in */ yytestcase (yyruleno == 0); + /* (1) in ::= */ yytestcase (yyruleno == 1); + /* (2) in ::= in state KML_NEWLINE */ yytestcase (yyruleno == 2); + /* (3) state ::= program */ yytestcase (yyruleno == 3); + /* (4) program ::= kml_tree */ yytestcase (yyruleno == 4); + break; + }; + yygoto = yyRuleInfo[yyruleno].lhs; + yysize = yyRuleInfo[yyruleno].nrhs; + yypParser->yyidx -= yysize; + yyact = yy_find_reduce_action (yymsp[-yysize].stateno, (YYCODETYPE) yygoto); + if (yyact < YYNSTATE) + { +#ifdef NDEBUG + /* If we are not debugging and the reduce action popped at least + ** one element off the stack, then we can push the new element back + ** onto the stack here, and skip the stack overflow test in yy_shift(). + ** That gives a significant speed improvement. */ + if (yysize) + { + yypParser->yyidx++; + yymsp -= yysize - 1; + yymsp->stateno = (YYACTIONTYPE) yyact; + yymsp->major = (YYCODETYPE) yygoto; + yymsp->minor = yygotominor; + } + else +#endif + { + yy_shift (yypParser, yyact, yygoto, &yygotominor); + } + } + else + { + assert (yyact == YYNSTATE + YYNRULE + 1); + yy_accept (yypParser); + } +} + +/* +** The following code executes when the parse fails +*/ +#ifndef YYNOERRORRECOVERY +static void +yy_parse_failed (yyParser * yypParser /* The parser */ + ) +{ + ParseARG_FETCH; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sFail!\n", yyTracePrompt); + } +#endif + while (yypParser->yyidx >= 0) + yy_pop_parser_stack (yypParser); + /* Here code is inserted which will be executed whenever the + ** parser fails */ + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} +#endif /* YYNOERRORRECOVERY */ + +/* +** The following code executes when a syntax error first occurs. +*/ +static void +yy_syntax_error (yyParser * yypParser, /* The parser */ + int yymajor, /* The major type of the error token */ + YYMINORTYPE yyminor /* The minor type of the error token */ + ) +{ + ParseARG_FETCH; +#define TOKEN (yyminor.yy0) + +/* +** when the LEMON parser encounters an error +** then this global variable is set +*/ + p_data->kml_parse_error = 1; + p_data->result = NULL; + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} + +/* +** The following is executed when the parser accepts +*/ +static void +yy_accept (yyParser * yypParser /* The parser */ + ) +{ + ParseARG_FETCH; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sAccept!\n", yyTracePrompt); + } +#endif + while (yypParser->yyidx >= 0) + yy_pop_parser_stack (yypParser); + /* Here code is inserted which will be executed whenever the + ** parser accepts */ + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} + +/* The main parser program. +** The first argument is a pointer to a structure obtained from +** "ParseAlloc" which describes the current state of the parser. +** The second argument is the major token number. The third is +** the minor token. The fourth optional argument is whatever the +** user wants (and specified in the grammar) and is available for +** use by the action routines. +** +** Inputs: +**
      +**
    • A pointer to the parser (an opaque structure.) +**
    • The major token number. +**
    • The minor token number. +**
    • An option argument of a grammar-specified type. +**
    +** +** Outputs: +** None. +*/ +void +Parse (void *yyp, /* The parser */ + int yymajor, /* The major token code number */ + ParseTOKENTYPE yyminor /* The value for the token */ + ParseARG_PDECL /* Optional %extra_argument parameter */ + ) +{ + YYMINORTYPE yyminorunion; + int yyact; /* The parser action. */ + int yyendofinput; /* True if we are at the end of input */ +#ifdef YYERRORSYMBOL + int yyerrorhit = 0; /* True if yymajor has invoked an error */ +#endif + yyParser *yypParser; /* The parser */ + + /* (re)initialize the parser, if necessary */ + yypParser = (yyParser *) yyp; + if (yypParser->yyidx < 0) + { +#if YYSTACKDEPTH<=0 + if (yypParser->yystksz <= 0) + { + /*memset(&yyminorunion, 0, sizeof(yyminorunion)); */ + yyminorunion = yyzerominor; + yyStackOverflow (yypParser, &yyminorunion); + return; + } +#endif + yypParser->yyidx = 0; + yypParser->yyerrcnt = -1; + yypParser->yystack[0].stateno = 0; + yypParser->yystack[0].major = 0; + } + yyminorunion.yy0 = yyminor; + yyendofinput = (yymajor == 0); + ParseARG_STORE; + +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sInput %s\n", yyTracePrompt, + yyTokenName[yymajor]); + } +#endif + + do + { + yyact = yy_find_shift_action (yypParser, (YYCODETYPE) yymajor); + if (yyact < YYNSTATE) + { + assert (!yyendofinput); /* Impossible to shift the $ token */ + yy_shift (yypParser, yyact, yymajor, &yyminorunion); + yypParser->yyerrcnt--; + yymajor = YYNOCODE; + } + else if (yyact < YYNSTATE + YYNRULE) + { + yy_reduce (yypParser, yyact - YYNSTATE); + } + else + { + assert (yyact == YY_ERROR_ACTION); +#ifdef YYERRORSYMBOL + int yymx; +#endif +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sSyntax Error!\n", yyTracePrompt); + } +#endif +#ifdef YYERRORSYMBOL + /* A syntax error has occurred. + ** The response to an error depends upon whether or not the + ** grammar defines an error token "ERROR". + ** + ** This is what we do if the grammar does define ERROR: + ** + ** * Call the %syntax_error function. + ** + ** * Begin popping the stack until we enter a state where + ** it is legal to shift the error symbol, then shift + ** the error symbol. + ** + ** * Set the error count to three. + ** + ** * Begin accepting and shifting new tokens. No new error + ** processing will occur until three tokens have been + ** shifted successfully. + ** + */ + if (yypParser->yyerrcnt < 0) + { + yy_syntax_error (yypParser, yymajor, yyminorunion); + } + yymx = yypParser->yystack[yypParser->yyidx].major; + if (yymx == YYERRORSYMBOL || yyerrorhit) + { +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sDiscard input token %s\n", + yyTracePrompt, yyTokenName[yymajor]); + } +#endif + yy_destructor (yypParser, (YYCODETYPE) yymajor, + &yyminorunion); + yymajor = YYNOCODE; + } + else + { + while (yypParser->yyidx >= 0 && + yymx != YYERRORSYMBOL && + (yyact = + yy_find_reduce_action (yypParser->yystack + [yypParser->yyidx].stateno, + YYERRORSYMBOL)) >= + YYNSTATE) + { + yy_pop_parser_stack (yypParser); + } + if (yypParser->yyidx < 0 || yymajor == 0) + { + yy_destructor (yypParser, (YYCODETYPE) yymajor, + &yyminorunion); + yy_parse_failed (yypParser); + yymajor = YYNOCODE; + } + else if (yymx != YYERRORSYMBOL) + { + YYMINORTYPE u2; + u2.YYERRSYMDT = 0; + yy_shift (yypParser, yyact, YYERRORSYMBOL, &u2); + } + } + yypParser->yyerrcnt = 3; + yyerrorhit = 1; +#elif defined(YYNOERRORRECOVERY) + /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to + ** do any kind of error recovery. Instead, simply invoke the syntax + ** error routine and continue going as if nothing had happened. + ** + ** Applications can set this macro (for example inside %include) if + ** they intend to abandon the parse upon the first syntax error seen. + */ + yy_syntax_error (yypParser, yymajor, yyminorunion); + yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); + yymajor = YYNOCODE; + +#else /* YYERRORSYMBOL is not defined */ + /* This is what we do if the grammar does not define ERROR: + ** + ** * Report an error message, and throw away the input token. + ** + ** * If the input token is $, then fail the parse. + ** + ** As before, subsequent error messages are suppressed until + ** three input tokens have been successfully shifted. + */ + if (yypParser->yyerrcnt <= 0) + { + yy_syntax_error (yypParser, yymajor, yyminorunion); + } + yypParser->yyerrcnt = 3; + yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); + if (yyendofinput) + { + yy_parse_failed (yypParser); + } + yymajor = YYNOCODE; +#endif + } + } + while (yymajor != YYNOCODE && yypParser->yyidx >= 0); + return; +} diff --git a/src/spatialite/src/gaiageo/Kml.h b/src/spatialite/src/gaiageo/Kml.h new file mode 100644 index 0000000..afd14fe --- /dev/null +++ b/src/spatialite/src/gaiageo/Kml.h @@ -0,0 +1,8 @@ +#define KML_NEWLINE 1 +#define KML_END 2 +#define KML_CLOSE 3 +#define KML_OPEN 4 +#define KML_KEYWORD 5 +#define KML_EQ 6 +#define KML_VALUE 7 +#define KML_COORD 8 diff --git a/src/spatialite/src/gaiageo/Makefile.am b/src/spatialite/src/gaiageo/Makefile.am new file mode 100644 index 0000000..7020fb7 --- /dev/null +++ b/src/spatialite/src/gaiageo/Makefile.am @@ -0,0 +1,47 @@ + +SUBDIRS = flex lemon + +AM_CPPFLAGS = @CFLAGS@ @GEOS_CFLAGS@ @LIBXML2_CFLAGS@ +AM_CPPFLAGS += -I$(top_srcdir)/src/headers + +noinst_LTLIBRARIES = libgaiageo.la gaiageo.la + +GAIAGEO_COMMON_SOURCES = gg_advanced.c \ + gg_endian.c \ + gg_geodesic.c \ + gg_geometries.c \ + gg_geoscvt.c \ + gg_relations.c \ + gg_relations_ext.c \ + gg_lwgeom.c \ + gg_extras.c \ + gg_shape.c \ + gg_transform.c \ + gg_wkb.c \ + gg_wkt.c \ + gg_vanuatu.c \ + gg_ewkt.c \ + gg_geoJSON.c \ + gg_kml.c \ + gg_gml.c \ + gg_voronoj.c \ + gg_xml.c + +libgaiageo_la_SOURCES = $(GAIAGEO_COMMON_SOURCES) + +gaiageo_la_SOURCES = $(GAIAGEO_COMMON_SOURCES) + +gaiageo_la_CPPFLAGS = @CFLAGS@ @GEOS_CFLAGS@ @LIBXML2_CFLAGS@ +gaiageo_la_CPPFLAGS += -I$(top_srcdir)/src/headers -I. +gaiageo_la_CPPFLAGS += -DLOADABLE_EXTENSION +gaiageo_la_LDFLAGS = -module +gaiageo_la_LIBTOOLFLAGS = --tag=disable-static + +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda + +EXTRA_DIST = Ewkt.h Ewkt.c lex.Ewkt.c \ + geoJSON.h geoJSON.c lex.GeoJson.c \ + Gml.h Gml.c lex.Gml.c \ + Kml.h Kml.c lex.Kml.c \ + vanuatuWkt.h vanuatuWkt.c lex.VanuatuWkt.c + diff --git a/src/spatialite/src/gaiageo/Makefile.in b/src/spatialite/src/gaiageo/Makefile.in new file mode 100644 index 0000000..5005e65 --- /dev/null +++ b/src/spatialite/src/gaiageo/Makefile.in @@ -0,0 +1,941 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/gaiageo +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +gaiageo_la_LIBADD = +am__objects_1 = gaiageo_la-gg_advanced.lo gaiageo_la-gg_endian.lo \ + gaiageo_la-gg_geodesic.lo gaiageo_la-gg_geometries.lo \ + gaiageo_la-gg_geoscvt.lo gaiageo_la-gg_relations.lo \ + gaiageo_la-gg_relations_ext.lo gaiageo_la-gg_lwgeom.lo \ + gaiageo_la-gg_extras.lo gaiageo_la-gg_shape.lo \ + gaiageo_la-gg_transform.lo gaiageo_la-gg_wkb.lo \ + gaiageo_la-gg_wkt.lo gaiageo_la-gg_vanuatu.lo \ + gaiageo_la-gg_ewkt.lo gaiageo_la-gg_geoJSON.lo \ + gaiageo_la-gg_kml.lo gaiageo_la-gg_gml.lo \ + gaiageo_la-gg_voronoj.lo gaiageo_la-gg_xml.lo +am_gaiageo_la_OBJECTS = $(am__objects_1) +gaiageo_la_OBJECTS = $(am_gaiageo_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +gaiageo_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(gaiageo_la_LDFLAGS) $(LDFLAGS) -o $@ +libgaiageo_la_LIBADD = +am__objects_2 = gg_advanced.lo gg_endian.lo gg_geodesic.lo \ + gg_geometries.lo gg_geoscvt.lo gg_relations.lo \ + gg_relations_ext.lo gg_lwgeom.lo gg_extras.lo gg_shape.lo \ + gg_transform.lo gg_wkb.lo gg_wkt.lo gg_vanuatu.lo gg_ewkt.lo \ + gg_geoJSON.lo gg_kml.lo gg_gml.lo gg_voronoj.lo gg_xml.lo +am_libgaiageo_la_OBJECTS = $(am__objects_2) +libgaiageo_la_OBJECTS = $(am_libgaiageo_la_OBJECTS) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(gaiageo_la_SOURCES) $(libgaiageo_la_SOURCES) +DIST_SOURCES = $(gaiageo_la_SOURCES) $(libgaiageo_la_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = flex lemon +AM_CPPFLAGS = @CFLAGS@ @GEOS_CFLAGS@ @LIBXML2_CFLAGS@ \ + -I$(top_srcdir)/src/headers +noinst_LTLIBRARIES = libgaiageo.la gaiageo.la +GAIAGEO_COMMON_SOURCES = gg_advanced.c \ + gg_endian.c \ + gg_geodesic.c \ + gg_geometries.c \ + gg_geoscvt.c \ + gg_relations.c \ + gg_relations_ext.c \ + gg_lwgeom.c \ + gg_extras.c \ + gg_shape.c \ + gg_transform.c \ + gg_wkb.c \ + gg_wkt.c \ + gg_vanuatu.c \ + gg_ewkt.c \ + gg_geoJSON.c \ + gg_kml.c \ + gg_gml.c \ + gg_voronoj.c \ + gg_xml.c + +libgaiageo_la_SOURCES = $(GAIAGEO_COMMON_SOURCES) +gaiageo_la_SOURCES = $(GAIAGEO_COMMON_SOURCES) +gaiageo_la_CPPFLAGS = @CFLAGS@ @GEOS_CFLAGS@ @LIBXML2_CFLAGS@ \ + -I$(top_srcdir)/src/headers -I. -DLOADABLE_EXTENSION +gaiageo_la_LDFLAGS = -module +gaiageo_la_LIBTOOLFLAGS = --tag=disable-static +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda +EXTRA_DIST = Ewkt.h Ewkt.c lex.Ewkt.c \ + geoJSON.h geoJSON.c lex.GeoJson.c \ + Gml.h Gml.c lex.Gml.c \ + Kml.h Kml.c lex.Kml.c \ + vanuatuWkt.h vanuatuWkt.c lex.VanuatuWkt.c + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/gaiageo/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/gaiageo/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +gaiageo.la: $(gaiageo_la_OBJECTS) $(gaiageo_la_DEPENDENCIES) $(EXTRA_gaiageo_la_DEPENDENCIES) + $(AM_V_CCLD)$(gaiageo_la_LINK) $(gaiageo_la_OBJECTS) $(gaiageo_la_LIBADD) $(LIBS) + +libgaiageo.la: $(libgaiageo_la_OBJECTS) $(libgaiageo_la_DEPENDENCIES) $(EXTRA_libgaiageo_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libgaiageo_la_OBJECTS) $(libgaiageo_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_advanced.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_endian.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_ewkt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_extras.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_geoJSON.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_geodesic.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_geometries.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_geoscvt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_gml.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_kml.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_lwgeom.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_relations.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_relations_ext.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_shape.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_transform.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_vanuatu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_voronoj.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_wkb.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_wkt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaiageo_la-gg_xml.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_advanced.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_endian.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_ewkt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_extras.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_geoJSON.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_geodesic.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_geometries.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_geoscvt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_gml.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_kml.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_lwgeom.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_relations.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_relations_ext.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_shape.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_transform.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_vanuatu.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_voronoj.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_wkb.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_wkt.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gg_xml.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +gaiageo_la-gg_advanced.lo: gg_advanced.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_advanced.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_advanced.Tpo -c -o gaiageo_la-gg_advanced.lo `test -f 'gg_advanced.c' || echo '$(srcdir)/'`gg_advanced.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_advanced.Tpo $(DEPDIR)/gaiageo_la-gg_advanced.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_advanced.c' object='gaiageo_la-gg_advanced.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_advanced.lo `test -f 'gg_advanced.c' || echo '$(srcdir)/'`gg_advanced.c + +gaiageo_la-gg_endian.lo: gg_endian.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_endian.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_endian.Tpo -c -o gaiageo_la-gg_endian.lo `test -f 'gg_endian.c' || echo '$(srcdir)/'`gg_endian.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_endian.Tpo $(DEPDIR)/gaiageo_la-gg_endian.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_endian.c' object='gaiageo_la-gg_endian.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_endian.lo `test -f 'gg_endian.c' || echo '$(srcdir)/'`gg_endian.c + +gaiageo_la-gg_geodesic.lo: gg_geodesic.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_geodesic.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_geodesic.Tpo -c -o gaiageo_la-gg_geodesic.lo `test -f 'gg_geodesic.c' || echo '$(srcdir)/'`gg_geodesic.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_geodesic.Tpo $(DEPDIR)/gaiageo_la-gg_geodesic.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_geodesic.c' object='gaiageo_la-gg_geodesic.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_geodesic.lo `test -f 'gg_geodesic.c' || echo '$(srcdir)/'`gg_geodesic.c + +gaiageo_la-gg_geometries.lo: gg_geometries.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_geometries.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_geometries.Tpo -c -o gaiageo_la-gg_geometries.lo `test -f 'gg_geometries.c' || echo '$(srcdir)/'`gg_geometries.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_geometries.Tpo $(DEPDIR)/gaiageo_la-gg_geometries.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_geometries.c' object='gaiageo_la-gg_geometries.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_geometries.lo `test -f 'gg_geometries.c' || echo '$(srcdir)/'`gg_geometries.c + +gaiageo_la-gg_geoscvt.lo: gg_geoscvt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_geoscvt.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_geoscvt.Tpo -c -o gaiageo_la-gg_geoscvt.lo `test -f 'gg_geoscvt.c' || echo '$(srcdir)/'`gg_geoscvt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_geoscvt.Tpo $(DEPDIR)/gaiageo_la-gg_geoscvt.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_geoscvt.c' object='gaiageo_la-gg_geoscvt.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_geoscvt.lo `test -f 'gg_geoscvt.c' || echo '$(srcdir)/'`gg_geoscvt.c + +gaiageo_la-gg_relations.lo: gg_relations.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_relations.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_relations.Tpo -c -o gaiageo_la-gg_relations.lo `test -f 'gg_relations.c' || echo '$(srcdir)/'`gg_relations.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_relations.Tpo $(DEPDIR)/gaiageo_la-gg_relations.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_relations.c' object='gaiageo_la-gg_relations.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_relations.lo `test -f 'gg_relations.c' || echo '$(srcdir)/'`gg_relations.c + +gaiageo_la-gg_relations_ext.lo: gg_relations_ext.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_relations_ext.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_relations_ext.Tpo -c -o gaiageo_la-gg_relations_ext.lo `test -f 'gg_relations_ext.c' || echo '$(srcdir)/'`gg_relations_ext.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_relations_ext.Tpo $(DEPDIR)/gaiageo_la-gg_relations_ext.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_relations_ext.c' object='gaiageo_la-gg_relations_ext.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_relations_ext.lo `test -f 'gg_relations_ext.c' || echo '$(srcdir)/'`gg_relations_ext.c + +gaiageo_la-gg_lwgeom.lo: gg_lwgeom.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_lwgeom.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_lwgeom.Tpo -c -o gaiageo_la-gg_lwgeom.lo `test -f 'gg_lwgeom.c' || echo '$(srcdir)/'`gg_lwgeom.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_lwgeom.Tpo $(DEPDIR)/gaiageo_la-gg_lwgeom.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_lwgeom.c' object='gaiageo_la-gg_lwgeom.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_lwgeom.lo `test -f 'gg_lwgeom.c' || echo '$(srcdir)/'`gg_lwgeom.c + +gaiageo_la-gg_extras.lo: gg_extras.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_extras.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_extras.Tpo -c -o gaiageo_la-gg_extras.lo `test -f 'gg_extras.c' || echo '$(srcdir)/'`gg_extras.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_extras.Tpo $(DEPDIR)/gaiageo_la-gg_extras.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_extras.c' object='gaiageo_la-gg_extras.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_extras.lo `test -f 'gg_extras.c' || echo '$(srcdir)/'`gg_extras.c + +gaiageo_la-gg_shape.lo: gg_shape.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_shape.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_shape.Tpo -c -o gaiageo_la-gg_shape.lo `test -f 'gg_shape.c' || echo '$(srcdir)/'`gg_shape.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_shape.Tpo $(DEPDIR)/gaiageo_la-gg_shape.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_shape.c' object='gaiageo_la-gg_shape.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_shape.lo `test -f 'gg_shape.c' || echo '$(srcdir)/'`gg_shape.c + +gaiageo_la-gg_transform.lo: gg_transform.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_transform.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_transform.Tpo -c -o gaiageo_la-gg_transform.lo `test -f 'gg_transform.c' || echo '$(srcdir)/'`gg_transform.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_transform.Tpo $(DEPDIR)/gaiageo_la-gg_transform.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_transform.c' object='gaiageo_la-gg_transform.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_transform.lo `test -f 'gg_transform.c' || echo '$(srcdir)/'`gg_transform.c + +gaiageo_la-gg_wkb.lo: gg_wkb.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_wkb.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_wkb.Tpo -c -o gaiageo_la-gg_wkb.lo `test -f 'gg_wkb.c' || echo '$(srcdir)/'`gg_wkb.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_wkb.Tpo $(DEPDIR)/gaiageo_la-gg_wkb.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_wkb.c' object='gaiageo_la-gg_wkb.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_wkb.lo `test -f 'gg_wkb.c' || echo '$(srcdir)/'`gg_wkb.c + +gaiageo_la-gg_wkt.lo: gg_wkt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_wkt.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_wkt.Tpo -c -o gaiageo_la-gg_wkt.lo `test -f 'gg_wkt.c' || echo '$(srcdir)/'`gg_wkt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_wkt.Tpo $(DEPDIR)/gaiageo_la-gg_wkt.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_wkt.c' object='gaiageo_la-gg_wkt.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_wkt.lo `test -f 'gg_wkt.c' || echo '$(srcdir)/'`gg_wkt.c + +gaiageo_la-gg_vanuatu.lo: gg_vanuatu.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_vanuatu.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_vanuatu.Tpo -c -o gaiageo_la-gg_vanuatu.lo `test -f 'gg_vanuatu.c' || echo '$(srcdir)/'`gg_vanuatu.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_vanuatu.Tpo $(DEPDIR)/gaiageo_la-gg_vanuatu.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_vanuatu.c' object='gaiageo_la-gg_vanuatu.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_vanuatu.lo `test -f 'gg_vanuatu.c' || echo '$(srcdir)/'`gg_vanuatu.c + +gaiageo_la-gg_ewkt.lo: gg_ewkt.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_ewkt.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_ewkt.Tpo -c -o gaiageo_la-gg_ewkt.lo `test -f 'gg_ewkt.c' || echo '$(srcdir)/'`gg_ewkt.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_ewkt.Tpo $(DEPDIR)/gaiageo_la-gg_ewkt.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_ewkt.c' object='gaiageo_la-gg_ewkt.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_ewkt.lo `test -f 'gg_ewkt.c' || echo '$(srcdir)/'`gg_ewkt.c + +gaiageo_la-gg_geoJSON.lo: gg_geoJSON.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_geoJSON.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_geoJSON.Tpo -c -o gaiageo_la-gg_geoJSON.lo `test -f 'gg_geoJSON.c' || echo '$(srcdir)/'`gg_geoJSON.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_geoJSON.Tpo $(DEPDIR)/gaiageo_la-gg_geoJSON.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_geoJSON.c' object='gaiageo_la-gg_geoJSON.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_geoJSON.lo `test -f 'gg_geoJSON.c' || echo '$(srcdir)/'`gg_geoJSON.c + +gaiageo_la-gg_kml.lo: gg_kml.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_kml.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_kml.Tpo -c -o gaiageo_la-gg_kml.lo `test -f 'gg_kml.c' || echo '$(srcdir)/'`gg_kml.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_kml.Tpo $(DEPDIR)/gaiageo_la-gg_kml.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_kml.c' object='gaiageo_la-gg_kml.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_kml.lo `test -f 'gg_kml.c' || echo '$(srcdir)/'`gg_kml.c + +gaiageo_la-gg_gml.lo: gg_gml.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_gml.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_gml.Tpo -c -o gaiageo_la-gg_gml.lo `test -f 'gg_gml.c' || echo '$(srcdir)/'`gg_gml.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_gml.Tpo $(DEPDIR)/gaiageo_la-gg_gml.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_gml.c' object='gaiageo_la-gg_gml.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_gml.lo `test -f 'gg_gml.c' || echo '$(srcdir)/'`gg_gml.c + +gaiageo_la-gg_voronoj.lo: gg_voronoj.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_voronoj.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_voronoj.Tpo -c -o gaiageo_la-gg_voronoj.lo `test -f 'gg_voronoj.c' || echo '$(srcdir)/'`gg_voronoj.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_voronoj.Tpo $(DEPDIR)/gaiageo_la-gg_voronoj.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_voronoj.c' object='gaiageo_la-gg_voronoj.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_voronoj.lo `test -f 'gg_voronoj.c' || echo '$(srcdir)/'`gg_voronoj.c + +gaiageo_la-gg_xml.lo: gg_xml.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT gaiageo_la-gg_xml.lo -MD -MP -MF $(DEPDIR)/gaiageo_la-gg_xml.Tpo -c -o gaiageo_la-gg_xml.lo `test -f 'gg_xml.c' || echo '$(srcdir)/'`gg_xml.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/gaiageo_la-gg_xml.Tpo $(DEPDIR)/gaiageo_la-gg_xml.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gg_xml.c' object='gaiageo_la-gg_xml.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(gaiageo_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(gaiageo_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o gaiageo_la-gg_xml.lo `test -f 'gg_xml.c' || echo '$(srcdir)/'`gg_xml.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LTLIBRARIES) +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/gaiageo/flex/Makefile.am b/src/spatialite/src/gaiageo/flex/Makefile.am new file mode 100644 index 0000000..cb58ef8 --- /dev/null +++ b/src/spatialite/src/gaiageo/flex/Makefile.am @@ -0,0 +1,4 @@ + +EXTRA_DIST = ewktLexer.l geoJsonLexer.l gmlLexer.l \ + kmlLexer.l vanuatuLexer.l ReadMe.txt + diff --git a/src/spatialite/src/gaiageo/flex/Makefile.in b/src/spatialite/src/gaiageo/flex/Makefile.in new file mode 100644 index 0000000..77119d6 --- /dev/null +++ b/src/spatialite/src/gaiageo/flex/Makefile.in @@ -0,0 +1,439 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/gaiageo/flex +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = ewktLexer.l geoJsonLexer.l gmlLexer.l \ + kmlLexer.l vanuatuLexer.l ReadMe.txt + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/gaiageo/flex/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/gaiageo/flex/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/gaiageo/flex/ReadMe.txt b/src/spatialite/src/gaiageo/flex/ReadMe.txt new file mode 100644 index 0000000..f601aa6 --- /dev/null +++ b/src/spatialite/src/gaiageo/flex/ReadMe.txt @@ -0,0 +1,116 @@ +The Vanuatu WKT lexer: +====================== +1) in order to make any change to the lexer +you have to edit first the definitions file +vanuatuLexer.l + +2) then run: +flex -L vanuatuLexer.l + +3) a source file named "lex.VanuatuWkt.c" will be +generated during the above step. + +3.1) IMPORTANT NOTICE: carefully check the generated *.c +code; you should manually replace any occurrence of: +fprintf(stderr, ..... +with: +spatialite_e(..... + +3.2) now you should copy this file into the parent dir: +cp lex.VanuatuWkt.c .. + + + + +The EWKT lexer: +================ +1) in order to make any change to the lexer +you have to edit first the definitions file +ewktLexer.l + +2) then run: +flex -L ewktLexer.l + +3) a source file named "lex.Ewkt.c" will be +generated during the above step. + +3.1) IMPORTANT NOTICE: carefully check the generated *.c +code; you should manually replace any occurrence of: +fprintf(stderr, ..... +with: +spatialite_e(..... + +3.2) now you should copy this file into the parent dir: +cp lex.Ewkt.c .. + + + + +The GeoJSON lexer: +================ +1) in order to make any change to the lexer +you have to edit first the definitions file +geoJsonLexer.l + +2) then run: +flex -L geoJsonLexer.l + +3) a source file named "lex.GeoJson.c" will be +generated during the above step. + +3.1) IMPORTANT NOTICE: carefully check the generated *.c +code; you should manually replace any occurrence of: +fprintf(stderr, ..... +with: +spatialite_e(..... + +3.2) now you should copy this file into the parent dir: +cp lex.geoJsonLexer.c .. + + + + +The KML lexer: +================ +1) in order to make any change to the lexer +you have to edit first the definitions file +kmlLexer.l + +2) then run: +flex -L kmlLexer.l + +3) a source file named "lex.Kml.c" will be +generated during the above step. + +3.1) IMPORTANT NOTICE: carefully check the generated *.c +code; you should manually replace any occurrence of: +fprintf(stderr, ..... +with: +spatialite_e(..... + +3.2) now you should copy this file into the parent dir: +cp lex.Kml.c .. + + + + +The GML lexer: +================ +1) in order to make any change to the lexer +you have to edit first the definitions file +gmlLexer.l + +2) then run: +flex -L gmlLexer.l + +3) a source file named "lex.Gml.c" will be +generated during the above step. + +3.1) IMPORTANT NOTICE: carefully check the generated *.c +code; you should manually replace any occurrence of: +fprintf(stderr, ..... +with: +spatialite_e(..... + +3.2) now you should copy this file into the parent dir: +cp lex.Gml.c .. diff --git a/src/spatialite/src/gaiageo/flex/ewktLexer.l b/src/spatialite/src/gaiageo/flex/ewktLexer.l new file mode 100644 index 0000000..2d3e45d --- /dev/null +++ b/src/spatialite/src/gaiageo/flex/ewktLexer.l @@ -0,0 +1,89 @@ +/* + EwktLexer.l -- EWKT parser - FLEX config + + version 2.4, 2011 May 14 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +%option prefix="Ewkt" +%option reentrant +%option extra-type="struct ewkt_data *" +%option nounput +%option noinput + +/** +* The main string-token matcher. +* The lower case part is probably not needed. We should really be converting +* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. +* What Flex will do is, For the input string, beginning from the front, Flex +* will try to match with any of the defined tokens from below. Flex will +* then match the string of longest length. Suppose the string is: POINTM, +* Flex would match both POINT and POINTM, but since POINTM is the longer +* of the two tokens, FLEX will match POINTM. +*/ +%% +-?[0-9]+|-?[0-9]+"."[0-9]*|"+"?[0-9]+|"+"?[0-9]+"."[0-9]* { Ewktget_extra(yyscanner)->ewkt_col += (int) strlen(yytext); Ewktget_extra(yyscanner)->EwktLval.dval = atof(yytext); return EWKT_NUM; } +"," { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_COMMA; } +"(" { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_OPEN_BRACKET; } +")" { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_CLOSE_BRACKET; } +(?i:"point") { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_POINT; } +(?i:"pointm") { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_POINT_M; } +(?i:"linestring") { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_LINESTRING; } +(?i:"linestringm") { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_LINESTRING_M; } +(?i:"polygon") { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_POLYGON; } +(?i:"polygonm") { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_POLYGON_M; } +(?i:"multipoint") { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_MULTIPOINT; } +(?i:"multipointm") { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_MULTIPOINT_M; } +(?i:"multilinestring") { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_MULTILINESTRING; } +(?i:"multilinestringm") { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_MULTILINESTRING_M; } +(?i:"multipolygon") { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_MULTIPOLYGON; } +(?i:"multipolygonm") { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_MULTIPOLYGON_M; } +(?i:"geometrycollection") { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_GEOMETRYCOLLECTION; } +(?i:"geometrycollectionm") { Ewktget_extra(yyscanner)->EwktLval.dval = 0; return EWKT_GEOMETRYCOLLECTION_M; } + +[ \t] { Ewktget_extra(yyscanner)->ewkt_col += (int) strlen(yytext); } /* ignore but count white space */ + +\n { Ewktget_extra(yyscanner)->ewkt_col = 0; Ewktget_extra(yyscanner)->ewkt_line++; } + +. { Ewktget_extra(yyscanner)->ewkt_col += (int) strlen(yytext); return -1; } +%% + +int yywrap(yyscan_t yyscanner ) +{ + return 1; +} diff --git a/src/spatialite/src/gaiageo/flex/geoJsonLexer.l b/src/spatialite/src/gaiageo/flex/geoJsonLexer.l new file mode 100644 index 0000000..27fb569 --- /dev/null +++ b/src/spatialite/src/gaiageo/flex/geoJsonLexer.l @@ -0,0 +1,94 @@ +/* + geoJsonLexer.l -- GeoJSON parser - FLEX config + + version 2.4, 2011 May 16 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +%option prefix="GeoJson" +%option reentrant +%option extra-type="struct geoJson_data *" +%option nounput +%option noinput + +/** +* The main string-token matcher. +* The lower case part is probably not needed. We should really be converting +* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. +* What Flex will do is, For the input string, beginning from the front, Flex +* will try to match with any of the defined tokens from below. Flex will +* then match the string of longest length. Suppose the string is: POINTM, +* Flex would match both POINT and POINTM, but since POINTM is the longer +* of the two tokens, FLEX will match POINTM. +*/ +%% +-?[0-9]+|-?[0-9]+"."[0-9]*|"+"?[0-9]+|"+"?[0-9]+"."[0-9]* { GeoJsonget_extra(yyscanner)->geoJson_col += (int) strlen(yytext); GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = atof(yytext); return GEOJSON_NUM; } +-?"\""EPSG:-?[0-9]+"\"" { GeoJsonget_extra(yyscanner)->geoJson_col += (int) strlen(yytext); GeoJsonget_extra(yyscanner)->GeoJsonLval.ival = atoi(yytext+6); return GEOJSON_SHORT_SRID; } +-?"\""urn:ogc:def:crs:EPSG:-?[0-9]+"\"" { GeoJsonget_extra(yyscanner)->geoJson_col += (int) strlen(yytext); GeoJsonget_extra(yyscanner)->GeoJsonLval.ival = atoi(yytext+22); return GEOJSON_LONG_SRID; } +"," { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_COMMA; } +":" { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_COLON; } +"{" { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_OPEN_BRACE; } +"}" { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_CLOSE_BRACE; } +"[" { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_OPEN_BRACKET; } +"]" { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_CLOSE_BRACKET; } +(?-i:"\"type\"") { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_TYPE; } +(?-i:"\"coordinates\"") { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_COORDS; } +(?-i:"\"geometries\"") { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_GEOMS; } +(?-i:"\"bbox\"") { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_BBOX; } +(?-i:"\"name\"") { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_NAME; } +(?-i:"\"properties\"") { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_PROPS; } +(?-i:"\"crs\"") { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_CRS; } +(?-i:"\"Point\"") { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_POINT; } +(?-i:"\"LineString\"") { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_LINESTRING; } +(?-i:"\"Polygon\"") { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_POLYGON; } +(?-i:"\"MultiPoint\"") { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_MULTIPOINT; } +(?-i:"\"MultiLineString\"") { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_MULTILINESTRING; } +(?-i:"\"MultiPolygon\"") { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_MULTIPOLYGON; } +(?-i:"\"GeometryCollection\"") { GeoJsonget_extra(yyscanner)->GeoJsonLval.dval = 0; return GEOJSON_GEOMETRYCOLLECTION; } + +[ \t] { GeoJsonget_extra(yyscanner)->geoJson_col += (int) strlen(yytext); } /* ignore but count white space */ + +\n { GeoJsonget_extra(yyscanner)->geoJson_col = 0; GeoJsonget_extra(yyscanner)->geoJson_line++; } + +. { GeoJsonget_extra(yyscanner)->geoJson_col += (int) strlen(yytext); return -1; } +%% + +int yywrap(yyscan_t yyscanner ) +{ + return 1; +} diff --git a/src/spatialite/src/gaiageo/flex/gmlLexer.l b/src/spatialite/src/gaiageo/flex/gmlLexer.l new file mode 100644 index 0000000..6609f60 --- /dev/null +++ b/src/spatialite/src/gaiageo/flex/gmlLexer.l @@ -0,0 +1,78 @@ +/* + gmlLexer.l -- GML parser - FLEX config + + version 2.4, 2011 June 3 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +%option prefix="Gml" +%option reentrant +%option extra-type="struct gml_data *" +%option noinput +%option nounput + +/** +* The main string-token matcher. +* The lower case part is probably not needed. We should really be converting +* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. +* What Flex will do is, For the input string, beginning from the front, Flex +* will try to match with any of the defined tokens from below. Flex will +* then match the string of longest length. Suppose the string is: POINTM, +* Flex would match both POINT and POINTM, but since POINTM is the longer +* of the two tokens, FLEX will match POINTM. +*/ +%% +"/" { gml_freeString(&(Gmlget_extra(yyscanner)->GmlLval.pval)); return GML_END; } +"=" { gml_freeString(&(Gmlget_extra(yyscanner)->GmlLval.pval)); return GML_EQ; } +"<" { gml_freeString(&(Gmlget_extra(yyscanner)->GmlLval.pval)); return GML_OPEN; } +">" { gml_freeString(&(Gmlget_extra(yyscanner)->GmlLval.pval)); return GML_CLOSE; } +[0-9,\.\+-]* { gml_saveString(&(Gmlget_extra(yyscanner)->GmlLval.pval), yytext); return GML_COORD; } +\"[^<>\"]*\" { gml_saveString(&(Gmlget_extra(yyscanner)->GmlLval.pval), yytext); return GML_VALUE; } +[a-zA-Z_][a-zA-Z_:0-9]* { gml_saveString(&(Gmlget_extra(yyscanner)->GmlLval.pval), yytext); return GML_KEYWORD; } + +[ \t] { gml_freeString(&(Gmlget_extra(yyscanner)->GmlLval.pval)); Gmlget_extra(yyscanner)->gml_col += (int) strlen(yytext); } /* ignore but count white space */ + +\n { gml_freeString(&(Gmlget_extra(yyscanner)->GmlLval.pval)); Gmlget_extra(yyscanner)->gml_col = 0; Gmlget_extra(yyscanner)->gml_line++; } + +. { gml_freeString(&(Gmlget_extra(yyscanner)->GmlLval.pval)); Gmlget_extra(yyscanner)->gml_col += (int) strlen(yytext); return -1; } +%% + +int yywrap(yyscan_t yyscanner ) +{ + return 1; +} diff --git a/src/spatialite/src/gaiageo/flex/kmlLexer.l b/src/spatialite/src/gaiageo/flex/kmlLexer.l new file mode 100644 index 0000000..e6e7e7e --- /dev/null +++ b/src/spatialite/src/gaiageo/flex/kmlLexer.l @@ -0,0 +1,78 @@ +/* + kmlLexer.l -- KML parser - FLEX config + + version 2.4, 2011 June 14 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +%option prefix="Kml" +%option reentrant +%option extra-type="struct kml_data *" +%option noinput +%option nounput + +/** +* The main string-token matcher. +* The lower case part is probably not needed. We should really be converting +* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. +* What Flex will do is, For the input string, beginning from the front, Flex +* will try to match with any of the defined tokens from below. Flex will +* then match the string of longest length. Suppose the string is: POINTM, +* Flex would match both POINT and POINTM, but since POINTM is the longer +* of the two tokens, FLEX will match POINTM. +*/ +%% +"/" { kml_freeString(&(Kmlget_extra(yyscanner)->KmlLval.pval)); return KML_END; } +"=" { kml_freeString(&(Kmlget_extra(yyscanner)->KmlLval.pval)); return KML_EQ; } +"<" { kml_freeString(&(Kmlget_extra(yyscanner)->KmlLval.pval)); return KML_OPEN; } +">" { kml_freeString(&(Kmlget_extra(yyscanner)->KmlLval.pval)); return KML_CLOSE; } +[0-9,\.\+-]* { kml_saveString(&(Kmlget_extra(yyscanner)->KmlLval.pval), yytext); return KML_COORD; } +\"[^<>\"]*\" { kml_saveString(&(Kmlget_extra(yyscanner)->KmlLval.pval), yytext); return KML_VALUE; } +[a-zA-Z_][a-zA-Z_:0-9]* { kml_saveString(&(Kmlget_extra(yyscanner)->KmlLval.pval), yytext); return KML_KEYWORD; } + +[ \t] { kml_freeString(&(Kmlget_extra(yyscanner)->KmlLval.pval)); Kmlget_extra(yyscanner)->kml_col += (int) strlen(yytext); } /* ignore but count white space */ + +\n { kml_freeString(&(Kmlget_extra(yyscanner)->KmlLval.pval)); Kmlget_extra(yyscanner)->kml_col = 0; Kmlget_extra(yyscanner)->kml_line++; } + +. { kml_freeString(&(Kmlget_extra(yyscanner)->KmlLval.pval)); Kmlget_extra(yyscanner)->kml_col += (int) strlen(yytext); return -1; } +%% + +int yywrap(yyscan_t yyscanner ) +{ + return 1; +} diff --git a/src/spatialite/src/gaiageo/flex/vanuatuLexer.l b/src/spatialite/src/gaiageo/flex/vanuatuLexer.l new file mode 100644 index 0000000..b79e385 --- /dev/null +++ b/src/spatialite/src/gaiageo/flex/vanuatuLexer.l @@ -0,0 +1,145 @@ +/* + vanuatuLexer.l -- Vanuatu WKT parser - FLEX config + + version 2.4, 2010 April 2 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): +The Vanuatu Team - University of Toronto + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +/****************************************************************************** +** The following code was created by Team Vanuatu of The University of Toronto. + +Authors: +Ruppi Rana ruppi.rana@gmail.com +Dev Tanna dev.tanna@gmail.com +Elias Adum elias.adum@gmail.com +Benton Hui benton.hui@gmail.com +Abhayan Sundararajan abhayan@gmail.com +Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com +Nikola Banovic nikola.banovic@gmail.com +Yong Jian yong.jian@utoronto.ca + +Supervisor: +Greg Wilson gvwilson@cs.toronto.ca + +------------------------------------------------------------------------------- +*/ + +%option prefix="VanuatuWkt" +%option reentrant +%option extra-type="struct vanuatu_data *" +%option nounput +%option noinput + +/** +* The main string-token matcher. +* The lower case part is probably not needed. We should really be converting +* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. +* What Flex will do is, For the input string, beginning from the front, Flex +* will try to match with any of the defined tokens from below. Flex will +* then match the string of longest length. Suppose the string is: POINT ZM, +* Flex would match both POINT Z and POINT ZM, but since POINT ZM is the longer +* of the two tokens, FLEX will match POINT ZM. +*/ +%% +-?[0-9]+|-?[0-9]+"."[0-9]*|"+"?[0-9]+|"+"?[0-9]+"."[0-9]* { VanuatuWktget_extra(yyscanner)->vanuatu_col += (int) strlen(yytext); VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = atof(yytext); return VANUATU_NUM; } +"," { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_COMMA; } +"(" { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_OPEN_BRACKET; } +")" { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_CLOSE_BRACKET; } +(?i:"point") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_POINT; } +(?i:"point"[ \t\n]*"z") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_POINT_Z; } +(?i:"point"[ \t\n]*"m") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_POINT_M; } +(?i:"point"[ \t\n]*"zm") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_POINT_ZM; } +(?i:"linestring") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_LINESTRING; } +(?i:"linestring"[ \t\n]*"z") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_LINESTRING_Z; } +(?i:"linestring"[ \t\n]*"m") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_LINESTRING_M; } +(?i:"linestring"[ \t\n]*"zm") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_LINESTRING_ZM; } +(?i:"polygon") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_POLYGON; } +(?i:"polygon"[ \t\n]*"z") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_POLYGON_Z; } +(?i:"polygon"[ \t\n]*"m") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_POLYGON_M; } +(?i:"polygon"[ \t\n]*"zm") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_POLYGON_ZM; } +(?i:"multipoint") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_MULTIPOINT; } +(?i:"multipoint"[ \t\n]*"z") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_MULTIPOINT_Z; } +(?i:"multipoint"[ \t\n]*"m") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_MULTIPOINT_M; } +(?i:"multipoint"[ \t\n]*"zm") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_MULTIPOINT_ZM; } +(?i:"multilinestring") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_MULTILINESTRING; } +(?i:"multilinestring"[ \t\n]*"z") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_MULTILINESTRING_Z; } +(?i:"multilinestring"[ \t\n]*"m") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_MULTILINESTRING_M; } +(?i:"multilinestring"[ \t\n]*"zm") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_MULTILINESTRING_ZM; } +(?i:"multipolygon") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_MULTIPOLYGON; } +(?i:"multipolygon"[ \t\n]*"z") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_MULTIPOLYGON_Z; } +(?i:"multipolygon"[ \t\n]*"m") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_MULTIPOLYGON_M; } +(?i:"multipolygon"[ \t\n]*"zm") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_MULTIPOLYGON_ZM; } +(?i:"geometrycollection") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_GEOMETRYCOLLECTION; } +(?i:"geometrycollection"[ \t\n]*"z") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_GEOMETRYCOLLECTION_Z; } +(?i:"geometrycollection"[ \t\n]*"m") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_GEOMETRYCOLLECTION_M; } +(?i:"geometrycollection"[ \t\n]*"zm") { VanuatuWktget_extra(yyscanner)->VanuatuWktlval.dval = 0; return VANUATU_GEOMETRYCOLLECTION_ZM; } + +[ \t] { VanuatuWktget_extra(yyscanner)->vanuatu_col += (int) strlen(yytext); } /* ignore but count white space */ + +\n { VanuatuWktget_extra(yyscanner)->vanuatu_col = 0; VanuatuWktget_extra(yyscanner)->vanuatu_line++; } + +. { VanuatuWktget_extra(yyscanner)->vanuatu_col += (int) strlen(yytext); return -1; } +%% + +int yywrap(yyscan_t yyscanner ) +{ + return 1; +} + +/****************************************************************************** +** This is the end of the code that was created by Team Vanuatu +** of The University of Toronto. + +Authors: +Ruppi Rana ruppi.rana@gmail.com +Dev Tanna dev.tanna@gmail.com +Elias Adum elias.adum@gmail.com +Benton Hui benton.hui@gmail.com +Abhayan Sundararajan abhayan@gmail.com +Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com +Nikola Banovic nikola.banovic@gmail.com +Yong Jian yong.jian@utoronto.ca + +Supervisor: +Greg Wilson gvwilson@cs.toronto.ca + +------------------------------------------------------------------------------- +*/ diff --git a/src/spatialite/src/gaiageo/geoJSON.c b/src/spatialite/src/gaiageo/geoJSON.c new file mode 100644 index 0000000..42f1eda --- /dev/null +++ b/src/spatialite/src/gaiageo/geoJSON.c @@ -0,0 +1,2480 @@ +/* Driver template for the LEMON parser generator. +** The author disclaims copyright to this source code. +*/ +/* First off, code is included that follows the "include" declaration +** in the input grammar file. */ +#include + +/* Next is all token values, in a form suitable for use by makeheaders. +** This section will be null unless lemon is run with the -m switch. +*/ +/* +** These constants (all generated automatically by the parser generator) +** specify the various kinds of tokens (terminals) that the parser +** understands. +** +** Each symbol here is a terminal symbol in the grammar. +*/ +/* Make sure the INTERFACE macro is defined. +*/ +#ifndef INTERFACE +#define INTERFACE 1 +#endif +/* The next thing included is series of defines which control +** various aspects of the generated parser. +** YYCODETYPE is the data type used for storing terminal +** and nonterminal numbers. "unsigned char" is +** used if there are fewer than 250 terminals +** and nonterminals. "int" is used otherwise. +** YYNOCODE is a number of type YYCODETYPE which corresponds +** to no legal terminal or nonterminal number. This +** number is used to fill in empty slots of the hash +** table. +** YYFALLBACK If defined, this indicates that one or more tokens +** have fall-back values which should be used if the +** original value of the token will not parse. +** YYACTIONTYPE is the data type used for storing terminal +** and nonterminal numbers. "unsigned char" is +** used if there are fewer than 250 rules and +** states combined. "int" is used otherwise. +** ParseTOKENTYPE is the data type used for minor tokens given +** directly to the parser from the tokenizer. +** YYMINORTYPE is the data type used for all minor tokens. +** This is typically a union of many types, one of +** which is ParseTOKENTYPE. The entry in the union +** for base tokens is called "yy0". +** YYSTACKDEPTH is the maximum depth of the parser's stack. If +** zero the stack is dynamically sized using realloc() +** ParseARG_SDECL A static variable declaration for the %extra_argument +** ParseARG_PDECL A parameter declaration for the %extra_argument +** ParseARG_STORE Code to store %extra_argument into yypParser +** ParseARG_FETCH Code to extract %extra_argument from yypParser +** YYNSTATE the combined number of states. +** YYNRULE the number of rules in the grammar +** YYERRORSYMBOL is the code number of the error symbol. If not +** defined, then do no error processing. +*/ +#define YYCODETYPE unsigned char +#define YYNOCODE 84 +#define YYACTIONTYPE unsigned short int +#define ParseTOKENTYPE void * +typedef union +{ + int yyinit; + ParseTOKENTYPE yy0; +} YYMINORTYPE; +#ifndef YYSTACKDEPTH +#define YYSTACKDEPTH 1000000 +#endif +#define ParseARG_SDECL struct geoJson_data *p_data ; +#define ParseARG_PDECL , struct geoJson_data *p_data +#define ParseARG_FETCH struct geoJson_data *p_data = yypParser->p_data +#define ParseARG_STORE yypParser->p_data = p_data +#define YYNSTATE 679 +#define YYNRULE 159 +#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) +#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) +#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) + +/* The yyzerominor constant is used to initialize instances of +** YYMINORTYPE objects to zero. */ +static const YYMINORTYPE yyzerominor = { 0 }; + +/* Define the yytestcase() macro to be a no-op if is not already defined +** otherwise. +** +** Applications can choose to define yytestcase() in the %include section +** to a macro that can assist in verifying code coverage. For production +** code the yytestcase() macro should be turned off. But it is useful +** for testing. +*/ +#ifndef yytestcase +#define yytestcase(X) +#endif + + +/* Next are the tables used to determine what action to take based on the +** current state and lookahead token. These tables are used to implement +** functions that take a state number and lookahead value and return an +** action integer. +** +** Suppose the action integer is N. Then the action is determined as +** follows +** +** 0 <= N < YYNSTATE Shift N. That is, push the lookahead +** token onto the stack and goto state N. +** +** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. +** +** N == YYNSTATE+YYNRULE A syntax error has occurred. +** +** N == YYNSTATE+YYNRULE+1 The parser accepts its input. +** +** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused +** slots in the yy_action[] table. +** +** The action table is constructed as a single large table named yy_action[]. +** Given state S and lookahead X, the action is computed as +** +** yy_action[ yy_shift_ofst[S] + X ] +** +** If the index value yy_shift_ofst[S]+X is out of range or if the value +** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] +** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table +** and that yy_default[S] should be used instead. +** +** The formula above is for computing the action when the lookahead is +** a terminal symbol. If the lookahead is a non-terminal (as occurs after +** a reduce action) then the yy_reduce_ofst[] array is used in place of +** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of +** YY_SHIFT_USE_DFLT. +** +** The following are the tables generated in this section: +** +** yy_action[] A single table containing all actions. +** yy_lookahead[] A table containing the lookahead for each entry in +** yy_action. Used to detect hash collisions. +** yy_shift_ofst[] For each state, the offset into yy_action for +** shifting terminals. +** yy_reduce_ofst[] For each state, the offset into yy_action for +** shifting non-terminals after a reduce. +** yy_default[] Default action for each state. +*/ +static const YYACTIONTYPE yy_action[] = { + /* 0 */ 184, 533, 534, 535, 536, 537, 538, 539, 540, 541, + /* 10 */ 542, 543, 544, 545, 546, 547, 548, 187, 139, 189, + /* 20 */ 146, 147, 148, 190, 155, 156, 679, 104, 185, 112, + /* 30 */ 242, 287, 334, 373, 412, 451, 139, 195, 146, 147, + /* 40 */ 140, 201, 141, 142, 512, 149, 88, 150, 151, 157, + /* 50 */ 148, 551, 155, 156, 496, 188, 243, 193, 254, 509, + /* 60 */ 204, 262, 455, 288, 335, 301, 340, 471, 309, 348, + /* 70 */ 507, 374, 413, 379, 418, 457, 387, 426, 482, 191, + /* 80 */ 498, 480, 452, 567, 568, 839, 1, 169, 461, 465, + /* 90 */ 93, 486, 490, 501, 504, 238, 240, 211, 199, 207, + /* 100 */ 86, 201, 200, 208, 101, 244, 245, 215, 205, 217, + /* 110 */ 553, 216, 223, 219, 227, 99, 201, 220, 228, 246, + /* 120 */ 229, 19, 256, 250, 263, 275, 201, 260, 261, 95, + /* 130 */ 30, 269, 31, 265, 266, 201, 273, 274, 277, 278, + /* 140 */ 281, 285, 286, 42, 201, 292, 289, 290, 303, 297, + /* 150 */ 307, 308, 201, 310, 322, 312, 313, 96, 316, 328, + /* 160 */ 320, 321, 201, 201, 324, 325, 332, 333, 206, 120, + /* 170 */ 209, 336, 337, 121, 342, 192, 349, 361, 201, 53, + /* 180 */ 346, 347, 351, 352, 355, 64, 359, 360, 201, 363, + /* 190 */ 364, 367, 375, 376, 2, 201, 381, 371, 372, 394, + /* 200 */ 201, 122, 126, 201, 385, 386, 388, 400, 390, 391, + /* 210 */ 414, 415, 398, 399, 402, 403, 406, 410, 411, 420, + /* 220 */ 201, 130, 134, 201, 424, 425, 427, 439, 433, 429, + /* 230 */ 430, 218, 201, 221, 437, 438, 441, 442, 445, 477, + /* 240 */ 478, 202, 201, 449, 450, 473, 460, 468, 493, 201, + /* 250 */ 485, 464, 489, 508, 520, 514, 510, 511, 524, 201, + /* 260 */ 518, 519, 522, 523, 526, 203, 530, 531, 201, 264, + /* 270 */ 276, 267, 279, 521, 311, 323, 314, 326, 350, 362, + /* 280 */ 353, 365, 389, 401, 392, 404, 428, 440, 431, 443, + /* 290 */ 556, 247, 248, 97, 99, 251, 249, 571, 102, 105, + /* 300 */ 252, 253, 103, 292, 106, 573, 291, 295, 113, 293, + /* 310 */ 294, 111, 123, 114, 110, 589, 125, 124, 296, 297, + /* 320 */ 119, 127, 298, 299, 377, 840, 118, 620, 592, 128, + /* 330 */ 246, 131, 300, 132, 338, 135, 339, 250, 136, 4, + /* 340 */ 3, 5, 129, 532, 6, 158, 186, 133, 8, 552, + /* 350 */ 104, 378, 159, 549, 460, 622, 137, 550, 112, 87, + /* 360 */ 416, 194, 9, 10, 197, 464, 636, 196, 417, 468, + /* 370 */ 485, 638, 198, 453, 554, 555, 489, 454, 89, 90, + /* 380 */ 651, 652, 493, 91, 653, 11, 170, 469, 12, 470, + /* 390 */ 557, 558, 210, 213, 479, 13, 662, 663, 664, 214, + /* 400 */ 212, 14, 494, 559, 560, 678, 171, 495, 15, 561, + /* 410 */ 562, 222, 225, 16, 17, 226, 224, 563, 230, 564, + /* 420 */ 231, 236, 235, 233, 20, 232, 7, 234, 456, 239, + /* 430 */ 840, 565, 241, 237, 566, 569, 160, 18, 840, 551, + /* 440 */ 570, 92, 94, 98, 100, 572, 88, 255, 840, 21, + /* 450 */ 258, 840, 574, 257, 259, 22, 575, 270, 576, 172, + /* 460 */ 23, 268, 577, 578, 271, 25, 840, 272, 26, 24, + /* 470 */ 579, 580, 173, 581, 280, 840, 582, 840, 283, 27, + /* 480 */ 284, 28, 282, 583, 32, 29, 161, 584, 840, 840, + /* 490 */ 585, 586, 107, 108, 109, 587, 304, 840, 840, 115, + /* 500 */ 116, 117, 588, 590, 302, 33, 840, 591, 305, 840, + /* 510 */ 306, 840, 593, 594, 174, 34, 36, 35, 840, 39, + /* 520 */ 315, 476, 595, 596, 318, 37, 75, 840, 317, 840, + /* 530 */ 319, 329, 597, 598, 599, 175, 40, 38, 327, 600, + /* 540 */ 840, 330, 840, 331, 41, 601, 602, 603, 162, 840, + /* 550 */ 840, 341, 604, 840, 840, 840, 605, 606, 43, 344, + /* 560 */ 343, 840, 44, 356, 345, 45, 840, 607, 608, 176, + /* 570 */ 46, 358, 840, 609, 354, 840, 610, 357, 48, 47, + /* 580 */ 611, 49, 840, 612, 177, 366, 840, 613, 614, 840, + /* 590 */ 840, 369, 50, 370, 163, 368, 51, 615, 52, 840, + /* 600 */ 840, 616, 840, 617, 618, 840, 380, 840, 619, 621, + /* 610 */ 382, 383, 840, 178, 54, 55, 384, 840, 623, 56, + /* 620 */ 624, 57, 625, 393, 626, 840, 840, 59, 396, 840, + /* 630 */ 58, 397, 395, 627, 840, 179, 628, 60, 405, 629, + /* 640 */ 630, 840, 840, 62, 408, 840, 61, 409, 407, 631, + /* 650 */ 840, 164, 632, 63, 840, 633, 634, 419, 840, 840, + /* 660 */ 481, 635, 840, 637, 65, 423, 840, 421, 422, 66, + /* 670 */ 840, 81, 639, 67, 640, 840, 180, 68, 69, 840, + /* 680 */ 840, 432, 641, 642, 840, 435, 70, 840, 840, 434, + /* 690 */ 436, 840, 643, 181, 644, 71, 517, 840, 645, 444, + /* 700 */ 840, 646, 840, 183, 72, 447, 840, 446, 647, 448, + /* 710 */ 73, 840, 674, 648, 165, 138, 840, 649, 166, 143, + /* 720 */ 840, 650, 458, 84, 840, 459, 462, 654, 840, 463, + /* 730 */ 144, 655, 840, 466, 145, 467, 840, 840, 840, 656, + /* 740 */ 472, 840, 840, 657, 840, 658, 474, 475, 529, 840, + /* 750 */ 74, 840, 659, 85, 660, 167, 665, 840, 661, 483, + /* 760 */ 152, 840, 484, 487, 153, 840, 488, 154, 840, 666, + /* 770 */ 491, 840, 492, 840, 497, 667, 840, 168, 840, 668, + /* 780 */ 840, 669, 499, 670, 76, 500, 840, 840, 502, 77, + /* 790 */ 503, 840, 505, 840, 78, 79, 506, 840, 840, 182, + /* 800 */ 80, 513, 840, 671, 840, 840, 82, 516, 840, 840, + /* 810 */ 840, 515, 672, 840, 840, 673, 83, 840, 840, 527, + /* 820 */ 525, 675, 840, 528, 840, 840, 840, 840, 676, 677, +}; + +static const YYCODETYPE yy_lookahead[] = { + /* 0 */ 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, + /* 10 */ 38, 39, 40, 41, 42, 43, 44, 5, 75, 45, + /* 20 */ 77, 78, 79, 49, 81, 82, 0, 59, 2, 61, + /* 30 */ 18, 19, 20, 21, 22, 23, 75, 46, 77, 78, + /* 40 */ 75, 50, 77, 78, 9, 79, 6, 81, 82, 23, + /* 50 */ 79, 11, 81, 82, 2, 7, 7, 9, 9, 24, + /* 60 */ 12, 12, 2, 7, 7, 9, 9, 9, 12, 12, + /* 70 */ 12, 7, 7, 9, 9, 5, 12, 12, 5, 50, + /* 80 */ 5, 2, 24, 16, 17, 26, 27, 50, 18, 19, + /* 90 */ 10, 18, 19, 18, 19, 51, 52, 46, 45, 45, + /* 100 */ 10, 50, 49, 49, 49, 55, 56, 45, 47, 48, + /* 110 */ 15, 49, 46, 45, 45, 10, 50, 49, 49, 45, + /* 120 */ 2, 10, 46, 49, 47, 48, 50, 55, 56, 45, + /* 130 */ 10, 46, 10, 55, 56, 50, 55, 56, 55, 56, + /* 140 */ 46, 55, 56, 10, 50, 45, 57, 58, 46, 49, + /* 150 */ 57, 58, 50, 47, 48, 57, 58, 6, 46, 46, + /* 160 */ 57, 58, 50, 50, 57, 58, 57, 58, 7, 45, + /* 170 */ 9, 63, 64, 49, 46, 50, 47, 48, 50, 10, + /* 180 */ 63, 64, 63, 64, 46, 10, 63, 64, 50, 63, + /* 190 */ 64, 46, 65, 66, 10, 50, 46, 63, 64, 46, + /* 200 */ 50, 55, 56, 50, 65, 66, 47, 48, 65, 66, + /* 210 */ 69, 70, 65, 66, 65, 66, 46, 65, 66, 46, + /* 220 */ 50, 57, 58, 50, 69, 70, 47, 48, 46, 69, + /* 230 */ 70, 7, 50, 9, 69, 70, 69, 70, 46, 73, + /* 240 */ 74, 50, 50, 69, 70, 46, 45, 57, 58, 50, + /* 250 */ 49, 55, 56, 47, 48, 46, 73, 74, 9, 50, + /* 260 */ 73, 74, 73, 74, 46, 50, 73, 74, 50, 7, + /* 270 */ 7, 9, 9, 24, 7, 7, 9, 9, 7, 7, + /* 280 */ 9, 9, 7, 7, 9, 9, 7, 7, 9, 9, + /* 290 */ 50, 50, 50, 45, 10, 50, 53, 53, 6, 6, + /* 300 */ 50, 54, 49, 45, 10, 54, 60, 53, 6, 45, + /* 310 */ 45, 59, 6, 10, 45, 60, 55, 10, 62, 49, + /* 320 */ 61, 6, 49, 49, 67, 83, 49, 67, 62, 10, + /* 330 */ 45, 6, 54, 10, 53, 6, 54, 49, 10, 6, + /* 340 */ 10, 6, 56, 1, 10, 4, 3, 57, 4, 11, + /* 350 */ 59, 68, 6, 8, 45, 68, 58, 8, 61, 6, + /* 360 */ 71, 4, 10, 4, 6, 55, 71, 11, 72, 57, + /* 370 */ 49, 72, 7, 73, 8, 8, 56, 76, 6, 6, + /* 380 */ 76, 76, 58, 6, 76, 4, 6, 76, 4, 76, + /* 390 */ 8, 8, 4, 6, 80, 10, 80, 80, 80, 7, + /* 400 */ 11, 4, 80, 8, 8, 74, 6, 80, 4, 8, + /* 410 */ 8, 4, 6, 10, 4, 7, 11, 8, 3, 8, + /* 420 */ 4, 2, 4, 6, 10, 13, 4, 14, 3, 8, + /* 430 */ 83, 8, 8, 13, 8, 8, 6, 4, 83, 11, + /* 440 */ 8, 6, 6, 6, 6, 11, 6, 4, 83, 4, + /* 450 */ 6, 83, 11, 11, 7, 4, 8, 11, 8, 6, + /* 460 */ 4, 4, 8, 8, 6, 4, 83, 7, 4, 10, + /* 470 */ 8, 8, 6, 8, 4, 83, 8, 83, 6, 10, + /* 480 */ 7, 4, 11, 8, 10, 4, 6, 8, 83, 83, + /* 490 */ 8, 8, 6, 6, 6, 11, 11, 83, 83, 6, + /* 500 */ 6, 6, 11, 11, 4, 4, 83, 11, 6, 83, + /* 510 */ 7, 83, 8, 8, 6, 4, 10, 4, 83, 10, + /* 520 */ 4, 24, 8, 8, 6, 4, 4, 83, 11, 83, + /* 530 */ 7, 11, 8, 8, 8, 6, 4, 4, 4, 8, + /* 540 */ 83, 6, 83, 7, 4, 8, 8, 8, 6, 83, + /* 550 */ 83, 4, 8, 83, 83, 83, 11, 11, 10, 6, + /* 560 */ 11, 83, 4, 11, 7, 4, 83, 8, 8, 6, + /* 570 */ 4, 7, 83, 8, 4, 83, 8, 6, 4, 10, + /* 580 */ 8, 4, 83, 8, 6, 4, 83, 8, 8, 83, + /* 590 */ 83, 6, 10, 7, 6, 11, 4, 8, 4, 83, + /* 600 */ 83, 8, 83, 8, 8, 83, 4, 83, 11, 11, + /* 610 */ 11, 6, 83, 6, 10, 4, 7, 83, 8, 4, + /* 620 */ 8, 4, 8, 4, 8, 83, 83, 4, 6, 83, + /* 630 */ 10, 7, 11, 8, 83, 6, 8, 4, 4, 8, + /* 640 */ 8, 83, 83, 4, 6, 83, 10, 7, 11, 8, + /* 650 */ 83, 6, 8, 4, 83, 8, 8, 4, 83, 83, + /* 660 */ 3, 11, 83, 11, 10, 7, 83, 11, 6, 4, + /* 670 */ 83, 10, 8, 4, 8, 83, 6, 4, 10, 83, + /* 680 */ 83, 4, 8, 8, 83, 6, 4, 83, 83, 11, + /* 690 */ 7, 83, 8, 6, 8, 4, 24, 83, 8, 4, + /* 700 */ 83, 8, 83, 6, 10, 6, 83, 11, 8, 7, + /* 710 */ 4, 83, 8, 8, 6, 4, 83, 8, 4, 4, + /* 720 */ 83, 11, 6, 10, 83, 7, 6, 8, 83, 7, + /* 730 */ 4, 8, 83, 6, 4, 7, 83, 83, 83, 8, + /* 740 */ 4, 83, 83, 11, 83, 11, 11, 6, 24, 83, + /* 750 */ 10, 83, 8, 4, 8, 4, 8, 83, 11, 6, + /* 760 */ 4, 83, 7, 6, 4, 83, 7, 4, 83, 8, + /* 770 */ 6, 83, 7, 83, 3, 8, 83, 4, 83, 11, + /* 780 */ 83, 11, 6, 8, 4, 7, 83, 83, 6, 4, + /* 790 */ 7, 83, 6, 83, 4, 4, 7, 83, 83, 6, + /* 800 */ 4, 4, 83, 8, 83, 83, 4, 6, 83, 83, + /* 810 */ 83, 11, 8, 83, 83, 8, 4, 83, 83, 11, + /* 820 */ 4, 8, 83, 6, 83, 83, 83, 83, 8, 8, +}; + +#define YY_SHIFT_USE_DFLT (-1) +#define YY_SHIFT_MAX 531 +static const short yy_shift_ofst[] = { + /* 0 */ -1, 26, 52, 60, 60, 79, 79, 67, 90, 95, + /* 10 */ 90, 118, 90, 95, 90, 90, 95, 90, 111, 90, + /* 20 */ 95, 111, 118, 111, 95, 111, 111, 95, 111, 120, + /* 30 */ 122, 90, 95, 120, 118, 120, 95, 120, 120, 95, + /* 40 */ 120, 133, 90, 95, 133, 118, 133, 95, 133, 133, + /* 50 */ 95, 133, 169, 111, 95, 169, 118, 169, 95, 169, + /* 60 */ 169, 95, 169, 175, 120, 95, 175, 118, 175, 95, + /* 70 */ 175, 175, 95, 175, 95, 184, 90, 111, 120, 118, + /* 80 */ 184, 95, 184, 184, 95, 184, 95, 95, 95, 95, + /* 90 */ 95, 95, 80, 95, 95, 151, 80, 151, 284, 95, + /* 100 */ 95, 292, 105, 292, 293, 294, 80, 80, 80, 80, + /* 110 */ 151, 293, 302, 303, 105, 105, 105, 105, 292, 302, + /* 120 */ 151, 292, 306, 307, 80, 306, 315, 319, 105, 315, + /* 130 */ 325, 323, 294, 325, 329, 328, 303, 329, 330, 333, + /* 140 */ 333, 333, 333, 80, 307, 323, 333, 333, 335, 335, + /* 150 */ 335, 335, 105, 319, 328, 335, 335, 334, 12, 48, + /* 160 */ 49, 56, 57, 64, 65, 58, 70, 73, 75, 40, + /* 170 */ 161, 224, 262, 263, 267, 268, 271, 272, 275, 276, + /* 180 */ 279, 280, 35, 249, 342, 343, 341, 346, 344, 345, + /* 190 */ 349, 353, 338, 357, 352, 356, 358, 365, 359, 366, + /* 200 */ 367, 372, 373, 377, 381, 380, 384, 382, 383, 388, + /* 210 */ 385, 389, 387, 392, 397, 395, 396, 400, 404, 401, + /* 220 */ 402, 407, 403, 405, 406, 408, 410, 409, 411, 415, + /* 230 */ 416, 412, 417, 413, 418, 419, 420, 422, 421, 423, + /* 240 */ 424, 426, 430, 433, 427, 432, 435, 436, 428, 434, + /* 250 */ 437, 438, 440, 441, 443, 414, 442, 444, 447, 445, + /* 260 */ 448, 450, 451, 453, 456, 454, 455, 457, 459, 446, + /* 270 */ 458, 460, 461, 462, 463, 466, 464, 465, 468, 470, + /* 280 */ 469, 471, 472, 473, 477, 475, 479, 480, 481, 482, + /* 290 */ 483, 484, 486, 487, 488, 491, 492, 493, 494, 495, + /* 300 */ 496, 500, 474, 485, 502, 503, 501, 504, 505, 511, + /* 310 */ 508, 513, 514, 515, 516, 506, 517, 518, 523, 521, + /* 320 */ 524, 525, 529, 533, 526, 531, 534, 509, 520, 535, + /* 330 */ 536, 532, 537, 538, 542, 540, 539, 544, 545, 546, + /* 340 */ 547, 548, 549, 553, 557, 558, 559, 560, 561, 563, + /* 350 */ 566, 565, 568, 570, 569, 552, 571, 564, 574, 572, + /* 360 */ 575, 578, 577, 579, 580, 581, 582, 584, 585, 586, + /* 370 */ 592, 589, 593, 588, 594, 595, 596, 597, 598, 602, + /* 380 */ 604, 599, 605, 609, 611, 610, 612, 615, 607, 617, + /* 390 */ 614, 616, 619, 620, 621, 622, 624, 623, 625, 628, + /* 400 */ 629, 633, 631, 632, 634, 636, 637, 638, 640, 639, + /* 410 */ 641, 644, 645, 649, 647, 648, 650, 652, 653, 654, + /* 420 */ 656, 662, 658, 665, 664, 666, 669, 670, 673, 674, + /* 430 */ 675, 677, 668, 678, 679, 683, 682, 684, 686, 687, + /* 440 */ 691, 690, 693, 695, 694, 696, 699, 702, 706, 700, + /* 450 */ 705, 708, 711, 709, 710, 425, 714, 716, 718, 715, + /* 460 */ 719, 720, 722, 726, 723, 727, 728, 730, 731, 732, + /* 470 */ 734, 736, 740, 735, 741, 497, 522, 744, 746, 747, + /* 480 */ 657, 751, 753, 755, 756, 748, 757, 759, 760, 761, + /* 490 */ 764, 765, 763, 767, 768, 770, 771, 773, 776, 778, + /* 500 */ 780, 782, 783, 785, 786, 789, 790, 791, 793, 796, + /* 510 */ 775, 795, 797, 661, 800, 801, 672, 802, 804, 807, + /* 520 */ 697, 812, 704, 813, 816, 713, 808, 817, 724, 749, + /* 530 */ 820, 821, +}; + +#define YY_REDUCE_USE_DFLT (-58) +#define YY_REDUCE_MAX 157 +static const short yy_reduce_ofst[] = { + /* 0 */ 59, -28, -57, -39, -35, -34, -29, 44, -26, -9, + /* 10 */ 53, 61, 54, 51, 62, 68, 66, 69, 50, 74, + /* 20 */ 76, 72, 77, 78, 85, 81, 83, 94, 86, 89, + /* 30 */ -32, 100, 102, 93, 106, 98, 112, 103, 107, 113, + /* 40 */ 109, 108, 124, 128, 117, 129, 119, 138, 123, 126, + /* 50 */ 145, 134, 127, 146, 150, 139, 159, 143, 153, 147, + /* 60 */ 149, 170, 152, 141, 164, 173, 155, 179, 160, 182, + /* 70 */ 165, 167, 192, 174, 199, 166, 201, 196, 190, 206, + /* 80 */ 183, 209, 187, 189, 218, 193, 29, 37, 125, 191, + /* 90 */ 215, 240, 84, 241, 242, 243, 248, 244, 55, 245, + /* 100 */ 250, 247, 253, 251, 246, 252, 258, 264, 265, 269, + /* 110 */ 254, 255, 256, 259, 270, 273, 274, 277, 278, 266, + /* 120 */ 281, 282, 257, 261, 285, 260, 283, 286, 288, 287, + /* 130 */ 289, 290, 291, 295, 296, 298, 297, 299, 300, 301, + /* 140 */ 304, 305, 308, 309, 310, 312, 311, 313, 314, 316, + /* 150 */ 317, 318, 321, 320, 324, 322, 327, 331, +}; + +static const YYACTIONTYPE yy_default[] = { + /* 0 */ 680, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 10 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 20 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 30 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 40 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 50 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 60 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 70 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 80 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 90 */ 838, 838, 838, 838, 838, 718, 838, 718, 838, 838, + /* 100 */ 838, 720, 838, 720, 751, 838, 838, 838, 838, 838, + /* 110 */ 718, 751, 754, 838, 838, 838, 838, 838, 720, 754, + /* 120 */ 718, 720, 783, 838, 838, 783, 786, 838, 838, 786, + /* 130 */ 801, 838, 838, 801, 804, 838, 838, 804, 838, 821, + /* 140 */ 821, 821, 821, 838, 838, 838, 821, 821, 828, 828, + /* 150 */ 828, 828, 838, 838, 838, 828, 828, 838, 838, 838, + /* 160 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 170 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 180 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 190 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 200 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 210 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 220 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 230 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 240 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 250 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 260 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 270 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 280 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 290 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 300 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 310 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 320 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 330 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 340 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 350 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 360 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 370 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 380 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 390 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 400 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 410 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 420 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 430 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 440 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 450 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 460 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 470 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 480 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 490 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 500 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 510 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 520 */ 838, 838, 838, 838, 838, 838, 838, 838, 838, 838, + /* 530 */ 838, 838, 681, 682, 683, 684, 685, 686, 687, 688, + /* 540 */ 689, 690, 691, 692, 693, 694, 695, 696, 697, 698, + /* 550 */ 704, 713, 714, 715, 699, 705, 710, 700, 706, 702, + /* 560 */ 708, 701, 707, 703, 709, 711, 712, 716, 717, 722, + /* 570 */ 728, 719, 734, 721, 735, 723, 729, 724, 730, 726, + /* 580 */ 732, 725, 731, 727, 733, 736, 742, 748, 750, 752, + /* 590 */ 749, 753, 755, 737, 743, 738, 744, 740, 746, 739, + /* 600 */ 745, 741, 747, 756, 762, 768, 769, 757, 763, 758, + /* 610 */ 764, 760, 766, 759, 765, 761, 767, 770, 776, 782, + /* 620 */ 784, 785, 787, 771, 777, 772, 778, 774, 780, 773, + /* 630 */ 779, 775, 781, 788, 794, 800, 802, 803, 805, 789, + /* 640 */ 795, 790, 796, 792, 798, 791, 797, 793, 799, 806, + /* 650 */ 818, 822, 823, 824, 832, 834, 836, 819, 820, 807, + /* 660 */ 813, 825, 829, 830, 831, 833, 835, 837, 826, 827, + /* 670 */ 808, 814, 810, 816, 809, 815, 811, 817, 812, +}; + +#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0])) + +/* The next table maps tokens into fallback tokens. If a construct +** like the following: +** +** %fallback ID X Y Z. +** +** appears in the grammar, then ID becomes a fallback token for X, Y, +** and Z. Whenever one of the tokens X, Y, or Z is input to the parser +** but it does not parse, the type of the token is changed to ID and +** the parse is retried before an error is thrown. +*/ +#ifdef YYFALLBACK +static const YYCODETYPE yyFallback[] = { +}; +#endif /* YYFALLBACK */ + +/* The following structure represents a single element of the +** parser's stack. Information stored includes: +** +** + The state number for the parser at this level of the stack. +** +** + The value of the token stored at this level of the stack. +** (In other words, the "major" token.) +** +** + The semantic value stored at this level of the stack. This is +** the information used by the action routines in the grammar. +** It is sometimes called the "minor" token. +*/ +struct yyStackEntry +{ + YYACTIONTYPE stateno; /* The state-number */ + YYCODETYPE major; /* The major token value. This is the code + ** number for the token at this stack level */ + YYMINORTYPE minor; /* The user-supplied minor token value. This + ** is the value of the token */ +}; +typedef struct yyStackEntry yyStackEntry; + +/* The state of the parser is completely contained in an instance of +** the following structure */ +struct yyParser +{ + int yyidx; /* Index of top element in stack */ +#ifdef YYTRACKMAXSTACKDEPTH + int yyidxMax; /* Maximum value of yyidx */ +#endif + int yyerrcnt; /* Shifts left before out of the error */ + ParseARG_SDECL /* A place to hold %extra_argument */ +#if YYSTACKDEPTH<=0 + int yystksz; /* Current side of the stack */ + yyStackEntry *yystack; /* The parser's stack */ +#else + yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ +#endif +}; +typedef struct yyParser yyParser; + +#ifndef NDEBUG +#include +static FILE *yyTraceFILE = 0; +static char *yyTracePrompt = 0; +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* +** Turn parser tracing on by giving a stream to which to write the trace +** and a prompt to preface each trace message. Tracing is turned off +** by making either argument NULL +** +** Inputs: +**
      +**
    • A FILE* to which trace output should be written. +** If NULL, then tracing is turned off. +**
    • A prefix string written at the beginning of every +** line of trace output. If NULL, then tracing is +** turned off. +**
    +** +** Outputs: +** None. +*/ +void +ParseTrace (FILE * TraceFILE, char *zTracePrompt) +{ + yyTraceFILE = TraceFILE; + yyTracePrompt = zTracePrompt; + if (yyTraceFILE == 0) + yyTracePrompt = 0; + else if (yyTracePrompt == 0) + yyTraceFILE = 0; +} +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* For tracing shifts, the names of all terminals and nonterminals +** are required. The following table supplies these names */ +static const char *const yyTokenName[] = { + "$", "GEOJSON_NEWLINE", "GEOJSON_OPEN_BRACE", "GEOJSON_TYPE", + "GEOJSON_COLON", "GEOJSON_POINT", "GEOJSON_COMMA", "GEOJSON_COORDS", + "GEOJSON_CLOSE_BRACE", "GEOJSON_BBOX", "GEOJSON_OPEN_BRACKET", + "GEOJSON_CLOSE_BRACKET", + "GEOJSON_CRS", "GEOJSON_NAME", "GEOJSON_PROPS", "GEOJSON_NUM", + "GEOJSON_SHORT_SRID", "GEOJSON_LONG_SRID", "GEOJSON_LINESTRING", + "GEOJSON_POLYGON", + "GEOJSON_MULTIPOINT", "GEOJSON_MULTILINESTRING", "GEOJSON_MULTIPOLYGON", + "GEOJSON_GEOMETRYCOLLECTION", + "GEOJSON_GEOMS", "error", "main", "in", + "state", "program", "geo_text", "point", + "pointz", "linestring", "linestringz", "polygon", + "polygonz", "multipoint", "multipointz", "multilinestring", + "multilinestringz", "multipolygon", "multipolygonz", "geocoll", + "geocollz", "point_coordxy", "bbox", "short_crs", + "long_crs", "point_coordxyz", "coord", "short_srid", + "long_srid", "extra_pointsxy", "extra_pointsxyz", "linestring_text", + "linestring_textz", "polygon_text", "polygon_textz", "ring", + "extra_rings", "ringz", "extra_ringsz", "multipoint_text", + "multipoint_textz", "multilinestring_text", "multilinestring_textz", + "multilinestring_text2", + "multilinestring_textz2", "multipolygon_text", "multipolygon_textz", + "multipolygon_text2", + "multipolygon_textz2", "geocoll_text", "geocoll_textz", "coll_point", + "geocoll_text2", "coll_linestring", "coll_polygon", "coll_pointz", + "geocoll_textz2", "coll_linestringz", "coll_polygonz", +}; +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* For tracing reduce actions, the names of all rules are required. +*/ +static const char *const yyRuleName[] = { + /* 0 */ "main ::= in", + /* 1 */ "in ::=", + /* 2 */ "in ::= in state GEOJSON_NEWLINE", + /* 3 */ "state ::= program", + /* 4 */ "program ::= geo_text", + /* 5 */ "geo_text ::= point", + /* 6 */ "geo_text ::= pointz", + /* 7 */ "geo_text ::= linestring", + /* 8 */ "geo_text ::= linestringz", + /* 9 */ "geo_text ::= polygon", + /* 10 */ "geo_text ::= polygonz", + /* 11 */ "geo_text ::= multipoint", + /* 12 */ "geo_text ::= multipointz", + /* 13 */ "geo_text ::= multilinestring", + /* 14 */ "geo_text ::= multilinestringz", + /* 15 */ "geo_text ::= multipolygon", + /* 16 */ "geo_text ::= multipolygonz", + /* 17 */ "geo_text ::= geocoll", + /* 18 */ "geo_text ::= geocollz", + /* 19 */ + "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", + /* 20 */ + "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", + /* 21 */ + "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", + /* 22 */ + "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", + /* 23 */ + "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", + /* 24 */ + "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", + /* 25 */ + "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", + /* 26 */ + "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", + /* 27 */ + "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", + /* 28 */ + "pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", + /* 29 */ + "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", + /* 30 */ + "point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", + /* 31 */ + "bbox ::= coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_COMMA coord", + /* 32 */ + "short_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON short_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE", + /* 33 */ + "long_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON long_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE", + /* 34 */ + "point_coordxy ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET", + /* 35 */ + "point_coordxyz ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET", + /* 36 */ "coord ::= GEOJSON_NUM", + /* 37 */ "short_srid ::= GEOJSON_SHORT_SRID", + /* 38 */ "long_srid ::= GEOJSON_LONG_SRID", + /* 39 */ "extra_pointsxy ::=", + /* 40 */ "extra_pointsxy ::= GEOJSON_COMMA point_coordxy extra_pointsxy", + /* 41 */ "extra_pointsxyz ::=", + /* 42 */ + "extra_pointsxyz ::= GEOJSON_COMMA point_coordxyz extra_pointsxyz", + /* 43 */ + "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", + /* 44 */ + "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", + /* 45 */ + "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", + /* 46 */ + "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", + /* 47 */ + "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", + /* 48 */ + "linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", + /* 49 */ + "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", + /* 50 */ + "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", + /* 51 */ + "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", + /* 52 */ + "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", + /* 53 */ + "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", + /* 54 */ + "linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", + /* 55 */ + "linestring_text ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET", + /* 56 */ + "linestring_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET", + /* 57 */ + "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", + /* 58 */ + "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", + /* 59 */ + "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", + /* 60 */ + "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", + /* 61 */ + "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", + /* 62 */ + "polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", + /* 63 */ + "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", + /* 64 */ + "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", + /* 65 */ + "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", + /* 66 */ + "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", + /* 67 */ + "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", + /* 68 */ + "polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", + /* 69 */ + "polygon_text ::= GEOJSON_OPEN_BRACKET ring extra_rings GEOJSON_CLOSE_BRACKET", + /* 70 */ + "polygon_textz ::= GEOJSON_OPEN_BRACKET ringz extra_ringsz GEOJSON_CLOSE_BRACKET", + /* 71 */ + "ring ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET", + /* 72 */ "extra_rings ::=", + /* 73 */ "extra_rings ::= GEOJSON_COMMA ring extra_rings", + /* 74 */ + "ringz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET", + /* 75 */ "extra_ringsz ::=", + /* 76 */ "extra_ringsz ::= GEOJSON_COMMA ringz extra_ringsz", + /* 77 */ + "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", + /* 78 */ + "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", + /* 79 */ + "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", + /* 80 */ + "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", + /* 81 */ + "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", + /* 82 */ + "multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE", + /* 83 */ + "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", + /* 84 */ + "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", + /* 85 */ + "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", + /* 86 */ + "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", + /* 87 */ + "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", + /* 88 */ + "multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE", + /* 89 */ + "multipoint_text ::= GEOJSON_OPEN_BRACKET point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET", + /* 90 */ + "multipoint_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET", + /* 91 */ + "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", + /* 92 */ + "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", + /* 93 */ + "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", + /* 94 */ + "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", + /* 95 */ + "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", + /* 96 */ + "multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE", + /* 97 */ + "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", + /* 98 */ + "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", + /* 99 */ + "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", + /* 100 */ + "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", + /* 101 */ + "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", + /* 102 */ + "multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE", + /* 103 */ + "multilinestring_text ::= GEOJSON_OPEN_BRACKET linestring_text multilinestring_text2 GEOJSON_CLOSE_BRACKET", + /* 104 */ "multilinestring_text2 ::=", + /* 105 */ + "multilinestring_text2 ::= GEOJSON_COMMA linestring_text multilinestring_text2", + /* 106 */ + "multilinestring_textz ::= GEOJSON_OPEN_BRACKET linestring_textz multilinestring_textz2 GEOJSON_CLOSE_BRACKET", + /* 107 */ "multilinestring_textz2 ::=", + /* 108 */ + "multilinestring_textz2 ::= GEOJSON_COMMA linestring_textz multilinestring_textz2", + /* 109 */ + "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", + /* 110 */ + "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", + /* 111 */ + "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", + /* 112 */ + "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", + /* 113 */ + "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", + /* 114 */ + "multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE", + /* 115 */ + "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", + /* 116 */ + "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", + /* 117 */ + "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", + /* 118 */ + "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", + /* 119 */ + "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", + /* 120 */ + "multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE", + /* 121 */ + "multipolygon_text ::= GEOJSON_OPEN_BRACKET polygon_text multipolygon_text2 GEOJSON_CLOSE_BRACKET", + /* 122 */ "multipolygon_text2 ::=", + /* 123 */ + "multipolygon_text2 ::= GEOJSON_COMMA polygon_text multipolygon_text2", + /* 124 */ + "multipolygon_textz ::= GEOJSON_OPEN_BRACKET polygon_textz multipolygon_textz2 GEOJSON_CLOSE_BRACKET", + /* 125 */ "multipolygon_textz2 ::=", + /* 126 */ + "multipolygon_textz2 ::= GEOJSON_COMMA polygon_textz multipolygon_textz2", + /* 127 */ + "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", + /* 128 */ + "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", + /* 129 */ + "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", + /* 130 */ + "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", + /* 131 */ + "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", + /* 132 */ + "geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE", + /* 133 */ "geocollz ::= GEOJSON_GEOMETRYCOLLECTION geocoll_textz", + /* 134 */ + "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", + /* 135 */ + "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", + /* 136 */ + "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", + /* 137 */ + "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", + /* 138 */ + "geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE", + /* 139 */ + "geocoll_text ::= GEOJSON_OPEN_BRACKET coll_point geocoll_text2 GEOJSON_CLOSE_BRACKET", + /* 140 */ + "geocoll_text ::= GEOJSON_OPEN_BRACKET coll_linestring geocoll_text2 GEOJSON_CLOSE_BRACKET", + /* 141 */ + "geocoll_text ::= GEOJSON_OPEN_BRACKET coll_polygon geocoll_text2 GEOJSON_CLOSE_BRACKET", + /* 142 */ "geocoll_text2 ::=", + /* 143 */ "geocoll_text2 ::= GEOJSON_COMMA coll_point geocoll_text2", + /* 144 */ "geocoll_text2 ::= GEOJSON_COMMA coll_linestring geocoll_text2", + /* 145 */ "geocoll_text2 ::= GEOJSON_COMMA coll_polygon geocoll_text2", + /* 146 */ + "geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_pointz geocoll_textz2 GEOJSON_CLOSE_BRACKET", + /* 147 */ + "geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_linestringz geocoll_textz2 GEOJSON_CLOSE_BRACKET", + /* 148 */ + "geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_polygonz geocoll_textz2 GEOJSON_CLOSE_BRACKET", + /* 149 */ "geocoll_textz2 ::=", + /* 150 */ "geocoll_textz2 ::= GEOJSON_COMMA coll_pointz geocoll_textz2", + /* 151 */ + "geocoll_textz2 ::= GEOJSON_COMMA coll_linestringz geocoll_textz2", + /* 152 */ "geocoll_textz2 ::= GEOJSON_COMMA coll_polygonz geocoll_textz2", + /* 153 */ + "coll_point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE", + /* 154 */ + "coll_pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE", + /* 155 */ + "coll_linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE", + /* 156 */ + "coll_linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE", + /* 157 */ + "coll_polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE", + /* 158 */ + "coll_polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE", +}; +#endif /* NDEBUG */ + + +#if YYSTACKDEPTH<=0 +/* +** Try to increase the size of the parser stack. +*/ +static void +yyGrowStack (yyParser * p) +{ + int newSize; + yyStackEntry *pNew; + + newSize = p->yystksz * 2 + 100; + pNew = realloc (p->yystack, newSize * sizeof (pNew[0])); + if (pNew) + { + p->yystack = pNew; + p->yystksz = newSize; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sStack grows to %d entries!\n", + yyTracePrompt, p->yystksz); + } +#endif + } +} +#endif + +/* +** This function allocates a new parser. +** The only argument is a pointer to a function which works like +** malloc. +** +** Inputs: +** A pointer to the function used to allocate memory. +** +** Outputs: +** A pointer to a parser. This pointer is used in subsequent calls +** to Parse and ParseFree. +*/ +void * +ParseAlloc (void *(*mallocProc) (size_t)) +{ + yyParser *pParser; + pParser = (yyParser *) (*mallocProc) ((size_t) sizeof (yyParser)); + if (pParser) + { + pParser->yyidx = -1; +#ifdef YYTRACKMAXSTACKDEPTH + pParser->yyidxMax = 0; +#endif +#if YYSTACKDEPTH<=0 + pParser->yystack = NULL; + pParser->yystksz = 0; + yyGrowStack (pParser); +#endif + } + return pParser; +} + +/* The following function deletes the value associated with a +** symbol. The symbol can be either a terminal or nonterminal. +** "yymajor" is the symbol code, and "yypminor" is a pointer to +** the value. +*/ +static void +yy_destructor (yyParser * yypParser, /* The parser */ + YYCODETYPE yymajor, /* Type code for object to destroy */ + YYMINORTYPE * yypminor /* The object to be destroyed */ + ) +{ + switch (yymajor) + { + /* Here is inserted the actions which take place when a + ** terminal or non-terminal is destroyed. This can happen + ** when the symbol is popped from the stack during a + ** reduce or during error processing or when a parser is + ** being destroyed before it is finished parsing. + ** + ** Note: during a reduce, the only symbols destroyed are those + ** which appear on the RHS of the rule, but which are not used + ** inside the C code. + */ + default: + break; /* If no destructor action specified: do nothing */ + } +} + +/* +** Pop the parser's stack once. +** +** If there is a destructor routine associated with the token which +** is popped from the stack, then call it. +** +** Return the major token number for the symbol popped. +*/ +static int +yy_pop_parser_stack (yyParser * pParser) +{ + YYCODETYPE yymajor; + yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; + + if (pParser->yyidx < 0) + return 0; +#ifndef NDEBUG + if (yyTraceFILE && pParser->yyidx >= 0) + { + fprintf (yyTraceFILE, "%sPopping %s\n", + yyTracePrompt, yyTokenName[yytos->major]); + } +#endif + yymajor = yytos->major; + yy_destructor (pParser, yymajor, &yytos->minor); + pParser->yyidx--; + return yymajor; +} + +/* +** Deallocate and destroy a parser. Destructors are all called for +** all stack elements before shutting the parser down. +** +** Inputs: +**
      +**
    • A pointer to the parser. This should be a pointer +** obtained from ParseAlloc. +**
    • A pointer to a function used to reclaim memory obtained +** from malloc. +**
    +*/ +void +ParseFree (void *p, /* The parser to be deleted */ + void (*freeProc) (void *) /* Function used to reclaim memory */ + ) +{ + yyParser *pParser = (yyParser *) p; + if (pParser == 0) + return; + while (pParser->yyidx >= 0) + yy_pop_parser_stack (pParser); +#if YYSTACKDEPTH<=0 + free (pParser->yystack); +#endif + (*freeProc) ((void *) pParser); +} + +/* +** Return the peak depth of the stack for a parser. +*/ +#ifdef YYTRACKMAXSTACKDEPTH +int +ParseStackPeak (void *p) +{ + yyParser *pParser = (yyParser *) p; + return pParser->yyidxMax; +} +#endif + +/* +** Find the appropriate action for a parser given the terminal +** look-ahead token iLookAhead. +** +** If the look-ahead token is YYNOCODE, then check to see if the action is +** independent of the look-ahead. If it is, return the action, otherwise +** return YY_NO_ACTION. +*/ +static int +yy_find_shift_action (yyParser * pParser, /* The parser */ + YYCODETYPE iLookAhead /* The look-ahead token */ + ) +{ + int i; + int stateno = pParser->yystack[pParser->yyidx].stateno; + + if (stateno > YY_SHIFT_MAX + || (i = yy_shift_ofst[stateno]) == YY_SHIFT_USE_DFLT) + { + return yy_default[stateno]; + } + assert (iLookAhead != YYNOCODE); + i += iLookAhead; + if (i < 0 || i >= YY_SZ_ACTTAB || yy_lookahead[i] != iLookAhead) + { + if (iLookAhead > 0) + { +#ifdef YYFALLBACK + YYCODETYPE iFallback; /* Fallback token */ + if (iLookAhead < sizeof (yyFallback) / sizeof (yyFallback[0]) + && (iFallback = yyFallback[iLookAhead]) != 0) + { +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sFALLBACK %s => %s\n", + yyTracePrompt, yyTokenName[iLookAhead], + yyTokenName[iFallback]); + } +#endif + return yy_find_shift_action (pParser, iFallback); + } +#endif +#ifdef YYWILDCARD + { + int j = i - iLookAhead + YYWILDCARD; + if (j >= 0 && j < YY_SZ_ACTTAB + && yy_lookahead[j] == YYWILDCARD) + { +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sWILDCARD %s => %s\n", + yyTracePrompt, yyTokenName[iLookAhead], + yyTokenName[YYWILDCARD]); + } +#endif /* NDEBUG */ + return yy_action[j]; + } + } +#endif /* YYWILDCARD */ + } + return yy_default[stateno]; + } + else + { + return yy_action[i]; + } +} + +/* +** Find the appropriate action for a parser given the non-terminal +** look-ahead token iLookAhead. +** +** If the look-ahead token is YYNOCODE, then check to see if the action is +** independent of the look-ahead. If it is, return the action, otherwise +** return YY_NO_ACTION. +*/ +static int +yy_find_reduce_action (int stateno, /* Current state number */ + YYCODETYPE iLookAhead /* The look-ahead token */ + ) +{ + int i; +#ifdef YYERRORSYMBOL + if (stateno > YY_REDUCE_MAX) + { + return yy_default[stateno]; + } +#else + assert (stateno <= YY_REDUCE_MAX); +#endif + i = yy_reduce_ofst[stateno]; + assert (i != YY_REDUCE_USE_DFLT); + assert (iLookAhead != YYNOCODE); + i += iLookAhead; +#ifdef YYERRORSYMBOL + if (i < 0 || i >= YY_SZ_ACTTAB || yy_lookahead[i] != iLookAhead) + { + return yy_default[stateno]; + } +#else + assert (i >= 0 && i < YY_SZ_ACTTAB); + assert (yy_lookahead[i] == iLookAhead); +#endif + return yy_action[i]; +} + +/* +** The following routine is called if the stack overflows. +*/ +static void +yyStackOverflow (yyParser * yypParser, YYMINORTYPE * yypMinor) +{ + ParseARG_FETCH; + yypParser->yyidx--; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sStack Overflow!\n", yyTracePrompt); + } +#endif + while (yypParser->yyidx >= 0) + yy_pop_parser_stack (yypParser); + /* Here code is inserted which will execute if the parser + ** stack every overflows */ + + spatialite_e ("Giving up. Parser stack overflow\n"); + ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ +} + +/* +** Perform a shift action. +*/ +static void +yy_shift (yyParser * yypParser, /* The parser to be shifted */ + int yyNewState, /* The new state to shift in */ + int yyMajor, /* The major token to shift in */ + YYMINORTYPE * yypMinor /* Pointer to the minor token to shift in */ + ) +{ + yyStackEntry *yytos; + yypParser->yyidx++; +#ifdef YYTRACKMAXSTACKDEPTH + if (yypParser->yyidx > yypParser->yyidxMax) + { + yypParser->yyidxMax = yypParser->yyidx; + } +#endif +#if YYSTACKDEPTH>0 + if (yypParser->yyidx >= YYSTACKDEPTH) + { + yyStackOverflow (yypParser, yypMinor); + return; + } +#else + if (yypParser->yyidx >= yypParser->yystksz) + { + yyGrowStack (yypParser); + if (yypParser->yyidx >= yypParser->yystksz) + { + yyStackOverflow (yypParser, yypMinor); + return; + } + } +#endif + yytos = &yypParser->yystack[yypParser->yyidx]; + yytos->stateno = (YYACTIONTYPE) yyNewState; + yytos->major = (YYCODETYPE) yyMajor; + yytos->minor = *yypMinor; +#ifndef NDEBUG + if (yyTraceFILE && yypParser->yyidx > 0) + { + int i; + fprintf (yyTraceFILE, "%sShift %d\n", yyTracePrompt, yyNewState); + fprintf (yyTraceFILE, "%sStack:", yyTracePrompt); + for (i = 1; i <= yypParser->yyidx; i++) + fprintf (yyTraceFILE, " %s", + yyTokenName[yypParser->yystack[i].major]); + fprintf (yyTraceFILE, "\n"); + } +#endif +} + +/* The following table contains information about every rule that +** is used during the reduce. +*/ +static const struct +{ + YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ + unsigned char nrhs; /* Number of right-hand side symbols in the rule */ +} yyRuleInfo[] = +{ + { + 26, 1}, + { + 27, 0}, + { + 27, 3}, + { + 28, 1}, + { + 29, 1}, + { + 30, 1}, + { + 30, 1}, + { + 30, 1}, + { + 30, 1}, + { + 30, 1}, + { + 30, 1}, + { + 30, 1}, + { + 30, 1}, + { + 30, 1}, + { + 30, 1}, + { + 30, 1}, + { + 30, 1}, + { + 30, 1}, + { + 30, 1}, + { + 31, 9}, + { + 31, 15}, + { + 31, 13}, + { + 31, 13}, + { + 31, 19}, + { + 31, 19}, + { + 32, 9}, + { + 32, 15}, + { + 32, 13}, + { + 32, 13}, + { + 31, 19}, + { + 31, 19}, + { + 46, 7}, + { + 47, 13}, + { + 48, 13}, + { + 45, 5}, + { + 49, 7}, + { + 50, 1}, + { + 51, 1}, + { + 52, 1}, + { + 53, 0}, + { + 53, 3}, + { + 54, 0}, + { + 54, 3}, + { + 33, 9}, + { + 33, 15}, + { + 33, 13}, + { + 33, 13}, + { + 33, 19}, + { + 33, 19}, + { + 34, 9}, + { + 34, 15}, + { + 34, 13}, + { + 34, 13}, + { + 34, 19}, + { + 34, 19}, + { + 55, 6}, + { + 56, 6}, + { + 35, 9}, + { + 35, 15}, + { + 35, 13}, + { + 35, 13}, + { + 35, 19}, + { + 35, 19}, + { + 36, 9}, + { + 36, 15}, + { + 36, 13}, + { + 36, 13}, + { + 36, 19}, + { + 36, 19}, + { + 57, 4}, + { + 58, 4}, + { + 59, 10}, + { + 60, 0}, + { + 60, 3}, + { + 61, 10}, + { + 62, 0}, + { + 62, 3}, + { + 37, 9}, + { + 37, 15}, + { + 37, 13}, + { + 37, 13}, + { + 37, 19}, + { + 37, 19}, + { + 38, 9}, + { + 38, 15}, + { + 38, 13}, + { + 38, 13}, + { + 38, 19}, + { + 38, 19}, + { + 63, 4}, + { + 64, 4}, + { + 39, 9}, + { + 39, 15}, + { + 39, 13}, + { + 39, 13}, + { + 39, 19}, + { + 39, 19}, + { + 40, 9}, + { + 40, 15}, + { + 40, 13}, + { + 40, 13}, + { + 40, 19}, + { + 40, 19}, + { + 65, 4}, + { + 67, 0}, + { + 67, 3}, + { + 66, 4}, + { + 68, 0}, + { + 68, 3}, + { + 41, 9}, + { + 41, 15}, + { + 41, 13}, + { + 41, 13}, + { + 41, 19}, + { + 41, 19}, + { + 42, 9}, + { + 42, 15}, + { + 42, 13}, + { + 42, 13}, + { + 42, 19}, + { + 42, 19}, + { + 69, 4}, + { + 71, 0}, + { + 71, 3}, + { + 70, 4}, + { + 72, 0}, + { + 72, 3}, + { + 43, 9}, + { + 43, 15}, + { + 43, 13}, + { + 43, 13}, + { + 43, 19}, + { + 43, 19}, + { + 44, 2}, + { + 44, 15}, + { + 44, 13}, + { + 44, 13}, + { + 44, 19}, + { + 44, 19}, + { + 73, 4}, + { + 73, 4}, + { + 73, 4}, + { + 76, 0}, + { + 76, 3}, + { + 76, 3}, + { + 76, 3}, + { + 74, 4}, + { + 74, 4}, + { + 74, 4}, + { + 80, 0}, + { + 80, 3}, + { + 80, 3}, + { + 80, 3}, + { + 75, 9}, + { + 79, 9}, + { + 77, 9}, + { + 81, 9}, + { + 78, 9}, + { +82, 9},}; + +static void yy_accept (yyParser *); /* Forward Declaration */ + +/* +** Perform a reduce action and the shift that must immediately +** follow the reduce. +*/ +static void +yy_reduce (yyParser * yypParser, /* The parser */ + int yyruleno /* Number of the rule by which to reduce */ + ) +{ + int yygoto; /* The next state */ + int yyact; /* The next action */ + YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ + yyStackEntry *yymsp; /* The top of the parser's stack */ + int yysize; /* Amount to pop the stack */ + ParseARG_FETCH; + yymsp = &yypParser->yystack[yypParser->yyidx]; +#ifndef NDEBUG + if (yyTraceFILE && yyruleno >= 0 + && yyruleno < (int) (sizeof (yyRuleName) / sizeof (yyRuleName[0]))) + { + fprintf (yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt, + yyRuleName[yyruleno]); + } +#endif /* NDEBUG */ + + /* Silence complaints from purify about yygotominor being uninitialized + ** in some cases when it is copied into the stack after the following + ** switch. yygotominor is uninitialized when a rule reduces that does + ** not set the value of its left-hand side nonterminal. Leaving the + ** value of the nonterminal uninitialized is utterly harmless as long + ** as the value is never used. So really the only thing this code + ** accomplishes is to quieten purify. + ** + ** 2007-01-16: The wireshark project (www.wireshark.org) reports that + ** without this code, their parser segfaults. I'm not sure what there + ** parser is doing to make this happen. This is the second bug report + ** from wireshark this week. Clearly they are stressing Lemon in ways + ** that it has not been previously stressed... (SQLite ticket #2172) + */ + /*memset(&yygotominor, 0, sizeof(yygotominor)); */ + yygotominor = yyzerominor; + + + switch (yyruleno) + { + /* Beginning here are the reduction cases. A typical example + ** follows: + ** case 0: + ** #line + ** { ... } // User supplied code + ** #line + ** break; + */ + case 5: /* geo_text ::= point */ + case 6: /* geo_text ::= pointz */ + yytestcase (yyruleno == 6); + case 7: /* geo_text ::= linestring */ + yytestcase (yyruleno == 7); + case 8: /* geo_text ::= linestringz */ + yytestcase (yyruleno == 8); + case 9: /* geo_text ::= polygon */ + yytestcase (yyruleno == 9); + case 10: /* geo_text ::= polygonz */ + yytestcase (yyruleno == 10); + case 11: /* geo_text ::= multipoint */ + yytestcase (yyruleno == 11); + case 12: /* geo_text ::= multipointz */ + yytestcase (yyruleno == 12); + case 13: /* geo_text ::= multilinestring */ + yytestcase (yyruleno == 13); + case 14: /* geo_text ::= multilinestringz */ + yytestcase (yyruleno == 14); + case 15: /* geo_text ::= multipolygon */ + yytestcase (yyruleno == 15); + case 16: /* geo_text ::= multipolygonz */ + yytestcase (yyruleno == 16); + case 17: /* geo_text ::= geocoll */ + yytestcase (yyruleno == 17); + case 18: /* geo_text ::= geocollz */ + yytestcase (yyruleno == 18); + { + p_data->result = yymsp[0].minor.yy0; + } + break; + case 19: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ + case 20: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 20); + case 25: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 25); + case 26: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 26); + { + yygotominor.yy0 = + geoJSON_buildGeomFromPoint (p_data, + (gaiaPointPtr) yymsp[-1].minor. + yy0); + } + break; + case 21: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ + case 22: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 22); + case 27: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 27); + case 28: /* pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 28); + { + yygotominor.yy0 = + geoJSON_buildGeomFromPointSrid (p_data, + (gaiaPointPtr) + yymsp[-1].minor.yy0, + (int *) yymsp[-5].minor.yy0); + } + break; + case 23: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ + case 24: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 24); + case 29: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 29); + case 30: /* point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 30); + { + yygotominor.yy0 = + geoJSON_buildGeomFromPointSrid (p_data, + (gaiaPointPtr) + yymsp[-1].minor.yy0, + (int *) yymsp[-11].minor.yy0); + } + break; + case 32: /* short_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON short_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE */ + case 33: /* long_crs ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON long_srid GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 33); + { + yygotominor.yy0 = yymsp[-2].minor.yy0; + } + break; + case 34: /* point_coordxy ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET */ + { + yygotominor.yy0 = + (void *) geoJSON_point_xy (p_data, + (double *) yymsp[-3].minor.yy0, + (double *) yymsp[-1].minor.yy0); + } + break; + case 35: /* point_coordxyz ::= GEOJSON_OPEN_BRACKET coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_CLOSE_BRACKET */ + { + yygotominor.yy0 = + (void *) geoJSON_point_xyz (p_data, + (double *) yymsp[-5].minor.yy0, + (double *) yymsp[-3].minor.yy0, + (double *) yymsp[-1].minor.yy0); + } + break; + case 36: /* coord ::= GEOJSON_NUM */ + case 37: /* short_srid ::= GEOJSON_SHORT_SRID */ + yytestcase (yyruleno == 37); + case 38: /* long_srid ::= GEOJSON_LONG_SRID */ + yytestcase (yyruleno == 38); + case 133: /* geocollz ::= GEOJSON_GEOMETRYCOLLECTION geocoll_textz */ + yytestcase (yyruleno == 133); + { + yygotominor.yy0 = yymsp[0].minor.yy0; + } + break; + case 39: /* extra_pointsxy ::= */ + case 41: /* extra_pointsxyz ::= */ + yytestcase (yyruleno == 41); + case 72: /* extra_rings ::= */ + yytestcase (yyruleno == 72); + case 75: /* extra_ringsz ::= */ + yytestcase (yyruleno == 75); + case 104: /* multilinestring_text2 ::= */ + yytestcase (yyruleno == 104); + case 107: /* multilinestring_textz2 ::= */ + yytestcase (yyruleno == 107); + case 122: /* multipolygon_text2 ::= */ + yytestcase (yyruleno == 122); + case 125: /* multipolygon_textz2 ::= */ + yytestcase (yyruleno == 125); + case 142: /* geocoll_text2 ::= */ + yytestcase (yyruleno == 142); + case 149: /* geocoll_textz2 ::= */ + yytestcase (yyruleno == 149); + { + yygotominor.yy0 = NULL; + } + break; + case 40: /* extra_pointsxy ::= GEOJSON_COMMA point_coordxy extra_pointsxy */ + case 42: /* extra_pointsxyz ::= GEOJSON_COMMA point_coordxyz extra_pointsxyz */ + yytestcase (yyruleno == 42); + { + ((gaiaPointPtr) yymsp[-1].minor.yy0)->Next = + (gaiaPointPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 43: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ + case 44: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 44); + case 49: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 49); + case 50: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 50); + { + yygotominor.yy0 = + geoJSON_buildGeomFromLinestring (p_data, + (gaiaLinestringPtr) + yymsp[-1].minor.yy0); + } + break; + case 45: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ + case 46: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 46); + case 51: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 51); + case 52: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 52); + { + yygotominor.yy0 = + geoJSON_buildGeomFromLinestringSrid (p_data, + (gaiaLinestringPtr) + yymsp[-1].minor.yy0, + (int *) yymsp[-5].minor. + yy0); + } + break; + case 47: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ + case 48: /* linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 48); + case 53: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 53); + case 54: /* linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 54); + { + yygotominor.yy0 = + geoJSON_buildGeomFromLinestringSrid (p_data, + (gaiaLinestringPtr) + yymsp[-1].minor.yy0, + (int *) yymsp[-11].minor. + yy0); + } + break; + case 55: /* linestring_text ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + yygotominor.yy0 = + (void *) geoJSON_linestring_xy (p_data, + (gaiaPointPtr) + yymsp[-4].minor.yy0); + } + break; + case 56: /* linestring_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + yygotominor.yy0 = + (void *) geoJSON_linestring_xyz (p_data, + (gaiaPointPtr) + yymsp[-4].minor.yy0); + } + break; + case 57: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ + case 58: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 58); + case 63: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 63); + case 64: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 64); + { + yygotominor.yy0 = + geoJSON_buildGeomFromPolygon (p_data, + (gaiaPolygonPtr) + yymsp[-1].minor.yy0); + } + break; + case 59: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ + case 60: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 60); + case 65: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 65); + case 66: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 66); + { + yygotominor.yy0 = + geoJSON_buildGeomFromPolygonSrid (p_data, + (gaiaPolygonPtr) + yymsp[-1].minor.yy0, + (int *) yymsp[-5].minor. + yy0); + } + break; + case 61: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ + case 62: /* polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 62); + case 67: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 67); + case 68: /* polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 68); + { + yygotominor.yy0 = + geoJSON_buildGeomFromPolygonSrid (p_data, + (gaiaPolygonPtr) + yymsp[-1].minor.yy0, + (int *) yymsp[-11].minor. + yy0); + } + break; + case 69: /* polygon_text ::= GEOJSON_OPEN_BRACKET ring extra_rings GEOJSON_CLOSE_BRACKET */ + { + ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = + (gaiaRingPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) geoJSON_polygon_xy (p_data, + (gaiaRingPtr) yymsp[-2].minor. + yy0); + } + break; + case 70: /* polygon_textz ::= GEOJSON_OPEN_BRACKET ringz extra_ringsz GEOJSON_CLOSE_BRACKET */ + { + ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = + (gaiaRingPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) geoJSON_polygon_xyz (p_data, + (gaiaRingPtr) yymsp[-2].minor. + yy0); + } + break; + case 71: /* ring ::= GEOJSON_OPEN_BRACKET point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy GEOJSON_COMMA point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-6].minor.yy0; + ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-4].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) geoJSON_ring_xy (p_data, + (gaiaPointPtr) yymsp[-8].minor.yy0); + } + break; + case 73: /* extra_rings ::= GEOJSON_COMMA ring extra_rings */ + case 76: /* extra_ringsz ::= GEOJSON_COMMA ringz extra_ringsz */ + yytestcase (yyruleno == 76); + { + ((gaiaRingPtr) yymsp[-1].minor.yy0)->Next = + (gaiaRingPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 74: /* ringz ::= GEOJSON_OPEN_BRACKET point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz GEOJSON_COMMA point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-6].minor.yy0; + ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-4].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) geoJSON_ring_xyz (p_data, + (gaiaPointPtr) yymsp[-8].minor. + yy0); + } + break; + case 77: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ + case 78: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 78); + case 83: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 83); + case 84: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 84); + case 91: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 91); + case 92: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 92); + case 97: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 97); + case 98: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 98); + case 109: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 109); + case 110: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 110); + case 115: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 115); + case 116: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 116); + case 127: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 127); + case 128: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 128); + case 134: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 134); + { + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 79: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ + case 80: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 80); + case 85: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 85); + case 86: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 86); + case 93: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 93); + case 94: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 94); + case 99: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 99); + case 100: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 100); + case 111: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 111); + case 112: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 112); + case 117: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 117); + case 118: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 118); + case 129: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 129); + case 130: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 130); + case 135: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 135); + case 136: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 136); + { + yygotominor.yy0 = + (void *) geoJSON_setSrid ((gaiaGeomCollPtr) yymsp[-1].minor. + yy0, (int *) yymsp[-5].minor.yy0); + } + break; + case 81: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ + case 82: /* multipoint ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 82); + case 87: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 87); + case 88: /* multipointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipoint_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 88); + case 95: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 95); + case 96: /* multilinestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 96); + case 101: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 101); + case 102: /* multilinestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multilinestring_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 102); + case 113: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 113); + case 114: /* multipolygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 114); + case 119: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 119); + case 120: /* multipolygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON multipolygon_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 120); + case 131: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 131); + case 132: /* geocoll ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_text GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 132); + case 137: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON short_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 137); + case 138: /* geocollz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA GEOJSON_CRS GEOJSON_COLON long_crs GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS GEOJSON_COLON geocoll_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 138); + { + yygotominor.yy0 = + (void *) geoJSON_setSrid ((gaiaGeomCollPtr) yymsp[-1].minor. + yy0, (int *) yymsp[-11].minor.yy0); + } + break; + case 89: /* multipoint_text ::= GEOJSON_OPEN_BRACKET point_coordxy extra_pointsxy GEOJSON_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) geoJSON_multipoint_xy (p_data, + (gaiaPointPtr) + yymsp[-2].minor.yy0); + } + break; + case 90: /* multipoint_textz ::= GEOJSON_OPEN_BRACKET point_coordxyz extra_pointsxyz GEOJSON_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) geoJSON_multipoint_xyz (p_data, + (gaiaPointPtr) + yymsp[-2].minor.yy0); + } + break; + case 103: /* multilinestring_text ::= GEOJSON_OPEN_BRACKET linestring_text multilinestring_text2 GEOJSON_CLOSE_BRACKET */ + { + ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = + (gaiaLinestringPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) geoJSON_multilinestring_xy (p_data, + (gaiaLinestringPtr) + yymsp[-2].minor.yy0); + } + break; + case 105: /* multilinestring_text2 ::= GEOJSON_COMMA linestring_text multilinestring_text2 */ + case 108: /* multilinestring_textz2 ::= GEOJSON_COMMA linestring_textz multilinestring_textz2 */ + yytestcase (yyruleno == 108); + { + ((gaiaLinestringPtr) yymsp[-1].minor.yy0)->Next = + (gaiaLinestringPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 106: /* multilinestring_textz ::= GEOJSON_OPEN_BRACKET linestring_textz multilinestring_textz2 GEOJSON_CLOSE_BRACKET */ + { + ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = + (gaiaLinestringPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) geoJSON_multilinestring_xyz (p_data, + (gaiaLinestringPtr) + yymsp[-2].minor.yy0); + } + break; + case 121: /* multipolygon_text ::= GEOJSON_OPEN_BRACKET polygon_text multipolygon_text2 GEOJSON_CLOSE_BRACKET */ + { + ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPolygonPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) geoJSON_multipolygon_xy (p_data, + (gaiaPolygonPtr) + yymsp[-2].minor.yy0); + } + break; + case 123: /* multipolygon_text2 ::= GEOJSON_COMMA polygon_text multipolygon_text2 */ + case 126: /* multipolygon_textz2 ::= GEOJSON_COMMA polygon_textz multipolygon_textz2 */ + yytestcase (yyruleno == 126); + { + ((gaiaPolygonPtr) yymsp[-1].minor.yy0)->Next = + (gaiaPolygonPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 124: /* multipolygon_textz ::= GEOJSON_OPEN_BRACKET polygon_textz multipolygon_textz2 GEOJSON_CLOSE_BRACKET */ + { + ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPolygonPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) geoJSON_multipolygon_xyz (p_data, + (gaiaPolygonPtr) + yymsp[-2].minor.yy0); + } + break; + case 139: /* geocoll_text ::= GEOJSON_OPEN_BRACKET coll_point geocoll_text2 GEOJSON_CLOSE_BRACKET */ + case 140: /* geocoll_text ::= GEOJSON_OPEN_BRACKET coll_linestring geocoll_text2 GEOJSON_CLOSE_BRACKET */ + yytestcase (yyruleno == 140); + case 141: /* geocoll_text ::= GEOJSON_OPEN_BRACKET coll_polygon geocoll_text2 GEOJSON_CLOSE_BRACKET */ + yytestcase (yyruleno == 141); + { + ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = + (gaiaGeomCollPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) geoJSON_geomColl_xy (p_data, + (gaiaGeomCollPtr) + yymsp[-2].minor.yy0); + } + break; + case 143: /* geocoll_text2 ::= GEOJSON_COMMA coll_point geocoll_text2 */ + case 144: /* geocoll_text2 ::= GEOJSON_COMMA coll_linestring geocoll_text2 */ + yytestcase (yyruleno == 144); + case 145: /* geocoll_text2 ::= GEOJSON_COMMA coll_polygon geocoll_text2 */ + yytestcase (yyruleno == 145); + case 150: /* geocoll_textz2 ::= GEOJSON_COMMA coll_pointz geocoll_textz2 */ + yytestcase (yyruleno == 150); + case 151: /* geocoll_textz2 ::= GEOJSON_COMMA coll_linestringz geocoll_textz2 */ + yytestcase (yyruleno == 151); + case 152: /* geocoll_textz2 ::= GEOJSON_COMMA coll_polygonz geocoll_textz2 */ + yytestcase (yyruleno == 152); + { + ((gaiaGeomCollPtr) yymsp[-1].minor.yy0)->Next = + (gaiaGeomCollPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 146: /* geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_pointz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ + case 147: /* geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_linestringz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ + yytestcase (yyruleno == 147); + case 148: /* geocoll_textz ::= GEOJSON_OPEN_BRACKET coll_polygonz geocoll_textz2 GEOJSON_CLOSE_BRACKET */ + yytestcase (yyruleno == 148); + { + ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = + (gaiaGeomCollPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) geoJSON_geomColl_xyz (p_data, + (gaiaGeomCollPtr) + yymsp[-2].minor.yy0); + } + break; + case 153: /* coll_point ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxy GEOJSON_CLOSE_BRACE */ + case 154: /* coll_pointz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON point_coordxyz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 154); + { + yygotominor.yy0 = + geoJSON_buildGeomFromPoint (p_data, + (gaiaPointPtr) yymsp[-1].minor. + yy0); + } + break; + case 155: /* coll_linestring ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_text GEOJSON_CLOSE_BRACE */ + case 156: /* coll_linestringz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON linestring_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 156); + { + yygotominor.yy0 = + geoJSON_buildGeomFromLinestring (p_data, + (gaiaLinestringPtr) + yymsp[-1].minor.yy0); + } + break; + case 157: /* coll_polygon ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_text GEOJSON_CLOSE_BRACE */ + case 158: /* coll_polygonz ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA GEOJSON_COORDS GEOJSON_COLON polygon_textz GEOJSON_CLOSE_BRACE */ + yytestcase (yyruleno == 158); + { + yygotominor.yy0 = + geoJSON_buildGeomFromPolygon (p_data, + (gaiaPolygonPtr) + yymsp[-1].minor.yy0); + } + break; + default: + /* (0) main ::= in */ yytestcase (yyruleno == 0); + /* (1) in ::= */ yytestcase (yyruleno == 1); + /* (2) in ::= in state GEOJSON_NEWLINE */ yytestcase (yyruleno == 2); + /* (3) state ::= program */ yytestcase (yyruleno == 3); + /* (4) program ::= geo_text */ yytestcase (yyruleno == 4); + /* (31) bbox ::= coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_COMMA coord */ + yytestcase (yyruleno == 31); + break; + }; + yygoto = yyRuleInfo[yyruleno].lhs; + yysize = yyRuleInfo[yyruleno].nrhs; + yypParser->yyidx -= yysize; + yyact = yy_find_reduce_action (yymsp[-yysize].stateno, (YYCODETYPE) yygoto); + if (yyact < YYNSTATE) + { +#ifdef NDEBUG + /* If we are not debugging and the reduce action popped at least + ** one element off the stack, then we can push the new element back + ** onto the stack here, and skip the stack overflow test in yy_shift(). + ** That gives a significant speed improvement. */ + if (yysize) + { + yypParser->yyidx++; + yymsp -= yysize - 1; + yymsp->stateno = (YYACTIONTYPE) yyact; + yymsp->major = (YYCODETYPE) yygoto; + yymsp->minor = yygotominor; + } + else +#endif + { + yy_shift (yypParser, yyact, yygoto, &yygotominor); + } + } + else + { + assert (yyact == YYNSTATE + YYNRULE + 1); + yy_accept (yypParser); + } +} + +/* +** The following code executes when the parse fails +*/ +#ifndef YYNOERRORRECOVERY +static void +yy_parse_failed (yyParser * yypParser /* The parser */ + ) +{ + ParseARG_FETCH; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sFail!\n", yyTracePrompt); + } +#endif + while (yypParser->yyidx >= 0) + yy_pop_parser_stack (yypParser); + /* Here code is inserted which will be executed whenever the + ** parser fails */ + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} +#endif /* YYNOERRORRECOVERY */ + +/* +** The following code executes when a syntax error first occurs. +*/ +static void +yy_syntax_error (yyParser * yypParser, /* The parser */ + int yymajor, /* The major type of the error token */ + YYMINORTYPE yyminor /* The minor type of the error token */ + ) +{ + ParseARG_FETCH; +#define TOKEN (yyminor.yy0) + +/* +** when the LEMON parser encounters an error +** then this global variable is set +*/ + p_data->geoJson_parse_error = 1; + p_data->result = NULL; + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} + +/* +** The following is executed when the parser accepts +*/ +static void +yy_accept (yyParser * yypParser /* The parser */ + ) +{ + ParseARG_FETCH; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sAccept!\n", yyTracePrompt); + } +#endif + while (yypParser->yyidx >= 0) + yy_pop_parser_stack (yypParser); + /* Here code is inserted which will be executed whenever the + ** parser accepts */ + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} + +/* The main parser program. +** The first argument is a pointer to a structure obtained from +** "ParseAlloc" which describes the current state of the parser. +** The second argument is the major token number. The third is +** the minor token. The fourth optional argument is whatever the +** user wants (and specified in the grammar) and is available for +** use by the action routines. +** +** Inputs: +**
      +**
    • A pointer to the parser (an opaque structure.) +**
    • The major token number. +**
    • The minor token number. +**
    • An option argument of a grammar-specified type. +**
    +** +** Outputs: +** None. +*/ +void +Parse (void *yyp, /* The parser */ + int yymajor, /* The major token code number */ + ParseTOKENTYPE yyminor /* The value for the token */ + ParseARG_PDECL /* Optional %extra_argument parameter */ + ) +{ + YYMINORTYPE yyminorunion; + int yyact; /* The parser action. */ + int yyendofinput; /* True if we are at the end of input */ +#ifdef YYERRORSYMBOL + int yyerrorhit = 0; /* True if yymajor has invoked an error */ +#endif + yyParser *yypParser; /* The parser */ + + /* (re)initialize the parser, if necessary */ + yypParser = (yyParser *) yyp; + if (yypParser->yyidx < 0) + { +#if YYSTACKDEPTH<=0 + if (yypParser->yystksz <= 0) + { + /*memset(&yyminorunion, 0, sizeof(yyminorunion)); */ + yyminorunion = yyzerominor; + yyStackOverflow (yypParser, &yyminorunion); + return; + } +#endif + yypParser->yyidx = 0; + yypParser->yyerrcnt = -1; + yypParser->yystack[0].stateno = 0; + yypParser->yystack[0].major = 0; + } + yyminorunion.yy0 = yyminor; + yyendofinput = (yymajor == 0); + ParseARG_STORE; + +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sInput %s\n", yyTracePrompt, + yyTokenName[yymajor]); + } +#endif + + do + { + yyact = yy_find_shift_action (yypParser, (YYCODETYPE) yymajor); + if (yyact < YYNSTATE) + { + assert (!yyendofinput); /* Impossible to shift the $ token */ + yy_shift (yypParser, yyact, yymajor, &yyminorunion); + yypParser->yyerrcnt--; + yymajor = YYNOCODE; + } + else if (yyact < YYNSTATE + YYNRULE) + { + yy_reduce (yypParser, yyact - YYNSTATE); + } + else + { + assert (yyact == YY_ERROR_ACTION); +#ifdef YYERRORSYMBOL + int yymx; +#endif +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sSyntax Error!\n", yyTracePrompt); + } +#endif +#ifdef YYERRORSYMBOL + /* A syntax error has occurred. + ** The response to an error depends upon whether or not the + ** grammar defines an error token "ERROR". + ** + ** This is what we do if the grammar does define ERROR: + ** + ** * Call the %syntax_error function. + ** + ** * Begin popping the stack until we enter a state where + ** it is legal to shift the error symbol, then shift + ** the error symbol. + ** + ** * Set the error count to three. + ** + ** * Begin accepting and shifting new tokens. No new error + ** processing will occur until three tokens have been + ** shifted successfully. + ** + */ + if (yypParser->yyerrcnt < 0) + { + yy_syntax_error (yypParser, yymajor, yyminorunion); + } + yymx = yypParser->yystack[yypParser->yyidx].major; + if (yymx == YYERRORSYMBOL || yyerrorhit) + { +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sDiscard input token %s\n", + yyTracePrompt, yyTokenName[yymajor]); + } +#endif + yy_destructor (yypParser, (YYCODETYPE) yymajor, + &yyminorunion); + yymajor = YYNOCODE; + } + else + { + while (yypParser->yyidx >= 0 && + yymx != YYERRORSYMBOL && + (yyact = + yy_find_reduce_action (yypParser->yystack + [yypParser->yyidx].stateno, + YYERRORSYMBOL)) >= + YYNSTATE) + { + yy_pop_parser_stack (yypParser); + } + if (yypParser->yyidx < 0 || yymajor == 0) + { + yy_destructor (yypParser, (YYCODETYPE) yymajor, + &yyminorunion); + yy_parse_failed (yypParser); + yymajor = YYNOCODE; + } + else if (yymx != YYERRORSYMBOL) + { + YYMINORTYPE u2; + u2.YYERRSYMDT = 0; + yy_shift (yypParser, yyact, YYERRORSYMBOL, &u2); + } + } + yypParser->yyerrcnt = 3; + yyerrorhit = 1; +#elif defined(YYNOERRORRECOVERY) + /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to + ** do any kind of error recovery. Instead, simply invoke the syntax + ** error routine and continue going as if nothing had happened. + ** + ** Applications can set this macro (for example inside %include) if + ** they intend to abandon the parse upon the first syntax error seen. + */ + yy_syntax_error (yypParser, yymajor, yyminorunion); + yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); + yymajor = YYNOCODE; + +#else /* YYERRORSYMBOL is not defined */ + /* This is what we do if the grammar does not define ERROR: + ** + ** * Report an error message, and throw away the input token. + ** + ** * If the input token is $, then fail the parse. + ** + ** As before, subsequent error messages are suppressed until + ** three input tokens have been successfully shifted. + */ + if (yypParser->yyerrcnt <= 0) + { + yy_syntax_error (yypParser, yymajor, yyminorunion); + } + yypParser->yyerrcnt = 3; + yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); + if (yyendofinput) + { + yy_parse_failed (yypParser); + } + yymajor = YYNOCODE; +#endif + } + } + while (yymajor != YYNOCODE && yypParser->yyidx >= 0); + return; +} diff --git a/src/spatialite/src/gaiageo/geoJSON.h b/src/spatialite/src/gaiageo/geoJSON.h new file mode 100644 index 0000000..15e55c8 --- /dev/null +++ b/src/spatialite/src/gaiageo/geoJSON.h @@ -0,0 +1,24 @@ +#define GEOJSON_NEWLINE 1 +#define GEOJSON_OPEN_BRACE 2 +#define GEOJSON_TYPE 3 +#define GEOJSON_COLON 4 +#define GEOJSON_POINT 5 +#define GEOJSON_COMMA 6 +#define GEOJSON_COORDS 7 +#define GEOJSON_CLOSE_BRACE 8 +#define GEOJSON_BBOX 9 +#define GEOJSON_OPEN_BRACKET 10 +#define GEOJSON_CLOSE_BRACKET 11 +#define GEOJSON_CRS 12 +#define GEOJSON_NAME 13 +#define GEOJSON_PROPS 14 +#define GEOJSON_NUM 15 +#define GEOJSON_SHORT_SRID 16 +#define GEOJSON_LONG_SRID 17 +#define GEOJSON_LINESTRING 18 +#define GEOJSON_POLYGON 19 +#define GEOJSON_MULTIPOINT 20 +#define GEOJSON_MULTILINESTRING 21 +#define GEOJSON_MULTIPOLYGON 22 +#define GEOJSON_GEOMETRYCOLLECTION 23 +#define GEOJSON_GEOMS 24 diff --git a/src/spatialite/src/gaiageo/gg_advanced.c b/src/spatialite/src/gaiageo/gg_advanced.c new file mode 100644 index 0000000..0c54e5f --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_advanced.c @@ -0,0 +1,2105 @@ +/* + + gg_advanced.c -- Gaia advanced geometric operations + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include + +#include + +GAIAGEO_DECLARE double +gaiaMeasureLength (int dims, double *coords, int vert) +{ +/* computes the total length */ + double lung = 0.0; + double xx1; + double xx2; + double yy1; + double yy2; + double x; + double y; + double z; + double m; + double dist; + int ind; + if (vert <= 0) + return lung; + if (dims == GAIA_XY_Z) + { + gaiaGetPointXYZ (coords, 0, &xx1, &yy1, &z); + } + else if (dims == GAIA_XY_M) + { + gaiaGetPointXYM (coords, 0, &xx1, &yy1, &m); + } + else if (dims == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (coords, 0, &xx1, &yy1, &z, &m); + } + else + { + gaiaGetPoint (coords, 0, &xx1, &yy1); + } + for (ind = 1; ind < vert; ind++) + { + if (dims == GAIA_XY_Z) + { + gaiaGetPointXYZ (coords, ind, &xx2, &yy2, &z); + } + else if (dims == GAIA_XY_M) + { + gaiaGetPointXYM (coords, ind, &xx2, &yy2, &m); + } + else if (dims == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (coords, ind, &xx2, &yy2, &z, &m); + } + else + { + gaiaGetPoint (coords, ind, &xx2, &yy2); + } + x = xx1 - xx2; + y = yy1 - yy2; + dist = sqrt ((x * x) + (y * y)); + lung += dist; + xx1 = xx2; + yy1 = yy2; + } + return lung; +} + +GAIAGEO_DECLARE double +gaiaMeasureArea (gaiaRingPtr ring) +{ +/* computes the area */ + int iv; + double xx; + double yy; + double x; + double y; + double z; + double m; + double area = 0.0; + if (!ring) + return 0.0; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, 0, &xx, &yy, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, 0, &xx, &yy, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, 0, &xx, &yy, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, 0, &xx, &yy); + } + for (iv = 1; iv < ring->Points; iv++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + area += ((xx * y) - (x * yy)); + xx = x; + yy = y; + } + area /= 2.0; + return fabs (area); +} + +GAIAGEO_DECLARE void +gaiaRingCentroid (gaiaRingPtr ring, double *rx, double *ry) +{ +/* computes the simple ring centroid */ + double cx = 0.0; + double cy = 0.0; + double xx; + double yy; + double x; + double y; + double z; + double m; + double coeff; + double area; + double term; + int iv; + if (!ring) + { + *rx = -DBL_MAX; + *ry = -DBL_MAX; + return; + } + area = gaiaMeasureArea (ring); + coeff = 1.0 / (area * 6.0); + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, 0, &xx, &yy, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, 0, &xx, &yy, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, 0, &xx, &yy, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, 0, &xx, &yy); + } + for (iv = 1; iv < ring->Points; iv++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + term = (xx * y) - (x * yy); + cx += (xx + x) * term; + cy += (yy + y) * term; + xx = x; + yy = y; + } + *rx = fabs (cx * coeff); + *ry = fabs (cy * coeff); +} + +GAIAGEO_DECLARE void +gaiaClockwise (gaiaRingPtr p) +{ +/* determines clockwise or anticlockwise direction */ + int ind; + int ix; + double xx; + double yy; + double x; + double y; + double z; + double m; + double area = 0.0; + for (ind = 0; ind < p->Points; ind++) + { + if (p->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (p->Coords, ind, &xx, &yy, &z); + } + else if (p->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (p->Coords, ind, &xx, &yy, &m); + } + else if (p->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (p->Coords, ind, &xx, &yy, &z, &m); + } + else + { + gaiaGetPoint (p->Coords, ind, &xx, &yy); + } + ix = (ind + 1) % p->Points; + if (p->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (p->Coords, ix, &x, &y, &z); + } + else if (p->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (p->Coords, ix, &x, &y, &m); + } + else if (p->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (p->Coords, ix, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (p->Coords, ix, &x, &y); + } + area += ((xx * y) - (x * yy)); + } + area /= 2.0; + if (area >= 0.0) + p->Clockwise = 0; + else + p->Clockwise = 1; +} + +GAIAGEO_DECLARE int +gaiaIsPointOnRingSurface (gaiaRingPtr ring, double pt_x, double pt_y) +{ +/* tests if a POINT falls inside a RING */ + int isInternal = 0; + int cnt; + int i; + int j; + double x; + double y; + double z; + double m; + double *vert_x; + double *vert_y; + double minx = DBL_MAX; + double miny = DBL_MAX; + double maxx = -DBL_MAX; + double maxy = -DBL_MAX; + cnt = ring->Points; + cnt--; /* ignoring last vertex because surely identical to the first one */ + if (cnt < 2) + return 0; +/* allocating and loading an array of vertices */ + vert_x = malloc (sizeof (double) * (cnt)); + vert_y = malloc (sizeof (double) * (cnt)); + for (i = 0; i < cnt; i++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, i, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, i, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, i, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, i, &x, &y); + } + vert_x[i] = x; + vert_y[i] = y; + if (x < minx) + minx = x; + if (x > maxx) + maxx = x; + if (y < miny) + miny = y; + if (y > maxy) + maxy = y; + } + if (pt_x < minx || pt_x > maxx) + goto end; /* outside the bounding box (x axis) */ + if (pt_y < miny || pt_y > maxy) + goto end; /* outside the bounding box (y axis) */ + for (i = 0, j = cnt - 1; i < cnt; j = i++) + { +/* The definitive reference is "Point in Polyon Strategies" by +/ Eric Haines [Gems IV] pp. 24-46. +/ The code in the Sedgewick book Algorithms (2nd Edition, p.354) is +/ incorrect. +*/ + if ((((vert_y[i] <= pt_y) && (pt_y < vert_y[j])) + || ((vert_y[j] <= pt_y) && (pt_y < vert_y[i]))) + && (pt_x < + (vert_x[j] - vert_x[i]) * (pt_y - vert_y[i]) / (vert_y[j] - + vert_y[i]) + + vert_x[i])) + isInternal = !isInternal; + } + end: + free (vert_x); + free (vert_y); + return isInternal; +} + +GAIAGEO_DECLARE double +gaiaMinDistance (double x0, double y0, int dims, double *coords, int n_vert) +{ +/* computing minimal distance between a POINT and a linestring/ring */ + double x; + double y; + double z; + double m; + double ox; + double oy; + double lineMag; + double u; + double px; + double py; + double dist; + double min_dist = DBL_MAX; + int iv; + if (n_vert < 2) + return min_dist; /* not a valid linestring */ +/* computing distance from first vertex */ + ox = *(coords + 0); + oy = *(coords + 1); + min_dist = sqrt (((x0 - ox) * (x0 - ox)) + ((y0 - oy) * (y0 - oy))); + for (iv = 1; iv < n_vert; iv++) + { + /* segment start-end coordinates */ + if (dims == GAIA_XY_Z) + { + gaiaGetPointXYZ (coords, iv - 1, &ox, &oy, &z); + gaiaGetPointXYZ (coords, iv, &x, &y, &z); + } + else if (dims == GAIA_XY_M) + { + gaiaGetPointXYM (coords, iv - 1, &ox, &oy, &m); + gaiaGetPointXYM (coords, iv, &x, &y, &m); + } + else if (dims == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (coords, iv - 1, &ox, &oy, &z, &m); + gaiaGetPointXYZM (coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (coords, iv - 1, &ox, &oy); + gaiaGetPoint (coords, iv, &x, &y); + } + /* computing distance from vertex */ + dist = sqrt (((x0 - x) * (x0 - x)) + ((y0 - y) * (y0 - y))); + if (dist < min_dist) + min_dist = dist; + /* computing a projection */ + lineMag = ((x - ox) * (x - ox)) + ((y - oy) * (y - oy)); + u = (((x0 - ox) * (x - ox)) + ((y0 - oy) * (y - oy))) / lineMag; + if (u < 0.0 || u > 1.0) + ; /* closest point does not fall within the line segment */ + else + { + px = ox + u * (x - ox); + py = oy + u * (y - oy); + dist = sqrt (((x0 - px) * (x0 - px)) + ((y0 - py) * (y0 - py))); + if (dist < min_dist) + min_dist = dist; + } + } + return min_dist; +} + +GAIAGEO_DECLARE int +gaiaIsPointOnPolygonSurface (gaiaPolygonPtr polyg, double x, double y) +{ +/* tests if a POINT falls inside a POLYGON */ + int ib; + gaiaRingPtr ring = polyg->Exterior; + if (gaiaIsPointOnRingSurface (ring, x, y)) + { + /* ok, the POINT falls inside the polygon */ + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + if (gaiaIsPointOnRingSurface (ring, x, y)) + { + /* no, the POINT fall inside some hole */ + return 0; + } + } + return 1; + } + return 0; +} + +GAIAGEO_DECLARE int +gaiaIntersect (double *x0, double *y0, double x1, double y1, double x2, + double y2, double x3, double y3, double x4, double y4) +{ +/* computes intersection [if any] between two line segments +/ the intersection POINT has coordinates (x0, y0) +/ first line is identified by(x1, y1) and (x2, y2) +/ second line is identified by (x3, y3) and (x4, y4) +*/ + double x; + double y; + double a1; + double b1; + double c1; + double a2; + double b2; + double c2; + double m1; + double m2; + double p; + double det_inv; + double minx1; + double miny1; + double maxx1; + double maxy1; + double minx2; + double miny2; + double maxx2; + double maxy2; + int ok1 = 0; + int ok2 = 0; +/* building line segment's MBRs */ + if (x2 < x1) + { + minx1 = x2; + maxx1 = x1; + } + else + { + minx1 = x1; + maxx1 = x2; + } + if (y2 < y1) + { + miny1 = y2; + maxy1 = y1; + } + else + { + miny1 = y1; + maxy1 = y2; + } + if (x4 < x3) + { + minx2 = x4; + maxx2 = x3; + } + else + { + minx2 = x3; + maxx2 = x4; + } + if (y4 < y3) + { + miny2 = y4; + maxy2 = y3; + } + else + { + miny2 = y3; + maxy2 = y4; + } +/* checking MBRs first */ + if (minx1 > maxx2) + return 0; + if (miny1 > maxy2) + return 0; + if (maxx1 < minx2) + return 0; + if (maxy1 < miny2) + return 0; + if (minx2 > maxx1) + return 0; + if (miny2 > maxy1) + return 0; + if (maxx2 < minx1) + return 0; + if (maxy2 < miny1) + return 0; +/* there is an MBRs intersection - proceeding */ + if ((x2 - x1) != 0.0) + m1 = (y2 - y1) / (x2 - x1); + else + m1 = DBL_MAX; + if ((x4 - x3) != 0) + m2 = (y4 - y3) / (x4 - x3); + else + m2 = DBL_MAX; + if (m1 == m2) /* parallel lines */ + return 0; + if (m1 == DBL_MAX) + c1 = y1; + else + c1 = (y1 - m1 * x1); + if (m2 == DBL_MAX) + c2 = y3; + else + c2 = (y3 - m2 * x3); + if (m1 == DBL_MAX) + { + x = x1; + p = m2 * x1; + y = p + c2; /* first line is vertical */ + goto check_bbox; + } + if (m2 == DBL_MAX) + { + x = x3; + p = m1 * x3; + y = p + c1; /* second line is vertical */ + goto check_bbox; + } + a1 = m1; + a2 = m2; + b1 = -1; + b2 = -1; + det_inv = 1 / (a1 * b2 - a2 * b1); + x = ((b1 * c2 - b2 * c1) * det_inv); + y = ((a2 * c1 - a1 * c2) * det_inv); +/* now checking if intersection falls within both segment boundaries */ + check_bbox: + if (x >= minx1 && x <= maxx1 && y >= miny1 && y <= maxy1) + ok1 = 1; + if (x >= minx2 && x <= maxx2 && y >= miny2 && y <= maxy2) + ok2 = 1; + if (ok1 && ok2) + { + /* intersection point falls within the segments */ + *x0 = x; + *y0 = y; + return 1; + } + return 0; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaSanitize (gaiaGeomCollPtr geom) +{ +/* +/ sanitizes a GEOMETRYCOLLECTION: +/ - repeated vertices are omitted +/ - ring closure is enforced anyway +*/ + int iv; + int ib; + double x = 0.0; + double y = 0.0; + double z = 0.0; + double m = 0.0; + double last_x = 0.0; + double last_y = 0.0; + double last_z = 0.0; + int points; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaLinestringPtr new_line; + gaiaPolygonPtr polyg; + gaiaPolygonPtr new_polyg; + gaiaGeomCollPtr new_geom; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + if (!geom) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + new_geom = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + new_geom = gaiaAllocGeomCollXYM (); + else if (geom->DimensionModel == GAIA_XY_Z_M) + new_geom = gaiaAllocGeomCollXYZM (); + else + new_geom = gaiaAllocGeomColl (); + new_geom->Srid = geom->Srid; + new_geom->DeclaredType = geom->DeclaredType; + point = geom->FirstPoint; + while (point) + { + /* copying POINTs */ + gaiaAddPointToGeomCollXYZM (new_geom, point->X, point->Y, point->Z, + point->M); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* sanitizing LINESTRINGs */ + points = 0; + for (iv = 0; iv < line->Points; iv++) + { + /* PASS I - checking points */ + z = 0.0; + m = 0.0; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + if (iv > 0) + { + if (last_x == x && last_y == y && last_z == z) + ; + else + points++; + } + else + points++; + last_x = x; + last_y = y; + last_z = z; + } + if (points < 2) + { + /* illegal LINESTRING - copying the original one */ + new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); + gaiaCopyLinestringCoords (new_line, line); + } + else + { + /* valid LINESTRING - sanitizing */ + new_line = gaiaAddLinestringToGeomColl (new_geom, points); + points = 0; + for (iv = 0; iv < line->Points; iv++) + { + /* PASS II - inserting points */ + z = 0.0; + m = 0.0; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + if (iv > 0) + { + if (last_x == x && last_y == y && last_z == z) + ; + else + { + if (new_line->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (new_line->Coords, + points, x, y, z); + } + else if (new_line->DimensionModel == + GAIA_XY_M) + { + gaiaSetPointXYM (new_line->Coords, + points, x, y, m); + } + else if (new_line->DimensionModel == + GAIA_XY_Z_M) + { + gaiaSetPointXYZM (new_line->Coords, + points, x, y, z, m); + } + else + { + gaiaSetPoint (new_line->Coords, points, + x, y); + } + points++; + } + } + else + { + if (new_line->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (new_line->Coords, points, x, + y, z); + } + else if (new_line->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (new_line->Coords, points, x, + y, m); + } + else if (new_line->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (new_line->Coords, points, x, + y, z, m); + } + else + { + gaiaSetPoint (new_line->Coords, points, x, y); + } + points++; + } + last_x = x; + last_y = y; + last_z = z; + } + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* copying POLYGONs */ + i_ring = polyg->Exterior; + /* sanitizing EXTERIOR RING */ + points = 0; + for (iv = 0; iv < i_ring->Points; iv++) + { + /* PASS I - checking points */ + z = 0.0; + m = 0.0; + if (i_ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (i_ring->Coords, iv, &x, &y, &z); + } + else if (i_ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (i_ring->Coords, iv, &x, &y, &m); + } + else if (i_ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (i_ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (i_ring->Coords, iv, &x, &y); + } + if (iv > 0) + { + if (last_x == x && last_y == y && last_z == z) + ; + else + points++; + } + else + points++; + last_x = x; + last_y = y; + last_z = z; + } + if (last_x == x && last_y == y && last_z == z) + ; + else + { + /* forcing RING closure */ + points++; + } + if (points < 4) + { + /* illegal RING - copying the original one */ + new_polyg = + gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, + polyg->NumInteriors); + o_ring = new_polyg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + } + else + { + /* valid RING - sanitizing */ + new_polyg = + gaiaAddPolygonToGeomColl (new_geom, points, + polyg->NumInteriors); + o_ring = new_polyg->Exterior; + points = 0; + for (iv = 0; iv < i_ring->Points; iv++) + { + /* PASS II - inserting points */ + z = 0.0; + m = 0.0; + if (i_ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (i_ring->Coords, iv, &x, &y, &z); + } + else if (i_ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (i_ring->Coords, iv, &x, &y, &m); + } + else if (i_ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (i_ring->Coords, iv, &x, &y, &z, + &m); + } + else + { + gaiaGetPoint (i_ring->Coords, iv, &x, &y); + } + if (iv > 0) + { + if (last_x == x && last_y == y && last_z == z) + ; + else + { + if (o_ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (o_ring->Coords, points, + x, y, z); + } + else if (o_ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (o_ring->Coords, points, + x, y, m); + } + else if (o_ring->DimensionModel == + GAIA_XY_Z_M) + { + gaiaSetPointXYZM (o_ring->Coords, + points, x, y, z, m); + } + else + { + gaiaSetPoint (o_ring->Coords, points, x, + y); + } + points++; + } + } + else + { + if (o_ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (o_ring->Coords, points, x, + y, z); + } + else if (o_ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (o_ring->Coords, points, x, + y, m); + } + else if (o_ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (o_ring->Coords, points, x, + y, z, m); + } + else + { + gaiaSetPoint (o_ring->Coords, points, x, y); + } + points++; + } + last_x = x; + last_y = y; + last_z = z; + } + } + /* PASS III - forcing RING closure */ + z = 0.0; + m = 0.0; + if (i_ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (i_ring->Coords, 0, &x, &y, &z); + } + else if (i_ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (i_ring->Coords, 0, &x, &y, &m); + } + else if (i_ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (i_ring->Coords, 0, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (i_ring->Coords, 0, &x, &y); + } + points = o_ring->Points - 1; + if (o_ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (o_ring->Coords, points, x, y, z); + } + else if (o_ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (o_ring->Coords, points, x, y, m); + } + else if (o_ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (o_ring->Coords, points, x, y, z, m); + } + else + { + gaiaSetPoint (o_ring->Coords, points, x, y); + } + for (ib = 0; ib < new_polyg->NumInteriors; ib++) + { + /* copying each INTERIOR RING [if any] */ + i_ring = polyg->Interiors + ib; + /* sanitizing an INTERIOR RING */ + points = 0; + for (iv = 0; iv < i_ring->Points; iv++) + { + /* PASS I - checking points */ + z = 0.0; + m = 0.0; + if (i_ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (i_ring->Coords, iv, &x, &y, &z); + } + else if (i_ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (i_ring->Coords, iv, &x, &y, &m); + } + else if (i_ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (i_ring->Coords, iv, &x, &y, &z, + &m); + } + else + { + gaiaGetPoint (i_ring->Coords, iv, &x, &y); + } + if (iv > 0) + { + if (last_x == x && last_y == y && last_z == z) + ; + else + points++; + } + else + points++; + last_x = x; + last_y = y; + last_z = z; + } + if (last_x == x && last_y == y && last_z == z) + ; + else + { + /* forcing RING closure */ + points++; + } + if (points < 4) + { + /* illegal RING - copying the original one */ + o_ring = + gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + else + { + /* valid RING - sanitizing */ + o_ring = gaiaAddInteriorRing (new_polyg, ib, points); + points = 0; + for (iv = 0; iv < i_ring->Points; iv++) + { + /* PASS II - inserting points */ + z = 0.0; + m = 0.0; + if (i_ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (i_ring->Coords, iv, &x, &y, + &z); + } + else if (i_ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (i_ring->Coords, iv, &x, &y, + &m); + } + else if (i_ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (i_ring->Coords, iv, &x, &y, + &z, &m); + } + else + { + gaiaGetPoint (i_ring->Coords, iv, &x, &y); + } + if (iv > 0) + { + if (last_x == x && last_y == y && last_z == z) + ; + else + { + if (o_ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (o_ring->Coords, + points, x, y, z); + } + else if (o_ring->DimensionModel == + GAIA_XY_M) + { + gaiaSetPointXYM (o_ring->Coords, + points, x, y, m); + } + else if (o_ring->DimensionModel == + GAIA_XY_Z_M) + { + gaiaSetPointXYZM (o_ring->Coords, + points, x, y, z, + m); + } + else + { + gaiaSetPoint (o_ring->Coords, + points, x, y); + } + points++; + } + } + else + { + if (o_ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (o_ring->Coords, points, + x, y, z); + } + else if (o_ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (o_ring->Coords, points, + x, y, m); + } + else if (o_ring->DimensionModel == + GAIA_XY_Z_M) + { + gaiaSetPointXYZM (o_ring->Coords, + points, x, y, z, m); + } + else + { + gaiaSetPoint (o_ring->Coords, points, x, + y); + } + points++; + } + last_x = x; + last_y = y; + last_z = z; + } + /* PASS III - forcing RING closure */ + z = 0.0; + m = 0.0; + if (i_ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (i_ring->Coords, 0, &x, &y, &z); + } + else if (i_ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (i_ring->Coords, 0, &x, &y, &m); + } + else if (i_ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (i_ring->Coords, 0, &x, &y, &z, + &m); + } + else + { + gaiaGetPoint (i_ring->Coords, 0, &x, &y); + } + points = o_ring->Points - 1; + if (o_ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (o_ring->Coords, points, x, y, z); + } + else if (o_ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (o_ring->Coords, points, x, y, m); + } + else if (o_ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (o_ring->Coords, points, x, y, z, + m); + } + else + { + gaiaSetPoint (o_ring->Coords, points, x, y); + } + } + } + polyg = polyg->Next; + } + return new_geom; +} + +static int +gaiaIsToxicLinestring (gaiaLinestringPtr line) +{ +/* checking a Linestring */ + if (line->Points < 2) + return 1; + return 0; + +/* not a valid Linestring, simply a degenerated Point */ + return 1; +} + +static int +gaiaIsToxicRing (gaiaRingPtr ring) +{ +/* checking a Ring */ + if (ring->Points < 4) + return 1; + return 0; +} + +GAIAGEO_DECLARE int +gaiaIsToxic (gaiaGeomCollPtr geom) +{ + return gaiaIsToxic_r (NULL, geom); +} + +GAIAGEO_DECLARE int +gaiaIsToxic_r (const void *cache, gaiaGeomCollPtr geom) +{ +/* +/ identifying toxic geometries +/ i.e. geoms making GEOS to crash !!! +*/ + int ib; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + if (!geom) + return 0; + if (gaiaIsEmpty (geom)) + return 1; + point = geom->FirstPoint; + while (point) + { + /* checking POINTs */ + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* checking LINESTRINGs */ + if (gaiaIsToxicLinestring (line)) + { + if (cache != NULL) + gaiaSetGeosAuxErrorMsg_r + (cache, + "gaiaIsToxic detected a toxic Linestring: < 2 pts"); + else + gaiaSetGeosAuxErrorMsg + ("gaiaIsToxic detected a toxic Linestring: < 2 pts"); + return 1; + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* checking POLYGONs */ + ring = polyg->Exterior; + if (gaiaIsToxicRing (ring)) + { + if (cache != NULL) + gaiaSetGeosAuxErrorMsg_r + (cache, "gaiaIsToxic detected a toxic Ring: < 4 pts"); + else + gaiaSetGeosAuxErrorMsg + ("gaiaIsToxic detected a toxic Ring: < 4 pts"); + return 1; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + if (gaiaIsToxicRing (ring)) + { + if (cache != NULL) + gaiaSetGeosAuxErrorMsg_r + (cache, + "gaiaIsToxic detected a toxic Ring: < 4 pts"); + else + gaiaSetGeosAuxErrorMsg + ("gaiaIsToxic detected a toxic Ring: < 4 pts"); + return 1; + } + } + polyg = polyg->Next; + } + return 0; +} + +GAIAGEO_DECLARE int +gaiaIsNotClosedRing (gaiaRingPtr ring) +{ + return gaiaIsNotClosedRing_r (NULL, ring); +} + +GAIAGEO_DECLARE int +gaiaIsNotClosedRing_r (const void *cache, gaiaRingPtr ring) +{ +/* checking a Ring for closure */ + double x0; + double y0; + double z0; + double m0; + double x1; + double y1; + double z1; + double m1; + gaiaRingGetPoint (ring, 0, &x0, &y0, &z0, &m0); + gaiaRingGetPoint (ring, ring->Points - 1, &x1, &y1, &z1, &m1); + if (x0 == x1 && y0 == y1 && z0 == z1 && m0 == m1) + return 0; + else + { + if (cache != NULL) + gaiaSetGeosAuxErrorMsg_r (cache, + "gaia detected a not-closed Ring"); + else + gaiaSetGeosAuxErrorMsg ("gaia detected a not-closed Ring"); + return 1; + } +} + +GAIAGEO_DECLARE int +gaiaIsNotClosedGeomColl (gaiaGeomCollPtr geom) +{ + return gaiaIsNotClosedGeomColl_r (NULL, geom); +} + +GAIAGEO_DECLARE int +gaiaIsNotClosedGeomColl_r (const void *cache, gaiaGeomCollPtr geom) +{ +/* +/ identifying not properly closed Rings +/ i.e. geoms making GEOS to crash !!! +*/ + int ret; + int ib; + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + if (!geom) + return 0; + polyg = geom->FirstPolygon; + while (polyg) + { + /* checking POLYGONs */ + ring = polyg->Exterior; + if (cache != NULL) + ret = gaiaIsNotClosedRing_r (cache, ring); + else + ret = gaiaIsNotClosedRing (ring); + if (ret) + return 1; + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + if (cache != NULL) + ret = gaiaIsNotClosedRing_r (cache, ring); + else + ret = gaiaIsNotClosedRing (ring); + if (ret) + return 1; + } + polyg = polyg->Next; + } + return 0; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaLinearize (gaiaGeomCollPtr geom, int force_multi) +{ +/* attempts to rearrange a generic Geometry into a (multi)linestring */ + int pts = 0; + int lns = 0; + gaiaGeomCollPtr result; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaLinestringPtr new_ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + int iv; + int ib; + double x; + double y; + double m; + double z; + if (!geom) + return NULL; + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + if (pts || lns) + return NULL; + + if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else + result = gaiaAllocGeomColl (); + result->Srid = geom->Srid; + if (force_multi) + result->DeclaredType = GAIA_MULTILINESTRING; + + pg = geom->FirstPolygon; + while (pg) + { + /* dissolving any POLYGON as simple LINESTRINGs (rings) */ + rng = pg->Exterior; + new_ln = gaiaAddLinestringToGeomColl (result, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + /* copying the EXTERIOR RING as LINESTRING */ + if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); + } + else if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + gaiaSetPoint (new_ln->Coords, iv, x, y); + } + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + rng = pg->Interiors + ib; + new_ln = gaiaAddLinestringToGeomColl (result, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + /* copying an INTERIOR RING as LINESTRING */ + if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); + } + else if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + gaiaSetPoint (new_ln->Coords, iv, x, y); + } + } + } + pg = pg->Next; + } + if (result->FirstLinestring == NULL) + { + gaiaFreeGeomColl (result); + return NULL; + } + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaDissolveSegments (gaiaGeomCollPtr geom) +{ +/* attempts to dissolve a Geometry into segments */ + gaiaGeomCollPtr result; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaLinestringPtr segment; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + int iv; + int ib; + double x; + double y; + double z; + double m; + double x0; + double y0; + double z0; + double m0; + if (!geom) + return NULL; + + if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else + result = gaiaAllocGeomColl (); + pt = geom->FirstPoint; + while (pt) + { + if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (result, pt->X, pt->Y, pt->Z, pt->M); + else if (geom->DimensionModel == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (result, pt->X, pt->Y, pt->Z); + else if (geom->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (result, pt->X, pt->Y, pt->M); + else + gaiaAddPointToGeomColl (result, pt->X, pt->Y); + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + for (iv = 0; iv < ln->Points; iv++) + { + if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + if (iv > 0) + { + if (geom->DimensionModel == GAIA_XY_Z_M) + { + if (x != x0 || y != y0 || z != z0 || m != m0) + { + segment = + gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPointXYZM (segment->Coords, 0, x0, y0, + z0, m0); + gaiaSetPointXYZM (segment->Coords, 1, x, y, z, + m); + } + } + else if (geom->DimensionModel == GAIA_XY_Z) + { + if (x != x0 || y != y0 || z != z0) + { + segment = + gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPointXYZ (segment->Coords, 0, x0, y0, + z0); + gaiaSetPointXYZ (segment->Coords, 1, x, y, z); + } + } + else if (geom->DimensionModel == GAIA_XY_M) + { + if (x != x0 || y != y0 || m != m0) + { + segment = + gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPointXYM (segment->Coords, 0, x0, y0, + m0); + gaiaSetPointXYM (segment->Coords, 1, x, y, m); + } + } + else + { + if (x != x0 || y != y0) + { + segment = + gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (segment->Coords, 0, x0, y0); + gaiaSetPoint (segment->Coords, 1, x, y); + } + } + } + x0 = x; + y0 = y; + z0 = z; + m0 = m; + } + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + rng = pg->Exterior; + for (iv = 0; iv < rng->Points; iv++) + { + /* exterior Ring */ + if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + if (iv > 0) + { + if (geom->DimensionModel == GAIA_XY_Z_M) + { + if (x != x0 || y != y0 || z != z0 || m != m0) + { + segment = + gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPointXYZM (segment->Coords, 0, x0, y0, + z0, m0); + gaiaSetPointXYZM (segment->Coords, 1, x, y, z, + m); + } + } + else if (geom->DimensionModel == GAIA_XY_Z) + { + if (x != x0 || y != y0 || z != z0) + { + segment = + gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPointXYZ (segment->Coords, 0, x0, y0, + z0); + gaiaSetPointXYZ (segment->Coords, 1, x, y, z); + } + } + else if (geom->DimensionModel == GAIA_XY_M) + { + if (x != x0 || y != y0 || m != m0) + { + segment = + gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPointXYM (segment->Coords, 0, x0, y0, + m0); + gaiaSetPointXYM (segment->Coords, 1, x, y, m); + } + } + else + { + if (x != x0 || y != y0) + { + segment = + gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (segment->Coords, 0, x0, y0); + gaiaSetPoint (segment->Coords, 1, x, y); + } + } + } + x0 = x; + y0 = y; + z0 = z; + m0 = m; + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + rng = pg->Interiors + ib; + for (iv = 0; iv < rng->Points; iv++) + { + /* interior Ring */ + if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + if (iv > 0) + { + if (geom->DimensionModel == GAIA_XY_Z_M) + { + if (x != x0 || y != y0 || z != z0 || m != m0) + { + segment = + gaiaAddLinestringToGeomColl (result, + 2); + gaiaSetPointXYZM (segment->Coords, 0, + x0, y0, z0, m0); + gaiaSetPointXYZM (segment->Coords, 1, x, + y, z, m); + } + } + else if (geom->DimensionModel == GAIA_XY_Z) + { + if (x != x0 || y != y0 || z != z0) + { + segment = + gaiaAddLinestringToGeomColl (result, + 2); + gaiaSetPointXYZ (segment->Coords, 0, x0, + y0, z0); + gaiaSetPointXYZ (segment->Coords, 1, x, + y, z); + } + } + else if (geom->DimensionModel == GAIA_XY_M) + { + if (x != x0 || y != y0 || m != m0) + { + segment = + gaiaAddLinestringToGeomColl (result, + 2); + gaiaSetPointXYM (segment->Coords, 0, x0, + y0, m0); + gaiaSetPointXYM (segment->Coords, 1, x, + y, m); + } + } + else + { + if (x != x0 || y != y0) + { + segment = + gaiaAddLinestringToGeomColl (result, + 2); + gaiaSetPoint (segment->Coords, 0, x0, + y0); + gaiaSetPoint (segment->Coords, 1, x, y); + } + } + } + x0 = x; + y0 = y; + z0 = z; + m0 = m; + } + } + pg = pg->Next; + } + result->Srid = geom->Srid; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaDissolvePoints (gaiaGeomCollPtr geom) +{ +/* attempts to dissolve a Geometry into points */ + gaiaGeomCollPtr result; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + int iv; + int ib; + double x; + double y; + double z; + double m; + if (!geom) + return NULL; + + if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else + result = gaiaAllocGeomColl (); + pt = geom->FirstPoint; + while (pt) + { + if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (result, pt->X, pt->Y, pt->Z, pt->M); + else if (geom->DimensionModel == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (result, pt->X, pt->Y, pt->Z); + else if (geom->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (result, pt->X, pt->Y, pt->M); + else + gaiaAddPointToGeomColl (result, pt->X, pt->Y); + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + for (iv = 0; iv < ln->Points; iv++) + { + if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (result, x, y, z, m); + else if (geom->DimensionModel == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (result, x, y, z); + else if (geom->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (result, x, y, m); + else + gaiaAddPointToGeomColl (result, x, y); + } + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + rng = pg->Exterior; + for (iv = 0; iv < rng->Points; iv++) + { + /* exterior Ring */ + if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (result, x, y, z, m); + else if (geom->DimensionModel == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (result, x, y, z); + else if (geom->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (result, x, y, m); + else + gaiaAddPointToGeomColl (result, x, y); + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + rng = pg->Interiors + ib; + for (iv = 0; iv < rng->Points; iv++) + { + /* interior Ring */ + if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (result, x, y, z, m); + else if (geom->DimensionModel == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (result, x, y, z); + else if (geom->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (result, x, y, m); + else + gaiaAddPointToGeomColl (result, x, y); + } + } + pg = pg->Next; + } + result->Srid = geom->Srid; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaExtractPointsFromGeomColl (gaiaGeomCollPtr geom) +{ +/* extracts any POINT from a GeometryCollection */ + gaiaGeomCollPtr result; + gaiaPointPtr pt; + int pts = 0; + if (!geom) + return NULL; + + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + if (!pts) + return NULL; + + if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else + result = gaiaAllocGeomColl (); + pt = geom->FirstPoint; + while (pt) + { + if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (result, pt->X, pt->Y, pt->Z, pt->M); + else if (geom->DimensionModel == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (result, pt->X, pt->Y, pt->Z); + else if (geom->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (result, pt->X, pt->Y, pt->M); + else + gaiaAddPointToGeomColl (result, pt->X, pt->Y); + pt = pt->Next; + } + result->Srid = geom->Srid; + if (pts == 1) + result->DeclaredType = GAIA_POINT; + else + result->DeclaredType = GAIA_MULTIPOINT; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaExtractLinestringsFromGeomColl (gaiaGeomCollPtr geom) +{ +/* extracts any LINESTRING from a GeometryCollection */ + gaiaGeomCollPtr result; + gaiaLinestringPtr ln; + gaiaLinestringPtr new_ln; + int lns = 0; + int iv; + double x; + double y; + double z; + double m; + if (!geom) + return NULL; + + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + if (!lns) + return NULL; + + if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else + result = gaiaAllocGeomColl (); + ln = geom->FirstLinestring; + while (ln) + { + new_ln = gaiaAddLinestringToGeomColl (result, ln->Points); + for (iv = 0; iv < ln->Points; iv++) + { + if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); + } + else if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + gaiaSetPoint (new_ln->Coords, iv, x, y); + } + } + ln = ln->Next; + } + result->Srid = geom->Srid; + if (lns == 1) + result->DeclaredType = GAIA_LINESTRING; + else + result->DeclaredType = GAIA_MULTILINESTRING; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaExtractPolygonsFromGeomColl (gaiaGeomCollPtr geom) +{ +/* extracts any POLYGON from a GeometryCollection */ + gaiaGeomCollPtr result; + gaiaPolygonPtr pg; + gaiaPolygonPtr new_pg; + gaiaRingPtr rng; + gaiaRingPtr new_rng; + int pgs = 0; + int iv; + int ib; + double x; + double y; + double z; + double m; + if (!geom) + return NULL; + + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (!pgs) + return NULL; + + if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else + result = gaiaAllocGeomColl (); + pg = geom->FirstPolygon; + while (pg) + { + rng = pg->Exterior; + new_pg = + gaiaAddPolygonToGeomColl (result, rng->Points, pg->NumInteriors); + new_rng = new_pg->Exterior; + for (iv = 0; iv < rng->Points; iv++) + { + if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (new_rng->Coords, iv, x, y, z, m); + } + else if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (new_rng->Coords, iv, x, y, z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (new_rng->Coords, iv, x, y, m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + gaiaSetPoint (new_rng->Coords, iv, x, y); + } + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + rng = pg->Interiors + ib; + new_rng = gaiaAddInteriorRing (new_pg, ib, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (new_rng->Coords, iv, x, y, z, m); + } + else if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (new_rng->Coords, iv, x, y, z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (new_rng->Coords, iv, x, y, m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + gaiaSetPoint (new_rng->Coords, iv, x, y); + } + } + } + pg = pg->Next; + } + result->Srid = geom->Srid; + if (pgs == 1) + result->DeclaredType = GAIA_POLYGON; + else + result->DeclaredType = GAIA_MULTIPOLYGON; + return result; +} diff --git a/src/spatialite/src/gaiageo/gg_endian.c b/src/spatialite/src/gaiageo/gg_endian.c new file mode 100644 index 0000000..50906a7 --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_endian.c @@ -0,0 +1,754 @@ +/* + + gg_endian.c -- Gaia functions for litte/big endian values handling + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include + +#include + +GAIAGEO_DECLARE int +gaiaEndianArch () +{ +/* checking if target CPU is a little-endian one */ + union cvt + { + unsigned char byte[4]; + int int_value; + } convert; + convert.int_value = 1; + if (convert.byte[0] == 0) + return 0; + return 1; +} + +GAIAGEO_DECLARE short +gaiaImport16 (const unsigned char *p, int little_endian, int little_endian_arch) +{ +/* fetches a 16bit int from BLOB respecting declared endiannes */ + union cvt + { + unsigned char byte[2]; + short short_value; + } convert; + if (little_endian_arch) + { + /* Litte-Endian architecture [e.g. x86] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 1); + convert.byte[1] = *(p + 0); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + } + } + else + { + /* Big Endian architecture [e.g. PPC] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 1); + convert.byte[1] = *(p + 0); + } + } + return convert.short_value; +} + +GAIAGEO_DECLARE int +gaiaImport32 (const unsigned char *p, int little_endian, int little_endian_arch) +{ +/* fetches a 32bit int from BLOB respecting declared endiannes */ + union cvt + { + unsigned char byte[4]; + int int_value; + } convert; + if (little_endian_arch) + { + /* Litte-Endian architecture [e.g. x86] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 3); + convert.byte[1] = *(p + 2); + convert.byte[2] = *(p + 1); + convert.byte[3] = *(p + 0); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + convert.byte[2] = *(p + 2); + convert.byte[3] = *(p + 3); + } + } + else + { + /* Big Endian architecture [e.g. PPC] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + convert.byte[2] = *(p + 2); + convert.byte[3] = *(p + 3); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 3); + convert.byte[1] = *(p + 2); + convert.byte[2] = *(p + 1); + convert.byte[3] = *(p + 0); + } + } + return convert.int_value; +} + +GAIAGEO_DECLARE unsigned int +gaiaImportU32 (const unsigned char *p, int little_endian, + int little_endian_arch) +{ +/* fetches a 32bit uint from BLOB respecting declared endiannes */ + union cvt + { + unsigned char byte[4]; + unsigned int int_value; + } convert; + if (little_endian_arch) + { + /* Litte-Endian architecture [e.g. x86] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 3); + convert.byte[1] = *(p + 2); + convert.byte[2] = *(p + 1); + convert.byte[3] = *(p + 0); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + convert.byte[2] = *(p + 2); + convert.byte[3] = *(p + 3); + } + } + else + { + /* Big Endian architecture [e.g. PPC] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + convert.byte[2] = *(p + 2); + convert.byte[3] = *(p + 3); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 3); + convert.byte[1] = *(p + 2); + convert.byte[2] = *(p + 1); + convert.byte[3] = *(p + 0); + } + } + return convert.int_value; +} + +GAIAGEO_DECLARE float +gaiaImportF32 (const unsigned char *p, int little_endian, + int little_endian_arch) +{ +/* fetches a 32bit float from BLOB respecting declared endiannes */ + union cvt + { + unsigned char byte[4]; + float flt_value; + } convert; + if (little_endian_arch) + { + /* Litte-Endian architecture [e.g. x86] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 3); + convert.byte[1] = *(p + 2); + convert.byte[2] = *(p + 1); + convert.byte[3] = *(p + 0); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + convert.byte[2] = *(p + 2); + convert.byte[3] = *(p + 3); + } + } + else + { + /* Big Endian architecture [e.g. PPC] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + convert.byte[2] = *(p + 2); + convert.byte[3] = *(p + 3); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 3); + convert.byte[1] = *(p + 2); + convert.byte[2] = *(p + 1); + convert.byte[3] = *(p + 0); + } + } + return convert.flt_value; +} + +GAIAGEO_DECLARE double +gaiaImport64 (const unsigned char *p, int little_endian, int little_endian_arch) +{ +/* fetches a 64bit double from BLOB respecting declared endiannes */ + union cvt + { + unsigned char byte[8]; + double double_value; + } convert; + if (little_endian_arch) + { +/* Litte-Endian architecture [e.g. x86] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 7); + convert.byte[1] = *(p + 6); + convert.byte[2] = *(p + 5); + convert.byte[3] = *(p + 4); + convert.byte[4] = *(p + 3); + convert.byte[5] = *(p + 2); + convert.byte[6] = *(p + 1); + convert.byte[7] = *(p + 0); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + convert.byte[2] = *(p + 2); + convert.byte[3] = *(p + 3); + convert.byte[4] = *(p + 4); + convert.byte[5] = *(p + 5); + convert.byte[6] = *(p + 6); + convert.byte[7] = *(p + 7); + } + } + else + { + /* Big Endian architecture [e.g. PPC] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + convert.byte[2] = *(p + 2); + convert.byte[3] = *(p + 3); + convert.byte[4] = *(p + 4); + convert.byte[5] = *(p + 5); + convert.byte[6] = *(p + 6); + convert.byte[7] = *(p + 7); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 7); + convert.byte[1] = *(p + 6); + convert.byte[2] = *(p + 5); + convert.byte[3] = *(p + 4); + convert.byte[4] = *(p + 3); + convert.byte[5] = *(p + 2); + convert.byte[6] = *(p + 1); + convert.byte[7] = *(p + 0); + } + } + return convert.double_value; +} + +GAIAGEO_DECLARE sqlite3_int64 +gaiaImportI64 (const unsigned char *p, int little_endian, + int little_endian_arch) +{ +/* fetches a 64bit INT from BLOB respecting declared endiannes */ + union cvt + { + unsigned char byte[8]; + sqlite3_int64 int64_value; + } convert; + if (little_endian_arch) + { +/* Litte-Endian architecture [e.g. x86] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 7); + convert.byte[1] = *(p + 6); + convert.byte[2] = *(p + 5); + convert.byte[3] = *(p + 4); + convert.byte[4] = *(p + 3); + convert.byte[5] = *(p + 2); + convert.byte[6] = *(p + 1); + convert.byte[7] = *(p + 0); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + convert.byte[2] = *(p + 2); + convert.byte[3] = *(p + 3); + convert.byte[4] = *(p + 4); + convert.byte[5] = *(p + 5); + convert.byte[6] = *(p + 6); + convert.byte[7] = *(p + 7); + } + } + else + { + /* Big Endian architecture [e.g. PPC] */ + if (!little_endian) + { + /* Big Endian data */ + convert.byte[0] = *(p + 0); + convert.byte[1] = *(p + 1); + convert.byte[2] = *(p + 2); + convert.byte[3] = *(p + 3); + convert.byte[4] = *(p + 4); + convert.byte[5] = *(p + 5); + convert.byte[6] = *(p + 6); + convert.byte[7] = *(p + 7); + } + else + { + /* Little Endian data */ + convert.byte[0] = *(p + 7); + convert.byte[1] = *(p + 6); + convert.byte[2] = *(p + 5); + convert.byte[3] = *(p + 4); + convert.byte[4] = *(p + 3); + convert.byte[5] = *(p + 2); + convert.byte[6] = *(p + 1); + convert.byte[7] = *(p + 0); + } + } + return convert.int64_value; +} + +GAIAGEO_DECLARE void +gaiaExport16 (unsigned char *p, short value, int little_endian, + int little_endian_arch) +{ +/* stores a 16bit int into a BLOB respecting declared endiannes */ + union cvt + { + unsigned char byte[2]; + short short_value; + } convert; + convert.short_value = value; + if (little_endian_arch) + { + /* Litte-Endian architecture [e.g. x86] */ + if (!little_endian) + { + /* Big Endian data */ + *(p + 1) = convert.byte[1]; + *(p + 0) = convert.byte[0]; + } + else + { + /* Little Endian data */ + *(p + 0) = convert.byte[0]; + *(p + 1) = convert.byte[1]; + } + } + else + { + /* Big Endian architecture [e.g. PPC] */ + if (!little_endian) + { + /* Big Endian data */ + *(p + 0) = convert.byte[0]; + *(p + 1) = convert.byte[1]; + } + else + { + /* Little Endian data */ + *(p + 1) = convert.byte[0]; + *(p + 0) = convert.byte[1]; + } + } +} + +GAIAGEO_DECLARE void +gaiaExport32 (unsigned char *p, int value, int little_endian, + int little_endian_arch) +{ +/* stores a 32bit int into a BLOB respecting declared endiannes */ + union cvt + { + unsigned char byte[4]; + int int_value; + } convert; + convert.int_value = value; + if (little_endian_arch) + { + /* Litte-Endian architecture [e.g. x86] */ + if (!little_endian) + { + /* Big Endian data */ + *(p + 3) = convert.byte[0]; + *(p + 2) = convert.byte[1]; + *(p + 1) = convert.byte[2]; + *(p + 0) = convert.byte[3]; + } + else + { + /* Little Endian data */ + *(p + 0) = convert.byte[0]; + *(p + 1) = convert.byte[1]; + *(p + 2) = convert.byte[2]; + *(p + 3) = convert.byte[3]; + } + } + else + { + /* Big Endian architecture [e.g. PPC] */ + if (!little_endian) + { + /* Big Endian data */ + *(p + 0) = convert.byte[0]; + *(p + 1) = convert.byte[1]; + *(p + 2) = convert.byte[2]; + *(p + 3) = convert.byte[3]; + } + else + { + /* Little Endian data */ + *(p + 3) = convert.byte[0]; + *(p + 2) = convert.byte[1]; + *(p + 1) = convert.byte[2]; + *(p + 0) = convert.byte[3]; + } + } +} + +GAIAGEO_DECLARE void +gaiaExportU32 (unsigned char *p, unsigned int value, int little_endian, + int little_endian_arch) +{ +/* stores a 32bit int into a BLOB respecting declared endiannes */ + union cvt + { + unsigned char byte[4]; + unsigned int int_value; + } convert; + convert.int_value = value; + if (little_endian_arch) + { + /* Litte-Endian architecture [e.g. x86] */ + if (!little_endian) + { + /* Big Endian data */ + *(p + 3) = convert.byte[0]; + *(p + 2) = convert.byte[1]; + *(p + 1) = convert.byte[2]; + *(p + 0) = convert.byte[3]; + } + else + { + /* Little Endian data */ + *(p + 0) = convert.byte[0]; + *(p + 1) = convert.byte[1]; + *(p + 2) = convert.byte[2]; + *(p + 3) = convert.byte[3]; + } + } + else + { + /* Big Endian architecture [e.g. PPC] */ + if (!little_endian) + { + /* Big Endian data */ + *(p + 0) = convert.byte[0]; + *(p + 1) = convert.byte[1]; + *(p + 2) = convert.byte[2]; + *(p + 3) = convert.byte[3]; + } + else + { + /* Little Endian data */ + *(p + 3) = convert.byte[0]; + *(p + 2) = convert.byte[1]; + *(p + 1) = convert.byte[2]; + *(p + 0) = convert.byte[3]; + } + } +} + +GAIAGEO_DECLARE void +gaiaExportF32 (unsigned char *p, float value, int little_endian, + int little_endian_arch) +{ +/* stores a 32bit float into a BLOB respecting declared endiannes */ + union cvt + { + unsigned char byte[4]; + float flt_value; + } convert; + convert.flt_value = value; + if (little_endian_arch) + { + /* Litte-Endian architecture [e.g. x86] */ + if (!little_endian) + { + /* Big Endian data */ + *(p + 3) = convert.byte[0]; + *(p + 2) = convert.byte[1]; + *(p + 1) = convert.byte[2]; + *(p + 0) = convert.byte[3]; + } + else + { + /* Little Endian data */ + *(p + 0) = convert.byte[0]; + *(p + 1) = convert.byte[1]; + *(p + 2) = convert.byte[2]; + *(p + 3) = convert.byte[3]; + } + } + else + { + /* Big Endian architecture [e.g. PPC] */ + if (!little_endian) + { + /* Big Endian data */ + *(p + 0) = convert.byte[0]; + *(p + 1) = convert.byte[1]; + *(p + 2) = convert.byte[2]; + *(p + 3) = convert.byte[3]; + } + else + { + /* Little Endian data */ + *(p + 3) = convert.byte[0]; + *(p + 2) = convert.byte[1]; + *(p + 1) = convert.byte[2]; + *(p + 0) = convert.byte[3]; + } + } +} + +GAIAGEO_DECLARE void +gaiaExport64 (unsigned char *p, double value, int little_endian, + int little_endian_arch) +{ +/* stores a 64bit double into a BLOB respecting declared endiannes */ + union cvt + { + unsigned char byte[8]; + double double_value; + } convert; + convert.double_value = value; + if (little_endian_arch) + { +/* Litte-Endian architecture [e.g. x86] */ + if (!little_endian) + { + /* Big Endian data */ + *(p + 7) = convert.byte[0]; + *(p + 6) = convert.byte[1]; + *(p + 5) = convert.byte[2]; + *(p + 4) = convert.byte[3]; + *(p + 3) = convert.byte[4]; + *(p + 2) = convert.byte[5]; + *(p + 1) = convert.byte[6]; + *(p + 0) = convert.byte[7]; + } + else + { + /* Little Endian data */ + *(p + 0) = convert.byte[0]; + *(p + 1) = convert.byte[1]; + *(p + 2) = convert.byte[2]; + *(p + 3) = convert.byte[3]; + *(p + 4) = convert.byte[4]; + *(p + 5) = convert.byte[5]; + *(p + 6) = convert.byte[6]; + *(p + 7) = convert.byte[7]; + } + } + else + { + /* Big Endian architecture [e.g. PPC] */ + if (!little_endian) + { + /* Big Endian data */ + *(p + 0) = convert.byte[0]; + *(p + 1) = convert.byte[1]; + *(p + 2) = convert.byte[2]; + *(p + 3) = convert.byte[3]; + *(p + 4) = convert.byte[4]; + *(p + 5) = convert.byte[5]; + *(p + 6) = convert.byte[6]; + *(p + 7) = convert.byte[7]; + } + else + { + /* Little Endian data */ + *(p + 7) = convert.byte[0]; + *(p + 6) = convert.byte[1]; + *(p + 5) = convert.byte[2]; + *(p + 4) = convert.byte[3]; + *(p + 3) = convert.byte[4]; + *(p + 2) = convert.byte[5]; + *(p + 1) = convert.byte[6]; + *(p + 0) = convert.byte[7]; + } + } +} + +GAIAGEO_DECLARE void +gaiaExportI64 (unsigned char *p, sqlite3_int64 value, int little_endian, + int little_endian_arch) +{ +/* stores a 64bit INT into a BLOB respecting declared endiannes */ + union cvt + { + unsigned char byte[8]; + sqlite3_int64 int64_value; + } convert; + convert.int64_value = value; + if (little_endian_arch) + { +/* Litte-Endian architecture [e.g. x86] */ + if (!little_endian) + { + /* Big Endian data */ + *(p + 7) = convert.byte[0]; + *(p + 6) = convert.byte[1]; + *(p + 5) = convert.byte[2]; + *(p + 4) = convert.byte[3]; + *(p + 3) = convert.byte[4]; + *(p + 2) = convert.byte[5]; + *(p + 1) = convert.byte[6]; + *(p + 0) = convert.byte[7]; + } + else + { + /* Little Endian data */ + *(p + 0) = convert.byte[0]; + *(p + 1) = convert.byte[1]; + *(p + 2) = convert.byte[2]; + *(p + 3) = convert.byte[3]; + *(p + 4) = convert.byte[4]; + *(p + 5) = convert.byte[5]; + *(p + 6) = convert.byte[6]; + *(p + 7) = convert.byte[7]; + } + } + else + { + /* Big Endian architecture [e.g. PPC] */ + if (!little_endian) + { + /* Big Endian data */ + *(p + 0) = convert.byte[0]; + *(p + 1) = convert.byte[1]; + *(p + 2) = convert.byte[2]; + *(p + 3) = convert.byte[3]; + *(p + 4) = convert.byte[4]; + *(p + 5) = convert.byte[5]; + *(p + 6) = convert.byte[6]; + *(p + 7) = convert.byte[7]; + } + else + { + /* Little Endian data */ + *(p + 7) = convert.byte[0]; + *(p + 6) = convert.byte[1]; + *(p + 5) = convert.byte[2]; + *(p + 4) = convert.byte[3]; + *(p + 3) = convert.byte[4]; + *(p + 2) = convert.byte[5]; + *(p + 1) = convert.byte[6]; + *(p + 0) = convert.byte[7]; + } + } +} diff --git a/src/spatialite/src/gaiageo/gg_ewkt.c b/src/spatialite/src/gaiageo/gg_ewkt.c new file mode 100644 index 0000000..5ae0a14 --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_ewkt.c @@ -0,0 +1,2086 @@ +/* + + gg_ewkt.c -- EWKT parser/lexer + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011-2013 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include + +#ifdef _WIN32 +#define strcasecmp _stricmp +#define strncasecmp _strnicmp +#define atoll _atoi64 +#endif /* not WIN32 */ + +#if defined(_WIN32) || defined(WIN32) +#include +#ifndef isatty +#define isatty _isatty +#endif +#ifndef fileno +#define fileno _fileno +#endif +#endif + +#define EWKT_DYN_NONE 0 +#define EWKT_DYN_POINT 1 +#define EWKT_DYN_LINESTRING 2 +#define EWKT_DYN_POLYGON 3 +#define EWKT_DYN_RING 4 +#define EWKT_DYN_GEOMETRY 5 + +#define EWKT_DYN_BLOCK 1024 + + + +/* +** CAVEAT: we must redefine any Lemon/Flex own macro +*/ +#define YYMINORTYPE EWKT_MINORTYPE +#define YY_CHAR EWKT_YY_CHAR +#define input ewkt_input +#define ParseAlloc ewktParseAlloc +#define ParseFree ewktParseFree +#define ParseStackPeak ewktParseStackPeak +#define Parse ewktParse +#define yyStackEntry ewkt_yyStackEntry +#define yyzerominor ewkt_yyzerominor +#define yy_accept ewkt_yy_accept +#define yy_action ewkt_yy_action +#define yy_base ewkt_yy_base +#define yy_buffer_stack ewkt_yy_buffer_stack +#define yy_buffer_stack_max ewkt_yy_buffer_stack_max +#define yy_buffer_stack_top ewkt_yy_buffer_stack_top +#define yy_c_buf_p ewkt_yy_c_buf_p +#define yy_chk ewkt_yy_chk +#define yy_def ewkt_yy_def +#define yy_default ewkt_yy_default +#define yy_destructor ewkt_yy_destructor +#define yy_ec ewkt_yy_ec +#define yy_fatal_error ewkt_yy_fatal_error +#define yy_find_reduce_action ewkt_yy_find_reduce_action +#define yy_find_shift_action ewkt_yy_find_shift_action +#define yy_get_next_buffer ewkt_yy_get_next_buffer +#define yy_get_previous_state ewkt_yy_get_previous_state +#define yy_init ewkt_yy_init +#define yy_init_globals ewkt_yy_init_globals +#define yy_lookahead ewkt_yy_lookahead +#define yy_meta ewkt_yy_meta +#define yy_nxt ewkt_yy_nxt +#define yy_parse_failed ewkt_yy_parse_failed +#define yy_pop_parser_stack ewkt_yy_pop_parser_stack +#define yy_reduce ewkt_yy_reduce +#define yy_reduce_ofst ewkt_yy_reduce_ofst +#define yy_shift ewkt_yy_shift +#define yy_shift_ofst ewkt_yy_shift_ofst +#define yy_start ewkt_yy_start +#define yy_state_type ewkt_yy_state_type +#define yy_syntax_error ewkt_yy_syntax_error +#define yy_trans_info ewkt_yy_trans_info +#define yy_try_NUL_trans ewkt_yy_try_NUL_trans +#define yyParser ewkt_yyParser +#define yyStackEntry ewkt_yyStackEntry +#define yyStackOverflow ewkt_yyStackOverflow +#define yyRuleInfo ewkt_yyRuleInfo +#define yyunput ewkt_yyunput +#define yyzerominor ewkt_yyzerominor +#define yyTraceFILE ewkt_yyTraceFILE +#define yyTracePrompt ewkt_yyTracePrompt +#define yyTokenName ewkt_yyTokenName +#define yyRuleName ewkt_yyRuleName +#define ParseTrace ewkt_ParseTrace + +#define yylex ewky_yylex +#define YY_DECL int yylex (yyscan_t yyscanner) + + +/* including LEMON generated header */ +#include "Ewkt.h" + + +typedef union +{ + double dval; + struct symtab *symp; +} ewkt_yystype; +#define YYSTYPE ewkt_yystype + + +struct ewkt_dyn_block +{ +/* a struct taking trace of dynamic allocations */ + int type[EWKT_DYN_BLOCK]; + void *ptr[EWKT_DYN_BLOCK]; + int index; + struct ewkt_dyn_block *next; +}; + +struct ewkt_data +{ +/* a struct used to make the lexer-parser reentrant and thread-safe */ + int ewkt_parse_error; + int ewkt_line; + int ewkt_col; + struct ewkt_dyn_block *ewkt_first_dyn_block; + struct ewkt_dyn_block *ewkt_last_dyn_block; + gaiaGeomCollPtr result; + YYSTYPE EwktLval; +}; + +static struct ewkt_dyn_block * +ewktCreateDynBlock (void) +{ +/* allocating a new block to trace dynamic allocations */ + int i; + struct ewkt_dyn_block *p = malloc (sizeof (struct ewkt_dyn_block)); + for (i = 0; i < EWKT_DYN_BLOCK; i++) + { + /* initializing map entries */ + p->type[i] = EWKT_DYN_NONE; + p->ptr[i] = NULL; + } + p->index = 0; + p->next = NULL; + return p; +} + +static void +ewktMapDynAlloc (struct ewkt_data *p_data, int type, void *ptr) +{ +/* appending a dynamic allocation into the map */ + struct ewkt_dyn_block *p; + if (p_data->ewkt_first_dyn_block == NULL) + { + /* inserting the first block of the map */ + p = ewktCreateDynBlock (); + p_data->ewkt_first_dyn_block = p; + p_data->ewkt_last_dyn_block = p; + } + if (p_data->ewkt_last_dyn_block->index >= EWKT_DYN_BLOCK) + { + /* adding a further block to the map */ + p = ewktCreateDynBlock (); + p_data->ewkt_last_dyn_block->next = p; + p_data->ewkt_last_dyn_block = p; + } + p_data->ewkt_last_dyn_block->type[p_data->ewkt_last_dyn_block->index] = + type; + p_data->ewkt_last_dyn_block->ptr[p_data->ewkt_last_dyn_block->index] = ptr; + p_data->ewkt_last_dyn_block->index++; +} + +static void +ewktMapDynClean (struct ewkt_data *p_data, void *ptr) +{ +/* deleting a dynamic allocation from the map */ + int i; + struct ewkt_dyn_block *p = p_data->ewkt_first_dyn_block; + while (p) + { + for (i = 0; i < EWKT_DYN_BLOCK; i++) + { + switch (p->type[i]) + { + case EWKT_DYN_POINT: + case EWKT_DYN_LINESTRING: + case EWKT_DYN_POLYGON: + case EWKT_DYN_RING: + case EWKT_DYN_GEOMETRY: + if (p->ptr[i] == ptr) + { + p->type[i] = EWKT_DYN_NONE; + return; + } + break; + }; + } + p = p->next; + } +} + +static void +ewktCleanMapDynAlloc (struct ewkt_data *p_data, int clean_all) +{ +/* cleaning the dynamic allocations map */ + int i; + struct ewkt_dyn_block *pn; + struct ewkt_dyn_block *p = p_data->ewkt_first_dyn_block; + while (p) + { + if (clean_all) + { + for (i = 0; i < EWKT_DYN_BLOCK; i++) + { + /* deleting Geometry objects */ + switch (p->type[i]) + { + case EWKT_DYN_POINT: + gaiaFreePoint ((gaiaPointPtr) (p->ptr[i])); + break; + case EWKT_DYN_LINESTRING: + gaiaFreeLinestring ((gaiaLinestringPtr) + (p->ptr[i])); + break; + case EWKT_DYN_POLYGON: + gaiaFreePolygon ((gaiaPolygonPtr) (p->ptr[i])); + break; + case EWKT_DYN_RING: + gaiaFreeRing ((gaiaRingPtr) (p->ptr[i])); + break; + case EWKT_DYN_GEOMETRY: + gaiaFreeGeomColl ((gaiaGeomCollPtr) (p->ptr[i])); + break; + }; + } + } + /* deleting the map block */ + pn = p->next; + free (p); + p = pn; + } +} + +static int +ewktCheckValidity (gaiaGeomCollPtr geom) +{ +/* checks if this one is a degenerated geometry */ + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + int ib; + int entities = 0; + pt = geom->FirstPoint; + while (pt) + { + /* checking points */ + entities++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + /* checking linestrings */ + if (ln->Points < 2) + return 0; + entities++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + /* checking polygons */ + rng = pg->Exterior; + if (rng->Points < 4) + return 0; + for (ib = 0; ib < pg->NumInteriors; ib++) + { + rng = pg->Interiors + ib; + if (rng->Points < 4) + return 0; + } + entities++; + pg = pg->Next; + } + if (!entities) + return 0; + return 1; +} + +static gaiaGeomCollPtr +gaiaEwktGeometryFromPoint (struct ewkt_data *p_data, gaiaPointPtr point) +{ +/* builds a GEOMETRY containing a POINT */ + gaiaGeomCollPtr geom = NULL; + geom = gaiaAllocGeomColl (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_POINT; + gaiaAddPointToGeomColl (geom, point->X, point->Y); + ewktMapDynClean (p_data, point); + gaiaFreePoint (point); + return geom; +} + +static gaiaGeomCollPtr +gaiaEwktGeometryFromPointZ (struct ewkt_data *p_data, gaiaPointPtr point) +{ +/* builds a GEOMETRY containing a POINTZ */ + gaiaGeomCollPtr geom = NULL; + geom = gaiaAllocGeomCollXYZ (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_POINTZ; + gaiaAddPointToGeomCollXYZ (geom, point->X, point->Y, point->Z); + ewktMapDynClean (p_data, point); + gaiaFreePoint (point); + return geom; +} + +static gaiaGeomCollPtr +gaiaEwktGeometryFromPointM (struct ewkt_data *p_data, gaiaPointPtr point) +{ +/* builds a GEOMETRY containing a POINTM */ + gaiaGeomCollPtr geom = NULL; + geom = gaiaAllocGeomCollXYM (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_POINTM; + gaiaAddPointToGeomCollXYM (geom, point->X, point->Y, point->M); + ewktMapDynClean (p_data, point); + gaiaFreePoint (point); + return geom; +} + +static gaiaGeomCollPtr +gaiaEwktGeometryFromPointZM (struct ewkt_data *p_data, gaiaPointPtr point) +{ +/* builds a GEOMETRY containing a POINTZM */ + gaiaGeomCollPtr geom = NULL; + geom = gaiaAllocGeomCollXYZM (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_POINTZM; + gaiaAddPointToGeomCollXYZM (geom, point->X, point->Y, point->Z, point->M); + ewktMapDynClean (p_data, point); + gaiaFreePoint (point); + return geom; +} + +static gaiaGeomCollPtr +gaiaEwktGeometryFromLinestring (struct ewkt_data *p_data, + gaiaLinestringPtr line) +{ +/* builds a GEOMETRY containing a LINESTRING */ + gaiaGeomCollPtr geom = NULL; + gaiaLinestringPtr line2; + int iv; + double x; + double y; + geom = gaiaAllocGeomColl (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_LINESTRING; + line2 = gaiaAddLinestringToGeomColl (geom, line->Points); + for (iv = 0; iv < line2->Points; iv++) + { + /* sets the POINTS for the exterior ring */ + gaiaGetPoint (line->Coords, iv, &x, &y); + gaiaSetPoint (line2->Coords, iv, x, y); + } + ewktMapDynClean (p_data, line); + gaiaFreeLinestring (line); + return geom; +} + +static gaiaGeomCollPtr +gaiaEwktGeometryFromLinestringZ (struct ewkt_data *p_data, + gaiaLinestringPtr line) +{ +/* builds a GEOMETRY containing a LINESTRINGZ */ + gaiaGeomCollPtr geom = NULL; + gaiaLinestringPtr line2; + int iv; + double x; + double y; + double z; + geom = gaiaAllocGeomCollXYZ (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_LINESTRING; + line2 = gaiaAddLinestringToGeomColl (geom, line->Points); + for (iv = 0; iv < line2->Points; iv++) + { + /* sets the POINTS for the exterior ring */ + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (line2->Coords, iv, x, y, z); + } + ewktMapDynClean (p_data, line); + gaiaFreeLinestring (line); + return geom; +} + + +static gaiaGeomCollPtr +gaiaEwktGeometryFromLinestringM (struct ewkt_data *p_data, + gaiaLinestringPtr line) +{ +/* builds a GEOMETRY containing a LINESTRINGM */ + gaiaGeomCollPtr geom = NULL; + gaiaLinestringPtr line2; + int iv; + double x; + double y; + double m; + geom = gaiaAllocGeomCollXYM (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_LINESTRING; + line2 = gaiaAddLinestringToGeomColl (geom, line->Points); + for (iv = 0; iv < line2->Points; iv++) + { + /* sets the POINTS for the exterior ring */ + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (line2->Coords, iv, x, y, m); + } + ewktMapDynClean (p_data, line); + gaiaFreeLinestring (line); + return geom; +} + +static gaiaGeomCollPtr +gaiaEwktGeometryFromLinestringZM (struct ewkt_data *p_data, + gaiaLinestringPtr line) +{ +/* builds a GEOMETRY containing a LINESTRINGZM */ + gaiaGeomCollPtr geom = NULL; + gaiaLinestringPtr line2; + int iv; + double x; + double y; + double z; + double m; + geom = gaiaAllocGeomCollXYZM (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_LINESTRING; + line2 = gaiaAddLinestringToGeomColl (geom, line->Points); + for (iv = 0; iv < line2->Points; iv++) + { + /* sets the POINTS for the exterior ring */ + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (line2->Coords, iv, x, y, z, m); + } + ewktMapDynClean (p_data, line); + gaiaFreeLinestring (line); + return geom; +} + +static gaiaPointPtr +ewkt_point_xy (struct ewkt_data *p_data, double *x, double *y) +{ + gaiaPointPtr pt = gaiaAllocPoint (*x, *y); + ewktMapDynAlloc (p_data, EWKT_DYN_POINT, pt); + return pt; +} + +/* + * Creates a 3D (xyz) point in SpatiaLite + * x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. + * Returns a gaiaPointPtr representing the created point. + * + * Creates a 3D (xyz) point. This is a parser helper function which is called when 3D coordinates are encountered. + * Parameters x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. + * Returns a gaiaPointPtr pointing to the 3D created point. + */ +static gaiaPointPtr +ewkt_point_xyz (struct ewkt_data *p_data, double *x, double *y, double *z) +{ + gaiaPointPtr pt = gaiaAllocPointXYZ (*x, *y, *z); + ewktMapDynAlloc (p_data, EWKT_DYN_POINT, pt); + return pt; +} + +/* + * Creates a 2D (xy) point with an m value which is a part of the linear reference system. This is a parser helper + * function which is called when 2D *coordinates with an m value are encountered. + * Parameters x and y are pointers to doubles which represent the x and y coordinates of the point to be created. + * Parameter m is a pointer to a double which represents the part of the linear reference system. + * Returns a gaiaPointPtr pointing to the created 2D point with an m value. + */ +static gaiaPointPtr +ewkt_point_xym (struct ewkt_data *p_data, double *x, double *y, double *m) +{ + gaiaPointPtr pt = gaiaAllocPointXYM (*x, *y, *m); + ewktMapDynAlloc (p_data, EWKT_DYN_POINT, pt); + return pt; +} + +/* + * Creates a 4D (xyz) point with an m value which is a part of the linear reference system. This is a parser helper + * function which is called when *4Dcoordinates with an m value are encountered + * Parameters x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. + * Parameter m is a pointer to a double which represents the part of the linear reference system. + * Returns a gaiaPointPtr pointing the created 4D point with an m value. + */ +gaiaPointPtr +ewkt_point_xyzm (struct ewkt_data * p_data, double *x, double *y, double *z, + double *m) +{ + gaiaPointPtr pt = gaiaAllocPointXYZM (*x, *y, *z, *m); + ewktMapDynAlloc (p_data, EWKT_DYN_POINT, pt); + return pt; +} + +/* + * Builds a geometry collection from a point. The geometry collection should contain only one element ? the point. + * The correct geometry type must be *decided based on the point type. The parser should call this function when the + * ?POINT? WKT expression is encountered. + * Parameter point is a pointer to a 2D, 3D, 2D with an m value, or 4D with an m value point. + * Returns a geometry collection containing the point. The geometry must have FirstPoint and LastPoint pointing to the + * same place as point. *DimensionModel must be the same as the model of the point and DimensionType must be GAIA_TYPE_POINT. + */ +static gaiaGeomCollPtr +ewkt_buildGeomFromPoint (struct ewkt_data *p_data, gaiaPointPtr point) +{ + switch (point->DimensionModel) + { + case GAIA_XY: + return gaiaEwktGeometryFromPoint (p_data, point); + case GAIA_XY_Z: + return gaiaEwktGeometryFromPointZ (p_data, point); + case GAIA_XY_M: + return gaiaEwktGeometryFromPointM (p_data, point); + case GAIA_XY_Z_M: + return gaiaEwktGeometryFromPointZM (p_data, point); + } + return NULL; +} + +/* + * Creates a 2D (xy) linestring from a list of 2D points. + * + * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. + * All of the points in the list must be 2D (xy) points. There must be at least 2 points in the list. + * + * Returns a pointer to linestring containing all of the points in the list. + */ +static gaiaLinestringPtr +ewkt_linestring_xy (struct ewkt_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + int points = 0; + int i = 0; + gaiaLinestringPtr linestring; + + while (p != NULL) + { + p = p->Next; + points++; + } + + linestring = gaiaAllocLinestring (points); + ewktMapDynAlloc (p_data, EWKT_DYN_LINESTRING, linestring); + + p = first; + while (p != NULL) + { + gaiaSetPoint (linestring->Coords, i, p->X, p->Y); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + i++; + } + + return linestring; +} + +/* + * Creates a 3D (xyz) linestring from a list of 3D points. + * + * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. + * All of the points in the list must be 3D (xyz) points. There must be at least 2 points in the list. + * + * Returns a pointer to linestring containing all of the points in the list. + */ +static gaiaLinestringPtr +ewkt_linestring_xyz (struct ewkt_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + int points = 0; + int i = 0; + gaiaLinestringPtr linestring; + + while (p != NULL) + { + p = p->Next; + points++; + } + + linestring = gaiaAllocLinestringXYZ (points); + ewktMapDynAlloc (p_data, EWKT_DYN_LINESTRING, linestring); + + p = first; + while (p != NULL) + { + gaiaSetPointXYZ (linestring->Coords, i, p->X, p->Y, p->Z); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + i++; + } + + return linestring; +} + +/* + * Creates a 2D (xy) with m value linestring from a list of 2D with m value points. + * + * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. + * All of the points in the list must be 2D (xy) with m value points. There must be at least 2 points in the list. + * + * Returns a pointer to linestring containing all of the points in the list. + */ +static gaiaLinestringPtr +ewkt_linestring_xym (struct ewkt_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + int points = 0; + int i = 0; + gaiaLinestringPtr linestring; + + while (p != NULL) + { + p = p->Next; + points++; + } + + linestring = gaiaAllocLinestringXYM (points); + ewktMapDynAlloc (p_data, EWKT_DYN_LINESTRING, linestring); + + p = first; + while (p != NULL) + { + gaiaSetPointXYM (linestring->Coords, i, p->X, p->Y, p->M); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + i++; + } + + return linestring; +} + +/* + * Creates a 4D (xyz) with m value linestring from a list of 4D with m value points. + * + * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. + * All of the points in the list must be 4D (xyz) with m value points. There must be at least 2 points in the list. + * + * Returns a pointer to linestring containing all of the points in the list. + */ +static gaiaLinestringPtr +ewkt_linestring_xyzm (struct ewkt_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + int points = 0; + int i = 0; + gaiaLinestringPtr linestring; + + while (p != NULL) + { + p = p->Next; + points++; + } + + linestring = gaiaAllocLinestringXYZM (points); + ewktMapDynAlloc (p_data, EWKT_DYN_LINESTRING, linestring); + + p = first; + while (p != NULL) + { + gaiaSetPointXYZM (linestring->Coords, i, p->X, p->Y, p->Z, p->M); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + i++; + } + + return linestring; +} + +/* + * Builds a geometry collection from a linestring. + */ +static gaiaGeomCollPtr +ewkt_buildGeomFromLinestring (struct ewkt_data *p_data, gaiaLinestringPtr line) +{ + switch (line->DimensionModel) + { + case GAIA_XY: + return gaiaEwktGeometryFromLinestring (p_data, line); + case GAIA_XY_Z: + return gaiaEwktGeometryFromLinestringZ (p_data, line); + case GAIA_XY_M: + return gaiaEwktGeometryFromLinestringM (p_data, line); + case GAIA_XY_Z_M: + return gaiaEwktGeometryFromLinestringZM (p_data, line); + } + return NULL; +} + +/* + * Helper function that determines the number of points in the linked list. + */ +static int +ewkt_count_points (gaiaPointPtr first) +{ + /* Counts the number of points in the ring. */ + gaiaPointPtr p = first; + int numpoints = 0; + while (p != NULL) + { + numpoints++; + p = p->Next; + } + return numpoints; +} + +/* + * Creates a 2D (xy) ring in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. + * All of the points given to the function are 2D (xy) points. There will be at least 4 points in the list. + * + * Returns the ring defined by the points given to the function. + */ +static gaiaRingPtr +ewkt_ring_xy (struct ewkt_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaRingPtr ring = NULL; + int numpoints; + int index; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Counts the number of points in the ring. */ + numpoints = ewkt_count_points (first); + if (numpoints < 4) + return NULL; + + /* Creates and allocates a ring structure. */ + ring = gaiaAllocRing (numpoints); + if (ring == NULL) + return NULL; + ewktMapDynAlloc (p_data, EWKT_DYN_RING, ring); + + /* Adds every point into the ring structure. */ + p = first; + for (index = 0; index < numpoints; index++) + { + gaiaSetPoint (ring->Coords, index, p->X, p->Y); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + + return ring; +} + +/* + * Creates a 3D (xyz) ring in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. + * All of the points given to the function are 3D (xyz) points. There will be at least 4 points in the list. + * + * Returns the ring defined by the points given to the function. + */ +static gaiaRingPtr +ewkt_ring_xyz (struct ewkt_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaRingPtr ring = NULL; + int numpoints; + int index; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Counts the number of points in the ring. */ + numpoints = ewkt_count_points (first); + if (numpoints < 4) + return NULL; + + /* Creates and allocates a ring structure. */ + ring = gaiaAllocRingXYZ (numpoints); + if (ring == NULL) + return NULL; + ewktMapDynAlloc (p_data, EWKT_DYN_RING, ring); + + /* Adds every point into the ring structure. */ + p = first; + for (index = 0; index < numpoints; index++) + { + gaiaSetPointXYZ (ring->Coords, index, p->X, p->Y, p->Z); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + + return ring; +} + +/* + * Creates a 2D (xym) ring in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. + * All of the points given to the function are 2D (xym) points. There will be at least 4 points in the list. + * + * Returns the ring defined by the points given to the function. + */ +static gaiaRingPtr +ewkt_ring_xym (struct ewkt_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaRingPtr ring = NULL; + int numpoints; + int index; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Counts the number of points in the ring. */ + numpoints = ewkt_count_points (first); + if (numpoints < 4) + return NULL; + + /* Creates and allocates a ring structure. */ + ring = gaiaAllocRingXYM (numpoints); + if (ring == NULL) + return NULL; + ewktMapDynAlloc (p_data, EWKT_DYN_RING, ring); + + /* Adds every point into the ring structure. */ + p = first; + for (index = 0; index < numpoints; index++) + { + gaiaSetPointXYM (ring->Coords, index, p->X, p->Y, p->M); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + + return ring; +} + +/* + * Creates a 3D (xyzm) ring in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. + * All of the points given to the function are 3D (xyzm) points. There will be at least 4 points in the list. + * + * Returns the ring defined by the points given to the function. + */ +static gaiaRingPtr +ewkt_ring_xyzm (struct ewkt_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaRingPtr ring = NULL; + int numpoints; + int index; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Counts the number of points in the ring. */ + numpoints = ewkt_count_points (first); + if (numpoints < 4) + return NULL; + + /* Creates and allocates a ring structure. */ + ring = gaiaAllocRingXYZM (numpoints); + if (ring == NULL) + return NULL; + ewktMapDynAlloc (p_data, EWKT_DYN_RING, ring); + + /* Adds every point into the ring structure. */ + p = first; + for (index = 0; index < numpoints; index++) + { + gaiaSetPointXYZM (ring->Coords, index, p->X, p->Y, p->Z, p->M); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + + return ring; +} + +/* + * Helper function that will create any type of polygon (xy, xym, xyz, xyzm) in SpatiaLite. + * + * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. + * The first ring in the linked list is the external ring while the rest (if any) are internal rings. + * All of the rings given to the function are of the same type. There will be at least 1 ring in the list. + * + * Returns the polygon defined by the rings given to the function. + */ +static gaiaPolygonPtr +ewkt_polygon_any_type (struct ewkt_data *p_data, gaiaRingPtr first) +{ + gaiaRingPtr p; + gaiaRingPtr p_n; + gaiaPolygonPtr polygon; + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Creates and allocates a polygon structure with the exterior ring. */ + polygon = gaiaCreatePolygon (first); + if (polygon == NULL) + return NULL; + ewktMapDynAlloc (p_data, EWKT_DYN_POLYGON, polygon); + + /* Adds all interior rings into the polygon structure. */ + p = first; + while (p != NULL) + { + p_n = p->Next; + ewktMapDynClean (p_data, p); + if (p == first) + gaiaFreeRing (p); + else + gaiaAddRingToPolyg (polygon, p); + p = p_n; + } + + return polygon; +} + +/* + * Creates a 2D (xy) polygon in SpatiaLite + * + * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. + * The first ring in the linked list is the external ring while the rest (if any) are internal rings. + * All of the rings given to the function are 2D (xy) rings. There will be at least 1 ring in the list. + * + * Returns the polygon defined by the rings given to the function. + */ +static gaiaPolygonPtr +ewkt_polygon_xy (struct ewkt_data *p_data, gaiaRingPtr first) +{ + return ewkt_polygon_any_type (p_data, first); +} + +/* + * Creates a 3D (xyz) polygon in SpatiaLite + * + * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. + * The first ring in the linked list is the external ring while the rest (if any) are internal rings. + * All of the rings given to the function are 3D (xyz) rings. There will be at least 1 ring in the list. + * + * Returns the polygon defined by the rings given to the function. + */ +static gaiaPolygonPtr +ewkt_polygon_xyz (struct ewkt_data *p_data, gaiaRingPtr first) +{ + return ewkt_polygon_any_type (p_data, first); +} + +/* + * Creates a 2D (xym) polygon in SpatiaLite + * + * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. + * The first ring in the linked list is the external ring while the rest (if any) are internal rings. + * All of the rings given to the function are 2D (xym) rings. There will be at least 1 ring in the list. + * + * Returns the polygon defined by the rings given to the function. + */ +static gaiaPolygonPtr +ewkt_polygon_xym (struct ewkt_data *p_data, gaiaRingPtr first) +{ + return ewkt_polygon_any_type (p_data, first); +} + +/* + * Creates a 3D (xyzm) polygon in SpatiaLite + * + * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. + * The first ring in the linked list is the external ring while the rest (if any) are internal rings. + * All of the rings given to the function are 3D (xyzm) rings. There will be at least 1 ring in the list. + * + * Returns the polygon defined by the rings given to the function. + */ +static gaiaPolygonPtr +ewkt_polygon_xyzm (struct ewkt_data *p_data, gaiaRingPtr first) +{ + return ewkt_polygon_any_type (p_data, first); +} + +/* + * Builds a geometry collection from a polygon. + * NOTE: This function may already be implemented in the SpatiaLite code base. If it is, make sure that we + * can use it (ie. it doesn't use any other variables or anything else set by Sandro's parser). If you find + * that we can use an existing function then ignore this one. + */ +static gaiaGeomCollPtr +ewkt_buildGeomFromPolygon (struct ewkt_data *p_data, gaiaPolygonPtr polygon) +{ + gaiaGeomCollPtr geom = NULL; + + /* If no pointers are given, return. */ + if (polygon == NULL) + { + return NULL; + } + + /* Creates and allocates a geometry collection containing a multipoint. */ + switch (polygon->DimensionModel) + { + case GAIA_XY: + geom = gaiaAllocGeomColl (); + break; + case GAIA_XY_Z: + geom = gaiaAllocGeomCollXYZ (); + break; + case GAIA_XY_M: + geom = gaiaAllocGeomCollXYM (); + break; + case GAIA_XY_Z_M: + geom = gaiaAllocGeomCollXYZM (); + break; + } + if (geom == NULL) + { + return NULL; + } + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_POLYGON; + + /* Stores the location of the first and last polygons in the linked list. */ + geom->FirstPolygon = polygon; + while (polygon != NULL) + { + ewktMapDynClean (p_data, polygon); + geom->LastPolygon = polygon; + polygon = polygon->Next; + } + return geom; +} + +/* + * Creates a 2D (xy) multipoint object in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points. + * All of the points given to the function are 2D (xy) points. There will be at least 1 point in the list. + * + * Returns a geometry collection containing the created multipoint object. + */ +static gaiaGeomCollPtr +ewkt_multipoint_xy (struct ewkt_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaGeomCollPtr geom = NULL; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Creates and allocates a geometry collection containing a multipoint. */ + geom = gaiaAllocGeomColl (); + if (geom == NULL) + return NULL; + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_MULTIPOINT; + + /* For every 2D (xy) point, add it to the geometry collection. */ + while (p != NULL) + { + gaiaAddPointToGeomColl (geom, p->X, p->Y); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + return geom; +} + +/* + * Creates a 3D (xyz) multipoint object in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points. + * All of the points given to the function are 3D (xyz) points. There will be at least 1 point in the list. + * + * Returns a geometry collection containing the created multipoint object. + */ +static gaiaGeomCollPtr +ewkt_multipoint_xyz (struct ewkt_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaGeomCollPtr geom = NULL; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Creates and allocates a geometry collection containing a multipoint. */ + geom = gaiaAllocGeomCollXYZ (); + if (geom == NULL) + return NULL; + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_MULTIPOINT; + + /* For every 3D (xyz) point, add it to the geometry collection. */ + while (p != NULL) + { + gaiaAddPointToGeomCollXYZ (geom, p->X, p->Y, p->Z); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + return geom; +} + +/* + * Creates a 2D (xym) multipoint object in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points. + * All of the points given to the function are 2D (xym) points. There will be at least 1 point in the list. + * + * Returns a geometry collection containing the created multipoint object. + */ +static gaiaGeomCollPtr +ewkt_multipoint_xym (struct ewkt_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaGeomCollPtr geom = NULL; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Creates and allocates a geometry collection containing a multipoint. */ + geom = gaiaAllocGeomCollXYM (); + if (geom == NULL) + return NULL; + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_MULTIPOINT; + + /* For every 2D (xym) point, add it to the geometry collection. */ + while (p != NULL) + { + gaiaAddPointToGeomCollXYM (geom, p->X, p->Y, p->M); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + return geom; +} + +/* + * Creates a 3D (xyzm) multipoint object in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. + * All of the points given to the function are 3D (xyzm) points. There will be at least 1 point in the list. + * + * Returns a geometry collection containing the created multipoint object. + */ +static gaiaGeomCollPtr +ewkt_multipoint_xyzm (struct ewkt_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaGeomCollPtr geom = NULL; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Creates and allocates a geometry collection containing a multipoint. */ + geom = gaiaAllocGeomCollXYZM (); + if (geom == NULL) + return NULL; + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_MULTIPOINT; + + /* For every 3D (xyzm) point, add it to the geometry collection. */ + while (p != NULL) + { + gaiaAddPointToGeomCollXYZM (geom, p->X, p->Y, p->Z, p->M); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + return geom; +} + +/* + * Creates a geometry collection containing 2D (xy) linestrings. + * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the + * collection. All of the *linestrings in the list must be 2D (xy) linestrings. There must be at least 1 linestring in the list. + * Returns a pointer to the created geometry collection of 2D linestrings. The geometry must have FirstLinestring pointing to the + * first linestring in the list pointed by first and LastLinestring pointing to the last element of the same list. DimensionModel + * must be GAIA_XY and DimensionType must be *GAIA_TYPE_LINESTRING. + */ + +static gaiaGeomCollPtr +ewkt_multilinestring_xy (struct ewkt_data *p_data, gaiaLinestringPtr first) +{ + gaiaLinestringPtr p = first; + gaiaLinestringPtr p_n; + gaiaLinestringPtr new_line; + gaiaGeomCollPtr a = gaiaAllocGeomColl (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, a); + a->DeclaredType = GAIA_MULTILINESTRING; + a->DimensionModel = GAIA_XY; + + while (p) + { + new_line = gaiaAddLinestringToGeomColl (a, p->Points); + gaiaCopyLinestringCoords (new_line, p); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreeLinestring (p); + p = p_n; + } + + return a; +} + +/* + * Returns a geometry collection containing the created multilinestring object (?). + * Creates a geometry collection containing 3D (xyz) linestrings. + * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the + * collection. All of the *linestrings in the list must be 3D (xyz) linestrings. There must be at least 1 linestring in the list. + * Returns a pointer to the created geometry collection of 3D linestrings. The geometry must have FirstLinestring pointing to the + * first linestring in the *list pointed by first and LastLinestring pointing to the last element of the same list. DimensionModel + * must be GAIA_XYZ and DimensionType must be *GAIA_TYPE_LINESTRING. + */ +static gaiaGeomCollPtr +ewkt_multilinestring_xyz (struct ewkt_data *p_data, gaiaLinestringPtr first) +{ + gaiaLinestringPtr p = first; + gaiaLinestringPtr p_n; + gaiaLinestringPtr new_line; + gaiaGeomCollPtr a = gaiaAllocGeomCollXYZ (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, a); + a->DeclaredType = GAIA_MULTILINESTRING; + a->DimensionModel = GAIA_XY_Z; + + while (p) + { + new_line = gaiaAddLinestringToGeomColl (a, p->Points); + gaiaCopyLinestringCoords (new_line, p); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreeLinestring (p); + p = p_n; + } + return a; +} + +/* + * Creates a geometry collection containing 2D (xy) with m value linestrings. + * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the + * collection. All of the *linestrings in the list must be 2D (xy) with m value linestrings. There must be at least 1 linestring + * in the list. + * Returns a pointer to the created geometry collection of 2D with m value linestrings. The geometry must have FirstLinestring + * pointing to the first *linestring in the list pointed by first and LastLinestring pointing to the last element of the same list. + * DimensionModel must be GAIA_XYM and *DimensionType must be GAIA_TYPE_LINESTRING. + */ +static gaiaGeomCollPtr +ewkt_multilinestring_xym (struct ewkt_data *p_data, gaiaLinestringPtr first) +{ + gaiaLinestringPtr p = first; + gaiaLinestringPtr p_n; + gaiaLinestringPtr new_line; + gaiaGeomCollPtr a = gaiaAllocGeomCollXYM (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, a); + a->DeclaredType = GAIA_MULTILINESTRING; + a->DimensionModel = GAIA_XY_M; + + while (p) + { + new_line = gaiaAddLinestringToGeomColl (a, p->Points); + gaiaCopyLinestringCoords (new_line, p); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreeLinestring (p); + p = p_n; + } + + return a; +} + +/* + * Creates a geometry collection containing 4D (xyz) with m value linestrings. + * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the + * collection. All of the *linestrings in the list must be 4D (xyz) with m value linestrings. There must be at least 1 linestring + * in the list. + * Returns a pointer to the created geometry collection of 4D with m value linestrings. The geometry must have FirstLinestring + * pointing to the first *linestring in the list pointed by first and LastLinestring pointing to the last element of the same list. + * DimensionModel must be GAIA_XYZM and *DimensionType must be GAIA_TYPE_LINESTRING. + */ +static gaiaGeomCollPtr +ewkt_multilinestring_xyzm (struct ewkt_data *p_data, gaiaLinestringPtr first) +{ + gaiaLinestringPtr p = first; + gaiaLinestringPtr p_n; + gaiaLinestringPtr new_line; + gaiaGeomCollPtr a = gaiaAllocGeomCollXYZM (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, a); + a->DeclaredType = GAIA_MULTILINESTRING; + a->DimensionModel = GAIA_XY_Z_M; + + while (p) + { + new_line = gaiaAddLinestringToGeomColl (a, p->Points); + gaiaCopyLinestringCoords (new_line, p); + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreeLinestring (p); + p = p_n; + } + return a; +} + +/* + * Creates a geometry collection containing 2D (xy) polygons. + * + * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should + * be added to the collection. All of the polygons in the list must be 2D (xy) polygons. There must be + * at least 1 polygon in the list. + * + * Returns a pointer to the created geometry collection of 2D polygons. The geometry must have + * FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing + * to the last element of the same list. DimensionModel must be GAIA_XY and DimensionType must + * be GAIA_TYPE_POLYGON. + * + */ +static gaiaGeomCollPtr +ewkt_multipolygon_xy (struct ewkt_data *p_data, gaiaPolygonPtr first) +{ + gaiaPolygonPtr p = first; + gaiaPolygonPtr p_n; + int i = 0; + gaiaPolygonPtr new_polyg; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + gaiaGeomCollPtr geom = gaiaAllocGeomColl (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + + geom->DeclaredType = GAIA_MULTIPOLYGON; + + while (p) + { + i_ring = p->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); + o_ring = new_polyg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + + for (i = 0; i < new_polyg->NumInteriors; i++) + { + i_ring = p->Interiors + i; + o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePolygon (p); + p = p_n; + } + + return geom; +} + +/* + * Creates a geometry collection containing 3D (xyz) polygons. + * + * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should be + * added to the collection. All of the polygons in the list must be 3D (xyz) polygons. There must be at + * least 1 polygon in the list. + * + * Returns a pointer to the created geometry collection of 3D polygons. The geometry must have + * FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing to + * the last element of the same list. DimensionModel must be GAIA_XYZ and DimensionType must + * be GAIA_TYPE_POLYGON. + * + */ +static gaiaGeomCollPtr +ewkt_multipolygon_xyz (struct ewkt_data *p_data, gaiaPolygonPtr first) +{ + gaiaPolygonPtr p = first; + gaiaPolygonPtr p_n; + int i = 0; + gaiaPolygonPtr new_polyg; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + gaiaGeomCollPtr geom = gaiaAllocGeomCollXYZ (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + + geom->DeclaredType = GAIA_MULTIPOLYGON; + + while (p) + { + i_ring = p->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); + o_ring = new_polyg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + + for (i = 0; i < new_polyg->NumInteriors; i++) + { + i_ring = p->Interiors + i; + o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePolygon (p); + p = p_n; + } + + return geom; +} + +/* + * Creates a geometry collection containing 2D (xy) with m value polygons. + * + * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should + * be added to the collection. All of the polygons in the list must be 2D (xy) with m value polygons. + * There must be at least 1 polygon in the list. + * + * Returns a pointer to the created geometry collection of 2D with m value polygons. The geometry + * must have FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon + * pointing to the last element of the same list. DimensionModel must be GAIA_XYM and DimensionType + * must be GAIA_TYPE_POLYGON. + * + */ +static gaiaGeomCollPtr +ewkt_multipolygon_xym (struct ewkt_data *p_data, gaiaPolygonPtr first) +{ + gaiaPolygonPtr p = first; + gaiaPolygonPtr p_n; + int i = 0; + gaiaPolygonPtr new_polyg; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + gaiaGeomCollPtr geom = gaiaAllocGeomCollXYM (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + + geom->DeclaredType = GAIA_MULTIPOLYGON; + + while (p) + { + i_ring = p->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); + o_ring = new_polyg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + + for (i = 0; i < new_polyg->NumInteriors; i++) + { + i_ring = p->Interiors + i; + o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePolygon (p); + p = p_n; + } + + return geom; +} + +/* + * Creates a geometry collection containing 4D (xyz) with m value polygons. + * + * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should be + * added to the collection. All of the polygons in the list must be 4D (xyz) with m value polygons. + * There must be at least 1 polygon in the list. + * + * Returns a pointer to the created geometry collection of 4D with m value polygons. The geometry must + * have FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing +// * to the last element of the same list. DimensionModel must be GAIA_XYZM and DimensionType must + * be GAIA_TYPE_POLYGON. + * + */ +static gaiaGeomCollPtr +ewkt_multipolygon_xyzm (struct ewkt_data *p_data, gaiaPolygonPtr first) +{ + gaiaPolygonPtr p = first; + gaiaPolygonPtr p_n; + int i = 0; + gaiaPolygonPtr new_polyg; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + gaiaGeomCollPtr geom = gaiaAllocGeomCollXYZM (); + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + + geom->DeclaredType = GAIA_MULTIPOLYGON; + + while (p) + { + i_ring = p->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); + o_ring = new_polyg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + + for (i = 0; i < new_polyg->NumInteriors; i++) + { + i_ring = p->Interiors + i; + o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + + p_n = p->Next; + ewktMapDynClean (p_data, p); + gaiaFreePolygon (p); + p = p_n; + } + + return geom; +} + +static void +ewkt_geomColl_common (struct ewkt_data *p_data, gaiaGeomCollPtr org, + gaiaGeomCollPtr dst) +{ +/* +/ helper function: xfers entities between the Origin and Destination +/ Sandro Furieri: 2010 October 12 +*/ + gaiaGeomCollPtr p = org; + gaiaGeomCollPtr p_n; + gaiaPointPtr pt; + gaiaPointPtr pt_n; + gaiaLinestringPtr ln; + gaiaLinestringPtr ln_n; + gaiaPolygonPtr pg; + gaiaPolygonPtr pg_n; + while (p) + { + pt = p->FirstPoint; + while (pt) + { + pt_n = pt->Next; + pt->Next = NULL; + if (dst->FirstPoint == NULL) + dst->FirstPoint = pt; + if (dst->LastPoint != NULL) + dst->LastPoint->Next = pt; + dst->LastPoint = pt; + pt = pt_n; + } + ln = p->FirstLinestring; + while (ln) + { + ln_n = ln->Next; + ln->Next = NULL; + if (dst->FirstLinestring == NULL) + dst->FirstLinestring = ln; + if (dst->LastLinestring != NULL) + dst->LastLinestring->Next = ln; + dst->LastLinestring = ln; + ln = ln_n; + } + pg = p->FirstPolygon; + while (pg) + { + pg_n = pg->Next; + pg->Next = NULL; + if (dst->FirstPolygon == NULL) + dst->FirstPolygon = pg; + if (dst->LastPolygon != NULL) + dst->LastPolygon->Next = pg; + dst->LastPolygon = pg; + pg = pg_n; + } + p_n = p->Next; + p->FirstPoint = NULL; + p->LastPoint = NULL; + p->FirstLinestring = NULL; + p->LastLinestring = NULL; + p->FirstPolygon = NULL; + p->LastPolygon = NULL; + ewktMapDynClean (p_data, p); + gaiaFreeGeomColl (p); + p = p_n; + } +} + +/* Creates a 2D (xy) geometry collection in SpatiaLite + * + * first is the first geometry collection in a linked list of geometry collections. + * Each geometry collection represents a single type of object (eg. one could be a POINT, + * another could be a LINESTRING, another could be a MULTILINESTRING, etc.). + * + * The type of object represented by any geometry collection is stored in the declaredType + * field of its struct. For example, if first->declaredType = GAIA_POINT, then first represents a point. + * If first->declaredType = GAIA_MULTIPOINT, then first represents a multipoint. + * + * NOTE: geometry collections cannot contain other geometry collections (have to confirm this + * with Sandro). + * + * The goal of this function is to take the information from all of the structs in the linked list and + * return one geomColl struct containing all of that information. + * + * The integers used for 'declaredType' are defined in gaiageo.h. In this function, the only values + * contained in 'declaredType' that will be encountered will be: + * + * GAIA_POINT, GAIA_LINESTRING, GAIA_POLYGON, + * GAIA_MULTIPOINT, GAIA_MULTILINESTRING, GAIA_MULTIPOLYGON + */ +static gaiaGeomCollPtr +ewkt_geomColl_xy (struct ewkt_data *p_data, gaiaGeomCollPtr first) +{ + gaiaGeomCollPtr geom = gaiaAllocGeomColl (); + if (geom == NULL) + return NULL; + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + geom->DimensionModel = GAIA_XY; + ewkt_geomColl_common (p_data, first, geom); + return geom; +} + +/* + * See geomColl_xy for description. + * + * The only difference between this function and geomColl_xy is that the 'declaredType' field of the structs + * in the linked list for this function will only contain the following types: + * + * GAIA_POINTZ, GAIA_LINESTRINGZ, GAIA_POLYGONZ, + * GAIA_MULTIPOINTZ, GAIA_MULTILINESTRINGZ, GAIA_MULTIPOLYGONZ + */ +static gaiaGeomCollPtr +ewkt_geomColl_xyz (struct ewkt_data *p_data, gaiaGeomCollPtr first) +{ + gaiaGeomCollPtr geom = gaiaAllocGeomColl (); + if (geom == NULL) + return NULL; + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + geom->DimensionModel = GAIA_XY_Z; + ewkt_geomColl_common (p_data, first, geom); + return geom; +} + +/* + * See geomColl_xy for description. + * + * The only difference between this function and geomColl_xy is that the 'declaredType' field of the structs + * in the linked list for this function will only contain the following types: + * + * GAIA_POINTM, GAIA_LINESTRINGM, GAIA_POLYGONM, + * GAIA_MULTIPOINTM, GAIA_MULTILINESTRINGM, GAIA_MULTIPOLYGONM + */ +static gaiaGeomCollPtr +ewkt_geomColl_xym (struct ewkt_data *p_data, gaiaGeomCollPtr first) +{ + gaiaGeomCollPtr geom = gaiaAllocGeomColl (); + if (geom == NULL) + return NULL; + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + geom->DimensionModel = GAIA_XY_M; + ewkt_geomColl_common (p_data, first, geom); + return geom; +} + +/* + * See geomColl_xy for description. + * + * The only difference between this function and geomColl_xy is that the 'declaredType' field of the structs + * in the linked list for this function will only contain the following types: + * + * GAIA_POINTZM, GAIA_LINESTRINGZM, GAIA_POLYGONZM, + * GAIA_MULTIPOINTZM, GAIA_MULTILINESTRINGZM, GAIA_MULTIPOLYGONZM + */ +static gaiaGeomCollPtr +ewkt_geomColl_xyzm (struct ewkt_data *p_data, gaiaGeomCollPtr first) +{ + gaiaGeomCollPtr geom = gaiaAllocGeomColl (); + if (geom == NULL) + return NULL; + ewktMapDynAlloc (p_data, EWKT_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + geom->DimensionModel = GAIA_XY_Z_M; + ewkt_geomColl_common (p_data, first, geom); + return geom; +} + + +/* including LEMON generated code */ +#include "Ewkt.c" + + + +/* +** CAVEAT: there is an incompatibility between LEMON and FLEX +** this macro resolves the issue +*/ +#undef yy_accept +#define yy_accept yy_ewkt_flex_accept + + + + +/* including FLEX generated code */ +#include "lex.Ewkt.c" + +#line 3 "lex.Ewkt.c" + +#define YY_INT_ALIGNED short int + + + +/* +** This is a linked-list struct to store all the values for each token. +** All tokens will have a value of 0, except tokens denoted as NUM. +** NUM tokens are geometry coordinates and will contain the floating +** point number. +*/ +typedef struct ewktFlexTokenStruct +{ + double value; + struct ewktFlexTokenStruct *Next; +} ewktFlexToken; + +/* +** Function to clean up the linked-list of token values. +*/ +static int +ewkt_cleanup (ewktFlexToken * token) +{ + ewktFlexToken *ptok; + ewktFlexToken *ptok_n; + if (token == NULL) + return 0; + ptok = token; + while (ptok) + { + ptok_n = ptok->Next; + free (ptok); + ptok = ptok_n; + } + return 0; +} + +static int +findEwktSrid (const char *buffer, int *base_offset) +{ +/* attempting to identify the EWKT SRID */ + char dummy[1024]; + char *out; + const char *in = buffer; + int end = -1; + int i; + *base_offset = 0; + + while (*in != '\0') + { + /* searching the first semi-colon [srid delimiter] */ + if (*in == ';') + { + end = in - buffer; + break; + } + in++; + } + if (end < 0) + return -1; + in = buffer; + out = dummy; + for (i = 0; i < end; i++) + { + /* normalizing whitespaces */ + char c = *in; + if (c == ' ' || c == '\t' || c == '\n') + { + in++; + continue; + } + *out++ = *in++; + } + *out = '\0'; + if (strncasecmp (dummy, "SRID=", 5) != 0) + return -1; + for (i = 5; i < (int) strlen (dummy); i++) + { + if (i == 5) + { + if (dummy[i] == '-' || dummy[i] == '+') + continue; + } + if (dummy[i] >= '0' && dummy[i] <= '9') + continue; + return -1; + } + *base_offset = end + 1; + return atoi (dummy + 5); +} + +gaiaGeomCollPtr +gaiaParseEWKT (const unsigned char *dirty_buffer) +{ + void *pParser = ParseAlloc (malloc); + /* Linked-list of token values */ + ewktFlexToken *tokens = malloc (sizeof (ewktFlexToken)); + /* Pointer to the head of the list */ + ewktFlexToken *head = tokens; + int yv; + int srid; + int base_offset; + yyscan_t scanner; + struct ewkt_data str_data; + +/* initializing the helper structs */ + str_data.ewkt_line = 1; + str_data.ewkt_col = 1; + str_data.ewkt_parse_error = 0; + str_data.ewkt_first_dyn_block = NULL; + str_data.ewkt_last_dyn_block = NULL; + str_data.result = NULL; + +/* initializing the scanner state */ + Ewktlex_init_extra (&str_data, &scanner); + tokens->Next = NULL; + + srid = findEwktSrid ((char *) dirty_buffer, &base_offset); + Ewkt_scan_string ((char *) dirty_buffer + base_offset, scanner); + + /* + / Keep tokenizing until we reach the end + / yylex() will return the next matching Token for us. + */ + while ((yv = yylex (scanner)) != 0) + { + if (yv == -1) + { + str_data.ewkt_parse_error = 1; + break; + } + tokens->Next = malloc (sizeof (ewktFlexToken)); + tokens->Next->Next = NULL; + tokens->Next->value = str_data.EwktLval.dval; + /* Pass the token to the wkt parser created from lemon */ + Parse (pParser, yv, &(tokens->Next->value), &str_data); + tokens = tokens->Next; + } + /* This denotes the end of a line as well as the end of the parser */ + Parse (pParser, EWKT_NEWLINE, 0, &str_data); + ParseFree (pParser, free); + Ewktlex_destroy (scanner); + + /* Assigning the token as the end to avoid seg faults while cleaning */ + tokens->Next = NULL; + ewkt_cleanup (head); + + if (str_data.ewkt_parse_error) + { + if (str_data.result) + { + /* if a Geometry-result has been produced, the stack is already cleaned */ + gaiaFreeGeomColl (str_data.result); + ewktCleanMapDynAlloc (&str_data, 0); + } + else + { + /* otherwise we are required to clean the stack */ + ewktCleanMapDynAlloc (&str_data, 1); + } + return NULL; + } + + ewktCleanMapDynAlloc (&str_data, 0); + + if (str_data.result == NULL) + return NULL; + if (!ewktCheckValidity (str_data.result)) + { + gaiaFreeGeomColl (str_data.result); + return NULL; + } + + gaiaMbrGeometry (str_data.result); + str_data.result->Srid = srid; + + return str_data.result; +} + + +/* +** CAVEAT: we must now undefine any Lemon/Flex own macro +*/ +#undef YYNOCODE +#undef YYNSTATE +#undef YYNRULE +#undef YY_SHIFT_MAX +#undef YY_SHIFT_USE_DFLT +#undef YY_REDUCE_USE_DFLT +#undef YY_REDUCE_MAX +#undef YY_FLUSH_BUFFER +#undef YY_DO_BEFORE_ACTION +#undef YY_NUM_RULES +#undef YY_END_OF_BUFFER +#undef YY_END_FILE +#undef YYACTIONTYPE +#undef YY_SZ_ACTTAB +#undef YY_NEW_FILE +#undef BEGIN +#undef YY_START +#undef YY_CURRENT_BUFFER +#undef YY_CURRENT_BUFFER_LVALUE +#undef YY_STATE_BUF_SIZE +#undef YY_DECL +#undef YY_FATAL_ERROR +#undef YYMINORTYPE +#undef YY_CHAR +#undef YYSTYPE +#undef input +#undef ParseAlloc +#undef ParseFree +#undef ParseStackPeak +#undef Parse +#undef yyalloc +#undef yyfree +#undef yyin +#undef yyleng +#undef yyless +#undef yylex +#undef yylineno +#undef yyout +#undef yyrealloc +#undef yyrestart +#undef yyStackEntry +#undef yytext +#undef yywrap +#undef yyzerominor +#undef yy_accept +#undef yy_action +#undef yy_base +#undef yy_buffer_stack +#undef yy_buffer_stack_max +#undef yy_buffer_stack_top +#undef yy_c_buf_p +#undef yy_chk +#undef yy_create_buffer +#undef yy_def +#undef yy_default +#undef yy_delete_buffer +#undef yy_destructor +#undef yy_ec +#undef yy_fatal_error +#undef yy_find_reduce_action +#undef yy_find_shift_action +#undef yy_flex_debug +#undef yy_flush_buffer +#undef yy_get_next_buffer +#undef yy_get_previous_state +#undef yy_init +#undef yy_init_buffer +#undef yy_init_globals +#undef yy_load_buffer +#undef yy_load_buffer_state +#undef yy_lookahead +#undef yy_meta +#undef yy_new_buffer +#undef yy_nxt +#undef yy_parse_failed +#undef yy_pop_parser_stack +#undef yy_reduce +#undef yy_reduce_ofst +#undef yy_set_bol +#undef yy_set_interactive +#undef yy_shift +#undef yy_shift_ofst +#undef yy_start +#undef yy_state_type +#undef yy_switch_to_buffer +#undef yy_syntax_error +#undef yy_trans_info +#undef yy_try_NUL_trans +#undef yyParser +#undef yyStackEntry +#undef yyStackOverflow +#undef yyRuleInfo +#undef yytext_ptr +#undef yyunput +#undef yyzerominor +#undef ParseARG_SDECL +#undef ParseARG_PDECL +#undef ParseARG_FETCH +#undef ParseARG_STORE +#undef REJECT +#undef yymore +#undef YY_MORE_ADJ +#undef YY_RESTORE_YY_MORE_OFFSET +#undef YY_LESS_LINENO +#undef yyTracePrompt +#undef yyTraceFILE +#undef yyTokenName +#undef yyRuleName +#undef ParseTrace + +#undef yylex +#undef YY_DECL diff --git a/src/spatialite/src/gaiageo/gg_extras.c b/src/spatialite/src/gaiageo/gg_extras.c new file mode 100644 index 0000000..d502ce2 --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_extras.c @@ -0,0 +1,1362 @@ +/* + + gg_extras.c -- Gaia extra functions support + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2012-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +static double +rint (double x) +{ + return floor (x + 0.5); +} +#endif + +static void +auxGridSnapPoint (int dimension_model, gaiaPointPtr pt, gaiaGeomCollPtr result, + double origin_x, double origin_y, double origin_z, + double origin_m, double size_x, double size_y, double size_z, + double size_m) +{ +/* snapping a Point to a regular Grid */ + double x = pt->X; + double y = pt->Y; + double z = 0.0; + double m = 0.0; + int has_z = 0; + int has_m = 0; + gaiaPointPtr ptx; + + if (pt == NULL || result == NULL) + return; + if (dimension_model == GAIA_XY_Z || dimension_model == GAIA_XY_Z_M) + has_z = 1; + if (dimension_model == GAIA_XY_M || dimension_model == GAIA_XY_Z_M) + has_m = 1; + if (has_z) + z = pt->Z; + if (has_m) + m = pt->M; + +/* snapping coords to the given grid */ + if (size_x > 0.0) + x = rint ((x - origin_x) / size_x) * size_x + origin_x; + if (size_y > 0.0) + y = rint ((y - origin_y) / size_y) * size_y + origin_y; + if (has_z && size_z > 0.0) + z = rint ((z - origin_z) / size_z) * size_z + origin_z; + if (has_m && size_m > 0.0) + m = rint ((m - origin_m) / size_m) * size_m + origin_m; + + ptx = result->FirstPoint; + while (ptx) + { + /* checking if already defined */ + if (has_z && has_m) + { + if (ptx->X == x && ptx->Y == y && ptx->Z == z && ptx->M == m) + return; + } + else if (has_z) + { + if (ptx->X == x && ptx->Y == y && ptx->Z == z) + return; + } + else if (has_m) + { + if (ptx->X == x && ptx->Y == y && ptx->M == m) + return; + } + else + { + if (ptx->X == x && ptx->Y == y) + return; + } + ptx = ptx->Next; + } + +/* inserting the snapped Point into the result Geometry */ + if (has_z && has_m) + gaiaAddPointToGeomCollXYZM (result, x, y, z, m); + else if (has_z) + gaiaAddPointToGeomCollXYZ (result, x, y, z); + else if (has_m) + gaiaAddPointToGeomCollXYM (result, x, y, m); + else + gaiaAddPointToGeomColl (result, x, y); +} + +static void +auxGridSnapLinestring (gaiaLinestringPtr ln, gaiaGeomCollPtr result, + double origin_x, double origin_y, double origin_z, + double origin_m, double size_x, double size_y, + double size_z, double size_m) +{ +/* snapping a Linestring to a regular Grid */ + double x; + double y; + double z; + double m; + int has_z = 0; + int has_m = 0; + int iv; + gaiaDynamicLinePtr dyn; + gaiaPointPtr pt; + gaiaLinestringPtr lnx; + int count = 0; + + if (ln == NULL || result == NULL) + return; + if (ln->DimensionModel == GAIA_XY_Z || ln->DimensionModel == GAIA_XY_Z_M) + has_z = 1; + if (ln->DimensionModel == GAIA_XY_M || ln->DimensionModel == GAIA_XY_Z_M) + has_m = 1; + dyn = gaiaAllocDynamicLine (); + + for (iv = 0; iv < ln->Points; iv++) + { + /* snapping each Vertex to the given grid */ + int to_be_inserted = 0; + z = 0.0; + m = 0.0; + if (has_z && has_m) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else if (has_z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + } + else if (has_m) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + /* snapping coords to the given grid */ + if (size_x > 0.0) + x = rint ((x - origin_x) / size_x) * size_x + origin_x; + if (size_y > 0.0) + y = rint ((y - origin_y) / size_y) * size_y + origin_y; + if (has_z && size_z > 0.0) + z = rint ((z - origin_z) / size_z) * size_z + origin_z; + if (has_m && size_m > 0.0) + m = rint ((m - origin_m) / size_m) * size_m + origin_m; + + if (dyn->Last == NULL) + to_be_inserted = 1; + else + { + /* skipping repeated points */ + pt = dyn->Last; + if (has_z && has_m) + { + if (pt->X == x && pt->Y == y && pt->Z == z && pt->M == m) + ; + else + to_be_inserted = 1; + } + else if (has_z) + { + if (pt->X == x && pt->Y == y && pt->Z == z) + ; + else + to_be_inserted = 1; + } + else if (has_m) + { + if (pt->X == x && pt->Y == y && pt->M == m) + ; + else + to_be_inserted = 1; + } + else + { + if (pt->X == x && pt->Y == y) + ; + else + to_be_inserted = 1; + } + } + if (to_be_inserted) + { + if (has_z && has_m) + gaiaAppendPointZMToDynamicLine (dyn, x, y, z, m); + else if (has_z) + gaiaAppendPointZToDynamicLine (dyn, x, y, z); + else if (has_m) + gaiaAppendPointMToDynamicLine (dyn, x, y, m); + else + gaiaAppendPointToDynamicLine (dyn, x, y); + } + } + +/* checking for validity */ + pt = dyn->First; + while (pt) + { + /* counting how many points are there */ + count++; + pt = pt->Next; + } + if (count < 2) + { + /* skipping any collapsed line */ + gaiaFreeDynamicLine (dyn); + return; + } + +/* inserting into the result Geometry */ + lnx = gaiaAddLinestringToGeomColl (result, count); + iv = 0; + pt = dyn->First; + while (pt) + { + /* copying points */ + if (lnx->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (lnx->Coords, iv, pt->X, pt->Y, pt->Z); + } + else if (lnx->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (lnx->Coords, iv, pt->X, pt->Y, pt->M); + } + else if (lnx->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (lnx->Coords, iv, pt->X, pt->Y, pt->Z, pt->M); + } + else + { + gaiaSetPoint (lnx->Coords, iv, pt->X, pt->Y); + } + iv++; + pt = pt->Next; + } + gaiaFreeDynamicLine (dyn); +} + +static gaiaDynamicLinePtr +auxGridSnapRing (gaiaRingPtr rng, double origin_x, double origin_y, + double origin_z, double origin_m, double size_x, double size_y, + double size_z, double size_m) +{ +/* snapping a Ring to a regular Grid */ + double x; + double y; + double z; + double m; + int has_z = 0; + int has_m = 0; + int iv; + gaiaDynamicLinePtr dyn; + gaiaPointPtr pt0; + gaiaPointPtr pt; + int count = 0; + + if (rng == NULL) + return NULL; + if (rng->DimensionModel == GAIA_XY_Z || rng->DimensionModel == GAIA_XY_Z_M) + has_z = 1; + if (rng->DimensionModel == GAIA_XY_M || rng->DimensionModel == GAIA_XY_Z_M) + has_m = 1; + dyn = gaiaAllocDynamicLine (); + + for (iv = 0; iv < rng->Points; iv++) + { + /* snapping each Vertex to the given grid */ + int to_be_inserted = 0; + z = 0.0; + m = 0.0; + if (has_z && has_m) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else if (has_z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (has_m) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + /* snapping coords to the given grid */ + if (size_x > 0.0) + x = rint ((x - origin_x) / size_x) * size_x + origin_x; + if (size_y > 0.0) + y = rint ((y - origin_y) / size_y) * size_y + origin_y; + if (has_z && size_z > 0.0) + z = rint ((z - origin_z) / size_z) * size_z + origin_z; + if (has_m && size_m > 0.0) + m = rint ((m - origin_m) / size_m) * size_m + origin_m; + + if (dyn->Last == NULL) + to_be_inserted = 1; + else + { + /* skipping repeated points */ + pt = dyn->Last; + if (has_z && has_m) + { + if (pt->X == x && pt->Y == y && pt->Z == z && pt->M == m) + ; + else + to_be_inserted = 1; + } + else if (has_z) + { + if (pt->X == x && pt->Y == y && pt->Z == z) + ; + else + to_be_inserted = 1; + } + else if (has_m) + { + if (pt->X == x && pt->Y == y && pt->M == m) + ; + else + to_be_inserted = 1; + } + else + { + if (pt->X == x && pt->Y == y) + ; + else + to_be_inserted = 1; + } + } + if (to_be_inserted) + { + if (has_z && has_m) + gaiaAppendPointZMToDynamicLine (dyn, x, y, z, m); + else if (has_z) + gaiaAppendPointZToDynamicLine (dyn, x, y, z); + else if (has_m) + gaiaAppendPointMToDynamicLine (dyn, x, y, m); + else + gaiaAppendPointToDynamicLine (dyn, x, y); + } + } +/* ensuring for Ring closure */ + pt0 = dyn->First; + pt = dyn->Last; + if (has_z && has_m) + { + if (pt0->X == pt->X && pt0->Y == pt->Y && pt0->Z == pt->Z + && pt0->M == pt->M) + ; + else + gaiaAppendPointZMToDynamicLine (dyn, pt->X, pt->Y, pt->Z, pt->M); + } + else if (has_z) + { + if (pt0->X == pt->X && pt0->Y == pt->Y && pt0->Z == pt->Z) + ; + else + gaiaAppendPointZToDynamicLine (dyn, pt->X, pt->Y, pt->Z); + } + else if (has_m) + { + if (pt0->X == pt->X && pt0->Y == pt->Y && pt0->M == pt->M) + ; + else + gaiaAppendPointMToDynamicLine (dyn, pt->X, pt->Y, pt->M); + } + else + { + if (pt0->X == pt->X && pt0->Y == pt->Y) + ; + else + gaiaAppendPointToDynamicLine (dyn, pt->X, pt->Y); + } + +/* checking for validity */ + pt = dyn->First; + while (pt) + { + /* counting how many points are there */ + count++; + pt = pt->Next; + } + if (count < 4) + { + /* skipping any collapsed ring */ + gaiaFreeDynamicLine (dyn); + return NULL; + } + return dyn; +} + +static void +auxGridSnapPolygon (gaiaPolygonPtr pg, gaiaGeomCollPtr result, double origin_x, + double origin_y, double origin_z, double origin_m, + double size_x, double size_y, double size_z, double size_m) +{ +/* snapping a Polygon to a regular Grid */ + int ib; + int holes = 0; + int count; + int next_hole = 0; + int iv; + gaiaRingPtr rng; + gaiaPolygonPtr pgx; + gaiaPointPtr pt; + gaiaDynamicLinePtr rng_ext; + gaiaDynamicLinePtr dyn; + gaiaDynamicLinePtr *rng_ints = NULL; + + if (pg == NULL || result == NULL) + return; +/* snapping the Exterior Ring */ + rng = pg->Exterior; + rng_ext = + auxGridSnapRing (rng, origin_x, origin_y, origin_z, origin_m, size_x, + size_y, size_z, size_m); + if (rng_ext == NULL) /* skipping any collaped Polygon */ + return; + + if (pg->NumInteriors) + { + /* snapping any Interior Ring */ + rng_ints = malloc (sizeof (gaiaRingPtr *) * pg->NumInteriors); + for (ib = 0; ib < pg->NumInteriors; ib++) + { + rng = pg->Interiors + ib; + *(rng_ints + ib) = + auxGridSnapRing (rng, origin_x, origin_y, origin_z, + origin_m, size_x, size_y, size_z, size_m); + if (*(rng_ints + ib) != NULL) + holes++; + } + } + +/* inserting into the result Geometry */ + pt = rng_ext->First; + count = 0; + while (pt) + { + /* counting how many points are in the Exterior Ring */ + count++; + pt = pt->Next; + } + pgx = gaiaAddPolygonToGeomColl (result, count, holes); + rng = pgx->Exterior; + iv = 0; + pt = rng_ext->First; + while (pt) + { + /* copying Exterior Ring points */ + if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (rng->Coords, iv, pt->X, pt->Y, pt->Z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (rng->Coords, iv, pt->X, pt->Y, pt->M); + } + else if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (rng->Coords, iv, pt->X, pt->Y, pt->Z, pt->M); + } + else + { + gaiaSetPoint (rng->Coords, iv, pt->X, pt->Y); + } + iv++; + pt = pt->Next; + } + if (holes > 0) + { + /* setting up any not-collapsed Hole */ + for (ib = 0; ib < pg->NumInteriors; ib++) + { + if (*(rng_ints + ib) == NULL) + continue; + dyn = *(rng_ints + ib); + pt = dyn->First; + count = 0; + while (pt) + { + /* counting how many points are in the Exterior Ring */ + count++; + pt = pt->Next; + } + rng = gaiaAddInteriorRing (pgx, next_hole++, count); + iv = 0; + pt = dyn->First; + while (pt) + { + /* copying Interior Ring points */ + if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (rng->Coords, iv, pt->X, pt->Y, + pt->Z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (rng->Coords, iv, pt->X, pt->Y, + pt->M); + } + else if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (rng->Coords, iv, pt->X, pt->Y, + pt->Z, pt->M); + } + else + { + gaiaSetPoint (rng->Coords, iv, pt->X, pt->Y); + } + iv++; + pt = pt->Next; + } + } + } + +/* memory clean-up */ + gaiaFreeDynamicLine (rng_ext); + if (rng_ints) + { + for (ib = 0; ib < pg->NumInteriors; ib++) + { + dyn = *(rng_ints + ib); + if (dyn) + gaiaFreeDynamicLine (dyn); + } + free (rng_ints); + } +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaSnapToGrid (gaiaGeomCollPtr geom, double origin_x, double origin_y, + double origin_z, double origin_m, double size_x, double size_y, + double size_z, double size_m) +{ +/* creating a Geometry snapped to a regular Grid */ + gaiaGeomCollPtr result; + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + + if (!geom) + return NULL; + +/* creating the output Geometry */ + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else + result = gaiaAllocGeomColl (); + +/* snapping elementary Geometries to the given Grid */ + pt = geom->FirstPoint; + while (pt) + { + /* snapping POINTs */ + auxGridSnapPoint (geom->DimensionModel, pt, result, origin_x, + origin_y, origin_z, origin_m, size_x, size_y, + size_z, size_m); + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + /* snapping LINESTRINGs */ + auxGridSnapLinestring (ln, result, origin_x, origin_y, origin_z, + origin_m, size_x, size_y, size_z, size_m); + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + /* snapping POLYGONs */ + auxGridSnapPolygon (pg, result, origin_x, origin_y, origin_z, + origin_m, size_x, size_y, size_z, size_m); + pg = pg->Next; + } + +/* validating the output Geometry */ + pt = result->FirstPoint; + while (pt) + { + /* counting how many POINTs are there */ + pts++; + pt = pt->Next; + } + ln = result->FirstLinestring; + while (ln) + { + /* counting how many LINESTRINGs are there */ + lns++; + ln = ln->Next; + } + pg = result->FirstPolygon; + while (pg) + { + /* counting how many POLYGONs are there */ + pgs++; + pg = pg->Next; + } + if (pts == 0 && lns == 0 && pgs == 0) + { + /* empty result */ + gaiaFreeGeomColl (result); + return NULL; + } + +/* final adjustment */ + result->Srid = geom->Srid; + if (pts == 1 && lns == 0 && pgs == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + result->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else if (geom->DeclaredType == GAIA_MULTIPOINT) + result->DeclaredType = GAIA_MULTIPOINT; + else + result->DeclaredType = GAIA_POINT; + } + else if (pts == 0 && lns == 1 && pgs == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + result->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else if (geom->DeclaredType == GAIA_MULTILINESTRING) + result->DeclaredType = GAIA_MULTILINESTRING; + else + result->DeclaredType = GAIA_LINESTRING; + } + else if (pts == 0 && lns == 0 && pgs == 1) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + result->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else if (geom->DeclaredType == GAIA_MULTIPOLYGON) + result->DeclaredType = GAIA_MULTIPOLYGON; + else + result->DeclaredType = GAIA_POLYGON; + } + else if (pts > 1 && lns == 0 && pgs == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + result->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + result->DeclaredType = GAIA_MULTIPOINT; + } + else if (pts == 0 && lns > 1 && pgs == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + result->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + result->DeclaredType = GAIA_MULTILINESTRING; + } + else if (pts == 0 && lns == 0 && pgs > 1) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + result->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + result->DeclaredType = GAIA_MULTIPOLYGON; + } + else + result->DeclaredType = GAIA_GEOMETRYCOLLECTION; + return result; +} + +#ifndef OMIT_GEOS /* only if GEOS is enabled */ + +static void +get_grid_bbox (gaiaGeomCollPtr geom, double *min_x, double *min_y, + double *max_x, double *max_y) +{ +/* extracting the BBOX representing the input geometry */ + gaiaMbrGeometry (geom); + *min_x = geom->MinX; + *min_y = geom->MinY; + *max_x = geom->MaxX; + *max_y = geom->MaxY; +} + +static void +get_grid_base (double min_x, double min_y, double origin_x, double origin_y, + double size, double *base_x, double *base_y) +{ +/* determining the grid base-point [MinX/MinY] */ + double x = rint ((min_x - origin_x) / size) * size + origin_x; + double y = rint ((min_y - origin_y) / size) * size + origin_y; + if (x > min_x) + *base_x = x - size; + else + *base_x = x; + if (y > min_y) + *base_y = y - size; + else + *base_y = y; +} + +static gaiaGeomCollPtr +gaiaSquareGridCommon (const void *p_cache, gaiaGeomCollPtr geom, + double origin_x, double origin_y, double size, + int edges_only) +{ +/* creating a regular grid [Square cells] */ + double min_x; + double min_y; + double max_x; + double max_y; + double base_x; + double base_y; + double x1; + double y1; + double x2; + double y2; + double x3; + double y3; + double x4; + double y4; + int count = 0; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + gaiaLinestringPtr ln; + gaiaGeomCollPtr result = NULL; + gaiaGeomCollPtr item = NULL; + int ret; + + if (size <= 0.0) + return NULL; + + result = gaiaAllocGeomColl (); + result->Srid = geom->Srid; + get_grid_bbox (geom, &min_x, &min_y, &max_x, &max_y); + get_grid_base (min_x, min_y, origin_x, origin_y, size, &base_x, &base_y); + while (base_y < max_y) + { + /* looping on grid rows */ + x1 = base_x; + y1 = base_y; + x2 = x1 + size; + y2 = y1; + x3 = x2; + y3 = y1 + size; + x4 = x1; + y4 = y3; + while (x1 < max_x) + { + /* looping on grid columns */ + item = gaiaAllocGeomColl (); + + pg = gaiaAddPolygonToGeomColl (item, 5, 0); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, x1, y1); + gaiaSetPoint (rng->Coords, 1, x2, y2); + gaiaSetPoint (rng->Coords, 2, x3, y3); + gaiaSetPoint (rng->Coords, 3, x4, y4); + gaiaSetPoint (rng->Coords, 4, x1, y1); + + gaiaMbrGeometry (item); + if (p_cache != NULL) + ret = gaiaGeomCollIntersects_r (p_cache, geom, item); + else + ret = gaiaGeomCollIntersects (geom, item); + if (ret == 1) + { + /* ok, inserting a valid cell */ + count++; + if (edges_only) + { + /* multilinestring */ + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x1, y1); + gaiaSetPoint (ln->Coords, 1, x2, y2); + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x2, y2); + gaiaSetPoint (ln->Coords, 1, x3, y3); + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x3, y3); + gaiaSetPoint (ln->Coords, 1, x4, y4); + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x4, y4); + gaiaSetPoint (ln->Coords, 1, x1, y1); + } + else + { + /* polygon */ + pg = gaiaAddPolygonToGeomColl (result, 5, 0); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, x1, y1); + gaiaSetPoint (rng->Coords, 1, x2, y2); + gaiaSetPoint (rng->Coords, 2, x3, y3); + gaiaSetPoint (rng->Coords, 3, x4, y4); + gaiaSetPoint (rng->Coords, 4, x1, y1); + } + } + gaiaFreeGeomColl (item); + x1 += size; + x2 += size; + x3 += size; + x4 += size; + } + base_y += size; + } + +/* final check */ + if (!count) + { + /* empty grid */ + gaiaFreeGeomColl (result); + return NULL; + } + if (!edges_only) + { + result->DeclaredType = GAIA_MULTIPOLYGON; + return result; + } + + item = result; + if (p_cache != NULL) + result = gaiaUnaryUnion_r (p_cache, item); + else + result = gaiaUnaryUnion (item); + gaiaFreeGeomColl (item); + result->Srid = geom->Srid; + result->DeclaredType = GAIA_LINESTRING; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaSquareGrid (gaiaGeomCollPtr geom, double origin_x, double origin_y, + double size, int edges_only) +{ + return gaiaSquareGridCommon (NULL, geom, origin_x, origin_y, size, + edges_only); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaSquareGrid_r (const void *p_cache, gaiaGeomCollPtr geom, double origin_x, + double origin_y, double size, int edges_only) +{ + return gaiaSquareGridCommon (p_cache, geom, origin_x, origin_y, size, + edges_only); +} + +static void +get_trigrid_base (double min_x, double min_y, double origin_x, double origin_y, + double shift_h_odd, double shift_h_even, double shift_v, + int *odd_even, double *base_x, double *base_y) +{ +/* determining the grid base-point [MinX/MinY] for a Triangular Grid */ + double bx = origin_x; + double by = origin_y; + while (1) + { + /* looping on grid rows */ + if (by < min_y) + goto next_scanline; + if (*odd_even) + bx = origin_x - shift_h_odd; + else + bx = origin_x; + while (1) + { + /* looping on grid columns */ + if (bx + shift_h_even > min_x + || bx + shift_h_even + shift_h_odd > min_x) + { + *base_x = bx; + *base_y = by; + return; + } + bx += shift_h_even; + } + next_scanline: + by += shift_v; + if (*odd_even) + *odd_even = 0; + else + *odd_even = 1; + } +} + +static gaiaGeomCollPtr +gaiaTriangularGridCommon (const void *p_cache, gaiaGeomCollPtr geom, + double origin_x, double origin_y, double size, + int edges_only) +{ +/* creating a regular grid [Triangular cells] */ + double min_x; + double min_y; + double max_x; + double max_y; + double base_x; + double base_y; + double x1; + double y1; + double x2; + double y2; + double x3; + double y3; + double x4; + double y4; + double shift_h_odd; + double shift_h_even; + double shift_v; + int count = 0; + int odd_even = 0; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + gaiaLinestringPtr ln; + gaiaGeomCollPtr result = NULL; + gaiaGeomCollPtr item = NULL; + int ret; + + if (size <= 0.0) + return NULL; + shift_h_odd = size / 2.0; + shift_h_even = size; + shift_v = size * sin (3.14159265358979323846 / 3.0); + + result = gaiaAllocGeomColl (); + result->Srid = geom->Srid; + get_grid_bbox (geom, &min_x, &min_y, &max_x, &max_y); + get_trigrid_base (min_x, min_y, origin_x, origin_y, shift_h_odd, + shift_h_even, shift_v, &odd_even, &base_x, &base_y); + while (base_y < max_y) + { + /* looping on grid rows */ + if (odd_even) + x1 = base_x - shift_h_odd; + else + x1 = base_x; + y1 = base_y; + x2 = x1 + shift_h_even; + y2 = y1; + x3 = x1 + shift_h_odd; + y3 = y1 + shift_v; + x4 = x3 + shift_h_even; + y4 = y3; + while (x1 < max_x) + { + /* looping on grid columns */ + item = gaiaAllocGeomColl (); + + pg = gaiaAddPolygonToGeomColl (item, 4, 0); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, x1, y1); + gaiaSetPoint (rng->Coords, 1, x2, y2); + gaiaSetPoint (rng->Coords, 2, x3, y3); + gaiaSetPoint (rng->Coords, 3, x1, y1); + + gaiaMbrGeometry (item); + if (p_cache != NULL) + ret = gaiaGeomCollIntersects_r (p_cache, geom, item); + else + ret = gaiaGeomCollIntersects (geom, item); + if (ret == 1) + { + /* ok, inserting a valid cell [pointing upside] */ + count++; + if (edges_only) + { + /* multilinestring */ + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x1, y1); + gaiaSetPoint (ln->Coords, 1, x2, y2); + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x2, y2); + gaiaSetPoint (ln->Coords, 1, x3, y3); + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x3, y3); + gaiaSetPoint (ln->Coords, 1, x1, y1); + } + else + { + /* polygon */ + pg = gaiaAddPolygonToGeomColl (result, 4, 0); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, x1, y1); + gaiaSetPoint (rng->Coords, 1, x2, y2); + gaiaSetPoint (rng->Coords, 2, x3, y3); + gaiaSetPoint (rng->Coords, 3, x1, y1); + } + } + gaiaFreeGeomColl (item); + + item = gaiaAllocGeomColl (); + + pg = gaiaAddPolygonToGeomColl (item, 4, 0); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, x3, y3); + gaiaSetPoint (rng->Coords, 1, x2, y2); + gaiaSetPoint (rng->Coords, 2, x4, y4); + gaiaSetPoint (rng->Coords, 3, x3, y3); + + gaiaMbrGeometry (item); + if (p_cache != NULL) + ret = gaiaGeomCollIntersects_r (p_cache, geom, item); + else + ret = gaiaGeomCollIntersects (geom, item); + if (ret == 1) + { + /* ok, inserting a valid cell [pointing downside] */ + count++; + if (edges_only) + { + /* multilinestring */ + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x1, y1); + gaiaSetPoint (ln->Coords, 1, x2, y2); + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x2, y2); + gaiaSetPoint (ln->Coords, 1, x3, y3); + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x3, y3); + gaiaSetPoint (ln->Coords, 1, x1, y1); + } + else + { + /* polygon */ + pg = gaiaAddPolygonToGeomColl (result, 4, 0); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, x3, y3); + gaiaSetPoint (rng->Coords, 1, x2, y2); + gaiaSetPoint (rng->Coords, 2, x4, y4); + gaiaSetPoint (rng->Coords, 3, x3, y3); + } + } + gaiaFreeGeomColl (item); + + x1 += shift_h_even; + x2 += shift_h_even; + x3 += shift_h_even; + x4 += shift_h_even; + } + base_y += shift_v; + if (odd_even) + odd_even = 0; + else + odd_even = 1; + } + +/* final check */ + if (!count) + { + /* empty grid */ + gaiaFreeGeomColl (result); + return NULL; + } + if (!edges_only) + { + result->DeclaredType = GAIA_MULTIPOLYGON; + return result; + } + + item = result; + if (p_cache != NULL) + result = gaiaUnaryUnion_r (p_cache, item); + else + result = gaiaUnaryUnion (item); + gaiaFreeGeomColl (item); + result->Srid = geom->Srid; + result->DeclaredType = GAIA_LINESTRING; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaTriangularGrid (gaiaGeomCollPtr geom, double origin_x, double origin_y, + double size, int edges_only) +{ + return gaiaTriangularGridCommon (NULL, geom, origin_x, origin_y, size, + edges_only); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaTriangularGrid_r (const void *p_cache, gaiaGeomCollPtr geom, + double origin_x, double origin_y, double size, + int edges_only) +{ + return gaiaTriangularGridCommon (p_cache, geom, origin_x, origin_y, size, + edges_only); +} + +static void +get_hexgrid_base (double min_x, double min_y, double origin_x, double origin_y, + double shift3, double shift4, double shift, + int *odd_even, double *base_x, double *base_y) +{ +/* determining the grid base-point [MinX/MinY] for am Hexagonal Grid */ + double bx = origin_x; + double by = origin_y; + while (1) + { + /* looping on grid rows */ + if (by < min_y) + goto next_scanline; + if (*odd_even) + bx = origin_x + (shift3 / 2.0); + else + bx = origin_x; + while (1) + { + /* looping on grid columns */ + if (bx + shift4 > min_x) + { + *base_x = bx; + *base_y = by; + return; + } + bx += shift3; + } + next_scanline: + by += shift; + if (*odd_even) + *odd_even = 0; + else + *odd_even = 1; + } +} + +static gaiaGeomCollPtr +gaiaHexagonalGridCommon (const void *p_cache, gaiaGeomCollPtr geom, + double origin_x, double origin_y, double size, + int edges_only) +{ +/* creating a regular grid [Hexagonal cells] */ + double min_x; + double min_y; + double max_x; + double max_y; + double base_x; + double base_y; + double x1; + double y1; + double x2; + double y2; + double x3; + double y3; + double x4; + double y4; + double x5; + double y5; + double x6; + double y6; + int count = 0; + int odd_even = 0; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + gaiaLinestringPtr ln; + gaiaGeomCollPtr result = NULL; + gaiaGeomCollPtr item = NULL; + double shift; + double shift2; + double shift3; + double shift4; + int ret; + + if (size <= 0.0) + return NULL; + shift = size * sin (3.14159265358979323846 / 3.0); + shift2 = size / 2.0; + shift3 = size * 3.0; + shift4 = size * 2.0; + + result = gaiaAllocGeomColl (); + result->Srid = geom->Srid; + get_grid_bbox (geom, &min_x, &min_y, &max_x, &max_y); + get_hexgrid_base (min_x, min_y, origin_x, origin_y, shift3, shift4, + shift, &odd_even, &base_x, &base_y); + while ((base_y - shift) < max_y) + { + /* looping on grid rows */ + if (odd_even) + x1 = base_x - (shift3 / 2.0); + else + x1 = base_x; + y1 = base_y; + x2 = x1 + shift2; + y2 = y1 - shift; + x3 = x2 + size; + y3 = y2; + x4 = x1 + shift4; + y4 = y1; + x5 = x3; + y5 = y1 + shift; + x6 = x2; + y6 = y5; + while (x1 < max_x) + { + /* looping on grid columns */ + item = gaiaAllocGeomColl (); + + pg = gaiaAddPolygonToGeomColl (item, 7, 0); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, x1, y1); + gaiaSetPoint (rng->Coords, 1, x2, y2); + gaiaSetPoint (rng->Coords, 2, x3, y3); + gaiaSetPoint (rng->Coords, 3, x4, y4); + gaiaSetPoint (rng->Coords, 4, x5, y5); + gaiaSetPoint (rng->Coords, 5, x6, y6); + gaiaSetPoint (rng->Coords, 6, x1, y1); + + gaiaMbrGeometry (item); + if (p_cache != NULL) + ret = gaiaGeomCollIntersects_r (p_cache, geom, item); + else + ret = gaiaGeomCollIntersects (geom, item); + if (ret == 1) + { + /* ok, inserting a valid cell */ + count++; + if (edges_only) + { + /* multilinestring */ + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x1, y1); + gaiaSetPoint (ln->Coords, 1, x2, y2); + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x2, y2); + gaiaSetPoint (ln->Coords, 1, x3, y3); + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x3, y3); + gaiaSetPoint (ln->Coords, 1, x4, y4); + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x4, y4); + gaiaSetPoint (ln->Coords, 1, x5, y5); + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x5, y5); + gaiaSetPoint (ln->Coords, 1, x6, y6); + ln = gaiaAddLinestringToGeomColl (result, 2); + gaiaSetPoint (ln->Coords, 0, x6, y6); + gaiaSetPoint (ln->Coords, 1, x1, y1); + } + else + { + /* polygon */ + pg = gaiaAddPolygonToGeomColl (result, 7, 0); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, x1, y1); + gaiaSetPoint (rng->Coords, 1, x2, y2); + gaiaSetPoint (rng->Coords, 2, x3, y3); + gaiaSetPoint (rng->Coords, 3, x4, y4); + gaiaSetPoint (rng->Coords, 4, x5, y5); + gaiaSetPoint (rng->Coords, 5, x6, y6); + gaiaSetPoint (rng->Coords, 6, x1, y1); + } + } + gaiaFreeGeomColl (item); + + x1 += shift3; + x2 += shift3; + x3 += shift3; + x4 += shift3; + x5 += shift3; + x6 += shift3; + } + base_y += shift; + if (odd_even) + odd_even = 0; + else + odd_even = 1; + } + +/* final check */ + if (!count) + { + /* empty grid */ + gaiaFreeGeomColl (result); + return NULL; + } + if (!edges_only) + { + result->DeclaredType = GAIA_MULTIPOLYGON; + return result; + } + + item = result; + if (p_cache != NULL) + result = gaiaUnaryUnion_r (p_cache, item); + else + result = gaiaUnaryUnion (item); + gaiaFreeGeomColl (item); + result->Srid = geom->Srid; + result->DeclaredType = GAIA_LINESTRING; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaHexagonalGrid (gaiaGeomCollPtr geom, double origin_x, double origin_y, + double size, int edges_only) +{ + return gaiaHexagonalGridCommon (NULL, geom, origin_x, origin_y, size, + edges_only); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaHexagonalGrid_r (const void *p_cache, gaiaGeomCollPtr geom, double origin_x, + double origin_y, double size, int edges_only) +{ + return gaiaHexagonalGridCommon (p_cache, geom, origin_x, origin_y, size, + edges_only); +} + +#endif /* end including GEOS */ diff --git a/src/spatialite/src/gaiageo/gg_geoJSON.c b/src/spatialite/src/gaiageo/gg_geoJSON.c new file mode 100644 index 0000000..84108f7 --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_geoJSON.c @@ -0,0 +1,1484 @@ +/* + + gg_geoJSON.c -- GeoJSON parser/lexer + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011-2013 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include + +#define GEOJSON_DYN_NONE 0 +#define GEOJSON_DYN_POINT 1 +#define GEOJSON_DYN_LINESTRING 2 +#define GEOJSON_DYN_POLYGON 3 +#define GEOJSON_DYN_RING 4 +#define GEOJSON_DYN_GEOMETRY 5 + +#define GEOJSON_DYN_BLOCK 1024 + + + +/* +** CAVEAT: we must redefine any Lemon/Flex own macro +*/ +#define YYMINORTYPE GEO_JSON_MINORTYPE +#define YY_CHAR GEO_JSON_YY_CHAR +#define input geoJSON_input +#define ParseAlloc geoJSONParseAlloc +#define ParseFree geoJSONParseFree +#define ParseStackPeak geoJSONParseStackPeak +#define Parse geoJSONParse +#define yyStackEntry geoJSON_yyStackEntry +#define yyzerominor geoJSON_yyzerominor +#define yy_accept geoJSON_yy_accept +#define yy_action geoJSON_yy_action +#define yy_base geoJSON_yy_base +#define yy_buffer_stack geoJSON_yy_buffer_stack +#define yy_buffer_stack_max geoJSON_yy_buffer_stack_max +#define yy_buffer_stack_top geoJSON_yy_buffer_stack_top +#define yy_c_buf_p geoJSON_yy_c_buf_p +#define yy_chk geoJSON_yy_chk +#define yy_def geoJSON_yy_def +#define yy_default geoJSON_yy_default +#define yy_destructor geoJSON_yy_destructor +#define yy_ec geoJSON_yy_ec +#define yy_fatal_error geoJSON_yy_fatal_error +#define yy_find_reduce_action geoJSON_yy_find_reduce_action +#define yy_find_shift_action geoJSON_yy_find_shift_action +#define yy_get_next_buffer geoJSON_yy_get_next_buffer +#define yy_get_previous_state geoJSON_yy_get_previous_state +#define yy_init geoJSON_yy_init +#define yy_init_globals geoJSON_yy_init_globals +#define yy_lookahead geoJSON_yy_lookahead +#define yy_meta geoJSON_yy_meta +#define yy_nxt geoJSON_yy_nxt +#define yy_parse_failed geoJSON_yy_parse_failed +#define yy_pop_parser_stack geoJSON_yy_pop_parser_stack +#define yy_reduce geoJSON_yy_reduce +#define yy_reduce_ofst geoJSON_yy_reduce_ofst +#define yy_shift geoJSON_yy_shift +#define yy_shift_ofst geoJSON_yy_shift_ofst +#define yy_start geoJSON_yy_start +#define yy_state_type geoJSON_yy_state_type +#define yy_syntax_error geoJSON_yy_syntax_error +#define yy_trans_info geoJSON_yy_trans_info +#define yy_try_NUL_trans geoJSON_yy_try_NUL_trans +#define yyParser geoJSON_yyParser +#define yyStackEntry geoJSON_yyStackEntry +#define yyStackOverflow geoJSON_yyStackOverflow +#define yyRuleInfo geoJSON_yyRuleInfo +#define yyunput geoJSON_yyunput +#define yyzerominor geoJSON_yyzerominor +#define yyTraceFILE geoJSON_yyTraceFILE +#define yyTracePrompt geoJSON_yyTracePrompt +#define yyTokenName geoJSON_yyTokenName +#define yyRuleName geoJSON_yyRuleName +#define ParseTrace geoJSON_ParseTrace + +#define yylex geoJSON_yylex +#define YY_DECL int yylex (yyscan_t yyscanner) + + +/* including LEMON generated header */ +#include "geoJSON.h" + + +typedef union +{ + double dval; + int ival; + struct symtab *symp; +} geoJSON_yystype; +#define YYSTYPE geoJSON_yystype + + +struct geoJson_dyn_block +{ +/* a struct taking trace of dynamic allocations */ + int type[GEOJSON_DYN_BLOCK]; + void *ptr[GEOJSON_DYN_BLOCK]; + int index; + struct geoJson_dyn_block *next; +}; + +struct geoJson_data +{ +/* a struct used to make the lexer-parser reentrant and thread-safe */ + int geoJson_parse_error; + int geoJson_line; + int geoJson_col; + struct geoJson_dyn_block *geoJson_first_dyn_block; + struct geoJson_dyn_block *geoJson_last_dyn_block; + gaiaGeomCollPtr result; + YYSTYPE GeoJsonLval; +}; + +static struct geoJson_dyn_block * +geoJsonCreateDynBlock (void) +{ +/* allocating a new block to trace dynamic allocations */ + int i; + struct geoJson_dyn_block *p = malloc (sizeof (struct geoJson_dyn_block)); + for (i = 0; i < GEOJSON_DYN_BLOCK; i++) + { + /* initializing map entries */ + p->type[i] = GEOJSON_DYN_NONE; + p->ptr[i] = NULL; + } + p->index = 0; + p->next = NULL; + return p; +} + +static void +geoJsonMapDynAlloc (struct geoJson_data *p_data, int type, void *ptr) +{ +/* appending a dynamic allocation into the map */ + struct geoJson_dyn_block *p; + if (p_data->geoJson_first_dyn_block == NULL) + { + /* inserting the first block of the map */ + p = geoJsonCreateDynBlock (); + p_data->geoJson_first_dyn_block = p; + p_data->geoJson_last_dyn_block = p; + } + if (p_data->geoJson_last_dyn_block->index >= GEOJSON_DYN_BLOCK) + { + /* adding a further block to the map */ + p = geoJsonCreateDynBlock (); + p_data->geoJson_last_dyn_block->next = p; + p_data->geoJson_last_dyn_block = p; + } + p_data->geoJson_last_dyn_block->type[p_data->geoJson_last_dyn_block-> + index] = type; + p_data->geoJson_last_dyn_block->ptr[p_data->geoJson_last_dyn_block->index] = + ptr; + p_data->geoJson_last_dyn_block->index++; +} + +static void +geoJsonMapDynClean (struct geoJson_data *p_data, void *ptr) +{ +/* deleting a dynamic allocation from the map */ + int i; + struct geoJson_dyn_block *p = p_data->geoJson_first_dyn_block; + while (p) + { + for (i = 0; i < GEOJSON_DYN_BLOCK; i++) + { + switch (p->type[i]) + { + case GEOJSON_DYN_POINT: + case GEOJSON_DYN_LINESTRING: + case GEOJSON_DYN_POLYGON: + case GEOJSON_DYN_RING: + case GEOJSON_DYN_GEOMETRY: + if (p->ptr[i] == ptr) + { + p->type[i] = GEOJSON_DYN_NONE; + return; + } + break; + }; + } + p = p->next; + } +} + +static void +geoJsonCleanMapDynAlloc (struct geoJson_data *p_data, int clean_all) +{ +/* cleaning the dynamic allocations map */ + int i; + struct geoJson_dyn_block *pn; + struct geoJson_dyn_block *p = p_data->geoJson_first_dyn_block; + while (p) + { + if (clean_all) + { + for (i = 0; i < GEOJSON_DYN_BLOCK; i++) + { + /* deleting Geometry objects */ + switch (p->type[i]) + { + case GEOJSON_DYN_POINT: + gaiaFreePoint ((gaiaPointPtr) (p->ptr[i])); + break; + case GEOJSON_DYN_LINESTRING: + gaiaFreeLinestring ((gaiaLinestringPtr) + (p->ptr[i])); + break; + case GEOJSON_DYN_POLYGON: + gaiaFreePolygon ((gaiaPolygonPtr) (p->ptr[i])); + break; + case GEOJSON_DYN_RING: + gaiaFreeRing ((gaiaRingPtr) (p->ptr[i])); + break; + case GEOJSON_DYN_GEOMETRY: + gaiaFreeGeomColl ((gaiaGeomCollPtr) (p->ptr[i])); + break; + }; + } + } + /* deleting the map block */ + pn = p->next; + free (p); + p = pn; + } +} + +static int +geoJsonCheckValidity (gaiaGeomCollPtr geom) +{ +/* checks if this one is a degenerated geometry */ + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + int ib; + int entities = 0; + pt = geom->FirstPoint; + while (pt) + { + /* checking points */ + entities++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + /* checking linestrings */ + if (ln->Points < 2) + return 0; + entities++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + /* checking polygons */ + rng = pg->Exterior; + if (rng->Points < 4) + return 0; + for (ib = 0; ib < pg->NumInteriors; ib++) + { + rng = pg->Interiors + ib; + if (rng->Points < 4) + return 0; + } + entities++; + pg = pg->Next; + } + if (!entities) + return 0; + return 1; +} + +static gaiaGeomCollPtr +geoJSON_setSrid (gaiaGeomCollPtr geom, int *srid) +{ +/* setting up the SRID */ + if (!geom) + return NULL; + geom->Srid = *srid; + return geom; +} + +static gaiaGeomCollPtr +gaiaGeoJsonGeometryFromPoint (struct geoJson_data *p_data, gaiaPointPtr point, + int srid) +{ +/* builds a GEOMETRY containing a POINT */ + gaiaGeomCollPtr geom = NULL; + geom = gaiaAllocGeomColl (); + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_POINT; + geom->Srid = srid; + gaiaAddPointToGeomColl (geom, point->X, point->Y); + geoJsonMapDynClean (p_data, point); + gaiaFreePoint (point); + return geom; +} + +static gaiaGeomCollPtr +gaiaGeoJsonGeometryFromPointZ (struct geoJson_data *p_data, gaiaPointPtr point, + int srid) +{ +/* builds a GEOMETRY containing a POINTZ */ + gaiaGeomCollPtr geom = NULL; + geom = gaiaAllocGeomCollXYZ (); + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_POINTZ; + geom->Srid = srid; + gaiaAddPointToGeomCollXYZ (geom, point->X, point->Y, point->Z); + geoJsonMapDynClean (p_data, point); + gaiaFreePoint (point); + return geom; +} + +static gaiaGeomCollPtr +gaiaGeoJsonGeometryFromLinestring (struct geoJson_data *p_data, + gaiaLinestringPtr line, int srid) +{ +/* builds a GEOMETRY containing a LINESTRING */ + gaiaGeomCollPtr geom = NULL; + gaiaLinestringPtr line2; + int iv; + double x; + double y; + geom = gaiaAllocGeomColl (); + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_LINESTRING; + geom->Srid = srid; + line2 = gaiaAddLinestringToGeomColl (geom, line->Points); + for (iv = 0; iv < line2->Points; iv++) + { + /* sets the POINTS for the exterior ring */ + gaiaGetPoint (line->Coords, iv, &x, &y); + gaiaSetPoint (line2->Coords, iv, x, y); + } + geoJsonMapDynClean (p_data, line); + gaiaFreeLinestring (line); + return geom; +} + +static gaiaGeomCollPtr +gaiaGeoJsonGeometryFromLinestringZ (struct geoJson_data *p_data, + gaiaLinestringPtr line, int srid) +{ +/* builds a GEOMETRY containing a LINESTRINGZ */ + gaiaGeomCollPtr geom = NULL; + gaiaLinestringPtr line2; + int iv; + double x; + double y; + double z; + geom = gaiaAllocGeomCollXYZ (); + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_LINESTRING; + geom->Srid = srid; + line2 = gaiaAddLinestringToGeomColl (geom, line->Points); + for (iv = 0; iv < line2->Points; iv++) + { + /* sets the POINTS for the exterior ring */ + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (line2->Coords, iv, x, y, z); + } + geoJsonMapDynClean (p_data, line); + gaiaFreeLinestring (line); + return geom; +} + +static gaiaPointPtr +geoJSON_point_xy (struct geoJson_data *p_data, double *x, double *y) +{ + gaiaPointPtr pt = gaiaAllocPoint (*x, *y); + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_POINT, pt); + return pt; +} + +/* + * Creates a 3D (xyz) point in SpatiaLite + * x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. + * Returns a gaiaPointPtr representing the created point. + * + * Creates a 3D (xyz) point. This is a parser helper function which is called when 3D coordinates are encountered. + * Parameters x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. + * Returns a gaiaPointPtr pointing to the 3D created point. + */ +static gaiaPointPtr +geoJSON_point_xyz (struct geoJson_data *p_data, double *x, double *y, double *z) +{ + gaiaPointPtr pt = gaiaAllocPointXYZ (*x, *y, *z); + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_POINT, pt); + return pt; +} + +/* + * Builds a geometry collection from a point. The geometry collection should contain only one element ? the point. + * The correct geometry type must be *decided based on the point type. The parser should call this function when the + * ?POINT? WKT expression is encountered. + * Parameter point is a pointer to a 2D, 3D, 2D with an m value, or 4D with an m value point. + * Returns a geometry collection containing the point. The geometry must have FirstPoint and LastPoint pointing to the + * same place as point. *DimensionModel must be the same as the model of the point and DimensionType must be GAIA_TYPE_POINT. + */ +static gaiaGeomCollPtr +geoJSON_buildGeomFromPoint (struct geoJson_data *p_data, gaiaPointPtr point) +{ + switch (point->DimensionModel) + { + case GAIA_XY: + return gaiaGeoJsonGeometryFromPoint (p_data, point, -1); + case GAIA_XY_Z: + return gaiaGeoJsonGeometryFromPointZ (p_data, point, -1); + } + return NULL; +} + +static gaiaGeomCollPtr +geoJSON_buildGeomFromPointSrid (struct geoJson_data *p_data, gaiaPointPtr point, + int *srid) +{ + switch (point->DimensionModel) + { + case GAIA_XY: + return gaiaGeoJsonGeometryFromPoint (p_data, point, *srid); + case GAIA_XY_Z: + return gaiaGeoJsonGeometryFromPointZ (p_data, point, *srid); + } + return NULL; +} + + +/* + * Creates a 2D (xy) linestring from a list of 2D points. + * + * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. + * All of the points in the list must be 2D (xy) points. There must be at least 2 points in the list. + * + * Returns a pointer to linestring containing all of the points in the list. + */ +static gaiaLinestringPtr +geoJSON_linestring_xy (struct geoJson_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + int points = 0; + int i = 0; + gaiaLinestringPtr linestring; + + while (p != NULL) + { + p = p->Next; + points++; + } + + linestring = gaiaAllocLinestring (points); + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_LINESTRING, linestring); + + p = first; + while (p != NULL) + { + gaiaSetPoint (linestring->Coords, i, p->X, p->Y); + p_n = p->Next; + geoJsonMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + i++; + } + + return linestring; +} + +/* + * Creates a 3D (xyz) linestring from a list of 3D points. + * + * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. + * All of the points in the list must be 3D (xyz) points. There must be at least 2 points in the list. + * + * Returns a pointer to linestring containing all of the points in the list. + */ +static gaiaLinestringPtr +geoJSON_linestring_xyz (struct geoJson_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + int points = 0; + int i = 0; + gaiaLinestringPtr linestring; + + while (p != NULL) + { + p = p->Next; + points++; + } + + linestring = gaiaAllocLinestringXYZ (points); + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_LINESTRING, linestring); + + p = first; + while (p != NULL) + { + gaiaSetPointXYZ (linestring->Coords, i, p->X, p->Y, p->Z); + p_n = p->Next; + geoJsonMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + i++; + } + + return linestring; +} + +/* + * Builds a geometry collection from a linestring. + */ +static gaiaGeomCollPtr +geoJSON_buildGeomFromLinestring (struct geoJson_data *p_data, + gaiaLinestringPtr line) +{ + switch (line->DimensionModel) + { + case GAIA_XY: + return gaiaGeoJsonGeometryFromLinestring (p_data, line, -1); + case GAIA_XY_Z: + return gaiaGeoJsonGeometryFromLinestringZ (p_data, line, -1); + } + return NULL; +} + +static gaiaGeomCollPtr +geoJSON_buildGeomFromLinestringSrid (struct geoJson_data *p_data, + gaiaLinestringPtr line, int *srid) +{ + switch (line->DimensionModel) + { + case GAIA_XY: + return gaiaGeoJsonGeometryFromLinestring (p_data, line, *srid); + case GAIA_XY_Z: + return gaiaGeoJsonGeometryFromLinestringZ (p_data, line, *srid); + } + return NULL; +} + +/* + * Helper function that determines the number of points in the linked list. + */ +static int +geoJSON_count_points (gaiaPointPtr first) +{ + /* Counts the number of points in the ring. */ + gaiaPointPtr p = first; + int numpoints = 0; + while (p != NULL) + { + numpoints++; + p = p->Next; + } + return numpoints; +} + +/* + * Creates a 2D (xy) ring in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. + * All of the points given to the function are 2D (xy) points. There will be at least 4 points in the list. + * + * Returns the ring defined by the points given to the function. + */ +static gaiaRingPtr +geoJSON_ring_xy (struct geoJson_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaRingPtr ring = NULL; + int numpoints; + int index; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Counts the number of points in the ring. */ + numpoints = geoJSON_count_points (first); + if (numpoints < 4) + return NULL; + + /* Creates and allocates a ring structure. */ + ring = gaiaAllocRing (numpoints); + if (ring == NULL) + return NULL; + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_RING, ring); + + /* Adds every point into the ring structure. */ + p = first; + for (index = 0; index < numpoints; index++) + { + gaiaSetPoint (ring->Coords, index, p->X, p->Y); + p_n = p->Next; + geoJsonMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + + return ring; +} + +/* + * Creates a 3D (xyz) ring in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. + * All of the points given to the function are 3D (xyz) points. There will be at least 4 points in the list. + * + * Returns the ring defined by the points given to the function. + */ +static gaiaRingPtr +geoJSON_ring_xyz (struct geoJson_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaRingPtr ring = NULL; + int numpoints; + int index; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Counts the number of points in the ring. */ + numpoints = geoJSON_count_points (first); + if (numpoints < 4) + return NULL; + + /* Creates and allocates a ring structure. */ + ring = gaiaAllocRingXYZ (numpoints); + if (ring == NULL) + return NULL; + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_RING, ring); + + /* Adds every point into the ring structure. */ + p = first; + for (index = 0; index < numpoints; index++) + { + gaiaSetPointXYZ (ring->Coords, index, p->X, p->Y, p->Z); + p_n = p->Next; + geoJsonMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + + return ring; +} + +/* + * Helper function that will create any type of polygon (xy, xyz) in SpatiaLite. + * + * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. + * The first ring in the linked list is the external ring while the rest (if any) are internal rings. + * All of the rings given to the function are of the same type. There will be at least 1 ring in the list. + * + * Returns the polygon defined by the rings given to the function. + */ +static gaiaPolygonPtr +geoJSON_polygon_any_type (struct geoJson_data *p_data, gaiaRingPtr first) +{ + gaiaRingPtr p; + gaiaRingPtr p_n; + gaiaPolygonPtr polygon; + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Creates and allocates a polygon structure with the exterior ring. */ + polygon = gaiaCreatePolygon (first); + if (polygon == NULL) + return NULL; + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_POLYGON, polygon); + + /* Adds all interior rings into the polygon structure. */ + p = first; + while (p != NULL) + { + p_n = p->Next; + geoJsonMapDynClean (p_data, p); + if (p == first) + gaiaFreeRing (p); + else + gaiaAddRingToPolyg (polygon, p); + p = p_n; + } + + return polygon; +} + +/* + * Creates a 2D (xy) polygon in SpatiaLite + * + * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. + * The first ring in the linked list is the external ring while the rest (if any) are internal rings. + * All of the rings given to the function are 2D (xy) rings. There will be at least 1 ring in the list. + * + * Returns the polygon defined by the rings given to the function. + */ +static gaiaPolygonPtr +geoJSON_polygon_xy (struct geoJson_data *p_data, gaiaRingPtr first) +{ + return geoJSON_polygon_any_type (p_data, first); +} + +/* + * Creates a 3D (xyz) polygon in SpatiaLite + * + * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. + * The first ring in the linked list is the external ring while the rest (if any) are internal rings. + * All of the rings given to the function are 3D (xyz) rings. There will be at least 1 ring in the list. + * + * Returns the polygon defined by the rings given to the function. + */ +static gaiaPolygonPtr +geoJSON_polygon_xyz (struct geoJson_data *p_data, gaiaRingPtr first) +{ + return geoJSON_polygon_any_type (p_data, first); +} + +/* + * Builds a geometry collection from a polygon. + * NOTE: This function may already be implemented in the SpatiaLite code base. If it is, make sure that we + * can use it (ie. it doesn't use any other variables or anything else set by Sandro's parser). If you find + * that we can use an existing function then ignore this one. + */ +static gaiaGeomCollPtr +geoJSON_buildGeomFromPolygon (struct geoJson_data *p_data, + gaiaPolygonPtr polygon) +{ + gaiaGeomCollPtr geom = NULL; + + /* If no pointers are given, return. */ + if (polygon == NULL) + { + return NULL; + } + + /* Creates and allocates a geometry collection containing a multipoint. */ + switch (polygon->DimensionModel) + { + case GAIA_XY: + geom = gaiaAllocGeomColl (); + break; + case GAIA_XY_Z: + geom = gaiaAllocGeomCollXYZ (); + break; + } + if (geom == NULL) + { + return NULL; + } + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_POLYGON; + + /* Stores the location of the first and last polygons in the linked list. */ + geom->FirstPolygon = polygon; + while (polygon != NULL) + { + geoJsonMapDynClean (p_data, polygon); + geom->LastPolygon = polygon; + polygon = polygon->Next; + } + return geom; +} + +static gaiaGeomCollPtr +geoJSON_buildGeomFromPolygonSrid (struct geoJson_data *p_data, + gaiaPolygonPtr polygon, int *srid) +{ + gaiaGeomCollPtr geom = NULL; + + /* If no pointers are given, return. */ + if (polygon == NULL) + { + return NULL; + } + + /* Creates and allocates a geometry collection containing a multipoint. */ + switch (polygon->DimensionModel) + { + case GAIA_XY: + geom = gaiaAllocGeomColl (); + break; + case GAIA_XY_Z: + geom = gaiaAllocGeomCollXYZ (); + break; + } + if (geom == NULL) + { + return NULL; + } + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_POLYGON; + geom->Srid = *srid; + + /* Stores the location of the first and last polygons in the linked list. */ + geom->FirstPolygon = polygon; + while (polygon != NULL) + { + geoJsonMapDynClean (p_data, polygon); + geom->LastPolygon = polygon; + polygon = polygon->Next; + } + return geom; +} + +/* + * Creates a 2D (xy) multipoint object in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points. + * All of the points given to the function are 2D (xy) points. There will be at least 1 point in the list. + * + * Returns a geometry collection containing the created multipoint object. + */ +static gaiaGeomCollPtr +geoJSON_multipoint_xy (struct geoJson_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaGeomCollPtr geom = NULL; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Creates and allocates a geometry collection containing a multipoint. */ + geom = gaiaAllocGeomColl (); + if (geom == NULL) + return NULL; + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_MULTIPOINT; + + /* For every 2D (xy) point, add it to the geometry collection. */ + while (p != NULL) + { + gaiaAddPointToGeomColl (geom, p->X, p->Y); + p_n = p->Next; + geoJsonMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + return geom; +} + +/* + * Creates a 3D (xyz) multipoint object in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points. + * All of the points given to the function are 3D (xyz) points. There will be at least 1 point in the list. + * + * Returns a geometry collection containing the created multipoint object. + */ +static gaiaGeomCollPtr +geoJSON_multipoint_xyz (struct geoJson_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaGeomCollPtr geom = NULL; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Creates and allocates a geometry collection containing a multipoint. */ + geom = gaiaAllocGeomCollXYZ (); + if (geom == NULL) + return NULL; + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_MULTIPOINT; + + /* For every 3D (xyz) point, add it to the geometry collection. */ + while (p != NULL) + { + gaiaAddPointToGeomCollXYZ (geom, p->X, p->Y, p->Z); + p_n = p->Next; + geoJsonMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + return geom; +} + +/* + * Creates a geometry collection containing 2D (xy) linestrings. + * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the + * collection. All of the *linestrings in the list must be 2D (xy) linestrings. There must be at least 1 linestring in the list. + * Returns a pointer to the created geometry collection of 2D linestrings. The geometry must have FirstLinestring pointing to the + * first linestring in the list pointed by first and LastLinestring pointing to the last element of the same list. DimensionModel + * must be GAIA_XY and DimensionType must be *GAIA_TYPE_LINESTRING. + */ + +static gaiaGeomCollPtr +geoJSON_multilinestring_xy (struct geoJson_data *p_data, + gaiaLinestringPtr first) +{ + gaiaLinestringPtr p = first; + gaiaLinestringPtr p_n; + gaiaLinestringPtr new_line; + gaiaGeomCollPtr a = gaiaAllocGeomColl (); + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, a); + a->DeclaredType = GAIA_MULTILINESTRING; + a->DimensionModel = GAIA_XY; + + while (p) + { + new_line = gaiaAddLinestringToGeomColl (a, p->Points); + gaiaCopyLinestringCoords (new_line, p); + p_n = p->Next; + geoJsonMapDynClean (p_data, p); + gaiaFreeLinestring (p); + p = p_n; + } + + return a; +} + +/* + * Returns a geometry collection containing the created multilinestring object (?). + * Creates a geometry collection containing 3D (xyz) linestrings. + * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the + * collection. All of the *linestrings in the list must be 3D (xyz) linestrings. There must be at least 1 linestring in the list. + * Returns a pointer to the created geometry collection of 3D linestrings. The geometry must have FirstLinestring pointing to the + * first linestring in the *list pointed by first and LastLinestring pointing to the last element of the same list. DimensionModel + * must be GAIA_XYZ and DimensionType must be *GAIA_TYPE_LINESTRING. + */ +static gaiaGeomCollPtr +geoJSON_multilinestring_xyz (struct geoJson_data *p_data, + gaiaLinestringPtr first) +{ + gaiaLinestringPtr p = first; + gaiaLinestringPtr p_n; + gaiaLinestringPtr new_line; + gaiaGeomCollPtr a = gaiaAllocGeomCollXYZ (); + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, a); + a->DeclaredType = GAIA_MULTILINESTRING; + a->DimensionModel = GAIA_XY_Z; + + while (p) + { + new_line = gaiaAddLinestringToGeomColl (a, p->Points); + gaiaCopyLinestringCoords (new_line, p); + p_n = p->Next; + geoJsonMapDynClean (p_data, p); + gaiaFreeLinestring (p); + p = p_n; + } + return a; +} + +/* + * Creates a geometry collection containing 2D (xy) polygons. + * + * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should + * be added to the collection. All of the polygons in the list must be 2D (xy) polygons. There must be + * at least 1 polygon in the list. + * + * Returns a pointer to the created geometry collection of 2D polygons. The geometry must have + * FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing + * to the last element of the same list. DimensionModel must be GAIA_XY and DimensionType must + * be GAIA_TYPE_POLYGON. + * + */ +static gaiaGeomCollPtr +geoJSON_multipolygon_xy (struct geoJson_data *p_data, gaiaPolygonPtr first) +{ + gaiaPolygonPtr p = first; + gaiaPolygonPtr p_n; + int i = 0; + gaiaPolygonPtr new_polyg; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + gaiaGeomCollPtr geom = gaiaAllocGeomColl (); + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); + + geom->DeclaredType = GAIA_MULTIPOLYGON; + + while (p) + { + i_ring = p->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); + o_ring = new_polyg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + + for (i = 0; i < new_polyg->NumInteriors; i++) + { + i_ring = p->Interiors + i; + o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + + p_n = p->Next; + geoJsonMapDynClean (p_data, p); + gaiaFreePolygon (p); + p = p_n; + } + + return geom; +} + +/* + * Creates a geometry collection containing 3D (xyz) polygons. + * + * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should be + * added to the collection. All of the polygons in the list must be 3D (xyz) polygons. There must be at + * least 1 polygon in the list. + * + * Returns a pointer to the created geometry collection of 3D polygons. The geometry must have + * FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing to + * the last element of the same list. DimensionModel must be GAIA_XYZ and DimensionType must + * be GAIA_TYPE_POLYGON. + * + */ +static gaiaGeomCollPtr +geoJSON_multipolygon_xyz (struct geoJson_data *p_data, gaiaPolygonPtr first) +{ + gaiaPolygonPtr p = first; + gaiaPolygonPtr p_n; + int i = 0; + gaiaPolygonPtr new_polyg; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + gaiaGeomCollPtr geom = gaiaAllocGeomCollXYZ (); + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); + + geom->DeclaredType = GAIA_MULTIPOLYGON; + + while (p) + { + i_ring = p->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); + o_ring = new_polyg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + + for (i = 0; i < new_polyg->NumInteriors; i++) + { + i_ring = p->Interiors + i; + o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + + p_n = p->Next; + geoJsonMapDynClean (p_data, p); + gaiaFreePolygon (p); + p = p_n; + } + + return geom; +} + +static void +geoJSON_geomColl_common (struct geoJson_data *p_data, gaiaGeomCollPtr org, + gaiaGeomCollPtr dst) +{ +/* +/ helper function: xfers entities between the Origin and Destination +/ Sandro Furieri: 2010 October 12 +*/ + gaiaGeomCollPtr p = org; + gaiaGeomCollPtr p_n; + gaiaPointPtr pt; + gaiaPointPtr pt_n; + gaiaLinestringPtr ln; + gaiaLinestringPtr ln_n; + gaiaPolygonPtr pg; + gaiaPolygonPtr pg_n; + while (p) + { + pt = p->FirstPoint; + while (pt) + { + pt_n = pt->Next; + pt->Next = NULL; + if (dst->FirstPoint == NULL) + dst->FirstPoint = pt; + if (dst->LastPoint != NULL) + dst->LastPoint->Next = pt; + dst->LastPoint = pt; + pt = pt_n; + } + ln = p->FirstLinestring; + while (ln) + { + ln_n = ln->Next; + ln->Next = NULL; + if (dst->FirstLinestring == NULL) + dst->FirstLinestring = ln; + if (dst->LastLinestring != NULL) + dst->LastLinestring->Next = ln; + dst->LastLinestring = ln; + ln = ln_n; + } + pg = p->FirstPolygon; + while (pg) + { + pg_n = pg->Next; + pg->Next = NULL; + if (dst->FirstPolygon == NULL) + dst->FirstPolygon = pg; + if (dst->LastPolygon != NULL) + dst->LastPolygon->Next = pg; + dst->LastPolygon = pg; + pg = pg_n; + } + p_n = p->Next; + p->FirstPoint = NULL; + p->LastPoint = NULL; + p->FirstLinestring = NULL; + p->LastLinestring = NULL; + p->FirstPolygon = NULL; + p->LastPolygon = NULL; + geoJsonMapDynClean (p_data, p); + gaiaFreeGeomColl (p); + p = p_n; + } +} + +/* Creates a 2D (xy) geometry collection in SpatiaLite + * + * first is the first geometry collection in a linked list of geometry collections. + * Each geometry collection represents a single type of object (eg. one could be a POINT, + * another could be a LINESTRING, another could be a MULTILINESTRING, etc.). + * + * The type of object represented by any geometry collection is stored in the declaredType + * field of its struct. For example, if first->declaredType = GAIA_POINT, then first represents a point. + * If first->declaredType = GAIA_MULTIPOINT, then first represents a multipoint. + * + * NOTE: geometry collections cannot contain other geometry collections (have to confirm this + * with Sandro). + * + * The goal of this function is to take the information from all of the structs in the linked list and + * return one geomColl struct containing all of that information. + * + * The integers used for 'declaredType' are defined in gaiageo.h. In this function, the only values + * contained in 'declaredType' that will be encountered will be: + * + * GAIA_POINT, GAIA_LINESTRING, GAIA_POLYGON, + * GAIA_MULTIPOINT, GAIA_MULTILINESTRING, GAIA_MULTIPOLYGON + */ +static gaiaGeomCollPtr +geoJSON_geomColl_xy (struct geoJson_data *p_data, gaiaGeomCollPtr first) +{ + gaiaGeomCollPtr geom = gaiaAllocGeomColl (); + if (geom == NULL) + return NULL; + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + geom->DimensionModel = GAIA_XY; + geoJSON_geomColl_common (p_data, first, geom); + return geom; +} + +/* + * See geomColl_xy for description. + * + * The only difference between this function and geomColl_xy is that the 'declaredType' field of the structs + * in the linked list for this function will only contain the following types: + * + * GAIA_POINTZ, GAIA_LINESTRINGZ, GAIA_POLYGONZ, + * GAIA_MULTIPOINTZ, GAIA_MULTILINESTRINGZ, GAIA_MULTIPOLYGONZ + */ +static gaiaGeomCollPtr +geoJSON_geomColl_xyz (struct geoJson_data *p_data, gaiaGeomCollPtr first) +{ + gaiaGeomCollPtr geom = gaiaAllocGeomColl (); + if (geom == NULL) + return NULL; + geoJsonMapDynAlloc (p_data, GEOJSON_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + geom->DimensionModel = GAIA_XY_Z; + geoJSON_geomColl_common (p_data, first, geom); + return geom; +} + + +/* including LEMON generated code */ +#include "geoJSON.c" + + + +/* +** CAVEAT: there is an incompatibility between LEMON and FLEX +** this macro resolves the issue +*/ +#undef yy_accept +#define yy_accept yy_geo_json_flex_accept + + + +/* including FLEX generated code */ +#include "lex.GeoJson.c" + + + +/* +** This is a linked-list struct to store all the values for each token. +** All tokens will have a value of 0, except tokens denoted as NUM. +** NUM tokens are geometry coordinates and will contain the floating +** point number. +*/ +typedef struct geoJsonFlexTokenStruct +{ + double value; + struct geoJsonFlexTokenStruct *Next; +} geoJsonFlexToken; + +/* +** Function to clean up the linked-list of token values. +*/ +static int +geoJSON_cleanup (geoJsonFlexToken * token) +{ + geoJsonFlexToken *ptok; + geoJsonFlexToken *ptok_n; + if (token == NULL) + return 0; + ptok = token; + while (ptok) + { + ptok_n = ptok->Next; + free (ptok); + ptok = ptok_n; + } + return 0; +} + +gaiaGeomCollPtr +gaiaParseGeoJSON (const unsigned char *dirty_buffer) +{ + void *pParser = ParseAlloc (malloc); + /* Linked-list of token values */ + geoJsonFlexToken *tokens = malloc (sizeof (geoJsonFlexToken)); + /* Pointer to the head of the list */ + geoJsonFlexToken *head = tokens; + int yv; + yyscan_t scanner; + struct geoJson_data str_data; + +/* initializing the helper structs */ + str_data.geoJson_line = 1; + str_data.geoJson_col = 1; + str_data.geoJson_parse_error = 0; + str_data.geoJson_first_dyn_block = NULL; + str_data.geoJson_last_dyn_block = NULL; + str_data.result = NULL; + +/* initializing the scanner state */ + GeoJsonlex_init_extra (&str_data, &scanner); + + tokens->Next = NULL; + + GeoJson_scan_string ((char *) dirty_buffer, scanner); + + /* + / Keep tokenizing until we reach the end + / yylex() will return the next matching Token for us. + */ + while ((yv = yylex (scanner)) != 0) + { + if (yv == -1) + { + str_data.geoJson_parse_error = 1; + break; + } + tokens->Next = malloc (sizeof (geoJsonFlexToken)); + tokens->Next->Next = NULL; + tokens->Next->value = str_data.GeoJsonLval.dval; + /* Pass the token to the wkt parser created from lemon */ + Parse (pParser, yv, &(tokens->Next->value), &str_data); + tokens = tokens->Next; + } + /* This denotes the end of a line as well as the end of the parser */ + Parse (pParser, GEOJSON_NEWLINE, 0, &str_data); + ParseFree (pParser, free); + GeoJsonlex_destroy (scanner); + + /* Assigning the token as the end to avoid seg faults while cleaning */ + tokens->Next = NULL; + geoJSON_cleanup (head); + + if (str_data.geoJson_parse_error) + { + if (str_data.result) + { + /* if a Geometry-result has been produced, the stack is already cleaned */ + gaiaFreeGeomColl (str_data.result); + geoJsonCleanMapDynAlloc (&str_data, 0); + } + else + { + /* otherwise we are required to clean the stack */ + geoJsonCleanMapDynAlloc (&str_data, 1); + } + return NULL; + } + + geoJsonCleanMapDynAlloc (&str_data, 0); + + if (str_data.result == NULL) + return NULL; + if (!geoJsonCheckValidity (str_data.result)) + { + gaiaFreeGeomColl (str_data.result); + return NULL; + } + + gaiaMbrGeometry (str_data.result); + + return str_data.result; +} + + +/* +** CAVEAT: we must now undefine any Lemon/Flex own macro +*/ +#undef YYNOCODE +#undef YYNSTATE +#undef YYNRULE +#undef YY_SHIFT_MAX +#undef YY_SHIFT_USE_DFLT +#undef YY_REDUCE_USE_DFLT +#undef YY_REDUCE_MAX +#undef YY_FLUSH_BUFFER +#undef YY_DO_BEFORE_ACTION +#undef YY_NUM_RULES +#undef YY_END_OF_BUFFER +#undef YY_END_FILE +#undef YYACTIONTYPE +#undef YY_SZ_ACTTAB +#undef YY_NEW_FILE +#undef BEGIN +#undef YY_START +#undef YY_CURRENT_BUFFER +#undef YY_CURRENT_BUFFER_LVALUE +#undef YY_STATE_BUF_SIZE +#undef YY_DECL +#undef YY_FATAL_ERROR +#undef YYMINORTYPE +#undef YY_CHAR +#undef YYSTYPE +#undef input +#undef ParseAlloc +#undef ParseFree +#undef ParseStackPeak +#undef Parse +#undef yyalloc +#undef yyfree +#undef yyin +#undef yyleng +#undef yyless +#undef yylex +#undef yylineno +#undef yyout +#undef yyrealloc +#undef yyrestart +#undef yyStackEntry +#undef yytext +#undef yywrap +#undef yyzerominor +#undef yy_accept +#undef yy_action +#undef yy_base +#undef yy_buffer_stack +#undef yy_buffer_stack_max +#undef yy_buffer_stack_top +#undef yy_c_buf_p +#undef yy_chk +#undef yy_create_buffer +#undef yy_def +#undef yy_default +#undef yy_delete_buffer +#undef yy_destructor +#undef yy_ec +#undef yy_fatal_error +#undef yy_find_reduce_action +#undef yy_find_shift_action +#undef yy_flex_debug +#undef yy_flush_buffer +#undef yy_get_next_buffer +#undef yy_get_previous_state +#undef yy_init +#undef yy_init_buffer +#undef yy_init_globals +#undef yy_load_buffer +#undef yy_load_buffer_state +#undef yy_lookahead +#undef yy_meta +#undef yy_new_buffer +#undef yy_nxt +#undef yy_parse_failed +#undef yy_pop_parser_stack +#undef yy_reduce +#undef yy_reduce_ofst +#undef yy_set_bol +#undef yy_set_interactive +#undef yy_shift +#undef yy_shift_ofst +#undef yy_start +#undef yy_state_type +#undef yy_switch_to_buffer +#undef yy_syntax_error +#undef yy_trans_info +#undef yy_try_NUL_trans +#undef yyParser +#undef yyStackEntry +#undef yyStackOverflow +#undef yyRuleInfo +#undef yytext_ptr +#undef yyunput +#undef yyzerominor +#undef ParseARG_SDECL +#undef ParseARG_PDECL +#undef ParseARG_FETCH +#undef ParseARG_STORE +#undef REJECT +#undef yymore +#undef YY_MORE_ADJ +#undef YY_RESTORE_YY_MORE_OFFSET +#undef YY_LESS_LINENO +#undef yyTracePrompt +#undef yyTraceFILE +#undef yyTokenName +#undef yyRuleName +#undef ParseTrace + +#undef yylex +#undef YY_DECL diff --git a/src/spatialite/src/gaiageo/gg_geodesic.c b/src/spatialite/src/gaiageo/gg_geodesic.c new file mode 100644 index 0000000..4065639 --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_geodesic.c @@ -0,0 +1,405 @@ +/* + + gg_geodesic.c -- Gaia functions for geodesic calculations + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include + +#include + +#define DEG2RAD 0.0174532925199432958 +#define PI 3.14159265358979323846 + +struct ellipses +{ + char *name; + double a; /* equatorial radius - meters */ + double rf; /* reverse flattening */ + double b; /* polar radius - meters */ +}; + +#if defined(_WIN32) && !defined(__MINGW32__) +#define isnan _isnan +#endif /* not WIN32-MSVC */ + +GAIAGEO_DECLARE int +gaiaEllipseParams (const char *name, double *a, double *b, double *rf) +{ +/* trying to find ellipse params */ + struct ellipses ellps_list[] = { + {"MERIT", 6378137.0, 298.257, -1.0}, + {"SGS85", 6378136.0, 298.257, -1.0}, + {"GRS80", 6378137.0, 298.257222101, -1.0}, + {"IAU76", 6378140.0, 298.257, -1.0}, + {"airy", 6377563.396, -1.0, 6356256.910}, + {"APL4.9", 6378137.0, 298.25, -1.0}, + {"NWL9D", 6378145.0, 298.25, -1.0}, + {"mod_airy", 6377340.189, -1.0, 6356034.446}, + {"andrae", 6377104.43, 300.0, -1.0}, + {"aust_SA", 378160.0, 298.25, -1.0}, + {"GRS67", 6378160.0, 298.2471674270, -1.0}, + {"bessel", 6377397.155, 299.1528128, -1.0}, + {"bess_nam", 6377483.865, 299.1528128, -1.0}, + {"clrk66", 6378206.4, -1.0, 6356583.8}, + {"clrk80", 6378249.145, 293.4663, -1.0}, + {"CPM", 6375738.7, 334.29, -1.0}, + {"delmbr", 6376428.0, 311.5, -1.0}, + {"engelis", 6378136.05, 298.2566, -1.0}, + {"evrst30", 6377276.345, 300.8017, -1.0}, + {"evrst48", 6377304.063, 300.8017, -1.0}, + {"evrst56", 6377301.243, 300.8017, -1.0}, + {"evrst69", 6377295.664, 300.8017, -1.0}, + {"evrstSS", 6377298.556, 300.8017, -1.0}, + {"fschr60", 6378166.0, 298.3, -1.0}, + {"fschr60m", 6378155.0, 298.3, -1.0}, + {"fschr68", 6378150.0, 298.3, -1.0}, + {"helmert", 6378200.0, 298.3, -1.0}, + {"hough", 6378270.0, 297.0, -1.0}, + {"intl", 6378388.0, 297.0, -1.0}, + {"krass", 6378245.0, 298.3, -1.0}, + {"kaula", 6378163.0, 298.24, -1.0}, + {"lerch", 6378139.0, 298.257, -1.0}, + {"mprts", 6397300.0, 191.0, -1.0}, + {"new_intl", 6378157.5, -1.0, 6356772.2}, + {"plessis", 6376523.0, -1.0, 6355863.0}, + {"SEasia", 6378155.0, -1.0, 6356773.3205}, + {"walbeck", 6376896.0, -1.0, 6355834.8467}, + {"WGS60", 6378165.0, 298.3, -1.0}, + {"WGS66", 6378145.0, 298.25, -1.0}, + {"WGS72", 6378135.0, 298.26, -1.0}, + {"WGS84", 6378137.0, 298.257223563, -1.0}, + {"sphere", 6370997.0, -1.0, 6370997.0}, + {NULL, -1.0, -1.0, -1.0} + }; + struct ellipses *pe = ellps_list; + while (1) + { + if (pe->name == NULL) + break; + if (strcmp (pe->name, name) == 0) + { + *a = pe->a; + if (pe->rf < 0.0) + { + *b = pe->b; + *rf = 1.0 / ((pe->a - pe->b) / pe->a); + } + else + { + *b = (pe->a * (1.0 - (1.0 / pe->rf))); + *rf = pe->rf; + } + return 1; + } + pe++; + } + return 0; +} + +GAIAGEO_DECLARE double +gaiaGreatCircleDistance (double a, double b, double lat1, double lon1, + double lat2, double lon2) +{ +/* +/ Calculate great-circle distance (in m) between two points specified by +/ latitude/longitude (in decimal degrees) using Aviation Formulary +/ +/ http://williams.best.vwh.net/avform.htm#Dist +/ +*/ + double latrad1 = lat1 * DEG2RAD; + double lonrad1 = lon1 * DEG2RAD; + double latrad2 = lat2 * DEG2RAD; + double lonrad2 = lon2 * DEG2RAD; + double avg_radius; + double k1 = (sin ((latrad1 - latrad2) / 2.0)); + double k2 = (sin ((lonrad1 - lonrad2) / 2.0)); + double dist; + dist = + 2.0 * asin (sqrt (k1 * k1 + cos (latrad1) * cos (latrad2) * k2 * k2)); + if (dist < 0.0) + dist = dist + PI; + if (a == b) + avg_radius = a; + else + avg_radius = (2.0 * a + b) / 3.0; + dist = dist * avg_radius; + return dist; +} + +GAIAGEO_DECLARE double +gaiaGeodesicDistance (double a, double b, double rf, double lat1, double lon1, + double lat2, double lon2) +{ +/* +/ Calculate geodesic distance (in m) +/ between two points specified by latitude/longitude +/ (in decimal degrees) using Vincenty inverse formula for ellipsoids +/ +/ based on original JavaScript by (c) Chris Veness 2002-2008 +/ http://www.movable-type.co.uk/scripts/latlong-vincenty.html +/ +*/ + double f = 1.0 / rf; + double L = (lon2 - lon1) * DEG2RAD; + double U1 = atan ((1.0 - f) * tan (lat1 * DEG2RAD)); + double U2 = atan ((1.0 - f) * tan (lat2 * DEG2RAD)); + double sinU1 = sin (U1); + double cosU1 = cos (U1); + double sinU2 = sin (U2); + double cosU2 = cos (U2); + double lambda = L; + double lambdaP; + double sinLambda; + double cosLambda; + double sinSigma; + double cosSigma; + double sigma; + double sinAlpha; + double cosSqAlpha; + double cos2SigmaM; + double C; + double uSq; + double A; + double B; + double deltaSigma; + double s; + int iterLimit = 100; + do + { + sinLambda = sin (lambda); + cosLambda = cos (lambda); + sinSigma = + sqrt ((cosU2 * sinLambda) * (cosU2 * sinLambda) + + (cosU1 * sinU2 - + sinU1 * cosU2 * cosLambda) * (cosU1 * sinU2 - + sinU1 * cosU2 * cosLambda)); + if (sinSigma == 0.0) + return 0.0; /* co-incident points */ + cosSigma = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda; + sigma = atan2 (sinSigma, cosSigma); + sinAlpha = cosU1 * cosU2 * sinLambda / sinSigma; + cosSqAlpha = 1.0 - sinAlpha * sinAlpha; + cos2SigmaM = cosSigma - 2.0 * sinU1 * sinU2 / cosSqAlpha; + if (isnan (cos2SigmaM)) + cos2SigmaM = 0; /* equatorial line */ + C = f / 16.0 * cosSqAlpha * (4.0 + f * (4.0 - 3.0 * cosSqAlpha)); + lambdaP = lambda; + lambda = + L + (1.0 - C) * f * sinAlpha * (sigma + + C * sinSigma * (cos2SigmaM + + C * cosSigma * + (-1.0 + + 2.0 * + cos2SigmaM * + cos2SigmaM))); + } + while (fabs (lambda - lambdaP) > 1e-12 && --iterLimit > 0); + if (iterLimit == 0) + return -1.0; /* formula failed to converge */ + uSq = cosSqAlpha * (a * a - b * b) / (b * b); + A = 1.0 + uSq / 16384.0 * (4096.0 + + uSq * (-768.0 + uSq * (320.0 - 175.0 * uSq))); + B = uSq / 1024.0 * (256.0 + uSq * (-128.0 + uSq * (74.0 - 47.0 * uSq))); + deltaSigma = + B * sinSigma * (cos2SigmaM + + B / 4.0 * (cosSigma * + (-1.0 + 2.0 * cos2SigmaM * cos2SigmaM) - + B / 6.0 * cos2SigmaM * (-3.0 + + 4.0 * sinSigma * + sinSigma) * (-3.0 + + 4.0 * + cos2SigmaM + * + cos2SigmaM))); + s = b * A * (sigma - deltaSigma); + return s; +} + +GAIAGEO_DECLARE void +gaiaFree (void *ptr) +{ +/* freeing a generic memory allocation */ + if (!ptr) + return; + free (ptr); +} + +GAIAGEO_DECLARE double +gaiaGreatCircleTotalLength (double a, double b, int dims, double *coords, + int vert) +{ +/* computing the GreatCircle total length for some Linestring/Ring */ + int iv; + double x1 = 0.0; + double y1 = 0.0; + double x2; + double y2; + double z; + double m; + double len = 0.0; + for (iv = 0; iv < vert; iv++) + { + if (dims == GAIA_XY_Z) + { + gaiaGetPointXYZ (coords, iv, &x2, &y2, &z); + } + else if (dims == GAIA_XY_M) + { + gaiaGetPointXYM (coords, iv, &x2, &y2, &m); + } + else if (dims == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (coords, iv, &x2, &y2, &z, &m); + } + else + { + gaiaGetPoint (coords, iv, &x2, &y2); + } + if (iv > 0) + len += gaiaGreatCircleDistance (a, b, y1, x1, y2, x2); + x1 = x2; + y1 = y2; + } + return len; +} + +GAIAGEO_DECLARE double +gaiaGeodesicTotalLength (double a, double b, double rf, int dims, + double *coords, int vert) +{ +/* computing the Geodesic total length for some Linestring/Ring */ + int iv; + double x1 = 0.0; + double y1 = 0.0; + double x2; + double y2; + double z; + double m; + double l; + double len = 0.0; + for (iv = 0; iv < vert; iv++) + { + if (dims == GAIA_XY_Z) + { + gaiaGetPointXYZ (coords, iv, &x2, &y2, &z); + } + else if (dims == GAIA_XY_M) + { + gaiaGetPointXYM (coords, iv, &x2, &y2, &m); + } + else if (dims == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (coords, iv, &x2, &y2, &z, &m); + } + else + { + gaiaGetPoint (coords, iv, &x2, &y2); + } + if (iv > 0) + { + l = gaiaGeodesicDistance (a, b, rf, y1, x1, y2, x2); + if (l < 0.0) + return -1.0; + len += l; + } + x1 = x2; + y1 = y2; + } + return len; +} + +GAIAGEO_DECLARE int +gaiaConvertLength (double value, int unit_from, int unit_to, double *cvt) +{ +/* converting length from one unit to another */ + double m; + double factors[] = { + 1000.0, 1.0, 0.1, 0.01, 0.001, 1852.0, 0.0254, 0.3048, 0.9144, + 1609.344, 1.8288, 20.1168, 0.201168, 1.0, 0.304800609601219, + 0.914401828803658, 20.11684023368047, 1609.347218694437, 0.91439523, + 0.30479841, 20.11669506 + }; + factors[GAIA_US_IN] /= 39.37; + if (unit_from < GAIA_MIN_UNIT || unit_from > GAIA_MAX_UNIT) + return 0; + if (unit_to < GAIA_MIN_UNIT || unit_to > GAIA_MAX_UNIT) + return 0; + if (unit_from == unit_to) + { + /* same unit */ + *cvt = value; + } + else if (unit_from == GAIA_M) + { + /* from Meters to .. */ + *cvt = value / factors[unit_to]; + } + else if (unit_to == GAIA_M) + { + /* from .. to Meters */ + *cvt = value * factors[unit_from]; + } + else + { + m = value * factors[unit_from]; + *cvt = m / factors[unit_to]; + } + return 1; +} + +#undef DEG2RAD +#undef PI diff --git a/src/spatialite/src/gaiageo/gg_geometries.c b/src/spatialite/src/gaiageo/gg_geometries.c new file mode 100644 index 0000000..b95b3b1 --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_geometries.c @@ -0,0 +1,4732 @@ +/* + + gg_geometries.c -- Gaia geometric objects + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include + +#include + +GAIAGEO_DECLARE gaiaPointPtr +gaiaAllocPoint (double x, double y) +{ +/* POINT object constructor */ + gaiaPointPtr p = malloc (sizeof (gaiaPoint)); + p->X = x; + p->Y = y; + p->Z = 0.0; + p->M = 0.0; + p->DimensionModel = GAIA_XY; + p->Next = NULL; + p->Prev = NULL; + return p; +} + +GAIAGEO_DECLARE gaiaPointPtr +gaiaAllocPointXYZ (double x, double y, double z) +{ +/* POINT object constructor */ + gaiaPointPtr p = malloc (sizeof (gaiaPoint)); + p->X = x; + p->Y = y; + p->Z = z; + p->M = 0.0; + p->DimensionModel = GAIA_XY_Z; + p->Next = NULL; + p->Prev = NULL; + return p; +} + +GAIAGEO_DECLARE gaiaPointPtr +gaiaAllocPointXYM (double x, double y, double m) +{ +/* POINT object constructor */ + gaiaPointPtr p = malloc (sizeof (gaiaPoint)); + p->X = x; + p->Y = y; + p->Z = 0.0; + p->M = m; + p->DimensionModel = GAIA_XY_M; + p->Next = NULL; + p->Prev = NULL; + return p; +} + +GAIAGEO_DECLARE gaiaPointPtr +gaiaAllocPointXYZM (double x, double y, double z, double m) +{ +/* POINT object constructor */ + gaiaPointPtr p = malloc (sizeof (gaiaPoint)); + p->X = x; + p->Y = y; + p->Z = z; + p->M = m; + p->DimensionModel = GAIA_XY_Z_M; + p->Next = NULL; + p->Prev = NULL; + return p; +} + +GAIAGEO_DECLARE void +gaiaFreePoint (gaiaPointPtr ptr) +{ +/* POINT object destructor */ + if (ptr != NULL) + free (ptr); +} + +GAIAGEO_DECLARE gaiaLinestringPtr +gaiaAllocLinestring (int vert) +{ +/* LINESTRING object constructor */ + gaiaLinestringPtr p = malloc (sizeof (gaiaLinestring)); + p->Coords = malloc (sizeof (double) * (vert * 2)); + p->Points = vert; + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY; + p->Next = NULL; + return p; +} + +GAIAGEO_DECLARE gaiaLinestringPtr +gaiaAllocLinestringXYZ (int vert) +{ +/* LINESTRING object constructor */ + gaiaLinestringPtr p = malloc (sizeof (gaiaLinestring)); + p->Coords = malloc (sizeof (double) * (vert * 3)); + p->Points = vert; + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY_Z; + p->Next = NULL; + return p; +} + +GAIAGEO_DECLARE gaiaLinestringPtr +gaiaAllocLinestringXYM (int vert) +{ +/* LINESTRING object constructor */ + gaiaLinestringPtr p = malloc (sizeof (gaiaLinestring)); + p->Coords = malloc (sizeof (double) * (vert * 3)); + p->Points = vert; + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY_M; + p->Next = NULL; + return p; +} + +GAIAGEO_DECLARE gaiaLinestringPtr +gaiaAllocLinestringXYZM (int vert) +{ +/* LINESTRING object constructor */ + gaiaLinestringPtr p = malloc (sizeof (gaiaLinestring)); + p->Coords = malloc (sizeof (double) * (vert * 4)); + p->Points = vert; + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY_Z_M; + p->Next = NULL; + return p; +} + +GAIAGEO_DECLARE void +gaiaFreeLinestring (gaiaLinestringPtr ptr) +{ +/* LINESTRING object desctructror */ + if (ptr) + { + if (ptr->Coords) + free (ptr->Coords); + free (ptr); + } +} + +GAIAGEO_DECLARE int +gaiaLineGetPoint (gaiaLinestringPtr ln, int v, double *x, double *y, double *z, + double *m) +{ +/* SAFE - getting coords for a vertex in LINESTRING */ + double vx; + double vy; + double vz; + double vm; + *x = 0.0; + *y = 0.0; + *z = 0.0; + *m = 0.0; + if (!ln) + return 0; + if (v < 0 || v >= ln->Points) + return 0; + switch (ln->DimensionModel) + { + case GAIA_XY: + gaiaGetPoint (ln->Coords, v, &vx, &vy); + *x = vx; + *y = vy; + break; + case GAIA_XY_Z: + gaiaGetPointXYZ (ln->Coords, v, &vx, &vy, &vz); + *x = vx; + *y = vy; + *z = vz; + break; + case GAIA_XY_M: + gaiaGetPointXYM (ln->Coords, v, &vx, &vy, &vm); + *x = vx; + *y = vy; + *m = vm; + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (ln->Coords, v, &vx, &vy, &vz, &vm); + *x = vx; + *y = vy; + *z = vz; + *m = vm; + break; + default: + return 0; + }; + return 1; +} + +GAIAGEO_DECLARE int +gaiaLineSetPoint (gaiaLinestringPtr ln, int v, double x, double y, double z, + double m) +{ +/* SAFE - setting coords for a vertex in RING */ + if (!ln) + return 0; + if (v < 0 || v >= ln->Points) + return 0; + switch (ln->DimensionModel) + { + case GAIA_XY: + gaiaSetPoint (ln->Coords, v, x, y); + break; + case GAIA_XY_Z: + gaiaSetPointXYZ (ln->Coords, v, x, y, z); + break; + case GAIA_XY_M: + gaiaSetPointXYM (ln->Coords, v, x, y, m); + break; + case GAIA_XY_Z_M: + gaiaSetPointXYZM (ln->Coords, v, x, y, z, m); + break; + default: + return 0; + }; + return 1; +} + +GAIAGEO_DECLARE void +gaiaCopyLinestringCoords (gaiaLinestringPtr dst, gaiaLinestringPtr src) +{ +/* +/ copying coords from one Linestring to another +/ maybe, converting from one Dimension Model to a different one +*/ + int iv; + double x; + double y; + double z; + double m; + if (!src) + return; + if (!dst) + return; + if (src->Points != dst->Points) + return; + for (iv = 0; iv < dst->Points; iv++) + { + z = 0.0; + m = 0.0; + if (src->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (src->Coords, iv, &x, &y, &z); + } + else if (src->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (src->Coords, iv, &x, &y, &m); + } + else if (src->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (src->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (src->Coords, iv, &x, &y); + } + if (dst->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (dst->Coords, iv, x, y, z); + } + else if (dst->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (dst->Coords, iv, x, y, m); + } + else if (dst->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (dst->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (dst->Coords, iv, x, y); + } + } +} + +GAIAGEO_DECLARE gaiaLinestringPtr +gaiaCloneLinestring (gaiaLinestringPtr line) +{ +/* clones a LINESTRING */ + gaiaLinestringPtr new_line; + if (!line) + return NULL; + if (line->DimensionModel == GAIA_XY_Z) + new_line = gaiaAllocLinestringXYZ (line->Points); + else if (line->DimensionModel == GAIA_XY_M) + new_line = gaiaAllocLinestringXYM (line->Points); + else if (line->DimensionModel == GAIA_XY_Z_M) + new_line = gaiaAllocLinestringXYZM (line->Points); + else + new_line = gaiaAllocLinestring (line->Points); + gaiaCopyLinestringCoords (new_line, line); + return new_line; +} + +GAIAGEO_DECLARE void +gaiaCopyLinestringCoordsReverse (gaiaLinestringPtr dst, gaiaLinestringPtr src) +{ +/* +/ copying coords from one Linestring to another in reverse order +/ maybe, converting from one Dimension Model to a different one +*/ + int iv; + int iv2 = 0; + double x; + double y; + double z; + double m; + if (!src) + return; + if (!dst) + return; + if (src->Points != dst->Points) + return; + for (iv = src->Points - 1; iv >= 0; iv--) + { + z = 0.0; + m = 0.0; + if (src->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (src->Coords, iv, &x, &y, &z); + } + else if (src->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (src->Coords, iv, &x, &y, &m); + } + else if (src->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (src->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (src->Coords, iv, &x, &y); + } + if (dst->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (dst->Coords, iv2, x, y, z); + } + else if (dst->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (dst->Coords, iv2, x, y, m); + } + else if (dst->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (dst->Coords, iv2, x, y, z, m); + } + else + { + gaiaSetPoint (dst->Coords, iv2, x, y); + } + iv2++; + } +} + +GAIAGEO_DECLARE gaiaLinestringPtr +gaiaCloneLinestringSpecial (gaiaLinestringPtr line, int mode) +{ +/* clones a LINESTRING (special) */ + gaiaLinestringPtr new_line; + if (!line) + return NULL; + if (mode != GAIA_REVERSE_ORDER) + return gaiaCloneLinestring (line); + + if (line->DimensionModel == GAIA_XY_Z) + new_line = gaiaAllocLinestringXYZ (line->Points); + else if (line->DimensionModel == GAIA_XY_M) + new_line = gaiaAllocLinestringXYM (line->Points); + else if (line->DimensionModel == GAIA_XY_Z_M) + new_line = gaiaAllocLinestringXYZM (line->Points); + else + new_line = gaiaAllocLinestring (line->Points); + gaiaCopyLinestringCoordsReverse (new_line, line); + return new_line; +} + +GAIAGEO_DECLARE gaiaRingPtr +gaiaAllocRing (int vert) +{ +/* ring object constructor */ + gaiaRingPtr p = malloc (sizeof (gaiaRing)); + p->Coords = malloc (sizeof (double) * (vert * 2)); + p->Points = vert; + p->Link = NULL; + p->Clockwise = 0; + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY; + p->Next = NULL; + return p; +} + +GAIAGEO_DECLARE gaiaRingPtr +gaiaAllocRingXYZ (int vert) +{ +/* ring object constructor */ + gaiaRingPtr p = malloc (sizeof (gaiaRing)); + p->Coords = malloc (sizeof (double) * (vert * 3)); + p->Points = vert; + p->Link = NULL; + p->Clockwise = 0; + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY_Z; + p->Next = NULL; + return p; +} + +GAIAGEO_DECLARE gaiaRingPtr +gaiaAllocRingXYM (int vert) +{ +/* ring object constructor */ + gaiaRingPtr p = malloc (sizeof (gaiaRing)); + p->Coords = malloc (sizeof (double) * (vert * 3)); + p->Points = vert; + p->Link = NULL; + p->Clockwise = 0; + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY_M; + p->Next = NULL; + return p; +} + +GAIAGEO_DECLARE gaiaRingPtr +gaiaAllocRingXYZM (int vert) +{ +/* ring object constructor */ + gaiaRingPtr p = malloc (sizeof (gaiaRing)); + p->Coords = malloc (sizeof (double) * (vert * 4)); + p->Points = vert; + p->Link = NULL; + p->Clockwise = 0; + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY_Z_M; + p->Next = NULL; + return p; +} + +GAIAGEO_DECLARE void +gaiaFreeRing (gaiaRingPtr ptr) +{ +/* ring object destructor */ + if (ptr) + { + if (ptr->Coords) + free (ptr->Coords); + free (ptr); + } +} + +GAIAGEO_DECLARE int +gaiaRingGetPoint (gaiaRingPtr rng, int v, double *x, double *y, double *z, + double *m) +{ +/* SAFE - getting coords for a vertex in RING */ + double vx; + double vy; + double vz; + double vm; + *x = 0.0; + *y = 0.0; + *z = 0.0; + *m = 0.0; + if (!rng) + return 0; + if (v < 0 || v >= rng->Points) + return 0; + switch (rng->DimensionModel) + { + case GAIA_XY: + gaiaGetPoint (rng->Coords, v, &vx, &vy); + *x = vx; + *y = vy; + break; + case GAIA_XY_Z: + gaiaGetPointXYZ (rng->Coords, v, &vx, &vy, &vz); + *x = vx; + *y = vy; + *z = vz; + break; + case GAIA_XY_M: + gaiaGetPointXYM (rng->Coords, v, &vx, &vy, &vm); + *x = vx; + *y = vy; + *m = vm; + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (rng->Coords, v, &vx, &vy, &vz, &vm); + *x = vx; + *y = vy; + *z = vz; + *m = vm; + break; + default: + return 0; + }; + return 1; +} + +GAIAGEO_DECLARE int +gaiaRingSetPoint (gaiaRingPtr rng, int v, double x, double y, double z, + double m) +{ +/* SAFE - getting coords for a vertex in RING */ + if (!rng) + return 0; + if (v < 0 || v >= rng->Points) + return 0; + switch (rng->DimensionModel) + { + case GAIA_XY: + gaiaSetPoint (rng->Coords, v, x, y); + break; + case GAIA_XY_Z: + gaiaSetPointXYZ (rng->Coords, v, x, y, z); + break; + case GAIA_XY_M: + gaiaSetPointXYM (rng->Coords, v, x, y, m); + break; + case GAIA_XY_Z_M: + gaiaSetPointXYZM (rng->Coords, v, x, y, z, m); + break; + default: + return 0; + }; + return 1; +} + +GAIAGEO_DECLARE void +gaiaCopyRingCoords (gaiaRingPtr dst, gaiaRingPtr src) +{ +/* +/ copying coords from one Ring to another +/ maybe, converting from one Dimension Model to a different one +*/ + int iv; + double x; + double y; + double z; + double m; + if (!src) + return; + if (!dst) + return; + if (src->Points != dst->Points) + return; + for (iv = 0; iv < dst->Points; iv++) + { + z = 0.0; + m = 0.0; + if (src->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (src->Coords, iv, &x, &y, &z); + } + else if (src->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (src->Coords, iv, &x, &y, &m); + } + else if (src->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (src->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (src->Coords, iv, &x, &y); + } + if (dst->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (dst->Coords, iv, x, y, z); + } + else if (dst->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (dst->Coords, iv, x, y, m); + } + else if (dst->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (dst->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (dst->Coords, iv, x, y); + } + } +} + +GAIAGEO_DECLARE gaiaRingPtr +gaiaCloneRing (gaiaRingPtr ring) +{ +/* clones a RING */ + gaiaRingPtr new_ring; + if (!ring) + return NULL; + if (ring->DimensionModel == GAIA_XY_Z) + new_ring = gaiaAllocRingXYZ (ring->Points); + else if (ring->DimensionModel == GAIA_XY_M) + new_ring = gaiaAllocRingXYM (ring->Points); + else if (ring->DimensionModel == GAIA_XY_Z_M) + new_ring = gaiaAllocRingXYZM (ring->Points); + else + new_ring = gaiaAllocRing (ring->Points); + gaiaCopyRingCoords (new_ring, ring); + return new_ring; +} + +GAIAGEO_DECLARE void +gaiaCopyRingCoordsReverse (gaiaRingPtr dst, gaiaRingPtr src) +{ +/* +/ copying coords from one Ring to another in reverse order +/ maybe, converting from one Dimension Model to a different one +*/ + int iv; + int iv2 = 0; + double x; + double y; + double z; + double m; + if (!src) + return; + if (!dst) + return; + if (src->Points != dst->Points) + return; + for (iv = src->Points - 1; iv >= 0; iv--) + { + z = 0.0; + m = 0.0; + if (src->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (src->Coords, iv, &x, &y, &z); + } + else if (src->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (src->Coords, iv, &x, &y, &m); + } + else if (src->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (src->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (src->Coords, iv, &x, &y); + } + if (dst->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (dst->Coords, iv2, x, y, z); + } + else if (dst->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (dst->Coords, iv2, x, y, m); + } + else if (dst->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (dst->Coords, iv2, x, y, z, m); + } + else + { + gaiaSetPoint (dst->Coords, iv2, x, y); + } + iv2++; + } +} + +GAIAGEO_DECLARE gaiaRingPtr +gaiaCloneRingSpecial (gaiaRingPtr ring, int mode) +{ +/* clones a RING (special) */ + gaiaRingPtr new_ring; + if (!ring) + return NULL; + if (mode != GAIA_REVERSE_ORDER) + return gaiaCloneRing (ring); + + if (ring->DimensionModel == GAIA_XY_Z) + new_ring = gaiaAllocRingXYZ (ring->Points); + else if (ring->DimensionModel == GAIA_XY_M) + new_ring = gaiaAllocRingXYM (ring->Points); + else if (ring->DimensionModel == GAIA_XY_Z_M) + new_ring = gaiaAllocRingXYZM (ring->Points); + else + new_ring = gaiaAllocRing (ring->Points); + gaiaCopyRingCoordsReverse (new_ring, ring); + return new_ring; +} + +GAIAGEO_DECLARE gaiaPolygonPtr +gaiaClonePolygon (gaiaPolygonPtr polyg) +{ +/* clones a POLYGON */ + int ib; + gaiaPolygonPtr new_polyg; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + if (!polyg) + return NULL; + i_ring = polyg->Exterior; + if (polyg->DimensionModel == GAIA_XY_Z) + new_polyg = gaiaAllocPolygonXYZ (i_ring->Points, polyg->NumInteriors); + else if (polyg->DimensionModel == GAIA_XY_M) + new_polyg = gaiaAllocPolygonXYM (i_ring->Points, polyg->NumInteriors); + else if (polyg->DimensionModel == GAIA_XY_Z_M) + new_polyg = gaiaAllocPolygonXYZM (i_ring->Points, polyg->NumInteriors); + else + new_polyg = gaiaAllocPolygon (i_ring->Points, polyg->NumInteriors); + o_ring = new_polyg->Exterior; +/* copying points for the EXTERIOR RING */ + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < new_polyg->NumInteriors; ib++) + { + /* copying each INTERIOR RING [if any] */ + i_ring = polyg->Interiors + ib; + o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + return new_polyg; +} + +GAIAGEO_DECLARE gaiaPolygonPtr +gaiaClonePolygonSpecial (gaiaPolygonPtr polyg, int mode) +{ +/* clones a POLYGON (special) */ + int ib; + gaiaPolygonPtr new_polyg; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + if (!polyg) + return NULL; + if (mode == GAIA_REVERSE_ORDER || mode == GAIA_LHR_ORDER) + ; + else + return gaiaClonePolygon (polyg); + + i_ring = polyg->Exterior; + if (polyg->DimensionModel == GAIA_XY_Z) + new_polyg = gaiaAllocPolygonXYZ (i_ring->Points, polyg->NumInteriors); + else if (polyg->DimensionModel == GAIA_XY_M) + new_polyg = gaiaAllocPolygonXYM (i_ring->Points, polyg->NumInteriors); + else if (polyg->DimensionModel == GAIA_XY_Z_M) + new_polyg = gaiaAllocPolygonXYZM (i_ring->Points, polyg->NumInteriors); + else + new_polyg = gaiaAllocPolygon (i_ring->Points, polyg->NumInteriors); + o_ring = new_polyg->Exterior; +/* copying points for the EXTERIOR RING */ + if (mode == GAIA_REVERSE_ORDER) + gaiaCopyRingCoordsReverse (o_ring, i_ring); + else + { + gaiaClockwise (i_ring); + if (i_ring->Clockwise) + gaiaCopyRingCoords (o_ring, i_ring); + else + gaiaCopyRingCoordsReverse (o_ring, i_ring); + } + for (ib = 0; ib < new_polyg->NumInteriors; ib++) + { + /* copying each INTERIOR RING [if any] */ + i_ring = polyg->Interiors + ib; + o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); + if (mode == GAIA_REVERSE_ORDER) + gaiaCopyRingCoordsReverse (o_ring, i_ring); + else + { + gaiaClockwise (i_ring); + if (i_ring->Clockwise) + gaiaCopyRingCoordsReverse (o_ring, i_ring); + else + gaiaCopyRingCoords (o_ring, i_ring); + } + } + return new_polyg; +} + +GAIAGEO_DECLARE gaiaPolygonPtr +gaiaAllocPolygon (int vert, int excl) +{ +/* POLYGON object constructor */ + gaiaPolygonPtr p; + gaiaRingPtr pP; + int ind; + p = malloc (sizeof (gaiaPolygon)); + p->Exterior = gaiaAllocRing (vert); + p->NumInteriors = excl; + p->NextInterior = 0; + p->Next = NULL; + if (excl == 0) + p->Interiors = NULL; + else + p->Interiors = malloc (sizeof (gaiaRing) * excl); + for (ind = 0; ind < p->NumInteriors; ind++) + { + pP = p->Interiors + ind; + pP->Points = 0; + pP->Coords = NULL; + pP->Next = NULL; + pP->Link = 0; + } + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY; + return p; +} + +GAIAGEO_DECLARE gaiaPolygonPtr +gaiaAllocPolygonXYZ (int vert, int excl) +{ +/* POLYGON object constructor */ + gaiaPolygonPtr p; + gaiaRingPtr pP; + int ind; + p = malloc (sizeof (gaiaPolygon)); + p->Exterior = gaiaAllocRingXYZ (vert); + p->NumInteriors = excl; + p->NextInterior = 0; + p->Next = NULL; + if (excl == 0) + p->Interiors = NULL; + else + p->Interiors = malloc (sizeof (gaiaRing) * excl); + for (ind = 0; ind < p->NumInteriors; ind++) + { + pP = p->Interiors + ind; + pP->Points = 0; + pP->Coords = NULL; + pP->Next = NULL; + pP->Link = 0; + } + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY_Z; + return p; +} + +GAIAGEO_DECLARE gaiaPolygonPtr +gaiaAllocPolygonXYM (int vert, int excl) +{ +/* POLYGON object constructor */ + gaiaPolygonPtr p; + gaiaRingPtr pP; + int ind; + p = malloc (sizeof (gaiaPolygon)); + p->Exterior = gaiaAllocRingXYM (vert); + p->NumInteriors = excl; + p->NextInterior = 0; + p->Next = NULL; + if (excl == 0) + p->Interiors = NULL; + else + p->Interiors = malloc (sizeof (gaiaRing) * excl); + for (ind = 0; ind < p->NumInteriors; ind++) + { + pP = p->Interiors + ind; + pP->Points = 0; + pP->Coords = NULL; + pP->Next = NULL; + pP->Link = 0; + } + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY_M; + return p; +} + +GAIAGEO_DECLARE gaiaPolygonPtr +gaiaAllocPolygonXYZM (int vert, int excl) +{ +/* POLYGON object constructor */ + gaiaPolygonPtr p; + gaiaRingPtr pP; + int ind; + p = malloc (sizeof (gaiaPolygon)); + p->Exterior = gaiaAllocRingXYZM (vert); + p->NumInteriors = excl; + p->NextInterior = 0; + p->Next = NULL; + if (excl == 0) + p->Interiors = NULL; + else + p->Interiors = malloc (sizeof (gaiaRing) * excl); + for (ind = 0; ind < p->NumInteriors; ind++) + { + pP = p->Interiors + ind; + pP->Points = 0; + pP->Coords = NULL; + pP->Next = NULL; + pP->Link = 0; + } + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY_Z_M; + return p; +} + +GAIAGEO_DECLARE gaiaPolygonPtr +gaiaCreatePolygon (gaiaRingPtr ring) +{ +/* POLYGON object constructor */ + gaiaPolygonPtr p; + p = malloc (sizeof (gaiaPolygon)); + p->DimensionModel = ring->DimensionModel; + if (ring->DimensionModel == GAIA_XY_Z) + p->Exterior = gaiaAllocRingXYZ (ring->Points); + else if (ring->DimensionModel == GAIA_XY_M) + p->Exterior = gaiaAllocRingXYM (ring->Points); + else if (ring->DimensionModel == GAIA_XY_Z_M) + p->Exterior = gaiaAllocRingXYZM (ring->Points); + else + p->Exterior = gaiaAllocRing (ring->Points); + p->NumInteriors = 0; + p->NextInterior = 0; + p->Next = NULL; + p->Interiors = NULL; + gaiaCopyRingCoords (p->Exterior, ring); + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + return p; +} + +GAIAGEO_DECLARE void +gaiaFreePolygon (gaiaPolygonPtr p) +{ +/* POLYGON object destructor */ + gaiaRingPtr pP; + int ind; + if (p->Exterior) + gaiaFreeRing (p->Exterior); + for (ind = 0; ind < p->NumInteriors; ind++) + { + pP = p->Interiors + ind; + if (pP->Coords) + free (pP->Coords); + } + if (p->Interiors) + free (p->Interiors); + free (p); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaCloneGeomColl (gaiaGeomCollPtr geom) +{ +/* clones a GEOMETRYCOLLECTION */ + int ib; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaLinestringPtr new_line; + gaiaPolygonPtr polyg; + gaiaPolygonPtr new_polyg; + gaiaGeomCollPtr new_geom; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + if (!geom) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + new_geom = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + new_geom = gaiaAllocGeomCollXYM (); + else if (geom->DimensionModel == GAIA_XY_Z_M) + new_geom = gaiaAllocGeomCollXYZM (); + else + new_geom = gaiaAllocGeomColl (); + new_geom->Srid = geom->Srid; + new_geom->DeclaredType = geom->DeclaredType; + point = geom->FirstPoint; + while (point) + { + /* copying POINTs */ + if (geom->DimensionModel == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (new_geom, point->X, point->Y, + point->Z); + else if (geom->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (new_geom, point->X, point->Y, + point->M); + else if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (new_geom, point->X, point->Y, + point->Z, point->M); + else + gaiaAddPointToGeomColl (new_geom, point->X, point->Y); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* copying LINESTRINGs */ + new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); + gaiaCopyLinestringCoords (new_line, line); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* copying POLYGONs */ + i_ring = polyg->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, + polyg->NumInteriors); + o_ring = new_polyg->Exterior; + /* copying points for the EXTERIOR RING */ + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < new_polyg->NumInteriors; ib++) + { + /* copying each INTERIOR RING [if any] */ + i_ring = polyg->Interiors + ib; + o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + polyg = polyg->Next; + } + return new_geom; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaCloneGeomCollSpecial (gaiaGeomCollPtr geom, int mode) +{ +/* clones a GEOMETRYCOLLECTION (special) */ + int ib; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaLinestringPtr new_line; + gaiaPolygonPtr polyg; + gaiaPolygonPtr new_polyg; + gaiaGeomCollPtr new_geom; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + if (!geom) + return NULL; + if (mode == GAIA_REVERSE_ORDER || mode == GAIA_LHR_ORDER) + ; + else + return gaiaCloneGeomColl (geom); + + if (geom->DimensionModel == GAIA_XY_Z) + new_geom = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + new_geom = gaiaAllocGeomCollXYM (); + else if (geom->DimensionModel == GAIA_XY_Z_M) + new_geom = gaiaAllocGeomCollXYZM (); + else + new_geom = gaiaAllocGeomColl (); + new_geom->Srid = geom->Srid; + new_geom->DeclaredType = geom->DeclaredType; + point = geom->FirstPoint; + while (point) + { + /* copying POINTs */ + if (geom->DimensionModel == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (new_geom, point->X, point->Y, + point->Z); + else if (geom->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (new_geom, point->X, point->Y, + point->M); + else if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (new_geom, point->X, point->Y, + point->Z, point->M); + else + gaiaAddPointToGeomColl (new_geom, point->X, point->Y); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* copying LINESTRINGs */ + new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); + if (mode == GAIA_REVERSE_ORDER) + gaiaCopyLinestringCoordsReverse (new_line, line); + else + gaiaCopyLinestringCoords (new_line, line); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* copying POLYGONs */ + i_ring = polyg->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, + polyg->NumInteriors); + o_ring = new_polyg->Exterior; + /* copying points for the EXTERIOR RING */ + if (mode == GAIA_REVERSE_ORDER) + gaiaCopyRingCoordsReverse (o_ring, i_ring); + else + { + gaiaClockwise (i_ring); + if (i_ring->Clockwise) + gaiaCopyRingCoords (o_ring, i_ring); + else + gaiaCopyRingCoordsReverse (o_ring, i_ring); + } + for (ib = 0; ib < new_polyg->NumInteriors; ib++) + { + /* copying each INTERIOR RING [if any] */ + i_ring = polyg->Interiors + ib; + o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); + if (mode == GAIA_REVERSE_ORDER) + gaiaCopyRingCoordsReverse (o_ring, i_ring); + else + { + gaiaClockwise (i_ring); + if (i_ring->Clockwise) + gaiaCopyRingCoordsReverse (o_ring, i_ring); + else + gaiaCopyRingCoords (o_ring, i_ring); + } + } + polyg = polyg->Next; + } + return new_geom; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaCloneGeomCollPoints (gaiaGeomCollPtr geom) +{ +/* clones a GEOMETRYCOLLECTION (Points only) */ + gaiaPointPtr point; + gaiaGeomCollPtr new_geom; + if (!geom) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + new_geom = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + new_geom = gaiaAllocGeomCollXYM (); + else if (geom->DimensionModel == GAIA_XY_Z_M) + new_geom = gaiaAllocGeomCollXYZM (); + else + new_geom = gaiaAllocGeomColl (); + new_geom->Srid = geom->Srid; + new_geom->DeclaredType = GAIA_MULTIPOINT; + point = geom->FirstPoint; + while (point) + { + /* copying POINTs */ + if (geom->DimensionModel == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (new_geom, point->X, point->Y, + point->Z); + else if (geom->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (new_geom, point->X, point->Y, + point->M); + else if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (new_geom, point->X, point->Y, + point->Z, point->M); + else + gaiaAddPointToGeomColl (new_geom, point->X, point->Y); + point = point->Next; + } + return new_geom; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaCloneGeomCollLinestrings (gaiaGeomCollPtr geom) +{ +/* clones a GEOMETRYCOLLECTION (Linestrings only) */ + gaiaLinestringPtr line; + gaiaLinestringPtr new_line; + gaiaGeomCollPtr new_geom; + if (!geom) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + new_geom = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + new_geom = gaiaAllocGeomCollXYM (); + else if (geom->DimensionModel == GAIA_XY_Z_M) + new_geom = gaiaAllocGeomCollXYZM (); + else + new_geom = gaiaAllocGeomColl (); + new_geom->Srid = geom->Srid; + new_geom->DeclaredType = GAIA_MULTILINESTRING; + line = geom->FirstLinestring; + while (line) + { + /* copying LINESTRINGs */ + new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); + gaiaCopyLinestringCoords (new_line, line); + line = line->Next; + } + return new_geom; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaCloneGeomCollPolygons (gaiaGeomCollPtr geom) +{ +/* clones a GEOMETRYCOLLECTION (Polygons only) */ + int ib; + gaiaPolygonPtr polyg; + gaiaPolygonPtr new_polyg; + gaiaGeomCollPtr new_geom; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + if (!geom) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + new_geom = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + new_geom = gaiaAllocGeomCollXYM (); + else if (geom->DimensionModel == GAIA_XY_Z_M) + new_geom = gaiaAllocGeomCollXYZM (); + else + new_geom = gaiaAllocGeomColl (); + new_geom->Srid = geom->Srid; + new_geom->DeclaredType = GAIA_MULTIPOLYGON; + polyg = geom->FirstPolygon; + while (polyg) + { + /* copying POLYGONs */ + i_ring = polyg->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, + polyg->NumInteriors); + o_ring = new_polyg->Exterior; + /* copying points for the EXTERIOR RING */ + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < new_polyg->NumInteriors; ib++) + { + /* copying each INTERIOR RING [if any] */ + i_ring = polyg->Interiors + ib; + o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + polyg = polyg->Next; + } + return new_geom; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaCastGeomCollToXY (gaiaGeomCollPtr geom) +{ +/* clones a GEOMETRYCOLLECTION converting to XY-dimensions */ + int ib; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaLinestringPtr new_line; + gaiaPolygonPtr polyg; + gaiaPolygonPtr new_polyg; + gaiaGeomCollPtr new_geom; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + if (!geom) + return NULL; + new_geom = gaiaAllocGeomColl (); + new_geom->Srid = geom->Srid; + new_geom->DeclaredType = geom->DeclaredType; + point = geom->FirstPoint; + while (point) + { + /* copying POINTs */ + gaiaAddPointToGeomColl (new_geom, point->X, point->Y); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* copying LINESTRINGs */ + new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); + gaiaCopyLinestringCoords (new_line, line); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* copying POLYGONs */ + i_ring = polyg->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, + polyg->NumInteriors); + o_ring = new_polyg->Exterior; + /* copying points for the EXTERIOR RING */ + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < new_polyg->NumInteriors; ib++) + { + /* copying each INTERIOR RING [if any] */ + i_ring = polyg->Interiors + ib; + o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + polyg = polyg->Next; + } + return new_geom; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaCastGeomCollToXYZ (gaiaGeomCollPtr geom) +{ +/* clones a GEOMETRYCOLLECTION converting to XYZ-dimensions */ + int ib; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaLinestringPtr new_line; + gaiaPolygonPtr polyg; + gaiaPolygonPtr new_polyg; + gaiaGeomCollPtr new_geom; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + if (!geom) + return NULL; + new_geom = gaiaAllocGeomCollXYZ (); + new_geom->Srid = geom->Srid; + new_geom->DeclaredType = geom->DeclaredType; + point = geom->FirstPoint; + while (point) + { + /* copying POINTs */ + gaiaAddPointToGeomCollXYZ (new_geom, point->X, point->Y, point->Z); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* copying LINESTRINGs */ + new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); + gaiaCopyLinestringCoords (new_line, line); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* copying POLYGONs */ + i_ring = polyg->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, + polyg->NumInteriors); + o_ring = new_polyg->Exterior; + /* copying points for the EXTERIOR RING */ + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < new_polyg->NumInteriors; ib++) + { + /* copying each INTERIOR RING [if any] */ + i_ring = polyg->Interiors + ib; + o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + polyg = polyg->Next; + } + return new_geom; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaCastGeomCollToXYM (gaiaGeomCollPtr geom) +{ +/* clones a GEOMETRYCOLLECTION converting to XYM-dimensions */ + int ib; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaLinestringPtr new_line; + gaiaPolygonPtr polyg; + gaiaPolygonPtr new_polyg; + gaiaGeomCollPtr new_geom; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + if (!geom) + return NULL; + new_geom = gaiaAllocGeomCollXYM (); + new_geom->Srid = geom->Srid; + new_geom->DeclaredType = geom->DeclaredType; + point = geom->FirstPoint; + while (point) + { + /* copying POINTs */ + gaiaAddPointToGeomCollXYM (new_geom, point->X, point->Y, point->M); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* copying LINESTRINGs */ + new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); + gaiaCopyLinestringCoords (new_line, line); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* copying POLYGONs */ + i_ring = polyg->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, + polyg->NumInteriors); + o_ring = new_polyg->Exterior; + /* copying points for the EXTERIOR RING */ + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < new_polyg->NumInteriors; ib++) + { + /* copying each INTERIOR RING [if any] */ + i_ring = polyg->Interiors + ib; + o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + polyg = polyg->Next; + } + return new_geom; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaCastGeomCollToXYZM (gaiaGeomCollPtr geom) +{ +/* clones a GEOMETRYCOLLECTION converting to XYZM-dimensions */ + int ib; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaLinestringPtr new_line; + gaiaPolygonPtr polyg; + gaiaPolygonPtr new_polyg; + gaiaGeomCollPtr new_geom; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + if (!geom) + return NULL; + new_geom = gaiaAllocGeomCollXYZM (); + new_geom->Srid = geom->Srid; + new_geom->DeclaredType = geom->DeclaredType; + point = geom->FirstPoint; + while (point) + { + /* copying POINTs */ + gaiaAddPointToGeomCollXYZM (new_geom, point->X, point->Y, point->Z, + point->M); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* copying LINESTRINGs */ + new_line = gaiaAddLinestringToGeomColl (new_geom, line->Points); + gaiaCopyLinestringCoords (new_line, line); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* copying POLYGONs */ + i_ring = polyg->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (new_geom, i_ring->Points, + polyg->NumInteriors); + o_ring = new_polyg->Exterior; + /* copying points for the EXTERIOR RING */ + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < new_polyg->NumInteriors; ib++) + { + /* copying each INTERIOR RING [if any] */ + i_ring = polyg->Interiors + ib; + o_ring = gaiaAddInteriorRing (new_polyg, ib, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + polyg = polyg->Next; + } + return new_geom; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaAllocGeomColl () +{ +/* GEOMETRYCOLLECTION object constructor */ + gaiaGeomCollPtr p = malloc (sizeof (gaiaGeomColl)); + p->Srid = 0; + p->endian = ' '; + p->offset = 0; + p->FirstPoint = NULL; + p->LastPoint = NULL; + p->FirstLinestring = NULL; + p->LastLinestring = NULL; + p->FirstPolygon = NULL; + p->LastPolygon = NULL; + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY; + p->DeclaredType = GAIA_UNKNOWN; + p->Next = NULL; + return p; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaAllocGeomCollXYZ () +{ +/* GEOMETRYCOLLECTION object constructor */ + gaiaGeomCollPtr p = malloc (sizeof (gaiaGeomColl)); + p->Srid = 0; + p->endian = ' '; + p->offset = 0; + p->FirstPoint = NULL; + p->LastPoint = NULL; + p->FirstLinestring = NULL; + p->LastLinestring = NULL; + p->FirstPolygon = NULL; + p->LastPolygon = NULL; + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY_Z; + p->DeclaredType = GAIA_UNKNOWN; + p->Next = NULL; + return p; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaAllocGeomCollXYM () +{ +/* GEOMETRYCOLLECTION object constructor */ + gaiaGeomCollPtr p = malloc (sizeof (gaiaGeomColl)); + p->Srid = 0; + p->endian = ' '; + p->offset = 0; + p->FirstPoint = NULL; + p->LastPoint = NULL; + p->FirstLinestring = NULL; + p->LastLinestring = NULL; + p->FirstPolygon = NULL; + p->LastPolygon = NULL; + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY_M; + p->DeclaredType = GAIA_UNKNOWN; + p->Next = NULL; + return p; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaAllocGeomCollXYZM () +{ +/* GEOMETRYCOLLECTION object constructor */ + gaiaGeomCollPtr p = malloc (sizeof (gaiaGeomColl)); + p->Srid = 0; + p->endian = ' '; + p->offset = 0; + p->FirstPoint = NULL; + p->LastPoint = NULL; + p->FirstLinestring = NULL; + p->LastLinestring = NULL; + p->FirstPolygon = NULL; + p->LastPolygon = NULL; + p->MinX = DBL_MAX; + p->MinY = DBL_MAX; + p->MaxX = -DBL_MAX; + p->MaxY = -DBL_MAX; + p->DimensionModel = GAIA_XY_Z_M; + p->DeclaredType = GAIA_UNKNOWN; + p->Next = NULL; + return p; +} + +GAIAGEO_DECLARE void +gaiaFreeGeomColl (gaiaGeomCollPtr p) +{ +/* GEOMETRYCOLLECTION object destructor */ + gaiaPointPtr pP; + gaiaPointPtr pPn; + gaiaLinestringPtr pL; + gaiaLinestringPtr pLn; + gaiaPolygonPtr pA; + gaiaPolygonPtr pAn; + if (!p) + return; + pP = p->FirstPoint; + while (pP != NULL) + { + pPn = pP->Next; + gaiaFreePoint (pP); + pP = pPn; + } + pL = p->FirstLinestring; + while (pL != NULL) + { + pLn = pL->Next; + gaiaFreeLinestring (pL); + pL = pLn; + } + pA = p->FirstPolygon; + while (pA != NULL) + { + pAn = pA->Next; + gaiaFreePolygon (pA); + pA = pAn; + } + free (p); +} + +GAIAGEO_DECLARE void +gaiaAddPointToGeomColl (gaiaGeomCollPtr p, double x, double y) +{ +/* adding a POINT to this GEOMETRYCOLLECTION */ + gaiaPointPtr point = gaiaAllocPoint (x, y); + if (p->FirstPoint == NULL) + p->FirstPoint = point; + if (p->LastPoint != NULL) + p->LastPoint->Next = point; + p->LastPoint = point; +} + +GAIAGEO_DECLARE void +gaiaAddPointToGeomCollXYZ (gaiaGeomCollPtr p, double x, double y, double z) +{ +/* adding a POINT to this GEOMETRYCOLLECTION */ + gaiaPointPtr point = gaiaAllocPointXYZ (x, y, z); + if (p->FirstPoint == NULL) + p->FirstPoint = point; + if (p->LastPoint != NULL) + p->LastPoint->Next = point; + p->LastPoint = point; +} + +GAIAGEO_DECLARE void +gaiaAddPointToGeomCollXYM (gaiaGeomCollPtr p, double x, double y, double m) +{ +/* adding a POINT to this GEOMETRYCOLLECTION */ + gaiaPointPtr point = gaiaAllocPointXYM (x, y, m); + if (p->FirstPoint == NULL) + p->FirstPoint = point; + if (p->LastPoint != NULL) + p->LastPoint->Next = point; + p->LastPoint = point; +} + +GAIAGEO_DECLARE void +gaiaAddPointToGeomCollXYZM (gaiaGeomCollPtr p, double x, double y, double z, + double m) +{ +/* adding a POINT to this GEOMETRYCOLLECTION */ + gaiaPointPtr point = gaiaAllocPointXYZM (x, y, z, m); + if (p->FirstPoint == NULL) + p->FirstPoint = point; + if (p->LastPoint != NULL) + p->LastPoint->Next = point; + p->LastPoint = point; +} + +GAIAGEO_DECLARE gaiaLinestringPtr +gaiaAddLinestringToGeomColl (gaiaGeomCollPtr p, int vert) +{ +/* adding a LINESTRING to this GEOMETRYCOLLECTION */ + gaiaLinestringPtr line; + if (p->DimensionModel == GAIA_XY_Z) + line = gaiaAllocLinestringXYZ (vert); + else if (p->DimensionModel == GAIA_XY_M) + line = gaiaAllocLinestringXYM (vert); + else if (p->DimensionModel == GAIA_XY_Z_M) + line = gaiaAllocLinestringXYZM (vert); + else + line = gaiaAllocLinestring (vert); + if (p->FirstLinestring == NULL) + p->FirstLinestring = line; + if (p->LastLinestring != NULL) + p->LastLinestring->Next = line; + p->LastLinestring = line; + return line; +} + +GAIAGEO_DECLARE void +gaiaInsertLinestringInGeomColl (gaiaGeomCollPtr p, gaiaLinestringPtr line) +{ +/* adding an existing LINESTRING to this GEOMETRYCOLLECTION */ + if (p->FirstLinestring == NULL) + p->FirstLinestring = line; + if (p->LastLinestring != NULL) + p->LastLinestring->Next = line; + p->LastLinestring = line; +} + +GAIAGEO_DECLARE gaiaPolygonPtr +gaiaAddPolygonToGeomColl (gaiaGeomCollPtr p, int vert, int interiors) +{ +/* adding a POLYGON to this GEOMETRYCOLLECTION */ + gaiaPolygonPtr polyg; + if (p->DimensionModel == GAIA_XY_Z) + polyg = gaiaAllocPolygonXYZ (vert, interiors); + else if (p->DimensionModel == GAIA_XY_M) + polyg = gaiaAllocPolygonXYM (vert, interiors); + else if (p->DimensionModel == GAIA_XY_Z_M) + polyg = gaiaAllocPolygonXYZM (vert, interiors); + else + polyg = gaiaAllocPolygon (vert, interiors); + if (p->FirstPolygon == NULL) + p->FirstPolygon = polyg; + if (p->LastPolygon != NULL) + p->LastPolygon->Next = polyg; + p->LastPolygon = polyg; + return polyg; +} + +GAIAGEO_DECLARE gaiaPolygonPtr +gaiaInsertPolygonInGeomColl (gaiaGeomCollPtr p, gaiaRingPtr ring) +{ +/* adding a POLYGON to this GEOMETRYCOLLECTION */ + gaiaPolygonPtr polyg; + polyg = malloc (sizeof (gaiaPolygon)); + polyg->Exterior = ring; + polyg->NumInteriors = 0; + polyg->NextInterior = 0; + polyg->DimensionModel = ring->DimensionModel; + polyg->Next = NULL; + polyg->Interiors = NULL; + polyg->MinX = DBL_MAX; + polyg->MinY = DBL_MAX; + polyg->MaxX = -DBL_MAX; + polyg->MaxY = -DBL_MAX; + if (p->FirstPolygon == NULL) + p->FirstPolygon = polyg; + if (p->LastPolygon != NULL) + p->LastPolygon->Next = polyg; + p->LastPolygon = polyg; + return polyg; +} + +GAIAGEO_DECLARE gaiaRingPtr +gaiaAddInteriorRing (gaiaPolygonPtr p, int pos, int vert) +{ +/* adding an interior ring to some polygon */ + gaiaRingPtr pP = p->Interiors + pos; + pP->Points = vert; + pP->DimensionModel = p->DimensionModel; + if (pP->DimensionModel == GAIA_XY_Z) + pP->Coords = malloc (sizeof (double) * (vert * 3)); + else if (pP->DimensionModel == GAIA_XY_M) + pP->Coords = malloc (sizeof (double) * (vert * 3)); + else if (pP->DimensionModel == GAIA_XY_Z_M) + pP->Coords = malloc (sizeof (double) * (vert * 4)); + else + pP->Coords = malloc (sizeof (double) * (vert * 2)); + return pP; +} + +GAIAGEO_DECLARE void +gaiaInsertInteriorRing (gaiaPolygonPtr p, gaiaRingPtr ring) +{ +/* adding an interior ring to some polygon */ + gaiaRingPtr hole; + if (p->NumInteriors == 0) + { + /* this one is the first interior ring */ + p->NumInteriors++; + p->Interiors = malloc (sizeof (gaiaRing)); + hole = p->Interiors; + } + else + { + /* some interior ring is already defined */ + gaiaRingPtr save = p->Interiors; + p->Interiors = malloc (sizeof (gaiaRing) * (p->NumInteriors + 1)); + memcpy (p->Interiors, save, (sizeof (gaiaRing) * p->NumInteriors)); + free (save); + hole = p->Interiors + p->NumInteriors; + p->NumInteriors++; + } + hole->Points = ring->Points; + hole->DimensionModel = p->DimensionModel; + if (hole->DimensionModel == GAIA_XY_Z) + hole->Coords = malloc (sizeof (double) * (hole->Points * 3)); + else if (hole->DimensionModel == GAIA_XY_M) + hole->Coords = malloc (sizeof (double) * (hole->Points * 3)); + else if (hole->DimensionModel == GAIA_XY_Z_M) + hole->Coords = malloc (sizeof (double) * (hole->Points * 4)); + else + hole->Coords = malloc (sizeof (double) * (hole->Points * 2)); + gaiaCopyRingCoords (hole, ring); +} + +GAIAGEO_DECLARE void +gaiaAddRingToPolyg (gaiaPolygonPtr polyg, gaiaRingPtr ring) +{ +/* adds an interior ring to this POLYGON */ + gaiaRingPtr old_interiors = NULL; + if (!(polyg->Interiors)) + { + /* this one is the first interior ring */ + polyg->Interiors = ring; + polyg->NumInteriors = 1; + } + else + { + /* adding another interior ring */ + old_interiors = polyg->Interiors; + polyg->Interiors = + malloc (sizeof (gaiaRing) * (polyg->NumInteriors + 1)); + memcpy (polyg->Interiors, old_interiors, + (sizeof (gaiaRing) * polyg->NumInteriors)); + memcpy (polyg->Interiors + polyg->NumInteriors, ring, + sizeof (gaiaRing)); + (polyg->NumInteriors)++; + free (old_interiors); + free (ring); + } +} + +GAIAGEO_DECLARE gaiaDynamicLinePtr +gaiaAllocDynamicLine () +{ +/* DYNAMIC LINE object constructor */ + gaiaDynamicLinePtr p = malloc (sizeof (gaiaDynamicLine)); + p->Error = 0; + p->Srid = 0; + p->First = NULL; + p->Last = NULL; + return p; +} + +GAIAGEO_DECLARE void +gaiaFreeDynamicLine (gaiaDynamicLinePtr p) +{ +/* DYNAMIC LINE object destructor */ + gaiaPointPtr pP; + gaiaPointPtr pPn; + pP = p->First; + while (pP != NULL) + { + pPn = pP->Next; + gaiaFreePoint (pP); + pP = pPn; + } + free (p); +} + +GAIAGEO_DECLARE gaiaPointPtr +gaiaAppendPointToDynamicLine (gaiaDynamicLinePtr p, double x, double y) +{ +/* inserts a new POINT to this DYNAMIC LINE after the last one */ + gaiaPointPtr point = gaiaAllocPoint (x, y); + point->Prev = p->Last; + if (p->First == NULL) + p->First = point; + if (p->Last != NULL) + p->Last->Next = point; + p->Last = point; + return point; +} + +GAIAGEO_DECLARE gaiaPointPtr +gaiaAppendPointZToDynamicLine (gaiaDynamicLinePtr p, double x, double y, + double z) +{ +/* inserts a new POINT to this DYNAMIC LINE after the last one */ + gaiaPointPtr point = gaiaAllocPointXYZ (x, y, z); + point->Prev = p->Last; + if (p->First == NULL) + p->First = point; + if (p->Last != NULL) + p->Last->Next = point; + p->Last = point; + return point; +} + +GAIAGEO_DECLARE gaiaPointPtr +gaiaAppendPointMToDynamicLine (gaiaDynamicLinePtr p, double x, double y, + double m) +{ +/* inserts a new POINT to this DYNAMIC LINE after the last one */ + gaiaPointPtr point = gaiaAllocPointXYM (x, y, m); + point->Prev = p->Last; + if (p->First == NULL) + p->First = point; + if (p->Last != NULL) + p->Last->Next = point; + p->Last = point; + return point; +} + +GAIAGEO_DECLARE gaiaPointPtr +gaiaAppendPointZMToDynamicLine (gaiaDynamicLinePtr p, double x, double y, + double z, double m) +{ +/* inserts a new POINT to this DYNAMIC LINE after the last one */ + gaiaPointPtr point = gaiaAllocPointXYZM (x, y, z, m); + point->Prev = p->Last; + if (p->First == NULL) + p->First = point; + if (p->Last != NULL) + p->Last->Next = point; + p->Last = point; + return point; +} + +GAIAGEO_DECLARE gaiaPointPtr +gaiaPrependPointToDynamicLine (gaiaDynamicLinePtr p, double x, double y) +{ +/* inserts a new POINT to this DYNAMIC LINE before the first one */ + gaiaPointPtr point = gaiaAllocPoint (x, y); + point->Next = p->First; + if (p->Last == NULL) + p->Last = point; + if (p->First != NULL) + p->First->Prev = point; + p->First = point; + return point; +} + +GAIAGEO_DECLARE gaiaPointPtr +gaiaPrependPointZToDynamicLine (gaiaDynamicLinePtr p, double x, double y, + double z) +{ +/* inserts a new POINT to this DYNAMIC LINE before the first one */ + gaiaPointPtr point = gaiaAllocPointXYZ (x, y, z); + point->Next = p->First; + if (p->Last == NULL) + p->Last = point; + if (p->First != NULL) + p->First->Prev = point; + p->First = point; + return point; +} + +GAIAGEO_DECLARE gaiaPointPtr +gaiaPrependPointMToDynamicLine (gaiaDynamicLinePtr p, double x, double y, + double m) +{ +/* inserts a new POINT to this DYNAMIC LINE before the first one */ + gaiaPointPtr point = gaiaAllocPointXYM (x, y, m); + point->Next = p->First; + if (p->Last == NULL) + p->Last = point; + if (p->First != NULL) + p->First->Prev = point; + p->First = point; + return point; +} + +GAIAGEO_DECLARE gaiaPointPtr +gaiaPrependPointZMToDynamicLine (gaiaDynamicLinePtr p, double x, double y, + double z, double m) +{ +/* inserts a new POINT to this DYNAMIC LINE before the first one */ + gaiaPointPtr point = gaiaAllocPointXYZM (x, y, z, m); + point->Next = p->First; + if (p->Last == NULL) + p->Last = point; + if (p->First != NULL) + p->First->Prev = point; + p->First = point; + return point; +} + +GAIAGEO_DECLARE gaiaPointPtr +gaiaDynamicLineInsertAfter (gaiaDynamicLinePtr p, gaiaPointPtr pt, double x, + double y) +{ +/* inserts a new POINT to this DYNAMIC LINE after the referenced POINT */ + gaiaPointPtr point = gaiaAllocPoint (x, y); + point->Prev = pt; + point->Next = pt->Next; + if (pt->Next) + pt->Next->Prev = point; + pt->Next = point; + if (pt == p->Last) + p->Last = point; + return point; +} + +GAIAGEO_DECLARE gaiaPointPtr +gaiaDynamicLineInsertBefore (gaiaDynamicLinePtr p, gaiaPointPtr pt, double x, + double y) +{ +/* inserts a new POINT to this DYNAMIC LINE before the referenced POINT */ + gaiaPointPtr point = gaiaAllocPoint (x, y); + point->Next = pt; + point->Prev = pt->Prev; + if (pt->Prev) + pt->Prev->Next = point; + pt->Prev = point; + if (pt == p->First) + p->First = point; + return point; +} + +GAIAGEO_DECLARE void +gaiaDynamicLineDeletePoint (gaiaDynamicLinePtr p, gaiaPointPtr pt) +{ +/* deletes a POINT from this DYNAMIC LINE */ + if (pt->Prev) + pt->Prev->Next = pt->Next; + if (pt->Next) + pt->Next->Prev = pt->Prev; + if (pt == p->First) + p->First = pt->Next; + if (pt == p->Last) + p->Last = pt->Prev; + gaiaFreePoint (pt); +} + +GAIAGEO_DECLARE gaiaDynamicLinePtr +gaiaCloneDynamicLine (gaiaDynamicLinePtr org) +{ +/* creates a new line obtained by simply copying the current one */ + gaiaPointPtr pt; + gaiaDynamicLinePtr dst = gaiaAllocDynamicLine (); + pt = org->First; + while (pt) + { + gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); + pt = pt->Next; + } + return dst; +} + +GAIAGEO_DECLARE gaiaDynamicLinePtr +gaiaReverseDynamicLine (gaiaDynamicLinePtr org) +{ +/* creates a new line obtained by inverting the current one */ + gaiaPointPtr pt; + gaiaDynamicLinePtr dst = gaiaAllocDynamicLine (); + pt = org->Last; + while (pt) + { + gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); + pt = pt->Prev; + } + return dst; +} + +GAIAGEO_DECLARE gaiaDynamicLinePtr +gaiaDynamicLineSplitBefore (gaiaDynamicLinePtr org, gaiaPointPtr point) +{ +/* creates a new line obtained by cutting the current one in two */ + gaiaDynamicLinePtr dst = gaiaAllocDynamicLine (); + dst->First = org->First; + dst->Last = point->Prev; + point->Prev->Next = NULL; + org->First = point; + point->Prev = NULL; + return dst; +} + +GAIAGEO_DECLARE gaiaDynamicLinePtr +gaiaDynamicLineSplitAfter (gaiaDynamicLinePtr org, gaiaPointPtr point) +{ +/* creates a new line obtained by cutting the current one in two */ + gaiaDynamicLinePtr dst = gaiaAllocDynamicLine (); + dst->First = point->Next; + dst->Last = org->Last; + point->Next->Prev = NULL; + org->Last = point; + point->Next = NULL; + return dst; +} + +GAIAGEO_DECLARE gaiaDynamicLinePtr +gaiaDynamicLineJoinAfter (gaiaDynamicLinePtr org, gaiaPointPtr point, + gaiaDynamicLinePtr toJoin) +{ +/* creates a new line obtained by joining the current one with another one */ + gaiaPointPtr pt; + gaiaDynamicLinePtr dst = gaiaAllocDynamicLine (); + pt = org->First; + while (pt) + { + /* inserting the first slice since the delimiting POINT included */ + gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); + if (pt == point) + break; + pt = pt->Next; + } + pt = toJoin->First; + while (pt) + { + /* inserting the other line */ + gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); + pt = pt->Next; + } + pt = point->Next; + while (pt) + { + /* inserting the second slice after the delimiting POINT */ + gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); + pt = pt->Next; + } + return dst; +} + +GAIAGEO_DECLARE gaiaDynamicLinePtr +gaiaDynamicLineJoinBefore (gaiaDynamicLinePtr org, gaiaPointPtr point, + gaiaDynamicLinePtr toJoin) +{ +/* creates a new line obtained by joining the current one with another one */ + gaiaPointPtr pt; + gaiaDynamicLinePtr dst = gaiaAllocDynamicLine (); + pt = org->First; + while (pt) + { + /* inserting the first slice since the delimiting POINT excluded */ + if (pt == point) + break; + gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); + pt = pt->Next; + } + pt = toJoin->First; + while (pt) + { + /* inserting the other line */ + gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); + pt = pt->Next; + } + pt = point; + while (pt) + { + /* inserting the second slice beginning from the delimiting POINT */ + gaiaAppendPointToDynamicLine (dst, pt->X, pt->Y); + pt = pt->Next; + } + return dst; +} + +GAIAGEO_DECLARE gaiaPointPtr +gaiaDynamicLineFindByCoords (gaiaDynamicLinePtr p, double x, double y) +{ +/* finds a POINT inside this DYNAMIC LINE */ + gaiaPointPtr pP; + pP = p->First; + while (pP != NULL) + { + if (pP->X == x && pP->Y == y) + return pP; + pP = pP->Next; + } + return NULL; +} + +GAIAGEO_DECLARE gaiaPointPtr +gaiaDynamicLineFindByPos (gaiaDynamicLinePtr p, int pos) +{ +/* finds a POINT inside this DYNAMIC LINE */ + int n = 0; + gaiaPointPtr pP; + pP = p->First; + while (pP != NULL) + { + if (pos == n) + return pP; + n++; + pP = pP->Next; + } + return NULL; +} + +GAIAGEO_DECLARE gaiaDynamicLinePtr +gaiaCreateDynamicLine (double *coords, int points) +{ +/* creates a DynamicLine from an array of coordinates */ + int iv; + double x; + double y; + gaiaDynamicLinePtr line = gaiaAllocDynamicLine (); + for (iv = 0; iv < points; iv++) + { + gaiaGetPoint (coords, iv, &x, &y); + gaiaAppendPointToDynamicLine (line, x, y); + } + return line; +} + +GAIAGEO_DECLARE void +gaiaMbrLinestring (gaiaLinestringPtr line) +{ +/* computes the MBR for this linestring */ + int iv; + double x; + double y; + double z; + double m; + line->MinX = DBL_MAX; + line->MinY = DBL_MAX; + line->MaxX = -DBL_MAX; + line->MaxY = -DBL_MAX; + for (iv = 0; iv < line->Points; iv++) + { + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + if (x < line->MinX) + line->MinX = x; + if (y < line->MinY) + line->MinY = y; + if (x > line->MaxX) + line->MaxX = x; + if (y > line->MaxY) + line->MaxY = y; + } +} + +GAIAGEO_DECLARE void +gaiaMbrRing (gaiaRingPtr rng) +{ +/* computes the MBR for this ring */ + int iv; + double x; + double y; + double z; + double m; + rng->MinX = DBL_MAX; + rng->MinY = DBL_MAX; + rng->MaxX = -DBL_MAX; + rng->MaxY = -DBL_MAX; + for (iv = 0; iv < rng->Points; iv++) + { + if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + if (x < rng->MinX) + rng->MinX = x; + if (y < rng->MinY) + rng->MinY = y; + if (x > rng->MaxX) + rng->MaxX = x; + if (y > rng->MaxY) + rng->MaxY = y; + } +} + +GAIAGEO_DECLARE void +gaiaMbrPolygon (gaiaPolygonPtr polyg) +{ +/* computes the MBR for this polygon */ + gaiaRingPtr rng; + polyg->MinX = DBL_MAX; + polyg->MinY = DBL_MAX; + polyg->MaxX = -DBL_MAX; + polyg->MaxY = -DBL_MAX; + rng = polyg->Exterior; + gaiaMbrRing (rng); + if (rng->MinX < polyg->MinX) + polyg->MinX = rng->MinX; + if (rng->MinY < polyg->MinY) + polyg->MinY = rng->MinY; + if (rng->MaxX > polyg->MaxX) + polyg->MaxX = rng->MaxX; + if (rng->MaxY > polyg->MaxY) + polyg->MaxY = rng->MaxY; +} + +GAIAGEO_DECLARE void +gaiaMbrGeometry (gaiaGeomCollPtr geom) +{ +/* computes the MBR for this geometry */ + gaiaPointPtr point = NULL; + gaiaLinestringPtr line = NULL; + gaiaPolygonPtr polyg = NULL; + geom->MinX = DBL_MAX; + geom->MinY = DBL_MAX; + geom->MaxX = -DBL_MAX; + geom->MaxY = -DBL_MAX; + point = geom->FirstPoint; + while (point) + { + if (point->X < geom->MinX) + geom->MinX = point->X; + if (point->Y < geom->MinY) + geom->MinY = point->Y; + if (point->X > geom->MaxX) + geom->MaxX = point->X; + if (point->Y > geom->MaxY) + geom->MaxY = point->Y; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + gaiaMbrLinestring (line); + if (line->MinX < geom->MinX) + geom->MinX = line->MinX; + if (line->MinY < geom->MinY) + geom->MinY = line->MinY; + if (line->MaxX > geom->MaxX) + geom->MaxX = line->MaxX; + if (line->MaxY > geom->MaxY) + geom->MaxY = line->MaxY; + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + gaiaMbrPolygon (polyg); + if (polyg->MinX < geom->MinX) + geom->MinX = polyg->MinX; + if (polyg->MinY < geom->MinY) + geom->MinY = polyg->MinY; + if (polyg->MaxX > geom->MaxX) + geom->MaxX = polyg->MaxX; + if (polyg->MaxY > geom->MaxY) + geom->MaxY = polyg->MaxY; + polyg = polyg->Next; + } +} + +GAIAGEO_DECLARE void +gaiaMRangeLinestring (gaiaLinestringPtr line, double *min, double *max) +{ +/* computes the M-range [min/max] for this linestring */ + int iv; + double x; + double y; + double z; + double m; + *min = DBL_MAX; + *max = -DBL_MAX; + for (iv = 0; iv < line->Points; iv++) + { + m = 0.0; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + if (m < *min) + *min = m; + if (m > *max) + *max = m; + } +} + +GAIAGEO_DECLARE void +gaiaMRangeRing (gaiaRingPtr rng, double *min, double *max) +{ +/* computes the M-range [min/max] for this ring */ + int iv; + double x; + double y; + double z; + double m; + *min = DBL_MAX; + *max = -DBL_MAX; + for (iv = 0; iv < rng->Points; iv++) + { + m = 0.0; + if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + if (m < *min) + *min = m; + if (m > *max) + *max = m; + } +} + +GAIAGEO_DECLARE void +gaiaMRangePolygon (gaiaPolygonPtr polyg, double *min, double *max) +{ +/* computes the M-range [min/max] for this polygon */ + gaiaRingPtr rng; + int ib; + double r_min; + double r_max; + *min = DBL_MAX; + *max = -DBL_MAX; + rng = polyg->Exterior; + gaiaMRangeRing (rng, &r_min, &r_max); + if (r_min < *min) + *min = r_min; + if (r_max > *max) + *max = r_max; + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaMRangeRing (rng, &r_min, &r_max); + if (r_min < *min) + *min = r_min; + if (r_max > *max) + *max = r_max; + } +} + +GAIAGEO_DECLARE void +gaiaMRangeGeometry (gaiaGeomCollPtr geom, double *min, double *max) +{ +/* computes the M-range [min/max] for this geometry */ + gaiaPointPtr point = NULL; + gaiaLinestringPtr line = NULL; + gaiaPolygonPtr polyg = NULL; + double m; + double r_min; + double r_max; + *min = DBL_MAX; + *max = -DBL_MAX; + point = geom->FirstPoint; + while (point) + { + m = 0.0; + if (point->DimensionModel == GAIA_XY_M + || point->DimensionModel == GAIA_XY_Z_M) + m = point->M; + if (m < *min) + *min = m; + if (m > *max) + *max = m; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + gaiaMRangeLinestring (line, &r_min, &r_max); + if (r_min < *min) + *min = r_min; + if (r_max > *max) + *max = r_max; + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + gaiaMRangePolygon (polyg, &r_min, &r_max); + if (r_min < *min) + *min = r_min; + if (r_max > *max) + *max = r_max; + polyg = polyg->Next; + } +} + +GAIAGEO_DECLARE void +gaiaZRangeLinestring (gaiaLinestringPtr line, double *min, double *max) +{ +/* computes the Z-range [min/max] for this linestring */ + int iv; + double x; + double y; + double z; + double m; + *min = DBL_MAX; + *max = -DBL_MAX; + for (iv = 0; iv < line->Points; iv++) + { + z = 0.0; + m = 0.0; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + if (z < *min) + *min = z; + if (z > *max) + *max = z; + } +} + +GAIAGEO_DECLARE void +gaiaZRangeRing (gaiaRingPtr rng, double *min, double *max) +{ +/* computes the Z-range [min/max] for this ring */ + int iv; + double x; + double y; + double z; + double m; + *min = DBL_MAX; + *max = -DBL_MAX; + for (iv = 0; iv < rng->Points; iv++) + { + z = 0.0; + m = 0.0; + if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + if (z < *min) + *min = z; + if (z > *max) + *max = z; + } +} + +GAIAGEO_DECLARE void +gaiaZRangePolygon (gaiaPolygonPtr polyg, double *min, double *max) +{ +/* computes the Z-range [min/max] for this polygon */ + gaiaRingPtr rng; + int ib; + double r_min; + double r_max; + *min = DBL_MAX; + *max = -DBL_MAX; + rng = polyg->Exterior; + gaiaZRangeRing (rng, &r_min, &r_max); + if (r_min < *min) + *min = r_min; + if (r_max > *max) + *max = r_max; + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaZRangeRing (rng, &r_min, &r_max); + if (r_min < *min) + *min = r_min; + if (r_max > *max) + *max = r_max; + } +} + +GAIAGEO_DECLARE void +gaiaZRangeGeometry (gaiaGeomCollPtr geom, double *min, double *max) +{ +/* computes the Z-range [min/max] for this geometry */ + gaiaPointPtr point = NULL; + gaiaLinestringPtr line = NULL; + gaiaPolygonPtr polyg = NULL; + double z; + double r_min; + double r_max; + *min = DBL_MAX; + *max = -DBL_MAX; + point = geom->FirstPoint; + while (point) + { + z = 0.0; + if (point->DimensionModel == GAIA_XY_Z + || point->DimensionModel == GAIA_XY_Z_M) + z = point->Z; + if (z < *min) + *min = z; + if (z > *max) + *max = z; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + gaiaZRangeLinestring (line, &r_min, &r_max); + if (r_min < *min) + *min = r_min; + if (r_max > *max) + *max = r_max; + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + gaiaZRangePolygon (polyg, &r_min, &r_max); + if (r_min < *min) + *min = r_min; + if (r_max > *max) + *max = r_max; + polyg = polyg->Next; + } +} + +GAIAGEO_DECLARE int +gaiaDimension (gaiaGeomCollPtr geom) +{ +/* determines the Dimension for this geometry */ + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + int n_points = 0; + int n_linestrings = 0; + int n_polygons = 0; + if (!geom) + return -1; + point = geom->FirstPoint; + while (point) + { + /* counts how many points are there */ + n_points++; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* counts how many linestrings are there */ + n_linestrings++; + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* counts how many polygons are there */ + n_polygons++; + polyg = polyg->Next; + } + if (n_points == 0 && n_linestrings == 0 && n_polygons == 0) + return -1; + if (n_points > 0 && n_linestrings == 0 && n_polygons == 0) + return 0; + if (n_linestrings > 0 && n_polygons == 0) + return 1; + return 2; +} + +GAIAGEO_DECLARE int +gaiaGeometryType (gaiaGeomCollPtr geom) +{ +/* determines the Class for this geometry */ + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + int ib; + int n_points = 0; + int n_linestrings = 0; + int n_polygons = 0; + int dm = GAIA_XY; + if (!geom) + return GAIA_UNKNOWN; + point = geom->FirstPoint; + while (point) + { + /* counts how many points are there */ + n_points++; + if (point->DimensionModel == GAIA_XY_Z) + { + if (dm == GAIA_XY) + dm = GAIA_XY_Z; + else if (dm == GAIA_XY_M) + dm = GAIA_XY_Z_M; + } + else if (point->DimensionModel == GAIA_XY_M) + { + if (dm == GAIA_XY) + dm = GAIA_XY_M; + else if (dm == GAIA_XY_Z) + dm = GAIA_XY_Z_M; + } + else if (point->DimensionModel == GAIA_XY_Z_M) + dm = GAIA_XY_Z_M; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* counts how many linestrings are there */ + n_linestrings++; + if (line->DimensionModel == GAIA_XY_Z) + { + if (dm == GAIA_XY) + dm = GAIA_XY_Z; + else if (dm == GAIA_XY_M) + dm = GAIA_XY_Z_M; + } + else if (line->DimensionModel == GAIA_XY_M) + { + if (dm == GAIA_XY) + dm = GAIA_XY_M; + else if (dm == GAIA_XY_Z) + dm = GAIA_XY_Z_M; + } + else if (line->DimensionModel == GAIA_XY_Z_M) + dm = GAIA_XY_Z_M; + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* counts how many polygons are there */ + n_polygons++; + ring = polyg->Exterior; + if (ring->DimensionModel == GAIA_XY_Z) + { + if (dm == GAIA_XY) + dm = GAIA_XY_Z; + else if (dm == GAIA_XY_M) + dm = GAIA_XY_Z_M; + } + else if (ring->DimensionModel == GAIA_XY_M) + { + if (dm == GAIA_XY) + dm = GAIA_XY_M; + else if (dm == GAIA_XY_Z) + dm = GAIA_XY_Z_M; + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + dm = GAIA_XY_Z_M; + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + if (ring->DimensionModel == GAIA_XY_Z) + { + if (dm == GAIA_XY) + dm = GAIA_XY_Z; + else if (dm == GAIA_XY_M) + dm = GAIA_XY_Z_M; + } + else if (ring->DimensionModel == GAIA_XY_M) + { + if (dm == GAIA_XY) + dm = GAIA_XY_M; + else if (dm == GAIA_XY_Z) + dm = GAIA_XY_Z_M; + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + dm = GAIA_XY_Z_M; + } + polyg = polyg->Next; + } + if (n_points == 0 && n_linestrings == 0 && n_polygons == 0) + return GAIA_UNKNOWN; + if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTIPOINT) + { + if (dm == GAIA_XY_Z) + return GAIA_MULTIPOINTZ; + if (dm == GAIA_XY_M) + return GAIA_MULTIPOINTM; + if (dm == GAIA_XY_Z_M) + return GAIA_MULTIPOINTZM; + else + return GAIA_MULTIPOINT; + } + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (dm == GAIA_XY_Z) + return GAIA_GEOMETRYCOLLECTIONZ; + if (dm == GAIA_XY_M) + return GAIA_GEOMETRYCOLLECTIONM; + if (dm == GAIA_XY_Z_M) + return GAIA_GEOMETRYCOLLECTIONZM; + else + return GAIA_GEOMETRYCOLLECTION; + } + else + { + if (dm == GAIA_XY_Z) + return GAIA_POINTZ; + if (dm == GAIA_XY_M) + return GAIA_POINTM; + if (dm == GAIA_XY_Z_M) + return GAIA_POINTZM; + else + return GAIA_POINT; + } + } + if (n_points > 0 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (dm == GAIA_XY_Z) + return GAIA_GEOMETRYCOLLECTIONZ; + if (dm == GAIA_XY_M) + return GAIA_GEOMETRYCOLLECTIONM; + if (dm == GAIA_XY_Z_M) + return GAIA_GEOMETRYCOLLECTIONZM; + else + return GAIA_GEOMETRYCOLLECTION; + } + else + { + if (dm == GAIA_XY_Z) + return GAIA_MULTIPOINTZ; + if (dm == GAIA_XY_M) + return GAIA_MULTIPOINTM; + if (dm == GAIA_XY_Z_M) + return GAIA_MULTIPOINTZM; + else + return GAIA_MULTIPOINT; + } + } + if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTILINESTRING) + { + if (dm == GAIA_XY_Z) + return GAIA_MULTILINESTRINGZ; + if (dm == GAIA_XY_M) + return GAIA_MULTILINESTRINGM; + if (dm == GAIA_XY_Z_M) + return GAIA_MULTILINESTRINGZM; + else + return GAIA_MULTILINESTRING; + } + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (dm == GAIA_XY_Z) + return GAIA_GEOMETRYCOLLECTIONZ; + if (dm == GAIA_XY_M) + return GAIA_GEOMETRYCOLLECTIONM; + if (dm == GAIA_XY_Z_M) + return GAIA_GEOMETRYCOLLECTIONZM; + else + return GAIA_GEOMETRYCOLLECTION; + } + else + { + if (dm == GAIA_XY_Z) + return GAIA_LINESTRINGZ; + if (dm == GAIA_XY_M) + return GAIA_LINESTRINGM; + if (dm == GAIA_XY_Z_M) + return GAIA_LINESTRINGZM; + else + return GAIA_LINESTRING; + } + } + if (n_points == 0 && n_linestrings > 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (dm == GAIA_XY_Z) + return GAIA_GEOMETRYCOLLECTIONZ; + if (dm == GAIA_XY_M) + return GAIA_GEOMETRYCOLLECTIONM; + if (dm == GAIA_XY_Z_M) + return GAIA_GEOMETRYCOLLECTIONZM; + else + return GAIA_GEOMETRYCOLLECTION; + } + else + { + if (dm == GAIA_XY_Z) + return GAIA_MULTILINESTRINGZ; + if (dm == GAIA_XY_M) + return GAIA_MULTILINESTRINGM; + if (dm == GAIA_XY_Z_M) + return GAIA_MULTILINESTRINGZM; + else + return GAIA_MULTILINESTRING; + } + } + if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) + { + if (geom->DeclaredType == GAIA_MULTIPOLYGON) + { + if (dm == GAIA_XY_Z) + return GAIA_MULTIPOLYGONZ; + if (dm == GAIA_XY_M) + return GAIA_MULTIPOLYGONM; + if (dm == GAIA_XY_Z_M) + return GAIA_MULTIPOLYGONZM; + else + return GAIA_MULTIPOLYGON; + } + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (dm == GAIA_XY_Z) + return GAIA_GEOMETRYCOLLECTIONZ; + if (dm == GAIA_XY_M) + return GAIA_GEOMETRYCOLLECTIONM; + if (dm == GAIA_XY_Z_M) + return GAIA_GEOMETRYCOLLECTIONZM; + else + return GAIA_GEOMETRYCOLLECTION; + } + else + { + if (dm == GAIA_XY_Z) + return GAIA_POLYGONZ; + if (dm == GAIA_XY_M) + return GAIA_POLYGONM; + if (dm == GAIA_XY_Z_M) + return GAIA_POLYGONZM; + else + return GAIA_POLYGON; + } + } + if (n_points == 0 && n_linestrings == 0 && n_polygons > 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (dm == GAIA_XY_Z) + return GAIA_GEOMETRYCOLLECTIONZ; + if (dm == GAIA_XY_M) + return GAIA_GEOMETRYCOLLECTIONM; + if (dm == GAIA_XY_Z_M) + return GAIA_GEOMETRYCOLLECTIONZM; + else + return GAIA_GEOMETRYCOLLECTION; + } + else + { + if (dm == GAIA_XY_Z) + return GAIA_MULTIPOLYGONZ; + if (dm == GAIA_XY_M) + return GAIA_MULTIPOLYGONM; + if (dm == GAIA_XY_Z_M) + return GAIA_MULTIPOLYGONZM; + else + return GAIA_MULTIPOLYGON; + } + } + if (dm == GAIA_XY_Z) + return GAIA_GEOMETRYCOLLECTIONZ; + if (dm == GAIA_XY_M) + return GAIA_GEOMETRYCOLLECTIONM; + if (dm == GAIA_XY_Z_M) + return GAIA_GEOMETRYCOLLECTIONZM; + else + return GAIA_GEOMETRYCOLLECTION; +} + +GAIAGEO_DECLARE int +gaiaGeometryAliasType (gaiaGeomCollPtr geom) +{ +/* determines the AliasClass for this geometry */ + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + int n_points = 0; + int n_linestrings = 0; + int n_polygons = 0; + if (!geom) + return GAIA_UNKNOWN; + point = geom->FirstPoint; + while (point) + { + /* counts how many points are there */ + n_points++; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* counts how many linestrings are there */ + n_linestrings++; + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* counts how many polygons are there */ + n_polygons++; + polyg = polyg->Next; + } + if (n_points == 0 && n_linestrings == 0 && n_polygons == 0) + return GAIA_UNKNOWN; + if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTIPOINT) + return GAIA_MULTIPOINT; + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + return GAIA_GEOMETRYCOLLECTION; + else + return GAIA_POINT; + } + if (n_points >= 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + return GAIA_GEOMETRYCOLLECTION; + else + return GAIA_MULTIPOINT; + } + if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTILINESTRING) + return GAIA_MULTILINESTRING; + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + return GAIA_GEOMETRYCOLLECTION; + else + return GAIA_LINESTRING; + } + if (n_points == 0 && n_linestrings >= 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + return GAIA_GEOMETRYCOLLECTION; + else + return GAIA_MULTILINESTRING; + } + if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) + { + if (geom->DeclaredType == GAIA_MULTIPOLYGON) + return GAIA_MULTIPOLYGON; + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + return GAIA_GEOMETRYCOLLECTION; + else + return GAIA_POLYGON; + } + if (n_points == 0 && n_linestrings == 0 && n_polygons >= 1) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + return GAIA_GEOMETRYCOLLECTION; + else + return GAIA_MULTIPOLYGON; + } + return GAIA_GEOMETRYCOLLECTION; +} + +GAIAGEO_DECLARE int +gaiaIsEmpty (gaiaGeomCollPtr geom) +{ +/* checks if this GEOMETRYCOLLECTION is an empty one */ + if (!geom) + return 1; + if (geom->FirstPoint != NULL) + { + /* there is at least one point */ + return 0; + } + if (geom->FirstLinestring != NULL) + { + /* there is at least one linestring */ + return 0; + } + if (geom->FirstPolygon != NULL) + { + /* there is at least one polygon */ + return 0; + } + return 1; +} + +GAIAGEO_DECLARE int +gaiaIsClosed (gaiaLinestringPtr line) +{ +/* checks if this linestring is a closed one */ + double x0; + double y0; + double x1; + double y1; + double z; + double m; + if (!line) + return 0; + if (line->Points < 3) + return 0; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, 0, &x0, &y0, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, 0, &x0, &y0, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, 0, &x0, &y0, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, 0, &x0, &y0); + } + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, (line->Points - 1), &x1, &y1, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, (line->Points - 1), &x1, &y1, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, (line->Points - 1), &x1, &y1, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, (line->Points - 1), &x1, &y1); + } + if (x0 == x1 && y0 == y1) + return 1; + return 0; +} + +GAIAGEO_DECLARE int +gaiaMbrsEqual (gaiaGeomCollPtr mbr1, gaiaGeomCollPtr mbr2) +{ +/* +/ checks if two MBRs are identical +/ +/ returns 1 if TRUE +/ 0 if FALSE +*/ + if (mbr1->MinX != mbr2->MinX) + return 0; + if (mbr1->MinY != mbr2->MinY) + return 0; + if (mbr1->MaxX != mbr2->MaxX) + return 0; + if (mbr1->MaxY != mbr2->MaxY) + return 0; + return 1; +} + +GAIAGEO_DECLARE int +gaiaMbrsDisjoint (gaiaGeomCollPtr mbr1, gaiaGeomCollPtr mbr2) +{ +/* +/ checks if two MBRs are disjoint +/ +/ returns 1 if TRUE +/ 0 if FALSE +*/ + if (mbr1->MinX > mbr2->MaxX) + return 1; + if (mbr1->MinY > mbr2->MaxY) + return 1; + if (mbr1->MaxX < mbr2->MinX) + return 1; + if (mbr1->MaxY < mbr2->MinY) + return 1; + if (mbr2->MinX > mbr1->MaxX) + return 1; + if (mbr2->MinY > mbr1->MaxY) + return 1; + if (mbr2->MaxX < mbr1->MinX) + return 1; + if (mbr2->MaxY < mbr1->MinY) + return 1; + return 0; +} + +GAIAGEO_DECLARE int +gaiaMbrsTouches (gaiaGeomCollPtr mbr1, gaiaGeomCollPtr mbr2) +{ +/* +/ checks if two MBRs touches +/ +/ returns 1 if TRUE +/ 0 if FALSE +*/ + if (mbr1->MinX == mbr2->MinX) + return 1; + if (mbr1->MinY == mbr2->MinY) + return 1; + if (mbr1->MaxX == mbr2->MaxX) + return 1; + if (mbr1->MaxY == mbr2->MaxY) + return 1; + return 0; +} + +GAIAGEO_DECLARE int +gaiaMbrsIntersects (gaiaGeomCollPtr mbr1, gaiaGeomCollPtr mbr2) +{ +/* +/ checks if two MBRs intersect +/ +/ returns 1 if TRUE +/ 0 if FALSE +*/ + if (gaiaMbrsDisjoint (mbr1, mbr2)) + return 0; + return 1; +} + +GAIAGEO_DECLARE int +gaiaMbrsOverlaps (gaiaGeomCollPtr mbr1, gaiaGeomCollPtr mbr2) +{ +/* +/ checks if two MBRs overlap +/ +/ returns 1 if TRUE +/ 0 if FALSE +*/ + if (gaiaMbrsDisjoint (mbr1, mbr2)) + return 0; + if (mbr1->MinX >= mbr2->MinX && mbr1->MinX <= mbr2->MaxX) + return 1; + if (mbr1->MaxX >= mbr2->MinX && mbr1->MaxX <= mbr2->MaxX) + return 1; + if (mbr1->MinY >= mbr2->MinY && mbr1->MinY <= mbr2->MaxY) + return 1; + if (mbr1->MaxY >= mbr2->MinY && mbr1->MaxY <= mbr2->MaxY) + return 1; + return 0; +} + +GAIAGEO_DECLARE int +gaiaMbrsContains (gaiaGeomCollPtr mbr1, gaiaGeomCollPtr mbr2) +{ +/* +/ checks if MBR-1 completely contains MBR-2 +/ +/ returns 1 if TRUE +/ 0 if FALSE +*/ + int ok_1 = 0; + int ok_2 = 0; + int ok_3 = 0; + int ok_4 = 0; + if (mbr2->MinX >= mbr1->MinX && mbr2->MinX <= mbr1->MaxX) + ok_1 = 1; + if (mbr2->MaxX >= mbr1->MinX && mbr2->MaxX <= mbr1->MaxX) + ok_2 = 1; + if (mbr2->MinY >= mbr1->MinY && mbr2->MinY <= mbr1->MaxY) + ok_3 = 1; + if (mbr2->MaxY >= mbr1->MinY && mbr2->MaxY <= mbr1->MaxY) + ok_4 = 1; + if (ok_1 && ok_2 && ok_3 && ok_4) + return 1; + return 0; +} + +GAIAGEO_DECLARE int +gaiaMbrsWithin (gaiaGeomCollPtr mbr1, gaiaGeomCollPtr mbr2) +{ +/* +/ checks if MBR-2 completely contains MBR-1 +/ +/ returns 1 if TRUE +/ 0 if FALSE +*/ + int ok_1 = 0; + int ok_2 = 0; + int ok_3 = 0; + int ok_4 = 0; + if (mbr1->MinX >= mbr2->MinX && mbr1->MinX <= mbr2->MaxX) + ok_1 = 1; + if (mbr1->MaxX >= mbr2->MinX && mbr1->MaxX <= mbr2->MaxX) + ok_2 = 1; + if (mbr1->MinY >= mbr2->MinY && mbr1->MinY <= mbr2->MaxY) + ok_3 = 1; + if (mbr1->MaxY >= mbr2->MinY && mbr1->MaxY <= mbr2->MaxY) + ok_4 = 1; + if (ok_1 && ok_2 && ok_3 && ok_4) + return 1; + return 0; +} + +GAIAGEO_DECLARE void +gaiaMakePoint (double x, double y, int srid, unsigned char **result, int *size) +{ +/* build a Blob encoded Geometry representing a POINT */ + unsigned char *ptr; + int endian_arch = gaiaEndianArch (); +/* computing the Blob size and then allocating it */ + *size = 44; /* header size */ + *size += (sizeof (double) * 2); /* [x,y] coords */ + *result = malloc (*size); + ptr = *result; +/* setting the Blob value */ + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, x, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, y, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, x, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, y, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POINT, 1, endian_arch); /* class POINT */ + gaiaExport64 (ptr + 43, x, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 51, y, 1, endian_arch); /* Y */ + *(ptr + 59) = GAIA_MARK_END; /* END signature */ +} + +GAIAGEO_DECLARE void +gaiaMakePointZ (double x, double y, double z, int srid, unsigned char **result, + int *size) +{ +/* build a Blob encoded Geometry representing a POINT Z */ + unsigned char *ptr; + int endian_arch = gaiaEndianArch (); +/* computing the Blob size and then allocating it */ + *size = 44; /* header size */ + *size += (sizeof (double) * 3); /* [x,y,z] coords */ + *result = malloc (*size); + ptr = *result; +/* setting the Blob value */ + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, x, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, y, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, x, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, y, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POINTZ, 1, endian_arch); /* class POINT */ + gaiaExport64 (ptr + 43, x, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 51, y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 59, z, 1, endian_arch); /* Z */ + *(ptr + 67) = GAIA_MARK_END; /* END signature */ +} + +GAIAGEO_DECLARE void +gaiaMakePointM (double x, double y, double m, int srid, unsigned char **result, + int *size) +{ +/* build a Blob encoded Geometry representing a POINT M */ + unsigned char *ptr; + int endian_arch = gaiaEndianArch (); +/* computing the Blob size and then allocating it */ + *size = 44; /* header size */ + *size += (sizeof (double) * 3); /* [x,y,z] coords */ + *result = malloc (*size); + ptr = *result; +/* setting the Blob value */ + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, x, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, y, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, x, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, y, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POINTM, 1, endian_arch); /* class POINT */ + gaiaExport64 (ptr + 43, x, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 51, y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 59, m, 1, endian_arch); /* M */ + *(ptr + 67) = GAIA_MARK_END; /* END signature */ +} + +GAIAGEO_DECLARE void +gaiaMakePointZM (double x, double y, double z, double m, int srid, + unsigned char **result, int *size) +{ +/* build a Blob encoded Geometry representing a POINT ZM */ + unsigned char *ptr; + int endian_arch = gaiaEndianArch (); +/* computing the Blob size and then allocating it */ + *size = 44; /* header size */ + *size += (sizeof (double) * 4); /* [x,y,z,m] coords */ + *result = malloc (*size); + ptr = *result; +/* setting the Blob value */ + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, x, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, y, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, x, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, y, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POINTZM, 1, endian_arch); /* class POINT */ + gaiaExport64 (ptr + 43, x, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 51, y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 59, z, 1, endian_arch); /* Z */ + gaiaExport64 (ptr + 67, m, 1, endian_arch); /* M */ + *(ptr + 75) = GAIA_MARK_END; /* END signature */ +} + +GAIAGEO_DECLARE void +gaiaMakeLine (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, + unsigned char **result, int *size) +{ +/* build a Blob encoded Geometry representing a LINESTRING (segment) */ + int pts; + int lns; + int pgs; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaGeomCollPtr g; + int dims0; + int dims1; + int dims; + double x0; + double y0; + double z0; + double m0; + double x1; + double y1; + double z1; + double m1; + +/* checking if GEOM-1 simply is a POINT */ + if (geom1 == NULL) + { + *result = NULL; + *size = 0; + return; + } + pts = 0; + lns = 0; + pgs = 0; + pt = geom1->FirstPoint; + while (pt) + { + pts++; + x0 = pt->X; + y0 = pt->Y; + z0 = pt->Z; + m0 = pt->M; + dims0 = pt->DimensionModel; + pt = pt->Next; + } + ln = geom1->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + pg = geom1->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts == 1 && lns == 0 && pgs == 0) + ; + else + { + /* failure: not a simple POINT */ + *result = NULL; + *size = 0; + return; + } + +/* checking if GEOM-2 simply is a POINT */ + if (geom2 == NULL) + { + *result = NULL; + *size = 0; + return; + } + pts = 0; + lns = 0; + pgs = 0; + pt = geom2->FirstPoint; + while (pt) + { + pts++; + x1 = pt->X; + y1 = pt->Y; + z1 = pt->Z; + m1 = pt->M; + dims1 = pt->DimensionModel; + pt = pt->Next; + } + ln = geom2->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + pg = geom2->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts == 1 && lns == 0 && pgs == 0) + ; + else + { + /* failure: not a simple POINT */ + *result = NULL; + *size = 0; + return; + } + +/* building a new Geometry */ + if (dims0 == dims1) + dims = dims0; + else + { + if (dims0 == GAIA_XY_Z_M || dims1 == GAIA_XY_Z_M) + dims = GAIA_XY_Z_M; + else if (dims0 == GAIA_XY_Z && dims1 == GAIA_XY_M) + dims = GAIA_XY_Z_M; + else if (dims0 == GAIA_XY_M && dims1 == GAIA_XY_Z) + dims = GAIA_XY_Z_M; + else if (dims0 == GAIA_XY_Z) + dims = GAIA_XY_Z; + else if (dims1 == GAIA_XY_Z) + dims = GAIA_XY_Z; + else if (dims0 == GAIA_XY_M) + dims = GAIA_XY_M; + else if (dims1 == GAIA_XY_M) + dims = GAIA_XY_M; + else + dims = GAIA_XY; + } + if (dims == GAIA_XY_Z_M) + g = gaiaAllocGeomCollXYZM (); + else if (dims == GAIA_XY_Z) + g = gaiaAllocGeomCollXYZ (); + else if (dims == GAIA_XY_M) + g = gaiaAllocGeomCollXYM (); + else + g = gaiaAllocGeomColl (); + g->Srid = geom1->Srid; + g->DeclaredType = GAIA_LINESTRING; + ln = gaiaAddLinestringToGeomColl (g, 2); + if (dims == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, 0, x0, y0, z0, m0); + gaiaSetPointXYZM (ln->Coords, 1, x1, y1, z1, m1); + } + else if (dims == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, 0, x0, y0, z0); + gaiaSetPointXYZ (ln->Coords, 1, x1, y1, z1); + } + else if (dims == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, 0, x0, y0, m0); + gaiaSetPointXYM (ln->Coords, 1, x1, y1, m1); + } + else + { + gaiaSetPoint (ln->Coords, 0, x0, y0); + gaiaSetPoint (ln->Coords, 1, x1, y1); + } +/* converting to Binary Blob */ + gaiaToSpatiaLiteBlobWkb (g, result, size); + gaiaFreeGeomColl (g); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaMergeGeometries (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ + return gaiaMergeGeometries_r (NULL, geom1, geom2); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaMergeGeometries_r (const void *cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* mergine two generic Geometries into a single one */ + gaiaGeomCollPtr result; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaLinestringPtr new_ln; + gaiaPolygonPtr pg; + gaiaPolygonPtr new_pg; + gaiaRingPtr rng; + gaiaRingPtr new_rng; + int dims1; + int dims2; + int dims; + double x; + double y; + double z; + double m; + int iv; + int ib; + + if (geom1 == NULL || geom2 == NULL) + return NULL; + if (cache != NULL) + { + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return NULL; + } + else + { + if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) + return NULL; + } + dims1 = geom1->DimensionModel; + dims2 = geom2->DimensionModel; +/* building a new Geometry */ + if (dims1 == dims2) + dims = dims1; + else + { + if (dims1 == GAIA_XY_Z_M || dims2 == GAIA_XY_Z_M) + dims = GAIA_XY_Z_M; + else if (dims1 == GAIA_XY_Z && dims2 == GAIA_XY_M) + dims = GAIA_XY_Z_M; + else if (dims1 == GAIA_XY_M && dims2 == GAIA_XY_Z) + dims = GAIA_XY_Z_M; + else if (dims1 == GAIA_XY_Z) + dims = GAIA_XY_Z; + else if (dims2 == GAIA_XY_Z) + dims = GAIA_XY_Z; + else if (dims1 == GAIA_XY_M) + dims = GAIA_XY_M; + else if (dims2 == GAIA_XY_M) + dims = GAIA_XY_M; + else + dims = GAIA_XY; + } + if (dims == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else if (dims == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (dims == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else + result = gaiaAllocGeomColl (); + result->Srid = geom1->Srid; + + pt = geom1->FirstPoint; + while (pt) + { + /* copying POINTs from GEOM-1 */ + z = 0.0; + m = 0.0; + if (pt->DimensionModel == GAIA_XY_Z_M) + { + x = pt->X; + y = pt->Y; + z = pt->Z; + m = pt->M; + } + else if (pt->DimensionModel == GAIA_XY_Z) + { + x = pt->X; + y = pt->Y; + z = pt->Z; + } + else if (pt->DimensionModel == GAIA_XY_M) + { + x = pt->X; + y = pt->Y; + m = pt->M; + } + else + { + x = pt->X; + y = pt->Y; + } + if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaAddPointToGeomCollXYZM (result, x, y, z, m); + } + else if (result->DimensionModel == GAIA_XY_Z) + { + gaiaAddPointToGeomCollXYZ (result, x, y, z); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaAddPointToGeomCollXYM (result, x, y, m); + } + else + { + gaiaAddPointToGeomColl (result, x, y); + } + pt = pt->Next; + } + + pt = geom2->FirstPoint; + while (pt) + { + /* copying POINTs from GEOM-2 */ + z = 0.0; + m = 0.0; + if (pt->DimensionModel == GAIA_XY_Z_M) + { + x = pt->X; + y = pt->Y; + z = pt->Z; + m = pt->M; + } + else if (pt->DimensionModel == GAIA_XY_Z) + { + x = pt->X; + y = pt->Y; + z = pt->Z; + } + else if (pt->DimensionModel == GAIA_XY_M) + { + x = pt->X; + y = pt->Y; + m = pt->M; + } + else + { + x = pt->X; + y = pt->Y; + } + if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaAddPointToGeomCollXYZM (result, x, y, z, m); + } + else if (result->DimensionModel == GAIA_XY_Z) + { + gaiaAddPointToGeomCollXYZ (result, x, y, z); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaAddPointToGeomCollXYM (result, x, y, m); + } + else + { + gaiaAddPointToGeomColl (result, x, y); + } + pt = pt->Next; + } + + ln = geom1->FirstLinestring; + while (ln) + { + /* copying LINESTRINGs from GEOM-1 */ + new_ln = gaiaAddLinestringToGeomColl (result, ln->Points); + for (iv = 0; iv < ln->Points; iv++) + { + z = 0.0; + m = 0.0; + if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + if (new_ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); + } + else if (new_ln->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); + } + else if (new_ln->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); + } + else + { + gaiaSetPoint (new_ln->Coords, iv, x, y); + } + } + ln = ln->Next; + } + + ln = geom2->FirstLinestring; + while (ln) + { + /* copying LINESTRINGs from GEOM-2 */ + new_ln = gaiaAddLinestringToGeomColl (result, ln->Points); + for (iv = 0; iv < ln->Points; iv++) + { + z = 0.0; + m = 0.0; + if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + if (new_ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); + } + else if (new_ln->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); + } + else if (new_ln->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); + } + else + { + gaiaSetPoint (new_ln->Coords, iv, x, y); + } + } + ln = ln->Next; + } + + pg = geom1->FirstPolygon; + while (pg) + { + /* copying POLYGONs from GEOM-1 */ + rng = pg->Exterior; + new_pg = + gaiaAddPolygonToGeomColl (result, rng->Points, pg->NumInteriors); + new_rng = new_pg->Exterior; + for (iv = 0; iv < rng->Points; iv++) + { + /* Exterior Ring */ + z = 0.0; + m = 0.0; + if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + if (new_rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (new_rng->Coords, iv, x, y, z, m); + } + else if (new_rng->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (new_rng->Coords, iv, x, y, z); + } + else if (new_rng->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (new_rng->Coords, iv, x, y, m); + } + else + { + gaiaSetPoint (new_rng->Coords, iv, x, y); + } + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + /* Interior Rings */ + rng = pg->Interiors + ib; + new_rng = gaiaAddInteriorRing (new_pg, ib, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + z = 0.0; + m = 0.0; + if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + if (new_rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (new_rng->Coords, iv, x, y, z, m); + } + else if (new_rng->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (new_rng->Coords, iv, x, y, z); + } + else if (new_rng->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (new_rng->Coords, iv, x, y, m); + } + else + { + gaiaSetPoint (new_rng->Coords, iv, x, y); + } + } + } + pg = pg->Next; + } + + pg = geom2->FirstPolygon; + while (pg) + { + /* copying POLYGONs from GEOM-2 */ + rng = pg->Exterior; + new_pg = + gaiaAddPolygonToGeomColl (result, rng->Points, pg->NumInteriors); + new_rng = new_pg->Exterior; + for (iv = 0; iv < rng->Points; iv++) + { + /* Exterior Ring */ + z = 0.0; + m = 0.0; + if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + if (new_rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (new_rng->Coords, iv, x, y, z, m); + } + else if (new_rng->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (new_rng->Coords, iv, x, y, z); + } + else if (new_rng->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (new_rng->Coords, iv, x, y, m); + } + else + { + gaiaSetPoint (new_rng->Coords, iv, x, y); + } + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + /* Interior Rings */ + rng = pg->Interiors + ib; + new_rng = gaiaAddInteriorRing (new_pg, ib, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + z = 0.0; + m = 0.0; + if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + if (new_rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (new_rng->Coords, iv, x, y, z, m); + } + else if (new_rng->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (new_rng->Coords, iv, x, y, z); + } + else if (new_rng->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (new_rng->Coords, iv, x, y, m); + } + else + { + gaiaSetPoint (new_rng->Coords, iv, x, y); + } + } + } + pg = pg->Next; + } + + return result; +} + +GAIAGEO_DECLARE void +gaiaBuildMbr (double x1, double y1, double x2, double y2, int srid, + unsigned char **result, int *size) +{ +/* build a Blob encoded Geometry representing an MBR */ + unsigned char *ptr; + double minx; + double maxx; + double miny; + double maxy; + int endian_arch = gaiaEndianArch (); +/* computing MinMax coords */ + if (x1 > x2) + { + maxx = x1; + minx = x2; + } + else + { + minx = x1; + maxx = x2; + } + if (y1 > y2) + { + maxy = y1; + miny = y2; + } + else + { + miny = y1; + maxy = y2; + } +/* computing the Blob size and then allocating it */ + *size = 44; /* header size */ + *size += (8 + ((sizeof (double) * 2) * 5)); /* # rings + # points + [x.y] array - exterior ring */ + *result = malloc (*size); + ptr = *result; +/* setting the Blob value */ + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, minx, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, miny, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, maxx, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, maxy, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POLYGON, 1, endian_arch); /* class POLYGON */ + gaiaExport32 (ptr + 43, 1, 1, endian_arch); /* # rings */ + gaiaExport32 (ptr + 47, 5, 1, endian_arch); /* # points - exterior ring */ + ptr += 51; +/* setting Envelope points */ + gaiaExport64 (ptr, minx, 1, endian_arch); + gaiaExport64 (ptr + 8, miny, 1, endian_arch); + ptr += 16; + gaiaExport64 (ptr, maxx, 1, endian_arch); + gaiaExport64 (ptr + 8, miny, 1, endian_arch); + ptr += 16; + gaiaExport64 (ptr, maxx, 1, endian_arch); + gaiaExport64 (ptr + 8, maxy, 1, endian_arch); + ptr += 16; + gaiaExport64 (ptr, minx, 1, endian_arch); + gaiaExport64 (ptr + 8, maxy, 1, endian_arch); + ptr += 16; + gaiaExport64 (ptr, minx, 1, endian_arch); + gaiaExport64 (ptr + 8, miny, 1, endian_arch); + ptr += 16; + *ptr = GAIA_MARK_END; /* END signature */ +} + +GAIAGEO_DECLARE void +gaiaBuildCircleMbr (double x, double y, double radius, int srid, + unsigned char **result, int *size) +{ +/* build a Blob encoded Geometry representing an MBR */ + int sz; + unsigned char *res = NULL; + double minx = x - radius; + double maxx = x + radius; + double miny = y - radius; + double maxy = y + radius; + gaiaBuildMbr (minx, miny, maxx, maxy, srid, &res, &sz); + if (!res) + { + *result = NULL; + *size = 0; + } + else + { + *result = res; + *size = sz; + } +} + +GAIAGEO_DECLARE void +gaiaBuildFilterMbr (double x1, double y1, double x2, double y2, int mode, + unsigned char **result, int *size) +{ +/* build a filter for an MBR */ + unsigned char *ptr; + double minx; + double maxx; + double miny; + double maxy; + int endian_arch = gaiaEndianArch (); + char filter = GAIA_FILTER_MBR_WITHIN; + if (mode == GAIA_FILTER_MBR_CONTAINS) + filter = GAIA_FILTER_MBR_CONTAINS; + if (mode == GAIA_FILTER_MBR_INTERSECTS) + filter = GAIA_FILTER_MBR_INTERSECTS; + if (mode == GAIA_FILTER_MBR_DECLARE) + filter = GAIA_FILTER_MBR_DECLARE; +/* computing MinMax coords */ + if (x1 > x2) + { + maxx = x1; + minx = x2; + } + else + { + minx = x1; + maxx = x2; + } + if (y1 > y2) + { + maxy = y1; + miny = y2; + } + else + { + miny = y1; + maxy = y2; + } +/* computing the Blob size and then allocating it */ + *size = 37; /* MBR filter size */ + *result = malloc (*size); + ptr = *result; +/* setting the Blob value */ + *ptr = filter; /* signature */ + ptr++; + gaiaExport64 (ptr, minx, 1, endian_arch); /* MBR - minimum X */ + ptr += 8; + *ptr = filter; /* signature */ + ptr++; + gaiaExport64 (ptr, miny, 1, endian_arch); /* MBR - minimum Y */ + ptr += 8; + *ptr = filter; /* signature */ + ptr++; + gaiaExport64 (ptr, maxx, 1, endian_arch); /* MBR - maximum X */ + ptr += 8; + *ptr = filter; /* signature */ + ptr++; + gaiaExport64 (ptr, maxy, 1, endian_arch); /* MBR - maximum Y */ + ptr += 8; + *ptr = filter; /* signature */ +} + + +GAIAGEO_DECLARE int +gaiaParseFilterMbr (unsigned char *ptr, int size, double *minx, double *miny, + double *maxx, double *maxy, int *mode) +{ +/* parsing a filter for an MBR */ + char decl_mode; + int endian_arch = gaiaEndianArch (); + if (size != 37) + return 0; /* cannot be an MBR Filter */ + if (!ptr) + return 0; /* cannot be an MBR Filter */ + decl_mode = *(ptr + 0); + if (decl_mode == GAIA_FILTER_MBR_WITHIN) + ; + else if (decl_mode == GAIA_FILTER_MBR_CONTAINS) + ; + else if (decl_mode == GAIA_FILTER_MBR_INTERSECTS) + ; + else if (decl_mode == GAIA_FILTER_MBR_DECLARE) + ; + else + return 0; /* cannot be an MBR Filter */ + if (*(ptr + 9) + == decl_mode + && *(ptr + + 18) == + decl_mode && *(ptr + 27) == decl_mode && *(ptr + 36) == decl_mode) + ; + else + return 0; /* cannot be an MBR Filter */ + *mode = decl_mode; + *minx = gaiaImport64 (ptr + 1, 1, endian_arch); + *miny = gaiaImport64 (ptr + 10, 1, endian_arch); + *maxx = gaiaImport64 (ptr + 19, 1, endian_arch); + *maxy = gaiaImport64 (ptr + 28, 1, endian_arch); + return 1; +} + +GAIAGEO_DECLARE int +gaiaGetMbrMinX (const unsigned char *blob, unsigned int size, double *minx) +{ +/* returns the MinX coordinate value for a Blob encoded Geometry */ + int little_endian; + int endian_arch = gaiaEndianArch (); + if (size < 45) + return 0; /* cannot be an internal BLOB WKB geometry */ + if (*(blob + 0) != GAIA_MARK_START) + return 0; /* failed to recognize START signature */ + if (*(blob + (size - 1)) != GAIA_MARK_END) + return 0; /* failed to recognize END signature */ + if (*(blob + 38) != GAIA_MARK_MBR) + return 0; /* failed to recognize MBR signature */ + if (*(blob + 1) == GAIA_LITTLE_ENDIAN) + little_endian = 1; + else if (*(blob + 1) == GAIA_BIG_ENDIAN) + little_endian = 0; + else + return 0; /* unknown encoding; neither little-endian nor big-endian */ + *minx = gaiaImport64 (blob + 6, little_endian, endian_arch); + return 1; +} + +GAIAGEO_DECLARE int +gaiaGetMbrMaxX (const unsigned char *blob, unsigned int size, double *maxx) +{ +/* returns the MaxX coordinate value for a Blob encoded Geometry */ + int little_endian; + int endian_arch = gaiaEndianArch (); + if (size < 45) + return 0; /* cannot be an internal BLOB WKB geometry */ + if (*(blob + 0) != GAIA_MARK_START) + return 0; /* failed to recognize START signature */ + if (*(blob + (size - 1)) != GAIA_MARK_END) + return 0; /* failed to recognize END signature */ + if (*(blob + 38) != GAIA_MARK_MBR) + return 0; /* failed to recognize MBR signature */ + if (*(blob + 1) == GAIA_LITTLE_ENDIAN) + little_endian = 1; + else if (*(blob + 1) == GAIA_BIG_ENDIAN) + little_endian = 0; + else + return 0; /* unknown encoding; neither little-endian nor big-endian */ + *maxx = gaiaImport64 (blob + 22, little_endian, endian_arch); + return 1; +} + +GAIAGEO_DECLARE int +gaiaGetMbrMinY (const unsigned char *blob, unsigned int size, double *miny) +{ +/* returns the MinY coordinate value for a Blob encoded Geometry */ + int little_endian; + int endian_arch = gaiaEndianArch (); + if (size < 45) + return 0; /* cannot be an internal BLOB WKB geometry */ + if (*(blob + 0) != GAIA_MARK_START) + return 0; /* failed to recognize START signature */ + if (*(blob + (size - 1)) != GAIA_MARK_END) + return 0; /* failed to recognize END signature */ + if (*(blob + 38) != GAIA_MARK_MBR) + return 0; /* failed to recognize MBR signature */ + if (*(blob + 1) == GAIA_LITTLE_ENDIAN) + little_endian = 1; + else if (*(blob + 1) == GAIA_BIG_ENDIAN) + little_endian = 0; + else + return 0; /* unknown encoding; neither little-endian nor big-endian */ + *miny = gaiaImport64 (blob + 14, little_endian, endian_arch); + return 1; +} + +GAIAGEO_DECLARE int +gaiaGetMbrMaxY (const unsigned char *blob, unsigned int size, double *maxy) +{ +/* returns the MaxY coordinate value for a Blob encoded Geometry */ + int little_endian; + int endian_arch = gaiaEndianArch (); + if (size < 45) + return 0; /* cannot be an internal BLOB WKB geometry */ + if (*(blob + 0) != GAIA_MARK_START) + return 0; /* failed to recognize START signature */ + if (*(blob + (size - 1)) != GAIA_MARK_END) + return 0; /* failed to recognize END signature */ + if (*(blob + 38) != GAIA_MARK_MBR) + return 0; /* failed to recognize MBR signature */ + if (*(blob + 1) == GAIA_LITTLE_ENDIAN) + little_endian = 1; + else if (*(blob + 1) == GAIA_BIG_ENDIAN) + little_endian = 0; + else + return 0; /* unknown encoding; neither little-endian nor big-endian */ + *maxy = gaiaImport64 (blob + 30, little_endian, endian_arch); + return 1; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaLocateBetweenMeasures (gaiaGeomCollPtr geom, double m_start, double m_end) +{ +/* extracts points/linestrings accordingly to a range of measures */ + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaLinestringPtr new_line; + gaiaGeomCollPtr new_geom = NULL; + gaiaDynamicLinePtr dyn = NULL; + int iv; + double x; + double y; + double z; + double m; + if (!geom) + return NULL; + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + return NULL; + if (geom->FirstPolygon != NULL) + return NULL; + if (geom->DimensionModel == GAIA_XY_M) + new_geom = gaiaAllocGeomCollXYM (); + else if (geom->DimensionModel == GAIA_XY_Z_M) + new_geom = gaiaAllocGeomCollXYZM (); + else + return NULL; + new_geom->Srid = geom->Srid; + new_geom->DeclaredType = geom->DeclaredType; + pt = geom->FirstPoint; + while (pt) + { + /* extracting POINTs */ + if (pt->M >= m_start && pt->M <= m_end) + { + if (geom->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (new_geom, pt->X, pt->Y, pt->M); + else if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (new_geom, pt->X, pt->Y, + pt->Z, pt->M); + } + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + /* extracting LINESTRINGs */ + for (iv = 0; iv < ln->Points; iv++) + { + z = 0.0; + if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + if (m >= m_start && m <= m_end) + { + /* found a valid vertex */ + if (dyn == NULL) + dyn = gaiaAllocDynamicLine (); + if (ln->DimensionModel == GAIA_XY_Z_M) + gaiaAppendPointZMToDynamicLine (dyn, x, y, z, m); + else + gaiaAppendPointMToDynamicLine (dyn, x, y, m); + } + else + { + if (dyn != NULL) + { + /* evaluting the latest sequence found */ + int cnt = 0; + pt = dyn->First; + while (pt) + { + /* counting how many points are there */ + cnt++; + pt = pt->Next; + } + if (cnt > 1) + { + /* creating a Linestring */ + new_line = + gaiaAddLinestringToGeomColl (new_geom, + cnt); + cnt = 0; + pt = dyn->First; + while (pt) + { + + if (new_line->DimensionModel == + GAIA_XY_Z_M) + { + gaiaSetPointXYZM + (new_line->Coords, cnt, pt->X, + pt->Y, pt->Z, pt->M); + } + else + { + gaiaSetPointXYM (new_line->Coords, + cnt, pt->X, + pt->Y, pt->M); + } + cnt++; + pt = pt->Next; + } + } + else if (cnt == 1) + { + /* creating a Point */ + pt = dyn->First; + if (geom->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (new_geom, + pt->X, pt->Y, + pt->M); + else if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (new_geom, + pt->X, pt->Y, + pt->Z, pt->M); + } + gaiaFreeDynamicLine (dyn); + dyn = NULL; + } + } + } + if (dyn != NULL) + { + /* evaluting the latest sequence found */ + int cnt = 0; + pt = dyn->First; + while (pt) + { + /* counting how many points are there */ + cnt++; + pt = pt->Next; + } + if (cnt > 1) + { + /* creating a Linestring */ + new_line = gaiaAddLinestringToGeomColl (new_geom, cnt); + cnt = 0; + pt = dyn->First; + while (pt) + { + + if (new_line->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (new_line->Coords, cnt, + pt->X, pt->Y, pt->Z, pt->M); + } + else + { + gaiaSetPointXYM (new_line->Coords, + cnt, pt->X, pt->Y, pt->M); + } + cnt++; + pt = pt->Next; + } + } + else if (cnt == 1) + { + /* creating a Point */ + pt = dyn->First; + if (geom->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (new_geom, + pt->X, pt->Y, pt->M); + else if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (new_geom, + pt->X, pt->Y, + pt->Z, pt->M); + } + gaiaFreeDynamicLine (dyn); + dyn = NULL; + } + ln = ln->Next; + } + if (new_geom->FirstPoint == NULL && new_geom->FirstLinestring == NULL) + { + /* empty result: returning NULL */ + gaiaFreeGeomColl (new_geom); + return NULL; + } + return new_geom; +} + +static int +check_closed_multi_linestring (gaiaGeomCollPtr geom, int single) +{ +/* check if : +/ - this geometry is a (multi) Linestring +/ - all Linestrings are effectively closed +*/ + int pts = 0; + int lns = 0; + int pgs = 0; + int closed = 0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + if (gaiaIsClosed (ln)) + closed++; + lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (closed != lns) + return 0; + if (single) + { + if (pts == 0 && lns == 1 && pgs == 0) + return lns; + } + else + { + if (pts == 0 && lns >= 1 && pgs == 0) + return lns; + } + return 0; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaMakePolygon (gaiaGeomCollPtr exterior, gaiaGeomCollPtr interiors) +{ +/* reassembling a Polygon from closed Linestrings */ + gaiaGeomCollPtr geom; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + gaiaLinestringPtr ln; + int iv; + double x; + double y; + double z; + double m; + int num_interiors = 0; + int ib; + + if (exterior == NULL) + return NULL; + if (!check_closed_multi_linestring (exterior, 1)) + return NULL; + if (interiors != NULL) + { + num_interiors = check_closed_multi_linestring (interiors, 0); + if (!num_interiors) + return NULL; + } + +/* reassembling the Polygon */ + if (exterior->DimensionModel == GAIA_XY_Z) + geom = gaiaAllocGeomCollXYZ (); + else if (exterior->DimensionModel == GAIA_XY_M) + geom = gaiaAllocGeomCollXYM (); + else if (exterior->DimensionModel == GAIA_XY_Z_M) + geom = gaiaAllocGeomCollXYZM (); + else + geom = gaiaAllocGeomColl (); + geom->Srid = exterior->Srid; + ln = exterior->FirstLinestring; + pg = gaiaAddPolygonToGeomColl (geom, ln->Points, num_interiors); + rng = pg->Exterior; + for (iv = 0; iv < ln->Points; iv++) + { + /* exterior ring */ + m = 0.0; + z = 0.0; + switch (ln->DimensionModel) + { + case GAIA_XY: + gaiaGetPoint (ln->Coords, iv, &x, &y); + break; + case GAIA_XY_Z: + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + break; + case GAIA_XY_M: + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + break; + default: + return 0; + }; + switch (rng->DimensionModel) + { + case GAIA_XY: + gaiaSetPoint (rng->Coords, iv, x, y); + break; + case GAIA_XY_Z: + gaiaSetPointXYZ (rng->Coords, iv, x, y, z); + break; + case GAIA_XY_M: + gaiaSetPointXYM (rng->Coords, iv, x, y, m); + break; + case GAIA_XY_Z_M: + gaiaSetPointXYZM (rng->Coords, iv, x, y, z, m); + break; + }; + } + if (interiors != NULL) + { + /* setting up the interior rings */ + ib = 0; + ln = interiors->FirstLinestring; + while (ln) + { + rng = gaiaAddInteriorRing (pg, ib, ln->Points); + for (iv = 0; iv < ln->Points; iv++) + { + m = 0.0; + z = 0.0; + switch (ln->DimensionModel) + { + case GAIA_XY: + gaiaGetPoint (ln->Coords, iv, &x, &y); + break; + case GAIA_XY_Z: + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + break; + case GAIA_XY_M: + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + break; + default: + return 0; + }; + switch (rng->DimensionModel) + { + case GAIA_XY: + gaiaSetPoint (rng->Coords, iv, x, y); + break; + case GAIA_XY_Z: + gaiaSetPointXYZ (rng->Coords, iv, x, y, z); + break; + case GAIA_XY_M: + gaiaSetPointXYM (rng->Coords, iv, x, y, m); + break; + case GAIA_XY_Z_M: + gaiaSetPointXYZM (rng->Coords, iv, x, y, z, m); + break; + }; + } + ib++; + ln = ln->Next; + } + } + return geom; +} diff --git a/src/spatialite/src/gaiageo/gg_geoscvt.c b/src/spatialite/src/gaiageo/gg_geoscvt.c new file mode 100644 index 0000000..12bad90 --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_geoscvt.c @@ -0,0 +1,2109 @@ +/* + + gg_geoscvt.c -- Gaia / GEOS conversion [Geometry] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#ifndef OMIT_GEOS /* including GEOS */ +#include +#endif + +#include +#include + +#include + +#ifndef OMIT_GEOS /* including GEOS */ + +static GEOSGeometry * +toGeosGeometry (const void *cache, GEOSContextHandle_t handle, + const gaiaGeomCollPtr gaia, int mode) +{ +/* converting a GAIA Geometry into a GEOS Geometry */ + int pts = 0; + int lns = 0; + int pgs = 0; + int type; + int geos_type; + unsigned int dims; + int iv; + int ib; + int nItem; + double x; + double y; + double z; + double m; + double x0; + double y0; + double z0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + GEOSGeometry *geos; + GEOSGeometry *geos_ext; + GEOSGeometry *geos_int; + GEOSGeometry *geos_item; + GEOSGeometry **geos_holes; + GEOSGeometry **geos_coll; + GEOSCoordSequence *cs; + int ring_points; + int n_items; + if (!gaia) + return NULL; + pt = gaia->FirstPoint; + while (pt) + { + /* counting how many POINTs are there */ + pts++; + pt = pt->Next; + } + ln = gaia->FirstLinestring; + while (ln) + { + /* counting how many LINESTRINGs are there */ + lns++; + ln = ln->Next; + } + pg = gaia->FirstPolygon; + while (pg) + { + /* counting how many POLYGONs are there */ + pgs++; + pg = pg->Next; + } + if (mode == GAIA2GEOS_ONLY_POINTS && pts == 0) + return NULL; + if (mode == GAIA2GEOS_ONLY_LINESTRINGS && lns == 0) + return NULL; + if (mode == GAIA2GEOS_ONLY_POLYGONS && pgs == 0) + return NULL; + if (pts == 0 && lns == 0 && pgs == 0) + return NULL; + else if (pts == 1 && lns == 0 && pgs == 0) + { + if (gaia->DeclaredType == GAIA_MULTIPOINT) + type = GAIA_MULTIPOINT; + else if (gaia->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_POINT; + } + else if (pts == 0 && lns == 1 && pgs == 0) + { + if (gaia->DeclaredType == GAIA_MULTILINESTRING) + type = GAIA_MULTILINESTRING; + else if (gaia->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_LINESTRING; + } + else if (pts == 0 && lns == 0 && pgs == 1) + { + if (gaia->DeclaredType == GAIA_MULTIPOLYGON) + type = GAIA_MULTIPOLYGON; + else if (gaia->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_POLYGON; + } + else if (pts > 1 && lns == 0 && pgs == 0) + { + if (gaia->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_MULTIPOINT; + } + else if (pts == 0 && lns > 1 && pgs == 0) + { + if (gaia->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_MULTILINESTRING; + } + else if (pts == 0 && lns == 0 && pgs > 1) + { + if (gaia->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_MULTIPOLYGON; + } + else + type = GAIA_GEOMETRYCOLLECTION; + switch (gaia->DimensionModel) + { + case GAIA_XY_Z: + case GAIA_XY_Z_M: + dims = 3; + break; + default: + dims = 2; + break; + }; + switch (type) + { + case GAIA_POINT: + if (mode == GAIA2GEOS_ALL || mode == GAIA2GEOS_ONLY_POINTS) + { + pt = gaia->FirstPoint; + if (handle != NULL) + { + cs = GEOSCoordSeq_create_r (handle, 1, dims); + switch (gaia->DimensionModel) + { + case GAIA_XY_Z: + case GAIA_XY_Z_M: + GEOSCoordSeq_setX_r (handle, cs, 0, pt->X); + GEOSCoordSeq_setY_r (handle, cs, 0, pt->Y); + GEOSCoordSeq_setZ_r (handle, cs, 0, pt->Z); + break; + default: + GEOSCoordSeq_setX_r (handle, cs, 0, pt->X); + GEOSCoordSeq_setY_r (handle, cs, 0, pt->Y); + break; + }; + geos = GEOSGeom_createPoint_r (handle, cs); + } + else + { + cs = GEOSCoordSeq_create (1, dims); + switch (gaia->DimensionModel) + { + case GAIA_XY_Z: + case GAIA_XY_Z_M: + GEOSCoordSeq_setX (cs, 0, pt->X); + GEOSCoordSeq_setY (cs, 0, pt->Y); + GEOSCoordSeq_setZ (cs, 0, pt->Z); + break; + default: + GEOSCoordSeq_setX (cs, 0, pt->X); + GEOSCoordSeq_setY (cs, 0, pt->Y); + break; + }; + geos = GEOSGeom_createPoint (cs); + } + } + break; + case GAIA_LINESTRING: + if (mode == GAIA2GEOS_ALL || mode == GAIA2GEOS_ONLY_LINESTRINGS) + { + ln = gaia->FirstLinestring; + if (handle != NULL) + cs = GEOSCoordSeq_create_r (handle, ln->Points, dims); + else + cs = GEOSCoordSeq_create (ln->Points, dims); + for (iv = 0; iv < ln->Points; iv++) + { + switch (ln->DimensionModel) + { + case GAIA_XY_Z: + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + GEOSCoordSeq_setZ_r (handle, cs, iv, z); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + GEOSCoordSeq_setZ (cs, iv, z); + } + break; + case GAIA_XY_M: + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + } + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + GEOSCoordSeq_setZ_r (handle, cs, iv, z); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + GEOSCoordSeq_setZ (cs, iv, z); + } + break; + default: + gaiaGetPoint (ln->Coords, iv, &x, &y); + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + } + break; + }; + } + if (handle != NULL) + geos = GEOSGeom_createLineString_r (handle, cs); + else + geos = GEOSGeom_createLineString (cs); + } + break; + case GAIA_POLYGON: + if (mode == GAIA2GEOS_ALL || mode == GAIA2GEOS_ONLY_POLYGONS) + { + pg = gaia->FirstPolygon; + rng = pg->Exterior; + /* exterior ring */ + ring_points = rng->Points; + if (cache) + { + if (gaiaIsNotClosedRing_r (cache, rng)) + ring_points++; + } + else + { + if (gaiaIsNotClosedRing (rng)) + ring_points++; + } + if (handle != NULL) + cs = GEOSCoordSeq_create_r (handle, ring_points, dims); + else + cs = GEOSCoordSeq_create (ring_points, dims); + for (iv = 0; iv < rng->Points; iv++) + { + switch (rng->DimensionModel) + { + case GAIA_XY_Z: + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + z0 = z; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + GEOSCoordSeq_setZ_r (handle, cs, iv, z); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + GEOSCoordSeq_setZ (cs, iv, z); + } + break; + case GAIA_XY_M: + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + } + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + z0 = z; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + GEOSCoordSeq_setZ_r (handle, cs, iv, z); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + GEOSCoordSeq_setZ (cs, iv, z); + } + break; + default: + gaiaGetPoint (rng->Coords, iv, &x, &y); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + } + break; + }; + } + if (ring_points > rng->Points) + { + /* ensuring Ring's closure */ + iv = ring_points - 1; + switch (rng->DimensionModel) + { + case GAIA_XY_Z: + case GAIA_XY_Z_M: + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x0); + GEOSCoordSeq_setY_r (handle, cs, iv, y0); + GEOSCoordSeq_setZ_r (handle, cs, iv, z0); + } + else + { + GEOSCoordSeq_setX (cs, iv, x0); + GEOSCoordSeq_setY (cs, iv, y0); + GEOSCoordSeq_setZ (cs, iv, z0); + } + break; + default: + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x0); + GEOSCoordSeq_setY_r (handle, cs, iv, y0); + } + else + { + GEOSCoordSeq_setX (cs, iv, x0); + GEOSCoordSeq_setY (cs, iv, y0); + } + break; + }; + } + if (handle != NULL) + geos_ext = GEOSGeom_createLinearRing_r (handle, cs); + else + geos_ext = GEOSGeom_createLinearRing (cs); + geos_holes = NULL; + if (pg->NumInteriors > 0) + { + geos_holes = + malloc (sizeof (GEOSGeometry *) * pg->NumInteriors); + for (ib = 0; ib < pg->NumInteriors; ib++) + { + /* interior ring */ + rng = pg->Interiors + ib; + ring_points = rng->Points; + if (cache != NULL) + { + if (gaiaIsNotClosedRing_r (cache, rng)) + ring_points++; + } + else + { + if (gaiaIsNotClosedRing (rng)) + ring_points++; + } + if (handle != NULL) + cs = GEOSCoordSeq_create_r (handle, ring_points, + dims); + else + cs = GEOSCoordSeq_create (ring_points, dims); + for (iv = 0; iv < rng->Points; iv++) + { + switch (rng->DimensionModel) + { + case GAIA_XY_Z: + gaiaGetPointXYZ (rng->Coords, iv, &x, + &y, &z); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + z0 = z; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, + iv, x); + GEOSCoordSeq_setY_r (handle, cs, + iv, y); + GEOSCoordSeq_setZ_r (handle, cs, + iv, z); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + GEOSCoordSeq_setZ (cs, iv, z); + } + break; + case GAIA_XY_M: + gaiaGetPointXYM (rng->Coords, iv, &x, + &y, &m); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, + iv, x); + GEOSCoordSeq_setY_r (handle, cs, + iv, y); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + } + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (rng->Coords, iv, &x, + &y, &z, &m); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + z0 = z; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, + iv, x); + GEOSCoordSeq_setY_r (handle, cs, + iv, y); + GEOSCoordSeq_setZ_r (handle, cs, + iv, z); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + GEOSCoordSeq_setZ (cs, iv, z); + } + break; + default: + gaiaGetPoint (rng->Coords, iv, &x, &y); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, + iv, x); + GEOSCoordSeq_setY_r (handle, cs, + iv, y); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + } + break; + }; + } + if (ring_points > rng->Points) + { + /* ensuring Ring's closure */ + iv = ring_points - 1; + switch (rng->DimensionModel) + { + case GAIA_XY_Z: + case GAIA_XY_Z_M: + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, + iv, x0); + GEOSCoordSeq_setY_r (handle, cs, + iv, y0); + GEOSCoordSeq_setZ_r (handle, cs, + iv, z0); + } + else + { + GEOSCoordSeq_setX (cs, iv, x0); + GEOSCoordSeq_setY (cs, iv, y0); + GEOSCoordSeq_setZ (cs, iv, z0); + } + break; + default: + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, + iv, x0); + GEOSCoordSeq_setY_r (handle, cs, + iv, y0); + } + else + { + GEOSCoordSeq_setX (cs, iv, x0); + GEOSCoordSeq_setY (cs, iv, y0); + } + break; + }; + } + if (handle != NULL) + geos_int = + GEOSGeom_createLinearRing_r (handle, cs); + else + geos_int = GEOSGeom_createLinearRing (cs); + *(geos_holes + ib) = geos_int; + } + } + if (handle != NULL) + geos = + GEOSGeom_createPolygon_r (handle, geos_ext, geos_holes, + pg->NumInteriors); + else + geos = + GEOSGeom_createPolygon (geos_ext, geos_holes, + pg->NumInteriors); + if (geos_holes) + free (geos_holes); + } + break; + case GAIA_MULTIPOINT: + case GAIA_MULTILINESTRING: + case GAIA_MULTIPOLYGON: + case GAIA_GEOMETRYCOLLECTION: + nItem = 0; + if (mode == GAIA2GEOS_ONLY_POINTS) + { + geos_coll = malloc (sizeof (GEOSGeometry *) * (pts)); + n_items = pts; + } + else if (mode == GAIA2GEOS_ONLY_LINESTRINGS) + { + geos_coll = malloc (sizeof (GEOSGeometry *) * (lns)); + n_items = lns; + } + else if (mode == GAIA2GEOS_ONLY_POLYGONS) + { + geos_coll = malloc (sizeof (GEOSGeometry *) * (pgs)); + n_items = pgs; + } + else + { + geos_coll = + malloc (sizeof (GEOSGeometry *) * (pts + lns + pgs)); + n_items = pts + lns + pgs; + } + if (mode == GAIA2GEOS_ALL || mode == GAIA2GEOS_ONLY_POINTS) + { + pt = gaia->FirstPoint; + while (pt) + { + if (handle != NULL) + cs = GEOSCoordSeq_create_r (handle, 1, dims); + else + cs = GEOSCoordSeq_create (1, dims); + switch (pt->DimensionModel) + { + case GAIA_XY_Z: + case GAIA_XY_Z_M: + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, 0, pt->X); + GEOSCoordSeq_setY_r (handle, cs, 0, pt->Y); + GEOSCoordSeq_setZ_r (handle, cs, 0, pt->Z); + } + else + { + GEOSCoordSeq_setX (cs, 0, pt->X); + GEOSCoordSeq_setY (cs, 0, pt->Y); + GEOSCoordSeq_setZ (cs, 0, pt->Z); + } + break; + default: + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, 0, pt->X); + GEOSCoordSeq_setY_r (handle, cs, 0, pt->Y); + } + else + { + GEOSCoordSeq_setX (cs, 0, pt->X); + GEOSCoordSeq_setY (cs, 0, pt->Y); + } + break; + }; + if (handle != NULL) + geos_item = GEOSGeom_createPoint_r (handle, cs); + else + geos_item = GEOSGeom_createPoint (cs); + *(geos_coll + nItem++) = geos_item; + pt = pt->Next; + } + } + if (mode == GAIA2GEOS_ALL || mode == GAIA2GEOS_ONLY_LINESTRINGS) + { + ln = gaia->FirstLinestring; + while (ln) + { + if (handle != NULL) + cs = GEOSCoordSeq_create_r (handle, ln->Points, dims); + else + cs = GEOSCoordSeq_create (ln->Points, dims); + for (iv = 0; iv < ln->Points; iv++) + { + switch (ln->DimensionModel) + { + case GAIA_XY_Z: + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + GEOSCoordSeq_setZ_r (handle, cs, iv, z); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + GEOSCoordSeq_setZ (cs, iv, z); + } + break; + case GAIA_XY_M: + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + } + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, + &m); + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + GEOSCoordSeq_setZ_r (handle, cs, iv, z); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + GEOSCoordSeq_setZ (cs, iv, z); + } + break; + default: + gaiaGetPoint (ln->Coords, iv, &x, &y); + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + } + break; + }; + } + if (handle != NULL) + geos_item = GEOSGeom_createLineString_r (handle, cs); + else + geos_item = GEOSGeom_createLineString (cs); + *(geos_coll + nItem++) = geos_item; + ln = ln->Next; + } + } + if (mode == GAIA2GEOS_ALL || mode == GAIA2GEOS_ONLY_POLYGONS) + { + pg = gaia->FirstPolygon; + while (pg) + { + rng = pg->Exterior; + /* exterior ring */ + ring_points = rng->Points; + if (cache != NULL) + { + if (gaiaIsNotClosedRing_r (handle, rng)) + ring_points++; + } + else + { + if (gaiaIsNotClosedRing (rng)) + ring_points++; + } + if (handle != NULL) + cs = GEOSCoordSeq_create_r (handle, ring_points, + dims); + else + cs = GEOSCoordSeq_create (ring_points, dims); + for (iv = 0; iv < rng->Points; iv++) + { + switch (rng->DimensionModel) + { + case GAIA_XY_Z: + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + z0 = z; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + GEOSCoordSeq_setZ_r (handle, cs, iv, z); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + GEOSCoordSeq_setZ (cs, iv, z); + } + break; + case GAIA_XY_M: + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + } + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, + &m); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + z0 = z; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + GEOSCoordSeq_setZ_r (handle, cs, iv, z); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + GEOSCoordSeq_setZ (cs, iv, z); + } + break; + default: + gaiaGetPoint (rng->Coords, iv, &x, &y); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + } + break; + }; + } + if (ring_points > rng->Points) + { + /* ensuring Ring's closure */ + iv = ring_points - 1; + switch (rng->DimensionModel) + { + case GAIA_XY_Z: + case GAIA_XY_Z_M: + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, + x0); + GEOSCoordSeq_setY_r (handle, cs, iv, + y0); + GEOSCoordSeq_setZ_r (handle, cs, iv, + z0); + } + else + { + GEOSCoordSeq_setX (cs, iv, x0); + GEOSCoordSeq_setY (cs, iv, y0); + GEOSCoordSeq_setZ (cs, iv, z0); + } + break; + default: + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, + x0); + GEOSCoordSeq_setY_r (handle, cs, iv, + y0); + } + else + { + GEOSCoordSeq_setX (cs, iv, x0); + GEOSCoordSeq_setY (cs, iv, y0); + } + break; + }; + } + if (handle != NULL) + geos_ext = GEOSGeom_createLinearRing_r (handle, cs); + else + geos_ext = GEOSGeom_createLinearRing (cs); + geos_holes = NULL; + if (pg->NumInteriors > 0) + { + geos_holes = + malloc (sizeof (GEOSGeometry *) * + pg->NumInteriors); + for (ib = 0; ib < pg->NumInteriors; ib++) + { + /* interior ring */ + rng = pg->Interiors + ib; + ring_points = rng->Points; + if (cache != NULL) + { + if (gaiaIsNotClosedRing_r (cache, rng)) + ring_points++; + } + else + { + if (gaiaIsNotClosedRing (rng)) + ring_points++; + } + if (handle != NULL) + cs = GEOSCoordSeq_create_r (handle, + ring_points, + dims); + else + cs = GEOSCoordSeq_create (ring_points, + dims); + for (iv = 0; iv < rng->Points; iv++) + { + switch (rng->DimensionModel) + { + case GAIA_XY_Z: + gaiaGetPointXYZ (rng->Coords, iv, + &x, &y, &z); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + z0 = z; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, + cs, iv, + x); + GEOSCoordSeq_setY_r (handle, + cs, iv, + y); + GEOSCoordSeq_setZ_r (handle, + cs, iv, + z); + } + else + { + GEOSCoordSeq_setX (cs, iv, + x); + GEOSCoordSeq_setY (cs, iv, + y); + GEOSCoordSeq_setZ (cs, iv, + z); + } + break; + case GAIA_XY_M: + gaiaGetPointXYM (rng->Coords, iv, + &x, &y, &m); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, + cs, iv, + x); + GEOSCoordSeq_setY_r (handle, + cs, iv, + y); + } + else + { + GEOSCoordSeq_setX (cs, iv, + x); + GEOSCoordSeq_setY (cs, iv, + y); + } + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (rng->Coords, iv, + &x, &y, &z, &m); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + z0 = z; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, + cs, iv, + x); + GEOSCoordSeq_setY_r (handle, + cs, iv, + y); + GEOSCoordSeq_setZ_r (handle, + cs, iv, + z); + } + else + { + GEOSCoordSeq_setX (cs, iv, + x); + GEOSCoordSeq_setY (cs, iv, + y); + GEOSCoordSeq_setZ (cs, iv, + z); + } + break; + default: + gaiaGetPoint (rng->Coords, iv, &x, + &y); + if (iv == 0) + { + /* saving the first vertex */ + x0 = x; + y0 = y; + } + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, + cs, iv, + x); + GEOSCoordSeq_setY_r (handle, + cs, iv, + y); + } + else + { + GEOSCoordSeq_setX (cs, iv, + x); + GEOSCoordSeq_setY (cs, iv, + y); + } + break; + }; + } + if (ring_points > rng->Points) + { + /* ensuring Ring's closure */ + iv = ring_points - 1; + switch (rng->DimensionModel) + { + case GAIA_XY_Z: + case GAIA_XY_Z_M: + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, + cs, iv, + x0); + GEOSCoordSeq_setY_r (handle, + cs, iv, + y0); + GEOSCoordSeq_setZ_r (handle, + cs, iv, + z0); + } + else + { + GEOSCoordSeq_setX (cs, iv, + x0); + GEOSCoordSeq_setY (cs, iv, + y0); + GEOSCoordSeq_setZ (cs, iv, + z0); + } + break; + default: + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, + cs, iv, + x0); + GEOSCoordSeq_setY_r (handle, + cs, iv, + y0); + } + else + { + GEOSCoordSeq_setX (cs, iv, + x0); + GEOSCoordSeq_setY (cs, iv, + y0); + } + break; + }; + } + if (handle != NULL) + geos_int = + GEOSGeom_createLinearRing_r (handle, + cs); + else + geos_int = GEOSGeom_createLinearRing (cs); + *(geos_holes + ib) = geos_int; + } + } + if (handle != NULL) + geos_item = + GEOSGeom_createPolygon_r (handle, geos_ext, + geos_holes, + pg->NumInteriors); + else + geos_item = + GEOSGeom_createPolygon (geos_ext, geos_holes, + pg->NumInteriors); + if (geos_holes) + free (geos_holes); + *(geos_coll + nItem++) = geos_item; + pg = pg->Next; + } + } + geos_type = GEOS_GEOMETRYCOLLECTION; + if (type == GAIA_MULTIPOINT) + geos_type = GEOS_MULTIPOINT; + if (type == GAIA_MULTILINESTRING) + geos_type = GEOS_MULTILINESTRING; + if (type == GAIA_MULTIPOLYGON) + geos_type = GEOS_MULTIPOLYGON; + if (handle != NULL) + geos = + GEOSGeom_createCollection_r (handle, geos_type, geos_coll, + n_items); + else + geos = GEOSGeom_createCollection (geos_type, geos_coll, n_items); + if (geos_coll) + free (geos_coll); + break; + default: + geos = NULL; + }; + if (geos) + { + if (handle != NULL) + GEOSSetSRID_r (handle, geos, gaia->Srid); + else + GEOSSetSRID (geos, gaia->Srid); + } + return geos; +} + +static gaiaGeomCollPtr +fromGeosGeometry (GEOSContextHandle_t handle, const GEOSGeometry * geos, + const int dimension_model) +{ +/* converting a GEOS Geometry into a GAIA Geometry */ + int type; + int itemType; + unsigned int dims; + int iv; + int ib; + int it; + int sub_it; + int nItems; + int nSubItems; + int holes; + unsigned int points; + double x; + double y; + double z; + const GEOSCoordSequence *cs; + const GEOSGeometry *geos_ring; + const GEOSGeometry *geos_item; + const GEOSGeometry *geos_sub_item; + gaiaGeomCollPtr gaia = NULL; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + if (!geos) + return NULL; + if (handle != NULL) + type = GEOSGeomTypeId_r (handle, geos); + else + type = GEOSGeomTypeId (geos); + switch (type) + { + case GEOS_POINT: + if (dimension_model == GAIA_XY_Z) + gaia = gaiaAllocGeomCollXYZ (); + else if (dimension_model == GAIA_XY_M) + gaia = gaiaAllocGeomCollXYM (); + else if (dimension_model == GAIA_XY_Z_M) + gaia = gaiaAllocGeomCollXYZM (); + else + gaia = gaiaAllocGeomColl (); + gaia->DeclaredType = GAIA_POINT; + if (handle != NULL) + { + gaia->Srid = GEOSGetSRID_r (handle, geos); + cs = GEOSGeom_getCoordSeq_r (handle, geos); + GEOSCoordSeq_getDimensions_r (handle, cs, &dims); + } + else + { + gaia->Srid = GEOSGetSRID (geos); + cs = GEOSGeom_getCoordSeq (geos); + GEOSCoordSeq_getDimensions (cs, &dims); + } + if (dims == 3) + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, 0, &x); + GEOSCoordSeq_getY_r (handle, cs, 0, &y); + GEOSCoordSeq_getZ_r (handle, cs, 0, &z); + } + else + { + GEOSCoordSeq_getX (cs, 0, &x); + GEOSCoordSeq_getY (cs, 0, &y); + GEOSCoordSeq_getZ (cs, 0, &z); + } + } + else + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, 0, &x); + GEOSCoordSeq_getY_r (handle, cs, 0, &y); + } + else + { + GEOSCoordSeq_getX (cs, 0, &x); + GEOSCoordSeq_getY (cs, 0, &y); + } + z = 0.0; + } + if (dimension_model == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (gaia, x, y, z); + else if (dimension_model == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (gaia, x, y, 0.0); + else if (dimension_model == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (gaia, x, y, z, 0.0); + else + gaiaAddPointToGeomColl (gaia, x, y); + break; + case GEOS_LINESTRING: + if (dimension_model == GAIA_XY_Z) + gaia = gaiaAllocGeomCollXYZ (); + else if (dimension_model == GAIA_XY_M) + gaia = gaiaAllocGeomCollXYM (); + else if (dimension_model == GAIA_XY_Z_M) + gaia = gaiaAllocGeomCollXYZM (); + else + gaia = gaiaAllocGeomColl (); + gaia->DeclaredType = GAIA_LINESTRING; + if (handle != NULL) + { + gaia->Srid = GEOSGetSRID_r (handle, geos); + cs = GEOSGeom_getCoordSeq_r (handle, geos); + GEOSCoordSeq_getDimensions_r (handle, cs, &dims); + GEOSCoordSeq_getSize_r (handle, cs, &points); + } + else + { + gaia->Srid = GEOSGetSRID (geos); + cs = GEOSGeom_getCoordSeq (geos); + GEOSCoordSeq_getDimensions (cs, &dims); + GEOSCoordSeq_getSize (cs, &points); + } + ln = gaiaAddLinestringToGeomColl (gaia, points); + for (iv = 0; iv < (int) points; iv++) + { + if (dims == 3) + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, iv, &x); + GEOSCoordSeq_getY_r (handle, cs, iv, &y); + GEOSCoordSeq_getZ_r (handle, cs, iv, &z); + } + else + { + GEOSCoordSeq_getX (cs, iv, &x); + GEOSCoordSeq_getY (cs, iv, &y); + GEOSCoordSeq_getZ (cs, iv, &z); + } + } + else + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, iv, &x); + GEOSCoordSeq_getY_r (handle, cs, iv, &y); + } + else + { + GEOSCoordSeq_getX (cs, iv, &x); + GEOSCoordSeq_getY (cs, iv, &y); + } + z = 0.0; + } + if (dimension_model == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, iv, x, y, z); + } + else if (dimension_model == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, iv, x, y, 0.0); + } + else if (dimension_model == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, iv, x, y, z, 0.0); + } + else + { + gaiaSetPoint (ln->Coords, iv, x, y); + } + } + break; + case GEOS_POLYGON: + if (dimension_model == GAIA_XY_Z) + gaia = gaiaAllocGeomCollXYZ (); + else if (dimension_model == GAIA_XY_M) + gaia = gaiaAllocGeomCollXYM (); + else if (dimension_model == GAIA_XY_Z_M) + gaia = gaiaAllocGeomCollXYZM (); + else + gaia = gaiaAllocGeomColl (); + gaia->DeclaredType = GAIA_POLYGON; + if (handle != NULL) + gaia->Srid = GEOSGetSRID_r (handle, geos); + else + gaia->Srid = GEOSGetSRID (geos); + /* exterior ring */ + if (handle != NULL) + { + holes = GEOSGetNumInteriorRings_r (handle, geos); + geos_ring = GEOSGetExteriorRing_r (handle, geos); + cs = GEOSGeom_getCoordSeq_r (handle, geos_ring); + GEOSCoordSeq_getDimensions_r (handle, cs, &dims); + GEOSCoordSeq_getSize_r (handle, cs, &points); + } + else + { + holes = GEOSGetNumInteriorRings (geos); + geos_ring = GEOSGetExteriorRing (geos); + cs = GEOSGeom_getCoordSeq (geos_ring); + GEOSCoordSeq_getDimensions (cs, &dims); + GEOSCoordSeq_getSize (cs, &points); + } + pg = gaiaAddPolygonToGeomColl (gaia, points, holes); + rng = pg->Exterior; + for (iv = 0; iv < (int) points; iv++) + { + if (dims == 3) + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, iv, &x); + GEOSCoordSeq_getY_r (handle, cs, iv, &y); + GEOSCoordSeq_getZ_r (handle, cs, iv, &z); + } + else + { + GEOSCoordSeq_getX (cs, iv, &x); + GEOSCoordSeq_getY (cs, iv, &y); + GEOSCoordSeq_getZ (cs, iv, &z); + } + } + else + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, iv, &x); + GEOSCoordSeq_getY_r (handle, cs, iv, &y); + } + else + { + GEOSCoordSeq_getX (cs, iv, &x); + GEOSCoordSeq_getY (cs, iv, &y); + } + z = 0.0; + } + if (dimension_model == GAIA_XY_Z) + { + gaiaSetPointXYZ (rng->Coords, iv, x, y, z); + } + else if (dimension_model == GAIA_XY_M) + { + gaiaSetPointXYM (rng->Coords, iv, x, y, 0.0); + } + else if (dimension_model == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (rng->Coords, iv, x, y, z, 0.0); + } + else + { + gaiaSetPoint (rng->Coords, iv, x, y); + } + } + for (ib = 0; ib < holes; ib++) + { + /* interior rings */ + if (handle != NULL) + { + geos_ring = GEOSGetInteriorRingN_r (handle, geos, ib); + cs = GEOSGeom_getCoordSeq_r (handle, geos_ring); + GEOSCoordSeq_getDimensions_r (handle, cs, &dims); + GEOSCoordSeq_getSize_r (handle, cs, &points); + } + else + { + geos_ring = GEOSGetInteriorRingN (geos, ib); + cs = GEOSGeom_getCoordSeq (geos_ring); + GEOSCoordSeq_getDimensions (cs, &dims); + GEOSCoordSeq_getSize (cs, &points); + } + rng = gaiaAddInteriorRing (pg, ib, points); + for (iv = 0; iv < (int) points; iv++) + { + if (dims == 3) + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, iv, &x); + GEOSCoordSeq_getY_r (handle, cs, iv, &y); + GEOSCoordSeq_getZ_r (handle, cs, iv, &z); + } + else + { + GEOSCoordSeq_getX (cs, iv, &x); + GEOSCoordSeq_getY (cs, iv, &y); + GEOSCoordSeq_getZ (cs, iv, &z); + } + } + else + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, iv, &x); + GEOSCoordSeq_getY_r (handle, cs, iv, &y); + } + else + { + GEOSCoordSeq_getX (cs, iv, &x); + GEOSCoordSeq_getY (cs, iv, &y); + } + z = 0.0; + } + if (dimension_model == GAIA_XY_Z) + { + gaiaSetPointXYZ (rng->Coords, iv, x, y, z); + } + else if (dimension_model == GAIA_XY_M) + { + gaiaSetPointXYM (rng->Coords, iv, x, y, 0.0); + } + else if (dimension_model == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (rng->Coords, iv, x, y, z, 0.0); + } + else + { + gaiaSetPoint (rng->Coords, iv, x, y); + } + } + } + break; + case GEOS_MULTIPOINT: + case GEOS_MULTILINESTRING: + case GEOS_MULTIPOLYGON: + case GEOS_GEOMETRYCOLLECTION: + if (dimension_model == GAIA_XY_Z) + gaia = gaiaAllocGeomCollXYZ (); + else if (dimension_model == GAIA_XY_M) + gaia = gaiaAllocGeomCollXYM (); + else if (dimension_model == GAIA_XY_Z_M) + gaia = gaiaAllocGeomCollXYZM (); + else + gaia = gaiaAllocGeomColl (); + if (type == GEOS_MULTIPOINT) + gaia->DeclaredType = GAIA_MULTIPOINT; + else if (type == GEOS_MULTILINESTRING) + gaia->DeclaredType = GAIA_MULTILINESTRING; + else if (type == GEOS_MULTIPOLYGON) + gaia->DeclaredType = GAIA_MULTIPOLYGON; + else + gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; + if (handle != NULL) + { + gaia->Srid = GEOSGetSRID_r (handle, geos); + nItems = GEOSGetNumGeometries_r (handle, geos); + } + else + { + gaia->Srid = GEOSGetSRID (geos); + nItems = GEOSGetNumGeometries (geos); + } + for (it = 0; it < nItems; it++) + { + /* looping on elementaty geometries */ + if (handle != NULL) + { + geos_item = GEOSGetGeometryN_r (handle, geos, it); + itemType = GEOSGeomTypeId_r (handle, geos_item); + } + else + { + geos_item = GEOSGetGeometryN (geos, it); + itemType = GEOSGeomTypeId (geos_item); + } + switch (itemType) + { + case GEOS_POINT: + if (handle != NULL) + { + cs = GEOSGeom_getCoordSeq_r (handle, geos_item); + GEOSCoordSeq_getDimensions_r (handle, cs, &dims); + } + else + { + cs = GEOSGeom_getCoordSeq (geos_item); + GEOSCoordSeq_getDimensions (cs, &dims); + } + if (dims == 3) + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, 0, &x); + GEOSCoordSeq_getY_r (handle, cs, 0, &y); + GEOSCoordSeq_getZ_r (handle, cs, 0, &z); + } + else + { + GEOSCoordSeq_getX (cs, 0, &x); + GEOSCoordSeq_getY (cs, 0, &y); + GEOSCoordSeq_getZ (cs, 0, &z); + } + } + else + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, 0, &x); + GEOSCoordSeq_getY_r (handle, cs, 0, &y); + } + else + { + GEOSCoordSeq_getX (cs, 0, &x); + GEOSCoordSeq_getY (cs, 0, &y); + } + z = 0.0; + } + if (dimension_model == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (gaia, x, y, z); + else if (dimension_model == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (gaia, x, y, 0.0); + else if (dimension_model == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (gaia, x, y, z, 0.0); + else + gaiaAddPointToGeomColl (gaia, x, y); + break; + case GEOS_LINESTRING: + if (handle != NULL) + { + cs = GEOSGeom_getCoordSeq_r (handle, geos_item); + GEOSCoordSeq_getDimensions_r (handle, cs, &dims); + GEOSCoordSeq_getSize_r (handle, cs, &points); + } + else + { + cs = GEOSGeom_getCoordSeq (geos_item); + GEOSCoordSeq_getDimensions (cs, &dims); + GEOSCoordSeq_getSize (cs, &points); + } + ln = gaiaAddLinestringToGeomColl (gaia, points); + for (iv = 0; iv < (int) points; iv++) + { + if (dims == 3) + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, iv, + &x); + GEOSCoordSeq_getY_r (handle, cs, iv, + &y); + GEOSCoordSeq_getZ_r (handle, cs, iv, + &z); + } + else + { + GEOSCoordSeq_getX (cs, iv, &x); + GEOSCoordSeq_getY (cs, iv, &y); + GEOSCoordSeq_getZ (cs, iv, &z); + } + } + else + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, iv, + &x); + GEOSCoordSeq_getY_r (handle, cs, iv, + &y); + } + else + { + GEOSCoordSeq_getX (cs, iv, &x); + GEOSCoordSeq_getY (cs, iv, &y); + } + z = 0.0; + } + if (dimension_model == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, iv, x, y, z); + } + else if (dimension_model == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, iv, x, y, 0.0); + } + else if (dimension_model == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, iv, x, y, z, + 0.0); + } + else + { + gaiaSetPoint (ln->Coords, iv, x, y); + } + } + break; + case GEOS_MULTILINESTRING: + if (handle != NULL) + nSubItems = + GEOSGetNumGeometries_r (handle, geos_item); + else + nSubItems = GEOSGetNumGeometries (geos_item); + for (sub_it = 0; sub_it < nSubItems; sub_it++) + { + /* looping on elementaty geometries */ + if (handle != NULL) + { + geos_sub_item = + GEOSGetGeometryN_r (handle, geos_item, + sub_it); + cs = GEOSGeom_getCoordSeq_r (handle, + geos_sub_item); + GEOSCoordSeq_getDimensions_r (handle, cs, + &dims); + GEOSCoordSeq_getSize_r (handle, cs, &points); + } + else + { + geos_sub_item = + GEOSGetGeometryN (geos_item, sub_it); + cs = GEOSGeom_getCoordSeq (geos_sub_item); + GEOSCoordSeq_getDimensions (cs, &dims); + GEOSCoordSeq_getSize (cs, &points); + } + ln = gaiaAddLinestringToGeomColl (gaia, points); + for (iv = 0; iv < (int) points; iv++) + { + if (dims == 3) + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, + iv, &x); + GEOSCoordSeq_getY_r (handle, cs, + iv, &y); + GEOSCoordSeq_getZ_r (handle, cs, + iv, &z); + } + else + { + GEOSCoordSeq_getX (cs, iv, &x); + GEOSCoordSeq_getY (cs, iv, &y); + GEOSCoordSeq_getZ (cs, iv, &z); + } + } + else + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, + iv, &x); + GEOSCoordSeq_getY_r (handle, cs, + iv, &y); + } + else + { + GEOSCoordSeq_getX (cs, iv, &x); + GEOSCoordSeq_getY (cs, iv, &y); + } + z = 0.0; + } + if (dimension_model == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, iv, x, y, + z); + } + else if (dimension_model == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, iv, x, y, + 0.0); + } + else if (dimension_model == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, iv, x, y, + z, 0.0); + } + else + { + gaiaSetPoint (ln->Coords, iv, x, y); + } + } + } + break; + case GEOS_POLYGON: + /* exterior ring */ + if (handle != NULL) + { + holes = + GEOSGetNumInteriorRings_r (handle, geos_item); + geos_ring = + GEOSGetExteriorRing_r (handle, geos_item); + cs = GEOSGeom_getCoordSeq_r (handle, geos_ring); + GEOSCoordSeq_getDimensions_r (handle, cs, &dims); + GEOSCoordSeq_getSize_r (handle, cs, &points); + } + else + { + holes = GEOSGetNumInteriorRings (geos_item); + geos_ring = GEOSGetExteriorRing (geos_item); + cs = GEOSGeom_getCoordSeq (geos_ring); + GEOSCoordSeq_getDimensions (cs, &dims); + GEOSCoordSeq_getSize (cs, &points); + } + pg = gaiaAddPolygonToGeomColl (gaia, points, holes); + rng = pg->Exterior; + for (iv = 0; iv < (int) points; iv++) + { + if (dims == 3) + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, iv, + &x); + GEOSCoordSeq_getY_r (handle, cs, iv, + &y); + GEOSCoordSeq_getZ_r (handle, cs, iv, + &z); + } + else + { + GEOSCoordSeq_getX (cs, iv, &x); + GEOSCoordSeq_getY (cs, iv, &y); + GEOSCoordSeq_getZ (cs, iv, &z); + } + } + else + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, iv, + &x); + GEOSCoordSeq_getY_r (handle, cs, iv, + &y); + } + else + { + GEOSCoordSeq_getX (cs, iv, &x); + GEOSCoordSeq_getY (cs, iv, &y); + } + z = 0.0; + } + if (dimension_model == GAIA_XY_Z) + { + gaiaSetPointXYZ (rng->Coords, iv, x, y, z); + } + else if (dimension_model == GAIA_XY_M) + { + gaiaSetPointXYM (rng->Coords, iv, x, y, 0.0); + } + else if (dimension_model == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (rng->Coords, iv, x, y, z, + 0.0); + } + else + { + gaiaSetPoint (rng->Coords, iv, x, y); + } + } + for (ib = 0; ib < holes; ib++) + { + /* interior rings */ + if (handle != NULL) + { + geos_ring = + GEOSGetInteriorRingN_r (handle, geos_item, + ib); + cs = GEOSGeom_getCoordSeq_r (handle, + geos_ring); + GEOSCoordSeq_getDimensions_r (handle, cs, + &dims); + GEOSCoordSeq_getSize_r (handle, cs, &points); + } + else + { + geos_ring = + GEOSGetInteriorRingN (geos_item, ib); + cs = GEOSGeom_getCoordSeq (geos_ring); + GEOSCoordSeq_getDimensions (cs, &dims); + GEOSCoordSeq_getSize (cs, &points); + } + rng = gaiaAddInteriorRing (pg, ib, points); + for (iv = 0; iv < (int) points; iv++) + { + if (dims == 3) + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, + iv, &x); + GEOSCoordSeq_getY_r (handle, cs, + iv, &y); + GEOSCoordSeq_getZ_r (handle, cs, + iv, &z); + } + else + { + GEOSCoordSeq_getX (cs, iv, &x); + GEOSCoordSeq_getY (cs, iv, &y); + GEOSCoordSeq_getZ (cs, iv, &z); + } + } + else + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, + iv, &x); + GEOSCoordSeq_getY_r (handle, cs, + iv, &y); + } + else + { + GEOSCoordSeq_getX (cs, iv, &x); + GEOSCoordSeq_getY (cs, iv, &y); + } + z = 0.0; + } + if (dimension_model == GAIA_XY_Z) + { + gaiaSetPointXYZ (rng->Coords, iv, x, y, + z); + } + else if (dimension_model == GAIA_XY_M) + { + gaiaSetPointXYM (rng->Coords, iv, x, y, + 0.0); + } + else if (dimension_model == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (rng->Coords, iv, x, y, + z, 0.0); + } + else + { + gaiaSetPoint (rng->Coords, iv, x, y); + } + } + } + break; + }; + } + break; + }; + return gaia; +} + +GAIAGEO_DECLARE void * +gaiaToGeos (const gaiaGeomCollPtr gaia) +{ +/* converting a GAIA Geometry into a GEOS Geometry */ + return toGeosGeometry (NULL, NULL, gaia, GAIA2GEOS_ALL); +} + +GAIAGEO_DECLARE void * +gaiaToGeos_r (const void *p_cache, const gaiaGeomCollPtr gaia) +{ +/* converting a GAIA Geometry into a GEOS Geometry */ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + return toGeosGeometry (cache, handle, gaia, GAIA2GEOS_ALL); +} + +GAIAGEO_DECLARE void * +gaiaToGeosSelective (const gaiaGeomCollPtr gaia, int mode) +{ +/* converting a GAIA Geometry into a GEOS Geometry (selected type) */ + if (mode == GAIA2GEOS_ONLY_POINTS || mode == GAIA2GEOS_ONLY_LINESTRINGS + || mode == GAIA2GEOS_ONLY_POLYGONS) + ; + else + mode = GAIA2GEOS_ALL; + return toGeosGeometry (NULL, NULL, gaia, mode); +} + +GAIAGEO_DECLARE void * +gaiaToGeosSelective_r (const void *p_cache, const gaiaGeomCollPtr gaia, + int mode) +{ +/* converting a GAIA Geometry into a GEOS Geometry (selected type) */ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + if (mode == GAIA2GEOS_ONLY_POINTS || mode == GAIA2GEOS_ONLY_LINESTRINGS + || mode == GAIA2GEOS_ONLY_POLYGONS) + ; + else + mode = GAIA2GEOS_ALL; + return toGeosGeometry (cache, handle, gaia, mode); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaFromGeos_XY (const void *xgeos) +{ +/* converting a GEOS Geometry into a GAIA Geometry [XY] */ + const GEOSGeometry *geos = xgeos; + return fromGeosGeometry (NULL, geos, GAIA_XY); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaFromGeos_XYZ (const void *xgeos) +{ +/* converting a GEOS Geometry into a GAIA Geometry [XYZ] */ + const GEOSGeometry *geos = xgeos; + return fromGeosGeometry (NULL, geos, GAIA_XY_Z); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaFromGeos_XYM (const void *xgeos) +{ +/* converting a GEOS Geometry into a GAIA Geometry [XYM] */ + const GEOSGeometry *geos = xgeos; + return fromGeosGeometry (NULL, geos, GAIA_XY_M); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaFromGeos_XYZM (const void *xgeos) +{ +/* converting a GEOS Geometry into a GAIA Geometry [XYZM] */ + const GEOSGeometry *geos = xgeos; + return fromGeosGeometry (NULL, geos, GAIA_XY_Z_M); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaFromGeos_XY_r (const void *p_cache, const void *xgeos) +{ +/* converting a GEOS Geometry into a GAIA Geometry [XY] */ + const GEOSGeometry *geos = xgeos; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + return fromGeosGeometry (handle, geos, GAIA_XY); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaFromGeos_XYZ_r (const void *p_cache, const void *xgeos) +{ +/* converting a GEOS Geometry into a GAIA Geometry [XYZ] */ + const GEOSGeometry *geos = xgeos; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + return fromGeosGeometry (handle, geos, GAIA_XY_Z); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaFromGeos_XYM_r (const void *p_cache, const void *xgeos) +{ +/* converting a GEOS Geometry into a GAIA Geometry [XYM] */ + const GEOSGeometry *geos = xgeos; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + return fromGeosGeometry (handle, geos, GAIA_XY_M); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaFromGeos_XYZM_r (const void *p_cache, const void *xgeos) +{ +/* converting a GEOS Geometry into a GAIA Geometry [XYZM] */ + const GEOSGeometry *geos = xgeos; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + return fromGeosGeometry (handle, geos, GAIA_XY_Z_M); +} + +#endif /* end including GEOS */ diff --git a/src/spatialite/src/gaiageo/gg_gml.c b/src/spatialite/src/gaiageo/gg_gml.c new file mode 100644 index 0000000..66036bb --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_gml.c @@ -0,0 +1,3699 @@ +/* + + gg_gml.c -- GML parser/lexer + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011-2013 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include +#include + +#if defined(_WIN32) || defined(WIN32) +#include +#ifndef isatty +#define isatty _isatty +#endif +#ifndef fileno +#define fileno _fileno +#endif +#endif + +#define GML_PARSER_OPEN_NODE 1 +#define GML_PARSER_SELF_CLOSED_NODE 2 +#define GML_PARSER_CLOSED_NODE 3 + +#define GAIA_GML_UNKNOWN 0 +#define GAIA_GML_POINT 1 +#define GAIA_GML_LINESTRING 2 +#define GAIA_GML_CURVE 3 +#define GAIA_GML_POLYGON 4 +#define GAIA_GML_MULTIPOINT 5 +#define GAIA_GML_MULTILINESTRING 6 +#define GAIA_GML_MULTICURVE 7 +#define GAIA_GML_MULTIPOLYGON 8 +#define GAIA_GML_MULTISURFACE 9 +#define GAIA_GML_MULTIGEOMETRY 10 +#define GAIA_GML_BOX 11 + +#define GML_DYN_NONE 0 +#define GML_DYN_DYNLINE 1 +#define GML_DYN_GEOM 2 +#define GML_DYN_DYNPG 3 +#define GML_DYN_NODE 4 +#define GML_DYN_COORD 5 +#define GML_DYN_ATTRIB 6 + +#define GML_DYN_BLOCK 1024 + + + +/* +** CAVEAT: we must redefine any Lemon/Flex own macro +*/ +#define YYMINORTYPE GML_MINORTYPE +#define YY_CHAR GML_YY_CHAR +#define input gml_input +#define ParseAlloc gmlParseAlloc +#define ParseFree gmlParseFree +#define ParseStackPeak gmlParseStackPeak +#define Parse gmlParse +#define yyStackEntry gml_yyStackEntry +#define yyzerominor gml_yyzerominor +#define yy_accept gml_yy_accept +#define yy_action gml_yy_action +#define yy_base gml_yy_base +#define yy_buffer_stack gml_yy_buffer_stack +#define yy_buffer_stack_max gml_yy_buffer_stack_max +#define yy_buffer_stack_top gml_yy_buffer_stack_top +#define yy_c_buf_p gml_yy_c_buf_p +#define yy_chk gml_yy_chk +#define yy_def gml_yy_def +#define yy_default gml_yy_default +#define yy_destructor gml_yy_destructor +#define yy_ec gml_yy_ec +#define yy_fatal_error gml_yy_fatal_error +#define yy_find_reduce_action gml_yy_find_reduce_action +#define yy_find_shift_action gml_yy_find_shift_action +#define yy_get_next_buffer gml_yy_get_next_buffer +#define yy_get_previous_state gml_yy_get_previous_state +#define yy_init gml_yy_init +#define yy_init_globals gml_yy_init_globals +#define yy_lookahead gml_yy_lookahead +#define yy_meta gml_yy_meta +#define yy_nxt gml_yy_nxt +#define yy_parse_failed gml_yy_parse_failed +#define yy_pop_parser_stack gml_yy_pop_parser_stack +#define yy_reduce gml_yy_reduce +#define yy_reduce_ofst gml_yy_reduce_ofst +#define yy_shift gml_yy_shift +#define yy_shift_ofst gml_yy_shift_ofst +#define yy_start gml_yy_start +#define yy_state_type gml_yy_state_type +#define yy_syntax_error gml_yy_syntax_error +#define yy_trans_info gml_yy_trans_info +#define yy_try_NUL_trans gml_yy_try_NUL_trans +#define yyParser gml_yyParser +#define yyStackEntry gml_yyStackEntry +#define yyStackOverflow gml_yyStackOverflow +#define yyRuleInfo gml_yyRuleInfo +#define yyunput gml_yyunput +#define yyzerominor gml_yyzerominor +#define yyTraceFILE gml_yyTraceFILE +#define yyTracePrompt gml_yyTracePrompt +#define yyTokenName gml_yyTokenName +#define yyRuleName gml_yyRuleName +#define ParseTrace gml_ParseTrace + +#define yylex gml_yylex +#define YY_DECL int yylex (yyscan_t yyscanner) + + +/* include LEMON generated header */ +#include "Gml.h" + + +typedef union +{ + char *pval; + struct symtab *symp; +} gml_yystype; +#define YYSTYPE gml_yystype + + +/* +** This is a linked-list struct to store all the values for each token. +*/ +typedef struct gmlFlexTokenStruct +{ + char *value; + struct gmlFlexTokenStruct *Next; +} gmlFlexToken; + +typedef struct gml_coord +{ + char *Value; + struct gml_coord *Next; +} gmlCoord; +typedef gmlCoord *gmlCoordPtr; + +typedef struct gml_attr +{ + char *Key; + char *Value; + struct gml_attr *Next; +} gmlAttr; +typedef gmlAttr *gmlAttrPtr; + +typedef struct gml_node +{ + char *Tag; + int Type; + int Error; + struct gml_attr *Attributes; + struct gml_coord *Coordinates; + struct gml_node *Next; +} gmlNode; +typedef gmlNode *gmlNodePtr; + +typedef struct gml_dynamic_ring +{ + gaiaDynamicLinePtr ring; + int interior; + int has_z; + struct gml_dynamic_ring *next; +} gmlDynamicRing; +typedef gmlDynamicRing *gmlDynamicRingPtr; + +typedef struct gml_dynamic_polygon +{ + struct gml_dynamic_ring *first; + struct gml_dynamic_ring *last; +} gmlDynamicPolygon; +typedef gmlDynamicPolygon *gmlDynamicPolygonPtr; + +struct gml_dyn_block +{ +/* a struct taking trace of dynamic allocations */ + int type[GML_DYN_BLOCK]; + void *ptr[GML_DYN_BLOCK]; + int index; + struct gml_dyn_block *next; +}; + +struct gml_data +{ +/* a struct used to make the lexer-parser reentrant and thread-safe */ + int gml_parse_error; + int gml_line; + int gml_col; + struct gml_dyn_block *gml_first_dyn_block; + struct gml_dyn_block *gml_last_dyn_block; + gmlNodePtr result; + YYSTYPE GmlLval; +}; + +static struct gml_dyn_block * +gmlCreateDynBlock (void) +{ +/* allocating a new block to trace dynamic allocations */ + int i; + struct gml_dyn_block *p = malloc (sizeof (struct gml_dyn_block)); + for (i = 0; i < GML_DYN_BLOCK; i++) + { + /* initializing map entries */ + p->type[i] = GML_DYN_NONE; + p->ptr[i] = NULL; + } + p->index = 0; + p->next = NULL; + return p; +} + +static void +gmlMapDynAlloc (struct gml_data *p_data, int type, void *ptr) +{ +/* appending a dynamic allocation into the map */ + struct gml_dyn_block *p; + if (p_data->gml_first_dyn_block == NULL) + { + /* inserting the first block of the map */ + p = gmlCreateDynBlock (); + p_data->gml_first_dyn_block = p; + p_data->gml_last_dyn_block = p; + } + if (p_data->gml_last_dyn_block->index >= GML_DYN_BLOCK) + { + /* adding a further block to the map */ + p = gmlCreateDynBlock (); + p_data->gml_last_dyn_block->next = p; + p_data->gml_last_dyn_block = p; + } + p_data->gml_last_dyn_block->type[p_data->gml_last_dyn_block->index] = type; + p_data->gml_last_dyn_block->ptr[p_data->gml_last_dyn_block->index] = ptr; + p_data->gml_last_dyn_block->index++; +} + +static void +gmlMapDynClean (struct gml_data *p_data, void *ptr) +{ +/* deleting a dynamic allocation from the map */ + int i; + struct gml_dyn_block *p = p_data->gml_first_dyn_block; + while (p) + { + for (i = 0; i < GML_DYN_BLOCK; i++) + { + switch (p->type[i]) + { + case GML_DYN_DYNLINE: + case GML_DYN_GEOM: + case GML_DYN_DYNPG: + case GML_DYN_NODE: + case GML_DYN_COORD: + case GML_DYN_ATTRIB: + if (p->ptr[i] == ptr) + { + p->type[i] = GML_DYN_NONE; + return; + } + break; + }; + } + p = p->next; + } +} + +static void +gml_free_dyn_polygon (gmlDynamicPolygonPtr dyn) +{ +/* deleting a dynamic polygon (ring collection) */ + gmlDynamicRingPtr r; + gmlDynamicRingPtr rn; + if (!dyn) + return; + r = dyn->first; + while (r) + { + rn = r->next; + if (r->ring) + gaiaFreeDynamicLine (r->ring); + free (r); + r = rn; + } + free (dyn); +} + +static void +gml_free_coord (gmlCoordPtr c) +{ +/* deleting a GML coordinate */ + if (c == NULL) + return; + if (c->Value) + free (c->Value); + free (c); +} + +static void +gml_free_attrib (gmlAttrPtr a) +{ +/* deleting a GML attribute */ + if (a == NULL) + return; + if (a->Key) + free (a->Key); + if (a->Value) + free (a->Value); + free (a); +} + +static void +gml_free_node (gmlNodePtr n) +{ +/* deleting a GML node */ + gmlAttrPtr a; + gmlAttrPtr an; + gmlCoordPtr c; + gmlCoordPtr cn; + if (n == NULL) + return; + a = n->Attributes; + while (a) + { + an = a->Next; + gml_free_attrib (a); + a = an; + } + c = n->Coordinates; + while (c) + { + cn = c->Next; + gml_free_coord (c); + c = cn; + } + if (n->Tag) + free (n->Tag); + free (n); +} + +static void +gmlCleanMapDynAlloc (struct gml_data *p_data, int clean_all) +{ +/* cleaning the dynamic allocations map */ + int i; + struct gml_dyn_block *pn; + struct gml_dyn_block *p = p_data->gml_first_dyn_block; + while (p) + { + if (clean_all) + { + for (i = 0; i < GML_DYN_BLOCK; i++) + { + /* deleting Geometry objects */ + switch (p->type[i]) + { + case GML_DYN_DYNLINE: + gaiaFreeDynamicLine ((gaiaDynamicLinePtr) + (p->ptr[i])); + break; + case GML_DYN_GEOM: + gaiaFreeGeomColl ((gaiaGeomCollPtr) (p->ptr[i])); + break; + case GML_DYN_DYNPG: + gml_free_dyn_polygon ((gmlDynamicPolygonPtr) + (p->ptr[i])); + break; + case GML_DYN_NODE: + gml_free_node ((gmlNodePtr) (p->ptr[i])); + break; + case GML_DYN_COORD: + gml_free_coord ((gmlCoordPtr) (p->ptr[i])); + break; + case GML_DYN_ATTRIB: + gml_free_attrib ((gmlAttrPtr) (p->ptr[i])); + break; + }; + } + } + /* deleting the map block */ + pn = p->next; + free (p); + p = pn; + } +} + +static gmlDynamicPolygonPtr +gml_alloc_dyn_polygon (struct gml_data *p_data) +{ +/* creating a dynamic polygon (ring collection) */ + gmlDynamicPolygonPtr p = malloc (sizeof (gmlDynamicPolygon)); + gmlMapDynAlloc (p_data, GML_DYN_DYNPG, p); + p->first = NULL; + p->last = NULL; + return p; +} + +static void +gml_add_polygon_ring (struct gml_data *p_data, gmlDynamicPolygonPtr dyn_pg, + gaiaDynamicLinePtr dyn, int interior, int has_z) +{ +/* inserting a further ring into the collection (dynamic polygon) */ + gmlDynamicRingPtr p = malloc (sizeof (gmlDynamicRing)); + p->ring = dyn; + p->interior = interior; + p->has_z = has_z; + p->next = NULL; + if (dyn_pg->first == NULL) + dyn_pg->first = p; + if (dyn_pg->last != NULL) + dyn_pg->last->next = p; + dyn_pg->last = p; + gmlMapDynClean (p_data, p); +} + +static void +gml_freeString (char **ptr) +{ +/* releasing a string from the lexer */ + if (*ptr != NULL) + free (*ptr); + *ptr = NULL; +} + +static void +gml_saveString (char **ptr, const char *str) +{ +/* saving a string from the lexer */ + int len = strlen (str); + gml_freeString (ptr); + *ptr = malloc (len + 1); + strcpy (*ptr, str); +} + +static gmlCoordPtr +gml_coord (struct gml_data *p_data, void *value) +{ +/* creating a coord Item */ + int len; + gmlFlexToken *tok = (gmlFlexToken *) value; + gmlCoordPtr c = malloc (sizeof (gmlCoord)); + gmlMapDynAlloc (p_data, GML_DYN_COORD, c); + len = strlen (tok->value); + c->Value = malloc (len + 1); + strcpy (c->Value, tok->value); + c->Next = NULL; + return c; +} + +static gmlAttrPtr +gml_attribute (struct gml_data *p_data, void *key, void *value) +{ +/* creating an attribute */ + int len; + gmlFlexToken *k_tok = (gmlFlexToken *) key; + gmlFlexToken *v_tok = (gmlFlexToken *) value; + gmlAttrPtr a = malloc (sizeof (gmlAttr)); + gmlMapDynAlloc (p_data, GML_DYN_ATTRIB, a); + len = strlen (k_tok->value); + a->Key = malloc (len + 1); + strcpy (a->Key, k_tok->value); + len = strlen (v_tok->value); +/* we need to de-quote the string, removing first and last ".." */ + if (*(v_tok->value + 0) == '"' && *(v_tok->value + len - 1) == '"') + { + int bytesToCopy = len - 2; + char *startingPointForCopy = v_tok->value + 1; + a->Value = malloc (bytesToCopy + 1); + memcpy (a->Value, startingPointForCopy, bytesToCopy); + *(a->Value + bytesToCopy) = '\0'; + } + else + { + a->Value = malloc (len + 1); + strcpy (a->Value, v_tok->value); + } + a->Next = NULL; + return a; +} + +static void +gml_freeTree (struct gml_data *p_data, gmlNodePtr t) +{ +/* deleting a GML tree */ + gmlNodePtr n; + gmlNodePtr nn; + n = t; + while (n) + { + nn = n->Next; + gmlMapDynClean (p_data, n); + gml_free_node (n); + n = nn; + } +} + +static gmlNodePtr +gml_createNode (struct gml_data *p_data, void *tag, void *attributes, + void *coords) +{ +/* creating a node */ + gmlAttrPtr a; + gmlCoordPtr c; + int len; + gmlFlexToken *tok = (gmlFlexToken *) tag; + gmlNodePtr n = malloc (sizeof (gmlNode)); + gmlMapDynAlloc (p_data, GML_DYN_NODE, n); + len = strlen (tok->value); + n->Tag = malloc (len + 1); + strcpy (n->Tag, tok->value); + n->Type = GML_PARSER_OPEN_NODE; + n->Error = 0; + a = (gmlAttrPtr) attributes; + while (a) + { + /* transferring ownership of attributes */ + gmlMapDynClean (p_data, a); + a = a->Next; + } + n->Attributes = attributes; + c = (gmlCoordPtr) coords; + while (c) + { + /* transferring ownership of attributes */ + gmlMapDynClean (p_data, c); + c = c->Next; + } + n->Coordinates = coords; + n->Next = NULL; + return n; +} + +static gmlNodePtr +gml_createSelfClosedNode (struct gml_data *p_data, void *tag, void *attributes) +{ +/* creating a self-closed node */ + gmlAttrPtr a; + int len; + gmlFlexToken *tok = (gmlFlexToken *) tag; + gmlNodePtr n = malloc (sizeof (gmlNode)); + gmlMapDynAlloc (p_data, GML_DYN_NODE, n); + len = strlen (tok->value); + n->Tag = malloc (len + 1); + strcpy (n->Tag, tok->value); + n->Type = GML_PARSER_SELF_CLOSED_NODE; + n->Error = 0; + a = (gmlAttrPtr) attributes; + while (a) + { + /* transferring ownership of attributes */ + gmlMapDynClean (p_data, a); + a = a->Next; + } + n->Attributes = attributes; + n->Coordinates = NULL; + n->Next = NULL; + return n; +} + +static gmlNodePtr +gml_closingNode (struct gml_data *p_data, void *tag) +{ +/* creating a closing node */ + int len; + gmlFlexToken *tok = (gmlFlexToken *) tag; + gmlNodePtr n = malloc (sizeof (gmlNode)); + gmlMapDynAlloc (p_data, GML_DYN_NODE, n); + len = strlen (tok->value); + n->Tag = malloc (len + 1); + strcpy (n->Tag, tok->value); + n->Type = GML_PARSER_CLOSED_NODE; + n->Error = 0; + n->Attributes = NULL; + n->Coordinates = NULL; + n->Next = NULL; + return n; +} + +static int +gml_cleanup (gmlFlexToken * token) +{ + gmlFlexToken *ptok; + gmlFlexToken *ptok_n; + if (token == NULL) + return 0; + ptok = token; + while (ptok) + { + ptok_n = ptok->Next; + if (ptok->value != NULL) + free (ptok->value); + free (ptok); + ptok = ptok_n; + } + return 0; +} + +static void +gml_xferString (char **p, const char *str) +{ +/* saving some token */ + int len; + if (str == NULL) + { + *p = NULL; + return; + } + len = strlen (str); + *p = malloc (len + 1); + strcpy (*p, str); +} + +static int +guessGmlSrid (gmlNodePtr node) +{ +/* attempting to guess the SRID */ + int len; + gmlAttrPtr attr = node->Attributes; + while (attr) + { + if (strcmp (attr->Key, "srsName") == 0) + { + len = strlen (attr->Value); + if (len > 5) + { + if (strncmp (attr->Value, "EPSG:", 5) == 0) + return atoi (attr->Value + 5); + } + if (len > 21) + { + if (strncmp (attr->Value, "urn:ogc:def:crs:EPSG:", 21) == + 0) + { + int i = strlen (attr->Value) - 1; + for (; i >= 0; i--) + { + if (*(attr->Value + i) == ':') + return atoi (attr->Value + i + 1); + } + } + } + if (len > 40) + { + if (strncmp + (attr->Value, + "http://www.opengis.net/gml/srs/epsg.xml#", 40) == 0) + { + int i = strlen (attr->Value) - 1; + for (; i >= 0; i--) + { + if (*(attr->Value + i) == '#') + return atoi (attr->Value + i + 1); + } + } + } + } + attr = attr->Next; + } + return -1; +} + +static int +gml_get_srsDimension (gmlNodePtr node) +{ +/* attempting to establis if there is a Z coordinate */ + gmlAttrPtr attr = node->Attributes; + while (attr) + { + if (strcmp (attr->Key, "srsDimension") == 0) + { + if (atoi (attr->Value) == 3) + return 1; + else + return 0; + } + attr = attr->Next; + } + return 0; +} + +static int +guessGmlGeometryType (gmlNodePtr node) +{ +/* attempting to guess the Geometry Type for a GML node */ + int type = GAIA_GML_UNKNOWN; + if (strcmp (node->Tag, "gml:Point") == 0 + || strcmp (node->Tag, "Point") == 0) + type = GAIA_GML_POINT; + if (strcmp (node->Tag, "gml:LineString") == 0 + || strcmp (node->Tag, "LineString") == 0) + type = GAIA_GML_LINESTRING; + if (strcmp (node->Tag, "gml:Curve") == 0 + || strcmp (node->Tag, "Curve") == 0) + type = GAIA_GML_CURVE; + if (strcmp (node->Tag, "gml:Polygon") == 0 + || strcmp (node->Tag, "Polygon") == 0) + type = GAIA_GML_POLYGON; + if (strcmp (node->Tag, "gml:MultiPoint") == 0 + || strcmp (node->Tag, "MultiPoint") == 0) + type = GAIA_GML_MULTIPOINT; + if (strcmp (node->Tag, "gml:MultiLineString") == 0 + || strcmp (node->Tag, "MultiLineString") == 0) + type = GAIA_GML_MULTILINESTRING; + if (strcmp (node->Tag, "gml:MultiCurve") == 0 + || strcmp (node->Tag, "MultiCurve") == 0) + type = GAIA_GML_MULTICURVE; + if (strcmp (node->Tag, "gml:MultiPolygon") == 0 + || strcmp (node->Tag, "MultiPolygon") == 0) + type = GAIA_GML_MULTIPOLYGON; + if (strcmp (node->Tag, "gml:MultiSurface") == 0 + || strcmp (node->Tag, "MultiSurface") == 0) + type = GAIA_GML_MULTISURFACE; + if (strcmp (node->Tag, "gml:MultiGeometry") == 0 + || strcmp (node->Tag, "MultiGeometry") == 0) + type = GAIA_GML_MULTIGEOMETRY; + if (strcmp (node->Tag, "gml:Box") == 0 || strcmp (node->Tag, "Box") == 0) + type = GAIA_GML_BOX; + return type; +} + +static int +gml_check_coord (const char *value) +{ +/* checking a GML coordinate */ + int decimal = 0; + const char *p = value; + if (*p == '+' || *p == '-') + p++; + while (*p != '\0') + { + if (*p == '.') + { + if (!decimal) + decimal = 1; + else + return 0; + } + else if (*p >= '0' && *p <= '9') + ; + else + return 0; + p++; + } + return 1; +} + +static int +gml_extract_coords (const char *value, double *x, double *y, double *z, + int *count) +{ +/* extracting GML v2.x coords from a comma-separated string */ + const char *in = value; + char buf[1024]; + char *out = buf; + *out = '\0'; + + while (*in != '\0') + { + if (*in == ',') + { + *out = '\0'; + if (*buf != '\0') + { + if (!gml_check_coord (buf)) + return 0; + switch (*count) + { + case 0: + *x = atof (buf); + *count += 1; + break; + case 1: + *y = atof (buf); + *count += 1; + break; + case 2: + *z = atof (buf); + *count += 1; + break; + default: + *count += 1; + break; + }; + } + in++; + out = buf; + *out = '\0'; + continue; + } + *out++ = *in++; + } + *out = '\0'; +/* parsing the last item */ + if (*buf != '\0') + { + if (!gml_check_coord (buf)) + return 0; + switch (*count) + { + case 0: + *x = atof (buf); + *count += 1; + break; + case 1: + *y = atof (buf); + *count += 1; + break; + case 2: + *z = atof (buf); + *count += 1; + break; + default: + *count += 1; + break; + }; + } + return 1; +} + +static int +gml_parse_point_v2 (gmlCoordPtr coord, double *x, double *y, double *z, + int *has_z) +{ +/* parsing GML v2.x [Point] */ + int count = 0; + gmlCoordPtr c = coord; + while (c) + { + if (!gml_extract_coords (c->Value, x, y, z, &count)) + return 0; + c = c->Next; + } + if (count == 2) + { + *has_z = 0; + return 1; + } + if (count == 3) + { + *has_z = 1; + return 1; + } + return 0; +} + +static int +gml_parse_point_v3 (gmlCoordPtr coord, double *x, double *y, double *z, + int *has_z) +{ +/* parsing GML v2.x [Point] */ + int count = 0; + gmlCoordPtr c = coord; + while (c) + { + if (!gml_check_coord (c->Value)) + return 0; + switch (count) + { + case 0: + *x = atof (c->Value); + count++; + break; + case 1: + *y = atof (c->Value); + count++; + break; + case 2: + *z = atof (c->Value); + count++; + break; + default: + count++; + break; + }; + c = c->Next; + } + if (count == 2) + { + *has_z = 0; + return 1; + } + if (count == 3) + { + *has_z = 1; + return 1; + } + return 0; +} + +static int +gml_parse_point (struct gml_data *p_data, gaiaGeomCollPtr geom, gmlNodePtr node, + int srid, gmlNodePtr * next) +{ +/* parsing a */ + double x; + double y; + double z; + int has_z; + gaiaGeomCollPtr pt; + gaiaGeomCollPtr last; + + if (strcmp (node->Tag, "gml:coordinates") == 0 + || strcmp (node->Tag, "coordinates") == 0) + { + /* parsing a GML v.2.x */ + if (!gml_parse_point_v2 (node->Coordinates, &x, &y, &z, &has_z)) + return 0; + node = node->Next; + if (node == NULL) + return 0; + if (strcmp (node->Tag, "gml:coordinates") == 0 + || strcmp (node->Tag, "coordinates") == 0) + ; + else + return 0; + node = node->Next; + if (node == NULL) + return 0; + if (strcmp (node->Tag, "gml:Point") == 0 + || strcmp (node->Tag, "Point") == 0) + ; + else + return 0; + *next = node->Next; + goto ok; + } + if (strcmp (node->Tag, "gml:pos") == 0 || strcmp (node->Tag, "pos") == 0) + { + /* parsing a GML v.3.x */ + if (!gml_parse_point_v3 (node->Coordinates, &x, &y, &z, &has_z)) + return 0; + node = node->Next; + if (node == NULL) + return 0; + if (strcmp (node->Tag, "gml:pos") == 0 + || strcmp (node->Tag, "pos") == 0) + ; + else + return 0; + node = node->Next; + if (node == NULL) + return 0; + if (strcmp (node->Tag, "gml:Point") == 0 + || strcmp (node->Tag, "Point") == 0) + ; + else + return 0; + *next = node->Next; + goto ok; + } + return 0; + + ok: +/* ok, GML nodes match as expected */ + if (has_z) + { + pt = gaiaAllocGeomCollXYZ (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, pt); + pt->Srid = srid; + gaiaAddPointToGeomCollXYZ (pt, x, y, z); + } + else + { + pt = gaiaAllocGeomColl (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, pt); + pt->Srid = srid; + gaiaAddPointToGeomColl (pt, x, y); + } + last = geom; + while (1) + { + /* searching the last Geometry within chain */ + if (last->Next == NULL) + break; + last = last->Next; + } + last->Next = pt; + return 1; +} + +static int +gml_extract_multi_coord (const char *value, double *x, double *y, double *z, + int *count, int *follow) +{ +/* extracting GML v2.x coords from a comma-separated string */ + const char *in = value; + char buf[1024]; + char *out = buf; + int last; + *out = '\0'; + while (*in != '\0') + { + last = *in; + if (*in == ',') + { + *out = '\0'; + if (*buf != '\0') + { + if (!gml_check_coord (buf)) + return 0; + switch (*count) + { + case 0: + *x = atof (buf); + *count += 1; + break; + case 1: + *y = atof (buf); + *count += 1; + break; + case 2: + *z = atof (buf); + *count += 1; + break; + default: + *count += 1; + break; + }; + } + in++; + out = buf; + *out = '\0'; + continue; + } + *out++ = *in++; + } + *out = '\0'; +/* parsing the last item */ + if (*buf != '\0') + { + if (!gml_check_coord (buf)) + return 0; + switch (*count) + { + case 0: + *x = atof (buf); + *count += 1; + break; + case 1: + *y = atof (buf); + *count += 1; + break; + case 2: + *z = atof (buf); + *count += 1; + break; + default: + *count += 1; + break; + }; + } + if (last == ',') + *follow = 1; + else + *follow = 0; + return 1; +} + +static int +gml_extract_multi_coords (gmlCoordPtr coord, double *x, double *y, double *z, + int *count, gmlCoordPtr * next) +{ +/* extracting GML v2.x coords from a comma-separated string */ + int follow; + gmlCoordPtr c = coord; + while (c) + { + if (!gml_extract_multi_coord (c->Value, x, y, z, count, &follow)) + return 0; + if (!follow && c->Next != NULL) + { + if (*(c->Next->Value) == ',') + follow = 1; + } + if (follow) + c = c->Next; + else + { + *next = c->Next; + break; + } + } + return 1; +} + +static void +gml_add_point_to_line (gaiaDynamicLinePtr dyn, double x, double y) +{ +/* appending a point */ + gaiaAppendPointToDynamicLine (dyn, x, y); +} + +static void +gml_add_point_to_lineZ (gaiaDynamicLinePtr dyn, double x, double y, double z) +{ +/* appending a point */ + gaiaAppendPointZToDynamicLine (dyn, x, y, z); +} + +static int +gml_parse_coordinates (gmlCoordPtr coord, gaiaDynamicLinePtr dyn, int *has_z) +{ +/* parsing GML v2.x [Linestring or Ring] */ + int count = 0; + double x; + double y; + double z; + gmlCoordPtr next; + gmlCoordPtr c = coord; + while (c) + { + if (!gml_extract_multi_coords (c, &x, &y, &z, &count, &next)) + return 0; + if (count == 2) + { + *has_z = 0; + gml_add_point_to_line (dyn, x, y); + count = 0; + } + else if (count == 3) + { + gml_add_point_to_lineZ (dyn, x, y, z); + count = 0; + } + else + return 0; + c = next; + } + return 1; +} + +static int +gml_parse_posList (gmlCoordPtr coord, gaiaDynamicLinePtr dyn, int has_z) +{ +/* parsing GML v3.x [Linestring or Ring] */ + int count = 0; + double x; + double y; + double z; + gmlCoordPtr c = coord; + while (c) + { + if (!gml_check_coord (c->Value)) + return 0; + if (!has_z) + { + switch (count) + { + case 0: + x = atof (c->Value); + count++; + break; + case 1: + y = atof (c->Value); + gml_add_point_to_line (dyn, x, y); + count = 0; + break; + }; + } + else + { + switch (count) + { + case 0: + x = atof (c->Value); + count++; + break; + case 1: + y = atof (c->Value); + count++; + break; + case 2: + z = atof (c->Value); + gml_add_point_to_lineZ (dyn, x, y, z); + count = 0; + break; + }; + } + c = c->Next; + } + if (count != 0) + return 0; + return 1; +} + +static int +gml_parse_pos_chain (gmlNodePtr * xnode, gaiaDynamicLinePtr dyn, int *x_has_z) +{ +/* parsing a chain of gml:pos elements */ + int has_z; + int error = 0; + int dim_3d = 0; + double x; + double y; + double z; + int count = 0; + gmlNodePtr last_node = *xnode; + gmlNodePtr node = *xnode; + while (node != NULL) + { + if (strcmp (node->Tag, "gml:pos") == 0 + || strcmp (node->Tag, "pos") == 0) + ; + else + break; + if (!gml_parse_point_v3 (node->Coordinates, &x, &y, &z, &has_z)) + return 0; + if (has_z) + { + gml_add_point_to_lineZ (dyn, x, y, z); + dim_3d = 1; + } + else + gml_add_point_to_line (dyn, x, y); + node = node->Next; + if (strcmp (node->Tag, "gml:pos") == 0 + || strcmp (node->Tag, "pos") == 0) + last_node = node; + else + { + error = 1; + break; + } + count++; + node = node->Next; + } + if (count >= 2 && error == 0) + { + /* valid sequence found */ + *x_has_z = dim_3d; + *xnode = last_node; + return 1; + } + return 0; +} + +static int +gml_count_dyn_points (gaiaDynamicLinePtr dyn) +{ +/* count how many vertices are into sone linestring/ring */ + int iv = 0; + gaiaPointPtr pt = dyn->First; + while (pt) + { + iv++; + pt = pt->Next; + } + return iv; +} + +static int +gml_parse_box (struct gml_data *p_data, gaiaGeomCollPtr geom, + gmlNodePtr node, int srid, gmlNodePtr * next) +{ +/* parsing a */ + gaiaGeomCollPtr last; + gaiaGeomCollPtr pg; + gaiaPolygonPtr new_pg; + gaiaRingPtr ring; + gaiaPointPtr pt; + double minx; + double miny; + double maxx; + double maxy; + int has_z; + int points = 0; + gaiaDynamicLinePtr dyn = gaiaAllocDynamicLine (); + gmlMapDynAlloc (p_data, GML_DYN_DYNLINE, dyn); + + if (strcmp (node->Tag, "gml:coordinates") == 0 + || strcmp (node->Tag, "coordinates") == 0) + { + /* parsing a GML v.2.x */ + if (!gml_parse_coordinates (node->Coordinates, dyn, &has_z)) + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:coordinates") == 0 + || strcmp (node->Tag, "coordinates") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:Box") == 0 + || strcmp (node->Tag, "Box") == 0) + ; + else + goto error; + *next = node->Next; + goto ok; + } + + ok: +/* ok, GML nodes match as expected */ + points = gml_count_dyn_points (dyn); + if (points != 2) + goto error; + pt = dyn->First; + minx = pt->X; + miny = pt->Y; + maxx = pt->X; + maxy = pt->Y; + while (pt) + { + if (pt->X < minx) + minx = pt->X; + if (pt->Y < miny) + miny = pt->Y; + if (pt->X > maxx) + maxx = pt->X; + if (pt->Y > maxy) + maxy = pt->Y; + pt = pt->Next; + } + pg = gaiaAllocGeomColl (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, pg); + pg->Srid = srid; + new_pg = gaiaAddPolygonToGeomColl (pg, 5, 0); + /* initializing the EXTERIOR RING */ + ring = new_pg->Exterior; + gaiaSetPoint (ring->Coords, 0, minx, miny); + gaiaSetPoint (ring->Coords, 1, maxx, miny); + gaiaSetPoint (ring->Coords, 2, maxx, maxy); + gaiaSetPoint (ring->Coords, 3, minx, maxy); + gaiaSetPoint (ring->Coords, 4, minx, miny); + last = geom; + while (1) + { + /* searching the last Geometry within chain */ + if (last->Next == NULL) + break; + last = last->Next; + } + last->Next = pg; + gmlMapDynClean (p_data, dyn); + gaiaFreeDynamicLine (dyn); + return 1; + + error: + gmlMapDynClean (p_data, dyn); + gaiaFreeDynamicLine (dyn); + return 0; +} + +static int +gml_parse_linestring (struct gml_data *p_data, gaiaGeomCollPtr geom, + gmlNodePtr node, int srid, gmlNodePtr * next) +{ +/* parsing a */ + gaiaGeomCollPtr ln; + gaiaGeomCollPtr last; + gaiaLinestringPtr new_ln; + gaiaPointPtr pt; + int iv; + int has_z = 1; + int points = 0; + gaiaDynamicLinePtr dyn = gaiaAllocDynamicLine (); + gmlMapDynAlloc (p_data, GML_DYN_DYNLINE, dyn); + + if (strcmp (node->Tag, "gml:coordinates") == 0 + || strcmp (node->Tag, "coordinates") == 0) + { + /* parsing a GML v.2.x */ + if (!gml_parse_coordinates (node->Coordinates, dyn, &has_z)) + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:coordinates") == 0 + || strcmp (node->Tag, "coordinates") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:LineString") == 0 + || strcmp (node->Tag, "LineString") == 0) + ; + else + goto error; + *next = node->Next; + goto ok; + } + if (strcmp (node->Tag, "gml:posList") == 0 + || strcmp (node->Tag, "posList") == 0) + { + /* parsing a GML v.3.x */ + has_z = gml_get_srsDimension (node); + if (!gml_parse_posList (node->Coordinates, dyn, has_z)) + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:posList") == 0 + || strcmp (node->Tag, "posList") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:LineString") == 0 + || strcmp (node->Tag, "LineString") == 0) + ; + else + goto error; + *next = node->Next; + goto ok; + } + if (strcmp (node->Tag, "gml:pos") == 0 || strcmp (node->Tag, "pos") == 0) + { + /* parsing a GML v.3.x */ + gmlNodePtr node2 = node; + if (!gml_parse_pos_chain (&node2, dyn, &has_z)) + goto error; + node = node2->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:LineString") == 0 + || strcmp (node->Tag, "LineString") == 0) + ; + else + goto error; + *next = node->Next; + goto ok; + } + + ok: +/* ok, GML nodes match as expected */ + points = gml_count_dyn_points (dyn); + if (points < 2) + goto error; + if (has_z) + { + ln = gaiaAllocGeomCollXYZ (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, ln); + ln->Srid = srid; + new_ln = gaiaAddLinestringToGeomColl (ln, points); + pt = dyn->First; + iv = 0; + while (pt) + { + gaiaSetPointXYZ (new_ln->Coords, iv, pt->X, pt->Y, pt->Z); + iv++; + pt = pt->Next; + } + } + else + { + ln = gaiaAllocGeomColl (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, ln); + ln->Srid = srid; + new_ln = gaiaAddLinestringToGeomColl (ln, points); + pt = dyn->First; + iv = 0; + while (pt) + { + gaiaSetPoint (new_ln->Coords, iv, pt->X, pt->Y); + iv++; + pt = pt->Next; + } + } + last = geom; + while (1) + { + /* searching the last Geometry within chain */ + if (last->Next == NULL) + break; + last = last->Next; + } + last->Next = ln; + gmlMapDynClean (p_data, dyn); + gaiaFreeDynamicLine (dyn); + return 1; + + error: + gmlMapDynClean (p_data, dyn); + gaiaFreeDynamicLine (dyn); + return 0; +} + +static int +gml_parse_curve (struct gml_data *p_data, gaiaGeomCollPtr geom, gmlNodePtr node, + int srid, gmlNodePtr * next) +{ +/* parsing a */ + gaiaGeomCollPtr ln; + gaiaGeomCollPtr last; + gaiaLinestringPtr new_ln; + gaiaPointPtr pt; + int iv; + int has_z = 1; + int points = 0; + gaiaDynamicLinePtr dyn = gaiaAllocDynamicLine (); + gmlMapDynAlloc (p_data, GML_DYN_DYNLINE, dyn); + + if (strcmp (node->Tag, "gml:segments") == 0 + || strcmp (node->Tag, "segments") == 0) + { + /* parsing a GML v.3.x */ + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:LineStringSegment") == 0 + || strcmp (node->Tag, "LineStringSegment") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:posList") == 0 + || strcmp (node->Tag, "posList") == 0) + { + /* parsing a GML v.3.x */ + has_z = gml_get_srsDimension (node); + if (!gml_parse_posList (node->Coordinates, dyn, has_z)) + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:posList") == 0 + || strcmp (node->Tag, "posList") == 0) + ; + else + goto error; + + } + else if (strcmp (node->Tag, "gml:pos") == 0 + || strcmp (node->Tag, "pos") == 0) + { + /* parsing a GML v.3.x */ + gmlNodePtr node2 = node; + if (!gml_parse_pos_chain (&node2, dyn, &has_z)) + goto error; + node = node2; + if (node == NULL) + goto error; + } + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:LineStringSegment") == 0 + || strcmp (node->Tag, "LineStringSegment") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:segments") == 0 + || strcmp (node->Tag, "segments") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:Curve") == 0 + || strcmp (node->Tag, "Curve") == 0) + ; + else + goto error; + *next = node->Next; + goto ok; + } + goto error; + + ok: +/* ok, GML nodes match as expected */ + points = gml_count_dyn_points (dyn); + if (points < 2) + goto error; + if (has_z) + { + ln = gaiaAllocGeomCollXYZ (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, ln); + ln->Srid = srid; + new_ln = gaiaAddLinestringToGeomColl (ln, points); + pt = dyn->First; + iv = 0; + while (pt) + { + gaiaSetPointXYZ (new_ln->Coords, iv, pt->X, pt->Y, pt->Z); + iv++; + pt = pt->Next; + } + } + else + { + ln = gaiaAllocGeomColl (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, ln); + ln->Srid = srid; + new_ln = gaiaAddLinestringToGeomColl (ln, points); + pt = dyn->First; + iv = 0; + while (pt) + { + gaiaSetPoint (new_ln->Coords, iv, pt->X, pt->Y); + iv++; + pt = pt->Next; + } + } + last = geom; + while (1) + { + /* searching the last Geometry within chain */ + if (last->Next == NULL) + break; + last = last->Next; + } + last->Next = ln; + gmlMapDynClean (p_data, dyn); + gaiaFreeDynamicLine (dyn); + return 1; + + error: + gmlMapDynClean (p_data, dyn); + gaiaFreeDynamicLine (dyn); + return 0; +} + +static gaiaDynamicLinePtr +gml_parse_ring (struct gml_data *p_data, gmlNodePtr node, int *interior, + int *has_z, gmlNodePtr * next) +{ +/* parsing a generic GML ring */ + gaiaDynamicLinePtr dyn = gaiaAllocDynamicLine (); + gmlMapDynAlloc (p_data, GML_DYN_DYNLINE, dyn); + *has_z = 1; + + if (strcmp (node->Tag, "gml:outerBoundaryIs") == 0 + || strcmp (node->Tag, "outerBoundaryIs") == 0) + { + /* parsing a GML v.2.x */ + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:LinearRing") == 0 + || strcmp (node->Tag, "LinearRing") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:coordinates") == 0 + || strcmp (node->Tag, "coordinates") == 0) + { + /* parsing a GML v.2.x */ + if (!gml_parse_coordinates (node->Coordinates, dyn, has_z)) + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:coordinates") == 0 + || strcmp (node->Tag, "coordinates") == 0) + ; + else + goto error; + } + else if (strcmp (node->Tag, "gml:posList") == 0 + || strcmp (node->Tag, "posList") == 0) + { + /* parsing a GML v.3.x */ + *has_z = gml_get_srsDimension (node); + if (!gml_parse_posList (node->Coordinates, dyn, *has_z)) + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:posList") == 0 + || strcmp (node->Tag, "posList") == 0) + ; + else + goto error; + } + else if (strcmp (node->Tag, "gml:pos") == 0 + || strcmp (node->Tag, "pos") == 0) + { + /* parsing a GML v.3.x */ + gmlNodePtr node2 = node; + if (!gml_parse_pos_chain (&node2, dyn, has_z)) + goto error; + node = node2; + if (node == NULL) + goto error; + } + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:LinearRing") == 0 + || strcmp (node->Tag, "LinearRing") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:outerBoundaryIs") == 0 + || strcmp (node->Tag, "outerBoundaryIs") == 0) + ; + else + goto error; + *interior = 0; + *next = node->Next; + return dyn; + } + if (strcmp (node->Tag, "gml:innerBoundaryIs") == 0 + || strcmp (node->Tag, "innerBoundaryIs") == 0) + { + /* parsing a GML v.2.x */ + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:LinearRing") == 0 + || strcmp (node->Tag, "LinearRing") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:coordinates") == 0 + || strcmp (node->Tag, "coordinates") == 0) + { + /* parsing a GML v.2.x */ + if (!gml_parse_coordinates (node->Coordinates, dyn, has_z)) + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:coordinates") == 0 + || strcmp (node->Tag, "coordinates") == 0) + ; + else + goto error; + } + else if (strcmp (node->Tag, "gml:posList") == 0 + || strcmp (node->Tag, "posList") == 0) + { + /* parsing a GML v.3.x */ + *has_z = gml_get_srsDimension (node); + if (!gml_parse_posList (node->Coordinates, dyn, *has_z)) + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:posList") == 0 + || strcmp (node->Tag, "posList") == 0) + ; + else + goto error; + } + else if (strcmp (node->Tag, "gml:pos") == 0 + || strcmp (node->Tag, "pos") == 0) + { + /* parsing a GML v.3.x */ + gmlNodePtr node2 = node; + if (!gml_parse_pos_chain (&node2, dyn, has_z)) + goto error; + node = node2; + if (node == NULL) + goto error; + } + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:LinearRing") == 0 + || strcmp (node->Tag, "LinearRing") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:innerBoundaryIs") == 0 + || strcmp (node->Tag, "innerBoundaryIs") == 0) + ; + else + goto error; + *interior = 1; + *next = node->Next; + return dyn; + } + if (strcmp (node->Tag, "gml:exterior") == 0 + || strcmp (node->Tag, "exterior") == 0) + { + /* parsing a GML v.3.x */ + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:LinearRing") == 0 + || strcmp (node->Tag, "LinearRing") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:posList") == 0 + || strcmp (node->Tag, "posList") == 0) + { + /* parsing a GML v.3.x */ + *has_z = gml_get_srsDimension (node); + if (!gml_parse_posList (node->Coordinates, dyn, *has_z)) + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:posList") == 0 + || strcmp (node->Tag, "posList") == 0) + ; + else + goto error; + } + else if (strcmp (node->Tag, "gml:pos") == 0 + || strcmp (node->Tag, "pos") == 0) + { + /* parsing a GML v.3.x */ + gmlNodePtr node2 = node; + if (!gml_parse_pos_chain (&node2, dyn, has_z)) + goto error; + node = node2; + if (node == NULL) + goto error; + } + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:LinearRing") == 0 + || strcmp (node->Tag, "LinearRing") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:exterior") == 0 + || strcmp (node->Tag, "exterior") == 0) + ; + else + goto error; + *interior = 0; + *next = node->Next; + return dyn; + } + if (strcmp (node->Tag, "gml:interior") == 0 + || strcmp (node->Tag, "interior") == 0) + { + /* parsing a GML v.3.x */ + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:LinearRing") == 0 + || strcmp (node->Tag, "LinearRing") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:posList") == 0 + || strcmp (node->Tag, "posList") == 0) + { + /* parsing a GML v.3.x */ + *has_z = gml_get_srsDimension (node); + if (!gml_parse_posList (node->Coordinates, dyn, *has_z)) + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:posList") == 0 + || strcmp (node->Tag, "posList") == 0) + ; + else + goto error; + } + else if (strcmp (node->Tag, "gml:pos") == 0 + || strcmp (node->Tag, "pos") == 0) + { + /* parsing a GML v.3.x */ + gmlNodePtr node2 = node; + if (!gml_parse_pos_chain (&node2, dyn, has_z)) + goto error; + node = node2; + if (node == NULL) + goto error; + } + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:LinearRing") == 0 + || strcmp (node->Tag, "LinearRing") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "gml:interior") == 0 + || strcmp (node->Tag, "interior") == 0) + ; + else + goto error; + *interior = 1; + *next = node->Next; + return dyn; + } + + error: + gmlMapDynClean (p_data, dyn); + gaiaFreeDynamicLine (dyn); + return 0; +} + +static int +gml_parse_polygon (struct gml_data *p_data, gaiaGeomCollPtr geom, + gmlNodePtr node, int srid, gmlNodePtr * next_n) +{ +/* parsing a */ + int interior; + int has_z; + int inners; + int outers; + int points; + int iv; + int ib = 0; + gaiaGeomCollPtr pg; + gaiaGeomCollPtr last_g; + gaiaPolygonPtr new_pg; + gaiaRingPtr ring; + gaiaDynamicLinePtr dyn; + gaiaPointPtr pt; + gaiaDynamicLinePtr exterior_ring; + gmlNodePtr next; + gmlDynamicRingPtr dyn_rng; + gmlDynamicPolygonPtr dyn_pg = gml_alloc_dyn_polygon (p_data); + gmlNodePtr n = node; + while (n) + { + /* looping on rings */ + if (strcmp (n->Tag, "gml:Polygon") == 0 + || strcmp (n->Tag, "Polygon") == 0) + { + *next_n = n->Next; + break; + } + dyn = gml_parse_ring (p_data, n, &interior, &has_z, &next); + if (dyn == NULL) + goto error; + if (gml_count_dyn_points (dyn) < 4) + { + /* cannot be a valid ring */ + goto error; + } + /* checking if the ring is closed */ + if (has_z) + { + if (dyn->First->X == dyn->Last->X + && dyn->First->Y == dyn->Last->Y + && dyn->First->Z == dyn->Last->Z) + ; + else + goto error; + } + else + { + if (dyn->First->X == dyn->Last->X + && dyn->First->Y == dyn->Last->Y) + ; + else + goto error; + } + gml_add_polygon_ring (p_data, dyn_pg, dyn, interior, has_z); + n = next; + } +/* ok, GML nodes match as expected */ + inners = 0; + outers = 0; + has_z = 1; + dyn_rng = dyn_pg->first; + while (dyn_rng) + { + /* verifying the rings collection */ + if (dyn_rng->has_z == 0) + has_z = 0; + if (dyn_rng->interior) + inners++; + else + { + outers++; + points = gml_count_dyn_points (dyn_rng->ring); + exterior_ring = dyn_rng->ring; + } + dyn_rng = dyn_rng->next; + } + if (outers != 1) /* no exterior ring declared */ + goto error; + + if (has_z) + { + pg = gaiaAllocGeomCollXYZ (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, pg); + pg->Srid = srid; + new_pg = gaiaAddPolygonToGeomColl (pg, points, inners); + /* initializing the EXTERIOR RING */ + ring = new_pg->Exterior; + pt = exterior_ring->First; + iv = 0; + while (pt) + { + gaiaSetPointXYZ (ring->Coords, iv, pt->X, pt->Y, pt->Z); + iv++; + pt = pt->Next; + } + dyn_rng = dyn_pg->first; + while (dyn_rng) + { + /* initializing any INTERIOR RING */ + if (dyn_rng->interior == 0) + { + dyn_rng = dyn_rng->next; + continue; + } + points = gml_count_dyn_points (dyn_rng->ring); + ring = gaiaAddInteriorRing (new_pg, ib, points); + ib++; + pt = dyn_rng->ring->First; + iv = 0; + while (pt) + { + gaiaSetPointXYZ (ring->Coords, iv, pt->X, pt->Y, pt->Z); + iv++; + pt = pt->Next; + } + dyn_rng = dyn_rng->next; + } + } + else + { + pg = gaiaAllocGeomColl (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, pg); + pg->Srid = srid; + new_pg = gaiaAddPolygonToGeomColl (pg, points, inners); + /* initializing the EXTERIOR RING */ + ring = new_pg->Exterior; + pt = exterior_ring->First; + iv = 0; + while (pt) + { + gaiaSetPoint (ring->Coords, iv, pt->X, pt->Y); + iv++; + pt = pt->Next; + } + dyn_rng = dyn_pg->first; + while (dyn_rng) + { + /* initializing any INTERIOR RING */ + if (dyn_rng->interior == 0) + { + dyn_rng = dyn_rng->next; + continue; + } + points = gml_count_dyn_points (dyn_rng->ring); + ring = gaiaAddInteriorRing (new_pg, ib, points); + ib++; + pt = dyn_rng->ring->First; + iv = 0; + while (pt) + { + gaiaSetPoint (ring->Coords, iv, pt->X, pt->Y); + iv++; + pt = pt->Next; + } + dyn_rng = dyn_rng->next; + } + } + + last_g = geom; + while (1) + { + /* searching the last Geometry within chain */ + if (last_g->Next == NULL) + break; + last_g = last_g->Next; + } + last_g->Next = pg; + gml_free_dyn_polygon (dyn_pg); + return 1; + + error: + gml_free_dyn_polygon (dyn_pg); + return 0; +} + +static int +gml_parse_multi_point (struct gml_data *p_data, gaiaGeomCollPtr geom, + gmlNodePtr node) +{ +/* parsing a */ + int srid; + int pts; + gmlNodePtr n2; + gmlNodePtr next; + gmlNodePtr n = node; + while (n) + { + /* looping on Point Members */ + if (n->Next == NULL) + { + /* verifying the last GML node */ + if (strcmp (n->Tag, "gml:MultiPoint") == 0 + || strcmp (n->Tag, "MultiPoint") == 0) + break; + else + return 0; + } + if (strcmp (n->Tag, "gml:pointMember") == 0 + || strcmp (n->Tag, "pointMember") == 0 + || strcmp (n->Tag, "gml:pointMembers") == 0 + || strcmp (n->Tag, "pointMembers") == 0) + ; + else + return 0; + n2 = n->Next; + pts = 0; + while (n2) + { + /* looping on Point(s) */ + if (strcmp (n2->Tag, "gml:Point") == 0 + || strcmp (n2->Tag, "Point") == 0) + ; + else + { + n = n2; + break; + } + srid = guessGmlSrid (n2); + n2 = n2->Next; + if (n2 == NULL) + return 0; + if (!gml_parse_point (p_data, geom, n2, srid, &next)) + return 0; + n2 = next; + if (n2 == NULL) + return 0; + pts++; + } + if (!pts) + return 0; + if (strcmp (n->Tag, "gml:pointMember") == 0 + || strcmp (n->Tag, "pointMember") == 0 + || strcmp (n->Tag, "gml:pointMembers") == 0 + || strcmp (n->Tag, "pointMembers") == 0) + ; + else + return 0; + n = n->Next; + } + return 1; +} + +static int +gml_parse_multi_linestring (struct gml_data *p_data, gaiaGeomCollPtr geom, + gmlNodePtr node) +{ +/* parsing a */ + int srid; + int lns; + gmlNodePtr n2; + gmlNodePtr next; + gmlNodePtr n = node; + while (n) + { + /* looping on LineString Members */ + if (n->Next == NULL) + { + /* verifying the last GML node */ + if (strcmp (n->Tag, "gml:MultiLineString") == 0 + || strcmp (n->Tag, "MultiLineString") == 0) + break; + else + return 0; + } + if (strcmp (n->Tag, "gml:lineStringMember") == 0 + || strcmp (n->Tag, "lineStringMember") == 0 + || strcmp (n->Tag, "gml:lineStringMembers") == 0 + || strcmp (n->Tag, "lineStringMembers") == 0) + ; + else + return 0; + n2 = n->Next; + lns = 0; + while (n2) + { + /* looping on Linestring(s) */ + if (strcmp (n2->Tag, "gml:LineString") == 0 + || strcmp (n2->Tag, "LineString") == 0) + ; + else + { + n = n2; + break; + } + srid = guessGmlSrid (n2); + n2 = n2->Next; + if (n2 == NULL) + return 0; + if (!gml_parse_linestring (p_data, geom, n2, srid, &next)) + return 0; + n2 = next; + if (n2 == NULL) + return 0; + lns++; + } + if (!lns) + return 0; + if (strcmp (n->Tag, "gml:lineStringMember") == 0 + || strcmp (n->Tag, "lineStringMember") == 0 + || strcmp (n->Tag, "gml:lineStringMembers") == 0 + || strcmp (n->Tag, "lineStringMembers") == 0) + ; + else + return 0; + n = n->Next; + } + return 1; +} + +static int +gml_parse_multi_curve (struct gml_data *p_data, gaiaGeomCollPtr geom, + gmlNodePtr node) +{ +/* parsing a */ + int srid; + int lns; + gmlNodePtr n2; + gmlNodePtr next; + gmlNodePtr n = node; + while (n) + { + /* looping on Curve Members */ + if (n->Next == NULL) + { + /* verifying the last GML node */ + if (strcmp (n->Tag, "gml:MultiCurve") == 0 + || strcmp (n->Tag, "MultiCurve") == 0) + break; + else + return 0; + } + if (strcmp (n->Tag, "gml:curveMember") == 0 + || strcmp (n->Tag, "curveMember") == 0 + || strcmp (n->Tag, "gml:curveMembers") == 0 + || strcmp (n->Tag, "curveMembers") == 0) + ; + else + return 0; + n2 = n->Next; + lns = 0; + while (n2) + { + /* looping on Curve(s) */ + if (strcmp (n2->Tag, "gml:Curve") == 0 + || strcmp (n2->Tag, "Curve") == 0) + ; + else + { + n = n2; + break; + } + srid = guessGmlSrid (n2); + n2 = n2->Next; + if (n2 == NULL) + return 0; + if (!gml_parse_curve (p_data, geom, n2, srid, &next)) + return 0; + n2 = next; + if (n2 == NULL) + return 0; + lns++; + } + if (!lns) + return 0; + if (strcmp (n->Tag, "gml:curveMember") == 0 + || strcmp (n->Tag, "curveMember") == 0 + || strcmp (n->Tag, "gml:curveMembers") == 0 + || strcmp (n->Tag, "curveMembers") == 0) + ; + else + return 0; + n = n->Next; + } + return 1; +} + +static int +gml_parse_multi_polygon (struct gml_data *p_data, gaiaGeomCollPtr geom, + gmlNodePtr node) +{ +/* parsing a */ + int srid; + int pgs; + gmlNodePtr n2; + gmlNodePtr next; + gmlNodePtr n = node; + while (n) + { + /* looping on Polygon Members */ + if (n->Next == NULL) + { + /* verifying the last GML node */ + if (strcmp (n->Tag, "gml:MultiPolygon") == 0 + || strcmp (n->Tag, "MultiPolygon") == 0) + break; + else + return 0; + } + if (strcmp (n->Tag, "gml:polygonMember") == 0 + || strcmp (n->Tag, "polygonMember") == 0 + || strcmp (n->Tag, "gml:polygonMembers") == 0 + || strcmp (n->Tag, "polygonMembers") == 0) + ; + else + return 0; + n2 = n->Next; + pgs = 0; + while (n2) + { + /* looping on Polygon(s) */ + if (strcmp (n2->Tag, "gml:Polygon") == 0 + || strcmp (n2->Tag, "Polygon") == 0) + ; + else + { + n = n2; + break; + } + srid = guessGmlSrid (n2); + n2 = n2->Next; + if (n2 == NULL) + return 0; + if (!gml_parse_polygon (p_data, geom, n2, srid, &next)) + return 0; + n2 = next; + if (n2 == NULL) + return 0; + pgs++; + } + if (!pgs) + return 0; + if (strcmp (n->Tag, "gml:polygonMember") == 0 + || strcmp (n->Tag, "polygonMember") == 0 + || strcmp (n->Tag, "gml:polygonMembers") == 0 + || strcmp (n->Tag, "polygonMembers") == 0) + ; + else + return 0; + n = n->Next; + } + return 1; +} + +static int +gml_parse_multi_surface (struct gml_data *p_data, gaiaGeomCollPtr geom, + gmlNodePtr node) +{ +/* parsing a */ + int srid; + int pgs; + gmlNodePtr n2; + gmlNodePtr next; + gmlNodePtr n = node; + while (n) + { + /* looping on Surface Members */ + if (n->Next == NULL) + { + /* verifying the last GML node */ + if (strcmp (n->Tag, "gml:MultiSurface") == 0 + || strcmp (n->Tag, "MultiSurface") == 0) + break; + else + return 0; + } + if (strcmp (n->Tag, "gml:surfaceMember") == 0 + || strcmp (n->Tag, "surfaceMember") == 0 + || strcmp (n->Tag, "gml:surfaceMembers") == 0 + || strcmp (n->Tag, "surfaceMembers") == 0) + ; + else + return 0; + n2 = n->Next; + pgs = 0; + while (n2) + { + /* looping on Polygon(s) */ + if (strcmp (n2->Tag, "gml:Polygon") == 0 + || strcmp (n2->Tag, "Polygon") == 0) + ; + else + { + n = n2; + break; + } + srid = guessGmlSrid (n2); + n2 = n2->Next; + if (n2 == NULL) + return 0; + if (!gml_parse_polygon (p_data, geom, n2, srid, &next)) + return 0; + n2 = next; + if (n2 == NULL) + return 0; + pgs++; + } + if (!pgs) + return 0; + if (strcmp (n->Tag, "gml:surfaceMember") == 0 + || strcmp (n->Tag, "surfaceMember") == 0 + || strcmp (n->Tag, "gml:surfaceMembers") == 0 + || strcmp (n->Tag, "surfaceMembers") == 0) + ; + else + return 0; + n = n->Next; + } + return 1; +} + +static int +gml_parse_multi_geometry (struct gml_data *p_data, gaiaGeomCollPtr geom, + gmlNodePtr node) +{ +/* parsing a */ + int srid; + int elems; + gmlNodePtr n2; + gmlNodePtr next; + gmlNodePtr n = node; + while (n) + { + /* looping on Geometry Members */ + if (n->Next == NULL) + { + /* verifying the last GML node */ + if (strcmp (n->Tag, "gml:MultiGeometry") == 0 + || strcmp (n->Tag, "MultiGeometry") == 0) + break; + else + return 0; + } + if (strcmp (n->Tag, "gml:geometryMember") == 0 + || strcmp (n->Tag, "geometryMember") == 0 + || strcmp (n->Tag, "gml:geometryMembers") == 0 + || strcmp (n->Tag, "geometryMembers") == 0) + ; + else + return 0; + n2 = n->Next; + elems = 0; + while (n2) + { + /* looping on elements */ + if (strcmp (n2->Tag, "gml:Point") == 0 + || strcmp (n2->Tag, "Point") == 0) + { + srid = guessGmlSrid (n2); + n2 = n2->Next; + if (n2 == NULL) + return 0; + if (!gml_parse_point (p_data, geom, n2, srid, &next)) + return 0; + n2 = next; + } + else if (strcmp (n2->Tag, "gml:LineString") == 0 + || strcmp (n2->Tag, "LineString") == 0) + { + srid = guessGmlSrid (n2); + n2 = n2->Next; + if (n2 == NULL) + return 0; + if (!gml_parse_linestring (p_data, geom, n2, srid, &next)) + return 0; + n2 = next; + } + else if (strcmp (n2->Tag, "gml:Curve") == 0 + || strcmp (n2->Tag, "Curve") == 0) + { + srid = guessGmlSrid (n2); + n2 = n2->Next; + if (n2 == NULL) + return 0; + if (!gml_parse_curve (p_data, geom, n2, srid, &next)) + return 0; + n2 = next; + } + else if (strcmp (n2->Tag, "gml:Polygon") == 0 + || strcmp (n2->Tag, "Polygon") == 0) + { + srid = guessGmlSrid (n2); + n2 = n2->Next; + if (n2 == NULL) + return 0; + if (!gml_parse_polygon (p_data, geom, n2, srid, &next)) + return 0; + n2 = next; + } + else + { + n = n2; + break; + } + elems++; + } + if (!elems) + return 0; + if (strcmp (n->Tag, "gml:geometryMember") == 0 + || strcmp (n->Tag, "geometryMember") == 0 + || strcmp (n->Tag, "gml:geometryMembers") == 0 + || strcmp (n->Tag, "geometryMembers") == 0) + ; + else + return 0; + n = n->Next; + } + return 1; +} + +static gaiaGeomCollPtr +gml_validate_geometry (const void *cache, struct gml_data *p_data, + gaiaGeomCollPtr chain, sqlite3 * sqlite_handle) +{ + int xy = 0; + int xyz = 0; + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaPointPtr save_pt; + gaiaLinestringPtr save_ln; + gaiaPolygonPtr save_pg; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + int ib; + int delete_g2; + gaiaGeomCollPtr g; + gaiaGeomCollPtr g2; + gaiaGeomCollPtr geom; + char *proj_from; + char *proj_to; + + g = chain; + while (g) + { + if (g != chain) + { + if (g->DimensionModel == GAIA_XY) + xy++; + if (g->DimensionModel == GAIA_XY_Z) + xyz++; + } + pt = g->FirstPoint; + while (pt) + { + pts++; + save_pt = pt; + pt = pt->Next; + } + ln = g->FirstLinestring; + while (ln) + { + lns++; + save_ln = ln; + ln = ln->Next; + } + pg = g->FirstPolygon; + while (pg) + { + pgs++; + save_pg = pg; + pg = pg->Next; + } + g = g->Next; + } + if (pts == 1 && lns == 0 && pgs == 0) + { + /* POINT */ + if (xy > 0) + { + /* 2D [XY] */ + geom = gaiaAllocGeomColl (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); + geom->Srid = chain->Srid; + if (chain->DeclaredType == GAIA_MULTIPOINT) + geom->DeclaredType = GAIA_MULTIPOINT; + else if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + geom->DeclaredType = GAIA_POINT; + gaiaAddPointToGeomColl (geom, save_pt->X, save_pt->Y); + return geom; + } + else + { + /* 3D [XYZ] */ + geom = gaiaAllocGeomCollXYZ (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); + geom->Srid = chain->Srid; + if (chain->DeclaredType == GAIA_MULTIPOINT) + geom->DeclaredType = GAIA_MULTIPOINT; + else if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + geom->DeclaredType = GAIA_POINT; + gaiaAddPointToGeomCollXYZ (geom, save_pt->X, save_pt->Y, + save_pt->Z); + return geom; + } + } + if (pts == 0 && lns == 1 && pgs == 0) + { + /* LINESTRING */ + if (xy > 0) + { + /* 2D [XY] */ + geom = gaiaAllocGeomColl (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); + } + else + { + /* 3D [XYZ] */ + geom = gaiaAllocGeomCollXYZ (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); + } + geom->Srid = chain->Srid; + if (chain->DeclaredType == GAIA_MULTILINESTRING) + geom->DeclaredType = GAIA_MULTILINESTRING; + else if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + geom->DeclaredType = GAIA_LINESTRING; + ln = gaiaAddLinestringToGeomColl (geom, save_ln->Points); + gaiaCopyLinestringCoords (ln, save_ln); + return geom; + } + if (pts == 0 && lns == 0 && pgs == 1) + { + /* POLYGON */ + if (xy > 0) + { + /* 2D [XY] */ + geom = gaiaAllocGeomColl (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); + } + else + { + /* 3D [XYZ] */ + geom = gaiaAllocGeomCollXYZ (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); + } + geom->Srid = chain->Srid; + if (chain->DeclaredType == GAIA_MULTIPOLYGON) + geom->DeclaredType = GAIA_MULTIPOLYGON; + else if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + geom->DeclaredType = GAIA_POLYGON; + i_ring = save_pg->Exterior; + pg = gaiaAddPolygonToGeomColl (geom, i_ring->Points, + save_pg->NumInteriors); + o_ring = pg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < save_pg->NumInteriors; ib++) + { + i_ring = save_pg->Interiors + ib; + o_ring = gaiaAddInteriorRing (pg, ib, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + return geom; + } + if (pts >= 1 && lns == 0 && pgs == 0) + { + /* MULTIPOINT */ + if (xy > 0) + { + /* 2D [XY] */ + geom = gaiaAllocGeomColl (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); + geom->Srid = chain->Srid; + if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + geom->DeclaredType = GAIA_MULTIPOINT; + g = chain; + while (g) + { + if (geom->Srid <= 0) + { + /* we haven't yet set any SRID */ + geom->Srid = g->Srid; + } + g2 = g; + delete_g2 = 0; + if (g->Srid != geom->Srid && g->Srid > 0 + && sqlite_handle != NULL) + { + /* we'll try to apply a reprojection */ +#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ + getProjParams (sqlite_handle, g->Srid, &proj_from); + getProjParams (sqlite_handle, geom->Srid, &proj_to); + if (proj_to == NULL || proj_from == NULL) + ; + else + { + if (cache != NULL) + g2 = gaiaTransform_r (cache, g, proj_from, + proj_to); + else + g2 = gaiaTransform (g, proj_from, + proj_to); + if (!g2) + g2 = g; + else + delete_g2 = 1; + } + if (proj_from) + free (proj_from); + if (proj_to) + free (proj_to); +#endif + } + pt = g2->FirstPoint; + while (pt) + { + gaiaAddPointToGeomColl (geom, pt->X, pt->Y); + pt = pt->Next; + } + if (delete_g2) + { + gmlMapDynClean (p_data, g2); + gaiaFreeGeomColl (g2); + } + g = g->Next; + } + return geom; + } + else + { + /* 3D [XYZ] */ + geom = gaiaAllocGeomCollXYZ (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); + geom->Srid = chain->Srid; + if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + geom->DeclaredType = GAIA_MULTIPOINT; + g = chain; + while (g) + { + if (geom->Srid <= 0) + { + /* we haven't yet a SRID set */ + geom->Srid = g->Srid; + } + g2 = g; + delete_g2 = 0; + if (g->Srid != geom->Srid && g->Srid > 0 + && sqlite_handle != NULL) + { + /* we'll try to apply a reprojection */ +#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ + getProjParams (sqlite_handle, g->Srid, &proj_from); + getProjParams (sqlite_handle, geom->Srid, &proj_to); + if (proj_to == NULL || proj_from == NULL) + ; + else + { + if (cache != NULL) + g2 = gaiaTransform_r (cache, g, proj_from, + proj_to); + else + g2 = gaiaTransform (g, proj_from, + proj_to); + if (!g2) + g2 = g; + else + delete_g2 = 1; + } + if (proj_from) + free (proj_from); + if (proj_to) + free (proj_to); +#endif + } + pt = g2->FirstPoint; + while (pt) + { + gaiaAddPointToGeomCollXYZ (geom, pt->X, pt->Y, + pt->Z); + pt = pt->Next; + } + if (delete_g2) + { + gmlMapDynClean (p_data, g2); + gaiaFreeGeomColl (g2); + } + g = g->Next; + } + return geom; + } + } + if (pts == 0 && lns >= 1 && pgs == 0) + { + /* MULTILINESTRING */ + if (xy > 0) + { + /* 2D [XY] */ + geom = gaiaAllocGeomColl (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); + geom->Srid = chain->Srid; + if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + geom->DeclaredType = GAIA_MULTILINESTRING; + g = chain; + while (g) + { + if (geom->Srid <= 0) + { + /* we haven't yet set any SRID */ + geom->Srid = g->Srid; + } + g2 = g; + delete_g2 = 0; + if (g->Srid != geom->Srid && g->Srid > 0 + && sqlite_handle != NULL) + { + /* we'll try to apply a reprojection */ +#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ + getProjParams (sqlite_handle, g->Srid, &proj_from); + getProjParams (sqlite_handle, geom->Srid, &proj_to); + if (proj_to == NULL || proj_from == NULL) + ; + else + { + if (cache != NULL) + g2 = gaiaTransform_r (cache, g, proj_from, + proj_to); + else + g2 = gaiaTransform (g, proj_from, + proj_to); + if (!g2) + g2 = g; + else + delete_g2 = 1; + } + if (proj_from) + free (proj_from); + if (proj_to) + free (proj_to); +#endif + } + ln = g2->FirstLinestring; + while (ln) + { + save_ln = + gaiaAddLinestringToGeomColl (geom, ln->Points); + gaiaCopyLinestringCoords (save_ln, ln); + ln = ln->Next; + } + if (delete_g2) + { + gmlMapDynClean (p_data, g2); + gaiaFreeGeomColl (g2); + } + g = g->Next; + } + return geom; + } + else + { + /* 3D [XYZ] */ + geom = gaiaAllocGeomCollXYZ (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); + geom->Srid = chain->Srid; + if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + geom->DeclaredType = GAIA_MULTILINESTRING; + g = chain; + while (g) + { + if (geom->Srid <= 0) + { + /* we haven't yet a SRID set */ + geom->Srid = g->Srid; + } + g2 = g; + delete_g2 = 0; + if (g->Srid != geom->Srid && g->Srid > 0 + && sqlite_handle != NULL) + { + /* we'll try to apply a reprojection */ +#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ + getProjParams (sqlite_handle, g->Srid, &proj_from); + getProjParams (sqlite_handle, geom->Srid, &proj_to); + if (proj_to == NULL || proj_from == NULL) + ; + else + { + if (cache != NULL) + g2 = gaiaTransform_r (cache, g, proj_from, + proj_to); + else + g2 = gaiaTransform (g, proj_from, + proj_to); + if (!g2) + g2 = g; + else + delete_g2 = 1; + } + if (proj_from) + free (proj_from); + if (proj_to) + free (proj_to); +#endif + } + ln = g2->FirstLinestring; + while (ln) + { + save_ln = + gaiaAddLinestringToGeomColl (geom, ln->Points); + gaiaCopyLinestringCoords (save_ln, ln); + ln = ln->Next; + } + if (delete_g2) + { + gmlMapDynClean (p_data, g2); + gaiaFreeGeomColl (g2); + } + g = g->Next; + } + return geom; + } + } + if (pts == 0 && lns == 0 && pgs >= 1) + { + /* MULTIPOLYGON */ + if (xy > 0) + { + /* 2D [XY] */ + geom = gaiaAllocGeomColl (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); + geom->Srid = chain->Srid; + if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + geom->DeclaredType = GAIA_MULTIPOLYGON; + g = chain; + while (g) + { + if (geom->Srid <= 0) + { + /* we haven't yet set any SRID */ + geom->Srid = g->Srid; + } + g2 = g; + delete_g2 = 0; + if (g->Srid != geom->Srid && g->Srid > 0 + && sqlite_handle != NULL) + { + /* we'll try to apply a reprojection */ +#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ + getProjParams (sqlite_handle, g->Srid, &proj_from); + getProjParams (sqlite_handle, geom->Srid, &proj_to); + if (proj_to == NULL || proj_from == NULL) + ; + else + { + if (cache != NULL) + g2 = gaiaTransform_r (cache, g, proj_from, + proj_to); + else + g2 = gaiaTransform (g, proj_from, + proj_to); + if (!g2) + g2 = g; + else + delete_g2 = 1; + } + if (proj_from) + free (proj_from); + if (proj_to) + free (proj_to); +#endif + } + pg = g2->FirstPolygon; + while (pg) + { + i_ring = pg->Exterior; + save_pg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, + pg->NumInteriors); + o_ring = save_pg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < pg->NumInteriors; ib++) + { + i_ring = pg->Interiors + ib; + o_ring = + gaiaAddInteriorRing (save_pg, ib, + i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + pg = pg->Next; + } + if (delete_g2) + { + gmlMapDynClean (p_data, g2); + gaiaFreeGeomColl (g2); + } + g = g->Next; + } + return geom; + } + else + { + /* 3D [XYZ] */ + geom = gaiaAllocGeomCollXYZ (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); + geom->Srid = chain->Srid; + if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + geom->DeclaredType = GAIA_MULTIPOLYGON; + g = chain; + while (g) + { + if (geom->Srid <= 0) + { + /* we haven't yet a SRID set */ + geom->Srid = g->Srid; + } + g2 = g; + delete_g2 = 0; + if (g->Srid != geom->Srid && g->Srid > 0 + && sqlite_handle != NULL) + { + /* we'll try to apply a reprojection */ +#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ + getProjParams (sqlite_handle, g->Srid, &proj_from); + getProjParams (sqlite_handle, geom->Srid, &proj_to); + if (proj_to == NULL || proj_from == NULL) + ; + else + { + if (cache != NULL) + g2 = gaiaTransform_r (cache, g, proj_from, + proj_to); + else + g2 = gaiaTransform (g, proj_from, + proj_to); + if (!g2) + g2 = g; + else + delete_g2 = 1; + } + if (proj_from) + free (proj_from); + if (proj_to) + free (proj_to); +#endif + } + pg = g2->FirstPolygon; + while (pg) + { + i_ring = pg->Exterior; + save_pg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, + pg->NumInteriors); + o_ring = save_pg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < pg->NumInteriors; ib++) + { + i_ring = pg->Interiors + ib; + o_ring = + gaiaAddInteriorRing (save_pg, ib, + i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + pg = pg->Next; + } + if (delete_g2) + { + gmlMapDynClean (p_data, g2); + gaiaFreeGeomColl (g2); + } + g = g->Next; + } + return geom; + } + } + if ((pts + lns + pgs) > 0) + { + /* GEOMETRYCOLLECTION */ + if (xy > 0) + { + /* 2D [XY] */ + geom = gaiaAllocGeomColl (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); + geom->Srid = chain->Srid; + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + g = chain; + while (g) + { + if (geom->Srid <= 0) + { + /* we haven't yet set any SRID */ + geom->Srid = g->Srid; + } + g2 = g; + delete_g2 = 0; + if (g->Srid != geom->Srid && g->Srid > 0 + && sqlite_handle != NULL) + { + /* we'll try to apply a reprojection */ +#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ + getProjParams (sqlite_handle, g->Srid, &proj_from); + getProjParams (sqlite_handle, geom->Srid, &proj_to); + if (proj_to == NULL || proj_from == NULL) + ; + else + { + if (cache != NULL) + g2 = gaiaTransform_r (cache, g, proj_from, + proj_to); + else + g2 = gaiaTransform (g, proj_from, + proj_to); + if (!g2) + g2 = g; + else + delete_g2 = 1; + } + if (proj_from) + free (proj_from); + if (proj_to) + free (proj_to); +#endif + } + pt = g2->FirstPoint; + while (pt) + { + gaiaAddPointToGeomColl (geom, pt->X, pt->Y); + pt = pt->Next; + } + ln = g2->FirstLinestring; + while (ln) + { + save_ln = + gaiaAddLinestringToGeomColl (geom, ln->Points); + gaiaCopyLinestringCoords (save_ln, ln); + ln = ln->Next; + } + pg = g2->FirstPolygon; + while (pg) + { + i_ring = pg->Exterior; + save_pg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, + pg->NumInteriors); + o_ring = save_pg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < pg->NumInteriors; ib++) + { + i_ring = pg->Interiors + ib; + o_ring = + gaiaAddInteriorRing (save_pg, ib, + i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + pg = pg->Next; + } + if (delete_g2) + { + gmlMapDynClean (p_data, g2); + gaiaFreeGeomColl (g2); + } + g = g->Next; + } + return geom; + } + else + { + /* 3D [XYZ] */ + geom = gaiaAllocGeomCollXYZ (); + gmlMapDynAlloc (p_data, GML_DYN_GEOM, geom); + geom->Srid = chain->Srid; + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + g = chain; + while (g) + { + if (geom->Srid <= 0) + { + /* we haven't yet a SRID set */ + geom->Srid = g->Srid; + } + g2 = g; + delete_g2 = 0; + if (g->Srid != geom->Srid && g->Srid > 0 + && sqlite_handle != NULL) + { + /* we'll try to apply a reprojection */ +#ifndef OMIT_PROJ /* but only if PROJ.4 is actually available */ + getProjParams (sqlite_handle, g->Srid, &proj_from); + getProjParams (sqlite_handle, geom->Srid, &proj_to); + if (*proj_to == '\0' || *proj_from == '\0') + ; + else + { + if (cache != NULL) + g2 = gaiaTransform_r (cache, g, proj_from, + proj_to); + else + g2 = gaiaTransform (g, proj_from, + proj_to); + if (!g2) + g2 = g; + else + delete_g2 = 1; + } + if (proj_from) + free (proj_from); + if (proj_to) + free (proj_to); +#endif + } + pt = g2->FirstPoint; + while (pt) + { + gaiaAddPointToGeomCollXYZ (geom, pt->X, pt->Y, + pt->Z); + pt = pt->Next; + } + ln = g2->FirstLinestring; + while (ln) + { + save_ln = + gaiaAddLinestringToGeomColl (geom, ln->Points); + gaiaCopyLinestringCoords (save_ln, ln); + ln = ln->Next; + } + pg = g2->FirstPolygon; + while (pg) + { + i_ring = pg->Exterior; + save_pg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, + pg->NumInteriors); + o_ring = save_pg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < pg->NumInteriors; ib++) + { + i_ring = pg->Interiors + ib; + o_ring = + gaiaAddInteriorRing (save_pg, ib, + i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + pg = pg->Next; + } + if (delete_g2) + { + gmlMapDynClean (p_data, g2); + gaiaFreeGeomColl (g2); + } + g = g->Next; + } + return geom; + } + } + return NULL; +} + +static void +gml_free_geom_chain (struct gml_data *p_data, gaiaGeomCollPtr geom) +{ +/* deleting a chain of preliminary geometries */ + gaiaGeomCollPtr gn; + while (geom) + { + gn = geom->Next; + gmlMapDynClean (p_data, geom); + gaiaFreeGeomColl (geom); + geom = gn; + } +} + +static gaiaGeomCollPtr +gml_build_geometry (const void *cache, struct gml_data *p_data, gmlNodePtr tree, + sqlite3 * sqlite_handle) +{ +/* attempting to build a geometry from GML nodes */ + gaiaGeomCollPtr geom; + gaiaGeomCollPtr result; + int geom_type; + gmlNodePtr next; + + if (tree == NULL) + return NULL; + geom_type = guessGmlGeometryType (tree); + if (geom_type == GAIA_GML_UNKNOWN) + { + /* unsupported main geometry type */ + return NULL; + } +/* creating the main geometry */ + geom = gaiaAllocGeomColl (); + geom->Srid = guessGmlSrid (tree); + + switch (geom_type) + { + /* parsing GML nodes accordingly with declared GML type */ + case GAIA_GML_POINT: + geom->DeclaredType = GAIA_POINT; + if (!gml_parse_point (p_data, geom, tree->Next, geom->Srid, &next)) + goto error; + break; + case GAIA_GML_LINESTRING: + geom->DeclaredType = GAIA_LINESTRING; + if (!gml_parse_linestring + (p_data, geom, tree->Next, geom->Srid, &next)) + goto error; + break; + case GAIA_GML_CURVE: + geom->DeclaredType = GAIA_LINESTRING; + if (!gml_parse_curve (p_data, geom, tree->Next, geom->Srid, &next)) + goto error; + break; + case GAIA_GML_POLYGON: + geom->DeclaredType = GAIA_POLYGON; + if (!gml_parse_polygon (p_data, geom, tree->Next, geom->Srid, &next)) + goto error; + if (next != NULL) + goto error; + break; + case GAIA_GML_MULTIPOINT: + geom->DeclaredType = GAIA_MULTIPOINT; + if (!gml_parse_multi_point (p_data, geom, tree->Next)) + goto error; + break; + case GAIA_GML_MULTILINESTRING: + geom->DeclaredType = GAIA_MULTILINESTRING; + if (!gml_parse_multi_linestring (p_data, geom, tree->Next)) + goto error; + break; + case GAIA_GML_MULTICURVE: + geom->DeclaredType = GAIA_MULTILINESTRING; + if (!gml_parse_multi_curve (p_data, geom, tree->Next)) + goto error; + break; + case GAIA_GML_MULTIPOLYGON: + geom->DeclaredType = GAIA_MULTIPOLYGON; + if (!gml_parse_multi_polygon (p_data, geom, tree->Next)) + goto error; + break; + case GAIA_GML_MULTISURFACE: + geom->DeclaredType = GAIA_MULTIPOLYGON; + if (!gml_parse_multi_surface (p_data, geom, tree->Next)) + goto error; + break; + case GAIA_GML_MULTIGEOMETRY: + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + if (!gml_parse_multi_geometry (p_data, geom, tree->Next)) + goto error; + break; + case GAIA_GML_BOX: + geom->DeclaredType = GAIA_POLYGON; + if (!gml_parse_box (p_data, geom, tree->Next, geom->Srid, &next)) + goto error; + break; + }; + +/* attempting to build the final geometry */ + result = gml_validate_geometry (cache, p_data, geom, sqlite_handle); + if (result == NULL) + goto error; + gml_free_geom_chain (p_data, geom); + return result; + + error: + gml_free_geom_chain (p_data, geom); + return NULL; +} + + +/* including LEMON generated code */ +#include "Gml.c" + + + +/* +** CAVEAT: there is an incompatibility between LEMON and FLEX +** this macro resolves the issue +*/ +#undef yy_accept +#define yy_accept yy_gml_flex_accept + + + +/* including FLEX generated code */ +#include "lex.Gml.c" + + + +static gaiaGeomCollPtr +gaiaParseGmlCommon (const void *cache, const unsigned char *dirty_buffer, + sqlite3 * sqlite_handle) +{ + void *pParser = ParseAlloc (malloc); + /* Linked-list of token values */ + gmlFlexToken *tokens = malloc (sizeof (gmlFlexToken)); + /* Pointer to the head of the list */ + gmlFlexToken *head = tokens; + int yv; + gaiaGeomCollPtr geom = NULL; + yyscan_t scanner; + struct gml_data str_data; + +/* initializing the helper structs */ + str_data.gml_line = 1; + str_data.gml_col = 1; + str_data.gml_parse_error = 0; + str_data.gml_first_dyn_block = NULL; + str_data.gml_last_dyn_block = NULL; + str_data.result = NULL; + +/* initializing the scanner state */ + Gmllex_init_extra (&str_data, &scanner); + + str_data.GmlLval.pval = NULL; + tokens->value = NULL; + tokens->Next = NULL; + Gml_scan_string ((char *) dirty_buffer, scanner); + + /* + / Keep tokenizing until we reach the end + / yylex() will return the next matching Token for us. + */ + while ((yv = yylex (scanner)) != 0) + { + if (yv == -1) + { + str_data.gml_parse_error = 1; + break; + } + tokens->Next = malloc (sizeof (gmlFlexToken)); + tokens->Next->Next = NULL; + gml_xferString (&(tokens->Next->value), str_data.GmlLval.pval); + /* Pass the token to the wkt parser created from lemon */ + Parse (pParser, yv, &(tokens->Next->value), &str_data); + tokens = tokens->Next; + } + /* This denotes the end of a line as well as the end of the parser */ + Parse (pParser, GML_NEWLINE, 0, &str_data); + ParseFree (pParser, free); + Gmllex_destroy (scanner); + + /* Assigning the token as the end to avoid seg faults while cleaning */ + tokens->Next = NULL; + gml_cleanup (head); + gml_freeString (&(str_data.GmlLval.pval)); + + if (str_data.gml_parse_error) + { + if (str_data.result) + { + /* if a Geometry-result has been produced, the stack is already cleaned */ + gml_freeTree (&str_data, str_data.result); + gmlCleanMapDynAlloc (&str_data, 0); + } + else + { + /* otherwise we are required to clean the stack */ + gmlCleanMapDynAlloc (&str_data, 1); + } + return NULL; + } + + if (str_data.result == NULL) + { + gmlCleanMapDynAlloc (&str_data, 0); + return NULL; + } + + /* attempting to build a geometry from GML */ + geom = + gml_build_geometry (cache, &str_data, str_data.result, sqlite_handle); + gml_freeTree (&str_data, str_data.result); + gmlCleanMapDynAlloc (&str_data, 0); + return geom; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaParseGml (const unsigned char *dirty_buffer, sqlite3 * sqlite_handle) +{ + return gaiaParseGmlCommon (NULL, dirty_buffer, sqlite_handle); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaParseGml_r (const void *p_cache, const unsigned char *dirty_buffer, + sqlite3 * sqlite_handle) +{ + return gaiaParseGmlCommon (p_cache, dirty_buffer, sqlite_handle); +} + + +/* +** CAVEAT: we must now undefine any Lemon/Flex own macro +*/ +#undef YYNOCODE +#undef YYNSTATE +#undef YYNRULE +#undef YY_SHIFT_MAX +#undef YY_SHIFT_USE_DFLT +#undef YY_REDUCE_USE_DFLT +#undef YY_REDUCE_MAX +#undef YY_FLUSH_BUFFER +#undef YY_DO_BEFORE_ACTION +#undef YY_NUM_RULES +#undef YY_END_OF_BUFFER +#undef YY_END_FILE +#undef YYACTIONTYPE +#undef YY_SZ_ACTTAB +#undef YY_NEW_FILE +#undef BEGIN +#undef YY_START +#undef YY_CURRENT_BUFFER +#undef YY_CURRENT_BUFFER_LVALUE +#undef YY_STATE_BUF_SIZE +#undef YY_DECL +#undef YY_FATAL_ERROR +#undef YYMINORTYPE +#undef YY_CHAR +#undef YYSTYPE +#undef input +#undef ParseAlloc +#undef ParseFree +#undef ParseStackPeak +#undef Parse +#undef yyalloc +#undef yyfree +#undef yyin +#undef yyleng +#undef yyless +#undef yylex +#undef yylineno +#undef yyout +#undef yyrealloc +#undef yyrestart +#undef yyStackEntry +#undef yytext +#undef yywrap +#undef yyzerominor +#undef yy_accept +#undef yy_action +#undef yy_base +#undef yy_buffer_stack +#undef yy_buffer_stack_max +#undef yy_buffer_stack_top +#undef yy_c_buf_p +#undef yy_chk +#undef yy_create_buffer +#undef yy_def +#undef yy_default +#undef yy_delete_buffer +#undef yy_destructor +#undef yy_ec +#undef yy_fatal_error +#undef yy_find_reduce_action +#undef yy_find_shift_action +#undef yy_flex_debug +#undef yy_flush_buffer +#undef yy_get_next_buffer +#undef yy_get_previous_state +#undef yy_init +#undef yy_init_buffer +#undef yy_init_globals +#undef yy_load_buffer +#undef yy_load_buffer_state +#undef yy_lookahead +#undef yy_meta +#undef yy_new_buffer +#undef yy_nxt +#undef yy_parse_failed +#undef yy_pop_parser_stack +#undef yy_reduce +#undef yy_reduce_ofst +#undef yy_set_bol +#undef yy_set_interactive +#undef yy_shift +#undef yy_shift_ofst +#undef yy_start +#undef yy_state_type +#undef yy_switch_to_buffer +#undef yy_syntax_error +#undef yy_trans_info +#undef yy_try_NUL_trans +#undef yyParser +#undef yyStackEntry +#undef yyStackOverflow +#undef yyRuleInfo +#undef yytext_ptr +#undef yyunput +#undef yyzerominor +#undef ParseARG_SDECL +#undef ParseARG_PDECL +#undef ParseARG_FETCH +#undef ParseARG_STORE +#undef REJECT +#undef yymore +#undef YY_MORE_ADJ +#undef YY_RESTORE_YY_MORE_OFFSET +#undef YY_LESS_LINENO +#undef yyTracePrompt +#undef yyTraceFILE +#undef yyTokenName +#undef yyRuleName +#undef ParseTrace + +#undef yylex +#undef YY_DECL diff --git a/src/spatialite/src/gaiageo/gg_kml.c b/src/spatialite/src/gaiageo/gg_kml.c new file mode 100644 index 0000000..9cf48a7 --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_kml.c @@ -0,0 +1,2129 @@ +/* + + gg_kml.c -- KML parser/lexer + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011-2013 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include + +#if defined(_WIN32) || defined(WIN32) +#include +#ifndef isatty +#define isatty _isatty +#endif +#ifndef fileno +#define fileno _fileno +#endif +#endif + +#define KML_PARSER_OPEN_NODE 1 +#define KML_PARSER_SELF_CLOSED_NODE 2 +#define KML_PARSER_CLOSED_NODE 3 + +#define GAIA_KML_UNKNOWN 0 +#define GAIA_KML_POINT 1 +#define GAIA_KML_LINESTRING 2 +#define GAIA_KML_POLYGON 3 +#define GAIA_KML_MULTIGEOMETRY 4 + +#define KML_DYN_NONE 0 +#define KML_DYN_DYNLINE 1 +#define KML_DYN_GEOM 2 +#define KML_DYN_DYNPG 3 +#define KML_DYN_NODE 4 +#define KML_DYN_COORD 5 +#define KML_DYN_ATTRIB 6 + +#define KML_DYN_BLOCK 1024 + + + +/* +** CAVEAT: we must redefine any Lemon/Flex own macro +*/ +#define YYMINORTYPE KML_MINORTYPE +#define YY_CHAR KML_YY_CHAR +#define input kml_input +#define ParseAlloc kmlParseAlloc +#define ParseFree kmlParseFree +#define ParseStackPeak kmlParseStackPeak +#define Parse kmlParse +#define yyStackEntry kml_yyStackEntry +#define yyzerominor kml_yyzerominor +#define yy_accept kml_yy_accept +#define yy_action kml_yy_action +#define yy_base kml_yy_base +#define yy_buffer_stack kml_yy_buffer_stack +#define yy_buffer_stack_max kml_yy_buffer_stack_max +#define yy_buffer_stack_top kml_yy_buffer_stack_top +#define yy_c_buf_p kml_yy_c_buf_p +#define yy_chk kml_yy_chk +#define yy_def kml_yy_def +#define yy_default kml_yy_default +#define yy_destructor kml_yy_destructor +#define yy_ec kml_yy_ec +#define yy_fatal_error kml_yy_fatal_error +#define yy_find_reduce_action kml_yy_find_reduce_action +#define yy_find_shift_action kml_yy_find_shift_action +#define yy_get_next_buffer kml_yy_get_next_buffer +#define yy_get_previous_state kml_yy_get_previous_state +#define yy_init kml_yy_init +#define yy_init_globals kml_yy_init_globals +#define yy_lookahead kml_yy_lookahead +#define yy_meta kml_yy_meta +#define yy_nxt kml_yy_nxt +#define yy_parse_failed kml_yy_parse_failed +#define yy_pop_parser_stack kml_yy_pop_parser_stack +#define yy_reduce kml_yy_reduce +#define yy_reduce_ofst kml_yy_reduce_ofst +#define yy_shift kml_yy_shift +#define yy_shift_ofst kml_yy_shift_ofst +#define yy_start kml_yy_start +#define yy_state_type kml_yy_state_type +#define yy_syntax_error kml_yy_syntax_error +#define yy_trans_info kml_yy_trans_info +#define yy_try_NUL_trans kml_yy_try_NUL_trans +#define yyParser kml_yyParser +#define yyStackEntry kml_yyStackEntry +#define yyStackOverflow kml_yyStackOverflow +#define yyRuleInfo kml_yyRuleInfo +#define yyunput kml_yyunput +#define yyzerominor kml_yyzerominor +#define yyTraceFILE kml_yyTraceFILE +#define yyTracePrompt kml_yyTracePrompt +#define yyTokenName kml_yyTokenName +#define yyRuleName kml_yyRuleName +#define ParseTrace kml_ParseTrace + +#define yylex kml_yylex +#define YY_DECL int yylex (yyscan_t yyscanner) + + +/* including LEMON generated header */ +#include "Kml.h" + + +typedef union +{ + char *pval; + struct symtab *symp; +} kml_yystype; +#define YYSTYPE kml_yystype + + +/* +** This is a linked-list struct to store all the values for each token. +*/ +typedef struct kmlFlexTokenStruct +{ + char *value; + struct kmlFlexTokenStruct *Next; +} kmlFlexToken; + +typedef struct kml_coord +{ + char *Value; + struct kml_coord *Next; +} kmlCoord; + +typedef kmlCoord *kmlCoordPtr; + +typedef struct kml_attr +{ + char *Key; + char *Value; + struct kml_attr *Next; +} kmlAttr; +typedef kmlAttr *kmlAttrPtr; + +typedef struct kml_node +{ + char *Tag; + int Type; + int Error; + struct kml_attr *Attributes; + struct kml_coord *Coordinates; + struct kml_node *Next; +} kmlNode; +typedef kmlNode *kmlNodePtr; + +typedef struct kml_dynamic_ring +{ + gaiaDynamicLinePtr ring; + int interior; + int has_z; + struct kml_dynamic_ring *next; +} kmlDynamicRing; +typedef kmlDynamicRing *kmlDynamicRingPtr; + +typedef struct kml_dynamic_polygon +{ + struct kml_dynamic_ring *first; + struct kml_dynamic_ring *last; +} kmlDynamicPolygon; +typedef kmlDynamicPolygon *kmlDynamicPolygonPtr; + +struct kml_dyn_block +{ +/* a struct taking trace of dynamic allocations */ + int type[KML_DYN_BLOCK]; + void *ptr[KML_DYN_BLOCK]; + int index; + struct kml_dyn_block *next; +}; + +struct kml_data +{ +/* a struct used to make the lexer-parser reentrant and thread-safe */ + int kml_parse_error; + int kml_line; + int kml_col; + struct kml_dyn_block *kml_first_dyn_block; + struct kml_dyn_block *kml_last_dyn_block; + kmlNodePtr result; + YYSTYPE KmlLval; +}; + +static struct kml_dyn_block * +kmlCreateDynBlock (void) +{ +/* allocating a new block to trace dynamic allocations */ + int i; + struct kml_dyn_block *p = malloc (sizeof (struct kml_dyn_block)); + for (i = 0; i < KML_DYN_BLOCK; i++) + { + /* initializing map entries */ + p->type[i] = KML_DYN_NONE; + p->ptr[i] = NULL; + } + p->index = 0; + p->next = NULL; + return p; +} + +static void +kmlMapDynAlloc (struct kml_data *p_data, int type, void *ptr) +{ +/* appending a dynamic allocation into the map */ + struct kml_dyn_block *p; + if (p_data->kml_first_dyn_block == NULL) + { + /* inserting the first block of the map */ + p = kmlCreateDynBlock (); + p_data->kml_first_dyn_block = p; + p_data->kml_last_dyn_block = p; + } + if (p_data->kml_last_dyn_block->index >= KML_DYN_BLOCK) + { + /* adding a further block to the map */ + p = kmlCreateDynBlock (); + p_data->kml_last_dyn_block->next = p; + p_data->kml_last_dyn_block = p; + } + p_data->kml_last_dyn_block->type[p_data->kml_last_dyn_block->index] = type; + p_data->kml_last_dyn_block->ptr[p_data->kml_last_dyn_block->index] = ptr; + p_data->kml_last_dyn_block->index++; +} + +static void +kmlMapDynClean (struct kml_data *p_data, void *ptr) +{ +/* deleting a dynamic allocation from the map */ + int i; + struct kml_dyn_block *p = p_data->kml_first_dyn_block; + while (p) + { + for (i = 0; i < KML_DYN_BLOCK; i++) + { + switch (p->type[i]) + { + case KML_DYN_DYNLINE: + case KML_DYN_GEOM: + case KML_DYN_DYNPG: + case KML_DYN_NODE: + case KML_DYN_COORD: + case KML_DYN_ATTRIB: + if (p->ptr[i] == ptr) + { + p->type[i] = KML_DYN_NONE; + return; + } + break; + }; + } + p = p->next; + } +} + +static void +kml_free_dyn_polygon (kmlDynamicPolygonPtr dyn) +{ +/* deleting a dynamic polygon (ring collection) */ + kmlDynamicRingPtr r; + kmlDynamicRingPtr rn; + if (!dyn) + return; + r = dyn->first; + while (r) + { + rn = r->next; + if (r->ring) + gaiaFreeDynamicLine (r->ring); + free (r); + r = rn; + } + free (dyn); +} + +static void +kml_free_coord (kmlCoordPtr c) +{ +/* deleting a KML coordinate */ + if (c == NULL) + return; + if (c->Value) + free (c->Value); + free (c); +} + +static void +kml_free_attrib (kmlAttrPtr a) +{ +/* deleting a KML attribute */ + if (a == NULL) + return; + if (a->Key) + free (a->Key); + if (a->Value) + free (a->Value); + free (a); +} + +static void +kml_free_node (kmlNodePtr n) +{ +/* deleting a KML node */ + kmlAttrPtr a; + kmlAttrPtr an; + kmlCoordPtr c; + kmlCoordPtr cn; + if (n == NULL) + return; + a = n->Attributes; + while (a) + { + an = a->Next; + kml_free_attrib (a); + a = an; + } + c = n->Coordinates; + while (c) + { + cn = c->Next; + kml_free_coord (c); + c = cn; + } + if (n->Tag) + free (n->Tag); + free (n); +} + +static void +kmlCleanMapDynAlloc (struct kml_data *p_data, int clean_all) +{ +/* cleaning the dynamic allocations map */ + int i; + struct kml_dyn_block *pn; + struct kml_dyn_block *p = p_data->kml_first_dyn_block; + while (p) + { + if (clean_all) + { + for (i = 0; i < KML_DYN_BLOCK; i++) + { + /* deleting Geometry objects */ + switch (p->type[i]) + { + case KML_DYN_DYNLINE: + gaiaFreeDynamicLine ((gaiaDynamicLinePtr) + (p->ptr[i])); + break; + case KML_DYN_GEOM: + gaiaFreeGeomColl ((gaiaGeomCollPtr) (p->ptr[i])); + break; + case KML_DYN_DYNPG: + kml_free_dyn_polygon ((kmlDynamicPolygonPtr) + (p->ptr[i])); + break; + case KML_DYN_NODE: + kml_free_node ((kmlNodePtr) (p->ptr[i])); + break; + case KML_DYN_COORD: + kml_free_coord ((kmlCoordPtr) (p->ptr[i])); + break; + case KML_DYN_ATTRIB: + kml_free_attrib ((kmlAttrPtr) (p->ptr[i])); + break; + }; + } + } + /* deleting the map block */ + pn = p->next; + free (p); + p = pn; + } +} + +static kmlDynamicPolygonPtr +kml_alloc_dyn_polygon (struct kml_data *p_data) +{ +/* creating a dynamic polygon (ring collection) */ + kmlDynamicPolygonPtr p = malloc (sizeof (kmlDynamicPolygon)); + kmlMapDynAlloc (p_data, KML_DYN_DYNPG, p); + p->first = NULL; + p->last = NULL; + return p; +} + +static void +kml_add_polygon_ring (kmlDynamicPolygonPtr dyn_pg, gaiaDynamicLinePtr dyn, + int interior, int has_z) +{ +/* inserting a further ring into the collection (dynamic polygon) */ + kmlDynamicRingPtr p = malloc (sizeof (kmlDynamicRing)); + p->ring = dyn; + p->interior = interior; + p->has_z = has_z; + p->next = NULL; + if (dyn_pg->first == NULL) + dyn_pg->first = p; + if (dyn_pg->last != NULL) + dyn_pg->last->next = p; + dyn_pg->last = p; +} + +static void +kml_freeString (char **ptr) +{ +/* releasing a string from the lexer */ + if (*ptr != NULL) + free (*ptr); + *ptr = NULL; +} + +static void +kml_saveString (char **ptr, const char *str) +{ +/* saving a string from the lexer */ + int len = strlen (str); + kml_freeString (ptr); + *ptr = malloc (len + 1); + strcpy (*ptr, str); +} + +static kmlCoordPtr +kml_coord (struct kml_data *p_data, void *value) +{ +/* creating a coord Item */ + int len; + kmlFlexToken *tok = (kmlFlexToken *) value; + kmlCoordPtr c = malloc (sizeof (kmlCoord)); + kmlMapDynAlloc (p_data, KML_DYN_COORD, c); + len = strlen (tok->value); + c->Value = malloc (len + 1); + strcpy (c->Value, tok->value); + c->Next = NULL; + return c; +} + +static kmlAttrPtr +kml_attribute (struct kml_data *p_data, void *key, void *value) +{ +/* creating an attribute */ + int len; + kmlFlexToken *k_tok = (kmlFlexToken *) key; + kmlFlexToken *v_tok = (kmlFlexToken *) value; + kmlAttrPtr a = malloc (sizeof (kmlAttr)); + kmlMapDynAlloc (p_data, KML_DYN_ATTRIB, a); + len = strlen (k_tok->value); + a->Key = malloc (len + 1); + strcpy (a->Key, k_tok->value); + len = strlen (v_tok->value); +/* we need to de-quote the string, removing first and last ".." */ + if (*(v_tok->value + 0) == '"' && *(v_tok->value + len - 1) == '"') + { + a->Value = malloc (len - 1); + memcpy (a->Value, v_tok->value + 1, len - 1); + *(a->Value + len - 1) = '\0'; + } + else + { + a->Value = malloc (len + 1); + strcpy (a->Value, v_tok->value); + } + a->Next = NULL; + return a; +} + +static void +kml_freeTree (kmlNodePtr t) +{ +/* deleting a KML tree */ + kmlNodePtr n; + kmlNodePtr nn; + n = t; + while (n) + { + nn = n->Next; + kml_free_node (n); + n = nn; + } +} + +static kmlNodePtr +kml_createNode (struct kml_data *p_data, void *tag, void *attributes, + void *coords) +{ +/* creating a node */ + kmlAttrPtr a; + kmlCoordPtr c; + int len; + kmlFlexToken *tok = (kmlFlexToken *) tag; + kmlNodePtr n = malloc (sizeof (kmlNode)); + kmlMapDynAlloc (p_data, KML_DYN_NODE, n); + len = strlen (tok->value); + n->Tag = malloc (len + 1); + strcpy (n->Tag, tok->value); + n->Type = KML_PARSER_OPEN_NODE; + n->Error = 0; + a = (kmlAttrPtr) attributes; + while (a) + { + /* transferring ownership of attributes */ + kmlMapDynClean (p_data, a); + a = a->Next; + } + n->Attributes = attributes; + c = (kmlCoordPtr) coords; + while (c) + { + /* transferring ownership of attributes */ + kmlMapDynClean (p_data, c); + c = c->Next; + } + n->Coordinates = coords; + n->Next = NULL; + return n; +} + +static kmlNodePtr +kml_createSelfClosedNode (struct kml_data *p_data, void *tag, void *attributes) +{ +/* creating a self-closed node */ + kmlAttrPtr a; + int len; + kmlFlexToken *tok = (kmlFlexToken *) tag; + kmlNodePtr n = malloc (sizeof (kmlNode)); + kmlMapDynAlloc (p_data, KML_DYN_NODE, n); + len = strlen (tok->value); + n->Tag = malloc (len + 1); + strcpy (n->Tag, tok->value); + n->Type = KML_PARSER_SELF_CLOSED_NODE; + n->Error = 0; + a = (kmlAttrPtr) attributes; + while (a) + { + /* transferring ownership of attributes */ + kmlMapDynClean (p_data, a); + a = a->Next; + } + n->Attributes = attributes; + n->Coordinates = NULL; + n->Next = NULL; + return n; +} + +static kmlNodePtr +kml_closingNode (struct kml_data *p_data, void *tag) +{ +/* creating a closing node */ + int len; + kmlFlexToken *tok = (kmlFlexToken *) tag; + kmlNodePtr n = malloc (sizeof (kmlNode)); + kmlMapDynAlloc (p_data, KML_DYN_NODE, n); + len = strlen (tok->value); + n->Tag = malloc (len + 1); + strcpy (n->Tag, tok->value); + n->Type = KML_PARSER_CLOSED_NODE; + n->Error = 0; + n->Attributes = NULL; + n->Coordinates = NULL; + n->Next = NULL; + return n; +} + +static int +kml_cleanup (kmlFlexToken * token) +{ + kmlFlexToken *ptok; + kmlFlexToken *ptok_n; + if (token == NULL) + return 0; + ptok = token; + while (ptok) + { + ptok_n = ptok->Next; + if (ptok->value != NULL) + free (ptok->value); + free (ptok); + ptok = ptok_n; + } + return 0; +} + +static void +kml_xferString (char **p, const char *str) +{ +/* saving some token */ + int len; + if (str == NULL) + { + *p = NULL; + return; + } + len = strlen (str); + *p = malloc (len + 1); + strcpy (*p, str); +} + +static int +guessKmlGeometryType (kmlNodePtr node) +{ +/* attempting to guess the Geometry Type for a KML node */ + int type = GAIA_KML_UNKNOWN; + if (strcmp (node->Tag, "Point") == 0) + type = GAIA_KML_POINT; + if (strcmp (node->Tag, "LineString") == 0) + type = GAIA_KML_LINESTRING; + if (strcmp (node->Tag, "Polygon") == 0) + type = GAIA_KML_POLYGON; + if (strcmp (node->Tag, "MultiGeometry") == 0) + type = GAIA_KML_MULTIGEOMETRY; + return type; +} + +static int +kml_check_coord (const char *value) +{ +/* checking a KML coordinate */ + int decimal = 0; + const char *p = value; + if (*p == '+' || *p == '-') + p++; + while (*p != '\0') + { + if (*p == '.') + { + if (!decimal) + decimal = 1; + else + return 0; + } + else if (*p >= '0' && *p <= '9') + ; + else + return 0; + p++; + } + return 1; +} + +static int +kml_extract_coords (const char *value, double *x, double *y, double *z, + int *count) +{ +/* extracting KML coords from a comma-separated string */ + const char *in = value; + char buf[1024]; + char *out = buf; + *out = '\0'; + + while (*in != '\0') + { + if (*in == ',') + { + *out = '\0'; + if (*buf != '\0') + { + if (!kml_check_coord (buf)) + return 0; + switch (*count) + { + case 0: + *x = atof (buf); + *count += 1; + break; + case 1: + *y = atof (buf); + *count += 1; + break; + case 2: + *z = atof (buf); + *count += 1; + break; + default: + *count += 1; + break; + }; + } + in++; + out = buf; + *out = '\0'; + continue; + } + *out++ = *in++; + } + *out = '\0'; +/* parsing the last item */ + if (*buf != '\0') + { + if (!kml_check_coord (buf)) + return 0; + switch (*count) + { + case 0: + *x = atof (buf); + *count += 1; + break; + case 1: + *y = atof (buf); + *count += 1; + break; + case 2: + *z = atof (buf); + *count += 1; + break; + default: + *count += 1; + break; + }; + } + return 1; +} + +static int +kml_parse_point_v2 (kmlCoordPtr coord, double *x, double *y, double *z, + int *has_z) +{ +/* parsing KML [Point] */ + int count = 0; + kmlCoordPtr c = coord; + while (c) + { + if (!kml_extract_coords (c->Value, x, y, z, &count)) + return 0; + c = c->Next; + } + if (count == 2) + { + *has_z = 0; + return 1; + } + if (count == 3) + { + *has_z = 1; + return 1; + } + return 0; +} + +static int +kml_parse_point (struct kml_data *p_data, gaiaGeomCollPtr geom, kmlNodePtr node, + kmlNodePtr * next) +{ +/* parsing a */ + double x; + double y; + double z; + int has_z; + gaiaGeomCollPtr pt; + gaiaGeomCollPtr last; + + if (strcmp (node->Tag, "coordinates") == 0) + { + /* parsing a KML */ + if (!kml_parse_point_v2 (node->Coordinates, &x, &y, &z, &has_z)) + return 0; + node = node->Next; + if (node == NULL) + return 0; + if (strcmp (node->Tag, "coordinates") == 0) + ; + else + return 0; + node = node->Next; + if (node == NULL) + return 0; + if (strcmp (node->Tag, "Point") == 0) + ; + else + return 0; + *next = node->Next; + goto ok; + } + return 0; + + ok: +/* ok, KML nodes match as expected */ + if (has_z) + { + pt = gaiaAllocGeomCollXYZ (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pt); + gaiaAddPointToGeomCollXYZ (pt, x, y, z); + } + else + { + pt = gaiaAllocGeomColl (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pt); + gaiaAddPointToGeomColl (pt, x, y); + } + last = geom; + while (1) + { + /* searching the last Geometry within chain */ + if (last->Next == NULL) + break; + last = last->Next; + } + last->Next = pt; + return 1; +} + +static int +kml_extract_multi_coord (const char *value, double *x, double *y, double *z, + int *count, int *follow) +{ +/* extracting KML coords from a comma-separated string */ + const char *in = value; + char buf[1024]; + char *out = buf; + int last; + *out = '\0'; + while (*in != '\0') + { + last = *in; + if (*in == ',') + { + *out = '\0'; + if (*buf != '\0') + { + if (!kml_check_coord (buf)) + return 0; + switch (*count) + { + case 0: + *x = atof (buf); + *count += 1; + break; + case 1: + *y = atof (buf); + *count += 1; + break; + case 2: + *z = atof (buf); + *count += 1; + break; + default: + *count += 1; + break; + }; + } + in++; + out = buf; + *out = '\0'; + continue; + } + *out++ = *in++; + } + *out = '\0'; +/* parsing the last item */ + if (*buf != '\0') + { + if (!kml_check_coord (buf)) + return 0; + switch (*count) + { + case 0: + *x = atof (buf); + *count += 1; + break; + case 1: + *y = atof (buf); + *count += 1; + break; + case 2: + *z = atof (buf); + *count += 1; + break; + default: + *count += 1; + break; + }; + } + if (last == ',') + *follow = 1; + else + *follow = 0; + return 1; +} + +static int +kml_extract_multi_coords (kmlCoordPtr coord, double *x, double *y, double *z, + int *count, kmlCoordPtr * next) +{ +/* extracting KML coords from a comma-separated string */ + int follow; + kmlCoordPtr c = coord; + while (c) + { + if (!kml_extract_multi_coord (c->Value, x, y, z, count, &follow)) + return 0; + if (!follow && c->Next != NULL) + { + if (*(c->Next->Value) == ',') + follow = 1; + } + if (follow) + c = c->Next; + else + { + *next = c->Next; + break; + } + } + return 1; +} + +static void +kml_add_point_to_line (gaiaDynamicLinePtr dyn, double x, double y) +{ +/* appending a point */ + gaiaAppendPointToDynamicLine (dyn, x, y); +} + +static void +kml_add_point_to_lineZ (gaiaDynamicLinePtr dyn, double x, double y, double z) +{ +/* appending a point */ + gaiaAppendPointZToDynamicLine (dyn, x, y, z); +} + +static int +kml_parse_coordinates (kmlCoordPtr coord, gaiaDynamicLinePtr dyn, int *has_z) +{ +/* parsing KML [Linestring or Ring] */ + int count = 0; + double x; + double y; + double z; + kmlCoordPtr next; + kmlCoordPtr c = coord; + while (c) + { + if (!kml_extract_multi_coords (c, &x, &y, &z, &count, &next)) + return 0; + if (count == 2) + { + *has_z = 0; + kml_add_point_to_line (dyn, x, y); + count = 0; + } + else if (count == 3) + { + kml_add_point_to_lineZ (dyn, x, y, z); + count = 0; + } + else + return 0; + c = next; + } + return 1; +} + +static int +kml_count_dyn_points (gaiaDynamicLinePtr dyn) +{ +/* count how many vertices are into sone linestring/ring */ + int iv = 0; + gaiaPointPtr pt = dyn->First; + while (pt) + { + iv++; + pt = pt->Next; + } + return iv; +} + +static int +kml_parse_linestring (struct kml_data *p_data, gaiaGeomCollPtr geom, + kmlNodePtr node, kmlNodePtr * next) +{ +/* parsing a */ + gaiaGeomCollPtr ln; + gaiaGeomCollPtr last; + gaiaLinestringPtr new_ln; + gaiaPointPtr pt; + int iv; + int has_z = 1; + int points = 0; + gaiaDynamicLinePtr dyn = gaiaAllocDynamicLine (); + kmlMapDynAlloc (p_data, KML_DYN_DYNLINE, dyn); + + if (strcmp (node->Tag, "coordinates") == 0) + { + /* parsing a KML */ + if (!kml_parse_coordinates (node->Coordinates, dyn, &has_z)) + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "coordinates") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "LineString") == 0) + ; + else + goto error; + *next = node->Next; + } + +/* ok, KML nodes match as expected */ + points = kml_count_dyn_points (dyn); + if (points < 2) + goto error; + if (has_z) + { + ln = gaiaAllocGeomCollXYZ (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, ln); + new_ln = gaiaAddLinestringToGeomColl (ln, points); + pt = dyn->First; + iv = 0; + while (pt) + { + gaiaSetPointXYZ (new_ln->Coords, iv, pt->X, pt->Y, pt->Z); + iv++; + pt = pt->Next; + } + } + else + { + ln = gaiaAllocGeomColl (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, ln); + new_ln = gaiaAddLinestringToGeomColl (ln, points); + pt = dyn->First; + iv = 0; + while (pt) + { + gaiaSetPoint (new_ln->Coords, iv, pt->X, pt->Y); + iv++; + pt = pt->Next; + } + } + last = geom; + while (1) + { + /* searching the last Geometry within chain */ + if (last->Next == NULL) + break; + last = last->Next; + } + last->Next = ln; + gaiaFreeDynamicLine (dyn); + return 1; + + error: + gaiaFreeDynamicLine (dyn); + return 0; +} + +static gaiaDynamicLinePtr +kml_parse_ring (kmlNodePtr node, int *interior, int *has_z, kmlNodePtr * next) +{ +/* parsing a generic KML ring */ + gaiaDynamicLinePtr dyn = gaiaAllocDynamicLine (); + *has_z = 1; + + if (strcmp (node->Tag, "outerBoundaryIs") == 0) + { + /* parsing a KML */ + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "LinearRing") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "coordinates") == 0) + { + /* parsing a KML */ + if (!kml_parse_coordinates (node->Coordinates, dyn, has_z)) + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "coordinates") == 0) + ; + else + goto error; + } + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "LinearRing") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "outerBoundaryIs") == 0) + ; + else + goto error; + *interior = 0; + *next = node->Next; + return dyn; + } + if (strcmp (node->Tag, "innerBoundaryIs") == 0) + { + /* parsing a KML */ + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "LinearRing") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "coordinates") == 0) + { + /* parsing a KML */ + if (!kml_parse_coordinates (node->Coordinates, dyn, has_z)) + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "coordinates") == 0) + ; + else + goto error; + } + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "LinearRing") == 0) + ; + else + goto error; + node = node->Next; + if (node == NULL) + goto error; + if (strcmp (node->Tag, "innerBoundaryIs") == 0) + ; + else + goto error; + *interior = 1; + *next = node->Next; + return dyn; + } + + error: + gaiaFreeDynamicLine (dyn); + return 0; +} + +static int +kml_parse_polygon (struct kml_data *p_data, gaiaGeomCollPtr geom, + kmlNodePtr node, kmlNodePtr * next_n) +{ +/* parsing a */ + int interior; + int has_z; + int inners; + int outers; + int points; + int iv; + int ib = 0; + gaiaGeomCollPtr pg; + gaiaGeomCollPtr last_g; + gaiaPolygonPtr new_pg; + gaiaRingPtr ring; + gaiaDynamicLinePtr dyn; + gaiaPointPtr pt; + gaiaDynamicLinePtr exterior_ring; + kmlNodePtr next; + kmlDynamicRingPtr dyn_rng; + kmlDynamicPolygonPtr dyn_pg = kml_alloc_dyn_polygon (p_data); + kmlNodePtr n = node; + while (n) + { + /* looping on rings */ + if (strcmp (n->Tag, "Polygon") == 0) + { + *next_n = n->Next; + break; + } + dyn = kml_parse_ring (n, &interior, &has_z, &next); + if (dyn == NULL) + goto error; + if (kml_count_dyn_points (dyn) < 4) + { + /* cannot be a valid ring */ + goto error; + } + /* checking if the ring is closed */ + if (has_z) + { + if (dyn->First->X == dyn->Last->X + && dyn->First->Y == dyn->Last->Y + && dyn->First->Z == dyn->Last->Z) + ; + else + goto error; + } + else + { + if (dyn->First->X == dyn->Last->X + && dyn->First->Y == dyn->Last->Y) + ; + else + goto error; + } + kml_add_polygon_ring (dyn_pg, dyn, interior, has_z); + n = next; + } +/* ok, KML nodes match as expected */ + inners = 0; + outers = 0; + has_z = 1; + dyn_rng = dyn_pg->first; + while (dyn_rng) + { + /* verifying the rings collection */ + if (dyn_rng->has_z == 0) + has_z = 0; + if (dyn_rng->interior) + inners++; + else + { + outers++; + points = kml_count_dyn_points (dyn_rng->ring); + exterior_ring = dyn_rng->ring; + } + dyn_rng = dyn_rng->next; + } + if (outers != 1) /* no exterior ring declared */ + goto error; + + if (has_z) + { + pg = gaiaAllocGeomCollXYZ (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + new_pg = gaiaAddPolygonToGeomColl (pg, points, inners); + /* initializing the EXTERIOR RING */ + ring = new_pg->Exterior; + pt = exterior_ring->First; + iv = 0; + while (pt) + { + gaiaSetPointXYZ (ring->Coords, iv, pt->X, pt->Y, pt->Z); + iv++; + pt = pt->Next; + } + dyn_rng = dyn_pg->first; + while (dyn_rng) + { + /* initializing any INTERIOR RING */ + if (dyn_rng->interior == 0) + { + dyn_rng = dyn_rng->next; + continue; + } + points = kml_count_dyn_points (dyn_rng->ring); + ring = gaiaAddInteriorRing (new_pg, ib, points); + ib++; + pt = dyn_rng->ring->First; + iv = 0; + while (pt) + { + gaiaSetPointXYZ (ring->Coords, iv, pt->X, pt->Y, pt->Z); + iv++; + pt = pt->Next; + } + dyn_rng = dyn_rng->next; + } + } + else + { + pg = gaiaAllocGeomColl (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + new_pg = gaiaAddPolygonToGeomColl (pg, points, inners); + /* initializing the EXTERIOR RING */ + ring = new_pg->Exterior; + pt = exterior_ring->First; + iv = 0; + while (pt) + { + gaiaSetPoint (ring->Coords, iv, pt->X, pt->Y); + iv++; + pt = pt->Next; + } + dyn_rng = dyn_pg->first; + while (dyn_rng) + { + /* initializing any INTERIOR RING */ + if (dyn_rng->interior == 0) + { + dyn_rng = dyn_rng->next; + continue; + } + points = kml_count_dyn_points (dyn_rng->ring); + ring = gaiaAddInteriorRing (new_pg, ib, points); + ib++; + pt = dyn_rng->ring->First; + iv = 0; + while (pt) + { + gaiaSetPoint (ring->Coords, iv, pt->X, pt->Y); + iv++; + pt = pt->Next; + } + dyn_rng = dyn_rng->next; + } + } + + last_g = geom; + while (1) + { + /* searching the last Geometry within chain */ + if (last_g->Next == NULL) + break; + last_g = last_g->Next; + } + last_g->Next = pg; + kml_free_dyn_polygon (dyn_pg); + return 1; + + error: + kml_free_dyn_polygon (dyn_pg); + return 0; +} + +static int +kml_parse_multi_geometry (struct kml_data *p_data, gaiaGeomCollPtr geom, + kmlNodePtr node) +{ +/* parsing a */ + kmlNodePtr next; + kmlNodePtr n = node; + while (n) + { + /* looping on Geometry Members */ + if (n->Next == NULL) + { + /* verifying the last KML node */ + if (strcmp (n->Tag, "MultiGeometry") == 0) + break; + else + return 0; + } + if (strcmp (n->Tag, "Point") == 0) + { + n = n->Next; + if (n == NULL) + return 0; + if (!kml_parse_point (p_data, geom, n, &next)) + return 0; + n = next; + continue; + } + else if (strcmp (n->Tag, "LineString") == 0) + { + n = n->Next; + if (n == NULL) + return 0; + if (!kml_parse_linestring (p_data, geom, n, &next)) + return 0; + n = next; + continue; + } + else if (strcmp (n->Tag, "Polygon") == 0) + { + n = n->Next; + if (n == NULL) + return 0; + if (!kml_parse_polygon (p_data, geom, n, &next)) + return 0; + n = next; + continue; + } + else + return 0; + } + return 1; +} + +static gaiaGeomCollPtr +kml_validate_geometry (struct kml_data *p_data, gaiaGeomCollPtr chain) +{ + int xy = 0; + int xyz = 0; + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaPointPtr save_pt; + gaiaLinestringPtr save_ln; + gaiaPolygonPtr save_pg; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + int ib; + gaiaGeomCollPtr g; + gaiaGeomCollPtr geom; + + g = chain; + while (g) + { + if (g != chain) + { + if (g->DimensionModel == GAIA_XY) + xy++; + if (g->DimensionModel == GAIA_XY_Z) + xyz++; + } + pt = g->FirstPoint; + while (pt) + { + pts++; + save_pt = pt; + pt = pt->Next; + } + ln = g->FirstLinestring; + while (ln) + { + lns++; + save_ln = ln; + ln = ln->Next; + } + pg = g->FirstPolygon; + while (pg) + { + pgs++; + save_pg = pg; + pg = pg->Next; + } + g = g->Next; + } + if (pts == 1 && lns == 0 && pgs == 0) + { + /* POINT */ + if (xy > 0) + { + /* 2D [XY] */ + geom = gaiaAllocGeomColl (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) + geom->DeclaredType = GAIA_MULTIPOINT; + else + geom->DeclaredType = GAIA_POINT; + gaiaAddPointToGeomColl (geom, save_pt->X, save_pt->Y); + return geom; + } + else + { + /* 3D [XYZ] */ + geom = gaiaAllocGeomCollXYZ (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) + geom->DeclaredType = GAIA_MULTIPOINT; + else + geom->DeclaredType = GAIA_POINT; + gaiaAddPointToGeomCollXYZ (geom, save_pt->X, save_pt->Y, + save_pt->Z); + return geom; + } + } + if (pts == 0 && lns == 1 && pgs == 0) + { + /* LINESTRING */ + if (xy > 0) + { + /* 2D [XY] */ + geom = gaiaAllocGeomColl (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + } + else + { + /* 3D [XYZ] */ + geom = gaiaAllocGeomCollXYZ (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + } + if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) + geom->DeclaredType = GAIA_MULTILINESTRING; + else + geom->DeclaredType = GAIA_LINESTRING; + ln = gaiaAddLinestringToGeomColl (geom, save_ln->Points); + gaiaCopyLinestringCoords (ln, save_ln); + return geom; + } + if (pts == 0 && lns == 0 && pgs == 1) + { + /* POLYGON */ + if (xy > 0) + { + /* 2D [XY] */ + geom = gaiaAllocGeomColl (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + } + else + { + /* 3D [XYZ] */ + geom = gaiaAllocGeomCollXYZ (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + } + if (chain->DeclaredType == GAIA_GEOMETRYCOLLECTION) + geom->DeclaredType = GAIA_MULTIPOLYGON; + else + geom->DeclaredType = GAIA_POLYGON; + i_ring = save_pg->Exterior; + pg = gaiaAddPolygonToGeomColl (geom, i_ring->Points, + save_pg->NumInteriors); + o_ring = pg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < save_pg->NumInteriors; ib++) + { + i_ring = save_pg->Interiors + ib; + o_ring = gaiaAddInteriorRing (pg, ib, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + return geom; + } + if (pts >= 1 && lns == 0 && pgs == 0) + { + /* MULTIPOINT */ + if (xy > 0) + { + /* 2D [XY] */ + geom = gaiaAllocGeomColl (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + geom->DeclaredType = GAIA_MULTIPOINT; + g = chain; + while (g) + { + pt = g->FirstPoint; + while (pt) + { + gaiaAddPointToGeomColl (geom, pt->X, pt->Y); + pt = pt->Next; + } + g = g->Next; + } + return geom; + } + else + { + /* 3D [XYZ] */ + geom = gaiaAllocGeomCollXYZ (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + geom->DeclaredType = GAIA_MULTIPOINT; + g = chain; + while (g) + { + pt = g->FirstPoint; + while (pt) + { + gaiaAddPointToGeomCollXYZ (geom, pt->X, pt->Y, + pt->Z); + pt = pt->Next; + } + g = g->Next; + } + return geom; + } + } + if (pts == 0 && lns >= 1 && pgs == 0) + { + /* MULTILINESTRING */ + if (xy > 0) + { + /* 2D [XY] */ + geom = gaiaAllocGeomColl (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + geom->DeclaredType = GAIA_MULTILINESTRING; + g = chain; + while (g) + { + ln = g->FirstLinestring; + while (ln) + { + save_ln = + gaiaAddLinestringToGeomColl (geom, ln->Points); + gaiaCopyLinestringCoords (save_ln, ln); + ln = ln->Next; + } + g = g->Next; + } + return geom; + } + else + { + /* 3D [XYZ] */ + geom = gaiaAllocGeomCollXYZ (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + geom->DeclaredType = GAIA_MULTILINESTRING; + g = chain; + while (g) + { + ln = g->FirstLinestring; + while (ln) + { + save_ln = + gaiaAddLinestringToGeomColl (geom, ln->Points); + gaiaCopyLinestringCoords (save_ln, ln); + ln = ln->Next; + } + g = g->Next; + } + return geom; + } + } + if (pts == 0 && lns == 0 && pgs >= 1) + { + /* MULTIPOLYGON */ + if (xy > 0) + { + /* 2D [XY] */ + geom = gaiaAllocGeomColl (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + geom->DeclaredType = GAIA_MULTIPOLYGON; + g = chain; + while (g) + { + pg = g->FirstPolygon; + while (pg) + { + i_ring = pg->Exterior; + save_pg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, + pg->NumInteriors); + o_ring = save_pg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < pg->NumInteriors; ib++) + { + i_ring = pg->Interiors + ib; + o_ring = + gaiaAddInteriorRing (save_pg, ib, + i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + pg = pg->Next; + } + g = g->Next; + } + return geom; + } + else + { + /* 3D [XYZ] */ + geom = gaiaAllocGeomCollXYZ (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + geom->DeclaredType = GAIA_MULTIPOLYGON; + g = chain; + while (g) + { + pg = g->FirstPolygon; + while (pg) + { + i_ring = pg->Exterior; + save_pg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, + pg->NumInteriors); + o_ring = save_pg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < pg->NumInteriors; ib++) + { + i_ring = pg->Interiors + ib; + o_ring = + gaiaAddInteriorRing (save_pg, ib, + i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + pg = pg->Next; + } + g = g->Next; + } + return geom; + } + } + if ((pts + lns + pgs) > 0) + { + /* GEOMETRYCOLLECTION */ + if (xy > 0) + { + /* 2D [XY] */ + geom = gaiaAllocGeomColl (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + g = chain; + while (g) + { + pt = g->FirstPoint; + while (pt) + { + gaiaAddPointToGeomColl (geom, pt->X, pt->Y); + pt = pt->Next; + } + ln = g->FirstLinestring; + while (ln) + { + save_ln = + gaiaAddLinestringToGeomColl (geom, ln->Points); + gaiaCopyLinestringCoords (save_ln, ln); + ln = ln->Next; + } + pg = g->FirstPolygon; + while (pg) + { + i_ring = pg->Exterior; + save_pg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, + pg->NumInteriors); + o_ring = save_pg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < pg->NumInteriors; ib++) + { + i_ring = pg->Interiors + ib; + o_ring = + gaiaAddInteriorRing (save_pg, ib, + i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + pg = pg->Next; + } + g = g->Next; + } + return geom; + } + else + { + /* 3D [XYZ] */ + geom = gaiaAllocGeomCollXYZ (); + kmlMapDynAlloc (p_data, KML_DYN_GEOM, pg); + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + g = chain; + while (g) + { + pt = g->FirstPoint; + while (pt) + { + gaiaAddPointToGeomCollXYZ (geom, pt->X, pt->Y, + pt->Z); + pt = pt->Next; + } + ln = g->FirstLinestring; + while (ln) + { + save_ln = + gaiaAddLinestringToGeomColl (geom, ln->Points); + gaiaCopyLinestringCoords (save_ln, ln); + ln = ln->Next; + } + pg = g->FirstPolygon; + while (pg) + { + i_ring = pg->Exterior; + save_pg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, + pg->NumInteriors); + o_ring = save_pg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + for (ib = 0; ib < pg->NumInteriors; ib++) + { + i_ring = pg->Interiors + ib; + o_ring = + gaiaAddInteriorRing (save_pg, ib, + i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + pg = pg->Next; + } + g = g->Next; + } + return geom; + } + } + return NULL; +} + +static void +kml_free_geom_chain (gaiaGeomCollPtr geom) +{ +/* deleting a chain of preliminary geometries */ + gaiaGeomCollPtr gn; + while (geom) + { + gn = geom->Next; + gaiaFreeGeomColl (geom); + geom = gn; + } +} + +static gaiaGeomCollPtr +kml_build_geometry (struct kml_data *p_data, kmlNodePtr tree) +{ +/* attempting to build a geometry from KML nodes */ + gaiaGeomCollPtr geom; + gaiaGeomCollPtr result; + int geom_type; + kmlNodePtr next; + + if (tree == NULL) + return NULL; + geom_type = guessKmlGeometryType (tree); + if (geom_type == GAIA_KML_UNKNOWN) + { + /* unsupported main geometry type */ + return NULL; + } +/* creating the main geometry */ + geom = gaiaAllocGeomColl (); + + switch (geom_type) + { + /* parsing KML nodes accordingly with declared KML type */ + case GAIA_KML_POINT: + geom->DeclaredType = GAIA_POINT; + if (!kml_parse_point (p_data, geom, tree->Next, &next)) + goto error; + break; + case GAIA_KML_LINESTRING: + geom->DeclaredType = GAIA_LINESTRING; + if (!kml_parse_linestring (p_data, geom, tree->Next, &next)) + goto error; + break; + case GAIA_KML_POLYGON: + geom->DeclaredType = GAIA_POLYGON; + if (!kml_parse_polygon (p_data, geom, tree->Next, &next)) + goto error; + if (next != NULL) + goto error; + break; + case GAIA_KML_MULTIGEOMETRY: + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + if (!kml_parse_multi_geometry (p_data, geom, tree->Next)) + goto error; + break; + }; + +/* attempting to build the final geometry */ + result = kml_validate_geometry (p_data, geom); + if (result == NULL) + goto error; + kml_free_geom_chain (geom); + return result; + + error: + kml_free_geom_chain (geom); + return NULL; +} + + +/* including LEMON generated code */ +#include "Kml.c" + + + +/* +** CAVEAT: there is an incompatibility between LEMON and FLEX +** this macro resolves the issue +*/ +#undef yy_accept +#define yy_accept yy_kml_flex_accept + + + +/* including FLEX generated code */ +#include "lex.Kml.c" + + + +gaiaGeomCollPtr +gaiaParseKml (const unsigned char *dirty_buffer) +{ + void *pParser = ParseAlloc (malloc); + /* Linked-list of token values */ + kmlFlexToken *tokens = malloc (sizeof (kmlFlexToken)); + /* Pointer to the head of the list */ + kmlFlexToken *head = tokens; + int yv; + gaiaGeomCollPtr geom = NULL; + yyscan_t scanner; + struct kml_data str_data; + +/* initializing the helper structs */ + str_data.kml_line = 1; + str_data.kml_col = 1; + str_data.kml_parse_error = 0; + str_data.kml_first_dyn_block = NULL; + str_data.kml_last_dyn_block = NULL; + str_data.result = NULL; + +/* initializing the scanner state */ + Kmllex_init_extra (&str_data, &scanner); + + str_data.KmlLval.pval = NULL; + tokens->value = NULL; + tokens->Next = NULL; + Kml_scan_string ((char *) dirty_buffer, scanner); + + /* + / Keep tokenizing until we reach the end + / yylex() will return the next matching Token for us. + */ + while ((yv = yylex (scanner)) != 0) + { + if (yv == -1) + { + str_data.kml_parse_error = 1; + break; + } + tokens->Next = malloc (sizeof (kmlFlexToken)); + tokens->Next->Next = NULL; + kml_xferString (&(tokens->Next->value), str_data.KmlLval.pval); + /* Pass the token to the wkt parser created from lemon */ + Parse (pParser, yv, &(tokens->Next->value), &str_data); + tokens = tokens->Next; + } + /* This denotes the end of a line as well as the end of the parser */ + Parse (pParser, KML_NEWLINE, 0, &str_data); + ParseFree (pParser, free); + Kmllex_destroy (scanner); + + /* Assigning the token as the end to avoid seg faults while cleaning */ + tokens->Next = NULL; + kml_cleanup (head); + kml_freeString (&(str_data.KmlLval.pval)); + + if (str_data.kml_parse_error) + { + if (str_data.result) + { + /* if a Geometry-result has been produced, the stack is already cleaned */ + kml_freeTree (str_data.result); + kmlCleanMapDynAlloc (&str_data, 0); + } + else + { + /* otherwise we are required to clean the stack */ + kmlCleanMapDynAlloc (&str_data, 1); + } + return NULL; + } + + if (str_data.result == NULL) + { + kmlCleanMapDynAlloc (&str_data, 0); + return NULL; + } + + /* attempting to build a geometry from KML */ + geom = kml_build_geometry (&str_data, str_data.result); + geom->Srid = 4326; + kml_freeTree (str_data.result); + kmlCleanMapDynAlloc (&str_data, 0); + return geom; +} + + +/* +** CAVEAT: we must now undefine any Lemon/Flex own macro +*/ +#undef YYNOCODE +#undef YYNSTATE +#undef YYNRULE +#undef YY_SHIFT_MAX +#undef YY_REDUCE_USE_DFLT +#undef YY_REDUCE_MAX +#undef YY_FLUSH_BUFFER +#undef YY_DO_BEFORE_ACTION +#undef YY_NUM_RULES +#undef YY_END_OF_BUFFER +#undef YY_END_FILE +#undef YYACTIONTYPE +#undef YY_SZ_ACTTAB +#undef YY_NEW_FILE +#undef BEGIN +#undef YY_START +#undef YY_CURRENT_BUFFER +#undef YY_CURRENT_BUFFER_LVALUE +#undef YY_STATE_BUF_SIZE +#undef YY_DECL +#undef YY_FATAL_ERROR +#undef YYMINORTYPE +#undef YY_CHAR +#undef YYSTYPE +#undef input +#undef ParseAlloc +#undef ParseFree +#undef ParseStackPeak +#undef Parse +#undef yyalloc +#undef yyfree +#undef yyin +#undef yyleng +#undef yyless +#undef yylex +#undef yylineno +#undef yyout +#undef yyrealloc +#undef yyrestart +#undef yyStackEntry +#undef yytext +#undef yywrap +#undef yyzerominor +#undef yy_accept +#undef yy_action +#undef yy_base +#undef yy_buffer_stack +#undef yy_buffer_stack_max +#undef yy_buffer_stack_top +#undef yy_c_buf_p +#undef yy_chk +#undef yy_create_buffer +#undef yy_def +#undef yy_default +#undef yy_delete_buffer +#undef yy_destructor +#undef yy_ec +#undef yy_fatal_error +#undef yy_find_reduce_action +#undef yy_find_shift_action +#undef yy_flex_debug +#undef yy_flush_buffer +#undef yy_get_next_buffer +#undef yy_get_previous_state +#undef yy_init +#undef yy_init_buffer +#undef yy_init_globals +#undef yy_load_buffer +#undef yy_load_buffer_state +#undef yy_lookahead +#undef yy_meta +#undef yy_new_buffer +#undef yy_nxt +#undef yy_parse_failed +#undef yy_pop_parser_stack +#undef yy_reduce +#undef yy_reduce_ofst +#undef yy_set_bol +#undef yy_set_interactive +#undef yy_shift +#undef yy_shift_ofst +#undef yy_start +#undef yy_state_type +#undef yy_switch_to_buffer +#undef yy_syntax_error +#undef yy_trans_info +#undef yy_try_NUL_trans +#undef yyParser +#undef yyStackEntry +#undef yyStackOverflow +#undef yyRuleInfo +#undef yytext_ptr +#undef yyunput +#undef yyzerominor +#undef ParseARG_SDECL +#undef ParseARG_PDECL +#undef ParseARG_FETCH +#undef ParseARG_STORE +#undef REJECT +#undef yymore +#undef YY_MORE_ADJ +#undef YY_RESTORE_YY_MORE_OFFSET +#undef YY_LESS_LINENO +#undef yyTracePrompt +#undef yyTraceFILE +#undef yyTokenName +#undef yyRuleName +#undef ParseTrace + +#undef yylex +#undef YY_DECL diff --git a/src/spatialite/src/gaiageo/gg_lwgeom.c b/src/spatialite/src/gaiageo/gg_lwgeom.c new file mode 100644 index 0000000..15c9748 --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_lwgeom.c @@ -0,0 +1,2425 @@ +/* + + gg_lwgeom.c -- Gaia LWGEOM support + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2012-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +/* + +CREDITS: + +this module (wrapping liblwgeom APIs) has been entierely funded by: +Regione Toscana - Settore Sistema Informativo Territoriale ed Ambientale + +*/ + +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include +#include +#include + +#include + +#ifdef ENABLE_LWGEOM /* enabling LWGEOM support */ + +#include + +/* GLOBAL variables */ +char *gaia_lwgeom_error_msg = NULL; +char *gaia_lwgeom_warning_msg = NULL; + +const char splitelwgeomversion[] = LIBLWGEOM_VERSION; + +SPATIALITE_PRIVATE const char * +splite_lwgeom_version (void) +{ + return splitelwgeomversion; +} + +static void +lwgaia_noticereporter (const char *fmt, va_list ap) +{ + char *msg; + if (!lw_vasprintf (&msg, fmt, ap)) + { + va_end (ap); + return; + } + spatialite_e ("LWGEOM notice: %s\n", msg); + gaiaSetLwGeomWarningMsg (msg); + free (msg); +} + +static void +lwgaia_errorreporter (const char *fmt, va_list ap) +{ + char *msg; + if (!lw_vasprintf (&msg, fmt, ap)) + { + va_end (ap); + return; + } + spatialite_e ("LWGEOM error: %s\n", msg); + gaiaSetLwGeomErrorMsg (msg); + free (msg); +} + +#ifndef POSTGIS_2_1 +/* liblwgeom initializion function: required by PostGIS 2.0.x */ +void +lwgeom_init_allocators (void) +{ +/* Set up liblwgeom to run in stand-alone mode using the +* usual system memory handling functions. */ + lwalloc_var = default_allocator; + lwrealloc_var = default_reallocator; + lwfree_var = default_freeor; + lwnotice_var = lwgaia_noticereporter; + lwerror_var = lwgaia_errorreporter; +} +#else +/* liblwgeom initialization function: required by PostGIS 2.1.x */ +SPATIALITE_PRIVATE void +splite_lwgeom_init (void) +{ + lwgeom_set_handlers (NULL, NULL, NULL, lwgaia_errorreporter, + lwgaia_noticereporter); +} +#endif + +GAIAGEO_DECLARE void +gaiaResetLwGeomMsg () +{ +/* resets the LWGEOM error and warning messages */ + if (gaia_lwgeom_error_msg != NULL) + free (gaia_lwgeom_error_msg); + if (gaia_lwgeom_warning_msg != NULL) + free (gaia_lwgeom_warning_msg); + gaia_lwgeom_error_msg = NULL; + gaia_lwgeom_warning_msg = NULL; +} + +GAIAGEO_DECLARE const char * +gaiaGetLwGeomErrorMsg () +{ +/* setting the latest LWGEOM error message */ + return gaia_lwgeom_error_msg; +} + +GAIAGEO_DECLARE const char * +gaiaGetLwGeomWarningMsg () +{ +/* return the latest LWGEOM error message */ + return gaia_lwgeom_warning_msg; +} + +GAIAGEO_DECLARE void +gaiaSetLwGeomErrorMsg (const char *msg) +{ +/* setting the latest LWGEOM error message */ + int len; + if (gaia_lwgeom_error_msg != NULL) + free (gaia_lwgeom_error_msg); + gaia_lwgeom_error_msg = NULL; + if (msg == NULL) + return; + len = strlen (msg); + gaia_lwgeom_error_msg = malloc (len + 1); + strcpy (gaia_lwgeom_error_msg, msg); +} + +GAIAGEO_DECLARE void +gaiaSetLwGeomWarningMsg (const char *msg) +{ +/* return the latest LWGEOM error message */ + int len; + if (gaia_lwgeom_warning_msg != NULL) + free (gaia_lwgeom_warning_msg); + gaia_lwgeom_warning_msg = NULL; + if (msg == NULL) + return; + len = strlen (msg); + gaia_lwgeom_warning_msg = malloc (len + 1); + strcpy (gaia_lwgeom_warning_msg, msg); +} + +static int +check_unclosed_ring (gaiaRingPtr rng) +{ +/* checks if a Ring is closed or not */ + double x0; + double y0; + double z0 = 0.0; + double m0 = 0.0; + double x1; + double y1; + double z1 = 0.0; + double m1 = 0.0; + int last = rng->Points - 1; + if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, 0, &x0, &y0, &z0); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, 0, &x0, &y0, &m0); + } + else if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, 0, &x0, &y0, &z0, &m0); + } + else + { + gaiaGetPoint (rng->Coords, 0, &x0, &y0); + } + if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, last, &x1, &y1, &z1); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, last, &x1, &y1, &m1); + } + else if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, last, &x1, &y1, &z1, &m1); + } + else + { + gaiaGetPoint (rng->Coords, last, &x1, &y1); + } + if (x0 == x1 && y0 == y1 && z0 == z1 && m0 == m1) + return 0; + return 1; +} + +static LWGEOM * +toLWGeom (const gaiaGeomCollPtr gaia) +{ +/* converting a GAIA Geometry into a LWGEOM Geometry */ + int pts = 0; + int lns = 0; + int pgs = 0; + int has_z; + int has_m; + int ngeoms; + int numg; + int ib; + int iv; + int type; + double x; + double y; + double z; + double m; + int close_ring; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + POINTARRAY *pa; + POINTARRAY **ppaa; + POINT4D point; + LWGEOM **geoms; + + if (!gaia) + return NULL; + pt = gaia->FirstPoint; + while (pt) + { + /* counting how many POINTs are there */ + pts++; + pt = pt->Next; + } + ln = gaia->FirstLinestring; + while (ln) + { + /* counting how many LINESTRINGs are there */ + lns++; + ln = ln->Next; + } + pg = gaia->FirstPolygon; + while (pg) + { + /* counting how many POLYGONs are there */ + pgs++; + pg = pg->Next; + } + if (pts == 0 && lns == 0 && pgs == 0) + return NULL; + + if (pts == 1 && lns == 0 && pgs == 0) + { + /* single Point */ + pt = gaia->FirstPoint; + has_z = 0; + has_m = 0; + if (gaia->DimensionModel == GAIA_XY_Z + || gaia->DimensionModel == GAIA_XY_Z_M) + has_z = 1; + if (gaia->DimensionModel == GAIA_XY_M + || gaia->DimensionModel == GAIA_XY_Z_M) + has_m = 1; + pa = ptarray_construct (has_z, has_m, 1); + point.x = pt->X; + point.y = pt->Y; + if (has_z) + point.z = pt->Z; + if (has_m) + point.m = pt->M; + ptarray_set_point4d (pa, 0, &point); + return (LWGEOM *) lwpoint_construct (gaia->Srid, NULL, pa); + } + else if (pts == 0 && lns == 1 && pgs == 0) + { + /* single Linestring */ + ln = gaia->FirstLinestring; + has_z = 0; + has_m = 0; + if (gaia->DimensionModel == GAIA_XY_Z + || gaia->DimensionModel == GAIA_XY_Z_M) + has_z = 1; + if (gaia->DimensionModel == GAIA_XY_M + || gaia->DimensionModel == GAIA_XY_Z_M) + has_m = 1; + pa = ptarray_construct (has_z, has_m, ln->Points); + for (iv = 0; iv < ln->Points; iv++) + { + /* copying vertices */ + if (gaia->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + } + else if (gaia->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + else if (gaia->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + point.x = x; + point.y = y; + if (has_z) + point.z = z; + if (has_m) + point.m = m; + ptarray_set_point4d (pa, iv, &point); + } + return (LWGEOM *) lwline_construct (gaia->Srid, NULL, pa); + } + else if (pts == 0 && lns == 0 && pgs == 1) + { + /* single Polygon */ + pg = gaia->FirstPolygon; + has_z = 0; + has_m = 0; + if (gaia->DimensionModel == GAIA_XY_Z + || gaia->DimensionModel == GAIA_XY_Z_M) + has_z = 1; + if (gaia->DimensionModel == GAIA_XY_M + || gaia->DimensionModel == GAIA_XY_Z_M) + has_m = 1; + ngeoms = pg->NumInteriors; + ppaa = lwalloc (sizeof (POINTARRAY *) * (ngeoms + 1)); + rng = pg->Exterior; + close_ring = check_unclosed_ring (rng); + if (close_ring) + ppaa[0] = ptarray_construct (has_z, has_m, rng->Points + 1); + else + ppaa[0] = ptarray_construct (has_z, has_m, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + /* copying vertices - Exterior Ring */ + if (gaia->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (gaia->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (gaia->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + point.x = x; + point.y = y; + if (has_z) + point.z = z; + if (has_m) + point.m = m; + ptarray_set_point4d (ppaa[0], iv, &point); + } + if (close_ring) + { + /* making an unclosed ring to be closed */ + if (gaia->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, 0, &x, &y, &z); + } + else if (gaia->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, 0, &x, &y, &m); + } + else if (gaia->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, 0, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, 0, &x, &y); + } + point.x = x; + point.y = y; + if (has_z) + point.z = z; + if (has_m) + point.m = m; + ptarray_set_point4d (ppaa[0], rng->Points, &point); + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + /* copying vertices - Interior Rings */ + rng = pg->Interiors + ib; + close_ring = check_unclosed_ring (rng); + if (close_ring) + ppaa[1 + ib] = + ptarray_construct (has_z, has_m, rng->Points + 1); + else + ppaa[1 + ib] = + ptarray_construct (has_z, has_m, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + if (gaia->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (gaia->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (gaia->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + point.x = x; + point.y = y; + if (has_z) + point.z = z; + if (has_m) + point.m = m; + ptarray_set_point4d (ppaa[1 + ib], iv, &point); + } + if (close_ring) + { + /* making an unclosed ring to be closed */ + if (gaia->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, 0, &x, &y, &z); + } + else if (gaia->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, 0, &x, &y, &m); + } + else if (gaia->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, 0, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, 0, &x, &y); + } + point.x = x; + point.y = y; + if (has_z) + point.z = z; + if (has_m) + point.m = m; + ptarray_set_point4d (ppaa[1 + ib], rng->Points, &point); + } + } + return (LWGEOM *) lwpoly_construct (gaia->Srid, NULL, ngeoms + 1, + ppaa); + } + else + { + /* some Collection */ + switch (gaia->DeclaredType) + { + case GAIA_POINT: + type = POINTTYPE; + break; + case GAIA_LINESTRING: + type = LINETYPE; + break; + case GAIA_POLYGON: + type = POLYGONTYPE; + break; + case GAIA_MULTIPOINT: + type = MULTIPOINTTYPE; + break; + case GAIA_MULTILINESTRING: + type = MULTILINETYPE; + break; + case GAIA_MULTIPOLYGON: + type = MULTIPOLYGONTYPE; + break; + case GAIA_GEOMETRYCOLLECTION: + type = COLLECTIONTYPE; + break; + default: + if (lns == 0 && pgs == 0) + type = MULTIPOINTTYPE; + else if (pts == 0 && pgs == 0) + type = MULTILINETYPE; + else if (pts == 0 && lns == 0) + type = MULTIPOLYGONTYPE; + else + type = COLLECTIONTYPE; + break; + }; + numg = pts + lns + pgs; + geoms = lwalloc (sizeof (LWGEOM *) * numg); + + numg = 0; + pt = gaia->FirstPoint; + while (pt) + { + /* copying POINTs */ + has_z = 0; + has_m = 0; + if (gaia->DimensionModel == GAIA_XY_Z + || gaia->DimensionModel == GAIA_XY_Z_M) + has_z = 1; + if (gaia->DimensionModel == GAIA_XY_M + || gaia->DimensionModel == GAIA_XY_Z_M) + has_m = 1; + pa = ptarray_construct (has_z, has_m, 1); + point.x = pt->X; + point.y = pt->Y; + if (has_z) + point.z = pt->Z; + if (has_m) + point.m = pt->M; + ptarray_set_point4d (pa, 0, &point); + geoms[numg++] = + (LWGEOM *) lwpoint_construct (gaia->Srid, NULL, pa); + pt = pt->Next; + } + ln = gaia->FirstLinestring; + while (ln) + { + /* copying LINESTRINGs */ + has_z = 0; + has_m = 0; + if (gaia->DimensionModel == GAIA_XY_Z + || gaia->DimensionModel == GAIA_XY_Z_M) + has_z = 1; + if (gaia->DimensionModel == GAIA_XY_M + || gaia->DimensionModel == GAIA_XY_Z_M) + has_m = 1; + pa = ptarray_construct (has_z, has_m, ln->Points); + for (iv = 0; iv < ln->Points; iv++) + { + /* copying vertices */ + if (gaia->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + } + else if (gaia->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + else if (gaia->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + point.x = x; + point.y = y; + if (has_z) + point.z = z; + if (has_m) + point.m = m; + ptarray_set_point4d (pa, iv, &point); + } + geoms[numg++] = + (LWGEOM *) lwline_construct (gaia->Srid, NULL, pa); + ln = ln->Next; + } + pg = gaia->FirstPolygon; + while (pg) + { + /* copying POLYGONs */ + has_z = 0; + has_m = 0; + if (gaia->DimensionModel == GAIA_XY_Z + || gaia->DimensionModel == GAIA_XY_Z_M) + has_z = 1; + if (gaia->DimensionModel == GAIA_XY_M + || gaia->DimensionModel == GAIA_XY_Z_M) + has_m = 1; + ngeoms = pg->NumInteriors; + ppaa = lwalloc (sizeof (POINTARRAY *) * (ngeoms + 1)); + rng = pg->Exterior; + close_ring = check_unclosed_ring (rng); + if (close_ring) + ppaa[0] = ptarray_construct (has_z, has_m, rng->Points + 1); + else + ppaa[0] = ptarray_construct (has_z, has_m, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + /* copying vertices - Exterior Ring */ + if (gaia->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (gaia->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (gaia->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + point.x = x; + point.y = y; + if (has_z) + point.z = z; + if (has_m) + point.m = m; + ptarray_set_point4d (ppaa[0], iv, &point); + } + if (close_ring) + { + /* making an unclosed ring to be closed */ + if (gaia->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, 0, &x, &y, &z); + } + else if (gaia->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, 0, &x, &y, &m); + } + else if (gaia->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, 0, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, 0, &x, &y); + } + point.x = x; + point.y = y; + if (has_z) + point.z = z; + if (has_m) + point.m = m; + ptarray_set_point4d (ppaa[0], rng->Points, &point); + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + /* copying vertices - Interior Rings */ + rng = pg->Interiors + ib; + close_ring = check_unclosed_ring (rng); + if (close_ring) + ppaa[1 + ib] = + ptarray_construct (has_z, has_m, rng->Points + 1); + else + ppaa[1 + ib] = + ptarray_construct (has_z, has_m, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + if (gaia->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (gaia->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (gaia->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, + &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + point.x = x; + point.y = y; + if (has_z) + point.z = z; + if (has_m) + point.m = m; + ptarray_set_point4d (ppaa[1 + ib], iv, &point); + } + if (close_ring) + { + /* making an unclosed ring to be closed */ + if (gaia->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, 0, &x, &y, &z); + } + else if (gaia->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, 0, &x, &y, &m); + } + else if (gaia->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, 0, &x, &y, &z, + &m); + } + else + { + gaiaGetPoint (rng->Coords, 0, &x, &y); + } + point.x = x; + point.y = y; + if (has_z) + point.z = z; + if (has_m) + point.m = m; + ptarray_set_point4d (ppaa[1 + ib], rng->Points, + &point); + } + } + geoms[numg++] = + (LWGEOM *) lwpoly_construct (gaia->Srid, NULL, ngeoms + 1, + ppaa); + pg = pg->Next; + } + return (LWGEOM *) lwcollection_construct (type, gaia->Srid, NULL, + numg, geoms); + } + return NULL; +} + +static gaiaGeomCollPtr +fromLWGeomIncremental (gaiaGeomCollPtr gaia, const LWGEOM * lwgeom) +{ +/* converting a LWGEOM Geometry into a GAIA Geometry */ + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + int dimension_model = gaia->DimensionModel; + int declared_type = gaia->DeclaredType; + LWGEOM *lwg2 = NULL; + LWPOINT *lwp = NULL; + LWLINE *lwl = NULL; + LWPOLY *lwpoly = NULL; + LWCOLLECTION *lwc = NULL; + POINTARRAY *pa; + POINT4D pt4d; + int has_z; + int has_m; + int iv; + int ib; + int ngeoms; + int ng; + double x; + double y; + double z; + double m; + + if (lwgeom == NULL) + return NULL; + if (lwgeom_is_empty (lwgeom)) + return NULL; + + switch (lwgeom->type) + { + case POINTTYPE: + lwp = (LWPOINT *) lwgeom; + has_z = 0; + has_m = 0; + pa = lwp->point; + if (FLAGS_GET_Z (pa->flags)) + has_z = 1; + if (FLAGS_GET_M (pa->flags)) + has_m = 1; + getPoint4d_p (pa, 0, &pt4d); + x = pt4d.x; + y = pt4d.y; + if (has_z) + z = pt4d.z; + else + z = 0.0; + if (has_m) + m = pt4d.m; + else + m = 0.0; + if (dimension_model == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (gaia, x, y, z); + else if (dimension_model == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (gaia, x, y, m); + else if (dimension_model == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (gaia, x, y, z, m); + else + gaiaAddPointToGeomColl (gaia, x, y); + if (declared_type == GAIA_MULTIPOINT) + gaia->DeclaredType = GAIA_MULTIPOINT; + else if (declared_type == GAIA_GEOMETRYCOLLECTION) + gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + gaia->DeclaredType = GAIA_POINT; + break; + case LINETYPE: + lwl = (LWLINE *) lwgeom; + has_z = 0; + has_m = 0; + pa = lwl->points; + if (FLAGS_GET_Z (pa->flags)) + has_z = 1; + if (FLAGS_GET_M (pa->flags)) + has_m = 1; + ln = gaiaAddLinestringToGeomColl (gaia, pa->npoints); + for (iv = 0; iv < pa->npoints; iv++) + { + /* copying LINESTRING vertices */ + getPoint4d_p (pa, iv, &pt4d); + x = pt4d.x; + y = pt4d.y; + if (has_z) + z = pt4d.z; + else + z = 0.0; + if (has_m) + m = pt4d.m; + else + m = 0.0; + if (dimension_model == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, iv, x, y, z); + } + else if (dimension_model == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, iv, x, y, m); + } + else if (dimension_model == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ln->Coords, iv, x, y); + } + } + if (declared_type == GAIA_MULTILINESTRING) + gaia->DeclaredType = GAIA_MULTILINESTRING; + else if (declared_type == GAIA_GEOMETRYCOLLECTION) + gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + gaia->DeclaredType = GAIA_LINESTRING; + break; + case POLYGONTYPE: + lwpoly = (LWPOLY *) lwgeom; + has_z = 0; + has_m = 0; + pa = lwpoly->rings[0]; + if (FLAGS_GET_Z (pa->flags)) + has_z = 1; + if (FLAGS_GET_M (pa->flags)) + has_m = 1; + pg = gaiaAddPolygonToGeomColl (gaia, pa->npoints, lwpoly->nrings - 1); + rng = pg->Exterior; + for (iv = 0; iv < pa->npoints; iv++) + { + /* copying Exterion Ring vertices */ + getPoint4d_p (pa, iv, &pt4d); + x = pt4d.x; + y = pt4d.y; + if (has_z) + z = pt4d.z; + else + z = 0.0; + if (has_m) + m = pt4d.m; + else + m = 0.0; + if (dimension_model == GAIA_XY_Z) + { + gaiaSetPointXYZ (rng->Coords, iv, x, y, z); + } + else if (dimension_model == GAIA_XY_M) + { + gaiaSetPointXYM (rng->Coords, iv, x, y, m); + } + else if (dimension_model == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (rng->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (rng->Coords, iv, x, y); + } + } + for (ib = 1; ib < lwpoly->nrings; ib++) + { + has_z = 0; + has_m = 0; + pa = lwpoly->rings[ib]; + if (FLAGS_GET_Z (pa->flags)) + has_z = 1; + if (FLAGS_GET_M (pa->flags)) + has_m = 1; + rng = gaiaAddInteriorRing (pg, ib - 1, pa->npoints); + for (iv = 0; iv < pa->npoints; iv++) + { + /* copying Exterion Ring vertices */ + getPoint4d_p (pa, iv, &pt4d); + x = pt4d.x; + y = pt4d.y; + if (has_z) + z = pt4d.z; + else + z = 0.0; + if (has_m) + m = pt4d.m; + else + m = 0.0; + if (dimension_model == GAIA_XY_Z) + { + gaiaSetPointXYZ (rng->Coords, iv, x, y, z); + } + else if (dimension_model == GAIA_XY_M) + { + gaiaSetPointXYM (rng->Coords, iv, x, y, m); + } + else if (dimension_model == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (rng->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (rng->Coords, iv, x, y); + } + } + } + if (declared_type == GAIA_MULTIPOLYGON) + gaia->DeclaredType = GAIA_MULTIPOLYGON; + else if (declared_type == GAIA_GEOMETRYCOLLECTION) + gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + gaia->DeclaredType = GAIA_POLYGON; + break; + case MULTIPOINTTYPE: + case MULTILINETYPE: + case MULTIPOLYGONTYPE: + case COLLECTIONTYPE: + if (lwgeom->type == MULTIPOINTTYPE) + { + if (declared_type == GAIA_GEOMETRYCOLLECTION) + gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + gaia->DeclaredType = GAIA_MULTIPOINT; + } + else if (lwgeom->type == MULTILINETYPE) + { + if (declared_type == GAIA_GEOMETRYCOLLECTION) + gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + gaia->DeclaredType = GAIA_MULTILINESTRING; + } + else if (lwgeom->type == MULTIPOLYGONTYPE) + { + if (declared_type == GAIA_GEOMETRYCOLLECTION) + gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; + else + gaia->DeclaredType = GAIA_MULTIPOLYGON; + } + else + gaia->DeclaredType = GAIA_GEOMETRYCOLLECTION; + + lwc = (LWCOLLECTION *) lwgeom; + ngeoms = lwc->ngeoms; + if (ngeoms == 0) + { + gaiaFreeGeomColl (gaia); + gaia = NULL; + break; + } + for (ng = 0; ng < ngeoms; ++ng) + { + /* looping on elementary geometries */ + lwg2 = lwc->geoms[ng]; + switch (lwg2->type) + { + case POINTTYPE: + lwp = (LWPOINT *) lwg2; + has_z = 0; + has_m = 0; + pa = lwp->point; + if (FLAGS_GET_Z (pa->flags)) + has_z = 1; + if (FLAGS_GET_M (pa->flags)) + has_m = 1; + getPoint4d_p (pa, 0, &pt4d); + x = pt4d.x; + y = pt4d.y; + if (has_z) + z = pt4d.z; + else + z = 0.0; + if (has_m) + m = pt4d.m; + else + m = 0.0; + if (dimension_model == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (gaia, x, y, z); + else if (dimension_model == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (gaia, x, y, m); + else if (dimension_model == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (gaia, x, y, z, m); + else + gaiaAddPointToGeomColl (gaia, x, y); + break; + case LINETYPE: + lwl = (LWLINE *) lwg2; + has_z = 0; + has_m = 0; + pa = lwl->points; + if (FLAGS_GET_Z (pa->flags)) + has_z = 1; + if (FLAGS_GET_M (pa->flags)) + has_m = 1; + ln = gaiaAddLinestringToGeomColl (gaia, pa->npoints); + for (iv = 0; iv < pa->npoints; iv++) + { + /* copying LINESTRING vertices */ + getPoint4d_p (pa, iv, &pt4d); + x = pt4d.x; + y = pt4d.y; + if (has_z) + z = pt4d.z; + else + z = 0.0; + if (has_m) + m = pt4d.m; + else + m = 0.0; + if (dimension_model == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, iv, x, y, z); + } + else if (dimension_model == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, iv, x, y, m); + } + else if (dimension_model == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ln->Coords, iv, x, y); + } + } + break; + case POLYGONTYPE: + lwpoly = (LWPOLY *) lwg2; + has_z = 0; + has_m = 0; + pa = lwpoly->rings[0]; + if (FLAGS_GET_Z (pa->flags)) + has_z = 1; + if (FLAGS_GET_M (pa->flags)) + has_m = 1; + pg = gaiaAddPolygonToGeomColl (gaia, pa->npoints, + lwpoly->nrings - 1); + rng = pg->Exterior; + for (iv = 0; iv < pa->npoints; iv++) + { + /* copying Exterion Ring vertices */ + getPoint4d_p (pa, iv, &pt4d); + x = pt4d.x; + y = pt4d.y; + if (has_z) + z = pt4d.z; + else + z = 0.0; + if (has_m) + m = pt4d.m; + else + m = 0.0; + if (dimension_model == GAIA_XY_Z) + { + gaiaSetPointXYZ (rng->Coords, iv, x, y, z); + } + else if (dimension_model == GAIA_XY_M) + { + gaiaSetPointXYM (rng->Coords, iv, x, y, m); + } + else if (dimension_model == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (rng->Coords, iv, x, y, z, + m); + } + else + { + gaiaSetPoint (rng->Coords, iv, x, y); + } + } + for (ib = 1; ib < lwpoly->nrings; ib++) + { + has_z = 0; + has_m = 0; + pa = lwpoly->rings[ib]; + if (FLAGS_GET_Z (pa->flags)) + has_z = 1; + if (FLAGS_GET_M (pa->flags)) + has_m = 1; + rng = gaiaAddInteriorRing (pg, ib - 1, pa->npoints); + for (iv = 0; iv < pa->npoints; iv++) + { + /* copying Exterion Ring vertices */ + getPoint4d_p (pa, iv, &pt4d); + x = pt4d.x; + y = pt4d.y; + if (has_z) + z = pt4d.z; + else + z = 0.0; + if (has_m) + m = pt4d.m; + else + m = 0.0; + if (dimension_model == GAIA_XY_Z) + { + gaiaSetPointXYZ (rng->Coords, iv, x, + y, z); + } + else if (dimension_model == GAIA_XY_M) + { + gaiaSetPointXYM (rng->Coords, iv, x, + y, m); + } + else if (dimension_model == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (rng->Coords, iv, x, + y, z, m); + } + else + { + gaiaSetPoint (rng->Coords, iv, x, y); + } + } + } + break; + }; + } + break; + default: + gaiaFreeGeomColl (gaia); + gaia = NULL; + break; + }; + + return gaia; +} + +static gaiaGeomCollPtr +fromLWGeom (const LWGEOM * lwgeom, const int dimension_model, + const int declared_type) +{ +/* converting a LWGEOM Geometry into a GAIA Geometry */ + gaiaGeomCollPtr gaia = NULL; + + if (lwgeom == NULL) + return NULL; + if (lwgeom_is_empty (lwgeom)) + return NULL; + + if (dimension_model == GAIA_XY_Z) + gaia = gaiaAllocGeomCollXYZ (); + else if (dimension_model == GAIA_XY_M) + gaia = gaiaAllocGeomCollXYM (); + else if (dimension_model == GAIA_XY_Z_M) + gaia = gaiaAllocGeomCollXYZM (); + else + gaia = gaiaAllocGeomColl (); + gaia->DeclaredType = declared_type; + fromLWGeomIncremental (gaia, lwgeom); + + return gaia; +} + +static int +check_valid_type (const LWGEOM * lwgeom, int declared_type) +{ +/* checking if the geometry type is a valid one */ + int ret = 0; + switch (lwgeom->type) + { + case POINTTYPE: + case MULTIPOINTTYPE: + if (declared_type == GAIA_POINT || declared_type == GAIA_POINTZ + || declared_type == GAIA_POINTM || declared_type == GAIA_POINTZM) + ret = 1; + if (declared_type == GAIA_MULTIPOINT + || declared_type == GAIA_MULTIPOINTZ + || declared_type == GAIA_MULTIPOINTM + || declared_type == GAIA_MULTIPOINTZM) + ret = 1; + break; + case LINETYPE: + case MULTILINETYPE: + if (declared_type == GAIA_LINESTRING + || declared_type == GAIA_LINESTRINGZ + || declared_type == GAIA_LINESTRINGM + || declared_type == GAIA_LINESTRINGZM) + ret = 1; + if (declared_type == GAIA_MULTILINESTRING + || declared_type == GAIA_MULTILINESTRINGZ + || declared_type == GAIA_MULTILINESTRINGM + || declared_type == GAIA_MULTILINESTRINGZM) + ret = 1; + break; + case POLYGONTYPE: + case MULTIPOLYGONTYPE: + if (declared_type == GAIA_POLYGON || declared_type == GAIA_POLYGONZ + || declared_type == GAIA_POLYGONM + || declared_type == GAIA_POLYGONZM) + ret = 1; + if (declared_type == GAIA_MULTIPOLYGON + || declared_type == GAIA_MULTIPOLYGONZ + || declared_type == GAIA_MULTIPOLYGONM + || declared_type == GAIA_MULTIPOLYGONZM) + ret = 1; + break; + case COLLECTIONTYPE: + if (declared_type == GAIA_GEOMETRYCOLLECTION + || declared_type == GAIA_GEOMETRYCOLLECTIONZ + || declared_type == GAIA_GEOMETRYCOLLECTIONM + || declared_type == GAIA_GEOMETRYCOLLECTIONZM) + ret = 1; + break; + }; + return ret; +} + +static gaiaGeomCollPtr +fromLWGeomValidated (const LWGEOM * lwgeom, const int dimension_model, + const int declared_type) +{ +/* +/ converting a LWGEOM Geometry into a GAIA Geometry +/ first collection - validated items +*/ + gaiaGeomCollPtr gaia = NULL; + LWGEOM *lwg2 = NULL; + LWCOLLECTION *lwc = NULL; + int ngeoms; + + if (lwgeom == NULL) + return NULL; + if (lwgeom_is_empty (lwgeom)) + return NULL; + + switch (lwgeom->type) + { + case COLLECTIONTYPE: + lwc = (LWCOLLECTION *) lwgeom; + ngeoms = lwc->ngeoms; + if (ngeoms <= 2) + { + lwg2 = lwc->geoms[0]; + if (check_valid_type (lwg2, declared_type)) + gaia = fromLWGeom (lwg2, dimension_model, declared_type); + } + break; + default: + if (check_valid_type (lwgeom, declared_type)) + gaia = fromLWGeom (lwgeom, dimension_model, declared_type); + if (gaia == NULL) + { + /* Andrea Peri: 2013-05-02 returning anyway the LWGEOM geometry, + / even if it has a mismatching type */ + int type = -1; + switch (lwgeom->type) + { + case POINTTYPE: + type = GAIA_POINT; + break; + case LINETYPE: + type = GAIA_LINESTRING; + break; + case POLYGONTYPE: + type = GAIA_POLYGON; + break; + case MULTIPOINTTYPE: + type = GAIA_MULTIPOINT; + break; + case MULTILINETYPE: + type = GAIA_MULTILINESTRING; + break; + case MULTIPOLYGONTYPE: + type = GAIA_MULTIPOLYGON; + break; + }; + if (type >= 0) + gaia = fromLWGeom (lwgeom, dimension_model, type); + } + break; + } + return gaia; +} + +static gaiaGeomCollPtr +fromLWGeomDiscarded (const LWGEOM * lwgeom, const int dimension_model, + const int declared_type) +{ +/* +/ converting a LWGEOM Geometry into a GAIA Geometry +/ second collection - discarded items +*/ + gaiaGeomCollPtr gaia = NULL; + LWGEOM *lwg2 = NULL; + LWCOLLECTION *lwc = NULL; + int ngeoms; + int ig; + + if (lwgeom == NULL) + return NULL; + if (lwgeom_is_empty (lwgeom)) + return NULL; + + if (lwgeom->type == COLLECTIONTYPE) + { + if (dimension_model == GAIA_XY_Z) + gaia = gaiaAllocGeomCollXYZ (); + else if (dimension_model == GAIA_XY_M) + gaia = gaiaAllocGeomCollXYM (); + else if (dimension_model == GAIA_XY_Z_M) + gaia = gaiaAllocGeomCollXYZM (); + else + gaia = gaiaAllocGeomColl (); + lwc = (LWCOLLECTION *) lwgeom; + ngeoms = lwc->ngeoms; + for (ig = 0; ig < ngeoms; ig++) + { + lwg2 = lwc->geoms[ig]; + if (!check_valid_type (lwg2, declared_type)) + fromLWGeomIncremental (gaia, lwg2); + } + } +/* +Andrea Peri: 2013-05-02 +when a single geometry is returned by LWGEOM it's always "valid" +and there are no discarded items at all + + else if (!check_valid_type (lwgeom, declared_type)) + gaia = fromLWGeom (lwgeom, dimension_model, declared_type); +*/ + return gaia; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaMakeValid (gaiaGeomCollPtr geom) +{ +/* wrapping LWGEOM MakeValid [collecting valid items] */ + LWGEOM *g1; + LWGEOM *g2; + gaiaGeomCollPtr result = NULL; + + if (!geom) + return NULL; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + g1 = toLWGeom (geom); + g2 = lwgeom_make_valid (g1); + if (!g2) + { + lwgeom_free (g1); + goto done; + } + result = fromLWGeomValidated (g2, geom->DimensionModel, geom->DeclaredType); + spatialite_init_geos (); + lwgeom_free (g1); + lwgeom_free (g2); + if (result == NULL) + goto done; + result->Srid = geom->Srid; + + done: +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaMakeValidDiscarded (gaiaGeomCollPtr geom) +{ +/* wrapping LWGEOM MakeValid [collecting discarder items] */ + LWGEOM *g1; + LWGEOM *g2; + gaiaGeomCollPtr result = NULL; + + if (!geom) + return NULL; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + g1 = toLWGeom (geom); + g2 = lwgeom_make_valid (g1); + if (!g2) + { + lwgeom_free (g1); + goto done; + } + result = fromLWGeomDiscarded (g2, geom->DimensionModel, geom->DeclaredType); + spatialite_init_geos (); + lwgeom_free (g1); + lwgeom_free (g2); + if (result == NULL) + goto done; + result->Srid = geom->Srid; + + done: +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaSegmentize (gaiaGeomCollPtr geom, double dist) +{ +/* wrapping LWGEOM Segmentize */ + LWGEOM *g1; + LWGEOM *g2; + gaiaGeomCollPtr result = NULL; + + if (!geom) + return NULL; + if (dist <= 0.0) + return NULL; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + g1 = toLWGeom (geom); + g2 = lwgeom_segmentize2d (g1, dist); + if (!g2) + { + lwgeom_free (g1); + goto done; + } + result = fromLWGeom (g2, geom->DimensionModel, geom->DeclaredType); + spatialite_init_geos (); + lwgeom_free (g1); + lwgeom_free (g2); + if (result == NULL) + goto done; + result->Srid = geom->Srid; + + done: +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return result; +} + +static int +check_split_args (gaiaGeomCollPtr input, gaiaGeomCollPtr blade) +{ +/* testing Split arguments */ + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + int i_lns = 0; + int i_pgs = 0; + int b_pts = 0; + int b_lns = 0; + + if (!input) + return 0; + if (!blade) + return 0; + +/* testing the Input type */ + if (input->FirstPoint != NULL) + { + /* Point(s) on Input is forbidden !!!! */ + return 0; + } + ln = input->FirstLinestring; + while (ln) + { + /* counting how many Linestrings are there */ + i_lns++; + ln = ln->Next; + } + pg = input->FirstPolygon; + while (pg) + { + /* counting how many Polygons are there */ + i_pgs++; + pg = pg->Next; + } + if (i_lns + i_pgs == 0) + { + /* empty Input */ + return 0; + } + +/* testing the Blade type */ + pt = blade->FirstPoint; + while (pt) + { + /* counting how many Points are there */ + b_pts++; + pt = pt->Next; + } + if (b_pts > 1) + { + /* MultiPoint on Blade is forbidden !!!! */ + return 0; + } + ln = blade->FirstLinestring; + while (ln) + { + /* counting how many Linestrings are there */ + b_lns++; + ln = ln->Next; + } + if (b_lns > 1) + { + /* MultiLinestring on Blade is forbidden !!!! */ + return 0; + } + if (blade->FirstPolygon != NULL) + { + /* Polygon(s) on Blade is forbidden !!!! */ + return 0; + } + if (b_pts + b_lns == 0) + { + /* empty Blade */ + return 0; + } + if (b_pts + b_lns > 1) + { + /* invalid Blade [point + linestring] */ + return 0; + } + +/* compatibility check */ + if (b_lns == 1) + { + /* Linestring blade is always valid */ + return 1; + } + if (i_lns >= 1 && b_pts == 1) + { + /* Linestring or MultiLinestring input and Point blade is allowed */ + return 1; + } + + return 0; +} + +static void +set_split_gtype (gaiaGeomCollPtr geom) +{ +/* assignign the actual geometry type */ + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + int pts = 0; + int lns = 0; + int pgs = 0; + + pt = geom->FirstPoint; + while (pt) + { + /* counting how many Points are there */ + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + /* counting how many Linestrings are there */ + lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + /* counting how many Polygons are there */ + pgs++; + pg = pg->Next; + } + + if (pts == 1 && lns == 0 && pgs == 0) + { + geom->DeclaredType = GAIA_POINT; + return; + } + if (pts > 1 && lns == 0 && pgs == 0) + { + geom->DeclaredType = GAIA_MULTIPOINT; + return; + } + if (pts == 0 && lns == 1 && pgs == 0) + { + geom->DeclaredType = GAIA_LINESTRING; + return; + } + if (pts == 0 && lns > 1 && pgs == 0) + { + geom->DeclaredType = GAIA_MULTILINESTRING; + return; + } + if (pts == 0 && lns == 0 && pgs == 1) + { + geom->DeclaredType = GAIA_POLYGON; + return; + } + if (pts == 0 && lns == 0 && pgs > 1) + { + geom->DeclaredType = GAIA_MULTIPOLYGON; + return; + } + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; +} + +static LWGEOM * +toLWGeomLinestring (gaiaLinestringPtr ln, int srid) +{ +/* converting a GAIA Linestring into a LWGEOM Geometry */ + int iv; + double x; + double y; + double z; + double m; + int has_z = 0; + int has_m = 0; + POINTARRAY *pa; + POINT4D point; + + if (ln->DimensionModel == GAIA_XY_Z || ln->DimensionModel == GAIA_XY_Z_M) + has_z = 1; + if (ln->DimensionModel == GAIA_XY_M || ln->DimensionModel == GAIA_XY_Z_M) + has_m = 1; + pa = ptarray_construct (has_z, has_m, ln->Points); + for (iv = 0; iv < ln->Points; iv++) + { + /* copying vertices */ + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + point.x = x; + point.y = y; + if (has_z) + point.z = z; + if (has_m) + point.m = m; + ptarray_set_point4d (pa, iv, &point); + } + return (LWGEOM *) lwline_construct (srid, NULL, pa); +} + +static LWGEOM * +toLWGeomPolygon (gaiaPolygonPtr pg, int srid) +{ +/* converting a GAIA Linestring into a LWGEOM Geometry */ + int iv; + int ib; + double x; + double y; + double z; + double m; + int ngeoms; + int has_z = 0; + int has_m = 0; + int close_ring; + gaiaRingPtr rng; + POINTARRAY **ppaa; + POINT4D point; + + if (pg->DimensionModel == GAIA_XY_Z || pg->DimensionModel == GAIA_XY_Z_M) + has_z = 1; + if (pg->DimensionModel == GAIA_XY_M || pg->DimensionModel == GAIA_XY_Z_M) + has_m = 1; + ngeoms = pg->NumInteriors; + ppaa = lwalloc (sizeof (POINTARRAY *) * (ngeoms + 1)); + rng = pg->Exterior; + close_ring = check_unclosed_ring (rng); + if (close_ring) + ppaa[0] = ptarray_construct (has_z, has_m, rng->Points + 1); + else + ppaa[0] = ptarray_construct (has_z, has_m, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + /* copying vertices - Exterior Ring */ + if (pg->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (pg->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (pg->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + point.x = x; + point.y = y; + if (has_z) + point.z = z; + if (has_m) + point.m = m; + ptarray_set_point4d (ppaa[0], iv, &point); + } + if (close_ring) + { + /* making an unclosed ring to be closed */ + if (pg->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, 0, &x, &y, &z); + } + else if (pg->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, 0, &x, &y, &m); + } + else if (pg->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, 0, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, 0, &x, &y); + } + point.x = x; + point.y = y; + if (has_z) + point.z = z; + if (has_m) + point.m = m; + ptarray_set_point4d (ppaa[0], rng->Points, &point); + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + /* copying vertices - Interior Rings */ + rng = pg->Interiors + ib; + close_ring = check_unclosed_ring (rng); + if (close_ring) + ppaa[1 + ib] = ptarray_construct (has_z, has_m, rng->Points + 1); + else + ppaa[1 + ib] = ptarray_construct (has_z, has_m, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + if (pg->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (pg->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (pg->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + point.x = x; + point.y = y; + if (has_z) + point.z = z; + if (has_m) + point.m = m; + ptarray_set_point4d (ppaa[1 + ib], iv, &point); + } + if (close_ring) + { + /* making an unclosed ring to be closed */ + if (pg->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, 0, &x, &y, &z); + } + else if (pg->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, 0, &x, &y, &m); + } + else if (pg->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, 0, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, 0, &x, &y); + } + point.x = x; + point.y = y; + if (has_z) + point.z = z; + if (has_m) + point.m = m; + ptarray_set_point4d (ppaa[0], rng->Points, &point); + } + } + return (LWGEOM *) lwpoly_construct (srid, NULL, ngeoms + 1, ppaa); +} + +static gaiaGeomCollPtr +fromLWGeomLeft (gaiaGeomCollPtr gaia, const LWGEOM * lwgeom) +{ +/* +/ converting a LWGEOM Geometry into a GAIA Geometry +/ collecting "left side" items +*/ + LWGEOM *lwg2 = NULL; + LWCOLLECTION *lwc = NULL; + int ngeoms; + int ig; + + if (lwgeom == NULL) + return NULL; + if (lwgeom_is_empty (lwgeom)) + return NULL; + + if (lwgeom->type == COLLECTIONTYPE) + { + lwc = (LWCOLLECTION *) lwgeom; + ngeoms = lwc->ngeoms; + for (ig = 0; ig < ngeoms; ig += 2) + { + lwg2 = lwc->geoms[ig]; + fromLWGeomIncremental (gaia, lwg2); + } + } + else + gaia = fromLWGeom (lwgeom, gaia->DimensionModel, gaia->DeclaredType); + + return gaia; +} + +static gaiaGeomCollPtr +fromLWGeomRight (gaiaGeomCollPtr gaia, const LWGEOM * lwgeom) +{ +/* +/ converting a LWGEOM Geometry into a GAIA Geometry +/ collecting "right side" items +*/ + LWGEOM *lwg2 = NULL; + LWCOLLECTION *lwc = NULL; + int ngeoms; + int ig; + + if (lwgeom == NULL) + return NULL; + if (lwgeom_is_empty (lwgeom)) + return NULL; + + if (lwgeom->type == COLLECTIONTYPE) + { + lwc = (LWCOLLECTION *) lwgeom; + ngeoms = lwc->ngeoms; + for (ig = 1; ig < ngeoms; ig += 2) + { + lwg2 = lwc->geoms[ig]; + fromLWGeomIncremental (gaia, lwg2); + } + } + + return gaia; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaSplit (gaiaGeomCollPtr input, gaiaGeomCollPtr blade) +{ +/* wrapping LWGEOM Split */ + LWGEOM *g1; + LWGEOM *g2; + LWGEOM *g3; + gaiaGeomCollPtr result = NULL; + + if (!check_split_args (input, blade)) + return NULL; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + g1 = toLWGeom (input); + g2 = toLWGeom (blade); + g3 = lwgeom_split (g1, g2); + if (!g3) + { + lwgeom_free (g1); + lwgeom_free (g2); + goto done; + } + result = fromLWGeom (g3, input->DimensionModel, input->DeclaredType); + spatialite_init_geos (); + lwgeom_free (g1); + lwgeom_free (g2); + lwgeom_free (g3); + if (result == NULL) + goto done; + result->Srid = input->Srid; + set_split_gtype (result); + + done: +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaSplitLeft (gaiaGeomCollPtr input, gaiaGeomCollPtr blade) +{ +/* wrapping LWGEOM Split [left half] */ + LWGEOM *g1; + LWGEOM *g2; + LWGEOM *g3; + gaiaGeomCollPtr result = NULL; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + + if (!check_split_args (input, blade)) + return NULL; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + if (input->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (input->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else if (input->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else + result = gaiaAllocGeomColl (); + + g2 = toLWGeom (blade); + + ln = input->FirstLinestring; + while (ln) + { + /* splitting some Linestring */ + g1 = toLWGeomLinestring (ln, input->Srid); + g3 = lwgeom_split (g1, g2); + if (g3) + { + result = fromLWGeomLeft (result, g3); + lwgeom_free (g3); + } + spatialite_init_geos (); + lwgeom_free (g1); + ln = ln->Next; + } + pg = input->FirstPolygon; + while (pg) + { + /* splitting some Polygon */ + g1 = toLWGeomPolygon (pg, input->Srid); + g3 = lwgeom_split (g1, g2); + if (g3) + { + result = fromLWGeomLeft (result, g3); + lwgeom_free (g3); + } + spatialite_init_geos (); + lwgeom_free (g1); + pg = pg->Next; + } + + lwgeom_free (g2); + if (result == NULL) + goto done; + if (result->FirstPoint == NULL && result->FirstLinestring == NULL + && result->FirstPolygon == NULL) + { + gaiaFreeGeomColl (result); + result = NULL; + goto done; + } + result->Srid = input->Srid; + set_split_gtype (result); + + done: +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaSplitRight (gaiaGeomCollPtr input, gaiaGeomCollPtr blade) +{ +/* wrapping LWGEOM Split [right half] */ + LWGEOM *g1; + LWGEOM *g2; + LWGEOM *g3; + gaiaGeomCollPtr result = NULL; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + + if (!check_split_args (input, blade)) + return NULL; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + if (input->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (input->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else if (input->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else + result = gaiaAllocGeomColl (); + + g2 = toLWGeom (blade); + + ln = input->FirstLinestring; + while (ln) + { + /* splitting some Linestring */ + g1 = toLWGeomLinestring (ln, input->Srid); + g3 = lwgeom_split (g1, g2); + if (g3) + { + result = fromLWGeomRight (result, g3); + lwgeom_free (g3); + } + spatialite_init_geos (); + lwgeom_free (g1); + ln = ln->Next; + } + pg = input->FirstPolygon; + while (pg) + { + /* splitting some Polygon */ + g1 = toLWGeomPolygon (pg, input->Srid); + g3 = lwgeom_split (g1, g2); + if (g3) + { + result = fromLWGeomRight (result, g3); + lwgeom_free (g3); + } + spatialite_init_geos (); + lwgeom_free (g1); + pg = pg->Next; + } + + lwgeom_free (g2); + if (result == NULL) + goto done; + if (result->FirstPoint == NULL && result->FirstLinestring == NULL + && result->FirstPolygon == NULL) + { + gaiaFreeGeomColl (result); + result = NULL; + goto done; + } + result->Srid = input->Srid; + set_split_gtype (result); + + done: +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return result; +} + +GAIAGEO_DECLARE int +gaiaAzimuth (double xa, double ya, double xb, double yb, double *azimuth) +{ +/* wrapping LWGEOM Azimuth */ + POINT2D pt1; + POINT2D pt2; + double az; + int ret = 1; + pt1.x = xa; + pt1.y = ya; + pt2.x = xb; + pt2.y = yb; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + if (!azimuth_pt_pt (&pt1, &pt2, &az)) + ret = 0; + *azimuth = az; + +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return ret; +} + +GAIAGEO_DECLARE int +gaiaEllipsoidAzimuth (double xa, double ya, double xb, double yb, double a, + double b, double *azimuth) +{ +/* wrapping LWGEOM AzimuthSpheroid */ + LWPOINT *pt1 = lwpoint_make2d (0, xa, ya); + LWPOINT *pt2 = lwpoint_make2d (0, xb, yb); + SPHEROID ellips; + int ret = 1; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + spheroid_init (&ellips, a, b); + *azimuth = lwgeom_azumith_spheroid (pt1, pt2, &ellips); + lwpoint_free (pt1); + lwpoint_free (pt2); + +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return ret; +} + +GAIAGEO_DECLARE int +gaiaProjectedPoint (double x1, double y1, double a, double b, double distance, + double azimuth, double *x2, double *y2) +{ +/* wrapping LWGEOM Project */ + LWPOINT *pt1 = lwpoint_make2d (0, x1, y1); + LWPOINT *pt2; + SPHEROID ellips; + int ret = 0; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + spheroid_init (&ellips, a, b); + pt2 = lwgeom_project_spheroid (pt1, &ellips, distance, azimuth); + lwpoint_free (pt1); + if (pt2 != NULL) + { + *x2 = lwpoint_get_x (pt2); + *y2 = lwpoint_get_y (pt2); + lwpoint_free (pt2); + ret = 1; + } + +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeodesicArea (gaiaGeomCollPtr geom, double a, double b, int use_ellipsoid, + double *area) +{ +/* wrapping LWGEOM AreaSphere and AreaSpheroid */ + LWGEOM *g = toLWGeom (geom); + SPHEROID ellips; + GBOX gbox; + double tolerance = 1e-12; + int ret = 1; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + spheroid_init (&ellips, a, b); + if (g == NULL) + { + ret = 0; + goto done; + } + lwgeom_calculate_gbox_geodetic (g, &gbox); + if (use_ellipsoid) + { + /* testing for "forbidden" calculations on the ellipsoid */ + if ((gbox.zmax + tolerance) >= 1.0 || (gbox.zmin - tolerance) <= -1.0) + use_ellipsoid = 0; /* can't circle the poles */ + if (gbox.zmax > 0.0 && gbox.zmin < 0.0) + use_ellipsoid = 0; /* can't cross the equator */ + } + if (use_ellipsoid) + *area = lwgeom_area_spheroid (g, &ellips); + else + *area = lwgeom_area_sphere (g, &ellips); + lwgeom_free (g); + + done: +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return ret; +} + +GAIAGEO_DECLARE char * +gaiaGeoHash (gaiaGeomCollPtr geom, int precision) +{ +/* wrapping LWGEOM GeoHash */ + LWGEOM *g; + char *result; + char *geo_hash = NULL; + int len; + + if (!geom) + return NULL; + gaiaMbrGeometry (geom); + if (geom->MinX < -180.0 || geom->MaxX > 180.0 || geom->MinY < -90.0 + || geom->MaxY > 90.0) + return NULL; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + g = toLWGeom (geom); + result = lwgeom_geohash (g, precision); + lwgeom_free (g); + if (result == NULL) + goto done; + len = strlen (result); + if (len == 0) + { + lwfree (result); + goto done; + } + geo_hash = malloc (len + 1); + strcpy (geo_hash, result); + lwfree (result); + + done: +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return geo_hash; +} + +GAIAGEO_DECLARE char * +gaiaAsX3D (gaiaGeomCollPtr geom, const char *srs, int precision, int options, + const char *defid) +{ +/* wrapping LWGEOM AsX3D */ + LWGEOM *g; + char *result; + char *x3d = NULL; + int len; + + if (!geom) + return NULL; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + gaiaMbrGeometry (geom); + g = toLWGeom (geom); + result = lwgeom_to_x3d3 (g, (char *) srs, precision, options, defid); + lwgeom_free (g); + if (result == NULL) + goto done; + len = strlen (result); + if (len == 0) + { + lwfree (result); + goto done; + } + x3d = malloc (len + 1); + strcpy (x3d, result); + lwfree (result); + + done: +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return x3d; +} + +GAIAGEO_DECLARE int +gaia3DDistance (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, double *dist) +{ +/* wrapping LWGEOM mindistance3d */ + LWGEOM *g1; + LWGEOM *g2; + double d; + int ret = 1; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + g1 = toLWGeom (geom1); + g2 = toLWGeom (geom2); + + d = lwgeom_mindistance3d (g1, g2); + lwgeom_free (g1); + lwgeom_free (g2); + *dist = d; + +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return ret; +} + +GAIAGEO_DECLARE int +gaiaMaxDistance (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, double *dist) +{ +/* wrapping LWGEOM maxdistance2d */ + LWGEOM *g1; + LWGEOM *g2; + double d; + int ret = 1; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + g1 = toLWGeom (geom1); + g2 = toLWGeom (geom2); + + d = lwgeom_maxdistance2d (g1, g2); + lwgeom_free (g1); + lwgeom_free (g2); + *dist = d; + +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return ret; +} + +GAIAGEO_DECLARE int +gaia3DMaxDistance (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, double *dist) +{ +/* wrapping LWGEOM maxdistance2d */ + LWGEOM *g1; + LWGEOM *g2; + double d; + int ret = 1; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + g1 = toLWGeom (geom1); + g2 = toLWGeom (geom2); + + d = lwgeom_maxdistance3d (g1, g2); + lwgeom_free (g1); + lwgeom_free (g2); + *dist = d; + +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return ret; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaNodeLines (gaiaGeomCollPtr geom) +{ +/* wrapping LWGEOM lwgeom_node */ + LWGEOM *g1; + LWGEOM *g2; + gaiaGeomCollPtr result = NULL; + + if (!geom) + return NULL; + +/* locking the semaphore */ + splite_lwgeom_semaphore_lock (); + + g1 = toLWGeom (geom); + g2 = lwgeom_node (g1); + if (!g2) + { + lwgeom_free (g1); + goto done; + } + result = fromLWGeom (g2, geom->DimensionModel, geom->DeclaredType); + spatialite_init_geos (); + lwgeom_free (g1); + lwgeom_free (g2); + if (result == NULL) + goto done; + result->Srid = geom->Srid; + + done: +/* unlocking the semaphore */ + splite_lwgeom_semaphore_unlock (); + return result; +} + +#endif /* end enabling LWGEOM support */ diff --git a/src/spatialite/src/gaiageo/gg_relations.c b/src/spatialite/src/gaiageo/gg_relations.c new file mode 100644 index 0000000..45539d0 --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_relations.c @@ -0,0 +1,3988 @@ +/* + + gg_relations.c -- Gaia spatial relations + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#ifndef OMIT_GEOS /* including GEOS */ +#include +#endif + +#include +#include + +#include + +/* GLOBAL variables */ +char *gaia_geos_error_msg = NULL; +char *gaia_geos_warning_msg = NULL; +char *gaia_geosaux_error_msg = NULL; + +SPATIALITE_PRIVATE void +splite_free_geos_cache_item (struct splite_geos_cache_item *p) +{ +#ifndef OMIT_GEOS /* including GEOS */ + if (p->preparedGeosGeom) + GEOSPreparedGeom_destroy (p->preparedGeosGeom); + if (p->geosGeom) + GEOSGeom_destroy (p->geosGeom); +#endif + p->geosGeom = NULL; + p->preparedGeosGeom = NULL; +} + +SPATIALITE_PRIVATE void +splite_free_geos_cache_item_r (const void *p_cache, + struct splite_geos_cache_item *p) +{ +#ifndef OMIT_GEOS /* including GEOS */ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + { + splite_free_geos_cache_item (p); + return; + } + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + { + splite_free_geos_cache_item (p); + return; + } + handle = cache->GEOS_handle; + if (handle == NULL) + { + splite_free_geos_cache_item (p); + return; + } + if (p->preparedGeosGeom) + GEOSPreparedGeom_destroy_r (handle, p->preparedGeosGeom); + if (p->geosGeom) + GEOSGeom_destroy_r (handle, p->geosGeom); +#endif + p->geosGeom = NULL; + p->preparedGeosGeom = NULL; +} + +GAIAGEO_DECLARE void +gaiaResetGeosMsg () +{ +/* resets the GEOS error and warning messages */ + if (gaia_geos_error_msg != NULL) + free (gaia_geos_error_msg); + if (gaia_geos_warning_msg != NULL) + free (gaia_geos_warning_msg); + if (gaia_geosaux_error_msg != NULL) + free (gaia_geosaux_error_msg); + gaia_geos_error_msg = NULL; + gaia_geos_warning_msg = NULL; + gaia_geosaux_error_msg = NULL; +} + +GAIAGEO_DECLARE const char * +gaiaGetGeosErrorMsg () +{ +/* return the latest GEOS error message */ + return gaia_geos_error_msg; +} + +GAIAGEO_DECLARE const char * +gaiaGetGeosWarningMsg () +{ +/* return the latest GEOS error message */ + return gaia_geos_warning_msg; +} + +GAIAGEO_DECLARE const char * +gaiaGetGeosAuxErrorMsg () +{ +/* return the latest GEOS (auxialiary) error message */ + return gaia_geosaux_error_msg; +} + +GAIAGEO_DECLARE void +gaiaSetGeosErrorMsg (const char *msg) +{ +/* setting the latest GEOS error message */ + int len; + if (gaia_geos_error_msg != NULL) + free (gaia_geos_error_msg); + gaia_geos_error_msg = NULL; + if (msg == NULL) + return; + len = strlen (msg); + gaia_geos_error_msg = malloc (len + 1); + strcpy (gaia_geos_error_msg, msg); +} + +GAIAGEO_DECLARE void +gaiaSetGeosWarningMsg (const char *msg) +{ +/* setting the latest GEOS error message */ + int len; + if (gaia_geos_warning_msg != NULL) + free (gaia_geos_warning_msg); + gaia_geos_warning_msg = NULL; + if (msg == NULL) + return; + len = strlen (msg); + gaia_geos_warning_msg = malloc (len + 1); + strcpy (gaia_geos_warning_msg, msg); +} + +GAIAGEO_DECLARE void +gaiaSetGeosAuxErrorMsg (const char *msg) +{ +/* setting the latest GEOS (auxiliary) error message */ + int len; + if (gaia_geosaux_error_msg != NULL) + free (gaia_geosaux_error_msg); + gaia_geosaux_error_msg = NULL; + if (msg == NULL) + return; + len = strlen (msg); + gaia_geosaux_error_msg = malloc (len + 1); + strcpy (gaia_geosaux_error_msg, msg); +} + +static int +check_point (double *coords, int points, double x, double y) +{ +/* checks if [X,Y] point is defined into this coordinate array [Linestring or Ring] */ + int iv; + double xx; + double yy; + for (iv = 0; iv < points; iv++) + { + gaiaGetPoint (coords, iv, &xx, &yy); + if (xx == x && yy == y) + return 1; + } + return 0; +} + +GAIAGEO_DECLARE int +gaiaLinestringEquals (gaiaLinestringPtr line1, gaiaLinestringPtr line2) +{ +/* checks if two Linestrings are "spatially equal" */ + int iv; + double x; + double y; + if (line1->Points != line2->Points) + return 0; + for (iv = 0; iv < line1->Points; iv++) + { + gaiaGetPoint (line1->Coords, iv, &x, &y); + if (!check_point (line2->Coords, line2->Points, x, y)) + return 0; + } + return 1; +} + +GAIAGEO_DECLARE int +gaiaPolygonEquals (gaiaPolygonPtr polyg1, gaiaPolygonPtr polyg2) +{ +/* checks if two Polygons are "spatially equal" */ + int ib; + int ib2; + int iv; + int ok2; + double x; + double y; + gaiaRingPtr ring1; + gaiaRingPtr ring2; + if (polyg1->NumInteriors != polyg2->NumInteriors) + return 0; +/* checking the EXTERIOR RINGs */ + ring1 = polyg1->Exterior; + ring2 = polyg2->Exterior; + if (ring1->Points != ring2->Points) + return 0; + for (iv = 0; iv < ring1->Points; iv++) + { + gaiaGetPoint (ring1->Coords, iv, &x, &y); + if (!check_point (ring2->Coords, ring2->Points, x, y)) + return 0; + } + for (ib = 0; ib < polyg1->NumInteriors; ib++) + { + /* checking the INTERIOR RINGS */ + int ok = 0; + ring1 = polyg1->Interiors + ib; + for (ib2 = 0; ib2 < polyg2->NumInteriors; ib2++) + { + ok2 = 1; + ring2 = polyg2->Interiors + ib2; + for (iv = 0; iv < ring1->Points; iv++) + { + gaiaGetPoint (ring1->Coords, iv, &x, &y); + if (!check_point (ring2->Coords, ring2->Points, x, y)) + { + ok2 = 0; + break; + } + } + if (ok2) + { + ok = 1; + break; + } + } + if (!ok) + return 0; + } + return 1; +} + +#ifndef OMIT_GEOS /* including GEOS */ + +static int +splite_mbr_overlaps (gaiaGeomCollPtr g1, gaiaGeomCollPtr g2) +{ +/* checks if two MBRs do overlap */ + if (g1->MaxX < g2->MinX) + return 0; + if (g1->MinX > g2->MaxX) + return 0; + if (g1->MaxY < g2->MinY) + return 0; + if (g1->MinY > g2->MaxY) + return 0; + return 1; +} + +static int +splite_mbr_contains (gaiaGeomCollPtr g1, gaiaGeomCollPtr g2) +{ +/* checks if MBR#1 fully contains MBR#2 */ + if (g2->MinX < g1->MinX) + return 0; + if (g2->MaxX > g1->MaxX) + return 0; + if (g2->MinY < g1->MinY) + return 0; + if (g2->MaxY > g1->MaxY) + return 0; + return 1; +} + +static int +splite_mbr_within (gaiaGeomCollPtr g1, gaiaGeomCollPtr g2) +{ +/* checks if MBR#1 is fully contained within MBR#2 */ + if (g1->MinX < g2->MinX) + return 0; + if (g1->MaxX > g2->MaxX) + return 0; + if (g1->MinY < g2->MinY) + return 0; + if (g1->MaxY > g2->MaxY) + return 0; + return 1; +} + +static int +splite_mbr_equals (gaiaGeomCollPtr g1, gaiaGeomCollPtr g2) +{ +/* checks if MBR#1 equals MBR#2 */ + if (g1->MinX != g2->MinX) + return 0; + if (g1->MaxX != g2->MaxX) + return 0; + if (g1->MinY != g2->MinY) + return 0; + if (g1->MaxY != g2->MaxY) + return 0; + return 1; +} + +static int +evalGeosCacheItem (unsigned char *blob, int blob_size, uLong crc, + struct splite_geos_cache_item *p) +{ +/* evaluting if this one could be a valid cache hit */ + if (blob_size != p->gaiaBlobSize) + { + /* surely not a match; different size */ + return 0; + } + if (crc != p->crc32) + { + /* surely not a match: different CRC32 */ + return 0; + } + +/* the first 46 bytes of the BLOB contain the MBR, + the SRID and the Type; so are assumed to represent + a valid signature */ + if (memcmp (blob, p->gaiaBlob, 46) == 0) + return 1; + return 0; +} + +static int +evalGeosCache (struct splite_internal_cache *cache, gaiaGeomCollPtr geom1, + unsigned char *blob1, int size1, gaiaGeomCollPtr geom2, + unsigned char *blob2, int size2, GEOSPreparedGeometry ** gPrep, + gaiaGeomCollPtr * geom) +{ +/* handling the internal GEOS cache */ + struct splite_geos_cache_item *p1 = &(cache->cacheItem1); + struct splite_geos_cache_item *p2 = &(cache->cacheItem2); + uLong crc1 = crc32 (0L, blob1, size1); + uLong crc2 = crc32 (0L, blob2, size2); + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return 0; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return 0; + handle = cache->GEOS_handle; + if (handle == NULL) + return 0; + +/* checking the first cache item */ + if (evalGeosCacheItem (blob1, size1, crc1, p1)) + { + /* found a matching item */ + if (p1->preparedGeosGeom == NULL) + { + /* preparing the GeosGeometries */ + p1->geosGeom = gaiaToGeos_r (cache, geom1); + if (p1->geosGeom) + { + p1->preparedGeosGeom = + (void *) GEOSPrepare_r (handle, p1->geosGeom); + if (p1->preparedGeosGeom == NULL) + { + /* unexpected failure */ + GEOSGeom_destroy_r (handle, p1->geosGeom); + p1->geosGeom = NULL; + } + } + } + if (p1->preparedGeosGeom) + { + /* returning the corresponding GeosPreparedGeometry */ + *gPrep = p1->preparedGeosGeom; + *geom = geom2; + return 1; + } + return 0; + } + +/* checking the second cache item */ + if (evalGeosCacheItem (blob2, size2, crc2, p2)) + { + /* found a matching item */ + if (p2->preparedGeosGeom == NULL) + { + /* preparing the GeosGeometries */ + p2->geosGeom = gaiaToGeos_r (cache, geom2); + if (p2->geosGeom) + { + p2->preparedGeosGeom = + (void *) GEOSPrepare_r (handle, p2->geosGeom); + if (p2->preparedGeosGeom == NULL) + { + /* unexpected failure */ + GEOSGeom_destroy_r (handle, p2->geosGeom); + p2->geosGeom = NULL; + } + } + } + if (p2->preparedGeosGeom) + { + /* returning the corresponding GeosPreparedGeometry */ + *gPrep = p2->preparedGeosGeom; + *geom = geom1; + return 1; + } + return 0; + } + +/* updating the GEOS cache item#1 */ + memcpy (p1->gaiaBlob, blob1, 46); + p1->gaiaBlobSize = size1; + p1->crc32 = crc1; + if (p1->preparedGeosGeom) + GEOSPreparedGeom_destroy_r (handle, p1->preparedGeosGeom); + if (p1->geosGeom) + GEOSGeom_destroy_r (handle, p1->geosGeom); + p1->geosGeom = NULL; + p1->preparedGeosGeom = NULL; + +/* updating the GEOS cache item#2 */ + memcpy (p2->gaiaBlob, blob2, 46); + p2->gaiaBlobSize = size2; + p2->crc32 = crc2; + if (p2->preparedGeosGeom) + GEOSPreparedGeom_destroy_r (handle, p2->preparedGeosGeom); + if (p2->geosGeom) + GEOSGeom_destroy_r (handle, p2->geosGeom); + p2->geosGeom = NULL; + p2->preparedGeosGeom = NULL; + + return 0; +} + +GAIAGEO_DECLARE int +gaiaGeomCollEquals (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* checks if two Geometries are "spatially equal" */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_equals (geom1, geom2)) + return 0; + + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + ret = GEOSEquals (g1, g2); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollEquals_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* checks if two Geometries are "spatially equal" */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_equals (geom1, geom2)) + return 0; + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSEquals_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollIntersects (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* checks if two Geometries do "spatially intersects" */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return 0; + + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + ret = GEOSIntersects (g1, g2); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollIntersects_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* checks if two Geometries do "spatially intersects" */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return 0; + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSIntersects_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollPreparedIntersects (const void *p_cache, gaiaGeomCollPtr geom1, + unsigned char *blob1, int size1, + gaiaGeomCollPtr geom2, unsigned char *blob2, + int size2) +{ +/* checks if two Geometries do "spatially intersects" */ + int ret; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSPreparedGeometry *gPrep; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr geom; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return 0; + +/* handling the internal GEOS cache */ + if (evalGeosCache + (cache, geom1, blob1, size1, geom2, blob2, size2, &gPrep, &geom)) + { + g2 = gaiaToGeos_r (cache, geom); + ret = GEOSPreparedIntersects_r (handle, gPrep, g2); + GEOSGeom_destroy_r (handle, g2); + return ret; + } + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSIntersects_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollDisjoint (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* checks if two Geometries are "spatially disjoint" */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return 1; + + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + ret = GEOSDisjoint (g1, g2); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollDisjoint_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* checks if two Geometries are "spatially disjoint" */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return 1; + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSDisjoint_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollPreparedDisjoint (const void *p_cache, gaiaGeomCollPtr geom1, + unsigned char *blob1, int size1, + gaiaGeomCollPtr geom2, unsigned char *blob2, + int size2) +{ +/* checks if two Geometries are "spatially disjoint" */ + int ret; + GEOSPreparedGeometry *gPrep; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr geom; + GEOSContextHandle_t handle = NULL; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return 1; + +/* handling the internal GEOS cache */ + if (evalGeosCache + (cache, geom1, blob1, size1, geom2, blob2, size2, &gPrep, &geom)) + { + g2 = gaiaToGeos_r (cache, geom); + ret = GEOSPreparedDisjoint_r (handle, gPrep, g2); + GEOSGeom_destroy_r (handle, g2); + return ret; + } + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSDisjoint_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollOverlaps (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* checks if two Geometries do "spatially overlaps" */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return 0; + + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + ret = GEOSOverlaps (g1, g2); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollOverlaps_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* checks if two Geometries do "spatially overlaps" */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return 0; + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSOverlaps_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollPreparedOverlaps (const void *p_cache, gaiaGeomCollPtr geom1, + unsigned char *blob1, int size1, + gaiaGeomCollPtr geom2, unsigned char *blob2, + int size2) +{ +/* checks if two Geometries do "spatially overlaps" */ + int ret; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSPreparedGeometry *gPrep; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr geom; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return 0; + +/* handling the internal GEOS cache */ + if (evalGeosCache + (cache, geom1, blob1, size1, geom2, blob2, size2, &gPrep, &geom)) + { + g2 = gaiaToGeos_r (cache, geom); + ret = GEOSPreparedOverlaps_r (handle, gPrep, g2); + GEOSGeom_destroy_r (handle, g2); + return ret; + } + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSOverlaps_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollCrosses (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* checks if two Geometries do "spatially crosses" */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return 0; + + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + ret = GEOSCrosses (g1, g2); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollCrosses_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* checks if two Geometries do "spatially crosses" */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return 0; + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSCrosses_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollPreparedCrosses (const void *p_cache, gaiaGeomCollPtr geom1, + unsigned char *blob1, int size1, + gaiaGeomCollPtr geom2, unsigned char *blob2, + int size2) +{ +/* checks if two Geometries do "spatially crosses" */ + int ret; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSPreparedGeometry *gPrep; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr geom; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return 0; + +/* handling the internal GEOS cache */ + if (evalGeosCache + (cache, geom1, blob1, size1, geom2, blob2, size2, &gPrep, &geom)) + { + g2 = gaiaToGeos_r (cache, geom); + ret = GEOSPreparedCrosses_r (handle, gPrep, g2); + GEOSGeom_destroy_r (handle, g2); + return ret; + } + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSCrosses_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollTouches (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* checks if two Geometries do "spatially touches" */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return 0; + + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + ret = GEOSTouches (g1, g2); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollTouches_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* checks if two Geometries do "spatially touches" */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return 0; + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSTouches_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollPreparedTouches (const void *p_cache, gaiaGeomCollPtr geom1, + unsigned char *blob1, int size1, + gaiaGeomCollPtr geom2, unsigned char *blob2, + int size2) +{ +/* checks if two Geometries do "spatially touches" */ + int ret; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSPreparedGeometry *gPrep; + gaiaGeomCollPtr geom; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return 0; + +/* handling the internal GEOS cache */ + if (evalGeosCache + (cache, geom1, blob1, size1, geom2, blob2, size2, &gPrep, &geom)) + { + g2 = gaiaToGeos_r (cache, geom); + ret = GEOSPreparedTouches_r (handle, gPrep, g2); + GEOSGeom_destroy_r (handle, g2); + return ret; + } + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSTouches_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollWithin (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* checks if GEOM-1 is completely contained within GEOM-2 */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_within (geom1, geom2)) + return 0; + + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + ret = GEOSWithin (g1, g2); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollWithin_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* checks if GEOM-1 is completely contained within GEOM-2 */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_within (geom1, geom2)) + return 0; + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSWithin_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollPreparedWithin (const void *p_cache, gaiaGeomCollPtr geom1, + unsigned char *blob1, int size1, + gaiaGeomCollPtr geom2, unsigned char *blob2, + int size2) +{ +/* checks if GEOM-1 is completely contained within GEOM-2 */ + int ret; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSPreparedGeometry *gPrep; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr geom; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_within (geom1, geom2)) + return 0; + +/* handling the internal GEOS cache */ + if (evalGeosCache + (cache, geom1, blob1, size1, geom2, blob2, size2, &gPrep, &geom)) + { + g2 = gaiaToGeos_r (cache, geom); + if (geom == geom2) + ret = GEOSPreparedWithin_r (handle, gPrep, g2); + else + ret = GEOSPreparedContains_r (handle, gPrep, g2); + GEOSGeom_destroy_r (handle, g2); + return ret; + } + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSWithin_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollContains (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* checks if GEOM-1 completely contains GEOM-2 */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_contains (geom1, geom2)) + return 0; + + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + ret = GEOSContains (g1, g2); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollContains_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* checks if GEOM-1 completely contains GEOM-2 */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_contains (geom1, geom2)) + return 0; + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSContains_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollPreparedContains (const void *p_cache, gaiaGeomCollPtr geom1, + unsigned char *blob1, int size1, + gaiaGeomCollPtr geom2, unsigned char *blob2, + int size2) +{ +/* checks if GEOM-1 completely contains GEOM-2 */ + int ret; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSPreparedGeometry *gPrep; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr geom; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_contains (geom1, geom2)) + return 0; + +/* handling the internal GEOS cache */ + if (evalGeosCache + (cache, geom1, blob1, size1, geom2, blob2, size2, &gPrep, &geom)) + { + g2 = gaiaToGeos_r (cache, geom); + if (geom == geom2) + ret = GEOSPreparedContains_r (handle, gPrep, g2); + else + ret = GEOSPreparedWithin_r (handle, gPrep, g2); + GEOSGeom_destroy_r (handle, g2); + return ret; + } + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSContains_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollRelate (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, + const char *pattern) +{ +/* checks if if GEOM-1 and GEOM-2 have a spatial relationship as specified by the pattern Matrix */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) + return -1; + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + ret = GEOSRelatePattern (g1, g2, pattern); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + if (ret == 2) + return -1; + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollRelate_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2, const char *pattern) +{ +/* checks if if GEOM-1 and GEOM-2 have a spatial relationship as specified by the pattern Matrix */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return -1; + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSRelatePattern_r (handle, g1, g2, pattern); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + if (ret == 2) + return -1; + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollLength (gaiaGeomCollPtr geom, double *xlength) +{ +/* computes the total length for this Geometry */ + double length; + int ret; + GEOSGeometry *g; + gaiaResetGeosMsg (); + if (!geom) + return 0; + if (gaiaIsToxic (geom)) + return 0; + g = gaiaToGeos (geom); + ret = GEOSLength (g, &length); + GEOSGeom_destroy (g); + if (ret) + *xlength = length; + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollLength_r (const void *p_cache, gaiaGeomCollPtr geom, + double *xlength) +{ +/* computes the total length for this Geometry */ + double length; + int ret; + GEOSGeometry *g; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom) + return 0; + if (gaiaIsToxic_r (cache, geom)) + return 0; + g = gaiaToGeos_r (cache, geom); + ret = GEOSLength_r (handle, g, &length); + GEOSGeom_destroy_r (handle, g); + if (ret) + *xlength = length; + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollLengthOrPerimeter (gaiaGeomCollPtr geom, int perimeter, + double *xlength) +{ +/* computes the total length or perimeter for this Geometry */ + double length; + int ret; + GEOSGeometry *g; + int mode = GAIA2GEOS_ONLY_LINESTRINGS; + if (perimeter) + mode = GAIA2GEOS_ONLY_POLYGONS; + gaiaResetGeosMsg (); + if (!geom) + return 0; + if (gaiaIsToxic (geom)) + return 0; + g = gaiaToGeosSelective (geom, mode); + if (g == NULL) + { + *xlength = 0.0; + return 1; + } + ret = GEOSLength (g, &length); + GEOSGeom_destroy (g); + if (ret) + *xlength = length; + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollLengthOrPerimeter_r (const void *p_cache, gaiaGeomCollPtr geom, + int perimeter, double *xlength) +{ +/* computes the total length or perimeter for this Geometry */ + double length; + int ret; + int mode = GAIA2GEOS_ONLY_LINESTRINGS; + GEOSGeometry *g; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + if (perimeter) + mode = GAIA2GEOS_ONLY_POLYGONS; + gaiaResetGeosMsg_r (cache); + if (!geom) + return 0; + if (gaiaIsToxic_r (cache, geom)) + return 0; + g = gaiaToGeosSelective_r (cache, geom, mode); + if (g == NULL) + { + *xlength = 0.0; + return 1; + } + ret = GEOSLength_r (handle, g, &length); + GEOSGeom_destroy_r (handle, g); + if (ret) + *xlength = length; + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollArea (gaiaGeomCollPtr geom, double *xarea) +{ +/* computes the total area for this Geometry */ + double area; + int ret; + GEOSGeometry *g; + gaiaResetGeosMsg (); + if (!geom) + return 0; + if (gaiaIsToxic (geom)) + return 0; + g = gaiaToGeos (geom); + ret = GEOSArea (g, &area); + GEOSGeom_destroy (g); + if (ret) + *xarea = area; + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollArea_r (const void *p_cache, gaiaGeomCollPtr geom, double *xarea) +{ +/* computes the total area for this Geometry */ + double area; + int ret; + GEOSGeometry *g; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom) + return 0; + if (gaiaIsToxic_r (cache, geom)) + return 0; + g = gaiaToGeos_r (cache, geom); + ret = GEOSArea_r (handle, g, &area); + GEOSGeom_destroy_r (handle, g); + if (ret) + *xarea = area; + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollDistance (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, + double *xdist) +{ +/* computes the minimum distance intercurring between GEOM-1 and GEOM-2 */ + double dist; + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return 0; + if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) + return 0; + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + ret = GEOSDistance (g1, g2, &dist); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + if (ret) + *xdist = dist; + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollDistance_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2, double *xdist) +{ +/* computes the minimum distance intercurring between GEOM-1 and GEOM-2 */ + double dist; + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return 0; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return 0; + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSDistance_r (handle, g1, g2, &dist); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + if (ret) + *xdist = dist; + return ret; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaGeometryIntersection (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* builds a new geometry representing the "spatial intersection" of GEOM-1 and GEOM-2 */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSGeometry *g3; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return NULL; + if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) + return NULL; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return NULL; + + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + g3 = GEOSIntersection (g1, g2); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + if (!g3) + return NULL; + if (geom1->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ (g3); + else if (geom1->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM (g3); + else if (geom1->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM (g3); + else + geo = gaiaFromGeos_XY (g3); + GEOSGeom_destroy (g3); + if (geo == NULL) + return NULL; + geo->Srid = geom1->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaGeometryIntersection_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* builds a new geometry representing the "spatial intersection" of GEOM-1 and GEOM-2 */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSGeometry *g3; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return NULL; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return NULL; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_overlaps (geom1, geom2)) + return NULL; + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + g3 = GEOSIntersection_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + if (!g3) + return NULL; + if (geom1->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ_r (cache, g3); + else if (geom1->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM_r (cache, g3); + else if (geom1->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM_r (cache, g3); + else + geo = gaiaFromGeos_XY_r (cache, g3); + GEOSGeom_destroy_r (handle, g3); + if (geo == NULL) + return NULL; + geo->Srid = geom1->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaGeometryUnion (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* builds a new geometry representing the "spatial union" of GEOM-1 and GEOM-2 */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSGeometry *g3; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return NULL; + if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) + return NULL; + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + g3 = GEOSUnion (g1, g2); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + if (geom1->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ (g3); + else if (geom1->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM (g3); + else if (geom1->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM (g3); + else + geo = gaiaFromGeos_XY (g3); + GEOSGeom_destroy (g3); + if (geo == NULL) + return NULL; + geo->Srid = geom1->Srid; + if (geo->DeclaredType == GAIA_POINT && + geom1->DeclaredType == GAIA_MULTIPOINT) + geo->DeclaredType = GAIA_MULTIPOINT; + if (geo->DeclaredType == GAIA_LINESTRING && + geom1->DeclaredType == GAIA_MULTILINESTRING) + geo->DeclaredType = GAIA_MULTILINESTRING; + if (geo->DeclaredType == GAIA_POLYGON && + geom1->DeclaredType == GAIA_MULTIPOLYGON) + geo->DeclaredType = GAIA_MULTIPOLYGON; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaGeometryUnion_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* builds a new geometry representing the "spatial union" of GEOM-1 and GEOM-2 */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSGeometry *g3; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return NULL; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return NULL; + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + g3 = GEOSUnion_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + if (geom1->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ_r (cache, g3); + else if (geom1->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM_r (cache, g3); + else if (geom1->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM_r (cache, g3); + else + geo = gaiaFromGeos_XY_r (cache, g3); + GEOSGeom_destroy_r (handle, g3); + if (geo == NULL) + return NULL; + geo->Srid = geom1->Srid; + if (geo->DeclaredType == GAIA_POINT && + geom1->DeclaredType == GAIA_MULTIPOINT) + geo->DeclaredType = GAIA_MULTIPOINT; + if (geo->DeclaredType == GAIA_LINESTRING && + geom1->DeclaredType == GAIA_MULTILINESTRING) + geo->DeclaredType = GAIA_MULTILINESTRING; + if (geo->DeclaredType == GAIA_POLYGON && + geom1->DeclaredType == GAIA_MULTIPOLYGON) + geo->DeclaredType = GAIA_MULTIPOLYGON; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaUnionCascaded (gaiaGeomCollPtr geom) +{ +/* UnionCascaded (single Collection of polygons) */ + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr result; + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaResetGeosMsg (); + if (!geom) + return NULL; + if (gaiaIsToxic (geom)) + return NULL; + +/* testing if geom only contains Polygons */ + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts || lns) + return NULL; + if (!pgs) + return NULL; + + g1 = gaiaToGeos (geom); + g2 = GEOSUnionCascaded (g1); + GEOSGeom_destroy (g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ (g2); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM (g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM (g2); + else + result = gaiaFromGeos_XY (g2); + GEOSGeom_destroy (g2); + if (result == NULL) + return NULL; + result->Srid = geom->Srid; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaUnionCascaded_r (const void *p_cache, gaiaGeomCollPtr geom) +{ +/* UnionCascaded (single Collection of polygons) */ + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr result; + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + return NULL; + if (gaiaIsToxic_r (cache, geom)) + return NULL; + +/* testing if geom only contains Polygons */ + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts || lns) + return NULL; + if (!pgs) + return NULL; + + g1 = gaiaToGeos_r (cache, geom); + g2 = GEOSUnionCascaded_r (handle, g1); + GEOSGeom_destroy_r (handle, g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM_r (cache, g2); + else + result = gaiaFromGeos_XY_r (cache, g2); + GEOSGeom_destroy_r (handle, g2); + if (result == NULL) + return NULL; + result->Srid = geom->Srid; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaGeometryDifference (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* builds a new geometry representing the "spatial difference" of GEOM-1 and GEOM-2 */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSGeometry *g3; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return NULL; + if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) + return NULL; + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + g3 = GEOSDifference (g1, g2); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + if (!g3) + return NULL; + if (geom1->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ (g3); + else if (geom1->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM (g3); + else if (geom1->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM (g3); + else + geo = gaiaFromGeos_XY (g3); + GEOSGeom_destroy (g3); + if (geo == NULL) + return NULL; + geo->Srid = geom1->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaGeometryDifference_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* builds a new geometry representing the "spatial difference" of GEOM-1 and GEOM-2 */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSGeometry *g3; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return NULL; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return NULL; + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + g3 = GEOSDifference_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + if (!g3) + return NULL; + if (geom1->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ_r (cache, g3); + else if (geom1->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM_r (cache, g3); + else if (geom1->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM_r (cache, g3); + else + geo = gaiaFromGeos_XY_r (cache, g3); + GEOSGeom_destroy_r (handle, g3); + if (geo == NULL) + return NULL; + geo->Srid = geom1->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaGeometrySymDifference (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* builds a new geometry representing the "spatial symmetric difference" of GEOM-1 and GEOM-2 */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSGeometry *g3; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return NULL; + if (gaiaIsToxic (geom1) || gaiaIsToxic (geom2)) + return NULL; + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + g3 = GEOSSymDifference (g1, g2); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + if (!g3) + return NULL; + if (geom1->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ (g3); + else if (geom1->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM (g3); + else if (geom1->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM (g3); + else + geo = gaiaFromGeos_XY (g3); + GEOSGeom_destroy (g3); + if (geo == NULL) + return NULL; + geo->Srid = geom1->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaGeometrySymDifference_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* builds a new geometry representing the "spatial symmetric difference" of GEOM-1 and GEOM-2 */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSGeometry *g3; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return NULL; + if (gaiaIsToxic_r (cache, geom1) || gaiaIsToxic_r (cache, geom2)) + return NULL; + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + g3 = GEOSSymDifference_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + if (!g3) + return NULL; + if (geom1->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ_r (cache, g3); + else if (geom1->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM_r (cache, g3); + else if (geom1->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM_r (cache, g3); + else + geo = gaiaFromGeos_XY_r (cache, g3); + GEOSGeom_destroy_r (handle, g3); + if (geo == NULL) + return NULL; + geo->Srid = geom1->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaBoundary (gaiaGeomCollPtr geom) +{ +/* builds a new geometry representing the combinatorial boundary of GEOM */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom) + return NULL; + if (gaiaIsToxic (geom)) + return NULL; + g1 = gaiaToGeos (geom); + g2 = GEOSBoundary (g1); + GEOSGeom_destroy (g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ (g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM (g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM (g2); + else + geo = gaiaFromGeos_XY (g2); + GEOSGeom_destroy (g2); + if (geo == NULL) + return NULL; + geo->Srid = geom->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaBoundary_r (const void *p_cache, gaiaGeomCollPtr geom) +{ +/* builds a new geometry representing the combinatorial boundary of GEOM */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + return NULL; + if (gaiaIsToxic_r (cache, geom)) + return NULL; + g1 = gaiaToGeos_r (cache, geom); + g2 = GEOSBoundary_r (handle, g1); + GEOSGeom_destroy_r (handle, g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM_r (cache, g2); + else + geo = gaiaFromGeos_XY_r (cache, g2); + GEOSGeom_destroy_r (handle, g2); + if (geo == NULL) + return NULL; + geo->Srid = geom->Srid; + return geo; +} + +GAIAGEO_DECLARE int +gaiaGeomCollCentroid (gaiaGeomCollPtr geom, double *x, double *y) +{ +/* returns a Point representing the centroid for this Geometry */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom) + return 0; + if (gaiaIsToxic (geom)) + { + return 0; + } + g1 = gaiaToGeos (geom); + g2 = GEOSGetCentroid (g1); + GEOSGeom_destroy (g1); + if (!g2) + return 0; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ (g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM (g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM (g2); + else + geo = gaiaFromGeos_XY (g2); + GEOSGeom_destroy (g2); + if (geo == NULL) + return 0; + if (geo->FirstPoint) + { + *x = geo->FirstPoint->X; + *y = geo->FirstPoint->Y; + gaiaFreeGeomColl (geo); + return 1; + } + gaiaFreeGeomColl (geo); + return 0; +} + +GAIAGEO_DECLARE int +gaiaGeomCollCentroid_r (const void *p_cache, gaiaGeomCollPtr geom, double *x, + double *y) +{ +/* returns a Point representing the centroid for this Geometry */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return 0; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return 0; + handle = cache->GEOS_handle; + if (handle == NULL) + return 0; + gaiaResetGeosMsg_r (cache); + if (!geom) + return 0; + if (gaiaIsToxic_r (cache, geom)) + { + return 0; + } + g1 = gaiaToGeos_r (cache, geom); + g2 = GEOSGetCentroid_r (handle, g1); + GEOSGeom_destroy_r (handle, g1); + if (!g2) + return 0; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM_r (cache, g2); + else + geo = gaiaFromGeos_XY_r (cache, g2); + GEOSGeom_destroy_r (handle, g2); + if (geo == NULL) + return 0; + if (geo->FirstPoint) + { + *x = geo->FirstPoint->X; + *y = geo->FirstPoint->Y; + gaiaFreeGeomColl (geo); + return 1; + } + gaiaFreeGeomColl (geo); + return 0; +} + +GAIAGEO_DECLARE int +gaiaGetPointOnSurface (gaiaGeomCollPtr geom, double *x, double *y) +{ +/* returns a Point guaranteed to lie on the Surface */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom) + return 0; + if (gaiaIsToxic (geom)) + { + return 0; + } + g1 = gaiaToGeos (geom); + g2 = GEOSPointOnSurface (g1); + GEOSGeom_destroy (g1); + if (!g2) + return 0; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ (g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM (g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM (g2); + else + geo = gaiaFromGeos_XY (g2); + GEOSGeom_destroy (g2); + if (geo == NULL) + return 0; + if (geo->FirstPoint) + { + *x = geo->FirstPoint->X; + *y = geo->FirstPoint->Y; + gaiaFreeGeomColl (geo); + return 1; + } + gaiaFreeGeomColl (geo); + return 0; +} + +GAIAGEO_DECLARE int +gaiaGetPointOnSurface_r (const void *p_cache, gaiaGeomCollPtr geom, double *x, + double *y) +{ +/* returns a Point guaranteed to lie on the Surface */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return 0; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return 0; + handle = cache->GEOS_handle; + if (handle == NULL) + return 0; + gaiaResetGeosMsg_r (cache); + if (!geom) + return 0; + if (gaiaIsToxic_r (cache, geom)) + { + return 0; + } + g1 = gaiaToGeos_r (cache, geom); + g2 = GEOSPointOnSurface_r (handle, g1); + GEOSGeom_destroy_r (handle, g1); + if (!g2) + return 0; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM_r (cache, g2); + else + geo = gaiaFromGeos_XY_r (cache, g2); + GEOSGeom_destroy_r (handle, g2); + if (geo == NULL) + return 0; + if (geo->FirstPoint) + { + *x = geo->FirstPoint->X; + *y = geo->FirstPoint->Y; + gaiaFreeGeomColl (geo); + return 1; + } + gaiaFreeGeomColl (geo); + return 0; +} + +GAIAGEO_DECLARE int +gaiaIsSimple (gaiaGeomCollPtr geom) +{ +/* checks if this GEOMETRYCOLLECTION is a simple one */ + int ret; + GEOSGeometry *g; + gaiaResetGeosMsg (); + if (!geom) + return -1; + if (gaiaIsToxic (geom)) + return 0; + g = gaiaToGeos (geom); + ret = GEOSisSimple (g); + GEOSGeom_destroy (g); + if (ret == 2) + return -1; + return ret; +} + +GAIAGEO_DECLARE int +gaiaIsSimple_r (const void *p_cache, gaiaGeomCollPtr geom) +{ +/* checks if this GEOMETRYCOLLECTION is a simple one */ + int ret; + GEOSGeometry *g; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom) + return -1; + if (gaiaIsToxic_r (cache, geom)) + return -1; + g = gaiaToGeos_r (cache, geom); + ret = GEOSisSimple_r (handle, g); + GEOSGeom_destroy_r (handle, g); + if (ret == 2) + return -1; + return ret; +} + +GAIAGEO_DECLARE int +gaiaIsRing (gaiaLinestringPtr line) +{ +/* checks if this LINESTRING can be a valid RING */ + gaiaGeomCollPtr geo; + gaiaLinestringPtr line2; + int ret; + int iv; + double x; + double y; + double z; + double m; + GEOSGeometry *g; + gaiaResetGeosMsg (); + if (!line) + return -1; + if (line->DimensionModel == GAIA_XY_Z) + geo = gaiaAllocGeomCollXYZ (); + else if (line->DimensionModel == GAIA_XY_M) + geo = gaiaAllocGeomCollXYM (); + else if (line->DimensionModel == GAIA_XY_Z_M) + geo = gaiaAllocGeomCollXYZM (); + else + geo = gaiaAllocGeomColl (); + line2 = gaiaAddLinestringToGeomColl (geo, line->Points); + for (iv = 0; iv < line2->Points; iv++) + { + z = 0.0; + m = 0.0; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + if (line2->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (line2->Coords, iv, x, y, z); + } + else if (line2->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (line2->Coords, iv, x, y, m); + } + else if (line2->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (line2->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (line2->Coords, iv, x, y); + } + } + if (gaiaIsToxic (geo)) + { + gaiaFreeGeomColl (geo); + return -1; + } + g = gaiaToGeos (geo); + gaiaFreeGeomColl (geo); + ret = GEOSisRing (g); + GEOSGeom_destroy (g); + if (ret == 2) + return -1; + return ret; +} + +GAIAGEO_DECLARE int +gaiaIsRing_r (const void *p_cache, gaiaLinestringPtr line) +{ +/* checks if this LINESTRING can be a valid RING */ + gaiaGeomCollPtr geo; + gaiaLinestringPtr line2; + int ret; + int iv; + double x; + double y; + double z; + double m; + GEOSGeometry *g; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!line) + return -1; + if (line->DimensionModel == GAIA_XY_Z) + geo = gaiaAllocGeomCollXYZ (); + else if (line->DimensionModel == GAIA_XY_M) + geo = gaiaAllocGeomCollXYM (); + else if (line->DimensionModel == GAIA_XY_Z_M) + geo = gaiaAllocGeomCollXYZM (); + else + geo = gaiaAllocGeomColl (); + line2 = gaiaAddLinestringToGeomColl (geo, line->Points); + for (iv = 0; iv < line2->Points; iv++) + { + z = 0.0; + m = 0.0; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + if (line2->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (line2->Coords, iv, x, y, z); + } + else if (line2->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (line2->Coords, iv, x, y, m); + } + else if (line2->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (line2->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (line2->Coords, iv, x, y); + } + } + if (gaiaIsToxic_r (cache, geo)) + { + gaiaFreeGeomColl (geo); + return -1; + } + g = gaiaToGeos_r (cache, geo); + gaiaFreeGeomColl (geo); + ret = GEOSisRing_r (handle, g); + GEOSGeom_destroy_r (handle, g); + if (ret == 2) + return -1; + return ret; +} + +GAIAGEO_DECLARE int +gaiaIsValid (gaiaGeomCollPtr geom) +{ +/* checks if this GEOMETRYCOLLECTION is a valid one */ + int ret; + GEOSGeometry *g; + gaiaResetGeosMsg (); + if (!geom) + return -1; + if (gaiaIsToxic (geom)) + return 0; + if (gaiaIsNotClosedGeomColl (geom)) + return 0; + g = gaiaToGeos (geom); + ret = GEOSisValid (g); + GEOSGeom_destroy (g); + if (ret == 2) + return -1; + return ret; +} + +GAIAGEO_DECLARE int +gaiaIsValid_r (const void *p_cache, gaiaGeomCollPtr geom) +{ +/* checks if this GEOMETRYCOLLECTION is a valid one */ + int ret; + GEOSGeometry *g; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom) + return -1; + if (gaiaIsToxic_r (cache, geom)) + return 0; + if (gaiaIsNotClosedGeomColl_r (cache, geom)) + return 0; + g = gaiaToGeos_r (cache, geom); + ret = GEOSisValid_r (handle, g); + GEOSGeom_destroy_r (handle, g); + if (ret == 2) + return -1; + return ret; +} + +GAIAGEO_DECLARE char * +gaiaIsValidReason (gaiaGeomCollPtr geom) +{ +/* return a TEXT string stating if a Geometry is valid +/ and if not valid, a reason why */ + char *text; + int len; + const char *str; + char *gstr; + GEOSGeometry *g; + gaiaResetGeosMsg (); + if (!geom) + { + str = "Invalid: NULL Geometry"; + len = strlen (str); + text = malloc (len + 1); + strcpy (text, str); + return text; + } + if (gaiaIsToxic (geom)) + { + str = "Invalid: Toxic Geometry ... too few points"; + len = strlen (str); + text = malloc (len + 1); + strcpy (text, str); + return text; + } + if (gaiaIsNotClosedGeomColl (geom)) + { + str = "Invalid: Unclosed Rings were detected"; + len = strlen (str); + text = malloc (len + 1); + strcpy (text, str); + return text; + } + g = gaiaToGeos (geom); + gstr = GEOSisValidReason (g); + GEOSGeom_destroy (g); + if (gstr == NULL) + return NULL; + len = strlen (gstr); + text = malloc (len + 1); + strcpy (text, gstr); + GEOSFree (gstr); + return text; +} + +GAIAGEO_DECLARE char * +gaiaIsValidReason_r (const void *p_cache, gaiaGeomCollPtr geom) +{ +/* return a TEXT string stating if a Geometry is valid +/ and if not valid, a reason why */ + char *text; + int len; + const char *str; + char *gstr; + GEOSGeometry *g; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + { + str = "Invalid: NULL Geometry"; + len = strlen (str); + text = malloc (len + 1); + strcpy (text, str); + return text; + } + if (gaiaIsToxic (geom)) + { + str = "Invalid: Toxic Geometry ... too few points"; + len = strlen (str); + text = malloc (len + 1); + strcpy (text, str); + return text; + } + if (gaiaIsNotClosedGeomColl (geom)) + { + str = "Invalid: Unclosed Rings were detected"; + len = strlen (str); + text = malloc (len + 1); + strcpy (text, str); + return text; + } + g = gaiaToGeos_r (cache, geom); + gstr = GEOSisValidReason_r (handle, g); + GEOSGeom_destroy_r (handle, g); + if (gstr == NULL) + return NULL; + len = strlen (gstr); + text = malloc (len + 1); + strcpy (text, gstr); + GEOSFree_r (handle, gstr); + return text; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaIsValidDetail (gaiaGeomCollPtr geom) +{ +/* return a Geometry detail causing a Geometry to be invalid */ + char *reason = NULL; + GEOSGeometry *g; + GEOSGeometry *d = NULL; + gaiaGeomCollPtr detail; + gaiaResetGeosMsg (); + if (!geom) + return NULL; + if (gaiaIsToxic (geom)) + return NULL; + if (gaiaIsNotClosedGeomColl (geom)) + return NULL; + g = gaiaToGeos (geom); + GEOSisValidDetail (g, 0, &reason, &d); + GEOSGeom_destroy (g); + if (reason != NULL) + GEOSFree (reason); + if (d == NULL) + return NULL; + detail = gaiaFromGeos_XY (d); + GEOSGeom_destroy (d); + return detail; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaIsValidDetail_r (const void *p_cache, gaiaGeomCollPtr geom) +{ +/* return a Geometry detail causing a Geometry to be invalid */ + char *reason = NULL; + GEOSGeometry *g; + GEOSGeometry *d = NULL; + gaiaGeomCollPtr detail; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + return NULL; + if (gaiaIsToxic (geom)) + return NULL; + if (gaiaIsNotClosedGeomColl (geom)) + return NULL; + g = gaiaToGeos_r (cache, geom); + GEOSisValidDetail_r (handle, g, 0, &reason, &d); + GEOSGeom_destroy_r (handle, g); + if (reason != NULL) + GEOSFree_r (handle, reason); + if (d == NULL) + return NULL; + detail = gaiaFromGeos_XY_r (cache, d); + GEOSGeom_destroy_r (handle, d); + return detail; +} + +GAIAGEO_DECLARE int +gaiaIsClosedGeom_r (const void *cache, gaiaGeomCollPtr geom) +{ +/* checks if this geometry is a closed linestring (or multilinestring) */ + int ret = 0; + gaiaLinestringPtr ln; + if (cache != NULL) + gaiaResetGeosMsg_r (cache); + if (!geom) + return -1; + if (cache != NULL) + ret = gaiaIsToxic_r (cache, geom); + else + ret = gaiaIsToxic (geom); + if (ret) + return 0; + ln = geom->FirstLinestring; + while (ln) + { + /* unhappily GEOS v3.2.2 [system package on Debian Lenny and Ubuntu 12.04] + * doesn't exposes the GEOSisClosed() API at all !!!! + * + GEOSGeometry *g; + gaiaGeomCollPtr geoColl = gaiaAllocGeomColl(); + gaiaInsertLinestringInGeomColl(geoColl, gaiaCloneLinestring(ln)); + g = gaiaToGeos (geoColl); + ret = GEOSisClosed (g); + GEOSGeom_destroy (g); + gaiaFreeGeomColl(geoColl); + */ + + /* so we'll use this internal default in order to circumvent the above issue */ + double x1; + double y1; + double z1; + double m1; + double x2; + double y2; + double z2; + double m2; + gaiaLineGetPoint (ln, 0, &x1, &y1, &z1, &m1); + gaiaLineGetPoint (ln, ln->Points - 1, &x2, &y2, &z2, &m2); + if (x1 == x2 && y1 == y2 && z1 == z2) + ret = 1; + else + ret = 0; + if (ret == 0) + { + /* this line isn't closed, so we don't need to continue */ + break; + } + ln = ln->Next; + } + if (ret == 2) + return -1; + return ret; +} + +GAIAGEO_DECLARE int +gaiaIsClosedGeom (gaiaGeomCollPtr geom) +{ + gaiaResetGeosMsg (); + return gaiaIsClosedGeom_r (NULL, geom); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaGeomCollSimplify (gaiaGeomCollPtr geom, double tolerance) +{ +/* builds a simplified geometry using the Douglas-Peuker algorihtm */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom) + return NULL; + if (gaiaIsToxic (geom)) + return NULL; + g1 = gaiaToGeos (geom); + g2 = GEOSSimplify (g1, tolerance); + GEOSGeom_destroy (g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ (g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM (g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM (g2); + else + geo = gaiaFromGeos_XY (g2); + GEOSGeom_destroy (g2); + if (geo == NULL) + return NULL; + geo->Srid = geom->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaGeomCollSimplify_r (const void *p_cache, gaiaGeomCollPtr geom, + double tolerance) +{ +/* builds a simplified geometry using the Douglas-Peuker algorihtm */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + return NULL; + if (gaiaIsToxic_r (cache, geom)) + return NULL; + g1 = gaiaToGeos_r (cache, geom); + g2 = GEOSSimplify_r (handle, g1, tolerance); + GEOSGeom_destroy_r (handle, g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM_r (cache, g2); + else + geo = gaiaFromGeos_XY_r (cache, g2); + GEOSGeom_destroy_r (handle, g2); + if (geo == NULL) + return NULL; + geo->Srid = geom->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaGeomCollSimplifyPreserveTopology (gaiaGeomCollPtr geom, double tolerance) +{ +/* builds a simplified geometry using the Douglas-Peuker algorihtm [preserving topology] */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom) + return NULL; + if (gaiaIsToxic (geom)) + return NULL; + g1 = gaiaToGeos (geom); + g2 = GEOSTopologyPreserveSimplify (g1, tolerance); + GEOSGeom_destroy (g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ (g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM (g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM (g2); + else + geo = gaiaFromGeos_XY (g2); + GEOSGeom_destroy (g2); + if (geo == NULL) + return NULL; + geo->Srid = geom->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaGeomCollSimplifyPreserveTopology_r (const void *p_cache, + gaiaGeomCollPtr geom, double tolerance) +{ +/* builds a simplified geometry using the Douglas-Peuker algorihtm [preserving topology] */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + return NULL; + if (gaiaIsToxic_r (cache, geom)) + return NULL; + g1 = gaiaToGeos_r (cache, geom); + g2 = GEOSTopologyPreserveSimplify_r (handle, g1, tolerance); + GEOSGeom_destroy_r (handle, g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM_r (cache, g2); + else + geo = gaiaFromGeos_XY_r (cache, g2); + GEOSGeom_destroy_r (handle, g2); + if (geo == NULL) + return NULL; + geo->Srid = geom->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaConvexHull (gaiaGeomCollPtr geom) +{ +/* builds a geometry that is the convex hull of GEOM */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom) + return NULL; + if (gaiaIsToxic (geom)) + return NULL; + g1 = gaiaToGeos (geom); + g2 = GEOSConvexHull (g1); + GEOSGeom_destroy (g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ (g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM (g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM (g2); + else + geo = gaiaFromGeos_XY (g2); + GEOSGeom_destroy (g2); + if (geo == NULL) + return NULL; + geo->Srid = geom->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaConvexHull_r (const void *p_cache, gaiaGeomCollPtr geom) +{ +/* builds a geometry that is the convex hull of GEOM */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + return NULL; + if (gaiaIsToxic_r (cache, geom)) + return NULL; + g1 = gaiaToGeos_r (cache, geom); + g2 = GEOSConvexHull_r (handle, g1); + GEOSGeom_destroy_r (handle, g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM_r (cache, g2); + else + geo = gaiaFromGeos_XY_r (cache, g2); + GEOSGeom_destroy_r (handle, g2); + if (geo == NULL) + return NULL; + geo->Srid = geom->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaGeomCollBuffer (gaiaGeomCollPtr geom, double radius, int points) +{ +/* builds a geometry that is the GIS buffer of GEOM */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom) + return NULL; + if (gaiaIsToxic (geom)) + return NULL; + g1 = gaiaToGeos (geom); + g2 = GEOSBuffer (g1, radius, points); + GEOSGeom_destroy (g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ (g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM (g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM (g2); + else + geo = gaiaFromGeos_XY (g2); + GEOSGeom_destroy (g2); + if (geo == NULL) + return NULL; + geo->Srid = geom->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaGeomCollBuffer_r (const void *p_cache, gaiaGeomCollPtr geom, double radius, + int points) +{ +/* builds a geometry that is the GIS buffer of GEOM */ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + return NULL; + if (gaiaIsToxic_r (cache, geom)) + return NULL; + g1 = gaiaToGeos_r (cache, geom); + g2 = GEOSBuffer_r (handle, g1, radius, points); + GEOSGeom_destroy_r (handle, g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM_r (cache, g2); + else + geo = gaiaFromGeos_XY_r (cache, g2); + GEOSGeom_destroy_r (handle, g2); + if (geo == NULL) + return NULL; + geo->Srid = geom->Srid; + return geo; +} + +static void +auxFromGeosPolygon (GEOSContextHandle_t handle, const GEOSGeometry * geos, + gaiaGeomCollPtr result) +{ +/* converting a Polygon from GEOS to SpatiaLite */ + const GEOSGeometry *geos_ring; + const GEOSCoordSequence *coords; + unsigned int pts; + unsigned int geos_dims; + int interiors; + int iv; + int ib; + double x; + double y; + double z; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + + if (handle != NULL) + { + geos_ring = GEOSGetExteriorRing_r (handle, geos); + interiors = GEOSGetNumInteriorRings_r (handle, geos); + coords = GEOSGeom_getCoordSeq_r (handle, geos_ring); + GEOSCoordSeq_getDimensions_r (handle, coords, &geos_dims); + GEOSCoordSeq_getSize_r (handle, coords, &pts); + } + else + { + geos_ring = GEOSGetExteriorRing (geos); + interiors = GEOSGetNumInteriorRings (geos); + coords = GEOSGeom_getCoordSeq (geos_ring); + GEOSCoordSeq_getDimensions (coords, &geos_dims); + GEOSCoordSeq_getSize (coords, &pts); + } + + pg = gaiaAddPolygonToGeomColl (result, pts, interiors); +/* setting up the Exterior ring */ + rng = pg->Exterior; + for (iv = 0; iv < (int) pts; iv++) + { + if (geos_dims == 3) + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, coords, iv, &x); + GEOSCoordSeq_getY_r (handle, coords, iv, &y); + GEOSCoordSeq_getZ_r (handle, coords, iv, &z); + } + else + { + GEOSCoordSeq_getX (coords, iv, &x); + GEOSCoordSeq_getY (coords, iv, &y); + GEOSCoordSeq_getZ (coords, iv, &z); + } + } + else + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, coords, iv, &x); + GEOSCoordSeq_getY_r (handle, coords, iv, &y); + } + else + { + GEOSCoordSeq_getX (coords, iv, &x); + GEOSCoordSeq_getY (coords, iv, &y); + } + z = 0.0; + } + if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (rng->Coords, iv, x, y, z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (rng->Coords, iv, x, y, 0.0); + } + else if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (rng->Coords, iv, x, y, z, 0.0); + } + else + { + gaiaSetPoint (rng->Coords, iv, x, y); + } + } + + for (ib = 0; ib < interiors; ib++) + { + /* setting up any interior ring */ + if (handle != NULL) + { + geos_ring = GEOSGetInteriorRingN_r (handle, geos, ib); + coords = GEOSGeom_getCoordSeq_r (handle, geos_ring); + GEOSCoordSeq_getDimensions_r (handle, coords, &geos_dims); + GEOSCoordSeq_getSize_r (handle, coords, &pts); + } + else + { + geos_ring = GEOSGetInteriorRingN (geos, ib); + coords = GEOSGeom_getCoordSeq (geos_ring); + GEOSCoordSeq_getDimensions (coords, &geos_dims); + GEOSCoordSeq_getSize (coords, &pts); + } + rng = gaiaAddInteriorRing (pg, ib, pts); + for (iv = 0; iv < (int) pts; iv++) + { + if (geos_dims == 3) + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, coords, iv, &x); + GEOSCoordSeq_getY_r (handle, coords, iv, &y); + GEOSCoordSeq_getZ_r (handle, coords, iv, &z); + } + else + { + GEOSCoordSeq_getX (coords, iv, &x); + GEOSCoordSeq_getY (coords, iv, &y); + GEOSCoordSeq_getZ (coords, iv, &z); + } + } + else + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, coords, iv, &x); + GEOSCoordSeq_getY_r (handle, coords, iv, &y); + } + else + { + GEOSCoordSeq_getX (coords, iv, &x); + GEOSCoordSeq_getY (coords, iv, &y); + } + z = 0.0; + } + if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (rng->Coords, iv, x, y, z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (rng->Coords, iv, x, y, 0.0); + } + else if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (rng->Coords, iv, x, y, z, 0.0); + } + else + { + gaiaSetPoint (rng->Coords, iv, x, y); + } + } + } +} + +static void +auxGeosMbr (GEOSContextHandle_t handle, const GEOSCoordSequence * cs, + unsigned int pts, double *min_x, double *min_y, double *max_x, + double *max_y) +{ +/* computing the MBR */ + int iv; + double x; + double y; + *min_x = DBL_MAX; + *min_y = DBL_MAX; + *max_x = 0 - DBL_MAX; + *max_y = 0 - DBL_MAX; + for (iv = 0; iv < (int) pts; iv++) + { + if (handle != NULL) + { + GEOSCoordSeq_getX_r (handle, cs, iv, &x); + GEOSCoordSeq_getY_r (handle, cs, iv, &y); + } + else + { + GEOSCoordSeq_getX (cs, iv, &x); + GEOSCoordSeq_getY (cs, iv, &y); + } + if (x < *min_x) + *min_x = x; + if (x > *max_x) + *max_x = x; + if (y < *min_y) + *min_y = y; + if (y > *max_y) + *max_y = y; + } +} + +static gaiaGeomCollPtr +gaiaPolygonizeCommon (const void *cache, GEOSContextHandle_t handle, + gaiaGeomCollPtr geom, int force_multi) +{ +/* attempts to rearrange a generic Geometry into a (multi)polygon */ + int ig; + int ib; + int iv; + int interiors; + int geos_dims = 2; + int pts = 0; + int lns = 0; + int pgs = 0; + int items; + int error; + double x; + double y; + double z; + double m; + gaiaGeomCollPtr result = NULL; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + GEOSCoordSequence *cs; + const GEOSGeometry *const *geos_list = NULL; + GEOSGeometry **p_item; + GEOSGeometry *geos; + const GEOSGeometry *geos_item; + const GEOSGeometry *geos_item2; + const GEOSGeometry *geos_ring; + char *valid_polygons = NULL; + const GEOSCoordSequence *coords; + unsigned int pts1; + unsigned int pts2; + double min_x1; + double max_x1; + double min_y1; + double max_y1; + double min_x2; + double max_x2; + double min_y2; + double max_y2; + int ret; + + if (!geom) + return NULL; + if (cache != NULL) + ret = gaiaIsToxic_r (cache, geom); + else + ret = gaiaIsToxic (geom); + if (ret) + return NULL; + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts || pgs) + return NULL; + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + if (!lns) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_Z_M) + geos_dims = 3; + +/* allocating GEOS linestrings */ + geos_list = malloc (sizeof (const GEOSGeometry * const *) * lns); + p_item = (GEOSGeometry **) geos_list; + for (iv = 0; iv < lns; iv++) + { + /* initializing to NULL */ + *p_item++ = NULL; + } + p_item = (GEOSGeometry **) geos_list; + +/* initializing GEOS linestrings */ + ln = geom->FirstLinestring; + while (ln) + { + if (handle != NULL) + cs = GEOSCoordSeq_create_r (handle, ln->Points, geos_dims); + else + cs = GEOSCoordSeq_create (ln->Points, geos_dims); + for (iv = 0; iv < ln->Points; iv++) + { + /* exterior ring segments */ + z = 0.0; + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + if (geos_dims == 3) + { + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + GEOSCoordSeq_setZ_r (handle, cs, iv, z); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + GEOSCoordSeq_setZ (cs, iv, z); + } + } + else + { + if (handle != NULL) + { + GEOSCoordSeq_setX_r (handle, cs, iv, x); + GEOSCoordSeq_setY_r (handle, cs, iv, y); + } + else + { + GEOSCoordSeq_setX (cs, iv, x); + GEOSCoordSeq_setY (cs, iv, y); + } + } + } + if (handle != NULL) + *p_item++ = GEOSGeom_createLineString_r (handle, cs); + else + *p_item++ = GEOSGeom_createLineString (cs); + ln = ln->Next; + } + +/* calling GEOSPolygonize */ + if (handle != NULL) + geos = GEOSPolygonize_r (handle, geos_list, lns); + else + geos = GEOSPolygonize (geos_list, lns); + if (geos == NULL) + goto cleanup; + +/* +/ +/ GEOSPolygonize is expected to return a collection of Polygons +/ +/ CAVEAT: internal holes are returned as such (interior rings in +/ some Polygon), but are returned as distinct Polygons too +/ +/ we must check this, so to *not* return Polygons representing holes +/ +*/ + error = 0; + if (handle != NULL) + items = GEOSGetNumGeometries_r (handle, geos); + else + items = GEOSGetNumGeometries (geos); + for (ig = 0; ig < items; ig++) + { + /* looping on elementaty GEOS geometries */ + if (handle != NULL) + { + geos_item = GEOSGetGeometryN_r (handle, geos, ig); + if (GEOSGeomTypeId_r (handle, geos_item) != GEOS_POLYGON) + { + /* not a Polygon ... ouch ... */ + error = 1; + goto cleanup; + } + } + else + { + geos_item = GEOSGetGeometryN (geos, ig); + if (GEOSGeomTypeId (geos_item) != GEOS_POLYGON) + { + /* not a Polygon ... ouch ... */ + error = 1; + goto cleanup; + } + } + } + +/* identifying valid Polygons [excluding holes] */ + valid_polygons = malloc (items); + for (ig = 0; ig < items; ig++) + valid_polygons[ig] = 'Y'; + for (ig = 0; ig < items; ig++) + { + /* looping on elementaty GEOS Polygons */ + if (handle != NULL) + { + geos_item = GEOSGetGeometryN_r (handle, geos, ig); + interiors = GEOSGetNumInteriorRings_r (handle, geos_item); + } + else + { + geos_item = GEOSGetGeometryN (geos, ig); + interiors = GEOSGetNumInteriorRings (geos_item); + } + for (ib = 0; ib < interiors; ib++) + { + /* looping on any interior ring */ + if (handle != NULL) + { + geos_ring = + GEOSGetInteriorRingN_r (handle, geos_item, ib); + coords = GEOSGeom_getCoordSeq_r (handle, geos_ring); + GEOSCoordSeq_getSize_r (handle, coords, &pts1); + } + else + { + geos_ring = GEOSGetInteriorRingN (geos_item, ib); + coords = GEOSGeom_getCoordSeq (geos_ring); + GEOSCoordSeq_getSize (coords, &pts1); + } + auxGeosMbr (handle, coords, pts1, &min_x1, &min_y1, &max_x1, + &max_y1); + for (iv = 0; iv < items; iv++) + { + if (iv == ig) + { + /* skipping the Polygon itself */ + continue; + } + if (valid_polygons[iv] == 'N') + { + /* skipping any already invalid Polygon */ + continue; + } + if (handle != NULL) + { + geos_item2 = GEOSGetGeometryN_r (handle, geos, iv); + if (GEOSGetNumInteriorRings_r (handle, geos_item2) > + 0) + { + /* this Polygon contains holes [surely valid] */ + continue; + } + geos_ring = + GEOSGetExteriorRing_r (handle, geos_item2); + coords = GEOSGeom_getCoordSeq_r (handle, geos_ring); + GEOSCoordSeq_getSize_r (handle, coords, &pts2); + } + else + { + geos_item2 = GEOSGetGeometryN (geos, iv); + if (GEOSGetNumInteriorRings (geos_item2) > 0) + { + /* this Polygon contains holes [surely valid] */ + continue; + } + geos_ring = GEOSGetExteriorRing (geos_item2); + coords = GEOSGeom_getCoordSeq (geos_ring); + GEOSCoordSeq_getSize (coords, &pts2); + } + if (pts1 == pts2) + { + auxGeosMbr (handle, coords, pts2, &min_x2, &min_y2, + &max_x2, &max_y2); + if (min_x1 == min_x2 && min_y1 == min_y2 + && max_x1 == max_x2 && max_y1 == max_y2) + { + /* same #points, same MBRs: invalidating */ + valid_polygons[iv] = 'N'; + } + } + } + } + } + +/* creating the Geometry to be returned */ + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else + result = gaiaAllocGeomColl (); + if (result == NULL) + return NULL; + result->Srid = geom->Srid; + if (force_multi) + result->DeclaredType = GAIA_MULTIPOLYGON; + + for (ig = 0; ig < items; ig++) + { + /* looping on GEOS Polygons */ + if (handle != NULL) + geos_item = GEOSGetGeometryN_r (handle, geos, ig); + else + geos_item = GEOSGetGeometryN (geos, ig); + if (valid_polygons[ig] == 'Y') + auxFromGeosPolygon (handle, geos_item, result); + } + + cleanup: + if (valid_polygons != NULL) + free (valid_polygons); + if (geos_list != NULL) + { + /* memory cleanup */ + p_item = (GEOSGeometry **) geos_list; + for (iv = 0; iv < lns; iv++) + { + if (*p_item != NULL) + { + if (handle != NULL) + GEOSGeom_destroy_r (handle, *p_item); + else + GEOSGeom_destroy (*p_item); + } + p_item++; + } + p_item = (GEOSGeometry **) geos_list; + free (p_item); + } + if (geos != NULL) + { + if (handle != NULL) + GEOSGeom_destroy_r (handle, geos); + else + GEOSGeom_destroy (geos); + } + if (error || result->FirstPolygon == NULL) + { + gaiaFreeGeomColl (result); + return NULL; + } + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaPolygonize (gaiaGeomCollPtr geom, int force_multi) +{ +/* attempts to rearrange a generic Geometry into a (multi)polygon */ + gaiaResetGeosMsg (); + return gaiaPolygonizeCommon (NULL, NULL, geom, force_multi); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaPolygonize_r (const void *p_cache, gaiaGeomCollPtr geom, int force_multi) +{ +/* attempts to rearrange a generic Geometry into a (multi)polygon */ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + return gaiaPolygonizeCommon (cache, handle, geom, force_multi); +} + +GAIAGEO_DECLARE int +gaiaGeomCollCovers (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* checks if geom1 "spatially covers" geom2 */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_contains (geom1, geom2)) + return 0; + + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + ret = GEOSCovers (g1, g2); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + if (ret == 2) + return -1; + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollCovers_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* checks if geom1 "spatially covers" geom2 */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_contains (geom1, geom2)) + return 0; + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSCovers_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + if (ret == 2) + return -1; + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollPreparedCovers (const void *p_cache, gaiaGeomCollPtr geom1, + unsigned char *blob1, int size1, + gaiaGeomCollPtr geom2, unsigned char *blob2, + int size2) +{ +/* checks if geom1 "spatially covers" geom2 */ + int ret; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSPreparedGeometry *gPrep; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr geom; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_contains (geom1, geom2)) + return 0; + +/* handling the internal GEOS cache */ + if (evalGeosCache + (cache, geom1, blob1, size1, geom2, blob2, size2, &gPrep, &geom)) + { + g2 = gaiaToGeos_r (cache, geom); + if (geom == geom2) + ret = GEOSPreparedCovers_r (handle, gPrep, g2); + else + ret = GEOSPreparedCoveredBy_r (handle, gPrep, g2); + GEOSGeom_destroy_r (handle, g2); + if (ret == 2) + return -1; + return ret; + } + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSCovers_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + if (ret == 2) + return -1; + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollCoveredBy (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* checks if geom1 is "spatially covered by" geom2 */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_within (geom1, geom2)) + return 0; + + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + ret = GEOSCoveredBy (g1, g2); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + if (ret == 2) + return -1; + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollCoveredBy_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* checks if geom1 is "spatially covered by" geom2 */ + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_within (geom1, geom2)) + return 0; + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSCoveredBy_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + if (ret == 2) + return -1; + return ret; +} + +GAIAGEO_DECLARE int +gaiaGeomCollPreparedCoveredBy (const void *p_cache, gaiaGeomCollPtr geom1, + unsigned char *blob1, int size1, + gaiaGeomCollPtr geom2, unsigned char *blob2, + int size2) +{ +/* checks if geom1 is "spatially covered by" geom2 */ + int ret; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSPreparedGeometry *gPrep; + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSContextHandle_t handle = NULL; + gaiaGeomCollPtr geom; + gaiaResetGeosMsg (); + if (cache == NULL) + return -1; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1; + +/* quick check based on MBRs comparison */ + if (!splite_mbr_within (geom1, geom2)) + return 0; + +/* handling the internal GEOS cache */ + if (evalGeosCache + (cache, geom1, blob1, size1, geom2, blob2, size2, &gPrep, &geom)) + { + g2 = gaiaToGeos_r (cache, geom); + if (geom == geom2) + ret = GEOSPreparedCoveredBy_r (handle, gPrep, g2); + else + ret = GEOSPreparedCovers_r (handle, gPrep, g2); + GEOSGeom_destroy_r (handle, g2); + if (ret == 2) + return -1; + return ret; + } + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSCoveredBy_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + if (ret == 2) + return -1; + return ret; +} + +#endif /* end including GEOS */ diff --git a/src/spatialite/src/gaiageo/gg_relations_ext.c b/src/spatialite/src/gaiageo/gg_relations_ext.c new file mode 100644 index 0000000..ba04aea --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_relations_ext.c @@ -0,0 +1,4405 @@ +/* + + gg_relations_ext.c -- Gaia spatial relations [advanced] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#ifndef OMIT_GEOS /* including GEOS */ +#include +#endif + +#include +#include + +#include + +#ifndef OMIT_GEOS /* including GEOS */ + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaOffsetCurve (gaiaGeomCollPtr geom, double radius, int points, + int left_right) +{ +/* +// builds a geometry that is the OffsetCurve of GEOM +// (which is expected to be of the LINESTRING type) +// +*/ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + int pts = 0; + int lns = 0; + int pgs = 0; + int closed = 0; + gaiaResetGeosMsg (); + if (!geom) + return NULL; + +/* checking the input geometry for validity */ + pt = geom->FirstPoint; + while (pt) + { + /* counting how many POINTs are there */ + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + /* counting how many LINESTRINGs are there */ + lns++; + if (gaiaIsClosed (ln)) + closed++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + /* counting how many POLYGON are there */ + pgs++; + pg = pg->Next; + } + if (pts > 0 || pgs > 0 || lns > 1 || closed > 0) + return NULL; + +/* all right: this one simply is a LINESTRING */ + geom->DeclaredType = GAIA_LINESTRING; + + g1 = gaiaToGeos (geom); + g2 = GEOSSingleSidedBuffer (g1, radius, points, GEOSBUF_JOIN_ROUND, 5.0, + left_right); + GEOSGeom_destroy (g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ (g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM (g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM (g2); + else + geo = gaiaFromGeos_XY (g2); + GEOSGeom_destroy (g2); + if (geo == NULL) + return NULL; + geo->Srid = geom->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaOffsetCurve_r (const void *p_cache, gaiaGeomCollPtr geom, double radius, + int points, int left_right) +{ +/* +// builds a geometry that is the OffsetCurve of GEOM +// (which is expected to be of the LINESTRING type) +// +*/ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + int pts = 0; + int lns = 0; + int pgs = 0; + int closed = 0; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + return NULL; + +/* checking the input geometry for validity */ + pt = geom->FirstPoint; + while (pt) + { + /* counting how many POINTs are there */ + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + /* counting how many LINESTRINGs are there */ + lns++; + if (gaiaIsClosed (ln)) + closed++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + /* counting how many POLYGON are there */ + pgs++; + pg = pg->Next; + } + if (pts > 0 || pgs > 0 || lns > 1 || closed > 0) + return NULL; + +/* all right: this one simply is a LINESTRING */ + geom->DeclaredType = GAIA_LINESTRING; + + g1 = gaiaToGeos_r (cache, geom); + g2 = GEOSSingleSidedBuffer_r (handle, g1, radius, points, + GEOSBUF_JOIN_ROUND, 5.0, left_right); + GEOSGeom_destroy_r (handle, g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM_r (cache, g2); + else + geo = gaiaFromGeos_XY_r (cache, g2); + GEOSGeom_destroy_r (handle, g2); + if (geo == NULL) + return NULL; + geo->Srid = geom->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaSingleSidedBuffer (gaiaGeomCollPtr geom, double radius, int points, + int left_right) +{ +/* +// builds a geometry that is the SingleSided BUFFER of GEOM +// (which is expected to be of the LINESTRING type) +// +*/ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSBufferParams *params = NULL; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + int pts = 0; + int lns = 0; + int pgs = 0; + int closed = 0; + gaiaResetGeosMsg (); + if (!geom) + return NULL; + +/* checking the input geometry for validity */ + pt = geom->FirstPoint; + while (pt) + { + /* counting how many POINTs are there */ + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + /* counting how many LINESTRINGs are there */ + lns++; + if (gaiaIsClosed (ln)) + closed++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + /* counting how many POLYGON are there */ + pgs++; + pg = pg->Next; + } + if (pts > 0 || pgs > 0 || lns > 1 || closed > 0) + return NULL; + +/* all right: this one simply is a LINESTRING */ + geom->DeclaredType = GAIA_LINESTRING; + + g1 = gaiaToGeos (geom); +/* setting up Buffer params */ + params = GEOSBufferParams_create (); + GEOSBufferParams_setJoinStyle (params, GEOSBUF_JOIN_ROUND); + GEOSBufferParams_setMitreLimit (params, 5.0); + GEOSBufferParams_setQuadrantSegments (params, points); + GEOSBufferParams_setSingleSided (params, 1); + +/* creating the SingleSided Buffer */ + if (left_right == 0) + { + /* right-sided requires NEGATIVE radius */ + radius *= -1.0; + } + g2 = GEOSBufferWithParams (g1, params, radius); + GEOSGeom_destroy (g1); + GEOSBufferParams_destroy (params); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ (g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM (g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM (g2); + else + geo = gaiaFromGeos_XY (g2); + GEOSGeom_destroy (g2); + if (geo == NULL) + return NULL; + geo->Srid = geom->Srid; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaSingleSidedBuffer_r (const void *p_cache, gaiaGeomCollPtr geom, + double radius, int points, int left_right) +{ +/* +// builds a geometry that is the SingleSided BUFFER of GEOM +// (which is expected to be of the LINESTRING type) +// +*/ + gaiaGeomCollPtr geo; + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSBufferParams *params = NULL; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + int pts = 0; + int lns = 0; + int pgs = 0; + int closed = 0; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + return NULL; + +/* checking the input geometry for validity */ + pt = geom->FirstPoint; + while (pt) + { + /* counting how many POINTs are there */ + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + /* counting how many LINESTRINGs are there */ + lns++; + if (gaiaIsClosed (ln)) + closed++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + /* counting how many POLYGON are there */ + pgs++; + pg = pg->Next; + } + if (pts > 0 || pgs > 0 || lns > 1 || closed > 0) + return NULL; + +/* all right: this one simply is a LINESTRING */ + geom->DeclaredType = GAIA_LINESTRING; + + g1 = gaiaToGeos_r (cache, geom); +/* setting up Buffer params */ + params = GEOSBufferParams_create_r (handle); + GEOSBufferParams_setJoinStyle_r (handle, params, GEOSBUF_JOIN_ROUND); + GEOSBufferParams_setMitreLimit_r (handle, params, 5.0); + GEOSBufferParams_setQuadrantSegments_r (handle, params, points); + GEOSBufferParams_setSingleSided_r (handle, params, 1); + +/* creating the SingleSided Buffer */ + if (left_right == 0) + { + /* right-sided requires NEGATIVE radius */ + radius *= -1.0; + } + g2 = GEOSBufferWithParams_r (handle, g1, params, radius); + GEOSGeom_destroy_r (handle, g1); + GEOSBufferParams_destroy_r (handle, params); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM_r (cache, g2); + else + geo = gaiaFromGeos_XY_r (cache, g2); + GEOSGeom_destroy_r (handle, g2); + if (geo == NULL) + return NULL; + geo->Srid = geom->Srid; + return geo; +} + +GAIAGEO_DECLARE int +gaiaHausdorffDistance (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, + double *xdist) +{ +/* +/ computes the (discrete) Hausdorff distance intercurring +/ between GEOM-1 and GEOM-2 +*/ + double dist; + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return 0; + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + ret = GEOSHausdorffDistance (g1, g2, &dist); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + if (ret) + *xdist = dist; + return ret; +} + +GAIAGEO_DECLARE int +gaiaHausdorffDistance_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2, double *xdist) +{ +/* +/ computes the (discrete) Hausdorff distance intercurring +/ between GEOM-1 and GEOM-2 +*/ + double dist; + int ret; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return 0; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return 0; + handle = cache->GEOS_handle; + if (handle == NULL) + return 0; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return 0; + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + ret = GEOSHausdorffDistance_r (handle, g1, g2, &dist); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + if (ret) + *xdist = dist; + return ret; +} + +static gaiaGeomCollPtr +geom_as_lines (gaiaGeomCollPtr geom) +{ +/* transforms a Geometry into a LINESTRING/MULTILINESTRING (if possible) */ + gaiaGeomCollPtr result; + gaiaLinestringPtr ln; + gaiaLinestringPtr new_ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + int iv; + int ib; + double x; + double y; + double z; + double m; + + if (!geom) + return NULL; + if (geom->FirstPoint != NULL) + { + /* invalid: GEOM contains at least one POINT */ + return NULL; + } + + switch (geom->DimensionModel) + { + case GAIA_XY_Z_M: + result = gaiaAllocGeomCollXYZM (); + break; + case GAIA_XY_Z: + result = gaiaAllocGeomCollXYZ (); + break; + case GAIA_XY_M: + result = gaiaAllocGeomCollXYM (); + break; + default: + result = gaiaAllocGeomColl (); + break; + }; + result->Srid = geom->Srid; + ln = geom->FirstLinestring; + while (ln) + { + /* copying any Linestring */ + new_ln = gaiaAddLinestringToGeomColl (result, ln->Points); + for (iv = 0; iv < ln->Points; iv++) + { + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + gaiaSetPoint (new_ln->Coords, iv, x, y); + } + } + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + /* copying any Polygon Ring (as Linestring) */ + rng = pg->Exterior; + new_ln = gaiaAddLinestringToGeomColl (result, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + /* exterior Ring */ + if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); + } + else if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + gaiaSetPoint (new_ln->Coords, iv, x, y); + } + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + rng = pg->Interiors + ib; + new_ln = gaiaAddLinestringToGeomColl (result, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + /* any interior Ring */ + if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (new_ln->Coords, iv, x, y, z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (new_ln->Coords, iv, x, y, m); + } + else if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (new_ln->Coords, iv, x, y, z, m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + gaiaSetPoint (new_ln->Coords, iv, x, y); + } + } + } + pg = pg->Next; + } + return result; +} + +static void +add_shared_linestring (gaiaGeomCollPtr geom, gaiaDynamicLinePtr dyn) +{ +/* adding a LINESTRING from Dynamic Line */ + int count = 0; + gaiaLinestringPtr ln; + gaiaPointPtr pt; + int iv; + + if (!geom) + return; + if (!dyn) + return; + pt = dyn->First; + while (pt) + { + /* counting how many Points are there */ + count++; + pt = pt->Next; + } + if (count == 0) + return; + ln = gaiaAddLinestringToGeomColl (geom, count); + iv = 0; + pt = dyn->First; + while (pt) + { + /* copying points into the LINESTRING */ + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, iv, pt->X, pt->Y, pt->Z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, iv, pt->X, pt->Y, pt->M); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, iv, pt->X, pt->Y, pt->Z, pt->M); + } + else + { + gaiaSetPoint (ln->Coords, iv, pt->X, pt->Y); + } + iv++; + pt = pt->Next; + } +} + +static void +append_shared_path (gaiaDynamicLinePtr dyn, gaiaLinestringPtr ln, int order) +{ +/* appends a Shared Path item to Dynamic Line */ + int iv; + double x; + double y; + double z; + double m; + if (order) + { + /* reversed order */ + for (iv = ln->Points - 1; iv >= 0; iv--) + { + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + if (x == dyn->Last->X && y == dyn->Last->Y + && z == dyn->Last->Z) + ; + else + gaiaAppendPointZToDynamicLine (dyn, x, y, z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + if (x == dyn->Last->X && y == dyn->Last->Y + && m == dyn->Last->M) + ; + else + gaiaAppendPointMToDynamicLine (dyn, x, y, m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + if (x == dyn->Last->X && y == dyn->Last->Y + && z == dyn->Last->Z && m == dyn->Last->M) + ; + else + gaiaAppendPointZMToDynamicLine (dyn, x, y, z, m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + if (x == dyn->Last->X && y == dyn->Last->Y) + ; + else + gaiaAppendPointToDynamicLine (dyn, x, y); + } + } + } + else + { + /* conformant order */ + for (iv = 0; iv < ln->Points; iv++) + { + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + if (x == dyn->Last->X && y == dyn->Last->Y + && z == dyn->Last->Z) + ; + else + gaiaAppendPointZToDynamicLine (dyn, x, y, z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + if (x == dyn->Last->X && y == dyn->Last->Y + && m == dyn->Last->M) + ; + else + gaiaAppendPointMToDynamicLine (dyn, x, y, m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + if (x == dyn->Last->X && y == dyn->Last->Y + && z == dyn->Last->Z && m == dyn->Last->M) + ; + else + gaiaAppendPointZMToDynamicLine (dyn, x, y, z, m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + if (x == dyn->Last->X && y == dyn->Last->Y) + ; + else + gaiaAppendPointToDynamicLine (dyn, x, y); + } + } + } +} + +static void +prepend_shared_path (gaiaDynamicLinePtr dyn, gaiaLinestringPtr ln, int order) +{ +/* prepends a Shared Path item to Dynamic Line */ + int iv; + double x; + double y; + double z; + double m; + if (order) + { + /* reversed order */ + for (iv = 0; iv < ln->Points; iv++) + { + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + if (x == dyn->First->X && y == dyn->First->Y + && z == dyn->First->Z) + ; + else + gaiaPrependPointZToDynamicLine (dyn, x, y, z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + if (x == dyn->First->X && y == dyn->First->Y + && m == dyn->First->M) + ; + else + gaiaPrependPointMToDynamicLine (dyn, x, y, m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + if (x == dyn->First->X && y == dyn->First->Y + && z == dyn->First->Z && m == dyn->First->M) + ; + else + gaiaPrependPointZMToDynamicLine (dyn, x, y, z, m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + if (x == dyn->First->X && y == dyn->First->Y) + ; + else + gaiaPrependPointToDynamicLine (dyn, x, y); + } + } + } + else + { + /* conformant order */ + for (iv = ln->Points - 1; iv >= 0; iv--) + { + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + if (x == dyn->First->X && y == dyn->First->Y + && z == dyn->First->Z) + ; + else + gaiaPrependPointZToDynamicLine (dyn, x, y, z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + if (x == dyn->First->X && y == dyn->First->Y + && m == dyn->First->M) + ; + else + gaiaPrependPointMToDynamicLine (dyn, x, y, m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + if (x == dyn->First->X && y == dyn->First->Y + && z == dyn->First->Z && m == dyn->First->M) + ; + else + gaiaPrependPointZMToDynamicLine (dyn, x, y, z, m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + if (x == dyn->First->X && y == dyn->First->Y) + ; + else + gaiaPrependPointToDynamicLine (dyn, x, y); + } + } + } +} + +static gaiaGeomCollPtr +arrange_shared_paths (gaiaGeomCollPtr geom) +{ +/* final aggregation step for shared paths */ + gaiaLinestringPtr ln; + gaiaLinestringPtr *ln_array; + gaiaGeomCollPtr result; + gaiaDynamicLinePtr dyn; + int count; + int i; + int i2; + int iv; + double x; + double y; + double z; + double m; + int ok; + int ok2; + + if (!geom) + return NULL; + count = 0; + ln = geom->FirstLinestring; + while (ln) + { + /* counting how many Linestrings are there */ + count++; + ln = ln->Next; + } + if (count == 0) + return NULL; + + ln_array = malloc (sizeof (gaiaLinestringPtr) * count); + i = 0; + ln = geom->FirstLinestring; + while (ln) + { + /* populating the Linestring references array */ + ln_array[i++] = ln; + ln = ln->Next; + } + +/* allocating a new Geometry [MULTILINESTRING] */ + switch (geom->DimensionModel) + { + case GAIA_XY_Z_M: + result = gaiaAllocGeomCollXYZM (); + break; + case GAIA_XY_Z: + result = gaiaAllocGeomCollXYZ (); + break; + case GAIA_XY_M: + result = gaiaAllocGeomCollXYM (); + break; + default: + result = gaiaAllocGeomColl (); + break; + }; + result->Srid = geom->Srid; + result->DeclaredType = GAIA_MULTILINESTRING; + + ok = 1; + while (ok) + { + /* looping until we have processed any input item */ + ok = 0; + for (i = 0; i < count; i++) + { + if (ln_array[i] != NULL) + { + /* starting a new LINESTRING */ + dyn = gaiaAllocDynamicLine (); + ln = ln_array[i]; + ln_array[i] = NULL; + for (iv = 0; iv < ln->Points; iv++) + { + /* inserting the 'seed' path */ + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + gaiaAppendPointZToDynamicLine (dyn, x, y, z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + gaiaAppendPointMToDynamicLine (dyn, x, y, m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, + &m); + gaiaAppendPointZMToDynamicLine (dyn, x, y, z, + m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + gaiaAppendPointToDynamicLine (dyn, x, y); + } + } + ok2 = 1; + while (ok2) + { + /* looping until we have checked any other item */ + ok2 = 0; + for (i2 = 0; i2 < count; i2++) + { + /* expanding the 'seed' path */ + if (ln_array[i2] == NULL) + continue; + ln = ln_array[i2]; + /* checking the first vertex */ + iv = 0; + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, + &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, + &m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, + &y, &z, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + if (x == dyn->Last->X && y == dyn->Last->Y) + { + /* appending this item to the 'seed' (conformant order) */ + append_shared_path (dyn, ln, 0); + ln_array[i2] = NULL; + ok2 = 1; + continue; + } + if (x == dyn->First->X && y == dyn->First->Y) + { + /* prepending this item to the 'seed' (reversed order) */ + prepend_shared_path (dyn, ln, 1); + ln_array[i2] = NULL; + ok2 = 1; + continue; + } + /* checking the last vertex */ + iv = ln->Points - 1; + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, + &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, + &m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, + &y, &z, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + if (x == dyn->Last->X && y == dyn->Last->Y) + { + /* appending this item to the 'seed' (reversed order) */ + append_shared_path (dyn, ln, 1); + ln_array[i2] = NULL; + ok2 = 1; + continue; + } + if (x == dyn->First->X && y == dyn->First->Y) + { + /* prepending this item to the 'seed' (conformant order) */ + prepend_shared_path (dyn, ln, 0); + ln_array[i2] = NULL; + ok2 = 1; + continue; + } + } + } + add_shared_linestring (result, dyn); + gaiaFreeDynamicLine (dyn); + ok = 1; + break; + } + } + } + free (ln_array); + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaSharedPaths (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* +// builds a geometry containing Shared Paths commons to GEOM1 & GEOM2 +// (which are expected to be of the LINESTRING/MULTILINESTRING type) +// +*/ + gaiaGeomCollPtr geo; + gaiaGeomCollPtr result; + gaiaGeomCollPtr line1; + gaiaGeomCollPtr line2; + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSGeometry *g3; + gaiaResetGeosMsg (); + if (!geom1) + return NULL; + if (!geom2) + return NULL; +/* transforming input geoms as Lines */ + line1 = geom_as_lines (geom1); + line2 = geom_as_lines (geom2); + if (line1 == NULL || line2 == NULL) + { + if (line1) + gaiaFreeGeomColl (line1); + if (line2) + gaiaFreeGeomColl (line2); + return NULL; + } + + g1 = gaiaToGeos (line1); + g2 = gaiaToGeos (line2); + gaiaFreeGeomColl (line1); + gaiaFreeGeomColl (line2); + g3 = GEOSSharedPaths (g1, g2); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + if (!g3) + return NULL; + if (geom1->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ (g3); + else if (geom1->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM (g3); + else if (geom1->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM (g3); + else + geo = gaiaFromGeos_XY (g3); + GEOSGeom_destroy (g3); + if (geo == NULL) + return NULL; + geo->Srid = geom1->Srid; + result = arrange_shared_paths (geo); + gaiaFreeGeomColl (geo); + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaSharedPaths_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* +// builds a geometry containing Shared Paths commons to GEOM1 & GEOM2 +// (which are expected to be of the LINESTRING/MULTILINESTRING type) +// +*/ + gaiaGeomCollPtr geo; + gaiaGeomCollPtr result; + gaiaGeomCollPtr line1; + gaiaGeomCollPtr line2; + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSGeometry *g3; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom1) + return NULL; + if (!geom2) + return NULL; +/* transforming input geoms as Lines */ + line1 = geom_as_lines (geom1); + line2 = geom_as_lines (geom2); + if (line1 == NULL || line2 == NULL) + { + if (line1) + gaiaFreeGeomColl (line1); + if (line2) + gaiaFreeGeomColl (line2); + return NULL; + } + + g1 = gaiaToGeos_r (cache, line1); + g2 = gaiaToGeos_r (cache, line2); + gaiaFreeGeomColl (line1); + gaiaFreeGeomColl (line2); + g3 = GEOSSharedPaths_r (handle, g1, g2); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + if (!g3) + return NULL; + if (geom1->DimensionModel == GAIA_XY_Z) + geo = gaiaFromGeos_XYZ_r (cache, g3); + else if (geom1->DimensionModel == GAIA_XY_M) + geo = gaiaFromGeos_XYM_r (cache, g3); + else if (geom1->DimensionModel == GAIA_XY_Z_M) + geo = gaiaFromGeos_XYZM_r (cache, g3); + else + geo = gaiaFromGeos_XY_r (cache, g3); + GEOSGeom_destroy_r (handle, g3); + if (geo == NULL) + return NULL; + geo->Srid = geom1->Srid; + result = arrange_shared_paths (geo); + gaiaFreeGeomColl (geo); + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaLineInterpolatePoint (gaiaGeomCollPtr geom, double fraction) +{ +/* + * attempts to intepolate a point on line at dist "fraction" + * + * the fraction is expressed into the range from 0.0 to 1.0 + */ + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaGeomCollPtr result; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + GEOSGeometry *g; + GEOSGeometry *g_pt; + double length; + double projection; + gaiaResetGeosMsg (); + if (!geom) + return NULL; + +/* checking if a single Linestring has been passed */ + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts == 0 && lns == 1 && pgs == 0) + ; + else + return NULL; + + g = gaiaToGeos (geom); + if (GEOSLength (g, &length)) + { + /* transforming fraction to length */ + if (fraction < 0.0) + fraction = 0.0; + if (fraction > 1.0) + fraction = 1.0; + projection = length * fraction; + } + else + { + GEOSGeom_destroy (g); + return NULL; + } + g_pt = GEOSInterpolate (g, projection); + GEOSGeom_destroy (g); + if (!g_pt) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ (g_pt); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM (g_pt); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM (g_pt); + else + result = gaiaFromGeos_XY (g_pt); + GEOSGeom_destroy (g_pt); + if (result == NULL) + return NULL; + result->Srid = geom->Srid; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaLineInterpolatePoint_r (const void *p_cache, gaiaGeomCollPtr geom, + double fraction) +{ +/* + * attempts to intepolate a point on line at dist "fraction" + * + * the fraction is expressed into the range from 0.0 to 1.0 + */ + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaGeomCollPtr result; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + GEOSGeometry *g; + GEOSGeometry *g_pt; + double length; + double projection; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + return NULL; + +/* checking if a single Linestring has been passed */ + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts == 0 && lns == 1 && pgs == 0) + ; + else + return NULL; + + g = gaiaToGeos_r (cache, geom); + if (GEOSLength_r (handle, g, &length)) + { + /* transforming fraction to length */ + if (fraction < 0.0) + fraction = 0.0; + if (fraction > 1.0) + fraction = 1.0; + projection = length * fraction; + } + else + { + GEOSGeom_destroy_r (handle, g); + return NULL; + } + g_pt = GEOSInterpolate_r (handle, g, projection); + GEOSGeom_destroy_r (handle, g); + if (!g_pt) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ_r (cache, g_pt); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM_r (cache, g_pt); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM_r (cache, g_pt); + else + result = gaiaFromGeos_XY_r (cache, g_pt); + GEOSGeom_destroy_r (handle, g_pt); + if (result == NULL) + return NULL; + result->Srid = geom->Srid; + return result; +} + +static gaiaGeomCollPtr +gaiaLineInterpolateEquidistantPointsCommon (struct splite_internal_cache *cache, + gaiaGeomCollPtr geom, + double distance) +{ +/* + * attempts to intepolate a set of points on line at regular distances + */ + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaGeomCollPtr result; + gaiaGeomCollPtr xpt; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + GEOSGeometry *g; + GEOSGeometry *g_pt; + double length; + double current_length = 0.0; + GEOSContextHandle_t handle = NULL; + if (cache != NULL) + { + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + } + if (!geom) + return NULL; + if (distance <= 0.0) + return NULL; + +/* checking if a single Linestring has been passed */ + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts == 0 && lns == 1 && pgs == 0) + ; + else + return NULL; + + if (cache != NULL) + { + g = gaiaToGeos_r (cache, geom); + if (GEOSLength_r (handle, g, &length)) + { + if (length <= distance) + { + /* the line is too short to apply interpolation */ + GEOSGeom_destroy_r (handle, g); + return NULL; + } + } + else + { + GEOSGeom_destroy_r (handle, g); + return NULL; + } + } + else + { + g = gaiaToGeos (geom); + if (GEOSLength (g, &length)) + { + if (length <= distance) + { + /* the line is too short to apply interpolation */ + GEOSGeom_destroy (g); + return NULL; + } + } + else + { + GEOSGeom_destroy (g); + return NULL; + } + } + +/* creating the MultiPoint [always supporting M] */ + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else + result = gaiaAllocGeomCollXYM (); + if (result == NULL) + { + GEOSGeom_destroy (g); + return NULL; + } + + while (1) + { + /* increasing the current distance */ + current_length += distance; + if (current_length >= length) + break; + /* interpolating a point */ + if (handle != NULL) + g_pt = GEOSInterpolate_r (handle, g, current_length); + else + g_pt = GEOSInterpolate (g, current_length); + if (!g_pt) + goto error; + if (geom->DimensionModel == GAIA_XY_Z) + { + if (cache != NULL) + xpt = gaiaFromGeos_XYZ_r (cache, g_pt); + else + xpt = gaiaFromGeos_XYZ (g_pt); + if (!xpt) + goto error; + pt = xpt->FirstPoint; + if (!pt) + goto error; + gaiaAddPointToGeomCollXYZM (result, pt->X, pt->Y, pt->Z, + current_length); + } + else if (geom->DimensionModel == GAIA_XY_M) + { + if (cache != NULL) + xpt = gaiaFromGeos_XYM_r (cache, g_pt); + else + xpt = gaiaFromGeos_XYM (g_pt); + if (!xpt) + goto error; + pt = xpt->FirstPoint; + if (!pt) + goto error; + gaiaAddPointToGeomCollXYM (result, pt->X, pt->Y, + current_length); + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + if (cache != NULL) + xpt = gaiaFromGeos_XYZM_r (cache, g_pt); + else + xpt = gaiaFromGeos_XYZM (g_pt); + if (!xpt) + goto error; + pt = xpt->FirstPoint; + if (!pt) + goto error; + gaiaAddPointToGeomCollXYZM (result, pt->X, pt->Y, pt->Z, + current_length); + } + else + { + if (cache != NULL) + xpt = gaiaFromGeos_XY_r (cache, g_pt); + else + xpt = gaiaFromGeos_XY (g_pt); + if (!xpt) + goto error; + pt = xpt->FirstPoint; + if (!pt) + goto error; + gaiaAddPointToGeomCollXYM (result, pt->X, pt->Y, + current_length); + } + if (handle != NULL) + GEOSGeom_destroy_r (handle, g_pt); + else + GEOSGeom_destroy (g_pt); + gaiaFreeGeomColl (xpt); + } + if (handle != NULL) + GEOSGeom_destroy_r (handle, g); + else + GEOSGeom_destroy (g); + result->Srid = geom->Srid; + result->DeclaredType = GAIA_MULTIPOINT; + return result; + + error: + if (handle != NULL) + { + if (g_pt) + GEOSGeom_destroy_r (handle, g_pt); + GEOSGeom_destroy_r (handle, g); + } + else + { + if (g_pt) + GEOSGeom_destroy (g_pt); + GEOSGeom_destroy (g); + } + gaiaFreeGeomColl (result); + return NULL; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaLineInterpolateEquidistantPoints (gaiaGeomCollPtr geom, double distance) +{ + gaiaResetGeosMsg (); + return gaiaLineInterpolateEquidistantPointsCommon (NULL, geom, distance); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaLineInterpolateEquidistantPoints_r (const void *p_cache, + gaiaGeomCollPtr geom, double distance) +{ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + return gaiaLineInterpolateEquidistantPointsCommon (cache, geom, distance); +} + +GAIAGEO_DECLARE double +gaiaLineLocatePoint (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* + * attempts to compute the location of the closest point on LineString + * to the given Point, as a fraction of total 2d line length + * + * the fraction is expressed into the range from 0.0 to 1.0 + */ + int pts1 = 0; + int lns1 = 0; + int pgs1 = 0; + int pts2 = 0; + int lns2 = 0; + int pgs2 = 0; + double length; + double projection; + double result; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return -1.0; + +/* checking if a single Linestring has been passed */ + pt = geom1->FirstPoint; + while (pt) + { + pts1++; + pt = pt->Next; + } + ln = geom1->FirstLinestring; + while (ln) + { + lns1++; + ln = ln->Next; + } + pg = geom1->FirstPolygon; + while (pg) + { + pgs1++; + pg = pg->Next; + } + if (pts1 == 0 && lns1 >= 1 && pgs1 == 0) + ; + else + return -1.0; + +/* checking if a single Point has been passed */ + pt = geom2->FirstPoint; + while (pt) + { + pts2++; + pt = pt->Next; + } + ln = geom2->FirstLinestring; + while (ln) + { + lns2++; + ln = ln->Next; + } + pg = geom2->FirstPolygon; + while (pg) + { + pgs2++; + pg = pg->Next; + } + if (pts2 == 1 && lns2 == 0 && pgs2 == 0) + ; + else + return -1.0; + + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + projection = GEOSProject (g1, g2); + if (GEOSLength (g1, &length)) + { + /* normalizing as a fraction between 0.0 and 1.0 */ + result = projection / length; + } + else + result = -1.0; + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + return result; +} + +GAIAGEO_DECLARE double +gaiaLineLocatePoint_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ +/* + * attempts to compute the location of the closest point on LineString + * to the given Point, as a fraction of total 2d line length + * + * the fraction is expressed into the range from 0.0 to 1.0 + */ + int pts1 = 0; + int lns1 = 0; + int pgs1 = 0; + int pts2 = 0; + int lns2 = 0; + int pgs2 = 0; + double length; + double projection; + double result; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + GEOSGeometry *g1; + GEOSGeometry *g2; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return -1.0; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return -1.0; + handle = cache->GEOS_handle; + if (handle == NULL) + return -1.0; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return -1.0; + +/* checking if a single Linestring has been passed */ + pt = geom1->FirstPoint; + while (pt) + { + pts1++; + pt = pt->Next; + } + ln = geom1->FirstLinestring; + while (ln) + { + lns1++; + ln = ln->Next; + } + pg = geom1->FirstPolygon; + while (pg) + { + pgs1++; + pg = pg->Next; + } + if (pts1 == 0 && lns1 >= 1 && pgs1 == 0) + ; + else + return -1.0; + +/* checking if a single Point has been passed */ + pt = geom2->FirstPoint; + while (pt) + { + pts2++; + pt = pt->Next; + } + ln = geom2->FirstLinestring; + while (ln) + { + lns2++; + ln = ln->Next; + } + pg = geom2->FirstPolygon; + while (pg) + { + pgs2++; + pg = pg->Next; + } + if (pts2 == 1 && lns2 == 0 && pgs2 == 0) + ; + else + return -1.0; + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + projection = GEOSProject_r (handle, g1, g2); + if (GEOSLength_r (handle, g1, &length)) + { + /* normalizing as a fraction between 0.0 and 1.0 */ + result = projection / length; + } + else + result = -1.0; + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + return result; +} + +static gaiaGeomCollPtr +gaiaLineSubstringCommon (struct splite_internal_cache *cache, + gaiaGeomCollPtr geom, double start_fraction, + double end_fraction) +{ +/* + * attempts to build a new Linestring being a substring of the input one starting + * and ending at the given fractions of total 2d length + */ + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaGeomCollPtr result; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaLinestringPtr out; + gaiaPolygonPtr pg; + GEOSGeometry *g; + GEOSGeometry *g_start; + GEOSGeometry *g_end; + GEOSCoordSequence *cs; + const GEOSCoordSequence *in_cs; + GEOSGeometry *segm; + double length; + double total = 0.0; + double start; + double end; + int iv; + int i_start = -1; + int i_end = -1; + int points; + double x; + double y; + double z; + double m; + unsigned int dims; + GEOSContextHandle_t handle = NULL; + if (cache != NULL) + { + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + } + if (!geom) + return NULL; + +/* checking if a single Linestring has been passed */ + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts == 0 && lns == 1 && pgs == 0) + ; + else + return NULL; + + if (start_fraction < 0.0) + start_fraction = 0.0; + if (start_fraction > 1.0) + start_fraction = 1.0; + if (end_fraction < 0.0) + end_fraction = 0.0; + if (end_fraction > 1.0) + end_fraction = 1.0; + if (start_fraction >= end_fraction) + return NULL; + if (cache != NULL) + { + g = gaiaToGeos_r (cache, geom); + if (GEOSLength_r (handle, g, &length)) + { + start = length * start_fraction; + end = length * end_fraction; + } + else + { + GEOSGeom_destroy_r (handle, g); + return NULL; + } + g_start = GEOSInterpolate_r (handle, g, start); + g_end = GEOSInterpolate_r (handle, g, end); + GEOSGeom_destroy_r (handle, g); + } + else + { + g = gaiaToGeos (geom); + if (GEOSLength (g, &length)) + { + start = length * start_fraction; + end = length * end_fraction; + } + else + { + GEOSGeom_destroy (g); + return NULL; + } + g_start = GEOSInterpolate (g, start); + g_end = GEOSInterpolate (g, end); + GEOSGeom_destroy (g); + } + if (!g_start || !g_end) + return NULL; + +/* identifying first and last valid vertex */ + ln = geom->FirstLinestring; + for (iv = 0; iv < ln->Points; iv++) + { + + double x0; + double y0; + switch (ln->DimensionModel) + { + case GAIA_XY_Z: + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + break; + case GAIA_XY_M: + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + break; + default: + gaiaGetPoint (ln->Coords, iv, &x, &y); + break; + }; + + if (iv > 0) + { + if (handle != NULL) + { + cs = GEOSCoordSeq_create_r (handle, 2, 2); + GEOSCoordSeq_setX_r (handle, cs, 0, x0); + GEOSCoordSeq_setY_r (handle, cs, 0, y0); + GEOSCoordSeq_setX_r (handle, cs, 1, x); + GEOSCoordSeq_setY_r (handle, cs, 1, y); + segm = GEOSGeom_createLineString_r (handle, cs); + GEOSLength_r (handle, segm, &length); + total += length; + GEOSGeom_destroy_r (handle, segm); + } + else + { + cs = GEOSCoordSeq_create (2, 2); + GEOSCoordSeq_setX (cs, 0, x0); + GEOSCoordSeq_setY (cs, 0, y0); + GEOSCoordSeq_setX (cs, 1, x); + GEOSCoordSeq_setY (cs, 1, y); + segm = GEOSGeom_createLineString (cs); + GEOSLength (segm, &length); + total += length; + GEOSGeom_destroy (segm); + } + if (total > start && i_start < 0) + i_start = iv; + if (total < end) + i_end = iv; + } + x0 = x; + y0 = y; + } + if (i_start < 0 || i_end < 0) + { + i_start = -1; + i_end = -1; + points = 2; + } + else + points = i_end - i_start + 3; + +/* creating the output geometry */ + switch (ln->DimensionModel) + { + case GAIA_XY_Z: + result = gaiaAllocGeomCollXYZ (); + break; + case GAIA_XY_M: + result = gaiaAllocGeomCollXYM (); + break; + case GAIA_XY_Z_M: + result = gaiaAllocGeomCollXYZM (); + break; + default: + result = gaiaAllocGeomColl (); + break; + }; + result->Srid = geom->Srid; + out = gaiaAddLinestringToGeomColl (result, points); + +/* start vertex */ + points = 0; + if (handle) + { + in_cs = GEOSGeom_getCoordSeq_r (handle, g_start); + GEOSCoordSeq_getDimensions_r (handle, in_cs, &dims); + if (dims == 3) + { + GEOSCoordSeq_getX_r (handle, in_cs, 0, &x); + GEOSCoordSeq_getY_r (handle, in_cs, 0, &y); + GEOSCoordSeq_getZ_r (handle, in_cs, 0, &z); + m = 0.0; + } + else + { + GEOSCoordSeq_getX_r (handle, in_cs, 0, &x); + GEOSCoordSeq_getY_r (handle, in_cs, 0, &y); + z = 0.0; + m = 0.0; + } + GEOSGeom_destroy_r (handle, g_start); + } + else + { + in_cs = GEOSGeom_getCoordSeq (g_start); + GEOSCoordSeq_getDimensions (in_cs, &dims); + if (dims == 3) + { + GEOSCoordSeq_getX (in_cs, 0, &x); + GEOSCoordSeq_getY (in_cs, 0, &y); + GEOSCoordSeq_getZ (in_cs, 0, &z); + m = 0.0; + } + else + { + GEOSCoordSeq_getX (in_cs, 0, &x); + GEOSCoordSeq_getY (in_cs, 0, &y); + z = 0.0; + m = 0.0; + } + GEOSGeom_destroy (g_start); + } + switch (out->DimensionModel) + { + case GAIA_XY_Z: + gaiaSetPointXYZ (out->Coords, points, x, y, z); + break; + case GAIA_XY_M: + gaiaSetPointXYM (out->Coords, points, x, y, 0.0); + break; + case GAIA_XY_Z_M: + gaiaSetPointXYZM (out->Coords, points, x, y, z, 0.0); + break; + default: + gaiaSetPoint (out->Coords, points, x, y); + break; + }; + points++; + + if (i_start < 0 || i_end < 0) + ; + else + { + for (iv = i_start; iv <= i_end; iv++) + { + z = 0.0; + m = 0.0; + switch (ln->DimensionModel) + { + case GAIA_XY_Z: + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + break; + case GAIA_XY_M: + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + break; + default: + gaiaGetPoint (ln->Coords, iv, &x, &y); + break; + }; + switch (out->DimensionModel) + { + case GAIA_XY_Z: + gaiaSetPointXYZ (out->Coords, points, x, y, z); + break; + case GAIA_XY_M: + gaiaSetPointXYM (out->Coords, points, x, y, 0.0); + break; + case GAIA_XY_Z_M: + gaiaSetPointXYZM (out->Coords, points, x, y, z, 0.0); + break; + default: + gaiaSetPoint (out->Coords, points, x, y); + break; + }; + points++; + } + } + +/* end vertex */ + if (handle != NULL) + { + in_cs = GEOSGeom_getCoordSeq_r (handle, g_end); + GEOSCoordSeq_getDimensions_r (handle, in_cs, &dims); + if (dims == 3) + { + GEOSCoordSeq_getX_r (handle, in_cs, 0, &x); + GEOSCoordSeq_getY_r (handle, in_cs, 0, &y); + GEOSCoordSeq_getZ_r (handle, in_cs, 0, &z); + m = 0.0; + } + else + { + GEOSCoordSeq_getX_r (handle, in_cs, 0, &x); + GEOSCoordSeq_getY_r (handle, in_cs, 0, &y); + z = 0.0; + m = 0.0; + } + GEOSGeom_destroy_r (handle, g_end); + } + else + { + in_cs = GEOSGeom_getCoordSeq (g_end); + GEOSCoordSeq_getDimensions (in_cs, &dims); + if (dims == 3) + { + GEOSCoordSeq_getX (in_cs, 0, &x); + GEOSCoordSeq_getY (in_cs, 0, &y); + GEOSCoordSeq_getZ (in_cs, 0, &z); + m = 0.0; + } + else + { + GEOSCoordSeq_getX (in_cs, 0, &x); + GEOSCoordSeq_getY (in_cs, 0, &y); + z = 0.0; + m = 0.0; + } + GEOSGeom_destroy (g_end); + } + switch (out->DimensionModel) + { + case GAIA_XY_Z: + gaiaSetPointXYZ (out->Coords, points, x, y, z); + break; + case GAIA_XY_M: + gaiaSetPointXYM (out->Coords, points, x, y, 0.0); + break; + case GAIA_XY_Z_M: + gaiaSetPointXYZM (out->Coords, points, x, y, z, 0.0); + break; + default: + gaiaSetPoint (out->Coords, points, x, y); + break; + }; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaLineSubstring (gaiaGeomCollPtr geom, double start_fraction, + double end_fraction) +{ + gaiaResetGeosMsg (); + return gaiaLineSubstringCommon (NULL, geom, start_fraction, end_fraction); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaLineSubstring_r (const void *p_cache, gaiaGeomCollPtr geom, + double start_fraction, double end_fraction) +{ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + return gaiaLineSubstringCommon (cache, geom, start_fraction, end_fraction); +} + +static GEOSGeometry * +buildGeosPoints (GEOSContextHandle_t handle, const gaiaGeomCollPtr gaia) +{ +/* converting a GAIA Geometry into a GEOS Geometry of POINTS */ + int pts = 0; + unsigned int dims; + int iv; + int ib; + int nItem; + double x; + double y; + double z; + double m; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + GEOSGeometry *geos; + GEOSGeometry *geos_item; + GEOSGeometry **geos_coll; + GEOSCoordSequence *cs; + if (!gaia) + return NULL; + pt = gaia->FirstPoint; + while (pt) + { + /* counting how many POINTs are there */ + pts++; + pt = pt->Next; + } + ln = gaia->FirstLinestring; + while (ln) + { + /* counting how many POINTs are there */ + pts += ln->Points; + ln = ln->Next; + } + pg = gaia->FirstPolygon; + while (pg) + { + /* counting how many POINTs are there */ + rng = pg->Exterior; + pts += rng->Points - 1; /* exterior ring */ + for (ib = 0; ib < pg->NumInteriors; ib++) + { + /* interior ring */ + rng = pg->Interiors + ib; + pts += rng->Points - 1; + } + pg = pg->Next; + } + if (pts == 0) + return NULL; + switch (gaia->DimensionModel) + { + case GAIA_XY_Z: + case GAIA_XY_Z_M: + dims = 3; + break; + default: + dims = 2; + break; + }; + nItem = 0; + geos_coll = malloc (sizeof (GEOSGeometry *) * (pts)); + pt = gaia->FirstPoint; + while (pt) + { + if (handle != NULL) + { + cs = GEOSCoordSeq_create_r (handle, 1, dims); + switch (pt->DimensionModel) + { + case GAIA_XY_Z: + case GAIA_XY_Z_M: + GEOSCoordSeq_setX_r (handle, cs, 0, pt->X); + GEOSCoordSeq_setY_r (handle, cs, 0, pt->Y); + GEOSCoordSeq_setZ_r (handle, cs, 0, pt->Z); + break; + default: + GEOSCoordSeq_setX_r (handle, cs, 0, pt->X); + GEOSCoordSeq_setY_r (handle, cs, 0, pt->Y); + break; + }; + geos_item = GEOSGeom_createPoint_r (handle, cs); + } + else + { + cs = GEOSCoordSeq_create (1, dims); + switch (pt->DimensionModel) + { + case GAIA_XY_Z: + case GAIA_XY_Z_M: + GEOSCoordSeq_setX (cs, 0, pt->X); + GEOSCoordSeq_setY (cs, 0, pt->Y); + GEOSCoordSeq_setZ (cs, 0, pt->Z); + break; + default: + GEOSCoordSeq_setX (cs, 0, pt->X); + GEOSCoordSeq_setY (cs, 0, pt->Y); + break; + }; + geos_item = GEOSGeom_createPoint (cs); + } + *(geos_coll + nItem++) = geos_item; + pt = pt->Next; + } + ln = gaia->FirstLinestring; + while (ln) + { + for (iv = 0; iv < ln->Points; iv++) + { + z = 0.0; + m = 0.0; + switch (ln->DimensionModel) + { + case GAIA_XY_Z: + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + break; + case GAIA_XY_M: + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + break; + default: + gaiaGetPoint (ln->Coords, iv, &x, &y); + break; + }; + if (handle != NULL) + { + cs = GEOSCoordSeq_create_r (handle, 1, dims); + if (dims == 3) + { + GEOSCoordSeq_setX_r (handle, cs, 0, x); + GEOSCoordSeq_setY_r (handle, cs, 0, y); + GEOSCoordSeq_setZ_r (handle, cs, 0, z); + } + else + { + GEOSCoordSeq_setX_r (handle, cs, 0, x); + GEOSCoordSeq_setY_r (handle, cs, 0, y); + } + geos_item = GEOSGeom_createPoint_r (handle, cs); + } + else + { + cs = GEOSCoordSeq_create (1, dims); + if (dims == 3) + { + GEOSCoordSeq_setX (cs, 0, x); + GEOSCoordSeq_setY (cs, 0, y); + GEOSCoordSeq_setZ (cs, 0, z); + } + else + { + GEOSCoordSeq_setX (cs, 0, x); + GEOSCoordSeq_setY (cs, 0, y); + } + geos_item = GEOSGeom_createPoint (cs); + } + *(geos_coll + nItem++) = geos_item; + } + ln = ln->Next; + } + pg = gaia->FirstPolygon; + while (pg) + { + rng = pg->Exterior; + for (iv = 1; iv < rng->Points; iv++) + { + /* exterior ring */ + z = 0.0; + m = 0.0; + switch (rng->DimensionModel) + { + case GAIA_XY_Z: + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + break; + case GAIA_XY_M: + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + break; + default: + gaiaGetPoint (rng->Coords, iv, &x, &y); + break; + }; + if (handle != NULL) + { + cs = GEOSCoordSeq_create_r (handle, 1, dims); + if (dims == 3) + { + GEOSCoordSeq_setX_r (handle, cs, 0, x); + GEOSCoordSeq_setY_r (handle, cs, 0, y); + GEOSCoordSeq_setZ_r (handle, cs, 0, z); + } + else + { + GEOSCoordSeq_setX_r (handle, cs, 0, x); + GEOSCoordSeq_setY_r (handle, cs, 0, y); + } + geos_item = GEOSGeom_createPoint_r (handle, cs); + } + else + { + cs = GEOSCoordSeq_create (1, dims); + if (dims == 3) + { + GEOSCoordSeq_setX (cs, 0, x); + GEOSCoordSeq_setY (cs, 0, y); + GEOSCoordSeq_setZ (cs, 0, z); + } + else + { + GEOSCoordSeq_setX (cs, 0, x); + GEOSCoordSeq_setY (cs, 0, y); + } + geos_item = GEOSGeom_createPoint (cs); + } + *(geos_coll + nItem++) = geos_item; + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + /* interior ring */ + rng = pg->Interiors + ib; + for (iv = 1; iv < rng->Points; iv++) + { + /* exterior ring */ + z = 0.0; + m = 0.0; + switch (rng->DimensionModel) + { + case GAIA_XY_Z: + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + break; + case GAIA_XY_M: + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + break; + default: + gaiaGetPoint (rng->Coords, iv, &x, &y); + break; + }; + if (handle != NULL) + { + cs = GEOSCoordSeq_create_r (handle, 1, dims); + if (dims == 3) + { + GEOSCoordSeq_setX_r (handle, cs, 0, x); + GEOSCoordSeq_setY_r (handle, cs, 0, y); + GEOSCoordSeq_setZ_r (handle, cs, 0, z); + } + else + { + GEOSCoordSeq_setX_r (handle, cs, 0, x); + GEOSCoordSeq_setY_r (handle, cs, 0, y); + } + geos_item = GEOSGeom_createPoint_r (handle, cs); + } + else + { + cs = GEOSCoordSeq_create (1, dims); + if (dims == 3) + { + GEOSCoordSeq_setX (cs, 0, x); + GEOSCoordSeq_setY (cs, 0, y); + GEOSCoordSeq_setZ (cs, 0, z); + } + else + { + GEOSCoordSeq_setX (cs, 0, x); + GEOSCoordSeq_setY (cs, 0, y); + } + geos_item = GEOSGeom_createPoint (cs); + } + *(geos_coll + nItem++) = geos_item; + } + } + pg = pg->Next; + } + if (handle != NULL) + { + geos = + GEOSGeom_createCollection_r (handle, GEOS_MULTIPOINT, geos_coll, + pts); + free (geos_coll); + GEOSSetSRID_r (handle, geos, gaia->Srid); + } + else + { + geos = GEOSGeom_createCollection (GEOS_MULTIPOINT, geos_coll, pts); + free (geos_coll); + GEOSSetSRID (geos, gaia->Srid); + } + return geos; +} + +static GEOSGeometry * +buildGeosSegments (GEOSContextHandle_t handle, const gaiaGeomCollPtr gaia) +{ +/* converting a GAIA Geometry into a GEOS Geometry of SEGMENTS */ + int segms = 0; + unsigned int dims; + int iv; + int ib; + int nItem; + double x; + double y; + double z; + double m; + double x0; + double y0; + double z0; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + GEOSGeometry *geos; + GEOSGeometry *geos_item; + GEOSGeometry **geos_coll; + GEOSCoordSequence *cs; + if (!gaia) + return NULL; + ln = gaia->FirstLinestring; + while (ln) + { + /* counting how many SEGMENTs are there */ + segms += ln->Points - 1; + ln = ln->Next; + } + pg = gaia->FirstPolygon; + while (pg) + { + /* counting how many SEGMENTs are there */ + rng = pg->Exterior; + segms += rng->Points - 1; /* exterior ring */ + for (ib = 0; ib < pg->NumInteriors; ib++) + { + /* interior ring */ + rng = pg->Interiors + ib; + segms += rng->Points - 1; + } + pg = pg->Next; + } + if (segms == 0) + return NULL; + switch (gaia->DimensionModel) + { + case GAIA_XY_Z: + case GAIA_XY_Z_M: + dims = 3; + break; + default: + dims = 2; + break; + }; + nItem = 0; + geos_coll = malloc (sizeof (GEOSGeometry *) * (segms)); + ln = gaia->FirstLinestring; + while (ln) + { + for (iv = 0; iv < ln->Points; iv++) + { + z = 0.0; + m = 0.0; + switch (ln->DimensionModel) + { + case GAIA_XY_Z: + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + break; + case GAIA_XY_M: + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + break; + default: + gaiaGetPoint (ln->Coords, iv, &x, &y); + break; + }; + if (iv > 0) + { + if (handle != NULL) + { + cs = GEOSCoordSeq_create_r (handle, 2, dims); + if (dims == 3) + { + GEOSCoordSeq_setX_r (handle, cs, 0, x0); + GEOSCoordSeq_setY_r (handle, cs, 0, y0); + GEOSCoordSeq_setZ_r (handle, cs, 0, z0); + GEOSCoordSeq_setX_r (handle, cs, 1, x); + GEOSCoordSeq_setY_r (handle, cs, 1, y); + GEOSCoordSeq_setZ_r (handle, cs, 1, z); + } + else + { + GEOSCoordSeq_setX_r (handle, cs, 0, x0); + GEOSCoordSeq_setY_r (handle, cs, 0, y0); + GEOSCoordSeq_setX_r (handle, cs, 1, x); + GEOSCoordSeq_setY_r (handle, cs, 1, y); + } + geos_item = + GEOSGeom_createLineString_r (handle, cs); + } + else + { + cs = GEOSCoordSeq_create (2, dims); + if (dims == 3) + { + GEOSCoordSeq_setX (cs, 0, x0); + GEOSCoordSeq_setY (cs, 0, y0); + GEOSCoordSeq_setZ (cs, 0, z0); + GEOSCoordSeq_setX (cs, 1, x); + GEOSCoordSeq_setY (cs, 1, y); + GEOSCoordSeq_setZ (cs, 1, z); + } + else + { + GEOSCoordSeq_setX (cs, 0, x0); + GEOSCoordSeq_setY (cs, 0, y0); + GEOSCoordSeq_setX (cs, 1, x); + GEOSCoordSeq_setY (cs, 1, y); + } + geos_item = GEOSGeom_createLineString (cs); + } + *(geos_coll + nItem++) = geos_item; + } + x0 = x; + y0 = y; + z0 = z; + } + ln = ln->Next; + } + pg = gaia->FirstPolygon; + while (pg) + { + rng = pg->Exterior; + for (iv = 0; iv < rng->Points; iv++) + { + /* exterior ring */ + z = 0.0; + m = 0.0; + switch (rng->DimensionModel) + { + case GAIA_XY_Z: + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + break; + case GAIA_XY_M: + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + break; + default: + gaiaGetPoint (rng->Coords, iv, &x, &y); + break; + }; + if (iv > 0) + { + if (handle != NULL) + { + cs = GEOSCoordSeq_create_r (handle, 2, dims); + if (dims == 3) + { + GEOSCoordSeq_setX_r (handle, cs, 0, x0); + GEOSCoordSeq_setY_r (handle, cs, 0, y0); + GEOSCoordSeq_setZ_r (handle, cs, 0, z0); + GEOSCoordSeq_setX_r (handle, cs, 1, x); + GEOSCoordSeq_setY_r (handle, cs, 1, y); + GEOSCoordSeq_setZ_r (handle, cs, 1, z); + } + else + { + GEOSCoordSeq_setX_r (handle, cs, 0, x0); + GEOSCoordSeq_setY_r (handle, cs, 0, y0); + GEOSCoordSeq_setX_r (handle, cs, 1, x); + GEOSCoordSeq_setY_r (handle, cs, 1, y); + } + geos_item = + GEOSGeom_createLineString_r (handle, cs); + } + else + { + cs = GEOSCoordSeq_create (2, dims); + if (dims == 3) + { + GEOSCoordSeq_setX (cs, 0, x0); + GEOSCoordSeq_setY (cs, 0, y0); + GEOSCoordSeq_setZ (cs, 0, z0); + GEOSCoordSeq_setX (cs, 1, x); + GEOSCoordSeq_setY (cs, 1, y); + GEOSCoordSeq_setZ (cs, 1, z); + } + else + { + GEOSCoordSeq_setX (cs, 0, x0); + GEOSCoordSeq_setY (cs, 0, y0); + GEOSCoordSeq_setX (cs, 1, x); + GEOSCoordSeq_setY (cs, 1, y); + } + geos_item = GEOSGeom_createLineString (cs); + } + *(geos_coll + nItem++) = geos_item; + } + x0 = x; + y0 = y; + z0 = z; + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + /* interior ring */ + rng = pg->Interiors + ib; + for (iv = 0; iv < rng->Points; iv++) + { + /* exterior ring */ + z = 0.0; + m = 0.0; + switch (rng->DimensionModel) + { + case GAIA_XY_Z: + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + break; + case GAIA_XY_M: + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + break; + case GAIA_XY_Z_M: + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + break; + default: + gaiaGetPoint (rng->Coords, iv, &x, &y); + break; + }; + if (iv > 0) + { + if (handle != NULL) + { + cs = GEOSCoordSeq_create_r (handle, 2, dims); + if (dims == 3) + { + GEOSCoordSeq_setX_r (handle, cs, 0, x0); + GEOSCoordSeq_setY_r (handle, cs, 0, y0); + GEOSCoordSeq_setZ_r (handle, cs, 0, z0); + GEOSCoordSeq_setX_r (handle, cs, 1, x); + GEOSCoordSeq_setY_r (handle, cs, 1, y); + GEOSCoordSeq_setZ_r (handle, cs, 1, z); + } + else + { + GEOSCoordSeq_setX_r (handle, cs, 0, x0); + GEOSCoordSeq_setY_r (handle, cs, 0, y0); + GEOSCoordSeq_setX_r (handle, cs, 1, x); + GEOSCoordSeq_setY_r (handle, cs, 1, y); + } + geos_item = + GEOSGeom_createLineString_r (handle, cs); + } + else + { + cs = GEOSCoordSeq_create (2, dims); + if (dims == 3) + { + GEOSCoordSeq_setX (cs, 0, x0); + GEOSCoordSeq_setY (cs, 0, y0); + GEOSCoordSeq_setZ (cs, 0, z0); + GEOSCoordSeq_setX (cs, 1, x); + GEOSCoordSeq_setY (cs, 1, y); + GEOSCoordSeq_setZ (cs, 1, z); + } + else + { + GEOSCoordSeq_setX (cs, 0, x0); + GEOSCoordSeq_setY (cs, 0, y0); + GEOSCoordSeq_setX (cs, 1, x); + GEOSCoordSeq_setY (cs, 1, y); + } + geos_item = GEOSGeom_createLineString (cs); + } + *(geos_coll + nItem++) = geos_item; + } + x0 = x; + y0 = y; + z0 = z; + } + } + pg = pg->Next; + } + if (handle != NULL) + { + geos = + GEOSGeom_createCollection_r (handle, GEOS_MULTILINESTRING, + geos_coll, segms); + free (geos_coll); + GEOSSetSRID_r (handle, geos, gaia->Srid); + } + else + { + geos = + GEOSGeom_createCollection (GEOS_MULTILINESTRING, geos_coll, + segms); + free (geos_coll); + GEOSSetSRID (geos, gaia->Srid); + } + return geos; +} + +static gaiaGeomCollPtr +gaiaShortestLineCommon (struct splite_internal_cache *cache, + gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* attempts to compute the the shortest line between two geometries */ + GEOSGeometry *g1_points; + GEOSGeometry *g1_segments; + const GEOSGeometry *g1_item; + GEOSGeometry *g2_points; + GEOSGeometry *g2_segments; + const GEOSGeometry *g2_item; + const GEOSCoordSequence *cs; + GEOSGeometry *g_pt; + gaiaGeomCollPtr result; + gaiaLinestringPtr ln; + int nItems1; + int nItems2; + int it1; + int it2; + unsigned int dims; + double x_ini; + double y_ini; + double z_ini; + double x_fin; + double y_fin; + double z_fin; + double dist; + double min_dist = DBL_MAX; + double projection; + GEOSContextHandle_t handle = NULL; + if (cache != NULL) + { + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + } + if (!geom1 || !geom2) + return NULL; + + g1_points = buildGeosPoints (handle, geom1); + g1_segments = buildGeosSegments (handle, geom1); + g2_points = buildGeosPoints (handle, geom2); + g2_segments = buildGeosSegments (handle, geom2); + + if (g1_points && g2_points) + { + /* computing distances between POINTs */ + if (handle != NULL) + { + nItems1 = GEOSGetNumGeometries_r (handle, g1_points); + nItems2 = GEOSGetNumGeometries_r (handle, g2_points); + } + else + { + nItems1 = GEOSGetNumGeometries (g1_points); + nItems2 = GEOSGetNumGeometries (g2_points); + } + for (it1 = 0; it1 < nItems1; it1++) + { + if (handle != NULL) + g1_item = GEOSGetGeometryN_r (handle, g1_points, it1); + else + g1_item = GEOSGetGeometryN (g1_points, it1); + for (it2 = 0; it2 < nItems2; it2++) + { + int distret; + if (handle != NULL) + { + g2_item = + GEOSGetGeometryN_r (handle, g2_points, it2); + distret = + GEOSDistance_r (handle, g1_item, g2_item, + &dist); + } + else + { + g2_item = GEOSGetGeometryN (g2_points, it2); + distret = GEOSDistance (g1_item, g2_item, &dist); + } + if (distret) + { + if (dist < min_dist) + { + /* saving min-dist points */ + min_dist = dist; + if (handle != NULL) + { + cs = GEOSGeom_getCoordSeq_r (handle, + g1_item); + GEOSCoordSeq_getDimensions_r (handle, + cs, + &dims); + if (dims == 3) + { + GEOSCoordSeq_getX_r (handle, cs, + 0, &x_ini); + GEOSCoordSeq_getY_r (handle, cs, + 0, &y_ini); + GEOSCoordSeq_getZ_r (handle, cs, + 0, &z_ini); + } + else + { + GEOSCoordSeq_getX_r (handle, cs, + 0, &x_ini); + GEOSCoordSeq_getY_r (handle, cs, + 0, &y_ini); + z_ini = 0.0; + } + cs = GEOSGeom_getCoordSeq_r (handle, + g2_item); + GEOSCoordSeq_getDimensions_r (handle, + cs, + &dims); + if (dims == 3) + { + GEOSCoordSeq_getX_r (handle, cs, + 0, &x_fin); + GEOSCoordSeq_getY_r (handle, cs, + 0, &y_fin); + GEOSCoordSeq_getZ_r (handle, cs, + 0, &z_fin); + } + else + { + GEOSCoordSeq_getX_r (handle, cs, + 0, &x_fin); + GEOSCoordSeq_getY_r (handle, cs, + 0, &y_fin); + z_fin = 0.0; + } + } + else + { + cs = GEOSGeom_getCoordSeq (g1_item); + GEOSCoordSeq_getDimensions (cs, &dims); + if (dims == 3) + { + GEOSCoordSeq_getX (cs, 0, &x_ini); + GEOSCoordSeq_getY (cs, 0, &y_ini); + GEOSCoordSeq_getZ (cs, 0, &z_ini); + } + else + { + GEOSCoordSeq_getX (cs, 0, &x_ini); + GEOSCoordSeq_getY (cs, 0, &y_ini); + z_ini = 0.0; + } + cs = GEOSGeom_getCoordSeq (g2_item); + GEOSCoordSeq_getDimensions (cs, &dims); + if (dims == 3) + { + GEOSCoordSeq_getX (cs, 0, &x_fin); + GEOSCoordSeq_getY (cs, 0, &y_fin); + GEOSCoordSeq_getZ (cs, 0, &z_fin); + } + else + { + GEOSCoordSeq_getX (cs, 0, &x_fin); + GEOSCoordSeq_getY (cs, 0, &y_fin); + z_fin = 0.0; + } + } + } + } + } + } + } + + if (g1_points && g2_segments) + { + /* computing distances between POINTs (g1) and SEGMENTs (g2) */ + if (handle != NULL) + { + nItems1 = GEOSGetNumGeometries_r (handle, g1_points); + nItems2 = GEOSGetNumGeometries_r (handle, g2_segments); + } + else + { + nItems1 = GEOSGetNumGeometries (g1_points); + nItems2 = GEOSGetNumGeometries (g2_segments); + } + for (it1 = 0; it1 < nItems1; it1++) + { + if (handle != NULL) + g1_item = GEOSGetGeometryN_r (handle, g1_points, it1); + else + g1_item = GEOSGetGeometryN (g1_points, it1); + for (it2 = 0; it2 < nItems2; it2++) + { + int distret; + if (handle != NULL) + { + g2_item = + GEOSGetGeometryN_r (handle, g2_segments, it2); + distret = + GEOSDistance_r (handle, g1_item, g2_item, + &dist); + } + else + { + g2_item = GEOSGetGeometryN (g2_segments, it2); + distret = GEOSDistance (g1_item, g2_item, &dist); + } + if (distret) + { + if (dist < min_dist) + { + /* saving min-dist points */ + if (handle != NULL) + { + projection = + GEOSProject_r (handle, g2_item, + g1_item); + g_pt = + GEOSInterpolate_r (handle, g2_item, + projection); + if (g_pt) + { + min_dist = dist; + cs = GEOSGeom_getCoordSeq_r + (handle, g1_item); + GEOSCoordSeq_getDimensions_r + (handle, cs, &dims); + if (dims == 3) + { + GEOSCoordSeq_getX_r (handle, + cs, 0, + &x_ini); + GEOSCoordSeq_getY_r (handle, + cs, 0, + &y_ini); + GEOSCoordSeq_getZ_r (handle, + cs, 0, + &z_ini); + } + else + { + GEOSCoordSeq_getX_r (handle, + cs, 0, + &x_ini); + GEOSCoordSeq_getY_r (handle, + cs, 0, + &y_ini); + z_ini = 0.0; + } + cs = GEOSGeom_getCoordSeq_r + (handle, g_pt); + GEOSCoordSeq_getDimensions_r + (handle, cs, &dims); + if (dims == 3) + { + GEOSCoordSeq_getX_r (handle, + cs, 0, + &x_fin); + GEOSCoordSeq_getY_r (handle, + cs, 0, + &y_fin); + GEOSCoordSeq_getZ_r (handle, + cs, 0, + &z_fin); + } + else + { + GEOSCoordSeq_getX_r (handle, + cs, 0, + &x_fin); + GEOSCoordSeq_getY_r (handle, + cs, 0, + &y_fin); + z_fin = 0.0; + } + GEOSGeom_destroy_r (handle, g_pt); + } + } + else + { + projection = + GEOSProject (g2_item, g1_item); + g_pt = + GEOSInterpolate (g2_item, + projection); + if (g_pt) + { + min_dist = dist; + cs = GEOSGeom_getCoordSeq + (g1_item); + GEOSCoordSeq_getDimensions (cs, + &dims); + if (dims == 3) + { + GEOSCoordSeq_getX (cs, 0, + &x_ini); + GEOSCoordSeq_getY (cs, 0, + &y_ini); + GEOSCoordSeq_getZ (cs, 0, + &z_ini); + } + else + { + GEOSCoordSeq_getX (cs, 0, + &x_ini); + GEOSCoordSeq_getY (cs, 0, + &y_ini); + z_ini = 0.0; + } + cs = GEOSGeom_getCoordSeq (g_pt); + GEOSCoordSeq_getDimensions (cs, + &dims); + if (dims == 3) + { + GEOSCoordSeq_getX (cs, 0, + &x_fin); + GEOSCoordSeq_getY (cs, 0, + &y_fin); + GEOSCoordSeq_getZ (cs, 0, + &z_fin); + } + else + { + GEOSCoordSeq_getX (cs, 0, + &x_fin); + GEOSCoordSeq_getY (cs, 0, + &y_fin); + z_fin = 0.0; + } + GEOSGeom_destroy (g_pt); + } + } + } + } + } + } + } + + if (g1_segments && g2_points) + { + /* computing distances between SEGMENTs (g1) and POINTs (g2) */ + if (handle != NULL) + { + nItems1 = GEOSGetNumGeometries_r (handle, g1_segments); + nItems2 = GEOSGetNumGeometries_r (handle, g2_points); + } + else + { + nItems1 = GEOSGetNumGeometries (g1_segments); + nItems2 = GEOSGetNumGeometries (g2_points); + } + for (it1 = 0; it1 < nItems1; it1++) + { + if (handle != NULL) + g1_item = GEOSGetGeometryN_r (handle, g1_segments, it1); + else + g1_item = GEOSGetGeometryN (g1_segments, it1); + for (it2 = 0; it2 < nItems2; it2++) + { + int distret; + if (handle != NULL) + { + g2_item = + GEOSGetGeometryN_r (handle, g2_points, it2); + distret = + GEOSDistance_r (handle, g1_item, g2_item, + &dist); + } + else + { + g2_item = GEOSGetGeometryN (g2_points, it2); + distret = GEOSDistance (g1_item, g2_item, &dist); + } + if (distret) + { + if (dist < min_dist) + { + /* saving min-dist points */ + if (handle != NULL) + { + projection = + GEOSProject_r (handle, g1_item, + g2_item); + g_pt = + GEOSInterpolate_r (handle, g1_item, + projection); + if (g_pt) + { + min_dist = dist; + cs = GEOSGeom_getCoordSeq_r + (handle, g_pt); + GEOSCoordSeq_getDimensions_r + (handle, cs, &dims); + if (dims == 3) + { + GEOSCoordSeq_getX_r (handle, + cs, 0, + &x_ini); + GEOSCoordSeq_getY_r (handle, + cs, 0, + &y_ini); + GEOSCoordSeq_getZ_r (handle, + cs, 0, + &z_ini); + } + else + { + GEOSCoordSeq_getX_r (handle, + cs, 0, + &x_ini); + GEOSCoordSeq_getY_r (handle, + cs, 0, + &y_ini); + z_ini = 0.0; + } + cs = GEOSGeom_getCoordSeq_r + (handle, g2_item); + GEOSCoordSeq_getDimensions_r + (handle, cs, &dims); + if (dims == 3) + { + GEOSCoordSeq_getX_r (handle, + cs, 0, + &x_fin); + GEOSCoordSeq_getY_r (handle, + cs, 0, + &y_fin); + GEOSCoordSeq_getZ_r (handle, + cs, 0, + &z_fin); + } + else + { + GEOSCoordSeq_getX_r (handle, + cs, 0, + &x_fin); + GEOSCoordSeq_getY_r (handle, + cs, 0, + &y_fin); + z_fin = 0.0; + } + GEOSGeom_destroy_r (handle, g_pt); + } + } + else + { + projection = + GEOSProject (g1_item, g2_item); + g_pt = + GEOSInterpolate (g1_item, + projection); + if (g_pt) + { + min_dist = dist; + cs = GEOSGeom_getCoordSeq (g_pt); + GEOSCoordSeq_getDimensions (cs, + &dims); + if (dims == 3) + { + GEOSCoordSeq_getX (cs, 0, + &x_ini); + GEOSCoordSeq_getY (cs, 0, + &y_ini); + GEOSCoordSeq_getZ (cs, 0, + &z_ini); + } + else + { + GEOSCoordSeq_getX (cs, 0, + &x_ini); + GEOSCoordSeq_getY (cs, 0, + &y_ini); + z_ini = 0.0; + } + cs = GEOSGeom_getCoordSeq + (g2_item); + GEOSCoordSeq_getDimensions (cs, + &dims); + if (dims == 3) + { + GEOSCoordSeq_getX (cs, 0, + &x_fin); + GEOSCoordSeq_getY (cs, 0, + &y_fin); + GEOSCoordSeq_getZ (cs, 0, + &z_fin); + } + else + { + GEOSCoordSeq_getX (cs, 0, + &x_fin); + GEOSCoordSeq_getY (cs, 0, + &y_fin); + z_fin = 0.0; + } + GEOSGeom_destroy (g_pt); + } + } + } + } + } + } + } + if (handle != NULL) + { + if (g1_points) + GEOSGeom_destroy_r (handle, g1_points); + if (g1_segments) + GEOSGeom_destroy_r (handle, g1_segments); + if (g2_points) + GEOSGeom_destroy_r (handle, g2_points); + if (g2_segments) + GEOSGeom_destroy_r (handle, g2_segments); + } + else + { + if (g1_points) + GEOSGeom_destroy (g1_points); + if (g1_segments) + GEOSGeom_destroy (g1_segments); + if (g2_points) + GEOSGeom_destroy (g2_points); + if (g2_segments) + GEOSGeom_destroy (g2_segments); + } + if (min_dist == DBL_MAX || min_dist <= 0.0) + return NULL; + +/* building the shortest line */ + switch (geom1->DimensionModel) + { + case GAIA_XY_Z: + result = gaiaAllocGeomCollXYZ (); + break; + case GAIA_XY_M: + result = gaiaAllocGeomCollXYM (); + break; + case GAIA_XY_Z_M: + result = gaiaAllocGeomCollXYZM (); + break; + default: + result = gaiaAllocGeomColl (); + break; + }; + result->Srid = geom1->Srid; + ln = gaiaAddLinestringToGeomColl (result, 2); + switch (ln->DimensionModel) + { + case GAIA_XY_Z: + gaiaSetPointXYZ (ln->Coords, 0, x_ini, y_ini, z_ini); + gaiaSetPointXYZ (ln->Coords, 1, x_fin, y_fin, z_fin); + break; + case GAIA_XY_M: + gaiaSetPointXYM (ln->Coords, 0, x_ini, y_ini, 0.0); + gaiaSetPointXYM (ln->Coords, 1, x_fin, y_fin, 0.0); + break; + case GAIA_XY_Z_M: + gaiaSetPointXYZM (ln->Coords, 0, x_ini, y_ini, z_ini, 0.0); + gaiaSetPointXYZM (ln->Coords, 1, x_fin, y_fin, z_fin, 0.0); + break; + default: + gaiaSetPoint (ln->Coords, 0, x_ini, y_ini); + gaiaSetPoint (ln->Coords, 1, x_fin, y_fin); + break; + }; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaShortestLine (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ + gaiaResetGeosMsg (); + return gaiaShortestLineCommon (NULL, geom1, geom2); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaShortestLine_r (const void *p_cache, gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2) +{ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + return gaiaShortestLineCommon (cache, geom1, geom2); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaSnap (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, double tolerance) +{ +/* attempts to "snap" geom1 on geom2 using the given tolerance */ + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSGeometry *g3; + gaiaGeomCollPtr result; + gaiaResetGeosMsg (); + if (!geom1 || !geom2) + return NULL; + + g1 = gaiaToGeos (geom1); + g2 = gaiaToGeos (geom2); + g3 = GEOSSnap (g1, g2, tolerance); + GEOSGeom_destroy (g1); + GEOSGeom_destroy (g2); + if (!g3) + return NULL; + if (geom1->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ (g3); + else if (geom1->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM (g3); + else if (geom1->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM (g3); + else + result = gaiaFromGeos_XY (g3); + GEOSGeom_destroy (g3); + if (result == NULL) + return NULL; + result->Srid = geom1->Srid; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaSnap_r (const void *p_cache, gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2, + double tolerance) +{ +/* attempts to "snap" geom1 on geom2 using the given tolerance */ + GEOSGeometry *g1; + GEOSGeometry *g2; + GEOSGeometry *g3; + gaiaGeomCollPtr result; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom1 || !geom2) + return NULL; + + g1 = gaiaToGeos_r (cache, geom1); + g2 = gaiaToGeos_r (cache, geom2); + g3 = GEOSSnap_r (handle, g1, g2, tolerance); + GEOSGeom_destroy_r (handle, g1); + GEOSGeom_destroy_r (handle, g2); + if (!g3) + return NULL; + if (geom1->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ_r (cache, g3); + else if (geom1->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM_r (cache, g3); + else if (geom1->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM_r (cache, g3); + else + result = gaiaFromGeos_XY_r (cache, g3); + GEOSGeom_destroy_r (handle, g3); + if (result == NULL) + return NULL; + result->Srid = geom1->Srid; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaLineMerge (gaiaGeomCollPtr geom) +{ +/* attempts to reassemble lines from a collection of sparse fragments */ + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr result; + gaiaResetGeosMsg (); + if (!geom) + return NULL; + if (gaiaIsToxic (geom)) + return NULL; + + g1 = gaiaToGeos (geom); + g2 = GEOSLineMerge (g1); + GEOSGeom_destroy (g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ (g2); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM (g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM (g2); + else + result = gaiaFromGeos_XY (g2); + GEOSGeom_destroy (g2); + if (result == NULL) + return NULL; + result->Srid = geom->Srid; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaLineMerge_r (const void *p_cache, gaiaGeomCollPtr geom) +{ +/* attempts to reassemble lines from a collection of sparse fragments */ + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr result; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + return NULL; + if (gaiaIsToxic_r (cache, geom)) + return NULL; + + g1 = gaiaToGeos_r (cache, geom); + g2 = GEOSLineMerge_r (handle, g1); + GEOSGeom_destroy_r (handle, g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM_r (cache, g2); + else + result = gaiaFromGeos_XY_r (cache, g2); + GEOSGeom_destroy_r (handle, g2); + if (result == NULL) + return NULL; + result->Srid = geom->Srid; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaUnaryUnion (gaiaGeomCollPtr geom) +{ +/* Unary Union (single Collection) */ + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr result; + gaiaResetGeosMsg (); + if (!geom) + return NULL; + if (gaiaIsToxic (geom)) + return NULL; + g1 = gaiaToGeos (geom); + g2 = GEOSUnaryUnion (g1); + GEOSGeom_destroy (g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ (g2); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM (g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM (g2); + else + result = gaiaFromGeos_XY (g2); + GEOSGeom_destroy (g2); + if (result == NULL) + return NULL; + result->Srid = geom->Srid; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaUnaryUnion_r (const void *p_cache, gaiaGeomCollPtr geom) +{ +/* Unary Union (single Collection) */ + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr result; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + return NULL; + if (gaiaIsToxic_r (cache, geom)) + return NULL; + g1 = gaiaToGeos_r (cache, geom); + g2 = GEOSUnaryUnion_r (handle, g1); + GEOSGeom_destroy_r (handle, g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM_r (cache, g2); + else + result = gaiaFromGeos_XY_r (cache, g2); + GEOSGeom_destroy_r (handle, g2); + if (result == NULL) + return NULL; + result->Srid = geom->Srid; + return result; +} + +static void +rotateRingBeforeCut (gaiaLinestringPtr ln, gaiaPointPtr node) +{ +/* rotating a Ring, so to ensure that Start/End points match the node */ + int io = 0; + int iv; + int copy = 0; + int base_idx = -1; + double x; + double y; + double z; + double m; + gaiaLinestringPtr new_ln = NULL; + + if (ln->DimensionModel == GAIA_XY_Z) + new_ln = gaiaAllocLinestringXYZ (ln->Points); + else if (ln->DimensionModel == GAIA_XY_M) + new_ln = gaiaAllocLinestringXYM (ln->Points); + else if (ln->DimensionModel == GAIA_XY_Z_M) + new_ln = gaiaAllocLinestringXYZM (ln->Points); + else + new_ln = gaiaAllocLinestring (ln->Points); + +/* first pass */ + for (iv = 0; iv < ln->Points; iv++) + { + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + if (!copy) + { + if (ln->DimensionModel == GAIA_XY_Z + || ln->DimensionModel == GAIA_XY_Z_M) + { + if (node->X == x && node->Y == y && node->Z == z) + { + base_idx = iv; + copy = 1; + } + } + else if (node->X == x && node->Y == y) + { + base_idx = iv; + copy = 1; + } + } + if (copy) + { + /* copying points */ + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (new_ln->Coords, io, x, y, z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (new_ln->Coords, io, x, y, m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (new_ln->Coords, io, x, y, z, m); + } + else + { + gaiaSetPoint (new_ln->Coords, io, x, y); + } + io++; + } + } + if (base_idx <= 0) + { + gaiaFreeLinestring (new_ln); + return; + } + +/* second pass */ + for (iv = 1; iv <= base_idx; iv++) + { + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (new_ln->Coords, io, x, y, z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (new_ln->Coords, io, x, y, m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (new_ln->Coords, io, x, y, z, m); + } + else + { + gaiaSetPoint (new_ln->Coords, io, x, y); + } + io++; + } + +/* copying back */ + for (iv = 0; iv < new_ln->Points; iv++) + { + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (new_ln->Coords, iv, &x, &y, &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (new_ln->Coords, iv, &x, &y, &m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (new_ln->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (new_ln->Coords, iv, &x, &y); + } + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, iv, x, y, z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, iv, x, y, m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ln->Coords, iv, x, y); + } + } + gaiaFreeLinestring (new_ln); +} + +static void +extractSubLine (gaiaGeomCollPtr result, gaiaLinestringPtr ln, int i_start, + int i_end) +{ +/* extracting s SubLine */ + int iv; + int io = 0; + int pts = i_end - i_start + 1; + gaiaLinestringPtr new_ln = NULL; + double x; + double y; + double z; + double m; + + new_ln = gaiaAddLinestringToGeomColl (result, pts); + + for (iv = i_start; iv <= i_end; iv++) + { + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (new_ln->Coords, io, x, y, z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (new_ln->Coords, io, x, y, m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (new_ln->Coords, io, x, y, z, m); + } + else + { + gaiaSetPoint (new_ln->Coords, io, x, y); + } + io++; + } +} + +static void +cutLineAtNodes (gaiaLinestringPtr ln, gaiaPointPtr pt_base, + gaiaGeomCollPtr result) +{ +/* attempts to cut a single Line accordingly to given nodes */ + int closed = 0; + int match = 0; + int iv; + int i_start; + double x; + double y; + double z; + double m; + gaiaPointPtr pt; + gaiaPointPtr node = NULL; + + if (gaiaIsClosed (ln)) + closed = 1; +/* pre-check */ + for (iv = 0; iv < ln->Points; iv++) + { + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + pt = pt_base; + while (pt) + { + if (ln->DimensionModel == GAIA_XY_Z + || ln->DimensionModel == GAIA_XY_Z_M) + { + if (pt->X == x && pt->Y == y && pt->Z == z) + { + node = pt; + match++; + } + } + else if (pt->X == x && pt->Y == y) + { + node = pt; + match++; + } + pt = pt->Next; + } + } + + if (closed && node) + rotateRingBeforeCut (ln, node); + + i_start = 0; + for (iv = 1; iv < ln->Points - 1; iv++) + { + /* identifying sub-linestrings */ + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + match = 0; + pt = pt_base; + while (pt) + { + if (ln->DimensionModel == GAIA_XY_Z + || ln->DimensionModel == GAIA_XY_Z_M) + { + if (pt->X == x && pt->Y == y && pt->Z == z) + { + match = 1; + break; + } + } + else if (pt->X == x && pt->Y == y) + { + match = 1; + break; + } + pt = pt->Next; + } + if (match) + { + /* cutting the line */ + extractSubLine (result, ln, i_start, iv); + i_start = iv; + } + } + if (i_start != 0 && i_start != ln->Points - 1) + { + /* extracting the last SubLine */ + extractSubLine (result, ln, i_start, ln->Points - 1); + } + else + { + /* cloning the untouched Line */ + extractSubLine (result, ln, 0, ln->Points - 1); + } +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaLinesCutAtNodes (gaiaGeomCollPtr geom1, gaiaGeomCollPtr geom2) +{ +/* attempts to cut lines accordingly to nodes */ + int pts1 = 0; + int lns1 = 0; + int pgs1 = 0; + int pts2 = 0; + int lns2 = 0; + int pgs2 = 0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaGeomCollPtr result = NULL; + + if (!geom1) + return NULL; + if (!geom2) + return NULL; + +/* both Geometryes should have identical Dimensions */ + if (geom1->DimensionModel != geom2->DimensionModel) + return NULL; + + pt = geom1->FirstPoint; + while (pt) + { + pts1++; + pt = pt->Next; + } + ln = geom1->FirstLinestring; + while (ln) + { + lns1++; + ln = ln->Next; + } + pg = geom1->FirstPolygon; + while (pg) + { + pgs1++; + pg = pg->Next; + } + pt = geom2->FirstPoint; + while (pt) + { + pts2++; + pt = pt->Next; + } + ln = geom2->FirstLinestring; + while (ln) + { + lns2++; + ln = ln->Next; + } + pg = geom2->FirstPolygon; + while (pg) + { + pgs2++; + pg = pg->Next; + } + +/* the first Geometry is expected to contain one or more Linestring(s) */ + if (pts1 == 0 && lns1 > 0 && pgs1 == 0) + ; + else + return NULL; +/* the second Geometry is expected to contain one or more Point(s) */ + if (pts2 > 0 && lns2 == 0 && pgs2 == 0) + ; + else + return NULL; + +/* attempting to cut Lines accordingly to Nodes */ + if (geom1->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (geom1->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else if (geom1->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else + result = gaiaAllocGeomColl (); + ln = geom1->FirstLinestring; + while (ln) + { + cutLineAtNodes (ln, geom2->FirstPoint, result); + ln = ln->Next; + } + if (result->FirstLinestring == NULL) + { + gaiaFreeGeomColl (result); + return NULL; + } + result->Srid = geom1->Srid; + return result; +} + +#ifdef GEOS_ADVANCED /* GEOS advanced features - 3.4.0 */ + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaDelaunayTriangulation (gaiaGeomCollPtr geom, double tolerance, + int only_edges) +{ +/* Delaunay Triangulation */ + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr result; + gaiaResetGeosMsg (); + if (!geom) + return NULL; + g1 = gaiaToGeos (geom); + g2 = GEOSDelaunayTriangulation (g1, tolerance, only_edges); + GEOSGeom_destroy (g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ (g2); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM (g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM (g2); + else + result = gaiaFromGeos_XY (g2); + GEOSGeom_destroy (g2); + if (result == NULL) + return NULL; + result->Srid = geom->Srid; + if (only_edges) + result->DeclaredType = GAIA_MULTILINESTRING; + else + result->DeclaredType = GAIA_MULTIPOLYGON; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaDelaunayTriangulation_r (const void *p_cache, gaiaGeomCollPtr geom, + double tolerance, int only_edges) +{ +/* Delaunay Triangulation */ + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr result; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + return NULL; + g1 = gaiaToGeos_r (cache, geom); + g2 = GEOSDelaunayTriangulation_r (handle, g1, tolerance, only_edges); + GEOSGeom_destroy (g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM_r (cache, g2); + else + result = gaiaFromGeos_XY_r (cache, g2); + GEOSGeom_destroy_r (handle, g2); + if (result == NULL) + return NULL; + result->Srid = geom->Srid; + if (only_edges) + result->DeclaredType = GAIA_MULTILINESTRING; + else + result->DeclaredType = GAIA_MULTIPOLYGON; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaVoronojDiagram (gaiaGeomCollPtr geom, double extra_frame_size, + double tolerance, int only_edges) +{ +/* Voronoj Diagram */ + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr result; + gaiaPolygonPtr pg; + int pgs = 0; + int errs = 0; + void *voronoj; + gaiaResetGeosMsg (); + if (!geom) + return NULL; + g1 = gaiaToGeos (geom); + g2 = GEOSDelaunayTriangulation (g1, tolerance, 0); + GEOSGeom_destroy (g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ (g2); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM (g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM (g2); + else + result = gaiaFromGeos_XY (g2); + GEOSGeom_destroy (g2); + if (result == NULL) + return NULL; + pg = result->FirstPolygon; + while (pg) + { + /* counting how many triangles are in Delaunay */ + if (delaunay_triangle_check (pg)) + pgs++; + else + errs++; + pg = pg->Next; + } + if (pgs == 0 || errs) + { + gaiaFreeGeomColl (result); + return NULL; + } + +/* building the Voronoj Diagram from Delaunay */ + voronoj = voronoj_build (pgs, result->FirstPolygon, extra_frame_size); + gaiaFreeGeomColl (result); + +/* creating the Geometry representing Voronoj */ + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else + result = gaiaAllocGeomColl (); + result = voronoj_export (voronoj, result, only_edges); + voronoj_free (voronoj); + + result->Srid = geom->Srid; + if (only_edges) + result->DeclaredType = GAIA_MULTILINESTRING; + else + result->DeclaredType = GAIA_MULTIPOLYGON; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaVoronojDiagram_r (const void *p_cache, gaiaGeomCollPtr geom, + double extra_frame_size, double tolerance, int only_edges) +{ +/* Voronoj Diagram */ + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr result; + gaiaPolygonPtr pg; + int pgs = 0; + int errs = 0; + void *voronoj; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + return NULL; + g1 = gaiaToGeos_r (cache, geom); + g2 = GEOSDelaunayTriangulation_r (handle, g1, tolerance, 0); + GEOSGeom_destroy_r (handle, g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM_r (cache, g2); + else + result = gaiaFromGeos_XY_r (cache, g2); + GEOSGeom_destroy_r (handle, g2); + if (result == NULL) + return NULL; + pg = result->FirstPolygon; + while (pg) + { + /* counting how many triangles are in Delaunay */ + if (delaunay_triangle_check (pg)) + pgs++; + else + errs++; + pg = pg->Next; + } + if (pgs == 0 || errs) + { + gaiaFreeGeomColl (result); + return NULL; + } + +/* building the Voronoj Diagram from Delaunay */ + voronoj = + voronoj_build_r (cache, pgs, result->FirstPolygon, extra_frame_size); + gaiaFreeGeomColl (result); + +/* creating the Geometry representing Voronoj */ + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else + result = gaiaAllocGeomColl (); + result = voronoj_export_r (cache, voronoj, result, only_edges); + voronoj_free (voronoj); + + result->Srid = geom->Srid; + if (only_edges) + result->DeclaredType = GAIA_MULTILINESTRING; + else + result->DeclaredType = GAIA_MULTIPOLYGON; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaConcaveHull (gaiaGeomCollPtr geom, double factor, double tolerance, + int allow_holes) +{ +/* Concave Hull */ + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr result; + gaiaGeomCollPtr concave_hull; + gaiaPolygonPtr pg; + int pgs = 0; + int errs = 0; + gaiaResetGeosMsg (); + if (!geom) + return NULL; + g1 = gaiaToGeos (geom); + g2 = GEOSDelaunayTriangulation (g1, tolerance, 0); + GEOSGeom_destroy (g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ (g2); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM (g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM (g2); + else + result = gaiaFromGeos_XY (g2); + GEOSGeom_destroy (g2); + if (result == NULL) + return NULL; + pg = result->FirstPolygon; + while (pg) + { + /* counting how many triangles are in Delaunay */ + if (delaunay_triangle_check (pg)) + pgs++; + else + errs++; + pg = pg->Next; + } + if (pgs == 0 || errs) + { + gaiaFreeGeomColl (result); + return NULL; + } + +/* building the Concave Hull from Delaunay */ + concave_hull = + concave_hull_build (result->FirstPolygon, geom->DimensionModel, factor, + allow_holes); + gaiaFreeGeomColl (result); + if (!concave_hull) + return NULL; + result = concave_hull; + + result->Srid = geom->Srid; + return result; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaConcaveHull_r (const void *p_cache, gaiaGeomCollPtr geom, double factor, + double tolerance, int allow_holes) +{ +/* Concave Hull */ + GEOSGeometry *g1; + GEOSGeometry *g2; + gaiaGeomCollPtr result; + gaiaGeomCollPtr concave_hull; + gaiaPolygonPtr pg; + int pgs = 0; + int errs = 0; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + GEOSContextHandle_t handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->GEOS_handle; + if (handle == NULL) + return NULL; + gaiaResetGeosMsg_r (cache); + if (!geom) + return NULL; + g1 = gaiaToGeos_r (cache, geom); + g2 = GEOSDelaunayTriangulation_r (handle, g1, tolerance, 0); + GEOSGeom_destroy_r (handle, g1); + if (!g2) + return NULL; + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaFromGeos_XYZ_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaFromGeos_XYM_r (cache, g2); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaFromGeos_XYZM_r (cache, g2); + else + result = gaiaFromGeos_XY_r (cache, g2); + GEOSGeom_destroy_r (handle, g2); + if (result == NULL) + return NULL; + pg = result->FirstPolygon; + while (pg) + { + /* counting how many triangles are in Delaunay */ + if (delaunay_triangle_check (pg)) + pgs++; + else + errs++; + pg = pg->Next; + } + if (pgs == 0 || errs) + { + gaiaFreeGeomColl (result); + return NULL; + } + +/* building the Concave Hull from Delaunay */ + concave_hull = + concave_hull_build_r (p_cache, result->FirstPolygon, + geom->DimensionModel, factor, allow_holes); + gaiaFreeGeomColl (result); + if (!concave_hull) + return NULL; + result = concave_hull; + + result->Srid = geom->Srid; + return result; +} + +#endif /* end GEOS advanced features */ + +#endif /* end including GEOS */ diff --git a/src/spatialite/src/gaiageo/gg_shape.c b/src/spatialite/src/gaiageo/gg_shape.c new file mode 100644 index 0000000..cff706c --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_shape.c @@ -0,0 +1,5198 @@ +/* + + gg_shape.c -- Gaia shapefile handling + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#if OMIT_ICONV == 0 /* if ICONV is disabled no SHP support is available */ + +#if defined(__MINGW32__) || defined(_WIN32) +#define LIBICONV_STATIC +#include +#define LIBCHARSET_STATIC +#ifdef _MSC_VER +/* isn't supported on OSGeo4W */ +/* applying a tricky workaround to fix this issue */ +extern const char *locale_charset (void); +#else /* sane Windows - not OSGeo4W */ +#include +#endif /* end localcharset */ +#else /* not MINGW32 */ +#if defined(__APPLE__) || defined(__ANDROID__) +#include +#include +#else /* neither Mac OsX nor Android */ +#include +#include +#endif +#endif + +#include + +#include +#include + +#ifdef _WIN32 +#define atoll _atoi64 +#endif /* not WIN32 */ + +/* 64 bit integer: portable format for printf() */ +#if defined(_WIN32) && !defined(__MINGW32__) +#define FRMT64 "%I64d" +#else +#define FRMT64 "%lld" +#endif + +#define SHAPEFILE_NO_DATA 1e-38 + +#ifdef _WIN32 +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +struct auxdbf_fld +{ +/* auxiliary DBF field struct */ + char *name; + struct auxdbf_fld *next; +}; + +struct auxdbf_list +{ +/* auxiliary DBF struct */ + struct auxdbf_fld *first; + struct auxdbf_fld *last; +}; + +GAIAGEO_DECLARE void +gaiaFreeValue (gaiaValuePtr p) +{ +/* frees all memory allocations for this DBF Field value */ + if (!p) + return; + if (p->TxtValue) + free (p->TxtValue); + free (p); +} + +GAIAGEO_DECLARE void +gaiaSetNullValue (gaiaDbfFieldPtr field) +{ +/* assignes a NULL value to some DBF field */ + if (field->Value) + gaiaFreeValue (field->Value); + field->Value = malloc (sizeof (gaiaValue)); + field->Value->Type = GAIA_NULL_VALUE; + field->Value->TxtValue = NULL; +} + +GAIAGEO_DECLARE void +gaiaSetIntValue (gaiaDbfFieldPtr field, sqlite3_int64 value) +{ +/* assignes an INTEGER value to some DBF field */ + if (field->Value) + gaiaFreeValue (field->Value); + field->Value = malloc (sizeof (gaiaValue)); + field->Value->Type = GAIA_INT_VALUE; + field->Value->TxtValue = NULL; + field->Value->IntValue = value; +} + +GAIAGEO_DECLARE void +gaiaSetDoubleValue (gaiaDbfFieldPtr field, double value) +{ +/* assignes a DOUBLE value to some DBF field */ + if (field->Value) + gaiaFreeValue (field->Value); + field->Value = malloc (sizeof (gaiaValue)); + field->Value->Type = GAIA_DOUBLE_VALUE; + field->Value->TxtValue = NULL; + field->Value->DblValue = value; +} + +GAIAGEO_DECLARE void +gaiaSetStrValue (gaiaDbfFieldPtr field, char *str) +{ +/* assignes a STRING value to some DBF field */ + int len = strlen (str); + if (field->Value) + gaiaFreeValue (field->Value); + field->Value = malloc (sizeof (gaiaValue)); + field->Value->Type = GAIA_TEXT_VALUE; + field->Value->TxtValue = malloc (len + 1); + strcpy (field->Value->TxtValue, str); +} + +GAIAGEO_DECLARE gaiaDbfFieldPtr +gaiaAllocDbfField (char *name, unsigned char type, + int offset, unsigned char length, unsigned char decimals) +{ +/* allocates and initializes a DBF Field definition */ + gaiaDbfFieldPtr p = malloc (sizeof (gaiaDbfField)); + int len = strlen (name); + p->Name = malloc (len + 1); + strcpy (p->Name, name); + p->Type = type; + p->Offset = offset; + p->Length = length; + p->Decimals = decimals; + p->Value = NULL; + p->Next = NULL; + return p; +} + +GAIAGEO_DECLARE void +gaiaFreeDbfField (gaiaDbfFieldPtr p) +{ +/* frees all memory allocations for this DBF Field definition */ + if (!p) + return; + if (p->Name) + free (p->Name); + if (p->Value) + gaiaFreeValue (p->Value); + free (p); +} + +GAIAGEO_DECLARE gaiaDbfFieldPtr +gaiaCloneDbfField (gaiaDbfFieldPtr org) +{ +/* creating a new DBF LIST copied from the original one */ + gaiaDbfFieldPtr p = malloc (sizeof (gaiaDbfField)); + int len = strlen (org->Name); + p->Name = malloc (len + 1); + strcpy (p->Name, org->Name); + p->Type = org->Type; + p->Offset = org->Offset; + p->Length = org->Length; + p->Decimals = org->Decimals; + p->Value = gaiaCloneValue (org->Value); + p->Next = NULL; + return p; +} + +GAIAGEO_DECLARE gaiaDbfListPtr +gaiaAllocDbfList () +{ +/* allocates and initializes the DBF Fields list */ + gaiaDbfListPtr list = malloc (sizeof (gaiaDbfList)); + list->RowId = 0; + list->Geometry = NULL; + list->First = NULL; + list->Last = NULL; + return list; +} + +GAIAGEO_DECLARE void +gaiaFreeDbfList (gaiaDbfListPtr list) +{ +/* frees all memory allocations related to DBF Fields list */ + gaiaDbfFieldPtr p; + gaiaDbfFieldPtr pn; + if (!list) + return; + p = list->First; + while (p) + { + pn = p->Next; + gaiaFreeDbfField (p); + p = pn; + } + if (list->Geometry) + gaiaFreeGeomColl (list->Geometry); + free (list); +} + +GAIAGEO_DECLARE int +gaiaIsValidDbfList (gaiaDbfListPtr list) +{ +/* checks if the DBF fields list contains any invalid data type */ + gaiaDbfFieldPtr p; + if (!list) + return 0; + p = list->First; + while (p) + { + if (p->Type == 'N' || p->Type == 'C' || p->Type == 'L' + || p->Type == 'D' || p->Type == 'F') + ; + else + return 0; + p = p->Next; + } + return 1; +} + +GAIAGEO_DECLARE gaiaDbfFieldPtr +gaiaAddDbfField (gaiaDbfListPtr list, char *name, unsigned char type, + int offset, unsigned char length, unsigned char decimals) +{ +/* inserts a Field in the DBF Fields list */ + gaiaDbfFieldPtr p; + if (!list) + return NULL; + p = gaiaAllocDbfField (name, type, offset, length, decimals); + if (!(list->First)) + list->First = p; + if (list->Last) + list->Last->Next = p; + list->Last = p; + return p; +} + +GAIAGEO_DECLARE void +gaiaResetDbfEntity (gaiaDbfListPtr list) +{ +/* resets data values */ + gaiaDbfFieldPtr p; + if (!list) + return; + p = list->First; + while (p) + { + if (p->Value) + gaiaFreeValue (p->Value); + p->Value = NULL; + p = p->Next; + } + if (list->Geometry) + gaiaFreeGeomColl (list->Geometry); + list->Geometry = NULL; +} + +GAIAGEO_DECLARE gaiaValuePtr +gaiaCloneValue (gaiaValuePtr org) +{ +/* creating a new VARIANT value copied from the original one */ + gaiaValuePtr value; + int len; + value = malloc (sizeof (gaiaValue)); + value->Type = GAIA_NULL_VALUE; + value->TxtValue = NULL; + switch (org->Type) + { + case GAIA_INT_VALUE: + value->Type = GAIA_INT_VALUE; + value->IntValue = org->IntValue; + break; + case GAIA_DOUBLE_VALUE: + value->Type = GAIA_DOUBLE_VALUE; + value->DblValue = org->DblValue; + break; + case GAIA_TEXT_VALUE: + value->Type = GAIA_TEXT_VALUE; + len = strlen (org->TxtValue); + value->TxtValue = malloc (len + 1); + strcpy (value->TxtValue, org->TxtValue); + }; + return value; +} + +GAIAGEO_DECLARE gaiaDbfListPtr +gaiaCloneDbfEntity (gaiaDbfListPtr org) +{ +/* creating a new DBF LIST copied from the original one */ + gaiaDbfFieldPtr p; + gaiaDbfFieldPtr newFld; + gaiaDbfListPtr entity = gaiaAllocDbfList (); + entity->RowId = org->RowId; + if (org->Geometry) + entity->Geometry = gaiaCloneGeomColl (org->Geometry); + p = org->First; + while (p) + { + newFld = + gaiaAddDbfField (entity, p->Name, p->Type, p->Offset, p->Length, + p->Decimals); + if (p->Value) + newFld->Value = gaiaCloneValue (p->Value); + p = p->Next; + } + return entity; +} + +GAIAGEO_DECLARE gaiaShapefilePtr +gaiaAllocShapefile () +{ +/* allocates and initializes the Shapefile object */ + gaiaShapefilePtr shp = malloc (sizeof (gaiaShapefile)); + shp->endian_arch = 1; + shp->Path = NULL; + shp->Shape = -1; + shp->EffectiveType = GAIA_UNKNOWN; + shp->EffectiveDims = GAIA_XY; + shp->flShp = NULL; + shp->flShx = NULL; + shp->flDbf = NULL; + shp->Dbf = NULL; + shp->BufShp = NULL; + shp->ShpBfsz = 0; + shp->BufDbf = NULL; + shp->DbfHdsz = 0; + shp->DbfReclen = 0; + shp->DbfSize = 0; + shp->DbfRecno = 0; + shp->ShpSize = 0; + shp->ShxSize = 0; + shp->MinX = DBL_MAX; + shp->MinY = DBL_MAX; + shp->MaxX = -DBL_MAX; + shp->MaxY = -DBL_MAX; + shp->Valid = 0; + shp->IconvObj = NULL; + shp->LastError = NULL; + return shp; +} + +GAIAGEO_DECLARE void +gaiaFreeShapefile (gaiaShapefilePtr shp) +{ +/* frees all memory allocations related to the Shapefile object */ + if (shp->Path) + free (shp->Path); + if (shp->flShp) + fclose (shp->flShp); + if (shp->flShx) + fclose (shp->flShx); + if (shp->flDbf) + fclose (shp->flDbf); + if (shp->Dbf) + gaiaFreeDbfList (shp->Dbf); + if (shp->BufShp) + free (shp->BufShp); + if (shp->BufDbf) + free (shp->BufDbf); + if (shp->IconvObj) + iconv_close ((iconv_t) shp->IconvObj); + if (shp->LastError) + free (shp->LastError); + free (shp); +} + +GAIAGEO_DECLARE void +gaiaOpenShpRead (gaiaShapefilePtr shp, const char *path, const char *charFrom, + const char *charTo) +{ +/* trying to open the shapefile and initial checkings */ + FILE *fl_shx = NULL; + FILE *fl_shp = NULL; + FILE *fl_dbf = NULL; + char xpath[1024]; + int rd; + unsigned char buf_shx[256]; + unsigned char *buf_shp = NULL; + int buf_size = 1024; + int shape; + unsigned char bf[1024]; + int dbf_size; + int dbf_reclen = 0; + int off_dbf; + int ind; + char field_name[2048]; + char *sys_err; + char errMsg[1024]; + iconv_t iconv_ret; + char utf8buf[2048]; +#if !defined(__MINGW32__) && defined(_WIN32) + const char *pBuf; +#else /* not WIN32 */ + char *pBuf; +#endif + size_t len; + size_t utf8len; + char *pUtf8buf; + int endian_arch = gaiaEndianArch (); + gaiaDbfListPtr dbf_list = NULL; + if (charFrom && charTo) + { + iconv_ret = iconv_open (charTo, charFrom); + if (iconv_ret == (iconv_t) (-1)) + { + sprintf (errMsg, "conversion from '%s' to '%s' not available\n", + charFrom, charTo); + goto unsupported_conversion; + } + shp->IconvObj = iconv_ret; + } + else + { + sprintf (errMsg, "a NULL charset-name was passed\n"); + goto unsupported_conversion; + } + if (shp->flShp != NULL || shp->flShx != NULL || shp->flDbf != NULL) + { + sprintf (errMsg, + "attempting to reopen an already opened Shapefile\n"); + goto unsupported_conversion; + } + sprintf (xpath, "%s.shx", path); + fl_shx = fopen (xpath, "rb"); + if (!fl_shx) + { + sys_err = strerror (errno); + sprintf (errMsg, "unable to open '%s' for reading: %s", xpath, + sys_err); + goto no_file; + } + sprintf (xpath, "%s.shp", path); + fl_shp = fopen (xpath, "rb"); + if (!fl_shp) + { + sys_err = strerror (errno); + sprintf (errMsg, "unable to open '%s' for reading: %s", xpath, + sys_err); + goto no_file; + } + sprintf (xpath, "%s.dbf", path); + fl_dbf = fopen (xpath, "rb"); + if (!fl_dbf) + { + sys_err = strerror (errno); + sprintf (errMsg, "unable to open '%s' for reading: %s", xpath, + sys_err); + goto no_file; + } +/* reading SHX file header */ + rd = fread (buf_shx, sizeof (unsigned char), 100, fl_shx); + if (rd != 100) + goto error; + if (gaiaImport32 (buf_shx + 0, GAIA_BIG_ENDIAN, endian_arch) != 9994) /* checks the SHX magic number */ + goto error; +/* reading SHP file header */ + buf_shp = malloc (sizeof (unsigned char) * buf_size); + rd = fread (buf_shp, sizeof (unsigned char), 100, fl_shp); + if (rd != 100) + goto error; + if (gaiaImport32 (buf_shp + 0, GAIA_BIG_ENDIAN, endian_arch) != 9994) /* checks the SHP magic number */ + goto error; + shape = gaiaImport32 (buf_shp + 32, GAIA_LITTLE_ENDIAN, endian_arch); + if (shape == GAIA_SHP_POINT || shape == GAIA_SHP_POINTZ + || shape == GAIA_SHP_POINTM || shape == GAIA_SHP_POLYLINE + || shape == GAIA_SHP_POLYLINEZ || shape == GAIA_SHP_POLYLINEM + || shape == GAIA_SHP_POLYGON || shape == GAIA_SHP_POLYGONZ + || shape == GAIA_SHP_POLYGONM || shape == GAIA_SHP_MULTIPOINT + || shape == GAIA_SHP_MULTIPOINTZ || shape == GAIA_SHP_MULTIPOINTM) + ; + else + goto unsupported; +/* reading DBF file header */ + rd = fread (bf, sizeof (unsigned char), 32, fl_dbf); + if (rd != 32) + goto error; + switch (*bf) + { + /* checks the DBF magic number */ + case 0x03: + case 0x83: + break; + case 0x02: + case 0xF8: + sprintf (errMsg, "'%s'\ninvalid magic number %02x [FoxBASE format]", + path, *bf); + goto dbf_bad_magic; + case 0xF5: + sprintf (errMsg, + "'%s'\ninvalid magic number %02x [FoxPro 2.x (or earlier) format]", + path, *bf); + goto dbf_bad_magic; + case 0x30: + case 0x31: + case 0x32: + sprintf (errMsg, + "'%s'\ninvalid magic number %02x [Visual FoxPro format]", + path, *bf); + goto dbf_bad_magic; + case 0x43: + case 0x63: + case 0xBB: + case 0xCB: + sprintf (errMsg, "'%s'\ninvalid magic number %02x [dBASE IV format]", + path, *bf); + goto dbf_bad_magic; + default: + sprintf (errMsg, "'%s'\ninvalid magic number %02x [unknown format]", + path, *bf); + goto dbf_bad_magic; + }; + dbf_size = gaiaImport16 (bf + 8, GAIA_LITTLE_ENDIAN, endian_arch); + dbf_reclen = gaiaImport16 (bf + 10, GAIA_LITTLE_ENDIAN, endian_arch); + dbf_size--; + off_dbf = 0; + dbf_list = gaiaAllocDbfList (); + for (ind = 32; ind < dbf_size; ind += 32) + { + /* fetches DBF fields definitions */ + rd = fread (bf, sizeof (unsigned char), 32, fl_dbf); + if (rd != 32) + goto error; + if (*(bf + 11) == 'M') + { + /* skipping any MEMO field */ + memcpy (field_name, bf, 11); + field_name[11] = '\0'; + off_dbf += *(bf + 16); + spatialite_e + ("WARNING: column \"%s\" is of the MEMO type and will be ignored\n", + field_name); + continue; + } + memcpy (field_name, bf, 11); + field_name[11] = '\0'; + len = strlen ((char *) field_name); + utf8len = 2048; + pBuf = (char *) field_name; + pUtf8buf = utf8buf; + if (iconv + ((iconv_t) (shp->IconvObj), &pBuf, &len, &pUtf8buf, + &utf8len) == (size_t) (-1)) + goto conversion_error; + memcpy (field_name, utf8buf, 2048 - utf8len); + field_name[2048 - utf8len] = '\0'; + gaiaAddDbfField (dbf_list, field_name, *(bf + 11), off_dbf, + *(bf + 16), *(bf + 17)); + off_dbf += *(bf + 16); + } + if (!gaiaIsValidDbfList (dbf_list)) + { + /* invalid DBF */ + goto illegal_dbf; + } + len = strlen (path); + shp->Path = malloc (len + 1); + strcpy (shp->Path, path); + shp->ReadOnly = 1; + shp->Shape = shape; + switch (shape) + { + /* setting up a prudential geometry type */ + case GAIA_SHP_POINT: + case GAIA_SHP_POINTZ: + case GAIA_SHP_POINTM: + shp->EffectiveType = GAIA_POINT; + break; + case GAIA_SHP_POLYLINE: + case GAIA_SHP_POLYLINEZ: + case GAIA_SHP_POLYLINEM: + shp->EffectiveType = GAIA_MULTILINESTRING; + break; + case GAIA_SHP_POLYGON: + case GAIA_SHP_POLYGONZ: + case GAIA_SHP_POLYGONM: + shp->EffectiveType = GAIA_MULTIPOLYGON; + break; + case GAIA_SHP_MULTIPOINT: + case GAIA_SHP_MULTIPOINTZ: + case GAIA_SHP_MULTIPOINTM: + shp->EffectiveType = GAIA_MULTIPOINT; + break; + } + switch (shape) + { + /* setting up a prudential dimension model */ + case GAIA_SHP_POINTZ: + case GAIA_SHP_POLYLINEZ: + case GAIA_SHP_POLYGONZ: + case GAIA_SHP_MULTIPOINTZ: + shp->EffectiveDims = GAIA_XY_Z_M; + break; + case GAIA_SHP_POINTM: + case GAIA_SHP_POLYLINEM: + case GAIA_SHP_POLYGONM: + case GAIA_SHP_MULTIPOINTM: + shp->EffectiveDims = GAIA_XY_M; + break; + default: + shp->EffectiveDims = GAIA_XY; + break; + } + shp->flShp = fl_shp; + shp->flShx = fl_shx; + shp->flDbf = fl_dbf; + shp->Dbf = dbf_list; +/* saving the SHP buffer */ + shp->BufShp = buf_shp; + shp->ShpBfsz = buf_size; +/* allocating DBF buffer */ + shp->BufDbf = malloc (sizeof (unsigned char) * dbf_reclen); + shp->DbfHdsz = dbf_size + 1; + shp->DbfReclen = dbf_reclen; + shp->Valid = 1; + shp->endian_arch = endian_arch; + return; + unsupported_conversion: +/* illegal charset */ + if (shp->LastError) + free (shp->LastError); + len = strlen (errMsg); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, errMsg); + return; + no_file: +/* one of shapefile's files can't be accessed */ + if (shp->LastError) + free (shp->LastError); + len = strlen (errMsg); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, errMsg); + if (fl_shx) + fclose (fl_shx); + if (fl_shp) + fclose (fl_shp); + if (fl_dbf) + fclose (fl_dbf); + return; + dbf_bad_magic: +/* the DBF has an invalid magin number */ + if (shp->LastError) + free (shp->LastError); + len = strlen (errMsg); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, errMsg); + gaiaFreeDbfList (dbf_list); + if (buf_shp) + free (buf_shp); + fclose (fl_shx); + fclose (fl_shp); + fclose (fl_dbf); + return; + error: +/* the shapefile is invalid or corrupted */ + if (shp->LastError) + free (shp->LastError); + sprintf (errMsg, "'%s' is corrupted / has invalid format", path); + len = strlen (errMsg); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, errMsg); + gaiaFreeDbfList (dbf_list); + if (buf_shp) + free (buf_shp); + fclose (fl_shx); + fclose (fl_shp); + fclose (fl_dbf); + return; + unsupported: +/* the shapefile has an unrecognized shape type */ + if (shp->LastError) + free (shp->LastError); + sprintf (errMsg, "'%s' shape=%d is not supported", path, shape); + len = strlen (errMsg); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, errMsg); + gaiaFreeDbfList (dbf_list); + if (buf_shp) + free (buf_shp); + fclose (fl_shx); + fclose (fl_shp); + if (fl_dbf) + fclose (fl_dbf); + return; + illegal_dbf: +/* the DBF-file contains unsupported data types */ + if (shp->LastError) + free (shp->LastError); + sprintf (errMsg, "'%s.dbf' contains unsupported data types", path); + len = strlen (errMsg); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, errMsg); + gaiaFreeDbfList (dbf_list); + if (buf_shp) + free (buf_shp); + fclose (fl_shx); + fclose (fl_shp); + if (fl_dbf) + fclose (fl_dbf); + return; + conversion_error: +/* libiconv error */ + if (shp->LastError) + free (shp->LastError); + sprintf (errMsg, "'%s.dbf' field name: invalid character sequence", path); + len = strlen (errMsg); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, errMsg); + gaiaFreeDbfList (dbf_list); + if (buf_shp) + free (buf_shp); + fclose (fl_shx); + fclose (fl_shp); + if (fl_dbf) + fclose (fl_dbf); + return; +} + +static struct auxdbf_list * +alloc_auxdbf (gaiaDbfListPtr dbf_list) +{ +/* allocating the auxiliary DBF struct */ + int len; + gaiaDbfFieldPtr fld; + struct auxdbf_fld *fld_ex; + struct auxdbf_list *auxdbf = malloc (sizeof (struct auxdbf_list)); + auxdbf->first = NULL; + auxdbf->last = NULL; + fld = dbf_list->First; + while (fld) + { + fld_ex = malloc (sizeof (struct auxdbf_fld)); + len = strlen (fld->Name); + fld_ex->name = malloc (len + 1); + strcpy (fld_ex->name, fld->Name); + fld_ex->next = NULL; + if (auxdbf->first == NULL) + auxdbf->first = fld_ex; + if (auxdbf->last != NULL) + auxdbf->last->next = fld_ex; + auxdbf->last = fld_ex; + fld = fld->Next; + } + return auxdbf; +} + +static void +free_auxdbf (struct auxdbf_list *auxdbf) +{ +/* freeing an auxiliary DBF struct */ + struct auxdbf_fld *n_fld; + struct auxdbf_fld *fld = auxdbf->first; + while (fld != NULL) + { + n_fld = fld->next; + if (fld->name != NULL) + free (fld->name); + free (fld); + fld = n_fld; + } + free (auxdbf); +} + +static void +truncate_long_name (struct auxdbf_list *list, gaiaDbfFieldPtr xfld) +{ +/* attempting to create a unique short name <= 10 bytes */ + char suffix; + char buf[16]; + struct auxdbf_fld *fld; + struct auxdbf_fld *base = NULL; + memcpy (buf, xfld->Name, 9); + buf[10] = '\0'; + + fld = list->first; + while (fld) + { + /* identifying the base aux Field */ + if (strcmp (xfld->Name, fld->name) == 0) + { + base = fld; + break; + } + fld = fld->next; + } + + suffix = '0'; + while (1) + { + /* attempting to find a numeric suffix ensuring uniqueness */ + int ok = 1; + buf[9] = suffix; + fld = list->first; + while (fld) + { + if (base != fld) + { + if (strcasecmp (buf, fld->name) == 0) + { + /* invalid: already defined */ + ok = 0; + break; + } + } + fld = fld->next; + } + if (ok) + { + strcpy (xfld->Name, buf); + if (base != NULL) + strcpy (base->name, buf); + return; + } + if (suffix == '9') + break; + else + suffix++; + } + + suffix = 'A'; + while (1) + { + /* attempting to find a letter suffix ensuring uniqueness */ + int ok = 1; + buf[9] = suffix; + fld = list->first; + while (fld) + { + if (base != fld) + { + if (strcasecmp (buf, fld->name) == 0) + { + /* invalid: already defined */ + ok = 0; + break; + } + } + fld = fld->next; + } + if (ok) + { + strcpy (xfld->Name, buf); + if (base != NULL) + strcpy (base->name, buf); + return; + } + if (suffix == 'Z') + break; + else + suffix++; + } +} + +GAIAGEO_DECLARE void +gaiaOpenShpWrite (gaiaShapefilePtr shp, const char *path, int shape, + gaiaDbfListPtr dbf_list, const char *charFrom, + const char *charTo) +{ +/* trying to create the shapefile */ + FILE *fl_shx = NULL; + FILE *fl_shp = NULL; + FILE *fl_dbf = NULL; + char xpath[1024]; + unsigned char *buf_shp = NULL; + int buf_size = 1024; + unsigned char *dbf_buf = NULL; + gaiaDbfFieldPtr fld; + char *sys_err; + char errMsg[1024]; + short dbf_reclen = 0; + int shp_size = 0; + int shx_size = 0; + unsigned short dbf_size = 0; + iconv_t iconv_ret; + int endian_arch = gaiaEndianArch (); + char buf[2048]; + char utf8buf[2048]; +#if !defined(__MINGW32__) && defined(_WIN32) + const char *pBuf; +#else /* not WIN32 */ + char *pBuf; +#endif + size_t len; + size_t utf8len; + char *pUtf8buf; + int defaultId = 1; + struct auxdbf_list *auxdbf = NULL; + if (charFrom && charTo) + { + iconv_ret = iconv_open (charTo, charFrom); + if (iconv_ret == (iconv_t) (-1)) + { + sprintf (errMsg, "conversion from '%s' to '%s' not available\n", + charFrom, charTo); + goto unsupported_conversion; + } + shp->IconvObj = iconv_ret; + } + else + { + sprintf (errMsg, "a NULL charset-name was passed\n"); + goto unsupported_conversion; + } + if (shp->flShp != NULL || shp->flShx != NULL || shp->flDbf != NULL) + { + sprintf (errMsg, + "attempting to reopen an already opened Shapefile\n"); + goto unsupported_conversion; + } + buf_shp = malloc (buf_size); +/* trying to open shapefile files */ + sprintf (xpath, "%s.shx", path); + fl_shx = fopen (xpath, "wb"); + if (!fl_shx) + { + sys_err = strerror (errno); + sprintf (errMsg, "unable to open '%s' for writing: %s", xpath, + sys_err); + goto no_file; + } + sprintf (xpath, "%s.shp", path); + fl_shp = fopen (xpath, "wb"); + if (!fl_shp) + { + sys_err = strerror (errno); + sprintf (errMsg, "unable to open '%s' for writing: %s", xpath, + sys_err); + goto no_file; + } + sprintf (xpath, "%s.dbf", path); + fl_dbf = fopen (xpath, "wb"); + if (!fl_dbf) + { + sys_err = strerror (errno); + sprintf (errMsg, "unable to open '%s' for writing: %s", xpath, + sys_err); + goto no_file; + } +/* allocating DBF buffer */ + dbf_reclen = 1; /* an extra byte is needed because in DBF rows first byte is a marker for deletion */ + fld = dbf_list->First; + while (fld) + { + /* computing the DBF record length */ + dbf_reclen += fld->Length; + fld = fld->Next; + } + dbf_buf = malloc (dbf_reclen); +/* writing an empty SHP file header */ + memset (buf_shp, 0, 100); + fwrite (buf_shp, 1, 100, fl_shp); + shp_size = 50; /* note: shapefile [SHP and SHX] counts sizes in WORDS of 16 bits, not in bytes of 8 bits !!!! */ +/* writing an empty SHX file header */ + memset (buf_shp, 0, 100); + fwrite (buf_shp, 1, 100, fl_shx); + shx_size = 50; +/* writing the DBF file header */ + memset (buf_shp, '\0', 32); + fwrite (buf_shp, 1, 32, fl_dbf); + dbf_size = 32; /* note: DBF counts sizes in bytes */ + auxdbf = alloc_auxdbf (dbf_list); + fld = dbf_list->First; + while (fld) + { + /* exporting DBF Fields specifications */ + memset (buf_shp, 0, 32); + if (strlen (fld->Name) > 10) + { + /* long name: attempting to safely truncate */ + truncate_long_name (auxdbf, fld); + } + strcpy (buf, fld->Name); + len = strlen (buf); + utf8len = 2048; + pBuf = buf; + pUtf8buf = utf8buf; + if (iconv + ((iconv_t) (shp->IconvObj), &pBuf, &len, &pUtf8buf, + &utf8len) == (size_t) (-1)) + sprintf (buf, "FLD#%d", defaultId++); + else + { + memcpy (buf, utf8buf, 2048 - utf8len); + buf[2048 - utf8len] = '\0'; + if (strlen (buf) > 10) + sprintf (buf, "FLD#%d", defaultId++); + } + memcpy (buf_shp, buf, strlen (buf)); + *(buf_shp + 11) = fld->Type; + *(buf_shp + 16) = fld->Length; + *(buf_shp + 17) = fld->Decimals; + fwrite (buf_shp, 1, 32, fl_dbf); + dbf_size += 32; + fld = fld->Next; + } + free_auxdbf (auxdbf); + fwrite ("\r", 1, 1, fl_dbf); /* this one is a special DBF delimiter that closes file header */ + dbf_size++; +/* setting up the SHP struct */ + len = strlen (path); + shp->Path = malloc (len + 1); + strcpy (shp->Path, path); + shp->ReadOnly = 0; + switch (shape) + { + /* setting up SHAPE and dimensions */ + case GAIA_POINT: + shp->Shape = GAIA_SHP_POINT; + shp->EffectiveType = GAIA_POINT; + shp->EffectiveDims = GAIA_XY; + break; + case GAIA_POINTZ: + shp->Shape = GAIA_SHP_POINTZ; + shp->EffectiveType = GAIA_POINT; + shp->EffectiveDims = GAIA_XY_Z; + break; + case GAIA_POINTM: + shp->Shape = GAIA_SHP_POINTM; + shp->EffectiveType = GAIA_POINT; + shp->EffectiveDims = GAIA_XY_M; + break; + case GAIA_POINTZM: + shp->Shape = GAIA_SHP_POINTZ; + shp->EffectiveType = GAIA_POINT; + shp->EffectiveDims = GAIA_XY_Z_M; + break; + case GAIA_MULTIPOINT: + shp->Shape = GAIA_SHP_MULTIPOINT; + shp->EffectiveType = GAIA_MULTIPOINT; + shp->EffectiveDims = GAIA_XY; + break; + case GAIA_MULTIPOINTZ: + shp->Shape = GAIA_SHP_MULTIPOINTZ; + shp->EffectiveType = GAIA_MULTIPOINT; + shp->EffectiveDims = GAIA_XY_Z; + break; + case GAIA_MULTIPOINTM: + shp->Shape = GAIA_SHP_MULTIPOINTM; + shp->EffectiveType = GAIA_MULTIPOINT; + shp->EffectiveDims = GAIA_XY_M; + break; + case GAIA_MULTIPOINTZM: + shp->Shape = GAIA_SHP_MULTIPOINTZ; + shp->EffectiveType = GAIA_MULTIPOINT; + shp->EffectiveDims = GAIA_XY_Z_M; + break; + case GAIA_LINESTRING: + shp->Shape = GAIA_SHP_POLYLINE; + shp->EffectiveType = GAIA_LINESTRING; + shp->EffectiveDims = GAIA_XY; + break; + case GAIA_LINESTRINGZ: + shp->Shape = GAIA_SHP_POLYLINEZ; + shp->EffectiveType = GAIA_LINESTRING; + shp->EffectiveDims = GAIA_XY_Z; + break; + case GAIA_LINESTRINGM: + shp->Shape = GAIA_SHP_POLYLINEM; + shp->EffectiveType = GAIA_LINESTRING; + shp->EffectiveDims = GAIA_XY_M; + break; + case GAIA_LINESTRINGZM: + shp->Shape = GAIA_SHP_POLYLINEZ; + shp->EffectiveType = GAIA_LINESTRING; + shp->EffectiveDims = GAIA_XY_Z_M; + break; + case GAIA_MULTILINESTRING: + shp->Shape = GAIA_SHP_POLYLINE; + shp->EffectiveType = GAIA_MULTILINESTRING; + shp->EffectiveDims = GAIA_XY; + break; + case GAIA_MULTILINESTRINGZ: + shp->Shape = GAIA_SHP_POLYLINEZ; + shp->EffectiveType = GAIA_MULTILINESTRING; + shp->EffectiveDims = GAIA_XY_Z; + break; + case GAIA_MULTILINESTRINGM: + shp->Shape = GAIA_SHP_POLYLINEM; + shp->EffectiveType = GAIA_MULTILINESTRING; + shp->EffectiveDims = GAIA_XY_M; + break; + case GAIA_MULTILINESTRINGZM: + shp->Shape = GAIA_SHP_POLYLINEZ; + shp->EffectiveType = GAIA_MULTILINESTRING; + shp->EffectiveDims = GAIA_XY_Z_M; + break; + case GAIA_POLYGON: + shp->Shape = GAIA_SHP_POLYGON; + shp->EffectiveType = GAIA_POLYGON; + shp->EffectiveDims = GAIA_XY; + break; + case GAIA_POLYGONZ: + shp->Shape = GAIA_SHP_POLYGONZ; + shp->EffectiveType = GAIA_POLYGON; + shp->EffectiveDims = GAIA_XY_Z; + break; + case GAIA_POLYGONM: + shp->Shape = GAIA_SHP_POLYGONM; + shp->EffectiveType = GAIA_POLYGON; + shp->EffectiveDims = GAIA_XY_M; + break; + case GAIA_POLYGONZM: + shp->Shape = GAIA_SHP_POLYGONZ; + shp->EffectiveType = GAIA_POLYGON; + shp->EffectiveDims = GAIA_XY_Z_M; + break; + case GAIA_MULTIPOLYGON: + shp->Shape = GAIA_SHP_POLYGON; + shp->EffectiveType = GAIA_MULTIPOLYGON; + shp->EffectiveDims = GAIA_XY; + break; + case GAIA_MULTIPOLYGONZ: + shp->Shape = GAIA_SHP_POLYGONZ; + shp->EffectiveType = GAIA_MULTIPOLYGON; + shp->EffectiveDims = GAIA_XY_Z; + break; + case GAIA_MULTIPOLYGONM: + shp->Shape = GAIA_SHP_POLYGONM; + shp->EffectiveType = GAIA_MULTIPOLYGON; + shp->EffectiveDims = GAIA_XY_M; + break; + case GAIA_MULTIPOLYGONZM: + shp->Shape = GAIA_SHP_POLYGONZ; + shp->EffectiveType = GAIA_MULTIPOLYGON; + shp->EffectiveDims = GAIA_XY_Z_M; + break; + }; + shp->flShp = fl_shp; + shp->flShx = fl_shx; + shp->flDbf = fl_dbf; + shp->Dbf = dbf_list; + shp->BufShp = buf_shp; + shp->ShpBfsz = buf_size; + shp->BufDbf = dbf_buf; + shp->DbfHdsz = dbf_size + 1; + shp->DbfReclen = dbf_reclen; + shp->DbfSize = dbf_size; + shp->DbfRecno = 0; + shp->ShpSize = shp_size; + shp->ShxSize = shx_size; + shp->MinX = DBL_MAX; + shp->MinY = DBL_MAX; + shp->MaxX = -DBL_MAX; + shp->MaxY = -DBL_MAX; + shp->Valid = 1; + shp->endian_arch = endian_arch; + return; + unsupported_conversion: +/* illegal charset */ + if (shp->LastError) + free (shp->LastError); + len = strlen (errMsg); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, errMsg); + return; + no_file: +/* one of shapefile's files can't be created/opened */ + if (shp->LastError) + free (shp->LastError); + len = strlen (errMsg); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, errMsg); + if (buf_shp) + free (buf_shp); + if (fl_shx) + fclose (fl_shx); + if (fl_shp) + fclose (fl_shp); + if (fl_dbf) + fclose (fl_dbf); + return; +} + +static double +to_sqlite_julian_date (int year, int month, int day, double *julian) +{ +/* trying to convert an 'YYYY-MM-DD' date into a JulianDate [double] */ + int Y; + int M; + int D; + int A; + int B; + int X1; + int X2; + if (year < 1900 || year > 2400) + return 0; + if (month < 1 || month > 12) + return 0; + if (day < 1) + return 0; + switch (month) + { + case 2: + if ((year / 4) == 0) + { + if (day > 29) + return 0; + } + else + { + if (day > 28) + return 0; + } + break; + case 4: + case 6: + case 9: + case 11: + if (day > 30) + return 0; + break; + default: + if (day > 31) + return 0; + }; +/* computing the Julian date */ + Y = year; + M = month; + D = day; + if (M <= 2) + { + Y--; + M += 12; + } + A = Y / 100; + B = 2 - A + (A / 4); + X1 = 36525 * (Y + 4716) / 100; + X2 = 306001 * (M + 1) / 10000; + *julian = (double) (X1 + X2 + D + B - 1524.5); + return 1; +} + +static int +parseDbfField (unsigned char *buf_dbf, void *iconv_obj, gaiaDbfFieldPtr pFld) +{ +/* parsing a generic DBF field */ + unsigned char buf[512]; + char utf8buf[2048]; +#if !defined(__MINGW32__) && defined(_WIN32) + const char *pBuf; +#else /* not WIN32 */ + char *pBuf; +#endif + size_t len; + size_t utf8len; + char *pUtf8buf; + int i; + memcpy (buf, buf_dbf + pFld->Offset + 1, pFld->Length); + buf[pFld->Length] = '\0'; + if (*buf == '\0') + gaiaSetNullValue (pFld); + else + { + if (pFld->Type == 'N') + { + /* NUMERIC value */ + if (pFld->Decimals > 0 || pFld->Length > 18) + gaiaSetDoubleValue (pFld, atof ((char *) buf)); + else + gaiaSetIntValue (pFld, atoll ((char *) buf)); + } + else if (pFld->Type == 'M') + { + /* MEMO value - assumed to always be NULL */ + gaiaSetNullValue (pFld); + } + else if (pFld->Type == 'F') + { + /* FLOAT value */ + gaiaSetDoubleValue (pFld, atof ((char *) buf)); + } + else if (pFld->Type == 'D') + { + /* DATE value */ + if (strlen ((char *) buf) != 8) + gaiaSetNullValue (pFld); + else + { + /* converting into a Julian Date */ + double julian; + char date[5]; + int year = 0; + int month = 0; + int day = 0; + date[0] = buf[0]; + date[1] = buf[1]; + date[2] = buf[2]; + date[3] = buf[3]; + date[4] = '\0'; + year = atoi (date); + date[0] = buf[4]; + date[1] = buf[5]; + date[2] = '\0'; + month = atoi (date); + date[0] = buf[6]; + date[1] = buf[7]; + date[2] = '\0'; + day = atoi (date); + if (to_sqlite_julian_date (year, month, day, &julian)) + gaiaSetDoubleValue (pFld, julian); + else + gaiaSetNullValue (pFld); + } + } + else if (pFld->Type == 'L') + { + /* LOGICAL [aka Boolean] value */ + if (*buf == '1' || *buf == 't' || *buf == 'T' + || *buf == 'Y' || *buf == 'y') + gaiaSetIntValue (pFld, 1); + else + gaiaSetIntValue (pFld, 0); + } + else + { + /* CHARACTER [aka String, Text] value */ + +/* Sandro 2013-01-07 +/ fixing an issue reported by Filip Arlet + for (i = strlen ((char *) buf) - 1; i > 1; i--) +*/ + for (i = strlen ((char *) buf) - 1; i >= 0; i--) + { + /* cleaning up trailing spaces */ + if (buf[i] == ' ') + buf[i] = '\0'; + else + break; + } + len = strlen ((char *) buf); + utf8len = 2048; + pBuf = (char *) buf; + pUtf8buf = utf8buf; + if (iconv + ((iconv_t) (iconv_obj), &pBuf, &len, &pUtf8buf, + &utf8len) == (size_t) (-1)) + return 0; + memcpy (buf, utf8buf, 2048 - utf8len); + buf[2048 - utf8len] = '\0'; + gaiaSetStrValue (pFld, (char *) buf); + } + } + return 1; +} + +struct shp_ring_item +{ +/* a RING item [to be reassembled into a (Multi)Polygon] */ + gaiaRingPtr Ring; + int IsExterior; + gaiaRingPtr Mother; + struct shp_ring_item *Next; +}; + +struct shp_ring_collection +{ +/* a collection of RING items */ + struct shp_ring_item *First; + struct shp_ring_item *Last; +}; + +static void +shp_free_rings (struct shp_ring_collection *ringsColl) +{ +/* memory cleanup: rings collection */ + struct shp_ring_item *p; + struct shp_ring_item *pN; + p = ringsColl->First; + while (p) + { + pN = p->Next; + if (p->Ring) + gaiaFreeRing (p->Ring); + free (p); + p = pN; + } +} + +static void +shp_add_ring (struct shp_ring_collection *ringsColl, gaiaRingPtr ring) +{ +/* inserting a ring into the rings collection */ + struct shp_ring_item *p = malloc (sizeof (struct shp_ring_item)); + p->Ring = ring; + gaiaMbrRing (ring); + gaiaClockwise (ring); +/* accordingly to SHP rules interior/exterior depends on direction */ + p->IsExterior = ring->Clockwise; + p->Mother = NULL; + p->Next = NULL; +/* updating the linked list */ + if (ringsColl->First == NULL) + ringsColl->First = p; + if (ringsColl->Last != NULL) + ringsColl->Last->Next = p; + ringsColl->Last = p; +} + +static int +shp_check_rings (gaiaRingPtr exterior, gaiaRingPtr candidate) +{ +/* +/ speditively checks if the candidate could be an interior Ring +/ contained into the exterior Ring +*/ + double z; + double m; + double x0; + double y0; + double x1; + double y1; + int mid; + int ret0; + int ret1; + if (candidate->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (candidate->Coords, 0, &x0, &y0, &z); + } + else if (candidate->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (candidate->Coords, 0, &x0, &y0, &m); + } + else if (candidate->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (candidate->Coords, 0, &x0, &y0, &z, &m); + } + else + { + gaiaGetPoint (candidate->Coords, 0, &x0, &y0); + } + mid = candidate->Points / 2; + if (candidate->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (candidate->Coords, mid, &x1, &y1, &z); + } + else if (candidate->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (candidate->Coords, mid, &x1, &y1, &m); + } + else if (candidate->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (candidate->Coords, mid, &x1, &y1, &z, &m); + } + else + { + gaiaGetPoint (candidate->Coords, mid, &x1, &y1); + } + +/* testing if the first point falls on the exterior ring surface */ + ret0 = gaiaIsPointOnRingSurface (exterior, x0, y0); +/* testing if the second point falls on the exterior ring surface */ + ret1 = gaiaIsPointOnRingSurface (exterior, x1, y1); + if (ret0 || ret1) + return 1; + return 0; +} + +static int +shp_mbr_contains (gaiaRingPtr r1, gaiaRingPtr r2) +{ +/* checks if the first Ring contains the second one - MBR based */ + int ok_1 = 0; + int ok_2 = 0; + int ok_3 = 0; + int ok_4 = 0; + if (r2->MinX >= r1->MinX && r2->MinX <= r1->MaxX) + ok_1 = 1; + if (r2->MaxX >= r1->MinX && r2->MaxX <= r1->MaxX) + ok_2 = 1; + if (r2->MinY >= r1->MinY && r2->MinY <= r1->MaxY) + ok_3 = 1; + if (r2->MaxY >= r1->MinY && r2->MaxY <= r1->MaxY) + ok_4 = 1; + if (ok_1 && ok_2 && ok_3 && ok_4) + return 1; + return 0; +} + +static void +shp_arrange_rings (struct shp_ring_collection *ringsColl) +{ +/* +/ arranging Rings so to associate any interior ring +/ to the containing exterior ring +*/ + struct shp_ring_item *pInt; + struct shp_ring_item *pExt; + pExt = ringsColl->First; + while (pExt != NULL) + { + /* looping on Exterior Rings */ + if (pExt->IsExterior) + { + pInt = ringsColl->First; + while (pInt != NULL) + { + /* looping on Interior Rings */ + if (pInt->IsExterior == 0 && pInt->Mother == NULL + && shp_mbr_contains (pExt->Ring, pInt->Ring)) + { + /* ok, matches */ + if (shp_check_rings (pExt->Ring, pInt->Ring)) + pInt->Mother = pExt->Ring; + } + pInt = pInt->Next; + } + } + pExt = pExt->Next; + } + pExt = ringsColl->First; + while (pExt != NULL) + { + if (pExt->IsExterior == 0 && pExt->Mother == NULL) + { + /* orphan ring: promoting to Exterior */ + pExt->IsExterior = 1; + } + pExt = pExt->Next; + } +} + +static void +shp_build_area (struct shp_ring_collection *ringsColl, gaiaGeomCollPtr geom) +{ +/* building the final (Multi)Polygon Geometry */ + gaiaPolygonPtr polyg; + struct shp_ring_item *pExt; + struct shp_ring_item *pInt; + pExt = ringsColl->First; + while (pExt != NULL) + { + if (pExt->IsExterior) + { + /* creating a new Polygon */ + polyg = gaiaInsertPolygonInGeomColl (geom, pExt->Ring); + pInt = ringsColl->First; + while (pInt != NULL) + { + if (pExt->Ring == pInt->Mother) + { + /* adding an interior ring to current POLYGON */ + gaiaAddRingToPolyg (polyg, pInt->Ring); + /* releasing Ring ownership */ + pInt->Ring = NULL; + } + pInt = pInt->Next; + } + /* releasing Ring ownership */ + pExt->Ring = NULL; + } + pExt = pExt->Next; + } +} + +GAIAGEO_DECLARE int +gaiaReadShpEntity (gaiaShapefilePtr shp, int current_row, int srid) +{ +/* trying to read an entity from shapefile */ + unsigned char buf[512]; + int len; + int rd; + int skpos; + int offset; + int off_shp; + int sz; + int shape; + double x; + double y; + double z; + double m; + int points; + int n; + int n1; + int base; + int baseZ; + int baseM; + int start; + int end; + int iv; + int ind; + int max_size; + int min_size; + int hasM; + char errMsg[1024]; + gaiaGeomCollPtr geom = NULL; + gaiaLinestringPtr line = NULL; + gaiaRingPtr ring = NULL; + gaiaDbfFieldPtr pFld; + struct shp_ring_collection ringsColl; +/* initializing the RING collection */ + ringsColl.First = NULL; + ringsColl.Last = NULL; +/* positioning and reading the SHX file */ + offset = 100 + (current_row * 8); /* 100 bytes for the header + current row displacement; each SHX row = 8 bytes */ + skpos = fseek (shp->flShx, offset, SEEK_SET); + if (skpos != 0) + goto eof; + rd = fread (buf, sizeof (unsigned char), 8, shp->flShx); + if (rd != 8) + goto eof; + off_shp = gaiaImport32 (buf, GAIA_BIG_ENDIAN, shp->endian_arch); +/* positioning and reading the DBF file */ + offset = shp->DbfHdsz + (current_row * shp->DbfReclen); + skpos = fseek (shp->flDbf, offset, SEEK_SET); + if (skpos != 0) + goto error; + rd = fread (shp->BufDbf, sizeof (unsigned char), shp->DbfReclen, + shp->flDbf); + if (rd != shp->DbfReclen) + goto error; +/* positioning and reading corresponding SHP entity - geometry */ + offset = off_shp * 2; + skpos = fseek (shp->flShp, offset, SEEK_SET); + if (skpos != 0) + goto error; + rd = fread (buf, sizeof (unsigned char), 12, shp->flShp); + if (rd != 12) + goto error; + sz = gaiaImport32 (buf + 4, GAIA_BIG_ENDIAN, shp->endian_arch); + shape = gaiaImport32 (buf + 8, GAIA_LITTLE_ENDIAN, shp->endian_arch); + if (shape == GAIA_SHP_NULL) + { + /* handling a NULL shape */ + goto null_shape; + } + else if (shape != shp->Shape) + goto error; + if ((sz * 2) > shp->ShpBfsz) + { + /* current buffer is too small; we need to allocate a bigger buffer */ + free (shp->BufShp); + shp->ShpBfsz = sz * 2; + shp->BufShp = malloc (sizeof (unsigned char) * shp->ShpBfsz); + } + if (shape == GAIA_SHP_POINT) + { + /* shape point */ + rd = fread (shp->BufShp, sizeof (unsigned char), 16, shp->flShp); + if (rd != 16) + goto error; + x = gaiaImport64 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); + y = gaiaImport64 (shp->BufShp + 8, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + if (shp->EffectiveDims == GAIA_XY_Z) + { + geom = gaiaAllocGeomCollXYZ (); + gaiaAddPointToGeomCollXYZ (geom, x, y, 0.0); + } + else if (shp->EffectiveDims == GAIA_XY_M) + { + geom = gaiaAllocGeomCollXYM (); + gaiaAddPointToGeomCollXYM (geom, x, y, 0.0); + } + else if (shp->EffectiveDims == GAIA_XY_Z_M) + { + geom = gaiaAllocGeomCollXYZM (); + gaiaAddPointToGeomCollXYZM (geom, x, y, 0.0, 0.0); + } + else + { + geom = gaiaAllocGeomColl (); + gaiaAddPointToGeomColl (geom, x, y); + } + geom->DeclaredType = GAIA_POINT; + geom->Srid = srid; + } + if (shape == GAIA_SHP_POINTZ) + { + /* shape point Z */ + rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); + if (rd != 32) + { + /* required by some buggish SHP (e.g. the GDAL/OGR ones) */ + if (rd != 24) + goto error; + } + x = gaiaImport64 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); + y = gaiaImport64 (shp->BufShp + 8, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + z = gaiaImport64 (shp->BufShp + 16, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + if (rd == 24) + m = 0.0; + else + m = gaiaImport64 (shp->BufShp + 24, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + if (shp->EffectiveDims == GAIA_XY_Z) + { + geom = gaiaAllocGeomCollXYZ (); + gaiaAddPointToGeomCollXYZ (geom, x, y, z); + } + else if (shp->EffectiveDims == GAIA_XY_M) + { + geom = gaiaAllocGeomCollXYM (); + gaiaAddPointToGeomCollXYM (geom, x, y, m); + } + else if (shp->EffectiveDims == GAIA_XY_Z_M) + { + geom = gaiaAllocGeomCollXYZM (); + gaiaAddPointToGeomCollXYZM (geom, x, y, z, m); + } + else + { + geom = gaiaAllocGeomColl (); + gaiaAddPointToGeomColl (geom, x, y); + } + geom->DeclaredType = GAIA_POINT; + geom->Srid = srid; + } + if (shape == GAIA_SHP_POINTM) + { + /* shape point M */ + rd = fread (shp->BufShp, sizeof (unsigned char), 24, shp->flShp); + if (rd != 24) + goto error; + x = gaiaImport64 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); + y = gaiaImport64 (shp->BufShp + 8, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + m = gaiaImport64 (shp->BufShp + 16, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + if (shp->EffectiveDims == GAIA_XY_Z) + { + geom = gaiaAllocGeomCollXYZ (); + gaiaAddPointToGeomCollXYZ (geom, x, y, 0.0); + } + else if (shp->EffectiveDims == GAIA_XY_M) + { + geom = gaiaAllocGeomCollXYM (); + gaiaAddPointToGeomCollXYM (geom, x, y, m); + } + else if (shp->EffectiveDims == GAIA_XY_Z_M) + { + geom = gaiaAllocGeomCollXYZM (); + gaiaAddPointToGeomCollXYZM (geom, x, y, 0.0, m); + } + else + { + geom = gaiaAllocGeomColl (); + gaiaAddPointToGeomColl (geom, x, y); + } + geom->DeclaredType = GAIA_POINT; + geom->Srid = srid; + } + if (shape == GAIA_SHP_POLYLINE) + { + /* shape polyline */ + rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); + if (rd != 32) + goto error; + rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, + shp->flShp); + if (rd != (sz * 2) - 36) + goto error; + n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); + n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + base = 8 + (n * 4); + start = 0; + for (ind = 0; ind < n; ind++) + { + if (ind < (n - 1)) + end = + gaiaImport32 (shp->BufShp + 8 + ((ind + 1) * 4), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + else + end = n1; + points = end - start; + if (shp->EffectiveDims == GAIA_XY_Z) + line = gaiaAllocLinestringXYZ (points); + else if (shp->EffectiveDims == GAIA_XY_M) + line = gaiaAllocLinestringXYM (points); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + line = gaiaAllocLinestringXYZM (points); + else + line = gaiaAllocLinestring (points); + points = 0; + for (iv = start; iv < end; iv++) + { + x = gaiaImport64 (shp->BufShp + base + (iv * 16), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + y = gaiaImport64 (shp->BufShp + base + (iv * 16) + + 8, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + if (shp->EffectiveDims == GAIA_XY_Z) + { + gaiaSetPointXYZ (line->Coords, points, x, y, 0.0); + } + else if (shp->EffectiveDims == GAIA_XY_M) + { + gaiaSetPointXYM (line->Coords, points, x, y, 0.0); + } + else if (shp->EffectiveDims == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (line->Coords, points, x, y, + 0.0, 0.0); + } + else + { + gaiaSetPoint (line->Coords, points, x, y); + } + start++; + points++; + } + if (!geom) + { + if (shp->EffectiveDims == GAIA_XY_Z) + geom = gaiaAllocGeomCollXYZ (); + else if (shp->EffectiveDims == GAIA_XY_M) + geom = gaiaAllocGeomCollXYM (); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + geom = gaiaAllocGeomCollXYZM (); + else + geom = gaiaAllocGeomColl (); + if (shp->EffectiveType == GAIA_LINESTRING) + geom->DeclaredType = GAIA_LINESTRING; + else + geom->DeclaredType = GAIA_MULTILINESTRING; + geom->Srid = srid; + } + gaiaInsertLinestringInGeomColl (geom, line); + } + } + if (shape == GAIA_SHP_POLYLINEZ) + { + /* shape polyline Z */ + rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); + if (rd != 32) + goto error; + rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, + shp->flShp); + if (rd != (sz * 2) - 36) + goto error; + n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); + n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + hasM = 0; + max_size = 38 + (2 * n) + (n1 * 16); /* size [in 16 bits words !!!] ZM */ + min_size = 30 + (2 * n) + (n1 * 12); /* size [in 16 bits words !!!] Z-only */ + if (sz < min_size) + goto error; + if (sz == max_size) + hasM = 1; + base = 8 + (n * 4); + baseZ = base + (n1 * 16) + 16; + baseM = baseZ + (n1 * 8) + 16; + start = 0; + for (ind = 0; ind < n; ind++) + { + if (ind < (n - 1)) + end = + gaiaImport32 (shp->BufShp + 8 + ((ind + 1) * 4), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + else + end = n1; + points = end - start; + if (shp->EffectiveDims == GAIA_XY_Z) + line = gaiaAllocLinestringXYZ (points); + else if (shp->EffectiveDims == GAIA_XY_M) + line = gaiaAllocLinestringXYM (points); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + line = gaiaAllocLinestringXYZM (points); + else + line = gaiaAllocLinestring (points); + points = 0; + for (iv = start; iv < end; iv++) + { + x = gaiaImport64 (shp->BufShp + base + (iv * 16), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + y = gaiaImport64 (shp->BufShp + base + (iv * 16) + + 8, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + z = gaiaImport64 (shp->BufShp + baseZ + (iv * 8), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + if (hasM) + m = gaiaImport64 (shp->BufShp + baseM + + (iv * 8), GAIA_LITTLE_ENDIAN, + shp->endian_arch); + else + m = 0.0; + if (m < SHAPEFILE_NO_DATA) + m = 0.0; + if (shp->EffectiveDims == GAIA_XY_Z) + { + gaiaSetPointXYZ (line->Coords, points, x, y, z); + } + else if (shp->EffectiveDims == GAIA_XY_M) + { + gaiaSetPointXYM (line->Coords, points, x, y, m); + } + else if (shp->EffectiveDims == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (line->Coords, points, x, y, z, m); + } + else + { + gaiaSetPoint (line->Coords, points, x, y); + } + start++; + points++; + } + if (!geom) + { + if (shp->EffectiveDims == GAIA_XY_Z) + geom = gaiaAllocGeomCollXYZ (); + else if (shp->EffectiveDims == GAIA_XY_M) + geom = gaiaAllocGeomCollXYM (); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + geom = gaiaAllocGeomCollXYZM (); + else + geom = gaiaAllocGeomColl (); + if (shp->EffectiveType == GAIA_LINESTRING) + geom->DeclaredType = GAIA_LINESTRING; + else + geom->DeclaredType = GAIA_MULTILINESTRING; + geom->Srid = srid; + } + gaiaInsertLinestringInGeomColl (geom, line); + } + } + if (shape == GAIA_SHP_POLYLINEM) + { + /* shape polyline M */ + rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); + if (rd != 32) + goto error; + rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, + shp->flShp); + if (rd != (sz * 2) - 36) + goto error; + n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); + n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + hasM = 0; + max_size = 30 + (2 * n) + (n1 * 12); /* size [in 16 bits words !!!] M */ + min_size = 22 + (2 * n) + (n1 * 8); /* size [in 16 bits words !!!] no-M */ + if (sz < min_size) + goto error; + if (sz == max_size) + hasM = 1; + base = 8 + (n * 4); + baseM = base + (n1 * 16) + 16; + start = 0; + for (ind = 0; ind < n; ind++) + { + if (ind < (n - 1)) + end = + gaiaImport32 (shp->BufShp + 8 + ((ind + 1) * 4), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + else + end = n1; + points = end - start; + if (shp->EffectiveDims == GAIA_XY_Z) + line = gaiaAllocLinestringXYZ (points); + else if (shp->EffectiveDims == GAIA_XY_M) + line = gaiaAllocLinestringXYM (points); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + line = gaiaAllocLinestringXYZM (points); + else + line = gaiaAllocLinestring (points); + points = 0; + for (iv = start; iv < end; iv++) + { + x = gaiaImport64 (shp->BufShp + base + (iv * 16), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + y = gaiaImport64 (shp->BufShp + base + (iv * 16) + + 8, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + if (hasM) + m = gaiaImport64 (shp->BufShp + baseM + + (iv * 8), GAIA_LITTLE_ENDIAN, + shp->endian_arch); + else + m = 0.0; + if (m < SHAPEFILE_NO_DATA) + m = 0.0; + if (shp->EffectiveDims == GAIA_XY_Z) + { + gaiaSetPointXYZ (line->Coords, points, x, y, 0.0); + } + else if (shp->EffectiveDims == GAIA_XY_M) + { + gaiaSetPointXYM (line->Coords, points, x, y, m); + } + else if (shp->EffectiveDims == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (line->Coords, points, x, y, + 0.0, m); + } + else + { + gaiaSetPoint (line->Coords, points, x, y); + } + start++; + points++; + } + if (!geom) + { + if (shp->EffectiveDims == GAIA_XY_Z) + geom = gaiaAllocGeomCollXYZ (); + else if (shp->EffectiveDims == GAIA_XY_M) + geom = gaiaAllocGeomCollXYM (); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + geom = gaiaAllocGeomCollXYZM (); + else + geom = gaiaAllocGeomColl (); + if (shp->EffectiveType == GAIA_LINESTRING) + geom->DeclaredType = GAIA_LINESTRING; + else + geom->DeclaredType = GAIA_MULTILINESTRING; + geom->Srid = srid; + } + gaiaInsertLinestringInGeomColl (geom, line); + } + } + if (shape == GAIA_SHP_POLYGON) + { + /* shape polygon */ + rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); + if (rd != 32) + goto error; + rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, + shp->flShp); + if (rd != (sz * 2) - 36) + goto error; + n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); + n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + base = 8 + (n * 4); + start = 0; + for (ind = 0; ind < n; ind++) + { + if (ind < (n - 1)) + end = + gaiaImport32 (shp->BufShp + 8 + ((ind + 1) * 4), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + else + end = n1; + points = end - start; + if (shp->EffectiveDims == GAIA_XY_Z) + ring = gaiaAllocRingXYZ (points); + else if (shp->EffectiveDims == GAIA_XY_M) + ring = gaiaAllocRingXYM (points); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + ring = gaiaAllocRingXYZM (points); + else + ring = gaiaAllocRing (points); + points = 0; + for (iv = start; iv < end; iv++) + { + x = gaiaImport64 (shp->BufShp + base + (iv * 16), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + y = gaiaImport64 (shp->BufShp + base + (iv * 16) + + 8, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + if (shp->EffectiveDims == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, points, x, y, 0.0); + } + else if (shp->EffectiveDims == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, points, x, y, 0.0); + } + else if (shp->EffectiveDims == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, points, x, y, + 0.0, 0.0); + } + else + { + gaiaSetPoint (ring->Coords, points, x, y); + } + start++; + points++; + } + shp_add_ring (&ringsColl, ring); + } + shp_arrange_rings (&ringsColl); + /* allocating the final geometry */ + if (shp->EffectiveDims == GAIA_XY_Z) + geom = gaiaAllocGeomCollXYZ (); + else if (shp->EffectiveDims == GAIA_XY_M) + geom = gaiaAllocGeomCollXYM (); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + geom = gaiaAllocGeomCollXYZM (); + else + geom = gaiaAllocGeomColl (); + if (shp->EffectiveType == GAIA_POLYGON) + geom->DeclaredType = GAIA_POLYGON; + else + geom->DeclaredType = GAIA_MULTIPOLYGON; + geom->Srid = srid; + shp_build_area (&ringsColl, geom); + } + if (shape == GAIA_SHP_POLYGONZ) + { + /* shape polygon Z */ + rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); + if (rd != 32) + goto error; + rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, + shp->flShp); + if (rd != (sz * 2) - 36) + goto error; + n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); + n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + hasM = 0; + max_size = 38 + (2 * n) + (n1 * 16); /* size [in 16 bits words !!!] ZM */ + min_size = 30 + (2 * n) + (n1 * 12); /* size [in 16 bits words !!!] Z-only */ + if (sz < min_size) + goto error; + if (sz == max_size) + hasM = 1; + base = 8 + (n * 4); + baseZ = base + (n1 * 16) + 16; + baseM = baseZ + (n1 * 8) + 16; + start = 0; + for (ind = 0; ind < n; ind++) + { + if (ind < (n - 1)) + end = + gaiaImport32 (shp->BufShp + 8 + ((ind + 1) * 4), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + else + end = n1; + points = end - start; + if (shp->EffectiveDims == GAIA_XY_Z) + ring = gaiaAllocRingXYZ (points); + else if (shp->EffectiveDims == GAIA_XY_M) + ring = gaiaAllocRingXYM (points); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + ring = gaiaAllocRingXYZM (points); + else + ring = gaiaAllocRing (points); + points = 0; + for (iv = start; iv < end; iv++) + { + x = gaiaImport64 (shp->BufShp + base + (iv * 16), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + y = gaiaImport64 (shp->BufShp + base + (iv * 16) + + 8, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + z = gaiaImport64 (shp->BufShp + baseZ + (iv * 8), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + if (hasM) + m = gaiaImport64 (shp->BufShp + baseM + + (iv * 8), GAIA_LITTLE_ENDIAN, + shp->endian_arch); + else + m = 0.0; + if (m < SHAPEFILE_NO_DATA) + m = 0.0; + if (shp->EffectiveDims == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, points, x, y, z); + } + else if (shp->EffectiveDims == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, points, x, y, m); + } + else if (shp->EffectiveDims == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, points, x, y, z, m); + } + else + { + gaiaSetPoint (ring->Coords, points, x, y); + } + start++; + points++; + } + shp_add_ring (&ringsColl, ring); + } + shp_arrange_rings (&ringsColl); + /* allocating the final geometry */ + if (shp->EffectiveDims == GAIA_XY_Z) + geom = gaiaAllocGeomCollXYZ (); + else if (shp->EffectiveDims == GAIA_XY_M) + geom = gaiaAllocGeomCollXYM (); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + geom = gaiaAllocGeomCollXYZM (); + else + geom = gaiaAllocGeomColl (); + if (shp->EffectiveType == GAIA_POLYGON) + geom->DeclaredType = GAIA_POLYGON; + else + geom->DeclaredType = GAIA_MULTIPOLYGON; + geom->Srid = srid; + shp_build_area (&ringsColl, geom); + } + if (shape == GAIA_SHP_POLYGONM) + { + /* shape polygon M */ + rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); + if (rd != 32) + goto error; + rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, + shp->flShp); + if (rd != (sz * 2) - 36) + goto error; + n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); + n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + hasM = 0; + max_size = 30 + (2 * n) + (n1 * 12); /* size [in 16 bits words !!!] M */ + min_size = 22 + (2 * n) + (n1 * 8); /* size [in 16 bits words !!!] no-M */ + if (sz < min_size) + goto error; + if (sz == max_size) + hasM = 1; + base = 8 + (n * 4); + baseM = base + (n1 * 16) + 16; + start = 0; + for (ind = 0; ind < n; ind++) + { + if (ind < (n - 1)) + end = + gaiaImport32 (shp->BufShp + 8 + ((ind + 1) * 4), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + else + end = n1; + points = end - start; + if (shp->EffectiveDims == GAIA_XY_Z) + ring = gaiaAllocRingXYZ (points); + else if (shp->EffectiveDims == GAIA_XY_M) + ring = gaiaAllocRingXYM (points); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + ring = gaiaAllocRingXYZM (points); + else + ring = gaiaAllocRing (points); + points = 0; + for (iv = start; iv < end; iv++) + { + x = gaiaImport64 (shp->BufShp + base + (iv * 16), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + y = gaiaImport64 (shp->BufShp + base + (iv * 16) + + 8, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + if (hasM) + m = gaiaImport64 (shp->BufShp + baseM + + (iv * 8), GAIA_LITTLE_ENDIAN, + shp->endian_arch); + m = 0.0; + if (m < SHAPEFILE_NO_DATA) + m = 0.0; + if (shp->EffectiveDims == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, points, x, y, 0.0); + } + else if (shp->EffectiveDims == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, points, x, y, m); + } + else if (shp->EffectiveDims == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, points, x, y, + 0.0, m); + } + else + { + gaiaSetPoint (ring->Coords, points, x, y); + } + start++; + points++; + } + shp_add_ring (&ringsColl, ring); + } + shp_arrange_rings (&ringsColl); + /* allocating the final geometry */ + if (shp->EffectiveDims == GAIA_XY_Z) + geom = gaiaAllocGeomCollXYZ (); + else if (shp->EffectiveDims == GAIA_XY_M) + geom = gaiaAllocGeomCollXYM (); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + geom = gaiaAllocGeomCollXYZM (); + else + geom = gaiaAllocGeomColl (); + if (shp->EffectiveType == GAIA_POLYGON) + geom->DeclaredType = GAIA_POLYGON; + else + geom->DeclaredType = GAIA_MULTIPOLYGON; + geom->Srid = srid; + shp_build_area (&ringsColl, geom); + } + if (shape == GAIA_SHP_MULTIPOINT) + { + /* shape multipoint */ + rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); + if (rd != 32) + goto error; + rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, + shp->flShp); + if (rd != (sz * 2) - 36) + goto error; + n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); + if (shp->EffectiveDims == GAIA_XY_Z) + geom = gaiaAllocGeomCollXYZ (); + else if (shp->EffectiveDims == GAIA_XY_M) + geom = gaiaAllocGeomCollXYM (); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + geom = gaiaAllocGeomCollXYZM (); + else + geom = gaiaAllocGeomColl (); + geom->DeclaredType = GAIA_MULTIPOINT; + geom->Srid = srid; + for (iv = 0; iv < n; iv++) + { + x = gaiaImport64 (shp->BufShp + 4 + (iv * 16), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + y = gaiaImport64 (shp->BufShp + 4 + (iv * 16) + 8, + GAIA_LITTLE_ENDIAN, shp->endian_arch); + if (shp->EffectiveDims == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (geom, x, y, 0.0); + else if (shp->EffectiveDims == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (geom, x, y, 0.0); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (geom, x, y, 0.0, 0.0); + else + gaiaAddPointToGeomColl (geom, x, y); + } + } + if (shape == GAIA_SHP_MULTIPOINTZ) + { + /* shape multipoint Z */ + rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); + if (rd != 32) + goto error; + rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, + shp->flShp); + if (rd != (sz * 2) - 36) + goto error; + n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); + hasM = 0; + max_size = 36 + (n * 16); /* size [in 16 bits words !!!] ZM */ + min_size = 28 + (n * 12); /* size [in 16 bits words !!!] Z-only */ + if (sz < min_size) + goto error; + if (sz == max_size) + hasM = 1; + baseZ = 4 + (n * 16) + 16; + baseM = baseZ + (n * 8) + 16; + if (shp->EffectiveDims == GAIA_XY_Z) + geom = gaiaAllocGeomCollXYZ (); + else if (shp->EffectiveDims == GAIA_XY_M) + geom = gaiaAllocGeomCollXYM (); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + geom = gaiaAllocGeomCollXYZM (); + else + geom = gaiaAllocGeomColl (); + geom->DeclaredType = GAIA_MULTIPOINT; + geom->Srid = srid; + for (iv = 0; iv < n; iv++) + { + x = gaiaImport64 (shp->BufShp + 4 + (iv * 16), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + y = gaiaImport64 (shp->BufShp + 4 + (iv * 16) + 8, + GAIA_LITTLE_ENDIAN, shp->endian_arch); + z = gaiaImport64 (shp->BufShp + baseZ + (iv * 8), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + if (hasM) + m = gaiaImport64 (shp->BufShp + baseM + (iv * 8), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + else + m = 0.0; + if (m < SHAPEFILE_NO_DATA) + m = 0.0; + if (shp->EffectiveDims == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (geom, x, y, z); + else if (shp->EffectiveDims == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (geom, x, y, m); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (geom, x, y, z, m); + else + gaiaAddPointToGeomColl (geom, x, y); + } + } + if (shape == GAIA_SHP_MULTIPOINTM) + { + /* shape multipoint M */ + rd = fread (shp->BufShp, sizeof (unsigned char), 32, shp->flShp); + if (rd != 32) + goto error; + rd = fread (shp->BufShp, sizeof (unsigned char), (sz * 2) - 36, + shp->flShp); + if (rd != (sz * 2) - 36) + goto error; + n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, shp->endian_arch); + hasM = 0; + max_size = 28 + (n * 12); /* size [in 16 bits words !!!] M */ + min_size = 20 + (n * 8); /* size [in 16 bits words !!!] no-M */ + if (sz < min_size) + goto error; + if (sz == max_size) + hasM = 1; + baseM = 4 + (n * 16) + 16; + if (shp->EffectiveDims == GAIA_XY_Z) + geom = gaiaAllocGeomCollXYZ (); + else if (shp->EffectiveDims == GAIA_XY_M) + geom = gaiaAllocGeomCollXYM (); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + geom = gaiaAllocGeomCollXYZM (); + else + geom = gaiaAllocGeomColl (); + geom->DeclaredType = GAIA_MULTIPOINT; + geom->Srid = srid; + for (iv = 0; iv < n; iv++) + { + x = gaiaImport64 (shp->BufShp + 4 + (iv * 16), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + y = gaiaImport64 (shp->BufShp + 4 + (iv * 16) + 8, + GAIA_LITTLE_ENDIAN, shp->endian_arch); + if (hasM) + m = gaiaImport64 (shp->BufShp + baseM + (iv * 8), + GAIA_LITTLE_ENDIAN, shp->endian_arch); + else + m = 0.0; + if (m < SHAPEFILE_NO_DATA) + m = 0.0; + if (shp->EffectiveDims == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (geom, x, y, 0.0); + else if (shp->EffectiveDims == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (geom, x, y, m); + else if (shp->EffectiveDims == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (geom, x, y, 0.0, m); + else + gaiaAddPointToGeomColl (geom, x, y); + } + } +/* setting up the current SHP ENTITY */ + null_shape: + gaiaResetDbfEntity (shp->Dbf); + shp->Dbf->RowId = current_row; + shp->Dbf->Geometry = geom; +/* fetching the DBF values */ + pFld = shp->Dbf->First; + while (pFld) + { + if (!parseDbfField (shp->BufDbf, shp->IconvObj, pFld)) + goto conversion_error; + pFld = pFld->Next; + } + if (shp->LastError) + free (shp->LastError); + shp->LastError = NULL; + shp_free_rings (&ringsColl); + return 1; + eof: + if (shp->LastError) + free (shp->LastError); + shp->LastError = NULL; + shp_free_rings (&ringsColl); + return 0; + error: + if (shp->LastError) + free (shp->LastError); + sprintf (errMsg, "'%s' is corrupted / has invalid format", shp->Path); + len = strlen (errMsg); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, errMsg); + shp_free_rings (&ringsColl); + return 0; + conversion_error: + if (shp->LastError) + free (shp->LastError); + sprintf (errMsg, "Invalid character sequence"); + len = strlen (errMsg); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, errMsg); + shp_free_rings (&ringsColl); + return 0; +} + +static void +gaiaSaneClockwise (gaiaPolygonPtr polyg) +{ +/* +/ when exporting POLYGONs to SHAPEFILE, we must guarantee that: +/ - all EXTERIOR RING must be clockwise +/ - all INTERIOR RING must be anti-clockwise +/ +/ this function checks for the above conditions, +/ and if needed inverts the rings +*/ + int ib; + int iv; + int iv2; + double x; + double y; + double z; + double m; + gaiaRingPtr new_ring; + gaiaRingPtr ring = polyg->Exterior; + gaiaClockwise (ring); + if (!(ring->Clockwise)) + { + /* exterior ring needs inversion */ + if (ring->DimensionModel == GAIA_XY_Z) + new_ring = gaiaAllocRingXYZ (ring->Points); + else if (ring->DimensionModel == GAIA_XY_M) + new_ring = gaiaAllocRingXYM (ring->Points); + else if (ring->DimensionModel == GAIA_XY_Z_M) + new_ring = gaiaAllocRingXYZM (ring->Points); + else + new_ring = gaiaAllocRing (ring->Points); + iv2 = 0; + for (iv = ring->Points - 1; iv >= 0; iv--) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (new_ring->Coords, iv2, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (new_ring->Coords, iv2, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (new_ring->Coords, iv2, x, y, z, m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + gaiaSetPoint (new_ring->Coords, iv2, x, y); + } + iv2++; + } + polyg->Exterior = new_ring; + gaiaFreeRing (ring); + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + gaiaClockwise (ring); + if (ring->Clockwise) + { + /* interior ring needs inversion */ + if (ring->DimensionModel == GAIA_XY_Z) + new_ring = gaiaAllocRingXYZ (ring->Points); + else if (ring->DimensionModel == GAIA_XY_M) + new_ring = gaiaAllocRingXYM (ring->Points); + else if (ring->DimensionModel == GAIA_XY_Z_M) + new_ring = gaiaAllocRingXYZM (ring->Points); + else + new_ring = gaiaAllocRing (ring->Points); + iv2 = 0; + for (iv = ring->Points - 1; iv >= 0; iv--) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (new_ring->Coords, iv2, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (new_ring->Coords, iv2, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (new_ring->Coords, iv2, x, y, + z, m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + gaiaSetPoint (new_ring->Coords, iv2, x, y); + } + iv2++; + } + for (iv = 0; iv < ring->Points; iv++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (new_ring->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (new_ring->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (new_ring->Coords, iv, &x, &y, + &z, &m); + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + else + { + gaiaGetPoint (new_ring->Coords, iv, &x, &y); + gaiaSetPoint (ring->Coords, iv, x, y); + } + } + gaiaFreeRing (new_ring); + } + } +} + +GAIAGEO_DECLARE int +gaiaWriteShpEntity (gaiaShapefilePtr shp, gaiaDbfListPtr entity) +{ +/* trying to write an entity into shapefile */ + char dummy[128]; + char fmt[16]; + int endian_arch = shp->endian_arch; + gaiaDbfFieldPtr fld; + int iv; + int tot_ln; + int tot_v; + int tot_pts; + int this_size; + int ix; + double x; + double y; + double z; + double m; + int hasM; + double minZ; + double maxZ; + double minM; + double maxM; +#if !defined(__MINGW32__) && defined(_WIN32) + const char *pBuf; +#else /* not WIN32 */ + char *pBuf; +#endif + size_t len; + size_t utf8len; + char *pUtf8buf; + char buf[512]; + char utf8buf[2048]; +/* writing the DBF record */ + memset (shp->BufDbf, '\0', shp->DbfReclen); + *(shp->BufDbf) = ' '; /* in DBF first byte of each row marks for validity or deletion */ + fld = entity->First; + while (fld) + { + /* transferring field values */ + switch (fld->Type) + { + case 'L': + if (!(fld->Value)) + *(shp->BufDbf + fld->Offset) = '?'; + else if (fld->Value->Type != GAIA_INT_VALUE) + *(shp->BufDbf + fld->Offset + 1) = '?'; + else + { + if (fld->Value->IntValue == 0) + *(shp->BufDbf + fld->Offset + 1) = 'N'; + else + *(shp->BufDbf + fld->Offset + 1) = 'Y'; + } + break; + case 'D': + memset (shp->BufDbf + fld->Offset + 1, '0', 8); + if (fld->Value) + { + if (fld->Value->Type == GAIA_TEXT_VALUE) + { + if (strlen (fld->Value->TxtValue) == 8) + memcpy (shp->BufDbf + fld->Offset + 1, + fld->Value->TxtValue, 8); + } + } + break; + case 'C': + memset (shp->BufDbf + fld->Offset + 1, ' ', fld->Length); + if (fld->Value) + { + if (fld->Value->Type == GAIA_TEXT_VALUE) + { + strcpy (buf, fld->Value->TxtValue); + len = strlen (buf); + utf8len = 2048; + pBuf = buf; + pUtf8buf = utf8buf; + if (iconv + ((iconv_t) (shp->IconvObj), &pBuf, &len, + &pUtf8buf, &utf8len) == (size_t) (-1)) + goto conversion_error; + memcpy (buf, utf8buf, 2048 - utf8len); + buf[2048 - utf8len] = '\0'; + if (strlen (buf) < fld->Length) + memcpy (shp->BufDbf + fld->Offset + 1, buf, + strlen (buf)); + else + memcpy (shp->BufDbf + fld->Offset + 1, buf, + fld->Length); + } + } + break; + case 'N': + memset (shp->BufDbf + fld->Offset + 1, '\0', fld->Length); + if (fld->Value) + { + if (fld->Value->Type == GAIA_INT_VALUE) + { + sprintf (dummy, FRMT64, fld->Value->IntValue); + if (strlen (dummy) <= fld->Length) + memcpy (shp->BufDbf + fld->Offset + 1, + dummy, strlen (dummy)); + } + if (fld->Value->Type == GAIA_DOUBLE_VALUE) + { + sprintf (fmt, "%%1.%df", fld->Decimals); + sprintf (dummy, fmt, fld->Value->DblValue); + if (strlen (dummy) <= fld->Length) + memcpy (shp->BufDbf + fld->Offset + 1, + dummy, strlen (dummy)); + } + } + break; + }; + fld = fld->Next; + } + if (!(entity->Geometry)) + { + /* exporting a NULL Shape */ + gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ + gaiaExport32 (shp->BufShp + 4, 2, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ + fwrite (shp->BufShp, 1, 8, shp->flShx); + (shp->ShxSize) += 4; /* updating current SHX file position [in 16 bits words !!!] */ + gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ + gaiaExport32 (shp->BufShp + 4, 2, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ + gaiaExport32 (shp->BufShp + 8, GAIA_SHP_NULL, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = NULL */ + fwrite (shp->BufShp, 1, 12, shp->flShp); + (shp->ShpSize) += 6; /* updating current SHP file position [in 16 bits words !!!] */ + } + else + { + /* updates the shapefile main MBR-BBOX */ + gaiaMbrGeometry (entity->Geometry); + if (entity->Geometry->MinX < shp->MinX) + shp->MinX = entity->Geometry->MinX; + if (entity->Geometry->MaxX > shp->MaxX) + shp->MaxX = entity->Geometry->MaxX; + if (entity->Geometry->MinY < shp->MinY) + shp->MinY = entity->Geometry->MinY; + if (entity->Geometry->MaxY > shp->MaxY) + shp->MaxY = entity->Geometry->MaxY; + if (shp->Shape == GAIA_SHP_POINT) + { + /* this one is expected to be a POINT */ + gaiaPointPtr pt = entity->Geometry->FirstPoint; + if (!pt) + { + strcpy (dummy, + "a POINT is expected, but there is no POINT in geometry"); + if (shp->LastError) + free (shp->LastError); + len = strlen (dummy); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, dummy); + return 0; + } + /* inserting POINT entity into SHX file */ + gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ + gaiaExport32 (shp->BufShp + 4, 10, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ + fwrite (shp->BufShp, 1, 8, shp->flShx); + (shp->ShxSize) += 4; /* updating current SHX file position [in 16 bits words !!!] */ + /* inserting POINT into SHP file */ + gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ + gaiaExport32 (shp->BufShp + 4, 10, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ + gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POINT, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POINT */ + gaiaExport64 (shp->BufShp + 12, pt->X, GAIA_LITTLE_ENDIAN, endian_arch); /* exports X coordinate */ + gaiaExport64 (shp->BufShp + 20, pt->Y, GAIA_LITTLE_ENDIAN, endian_arch); /* exports Y coordinate */ + fwrite (shp->BufShp, 1, 28, shp->flShp); + (shp->ShpSize) += 14; /* updating current SHP file position [in 16 bits words !!!] */ + } + if (shp->Shape == GAIA_SHP_POINTZ) + { + /* this one is expected to be a POINT Z */ + gaiaPointPtr pt = entity->Geometry->FirstPoint; + if (!pt) + { + strcpy (dummy, + "a POINT is expected, but there is no POINT in geometry"); + if (shp->LastError) + free (shp->LastError); + len = strlen (dummy); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, dummy); + return 0; + } + /* inserting POINT Z entity into SHX file */ + gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ + gaiaExport32 (shp->BufShp + 4, 18, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ + fwrite (shp->BufShp, 1, 8, shp->flShx); + (shp->ShxSize) += 4; /* updating current SHX file position [in 16 bits words !!!] */ + /* inserting POINT into SHP file */ + gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ + gaiaExport32 (shp->BufShp + 4, 18, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ + gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POINTZ, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POINT Z */ + gaiaExport64 (shp->BufShp + 12, pt->X, GAIA_LITTLE_ENDIAN, endian_arch); /* exports X coordinate */ + gaiaExport64 (shp->BufShp + 20, pt->Y, GAIA_LITTLE_ENDIAN, endian_arch); /* exports Y coordinate */ + gaiaExport64 (shp->BufShp + 28, pt->Z, GAIA_LITTLE_ENDIAN, endian_arch); /* exports Z coordinate */ + gaiaExport64 (shp->BufShp + 36, pt->M, GAIA_LITTLE_ENDIAN, endian_arch); /* exports M coordinate */ + fwrite (shp->BufShp, 1, 44, shp->flShp); + (shp->ShpSize) += 22; /* updating current SHP file position [in 16 bits words !!!] */ + } + if (shp->Shape == GAIA_SHP_POINTM) + { + /* this one is expected to be a POINT M */ + gaiaPointPtr pt = entity->Geometry->FirstPoint; + if (!pt) + { + strcpy (dummy, + "a POINT is expected, but there is no POINT in geometry"); + if (shp->LastError) + free (shp->LastError); + len = strlen (dummy); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, dummy); + return 0; + } + /* inserting POINT entity into SHX file */ + gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ + gaiaExport32 (shp->BufShp + 4, 14, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ + fwrite (shp->BufShp, 1, 8, shp->flShx); + (shp->ShxSize) += 4; /* updating current SHX file position [in 16 bits words !!!] */ + /* inserting POINT into SHP file */ + gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ + gaiaExport32 (shp->BufShp + 4, 14, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ + gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POINTM, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POINT M */ + gaiaExport64 (shp->BufShp + 12, pt->X, GAIA_LITTLE_ENDIAN, endian_arch); /* exports X coordinate */ + gaiaExport64 (shp->BufShp + 20, pt->Y, GAIA_LITTLE_ENDIAN, endian_arch); /* exports Y coordinate */ + gaiaExport64 (shp->BufShp + 28, pt->Y, GAIA_LITTLE_ENDIAN, endian_arch); /* exports M coordinate */ + fwrite (shp->BufShp, 1, 36, shp->flShp); + (shp->ShpSize) += 18; /* updating current SHP file position [in 16 bits words !!!] */ + } + if (shp->Shape == GAIA_SHP_POLYLINE) + { + /* this one is expected to be a LINESTRING / MULTILINESTRING */ + gaiaLinestringPtr line; + tot_ln = 0; + tot_v = 0; + line = entity->Geometry->FirstLinestring; + while (line) + { + /* computes # lines and total # points */ + tot_v += line->Points; + tot_ln++; + line = line->Next; + } + if (!tot_ln) + { + strcpy (dummy, + "a LINESTRING is expected, but there is no LINESTRING in geometry"); + if (shp->LastError) + free (shp->LastError); + len = strlen (dummy); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, dummy); + return 0; + } + this_size = 22 + (2 * tot_ln) + (tot_v * 8); /* size [in 16 bits words !!!] for this SHP entity */ + if ((this_size * 2) + 1024 > shp->ShpBfsz) + { + /* current buffer is too small; we need to allocate a bigger one */ + free (shp->BufShp); + shp->ShpBfsz = (this_size * 2) + 1024; + shp->BufShp = malloc (shp->ShpBfsz); + } + /* inserting LINESTRING or MULTILINESTRING in SHX file */ + gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ + fwrite (shp->BufShp, 1, 8, shp->flShx); + (shp->ShxSize) += 4; + /* inserting LINESTRING or MULTILINESTRING in SHP file */ + gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ + gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POLYLINE, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POLYLINE */ + gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ + gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport32 (shp->BufShp + 44, tot_ln, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # lines in this polyline */ + gaiaExport32 (shp->BufShp + 48, tot_v, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ + tot_v = 0; /* resets points counter */ + ix = 52; /* sets current buffer offset */ + line = entity->Geometry->FirstLinestring; + while (line) + { + /* exports start point index for each line */ + gaiaExport32 (shp->BufShp + ix, tot_v, + GAIA_LITTLE_ENDIAN, endian_arch); + tot_v += line->Points; + ix += 4; + line = line->Next; + } + line = entity->Geometry->FirstLinestring; + while (line) + { + /* exports points for each line */ + for (iv = 0; iv < line->Points; iv++) + { + /* exports a POINT [x,y] */ + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, + &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, + &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, + &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, x, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, y, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + } + line = line->Next; + } + fwrite (shp->BufShp, 1, ix, shp->flShp); + (shp->ShpSize) += (ix / 2); /* updating current SHP file position [in 16 bits words !!!] */ + } + if (shp->Shape == GAIA_SHP_POLYLINEZ) + { + /* this one is expected to be a LINESTRING / MULTILINESTRING Z */ + gaiaLinestringPtr line; + gaiaZRangeGeometry (entity->Geometry, &minZ, &maxZ); + gaiaMRangeGeometry (entity->Geometry, &minM, &maxM); + tot_ln = 0; + tot_v = 0; + line = entity->Geometry->FirstLinestring; + while (line) + { + /* computes # lines and total # points */ + tot_v += line->Points; + tot_ln++; + line = line->Next; + } + if (!tot_ln) + { + strcpy (dummy, + "a LINESTRING is expected, but there is no LINESTRING in geometry"); + if (shp->LastError) + free (shp->LastError); + len = strlen (dummy); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, dummy); + return 0; + } + hasM = 0; + if (shp->EffectiveDims == GAIA_XY_M + || shp->EffectiveDims == GAIA_XY_Z_M) + hasM = 1; + if (hasM) + this_size = 38 + (2 * tot_ln) + (tot_v * 16); /* size [in 16 bits words !!!] ZM */ + else + this_size = 30 + (2 * tot_ln) + (tot_v * 12); /* size [in 16 bits words !!!] Z-only */ + if ((this_size * 2) + 1024 > shp->ShpBfsz) + { + /* current buffer is too small; we need to allocate a bigger one */ + free (shp->BufShp); + shp->ShpBfsz = (this_size * 2) + 1024; + shp->BufShp = malloc (shp->ShpBfsz); + } + /* inserting LINESTRING or MULTILINESTRING in SHX file */ + gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ + fwrite (shp->BufShp, 1, 8, shp->flShx); + (shp->ShxSize) += 4; + /* inserting LINESTRING or MULTILINESTRING in SHP file */ + gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ + gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POLYLINEZ, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POLYLINE Z */ + gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ + gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport32 (shp->BufShp + 44, tot_ln, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # lines in this polyline */ + gaiaExport32 (shp->BufShp + 48, tot_v, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ + tot_v = 0; /* resets points counter */ + ix = 52; /* sets current buffer offset */ + line = entity->Geometry->FirstLinestring; + while (line) + { + /* exports start point index for each line */ + gaiaExport32 (shp->BufShp + ix, tot_v, + GAIA_LITTLE_ENDIAN, endian_arch); + tot_v += line->Points; + ix += 4; + line = line->Next; + } + line = entity->Geometry->FirstLinestring; + while (line) + { + /* exports points for each line */ + for (iv = 0; iv < line->Points; iv++) + { + /* exports a POINT [x,y] */ + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, + &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, + &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, + &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, x, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, y, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + } + line = line->Next; + } + /* exporting the Z-range [min/max] */ + gaiaExport64 (shp->BufShp + ix, minZ, GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, maxZ, GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + line = entity->Geometry->FirstLinestring; + while (line) + { + /* exports Z-values for each line */ + for (iv = 0; iv < line->Points; iv++) + { + /* exports Z-value */ + z = 0.0; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, + &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, + &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, + &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, z, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + } + line = line->Next; + } + if (hasM) + { + /* exporting the M-range [min/max] */ + gaiaExport64 (shp->BufShp + ix, minM, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, maxM, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + line = entity->Geometry->FirstLinestring; + while (line) + { + /* exports M-values for each line */ + for (iv = 0; iv < line->Points; iv++) + { + /* exports M-value */ + m = 0.0; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, + &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, + &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, + &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, m, + GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + } + line = line->Next; + } + } + fwrite (shp->BufShp, 1, ix, shp->flShp); + (shp->ShpSize) += (ix / 2); /* updating current SHP file position [in 16 bits words !!!] */ + } + if (shp->Shape == GAIA_SHP_POLYLINEM) + { + /* this one is expected to be a LINESTRING / MULTILINESTRING M */ + gaiaLinestringPtr line; + gaiaMRangeGeometry (entity->Geometry, &minM, &maxM); + tot_ln = 0; + tot_v = 0; + line = entity->Geometry->FirstLinestring; + while (line) + { + /* computes # lines and total # points */ + tot_v += line->Points; + tot_ln++; + line = line->Next; + } + if (!tot_ln) + { + strcpy (dummy, + "a LINESTRING is expected, but there is no LINESTRING in geometry"); + if (shp->LastError) + free (shp->LastError); + len = strlen (dummy); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, dummy); + return 0; + } + this_size = 30 + (2 * tot_ln) + (tot_v * 12); /* size [in 16 bits words !!!] for this SHP entity */ + if ((this_size * 2) + 1024 > shp->ShpBfsz) + { + /* current buffer is too small; we need to allocate a bigger one */ + free (shp->BufShp); + shp->ShpBfsz = (this_size * 2) + 1024; + shp->BufShp = malloc (shp->ShpBfsz); + } + /* inserting LINESTRING or MULTILINESTRING in SHX file */ + gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ + fwrite (shp->BufShp, 1, 8, shp->flShx); + (shp->ShxSize) += 4; + /* inserting LINESTRING or MULTILINESTRING in SHP file */ + gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ + gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POLYLINEM, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POLYLINE M */ + gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ + gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport32 (shp->BufShp + 44, tot_ln, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # lines in this polyline */ + gaiaExport32 (shp->BufShp + 48, tot_v, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ + tot_v = 0; /* resets points counter */ + ix = 52; /* sets current buffer offset */ + line = entity->Geometry->FirstLinestring; + while (line) + { + /* exports start point index for each line */ + gaiaExport32 (shp->BufShp + ix, tot_v, + GAIA_LITTLE_ENDIAN, endian_arch); + tot_v += line->Points; + ix += 4; + line = line->Next; + } + line = entity->Geometry->FirstLinestring; + while (line) + { + /* exports points for each line */ + for (iv = 0; iv < line->Points; iv++) + { + /* exports a POINT [x,y] */ + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, + &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, + &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, + &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, x, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, y, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + } + line = line->Next; + } + /* exporting the M-range [min/max] */ + gaiaExport64 (shp->BufShp + ix, minM, GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, maxM, GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + line = entity->Geometry->FirstLinestring; + while (line) + { + /* exports M-values for each line */ + for (iv = 0; iv < line->Points; iv++) + { + /* exports M-value */ + m = 0.0; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, + &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, + &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, + &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, m, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + } + line = line->Next; + } + fwrite (shp->BufShp, 1, ix, shp->flShp); + (shp->ShpSize) += (ix / 2); /* updating current SHP file position [in 16 bits words !!!] */ + } + if (shp->Shape == GAIA_SHP_POLYGON) + { + /* this one is expected to be a POLYGON or a MULTIPOLYGON */ + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + int ib; + tot_ln = 0; + tot_v = 0; + polyg = entity->Geometry->FirstPolygon; + while (polyg) + { + /* computes # rings and total # points */ + gaiaSaneClockwise (polyg); /* we must assure that exterior ring is clockwise, and interior rings are anti-clockwise */ + ring = polyg->Exterior; /* this one is the exterior ring */ + tot_v += ring->Points; + tot_ln++; + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* that ones are the interior rings */ + ring = polyg->Interiors + ib; + tot_v += ring->Points; + tot_ln++; + } + polyg = polyg->Next; + } + if (!tot_ln) + { + strcpy (dummy, + "a POLYGON is expected, but there is no POLYGON in geometry"); + if (shp->LastError) + free (shp->LastError); + len = strlen (dummy); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, dummy); + return 0; + } + this_size = 22 + (2 * tot_ln) + (tot_v * 8); /* size [in 16 bits words !!!] for this SHP entity */ + if ((this_size * 2) + 1024 > shp->ShpBfsz) + { + /* current buffer is too small; we need to allocate a bigger one */ + free (shp->BufShp); + shp->ShpBfsz = (this_size * 2) + 1024; + shp->BufShp = malloc (shp->ShpBfsz); + } + /* inserting POLYGON or MULTIPOLYGON in SHX file */ + gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ + fwrite (shp->BufShp, 1, 8, shp->flShx); + (shp->ShxSize) += 4; + /* inserting POLYGON or MULTIPOLYGON in SHP file */ + gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ + gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POLYGON, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POLYGON */ + gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ + gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport32 (shp->BufShp + 44, tot_ln, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # rings in this polygon */ + gaiaExport32 (shp->BufShp + 48, tot_v, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ + tot_v = 0; /* resets points counter */ + ix = 52; /* sets current buffer offset */ + polyg = entity->Geometry->FirstPolygon; + while (polyg) + { + /* exports start point index for each line */ + ring = polyg->Exterior; /* this one is the exterior ring */ + gaiaExport32 (shp->BufShp + ix, tot_v, + GAIA_LITTLE_ENDIAN, endian_arch); + tot_v += ring->Points; + ix += 4; + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* that ones are the interior rings */ + ring = polyg->Interiors + ib; + gaiaExport32 (shp->BufShp + ix, tot_v, + GAIA_LITTLE_ENDIAN, endian_arch); + tot_v += ring->Points; + ix += 4; + } + polyg = polyg->Next; + } + polyg = entity->Geometry->FirstPolygon; + while (polyg) + { + /* exports points for each ring */ + ring = polyg->Exterior; /* this one is the exterior ring */ + for (iv = 0; iv < ring->Points; iv++) + { + /* exports a POINT [x,y] - exterior ring */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, + &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, + &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, + &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, x, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, y, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* that ones are the interior rings */ + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + /* exports a POINT [x,y] - interior ring */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, + &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, + &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, + &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, x, + GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, y, + GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + } + } + polyg = polyg->Next; + } + fwrite (shp->BufShp, 1, ix, shp->flShp); + (shp->ShpSize) += (ix / 2); + } + if (shp->Shape == GAIA_SHP_POLYGONZ) + { + /* this one is expected to be a POLYGON or a MULTIPOLYGON Z */ + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + int ib; + gaiaZRangeGeometry (entity->Geometry, &minZ, &maxZ); + gaiaMRangeGeometry (entity->Geometry, &minM, &maxM); + tot_ln = 0; + tot_v = 0; + polyg = entity->Geometry->FirstPolygon; + while (polyg) + { + /* computes # rings and total # points */ + gaiaSaneClockwise (polyg); /* we must assure that exterior ring is clockwise, and interior rings are anti-clockwise */ + ring = polyg->Exterior; /* this one is the exterior ring */ + tot_v += ring->Points; + tot_ln++; + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* that ones are the interior rings */ + ring = polyg->Interiors + ib; + tot_v += ring->Points; + tot_ln++; + } + polyg = polyg->Next; + } + if (!tot_ln) + { + strcpy (dummy, + "a POLYGON is expected, but there is no POLYGON in geometry"); + if (shp->LastError) + free (shp->LastError); + len = strlen (dummy); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, dummy); + return 0; + } + hasM = 0; + if (shp->EffectiveDims == GAIA_XY_M + || shp->EffectiveDims == GAIA_XY_Z_M) + hasM = 1; + if (hasM) + this_size = 38 + (2 * tot_ln) + (tot_v * 16); /* size [in 16 bits words !!!] ZM */ + else + this_size = 30 + (2 * tot_ln) + (tot_v * 12); /* size [in 16 bits words !!!] Z-only */ + if ((this_size * 2) + 1024 > shp->ShpBfsz) + { + /* current buffer is too small; we need to allocate a bigger one */ + free (shp->BufShp); + shp->ShpBfsz = (this_size * 2) + 1024; + shp->BufShp = malloc (shp->ShpBfsz); + } + /* inserting POLYGON or MULTIPOLYGON in SHX file */ + gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ + fwrite (shp->BufShp, 1, 8, shp->flShx); + (shp->ShxSize) += 4; + /* inserting POLYGON or MULTIPOLYGON in SHP file */ + gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ + gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POLYGONZ, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POLYGON Z */ + gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ + gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport32 (shp->BufShp + 44, tot_ln, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # rings in this polygon */ + gaiaExport32 (shp->BufShp + 48, tot_v, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ + tot_v = 0; /* resets points counter */ + ix = 52; /* sets current buffer offset */ + polyg = entity->Geometry->FirstPolygon; + while (polyg) + { + /* exports start point index for each line */ + ring = polyg->Exterior; /* this one is the exterior ring */ + gaiaExport32 (shp->BufShp + ix, tot_v, + GAIA_LITTLE_ENDIAN, endian_arch); + tot_v += ring->Points; + ix += 4; + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* that ones are the interior rings */ + ring = polyg->Interiors + ib; + gaiaExport32 (shp->BufShp + ix, tot_v, + GAIA_LITTLE_ENDIAN, endian_arch); + tot_v += ring->Points; + ix += 4; + } + polyg = polyg->Next; + } + polyg = entity->Geometry->FirstPolygon; + while (polyg) + { + /* exports points for each ring */ + ring = polyg->Exterior; /* this one is the exterior ring */ + for (iv = 0; iv < ring->Points; iv++) + { + /* exports a POINT [x,y] - exterior ring */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, + &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, + &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, + &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, x, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, y, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* that ones are the interior rings */ + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + /* exports a POINT [x,y] - interior ring */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, + &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, + &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, + &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, x, + GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, y, + GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + } + } + polyg = polyg->Next; + } + /* exporting the Z-range [min/max] */ + gaiaExport64 (shp->BufShp + ix, minZ, GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, maxZ, GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + polyg = entity->Geometry->FirstPolygon; + while (polyg) + { + /* exports Z-values for each ring */ + ring = polyg->Exterior; /* this one is the exterior ring */ + for (iv = 0; iv < ring->Points; iv++) + { + /* exports Z-values - exterior ring */ + z = 0.0; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, + &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, + &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, + &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, z, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* that ones are the interior rings */ + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + /* exports Z-values - interior ring */ + z = 0.0; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, + &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, + &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, + &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, z, + GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + } + } + polyg = polyg->Next; + } + if (hasM) + { + /* exporting the M-range [min/max] */ + gaiaExport64 (shp->BufShp + ix, minM, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, maxM, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + polyg = entity->Geometry->FirstPolygon; + while (polyg) + { + /* exports M-values for each ring */ + ring = polyg->Exterior; /* this one is the exterior ring */ + for (iv = 0; iv < ring->Points; iv++) + { + /* exports M-values - exterior ring */ + m = 0.0; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, + &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, + &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, + &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, m, + GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* that ones are the interior rings */ + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + /* exports M-values - interior ring */ + m = 0.0; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, + iv, &x, &y, &z); + } + else if (ring->DimensionModel == + GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, + iv, &x, &y, &m); + } + else if (ring->DimensionModel == + GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, + iv, &x, &y, &z, + &m); + } + else + { + gaiaGetPoint (ring->Coords, + iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, m, + GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + } + } + polyg = polyg->Next; + } + } + fwrite (shp->BufShp, 1, ix, shp->flShp); + (shp->ShpSize) += (ix / 2); + } + if (shp->Shape == GAIA_SHP_POLYGONM) + { + /* this one is expected to be a POLYGON or a MULTIPOLYGON M */ + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + int ib; + gaiaMRangeGeometry (entity->Geometry, &minM, &maxM); + tot_ln = 0; + tot_v = 0; + polyg = entity->Geometry->FirstPolygon; + while (polyg) + { + /* computes # rings and total # points */ + gaiaSaneClockwise (polyg); /* we must assure that exterior ring is clockwise, and interior rings are anti-clockwise */ + ring = polyg->Exterior; /* this one is the exterior ring */ + tot_v += ring->Points; + tot_ln++; + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* that ones are the interior rings */ + ring = polyg->Interiors + ib; + tot_v += ring->Points; + tot_ln++; + } + polyg = polyg->Next; + } + if (!tot_ln) + { + strcpy (dummy, + "a POLYGON is expected, but there is no POLYGON in geometry"); + if (shp->LastError) + free (shp->LastError); + len = strlen (dummy); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, dummy); + return 0; + } + this_size = 30 + (2 * tot_ln) + (tot_v * 12); /* size [in 16 bits words !!!] for this SHP entity */ + if ((this_size * 2) + 1024 > shp->ShpBfsz) + { + /* current buffer is too small; we need to allocate a bigger one */ + free (shp->BufShp); + shp->ShpBfsz = (this_size * 2) + 1024; + shp->BufShp = malloc (shp->ShpBfsz); + } + /* inserting POLYGON or MULTIPOLYGON in SHX file */ + gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ + fwrite (shp->BufShp, 1, 8, shp->flShx); + (shp->ShxSize) += 4; + /* inserting POLYGON or MULTIPOLYGON in SHP file */ + gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ + gaiaExport32 (shp->BufShp + 8, GAIA_SHP_POLYGONM, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = POLYGON M */ + gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ + gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport32 (shp->BufShp + 44, tot_ln, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # rings in this polygon */ + gaiaExport32 (shp->BufShp + 48, tot_v, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ + tot_v = 0; /* resets points counter */ + ix = 52; /* sets current buffer offset */ + polyg = entity->Geometry->FirstPolygon; + while (polyg) + { + /* exports start point index for each line */ + ring = polyg->Exterior; /* this one is the exterior ring */ + gaiaExport32 (shp->BufShp + ix, tot_v, + GAIA_LITTLE_ENDIAN, endian_arch); + tot_v += ring->Points; + ix += 4; + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* that ones are the interior rings */ + ring = polyg->Interiors + ib; + gaiaExport32 (shp->BufShp + ix, tot_v, + GAIA_LITTLE_ENDIAN, endian_arch); + tot_v += ring->Points; + ix += 4; + } + polyg = polyg->Next; + } + polyg = entity->Geometry->FirstPolygon; + while (polyg) + { + /* exports points for each ring */ + ring = polyg->Exterior; /* this one is the exterior ring */ + for (iv = 0; iv < ring->Points; iv++) + { + /* exports a POINT [x,y] - exterior ring */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, + &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, + &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, + &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, x, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, y, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* that ones are the interior rings */ + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + /* exports a POINT [x,y] - interior ring */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, + &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, + &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, + &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, x, + GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, y, + GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + } + } + polyg = polyg->Next; + } + /* exporting the M-range [min/max] */ + gaiaExport64 (shp->BufShp + ix, minM, GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, maxM, GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + polyg = entity->Geometry->FirstPolygon; + while (polyg) + { + /* exports M-values for each ring */ + ring = polyg->Exterior; /* this one is the exterior ring */ + for (iv = 0; iv < ring->Points; iv++) + { + /* exports M-values - exterior ring */ + m = 0.0; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, + &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, + &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, + &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, m, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* that ones are the interior rings */ + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + /* exports M-values - interior ring */ + m = 0.0; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, + &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, + &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, + &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + gaiaExport64 (shp->BufShp + ix, m, + GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + } + } + polyg = polyg->Next; + } + fwrite (shp->BufShp, 1, ix, shp->flShp); + (shp->ShpSize) += (ix / 2); + } + if (shp->Shape == GAIA_SHP_MULTIPOINT) + { + /* this one is expected to be a MULTIPOINT */ + gaiaPointPtr pt; + tot_pts = 0; + pt = entity->Geometry->FirstPoint; + while (pt) + { + /* computes # points */ + tot_pts++; + pt = pt->Next; + } + if (!tot_pts) + { + strcpy (dummy, + "a MULTIPOINT is expected, but there is no POINT/MULTIPOINT in geometry"); + if (shp->LastError) + free (shp->LastError); + len = strlen (dummy); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, dummy); + return 0; + } + this_size = 20 + (tot_pts * 8); /* size [in 16 bits words !!!] for this SHP entity */ + if ((this_size * 2) + 1024 > shp->ShpBfsz) + { + /* current buffer is too small; we need to allocate a bigger one */ + free (shp->BufShp); + shp->ShpBfsz = (this_size * 2) + 1024; + shp->BufShp = malloc (shp->ShpBfsz); + } + /* inserting MULTIPOINT in SHX file */ + gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ + fwrite (shp->BufShp, 1, 8, shp->flShx); + (shp->ShxSize) += 4; + /* inserting MULTIPOINT in SHP file */ + gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ + gaiaExport32 (shp->BufShp + 8, GAIA_SHP_MULTIPOINT, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = MULTIPOINT */ + gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ + gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport32 (shp->BufShp + 44, tot_pts, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ + ix = 48; /* sets current buffer offset */ + pt = entity->Geometry->FirstPoint; + while (pt) + { + /* exports each point */ + gaiaExport64 (shp->BufShp + ix, pt->X, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, pt->Y, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + pt = pt->Next; + } + fwrite (shp->BufShp, 1, ix, shp->flShp); + (shp->ShpSize) += (ix / 2); /* updating current SHP file position [in 16 bits words !!!] */ + } + if (shp->Shape == GAIA_SHP_MULTIPOINTZ) + { + /* this one is expected to be a MULTIPOINT Z */ + gaiaPointPtr pt; + gaiaZRangeGeometry (entity->Geometry, &minZ, &maxZ); + gaiaMRangeGeometry (entity->Geometry, &minM, &maxM); + tot_pts = 0; + pt = entity->Geometry->FirstPoint; + while (pt) + { + /* computes # points */ + tot_pts++; + pt = pt->Next; + } + if (!tot_pts) + { + strcpy (dummy, + "a MULTIPOINT is expected, but there is no POINT/MULTIPOINT in geometry"); + if (shp->LastError) + free (shp->LastError); + len = strlen (dummy); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, dummy); + return 0; + } + hasM = 0; + if (shp->EffectiveDims == GAIA_XY_M + || shp->EffectiveDims == GAIA_XY_Z_M) + hasM = 1; + if (hasM) + this_size = 36 + (tot_pts * 16); /* size [in 16 bits words !!!] ZM */ + else + this_size = 28 + (tot_pts * 12); /* size [in 16 bits words !!!] Z-only */ + if ((this_size * 2) + 1024 > shp->ShpBfsz) + { + /* current buffer is too small; we need to allocate a bigger one */ + free (shp->BufShp); + shp->ShpBfsz = (this_size * 2) + 1024; + shp->BufShp = malloc (shp->ShpBfsz); + } + /* inserting MULTIPOINT in SHX file */ + gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ + fwrite (shp->BufShp, 1, 8, shp->flShx); + (shp->ShxSize) += 4; + /* inserting MULTIPOINT in SHP file */ + gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ + gaiaExport32 (shp->BufShp + 8, GAIA_SHP_MULTIPOINTZ, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = MULTIPOINT Z */ + gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ + gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport32 (shp->BufShp + 44, tot_pts, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ + ix = 48; /* sets current buffer offset */ + pt = entity->Geometry->FirstPoint; + while (pt) + { + /* exports each point */ + gaiaExport64 (shp->BufShp + ix, pt->X, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, pt->Y, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + pt = pt->Next; + } + /* exporting the Z-range [min/max] */ + gaiaExport64 (shp->BufShp + ix, minZ, GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, maxZ, GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + pt = entity->Geometry->FirstPoint; + while (pt) + { + /* exports Z-values */ + gaiaExport64 (shp->BufShp + ix, pt->Z, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + pt = pt->Next; + } + if (hasM) + { + /* exporting the M-range [min/max] */ + gaiaExport64 (shp->BufShp + ix, minM, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, maxM, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + pt = entity->Geometry->FirstPoint; + while (pt) + { + /* exports M-values */ + gaiaExport64 (shp->BufShp + ix, pt->M, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + pt = pt->Next; + } + } + fwrite (shp->BufShp, 1, ix, shp->flShp); + (shp->ShpSize) += (ix / 2); /* updating current SHP file position [in 16 bits words !!!] */ + } + if (shp->Shape == GAIA_SHP_MULTIPOINTM) + { + /* this one is expected to be a MULTIPOINT M */ + gaiaPointPtr pt; + gaiaMRangeGeometry (entity->Geometry, &minM, &maxM); + tot_pts = 0; + pt = entity->Geometry->FirstPoint; + while (pt) + { + /* computes # points */ + tot_pts++; + pt = pt->Next; + } + if (!tot_pts) + { + strcpy (dummy, + "a MULTIPOINT is expected, but there is no POINT/MULTIPOINT in geometry"); + if (shp->LastError) + free (shp->LastError); + len = strlen (dummy); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, dummy); + return 0; + } + this_size = 28 + (tot_pts * 12); /* size [in 16 bits words !!!] for this SHP entity */ + if ((this_size * 2) + 1024 > shp->ShpBfsz) + { + /* current buffer is too small; we need to allocate a bigger one */ + free (shp->BufShp); + shp->ShpBfsz = (this_size * 2) + 1024; + shp->BufShp = malloc (shp->ShpBfsz); + } + /* inserting MULTIPOINT in SHX file */ + gaiaExport32 (shp->BufShp, shp->ShpSize, GAIA_BIG_ENDIAN, endian_arch); /* exports current SHP file position */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entitiy size [in 16 bits words !!!] */ + fwrite (shp->BufShp, 1, 8, shp->flShx); + (shp->ShxSize) += 4; + /* inserting MULTIPOINT in SHP file */ + gaiaExport32 (shp->BufShp, shp->DbfRecno + 1, GAIA_BIG_ENDIAN, endian_arch); /* exports entity ID */ + gaiaExport32 (shp->BufShp + 4, this_size, GAIA_BIG_ENDIAN, endian_arch); /* exports entity size [in 16 bits words !!!] */ + gaiaExport32 (shp->BufShp + 8, GAIA_SHP_MULTIPOINTM, GAIA_LITTLE_ENDIAN, endian_arch); /* exports geometry type = MULTIPOINT M */ + gaiaExport64 (shp->BufShp + 12, entity->Geometry->MinX, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the MBR for this geometry */ + gaiaExport64 (shp->BufShp + 20, entity->Geometry->MinY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 28, entity->Geometry->MaxX, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (shp->BufShp + 36, entity->Geometry->MaxY, + GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport32 (shp->BufShp + 44, tot_pts, GAIA_LITTLE_ENDIAN, endian_arch); /* exports total # points */ + ix = 48; /* sets current buffer offset */ + pt = entity->Geometry->FirstPoint; + while (pt) + { + /* exports each point */ + gaiaExport64 (shp->BufShp + ix, pt->X, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, pt->Y, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + pt = pt->Next; + } + /* exporting the M-range [min/max] */ + gaiaExport64 (shp->BufShp + ix, minM, GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + gaiaExport64 (shp->BufShp + ix, maxM, GAIA_LITTLE_ENDIAN, + endian_arch); + ix += 8; + pt = entity->Geometry->FirstPoint; + while (pt) + { + /* exports M-values */ + gaiaExport64 (shp->BufShp + ix, pt->M, + GAIA_LITTLE_ENDIAN, endian_arch); + ix += 8; + pt = pt->Next; + } + fwrite (shp->BufShp, 1, ix, shp->flShp); + (shp->ShpSize) += (ix / 2); /* updating current SHP file position [in 16 bits words !!!] */ + } + } +/* inserting entity in DBF file */ + fwrite (shp->BufDbf, 1, shp->DbfReclen, shp->flDbf); + (shp->DbfRecno)++; + return 1; + conversion_error: + if (shp->LastError) + free (shp->LastError); + sprintf (dummy, "Invalid character sequence"); + len = strlen (dummy); + shp->LastError = malloc (len + 1); + strcpy (shp->LastError, dummy); + return 0; +} + +GAIAGEO_DECLARE void +gaiaFlushShpHeaders (gaiaShapefilePtr shp) +{ +/* updates the various file headers */ + FILE *fl_shp = shp->flShp; + FILE *fl_shx = shp->flShx; + FILE *fl_dbf = shp->flDbf; + int shp_size = shp->ShpSize; + int shx_size = shp->ShxSize; + int dbf_size = shp->DbfSize; + int dbf_reclen = shp->DbfReclen; + int dbf_recno = shp->DbfRecno; + int endian_arch = shp->endian_arch; + double minx = shp->MinX; + double miny = shp->MinY; + double maxx = shp->MaxX; + double maxy = shp->MaxY; + unsigned char *buf_shp = shp->BufShp; +/* writing the SHP file header */ + fseek (fl_shp, 0, SEEK_SET); /* repositioning at SHP file start */ + gaiaExport32 (buf_shp, 9994, GAIA_BIG_ENDIAN, endian_arch); /* SHP magic number */ + gaiaExport32 (buf_shp + 4, 0, GAIA_BIG_ENDIAN, endian_arch); + gaiaExport32 (buf_shp + 8, 0, GAIA_BIG_ENDIAN, endian_arch); + gaiaExport32 (buf_shp + 12, 0, GAIA_BIG_ENDIAN, endian_arch); + gaiaExport32 (buf_shp + 16, 0, GAIA_BIG_ENDIAN, endian_arch); + gaiaExport32 (buf_shp + 20, 0, GAIA_BIG_ENDIAN, endian_arch); + gaiaExport32 (buf_shp + 24, shp_size, GAIA_BIG_ENDIAN, endian_arch); /* SHP file size - measured in 16 bits words !!! */ + gaiaExport32 (buf_shp + 28, 1000, GAIA_LITTLE_ENDIAN, endian_arch); /* version */ + gaiaExport32 (buf_shp + 32, shp->Shape, GAIA_LITTLE_ENDIAN, endian_arch); /* ESRI shape */ + gaiaExport64 (buf_shp + 36, minx, GAIA_LITTLE_ENDIAN, endian_arch); /* the MBR/BBOX for the whole shapefile */ + gaiaExport64 (buf_shp + 44, miny, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (buf_shp + 52, maxx, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (buf_shp + 60, maxy, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (buf_shp + 68, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (buf_shp + 76, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (buf_shp + 84, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (buf_shp + 92, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); + fwrite (buf_shp, 1, 100, fl_shp); +/* writing the SHX file header */ + fseek (fl_shx, 0, SEEK_SET); /* repositioning at SHX file start */ + gaiaExport32 (buf_shp, 9994, GAIA_BIG_ENDIAN, endian_arch); /* SHP magic number */ + gaiaExport32 (buf_shp + 4, 0, GAIA_BIG_ENDIAN, endian_arch); + gaiaExport32 (buf_shp + 8, 0, GAIA_BIG_ENDIAN, endian_arch); + gaiaExport32 (buf_shp + 12, 0, GAIA_BIG_ENDIAN, endian_arch); + gaiaExport32 (buf_shp + 16, 0, GAIA_BIG_ENDIAN, endian_arch); + gaiaExport32 (buf_shp + 20, 0, GAIA_BIG_ENDIAN, endian_arch); + gaiaExport32 (buf_shp + 24, shx_size, GAIA_BIG_ENDIAN, endian_arch); /* SHXfile size - measured in 16 bits words !!! */ + gaiaExport32 (buf_shp + 28, 1000, GAIA_LITTLE_ENDIAN, endian_arch); /* version */ + gaiaExport32 (buf_shp + 32, shp->Shape, GAIA_LITTLE_ENDIAN, endian_arch); /* ESRI shape */ + gaiaExport64 (buf_shp + 36, minx, GAIA_LITTLE_ENDIAN, endian_arch); /* the MBR for the whole shapefile */ + gaiaExport64 (buf_shp + 44, miny, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (buf_shp + 52, maxx, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (buf_shp + 60, maxy, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (buf_shp + 68, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (buf_shp + 76, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (buf_shp + 84, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaExport64 (buf_shp + 92, 0.0, GAIA_LITTLE_ENDIAN, endian_arch); + fwrite (buf_shp, 1, 100, fl_shx); +/* writing the DBF file header */ + *buf_shp = 0x1a; /* DBF - this is theEOF marker */ + fwrite (buf_shp, 1, 1, fl_dbf); + fseek (fl_dbf, 0, SEEK_SET); /* repositioning at DBF file start */ + memset (buf_shp, '\0', 32); + *buf_shp = 0x03; /* DBF magic number */ + *(buf_shp + 1) = 1; /* this is supposed to be the last update date [Year, Month, Day], but we ignore it at all */ + *(buf_shp + 2) = 1; + *(buf_shp + 3) = 1; + gaiaExport32 (buf_shp + 4, dbf_recno, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # records in this DBF */ + gaiaExport16 (buf_shp + 8, (short) dbf_size, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the file header size */ + gaiaExport16 (buf_shp + 10, (short) dbf_reclen, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the record length */ + fwrite (buf_shp, 1, 32, fl_dbf); +} + +GAIAGEO_DECLARE void +gaiaShpAnalyze (gaiaShapefilePtr shp) +{ +/* analyzing the SHP content, in order to detect if there are LINESTRINGS or MULTILINESTRINGS +/ the same check is needed in order to detect if there are POLYGONS or MULTIPOLYGONS + */ + unsigned char buf[512]; + int rd; + int skpos; + int offset; + int off_shp; + int sz; + int shape; + int points; + int n; + int n1; + int base; + int start; + int end; + int iv; + int ind; + double x; + double y; + int polygons; + int ZM_size; + int multi = 0; + int hasM = 0; + int current_row = 0; + + gaiaRingPtr ring = NULL; + while (1) + { + /* positioning and reading the SHX file */ + offset = 100 + (current_row * 8); /* 100 bytes for the header + current row displacement; each SHX row = 8 bytes */ + skpos = fseek (shp->flShx, offset, SEEK_SET); + if (skpos != 0) + goto exit; + rd = fread (buf, sizeof (unsigned char), 8, shp->flShx); + if (rd != 8) + goto exit; + off_shp = gaiaImport32 (buf, GAIA_BIG_ENDIAN, shp->endian_arch); + /* positioning and reading corresponding SHP entity - geometry */ + offset = off_shp * 2; + skpos = fseek (shp->flShp, offset, SEEK_SET); + if (skpos != 0) + goto exit; + rd = fread (buf, sizeof (unsigned char), 12, shp->flShp); + if (rd != 12) + goto exit; + sz = gaiaImport32 (buf + 4, GAIA_BIG_ENDIAN, shp->endian_arch); + shape = gaiaImport32 (buf + 8, GAIA_LITTLE_ENDIAN, shp->endian_arch); + if ((sz * 2) > shp->ShpBfsz) + { + /* current buffer is too small; we need to allocate a bigger buffer */ + free (shp->BufShp); + shp->ShpBfsz = sz * 2; + shp->BufShp = malloc (sizeof (unsigned char) * shp->ShpBfsz); + } + if (shape == GAIA_SHP_POLYLINE || shape == GAIA_SHP_POLYLINEZ + || shape == GAIA_SHP_POLYLINEM) + { + /* shape polyline */ + rd = fread (shp->BufShp, sizeof (unsigned char), 32, + shp->flShp); + if (rd != 32) + goto exit; + rd = fread (shp->BufShp, sizeof (unsigned char), + (sz * 2) - 36, shp->flShp); + if (rd != (sz * 2) - 36) + goto exit; + n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + if (n > 1) + multi++; + if (shape == GAIA_SHP_POLYLINEZ) + { + ZM_size = 38 + (2 * n) + (n1 * 16); /* size [in 16 bits words !!!] ZM */ + if (sz == ZM_size) + hasM = 1; + } + } + if (shape == GAIA_SHP_POLYGON || shape == GAIA_SHP_POLYGONZ + || shape == GAIA_SHP_POLYGONM) + { + /* shape polygon */ + struct shp_ring_item *pExt; + struct shp_ring_collection ringsColl; + /* initializing the RING collection */ + ringsColl.First = NULL; + ringsColl.Last = NULL; + + rd = fread (shp->BufShp, sizeof (unsigned char), 32, + shp->flShp); + if (rd != 32) + goto exit; + rd = fread (shp->BufShp, sizeof (unsigned char), + (sz * 2) - 36, shp->flShp); + if (rd != (sz * 2) - 36) + goto exit; + n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + n1 = gaiaImport32 (shp->BufShp + 4, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + base = 8 + (n * 4); + start = 0; + for (ind = 0; ind < n; ind++) + { + if (ind < (n - 1)) + end = + gaiaImport32 (shp->BufShp + 8 + + ((ind + 1) * 4), + GAIA_LITTLE_ENDIAN, + shp->endian_arch); + else + end = n1; + points = end - start; + ring = gaiaAllocRing (points); + points = 0; + for (iv = start; iv < end; iv++) + { + x = gaiaImport64 (shp->BufShp + base + + (iv * 16), GAIA_LITTLE_ENDIAN, + shp->endian_arch); + y = gaiaImport64 (shp->BufShp + base + + (iv * 16) + 8, + GAIA_LITTLE_ENDIAN, + shp->endian_arch); + gaiaSetPoint (ring->Coords, points, x, y); + start++; + points++; + } + shp_add_ring (&ringsColl, ring); + ring = NULL; + } + shp_arrange_rings (&ringsColl); + pExt = ringsColl.First; + polygons = 0; + while (pExt != NULL) + { + if (pExt->IsExterior) + polygons++; + pExt = pExt->Next; + } + shp_free_rings (&ringsColl); + + if (polygons > 1) + multi++; + if (shape == GAIA_SHP_POLYGONZ) + { + ZM_size = 38 + (2 * n) + (n1 * 16); /* size [in 16 bits words !!!] ZM */ + if (sz == ZM_size) + hasM = 1; + } + } + if (shape == GAIA_SHP_MULTIPOINTZ) + { + /* shape multipoint Z */ + rd = fread (shp->BufShp, sizeof (unsigned char), 32, + shp->flShp); + if (rd != 32) + goto exit; + rd = fread (shp->BufShp, sizeof (unsigned char), + (sz * 2) - 36, shp->flShp); + if (rd != (sz * 2) - 36) + goto exit; + n = gaiaImport32 (shp->BufShp, GAIA_LITTLE_ENDIAN, + shp->endian_arch); + ZM_size = 38 + (n * 16); /* size [in 16 bits words !!!] ZM */ + if (sz == ZM_size) + hasM = 1; + } + current_row++; + } + exit: + if (ring) + gaiaFreeRing (ring); + if (shp->LastError) + free (shp->LastError); + shp->LastError = NULL; +/* setting the EffectiveType, as determined by this analysis */ + if (shp->Shape == GAIA_SHP_POLYLINE || shp->Shape == GAIA_SHP_POLYLINEZ + || shp->Shape == GAIA_SHP_POLYLINEM) + { + /* SHAPE polyline */ + if (multi) + shp->EffectiveType = GAIA_MULTILINESTRING; + else + shp->EffectiveType = GAIA_LINESTRING; + } + if (shp->Shape == GAIA_SHP_POLYGON || shp->Shape == GAIA_SHP_POLYGONZ + || shp->Shape == GAIA_SHP_POLYGONM) + { + /* SHAPE polygon */ + if (multi) + shp->EffectiveType = GAIA_MULTIPOLYGON; + else + shp->EffectiveType = GAIA_POLYGON; + } + if (shp->Shape == GAIA_SHP_POLYLINEZ || shp->Shape == GAIA_SHP_POLYGONZ + || shp->Shape == GAIA_SHP_MULTIPOINTZ) + { + if (hasM) + shp->EffectiveDims = GAIA_XY_Z_M; + else + shp->EffectiveDims = GAIA_XY_Z; + } +} + +GAIAGEO_DECLARE gaiaDbfPtr +gaiaAllocDbf () +{ +/* allocates and initializes the DBF object */ + gaiaDbfPtr dbf = malloc (sizeof (gaiaDbf)); + dbf->endian_arch = 1; + dbf->Path = NULL; + dbf->flDbf = NULL; + dbf->Dbf = NULL; + dbf->BufDbf = NULL; + dbf->DbfHdsz = 0; + dbf->DbfReclen = 0; + dbf->DbfSize = 0; + dbf->DbfRecno = 0; + dbf->Valid = 0; + dbf->IconvObj = NULL; + dbf->LastError = NULL; + return dbf; +} + +GAIAGEO_DECLARE void +gaiaFreeDbf (gaiaDbfPtr dbf) +{ +/* frees all memory allocations related to the DBF object */ + if (dbf->Path) + free (dbf->Path); + if (dbf->flDbf) + fclose (dbf->flDbf); + if (dbf->Dbf) + gaiaFreeDbfList (dbf->Dbf); + if (dbf->BufDbf) + free (dbf->BufDbf); + if (dbf->IconvObj) + iconv_close ((iconv_t) dbf->IconvObj); + if (dbf->LastError) + free (dbf->LastError); + free (dbf); +} + +GAIAGEO_DECLARE void +gaiaOpenDbfRead (gaiaDbfPtr dbf, const char *path, const char *charFrom, + const char *charTo) +{ +/* trying to open the DBF and initial checkings */ + FILE *fl_dbf = NULL; + int rd; + unsigned char bf[1024]; + int dbf_size; + int dbf_reclen = 0; + int off_dbf; + int ind; + char field_name[2048]; + char *sys_err; + char errMsg[1024]; + iconv_t iconv_ret; + char utf8buf[2048]; +#if !defined(__MINGW32__) && defined(_WIN32) + const char *pBuf; +#else /* not WIN32 */ + char *pBuf; +#endif + size_t len; + size_t utf8len; + char *pUtf8buf; + int endian_arch = gaiaEndianArch (); + gaiaDbfListPtr dbf_list = NULL; + if (charFrom && charTo) + { + iconv_ret = iconv_open (charTo, charFrom); + if (iconv_ret == (iconv_t) (-1)) + { + sprintf (errMsg, + "conversion from '%s' to '%s' not available\n", + charFrom, charTo); + goto unsupported_conversion; + } + dbf->IconvObj = iconv_ret; + } + else + { + sprintf (errMsg, "a NULL charset-name was passed\n"); + goto unsupported_conversion; + } + if (dbf->flDbf != NULL) + { + sprintf (errMsg, "attempting to reopen an already opened DBF\n"); + goto unsupported_conversion; + } + fl_dbf = fopen (path, "rb"); + if (!fl_dbf) + { + sys_err = strerror (errno); + sprintf (errMsg, "unable to open '%s' for reading: %s", path, + sys_err); + goto no_file; + } +/* reading DBF file header */ + rd = fread (bf, sizeof (unsigned char), 32, fl_dbf); + if (rd != 32) + goto error; + switch (*bf) + { + /* checks the DBF magic number */ + case 0x03: + case 0x83: + break; + case 0x02: + case 0xF8: + sprintf (errMsg, "'%s'\ninvalid magic number %02x [FoxBASE format]", + path, *bf); + goto dbf_bad_magic; + case 0xF5: + sprintf (errMsg, + "'%s'\ninvalid magic number %02x [FoxPro 2.x (or earlier) format]", + path, *bf); + goto dbf_bad_magic; + case 0x30: + case 0x31: + case 0x32: + sprintf (errMsg, + "'%s'\ninvalid magic number %02x [Visual FoxPro format]", + path, *bf); + goto dbf_bad_magic; + case 0x43: + case 0x63: + case 0xBB: + case 0xCB: + sprintf (errMsg, "'%s'\ninvalid magic number %02x [dBASE IV format]", + path, *bf); + goto dbf_bad_magic; + default: + sprintf (errMsg, "'%s'\ninvalid magic number %02x [unknown format]", + path, *bf); + goto dbf_bad_magic; + }; + dbf_size = gaiaImport16 (bf + 8, GAIA_LITTLE_ENDIAN, endian_arch); + dbf_reclen = gaiaImport16 (bf + 10, GAIA_LITTLE_ENDIAN, endian_arch); + dbf_size--; + off_dbf = 0; + dbf_list = gaiaAllocDbfList (); + for (ind = 32; ind < dbf_size; ind += 32) + { + /* fetches DBF fields definitions */ + rd = fread (bf, sizeof (unsigned char), 32, fl_dbf); + if (rd != 32) + goto error; + if (*(bf + 11) == 'M') + { + /* skipping any MEMO field */ + memcpy (field_name, bf, 11); + field_name[11] = '\0'; + off_dbf += *(bf + 16); + spatialite_e + ("WARNING: column \"%s\" is of the MEMO type and will be ignored\n", + field_name); + continue; + } + memcpy (field_name, bf, 11); + field_name[11] = '\0'; + len = strlen ((char *) field_name); + utf8len = 2048; + pBuf = (char *) field_name; + pUtf8buf = utf8buf; + if (iconv + ((iconv_t) (dbf->IconvObj), &pBuf, &len, &pUtf8buf, + &utf8len) == (size_t) (-1)) + goto conversion_error; + memcpy (field_name, utf8buf, 2048 - utf8len); + field_name[2048 - utf8len] = '\0'; + gaiaAddDbfField (dbf_list, field_name, *(bf + 11), off_dbf, + *(bf + 16), *(bf + 17)); + off_dbf += *(bf + 16); + } + if (!gaiaIsValidDbfList (dbf_list)) + { + /* invalid DBF */ + goto illegal_dbf; + } + len = strlen (path); + dbf->Path = malloc (len + 1); + strcpy (dbf->Path, path); + dbf->flDbf = fl_dbf; + dbf->Dbf = dbf_list; +/* allocating DBF buffer */ + dbf->BufDbf = malloc (sizeof (unsigned char) * dbf_reclen); + dbf->DbfHdsz = dbf_size + 1; + dbf->DbfReclen = dbf_reclen; + dbf->Valid = 1; + dbf->endian_arch = endian_arch; + return; + unsupported_conversion: +/* illegal charset */ + if (dbf->LastError) + free (dbf->LastError); + len = strlen (errMsg); + dbf->LastError = malloc (len + 1); + strcpy (dbf->LastError, errMsg); + return; + no_file: +/* the DBF file can't be accessed */ + if (dbf->LastError) + free (dbf->LastError); + len = strlen (errMsg); + dbf->LastError = malloc (len + 1); + strcpy (dbf->LastError, errMsg); + if (fl_dbf) + fclose (fl_dbf); + return; + error: +/* the DBF is invalid or corrupted */ + if (dbf->LastError) + free (dbf->LastError); + sprintf (errMsg, "'%s' is corrupted / has invalid format", path); + len = strlen (errMsg); + dbf->LastError = malloc (len + 1); + strcpy (dbf->LastError, errMsg); + gaiaFreeDbfList (dbf_list); + fclose (fl_dbf); + return; + dbf_bad_magic: +/* the DBF has an invalid magic number */ + if (dbf->LastError) + free (dbf->LastError); + len = strlen (errMsg); + dbf->LastError = malloc (len + 1); + strcpy (dbf->LastError, errMsg); + gaiaFreeDbfList (dbf_list); + fclose (fl_dbf); + return; + illegal_dbf: +/* the DBF-file contains unsupported data types */ + if (dbf->LastError) + free (dbf->LastError); + sprintf (errMsg, "'%s' contains unsupported data types", path); + len = strlen (errMsg); + dbf->LastError = malloc (len + 1); + strcpy (dbf->LastError, errMsg); + gaiaFreeDbfList (dbf_list); + if (fl_dbf) + fclose (fl_dbf); + return; + conversion_error: +/* libiconv error */ + if (dbf->LastError) + free (dbf->LastError); + sprintf (errMsg, "'%s' field name: invalid character sequence", path); + len = strlen (errMsg); + dbf->LastError = malloc (len + 1); + strcpy (dbf->LastError, errMsg); + gaiaFreeDbfList (dbf_list); + if (fl_dbf) + fclose (fl_dbf); + return; +} + +GAIAGEO_DECLARE void +gaiaOpenDbfWrite (gaiaDbfPtr dbf, const char *path, const char *charFrom, + const char *charTo) +{ +/* trying to create the DBF file */ + FILE *fl_dbf = NULL; + unsigned char bf[1024]; + unsigned char *dbf_buf = NULL; + gaiaDbfFieldPtr fld; + char *sys_err; + char errMsg[1024]; + short dbf_reclen = 0; + unsigned short dbf_size = 0; + iconv_t iconv_ret; + char buf[2048]; + char utf8buf[2048]; +#if !defined(__MINGW32__) && defined(_WIN32) + const char *pBuf; +#else /* not WIN32 */ + char *pBuf; +#endif + size_t len; + size_t utf8len; + char *pUtf8buf; + int defaultId = 1; + struct auxdbf_list *auxdbf = NULL; + if (charFrom && charTo) + { + iconv_ret = iconv_open (charTo, charFrom); + if (iconv_ret == (iconv_t) (-1)) + { + sprintf (errMsg, "conversion from '%s' to '%s' not available\n", + charFrom, charTo); + goto unsupported_conversion; + } + dbf->IconvObj = iconv_ret; + } + else + { + sprintf (errMsg, "a NULL charset-name was passed\n"); + goto unsupported_conversion; + } + if (dbf->flDbf != NULL) + { + sprintf (errMsg, "attempting to reopen an already opened DBF file\n"); + goto unsupported_conversion; + } +/* trying to open the DBF file */ + fl_dbf = fopen (path, "wb"); + if (!fl_dbf) + { + sys_err = strerror (errno); + sprintf (errMsg, "unable to open '%s' for writing: %s", path, + sys_err); + goto no_file; + } +/* allocating DBF buffer */ + dbf_reclen = 1; /* an extra byte is needed because in DBF rows first byte is a marker for deletion */ + fld = dbf->Dbf->First; + while (fld) + { + /* computing the DBF record length */ + dbf_reclen += fld->Length; + fld = fld->Next; + } + dbf_buf = malloc (dbf_reclen); +/* writing the DBF file header */ + memset (bf, '\0', 32); + fwrite (bf, 1, 32, fl_dbf); + dbf_size = 32; /* note: DBF counts sizes in bytes */ + auxdbf = alloc_auxdbf (dbf->Dbf); + fld = dbf->Dbf->First; + while (fld) + { + /* exporting DBF Fields specifications */ + memset (bf, 0, 32); + if (strlen (fld->Name) > 10) + { + /* long name: attempting to safely truncate */ + truncate_long_name (auxdbf, fld); + } + strcpy (buf, fld->Name); + len = strlen (buf); + utf8len = 2048; + pBuf = buf; + pUtf8buf = utf8buf; + if (iconv + ((iconv_t) (dbf->IconvObj), &pBuf, &len, &pUtf8buf, + &utf8len) == (size_t) (-1)) + sprintf (buf, "FLD#%d", defaultId++); + else + { + memcpy (buf, utf8buf, 2048 - utf8len); + buf[2048 - utf8len] = '\0'; + if (strlen (buf) > 10) + sprintf (buf, "FLD#%d", defaultId++); + } + memcpy (bf, buf, strlen (buf)); + *(bf + 11) = fld->Type; + *(bf + 16) = fld->Length; + *(bf + 17) = fld->Decimals; + fwrite (bf, 1, 32, fl_dbf); + dbf_size += 32; + fld = fld->Next; + } + free_auxdbf (auxdbf); + fwrite ("\r", 1, 1, fl_dbf); /* this one is a special DBF delimiter that closes file header */ + dbf_size++; + dbf->Valid = 1; + dbf->flDbf = fl_dbf; + dbf->BufDbf = dbf_buf; + dbf->DbfHdsz = dbf_size + 1; + dbf->DbfReclen = dbf_reclen; + dbf->DbfSize = dbf_size; + dbf->DbfRecno = 0; + return; + unsupported_conversion: +/* illegal charset */ + if (dbf->LastError) + free (dbf->LastError); + len = strlen (errMsg); + dbf->LastError = malloc (len + 1); + strcpy (dbf->LastError, errMsg); + return; + no_file: +/* the DBF file can't be created/opened */ + if (dbf->LastError) + free (dbf->LastError); + len = strlen (errMsg); + dbf->LastError = malloc (len + 1); + strcpy (dbf->LastError, errMsg); + if (dbf_buf) + free (dbf_buf); + if (fl_dbf) + fclose (fl_dbf); + return; +} + +GAIAGEO_DECLARE int +gaiaWriteDbfEntity (gaiaDbfPtr dbf, gaiaDbfListPtr entity) +{ +/* trying to write an entity into some DBF file */ + char dummy[128]; + char fmt[16]; + gaiaDbfFieldPtr fld; +#if !defined(__MINGW32__) && defined(_WIN32) + const char *pBuf; +#else /* not WIN32 */ + char *pBuf; +#endif + size_t len; + size_t utf8len; + char *pUtf8buf; + char *dynbuf; + char utf8buf[2048]; +/* writing the DBF record */ + memset (dbf->BufDbf, '\0', dbf->DbfReclen); + *(dbf->BufDbf) = ' '; /* in DBF first byte of each row marks for validity or deletion */ + fld = entity->First; + while (fld) + { + /* transferring field values */ + switch (fld->Type) + { + case 'L': + if (!(fld->Value)) + *(dbf->BufDbf + fld->Offset) = '?'; + else if (fld->Value->Type != GAIA_INT_VALUE) + *(dbf->BufDbf + fld->Offset + 1) = '?'; + else + { + if (fld->Value->IntValue == 0) + *(dbf->BufDbf + fld->Offset + 1) = 'N'; + else + *(dbf->BufDbf + fld->Offset + 1) = 'Y'; + } + break; + case 'D': + memset (dbf->BufDbf + fld->Offset + 1, '0', 8); + if (fld->Value) + { + if (fld->Value->Type == GAIA_TEXT_VALUE) + { + if (strlen (fld->Value->TxtValue) == 8) + memcpy (dbf->BufDbf + fld->Offset + 1, + fld->Value->TxtValue, 8); + } + } + break; + case 'C': + memset (dbf->BufDbf + fld->Offset + 1, ' ', fld->Length); + if (fld->Value) + { + if (fld->Value->Type == GAIA_TEXT_VALUE) + { + len = strlen (fld->Value->TxtValue); + dynbuf = malloc (len + 1); + strcpy (dynbuf, fld->Value->TxtValue); + if (len > 512) + { + dynbuf[512] = '\0'; + len = strlen (dynbuf); + } + utf8len = 2048; + pBuf = dynbuf; + pUtf8buf = utf8buf; + if (iconv + ((iconv_t) (dbf->IconvObj), &pBuf, &len, + &pUtf8buf, &utf8len) == (size_t) (-1)) + { + free (dynbuf); + goto conversion_error; + } + memcpy (dynbuf, utf8buf, 2048 - utf8len); + dynbuf[2048 - utf8len] = '\0'; + if (strlen (dynbuf) < fld->Length) + memcpy (dbf->BufDbf + fld->Offset + 1, dynbuf, + strlen (dynbuf)); + else + memcpy (dbf->BufDbf + fld->Offset + 1, dynbuf, + fld->Length); + free (dynbuf); + } + } + break; + case 'N': + memset (dbf->BufDbf + fld->Offset + 1, '\0', fld->Length); + if (fld->Value) + { + if (fld->Value->Type == GAIA_INT_VALUE) + { + sprintf (dummy, FRMT64, fld->Value->IntValue); + if (strlen (dummy) <= fld->Length) + memcpy (dbf->BufDbf + fld->Offset + 1, + dummy, strlen (dummy)); + } + if (fld->Value->Type == GAIA_DOUBLE_VALUE) + { + sprintf (fmt, "%%1.%df", fld->Decimals); + sprintf (dummy, fmt, fld->Value->DblValue); + if (strlen (dummy) <= fld->Length) + memcpy (dbf->BufDbf + fld->Offset + 1, + dummy, strlen (dummy)); + } + } + break; + }; + fld = fld->Next; + } +/* inserting entity in DBF file */ + fwrite (dbf->BufDbf, 1, dbf->DbfReclen, dbf->flDbf); + (dbf->DbfRecno)++; + return 1; + conversion_error: + if (dbf->LastError) + free (dbf->LastError); + sprintf (dummy, "Invalid character sequence"); + len = strlen (dummy); + dbf->LastError = malloc (len + 1); + strcpy (dbf->LastError, dummy); + return 0; +} + +GAIAGEO_DECLARE void +gaiaFlushDbfHeader (gaiaDbfPtr dbf) +{ +/* updates the DBF file header */ + FILE *fl_dbf = dbf->flDbf; + int dbf_size = dbf->DbfSize; + int dbf_reclen = dbf->DbfReclen; + int dbf_recno = dbf->DbfRecno; + int endian_arch = dbf->endian_arch; + unsigned char bf[64]; +/* writing the DBF file header */ + *bf = 0x1a; /* DBF - this is theEOF marker */ + fwrite (bf, 1, 1, fl_dbf); + fseek (fl_dbf, 0, SEEK_SET); /* repositioning at DBF file start */ + memset (bf, '\0', 32); + *bf = 0x03; /* DBF magic number */ + *(bf + 1) = 1; /* this is supposed to be the last update date [Year, Month, Day], but we ignore it at all */ + *(bf + 2) = 1; + *(bf + 3) = 1; + gaiaExport32 (bf + 4, dbf_recno, GAIA_LITTLE_ENDIAN, endian_arch); /* exports # records in this DBF */ + gaiaExport16 (bf + 8, (short) dbf_size, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the file header size */ + gaiaExport16 (bf + 10, (short) dbf_reclen, GAIA_LITTLE_ENDIAN, endian_arch); /* exports the record length */ + fwrite (bf, 1, 32, fl_dbf); +} + +GAIAGEO_DECLARE int +gaiaReadDbfEntity (gaiaDbfPtr dbf, int current_row, int *deleted) +{ +/* trying to read an entity from DBF */ + int rd; + int skpos; + int offset; + int len; + char errMsg[1024]; + gaiaDbfFieldPtr pFld; +/* positioning and reading the DBF file */ + offset = dbf->DbfHdsz + (current_row * dbf->DbfReclen); + skpos = fseek (dbf->flDbf, offset, SEEK_SET); + if (skpos != 0) + goto eof; + rd = fread (dbf->BufDbf, sizeof (unsigned char), dbf->DbfReclen, + dbf->flDbf); + if (rd != dbf->DbfReclen) + goto eof; +/* setting up the current DBF ENTITY */ + gaiaResetDbfEntity (dbf->Dbf); + dbf->Dbf->RowId = current_row; + if (*(dbf->BufDbf) == '*') + { + /* deleted row */ + *deleted = 1; + if (dbf->LastError) + free (dbf->LastError); + dbf->LastError = NULL; + return 1; + } +/* fetching the DBF values */ + pFld = dbf->Dbf->First; + while (pFld) + { + if (!parseDbfField (dbf->BufDbf, dbf->IconvObj, pFld)) + goto conversion_error; + pFld = pFld->Next; + } + if (dbf->LastError) + free (dbf->LastError); + dbf->LastError = NULL; + *deleted = 0; + return 1; + eof: + if (dbf->LastError) + free (dbf->LastError); + dbf->LastError = NULL; + return 0; + conversion_error: + if (dbf->LastError) + free (dbf->LastError); + sprintf (errMsg, "Invalid character sequence"); + len = strlen (errMsg); + dbf->LastError = malloc (len + 1); + strcpy (dbf->LastError, errMsg); + return 0; +} + +#endif /* ICONV enabled/disabled */ diff --git a/src/spatialite/src/gaiageo/gg_transform.c b/src/spatialite/src/gaiageo/gg_transform.c new file mode 100644 index 0000000..ef0e178 --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_transform.c @@ -0,0 +1,2141 @@ +/* + + gg_transform.c -- Gaia PROJ.4 wrapping + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#ifndef OMIT_PROJ /* including PROJ.4 */ +#include +#endif + +#include +#include + +#include + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaMakeCircle (double cx, double cy, double radius, double step) +{ +/* return a Linestring approximating a Circle */ + return gaiaMakeEllipse (cx, cy, radius, radius, step); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaMakeArc (double cx, + double cy, double radius, double start, double stop, double step) +{ +/* return a Linestring approximating a Circular Arc */ + return gaiaMakeEllipticArc (cx, cy, radius, radius, start, stop, step); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaMakeEllipse (double cx, double cy, double x_axis, double y_axis, + double step) +{ +/* return a Linestring approximating an Ellipse */ + gaiaDynamicLinePtr dyn; + double x; + double y; + double angle = 0.0; + int points = 0; + gaiaPointPtr pt; + gaiaGeomCollPtr geom; + gaiaLinestringPtr ln; + int iv = 0; + + if (step < 0.0) + step *= -1.0; + if (step == 0.0) + step = 10.0; + if (step < 0.1) + step = 0.1; + if (step > 45.0) + step = 45.0; + if (x_axis < 0.0) + x_axis *= -1.0; + if (y_axis < 0.0) + y_axis *= -1.0; + dyn = gaiaAllocDynamicLine (); + while (angle < 360.0) + { + double rads = angle * .0174532925199432958; + x = cx + (x_axis * cos (rads)); + y = cy + (y_axis * sin (rads)); + gaiaAppendPointToDynamicLine (dyn, x, y); + angle += step; + } +/* closing the ellipse */ + gaiaAppendPointToDynamicLine (dyn, dyn->First->X, dyn->First->Y); + + pt = dyn->First; + while (pt) + { + /* counting how many points */ + points++; + pt = pt->Next; + } + if (points == 0) + { + gaiaFreeDynamicLine (dyn); + return NULL; + } + + geom = gaiaAllocGeomColl (); + ln = gaiaAddLinestringToGeomColl (geom, points); + pt = dyn->First; + while (pt) + { + /* setting Vertices */ + gaiaSetPoint (ln->Coords, iv, pt->X, pt->Y); + iv++; + pt = pt->Next; + } + gaiaFreeDynamicLine (dyn); + return geom; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaMakeEllipticArc (double cx, + double cy, double x_axis, double y_axis, double start, + double stop, double step) +{ +/* return a Linestring approximating an Elliptic Arc */ + gaiaDynamicLinePtr dyn; + double x; + double y; + double angle; + double rads; + int points = 0; + gaiaPointPtr pt; + gaiaGeomCollPtr geom; + gaiaLinestringPtr ln; + int iv = 0; + + if (step < 0.0) + step *= -1.0; + if (step == 0.0) + step = 10.0; + if (step < 0.1) + step = 0.1; + if (step > 45.0) + step = 45.0; + if (x_axis < 0.0) + x_axis *= -1.0; + if (y_axis < 0.0) + y_axis *= -1.0; +/* normalizing Start/Stop angles */ + while (start >= 360.0) + start -= 360.0; + while (start <= -720.0) + start += 360; + while (stop >= 360.0) + stop -= 360.0; + while (stop <= -720.0) + stop += 360; + if (start < 0.0) + start = 360.0 + start; + if (stop < 0.0) + stop = 360.0 + stop; + if (start > stop) + stop += 360.0; + + dyn = gaiaAllocDynamicLine (); + angle = start; + while (angle < stop) + { + rads = angle * .0174532925199432958; + x = cx + (x_axis * cos (rads)); + y = cy + (y_axis * sin (rads)); + gaiaAppendPointToDynamicLine (dyn, x, y); + angle += step; + } +/* closing the arc */ + rads = stop * .0174532925199432958; + x = cx + (x_axis * cos (rads)); + y = cy + (y_axis * sin (rads)); + if (x != dyn->Last->X || y != dyn->Last->Y) + gaiaAppendPointToDynamicLine (dyn, x, y); + + pt = dyn->First; + while (pt) + { + /* counting how many points */ + points++; + pt = pt->Next; + } + if (points == 0) + { + gaiaFreeDynamicLine (dyn); + return NULL; + } + + geom = gaiaAllocGeomColl (); + ln = gaiaAddLinestringToGeomColl (geom, points); + pt = dyn->First; + while (pt) + { + /* setting Vertices */ + gaiaSetPoint (ln->Coords, iv, pt->X, pt->Y); + iv++; + pt = pt->Next; + } + gaiaFreeDynamicLine (dyn); + return geom; +} + +GAIAGEO_DECLARE void +gaiaShiftCoords (gaiaGeomCollPtr geom, double shift_x, double shift_y) +{ +/* returns a geometry that is the old geometry with required shifting applied to coordinates */ + int ib; + int iv; + double x; + double y; + double z; + double m; + gaiaPointPtr point; + gaiaPolygonPtr polyg; + gaiaLinestringPtr line; + gaiaRingPtr ring; + if (!geom) + return; + point = geom->FirstPoint; + while (point) + { + /* shifting POINTs */ + point->X += shift_x; + point->Y += shift_y; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* shifting LINESTRINGs */ + for (iv = 0; iv < line->Points; iv++) + { + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + x += shift_x; + y += shift_y; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (line->Coords, iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (line->Coords, iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (line->Coords, iv, x, y); + } + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* shifting POLYGONs */ + ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + /* shifting the EXTERIOR RING */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + x += shift_x; + y += shift_y; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, x, y); + } + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* shifting the INTERIOR RINGs */ + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + x += shift_x; + y += shift_y; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, x, y); + } + } + } + polyg = polyg->Next; + } + gaiaMbrGeometry (geom); +} + +GAIAGEO_DECLARE void +gaiaShiftCoords3D (gaiaGeomCollPtr geom, double shift_x, double shift_y, + double shift_z) +{ +/* returns a geometry that is the old geometry with required shifting applied to coordinates */ + int ib; + int iv; + double x; + double y; + double z; + double m; + gaiaPointPtr point; + gaiaPolygonPtr polyg; + gaiaLinestringPtr line; + gaiaRingPtr ring; + if (!geom) + return; + point = geom->FirstPoint; + while (point) + { + /* shifting POINTs */ + point->X += shift_x; + point->Y += shift_y; + if (point->DimensionModel == GAIA_XY_Z + || point->DimensionModel == GAIA_XY_Z_M) + point->Z += shift_z; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* shifting LINESTRINGs */ + for (iv = 0; iv < line->Points; iv++) + { + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + x += shift_x; + y += shift_y; + z += shift_z; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (line->Coords, iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (line->Coords, iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (line->Coords, iv, x, y); + } + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* shifting POLYGONs */ + ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + /* shifting the EXTERIOR RING */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + x += shift_x; + y += shift_y; + z += shift_z; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, x, y); + } + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* shifting the INTERIOR RINGs */ + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + x += shift_x; + y += shift_y; + z += shift_z; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, x, y); + } + } + } + polyg = polyg->Next; + } + gaiaMbrGeometry (geom); +} + +GAIAGEO_DECLARE void +gaiaShiftLongitude (gaiaGeomCollPtr geom) +{ +/* returns a geometry that is the old geometry with negative longitudes shift by 360 */ + int ib; + int iv; + double x; + double y; + double z; + double m; + gaiaPointPtr point; + gaiaPolygonPtr polyg; + gaiaLinestringPtr line; + gaiaRingPtr ring; + if (!geom) + return; + point = geom->FirstPoint; + while (point) + { + /* shifting POINTs */ + if (point->X < 0) + { + point->X += 360.0; + } + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* shifting LINESTRINGs */ + for (iv = 0; iv < line->Points; iv++) + { + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + if (x < 0) + { + x += 360.0; + } + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (line->Coords, iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (line->Coords, iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (line->Coords, iv, x, y); + } + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* shifting POLYGONs */ + ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + /* shifting the EXTERIOR RING */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + if (x < 0) + { + x += 360.0; + } + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, x, y); + } + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* shifting the INTERIOR RINGs */ + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + if (x < 0) + { + x += 360.0; + } + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, x, y); + } + } + } + polyg = polyg->Next; + } + gaiaMbrGeometry (geom); +} + +static void +normalizePoint (double *x, double *y) +{ + if ((-180.0 <= *x) && (*x <= 180.0) && (-90.0 <= *y) && (*y <= 90.0)) + { + /* then this point is already OK */ + return; + } + if ((*x > 180.0) || (*x < -180.0)) + { + int numCycles = (int) (*x / 360.0); + *x -= numCycles * 360.0; + } + if (*x > 180.0) + { + *x -= 360.0; + } + if (*x < -180.0) + { + *x += 360.0; + } + if ((*y > 90.0) || (*y < -90.0)) + { + int numCycles = (int) (*y / 360.0); + *y -= numCycles * 360.0; + } + if (*y > 180.0) + { + *y = -1.0 * (*y - 180.0); + } + if (*y < -180.0) + { + *y = -1.0 * (*y + 180.0); + } + if (*y > 90.0) + { + *y = 180 - *y; + } + if (*y < -90.0) + { + *y = -180.0 - *y; + } +} + +GAIAGEO_DECLARE void +gaiaNormalizeLonLat (gaiaGeomCollPtr geom) +{ +/* returns a geometry that is the old geometry with all latitudes shifted + into the range -90 to 90, and all longitudes shifted into the range -180 to + 180. +*/ + int ib; + int iv; + double x; + double y; + double z; + double m; + gaiaPointPtr point; + gaiaPolygonPtr polyg; + gaiaLinestringPtr line; + gaiaRingPtr ring; + if (!geom) + return; + point = geom->FirstPoint; + while (point) + { + normalizePoint (&(point->X), &(point->Y)); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* shifting LINESTRINGs */ + for (iv = 0; iv < line->Points; iv++) + { + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + normalizePoint (&x, &y); + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (line->Coords, iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (line->Coords, iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (line->Coords, iv, x, y); + } + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* shifting POLYGONs */ + ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + /* shifting the EXTERIOR RING */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + normalizePoint (&x, &y); + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, x, y); + } + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* shifting the INTERIOR RINGs */ + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + normalizePoint (&x, &y); + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, x, y); + } + } + } + polyg = polyg->Next; + } + gaiaMbrGeometry (geom); +} + +GAIAGEO_DECLARE void +gaiaScaleCoords (gaiaGeomCollPtr geom, double scale_x, double scale_y) +{ +/* returns a geometry that is the old geometry with required scaling applied to coordinates */ + int ib; + int iv; + double x; + double y; + double z; + double m; + gaiaPointPtr point; + gaiaPolygonPtr polyg; + gaiaLinestringPtr line; + gaiaRingPtr ring; + if (!geom) + return; + point = geom->FirstPoint; + while (point) + { + /* scaling POINTs */ + point->X *= scale_x; + point->Y *= scale_y; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* scaling LINESTRINGs */ + for (iv = 0; iv < line->Points; iv++) + { + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + x *= scale_x; + y *= scale_y; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (line->Coords, iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (line->Coords, iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (line->Coords, iv, x, y); + } + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* scaling POLYGONs */ + ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + /* scaling the EXTERIOR RING */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + x *= scale_x; + y *= scale_y; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, x, y); + } + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* scaling the INTERIOR RINGs */ + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + x *= scale_x; + y *= scale_y; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, x, y); + } + } + } + polyg = polyg->Next; + } + gaiaMbrGeometry (geom); +} + +GAIAGEO_DECLARE void +gaiaRotateCoords (gaiaGeomCollPtr geom, double angle) +{ +/* returns a geometry that is the old geometry with required rotation applied to coordinates */ + int ib; + int iv; + double x; + double y; + double z; + double m; + double nx; + double ny; + double rad = angle * 0.0174532925199432958; + double cosine = cos (rad); + double sine = sin (rad); + gaiaPointPtr point; + gaiaPolygonPtr polyg; + gaiaLinestringPtr line; + gaiaRingPtr ring; + if (!geom) + return; + point = geom->FirstPoint; + while (point) + { + /* shifting POINTs */ + x = point->X; + y = point->Y; + point->X = (x * cosine) + (y * sine); + point->Y = (y * cosine) - (x * sine); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* rotating LINESTRINGs */ + for (iv = 0; iv < line->Points; iv++) + { + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + nx = (x * cosine) + (y * sine); + ny = (y * cosine) - (x * sine); + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (line->Coords, iv, nx, ny, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (line->Coords, iv, nx, ny, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (line->Coords, iv, nx, ny, z, m); + } + else + { + gaiaSetPoint (line->Coords, iv, nx, ny); + } + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* rotating POLYGONs */ + ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + /* rotating the EXTERIOR RING */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + nx = (x * cosine) + (y * sine); + ny = (y * cosine) - (x * sine); + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, nx, ny, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, nx, ny, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, nx, ny, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, nx, ny); + } + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* rotating the INTERIOR RINGs */ + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + nx = (x * cosine) + (y * sine); + ny = (y * cosine) - (x * sine); + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, nx, ny, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, nx, ny, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, nx, ny, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, nx, ny); + } + } + } + polyg = polyg->Next; + } + gaiaMbrGeometry (geom); +} + +GAIAGEO_DECLARE void +gaiaReflectCoords (gaiaGeomCollPtr geom, int x_axis, int y_axis) +{ +/* returns a geometry that is the old geometry with required reflection applied to coordinates */ + int ib; + int iv; + double x; + double y; + double z = 0.0; + double m = 0.0; + gaiaPointPtr point; + gaiaPolygonPtr polyg; + gaiaLinestringPtr line; + gaiaRingPtr ring; + if (!geom) + return; + point = geom->FirstPoint; + while (point) + { + /* reflecting POINTs */ + if (x_axis) + point->X *= -1.0; + if (y_axis) + point->Y *= -1.0; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* reflecting LINESTRINGs */ + for (iv = 0; iv < line->Points; iv++) + { + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + if (x_axis) + x *= -1.0; + if (y_axis) + y *= -1.0; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (line->Coords, iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (line->Coords, iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (line->Coords, iv, x, y); + } + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* reflecting POLYGONs */ + ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + /* reflecting the EXTERIOR RING */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + if (x_axis) + x *= -1.0; + if (y_axis) + y *= -1.0; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, x, y); + } + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* reflecting the INTERIOR RINGs */ + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + if (x_axis) + x *= -1.0; + if (y_axis) + y *= -1.0; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, x, y); + } + } + } + polyg = polyg->Next; + } + gaiaMbrGeometry (geom); +} + +GAIAGEO_DECLARE void +gaiaSwapCoords (gaiaGeomCollPtr geom) +{ +/* returns a geometry that is the old geometry with swapped x- and y-coordinates */ + int ib; + int iv; + double x; + double y; + double z; + double m; + double sv; + gaiaPointPtr point; + gaiaPolygonPtr polyg; + gaiaLinestringPtr line; + gaiaRingPtr ring; + if (!geom) + return; + point = geom->FirstPoint; + while (point) + { + /* swapping POINTs */ + sv = point->X; + point->X = point->Y; + point->Y = sv; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* swapping LINESTRINGs */ + for (iv = 0; iv < line->Points; iv++) + { + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + sv = x; + x = y; + y = sv; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (line->Coords, iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (line->Coords, iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (line->Coords, iv, x, y); + } + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* swapping POLYGONs */ + ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + /* shifting the EXTERIOR RING */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + sv = x; + x = y; + y = sv; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, x, y); + } + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* swapping the INTERIOR RINGs */ + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + sv = x; + x = y; + y = sv; + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (ring->Coords, iv, x, y); + } + } + } + polyg = polyg->Next; + } + gaiaMbrGeometry (geom); +} + +#ifndef OMIT_PROJ /* including PROJ.4 */ + +static int +gaiaIsLongLat (char *str) +{ +/* checks if we have to do with ANGLES if +proj=longlat is defined */ + if (strstr (str, "+proj=longlat") != NULL) + return 1; + return 0; +} + +GAIAGEO_DECLARE double +gaiaRadsToDegs (double rads) +{ +/* converts an ANGLE from radians to degrees */ + return rads * RAD_TO_DEG; +} + +GAIAGEO_DECLARE double +gaiaDegsToRads (double degs) +{ +/* converts an ANGLE from degrees to radians */ + return degs * DEG_TO_RAD; +} + +static gaiaGeomCollPtr +gaiaTransformCommon (projCtx handle, gaiaGeomCollPtr org, char *proj_from, + char *proj_to) +{ +/* creates a new GEOMETRY reprojecting coordinates from the original one */ + int ib; + int cnt; + int i; + double *xx; + double *yy; + double *zz; + double *mm = NULL; + double x; + double y; + double z = 0.0; + double m = 0.0; + int error = 0; + int from_angle; + int to_angle; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaLinestringPtr dst_ln; + gaiaPolygonPtr pg; + gaiaPolygonPtr dst_pg; + gaiaRingPtr rng; + gaiaRingPtr dst_rng; + projPJ from_cs; + projPJ to_cs; + gaiaGeomCollPtr dst; + if (handle != NULL) + { + from_cs = pj_init_plus_ctx (handle, proj_from); + to_cs = pj_init_plus_ctx (handle, proj_to); + } + else + { + from_cs = pj_init_plus (proj_from); + to_cs = pj_init_plus (proj_to); + } + if (!from_cs) + { + if (to_cs) + pj_free (to_cs); + return NULL; + } + if (!to_cs) + { + pj_free (from_cs); + return NULL; + } + if (org->DimensionModel == GAIA_XY_Z) + dst = gaiaAllocGeomCollXYZ (); + else if (org->DimensionModel == GAIA_XY_M) + dst = gaiaAllocGeomCollXYM (); + else if (org->DimensionModel == GAIA_XY_Z_M) + dst = gaiaAllocGeomCollXYZM (); + else + dst = gaiaAllocGeomColl (); +/* setting up projection parameters */ + from_angle = gaiaIsLongLat (proj_from); + to_angle = gaiaIsLongLat (proj_to); + cnt = 0; + pt = org->FirstPoint; + while (pt) + { + /* counting POINTs */ + cnt++; + pt = pt->Next; + } + if (cnt) + { + /* reprojecting POINTs */ + xx = malloc (sizeof (double) * cnt); + yy = malloc (sizeof (double) * cnt); + zz = malloc (sizeof (double) * cnt); + if (org->DimensionModel == GAIA_XY_M + || org->DimensionModel == GAIA_XY_Z_M) + mm = malloc (sizeof (double) * cnt); + i = 0; + pt = org->FirstPoint; + while (pt) + { + /* inserting points to be converted in temporary arrays */ + if (from_angle) + { + xx[i] = gaiaDegsToRads (pt->X); + yy[i] = gaiaDegsToRads (pt->Y); + } + else + { + xx[i] = pt->X; + yy[i] = pt->Y; + } + if (org->DimensionModel == GAIA_XY_Z + || org->DimensionModel == GAIA_XY_Z_M) + zz[i] = pt->Z; + else + zz[i] = 0.0; + if (org->DimensionModel == GAIA_XY_M + || org->DimensionModel == GAIA_XY_Z_M) + mm[i] = pt->M; + i++; + pt = pt->Next; + } + /* applying reprojection */ + if (pj_transform (from_cs, to_cs, cnt, 0, xx, yy, zz) == 0) + { + /* inserting the reprojected POINTs in the new GEOMETRY */ + for (i = 0; i < cnt; i++) + { + if (to_angle) + { + x = gaiaRadsToDegs (xx[i]); + y = gaiaRadsToDegs (yy[i]); + } + else + { + x = xx[i]; + y = yy[i]; + } + if (org->DimensionModel == GAIA_XY_Z + || org->DimensionModel == GAIA_XY_Z_M) + z = zz[i]; + else + z = 0.0; + if (org->DimensionModel == GAIA_XY_M + || org->DimensionModel == GAIA_XY_Z_M) + m = mm[i]; + else + m = 0.0; + if (dst->DimensionModel == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (dst, x, y, z); + else if (dst->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (dst, x, y, m); + else if (dst->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (dst, x, y, z, m); + else + gaiaAddPointToGeomColl (dst, x, y); + } + } + else + error = 1; + free (xx); + free (yy); + free (zz); + if (org->DimensionModel == GAIA_XY_M + || org->DimensionModel == GAIA_XY_Z_M) + free (mm); + } + if (error) + goto stop; + ln = org->FirstLinestring; + while (ln) + { + /* reprojecting LINESTRINGs */ + cnt = ln->Points; + xx = malloc (sizeof (double) * cnt); + yy = malloc (sizeof (double) * cnt); + zz = malloc (sizeof (double) * cnt); + if (ln->DimensionModel == GAIA_XY_M + || ln->DimensionModel == GAIA_XY_Z_M) + mm = malloc (sizeof (double) * cnt); + for (i = 0; i < cnt; i++) + { + /* inserting points to be converted in temporary arrays */ + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, i, &x, &y, &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, i, &x, &y, &m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, i, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ln->Coords, i, &x, &y); + } + if (from_angle) + { + xx[i] = gaiaDegsToRads (x); + yy[i] = gaiaDegsToRads (y); + } + else + { + xx[i] = x; + yy[i] = y; + } + if (ln->DimensionModel == GAIA_XY_Z + || ln->DimensionModel == GAIA_XY_Z_M) + zz[i] = z; + else + zz[i] = 0.0; + if (ln->DimensionModel == GAIA_XY_M + || ln->DimensionModel == GAIA_XY_Z_M) + mm[i] = m; + } + /* applying reprojection */ + if (pj_transform (from_cs, to_cs, cnt, 0, xx, yy, zz) == 0) + { + /* inserting the reprojected LINESTRING in the new GEOMETRY */ + dst_ln = gaiaAddLinestringToGeomColl (dst, cnt); + for (i = 0; i < cnt; i++) + { + /* setting LINESTRING points */ + if (to_angle) + { + x = gaiaRadsToDegs (xx[i]); + y = gaiaRadsToDegs (yy[i]); + } + else + { + x = xx[i]; + y = yy[i]; + } + if (ln->DimensionModel == GAIA_XY_Z + || ln->DimensionModel == GAIA_XY_Z_M) + z = zz[i]; + else + z = 0.0; + if (ln->DimensionModel == GAIA_XY_M + || ln->DimensionModel == GAIA_XY_Z_M) + m = mm[i]; + else + m = 0.0; + if (dst_ln->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (dst_ln->Coords, i, x, y, z); + } + else if (dst_ln->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (dst_ln->Coords, i, x, y, m); + } + else if (dst_ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (dst_ln->Coords, i, x, y, z, m); + } + else + { + gaiaSetPoint (dst_ln->Coords, i, x, y); + } + } + } + else + error = 1; + free (xx); + free (yy); + free (zz); + if (ln->DimensionModel == GAIA_XY_M + || ln->DimensionModel == GAIA_XY_Z_M) + free (mm); + if (error) + goto stop; + ln = ln->Next; + } + pg = org->FirstPolygon; + while (pg) + { + /* reprojecting POLYGONs */ + rng = pg->Exterior; + cnt = rng->Points; + dst_pg = gaiaAddPolygonToGeomColl (dst, cnt, pg->NumInteriors); + xx = malloc (sizeof (double) * cnt); + yy = malloc (sizeof (double) * cnt); + zz = malloc (sizeof (double) * cnt); + if (rng->DimensionModel == GAIA_XY_M + || rng->DimensionModel == GAIA_XY_Z_M) + mm = malloc (sizeof (double) * cnt); + for (i = 0; i < cnt; i++) + { + /* inserting points to be converted in temporary arrays [EXTERIOR RING] */ + if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, i, &x, &y, &z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, i, &x, &y, &m); + } + else if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, i, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, i, &x, &y); + } + if (from_angle) + { + xx[i] = gaiaDegsToRads (x); + yy[i] = gaiaDegsToRads (y); + } + else + { + xx[i] = x; + yy[i] = y; + } + if (rng->DimensionModel == GAIA_XY_Z + || rng->DimensionModel == GAIA_XY_Z_M) + zz[i] = z; + else + zz[i] = 0.0; + if (rng->DimensionModel == GAIA_XY_M + || rng->DimensionModel == GAIA_XY_Z_M) + mm[i] = m; + } + /* applying reprojection */ + if (pj_transform (from_cs, to_cs, cnt, 0, xx, yy, zz) == 0) + { + /* inserting the reprojected POLYGON in the new GEOMETRY */ + dst_rng = dst_pg->Exterior; + for (i = 0; i < cnt; i++) + { + /* setting EXTERIOR RING points */ + if (to_angle) + { + x = gaiaRadsToDegs (xx[i]); + y = gaiaRadsToDegs (yy[i]); + } + else + { + x = xx[i]; + y = yy[i]; + } + if (rng->DimensionModel == GAIA_XY_Z + || rng->DimensionModel == GAIA_XY_Z_M) + z = zz[i]; + else + z = 0.0; + if (rng->DimensionModel == GAIA_XY_M + || rng->DimensionModel == GAIA_XY_Z_M) + m = mm[i]; + else + m = 0.0; + if (dst_rng->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (dst_rng->Coords, i, x, y, z); + } + else if (dst_rng->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (dst_rng->Coords, i, x, y, m); + } + else if (dst_rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (dst_rng->Coords, i, x, y, z, m); + } + else + { + gaiaSetPoint (dst_rng->Coords, i, x, y); + } + } + } + else + error = 1; + free (xx); + free (yy); + free (zz); + if (rng->DimensionModel == GAIA_XY_M + || rng->DimensionModel == GAIA_XY_Z_M) + free (mm); + if (error) + goto stop; + for (ib = 0; ib < pg->NumInteriors; ib++) + { + /* processing INTERIOR RINGS */ + rng = pg->Interiors + ib; + cnt = rng->Points; + xx = malloc (sizeof (double) * cnt); + yy = malloc (sizeof (double) * cnt); + zz = malloc (sizeof (double) * cnt); + if (rng->DimensionModel == GAIA_XY_M + || rng->DimensionModel == GAIA_XY_Z_M) + mm = malloc (sizeof (double) * cnt); + for (i = 0; i < cnt; i++) + { + /* inserting points to be converted in temporary arrays [INTERIOR RING] */ + if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, i, &x, &y, &z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, i, &x, &y, &m); + } + else if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, i, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, i, &x, &y); + } + if (from_angle) + { + xx[i] = gaiaDegsToRads (x); + yy[i] = gaiaDegsToRads (y); + } + else + { + xx[i] = x; + yy[i] = y; + } + if (rng->DimensionModel == GAIA_XY_Z + || rng->DimensionModel == GAIA_XY_Z_M) + zz[i] = z; + else + zz[i] = 0.0; + if (rng->DimensionModel == GAIA_XY_M + || rng->DimensionModel == GAIA_XY_Z_M) + mm[i] = m; + } + /* applying reprojection */ + if (pj_transform (from_cs, to_cs, cnt, 0, xx, yy, zz) == 0) + { + /* inserting the reprojected POLYGON in the new GEOMETRY */ + dst_rng = gaiaAddInteriorRing (dst_pg, ib, cnt); + for (i = 0; i < cnt; i++) + { + /* setting INTERIOR RING points */ + if (to_angle) + { + x = gaiaRadsToDegs (xx[i]); + y = gaiaRadsToDegs (yy[i]); + } + else + { + x = xx[i]; + y = yy[i]; + } + if (rng->DimensionModel == GAIA_XY_Z + || rng->DimensionModel == GAIA_XY_Z_M) + z = zz[i]; + else + z = 0.0; + if (rng->DimensionModel == GAIA_XY_M + || rng->DimensionModel == GAIA_XY_Z_M) + m = mm[i]; + else + m = 0.0; + if (dst_rng->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (dst_rng->Coords, i, x, y, z); + } + else if (dst_rng->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (dst_rng->Coords, i, x, y, m); + } + else if (dst_rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (dst_rng->Coords, i, x, y, z, + m); + } + else + { + gaiaSetPoint (dst_rng->Coords, i, x, y); + } + } + } + else + error = 1; + free (xx); + free (yy); + free (zz); + if (rng->DimensionModel == GAIA_XY_M + || rng->DimensionModel == GAIA_XY_Z_M) + free (mm); + if (error) + goto stop; + } + pg = pg->Next; + } +/* destroying the PROJ4 params */ + stop: + pj_free (from_cs); + pj_free (to_cs); + if (error) + { + /* some error occurred */ + gaiaPointPtr pP; + gaiaPointPtr pPn; + gaiaLinestringPtr pL; + gaiaLinestringPtr pLn; + gaiaPolygonPtr pA; + gaiaPolygonPtr pAn; + pP = dst->FirstPoint; + while (pP != NULL) + { + pPn = pP->Next; + gaiaFreePoint (pP); + pP = pPn; + } + pL = dst->FirstLinestring; + while (pL != NULL) + { + pLn = pL->Next; + gaiaFreeLinestring (pL); + pL = pLn; + } + pA = dst->FirstPolygon; + while (pA != NULL) + { + pAn = pA->Next; + gaiaFreePolygon (pA); + pA = pAn; + } + dst->FirstPoint = NULL; + dst->LastPoint = NULL; + dst->FirstLinestring = NULL; + dst->LastLinestring = NULL; + dst->FirstPolygon = NULL; + dst->LastPolygon = NULL; + } + if (dst) + { + gaiaMbrGeometry (dst); + dst->DeclaredType = org->DeclaredType; + } + return dst; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaTransform (gaiaGeomCollPtr org, char *proj_from, char *proj_to) +{ + return gaiaTransformCommon (NULL, org, proj_from, proj_to); +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaTransform_r (const void *p_cache, gaiaGeomCollPtr org, char *proj_from, + char *proj_to) +{ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + projCtx handle = NULL; + if (cache == NULL) + return NULL; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return NULL; + handle = cache->PROJ_handle; + if (handle == NULL) + return NULL; + return gaiaTransformCommon (handle, org, proj_from, proj_to); +} + +#endif /* end including PROJ.4 */ diff --git a/src/spatialite/src/gaiageo/gg_vanuatu.c b/src/spatialite/src/gaiageo/gg_vanuatu.c new file mode 100644 index 0000000..9f7a98c --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_vanuatu.c @@ -0,0 +1,2097 @@ +/* + + gg_vanuatu.c -- WKT parser/lexer + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +The Vanuatu Team - University of Toronto - Supervisor: +Greg Wilson gvwilson@cs.toronto.ca + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include + +#if defined(_WIN32) || defined(WIN32) +#include +#ifndef isatty +#define isatty _isatty +#endif +#ifndef fileno +#define fileno _fileno +#endif +#endif + +#define VANUATU_DYN_NONE 0 +#define VANUATU_DYN_POINT 1 +#define VANUATU_DYN_LINESTRING 2 +#define VANUATU_DYN_POLYGON 3 +#define VANUATU_DYN_RING 4 +#define VANUATU_DYN_GEOMETRY 5 + +#define VANUATU_DYN_BLOCK 1024 + + + +/* +** CAVEAT: we must redefine any Lemon/Flex own macro +*/ +#define YYMINORTYPE VANUATU_MINORTYPE +#define YY_CHAR VANUATU_YY_CHAR +#define input vanuatu_input +#define ParseAlloc vanuatuParseAlloc +#define ParseFree vanuatuParseFree +#define ParseStackPeak vanuatuParseStackPeak +#define Parse vanuatuParse +#define yyStackEntry vanuatu_yyStackEntry +#define yyzerominor vanuatu_yyzerominor +#define yy_accept vanuatu_yy_accept +#define yy_action vanuatu_yy_action +#define yy_base vanuatu_yy_base +#define yy_buffer_stack vanuatu_yy_buffer_stack +#define yy_buffer_stack_max vanuatu_yy_buffer_stack_max +#define yy_buffer_stack_top vanuatu_yy_buffer_stack_top +#define yy_c_buf_p vanuatu_yy_c_buf_p +#define yy_chk vanuatu_yy_chk +#define yy_def vanuatu_yy_def +#define yy_default vanuatu_yy_default +#define yy_destructor vanuatu_yy_destructor +#define yy_ec vanuatu_yy_ec +#define yy_fatal_error vanuatu_yy_fatal_error +#define yy_find_reduce_action vanuatu_yy_find_reduce_action +#define yy_find_shift_action vanuatu_yy_find_shift_action +#define yy_get_next_buffer vanuatu_yy_get_next_buffer +#define yy_get_previous_state vanuatu_yy_get_previous_state +#define yy_init vanuatu_yy_init +#define yy_init_globals vanuatu_yy_init_globals +#define yy_lookahead vanuatu_yy_lookahead +#define yy_meta vanuatu_yy_meta +#define yy_nxt vanuatu_yy_nxt +#define yy_parse_failed vanuatu_yy_parse_failed +#define yy_pop_parser_stack vanuatu_yy_pop_parser_stack +#define yy_reduce vanuatu_yy_reduce +#define yy_reduce_ofst vanuatu_yy_reduce_ofst +#define yy_shift vanuatu_yy_shift +#define yy_shift_ofst vanuatu_yy_shift_ofst +#define yy_start vanuatu_yy_start +#define yy_state_type vanuatu_yy_state_type +#define yy_syntax_error vanuatu_yy_syntax_error +#define yy_trans_info vanuatu_yy_trans_info +#define yy_try_NUL_trans vanuatu_yy_try_NUL_trans +#define yyParser vanuatu_yyParser +#define yyStackEntry vanuatu_yyStackEntry +#define yyStackOverflow vanuatu_yyStackOverflow +#define yyRuleInfo vanuatu_yyRuleInfo +#define yyunput vanuatu_yyunput +#define yyzerominor vanuatu_yyzerominor +#define yyTraceFILE vanuatu_yyTraceFILE +#define yyTracePrompt vanuatu_yyTracePrompt +#define yyTokenName vanuatu_yyTokenName +#define yyRuleName vanuatu_yyRuleName +#define ParseTrace vanuatu_ParseTrace + +#define yylex vanuatu_yylex +#define YY_DECL int yylex (yyscan_t yyscanner) + + +/* including LEMON generated header */ +#include "vanuatuWkt.h" + + + +typedef union +{ + double dval; + struct symtab *symp; +} vanuatu_yystype; +#define YYSTYPE vanuatu_yystype + + +struct vanuatu_dyn_block +{ +/* a struct taking trace of dynamic allocations */ + int type[VANUATU_DYN_BLOCK]; + void *ptr[VANUATU_DYN_BLOCK]; + int index; + struct vanuatu_dyn_block *next; +}; + +struct vanuatu_data +{ +/* a struct used to make the lexer-parser reentrant and thread-safe */ + int vanuatu_parse_error; + int vanuatu_line; + int vanuatu_col; + struct vanuatu_dyn_block *vanuatu_first_dyn_block; + struct vanuatu_dyn_block *vanuatu_last_dyn_block; + gaiaGeomCollPtr result; + YYSTYPE VanuatuWktlval; +}; + +static struct vanuatu_dyn_block * +vanuatuCreateDynBlock (void) +{ +/* allocating a new block to trace dynamic allocations */ + int i; + struct vanuatu_dyn_block *p = malloc (sizeof (struct vanuatu_dyn_block)); + for (i = 0; i < VANUATU_DYN_BLOCK; i++) + { + /* initializing map entries */ + p->type[i] = VANUATU_DYN_NONE; + p->ptr[i] = NULL; + } + p->index = 0; + p->next = NULL; + return p; +} + +static void +vanuatuMapDynAlloc (struct vanuatu_data *p_data, int type, void *ptr) +{ +/* appending a dynamic allocation into the map */ + struct vanuatu_dyn_block *p; + if (p_data->vanuatu_first_dyn_block == NULL) + { + /* inserting the first block of the map */ + p = vanuatuCreateDynBlock (); + p_data->vanuatu_first_dyn_block = p; + p_data->vanuatu_last_dyn_block = p; + } + if (p_data->vanuatu_last_dyn_block->index >= VANUATU_DYN_BLOCK) + { + /* adding a further block to the map */ + p = vanuatuCreateDynBlock (); + p_data->vanuatu_last_dyn_block->next = p; + p_data->vanuatu_last_dyn_block = p; + } + p_data->vanuatu_last_dyn_block->type[p_data-> + vanuatu_last_dyn_block->index] = type; + p_data->vanuatu_last_dyn_block->ptr[p_data->vanuatu_last_dyn_block->index] = + ptr; + p_data->vanuatu_last_dyn_block->index++; +} + +static void +vanuatuMapDynClean (struct vanuatu_data *p_data, void *ptr) +{ +/* deleting a dynamic allocation from the map */ + int i; + struct vanuatu_dyn_block *p = p_data->vanuatu_first_dyn_block; + while (p) + { + for (i = 0; i < VANUATU_DYN_BLOCK; i++) + { + switch (p->type[i]) + { + case VANUATU_DYN_POINT: + case VANUATU_DYN_LINESTRING: + case VANUATU_DYN_POLYGON: + case VANUATU_DYN_RING: + case VANUATU_DYN_GEOMETRY: + if (p->ptr[i] == ptr) + { + p->type[i] = VANUATU_DYN_NONE; + return; + } + break; + }; + } + p = p->next; + } +} + +static void +vanuatuCleanMapDynAlloc (struct vanuatu_data *p_data, int clean_all) +{ +/* cleaning the dynamic allocations map */ + int i; + struct vanuatu_dyn_block *pn; + struct vanuatu_dyn_block *p = p_data->vanuatu_first_dyn_block; + while (p) + { + if (clean_all) + { + for (i = 0; i < VANUATU_DYN_BLOCK; i++) + { + /* deleting Geometry objects */ + switch (p->type[i]) + { + case VANUATU_DYN_POINT: + gaiaFreePoint ((gaiaPointPtr) (p->ptr[i])); + break; + case VANUATU_DYN_LINESTRING: + gaiaFreeLinestring ((gaiaLinestringPtr) + (p->ptr[i])); + break; + case VANUATU_DYN_POLYGON: + gaiaFreePolygon ((gaiaPolygonPtr) (p->ptr[i])); + break; + case VANUATU_DYN_RING: + gaiaFreeRing ((gaiaRingPtr) (p->ptr[i])); + break; + case VANUATU_DYN_GEOMETRY: + gaiaFreeGeomColl ((gaiaGeomCollPtr) (p->ptr[i])); + break; + }; + } + } + /* deleting the map block */ + pn = p->next; + free (p); + p = pn; + } +} + +static int +vanuatuCheckValidity (gaiaGeomCollPtr geom) +{ +/* checks if this one is a degenerated geometry */ + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + int ib; + int entities = 0; + pt = geom->FirstPoint; + while (pt) + { + /* checking points */ + entities++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + /* checking linestrings */ + if (ln->Points < 2) + return 0; + entities++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + /* checking polygons */ + rng = pg->Exterior; + if (rng->Points < 4) + return 0; + for (ib = 0; ib < pg->NumInteriors; ib++) + { + rng = pg->Interiors + ib; + if (rng->Points < 4) + return 0; + } + entities++; + pg = pg->Next; + } + if (!entities) + return 0; + return 1; +} + +static gaiaGeomCollPtr +gaiaGeometryFromPoint (struct vanuatu_data *p_data, gaiaPointPtr point) +{ +/* builds a GEOMETRY containing a POINT */ + gaiaGeomCollPtr geom = NULL; + geom = gaiaAllocGeomColl (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_POINT; + gaiaAddPointToGeomColl (geom, point->X, point->Y); + vanuatuMapDynClean (p_data, point); + gaiaFreePoint (point); + return geom; +} + +static gaiaGeomCollPtr +gaiaGeometryFromPointZ (struct vanuatu_data *p_data, gaiaPointPtr point) +{ +/* builds a GEOMETRY containing a POINTZ */ + gaiaGeomCollPtr geom = NULL; + geom = gaiaAllocGeomCollXYZ (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_POINTZ; + gaiaAddPointToGeomCollXYZ (geom, point->X, point->Y, point->Z); + vanuatuMapDynClean (p_data, point); + gaiaFreePoint (point); + return geom; +} + +static gaiaGeomCollPtr +gaiaGeometryFromPointM (struct vanuatu_data *p_data, gaiaPointPtr point) +{ +/* builds a GEOMETRY containing a POINTM */ + gaiaGeomCollPtr geom = NULL; + geom = gaiaAllocGeomCollXYM (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_POINTM; + gaiaAddPointToGeomCollXYM (geom, point->X, point->Y, point->M); + vanuatuMapDynClean (p_data, point); + gaiaFreePoint (point); + return geom; +} + +static gaiaGeomCollPtr +gaiaGeometryFromPointZM (struct vanuatu_data *p_data, gaiaPointPtr point) +{ +/* builds a GEOMETRY containing a POINTZM */ + gaiaGeomCollPtr geom = NULL; + geom = gaiaAllocGeomCollXYZM (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_POINTZM; + gaiaAddPointToGeomCollXYZM (geom, point->X, point->Y, point->Z, point->M); + vanuatuMapDynClean (p_data, point); + gaiaFreePoint (point); + return geom; +} + +static gaiaGeomCollPtr +gaiaGeometryFromLinestring (struct vanuatu_data *p_data, gaiaLinestringPtr line) +{ +/* builds a GEOMETRY containing a LINESTRING */ + gaiaGeomCollPtr geom = NULL; + gaiaLinestringPtr line2; + int iv; + double x; + double y; + geom = gaiaAllocGeomColl (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_LINESTRING; + line2 = gaiaAddLinestringToGeomColl (geom, line->Points); + for (iv = 0; iv < line2->Points; iv++) + { + /* sets the POINTS for the exterior ring */ + gaiaGetPoint (line->Coords, iv, &x, &y); + gaiaSetPoint (line2->Coords, iv, x, y); + } + vanuatuMapDynClean (p_data, line); + gaiaFreeLinestring (line); + return geom; +} + +static gaiaGeomCollPtr +gaiaGeometryFromLinestringZ (struct vanuatu_data *p_data, + gaiaLinestringPtr line) +{ +/* builds a GEOMETRY containing a LINESTRINGZ */ + gaiaGeomCollPtr geom = NULL; + gaiaLinestringPtr line2; + int iv; + double x; + double y; + double z; + geom = gaiaAllocGeomCollXYZ (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_LINESTRING; + line2 = gaiaAddLinestringToGeomColl (geom, line->Points); + for (iv = 0; iv < line2->Points; iv++) + { + /* sets the POINTS for the exterior ring */ + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (line2->Coords, iv, x, y, z); + } + vanuatuMapDynClean (p_data, line); + gaiaFreeLinestring (line); + return geom; +} + + +static gaiaGeomCollPtr +gaiaGeometryFromLinestringM (struct vanuatu_data *p_data, + gaiaLinestringPtr line) +{ +/* builds a GEOMETRY containing a LINESTRINGM */ + gaiaGeomCollPtr geom = NULL; + gaiaLinestringPtr line2; + int iv; + double x; + double y; + double m; + geom = gaiaAllocGeomCollXYM (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_LINESTRING; + line2 = gaiaAddLinestringToGeomColl (geom, line->Points); + for (iv = 0; iv < line2->Points; iv++) + { + /* sets the POINTS for the exterior ring */ + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (line2->Coords, iv, x, y, m); + } + vanuatuMapDynClean (p_data, line); + gaiaFreeLinestring (line); + return geom; +} + +static gaiaGeomCollPtr +gaiaGeometryFromLinestringZM (struct vanuatu_data *p_data, + gaiaLinestringPtr line) +{ +/* builds a GEOMETRY containing a LINESTRINGZM */ + gaiaGeomCollPtr geom = NULL; + gaiaLinestringPtr line2; + int iv; + double x; + double y; + double z; + double m; + geom = gaiaAllocGeomCollXYZM (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_LINESTRING; + line2 = gaiaAddLinestringToGeomColl (geom, line->Points); + for (iv = 0; iv < line2->Points; iv++) + { + /* sets the POINTS for the exterior ring */ + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (line2->Coords, iv, x, y, z, m); + } + vanuatuMapDynClean (p_data, line); + gaiaFreeLinestring (line); + return geom; +} + +/****************************************************************************** +** The following code was created by Team Vanuatu of The University of Toronto. +** It is responsible for handling the parsing of wkt expressions. The parser +** is built using LEMON and the cooresponding methods were written by the +** students. + +Authors: +Ruppi Rana ruppi.rana@gmail.com +Dev Tanna dev.tanna@gmail.com +Elias Adum elias.adum@gmail.com +Benton Hui benton.hui@gmail.com +Abhayan Sundararajan abhayan@gmail.com +Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com +Nikola Banovic nikola.banovic@gmail.com +Yong Jian yong.jian@utoronto.ca + +Supervisor: +Greg Wilson gvwilson@cs.toronto.ca + +------------------------------------------------------------------------------- +*/ + +/* + * Creates a 2D (xy) point in SpatiaLite + * x and y are pointers to doubles which represent the x and y coordinates of the point to be created. + * Returns a gaiaPointPtr representing the created point. + * + * Creates a 2D (xy) point. This is a parser helper function which is called when 2D coordinates are encountered. + * Parameters x and y are pointers to doubles which represent the x and y coordinates of the point to be created. + * Returns a gaiaPointPtr pointing to the created 2D point. + */ +static gaiaPointPtr +vanuatu_point_xy (struct vanuatu_data *p_data, double *x, double *y) +{ + gaiaPointPtr pt = gaiaAllocPoint (*x, *y); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_POINT, pt); + return pt; +} + +/* + * Creates a 3D (xyz) point in SpatiaLite + * x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. + * Returns a gaiaPointPtr representing the created point. + * + * Creates a 3D (xyz) point. This is a parser helper function which is called when 3D coordinates are encountered. + * Parameters x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. + * Returns a gaiaPointPtr pointing to the 3D created point. + */ +static gaiaPointPtr +vanuatu_point_xyz (struct vanuatu_data *p_data, double *x, double *y, double *z) +{ + gaiaPointPtr pt = gaiaAllocPointXYZ (*x, *y, *z); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_POINT, pt); + return pt; +} + +/* + * Creates a 2D (xy) point with an m value which is a part of the linear reference system. This is a parser helper + * function which is called when 2D *coordinates with an m value are encountered. + * Parameters x and y are pointers to doubles which represent the x and y coordinates of the point to be created. + * Parameter m is a pointer to a double which represents the part of the linear reference system. + * Returns a gaiaPointPtr pointing to the created 2D point with an m value. + */ +static gaiaPointPtr +vanuatu_point_xym (struct vanuatu_data *p_data, double *x, double *y, double *m) +{ + gaiaPointPtr pt = gaiaAllocPointXYM (*x, *y, *m); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_POINT, pt); + return pt; +} + +/* + * Creates a 4D (xyz) point with an m value which is a part of the linear reference system. This is a parser helper + * function which is called when *4Dcoordinates with an m value are encountered + * Parameters x, y, and z are pointers to doubles which represent the x, y, and z coordinates of the point to be created. + * Parameter m is a pointer to a double which represents the part of the linear reference system. + * Returns a gaiaPointPtr pointing the created 4D point with an m value. + */ +gaiaPointPtr +vanuatu_point_xyzm (struct vanuatu_data * p_data, double *x, double *y, + double *z, double *m) +{ + gaiaPointPtr pt = gaiaAllocPointXYZM (*x, *y, *z, *m); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_POINT, pt); + return pt; +} + +/* + * Builds a geometry collection from a point. The geometry collection should contain only one element ? the point. + * The correct geometry type must be *decided based on the point type. The parser should call this function when the + * ?POINT? WKT expression is encountered. + * Parameter point is a pointer to a 2D, 3D, 2D with an m value, or 4D with an m value point. + * Returns a geometry collection containing the point. The geometry must have FirstPoint and LastPoint pointing to the + * same place as point. *DimensionModel must be the same as the model of the point and DimensionType must be GAIA_TYPE_POINT. + */ +static gaiaGeomCollPtr +vanuatu_buildGeomFromPoint (struct vanuatu_data *p_data, gaiaPointPtr point) +{ + switch (point->DimensionModel) + { + case GAIA_XY: + return gaiaGeometryFromPoint (p_data, point); + case GAIA_XY_Z: + return gaiaGeometryFromPointZ (p_data, point); + case GAIA_XY_M: + return gaiaGeometryFromPointM (p_data, point); + case GAIA_XY_Z_M: + return gaiaGeometryFromPointZM (p_data, point); + } + return NULL; +} + +/* + * Creates a 2D (xy) linestring from a list of 2D points. + * + * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. + * All of the points in the list must be 2D (xy) points. There must be at least 2 points in the list. + * + * Returns a pointer to linestring containing all of the points in the list. + */ +static gaiaLinestringPtr +vanuatu_linestring_xy (struct vanuatu_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + int points = 0; + int i = 0; + gaiaLinestringPtr linestring; + + while (p != NULL) + { + p = p->Next; + points++; + } + + linestring = gaiaAllocLinestring (points); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_LINESTRING, linestring); + + p = first; + while (p != NULL) + { + gaiaSetPoint (linestring->Coords, i, p->X, p->Y); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + i++; + } + + return linestring; +} + +/* + * Creates a 3D (xyz) linestring from a list of 3D points. + * + * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. + * All of the points in the list must be 3D (xyz) points. There must be at least 2 points in the list. + * + * Returns a pointer to linestring containing all of the points in the list. + */ +static gaiaLinestringPtr +vanuatu_linestring_xyz (struct vanuatu_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + int points = 0; + int i = 0; + gaiaLinestringPtr linestring; + + while (p != NULL) + { + p = p->Next; + points++; + } + + linestring = gaiaAllocLinestringXYZ (points); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_LINESTRING, linestring); + + p = first; + while (p != NULL) + { + gaiaSetPointXYZ (linestring->Coords, i, p->X, p->Y, p->Z); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + i++; + } + + return linestring; +} + +/* + * Creates a 2D (xy) with m value linestring from a list of 2D with m value points. + * + * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. + * All of the points in the list must be 2D (xy) with m value points. There must be at least 2 points in the list. + * + * Returns a pointer to linestring containing all of the points in the list. + */ +static gaiaLinestringPtr +vanuatu_linestring_xym (struct vanuatu_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + int points = 0; + int i = 0; + gaiaLinestringPtr linestring; + + while (p != NULL) + { + p = p->Next; + points++; + } + + linestring = gaiaAllocLinestringXYM (points); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_LINESTRING, linestring); + + p = first; + while (p != NULL) + { + gaiaSetPointXYM (linestring->Coords, i, p->X, p->Y, p->M); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + i++; + } + + return linestring; +} + +/* + * Creates a 4D (xyz) with m value linestring from a list of 4D with m value points. + * + * Parameter first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. + * All of the points in the list must be 4D (xyz) with m value points. There must be at least 2 points in the list. + * + * Returns a pointer to linestring containing all of the points in the list. + */ +static gaiaLinestringPtr +vanuatu_linestring_xyzm (struct vanuatu_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + int points = 0; + int i = 0; + gaiaLinestringPtr linestring; + + while (p != NULL) + { + p = p->Next; + points++; + } + + linestring = gaiaAllocLinestringXYZM (points); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_LINESTRING, linestring); + + p = first; + while (p != NULL) + { + gaiaSetPointXYZM (linestring->Coords, i, p->X, p->Y, p->Z, p->M); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + i++; + } + + return linestring; +} + +/* + * Builds a geometry collection from a linestring. + */ +static gaiaGeomCollPtr +vanuatu_buildGeomFromLinestring (struct vanuatu_data *p_data, + gaiaLinestringPtr line) +{ + switch (line->DimensionModel) + { + case GAIA_XY: + return gaiaGeometryFromLinestring (p_data, line); + case GAIA_XY_Z: + return gaiaGeometryFromLinestringZ (p_data, line); + case GAIA_XY_M: + return gaiaGeometryFromLinestringM (p_data, line); + case GAIA_XY_Z_M: + return gaiaGeometryFromLinestringZM (p_data, line); + } + return NULL; +} + +/* + * Helper function that determines the number of points in the linked list. + */ +static int +vanuatu_count_points (gaiaPointPtr first) +{ + /* Counts the number of points in the ring. */ + gaiaPointPtr p = first; + int numpoints = 0; + while (p != NULL) + { + numpoints++; + p = p->Next; + } + return numpoints; +} + +/* + * Creates a 2D (xy) ring in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. + * All of the points given to the function are 2D (xy) points. There will be at least 4 points in the list. + * + * Returns the ring defined by the points given to the function. + */ +static gaiaRingPtr +vanuatu_ring_xy (struct vanuatu_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaRingPtr ring = NULL; + int numpoints; + int index; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Counts the number of points in the ring. */ + numpoints = vanuatu_count_points (first); + if (numpoints < 4) + return NULL; + + /* Creates and allocates a ring structure. */ + ring = gaiaAllocRing (numpoints); + if (ring == NULL) + return NULL; + vanuatuMapDynAlloc (p_data, VANUATU_DYN_RING, ring); + + /* Adds every point into the ring structure. */ + p = first; + for (index = 0; index < numpoints; index++) + { + gaiaSetPoint (ring->Coords, index, p->X, p->Y); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + + return ring; +} + +/* + * Creates a 3D (xyz) ring in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. + * All of the points given to the function are 3D (xyz) points. There will be at least 4 points in the list. + * + * Returns the ring defined by the points given to the function. + */ +static gaiaRingPtr +vanuatu_ring_xyz (struct vanuatu_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaRingPtr ring = NULL; + int numpoints; + int index; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Counts the number of points in the ring. */ + numpoints = vanuatu_count_points (first); + if (numpoints < 4) + return NULL; + + /* Creates and allocates a ring structure. */ + ring = gaiaAllocRingXYZ (numpoints); + if (ring == NULL) + return NULL; + vanuatuMapDynAlloc (p_data, VANUATU_DYN_RING, ring); + + /* Adds every point into the ring structure. */ + p = first; + for (index = 0; index < numpoints; index++) + { + gaiaSetPointXYZ (ring->Coords, index, p->X, p->Y, p->Z); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + + return ring; +} + +/* + * Creates a 2D (xym) ring in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. + * All of the points given to the function are 2D (xym) points. There will be at least 4 points in the list. + * + * Returns the ring defined by the points given to the function. + */ +static gaiaRingPtr +vanuatu_ring_xym (struct vanuatu_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaRingPtr ring = NULL; + int numpoints; + int index; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Counts the number of points in the ring. */ + numpoints = vanuatu_count_points (first); + if (numpoints < 4) + return NULL; + + /* Creates and allocates a ring structure. */ + ring = gaiaAllocRingXYM (numpoints); + if (ring == NULL) + return NULL; + vanuatuMapDynAlloc (p_data, VANUATU_DYN_RING, ring); + + /* Adds every point into the ring structure. */ + p = first; + for (index = 0; index < numpoints; index++) + { + gaiaSetPointXYM (ring->Coords, index, p->X, p->Y, p->M); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + + return ring; +} + +/* + * Creates a 3D (xyzm) ring in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points which define the polygon. + * All of the points given to the function are 3D (xyzm) points. There will be at least 4 points in the list. + * + * Returns the ring defined by the points given to the function. + */ +static gaiaRingPtr +vanuatu_ring_xyzm (struct vanuatu_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaRingPtr ring = NULL; + int numpoints; + int index; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Counts the number of points in the ring. */ + numpoints = vanuatu_count_points (first); + if (numpoints < 4) + return NULL; + + /* Creates and allocates a ring structure. */ + ring = gaiaAllocRingXYZM (numpoints); + if (ring == NULL) + return NULL; + vanuatuMapDynAlloc (p_data, VANUATU_DYN_RING, ring); + + /* Adds every point into the ring structure. */ + p = first; + for (index = 0; index < numpoints; index++) + { + gaiaSetPointXYZM (ring->Coords, index, p->X, p->Y, p->Z, p->M); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + + return ring; +} + +/* + * Helper function that will create any type of polygon (xy, xym, xyz, xyzm) in SpatiaLite. + * + * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. + * The first ring in the linked list is the external ring while the rest (if any) are internal rings. + * All of the rings given to the function are of the same type. There will be at least 1 ring in the list. + * + * Returns the polygon defined by the rings given to the function. + */ +static gaiaPolygonPtr +vanuatu_polygon_any_type (struct vanuatu_data *p_data, gaiaRingPtr first) +{ + gaiaRingPtr p; + gaiaRingPtr p_n; + gaiaPolygonPtr polygon; + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Creates and allocates a polygon structure with the exterior ring. */ + polygon = gaiaCreatePolygon (first); + if (polygon == NULL) + return NULL; + vanuatuMapDynAlloc (p_data, VANUATU_DYN_POLYGON, polygon); + + /* Adds all interior rings into the polygon structure. */ + p = first; + while (p != NULL) + { + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + if (p == first) + gaiaFreeRing (p); + else + gaiaAddRingToPolyg (polygon, p); + p = p_n; + } + + return polygon; +} + +/* + * Creates a 2D (xy) polygon in SpatiaLite + * + * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. + * The first ring in the linked list is the external ring while the rest (if any) are internal rings. + * All of the rings given to the function are 2D (xy) rings. There will be at least 1 ring in the list. + * + * Returns the polygon defined by the rings given to the function. + */ +static gaiaPolygonPtr +vanuatu_polygon_xy (struct vanuatu_data *p_data, gaiaRingPtr first) +{ + return vanuatu_polygon_any_type (p_data, first); +} + +/* + * Creates a 3D (xyz) polygon in SpatiaLite + * + * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. + * The first ring in the linked list is the external ring while the rest (if any) are internal rings. + * All of the rings given to the function are 3D (xyz) rings. There will be at least 1 ring in the list. + * + * Returns the polygon defined by the rings given to the function. + */ +static gaiaPolygonPtr +vanuatu_polygon_xyz (struct vanuatu_data *p_data, gaiaRingPtr first) +{ + return vanuatu_polygon_any_type (p_data, first); +} + +/* + * Creates a 2D (xym) polygon in SpatiaLite + * + * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. + * The first ring in the linked list is the external ring while the rest (if any) are internal rings. + * All of the rings given to the function are 2D (xym) rings. There will be at least 1 ring in the list. + * + * Returns the polygon defined by the rings given to the function. + */ +static gaiaPolygonPtr +vanuatu_polygon_xym (struct vanuatu_data *p_data, gaiaRingPtr first) +{ + return vanuatu_polygon_any_type (p_data, first); +} + +/* + * Creates a 3D (xyzm) polygon in SpatiaLite + * + * first is a gaiaRingPtr to the first ring in a linked list of rings which define the polygon. + * The first ring in the linked list is the external ring while the rest (if any) are internal rings. + * All of the rings given to the function are 3D (xyzm) rings. There will be at least 1 ring in the list. + * + * Returns the polygon defined by the rings given to the function. + */ +static gaiaPolygonPtr +vanuatu_polygon_xyzm (struct vanuatu_data *p_data, gaiaRingPtr first) +{ + return vanuatu_polygon_any_type (p_data, first); +} + +/* + * Builds a geometry collection from a polygon. + * NOTE: This function may already be implemented in the SpatiaLite code base. If it is, make sure that we + * can use it (ie. it doesn't use any other variables or anything else set by Sandro's parser). If you find + * that we can use an existing function then ignore this one. + */ +static gaiaGeomCollPtr +vanuatu_buildGeomFromPolygon (struct vanuatu_data *p_data, + gaiaPolygonPtr polygon) +{ + gaiaGeomCollPtr geom = NULL; + + /* If no pointers are given, return. */ + if (polygon == NULL) + { + return NULL; + } + + /* Creates and allocates a geometry collection containing a multipoint. */ + switch (polygon->DimensionModel) + { + case GAIA_XY: + geom = gaiaAllocGeomColl (); + break; + case GAIA_XY_Z: + geom = gaiaAllocGeomCollXYZ (); + break; + case GAIA_XY_M: + geom = gaiaAllocGeomCollXYM (); + break; + case GAIA_XY_Z_M: + geom = gaiaAllocGeomCollXYZM (); + break; + } + if (geom == NULL) + { + return NULL; + } + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_POLYGON; + + /* Stores the location of the first and last polygons in the linked list. */ + geom->FirstPolygon = polygon; + while (polygon != NULL) + { + vanuatuMapDynClean (p_data, polygon); + geom->LastPolygon = polygon; + polygon = polygon->Next; + } + return geom; +} + +/* + * Creates a 2D (xy) multipoint object in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points. + * All of the points given to the function are 2D (xy) points. There will be at least 1 point in the list. + * + * Returns a geometry collection containing the created multipoint object. + */ +static gaiaGeomCollPtr +vanuatu_multipoint_xy (struct vanuatu_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaGeomCollPtr geom = NULL; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Creates and allocates a geometry collection containing a multipoint. */ + geom = gaiaAllocGeomColl (); + if (geom == NULL) + return NULL; + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_MULTIPOINT; + + /* For every 2D (xy) point, add it to the geometry collection. */ + while (p != NULL) + { + gaiaAddPointToGeomColl (geom, p->X, p->Y); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + return geom; +} + +/* + * Creates a 3D (xyz) multipoint object in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points. + * All of the points given to the function are 3D (xyz) points. There will be at least 1 point in the list. + * + * Returns a geometry collection containing the created multipoint object. + */ +static gaiaGeomCollPtr +vanuatu_multipoint_xyz (struct vanuatu_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaGeomCollPtr geom = NULL; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Creates and allocates a geometry collection containing a multipoint. */ + geom = gaiaAllocGeomCollXYZ (); + if (geom == NULL) + return NULL; + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_MULTIPOINT; + + /* For every 3D (xyz) point, add it to the geometry collection. */ + while (p != NULL) + { + gaiaAddPointToGeomCollXYZ (geom, p->X, p->Y, p->Z); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + return geom; +} + +/* + * Creates a 2D (xym) multipoint object in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points. + * All of the points given to the function are 2D (xym) points. There will be at least 1 point in the list. + * + * Returns a geometry collection containing the created multipoint object. + */ +static gaiaGeomCollPtr +vanuatu_multipoint_xym (struct vanuatu_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaGeomCollPtr geom = NULL; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Creates and allocates a geometry collection containing a multipoint. */ + geom = gaiaAllocGeomCollXYM (); + if (geom == NULL) + return NULL; + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_MULTIPOINT; + + /* For every 2D (xym) point, add it to the geometry collection. */ + while (p != NULL) + { + gaiaAddPointToGeomCollXYM (geom, p->X, p->Y, p->M); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + return geom; +} + +/* + * Creates a 3D (xyzm) multipoint object in SpatiaLite + * + * first is a gaiaPointPtr to the first point in a linked list of points which define the linestring. + * All of the points given to the function are 3D (xyzm) points. There will be at least 1 point in the list. + * + * Returns a geometry collection containing the created multipoint object. + */ +static gaiaGeomCollPtr +vanuatu_multipoint_xyzm (struct vanuatu_data *p_data, gaiaPointPtr first) +{ + gaiaPointPtr p = first; + gaiaPointPtr p_n; + gaiaGeomCollPtr geom = NULL; + + /* If no pointers are given, return. */ + if (first == NULL) + return NULL; + + /* Creates and allocates a geometry collection containing a multipoint. */ + geom = gaiaAllocGeomCollXYZM (); + if (geom == NULL) + return NULL; + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_MULTIPOINT; + + /* For every 3D (xyzm) point, add it to the geometry collection. */ + while (p != NULL) + { + gaiaAddPointToGeomCollXYZM (geom, p->X, p->Y, p->Z, p->M); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePoint (p); + p = p_n; + } + return geom; +} + +/* + * Creates a geometry collection containing 2D (xy) linestrings. + * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the + * collection. All of the *linestrings in the list must be 2D (xy) linestrings. There must be at least 1 linestring in the list. + * Returns a pointer to the created geometry collection of 2D linestrings. The geometry must have FirstLinestring pointing to the + * first linestring in the list pointed by first and LastLinestring pointing to the last element of the same list. DimensionModel + * must be GAIA_XY and DimensionType must be *GAIA_TYPE_LINESTRING. + */ + +static gaiaGeomCollPtr +vanuatu_multilinestring_xy (struct vanuatu_data *p_data, + gaiaLinestringPtr first) +{ + gaiaLinestringPtr p = first; + gaiaLinestringPtr p_n; + gaiaLinestringPtr new_line; + gaiaGeomCollPtr a = gaiaAllocGeomColl (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, a); + a->DeclaredType = GAIA_MULTILINESTRING; + a->DimensionModel = GAIA_XY; + + while (p) + { + new_line = gaiaAddLinestringToGeomColl (a, p->Points); + gaiaCopyLinestringCoords (new_line, p); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreeLinestring (p); + p = p_n; + } + + return a; +} + +/* + * Returns a geometry collection containing the created multilinestring object (?). + * Creates a geometry collection containing 3D (xyz) linestrings. + * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the + * collection. All of the *linestrings in the list must be 3D (xyz) linestrings. There must be at least 1 linestring in the list. + * Returns a pointer to the created geometry collection of 3D linestrings. The geometry must have FirstLinestring pointing to the + * first linestring in the *list pointed by first and LastLinestring pointing to the last element of the same list. DimensionModel + * must be GAIA_XYZ and DimensionType must be *GAIA_TYPE_LINESTRING. + */ +static gaiaGeomCollPtr +vanuatu_multilinestring_xyz (struct vanuatu_data *p_data, + gaiaLinestringPtr first) +{ + gaiaLinestringPtr p = first; + gaiaLinestringPtr p_n; + gaiaLinestringPtr new_line; + gaiaGeomCollPtr a = gaiaAllocGeomCollXYZ (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, a); + a->DeclaredType = GAIA_MULTILINESTRING; + a->DimensionModel = GAIA_XY_Z; + + while (p) + { + new_line = gaiaAddLinestringToGeomColl (a, p->Points); + gaiaCopyLinestringCoords (new_line, p); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreeLinestring (p); + p = p_n; + } + return a; +} + +/* + * Creates a geometry collection containing 2D (xy) with m value linestrings. + * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the + * collection. All of the *linestrings in the list must be 2D (xy) with m value linestrings. There must be at least 1 linestring + * in the list. + * Returns a pointer to the created geometry collection of 2D with m value linestrings. The geometry must have FirstLinestring + * pointing to the first *linestring in the list pointed by first and LastLinestring pointing to the last element of the same list. + * DimensionModel must be GAIA_XYM and *DimensionType must be GAIA_TYPE_LINESTRING. + */ +static gaiaGeomCollPtr +vanuatu_multilinestring_xym (struct vanuatu_data *p_data, + gaiaLinestringPtr first) +{ + gaiaLinestringPtr p = first; + gaiaLinestringPtr p_n; + gaiaLinestringPtr new_line; + gaiaGeomCollPtr a = gaiaAllocGeomCollXYM (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, a); + a->DeclaredType = GAIA_MULTILINESTRING; + a->DimensionModel = GAIA_XY_M; + + while (p) + { + new_line = gaiaAddLinestringToGeomColl (a, p->Points); + gaiaCopyLinestringCoords (new_line, p); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreeLinestring (p); + p = p_n; + } + + return a; +} + +/* + * Creates a geometry collection containing 4D (xyz) with m value linestrings. + * Parameter first is a gaiaLinestringPtr to the first linestring in a linked list of linestrings which should be added to the + * collection. All of the *linestrings in the list must be 4D (xyz) with m value linestrings. There must be at least 1 linestring + * in the list. + * Returns a pointer to the created geometry collection of 4D with m value linestrings. The geometry must have FirstLinestring + * pointing to the first *linestring in the list pointed by first and LastLinestring pointing to the last element of the same list. + * DimensionModel must be GAIA_XYZM and *DimensionType must be GAIA_TYPE_LINESTRING. + */ +static gaiaGeomCollPtr +vanuatu_multilinestring_xyzm (struct vanuatu_data *p_data, + gaiaLinestringPtr first) +{ + gaiaLinestringPtr p = first; + gaiaLinestringPtr p_n; + gaiaLinestringPtr new_line; + gaiaGeomCollPtr a = gaiaAllocGeomCollXYZM (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, a); + a->DeclaredType = GAIA_MULTILINESTRING; + a->DimensionModel = GAIA_XY_Z_M; + + while (p) + { + new_line = gaiaAddLinestringToGeomColl (a, p->Points); + gaiaCopyLinestringCoords (new_line, p); + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreeLinestring (p); + p = p_n; + } + return a; +} + +/* + * Creates a geometry collection containing 2D (xy) polygons. + * + * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should + * be added to the collection. All of the polygons in the list must be 2D (xy) polygons. There must be + * at least 1 polygon in the list. + * + * Returns a pointer to the created geometry collection of 2D polygons. The geometry must have + * FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing + * to the last element of the same list. DimensionModel must be GAIA_XY and DimensionType must + * be GAIA_TYPE_POLYGON. + * + */ +static gaiaGeomCollPtr +vanuatu_multipolygon_xy (struct vanuatu_data *p_data, gaiaPolygonPtr first) +{ + gaiaPolygonPtr p = first; + gaiaPolygonPtr p_n; + int i = 0; + gaiaPolygonPtr new_polyg; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + gaiaGeomCollPtr geom = gaiaAllocGeomColl (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + + geom->DeclaredType = GAIA_MULTIPOLYGON; + + while (p) + { + i_ring = p->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); + o_ring = new_polyg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + + for (i = 0; i < new_polyg->NumInteriors; i++) + { + i_ring = p->Interiors + i; + o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePolygon (p); + p = p_n; + } + + return geom; +} + +/* + * Creates a geometry collection containing 3D (xyz) polygons. + * + * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should be + * added to the collection. All of the polygons in the list must be 3D (xyz) polygons. There must be at + * least 1 polygon in the list. + * + * Returns a pointer to the created geometry collection of 3D polygons. The geometry must have + * FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing to + * the last element of the same list. DimensionModel must be GAIA_XYZ and DimensionType must + * be GAIA_TYPE_POLYGON. + * + */ +static gaiaGeomCollPtr +vanuatu_multipolygon_xyz (struct vanuatu_data *p_data, gaiaPolygonPtr first) +{ + gaiaPolygonPtr p = first; + gaiaPolygonPtr p_n; + int i = 0; + gaiaPolygonPtr new_polyg; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + gaiaGeomCollPtr geom = gaiaAllocGeomCollXYZ (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + + geom->DeclaredType = GAIA_MULTIPOLYGON; + + while (p) + { + i_ring = p->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); + o_ring = new_polyg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + + for (i = 0; i < new_polyg->NumInteriors; i++) + { + i_ring = p->Interiors + i; + o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePolygon (p); + p = p_n; + } + + return geom; +} + +/* + * Creates a geometry collection containing 2D (xy) with m value polygons. + * + * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should + * be added to the collection. All of the polygons in the list must be 2D (xy) with m value polygons. + * There must be at least 1 polygon in the list. + * + * Returns a pointer to the created geometry collection of 2D with m value polygons. The geometry + * must have FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon + * pointing to the last element of the same list. DimensionModel must be GAIA_XYM and DimensionType + * must be GAIA_TYPE_POLYGON. + * + */ +static gaiaGeomCollPtr +vanuatu_multipolygon_xym (struct vanuatu_data *p_data, gaiaPolygonPtr first) +{ + gaiaPolygonPtr p = first; + gaiaPolygonPtr p_n; + int i = 0; + gaiaPolygonPtr new_polyg; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + gaiaGeomCollPtr geom = gaiaAllocGeomCollXYM (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + + geom->DeclaredType = GAIA_MULTIPOLYGON; + + while (p) + { + i_ring = p->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); + o_ring = new_polyg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + + for (i = 0; i < new_polyg->NumInteriors; i++) + { + i_ring = p->Interiors + i; + o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePolygon (p); + p = p_n; + } + + return geom; +} + +/* + * Creates a geometry collection containing 4D (xyz) with m value polygons. + * + * Parameter first is a gaiaPolygonPtr to the first polygon in a linked list of polygons which should be + * added to the collection. All of the polygons in the list must be 4D (xyz) with m value polygons. + * There must be at least 1 polygon in the list. + * + * Returns a pointer to the created geometry collection of 4D with m value polygons. The geometry must + * have FirstPolygon pointing to the first polygon in the list pointed by first and LastPolygon pointing +// * to the last element of the same list. DimensionModel must be GAIA_XYZM and DimensionType must + * be GAIA_TYPE_POLYGON. + * + */ +static gaiaGeomCollPtr +vanuatu_multipolygon_xyzm (struct vanuatu_data *p_data, gaiaPolygonPtr first) +{ + gaiaPolygonPtr p = first; + gaiaPolygonPtr p_n; + int i = 0; + gaiaPolygonPtr new_polyg; + gaiaRingPtr i_ring; + gaiaRingPtr o_ring; + gaiaGeomCollPtr geom = gaiaAllocGeomCollXYZM (); + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + + geom->DeclaredType = GAIA_MULTIPOLYGON; + + while (p) + { + i_ring = p->Exterior; + new_polyg = + gaiaAddPolygonToGeomColl (geom, i_ring->Points, p->NumInteriors); + o_ring = new_polyg->Exterior; + gaiaCopyRingCoords (o_ring, i_ring); + + for (i = 0; i < new_polyg->NumInteriors; i++) + { + i_ring = p->Interiors + i; + o_ring = gaiaAddInteriorRing (new_polyg, i, i_ring->Points); + gaiaCopyRingCoords (o_ring, i_ring); + } + + p_n = p->Next; + vanuatuMapDynClean (p_data, p); + gaiaFreePolygon (p); + p = p_n; + } + + return geom; +} + +static void +vanuatu_geomColl_common (struct vanuatu_data *p_data, gaiaGeomCollPtr org, + gaiaGeomCollPtr dst) +{ +/* +/ helper function: xfers entities between the Origin and Destination +/ Sandro Furieri: 2010 October 12 +*/ + gaiaGeomCollPtr p = org; + gaiaGeomCollPtr p_n; + gaiaPointPtr pt; + gaiaPointPtr pt_n; + gaiaLinestringPtr ln; + gaiaLinestringPtr ln_n; + gaiaPolygonPtr pg; + gaiaPolygonPtr pg_n; + while (p) + { + pt = p->FirstPoint; + while (pt) + { + pt_n = pt->Next; + pt->Next = NULL; + if (dst->FirstPoint == NULL) + dst->FirstPoint = pt; + if (dst->LastPoint != NULL) + dst->LastPoint->Next = pt; + dst->LastPoint = pt; + pt = pt_n; + } + ln = p->FirstLinestring; + while (ln) + { + ln_n = ln->Next; + ln->Next = NULL; + if (dst->FirstLinestring == NULL) + dst->FirstLinestring = ln; + if (dst->LastLinestring != NULL) + dst->LastLinestring->Next = ln; + dst->LastLinestring = ln; + ln = ln_n; + } + pg = p->FirstPolygon; + while (pg) + { + pg_n = pg->Next; + pg->Next = NULL; + if (dst->FirstPolygon == NULL) + dst->FirstPolygon = pg; + if (dst->LastPolygon != NULL) + dst->LastPolygon->Next = pg; + dst->LastPolygon = pg; + pg = pg_n; + } + p_n = p->Next; + p->FirstPoint = NULL; + p->LastPoint = NULL; + p->FirstLinestring = NULL; + p->LastLinestring = NULL; + p->FirstPolygon = NULL; + p->LastPolygon = NULL; + vanuatuMapDynClean (p_data, p); + gaiaFreeGeomColl (p); + p = p_n; + } +} + +/* Creates a 2D (xy) geometry collection in SpatiaLite + * + * first is the first geometry collection in a linked list of geometry collections. + * Each geometry collection represents a single type of object (eg. one could be a POINT, + * another could be a LINESTRING, another could be a MULTILINESTRING, etc.). + * + * The type of object represented by any geometry collection is stored in the declaredType + * field of its struct. For example, if first->declaredType = GAIA_POINT, then first represents a point. + * If first->declaredType = GAIA_MULTIPOINT, then first represents a multipoint. + * + * NOTE: geometry collections cannot contain other geometry collections (have to confirm this + * with Sandro). + * + * The goal of this function is to take the information from all of the structs in the linked list and + * return one geomColl struct containing all of that information. + * + * The integers used for 'declaredType' are defined in gaiageo.h. In this function, the only values + * contained in 'declaredType' that will be encountered will be: + * + * GAIA_POINT, GAIA_LINESTRING, GAIA_POLYGON, + * GAIA_MULTIPOINT, GAIA_MULTILINESTRING, GAIA_MULTIPOLYGON + */ +static gaiaGeomCollPtr +vanuatu_geomColl_xy (struct vanuatu_data *p_data, gaiaGeomCollPtr first) +{ + gaiaGeomCollPtr geom = gaiaAllocGeomColl (); + if (geom == NULL) + return NULL; + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + geom->DimensionModel = GAIA_XY; + vanuatu_geomColl_common (p_data, first, geom); + return geom; +} + +/* + * See geomColl_xy for description. + * + * The only difference between this function and geomColl_xy is that the 'declaredType' field of the structs + * in the linked list for this function will only contain the following types: + * + * GAIA_POINTZ, GAIA_LINESTRINGZ, GAIA_POLYGONZ, + * GAIA_MULTIPOINTZ, GAIA_MULTILINESTRINGZ, GAIA_MULTIPOLYGONZ + */ +static gaiaGeomCollPtr +vanuatu_geomColl_xyz (struct vanuatu_data *p_data, gaiaGeomCollPtr first) +{ + gaiaGeomCollPtr geom = gaiaAllocGeomColl (); + if (geom == NULL) + return NULL; + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + geom->DimensionModel = GAIA_XY_Z; + vanuatu_geomColl_common (p_data, first, geom); + return geom; +} + +/* + * See geomColl_xy for description. + * + * The only difference between this function and geomColl_xy is that the 'declaredType' field of the structs + * in the linked list for this function will only contain the following types: + * + * GAIA_POINTM, GAIA_LINESTRINGM, GAIA_POLYGONM, + * GAIA_MULTIPOINTM, GAIA_MULTILINESTRINGM, GAIA_MULTIPOLYGONM + */ +static gaiaGeomCollPtr +vanuatu_geomColl_xym (struct vanuatu_data *p_data, gaiaGeomCollPtr first) +{ + gaiaGeomCollPtr geom = gaiaAllocGeomColl (); + if (geom == NULL) + return NULL; + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + geom->DimensionModel = GAIA_XY_M; + vanuatu_geomColl_common (p_data, first, geom); + return geom; +} + +/* + * See geomColl_xy for description. + * + * The only difference between this function and geomColl_xy is that the 'declaredType' field of the structs + * in the linked list for this function will only contain the following types: + * + * GAIA_POINTZM, GAIA_LINESTRINGZM, GAIA_POLYGONZM, + * GAIA_MULTIPOINTZM, GAIA_MULTILINESTRINGZM, GAIA_MULTIPOLYGONZM + */ +static gaiaGeomCollPtr +vanuatu_geomColl_xyzm (struct vanuatu_data *p_data, gaiaGeomCollPtr first) +{ + gaiaGeomCollPtr geom = gaiaAllocGeomColl (); + if (geom == NULL) + return NULL; + vanuatuMapDynAlloc (p_data, VANUATU_DYN_GEOMETRY, geom); + geom->DeclaredType = GAIA_GEOMETRYCOLLECTION; + geom->DimensionModel = GAIA_XY_Z_M; + vanuatu_geomColl_common (p_data, first, geom); + return geom; +} + + +/* including LEMON generated code */ +#include "vanuatuWkt.c" + + + +/* +** CAVEAT: there is an incompatibility between LEMON and FLEX +** this macro resolves the issue +*/ +#undef yy_accept +#define yy_accept yy_vanuatu_flex_accept + + + +/* including FLEX generated code */ +#include "lex.VanuatuWkt.c" + + + +/* +** This is a linked-list struct to store all the values for each token. +** All tokens will have a value of 0, except tokens denoted as NUM. +** NUM tokens are geometry coordinates and will contain the floating +** point number. +*/ +typedef struct vanuatuFlexTokenStruct +{ + double value; + struct vanuatuFlexTokenStruct *Next; +} vanuatuFlexToken; + +/* +** Function to clean up the linked-list of token values. +*/ +static int +vanuatu_cleanup (vanuatuFlexToken * token) +{ + vanuatuFlexToken *ptok; + vanuatuFlexToken *ptok_n; + if (token == NULL) + return 0; + ptok = token; + while (ptok) + { + ptok_n = ptok->Next; + free (ptok); + ptok = ptok_n; + } + return 0; +} + +gaiaGeomCollPtr +gaiaParseWkt (const unsigned char *dirty_buffer, short type) +{ + void *pParser = ParseAlloc (malloc); + /* Linked-list of token values */ + vanuatuFlexToken *tokens = malloc (sizeof (vanuatuFlexToken)); + /* Pointer to the head of the list */ + vanuatuFlexToken *head = tokens; + int yv; + yyscan_t scanner; + struct vanuatu_data str_data; + +/* initializing the helper structs */ + str_data.vanuatu_line = 1; + str_data.vanuatu_col = 1; + str_data.vanuatu_parse_error = 0; + str_data.vanuatu_first_dyn_block = NULL; + str_data.vanuatu_last_dyn_block = NULL; + str_data.result = NULL; + +/* initializing the scanner state */ + VanuatuWktlex_init_extra (&str_data, &scanner); + + tokens->Next = NULL; + + VanuatuWkt_scan_string ((char *) dirty_buffer, scanner); + + /* + / Keep tokenizing until we reach the end + / yylex() will return the next matching Token for us. + */ + while ((yv = yylex (scanner)) != 0) + { + if (yv == -1) + { + str_data.vanuatu_parse_error = 1; + break; + } + tokens->Next = malloc (sizeof (vanuatuFlexToken)); + tokens->Next->Next = NULL; + tokens->Next->value = str_data.VanuatuWktlval.dval; + /* Pass the token to the wkt parser created from lemon */ + Parse (pParser, yv, &(tokens->Next->value), &str_data); + tokens = tokens->Next; + } + /* This denotes the end of a line as well as the end of the parser */ + Parse (pParser, VANUATU_NEWLINE, 0, &str_data); + ParseFree (pParser, free); + VanuatuWktlex_destroy (scanner); + + /* Assigning the token as the end to avoid seg faults while cleaning */ + tokens->Next = NULL; + vanuatu_cleanup (head); + + /* + ** Sandro Furieri 2010 Apr 4 + ** checking if any parsing error was encountered + */ + if (str_data.vanuatu_parse_error) + { + if (str_data.result != NULL) + { + /* if a Geometry-result has been produced, the stack is already cleaned */ + gaiaFreeGeomColl (str_data.result); + vanuatuCleanMapDynAlloc (&str_data, 0); + } + else + { + /* otherwise we are required to clean the stack */ + vanuatuCleanMapDynAlloc (&str_data, 1); + } + return NULL; + } + + vanuatuCleanMapDynAlloc (&str_data, 0); + /* + ** Sandro Furieri 2010 Apr 4 + ** final checkup for validity + */ + if (str_data.result == NULL) + return NULL; + if (!vanuatuCheckValidity (str_data.result)) + { + gaiaFreeGeomColl (str_data.result); + return NULL; + } + if (type < 0) + ; /* no restrinction about GEOMETRY CLASS TYPE */ + else + { + if (str_data.result->DeclaredType != type) + { + /* invalid CLASS TYPE for request */ + gaiaFreeGeomColl (str_data.result); + return NULL; + } + } + + gaiaMbrGeometry (str_data.result); + + return str_data.result; +} + +/****************************************************************************** +** This is the end of the code that was created by Team Vanuatu +** of The University of Toronto. + +Authors: +Ruppi Rana ruppi.rana@gmail.com +Dev Tanna dev.tanna@gmail.com +Elias Adum elias.adum@gmail.com +Benton Hui benton.hui@gmail.com +Abhayan Sundararajan abhayan@gmail.com +Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com +Nikola Banovic nikola.banovic@gmail.com +Yong Jian yong.jian@utoronto.ca + +Supervisor: +Greg Wilson gvwilson@cs.toronto.ca + +------------------------------------------------------------------------------- + +*/ + +/* +** CAVEAT: we must now undefine any Lemon/Flex own macro +*/ +#undef YYNOCODE +#undef YYNSTATE +#undef YYNRULE +#undef YY_SHIFT_MAX +#undef YY_SHIFT_USE_DFLT +#undef YY_REDUCE_USE_DFLT +#undef YY_REDUCE_MAX +#undef YY_FLUSH_BUFFER +#undef YY_DO_BEFORE_ACTION +#undef YY_NUM_RULES +#undef YY_END_OF_BUFFER +#undef YY_END_FILE +#undef YYACTIONTYPE +#undef YY_SZ_ACTTAB +#undef YY_NEW_FILE +#undef BEGIN +#undef YY_START +#undef YY_CURRENT_BUFFER +#undef YY_CURRENT_BUFFER_LVALUE +#undef YY_STATE_BUF_SIZE +#undef YY_DECL +#undef YY_FATAL_ERROR +#undef YYMINORTYPE +#undef YY_CHAR +#undef YYSTYPE +#undef input +#undef ParseAlloc +#undef ParseFree +#undef ParseStackPeak +#undef Parse +#undef yyalloc +#undef yyfree +#undef yyin +#undef yyleng +#undef yyless +#undef yylex +#undef yylineno +#undef yyout +#undef yyrealloc +#undef yyrestart +#undef yyStackEntry +#undef yytext +#undef yywrap +#undef yyzerominor +#undef yy_accept +#undef yy_action +#undef yy_base +#undef yy_buffer_stack +#undef yy_buffer_stack_max +#undef yy_buffer_stack_top +#undef yy_c_buf_p +#undef yy_chk +#undef yy_create_buffer +#undef yy_def +#undef yy_default +#undef yy_delete_buffer +#undef yy_destructor +#undef yy_ec +#undef yy_fatal_error +#undef yy_find_reduce_action +#undef yy_find_shift_action +#undef yy_flex_debug +#undef yy_flush_buffer +#undef yy_get_next_buffer +#undef yy_get_previous_state +#undef yy_init +#undef yy_init_buffer +#undef yy_init_globals +#undef yy_load_buffer +#undef yy_load_buffer_state +#undef yy_lookahead +#undef yy_meta +#undef yy_new_buffer +#undef yy_nxt +#undef yy_parse_failed +#undef yy_pop_parser_stack +#undef yy_reduce +#undef yy_reduce_ofst +#undef yy_set_bol +#undef yy_set_interactive +#undef yy_shift +#undef yy_shift_ofst +#undef yy_start +#undef yy_state_type +#undef yy_switch_to_buffer +#undef yy_syntax_error +#undef yy_trans_info +#undef yy_try_NUL_trans +#undef yyParser +#undef yyStackEntry +#undef yyStackOverflow +#undef yyRuleInfo +#undef yytext_ptr +#undef yyunput +#undef yyzerominor +#undef ParseARG_SDECL +#undef ParseARG_PDECL +#undef ParseARG_FETCH +#undef ParseARG_STORE +#undef REJECT +#undef yymore +#undef YY_MORE_ADJ +#undef YY_RESTORE_YY_MORE_OFFSET +#undef YY_LESS_LINENO +#undef yyTracePrompt +#undef yyTraceFILE +#undef yyTokenName +#undef yyRuleName +#undef ParseTrace + +#undef yylex +#undef YY_DECL diff --git a/src/spatialite/src/gaiageo/gg_voronoj.c b/src/spatialite/src/gaiageo/gg_voronoj.c new file mode 100644 index 0000000..fdc1d83 --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_voronoj.c @@ -0,0 +1,1920 @@ +/* + + gg_voronoj.c -- Voronoj Diagram implementation + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include + +#ifdef GEOS_ADVANCED /* GEOS advanced features */ + +struct voronoj_triangle +{ +/* a struct representing a Delaunay triangle */ + double x1; /* vertex #1 */ + double y1; + double x2; /* vertex #2 */ + double y2; + double x3; /* vertex #3 */ + double y3; + double cx; /* circumcenter */ + double cy; + double x_1_2; /* vertex on the frame - edge #1-#2 */ + double y_1_2; + double x_2_3; /* vertex on the frame - edge #2-#3 */ + double y_2_3; + double x_3_1; /* vertex on the frame - edge #3-#1 */ + double y_3_1; + + struct voronoj_triangle *tri_1_2; /* triangle sharing edge #1-#2 */ + struct voronoj_triangle *tri_2_3; /* triangle sharing edge #2-#3 */ + struct voronoj_triangle *tri_3_1; /* triangle sharing edge #3-#1 */ + char trace_1_2; /* flags: to be traced */ + char trace_2_3; + char trace_3_1; +}; + +struct voronoj_point +{ +/* an auxiliary struct - point on Voronoj's frame */ + double coord; + struct voronoj_point *next; +}; + +struct voronoj_aux +{ +/* an auxiliary struct supporting Voronoj */ + struct voronoj_triangle *array; /* array of Triangles */ + int count; /* number of Triangles */ + double minx; /* the frame extent */ + double miny; + double maxx; + double maxy; + struct voronoj_point *first_up; /* linked list: horz-up frame's edge */ + struct voronoj_point *last_up; + struct voronoj_point *first_low; /* linked list: horz-down frame's edge */ + struct voronoj_point *last_low; + struct voronoj_point *first_left; /* linked list: vert-left frame's edge */ + struct voronoj_point *last_left; + struct voronoj_point *first_right; /* linked list: vert-right frame's edge */ + struct voronoj_point *last_right; +}; + +struct concave_hull_str +{ +/* a struct to implement StandardVariation and Variance for Concave Hull */ + double mean; + double quot; + double count; +}; + +static double * +voronoj_sorted_up (struct voronoj_aux *voronoj, int *count) +{ +/* returning a sorted array of coordinates */ + double *array = NULL; + int cnt = 0; + int ok = 1; + int i; + struct voronoj_point *pt = voronoj->first_up; + while (pt) + { + /* counting how many points are there */ + cnt++; + pt = pt->next; + } + *count = cnt; + if (cnt == 0) + return NULL; + +/* allocating and populating the array */ + array = malloc (sizeof (double) * *count); + cnt = 0; + pt = voronoj->first_up; + while (pt) + { + *(array + cnt++) = pt->coord; + pt = pt->next; + } + +/* sorting the array */ + while (ok) + { + ok = 0; + for (i = 1; i < *count; i++) + { + if (*(array + i - 1) > *(array + i)) + { + /* swapping two values */ + double save = *(array + i - 1); + *(array + i - 1) = *(array + i); + *(array + i) = save; + ok = 1; + } + } + } + return array; +} + +static double * +voronoj_sorted_low (struct voronoj_aux *voronoj, int *count) +{ +/* returning a sorted array of coordinates */ + double *array = NULL; + int cnt = 0; + int ok = 1; + int i; + struct voronoj_point *pt = voronoj->first_low; + while (pt) + { + /* counting how many points are there */ + cnt++; + pt = pt->next; + } + *count = cnt; + if (cnt == 0) + return NULL; + +/* allocating and populating the array */ + array = malloc (sizeof (double) * *count); + cnt = 0; + pt = voronoj->first_low; + while (pt) + { + *(array + cnt++) = pt->coord; + pt = pt->next; + } + +/* sorting the array */ + while (ok) + { + ok = 0; + for (i = 1; i < *count; i++) + { + if (*(array + i - 1) > *(array + i)) + { + /* swapping two values */ + double save = *(array + i - 1); + *(array + i - 1) = *(array + i); + *(array + i) = save; + ok = 1; + } + } + } + return array; +} + +static double * +voronoj_sorted_left (struct voronoj_aux *voronoj, int *count) +{ +/* returning a sorted array of coordinates */ + double *array = NULL; + int cnt = 0; + int ok = 1; + int i; + struct voronoj_point *pt = voronoj->first_left; + while (pt) + { + /* counting how many points are there */ + cnt++; + pt = pt->next; + } + *count = cnt; + if (cnt == 0) + return NULL; + +/* allocating and populating the array */ + array = malloc (sizeof (double) * *count); + cnt = 0; + pt = voronoj->first_left; + while (pt) + { + *(array + cnt++) = pt->coord; + pt = pt->next; + } + +/* sorting the array */ + while (ok) + { + ok = 0; + for (i = 1; i < *count; i++) + { + if (*(array + i - 1) > *(array + i)) + { + /* swapping two values */ + double save = *(array + i - 1); + *(array + i - 1) = *(array + i); + *(array + i) = save; + ok = 1; + } + } + } + return array; +} + +static double * +voronoj_sorted_right (struct voronoj_aux *voronoj, int *count) +{ +/* returning a sorted array of coordinates */ + double *array = NULL; + int cnt = 0; + int ok = 1; + int i; + struct voronoj_point *pt = voronoj->first_right; + while (pt) + { + /* counting how many points are there */ + cnt++; + pt = pt->next; + } + *count = cnt; + if (cnt == 0) + return NULL; + +/* allocating and populating the array */ + array = malloc (sizeof (double) * *count); + cnt = 0; + pt = voronoj->first_right; + while (pt) + { + *(array + cnt++) = pt->coord; + pt = pt->next; + } + +/* sorting the array */ + while (ok) + { + ok = 0; + for (i = 1; i < *count; i++) + { + if (*(array + i - 1) > *(array + i)) + { + /* swapping two values */ + double save = *(array + i - 1); + *(array + i - 1) = *(array + i); + *(array + i) = save; + ok = 1; + } + } + } + return array; +} + +static void +voronoj_add_frame_point (struct voronoj_aux *voronoj, double x, double y) +{ +/* adding some frame point */ + struct voronoj_point *pt = NULL; + +/* skipping any corner */ + if (x == voronoj->minx && y == voronoj->miny) + return; + if (x == voronoj->minx && y == voronoj->maxy) + return; + if (x == voronoj->maxx && y == voronoj->miny) + return; + if (x == voronoj->maxx && y == voronoj->maxy) + return; + + if (x == voronoj->minx) + { + pt = malloc (sizeof (struct voronoj_point)); + pt->coord = y; + pt->next = NULL; + if (voronoj->first_left == NULL) + voronoj->first_left = pt; + if (voronoj->last_left != NULL) + voronoj->last_left->next = pt; + voronoj->last_left = pt; + } + if (x == voronoj->maxx) + { + pt = malloc (sizeof (struct voronoj_point)); + pt->coord = y; + pt->next = NULL; + if (voronoj->first_right == NULL) + voronoj->first_right = pt; + if (voronoj->last_right != NULL) + voronoj->last_right->next = pt; + voronoj->last_right = pt; + } + if (y == voronoj->miny) + { + pt = malloc (sizeof (struct voronoj_point)); + pt->coord = x; + pt->next = NULL; + if (voronoj->first_low == NULL) + voronoj->first_low = pt; + if (voronoj->last_low != NULL) + voronoj->last_low->next = pt; + voronoj->last_low = pt; + } + if (y == voronoj->maxy) + { + pt = malloc (sizeof (struct voronoj_point)); + pt->coord = x; + pt->next = NULL; + if (voronoj->first_up == NULL) + voronoj->first_up = pt; + if (voronoj->last_up != NULL) + voronoj->last_up->next = pt; + voronoj->last_up = pt; + } +} + +static int +voronoj_same_edge (double ax1, double ay1, double ax2, double ay2, double bx1, + double by1, double bx2, double by2) +{ +/* testing if two segments are the same */ + if (ax1 == bx1 && ay1 == by1 && ax2 == bx2 && ay2 == by2) + return 1; + if (ax1 == bx2 && ay1 == by2 && ax2 == bx1 && ay2 == by1) + return 1; + return 0; +} + +static int +voronoj_internal (const void *p_cache, struct voronoj_triangle *triangle) +{ +/* checking if the circumcenter falls inside the triangle */ + int ret; + gaiaGeomCollPtr pt = gaiaAllocGeomColl (); + gaiaGeomCollPtr tri = gaiaAllocGeomColl (); + gaiaPolygonPtr pg = gaiaAddPolygonToGeomColl (tri, 4, 0); + gaiaRingPtr rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, triangle->x1, triangle->y1); + gaiaSetPoint (rng->Coords, 1, triangle->x2, triangle->y2); + gaiaSetPoint (rng->Coords, 2, triangle->x3, triangle->y3); + gaiaSetPoint (rng->Coords, 3, triangle->x1, triangle->y1); + gaiaAddPointToGeomColl (pt, triangle->cx, triangle->cy); + gaiaMbrGeometry (pt); + gaiaMbrGeometry (tri); + if (p_cache != NULL) + ret = gaiaGeomCollIntersects_r (p_cache, tri, pt); + else + ret = gaiaGeomCollIntersects (tri, pt); + gaiaFreeGeomColl (pt); + gaiaFreeGeomColl (tri); + return ret; +} + +static double +voronoj_test_point (const void *p_cache, double x1, double y1, double x2, + double y2, double x, double y) +{ +/* point-segment distance */ + double dist; + gaiaGeomCollPtr pt = gaiaAllocGeomColl (); + gaiaGeomCollPtr segm = gaiaAllocGeomColl (); + gaiaLinestringPtr ln = gaiaAddLinestringToGeomColl (segm, 2); + gaiaSetPoint (ln->Coords, 0, x1, y1); + gaiaSetPoint (ln->Coords, 1, x2, y2); + gaiaAddPointToGeomColl (pt, x, y); + if (p_cache != NULL) + gaiaGeomCollDistance_r (p_cache, segm, pt, &dist); + else + gaiaGeomCollDistance (segm, pt, &dist); + gaiaFreeGeomColl (pt); + gaiaFreeGeomColl (segm); + return dist; +} + +static int +voronoj_check_nearest_edge (const void *p_cache, struct voronoj_triangle *tri, + int which) +{ +/* testing if direction outside */ + double d_1_2; + double d_2_3; + double d_3_1; + gaiaGeomCollPtr pt = gaiaAllocGeomColl (); + gaiaGeomCollPtr segm = gaiaAllocGeomColl (); + gaiaLinestringPtr ln = gaiaAddLinestringToGeomColl (segm, 2); + gaiaSetPoint (ln->Coords, 0, tri->x1, tri->y1); + gaiaSetPoint (ln->Coords, 1, tri->x2, tri->y2); + gaiaAddPointToGeomColl (pt, tri->cx, tri->cy); + if (p_cache != NULL) + gaiaGeomCollDistance_r (p_cache, segm, pt, &d_1_2); + else + gaiaGeomCollDistance (segm, pt, &d_1_2); + gaiaFreeGeomColl (segm); + segm = gaiaAllocGeomColl (); + ln = gaiaAddLinestringToGeomColl (segm, 2); + gaiaSetPoint (ln->Coords, 0, tri->x2, tri->y2); + gaiaSetPoint (ln->Coords, 1, tri->x3, tri->y3); + if (p_cache != NULL) + gaiaGeomCollDistance_r (p_cache, segm, pt, &d_2_3); + else + gaiaGeomCollDistance (segm, pt, &d_2_3); + gaiaFreeGeomColl (segm); + segm = gaiaAllocGeomColl (); + ln = gaiaAddLinestringToGeomColl (segm, 2); + gaiaSetPoint (ln->Coords, 0, tri->x3, tri->y3); + gaiaSetPoint (ln->Coords, 1, tri->x1, tri->y1); + if (p_cache != NULL) + gaiaGeomCollDistance_r (p_cache, segm, pt, &d_3_1); + else + gaiaGeomCollDistance (segm, pt, &d_3_1); + gaiaFreeGeomColl (segm); + gaiaFreeGeomColl (pt); + + if (which == 12 && d_1_2 < d_2_3 && d_1_2 < d_3_1) + return 0; + if (which == 23 && d_2_3 < d_1_2 && d_2_3 < d_3_1) + return 0; + if (which == 31 && d_3_1 < d_1_2 && d_3_1 < d_2_3) + return 0; + return 1; +} + +static void +voronoj_minmax (double x, double y, double *minx, double *miny, double *maxx, + double *maxy) +{ +/* updating the frame extent */ + if (x < *minx) + *minx = x; + if (y < *miny) + *miny = y; + if (x > *maxx) + *maxx = x; + if (y > *maxy) + *maxy = y; +} + +static void +voronoj_frame_point (const void *p_cache, double intercept, double slope, + struct voronoj_aux *voronoj, double cx, double cy, + double mx, double my, int direct, double *x, double *y) +{ +/* determining a vertex on the frame */ + double x_up; + double x_low; + double y_left; + double y_right; + double pre_x1 = DBL_MAX; + double pre_y1 = DBL_MAX; + double pre_x2 = DBL_MAX; + double pre_y2 = DBL_MAX; + double d1; + double d2; + + if (slope == DBL_MAX) + { + x_up = cx; + x_low = cx; + y_left = DBL_MAX; + y_right = DBL_MAX; + } + else + { + x_up = (voronoj->maxy - intercept) / slope; + x_low = (voronoj->miny - intercept) / slope; + y_left = (slope * voronoj->minx) + intercept; + y_right = (slope * voronoj->maxx) + intercept; + } + + if (x_up >= voronoj->minx && x_up <= voronoj->maxx) + { + if (pre_x1 == DBL_MAX && pre_y1 == DBL_MAX) + { + pre_x1 = x_up; + pre_y1 = voronoj->maxy; + } + else if (pre_x2 == DBL_MAX && pre_y2 == DBL_MAX) + { + pre_x2 = x_up; + pre_y2 = voronoj->maxy; + } + } + if (x_low >= voronoj->minx && x_low <= voronoj->maxx) + { + if (pre_x1 == DBL_MAX && pre_y1 == DBL_MAX) + { + pre_x1 = x_low; + pre_y1 = voronoj->miny; + } + else if (pre_x2 == DBL_MAX && pre_y2 == DBL_MAX) + { + pre_x2 = x_low; + pre_y2 = voronoj->miny; + } + } + if (y_left >= voronoj->miny && y_left <= voronoj->maxy) + { + if (pre_x1 == DBL_MAX && pre_y1 == DBL_MAX) + { + pre_x1 = voronoj->minx; + pre_y1 = y_left; + } + else if (pre_x2 == DBL_MAX && pre_y2 == DBL_MAX) + { + pre_x2 = voronoj->minx; + pre_y2 = y_left; + } + } + if (y_right >= voronoj->miny && y_right <= voronoj->maxy) + { + if (pre_x1 == DBL_MAX && pre_y1 == DBL_MAX) + { + pre_x1 = voronoj->maxx; + pre_y1 = y_right; + } + else if (pre_x2 == DBL_MAX && pre_y2 == DBL_MAX) + { + pre_x2 = voronoj->maxx; + pre_y2 = y_right; + } + } + +/* choosing wich point has to be returned */ + if (direct) + { + /* cutting the edge in two */ + d1 = voronoj_test_point (p_cache, cx, cy, pre_x1, pre_y1, mx, my); + d2 = voronoj_test_point (p_cache, cx, cy, pre_x2, pre_y2, mx, my); + if (d1 < d2) + { + *x = pre_x1; + *y = pre_y1; + } + else + { + *x = pre_x2; + *y = pre_y2; + } + } + else + { + /* going outside */ + d1 = voronoj_test_point (p_cache, cx, cy, pre_x1, pre_y1, mx, my); + d2 = voronoj_test_point (p_cache, cx, cy, pre_x2, pre_y2, mx, my); + if (d1 > d2) + { + *x = pre_x1; + *y = pre_y1; + } + else + { + *x = pre_x2; + *y = pre_y2; + } + } +} + +SPATIALITE_PRIVATE void * +voronoj_build (int count, void *p_first, double extra_frame_size) +{ + return voronoj_build_r (NULL, count, p_first, extra_frame_size); +} + +SPATIALITE_PRIVATE void * +voronoj_build_r (const void *p_cache, int count, void *p_first, + double extra_frame_size) +{ +/* building the Voronoj auxiliary struct */ + gaiaPolygonPtr first = (gaiaPolygonPtr) p_first; + struct voronoj_aux *voronoj = NULL; + struct voronoj_triangle *triangle; + struct voronoj_triangle *tri2; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + int ind = 0; + int i2; + int direct; + double x; + double y; + double z; + double m; + double xba; + double yba; + double xca; + double yca; + double bl; + double cl; + double d; + double mx; + double my; + double slope; + double intercept; + double minx = DBL_MAX; + double miny = DBL_MAX; + double maxx = DBL_MIN; + double maxy = DBL_MIN; + double ext_x; + double ext_y; + double delta; + double delta2; + +/* allocating the Voronoj struct */ + voronoj = malloc (sizeof (struct voronoj_aux)); + voronoj->count = count; + voronoj->first_up = NULL; + voronoj->last_up = NULL; + voronoj->first_low = NULL; + voronoj->last_low = NULL; + voronoj->first_left = NULL; + voronoj->last_left = NULL; + voronoj->first_right = NULL; + voronoj->last_right = NULL; + voronoj->array = malloc (sizeof (struct voronoj_triangle) * count); + +/* initializing the Voronoj struct */ + pg = first; + while (pg) + { + rng = pg->Exterior; + triangle = voronoj->array + ind; + if (pg->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, 0, &x, &y, &z); + triangle->x1 = x; + triangle->y1 = y; + gaiaGetPointXYZ (rng->Coords, 1, &x, &y, &z); + triangle->x2 = x; + triangle->y2 = y; + gaiaGetPointXYZ (rng->Coords, 2, &x, &y, &z); + triangle->x3 = x; + triangle->y3 = y; + } + else if (pg->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, 0, &x, &y, &m); + triangle->x1 = x; + triangle->y1 = y; + gaiaGetPointXYM (rng->Coords, 1, &x, &y, &m); + triangle->x2 = x; + triangle->y2 = y; + gaiaGetPointXYM (rng->Coords, 2, &x, &y, &m); + triangle->x3 = x; + triangle->y3 = y; + } + else if (pg->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, 0, &x, &y, &z, &m); + triangle->x1 = x; + triangle->y1 = y; + gaiaGetPointXYZM (rng->Coords, 1, &x, &y, &z, &m); + triangle->x2 = x; + triangle->y2 = y; + gaiaGetPointXYZM (rng->Coords, 2, &x, &y, &z, &m); + triangle->x3 = x; + triangle->y3 = y; + } + else + { + gaiaGetPoint (rng->Coords, 0, &x, &y); + triangle->x1 = x; + triangle->y1 = y; + gaiaGetPoint (rng->Coords, 1, &x, &y); + triangle->x2 = x; + triangle->y2 = y; + gaiaGetPoint (rng->Coords, 2, &x, &y); + triangle->x3 = x; + triangle->y3 = y; + } + + /* computing the triangle circumcenter */ + xba = triangle->x2 - triangle->x1; + yba = triangle->y2 - triangle->y1; + xca = triangle->x3 - triangle->x1; + yca = triangle->y3 - triangle->y1; + bl = xba * xba + yba * yba; + cl = xca * xca + yca * yca; + d = 0.5 / (xba * yca - yba * xca); + triangle->cx = triangle->x1 + ((yca * bl - yba * cl) * d); + triangle->cy = triangle->y1 + ((xba * cl - xca * bl) * d); + /* adjusting the frame extent */ + voronoj_minmax (triangle->x1, triangle->y1, &minx, &miny, &maxx, + &maxy); + voronoj_minmax (triangle->x2, triangle->y2, &minx, &miny, &maxx, + &maxy); + voronoj_minmax (triangle->x3, triangle->y3, &minx, &miny, &maxx, + &maxy); + voronoj_minmax (triangle->cx, triangle->cy, &minx, &miny, &maxx, + &maxy); + + triangle->tri_1_2 = NULL; + triangle->tri_2_3 = NULL; + triangle->tri_3_1 = NULL; + triangle->trace_1_2 = 0; + triangle->trace_2_3 = 0; + triangle->trace_3_1 = 0; + ind++; + pg = pg->Next; + } + +/* setting the frame extent */ + if (extra_frame_size < 0.0) + extra_frame_size = 5.0; + ext_x = maxx - minx; + ext_y = maxy - miny; + delta = (ext_x * extra_frame_size) / 100.0; + delta2 = (ext_y * extra_frame_size) / 100.0; + if (delta2 > delta) + delta = delta2; + voronoj->minx = minx - delta; + voronoj->miny = miny - delta; + voronoj->maxx = maxx + delta; + voronoj->maxy = maxy + delta; + +/* identifying triangles sharing the same edge */ + for (ind = 0; ind < voronoj->count; ind++) + { + triangle = voronoj->array + ind; + for (i2 = ind + 1; i2 < voronoj->count; i2++) + { + tri2 = voronoj->array + i2; + if (triangle->tri_1_2 == NULL && tri2->tri_1_2 == NULL) + { + if (voronoj_same_edge + (triangle->x1, triangle->y1, triangle->x2, + triangle->y2, tri2->x1, tri2->y1, tri2->x2, + tri2->y2)) + { + triangle->tri_1_2 = tri2; + triangle->trace_1_2 = 1; + tri2->tri_1_2 = triangle; + } + } + if (triangle->tri_1_2 == NULL && tri2->tri_2_3 == NULL) + { + if (voronoj_same_edge + (triangle->x1, triangle->y1, triangle->x2, + triangle->y2, tri2->x2, tri2->y2, tri2->x3, + tri2->y3)) + { + triangle->tri_1_2 = tri2; + triangle->trace_1_2 = 1; + tri2->tri_2_3 = triangle; + } + } + if (triangle->tri_1_2 == NULL && tri2->tri_3_1 == NULL) + { + if (voronoj_same_edge + (triangle->x1, triangle->y1, triangle->x2, + triangle->y2, tri2->x3, tri2->y3, tri2->x1, + tri2->y1)) + { + triangle->tri_1_2 = tri2; + triangle->trace_1_2 = 1; + tri2->tri_3_1 = triangle; + } + } + if (triangle->tri_2_3 == NULL && tri2->tri_1_2 == NULL) + { + if (voronoj_same_edge + (triangle->x2, triangle->y2, triangle->x3, + triangle->y3, tri2->x1, tri2->y1, tri2->x2, + tri2->y2)) + { + triangle->tri_2_3 = tri2; + triangle->trace_2_3 = 1; + tri2->tri_1_2 = triangle; + } + } + if (triangle->tri_2_3 == NULL && tri2->tri_2_3 == NULL) + { + if (voronoj_same_edge + (triangle->x2, triangle->y2, triangle->x3, + triangle->y3, tri2->x2, tri2->y2, tri2->x3, + tri2->y3)) + { + triangle->tri_2_3 = tri2; + triangle->trace_2_3 = 1; + tri2->tri_2_3 = triangle; + } + } + if (triangle->tri_2_3 == NULL && tri2->tri_3_1 == NULL) + { + if (voronoj_same_edge + (triangle->x2, triangle->y2, triangle->x3, + triangle->y3, tri2->x3, tri2->y3, tri2->x1, + tri2->y1)) + { + triangle->tri_2_3 = tri2; + triangle->trace_2_3 = 1; + tri2->tri_3_1 = triangle; + } + } + if (triangle->tri_3_1 == NULL && tri2->tri_1_2 == NULL) + { + if (voronoj_same_edge + (triangle->x3, triangle->y3, triangle->x1, + triangle->y1, tri2->x1, tri2->y1, tri2->x2, + tri2->y2)) + { + triangle->tri_3_1 = tri2; + triangle->trace_3_1 = 1; + tri2->tri_1_2 = triangle; + } + } + if (triangle->tri_3_1 == NULL && tri2->tri_2_3 == NULL) + { + if (voronoj_same_edge + (triangle->x3, triangle->y3, triangle->x1, + triangle->y1, tri2->x2, tri2->y2, tri2->x3, + tri2->y3)) + { + triangle->tri_3_1 = tri2; + triangle->trace_3_1 = 1; + tri2->tri_2_3 = triangle; + } + } + if (triangle->tri_3_1 == NULL && tri2->tri_3_1 == NULL) + { + if (voronoj_same_edge + (triangle->x3, triangle->y3, triangle->x1, + triangle->y1, tri2->x3, tri2->y3, tri2->x1, + tri2->y1)) + { + triangle->tri_3_1 = tri2; + triangle->trace_3_1 = 1; + tri2->tri_3_1 = triangle; + } + } + } + + /* identifying vertices on the frame */ + if (triangle->tri_1_2 == NULL) + { + mx = (triangle->x1 + triangle->x2) / 2.0; + my = (triangle->y1 + triangle->y2) / 2.0; + if (mx == triangle->cx) + slope = DBL_MAX; + else + { + slope = (my - triangle->cy) / (mx - triangle->cx); + intercept = my - (slope * mx); + } + direct = 1; + if (!voronoj_internal (p_cache, triangle)) + direct = voronoj_check_nearest_edge (p_cache, triangle, 12); + voronoj_frame_point (p_cache, intercept, slope, voronoj, + triangle->cx, triangle->cy, mx, my, direct, + &x, &y); + triangle->x_1_2 = x; + triangle->y_1_2 = y; + } + if (triangle->tri_2_3 == NULL) + { + mx = (triangle->x2 + triangle->x3) / 2.0; + my = (triangle->y2 + triangle->y3) / 2.0; + if (mx == triangle->cx) + slope = DBL_MAX; + else + { + slope = (my - triangle->cy) / (mx - triangle->cx); + intercept = my - (slope * mx); + } + direct = 1; + if (!voronoj_internal (p_cache, triangle)) + direct = voronoj_check_nearest_edge (p_cache, triangle, 23); + voronoj_frame_point (p_cache, intercept, slope, voronoj, + triangle->cx, triangle->cy, mx, my, direct, + &x, &y); + triangle->x_2_3 = x; + triangle->y_2_3 = y; + } + if (triangle->tri_3_1 == NULL) + { + mx = (triangle->x3 + triangle->x1) / 2.0; + my = (triangle->y3 + triangle->y1) / 2.0; + if (mx == triangle->cx) + slope = DBL_MAX; + else + { + slope = (my - triangle->cy) / (mx - triangle->cx); + intercept = my - (slope * mx); + } + direct = 1; + if (!voronoj_internal (p_cache, triangle)) + direct = voronoj_check_nearest_edge (p_cache, triangle, 31); + voronoj_frame_point (p_cache, intercept, slope, voronoj, + triangle->cx, triangle->cy, mx, my, direct, + &x, &y); + triangle->x_3_1 = x; + triangle->y_3_1 = y; + } + } + return voronoj; +} + +static void * +voronoj_export_common (const void *p_cache, void *p_voronoj, void *p_result, + int only_edges) +{ +/* building the Geometry representing Voronoj */ + gaiaGeomCollPtr result = (gaiaGeomCollPtr) p_result; + gaiaGeomCollPtr lines; + struct voronoj_aux *voronoj = (struct voronoj_aux *) p_voronoj; + int ind; + gaiaLinestringPtr ln; + struct voronoj_triangle *triangle; + struct voronoj_triangle *tri2; + int i; + int count; + double last; + double *array; + + for (ind = 0; ind < voronoj->count; ind++) + { + triangle = voronoj->array + ind; + + /* segments connecting two circumcenters */ + if (triangle->tri_1_2 && triangle->trace_1_2) + { + tri2 = triangle->tri_1_2; + ln = gaiaAddLinestringToGeomColl (result, 2); + if (result->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0); + gaiaSetPointXYZ (ln->Coords, 1, tri2->cx, tri2->cy, 0.0); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0); + gaiaSetPointXYM (ln->Coords, 1, tri2->cx, tri2->cy, 0.0); + } + else if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0, 0.0); + gaiaSetPointXYZM (ln->Coords, 1, tri2->cx, tri2->cy, 0.0, + 0.0); + } + else + { + gaiaSetPoint (ln->Coords, 0, triangle->cx, triangle->cy); + gaiaSetPoint (ln->Coords, 1, tri2->cx, tri2->cy); + } + } + if (triangle->tri_2_3 && triangle->trace_2_3) + { + tri2 = triangle->tri_2_3; + ln = gaiaAddLinestringToGeomColl (result, 2); + if (result->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0); + gaiaSetPointXYZ (ln->Coords, 1, tri2->cx, tri2->cy, 0.0); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0); + gaiaSetPointXYM (ln->Coords, 1, tri2->cx, tri2->cy, 0.0); + } + else if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0, 0.0); + gaiaSetPointXYZM (ln->Coords, 1, tri2->cx, tri2->cy, 0.0, + 0.0); + } + else + { + gaiaSetPoint (ln->Coords, 0, triangle->cx, triangle->cy); + gaiaSetPoint (ln->Coords, 1, tri2->cx, tri2->cy); + } + } + if (triangle->tri_3_1 && triangle->trace_3_1) + { + tri2 = triangle->tri_3_1; + ln = gaiaAddLinestringToGeomColl (result, 2); + if (result->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0); + gaiaSetPointXYZ (ln->Coords, 1, tri2->cx, tri2->cy, 0.0); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0); + gaiaSetPointXYM (ln->Coords, 1, tri2->cx, tri2->cy, 0.0); + } + else if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0, 0.0); + gaiaSetPointXYZM (ln->Coords, 1, tri2->cx, tri2->cy, 0.0, + 0.0); + } + else + { + gaiaSetPoint (ln->Coords, 0, triangle->cx, triangle->cy); + gaiaSetPoint (ln->Coords, 1, tri2->cx, tri2->cy); + } + } + + /* segments connecting a circumcenter to the frame */ + if (triangle->tri_1_2 == NULL) + { + ln = gaiaAddLinestringToGeomColl (result, 2); + if (result->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0); + gaiaSetPointXYZ (ln->Coords, 1, triangle->x_1_2, + triangle->y_1_2, 0.0); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0); + gaiaSetPointXYM (ln->Coords, 1, triangle->x_1_2, + triangle->y_1_2, 0.0); + } + else if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0, 0.0); + gaiaSetPointXYZM (ln->Coords, 1, triangle->x_1_2, + triangle->y_1_2, 0.0, 0.0); + } + else + { + gaiaSetPoint (ln->Coords, 0, triangle->cx, triangle->cy); + gaiaSetPoint (ln->Coords, 1, triangle->x_1_2, + triangle->y_1_2); + } + if (!only_edges) + voronoj_add_frame_point (voronoj, triangle->x_1_2, + triangle->y_1_2); + } + if (triangle->tri_2_3 == NULL) + { + ln = gaiaAddLinestringToGeomColl (result, 2); + if (result->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0); + gaiaSetPointXYZ (ln->Coords, 1, triangle->x_2_3, + triangle->y_2_3, 0.0); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0); + gaiaSetPointXYM (ln->Coords, 1, triangle->x_2_3, + triangle->y_2_3, 0.0); + } + else if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0, 0.0); + gaiaSetPointXYZM (ln->Coords, 1, triangle->x_2_3, + triangle->y_2_3, 0.0, 0.0); + } + else + { + gaiaSetPoint (ln->Coords, 0, triangle->cx, triangle->cy); + gaiaSetPoint (ln->Coords, 1, triangle->x_2_3, + triangle->y_2_3); + } + if (!only_edges) + voronoj_add_frame_point (voronoj, triangle->x_2_3, + triangle->y_2_3); + } + if (triangle->tri_3_1 == NULL) + { + ln = gaiaAddLinestringToGeomColl (result, 2); + if (result->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0); + gaiaSetPointXYZ (ln->Coords, 1, triangle->x_3_1, + triangle->y_3_1, 0.0); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0); + gaiaSetPointXYM (ln->Coords, 1, triangle->x_3_1, + triangle->y_3_1, 0.0); + } + else if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, 0, triangle->cx, + triangle->cy, 0.0, 0.0); + gaiaSetPointXYZM (ln->Coords, 1, triangle->x_3_1, + triangle->y_3_1, 0.0, 0.0); + } + else + { + gaiaSetPoint (ln->Coords, 0, triangle->cx, triangle->cy); + gaiaSetPoint (ln->Coords, 1, triangle->x_3_1, + triangle->y_3_1); + } + if (!only_edges) + voronoj_add_frame_point (voronoj, triangle->x_3_1, + triangle->y_3_1); + } + } + + if (only_edges) + return result; + +/* setting up the frame's upper edge */ + last = voronoj->minx; + array = voronoj_sorted_up (voronoj, &count); + if (array) + { + for (i = 0; i < count; i++) + { + ln = gaiaAddLinestringToGeomColl (result, 2); + if (result->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, 0, last, voronoj->maxy, 0.0); + gaiaSetPointXYZ (ln->Coords, 1, *(array + i), + voronoj->maxy, 0.0); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, 0, last, voronoj->maxy, 0.0); + gaiaSetPointXYM (ln->Coords, 1, *(array + i), + voronoj->maxy, 0.0); + } + else if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, 0, last, + voronoj->maxy, 0.0, 0.0); + gaiaSetPointXYZM (ln->Coords, 1, *(array + i), + voronoj->maxy, 0.0, 0.0); + } + else + { + gaiaSetPoint (ln->Coords, 0, last, voronoj->maxy); + gaiaSetPoint (ln->Coords, 1, *(array + i), voronoj->maxy); + } + last = *(array + i); + } + free (array); + } + +/* closing the frame's upper edge */ + ln = gaiaAddLinestringToGeomColl (result, 2); + if (result->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, 0, last, voronoj->maxy, 0.0); + gaiaSetPointXYZ (ln->Coords, 1, voronoj->maxx, voronoj->maxy, 0.0); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, 0, last, voronoj->maxy, 0.0); + gaiaSetPointXYM (ln->Coords, 1, voronoj->maxx, voronoj->maxy, 0.0); + } + else if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, 0, last, voronoj->maxy, 0.0, 0.0); + gaiaSetPointXYZM (ln->Coords, 1, voronoj->maxx, + voronoj->maxy, 0.0, 0.0); + } + else + { + gaiaSetPoint (ln->Coords, 0, last, voronoj->maxy); + gaiaSetPoint (ln->Coords, 1, voronoj->maxx, voronoj->maxy); + } + +/* setting up the frame's lower edge */ + last = voronoj->minx; + array = voronoj_sorted_low (voronoj, &count); + if (array) + { + for (i = 0; i < count; i++) + { + ln = gaiaAddLinestringToGeomColl (result, 2); + if (result->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, 0, last, voronoj->miny, 0.0); + gaiaSetPointXYZ (ln->Coords, 1, *(array + i), + voronoj->miny, 0.0); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, 0, last, voronoj->miny, 0.0); + gaiaSetPointXYM (ln->Coords, 1, *(array + i), + voronoj->miny, 0.0); + } + else if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, 0, last, + voronoj->miny, 0.0, 0.0); + gaiaSetPointXYZM (ln->Coords, 1, *(array + i), + voronoj->miny, 0.0, 0.0); + } + else + { + gaiaSetPoint (ln->Coords, 0, last, voronoj->miny); + gaiaSetPoint (ln->Coords, 1, *(array + i), voronoj->miny); + } + last = *(array + i); + } + free (array); + } + +/* closing the frame's lower edge */ + ln = gaiaAddLinestringToGeomColl (result, 2); + if (result->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, 0, last, voronoj->miny, 0.0); + gaiaSetPointXYZ (ln->Coords, 1, voronoj->maxx, voronoj->miny, 0.0); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, 0, last, voronoj->miny, 0.0); + gaiaSetPointXYM (ln->Coords, 1, voronoj->maxx, voronoj->miny, 0.0); + } + else if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, 0, last, voronoj->miny, 0.0, 0.0); + gaiaSetPointXYZM (ln->Coords, 1, voronoj->maxx, + voronoj->miny, 0.0, 0.0); + } + else + { + gaiaSetPoint (ln->Coords, 0, last, voronoj->miny); + gaiaSetPoint (ln->Coords, 1, voronoj->maxx, voronoj->miny); + } + +/* setting up the frame's left edge */ + last = voronoj->miny; + array = voronoj_sorted_left (voronoj, &count); + if (array) + { + for (i = 0; i < count; i++) + { + ln = gaiaAddLinestringToGeomColl (result, 2); + if (result->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, 0, voronoj->minx, last, 0.0); + gaiaSetPointXYZ (ln->Coords, 1, voronoj->minx, + *(array + i), 0.0); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, 0, voronoj->minx, last, 0.0); + gaiaSetPointXYM (ln->Coords, 1, voronoj->minx, + *(array + i), 0.0); + } + else if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, 0, voronoj->minx, + last, 0.0, 0.0); + gaiaSetPointXYZM (ln->Coords, 1, voronoj->minx, + *(array + i), 0.0, 0.0); + } + else + { + gaiaSetPoint (ln->Coords, 0, voronoj->minx, last); + gaiaSetPoint (ln->Coords, 1, voronoj->minx, *(array + i)); + } + last = *(array + i); + } + free (array); + } + +/* closing the frame's left edge */ + ln = gaiaAddLinestringToGeomColl (result, 2); + if (result->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, 0, voronoj->minx, last, 0.0); + gaiaSetPointXYZ (ln->Coords, 1, voronoj->minx, voronoj->maxy, 0.0); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, 0, voronoj->minx, last, 0.0); + gaiaSetPointXYM (ln->Coords, 1, voronoj->minx, voronoj->maxy, 0.0); + } + else if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, 0, voronoj->minx, last, 0.0, 0.0); + gaiaSetPointXYZM (ln->Coords, 1, voronoj->minx, + voronoj->maxy, 0.0, 0.0); + } + else + { + gaiaSetPoint (ln->Coords, 0, voronoj->minx, last); + gaiaSetPoint (ln->Coords, 1, voronoj->minx, voronoj->maxy); + } + + /* setting up the frame's right edge */ + last = voronoj->miny; + array = voronoj_sorted_right (voronoj, &count); + if (array) + { + for (i = 0; i < count; i++) + { + ln = gaiaAddLinestringToGeomColl (result, 2); + if (result->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, 0, voronoj->maxx, last, 0.0); + gaiaSetPointXYZ (ln->Coords, 1, voronoj->maxx, + *(array + i), 0.0); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, 0, voronoj->maxx, last, 0.0); + gaiaSetPointXYM (ln->Coords, 1, voronoj->maxx, + *(array + i), 0.0); + } + else if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, 0, voronoj->maxx, + last, 0.0, 0.0); + gaiaSetPointXYZM (ln->Coords, 1, voronoj->maxx, + *(array + i), 0.0, 0.0); + } + else + { + gaiaSetPoint (ln->Coords, 0, voronoj->maxx, last); + gaiaSetPoint (ln->Coords, 1, voronoj->maxx, *(array + i)); + } + last = *(array + i); + } + free (array); + } + +/* closing the frame's right edge */ + ln = gaiaAddLinestringToGeomColl (result, 2); + if (result->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, 0, voronoj->maxx, last, 0.0); + gaiaSetPointXYZ (ln->Coords, 1, voronoj->maxx, voronoj->maxy, 0.0); + } + else if (result->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, 0, voronoj->maxx, last, 0.0); + gaiaSetPointXYM (ln->Coords, 1, voronoj->maxx, voronoj->maxy, 0.0); + } + else if (result->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, 0, voronoj->maxx, last, 0.0, 0.0); + gaiaSetPointXYZM (ln->Coords, 1, voronoj->maxx, + voronoj->maxy, 0.0, 0.0); + } + else + { + gaiaSetPoint (ln->Coords, 0, voronoj->maxx, last); + gaiaSetPoint (ln->Coords, 1, voronoj->maxx, voronoj->maxy); + } + +/* building Polygons */ + lines = result; + if (p_cache != NULL) + result = gaiaPolygonize_r (p_cache, lines, 1); + else + result = gaiaPolygonize (lines, 1); + gaiaFreeGeomColl (lines); + return result; +} + +SPATIALITE_PRIVATE void * +voronoj_export (void *p_voronoj, void *p_result, int only_edges) +{ + return voronoj_export_common (NULL, p_voronoj, p_result, only_edges); +} + +SPATIALITE_PRIVATE void * +voronoj_export_r (const void *p_cache, void *p_voronoj, void *p_result, + int only_edges) +{ + return voronoj_export_common (p_cache, p_voronoj, p_result, only_edges); +} + +SPATIALITE_PRIVATE void +voronoj_free (void *p_voronoj) +{ +/* memory cleanup: destroying the Voronoj auxiliary struct */ + struct voronoj_aux *voronoj = (struct voronoj_aux *) p_voronoj; + struct voronoj_point *pt; + struct voronoj_point *ptn; + free (voronoj->array); + pt = voronoj->first_up; + while (pt) + { + ptn = pt->next; + free (pt); + pt = ptn; + } + pt = voronoj->first_low; + while (pt) + { + ptn = pt->next; + free (pt); + pt = ptn; + } + pt = voronoj->first_left; + while (pt) + { + ptn = pt->next; + free (pt); + pt = ptn; + } + pt = voronoj->first_right; + while (pt) + { + ptn = pt->next; + free (pt); + pt = ptn; + } + free (voronoj); +} + +SPATIALITE_PRIVATE int +delaunay_triangle_check (void *ppg) +{ +/* test if it's really a triangle */ + gaiaPolygonPtr pg = (gaiaPolygonPtr) ppg; + gaiaRingPtr rng = pg->Exterior; + if (rng->Points == 4 && pg->NumInteriors == 0) + return 1; + return 0; +} + +static void +concave_hull_stats (struct concave_hull_str *concave, double length) +{ +/* update concave hull statistics */ + if (concave->count == 0) + { + concave->count = 1.0; + concave->mean = length; + return; + } + + concave->count += 1.0; + concave->quot = concave->quot + (((concave->count - 1.0) * + ((length - concave->mean) * + (length - concave->mean))) / + concave->count); + concave->mean = concave->mean + ((length - concave->mean) / concave->count); +} + +static int +concave_hull_filter (const void *p_cache, double x1, double y1, + double x2, double y2, double x3, double y3, double limit) +{ +/* filtering triangles to be inserted into the Concave Hull */ + gaiaGeomCollPtr segm; + gaiaLinestringPtr ln; + double length; + + segm = gaiaAllocGeomColl (); + ln = gaiaAddLinestringToGeomColl (segm, 2); + gaiaSetPoint (ln->Coords, 0, x1, y1); + gaiaSetPoint (ln->Coords, 1, x2, y2); + if (p_cache != NULL) + gaiaGeomCollLength_r (p_cache, segm, &length); + else + gaiaGeomCollLength (segm, &length); + gaiaFreeGeomColl (segm); + if (length >= limit) + return 0; + + segm = gaiaAllocGeomColl (); + ln = gaiaAddLinestringToGeomColl (segm, 2); + gaiaSetPoint (ln->Coords, 0, x2, y2); + gaiaSetPoint (ln->Coords, 1, x3, y3); + if (p_cache != NULL) + gaiaGeomCollLength_r (p_cache, segm, &length); + else + gaiaGeomCollLength (segm, &length); + gaiaFreeGeomColl (segm); + if (length >= limit) + return 0; + + segm = gaiaAllocGeomColl (); + ln = gaiaAddLinestringToGeomColl (segm, 2); + gaiaSetPoint (ln->Coords, 0, x3, y3); + gaiaSetPoint (ln->Coords, 1, x1, y1); + if (p_cache != NULL) + gaiaGeomCollLength_r (p_cache, segm, &length); + else + gaiaGeomCollLength (segm, &length); + gaiaFreeGeomColl (segm); + if (length >= limit) + return 0; + + return 1; +} + +static gaiaGeomCollPtr +concave_hull_no_holes (gaiaGeomCollPtr in) +{ +/* returning a Polygon surely not containing any hole */ + gaiaGeomCollPtr out = NULL; + gaiaPolygonPtr pg_in; + gaiaPolygonPtr pg_out; + gaiaRingPtr rng_in; + gaiaRingPtr rng_out; + int iv; + double x; + double y; + double z; + double m; + + if (in->DimensionModel == GAIA_XY_Z) + out = gaiaAllocGeomCollXYZ (); + else if (in->DimensionModel == GAIA_XY_M) + out = gaiaAllocGeomCollXYM (); + else if (in->DimensionModel == GAIA_XY_Z_M) + out = gaiaAllocGeomCollXYZM (); + else + out = gaiaAllocGeomColl (); + out->Srid = in->Srid; + + pg_in = in->FirstPolygon; + while (pg_in) + { + rng_in = pg_in->Exterior; + pg_out = gaiaAddPolygonToGeomColl (out, rng_in->Points, 0); + rng_out = pg_out->Exterior; + for (iv = 0; iv < rng_in->Points; iv++) + { + /* copying Exterior Ring vertices */ + if (in->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng_in->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (rng_out->Coords, iv, x, y, z); + } + else if (in->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng_in->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (rng_out->Coords, iv, x, y, m); + } + else if (in->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng_in->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (rng_out->Coords, iv, x, y, z, m); + } + else + { + gaiaGetPoint (rng_in->Coords, iv, &x, &y); + gaiaSetPoint (rng_out->Coords, iv, x, y); + } + } + pg_in = pg_in->Next; + } + return out; +} + +static void * +concave_hull_build_common (const void *p_cache, void *p_first, + int dimension_model, double factor, int allow_holes) +{ +/* building the Concave Hull */ + struct concave_hull_str concave; + gaiaPolygonPtr first = (gaiaPolygonPtr) p_first; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + gaiaPolygonPtr pg_out; + gaiaRingPtr rng_out; + gaiaGeomCollPtr segm; + gaiaGeomCollPtr result; + gaiaLinestringPtr ln; + double x; + double y; + double z; + double m; + double x1; + double y1; + double x2; + double y2; + double x3; + double y3; + double length; + double std_dev; + int count; + +/* initializing the struct for mean and standard deviation */ + concave.mean = 0.0; + concave.quot = 0.0; + concave.count = 0.0; + + pg = first; + while (pg) + { + /* examining each triangle / computing statistics distribution */ + rng = pg->Exterior; + if (pg->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, 0, &x, &y, &z); + x1 = x; + y1 = y; + gaiaGetPointXYZ (rng->Coords, 1, &x, &y, &z); + x2 = x; + y2 = y; + gaiaGetPointXYZ (rng->Coords, 2, &x, &y, &z); + x3 = x; + y3 = y; + } + else if (pg->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, 0, &x, &y, &m); + x1 = x; + y1 = y; + gaiaGetPointXYM (rng->Coords, 1, &x, &y, &m); + x2 = x; + y2 = y; + gaiaGetPointXYM (rng->Coords, 2, &x, &y, &m); + x3 = x; + y3 = y; + } + else if (pg->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, 0, &x, &y, &z, &m); + x1 = x; + y1 = y; + gaiaGetPointXYZM (rng->Coords, 1, &x, &y, &z, &m); + x2 = x; + y2 = y; + gaiaGetPointXYZM (rng->Coords, 2, &x, &y, &z, &m); + x3 = x; + y3 = y; + } + else + { + gaiaGetPoint (rng->Coords, 0, &x, &y); + x1 = x; + y1 = y; + gaiaGetPoint (rng->Coords, 1, &x, &y); + x2 = x; + y2 = y; + gaiaGetPoint (rng->Coords, 2, &x, &y); + x3 = x; + y3 = y; + } + + segm = gaiaAllocGeomColl (); + ln = gaiaAddLinestringToGeomColl (segm, 2); + gaiaSetPoint (ln->Coords, 0, x1, y1); + gaiaSetPoint (ln->Coords, 1, x2, y2); + if (p_cache != NULL) + gaiaGeomCollLength_r (p_cache, segm, &length); + else + gaiaGeomCollLength (segm, &length); + gaiaFreeGeomColl (segm); + concave_hull_stats (&concave, length); + + segm = gaiaAllocGeomColl (); + ln = gaiaAddLinestringToGeomColl (segm, 2); + gaiaSetPoint (ln->Coords, 0, x2, y2); + gaiaSetPoint (ln->Coords, 1, x3, y3); + if (p_cache != NULL) + gaiaGeomCollLength_r (p_cache, segm, &length); + else + gaiaGeomCollLength (segm, &length); + gaiaFreeGeomColl (segm); + concave_hull_stats (&concave, length); + + segm = gaiaAllocGeomColl (); + ln = gaiaAddLinestringToGeomColl (segm, 2); + gaiaSetPoint (ln->Coords, 0, x3, y3); + gaiaSetPoint (ln->Coords, 1, x1, y1); + if (p_cache != NULL) + gaiaGeomCollLength_r (p_cache, segm, &length); + else + gaiaGeomCollLength (segm, &length); + gaiaFreeGeomColl (segm); + concave_hull_stats (&concave, length); + + pg = pg->Next; + } + + std_dev = sqrt (concave.quot / concave.count); + +/* creating the Geometry representing the Concave Hull */ + if (dimension_model == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (dimension_model == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else if (dimension_model == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else + result = gaiaAllocGeomColl (); + + count = 0; + pg = first; + while (pg) + { + /* selecting triangles to be inserted */ + rng = pg->Exterior; + if (pg->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, 0, &x, &y, &z); + x1 = x; + y1 = y; + gaiaGetPointXYZ (rng->Coords, 1, &x, &y, &z); + x2 = x; + y2 = y; + gaiaGetPointXYZ (rng->Coords, 2, &x, &y, &z); + x3 = x; + y3 = y; + } + else if (pg->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, 0, &x, &y, &m); + x1 = x; + y1 = y; + gaiaGetPointXYM (rng->Coords, 1, &x, &y, &m); + x2 = x; + y2 = y; + gaiaGetPointXYM (rng->Coords, 2, &x, &y, &m); + x3 = x; + y3 = y; + } + else if (pg->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, 0, &x, &y, &z, &m); + x1 = x; + y1 = y; + gaiaGetPointXYZM (rng->Coords, 1, &x, &y, &z, &m); + x2 = x; + y2 = y; + gaiaGetPointXYZM (rng->Coords, 2, &x, &y, &z, &m); + x3 = x; + y3 = y; + } + else + { + gaiaGetPoint (rng->Coords, 0, &x, &y); + x1 = x; + y1 = y; + gaiaGetPoint (rng->Coords, 1, &x, &y); + x2 = x; + y2 = y; + gaiaGetPoint (rng->Coords, 2, &x, &y); + x3 = x; + y3 = y; + } + + if (concave_hull_filter + (p_cache, x1, y1, x2, y2, x3, y3, std_dev * factor)) + { + /* inserting this triangle into the Concave Hull */ + pg_out = gaiaAddPolygonToGeomColl (result, 4, 0); + rng_out = pg_out->Exterior; + if (pg->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, 0, &x, &y, &z); + gaiaSetPointXYZ (rng_out->Coords, 0, x, y, z); + gaiaGetPointXYZ (rng->Coords, 1, &x, &y, &z); + gaiaSetPointXYZ (rng_out->Coords, 1, x, y, z); + gaiaGetPointXYZ (rng->Coords, 2, &x, &y, &z); + gaiaSetPointXYZ (rng_out->Coords, 2, x, y, z); + gaiaGetPointXYZ (rng->Coords, 3, &x, &y, &z); + gaiaSetPointXYZ (rng_out->Coords, 3, x, y, z); + } + else if (pg->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, 0, &x, &y, &m); + gaiaSetPointXYM (rng_out->Coords, 0, x, y, m); + gaiaGetPointXYM (rng->Coords, 1, &x, &y, &m); + gaiaSetPointXYM (rng_out->Coords, 1, x, y, m); + gaiaGetPointXYM (rng->Coords, 2, &x, &y, &m); + gaiaSetPointXYM (rng_out->Coords, 2, x, y, m); + gaiaGetPointXYM (rng->Coords, 3, &x, &y, &m); + gaiaSetPointXYM (rng_out->Coords, 3, x, y, m); + } + else if (pg->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, 0, &x, &y, &z, &m); + gaiaSetPointXYZM (rng_out->Coords, 0, x, y, z, m); + gaiaGetPointXYZM (rng->Coords, 1, &x, &y, &z, &m); + gaiaSetPointXYZM (rng_out->Coords, 1, x, y, z, m); + gaiaGetPointXYZM (rng->Coords, 2, &x, &y, &z, &m); + gaiaSetPointXYZM (rng_out->Coords, 2, x, y, z, m); + gaiaGetPointXYZM (rng->Coords, 3, &x, &y, &z, &m); + gaiaSetPointXYZM (rng_out->Coords, 3, x, y, z, m); + } + else + { + gaiaGetPoint (rng->Coords, 0, &x, &y); + gaiaSetPoint (rng_out->Coords, 0, x, y); + gaiaGetPoint (rng->Coords, 1, &x, &y); + gaiaSetPoint (rng_out->Coords, 1, x, y); + gaiaGetPoint (rng->Coords, 2, &x, &y); + gaiaSetPoint (rng_out->Coords, 2, x, y); + gaiaGetPoint (rng->Coords, 3, &x, &y); + gaiaSetPoint (rng_out->Coords, 3, x, y); + } + count++; + } + + pg = pg->Next; + } + + if (count == 0) + { + gaiaFreeGeomColl (result); + return NULL; + } + +/* merging all triangles into the Concave Hull */ + segm = result; + if (p_cache != NULL) + result = gaiaUnaryUnion_r (p_cache, segm); + else + result = gaiaUnaryUnion (segm); + gaiaFreeGeomColl (segm); + if (!result) + return NULL; + if (result->FirstPolygon == NULL) + { + gaiaFreeGeomColl (result); + return NULL; + } + if (allow_holes) + return result; + +/* suppressing any interior hole */ + segm = result; + result = concave_hull_no_holes (segm); + gaiaFreeGeomColl (segm); + if (!result) + return NULL; + if (result->FirstPolygon == NULL) + { + gaiaFreeGeomColl (result); + return NULL; + } + return result; +} + +SPATIALITE_PRIVATE void * +concave_hull_build (void *p_first, int dimension_model, double factor, + int allow_holes) +{ + return concave_hull_build_common (NULL, p_first, dimension_model, factor, + allow_holes); +} + +SPATIALITE_PRIVATE void * +concave_hull_build_r (const void *p_cache, void *p_first, int dimension_model, + double factor, int allow_holes) +{ + return concave_hull_build_common (p_cache, p_first, dimension_model, factor, + allow_holes); +} + +#endif /* end GEOS advanced features */ diff --git a/src/spatialite/src/gaiageo/gg_wkb.c b/src/spatialite/src/gaiageo/gg_wkb.c new file mode 100644 index 0000000..e7c859b --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_wkb.c @@ -0,0 +1,6368 @@ +/* + + gg_wkb.c -- Gaia common support for WKB encoded geometries + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include + +#include + +static void +ParseWkbPoint (gaiaGeomCollPtr geo) +{ +/* decodes a POINT from WKB */ + double x; + double y; + if (geo->size < geo->offset + 16) + return; + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + geo->offset += 16; + gaiaAddPointToGeomColl (geo, x, y); +} + +static void +ParseWkbPointZ (gaiaGeomCollPtr geo) +{ +/* decodes a POINTZ from WKB */ + double x; + double y; + double z; + if (geo->size < geo->offset + 24) + return; + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, + geo->endian_arch); + geo->offset += 24; + gaiaAddPointToGeomCollXYZ (geo, x, y, z); +} + +static void +ParseWkbPointM (gaiaGeomCollPtr geo) +{ +/* decodes a POINTM from WKB */ + double x; + double y; + double m; + if (geo->size < geo->offset + 24) + return; + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + m = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, + geo->endian_arch); + geo->offset += 24; + gaiaAddPointToGeomCollXYM (geo, x, y, m); +} + +static void +ParseWkbPointZM (gaiaGeomCollPtr geo) +{ +/* decodes a POINTZM from WKB */ + double x; + double y; + double z; + double m; + if (geo->size < geo->offset + 32) + return; + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, + geo->endian_arch); + m = gaiaImport64 (geo->blob + (geo->offset + 24), geo->endian, + geo->endian_arch); + geo->offset += 32; + gaiaAddPointToGeomCollXYZM (geo, x, y, z, m); +} + +static void +ParseWkbLine (gaiaGeomCollPtr geo) +{ +/* decodes a LINESTRING from WKB */ + int points; + int iv; + double x; + double y; + gaiaLinestringPtr line; + if (geo->size < geo->offset + 4) + return; + points = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (16 * points)) + return; + line = gaiaAddLinestringToGeomColl (geo, points); + for (iv = 0; iv < points; iv++) + { + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + gaiaSetPoint (line->Coords, iv, x, y); + geo->offset += 16; + } +} + +static void +ParseWkbLineZ (gaiaGeomCollPtr geo) +{ +/* decodes a LINESTRINGZ from WKB */ + int points; + int iv; + double x; + double y; + double z; + gaiaLinestringPtr line; + if (geo->size < geo->offset + 4) + return; + points = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (24 * points)) + return; + line = gaiaAddLinestringToGeomColl (geo, points); + for (iv = 0; iv < points; iv++) + { + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, + geo->endian_arch); + gaiaSetPointXYZ (line->Coords, iv, x, y, z); + geo->offset += 24; + } +} + +static void +ParseWkbLineM (gaiaGeomCollPtr geo) +{ +/* decodes a LINESTRINGM from WKB */ + int points; + int iv; + double x; + double y; + double m; + gaiaLinestringPtr line; + if (geo->size < geo->offset + 4) + return; + points = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (24 * points)) + return; + line = gaiaAddLinestringToGeomColl (geo, points); + for (iv = 0; iv < points; iv++) + { + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + m = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, + geo->endian_arch); + gaiaSetPointXYM (line->Coords, iv, x, y, m); + geo->offset += 24; + } +} + +static void +ParseWkbLineZM (gaiaGeomCollPtr geo) +{ +/* decodes a LINESTRINGZM from WKB */ + int points; + int iv; + double x; + double y; + double z; + double m; + gaiaLinestringPtr line; + if (geo->size < geo->offset + 4) + return; + points = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (32 * points)) + return; + line = gaiaAddLinestringToGeomColl (geo, points); + for (iv = 0; iv < points; iv++) + { + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, + geo->endian_arch); + m = gaiaImport64 (geo->blob + (geo->offset + 24), geo->endian, + geo->endian_arch); + gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); + geo->offset += 32; + } +} + +static void +ParseWkbPolygon (gaiaGeomCollPtr geo) +{ +/* decodes a POLYGON from WKB */ + int rings; + int nverts; + int iv; + int ib; + double x; + double y; + gaiaPolygonPtr polyg = NULL; + gaiaRingPtr ring; + if (geo->size < geo->offset + 4) + return; + rings = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + for (ib = 0; ib < rings; ib++) + { + if (geo->size < geo->offset + 4) + return; + nverts = + gaiaImport32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (16 * nverts)) + return; + if (ib == 0) + { + polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); + ring = polyg->Exterior; + } + else + ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); + for (iv = 0; iv < nverts; iv++) + { + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + geo->offset += 16; + gaiaSetPoint (ring->Coords, iv, x, y); + } + } +} + +static void +ParseWkbPolygonZ (gaiaGeomCollPtr geo) +{ +/* decodes a POLYGONZ from WKB */ + int rings; + int nverts; + int iv; + int ib; + double x; + double y; + double z; + gaiaPolygonPtr polyg = NULL; + gaiaRingPtr ring; + if (geo->size < geo->offset + 4) + return; + rings = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + for (ib = 0; ib < rings; ib++) + { + if (geo->size < geo->offset + 4) + return; + nverts = + gaiaImport32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (24 * nverts)) + return; + if (ib == 0) + { + polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); + ring = polyg->Exterior; + } + else + ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); + for (iv = 0; iv < nverts; iv++) + { + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, + geo->endian_arch); + geo->offset += 24; + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + } + } +} + +static void +ParseWkbPolygonM (gaiaGeomCollPtr geo) +{ +/* decodes a POLYGONM from WKB */ + int rings; + int nverts; + int iv; + int ib; + double x; + double y; + double m; + gaiaPolygonPtr polyg = NULL; + gaiaRingPtr ring; + if (geo->size < geo->offset + 4) + return; + rings = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + for (ib = 0; ib < rings; ib++) + { + if (geo->size < geo->offset + 4) + return; + nverts = + gaiaImport32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (24 * nverts)) + return; + if (ib == 0) + { + polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); + ring = polyg->Exterior; + } + else + ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); + for (iv = 0; iv < nverts; iv++) + { + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + m = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, + geo->endian_arch); + geo->offset += 24; + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + } + } +} + +static void +ParseWkbPolygonZM (gaiaGeomCollPtr geo) +{ +/* decodes a POLYGONZM from WKB */ + int rings; + int nverts; + int iv; + int ib; + double x; + double y; + double z; + double m; + gaiaPolygonPtr polyg = NULL; + gaiaRingPtr ring; + if (geo->size < geo->offset + 4) + return; + rings = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + for (ib = 0; ib < rings; ib++) + { + if (geo->size < geo->offset + 4) + return; + nverts = + gaiaImport32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (32 * nverts)) + return; + if (ib == 0) + { + polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); + ring = polyg->Exterior; + } + else + ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); + for (iv = 0; iv < nverts; iv++) + { + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, + geo->endian_arch); + m = gaiaImport64 (geo->blob + (geo->offset + 24), geo->endian, + geo->endian_arch); + geo->offset += 32; + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + } + } +} + +static void +ParseCompressedWkbLine (gaiaGeomCollPtr geo) +{ +/* decodes a COMPRESSED LINESTRING from WKB */ + int points; + int iv; + double x; + double y; + double last_x = 0.0; + double last_y = 0.0; + float fx; + float fy; + gaiaLinestringPtr line; + if (geo->size < geo->offset + 4) + return; + points = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (8 * points) + 16) + return; + line = gaiaAddLinestringToGeomColl (geo, points); + for (iv = 0; iv < points; iv++) + { + if (iv == 0 || iv == (points - 1)) + { + /* first and last vertices are uncompressed */ + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + geo->offset += 16; + } + else + { + /* any other intermediate vertex is compressed */ + fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + fy = gaiaImportF32 (geo->blob + (geo->offset + 4), geo->endian, + geo->endian_arch); + x = last_x + fx; + y = last_y + fy; + geo->offset += 8; + } + gaiaSetPoint (line->Coords, iv, x, y); + last_x = x; + last_y = y; + } +} + +static void +ParseCompressedWkbLineZ (gaiaGeomCollPtr geo) +{ +/* decodes a COMPRESSED LINESTRINGZ from WKB */ + int points; + int iv; + double x; + double y; + double z; + double last_x = 0.0; + double last_y = 0.0; + double last_z = 0.0; + float fx; + float fy; + float fz; + gaiaLinestringPtr line; + if (geo->size < geo->offset + 4) + return; + points = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (12 * points) + 24) + return; + line = gaiaAddLinestringToGeomColl (geo, points); + for (iv = 0; iv < points; iv++) + { + if (iv == 0 || iv == (points - 1)) + { + /* first and last vertices are uncompressed */ + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, + geo->endian_arch); + geo->offset += 24; + } + else + { + /* any other intermediate vertex is compressed */ + fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + fy = gaiaImportF32 (geo->blob + (geo->offset + 4), geo->endian, + geo->endian_arch); + fz = gaiaImportF32 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + x = last_x + fx; + y = last_y + fy; + z = last_z + fz; + geo->offset += 12; + } + gaiaSetPointXYZ (line->Coords, iv, x, y, z); + last_x = x; + last_y = y; + last_z = z; + } +} + +static void +ParseCompressedWkbLineM (gaiaGeomCollPtr geo) +{ +/* decodes a COMPRESSED LINESTRINGM from WKB */ + int points; + int iv; + double x; + double y; + double m; + double last_x = 0.0; + double last_y = 0.0; + float fx; + float fy; + gaiaLinestringPtr line; + if (geo->size < geo->offset + 4) + return; + points = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (16 * points) + 16) + return; + line = gaiaAddLinestringToGeomColl (geo, points); + for (iv = 0; iv < points; iv++) + { + if (iv == 0 || iv == (points - 1)) + { + /* first and last vertices are uncompressed */ + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + m = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, + geo->endian_arch); + geo->offset += 24; + } + else + { + /* any other intermediate vertex is compressed */ + fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + fy = gaiaImportF32 (geo->blob + (geo->offset + 4), geo->endian, + geo->endian_arch); + m = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + x = last_x + fx; + y = last_y + fy; + geo->offset += 16; + } + gaiaSetPointXYM (line->Coords, iv, x, y, m); + last_x = x; + last_y = y; + } +} + +static void +ParseCompressedWkbLineZM (gaiaGeomCollPtr geo) +{ +/* decodes a COMPRESSED LINESTRINGZM from WKB */ + int points; + int iv; + double x; + double y; + double z; + double m; + double last_x = 0.0; + double last_y = 0.0; + double last_z = 0.0; + float fx; + float fy; + float fz; + gaiaLinestringPtr line; + if (geo->size < geo->offset + 4) + return; + points = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (20 * points) + 24) + return; + line = gaiaAddLinestringToGeomColl (geo, points); + for (iv = 0; iv < points; iv++) + { + if (iv == 0 || iv == (points - 1)) + { + /* first and last vertices are uncompressed */ + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + z = gaiaImport64 (geo->blob + (geo->offset + 16), geo->endian, + geo->endian_arch); + m = gaiaImport64 (geo->blob + (geo->offset + 24), geo->endian, + geo->endian_arch); + geo->offset += 32; + } + else + { + /* any other intermediate vertex is compressed */ + fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + fy = gaiaImportF32 (geo->blob + (geo->offset + 4), geo->endian, + geo->endian_arch); + fz = gaiaImportF32 (geo->blob + (geo->offset + 8), geo->endian, + geo->endian_arch); + m = gaiaImport64 (geo->blob + (geo->offset + 12), geo->endian, + geo->endian_arch); + x = last_x + fx; + y = last_y + fy; + z = last_z + fz; + geo->offset += 20; + } + gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); + last_x = x; + last_y = y; + last_z = z; + } +} + +static void +ParseCompressedWkbPolygon (gaiaGeomCollPtr geo) +{ +/* decodes a COMPRESSED POLYGON from WKB */ + int rings; + int nverts; + int iv; + int ib; + double x; + double y; + double last_x = 0.0; + double last_y = 0.0; + float fx; + float fy; + gaiaPolygonPtr polyg = NULL; + gaiaRingPtr ring; + if (geo->size < geo->offset + 4) + return; + rings = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + for (ib = 0; ib < rings; ib++) + { + if (geo->size < geo->offset + 4) + return; + nverts = + gaiaImport32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (8 * nverts) + 16) + return; + if (ib == 0) + { + polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); + ring = polyg->Exterior; + } + else + ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); + for (iv = 0; iv < nverts; iv++) + { + if (iv == 0 || iv == (nverts - 1)) + { + /* first and last vertices are uncompressed */ + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), + geo->endian, geo->endian_arch); + geo->offset += 16; + } + else + { + /* any other intermediate vertex is compressed */ + fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + fy = gaiaImportF32 (geo->blob + (geo->offset + 4), + geo->endian, geo->endian_arch); + x = last_x + fx; + y = last_y + fy; + geo->offset += 8; + } + gaiaSetPoint (ring->Coords, iv, x, y); + last_x = x; + last_y = y; + } + } +} + +static void +ParseCompressedWkbPolygonZ (gaiaGeomCollPtr geo) +{ +/* decodes a COMPRESSED POLYGONZ from WKB */ + int rings; + int nverts; + int iv; + int ib; + double x; + double y; + double z; + double last_x = 0.0; + double last_y = 0.0; + double last_z = 0.0; + float fx; + float fy; + float fz; + gaiaPolygonPtr polyg = NULL; + gaiaRingPtr ring; + if (geo->size < geo->offset + 4) + return; + rings = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + for (ib = 0; ib < rings; ib++) + { + if (geo->size < geo->offset + 4) + return; + nverts = + gaiaImport32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (12 * nverts) + 24) + return; + if (ib == 0) + { + polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); + ring = polyg->Exterior; + } + else + ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); + for (iv = 0; iv < nverts; iv++) + { + if (iv == 0 || iv == (nverts - 1)) + { + /* first and last vertices are uncompressed */ + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), + geo->endian, geo->endian_arch); + z = gaiaImport64 (geo->blob + (geo->offset + 16), + geo->endian, geo->endian_arch); + geo->offset += 24; + } + else + { + /* any other intermediate vertex is compressed */ + fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + fy = gaiaImportF32 (geo->blob + (geo->offset + 4), + geo->endian, geo->endian_arch); + fz = gaiaImportF32 (geo->blob + (geo->offset + 8), + geo->endian, geo->endian_arch); + x = last_x + fx; + y = last_y + fy; + z = last_z + fz; + geo->offset += 12; + } + gaiaSetPointXYZ (ring->Coords, iv, x, y, z); + last_x = x; + last_y = y; + last_z = z; + } + } +} + +static void +ParseCompressedWkbPolygonM (gaiaGeomCollPtr geo) +{ +/* decodes a COMPRESSED POLYGONM from WKB */ + int rings; + int nverts; + int iv; + int ib; + double x; + double y; + double m; + double last_x = 0.0; + double last_y = 0.0; + float fx; + float fy; + gaiaPolygonPtr polyg = NULL; + gaiaRingPtr ring; + if (geo->size < geo->offset + 4) + return; + rings = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + for (ib = 0; ib < rings; ib++) + { + if (geo->size < geo->offset + 4) + return; + nverts = + gaiaImport32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (16 * nverts) + 16) + return; + if (ib == 0) + { + polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); + ring = polyg->Exterior; + } + else + ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); + for (iv = 0; iv < nverts; iv++) + { + if (iv == 0 || iv == (nverts - 1)) + { + /* first and last vertices are uncompressed */ + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), + geo->endian, geo->endian_arch); + m = gaiaImport64 (geo->blob + (geo->offset + 16), + geo->endian, geo->endian_arch); + geo->offset += 24; + } + else + { + /* any other intermediate vertex is compressed */ + fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + fy = gaiaImportF32 (geo->blob + (geo->offset + 4), + geo->endian, geo->endian_arch); + m = gaiaImport64 (geo->blob + (geo->offset + 8), + geo->endian, geo->endian_arch); + x = last_x + fx; + y = last_y + fy; + geo->offset += 16; + } + gaiaSetPointXYM (ring->Coords, iv, x, y, m); + last_x = x; + last_y = y; + } + } +} + +static void +ParseCompressedWkbPolygonZM (gaiaGeomCollPtr geo) +{ +/* decodes a COMPRESSED POLYGONZM from WKB */ + int rings; + int nverts; + int iv; + int ib; + double x; + double y; + double z; + double m; + double last_x = 0.0; + double last_y = 0.0; + double last_z = 0.0; + float fx; + float fy; + float fz; + gaiaPolygonPtr polyg = NULL; + gaiaRingPtr ring; + if (geo->size < geo->offset + 4) + return; + rings = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + for (ib = 0; ib < rings; ib++) + { + if (geo->size < geo->offset + 4) + return; + nverts = + gaiaImport32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + geo->offset += 4; + if (geo->size < geo->offset + (20 * nverts) + 24) + return; + if (ib == 0) + { + polyg = gaiaAddPolygonToGeomColl (geo, nverts, rings - 1); + ring = polyg->Exterior; + } + else + ring = gaiaAddInteriorRing (polyg, ib - 1, nverts); + for (iv = 0; iv < nverts; iv++) + { + if (iv == 0 || iv == (nverts - 1)) + { + /* first and last vertices are uncompressed */ + x = gaiaImport64 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + y = gaiaImport64 (geo->blob + (geo->offset + 8), + geo->endian, geo->endian_arch); + z = gaiaImport64 (geo->blob + (geo->offset + 16), + geo->endian, geo->endian_arch); + m = gaiaImport64 (geo->blob + (geo->offset + 24), + geo->endian, geo->endian_arch); + geo->offset += 32; + } + else + { + /* any other intermediate vertex is compressed */ + fx = gaiaImportF32 (geo->blob + geo->offset, geo->endian, + geo->endian_arch); + fy = gaiaImportF32 (geo->blob + (geo->offset + 4), + geo->endian, geo->endian_arch); + fz = gaiaImportF32 (geo->blob + (geo->offset + 8), + geo->endian, geo->endian_arch); + m = gaiaImport64 (geo->blob + (geo->offset + 12), + geo->endian, geo->endian_arch); + x = last_x + fx; + y = last_y + fy; + z = last_z + fz; + geo->offset += 20; + } + gaiaSetPointXYZM (ring->Coords, iv, x, y, z, m); + last_x = x; + last_y = y; + last_z = z; + } + } +} + +static void +ParseWkbGeometry (gaiaGeomCollPtr geo, int isWKB) +{ +/* decodes a MULTIxx or GEOMETRYCOLLECTION from SpatiaLite BLOB */ + int entities; + int type; + int ie; + if (geo->size < geo->offset + 4) + return; + entities = + gaiaImport32 (geo->blob + geo->offset, geo->endian, geo->endian_arch); + geo->offset += 4; + for (ie = 0; ie < entities; ie++) + { + if (geo->size < geo->offset + 5) + return; + if (isWKB) + { + /* vanilla WKB could be encoded as mixed big-/little-endian sub-items */ + if (*(geo->blob + geo->offset) == 0x01) + geo->endian = GAIA_LITTLE_ENDIAN; + else + geo->endian = GAIA_BIG_ENDIAN; + } + type = + gaiaImport32 (geo->blob + geo->offset + 1, geo->endian, + geo->endian_arch); + geo->offset += 5; + switch (type) + { + case GAIA_POINT: + ParseWkbPoint (geo); + break; + case GAIA_POINTZ: + case GAIA_GEOSWKB_POINTZ: + ParseWkbPointZ (geo); + break; + case GAIA_POINTM: + ParseWkbPointM (geo); + break; + case GAIA_POINTZM: + ParseWkbPointZM (geo); + break; + case GAIA_LINESTRING: + ParseWkbLine (geo); + break; + case GAIA_LINESTRINGZ: + case GAIA_GEOSWKB_LINESTRINGZ: + ParseWkbLineZ (geo); + break; + case GAIA_LINESTRINGM: + ParseWkbLineM (geo); + break; + case GAIA_LINESTRINGZM: + ParseWkbLineZM (geo); + break; + case GAIA_POLYGON: + ParseWkbPolygon (geo); + break; + case GAIA_POLYGONZ: + case GAIA_GEOSWKB_POLYGONZ: + ParseWkbPolygonZ (geo); + break; + case GAIA_POLYGONM: + ParseWkbPolygonM (geo); + break; + case GAIA_POLYGONZM: + ParseWkbPolygonZM (geo); + break; + case GAIA_COMPRESSED_LINESTRING: + ParseCompressedWkbLine (geo); + break; + case GAIA_COMPRESSED_LINESTRINGZ: + ParseCompressedWkbLineZ (geo); + break; + case GAIA_COMPRESSED_LINESTRINGM: + ParseCompressedWkbLineM (geo); + break; + case GAIA_COMPRESSED_LINESTRINGZM: + ParseCompressedWkbLineZM (geo); + break; + case GAIA_COMPRESSED_POLYGON: + ParseCompressedWkbPolygon (geo); + break; + case GAIA_COMPRESSED_POLYGONZ: + ParseCompressedWkbPolygonZ (geo); + break; + case GAIA_COMPRESSED_POLYGONM: + ParseCompressedWkbPolygonM (geo); + break; + case GAIA_COMPRESSED_POLYGONZM: + ParseCompressedWkbPolygonZM (geo); + break; + default: + break; + }; + } +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaFromSpatiaLiteBlobWkb (const unsigned char *blob, unsigned int size) +{ +/* decoding from SpatiaLite BLOB to GEOMETRY */ + int type; + int little_endian; + int endian_arch = gaiaEndianArch (); + gaiaGeomCollPtr geo = NULL; + if (size < 45) + return NULL; /* cannot be an internal BLOB WKB geometry */ + if (*(blob + 0) != GAIA_MARK_START) + return NULL; /* failed to recognize START signature */ + if (*(blob + (size - 1)) != GAIA_MARK_END) + return NULL; /* failed to recognize END signature */ + if (*(blob + 38) != GAIA_MARK_MBR) + return NULL; /* failed to recognize MBR signature */ + if (*(blob + 1) == GAIA_LITTLE_ENDIAN) + little_endian = 1; + else if (*(blob + 1) == GAIA_BIG_ENDIAN) + little_endian = 0; + else + return NULL; /* unknown encoding; nor little-endian neither big-endian */ + type = gaiaImport32 (blob + 39, little_endian, endian_arch); + geo = gaiaAllocGeomColl (); + geo->Srid = gaiaImport32 (blob + 2, little_endian, endian_arch); + geo->endian_arch = (char) endian_arch; + geo->endian = (char) little_endian; + geo->blob = blob; + geo->size = size; + geo->offset = 43; + switch (type) + { + /* setting up DimensionModel */ + case GAIA_POINTZ: + case GAIA_LINESTRINGZ: + case GAIA_POLYGONZ: + case GAIA_MULTIPOINTZ: + case GAIA_MULTILINESTRINGZ: + case GAIA_MULTIPOLYGONZ: + case GAIA_GEOMETRYCOLLECTIONZ: + case GAIA_COMPRESSED_LINESTRINGZ: + case GAIA_COMPRESSED_POLYGONZ: + geo->DimensionModel = GAIA_XY_Z; + break; + case GAIA_POINTM: + case GAIA_LINESTRINGM: + case GAIA_POLYGONM: + case GAIA_MULTIPOINTM: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTIPOLYGONM: + case GAIA_GEOMETRYCOLLECTIONM: + case GAIA_COMPRESSED_LINESTRINGM: + case GAIA_COMPRESSED_POLYGONM: + geo->DimensionModel = GAIA_XY_M; + break; + case GAIA_POINTZM: + case GAIA_LINESTRINGZM: + case GAIA_POLYGONZM: + case GAIA_MULTIPOINTZM: + case GAIA_MULTILINESTRINGZM: + case GAIA_MULTIPOLYGONZM: + case GAIA_GEOMETRYCOLLECTIONZM: + case GAIA_COMPRESSED_LINESTRINGZM: + case GAIA_COMPRESSED_POLYGONZM: + geo->DimensionModel = GAIA_XY_Z_M; + break; + default: + geo->DimensionModel = GAIA_XY; + break; + }; + switch (type) + { + /* parsing elementary geometries */ + case GAIA_POINT: + ParseWkbPoint (geo); + break; + case GAIA_POINTZ: + ParseWkbPointZ (geo); + break; + case GAIA_POINTM: + ParseWkbPointM (geo); + break; + case GAIA_POINTZM: + ParseWkbPointZM (geo); + break; + case GAIA_LINESTRING: + ParseWkbLine (geo); + break; + case GAIA_LINESTRINGZ: + ParseWkbLineZ (geo); + break; + case GAIA_LINESTRINGM: + ParseWkbLineM (geo); + break; + case GAIA_LINESTRINGZM: + ParseWkbLineZM (geo); + break; + case GAIA_POLYGON: + ParseWkbPolygon (geo); + break; + case GAIA_POLYGONZ: + ParseWkbPolygonZ (geo); + break; + case GAIA_POLYGONM: + ParseWkbPolygonM (geo); + break; + case GAIA_POLYGONZM: + ParseWkbPolygonZM (geo); + break; + case GAIA_COMPRESSED_LINESTRING: + ParseCompressedWkbLine (geo); + break; + case GAIA_COMPRESSED_LINESTRINGZ: + ParseCompressedWkbLineZ (geo); + break; + case GAIA_COMPRESSED_LINESTRINGM: + ParseCompressedWkbLineM (geo); + break; + case GAIA_COMPRESSED_LINESTRINGZM: + ParseCompressedWkbLineZM (geo); + break; + case GAIA_COMPRESSED_POLYGON: + ParseCompressedWkbPolygon (geo); + break; + case GAIA_COMPRESSED_POLYGONZ: + ParseCompressedWkbPolygonZ (geo); + break; + case GAIA_COMPRESSED_POLYGONM: + ParseCompressedWkbPolygonM (geo); + break; + case GAIA_COMPRESSED_POLYGONZM: + ParseCompressedWkbPolygonZM (geo); + break; + case GAIA_MULTIPOINT: + case GAIA_MULTIPOINTZ: + case GAIA_MULTIPOINTM: + case GAIA_MULTIPOINTZM: + case GAIA_MULTILINESTRING: + case GAIA_MULTILINESTRINGZ: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTILINESTRINGZM: + case GAIA_MULTIPOLYGON: + case GAIA_MULTIPOLYGONZ: + case GAIA_MULTIPOLYGONM: + case GAIA_MULTIPOLYGONZM: + case GAIA_GEOMETRYCOLLECTION: + case GAIA_GEOMETRYCOLLECTIONZ: + case GAIA_GEOMETRYCOLLECTIONM: + case GAIA_GEOMETRYCOLLECTIONZM: + ParseWkbGeometry (geo, 0); + break; + default: + break; + }; + geo->MinX = gaiaImport64 (blob + 6, little_endian, endian_arch); + geo->MinY = gaiaImport64 (blob + 14, little_endian, endian_arch); + geo->MaxX = gaiaImport64 (blob + 22, little_endian, endian_arch); + geo->MaxY = gaiaImport64 (blob + 30, little_endian, endian_arch); + switch (type) + { + /* setting up DeclaredType */ + case GAIA_POINT: + case GAIA_POINTZ: + case GAIA_POINTM: + case GAIA_POINTZM: + geo->DeclaredType = GAIA_POINT; + break; + case GAIA_LINESTRING: + case GAIA_LINESTRINGZ: + case GAIA_LINESTRINGM: + case GAIA_LINESTRINGZM: + case GAIA_COMPRESSED_LINESTRING: + case GAIA_COMPRESSED_LINESTRINGZ: + case GAIA_COMPRESSED_LINESTRINGM: + case GAIA_COMPRESSED_LINESTRINGZM: + geo->DeclaredType = GAIA_LINESTRING; + break; + case GAIA_POLYGON: + case GAIA_POLYGONZ: + case GAIA_POLYGONM: + case GAIA_POLYGONZM: + case GAIA_COMPRESSED_POLYGON: + case GAIA_COMPRESSED_POLYGONZ: + case GAIA_COMPRESSED_POLYGONM: + case GAIA_COMPRESSED_POLYGONZM: + geo->DeclaredType = GAIA_POLYGON; + break; + case GAIA_MULTIPOINT: + case GAIA_MULTIPOINTZ: + case GAIA_MULTIPOINTM: + case GAIA_MULTIPOINTZM: + geo->DeclaredType = GAIA_MULTIPOINT; + break; + case GAIA_MULTILINESTRING: + case GAIA_MULTILINESTRINGZ: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTILINESTRINGZM: + geo->DeclaredType = GAIA_MULTILINESTRING; + break; + case GAIA_MULTIPOLYGON: + case GAIA_MULTIPOLYGONZ: + case GAIA_MULTIPOLYGONM: + case GAIA_MULTIPOLYGONZM: + geo->DeclaredType = GAIA_MULTIPOLYGON; + break; + case GAIA_GEOMETRYCOLLECTION: + case GAIA_GEOMETRYCOLLECTIONZ: + case GAIA_GEOMETRYCOLLECTIONM: + case GAIA_GEOMETRYCOLLECTIONZM: + geo->DeclaredType = GAIA_GEOMETRYCOLLECTION; + break; + default: + geo->DeclaredType = GAIA_UNKNOWN; + break; + }; + return geo; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaFromSpatiaLiteBlobMbr (const unsigned char *blob, unsigned int size) +{ +/* decoding from SpatiaLite BLOB to GEOMETRY [MBR only] */ + int little_endian; + int endian_arch = gaiaEndianArch (); + double minx; + double miny; + double maxx; + double maxy; + gaiaGeomCollPtr geo = NULL; + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + if (size < 45) + return NULL; /* cannot be an internal BLOB WKB geometry */ + if (*(blob + 0) != GAIA_MARK_START) + return NULL; /* failed to recognize START signature */ + if (*(blob + (size - 1)) != GAIA_MARK_END) + return NULL; /* failed to recognize END signature */ + if (*(blob + 38) != GAIA_MARK_MBR) + return NULL; /* failed to recognize MBR signature */ + if (*(blob + 1) == GAIA_LITTLE_ENDIAN) + little_endian = 1; + else if (*(blob + 1) == GAIA_BIG_ENDIAN) + little_endian = 0; + else + return NULL; /* unknown encoding; nor litte-endian neither big-endian */ + geo = gaiaAllocGeomColl (); + polyg = gaiaAddPolygonToGeomColl (geo, 5, 0); + ring = polyg->Exterior; + minx = gaiaImport64 (blob + 6, little_endian, endian_arch); + miny = gaiaImport64 (blob + 14, little_endian, endian_arch); + maxx = gaiaImport64 (blob + 22, little_endian, endian_arch); + maxy = gaiaImport64 (blob + 30, little_endian, endian_arch); + gaiaSetPoint (ring->Coords, 0, minx, miny); /* vertex # 1 */ + gaiaSetPoint (ring->Coords, 1, maxx, miny); /* vertex # 2 */ + gaiaSetPoint (ring->Coords, 2, maxx, maxy); /* vertex # 3 */ + gaiaSetPoint (ring->Coords, 3, minx, maxy); /* vertex # 4 */ + gaiaSetPoint (ring->Coords, 4, minx, miny); /* vertex # 5 [same as vertex # 1 to close the polygon] */ + return geo; +} + +GAIAGEO_DECLARE void +gaiaToSpatiaLiteBlobWkb (gaiaGeomCollPtr geom, unsigned char **result, + int *size) +{ +/* builds the SpatiaLite BLOB representation for this GEOMETRY */ + int ib; + int iv; + double x; + double y; + double z = 0.0; + double m = 0.0; + int entities = 0; + int n_points = 0; + int n_linestrings = 0; + int n_polygons = 0; + int type; + unsigned char *ptr; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + gaiaPointPtr point = NULL; + gaiaLinestringPtr line = NULL; + gaiaPolygonPtr polyg = NULL; + int endian_arch = gaiaEndianArch (); + gaiaMbrGeometry (geom); +/* how many entities, and of what kind, do we have ? */ + pt = geom->FirstPoint; + while (pt) + { + point = pt; + entities++; + n_points++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + line = ln; + entities++; + n_linestrings++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + polyg = pg; + entities++; + n_polygons++; + pg = pg->Next; + } + *size = 0; + *result = NULL; + if (n_points == 0 && n_polygons == 0 && n_linestrings == 0) + return; +/* ok, we can determine the geometry class */ + if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTIPOINT) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTIPOINTZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTIPOINTM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTIPOINTZM; + else + type = GAIA_MULTIPOINT; + } + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_POINTZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_POINTM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_POINTZM; + else + type = GAIA_POINT; + } + } + else if (n_points > 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTIPOINTZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTIPOINTM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTIPOINTZM; + else + type = GAIA_MULTIPOINT; + } + } + else if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTILINESTRING) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTILINESTRINGZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTILINESTRINGM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTILINESTRINGZM; + else + type = GAIA_MULTILINESTRING; + } + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_LINESTRINGZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_LINESTRINGM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_LINESTRINGZM; + else + type = GAIA_LINESTRING; + } + } + else if (n_points == 0 && n_linestrings > 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTILINESTRINGZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTILINESTRINGM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTILINESTRINGZM; + else + type = GAIA_MULTILINESTRING; + } + } + else if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) + { + if (geom->DeclaredType == GAIA_MULTIPOLYGON) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTIPOLYGONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTIPOLYGONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTIPOLYGONZM; + else + type = GAIA_MULTIPOLYGON; + } + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_POLYGONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_POLYGONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_POLYGONZM; + else + type = GAIA_POLYGON; + } + } + else if (n_points == 0 && n_linestrings == 0 && n_polygons > 1) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTIPOLYGONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTIPOLYGONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTIPOLYGONZM; + else + type = GAIA_MULTIPOLYGON; + } + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } +/* and now we compute the size of BLOB */ + *size = 44; /* header size */ + switch (type) + { + case GAIA_POINT: + *size += (sizeof (double) * 2); /* [x,y] coords */ + break; + case GAIA_POINTZ: + *size += (sizeof (double) * 3); /* [x,y,z] coords */ + break; + case GAIA_POINTM: + *size += (sizeof (double) * 3); /* [x,y,m] coords */ + break; + case GAIA_POINTZM: + *size += (sizeof (double) * 4); /* [x,y,z,m] coords */ + break; + case GAIA_LINESTRING: + *size += (4 + ((sizeof (double) * 2) * line->Points)); /* # points + [x,y] for each vertex */ + break; + case GAIA_LINESTRINGZ: + *size += (4 + ((sizeof (double) * 3) * line->Points)); /* # points + [x,y,z] for each vertex */ + break; + case GAIA_LINESTRINGM: + *size += (4 + ((sizeof (double) * 3) * line->Points)); /* # points + [x,y,m] for each vertex */ + break; + case GAIA_LINESTRINGZM: + *size += (4 + ((sizeof (double) * 4) * line->Points)); /* # points + [x,y,z,m] for each vertex */ + break; + case GAIA_POLYGON: + rng = polyg->Exterior; + *size += (8 + ((sizeof (double) * 2) * rng->Points)); /* # rings + # points + [x.y] array - exterior ring */ + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + *size += (4 + ((sizeof (double) * 2) * rng->Points)); /* # points + [x,y] array - interior ring */ + } + break; + case GAIA_POLYGONZ: + rng = polyg->Exterior; + *size += (8 + ((sizeof (double) * 3) * rng->Points)); /* # rings + # points + [x,y,z] array - exterior ring */ + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + *size += (4 + ((sizeof (double) * 3) * rng->Points)); /* # points + [x,y,z] array - interior ring */ + } + break; + case GAIA_POLYGONM: + rng = polyg->Exterior; + *size += (8 + ((sizeof (double) * 3) * rng->Points)); /* # rings + # points + [x,y,m] array - exterior ring */ + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + *size += (4 + ((sizeof (double) * 3) * rng->Points)); /* # points + [x,y,m] array - interior ring */ + } + break; + case GAIA_POLYGONZM: + rng = polyg->Exterior; + *size += (8 + ((sizeof (double) * 4) * rng->Points)); /* # rings + # points + [x,y,z,m] array - exterior ring */ + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + *size += (4 + ((sizeof (double) * 4) * rng->Points)); /* # points + [x,y,z,m] array - interior ring */ + } + break; + default: + /* this one is not a simple geometry; should be a MULTIxxxx or a GEOMETRYCOLLECTION */ + *size += 4; /* # entities */ + point = geom->FirstPoint; + while (point) + { + *size += 5; /* entity header */ + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_M) + *size += (sizeof (double) * 3); /* three doubles for each POINT */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + *size += (sizeof (double) * 4); /* four doubles for each POINT */ + else + *size += (sizeof (double) * 2); /* two doubles for each POINT */ + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + *size += 5; /* entity header */ + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_M) + *size += (4 + ((sizeof (double) * 3) * line->Points)); /* # points + [x,y,z] for each vertex */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + *size += (4 + ((sizeof (double) * 4) * line->Points)); /* # points + [x,y,z,m] for each vertex */ + else + *size += (4 + ((sizeof (double) * 2) * line->Points)); /* # points + [x,y] for each vertex */ + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + *size += 5; /* entity header */ + rng = polyg->Exterior; + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_M) + *size += (8 + ((sizeof (double) * 3) * rng->Points)); /* # rings + # points + [x,y,z] array - exterior ring */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + *size += (8 + ((sizeof (double) * 4) * rng->Points)); /* # rings + # points + [x,y,z,m] array - exterior ring */ + else + *size += (8 + ((sizeof (double) * 2) * rng->Points)); /* # rings + # points + [x,y] array - exterior ring */ + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_M) + *size += (4 + ((sizeof (double) * 3) * rng->Points)); /* # points + [x,y,z] array - interior ring */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + *size += (4 + ((sizeof (double) * 4) * rng->Points)); /* # points + [x,y,z,m] array - interior ring */ + else + *size += (4 + ((sizeof (double) * 2) * rng->Points)); /* # points + [x,y] array - interior ring */ + } + polyg = polyg->Next; + } + }; + *result = malloc (*size); + ptr = *result; +/* and finally we build the BLOB */ + switch (type) + { + case GAIA_POINT: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POINT, 1, endian_arch); /* class POINT */ + gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ + *(ptr + 59) = GAIA_MARK_END; /* END signature */ + break; + case GAIA_POINTZ: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POINTZ, 1, endian_arch); /* class POINT XYZ */ + gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 59, point->Z, 1, endian_arch); /* Z */ + *(ptr + 67) = GAIA_MARK_END; /* END signature */ + break; + case GAIA_POINTM: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POINTM, 1, endian_arch); /* class POINT XYM */ + gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 59, point->M, 1, endian_arch); /* M */ + *(ptr + 67) = GAIA_MARK_END; /* END signature */ + break; + case GAIA_POINTZM: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POINTZM, 1, endian_arch); /* class POINT XYZM */ + gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 59, point->Z, 1, endian_arch); /* M */ + gaiaExport64 (ptr + 67, point->M, 1, endian_arch); /* Z */ + *(ptr + 75) = GAIA_MARK_END; /* END signature */ + break; + case GAIA_LINESTRING: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_LINESTRING, 1, endian_arch); /* class LINESTRING */ + gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ + ptr += 47; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPoint (line->Coords, iv, &x, &y); + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + ptr += 16; + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + case GAIA_LINESTRINGZ: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_LINESTRINGZ, 1, endian_arch); /* class LINESTRING XYZ */ + gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ + ptr += 47; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + gaiaExport64 (ptr + 16, z, 1, endian_arch); + ptr += 24; + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + case GAIA_LINESTRINGM: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_LINESTRINGM, 1, endian_arch); /* class LINESTRING XYM */ + gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ + ptr += 47; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + gaiaExport64 (ptr + 16, m, 1, endian_arch); + ptr += 24; + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + case GAIA_LINESTRINGZM: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_LINESTRINGZM, 1, endian_arch); /* class LINESTRING XYZM */ + gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ + ptr += 47; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + gaiaExport64 (ptr + 16, z, 1, endian_arch); + gaiaExport64 (ptr + 24, m, 1, endian_arch); + ptr += 32; + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + case GAIA_POLYGON: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POLYGON, 1, endian_arch); /* class POLYGON */ + gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ + rng = polyg->Exterior; + gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ + ptr += 51; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ + ptr += 16; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ + ptr += 4; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ + ptr += 16; + } + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + case GAIA_POLYGONZ: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POLYGONZ, 1, endian_arch); /* class POLYGON XYZ */ + gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ + rng = polyg->Exterior; + gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ + ptr += 51; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ + gaiaExport64 (ptr + 16, z, 1, endian_arch); /* Z - exterior ring */ + ptr += 24; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ + ptr += 4; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ + gaiaExport64 (ptr + 16, z, 1, endian_arch); /* Z - interior ring */ + ptr += 24; + } + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + case GAIA_POLYGONM: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POLYGONM, 1, endian_arch); /* class POLYGON XYM */ + gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ + rng = polyg->Exterior; + gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ + ptr += 51; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ + gaiaExport64 (ptr + 16, m, 1, endian_arch); /* M - exterior ring */ + ptr += 24; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ + ptr += 4; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ + gaiaExport64 (ptr + 16, m, 1, endian_arch); /* M - interior ring */ + ptr += 24; + } + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + case GAIA_POLYGONZM: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POLYGONZM, 1, endian_arch); /* class POLYGON */ + gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ + rng = polyg->Exterior; + gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ + ptr += 51; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ + gaiaExport64 (ptr + 16, z, 1, endian_arch); /* Z - exterior ring */ + gaiaExport64 (ptr + 24, m, 1, endian_arch); /* M - exterior ring */ + ptr += 32; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ + ptr += 4; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ + gaiaExport64 (ptr + 16, z, 1, endian_arch); /* Z - exterior ring */ + gaiaExport64 (ptr + 24, m, 1, endian_arch); /* M - exterior ring */ + ptr += 32; + } + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + default: + /* this one is a MULTIxxxx or a GEOMETRYCOLLECTION - building the main header */ + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, type, 1, endian_arch); /* geometric class */ + gaiaExport32 (ptr + 43, entities, 1, endian_arch); /* # entities */ + ptr += 47; + point = geom->FirstPoint; + while (point) + { + *ptr = GAIA_MARK_ENTITY; /* ENTITY signature */ + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaExport32 (ptr + 1, GAIA_POINTZ, 1, endian_arch); /* class POINT XYZ */ + gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 21, point->Z, 1, endian_arch); /* Z */ + ptr += 29; + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaExport32 (ptr + 1, GAIA_POINTM, 1, endian_arch); /* class POINT XYM */ + gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 21, point->M, 1, endian_arch); /* M */ + ptr += 29; + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaExport32 (ptr + 1, GAIA_POINTZM, 1, endian_arch); /* class POINT XYZM */ + gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 21, point->Z, 1, endian_arch); /* Z */ + gaiaExport64 (ptr + 29, point->M, 1, endian_arch); /* M */ + ptr += 37; + } + else + { + gaiaExport32 (ptr + 1, GAIA_POINT, 1, endian_arch); /* class POINT */ + gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ + ptr += 21; + } + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + *ptr = GAIA_MARK_ENTITY; /* ENTITY signature */ + if (geom->DimensionModel == GAIA_XY_Z) + gaiaExport32 (ptr + 1, GAIA_LINESTRINGZ, 1, endian_arch); /* class LINESTRING XYZ */ + else if (geom->DimensionModel == GAIA_XY_M) + gaiaExport32 (ptr + 1, GAIA_LINESTRINGM, 1, endian_arch); /* class LINESTRING XYM */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaExport32 (ptr + 1, GAIA_LINESTRINGZM, 1, endian_arch); /* class LINESTRING XYZM */ + else + gaiaExport32 (ptr + 1, GAIA_LINESTRING, 1, endian_arch); /* class LINESTRING */ + gaiaExport32 (ptr + 5, line->Points, 1, endian_arch); /* # points */ + ptr += 9; + for (iv = 0; iv < line->Points; iv++) + { + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + gaiaExport64 (ptr, x, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y */ + ptr += 16; + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ + ptr += 8; + } + if (geom->DimensionModel == GAIA_XY_M) + { + gaiaExport64 (ptr, m, 1, endian_arch); /* M */ + ptr += 8; + } + if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ + gaiaExport64 (ptr + 8, m, 1, endian_arch); /* M */ + ptr += 16; + } + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + *ptr = GAIA_MARK_ENTITY; /* ENTITY signature */ + if (geom->DimensionModel == GAIA_XY_Z) + gaiaExport32 (ptr + 1, GAIA_POLYGONZ, 1, endian_arch); /* class POLYGON XYZ */ + else if (geom->DimensionModel == GAIA_XY_M) + gaiaExport32 (ptr + 1, GAIA_POLYGONM, 1, endian_arch); /* class POLYGON XYM */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaExport32 (ptr + 1, GAIA_POLYGONZM, 1, endian_arch); /* class POLYGON XYZM */ + else + gaiaExport32 (ptr + 1, GAIA_POLYGON, 1, endian_arch); /* class POLYGON */ + gaiaExport32 (ptr + 5, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ + rng = polyg->Exterior; + gaiaExport32 (ptr + 9, rng->Points, 1, endian_arch); /* # points - exterior ring */ + ptr += 13; + for (iv = 0; iv < rng->Points; iv++) + { + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ + ptr += 16; + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ + ptr += 8; + } + if (geom->DimensionModel == GAIA_XY_M) + { + gaiaExport64 (ptr, m, 1, endian_arch); /* M */ + ptr += 8; + } + if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ + gaiaExport64 (ptr + 8, m, 1, endian_arch); /* M */ + ptr += 16; + } + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ + ptr += 4; + for (iv = 0; iv < rng->Points; iv++) + { + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, + &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ + ptr += 16; + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ + ptr += 8; + } + if (geom->DimensionModel == GAIA_XY_M) + { + gaiaExport64 (ptr, m, 1, endian_arch); /* M */ + ptr += 8; + } + if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ + gaiaExport64 (ptr + 8, m, 1, endian_arch); /* M */ + ptr += 16; + } + } + } + polyg = polyg->Next; + } + *ptr = GAIA_MARK_END; /* END signature */ + }; +} + +GAIAGEO_DECLARE void +gaiaToCompressedBlobWkb (gaiaGeomCollPtr geom, unsigned char **result, + int *size) +{ +/* +/ builds the SpatiaLite BLOB representation for this GEOMETRY +/ geometry-compression will be applied to LINESTRINGs and RINGs +*/ + int ib; + int iv; + double x; + double y; + double z; + double m; + double last_x = 0.0; + double last_y = 0.0; + double last_z = 0.0; + float fx; + float fy; + float fz; + int entities = 0; + int n_points = 0; + int n_linestrings = 0; + int n_polygons = 0; + int type; + unsigned char *ptr; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + gaiaPointPtr point = NULL; + gaiaLinestringPtr line = NULL; + gaiaPolygonPtr polyg = NULL; + int endian_arch = gaiaEndianArch (); + gaiaMbrGeometry (geom); +/* how many entities, and of what kind, do we have ? */ + pt = geom->FirstPoint; + while (pt) + { + point = pt; + entities++; + n_points++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + line = ln; + entities++; + n_linestrings++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + polyg = pg; + entities++; + n_polygons++; + pg = pg->Next; + } + *size = 0; + *result = NULL; + if (n_points == 0 && n_polygons == 0 && n_linestrings == 0) + return; +/* ok, we can determine the geometry class */ + if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTIPOINT) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTIPOINTZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTIPOINTM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTIPOINTZM; + else + type = GAIA_MULTIPOINT; + } + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_POINTZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_POINTM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_POINTZM; + else + type = GAIA_POINT; + } + } + else if (n_points > 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTIPOINTZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTIPOINTM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTIPOINTZM; + else + type = GAIA_MULTIPOINT; + } + } + else if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTILINESTRING) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTILINESTRINGZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTILINESTRINGM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTILINESTRINGZM; + else + type = GAIA_MULTILINESTRING; + } + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_LINESTRINGZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_LINESTRINGM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_LINESTRINGZM; + else + type = GAIA_LINESTRING; + } + } + else if (n_points == 0 && n_linestrings > 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTILINESTRINGZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTILINESTRINGM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTILINESTRINGZM; + else + type = GAIA_MULTILINESTRING; + } + } + else if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) + { + if (geom->DeclaredType == GAIA_MULTIPOLYGON) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTIPOLYGONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTIPOLYGONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTIPOLYGONZM; + else + type = GAIA_MULTIPOLYGON; + } + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_POLYGONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_POLYGONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_POLYGONZM; + else + type = GAIA_POLYGON; + } + } + else if (n_points == 0 && n_linestrings == 0 && n_polygons > 1) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTIPOLYGONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTIPOLYGONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTIPOLYGONZM; + else + type = GAIA_MULTIPOLYGON; + } + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } +/* and now we compute the size of BLOB */ + *size = 44; /* header size */ + switch (type) + { + case GAIA_POINT: + *size += (sizeof (double) * 2); /* [x,y] coords */ + break; + case GAIA_POINTZ: + *size += (sizeof (double) * 3); /* [x,y,z] coords */ + break; + case GAIA_POINTM: + *size += (sizeof (double) * 3); /* [x,y,m] coords */ + break; + case GAIA_POINTZM: + *size += (sizeof (double) * 4); /* [x,y,z,m] coords */ + break; + case GAIA_LINESTRING: + *size += (4 + (8 * line->Points) + 16); /* # points + [x,y] for each vertex */ + break; + case GAIA_LINESTRINGZ: + *size += (4 + (12 * line->Points) + 24); /* # points + [x,y,z] for each vertex */ + break; + case GAIA_LINESTRINGM: + *size += (4 + (16 * line->Points) + 16); /* # points + [x,y,m] for each vertex */ + break; + case GAIA_LINESTRINGZM: + *size += (4 + (20 * line->Points) + 24); /* # points + [x,y,z,m] for each vertex */ + break; + case GAIA_POLYGON: + rng = polyg->Exterior; + *size += (8 + (8 * rng->Points) + 16); /* # rings + # points + [x.y] array - exterior ring */ + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + *size += (4 + (8 * rng->Points) + 16); /* # points + [x,y] array - interior ring */ + } + break; + case GAIA_POLYGONZ: + rng = polyg->Exterior; + *size += (8 + (12 * rng->Points) + 24); /* # rings + # points + [x,y,z] array - exterior ring */ + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + *size += (4 + (12 * rng->Points) + 24); /* # points + [x,y,z] array - interior ring */ + } + break; + case GAIA_POLYGONM: + rng = polyg->Exterior; + *size += (8 + (16 * rng->Points) + 16); /* # rings + # points + [x,y,m] array - exterior ring */ + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + *size += (4 + (16 * rng->Points) + 16); /* # points + [x,y,m] array - interior ring */ + } + break; + case GAIA_POLYGONZM: + rng = polyg->Exterior; + *size += (8 + (20 * rng->Points) + 24); /* # rings + # points + [x,y,z,m] array - exterior ring */ + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + *size += (4 + (20 * rng->Points) + 24); /* # points + [x,y,z,m] array - interior ring */ + } + break; + default: + /* this one is not a simple geometry; should be a MULTIxxxx or a GEOMETRYCOLLECTION */ + *size += 4; /* # entities */ + point = geom->FirstPoint; + while (point) + { + *size += 5; /* entity header */ + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_M) + *size += (sizeof (double) * 3); /* three doubles for each POINT */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + *size += (sizeof (double) * 4); /* four doubles for each POINT */ + else + *size += (sizeof (double) * 2); /* two doubles for each POINT */ + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + *size += 5; /* entity header */ + if (geom->DimensionModel == GAIA_XY_Z) + *size += (4 + (12 * line->Points) + 24); /* # points + [x,y,z] for each vertex */ + else if (geom->DimensionModel == GAIA_XY_M) + *size += (4 + (16 * line->Points) + 16); /* # points + [x,y,m] for each vertex */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + *size += (4 + (20 * line->Points) + 24); /* # points + [x,y,z,m] for each vertex */ + else + *size += (4 + (8 * line->Points) + 16); /* # points + [x,y] for each vertex */ + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + *size += 5; /* entity header */ + rng = polyg->Exterior; + if (geom->DimensionModel == GAIA_XY_Z) + *size += (8 + (12 * rng->Points) + 24); /* # rings + # points + [x,y,z] array - exterior ring */ + else if (geom->DimensionModel == GAIA_XY_M) + *size += (8 + (16 * rng->Points) + 16); /* # rings + # points + [x,y,m] array - exterior ring */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + *size += (8 + (20 * rng->Points) + 24); /* # rings + # points + [x,y,z,m] array - exterior ring */ + else + *size += (8 + (8 * rng->Points) + 16); /* # rings + # points + [x,y] array - exterior ring */ + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + if (geom->DimensionModel == GAIA_XY_Z) + *size += (4 + (12 * rng->Points) + 24); /* # points + [x,y,z] array - interior ring */ + else if (geom->DimensionModel == GAIA_XY_M) + *size += (4 + (16 * rng->Points) + 16); /* # points + [x,y,m] array - interior ring */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + *size += (4 + (20 * rng->Points) + 24); /* # points + [x,y,z,m] array - interior ring */ + else + *size += (4 + (8 * rng->Points) + 16); /* # points + [x,y] array - interior ring */ + } + polyg = polyg->Next; + } + }; + *result = malloc (*size); + ptr = *result; +/* and finally we build the BLOB */ + switch (type) + { + case GAIA_POINT: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POINT, 1, endian_arch); /* class POINT */ + gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ + *(ptr + 59) = GAIA_MARK_END; /* END signature */ + break; + case GAIA_POINTZ: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POINTZ, 1, endian_arch); /* class POINT XYZ */ + gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 59, point->Z, 1, endian_arch); /* Z */ + *(ptr + 67) = GAIA_MARK_END; /* END signature */ + break; + case GAIA_POINTM: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POINTM, 1, endian_arch); /* class POINT XYM */ + gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 59, point->M, 1, endian_arch); /* M */ + *(ptr + 67) = GAIA_MARK_END; /* END signature */ + break; + case GAIA_POINTZM: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_POINTZM, 1, endian_arch); /* class POINT XYZM */ + gaiaExport64 (ptr + 43, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 51, point->Y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 59, point->Z, 1, endian_arch); /* M */ + gaiaExport64 (ptr + 67, point->M, 1, endian_arch); /* Z */ + *(ptr + 75) = GAIA_MARK_END; /* END signature */ + break; + case GAIA_LINESTRING: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_COMPRESSED_LINESTRING, 1, endian_arch); /* class LINESTRING */ + gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ + ptr += 47; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPoint (line->Coords, iv, &x, &y); + if (iv == 0 || iv == (line->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + ptr += 16; + } + else + { + /* compressing any other intermediate vertex */ + fx = (float) (x - last_x); + fy = (float) (y - last_y); + gaiaExportF32 (ptr, fx, 1, endian_arch); + gaiaExportF32 (ptr + 4, fy, 1, endian_arch); + ptr += 8; + } + last_x = x; + last_y = y; + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + case GAIA_LINESTRINGZ: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_COMPRESSED_LINESTRINGZ, 1, endian_arch); /* class LINESTRING XYZ */ + gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ + ptr += 47; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + if (iv == 0 || iv == (line->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + gaiaExport64 (ptr + 16, z, 1, endian_arch); + ptr += 24; + } + else + { + /* compressing any other intermediate vertex */ + fx = (float) (x - last_x); + fy = (float) (y - last_y); + fz = (float) (z - last_z); + gaiaExportF32 (ptr, fx, 1, endian_arch); + gaiaExportF32 (ptr + 4, fy, 1, endian_arch); + gaiaExportF32 (ptr + 8, fz, 1, endian_arch); + ptr += 12; + } + last_x = x; + last_y = y; + last_z = z; + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + case GAIA_LINESTRINGM: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_COMPRESSED_LINESTRINGM, 1, endian_arch); /* class LINESTRING XYM */ + gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ + ptr += 47; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + if (iv == 0 || iv == (line->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + gaiaExport64 (ptr + 16, m, 1, endian_arch); + ptr += 24; + } + else + { + /* compressing any other intermediate vertex */ + fx = (float) (x - last_x); + fy = (float) (y - last_y); + gaiaExportF32 (ptr, fx, 1, endian_arch); + gaiaExportF32 (ptr + 4, fy, 1, endian_arch); + gaiaExport64 (ptr + 8, m, 1, endian_arch); + ptr += 16; + } + last_x = x; + last_y = y; + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + case GAIA_LINESTRINGZM: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_COMPRESSED_LINESTRINGZM, 1, endian_arch); /* class LINESTRING XYZM */ + gaiaExport32 (ptr + 43, line->Points, 1, endian_arch); /* # points */ + ptr += 47; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + if (iv == 0 || iv == (line->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + gaiaExport64 (ptr + 16, z, 1, endian_arch); + gaiaExport64 (ptr + 24, m, 1, endian_arch); + ptr += 32; + } + else + { + /* compressing any other intermediate vertex */ + fx = (float) (x - last_x); + fy = (float) (y - last_y); + fz = (float) (z - last_z); + gaiaExportF32 (ptr, fx, 1, endian_arch); + gaiaExportF32 (ptr + 4, fy, 1, endian_arch); + gaiaExportF32 (ptr + 8, fz, 1, endian_arch); + gaiaExport64 (ptr + 12, m, 1, endian_arch); + ptr += 20; + } + last_x = x; + last_y = y; + last_z = z; + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + case GAIA_POLYGON: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_COMPRESSED_POLYGON, 1, endian_arch); /* class POLYGON */ + gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ + rng = polyg->Exterior; + gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ + ptr += 51; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + if (iv == 0 || iv == (rng->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + ptr += 16; + } + else + { + /* compressing any other intermediate vertex */ + fx = (float) (x - last_x); + fy = (float) (y - last_y); + gaiaExportF32 (ptr, fx, 1, endian_arch); + gaiaExportF32 (ptr + 4, fy, 1, endian_arch); + ptr += 8; + } + last_x = x; + last_y = y; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ + ptr += 4; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + if (iv == 0 || iv == (rng->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + ptr += 16; + } + else + { + /* compressing any other intermediate vertex */ + fx = (float) (x - last_x); + fy = (float) (y - last_y); + gaiaExportF32 (ptr, fx, 1, endian_arch); + gaiaExportF32 (ptr + 4, fy, 1, endian_arch); + ptr += 8; + } + last_x = x; + last_y = y; + } + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + case GAIA_POLYGONZ: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_COMPRESSED_POLYGONZ, 1, endian_arch); /* class POLYGON XYZ */ + gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ + rng = polyg->Exterior; + gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ + ptr += 51; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + if (iv == 0 || iv == (rng->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + gaiaExport64 (ptr + 16, z, 1, endian_arch); + ptr += 24; + } + else + { + /* compressing any other intermediate vertex */ + fx = (float) (x - last_x); + fy = (float) (y - last_y); + fz = (float) (z - last_z); + gaiaExportF32 (ptr, fx, 1, endian_arch); + gaiaExportF32 (ptr + 4, fy, 1, endian_arch); + gaiaExportF32 (ptr + 8, fz, 1, endian_arch); + ptr += 12; + } + last_x = x; + last_y = y; + last_z = z; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ + ptr += 4; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + if (iv == 0 || iv == (rng->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + gaiaExport64 (ptr + 16, z, 1, endian_arch); + ptr += 24; + } + else + { + /* compressing any other intermediate vertex */ + fx = (float) (x - last_x); + fy = (float) (y - last_y); + fz = (float) (z - last_z); + gaiaExportF32 (ptr, fx, 1, endian_arch); + gaiaExportF32 (ptr + 4, fy, 1, endian_arch); + gaiaExportF32 (ptr + 8, fz, 1, endian_arch); + ptr += 12; + } + last_x = x; + last_y = y; + last_z = z; + } + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + case GAIA_POLYGONM: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_COMPRESSED_POLYGONM, 1, endian_arch); /* class POLYGON XYM */ + gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ + rng = polyg->Exterior; + gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ + ptr += 51; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + if (iv == 0 || iv == (rng->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + gaiaExport64 (ptr + 16, m, 1, endian_arch); + ptr += 24; + } + else + { + /* compressing any other intermediate vertex */ + fx = (float) (x - last_x); + fy = (float) (y - last_y); + gaiaExportF32 (ptr, fx, 1, endian_arch); + gaiaExportF32 (ptr + 4, fy, 1, endian_arch); + gaiaExport64 (ptr + 8, m, 1, endian_arch); + ptr += 16; + } + last_x = x; + last_y = y; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ + ptr += 4; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + if (iv == 0 || iv == (rng->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + gaiaExport64 (ptr + 16, m, 1, endian_arch); + ptr += 24; + } + else + { + /* compressing any other intermediate vertex */ + fx = (float) (x - last_x); + fy = (float) (y - last_y); + gaiaExportF32 (ptr, fx, 1, endian_arch); + gaiaExportF32 (ptr + 4, fy, 1, endian_arch); + gaiaExport64 (ptr + 8, m, 1, endian_arch); + ptr += 16; + } + last_x = x; + last_y = y; + } + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + case GAIA_POLYGONZM: + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, GAIA_COMPRESSED_POLYGONZM, 1, endian_arch); /* class POLYGON */ + gaiaExport32 (ptr + 43, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ + rng = polyg->Exterior; + gaiaExport32 (ptr + 47, rng->Points, 1, endian_arch); /* # points - exterior ring */ + ptr += 51; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + if (iv == 0 || iv == (rng->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + gaiaExport64 (ptr + 16, z, 1, endian_arch); + gaiaExport64 (ptr + 24, m, 1, endian_arch); + ptr += 32; + } + else + { + /* compressing any other intermediate vertex */ + fx = (float) (x - last_x); + fy = (float) (y - last_y); + fz = (float) (z - last_z); + gaiaExportF32 (ptr, fx, 1, endian_arch); + gaiaExportF32 (ptr + 4, fy, 1, endian_arch); + gaiaExportF32 (ptr + 8, fz, 1, endian_arch); + gaiaExport64 (ptr + 12, m, 1, endian_arch); + ptr += 20; + } + last_x = x; + last_y = y; + last_z = z; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ + ptr += 4; + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + if (iv == 0 || iv == (rng->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, x, 1, endian_arch); + gaiaExport64 (ptr + 8, y, 1, endian_arch); + gaiaExport64 (ptr + 16, z, 1, endian_arch); + gaiaExport64 (ptr + 24, m, 1, endian_arch); + ptr += 32; + } + else + { + /* compressing any other intermediate vertex */ + fx = (float) (x - last_x); + fy = (float) (y - last_y); + fz = (float) (z - last_z); + gaiaExportF32 (ptr, fx, 1, endian_arch); + gaiaExportF32 (ptr + 4, fy, 1, endian_arch); + gaiaExportF32 (ptr + 8, fz, 1, endian_arch); + gaiaExport64 (ptr + 12, m, 1, endian_arch); + ptr += 20; + } + last_x = x; + last_y = y; + last_z = z; + } + } + *ptr = GAIA_MARK_END; /* END signature */ + break; + default: + /* this one is a MULTIxxxx or a GEOMETRYCOLLECTION - building the main header */ + *ptr = GAIA_MARK_START; /* START signature */ + *(ptr + 1) = GAIA_LITTLE_ENDIAN; /* byte ordering */ + gaiaExport32 (ptr + 2, geom->Srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + 6, geom->MinX, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + 14, geom->MinY, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + 22, geom->MaxX, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + 30, geom->MaxY, 1, endian_arch); /* MBR - maximum Y */ + *(ptr + 38) = GAIA_MARK_MBR; /* MBR signature */ + gaiaExport32 (ptr + 39, type, 1, endian_arch); /* geometric class */ + gaiaExport32 (ptr + 43, entities, 1, endian_arch); /* # entities */ + ptr += 47; + point = geom->FirstPoint; + while (point) + { + *ptr = GAIA_MARK_ENTITY; /* ENTITY signature */ + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaExport32 (ptr + 1, GAIA_POINTZ, 1, endian_arch); /* class POINT XYZ */ + gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 21, point->Z, 1, endian_arch); /* Z */ + ptr += 29; + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaExport32 (ptr + 1, GAIA_POINTM, 1, endian_arch); /* class POINT XYM */ + gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 21, point->M, 1, endian_arch); /* M */ + ptr += 29; + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaExport32 (ptr + 1, GAIA_POINTZM, 1, endian_arch); /* class POINT XYZM */ + gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 21, point->Z, 1, endian_arch); /* Z */ + gaiaExport64 (ptr + 29, point->M, 1, endian_arch); /* M */ + ptr += 37; + } + else + { + gaiaExport32 (ptr + 1, GAIA_POINT, 1, endian_arch); /* class POINT */ + gaiaExport64 (ptr + 5, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 13, point->Y, 1, endian_arch); /* Y */ + ptr += 21; + } + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + *ptr = GAIA_MARK_ENTITY; /* ENTITY signature */ + if (geom->DimensionModel == GAIA_XY_Z) + gaiaExport32 (ptr + 1, GAIA_COMPRESSED_LINESTRINGZ, 1, endian_arch); /* class LINESTRING XYZ */ + else if (geom->DimensionModel == GAIA_XY_M) + gaiaExport32 (ptr + 1, GAIA_COMPRESSED_LINESTRINGM, 1, endian_arch); /* class LINESTRING XYM */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaExport32 (ptr + 1, GAIA_COMPRESSED_LINESTRINGZM, 1, endian_arch); /* class LINESTRING XYZM */ + else + gaiaExport32 (ptr + 1, GAIA_COMPRESSED_LINESTRING, 1, endian_arch); /* class LINESTRING */ + gaiaExport32 (ptr + 5, line->Points, 1, endian_arch); /* # points */ + ptr += 9; + for (iv = 0; iv < line->Points; iv++) + { + z = 0.0; + m = 0.0; + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + if (iv == 0 || iv == (line->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, x, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y */ + ptr += 16; + } + else + { + /* compressing any other intermediate vertex */ + fx = (float) (x - last_x); + fy = (float) (y - last_y); + gaiaExportF32 (ptr, fx, 1, endian_arch); /* X */ + gaiaExportF32 (ptr + 4, fy, 1, endian_arch); /* Y */ + ptr += 8; + } + if (geom->DimensionModel == GAIA_XY_Z) + { + if (iv == 0 || iv == (line->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ + ptr += 8; + } + else + { + /* compressing any other intermediate vertex */ + fz = (float) (z - last_z); + gaiaExportF32 (ptr, fz, 1, endian_arch); /* Z */ + ptr += 4; + } + } + if (geom->DimensionModel == GAIA_XY_M) + { + gaiaExport64 (ptr, m, 1, endian_arch); /* M */ + ptr += 8; + } + if (geom->DimensionModel == GAIA_XY_Z_M) + { + if (iv == 0 || iv == (line->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ + ptr += 8; + } + else + { + /* compressing any other intermediate vertex */ + fz = (float) (z - last_z); + gaiaExportF32 (ptr, fz, 1, endian_arch); /* Z */ + ptr += 4; + } + gaiaExport64 (ptr, m, 1, endian_arch); /* M */ + ptr += 8; + } + last_x = x; + last_y = y; + last_z = z; + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + *ptr = GAIA_MARK_ENTITY; /* ENTITY signature */ + if (geom->DimensionModel == GAIA_XY_Z) + gaiaExport32 (ptr + 1, GAIA_COMPRESSED_POLYGONZ, 1, endian_arch); /* class POLYGON XYZ */ + else if (geom->DimensionModel == GAIA_XY_M) + gaiaExport32 (ptr + 1, GAIA_COMPRESSED_POLYGONM, 1, endian_arch); /* class POLYGON XYM */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaExport32 (ptr + 1, GAIA_COMPRESSED_POLYGONZM, 1, endian_arch); /* class POLYGON XYZM */ + else + gaiaExport32 (ptr + 1, GAIA_COMPRESSED_POLYGON, 1, endian_arch); /* class POLYGON */ + gaiaExport32 (ptr + 5, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ + rng = polyg->Exterior; + gaiaExport32 (ptr + 9, rng->Points, 1, endian_arch); /* # points - exterior ring */ + ptr += 13; + for (iv = 0; iv < rng->Points; iv++) + { + z = 0.0; + m = 0.0; + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + if (iv == 0 || iv == (rng->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ + ptr += 16; + } + else + { + /* compressing any other intermediate vertex */ + fx = (float) (x - last_x); + fy = (float) (y - last_y); + gaiaExportF32 (ptr, fx, 1, endian_arch); /* X */ + gaiaExportF32 (ptr + 4, fy, 1, endian_arch); /* Y */ + ptr += 8; + } + if (geom->DimensionModel == GAIA_XY_Z) + { + if (iv == 0 || iv == (rng->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ + ptr += 8; + } + else + { + /* compressing any other intermediate vertex */ + fz = (float) (z - last_z); + gaiaExportF32 (ptr, fz, 1, endian_arch); /* Z */ + ptr += 4; + } + } + if (geom->DimensionModel == GAIA_XY_M) + { + gaiaExport64 (ptr, m, 1, endian_arch); /* M */ + ptr += 8; + } + if (geom->DimensionModel == GAIA_XY_Z_M) + { + if (iv == 0 || iv == (rng->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ + ptr += 8; + } + else + { + /* compressing any other intermediate vertex */ + fz = (float) (z - last_z); + gaiaExportF32 (ptr, fz, 1, endian_arch); /* Z */ + ptr += 4; + } + gaiaExport64 (ptr, m, 1, endian_arch); /* M */ + ptr += 8; + } + last_x = x; + last_y = y; + last_z = z; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ + ptr += 4; + for (iv = 0; iv < rng->Points; iv++) + { + z = 0.0; + m = 0.0; + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, + &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + if (iv == 0 || iv == (rng->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ + ptr += 16; + } + else + { + /* compressing any other intermediate vertex */ + fx = (float) (x - last_x); + fy = (float) (y - last_y); + gaiaExportF32 (ptr, fx, 1, endian_arch); /* X */ + gaiaExportF32 (ptr + 4, fy, 1, endian_arch); /* Y */ + ptr += 8; + } + if (geom->DimensionModel == GAIA_XY_Z) + { + if (iv == 0 || iv == (rng->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ + ptr += 8; + } + else + { + /* compressing any other intermediate vertex */ + fz = (float) (z - last_z); + gaiaExportF32 (ptr, fz, 1, endian_arch); /* Z */ + ptr += 4; + } + } + if (geom->DimensionModel == GAIA_XY_M) + { + gaiaExport64 (ptr, m, 1, endian_arch); /* M */ + ptr += 8; + } + if (geom->DimensionModel == GAIA_XY_Z_M) + { + if (iv == 0 || iv == (rng->Points - 1)) + { + /* first and last vertices are uncompressed */ + gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ + ptr += 8; + } + else + { + /* compressing any other intermediate vertex */ + fz = (float) (z - last_z); + gaiaExportF32 (ptr, fz, 1, endian_arch); /* Z */ + ptr += 4; + } + gaiaExport64 (ptr, m, 1, endian_arch); /* M */ + ptr += 8; + } + last_x = x; + last_y = y; + last_z = z; + } + } + polyg = polyg->Next; + } + *ptr = GAIA_MARK_END; /* END signature */ + }; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaFromWkb (const unsigned char *blob, unsigned int size) +{ +/* decoding from WKB to GEOMETRY */ + int type; + int little_endian; + gaiaGeomCollPtr geo = NULL; + int endian_arch = gaiaEndianArch (); + if (size < 5) + return NULL; + if (*(blob + 0) == 0x01) + little_endian = GAIA_LITTLE_ENDIAN; + else + little_endian = GAIA_BIG_ENDIAN; + type = gaiaImport32 (blob + 1, little_endian, endian_arch); + if (type == GAIA_POINTZ || type == GAIA_LINESTRINGZ || type == GAIA_POLYGONZ + || type == GAIA_MULTIPOINTZ || type == GAIA_MULTILINESTRINGZ + || type == GAIA_MULTIPOLYGONZ || type == GAIA_GEOMETRYCOLLECTIONZ + || type == GAIA_GEOSWKB_POINTZ || type == GAIA_GEOSWKB_LINESTRINGZ + || type == GAIA_GEOSWKB_POLYGONZ || type == GAIA_GEOSWKB_MULTIPOINTZ + || type == GAIA_GEOSWKB_MULTILINESTRINGZ + || type == GAIA_GEOSWKB_MULTIPOLYGONZ + || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) + geo = gaiaAllocGeomCollXYZ (); + else if (type == GAIA_POINTM || type == GAIA_LINESTRINGM + || type == GAIA_POLYGONM || type == GAIA_MULTIPOINTM + || type == GAIA_MULTILINESTRINGM || type == GAIA_MULTIPOLYGONM + || type == GAIA_GEOMETRYCOLLECTIONM) + geo = gaiaAllocGeomCollXYM (); + else if (type == GAIA_POINTZM || type == GAIA_LINESTRINGZM + || type == GAIA_POLYGONZM || type == GAIA_MULTIPOINTZM + || type == GAIA_MULTILINESTRINGZM || type == GAIA_MULTIPOLYGONZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + geo = gaiaAllocGeomCollXYZM (); + else + geo = gaiaAllocGeomColl (); + geo->Srid = 0; + geo->endian_arch = (char) endian_arch; + geo->endian = (char) little_endian; + geo->blob = blob; + geo->size = size; + geo->offset = 5; + switch (type) + { + case GAIA_POINT: + ParseWkbPoint (geo); + break; + case GAIA_POINTZ: + case GAIA_GEOSWKB_POINTZ: + ParseWkbPointZ (geo); + break; + case GAIA_POINTM: + ParseWkbPointM (geo); + break; + case GAIA_POINTZM: + ParseWkbPointZM (geo); + break; + case GAIA_LINESTRING: + ParseWkbLine (geo); + break; + case GAIA_LINESTRINGZ: + case GAIA_GEOSWKB_LINESTRINGZ: + ParseWkbLineZ (geo); + break; + case GAIA_LINESTRINGM: + ParseWkbLineM (geo); + break; + case GAIA_LINESTRINGZM: + ParseWkbLineZM (geo); + break; + case GAIA_POLYGON: + ParseWkbPolygon (geo); + break; + case GAIA_POLYGONZ: + case GAIA_GEOSWKB_POLYGONZ: + ParseWkbPolygonZ (geo); + break; + case GAIA_POLYGONM: + ParseWkbPolygonM (geo); + break; + case GAIA_POLYGONZM: + ParseWkbPolygonZM (geo); + break; + case GAIA_MULTIPOINT: + case GAIA_MULTILINESTRING: + case GAIA_MULTIPOLYGON: + case GAIA_GEOMETRYCOLLECTION: + case GAIA_MULTIPOINTZ: + case GAIA_MULTILINESTRINGZ: + case GAIA_MULTIPOLYGONZ: + case GAIA_GEOMETRYCOLLECTIONZ: + case GAIA_GEOSWKB_MULTIPOINTZ: + case GAIA_GEOSWKB_MULTILINESTRINGZ: + case GAIA_GEOSWKB_MULTIPOLYGONZ: + case GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ: + case GAIA_MULTIPOINTM: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTIPOLYGONM: + case GAIA_GEOMETRYCOLLECTIONM: + case GAIA_MULTIPOINTZM: + case GAIA_MULTILINESTRINGZM: + case GAIA_MULTIPOLYGONZM: + case GAIA_GEOMETRYCOLLECTIONZM: + ParseWkbGeometry (geo, 1); + break; + default: + break; + }; + gaiaMbrGeometry (geo); + switch (type) + { + case GAIA_POINT: + case GAIA_POINTZ: + case GAIA_GEOSWKB_POINTZ: + case GAIA_POINTM: + case GAIA_POINTZM: + geo->DeclaredType = GAIA_POINT; + break; + case GAIA_LINESTRING: + case GAIA_LINESTRINGZ: + case GAIA_GEOSWKB_LINESTRINGZ: + case GAIA_LINESTRINGM: + case GAIA_LINESTRINGZM: + geo->DeclaredType = GAIA_LINESTRING; + break; + case GAIA_POLYGON: + case GAIA_POLYGONZ: + case GAIA_GEOSWKB_POLYGONZ: + case GAIA_POLYGONM: + case GAIA_POLYGONZM: + geo->DeclaredType = GAIA_POLYGON; + break; + case GAIA_MULTIPOINT: + case GAIA_MULTIPOINTZ: + case GAIA_GEOSWKB_MULTIPOINTZ: + case GAIA_MULTIPOINTM: + case GAIA_MULTIPOINTZM: + geo->DeclaredType = GAIA_MULTIPOINT; + break; + case GAIA_MULTILINESTRING: + case GAIA_MULTILINESTRINGZ: + case GAIA_GEOSWKB_MULTILINESTRINGZ: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTILINESTRINGZM: + geo->DeclaredType = GAIA_MULTILINESTRING; + break; + case GAIA_MULTIPOLYGON: + case GAIA_MULTIPOLYGONZ: + case GAIA_GEOSWKB_MULTIPOLYGONZ: + case GAIA_MULTIPOLYGONM: + case GAIA_MULTIPOLYGONZM: + geo->DeclaredType = GAIA_MULTIPOLYGON; + break; + case GAIA_GEOMETRYCOLLECTION: + case GAIA_GEOMETRYCOLLECTIONZ: + case GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ: + case GAIA_GEOMETRYCOLLECTIONM: + case GAIA_GEOMETRYCOLLECTIONZM: + geo->DeclaredType = GAIA_GEOMETRYCOLLECTION; + break; + } + return geo; +} + +GAIAGEO_DECLARE char * +gaiaToHexWkb (gaiaGeomCollPtr geom) +{ +/* builds the hexadecimal WKB representation for this GEOMETRY */ + unsigned char *wkb = NULL; + int size = 0; + char *hexbuf = NULL; + int i; + char hex[16]; + char *p; + gaiaToWkb (geom, &wkb, &size); + if (!wkb) + return NULL; + hexbuf = malloc ((size * 2) + 1); + p = hexbuf; + for (i = 0; i < size; i++) + { + sprintf (hex, "%02X", *(wkb + i)); + *p++ = hex[0]; + *p++ = hex[1]; + } + *p = '\0'; + return hexbuf; +} + +GAIAGEO_DECLARE void +gaiaToWkb (gaiaGeomCollPtr geom, unsigned char **result, int *size) +{ +/* builds the WKB representation for this GEOMETRY */ + int ib; + int iv; + double x; + double y; + double z = 0.0; + double m = 0.0; + int entities = 0; + int n_points = 0; + int n_linestrings = 0; + int n_polygons = 0; + int type; + unsigned char *ptr; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + gaiaPointPtr point = NULL; + gaiaLinestringPtr line = NULL; + gaiaPolygonPtr polyg = NULL; + int endian_arch = gaiaEndianArch (); + gaiaMbrGeometry (geom); +/* how many entities, and of what kind, do we have ? */ + pt = geom->FirstPoint; + while (pt) + { + point = pt; + entities++; + n_points++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + line = ln; + entities++; + n_linestrings++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + polyg = pg; + entities++; + n_polygons++; + pg = pg->Next; + } + *size = 0; + *result = NULL; + if (n_points == 0 && n_polygons == 0 && n_linestrings == 0) + return; +/* ok, we can determine the geometry class */ + if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTIPOINT) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTIPOINTZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTIPOINTM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTIPOINTZM; + else + type = GAIA_MULTIPOINT; + } + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_POINTZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_POINTM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_POINTZM; + else + type = GAIA_POINT; + } + } + else if (n_points > 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTIPOINTZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTIPOINTM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTIPOINTZM; + else + type = GAIA_MULTIPOINT; + } + } + else if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTILINESTRING) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTILINESTRINGZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTILINESTRINGM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTILINESTRINGZM; + else + type = GAIA_MULTILINESTRING; + } + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_LINESTRINGZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_LINESTRINGM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_LINESTRINGZM; + else + type = GAIA_LINESTRING; + } + } + else if (n_points == 0 && n_linestrings > 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTILINESTRINGZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTILINESTRINGM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTILINESTRINGZM; + else + type = GAIA_MULTILINESTRING; + } + } + else if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) + { + if (geom->DeclaredType == GAIA_MULTIPOLYGON) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTIPOLYGONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTIPOLYGONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTIPOLYGONZM; + else + type = GAIA_MULTIPOLYGON; + } + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_POLYGONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_POLYGONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_POLYGONZM; + else + type = GAIA_POLYGON; + } + } + else if (n_points == 0 && n_linestrings == 0 && n_polygons > 1) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_MULTIPOLYGONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_MULTIPOLYGONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_MULTIPOLYGONZM; + else + type = GAIA_MULTIPOLYGON; + } + } + else + { + if (geom->DimensionModel == GAIA_XY_Z) + type = GAIA_GEOMETRYCOLLECTIONZ; + else if (geom->DimensionModel == GAIA_XY_M) + type = GAIA_GEOMETRYCOLLECTIONM; + else if (geom->DimensionModel == GAIA_XY_Z_M) + type = GAIA_GEOMETRYCOLLECTIONZM; + else + type = GAIA_GEOMETRYCOLLECTION; + } +/* and now we compute the size of WKB */ + *size = 5; /* header size */ + if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING + || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION + || type == GAIA_MULTIPOINTZ || type == GAIA_MULTILINESTRINGZ + || type == GAIA_MULTIPOLYGONZ || type == GAIA_GEOMETRYCOLLECTIONZ + || type == GAIA_MULTIPOINTM || type == GAIA_MULTILINESTRINGM + || type == GAIA_MULTIPOLYGONM || type == GAIA_GEOMETRYCOLLECTIONM + || type == GAIA_MULTIPOINTZM || type == GAIA_MULTILINESTRINGZM + || type == GAIA_MULTIPOLYGONZM || type == GAIA_GEOMETRYCOLLECTIONZM) + *size += 4; + point = geom->FirstPoint; + while (point) + { + if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING + || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION + || type == GAIA_MULTIPOINTZ || type == GAIA_MULTILINESTRINGZ + || type == GAIA_MULTIPOLYGONZ || type == GAIA_GEOMETRYCOLLECTIONZ + || type == GAIA_MULTIPOINTM || type == GAIA_MULTILINESTRINGM + || type == GAIA_MULTIPOLYGONM || type == GAIA_GEOMETRYCOLLECTIONM + || type == GAIA_MULTIPOINTZM || type == GAIA_MULTILINESTRINGZM + || type == GAIA_MULTIPOLYGONZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + *size += 5; + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_M) + *size += (sizeof (double) * 3); /* three doubles for each POINT */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + *size += (sizeof (double) * 4); /* four doubles for each POINT */ + else + *size += (sizeof (double) * 2); /* two doubles for each POINT */ + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING + || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION + || type == GAIA_MULTIPOINTZ || type == GAIA_MULTILINESTRINGZ + || type == GAIA_MULTIPOLYGONZ || type == GAIA_GEOMETRYCOLLECTIONZ + || type == GAIA_MULTIPOINTM || type == GAIA_MULTILINESTRINGM + || type == GAIA_MULTIPOLYGONM || type == GAIA_GEOMETRYCOLLECTIONM + || type == GAIA_MULTIPOINTZM || type == GAIA_MULTILINESTRINGZM + || type == GAIA_MULTIPOLYGONZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + *size += 5; + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_M) + *size += (4 + ((sizeof (double) * 3) * line->Points)); /* # points + [x,y,z] for each vertex */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + *size += (4 + ((sizeof (double) * 4) * line->Points)); /* # points + [x,y,z,m] for each vertex */ + else + *size += (4 + ((sizeof (double) * 2) * line->Points)); /* # points + [x,y] for each vertex */ + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING + || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION + || type == GAIA_MULTIPOINTZ || type == GAIA_MULTILINESTRINGZ + || type == GAIA_MULTIPOLYGONZ || type == GAIA_GEOMETRYCOLLECTIONZ + || type == GAIA_MULTIPOINTM || type == GAIA_MULTILINESTRINGM + || type == GAIA_MULTIPOLYGONM || type == GAIA_GEOMETRYCOLLECTIONM + || type == GAIA_MULTIPOINTZM || type == GAIA_MULTILINESTRINGZM + || type == GAIA_MULTIPOLYGONZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + *size += 5; + rng = polyg->Exterior; + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_M) + *size += (8 + ((sizeof (double) * 3) * rng->Points)); /* # rings + # points + [x,y,z] array - exterior ring */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + *size += (8 + ((sizeof (double) * 4) * rng->Points)); /* # rings + # points + [x,y,z,m] array - exterior ring */ + else + *size += (8 + ((sizeof (double) * 2) * rng->Points)); /* # rings + # points + [x,y] array - exterior ring */ + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_M) + *size += (4 + ((sizeof (double) * 3) * rng->Points)); /* # points + [x,y,z] array - interior ring */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + *size += (4 + ((sizeof (double) * 4) * rng->Points)); /* # points + [x,y,z,m] array - interior ring */ + else + *size += (4 + ((sizeof (double) * 2) * rng->Points)); /* # points + [x,y] array - interior ring */ + } + polyg = polyg->Next; + } + *result = malloc (*size); + ptr = *result; +/* and finally we build the WKB */ + *ptr = 0x01; /* little endian byte order */ + gaiaExport32 (ptr + 1, type, 1, endian_arch); /* the main CLASS TYPE */ + ptr += 5; + if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING + || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION + || type == GAIA_MULTIPOINTZ || type == GAIA_MULTILINESTRINGZ + || type == GAIA_MULTIPOLYGONZ || type == GAIA_GEOMETRYCOLLECTIONZ + || type == GAIA_MULTIPOINTM || type == GAIA_MULTILINESTRINGM + || type == GAIA_MULTIPOLYGONM || type == GAIA_GEOMETRYCOLLECTIONM + || type == GAIA_MULTIPOINTZM || type == GAIA_MULTILINESTRINGZM + || type == GAIA_MULTIPOLYGONZM || type == GAIA_GEOMETRYCOLLECTIONZM) + { + gaiaExport32 (ptr, entities, 1, endian_arch); /* it's a collection; # entities */ + ptr += 4; + } + point = geom->FirstPoint; + while (point) + { + if (type == GAIA_MULTIPOINT || type == GAIA_GEOMETRYCOLLECTION + || type == GAIA_MULTIPOINTZ || type == GAIA_GEOMETRYCOLLECTIONZ + || type == GAIA_MULTIPOINTM || type == GAIA_GEOMETRYCOLLECTIONM + || type == GAIA_MULTIPOINTZM || type == GAIA_GEOMETRYCOLLECTIONZM) + { + *ptr = 0x01; + /* it's a collection: the CLASS TYPE for this element */ + if (type == GAIA_MULTIPOINTZ + || type == GAIA_GEOMETRYCOLLECTIONZ) + gaiaExport32 (ptr + 1, GAIA_POINTZ, 1, endian_arch); + else if (type == GAIA_MULTIPOINTM + || type == GAIA_GEOMETRYCOLLECTIONM) + gaiaExport32 (ptr + 1, GAIA_POINTM, 1, endian_arch); + else if (type == GAIA_MULTIPOINTZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + gaiaExport32 (ptr + 1, GAIA_POINTZM, 1, endian_arch); + else + gaiaExport32 (ptr + 1, GAIA_POINT, 1, endian_arch); + ptr += 5; + } + gaiaExport64 (ptr, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 8, point->Y, 1, endian_arch); /* Y */ + ptr += 16; + if (type == GAIA_POINTZ || type == GAIA_MULTIPOINTZ + || type == GAIA_GEOMETRYCOLLECTIONZ) + { + gaiaExport64 (ptr, point->Z, 1, endian_arch); /* Z */ + ptr += 8; + } + if (type == GAIA_POINTM || type == GAIA_MULTIPOINTM + || type == GAIA_GEOMETRYCOLLECTIONM) + { + gaiaExport64 (ptr, point->M, 1, endian_arch); /* M */ + ptr += 8; + } + if (type == GAIA_POINTZM || type == GAIA_MULTIPOINTZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + { + gaiaExport64 (ptr, point->Z, 1, endian_arch); /* Z */ + gaiaExport64 (ptr + 8, point->M, 1, endian_arch); /* M */ + ptr += 16; + } + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + if (type == GAIA_MULTILINESTRING || type == GAIA_GEOMETRYCOLLECTION + || type == GAIA_MULTILINESTRINGZ + || type == GAIA_GEOMETRYCOLLECTIONZ + || type == GAIA_MULTILINESTRINGM + || type == GAIA_GEOMETRYCOLLECTIONM + || type == GAIA_MULTILINESTRINGZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + { + *ptr = 0x01; + /* it's a collection: the CLASS TYPE for this element */ + if (type == GAIA_MULTILINESTRINGZ + || type == GAIA_GEOMETRYCOLLECTIONZ) + gaiaExport32 (ptr + 1, GAIA_LINESTRINGZ, 1, endian_arch); + else if (type == GAIA_MULTILINESTRINGM + || type == GAIA_GEOMETRYCOLLECTIONM) + gaiaExport32 (ptr + 1, GAIA_LINESTRINGM, 1, endian_arch); + else if (type == GAIA_MULTILINESTRINGZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + gaiaExport32 (ptr + 1, GAIA_LINESTRINGZM, 1, endian_arch); + else + gaiaExport32 (ptr + 1, GAIA_LINESTRING, 1, endian_arch); + ptr += 5; + } + gaiaExport32 (ptr, line->Points, 1, endian_arch); /* # points */ + ptr += 4; + for (iv = 0; iv < line->Points; iv++) + { + if (type == GAIA_LINESTRINGZ || type == GAIA_MULTILINESTRINGZ + || type == GAIA_GEOMETRYCOLLECTIONZ) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (type == GAIA_LINESTRINGM + || type == GAIA_MULTILINESTRINGM + || type == GAIA_GEOMETRYCOLLECTIONM) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (type == GAIA_LINESTRINGZM + || type == GAIA_MULTILINESTRINGZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + gaiaExport64 (ptr, x, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y */ + ptr += 16; + if (type == GAIA_LINESTRINGZ || type == GAIA_MULTILINESTRINGZ + || type == GAIA_GEOMETRYCOLLECTIONZ) + { + gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ + ptr += 8; + } + if (type == GAIA_LINESTRINGM || type == GAIA_MULTILINESTRINGM + || type == GAIA_GEOMETRYCOLLECTIONM) + { + gaiaExport64 (ptr, m, 1, endian_arch); /* M */ + ptr += 8; + } + if (type == GAIA_LINESTRINGZM || type == GAIA_MULTILINESTRINGZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + { + gaiaExport64 (ptr, z, 1, endian_arch); /* Z */ + gaiaExport64 (ptr + 8, m, 1, endian_arch); /* M */ + ptr += 16; + } + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + if (type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION + || type == GAIA_MULTIPOLYGONZ || type == GAIA_GEOMETRYCOLLECTIONZ + || type == GAIA_MULTIPOLYGONM || type == GAIA_GEOMETRYCOLLECTIONM + || type == GAIA_MULTIPOLYGONZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + { + *ptr = 0x01; + /* it's a collection: the CLASS TYPE for this element */ + if (type == GAIA_MULTIPOLYGONZ + || type == GAIA_GEOMETRYCOLLECTIONZ) + gaiaExport32 (ptr + 1, GAIA_POLYGONZ, 1, endian_arch); + else if (type == GAIA_MULTIPOLYGONM + || type == GAIA_GEOMETRYCOLLECTIONM) + gaiaExport32 (ptr + 1, GAIA_POLYGONM, 1, endian_arch); + else if (type == GAIA_MULTIPOLYGONZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + gaiaExport32 (ptr + 1, GAIA_POLYGONZM, 1, endian_arch); + else + gaiaExport32 (ptr + 1, GAIA_POLYGON, 1, endian_arch); + ptr += 5; + } + gaiaExport32 (ptr, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ + rng = polyg->Exterior; + gaiaExport32 (ptr + 4, rng->Points, 1, endian_arch); /* # points - exterior ring */ + ptr += 8; + for (iv = 0; iv < rng->Points; iv++) + { + if (type == GAIA_POLYGONZ || type == GAIA_MULTIPOLYGONZ + || type == GAIA_GEOMETRYCOLLECTIONZ) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (type == GAIA_POLYGONM || type == GAIA_MULTIPOLYGONM + || type == GAIA_GEOMETRYCOLLECTIONM) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (type == GAIA_POLYGONZM || type == GAIA_MULTIPOLYGONZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ + ptr += 16; + if (type == GAIA_POLYGONZ || type == GAIA_MULTIPOLYGONZ + || type == GAIA_GEOMETRYCOLLECTIONZ) + { + gaiaExport64 (ptr, z, 1, endian_arch); /* Z - exterior ring */ + ptr += 8; + } + if (type == GAIA_POLYGONM || type == GAIA_MULTIPOLYGONM + || type == GAIA_GEOMETRYCOLLECTIONM) + { + gaiaExport64 (ptr, m, 1, endian_arch); /* M - exterior ring */ + ptr += 8; + } + if (type == GAIA_POLYGONZM || type == GAIA_MULTIPOLYGONZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + { + gaiaExport64 (ptr, z, 1, endian_arch); /* Z - exterior ring */ + gaiaExport64 (ptr + 8, m, 1, endian_arch); /* M - exterior ring */ + ptr += 16; + } + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ + ptr += 4; + for (iv = 0; iv < rng->Points; iv++) + { + if (type == GAIA_POLYGONZ || type == GAIA_MULTIPOLYGONZ + || type == GAIA_GEOMETRYCOLLECTIONZ) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (type == GAIA_POLYGONM + || type == GAIA_MULTIPOLYGONM + || type == GAIA_GEOMETRYCOLLECTIONM) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (type == GAIA_POLYGONZM + || type == GAIA_MULTIPOLYGONZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ + ptr += 16; + if (type == GAIA_POLYGONZ || type == GAIA_MULTIPOLYGONZ + || type == GAIA_GEOMETRYCOLLECTIONZ) + { + gaiaExport64 (ptr, z, 1, endian_arch); /* Z - exterior ring */ + ptr += 8; + } + if (type == GAIA_POLYGONM || type == GAIA_MULTIPOLYGONM + || type == GAIA_GEOMETRYCOLLECTIONM) + { + gaiaExport64 (ptr, m, 1, endian_arch); /* M - exterior ring */ + ptr += 8; + } + if (type == GAIA_POLYGONZM || type == GAIA_MULTIPOLYGONZM + || type == GAIA_GEOMETRYCOLLECTIONZM) + { + gaiaExport64 (ptr, z, 1, endian_arch); /* Z - exterior ring */ + gaiaExport64 (ptr + 8, m, 1, endian_arch); /* M - exterior ring */ + ptr += 16; + } + } + } + polyg = polyg->Next; + } +} + +GAIAGEO_DECLARE int +gaiaEwkbGetPoint (gaiaGeomCollPtr geom, unsigned char *blob, + int offset, int blob_size, int endian, int endian_arch, + int dims) +{ +/* decodes a POINT from PostGIS EWKB binary GEOMETRY */ + double x; + double y; + double z; + double m; + switch (dims) + { + case GAIA_XY_Z_M: + if (blob_size < offset + 32) + return -1; + break; + case GAIA_XY_Z: + case GAIA_XY_M: + if (blob_size < offset + 24) + return -1; + break; + default: + if (blob_size < offset + 16) + return -1; + break; + } + x = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + y = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + if (dims == GAIA_XY_Z_M) + { + z = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + m = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + gaiaAddPointToGeomCollXYZM (geom, x, y, z, m); + } + else if (dims == GAIA_XY_Z) + { + z = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + gaiaAddPointToGeomCollXYZ (geom, x, y, z); + } + else if (dims == GAIA_XY_M) + { + m = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + gaiaAddPointToGeomCollXYM (geom, x, y, m); + } + else + gaiaAddPointToGeomColl (geom, x, y); + return offset; +} + +GAIAGEO_DECLARE int +gaiaEwkbGetLinestring (gaiaGeomCollPtr geom, unsigned char *blob, + int offset, int blob_size, int endian, + int endian_arch, int dims) +{ +/* decodes a LINESTRING from PostGIS binary GEOMETRY */ + int npoints; + int iv; + double x; + double y; + double z; + double m; + gaiaLinestringPtr ln; + if (blob_size < offset + 4) + return -1; + npoints = gaiaImport32 (blob + offset, endian, endian_arch); + offset += 4; + switch (dims) + { + case GAIA_XY_Z_M: + if (blob_size < offset + (32 * npoints)) + return -1; + break; + case GAIA_XY_Z: + case GAIA_XY_M: + if (blob_size < offset + (24 * npoints)) + return -1; + break; + default: + if (blob_size < offset + (16 * npoints)) + return -1; + break; + } + ln = gaiaAddLinestringToGeomColl (geom, npoints); + for (iv = 0; iv < npoints; iv++) + { + x = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + y = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + if (dims == GAIA_XY_Z_M) + { + z = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + m = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + gaiaSetPointXYZM (ln->Coords, iv, x, y, z, m); + } + else if (dims == GAIA_XY_Z) + { + z = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + gaiaSetPointXYZ (ln->Coords, iv, x, y, z); + } + else if (dims == GAIA_XY_M) + { + m = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + gaiaSetPointXYM (ln->Coords, iv, x, y, m); + } + else + gaiaSetPoint (ln->Coords, iv, x, y); + } + return offset; +} + +GAIAGEO_DECLARE int +gaiaEwkbGetPolygon (gaiaGeomCollPtr geom, unsigned char *blob, + int offset, int blob_size, int endian, + int endian_arch, int dims) +{ +/* decodes a POLYGON from PostGIS binary GEOMETRY */ + int rings; + int npoints; + int iv; + int ib; + double x; + double y; + double z; + double m; + gaiaPolygonPtr polyg = NULL; + gaiaRingPtr rng; + if (blob_size < offset + 4) + return -1; + rings = gaiaImport32 (blob + offset, endian, endian_arch); + offset += 4; + for (ib = 0; ib < rings; ib++) + { + if (blob_size < offset + 4) + return -1; + npoints = gaiaImport32 (blob + offset, endian, endian_arch); + offset += 4; + switch (dims) + { + case GAIA_XY_Z_M: + if (blob_size < offset + (32 * npoints)) + return -1; + break; + case GAIA_XY_Z: + case GAIA_XY_M: + if (blob_size < offset + (24 * npoints)) + return -1; + break; + default: + if (blob_size < offset + (16 * npoints)) + return -1; + break; + } + if (ib == 0) + { + polyg = gaiaAddPolygonToGeomColl (geom, npoints, rings - 1); + rng = polyg->Exterior; + } + else + rng = gaiaAddInteriorRing (polyg, ib - 1, npoints); + for (iv = 0; iv < npoints; iv++) + { + x = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + y = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + if (dims == GAIA_XY_Z_M) + { + z = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + m = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + gaiaSetPointXYZM (rng->Coords, iv, x, y, z, m); + } + else if (dims == GAIA_XY_Z) + { + z = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + gaiaSetPointXYZ (rng->Coords, iv, x, y, z); + } + else if (dims == GAIA_XY_M) + { + m = gaiaImport64 (blob + offset, endian, endian_arch); + offset += 8; + gaiaSetPointXYM (rng->Coords, iv, x, y, m); + } + else + gaiaSetPoint (rng->Coords, iv, x, y); + } + } + return offset; +} + +GAIAGEO_DECLARE int +gaiaEwkbGetMultiGeometry (gaiaGeomCollPtr geom, unsigned char *blob, + int offset, int blob_size, int endian, + int endian_arch, int dims) +{ +/* decodes a MultiGeometry from PostGIS EWKB binary GEOMETRY */ + int entities; + int type; + unsigned char xtype[4]; + int ie; + int off; + if (blob_size < offset + 4) + return -1; + entities = gaiaImport32 (blob + offset, endian, endian_arch); + offset += 4; + for (ie = 0; ie < entities; ie++) + { + if (blob_size < offset + 5) + return -1; + memcpy (xtype, blob + offset + 1, 4); + if (endian) + xtype[3] = 0x00; + else + xtype[0] = 0x00; + type = gaiaImport32 (xtype, endian, endian_arch); + offset += 5; + switch (type) + { + case GAIA_POINT: + off = + gaiaEwkbGetPoint (geom, blob, offset, blob_size, endian, + endian_arch, dims); + if (off < 0) + return -1; + offset = off; + break; + case GAIA_LINESTRING: + off = + gaiaEwkbGetLinestring (geom, blob, offset, blob_size, + endian, endian_arch, dims); + if (off < 0) + return -1; + offset = off; + break; + case GAIA_POLYGON: + off = + gaiaEwkbGetPolygon (geom, blob, offset, blob_size, endian, + endian_arch, dims); + if (off < 0) + return -1; + offset = off; + break; + default: /* unexpected: invalid EWKB */ + return -1; + }; + } + return offset; +} + +static int +parseHexEwkbByte (const unsigned char high, const unsigned char low, + unsigned char *byte) +{ +/* parsing an Hexadecimal byte */ + unsigned char hex; + switch (high) + { + case '0': + hex = 16 * 0; + break; + case '1': + hex = 16 * 1; + break; + case '2': + hex = 16 * 2; + break; + case '3': + hex = 16 * 3; + break; + case '4': + hex = 16 * 4; + break; + case '5': + hex = 16 * 5; + break; + case '6': + hex = 16 * 6; + break; + case '7': + hex = 16 * 7; + break; + case '8': + hex = 16 * 8; + break; + case '9': + hex = 16 * 9; + break; + case 'A': + case 'a': + hex = 16 * 10; + break; + case 'B': + case 'b': + hex = 16 * 11; + break; + case 'C': + case 'c': + hex = 16 * 12; + break; + case 'D': + case 'd': + hex = 16 * 13; + break; + case 'E': + case 'e': + hex = 16 * 14; + break; + case 'F': + case 'f': + hex = 16 * 15; + break; + default: + return 0; + }; + switch (low) + { + case '0': + hex += 0; + break; + case '1': + hex += 1; + break; + case '2': + hex += 2; + break; + case '3': + hex += 3; + break; + case '4': + hex += 4; + break; + case '5': + hex += 5; + break; + case '6': + hex += 6; + break; + case '7': + hex += 7; + break; + case '8': + hex += 8; + break; + case '9': + hex += 9; + break; + case 'A': + case 'a': + hex += 10; + break; + case 'B': + case 'b': + hex += 11; + break; + case 'C': + case 'c': + hex += 12; + break; + case 'D': + case 'd': + hex += 13; + break; + case 'E': + case 'e': + hex += 14; + break; + case 'F': + case 'f': + hex += 15; + break; + default: + return 0; + }; + *byte = hex; + return 1; +} + +GAIAGEO_DECLARE unsigned char * +gaiaParseHexEWKB (const unsigned char *blob_hex, int *blob_size) +{ +/* parsing an Hexadecimal EWKB Geometry */ + unsigned char *blob; + unsigned char *p_out; + const unsigned char *p_in; + char high; + char low; + unsigned char hex; + int size; + int len = strlen ((const char *) blob_hex); + size = len / 2; + if (size * 2 != len) + return NULL; + blob = malloc (size); + if (!blob) + return NULL; + *blob_size = size; + p_in = blob_hex; + p_out = blob; + while (*p_in != '\0') + { + high = *p_in++; + low = *p_in++; + if (!parseHexEwkbByte (high, low, &hex)) + { + free (blob); + return NULL; + } + *p_out++ = hex; + } + *blob_size = size; + return blob; +} + +gaiaGeomCollPtr +gaiaFromEWKB (const unsigned char *in_buffer) +{ +/* creates a Gaia own Geometry from GEOS/PostGIS EWKB */ + unsigned char *blob; + int blob_size; + unsigned char xtype[4]; + unsigned char xdims; + int type; + int has_z = 0; + int has_m = 0; + int dims = GAIA_XY; + int srid; + int ret; + int endian; + int endian_arch = gaiaEndianArch (); + gaiaGeomCollPtr geom = NULL; + blob = gaiaParseHexEWKB (in_buffer, &blob_size); + if (!blob) + return NULL; + if (blob_size < 9) + { + free (blob); + return NULL; + } + if (*(blob + 0) == 0x01) + endian = 1; + else + endian = 0; + memcpy (xtype, blob + 1, 4); + if (endian) + { + xdims = xtype[3]; + xtype[3] = 0x00; + } + else + { + xdims = xtype[0]; + xtype[0] = 0x00; + } + type = gaiaImport32 (xtype, endian, endian_arch); + if (xdims & 0x40) + has_m = 1; + if (xdims & 0x80) + has_z = 1; + if (has_m && has_z) + { + dims = GAIA_XY_Z_M; + geom = gaiaAllocGeomCollXYZM (); + } + else if (has_m) + { + dims = GAIA_XY_M; + geom = gaiaAllocGeomCollXYM (); + } + else if (has_z) + { + dims = GAIA_XY_Z; + geom = gaiaAllocGeomCollXYZ (); + } + else + { + dims = GAIA_XY; + geom = gaiaAllocGeomColl (); + } + srid = gaiaImport32 (blob + 5, endian, endian_arch); + geom->Srid = srid; + if (geom->Srid <= 0) + geom->Srid = 0; + switch (type) + { + case GAIA_POINT: + ret = + gaiaEwkbGetPoint (geom, blob, 9, blob_size, endian, endian_arch, + dims); + break; + case GAIA_LINESTRING: + ret = + gaiaEwkbGetLinestring (geom, blob, 9, blob_size, endian, + endian_arch, dims); + break; + case GAIA_POLYGON: + ret = + gaiaEwkbGetPolygon (geom, blob, 9, blob_size, endian, endian_arch, + dims); + break; + default: + ret = + gaiaEwkbGetMultiGeometry (geom, blob, 9, blob_size, endian, + endian_arch, dims); + break; + }; + free (blob); + if (ret < 0) + { + /* invalid EWKB !!! */ + gaiaFreeGeomColl (geom); + return NULL; + } + return geom; +} + +GAIAGEO_DECLARE void +gaiaToEWKB (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom) +{ +/* prints the GEOS/PostGIS EWKB text representation of current geometry */ + char buf[2048]; + unsigned char endian_buf[16]; + char byte[3]; + char *ptr; + int size; + int type; + int entities = 0; + int n_points = 0; + int n_linestrings = 0; + int n_polygons = 0; + int i; + int iv; + int ib; + double x; + double y; + double z; + double m; + int endian_arch = gaiaEndianArch (); + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + gaiaPointPtr point = NULL; + gaiaLinestringPtr line = NULL; + gaiaPolygonPtr polyg = NULL; + +/* precomputing the required size */ + size = 5; /* SRID and terminating '\0' */ + pt = geom->FirstPoint; + while (pt) + { + point = pt; + entities++; + n_points++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + line = ln; + entities++; + n_linestrings++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + polyg = pg; + entities++; + n_polygons++; + pg = pg->Next; + } + if (n_points == 0 && n_polygons == 0 && n_linestrings == 0) + return; +/* ok, we can determine the geometry class */ + if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTIPOINT) + type = GAIA_MULTIPOINT; + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_POINT; + } + else if (n_points > 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_MULTIPOINT; + } + else if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTILINESTRING) + type = GAIA_MULTILINESTRING; + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_LINESTRING; + } + else if (n_points == 0 && n_linestrings > 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_MULTILINESTRING; + } + else if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) + { + if (geom->DeclaredType == GAIA_MULTIPOLYGON) + type = GAIA_MULTIPOLYGON; + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_POLYGON; + } + else if (n_points == 0 && n_linestrings == 0 && n_polygons > 1) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_MULTIPOLYGON; + } + else + type = GAIA_GEOMETRYCOLLECTION; +/* and now we compute the size of EWKB */ + size += 10; /* header size */ + if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING + || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) + size += 8; + point = geom->FirstPoint; + while (point) + { + if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING + || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) + size += 10; + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_M) + size += 48; /* three doubles for each POINT */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + size += 64; /* four doubles for each POINT */ + else + size += 32; /* two doubles for each POINT */ + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING + || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) + size += 10; + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_M) + size += 8 + (line->Points * 48); /* three doubles for each VERTEX */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + size += 8 + (line->Points * 64); /* four doubles for each VERTEX */ + else + size += 8 + (line->Points * 32); /* two doubles for each VERTEX */ + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING + || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) + size += 10; + rng = polyg->Exterior; + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_M) + size += 16 + (rng->Points * 48); /* three doubles for each VERTEX */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + size += 16 + (rng->Points * 64); /* four doubles for each VERTEX */ + else + size += 16 + (rng->Points * 32); /* two doubles for each VERTEX */ + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_M) + size += 8 + (rng->Points * 48); /* three doubles for each VERTEX */ + else if (geom->DimensionModel == GAIA_XY_Z_M) + size += 8 + (rng->Points * 64); /* four doubles for each VERTEX */ + else + size += 8 + (rng->Points * 32); /* two doubles for each VERTEX */ + } + polyg = polyg->Next; + } +/* and finally we build the EWKB expression */ + ptr = buf; + *ptr++ = '0'; /* little endian byte order */ + *ptr++ = '1'; + gaiaExport32 (endian_buf, type, 1, endian_arch); /* the main CLASS TYPE */ + for (i = 0; i < 3; i++) + { + /* CAVEAT: the 4th byte in PostGIS encodes M/Z presence !!!! */ + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } +/* marking dimensions and M/Z presence */ + if (geom->DimensionModel == GAIA_XY_Z) + { + *ptr++ = 'A'; + *ptr++ = '0'; + } + else if (geom->DimensionModel == GAIA_XY_M) + { + *ptr++ = '6'; + *ptr++ = '0'; + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + *ptr++ = 'E'; + *ptr++ = '0'; + } + else + { + *ptr++ = '2'; + *ptr++ = '0'; + } + gaiaExport32 (endian_buf, geom->Srid, 1, endian_arch); + for (i = 0; i < 4; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + *ptr++ = '\0'; + gaiaAppendToOutBuffer (out_buf, buf); + ptr = buf; + if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING + || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) + { + gaiaExport32 (endian_buf, entities, 1, endian_arch); /* it's a collection; # entities */ + for (i = 0; i < 4; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + } + point = geom->FirstPoint; + while (point) + { + if ((ptr - buf) > 1024) + { + /* flushing the internal buffer */ + *ptr++ = '\0'; + gaiaAppendToOutBuffer (out_buf, buf); + ptr = buf; + } + if (type == GAIA_MULTIPOINT || type == GAIA_GEOMETRYCOLLECTION) + { + *ptr++ = '0'; + *ptr++ = '1'; + /* it's a collection: the CLASS TYPE for this element */ + gaiaExport32 (endian_buf, GAIA_POINT, 1, endian_arch); + for (i = 0; i < 3; i++) + { + /* CAVEAT: the 4th byte in PostGIS encodes M/Z presence !!!! */ + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + /* marking M/Z presence */ + if (geom->DimensionModel == GAIA_XY_Z) + *ptr++ = '8'; + else if (geom->DimensionModel == GAIA_XY_M) + *ptr++ = '4'; + else if (geom->DimensionModel == GAIA_XY_Z_M) + *ptr++ = 'C'; + else + *ptr++ = '0'; + *ptr++ = '0'; + } + gaiaExport64 (endian_buf, point->X, 1, endian_arch); /* X */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + gaiaExport64 (endian_buf, point->Y, 1, endian_arch); /* Y */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaExport64 (endian_buf, point->Z, 1, endian_arch); /* Z */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaExport64 (endian_buf, point->M, 1, endian_arch); /* M */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaExport64 (endian_buf, point->Z, 1, endian_arch); /* Z */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + gaiaExport64 (endian_buf, point->M, 1, endian_arch); /* M */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + } + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + if ((ptr - buf) > 1024) + { + /* flushing the internal buffer */ + *ptr++ = '\0'; + gaiaAppendToOutBuffer (out_buf, buf); + ptr = buf; + } + if (type == GAIA_MULTILINESTRING || type == GAIA_GEOMETRYCOLLECTION) + { + *ptr++ = '0'; + *ptr++ = '1'; + /* it's a collection: the CLASS TYPE for this element */ + gaiaExport32 (endian_buf, GAIA_LINESTRING, 1, endian_arch); + for (i = 0; i < 3; i++) + { + /* CAVEAT: the 4th byte in PostGIS encodes M/Z presence !!!! */ + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + /* marking M/Z presence */ + if (geom->DimensionModel == GAIA_XY_Z) + *ptr++ = '8'; + else if (geom->DimensionModel == GAIA_XY_M) + *ptr++ = '4'; + else if (geom->DimensionModel == GAIA_XY_Z_M) + *ptr++ = 'C'; + else + *ptr++ = '0'; + *ptr++ = '0'; + } + gaiaExport32 (endian_buf, line->Points, 1, endian_arch); /* # points */ + for (i = 0; i < 4; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + for (iv = 0; iv < line->Points; iv++) + { + if ((ptr - buf) > 1024) + { + /* flushing the internal buffer */ + *ptr++ = '\0'; + gaiaAppendToOutBuffer (out_buf, buf); + ptr = buf; + } + gaiaLineGetPoint (line, iv, &x, &y, &z, &m); + gaiaExport64 (endian_buf, x, 1, endian_arch); /* X */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + gaiaExport64 (endian_buf, y, 1, endian_arch); /* Y */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaExport64 (endian_buf, z, 1, endian_arch); /* Z */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaExport64 (endian_buf, m, 1, endian_arch); /* M */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaExport64 (endian_buf, z, 1, endian_arch); /* Z */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + gaiaExport64 (endian_buf, m, 1, endian_arch); /* M */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + } + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + if ((ptr - buf) > 1024) + { + /* flushing the internal buffer */ + *ptr++ = '\0'; + gaiaAppendToOutBuffer (out_buf, buf); + ptr = buf; + } + if (type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) + { + *ptr++ = '0'; + *ptr++ = '1'; + /* it's a collection: the CLASS TYPE for this element */ + gaiaExport32 (endian_buf, GAIA_POLYGON, 1, endian_arch); + for (i = 0; i < 3; i++) + { + /* CAVEAT: the 4th byte in PostGIS encodes M/Z presence !!!! */ + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + /* marking M/Z presence */ + if (geom->DimensionModel == GAIA_XY_Z) + *ptr++ = '8'; + else if (geom->DimensionModel == GAIA_XY_M) + *ptr++ = '4'; + else if (geom->DimensionModel == GAIA_XY_Z_M) + *ptr++ = 'C'; + else + *ptr++ = '0'; + *ptr++ = '0'; + } + gaiaExport32 (endian_buf, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ + for (i = 0; i < 4; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + rng = polyg->Exterior; + gaiaExport32 (endian_buf, rng->Points, 1, endian_arch); /* # points - exterior ring */ + for (i = 0; i < 4; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + for (iv = 0; iv < rng->Points; iv++) + { + if ((ptr - buf) > 1024) + { + /* flushing the internal buffer */ + *ptr++ = '\0'; + gaiaAppendToOutBuffer (out_buf, buf); + ptr = buf; + } + gaiaRingGetPoint (rng, iv, &x, &y, &z, &m); + gaiaExport64 (endian_buf, x, 1, endian_arch); /* X - exterior ring */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + gaiaExport64 (endian_buf, y, 1, endian_arch); /* Y - exterior ring */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaExport64 (endian_buf, z, 1, endian_arch); /* Z */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaExport64 (endian_buf, m, 1, endian_arch); /* M */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaExport64 (endian_buf, z, 1, endian_arch); /* Z */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + gaiaExport64 (endian_buf, m, 1, endian_arch); /* M */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + } + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaExport32 (endian_buf, rng->Points, 1, endian_arch); /* # points - interior ring */ + for (i = 0; i < 4; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + for (iv = 0; iv < rng->Points; iv++) + { + if ((ptr - buf) > 1024) + { + /* flushing the internal buffer */ + *ptr++ = '\0'; + gaiaAppendToOutBuffer (out_buf, buf); + ptr = buf; + } + gaiaRingGetPoint (rng, iv, &x, &y, &z, &m); + gaiaExport64 (endian_buf, x, 1, endian_arch); /* X - interior ring */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + gaiaExport64 (endian_buf, y, 1, endian_arch); /* Y - interior ring */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaExport64 (endian_buf, z, 1, endian_arch); /* Z */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaExport64 (endian_buf, m, 1, endian_arch); /* M */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaExport64 (endian_buf, z, 1, endian_arch); /* Z */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + gaiaExport64 (endian_buf, m, 1, endian_arch); /* M */ + for (i = 0; i < 8; i++) + { + sprintf (byte, "%02X", endian_buf[i]); + *ptr++ = byte[0]; + *ptr++ = byte[1]; + } + } + } + } + polyg = polyg->Next; + } + +/* terminating the EWKB string */ + *ptr = '\0'; + gaiaAppendToOutBuffer (out_buf, buf); +} + +static int +coordDimsFromFgf (int endian_arch, const unsigned char *blob, unsigned int size, + int *type) +{ +/* decoding the coordinate Dimensions for an FGF Geometry */ + int coord_dims; + if (size < 4) + return 0; + coord_dims = gaiaImport32 (blob, GAIA_LITTLE_ENDIAN, endian_arch); + *type = coord_dims; + switch (coord_dims) + { + case GAIA_XY: + return 2; + case GAIA_XY_M: + case GAIA_XY_Z: + return 3; + case GAIA_XY_Z_M: + return 4; + default: + return 0; + } +} + +static int +pointFromFgf (gaiaGeomCollPtr geom, int endian_arch, const unsigned char *blob, + unsigned int size, unsigned int *consumed) +{ +/* decoding a POINT Geometry from FGF */ + double x; + double y; + double z; + double m; + unsigned int sz = size; + const unsigned char *ptr = blob; + int coord_dims; + int type; +/* checking Geometry Type */ + if (sz < 4) + return 0; + if (gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch) != GAIA_POINT) + return 0; + ptr += 4; + sz -= 4; +/* checking size */ + if (sz < 4) + return 0; + coord_dims = coordDimsFromFgf (endian_arch, ptr, size, &type); + if (!coord_dims) + return 0; + ptr += 4; + sz -= 4; + if (sz < (coord_dims * sizeof (double))) + return 0; + if (consumed) + *consumed = coord_dims * sizeof (double); + if (type == GAIA_XY_Z) + { + /* building the POINTZ */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + y = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); + z = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaAddPointToGeomCollXYZ (geom, x, y, z); + } + else if (type == GAIA_XY_M) + { + /* building the POINTM */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + y = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); + m = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaAddPointToGeomCollXYM (geom, x, y, m); + } + else if (type == GAIA_XY_Z_M) + { + /* building the POINTZM */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + y = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); + z = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); + m = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaAddPointToGeomCollXYZM (geom, x, y, z, m); + } + else + { + /* building the POINT */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + y = gaiaImport64 (ptr + 8, GAIA_LITTLE_ENDIAN, endian_arch); + gaiaAddPointToGeomColl (geom, x, y); + } + return 1; +} + +static int +linestringFromFgf (gaiaGeomCollPtr geom, int endian_arch, + const unsigned char *blob, unsigned int size, + unsigned int *consumed) +{ +/* decoding a LINESTRING Geometry from FGF */ + gaiaLinestringPtr ln; + int pts; + int iv; + double x; + double y; + unsigned int ln_sz; + unsigned int sz = size; + const unsigned char *ptr = blob; + int coord_dims; + int type; +/* checking Geometry Type */ + if (sz < 4) + return 0; + if (gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch) != GAIA_LINESTRING) + return 0; + ptr += 4; + sz -= 4; +/* checking size */ + coord_dims = coordDimsFromFgf (endian_arch, ptr, size, &type); + if (!coord_dims) + return 0; + ptr += 4; + sz -= 4; +/* how many points are there ? */ + if (sz < 4) + return 0; + pts = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + ptr += 4; + sz -= 4; + if (pts < 2) + return 0; + ln_sz = pts * coord_dims * sizeof (double); + if (sz < ln_sz) + return 0; + if (consumed) + *consumed = (12 + ln_sz); + if (type == GAIA_XY_Z) + { + /* building the LINESTRINGZ */ + geom->DimensionModel = GAIA_XY_Z; + ln = gaiaAddLinestringToGeomColl (geom, pts); + for (iv = 0; iv < pts; iv++) + { + /* inserting vertices into the linestring */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + y = gaiaImport64 (ptr + sizeof (double), GAIA_LITTLE_ENDIAN, + endian_arch); + ptr += (coord_dims * sizeof (double)); + gaiaSetPoint (ln->Coords, iv, x, y); + } + } + else if (type == GAIA_XY_M) + { + /* building the LINESTRINGM */ + geom->DimensionModel = GAIA_XY_M; + ln = gaiaAddLinestringToGeomColl (geom, pts); + for (iv = 0; iv < pts; iv++) + { + /* inserting vertices into the linestring */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + y = gaiaImport64 (ptr + sizeof (double), GAIA_LITTLE_ENDIAN, + endian_arch); + ptr += (coord_dims * sizeof (double)); + gaiaSetPoint (ln->Coords, iv, x, y); + } + } + else if (type == GAIA_XY_Z_M) + { + /* building the LINESTRINGZM */ + geom->DimensionModel = GAIA_XY_Z_M; + ln = gaiaAddLinestringToGeomColl (geom, pts); + for (iv = 0; iv < pts; iv++) + { + /* inserting vertices into the linestring */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + y = gaiaImport64 (ptr + sizeof (double), GAIA_LITTLE_ENDIAN, + endian_arch); + ptr += (coord_dims * sizeof (double)); + gaiaSetPoint (ln->Coords, iv, x, y); + } + } + else + { + /* building the LINESTRING */ + geom->DimensionModel = GAIA_XY; + ln = gaiaAddLinestringToGeomColl (geom, pts); + for (iv = 0; iv < pts; iv++) + { + /* inserting vertices into the linestring */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + y = gaiaImport64 (ptr + sizeof (double), GAIA_LITTLE_ENDIAN, + endian_arch); + ptr += (coord_dims * sizeof (double)); + gaiaSetPoint (ln->Coords, iv, x, y); + } + } + return 1; +} + +static int +polygonFromFgf (gaiaGeomCollPtr geom, int endian_arch, + const unsigned char *blob, unsigned int size, + unsigned int *consumed) +{ +/* decoding a POLYGON Geometry from FGF */ + gaiaPolygonPtr pg = NULL; + gaiaRingPtr rng; + int rings; + int ir; + int pts; + int iv; + double x; + double y; + double z; + double m; + unsigned int rng_sz; + unsigned int sz = size; + const unsigned char *ptr = blob; + int coord_dims; + int type; + unsigned int bytes = 0; +/* checking Geometry Type */ + if (sz < 4) + return 0; + if (gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch) != GAIA_POLYGON) + return 0; + ptr += 4; + sz -= 4; + bytes += 4; +/* checking size */ + coord_dims = coordDimsFromFgf (endian_arch, ptr, size, &type); + if (!coord_dims) + return 0; + ptr += 4; + sz -= 4; + bytes += 4; +/* how many rings are there ? */ + if (sz < 4) + return 0; + rings = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + ptr += 4; + sz -= 4; + bytes += 4; + if (rings < 1) + return 0; + for (ir = 0; ir < rings; ir++) + { + /* fetching Polygon's rings */ + if (sz < 4) + return 0; + pts = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + ptr += 4; + sz -= 4; + bytes += 4; + if (pts < 4) + return 0; + rng_sz = pts * coord_dims * sizeof (double); + if (sz < rng_sz) + return 0; + bytes += rng_sz; + if (type == GAIA_XY_Z) + { + /* POLYGONZ */ + geom->DimensionModel = GAIA_XY_Z; + if (ir == 0) + { + /* building the EXTERIOR RING */ + pg = gaiaAddPolygonToGeomColl (geom, pts, rings - 1); + rng = pg->Exterior; + for (iv = 0; iv < pts; iv++) + { + /* inserting vertices into the EXTERIOR Ring */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, + endian_arch); + y = gaiaImport64 (ptr + sizeof (double), + GAIA_LITTLE_ENDIAN, endian_arch); + z = gaiaImport64 (ptr + (sizeof (double) * 2), + GAIA_LITTLE_ENDIAN, endian_arch); + ptr += (coord_dims * sizeof (double)); + gaiaSetPointXYZ (rng->Coords, iv, x, y, z); + } + } + else + { + /* building an INTERIOR RING */ + rng = gaiaAddInteriorRing (pg, ir - 1, pts); + for (iv = 0; iv < pts; iv++) + { + /* inserting vertices into some INTERIOR Ring */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, + endian_arch); + y = gaiaImport64 (ptr + sizeof (double), + GAIA_LITTLE_ENDIAN, endian_arch); + z = gaiaImport64 (ptr + (sizeof (double) * 2), + GAIA_LITTLE_ENDIAN, endian_arch); + ptr += (coord_dims * sizeof (double)); + gaiaSetPointXYZ (rng->Coords, iv, x, y, z); + } + } + } + if (type == GAIA_XY_M) + { + /* POLYGONM */ + geom->DimensionModel = GAIA_XY_M; + if (ir == 0) + { + /* building the EXTERIOR RING */ + pg = gaiaAddPolygonToGeomColl (geom, pts, rings - 1); + rng = pg->Exterior; + for (iv = 0; iv < pts; iv++) + { + /* inserting vertices into the EXTERIOR Ring */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, + endian_arch); + y = gaiaImport64 (ptr + sizeof (double), + GAIA_LITTLE_ENDIAN, endian_arch); + m = gaiaImport64 (ptr + (sizeof (double) * 2), + GAIA_LITTLE_ENDIAN, endian_arch); + ptr += (coord_dims * sizeof (double)); + gaiaSetPointXYM (rng->Coords, iv, x, y, m); + } + } + else + { + /* building an INTERIOR RING */ + rng = gaiaAddInteriorRing (pg, ir - 1, pts); + for (iv = 0; iv < pts; iv++) + { + /* inserting vertices into some INTERIOR Ring */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, + endian_arch); + y = gaiaImport64 (ptr + sizeof (double), + GAIA_LITTLE_ENDIAN, endian_arch); + m = gaiaImport64 (ptr + (sizeof (double) * 2), + GAIA_LITTLE_ENDIAN, endian_arch); + ptr += (coord_dims * sizeof (double)); + gaiaSetPointXYM (rng->Coords, iv, x, y, m); + } + } + } + else if (type == GAIA_XY_Z_M) + { + /* POLYGONZM */ + geom->DimensionModel = GAIA_XY_Z_M; + if (ir == 0) + { + /* building the EXTERIOR RING */ + pg = gaiaAddPolygonToGeomColl (geom, pts, rings - 1); + rng = pg->Exterior; + for (iv = 0; iv < pts; iv++) + { + /* inserting vertices into the EXTERIOR Ring */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, + endian_arch); + y = gaiaImport64 (ptr + sizeof (double), + GAIA_LITTLE_ENDIAN, endian_arch); + z = gaiaImport64 (ptr + (sizeof (double) * 2), + GAIA_LITTLE_ENDIAN, endian_arch); + m = gaiaImport64 (ptr + (sizeof (double) * 3), + GAIA_LITTLE_ENDIAN, endian_arch); + ptr += (coord_dims * sizeof (double)); + gaiaSetPointXYZM (rng->Coords, iv, x, y, z, m); + } + } + else + { + /* building an INTERIOR RING */ + rng = gaiaAddInteriorRing (pg, ir - 1, pts); + for (iv = 0; iv < pts; iv++) + { + /* inserting vertices into some INTERIOR Ring */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, + endian_arch); + y = gaiaImport64 (ptr + sizeof (double), + GAIA_LITTLE_ENDIAN, endian_arch); + z = gaiaImport64 (ptr + (sizeof (double) * 2), + GAIA_LITTLE_ENDIAN, endian_arch); + m = gaiaImport64 (ptr + (sizeof (double) * 3), + GAIA_LITTLE_ENDIAN, endian_arch); + ptr += (coord_dims * sizeof (double)); + gaiaSetPointXYZM (rng->Coords, iv, x, y, z, m); + } + } + } + else + { + /* POLYGON */ + geom->DimensionModel = GAIA_XY; + if (ir == 0) + { + /* building the EXTERIOR RING */ + pg = gaiaAddPolygonToGeomColl (geom, pts, rings - 1); + rng = pg->Exterior; + for (iv = 0; iv < pts; iv++) + { + /* inserting vertices into the EXTERIOR Ring */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, + endian_arch); + y = gaiaImport64 (ptr + sizeof (double), + GAIA_LITTLE_ENDIAN, endian_arch); + ptr += (coord_dims * sizeof (double)); + gaiaSetPoint (rng->Coords, iv, x, y); + } + } + else + { + /* building an INTERIOR RING */ + rng = gaiaAddInteriorRing (pg, ir - 1, pts); + for (iv = 0; iv < pts; iv++) + { + /* inserting vertices into some INTERIOR Ring */ + x = gaiaImport64 (ptr, GAIA_LITTLE_ENDIAN, + endian_arch); + y = gaiaImport64 (ptr + sizeof (double), + GAIA_LITTLE_ENDIAN, endian_arch); + ptr += (coord_dims * sizeof (double)); + gaiaSetPoint (rng->Coords, iv, x, y); + } + } + } + sz -= rng_sz; + } + if (consumed) + *consumed = bytes; + return 1; +} + +static int +multiPointFromFgf (gaiaGeomCollPtr geom, int endian_arch, + const unsigned char *blob, unsigned int size) +{ +/* decoding a MULTIPOINT Geometry from FGF */ + int pts; + int ipt; + unsigned int sz = size; + const unsigned char *ptr = blob; + unsigned int consumed; +/* checking Geometry Type */ + if (sz < 4) + return 0; + if (gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch) != GAIA_MULTIPOINT) + return 0; + ptr += 4; + sz -= 4; +/* how many points are there ? */ + if (sz < 4) + return 0; + pts = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + ptr += 4; + sz -= 4; + if (pts < 1) + return 0; + for (ipt = 0; ipt < pts; ipt++) + { + /* fetching individual Points from FGF */ + if (!pointFromFgf (geom, endian_arch, ptr, sz, &consumed)) + return 0; + ptr += consumed; + sz -= consumed; + } + return 1; +} + +static int +multiLinestringFromFgf (gaiaGeomCollPtr geom, int endian_arch, + const unsigned char *blob, unsigned int size) +{ +/* decoding a MULTILINESTRING Geometry from FGF */ + int lns; + int iln; + unsigned int sz = size; + const unsigned char *ptr = blob; + unsigned int consumed; +/* checking Geometry Type */ + if (sz < 4) + return 0; + if (gaiaImport32 + (ptr, GAIA_LITTLE_ENDIAN, endian_arch) != GAIA_MULTILINESTRING) + return 0; + ptr += 4; + sz -= 4; +/* how many linestrings are there ? */ + if (sz < 4) + return 0; + lns = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + ptr += 4; + sz -= 4; + if (lns < 1) + return 0; + for (iln = 0; iln < lns; iln++) + { + /* fetching individual Linestrings from FGF */ + if (!linestringFromFgf (geom, endian_arch, ptr, sz, &consumed)) + return 0; + ptr += consumed; + sz -= consumed; + } + return 1; +} + +static int +multiPolygonFromFgf (gaiaGeomCollPtr geom, int endian_arch, + const unsigned char *blob, unsigned int size) +{ +/* decoding a MULTIPOLYGON Geometry from FGF */ + int pgs; + int ipg; + unsigned int sz = size; + const unsigned char *ptr = blob; + unsigned int consumed; +/* checking Geometry Type */ + if (sz < 4) + return 0; + if (gaiaImport32 + (ptr, GAIA_LITTLE_ENDIAN, endian_arch) != GAIA_MULTIPOLYGON) + return 0; + ptr += 4; + sz -= 4; +/* how many polygons are there ? */ + if (sz < 4) + return 0; + pgs = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + ptr += 4; + sz -= 4; + if (pgs < 1) + return 0; + for (ipg = 0; ipg < pgs; ipg++) + { + /* fetching individual Polygons from FGF */ + if (!polygonFromFgf (geom, endian_arch, ptr, sz, &consumed)) + return 0; + ptr += consumed; + sz -= consumed; + } + return 1; +} + +static int +geomCollectionFromFgf (gaiaGeomCollPtr geom, int endian_arch, + const unsigned char *blob, unsigned int size) +{ +/* decoding a GEOMETRYCOLLECTION Geometry from FGF */ + int geoms; + int ig; + int geom_type; + unsigned int sz = size; + const unsigned char *ptr = blob; + unsigned int consumed; +/* checking Geometry Type */ + if (sz < 4) + return 0; + if (gaiaImport32 + (ptr, GAIA_LITTLE_ENDIAN, endian_arch) != GAIA_GEOMETRYCOLLECTION) + return 0; + ptr += 4; + sz -= 4; +/* how many individual Geometries are there ? */ + if (sz < 4) + return 0; + geoms = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + ptr += 4; + sz -= 4; + if (geoms < 1) + return 0; + for (ig = 0; ig < geoms; ig++) + { + /* fetching individual Geometries from FGF */ + if (sz < 4) + return 0; + geom_type = gaiaImport32 (ptr, GAIA_LITTLE_ENDIAN, endian_arch); + switch (geom_type) + { + case GAIA_POINT: + if (!pointFromFgf (geom, endian_arch, ptr, sz, &consumed)) + return 0; + break; + case GAIA_LINESTRING: + if (!linestringFromFgf (geom, endian_arch, ptr, sz, &consumed)) + return 0; + break; + case GAIA_POLYGON: + if (!polygonFromFgf (geom, endian_arch, ptr, sz, &consumed)) + return 0; + break; + default: /* unsupported geometry type */ + return 0; + break; + }; + ptr += consumed; + sz -= consumed; + } + return 1; +} + +GAIAGEO_DECLARE gaiaGeomCollPtr +gaiaFromFgf (const unsigned char *blob, unsigned int size) +{ +/* decoding from FGF to GEOMETRY */ + gaiaGeomCollPtr geom = NULL; + int geom_type; + int endian_arch = gaiaEndianArch (); + if (size < 4) + return NULL; +/* checking FGF type */ + geom_type = gaiaImport32 (blob, GAIA_LITTLE_ENDIAN, endian_arch); + geom = gaiaAllocGeomColl (); + geom->DeclaredType = geom_type; + switch (geom_type) + { + case GAIA_POINT: + if (pointFromFgf (geom, endian_arch, blob, size, NULL)) + return geom; + break; + case GAIA_LINESTRING: + if (linestringFromFgf (geom, endian_arch, blob, size, NULL)) + return geom; + break; + case GAIA_POLYGON: + if (polygonFromFgf (geom, endian_arch, blob, size, NULL)) + return geom; + break; + case GAIA_MULTIPOINT: + if (multiPointFromFgf (geom, endian_arch, blob, size)) + return geom; + break; + case GAIA_MULTILINESTRING: + if (multiLinestringFromFgf (geom, endian_arch, blob, size)) + return geom; + break; + case GAIA_MULTIPOLYGON: + if (multiPolygonFromFgf (geom, endian_arch, blob, size)) + return geom; + break; + case GAIA_GEOMETRYCOLLECTION: + if (geomCollectionFromFgf (geom, endian_arch, blob, size)) + return geom; + break; + default: /* unsupported geometry type */ + break; + }; + gaiaFreeGeomColl (geom); + return NULL; +} + +GAIAGEO_DECLARE void +gaiaToFgf (gaiaGeomCollPtr geom, unsigned char **result, int *size, + int coord_dims) +{ +/* builds the FGF representation for this GEOMETRY */ + int ib; + int iv; + double x; + double y; + double z; + double m; + int entities = 0; + int n_points = 0; + int n_linestrings = 0; + int n_polygons = 0; + int type; + int n_coords; + unsigned char *ptr; + int sz = 0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + gaiaPointPtr point = NULL; + gaiaLinestringPtr line = NULL; + gaiaPolygonPtr polyg = NULL; + int endian_arch = gaiaEndianArch (); + gaiaMbrGeometry (geom); + switch (coord_dims) + { + case GAIA_XY: + n_coords = 2; + break; + case GAIA_XY_M: + case GAIA_XY_Z: + n_coords = 3; + break; + case GAIA_XY_Z_M: + n_coords = 4; + break; + default: + n_coords = 0; + break; + } +/* how many entities, and of what kind, do we have ? */ + pt = geom->FirstPoint; + while (pt) + { + point = pt; + entities++; + n_points++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + line = ln; + entities++; + n_linestrings++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + polyg = pg; + entities++; + n_polygons++; + pg = pg->Next; + } + *size = 0; + sz = 0; + *result = NULL; + if (n_points == 0 && n_polygons == 0 && n_linestrings == 0) + return; +/* ok, we can determine the geometry class */ + if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTIPOINT) + type = GAIA_MULTIPOINT; + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_POINT; + } + else if (n_points > 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_MULTIPOINT; + } + else if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTILINESTRING) + type = GAIA_MULTILINESTRING; + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_LINESTRING; + } + else if (n_points == 0 && n_linestrings > 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_MULTILINESTRING; + } + else if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) + { + if (geom->DeclaredType == GAIA_MULTIPOLYGON) + type = GAIA_MULTIPOLYGON; + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_POLYGON; + } + else if (n_points == 0 && n_linestrings == 0 && n_polygons > 1) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOMETRYCOLLECTION; + else + type = GAIA_MULTIPOLYGON; + } + else + type = GAIA_GEOMETRYCOLLECTION; +/* and now we compute the size of FGF */ + if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING + || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) + sz += 8; + point = geom->FirstPoint; + while (point) + { + sz += (8 + (n_coords * sizeof (double))); /* the size of each POINT */ + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + sz += (12 + ((n_coords * sizeof (double)) * line->Points)); /* # points + [x,y] for each vertex */ + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + rng = polyg->Exterior; + sz += (16 + ((n_coords * sizeof (double)) * rng->Points)); /* # rings + # points + [x.y] array - exterior ring */ + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + sz += (4 + ((n_coords * sizeof (double)) * rng->Points)); /* # points + [x,y] array - interior ring */ + } + polyg = polyg->Next; + } + *size = sz; + ptr = malloc (sz); + *result = ptr; +/* and finally we build the FGF */ + if (type == GAIA_MULTIPOINT || type == GAIA_MULTILINESTRING + || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) + { + gaiaExport32 (ptr, type, GAIA_LITTLE_ENDIAN, endian_arch); /* Geometry Type */ + ptr += 4; + gaiaExport32 (ptr, entities, GAIA_LITTLE_ENDIAN, endian_arch); /* it's a collection; # entities */ + ptr += 4; + } + point = geom->FirstPoint; + while (point) + { + gaiaExport32 (ptr, GAIA_POINT, GAIA_LITTLE_ENDIAN, endian_arch); /* the CLASS TYPE for this element */ + ptr += 4; + gaiaExport32 (ptr, coord_dims, GAIA_LITTLE_ENDIAN, endian_arch); /* the CoordDimension */ + ptr += 4; + gaiaExport64 (ptr, point->X, GAIA_LITTLE_ENDIAN, endian_arch); /* X */ + ptr += 8; + gaiaExport64 (ptr, point->Y, GAIA_LITTLE_ENDIAN, endian_arch); /* Y */ + ptr += 8; + if (n_coords > 2) + { + /* the third coordinate [Z or M] */ + if (coord_dims == GAIA_XY_Z || coord_dims == GAIA_XY_Z_M) + gaiaExport64 (ptr, point->Z, GAIA_LITTLE_ENDIAN, + endian_arch); + else + gaiaExport64 (ptr, point->M, GAIA_LITTLE_ENDIAN, + endian_arch); + ptr += 8; + } + if (n_coords > 3) + { + /* the fourth coordinate [M] */ + gaiaExport64 (ptr, point->M, GAIA_LITTLE_ENDIAN, endian_arch); + ptr += 8; + } + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + gaiaExport32 (ptr, GAIA_LINESTRING, GAIA_LITTLE_ENDIAN, endian_arch); /* the CLASS TYPE for this element */ + ptr += 4; + gaiaExport32 (ptr, coord_dims, GAIA_LITTLE_ENDIAN, endian_arch); /* the CoordDimension */ + ptr += 4; + gaiaExport32 (ptr, line->Points, GAIA_LITTLE_ENDIAN, endian_arch); /* # points */ + ptr += 4; + for (iv = 0; iv < line->Points; iv++) + { + z = 0.0; + m = 0.0; + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + gaiaExport64 (ptr, x, GAIA_LITTLE_ENDIAN, endian_arch); /* X */ + ptr += 8; + gaiaExport64 (ptr, y, GAIA_LITTLE_ENDIAN, endian_arch); /* Y */ + ptr += 8; + if (n_coords > 2) + { + /* the third coordinate [Z or M] */ + if (coord_dims == GAIA_XY_Z || coord_dims == GAIA_XY_Z_M) + gaiaExport64 (ptr, z, GAIA_LITTLE_ENDIAN, + endian_arch); + else + gaiaExport64 (ptr, m, GAIA_LITTLE_ENDIAN, + endian_arch); + ptr += 8; + } + if (n_coords > 3) + { + /* the fourth coordinate [M]; */ + gaiaExport64 (ptr, m, GAIA_LITTLE_ENDIAN, endian_arch); + ptr += 8; + } + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + gaiaExport32 (ptr, GAIA_POLYGON, GAIA_LITTLE_ENDIAN, endian_arch); /* the CLASS TYPE for this element */ + ptr += 4; + gaiaExport32 (ptr, coord_dims, GAIA_LITTLE_ENDIAN, endian_arch); /* the CoordDimension */ + ptr += 4; + gaiaExport32 (ptr, polyg->NumInteriors + 1, GAIA_LITTLE_ENDIAN, endian_arch); /* # rings */ + ptr += 4; + rng = polyg->Exterior; + gaiaExport32 (ptr, rng->Points, GAIA_LITTLE_ENDIAN, endian_arch); /* # points - exterior ring */ + ptr += 4; + for (iv = 0; iv < rng->Points; iv++) + { + z = 0.0; + m = 0.0; + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + gaiaExport64 (ptr, x, GAIA_LITTLE_ENDIAN, endian_arch); /* X - exterior ring */ + ptr += 8; + gaiaExport64 (ptr, y, GAIA_LITTLE_ENDIAN, endian_arch); /* Y - exterior ring */ + ptr += 8; + if (n_coords > 2) + { + /* the third coordinate [Z or M] */ + if (coord_dims == GAIA_XY_Z || coord_dims == GAIA_XY_Z_M) + gaiaExport64 (ptr, z, GAIA_LITTLE_ENDIAN, + endian_arch); + else + gaiaExport64 (ptr, m, GAIA_LITTLE_ENDIAN, + endian_arch); + ptr += 8; + } + if (n_coords > 3) + { + /* the fourth coordinate [M] */ + gaiaExport64 (ptr, m, GAIA_LITTLE_ENDIAN, endian_arch); + ptr += 8; + } + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ + ptr += 4; + for (iv = 0; iv < rng->Points; iv++) + { + z = 0.0; + m = 0.0; + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + gaiaExport64 (ptr, x, GAIA_LITTLE_ENDIAN, endian_arch); /* X - interior ring */ + ptr += 8; + gaiaExport64 (ptr, y, GAIA_LITTLE_ENDIAN, endian_arch); /* Y - interior ring */ + ptr += 8; + if (n_coords > 2) + { + /* the third coordinate [Z or M]; defaulting to ZERO */ + if (coord_dims == GAIA_XY_Z + || coord_dims == GAIA_XY_Z_M) + gaiaExport64 (ptr, z, GAIA_LITTLE_ENDIAN, + endian_arch); + else + gaiaExport64 (ptr, m, GAIA_LITTLE_ENDIAN, + endian_arch); + ptr += 8; + } + if (n_coords > 3) + { + /* the fourth coordinate [M] */ + gaiaExport64 (ptr, m, GAIA_LITTLE_ENDIAN, + endian_arch); + ptr += 8; + } + } + } + polyg = polyg->Next; + } +} diff --git a/src/spatialite/src/gaiageo/gg_wkt.c b/src/spatialite/src/gaiageo/gg_wkt.c new file mode 100644 index 0000000..0b4b891 --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_wkt.c @@ -0,0 +1,4174 @@ +/* + + gg_wkt.c -- Gaia common support for WKT encoded geometries + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Klaus Foerster klaus.foerster@svg.cc + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include + +#include + +static void +gaiaOutClean (char *buffer) +{ +/* cleans unneeded trailing zeros */ + int i; + for (i = strlen (buffer) - 1; i > 0; i--) + { + if (buffer[i] == '0') + buffer[i] = '\0'; + else + break; + } + if (buffer[i] == '.') + buffer[i] = '\0'; + if (strcmp (buffer, "-0") == 0) + { + /* avoiding to return embarassing NEGATIVE ZEROes */ + strcpy (buffer, "0"); + } + + if (strcmp (buffer, "-1.#QNAN") == 0 || strcmp (buffer, "NaN") == 0 + || strcmp (buffer, "1.#QNAN") == 0 + || strcmp (buffer, "-1.#IND") == 0 || strcmp (buffer, "1.#IND") == 0) + { + /* on Windows a NaN could be represented in "odd" ways */ + /* this is intended to restore a consistent behaviour */ + strcpy (buffer, "nan"); + } +} + +GAIAGEO_DECLARE void +gaiaOutBufferInitialize (gaiaOutBufferPtr buf) +{ +/* initializing a dynamically growing output buffer */ + buf->Buffer = NULL; + buf->WriteOffset = 0; + buf->BufferSize = 0; + buf->Error = 0; +} + +GAIAGEO_DECLARE void +gaiaOutBufferReset (gaiaOutBufferPtr buf) +{ +/* cleaning a dynamically growing output buffer */ + if (buf->Buffer) + free (buf->Buffer); + buf->Buffer = NULL; + buf->WriteOffset = 0; + buf->BufferSize = 0; + buf->Error = 0; +} + +GAIAGEO_DECLARE void +gaiaAppendToOutBuffer (gaiaOutBufferPtr buf, const char *text) +{ +/* appending a text string */ + int len = strlen (text); + int free_size = buf->BufferSize - buf->WriteOffset; + if ((len + 1) > free_size) + { + /* we must allocate a bigger buffer */ + int new_size; + char *new_buf; + if (buf->BufferSize == 0) + new_size = (len + 1) + 1024; + else if (buf->BufferSize <= 4196) + new_size = buf->BufferSize + (len + 1) + 4196; + else if (buf->BufferSize <= 65536) + new_size = buf->BufferSize + (len + 1) + 65536; + else + new_size = buf->BufferSize + (len + 1) + (1024 * 1024); + new_buf = malloc (new_size); + if (!new_buf) + { + buf->Error = 1; + return; + } + memcpy (new_buf, buf->Buffer, buf->WriteOffset); + if (buf->Buffer) + free (buf->Buffer); + buf->Buffer = new_buf; + buf->BufferSize = new_size; + } + strcpy (buf->Buffer + buf->WriteOffset, text); + buf->WriteOffset += len; +} + +static void +gaiaOutPointStrict (gaiaOutBufferPtr out_buf, gaiaPointPtr point, int precision) +{ +/* formats a WKT POINT [Strict 2D] */ + char *buf_x; + char *buf_y; + char *buf; + buf_x = sqlite3_mprintf ("%.*f", precision, point->X); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, point->Y); + gaiaOutClean (buf_y); + buf = sqlite3_mprintf ("%s %s", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); +} + +static void +gaiaOutPoint (gaiaOutBufferPtr out_buf, gaiaPointPtr point) +{ +/* formats a WKT POINT */ + char *buf_x; + char *buf_y; + char *buf; + buf_x = sqlite3_mprintf ("%1.6f", point->X); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", point->Y); + gaiaOutClean (buf_y); + buf = sqlite3_mprintf ("%s %s", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); +} + +GAIAGEO_DECLARE void +gaiaOutPointZ (gaiaOutBufferPtr out_buf, gaiaPointPtr point) +{ +/* formats a WKT POINTZ */ + char *buf_x; + char *buf_y; + char *buf_z; + char *buf; + buf_x = sqlite3_mprintf ("%1.6f", point->X); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", point->Y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.6f", point->Z); + gaiaOutClean (buf_z); + buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); +} + +static void +gaiaOutPointM (gaiaOutBufferPtr out_buf, gaiaPointPtr point) +{ +/* formats a WKT POINTM */ + char *buf_x; + char *buf_y; + char *buf_m; + char *buf; + buf_x = sqlite3_mprintf ("%1.6f", point->X); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", point->Y); + gaiaOutClean (buf_y); + buf_m = sqlite3_mprintf ("%1.6f", point->M); + gaiaOutClean (buf_m); + buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); +} + +static void +gaiaOutPointZM (gaiaOutBufferPtr out_buf, gaiaPointPtr point) +{ +/* formats a WKT POINTZM */ + char *buf_x; + char *buf_y; + char *buf_z; + char *buf_m; + char *buf; + buf_x = sqlite3_mprintf ("%1.6f", point->X); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", point->Y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.6f", point->Z); + gaiaOutClean (buf_z); + buf_m = sqlite3_mprintf ("%1.6f", point->M); + gaiaOutClean (buf_m); + buf = sqlite3_mprintf ("%s %s %s %s", buf_x, buf_y, buf_z, buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); +} + +static void +gaiaOutEwktPoint (gaiaOutBufferPtr out_buf, gaiaPointPtr point) +{ +/* formats an EWKT POINT */ + char *buf_x; + char *buf_y; + char *buf; + buf_x = sqlite3_mprintf ("%1.15f", point->X); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", point->Y); + gaiaOutClean (buf_y); + buf = sqlite3_mprintf ("%s %s", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); +} + +GAIAGEO_DECLARE void +gaiaOutEwktPointZ (gaiaOutBufferPtr out_buf, gaiaPointPtr point) +{ +/* formats an EWKT POINTZ */ + char *buf_x; + char *buf_y; + char *buf_z; + char *buf; + buf_x = sqlite3_mprintf ("%1.15f", point->X); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", point->Y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.15f", point->Z); + gaiaOutClean (buf_z); + buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); +} + +static void +gaiaOutEwktPointM (gaiaOutBufferPtr out_buf, gaiaPointPtr point) +{ +/* formats an EWKT POINTM */ + char *buf_x; + char *buf_y; + char *buf_m; + char *buf; + buf_x = sqlite3_mprintf ("%1.15f", point->X); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", point->Y); + gaiaOutClean (buf_y); + buf_m = sqlite3_mprintf ("%1.15f", point->M); + gaiaOutClean (buf_m); + buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); +} + +static void +gaiaOutEwktPointZM (gaiaOutBufferPtr out_buf, gaiaPointPtr point) +{ +/* formats an EWKT POINTZM */ + char *buf_x; + char *buf_y; + char *buf_z; + char *buf_m; + char *buf; + buf_x = sqlite3_mprintf ("%1.15f", point->X); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", point->Y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.15f", point->Z); + gaiaOutClean (buf_z); + buf_m = sqlite3_mprintf ("%1.15f", point->M); + gaiaOutClean (buf_m); + buf = sqlite3_mprintf ("%s %s %s %s", buf_x, buf_y, buf_z, buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); +} + +static void +gaiaOutLinestringStrict (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line, + int precision) +{ +/* formats a WKT LINESTRING [Strict 2D] */ + char *buf_x; + char *buf_y; + char *buf; + double x; + double y; + double z; + double m; + int iv; + for (iv = 0; iv < line->Points; iv++) + { + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + if (iv > 0) + buf = sqlite3_mprintf (",%s %s", buf_x, buf_y); + else + buf = sqlite3_mprintf ("%s %s", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } +} + +static void +gaiaOutLinestring (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) +{ +/* formats a WKT LINESTRING */ + char *buf_x; + char *buf_y; + char *buf; + double x; + double y; + int iv; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPoint (line->Coords, iv, &x, &y); + buf_x = sqlite3_mprintf ("%1.6f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", y); + gaiaOutClean (buf_y); + if (iv > 0) + buf = sqlite3_mprintf (", %s %s", buf_x, buf_y); + else + buf = sqlite3_mprintf ("%s %s", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } +} + +GAIAGEO_DECLARE void +gaiaOutLinestringZ (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) +{ +/* formats a WKT LINESTRINGZ */ + char *buf_x; + char *buf_y; + char *buf_z; + char *buf; + double x; + double y; + double z; + int iv; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + buf_x = sqlite3_mprintf ("%1.6f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.6f", z); + gaiaOutClean (buf_z); + if (iv > 0) + buf = sqlite3_mprintf (", %s %s %s", buf_x, buf_y, buf_z); + else + buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } +} + +static void +gaiaOutLinestringM (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) +{ +/* formats a WKT LINESTRINGM */ + char *buf_x; + char *buf_y; + char *buf_m; + char *buf; + double x; + double y; + double m; + int iv; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + buf_x = sqlite3_mprintf ("%1.6f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", y); + gaiaOutClean (buf_y); + buf_m = sqlite3_mprintf ("%1.6f", m); + gaiaOutClean (buf_m); + if (iv > 0) + buf = sqlite3_mprintf (", %s %s %s", buf_x, buf_y, buf_m); + else + buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } +} + +static void +gaiaOutLinestringZM (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) +{ +/* formats a WKT LINESTRINGZM */ + char *buf_x; + char *buf_y; + char *buf_z; + char *buf_m; + char *buf; + double x; + double y; + double z; + double m; + int iv; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + buf_x = sqlite3_mprintf ("%1.6f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.6f", z); + gaiaOutClean (buf_z); + buf_m = sqlite3_mprintf ("%1.6f", m); + gaiaOutClean (buf_m); + if (iv > 0) + buf = + sqlite3_mprintf (", %s %s %s %s", buf_x, buf_y, buf_z, buf_m); + else + buf = sqlite3_mprintf ("%s %s %s %s", buf_x, buf_y, buf_z, buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } +} + +static void +gaiaOutEwktLinestring (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) +{ +/* formats an EWKT LINESTRING */ + char *buf_x; + char *buf_y; + char *buf; + double x; + double y; + int iv; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPoint (line->Coords, iv, &x, &y); + buf_x = sqlite3_mprintf ("%1.15f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", y); + gaiaOutClean (buf_y); + if (iv > 0) + buf = sqlite3_mprintf (",%s %s", buf_x, buf_y); + else + buf = sqlite3_mprintf ("%s %s", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } +} + +GAIAGEO_DECLARE void +gaiaOutEwktLinestringZ (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) +{ +/* formats an EWKT LINESTRINGZ */ + char *buf_x; + char *buf_y; + char *buf_z; + char *buf; + double x; + double y; + double z; + int iv; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + buf_x = sqlite3_mprintf ("%1.15f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.15f", z); + gaiaOutClean (buf_z); + if (iv > 0) + buf = sqlite3_mprintf (",%s %s %s", buf_x, buf_y, buf_z); + else + buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } +} + +static void +gaiaOutEwktLinestringM (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) +{ +/* formats an EWKT LINESTRINGM */ + char *buf_x; + char *buf_y; + char *buf_m; + char *buf; + double x; + double y; + double m; + int iv; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + buf_x = sqlite3_mprintf ("%1.15f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", y); + gaiaOutClean (buf_y); + buf_m = sqlite3_mprintf ("%1.15f", m); + gaiaOutClean (buf_m); + if (iv > 0) + buf = sqlite3_mprintf (",%s %s %s", buf_x, buf_y, buf_m); + else + buf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } +} + +static void +gaiaOutEwktLinestringZM (gaiaOutBufferPtr out_buf, gaiaLinestringPtr line) +{ +/* formats an EWKT LINESTRINGZM */ + char *buf_x; + char *buf_y; + char *buf_z; + char *buf_m; + char *buf; + double x; + double y; + double z; + double m; + int iv; + for (iv = 0; iv < line->Points; iv++) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + buf_x = sqlite3_mprintf ("%1.15f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.15f", z); + gaiaOutClean (buf_z); + buf_m = sqlite3_mprintf ("%1.15f", m); + gaiaOutClean (buf_m); + if (iv > 0) + buf = + sqlite3_mprintf (",%s %s %s %s", buf_x, buf_y, buf_z, buf_m); + else + buf = sqlite3_mprintf ("%s %s %s %s", buf_x, buf_y, buf_z, buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } +} + +static void +gaiaOutPolygonStrict (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg, + int precision) +{ +/* formats a WKT POLYGON [Strict 2D] */ + char *buf_x; + char *buf_y; + char *buf; + int ib; + int iv; + double x; + double y; + double z; + double m; + gaiaRingPtr ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + if (iv == 0) + buf = sqlite3_mprintf ("(%s %s", buf_x, buf_y); + else if (iv == (ring->Points - 1)) + buf = sqlite3_mprintf (",%s %s)", buf_x, buf_y); + else + buf = sqlite3_mprintf (",%s %s", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + if (iv == 0) + buf = sqlite3_mprintf (",(%s %s", buf_x, buf_y); + else if (iv == (ring->Points - 1)) + buf = sqlite3_mprintf (",%s %s)", buf_x, buf_y); + else + buf = sqlite3_mprintf (",%s %s", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + } +} + +static void +gaiaOutPolygon (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) +{ +/* formats a WKT POLYGON */ + char *buf_x; + char *buf_y; + char *buf; + int ib; + int iv; + double x; + double y; + gaiaRingPtr ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + buf_x = sqlite3_mprintf ("%1.6f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", y); + gaiaOutClean (buf_y); + if (iv == 0) + buf = sqlite3_mprintf ("(%s %s", buf_x, buf_y); + else if (iv == (ring->Points - 1)) + buf = sqlite3_mprintf (", %s %s)", buf_x, buf_y); + else + buf = sqlite3_mprintf (", %s %s", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + buf_x = sqlite3_mprintf ("%1.6f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", y); + gaiaOutClean (buf_y); + if (iv == 0) + buf = sqlite3_mprintf (", (%s %s", buf_x, buf_y); + else if (iv == (ring->Points - 1)) + buf = sqlite3_mprintf (", %s %s)", buf_x, buf_y); + else + buf = sqlite3_mprintf (", %s %s", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + } +} + +GAIAGEO_DECLARE void +gaiaOutPolygonZ (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) +{ +/* formats a WKT POLYGONZ */ + char *buf_x; + char *buf_y; + char *buf_z; + char *buf; + int ib; + int iv; + double x; + double y; + double z; + gaiaRingPtr ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + buf_x = sqlite3_mprintf ("%1.6f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.6f", z); + gaiaOutClean (buf_z); + if (iv == 0) + buf = sqlite3_mprintf ("(%s %s %s", buf_x, buf_y, buf_z); + else if (iv == (ring->Points - 1)) + buf = sqlite3_mprintf (", %s %s %s)", buf_x, buf_y, buf_z); + else + buf = sqlite3_mprintf (", %s %s %s", buf_x, buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + buf_x = sqlite3_mprintf ("%1.6f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.6f", z); + gaiaOutClean (buf_z); + if (iv == 0) + buf = sqlite3_mprintf (", (%s %s %s", buf_x, buf_y, buf_z); + else if (iv == (ring->Points - 1)) + buf = sqlite3_mprintf (", %s %s %s)", buf_x, buf_y, buf_z); + else + buf = sqlite3_mprintf (", %s %s %s", buf_x, buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + } +} + +static void +gaiaOutPolygonM (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) +{ +/* formats a WKT POLYGONM */ + char *buf_x; + char *buf_y; + char *buf_m; + char *buf; + int ib; + int iv; + double x; + double y; + double m; + gaiaRingPtr ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + buf_x = sqlite3_mprintf ("%1.6f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", y); + gaiaOutClean (buf_y); + buf_m = sqlite3_mprintf ("%1.6f", m); + gaiaOutClean (buf_m); + if (iv == 0) + buf = sqlite3_mprintf ("(%s %s %s", buf_x, buf_y, buf_m); + else if (iv == (ring->Points - 1)) + buf = sqlite3_mprintf (", %s %s %s)", buf_x, buf_y, buf_m); + else + buf = sqlite3_mprintf (", %s %s %s", buf_x, buf_y, buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + buf_x = sqlite3_mprintf ("%1.6f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", y); + gaiaOutClean (buf_y); + buf_m = sqlite3_mprintf ("%1.6f", m); + gaiaOutClean (buf_m); + if (iv == 0) + buf = sqlite3_mprintf (", (%s %s %s", buf_x, buf_y, buf_m); + else if (iv == (ring->Points - 1)) + buf = sqlite3_mprintf (", %s %s %s)", buf_x, buf_y, buf_m); + else + buf = sqlite3_mprintf (", %s %s %s", buf_x, buf_y, buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + } +} + +static void +gaiaOutPolygonZM (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) +{ +/* formats a WKT POLYGONZM */ + char *buf_x; + char *buf_y; + char *buf_z; + char *buf_m; + char *buf; + int ib; + int iv; + double x; + double y; + double z; + double m; + gaiaRingPtr ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + buf_x = sqlite3_mprintf ("%1.6f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.6f", z); + gaiaOutClean (buf_z); + buf_m = sqlite3_mprintf ("%1.6f", m); + gaiaOutClean (buf_m); + if (iv == 0) + buf = + sqlite3_mprintf ("(%s %s %s %s", buf_x, buf_y, buf_z, buf_m); + else if (iv == (ring->Points - 1)) + buf = + sqlite3_mprintf (", %s %s %s %s)", buf_x, buf_y, buf_z, + buf_m); + else + buf = + sqlite3_mprintf (", %s %s %s %s", buf_x, buf_y, buf_z, buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + buf_x = sqlite3_mprintf ("%1.6f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.6f", y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.6f", z); + gaiaOutClean (buf_z); + buf_m = sqlite3_mprintf ("%1.6f", m); + gaiaOutClean (buf_m); + if (iv == 0) + buf = + sqlite3_mprintf (", (%s %s %s %s", buf_x, buf_y, buf_z, + buf_m); + else if (iv == (ring->Points - 1)) + buf = + sqlite3_mprintf (", %s %s %s %s)", buf_x, buf_y, buf_z, + buf_m); + else + buf = + sqlite3_mprintf (", %s %s %s %s", buf_x, buf_y, buf_z, + buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + } +} + +static void +gaiaOutEwktPolygon (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) +{ +/* formats an EWKT POLYGON */ + char *buf_x; + char *buf_y; + char *buf; + int ib; + int iv; + double x; + double y; + gaiaRingPtr ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + buf_x = sqlite3_mprintf ("%1.15f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", y); + gaiaOutClean (buf_y); + if (iv == 0) + buf = sqlite3_mprintf ("(%s %s", buf_x, buf_y); + else if (iv == (ring->Points - 1)) + buf = sqlite3_mprintf (",%s %s)", buf_x, buf_y); + else + buf = sqlite3_mprintf (",%s %s", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + buf_x = sqlite3_mprintf ("%1.15f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", y); + gaiaOutClean (buf_y); + if (iv == 0) + buf = sqlite3_mprintf (",(%s %s", buf_x, buf_y); + else if (iv == (ring->Points - 1)) + buf = sqlite3_mprintf (",%s %s)", buf_x, buf_y); + else + buf = sqlite3_mprintf (",%s %s", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + } +} + +GAIAGEO_DECLARE void +gaiaOutEwktPolygonZ (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) +{ +/* formats an EWKT POLYGONZ */ + char *buf_x; + char *buf_y; + char *buf_z; + char *buf; + int ib; + int iv; + double x; + double y; + double z; + gaiaRingPtr ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + buf_x = sqlite3_mprintf ("%1.15f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.15f", z); + gaiaOutClean (buf_z); + if (iv == 0) + buf = sqlite3_mprintf ("(%s %s %s", buf_x, buf_y, buf_z); + else if (iv == (ring->Points - 1)) + buf = sqlite3_mprintf (",%s %s %s)", buf_x, buf_y, buf_z); + else + buf = sqlite3_mprintf (",%s %s %s", buf_x, buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + buf_x = sqlite3_mprintf ("%1.15f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.15f", z); + gaiaOutClean (buf_z); + if (iv == 0) + buf = sqlite3_mprintf (",(%s %s %s", buf_x, buf_y, buf_z); + else if (iv == (ring->Points - 1)) + buf = sqlite3_mprintf (",%s %s %s)", buf_x, buf_y, buf_z); + else + buf = sqlite3_mprintf (",%s %s %s", buf_x, buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + } +} + +static void +gaiaOutEwktPolygonM (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) +{ +/* formats an EWKT POLYGONM */ + char *buf_x; + char *buf_y; + char *buf_m; + char *buf; + int ib; + int iv; + double x; + double y; + double m; + gaiaRingPtr ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + buf_x = sqlite3_mprintf ("%1.15f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", y); + gaiaOutClean (buf_y); + buf_m = sqlite3_mprintf ("%1.15f", m); + gaiaOutClean (buf_m); + if (iv == 0) + buf = sqlite3_mprintf ("(%s %s %s", buf_x, buf_y, buf_m); + else if (iv == (ring->Points - 1)) + buf = sqlite3_mprintf (",%s %s %s)", buf_x, buf_y, buf_m); + else + buf = sqlite3_mprintf (",%s %s %s", buf_x, buf_y, buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + buf_x = sqlite3_mprintf ("%1.15f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", y); + gaiaOutClean (buf_y); + buf_m = sqlite3_mprintf ("%1.15f", m); + gaiaOutClean (buf_m); + if (iv == 0) + buf = sqlite3_mprintf (",(%s %s %s", buf_x, buf_y, buf_m); + else if (iv == (ring->Points - 1)) + buf = sqlite3_mprintf (",%s %s %s)", buf_x, buf_y, buf_m); + else + buf = sqlite3_mprintf (",%s %s %s", buf_x, buf_y, buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + } +} + +static void +gaiaOutEwktPolygonZM (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polyg) +{ +/* formats an EWKT POLYGONZM */ + char *buf_x; + char *buf_y; + char *buf_z; + char *buf_m; + char *buf; + int ib; + int iv; + double x; + double y; + double z; + double m; + gaiaRingPtr ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + buf_x = sqlite3_mprintf ("%1.15f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.15f", z); + gaiaOutClean (buf_z); + buf_m = sqlite3_mprintf ("%1.15f", m); + gaiaOutClean (buf_m); + if (iv == 0) + buf = + sqlite3_mprintf ("(%s %s %s %s", buf_x, buf_y, buf_z, buf_m); + else if (iv == (ring->Points - 1)) + buf = + sqlite3_mprintf (",%s %s %s %s)", buf_x, buf_y, buf_z, buf_m); + else + buf = + sqlite3_mprintf (",%s %s %s %s", buf_x, buf_y, buf_z, buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + buf_x = sqlite3_mprintf ("%1.15f", x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%1.15f", y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%1.15f", z); + gaiaOutClean (buf_z); + buf_m = sqlite3_mprintf ("%1.15f", m); + gaiaOutClean (buf_m); + if (iv == 0) + buf = + sqlite3_mprintf (",(%s %s %s %s", buf_x, buf_y, buf_z, + buf_m); + else if (iv == (ring->Points - 1)) + buf = + sqlite3_mprintf (",%s %s %s %s)", buf_x, buf_y, buf_z, + buf_m); + else + buf = + sqlite3_mprintf (",%s %s %s %s", buf_x, buf_y, buf_z, + buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + sqlite3_free (buf_m); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + } +} + +GAIAGEO_DECLARE void +gaiaOutWkt (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom) +{ +/* prints the WKT representation of current geometry */ + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + if (!geom) + return; + point = geom->FirstPoint; + while (point) + { + /* counting how many POINTs are there */ + pts++; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* counting how many LINESTRINGs are there */ + lns++; + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* counting how many POLYGONs are there */ + pgs++; + polyg = polyg->Next; + } + if ((pts + lns + pgs) == 1 + && (geom->DeclaredType == GAIA_POINT + || geom->DeclaredType == GAIA_LINESTRING + || geom->DeclaredType == GAIA_POLYGON)) + { + /* we have only one elementary geometry */ + point = geom->FirstPoint; + while (point) + { + if (point->DimensionModel == GAIA_XY_Z) + { + /* processing POINTZ */ + gaiaAppendToOutBuffer (out_buf, "POINT Z("); + gaiaOutPointZ (out_buf, point); + } + else if (point->DimensionModel == GAIA_XY_M) + { + /* processing POINTM */ + gaiaAppendToOutBuffer (out_buf, "POINT M("); + gaiaOutPointM (out_buf, point); + } + else if (point->DimensionModel == GAIA_XY_Z_M) + { + /* processing POINTZM */ + gaiaAppendToOutBuffer (out_buf, "POINT ZM("); + gaiaOutPointZM (out_buf, point); + } + else + { + /* processing POINT */ + gaiaAppendToOutBuffer (out_buf, "POINT("); + gaiaOutPoint (out_buf, point); + } + gaiaAppendToOutBuffer (out_buf, ")"); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + if (line->DimensionModel == GAIA_XY_Z) + { + /* processing LINESTRINGZ */ + gaiaAppendToOutBuffer (out_buf, "LINESTRING Z("); + gaiaOutLinestringZ (out_buf, line); + } + else if (line->DimensionModel == GAIA_XY_M) + { + /* processing LINESTRINGM */ + gaiaAppendToOutBuffer (out_buf, "LINESTRING M("); + gaiaOutLinestringM (out_buf, line); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + /* processing LINESTRINGZM */ + gaiaAppendToOutBuffer (out_buf, "LINESTRING ZM("); + gaiaOutLinestringZM (out_buf, line); + } + else + { + /* processing LINESTRING */ + gaiaAppendToOutBuffer (out_buf, "LINESTRING("); + gaiaOutLinestring (out_buf, line); + } + gaiaAppendToOutBuffer (out_buf, ")"); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + if (polyg->DimensionModel == GAIA_XY_Z) + { + /* processing POLYGONZ */ + gaiaAppendToOutBuffer (out_buf, "POLYGON Z("); + gaiaOutPolygonZ (out_buf, polyg); + } + else if (polyg->DimensionModel == GAIA_XY_M) + { + /* processing POLYGONM */ + gaiaAppendToOutBuffer (out_buf, "POLYGON M("); + gaiaOutPolygonM (out_buf, polyg); + } + else if (polyg->DimensionModel == GAIA_XY_Z_M) + { + /* processing POLYGONZM */ + gaiaAppendToOutBuffer (out_buf, "POLYGON ZM("); + gaiaOutPolygonZM (out_buf, polyg); + } + else + { + /* processing POLYGON */ + gaiaAppendToOutBuffer (out_buf, "POLYGON("); + gaiaOutPolygon (out_buf, polyg); + } + gaiaAppendToOutBuffer (out_buf, ")"); + polyg = polyg->Next; + } + } + else + { + /* we have some kind of complex geometry */ + if (pts > 0 && lns == 0 && pgs == 0 + && geom->DeclaredType == GAIA_MULTIPOINT) + { + /* some kind of MULTIPOINT */ + if (geom->DimensionModel == GAIA_XY_Z) + gaiaAppendToOutBuffer (out_buf, "MULTIPOINT Z("); + else if (geom->DimensionModel == GAIA_XY_M) + gaiaAppendToOutBuffer (out_buf, "MULTIPOINT M("); + else if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAppendToOutBuffer (out_buf, "MULTIPOINT ZM("); + else + gaiaAppendToOutBuffer (out_buf, "MULTIPOINT("); + point = geom->FirstPoint; + while (point) + { + if (point->DimensionModel == GAIA_XY_Z) + { + if (point != geom->FirstPoint) + gaiaAppendToOutBuffer (out_buf, ", "); + gaiaOutPointZ (out_buf, point); + } + else if (point->DimensionModel == GAIA_XY_M) + { + if (point != geom->FirstPoint) + gaiaAppendToOutBuffer (out_buf, ", "); + gaiaOutPointM (out_buf, point); + } + else if (point->DimensionModel == GAIA_XY_Z_M) + { + if (point != geom->FirstPoint) + gaiaAppendToOutBuffer (out_buf, ", "); + gaiaOutPointZM (out_buf, point); + } + else + { + if (point != geom->FirstPoint) + gaiaAppendToOutBuffer (out_buf, ", "); + gaiaOutPoint (out_buf, point); + } + point = point->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (pts == 0 && lns > 0 && pgs == 0 + && geom->DeclaredType == GAIA_MULTILINESTRING) + { + /* some kind of MULTILINESTRING */ + if (geom->DimensionModel == GAIA_XY_Z) + gaiaAppendToOutBuffer (out_buf, "MULTILINESTRING Z("); + else if (geom->DimensionModel == GAIA_XY_M) + gaiaAppendToOutBuffer (out_buf, "MULTILINESTRING M("); + else if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAppendToOutBuffer (out_buf, "MULTILINESTRING ZM("); + else + gaiaAppendToOutBuffer (out_buf, "MULTILINESTRING("); + line = geom->FirstLinestring; + while (line) + { + if (line != geom->FirstLinestring) + gaiaAppendToOutBuffer (out_buf, ", ("); + else + gaiaAppendToOutBuffer (out_buf, "("); + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaOutLinestringZ (out_buf, line); + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaOutLinestringM (out_buf, line); + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaOutLinestringZM (out_buf, line); + gaiaAppendToOutBuffer (out_buf, ")"); + } + else + { + gaiaOutLinestring (out_buf, line); + gaiaAppendToOutBuffer (out_buf, ")"); + } + line = line->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (pts == 0 && lns == 0 && pgs > 0 + && geom->DeclaredType == GAIA_MULTIPOLYGON) + { + /* some kind of MULTIPOLYGON */ + if (geom->DimensionModel == GAIA_XY_Z) + gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGON Z("); + else if (geom->DimensionModel == GAIA_XY_M) + gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGON M("); + else if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGON ZM("); + else + gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGON("); + polyg = geom->FirstPolygon; + while (polyg) + { + if (polyg != geom->FirstPolygon) + gaiaAppendToOutBuffer (out_buf, ", ("); + else + gaiaAppendToOutBuffer (out_buf, "("); + if (polyg->DimensionModel == GAIA_XY_Z) + { + gaiaOutPolygonZ (out_buf, polyg); + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (polyg->DimensionModel == GAIA_XY_M) + { + gaiaOutPolygonM (out_buf, polyg); + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (polyg->DimensionModel == GAIA_XY_Z_M) + { + gaiaOutPolygonZM (out_buf, polyg); + gaiaAppendToOutBuffer (out_buf, ")"); + } + else + { + gaiaOutPolygon (out_buf, polyg); + gaiaAppendToOutBuffer (out_buf, ")"); + } + polyg = polyg->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + else + { + /* some kind of GEOMETRYCOLLECTION */ + int ie = 0; + if (geom->DimensionModel == GAIA_XY_Z) + gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTION Z("); + else if (geom->DimensionModel == GAIA_XY_M) + gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTION M("); + else if (geom->DimensionModel == GAIA_XY_Z_M) + gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTION ZM("); + else + gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTION("); + point = geom->FirstPoint; + while (point) + { + /* processing POINTs */ + if (ie > 0) + gaiaAppendToOutBuffer (out_buf, ", "); + ie++; + if (point->DimensionModel == GAIA_XY_Z) + { + gaiaAppendToOutBuffer (out_buf, "POINT Z("); + gaiaOutPointZ (out_buf, point); + } + else if (point->DimensionModel == GAIA_XY_M) + { + gaiaAppendToOutBuffer (out_buf, "POINT M("); + gaiaOutPointM (out_buf, point); + } + else if (point->DimensionModel == GAIA_XY_Z_M) + { + gaiaAppendToOutBuffer (out_buf, "POINT ZM("); + gaiaOutPointZM (out_buf, point); + } + else + { + gaiaAppendToOutBuffer (out_buf, "POINT("); + gaiaOutPoint (out_buf, point); + } + gaiaAppendToOutBuffer (out_buf, ")"); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* processing LINESTRINGs */ + if (ie > 0) + gaiaAppendToOutBuffer (out_buf, ", "); + ie++; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaAppendToOutBuffer (out_buf, "LINESTRING Z("); + gaiaOutLinestringZ (out_buf, line); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaAppendToOutBuffer (out_buf, "LINESTRING M("); + gaiaOutLinestringM (out_buf, line); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaAppendToOutBuffer (out_buf, "LINESTRING ZM("); + gaiaOutLinestringZM (out_buf, line); + } + else + { + gaiaAppendToOutBuffer (out_buf, "LINESTRING("); + gaiaOutLinestring (out_buf, line); + } + gaiaAppendToOutBuffer (out_buf, ")"); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* processing POLYGONs */ + if (ie > 0) + gaiaAppendToOutBuffer (out_buf, ", "); + ie++; + if (polyg->DimensionModel == GAIA_XY_Z) + { + gaiaAppendToOutBuffer (out_buf, "POLYGON Z("); + gaiaOutPolygonZ (out_buf, polyg); + } + else if (polyg->DimensionModel == GAIA_XY_M) + { + gaiaAppendToOutBuffer (out_buf, "POLYGON M("); + gaiaOutPolygonM (out_buf, polyg); + } + else if (polyg->DimensionModel == GAIA_XY_Z_M) + { + gaiaAppendToOutBuffer (out_buf, "POLYGON ZM("); + gaiaOutPolygonZM (out_buf, polyg); + } + else + { + gaiaAppendToOutBuffer (out_buf, "POLYGON("); + gaiaOutPolygon (out_buf, polyg); + } + gaiaAppendToOutBuffer (out_buf, ")"); + polyg = polyg->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + } +} + +GAIAGEO_DECLARE void +gaiaOutWktStrict (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom, int precision) +{ +/* + * prints the WKT representation of current geometry + * strictly conformant 2D WKT implementation +*/ + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + if (precision > 18) + precision = 18; + if (!geom) + return; + point = geom->FirstPoint; + while (point) + { + /* counting how many POINTs are there */ + pts++; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* counting how many LINESTRINGs are there */ + lns++; + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* counting how many POLYGONs are there */ + pgs++; + polyg = polyg->Next; + } + if ((pts + lns + pgs) == 1 + && (geom->DeclaredType == GAIA_POINT + || geom->DeclaredType == GAIA_LINESTRING + || geom->DeclaredType == GAIA_POLYGON)) + { + /* we have only one elementary geometry */ + point = geom->FirstPoint; + while (point) + { + /* processing POINT */ + gaiaAppendToOutBuffer (out_buf, "POINT("); + gaiaOutPointStrict (out_buf, point, precision); + gaiaAppendToOutBuffer (out_buf, ")"); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* processing LINESTRING */ + gaiaAppendToOutBuffer (out_buf, "LINESTRING("); + gaiaOutLinestringStrict (out_buf, line, precision); + gaiaAppendToOutBuffer (out_buf, ")"); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* processing POLYGON */ + gaiaAppendToOutBuffer (out_buf, "POLYGON("); + gaiaOutPolygonStrict (out_buf, polyg, precision); + gaiaAppendToOutBuffer (out_buf, ")"); + polyg = polyg->Next; + } + } + else + { + /* we have some kind of complex geometry */ + if (pts > 0 && lns == 0 && pgs == 0 + && geom->DeclaredType == GAIA_MULTIPOINT) + { + /* some kind of MULTIPOINT */ + gaiaAppendToOutBuffer (out_buf, "MULTIPOINT("); + point = geom->FirstPoint; + while (point) + { + if (point != geom->FirstPoint) + gaiaAppendToOutBuffer (out_buf, ","); + gaiaOutPointStrict (out_buf, point, precision); + point = point->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (pts == 0 && lns > 0 && pgs == 0 + && geom->DeclaredType == GAIA_MULTILINESTRING) + { + /* some kind of MULTILINESTRING */ + gaiaAppendToOutBuffer (out_buf, "MULTILINESTRING("); + line = geom->FirstLinestring; + while (line) + { + if (line != geom->FirstLinestring) + gaiaAppendToOutBuffer (out_buf, ",("); + else + gaiaAppendToOutBuffer (out_buf, "("); + gaiaOutLinestringStrict (out_buf, line, precision); + gaiaAppendToOutBuffer (out_buf, ")"); + line = line->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (pts == 0 && lns == 0 && pgs > 0 + && geom->DeclaredType == GAIA_MULTIPOLYGON) + { + /* some kind of MULTIPOLYGON */ + gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGON("); + polyg = geom->FirstPolygon; + while (polyg) + { + if (polyg != geom->FirstPolygon) + gaiaAppendToOutBuffer (out_buf, ",("); + else + gaiaAppendToOutBuffer (out_buf, "("); + gaiaOutPolygonStrict (out_buf, polyg, precision); + gaiaAppendToOutBuffer (out_buf, ")"); + polyg = polyg->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + else + { + /* some kind of GEOMETRYCOLLECTION */ + int ie = 0; + gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTION("); + point = geom->FirstPoint; + while (point) + { + /* processing POINTs */ + if (ie > 0) + gaiaAppendToOutBuffer (out_buf, ","); + ie++; + gaiaAppendToOutBuffer (out_buf, "POINT("); + gaiaOutPointStrict (out_buf, point, precision); + gaiaAppendToOutBuffer (out_buf, ")"); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* processing LINESTRINGs */ + if (ie > 0) + gaiaAppendToOutBuffer (out_buf, ","); + ie++; + gaiaAppendToOutBuffer (out_buf, "LINESTRING("); + gaiaOutLinestringStrict (out_buf, line, precision); + gaiaAppendToOutBuffer (out_buf, ")"); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* processing POLYGONs */ + if (ie > 0) + gaiaAppendToOutBuffer (out_buf, ","); + ie++; + gaiaAppendToOutBuffer (out_buf, "POLYGON("); + gaiaOutPolygonStrict (out_buf, polyg, precision); + gaiaAppendToOutBuffer (out_buf, ")"); + polyg = polyg->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + } +} + +GAIAGEO_DECLARE void +gaiaToEWKT (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom) +{ +/* prints the EWKT representation of current geometry */ + char buf[128]; + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + if (!geom) + return; + sprintf (buf, "SRID=%d;", geom->Srid); + gaiaAppendToOutBuffer (out_buf, buf); + point = geom->FirstPoint; + while (point) + { + /* counting how many POINTs are there */ + pts++; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* counting how many LINESTRINGs are there */ + lns++; + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* counting how many POLYGONs are there */ + pgs++; + polyg = polyg->Next; + } + if ((pts + lns + pgs) == 1 + && (geom->DeclaredType == GAIA_POINT + || geom->DeclaredType == GAIA_LINESTRING + || geom->DeclaredType == GAIA_POLYGON)) + { + /* we have only one elementary geometry */ + point = geom->FirstPoint; + while (point) + { + if (point->DimensionModel == GAIA_XY_Z) + { + /* processing POINTZ */ + gaiaAppendToOutBuffer (out_buf, "POINT("); + gaiaOutEwktPointZ (out_buf, point); + } + else if (point->DimensionModel == GAIA_XY_M) + { + /* processing POINTM */ + gaiaAppendToOutBuffer (out_buf, "POINTM("); + gaiaOutEwktPointM (out_buf, point); + } + else if (point->DimensionModel == GAIA_XY_Z_M) + { + /* processing POINTZM */ + gaiaAppendToOutBuffer (out_buf, "POINT("); + gaiaOutEwktPointZM (out_buf, point); + } + else + { + /* processing POINT */ + gaiaAppendToOutBuffer (out_buf, "POINT("); + gaiaOutEwktPoint (out_buf, point); + } + gaiaAppendToOutBuffer (out_buf, ")"); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + if (line->DimensionModel == GAIA_XY_Z) + { + /* processing LINESTRINGZ */ + gaiaAppendToOutBuffer (out_buf, "LINESTRING("); + gaiaOutEwktLinestringZ (out_buf, line); + } + else if (line->DimensionModel == GAIA_XY_M) + { + /* processing LINESTRINGM */ + gaiaAppendToOutBuffer (out_buf, "LINESTRINGM("); + gaiaOutEwktLinestringM (out_buf, line); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + /* processing LINESTRINGZM */ + gaiaAppendToOutBuffer (out_buf, "LINESTRING("); + gaiaOutEwktLinestringZM (out_buf, line); + } + else + { + /* processing LINESTRING */ + gaiaAppendToOutBuffer (out_buf, "LINESTRING("); + gaiaOutEwktLinestring (out_buf, line); + } + gaiaAppendToOutBuffer (out_buf, ")"); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + if (polyg->DimensionModel == GAIA_XY_Z) + { + /* processing POLYGONZ */ + gaiaAppendToOutBuffer (out_buf, "POLYGON("); + gaiaOutEwktPolygonZ (out_buf, polyg); + } + else if (polyg->DimensionModel == GAIA_XY_M) + { + /* processing POLYGONM */ + gaiaAppendToOutBuffer (out_buf, "POLYGONM("); + gaiaOutEwktPolygonM (out_buf, polyg); + } + else if (polyg->DimensionModel == GAIA_XY_Z_M) + { + /* processing POLYGONZM */ + gaiaAppendToOutBuffer (out_buf, "POLYGON("); + gaiaOutEwktPolygonZM (out_buf, polyg); + } + else + { + /* processing POLYGON */ + gaiaAppendToOutBuffer (out_buf, "POLYGON("); + gaiaOutEwktPolygon (out_buf, polyg); + } + gaiaAppendToOutBuffer (out_buf, ")"); + polyg = polyg->Next; + } + } + else + { + /* we have some kind of complex geometry */ + if (pts > 0 && lns == 0 && pgs == 0 + && geom->DeclaredType == GAIA_MULTIPOINT) + { + /* some kind of MULTIPOINT */ + if (geom->DimensionModel == GAIA_XY_M) + gaiaAppendToOutBuffer (out_buf, "MULTIPOINTM("); + else + gaiaAppendToOutBuffer (out_buf, "MULTIPOINT("); + point = geom->FirstPoint; + while (point) + { + if (point->DimensionModel == GAIA_XY_Z) + { + if (point != geom->FirstPoint) + gaiaAppendToOutBuffer (out_buf, ","); + gaiaOutEwktPointZ (out_buf, point); + } + else if (point->DimensionModel == GAIA_XY_M) + { + if (point != geom->FirstPoint) + gaiaAppendToOutBuffer (out_buf, ","); + gaiaOutEwktPointM (out_buf, point); + } + else if (point->DimensionModel == GAIA_XY_Z_M) + { + if (point != geom->FirstPoint) + gaiaAppendToOutBuffer (out_buf, ","); + gaiaOutEwktPointZM (out_buf, point); + } + else + { + if (point != geom->FirstPoint) + gaiaAppendToOutBuffer (out_buf, ","); + gaiaOutEwktPoint (out_buf, point); + } + point = point->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (pts == 0 && lns > 0 && pgs == 0 + && geom->DeclaredType == GAIA_MULTILINESTRING) + { + /* some kind of MULTILINESTRING */ + if (geom->DimensionModel == GAIA_XY_M) + gaiaAppendToOutBuffer (out_buf, "MULTILINESTRINGM("); + else + gaiaAppendToOutBuffer (out_buf, "MULTILINESTRING("); + line = geom->FirstLinestring; + while (line) + { + if (line != geom->FirstLinestring) + gaiaAppendToOutBuffer (out_buf, ",("); + else + gaiaAppendToOutBuffer (out_buf, "("); + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaOutEwktLinestringZ (out_buf, line); + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaOutEwktLinestringM (out_buf, line); + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaOutEwktLinestringZM (out_buf, line); + gaiaAppendToOutBuffer (out_buf, ")"); + } + else + { + gaiaOutEwktLinestring (out_buf, line); + gaiaAppendToOutBuffer (out_buf, ")"); + } + line = line->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (pts == 0 && lns == 0 && pgs > 0 + && geom->DeclaredType == GAIA_MULTIPOLYGON) + { + /* some kind of MULTIPOLYGON */ + if (geom->DimensionModel == GAIA_XY_M) + gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGONM("); + else + gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGON("); + polyg = geom->FirstPolygon; + while (polyg) + { + if (polyg != geom->FirstPolygon) + gaiaAppendToOutBuffer (out_buf, ",("); + else + gaiaAppendToOutBuffer (out_buf, "("); + if (polyg->DimensionModel == GAIA_XY_Z) + { + gaiaOutEwktPolygonZ (out_buf, polyg); + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (polyg->DimensionModel == GAIA_XY_M) + { + gaiaOutEwktPolygonM (out_buf, polyg); + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (polyg->DimensionModel == GAIA_XY_Z_M) + { + gaiaOutEwktPolygonZM (out_buf, polyg); + gaiaAppendToOutBuffer (out_buf, ")"); + } + else + { + gaiaOutEwktPolygon (out_buf, polyg); + gaiaAppendToOutBuffer (out_buf, ")"); + } + polyg = polyg->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + else + { + /* some kind of GEOMETRYCOLLECTION */ + int ie = 0; + if (geom->DimensionModel == GAIA_XY_M) + gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTIONM("); + else + gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTION("); + point = geom->FirstPoint; + while (point) + { + /* processing POINTs */ + if (ie > 0) + gaiaAppendToOutBuffer (out_buf, ","); + ie++; + if (point->DimensionModel == GAIA_XY_Z) + { + gaiaAppendToOutBuffer (out_buf, "POINT("); + gaiaOutEwktPointZ (out_buf, point); + } + else if (point->DimensionModel == GAIA_XY_M) + { + gaiaAppendToOutBuffer (out_buf, "POINTM("); + gaiaOutEwktPointM (out_buf, point); + } + else if (point->DimensionModel == GAIA_XY_Z_M) + { + gaiaAppendToOutBuffer (out_buf, "POINT("); + gaiaOutEwktPointZM (out_buf, point); + } + else + { + gaiaAppendToOutBuffer (out_buf, "POINT("); + gaiaOutEwktPoint (out_buf, point); + } + gaiaAppendToOutBuffer (out_buf, ")"); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* processing LINESTRINGs */ + if (ie > 0) + gaiaAppendToOutBuffer (out_buf, ","); + ie++; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaAppendToOutBuffer (out_buf, "LINESTRING("); + gaiaOutEwktLinestringZ (out_buf, line); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaAppendToOutBuffer (out_buf, "LINESTRINGM("); + gaiaOutEwktLinestringM (out_buf, line); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaAppendToOutBuffer (out_buf, "LINESTRING("); + gaiaOutEwktLinestringZM (out_buf, line); + } + else + { + gaiaAppendToOutBuffer (out_buf, "LINESTRING("); + gaiaOutEwktLinestring (out_buf, line); + } + gaiaAppendToOutBuffer (out_buf, ")"); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* processing POLYGONs */ + if (ie > 0) + gaiaAppendToOutBuffer (out_buf, ","); + ie++; + if (polyg->DimensionModel == GAIA_XY_Z) + { + gaiaAppendToOutBuffer (out_buf, "POLYGON("); + gaiaOutEwktPolygonZ (out_buf, polyg); + } + else if (polyg->DimensionModel == GAIA_XY_M) + { + gaiaAppendToOutBuffer (out_buf, "POLYGONM("); + gaiaOutEwktPolygonM (out_buf, polyg); + } + else if (polyg->DimensionModel == GAIA_XY_Z_M) + { + gaiaAppendToOutBuffer (out_buf, "POLYGON("); + gaiaOutEwktPolygonZM (out_buf, polyg); + } + else + { + gaiaAppendToOutBuffer (out_buf, "POLYGON("); + gaiaOutEwktPolygon (out_buf, polyg); + } + gaiaAppendToOutBuffer (out_buf, ")"); + polyg = polyg->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + } +} + +/* +/ +/ Gaia common support for SVG encoded geometries +/ +//////////////////////////////////////////////////////////// +/ +/ Author: Klaus Foerster klaus.foerster@svg.cc +/ version 0.9. 2008 September 21 + / + */ + +static void +SvgCoords (gaiaOutBufferPtr out_buf, gaiaPointPtr point, int precision) +{ +/* formats POINT as SVG-attributes x,y */ + char *buf_x; + char *buf_y; + char *buf; + buf_x = sqlite3_mprintf ("%.*f", precision, point->X); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, point->Y * -1); + gaiaOutClean (buf_y); + buf = sqlite3_mprintf ("x=\"%s\" y=\"%s\"", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); +} + +static void +SvgCircle (gaiaOutBufferPtr out_buf, gaiaPointPtr point, int precision) +{ +/* formats POINT as SVG-attributes cx,cy */ + char *buf_x; + char *buf_y; + char *buf; + buf_x = sqlite3_mprintf ("%.*f", precision, point->X); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, point->Y * -1); + gaiaOutClean (buf_y); + buf = sqlite3_mprintf ("cx=\"%s\" cy=\"%s\"", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); +} + +static void +SvgPathRelative (gaiaOutBufferPtr out_buf, int dims, int points, double *coords, + int precision, int closePath) +{ +/* formats LINESTRING as SVG-path d-attribute with relative coordinate moves */ + char *buf_x; + char *buf_y; + char *buf; + double x; + double y; + double z; + double m; + double lastX = 0.0; + double lastY = 0.0; + int iv; + for (iv = 0; iv < points; iv++) + { + if (dims == GAIA_XY_Z) + { + gaiaGetPointXYZ (coords, iv, &x, &y, &z); + } + else if (dims == GAIA_XY_M) + { + gaiaGetPointXYM (coords, iv, &x, &y, &m); + } + else if (dims == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (coords, iv, &x, &y); + } + buf_x = sqlite3_mprintf ("%.*f", precision, x - lastX); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, (y - lastY) * -1); + gaiaOutClean (buf_y); + if (iv == 0) + buf = sqlite3_mprintf ("M %s %s l ", buf_x, buf_y); + else + buf = sqlite3_mprintf ("%s %s ", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + lastX = x; + lastY = y; + if (iv == points - 1 && closePath == 1) + gaiaAppendToOutBuffer (out_buf, "z "); + else + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } +} + +static void +SvgPathAbsolute (gaiaOutBufferPtr out_buf, int dims, int points, double *coords, + int precision, int closePath) +{ +/* formats LINESTRING as SVG-path d-attribute with relative coordinate moves */ + char *buf_x; + char *buf_y; + char *buf; + double x; + double y; + double z; + double m; + int iv; + for (iv = 0; iv < points; iv++) + { + if (dims == GAIA_XY_Z) + { + gaiaGetPointXYZ (coords, iv, &x, &y, &z); + } + else if (dims == GAIA_XY_M) + { + gaiaGetPointXYM (coords, iv, &x, &y, &m); + } + else if (dims == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (coords, iv, &x, &y); + } + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y * -1); + gaiaOutClean (buf_y); + if (iv == 0) + buf = sqlite3_mprintf ("M %s %s L ", buf_x, buf_y); + else + buf = sqlite3_mprintf ("%s %s ", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + if (iv == points - 1 && closePath == 1) + gaiaAppendToOutBuffer (out_buf, "z "); + else + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } +} + +GAIAGEO_DECLARE void +gaiaOutSvg (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom, int relative, + int precision) +{ +/* prints the SVG representation of current geometry */ + int pts = 0; + int lns = 0; + int pgs = 0; + int ib; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + if (precision > 18) + precision = 18; + if (!geom) + return; + point = geom->FirstPoint; + while (point) + { + /* counting how many POINTs are there */ + pts++; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* counting how many LINESTRINGs are there */ + lns++; + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* counting how many POLYGONs are there */ + pgs++; + polyg = polyg->Next; + } + + if ((pts + lns + pgs) == 1) + { + /* we have only one elementary geometry */ + point = geom->FirstPoint; + while (point) + { + /* processing POINT */ + if (relative == 1) + SvgCoords (out_buf, point, precision); + else + SvgCircle (out_buf, point, precision); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* processing LINESTRING */ + if (relative == 1) + SvgPathRelative (out_buf, line->DimensionModel, + line->Points, line->Coords, precision, 0); + else + SvgPathAbsolute (out_buf, line->DimensionModel, + line->Points, line->Coords, precision, 0); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* process exterior and interior rings */ + ring = polyg->Exterior; + if (relative == 1) + { + SvgPathRelative (out_buf, ring->DimensionModel, + ring->Points, ring->Coords, precision, + 1); + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + SvgPathRelative (out_buf, ring->DimensionModel, + ring->Points, ring->Coords, + precision, 1); + } + } + else + { + SvgPathAbsolute (out_buf, ring->DimensionModel, + ring->Points, ring->Coords, precision, + 1); + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + SvgPathAbsolute (out_buf, ring->DimensionModel, + ring->Points, ring->Coords, + precision, 1); + } + } + polyg = polyg->Next; + } + } + else + { + /* we have some kind of complex geometry */ + if (pts > 0 && lns == 0 && pgs == 0) + { + /* this one is a MULTIPOINT */ + point = geom->FirstPoint; + while (point) + { + /* processing POINTs */ + if (point != geom->FirstPoint) + gaiaAppendToOutBuffer (out_buf, ","); + if (relative == 1) + SvgCoords (out_buf, point, precision); + else + SvgCircle (out_buf, point, precision); + point = point->Next; + } + } + else if (pts == 0 && lns > 0 && pgs == 0) + { + /* this one is a MULTILINESTRING */ + line = geom->FirstLinestring; + while (line) + { + /* processing LINESTRINGs */ + if (relative == 1) + SvgPathRelative (out_buf, line->DimensionModel, + line->Points, line->Coords, + precision, 0); + else + SvgPathAbsolute (out_buf, line->DimensionModel, + line->Points, line->Coords, + precision, 0); + line = line->Next; + } + } + else if (pts == 0 && lns == 0 && pgs > 0) + { + /* this one is a MULTIPOLYGON */ + polyg = geom->FirstPolygon; + while (polyg) + { + /* processing POLYGONs */ + ring = polyg->Exterior; + if (relative == 1) + { + SvgPathRelative (out_buf, ring->DimensionModel, + ring->Points, ring->Coords, + precision, 1); + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + SvgPathRelative (out_buf, + ring->DimensionModel, + ring->Points, ring->Coords, + precision, 1); + } + } + else + { + SvgPathAbsolute (out_buf, ring->DimensionModel, + ring->Points, ring->Coords, + precision, 1); + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + SvgPathAbsolute (out_buf, + ring->DimensionModel, + ring->Points, ring->Coords, + precision, 1); + } + } + polyg = polyg->Next; + } + } + else + { + /* this one is a GEOMETRYCOLLECTION */ + int ie = 0; + point = geom->FirstPoint; + while (point) + { + /* processing POINTs */ + if (ie > 0) + { + gaiaAppendToOutBuffer (out_buf, ";"); + } + ie++; + if (relative == 1) + SvgCoords (out_buf, point, precision); + else + SvgCircle (out_buf, point, precision); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* processing LINESTRINGs */ + if (ie > 0) + gaiaAppendToOutBuffer (out_buf, ";"); + ie++; + if (relative == 1) + SvgPathRelative (out_buf, line->DimensionModel, + line->Points, line->Coords, + precision, 0); + else + SvgPathAbsolute (out_buf, line->DimensionModel, + line->Points, line->Coords, + precision, 0); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* processing POLYGONs */ + ie++; + /* process exterior and interior rings */ + ring = polyg->Exterior; + if (relative == 1) + { + SvgPathRelative (out_buf, ring->DimensionModel, + ring->Points, ring->Coords, + precision, 1); + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + SvgPathRelative (out_buf, + ring->DimensionModel, + ring->Points, ring->Coords, + precision, 1); + } + } + else + { + SvgPathAbsolute (out_buf, ring->DimensionModel, + ring->Points, ring->Coords, + precision, 1); + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + ring = polyg->Interiors + ib; + SvgPathAbsolute (out_buf, + ring->DimensionModel, + ring->Points, ring->Coords, + precision, 1); + } + } + polyg = polyg->Next; + } + } + } + + if (out_buf->Error == 0 && out_buf->WriteOffset > 0) + { + /* sandro 2012-02-23 cleaning extra trailing spaces */ + int i; + for (i = out_buf->WriteOffset - 1; i >= 0; i--) + { + if (*(out_buf->Buffer + i) == ' ') + { + *(out_buf->Buffer + i) = '\0'; + out_buf->WriteOffset -= 1; + } + else + break; + } + } +} + +/* END of Klaus Foerster SVG implementation */ + + +static char * +XmlClean (const char *string) +{ +/* well formatting a text string for XML */ + int ind; + char *clean; + char *p_out; + int len = strlen (string); + clean = malloc (len * 3); + if (!clean) + return NULL; + p_out = clean; + for (ind = 0; ind < len; ind++) + { + /* masking XML special chars */ + switch (string[ind]) + { + case '&': + *p_out++ = '&'; + *p_out++ = 'a'; + *p_out++ = 'm'; + *p_out++ = 'p'; + *p_out++ = ';'; + break; + case '<': + *p_out++ = '&'; + *p_out++ = 'l'; + *p_out++ = 't'; + *p_out++ = ';'; + break; + case '>': + *p_out++ = '&'; + *p_out++ = 'g'; + *p_out++ = 't'; + *p_out++ = ';'; + break; + case '"': + *p_out++ = '&'; + *p_out++ = 'q'; + *p_out++ = 'u'; + *p_out++ = 'o'; + *p_out++ = 't'; + *p_out++ = ';'; + break; + default: + *p_out++ = string[ind]; + break; + }; + } + *p_out = '\0'; + return clean; +} + +static void +out_kml_point (gaiaOutBufferPtr out_buf, gaiaPointPtr point, int precision) +{ +/* formats POINT as KML [x,y] */ + char *buf_x; + char *buf_y; + char *buf_z; + char *buf; + buf_x = sqlite3_mprintf ("%.*f", precision, point->X); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, point->Y); + gaiaOutClean (buf_y); + if (point->DimensionModel == GAIA_XY_Z + || point->DimensionModel == GAIA_XY_Z_M) + { + buf_z = sqlite3_mprintf ("%.*f", precision, point->Z); + gaiaOutClean (buf_z); + } + gaiaAppendToOutBuffer (out_buf, ""); + if (point->DimensionModel == GAIA_XY_Z + || point->DimensionModel == GAIA_XY_Z_M) + { + buf = sqlite3_mprintf ("%s,%s,%s", buf_x, buf_y, buf_z); + sqlite3_free (buf_z); + } + else + buf = sqlite3_mprintf ("%s,%s", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + gaiaAppendToOutBuffer (out_buf, ""); +} + +static void +out_kml_linestring (gaiaOutBuffer * out_buf, int dims, int points, + double *coords, int precision) +{ +/* formats LINESTRING as KML [x,y] */ + char *buf_x; + char *buf_y; + char *buf_z; + char *buf; + int iv; + double x; + double y; + double z; + double m; + gaiaAppendToOutBuffer (out_buf, ""); + for (iv = 0; iv < points; iv++) + { + /* exporting vertices */ + if (dims == GAIA_XY_Z) + { + gaiaGetPointXYZ (coords, iv, &x, &y, &z); + } + else if (dims == GAIA_XY_M) + { + gaiaGetPointXYM (coords, iv, &x, &y, &m); + } + else if (dims == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (coords, iv, &x, &y); + } + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + if (dims == GAIA_XY_Z || dims == GAIA_XY_Z_M) + { + buf_z = sqlite3_mprintf ("%.*f", precision, z); + gaiaOutClean (buf_z); + if (iv == 0) + buf = sqlite3_mprintf ("%s,%s,%s", buf_x, buf_y, buf_z); + else + buf = sqlite3_mprintf (" %s,%s,%s", buf_x, buf_y, buf_z); + sqlite3_free (buf_z); + } + else + { + if (iv == 0) + buf = sqlite3_mprintf ("%s,%s", buf_x, buf_y); + else + buf = sqlite3_mprintf (" %s,%s", buf_x, buf_y); + } + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + gaiaAppendToOutBuffer (out_buf, ""); +} + +static void +out_kml_polygon (gaiaOutBufferPtr out_buf, gaiaPolygonPtr polygon, + int precision) +{ +/* formats POLYGON as KML [x,y] */ + char *buf_x; + char *buf_y; + char *buf_z; + char *buf; + gaiaRingPtr ring; + int iv; + int ib; + double x; + double y; + double z; + double m; + gaiaAppendToOutBuffer (out_buf, ""); + gaiaAppendToOutBuffer (out_buf, + ""); + ring = polygon->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + /* exporting vertices [Exterior Ring] */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + if (ring->DimensionModel == GAIA_XY_Z + || ring->DimensionModel == GAIA_XY_Z_M) + { + buf_z = sqlite3_mprintf ("%.*f", precision, z); + gaiaOutClean (buf_z); + if (iv == 0) + buf = sqlite3_mprintf ("%s,%s,%s", buf_x, buf_y, buf_z); + else + buf = sqlite3_mprintf (" %s,%s,%s", buf_x, buf_y, buf_z); + sqlite3_free (buf_z); + } + else + { + if (iv == 0) + buf = sqlite3_mprintf ("%s,%s", buf_x, buf_y); + else + buf = sqlite3_mprintf (" %s,%s", buf_x, buf_y); + } + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + gaiaAppendToOutBuffer (out_buf, + ""); + for (ib = 0; ib < polygon->NumInteriors; ib++) + { + /* interior rings */ + ring = polygon->Interiors + ib; + gaiaAppendToOutBuffer (out_buf, + ""); + for (iv = 0; iv < ring->Points; iv++) + { + /* exporting vertices [Interior Ring] */ + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + if (ring->DimensionModel == GAIA_XY_Z + || ring->DimensionModel == GAIA_XY_Z_M) + { + buf_z = sqlite3_mprintf ("%.*f", precision, z); + gaiaOutClean (buf_z); + if (iv == 0) + buf = + sqlite3_mprintf ("%s,%s,%s", buf_x, buf_y, buf_z); + else + buf = + sqlite3_mprintf (" %s,%s,%s", buf_x, buf_y, + buf_z); + sqlite3_free (buf_z); + } + else + { + if (iv == 0) + buf = sqlite3_mprintf ("%s,%s", buf_x, buf_y); + else + buf = sqlite3_mprintf (" %s,%s", buf_x, buf_y); + } + sqlite3_free (buf_x); + sqlite3_free (buf_y); + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + gaiaAppendToOutBuffer (out_buf, + ""); + } + gaiaAppendToOutBuffer (out_buf, ""); +} + +GAIAGEO_DECLARE void +gaiaOutFullKml (gaiaOutBufferPtr out_buf, const char *name, const char *desc, + gaiaGeomCollPtr geom, int precision) +{ +/* prints the 'full' KML representation of current geometry */ + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + int count = 0; + char *xml_clean; + if (!geom) + return; + if (precision > 18) + precision = 18; + +/* counting how many elementary geometries are there */ + point = geom->FirstPoint; + while (point) + { + count++; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + count++; + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + count++; + polyg = polyg->Next; + } + if (count == 1) + { + if (geom->DeclaredType == GAIA_MULTIPOINT || + geom->DeclaredType == GAIA_MULTILINESTRING || + geom->DeclaredType == GAIA_MULTIPOLYGON || + geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + count = 2; + } + + gaiaAppendToOutBuffer (out_buf, ""); + xml_clean = XmlClean (name); + if (xml_clean) + { + gaiaAppendToOutBuffer (out_buf, xml_clean); + free (xml_clean); + } + else + gaiaAppendToOutBuffer (out_buf, " "); + gaiaAppendToOutBuffer (out_buf, ""); + xml_clean = XmlClean (desc); + if (xml_clean) + { + gaiaAppendToOutBuffer (out_buf, xml_clean); + free (xml_clean); + } + else + gaiaAppendToOutBuffer (out_buf, " "); + gaiaAppendToOutBuffer (out_buf, ""); + + if (count > 1) + { + /* MultiGeometry start */ + gaiaAppendToOutBuffer (out_buf, ""); + } + + point = geom->FirstPoint; + while (point) + { + /* processing POINT */ + out_kml_point (out_buf, point, precision); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* processing LINESTRING */ + out_kml_linestring (out_buf, line->DimensionModel, + line->Points, line->Coords, precision); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* processing POLYGON */ + out_kml_polygon (out_buf, polyg, precision); + polyg = polyg->Next; + } + + if (count > 1) + { + /* MultiGeometry end */ + gaiaAppendToOutBuffer (out_buf, ""); + } + gaiaAppendToOutBuffer (out_buf, ""); +} + +GAIAGEO_DECLARE void +gaiaOutBareKml (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom, int precision) +{ +/* prints the 'bare' KML representation of current geometry */ + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + int count = 0; + if (!geom) + return; + if (precision > 18) + precision = 18; + +/* counting how many elementary geometries are there */ + point = geom->FirstPoint; + while (point) + { + count++; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + count++; + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + count++; + polyg = polyg->Next; + } + if (count == 1) + { + if (geom->DeclaredType == GAIA_MULTIPOINT || + geom->DeclaredType == GAIA_MULTILINESTRING || + geom->DeclaredType == GAIA_MULTIPOLYGON || + geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + count = 2; + } + + if (count > 1) + { + /* MultiGeometry start */ + gaiaAppendToOutBuffer (out_buf, ""); + } + + point = geom->FirstPoint; + while (point) + { + /* processing POINT */ + out_kml_point (out_buf, point, precision); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* processing LINESTRING */ + out_kml_linestring (out_buf, line->DimensionModel, line->Points, + line->Coords, precision); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* processing POLYGON */ + out_kml_polygon (out_buf, polyg, precision); + polyg = polyg->Next; + } + + if (count > 1) + { + /* MultiGeometry end */ + gaiaAppendToOutBuffer (out_buf, ""); + } +} + +GAIAGEO_DECLARE void +gaiaOutGml (gaiaOutBufferPtr out_buf, int version, int precision, + gaiaGeomCollPtr geom) +{ +/* +/ prints the GML representation of current geometry +/ *result* returns the encoded GML or NULL if any error is encountered +*/ + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + int iv; + int ib; + double x; + double y; + double z; + double m; + int has_z; + int is_multi = 1; + int is_coll = 0; + char buf[2048]; + char *xbuf; + char *buf_x; + char *buf_y; + char *buf_z; + if (!geom) + return; + if (precision > 18) + precision = 18; + + switch (geom->DeclaredType) + { + case GAIA_POINT: + case GAIA_LINESTRING: + case GAIA_POLYGON: + *buf = '\0'; + is_multi = 0; + break; + case GAIA_MULTIPOINT: + if (geom->Srid <= 0) + strcpy (buf, ""); + else + sprintf (buf, "", geom->Srid); + break; + case GAIA_MULTILINESTRING: + if (version == 3) + { + if (geom->Srid <= 0) + strcpy (buf, ""); + else + sprintf (buf, "", + geom->Srid); + } + else + { + if (geom->Srid <= 0) + strcpy (buf, ""); + else + sprintf (buf, + "", + geom->Srid); + } + break; + case GAIA_MULTIPOLYGON: + if (version == 3) + { + if (geom->Srid <= 0) + strcpy (buf, ""); + else + sprintf (buf, "", + geom->Srid); + } + else + { + if (geom->Srid <= 0) + strcpy (buf, ""); + else + sprintf (buf, "", + geom->Srid); + } + break; + default: + if (geom->Srid <= 0) + strcpy (buf, ""); + else + sprintf (buf, "", + geom->Srid); + is_coll = 1; + break; + }; + gaiaAppendToOutBuffer (out_buf, buf); + point = geom->FirstPoint; + while (point) + { + /* processing POINT */ + if (is_multi) + { + if (is_coll) + strcpy (buf, ""); + else + strcpy (buf, ""); + strcat (buf, ""); + } + else + { + if (geom->Srid <= 0) + strcpy (buf, ""); + else + sprintf (buf, "", + geom->Srid); + } + if (version == 3) + { + if (point->DimensionModel == GAIA_XY_Z + || point->DimensionModel == GAIA_XY_Z_M) + strcat (buf, ""); + else + strcat (buf, ""); + } + else + strcat (buf, ""); + gaiaAppendToOutBuffer (out_buf, buf); + buf_x = sqlite3_mprintf ("%.*f", precision, point->X); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, point->Y); + gaiaOutClean (buf_y); + if (point->DimensionModel == GAIA_XY_Z + || point->DimensionModel == GAIA_XY_Z_M) + { + buf_z = sqlite3_mprintf ("%.*f", precision, point->Z); + gaiaOutClean (buf_z); + if (version == 3) + { + xbuf = sqlite3_mprintf ("%s %s %s", buf_x, buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + } + else + { + xbuf = sqlite3_mprintf ("%s,%s,%s", buf_x, buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + } + } + else + { + if (version == 3) + { + xbuf = sqlite3_mprintf ("%s %s", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + } + else + { + xbuf = sqlite3_mprintf ("%s,%s", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + } + } + gaiaAppendToOutBuffer (out_buf, xbuf); + sqlite3_free (xbuf); + if (version == 3) + strcpy (buf, ""); + else + strcpy (buf, ""); + if (is_multi) + { + strcat (buf, ""); + if (is_coll) + strcat (buf, ""); + else + strcat (buf, ""); + } + else + strcat (buf, ""); + gaiaAppendToOutBuffer (out_buf, buf); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* processing LINESTRING */ + if (is_multi) + { + if (version == 3) + { + if (is_coll) + strcpy (buf, ""); + else + strcpy (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + if (line->DimensionModel == GAIA_XY_Z + || line->DimensionModel == GAIA_XY_Z_M) + strcat (buf, ""); + else + strcat (buf, ""); + } + else + { + if (is_coll) + strcpy (buf, ""); + else + strcpy (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + } + } + else + { + if (version == 3) + { + if (geom->Srid <= 0) + strcpy (buf, ""); + else + sprintf (buf, "", + geom->Srid); + strcat (buf, ""); + strcat (buf, ""); + if (line->DimensionModel == GAIA_XY_Z + || line->DimensionModel == GAIA_XY_Z_M) + strcat (buf, ""); + else + strcat (buf, ""); + } + else + { + if (geom->Srid <= 0) + strcpy (buf, ""); + else + sprintf (buf, "", + geom->Srid); + strcat (buf, ""); + } + } + gaiaAppendToOutBuffer (out_buf, buf); + for (iv = 0; iv < line->Points; iv++) + { + /* exporting vertices */ + has_z = 0; + if (line->DimensionModel == GAIA_XY_Z) + { + has_z = 1; + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + has_z = 1; + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + if (iv == 0) + *buf = '\0'; + else + strcpy (buf, " "); + if (has_z) + { + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%.*f", precision, z); + gaiaOutClean (buf_z); + if (version == 3) + { + xbuf = + sqlite3_mprintf ("%s%s %s %s", buf, buf_x, + buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + } + else + { + xbuf = + sqlite3_mprintf ("%s%s,%s,%s", buf, buf_x, + buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + } + } + else + { + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + if (version == 3) + { + xbuf = + sqlite3_mprintf ("%s%s %s", buf, buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + } + else + { + xbuf = + sqlite3_mprintf ("%s%s,%s", buf, buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + } + } + gaiaAppendToOutBuffer (out_buf, xbuf); + sqlite3_free (xbuf); + } + if (is_multi) + { + if (version == 3) + { + strcpy (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + if (is_coll) + strcat (buf, ""); + else + strcat (buf, ""); + } + else + { + strcpy (buf, ""); + strcat (buf, ""); + if (is_coll) + strcat (buf, ""); + else + strcat (buf, ""); + } + } + else + { + if (version == 3) + { + strcpy (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + } + else + { + strcpy (buf, ""); + strcat (buf, ""); + } + } + gaiaAppendToOutBuffer (out_buf, buf); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* processing POLYGON */ + ring = polyg->Exterior; + if (is_multi) + { + if (version == 3) + { + if (is_coll) + strcpy (buf, ""); + else + strcpy (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + if (ring->DimensionModel == GAIA_XY_Z + || ring->DimensionModel == GAIA_XY_Z_M) + strcat (buf, ""); + else + strcat (buf, ""); + } + else + { + if (is_coll) + strcpy (buf, ""); + else + strcpy (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + } + } + else + { + if (geom->Srid <= 0) + strcpy (buf, ""); + else + sprintf (buf, "", + geom->Srid); + if (version == 3) + { + strcat (buf, ""); + strcat (buf, ""); + if (ring->DimensionModel == GAIA_XY_Z + || ring->DimensionModel == GAIA_XY_Z_M) + strcat (buf, ""); + else + strcat (buf, ""); + } + else + { + strcat (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + } + } + gaiaAppendToOutBuffer (out_buf, buf); + for (iv = 0; iv < ring->Points; iv++) + { + /* exporting vertices [Interior Ring] */ + has_z = 0; + if (ring->DimensionModel == GAIA_XY_Z) + { + has_z = 1; + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + has_z = 1; + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + if (iv == 0) + *buf = '\0'; + else + strcpy (buf, " "); + if (has_z) + { + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%.*f", precision, z); + gaiaOutClean (buf_z); + if (version == 3) + { + xbuf = + sqlite3_mprintf ("%s%s %s %s", buf, buf_x, + buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + } + else + { + xbuf = + sqlite3_mprintf ("%s%s,%s,%s", buf, buf_x, + buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + } + } + else + { + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + if (version == 3) + { + xbuf = + sqlite3_mprintf ("%s%s %s", buf, buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + } + else + { + xbuf = + sqlite3_mprintf ("%s%s,%s", buf, buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + } + } + gaiaAppendToOutBuffer (out_buf, xbuf); + sqlite3_free (xbuf); + } + /* closing the Exterior Ring */ + if (version == 3) + { + strcpy (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + } + else + { + strcpy (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + } + gaiaAppendToOutBuffer (out_buf, buf); + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* interior rings */ + ring = polyg->Interiors + ib; + if (version == 3) + { + strcpy (buf, ""); + strcat (buf, ""); + if (ring->DimensionModel == GAIA_XY_Z + || ring->DimensionModel == GAIA_XY_Z_M) + strcat (buf, ""); + else + strcat (buf, ""); + } + else + { + strcpy (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + } + gaiaAppendToOutBuffer (out_buf, buf); + for (iv = 0; iv < ring->Points; iv++) + { + /* exporting vertices [Interior Ring] */ + has_z = 0; + if (ring->DimensionModel == GAIA_XY_Z) + { + has_z = 1; + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + has_z = 1; + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + if (iv == 0) + *buf = '\0'; + else + strcpy (buf, " "); + if (has_z) + { + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%.*f", precision, z); + gaiaOutClean (buf_z); + if (version == 3) + { + xbuf = + sqlite3_mprintf ("%s%s %s %s", buf, buf_x, + buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + } + else + { + xbuf = + sqlite3_mprintf ("%s%s,%s,%s", buf, buf_x, + buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + } + } + else + { + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + if (version == 3) + { + xbuf = + sqlite3_mprintf ("%s%s %s", buf, buf_x, + buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + } + else + { + xbuf = + sqlite3_mprintf ("%s%s,%s", buf, buf_x, + buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + } + } + gaiaAppendToOutBuffer (out_buf, xbuf); + sqlite3_free (xbuf); + } + /* closing the Interior Ring */ + if (version == 3) + { + strcpy (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + } + else + { + strcpy (buf, ""); + strcat (buf, ""); + strcat (buf, ""); + } + gaiaAppendToOutBuffer (out_buf, buf); + } + /* closing the Polygon */ + if (is_multi) + { + if (version == 3) + { + strcpy (buf, ""); + if (is_coll) + strcat (buf, ""); + else + strcat (buf, ""); + } + else + { + strcpy (buf, ""); + if (is_coll) + strcat (buf, ""); + else + strcat (buf, ""); + } + } + else + strcpy (buf, ""); + gaiaAppendToOutBuffer (out_buf, buf); + polyg = polyg->Next; + } + switch (geom->DeclaredType) + { + case GAIA_POINT: + case GAIA_LINESTRING: + case GAIA_POLYGON: + *buf = '\0'; + break; + case GAIA_MULTIPOINT: + sprintf (buf, ""); + break; + case GAIA_MULTILINESTRING: + if (version == 3) + sprintf (buf, ""); + else + sprintf (buf, ""); + break; + case GAIA_MULTIPOLYGON: + if (version == 3) + sprintf (buf, ""); + else + sprintf (buf, ""); + break; + default: + sprintf (buf, ""); + break; + }; + gaiaAppendToOutBuffer (out_buf, buf); +} + +GAIAGEO_DECLARE void +gaiaOutGeoJSON (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom, int precision, + int options) +{ +/* +/ prints the GeoJSON representation of current geometry +/ *result* returns the encoded GeoJSON or NULL if any error is encountered +*/ + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + int iv; + int ib; + double x; + double y; + double z; + double m; + int has_z; + int is_multi = 0; + int multi_count = 0; + char *bbox; + char crs[2048]; + char *buf; + char *buf_x; + char *buf_y; + char *buf_m; + char *buf_z; + char endJson[16]; + if (!geom) + return; + if (precision > 18) + precision = 18; + + if (options != 0) + { + bbox = NULL; + *crs = '\0'; + if (geom->Srid > 0) + { + if (options == 2 || options == 3) + { + /* including short CRS */ + sprintf (crs, + ",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"EPSG:%d\"}}", + geom->Srid); + } + if (options == 4 || options == 5) + { + /* including long CRS */ + sprintf (crs, + ",\"crs\":{\"type\":\"name\",\"properties\":{\"name\":\"urn:ogc:def:crs:EPSG:%d\"}}", + geom->Srid); + } + } + if (options == 1 || options == 3 || options == 5) + { + /* including BBOX */ + gaiaMbrGeometry (geom); + buf_x = sqlite3_mprintf ("%.*f", precision, geom->MinX); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, geom->MinY); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%.*f", precision, geom->MaxX); + gaiaOutClean (buf_z); + buf_m = sqlite3_mprintf ("%.*f", precision, geom->MaxY); + gaiaOutClean (buf_m); + bbox = + sqlite3_mprintf (",\"bbox\":[%s,%s,%s,%s]", buf_x, buf_y, + buf_z, buf_m); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + sqlite3_free (buf_m); + } + switch (geom->DeclaredType) + { + case GAIA_POINT: + buf = + sqlite3_mprintf ("{\"type\":\"Point\"%s%s,\"coordinates\":", + crs, bbox); + strcpy (endJson, "}"); + break; + case GAIA_LINESTRING: + buf = + sqlite3_mprintf + ("{\"type\":\"LineString\"%s%s,\"coordinates\":[", crs, + bbox); + strcpy (endJson, "}"); + break; + case GAIA_POLYGON: + buf = + sqlite3_mprintf + ("{\"type\":\"Polygon\"%s%s,\"coordinates\":[", crs, bbox); + strcpy (endJson, "}"); + break; + case GAIA_MULTIPOINT: + buf = + sqlite3_mprintf + ("{\"type\":\"MultiPoint\"%s%s,\"coordinates\":[", crs, + bbox); + strcpy (endJson, "]}"); + break; + case GAIA_MULTILINESTRING: + buf = + sqlite3_mprintf + ("{\"type\":\"MultiLineString\"%s%s,\"coordinates\":[[", + crs, bbox); + strcpy (endJson, "]}"); + break; + case GAIA_MULTIPOLYGON: + buf = + sqlite3_mprintf + ("{\"type\":\"MultiPolygon\"%s%s,\"coordinates\":[[", crs, + bbox); + strcpy (endJson, "]}"); + break; + default: + buf = + sqlite3_mprintf + ("{\"type\":\"GeometryCollection\"%s%s,\"geometries\":[", + crs, bbox); + strcpy (endJson, "]}"); + is_multi = 1; + break; + }; + if (bbox) + sqlite3_free (bbox); + } + else + { + /* omitting BBOX */ + switch (geom->DeclaredType) + { + case GAIA_POINT: + buf = sqlite3_mprintf ("{\"type\":\"Point\",\"coordinates\":"); + strcpy (endJson, "}"); + break; + case GAIA_LINESTRING: + buf = + sqlite3_mprintf + ("{\"type\":\"LineString\",\"coordinates\":["); + strcpy (endJson, "}"); + break; + case GAIA_POLYGON: + buf = + sqlite3_mprintf ("{\"type\":\"Polygon\",\"coordinates\":["); + strcpy (endJson, "}"); + break; + case GAIA_MULTIPOINT: + buf = + sqlite3_mprintf + ("{\"type\":\"MultiPoint\",\"coordinates\":["); + strcpy (endJson, "]}"); + break; + case GAIA_MULTILINESTRING: + buf = + sqlite3_mprintf + ("{\"type\":\"MultiLineString\",\"coordinates\":[["); + strcpy (endJson, "]}"); + break; + case GAIA_MULTIPOLYGON: + buf = + sqlite3_mprintf + ("{\"type\":\"MultiPolygon\",\"coordinates\":[["); + strcpy (endJson, "]}"); + break; + default: + buf = + sqlite3_mprintf + ("{\"type\":\"GeometryCollection\",\"geometries\":["); + strcpy (endJson, "]}"); + is_multi = 1; + break; + }; + } + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + point = geom->FirstPoint; + while (point) + { + /* processing POINT */ + if (is_multi) + { + if (multi_count > 0) + buf = ",{\"type\":\"Point\",\"coordinates\":"; + else + buf = "{\"type\":\"Point\",\"coordinates\":"; + gaiaAppendToOutBuffer (out_buf, buf); + } + else if (point != geom->FirstPoint) + { + /* adding a further Point */ + gaiaAppendToOutBuffer (out_buf, ","); + } + buf_x = sqlite3_mprintf ("%.*f", precision, point->X); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, point->Y); + gaiaOutClean (buf_y); + has_z = 0; + if (point->DimensionModel == GAIA_XY_Z + || point->DimensionModel == GAIA_XY_Z_M) + { + buf_z = sqlite3_mprintf ("%.*f", precision, point->Z); + gaiaOutClean (buf_z); + has_z = 1; + } + if (has_z) + { + buf = sqlite3_mprintf ("[%s,%s,%s]", buf_x, buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + } + else + { + buf = sqlite3_mprintf ("[%s,%s]", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + } + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + if (is_multi) + { + gaiaAppendToOutBuffer (out_buf, "}"); + multi_count++; + } + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* processing LINESTRING */ + if (is_multi) + { + if (multi_count > 0) + buf = ",{\"type\":\"LineString\",\"coordinates\":["; + else + buf = "{\"type\":\"LineString\",\"coordinates\":["; + gaiaAppendToOutBuffer (out_buf, buf); + } + else if (line != geom->FirstLinestring) + { + /* opening a further LineString */ + gaiaAppendToOutBuffer (out_buf, ",["); + } + for (iv = 0; iv < line->Points; iv++) + { + /* exporting vertices */ + has_z = 0; + if (line->DimensionModel == GAIA_XY_Z) + { + has_z = 1; + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + has_z = 1; + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + if (has_z) + { + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%.*f", precision, z); + gaiaOutClean (buf_z); + if (iv == 0) + buf = + sqlite3_mprintf ("[%s,%s,%s]", buf_x, buf_y, + buf_z); + else + buf = + sqlite3_mprintf (",[%s,%s,%s]", buf_x, buf_y, + buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + } + else + { + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + if (iv == 0) + buf = sqlite3_mprintf ("[%s,%s]", buf_x, buf_y); + else + buf = sqlite3_mprintf (",[%s,%s]", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + } + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + /* closing the LineString */ + gaiaAppendToOutBuffer (out_buf, "]"); + if (is_multi) + { + gaiaAppendToOutBuffer (out_buf, "}"); + multi_count++; + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* processing POLYGON */ + if (is_multi) + { + if (multi_count > 0) + buf = ",{\"type\":\"Polygon\",\"coordinates\":["; + else + buf = "{\"type\":\"Polygon\",\"coordinates\":["; + gaiaAppendToOutBuffer (out_buf, buf); + } + else if (polyg != geom->FirstPolygon) + { + /* opening a further Polygon */ + gaiaAppendToOutBuffer (out_buf, ",["); + } + ring = polyg->Exterior; + for (iv = 0; iv < ring->Points; iv++) + { + /* exporting vertices [Interior Ring] */ + has_z = 0; + if (ring->DimensionModel == GAIA_XY_Z) + { + has_z = 1; + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + has_z = 1; + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + if (has_z) + { + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%.*f", precision, z); + gaiaOutClean (buf_z); + if (iv == 0) + buf = + sqlite3_mprintf ("[[%s,%s,%s]", buf_x, buf_y, + buf_z); + else + buf = + sqlite3_mprintf (",[%s,%s,%s]", buf_x, buf_y, + buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + } + else + { + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + if (iv == 0) + buf = sqlite3_mprintf ("[[%s,%s]", buf_x, buf_y); + else + buf = sqlite3_mprintf (",[%s,%s]", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + } + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + /* closing the Exterior Ring */ + gaiaAppendToOutBuffer (out_buf, "]"); + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* interior rings */ + ring = polyg->Interiors + ib; + for (iv = 0; iv < ring->Points; iv++) + { + /* exporting vertices [Interior Ring] */ + has_z = 0; + if (ring->DimensionModel == GAIA_XY_Z) + { + has_z = 1; + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + has_z = 1; + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + } + if (has_z) + { + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + buf_z = sqlite3_mprintf ("%.*f", precision, z); + gaiaOutClean (buf_z); + if (iv == 0) + buf = + sqlite3_mprintf (",[[%s,%s,%s]", buf_x, + buf_y, buf_z); + else + buf = + sqlite3_mprintf (",[%s,%s,%s]", buf_x, + buf_y, buf_z); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + sqlite3_free (buf_z); + } + else + { + buf_x = sqlite3_mprintf ("%.*f", precision, x); + gaiaOutClean (buf_x); + buf_y = sqlite3_mprintf ("%.*f", precision, y); + gaiaOutClean (buf_y); + if (iv == 0) + buf = + sqlite3_mprintf (",[[%s,%s]", buf_x, buf_y); + else + buf = + sqlite3_mprintf (",[%s,%s]", buf_x, buf_y); + sqlite3_free (buf_x); + sqlite3_free (buf_y); + } + gaiaAppendToOutBuffer (out_buf, buf); + sqlite3_free (buf); + } + /* closing the Interior Ring */ + gaiaAppendToOutBuffer (out_buf, "]"); + } + /* closing the Polygon */ + gaiaAppendToOutBuffer (out_buf, "]"); + if (is_multi) + { + gaiaAppendToOutBuffer (out_buf, "}"); + multi_count++; + } + polyg = polyg->Next; + } + gaiaAppendToOutBuffer (out_buf, endJson); +} diff --git a/src/spatialite/src/gaiageo/gg_xml.c b/src/spatialite/src/gaiageo/gg_xml.c new file mode 100644 index 0000000..a142673 --- /dev/null +++ b/src/spatialite/src/gaiageo/gg_xml.c @@ -0,0 +1,4233 @@ +/* + + gg_xml.c -- XML Document implementation + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#ifdef ENABLE_LIBXML2 /* LIBXML2 enabled: supporting XML documents */ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + + +struct gaiaxml_namespace +{ +/* a Namespace declaration */ + int type; + xmlChar *prefix; + xmlChar *href; + struct gaiaxml_namespace *next; +}; + +struct gaiaxml_ns_list +{ +/* a Namespaces list */ + struct gaiaxml_namespace *first; + struct gaiaxml_namespace *last; +}; + +static int +is_valid_cache (struct splite_internal_cache *cache) +{ +/* testing if the passed cache is a valid one */ + if (cache == NULL) + return 0; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return 0; + return 1; +} + +static struct gaiaxml_namespace * +splite_create_namespace (int type, const xmlChar * prefix, const xmlChar * href) +{ +/* allocating and initializing a Namespace declaration */ + int len; + struct gaiaxml_namespace *ptr = malloc (sizeof (struct gaiaxml_namespace)); + ptr->type = type; + if (prefix == NULL) + ptr->prefix = NULL; + else + { + len = strlen ((const char *) prefix); + ptr->prefix = malloc (len + 1); + memcpy (ptr->prefix, prefix, len + 1); + } + if (href == NULL) + ptr->href = NULL; + else + { + len = strlen ((const char *) href); + ptr->href = malloc (len + 1); + memcpy (ptr->href, href, len + 1); + } + ptr->next = NULL; + return ptr; +} + +static void +splite_free_namespace (struct gaiaxml_namespace *ptr) +{ +/* memory cleanup - destroying a Namespace declaration */ + if (ptr == NULL) + return; + if (ptr->prefix != NULL) + free (ptr->prefix); + if (ptr->href != NULL) + free (ptr->href); + free (ptr); +} + +static struct gaiaxml_ns_list * +splite_create_ns_list (void) +{ +/* allocating and initializing a Namespaces list */ + struct gaiaxml_ns_list *ptr = malloc (sizeof (struct gaiaxml_ns_list)); + ptr->first = NULL; + ptr->last = NULL; + return ptr; +} + +static void +splite_free_ns_list (struct gaiaxml_ns_list *ptr) +{ +/* memory cleanup - destroying a Namespaces list */ + struct gaiaxml_namespace *p; + struct gaiaxml_namespace *p_n; + if (ptr == NULL) + return; + p = ptr->first; + while (p != NULL) + { + p_n = p->next; + splite_free_namespace (p); + p = p_n; + } + free (ptr); +} + +static void +splite_add_namespace (struct gaiaxml_ns_list *list, int type, + const xmlChar * prefix, const xmlChar * href) +{ +/* inserting a new Namespace into the list */ + struct gaiaxml_namespace *ns; + if (list == NULL) + return; + ns = list->first; + while (ns != NULL) + { + /* checking if already defined */ + int ok_type = 0; + int ok_prefix = 0; + int ok_href = 0; + if (ns->type == type) + ok_type = 1; + if (ns->prefix == NULL && prefix == NULL) + ok_prefix = 1; + if (ns->prefix != NULL && prefix != NULL) + { + if (strcmp ((const char *) (ns->prefix), (const char *) prefix) + == 0) + ok_prefix = 1; + } + if (ns->href == NULL && href == NULL) + ok_href = 1; + if (ns->href != NULL && href != NULL) + { + if (strcmp ((const char *) (ns->href), (const char *) href) == + 0) + ok_href = 1; + } + if (ok_type && ok_prefix && ok_href) + return; + ns = ns->next; + } +/* inserting a new Namespace */ + ns = splite_create_namespace (type, prefix, href); + if (list->first == NULL) + list->first = ns; + if (list->last != NULL) + list->last->next = ns; + list->last = ns; +} + +static void +spliteSilentError (void *ctx, const char *msg, ...) +{ +/* shutting up XML Errors */ + if (ctx != NULL) + ctx = NULL; /* suppressing stupid compiler warnings (unused args) */ + if (msg != NULL) + ctx = NULL; /* suppressing stupid compiler warnings (unused args) */ +} + +static void +spliteParsingError (void *ctx, const char *msg, ...) +{ +/* appending to the current Parsing Error buffer */ + struct splite_internal_cache *cache = (struct splite_internal_cache *) ctx; + gaiaOutBufferPtr buf; + char out[65536]; + va_list args; + + if (ctx != NULL) + ctx = NULL; /* suppressing stupid compiler warnings (unused args) */ + if (!is_valid_cache (cache)) + return; + buf = (gaiaOutBufferPtr) (cache->xmlParsingErrors); + + va_start (args, msg); + vsnprintf (out, 65536, msg, args); + gaiaAppendToOutBuffer (buf, out); + va_end (args); +} + +static void +spliteSchemaValidationError (void *ctx, const char *msg, ...) +{ +/* appending to the current SchemaValidation Error buffer */ + struct splite_internal_cache *cache = (struct splite_internal_cache *) ctx; + gaiaOutBufferPtr buf; + char out[65536]; + va_list args; + + if (ctx != NULL) + ctx = NULL; /* suppressing stupid compiler warnings (unused args) */ + if (!is_valid_cache (cache)) + return; + buf = (gaiaOutBufferPtr) (cache->xmlSchemaValidationErrors); + + va_start (args, msg); + vsnprintf (out, 65536, msg, args); + gaiaAppendToOutBuffer (buf, out); + va_end (args); +} + +static void +spliteResetXmlErrors (struct splite_internal_cache *cache) +{ +/* resetting the XML Error buffers */ + gaiaOutBufferPtr buf; + if (!is_valid_cache (cache)) + return; + buf = (gaiaOutBufferPtr) (cache->xmlParsingErrors); + gaiaOutBufferReset (buf); + buf = (gaiaOutBufferPtr) (cache->xmlSchemaValidationErrors); + gaiaOutBufferReset (buf); +} + +GAIAGEO_DECLARE char * +gaiaXmlBlobGetLastParseError (const void *ptr) +{ +/* get the most recent XML Parse error/warning message */ + struct splite_internal_cache *cache = (struct splite_internal_cache *) ptr; + gaiaOutBufferPtr buf; + if (!is_valid_cache (cache)) + return NULL; + buf = (gaiaOutBufferPtr) (cache->xmlParsingErrors); + return buf->Buffer; +} + +GAIAGEO_DECLARE char * +gaiaXmlBlobGetLastValidateError (const void *ptr) +{ +/* get the most recent XML Validate error/warning message */ + struct splite_internal_cache *cache = (struct splite_internal_cache *) ptr; + gaiaOutBufferPtr buf; + if (!is_valid_cache (cache)) + return NULL; + buf = (gaiaOutBufferPtr) (cache->xmlSchemaValidationErrors); + return buf->Buffer; +} + +GAIAGEO_DECLARE char * +gaiaXmlBlobGetLastXPathError (const void *ptr) +{ +/* get the most recent XML Validate error/warning message */ + struct splite_internal_cache *cache = (struct splite_internal_cache *) ptr; + gaiaOutBufferPtr buf; + if (!is_valid_cache (cache)) + return NULL; + buf = (gaiaOutBufferPtr) (cache->xmlXPathErrors); + return buf->Buffer; +} + +SPATIALITE_PRIVATE void +splite_free_xml_schema_cache_item (struct splite_xmlSchema_cache_item *p) +{ +/* freeing an XmlSchema Cache Item */ + if (p->schemaURI) + free (p->schemaURI); + if (p->parserCtxt) + xmlSchemaFreeParserCtxt (p->parserCtxt); + if (p->schema) + xmlSchemaFree (p->schema); + if (p->schemaDoc) + xmlFreeDoc (p->schemaDoc); + p->schemaURI = NULL; + p->parserCtxt = NULL; + p->schemaDoc = NULL; + p->schema = NULL; +} + +static int +splite_xmlSchemaCacheFind (struct splite_internal_cache *cache, + const char *schemaURI, xmlDocPtr * schema_doc, + xmlSchemaParserCtxtPtr * parser_ctxt, + xmlSchemaPtr * schema) +{ +/* attempting to retrive some XmlSchema from within the Cache */ + int i; + time_t now; + struct splite_xmlSchema_cache_item *p; + if (!is_valid_cache (cache)) + return 0; + for (i = 0; i < MAX_XMLSCHEMA_CACHE; i++) + { + p = &(cache->xmlSchemaCache[i]); + if (p->schemaURI) + { + if (strcmp (schemaURI, p->schemaURI) == 0) + { + /* found a matching cache-item */ + *schema_doc = p->schemaDoc; + *parser_ctxt = p->parserCtxt; + *schema = p->schema; + /* updating the timestamp */ time (&now); + p->timestamp = now; + return 1; + } + } + } + return 0; +} + +static void +splite_xmlSchemaCacheInsert (struct splite_internal_cache *cache, + const char *schemaURI, xmlDocPtr schema_doc, + xmlSchemaParserCtxtPtr parser_ctxt, + xmlSchemaPtr schema) +{ +/* inserting a new XmlSchema item into the Cache */ + int i; + int len = strlen (schemaURI); + time_t now; + time_t oldest; + struct splite_xmlSchema_cache_item *pSlot = NULL; + struct splite_xmlSchema_cache_item *p; + if (!is_valid_cache (cache)) + return; + time (&now); + oldest = now; + for (i = 0; i < MAX_XMLSCHEMA_CACHE; i++) + { + p = &(cache->xmlSchemaCache[i]); + if (p->schemaURI == NULL) + { + /* found an empty slot */ + pSlot = p; + break; + } + if (p->timestamp < oldest) + { + /* saving the oldest slot */ + pSlot = p; + oldest = p->timestamp; + } + } +/* inserting into the Cache Slot */ + splite_free_xml_schema_cache_item (pSlot); + pSlot->timestamp = now; + pSlot->schemaURI = malloc (len + 1); + strcpy (pSlot->schemaURI, schemaURI); + pSlot->schemaDoc = schema_doc; + pSlot->parserCtxt = parser_ctxt; + pSlot->schema = schema; +} + +static void +sniff_sld_payload (xmlNodePtr node, int *layers, int *point, int *line, + int *polygon, int *raster) +{ +/* recursively sniffing a generic SLD payload type */ + + while (node) + { + if (node->type == XML_ELEMENT_NODE) + { + const char *name = (const char *) (node->name); + if (strcmp (name, "FeatureTypeStyle") == 0) + *layers += 1; + if (strcmp (name, "CoverageStyle") == 0) + *layers += 1; + if (strcmp (name, "PointSymbolizer") == 0) + *point += 1; + if (strcmp (name, "LineSymbolizer") == 0) + *line += 1; + if (strcmp (name, "PolygonSymbolizer") == 0) + *polygon += 1; + if (strcmp (name, "RasterSymbolizer") == 0) + *raster += 1; + } + sniff_sld_payload (node->children, layers, point, line, polygon, + raster); + node = node->next; + } +} + +static void +sniff_payload (xmlDocPtr xml_doc, int *is_iso_metadata, + int *is_sld_se_vector_style, int *is_sld_se_raster_style, + int *is_sld_style, int *is_svg) +{ +/* sniffing the payload type */ + xmlNodePtr root = xmlDocGetRootElement (xml_doc); + *is_iso_metadata = 0; + *is_sld_se_vector_style = 0; + *is_sld_se_raster_style = 0; + *is_svg = 0; + if (root->name != NULL) + { + const char *name = (const char *) (root->name); + if (strcmp (name, "MD_Metadata") == 0) + *is_iso_metadata = 1; + if (strcmp (name, "FeatureTypeStyle") == 0 + || strcmp (name, "PointSymbolizer") == 0 + || strcmp (name, "LineSymbolizer") == 0 + || strcmp (name, "PolygonSymbolizer") == 0 + || strcmp (name, "TextSymbolizer") == 0) + *is_sld_se_vector_style = 1; + if (strcmp (name, "RasterSymbolizer") == 0 + || strcmp (name, "CoverageStyle") == 0) + *is_sld_se_raster_style = 1; + if (strcmp (name, "StyledLayerDescriptor") == 0) + { + /* sniffing an SLD (1.0.0 ??) payload */ + int layers = 0; + int point = 0; + int line = 0; + int polygon = 0; + int raster = 0; + xmlNodePtr node = xmlDocGetRootElement (xml_doc); + sniff_sld_payload (node, &layers, &point, &line, &polygon, + &raster); + if (layers == 1 && point == 0 && line == 0 && polygon == 0 + && raster == 1) + { + /* raster style */ + *is_sld_se_raster_style = 1; + } + if (layers == 1 && (point > 0 || line > 0 || polygon > 0) + && raster == 0) + { + /* vector style */ + *is_sld_se_vector_style = 1; + } + *is_sld_style = 1; + } + if (strcmp (name, "svg") == 0) + *is_svg = 1; + } +} + +static void +find_iso_ids (xmlNodePtr node, const char *name, char **string, int *open_tag, + int *char_string, int *count) +{ +/* recursively scanning the DOM tree [fileIdentifier or parentIdentifier] */ + xmlNode *cur_node = NULL; + int open = 0; + int cs = 0; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + const char *xname = (const char *) (cur_node->name); + if (*open_tag == 1) + { + if (strcmp (xname, "CharacterString") == 0) + { + cs = 1; + *char_string = 1; + } + } + if (strcmp (xname, name) == 0) + { + if (cur_node->parent != NULL) + { + if (cur_node->parent->type == XML_ELEMENT_NODE) + { + if (strcmp + ((const char *) (cur_node->parent->name), + "MD_Metadata") == 0) + { + /* + / only if + / + / + */ + open = 1; + *open_tag = 1; + } + } + } + } + } + if (cur_node->type == XML_TEXT_NODE && *open_tag == 1 + && *char_string == 1) + { + if (cur_node->content != NULL) + { + int len = strlen ((const char *) cur_node->content); + char *buf = malloc (len + 1); + strcpy (buf, (const char *) cur_node->content); + if (*string) + free (*string); + *string = buf; + *count += 1; + } + } + + find_iso_ids (cur_node->children, name, string, open_tag, char_string, + count); + if (open) + *open_tag = 0; + if (cs) + *char_string = 0; + } +} + +static void +find_iso_title (xmlNodePtr node, char **string, int *open_tag, int *char_string, + int *count) +{ +/* recursively scanning the DOM tree [title] */ + xmlNode *cur_node = NULL; + xmlNode *parent; + int open = 0; + int cs = 0; + int ok_parent; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (*open_tag == 1) + { + if (strcmp + ((const char *) (cur_node->name), + "CharacterString") == 0) + { + cs = 1; + *char_string = 1; + } + } + if (strcmp ((const char *) (cur_node->name), "title") == 0) + { + ok_parent = 0; + parent = cur_node->parent; + if (parent) + { + if (strcmp + ((const char *) (parent->name), + "CI_Citation") == 0) + ok_parent++; + } + if (ok_parent == 1) + { + parent = parent->parent; + if (strcmp + ((const char *) (parent->name), + "citation") == 0) + ok_parent++; + } + if (ok_parent == 2) + { + parent = parent->parent; + if (strcmp + ((const char *) (parent->name), + "MD_DataIdentification") == 0) + ok_parent++; + } + if (ok_parent == 3) + { + parent = parent->parent; + if (strcmp + ((const char *) (parent->name), + "identificationInfo") == 0) + ok_parent++; + } + if (ok_parent == 4) + { + parent = parent->parent; + if (strcmp + ((const char *) (parent->name), + "MD_Metadata") == 0) + ok_parent++; + } + if (ok_parent == 5) + { + /* + / only if + / + / + / + / + / + */ + open = 1; + *open_tag = 1; + } + } + } + if (cur_node->type == XML_TEXT_NODE && *open_tag == 1 + && *char_string == 1) + { + if (cur_node->content != NULL) + { + int len = strlen ((const char *) cur_node->content); + char *buf = malloc (len + 1); + strcpy (buf, (const char *) cur_node->content); + if (*string) + free (*string); + *string = buf; + *count += 1; + } + } + + find_iso_title (cur_node->children, string, open_tag, char_string, + count); + if (open) + *open_tag = 0; + if (cs) + *char_string = 0; + } +} + +static void +find_iso_abstract (xmlNodePtr node, char **string, int *open_tag, + int *char_string, int *count) +{ +/* recursively scanning the DOM abstract [title] */ + xmlNode *cur_node = NULL; + xmlNode *parent; + int open = 0; + int cs = 0; + int ok_parent; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (*open_tag == 1) + { + if (strcmp + ((const char *) (cur_node->name), + "CharacterString") == 0) + { + cs = 1; + *char_string = 1; + } + } + if (strcmp ((const char *) (cur_node->name), "abstract") == 0) + { + ok_parent = 0; + parent = cur_node->parent; + if (parent) + { + if (strcmp + ((const char *) (parent->name), + "MD_DataIdentification") == 0) + ok_parent++; + } + if (ok_parent == 1) + { + parent = parent->parent; + if (strcmp + ((const char *) (parent->name), + "identificationInfo") == 0) + ok_parent++; + } + if (ok_parent == 2) + { + parent = parent->parent; + if (strcmp + ((const char *) (parent->name), + "MD_Metadata") == 0) + ok_parent++; + } + if (ok_parent == 3) + { + /* only if <MD_Metadata> + / <identificationInfo> + / <MD_DataIdentification> + / <abstract> + */ + open = 1; + *open_tag = 1; + } + } + } + if (cur_node->type == XML_TEXT_NODE && *open_tag == 1 + && *char_string == 1) + { + if (cur_node->content != NULL) + { + int len = strlen ((const char *) cur_node->content); + char *buf = malloc (len + 1); + strcpy (buf, (const char *) cur_node->content); + if (*string) + free (*string); + *string = buf; + *count += 1; + } + } + + find_iso_abstract (cur_node->children, string, open_tag, char_string, + count); + if (open) + *open_tag = 0; + if (cs) + *char_string = 0; + } +} + +static void +find_bbox_coord (xmlNodePtr node, const char *name, double *coord, + int *open_tag, int *decimal, int *count) +{ +/* recursively scanning an EX_GeographicBoundingBox sub-tree */ + xmlNode *cur_node = NULL; + int open = 0; + int dec = 0; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (*open_tag == 1) + { + if (strcmp ((const char *) (cur_node->name), "Decimal") == + 0) + { + dec = 1; + *decimal = 1; + } + } + if (strcmp ((const char *) (cur_node->name), name) == 0) + { + open = 1; + *open_tag = 1; + } + } + if (cur_node->type == XML_TEXT_NODE && *open_tag == 1 + && *decimal == 1) + { + if (cur_node->content != NULL) + { + /* found a coord value */ + double value = atof ((const char *) cur_node->content); + *coord = value; + *count += 1; + } + } + + find_bbox_coord (cur_node->children, name, coord, open_tag, decimal, + count); + if (open) + *open_tag = 0; + if (dec) + *decimal = 0; + } +} + +static int +parse_bounding_box (xmlNodePtr node, double *minx, double *miny, double *maxx, + double *maxy) +{ +/* attempting to parse an EX_GeographicBoundingBox sub-tree */ + int ok_minx = 0; + int ok_miny = 0; + int ok_maxx = 0; + int ok_maxy = 0; + int open_tag; + int decimal; + int count; + double coord; + +/* retrieving minx - West */ + open_tag = 0; + decimal = 0; + count = 0; + find_bbox_coord (node, "westBoundLongitude", &coord, &open_tag, &decimal, + &count); + if (count == 1) + { + *minx = coord; + ok_minx = 1; + } + +/* retrieving maxx - East */ + open_tag = 0; + decimal = 0; + count = 0; + find_bbox_coord (node, "eastBoundLongitude", &coord, &open_tag, &decimal, + &count); + if (count == 1) + { + *maxx = coord; + ok_maxx = 1; + } + +/* retrieving miny - South */ + open_tag = 0; + decimal = 0; + count = 0; + find_bbox_coord (node, "southBoundLatitude", &coord, &open_tag, &decimal, + &count); + if (count == 1) + { + *miny = coord; + ok_miny = 1; + } + +/* retrieving maxy - North */ + open_tag = 0; + decimal = 0; + count = 0; + find_bbox_coord (node, "northBoundLatitude", &coord, &open_tag, &decimal, + &count); + if (count == 1) + { + *maxy = coord; + ok_maxy = 1; + } + + if (ok_minx && ok_miny && ok_maxx && ok_maxy) + { + /* ok, valid BBOX */ + return 1; + } + return 0; +} + +static void +find_iso_geometry (xmlNodePtr node, gaiaGeomCollPtr * geom) +{ +/* recursively scanning the DOM tree [geometry] */ + xmlNode *cur_node = NULL; + xmlNode *parent; + int ok_parent; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (strcmp + ((const char *) (cur_node->name), + "EX_GeographicBoundingBox") == 0) + { + ok_parent = 0; + parent = cur_node->parent; + if (parent) + { + if (strcmp + ((const char *) (parent->name), + "geographicElement") == 0) + ok_parent++; + } + if (ok_parent == 1) + { + parent = parent->parent; + if (strcmp + ((const char *) (parent->name), + "EX_Extent") == 0) + ok_parent++; + } + if (ok_parent == 2) + { + parent = parent->parent; + if (strcmp ((const char *) (parent->name), "extent") + == 0) + ok_parent++; + } + if (ok_parent == 3) + { + parent = parent->parent; + if (strcmp + ((const char *) (parent->name), + "MD_DataIdentification") == 0) + ok_parent++; + } + if (ok_parent == 4) + { + parent = parent->parent; + if (strcmp + ((const char *) (parent->name), + "identificationInfo") == 0) + ok_parent++; + } + if (ok_parent == 5) + { + parent = parent->parent; + if (strcmp + ((const char *) (parent->name), + "MD_Metadata") == 0) + ok_parent++; + } + if (ok_parent == 6) + { + /* only if <MD_Metadata> + / <identificationInfo> + / <MD_DataIdentification> + / <extent> + / <EX_Extent> + / <geographicElement> + / <EX_GeographicBoundingBox> + */ + double minx; + double maxx; + double miny; + double maxy; + if (parse_bounding_box + (cur_node, &minx, &miny, &maxx, &maxy)) + { + gaiaPolygonPtr pg; + gaiaRingPtr rng; + gaiaGeomCollPtr g = *geom; + if (g == NULL) + { + g = gaiaAllocGeomColl (); + g->Srid = 4326; + g->DeclaredType = GAIA_MULTIPOLYGON; + } + pg = gaiaAddPolygonToGeomColl (g, 5, 0); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, minx, miny); + gaiaSetPoint (rng->Coords, 1, maxx, miny); + gaiaSetPoint (rng->Coords, 2, maxx, maxy); + gaiaSetPoint (rng->Coords, 3, minx, maxy); + gaiaSetPoint (rng->Coords, 4, minx, miny); + *geom = g; + } + } + } + } + find_iso_geometry (cur_node->children, geom); + } +} + +static void +retrieve_iso_identifiers (xmlDocPtr xml_doc, char **fileIdentifier, + char **parentIdentifier, char **title, + char **abstract, unsigned char **geometry, + short *geometry_len) +{ +/* +/ attempting to retrieve the FileIdentifier, ParentIdentifier, +/ Title, Abstract and Geometry items from an ISO Metadata document +*/ + xmlNodePtr root = xmlDocGetRootElement (xml_doc); + int open_tag; + int char_string; + int count; + char *string; + gaiaGeomCollPtr geom = NULL; + + *fileIdentifier = NULL; + *parentIdentifier = NULL; + *title = NULL; + *abstract = NULL; + *geometry = NULL; + +/* attempting to retrieve the FileIdentifier item */ + open_tag = 0; + char_string = 0; + count = 0; + string = NULL; + find_iso_ids (root, "fileIdentifier", &string, &open_tag, &char_string, + &count); + if (string) + { + if (count == 1) + *fileIdentifier = string; + else + free (string); + } + +/* attempting to retrieve the ParentIdentifier item */ + open_tag = 0; + char_string = 0; + count = 0; + string = NULL; + find_iso_ids (root, "parentIdentifier", &string, &open_tag, &char_string, + &count); + if (string) + { + if (count == 1) + *parentIdentifier = string; + else + free (string); + } + +/* attempting to retrieve the Title item */ + open_tag = 0; + char_string = 0; + count = 0; + string = NULL; + find_iso_title (root, &string, &open_tag, &char_string, &count); + if (string) + { + if (count == 1) + *title = string; + else + free (string); + } + +/* attempting to retrieve the Abstract item */ + open_tag = 0; + char_string = 0; + count = 0; + string = NULL; + find_iso_abstract (root, &string, &open_tag, &char_string, &count); + if (string) + { + if (count == 1) + *abstract = string; + else + free (string); + } + +/* attempting to retrieve the Geometry item */ + open_tag = 0; + char_string = 0; + count = 0; + string = NULL; + find_iso_geometry (root, &geom); + if (geom) + { + int blob_len; + unsigned char *blob = NULL; + gaiaMbrGeometry (geom); + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_len); + gaiaFreeGeomColl (geom); + *geometry = blob; + *geometry_len = (short) blob_len; + } +} + +static void +find_sld_name (xmlNodePtr node, char **string) +{ +/* recursively scanning the DOM tree [name] */ + while (node) + { + if (node->type == XML_ELEMENT_NODE) + { + const char *name = (const char *) (node->name); + if (strcmp (name, "Name") == 0) + { + xmlNodePtr child = node->children; + if (child) + { + if (child->type == XML_TEXT_NODE) + { + int len; + const char *value = + (const char *) (child->content); + len = strlen (value); + if (*string != NULL) + free (*string); + *string = malloc (len + 1); + strcpy (*string, value); + } + } + } + } + node = node->next; + } +} + +static void +find_sld_title (xmlNodePtr node, char **string) +{ +/* recursively scanning the DOM tree [title] */ + while (node) + { + if (node->type == XML_ELEMENT_NODE) + { + const char *name = (const char *) (node->name); + if (strcmp (name, "Title") == 0) + { + xmlNodePtr child = node->children; + if (child) + { + if (child->type == XML_TEXT_NODE) + { + int len; + const char *value = + (const char *) (child->content); + len = strlen (value); + if (*string != NULL) + free (*string); + *string = malloc (len + 1); + strcpy (*string, value); + } + } + } + if (strcmp (name, "Description") == 0) + find_sld_title (node->children, string); + } + node = node->next; + } +} + +static void +find_sld_abstract (xmlNodePtr node, char **string) +{ +/* recursively scanning the DOM tree [abstract] */ + while (node) + { + if (node->type == XML_ELEMENT_NODE) + { + const char *name = (const char *) (node->name); + if (strcmp (name, "Abstract") == 0) + { + xmlNodePtr child = node->children; + if (child) + { + if (child->type == XML_TEXT_NODE) + { + int len; + const char *value = + (const char *) (child->content); + len = strlen (value); + if (*string != NULL) + free (*string); + *string = malloc (len + 1); + strcpy (*string, value); + } + } + } + if (strcmp (name, "Description") == 0) + find_sld_abstract (node->children, string); + } + node = node->next; + } +} + +static void +retrieve_sld_identifiers (xmlDocPtr xml_doc, char **name, char **title, + char **abstract) +{ +/* +/ attempting to retrieve the Name, Title and Abstract items +/ from an SLD Style document +*/ + xmlNodePtr root = xmlDocGetRootElement (xml_doc); + char *string; + const char *xname = (const char *) (root->name); + + *name = NULL; + *title = NULL; + *abstract = NULL; + + if (xname != NULL) + { + if (strcmp (xname, "StyledLayerDescriptor") != 0) + return; + } + +/* attempting to retrieve the Name item */ + string = NULL; + find_sld_name (root->children, &string); + if (string) + *name = string; + +/* attempting to retrieve the Title item */ + string = NULL; + find_sld_title (root->children, &string); + if (string) + *title = string; + +/* attempting to retrieve the Abstract item */ + string = NULL; + find_sld_abstract (root->children, &string); + if (string) + *abstract = string; +} + +static void +find_sld_se_name (xmlNodePtr node, char **string, int *style, int *rule) +{ +/* recursively scanning the DOM tree [name] */ + int is_style = 0; + int is_rule = 0; + while (node) + { + if (node->type == XML_ELEMENT_NODE) + { + const char *name = (const char *) (node->name); + if (strcmp (name, "FeatureTypeStyle") == 0 + || strcmp (name, "CoverageStyle") == 0) + { + is_style = 1; + *style = 1; + } + if (strcmp (name, "Rule") == 0) + { + is_rule = 1; + *rule = 1; + } + if (strcmp (name, "Name") == 0) + { + if (*style == 1 && *rule == 0) + { + xmlNodePtr child = node->children; + if (child) + { + if (child->type == XML_TEXT_NODE) + { + int len; + const char *value = + (const char *) (child->content); + len = strlen (value); + if (*string != NULL) + free (*string); + *string = malloc (len + 1); + strcpy (*string, value); + } + } + } + } + } + + find_sld_se_name (node->children, string, style, rule); + if (is_style) + *style = 0; + if (is_rule) + *rule = 0; + node = node->next; + } +} + +static void +find_sld_se_title (xmlNodePtr node, char **string, int *style, int *rule) +{ +/* recursively scanning the DOM tree [title] */ + int is_style = 0; + int is_rule = 0; + while (node) + { + if (node->type == XML_ELEMENT_NODE) + { + const char *name = (const char *) (node->name); + if (strcmp (name, "FeatureTypeStyle") == 0 + || strcmp (name, "CoverageStyle") == 0) + { + is_style = 1; + *style = 1; + } + if (strcmp (name, "Rule") == 0) + { + is_rule = 1; + *rule = 1; + } + if (strcmp (name, "Title") == 0) + { + if (*style == 1 && *rule == 0) + { + xmlNodePtr child = node->children; + if (child) + { + if (child->type == XML_TEXT_NODE) + { + int len; + const char *value = + (const char *) (child->content); + len = strlen (value); + if (*string != NULL) + free (*string); + *string = malloc (len + 1); + strcpy (*string, value); + } + } + } + } + } + + find_sld_se_title (node->children, string, style, rule); + if (is_style) + *style = 0; + if (is_rule) + *rule = 0; + node = node->next; + } +} + +static void +find_sld_se_abstract (xmlNodePtr node, char **string, int *style, int *rule) +{ +/* recursively scanning the DOM tree [abstract] */ + int is_style = 0; + int is_rule = 0; + while (node) + { + if (node->type == XML_ELEMENT_NODE) + { + const char *name = (const char *) (node->name); + if (strcmp (name, "FeatureTypeStyle") == 0 + || strcmp (name, "CoverageStyle") == 0) + { + is_style = 1; + *style = 1; + } + if (strcmp (name, "Rule") == 0) + { + is_rule = 1; + *rule = 1; + } + if (strcmp (name, "Abstract") == 0) + { + if (*style == 1 && *rule == 0) + { + xmlNodePtr child = node->children; + if (child) + { + if (child->type == XML_TEXT_NODE) + { + int len; + const char *value = + (const char *) (child->content); + len = strlen (value); + if (*string != NULL) + free (*string); + *string = malloc (len + 1); + strcpy (*string, value); + } + } + } + } + } + + find_sld_se_abstract (node->children, string, style, rule); + if (is_style) + *style = 0; + if (is_rule) + *rule = 0; + node = node->next; + } +} + +static void +retrieve_sld_se_identifiers (xmlDocPtr xml_doc, char **name, char **title, + char **abstract) +{ +/* +/ attempting to retrieve the Name, Title and Abstract items +/ from an SLD/SE Style document +*/ + xmlNodePtr root = xmlDocGetRootElement (xml_doc); + int style; + int rule; + char *string; + const char *xname = (const char *) (root->name); + + *name = NULL; + *title = NULL; + *abstract = NULL; + +/* attempting to retrieve the Name item */ + style = 0; + rule = 0; + string = NULL; + if (xname != NULL) + { + if (strcmp (xname, "PointSymbolizer") == 0 + || strcmp (xname, "LineSymbolizer") == 0 + || strcmp (xname, "PolygonSymbolizer") == 0 + || strcmp (xname, "TextSymbolizer") == 0 + || strcmp (xname, "RasterSymbolizer") == 0) + style = 1; + } + find_sld_se_name (root, &string, &style, &rule); + if (string) + *name = string; + +/* attempting to retrieve the Title item */ + style = 0; + rule = 0; + string = NULL; + if (xname != NULL) + { + if (strcmp (xname, "PointSymbolizer") == 0 + || strcmp (xname, "LineSymbolizer") == 0 + || strcmp (xname, "PolygonSymbolizer") == 0 + || strcmp (xname, "TextSymbolizer") == 0 + || strcmp (xname, "RasterSymbolizer") == 0) + style = 1; + } + find_sld_se_title (root, &string, &style, &rule); + if (string) + *title = string; + +/* attempting to retrieve the Abstract item */ + style = 0; + rule = 0; + string = NULL; + if (xname != NULL) + { + if (strcmp (xname, "PointSymbolizer") == 0 + || strcmp (xname, "LineSymbolizer") == 0 + || strcmp (xname, "PolygonSymbolizer") == 0 + || strcmp (xname, "TextSymbolizer") == 0 + || strcmp (xname, "RasterSymbolizer") == 0) + style = 1; + } + find_sld_se_abstract (root, &string, &style, &rule); + if (string) + *abstract = string; +} + +GAIAGEO_DECLARE void +gaiaXmlToBlob (const void *p_cache, const unsigned char *xml, int xml_len, + int compressed, const char *schemaURI, unsigned char **result, + int *size, char **parsing_errors, + char **schema_validation_errors) +{ +/* attempting to build an XmlBLOB buffer */ + xmlDocPtr xml_doc; + xmlDocPtr schema_doc; + xmlSchemaPtr schema; + xmlSchemaParserCtxtPtr parser_ctxt; + xmlSchemaValidCtxtPtr valid_ctxt; + int is_iso_metadata = 0; + int is_sld_se_vector_style = 0; + int is_sld_se_raster_style = 0; + int is_sld_style = 0; + int is_svg = 0; + int len; + int zip_len; + short uri_len = 0; + short fileid_len = 0; + short parentid_len = 0; + short name_len = 0; + short title_len = 0; + short abstract_len = 0; + short geometry_len = 0; + char *fileIdentifier = NULL; + char *parentIdentifier = NULL; + char *name = NULL; + char *title = NULL; + char *abstract = NULL; + unsigned char *geometry = NULL; + uLong crc; + Bytef *zip_buf; + unsigned char *buf; + unsigned char *ptr; + unsigned char flags = 0x00; + int endian_arch = gaiaEndianArch (); + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + gaiaOutBufferPtr parsingBuf = NULL; + gaiaOutBufferPtr schemaValidationBuf = NULL; + xmlGenericErrorFunc silentError = NULL; + xmlGenericErrorFunc parsingError = NULL; + xmlGenericErrorFunc schemaError = NULL; + if (is_valid_cache (cache)) + { + parsingBuf = (gaiaOutBufferPtr) (cache->xmlParsingErrors); + schemaValidationBuf = + (gaiaOutBufferPtr) (cache->xmlSchemaValidationErrors); + parsingError = (xmlGenericErrorFunc) spliteParsingError; + schemaError = (xmlGenericErrorFunc) spliteSchemaValidationError; + spliteResetXmlErrors (cache); + } + + *result = NULL; + *size = 0; + if (parsing_errors) + *parsing_errors = NULL; + if (schema_validation_errors) + *schema_validation_errors = NULL; + if (xml == NULL) + return; + + xmlSetGenericErrorFunc (NULL, silentError); + + if (schemaURI != NULL) + { + if (splite_xmlSchemaCacheFind + (cache, schemaURI, &schema_doc, &parser_ctxt, &schema)) + ; + else + { + /* preparing the Schema */ + xmlSetGenericErrorFunc (cache, schemaError); + schema_doc = xmlReadFile ((const char *) schemaURI, NULL, 0); + if (schema_doc == NULL) + { + spatialite_e ("unable to load the Schema\n"); + if (schema_validation_errors) + *schema_validation_errors = + schemaValidationBuf->Buffer; + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return; + } + parser_ctxt = xmlSchemaNewDocParserCtxt (schema_doc); + if (parser_ctxt == NULL) + { + spatialite_e ("unable to prepare the Schema Context\n"); + xmlFreeDoc (schema_doc); + if (schema_validation_errors) + *schema_validation_errors = + schemaValidationBuf->Buffer; + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return; + } + schema = xmlSchemaParse (parser_ctxt); + if (schema == NULL) + { + spatialite_e ("invalid Schema\n"); + xmlFreeDoc (schema_doc); + if (schema_validation_errors) + *schema_validation_errors = + schemaValidationBuf->Buffer; + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return; + } + splite_xmlSchemaCacheInsert (cache, schemaURI, schema_doc, + parser_ctxt, schema); + } + } + +/* testing if the XMLDocument is well-formed */ + xmlSetGenericErrorFunc (cache, parsingError); + xml_doc = + xmlReadMemory ((const char *) xml, xml_len, "noname.xml", NULL, 0); + if (xml_doc == NULL) + { + /* parsing error; not a well-formed XML */ + spatialite_e ("XML parsing error\n"); + if (parsing_errors && parsingBuf) + *parsing_errors = parsingBuf->Buffer; + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return; + } + if (parsing_errors && parsingBuf) + *parsing_errors = parsingBuf->Buffer; + + if (schemaURI != NULL) + { + /* Schema validation */ + xmlSetGenericErrorFunc (cache, schemaError); + valid_ctxt = xmlSchemaNewValidCtxt (schema); + if (valid_ctxt == NULL) + { + spatialite_e ("unable to prepare a validation context\n"); + xmlFreeDoc (xml_doc); + if (schema_validation_errors && schemaValidationBuf) + *schema_validation_errors = schemaValidationBuf->Buffer; + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return; + } + if (xmlSchemaValidateDoc (valid_ctxt, xml_doc) != 0) + { + spatialite_e ("Schema validation failed\n"); + xmlSchemaFreeValidCtxt (valid_ctxt); + xmlFreeDoc (xml_doc); + if (schema_validation_errors && schemaValidationBuf) + *schema_validation_errors = schemaValidationBuf->Buffer; + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return; + } + xmlSchemaFreeValidCtxt (valid_ctxt); + } + +/* testing for special cases: ISO Metadata, SLD/SE Styles and SVG */ + sniff_payload (xml_doc, &is_iso_metadata, &is_sld_se_vector_style, + &is_sld_se_raster_style, &is_sld_style, &is_svg); + if (is_iso_metadata) + retrieve_iso_identifiers (xml_doc, &fileIdentifier, + &parentIdentifier, &title, &abstract, + &geometry, &geometry_len); + if (is_sld_style) + retrieve_sld_identifiers (xml_doc, &name, &title, &abstract); + else if (is_sld_se_vector_style || is_sld_se_raster_style) + retrieve_sld_se_identifiers (xml_doc, &name, &title, &abstract); + xmlFreeDoc (xml_doc); + + if (compressed) + { + /* compressing the XML payload */ + uLong zLen = compressBound (xml_len); + zip_buf = malloc (zLen); + if (compress (zip_buf, &zLen, (const Bytef *) xml, (uLong) xml_len) != + Z_OK) + { + /* compression error */ + spatialite_e ("XmlBLOB DEFLATE compress error\n"); + free (zip_buf); + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return; + } + zip_len = (int) zLen; + } + else + zip_len = xml_len; + +/* reporting errors */ + if (parsing_errors && parsingBuf) + *parsing_errors = parsingBuf->Buffer; + if (schema_validation_errors && schemaValidationBuf) + *schema_validation_errors = schemaValidationBuf->Buffer; + +/* computing the XmlBLOB size */ + len = 39; /* fixed header-footer size */ + if (schemaURI) + uri_len = strlen ((const char *) schemaURI); + if (fileIdentifier) + fileid_len = strlen ((const char *) fileIdentifier); + if (parentIdentifier) + parentid_len = strlen ((const char *) parentIdentifier); + if (name) + name_len = strlen ((const char *) name); + if (title) + title_len = strlen ((const char *) title); + if (abstract) + abstract_len = strlen ((const char *) abstract); + len += zip_len; + len += uri_len; + len += fileid_len; + len += parentid_len; + len += name_len; + len += title_len; + len += abstract_len; + len += geometry_len; + buf = malloc (len); + *buf = GAIA_XML_START; /* START signature */ + flags |= GAIA_XML_LITTLE_ENDIAN; + if (compressed) + flags |= GAIA_XML_COMPRESSED; + if (schemaURI != NULL) + flags |= GAIA_XML_VALIDATED; + if (is_iso_metadata) + flags |= GAIA_XML_ISO_METADATA; + if (is_sld_se_vector_style) + flags |= GAIA_XML_SLD_SE_VECTOR_STYLE; + if (is_sld_se_raster_style) + flags |= GAIA_XML_SLD_SE_RASTER_STYLE; + if (is_sld_style) + flags |= GAIA_XML_SLD_STYLE; + if (is_svg) + flags |= GAIA_XML_SVG; + *(buf + 1) = flags; /* XmlBLOB flags */ + *(buf + 2) = GAIA_XML_HEADER; /* HEADER signature */ + gaiaExport32 (buf + 3, xml_len, 1, endian_arch); /* the uncompressed XMLDocument size */ + gaiaExport32 (buf + 7, zip_len, 1, endian_arch); /* the compressed XMLDocument size */ + gaiaExport16 (buf + 11, uri_len, 1, endian_arch); /* the SchemaURI length in bytes */ + *(buf + 13) = GAIA_XML_SCHEMA; /* SCHEMA signature */ + ptr = buf + 14; + if (schemaURI) + { + /* the SchemaURI */ + memcpy (ptr, schemaURI, uri_len); + ptr += uri_len; + } + gaiaExport16 (ptr, fileid_len, 1, endian_arch); /* the FileIdentifier length in bytes */ + ptr += 2; + *ptr = GAIA_XML_FILEID; /* FileIdentifier signature */ + ptr++; + if (fileIdentifier) + { + /* the FileIdentifier */ + memcpy (ptr, fileIdentifier, fileid_len); + free (fileIdentifier); + ptr += fileid_len; + } + gaiaExport16 (ptr, parentid_len, 1, endian_arch); /* the ParentIdentifier length in bytes */ + ptr += 2; + *ptr = GAIA_XML_PARENTID; /* ParentIdentifier signature */ + ptr++; + if (parentIdentifier) + { + /* the ParentIdentifier */ + memcpy (ptr, parentIdentifier, parentid_len); + free (parentIdentifier); + ptr += parentid_len; + } + gaiaExport16 (ptr, name_len, 1, endian_arch); /* the Name length in bytes */ + ptr += 2; + *ptr = GAIA_XML_NAME; /* Title signature */ + ptr++; + if (name) + { + /* the Name */ + memcpy (ptr, name, name_len); + free (name); + ptr += name_len; + } + gaiaExport16 (ptr, title_len, 1, endian_arch); /* the Title length in bytes */ + ptr += 2; + *ptr = GAIA_XML_TITLE; /* Title signature */ + ptr++; + if (title) + { + /* the Title */ + memcpy (ptr, title, title_len); + free (title); + ptr += title_len; + } + gaiaExport16 (ptr, abstract_len, 1, endian_arch); /* the Abstract length in bytes */ + ptr += 2; + *ptr = GAIA_XML_ABSTRACT; /* Abstract signature */ + ptr++; + if (abstract) + { + /* the Abstract */ + memcpy (ptr, abstract, abstract_len); + free (abstract); + ptr += abstract_len; + } + gaiaExport16 (ptr, geometry_len, 1, endian_arch); /* the Geometry length in bytes */ + ptr += 2; + *ptr = GAIA_XML_GEOMETRY; /* Geometry signature */ + ptr++; + if (geometry) + { + /* the Geometry */ + memcpy (ptr, geometry, geometry_len); + free (geometry); + ptr += geometry_len; + } + *ptr = GAIA_XML_PAYLOAD; /* PAYLOAD signature */ + ptr++; + if (compressed) + { + /* the compressed XML payload */ + memcpy (ptr, zip_buf, zip_len); + free (zip_buf); + ptr += zip_len; + } + else + { + /* the uncompressed XML payload */ + memcpy (ptr, xml, xml_len); + ptr += xml_len; + } + *ptr = GAIA_XML_CRC32; /* CRC32 signature */ + ptr++; +/* computing the CRC32 */ + crc = crc32 (0L, buf, ptr - buf); + gaiaExportU32 (ptr, crc, 1, endian_arch); /* the CRC32 */ + ptr += 4; + *ptr = GAIA_XML_END; /* END signature */ + + *result = buf; + *size = len; + xmlSetGenericErrorFunc ((void *) stderr, NULL); +} + +GAIAGEO_DECLARE void +gaiaXmlBlobCompression (const unsigned char *blob, + int in_size, int compressed, + unsigned char **result, int *out_size) +{ +/* Return another XmlBLOB buffer compressed / uncompressed */ + int in_compressed = 0; + int little_endian = 0; + unsigned char flag; + int in_xml_len; + int in_zip_len; + short uri_len; + short fileid_len; + short parentid_len; + short name_len; + short title_len; + short abstract_len; + short geometry_len; + int out_xml_len; + int out_zip_len; + uLong crc; + Bytef *zip_buf; + int len; + char *schemaURI; + char *fileIdentifier; + char *parentIdentifier; + char *name; + char *title; + char *abstract; + unsigned char *geometry; + int is_iso_metadata = 0; + int is_sld_se_vector_style = 0; + int is_sld_se_raster_style = 0; + int is_sld_style = 0; + int is_svg = 0; + unsigned char *xml; + unsigned char *buf; + unsigned char *ptr; + unsigned char flags; + int legacy_blob = 0; + int endian_arch = gaiaEndianArch (); + + *result = NULL; + *out_size = 0; +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, in_size)) + return; /* cannot be an XmlBLOB */ + if (*(blob + 2) == GAIA_XML_LEGACY_HEADER) + legacy_blob = 1; + flag = *(blob + 1); + flag = *(blob + 1); + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + if ((flag & GAIA_XML_COMPRESSED) == GAIA_XML_COMPRESSED) + in_compressed = 1; + if ((flag & GAIA_XML_ISO_METADATA) == GAIA_XML_ISO_METADATA) + is_iso_metadata = 1; + if ((flag & GAIA_XML_SLD_SE_VECTOR_STYLE) == GAIA_XML_SLD_SE_VECTOR_STYLE) + is_sld_se_vector_style = 1; + if ((flag & GAIA_XML_SLD_SE_RASTER_STYLE) == GAIA_XML_SLD_SE_RASTER_STYLE) + is_sld_se_raster_style = 1; + if ((flag & GAIA_XML_SLD_STYLE) == GAIA_XML_SLD_STYLE) + is_sld_style = 1; + if ((flag & GAIA_XML_SVG) == GAIA_XML_SVG) + is_svg = 1; + in_xml_len = gaiaImport32 (blob + 3, little_endian, endian_arch); + in_zip_len = gaiaImport32 (blob + 7, little_endian, endian_arch); + uri_len = gaiaImport16 (blob + 11, little_endian, endian_arch); + ptr = (unsigned char *) blob + 14; + if (uri_len) + { + schemaURI = (char *) ptr; + ptr += uri_len; + } + else + { + schemaURI = NULL; + } + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3; + if (fileid_len) + { + fileIdentifier = (char *) ptr; + ptr += fileid_len; + } + else + { + fileIdentifier = NULL; + } + parentid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3; + if (parentid_len) + { + parentIdentifier = (char *) ptr; + ptr += parentid_len; + } + else + { + parentIdentifier = NULL; + } + if (!legacy_blob) + { + name_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3; + if (name_len) + { + name = (char *) ptr; + ptr += name_len; + } + else + { + name = NULL; + } + } + else + { + name_len = 0; + name = NULL; + } + title_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3; + if (title_len) + { + title = (char *) ptr; + ptr += title_len; + } + else + { + title = NULL; + } + abstract_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3; + if (abstract_len) + { + abstract = (char *) ptr; + ptr += abstract_len; + } + else + { + abstract = NULL; + } + geometry_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3; + if (geometry_len) + { + geometry = (unsigned char *) ptr; + ptr += geometry_len; + } + else + { + geometry = NULL; + } + ptr++; + + if (in_compressed == compressed) + { + /* unchanged compression */ + out_xml_len = in_xml_len; + out_zip_len = in_zip_len; + zip_buf = (unsigned char *) ptr; + } + else if (compressed) + { + /* compressing the XML payload */ + uLong zLen; + out_xml_len = in_xml_len; + zLen = compressBound (out_xml_len); + xml = (unsigned char *) ptr; + zip_buf = malloc (zLen); + if (compress + (zip_buf, &zLen, (const Bytef *) xml, + (uLong) out_xml_len) != Z_OK) + { + /* compression error */ + spatialite_e ("XmlBLOB DEFLATE compress error\n"); + free (zip_buf); + return; + } + out_zip_len = (int) zLen; + } + else + { + /* unzipping the XML payload */ + uLong refLen = in_xml_len; + const Bytef *in = ptr; + xml = malloc (in_xml_len + 1); + if (uncompress (xml, &refLen, in, in_zip_len) != Z_OK) + { + /* uncompress error */ + spatialite_e ("XmlBLOB DEFLATE uncompress error\n"); + free (xml); + return; + } + *(xml + in_xml_len) = '\0'; + out_xml_len = in_xml_len; + out_zip_len = out_xml_len; + } + +/* computing the XmlBLOB size */ + len = 39; /* fixed header-footer size */ + len += out_zip_len; + len += uri_len; + len += fileid_len; + len += parentid_len; + len += name_len; + len += title_len; + len += abstract_len; + len += geometry_len; + buf = malloc (len); + *buf = GAIA_XML_START; /* START signature */ + flags = 0x00; + flags |= GAIA_XML_LITTLE_ENDIAN; + if (compressed) + flags |= GAIA_XML_COMPRESSED; + if (schemaURI != NULL) + flags |= GAIA_XML_VALIDATED; + if (is_iso_metadata) + flags |= GAIA_XML_ISO_METADATA; + if (is_sld_se_vector_style) + flags |= GAIA_XML_SLD_SE_VECTOR_STYLE; + if (is_sld_se_raster_style) + flags |= GAIA_XML_SLD_SE_RASTER_STYLE; + if (is_sld_style) + flags |= GAIA_XML_SLD_STYLE; + if (is_svg) + flags |= GAIA_XML_SVG; + *(buf + 1) = flags; /* XmlBLOB flags */ + *(buf + 2) = GAIA_XML_HEADER; /* HEADER signature */ + gaiaExport32 (buf + 3, out_xml_len, 1, endian_arch); /* the uncompressed XMLDocument size */ + gaiaExport32 (buf + 7, out_zip_len, 1, endian_arch); /* the compressed XMLDocument size */ + gaiaExport16 (buf + 11, uri_len, 1, endian_arch); /* the SchemaURI length in bytes */ + *(buf + 13) = GAIA_XML_SCHEMA; /* SCHEMA signature */ + ptr = buf + 14; + if (schemaURI) + { + /* the SchemaURI */ + memcpy (ptr, schemaURI, uri_len); + ptr += uri_len; + } + gaiaExport16 (ptr, fileid_len, 1, endian_arch); /* the FileIdentifier length in bytes */ + ptr += 2; + *ptr = GAIA_XML_FILEID; /* FileIdentifier signature */ + ptr++; + if (fileIdentifier) + { + /* the FileIdentifier */ + memcpy (ptr, fileIdentifier, fileid_len); + ptr += fileid_len; + } + gaiaExport16 (ptr, parentid_len, 1, endian_arch); /* the ParentIdentifier length in bytes */ + ptr += 2; + *ptr = GAIA_XML_PARENTID; /* ParentIdentifier signature */ + ptr++; + if (parentIdentifier) + { + /* the ParentIdentifier */ + memcpy (ptr, parentIdentifier, parentid_len); + ptr += parentid_len; + } + gaiaExport16 (ptr, name_len, 1, endian_arch); /* the Name length in bytes */ + ptr += 2; + *ptr = GAIA_XML_NAME; /* Name signature */ + ptr++; + if (name) + { + /* the Name */ + memcpy (ptr, name, name_len); + ptr += name_len; + } + gaiaExport16 (ptr, title_len, 1, endian_arch); /* the Title length in bytes */ + ptr += 2; + *ptr = GAIA_XML_TITLE; /* Title signature */ + ptr++; + if (title) + { + /* the Title */ + memcpy (ptr, title, title_len); + ptr += title_len; + } + gaiaExport16 (ptr, abstract_len, 1, endian_arch); /* the Abstract length in bytes */ + ptr += 2; + *ptr = GAIA_XML_ABSTRACT; /* Abstract signature */ + ptr++; + if (abstract) + { + /* the Abstract */ + memcpy (ptr, abstract, abstract_len); + ptr += abstract_len; + } + gaiaExport16 (ptr, geometry_len, 1, endian_arch); /* the Geometry length in bytes */ + ptr += 2; + *ptr = GAIA_XML_GEOMETRY; /* Geometry signature */ + ptr++; + if (geometry) + { + /* the Geometry */ + memcpy (ptr, geometry, geometry_len); + ptr += geometry_len; + } + + *ptr = GAIA_XML_PAYLOAD; /* PAYLOAD signature */ + ptr++; + if (in_compressed == compressed) + { + /* the unchanged XML payload */ + memcpy (ptr, zip_buf, out_zip_len); + ptr += out_zip_len; + } + else if (compressed) + { + /* the compressed XML payload */ + memcpy (ptr, zip_buf, out_zip_len); + free (zip_buf); + ptr += out_zip_len; + } + else + { + /* the uncompressed XML payload */ + memcpy (ptr, xml, out_xml_len); + free (xml); + ptr += out_xml_len; + } + *ptr = GAIA_XML_CRC32; /* CRC32 signature */ + ptr++; +/* computing the CRC32 */ + crc = crc32 (0L, buf, ptr - buf); + gaiaExportU32 (ptr, crc, 1, endian_arch); /* the CRC32 */ + ptr += 4; + *ptr = GAIA_XML_END; /* END signature */ + + *result = buf; + *out_size = len; +} + +static int +is_valid_legacy_xml_blob (const unsigned char *blob, int blob_size) +{ +/* Checks if a BLOB actually is a valid LEGACY XmlBLOB buffer */ + int little_endian = 0; + unsigned char flag; + const unsigned char *ptr; + short uri_len; + short fileid_len; + short parentid_len; + short title_len; + short abstract_len; + short geometry_len; + uLong crc; + uLong refCrc; + int endian_arch = gaiaEndianArch (); + +/* validity check */ + if (blob_size < 36) + return 0; /* cannot be an XmlBLOB */ + if (*blob != GAIA_XML_START) + return 0; /* failed to recognize START signature */ + if (*(blob + (blob_size - 1)) != GAIA_XML_END) + return 0; /* failed to recognize END signature */ + if (*(blob + (blob_size - 6)) != GAIA_XML_CRC32) + return 0; /* failed to recognize CRC32 signature */ + if (*(blob + 2) != GAIA_XML_LEGACY_HEADER) + return 0; /* failed to recognize HEADER signature */ + if (*(blob + 13) != GAIA_XML_SCHEMA) + return 0; /* failed to recognize SCHEMA signature */ + flag = *(blob + 1); + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + ptr = blob + 11; + uri_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 2; + if (*ptr != GAIA_XML_SCHEMA) + return 0; + ptr++; + ptr += uri_len; + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 2; + if (*ptr != GAIA_XML_FILEID) + return 0; + ptr++; + ptr += fileid_len; + parentid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 2; + if (*ptr != GAIA_XML_PARENTID) + return 0; + ptr++; + ptr += parentid_len; + title_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 2; + if (*ptr != GAIA_XML_TITLE) + return 0; + ptr++; + ptr += title_len; + abstract_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 2; + if (*ptr != GAIA_XML_ABSTRACT) + return 0; + ptr++; + ptr += abstract_len; + geometry_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 2; + if (*ptr != GAIA_XML_GEOMETRY) + return 0; + ptr++; + ptr += geometry_len; + if (*ptr != GAIA_XML_PAYLOAD) + return 0; + +/* verifying the CRC32 */ + crc = crc32 (0L, blob, blob_size - 5); + refCrc = gaiaImportU32 (blob + blob_size - 5, little_endian, endian_arch); + if (crc != refCrc) + return 0; + + return 1; +} + +GAIAGEO_DECLARE int +gaiaIsValidXmlBlob (const unsigned char *blob, int blob_size) +{ +/* Checks if a BLOB actually is a valid XmlBLOB buffer */ + int little_endian = 0; + unsigned char flag; + const unsigned char *ptr; + short uri_len; + short fileid_len; + short parentid_len; + short name_len; + short title_len; + short abstract_len; + short geometry_len; + uLong crc; + uLong refCrc; + int endian_arch = gaiaEndianArch (); + + if (blob_size > 3) + { + /* legacy format */ + if (*(blob + 2) == GAIA_XML_LEGACY_HEADER) + return is_valid_legacy_xml_blob (blob, blob_size); + } + +/* validity check */ + if (blob_size < 39) + return 0; /* cannot be an XmlBLOB */ + if (*blob != GAIA_XML_START) + return 0; /* failed to recognize START signature */ + if (*(blob + (blob_size - 1)) != GAIA_XML_END) + return 0; /* failed to recognize END signature */ + if (*(blob + (blob_size - 6)) != GAIA_XML_CRC32) + return 0; /* failed to recognize CRC32 signature */ + if (*(blob + 2) != GAIA_XML_HEADER) + return 0; /* failed to recognize HEADER signature */ + if (*(blob + 13) != GAIA_XML_SCHEMA) + return 0; /* failed to recognize SCHEMA signature */ + flag = *(blob + 1); + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + ptr = blob + 11; + uri_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 2; + if (*ptr != GAIA_XML_SCHEMA) + return 0; + ptr++; + ptr += uri_len; + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 2; + if (*ptr != GAIA_XML_FILEID) + return 0; + ptr++; + ptr += fileid_len; + parentid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 2; + if (*ptr != GAIA_XML_PARENTID) + return 0; + ptr++; + ptr += parentid_len; + name_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 2; + if (*ptr != GAIA_XML_NAME) + return 0; + ptr++; + ptr += name_len; + title_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 2; + if (*ptr != GAIA_XML_TITLE) + return 0; + ptr++; + ptr += title_len; + abstract_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 2; + if (*ptr != GAIA_XML_ABSTRACT) + return 0; + ptr++; + ptr += abstract_len; + geometry_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 2; + if (*ptr != GAIA_XML_GEOMETRY) + return 0; + ptr++; + ptr += geometry_len; + if (*ptr != GAIA_XML_PAYLOAD) + return 0; + +/* verifying the CRC32 */ + crc = crc32 (0L, blob, blob_size - 5); + refCrc = gaiaImportU32 (blob + blob_size - 5, little_endian, endian_arch); + if (crc != refCrc) + return 0; + + return 1; +} + +static void +find_xml_namespaces (xmlNode * node, struct gaiaxml_ns_list *list) +{ +/* recursively identifying all XML Namespaces from DOM-nodes */ + struct _xmlAttr *attr; + while (node) + { + xmlNs *ns = node->ns; + if (ns != NULL) + splite_add_namespace (list, ns->type, ns->prefix, ns->href); + attr = node->properties; + while (attr != NULL) + { + ns = attr->ns; + if (ns != NULL) + splite_add_namespace (list, ns->type, ns->prefix, ns->href); + attr = attr->next; + } + find_xml_namespaces (node->children, list); + node = node->next; + } +} + +static void +xml_out (gaiaOutBufferPtr buf, const xmlChar * str) +{ +/* clean XML output */ + const xmlChar *p = str; + while (*p != '\0') + { + if (*p == '>') + gaiaAppendToOutBuffer (buf, ">"); + else if (*p == '<') + gaiaAppendToOutBuffer (buf, "<"); + else if (*p == '&') + gaiaAppendToOutBuffer (buf, "&"); + else if (*p == '"') + gaiaAppendToOutBuffer (buf, """); + else if (*p == '\'') + gaiaAppendToOutBuffer (buf, "'"); + else + { + char xx[2]; + xx[0] = *p; + xx[1] = '\0'; + gaiaAppendToOutBuffer (buf, xx); + } + p++; + } +} + +static void +format_xml (xmlNode * root, xmlNode * node, struct gaiaxml_ns_list *list, + gaiaOutBufferPtr buf, int indent, int *level) +{ +/* recursively printing the XML-DOM nodes */ + struct _xmlAttr *attr; + xmlNode *child; + xmlNs *ns; + const xmlChar *namespace; + char *indenting = NULL; + const char no = '\0'; + const char *pre; + int tab; + int width; + int has_children; + int has_text; + if (!indent) + pre = &no; + else + { + if (indent <= 8) + tab = indent; + else + tab = 8; + width = tab * *level; + indenting = malloc (width + 2); + *indenting = '\n'; + memset (indenting + 1, ' ', width); + *(indenting + width + 1) = '\0'; + pre = indenting; + } + + while (node) + { + if (node->type == XML_COMMENT_NODE) + { + /* comment node */ + if (*pre != '\0') + gaiaAppendToOutBuffer (buf, "<!--"); + else + gaiaAppendToOutBuffer (buf, "\n<!--"); + xml_out (buf, node->content); + gaiaAppendToOutBuffer (buf, "-->"); + } + if (node->type == XML_ELEMENT_NODE) + { + if (*pre != '\0') + gaiaAppendToOutBuffer (buf, pre); + gaiaAppendToOutBuffer (buf, "<"); + ns = node->ns; + namespace = NULL; + if (ns != NULL) + namespace = ns->prefix; + if (namespace) + { + xml_out (buf, namespace); + gaiaAppendToOutBuffer (buf, ":"); + } + xml_out (buf, node->name); + if (node == root) + { + /* Namespaces */ + struct gaiaxml_namespace *p_ns = list->first; + while (p_ns != NULL) + { + if (p_ns->prefix == NULL) + gaiaAppendToOutBuffer (buf, " xmlns=\""); + else + { + gaiaAppendToOutBuffer (buf, " xmlns:"); + xml_out (buf, p_ns->prefix); + gaiaAppendToOutBuffer (buf, "=\""); + } + xml_out (buf, p_ns->href); + gaiaAppendToOutBuffer (buf, "\""); + p_ns = p_ns->next; + } + } + attr = node->properties; + while (attr != NULL) + { + /* attributes */ + if (attr->type == XML_ATTRIBUTE_NODE) + { + xmlNode *text = attr->children; + gaiaAppendToOutBuffer (buf, " "); + ns = attr->ns; + namespace = NULL; + if (ns != NULL) + namespace = ns->prefix; + if (namespace) + { + xml_out (buf, namespace); + gaiaAppendToOutBuffer (buf, ":"); + } + xml_out (buf, attr->name); + gaiaAppendToOutBuffer (buf, "=\""); + if (text != NULL) + { + if (text->type == XML_TEXT_NODE) + xml_out (buf, text->content); + } + gaiaAppendToOutBuffer (buf, "\""); + } + attr = attr->next; + } + has_children = 0; + has_text = 0; + child = node->children; + while (child) + { + if (child->type == XML_ELEMENT_NODE + || child->type == XML_COMMENT_NODE) + has_children = 1; + if (child->type == XML_TEXT_NODE) + has_text++; + child = child->next; + } + if (has_children) + has_text = 0; + + if (!has_text && !has_children) + gaiaAppendToOutBuffer (buf, " />"); + + if (has_text) + { + child = node->children; + if (child->type == XML_TEXT_NODE) + { + /* text node */ + gaiaAppendToOutBuffer (buf, ">"); + xml_out (buf, child->content); + gaiaAppendToOutBuffer (buf, "</"); + ns = node->ns; + namespace = NULL; + if (ns != NULL) + namespace = ns->prefix; + if (namespace) + { + xml_out (buf, namespace); + gaiaAppendToOutBuffer (buf, ":"); + } + xml_out (buf, node->name); + gaiaAppendToOutBuffer (buf, ">"); + } + } + if (has_children) + { + /* recursively expanding all children */ + gaiaAppendToOutBuffer (buf, ">"); + *level += 1; + format_xml (root, node->children, list, buf, indent, + level); + *level -= 1; + if (*pre != '\0') + gaiaAppendToOutBuffer (buf, pre); + gaiaAppendToOutBuffer (buf, "</"); + ns = node->ns; + namespace = NULL; + if (ns != NULL) + namespace = ns->prefix; + if (namespace) + { + xml_out (buf, namespace); + gaiaAppendToOutBuffer (buf, ":"); + } + xml_out (buf, node->name); + gaiaAppendToOutBuffer (buf, ">"); + } + } + node = node->next; + } + if (indenting) + free (indenting); +} + +static int +gaiaXmlFormat (xmlDocPtr xml_doc, xmlChar ** out, int *out_len, + const xmlChar * encoding, int indent) +{ +/* reformatting an XML Document - properly indenting */ + int level = 0; + int ret; + gaiaOutBuffer buf; + const xmlChar *version = xml_doc->version; + xmlNode *root = xmlDocGetRootElement (xml_doc); + struct gaiaxml_ns_list *list = splite_create_ns_list (); + + gaiaOutBufferInitialize (&buf); + if (encoding != NULL) + { + gaiaAppendToOutBuffer (&buf, "<?xml version=\""); + gaiaAppendToOutBuffer (&buf, (const char *) version); + gaiaAppendToOutBuffer (&buf, "\" encoding=\""); + gaiaAppendToOutBuffer (&buf, (const char *) encoding); + gaiaAppendToOutBuffer (&buf, "\"?>"); + } + else + { + gaiaAppendToOutBuffer (&buf, "<?xml version=\""); + gaiaAppendToOutBuffer (&buf, (const char *) version); + gaiaAppendToOutBuffer (&buf, "\"?>"); + } + + find_xml_namespaces (root, list); + format_xml (root, root, list, &buf, indent, &level); + splite_free_ns_list (list); + + if (buf.Error == 0 && buf.Buffer != NULL) + { + xmlChar *output; + /* terminating the last line */ + gaiaAppendToOutBuffer (&buf, "\n"); + output = malloc (buf.WriteOffset + 1); + memcpy (output, buf.Buffer, buf.WriteOffset); + /* NULL-terminated string */ + *(output + buf.WriteOffset) = '\0'; + *out = output; + *out_len = buf.WriteOffset + 1; + ret = 1; + } + else + { + *out = NULL; + *out_len = 0; + ret = 0; + } + gaiaOutBufferReset (&buf); + return ret; +} + +GAIAGEO_DECLARE char * +gaiaXmlTextFromBlob (const unsigned char *blob, int blob_size, int indent) +{ +/* attempting to extract an XMLDocument from within an XmlBLOB buffer */ + int compressed = 0; + int little_endian = 0; + unsigned char flag; + const unsigned char *ptr; + int xml_len; + int zip_len; + short uri_len; + short fileid_len; + short parentid_len; + short name_len = 0; + short title_len; + short abstract_len; + short geometry_len; + unsigned char *xml; + xmlDocPtr xml_doc; + xmlChar *out; + int out_len; + xmlChar *encoding = NULL; + void *cvt; + char *utf8; + int err; + int legacy_blob = 0; + int endian_arch = gaiaEndianArch (); + xmlGenericErrorFunc silentError = (xmlGenericErrorFunc) spliteSilentError; + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return NULL; /* cannot be an XmlBLOB */ + if (*(blob + 2) == GAIA_XML_LEGACY_HEADER) + legacy_blob = 1; + flag = *(blob + 1); + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + if ((flag & GAIA_XML_COMPRESSED) == GAIA_XML_COMPRESSED) + compressed = 1; + xml_len = gaiaImport32 (blob + 3, little_endian, endian_arch); + zip_len = gaiaImport32 (blob + 7, little_endian, endian_arch); + ptr = blob + 11; + uri_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + uri_len; + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + fileid_len; + parentid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + parentid_len; + if (!legacy_blob) + { + name_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + name_len; + } + title_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + title_len; + abstract_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + abstract_len; + geometry_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + geometry_len; + ptr++; + + if (compressed) + { + /* unzipping the XML payload */ + uLong refLen = xml_len; + const Bytef *in = ptr; + xml = malloc (xml_len + 1); + if (uncompress (xml, &refLen, in, zip_len) != Z_OK) + { + /* uncompress error */ + spatialite_e ("XmlBLOB DEFLATE uncompress error\n"); + free (xml); + return NULL; + } + *(xml + xml_len) = '\0'; + } + else + { + /* just copying the uncompressed XML payload */ + xml = malloc (xml_len + 1); + memcpy (xml, ptr, xml_len); + *(xml + xml_len) = '\0'; + } +/* retrieving the XMLDocument encoding */ + xmlSetGenericErrorFunc (NULL, silentError); + xml_doc = + xmlReadMemory ((const char *) xml, xml_len, "noname.xml", NULL, 0); + if (xml_doc == NULL) + { + /* parsing error; not a well-formed XML */ + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return NULL; + } + if (xml_doc->encoding) + { + /* using the internal character enconding */ + int enclen = (int) strlen ((const char *) xml_doc->encoding); + encoding = malloc (enclen + 1); + strcpy ((char *) encoding, (const char *) (xml_doc->encoding)); + } + else + { + /* no declared encoding: defaulting to UTF-8 */ + encoding = malloc (6); + strcpy ((char *) encoding, "UTF-8"); + } + + if (indent < 0) + { + /* just returning the XMLDocument "as is" */ + xmlFreeDoc (xml_doc); + cvt = gaiaCreateUTF8Converter ((const char *) encoding); + free (encoding); + if (cvt == NULL) + { + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return NULL; + } + utf8 = gaiaConvertToUTF8 (cvt, (const char *) xml, xml_len, &err); + free (xml); + gaiaFreeUTF8Converter (cvt); + if (utf8 && !err) + { + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return utf8; + } + if (utf8) + free (utf8); + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return NULL; + } + +/* properly indenting the XMLDocument */ + gaiaXmlFormat (xml_doc, &out, &out_len, encoding, indent); + free (xml); + xmlFreeDoc (xml_doc); + free (encoding); + if (out) + { + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return (char *) out; + } + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return NULL; +} + +GAIAGEO_DECLARE void +gaiaXmlFromBlob (const unsigned char *blob, int blob_size, int indent, + unsigned char **result, int *res_size) +{ +/* attempting to extract an XMLDocument from within an XmlBLOB buffer */ + int compressed = 0; + int little_endian = 0; + unsigned char flag; + const unsigned char *ptr; + int xml_len; + int zip_len; + short uri_len; + short fileid_len; + short parentid_len; + short name_len; + short title_len; + short abstract_len; + short geometry_len; + unsigned char *xml; + xmlDocPtr xml_doc; + xmlChar *out; + int out_len; + int legacy_blob = 0; + int endian_arch = gaiaEndianArch (); + xmlGenericErrorFunc silentError = (xmlGenericErrorFunc) spliteSilentError; + *result = NULL; + *res_size = 0; + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return; /* cannot be an XmlBLOB */ + if (*(blob + 2) == GAIA_XML_LEGACY_HEADER) + legacy_blob = 1; + flag = *(blob + 1); + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + if ((flag & GAIA_XML_COMPRESSED) == GAIA_XML_COMPRESSED) + compressed = 1; + xml_len = gaiaImport32 (blob + 3, little_endian, endian_arch); + zip_len = gaiaImport32 (blob + 7, little_endian, endian_arch); + ptr = blob + 11; + uri_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + uri_len; + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + fileid_len; + parentid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + parentid_len; + if (!legacy_blob) + { + name_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + name_len; + } + title_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + title_len; + abstract_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + abstract_len; + geometry_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + geometry_len; + ptr++; + + if (compressed) + { + /* unzipping the XML payload */ + uLong refLen = xml_len; + const Bytef *in = ptr; + xml = malloc (xml_len + 1); + if (uncompress (xml, &refLen, in, zip_len) != Z_OK) + { + /* uncompress error */ + spatialite_e ("XmlBLOB DEFLATE uncompress error\n"); + free (xml); + return; + } + *(xml + xml_len) = '\0'; + } + else + { + /* just copying the uncompressed XML payload */ + xml = malloc (xml_len + 1); + memcpy (xml, ptr, xml_len); + *(xml + xml_len) = '\0'; + } + if (indent < 0) + { + /* just returning the XMLDocument "as is" */ + *result = xml; + *res_size = xml_len; + return; + } + +/* properly indenting the XMLDocument */ + xmlSetGenericErrorFunc (NULL, silentError); + xml_doc = + xmlReadMemory ((const char *) xml, xml_len, "noname.xml", NULL, 0); + if (xml_doc == NULL) + { + /* parsing error; not a well-formed XML */ + *result = xml; + *res_size = xml_len; + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return; + } + gaiaXmlFormat (xml_doc, &out, &out_len, xml_doc->encoding, indent); + free (xml); + xmlFreeDoc (xml_doc); + *result = out; + *res_size = out_len; + xmlSetGenericErrorFunc ((void *) stderr, NULL); +} + +GAIAGEO_DECLARE int +gaiaXmlLoad (const void *p_cache, const char *path_or_url, + unsigned char **result, int *size, char **parsing_errors) +{ +/* attempting to load an external XML Document into a BLOB buffer */ + unsigned char *out; + int len; + xmlDocPtr xml_doc; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + gaiaOutBufferPtr parsingBuf = NULL; + xmlGenericErrorFunc parsingError = NULL; + if (is_valid_cache (cache)) + { + parsingBuf = (gaiaOutBufferPtr) (cache->xmlParsingErrors); + parsingError = (xmlGenericErrorFunc) spliteParsingError; + spliteResetXmlErrors (cache); + } + + *result = NULL; + *size = 0; + if (parsing_errors) + *parsing_errors = NULL; + if (path_or_url == NULL) + return 0; + +/* testing if the XMLDocument is well-formed */ + xmlSetGenericErrorFunc (cache, parsingError); + xml_doc = xmlReadFile (path_or_url, NULL, 0); + if (xml_doc == NULL) + { + /* parsing error; not a well-formed XML */ + spatialite_e ("XML parsing error\n"); + if (parsing_errors && parsingBuf) + *parsing_errors = parsingBuf->Buffer; + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 0; + } + if (parsing_errors && parsingBuf) + *parsing_errors = parsingBuf->Buffer; + +/* exporting the XML Document into a BLOB */ + xmlDocDumpFormatMemory (xml_doc, &out, &len, 0); + xmlFreeDoc (xml_doc); + *result = out; + *size = len; + xmlSetGenericErrorFunc ((void *) stderr, NULL); + if (out == NULL) + return 0; + return 1; +} + +GAIAGEO_DECLARE int +gaiaXmlStore (const unsigned char *blob, int size, const char *path, int indent) +{ +/* attempting to store an XmlBLOB Document into an external file */ + FILE *fl; + int wr; + unsigned char *result = NULL; + int res_size; + gaiaXmlFromBlob (blob, size, indent, &result, &res_size); + if (result == NULL) + return 0; + +/* exporting the XML Document into an external file */ + fl = fopen (path, "wb"); + if (fl == NULL) + { + spatialite_e ("Unable to open \"%s\"\n", path); + return 0; + } + wr = fwrite (result, 1, res_size, fl); + if (wr != res_size) + { + spatialite_e + ("I/O error: written %d bytes into \"%s\", expected %d\n", wr, + path, res_size); + fclose (fl); + return 0; + } + fclose (fl); + return 1; +} + +GAIAGEO_DECLARE int +gaiaIsCompressedXmlBlob (const unsigned char *blob, int blob_size) +{ +/* Checks if a valid XmlBLOB buffer is compressed or not */ + int compressed = 0; + unsigned char flag; + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return -1; /* cannot be an XmlBLOB */ + flag = *(blob + 1); + if ((flag & GAIA_XML_COMPRESSED) == GAIA_XML_COMPRESSED) + compressed = 1; + return compressed; +} + +GAIAGEO_DECLARE int +gaiaIsSchemaValidatedXmlBlob (const unsigned char *blob, int blob_size) +{ +/* Checks if a valid XmlBLOB buffer has succesfully passed a formal Schema validation or not */ + int validated = 0; + unsigned char flag; + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return -1; /* cannot be an XmlBLOB */ + flag = *(blob + 1); + if ((flag & GAIA_XML_VALIDATED) == GAIA_XML_VALIDATED) + validated = 1; + return validated; +} + +GAIAGEO_DECLARE int +gaiaIsIsoMetadataXmlBlob (const unsigned char *blob, int blob_size) +{ +/* Checks if a valid XmlBLOB buffer does actually contains an ISO Metadata or not */ + int iso_metadata = 0; + unsigned char flag; + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return -1; /* cannot be an XmlBLOB */ + flag = *(blob + 1); + if ((flag & GAIA_XML_ISO_METADATA) == GAIA_XML_ISO_METADATA) + iso_metadata = 1; + return iso_metadata; +} + +GAIAGEO_DECLARE int +gaiaIsSldSeVectorStyleXmlBlob (const unsigned char *blob, int blob_size) +{ +/* Checks if a valid XmlBLOB buffer does actually contains an SLD/SE Vector Style or not */ + int sld_se_style = 0; + unsigned char flag; + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return -1; /* cannot be an XmlBLOB */ + flag = *(blob + 1); + if ((flag & GAIA_XML_SLD_SE_VECTOR_STYLE) == GAIA_XML_SLD_SE_VECTOR_STYLE) + sld_se_style = 1; + return sld_se_style; +} + +GAIAGEO_DECLARE int +gaiaIsSldSeRasterStyleXmlBlob (const unsigned char *blob, int blob_size) +{ +/* Checks if a valid XmlBLOB buffer does actually contains an SLD/SE Raster Style or not */ + int sld_se_style = 0; + unsigned char flag; + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return -1; /* cannot be an XmlBLOB */ + flag = *(blob + 1); + if ((flag & GAIA_XML_SLD_SE_RASTER_STYLE) == GAIA_XML_SLD_SE_RASTER_STYLE) + sld_se_style = 1; + return sld_se_style; +} + +GAIAGEO_DECLARE int +gaiaIsSldStyleXmlBlob (const unsigned char *blob, int blob_size) +{ +/* Checks if a valid XmlBLOB buffer does actually contains an SLD Style or not */ + int sld_style = 0; + unsigned char flag; + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return -1; /* cannot be an XmlBLOB */ + flag = *(blob + 1); + if ((flag & GAIA_XML_SLD_STYLE) == GAIA_XML_SLD_STYLE) + sld_style = 1; + return sld_style; +} + +GAIAGEO_DECLARE int +gaiaIsSvgXmlBlob (const unsigned char *blob, int blob_size) +{ +/* Checks if a valid XmlBLOB buffer does actually contains an SLD/SE Style or not */ + int svg = 0; + unsigned char flag; + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return -1; /* cannot be an XmlBLOB */ + flag = *(blob + 1); + if ((flag & GAIA_XML_SVG) == GAIA_XML_SVG) + svg = 1; + return svg; +} + +GAIAGEO_DECLARE int +gaiaXmlBlobGetDocumentSize (const unsigned char *blob, int blob_size) +{ +/* Return the XMLDocument size (in bytes) from a valid XmlBLOB buffer */ + int little_endian = 0; + unsigned char flag; + int xml_len; + int endian_arch = gaiaEndianArch (); + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return -1; /* cannot be an XmlBLOB */ + flag = *(blob + 1); + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + xml_len = gaiaImport32 (blob + 3, little_endian, endian_arch); + return xml_len; +} + +GAIAGEO_DECLARE char * +gaiaXmlBlobGetSchemaURI (const unsigned char *blob, int blob_size) +{ +/* Return the SchemaURI from a valid XmlBLOB buffer */ + int little_endian = 0; + unsigned char flag; + short uri_len; + char *uri; + int endian_arch = gaiaEndianArch (); + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return NULL; /* cannot be an XmlBLOB */ + flag = *(blob + 1); + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + uri_len = gaiaImport16 (blob + 11, little_endian, endian_arch); + if (!uri_len) + return NULL; + + uri = malloc (uri_len + 1); + memcpy (uri, blob + 14, uri_len); + *(uri + uri_len) = '\0'; + return uri; +} + +GAIAGEO_DECLARE char * +gaiaXmlGetInternalSchemaURI (const void *p_cache, const unsigned char *xml, + int xml_len) +{ +/* Return the internally defined SchemaURI from a valid XmlDocument */ + xmlDocPtr xml_doc; + char *uri = NULL; + xmlXPathContextPtr xpathCtx; + xmlXPathObjectPtr xpathObj; + xmlGenericErrorFunc silentError = (xmlGenericErrorFunc) spliteSilentError; + +/* retrieving the XMLDocument internal SchemaURI (if any) */ + xmlSetGenericErrorFunc (NULL, silentError); + xml_doc = + xmlReadMemory ((const char *) xml, xml_len, "noname.xml", NULL, 0); + if (xml_doc == NULL) + { + /* parsing error; not a well-formed XML */ + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return NULL; + } + + if (vxpath_eval_expr + (p_cache, xml_doc, "/*/@xsi:schemaLocation", &xpathCtx, &xpathObj)) + { + /* attempting first to extract xsi:schemaLocation */ + xmlNodeSetPtr nodeset = xpathObj->nodesetval; + xmlNodePtr node; + int num_nodes = (nodeset) ? nodeset->nodeNr : 0; + if (num_nodes == 1) + { + node = nodeset->nodeTab[0]; + if (node->type == XML_ATTRIBUTE_NODE) + { + if (node->children != NULL) + { + if (node->children->content != NULL) + { + const char *str = + (const char *) (node->children->content); + const char *ptr = str; + int i; + int len = strlen (str); + for (i = len - 1; i >= 0; i--) + { + if (*(str + i) == ' ') + { + /* last occurrence of SPACE [namespace/schema separator] */ + ptr = str + i + 1; + break; + } + } + len = strlen (ptr); + uri = malloc (len + 1); + strcpy (uri, ptr); + } + } + } + } + if (uri != NULL) + xmlXPathFreeContext (xpathCtx); + xmlXPathFreeObject (xpathObj); + } + if (uri == NULL) + { + /* checking for xsi:noNamespaceSchemaLocation */ + if (vxpath_eval_expr + (p_cache, xml_doc, "/*/@xsi:noNamespaceSchemaLocation", &xpathCtx, + &xpathObj)) + { + xmlNodeSetPtr nodeset = xpathObj->nodesetval; + xmlNodePtr node; + int num_nodes = (nodeset) ? nodeset->nodeNr : 0; + if (num_nodes == 1) + { + node = nodeset->nodeTab[0]; + if (node->type == XML_ATTRIBUTE_NODE) + { + if (node->children != NULL) + { + if (node->children->content != NULL) + { + int len = + strlen ((const char *) + node->children->content); + uri = malloc (len + 1); + strcpy (uri, + (const char *) node-> + children->content); + } + } + } + } + xmlXPathFreeContext (xpathCtx); + xmlXPathFreeObject (xpathObj); + } + } + + xmlFreeDoc (xml_doc); + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return uri; +} + +GAIAGEO_DECLARE char * +gaiaXmlBlobGetFileId (const unsigned char *blob, int blob_size) +{ +/* Return the FileIdentifier from a valid XmlBLOB buffer */ + int little_endian = 0; + unsigned char flag; + const unsigned char *ptr; + short uri_len; + short fileid_len; + char *file_identifier; + int endian_arch = gaiaEndianArch (); + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return NULL; /* cannot be an XmlBLOB */ + flag = *(blob + 1); + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + ptr = blob + 11; + uri_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + uri_len; + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + if (!fileid_len) + return NULL; + ptr += 3; + + file_identifier = malloc (fileid_len + 1); + memcpy (file_identifier, ptr, fileid_len); + *(file_identifier + fileid_len) = '\0'; + return file_identifier; +} + +GAIAGEO_DECLARE char * +gaiaXmlBlobGetParentId (const unsigned char *blob, int blob_size) +{ +/* Return the ParentIdentifier from a valid XmlBLOB buffer */ + int little_endian = 0; + unsigned char flag; + const unsigned char *ptr; + short uri_len; + short fileid_len; + short parentid_len; + char *parent_identifier; + int endian_arch = gaiaEndianArch (); + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return NULL; /* cannot be an XmlBLOB */ + flag = *(blob + 1); + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + ptr = blob + 11; + uri_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + uri_len; + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + fileid_len; + parentid_len = gaiaImport16 (ptr, little_endian, endian_arch); + if (!parentid_len) + return NULL; + ptr += 3; + + parent_identifier = malloc (parentid_len + 1); + memcpy (parent_identifier, ptr, parentid_len); + *(parent_identifier + parentid_len) = '\0'; + return parent_identifier; +} + +static xmlNodePtr +find_iso_node (xmlNodePtr root, const char *name) +{ +/* scanning the Root node [fileIdentifier or parentIdentifier] */ + xmlNodePtr nodeId = NULL; + xmlNodePtr node; + + for (node = root->children; node; node = node->next) + { + if (node->type == XML_ELEMENT_NODE) + { + const char *xname = (const char *) (node->name); + if (strcmp (xname, name) == 0) + { + nodeId = node; + break; + } + } + } + if (nodeId == NULL) + return NULL; + for (node = nodeId->children; node; node = node->next) + { + if (node->type == XML_ELEMENT_NODE) + { + const char *xname = (const char *) (node->name); + if (strcmp (xname, "CharacterString") == 0) + return node; + } + } + return NULL; +} + +static int +setIsoId (xmlDocPtr xml_doc, const char *node_name, const char *identifier, + unsigned char **out_blob, int *out_len) +{ +/* attempting to change an ISO Id */ + xmlNodePtr node; + xmlNodePtr new_node; + xmlNodePtr text; + xmlNodePtr old_node; + xmlChar *buf; + int len; + *out_blob = NULL; + *out_len = 0; + node = find_iso_node (xmlDocGetRootElement (xml_doc), node_name); + if (node == NULL) + return 0; +/* replacing the existing XML Node */ + new_node = xmlNewNode (node->ns, node->name); + text = xmlNewText ((xmlChar *) identifier); + xmlAddChild (new_node, text); + old_node = xmlReplaceNode (node, new_node); + xmlFreeNode (old_node); + xmlDocDumpFormatMemory (xml_doc, &buf, &len, 0); + if (buf == NULL) + return 0; + *out_blob = buf; + *out_len = len; + return 1; +} + +GAIAGEO_DECLARE int +gaiaXmlBlobSetFileId (const void *p_cache, const unsigned char *blob, + int blob_size, const char *identifier, + unsigned char **new_blob, int *new_size) +{ +/* Return a new XmlBLOB buffer by replacing the FileId value */ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + int compressed = 0; + int little_endian = 0; + unsigned char flag; + const unsigned char *ptr; + short uri_len; + short fileid_len; + short parentid_len; + int xml_len; + int zip_len; + int name_len; + short title_len; + short abstract_len; + short geometry_len; + char *schemaURI = NULL; + unsigned char *xml; + xmlDocPtr xml_doc; + unsigned char *out_blob; + int out_len; + int legacy_blob = 0; + int endian_arch = gaiaEndianArch (); + xmlGenericErrorFunc silentError = (xmlGenericErrorFunc) spliteSilentError; + + *new_blob = NULL; + *new_size = 0; +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return 0; /* cannot be an XmlBLOB */ + if (*(blob + 2) == GAIA_XML_LEGACY_HEADER) + legacy_blob = 1; + flag = *(blob + 1); + if ((flag & GAIA_XML_ISO_METADATA) == GAIA_XML_ISO_METADATA) + ; + else + return 0; /* not an ISO Metadata XmlBLOB */ + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + if ((flag & GAIA_XML_COMPRESSED) == GAIA_XML_COMPRESSED) + compressed = 1; + xml_len = gaiaImport32 (blob + 3, little_endian, endian_arch); + zip_len = gaiaImport32 (blob + 7, little_endian, endian_arch); + ptr = blob + 11; + uri_len = gaiaImport16 (ptr, little_endian, endian_arch); + if (uri_len > 0) + { + schemaURI = malloc (uri_len + 1); + memcpy (schemaURI, blob + 14, uri_len); + *(schemaURI + uri_len) = '\0'; + } + ptr += 3 + uri_len; + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + fileid_len; + parentid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + parentid_len; + if (!legacy_blob) + { + name_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + name_len; + } + title_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + title_len; + abstract_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + abstract_len; + geometry_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + geometry_len; + ptr++; + + if (compressed) + { + /* unzipping the XML payload */ + uLong refLen = xml_len; + const Bytef *in = ptr; + xml = malloc (xml_len + 1); + if (uncompress (xml, &refLen, in, zip_len) != Z_OK) + { + /* uncompress error */ + spatialite_e ("XmlBLOB DEFLATE uncompress error\n"); + free (xml); + return 0; + } + *(xml + xml_len) = '\0'; + } + else + { + /* just copying the uncompressed XML payload */ + xml = malloc (xml_len + 1); + memcpy (xml, ptr, xml_len); + *(xml + xml_len) = '\0'; + } +/* loading the XMLDocument */ + xmlSetGenericErrorFunc (NULL, silentError); + xml_doc = + xmlReadMemory ((const char *) xml, xml_len, "noname.xml", NULL, 0); + if (xml_doc == NULL) + { + /* parsing error; not a well-formed XML */ + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 0; + } +/* replacing the FileId value */ + setIsoId (xml_doc, "fileIdentifier", identifier, &out_blob, &out_len); + free (xml); + xmlFreeDoc (xml_doc); + if (out_blob) + { + gaiaXmlToBlob (cache, out_blob, out_len, compressed, schemaURI, + new_blob, new_size, NULL, NULL); +#ifdef __MINGW32__ +/* MinGW is unable to statically link libxml2 if xmlFree() is declared */ + free (out_blob); +#else + xmlFree (out_blob); +#endif + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 1; + } + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 0; +} + +GAIAGEO_DECLARE int +gaiaXmlBlobSetParentId (const void *p_cache, const unsigned char *blob, + int blob_size, const char *identifier, + unsigned char **new_blob, int *new_size) +{ +/* Return a new XmlBLOB buffer by replacing the ParentId value */ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + int compressed = 0; + int little_endian = 0; + unsigned char flag; + const unsigned char *ptr; + short uri_len; + short fileid_len; + short parentid_len; + int xml_len; + int zip_len; + short name_len; + short title_len; + short abstract_len; + short geometry_len; + char *schemaURI = NULL; + unsigned char *xml; + xmlDocPtr xml_doc; + unsigned char *out_blob; + int out_len; + int legacy_blob = 0; + int endian_arch = gaiaEndianArch (); + xmlGenericErrorFunc silentError = (xmlGenericErrorFunc) spliteSilentError; + + *new_blob = NULL; + *new_size = 0; +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return 0; /* cannot be an XmlBLOB */ + if (*(blob + 2) == GAIA_XML_LEGACY_HEADER) + legacy_blob = 1; + flag = *(blob + 1); + if ((flag & GAIA_XML_ISO_METADATA) == GAIA_XML_ISO_METADATA) + ; + else + return 0; /* not an ISO Metadata XmlBLOB */ + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + if ((flag & GAIA_XML_COMPRESSED) == GAIA_XML_COMPRESSED) + compressed = 1; + xml_len = gaiaImport32 (blob + 3, little_endian, endian_arch); + zip_len = gaiaImport32 (blob + 7, little_endian, endian_arch); + ptr = blob + 11; + uri_len = gaiaImport16 (ptr, little_endian, endian_arch); + if (uri_len > 0) + { + schemaURI = malloc (uri_len + 1); + memcpy (schemaURI, blob + 14, uri_len); + *(schemaURI + uri_len) = '\0'; + } + ptr += 3 + uri_len; + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + fileid_len; + parentid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + parentid_len; + if (!legacy_blob) + { + name_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + name_len; + } + title_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + title_len; + abstract_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + abstract_len; + geometry_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + geometry_len; + ptr++; + + if (compressed) + { + /* unzipping the XML payload */ + uLong refLen = xml_len; + const Bytef *in = ptr; + xml = malloc (xml_len + 1); + if (uncompress (xml, &refLen, in, zip_len) != Z_OK) + { + /* uncompress error */ + spatialite_e ("XmlBLOB DEFLATE uncompress error\n"); + free (xml); + return 0; + } + *(xml + xml_len) = '\0'; + } + else + { + /* just copying the uncompressed XML payload */ + xml = malloc (xml_len + 1); + memcpy (xml, ptr, xml_len); + *(xml + xml_len) = '\0'; + } +/* loading the XMLDocument */ + xmlSetGenericErrorFunc (NULL, silentError); + xml_doc = + xmlReadMemory ((const char *) xml, xml_len, "noname.xml", NULL, 0); + if (xml_doc == NULL) + { + /* parsing error; not a well-formed XML */ + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 0; + } +/* replacing the ParentId value */ + setIsoId (xml_doc, "parentIdentifier", identifier, &out_blob, &out_len); + free (xml); + xmlFreeDoc (xml_doc); + if (out_blob) + { + gaiaXmlToBlob (cache, out_blob, out_len, compressed, schemaURI, + new_blob, new_size, NULL, NULL); +#ifdef __MINGW32__ +/* MinGW is unable to statically link libxml2 if xmlFree() is declared */ + free (out_blob); +#else + xmlFree (out_blob); +#endif + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 1; + } + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 0; +} + +static xmlNodePtr +find_iso_sibling (xmlNodePtr root, const char *name) +{ +/* scanning the Root node [previous sibling] */ + xmlNodePtr node; + + for (node = root->children; node; node = node->next) + { + if (node->type == XML_ELEMENT_NODE) + { + const char *xname = (const char *) (node->name); + if (strcmp (xname, name) == 0) + return node; + } + } + return NULL; +} + +static int +addIsoId (xmlDocPtr xml_doc, const char *node_name, const char *identifier, + const char *ns_id, const char *uri_id, const char *ns_charstr, + const char *uri_charstr, unsigned char **out_blob, int *out_len) +{ +/* attempting to insert a new ISO Id */ + xmlNsPtr ns_id_ptr = NULL; + xmlNsPtr ns_charstr_ptr = NULL; + xmlNodePtr id_node; + xmlNodePtr charstr_node; + xmlNodePtr text; + xmlNodePtr root = xmlDocGetRootElement (xml_doc); + xmlNodePtr before = NULL; + xmlChar *buf; + int len; + *out_blob = NULL; + *out_len = 0; + if (find_iso_node (root, node_name)) + return 0; +/* retrieving the ID NameSpace */ + if (uri_id != NULL) + ns_id_ptr = xmlSearchNsByHref (xml_doc, root, (xmlChar *) uri_id); + if (ns_id_ptr == NULL) + ns_id_ptr = xmlSearchNs (xml_doc, root, (xmlChar *) ns_id); +/* inserting the "ID" XML Node */ + id_node = xmlNewNode (ns_id_ptr, (xmlChar *) node_name); + if (strcmp (node_name, "parentIdentifier") == 0) + { + /* attempting to identify the previous sibling */ + before = find_iso_sibling (root, "characterSet"); + if (before == NULL) + before = find_iso_sibling (root, "language"); + if (before == NULL) + before = find_iso_sibling (root, "fileIdentifier"); + } + if (before) + xmlAddNextSibling (before, id_node); + else + { + before = root->children; + if (before) + xmlAddPrevSibling (before, id_node); + else + xmlAddChild (root, id_node); + } + if (ns_id_ptr == NULL && ns_id != NULL && uri_id != NULL) + { + ns_id_ptr = xmlNewNs (root, (xmlChar *) uri_id, (xmlChar *) ns_id); + xmlSetNs (id_node, ns_id_ptr); + } +/* retrieving the CharacterString NameSpace */ + if (uri_charstr != NULL) + ns_charstr_ptr = + xmlSearchNsByHref (xml_doc, root, (xmlChar *) uri_charstr); + if (ns_charstr_ptr == NULL) + ns_charstr_ptr = xmlSearchNs (xml_doc, root, (xmlChar *) ns_charstr); +/* inserting the "CharacterString" XML Node */ + charstr_node = xmlNewNode (ns_charstr_ptr, (xmlChar *) "CharacterString"); + xmlAddChild (id_node, charstr_node); + if (ns_charstr_ptr == NULL && ns_charstr != NULL && uri_charstr != NULL) + { + ns_charstr_ptr = + xmlNewNs (root, (xmlChar *) uri_charstr, (xmlChar *) ns_charstr); + xmlSetNs (charstr_node, ns_charstr_ptr); + } + text = xmlNewText ((xmlChar *) identifier); + xmlAddChild (charstr_node, text); + xmlDocDumpFormatMemory (xml_doc, &buf, &len, 0); + if (buf == NULL) + return 0; + *out_blob = buf; + *out_len = len; + return 1; +} + +GAIAGEO_DECLARE int +gaiaXmlBlobAddFileId (const void *p_cache, const unsigned char *blob, + int blob_size, const char *identifier, const char *ns_id, + const char *uri_id, const char *ns_charstr, + const char *uri_charstr, unsigned char **new_blob, + int *new_size) +{ +/* Return a new XmlBLOB buffer by inserting a FileId value */ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + int compressed = 0; + int little_endian = 0; + unsigned char flag; + const unsigned char *ptr; + short uri_len; + short fileid_len; + short parentid_len; + int xml_len; + int zip_len; + short name_len; + short title_len; + short abstract_len; + short geometry_len; + char *schemaURI = NULL; + unsigned char *xml; + xmlDocPtr xml_doc; + unsigned char *out_blob; + int out_len; + int legacy_blob = 0; + int endian_arch = gaiaEndianArch (); + xmlGenericErrorFunc silentError = (xmlGenericErrorFunc) spliteSilentError; + + *new_blob = NULL; + *new_size = 0; +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return 0; /* cannot be an XmlBLOB */ + if (*(blob + 2) == GAIA_XML_LEGACY_HEADER) + legacy_blob = 1; + flag = *(blob + 1); + if ((flag & GAIA_XML_ISO_METADATA) == GAIA_XML_ISO_METADATA) + ; + else + return 0; /* not an ISO Metadata XmlBLOB */ + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + if ((flag & GAIA_XML_COMPRESSED) == GAIA_XML_COMPRESSED) + compressed = 1; + xml_len = gaiaImport32 (blob + 3, little_endian, endian_arch); + zip_len = gaiaImport32 (blob + 7, little_endian, endian_arch); + ptr = blob + 11; + uri_len = gaiaImport16 (ptr, little_endian, endian_arch); + if (uri_len > 0) + { + schemaURI = malloc (uri_len + 1); + memcpy (schemaURI, blob + 14, uri_len); + *(schemaURI + uri_len) = '\0'; + } + ptr += 3 + uri_len; + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + fileid_len; + parentid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + parentid_len; + if (!legacy_blob) + { + name_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + name_len; + } + title_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + title_len; + abstract_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + abstract_len; + geometry_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + geometry_len; + ptr++; + + if (compressed) + { + /* unzipping the XML payload */ + uLong refLen = xml_len; + const Bytef *in = ptr; + xml = malloc (xml_len + 1); + if (uncompress (xml, &refLen, in, zip_len) != Z_OK) + { + /* uncompress error */ + spatialite_e ("XmlBLOB DEFLATE uncompress error\n"); + free (xml); + return 0; + } + *(xml + xml_len) = '\0'; + } + else + { + /* just copying the uncompressed XML payload */ + xml = malloc (xml_len + 1); + memcpy (xml, ptr, xml_len); + *(xml + xml_len) = '\0'; + } +/* loading the XMLDocument */ + xmlSetGenericErrorFunc (NULL, silentError); + xml_doc = + xmlReadMemory ((const char *) xml, xml_len, "noname.xml", NULL, 0); + if (xml_doc == NULL) + { + /* parsing error; not a well-formed XML */ + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 0; + } +/* inserting the FileId value */ + addIsoId (xml_doc, "fileIdentifier", identifier, ns_id, uri_id, ns_charstr, + uri_charstr, &out_blob, &out_len); + free (xml); + xmlFreeDoc (xml_doc); + if (out_blob) + { + gaiaXmlToBlob (cache, out_blob, out_len, compressed, schemaURI, + new_blob, new_size, NULL, NULL); +#ifdef __MINGW32__ +/* MinGW is unable to statically link libxml2 if xmlFree() is declared */ + free (out_blob); +#else + xmlFree (out_blob); +#endif + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 1; + } + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 0; +} + +GAIAGEO_DECLARE int +gaiaXmlBlobAddParentId (const void *p_cache, const unsigned char *blob, + int blob_size, const char *identifier, + const char *ns_id, const char *uri_id, + const char *ns_charstr, const char *uri_charstr, + unsigned char **new_blob, int *new_size) +{ +/* Return a new XmlBLOB buffer by inserting a ParentId value */ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + int compressed = 0; + int little_endian = 0; + unsigned char flag; + const unsigned char *ptr; + short uri_len; + short fileid_len; + short parentid_len; + int xml_len; + int zip_len; + short name_len; + short title_len; + short abstract_len; + short geometry_len; + char *schemaURI = NULL; + unsigned char *xml; + xmlDocPtr xml_doc; + unsigned char *out_blob; + int out_len; + int legacy_blob = 0; + int endian_arch = gaiaEndianArch (); + xmlGenericErrorFunc silentError = (xmlGenericErrorFunc) spliteSilentError; + + *new_blob = NULL; + *new_size = 0; +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return 0; /* cannot be an XmlBLOB */ + if (*(blob + 2) == GAIA_XML_LEGACY_HEADER) + legacy_blob = 1; + flag = *(blob + 1); + if ((flag & GAIA_XML_ISO_METADATA) == GAIA_XML_ISO_METADATA) + ; + else + return 0; /* not an ISO Metadata XmlBLOB */ + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + if ((flag & GAIA_XML_COMPRESSED) == GAIA_XML_COMPRESSED) + compressed = 1; + xml_len = gaiaImport32 (blob + 3, little_endian, endian_arch); + zip_len = gaiaImport32 (blob + 7, little_endian, endian_arch); + ptr = blob + 11; + uri_len = gaiaImport16 (ptr, little_endian, endian_arch); + if (uri_len > 0) + { + schemaURI = malloc (uri_len + 1); + memcpy (schemaURI, blob + 14, uri_len); + *(schemaURI + uri_len) = '\0'; + } + ptr += 3 + uri_len; + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + fileid_len; + parentid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + parentid_len; + if (!legacy_blob) + { + name_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + name_len; + } + title_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + title_len; + abstract_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + abstract_len; + geometry_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + geometry_len; + ptr++; + + if (compressed) + { + /* unzipping the XML payload */ + uLong refLen = xml_len; + const Bytef *in = ptr; + xml = malloc (xml_len + 1); + if (uncompress (xml, &refLen, in, zip_len) != Z_OK) + { + /* uncompress error */ + spatialite_e ("XmlBLOB DEFLATE uncompress error\n"); + free (xml); + return 0; + } + *(xml + xml_len) = '\0'; + } + else + { + /* just copying the uncompressed XML payload */ + xml = malloc (xml_len + 1); + memcpy (xml, ptr, xml_len); + *(xml + xml_len) = '\0'; + } +/* loading the XMLDocument */ + xmlSetGenericErrorFunc (NULL, silentError); + xml_doc = + xmlReadMemory ((const char *) xml, xml_len, "noname.xml", NULL, 0); + if (xml_doc == NULL) + { + /* parsing error; not a well-formed XML */ + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 0; + } +/* inserting the ParentId value */ + addIsoId (xml_doc, "parentIdentifier", identifier, ns_id, uri_id, + ns_charstr, uri_charstr, &out_blob, &out_len); + free (xml); + xmlFreeDoc (xml_doc); + if (out_blob) + { + gaiaXmlToBlob (cache, out_blob, out_len, compressed, schemaURI, + new_blob, new_size, NULL, NULL); +#ifdef __MINGW32__ +/* MinGW is unable to statically link libxml2 if xmlFree() is declared */ + free (out_blob); +#else + xmlFree (out_blob); +#endif + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 1; + } + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 0; +} + +GAIAGEO_DECLARE char * +gaiaXmlBlobGetName (const unsigned char *blob, int blob_size) +{ +/* Return the Name from a valid XmlBLOB buffer */ + int little_endian = 0; + unsigned char flag; + const unsigned char *ptr; + short uri_len; + short fileid_len; + short parentid_len; + short name_len; + char *name; + int endian_arch = gaiaEndianArch (); + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return NULL; /* cannot be an XmlBLOB */ + if (*(blob + 2) == GAIA_XML_LEGACY_HEADER) + return NULL; + flag = *(blob + 1); + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + ptr = blob + 11; + uri_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + uri_len; + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + fileid_len; + parentid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + parentid_len; + name_len = gaiaImport16 (ptr, little_endian, endian_arch); + if (!name_len) + return NULL; + ptr += 3; + + name = malloc (name_len + 1); + memcpy (name, ptr, name_len); + *(name + name_len) = '\0'; + return name; +} + +GAIAGEO_DECLARE char * +gaiaXmlBlobGetTitle (const unsigned char *blob, int blob_size) +{ +/* Return the Title from a valid XmlBLOB buffer */ + int little_endian = 0; + unsigned char flag; + const unsigned char *ptr; + short uri_len; + short fileid_len; + short parentid_len; + short name_len; + short title_len; + char *title; + int legacy_blob = 0; + int endian_arch = gaiaEndianArch (); + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return NULL; /* cannot be an XmlBLOB */ + if (*(blob + 2) == GAIA_XML_LEGACY_HEADER) + legacy_blob = 1; + flag = *(blob + 1); + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + ptr = blob + 11; + uri_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + uri_len; + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + fileid_len; + parentid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + parentid_len; + if (!legacy_blob) + { + name_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + name_len; + } + title_len = gaiaImport16 (ptr, little_endian, endian_arch); + if (!title_len) + return NULL; + ptr += 3; + + title = malloc (title_len + 1); + memcpy (title, ptr, title_len); + *(title + title_len) = '\0'; + return title; +} + +GAIAGEO_DECLARE char * +gaiaXmlBlobGetAbstract (const unsigned char *blob, int blob_size) +{ +/* Return the Abstract from a valid XmlBLOB buffer */ + int little_endian = 0; + unsigned char flag; + const unsigned char *ptr; + short uri_len; + short fileid_len; + short parentid_len; + short name_len; + short title_len; + short abstract_len; + char *abstract; + int legacy_blob = 0; + int endian_arch = gaiaEndianArch (); + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return NULL; /* cannot be an XmlBLOB */ + if (*(blob + 2) == GAIA_XML_LEGACY_HEADER) + legacy_blob = 1; + flag = *(blob + 1); + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + ptr = blob + 11; + uri_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + uri_len; + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + fileid_len; + parentid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + parentid_len; + if (!legacy_blob) + { + name_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + name_len; + } + title_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + title_len; + abstract_len = gaiaImport16 (ptr, little_endian, endian_arch); + if (!abstract_len) + return NULL; + ptr += 3; + + abstract = malloc (abstract_len + 1); + memcpy (abstract, ptr, abstract_len); + *(abstract + abstract_len) = '\0'; + return abstract; +} + +GAIAGEO_DECLARE void +gaiaXmlBlobGetGeometry (const unsigned char *blob, int blob_size, + unsigned char **blob_geom, int *geom_size) +{ +/* Return the Geometry from a valid XmlBLOB buffer */ + int little_endian = 0; + unsigned char flag; + const unsigned char *ptr; + short uri_len; + short fileid_len; + short parentid_len; + short name_len; + short title_len; + short abstract_len; + short geometry_len; + unsigned char *geometry; + int legacy_blob = 0; + int endian_arch = gaiaEndianArch (); + + *blob_geom = NULL; + *geom_size = 0; + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return; /* cannot be an XmlBLOB */ + if (*(blob + 2) == GAIA_XML_LEGACY_HEADER) + legacy_blob = 1; + flag = *(blob + 1); + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + ptr = blob + 11; + uri_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + uri_len; + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + fileid_len; + parentid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + parentid_len; + if (!legacy_blob) + { + name_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + name_len; + } + title_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + title_len; + abstract_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + abstract_len; + geometry_len = gaiaImport16 (ptr, little_endian, endian_arch); + if (!geometry_len) + return; + ptr += 3; + + geometry = malloc (geometry_len); + memcpy (geometry, ptr, geometry_len); + *blob_geom = geometry; + *geom_size = geometry_len; +} + +GAIAGEO_DECLARE char * +gaiaXmlBlobGetEncoding (const unsigned char *blob, int blob_size) +{ +/* Return the Charset Encoding from a valid XmlBLOB buffer */ + int compressed = 0; + int little_endian = 0; + unsigned char flag; + const unsigned char *ptr; + int xml_len; + int zip_len; + short uri_len; + short fileid_len; + short parentid_len; + short name_len; + short title_len; + short abstract_len; + short geometry_len; + unsigned char *xml; + xmlDocPtr xml_doc; + char *encoding = NULL; + int legacy_blob = 0; + int endian_arch = gaiaEndianArch (); + xmlGenericErrorFunc silentError = (xmlGenericErrorFunc) spliteSilentError; + +/* validity check */ + if (!gaiaIsValidXmlBlob (blob, blob_size)) + return NULL; /* cannot be an XmlBLOB */ + if (*(blob + 2) == GAIA_XML_LEGACY_HEADER) + legacy_blob = 1; + flag = *(blob + 1); + if ((flag & GAIA_XML_LITTLE_ENDIAN) == GAIA_XML_LITTLE_ENDIAN) + little_endian = 1; + if ((flag & GAIA_XML_COMPRESSED) == GAIA_XML_COMPRESSED) + compressed = 1; + xml_len = gaiaImport32 (blob + 3, little_endian, endian_arch); + zip_len = gaiaImport32 (blob + 7, little_endian, endian_arch); + ptr = blob + 11; + uri_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + uri_len; + fileid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + fileid_len; + parentid_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + parentid_len; + if (!legacy_blob) + { + name_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + name_len; + } + title_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + title_len; + abstract_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + abstract_len; + geometry_len = gaiaImport16 (ptr, little_endian, endian_arch); + ptr += 3 + geometry_len; + ptr++; + if (compressed) + { + /* unzipping the XML payload */ + uLong refLen = xml_len; + const Bytef *in = ptr; + xml = malloc (xml_len + 1); + if (uncompress (xml, &refLen, in, zip_len) != Z_OK) + { + /* uncompress error */ + spatialite_e ("XmlBLOB DEFLATE uncompress error\n"); + free (xml); + return NULL; + } + *(xml + xml_len) = '\0'; + } + else + { + /* just copying the uncompressed XML payload */ + xml = malloc (xml_len + 1); + memcpy (xml, ptr, xml_len); + *(xml + xml_len) = '\0'; + } +/* retrieving the XMLDocument encoding */ + xmlSetGenericErrorFunc (NULL, silentError); + xml_doc = + xmlReadMemory ((const char *) xml, xml_len, "noname.xml", NULL, 0); + if (xml_doc == NULL) + { + /* parsing error; not a well-formed XML */ + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return NULL; + } + free (xml); + if (xml_doc->encoding) + { + /* using the internal character enconding */ + int enclen = strlen ((const char *) xml_doc->encoding); + encoding = malloc (enclen + 1); + strcpy (encoding, (const char *) xml_doc->encoding); + xmlFreeDoc (xml_doc); + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return encoding; + } + xmlFreeDoc (xml_doc); + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return NULL; +} + +GAIAGEO_DECLARE char * +gaia_libxml2_version (void) +{ +/* return the current LIBXML2 version */ + int len; + char *version; + const char *ver = LIBXML_DOTTED_VERSION; + len = strlen (ver); + version = malloc (len + 1); + strcpy (version, ver); + return version; +} + +#endif /* end LIBXML2: supporting XML documents */ diff --git a/src/spatialite/src/gaiageo/lemon/Ewkt.y b/src/spatialite/src/gaiageo/lemon/Ewkt.y new file mode 100644 index 0000000..a93df49 --- /dev/null +++ b/src/spatialite/src/gaiageo/lemon/Ewkt.y @@ -0,0 +1,852 @@ +/* + Ewkt.y -- EWKT parser - LEMON config + + version 2.4, 2011 May 14 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +// Tokens are void pointers (so we can cast them to whatever we want) +%token_type {void *} + +// Output to stderr when stack overflows +%stack_overflow { + spatialite_e( "Giving up. Parser stack overflow\n"); +} + +// Increase this number if necessary +%stack_size 1000000 + +// Header files to be included in Ewkt.c +%include { +} + +// Set the return value of gaiaParseEWKT in the following pointer: +%extra_argument { struct ewkt_data *p_data } + +// Invalid syntax (ie. no rules matched) +%syntax_error { +/* +** when the LEMON parser encounters an error +** then this global variable is set +*/ + p_data->ewkt_parse_error = 1; + p_data->result = NULL; +} + + /* This is to terminate with a new line */ + main ::= in. + in ::= . + in ::= in state EWKT_NEWLINE. + + state ::= program. + + /* + * program is the start node. All strings matched by this CFG must be one of + * geo_text (text describing a geometry), + * geo_textm (text describing a 2D geometry with a measure) + */ + +program ::= geo_text. +program ::= geo_textm. + +// geometries (2D, 3D and 3D with a measure): +geo_text ::= point(P). { p_data->result = P; } // P is a geometry collection containing a point +geo_text ::= pointz(P). { p_data->result = P; } // P is a geometry collection containing a point +geo_text ::= pointzm(P). { p_data->result = P; } // P is a geometry collection containing a point +geo_text ::= linestring(L). { p_data->result = L; } // L is a geometry collection containing a linestring +geo_text ::= linestringz(L). { p_data->result = L; } // L is a geometry collection containing a linestring +geo_text ::= linestringzm(L). { p_data->result = L; } // L is a geometry collection containing a linestring +geo_text ::= polygon(P). { p_data->result = P; } // P is a geometry collection containing a polygon +geo_text ::= polygonz(P). { p_data->result = P; } // P is a geometry collection containing a polygon +geo_text ::= polygonzm(P). { p_data->result = P; } // P is a geometry collection containing a polygon +geo_text ::= multipoint(M). { p_data->result = M; } // M is a geometry collection containing a multipoint +geo_text ::= multipointz(M). { p_data->result = M; } // M is a geometry collection containing a multipoint +geo_text ::= multipointzm(M). { p_data->result = M; } // M is a geometry collection containing a multipoint +geo_text ::= multilinestring(M). { p_data->result = M; } // M is a geometry collection containing a multilinestring +geo_text ::= multilinestringz(M). { p_data->result = M; } // M is a geometry collection containing a multilinestring +geo_text ::= multilinestringzm(M). { p_data->result = M; } // M is a geometry collection containing a multilinestring +geo_text ::= multipolygon(M). { p_data->result = M; } // M is a geometry collection containing a multipolygon +geo_text ::= multipolygonz(M). { p_data->result = M; } // M is a geometry collection containing a multipolygon +geo_text ::= multipolygonzm(M). { p_data->result = M; } // M is a geometry collection containing a multipolygon +geo_text ::= geocoll(H). { p_data->result = H; } // H is a geometry collection created from user input +geo_text ::= geocollz(H). { p_data->result = H; } // H is a geometry collection created from user input +geo_text ::= geocollzm(H). { p_data->result = H; } // H is a geometry collection created from user input + +// 2D geometries (with a measure): +geo_textm ::= pointm(P). { p_data->result = P; } +geo_textm ::= linestringm(L). { p_data->result = L; } +geo_textm ::= polygonm(P). { p_data->result = P; } +geo_textm ::= multipointm(M). { p_data->result = M; } +geo_textm ::= multilinestringm(M). { p_data->result = M; } +geo_textm ::= multipolygonm(M). { p_data->result = M; } +geo_textm ::= geocollm(H). { p_data->result = H; } + + +// Syntax for a "point" object: +// The functions called build a geometry collection from a gaiaPointPtr +point(P) ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxy(Q) EWKT_CLOSE_BRACKET. + { P = ewkt_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } +pointz(P) ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyz(Q) EWKT_CLOSE_BRACKET. + { P = ewkt_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } +pointm(P) ::= EWKT_POINT_M EWKT_OPEN_BRACKET point_coordxym(Q) EWKT_CLOSE_BRACKET. + { P = ewkt_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } +pointzm(P) ::= EWKT_POINT EWKT_OPEN_BRACKET point_coordxyzm(Q) EWKT_CLOSE_BRACKET. + { P = ewkt_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } + +// Point coordinates in different dimensions: MultiPoint((pt),(pt)) +// Create the point by calling the proper function in SpatiaLite : +point_brkt_coordxy(P) ::= EWKT_OPEN_BRACKET coord(X) coord(Y) EWKT_CLOSE_BRACKET. + { P = (void *) ewkt_point_xy( p_data, (double *)X, (double *)Y); } +point_brkt_coordxym(P) ::= EWKT_OPEN_BRACKET coord(X) coord(Y) coord(M) EWKT_CLOSE_BRACKET. + { P = (void *) ewkt_point_xym( p_data, (double *)X, (double *)Y, (double *)M); } +point_brkt_coordxyz(P) ::= EWKT_OPEN_BRACKET coord(X) coord(Y) coord(Z) EWKT_CLOSE_BRACKET. + { P = (void *) ewkt_point_xyz( p_data, (double *)X, (double *)Y, (double *)Z); } +point_brkt_coordxyzm(P) ::= EWKT_OPEN_BRACKET coord(X) coord(Y) coord(Z) coord(M) EWKT_CLOSE_BRACKET. + { P = (void *) ewkt_point_xyzm( p_data, (double *)X, (double *)Y, (double *)Z, (double *)M); } + +// Point coordinates in different dimensions. +// Create the point by calling the proper function in SpatiaLite : +point_coordxy(P) ::= coord(X) coord(Y). + { P = (void *) ewkt_point_xy( p_data, (double *)X, (double *)Y); } +point_coordxym(P) ::= coord(X) coord(Y) coord(M). + { P = (void *) ewkt_point_xym( p_data, (double *)X, (double *)Y, (double *)M); } +point_coordxyz(P) ::= coord(X) coord(Y) coord(Z). + { P = (void *) ewkt_point_xyz( p_data, (double *)X, (double *)Y, (double *)Z); } +point_coordxyzm(P) ::= coord(X) coord(Y) coord(Z) coord(M). + { P = (void *) ewkt_point_xyzm( p_data, (double *)X, (double *)Y, (double *)Z, (double *)M); } + +// All coordinates are assumed to be doubles (guaranteed by the flex tokenizer). +coord(A) ::= EWKT_NUM(B). { A = B; } + + +// Rules to match an infinite number of points: MultiPoint((pt), (pt)) +// Also links the generated gaiaPointPtrs together +extra_brkt_pointsxy(A) ::= . { A = NULL; } +extra_brkt_pointsxy(A) ::= EWKT_COMMA point_brkt_coordxy(P) extra_brkt_pointsxy(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + +extra_brkt_pointsxym(A) ::= . { A = NULL; } +extra_brkt_pointsxym(A) ::= EWKT_COMMA point_brkt_coordxym(P) extra_brkt_pointsxym(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + +extra_brkt_pointsxyz(A) ::= . { A = NULL; } +extra_brkt_pointsxyz(A) ::= EWKT_COMMA point_brkt_coordxyz(P) extra_brkt_pointsxyz(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + +extra_brkt_pointsxyzm(A) ::= . { A = NULL; } +extra_brkt_pointsxyzm(A) ::= EWKT_COMMA point_brkt_coordxyzm(P) extra_brkt_pointsxyzm(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + + +// Rules to match an infinite number of points: +// Also links the generated gaiaPointPtrs together +extra_pointsxy(A) ::= . { A = NULL; } +extra_pointsxy(A) ::= EWKT_COMMA point_coordxy(P) extra_pointsxy(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + +extra_pointsxym(A) ::= . { A = NULL; } +extra_pointsxym(A) ::= EWKT_COMMA point_coordxym(P) extra_pointsxym(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + +extra_pointsxyz(A) ::= . { A = NULL; } +extra_pointsxyz(A) ::= EWKT_COMMA point_coordxyz(P) extra_pointsxyz(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + +extra_pointsxyzm(A) ::= . { A = NULL; } +extra_pointsxyzm(A) ::= EWKT_COMMA point_coordxyzm(P) extra_pointsxyzm(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + + +// Syntax for a "linestring" object: +// The functions called build a geometry collection from a gaiaLinestringPtr +linestring(L) ::= EWKT_LINESTRING linestring_text(X). + { L = ewkt_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } +linestringm(L) ::= EWKT_LINESTRING_M linestring_textm(X). + { L = ewkt_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } +linestringz(L) ::= EWKT_LINESTRING linestring_textz(X). + { L = ewkt_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } +linestringzm(L) ::= EWKT_LINESTRING linestring_textzm(X). + { L = ewkt_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } + +// A valid linestring must have at least two vertices: +// The functions called build a gaiaLinestring from a linked list of points +linestring_text(L) ::= EWKT_OPEN_BRACKET point_coordxy(P) EWKT_COMMA point_coordxy(Q) extra_pointsxy(R) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + L = (void *) ewkt_linestring_xy( p_data, (gaiaPointPtr)P); + } + +linestring_textm(L) ::= EWKT_OPEN_BRACKET point_coordxym(P) EWKT_COMMA point_coordxym(Q) extra_pointsxym(R) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + L = (void *) ewkt_linestring_xym( p_data, (gaiaPointPtr)P); + } + +linestring_textz(L) ::= EWKT_OPEN_BRACKET point_coordxyz(P) EWKT_COMMA point_coordxyz(Q) extra_pointsxyz(R) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + L = (void *) ewkt_linestring_xyz( p_data, (gaiaPointPtr)P); + } + +linestring_textzm(L) ::= EWKT_OPEN_BRACKET point_coordxyzm(P) EWKT_COMMA point_coordxyzm(Q) extra_pointsxyzm(R) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + L = (void *) ewkt_linestring_xyzm( p_data, (gaiaPointPtr)P); + } + + +// Syntax for a "polygon" object: +// The functions called build a geometry collection from a gaiaPolygonPtr +polygon(P) ::= EWKT_POLYGON polygon_text(X). + { P = ewkt_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } +polygonm(P) ::= EWKT_POLYGON_M polygon_textm(X). + { P = ewkt_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } +polygonz(P) ::= EWKT_POLYGON polygon_textz(X). + { P = ewkt_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } +polygonzm(P) ::= EWKT_POLYGON polygon_textzm(X). + { P = ewkt_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } + +// A valid polygon must have at least one ring: +// The functions called build a gaiaPolygonPtr from a linked list of gaiaRingPtrs +polygon_text(P) ::= EWKT_OPEN_BRACKET ring(R) extra_rings(E) EWKT_CLOSE_BRACKET. + { + ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; + P = (void *) ewkt_polygon_xy( p_data, (gaiaRingPtr)R); + } + +polygon_textm(P) ::= EWKT_OPEN_BRACKET ringm(R) extra_ringsm(E) EWKT_CLOSE_BRACKET. + { + ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; + P = (void *) ewkt_polygon_xym( p_data, (gaiaRingPtr)R); + } + +polygon_textz(P) ::= EWKT_OPEN_BRACKET ringz(R) extra_ringsz(E) EWKT_CLOSE_BRACKET. + { + ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; + P = (void *) ewkt_polygon_xyz( p_data, (gaiaRingPtr)R); + } + +polygon_textzm(P) ::= EWKT_OPEN_BRACKET ringzm(R) extra_ringszm(E) EWKT_CLOSE_BRACKET. + { + ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; + P = (void *) ewkt_polygon_xyzm( p_data, (gaiaRingPtr)R); + } + +// A valid ring must have at least 4 points +// The functions called build a gaiaRingPtr from a linked list of gaiaPointPtrs +ring(R) ::= EWKT_OPEN_BRACKET point_coordxy(A) EWKT_COMMA point_coordxy(B) EWKT_COMMA point_coordxy(C) EWKT_COMMA point_coordxy(D) extra_pointsxy(E) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; + ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; + ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; + ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; + R = (void *) ewkt_ring_xy( p_data, (gaiaPointPtr)A); + } + +// To match more than one 2D ring: +extra_rings(R) ::= . { R = NULL; } +extra_rings(R) ::= EWKT_COMMA ring(S) extra_rings(T). + { + ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; + R = S; + } + +ringm(R) ::= EWKT_OPEN_BRACKET point_coordxym(A) EWKT_COMMA point_coordxym(B) EWKT_COMMA point_coordxym(C) EWKT_COMMA point_coordxym(D) extra_pointsxym(E) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; + ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; + ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; + ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; + R = (void *) ewkt_ring_xym( p_data, (gaiaPointPtr)A); + } + +// To match more than one 2D (with a measure) ring: +extra_ringsm(R) ::= . { R = NULL; } +extra_ringsm(R) ::= EWKT_COMMA ringm(S) extra_ringsm(T). + { + ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; + R = S; + } + +ringz(R) ::= EWKT_OPEN_BRACKET point_coordxyz(A) EWKT_COMMA point_coordxyz(B) EWKT_COMMA point_coordxyz(C) EWKT_COMMA point_coordxyz(D) extra_pointsxyz(E) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; + ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; + ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; + ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; + R = (void *) ewkt_ring_xyz( p_data, (gaiaPointPtr)A); + } + +// To match more than one 3D ring: +extra_ringsz(R) ::= . { R = NULL; } +extra_ringsz(R) ::= EWKT_COMMA ringz(S) extra_ringsz(T). + { + ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; + R = S; + } + +ringzm(R) ::= EWKT_OPEN_BRACKET point_coordxyzm(A) EWKT_COMMA point_coordxyzm(B) EWKT_COMMA point_coordxyzm(C) EWKT_COMMA point_coordxyzm(D) extra_pointsxyzm(E) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; + ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; + ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; + ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; + R = (void *) ewkt_ring_xyzm( p_data, (gaiaPointPtr)A); + } + +// To match more than one 3D (with a measure) ring: +extra_ringszm(R) ::= . { R = NULL; } +extra_ringszm(R) ::= EWKT_COMMA ringzm(S) extra_ringszm(T). + { + ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; + R = S; + } + +// Syntax for a "multipoint" object: +// X in the following lines is a geometry collection containing a multipoint +multipoint(M) ::= EWKT_MULTIPOINT multipoint_text(X). { M = X; } +multipointm(M) ::= EWKT_MULTIPOINT_M multipoint_textm(X). { M = X; } +multipointz(M) ::= EWKT_MULTIPOINT multipoint_textz(X). { M = X; } +multipointzm(M) ::= EWKT_MULTIPOINT multipoint_textzm(X). { M = X; } + +// Multipoints can contain any number of points (but at least one): +// The functions called build a geometry collection containing a multipoint +multipoint_text(M) ::= EWKT_OPEN_BRACKET point_coordxy(P) extra_pointsxy(Q) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) ewkt_multipoint_xy( p_data, (gaiaPointPtr)P); + } +multipoint_textm(M) ::= EWKT_OPEN_BRACKET point_coordxym(P) extra_pointsxym(Q) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) ewkt_multipoint_xym( p_data, (gaiaPointPtr)P); + } +multipoint_textz(M) ::= EWKT_OPEN_BRACKET point_coordxyz(P) extra_pointsxyz(Q) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) ewkt_multipoint_xyz( p_data, (gaiaPointPtr)P); + } +multipoint_textzm(M) ::= EWKT_OPEN_BRACKET point_coordxyzm(P) extra_pointsxyzm(Q) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) ewkt_multipoint_xyzm( p_data, (gaiaPointPtr)P); + } +multipoint_text(M) ::= EWKT_OPEN_BRACKET point_brkt_coordxy(P) extra_brkt_pointsxy(Q) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) ewkt_multipoint_xy( p_data, (gaiaPointPtr)P); + } +multipoint_textm(M) ::= EWKT_OPEN_BRACKET point_brkt_coordxym(P) extra_brkt_pointsxym(Q) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) ewkt_multipoint_xym( p_data, (gaiaPointPtr)P); + } +multipoint_textz(M) ::= EWKT_OPEN_BRACKET point_brkt_coordxyz(P) extra_brkt_pointsxyz(Q) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) ewkt_multipoint_xyz( p_data, (gaiaPointPtr)P); + } +multipoint_textzm(M) ::= EWKT_OPEN_BRACKET point_brkt_coordxyzm(P) extra_brkt_pointsxyzm(Q) EWKT_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) ewkt_multipoint_xyzm( p_data, (gaiaPointPtr)P); + } + + +// Syntax for a "multilinestring" object: +// X in the following lines refers to a geometry collection containing a multilinestring +multilinestring(M) ::= EWKT_MULTILINESTRING multilinestring_text(X). { M = X; } +multilinestringm(M) ::= EWKT_MULTILINESTRING_M multilinestring_textm(X). { M = X; } +multilinestringz(M) ::= EWKT_MULTILINESTRING multilinestring_textz(X). { M = X; } +multilinestringzm(M) ::= EWKT_MULTILINESTRING multilinestring_textzm(X). { M = X; } + +// Multilinestrings can contain any number of linestrings (but at least one): +// The functions called build a geometry collection containing a multilinestring +multilinestring_text(M) ::= EWKT_OPEN_BRACKET linestring_text(L) multilinestring_text2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; + M = (void *) ewkt_multilinestring_xy( p_data, (gaiaLinestringPtr)L); + } + +// Extra linestrings +multilinestring_text2(X) ::= . { X = NULL; } +multilinestring_text2(X) ::= EWKT_COMMA linestring_text(L) multilinestring_text2(Y). + { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } + +multilinestring_textm(M) ::= EWKT_OPEN_BRACKET linestring_textm(L) multilinestring_textm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; + M = (void *) ewkt_multilinestring_xym( p_data, (gaiaLinestringPtr)L); + } + +multilinestring_textm2(X) ::= . { X = NULL; } +multilinestring_textm2(X) ::= EWKT_COMMA linestring_textm(L) multilinestring_textm2(Y). + { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } + +multilinestring_textz(M) ::= EWKT_OPEN_BRACKET linestring_textz(L) multilinestring_textz2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; + M = (void *) ewkt_multilinestring_xyz( p_data, (gaiaLinestringPtr)L); + } + +multilinestring_textz2(X) ::= . { X = NULL; } +multilinestring_textz2(X) ::= EWKT_COMMA linestring_textz(L) multilinestring_textz2(Y). + { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } + +multilinestring_textzm(M) ::= EWKT_OPEN_BRACKET linestring_textzm(L) multilinestring_textzm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; + M = (void *) ewkt_multilinestring_xyzm( p_data, (gaiaLinestringPtr)L); + } + +multilinestring_textzm2(X) ::= . { X = NULL; } +multilinestring_textzm2(X) ::= EWKT_COMMA linestring_textzm(L) multilinestring_textzm2(Y). + { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } + + +// Syntax for a "multipolygon" object +// X in the following lines refers to a geometry collection containing a multipolygon +multipolygon(M) ::= EWKT_MULTIPOLYGON multipolygon_text(X). { M = X; } +multipolygonm(M) ::= EWKT_MULTIPOLYGON_M multipolygon_textm(X). { M = X; } +multipolygonz(M) ::= EWKT_MULTIPOLYGON multipolygon_textz(X). { M = X; } +multipolygonzm(M) ::= EWKT_MULTIPOLYGON multipolygon_textzm(X). { M = X; } + +// Multipolygons can contain any number of polygons (but at least one): +// The functions called build a geometry collection containing a multipolygon +multipolygon_text(M) ::= EWKT_OPEN_BRACKET polygon_text(P) multipolygon_text2(Q) EWKT_CLOSE_BRACKET. + { + ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; + M = (void *) ewkt_multipolygon_xy( p_data, (gaiaPolygonPtr)P); + } + +// Extra polygons +multipolygon_text2(Q) ::= . { Q = NULL; } +multipolygon_text2(A) ::= EWKT_COMMA polygon_text(P) multipolygon_text2(B). + { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } + +multipolygon_textm(M) ::= EWKT_OPEN_BRACKET polygon_textm(P) multipolygon_textm2(Q) EWKT_CLOSE_BRACKET. + { + ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; + M = (void *) ewkt_multipolygon_xym( p_data, (gaiaPolygonPtr)P); + } + +multipolygon_textm2(Q) ::= . { Q = NULL; } +multipolygon_textm2(A) ::= EWKT_COMMA polygon_textm(P) multipolygon_textm2(B). + { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } + +multipolygon_textz(M) ::= EWKT_OPEN_BRACKET polygon_textz(P) multipolygon_textz2(Q) EWKT_CLOSE_BRACKET. + { + ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; + M = (void *) ewkt_multipolygon_xyz( p_data, (gaiaPolygonPtr)P); + } + +multipolygon_textz2(Q) ::= . { Q = NULL; } +multipolygon_textz2(A) ::= EWKT_COMMA polygon_textz(P) multipolygon_textz2(B). + { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } + +multipolygon_textzm(M) ::= EWKT_OPEN_BRACKET polygon_textzm(P) multipolygon_textzm2(Q) EWKT_CLOSE_BRACKET. + { + ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; + M = (void *) ewkt_multipolygon_xyzm( p_data, (gaiaPolygonPtr)P); + } + +multipolygon_textzm2(Q) ::= . { Q = NULL; } +multipolygon_textzm2(A) ::= EWKT_COMMA polygon_textzm(P) multipolygon_textzm2(B). + { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } + + +// Syntax for a "geometrycollection" object: +// X in the following lines refers to a geometry collection generated based on user input +geocoll(G) ::= EWKT_GEOMETRYCOLLECTION geocoll_text(X). { G = X; } +geocollm(G) ::= EWKT_GEOMETRYCOLLECTION_M geocoll_textm(X). { G = X; } +geocollz(G) ::= EWKT_GEOMETRYCOLLECTION geocoll_textz(X). { G = X; } +geocollzm(G) ::= EWKT_GEOMETRYCOLLECTION geocoll_textzm(X). { G = X; } + +// Geometry collections can contain any number of points, linestrings, or polygons (but at least one): +geocoll_text(G) ::= EWKT_OPEN_BRACKET point(P) geocoll_text2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_text(G) ::= EWKT_OPEN_BRACKET linestring(L) geocoll_text2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_text(G) ::= EWKT_OPEN_BRACKET polygon(P) geocoll_text2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_text(G) ::= EWKT_OPEN_BRACKET multipoint(P) geocoll_text2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_text(G) ::= EWKT_OPEN_BRACKET multilinestring(L) geocoll_text2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_text(G) ::= EWKT_OPEN_BRACKET multipolygon(P) geocoll_text2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_text(G) ::= EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_text(C) geocoll_text2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xy( p_data, (gaiaGeomCollPtr)C); + } + +// Extra points, linestrings, or polygons +geocoll_text2(X) ::= . { X = NULL; } +geocoll_text2(X) ::= EWKT_COMMA point(P) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_text2(X) ::= EWKT_COMMA linestring(L) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_text2(X) ::= EWKT_COMMA polygon(P) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_text2(X) ::= EWKT_COMMA multipoint(P) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_text2(X) ::= EWKT_COMMA multilinestring(L) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_text2(X) ::= EWKT_COMMA multipolygon(P) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_text2(X) ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_text(C) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; + X = C; + } + + +geocoll_textm(G) ::= EWKT_OPEN_BRACKET pointm(P) geocoll_textm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textm(G) ::= EWKT_OPEN_BRACKET linestringm(L) geocoll_textm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_textm(G) ::= EWKT_OPEN_BRACKET polygonm(P) geocoll_textm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textm(G) ::= EWKT_OPEN_BRACKET multipointm(P) geocoll_textm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textm(G) ::= EWKT_OPEN_BRACKET multilinestringm(L) geocoll_textm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_textm(G) ::= EWKT_OPEN_BRACKET multipolygonm(P) geocoll_textm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textm(G) ::= +EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION_M geocoll_textm(C) geocoll_textm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xym( p_data, (gaiaGeomCollPtr)C); + } + +geocoll_textm2(X) ::= . { X = NULL; } +geocoll_textm2(X) ::= EWKT_COMMA pointm(P) geocoll_textm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textm2(X) ::= EWKT_COMMA linestringm(L) geocoll_textm2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_textm2(X) ::= EWKT_COMMA polygonm(P) geocoll_textm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textm2(X) ::= EWKT_COMMA multipointm(P) geocoll_textm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textm2(X) ::= EWKT_COMMA multilinestringm(L) geocoll_textm2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_textm2(X) ::= EWKT_COMMA multipolygonm(P) geocoll_textm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textm2(X) ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION_M geocoll_textm(C) geocoll_textm2(Y). + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; + X = C; + } + + +geocoll_textz(G) ::= EWKT_OPEN_BRACKET pointz(P) geocoll_textz2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textz(G) ::= EWKT_OPEN_BRACKET linestringz(L) geocoll_textz2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_textz(G) ::= EWKT_OPEN_BRACKET polygonz(P) geocoll_textz2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textz(G) ::= EWKT_OPEN_BRACKET multipointz(P) geocoll_textz2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textz(G) ::= EWKT_OPEN_BRACKET multilinestringz(L) geocoll_textz2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_textz(G) ::= EWKT_OPEN_BRACKET multipolygonz(P) geocoll_textz2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textz(G) ::= +EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textz(C) geocoll_textz2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xyz( p_data, (gaiaGeomCollPtr)C); + } + + +geocoll_textz2(X) ::= . { X = NULL; } +geocoll_textz2(X) ::= EWKT_COMMA pointz(P) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textz2(X) ::= EWKT_COMMA linestringz(L) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_textz2(X) ::= EWKT_COMMA polygonz(P) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textz2(X) ::= EWKT_COMMA multipointz(P) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textz2(X) ::= EWKT_COMMA multilinestringz(L) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_textz2(X) ::= EWKT_COMMA multipolygonz(P) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textz2(X) ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textz(C) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; + X = C; + } + + +geocoll_textzm(G) ::= EWKT_OPEN_BRACKET pointzm(P) geocoll_textzm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textzm(G) ::= EWKT_OPEN_BRACKET linestringzm(L) geocoll_textzm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_textzm(G) ::= EWKT_OPEN_BRACKET polygonzm(P) geocoll_textzm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textzm(G) ::= EWKT_OPEN_BRACKET multipointzm(P) geocoll_textzm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textzm(G) ::= EWKT_OPEN_BRACKET multilinestringzm(L) geocoll_textzm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_textzm(G) ::= EWKT_OPEN_BRACKET multipolygonzm(P) geocoll_textzm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textzm(G) ::= +EWKT_OPEN_BRACKET EWKT_GEOMETRYCOLLECTION geocoll_textzm(C) geocoll_textzm2(X) EWKT_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; + G = (void *) ewkt_geomColl_xyzm( p_data, (gaiaGeomCollPtr)C); + } + + +geocoll_textzm2(X) ::= . { X = NULL; } +geocoll_textzm2(X) ::= EWKT_COMMA pointzm(P) geocoll_textzm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textzm2(X) ::= EWKT_COMMA linestringzm(L) geocoll_textzm2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_textzm2(X) ::= EWKT_COMMA polygonzm(P) geocoll_textzm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textzm2(X) ::= EWKT_COMMA multipointzm(P) geocoll_textzm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textzm2(X) ::= EWKT_COMMA multilinestringzm(L) geocoll_textzm2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_textzm2(X) ::= EWKT_COMMA multipolygonzm(P) geocoll_textzm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textzm2(X) ::= EWKT_COMMA EWKT_GEOMETRYCOLLECTION geocoll_textzm(C) geocoll_textzm2(Y). + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; + X = C; + } diff --git a/src/spatialite/src/gaiageo/lemon/Gml.y b/src/spatialite/src/gaiageo/lemon/Gml.y new file mode 100644 index 0000000..e0a93f1 --- /dev/null +++ b/src/spatialite/src/gaiageo/lemon/Gml.y @@ -0,0 +1,184 @@ +/* + gml.y -- GML parser - LEMON config + + version 2.4, 2011 June 3 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +// Tokens are void pointers (so we can cast them to whatever we want) +%token_type {void *} + +// Output to stderr when stack overflows +%stack_overflow { + spatialite_e( "Giving up. Parser stack overflow\n"); +} + +// Increase this number if necessary +%stack_size 1000000 + +// Header files to be included in gml.c +%include { +} + +// Set the return value of gaiaParseGML in the following pointer: +%extra_argument { struct gml_data *p_data } + +// Invalid syntax (ie. no rules matched) +%syntax_error { +/* +** when the LEMON parser encounters an error +** then this global variable is set +*/ + p_data->gml_parse_error = 1; + p_data->result = NULL; +} + + /* This is to terminate with a new line */ + main ::= in. + in ::= . + in ::= in state GML_NEWLINE. + + state ::= program. + + /* + * program is the start node. + */ + +program ::= gml_tree. + +// GML node: +gml_tree ::= node(N). { p_data->result = N; } // N is a GML node +gml_tree ::= node_chain(C). { p_data->result = C; } // C is a chain of GML nodes + + +// syntax for a GML node object: +node(N) ::= open_tag(K) GML_END GML_CLOSE. + { N = gml_createSelfClosedNode( p_data, (void *)K, NULL); } +node(N) ::= open_tag(K) attr(A) GML_END GML_CLOSE. + { N = gml_createSelfClosedNode( p_data, (void *)K, (void *)A); } +node(N) ::= open_tag(K) attributes(A) GML_END GML_CLOSE. + { N = gml_createSelfClosedNode( p_data, (void *)K, (void *)A); } +node(N) ::= open_tag(K) GML_CLOSE. + { N = gml_createNode( p_data, (void *)K, NULL, NULL); } +node(N) ::= open_tag(K) attr(A) GML_CLOSE. + { N = gml_createNode( p_data, (void *)K, (void *)A, NULL); } +node(N) ::= open_tag(K) attributes(A) GML_CLOSE. + { N = gml_createNode( p_data, (void *)K, (void *)A, NULL); } +node(N) ::= open_tag(K) GML_CLOSE coord(C). + { N = gml_createNode( p_data, (void *)K, NULL, (void *)C); } +node(N) ::= open_tag(K) GML_CLOSE coord_chain(C). + { N = gml_createNode( p_data, (void *)K, NULL, (void *)C); } +node(N) ::= open_tag(K) attr(A) GML_CLOSE coord(C). + { N = gml_createNode( p_data, (void *)K, (void *)A, (void *)C); } +node(N) ::= open_tag(K) attr(A) GML_CLOSE coord_chain(C). + { N = gml_createNode( p_data, (void *)K, (void *)A, (void *)C); } +node(N) ::= open_tag(K) attributes(A) GML_CLOSE coord(C). + { N = gml_createNode( p_data, (void *)K, (void *)A, (void *)C); } +node(N) ::= open_tag(K) attributes(A) GML_CLOSE coord_chain(C). + { N = gml_createNode( p_data, (void *)K, (void *)A, (void *)C); } +node(N) ::= close_tag(K). + { N = gml_closingNode( p_data, (void *)K); } + + +// syntax for a GML tag object: +open_tag(T) ::= GML_OPEN keyword(K). { T = K; } +close_tag(T) ::= GML_OPEN GML_END keyword(K) GML_CLOSE. { T = K; } + + +// Keyword. +keyword(A) ::= GML_KEYWORD(B). { A = B; } + + +// Rules to match an infinite number of GML nodes: +// Also links the generated gmlNodePtrs together +extra_nodes(A) ::= . { A = NULL; } +extra_nodes(A) ::= node(P) extra_nodes(B). + { ((gmlNodePtr)P)->Next = (gmlNodePtr)B; A = P; } + + +// a chain can contain any number of GML Nodes (but at least two): +node_chain(C) ::= node(A) node(B) extra_nodes(Q). + { + ((gmlNodePtr)B)->Next = (gmlNodePtr)Q; + ((gmlNodePtr)A)->Next = (gmlNodePtr)B; + C = A; + } + + +// syntax for a GML attribute: +attr(A) ::= GML_KEYWORD(K) GML_EQ GML_VALUE(V). + { A = gml_attribute( p_data, (void *)K, (void *)V); } + + +// Rules to match an infinite number of GML attributes: +// Also links the generated gmlAttrPtrs together +extra_attr(A) ::= . { A = NULL; } +extra_attr(A) ::= attr(P) extra_attr(B). + { ((gmlAttrPtr)P)->Next = (gmlAttrPtr)B; A = P; } + + +// a chain can contain any number of GML Attributes (but at least two): +attributes(C) ::= attr(A) attr(B) extra_attr(Q). + { + ((gmlAttrPtr)B)->Next = (gmlAttrPtr)Q; + ((gmlAttrPtr)A)->Next = (gmlAttrPtr)B; + C = A; + } + + +// syntax for a GML coordinate: +coord(C) ::= GML_COORD(V). + { C = gml_coord( p_data, (void *)V); } + + +// Rules to match an infinite number of GML coords: +// Also links the generated gmlCoordPtrs together +extra_coord(A) ::= . { A = NULL; } +extra_coord(A) ::= coord(P) extra_coord(B). + { ((gmlCoordPtr)P)->Next = (gmlCoordPtr)B; A = P; } + + +// a chain can contain any number of GML Coordinates (but at least two): +coord_chain(C) ::= coord(A) coord(B) extra_coord(Q). + { + ((gmlCoordPtr)B)->Next = (gmlCoordPtr)Q; + ((gmlCoordPtr)A)->Next = (gmlCoordPtr)B; + C = A; + } + + diff --git a/src/spatialite/src/gaiageo/lemon/Kml.y b/src/spatialite/src/gaiageo/lemon/Kml.y new file mode 100644 index 0000000..058ec52 --- /dev/null +++ b/src/spatialite/src/gaiageo/lemon/Kml.y @@ -0,0 +1,184 @@ +/* + kml.y -- KML parser - LEMON config + + version 2.4, 2011 June 14 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +// Tokens are void pointers (so we can cast them to whatever we want) +%token_type {void *} + +// Output to stderr when stack overflows +%stack_overflow { + spatialite_e( "Giving up. Parser stack overflow\n"); +} + +// Increase this number if necessary +%stack_size 1000000 + +// Header files to be included in kml.c +%include { +} + +// Set the return value of gaiaParseKML in the following pointer: +%extra_argument { struct kml_data *p_data } + +// Invalid syntax (ie. no rules matched) +%syntax_error { +/* +** when the LEMON parser encounters an error +** then this global variable is set +*/ + p_data->kml_parse_error = 1; + p_data->result = NULL; +} + + /* This is to terminate with a new line */ + main ::= in. + in ::= . + in ::= in state KML_NEWLINE. + + state ::= program. + + /* + * program is the start node. + */ + +program ::= kml_tree. + +// KML node: +kml_tree ::= node(N). { p_data->result = N; } // N is a KML node +kml_tree ::= node_chain(C). { p_data->result = C; } // C is a chain of KML nodes + + +// syntax for a KML node object: +node(N) ::= open_tag(K) KML_END KML_CLOSE. + { N = kml_createSelfClosedNode( p_data, (void *)K, NULL); } +node(N) ::= open_tag(K) attr(A) KML_END KML_CLOSE. + { N = kml_createSelfClosedNode( p_data, (void *)K, (void *)A); } +node(N) ::= open_tag(K) attributes(A) KML_END KML_CLOSE. + { N = kml_createSelfClosedNode( p_data, (void *)K, (void *)A); } +node(N) ::= open_tag(K) KML_CLOSE. + { N = kml_createNode( p_data, (void *)K, NULL, NULL); } +node(N) ::= open_tag(K) attr(A) KML_CLOSE. + { N = kml_createNode( p_data, (void *)K, (void *)A, NULL); } +node(N) ::= open_tag(K) attributes(A) KML_CLOSE. + { N = kml_createNode( p_data, (void *)K, (void *)A, NULL); } +node(N) ::= open_tag(K) KML_CLOSE coord(C). + { N = kml_createNode( p_data, (void *)K, NULL, (void *)C); } +node(N) ::= open_tag(K) KML_CLOSE coord_chain(C). + { N = kml_createNode( p_data, (void *)K, NULL, (void *)C); } +node(N) ::= open_tag(K) attr(A) KML_CLOSE coord(C). + { N = kml_createNode( p_data, (void *)K, (void *)A, (void *)C); } +node(N) ::= open_tag(K) attr(A) KML_CLOSE coord_chain(C). + { N = kml_createNode( p_data, (void *)K, (void *)A, (void *)C); } +node(N) ::= open_tag(K) attributes(A) KML_CLOSE coord(C). + { N = kml_createNode( p_data, (void *)K, (void *)A, (void *)C); } +node(N) ::= open_tag(K) attributes(A) KML_CLOSE coord_chain(C). + { N = kml_createNode( p_data, (void *)K, (void *)A, (void *)C); } +node(N) ::= close_tag(K). + { N = kml_closingNode( p_data, (void *)K); } + + +// syntax for a KML tag object: +open_tag(T) ::= KML_OPEN keyword(K). { T = K; } +close_tag(T) ::= KML_OPEN KML_END keyword(K) KML_CLOSE. { T = K; } + + +// Keyword. +keyword(A) ::= KML_KEYWORD(B). { A = B; } + + +// Rules to match an infinite number of KML nodes: +// Also links the generated kmlNodePtrs together +extra_nodes(A) ::= . { A = NULL; } +extra_nodes(A) ::= node(P) extra_nodes(B). + { ((kmlNodePtr)P)->Next = (kmlNodePtr)B; A = P; } + + +// a chain can contain any number of KML Nodes (but at least two): +node_chain(C) ::= node(A) node(B) extra_nodes(Q). + { + ((kmlNodePtr)B)->Next = (kmlNodePtr)Q; + ((kmlNodePtr)A)->Next = (kmlNodePtr)B; + C = A; + } + + +// syntax for a KML attribute: +attr(A) ::= KML_KEYWORD(K) KML_EQ KML_VALUE(V). + { A = kml_attribute( p_data, (void *)K, (void *)V); } + + +// Rules to match an infinite number of KML attributes: +// Also links the generated kmlAttrPtrs together +extra_attr(A) ::= . { A = NULL; } +extra_attr(A) ::= attr(P) extra_attr(B). + { ((kmlAttrPtr)P)->Next = (kmlAttrPtr)B; A = P; } + + +// a chain can contain any number of KML Attributes (but at least two): +attributes(C) ::= attr(A) attr(B) extra_attr(Q). + { + ((kmlAttrPtr)B)->Next = (kmlAttrPtr)Q; + ((kmlAttrPtr)A)->Next = (kmlAttrPtr)B; + C = A; + } + + +// syntax for a KML coordinate: +coord(C) ::= KML_COORD(V). + { C = kml_coord( p_data, (void *)V); } + + +// Rules to match an infinite number of KML coords: +// Also links the generated kmlCoordPtrs together +extra_coord(A) ::= . { A = NULL; } +extra_coord(A) ::= coord(P) extra_coord(B). + { ((kmlCoordPtr)P)->Next = (kmlCoordPtr)B; A = P; } + + +// a chain can contain any number of KML Coordinates (but at least two): +coord_chain(C) ::= coord(A) coord(B) extra_coord(Q). + { + ((kmlCoordPtr)B)->Next = (kmlCoordPtr)Q; + ((kmlCoordPtr)A)->Next = (kmlCoordPtr)B; + C = A; + } + + diff --git a/src/spatialite/src/gaiageo/lemon/Makefile.am b/src/spatialite/src/gaiageo/lemon/Makefile.am new file mode 100644 index 0000000..2733aed --- /dev/null +++ b/src/spatialite/src/gaiageo/lemon/Makefile.am @@ -0,0 +1,5 @@ + +SUBDIRS = lemon_src + +EXTRA_DIST = Ewkt.y geoJSON.y Gml.y Kml.y vanuatuWkt.y ReadMe.txt + diff --git a/src/spatialite/src/gaiageo/lemon/Makefile.in b/src/spatialite/src/gaiageo/lemon/Makefile.in new file mode 100644 index 0000000..045ee51 --- /dev/null +++ b/src/spatialite/src/gaiageo/lemon/Makefile.in @@ -0,0 +1,618 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/gaiageo/lemon +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = lemon_src +EXTRA_DIST = Ewkt.y geoJSON.y Gml.y Kml.y vanuatuWkt.y ReadMe.txt +all: all-recursive + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/gaiageo/lemon/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/gaiageo/lemon/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-recursive + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool cscopelist-am ctags \ + ctags-am distclean distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/gaiageo/lemon/ReadMe.txt b/src/spatialite/src/gaiageo/lemon/ReadMe.txt new file mode 100644 index 0000000..f9bcacf --- /dev/null +++ b/src/spatialite/src/gaiageo/lemon/ReadMe.txt @@ -0,0 +1,161 @@ +What is the LEMON parser ? +========================== +Please see: http://www.hwaci.com/sw/lemon/ + +in a very few words: the LEMON parser is +internally used by the SQLite's development +team, so using it for SpatiaLite as well +seems to be fully appropriate. + + +How to get the LEMON parser executable: +======================================= +you can get the latest LEMON sources consulting +the above URL: anyway, for the sake of simplicity, +you can directly found a copy of LEMON sources +into the "lemon_src" directory. + +in order to get the LEMON executable you have +to build it by yourself: that's not at all difficult, +simply type: + +cd lemon_src +gcc lemon.c -o lemon + + + + +The Vanuatu WKT parser: +======================= +1) in order to make any change to the WKT parser +you have to edit first the definitions file +vanuatuWkt.y + +2) then run: +lemon_src/lemon -l vanuatuWkt.y + +3) during the above step the following files will be +generated: +vanuatuWkt.c [the C code implementing the parser] +vanuatuWkt.h [C header file] +vanuatuWkt.out [check file - useful for debugging] + +3.1] IMPORTANT NOTICE: carefully check the generated *.c +code; you should manually replace any occurrence of: +fprintf(stderr, ..... +with: +spatialite_e(..... + +3.2] and finally you must copy both generated files +into the parent dir: +cp vanuatuWkt.h .. +cp vanuatuWkt.c .. + + +The EWKT parser: +================ +1) in order to make any change to the EWKT parser +you have to edit first the definitions file +Ewkt.y + +2) then run: +lemon_src/lemon -l Ewkt.y + +3) during the above step the following files will be +generated: +Ewkt.c [the C code implementing the parser] +Ewkt.h [C header file] +Ewkt.out [check file - useful for debugging] + +3.1] IMPORTANT NOTICE: carefully check the generated *.c +code; you should manually replace any occurrence of: +fprintf(stderr, ..... +with: +spatialite_e(..... + +3.2] and finally you must copy both generated files +into the parent dir: +cp Ewkt.h .. +cp Ewkt.c .. + + +The GeoJSON parser: +================ +1) in order to make any change to the GeoJSON parser +you have to edit first the definitions file +geoJSON.y + +2) then run: +lemon_src/lemon -l geoJSON.y + +3) during the above step the following files will be +generated: +geoJSON.c [the C code implementing the parser] +geoJSON.h [C header file] +geoJSON.out [check file - useful for debugging] + +3.1] IMPORTANT NOTICE: carefully check the generated *.c +code; you should manually replace any occurrence of: +fprintf(stderr, ..... +with: +spatialite_e(..... + +3.2] and finally you must copy both generated files +into the parent dir: +cp geoJSON.h .. +cp geoJSON.c .. + + +The KML parser: +================ +1) in order to make any change to the KML parser +you have to edit first the definitions file +Kml.y + +2) then run: +lemon_src/lemon -l Kml.y + +3) during the above step the following files will be +generated: +Kml.c [the C code implementing the parser] +Kml.h [C header file] +Kml.out [check file - useful for debugging] + +3.1] IMPORTANT NOTICE: carefully check the generated *.c +code; you should manually replace any occurrence of: +fprintf(stderr, ..... +with: +spatialite_e(..... + +3.2] and finally you must copy both generated files +into the -/lemon/include dir: +cp Kml.h .. +cp Kml.c .. + + +The GML parser: +================ +1) in order to make any change to the GML parser +you have to edit first the definitions file +Gml.y + +2) then run: +lemon_src/lemon -l Gml.y + +3) during the above step the following files will be +generated: +Gml.c [the C code implementing the parser] +Gml.h [C header file] +Gml.out [check file - useful for debugging] + +3.1] IMPORTANT NOTICE: carefully check the generated *.c +code; you should manually replace any occurrence of: +fprintf(stderr, ..... +with: +spatialite_e(..... + +3.2] and finally you must copy both generated files +into the -/lemon/include dir: +cp Gml.h .. +cp Gml.c .. + diff --git a/src/spatialite/src/gaiageo/lemon/geoJSON.y b/src/spatialite/src/gaiageo/lemon/geoJSON.y new file mode 100644 index 0000000..995494f --- /dev/null +++ b/src/spatialite/src/gaiageo/lemon/geoJSON.y @@ -0,0 +1,745 @@ +/* + geoJSON.y -- GeoJSON parser - LEMON config + + version 2.4, 2011 May 16 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +// Tokens are void pointers (so we can cast them to whatever we want) +%token_type {void *} + +// Output to stderr when stack overflows +%stack_overflow { + spatialite_e( "Giving up. Parser stack overflow\n"); +} + +// Increase this number if necessary +%stack_size 1000000 + +// Header files to be included in geoJSON.c +%include { +} + +// Set the return value of gaiaParseGeoJSON in the following pointer: +%extra_argument { struct geoJson_data *p_data } + +// Invalid syntax (ie. no rules matched) +%syntax_error { +/* +** when the LEMON parser encounters an error +** then this global variable is set +*/ + p_data->geoJson_parse_error = 1; + p_data->result = NULL; +} + + /* This is to terminate with a new line */ + main ::= in. + in ::= . + in ::= in state GEOJSON_NEWLINE. + + state ::= program. + + /* + * program is the start node. All strings matched by this CFG must be one of + * geo_text (text describing a geometry) + */ + +program ::= geo_text. + +// geometries (2D and 3D): +geo_text ::= point(P). { p_data->result = P; } // P is a geometry collection containing a point +geo_text ::= pointz(P). { p_data->result = P; } // P is a geometry collection containing a point +geo_text ::= linestring(L). { p_data->result = L; } // L is a geometry collection containing a linestring +geo_text ::= linestringz(L). { p_data->result = L; } // L is a geometry collection containing a linestring +geo_text ::= polygon(P). { p_data->result = P; } // P is a geometry collection containing a polygon +geo_text ::= polygonz(P). { p_data->result = P; } // P is a geometry collection containing a polygon +geo_text ::= multipoint(M). { p_data->result = M; } // M is a geometry collection containing a multipoint +geo_text ::= multipointz(M). { p_data->result = M; } // M is a geometry collection containing a multipoint +geo_text ::= multilinestring(M). { p_data->result = M; } // M is a geometry collection containing a multilinestring +geo_text ::= multilinestringz(M). { p_data->result = M; } // M is a geometry collection containing a multilinestring +geo_text ::= multipolygon(M). { p_data->result = M; } // M is a geometry collection containing a multipolygon +geo_text ::= multipolygonz(M). { p_data->result = M; } // M is a geometry collection containing a multipolygon +geo_text ::= geocoll(H). { p_data->result = H; } // H is a geometry collection created from user input +geo_text ::= geocollz(H). { p_data->result = H; } // H is a geometry collection created from user input + + +// Syntax for a "point" object: +// The functions called build a geometry collection from a gaiaPointPtr +point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON point_coordxy(Q) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } // Point (2D) [simple] +point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA + GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON point_coordxy(Q) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } // Point (2D) [with BBOX] +point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON point_coordxy(Q) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (2D) [with short SRS] +point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON point_coordxy(Q) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (2D) [with long SRS] +point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON point_coordxy(Q) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (2D) [with BBOX & short SRS] +point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON point_coordxy(Q) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (2D) [with BBOX & long SRS] +pointz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON point_coordxyz(Q) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } // Point (3D) [simple] +pointz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA + GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON point_coordxyz(Q) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } // Point (3D) [with BBOX] +pointz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON point_coordxyz(Q) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (3D) [with short SRS] +pointz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON point_coordxyz(Q) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (3D) [with long SRS] +point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON point_coordxyz(Q) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (3D) [with BBOX & short SRS] +point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON point_coordxyz(Q) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPointSrid( p_data, (gaiaPointPtr)Q, (int *)S); } // Point (3D) [with BBOX & long SRS] + +// GeoJSON Bounding Box +bbox ::= coord GEOJSON_COMMA coord GEOJSON_COMMA coord GEOJSON_COMMA coord. + +// GeoJSON short-format SRS +short_crs(A) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA + GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON + short_srid(B) GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE. + { A = B; } + +// GeoJSON long-format SRS +long_crs(A) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_NAME GEOJSON_COMMA + GEOJSON_PROPS GEOJSON_COLON GEOJSON_OPEN_BRACE GEOJSON_NAME GEOJSON_COLON + long_srid(B) GEOJSON_CLOSE_BRACE GEOJSON_CLOSE_BRACE. + { A = B; } + +// Point coordinates in different dimensions. +// Create the point by calling the proper function in SpatiaLite : +point_coordxy(P) ::= GEOJSON_OPEN_BRACKET coord(X) GEOJSON_COMMA coord(Y) GEOJSON_CLOSE_BRACKET. + { P = (void *) geoJSON_point_xy( p_data, (double *)X, (double *)Y); } +point_coordxyz(P) ::= GEOJSON_OPEN_BRACKET coord(X) GEOJSON_COMMA coord(Y) GEOJSON_COMMA coord(Z) GEOJSON_CLOSE_BRACKET. + { P = (void *) geoJSON_point_xyz( p_data, (double *)X, (double *)Y, (double *)Z); } + +// All coordinates are assumed to be doubles (guaranteed by the flex tokenizer). +coord(A) ::= GEOJSON_NUM(B). { A = B; } + +// short-format SRID. +short_srid(A) ::= GEOJSON_SHORT_SRID(B). { A = B; } + +// long-format SRID. +long_srid(A) ::= GEOJSON_LONG_SRID(B). { A = B; } + + +// Rules to match an infinite number of points: +// Also links the generated gaiaPointPtrs together +extra_pointsxy(A) ::= . { A = NULL; } +extra_pointsxy(A) ::= GEOJSON_COMMA point_coordxy(P) extra_pointsxy(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + +extra_pointsxyz(A) ::= . { A = NULL; } +extra_pointsxyz(A) ::= GEOJSON_COMMA point_coordxyz(P) extra_pointsxyz(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + + +// Syntax for a "linestring" object: +// The functions called build a geometry collection from a gaiaLinestringPtr +linestring(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON linestring_text(X) GEOJSON_CLOSE_BRACE. + { L = geoJSON_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } // LineString (2D) [simple] +linestring(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA + GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON linestring_text(X) GEOJSON_CLOSE_BRACE. + { L = geoJSON_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } // LineString (2D) [with BBOX] +linestring(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON linestring_text(X) GEOJSON_CLOSE_BRACE. + { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (2D) [with short SRS] +linestring(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON linestring_text(X) GEOJSON_CLOSE_BRACE. + { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (2D) [with long SRS] +linestring(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON linestring_text(X) GEOJSON_CLOSE_BRACE. + { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (2D) [with BBOX & short SRS] +linestring(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON linestring_text(X) GEOJSON_CLOSE_BRACE. + { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (2D) [with BBOX & long SRS] +linestringz(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON linestring_textz(X) GEOJSON_CLOSE_BRACE. + { L = geoJSON_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } // LineString (3D) [simple] +linestringz(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA + GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON linestring_textz(X) GEOJSON_CLOSE_BRACE. + { L = geoJSON_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } // LineString (3D) [with BBOX] +linestringz(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON linestring_textz(X) GEOJSON_CLOSE_BRACE. + { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (3D) [with short SRS] +linestringz(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON linestring_textz(X) GEOJSON_CLOSE_BRACE. + { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (3D) [with long SRS] +linestringz(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON linestring_textz(X) GEOJSON_CLOSE_BRACE. + { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (3D) [with BBOX & short SRS] +linestringz(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON linestring_textz(X) GEOJSON_CLOSE_BRACE. + { L = geoJSON_buildGeomFromLinestringSrid( p_data, (gaiaLinestringPtr)X, (int *)S); } // LineString (3D) [with BBOX & long SRS] + +// A valid linestring must have at least two vertices: +// The functions called build a gaiaLinestring from a linked list of points +linestring_text(L) ::= GEOJSON_OPEN_BRACKET point_coordxy(P) GEOJSON_COMMA point_coordxy(Q) extra_pointsxy(R) GEOJSON_CLOSE_BRACKET. + { + ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + L = (void *) geoJSON_linestring_xy( p_data, (gaiaPointPtr)P); + } + +linestring_textz(L) ::= GEOJSON_OPEN_BRACKET point_coordxyz(P) GEOJSON_COMMA point_coordxyz(Q) extra_pointsxyz(R) GEOJSON_CLOSE_BRACKET. + { + ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + L = (void *) geoJSON_linestring_xyz( p_data, (gaiaPointPtr)P); + } + + +// Syntax for a "polygon" object: +// The functions called build a geometry collection from a gaiaPolygonPtr +polygon(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON polygon_text(X) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } // Polygon (2D) [simple] +polygon(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA + GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON polygon_text(X) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } // Polygon (2D) [with BBOX] +polygon(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON polygon_text(X) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (2D) [with short SRS] +polygon(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON polygon_text(X) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (2D) [with long SRS] +polygon(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON polygon_text(X) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (2D) [with BBOX & short SRS] +polygon(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON polygon_text(X) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (2D) [with BBOX & long SRS] +polygonz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON polygon_textz(X) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } // Polygon (3D) [simple] +polygonz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA + GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON polygon_textz(X) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } // Polygon (3D) [with BBOX] +polygonz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON polygon_textz(X) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (3D) [with short SRS] +polygonz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON polygon_textz(X) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (3D) [with long SRS] +polygonz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON polygon_textz(X) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (3D) [with BBOX & short SRS] +polygonz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON polygon_textz(X) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPolygonSrid( p_data, (gaiaPolygonPtr)X, (int *)S); } // Polygon (3D) [with BBOX & long SRS] + +// A valid polygon must have at least one ring: +// The functions called build a gaiaPolygonPtr from a linked list of gaiaRingPtrs +polygon_text(P) ::= GEOJSON_OPEN_BRACKET ring(R) extra_rings(E) GEOJSON_CLOSE_BRACKET. + { + ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; + P = (void *) geoJSON_polygon_xy(p_data, (gaiaRingPtr)R); + } + +polygon_textz(P) ::= GEOJSON_OPEN_BRACKET ringz(R) extra_ringsz(E) GEOJSON_CLOSE_BRACKET. + { + ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; + P = (void *) geoJSON_polygon_xyz(p_data, (gaiaRingPtr)R); + } + +// A valid ring must have at least 4 points +// The functions called build a gaiaRingPtr from a linked list of gaiaPointPtrs +ring(R) ::= GEOJSON_OPEN_BRACKET point_coordxy(A) GEOJSON_COMMA point_coordxy(B) + GEOJSON_COMMA point_coordxy(C) GEOJSON_COMMA point_coordxy(D) extra_pointsxy(E) GEOJSON_CLOSE_BRACKET. + { + ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; + ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; + ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; + ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; + R = (void *) geoJSON_ring_xy(p_data, (gaiaPointPtr)A); + } + +// To match more than one 2D ring: +extra_rings(R) ::= . { R = NULL; } +extra_rings(R) ::= GEOJSON_COMMA ring(S) extra_rings(T). + { + ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; + R = S; + } + +ringz(R) ::= GEOJSON_OPEN_BRACKET point_coordxyz(A) GEOJSON_COMMA point_coordxyz(B) + GEOJSON_COMMA point_coordxyz(C) GEOJSON_COMMA point_coordxyz(D) extra_pointsxyz(E) GEOJSON_CLOSE_BRACKET. + { + ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; + ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; + ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; + ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; + R = (void *) geoJSON_ring_xyz(p_data, (gaiaPointPtr)A); + } + +// To match more than one 3D ring: +extra_ringsz(R) ::= . { R = NULL; } +extra_ringsz(R) ::= GEOJSON_COMMA ringz(S) extra_ringsz(T). + { + ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; + R = S; + } + +// Syntax for a "multipoint" object: +// X in the following lines is a geometry collection containing a multipoint +multipoint(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipoint_text(X) GEOJSON_CLOSE_BRACE. + { M = X; } // MultiPoint (2D) [simple] +multipoint(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA + GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipoint_text(X) GEOJSON_CLOSE_BRACE. + { M = X; } // MultiPoint (2D) [with BBOX] +multipoint(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipoint_text(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (2D) [with short SRS] +multipoint(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipoint_text(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (2D) [with long SRS] +multipoint(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON multipoint_text(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (2D) [with BBOX & short SRS] +multipoint(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON multipoint_text(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (2D) [with BBOX & long SRS] +multipointz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipoint_textz(X) GEOJSON_CLOSE_BRACE. + { M = X; } // MultiPoint (3D) [simple] +multipointz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA + GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipoint_textz(X) GEOJSON_CLOSE_BRACE. + { M = X; } // MultiPoint (3D) [with BBOX] +multipointz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipoint_textz(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (3D) [with short SRS] +multipointz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipoint_textz(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (3D) [with long SRS] +multipointz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON multipoint_textz(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (3D) [with BBOX & short SRS] +multipointz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOINT GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON multipoint_textz(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPoint (3D) [with BBOX & long SRS] + +// Multipoints can contain any number of points (but at least one): +// The functions called build a geometry collection containing a multipoint +multipoint_text(M) ::= GEOJSON_OPEN_BRACKET point_coordxy(P) extra_pointsxy(Q) GEOJSON_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) geoJSON_multipoint_xy(p_data, (gaiaPointPtr)P); + } +multipoint_textz(M) ::= GEOJSON_OPEN_BRACKET point_coordxyz(P) extra_pointsxyz(Q) GEOJSON_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) geoJSON_multipoint_xyz(p_data, (gaiaPointPtr)P); + } + + +// Syntax for a "multilinestring" object: +// X in the following lines refers to a geometry collection containing a multilinestring +multilinestring(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multilinestring_text(X) GEOJSON_CLOSE_BRACE. + { M = X; } // MultiLineString (2D) [simple] +multilinestring(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA + GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multilinestring_text(X) GEOJSON_CLOSE_BRACE. + { M = X; } // MultiLineString (2D) [with BBOX] +multilinestring(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multilinestring_text(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (2D) [with short SRS] +multilinestring(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multilinestring_text(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (2D) [with long SRS] +multilinestring(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON multilinestring_text(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (2D) [with BBOX & short SRS] +multilinestring(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON multilinestring_text(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (2D) [with BBOX & long SRS] +multilinestringz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multilinestring_textz(X) GEOJSON_CLOSE_BRACE. + { M = X; } // MultiLineString (3D) [simple] +multilinestringz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA + GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multilinestring_textz(X) GEOJSON_CLOSE_BRACE. + { M = X; } // MultiLineString (3D) [with BBOX] +multilinestringz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multilinestring_textz(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (3D) [with short SRS] +multilinestringz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multilinestring_textz(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (3D) [with long SRS] +multilinestringz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON multilinestring_textz(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (3D) [with BBOX & short SRS] +multilinestringz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTILINESTRING GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON multilinestring_textz(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiLineString (3D) [with BBOX & long SRS] + +// Multilinestrings can contain any number of linestrings (but at least one): +// The functions called build a geometry collection containing a multilinestring +multilinestring_text(M) ::= GEOJSON_OPEN_BRACKET linestring_text(L) multilinestring_text2(X) GEOJSON_CLOSE_BRACKET. + { + ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; + M = (void *) geoJSON_multilinestring_xy( p_data, (gaiaLinestringPtr)L); + } + +// Extra linestrings +multilinestring_text2(X) ::= . { X = NULL; } +multilinestring_text2(X) ::= GEOJSON_COMMA linestring_text(L) multilinestring_text2(Y). + { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } + +multilinestring_textz(M) ::= GEOJSON_OPEN_BRACKET linestring_textz(L) multilinestring_textz2(X) GEOJSON_CLOSE_BRACKET. + { + ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; + M = (void *) geoJSON_multilinestring_xyz(p_data, (gaiaLinestringPtr)L); + } + +multilinestring_textz2(X) ::= . { X = NULL; } +multilinestring_textz2(X) ::= GEOJSON_COMMA linestring_textz(L) multilinestring_textz2(Y). + { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } + + +// Syntax for a "multipolygon" object +// X in the following lines refers to a geometry collection containing a multipolygon +multipolygon(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipolygon_text(X) GEOJSON_CLOSE_BRACE. + { M = X; } // MultiPolygon (2D) [simple] +multipolygon(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA + GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipolygon_text(X) GEOJSON_CLOSE_BRACE. + { M = X; } // MultiPolygon (2D) [with BBOX] +multipolygon(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipolygon_text(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (2D) [with short SRS] +multipolygon(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipolygon_text(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (2D) [with long SRS] +multipolygon(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON multipolygon_text(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (2D) [with BBOX & short SRS] +multipolygon(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON multipolygon_text(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (2D) [with BBOX & long SRS] +multipolygonz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipolygon_textz(X) GEOJSON_CLOSE_BRACE. + { M = X; } // MultiPolygon (3D) [simple] +multipolygonz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA + GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipolygon_textz(X) GEOJSON_CLOSE_BRACE. + { M = X; } // MultiPolygon (3D) [with BBOX] +multipolygonz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipolygon_textz(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (3D) [with short SRS] +multipolygonz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON multipolygon_textz(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (3D) [with long SRS] +multipolygonz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON multipolygon_textz(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (3D) [with BBOX & short SRS] +multipolygonz(M) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_MULTIPOLYGON GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_COORDS + GEOJSON_COLON multipolygon_textz(X) GEOJSON_CLOSE_BRACE. + { M = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // MultiPolygon (3D) [with BBOX & long SRS] + +// Multipolygons can contain any number of polygons (but at least one): +// The functions called build a geometry collection containing a multipolygon +multipolygon_text(M) ::= GEOJSON_OPEN_BRACKET polygon_text(P) multipolygon_text2(Q) GEOJSON_CLOSE_BRACKET. + { + ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; + M = (void *) geoJSON_multipolygon_xy(p_data, (gaiaPolygonPtr)P); + } + +// Extra polygons +multipolygon_text2(Q) ::= . { Q = NULL; } +multipolygon_text2(A) ::= GEOJSON_COMMA polygon_text(P) multipolygon_text2(B). + { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } + +multipolygon_textz(M) ::= GEOJSON_OPEN_BRACKET polygon_textz(P) multipolygon_textz2(Q) GEOJSON_CLOSE_BRACKET. + { + ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; + M = (void *) geoJSON_multipolygon_xyz(p_data, (gaiaPolygonPtr)P); + } + +multipolygon_textz2(Q) ::= . { Q = NULL; } +multipolygon_textz2(A) ::= GEOJSON_COMMA polygon_textz(P) multipolygon_textz2(B). + { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } + + +// Syntax for a "geometrycollection" object: +// X in the following lines refers to a geometry collection generated based on user input +geocoll(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA + GEOJSON_GEOMS GEOJSON_COLON geocoll_text(X) GEOJSON_CLOSE_BRACE. + { G = X; } // GeomColl (2D) [simple] +geocoll(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA + GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA + GEOJSON_GEOMS GEOJSON_COLON geocoll_text(X) GEOJSON_CLOSE_BRACE. + { G = X; } // GeomColl (2D) [with BBOX] +geocoll(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA + GEOJSON_GEOMS GEOJSON_COLON geocoll_text(X) GEOJSON_CLOSE_BRACE. + { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (2D) [with short SRS] +geocoll(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA + GEOJSON_GEOMS GEOJSON_COLON geocoll_text(X) GEOJSON_CLOSE_BRACE. + { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (2D) [with long SRS] +geocoll(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS + GEOJSON_COLON geocoll_text(X) GEOJSON_CLOSE_BRACE. + { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (2D) [with BBOX & short SRS] +geocoll(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS + GEOJSON_COLON geocoll_text(X) GEOJSON_CLOSE_BRACE. + { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (2D) [with BBOX & long SRS] +geocollz(G) ::= GEOJSON_GEOMETRYCOLLECTION geocoll_textz(X). + { G = X; } // GeomColl (3D) [simple] +geocollz(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA + GEOJSON_BBOX GEOJSON_COLON GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA + GEOJSON_GEOMS GEOJSON_COLON geocoll_textz(X) GEOJSON_CLOSE_BRACE. + { G = X; } // GeomColl (3D) [with BBOX] +geocollz(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA + GEOJSON_GEOMS GEOJSON_COLON geocoll_textz(X) GEOJSON_CLOSE_BRACE. + { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (3D) [with short SRS] +geocollz(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA + GEOJSON_GEOMS GEOJSON_COLON geocoll_textz(X) GEOJSON_CLOSE_BRACE. + { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (3D) [with long SRS] +geocollz(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON short_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS + GEOJSON_COLON geocoll_textz(X) GEOJSON_CLOSE_BRACE. + { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (3D) [with BBOX & short SRS] +geocollz(G) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_GEOMETRYCOLLECTION GEOJSON_COMMA + GEOJSON_CRS GEOJSON_COLON long_crs(S) GEOJSON_COMMA GEOJSON_BBOX GEOJSON_COLON + GEOJSON_OPEN_BRACKET bbox GEOJSON_CLOSE_BRACKET GEOJSON_COMMA GEOJSON_GEOMS + GEOJSON_COLON geocoll_textz(X) GEOJSON_CLOSE_BRACE. + { G = (void *) geoJSON_setSrid((gaiaGeomCollPtr)X, (int *)S); } // GeomColl (3D) [with BBOX & long SRS] + +// Geometry collections can contain any number of points, linestrings, or polygons (but at least one): +geocoll_text(G) ::= GEOJSON_OPEN_BRACKET coll_point(P) geocoll_text2(X) GEOJSON_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) geoJSON_geomColl_xy(p_data, (gaiaGeomCollPtr)P); + } + +geocoll_text(G) ::= GEOJSON_OPEN_BRACKET coll_linestring(L) geocoll_text2(X) GEOJSON_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) geoJSON_geomColl_xy(p_data, (gaiaGeomCollPtr)L); + } + +geocoll_text(G) ::= GEOJSON_OPEN_BRACKET coll_polygon(P) geocoll_text2(X) GEOJSON_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) geoJSON_geomColl_xy(p_data, (gaiaGeomCollPtr)P); + } + +// Extra points, linestrings, or polygons +geocoll_text2(X) ::= . { X = NULL; } +geocoll_text2(X) ::= GEOJSON_COMMA coll_point(P) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_text2(X) ::= GEOJSON_COMMA coll_linestring(L) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_text2(X) ::= GEOJSON_COMMA coll_polygon(P) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + + +geocoll_textz(G) ::= GEOJSON_OPEN_BRACKET coll_pointz(P) geocoll_textz2(X) GEOJSON_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) geoJSON_geomColl_xyz(p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textz(G) ::= GEOJSON_OPEN_BRACKET coll_linestringz(L) geocoll_textz2(X) GEOJSON_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) geoJSON_geomColl_xyz(p_data, (gaiaGeomCollPtr)L); + } + +geocoll_textz(G) ::= GEOJSON_OPEN_BRACKET coll_polygonz(P) geocoll_textz2(X) GEOJSON_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) geoJSON_geomColl_xyz(p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textz2(X) ::= . { X = NULL; } +geocoll_textz2(X) ::= GEOJSON_COMMA coll_pointz(P) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textz2(X) ::= GEOJSON_COMMA coll_linestringz(L) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_textz2(X) ::= GEOJSON_COMMA coll_polygonz(P) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +coll_point(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON point_coordxy(Q) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPoint(p_data, (gaiaPointPtr)Q); } + +coll_pointz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POINT GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON point_coordxyz(Q) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPoint(p_data, (gaiaPointPtr)Q); } + +coll_linestring(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON linestring_text(X) GEOJSON_CLOSE_BRACE. + { L = geoJSON_buildGeomFromLinestring(p_data, (gaiaLinestringPtr)X); } + +coll_linestringz(L) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_LINESTRING GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON linestring_textz(X) GEOJSON_CLOSE_BRACE. + { L = geoJSON_buildGeomFromLinestring(p_data, (gaiaLinestringPtr)X); } + +coll_polygon(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON polygon_text(X) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPolygon(p_data, (gaiaPolygonPtr)X); } + +coll_polygonz(P) ::= GEOJSON_OPEN_BRACE GEOJSON_TYPE GEOJSON_COLON GEOJSON_POLYGON GEOJSON_COMMA + GEOJSON_COORDS GEOJSON_COLON polygon_textz(X) GEOJSON_CLOSE_BRACE. + { P = geoJSON_buildGeomFromPolygon(p_data, (gaiaPolygonPtr)X); } diff --git a/src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.am b/src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.am new file mode 100644 index 0000000..1c42165 --- /dev/null +++ b/src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.am @@ -0,0 +1,3 @@ + +EXTRA_DIST = lemon.c lempar.c + diff --git a/src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.in b/src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.in new file mode 100644 index 0000000..32a82dc --- /dev/null +++ b/src/spatialite/src/gaiageo/lemon/lemon_src/Makefile.in @@ -0,0 +1,437 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/gaiageo/lemon/lemon_src +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = lemon.c lempar.c +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/gaiageo/lemon/lemon_src/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/gaiageo/lemon/lemon_src/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/gaiageo/lemon/lemon_src/lemon.c b/src/spatialite/src/gaiageo/lemon/lemon_src/lemon.c new file mode 100644 index 0000000..8336e9a --- /dev/null +++ b/src/spatialite/src/gaiageo/lemon/lemon_src/lemon.c @@ -0,0 +1,4889 @@ +/* +** This file contains all sources (including headers) to the LEMON +** LALR(1) parser generator. The sources have been combined into a +** single file to make it easy to include LEMON in the source tree +** and Makefile of another program. +** +** The author of this program disclaims copyright. +*/ +#include <stdio.h> +#include <stdarg.h> +#include <string.h> +#include <ctype.h> +#include <stdlib.h> +#include <assert.h> + +#ifndef __WIN32__ +# if defined(_WIN32) || defined(WIN32) +# define __WIN32__ +# endif +#endif + +#ifdef __WIN32__ +extern int access(); +#else +#include <unistd.h> +#endif + +/* #define PRIVATE static */ +#define PRIVATE + +#ifdef TEST +#define MAXRHS 5 /* Set low to exercise exception code */ +#else +#define MAXRHS 1000 +#endif + +static char *msort(char*,char**,int(*)(const char*,const char*)); + +/* +** Compilers are getting increasingly pedantic about type conversions +** as C evolves ever closer to Ada.... To work around the latest problems +** we have to define the following variant of strlen(). +*/ +#define lemonStrlen(X) ((int)strlen(X)) + +static struct action *Action_new(void); +static struct action *Action_sort(struct action *); + +/********** From the file "build.h" ************************************/ +void FindRulePrecedences(); +void FindFirstSets(); +void FindStates(); +void FindLinks(); +void FindFollowSets(); +void FindActions(); + +/********* From the file "configlist.h" *********************************/ +void Configlist_init(/* void */); +struct config *Configlist_add(/* struct rule *, int */); +struct config *Configlist_addbasis(/* struct rule *, int */); +void Configlist_closure(/* void */); +void Configlist_sort(/* void */); +void Configlist_sortbasis(/* void */); +struct config *Configlist_return(/* void */); +struct config *Configlist_basis(/* void */); +void Configlist_eat(/* struct config * */); +void Configlist_reset(/* void */); + +/********* From the file "error.h" ***************************************/ +void ErrorMsg(const char *, int,const char *, ...); + +/****** From the file "option.h" ******************************************/ +struct s_options { + enum { OPT_FLAG=1, OPT_INT, OPT_DBL, OPT_STR, + OPT_FFLAG, OPT_FINT, OPT_FDBL, OPT_FSTR} type; + char *label; + char *arg; + char *message; +}; +int OptInit(/* char**,struct s_options*,FILE* */); +int OptNArgs(/* void */); +char *OptArg(/* int */); +void OptErr(/* int */); +void OptPrint(/* void */); + +/******** From the file "parse.h" *****************************************/ +void Parse(/* struct lemon *lemp */); + +/********* From the file "plink.h" ***************************************/ +struct plink *Plink_new(/* void */); +void Plink_add(/* struct plink **, struct config * */); +void Plink_copy(/* struct plink **, struct plink * */); +void Plink_delete(/* struct plink * */); + +/********** From the file "report.h" *************************************/ +void Reprint(/* struct lemon * */); +void ReportOutput(/* struct lemon * */); +void ReportTable(/* struct lemon * */); +void ReportHeader(/* struct lemon * */); +void CompressTables(/* struct lemon * */); +void ResortStates(/* struct lemon * */); + +/********** From the file "set.h" ****************************************/ +void SetSize(/* int N */); /* All sets will be of size N */ +char *SetNew(/* void */); /* A new set for element 0..N */ +void SetFree(/* char* */); /* Deallocate a set */ + +int SetAdd(/* char*,int */); /* Add element to a set */ +int SetUnion(/* char *A,char *B */); /* A <- A U B, thru element N */ + +#define SetFind(X,Y) (X[Y]) /* True if Y is in set X */ + +/********** From the file "struct.h" *************************************/ +/* +** Principal data structures for the LEMON parser generator. +*/ + +typedef enum {LEMON_FALSE=0, LEMON_TRUE} Boolean; + +/* Symbols (terminals and nonterminals) of the grammar are stored +** in the following: */ +struct symbol { + char *name; /* Name of the symbol */ + int index; /* Index number for this symbol */ + enum { + TERMINAL, + NONTERMINAL, + MULTITERMINAL + } type; /* Symbols are all either TERMINALS or NTs */ + struct rule *rule; /* Linked list of rules of this (if an NT) */ + struct symbol *fallback; /* fallback token in case this token doesn't parse */ + int prec; /* Precedence if defined (-1 otherwise) */ + enum e_assoc { + LEFT, + RIGHT, + NONE, + UNK + } assoc; /* Associativity if precedence is defined */ + char *firstset; /* First-set for all rules of this symbol */ + Boolean lambda; /* True if NT and can generate an empty string */ + int useCnt; /* Number of times used */ + char *destructor; /* Code which executes whenever this symbol is + ** popped from the stack during error processing */ + int destLineno; /* Line number for start of destructor */ + char *datatype; /* The data type of information held by this + ** object. Only used if type==NONTERMINAL */ + int dtnum; /* The data type number. In the parser, the value + ** stack is a union. The .yy%d element of this + ** union is the correct data type for this object */ + /* The following fields are used by MULTITERMINALs only */ + int nsubsym; /* Number of constituent symbols in the MULTI */ + struct symbol **subsym; /* Array of constituent symbols */ +}; + +/* Each production rule in the grammar is stored in the following +** structure. */ +struct rule { + struct symbol *lhs; /* Left-hand side of the rule */ + char *lhsalias; /* Alias for the LHS (NULL if none) */ + int lhsStart; /* True if left-hand side is the start symbol */ + int ruleline; /* Line number for the rule */ + int nrhs; /* Number of RHS symbols */ + struct symbol **rhs; /* The RHS symbols */ + char **rhsalias; /* An alias for each RHS symbol (NULL if none) */ + int line; /* Line number at which code begins */ + char *code; /* The code executed when this rule is reduced */ + struct symbol *precsym; /* Precedence symbol for this rule */ + int index; /* An index number for this rule */ + Boolean canReduce; /* True if this rule is ever reduced */ + struct rule *nextlhs; /* Next rule with the same LHS */ + struct rule *next; /* Next rule in the global list */ +}; + +/* A configuration is a production rule of the grammar together with +** a mark (dot) showing how much of that rule has been processed so far. +** Configurations also contain a follow-set which is a list of terminal +** symbols which are allowed to immediately follow the end of the rule. +** Every configuration is recorded as an instance of the following: */ +struct config { + struct rule *rp; /* The rule upon which the configuration is based */ + int dot; /* The parse point */ + char *fws; /* Follow-set for this configuration only */ + struct plink *fplp; /* Follow-set forward propagation links */ + struct plink *bplp; /* Follow-set backwards propagation links */ + struct state *stp; /* Pointer to state which contains this */ + enum { + COMPLETE, /* The status is used during followset and */ + INCOMPLETE /* shift computations */ + } status; + struct config *next; /* Next configuration in the state */ + struct config *bp; /* The next basis configuration */ +}; + +/* Every shift or reduce operation is stored as one of the following */ +struct action { + struct symbol *sp; /* The look-ahead symbol */ + enum e_action { + SHIFT, + ACCEPT, + REDUCE, + ERROR, + SSCONFLICT, /* A shift/shift conflict */ + SRCONFLICT, /* Was a reduce, but part of a conflict */ + RRCONFLICT, /* Was a reduce, but part of a conflict */ + SH_RESOLVED, /* Was a shift. Precedence resolved conflict */ + RD_RESOLVED, /* Was reduce. Precedence resolved conflict */ + NOT_USED /* Deleted by compression */ + } type; + union { + struct state *stp; /* The new state, if a shift */ + struct rule *rp; /* The rule, if a reduce */ + } x; + struct action *next; /* Next action for this state */ + struct action *collide; /* Next action with the same hash */ +}; + +/* Each state of the generated parser's finite state machine +** is encoded as an instance of the following structure. */ +struct state { + struct config *bp; /* The basis configurations for this state */ + struct config *cfp; /* All configurations in this set */ + int statenum; /* Sequential number for this state */ + struct action *ap; /* Array of actions for this state */ + int nTknAct, nNtAct; /* Number of actions on terminals and nonterminals */ + int iTknOfst, iNtOfst; /* yy_action[] offset for terminals and nonterms */ + int iDflt; /* Default action */ +}; +#define NO_OFFSET (-2147483647) + +/* A followset propagation link indicates that the contents of one +** configuration followset should be propagated to another whenever +** the first changes. */ +struct plink { + struct config *cfp; /* The configuration to which linked */ + struct plink *next; /* The next propagate link */ +}; + +/* The state vector for the entire parser generator is recorded as +** follows. (LEMON uses no global variables and makes little use of +** static variables. Fields in the following structure can be thought +** of as begin global variables in the program.) */ +struct lemon { + struct state **sorted; /* Table of states sorted by state number */ + struct rule *rule; /* List of all rules */ + int nstate; /* Number of states */ + int nrule; /* Number of rules */ + int nsymbol; /* Number of terminal and nonterminal symbols */ + int nterminal; /* Number of terminal symbols */ + struct symbol **symbols; /* Sorted array of pointers to symbols */ + int errorcnt; /* Number of errors */ + struct symbol *errsym; /* The error symbol */ + struct symbol *wildcard; /* Token that matches anything */ + char *name; /* Name of the generated parser */ + char *arg; /* Declaration of the 3th argument to parser */ + char *tokentype; /* Type of terminal symbols in the parser stack */ + char *vartype; /* The default type of non-terminal symbols */ + char *start; /* Name of the start symbol for the grammar */ + char *stacksize; /* Size of the parser stack */ + char *include; /* Code to put at the start of the C file */ + char *error; /* Code to execute when an error is seen */ + char *overflow; /* Code to execute on a stack overflow */ + char *failure; /* Code to execute on parser failure */ + char *accept; /* Code to execute when the parser excepts */ + char *extracode; /* Code appended to the generated file */ + char *tokendest; /* Code to execute to destroy token data */ + char *vardest; /* Code for the default non-terminal destructor */ + char *filename; /* Name of the input file */ + char *outname; /* Name of the current output file */ + char *tokenprefix; /* A prefix added to token names in the .h file */ + int nconflict; /* Number of parsing conflicts */ + int tablesize; /* Size of the parse tables */ + int basisflag; /* Print only basis configurations */ + int has_fallback; /* True if any %fallback is seen in the grammar */ + int nolinenosflag; /* True if #line statements should not be printed */ + char *argv0; /* Name of the program */ +}; + +#define MemoryCheck(X) if((X)==0){ \ + extern void memory_error(); \ + memory_error(); \ +} + +/**************** From the file "table.h" *********************************/ +/* +** All code in this file has been automatically generated +** from a specification in the file +** "table.q" +** by the associative array code building program "aagen". +** Do not edit this file! Instead, edit the specification +** file, then rerun aagen. +*/ +/* +** Code for processing tables in the LEMON parser generator. +*/ + +/* Routines for handling a strings */ + +char *Strsafe(); + +void Strsafe_init(/* void */); +int Strsafe_insert(/* char * */); +char *Strsafe_find(/* char * */); + +/* Routines for handling symbols of the grammar */ + +struct symbol *Symbol_new(); +int Symbolcmpp(/* struct symbol **, struct symbol ** */); +void Symbol_init(/* void */); +int Symbol_insert(/* struct symbol *, char * */); +struct symbol *Symbol_find(/* char * */); +struct symbol *Symbol_Nth(/* int */); +int Symbol_count(/* */); +struct symbol **Symbol_arrayof(/* */); + +/* Routines to manage the state table */ + +int Configcmp(/* struct config *, struct config * */); +struct state *State_new(); +void State_init(/* void */); +int State_insert(/* struct state *, struct config * */); +struct state *State_find(/* struct config * */); +struct state **State_arrayof(/* */); + +/* Routines used for efficiency in Configlist_add */ + +void Configtable_init(/* void */); +int Configtable_insert(/* struct config * */); +struct config *Configtable_find(/* struct config * */); +void Configtable_clear(/* int(*)(struct config *) */); +/****************** From the file "action.c" *******************************/ +/* +** Routines processing parser actions in the LEMON parser generator. +*/ + +/* Allocate a new parser action */ +static struct action *Action_new(void){ + static struct action *freelist = 0; + struct action *new; + + if( freelist==0 ){ + int i; + int amt = 100; + freelist = (struct action *)calloc(amt, sizeof(struct action)); + if( freelist==0 ){ + fprintf(stderr,"Unable to allocate memory for a new parser action."); + exit(1); + } + for(i=0; i<amt-1; i++) freelist[i].next = &freelist[i+1]; + freelist[amt-1].next = 0; + } + new = freelist; + freelist = freelist->next; + return new; +} + +/* Compare two actions for sorting purposes. Return negative, zero, or +** positive if the first action is less than, equal to, or greater than +** the first +*/ +static int actioncmp( + struct action *ap1, + struct action *ap2 +){ + int rc; + rc = ap1->sp->index - ap2->sp->index; + if( rc==0 ){ + rc = (int)ap1->type - (int)ap2->type; + } + if( rc==0 && ap1->type==REDUCE ){ + rc = ap1->x.rp->index - ap2->x.rp->index; + } + return rc; +} + +/* Sort parser actions */ +static struct action *Action_sort( + struct action *ap +){ + ap = (struct action *)msort((char *)ap,(char **)&ap->next, + (int(*)(const char*,const char*))actioncmp); + return ap; +} + +void Action_add(app,type,sp,arg) +struct action **app; +enum e_action type; +struct symbol *sp; +char *arg; +{ + struct action *new; + new = Action_new(); + new->next = *app; + *app = new; + new->type = type; + new->sp = sp; + if( type==SHIFT ){ + new->x.stp = (struct state *)arg; + }else{ + new->x.rp = (struct rule *)arg; + } +} +/********************** New code to implement the "acttab" module ***********/ +/* +** This module implements routines use to construct the yy_action[] table. +*/ + +/* +** The state of the yy_action table under construction is an instance of +** the following structure +*/ +typedef struct acttab acttab; +struct acttab { + int nAction; /* Number of used slots in aAction[] */ + int nActionAlloc; /* Slots allocated for aAction[] */ + struct { + int lookahead; /* Value of the lookahead token */ + int action; /* Action to take on the given lookahead */ + } *aAction, /* The yy_action[] table under construction */ + *aLookahead; /* A single new transaction set */ + int mnLookahead; /* Minimum aLookahead[].lookahead */ + int mnAction; /* Action associated with mnLookahead */ + int mxLookahead; /* Maximum aLookahead[].lookahead */ + int nLookahead; /* Used slots in aLookahead[] */ + int nLookaheadAlloc; /* Slots allocated in aLookahead[] */ +}; + +/* Return the number of entries in the yy_action table */ +#define acttab_size(X) ((X)->nAction) + +/* The value for the N-th entry in yy_action */ +#define acttab_yyaction(X,N) ((X)->aAction[N].action) + +/* The value for the N-th entry in yy_lookahead */ +#define acttab_yylookahead(X,N) ((X)->aAction[N].lookahead) + +/* Free all memory associated with the given acttab */ +void acttab_free(acttab *p){ + free( p->aAction ); + free( p->aLookahead ); + free( p ); +} + +/* Allocate a new acttab structure */ +acttab *acttab_alloc(void){ + acttab *p = calloc( 1, sizeof(*p) ); + if( p==0 ){ + fprintf(stderr,"Unable to allocate memory for a new acttab."); + exit(1); + } + memset(p, 0, sizeof(*p)); + return p; +} + +/* Add a new action to the current transaction set +*/ +void acttab_action(acttab *p, int lookahead, int action){ + if( p->nLookahead>=p->nLookaheadAlloc ){ + p->nLookaheadAlloc += 25; + p->aLookahead = realloc( p->aLookahead, + sizeof(p->aLookahead[0])*p->nLookaheadAlloc ); + if( p->aLookahead==0 ){ + fprintf(stderr,"malloc failed\n"); + exit(1); + } + } + if( p->nLookahead==0 ){ + p->mxLookahead = lookahead; + p->mnLookahead = lookahead; + p->mnAction = action; + }else{ + if( p->mxLookahead<lookahead ) p->mxLookahead = lookahead; + if( p->mnLookahead>lookahead ){ + p->mnLookahead = lookahead; + p->mnAction = action; + } + } + p->aLookahead[p->nLookahead].lookahead = lookahead; + p->aLookahead[p->nLookahead].action = action; + p->nLookahead++; +} + +/* +** Add the transaction set built up with prior calls to acttab_action() +** into the current action table. Then reset the transaction set back +** to an empty set in preparation for a new round of acttab_action() calls. +** +** Return the offset into the action table of the new transaction. +*/ +int acttab_insert(acttab *p){ + int i, j, k, n; + assert( p->nLookahead>0 ); + + /* Make sure we have enough space to hold the expanded action table + ** in the worst case. The worst case occurs if the transaction set + ** must be appended to the current action table + */ + n = p->mxLookahead + 1; + if( p->nAction + n >= p->nActionAlloc ){ + int oldAlloc = p->nActionAlloc; + p->nActionAlloc = p->nAction + n + p->nActionAlloc + 20; + p->aAction = realloc( p->aAction, + sizeof(p->aAction[0])*p->nActionAlloc); + if( p->aAction==0 ){ + fprintf(stderr,"malloc failed\n"); + exit(1); + } + for(i=oldAlloc; i<p->nActionAlloc; i++){ + p->aAction[i].lookahead = -1; + p->aAction[i].action = -1; + } + } + + /* Scan the existing action table looking for an offset where we can + ** insert the current transaction set. Fall out of the loop when that + ** offset is found. In the worst case, we fall out of the loop when + ** i reaches p->nAction, which means we append the new transaction set. + ** + ** i is the index in p->aAction[] where p->mnLookahead is inserted. + */ + for(i=0; i<p->nAction+p->mnLookahead; i++){ + if( p->aAction[i].lookahead<0 ){ + for(j=0; j<p->nLookahead; j++){ + k = p->aLookahead[j].lookahead - p->mnLookahead + i; + if( k<0 ) break; + if( p->aAction[k].lookahead>=0 ) break; + } + if( j<p->nLookahead ) continue; + for(j=0; j<p->nAction; j++){ + if( p->aAction[j].lookahead==j+p->mnLookahead-i ) break; + } + if( j==p->nAction ){ + break; /* Fits in empty slots */ + } + }else if( p->aAction[i].lookahead==p->mnLookahead ){ + if( p->aAction[i].action!=p->mnAction ) continue; + for(j=0; j<p->nLookahead; j++){ + k = p->aLookahead[j].lookahead - p->mnLookahead + i; + if( k<0 || k>=p->nAction ) break; + if( p->aLookahead[j].lookahead!=p->aAction[k].lookahead ) break; + if( p->aLookahead[j].action!=p->aAction[k].action ) break; + } + if( j<p->nLookahead ) continue; + n = 0; + for(j=0; j<p->nAction; j++){ + if( p->aAction[j].lookahead<0 ) continue; + if( p->aAction[j].lookahead==j+p->mnLookahead-i ) n++; + } + if( n==p->nLookahead ){ + break; /* Same as a prior transaction set */ + } + } + } + /* Insert transaction set at index i. */ + for(j=0; j<p->nLookahead; j++){ + k = p->aLookahead[j].lookahead - p->mnLookahead + i; + p->aAction[k] = p->aLookahead[j]; + if( k>=p->nAction ) p->nAction = k+1; + } + p->nLookahead = 0; + + /* Return the offset that is added to the lookahead in order to get the + ** index into yy_action of the action */ + return i - p->mnLookahead; +} + +/********************** From the file "build.c" *****************************/ +/* +** Routines to construction the finite state machine for the LEMON +** parser generator. +*/ + +/* Find a precedence symbol of every rule in the grammar. +** +** Those rules which have a precedence symbol coded in the input +** grammar using the "[symbol]" construct will already have the +** rp->precsym field filled. Other rules take as their precedence +** symbol the first RHS symbol with a defined precedence. If there +** are not RHS symbols with a defined precedence, the precedence +** symbol field is left blank. +*/ +void FindRulePrecedences(xp) +struct lemon *xp; +{ + struct rule *rp; + for(rp=xp->rule; rp; rp=rp->next){ + if( rp->precsym==0 ){ + int i, j; + for(i=0; i<rp->nrhs && rp->precsym==0; i++){ + struct symbol *sp = rp->rhs[i]; + if( sp->type==MULTITERMINAL ){ + for(j=0; j<sp->nsubsym; j++){ + if( sp->subsym[j]->prec>=0 ){ + rp->precsym = sp->subsym[j]; + break; + } + } + }else if( sp->prec>=0 ){ + rp->precsym = rp->rhs[i]; + } + } + } + } + return; +} + +/* Find all nonterminals which will generate the empty string. +** Then go back and compute the first sets of every nonterminal. +** The first set is the set of all terminal symbols which can begin +** a string generated by that nonterminal. +*/ +void FindFirstSets(lemp) +struct lemon *lemp; +{ + int i, j; + struct rule *rp; + int progress; + + for(i=0; i<lemp->nsymbol; i++){ + lemp->symbols[i]->lambda = LEMON_FALSE; + } + for(i=lemp->nterminal; i<lemp->nsymbol; i++){ + lemp->symbols[i]->firstset = SetNew(); + } + + /* First compute all lambdas */ + do{ + progress = 0; + for(rp=lemp->rule; rp; rp=rp->next){ + if( rp->lhs->lambda ) continue; + for(i=0; i<rp->nrhs; i++){ + struct symbol *sp = rp->rhs[i]; + if( sp->type!=TERMINAL || sp->lambda==LEMON_FALSE ) break; + } + if( i==rp->nrhs ){ + rp->lhs->lambda = LEMON_TRUE; + progress = 1; + } + } + }while( progress ); + + /* Now compute all first sets */ + do{ + struct symbol *s1, *s2; + progress = 0; + for(rp=lemp->rule; rp; rp=rp->next){ + s1 = rp->lhs; + for(i=0; i<rp->nrhs; i++){ + s2 = rp->rhs[i]; + if( s2->type==TERMINAL ){ + progress += SetAdd(s1->firstset,s2->index); + break; + }else if( s2->type==MULTITERMINAL ){ + for(j=0; j<s2->nsubsym; j++){ + progress += SetAdd(s1->firstset,s2->subsym[j]->index); + } + break; + }else if( s1==s2 ){ + if( s1->lambda==LEMON_FALSE ) break; + }else{ + progress += SetUnion(s1->firstset,s2->firstset); + if( s2->lambda==LEMON_FALSE ) break; + } + } + } + }while( progress ); + return; +} + +/* Compute all LR(0) states for the grammar. Links +** are added to between some states so that the LR(1) follow sets +** can be computed later. +*/ +PRIVATE struct state *getstate(/* struct lemon * */); /* forward reference */ +void FindStates(lemp) +struct lemon *lemp; +{ + struct symbol *sp; + struct rule *rp; + + Configlist_init(); + + /* Find the start symbol */ + if( lemp->start ){ + sp = Symbol_find(lemp->start); + if( sp==0 ){ + ErrorMsg(lemp->filename,0, +"The specified start symbol \"%s\" is not \ +in a nonterminal of the grammar. \"%s\" will be used as the start \ +symbol instead.",lemp->start,lemp->rule->lhs->name); + lemp->errorcnt++; + sp = lemp->rule->lhs; + } + }else{ + sp = lemp->rule->lhs; + } + + /* Make sure the start symbol doesn't occur on the right-hand side of + ** any rule. Report an error if it does. (YACC would generate a new + ** start symbol in this case.) */ + for(rp=lemp->rule; rp; rp=rp->next){ + int i; + for(i=0; i<rp->nrhs; i++){ + if( rp->rhs[i]==sp ){ /* FIX ME: Deal with multiterminals */ + ErrorMsg(lemp->filename,0, +"The start symbol \"%s\" occurs on the \ +right-hand side of a rule. This will result in a parser which \ +does not work properly.",sp->name); + lemp->errorcnt++; + } + } + } + + /* The basis configuration set for the first state + ** is all rules which have the start symbol as their + ** left-hand side */ + for(rp=sp->rule; rp; rp=rp->nextlhs){ + struct config *newcfp; + rp->lhsStart = 1; + newcfp = Configlist_addbasis(rp,0); + SetAdd(newcfp->fws,0); + } + + /* Compute the first state. All other states will be + ** computed automatically during the computation of the first one. + ** The returned pointer to the first state is not used. */ + (void)getstate(lemp); + return; +} + +/* Return a pointer to a state which is described by the configuration +** list which has been built from calls to Configlist_add. +*/ +PRIVATE void buildshifts(/* struct lemon *, struct state * */); /* Forwd ref */ +PRIVATE struct state *getstate(lemp) +struct lemon *lemp; +{ + struct config *cfp, *bp; + struct state *stp; + + /* Extract the sorted basis of the new state. The basis was constructed + ** by prior calls to "Configlist_addbasis()". */ + Configlist_sortbasis(); + bp = Configlist_basis(); + + /* Get a state with the same basis */ + stp = State_find(bp); + if( stp ){ + /* A state with the same basis already exists! Copy all the follow-set + ** propagation links from the state under construction into the + ** preexisting state, then return a pointer to the preexisting state */ + struct config *x, *y; + for(x=bp, y=stp->bp; x && y; x=x->bp, y=y->bp){ + Plink_copy(&y->bplp,x->bplp); + Plink_delete(x->fplp); + x->fplp = x->bplp = 0; + } + cfp = Configlist_return(); + Configlist_eat(cfp); + }else{ + /* This really is a new state. Construct all the details */ + Configlist_closure(lemp); /* Compute the configuration closure */ + Configlist_sort(); /* Sort the configuration closure */ + cfp = Configlist_return(); /* Get a pointer to the config list */ + stp = State_new(); /* A new state structure */ + MemoryCheck(stp); + stp->bp = bp; /* Remember the configuration basis */ + stp->cfp = cfp; /* Remember the configuration closure */ + stp->statenum = lemp->nstate++; /* Every state gets a sequence number */ + stp->ap = 0; /* No actions, yet. */ + State_insert(stp,stp->bp); /* Add to the state table */ + buildshifts(lemp,stp); /* Recursively compute successor states */ + } + return stp; +} + +/* +** Return true if two symbols are the same. +*/ +int same_symbol(a,b) +struct symbol *a; +struct symbol *b; +{ + int i; + if( a==b ) return 1; + if( a->type!=MULTITERMINAL ) return 0; + if( b->type!=MULTITERMINAL ) return 0; + if( a->nsubsym!=b->nsubsym ) return 0; + for(i=0; i<a->nsubsym; i++){ + if( a->subsym[i]!=b->subsym[i] ) return 0; + } + return 1; +} + +/* Construct all successor states to the given state. A "successor" +** state is any state which can be reached by a shift action. +*/ +PRIVATE void buildshifts(lemp,stp) +struct lemon *lemp; +struct state *stp; /* The state from which successors are computed */ +{ + struct config *cfp; /* For looping thru the config closure of "stp" */ + struct config *bcfp; /* For the inner loop on config closure of "stp" */ + struct config *new; /* */ + struct symbol *sp; /* Symbol following the dot in configuration "cfp" */ + struct symbol *bsp; /* Symbol following the dot in configuration "bcfp" */ + struct state *newstp; /* A pointer to a successor state */ + + /* Each configuration becomes complete after it contibutes to a successor + ** state. Initially, all configurations are incomplete */ + for(cfp=stp->cfp; cfp; cfp=cfp->next) cfp->status = INCOMPLETE; + + /* Loop through all configurations of the state "stp" */ + for(cfp=stp->cfp; cfp; cfp=cfp->next){ + if( cfp->status==COMPLETE ) continue; /* Already used by inner loop */ + if( cfp->dot>=cfp->rp->nrhs ) continue; /* Can't shift this config */ + Configlist_reset(); /* Reset the new config set */ + sp = cfp->rp->rhs[cfp->dot]; /* Symbol after the dot */ + + /* For every configuration in the state "stp" which has the symbol "sp" + ** following its dot, add the same configuration to the basis set under + ** construction but with the dot shifted one symbol to the right. */ + for(bcfp=cfp; bcfp; bcfp=bcfp->next){ + if( bcfp->status==COMPLETE ) continue; /* Already used */ + if( bcfp->dot>=bcfp->rp->nrhs ) continue; /* Can't shift this one */ + bsp = bcfp->rp->rhs[bcfp->dot]; /* Get symbol after dot */ + if( !same_symbol(bsp,sp) ) continue; /* Must be same as for "cfp" */ + bcfp->status = COMPLETE; /* Mark this config as used */ + new = Configlist_addbasis(bcfp->rp,bcfp->dot+1); + Plink_add(&new->bplp,bcfp); + } + + /* Get a pointer to the state described by the basis configuration set + ** constructed in the preceding loop */ + newstp = getstate(lemp); + + /* The state "newstp" is reached from the state "stp" by a shift action + ** on the symbol "sp" */ + if( sp->type==MULTITERMINAL ){ + int i; + for(i=0; i<sp->nsubsym; i++){ + Action_add(&stp->ap,SHIFT,sp->subsym[i],(char*)newstp); + } + }else{ + Action_add(&stp->ap,SHIFT,sp,(char *)newstp); + } + } +} + +/* +** Construct the propagation links +*/ +void FindLinks(lemp) +struct lemon *lemp; +{ + int i; + struct config *cfp, *other; + struct state *stp; + struct plink *plp; + + /* Housekeeping detail: + ** Add to every propagate link a pointer back to the state to + ** which the link is attached. */ + for(i=0; i<lemp->nstate; i++){ + stp = lemp->sorted[i]; + for(cfp=stp->cfp; cfp; cfp=cfp->next){ + cfp->stp = stp; + } + } + + /* Convert all backlinks into forward links. Only the forward + ** links are used in the follow-set computation. */ + for(i=0; i<lemp->nstate; i++){ + stp = lemp->sorted[i]; + for(cfp=stp->cfp; cfp; cfp=cfp->next){ + for(plp=cfp->bplp; plp; plp=plp->next){ + other = plp->cfp; + Plink_add(&other->fplp,cfp); + } + } + } +} + +/* Compute all followsets. +** +** A followset is the set of all symbols which can come immediately +** after a configuration. +*/ +void FindFollowSets(lemp) +struct lemon *lemp; +{ + int i; + struct config *cfp; + struct plink *plp; + int progress; + int change; + + for(i=0; i<lemp->nstate; i++){ + for(cfp=lemp->sorted[i]->cfp; cfp; cfp=cfp->next){ + cfp->status = INCOMPLETE; + } + } + + do{ + progress = 0; + for(i=0; i<lemp->nstate; i++){ + for(cfp=lemp->sorted[i]->cfp; cfp; cfp=cfp->next){ + if( cfp->status==COMPLETE ) continue; + for(plp=cfp->fplp; plp; plp=plp->next){ + change = SetUnion(plp->cfp->fws,cfp->fws); + if( change ){ + plp->cfp->status = INCOMPLETE; + progress = 1; + } + } + cfp->status = COMPLETE; + } + } + }while( progress ); +} + +static int resolve_conflict(); + +/* Compute the reduce actions, and resolve conflicts. +*/ +void FindActions(lemp) +struct lemon *lemp; +{ + int i,j; + struct config *cfp; + struct state *stp; + struct symbol *sp; + struct rule *rp; + + /* Add all of the reduce actions + ** A reduce action is added for each element of the followset of + ** a configuration which has its dot at the extreme right. + */ + for(i=0; i<lemp->nstate; i++){ /* Loop over all states */ + stp = lemp->sorted[i]; + for(cfp=stp->cfp; cfp; cfp=cfp->next){ /* Loop over all configurations */ + if( cfp->rp->nrhs==cfp->dot ){ /* Is dot at extreme right? */ + for(j=0; j<lemp->nterminal; j++){ + if( SetFind(cfp->fws,j) ){ + /* Add a reduce action to the state "stp" which will reduce by the + ** rule "cfp->rp" if the lookahead symbol is "lemp->symbols[j]" */ + Action_add(&stp->ap,REDUCE,lemp->symbols[j],(char *)cfp->rp); + } + } + } + } + } + + /* Add the accepting token */ + if( lemp->start ){ + sp = Symbol_find(lemp->start); + if( sp==0 ) sp = lemp->rule->lhs; + }else{ + sp = lemp->rule->lhs; + } + /* Add to the first state (which is always the starting state of the + ** finite state machine) an action to ACCEPT if the lookahead is the + ** start nonterminal. */ + Action_add(&lemp->sorted[0]->ap,ACCEPT,sp,0); + + /* Resolve conflicts */ + for(i=0; i<lemp->nstate; i++){ + struct action *ap, *nap; + struct state *stp; + stp = lemp->sorted[i]; + /* assert( stp->ap ); */ + stp->ap = Action_sort(stp->ap); + for(ap=stp->ap; ap && ap->next; ap=ap->next){ + for(nap=ap->next; nap && nap->sp==ap->sp; nap=nap->next){ + /* The two actions "ap" and "nap" have the same lookahead. + ** Figure out which one should be used */ + lemp->nconflict += resolve_conflict(ap,nap,lemp->errsym); + } + } + } + + /* Report an error for each rule that can never be reduced. */ + for(rp=lemp->rule; rp; rp=rp->next) rp->canReduce = LEMON_FALSE; + for(i=0; i<lemp->nstate; i++){ + struct action *ap; + for(ap=lemp->sorted[i]->ap; ap; ap=ap->next){ + if( ap->type==REDUCE ) ap->x.rp->canReduce = LEMON_TRUE; + } + } + for(rp=lemp->rule; rp; rp=rp->next){ + if( rp->canReduce ) continue; + ErrorMsg(lemp->filename,rp->ruleline,"This rule can not be reduced.\n"); + lemp->errorcnt++; + } +} + +/* Resolve a conflict between the two given actions. If the +** conflict can't be resolved, return non-zero. +** +** NO LONGER TRUE: +** To resolve a conflict, first look to see if either action +** is on an error rule. In that case, take the action which +** is not associated with the error rule. If neither or both +** actions are associated with an error rule, then try to +** use precedence to resolve the conflict. +** +** If either action is a SHIFT, then it must be apx. This +** function won't work if apx->type==REDUCE and apy->type==SHIFT. +*/ +static int resolve_conflict(apx,apy,errsym) +struct action *apx; +struct action *apy; +struct symbol *errsym; /* The error symbol (if defined. NULL otherwise) */ +{ + struct symbol *spx, *spy; + int errcnt = 0; + assert( apx->sp==apy->sp ); /* Otherwise there would be no conflict */ + if( apx->type==SHIFT && apy->type==SHIFT ){ + apy->type = SSCONFLICT; + errcnt++; + } + if( apx->type==SHIFT && apy->type==REDUCE ){ + spx = apx->sp; + spy = apy->x.rp->precsym; + if( spy==0 || spx->prec<0 || spy->prec<0 ){ + /* Not enough precedence information. */ + apy->type = SRCONFLICT; + errcnt++; + }else if( spx->prec>spy->prec ){ /* Lower precedence wins */ + apy->type = RD_RESOLVED; + }else if( spx->prec<spy->prec ){ + apx->type = SH_RESOLVED; + }else if( spx->prec==spy->prec && spx->assoc==RIGHT ){ /* Use operator */ + apy->type = RD_RESOLVED; /* associativity */ + }else if( spx->prec==spy->prec && spx->assoc==LEFT ){ /* to break tie */ + apx->type = SH_RESOLVED; + }else{ + assert( spx->prec==spy->prec && spx->assoc==NONE ); + apy->type = SRCONFLICT; + errcnt++; + } + }else if( apx->type==REDUCE && apy->type==REDUCE ){ + spx = apx->x.rp->precsym; + spy = apy->x.rp->precsym; + if( spx==0 || spy==0 || spx->prec<0 || + spy->prec<0 || spx->prec==spy->prec ){ + apy->type = RRCONFLICT; + errcnt++; + }else if( spx->prec>spy->prec ){ + apy->type = RD_RESOLVED; + }else if( spx->prec<spy->prec ){ + apx->type = RD_RESOLVED; + } + }else{ + assert( + apx->type==SH_RESOLVED || + apx->type==RD_RESOLVED || + apx->type==SSCONFLICT || + apx->type==SRCONFLICT || + apx->type==RRCONFLICT || + apy->type==SH_RESOLVED || + apy->type==RD_RESOLVED || + apy->type==SSCONFLICT || + apy->type==SRCONFLICT || + apy->type==RRCONFLICT + ); + /* The REDUCE/SHIFT case cannot happen because SHIFTs come before + ** REDUCEs on the list. If we reach this point it must be because + ** the parser conflict had already been resolved. */ + } + return errcnt; +} +/********************* From the file "configlist.c" *************************/ +/* +** Routines to processing a configuration list and building a state +** in the LEMON parser generator. +*/ + +static struct config *freelist = 0; /* List of free configurations */ +static struct config *current = 0; /* Top of list of configurations */ +static struct config **currentend = 0; /* Last on list of configs */ +static struct config *basis = 0; /* Top of list of basis configs */ +static struct config **basisend = 0; /* End of list of basis configs */ + +/* Return a pointer to a new configuration */ +PRIVATE struct config *newconfig(){ + struct config *new; + if( freelist==0 ){ + int i; + int amt = 3; + freelist = (struct config *)calloc( amt, sizeof(struct config) ); + if( freelist==0 ){ + fprintf(stderr,"Unable to allocate memory for a new configuration."); + exit(1); + } + for(i=0; i<amt-1; i++) freelist[i].next = &freelist[i+1]; + freelist[amt-1].next = 0; + } + new = freelist; + freelist = freelist->next; + return new; +} + +/* The configuration "old" is no longer used */ +PRIVATE void deleteconfig(old) +struct config *old; +{ + old->next = freelist; + freelist = old; +} + +/* Initialized the configuration list builder */ +void Configlist_init(){ + current = 0; + currentend = ¤t; + basis = 0; + basisend = &basis; + Configtable_init(); + return; +} + +/* Initialized the configuration list builder */ +void Configlist_reset(){ + current = 0; + currentend = ¤t; + basis = 0; + basisend = &basis; + Configtable_clear(0); + return; +} + +/* Add another configuration to the configuration list */ +struct config *Configlist_add(rp,dot) +struct rule *rp; /* The rule */ +int dot; /* Index into the RHS of the rule where the dot goes */ +{ + struct config *cfp, model; + + assert( currentend!=0 ); + model.rp = rp; + model.dot = dot; + cfp = Configtable_find(&model); + if( cfp==0 ){ + cfp = newconfig(); + cfp->rp = rp; + cfp->dot = dot; + cfp->fws = SetNew(); + cfp->stp = 0; + cfp->fplp = cfp->bplp = 0; + cfp->next = 0; + cfp->bp = 0; + *currentend = cfp; + currentend = &cfp->next; + Configtable_insert(cfp); + } + return cfp; +} + +/* Add a basis configuration to the configuration list */ +struct config *Configlist_addbasis(rp,dot) +struct rule *rp; +int dot; +{ + struct config *cfp, model; + + assert( basisend!=0 ); + assert( currentend!=0 ); + model.rp = rp; + model.dot = dot; + cfp = Configtable_find(&model); + if( cfp==0 ){ + cfp = newconfig(); + cfp->rp = rp; + cfp->dot = dot; + cfp->fws = SetNew(); + cfp->stp = 0; + cfp->fplp = cfp->bplp = 0; + cfp->next = 0; + cfp->bp = 0; + *currentend = cfp; + currentend = &cfp->next; + *basisend = cfp; + basisend = &cfp->bp; + Configtable_insert(cfp); + } + return cfp; +} + +/* Compute the closure of the configuration list */ +void Configlist_closure(lemp) +struct lemon *lemp; +{ + struct config *cfp, *newcfp; + struct rule *rp, *newrp; + struct symbol *sp, *xsp; + int i, dot; + + assert( currentend!=0 ); + for(cfp=current; cfp; cfp=cfp->next){ + rp = cfp->rp; + dot = cfp->dot; + if( dot>=rp->nrhs ) continue; + sp = rp->rhs[dot]; + if( sp->type==NONTERMINAL ){ + if( sp->rule==0 && sp!=lemp->errsym ){ + ErrorMsg(lemp->filename,rp->line,"Nonterminal \"%s\" has no rules.", + sp->name); + lemp->errorcnt++; + } + for(newrp=sp->rule; newrp; newrp=newrp->nextlhs){ + newcfp = Configlist_add(newrp,0); + for(i=dot+1; i<rp->nrhs; i++){ + xsp = rp->rhs[i]; + if( xsp->type==TERMINAL ){ + SetAdd(newcfp->fws,xsp->index); + break; + }else if( xsp->type==MULTITERMINAL ){ + int k; + for(k=0; k<xsp->nsubsym; k++){ + SetAdd(newcfp->fws, xsp->subsym[k]->index); + } + break; + }else{ + SetUnion(newcfp->fws,xsp->firstset); + if( xsp->lambda==LEMON_FALSE ) break; + } + } + if( i==rp->nrhs ) Plink_add(&cfp->fplp,newcfp); + } + } + } + return; +} + +/* Sort the configuration list */ +void Configlist_sort(){ + current = (struct config *)msort((char *)current,(char **)&(current->next),Configcmp); + currentend = 0; + return; +} + +/* Sort the basis configuration list */ +void Configlist_sortbasis(){ + basis = (struct config *)msort((char *)current,(char **)&(current->bp),Configcmp); + basisend = 0; + return; +} + +/* Return a pointer to the head of the configuration list and +** reset the list */ +struct config *Configlist_return(){ + struct config *old; + old = current; + current = 0; + currentend = 0; + return old; +} + +/* Return a pointer to the head of the configuration list and +** reset the list */ +struct config *Configlist_basis(){ + struct config *old; + old = basis; + basis = 0; + basisend = 0; + return old; +} + +/* Free all elements of the given configuration list */ +void Configlist_eat(cfp) +struct config *cfp; +{ + struct config *nextcfp; + for(; cfp; cfp=nextcfp){ + nextcfp = cfp->next; + assert( cfp->fplp==0 ); + assert( cfp->bplp==0 ); + if( cfp->fws ) SetFree(cfp->fws); + deleteconfig(cfp); + } + return; +} +/***************** From the file "error.c" *********************************/ +/* +** Code for printing error message. +*/ + +/* Find a good place to break "msg" so that its length is at least "min" +** but no more than "max". Make the point as close to max as possible. +*/ +static int findbreak(msg,min,max) +char *msg; +int min; +int max; +{ + int i,spot; + char c; + for(i=spot=min; i<=max; i++){ + c = msg[i]; + if( c=='\t' ) msg[i] = ' '; + if( c=='\n' ){ msg[i] = ' '; spot = i; break; } + if( c==0 ){ spot = i; break; } + if( c=='-' && i<max-1 ) spot = i+1; + if( c==' ' ) spot = i; + } + return spot; +} + +/* +** The error message is split across multiple lines if necessary. The +** splits occur at a space, if there is a space available near the end +** of the line. +*/ +#define ERRMSGSIZE 10000 /* Hope this is big enough. No way to error check */ +#define LINEWIDTH 79 /* Max width of any output line */ +#define PREFIXLIMIT 30 /* Max width of the prefix on each line */ +void ErrorMsg(const char *filename, int lineno, const char *format, ...){ + char errmsg[ERRMSGSIZE]; + char prefix[PREFIXLIMIT+10]; + int errmsgsize; + int prefixsize; + int availablewidth; + va_list ap; + int end, restart, base; + + va_start(ap, format); + /* Prepare a prefix to be prepended to every output line */ + if( lineno>0 ){ + sprintf(prefix,"%.*s:%d: ",PREFIXLIMIT-10,filename,lineno); + }else{ + sprintf(prefix,"%.*s: ",PREFIXLIMIT-10,filename); + } + prefixsize = lemonStrlen(prefix); + availablewidth = LINEWIDTH - prefixsize; + + /* Generate the error message */ + vsprintf(errmsg,format,ap); + va_end(ap); + errmsgsize = lemonStrlen(errmsg); + /* Remove trailing '\n's from the error message. */ + while( errmsgsize>0 && errmsg[errmsgsize-1]=='\n' ){ + errmsg[--errmsgsize] = 0; + } + + /* Print the error message */ + base = 0; + while( errmsg[base]!=0 ){ + end = restart = findbreak(&errmsg[base],0,availablewidth); + restart += base; + while( errmsg[restart]==' ' ) restart++; + fprintf(stdout,"%s%.*s\n",prefix,end,&errmsg[base]); + base = restart; + } +} +/**************** From the file "main.c" ************************************/ +/* +** Main program file for the LEMON parser generator. +*/ + +/* Report an out-of-memory condition and abort. This function +** is used mostly by the "MemoryCheck" macro in struct.h +*/ +void memory_error(){ + fprintf(stderr,"Out of memory. Aborting...\n"); + exit(1); +} + +static int nDefine = 0; /* Number of -D options on the command line */ +static char **azDefine = 0; /* Name of the -D macros */ + +/* This routine is called with the argument to each -D command-line option. +** Add the macro defined to the azDefine array. +*/ +static void handle_D_option(char *z){ + char **paz; + nDefine++; + azDefine = realloc(azDefine, sizeof(azDefine[0])*nDefine); + if( azDefine==0 ){ + fprintf(stderr,"out of memory\n"); + exit(1); + } + paz = &azDefine[nDefine-1]; + *paz = malloc( lemonStrlen(z)+1 ); + if( *paz==0 ){ + fprintf(stderr,"out of memory\n"); + exit(1); + } + strcpy(*paz, z); + for(z=*paz; *z && *z!='='; z++){} + *z = 0; +} + + +/* The main program. Parse the command line and do it... */ +int main(argc,argv) +int argc; +char **argv; +{ + static int version = 0; + static int rpflag = 0; + static int basisflag = 0; + static int compress = 0; + static int quiet = 0; + static int statistics = 0; + static int mhflag = 0; + static int nolinenosflag = 0; + static struct s_options options[] = { + {OPT_FLAG, "b", (char*)&basisflag, "Print only the basis in report."}, + {OPT_FLAG, "c", (char*)&compress, "Don't compress the action table."}, + {OPT_FSTR, "D", (char*)handle_D_option, "Define an %ifdef macro."}, + {OPT_FLAG, "g", (char*)&rpflag, "Print grammar without actions."}, + {OPT_FLAG, "m", (char*)&mhflag, "Output a makeheaders compatible file."}, + {OPT_FLAG, "l", (char*)&nolinenosflag, "Do not print #line statements."}, + {OPT_FLAG, "q", (char*)&quiet, "(Quiet) Don't print the report file."}, + {OPT_FLAG, "s", (char*)&statistics, + "Print parser stats to standard output."}, + {OPT_FLAG, "x", (char*)&version, "Print the version number."}, + {OPT_FLAG,0,0,0} + }; + int i; + struct lemon lem; + + OptInit(argv,options,stderr); + if( version ){ + printf("Lemon version 1.0\n"); + exit(0); + } + if( OptNArgs()!=1 ){ + fprintf(stderr,"Exactly one filename argument is required.\n"); + exit(1); + } + memset(&lem, 0, sizeof(lem)); + lem.errorcnt = 0; + + /* Initialize the machine */ + Strsafe_init(); + Symbol_init(); + State_init(); + lem.argv0 = argv[0]; + lem.filename = OptArg(0); + lem.basisflag = basisflag; + lem.nolinenosflag = nolinenosflag; + Symbol_new("$"); + lem.errsym = Symbol_new("error"); + lem.errsym->useCnt = 0; + + /* Parse the input file */ + Parse(&lem); + if( lem.errorcnt ) exit(lem.errorcnt); + if( lem.nrule==0 ){ + fprintf(stderr,"Empty grammar.\n"); + exit(1); + } + + /* Count and index the symbols of the grammar */ + lem.nsymbol = Symbol_count(); + Symbol_new("{default}"); + lem.symbols = Symbol_arrayof(); + for(i=0; i<=lem.nsymbol; i++) lem.symbols[i]->index = i; + qsort(lem.symbols,lem.nsymbol+1,sizeof(struct symbol*), + (int(*)())Symbolcmpp); + for(i=0; i<=lem.nsymbol; i++) lem.symbols[i]->index = i; + for(i=1; isupper(lem.symbols[i]->name[0]); i++); + lem.nterminal = i; + + /* Generate a reprint of the grammar, if requested on the command line */ + if( rpflag ){ + Reprint(&lem); + }else{ + /* Initialize the size for all follow and first sets */ + SetSize(lem.nterminal+1); + + /* Find the precedence for every production rule (that has one) */ + FindRulePrecedences(&lem); + + /* Compute the lambda-nonterminals and the first-sets for every + ** nonterminal */ + FindFirstSets(&lem); + + /* Compute all LR(0) states. Also record follow-set propagation + ** links so that the follow-set can be computed later */ + lem.nstate = 0; + FindStates(&lem); + lem.sorted = State_arrayof(); + + /* Tie up loose ends on the propagation links */ + FindLinks(&lem); + + /* Compute the follow set of every reducible configuration */ + FindFollowSets(&lem); + + /* Compute the action tables */ + FindActions(&lem); + + /* Compress the action tables */ + if( compress==0 ) CompressTables(&lem); + + /* Reorder and renumber the states so that states with fewer choices + ** occur at the end. */ + ResortStates(&lem); + + /* Generate a report of the parser generated. (the "y.output" file) */ + if( !quiet ) ReportOutput(&lem); + + /* Generate the source code for the parser */ + ReportTable(&lem, mhflag); + + /* Produce a header file for use by the scanner. (This step is + ** omitted if the "-m" option is used because makeheaders will + ** generate the file for us.) */ + if( !mhflag ) ReportHeader(&lem); + } + if( statistics ){ + printf("Parser statistics: %d terminals, %d nonterminals, %d rules\n", + lem.nterminal, lem.nsymbol - lem.nterminal, lem.nrule); + printf(" %d states, %d parser table entries, %d conflicts\n", + lem.nstate, lem.tablesize, lem.nconflict); + } + if( lem.nconflict ){ + fprintf(stderr,"%d parsing conflicts.\n",lem.nconflict); + } + exit(lem.errorcnt + lem.nconflict); + return (lem.errorcnt + lem.nconflict); +} +/******************** From the file "msort.c" *******************************/ +/* +** A generic merge-sort program. +** +** USAGE: +** Let "ptr" be a pointer to some structure which is at the head of +** a null-terminated list. Then to sort the list call: +** +** ptr = msort(ptr,&(ptr->next),cmpfnc); +** +** In the above, "cmpfnc" is a pointer to a function which compares +** two instances of the structure and returns an integer, as in +** strcmp. The second argument is a pointer to the pointer to the +** second element of the linked list. This address is used to compute +** the offset to the "next" field within the structure. The offset to +** the "next" field must be constant for all structures in the list. +** +** The function returns a new pointer which is the head of the list +** after sorting. +** +** ALGORITHM: +** Merge-sort. +*/ + +/* +** Return a pointer to the next structure in the linked list. +*/ +#define NEXT(A) (*(char**)(((unsigned long)A)+offset)) + +/* +** Inputs: +** a: A sorted, null-terminated linked list. (May be null). +** b: A sorted, null-terminated linked list. (May be null). +** cmp: A pointer to the comparison function. +** offset: Offset in the structure to the "next" field. +** +** Return Value: +** A pointer to the head of a sorted list containing the elements +** of both a and b. +** +** Side effects: +** The "next" pointers for elements in the lists a and b are +** changed. +*/ +static char *merge( + char *a, + char *b, + int (*cmp)(const char*,const char*), + int offset +){ + char *ptr, *head; + + if( a==0 ){ + head = b; + }else if( b==0 ){ + head = a; + }else{ + if( (*cmp)(a,b)<0 ){ + ptr = a; + a = NEXT(a); + }else{ + ptr = b; + b = NEXT(b); + } + head = ptr; + while( a && b ){ + if( (*cmp)(a,b)<0 ){ + NEXT(ptr) = a; + ptr = a; + a = NEXT(a); + }else{ + NEXT(ptr) = b; + ptr = b; + b = NEXT(b); + } + } + if( a ) NEXT(ptr) = a; + else NEXT(ptr) = b; + } + return head; +} + +/* +** Inputs: +** list: Pointer to a singly-linked list of structures. +** next: Pointer to pointer to the second element of the list. +** cmp: A comparison function. +** +** Return Value: +** A pointer to the head of a sorted list containing the elements +** orginally in list. +** +** Side effects: +** The "next" pointers for elements in list are changed. +*/ +#define LISTSIZE 30 +static char *msort( + char *list, + char **next, + int (*cmp)(const char*,const char*) +){ + unsigned long offset; + char *ep; + char *set[LISTSIZE]; + int i; + offset = (unsigned long)next - (unsigned long)list; + for(i=0; i<LISTSIZE; i++) set[i] = 0; + while( list ){ + ep = list; + list = NEXT(list); + NEXT(ep) = 0; + for(i=0; i<LISTSIZE-1 && set[i]!=0; i++){ + ep = merge(ep,set[i],cmp,offset); + set[i] = 0; + } + set[i] = ep; + } + ep = 0; + for(i=0; i<LISTSIZE; i++) if( set[i] ) ep = merge(ep,set[i],cmp,offset); + return ep; +} +/************************ From the file "option.c" **************************/ +static char **argv; +static struct s_options *op; +static FILE *errstream; + +#define ISOPT(X) ((X)[0]=='-'||(X)[0]=='+'||strchr((X),'=')!=0) + +/* +** Print the command line with a carrot pointing to the k-th character +** of the n-th field. +*/ +static void errline(n,k,err) +int n; +int k; +FILE *err; +{ + int spcnt, i; + if( argv[0] ) fprintf(err,"%s",argv[0]); + spcnt = lemonStrlen(argv[0]) + 1; + for(i=1; i<n && argv[i]; i++){ + fprintf(err," %s",argv[i]); + spcnt += lemonStrlen(argv[i])+1; + } + spcnt += k; + for(; argv[i]; i++) fprintf(err," %s",argv[i]); + if( spcnt<20 ){ + fprintf(err,"\n%*s^-- here\n",spcnt,""); + }else{ + fprintf(err,"\n%*shere --^\n",spcnt-7,""); + } +} + +/* +** Return the index of the N-th non-switch argument. Return -1 +** if N is out of range. +*/ +static int argindex(n) +int n; +{ + int i; + int dashdash = 0; + if( argv!=0 && *argv!=0 ){ + for(i=1; argv[i]; i++){ + if( dashdash || !ISOPT(argv[i]) ){ + if( n==0 ) return i; + n--; + } + if( strcmp(argv[i],"--")==0 ) dashdash = 1; + } + } + return -1; +} + +static char emsg[] = "Command line syntax error: "; + +/* +** Process a flag command line argument. +*/ +static int handleflags(i,err) +int i; +FILE *err; +{ + int v; + int errcnt = 0; + int j; + for(j=0; op[j].label; j++){ + if( strncmp(&argv[i][1],op[j].label,lemonStrlen(op[j].label))==0 ) break; + } + v = argv[i][0]=='-' ? 1 : 0; + if( op[j].label==0 ){ + if( err ){ + fprintf(err,"%sundefined option.\n",emsg); + errline(i,1,err); + } + errcnt++; + }else if( op[j].type==OPT_FLAG ){ + *((int*)op[j].arg) = v; + }else if( op[j].type==OPT_FFLAG ){ + (*(void(*)())(op[j].arg))(v); + }else if( op[j].type==OPT_FSTR ){ + (*(void(*)())(op[j].arg))(&argv[i][2]); + }else{ + if( err ){ + fprintf(err,"%smissing argument on switch.\n",emsg); + errline(i,1,err); + } + errcnt++; + } + return errcnt; +} + +/* +** Process a command line switch which has an argument. +*/ +static int handleswitch(i,err) +int i; +FILE *err; +{ + int lv = 0; + double dv = 0.0; + char *sv = 0, *end; + char *cp; + int j; + int errcnt = 0; + cp = strchr(argv[i],'='); + assert( cp!=0 ); + *cp = 0; + for(j=0; op[j].label; j++){ + if( strcmp(argv[i],op[j].label)==0 ) break; + } + *cp = '='; + if( op[j].label==0 ){ + if( err ){ + fprintf(err,"%sundefined option.\n",emsg); + errline(i,0,err); + } + errcnt++; + }else{ + cp++; + switch( op[j].type ){ + case OPT_FLAG: + case OPT_FFLAG: + if( err ){ + fprintf(err,"%soption requires an argument.\n",emsg); + errline(i,0,err); + } + errcnt++; + break; + case OPT_DBL: + case OPT_FDBL: + dv = strtod(cp,&end); + if( *end ){ + if( err ){ + fprintf(err,"%sillegal character in floating-point argument.\n",emsg); + errline(i,((unsigned long)end)-(unsigned long)argv[i],err); + } + errcnt++; + } + break; + case OPT_INT: + case OPT_FINT: + lv = strtol(cp,&end,0); + if( *end ){ + if( err ){ + fprintf(err,"%sillegal character in integer argument.\n",emsg); + errline(i,((unsigned long)end)-(unsigned long)argv[i],err); + } + errcnt++; + } + break; + case OPT_STR: + case OPT_FSTR: + sv = cp; + break; + } + switch( op[j].type ){ + case OPT_FLAG: + case OPT_FFLAG: + break; + case OPT_DBL: + *(double*)(op[j].arg) = dv; + break; + case OPT_FDBL: + (*(void(*)())(op[j].arg))(dv); + break; + case OPT_INT: + *(int*)(op[j].arg) = lv; + break; + case OPT_FINT: + (*(void(*)())(op[j].arg))((int)lv); + break; + case OPT_STR: + *(char**)(op[j].arg) = sv; + break; + case OPT_FSTR: + (*(void(*)())(op[j].arg))(sv); + break; + } + } + return errcnt; +} + +int OptInit(a,o,err) +char **a; +struct s_options *o; +FILE *err; +{ + int errcnt = 0; + argv = a; + op = o; + errstream = err; + if( argv && *argv && op ){ + int i; + for(i=1; argv[i]; i++){ + if( argv[i][0]=='+' || argv[i][0]=='-' ){ + errcnt += handleflags(i,err); + }else if( strchr(argv[i],'=') ){ + errcnt += handleswitch(i,err); + } + } + } + if( errcnt>0 ){ + fprintf(err,"Valid command line options for \"%s\" are:\n",*a); + OptPrint(); + exit(1); + } + return 0; +} + +int OptNArgs(){ + int cnt = 0; + int dashdash = 0; + int i; + if( argv!=0 && argv[0]!=0 ){ + for(i=1; argv[i]; i++){ + if( dashdash || !ISOPT(argv[i]) ) cnt++; + if( strcmp(argv[i],"--")==0 ) dashdash = 1; + } + } + return cnt; +} + +char *OptArg(n) +int n; +{ + int i; + i = argindex(n); + return i>=0 ? argv[i] : 0; +} + +void OptErr(n) +int n; +{ + int i; + i = argindex(n); + if( i>=0 ) errline(i,0,errstream); +} + +void OptPrint(){ + int i; + int max, len; + max = 0; + for(i=0; op[i].label; i++){ + len = lemonStrlen(op[i].label) + 1; + switch( op[i].type ){ + case OPT_FLAG: + case OPT_FFLAG: + break; + case OPT_INT: + case OPT_FINT: + len += 9; /* length of "<integer>" */ + break; + case OPT_DBL: + case OPT_FDBL: + len += 6; /* length of "<real>" */ + break; + case OPT_STR: + case OPT_FSTR: + len += 8; /* length of "<string>" */ + break; + } + if( len>max ) max = len; + } + for(i=0; op[i].label; i++){ + switch( op[i].type ){ + case OPT_FLAG: + case OPT_FFLAG: + fprintf(errstream," -%-*s %s\n",max,op[i].label,op[i].message); + break; + case OPT_INT: + case OPT_FINT: + fprintf(errstream," %s=<integer>%*s %s\n",op[i].label, + (int)(max-lemonStrlen(op[i].label)-9),"",op[i].message); + break; + case OPT_DBL: + case OPT_FDBL: + fprintf(errstream," %s=<real>%*s %s\n",op[i].label, + (int)(max-lemonStrlen(op[i].label)-6),"",op[i].message); + break; + case OPT_STR: + case OPT_FSTR: + fprintf(errstream," %s=<string>%*s %s\n",op[i].label, + (int)(max-lemonStrlen(op[i].label)-8),"",op[i].message); + break; + } + } +} +/*********************** From the file "parse.c" ****************************/ +/* +** Input file parser for the LEMON parser generator. +*/ + +/* The state of the parser */ +struct pstate { + char *filename; /* Name of the input file */ + int tokenlineno; /* Linenumber at which current token starts */ + int errorcnt; /* Number of errors so far */ + char *tokenstart; /* Text of current token */ + struct lemon *gp; /* Global state vector */ + enum e_state { + INITIALIZE, + WAITING_FOR_DECL_OR_RULE, + WAITING_FOR_DECL_KEYWORD, + WAITING_FOR_DECL_ARG, + WAITING_FOR_PRECEDENCE_SYMBOL, + WAITING_FOR_ARROW, + IN_RHS, + LHS_ALIAS_1, + LHS_ALIAS_2, + LHS_ALIAS_3, + RHS_ALIAS_1, + RHS_ALIAS_2, + PRECEDENCE_MARK_1, + PRECEDENCE_MARK_2, + RESYNC_AFTER_RULE_ERROR, + RESYNC_AFTER_DECL_ERROR, + WAITING_FOR_DESTRUCTOR_SYMBOL, + WAITING_FOR_DATATYPE_SYMBOL, + WAITING_FOR_FALLBACK_ID, + WAITING_FOR_WILDCARD_ID + } state; /* The state of the parser */ + struct symbol *fallback; /* The fallback token */ + struct symbol *lhs; /* Left-hand side of current rule */ + char *lhsalias; /* Alias for the LHS */ + int nrhs; /* Number of right-hand side symbols seen */ + struct symbol *rhs[MAXRHS]; /* RHS symbols */ + char *alias[MAXRHS]; /* Aliases for each RHS symbol (or NULL) */ + struct rule *prevrule; /* Previous rule parsed */ + char *declkeyword; /* Keyword of a declaration */ + char **declargslot; /* Where the declaration argument should be put */ + int insertLineMacro; /* Add #line before declaration insert */ + int *decllinenoslot; /* Where to write declaration line number */ + enum e_assoc declassoc; /* Assign this association to decl arguments */ + int preccounter; /* Assign this precedence to decl arguments */ + struct rule *firstrule; /* Pointer to first rule in the grammar */ + struct rule *lastrule; /* Pointer to the most recently parsed rule */ +}; + +/* Parse a single token */ +static void parseonetoken(psp) +struct pstate *psp; +{ + char *x; + x = Strsafe(psp->tokenstart); /* Save the token permanently */ +#if 0 + printf("%s:%d: Token=[%s] state=%d\n",psp->filename,psp->tokenlineno, + x,psp->state); +#endif + switch( psp->state ){ + case INITIALIZE: + psp->prevrule = 0; + psp->preccounter = 0; + psp->firstrule = psp->lastrule = 0; + psp->gp->nrule = 0; + /* Fall thru to next case */ + case WAITING_FOR_DECL_OR_RULE: + if( x[0]=='%' ){ + psp->state = WAITING_FOR_DECL_KEYWORD; + }else if( islower(x[0]) ){ + psp->lhs = Symbol_new(x); + psp->nrhs = 0; + psp->lhsalias = 0; + psp->state = WAITING_FOR_ARROW; + }else if( x[0]=='{' ){ + if( psp->prevrule==0 ){ + ErrorMsg(psp->filename,psp->tokenlineno, +"There is no prior rule opon which to attach the code \ +fragment which begins on this line."); + psp->errorcnt++; + }else if( psp->prevrule->code!=0 ){ + ErrorMsg(psp->filename,psp->tokenlineno, +"Code fragment beginning on this line is not the first \ +to follow the previous rule."); + psp->errorcnt++; + }else{ + psp->prevrule->line = psp->tokenlineno; + psp->prevrule->code = &x[1]; + } + }else if( x[0]=='[' ){ + psp->state = PRECEDENCE_MARK_1; + }else{ + ErrorMsg(psp->filename,psp->tokenlineno, + "Token \"%s\" should be either \"%%\" or a nonterminal name.", + x); + psp->errorcnt++; + } + break; + case PRECEDENCE_MARK_1: + if( !isupper(x[0]) ){ + ErrorMsg(psp->filename,psp->tokenlineno, + "The precedence symbol must be a terminal."); + psp->errorcnt++; + }else if( psp->prevrule==0 ){ + ErrorMsg(psp->filename,psp->tokenlineno, + "There is no prior rule to assign precedence \"[%s]\".",x); + psp->errorcnt++; + }else if( psp->prevrule->precsym!=0 ){ + ErrorMsg(psp->filename,psp->tokenlineno, +"Precedence mark on this line is not the first \ +to follow the previous rule."); + psp->errorcnt++; + }else{ + psp->prevrule->precsym = Symbol_new(x); + } + psp->state = PRECEDENCE_MARK_2; + break; + case PRECEDENCE_MARK_2: + if( x[0]!=']' ){ + ErrorMsg(psp->filename,psp->tokenlineno, + "Missing \"]\" on precedence mark."); + psp->errorcnt++; + } + psp->state = WAITING_FOR_DECL_OR_RULE; + break; + case WAITING_FOR_ARROW: + if( x[0]==':' && x[1]==':' && x[2]=='=' ){ + psp->state = IN_RHS; + }else if( x[0]=='(' ){ + psp->state = LHS_ALIAS_1; + }else{ + ErrorMsg(psp->filename,psp->tokenlineno, + "Expected to see a \":\" following the LHS symbol \"%s\".", + psp->lhs->name); + psp->errorcnt++; + psp->state = RESYNC_AFTER_RULE_ERROR; + } + break; + case LHS_ALIAS_1: + if( isalpha(x[0]) ){ + psp->lhsalias = x; + psp->state = LHS_ALIAS_2; + }else{ + ErrorMsg(psp->filename,psp->tokenlineno, + "\"%s\" is not a valid alias for the LHS \"%s\"\n", + x,psp->lhs->name); + psp->errorcnt++; + psp->state = RESYNC_AFTER_RULE_ERROR; + } + break; + case LHS_ALIAS_2: + if( x[0]==')' ){ + psp->state = LHS_ALIAS_3; + }else{ + ErrorMsg(psp->filename,psp->tokenlineno, + "Missing \")\" following LHS alias name \"%s\".",psp->lhsalias); + psp->errorcnt++; + psp->state = RESYNC_AFTER_RULE_ERROR; + } + break; + case LHS_ALIAS_3: + if( x[0]==':' && x[1]==':' && x[2]=='=' ){ + psp->state = IN_RHS; + }else{ + ErrorMsg(psp->filename,psp->tokenlineno, + "Missing \"->\" following: \"%s(%s)\".", + psp->lhs->name,psp->lhsalias); + psp->errorcnt++; + psp->state = RESYNC_AFTER_RULE_ERROR; + } + break; + case IN_RHS: + if( x[0]=='.' ){ + struct rule *rp; + rp = (struct rule *)calloc( sizeof(struct rule) + + sizeof(struct symbol*)*psp->nrhs + sizeof(char*)*psp->nrhs, 1); + if( rp==0 ){ + ErrorMsg(psp->filename,psp->tokenlineno, + "Can't allocate enough memory for this rule."); + psp->errorcnt++; + psp->prevrule = 0; + }else{ + int i; + rp->ruleline = psp->tokenlineno; + rp->rhs = (struct symbol**)&rp[1]; + rp->rhsalias = (char**)&(rp->rhs[psp->nrhs]); + for(i=0; i<psp->nrhs; i++){ + rp->rhs[i] = psp->rhs[i]; + rp->rhsalias[i] = psp->alias[i]; + } + rp->lhs = psp->lhs; + rp->lhsalias = psp->lhsalias; + rp->nrhs = psp->nrhs; + rp->code = 0; + rp->precsym = 0; + rp->index = psp->gp->nrule++; + rp->nextlhs = rp->lhs->rule; + rp->lhs->rule = rp; + rp->next = 0; + if( psp->firstrule==0 ){ + psp->firstrule = psp->lastrule = rp; + }else{ + psp->lastrule->next = rp; + psp->lastrule = rp; + } + psp->prevrule = rp; + } + psp->state = WAITING_FOR_DECL_OR_RULE; + }else if( isalpha(x[0]) ){ + if( psp->nrhs>=MAXRHS ){ + ErrorMsg(psp->filename,psp->tokenlineno, + "Too many symbols on RHS of rule beginning at \"%s\".", + x); + psp->errorcnt++; + psp->state = RESYNC_AFTER_RULE_ERROR; + }else{ + psp->rhs[psp->nrhs] = Symbol_new(x); + psp->alias[psp->nrhs] = 0; + psp->nrhs++; + } + }else if( (x[0]=='|' || x[0]=='/') && psp->nrhs>0 ){ + struct symbol *msp = psp->rhs[psp->nrhs-1]; + if( msp->type!=MULTITERMINAL ){ + struct symbol *origsp = msp; + msp = calloc(1,sizeof(*msp)); + memset(msp, 0, sizeof(*msp)); + msp->type = MULTITERMINAL; + msp->nsubsym = 1; + msp->subsym = calloc(1,sizeof(struct symbol*)); + msp->subsym[0] = origsp; + msp->name = origsp->name; + psp->rhs[psp->nrhs-1] = msp; + } + msp->nsubsym++; + msp->subsym = realloc(msp->subsym, sizeof(struct symbol*)*msp->nsubsym); + msp->subsym[msp->nsubsym-1] = Symbol_new(&x[1]); + if( islower(x[1]) || islower(msp->subsym[0]->name[0]) ){ + ErrorMsg(psp->filename,psp->tokenlineno, + "Cannot form a compound containing a non-terminal"); + psp->errorcnt++; + } + }else if( x[0]=='(' && psp->nrhs>0 ){ + psp->state = RHS_ALIAS_1; + }else{ + ErrorMsg(psp->filename,psp->tokenlineno, + "Illegal character on RHS of rule: \"%s\".",x); + psp->errorcnt++; + psp->state = RESYNC_AFTER_RULE_ERROR; + } + break; + case RHS_ALIAS_1: + if( isalpha(x[0]) ){ + psp->alias[psp->nrhs-1] = x; + psp->state = RHS_ALIAS_2; + }else{ + ErrorMsg(psp->filename,psp->tokenlineno, + "\"%s\" is not a valid alias for the RHS symbol \"%s\"\n", + x,psp->rhs[psp->nrhs-1]->name); + psp->errorcnt++; + psp->state = RESYNC_AFTER_RULE_ERROR; + } + break; + case RHS_ALIAS_2: + if( x[0]==')' ){ + psp->state = IN_RHS; + }else{ + ErrorMsg(psp->filename,psp->tokenlineno, + "Missing \")\" following LHS alias name \"%s\".",psp->lhsalias); + psp->errorcnt++; + psp->state = RESYNC_AFTER_RULE_ERROR; + } + break; + case WAITING_FOR_DECL_KEYWORD: + if( isalpha(x[0]) ){ + psp->declkeyword = x; + psp->declargslot = 0; + psp->decllinenoslot = 0; + psp->insertLineMacro = 1; + psp->state = WAITING_FOR_DECL_ARG; + if( strcmp(x,"name")==0 ){ + psp->declargslot = &(psp->gp->name); + psp->insertLineMacro = 0; + }else if( strcmp(x,"include")==0 ){ + psp->declargslot = &(psp->gp->include); + }else if( strcmp(x,"code")==0 ){ + psp->declargslot = &(psp->gp->extracode); + }else if( strcmp(x,"token_destructor")==0 ){ + psp->declargslot = &psp->gp->tokendest; + }else if( strcmp(x,"default_destructor")==0 ){ + psp->declargslot = &psp->gp->vardest; + }else if( strcmp(x,"token_prefix")==0 ){ + psp->declargslot = &psp->gp->tokenprefix; + psp->insertLineMacro = 0; + }else if( strcmp(x,"syntax_error")==0 ){ + psp->declargslot = &(psp->gp->error); + }else if( strcmp(x,"parse_accept")==0 ){ + psp->declargslot = &(psp->gp->accept); + }else if( strcmp(x,"parse_failure")==0 ){ + psp->declargslot = &(psp->gp->failure); + }else if( strcmp(x,"stack_overflow")==0 ){ + psp->declargslot = &(psp->gp->overflow); + }else if( strcmp(x,"extra_argument")==0 ){ + psp->declargslot = &(psp->gp->arg); + psp->insertLineMacro = 0; + }else if( strcmp(x,"token_type")==0 ){ + psp->declargslot = &(psp->gp->tokentype); + psp->insertLineMacro = 0; + }else if( strcmp(x,"default_type")==0 ){ + psp->declargslot = &(psp->gp->vartype); + psp->insertLineMacro = 0; + }else if( strcmp(x,"stack_size")==0 ){ + psp->declargslot = &(psp->gp->stacksize); + psp->insertLineMacro = 0; + }else if( strcmp(x,"start_symbol")==0 ){ + psp->declargslot = &(psp->gp->start); + psp->insertLineMacro = 0; + }else if( strcmp(x,"left")==0 ){ + psp->preccounter++; + psp->declassoc = LEFT; + psp->state = WAITING_FOR_PRECEDENCE_SYMBOL; + }else if( strcmp(x,"right")==0 ){ + psp->preccounter++; + psp->declassoc = RIGHT; + psp->state = WAITING_FOR_PRECEDENCE_SYMBOL; + }else if( strcmp(x,"nonassoc")==0 ){ + psp->preccounter++; + psp->declassoc = NONE; + psp->state = WAITING_FOR_PRECEDENCE_SYMBOL; + }else if( strcmp(x,"destructor")==0 ){ + psp->state = WAITING_FOR_DESTRUCTOR_SYMBOL; + }else if( strcmp(x,"type")==0 ){ + psp->state = WAITING_FOR_DATATYPE_SYMBOL; + }else if( strcmp(x,"fallback")==0 ){ + psp->fallback = 0; + psp->state = WAITING_FOR_FALLBACK_ID; + }else if( strcmp(x,"wildcard")==0 ){ + psp->state = WAITING_FOR_WILDCARD_ID; + }else{ + ErrorMsg(psp->filename,psp->tokenlineno, + "Unknown declaration keyword: \"%%%s\".",x); + psp->errorcnt++; + psp->state = RESYNC_AFTER_DECL_ERROR; + } + }else{ + ErrorMsg(psp->filename,psp->tokenlineno, + "Illegal declaration keyword: \"%s\".",x); + psp->errorcnt++; + psp->state = RESYNC_AFTER_DECL_ERROR; + } + break; + case WAITING_FOR_DESTRUCTOR_SYMBOL: + if( !isalpha(x[0]) ){ + ErrorMsg(psp->filename,psp->tokenlineno, + "Symbol name missing after %destructor keyword"); + psp->errorcnt++; + psp->state = RESYNC_AFTER_DECL_ERROR; + }else{ + struct symbol *sp = Symbol_new(x); + psp->declargslot = &sp->destructor; + psp->decllinenoslot = &sp->destLineno; + psp->insertLineMacro = 1; + psp->state = WAITING_FOR_DECL_ARG; + } + break; + case WAITING_FOR_DATATYPE_SYMBOL: + if( !isalpha(x[0]) ){ + ErrorMsg(psp->filename,psp->tokenlineno, + "Symbol name missing after %destructor keyword"); + psp->errorcnt++; + psp->state = RESYNC_AFTER_DECL_ERROR; + }else{ + struct symbol *sp = Symbol_new(x); + psp->declargslot = &sp->datatype; + psp->insertLineMacro = 0; + psp->state = WAITING_FOR_DECL_ARG; + } + break; + case WAITING_FOR_PRECEDENCE_SYMBOL: + if( x[0]=='.' ){ + psp->state = WAITING_FOR_DECL_OR_RULE; + }else if( isupper(x[0]) ){ + struct symbol *sp; + sp = Symbol_new(x); + if( sp->prec>=0 ){ + ErrorMsg(psp->filename,psp->tokenlineno, + "Symbol \"%s\" has already be given a precedence.",x); + psp->errorcnt++; + }else{ + sp->prec = psp->preccounter; + sp->assoc = psp->declassoc; + } + }else{ + ErrorMsg(psp->filename,psp->tokenlineno, + "Can't assign a precedence to \"%s\".",x); + psp->errorcnt++; + } + break; + case WAITING_FOR_DECL_ARG: + if( x[0]=='{' || x[0]=='\"' || isalnum(x[0]) ){ + char *zOld, *zNew, *zBuf, *z; + int nOld, n, nLine, nNew, nBack; + int addLineMacro; + char zLine[50]; + zNew = x; + if( zNew[0]=='"' || zNew[0]=='{' ) zNew++; + nNew = lemonStrlen(zNew); + if( *psp->declargslot ){ + zOld = *psp->declargslot; + }else{ + zOld = ""; + } + nOld = lemonStrlen(zOld); + n = nOld + nNew + 20; + addLineMacro = !psp->gp->nolinenosflag && psp->insertLineMacro && + (psp->decllinenoslot==0 || psp->decllinenoslot[0]!=0); + if( addLineMacro ){ + for(z=psp->filename, nBack=0; *z; z++){ + if( *z=='\\' ) nBack++; + } + sprintf(zLine, "#line %d ", psp->tokenlineno); + nLine = lemonStrlen(zLine); + n += nLine + lemonStrlen(psp->filename) + nBack; + } + *psp->declargslot = zBuf = realloc(*psp->declargslot, n); + zBuf += nOld; + if( addLineMacro ){ + if( nOld && zBuf[-1]!='\n' ){ + *(zBuf++) = '\n'; + } + memcpy(zBuf, zLine, nLine); + zBuf += nLine; + *(zBuf++) = '"'; + for(z=psp->filename; *z; z++){ + if( *z=='\\' ){ + *(zBuf++) = '\\'; + } + *(zBuf++) = *z; + } + *(zBuf++) = '"'; + *(zBuf++) = '\n'; + } + if( psp->decllinenoslot && psp->decllinenoslot[0]==0 ){ + psp->decllinenoslot[0] = psp->tokenlineno; + } + memcpy(zBuf, zNew, nNew); + zBuf += nNew; + *zBuf = 0; + psp->state = WAITING_FOR_DECL_OR_RULE; + }else{ + ErrorMsg(psp->filename,psp->tokenlineno, + "Illegal argument to %%%s: %s",psp->declkeyword,x); + psp->errorcnt++; + psp->state = RESYNC_AFTER_DECL_ERROR; + } + break; + case WAITING_FOR_FALLBACK_ID: + if( x[0]=='.' ){ + psp->state = WAITING_FOR_DECL_OR_RULE; + }else if( !isupper(x[0]) ){ + ErrorMsg(psp->filename, psp->tokenlineno, + "%%fallback argument \"%s\" should be a token", x); + psp->errorcnt++; + }else{ + struct symbol *sp = Symbol_new(x); + if( psp->fallback==0 ){ + psp->fallback = sp; + }else if( sp->fallback ){ + ErrorMsg(psp->filename, psp->tokenlineno, + "More than one fallback assigned to token %s", x); + psp->errorcnt++; + }else{ + sp->fallback = psp->fallback; + psp->gp->has_fallback = 1; + } + } + break; + case WAITING_FOR_WILDCARD_ID: + if( x[0]=='.' ){ + psp->state = WAITING_FOR_DECL_OR_RULE; + }else if( !isupper(x[0]) ){ + ErrorMsg(psp->filename, psp->tokenlineno, + "%%wildcard argument \"%s\" should be a token", x); + psp->errorcnt++; + }else{ + struct symbol *sp = Symbol_new(x); + if( psp->gp->wildcard==0 ){ + psp->gp->wildcard = sp; + }else{ + ErrorMsg(psp->filename, psp->tokenlineno, + "Extra wildcard to token: %s", x); + psp->errorcnt++; + } + } + break; + case RESYNC_AFTER_RULE_ERROR: +/* if( x[0]=='.' ) psp->state = WAITING_FOR_DECL_OR_RULE; +** break; */ + case RESYNC_AFTER_DECL_ERROR: + if( x[0]=='.' ) psp->state = WAITING_FOR_DECL_OR_RULE; + if( x[0]=='%' ) psp->state = WAITING_FOR_DECL_KEYWORD; + break; + } +} + +/* Run the preprocessor over the input file text. The global variables +** azDefine[0] through azDefine[nDefine-1] contains the names of all defined +** macros. This routine looks for "%ifdef" and "%ifndef" and "%endif" and +** comments them out. Text in between is also commented out as appropriate. +*/ +static void preprocess_input(char *z){ + int i, j, k, n; + int exclude = 0; + int start = 0; + int lineno = 1; + int start_lineno = 1; + for(i=0; z[i]; i++){ + if( z[i]=='\n' ) lineno++; + if( z[i]!='%' || (i>0 && z[i-1]!='\n') ) continue; + if( strncmp(&z[i],"%endif",6)==0 && isspace(z[i+6]) ){ + if( exclude ){ + exclude--; + if( exclude==0 ){ + for(j=start; j<i; j++) if( z[j]!='\n' ) z[j] = ' '; + } + } + for(j=i; z[j] && z[j]!='\n'; j++) z[j] = ' '; + }else if( (strncmp(&z[i],"%ifdef",6)==0 && isspace(z[i+6])) + || (strncmp(&z[i],"%ifndef",7)==0 && isspace(z[i+7])) ){ + if( exclude ){ + exclude++; + }else{ + for(j=i+7; isspace(z[j]); j++){} + for(n=0; z[j+n] && !isspace(z[j+n]); n++){} + exclude = 1; + for(k=0; k<nDefine; k++){ + if( strncmp(azDefine[k],&z[j],n)==0 && lemonStrlen(azDefine[k])==n ){ + exclude = 0; + break; + } + } + if( z[i+3]=='n' ) exclude = !exclude; + if( exclude ){ + start = i; + start_lineno = lineno; + } + } + for(j=i; z[j] && z[j]!='\n'; j++) z[j] = ' '; + } + } + if( exclude ){ + fprintf(stderr,"unterminated %%ifdef starting on line %d\n", start_lineno); + exit(1); + } +} + +/* In spite of its name, this function is really a scanner. It read +** in the entire input file (all at once) then tokenizes it. Each +** token is passed to the function "parseonetoken" which builds all +** the appropriate data structures in the global state vector "gp". +*/ +void Parse(gp) +struct lemon *gp; +{ + struct pstate ps; + FILE *fp; + char *filebuf; + int filesize; + int lineno; + int c; + char *cp, *nextcp; + int startline = 0; + + memset(&ps, '\0', sizeof(ps)); + ps.gp = gp; + ps.filename = gp->filename; + ps.errorcnt = 0; + ps.state = INITIALIZE; + + /* Begin by reading the input file */ + fp = fopen(ps.filename,"rb"); + if( fp==0 ){ + ErrorMsg(ps.filename,0,"Can't open this file for reading."); + gp->errorcnt++; + return; + } + fseek(fp,0,2); + filesize = ftell(fp); + rewind(fp); + filebuf = (char *)malloc( filesize+1 ); + if( filebuf==0 ){ + ErrorMsg(ps.filename,0,"Can't allocate %d of memory to hold this file.", + filesize+1); + gp->errorcnt++; + return; + } + if( fread(filebuf,1,filesize,fp)!=filesize ){ + ErrorMsg(ps.filename,0,"Can't read in all %d bytes of this file.", + filesize); + free(filebuf); + gp->errorcnt++; + return; + } + fclose(fp); + filebuf[filesize] = 0; + + /* Make an initial pass through the file to handle %ifdef and %ifndef */ + preprocess_input(filebuf); + + /* Now scan the text of the input file */ + lineno = 1; + for(cp=filebuf; (c= *cp)!=0; ){ + if( c=='\n' ) lineno++; /* Keep track of the line number */ + if( isspace(c) ){ cp++; continue; } /* Skip all white space */ + if( c=='/' && cp[1]=='/' ){ /* Skip C++ style comments */ + cp+=2; + while( (c= *cp)!=0 && c!='\n' ) cp++; + continue; + } + if( c=='/' && cp[1]=='*' ){ /* Skip C style comments */ + cp+=2; + while( (c= *cp)!=0 && (c!='/' || cp[-1]!='*') ){ + if( c=='\n' ) lineno++; + cp++; + } + if( c ) cp++; + continue; + } + ps.tokenstart = cp; /* Mark the beginning of the token */ + ps.tokenlineno = lineno; /* Linenumber on which token begins */ + if( c=='\"' ){ /* String literals */ + cp++; + while( (c= *cp)!=0 && c!='\"' ){ + if( c=='\n' ) lineno++; + cp++; + } + if( c==0 ){ + ErrorMsg(ps.filename,startline, +"String starting on this line is not terminated before the end of the file."); + ps.errorcnt++; + nextcp = cp; + }else{ + nextcp = cp+1; + } + }else if( c=='{' ){ /* A block of C code */ + int level; + cp++; + for(level=1; (c= *cp)!=0 && (level>1 || c!='}'); cp++){ + if( c=='\n' ) lineno++; + else if( c=='{' ) level++; + else if( c=='}' ) level--; + else if( c=='/' && cp[1]=='*' ){ /* Skip comments */ + int prevc; + cp = &cp[2]; + prevc = 0; + while( (c= *cp)!=0 && (c!='/' || prevc!='*') ){ + if( c=='\n' ) lineno++; + prevc = c; + cp++; + } + }else if( c=='/' && cp[1]=='/' ){ /* Skip C++ style comments too */ + cp = &cp[2]; + while( (c= *cp)!=0 && c!='\n' ) cp++; + if( c ) lineno++; + }else if( c=='\'' || c=='\"' ){ /* String a character literals */ + int startchar, prevc; + startchar = c; + prevc = 0; + for(cp++; (c= *cp)!=0 && (c!=startchar || prevc=='\\'); cp++){ + if( c=='\n' ) lineno++; + if( prevc=='\\' ) prevc = 0; + else prevc = c; + } + } + } + if( c==0 ){ + ErrorMsg(ps.filename,ps.tokenlineno, +"C code starting on this line is not terminated before the end of the file."); + ps.errorcnt++; + nextcp = cp; + }else{ + nextcp = cp+1; + } + }else if( isalnum(c) ){ /* Identifiers */ + while( (c= *cp)!=0 && (isalnum(c) || c=='_') ) cp++; + nextcp = cp; + }else if( c==':' && cp[1]==':' && cp[2]=='=' ){ /* The operator "::=" */ + cp += 3; + nextcp = cp; + }else if( (c=='/' || c=='|') && isalpha(cp[1]) ){ + cp += 2; + while( (c = *cp)!=0 && (isalnum(c) || c=='_') ) cp++; + nextcp = cp; + }else{ /* All other (one character) operators */ + cp++; + nextcp = cp; + } + c = *cp; + *cp = 0; /* Null terminate the token */ + parseonetoken(&ps); /* Parse the token */ + *cp = c; /* Restore the buffer */ + cp = nextcp; + } + free(filebuf); /* Release the buffer after parsing */ + gp->rule = ps.firstrule; + gp->errorcnt = ps.errorcnt; +} +/*************************** From the file "plink.c" *********************/ +/* +** Routines processing configuration follow-set propagation links +** in the LEMON parser generator. +*/ +static struct plink *plink_freelist = 0; + +/* Allocate a new plink */ +struct plink *Plink_new(){ + struct plink *new; + + if( plink_freelist==0 ){ + int i; + int amt = 100; + plink_freelist = (struct plink *)calloc( amt, sizeof(struct plink) ); + if( plink_freelist==0 ){ + fprintf(stderr, + "Unable to allocate memory for a new follow-set propagation link.\n"); + exit(1); + } + for(i=0; i<amt-1; i++) plink_freelist[i].next = &plink_freelist[i+1]; + plink_freelist[amt-1].next = 0; + } + new = plink_freelist; + plink_freelist = plink_freelist->next; + return new; +} + +/* Add a plink to a plink list */ +void Plink_add(plpp,cfp) +struct plink **plpp; +struct config *cfp; +{ + struct plink *new; + new = Plink_new(); + new->next = *plpp; + *plpp = new; + new->cfp = cfp; +} + +/* Transfer every plink on the list "from" to the list "to" */ +void Plink_copy(to,from) +struct plink **to; +struct plink *from; +{ + struct plink *nextpl; + while( from ){ + nextpl = from->next; + from->next = *to; + *to = from; + from = nextpl; + } +} + +/* Delete every plink on the list */ +void Plink_delete(plp) +struct plink *plp; +{ + struct plink *nextpl; + + while( plp ){ + nextpl = plp->next; + plp->next = plink_freelist; + plink_freelist = plp; + plp = nextpl; + } +} +/*********************** From the file "report.c" **************************/ +/* +** Procedures for generating reports and tables in the LEMON parser generator. +*/ + +/* Generate a filename with the given suffix. Space to hold the +** name comes from malloc() and must be freed by the calling +** function. +*/ +PRIVATE char *file_makename(lemp,suffix) +struct lemon *lemp; +char *suffix; +{ + char *name; + char *cp; + + name = malloc( lemonStrlen(lemp->filename) + lemonStrlen(suffix) + 5 ); + if( name==0 ){ + fprintf(stderr,"Can't allocate space for a filename.\n"); + exit(1); + } + strcpy(name,lemp->filename); + cp = strrchr(name,'.'); + if( cp ) *cp = 0; + strcat(name,suffix); + return name; +} + +/* Open a file with a name based on the name of the input file, +** but with a different (specified) suffix, and return a pointer +** to the stream */ +PRIVATE FILE *file_open(lemp,suffix,mode) +struct lemon *lemp; +char *suffix; +char *mode; +{ + FILE *fp; + + if( lemp->outname ) free(lemp->outname); + lemp->outname = file_makename(lemp, suffix); + fp = fopen(lemp->outname,mode); + if( fp==0 && *mode=='w' ){ + fprintf(stderr,"Can't open file \"%s\".\n",lemp->outname); + lemp->errorcnt++; + return 0; + } + return fp; +} + +/* Duplicate the input file without comments and without actions +** on rules */ +void Reprint(lemp) +struct lemon *lemp; +{ + struct rule *rp; + struct symbol *sp; + int i, j, maxlen, len, ncolumns, skip; + printf("// Reprint of input file \"%s\".\n// Symbols:\n",lemp->filename); + maxlen = 10; + for(i=0; i<lemp->nsymbol; i++){ + sp = lemp->symbols[i]; + len = lemonStrlen(sp->name); + if( len>maxlen ) maxlen = len; + } + ncolumns = 76/(maxlen+5); + if( ncolumns<1 ) ncolumns = 1; + skip = (lemp->nsymbol + ncolumns - 1)/ncolumns; + for(i=0; i<skip; i++){ + printf("//"); + for(j=i; j<lemp->nsymbol; j+=skip){ + sp = lemp->symbols[j]; + assert( sp->index==j ); + printf(" %3d %-*.*s",j,maxlen,maxlen,sp->name); + } + printf("\n"); + } + for(rp=lemp->rule; rp; rp=rp->next){ + printf("%s",rp->lhs->name); + /* if( rp->lhsalias ) printf("(%s)",rp->lhsalias); */ + printf(" ::="); + for(i=0; i<rp->nrhs; i++){ + sp = rp->rhs[i]; + printf(" %s", sp->name); + if( sp->type==MULTITERMINAL ){ + for(j=1; j<sp->nsubsym; j++){ + printf("|%s", sp->subsym[j]->name); + } + } + /* if( rp->rhsalias[i] ) printf("(%s)",rp->rhsalias[i]); */ + } + printf("."); + if( rp->precsym ) printf(" [%s]",rp->precsym->name); + /* if( rp->code ) printf("\n %s",rp->code); */ + printf("\n"); + } +} + +void ConfigPrint(fp,cfp) +FILE *fp; +struct config *cfp; +{ + struct rule *rp; + struct symbol *sp; + int i, j; + rp = cfp->rp; + fprintf(fp,"%s ::=",rp->lhs->name); + for(i=0; i<=rp->nrhs; i++){ + if( i==cfp->dot ) fprintf(fp," *"); + if( i==rp->nrhs ) break; + sp = rp->rhs[i]; + fprintf(fp," %s", sp->name); + if( sp->type==MULTITERMINAL ){ + for(j=1; j<sp->nsubsym; j++){ + fprintf(fp,"|%s",sp->subsym[j]->name); + } + } + } +} + +/* #define TEST */ +#if 0 +/* Print a set */ +PRIVATE void SetPrint(out,set,lemp) +FILE *out; +char *set; +struct lemon *lemp; +{ + int i; + char *spacer; + spacer = ""; + fprintf(out,"%12s[",""); + for(i=0; i<lemp->nterminal; i++){ + if( SetFind(set,i) ){ + fprintf(out,"%s%s",spacer,lemp->symbols[i]->name); + spacer = " "; + } + } + fprintf(out,"]\n"); +} + +/* Print a plink chain */ +PRIVATE void PlinkPrint(out,plp,tag) +FILE *out; +struct plink *plp; +char *tag; +{ + while( plp ){ + fprintf(out,"%12s%s (state %2d) ","",tag,plp->cfp->stp->statenum); + ConfigPrint(out,plp->cfp); + fprintf(out,"\n"); + plp = plp->next; + } +} +#endif + +/* Print an action to the given file descriptor. Return FALSE if +** nothing was actually printed. +*/ +int PrintAction(struct action *ap, FILE *fp, int indent){ + int result = 1; + switch( ap->type ){ + case SHIFT: + fprintf(fp,"%*s shift %d",indent,ap->sp->name,ap->x.stp->statenum); + break; + case REDUCE: + fprintf(fp,"%*s reduce %d",indent,ap->sp->name,ap->x.rp->index); + break; + case ACCEPT: + fprintf(fp,"%*s accept",indent,ap->sp->name); + break; + case ERROR: + fprintf(fp,"%*s error",indent,ap->sp->name); + break; + case SRCONFLICT: + case RRCONFLICT: + fprintf(fp,"%*s reduce %-3d ** Parsing conflict **", + indent,ap->sp->name,ap->x.rp->index); + break; + case SSCONFLICT: + fprintf(fp,"%*s shift %d ** Parsing conflict **", + indent,ap->sp->name,ap->x.stp->statenum); + break; + case SH_RESOLVED: + case RD_RESOLVED: + case NOT_USED: + result = 0; + break; + } + return result; +} + +/* Generate the "y.output" log file */ +void ReportOutput(lemp) +struct lemon *lemp; +{ + int i; + struct state *stp; + struct config *cfp; + struct action *ap; + FILE *fp; + + fp = file_open(lemp,".out","wb"); + if( fp==0 ) return; + for(i=0; i<lemp->nstate; i++){ + stp = lemp->sorted[i]; + fprintf(fp,"State %d:\n",stp->statenum); + if( lemp->basisflag ) cfp=stp->bp; + else cfp=stp->cfp; + while( cfp ){ + char buf[20]; + if( cfp->dot==cfp->rp->nrhs ){ + sprintf(buf,"(%d)",cfp->rp->index); + fprintf(fp," %5s ",buf); + }else{ + fprintf(fp," "); + } + ConfigPrint(fp,cfp); + fprintf(fp,"\n"); +#if 0 + SetPrint(fp,cfp->fws,lemp); + PlinkPrint(fp,cfp->fplp,"To "); + PlinkPrint(fp,cfp->bplp,"From"); +#endif + if( lemp->basisflag ) cfp=cfp->bp; + else cfp=cfp->next; + } + fprintf(fp,"\n"); + for(ap=stp->ap; ap; ap=ap->next){ + if( PrintAction(ap,fp,30) ) fprintf(fp,"\n"); + } + fprintf(fp,"\n"); + } + fprintf(fp, "----------------------------------------------------\n"); + fprintf(fp, "Symbols:\n"); + for(i=0; i<lemp->nsymbol; i++){ + int j; + struct symbol *sp; + + sp = lemp->symbols[i]; + fprintf(fp, " %3d: %s", i, sp->name); + if( sp->type==NONTERMINAL ){ + fprintf(fp, ":"); + if( sp->lambda ){ + fprintf(fp, " <lambda>"); + } + for(j=0; j<lemp->nterminal; j++){ + if( sp->firstset && SetFind(sp->firstset, j) ){ + fprintf(fp, " %s", lemp->symbols[j]->name); + } + } + } + fprintf(fp, "\n"); + } + fclose(fp); + return; +} + +/* Search for the file "name" which is in the same directory as +** the exacutable */ +PRIVATE char *pathsearch(argv0,name,modemask) +char *argv0; +char *name; +int modemask; +{ + char *pathlist; + char *path,*cp; + char c; + +#ifdef __WIN32__ + cp = strrchr(argv0,'\\'); +#else + cp = strrchr(argv0,'/'); +#endif + if( cp ){ + c = *cp; + *cp = 0; + path = (char *)malloc( lemonStrlen(argv0) + lemonStrlen(name) + 2 ); + if( path ) sprintf(path,"%s/%s",argv0,name); + *cp = c; + }else{ + extern char *getenv(); + pathlist = getenv("PATH"); + if( pathlist==0 ) pathlist = ".:/bin:/usr/bin"; + path = (char *)malloc( lemonStrlen(pathlist)+lemonStrlen(name)+2 ); + if( path!=0 ){ + while( *pathlist ){ + cp = strchr(pathlist,':'); + if( cp==0 ) cp = &pathlist[lemonStrlen(pathlist)]; + c = *cp; + *cp = 0; + sprintf(path,"%s/%s",pathlist,name); + *cp = c; + if( c==0 ) pathlist = ""; + else pathlist = &cp[1]; + if( access(path,modemask)==0 ) break; + } + } + } + return path; +} + +/* Given an action, compute the integer value for that action +** which is to be put in the action table of the generated machine. +** Return negative if no action should be generated. +*/ +PRIVATE int compute_action(lemp,ap) +struct lemon *lemp; +struct action *ap; +{ + int act; + switch( ap->type ){ + case SHIFT: act = ap->x.stp->statenum; break; + case REDUCE: act = ap->x.rp->index + lemp->nstate; break; + case ERROR: act = lemp->nstate + lemp->nrule; break; + case ACCEPT: act = lemp->nstate + lemp->nrule + 1; break; + default: act = -1; break; + } + return act; +} + +#define LINESIZE 1000 +/* The next cluster of routines are for reading the template file +** and writing the results to the generated parser */ +/* The first function transfers data from "in" to "out" until +** a line is seen which begins with "%%". The line number is +** tracked. +** +** if name!=0, then any word that begin with "Parse" is changed to +** begin with *name instead. +*/ +PRIVATE void tplt_xfer(name,in,out,lineno) +char *name; +FILE *in; +FILE *out; +int *lineno; +{ + int i, iStart; + char line[LINESIZE]; + while( fgets(line,LINESIZE,in) && (line[0]!='%' || line[1]!='%') ){ + (*lineno)++; + iStart = 0; + if( name ){ + for(i=0; line[i]; i++){ + if( line[i]=='P' && strncmp(&line[i],"Parse",5)==0 + && (i==0 || !isalpha(line[i-1])) + ){ + if( i>iStart ) fprintf(out,"%.*s",i-iStart,&line[iStart]); + fprintf(out,"%s",name); + i += 4; + iStart = i+1; + } + } + } + fprintf(out,"%s",&line[iStart]); + } +} + +/* The next function finds the template file and opens it, returning +** a pointer to the opened file. */ +PRIVATE FILE *tplt_open(lemp) +struct lemon *lemp; +{ + static char templatename[] = "lempar.c"; + char buf[1000]; + FILE *in; + char *tpltname; + char *cp; + + cp = strrchr(lemp->filename,'.'); + if( cp ){ + sprintf(buf,"%.*s.lt",(int)(cp-lemp->filename),lemp->filename); + }else{ + sprintf(buf,"%s.lt",lemp->filename); + } + if( access(buf,004)==0 ){ + tpltname = buf; + }else if( access(templatename,004)==0 ){ + tpltname = templatename; + }else{ + tpltname = pathsearch(lemp->argv0,templatename,0); + } + if( tpltname==0 ){ + fprintf(stderr,"Can't find the parser driver template file \"%s\".\n", + templatename); + lemp->errorcnt++; + return 0; + } + in = fopen(tpltname,"rb"); + if( in==0 ){ + fprintf(stderr,"Can't open the template file \"%s\".\n",templatename); + lemp->errorcnt++; + return 0; + } + return in; +} + +/* Print a #line directive line to the output file. */ +PRIVATE void tplt_linedir(out,lineno,filename) +FILE *out; +int lineno; +char *filename; +{ + fprintf(out,"#line %d \"",lineno); + while( *filename ){ + if( *filename == '\\' ) putc('\\',out); + putc(*filename,out); + filename++; + } + fprintf(out,"\"\n"); +} + +/* Print a string to the file and keep the linenumber up to date */ +PRIVATE void tplt_print(out,lemp,str,lineno) +FILE *out; +struct lemon *lemp; +char *str; +int *lineno; +{ + if( str==0 ) return; + while( *str ){ + putc(*str,out); + if( *str=='\n' ) (*lineno)++; + str++; + } + if( str[-1]!='\n' ){ + putc('\n',out); + (*lineno)++; + } + if (!lemp->nolinenosflag) { + (*lineno)++; tplt_linedir(out,*lineno,lemp->outname); + } + return; +} + +/* +** The following routine emits code for the destructor for the +** symbol sp +*/ +void emit_destructor_code(out,sp,lemp,lineno) +FILE *out; +struct symbol *sp; +struct lemon *lemp; +int *lineno; +{ + char *cp = 0; + + if( sp->type==TERMINAL ){ + cp = lemp->tokendest; + if( cp==0 ) return; + fprintf(out,"{\n"); (*lineno)++; + }else if( sp->destructor ){ + cp = sp->destructor; + fprintf(out,"{\n"); (*lineno)++; + if (!lemp->nolinenosflag) { (*lineno)++; tplt_linedir(out,sp->destLineno,lemp->filename); } + }else if( lemp->vardest ){ + cp = lemp->vardest; + if( cp==0 ) return; + fprintf(out,"{\n"); (*lineno)++; + }else{ + assert( 0 ); /* Cannot happen */ + } + for(; *cp; cp++){ + if( *cp=='$' && cp[1]=='$' ){ + fprintf(out,"(yypminor->yy%d)",sp->dtnum); + cp++; + continue; + } + if( *cp=='\n' ) (*lineno)++; + fputc(*cp,out); + } + fprintf(out,"\n"); (*lineno)++; + if (!lemp->nolinenosflag) { + (*lineno)++; tplt_linedir(out,*lineno,lemp->outname); + } + fprintf(out,"}\n"); (*lineno)++; + return; +} + +/* +** Return TRUE (non-zero) if the given symbol has a destructor. +*/ +int has_destructor(sp, lemp) +struct symbol *sp; +struct lemon *lemp; +{ + int ret; + if( sp->type==TERMINAL ){ + ret = lemp->tokendest!=0; + }else{ + ret = lemp->vardest!=0 || sp->destructor!=0; + } + return ret; +} + +/* +** Append text to a dynamically allocated string. If zText is 0 then +** reset the string to be empty again. Always return the complete text +** of the string (which is overwritten with each call). +** +** n bytes of zText are stored. If n==0 then all of zText up to the first +** \000 terminator is stored. zText can contain up to two instances of +** %d. The values of p1 and p2 are written into the first and second +** %d. +** +** If n==-1, then the previous character is overwritten. +*/ +PRIVATE char *append_str(char *zText, int n, int p1, int p2){ + static char *z = 0; + static int alloced = 0; + static int used = 0; + int c; + char zInt[40]; + + if( zText==0 ){ + used = 0; + return z; + } + if( n<=0 ){ + if( n<0 ){ + used += n; + assert( used>=0 ); + } + n = lemonStrlen(zText); + } + if( n+sizeof(zInt)*2+used >= alloced ){ + alloced = n + sizeof(zInt)*2 + used + 200; + z = realloc(z, alloced); + } + if( z==0 ) return ""; + while( n-- > 0 ){ + c = *(zText++); + if( c=='%' && n>0 && zText[0]=='d' ){ + sprintf(zInt, "%d", p1); + p1 = p2; + strcpy(&z[used], zInt); + used += lemonStrlen(&z[used]); + zText++; + n--; + }else{ + z[used++] = c; + } + } + z[used] = 0; + return z; +} + +/* +** zCode is a string that is the action associated with a rule. Expand +** the symbols in this string so that the refer to elements of the parser +** stack. +*/ +PRIVATE void translate_code(struct lemon *lemp, struct rule *rp){ + char *cp, *xp; + int i; + char lhsused = 0; /* True if the LHS element has been used */ + char used[MAXRHS]; /* True for each RHS element which is used */ + + for(i=0; i<rp->nrhs; i++) used[i] = 0; + lhsused = 0; + + if( rp->code==0 ){ + rp->code = "\n"; + rp->line = rp->ruleline; + } + + append_str(0,0,0,0); + for(cp=rp->code; *cp; cp++){ + if( isalpha(*cp) && (cp==rp->code || (!isalnum(cp[-1]) && cp[-1]!='_')) ){ + char saved; + for(xp= &cp[1]; isalnum(*xp) || *xp=='_'; xp++); + saved = *xp; + *xp = 0; + if( rp->lhsalias && strcmp(cp,rp->lhsalias)==0 ){ + append_str("yygotominor.yy%d",0,rp->lhs->dtnum,0); + cp = xp; + lhsused = 1; + }else{ + for(i=0; i<rp->nrhs; i++){ + if( rp->rhsalias[i] && strcmp(cp,rp->rhsalias[i])==0 ){ + if( cp!=rp->code && cp[-1]=='@' ){ + /* If the argument is of the form @X then substituted + ** the token number of X, not the value of X */ + append_str("yymsp[%d].major",-1,i-rp->nrhs+1,0); + }else{ + struct symbol *sp = rp->rhs[i]; + int dtnum; + if( sp->type==MULTITERMINAL ){ + dtnum = sp->subsym[0]->dtnum; + }else{ + dtnum = sp->dtnum; + } + append_str("yymsp[%d].minor.yy%d",0,i-rp->nrhs+1, dtnum); + } + cp = xp; + used[i] = 1; + break; + } + } + } + *xp = saved; + } + append_str(cp, 1, 0, 0); + } /* End loop */ + + /* Check to make sure the LHS has been used */ + if( rp->lhsalias && !lhsused ){ + ErrorMsg(lemp->filename,rp->ruleline, + "Label \"%s\" for \"%s(%s)\" is never used.", + rp->lhsalias,rp->lhs->name,rp->lhsalias); + lemp->errorcnt++; + } + + /* Generate destructor code for RHS symbols which are not used in the + ** reduce code */ + for(i=0; i<rp->nrhs; i++){ + if( rp->rhsalias[i] && !used[i] ){ + ErrorMsg(lemp->filename,rp->ruleline, + "Label %s for \"%s(%s)\" is never used.", + rp->rhsalias[i],rp->rhs[i]->name,rp->rhsalias[i]); + lemp->errorcnt++; + }else if( rp->rhsalias[i]==0 ){ + if( has_destructor(rp->rhs[i],lemp) ){ + append_str(" yy_destructor(yypParser,%d,&yymsp[%d].minor);\n", 0, + rp->rhs[i]->index,i-rp->nrhs+1); + }else{ + /* No destructor defined for this term */ + } + } + } + if( rp->code ){ + cp = append_str(0,0,0,0); + rp->code = Strsafe(cp?cp:""); + } +} + +/* +** Generate code which executes when the rule "rp" is reduced. Write +** the code to "out". Make sure lineno stays up-to-date. +*/ +PRIVATE void emit_code(out,rp,lemp,lineno) +FILE *out; +struct rule *rp; +struct lemon *lemp; +int *lineno; +{ + char *cp; + + /* Generate code to do the reduce action */ + if( rp->code ){ + if (!lemp->nolinenosflag) { (*lineno)++; tplt_linedir(out,rp->line,lemp->filename); } + fprintf(out,"{%s",rp->code); + for(cp=rp->code; *cp; cp++){ + if( *cp=='\n' ) (*lineno)++; + } /* End loop */ + fprintf(out,"}\n"); (*lineno)++; + if (!lemp->nolinenosflag) { (*lineno)++; tplt_linedir(out,*lineno,lemp->outname); } + } /* End if( rp->code ) */ + + return; +} + +/* +** Print the definition of the union used for the parser's data stack. +** This union contains fields for every possible data type for tokens +** and nonterminals. In the process of computing and printing this +** union, also set the ".dtnum" field of every terminal and nonterminal +** symbol. +*/ +void print_stack_union(out,lemp,plineno,mhflag) +FILE *out; /* The output stream */ +struct lemon *lemp; /* The main info structure for this parser */ +int *plineno; /* Pointer to the line number */ +int mhflag; /* True if generating makeheaders output */ +{ + int lineno = *plineno; /* The line number of the output */ + char **types; /* A hash table of datatypes */ + int arraysize; /* Size of the "types" array */ + int maxdtlength; /* Maximum length of any ".datatype" field. */ + char *stddt; /* Standardized name for a datatype */ + int i,j; /* Loop counters */ + int hash; /* For hashing the name of a type */ + char *name; /* Name of the parser */ + + /* Allocate and initialize types[] and allocate stddt[] */ + arraysize = lemp->nsymbol * 2; + types = (char**)calloc( arraysize, sizeof(char*) ); + for(i=0; i<arraysize; i++) types[i] = 0; + maxdtlength = 0; + if( lemp->vartype ){ + maxdtlength = lemonStrlen(lemp->vartype); + } + for(i=0; i<lemp->nsymbol; i++){ + int len; + struct symbol *sp = lemp->symbols[i]; + if( sp->datatype==0 ) continue; + len = lemonStrlen(sp->datatype); + if( len>maxdtlength ) maxdtlength = len; + } + stddt = (char*)malloc( maxdtlength*2 + 1 ); + if( types==0 || stddt==0 ){ + fprintf(stderr,"Out of memory.\n"); + exit(1); + } + + /* Build a hash table of datatypes. The ".dtnum" field of each symbol + ** is filled in with the hash index plus 1. A ".dtnum" value of 0 is + ** used for terminal symbols. If there is no %default_type defined then + ** 0 is also used as the .dtnum value for nonterminals which do not specify + ** a datatype using the %type directive. + */ + for(i=0; i<lemp->nsymbol; i++){ + struct symbol *sp = lemp->symbols[i]; + char *cp; + if( sp==lemp->errsym ){ + sp->dtnum = arraysize+1; + continue; + } + if( sp->type!=NONTERMINAL || (sp->datatype==0 && lemp->vartype==0) ){ + sp->dtnum = 0; + continue; + } + cp = sp->datatype; + if( cp==0 ) cp = lemp->vartype; + j = 0; + while( isspace(*cp) ) cp++; + while( *cp ) stddt[j++] = *cp++; + while( j>0 && isspace(stddt[j-1]) ) j--; + stddt[j] = 0; + if( lemp->tokentype && strcmp(stddt, lemp->tokentype)==0 ){ + sp->dtnum = 0; + continue; + } + hash = 0; + for(j=0; stddt[j]; j++){ + hash = hash*53 + stddt[j]; + } + hash = (hash & 0x7fffffff)%arraysize; + while( types[hash] ){ + if( strcmp(types[hash],stddt)==0 ){ + sp->dtnum = hash + 1; + break; + } + hash++; + if( hash>=arraysize ) hash = 0; + } + if( types[hash]==0 ){ + sp->dtnum = hash + 1; + types[hash] = (char*)malloc( lemonStrlen(stddt)+1 ); + if( types[hash]==0 ){ + fprintf(stderr,"Out of memory.\n"); + exit(1); + } + strcpy(types[hash],stddt); + } + } + + /* Print out the definition of YYTOKENTYPE and YYMINORTYPE */ + name = lemp->name ? lemp->name : "Parse"; + lineno = *plineno; + if( mhflag ){ fprintf(out,"#if INTERFACE\n"); lineno++; } + fprintf(out,"#define %sTOKENTYPE %s\n",name, + lemp->tokentype?lemp->tokentype:"void*"); lineno++; + if( mhflag ){ fprintf(out,"#endif\n"); lineno++; } + fprintf(out,"typedef union {\n"); lineno++; + fprintf(out," int yyinit;\n"); lineno++; + fprintf(out," %sTOKENTYPE yy0;\n",name); lineno++; + for(i=0; i<arraysize; i++){ + if( types[i]==0 ) continue; + fprintf(out," %s yy%d;\n",types[i],i+1); lineno++; + free(types[i]); + } + if( lemp->errsym->useCnt ){ + fprintf(out," int yy%d;\n",lemp->errsym->dtnum); lineno++; + } + free(stddt); + free(types); + fprintf(out,"} YYMINORTYPE;\n"); lineno++; + *plineno = lineno; +} + +/* +** Return the name of a C datatype able to represent values between +** lwr and upr, inclusive. +*/ +static const char *minimum_size_type(int lwr, int upr){ + if( lwr>=0 ){ + if( upr<=255 ){ + return "unsigned char"; + }else if( upr<65535 ){ + return "unsigned short int"; + }else{ + return "unsigned int"; + } + }else if( lwr>=-127 && upr<=127 ){ + return "signed char"; + }else if( lwr>=-32767 && upr<32767 ){ + return "short"; + }else{ + return "int"; + } +} + +/* +** Each state contains a set of token transaction and a set of +** nonterminal transactions. Each of these sets makes an instance +** of the following structure. An array of these structures is used +** to order the creation of entries in the yy_action[] table. +*/ +struct axset { + struct state *stp; /* A pointer to a state */ + int isTkn; /* True to use tokens. False for non-terminals */ + int nAction; /* Number of actions */ +}; + +/* +** Compare to axset structures for sorting purposes +*/ +static int axset_compare(const void *a, const void *b){ + struct axset *p1 = (struct axset*)a; + struct axset *p2 = (struct axset*)b; + return p2->nAction - p1->nAction; +} + +/* +** Write text on "out" that describes the rule "rp". +*/ +static void writeRuleText(FILE *out, struct rule *rp){ + int j; + fprintf(out,"%s ::=", rp->lhs->name); + for(j=0; j<rp->nrhs; j++){ + struct symbol *sp = rp->rhs[j]; + fprintf(out," %s", sp->name); + if( sp->type==MULTITERMINAL ){ + int k; + for(k=1; k<sp->nsubsym; k++){ + fprintf(out,"|%s",sp->subsym[k]->name); + } + } + } +} + + +/* Generate C source code for the parser */ +void ReportTable(lemp, mhflag) +struct lemon *lemp; +int mhflag; /* Output in makeheaders format if true */ +{ + FILE *out, *in; + char line[LINESIZE]; + int lineno; + struct state *stp; + struct action *ap; + struct rule *rp; + struct acttab *pActtab; + int i, j, n; + char *name; + int mnTknOfst, mxTknOfst; + int mnNtOfst, mxNtOfst; + struct axset *ax; + + in = tplt_open(lemp); + if( in==0 ) return; + out = file_open(lemp,".c","wb"); + if( out==0 ){ + fclose(in); + return; + } + lineno = 1; + tplt_xfer(lemp->name,in,out,&lineno); + + /* Generate the include code, if any */ + tplt_print(out,lemp,lemp->include,&lineno); + if( mhflag ){ + char *name = file_makename(lemp, ".h"); + fprintf(out,"#include \"%s\"\n", name); lineno++; + free(name); + } + tplt_xfer(lemp->name,in,out,&lineno); + + /* Generate #defines for all tokens */ + if( mhflag ){ + char *prefix; + fprintf(out,"#if INTERFACE\n"); lineno++; + if( lemp->tokenprefix ) prefix = lemp->tokenprefix; + else prefix = ""; + for(i=1; i<lemp->nterminal; i++){ + fprintf(out,"#define %s%-30s %2d\n",prefix,lemp->symbols[i]->name,i); + lineno++; + } + fprintf(out,"#endif\n"); lineno++; + } + tplt_xfer(lemp->name,in,out,&lineno); + + /* Generate the defines */ + fprintf(out,"#define YYCODETYPE %s\n", + minimum_size_type(0, lemp->nsymbol+1)); lineno++; + fprintf(out,"#define YYNOCODE %d\n",lemp->nsymbol+1); lineno++; + fprintf(out,"#define YYACTIONTYPE %s\n", + minimum_size_type(0, lemp->nstate+lemp->nrule+5)); lineno++; + if( lemp->wildcard ){ + fprintf(out,"#define YYWILDCARD %d\n", + lemp->wildcard->index); lineno++; + } + print_stack_union(out,lemp,&lineno,mhflag); + fprintf(out, "#ifndef YYSTACKDEPTH\n"); lineno++; + if( lemp->stacksize ){ + fprintf(out,"#define YYSTACKDEPTH %s\n",lemp->stacksize); lineno++; + }else{ + fprintf(out,"#define YYSTACKDEPTH 100\n"); lineno++; + } + fprintf(out, "#endif\n"); lineno++; + if( mhflag ){ + fprintf(out,"#if INTERFACE\n"); lineno++; + } + name = lemp->name ? lemp->name : "Parse"; + if( lemp->arg && lemp->arg[0] ){ + int i; + i = lemonStrlen(lemp->arg); + while( i>=1 && isspace(lemp->arg[i-1]) ) i--; + while( i>=1 && (isalnum(lemp->arg[i-1]) || lemp->arg[i-1]=='_') ) i--; + fprintf(out,"#define %sARG_SDECL %s;\n",name,lemp->arg); lineno++; + fprintf(out,"#define %sARG_PDECL ,%s\n",name,lemp->arg); lineno++; + fprintf(out,"#define %sARG_FETCH %s = yypParser->%s\n", + name,lemp->arg,&lemp->arg[i]); lineno++; + fprintf(out,"#define %sARG_STORE yypParser->%s = %s\n", + name,&lemp->arg[i],&lemp->arg[i]); lineno++; + }else{ + fprintf(out,"#define %sARG_SDECL\n",name); lineno++; + fprintf(out,"#define %sARG_PDECL\n",name); lineno++; + fprintf(out,"#define %sARG_FETCH\n",name); lineno++; + fprintf(out,"#define %sARG_STORE\n",name); lineno++; + } + if( mhflag ){ + fprintf(out,"#endif\n"); lineno++; + } + fprintf(out,"#define YYNSTATE %d\n",lemp->nstate); lineno++; + fprintf(out,"#define YYNRULE %d\n",lemp->nrule); lineno++; + if( lemp->errsym->useCnt ){ + fprintf(out,"#define YYERRORSYMBOL %d\n",lemp->errsym->index); lineno++; + fprintf(out,"#define YYERRSYMDT yy%d\n",lemp->errsym->dtnum); lineno++; + } + if( lemp->has_fallback ){ + fprintf(out,"#define YYFALLBACK 1\n"); lineno++; + } + tplt_xfer(lemp->name,in,out,&lineno); + + /* Generate the action table and its associates: + ** + ** yy_action[] A single table containing all actions. + ** yy_lookahead[] A table containing the lookahead for each entry in + ** yy_action. Used to detect hash collisions. + ** yy_shift_ofst[] For each state, the offset into yy_action for + ** shifting terminals. + ** yy_reduce_ofst[] For each state, the offset into yy_action for + ** shifting non-terminals after a reduce. + ** yy_default[] Default action for each state. + */ + + /* Compute the actions on all states and count them up */ + ax = calloc(lemp->nstate*2, sizeof(ax[0])); + if( ax==0 ){ + fprintf(stderr,"malloc failed\n"); + exit(1); + } + for(i=0; i<lemp->nstate; i++){ + stp = lemp->sorted[i]; + ax[i*2].stp = stp; + ax[i*2].isTkn = 1; + ax[i*2].nAction = stp->nTknAct; + ax[i*2+1].stp = stp; + ax[i*2+1].isTkn = 0; + ax[i*2+1].nAction = stp->nNtAct; + } + mxTknOfst = mnTknOfst = 0; + mxNtOfst = mnNtOfst = 0; + + /* Compute the action table. In order to try to keep the size of the + ** action table to a minimum, the heuristic of placing the largest action + ** sets first is used. + */ + qsort(ax, lemp->nstate*2, sizeof(ax[0]), axset_compare); + pActtab = acttab_alloc(); + for(i=0; i<lemp->nstate*2 && ax[i].nAction>0; i++){ + stp = ax[i].stp; + if( ax[i].isTkn ){ + for(ap=stp->ap; ap; ap=ap->next){ + int action; + if( ap->sp->index>=lemp->nterminal ) continue; + action = compute_action(lemp, ap); + if( action<0 ) continue; + acttab_action(pActtab, ap->sp->index, action); + } + stp->iTknOfst = acttab_insert(pActtab); + if( stp->iTknOfst<mnTknOfst ) mnTknOfst = stp->iTknOfst; + if( stp->iTknOfst>mxTknOfst ) mxTknOfst = stp->iTknOfst; + }else{ + for(ap=stp->ap; ap; ap=ap->next){ + int action; + if( ap->sp->index<lemp->nterminal ) continue; + if( ap->sp->index==lemp->nsymbol ) continue; + action = compute_action(lemp, ap); + if( action<0 ) continue; + acttab_action(pActtab, ap->sp->index, action); + } + stp->iNtOfst = acttab_insert(pActtab); + if( stp->iNtOfst<mnNtOfst ) mnNtOfst = stp->iNtOfst; + if( stp->iNtOfst>mxNtOfst ) mxNtOfst = stp->iNtOfst; + } + } + free(ax); + + /* Output the yy_action table */ + fprintf(out,"static const YYACTIONTYPE yy_action[] = {\n"); lineno++; + n = acttab_size(pActtab); + for(i=j=0; i<n; i++){ + int action = acttab_yyaction(pActtab, i); + if( action<0 ) action = lemp->nstate + lemp->nrule + 2; + if( j==0 ) fprintf(out," /* %5d */ ", i); + fprintf(out, " %4d,", action); + if( j==9 || i==n-1 ){ + fprintf(out, "\n"); lineno++; + j = 0; + }else{ + j++; + } + } + fprintf(out, "};\n"); lineno++; + + /* Output the yy_lookahead table */ + fprintf(out,"static const YYCODETYPE yy_lookahead[] = {\n"); lineno++; + for(i=j=0; i<n; i++){ + int la = acttab_yylookahead(pActtab, i); + if( la<0 ) la = lemp->nsymbol; + if( j==0 ) fprintf(out," /* %5d */ ", i); + fprintf(out, " %4d,", la); + if( j==9 || i==n-1 ){ + fprintf(out, "\n"); lineno++; + j = 0; + }else{ + j++; + } + } + fprintf(out, "};\n"); lineno++; + + /* Output the yy_shift_ofst[] table */ + fprintf(out, "#define YY_SHIFT_USE_DFLT (%d)\n", mnTknOfst-1); lineno++; + n = lemp->nstate; + while( n>0 && lemp->sorted[n-1]->iTknOfst==NO_OFFSET ) n--; + fprintf(out, "#define YY_SHIFT_MAX %d\n", n-1); lineno++; + fprintf(out, "static const %s yy_shift_ofst[] = {\n", + minimum_size_type(mnTknOfst-1, mxTknOfst)); lineno++; + for(i=j=0; i<n; i++){ + int ofst; + stp = lemp->sorted[i]; + ofst = stp->iTknOfst; + if( ofst==NO_OFFSET ) ofst = mnTknOfst - 1; + if( j==0 ) fprintf(out," /* %5d */ ", i); + fprintf(out, " %4d,", ofst); + if( j==9 || i==n-1 ){ + fprintf(out, "\n"); lineno++; + j = 0; + }else{ + j++; + } + } + fprintf(out, "};\n"); lineno++; + + /* Output the yy_reduce_ofst[] table */ + fprintf(out, "#define YY_REDUCE_USE_DFLT (%d)\n", mnNtOfst-1); lineno++; + n = lemp->nstate; + while( n>0 && lemp->sorted[n-1]->iNtOfst==NO_OFFSET ) n--; + fprintf(out, "#define YY_REDUCE_MAX %d\n", n-1); lineno++; + fprintf(out, "static const %s yy_reduce_ofst[] = {\n", + minimum_size_type(mnNtOfst-1, mxNtOfst)); lineno++; + for(i=j=0; i<n; i++){ + int ofst; + stp = lemp->sorted[i]; + ofst = stp->iNtOfst; + if( ofst==NO_OFFSET ) ofst = mnNtOfst - 1; + if( j==0 ) fprintf(out," /* %5d */ ", i); + fprintf(out, " %4d,", ofst); + if( j==9 || i==n-1 ){ + fprintf(out, "\n"); lineno++; + j = 0; + }else{ + j++; + } + } + fprintf(out, "};\n"); lineno++; + + /* Output the default action table */ + fprintf(out, "static const YYACTIONTYPE yy_default[] = {\n"); lineno++; + n = lemp->nstate; + for(i=j=0; i<n; i++){ + stp = lemp->sorted[i]; + if( j==0 ) fprintf(out," /* %5d */ ", i); + fprintf(out, " %4d,", stp->iDflt); + if( j==9 || i==n-1 ){ + fprintf(out, "\n"); lineno++; + j = 0; + }else{ + j++; + } + } + fprintf(out, "};\n"); lineno++; + tplt_xfer(lemp->name,in,out,&lineno); + + /* Generate the table of fallback tokens. + */ + if( lemp->has_fallback ){ + int mx = lemp->nterminal - 1; + while( mx>0 && lemp->symbols[mx]->fallback==0 ){ mx--; } + for(i=0; i<=mx; i++){ + struct symbol *p = lemp->symbols[i]; + if( p->fallback==0 ){ + fprintf(out, " 0, /* %10s => nothing */\n", p->name); + }else{ + fprintf(out, " %3d, /* %10s => %s */\n", p->fallback->index, + p->name, p->fallback->name); + } + lineno++; + } + } + tplt_xfer(lemp->name, in, out, &lineno); + + /* Generate a table containing the symbolic name of every symbol + */ + for(i=0; i<lemp->nsymbol; i++){ + sprintf(line,"\"%s\",",lemp->symbols[i]->name); + fprintf(out," %-15s",line); + if( (i&3)==3 ){ fprintf(out,"\n"); lineno++; } + } + if( (i&3)!=0 ){ fprintf(out,"\n"); lineno++; } + tplt_xfer(lemp->name,in,out,&lineno); + + /* Generate a table containing a text string that describes every + ** rule in the rule set of the grammar. This information is used + ** when tracing REDUCE actions. + */ + for(i=0, rp=lemp->rule; rp; rp=rp->next, i++){ + assert( rp->index==i ); + fprintf(out," /* %3d */ \"", i); + writeRuleText(out, rp); + fprintf(out,"\",\n"); lineno++; + } + tplt_xfer(lemp->name,in,out,&lineno); + + /* Generate code which executes every time a symbol is popped from + ** the stack while processing errors or while destroying the parser. + ** (In other words, generate the %destructor actions) + */ + if( lemp->tokendest ){ + int once = 1; + for(i=0; i<lemp->nsymbol; i++){ + struct symbol *sp = lemp->symbols[i]; + if( sp==0 || sp->type!=TERMINAL ) continue; + if( once ){ + fprintf(out, " /* TERMINAL Destructor */\n"); lineno++; + once = 0; + } + fprintf(out," case %d: /* %s */\n", sp->index, sp->name); lineno++; + } + for(i=0; i<lemp->nsymbol && lemp->symbols[i]->type!=TERMINAL; i++); + if( i<lemp->nsymbol ){ + emit_destructor_code(out,lemp->symbols[i],lemp,&lineno); + fprintf(out," break;\n"); lineno++; + } + } + if( lemp->vardest ){ + struct symbol *dflt_sp = 0; + int once = 1; + for(i=0; i<lemp->nsymbol; i++){ + struct symbol *sp = lemp->symbols[i]; + if( sp==0 || sp->type==TERMINAL || + sp->index<=0 || sp->destructor!=0 ) continue; + if( once ){ + fprintf(out, " /* Default NON-TERMINAL Destructor */\n"); lineno++; + once = 0; + } + fprintf(out," case %d: /* %s */\n", sp->index, sp->name); lineno++; + dflt_sp = sp; + } + if( dflt_sp!=0 ){ + emit_destructor_code(out,dflt_sp,lemp,&lineno); + } + fprintf(out," break;\n"); lineno++; + } + for(i=0; i<lemp->nsymbol; i++){ + struct symbol *sp = lemp->symbols[i]; + if( sp==0 || sp->type==TERMINAL || sp->destructor==0 ) continue; + fprintf(out," case %d: /* %s */\n", sp->index, sp->name); lineno++; + + /* Combine duplicate destructors into a single case */ + for(j=i+1; j<lemp->nsymbol; j++){ + struct symbol *sp2 = lemp->symbols[j]; + if( sp2 && sp2->type!=TERMINAL && sp2->destructor + && sp2->dtnum==sp->dtnum + && strcmp(sp->destructor,sp2->destructor)==0 ){ + fprintf(out," case %d: /* %s */\n", + sp2->index, sp2->name); lineno++; + sp2->destructor = 0; + } + } + + emit_destructor_code(out,lemp->symbols[i],lemp,&lineno); + fprintf(out," break;\n"); lineno++; + } + tplt_xfer(lemp->name,in,out,&lineno); + + /* Generate code which executes whenever the parser stack overflows */ + tplt_print(out,lemp,lemp->overflow,&lineno); + tplt_xfer(lemp->name,in,out,&lineno); + + /* Generate the table of rule information + ** + ** Note: This code depends on the fact that rules are number + ** sequentually beginning with 0. + */ + for(rp=lemp->rule; rp; rp=rp->next){ + fprintf(out," { %d, %d },\n",rp->lhs->index,rp->nrhs); lineno++; + } + tplt_xfer(lemp->name,in,out,&lineno); + + /* Generate code which execution during each REDUCE action */ + for(rp=lemp->rule; rp; rp=rp->next){ + translate_code(lemp, rp); + } + /* First output rules other than the default: rule */ + for(rp=lemp->rule; rp; rp=rp->next){ + struct rule *rp2; /* Other rules with the same action */ + if( rp->code==0 ) continue; + if( rp->code[0]=='\n' && rp->code[1]==0 ) continue; /* Will be default: */ + fprintf(out," case %d: /* ", rp->index); + writeRuleText(out, rp); + fprintf(out, " */\n"); lineno++; + for(rp2=rp->next; rp2; rp2=rp2->next){ + if( rp2->code==rp->code ){ + fprintf(out," case %d: /* ", rp2->index); + writeRuleText(out, rp2); + fprintf(out," */ yytestcase(yyruleno==%d);\n", rp2->index); lineno++; + rp2->code = 0; + } + } + emit_code(out,rp,lemp,&lineno); + fprintf(out," break;\n"); lineno++; + rp->code = 0; + } + /* Finally, output the default: rule. We choose as the default: all + ** empty actions. */ + fprintf(out," default:\n"); lineno++; + for(rp=lemp->rule; rp; rp=rp->next){ + if( rp->code==0 ) continue; + assert( rp->code[0]=='\n' && rp->code[1]==0 ); + fprintf(out," /* (%d) ", rp->index); + writeRuleText(out, rp); + fprintf(out, " */ yytestcase(yyruleno==%d);\n", rp->index); lineno++; + } + fprintf(out," break;\n"); lineno++; + tplt_xfer(lemp->name,in,out,&lineno); + + /* Generate code which executes if a parse fails */ + tplt_print(out,lemp,lemp->failure,&lineno); + tplt_xfer(lemp->name,in,out,&lineno); + + /* Generate code which executes when a syntax error occurs */ + tplt_print(out,lemp,lemp->error,&lineno); + tplt_xfer(lemp->name,in,out,&lineno); + + /* Generate code which executes when the parser accepts its input */ + tplt_print(out,lemp,lemp->accept,&lineno); + tplt_xfer(lemp->name,in,out,&lineno); + + /* Append any addition code the user desires */ + tplt_print(out,lemp,lemp->extracode,&lineno); + + fclose(in); + fclose(out); + return; +} + +/* Generate a header file for the parser */ +void ReportHeader(lemp) +struct lemon *lemp; +{ + FILE *out, *in; + char *prefix; + char line[LINESIZE]; + char pattern[LINESIZE]; + int i; + + if( lemp->tokenprefix ) prefix = lemp->tokenprefix; + else prefix = ""; + in = file_open(lemp,".h","rb"); + if( in ){ + for(i=1; i<lemp->nterminal && fgets(line,LINESIZE,in); i++){ + sprintf(pattern,"#define %s%-30s %2d\n",prefix,lemp->symbols[i]->name,i); + if( strcmp(line,pattern) ) break; + } + fclose(in); + if( i==lemp->nterminal ){ + /* No change in the file. Don't rewrite it. */ + return; + } + } + out = file_open(lemp,".h","wb"); + if( out ){ + for(i=1; i<lemp->nterminal; i++){ + fprintf(out,"#define %s%-30s %2d\n",prefix,lemp->symbols[i]->name,i); + } + fclose(out); + } + return; +} + +/* Reduce the size of the action tables, if possible, by making use +** of defaults. +** +** In this version, we take the most frequent REDUCE action and make +** it the default. Except, there is no default if the wildcard token +** is a possible look-ahead. +*/ +void CompressTables(lemp) +struct lemon *lemp; +{ + struct state *stp; + struct action *ap, *ap2; + struct rule *rp, *rp2, *rbest; + int nbest, n; + int i; + int usesWildcard; + + for(i=0; i<lemp->nstate; i++){ + stp = lemp->sorted[i]; + nbest = 0; + rbest = 0; + usesWildcard = 0; + + for(ap=stp->ap; ap; ap=ap->next){ + if( ap->type==SHIFT && ap->sp==lemp->wildcard ){ + usesWildcard = 1; + } + if( ap->type!=REDUCE ) continue; + rp = ap->x.rp; + if( rp->lhsStart ) continue; + if( rp==rbest ) continue; + n = 1; + for(ap2=ap->next; ap2; ap2=ap2->next){ + if( ap2->type!=REDUCE ) continue; + rp2 = ap2->x.rp; + if( rp2==rbest ) continue; + if( rp2==rp ) n++; + } + if( n>nbest ){ + nbest = n; + rbest = rp; + } + } + + /* Do not make a default if the number of rules to default + ** is not at least 1 or if the wildcard token is a possible + ** lookahead. + */ + if( nbest<1 || usesWildcard ) continue; + + + /* Combine matching REDUCE actions into a single default */ + for(ap=stp->ap; ap; ap=ap->next){ + if( ap->type==REDUCE && ap->x.rp==rbest ) break; + } + assert( ap ); + ap->sp = Symbol_new("{default}"); + for(ap=ap->next; ap; ap=ap->next){ + if( ap->type==REDUCE && ap->x.rp==rbest ) ap->type = NOT_USED; + } + stp->ap = Action_sort(stp->ap); + } +} + + +/* +** Compare two states for sorting purposes. The smaller state is the +** one with the most non-terminal actions. If they have the same number +** of non-terminal actions, then the smaller is the one with the most +** token actions. +*/ +static int stateResortCompare(const void *a, const void *b){ + const struct state *pA = *(const struct state**)a; + const struct state *pB = *(const struct state**)b; + int n; + + n = pB->nNtAct - pA->nNtAct; + if( n==0 ){ + n = pB->nTknAct - pA->nTknAct; + } + return n; +} + + +/* +** Renumber and resort states so that states with fewer choices +** occur at the end. Except, keep state 0 as the first state. +*/ +void ResortStates(lemp) +struct lemon *lemp; +{ + int i; + struct state *stp; + struct action *ap; + + for(i=0; i<lemp->nstate; i++){ + stp = lemp->sorted[i]; + stp->nTknAct = stp->nNtAct = 0; + stp->iDflt = lemp->nstate + lemp->nrule; + stp->iTknOfst = NO_OFFSET; + stp->iNtOfst = NO_OFFSET; + for(ap=stp->ap; ap; ap=ap->next){ + if( compute_action(lemp,ap)>=0 ){ + if( ap->sp->index<lemp->nterminal ){ + stp->nTknAct++; + }else if( ap->sp->index<lemp->nsymbol ){ + stp->nNtAct++; + }else{ + stp->iDflt = compute_action(lemp, ap); + } + } + } + } + qsort(&lemp->sorted[1], lemp->nstate-1, sizeof(lemp->sorted[0]), + stateResortCompare); + for(i=0; i<lemp->nstate; i++){ + lemp->sorted[i]->statenum = i; + } +} + + +/***************** From the file "set.c" ************************************/ +/* +** Set manipulation routines for the LEMON parser generator. +*/ + +static int size = 0; + +/* Set the set size */ +void SetSize(n) +int n; +{ + size = n+1; +} + +/* Allocate a new set */ +char *SetNew(){ + char *s; + s = (char*)calloc( size, 1); + if( s==0 ){ + extern void memory_error(); + memory_error(); + } + return s; +} + +/* Deallocate a set */ +void SetFree(s) +char *s; +{ + free(s); +} + +/* Add a new element to the set. Return TRUE if the element was added +** and FALSE if it was already there. */ +int SetAdd(s,e) +char *s; +int e; +{ + int rv; + assert( e>=0 && e<size ); + rv = s[e]; + s[e] = 1; + return !rv; +} + +/* Add every element of s2 to s1. Return TRUE if s1 changes. */ +int SetUnion(s1,s2) +char *s1; +char *s2; +{ + int i, progress; + progress = 0; + for(i=0; i<size; i++){ + if( s2[i]==0 ) continue; + if( s1[i]==0 ){ + progress = 1; + s1[i] = 1; + } + } + return progress; +} +/********************** From the file "table.c" ****************************/ +/* +** All code in this file has been automatically generated +** from a specification in the file +** "table.q" +** by the associative array code building program "aagen". +** Do not edit this file! Instead, edit the specification +** file, then rerun aagen. +*/ +/* +** Code for processing tables in the LEMON parser generator. +*/ + +PRIVATE int strhash(x) +char *x; +{ + int h = 0; + while( *x) h = h*13 + *(x++); + return h; +} + +/* Works like strdup, sort of. Save a string in malloced memory, but +** keep strings in a table so that the same string is not in more +** than one place. +*/ +char *Strsafe(y) +char *y; +{ + char *z; + + if( y==0 ) return 0; + z = Strsafe_find(y); + if( z==0 && (z=malloc( lemonStrlen(y)+1 ))!=0 ){ + strcpy(z,y); + Strsafe_insert(z); + } + MemoryCheck(z); + return z; +} + +/* There is one instance of the following structure for each +** associative array of type "x1". +*/ +struct s_x1 { + int size; /* The number of available slots. */ + /* Must be a power of 2 greater than or */ + /* equal to 1 */ + int count; /* Number of currently slots filled */ + struct s_x1node *tbl; /* The data stored here */ + struct s_x1node **ht; /* Hash table for lookups */ +}; + +/* There is one instance of this structure for every data element +** in an associative array of type "x1". +*/ +typedef struct s_x1node { + char *data; /* The data */ + struct s_x1node *next; /* Next entry with the same hash */ + struct s_x1node **from; /* Previous link */ +} x1node; + +/* There is only one instance of the array, which is the following */ +static struct s_x1 *x1a; + +/* Allocate a new associative array */ +void Strsafe_init(){ + if( x1a ) return; + x1a = (struct s_x1*)malloc( sizeof(struct s_x1) ); + if( x1a ){ + x1a->size = 1024; + x1a->count = 0; + x1a->tbl = (x1node*)malloc( + (sizeof(x1node) + sizeof(x1node*))*1024 ); + if( x1a->tbl==0 ){ + free(x1a); + x1a = 0; + }else{ + int i; + x1a->ht = (x1node**)&(x1a->tbl[1024]); + for(i=0; i<1024; i++) x1a->ht[i] = 0; + } + } +} +/* Insert a new record into the array. Return TRUE if successful. +** Prior data with the same key is NOT overwritten */ +int Strsafe_insert(data) +char *data; +{ + x1node *np; + int h; + int ph; + + if( x1a==0 ) return 0; + ph = strhash(data); + h = ph & (x1a->size-1); + np = x1a->ht[h]; + while( np ){ + if( strcmp(np->data,data)==0 ){ + /* An existing entry with the same key is found. */ + /* Fail because overwrite is not allows. */ + return 0; + } + np = np->next; + } + if( x1a->count>=x1a->size ){ + /* Need to make the hash table bigger */ + int i,size; + struct s_x1 array; + array.size = size = x1a->size*2; + array.count = x1a->count; + array.tbl = (x1node*)malloc( + (sizeof(x1node) + sizeof(x1node*))*size ); + if( array.tbl==0 ) return 0; /* Fail due to malloc failure */ + array.ht = (x1node**)&(array.tbl[size]); + for(i=0; i<size; i++) array.ht[i] = 0; + for(i=0; i<x1a->count; i++){ + x1node *oldnp, *newnp; + oldnp = &(x1a->tbl[i]); + h = strhash(oldnp->data) & (size-1); + newnp = &(array.tbl[i]); + if( array.ht[h] ) array.ht[h]->from = &(newnp->next); + newnp->next = array.ht[h]; + newnp->data = oldnp->data; + newnp->from = &(array.ht[h]); + array.ht[h] = newnp; + } + free(x1a->tbl); + *x1a = array; + } + /* Insert the new data */ + h = ph & (x1a->size-1); + np = &(x1a->tbl[x1a->count++]); + np->data = data; + if( x1a->ht[h] ) x1a->ht[h]->from = &(np->next); + np->next = x1a->ht[h]; + x1a->ht[h] = np; + np->from = &(x1a->ht[h]); + return 1; +} + +/* Return a pointer to data assigned to the given key. Return NULL +** if no such key. */ +char *Strsafe_find(key) +char *key; +{ + int h; + x1node *np; + + if( x1a==0 ) return 0; + h = strhash(key) & (x1a->size-1); + np = x1a->ht[h]; + while( np ){ + if( strcmp(np->data,key)==0 ) break; + np = np->next; + } + return np ? np->data : 0; +} + +/* Return a pointer to the (terminal or nonterminal) symbol "x". +** Create a new symbol if this is the first time "x" has been seen. +*/ +struct symbol *Symbol_new(x) +char *x; +{ + struct symbol *sp; + + sp = Symbol_find(x); + if( sp==0 ){ + sp = (struct symbol *)calloc(1, sizeof(struct symbol) ); + MemoryCheck(sp); + sp->name = Strsafe(x); + sp->type = isupper(*x) ? TERMINAL : NONTERMINAL; + sp->rule = 0; + sp->fallback = 0; + sp->prec = -1; + sp->assoc = UNK; + sp->firstset = 0; + sp->lambda = LEMON_FALSE; + sp->destructor = 0; + sp->destLineno = 0; + sp->datatype = 0; + sp->useCnt = 0; + Symbol_insert(sp,sp->name); + } + sp->useCnt++; + return sp; +} + +/* Compare two symbols for working purposes +** +** Symbols that begin with upper case letters (terminals or tokens) +** must sort before symbols that begin with lower case letters +** (non-terminals). Other than that, the order does not matter. +** +** We find experimentally that leaving the symbols in their original +** order (the order they appeared in the grammar file) gives the +** smallest parser tables in SQLite. +*/ +int Symbolcmpp(struct symbol **a, struct symbol **b){ + int i1 = (**a).index + 10000000*((**a).name[0]>'Z'); + int i2 = (**b).index + 10000000*((**b).name[0]>'Z'); + return i1-i2; +} + +/* There is one instance of the following structure for each +** associative array of type "x2". +*/ +struct s_x2 { + int size; /* The number of available slots. */ + /* Must be a power of 2 greater than or */ + /* equal to 1 */ + int count; /* Number of currently slots filled */ + struct s_x2node *tbl; /* The data stored here */ + struct s_x2node **ht; /* Hash table for lookups */ +}; + +/* There is one instance of this structure for every data element +** in an associative array of type "x2". +*/ +typedef struct s_x2node { + struct symbol *data; /* The data */ + char *key; /* The key */ + struct s_x2node *next; /* Next entry with the same hash */ + struct s_x2node **from; /* Previous link */ +} x2node; + +/* There is only one instance of the array, which is the following */ +static struct s_x2 *x2a; + +/* Allocate a new associative array */ +void Symbol_init(){ + if( x2a ) return; + x2a = (struct s_x2*)malloc( sizeof(struct s_x2) ); + if( x2a ){ + x2a->size = 128; + x2a->count = 0; + x2a->tbl = (x2node*)malloc( + (sizeof(x2node) + sizeof(x2node*))*128 ); + if( x2a->tbl==0 ){ + free(x2a); + x2a = 0; + }else{ + int i; + x2a->ht = (x2node**)&(x2a->tbl[128]); + for(i=0; i<128; i++) x2a->ht[i] = 0; + } + } +} +/* Insert a new record into the array. Return TRUE if successful. +** Prior data with the same key is NOT overwritten */ +int Symbol_insert(data,key) +struct symbol *data; +char *key; +{ + x2node *np; + int h; + int ph; + + if( x2a==0 ) return 0; + ph = strhash(key); + h = ph & (x2a->size-1); + np = x2a->ht[h]; + while( np ){ + if( strcmp(np->key,key)==0 ){ + /* An existing entry with the same key is found. */ + /* Fail because overwrite is not allows. */ + return 0; + } + np = np->next; + } + if( x2a->count>=x2a->size ){ + /* Need to make the hash table bigger */ + int i,size; + struct s_x2 array; + array.size = size = x2a->size*2; + array.count = x2a->count; + array.tbl = (x2node*)malloc( + (sizeof(x2node) + sizeof(x2node*))*size ); + if( array.tbl==0 ) return 0; /* Fail due to malloc failure */ + array.ht = (x2node**)&(array.tbl[size]); + for(i=0; i<size; i++) array.ht[i] = 0; + for(i=0; i<x2a->count; i++){ + x2node *oldnp, *newnp; + oldnp = &(x2a->tbl[i]); + h = strhash(oldnp->key) & (size-1); + newnp = &(array.tbl[i]); + if( array.ht[h] ) array.ht[h]->from = &(newnp->next); + newnp->next = array.ht[h]; + newnp->key = oldnp->key; + newnp->data = oldnp->data; + newnp->from = &(array.ht[h]); + array.ht[h] = newnp; + } + free(x2a->tbl); + *x2a = array; + } + /* Insert the new data */ + h = ph & (x2a->size-1); + np = &(x2a->tbl[x2a->count++]); + np->key = key; + np->data = data; + if( x2a->ht[h] ) x2a->ht[h]->from = &(np->next); + np->next = x2a->ht[h]; + x2a->ht[h] = np; + np->from = &(x2a->ht[h]); + return 1; +} + +/* Return a pointer to data assigned to the given key. Return NULL +** if no such key. */ +struct symbol *Symbol_find(key) +char *key; +{ + int h; + x2node *np; + + if( x2a==0 ) return 0; + h = strhash(key) & (x2a->size-1); + np = x2a->ht[h]; + while( np ){ + if( strcmp(np->key,key)==0 ) break; + np = np->next; + } + return np ? np->data : 0; +} + +/* Return the n-th data. Return NULL if n is out of range. */ +struct symbol *Symbol_Nth(n) +int n; +{ + struct symbol *data; + if( x2a && n>0 && n<=x2a->count ){ + data = x2a->tbl[n-1].data; + }else{ + data = 0; + } + return data; +} + +/* Return the size of the array */ +int Symbol_count() +{ + return x2a ? x2a->count : 0; +} + +/* Return an array of pointers to all data in the table. +** The array is obtained from malloc. Return NULL if memory allocation +** problems, or if the array is empty. */ +struct symbol **Symbol_arrayof() +{ + struct symbol **array; + int i,size; + if( x2a==0 ) return 0; + size = x2a->count; + array = (struct symbol **)calloc(size, sizeof(struct symbol *)); + if( array ){ + for(i=0; i<size; i++) array[i] = x2a->tbl[i].data; + } + return array; +} + +/* Compare two configurations */ +int Configcmp(a,b) +struct config *a; +struct config *b; +{ + int x; + x = a->rp->index - b->rp->index; + if( x==0 ) x = a->dot - b->dot; + return x; +} + +/* Compare two states */ +PRIVATE int statecmp(a,b) +struct config *a; +struct config *b; +{ + int rc; + for(rc=0; rc==0 && a && b; a=a->bp, b=b->bp){ + rc = a->rp->index - b->rp->index; + if( rc==0 ) rc = a->dot - b->dot; + } + if( rc==0 ){ + if( a ) rc = 1; + if( b ) rc = -1; + } + return rc; +} + +/* Hash a state */ +PRIVATE int statehash(a) +struct config *a; +{ + int h=0; + while( a ){ + h = h*571 + a->rp->index*37 + a->dot; + a = a->bp; + } + return h; +} + +/* Allocate a new state structure */ +struct state *State_new() +{ + struct state *new; + new = (struct state *)calloc(1, sizeof(struct state) ); + MemoryCheck(new); + return new; +} + +/* There is one instance of the following structure for each +** associative array of type "x3". +*/ +struct s_x3 { + int size; /* The number of available slots. */ + /* Must be a power of 2 greater than or */ + /* equal to 1 */ + int count; /* Number of currently slots filled */ + struct s_x3node *tbl; /* The data stored here */ + struct s_x3node **ht; /* Hash table for lookups */ +}; + +/* There is one instance of this structure for every data element +** in an associative array of type "x3". +*/ +typedef struct s_x3node { + struct state *data; /* The data */ + struct config *key; /* The key */ + struct s_x3node *next; /* Next entry with the same hash */ + struct s_x3node **from; /* Previous link */ +} x3node; + +/* There is only one instance of the array, which is the following */ +static struct s_x3 *x3a; + +/* Allocate a new associative array */ +void State_init(){ + if( x3a ) return; + x3a = (struct s_x3*)malloc( sizeof(struct s_x3) ); + if( x3a ){ + x3a->size = 128; + x3a->count = 0; + x3a->tbl = (x3node*)malloc( + (sizeof(x3node) + sizeof(x3node*))*128 ); + if( x3a->tbl==0 ){ + free(x3a); + x3a = 0; + }else{ + int i; + x3a->ht = (x3node**)&(x3a->tbl[128]); + for(i=0; i<128; i++) x3a->ht[i] = 0; + } + } +} +/* Insert a new record into the array. Return TRUE if successful. +** Prior data with the same key is NOT overwritten */ +int State_insert(data,key) +struct state *data; +struct config *key; +{ + x3node *np; + int h; + int ph; + + if( x3a==0 ) return 0; + ph = statehash(key); + h = ph & (x3a->size-1); + np = x3a->ht[h]; + while( np ){ + if( statecmp(np->key,key)==0 ){ + /* An existing entry with the same key is found. */ + /* Fail because overwrite is not allows. */ + return 0; + } + np = np->next; + } + if( x3a->count>=x3a->size ){ + /* Need to make the hash table bigger */ + int i,size; + struct s_x3 array; + array.size = size = x3a->size*2; + array.count = x3a->count; + array.tbl = (x3node*)malloc( + (sizeof(x3node) + sizeof(x3node*))*size ); + if( array.tbl==0 ) return 0; /* Fail due to malloc failure */ + array.ht = (x3node**)&(array.tbl[size]); + for(i=0; i<size; i++) array.ht[i] = 0; + for(i=0; i<x3a->count; i++){ + x3node *oldnp, *newnp; + oldnp = &(x3a->tbl[i]); + h = statehash(oldnp->key) & (size-1); + newnp = &(array.tbl[i]); + if( array.ht[h] ) array.ht[h]->from = &(newnp->next); + newnp->next = array.ht[h]; + newnp->key = oldnp->key; + newnp->data = oldnp->data; + newnp->from = &(array.ht[h]); + array.ht[h] = newnp; + } + free(x3a->tbl); + *x3a = array; + } + /* Insert the new data */ + h = ph & (x3a->size-1); + np = &(x3a->tbl[x3a->count++]); + np->key = key; + np->data = data; + if( x3a->ht[h] ) x3a->ht[h]->from = &(np->next); + np->next = x3a->ht[h]; + x3a->ht[h] = np; + np->from = &(x3a->ht[h]); + return 1; +} + +/* Return a pointer to data assigned to the given key. Return NULL +** if no such key. */ +struct state *State_find(key) +struct config *key; +{ + int h; + x3node *np; + + if( x3a==0 ) return 0; + h = statehash(key) & (x3a->size-1); + np = x3a->ht[h]; + while( np ){ + if( statecmp(np->key,key)==0 ) break; + np = np->next; + } + return np ? np->data : 0; +} + +/* Return an array of pointers to all data in the table. +** The array is obtained from malloc. Return NULL if memory allocation +** problems, or if the array is empty. */ +struct state **State_arrayof() +{ + struct state **array; + int i,size; + if( x3a==0 ) return 0; + size = x3a->count; + array = (struct state **)malloc( sizeof(struct state *)*size ); + if( array ){ + for(i=0; i<size; i++) array[i] = x3a->tbl[i].data; + } + return array; +} + +/* Hash a configuration */ +PRIVATE int confighash(a) +struct config *a; +{ + int h=0; + h = h*571 + a->rp->index*37 + a->dot; + return h; +} + +/* There is one instance of the following structure for each +** associative array of type "x4". +*/ +struct s_x4 { + int size; /* The number of available slots. */ + /* Must be a power of 2 greater than or */ + /* equal to 1 */ + int count; /* Number of currently slots filled */ + struct s_x4node *tbl; /* The data stored here */ + struct s_x4node **ht; /* Hash table for lookups */ +}; + +/* There is one instance of this structure for every data element +** in an associative array of type "x4". +*/ +typedef struct s_x4node { + struct config *data; /* The data */ + struct s_x4node *next; /* Next entry with the same hash */ + struct s_x4node **from; /* Previous link */ +} x4node; + +/* There is only one instance of the array, which is the following */ +static struct s_x4 *x4a; + +/* Allocate a new associative array */ +void Configtable_init(){ + if( x4a ) return; + x4a = (struct s_x4*)malloc( sizeof(struct s_x4) ); + if( x4a ){ + x4a->size = 64; + x4a->count = 0; + x4a->tbl = (x4node*)malloc( + (sizeof(x4node) + sizeof(x4node*))*64 ); + if( x4a->tbl==0 ){ + free(x4a); + x4a = 0; + }else{ + int i; + x4a->ht = (x4node**)&(x4a->tbl[64]); + for(i=0; i<64; i++) x4a->ht[i] = 0; + } + } +} +/* Insert a new record into the array. Return TRUE if successful. +** Prior data with the same key is NOT overwritten */ +int Configtable_insert(data) +struct config *data; +{ + x4node *np; + int h; + int ph; + + if( x4a==0 ) return 0; + ph = confighash(data); + h = ph & (x4a->size-1); + np = x4a->ht[h]; + while( np ){ + if( Configcmp(np->data,data)==0 ){ + /* An existing entry with the same key is found. */ + /* Fail because overwrite is not allows. */ + return 0; + } + np = np->next; + } + if( x4a->count>=x4a->size ){ + /* Need to make the hash table bigger */ + int i,size; + struct s_x4 array; + array.size = size = x4a->size*2; + array.count = x4a->count; + array.tbl = (x4node*)malloc( + (sizeof(x4node) + sizeof(x4node*))*size ); + if( array.tbl==0 ) return 0; /* Fail due to malloc failure */ + array.ht = (x4node**)&(array.tbl[size]); + for(i=0; i<size; i++) array.ht[i] = 0; + for(i=0; i<x4a->count; i++){ + x4node *oldnp, *newnp; + oldnp = &(x4a->tbl[i]); + h = confighash(oldnp->data) & (size-1); + newnp = &(array.tbl[i]); + if( array.ht[h] ) array.ht[h]->from = &(newnp->next); + newnp->next = array.ht[h]; + newnp->data = oldnp->data; + newnp->from = &(array.ht[h]); + array.ht[h] = newnp; + } + free(x4a->tbl); + *x4a = array; + } + /* Insert the new data */ + h = ph & (x4a->size-1); + np = &(x4a->tbl[x4a->count++]); + np->data = data; + if( x4a->ht[h] ) x4a->ht[h]->from = &(np->next); + np->next = x4a->ht[h]; + x4a->ht[h] = np; + np->from = &(x4a->ht[h]); + return 1; +} + +/* Return a pointer to data assigned to the given key. Return NULL +** if no such key. */ +struct config *Configtable_find(key) +struct config *key; +{ + int h; + x4node *np; + + if( x4a==0 ) return 0; + h = confighash(key) & (x4a->size-1); + np = x4a->ht[h]; + while( np ){ + if( Configcmp(np->data,key)==0 ) break; + np = np->next; + } + return np ? np->data : 0; +} + +/* Remove all data from the table. Pass each data to the function "f" +** as it is removed. ("f" may be null to avoid this step.) */ +void Configtable_clear(f) +int(*f)(/* struct config * */); +{ + int i; + if( x4a==0 || x4a->count==0 ) return; + if( f ) for(i=0; i<x4a->count; i++) (*f)(x4a->tbl[i].data); + for(i=0; i<x4a->size; i++) x4a->ht[i] = 0; + x4a->count = 0; + return; +} diff --git a/src/spatialite/src/gaiageo/lemon/lemon_src/lempar.c b/src/spatialite/src/gaiageo/lemon/lemon_src/lempar.c new file mode 100644 index 0000000..774b875 --- /dev/null +++ b/src/spatialite/src/gaiageo/lemon/lemon_src/lempar.c @@ -0,0 +1,842 @@ +/* Driver template for the LEMON parser generator. +** The author disclaims copyright to this source code. +*/ +/* First off, code is included that follows the "include" declaration +** in the input grammar file. */ +#include <stdio.h> +%% +/* Next is all token values, in a form suitable for use by makeheaders. +** This section will be null unless lemon is run with the -m switch. +*/ +/* +** These constants (all generated automatically by the parser generator) +** specify the various kinds of tokens (terminals) that the parser +** understands. +** +** Each symbol here is a terminal symbol in the grammar. +*/ +%% +/* Make sure the INTERFACE macro is defined. +*/ +#ifndef INTERFACE +# define INTERFACE 1 +#endif +/* The next thing included is series of defines which control +** various aspects of the generated parser. +** YYCODETYPE is the data type used for storing terminal +** and nonterminal numbers. "unsigned char" is +** used if there are fewer than 250 terminals +** and nonterminals. "int" is used otherwise. +** YYNOCODE is a number of type YYCODETYPE which corresponds +** to no legal terminal or nonterminal number. This +** number is used to fill in empty slots of the hash +** table. +** YYFALLBACK If defined, this indicates that one or more tokens +** have fall-back values which should be used if the +** original value of the token will not parse. +** YYACTIONTYPE is the data type used for storing terminal +** and nonterminal numbers. "unsigned char" is +** used if there are fewer than 250 rules and +** states combined. "int" is used otherwise. +** ParseTOKENTYPE is the data type used for minor tokens given +** directly to the parser from the tokenizer. +** YYMINORTYPE is the data type used for all minor tokens. +** This is typically a union of many types, one of +** which is ParseTOKENTYPE. The entry in the union +** for base tokens is called "yy0". +** YYSTACKDEPTH is the maximum depth of the parser's stack. If +** zero the stack is dynamically sized using realloc() +** ParseARG_SDECL A static variable declaration for the %extra_argument +** ParseARG_PDECL A parameter declaration for the %extra_argument +** ParseARG_STORE Code to store %extra_argument into yypParser +** ParseARG_FETCH Code to extract %extra_argument from yypParser +** YYNSTATE the combined number of states. +** YYNRULE the number of rules in the grammar +** YYERRORSYMBOL is the code number of the error symbol. If not +** defined, then do no error processing. +*/ +%% +#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) +#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) +#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) + +/* The yyzerominor constant is used to initialize instances of +** YYMINORTYPE objects to zero. */ +static const YYMINORTYPE yyzerominor = { 0 }; + +/* Define the yytestcase() macro to be a no-op if is not already defined +** otherwise. +** +** Applications can choose to define yytestcase() in the %include section +** to a macro that can assist in verifying code coverage. For production +** code the yytestcase() macro should be turned off. But it is useful +** for testing. +*/ +#ifndef yytestcase +# define yytestcase(X) +#endif + + +/* Next are the tables used to determine what action to take based on the +** current state and lookahead token. These tables are used to implement +** functions that take a state number and lookahead value and return an +** action integer. +** +** Suppose the action integer is N. Then the action is determined as +** follows +** +** 0 <= N < YYNSTATE Shift N. That is, push the lookahead +** token onto the stack and goto state N. +** +** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. +** +** N == YYNSTATE+YYNRULE A syntax error has occurred. +** +** N == YYNSTATE+YYNRULE+1 The parser accepts its input. +** +** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused +** slots in the yy_action[] table. +** +** The action table is constructed as a single large table named yy_action[]. +** Given state S and lookahead X, the action is computed as +** +** yy_action[ yy_shift_ofst[S] + X ] +** +** If the index value yy_shift_ofst[S]+X is out of range or if the value +** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] +** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table +** and that yy_default[S] should be used instead. +** +** The formula above is for computing the action when the lookahead is +** a terminal symbol. If the lookahead is a non-terminal (as occurs after +** a reduce action) then the yy_reduce_ofst[] array is used in place of +** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of +** YY_SHIFT_USE_DFLT. +** +** The following are the tables generated in this section: +** +** yy_action[] A single table containing all actions. +** yy_lookahead[] A table containing the lookahead for each entry in +** yy_action. Used to detect hash collisions. +** yy_shift_ofst[] For each state, the offset into yy_action for +** shifting terminals. +** yy_reduce_ofst[] For each state, the offset into yy_action for +** shifting non-terminals after a reduce. +** yy_default[] Default action for each state. +*/ +%% +#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0])) + +/* The next table maps tokens into fallback tokens. If a construct +** like the following: +** +** %fallback ID X Y Z. +** +** appears in the grammar, then ID becomes a fallback token for X, Y, +** and Z. Whenever one of the tokens X, Y, or Z is input to the parser +** but it does not parse, the type of the token is changed to ID and +** the parse is retried before an error is thrown. +*/ +#ifdef YYFALLBACK +static const YYCODETYPE yyFallback[] = { +%% +}; +#endif /* YYFALLBACK */ + +/* The following structure represents a single element of the +** parser's stack. Information stored includes: +** +** + The state number for the parser at this level of the stack. +** +** + The value of the token stored at this level of the stack. +** (In other words, the "major" token.) +** +** + The semantic value stored at this level of the stack. This is +** the information used by the action routines in the grammar. +** It is sometimes called the "minor" token. +*/ +struct yyStackEntry { + YYACTIONTYPE stateno; /* The state-number */ + YYCODETYPE major; /* The major token value. This is the code + ** number for the token at this stack level */ + YYMINORTYPE minor; /* The user-supplied minor token value. This + ** is the value of the token */ +}; +typedef struct yyStackEntry yyStackEntry; + +/* The state of the parser is completely contained in an instance of +** the following structure */ +struct yyParser { + int yyidx; /* Index of top element in stack */ +#ifdef YYTRACKMAXSTACKDEPTH + int yyidxMax; /* Maximum value of yyidx */ +#endif + int yyerrcnt; /* Shifts left before out of the error */ + ParseARG_SDECL /* A place to hold %extra_argument */ +#if YYSTACKDEPTH<=0 + int yystksz; /* Current side of the stack */ + yyStackEntry *yystack; /* The parser's stack */ +#else + yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ +#endif +}; +typedef struct yyParser yyParser; + +#ifndef NDEBUG +#include <stdio.h> +static FILE *yyTraceFILE = 0; +static char *yyTracePrompt = 0; +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* +** Turn parser tracing on by giving a stream to which to write the trace +** and a prompt to preface each trace message. Tracing is turned off +** by making either argument NULL +** +** Inputs: +** <ul> +** <li> A FILE* to which trace output should be written. +** If NULL, then tracing is turned off. +** <li> A prefix string written at the beginning of every +** line of trace output. If NULL, then tracing is +** turned off. +** </ul> +** +** Outputs: +** None. +*/ +void ParseTrace(FILE *TraceFILE, char *zTracePrompt){ + yyTraceFILE = TraceFILE; + yyTracePrompt = zTracePrompt; + if( yyTraceFILE==0 ) yyTracePrompt = 0; + else if( yyTracePrompt==0 ) yyTraceFILE = 0; +} +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* For tracing shifts, the names of all terminals and nonterminals +** are required. The following table supplies these names */ +static const char *const yyTokenName[] = { +%% +}; +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* For tracing reduce actions, the names of all rules are required. +*/ +static const char *const yyRuleName[] = { +%% +}; +#endif /* NDEBUG */ + + +#if YYSTACKDEPTH<=0 +/* +** Try to increase the size of the parser stack. +*/ +static void yyGrowStack(yyParser *p){ + int newSize; + yyStackEntry *pNew; + + newSize = p->yystksz*2 + 100; + pNew = realloc(p->yystack, newSize*sizeof(pNew[0])); + if( pNew ){ + p->yystack = pNew; + p->yystksz = newSize; +#ifndef NDEBUG + if( yyTraceFILE ){ + fprintf(yyTraceFILE,"%sStack grows to %d entries!\n", + yyTracePrompt, p->yystksz); + } +#endif + } +} +#endif + +/* +** This function allocates a new parser. +** The only argument is a pointer to a function which works like +** malloc. +** +** Inputs: +** A pointer to the function used to allocate memory. +** +** Outputs: +** A pointer to a parser. This pointer is used in subsequent calls +** to Parse and ParseFree. +*/ +void *ParseAlloc(void *(*mallocProc)(size_t)){ + yyParser *pParser; + pParser = (yyParser*)(*mallocProc)( (size_t)sizeof(yyParser) ); + if( pParser ){ + pParser->yyidx = -1; +#ifdef YYTRACKMAXSTACKDEPTH + pParser->yyidxMax = 0; +#endif +#if YYSTACKDEPTH<=0 + pParser->yystack = NULL; + pParser->yystksz = 0; + yyGrowStack(pParser); +#endif + } + return pParser; +} + +/* The following function deletes the value associated with a +** symbol. The symbol can be either a terminal or nonterminal. +** "yymajor" is the symbol code, and "yypminor" is a pointer to +** the value. +*/ +static void yy_destructor( + yyParser *yypParser, /* The parser */ + YYCODETYPE yymajor, /* Type code for object to destroy */ + YYMINORTYPE *yypminor /* The object to be destroyed */ +){ + ParseARG_FETCH; + switch( yymajor ){ + /* Here is inserted the actions which take place when a + ** terminal or non-terminal is destroyed. This can happen + ** when the symbol is popped from the stack during a + ** reduce or during error processing or when a parser is + ** being destroyed before it is finished parsing. + ** + ** Note: during a reduce, the only symbols destroyed are those + ** which appear on the RHS of the rule, but which are not used + ** inside the C code. + */ +%% + default: break; /* If no destructor action specified: do nothing */ + } +} + +/* +** Pop the parser's stack once. +** +** If there is a destructor routine associated with the token which +** is popped from the stack, then call it. +** +** Return the major token number for the symbol popped. +*/ +static int yy_pop_parser_stack(yyParser *pParser){ + YYCODETYPE yymajor; + yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; + + if( pParser->yyidx<0 ) return 0; +#ifndef NDEBUG + if( yyTraceFILE && pParser->yyidx>=0 ){ + fprintf(yyTraceFILE,"%sPopping %s\n", + yyTracePrompt, + yyTokenName[yytos->major]); + } +#endif + yymajor = yytos->major; + yy_destructor(pParser, yymajor, &yytos->minor); + pParser->yyidx--; + return yymajor; +} + +/* +** Deallocate and destroy a parser. Destructors are all called for +** all stack elements before shutting the parser down. +** +** Inputs: +** <ul> +** <li> A pointer to the parser. This should be a pointer +** obtained from ParseAlloc. +** <li> A pointer to a function used to reclaim memory obtained +** from malloc. +** </ul> +*/ +void ParseFree( + void *p, /* The parser to be deleted */ + void (*freeProc)(void*) /* Function used to reclaim memory */ +){ + yyParser *pParser = (yyParser*)p; + if( pParser==0 ) return; + while( pParser->yyidx>=0 ) yy_pop_parser_stack(pParser); +#if YYSTACKDEPTH<=0 + free(pParser->yystack); +#endif + (*freeProc)((void*)pParser); +} + +/* +** Return the peak depth of the stack for a parser. +*/ +#ifdef YYTRACKMAXSTACKDEPTH +int ParseStackPeak(void *p){ + yyParser *pParser = (yyParser*)p; + return pParser->yyidxMax; +} +#endif + +/* +** Find the appropriate action for a parser given the terminal +** look-ahead token iLookAhead. +** +** If the look-ahead token is YYNOCODE, then check to see if the action is +** independent of the look-ahead. If it is, return the action, otherwise +** return YY_NO_ACTION. +*/ +static int yy_find_shift_action( + yyParser *pParser, /* The parser */ + YYCODETYPE iLookAhead /* The look-ahead token */ +){ + int i; + int stateno = pParser->yystack[pParser->yyidx].stateno; + + if( stateno>YY_SHIFT_MAX || (i = yy_shift_ofst[stateno])==YY_SHIFT_USE_DFLT ){ + return yy_default[stateno]; + } + assert( iLookAhead!=YYNOCODE ); + i += iLookAhead; + if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ + if( iLookAhead>0 ){ +#ifdef YYFALLBACK + YYCODETYPE iFallback; /* Fallback token */ + if( iLookAhead<sizeof(yyFallback)/sizeof(yyFallback[0]) + && (iFallback = yyFallback[iLookAhead])!=0 ){ +#ifndef NDEBUG + if( yyTraceFILE ){ + fprintf(yyTraceFILE, "%sFALLBACK %s => %s\n", + yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[iFallback]); + } +#endif + return yy_find_shift_action(pParser, iFallback); + } +#endif +#ifdef YYWILDCARD + { + int j = i - iLookAhead + YYWILDCARD; + if( j>=0 && j<YY_SZ_ACTTAB && yy_lookahead[j]==YYWILDCARD ){ +#ifndef NDEBUG + if( yyTraceFILE ){ + fprintf(yyTraceFILE, "%sWILDCARD %s => %s\n", + yyTracePrompt, yyTokenName[iLookAhead], yyTokenName[YYWILDCARD]); + } +#endif /* NDEBUG */ + return yy_action[j]; + } + } +#endif /* YYWILDCARD */ + } + return yy_default[stateno]; + }else{ + return yy_action[i]; + } +} + +/* +** Find the appropriate action for a parser given the non-terminal +** look-ahead token iLookAhead. +** +** If the look-ahead token is YYNOCODE, then check to see if the action is +** independent of the look-ahead. If it is, return the action, otherwise +** return YY_NO_ACTION. +*/ +static int yy_find_reduce_action( + int stateno, /* Current state number */ + YYCODETYPE iLookAhead /* The look-ahead token */ +){ + int i; +#ifdef YYERRORSYMBOL + if( stateno>YY_REDUCE_MAX ){ + return yy_default[stateno]; + } +#else + assert( stateno<=YY_REDUCE_MAX ); +#endif + i = yy_reduce_ofst[stateno]; + assert( i!=YY_REDUCE_USE_DFLT ); + assert( iLookAhead!=YYNOCODE ); + i += iLookAhead; +#ifdef YYERRORSYMBOL + if( i<0 || i>=YY_SZ_ACTTAB || yy_lookahead[i]!=iLookAhead ){ + return yy_default[stateno]; + } +#else + assert( i>=0 && i<YY_SZ_ACTTAB ); + assert( yy_lookahead[i]==iLookAhead ); +#endif + return yy_action[i]; +} + +/* +** The following routine is called if the stack overflows. +*/ +static void yyStackOverflow(yyParser *yypParser, YYMINORTYPE *yypMinor){ + ParseARG_FETCH; + yypParser->yyidx--; +#ifndef NDEBUG + if( yyTraceFILE ){ + fprintf(yyTraceFILE,"%sStack Overflow!\n",yyTracePrompt); + } +#endif + while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); + /* Here code is inserted which will execute if the parser + ** stack every overflows */ +%% + ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ +} + +/* +** Perform a shift action. +*/ +static void yy_shift( + yyParser *yypParser, /* The parser to be shifted */ + int yyNewState, /* The new state to shift in */ + int yyMajor, /* The major token to shift in */ + YYMINORTYPE *yypMinor /* Pointer to the minor token to shift in */ +){ + yyStackEntry *yytos; + yypParser->yyidx++; +#ifdef YYTRACKMAXSTACKDEPTH + if( yypParser->yyidx>yypParser->yyidxMax ){ + yypParser->yyidxMax = yypParser->yyidx; + } +#endif +#if YYSTACKDEPTH>0 + if( yypParser->yyidx>=YYSTACKDEPTH ){ + yyStackOverflow(yypParser, yypMinor); + return; + } +#else + if( yypParser->yyidx>=yypParser->yystksz ){ + yyGrowStack(yypParser); + if( yypParser->yyidx>=yypParser->yystksz ){ + yyStackOverflow(yypParser, yypMinor); + return; + } + } +#endif + yytos = &yypParser->yystack[yypParser->yyidx]; + yytos->stateno = (YYACTIONTYPE)yyNewState; + yytos->major = (YYCODETYPE)yyMajor; + yytos->minor = *yypMinor; +#ifndef NDEBUG + if( yyTraceFILE && yypParser->yyidx>0 ){ + int i; + fprintf(yyTraceFILE,"%sShift %d\n",yyTracePrompt,yyNewState); + fprintf(yyTraceFILE,"%sStack:",yyTracePrompt); + for(i=1; i<=yypParser->yyidx; i++) + fprintf(yyTraceFILE," %s",yyTokenName[yypParser->yystack[i].major]); + fprintf(yyTraceFILE,"\n"); + } +#endif +} + +/* The following table contains information about every rule that +** is used during the reduce. +*/ +static const struct { + YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ + unsigned char nrhs; /* Number of right-hand side symbols in the rule */ +} yyRuleInfo[] = { +%% +}; + +static void yy_accept(yyParser*); /* Forward Declaration */ + +/* +** Perform a reduce action and the shift that must immediately +** follow the reduce. +*/ +static void yy_reduce( + yyParser *yypParser, /* The parser */ + int yyruleno /* Number of the rule by which to reduce */ +){ + int yygoto; /* The next state */ + int yyact; /* The next action */ + YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ + yyStackEntry *yymsp; /* The top of the parser's stack */ + int yysize; /* Amount to pop the stack */ + ParseARG_FETCH; + yymsp = &yypParser->yystack[yypParser->yyidx]; +#ifndef NDEBUG + if( yyTraceFILE && yyruleno>=0 + && yyruleno<(int)(sizeof(yyRuleName)/sizeof(yyRuleName[0])) ){ + fprintf(yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt, + yyRuleName[yyruleno]); + } +#endif /* NDEBUG */ + + /* Silence complaints from purify about yygotominor being uninitialized + ** in some cases when it is copied into the stack after the following + ** switch. yygotominor is uninitialized when a rule reduces that does + ** not set the value of its left-hand side nonterminal. Leaving the + ** value of the nonterminal uninitialized is utterly harmless as long + ** as the value is never used. So really the only thing this code + ** accomplishes is to quieten purify. + ** + ** 2007-01-16: The wireshark project (www.wireshark.org) reports that + ** without this code, their parser segfaults. I'm not sure what there + ** parser is doing to make this happen. This is the second bug report + ** from wireshark this week. Clearly they are stressing Lemon in ways + ** that it has not been previously stressed... (SQLite ticket #2172) + */ + /*memset(&yygotominor, 0, sizeof(yygotominor));*/ + yygotominor = yyzerominor; + + + switch( yyruleno ){ + /* Beginning here are the reduction cases. A typical example + ** follows: + ** case 0: + ** #line <lineno> <grammarfile> + ** { ... } // User supplied code + ** #line <lineno> <thisfile> + ** break; + */ +%% + }; + yygoto = yyRuleInfo[yyruleno].lhs; + yysize = yyRuleInfo[yyruleno].nrhs; + yypParser->yyidx -= yysize; + yyact = yy_find_reduce_action(yymsp[-yysize].stateno,(YYCODETYPE)yygoto); + if( yyact < YYNSTATE ){ +#ifdef NDEBUG + /* If we are not debugging and the reduce action popped at least + ** one element off the stack, then we can push the new element back + ** onto the stack here, and skip the stack overflow test in yy_shift(). + ** That gives a significant speed improvement. */ + if( yysize ){ + yypParser->yyidx++; + yymsp -= yysize-1; + yymsp->stateno = (YYACTIONTYPE)yyact; + yymsp->major = (YYCODETYPE)yygoto; + yymsp->minor = yygotominor; + }else +#endif + { + yy_shift(yypParser,yyact,yygoto,&yygotominor); + } + }else{ + assert( yyact == YYNSTATE + YYNRULE + 1 ); + yy_accept(yypParser); + } +} + +/* +** The following code executes when the parse fails +*/ +#ifndef YYNOERRORRECOVERY +static void yy_parse_failed( + yyParser *yypParser /* The parser */ +){ + ParseARG_FETCH; +#ifndef NDEBUG + if( yyTraceFILE ){ + fprintf(yyTraceFILE,"%sFail!\n",yyTracePrompt); + } +#endif + while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); + /* Here code is inserted which will be executed whenever the + ** parser fails */ +%% + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} +#endif /* YYNOERRORRECOVERY */ + +/* +** The following code executes when a syntax error first occurs. +*/ +static void yy_syntax_error( + yyParser *yypParser, /* The parser */ + int yymajor, /* The major type of the error token */ + YYMINORTYPE yyminor /* The minor type of the error token */ +){ + ParseARG_FETCH; +#define TOKEN (yyminor.yy0) +%% + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} + +/* +** The following is executed when the parser accepts +*/ +static void yy_accept( + yyParser *yypParser /* The parser */ +){ + ParseARG_FETCH; +#ifndef NDEBUG + if( yyTraceFILE ){ + fprintf(yyTraceFILE,"%sAccept!\n",yyTracePrompt); + } +#endif + while( yypParser->yyidx>=0 ) yy_pop_parser_stack(yypParser); + /* Here code is inserted which will be executed whenever the + ** parser accepts */ +%% + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} + +/* The main parser program. +** The first argument is a pointer to a structure obtained from +** "ParseAlloc" which describes the current state of the parser. +** The second argument is the major token number. The third is +** the minor token. The fourth optional argument is whatever the +** user wants (and specified in the grammar) and is available for +** use by the action routines. +** +** Inputs: +** <ul> +** <li> A pointer to the parser (an opaque structure.) +** <li> The major token number. +** <li> The minor token number. +** <li> An option argument of a grammar-specified type. +** </ul> +** +** Outputs: +** None. +*/ +void Parse( + void *yyp, /* The parser */ + int yymajor, /* The major token code number */ + ParseTOKENTYPE yyminor /* The value for the token */ + ParseARG_PDECL /* Optional %extra_argument parameter */ +){ + YYMINORTYPE yyminorunion; + int yyact; /* The parser action. */ + int yyendofinput; /* True if we are at the end of input */ +#ifdef YYERRORSYMBOL + int yyerrorhit = 0; /* True if yymajor has invoked an error */ +#endif + yyParser *yypParser; /* The parser */ + + /* (re)initialize the parser, if necessary */ + yypParser = (yyParser*)yyp; + if( yypParser->yyidx<0 ){ +#if YYSTACKDEPTH<=0 + if( yypParser->yystksz <=0 ){ + /*memset(&yyminorunion, 0, sizeof(yyminorunion));*/ + yyminorunion = yyzerominor; + yyStackOverflow(yypParser, &yyminorunion); + return; + } +#endif + yypParser->yyidx = 0; + yypParser->yyerrcnt = -1; + yypParser->yystack[0].stateno = 0; + yypParser->yystack[0].major = 0; + } + yyminorunion.yy0 = yyminor; + yyendofinput = (yymajor==0); + ParseARG_STORE; + +#ifndef NDEBUG + if( yyTraceFILE ){ + fprintf(yyTraceFILE,"%sInput %s\n",yyTracePrompt,yyTokenName[yymajor]); + } +#endif + + do{ + yyact = yy_find_shift_action(yypParser,(YYCODETYPE)yymajor); + if( yyact<YYNSTATE ){ + assert( !yyendofinput ); /* Impossible to shift the $ token */ + yy_shift(yypParser,yyact,yymajor,&yyminorunion); + yypParser->yyerrcnt--; + yymajor = YYNOCODE; + }else if( yyact < YYNSTATE + YYNRULE ){ + yy_reduce(yypParser,yyact-YYNSTATE); + }else{ + assert( yyact == YY_ERROR_ACTION ); +#ifdef YYERRORSYMBOL + int yymx; +#endif +#ifndef NDEBUG + if( yyTraceFILE ){ + fprintf(yyTraceFILE,"%sSyntax Error!\n",yyTracePrompt); + } +#endif +#ifdef YYERRORSYMBOL + /* A syntax error has occurred. + ** The response to an error depends upon whether or not the + ** grammar defines an error token "ERROR". + ** + ** This is what we do if the grammar does define ERROR: + ** + ** * Call the %syntax_error function. + ** + ** * Begin popping the stack until we enter a state where + ** it is legal to shift the error symbol, then shift + ** the error symbol. + ** + ** * Set the error count to three. + ** + ** * Begin accepting and shifting new tokens. No new error + ** processing will occur until three tokens have been + ** shifted successfully. + ** + */ + if( yypParser->yyerrcnt<0 ){ + yy_syntax_error(yypParser,yymajor,yyminorunion); + } + yymx = yypParser->yystack[yypParser->yyidx].major; + if( yymx==YYERRORSYMBOL || yyerrorhit ){ +#ifndef NDEBUG + if( yyTraceFILE ){ + fprintf(yyTraceFILE,"%sDiscard input token %s\n", + yyTracePrompt,yyTokenName[yymajor]); + } +#endif + yy_destructor(yypParser, (YYCODETYPE)yymajor,&yyminorunion); + yymajor = YYNOCODE; + }else{ + while( + yypParser->yyidx >= 0 && + yymx != YYERRORSYMBOL && + (yyact = yy_find_reduce_action( + yypParser->yystack[yypParser->yyidx].stateno, + YYERRORSYMBOL)) >= YYNSTATE + ){ + yy_pop_parser_stack(yypParser); + } + if( yypParser->yyidx < 0 || yymajor==0 ){ + yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); + yy_parse_failed(yypParser); + yymajor = YYNOCODE; + }else if( yymx!=YYERRORSYMBOL ){ + YYMINORTYPE u2; + u2.YYERRSYMDT = 0; + yy_shift(yypParser,yyact,YYERRORSYMBOL,&u2); + } + } + yypParser->yyerrcnt = 3; + yyerrorhit = 1; +#elif defined(YYNOERRORRECOVERY) + /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to + ** do any kind of error recovery. Instead, simply invoke the syntax + ** error routine and continue going as if nothing had happened. + ** + ** Applications can set this macro (for example inside %include) if + ** they intend to abandon the parse upon the first syntax error seen. + */ + yy_syntax_error(yypParser,yymajor,yyminorunion); + yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); + yymajor = YYNOCODE; + +#else /* YYERRORSYMBOL is not defined */ + /* This is what we do if the grammar does not define ERROR: + ** + ** * Report an error message, and throw away the input token. + ** + ** * If the input token is $, then fail the parse. + ** + ** As before, subsequent error messages are suppressed until + ** three input tokens have been successfully shifted. + */ + if( yypParser->yyerrcnt<=0 ){ + yy_syntax_error(yypParser,yymajor,yyminorunion); + } + yypParser->yyerrcnt = 3; + yy_destructor(yypParser,(YYCODETYPE)yymajor,&yyminorunion); + if( yyendofinput ){ + yy_parse_failed(yypParser); + } + yymajor = YYNOCODE; +#endif + } + }while( yymajor!=YYNOCODE && yypParser->yyidx>=0 ); + return; +} diff --git a/src/spatialite/src/gaiageo/lemon/vanuatuWkt.y b/src/spatialite/src/gaiageo/lemon/vanuatuWkt.y new file mode 100644 index 0000000..e7a5916 --- /dev/null +++ b/src/spatialite/src/gaiageo/lemon/vanuatuWkt.y @@ -0,0 +1,901 @@ +/* + vanuatuWkt.y -- Vanuatu WKT parser - LEMON config + + version 2.4, 2010 April 2 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): +The Vanuatu Team - University of Toronto + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +/****************************************************************************** +** The following code was created by Team Vanuatu of The University of Toronto. + +Authors: +Ruppi Rana ruppi.rana@gmail.com +Dev Tanna dev.tanna@gmail.com +Elias Adum elias.adum@gmail.com +Benton Hui benton.hui@gmail.com +Abhayan Sundararajan abhayan@gmail.com +Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com +Nikola Banovic nikola.banovic@gmail.com +Yong Jian yong.jian@utoronto.ca + +Supervisor: +Greg Wilson gvwilson@cs.toronto.ca + +------------------------------------------------------------------------------- +*/ + +// Tokens are void pointers (so we can cast them to whatever we want) +%token_type {void *} + +// Output to stderr when stack overflows +%stack_overflow { + spatialite_e( "Giving up. Parser stack overflow\n"); +} + +// Increase this number if necessary +%stack_size 1000000 + +// Header files to be included in vanuatuWkt.c +%include { +} + +// Set the return value of gaiaParseWkt in the following pointer: +%extra_argument { struct vanuatu_data *p_data } + +// Invalid syntax (ie. no rules matched) +%syntax_error { +/* +** Sandro Furieri 2010 Apr 4 +** when the LEMON parser encounters an error +** then this global variable is set +*/ + p_data->vanuatu_parse_error = 1; + p_data->result = NULL; +} + + /* This is to terminate with a new line */ + main ::= in. + in ::= . + in ::= in state VANUATU_NEWLINE. + + state ::= program. + + /* + * program is the start node. All strings matched by this CFG must be one of + * geo_text (text describing a 2D geometry), + * geo_textz (text describing a 3D geometry), + * geo_textm (text describing a 2D geometry with a measure) + * geo_textzm (text describing a 3D geometry with a measure) + */ + +program ::= geo_text. +program ::= geo_textz. +program ::= geo_textm. +program ::= geo_textzm. + +// 2D geometries (no measure): +geo_text ::= point(P). { p_data->result = P; } // P is a geometry collection containing a point +geo_text ::= linestring(L). { p_data->result = L; } // L is a geometry collection containing a linestring +geo_text ::= polygon(P). { p_data->result = P; } // P is a geometry collection containing a polygon +geo_text ::= multipoint(M). { p_data->result = M; } // M is a geometry collection containing a multipoint +geo_text ::= multilinestring(M). { p_data->result = M; } // M is a geometry collection containing a multilinestring +geo_text ::= multipolygon(M). { p_data->result = M; } // M is a geometry collection containing a multipolygon +geo_text ::= geocoll(H). { p_data->result = H; } // H is a geometry collection created from user input + +// 3D geometries (no measure): +geo_textz ::= pointz(P). { p_data->result = P; } +geo_textz ::= linestringz(L). { p_data->result = L; } +geo_textz ::= polygonz(P). { p_data->result = P; } +geo_textz ::= multipointz(M). { p_data->result = M; } +geo_textz ::= multilinestringz(M). { p_data->result = M; } +geo_textz ::= multipolygonz(M). { p_data->result = M; } +geo_textz ::= geocollz(H). { p_data->result = H; } + +// 2D geometries (with a measure): +geo_textm ::= pointm(P). { p_data->result = P; } +geo_textm ::= linestringm(L). { p_data->result = L; } +geo_textm ::= polygonm(P). { p_data->result = P; } +geo_textm ::= multipointm(M). { p_data->result = M; } +geo_textm ::= multilinestringm(M). { p_data->result = M; } +geo_textm ::= multipolygonm(M). { p_data->result = M; } +geo_textm ::= geocollm(H). { p_data->result = H; } + +// 3D geometries (with a measure): +geo_textzm ::= pointzm(P). { p_data->result = P; } +geo_textzm ::= linestringzm(L). { p_data->result = L; } +geo_textzm ::= polygonzm(P). { p_data->result = P; } +geo_textzm ::= multipointzm(M). { p_data->result = M; } +geo_textzm ::= multilinestringzm(M). { p_data->result = M; } +geo_textzm ::= multipolygonzm(M). { p_data->result = M; } +geo_textzm ::= geocollzm(H). { p_data->result = H; } + + +// Syntax for a "point" object: +// The functions called build a geometry collection from a gaiaPointPtr +point(P) ::= VANUATU_POINT VANUATU_OPEN_BRACKET point_coordxy(Q) VANUATU_CLOSE_BRACKET. + { P = vanuatu_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } +pointm(P) ::= VANUATU_POINT_M VANUATU_OPEN_BRACKET point_coordxym(Q) VANUATU_CLOSE_BRACKET. + { P = vanuatu_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } +pointz(P) ::= VANUATU_POINT_Z VANUATU_OPEN_BRACKET point_coordxyz(Q) VANUATU_CLOSE_BRACKET. + { P = vanuatu_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } +pointzm(P) ::= VANUATU_POINT_ZM VANUATU_OPEN_BRACKET point_coordxyzm(Q) VANUATU_CLOSE_BRACKET. + { P = vanuatu_buildGeomFromPoint( p_data, (gaiaPointPtr)Q); } + +// Point coordinates in different dimensions: MultiPoint((pt),(pt)) +// Create the point by calling the proper function in SpatiaLite : +point_brkt_coordxy(P) ::= VANUATU_OPEN_BRACKET coord(X) coord(Y) VANUATU_CLOSE_BRACKET. + { P = (void *) vanuatu_point_xy( p_data, (double *)X, (double *)Y); } +point_brkt_coordxym(P) ::= VANUATU_OPEN_BRACKET coord(X) coord(Y) coord(M) VANUATU_CLOSE_BRACKET. + { P = (void *) vanuatu_point_xym( p_data, (double *)X, (double *)Y, (double *)M); } +point_brkt_coordxyz(P) ::= VANUATU_OPEN_BRACKET coord(X) coord(Y) coord(Z) VANUATU_CLOSE_BRACKET. + { P = (void *) vanuatu_point_xyz( p_data, (double *)X, (double *)Y, (double *)Z); } +point_brkt_coordxyzm(P) ::= VANUATU_OPEN_BRACKET coord(X) coord(Y) coord(Z) coord(M) VANUATU_CLOSE_BRACKET. + { P = (void *) vanuatu_point_xyzm( p_data, (double *)X, (double *)Y, (double *)Z, (double *)M); } + +// Point coordinates in different dimensions. +// Create the point by calling the proper function in SpatiaLite : +point_coordxy(P) ::= coord(X) coord(Y). + { P = (void *) vanuatu_point_xy( p_data, (double *)X, (double *)Y); } +point_coordxym(P) ::= coord(X) coord(Y) coord(M). + { P = (void *) vanuatu_point_xym( p_data, (double *)X, (double *)Y, (double *)M); } +point_coordxyz(P) ::= coord(X) coord(Y) coord(Z). + { P = (void *) vanuatu_point_xyz( p_data, (double *)X, (double *)Y, (double *)Z); } +point_coordxyzm(P) ::= coord(X) coord(Y) coord(Z) coord(M). + { P = (void *) vanuatu_point_xyzm( p_data, (double *)X, (double *)Y, (double *)Z, (double *)M); } + +// All coordinates are assumed to be doubles (guaranteed by the flex tokenizer). +coord(A) ::= VANUATU_NUM(B). { A = B; } + + +// Rules to match an infinite number of points: MultiPoint((pt), (pt)) +// Also links the generated gaiaPointPtrs together +extra_brkt_pointsxy(A) ::= . { A = NULL; } +extra_brkt_pointsxy(A) ::= VANUATU_COMMA point_brkt_coordxy(P) extra_brkt_pointsxy(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + +extra_brkt_pointsxym(A) ::= . { A = NULL; } +extra_brkt_pointsxym(A) ::= VANUATU_COMMA point_brkt_coordxym(P) extra_brkt_pointsxym(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + +extra_brkt_pointsxyz(A) ::= . { A = NULL; } +extra_brkt_pointsxyz(A) ::= VANUATU_COMMA point_brkt_coordxyz(P) extra_brkt_pointsxyz(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + +extra_brkt_pointsxyzm(A) ::= . { A = NULL; } +extra_brkt_pointsxyzm(A) ::= VANUATU_COMMA point_brkt_coordxyzm(P) extra_brkt_pointsxyzm(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + + +// Rules to match an infinite number of points: +// Also links the generated gaiaPointPtrs together +extra_pointsxy(A) ::= . { A = NULL; } +extra_pointsxy(A) ::= VANUATU_COMMA point_coordxy(P) extra_pointsxy(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + +extra_pointsxym(A) ::= . { A = NULL; } +extra_pointsxym(A) ::= VANUATU_COMMA point_coordxym(P) extra_pointsxym(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + +extra_pointsxyz(A) ::= . { A = NULL; } +extra_pointsxyz(A) ::= VANUATU_COMMA point_coordxyz(P) extra_pointsxyz(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + +extra_pointsxyzm(A) ::= . { A = NULL; } +extra_pointsxyzm(A) ::= VANUATU_COMMA point_coordxyzm(P) extra_pointsxyzm(B). + { ((gaiaPointPtr)P)->Next = (gaiaPointPtr)B; A = P; } + + +// Syntax for a "linestring" object: +// The functions called build a geometry collection from a gaiaLinestringPtr +linestring(L) ::= VANUATU_LINESTRING linestring_text(X). + { L = vanuatu_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } +linestringm(L) ::= VANUATU_LINESTRING_M linestring_textm(X). + { L = vanuatu_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } +linestringz(L) ::= VANUATU_LINESTRING_Z linestring_textz(X). + { L = vanuatu_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } +linestringzm(L) ::= VANUATU_LINESTRING_ZM linestring_textzm(X). + { L = vanuatu_buildGeomFromLinestring( p_data, (gaiaLinestringPtr)X); } + +// A valid linestring must have at least two vertices: +// The functions called build a gaiaLinestring from a linked list of points +linestring_text(L) ::= VANUATU_OPEN_BRACKET point_coordxy(P) VANUATU_COMMA point_coordxy(Q) extra_pointsxy(R) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + L = (void *) vanuatu_linestring_xy( p_data, (gaiaPointPtr)P); + } + +linestring_textm(L) ::= VANUATU_OPEN_BRACKET point_coordxym(P) VANUATU_COMMA point_coordxym(Q) extra_pointsxym(R) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + L = (void *) vanuatu_linestring_xym( p_data, (gaiaPointPtr)P); + } + +linestring_textz(L) ::= VANUATU_OPEN_BRACKET point_coordxyz(P) VANUATU_COMMA point_coordxyz(Q) extra_pointsxyz(R) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + L = (void *) vanuatu_linestring_xyz( p_data, (gaiaPointPtr)P); + } + +linestring_textzm(L) ::= VANUATU_OPEN_BRACKET point_coordxyzm(P) VANUATU_COMMA point_coordxyzm(Q) extra_pointsxyzm(R) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)Q)->Next = (gaiaPointPtr)R; + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + L = (void *) vanuatu_linestring_xyzm( p_data, (gaiaPointPtr)P); + } + + +// Syntax for a "polygon" object: +// The functions called build a geometry collection from a gaiaPolygonPtr +polygon(P) ::= VANUATU_POLYGON polygon_text(X). + { P = vanuatu_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } +polygonm(P) ::= VANUATU_POLYGON_M polygon_textm(X). + { P = vanuatu_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } +polygonz(P) ::= VANUATU_POLYGON_Z polygon_textz(X). + { P = vanuatu_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } +polygonzm(P) ::= VANUATU_POLYGON_ZM polygon_textzm(X). + { P = vanuatu_buildGeomFromPolygon( p_data, (gaiaPolygonPtr)X); } + +// A valid polygon must have at least one ring: +// The functions called build a gaiaPolygonPtr from a linked list of gaiaRingPtrs +polygon_text(P) ::= VANUATU_OPEN_BRACKET ring(R) extra_rings(E) VANUATU_CLOSE_BRACKET. + { + ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; + P = (void *) vanuatu_polygon_xy( p_data, (gaiaRingPtr)R); + } + +polygon_textm(P) ::= VANUATU_OPEN_BRACKET ringm(R) extra_ringsm(E) VANUATU_CLOSE_BRACKET. + { + ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; + P = (void *) vanuatu_polygon_xym( p_data, (gaiaRingPtr)R); + } + +polygon_textz(P) ::= VANUATU_OPEN_BRACKET ringz(R) extra_ringsz(E) VANUATU_CLOSE_BRACKET. + { + ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; + P = (void *) vanuatu_polygon_xyz( p_data, (gaiaRingPtr)R); + } + +polygon_textzm(P) ::= VANUATU_OPEN_BRACKET ringzm(R) extra_ringszm(E) VANUATU_CLOSE_BRACKET. + { + ((gaiaRingPtr)R)->Next = (gaiaRingPtr)E; + P = (void *) vanuatu_polygon_xyzm( p_data, (gaiaRingPtr)R); + } + +// A valid ring must have at least 4 points +// The functions called build a gaiaRingPtr from a linked list of gaiaPointPtrs +ring(R) ::= VANUATU_OPEN_BRACKET point_coordxy(A) VANUATU_COMMA point_coordxy(B) VANUATU_COMMA point_coordxy(C) VANUATU_COMMA point_coordxy(D) extra_pointsxy(E) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; + ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; + ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; + ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; + R = (void *) vanuatu_ring_xy( p_data, (gaiaPointPtr)A); + } + +// To match more than one 2D ring: +extra_rings(R) ::= . { R = NULL; } +extra_rings(R) ::= VANUATU_COMMA ring(S) extra_rings(T). + { + ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; + R = S; + } + +ringm(R) ::= VANUATU_OPEN_BRACKET point_coordxym(A) VANUATU_COMMA point_coordxym(B) VANUATU_COMMA point_coordxym(C) VANUATU_COMMA point_coordxym(D) extra_pointsxym(E) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; + ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; + ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; + ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; + R = (void *) vanuatu_ring_xym( p_data, (gaiaPointPtr)A); + } + +// To match more than one 2D (with a measure) ring: +extra_ringsm(R) ::= . { R = NULL; } +extra_ringsm(R) ::= VANUATU_COMMA ringm(S) extra_ringsm(T). + { + ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; + R = S; + } + +ringz(R) ::= VANUATU_OPEN_BRACKET point_coordxyz(A) VANUATU_COMMA point_coordxyz(B) VANUATU_COMMA point_coordxyz(C) VANUATU_COMMA point_coordxyz(D) extra_pointsxyz(E) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; + ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; + ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; + ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; + R = (void *) vanuatu_ring_xyz( p_data, (gaiaPointPtr)A); + } + +// To match more than one 3D ring: +extra_ringsz(R) ::= . { R = NULL; } +extra_ringsz(R) ::= VANUATU_COMMA ringz(S) extra_ringsz(T). + { + ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; + R = S; + } + +ringzm(R) ::= VANUATU_OPEN_BRACKET point_coordxyzm(A) VANUATU_COMMA point_coordxyzm(B) VANUATU_COMMA point_coordxyzm(C) VANUATU_COMMA point_coordxyzm(D) extra_pointsxyzm(E) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)A)->Next = (gaiaPointPtr)B; + ((gaiaPointPtr)B)->Next = (gaiaPointPtr)C; + ((gaiaPointPtr)C)->Next = (gaiaPointPtr)D; + ((gaiaPointPtr)D)->Next = (gaiaPointPtr)E; + R = (void *) vanuatu_ring_xyzm( p_data, (gaiaPointPtr)A); + } + +// To match more than one 3D (with a measure) ring: +extra_ringszm(R) ::= . { R = NULL; } +extra_ringszm(R) ::= VANUATU_COMMA ringzm(S) extra_ringszm(T). + { + ((gaiaRingPtr)S)->Next = (gaiaRingPtr)T; + R = S; + } + +// Syntax for a "multipoint" object: +// X in the following lines is a geometry collection containing a multipoint +multipoint(M) ::= VANUATU_MULTIPOINT multipoint_text(X). { M = X; } +multipointm(M) ::= VANUATU_MULTIPOINT_M multipoint_textm(X). { M = X; } +multipointz(M) ::= VANUATU_MULTIPOINT_Z multipoint_textz(X). { M = X; } +multipointzm(M) ::= VANUATU_MULTIPOINT_ZM multipoint_textzm(X). { M = X; } + +// Multipoints can contain any number of points (but at least one): +// The functions called build a geometry collection containing a multipoint +multipoint_text(M) ::= VANUATU_OPEN_BRACKET point_coordxy(P) extra_pointsxy(Q) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) vanuatu_multipoint_xy( p_data, (gaiaPointPtr)P); + } +multipoint_textm(M) ::= VANUATU_OPEN_BRACKET point_coordxym(P) extra_pointsxym(Q) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) vanuatu_multipoint_xym( p_data, (gaiaPointPtr)P); + } +multipoint_textz(M) ::= VANUATU_OPEN_BRACKET point_coordxyz(P) extra_pointsxyz(Q) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) vanuatu_multipoint_xyz( p_data, (gaiaPointPtr)P); + } +multipoint_textzm(M) ::= VANUATU_OPEN_BRACKET point_coordxyzm(P) extra_pointsxyzm(Q) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) vanuatu_multipoint_xyzm( p_data, (gaiaPointPtr)P); + } +multipoint_text(M) ::= VANUATU_OPEN_BRACKET point_brkt_coordxy(P) extra_brkt_pointsxy(Q) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) vanuatu_multipoint_xy( p_data, (gaiaPointPtr)P); + } +multipoint_textm(M) ::= VANUATU_OPEN_BRACKET point_brkt_coordxym(P) extra_brkt_pointsxym(Q) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) vanuatu_multipoint_xym( p_data, (gaiaPointPtr)P); + } +multipoint_textz(M) ::= VANUATU_OPEN_BRACKET point_brkt_coordxyz(P) extra_brkt_pointsxyz(Q) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) vanuatu_multipoint_xyz( p_data, (gaiaPointPtr)P); + } +multipoint_textzm(M) ::= VANUATU_OPEN_BRACKET point_brkt_coordxyzm(P) extra_brkt_pointsxyzm(Q) VANUATU_CLOSE_BRACKET. + { + ((gaiaPointPtr)P)->Next = (gaiaPointPtr)Q; + M = (void *) vanuatu_multipoint_xyzm( p_data, (gaiaPointPtr)P); + } + + +// Syntax for a "multilinestring" object: +// X in the following lines refers to a geometry collection containing a multilinestring +multilinestring(M) ::= VANUATU_MULTILINESTRING multilinestring_text(X). { M = X; } +multilinestringm(M) ::= VANUATU_MULTILINESTRING_M multilinestring_textm(X). { M = X; } +multilinestringz(M) ::= VANUATU_MULTILINESTRING_Z multilinestring_textz(X). { M = X; } +multilinestringzm(M) ::= VANUATU_MULTILINESTRING_ZM multilinestring_textzm(X). { M = X; } + +// Multilinestrings can contain any number of linestrings (but at least one): +// The functions called build a geometry collection containing a multilinestring +multilinestring_text(M) ::= VANUATU_OPEN_BRACKET linestring_text(L) multilinestring_text2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; + M = (void *) vanuatu_multilinestring_xy( p_data, (gaiaLinestringPtr)L); + } + +// Extra linestrings +multilinestring_text2(X) ::= . { X = NULL; } +multilinestring_text2(X) ::= VANUATU_COMMA linestring_text(L) multilinestring_text2(Y). + { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } + +multilinestring_textm(M) ::= VANUATU_OPEN_BRACKET linestring_textm(L) multilinestring_textm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; + M = (void *) vanuatu_multilinestring_xym( p_data, (gaiaLinestringPtr)L); + } + +multilinestring_textm2(X) ::= . { X = NULL; } +multilinestring_textm2(X) ::= VANUATU_COMMA linestring_textm(L) multilinestring_textm2(Y). + { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } + +multilinestring_textz(M) ::= VANUATU_OPEN_BRACKET linestring_textz(L) multilinestring_textz2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; + M = (void *) vanuatu_multilinestring_xyz( p_data, (gaiaLinestringPtr)L); + } + +multilinestring_textz2(X) ::= . { X = NULL; } +multilinestring_textz2(X) ::= VANUATU_COMMA linestring_textz(L) multilinestring_textz2(Y). + { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } + +multilinestring_textzm(M) ::= VANUATU_OPEN_BRACKET linestring_textzm(L) multilinestring_textzm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)X; + M = (void *) vanuatu_multilinestring_xyzm( p_data, (gaiaLinestringPtr)L); + } + +multilinestring_textzm2(X) ::= . { X = NULL; } +multilinestring_textzm2(X) ::= VANUATU_COMMA linestring_textzm(L) multilinestring_textzm2(Y). + { ((gaiaLinestringPtr)L)->Next = (gaiaLinestringPtr)Y; X = L; } + + +// Syntax for a "multipolygon" object +// X in the following lines refers to a geometry collection containing a multipolygon +multipolygon(M) ::= VANUATU_MULTIPOLYGON multipolygon_text(X). { M = X; } +multipolygonm(M) ::= VANUATU_MULTIPOLYGON_M multipolygon_textm(X). { M = X; } +multipolygonz(M) ::= VANUATU_MULTIPOLYGON_Z multipolygon_textz(X). { M = X; } +multipolygonzm(M) ::= VANUATU_MULTIPOLYGON_ZM multipolygon_textzm(X). { M = X; } + +// Multipolygons can contain any number of polygons (but at least one): +// The functions called build a geometry collection containing a multipolygon +multipolygon_text(M) ::= VANUATU_OPEN_BRACKET polygon_text(P) multipolygon_text2(Q) VANUATU_CLOSE_BRACKET. + { + ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; + M = (void *) vanuatu_multipolygon_xy( p_data, (gaiaPolygonPtr)P); + } + +// Extra polygons +multipolygon_text2(Q) ::= . { Q = NULL; } +multipolygon_text2(A) ::= VANUATU_COMMA polygon_text(P) multipolygon_text2(B). + { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } + +multipolygon_textm(M) ::= VANUATU_OPEN_BRACKET polygon_textm(P) multipolygon_textm2(Q) VANUATU_CLOSE_BRACKET. + { + ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; + M = (void *) vanuatu_multipolygon_xym( p_data, (gaiaPolygonPtr)P); + } + +multipolygon_textm2(Q) ::= . { Q = NULL; } +multipolygon_textm2(A) ::= VANUATU_COMMA polygon_textm(P) multipolygon_textm2(B). + { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } + +multipolygon_textz(M) ::= VANUATU_OPEN_BRACKET polygon_textz(P) multipolygon_textz2(Q) VANUATU_CLOSE_BRACKET. + { + ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; + M = (void *) vanuatu_multipolygon_xyz( p_data, (gaiaPolygonPtr)P); + } + +multipolygon_textz2(Q) ::= . { Q = NULL; } +multipolygon_textz2(A) ::= VANUATU_COMMA polygon_textz(P) multipolygon_textz2(B). + { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } + +multipolygon_textzm(M) ::= VANUATU_OPEN_BRACKET polygon_textzm(P) multipolygon_textzm2(Q) VANUATU_CLOSE_BRACKET. + { + ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)Q; + M = (void *) vanuatu_multipolygon_xyzm( p_data, (gaiaPolygonPtr)P); + } + +multipolygon_textzm2(Q) ::= . { Q = NULL; } +multipolygon_textzm2(A) ::= VANUATU_COMMA polygon_textzm(P) multipolygon_textzm2(B). + { ((gaiaPolygonPtr)P)->Next = (gaiaPolygonPtr)B; A = P; } + + +// Syntax for a "geometrycollection" object: +// X in the following lines refers to a geometry collection generated based on user input +geocoll(G) ::= VANUATU_GEOMETRYCOLLECTION geocoll_text(X). { G = X; } +geocollm(G) ::= VANUATU_GEOMETRYCOLLECTION_M geocoll_textm(X). { G = X; } +geocollz(G) ::= VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz(X). { G = X; } +geocollzm(G) ::= VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm(X). { G = X; } + +// Geometry collections can contain any number of points, linestrings, or polygons (but at least one): +geocoll_text(G) ::= VANUATU_OPEN_BRACKET point(P) geocoll_text2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_text(G) ::= VANUATU_OPEN_BRACKET linestring(L) geocoll_text2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_text(G) ::= VANUATU_OPEN_BRACKET polygon(P) geocoll_text2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_text(G) ::= VANUATU_OPEN_BRACKET multipoint(P) geocoll_text2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_text(G) ::= VANUATU_OPEN_BRACKET multilinestring(L) geocoll_text2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_text(G) ::= VANUATU_OPEN_BRACKET multipolygon(P) geocoll_text2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_text(G) ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION geocoll_text(C) geocoll_text2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xy( p_data, (gaiaGeomCollPtr)C); + } + +// Extra points, linestrings, or polygons +geocoll_text2(X) ::= . { X = NULL; } +geocoll_text2(X) ::= VANUATU_COMMA point(P) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_text2(X) ::= VANUATU_COMMA linestring(L) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_text2(X) ::= VANUATU_COMMA polygon(P) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_text2(X) ::= VANUATU_COMMA multipoint(P) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_text2(X) ::= VANUATU_COMMA multilinestring(L) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_text2(X) ::= VANUATU_COMMA multipolygon(P) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_text2(X) ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION geocoll_text(C) geocoll_text2(Y). + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; + X = C; + } + + +geocoll_textm(G) ::= VANUATU_OPEN_BRACKET pointm(P) geocoll_textm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textm(G) ::= VANUATU_OPEN_BRACKET linestringm(L) geocoll_textm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_textm(G) ::= VANUATU_OPEN_BRACKET polygonm(P) geocoll_textm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)P); + } +geocoll_textm(G) ::= VANUATU_OPEN_BRACKET multipointm(P) geocoll_textm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textm(G) ::= VANUATU_OPEN_BRACKET multilinestringm(L) geocoll_textm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_textm(G) ::= VANUATU_OPEN_BRACKET multipolygonm(P) geocoll_textm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textm(G) ::= +VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_M geocoll_textm(C) geocoll_textm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xym( p_data, (gaiaGeomCollPtr)C); + } + +geocoll_textm2(X) ::= . { X = NULL; } +geocoll_textm2(X) ::= VANUATU_COMMA pointm(P) geocoll_textm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textm2(X) ::= VANUATU_COMMA linestringm(L) geocoll_textm2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_textm2(X) ::= VANUATU_COMMA polygonm(P) geocoll_textm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textm2(X) ::= VANUATU_COMMA multipointm(P) geocoll_textm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textm2(X) ::= VANUATU_COMMA multilinestringm(L) geocoll_textm2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_textm2(X) ::= VANUATU_COMMA multipolygonm(P) geocoll_textm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textm2(X) ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_M geocoll_textm(C) geocoll_textm2(Y). + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; + X = C; + } + + +geocoll_textz(G) ::= VANUATU_OPEN_BRACKET pointz(P) geocoll_textz2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textz(G) ::= VANUATU_OPEN_BRACKET linestringz(L) geocoll_textz2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_textz(G) ::= VANUATU_OPEN_BRACKET polygonz(P) geocoll_textz2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textz(G) ::= VANUATU_OPEN_BRACKET multipointz(P) geocoll_textz2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textz(G) ::= VANUATU_OPEN_BRACKET multilinestringz(L) geocoll_textz2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_textz(G) ::= VANUATU_OPEN_BRACKET multipolygonz(P) geocoll_textz2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textz(G) ::= +VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz(C) geocoll_textz2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xyz( p_data, (gaiaGeomCollPtr)C); + } + +geocoll_textz2(X) ::= . { X = NULL; } +geocoll_textz2(X) ::= VANUATU_COMMA pointz(P) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textz2(X) ::= VANUATU_COMMA linestringz(L) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_textz2(X) ::= VANUATU_COMMA polygonz(P) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textz2(X) ::= VANUATU_COMMA multipointz(P) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textz2(X) ::= VANUATU_COMMA multilinestringz(L) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_textz2(X) ::= VANUATU_COMMA multipolygonz(P) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textz2(X) ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz(C) geocoll_textz2(Y). + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; + X = C; + } + + +geocoll_textzm(G) ::= VANUATU_OPEN_BRACKET pointzm(P) geocoll_textzm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textzm(G) ::= VANUATU_OPEN_BRACKET linestringzm(L) geocoll_textzm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_textzm(G) ::= VANUATU_OPEN_BRACKET polygonzm(P) geocoll_textzm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textzm(G) ::= VANUATU_OPEN_BRACKET multipointzm(P) geocoll_textzm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textzm(G) ::= VANUATU_OPEN_BRACKET multilinestringzm(L) geocoll_textzm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)L); + } + +geocoll_textzm(G) ::= VANUATU_OPEN_BRACKET multipolygonzm(P) geocoll_textzm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)P); + } + +geocoll_textzm(G) ::= +VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm(C) geocoll_textzm2(X) VANUATU_CLOSE_BRACKET. + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)X; + G = (void *) vanuatu_geomColl_xyzm( p_data, (gaiaGeomCollPtr)C); + } + +geocoll_textzm2(X) ::= . { X = NULL; } +geocoll_textzm2(X) ::= VANUATU_COMMA pointzm(P) geocoll_textzm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textzm2(X) ::= VANUATU_COMMA linestringzm(L) geocoll_textzm2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_textzm2(X) ::= VANUATU_COMMA polygonzm(P) geocoll_textzm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textzm2(X) ::= VANUATU_COMMA multipointzm(P) geocoll_textzm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textzm2(X) ::= VANUATU_COMMA multilinestringzm(L) geocoll_textzm2(Y). + { + ((gaiaGeomCollPtr)L)->Next = (gaiaGeomCollPtr)Y; + X = L; + } + +geocoll_textzm2(X) ::= VANUATU_COMMA multipolygonzm(P) geocoll_textzm2(Y). + { + ((gaiaGeomCollPtr)P)->Next = (gaiaGeomCollPtr)Y; + X = P; + } + +geocoll_textzm2(X) ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm(C) geocoll_textzm2(Y). + { + ((gaiaGeomCollPtr)C)->Next = (gaiaGeomCollPtr)Y; + X = C; + } + + +/****************************************************************************** +** This is the end of the code that was created by Team Vanuatu +** of The University of Toronto. + +Authors: +Ruppi Rana ruppi.rana@gmail.com +Dev Tanna dev.tanna@gmail.com +Elias Adum elias.adum@gmail.com +Benton Hui benton.hui@gmail.com +Abhayan Sundararajan abhayan@gmail.com +Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com +Nikola Banovic nikola.banovic@gmail.com +Yong Jian yong.jian@utoronto.ca + +Supervisor: +Greg Wilson gvwilson@cs.toronto.ca + +------------------------------------------------------------------------------- +*/ diff --git a/src/spatialite/src/gaiageo/lex.Ewkt.c b/src/spatialite/src/gaiageo/lex.Ewkt.c new file mode 100644 index 0000000..fed73c6 --- /dev/null +++ b/src/spatialite/src/gaiageo/lex.Ewkt.c @@ -0,0 +1,2162 @@ + +#line 3 "lex.Ewkt.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include <stdio.h> +#include <string.h> +#include <errno.h> +#include <stdlib.h> + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include <inttypes.h> +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* An opaque pointer. */ +#ifndef YY_TYPEDEF_YY_SCANNER_T +#define YY_TYPEDEF_YY_SCANNER_T +typedef void *yyscan_t; +#endif + +/* For convenience, these vars (plus the bison vars far below) + are macros in the reentrant scanner. */ +#define yyin yyg->yyin_r +#define yyout yyg->yyout_r +#define yyextra yyg->yyextra_r +#define yyleng yyg->yyleng_r +#define yytext yyg->yytext_r +#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) +#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) +#define yy_flex_debug yyg->yy_flex_debug_r + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yyg->yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yyg->yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE Ewktrestart(yyin ,yyscanner ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + +#define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = yyg->yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state +{ + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via Ewktrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + +}; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ + ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] + +void Ewktrestart (FILE * input_file, yyscan_t yyscanner); +void Ewkt_switch_to_buffer (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); +YY_BUFFER_STATE Ewkt_create_buffer (FILE * file, int size, yyscan_t yyscanner); +void Ewkt_delete_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner); +void Ewkt_flush_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner); +void Ewktpush_buffer_state (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); +void Ewktpop_buffer_state (yyscan_t yyscanner); + +static void Ewktensure_buffer_stack (yyscan_t yyscanner); +static void Ewkt_load_buffer_state (yyscan_t yyscanner); +static void Ewkt_init_buffer (YY_BUFFER_STATE b, FILE * file, + yyscan_t yyscanner); + +#define YY_FLUSH_BUFFER Ewkt_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) + +YY_BUFFER_STATE Ewkt_scan_buffer (char *base, yy_size_t size, + yyscan_t yyscanner); +YY_BUFFER_STATE Ewkt_scan_string (yyconst char *yy_str, yyscan_t yyscanner); +YY_BUFFER_STATE Ewkt_scan_bytes (yyconst char *bytes, int len, + yyscan_t yyscanner); + +void *Ewktalloc (yy_size_t, yyscan_t yyscanner); +void *Ewktrealloc (void *, yy_size_t, yyscan_t yyscanner); +void Ewktfree (void *, yyscan_t yyscanner); + +#define yy_new_buffer Ewkt_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + Ewktensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + Ewkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + Ewktensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + Ewkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +typedef unsigned char YY_CHAR; + +typedef int yy_state_type; + +#define yytext_ptr yytext_r + +static yy_state_type yy_get_previous_state (yyscan_t yyscanner); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state, + yyscan_t yyscanner); +static int yy_get_next_buffer (yyscan_t yyscanner); +static void yy_fatal_error (yyconst char msg[], yyscan_t yyscanner); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + yyg->yytext_ptr = yy_bp; \ + yyleng = (size_t) (yy_cp - yy_bp); \ + yyg->yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yyg->yy_c_buf_p = yy_cp; + +#define YY_NUM_RULES 22 +#define YY_END_OF_BUFFER 23 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info +{ + flex_int32_t yy_verify; + flex_int32_t yy_nxt; +}; +static yyconst flex_int16_t yy_accept[93] = { 0, + 0, 0, 23, 21, 19, 20, 3, 4, 21, 2, + 21, 1, 21, 21, 21, 21, 1, 1, 1, 1, + 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 6, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, + 10, 0, 0, 0, 0, 0, 0, 7, 0, 11, + 0, 0, 8, 0, 12, 0, 0, 0, 15, 0, + 0, 16, 0, 0, 0, 13, 0, 14, 0, 17, + 18, 0 +}; + +static yyconst flex_int32_t yy_ec[256] = { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, + 5, 1, 6, 7, 8, 9, 1, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 11, 1, 12, 1, + 13, 1, 14, 1, 1, 15, 16, 17, 18, 19, + 1, 20, 21, 22, 23, 1, 1, 1, 24, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 25, 1, + + 26, 1, 27, 1, 28, 1, 1, 29, 30, 31, + 32, 33, 1, 34, 35, 36, 37, 1, 1, 1, + 38, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 +}; + +static yyconst flex_int32_t yy_meta[39] = { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1 +}; + +static yyconst flex_int16_t yy_base[93] = { 0, + 0, 0, 187, 188, 188, 188, 188, 188, 174, 188, + 173, 30, 29, 28, 20, 26, 36, 38, 172, 40, + 33, 35, 38, 45, 171, 166, 165, 38, 49, 40, + 46, 40, 164, 163, 57, 49, 57, 50, 66, 58, + 59, 72, 66, 70, 69, 70, 78, 79, 188, 81, + 75, 86, 90, 94, 94, 104, 99, 105, 101, 95, + 188, 102, 112, 105, 105, 115, 120, 120, 115, 122, + 125, 129, 188, 125, 188, 129, 135, 134, 137, 143, + 138, 188, 134, 150, 150, 149, 148, 188, 154, 156, + 188, 188 +}; + +static yyconst flex_int16_t yy_def[93] = { 0, + 92, 1, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 0 +}; + +static yyconst flex_int16_t yy_nxt[227] = { 0, + 4, 5, 6, 7, 8, 9, 10, 11, 4, 12, + 4, 4, 13, 4, 14, 15, 4, 4, 16, 4, + 4, 4, 4, 4, 4, 4, 13, 4, 14, 15, + 4, 4, 16, 4, 4, 4, 4, 4, 19, 20, + 21, 22, 23, 24, 25, 17, 26, 18, 19, 20, + 28, 29, 30, 35, 21, 22, 23, 24, 31, 32, + 36, 37, 38, 39, 28, 29, 30, 35, 40, 41, + 42, 43, 31, 32, 36, 37, 38, 39, 44, 45, + 46, 49, 40, 41, 42, 43, 47, 50, 51, 52, + 48, 53, 44, 45, 46, 49, 54, 55, 56, 57, + + 47, 50, 51, 52, 48, 53, 58, 59, 60, 61, + 54, 55, 56, 57, 62, 63, 64, 65, 66, 67, + 58, 59, 60, 61, 68, 69, 70, 71, 62, 63, + 64, 65, 66, 67, 72, 73, 74, 75, 68, 69, + 70, 71, 76, 77, 78, 79, 80, 81, 72, 73, + 74, 75, 82, 83, 84, 85, 76, 77, 78, 79, + 80, 81, 86, 87, 88, 89, 82, 83, 84, 85, + 90, 91, 34, 33, 27, 34, 86, 87, 88, 89, + 33, 27, 18, 17, 90, 91, 92, 3, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92 +}; + +static yyconst flex_int16_t yy_chk[227] = { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 12, 12, + 13, 14, 15, 16, 17, 17, 18, 18, 20, 20, + 21, 22, 23, 28, 13, 14, 15, 16, 24, 24, + 29, 30, 31, 32, 21, 22, 23, 28, 35, 36, + 37, 38, 24, 24, 29, 30, 31, 32, 39, 40, + 41, 43, 35, 36, 37, 38, 42, 44, 45, 46, + 42, 47, 39, 40, 41, 43, 48, 50, 51, 52, + + 42, 44, 45, 46, 42, 47, 53, 54, 54, 55, + 48, 50, 51, 52, 56, 57, 58, 59, 60, 62, + 53, 54, 54, 55, 63, 64, 65, 66, 56, 57, + 58, 59, 60, 62, 67, 68, 69, 70, 63, 64, + 65, 66, 71, 72, 74, 76, 77, 78, 67, 68, + 69, 70, 79, 80, 81, 83, 71, 72, 74, 76, + 77, 78, 84, 85, 86, 87, 79, 80, 81, 83, + 89, 90, 34, 33, 27, 26, 84, 85, 86, 87, + 25, 19, 11, 9, 89, 90, 3, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92, 92, 92, 92, 92, + 92, 92, 92, 92, 92, 92 +}; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +/* + EwktLexer.l -- EWKT parser - FLEX config + + version 2.4, 2011 May 14 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define YY_NO_INPUT 1 +/** +* The main string-token matcher. +* The lower case part is probably not needed. We should really be converting +* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. +* What Flex will do is, For the input string, beginning from the front, Flex +* will try to match with any of the defined tokens from below. Flex will +* then match the string of longest length. Suppose the string is: POINTM, +* Flex would match both POINT and POINTM, but since POINTM is the longer +* of the two tokens, FLEX will match POINTM. +*/ + +#define INITIAL 0 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include <unistd.h> +#endif + +#define YY_EXTRA_TYPE struct ewkt_data * + +/* Holds the entire state of the reentrant scanner. */ +struct yyguts_t +{ + + /* User-defined. Not touched by flex. */ + YY_EXTRA_TYPE yyextra_r; + + /* The rest are the same as the globals declared in the non-reentrant scanner. */ + FILE *yyin_r, *yyout_r; + size_t yy_buffer_stack_top; /**< index of top of stack. */ + size_t yy_buffer_stack_max; /**< capacity of stack. */ + YY_BUFFER_STATE *yy_buffer_stack; /**< Stack as an array. */ + char yy_hold_char; + int yy_n_chars; + int yyleng_r; + char *yy_c_buf_p; + int yy_init; + int yy_start; + int yy_did_buffer_switch_on_eof; + int yy_start_stack_ptr; + int yy_start_stack_depth; + int *yy_start_stack; + yy_state_type yy_last_accepting_state; + char *yy_last_accepting_cpos; + + int yylineno_r; + int yy_flex_debug_r; + + char *yytext_r; + int yy_more_flag; + int yy_more_len; + +}; /* end struct yyguts_t */ + +static int yy_init_globals (yyscan_t yyscanner); + +int Ewktlex_init (yyscan_t * scanner); + +int Ewktlex_init_extra (YY_EXTRA_TYPE user_defined, yyscan_t * scanner); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int Ewktlex_destroy (yyscan_t yyscanner); + +int Ewktget_debug (yyscan_t yyscanner); + +void Ewktset_debug (int debug_flag, yyscan_t yyscanner); + +YY_EXTRA_TYPE Ewktget_extra (yyscan_t yyscanner); + +void Ewktset_extra (YY_EXTRA_TYPE user_defined, yyscan_t yyscanner); + +FILE *Ewktget_in (yyscan_t yyscanner); + +void Ewktset_in (FILE * in_str, yyscan_t yyscanner); + +FILE *Ewktget_out (yyscan_t yyscanner); + +void Ewktset_out (FILE * out_str, yyscan_t yyscanner); + +int Ewktget_leng (yyscan_t yyscanner); + +char *Ewktget_text (yyscan_t yyscanner); + +int Ewktget_lineno (yyscan_t yyscanner); + +void Ewktset_lineno (int line_number, yyscan_t yyscanner); + +int Ewktget_column (yyscan_t yyscanner); + +void Ewktset_column (int column_no, yyscan_t yyscanner); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int Ewktwrap (yyscan_t yyscanner); +#else +extern int Ewktwrap (yyscan_t yyscanner); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *, yyconst char *, int, yyscan_t yyscanner); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char *, yyscan_t yyscanner); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (yyscan_t yyscanner); +#else +static int input (yyscan_t yyscanner); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + unsigned n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int Ewktlex (yyscan_t yyscanner); + +#define YY_DECL int Ewktlex (yyscan_t yyscanner) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!yyg->yy_init) + { + yyg->yy_init = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if (!yyg->yy_start) + yyg->yy_start = 1; /* first start state */ + + if (!yyin) + yyin = stdin; + + if (!yyout) + yyout = stdout; + + if (!YY_CURRENT_BUFFER) + { + Ewktensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + Ewkt_create_buffer (yyin, YY_BUF_SIZE, yyscanner); + } + + Ewkt_load_buffer_state (yyscanner); + } + + while (1) /* loops until end-of-file is reached */ + { + yy_cp = yyg->yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yyg->yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = yyg->yy_start; + yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI (*yy_cp)]; + if (yy_accept[yy_current_state]) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while (yy_chk[yy_base[yy_current_state] + yy_c] != + yy_current_state) + { + yy_current_state = (int) yy_def[yy_current_state]; + if (yy_current_state >= 93) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = + yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while (yy_base[yy_current_state] != 188); + + yy_find_action: + yy_act = yy_accept[yy_current_state]; + if (yy_act == 0) + { /* have to back up */ + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + + do_action: /* This label is used only to access EOF actions. */ + + switch (yy_act) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = yyg->yy_hold_char; + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + + case 1: + YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->ewkt_col += + (int) strlen (yytext); + Ewktget_extra (yyscanner)->EwktLval.dval = atof (yytext); + return EWKT_NUM; + } + YY_BREAK case 2:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_COMMA; + } + YY_BREAK case 3:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_OPEN_BRACKET; + } + YY_BREAK case 4:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_CLOSE_BRACKET; + } + YY_BREAK case 5:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_POINT; + } + YY_BREAK case 6:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_POINT_M; + } + YY_BREAK case 7:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_LINESTRING; + } + YY_BREAK case 8:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_LINESTRING_M; + } + YY_BREAK case 9:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_POLYGON; + } + YY_BREAK case 10:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_POLYGON_M; + } + YY_BREAK case 11:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_MULTIPOINT; + } + YY_BREAK case 12:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_MULTIPOINT_M; + } + YY_BREAK case 13:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_MULTILINESTRING; + } + YY_BREAK case 14:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_MULTILINESTRING_M; + } + YY_BREAK case 15:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_MULTIPOLYGON; + } + YY_BREAK case 16:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_MULTIPOLYGON_M; + } + YY_BREAK case 17:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_GEOMETRYCOLLECTION; + } + YY_BREAK case 18:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->EwktLval.dval = 0; + return EWKT_GEOMETRYCOLLECTION_M; + } + YY_BREAK case 19:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->ewkt_col += + (int) strlen (yytext); + } /* ignore but count white space */ + YY_BREAK case 20: +/* rule 20 can match eol */ + YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->ewkt_col = 0; + Ewktget_extra (yyscanner)->ewkt_line++; + } + YY_BREAK case 21:YY_RULE_SETUP + { + Ewktget_extra (yyscanner)->ewkt_col += + (int) strlen (yytext); + return -1; + } + YY_BREAK case 22:YY_RULE_SETUP ECHO; + YY_BREAK case YY_STATE_EOF (INITIAL):yyterminate (); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = + (int) (yy_cp - yyg->yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yyg->yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == + YY_BUFFER_NEW) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * Ewktlex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yyg->yy_n_chars = + YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if (yyg->yy_c_buf_p <= + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state (yyscanner); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = + yy_try_NUL_trans (yy_current_state, yyscanner); + + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + + if (yy_next_state) + { + /* Consume the NUL. */ + yy_cp = ++yyg->yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yyg->yy_c_buf_p; + goto yy_find_action; + } + } + + else + switch (yy_get_next_buffer (yyscanner)) + { + case EOB_ACT_END_OF_FILE: + { + yyg->yy_did_buffer_switch_on_eof = 0; + + if (Ewktwrap (yyscanner)) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yyg->yy_c_buf_p = + yyg->yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF (YY_START); + goto do_action; + } + + else + { + if (!yyg->yy_did_buffer_switch_on_eof) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = + yy_get_previous_state (yyscanner); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yyg->yy_c_buf_p = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg-> + yy_n_chars]; + + yy_current_state = + yy_get_previous_state (yyscanner); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR + ("fatal flex scanner internal error--no action found"); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of Ewktlex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int +yy_get_next_buffer (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = yyg->yytext_ptr; + register int number_to_move, i; + int ret_val; + + if (yyg->yy_c_buf_p > + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1]) + YY_FATAL_ERROR + ("fatal flex scanner internal error--end of buffer missed"); + + if (YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0) + { /* Don't try to fill the buffer, so this is an EOF. */ + if (yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; + + for (i = 0; i < number_to_move; ++i) + *(dest++) = *(source++); + + if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while (num_to_read <= 0) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = (int) (yyg->yy_c_buf_p - b->yy_ch_buf); + + if (b->yy_is_our_buffer) + { + int new_size = b->yy_buf_size * 2; + + if (new_size <= 0) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + Ewktrealloc ((void *) b->yy_ch_buf, + b->yy_buf_size + 2, yyscanner); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if (!b->yy_ch_buf) + YY_FATAL_ERROR + ("fatal error - scanner input buffer overflow"); + + yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if (num_to_read > YY_READ_BUF_SIZE) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT ((&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + yyg->yy_n_chars, (size_t) num_to_read); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + if (yyg->yy_n_chars == 0) + { + if (number_to_move == YY_MORE_ADJ) + { + ret_val = EOB_ACT_END_OF_FILE; + Ewktrestart (yyin, yyscanner); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > + YY_CURRENT_BUFFER_LVALUE->yy_buf_size) + { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = + yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = + (char *) Ewktrealloc ((void *) + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, + new_size, yyscanner); + if (!YY_CURRENT_BUFFER_LVALUE->yy_ch_buf) + YY_FATAL_ERROR ("out of dynamic memory in yy_get_next_buffer()"); + } + + yyg->yy_n_chars += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = + YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = + YY_END_OF_BUFFER_CHAR; + + yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +static yy_state_type +yy_get_previous_state (yyscan_t yyscanner) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + yy_current_state = yyg->yy_start; + + for (yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; + ++yy_cp) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI (*yy_cp)] : 1); + if (yy_accept[yy_current_state]) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) + { + yy_current_state = (int) yy_def[yy_current_state]; + if (yy_current_state >= 93) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = + yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ +static yy_state_type +yy_try_NUL_trans (yy_state_type yy_current_state, yyscan_t yyscanner) +{ + register int yy_is_jam; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; /* This var may be unused depending upon options. */ + register char *yy_cp = yyg->yy_c_buf_p; + + register YY_CHAR yy_c = 1; + if (yy_accept[yy_current_state]) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) + { + yy_current_state = (int) yy_def[yy_current_state]; + if (yy_current_state >= 93) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 92); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int +yyinput (yyscan_t yyscanner) +#else +static int +input (yyscan_t yyscanner) +#endif +{ + int c; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + *yyg->yy_c_buf_p = yyg->yy_hold_char; + + if (*yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if (yyg->yy_c_buf_p < + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]) + /* This was really a NUL. */ + *yyg->yy_c_buf_p = '\0'; + + else + { /* need more input */ + int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + ++yyg->yy_c_buf_p; + + switch (yy_get_next_buffer (yyscanner)) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + Ewktrestart (yyin, yyscanner); + + /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: + { + if (Ewktwrap (yyscanner)) + return EOF; + + if (!yyg->yy_did_buffer_switch_on_eof) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput (yyscanner); +#else + return input (yyscanner); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = yyg->yytext_ptr + offset; + break; + } + } + } + + c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ + *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ + yyg->yy_hold_char = *++yyg->yy_c_buf_p; + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * @param yyscanner The scanner object. + * @note This function does not reset the start condition to @c INITIAL . + */ +void +Ewktrestart (FILE * input_file, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!YY_CURRENT_BUFFER) + { + Ewktensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + Ewkt_create_buffer (yyin, YY_BUF_SIZE, yyscanner); + } + + Ewkt_init_buffer (YY_CURRENT_BUFFER, input_file, yyscanner); + Ewkt_load_buffer_state (yyscanner); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * @param yyscanner The scanner object. + */ +void +Ewkt_switch_to_buffer (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* TODO. We should be able to replace this entire function body + * with + * Ewktpop_buffer_state(); + * Ewktpush_buffer_state(new_buffer); + */ + Ewktensure_buffer_stack (yyscanner); + if (YY_CURRENT_BUFFER == new_buffer) + return; + + if (YY_CURRENT_BUFFER) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + Ewkt_load_buffer_state (yyscanner); + + /* We don't actually know whether we did this switch during + * EOF (Ewktwrap()) processing, but the only time this flag + * is looked at is after Ewktwrap() is called, so it's safe + * to go ahead and always set it. + */ + yyg->yy_did_buffer_switch_on_eof = 1; +} + +static void +Ewkt_load_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + yyg->yy_hold_char = *yyg->yy_c_buf_p; +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * @param yyscanner The scanner object. + * @return the allocated buffer state. + */ +YY_BUFFER_STATE +Ewkt_create_buffer (FILE * file, int size, yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) Ewktalloc (sizeof (struct yy_buffer_state), + yyscanner); + if (!b) + YY_FATAL_ERROR ("out of dynamic memory in Ewkt_create_buffer()"); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) Ewktalloc (b->yy_buf_size + 2, yyscanner); + if (!b->yy_ch_buf) + YY_FATAL_ERROR ("out of dynamic memory in Ewkt_create_buffer()"); + + b->yy_is_our_buffer = 1; + + Ewkt_init_buffer (b, file, yyscanner); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with Ewkt_create_buffer() + * @param yyscanner The scanner object. + */ +void +Ewkt_delete_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!b) + return; + + if (b == YY_CURRENT_BUFFER) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if (b->yy_is_our_buffer) + Ewktfree ((void *) b->yy_ch_buf, yyscanner); + + Ewktfree ((void *) b, yyscanner); +} + +#ifndef __cplusplus +extern int isatty (int); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a Ewktrestart() or at EOF. + */ +static void +Ewkt_init_buffer (YY_BUFFER_STATE b, FILE * file, yyscan_t yyscanner) +{ + int oerrno = errno; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + Ewkt_flush_buffer (b, yyscanner); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then Ewkt_init_buffer was _probably_ + * called from Ewktrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER) + { + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty (fileno (file)) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * @param yyscanner The scanner object. + */ +void +Ewkt_flush_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + if (!b) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if (b == YY_CURRENT_BUFFER) + Ewkt_load_buffer_state (yyscanner); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * @param yyscanner The scanner object. + */ +void +Ewktpush_buffer_state (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + if (new_buffer == NULL) + return; + + Ewktensure_buffer_stack (yyscanner); + + /* This block is copied from Ewkt_switch_to_buffer. */ + if (YY_CURRENT_BUFFER) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + yyg->yy_buffer_stack_top++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from Ewkt_switch_to_buffer. */ + Ewkt_load_buffer_state (yyscanner); + yyg->yy_did_buffer_switch_on_eof = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * @param yyscanner The scanner object. + */ +void +Ewktpop_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + if (!YY_CURRENT_BUFFER) + return; + + Ewkt_delete_buffer (YY_CURRENT_BUFFER, yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + if (yyg->yy_buffer_stack_top > 0) + --yyg->yy_buffer_stack_top; + + if (YY_CURRENT_BUFFER) + { + Ewkt_load_buffer_state (yyscanner); + yyg->yy_did_buffer_switch_on_eof = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void +Ewktensure_buffer_stack (yyscan_t yyscanner) +{ + int num_to_alloc; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!yyg->yy_buffer_stack) + { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + yyg->yy_buffer_stack = (struct yy_buffer_state **) Ewktalloc + (num_to_alloc * sizeof (struct yy_buffer_state *), yyscanner); + if (!yyg->yy_buffer_stack) + YY_FATAL_ERROR + ("out of dynamic memory in Ewktensure_buffer_stack()"); + + memset (yyg->yy_buffer_stack, 0, + num_to_alloc * sizeof (struct yy_buffer_state *)); + + yyg->yy_buffer_stack_max = num_to_alloc; + yyg->yy_buffer_stack_top = 0; + return; + } + + if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1) + { + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */ ; + + num_to_alloc = yyg->yy_buffer_stack_max + grow_size; + yyg->yy_buffer_stack = (struct yy_buffer_state **) Ewktrealloc + (yyg->yy_buffer_stack, + num_to_alloc * sizeof (struct yy_buffer_state *), yyscanner); + if (!yyg->yy_buffer_stack) + YY_FATAL_ERROR + ("out of dynamic memory in Ewktensure_buffer_stack()"); + + /* zero only the new slots. */ + memset (yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, + grow_size * sizeof (struct yy_buffer_state *)); + yyg->yy_buffer_stack_max = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE +Ewkt_scan_buffer (char *base, yy_size_t size, yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + if (size < 2 || + base[size - 2] != YY_END_OF_BUFFER_CHAR || + base[size - 1] != YY_END_OF_BUFFER_CHAR) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) Ewktalloc (sizeof (struct yy_buffer_state), + yyscanner); + if (!b) + YY_FATAL_ERROR ("out of dynamic memory in Ewkt_scan_buffer()"); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + Ewkt_switch_to_buffer (b, yyscanner); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to Ewktlex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * Ewkt_scan_bytes() instead. + */ +YY_BUFFER_STATE +Ewkt_scan_string (yyconst char *yystr, yyscan_t yyscanner) +{ + + return Ewkt_scan_bytes (yystr, strlen (yystr), yyscanner); +} + +/** Setup the input buffer state to scan the given bytes. The next call to Ewktlex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE +Ewkt_scan_bytes (yyconst char *yybytes, int _yybytes_len, yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) Ewktalloc (n, yyscanner); + if (!buf) + YY_FATAL_ERROR ("out of dynamic memory in Ewkt_scan_bytes()"); + + for (i = 0; i < _yybytes_len; ++i) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len + 1] = YY_END_OF_BUFFER_CHAR; + + b = Ewkt_scan_buffer (buf, n, yyscanner); + if (!b) + YY_FATAL_ERROR ("bad buffer in Ewkt_scan_bytes()"); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void +yy_fatal_error (yyconst char *msg, yyscan_t yyscanner) +{ + (void) fprintf (stderr, "%s\n", msg); + exit (YY_EXIT_FAILURE); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = yyg->yy_hold_char; \ + yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ + yyg->yy_hold_char = *yyg->yy_c_buf_p; \ + *yyg->yy_c_buf_p = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the user-defined data for this scanner. + * @param yyscanner The scanner object. + */ +YY_EXTRA_TYPE +Ewktget_extra (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyextra; +} + +/** Get the current line number. + * @param yyscanner The scanner object. + */ +int +Ewktget_lineno (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!YY_CURRENT_BUFFER) + return 0; + + return yylineno; +} + +/** Get the current column number. + * @param yyscanner The scanner object. + */ +int +Ewktget_column (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!YY_CURRENT_BUFFER) + return 0; + + return yycolumn; +} + +/** Get the input stream. + * @param yyscanner The scanner object. + */ +FILE * +Ewktget_in (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyin; +} + +/** Get the output stream. + * @param yyscanner The scanner object. + */ +FILE * +Ewktget_out (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyout; +} + +/** Get the length of the current token. + * @param yyscanner The scanner object. + */ +int +Ewktget_leng (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyleng; +} + +/** Get the current token. + * @param yyscanner The scanner object. + */ + +char * +Ewktget_text (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yytext; +} + +/** Set the user-defined data. This data is never touched by the scanner. + * @param user_defined The data to be associated with this scanner. + * @param yyscanner The scanner object. + */ +void +Ewktset_extra (YY_EXTRA_TYPE user_defined, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyextra = user_defined; +} + +/** Set the current line number. + * @param line_number + * @param yyscanner The scanner object. + */ +void +Ewktset_lineno (int line_number, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* lineno is only valid if an input buffer exists. */ + if (!YY_CURRENT_BUFFER) + yy_fatal_error ("Ewktset_lineno called with no buffer", yyscanner); + + yylineno = line_number; +} + +/** Set the current column. + * @param line_number + * @param yyscanner The scanner object. + */ +void +Ewktset_column (int column_no, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* column is only valid if an input buffer exists. */ + if (!YY_CURRENT_BUFFER) + yy_fatal_error ("Ewktset_column called with no buffer", yyscanner); + + yycolumn = column_no; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * @param yyscanner The scanner object. + * @see Ewkt_switch_to_buffer + */ +void +Ewktset_in (FILE * in_str, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyin = in_str; +} + +void +Ewktset_out (FILE * out_str, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyout = out_str; +} + +int +Ewktget_debug (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yy_flex_debug; +} + +void +Ewktset_debug (int bdebug, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yy_flex_debug = bdebug; +} + +/* Accessor methods for yylval and yylloc */ + +/* User-visible API */ + +/* Ewktlex_init is special because it creates the scanner itself, so it is + * the ONLY reentrant function that doesn't take the scanner as the last argument. + * That's why we explicitly handle the declaration, instead of using our macros. + */ + +int +Ewktlex_init (yyscan_t * ptr_yy_globals) +{ + if (ptr_yy_globals == NULL) + { + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = (yyscan_t) Ewktalloc (sizeof (struct yyguts_t), NULL); + + if (*ptr_yy_globals == NULL) + { + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ + memset (*ptr_yy_globals, 0x00, sizeof (struct yyguts_t)); + + return yy_init_globals (*ptr_yy_globals); +} + +/* Ewktlex_init_extra has the same functionality as Ewktlex_init, but follows the + * convention of taking the scanner as the last argument. Note however, that + * this is a *pointer* to a scanner, as it will be allocated by this call (and + * is the reason, too, why this function also must handle its own declaration). + * The user defined value in the first argument will be available to Ewktalloc in + * the yyextra field. + */ + +int +Ewktlex_init_extra (YY_EXTRA_TYPE yy_user_defined, yyscan_t * ptr_yy_globals) +{ + struct yyguts_t dummy_yyguts; + + Ewktset_extra (yy_user_defined, &dummy_yyguts); + + if (ptr_yy_globals == NULL) + { + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = + (yyscan_t) Ewktalloc (sizeof (struct yyguts_t), &dummy_yyguts); + + if (*ptr_yy_globals == NULL) + { + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in + yy_init_globals. Leave at 0x00 for releases. */ + memset (*ptr_yy_globals, 0x00, sizeof (struct yyguts_t)); + + Ewktset_extra (yy_user_defined, *ptr_yy_globals); + + return yy_init_globals (*ptr_yy_globals); +} + +static int +yy_init_globals (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from Ewktlex_destroy(), so don't allocate here. + */ + + yyg->yy_buffer_stack = 0; + yyg->yy_buffer_stack_top = 0; + yyg->yy_buffer_stack_max = 0; + yyg->yy_c_buf_p = (char *) 0; + yyg->yy_init = 0; + yyg->yy_start = 0; + + yyg->yy_start_stack_ptr = 0; + yyg->yy_start_stack_depth = 0; + yyg->yy_start_stack = NULL; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * Ewktlex_init() + */ + return 0; +} + +/* Ewktlex_destroy is for both reentrant and non-reentrant scanners. */ +int +Ewktlex_destroy (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* Pop the buffer stack, destroying each element. */ + while (YY_CURRENT_BUFFER) + { + Ewkt_delete_buffer (YY_CURRENT_BUFFER, yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + Ewktpop_buffer_state (yyscanner); + } + + /* Destroy the stack itself. */ + Ewktfree (yyg->yy_buffer_stack, yyscanner); + yyg->yy_buffer_stack = NULL; + + /* Destroy the start condition stack. */ + Ewktfree (yyg->yy_start_stack, yyscanner); + yyg->yy_start_stack = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * Ewktlex() is called, initialization will occur. */ + yy_init_globals (yyscanner); + + /* Destroy the main struct (reentrant only). */ + Ewktfree (yyscanner, yyscanner); + yyscanner = NULL; + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void +yy_flex_strncpy (char *s1, yyconst char *s2, int n, yyscan_t yyscanner) +{ + register int i; + for (i = 0; i < n; ++i) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int +yy_flex_strlen (yyconst char *s, yyscan_t yyscanner) +{ + register int n; + for (n = 0; s[n]; ++n) + ; + + return n; +} +#endif + +void * +Ewktalloc (yy_size_t size, yyscan_t yyscanner) +{ + return (void *) malloc (size); +} + +void * +Ewktrealloc (void *ptr, yy_size_t size, yyscan_t yyscanner) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc ((char *) ptr, size); +} + +void +Ewktfree (void *ptr, yyscan_t yyscanner) +{ + free ((char *) ptr); /* see Ewktrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +int +Ewktwrap (yyscan_t yyscanner) +{ + return 1; +} diff --git a/src/spatialite/src/gaiageo/lex.GeoJson.c b/src/spatialite/src/gaiageo/lex.GeoJson.c new file mode 100644 index 0000000..c056df4 --- /dev/null +++ b/src/spatialite/src/gaiageo/lex.GeoJson.c @@ -0,0 +1,2229 @@ + +#line 3 "lex.GeoJson.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include <stdio.h> +#include <string.h> +#include <errno.h> +#include <stdlib.h> + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include <inttypes.h> +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* An opaque pointer. */ +#ifndef YY_TYPEDEF_YY_SCANNER_T +#define YY_TYPEDEF_YY_SCANNER_T +typedef void *yyscan_t; +#endif + +/* For convenience, these vars (plus the bison vars far below) + are macros in the reentrant scanner. */ +#define yyin yyg->yyin_r +#define yyout yyg->yyout_r +#define yyextra yyg->yyextra_r +#define yyleng yyg->yyleng_r +#define yytext yyg->yytext_r +#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) +#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) +#define yy_flex_debug yyg->yy_flex_debug_r + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yyg->yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yyg->yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE GeoJsonrestart(yyin ,yyscanner ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + +#define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = yyg->yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state +{ + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via GeoJsonrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + +}; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ + ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] + +void GeoJsonrestart (FILE * input_file, yyscan_t yyscanner); +void GeoJson_switch_to_buffer (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); +YY_BUFFER_STATE GeoJson_create_buffer (FILE * file, int size, + yyscan_t yyscanner); +void GeoJson_delete_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner); +void GeoJson_flush_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner); +void GeoJsonpush_buffer_state (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); +void GeoJsonpop_buffer_state (yyscan_t yyscanner); + +static void GeoJsonensure_buffer_stack (yyscan_t yyscanner); +static void GeoJson_load_buffer_state (yyscan_t yyscanner); +static void GeoJson_init_buffer (YY_BUFFER_STATE b, FILE * file, + yyscan_t yyscanner); + +#define YY_FLUSH_BUFFER GeoJson_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) + +YY_BUFFER_STATE GeoJson_scan_buffer (char *base, yy_size_t size, + yyscan_t yyscanner); +YY_BUFFER_STATE GeoJson_scan_string (yyconst char *yy_str, yyscan_t yyscanner); +YY_BUFFER_STATE GeoJson_scan_bytes (yyconst char *bytes, int len, + yyscan_t yyscanner); + +void *GeoJsonalloc (yy_size_t, yyscan_t yyscanner); +void *GeoJsonrealloc (void *, yy_size_t, yyscan_t yyscanner); +void GeoJsonfree (void *, yyscan_t yyscanner); + +#define yy_new_buffer GeoJson_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + GeoJsonensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + GeoJson_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + GeoJsonensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + GeoJson_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +typedef unsigned char YY_CHAR; + +typedef int yy_state_type; + +#define yytext_ptr yytext_r + +static yy_state_type yy_get_previous_state (yyscan_t yyscanner); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state, + yyscan_t yyscanner); +static int yy_get_next_buffer (yyscan_t yyscanner); +static void yy_fatal_error (yyconst char msg[], yyscan_t yyscanner); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + yyg->yytext_ptr = yy_bp; \ + yyleng = (size_t) (yy_cp - yy_bp); \ + yyg->yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yyg->yy_c_buf_p = yy_cp; + +#define YY_NUM_RULES 27 +#define YY_END_OF_BUFFER 28 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info +{ + flex_int32_t yy_verify; + flex_int32_t yy_nxt; +}; +static yyconst flex_int16_t yy_accept[182] = { 0, + 0, 0, 28, 26, 24, 25, 26, 26, 4, 26, + 1, 5, 8, 9, 6, 7, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, + 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, + 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 13, 0, 0, 14, 0, + 10, 0, 0, 0, 0, 0, 0, 0, 17, 0, + + 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 19, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 18, 0, 20, 0, 0, 12, 15, + 0, 0, 0, 0, 11, 0, 0, 0, 22, 0, + 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, + 0, 0, 0, 23, 0, 0, 0, 0, 0, 3, + 0 +}; + +static yyconst flex_int32_t yy_ec[256] = { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 4, 1, 1, 1, 1, 1, 1, + 1, 1, 5, 6, 7, 8, 1, 9, 9, 9, + 9, 9, 9, 9, 9, 9, 9, 10, 1, 1, + 1, 1, 1, 1, 1, 1, 11, 1, 12, 1, + 13, 1, 1, 1, 1, 14, 15, 1, 1, 16, + 1, 1, 17, 1, 1, 1, 1, 1, 1, 1, + 18, 1, 19, 1, 1, 1, 20, 21, 22, 23, + + 24, 25, 26, 1, 27, 1, 1, 28, 29, 30, + 31, 32, 1, 33, 34, 35, 36, 1, 1, 37, + 38, 1, 39, 1, 40, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 +}; + +static yyconst flex_int32_t yy_meta[41] = { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 +}; + +static yyconst flex_int16_t yy_base[183] = { 0, + 0, 39, 203, 204, 204, 204, 68, 193, 204, 4, + 3, 204, 204, 204, 204, 204, 185, 176, 172, 162, + 166, 175, 0, 171, 174, 160, 154, 158, 6, 11, + 8, 181, 12, 172, 157, 157, 158, 0, 154, 153, + 149, 151, 152, 149, 147, 148, 168, 167, 166, 161, + 144, 148, 136, 140, 131, 131, 134, 162, 136, 140, + 131, 138, 151, 151, 150, 148, 133, 139, 128, 119, + 127, 148, 128, 204, 126, 145, 124, 143, 115, 15, + 110, 109, 16, 139, 111, 204, 114, 105, 204, 106, + 204, 112, 128, 25, 103, 102, 107, 102, 204, 102, + + 101, 97, 94, 106, 204, 89, 99, 95, 8, 120, + 103, 95, 94, 110, 108, 88, 93, 86, 77, 204, + 79, 89, 88, 88, 79, 83, 91, 72, 80, 81, + 68, 67, 75, 69, 92, 60, 89, 61, 57, 84, + 83, 61, 57, 204, 44, 204, 46, 71, 204, 204, + 64, 49, 45, 67, 204, 48, 47, 38, 204, 34, + 31, 39, 30, 36, 58, 51, 29, 204, 47, 25, + 38, 49, 21, 204, 24, 16, 43, 16, 47, 204, + 204, 0 +}; + +static yyconst flex_int16_t yy_def[183] = { 0, + 182, 182, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 0, 181 +}; + +static yyconst flex_int16_t yy_nxt[245] = { 0, + 4, 5, 6, 7, 8, 9, 10, 30, 11, 12, + 32, 33, 31, 47, 29, 48, 31, 13, 14, 32, + 33, 93, 17, 94, 179, 177, 54, 55, 105, 97, + 40, 98, 41, 94, 118, 119, 176, 175, 15, 16, + 5, 6, 7, 8, 9, 10, 28, 11, 12, 178, + 180, 179, 174, 173, 172, 179, 13, 14, 171, 170, + 169, 168, 167, 166, 165, 164, 163, 162, 161, 160, + 159, 158, 157, 156, 155, 154, 153, 15, 16, 17, + 18, 19, 20, 21, 152, 151, 150, 149, 22, 23, + 148, 147, 146, 24, 145, 144, 143, 25, 142, 26, + + 141, 140, 27, 28, 139, 138, 137, 136, 135, 134, + 133, 132, 131, 130, 129, 128, 127, 126, 125, 124, + 123, 122, 121, 120, 117, 116, 115, 114, 113, 112, + 111, 110, 109, 108, 107, 106, 94, 104, 103, 102, + 101, 100, 99, 96, 95, 92, 91, 90, 89, 88, + 87, 86, 85, 84, 83, 82, 81, 80, 65, 64, + 79, 78, 77, 76, 75, 74, 73, 72, 71, 70, + 69, 68, 67, 66, 49, 65, 64, 63, 62, 61, + 60, 59, 58, 57, 56, 53, 52, 51, 50, 49, + 46, 45, 44, 43, 42, 39, 38, 37, 36, 35, + + 34, 29, 181, 3, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181 +}; + +static yyconst flex_int16_t yy_chk[245] = { 0, + 182, 1, 1, 1, 1, 1, 1, 10, 1, 1, + 11, 11, 10, 29, 29, 31, 31, 1, 1, 33, + 33, 80, 30, 80, 178, 176, 38, 38, 94, 83, + 23, 83, 23, 94, 109, 109, 175, 173, 1, 1, + 2, 2, 2, 2, 2, 2, 30, 2, 2, 177, + 179, 177, 172, 171, 170, 179, 2, 2, 169, 167, + 166, 165, 164, 163, 162, 161, 160, 158, 157, 156, + 154, 153, 152, 151, 148, 147, 145, 2, 2, 7, + 7, 7, 7, 7, 143, 142, 141, 140, 7, 7, + 139, 138, 137, 7, 136, 135, 134, 7, 133, 7, + + 132, 131, 7, 7, 130, 129, 128, 127, 126, 125, + 124, 123, 122, 121, 119, 118, 117, 116, 115, 114, + 113, 112, 111, 110, 108, 107, 106, 104, 103, 102, + 101, 100, 98, 97, 96, 95, 93, 92, 90, 88, + 87, 85, 84, 82, 81, 79, 78, 77, 76, 75, + 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, + 63, 62, 61, 60, 59, 58, 57, 56, 55, 54, + 53, 52, 51, 50, 49, 48, 47, 46, 45, 44, + 43, 42, 41, 40, 39, 37, 36, 35, 34, 32, + 28, 27, 26, 25, 24, 22, 21, 20, 19, 18, + + 17, 8, 3, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, + 181, 181, 181, 181 +}; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +/* + geoJsonLexer.l -- GeoJSON parser - FLEX config + + version 2.4, 2011 May 16 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define YY_NO_INPUT 1 +/** +* The main string-token matcher. +* The lower case part is probably not needed. We should really be converting +* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. +* What Flex will do is, For the input string, beginning from the front, Flex +* will try to match with any of the defined tokens from below. Flex will +* then match the string of longest length. Suppose the string is: POINTM, +* Flex would match both POINT and POINTM, but since POINTM is the longer +* of the two tokens, FLEX will match POINTM. +*/ + +#define INITIAL 0 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include <unistd.h> +#endif + +#define YY_EXTRA_TYPE struct geoJson_data * + +/* Holds the entire state of the reentrant scanner. */ +struct yyguts_t +{ + + /* User-defined. Not touched by flex. */ + YY_EXTRA_TYPE yyextra_r; + + /* The rest are the same as the globals declared in the non-reentrant scanner. */ + FILE *yyin_r, *yyout_r; + size_t yy_buffer_stack_top; /**< index of top of stack. */ + size_t yy_buffer_stack_max; /**< capacity of stack. */ + YY_BUFFER_STATE *yy_buffer_stack; /**< Stack as an array. */ + char yy_hold_char; + int yy_n_chars; + int yyleng_r; + char *yy_c_buf_p; + int yy_init; + int yy_start; + int yy_did_buffer_switch_on_eof; + int yy_start_stack_ptr; + int yy_start_stack_depth; + int *yy_start_stack; + yy_state_type yy_last_accepting_state; + char *yy_last_accepting_cpos; + + int yylineno_r; + int yy_flex_debug_r; + + char *yytext_r; + int yy_more_flag; + int yy_more_len; + +}; /* end struct yyguts_t */ + +static int yy_init_globals (yyscan_t yyscanner); + +int GeoJsonlex_init (yyscan_t * scanner); + +int GeoJsonlex_init_extra (YY_EXTRA_TYPE user_defined, yyscan_t * scanner); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int GeoJsonlex_destroy (yyscan_t yyscanner); + +int GeoJsonget_debug (yyscan_t yyscanner); + +void GeoJsonset_debug (int debug_flag, yyscan_t yyscanner); + +YY_EXTRA_TYPE GeoJsonget_extra (yyscan_t yyscanner); + +void GeoJsonset_extra (YY_EXTRA_TYPE user_defined, yyscan_t yyscanner); + +FILE *GeoJsonget_in (yyscan_t yyscanner); + +void GeoJsonset_in (FILE * in_str, yyscan_t yyscanner); + +FILE *GeoJsonget_out (yyscan_t yyscanner); + +void GeoJsonset_out (FILE * out_str, yyscan_t yyscanner); + +int GeoJsonget_leng (yyscan_t yyscanner); + +char *GeoJsonget_text (yyscan_t yyscanner); + +int GeoJsonget_lineno (yyscan_t yyscanner); + +void GeoJsonset_lineno (int line_number, yyscan_t yyscanner); + +int GeoJsonget_column (yyscan_t yyscanner); + +void GeoJsonset_column (int column_no, yyscan_t yyscanner); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int GeoJsonwrap (yyscan_t yyscanner); +#else +extern int GeoJsonwrap (yyscan_t yyscanner); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *, yyconst char *, int, yyscan_t yyscanner); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char *, yyscan_t yyscanner); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (yyscan_t yyscanner); +#else +static int input (yyscan_t yyscanner); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + unsigned n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int GeoJsonlex (yyscan_t yyscanner); + +#define YY_DECL int GeoJsonlex (yyscan_t yyscanner) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!yyg->yy_init) + { + yyg->yy_init = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if (!yyg->yy_start) + yyg->yy_start = 1; /* first start state */ + + if (!yyin) + yyin = stdin; + + if (!yyout) + yyout = stdout; + + if (!YY_CURRENT_BUFFER) + { + GeoJsonensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + GeoJson_create_buffer (yyin, YY_BUF_SIZE, yyscanner); + } + + GeoJson_load_buffer_state (yyscanner); + } + + while (1) /* loops until end-of-file is reached */ + { + yy_cp = yyg->yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yyg->yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = yyg->yy_start; + yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI (*yy_cp)]; + if (yy_accept[yy_current_state]) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while (yy_chk[yy_base[yy_current_state] + yy_c] != + yy_current_state) + { + yy_current_state = (int) yy_def[yy_current_state]; + if (yy_current_state >= 182) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = + yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while (yy_base[yy_current_state] != 204); + + yy_find_action: + yy_act = yy_accept[yy_current_state]; + if (yy_act == 0) + { /* have to back up */ + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + + do_action: /* This label is used only to access EOF actions. */ + + switch (yy_act) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = yyg->yy_hold_char; + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + + case 1: + YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->geoJson_col += + (int) strlen (yytext); + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = + atof (yytext); + return GEOJSON_NUM; + } + YY_BREAK case 2:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->geoJson_col += + (int) strlen (yytext); + GeoJsonget_extra (yyscanner)->GeoJsonLval.ival = + atoi (yytext + 6); + return GEOJSON_SHORT_SRID; + } + YY_BREAK case 3:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->geoJson_col += + (int) strlen (yytext); + GeoJsonget_extra (yyscanner)->GeoJsonLval.ival = + atoi (yytext + 22); + return GEOJSON_LONG_SRID; + } + YY_BREAK case 4:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_COMMA; + } + YY_BREAK case 5:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_COLON; + } + YY_BREAK case 6:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_OPEN_BRACE; + } + YY_BREAK case 7:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_CLOSE_BRACE; + } + YY_BREAK case 8:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_OPEN_BRACKET; + } + YY_BREAK case 9:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_CLOSE_BRACKET; + } + YY_BREAK case 10:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_TYPE; + } + YY_BREAK case 11:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_COORDS; + } + YY_BREAK case 12:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_GEOMS; + } + YY_BREAK case 13:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_BBOX; + } + YY_BREAK case 14:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_NAME; + } + YY_BREAK case 15:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_PROPS; + } + YY_BREAK case 16:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_CRS; + } + YY_BREAK case 17:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_POINT; + } + YY_BREAK case 18:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_LINESTRING; + } + YY_BREAK case 19:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_POLYGON; + } + YY_BREAK case 20:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_MULTIPOINT; + } + YY_BREAK case 21:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_MULTILINESTRING; + } + YY_BREAK case 22:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_MULTIPOLYGON; + } + YY_BREAK case 23:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->GeoJsonLval.dval = 0; + return GEOJSON_GEOMETRYCOLLECTION; + } + YY_BREAK case 24:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->geoJson_col += + (int) strlen (yytext); + } /* ignore but count white space */ + YY_BREAK case 25: +/* rule 25 can match eol */ + YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->geoJson_col = 0; + GeoJsonget_extra (yyscanner)->geoJson_line++; + } + YY_BREAK case 26:YY_RULE_SETUP + { + GeoJsonget_extra (yyscanner)->geoJson_col += + (int) strlen (yytext); + return -1; + } + YY_BREAK case 27:YY_RULE_SETUP ECHO; + YY_BREAK case YY_STATE_EOF (INITIAL):yyterminate (); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = + (int) (yy_cp - yyg->yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yyg->yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == + YY_BUFFER_NEW) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * GeoJsonlex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yyg->yy_n_chars = + YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if (yyg->yy_c_buf_p <= + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state (yyscanner); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = + yy_try_NUL_trans (yy_current_state, yyscanner); + + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + + if (yy_next_state) + { + /* Consume the NUL. */ + yy_cp = ++yyg->yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yyg->yy_c_buf_p; + goto yy_find_action; + } + } + + else + switch (yy_get_next_buffer (yyscanner)) + { + case EOB_ACT_END_OF_FILE: + { + yyg->yy_did_buffer_switch_on_eof = 0; + + if (GeoJsonwrap (yyscanner)) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yyg->yy_c_buf_p = + yyg->yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF (YY_START); + goto do_action; + } + + else + { + if (!yyg->yy_did_buffer_switch_on_eof) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = + yy_get_previous_state (yyscanner); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yyg->yy_c_buf_p = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg-> + yy_n_chars]; + + yy_current_state = + yy_get_previous_state (yyscanner); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR + ("fatal flex scanner internal error--no action found"); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of GeoJsonlex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int +yy_get_next_buffer (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = yyg->yytext_ptr; + register int number_to_move, i; + int ret_val; + + if (yyg->yy_c_buf_p > + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1]) + YY_FATAL_ERROR + ("fatal flex scanner internal error--end of buffer missed"); + + if (YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0) + { /* Don't try to fill the buffer, so this is an EOF. */ + if (yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; + + for (i = 0; i < number_to_move; ++i) + *(dest++) = *(source++); + + if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while (num_to_read <= 0) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = (int) (yyg->yy_c_buf_p - b->yy_ch_buf); + + if (b->yy_is_our_buffer) + { + int new_size = b->yy_buf_size * 2; + + if (new_size <= 0) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + GeoJsonrealloc ((void *) b->yy_ch_buf, + b->yy_buf_size + 2, yyscanner); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if (!b->yy_ch_buf) + YY_FATAL_ERROR + ("fatal error - scanner input buffer overflow"); + + yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if (num_to_read > YY_READ_BUF_SIZE) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT ((&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + yyg->yy_n_chars, (size_t) num_to_read); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + if (yyg->yy_n_chars == 0) + { + if (number_to_move == YY_MORE_ADJ) + { + ret_val = EOB_ACT_END_OF_FILE; + GeoJsonrestart (yyin, yyscanner); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > + YY_CURRENT_BUFFER_LVALUE->yy_buf_size) + { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = + yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = + (char *) GeoJsonrealloc ((void *) + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, + new_size, yyscanner); + if (!YY_CURRENT_BUFFER_LVALUE->yy_ch_buf) + YY_FATAL_ERROR ("out of dynamic memory in yy_get_next_buffer()"); + } + + yyg->yy_n_chars += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = + YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = + YY_END_OF_BUFFER_CHAR; + + yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +static yy_state_type +yy_get_previous_state (yyscan_t yyscanner) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + yy_current_state = yyg->yy_start; + + for (yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; + ++yy_cp) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI (*yy_cp)] : 1); + if (yy_accept[yy_current_state]) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) + { + yy_current_state = (int) yy_def[yy_current_state]; + if (yy_current_state >= 182) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = + yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ +static yy_state_type +yy_try_NUL_trans (yy_state_type yy_current_state, yyscan_t yyscanner) +{ + register int yy_is_jam; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; /* This var may be unused depending upon options. */ + register char *yy_cp = yyg->yy_c_buf_p; + + register YY_CHAR yy_c = 1; + if (yy_accept[yy_current_state]) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) + { + yy_current_state = (int) yy_def[yy_current_state]; + if (yy_current_state >= 182) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 181); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int +yyinput (yyscan_t yyscanner) +#else +static int +input (yyscan_t yyscanner) +#endif +{ + int c; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + *yyg->yy_c_buf_p = yyg->yy_hold_char; + + if (*yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if (yyg->yy_c_buf_p < + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]) + /* This was really a NUL. */ + *yyg->yy_c_buf_p = '\0'; + + else + { /* need more input */ + int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + ++yyg->yy_c_buf_p; + + switch (yy_get_next_buffer (yyscanner)) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + GeoJsonrestart (yyin, yyscanner); + + /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: + { + if (GeoJsonwrap (yyscanner)) + return EOF; + + if (!yyg->yy_did_buffer_switch_on_eof) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput (yyscanner); +#else + return input (yyscanner); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = yyg->yytext_ptr + offset; + break; + } + } + } + + c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ + *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ + yyg->yy_hold_char = *++yyg->yy_c_buf_p; + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * @param yyscanner The scanner object. + * @note This function does not reset the start condition to @c INITIAL . + */ +void +GeoJsonrestart (FILE * input_file, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!YY_CURRENT_BUFFER) + { + GeoJsonensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + GeoJson_create_buffer (yyin, YY_BUF_SIZE, yyscanner); + } + + GeoJson_init_buffer (YY_CURRENT_BUFFER, input_file, yyscanner); + GeoJson_load_buffer_state (yyscanner); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * @param yyscanner The scanner object. + */ +void +GeoJson_switch_to_buffer (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* TODO. We should be able to replace this entire function body + * with + * GeoJsonpop_buffer_state(); + * GeoJsonpush_buffer_state(new_buffer); + */ + GeoJsonensure_buffer_stack (yyscanner); + if (YY_CURRENT_BUFFER == new_buffer) + return; + + if (YY_CURRENT_BUFFER) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + GeoJson_load_buffer_state (yyscanner); + + /* We don't actually know whether we did this switch during + * EOF (GeoJsonwrap()) processing, but the only time this flag + * is looked at is after GeoJsonwrap() is called, so it's safe + * to go ahead and always set it. + */ + yyg->yy_did_buffer_switch_on_eof = 1; +} + +static void +GeoJson_load_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + yyg->yy_hold_char = *yyg->yy_c_buf_p; +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * @param yyscanner The scanner object. + * @return the allocated buffer state. + */ +YY_BUFFER_STATE +GeoJson_create_buffer (FILE * file, int size, yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) GeoJsonalloc (sizeof (struct yy_buffer_state), + yyscanner); + if (!b) + YY_FATAL_ERROR ("out of dynamic memory in GeoJson_create_buffer()"); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) GeoJsonalloc (b->yy_buf_size + 2, yyscanner); + if (!b->yy_ch_buf) + YY_FATAL_ERROR ("out of dynamic memory in GeoJson_create_buffer()"); + + b->yy_is_our_buffer = 1; + + GeoJson_init_buffer (b, file, yyscanner); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with GeoJson_create_buffer() + * @param yyscanner The scanner object. + */ +void +GeoJson_delete_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!b) + return; + + if (b == YY_CURRENT_BUFFER) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if (b->yy_is_our_buffer) + GeoJsonfree ((void *) b->yy_ch_buf, yyscanner); + + GeoJsonfree ((void *) b, yyscanner); +} + +#ifndef __cplusplus +extern int isatty (int); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a GeoJsonrestart() or at EOF. + */ +static void +GeoJson_init_buffer (YY_BUFFER_STATE b, FILE * file, yyscan_t yyscanner) +{ + int oerrno = errno; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + GeoJson_flush_buffer (b, yyscanner); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then GeoJson_init_buffer was _probably_ + * called from GeoJsonrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER) + { + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty (fileno (file)) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * @param yyscanner The scanner object. + */ +void +GeoJson_flush_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + if (!b) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if (b == YY_CURRENT_BUFFER) + GeoJson_load_buffer_state (yyscanner); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * @param yyscanner The scanner object. + */ +void +GeoJsonpush_buffer_state (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + if (new_buffer == NULL) + return; + + GeoJsonensure_buffer_stack (yyscanner); + + /* This block is copied from GeoJson_switch_to_buffer. */ + if (YY_CURRENT_BUFFER) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + yyg->yy_buffer_stack_top++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from GeoJson_switch_to_buffer. */ + GeoJson_load_buffer_state (yyscanner); + yyg->yy_did_buffer_switch_on_eof = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * @param yyscanner The scanner object. + */ +void +GeoJsonpop_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + if (!YY_CURRENT_BUFFER) + return; + + GeoJson_delete_buffer (YY_CURRENT_BUFFER, yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + if (yyg->yy_buffer_stack_top > 0) + --yyg->yy_buffer_stack_top; + + if (YY_CURRENT_BUFFER) + { + GeoJson_load_buffer_state (yyscanner); + yyg->yy_did_buffer_switch_on_eof = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void +GeoJsonensure_buffer_stack (yyscan_t yyscanner) +{ + int num_to_alloc; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!yyg->yy_buffer_stack) + { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + yyg->yy_buffer_stack = (struct yy_buffer_state **) GeoJsonalloc + (num_to_alloc * sizeof (struct yy_buffer_state *), yyscanner); + if (!yyg->yy_buffer_stack) + YY_FATAL_ERROR + ("out of dynamic memory in GeoJsonensure_buffer_stack()"); + + memset (yyg->yy_buffer_stack, 0, + num_to_alloc * sizeof (struct yy_buffer_state *)); + + yyg->yy_buffer_stack_max = num_to_alloc; + yyg->yy_buffer_stack_top = 0; + return; + } + + if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1) + { + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */ ; + + num_to_alloc = yyg->yy_buffer_stack_max + grow_size; + yyg->yy_buffer_stack = (struct yy_buffer_state **) GeoJsonrealloc + (yyg->yy_buffer_stack, + num_to_alloc * sizeof (struct yy_buffer_state *), yyscanner); + if (!yyg->yy_buffer_stack) + YY_FATAL_ERROR + ("out of dynamic memory in GeoJsonensure_buffer_stack()"); + + /* zero only the new slots. */ + memset (yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, + grow_size * sizeof (struct yy_buffer_state *)); + yyg->yy_buffer_stack_max = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE +GeoJson_scan_buffer (char *base, yy_size_t size, yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + if (size < 2 || + base[size - 2] != YY_END_OF_BUFFER_CHAR || + base[size - 1] != YY_END_OF_BUFFER_CHAR) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) GeoJsonalloc (sizeof (struct yy_buffer_state), + yyscanner); + if (!b) + YY_FATAL_ERROR ("out of dynamic memory in GeoJson_scan_buffer()"); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + GeoJson_switch_to_buffer (b, yyscanner); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to GeoJsonlex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * GeoJson_scan_bytes() instead. + */ +YY_BUFFER_STATE +GeoJson_scan_string (yyconst char *yystr, yyscan_t yyscanner) +{ + + return GeoJson_scan_bytes (yystr, strlen (yystr), yyscanner); +} + +/** Setup the input buffer state to scan the given bytes. The next call to GeoJsonlex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE +GeoJson_scan_bytes (yyconst char *yybytes, int _yybytes_len, yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) GeoJsonalloc (n, yyscanner); + if (!buf) + YY_FATAL_ERROR ("out of dynamic memory in GeoJson_scan_bytes()"); + + for (i = 0; i < _yybytes_len; ++i) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len + 1] = YY_END_OF_BUFFER_CHAR; + + b = GeoJson_scan_buffer (buf, n, yyscanner); + if (!b) + YY_FATAL_ERROR ("bad buffer in GeoJson_scan_bytes()"); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void +yy_fatal_error (yyconst char *msg, yyscan_t yyscanner) +{ + (void) fprintf (stderr, "%s\n", msg); + exit (YY_EXIT_FAILURE); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = yyg->yy_hold_char; \ + yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ + yyg->yy_hold_char = *yyg->yy_c_buf_p; \ + *yyg->yy_c_buf_p = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the user-defined data for this scanner. + * @param yyscanner The scanner object. + */ +YY_EXTRA_TYPE +GeoJsonget_extra (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyextra; +} + +/** Get the current line number. + * @param yyscanner The scanner object. + */ +int +GeoJsonget_lineno (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!YY_CURRENT_BUFFER) + return 0; + + return yylineno; +} + +/** Get the current column number. + * @param yyscanner The scanner object. + */ +int +GeoJsonget_column (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!YY_CURRENT_BUFFER) + return 0; + + return yycolumn; +} + +/** Get the input stream. + * @param yyscanner The scanner object. + */ +FILE * +GeoJsonget_in (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyin; +} + +/** Get the output stream. + * @param yyscanner The scanner object. + */ +FILE * +GeoJsonget_out (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyout; +} + +/** Get the length of the current token. + * @param yyscanner The scanner object. + */ +int +GeoJsonget_leng (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyleng; +} + +/** Get the current token. + * @param yyscanner The scanner object. + */ + +char * +GeoJsonget_text (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yytext; +} + +/** Set the user-defined data. This data is never touched by the scanner. + * @param user_defined The data to be associated with this scanner. + * @param yyscanner The scanner object. + */ +void +GeoJsonset_extra (YY_EXTRA_TYPE user_defined, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyextra = user_defined; +} + +/** Set the current line number. + * @param line_number + * @param yyscanner The scanner object. + */ +void +GeoJsonset_lineno (int line_number, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* lineno is only valid if an input buffer exists. */ + if (!YY_CURRENT_BUFFER) + yy_fatal_error ("GeoJsonset_lineno called with no buffer", yyscanner); + + yylineno = line_number; +} + +/** Set the current column. + * @param line_number + * @param yyscanner The scanner object. + */ +void +GeoJsonset_column (int column_no, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* column is only valid if an input buffer exists. */ + if (!YY_CURRENT_BUFFER) + yy_fatal_error ("GeoJsonset_column called with no buffer", yyscanner); + + yycolumn = column_no; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * @param yyscanner The scanner object. + * @see GeoJson_switch_to_buffer + */ +void +GeoJsonset_in (FILE * in_str, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyin = in_str; +} + +void +GeoJsonset_out (FILE * out_str, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyout = out_str; +} + +int +GeoJsonget_debug (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yy_flex_debug; +} + +void +GeoJsonset_debug (int bdebug, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yy_flex_debug = bdebug; +} + +/* Accessor methods for yylval and yylloc */ + +/* User-visible API */ + +/* GeoJsonlex_init is special because it creates the scanner itself, so it is + * the ONLY reentrant function that doesn't take the scanner as the last argument. + * That's why we explicitly handle the declaration, instead of using our macros. + */ + +int +GeoJsonlex_init (yyscan_t * ptr_yy_globals) +{ + if (ptr_yy_globals == NULL) + { + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = (yyscan_t) GeoJsonalloc (sizeof (struct yyguts_t), NULL); + + if (*ptr_yy_globals == NULL) + { + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ + memset (*ptr_yy_globals, 0x00, sizeof (struct yyguts_t)); + + return yy_init_globals (*ptr_yy_globals); +} + +/* GeoJsonlex_init_extra has the same functionality as GeoJsonlex_init, but follows the + * convention of taking the scanner as the last argument. Note however, that + * this is a *pointer* to a scanner, as it will be allocated by this call (and + * is the reason, too, why this function also must handle its own declaration). + * The user defined value in the first argument will be available to GeoJsonalloc in + * the yyextra field. + */ + +int +GeoJsonlex_init_extra (YY_EXTRA_TYPE yy_user_defined, yyscan_t * ptr_yy_globals) +{ + struct yyguts_t dummy_yyguts; + + GeoJsonset_extra (yy_user_defined, &dummy_yyguts); + + if (ptr_yy_globals == NULL) + { + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = + (yyscan_t) GeoJsonalloc (sizeof (struct yyguts_t), &dummy_yyguts); + + if (*ptr_yy_globals == NULL) + { + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in + yy_init_globals. Leave at 0x00 for releases. */ + memset (*ptr_yy_globals, 0x00, sizeof (struct yyguts_t)); + + GeoJsonset_extra (yy_user_defined, *ptr_yy_globals); + + return yy_init_globals (*ptr_yy_globals); +} + +static int +yy_init_globals (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from GeoJsonlex_destroy(), so don't allocate here. + */ + + yyg->yy_buffer_stack = 0; + yyg->yy_buffer_stack_top = 0; + yyg->yy_buffer_stack_max = 0; + yyg->yy_c_buf_p = (char *) 0; + yyg->yy_init = 0; + yyg->yy_start = 0; + + yyg->yy_start_stack_ptr = 0; + yyg->yy_start_stack_depth = 0; + yyg->yy_start_stack = NULL; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * GeoJsonlex_init() + */ + return 0; +} + +/* GeoJsonlex_destroy is for both reentrant and non-reentrant scanners. */ +int +GeoJsonlex_destroy (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* Pop the buffer stack, destroying each element. */ + while (YY_CURRENT_BUFFER) + { + GeoJson_delete_buffer (YY_CURRENT_BUFFER, yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + GeoJsonpop_buffer_state (yyscanner); + } + + /* Destroy the stack itself. */ + GeoJsonfree (yyg->yy_buffer_stack, yyscanner); + yyg->yy_buffer_stack = NULL; + + /* Destroy the start condition stack. */ + GeoJsonfree (yyg->yy_start_stack, yyscanner); + yyg->yy_start_stack = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * GeoJsonlex() is called, initialization will occur. */ + yy_init_globals (yyscanner); + + /* Destroy the main struct (reentrant only). */ + GeoJsonfree (yyscanner, yyscanner); + yyscanner = NULL; + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void +yy_flex_strncpy (char *s1, yyconst char *s2, int n, yyscan_t yyscanner) +{ + register int i; + for (i = 0; i < n; ++i) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int +yy_flex_strlen (yyconst char *s, yyscan_t yyscanner) +{ + register int n; + for (n = 0; s[n]; ++n) + ; + + return n; +} +#endif + +void * +GeoJsonalloc (yy_size_t size, yyscan_t yyscanner) +{ + return (void *) malloc (size); +} + +void * +GeoJsonrealloc (void *ptr, yy_size_t size, yyscan_t yyscanner) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc ((char *) ptr, size); +} + +void +GeoJsonfree (void *ptr, yyscan_t yyscanner) +{ + free ((char *) ptr); /* see GeoJsonrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +int +GeoJsonwrap (yyscan_t yyscanner) +{ + return 1; +} diff --git a/src/spatialite/src/gaiageo/lex.Gml.c b/src/spatialite/src/gaiageo/lex.Gml.c new file mode 100644 index 0000000..281f673 --- /dev/null +++ b/src/spatialite/src/gaiageo/lex.Gml.c @@ -0,0 +1,2042 @@ + +#line 3 "lex.Gml.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include <stdio.h> +#include <string.h> +#include <errno.h> +#include <stdlib.h> + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include <inttypes.h> +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* An opaque pointer. */ +#ifndef YY_TYPEDEF_YY_SCANNER_T +#define YY_TYPEDEF_YY_SCANNER_T +typedef void *yyscan_t; +#endif + +/* For convenience, these vars (plus the bison vars far below) + are macros in the reentrant scanner. */ +#define yyin yyg->yyin_r +#define yyout yyg->yyout_r +#define yyextra yyg->yyextra_r +#define yyleng yyg->yyleng_r +#define yytext yyg->yytext_r +#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) +#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) +#define yy_flex_debug yyg->yy_flex_debug_r + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yyg->yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yyg->yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE Gmlrestart(yyin ,yyscanner ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + +#define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = yyg->yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state +{ + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via Gmlrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + +}; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ + ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] + +void Gmlrestart (FILE * input_file, yyscan_t yyscanner); +void Gml_switch_to_buffer (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); +YY_BUFFER_STATE Gml_create_buffer (FILE * file, int size, yyscan_t yyscanner); +void Gml_delete_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner); +void Gml_flush_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner); +void Gmlpush_buffer_state (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); +void Gmlpop_buffer_state (yyscan_t yyscanner); + +static void Gmlensure_buffer_stack (yyscan_t yyscanner); +static void Gml_load_buffer_state (yyscan_t yyscanner); +static void Gml_init_buffer (YY_BUFFER_STATE b, FILE * file, + yyscan_t yyscanner); + +#define YY_FLUSH_BUFFER Gml_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) + +YY_BUFFER_STATE Gml_scan_buffer (char *base, yy_size_t size, + yyscan_t yyscanner); +YY_BUFFER_STATE Gml_scan_string (yyconst char *yy_str, yyscan_t yyscanner); +YY_BUFFER_STATE Gml_scan_bytes (yyconst char *bytes, int len, + yyscan_t yyscanner); + +void *Gmlalloc (yy_size_t, yyscan_t yyscanner); +void *Gmlrealloc (void *, yy_size_t, yyscan_t yyscanner); +void Gmlfree (void *, yyscan_t yyscanner); + +#define yy_new_buffer Gml_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + Gmlensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + Gml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + Gmlensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + Gml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +typedef unsigned char YY_CHAR; + +typedef int yy_state_type; + +#define yytext_ptr yytext_r + +static yy_state_type yy_get_previous_state (yyscan_t yyscanner); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state, + yyscan_t yyscanner); +static int yy_get_next_buffer (yyscan_t yyscanner); +static void yy_fatal_error (yyconst char msg[], yyscan_t yyscanner); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + yyg->yytext_ptr = yy_bp; \ + yyleng = (size_t) (yy_cp - yy_bp); \ + yyg->yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yyg->yy_c_buf_p = yy_cp; + +#define YY_NUM_RULES 11 +#define YY_END_OF_BUFFER 12 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info +{ + flex_int32_t yy_verify; + flex_int32_t yy_nxt; +}; +static yyconst flex_int16_t yy_accept[19] = { 0, + 5, 5, 12, 10, 8, 9, 10, 5, 1, 3, + 2, 4, 7, 0, 6, 5, 7, 0 +}; + +static yyconst flex_int32_t yy_ec[256] = { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 4, 1, 1, 1, 1, 1, 1, + 1, 1, 5, 5, 5, 5, 6, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 8, 1, 9, + 10, 11, 1, 1, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 1, 1, 1, 1, 12, 1, 12, 12, 12, 12, + + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 +}; + +static yyconst flex_int32_t yy_meta[13] = { 0, + 1, 1, 1, 1, 2, 1, 3, 4, 5, 1, + 5, 4 +}; + +static yyconst flex_int16_t yy_base[22] = { 0, + 0, 0, 23, 24, 24, 24, 18, 0, 24, 24, + 24, 24, 0, 17, 24, 0, 0, 24, 12, 15, + 16 +}; + +static yyconst flex_int16_t yy_def[22] = { 0, + 18, 1, 18, 18, 18, 18, 19, 20, 18, 18, + 18, 18, 21, 19, 18, 20, 21, 0, 18, 18, + 18 +}; + +static yyconst flex_int16_t yy_nxt[37] = { 0, + 4, 5, 6, 7, 8, 9, 8, 4, 10, 11, + 12, 13, 14, 14, 14, 14, 16, 16, 17, 17, + 15, 15, 18, 3, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18 +}; + +static yyconst flex_int16_t yy_chk[37] = { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 19, 19, 19, 19, 20, 20, 21, 21, + 14, 7, 3, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18 +}; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +/* + gmlLexer.l -- GML parser - FLEX config + + version 2.4, 2011 June 3 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define YY_NO_INPUT 1 +/** +* The main string-token matcher. +* The lower case part is probably not needed. We should really be converting +* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. +* What Flex will do is, For the input string, beginning from the front, Flex +* will try to match with any of the defined tokens from below. Flex will +* then match the string of longest length. Suppose the string is: POINTM, +* Flex would match both POINT and POINTM, but since POINTM is the longer +* of the two tokens, FLEX will match POINTM. +*/ + +#define INITIAL 0 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include <unistd.h> +#endif + +#define YY_EXTRA_TYPE struct gml_data * + +/* Holds the entire state of the reentrant scanner. */ +struct yyguts_t +{ + + /* User-defined. Not touched by flex. */ + YY_EXTRA_TYPE yyextra_r; + + /* The rest are the same as the globals declared in the non-reentrant scanner. */ + FILE *yyin_r, *yyout_r; + size_t yy_buffer_stack_top; /**< index of top of stack. */ + size_t yy_buffer_stack_max; /**< capacity of stack. */ + YY_BUFFER_STATE *yy_buffer_stack; /**< Stack as an array. */ + char yy_hold_char; + int yy_n_chars; + int yyleng_r; + char *yy_c_buf_p; + int yy_init; + int yy_start; + int yy_did_buffer_switch_on_eof; + int yy_start_stack_ptr; + int yy_start_stack_depth; + int *yy_start_stack; + yy_state_type yy_last_accepting_state; + char *yy_last_accepting_cpos; + + int yylineno_r; + int yy_flex_debug_r; + + char *yytext_r; + int yy_more_flag; + int yy_more_len; + +}; /* end struct yyguts_t */ + +static int yy_init_globals (yyscan_t yyscanner); + +int Gmllex_init (yyscan_t * scanner); + +int Gmllex_init_extra (YY_EXTRA_TYPE user_defined, yyscan_t * scanner); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int Gmllex_destroy (yyscan_t yyscanner); + +int Gmlget_debug (yyscan_t yyscanner); + +void Gmlset_debug (int debug_flag, yyscan_t yyscanner); + +YY_EXTRA_TYPE Gmlget_extra (yyscan_t yyscanner); + +void Gmlset_extra (YY_EXTRA_TYPE user_defined, yyscan_t yyscanner); + +FILE *Gmlget_in (yyscan_t yyscanner); + +void Gmlset_in (FILE * in_str, yyscan_t yyscanner); + +FILE *Gmlget_out (yyscan_t yyscanner); + +void Gmlset_out (FILE * out_str, yyscan_t yyscanner); + +int Gmlget_leng (yyscan_t yyscanner); + +char *Gmlget_text (yyscan_t yyscanner); + +int Gmlget_lineno (yyscan_t yyscanner); + +void Gmlset_lineno (int line_number, yyscan_t yyscanner); + +int Gmlget_column (yyscan_t yyscanner); + +void Gmlset_column (int column_no, yyscan_t yyscanner); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int Gmlwrap (yyscan_t yyscanner); +#else +extern int Gmlwrap (yyscan_t yyscanner); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *, yyconst char *, int, yyscan_t yyscanner); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char *, yyscan_t yyscanner); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (yyscan_t yyscanner); +#else +static int input (yyscan_t yyscanner); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + unsigned n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int Gmllex (yyscan_t yyscanner); + +#define YY_DECL int Gmllex (yyscan_t yyscanner) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!yyg->yy_init) + { + yyg->yy_init = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if (!yyg->yy_start) + yyg->yy_start = 1; /* first start state */ + + if (!yyin) + yyin = stdin; + + if (!yyout) + yyout = stdout; + + if (!YY_CURRENT_BUFFER) + { + Gmlensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + Gml_create_buffer (yyin, YY_BUF_SIZE, yyscanner); + } + + Gml_load_buffer_state (yyscanner); + } + + while (1) /* loops until end-of-file is reached */ + { + yy_cp = yyg->yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yyg->yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = yyg->yy_start; + yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI (*yy_cp)]; + if (yy_accept[yy_current_state]) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while (yy_chk[yy_base[yy_current_state] + yy_c] != + yy_current_state) + { + yy_current_state = (int) yy_def[yy_current_state]; + if (yy_current_state >= 19) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = + yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while (yy_base[yy_current_state] != 24); + + yy_find_action: + yy_act = yy_accept[yy_current_state]; + if (yy_act == 0) + { /* have to back up */ + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + + do_action: /* This label is used only to access EOF actions. */ + + switch (yy_act) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = yyg->yy_hold_char; + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + + case 1: + YY_RULE_SETUP + { + gml_freeString (&(Gmlget_extra (yyscanner)->GmlLval.pval)); + return GML_END; + } + YY_BREAK case 2:YY_RULE_SETUP + { + gml_freeString (&(Gmlget_extra (yyscanner)->GmlLval.pval)); + return GML_EQ; + } + YY_BREAK case 3:YY_RULE_SETUP + { + gml_freeString (&(Gmlget_extra (yyscanner)->GmlLval.pval)); + return GML_OPEN; + } + YY_BREAK case 4:YY_RULE_SETUP + { + gml_freeString (&(Gmlget_extra (yyscanner)->GmlLval.pval)); + return GML_CLOSE; + } + YY_BREAK case 5:YY_RULE_SETUP + { + gml_saveString (&(Gmlget_extra (yyscanner)->GmlLval.pval), + yytext); + return GML_COORD; + } + YY_BREAK case 6: +/* rule 6 can match eol */ + YY_RULE_SETUP + { + gml_saveString (&(Gmlget_extra (yyscanner)->GmlLval.pval), + yytext); + return GML_VALUE; + } + YY_BREAK case 7:YY_RULE_SETUP + { + gml_saveString (&(Gmlget_extra (yyscanner)->GmlLval.pval), + yytext); + return GML_KEYWORD; + } + YY_BREAK case 8:YY_RULE_SETUP + { + gml_freeString (&(Gmlget_extra (yyscanner)->GmlLval.pval)); + Gmlget_extra (yyscanner)->gml_col += (int) strlen (yytext); + } /* ignore but count white space */ + YY_BREAK case 9: +/* rule 9 can match eol */ + YY_RULE_SETUP + { + gml_freeString (&(Gmlget_extra (yyscanner)->GmlLval.pval)); + Gmlget_extra (yyscanner)->gml_col = 0; + Gmlget_extra (yyscanner)->gml_line++; + } + YY_BREAK case 10:YY_RULE_SETUP + { + gml_freeString (&(Gmlget_extra (yyscanner)->GmlLval.pval)); + Gmlget_extra (yyscanner)->gml_col += (int) strlen (yytext); + return -1; + } + YY_BREAK case 11:YY_RULE_SETUP ECHO; + YY_BREAK case YY_STATE_EOF (INITIAL):yyterminate (); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = + (int) (yy_cp - yyg->yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yyg->yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == + YY_BUFFER_NEW) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * Gmllex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yyg->yy_n_chars = + YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if (yyg->yy_c_buf_p <= + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state (yyscanner); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = + yy_try_NUL_trans (yy_current_state, yyscanner); + + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + + if (yy_next_state) + { + /* Consume the NUL. */ + yy_cp = ++yyg->yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yyg->yy_c_buf_p; + goto yy_find_action; + } + } + + else + switch (yy_get_next_buffer (yyscanner)) + { + case EOB_ACT_END_OF_FILE: + { + yyg->yy_did_buffer_switch_on_eof = 0; + + if (Gmlwrap (yyscanner)) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yyg->yy_c_buf_p = + yyg->yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF (YY_START); + goto do_action; + } + + else + { + if (!yyg->yy_did_buffer_switch_on_eof) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = + yy_get_previous_state (yyscanner); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yyg->yy_c_buf_p = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg-> + yy_n_chars]; + + yy_current_state = + yy_get_previous_state (yyscanner); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR + ("fatal flex scanner internal error--no action found"); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of Gmllex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int +yy_get_next_buffer (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = yyg->yytext_ptr; + register int number_to_move, i; + int ret_val; + + if (yyg->yy_c_buf_p > + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1]) + YY_FATAL_ERROR + ("fatal flex scanner internal error--end of buffer missed"); + + if (YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0) + { /* Don't try to fill the buffer, so this is an EOF. */ + if (yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; + + for (i = 0; i < number_to_move; ++i) + *(dest++) = *(source++); + + if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while (num_to_read <= 0) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = (int) (yyg->yy_c_buf_p - b->yy_ch_buf); + + if (b->yy_is_our_buffer) + { + int new_size = b->yy_buf_size * 2; + + if (new_size <= 0) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + Gmlrealloc ((void *) b->yy_ch_buf, b->yy_buf_size + 2, + yyscanner); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if (!b->yy_ch_buf) + YY_FATAL_ERROR + ("fatal error - scanner input buffer overflow"); + + yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if (num_to_read > YY_READ_BUF_SIZE) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT ((&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + yyg->yy_n_chars, (size_t) num_to_read); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + if (yyg->yy_n_chars == 0) + { + if (number_to_move == YY_MORE_ADJ) + { + ret_val = EOB_ACT_END_OF_FILE; + Gmlrestart (yyin, yyscanner); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > + YY_CURRENT_BUFFER_LVALUE->yy_buf_size) + { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = + yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = + (char *) Gmlrealloc ((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, + new_size, yyscanner); + if (!YY_CURRENT_BUFFER_LVALUE->yy_ch_buf) + YY_FATAL_ERROR ("out of dynamic memory in yy_get_next_buffer()"); + } + + yyg->yy_n_chars += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = + YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = + YY_END_OF_BUFFER_CHAR; + + yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +static yy_state_type +yy_get_previous_state (yyscan_t yyscanner) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + yy_current_state = yyg->yy_start; + + for (yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; + ++yy_cp) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI (*yy_cp)] : 1); + if (yy_accept[yy_current_state]) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) + { + yy_current_state = (int) yy_def[yy_current_state]; + if (yy_current_state >= 19) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = + yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ +static yy_state_type +yy_try_NUL_trans (yy_state_type yy_current_state, yyscan_t yyscanner) +{ + register int yy_is_jam; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; /* This var may be unused depending upon options. */ + register char *yy_cp = yyg->yy_c_buf_p; + + register YY_CHAR yy_c = 1; + if (yy_accept[yy_current_state]) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) + { + yy_current_state = (int) yy_def[yy_current_state]; + if (yy_current_state >= 19) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 18); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int +yyinput (yyscan_t yyscanner) +#else +static int +input (yyscan_t yyscanner) +#endif +{ + int c; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + *yyg->yy_c_buf_p = yyg->yy_hold_char; + + if (*yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if (yyg->yy_c_buf_p < + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]) + /* This was really a NUL. */ + *yyg->yy_c_buf_p = '\0'; + + else + { /* need more input */ + int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + ++yyg->yy_c_buf_p; + + switch (yy_get_next_buffer (yyscanner)) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + Gmlrestart (yyin, yyscanner); + + /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: + { + if (Gmlwrap (yyscanner)) + return EOF; + + if (!yyg->yy_did_buffer_switch_on_eof) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput (yyscanner); +#else + return input (yyscanner); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = yyg->yytext_ptr + offset; + break; + } + } + } + + c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ + *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ + yyg->yy_hold_char = *++yyg->yy_c_buf_p; + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * @param yyscanner The scanner object. + * @note This function does not reset the start condition to @c INITIAL . + */ +void +Gmlrestart (FILE * input_file, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!YY_CURRENT_BUFFER) + { + Gmlensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + Gml_create_buffer (yyin, YY_BUF_SIZE, yyscanner); + } + + Gml_init_buffer (YY_CURRENT_BUFFER, input_file, yyscanner); + Gml_load_buffer_state (yyscanner); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * @param yyscanner The scanner object. + */ +void +Gml_switch_to_buffer (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* TODO. We should be able to replace this entire function body + * with + * Gmlpop_buffer_state(); + * Gmlpush_buffer_state(new_buffer); + */ + Gmlensure_buffer_stack (yyscanner); + if (YY_CURRENT_BUFFER == new_buffer) + return; + + if (YY_CURRENT_BUFFER) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + Gml_load_buffer_state (yyscanner); + + /* We don't actually know whether we did this switch during + * EOF (Gmlwrap()) processing, but the only time this flag + * is looked at is after Gmlwrap() is called, so it's safe + * to go ahead and always set it. + */ + yyg->yy_did_buffer_switch_on_eof = 1; +} + +static void +Gml_load_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + yyg->yy_hold_char = *yyg->yy_c_buf_p; +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * @param yyscanner The scanner object. + * @return the allocated buffer state. + */ +YY_BUFFER_STATE +Gml_create_buffer (FILE * file, int size, yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) Gmlalloc (sizeof (struct yy_buffer_state), yyscanner); + if (!b) + YY_FATAL_ERROR ("out of dynamic memory in Gml_create_buffer()"); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) Gmlalloc (b->yy_buf_size + 2, yyscanner); + if (!b->yy_ch_buf) + YY_FATAL_ERROR ("out of dynamic memory in Gml_create_buffer()"); + + b->yy_is_our_buffer = 1; + + Gml_init_buffer (b, file, yyscanner); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with Gml_create_buffer() + * @param yyscanner The scanner object. + */ +void +Gml_delete_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!b) + return; + + if (b == YY_CURRENT_BUFFER) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if (b->yy_is_our_buffer) + Gmlfree ((void *) b->yy_ch_buf, yyscanner); + + Gmlfree ((void *) b, yyscanner); +} + +#ifndef __cplusplus +extern int isatty (int); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a Gmlrestart() or at EOF. + */ +static void +Gml_init_buffer (YY_BUFFER_STATE b, FILE * file, yyscan_t yyscanner) +{ + int oerrno = errno; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + Gml_flush_buffer (b, yyscanner); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then Gml_init_buffer was _probably_ + * called from Gmlrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER) + { + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty (fileno (file)) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * @param yyscanner The scanner object. + */ +void +Gml_flush_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + if (!b) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if (b == YY_CURRENT_BUFFER) + Gml_load_buffer_state (yyscanner); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * @param yyscanner The scanner object. + */ +void +Gmlpush_buffer_state (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + if (new_buffer == NULL) + return; + + Gmlensure_buffer_stack (yyscanner); + + /* This block is copied from Gml_switch_to_buffer. */ + if (YY_CURRENT_BUFFER) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + yyg->yy_buffer_stack_top++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from Gml_switch_to_buffer. */ + Gml_load_buffer_state (yyscanner); + yyg->yy_did_buffer_switch_on_eof = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * @param yyscanner The scanner object. + */ +void +Gmlpop_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + if (!YY_CURRENT_BUFFER) + return; + + Gml_delete_buffer (YY_CURRENT_BUFFER, yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + if (yyg->yy_buffer_stack_top > 0) + --yyg->yy_buffer_stack_top; + + if (YY_CURRENT_BUFFER) + { + Gml_load_buffer_state (yyscanner); + yyg->yy_did_buffer_switch_on_eof = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void +Gmlensure_buffer_stack (yyscan_t yyscanner) +{ + int num_to_alloc; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!yyg->yy_buffer_stack) + { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + yyg->yy_buffer_stack = (struct yy_buffer_state **) Gmlalloc + (num_to_alloc * sizeof (struct yy_buffer_state *), yyscanner); + if (!yyg->yy_buffer_stack) + YY_FATAL_ERROR + ("out of dynamic memory in Gmlensure_buffer_stack()"); + + memset (yyg->yy_buffer_stack, 0, + num_to_alloc * sizeof (struct yy_buffer_state *)); + + yyg->yy_buffer_stack_max = num_to_alloc; + yyg->yy_buffer_stack_top = 0; + return; + } + + if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1) + { + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */ ; + + num_to_alloc = yyg->yy_buffer_stack_max + grow_size; + yyg->yy_buffer_stack = (struct yy_buffer_state **) Gmlrealloc + (yyg->yy_buffer_stack, + num_to_alloc * sizeof (struct yy_buffer_state *), yyscanner); + if (!yyg->yy_buffer_stack) + YY_FATAL_ERROR + ("out of dynamic memory in Gmlensure_buffer_stack()"); + + /* zero only the new slots. */ + memset (yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, + grow_size * sizeof (struct yy_buffer_state *)); + yyg->yy_buffer_stack_max = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE +Gml_scan_buffer (char *base, yy_size_t size, yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + if (size < 2 || + base[size - 2] != YY_END_OF_BUFFER_CHAR || + base[size - 1] != YY_END_OF_BUFFER_CHAR) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) Gmlalloc (sizeof (struct yy_buffer_state), yyscanner); + if (!b) + YY_FATAL_ERROR ("out of dynamic memory in Gml_scan_buffer()"); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + Gml_switch_to_buffer (b, yyscanner); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to Gmllex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * Gml_scan_bytes() instead. + */ +YY_BUFFER_STATE +Gml_scan_string (yyconst char *yystr, yyscan_t yyscanner) +{ + + return Gml_scan_bytes (yystr, strlen (yystr), yyscanner); +} + +/** Setup the input buffer state to scan the given bytes. The next call to Gmllex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE +Gml_scan_bytes (yyconst char *yybytes, int _yybytes_len, yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) Gmlalloc (n, yyscanner); + if (!buf) + YY_FATAL_ERROR ("out of dynamic memory in Gml_scan_bytes()"); + + for (i = 0; i < _yybytes_len; ++i) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len + 1] = YY_END_OF_BUFFER_CHAR; + + b = Gml_scan_buffer (buf, n, yyscanner); + if (!b) + YY_FATAL_ERROR ("bad buffer in Gml_scan_bytes()"); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void +yy_fatal_error (yyconst char *msg, yyscan_t yyscanner) +{ + (void) fprintf (stderr, "%s\n", msg); + exit (YY_EXIT_FAILURE); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = yyg->yy_hold_char; \ + yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ + yyg->yy_hold_char = *yyg->yy_c_buf_p; \ + *yyg->yy_c_buf_p = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the user-defined data for this scanner. + * @param yyscanner The scanner object. + */ +YY_EXTRA_TYPE +Gmlget_extra (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyextra; +} + +/** Get the current line number. + * @param yyscanner The scanner object. + */ +int +Gmlget_lineno (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!YY_CURRENT_BUFFER) + return 0; + + return yylineno; +} + +/** Get the current column number. + * @param yyscanner The scanner object. + */ +int +Gmlget_column (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!YY_CURRENT_BUFFER) + return 0; + + return yycolumn; +} + +/** Get the input stream. + * @param yyscanner The scanner object. + */ +FILE * +Gmlget_in (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyin; +} + +/** Get the output stream. + * @param yyscanner The scanner object. + */ +FILE * +Gmlget_out (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyout; +} + +/** Get the length of the current token. + * @param yyscanner The scanner object. + */ +int +Gmlget_leng (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyleng; +} + +/** Get the current token. + * @param yyscanner The scanner object. + */ + +char * +Gmlget_text (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yytext; +} + +/** Set the user-defined data. This data is never touched by the scanner. + * @param user_defined The data to be associated with this scanner. + * @param yyscanner The scanner object. + */ +void +Gmlset_extra (YY_EXTRA_TYPE user_defined, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyextra = user_defined; +} + +/** Set the current line number. + * @param line_number + * @param yyscanner The scanner object. + */ +void +Gmlset_lineno (int line_number, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* lineno is only valid if an input buffer exists. */ + if (!YY_CURRENT_BUFFER) + yy_fatal_error ("Gmlset_lineno called with no buffer", yyscanner); + + yylineno = line_number; +} + +/** Set the current column. + * @param line_number + * @param yyscanner The scanner object. + */ +void +Gmlset_column (int column_no, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* column is only valid if an input buffer exists. */ + if (!YY_CURRENT_BUFFER) + yy_fatal_error ("Gmlset_column called with no buffer", yyscanner); + + yycolumn = column_no; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * @param yyscanner The scanner object. + * @see Gml_switch_to_buffer + */ +void +Gmlset_in (FILE * in_str, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyin = in_str; +} + +void +Gmlset_out (FILE * out_str, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyout = out_str; +} + +int +Gmlget_debug (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yy_flex_debug; +} + +void +Gmlset_debug (int bdebug, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yy_flex_debug = bdebug; +} + +/* Accessor methods for yylval and yylloc */ + +/* User-visible API */ + +/* Gmllex_init is special because it creates the scanner itself, so it is + * the ONLY reentrant function that doesn't take the scanner as the last argument. + * That's why we explicitly handle the declaration, instead of using our macros. + */ + +int +Gmllex_init (yyscan_t * ptr_yy_globals) +{ + if (ptr_yy_globals == NULL) + { + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = (yyscan_t) Gmlalloc (sizeof (struct yyguts_t), NULL); + + if (*ptr_yy_globals == NULL) + { + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ + memset (*ptr_yy_globals, 0x00, sizeof (struct yyguts_t)); + + return yy_init_globals (*ptr_yy_globals); +} + +/* Gmllex_init_extra has the same functionality as Gmllex_init, but follows the + * convention of taking the scanner as the last argument. Note however, that + * this is a *pointer* to a scanner, as it will be allocated by this call (and + * is the reason, too, why this function also must handle its own declaration). + * The user defined value in the first argument will be available to Gmlalloc in + * the yyextra field. + */ + +int +Gmllex_init_extra (YY_EXTRA_TYPE yy_user_defined, yyscan_t * ptr_yy_globals) +{ + struct yyguts_t dummy_yyguts; + + Gmlset_extra (yy_user_defined, &dummy_yyguts); + + if (ptr_yy_globals == NULL) + { + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = + (yyscan_t) Gmlalloc (sizeof (struct yyguts_t), &dummy_yyguts); + + if (*ptr_yy_globals == NULL) + { + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in + yy_init_globals. Leave at 0x00 for releases. */ + memset (*ptr_yy_globals, 0x00, sizeof (struct yyguts_t)); + + Gmlset_extra (yy_user_defined, *ptr_yy_globals); + + return yy_init_globals (*ptr_yy_globals); +} + +static int +yy_init_globals (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from Gmllex_destroy(), so don't allocate here. + */ + + yyg->yy_buffer_stack = 0; + yyg->yy_buffer_stack_top = 0; + yyg->yy_buffer_stack_max = 0; + yyg->yy_c_buf_p = (char *) 0; + yyg->yy_init = 0; + yyg->yy_start = 0; + + yyg->yy_start_stack_ptr = 0; + yyg->yy_start_stack_depth = 0; + yyg->yy_start_stack = NULL; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * Gmllex_init() + */ + return 0; +} + +/* Gmllex_destroy is for both reentrant and non-reentrant scanners. */ +int +Gmllex_destroy (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* Pop the buffer stack, destroying each element. */ + while (YY_CURRENT_BUFFER) + { + Gml_delete_buffer (YY_CURRENT_BUFFER, yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + Gmlpop_buffer_state (yyscanner); + } + + /* Destroy the stack itself. */ + Gmlfree (yyg->yy_buffer_stack, yyscanner); + yyg->yy_buffer_stack = NULL; + + /* Destroy the start condition stack. */ + Gmlfree (yyg->yy_start_stack, yyscanner); + yyg->yy_start_stack = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * Gmllex() is called, initialization will occur. */ + yy_init_globals (yyscanner); + + /* Destroy the main struct (reentrant only). */ + Gmlfree (yyscanner, yyscanner); + yyscanner = NULL; + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void +yy_flex_strncpy (char *s1, yyconst char *s2, int n, yyscan_t yyscanner) +{ + register int i; + for (i = 0; i < n; ++i) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int +yy_flex_strlen (yyconst char *s, yyscan_t yyscanner) +{ + register int n; + for (n = 0; s[n]; ++n) + ; + + return n; +} +#endif + +void * +Gmlalloc (yy_size_t size, yyscan_t yyscanner) +{ + return (void *) malloc (size); +} + +void * +Gmlrealloc (void *ptr, yy_size_t size, yyscan_t yyscanner) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc ((char *) ptr, size); +} + +void +Gmlfree (void *ptr, yyscan_t yyscanner) +{ + free ((char *) ptr); /* see Gmlrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +int +Gmlwrap (yyscan_t yyscanner) +{ + return 1; +} diff --git a/src/spatialite/src/gaiageo/lex.Kml.c b/src/spatialite/src/gaiageo/lex.Kml.c new file mode 100644 index 0000000..48ab7ae --- /dev/null +++ b/src/spatialite/src/gaiageo/lex.Kml.c @@ -0,0 +1,2042 @@ + +#line 3 "lex.Kml.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include <stdio.h> +#include <string.h> +#include <errno.h> +#include <stdlib.h> + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include <inttypes.h> +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* An opaque pointer. */ +#ifndef YY_TYPEDEF_YY_SCANNER_T +#define YY_TYPEDEF_YY_SCANNER_T +typedef void *yyscan_t; +#endif + +/* For convenience, these vars (plus the bison vars far below) + are macros in the reentrant scanner. */ +#define yyin yyg->yyin_r +#define yyout yyg->yyout_r +#define yyextra yyg->yyextra_r +#define yyleng yyg->yyleng_r +#define yytext yyg->yytext_r +#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) +#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) +#define yy_flex_debug yyg->yy_flex_debug_r + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yyg->yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yyg->yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE Kmlrestart(yyin ,yyscanner ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + +#define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = yyg->yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state +{ + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via Kmlrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + +}; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ + ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] + +void Kmlrestart (FILE * input_file, yyscan_t yyscanner); +void Kml_switch_to_buffer (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); +YY_BUFFER_STATE Kml_create_buffer (FILE * file, int size, yyscan_t yyscanner); +void Kml_delete_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner); +void Kml_flush_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner); +void Kmlpush_buffer_state (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner); +void Kmlpop_buffer_state (yyscan_t yyscanner); + +static void Kmlensure_buffer_stack (yyscan_t yyscanner); +static void Kml_load_buffer_state (yyscan_t yyscanner); +static void Kml_init_buffer (YY_BUFFER_STATE b, FILE * file, + yyscan_t yyscanner); + +#define YY_FLUSH_BUFFER Kml_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) + +YY_BUFFER_STATE Kml_scan_buffer (char *base, yy_size_t size, + yyscan_t yyscanner); +YY_BUFFER_STATE Kml_scan_string (yyconst char *yy_str, yyscan_t yyscanner); +YY_BUFFER_STATE Kml_scan_bytes (yyconst char *bytes, int len, + yyscan_t yyscanner); + +void *Kmlalloc (yy_size_t, yyscan_t yyscanner); +void *Kmlrealloc (void *, yy_size_t, yyscan_t yyscanner); +void Kmlfree (void *, yyscan_t yyscanner); + +#define yy_new_buffer Kml_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + Kmlensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + Kml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + Kmlensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + Kml_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +typedef unsigned char YY_CHAR; + +typedef int yy_state_type; + +#define yytext_ptr yytext_r + +static yy_state_type yy_get_previous_state (yyscan_t yyscanner); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state, + yyscan_t yyscanner); +static int yy_get_next_buffer (yyscan_t yyscanner); +static void yy_fatal_error (yyconst char msg[], yyscan_t yyscanner); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + yyg->yytext_ptr = yy_bp; \ + yyleng = (size_t) (yy_cp - yy_bp); \ + yyg->yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yyg->yy_c_buf_p = yy_cp; + +#define YY_NUM_RULES 11 +#define YY_END_OF_BUFFER 12 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info +{ + flex_int32_t yy_verify; + flex_int32_t yy_nxt; +}; +static yyconst flex_int16_t yy_accept[19] = { 0, + 5, 5, 12, 10, 8, 9, 10, 5, 1, 3, + 2, 4, 7, 0, 6, 5, 7, 0 +}; + +static yyconst flex_int32_t yy_ec[256] = { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 4, 1, 1, 1, 1, 1, 1, + 1, 1, 5, 5, 5, 5, 6, 7, 7, 7, + 7, 7, 7, 7, 7, 7, 7, 8, 1, 9, + 10, 11, 1, 1, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 1, 1, 1, 1, 12, 1, 12, 12, 12, 12, + + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, + 12, 12, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 +}; + +static yyconst flex_int32_t yy_meta[13] = { 0, + 1, 1, 1, 1, 2, 1, 3, 4, 5, 1, + 5, 4 +}; + +static yyconst flex_int16_t yy_base[22] = { 0, + 0, 0, 23, 24, 24, 24, 18, 0, 24, 24, + 24, 24, 0, 17, 24, 0, 0, 24, 12, 15, + 16 +}; + +static yyconst flex_int16_t yy_def[22] = { 0, + 18, 1, 18, 18, 18, 18, 19, 20, 18, 18, + 18, 18, 21, 19, 18, 20, 21, 0, 18, 18, + 18 +}; + +static yyconst flex_int16_t yy_nxt[37] = { 0, + 4, 5, 6, 7, 8, 9, 8, 4, 10, 11, + 12, 13, 14, 14, 14, 14, 16, 16, 17, 17, + 15, 15, 18, 3, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18 +}; + +static yyconst flex_int16_t yy_chk[37] = { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 19, 19, 19, 19, 20, 20, 21, 21, + 14, 7, 3, 18, 18, 18, 18, 18, 18, 18, + 18, 18, 18, 18, 18, 18 +}; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +/* + kmlLexer.l -- KML parser - FLEX config + + version 2.4, 2011 June 14 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define YY_NO_INPUT 1 +/** +* The main string-token matcher. +* The lower case part is probably not needed. We should really be converting +* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. +* What Flex will do is, For the input string, beginning from the front, Flex +* will try to match with any of the defined tokens from below. Flex will +* then match the string of longest length. Suppose the string is: POINTM, +* Flex would match both POINT and POINTM, but since POINTM is the longer +* of the two tokens, FLEX will match POINTM. +*/ + +#define INITIAL 0 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include <unistd.h> +#endif + +#define YY_EXTRA_TYPE struct kml_data * + +/* Holds the entire state of the reentrant scanner. */ +struct yyguts_t +{ + + /* User-defined. Not touched by flex. */ + YY_EXTRA_TYPE yyextra_r; + + /* The rest are the same as the globals declared in the non-reentrant scanner. */ + FILE *yyin_r, *yyout_r; + size_t yy_buffer_stack_top; /**< index of top of stack. */ + size_t yy_buffer_stack_max; /**< capacity of stack. */ + YY_BUFFER_STATE *yy_buffer_stack; /**< Stack as an array. */ + char yy_hold_char; + int yy_n_chars; + int yyleng_r; + char *yy_c_buf_p; + int yy_init; + int yy_start; + int yy_did_buffer_switch_on_eof; + int yy_start_stack_ptr; + int yy_start_stack_depth; + int *yy_start_stack; + yy_state_type yy_last_accepting_state; + char *yy_last_accepting_cpos; + + int yylineno_r; + int yy_flex_debug_r; + + char *yytext_r; + int yy_more_flag; + int yy_more_len; + +}; /* end struct yyguts_t */ + +static int yy_init_globals (yyscan_t yyscanner); + +int Kmllex_init (yyscan_t * scanner); + +int Kmllex_init_extra (YY_EXTRA_TYPE user_defined, yyscan_t * scanner); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int Kmllex_destroy (yyscan_t yyscanner); + +int Kmlget_debug (yyscan_t yyscanner); + +void Kmlset_debug (int debug_flag, yyscan_t yyscanner); + +YY_EXTRA_TYPE Kmlget_extra (yyscan_t yyscanner); + +void Kmlset_extra (YY_EXTRA_TYPE user_defined, yyscan_t yyscanner); + +FILE *Kmlget_in (yyscan_t yyscanner); + +void Kmlset_in (FILE * in_str, yyscan_t yyscanner); + +FILE *Kmlget_out (yyscan_t yyscanner); + +void Kmlset_out (FILE * out_str, yyscan_t yyscanner); + +int Kmlget_leng (yyscan_t yyscanner); + +char *Kmlget_text (yyscan_t yyscanner); + +int Kmlget_lineno (yyscan_t yyscanner); + +void Kmlset_lineno (int line_number, yyscan_t yyscanner); + +int Kmlget_column (yyscan_t yyscanner); + +void Kmlset_column (int column_no, yyscan_t yyscanner); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int Kmlwrap (yyscan_t yyscanner); +#else +extern int Kmlwrap (yyscan_t yyscanner); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *, yyconst char *, int, yyscan_t yyscanner); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char *, yyscan_t yyscanner); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (yyscan_t yyscanner); +#else +static int input (yyscan_t yyscanner); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + unsigned n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int Kmllex (yyscan_t yyscanner); + +#define YY_DECL int Kmllex (yyscan_t yyscanner) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!yyg->yy_init) + { + yyg->yy_init = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if (!yyg->yy_start) + yyg->yy_start = 1; /* first start state */ + + if (!yyin) + yyin = stdin; + + if (!yyout) + yyout = stdout; + + if (!YY_CURRENT_BUFFER) + { + Kmlensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + Kml_create_buffer (yyin, YY_BUF_SIZE, yyscanner); + } + + Kml_load_buffer_state (yyscanner); + } + + while (1) /* loops until end-of-file is reached */ + { + yy_cp = yyg->yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yyg->yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = yyg->yy_start; + yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI (*yy_cp)]; + if (yy_accept[yy_current_state]) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while (yy_chk[yy_base[yy_current_state] + yy_c] != + yy_current_state) + { + yy_current_state = (int) yy_def[yy_current_state]; + if (yy_current_state >= 19) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = + yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while (yy_base[yy_current_state] != 24); + + yy_find_action: + yy_act = yy_accept[yy_current_state]; + if (yy_act == 0) + { /* have to back up */ + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + + do_action: /* This label is used only to access EOF actions. */ + + switch (yy_act) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = yyg->yy_hold_char; + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + + case 1: + YY_RULE_SETUP + { + kml_freeString (&(Kmlget_extra (yyscanner)->KmlLval.pval)); + return KML_END; + } + YY_BREAK case 2:YY_RULE_SETUP + { + kml_freeString (&(Kmlget_extra (yyscanner)->KmlLval.pval)); + return KML_EQ; + } + YY_BREAK case 3:YY_RULE_SETUP + { + kml_freeString (&(Kmlget_extra (yyscanner)->KmlLval.pval)); + return KML_OPEN; + } + YY_BREAK case 4:YY_RULE_SETUP + { + kml_freeString (&(Kmlget_extra (yyscanner)->KmlLval.pval)); + return KML_CLOSE; + } + YY_BREAK case 5:YY_RULE_SETUP + { + kml_saveString (&(Kmlget_extra (yyscanner)->KmlLval.pval), + yytext); + return KML_COORD; + } + YY_BREAK case 6: +/* rule 6 can match eol */ + YY_RULE_SETUP + { + kml_saveString (&(Kmlget_extra (yyscanner)->KmlLval.pval), + yytext); + return KML_VALUE; + } + YY_BREAK case 7:YY_RULE_SETUP + { + kml_saveString (&(Kmlget_extra (yyscanner)->KmlLval.pval), + yytext); + return KML_KEYWORD; + } + YY_BREAK case 8:YY_RULE_SETUP + { + kml_freeString (&(Kmlget_extra (yyscanner)->KmlLval.pval)); + Kmlget_extra (yyscanner)->kml_col += (int) strlen (yytext); + } /* ignore but count white space */ + YY_BREAK case 9: +/* rule 9 can match eol */ + YY_RULE_SETUP + { + kml_freeString (&(Kmlget_extra (yyscanner)->KmlLval.pval)); + Kmlget_extra (yyscanner)->kml_col = 0; + Kmlget_extra (yyscanner)->kml_line++; + } + YY_BREAK case 10:YY_RULE_SETUP + { + kml_freeString (&(Kmlget_extra (yyscanner)->KmlLval.pval)); + Kmlget_extra (yyscanner)->kml_col += (int) strlen (yytext); + return -1; + } + YY_BREAK case 11:YY_RULE_SETUP ECHO; + YY_BREAK case YY_STATE_EOF (INITIAL):yyterminate (); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = + (int) (yy_cp - yyg->yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yyg->yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == + YY_BUFFER_NEW) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * Kmllex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yyg->yy_n_chars = + YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if (yyg->yy_c_buf_p <= + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state (yyscanner); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = + yy_try_NUL_trans (yy_current_state, yyscanner); + + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + + if (yy_next_state) + { + /* Consume the NUL. */ + yy_cp = ++yyg->yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yyg->yy_c_buf_p; + goto yy_find_action; + } + } + + else + switch (yy_get_next_buffer (yyscanner)) + { + case EOB_ACT_END_OF_FILE: + { + yyg->yy_did_buffer_switch_on_eof = 0; + + if (Kmlwrap (yyscanner)) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yyg->yy_c_buf_p = + yyg->yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF (YY_START); + goto do_action; + } + + else + { + if (!yyg->yy_did_buffer_switch_on_eof) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = + yy_get_previous_state (yyscanner); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yyg->yy_c_buf_p = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg-> + yy_n_chars]; + + yy_current_state = + yy_get_previous_state (yyscanner); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR + ("fatal flex scanner internal error--no action found"); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of Kmllex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int +yy_get_next_buffer (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = yyg->yytext_ptr; + register int number_to_move, i; + int ret_val; + + if (yyg->yy_c_buf_p > + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1]) + YY_FATAL_ERROR + ("fatal flex scanner internal error--end of buffer missed"); + + if (YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0) + { /* Don't try to fill the buffer, so this is an EOF. */ + if (yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; + + for (i = 0; i < number_to_move; ++i) + *(dest++) = *(source++); + + if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while (num_to_read <= 0) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = (int) (yyg->yy_c_buf_p - b->yy_ch_buf); + + if (b->yy_is_our_buffer) + { + int new_size = b->yy_buf_size * 2; + + if (new_size <= 0) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + Kmlrealloc ((void *) b->yy_ch_buf, b->yy_buf_size + 2, + yyscanner); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if (!b->yy_ch_buf) + YY_FATAL_ERROR + ("fatal error - scanner input buffer overflow"); + + yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if (num_to_read > YY_READ_BUF_SIZE) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT ((&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + yyg->yy_n_chars, (size_t) num_to_read); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + if (yyg->yy_n_chars == 0) + { + if (number_to_move == YY_MORE_ADJ) + { + ret_val = EOB_ACT_END_OF_FILE; + Kmlrestart (yyin, yyscanner); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > + YY_CURRENT_BUFFER_LVALUE->yy_buf_size) + { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = + yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = + (char *) Kmlrealloc ((void *) YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, + new_size, yyscanner); + if (!YY_CURRENT_BUFFER_LVALUE->yy_ch_buf) + YY_FATAL_ERROR ("out of dynamic memory in yy_get_next_buffer()"); + } + + yyg->yy_n_chars += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = + YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = + YY_END_OF_BUFFER_CHAR; + + yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +static yy_state_type +yy_get_previous_state (yyscan_t yyscanner) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + yy_current_state = yyg->yy_start; + + for (yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; + ++yy_cp) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI (*yy_cp)] : 1); + if (yy_accept[yy_current_state]) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) + { + yy_current_state = (int) yy_def[yy_current_state]; + if (yy_current_state >= 19) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = + yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ +static yy_state_type +yy_try_NUL_trans (yy_state_type yy_current_state, yyscan_t yyscanner) +{ + register int yy_is_jam; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; /* This var may be unused depending upon options. */ + register char *yy_cp = yyg->yy_c_buf_p; + + register YY_CHAR yy_c = 1; + if (yy_accept[yy_current_state]) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) + { + yy_current_state = (int) yy_def[yy_current_state]; + if (yy_current_state >= 19) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 18); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int +yyinput (yyscan_t yyscanner) +#else +static int +input (yyscan_t yyscanner) +#endif +{ + int c; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + *yyg->yy_c_buf_p = yyg->yy_hold_char; + + if (*yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if (yyg->yy_c_buf_p < + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]) + /* This was really a NUL. */ + *yyg->yy_c_buf_p = '\0'; + + else + { /* need more input */ + int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + ++yyg->yy_c_buf_p; + + switch (yy_get_next_buffer (yyscanner)) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + Kmlrestart (yyin, yyscanner); + + /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: + { + if (Kmlwrap (yyscanner)) + return EOF; + + if (!yyg->yy_did_buffer_switch_on_eof) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput (yyscanner); +#else + return input (yyscanner); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = yyg->yytext_ptr + offset; + break; + } + } + } + + c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ + *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ + yyg->yy_hold_char = *++yyg->yy_c_buf_p; + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * @param yyscanner The scanner object. + * @note This function does not reset the start condition to @c INITIAL . + */ +void +Kmlrestart (FILE * input_file, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!YY_CURRENT_BUFFER) + { + Kmlensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + Kml_create_buffer (yyin, YY_BUF_SIZE, yyscanner); + } + + Kml_init_buffer (YY_CURRENT_BUFFER, input_file, yyscanner); + Kml_load_buffer_state (yyscanner); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * @param yyscanner The scanner object. + */ +void +Kml_switch_to_buffer (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* TODO. We should be able to replace this entire function body + * with + * Kmlpop_buffer_state(); + * Kmlpush_buffer_state(new_buffer); + */ + Kmlensure_buffer_stack (yyscanner); + if (YY_CURRENT_BUFFER == new_buffer) + return; + + if (YY_CURRENT_BUFFER) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + Kml_load_buffer_state (yyscanner); + + /* We don't actually know whether we did this switch during + * EOF (Kmlwrap()) processing, but the only time this flag + * is looked at is after Kmlwrap() is called, so it's safe + * to go ahead and always set it. + */ + yyg->yy_did_buffer_switch_on_eof = 1; +} + +static void +Kml_load_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + yyg->yy_hold_char = *yyg->yy_c_buf_p; +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * @param yyscanner The scanner object. + * @return the allocated buffer state. + */ +YY_BUFFER_STATE +Kml_create_buffer (FILE * file, int size, yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) Kmlalloc (sizeof (struct yy_buffer_state), yyscanner); + if (!b) + YY_FATAL_ERROR ("out of dynamic memory in Kml_create_buffer()"); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) Kmlalloc (b->yy_buf_size + 2, yyscanner); + if (!b->yy_ch_buf) + YY_FATAL_ERROR ("out of dynamic memory in Kml_create_buffer()"); + + b->yy_is_our_buffer = 1; + + Kml_init_buffer (b, file, yyscanner); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with Kml_create_buffer() + * @param yyscanner The scanner object. + */ +void +Kml_delete_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!b) + return; + + if (b == YY_CURRENT_BUFFER) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if (b->yy_is_our_buffer) + Kmlfree ((void *) b->yy_ch_buf, yyscanner); + + Kmlfree ((void *) b, yyscanner); +} + +#ifndef __cplusplus +extern int isatty (int); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a Kmlrestart() or at EOF. + */ +static void +Kml_init_buffer (YY_BUFFER_STATE b, FILE * file, yyscan_t yyscanner) +{ + int oerrno = errno; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + Kml_flush_buffer (b, yyscanner); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then Kml_init_buffer was _probably_ + * called from Kmlrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER) + { + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty (fileno (file)) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * @param yyscanner The scanner object. + */ +void +Kml_flush_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + if (!b) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if (b == YY_CURRENT_BUFFER) + Kml_load_buffer_state (yyscanner); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * @param yyscanner The scanner object. + */ +void +Kmlpush_buffer_state (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + if (new_buffer == NULL) + return; + + Kmlensure_buffer_stack (yyscanner); + + /* This block is copied from Kml_switch_to_buffer. */ + if (YY_CURRENT_BUFFER) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + yyg->yy_buffer_stack_top++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from Kml_switch_to_buffer. */ + Kml_load_buffer_state (yyscanner); + yyg->yy_did_buffer_switch_on_eof = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * @param yyscanner The scanner object. + */ +void +Kmlpop_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + if (!YY_CURRENT_BUFFER) + return; + + Kml_delete_buffer (YY_CURRENT_BUFFER, yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + if (yyg->yy_buffer_stack_top > 0) + --yyg->yy_buffer_stack_top; + + if (YY_CURRENT_BUFFER) + { + Kml_load_buffer_state (yyscanner); + yyg->yy_did_buffer_switch_on_eof = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void +Kmlensure_buffer_stack (yyscan_t yyscanner) +{ + int num_to_alloc; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!yyg->yy_buffer_stack) + { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + yyg->yy_buffer_stack = (struct yy_buffer_state **) Kmlalloc + (num_to_alloc * sizeof (struct yy_buffer_state *), yyscanner); + if (!yyg->yy_buffer_stack) + YY_FATAL_ERROR + ("out of dynamic memory in Kmlensure_buffer_stack()"); + + memset (yyg->yy_buffer_stack, 0, + num_to_alloc * sizeof (struct yy_buffer_state *)); + + yyg->yy_buffer_stack_max = num_to_alloc; + yyg->yy_buffer_stack_top = 0; + return; + } + + if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1) + { + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */ ; + + num_to_alloc = yyg->yy_buffer_stack_max + grow_size; + yyg->yy_buffer_stack = (struct yy_buffer_state **) Kmlrealloc + (yyg->yy_buffer_stack, + num_to_alloc * sizeof (struct yy_buffer_state *), yyscanner); + if (!yyg->yy_buffer_stack) + YY_FATAL_ERROR + ("out of dynamic memory in Kmlensure_buffer_stack()"); + + /* zero only the new slots. */ + memset (yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, + grow_size * sizeof (struct yy_buffer_state *)); + yyg->yy_buffer_stack_max = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE +Kml_scan_buffer (char *base, yy_size_t size, yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + if (size < 2 || + base[size - 2] != YY_END_OF_BUFFER_CHAR || + base[size - 1] != YY_END_OF_BUFFER_CHAR) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) Kmlalloc (sizeof (struct yy_buffer_state), yyscanner); + if (!b) + YY_FATAL_ERROR ("out of dynamic memory in Kml_scan_buffer()"); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + Kml_switch_to_buffer (b, yyscanner); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to Kmllex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * Kml_scan_bytes() instead. + */ +YY_BUFFER_STATE +Kml_scan_string (yyconst char *yystr, yyscan_t yyscanner) +{ + + return Kml_scan_bytes (yystr, strlen (yystr), yyscanner); +} + +/** Setup the input buffer state to scan the given bytes. The next call to Kmllex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE +Kml_scan_bytes (yyconst char *yybytes, int _yybytes_len, yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) Kmlalloc (n, yyscanner); + if (!buf) + YY_FATAL_ERROR ("out of dynamic memory in Kml_scan_bytes()"); + + for (i = 0; i < _yybytes_len; ++i) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len + 1] = YY_END_OF_BUFFER_CHAR; + + b = Kml_scan_buffer (buf, n, yyscanner); + if (!b) + YY_FATAL_ERROR ("bad buffer in Kml_scan_bytes()"); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void +yy_fatal_error (yyconst char *msg, yyscan_t yyscanner) +{ + (void) fprintf (stderr, "%s\n", msg); + exit (YY_EXIT_FAILURE); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = yyg->yy_hold_char; \ + yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ + yyg->yy_hold_char = *yyg->yy_c_buf_p; \ + *yyg->yy_c_buf_p = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the user-defined data for this scanner. + * @param yyscanner The scanner object. + */ +YY_EXTRA_TYPE +Kmlget_extra (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyextra; +} + +/** Get the current line number. + * @param yyscanner The scanner object. + */ +int +Kmlget_lineno (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!YY_CURRENT_BUFFER) + return 0; + + return yylineno; +} + +/** Get the current column number. + * @param yyscanner The scanner object. + */ +int +Kmlget_column (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!YY_CURRENT_BUFFER) + return 0; + + return yycolumn; +} + +/** Get the input stream. + * @param yyscanner The scanner object. + */ +FILE * +Kmlget_in (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyin; +} + +/** Get the output stream. + * @param yyscanner The scanner object. + */ +FILE * +Kmlget_out (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyout; +} + +/** Get the length of the current token. + * @param yyscanner The scanner object. + */ +int +Kmlget_leng (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyleng; +} + +/** Get the current token. + * @param yyscanner The scanner object. + */ + +char * +Kmlget_text (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yytext; +} + +/** Set the user-defined data. This data is never touched by the scanner. + * @param user_defined The data to be associated with this scanner. + * @param yyscanner The scanner object. + */ +void +Kmlset_extra (YY_EXTRA_TYPE user_defined, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyextra = user_defined; +} + +/** Set the current line number. + * @param line_number + * @param yyscanner The scanner object. + */ +void +Kmlset_lineno (int line_number, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* lineno is only valid if an input buffer exists. */ + if (!YY_CURRENT_BUFFER) + yy_fatal_error ("Kmlset_lineno called with no buffer", yyscanner); + + yylineno = line_number; +} + +/** Set the current column. + * @param line_number + * @param yyscanner The scanner object. + */ +void +Kmlset_column (int column_no, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* column is only valid if an input buffer exists. */ + if (!YY_CURRENT_BUFFER) + yy_fatal_error ("Kmlset_column called with no buffer", yyscanner); + + yycolumn = column_no; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * @param yyscanner The scanner object. + * @see Kml_switch_to_buffer + */ +void +Kmlset_in (FILE * in_str, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyin = in_str; +} + +void +Kmlset_out (FILE * out_str, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyout = out_str; +} + +int +Kmlget_debug (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yy_flex_debug; +} + +void +Kmlset_debug (int bdebug, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yy_flex_debug = bdebug; +} + +/* Accessor methods for yylval and yylloc */ + +/* User-visible API */ + +/* Kmllex_init is special because it creates the scanner itself, so it is + * the ONLY reentrant function that doesn't take the scanner as the last argument. + * That's why we explicitly handle the declaration, instead of using our macros. + */ + +int +Kmllex_init (yyscan_t * ptr_yy_globals) +{ + if (ptr_yy_globals == NULL) + { + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = (yyscan_t) Kmlalloc (sizeof (struct yyguts_t), NULL); + + if (*ptr_yy_globals == NULL) + { + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ + memset (*ptr_yy_globals, 0x00, sizeof (struct yyguts_t)); + + return yy_init_globals (*ptr_yy_globals); +} + +/* Kmllex_init_extra has the same functionality as Kmllex_init, but follows the + * convention of taking the scanner as the last argument. Note however, that + * this is a *pointer* to a scanner, as it will be allocated by this call (and + * is the reason, too, why this function also must handle its own declaration). + * The user defined value in the first argument will be available to Kmlalloc in + * the yyextra field. + */ + +int +Kmllex_init_extra (YY_EXTRA_TYPE yy_user_defined, yyscan_t * ptr_yy_globals) +{ + struct yyguts_t dummy_yyguts; + + Kmlset_extra (yy_user_defined, &dummy_yyguts); + + if (ptr_yy_globals == NULL) + { + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = + (yyscan_t) Kmlalloc (sizeof (struct yyguts_t), &dummy_yyguts); + + if (*ptr_yy_globals == NULL) + { + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in + yy_init_globals. Leave at 0x00 for releases. */ + memset (*ptr_yy_globals, 0x00, sizeof (struct yyguts_t)); + + Kmlset_extra (yy_user_defined, *ptr_yy_globals); + + return yy_init_globals (*ptr_yy_globals); +} + +static int +yy_init_globals (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from Kmllex_destroy(), so don't allocate here. + */ + + yyg->yy_buffer_stack = 0; + yyg->yy_buffer_stack_top = 0; + yyg->yy_buffer_stack_max = 0; + yyg->yy_c_buf_p = (char *) 0; + yyg->yy_init = 0; + yyg->yy_start = 0; + + yyg->yy_start_stack_ptr = 0; + yyg->yy_start_stack_depth = 0; + yyg->yy_start_stack = NULL; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * Kmllex_init() + */ + return 0; +} + +/* Kmllex_destroy is for both reentrant and non-reentrant scanners. */ +int +Kmllex_destroy (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* Pop the buffer stack, destroying each element. */ + while (YY_CURRENT_BUFFER) + { + Kml_delete_buffer (YY_CURRENT_BUFFER, yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + Kmlpop_buffer_state (yyscanner); + } + + /* Destroy the stack itself. */ + Kmlfree (yyg->yy_buffer_stack, yyscanner); + yyg->yy_buffer_stack = NULL; + + /* Destroy the start condition stack. */ + Kmlfree (yyg->yy_start_stack, yyscanner); + yyg->yy_start_stack = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * Kmllex() is called, initialization will occur. */ + yy_init_globals (yyscanner); + + /* Destroy the main struct (reentrant only). */ + Kmlfree (yyscanner, yyscanner); + yyscanner = NULL; + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void +yy_flex_strncpy (char *s1, yyconst char *s2, int n, yyscan_t yyscanner) +{ + register int i; + for (i = 0; i < n; ++i) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int +yy_flex_strlen (yyconst char *s, yyscan_t yyscanner) +{ + register int n; + for (n = 0; s[n]; ++n) + ; + + return n; +} +#endif + +void * +Kmlalloc (yy_size_t size, yyscan_t yyscanner) +{ + return (void *) malloc (size); +} + +void * +Kmlrealloc (void *ptr, yy_size_t size, yyscan_t yyscanner) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc ((char *) ptr, size); +} + +void +Kmlfree (void *ptr, yyscan_t yyscanner) +{ + free ((char *) ptr); /* see Kmlrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +int +Kmlwrap (yyscan_t yyscanner) +{ + return 1; +} diff --git a/src/spatialite/src/gaiageo/lex.VanuatuWkt.c b/src/spatialite/src/gaiageo/lex.VanuatuWkt.c new file mode 100644 index 0000000..b97e3ba --- /dev/null +++ b/src/spatialite/src/gaiageo/lex.VanuatuWkt.c @@ -0,0 +1,2348 @@ + +#line 3 "lex.VanuatuWkt.c" + +#define YY_INT_ALIGNED short int + +/* A lexical scanner generated by flex */ + +#define FLEX_SCANNER +#define YY_FLEX_MAJOR_VERSION 2 +#define YY_FLEX_MINOR_VERSION 5 +#define YY_FLEX_SUBMINOR_VERSION 35 +#if YY_FLEX_SUBMINOR_VERSION > 0 +#define FLEX_BETA +#endif + +/* First, we deal with platform-specific or compiler-specific issues. */ + +/* begin standard C headers. */ +#include <stdio.h> +#include <string.h> +#include <errno.h> +#include <stdlib.h> + +/* end standard C headers. */ + +/* flex integer type definitions */ + +#ifndef FLEXINT_H +#define FLEXINT_H + +/* C99 systems have <inttypes.h>. Non-C99 systems may or may not. */ + +#if defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L + +/* C99 says to define __STDC_LIMIT_MACROS before including stdint.h, + * if you want the limit (max/min) macros for int types. + */ +#ifndef __STDC_LIMIT_MACROS +#define __STDC_LIMIT_MACROS 1 +#endif + +#include <inttypes.h> +typedef int8_t flex_int8_t; +typedef uint8_t flex_uint8_t; +typedef int16_t flex_int16_t; +typedef uint16_t flex_uint16_t; +typedef int32_t flex_int32_t; +typedef uint32_t flex_uint32_t; +#else +typedef signed char flex_int8_t; +typedef short int flex_int16_t; +typedef int flex_int32_t; +typedef unsigned char flex_uint8_t; +typedef unsigned short int flex_uint16_t; +typedef unsigned int flex_uint32_t; +#endif /* ! C99 */ + +/* Limits of integral types. */ +#ifndef INT8_MIN +#define INT8_MIN (-128) +#endif +#ifndef INT16_MIN +#define INT16_MIN (-32767-1) +#endif +#ifndef INT32_MIN +#define INT32_MIN (-2147483647-1) +#endif +#ifndef INT8_MAX +#define INT8_MAX (127) +#endif +#ifndef INT16_MAX +#define INT16_MAX (32767) +#endif +#ifndef INT32_MAX +#define INT32_MAX (2147483647) +#endif +#ifndef UINT8_MAX +#define UINT8_MAX (255U) +#endif +#ifndef UINT16_MAX +#define UINT16_MAX (65535U) +#endif +#ifndef UINT32_MAX +#define UINT32_MAX (4294967295U) +#endif + +#endif /* ! FLEXINT_H */ + +#ifdef __cplusplus + +/* The "const" storage-class-modifier is valid. */ +#define YY_USE_CONST + +#else /* ! __cplusplus */ + +/* C99 requires __STDC__ to be defined as 1. */ +#if defined (__STDC__) + +#define YY_USE_CONST + +#endif /* defined (__STDC__) */ +#endif /* ! __cplusplus */ + +#ifdef YY_USE_CONST +#define yyconst const +#else +#define yyconst +#endif + +/* Returned upon end-of-file. */ +#define YY_NULL 0 + +/* Promotes a possibly negative, possibly signed char to an unsigned + * integer for use as an array index. If the signed char is negative, + * we want to instead treat it as an 8-bit unsigned char, hence the + * double cast. + */ +#define YY_SC_TO_UI(c) ((unsigned int) (unsigned char) c) + +/* An opaque pointer. */ +#ifndef YY_TYPEDEF_YY_SCANNER_T +#define YY_TYPEDEF_YY_SCANNER_T +typedef void *yyscan_t; +#endif + +/* For convenience, these vars (plus the bison vars far below) + are macros in the reentrant scanner. */ +#define yyin yyg->yyin_r +#define yyout yyg->yyout_r +#define yyextra yyg->yyextra_r +#define yyleng yyg->yyleng_r +#define yytext yyg->yytext_r +#define yylineno (YY_CURRENT_BUFFER_LVALUE->yy_bs_lineno) +#define yycolumn (YY_CURRENT_BUFFER_LVALUE->yy_bs_column) +#define yy_flex_debug yyg->yy_flex_debug_r + +/* Enter a start condition. This macro really ought to take a parameter, + * but we do it the disgusting crufty way forced on us by the ()-less + * definition of BEGIN. + */ +#define BEGIN yyg->yy_start = 1 + 2 * + +/* Translate the current start state into a value that can be later handed + * to BEGIN to return to the state. The YYSTATE alias is for lex + * compatibility. + */ +#define YY_START ((yyg->yy_start - 1) / 2) +#define YYSTATE YY_START + +/* Action number for EOF rule of a given start state. */ +#define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1) + +/* Special action meaning "start processing a new file". */ +#define YY_NEW_FILE VanuatuWktrestart(yyin ,yyscanner ) + +#define YY_END_OF_BUFFER_CHAR 0 + +/* Size of default input buffer. */ +#ifndef YY_BUF_SIZE +#define YY_BUF_SIZE 16384 +#endif + +/* The state buf must be large enough to hold one state per character in the main buffer. + */ +#define YY_STATE_BUF_SIZE ((YY_BUF_SIZE + 2) * sizeof(yy_state_type)) + +#ifndef YY_TYPEDEF_YY_BUFFER_STATE +#define YY_TYPEDEF_YY_BUFFER_STATE +typedef struct yy_buffer_state *YY_BUFFER_STATE; +#endif + +#define EOB_ACT_CONTINUE_SCAN 0 +#define EOB_ACT_END_OF_FILE 1 +#define EOB_ACT_LAST_MATCH 2 + +#define YY_LESS_LINENO(n) + +/* Return all but the first "n" matched characters back to the input stream. */ +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + *yy_cp = yyg->yy_hold_char; \ + YY_RESTORE_YY_MORE_OFFSET \ + yyg->yy_c_buf_p = yy_cp = yy_bp + yyless_macro_arg - YY_MORE_ADJ; \ + YY_DO_BEFORE_ACTION; /* set up yytext again */ \ + } \ + while ( 0 ) + +#define unput(c) yyunput( c, yyg->yytext_ptr , yyscanner ) + +#ifndef YY_TYPEDEF_YY_SIZE_T +#define YY_TYPEDEF_YY_SIZE_T +typedef size_t yy_size_t; +#endif + +#ifndef YY_STRUCT_YY_BUFFER_STATE +#define YY_STRUCT_YY_BUFFER_STATE +struct yy_buffer_state +{ + FILE *yy_input_file; + + char *yy_ch_buf; /* input buffer */ + char *yy_buf_pos; /* current position in input buffer */ + + /* Size of input buffer in bytes, not including room for EOB + * characters. + */ + yy_size_t yy_buf_size; + + /* Number of characters read into yy_ch_buf, not including EOB + * characters. + */ + int yy_n_chars; + + /* Whether we "own" the buffer - i.e., we know we created it, + * and can realloc() it to grow it, and should free() it to + * delete it. + */ + int yy_is_our_buffer; + + /* Whether this is an "interactive" input source; if so, and + * if we're using stdio for input, then we want to use getc() + * instead of fread(), to make sure we stop fetching input after + * each newline. + */ + int yy_is_interactive; + + /* Whether we're considered to be at the beginning of a line. + * If so, '^' rules will be active on the next match, otherwise + * not. + */ + int yy_at_bol; + + int yy_bs_lineno; /**< The line count. */ + int yy_bs_column; /**< The column count. */ + + /* Whether to try to fill the input buffer when we reach the + * end of it. + */ + int yy_fill_buffer; + + int yy_buffer_status; + +#define YY_BUFFER_NEW 0 +#define YY_BUFFER_NORMAL 1 + /* When an EOF's been seen but there's still some text to process + * then we mark the buffer as YY_EOF_PENDING, to indicate that we + * shouldn't try reading from the input source any more. We might + * still have a bunch of tokens to match, though, because of + * possible backing-up. + * + * When we actually see the EOF, we change the status to "new" + * (via VanuatuWktrestart()), so that the user can continue scanning by + * just pointing yyin at a new input file. + */ +#define YY_BUFFER_EOF_PENDING 2 + +}; +#endif /* !YY_STRUCT_YY_BUFFER_STATE */ + +/* We provide macros for accessing buffer states in case in the + * future we want to put the buffer states in a more general + * "scanner state". + * + * Returns the top of the stack, or NULL. + */ +#define YY_CURRENT_BUFFER ( yyg->yy_buffer_stack \ + ? yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] \ + : NULL) + +/* Same as previous macro, but useful when we know that the buffer stack is not + * NULL or when we need an lvalue. For internal use only. + */ +#define YY_CURRENT_BUFFER_LVALUE yyg->yy_buffer_stack[yyg->yy_buffer_stack_top] + +void VanuatuWktrestart (FILE * input_file, yyscan_t yyscanner); +void VanuatuWkt_switch_to_buffer (YY_BUFFER_STATE new_buffer, + yyscan_t yyscanner); +YY_BUFFER_STATE VanuatuWkt_create_buffer (FILE * file, int size, + yyscan_t yyscanner); +void VanuatuWkt_delete_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner); +void VanuatuWkt_flush_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner); +void VanuatuWktpush_buffer_state (YY_BUFFER_STATE new_buffer, + yyscan_t yyscanner); +void VanuatuWktpop_buffer_state (yyscan_t yyscanner); + +static void VanuatuWktensure_buffer_stack (yyscan_t yyscanner); +static void VanuatuWkt_load_buffer_state (yyscan_t yyscanner); +static void VanuatuWkt_init_buffer (YY_BUFFER_STATE b, FILE * file, + yyscan_t yyscanner); + +#define YY_FLUSH_BUFFER VanuatuWkt_flush_buffer(YY_CURRENT_BUFFER ,yyscanner) + +YY_BUFFER_STATE VanuatuWkt_scan_buffer (char *base, yy_size_t size, + yyscan_t yyscanner); +YY_BUFFER_STATE VanuatuWkt_scan_string (yyconst char *yy_str, + yyscan_t yyscanner); +YY_BUFFER_STATE VanuatuWkt_scan_bytes (yyconst char *bytes, int len, + yyscan_t yyscanner); + +void *VanuatuWktalloc (yy_size_t, yyscan_t yyscanner); +void *VanuatuWktrealloc (void *, yy_size_t, yyscan_t yyscanner); +void VanuatuWktfree (void *, yyscan_t yyscanner); + +#define yy_new_buffer VanuatuWkt_create_buffer + +#define yy_set_interactive(is_interactive) \ + { \ + if ( ! YY_CURRENT_BUFFER ){ \ + VanuatuWktensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + VanuatuWkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_is_interactive = is_interactive; \ + } + +#define yy_set_bol(at_bol) \ + { \ + if ( ! YY_CURRENT_BUFFER ){\ + VanuatuWktensure_buffer_stack (yyscanner); \ + YY_CURRENT_BUFFER_LVALUE = \ + VanuatuWkt_create_buffer(yyin,YY_BUF_SIZE ,yyscanner); \ + } \ + YY_CURRENT_BUFFER_LVALUE->yy_at_bol = at_bol; \ + } + +#define YY_AT_BOL() (YY_CURRENT_BUFFER_LVALUE->yy_at_bol) + +/* Begin user sect3 */ + +typedef unsigned char YY_CHAR; + +typedef int yy_state_type; + +#define yytext_ptr yytext_r + +static yy_state_type yy_get_previous_state (yyscan_t yyscanner); +static yy_state_type yy_try_NUL_trans (yy_state_type current_state, + yyscan_t yyscanner); +static int yy_get_next_buffer (yyscan_t yyscanner); +static void yy_fatal_error (yyconst char msg[], yyscan_t yyscanner); + +/* Done after the current pattern has been matched and before the + * corresponding action - sets up yytext. + */ +#define YY_DO_BEFORE_ACTION \ + yyg->yytext_ptr = yy_bp; \ + yyleng = (size_t) (yy_cp - yy_bp); \ + yyg->yy_hold_char = *yy_cp; \ + *yy_cp = '\0'; \ + yyg->yy_c_buf_p = yy_cp; + +#define YY_NUM_RULES 36 +#define YY_END_OF_BUFFER 37 +/* This struct is not used in this scanner, + but its presence is necessary. */ +struct yy_trans_info +{ + flex_int32_t yy_verify; + flex_int32_t yy_nxt; +}; +static yyconst flex_int16_t yy_accept[114] = { 0, + 0, 0, 37, 35, 33, 34, 3, 4, 35, 2, + 35, 1, 35, 35, 35, 35, 1, 1, 1, 1, + 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, + 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, + 0, 0, 5, 0, 0, 0, 0, 0, 0, 7, + 6, 0, 0, 0, 0, 0, 8, 13, 0, 0, + 0, 0, 0, 0, 15, 14, 0, 0, 0, 0, + 0, 16, 0, 9, 0, 17, 0, 0, 0, 11, + 10, 0, 0, 19, 18, 0, 0, 12, 0, 20, + 25, 0, 0, 0, 27, 26, 0, 0, 28, 0, + + 21, 0, 0, 23, 22, 0, 24, 29, 0, 31, + 30, 32, 0 +}; + +static yyconst flex_int32_t yy_ec[256] = { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 2, 1, 1, 1, 1, 1, 1, 1, 4, + 5, 1, 6, 7, 8, 9, 1, 10, 10, 10, + 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 11, 1, 12, 1, + 13, 1, 14, 1, 1, 15, 16, 17, 18, 19, + 1, 20, 21, 22, 23, 1, 1, 1, 24, 25, + 1, 1, 1, 1, 1, 1, 1, 1, 26, 1, + + 27, 1, 28, 1, 29, 1, 1, 30, 31, 32, + 33, 34, 1, 35, 36, 37, 38, 1, 1, 1, + 39, 40, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1 +}; + +static yyconst flex_int32_t yy_meta[41] = { 0, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 +}; + +static yyconst flex_int16_t yy_base[115] = { 0, + 0, 33, 211, 255, 255, 255, 255, 255, 192, 255, + 191, 2, 2, 3, 4, 0, 11, 13, 185, 15, + 26, 28, 32, 36, 162, 161, 154, 37, 42, 33, + 39, 33, 71, 16, 46, 53, 61, 54, 64, 56, + 57, 65, 80, 67, 66, 67, 74, 79, 0, 255, + 82, 87, 82, 93, 91, 95, 255, 112, 105, 100, + 106, 109, 103, 0, 255, 113, 112, 121, 114, 114, + 125, 255, 124, 144, 118, 154, 130, 143, 0, 255, + 143, 141, 0, 255, 146, 148, 154, 255, 153, 255, + 184, 157, 161, 0, 255, 172, 167, 177, 255, 177, + + 194, 174, 0, 255, 182, 182, 255, 214, 0, 255, + 192, 255, 255, 0 +}; + +static yyconst flex_int16_t yy_def[115] = { 0, + 114, 114, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 43, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 58, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 74, 113, + 113, 113, 76, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 91, 113, 113, 113, 113, 113, 113, + + 113, 113, 101, 113, 113, 113, 113, 113, 108, 113, + 113, 113, 0, 113 +}; + +static yyconst flex_int16_t yy_nxt[296] = { 0, + 4, 5, 6, 7, 8, 9, 10, 11, 113, 12, + 19, 20, 13, 21, 14, 15, 22, 24, 16, 25, + 17, 26, 18, 19, 20, 34, 23, 13, 21, 14, + 15, 22, 24, 16, 5, 6, 7, 8, 9, 10, + 11, 23, 12, 28, 29, 13, 30, 14, 15, 31, + 32, 16, 35, 36, 37, 38, 39, 40, 28, 29, + 13, 30, 14, 15, 31, 32, 16, 35, 36, 37, + 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, + 33, 49, 49, 48, 52, 53, 54, 55, 41, 42, + 43, 44, 45, 46, 47, 50, 56, 57, 48, 52, + + 53, 54, 55, 58, 51, 59, 60, 61, 62, 63, + 50, 56, 57, 64, 64, 67, 68, 69, 58, 51, + 59, 60, 61, 62, 63, 70, 71, 65, 72, 73, + 67, 68, 69, 74, 75, 76, 66, 77, 78, 82, + 70, 71, 65, 72, 73, 79, 79, 86, 74, 75, + 76, 66, 77, 78, 82, 83, 83, 87, 88, 80, + 89, 90, 86, 27, 91, 92, 93, 97, 81, 84, + 34, 33, 87, 88, 80, 89, 90, 98, 85, 91, + 92, 93, 97, 81, 84, 94, 94, 99, 100, 101, + 102, 106, 98, 85, 27, 103, 103, 107, 108, 95, + + 18, 17, 99, 100, 101, 102, 106, 112, 96, 104, + 113, 113, 107, 108, 95, 109, 109, 113, 105, 113, + 113, 113, 112, 96, 104, 113, 113, 113, 113, 110, + 113, 113, 113, 105, 113, 113, 113, 113, 111, 113, + 113, 113, 113, 113, 110, 113, 113, 113, 113, 113, + 113, 113, 113, 111, 3, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113 +}; + +static yyconst flex_int16_t yy_chk[296] = { 0, + 114, 1, 1, 1, 1, 1, 1, 1, 0, 1, + 12, 12, 1, 13, 1, 1, 14, 16, 1, 17, + 17, 18, 18, 20, 20, 34, 15, 1, 13, 1, + 1, 14, 16, 1, 2, 2, 2, 2, 2, 2, + 2, 15, 2, 21, 22, 2, 23, 2, 2, 24, + 24, 2, 28, 29, 30, 31, 32, 35, 21, 22, + 2, 23, 2, 2, 24, 24, 2, 28, 29, 30, + 31, 32, 35, 36, 37, 38, 39, 40, 41, 42, + 33, 43, 43, 42, 44, 45, 46, 47, 36, 37, + 38, 39, 40, 41, 42, 43, 48, 51, 42, 44, + + 45, 46, 47, 52, 43, 53, 54, 55, 56, 56, + 43, 48, 51, 58, 58, 59, 60, 61, 52, 43, + 53, 54, 55, 56, 56, 62, 63, 58, 66, 67, + 59, 60, 61, 68, 69, 70, 58, 71, 73, 75, + 62, 63, 58, 66, 67, 74, 74, 77, 68, 69, + 70, 58, 71, 73, 75, 76, 76, 78, 81, 74, + 82, 85, 77, 27, 86, 87, 89, 92, 74, 76, + 26, 25, 78, 81, 74, 82, 85, 93, 76, 86, + 87, 89, 92, 74, 76, 91, 91, 96, 97, 98, + 100, 102, 93, 76, 19, 101, 101, 105, 106, 91, + + 11, 9, 96, 97, 98, 100, 102, 111, 91, 101, + 3, 0, 105, 106, 91, 108, 108, 0, 101, 0, + 0, 0, 111, 91, 101, 0, 0, 0, 0, 108, + 0, 0, 0, 101, 0, 0, 0, 0, 108, 0, + 0, 0, 0, 0, 108, 0, 0, 0, 0, 0, + 0, 0, 0, 108, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113, 113, 113, 113, 113, 113, + 113, 113, 113, 113, 113 +}; + +/* The intent behind this definition is that it'll catch + * any uses of REJECT which flex missed. + */ +#define REJECT reject_used_but_not_detected +#define yymore() yymore_used_but_not_detected +#define YY_MORE_ADJ 0 +#define YY_RESTORE_YY_MORE_OFFSET +/* + vanuatuLexer.l -- Vanuatu WKT parser - FLEX config + + version 2.4, 2010 April 2 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): +The Vanuatu Team - University of Toronto + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +/****************************************************************************** +** The following code was created by Team Vanuatu of The University of Toronto. + +Authors: +Ruppi Rana ruppi.rana@gmail.com +Dev Tanna dev.tanna@gmail.com +Elias Adum elias.adum@gmail.com +Benton Hui benton.hui@gmail.com +Abhayan Sundararajan abhayan@gmail.com +Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com +Nikola Banovic nikola.banovic@gmail.com +Yong Jian yong.jian@utoronto.ca + +Supervisor: +Greg Wilson gvwilson@cs.toronto.ca + +------------------------------------------------------------------------------- +*/ +#define YY_NO_INPUT 1 +/** +* The main string-token matcher. +* The lower case part is probably not needed. We should really be converting +* The string to all uppercase/lowercase to make it case iNsEnSiTiVe. +* What Flex will do is, For the input string, beginning from the front, Flex +* will try to match with any of the defined tokens from below. Flex will +* then match the string of longest length. Suppose the string is: POINT ZM, +* Flex would match both POINT Z and POINT ZM, but since POINT ZM is the longer +* of the two tokens, FLEX will match POINT ZM. +*/ + +#define INITIAL 0 + +#ifndef YY_NO_UNISTD_H +/* Special case for "unistd.h", since it is non-ANSI. We include it way + * down here because we want the user's section 1 to have been scanned first. + * The user has a chance to override it with an option. + */ +#include <unistd.h> +#endif + +#define YY_EXTRA_TYPE struct vanuatu_data * + +/* Holds the entire state of the reentrant scanner. */ +struct yyguts_t +{ + + /* User-defined. Not touched by flex. */ + YY_EXTRA_TYPE yyextra_r; + + /* The rest are the same as the globals declared in the non-reentrant scanner. */ + FILE *yyin_r, *yyout_r; + size_t yy_buffer_stack_top; /**< index of top of stack. */ + size_t yy_buffer_stack_max; /**< capacity of stack. */ + YY_BUFFER_STATE *yy_buffer_stack; /**< Stack as an array. */ + char yy_hold_char; + int yy_n_chars; + int yyleng_r; + char *yy_c_buf_p; + int yy_init; + int yy_start; + int yy_did_buffer_switch_on_eof; + int yy_start_stack_ptr; + int yy_start_stack_depth; + int *yy_start_stack; + yy_state_type yy_last_accepting_state; + char *yy_last_accepting_cpos; + + int yylineno_r; + int yy_flex_debug_r; + + char *yytext_r; + int yy_more_flag; + int yy_more_len; + +}; /* end struct yyguts_t */ + +static int yy_init_globals (yyscan_t yyscanner); + +int VanuatuWktlex_init (yyscan_t * scanner); + +int VanuatuWktlex_init_extra (YY_EXTRA_TYPE user_defined, yyscan_t * scanner); + +/* Accessor methods to globals. + These are made visible to non-reentrant scanners for convenience. */ + +int VanuatuWktlex_destroy (yyscan_t yyscanner); + +int VanuatuWktget_debug (yyscan_t yyscanner); + +void VanuatuWktset_debug (int debug_flag, yyscan_t yyscanner); + +YY_EXTRA_TYPE VanuatuWktget_extra (yyscan_t yyscanner); + +void VanuatuWktset_extra (YY_EXTRA_TYPE user_defined, yyscan_t yyscanner); + +FILE *VanuatuWktget_in (yyscan_t yyscanner); + +void VanuatuWktset_in (FILE * in_str, yyscan_t yyscanner); + +FILE *VanuatuWktget_out (yyscan_t yyscanner); + +void VanuatuWktset_out (FILE * out_str, yyscan_t yyscanner); + +int VanuatuWktget_leng (yyscan_t yyscanner); + +char *VanuatuWktget_text (yyscan_t yyscanner); + +int VanuatuWktget_lineno (yyscan_t yyscanner); + +void VanuatuWktset_lineno (int line_number, yyscan_t yyscanner); + +int VanuatuWktget_column (yyscan_t yyscanner); + +void VanuatuWktset_column (int column_no, yyscan_t yyscanner); + +/* Macros after this point can all be overridden by user definitions in + * section 1. + */ + +#ifndef YY_SKIP_YYWRAP +#ifdef __cplusplus +extern "C" int VanuatuWktwrap (yyscan_t yyscanner); +#else +extern int VanuatuWktwrap (yyscan_t yyscanner); +#endif +#endif + +#ifndef yytext_ptr +static void yy_flex_strncpy (char *, yyconst char *, int, yyscan_t yyscanner); +#endif + +#ifdef YY_NEED_STRLEN +static int yy_flex_strlen (yyconst char *, yyscan_t yyscanner); +#endif + +#ifndef YY_NO_INPUT + +#ifdef __cplusplus +static int yyinput (yyscan_t yyscanner); +#else +static int input (yyscan_t yyscanner); +#endif + +#endif + +/* Amount of stuff to slurp up with each read. */ +#ifndef YY_READ_BUF_SIZE +#define YY_READ_BUF_SIZE 8192 +#endif + +/* Copy whatever the last rule matched to the standard output. */ +#ifndef ECHO +/* This used to be an fputs(), but since the string might contain NUL's, + * we now use fwrite(). + */ +#define ECHO do { if (fwrite( yytext, yyleng, 1, yyout )) {} } while (0) +#endif + +/* Gets input and stuffs it into "buf". number of characters read, or YY_NULL, + * is returned in "result". + */ +#ifndef YY_INPUT +#define YY_INPUT(buf,result,max_size) \ + if ( YY_CURRENT_BUFFER_LVALUE->yy_is_interactive ) \ + { \ + int c = '*'; \ + unsigned n; \ + for ( n = 0; n < max_size && \ + (c = getc( yyin )) != EOF && c != '\n'; ++n ) \ + buf[n] = (char) c; \ + if ( c == '\n' ) \ + buf[n++] = (char) c; \ + if ( c == EOF && ferror( yyin ) ) \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + result = n; \ + } \ + else \ + { \ + errno=0; \ + while ( (result = fread(buf, 1, max_size, yyin))==0 && ferror(yyin)) \ + { \ + if( errno != EINTR) \ + { \ + YY_FATAL_ERROR( "input in flex scanner failed" ); \ + break; \ + } \ + errno=0; \ + clearerr(yyin); \ + } \ + }\ +\ + +#endif + +/* No semi-colon after return; correct usage is to write "yyterminate();" - + * we don't want an extra ';' after the "return" because that will cause + * some compilers to complain about unreachable statements. + */ +#ifndef yyterminate +#define yyterminate() return YY_NULL +#endif + +/* Number of entries by which start-condition stack grows. */ +#ifndef YY_START_STACK_INCR +#define YY_START_STACK_INCR 25 +#endif + +/* Report a fatal error. */ +#ifndef YY_FATAL_ERROR +#define YY_FATAL_ERROR(msg) yy_fatal_error( msg , yyscanner) +#endif + +/* end tables serialization structures and prototypes */ + +/* Default declaration of generated scanner - a define so the user can + * easily add parameters. + */ +#ifndef YY_DECL +#define YY_DECL_IS_OURS 1 + +extern int VanuatuWktlex (yyscan_t yyscanner); + +#define YY_DECL int VanuatuWktlex (yyscan_t yyscanner) +#endif /* !YY_DECL */ + +/* Code executed at the beginning of each rule, after yytext and yyleng + * have been set up. + */ +#ifndef YY_USER_ACTION +#define YY_USER_ACTION +#endif + +/* Code executed at the end of each rule. */ +#ifndef YY_BREAK +#define YY_BREAK break; +#endif + +#define YY_RULE_SETUP \ + YY_USER_ACTION + +/** The main scanner function which does all the work. + */ +YY_DECL +{ + register yy_state_type yy_current_state; + register char *yy_cp, *yy_bp; + register int yy_act; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!yyg->yy_init) + { + yyg->yy_init = 1; + +#ifdef YY_USER_INIT + YY_USER_INIT; +#endif + + if (!yyg->yy_start) + yyg->yy_start = 1; /* first start state */ + + if (!yyin) + yyin = stdin; + + if (!yyout) + yyout = stdout; + + if (!YY_CURRENT_BUFFER) + { + VanuatuWktensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + VanuatuWkt_create_buffer (yyin, YY_BUF_SIZE, yyscanner); + } + + VanuatuWkt_load_buffer_state (yyscanner); + } + + while (1) /* loops until end-of-file is reached */ + { + yy_cp = yyg->yy_c_buf_p; + + /* Support of yytext. */ + *yy_cp = yyg->yy_hold_char; + + /* yy_bp points to the position in yy_ch_buf of the start of + * the current run. + */ + yy_bp = yy_cp; + + yy_current_state = yyg->yy_start; + yy_match: + do + { + register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI (*yy_cp)]; + if (yy_accept[yy_current_state]) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while (yy_chk[yy_base[yy_current_state] + yy_c] != + yy_current_state) + { + yy_current_state = (int) yy_def[yy_current_state]; + if (yy_current_state >= 114) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = + yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + ++yy_cp; + } + while (yy_base[yy_current_state] != 255); + + yy_find_action: + yy_act = yy_accept[yy_current_state]; + if (yy_act == 0) + { /* have to back up */ + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + yy_act = yy_accept[yy_current_state]; + } + + YY_DO_BEFORE_ACTION; + + do_action: /* This label is used only to access EOF actions. */ + + switch (yy_act) + { /* beginning of action switch */ + case 0: /* must back up */ + /* undo the effects of YY_DO_BEFORE_ACTION */ + *yy_cp = yyg->yy_hold_char; + yy_cp = yyg->yy_last_accepting_cpos; + yy_current_state = yyg->yy_last_accepting_state; + goto yy_find_action; + + case 1: + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->vanuatu_col += + (int) strlen (yytext); + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = + atof (yytext); + return VANUATU_NUM; + } + YY_BREAK case 2:YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_COMMA; + } + YY_BREAK case 3:YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_OPEN_BRACKET; + } + YY_BREAK case 4:YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_CLOSE_BRACKET; + } + YY_BREAK case 5:YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_POINT; + } + YY_BREAK case 6: +/* rule 6 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_POINT_Z; + } + YY_BREAK case 7: +/* rule 7 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_POINT_M; + } + YY_BREAK case 8: +/* rule 8 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_POINT_ZM; + } + YY_BREAK case 9:YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_LINESTRING; + } + YY_BREAK case 10: +/* rule 10 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_LINESTRING_Z; + } + YY_BREAK case 11: +/* rule 11 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_LINESTRING_M; + } + YY_BREAK case 12: +/* rule 12 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_LINESTRING_ZM; + } + YY_BREAK case 13:YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_POLYGON; + } + YY_BREAK case 14: +/* rule 14 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_POLYGON_Z; + } + YY_BREAK case 15: +/* rule 15 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_POLYGON_M; + } + YY_BREAK case 16: +/* rule 16 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_POLYGON_ZM; + } + YY_BREAK case 17:YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_MULTIPOINT; + } + YY_BREAK case 18: +/* rule 18 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_MULTIPOINT_Z; + } + YY_BREAK case 19: +/* rule 19 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_MULTIPOINT_M; + } + YY_BREAK case 20: +/* rule 20 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_MULTIPOINT_ZM; + } + YY_BREAK case 21:YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_MULTILINESTRING; + } + YY_BREAK case 22: +/* rule 22 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_MULTILINESTRING_Z; + } + YY_BREAK case 23: +/* rule 23 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_MULTILINESTRING_M; + } + YY_BREAK case 24: +/* rule 24 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_MULTILINESTRING_ZM; + } + YY_BREAK case 25:YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_MULTIPOLYGON; + } + YY_BREAK case 26: +/* rule 26 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_MULTIPOLYGON_Z; + } + YY_BREAK case 27: +/* rule 27 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_MULTIPOLYGON_M; + } + YY_BREAK case 28: +/* rule 28 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_MULTIPOLYGON_ZM; + } + YY_BREAK case 29:YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_GEOMETRYCOLLECTION; + } + YY_BREAK case 30: +/* rule 30 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_GEOMETRYCOLLECTION_Z; + } + YY_BREAK case 31: +/* rule 31 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_GEOMETRYCOLLECTION_M; + } + YY_BREAK case 32: +/* rule 32 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->VanuatuWktlval.dval = 0; + return VANUATU_GEOMETRYCOLLECTION_ZM; + } + YY_BREAK case 33:YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->vanuatu_col += + (int) strlen (yytext); + } /* ignore but count white space */ + YY_BREAK case 34: +/* rule 34 can match eol */ + YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->vanuatu_col = 0; + VanuatuWktget_extra (yyscanner)->vanuatu_line++; + } + YY_BREAK case 35:YY_RULE_SETUP + { + VanuatuWktget_extra (yyscanner)->vanuatu_col += + (int) strlen (yytext); + return -1; + } + YY_BREAK case 36:YY_RULE_SETUP ECHO; + YY_BREAK case YY_STATE_EOF (INITIAL):yyterminate (); + + case YY_END_OF_BUFFER: + { + /* Amount of text matched not including the EOB char. */ + int yy_amount_of_matched_text = + (int) (yy_cp - yyg->yytext_ptr) - 1; + + /* Undo the effects of YY_DO_BEFORE_ACTION. */ + *yy_cp = yyg->yy_hold_char; + YY_RESTORE_YY_MORE_OFFSET + if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == + YY_BUFFER_NEW) + { + /* We're scanning a new file or input source. It's + * possible that this happened because the user + * just pointed yyin at a new source and called + * VanuatuWktlex(). If so, then we have to assure + * consistency between YY_CURRENT_BUFFER and our + * globals. Here is the right place to do so, because + * this is the first action (other than possibly a + * back-up) that will match for the new input source. + */ + yyg->yy_n_chars = + YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + YY_CURRENT_BUFFER_LVALUE->yy_input_file = yyin; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_NORMAL; + } + + /* Note that here we test for yy_c_buf_p "<=" to the position + * of the first EOB in the buffer, since yy_c_buf_p will + * already have been incremented past the NUL character + * (since all states make transitions on EOB to the + * end-of-buffer state). Contrast this with the test + * in input(). + */ + if (yyg->yy_c_buf_p <= + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]) + { /* This was really a NUL. */ + yy_state_type yy_next_state; + + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = yy_get_previous_state (yyscanner); + + /* Okay, we're now positioned to make the NUL + * transition. We couldn't have + * yy_get_previous_state() go ahead and do it + * for us because it doesn't know how to deal + * with the possibility of jamming (and we don't + * want to build jamming into it because then it + * will run more slowly). + */ + + yy_next_state = + yy_try_NUL_trans (yy_current_state, yyscanner); + + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + + if (yy_next_state) + { + /* Consume the NUL. */ + yy_cp = ++yyg->yy_c_buf_p; + yy_current_state = yy_next_state; + goto yy_match; + } + + else + { + yy_cp = yyg->yy_c_buf_p; + goto yy_find_action; + } + } + + else + switch (yy_get_next_buffer (yyscanner)) + { + case EOB_ACT_END_OF_FILE: + { + yyg->yy_did_buffer_switch_on_eof = 0; + + if (VanuatuWktwrap (yyscanner)) + { + /* Note: because we've taken care in + * yy_get_next_buffer() to have set up + * yytext, we can now set up + * yy_c_buf_p so that if some total + * hoser (like flex itself) wants to + * call the scanner after we return the + * YY_NULL, it'll still work - another + * YY_NULL will get returned. + */ + yyg->yy_c_buf_p = + yyg->yytext_ptr + YY_MORE_ADJ; + + yy_act = YY_STATE_EOF (YY_START); + goto do_action; + } + + else + { + if (!yyg->yy_did_buffer_switch_on_eof) + YY_NEW_FILE; + } + break; + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = + yyg->yytext_ptr + yy_amount_of_matched_text; + + yy_current_state = + yy_get_previous_state (yyscanner); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_match; + + case EOB_ACT_LAST_MATCH: + yyg->yy_c_buf_p = + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg-> + yy_n_chars]; + + yy_current_state = + yy_get_previous_state (yyscanner); + + yy_cp = yyg->yy_c_buf_p; + yy_bp = yyg->yytext_ptr + YY_MORE_ADJ; + goto yy_find_action; + } + break; + } + + default: + YY_FATAL_ERROR + ("fatal flex scanner internal error--no action found"); + } /* end of action switch */ + } /* end of scanning one token */ +} /* end of VanuatuWktlex */ + +/* yy_get_next_buffer - try to read in a new buffer + * + * Returns a code representing an action: + * EOB_ACT_LAST_MATCH - + * EOB_ACT_CONTINUE_SCAN - continue scanning from current position + * EOB_ACT_END_OF_FILE - end of file + */ +static int +yy_get_next_buffer (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + register char *dest = YY_CURRENT_BUFFER_LVALUE->yy_ch_buf; + register char *source = yyg->yytext_ptr; + register int number_to_move, i; + int ret_val; + + if (yyg->yy_c_buf_p > + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1]) + YY_FATAL_ERROR + ("fatal flex scanner internal error--end of buffer missed"); + + if (YY_CURRENT_BUFFER_LVALUE->yy_fill_buffer == 0) + { /* Don't try to fill the buffer, so this is an EOF. */ + if (yyg->yy_c_buf_p - yyg->yytext_ptr - YY_MORE_ADJ == 1) + { + /* We matched a single character, the EOB, so + * treat this as a final EOF. + */ + return EOB_ACT_END_OF_FILE; + } + + else + { + /* We matched some text prior to the EOB, first + * process it. + */ + return EOB_ACT_LAST_MATCH; + } + } + + /* Try to read more data. */ + + /* First move last chars to start of buffer. */ + number_to_move = (int) (yyg->yy_c_buf_p - yyg->yytext_ptr) - 1; + + for (i = 0; i < number_to_move; ++i) + *(dest++) = *(source++); + + if (YY_CURRENT_BUFFER_LVALUE->yy_buffer_status == YY_BUFFER_EOF_PENDING) + /* don't do the read, it's not guaranteed to return an EOF, + * just force an EOF + */ + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars = 0; + + else + { + int num_to_read = + YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move - 1; + + while (num_to_read <= 0) + { /* Not enough room in the buffer - grow it. */ + + /* just a shorter name for the current buffer */ + YY_BUFFER_STATE b = YY_CURRENT_BUFFER; + + int yy_c_buf_p_offset = (int) (yyg->yy_c_buf_p - b->yy_ch_buf); + + if (b->yy_is_our_buffer) + { + int new_size = b->yy_buf_size * 2; + + if (new_size <= 0) + b->yy_buf_size += b->yy_buf_size / 8; + else + b->yy_buf_size *= 2; + + b->yy_ch_buf = (char *) + /* Include room in for 2 EOB chars. */ + VanuatuWktrealloc ((void *) b->yy_ch_buf, + b->yy_buf_size + 2, yyscanner); + } + else + /* Can't grow it, we don't own it. */ + b->yy_ch_buf = 0; + + if (!b->yy_ch_buf) + YY_FATAL_ERROR + ("fatal error - scanner input buffer overflow"); + + yyg->yy_c_buf_p = &b->yy_ch_buf[yy_c_buf_p_offset]; + + num_to_read = YY_CURRENT_BUFFER_LVALUE->yy_buf_size - + number_to_move - 1; + + } + + if (num_to_read > YY_READ_BUF_SIZE) + num_to_read = YY_READ_BUF_SIZE; + + /* Read in more data. */ + YY_INPUT ((&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]), + yyg->yy_n_chars, (size_t) num_to_read); + + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + if (yyg->yy_n_chars == 0) + { + if (number_to_move == YY_MORE_ADJ) + { + ret_val = EOB_ACT_END_OF_FILE; + VanuatuWktrestart (yyin, yyscanner); + } + + else + { + ret_val = EOB_ACT_LAST_MATCH; + YY_CURRENT_BUFFER_LVALUE->yy_buffer_status = + YY_BUFFER_EOF_PENDING; + } + } + + else + ret_val = EOB_ACT_CONTINUE_SCAN; + + if ((yy_size_t) (yyg->yy_n_chars + number_to_move) > + YY_CURRENT_BUFFER_LVALUE->yy_buf_size) + { + /* Extend the array by 50%, plus the number we really need. */ + yy_size_t new_size = + yyg->yy_n_chars + number_to_move + (yyg->yy_n_chars >> 1); + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf = + (char *) VanuatuWktrealloc ((void *) + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf, + new_size, yyscanner); + if (!YY_CURRENT_BUFFER_LVALUE->yy_ch_buf) + YY_FATAL_ERROR ("out of dynamic memory in yy_get_next_buffer()"); + } + + yyg->yy_n_chars += number_to_move; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars] = + YY_END_OF_BUFFER_CHAR; + YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars + 1] = + YY_END_OF_BUFFER_CHAR; + + yyg->yytext_ptr = &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[0]; + + return ret_val; +} + +/* yy_get_previous_state - get the state just before the EOB char was reached */ + +static yy_state_type +yy_get_previous_state (yyscan_t yyscanner) +{ + register yy_state_type yy_current_state; + register char *yy_cp; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + yy_current_state = yyg->yy_start; + + for (yy_cp = yyg->yytext_ptr + YY_MORE_ADJ; yy_cp < yyg->yy_c_buf_p; + ++yy_cp) + { + register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI (*yy_cp)] : 1); + if (yy_accept[yy_current_state]) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) + { + yy_current_state = (int) yy_def[yy_current_state]; + if (yy_current_state >= 114) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = + yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + } + + return yy_current_state; +} + +/* yy_try_NUL_trans - try to make a transition on the NUL character + * + * synopsis + * next_state = yy_try_NUL_trans( current_state ); + */ +static yy_state_type +yy_try_NUL_trans (yy_state_type yy_current_state, yyscan_t yyscanner) +{ + register int yy_is_jam; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; /* This var may be unused depending upon options. */ + register char *yy_cp = yyg->yy_c_buf_p; + + register YY_CHAR yy_c = 1; + if (yy_accept[yy_current_state]) + { + yyg->yy_last_accepting_state = yy_current_state; + yyg->yy_last_accepting_cpos = yy_cp; + } + while (yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state) + { + yy_current_state = (int) yy_def[yy_current_state]; + if (yy_current_state >= 114) + yy_c = yy_meta[(unsigned int) yy_c]; + } + yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c]; + yy_is_jam = (yy_current_state == 113); + + return yy_is_jam ? 0 : yy_current_state; +} + +#ifndef YY_NO_INPUT +#ifdef __cplusplus +static int +yyinput (yyscan_t yyscanner) +#else +static int +input (yyscan_t yyscanner) +#endif +{ + int c; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + *yyg->yy_c_buf_p = yyg->yy_hold_char; + + if (*yyg->yy_c_buf_p == YY_END_OF_BUFFER_CHAR) + { + /* yy_c_buf_p now points to the character we want to return. + * If this occurs *before* the EOB characters, then it's a + * valid NUL; if not, then we've hit the end of the buffer. + */ + if (yyg->yy_c_buf_p < + &YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[yyg->yy_n_chars]) + /* This was really a NUL. */ + *yyg->yy_c_buf_p = '\0'; + + else + { /* need more input */ + int offset = yyg->yy_c_buf_p - yyg->yytext_ptr; + ++yyg->yy_c_buf_p; + + switch (yy_get_next_buffer (yyscanner)) + { + case EOB_ACT_LAST_MATCH: + /* This happens because yy_g_n_b() + * sees that we've accumulated a + * token and flags that we need to + * try matching the token before + * proceeding. But for input(), + * there's no matching to consider. + * So convert the EOB_ACT_LAST_MATCH + * to EOB_ACT_END_OF_FILE. + */ + + /* Reset buffer status. */ + VanuatuWktrestart (yyin, yyscanner); + + /*FALLTHROUGH*/ case EOB_ACT_END_OF_FILE: + { + if (VanuatuWktwrap (yyscanner)) + return EOF; + + if (!yyg->yy_did_buffer_switch_on_eof) + YY_NEW_FILE; +#ifdef __cplusplus + return yyinput (yyscanner); +#else + return input (yyscanner); +#endif + } + + case EOB_ACT_CONTINUE_SCAN: + yyg->yy_c_buf_p = yyg->yytext_ptr + offset; + break; + } + } + } + + c = *(unsigned char *) yyg->yy_c_buf_p; /* cast for 8-bit char's */ + *yyg->yy_c_buf_p = '\0'; /* preserve yytext */ + yyg->yy_hold_char = *++yyg->yy_c_buf_p; + + return c; +} +#endif /* ifndef YY_NO_INPUT */ + +/** Immediately switch to a different input stream. + * @param input_file A readable stream. + * @param yyscanner The scanner object. + * @note This function does not reset the start condition to @c INITIAL . + */ +void +VanuatuWktrestart (FILE * input_file, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!YY_CURRENT_BUFFER) + { + VanuatuWktensure_buffer_stack (yyscanner); + YY_CURRENT_BUFFER_LVALUE = + VanuatuWkt_create_buffer (yyin, YY_BUF_SIZE, yyscanner); + } + + VanuatuWkt_init_buffer (YY_CURRENT_BUFFER, input_file, yyscanner); + VanuatuWkt_load_buffer_state (yyscanner); +} + +/** Switch to a different input buffer. + * @param new_buffer The new input buffer. + * @param yyscanner The scanner object. + */ +void +VanuatuWkt_switch_to_buffer (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* TODO. We should be able to replace this entire function body + * with + * VanuatuWktpop_buffer_state(); + * VanuatuWktpush_buffer_state(new_buffer); + */ + VanuatuWktensure_buffer_stack (yyscanner); + if (YY_CURRENT_BUFFER == new_buffer) + return; + + if (YY_CURRENT_BUFFER) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + YY_CURRENT_BUFFER_LVALUE = new_buffer; + VanuatuWkt_load_buffer_state (yyscanner); + + /* We don't actually know whether we did this switch during + * EOF (VanuatuWktwrap()) processing, but the only time this flag + * is looked at is after VanuatuWktwrap() is called, so it's safe + * to go ahead and always set it. + */ + yyg->yy_did_buffer_switch_on_eof = 1; +} + +static void +VanuatuWkt_load_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyg->yy_n_chars = YY_CURRENT_BUFFER_LVALUE->yy_n_chars; + yyg->yytext_ptr = yyg->yy_c_buf_p = YY_CURRENT_BUFFER_LVALUE->yy_buf_pos; + yyin = YY_CURRENT_BUFFER_LVALUE->yy_input_file; + yyg->yy_hold_char = *yyg->yy_c_buf_p; +} + +/** Allocate and initialize an input buffer state. + * @param file A readable stream. + * @param size The character buffer size in bytes. When in doubt, use @c YY_BUF_SIZE. + * @param yyscanner The scanner object. + * @return the allocated buffer state. + */ +YY_BUFFER_STATE +VanuatuWkt_create_buffer (FILE * file, int size, yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + b = (YY_BUFFER_STATE) VanuatuWktalloc (sizeof (struct yy_buffer_state), + yyscanner); + if (!b) + YY_FATAL_ERROR ("out of dynamic memory in VanuatuWkt_create_buffer()"); + + b->yy_buf_size = size; + + /* yy_ch_buf has to be 2 characters longer than the size given because + * we need to put in 2 end-of-buffer characters. + */ + b->yy_ch_buf = (char *) VanuatuWktalloc (b->yy_buf_size + 2, yyscanner); + if (!b->yy_ch_buf) + YY_FATAL_ERROR ("out of dynamic memory in VanuatuWkt_create_buffer()"); + + b->yy_is_our_buffer = 1; + + VanuatuWkt_init_buffer (b, file, yyscanner); + + return b; +} + +/** Destroy the buffer. + * @param b a buffer created with VanuatuWkt_create_buffer() + * @param yyscanner The scanner object. + */ +void +VanuatuWkt_delete_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!b) + return; + + if (b == YY_CURRENT_BUFFER) /* Not sure if we should pop here. */ + YY_CURRENT_BUFFER_LVALUE = (YY_BUFFER_STATE) 0; + + if (b->yy_is_our_buffer) + VanuatuWktfree ((void *) b->yy_ch_buf, yyscanner); + + VanuatuWktfree ((void *) b, yyscanner); +} + +#ifndef __cplusplus +extern int isatty (int); +#endif /* __cplusplus */ + +/* Initializes or reinitializes a buffer. + * This function is sometimes called more than once on the same buffer, + * such as during a VanuatuWktrestart() or at EOF. + */ +static void +VanuatuWkt_init_buffer (YY_BUFFER_STATE b, FILE * file, yyscan_t yyscanner) +{ + int oerrno = errno; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + VanuatuWkt_flush_buffer (b, yyscanner); + + b->yy_input_file = file; + b->yy_fill_buffer = 1; + + /* If b is the current buffer, then VanuatuWkt_init_buffer was _probably_ + * called from VanuatuWktrestart() or through yy_get_next_buffer. + * In that case, we don't want to reset the lineno or column. + */ + if (b != YY_CURRENT_BUFFER) + { + b->yy_bs_lineno = 1; + b->yy_bs_column = 0; + } + + b->yy_is_interactive = file ? (isatty (fileno (file)) > 0) : 0; + + errno = oerrno; +} + +/** Discard all buffered characters. On the next scan, YY_INPUT will be called. + * @param b the buffer state to be flushed, usually @c YY_CURRENT_BUFFER. + * @param yyscanner The scanner object. + */ +void +VanuatuWkt_flush_buffer (YY_BUFFER_STATE b, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + if (!b) + return; + + b->yy_n_chars = 0; + + /* We always need two end-of-buffer characters. The first causes + * a transition to the end-of-buffer state. The second causes + * a jam in that state. + */ + b->yy_ch_buf[0] = YY_END_OF_BUFFER_CHAR; + b->yy_ch_buf[1] = YY_END_OF_BUFFER_CHAR; + + b->yy_buf_pos = &b->yy_ch_buf[0]; + + b->yy_at_bol = 1; + b->yy_buffer_status = YY_BUFFER_NEW; + + if (b == YY_CURRENT_BUFFER) + VanuatuWkt_load_buffer_state (yyscanner); +} + +/** Pushes the new state onto the stack. The new state becomes + * the current state. This function will allocate the stack + * if necessary. + * @param new_buffer The new state. + * @param yyscanner The scanner object. + */ +void +VanuatuWktpush_buffer_state (YY_BUFFER_STATE new_buffer, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + if (new_buffer == NULL) + return; + + VanuatuWktensure_buffer_stack (yyscanner); + + /* This block is copied from VanuatuWkt_switch_to_buffer. */ + if (YY_CURRENT_BUFFER) + { + /* Flush out information for old buffer. */ + *yyg->yy_c_buf_p = yyg->yy_hold_char; + YY_CURRENT_BUFFER_LVALUE->yy_buf_pos = yyg->yy_c_buf_p; + YY_CURRENT_BUFFER_LVALUE->yy_n_chars = yyg->yy_n_chars; + } + + /* Only push if top exists. Otherwise, replace top. */ + if (YY_CURRENT_BUFFER) + yyg->yy_buffer_stack_top++; + YY_CURRENT_BUFFER_LVALUE = new_buffer; + + /* copied from VanuatuWkt_switch_to_buffer. */ + VanuatuWkt_load_buffer_state (yyscanner); + yyg->yy_did_buffer_switch_on_eof = 1; +} + +/** Removes and deletes the top of the stack, if present. + * The next element becomes the new top. + * @param yyscanner The scanner object. + */ +void +VanuatuWktpop_buffer_state (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + if (!YY_CURRENT_BUFFER) + return; + + VanuatuWkt_delete_buffer (YY_CURRENT_BUFFER, yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + if (yyg->yy_buffer_stack_top > 0) + --yyg->yy_buffer_stack_top; + + if (YY_CURRENT_BUFFER) + { + VanuatuWkt_load_buffer_state (yyscanner); + yyg->yy_did_buffer_switch_on_eof = 1; + } +} + +/* Allocates the stack if it does not exist. + * Guarantees space for at least one push. + */ +static void +VanuatuWktensure_buffer_stack (yyscan_t yyscanner) +{ + int num_to_alloc; + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!yyg->yy_buffer_stack) + { + + /* First allocation is just for 2 elements, since we don't know if this + * scanner will even need a stack. We use 2 instead of 1 to avoid an + * immediate realloc on the next call. + */ + num_to_alloc = 1; + yyg->yy_buffer_stack = (struct yy_buffer_state **) VanuatuWktalloc + (num_to_alloc * sizeof (struct yy_buffer_state *), yyscanner); + if (!yyg->yy_buffer_stack) + YY_FATAL_ERROR + ("out of dynamic memory in VanuatuWktensure_buffer_stack()"); + + memset (yyg->yy_buffer_stack, 0, + num_to_alloc * sizeof (struct yy_buffer_state *)); + + yyg->yy_buffer_stack_max = num_to_alloc; + yyg->yy_buffer_stack_top = 0; + return; + } + + if (yyg->yy_buffer_stack_top >= (yyg->yy_buffer_stack_max) - 1) + { + + /* Increase the buffer to prepare for a possible push. */ + int grow_size = 8 /* arbitrary grow size */ ; + + num_to_alloc = yyg->yy_buffer_stack_max + grow_size; + yyg->yy_buffer_stack = (struct yy_buffer_state **) VanuatuWktrealloc + (yyg->yy_buffer_stack, + num_to_alloc * sizeof (struct yy_buffer_state *), yyscanner); + if (!yyg->yy_buffer_stack) + YY_FATAL_ERROR + ("out of dynamic memory in VanuatuWktensure_buffer_stack()"); + + /* zero only the new slots. */ + memset (yyg->yy_buffer_stack + yyg->yy_buffer_stack_max, 0, + grow_size * sizeof (struct yy_buffer_state *)); + yyg->yy_buffer_stack_max = num_to_alloc; + } +} + +/** Setup the input buffer state to scan directly from a user-specified character buffer. + * @param base the character buffer + * @param size the size in bytes of the character buffer + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE +VanuatuWkt_scan_buffer (char *base, yy_size_t size, yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + + if (size < 2 || + base[size - 2] != YY_END_OF_BUFFER_CHAR || + base[size - 1] != YY_END_OF_BUFFER_CHAR) + /* They forgot to leave room for the EOB's. */ + return 0; + + b = (YY_BUFFER_STATE) VanuatuWktalloc (sizeof (struct yy_buffer_state), + yyscanner); + if (!b) + YY_FATAL_ERROR ("out of dynamic memory in VanuatuWkt_scan_buffer()"); + + b->yy_buf_size = size - 2; /* "- 2" to take care of EOB's */ + b->yy_buf_pos = b->yy_ch_buf = base; + b->yy_is_our_buffer = 0; + b->yy_input_file = 0; + b->yy_n_chars = b->yy_buf_size; + b->yy_is_interactive = 0; + b->yy_at_bol = 1; + b->yy_fill_buffer = 0; + b->yy_buffer_status = YY_BUFFER_NEW; + + VanuatuWkt_switch_to_buffer (b, yyscanner); + + return b; +} + +/** Setup the input buffer state to scan a string. The next call to VanuatuWktlex() will + * scan from a @e copy of @a str. + * @param yystr a NUL-terminated string to scan + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + * @note If you want to scan bytes that may contain NUL values, then use + * VanuatuWkt_scan_bytes() instead. + */ +YY_BUFFER_STATE +VanuatuWkt_scan_string (yyconst char *yystr, yyscan_t yyscanner) +{ + + return VanuatuWkt_scan_bytes (yystr, strlen (yystr), yyscanner); +} + +/** Setup the input buffer state to scan the given bytes. The next call to VanuatuWktlex() will + * scan from a @e copy of @a bytes. + * @param bytes the byte buffer to scan + * @param len the number of bytes in the buffer pointed to by @a bytes. + * @param yyscanner The scanner object. + * @return the newly allocated buffer state object. + */ +YY_BUFFER_STATE +VanuatuWkt_scan_bytes (yyconst char *yybytes, int _yybytes_len, + yyscan_t yyscanner) +{ + YY_BUFFER_STATE b; + char *buf; + yy_size_t n; + int i; + + /* Get memory for full buffer, including space for trailing EOB's. */ + n = _yybytes_len + 2; + buf = (char *) VanuatuWktalloc (n, yyscanner); + if (!buf) + YY_FATAL_ERROR ("out of dynamic memory in VanuatuWkt_scan_bytes()"); + + for (i = 0; i < _yybytes_len; ++i) + buf[i] = yybytes[i]; + + buf[_yybytes_len] = buf[_yybytes_len + 1] = YY_END_OF_BUFFER_CHAR; + + b = VanuatuWkt_scan_buffer (buf, n, yyscanner); + if (!b) + YY_FATAL_ERROR ("bad buffer in VanuatuWkt_scan_bytes()"); + + /* It's okay to grow etc. this buffer, and we should throw it + * away when we're done. + */ + b->yy_is_our_buffer = 1; + + return b; +} + +#ifndef YY_EXIT_FAILURE +#define YY_EXIT_FAILURE 2 +#endif + +static void +yy_fatal_error (yyconst char *msg, yyscan_t yyscanner) +{ + (void) fprintf (stderr, "%s\n", msg); + exit (YY_EXIT_FAILURE); +} + +/* Redefine yyless() so it works in section 3 code. */ + +#undef yyless +#define yyless(n) \ + do \ + { \ + /* Undo effects of setting up yytext. */ \ + int yyless_macro_arg = (n); \ + YY_LESS_LINENO(yyless_macro_arg);\ + yytext[yyleng] = yyg->yy_hold_char; \ + yyg->yy_c_buf_p = yytext + yyless_macro_arg; \ + yyg->yy_hold_char = *yyg->yy_c_buf_p; \ + *yyg->yy_c_buf_p = '\0'; \ + yyleng = yyless_macro_arg; \ + } \ + while ( 0 ) + +/* Accessor methods (get/set functions) to struct members. */ + +/** Get the user-defined data for this scanner. + * @param yyscanner The scanner object. + */ +YY_EXTRA_TYPE +VanuatuWktget_extra (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyextra; +} + +/** Get the current line number. + * @param yyscanner The scanner object. + */ +int +VanuatuWktget_lineno (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!YY_CURRENT_BUFFER) + return 0; + + return yylineno; +} + +/** Get the current column number. + * @param yyscanner The scanner object. + */ +int +VanuatuWktget_column (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + if (!YY_CURRENT_BUFFER) + return 0; + + return yycolumn; +} + +/** Get the input stream. + * @param yyscanner The scanner object. + */ +FILE * +VanuatuWktget_in (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyin; +} + +/** Get the output stream. + * @param yyscanner The scanner object. + */ +FILE * +VanuatuWktget_out (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyout; +} + +/** Get the length of the current token. + * @param yyscanner The scanner object. + */ +int +VanuatuWktget_leng (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yyleng; +} + +/** Get the current token. + * @param yyscanner The scanner object. + */ + +char * +VanuatuWktget_text (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yytext; +} + +/** Set the user-defined data. This data is never touched by the scanner. + * @param user_defined The data to be associated with this scanner. + * @param yyscanner The scanner object. + */ +void +VanuatuWktset_extra (YY_EXTRA_TYPE user_defined, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyextra = user_defined; +} + +/** Set the current line number. + * @param line_number + * @param yyscanner The scanner object. + */ +void +VanuatuWktset_lineno (int line_number, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* lineno is only valid if an input buffer exists. */ + if (!YY_CURRENT_BUFFER) + yy_fatal_error ("VanuatuWktset_lineno called with no buffer", + yyscanner); + + yylineno = line_number; +} + +/** Set the current column. + * @param line_number + * @param yyscanner The scanner object. + */ +void +VanuatuWktset_column (int column_no, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* column is only valid if an input buffer exists. */ + if (!YY_CURRENT_BUFFER) + yy_fatal_error ("VanuatuWktset_column called with no buffer", + yyscanner); + + yycolumn = column_no; +} + +/** Set the input stream. This does not discard the current + * input buffer. + * @param in_str A readable stream. + * @param yyscanner The scanner object. + * @see VanuatuWkt_switch_to_buffer + */ +void +VanuatuWktset_in (FILE * in_str, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyin = in_str; +} + +void +VanuatuWktset_out (FILE * out_str, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yyout = out_str; +} + +int +VanuatuWktget_debug (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + return yy_flex_debug; +} + +void +VanuatuWktset_debug (int bdebug, yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + yy_flex_debug = bdebug; +} + +/* Accessor methods for yylval and yylloc */ + +/* User-visible API */ + +/* VanuatuWktlex_init is special because it creates the scanner itself, so it is + * the ONLY reentrant function that doesn't take the scanner as the last argument. + * That's why we explicitly handle the declaration, instead of using our macros. + */ + +int +VanuatuWktlex_init (yyscan_t * ptr_yy_globals) +{ + if (ptr_yy_globals == NULL) + { + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = + (yyscan_t) VanuatuWktalloc (sizeof (struct yyguts_t), NULL); + + if (*ptr_yy_globals == NULL) + { + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in yy_init_globals. Leave at 0x00 for releases. */ + memset (*ptr_yy_globals, 0x00, sizeof (struct yyguts_t)); + + return yy_init_globals (*ptr_yy_globals); +} + +/* VanuatuWktlex_init_extra has the same functionality as VanuatuWktlex_init, but follows the + * convention of taking the scanner as the last argument. Note however, that + * this is a *pointer* to a scanner, as it will be allocated by this call (and + * is the reason, too, why this function also must handle its own declaration). + * The user defined value in the first argument will be available to VanuatuWktalloc in + * the yyextra field. + */ + +int +VanuatuWktlex_init_extra (YY_EXTRA_TYPE yy_user_defined, + yyscan_t * ptr_yy_globals) +{ + struct yyguts_t dummy_yyguts; + + VanuatuWktset_extra (yy_user_defined, &dummy_yyguts); + + if (ptr_yy_globals == NULL) + { + errno = EINVAL; + return 1; + } + + *ptr_yy_globals = + (yyscan_t) VanuatuWktalloc (sizeof (struct yyguts_t), &dummy_yyguts); + + if (*ptr_yy_globals == NULL) + { + errno = ENOMEM; + return 1; + } + + /* By setting to 0xAA, we expose bugs in + yy_init_globals. Leave at 0x00 for releases. */ + memset (*ptr_yy_globals, 0x00, sizeof (struct yyguts_t)); + + VanuatuWktset_extra (yy_user_defined, *ptr_yy_globals); + + return yy_init_globals (*ptr_yy_globals); +} + +static int +yy_init_globals (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + /* Initialization is the same as for the non-reentrant scanner. + * This function is called from VanuatuWktlex_destroy(), so don't allocate here. + */ + + yyg->yy_buffer_stack = 0; + yyg->yy_buffer_stack_top = 0; + yyg->yy_buffer_stack_max = 0; + yyg->yy_c_buf_p = (char *) 0; + yyg->yy_init = 0; + yyg->yy_start = 0; + + yyg->yy_start_stack_ptr = 0; + yyg->yy_start_stack_depth = 0; + yyg->yy_start_stack = NULL; + +/* Defined in main.c */ +#ifdef YY_STDINIT + yyin = stdin; + yyout = stdout; +#else + yyin = (FILE *) 0; + yyout = (FILE *) 0; +#endif + + /* For future reference: Set errno on error, since we are called by + * VanuatuWktlex_init() + */ + return 0; +} + +/* VanuatuWktlex_destroy is for both reentrant and non-reentrant scanners. */ +int +VanuatuWktlex_destroy (yyscan_t yyscanner) +{ + struct yyguts_t *yyg = (struct yyguts_t *) yyscanner; + + /* Pop the buffer stack, destroying each element. */ + while (YY_CURRENT_BUFFER) + { + VanuatuWkt_delete_buffer (YY_CURRENT_BUFFER, yyscanner); + YY_CURRENT_BUFFER_LVALUE = NULL; + VanuatuWktpop_buffer_state (yyscanner); + } + + /* Destroy the stack itself. */ + VanuatuWktfree (yyg->yy_buffer_stack, yyscanner); + yyg->yy_buffer_stack = NULL; + + /* Destroy the start condition stack. */ + VanuatuWktfree (yyg->yy_start_stack, yyscanner); + yyg->yy_start_stack = NULL; + + /* Reset the globals. This is important in a non-reentrant scanner so the next time + * VanuatuWktlex() is called, initialization will occur. */ + yy_init_globals (yyscanner); + + /* Destroy the main struct (reentrant only). */ + VanuatuWktfree (yyscanner, yyscanner); + yyscanner = NULL; + return 0; +} + +/* + * Internal utility routines. + */ + +#ifndef yytext_ptr +static void +yy_flex_strncpy (char *s1, yyconst char *s2, int n, yyscan_t yyscanner) +{ + register int i; + for (i = 0; i < n; ++i) + s1[i] = s2[i]; +} +#endif + +#ifdef YY_NEED_STRLEN +static int +yy_flex_strlen (yyconst char *s, yyscan_t yyscanner) +{ + register int n; + for (n = 0; s[n]; ++n) + ; + + return n; +} +#endif + +void * +VanuatuWktalloc (yy_size_t size, yyscan_t yyscanner) +{ + return (void *) malloc (size); +} + +void * +VanuatuWktrealloc (void *ptr, yy_size_t size, yyscan_t yyscanner) +{ + /* The cast to (char *) in the following accommodates both + * implementations that use char* generic pointers, and those + * that use void* generic pointers. It works with the latter + * because both ANSI C and C++ allow castless assignment from + * any pointer type to void*, and deal with argument conversions + * as though doing an assignment. + */ + return (void *) realloc ((char *) ptr, size); +} + +void +VanuatuWktfree (void *ptr, yyscan_t yyscanner) +{ + free ((char *) ptr); /* see VanuatuWktrealloc() for (char *) cast */ +} + +#define YYTABLES_NAME "yytables" + +int +VanuatuWktwrap (yyscan_t yyscanner) +{ + return 1; +} + +/****************************************************************************** +** This is the end of the code that was created by Team Vanuatu +** of The University of Toronto. + +Authors: +Ruppi Rana ruppi.rana@gmail.com +Dev Tanna dev.tanna@gmail.com +Elias Adum elias.adum@gmail.com +Benton Hui benton.hui@gmail.com +Abhayan Sundararajan abhayan@gmail.com +Chee-Lun Michael Stephen Cho cheelun.cho@gmail.com +Nikola Banovic nikola.banovic@gmail.com +Yong Jian yong.jian@utoronto.ca + +Supervisor: +Greg Wilson gvwilson@cs.toronto.ca + +------------------------------------------------------------------------------- +*/ diff --git a/src/spatialite/src/gaiageo/vanuatuWkt.c b/src/spatialite/src/gaiageo/vanuatuWkt.c new file mode 100644 index 0000000..7ef3caf --- /dev/null +++ b/src/spatialite/src/gaiageo/vanuatuWkt.c @@ -0,0 +1,2708 @@ +/* Driver template for the LEMON parser generator. +** The author disclaims copyright to this source code. +*/ +/* First off, code is included that follows the "include" declaration +** in the input grammar file. */ +#include <stdio.h> + +/* Next is all token values, in a form suitable for use by makeheaders. +** This section will be null unless lemon is run with the -m switch. +*/ +/* +** These constants (all generated automatically by the parser generator) +** specify the various kinds of tokens (terminals) that the parser +** understands. +** +** Each symbol here is a terminal symbol in the grammar. +*/ +/* Make sure the INTERFACE macro is defined. +*/ +#ifndef INTERFACE +#define INTERFACE 1 +#endif +/* The next thing included is series of defines which control +** various aspects of the generated parser. +** YYCODETYPE is the data type used for storing terminal +** and nonterminal numbers. "unsigned char" is +** used if there are fewer than 250 terminals +** and nonterminals. "int" is used otherwise. +** YYNOCODE is a number of type YYCODETYPE which corresponds +** to no legal terminal or nonterminal number. This +** number is used to fill in empty slots of the hash +** table. +** YYFALLBACK If defined, this indicates that one or more tokens +** have fall-back values which should be used if the +** original value of the token will not parse. +** YYACTIONTYPE is the data type used for storing terminal +** and nonterminal numbers. "unsigned char" is +** used if there are fewer than 250 rules and +** states combined. "int" is used otherwise. +** ParseTOKENTYPE is the data type used for minor tokens given +** directly to the parser from the tokenizer. +** YYMINORTYPE is the data type used for all minor tokens. +** This is typically a union of many types, one of +** which is ParseTOKENTYPE. The entry in the union +** for base tokens is called "yy0". +** YYSTACKDEPTH is the maximum depth of the parser's stack. If +** zero the stack is dynamically sized using realloc() +** ParseARG_SDECL A static variable declaration for the %extra_argument +** ParseARG_PDECL A parameter declaration for the %extra_argument +** ParseARG_STORE Code to store %extra_argument into yypParser +** ParseARG_FETCH Code to extract %extra_argument from yypParser +** YYNSTATE the combined number of states. +** YYNRULE the number of rules in the grammar +** YYERRORSYMBOL is the code number of the error symbol. If not +** defined, then do no error processing. +*/ +#define YYCODETYPE unsigned char +#define YYNOCODE 133 +#define YYACTIONTYPE unsigned short int +#define ParseTOKENTYPE void * +typedef union +{ + int yyinit; + ParseTOKENTYPE yy0; +} YYMINORTYPE; +#ifndef YYSTACKDEPTH +#define YYSTACKDEPTH 1000000 +#endif +#define ParseARG_SDECL struct vanuatu_data *p_data ; +#define ParseARG_PDECL , struct vanuatu_data *p_data +#define ParseARG_FETCH struct vanuatu_data *p_data = yypParser->p_data +#define ParseARG_STORE yypParser->p_data = p_data +#define YYNSTATE 490 +#define YYNRULE 201 +#define YY_NO_ACTION (YYNSTATE+YYNRULE+2) +#define YY_ACCEPT_ACTION (YYNSTATE+YYNRULE+1) +#define YY_ERROR_ACTION (YYNSTATE+YYNRULE) + +/* The yyzerominor constant is used to initialize instances of +** YYMINORTYPE objects to zero. */ +static const YYMINORTYPE yyzerominor = { 0 }; + +/* Define the yytestcase() macro to be a no-op if is not already defined +** otherwise. +** +** Applications can choose to define yytestcase() in the %include section +** to a macro that can assist in verifying code coverage. For production +** code the yytestcase() macro should be turned off. But it is useful +** for testing. +*/ +#ifndef yytestcase +#define yytestcase(X) +#endif + + +/* Next are the tables used to determine what action to take based on the +** current state and lookahead token. These tables are used to implement +** functions that take a state number and lookahead value and return an +** action integer. +** +** Suppose the action integer is N. Then the action is determined as +** follows +** +** 0 <= N < YYNSTATE Shift N. That is, push the lookahead +** token onto the stack and goto state N. +** +** YYNSTATE <= N < YYNSTATE+YYNRULE Reduce by rule N-YYNSTATE. +** +** N == YYNSTATE+YYNRULE A syntax error has occurred. +** +** N == YYNSTATE+YYNRULE+1 The parser accepts its input. +** +** N == YYNSTATE+YYNRULE+2 No such action. Denotes unused +** slots in the yy_action[] table. +** +** The action table is constructed as a single large table named yy_action[]. +** Given state S and lookahead X, the action is computed as +** +** yy_action[ yy_shift_ofst[S] + X ] +** +** If the index value yy_shift_ofst[S]+X is out of range or if the value +** yy_lookahead[yy_shift_ofst[S]+X] is not equal to X or if yy_shift_ofst[S] +** is equal to YY_SHIFT_USE_DFLT, it means that the action is not in the table +** and that yy_default[S] should be used instead. +** +** The formula above is for computing the action when the lookahead is +** a terminal symbol. If the lookahead is a non-terminal (as occurs after +** a reduce action) then the yy_reduce_ofst[] array is used in place of +** the yy_shift_ofst[] array and YY_REDUCE_USE_DFLT is used in place of +** YY_SHIFT_USE_DFLT. +** +** The following are the tables generated in this section: +** +** yy_action[] A single table containing all actions. +** yy_lookahead[] A table containing the lookahead for each entry in +** yy_action. Used to detect hash collisions. +** yy_shift_ofst[] For each state, the offset into yy_action for +** shifting terminals. +** yy_reduce_ofst[] For each state, the offset into yy_action for +** shifting non-terminals after a reduce. +** yy_default[] Default action for each state. +*/ +static const YYACTIONTYPE yy_action[] = { + /* 0 */ 230, 316, 317, 318, 319, 320, 321, 322, 323, 324, + /* 10 */ 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, + /* 20 */ 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, + /* 30 */ 345, 346, 347, 348, 490, 238, 231, 51, 93, 233, + /* 40 */ 235, 237, 94, 46, 54, 57, 60, 63, 66, 72, + /* 50 */ 78, 84, 90, 97, 105, 113, 122, 127, 132, 137, + /* 60 */ 142, 147, 152, 157, 162, 179, 196, 213, 231, 231, + /* 70 */ 101, 351, 350, 233, 47, 102, 54, 54, 234, 57, + /* 80 */ 66, 66, 47, 72, 90, 90, 241, 97, 122, 122, + /* 90 */ 47, 127, 142, 142, 233, 147, 177, 170, 58, 194, + /* 100 */ 57, 235, 47, 235, 72, 692, 1, 60, 97, 60, + /* 110 */ 59, 78, 127, 78, 47, 105, 147, 105, 253, 132, + /* 120 */ 187, 132, 47, 152, 237, 152, 48, 211, 91, 204, + /* 130 */ 63, 237, 254, 351, 84, 98, 47, 63, 113, 106, + /* 140 */ 351, 84, 137, 114, 351, 113, 157, 232, 351, 137, + /* 150 */ 228, 109, 46, 157, 49, 236, 110, 221, 49, 163, + /* 160 */ 172, 173, 174, 175, 176, 164, 165, 166, 167, 168, + /* 170 */ 169, 180, 189, 190, 191, 192, 193, 181, 182, 183, + /* 180 */ 184, 185, 186, 353, 50, 197, 206, 207, 208, 209, + /* 190 */ 210, 355, 198, 199, 200, 201, 202, 203, 18, 52, + /* 200 */ 358, 20, 214, 223, 224, 225, 226, 227, 21, 53, + /* 210 */ 215, 216, 217, 218, 219, 220, 239, 118, 55, 51, + /* 220 */ 56, 46, 119, 46, 243, 46, 61, 49, 62, 49, + /* 230 */ 245, 49, 51, 64, 65, 51, 51, 248, 249, 250, + /* 240 */ 70, 357, 46, 46, 46, 46, 255, 76, 240, 258, + /* 250 */ 47, 47, 49, 259, 260, 82, 49, 49, 49, 361, + /* 260 */ 263, 264, 51, 51, 265, 88, 51, 51, 359, 23, + /* 270 */ 242, 24, 26, 362, 27, 29, 67, 30, 69, 364, + /* 280 */ 244, 73, 365, 34, 367, 246, 368, 79, 251, 370, + /* 290 */ 75, 38, 81, 85, 256, 374, 68, 42, 247, 71, + /* 300 */ 87, 261, 10, 373, 92, 74, 378, 252, 77, 267, + /* 310 */ 377, 266, 95, 80, 382, 257, 83, 269, 381, 268, + /* 320 */ 86, 91, 96, 262, 89, 386, 385, 11, 389, 99, + /* 330 */ 391, 100, 270, 272, 271, 103, 98, 12, 104, 394, + /* 340 */ 396, 107, 106, 108, 111, 274, 273, 13, 401, 277, + /* 350 */ 120, 114, 123, 112, 275, 115, 125, 279, 399, 406, + /* 360 */ 278, 116, 117, 276, 128, 404, 408, 130, 121, 133, + /* 370 */ 280, 135, 138, 409, 140, 143, 145, 148, 153, 150, + /* 380 */ 124, 126, 155, 158, 129, 131, 160, 2, 3, 4, + /* 390 */ 134, 5, 136, 693, 693, 693, 693, 139, 693, 141, + /* 400 */ 693, 693, 693, 144, 693, 146, 693, 6, 412, 7, + /* 410 */ 411, 693, 149, 151, 693, 281, 415, 154, 414, 156, + /* 420 */ 693, 693, 282, 693, 417, 159, 418, 161, 693, 693, + /* 430 */ 693, 8, 283, 421, 420, 693, 284, 693, 423, 424, + /* 440 */ 693, 693, 9, 693, 285, 693, 693, 427, 693, 426, + /* 450 */ 693, 693, 286, 693, 429, 693, 693, 693, 693, 693, + /* 460 */ 430, 693, 693, 693, 693, 287, 432, 693, 433, 693, + /* 470 */ 434, 435, 693, 436, 437, 171, 315, 14, 438, 15, + /* 480 */ 288, 289, 290, 291, 292, 293, 460, 178, 294, 445, + /* 490 */ 349, 352, 16, 19, 354, 17, 693, 447, 360, 356, + /* 500 */ 448, 693, 22, 363, 693, 449, 693, 450, 366, 25, + /* 510 */ 451, 693, 452, 188, 453, 28, 295, 369, 296, 297, + /* 520 */ 298, 299, 300, 195, 371, 31, 32, 33, 372, 375, + /* 530 */ 35, 36, 37, 376, 379, 39, 301, 40, 462, 463, + /* 540 */ 464, 465, 205, 466, 467, 41, 380, 468, 302, 303, + /* 550 */ 304, 383, 212, 305, 43, 306, 384, 307, 44, 475, + /* 560 */ 45, 387, 388, 390, 392, 308, 477, 393, 478, 395, + /* 570 */ 479, 480, 397, 398, 481, 222, 482, 400, 402, 403, + /* 580 */ 405, 483, 407, 410, 309, 413, 310, 416, 419, 422, + /* 590 */ 425, 428, 311, 431, 439, 440, 229, 312, 313, 441, + /* 600 */ 442, 443, 314, 444, 446, 454, 455, 456, 457, 458, + /* 610 */ 459, 461, 469, 470, 471, 472, 473, 474, 476, 484, + /* 620 */ 485, 486, 487, 488, 489, +}; + +static const YYCODETYPE yy_lookahead[] = { + /* 0 */ 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, + /* 10 */ 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, + /* 20 */ 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, + /* 30 */ 67, 68, 69, 70, 0, 74, 2, 76, 71, 5, + /* 40 */ 6, 7, 75, 76, 10, 11, 12, 13, 14, 15, + /* 50 */ 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, + /* 60 */ 26, 27, 28, 29, 30, 31, 32, 33, 2, 2, + /* 70 */ 72, 8, 76, 5, 76, 77, 10, 10, 72, 11, + /* 80 */ 14, 14, 76, 15, 18, 18, 72, 19, 22, 22, + /* 90 */ 76, 23, 26, 26, 5, 27, 30, 30, 72, 31, + /* 100 */ 11, 6, 76, 6, 15, 35, 36, 12, 19, 12, + /* 110 */ 72, 16, 23, 16, 76, 20, 27, 20, 72, 24, + /* 120 */ 31, 24, 76, 28, 7, 28, 76, 32, 3, 32, + /* 130 */ 13, 7, 72, 8, 17, 3, 76, 13, 21, 3, + /* 140 */ 8, 17, 25, 3, 8, 21, 29, 71, 8, 25, + /* 150 */ 33, 73, 76, 29, 76, 73, 78, 33, 76, 43, + /* 160 */ 44, 45, 46, 47, 48, 43, 44, 45, 46, 47, + /* 170 */ 48, 57, 58, 59, 60, 61, 62, 57, 58, 59, + /* 180 */ 60, 61, 62, 76, 76, 50, 51, 52, 53, 54, + /* 190 */ 55, 76, 50, 51, 52, 53, 54, 55, 3, 76, + /* 200 */ 88, 9, 64, 65, 66, 67, 68, 69, 3, 76, + /* 210 */ 64, 65, 66, 67, 68, 69, 71, 74, 71, 76, + /* 220 */ 71, 76, 79, 76, 73, 76, 73, 76, 73, 76, + /* 230 */ 74, 76, 76, 74, 74, 76, 76, 71, 71, 71, + /* 240 */ 71, 76, 76, 76, 76, 76, 72, 72, 84, 73, + /* 250 */ 76, 76, 76, 73, 73, 73, 76, 76, 76, 89, + /* 260 */ 74, 74, 76, 76, 74, 74, 76, 76, 84, 9, + /* 270 */ 85, 3, 9, 85, 3, 9, 3, 3, 9, 90, + /* 280 */ 86, 3, 86, 3, 91, 87, 87, 3, 84, 92, + /* 290 */ 9, 3, 9, 3, 85, 93, 96, 3, 97, 96, + /* 300 */ 9, 86, 3, 97, 76, 98, 94, 99, 98, 76, + /* 310 */ 99, 87, 9, 100, 95, 101, 100, 80, 101, 84, + /* 320 */ 102, 3, 75, 103, 102, 104, 103, 3, 80, 76, + /* 330 */ 105, 76, 76, 81, 85, 9, 3, 3, 77, 81, + /* 340 */ 106, 76, 3, 76, 9, 86, 76, 3, 107, 87, + /* 350 */ 9, 3, 3, 78, 82, 76, 9, 112, 82, 108, + /* 360 */ 83, 76, 76, 76, 3, 83, 112, 9, 79, 3, + /* 370 */ 113, 9, 3, 109, 9, 3, 9, 3, 3, 9, + /* 380 */ 88, 88, 9, 3, 89, 89, 9, 3, 9, 3, + /* 390 */ 90, 9, 90, 132, 132, 132, 132, 91, 132, 91, + /* 400 */ 132, 132, 132, 92, 132, 92, 132, 3, 110, 9, + /* 410 */ 113, 132, 93, 93, 132, 114, 111, 94, 114, 94, + /* 420 */ 132, 132, 115, 132, 115, 95, 116, 95, 132, 132, + /* 430 */ 132, 3, 120, 117, 120, 132, 121, 132, 121, 118, + /* 440 */ 132, 132, 9, 132, 122, 132, 132, 119, 132, 122, + /* 450 */ 132, 132, 123, 132, 123, 132, 132, 132, 132, 132, + /* 460 */ 124, 132, 132, 132, 132, 128, 128, 132, 128, 132, + /* 470 */ 128, 128, 132, 128, 128, 124, 1, 3, 128, 3, + /* 480 */ 128, 128, 128, 128, 128, 128, 126, 124, 129, 125, + /* 490 */ 4, 4, 3, 9, 4, 3, 132, 129, 4, 4, + /* 500 */ 129, 132, 9, 4, 132, 129, 132, 129, 4, 9, + /* 510 */ 129, 132, 129, 125, 129, 9, 129, 4, 129, 129, + /* 520 */ 129, 129, 129, 125, 4, 9, 9, 9, 4, 4, + /* 530 */ 9, 9, 9, 4, 4, 9, 130, 9, 130, 130, + /* 540 */ 130, 130, 126, 130, 130, 9, 4, 130, 130, 130, + /* 550 */ 130, 4, 126, 130, 9, 130, 4, 130, 9, 127, + /* 560 */ 9, 4, 4, 4, 4, 131, 131, 4, 131, 4, + /* 570 */ 131, 131, 4, 4, 131, 127, 131, 4, 4, 4, + /* 580 */ 4, 131, 4, 4, 131, 4, 131, 4, 4, 4, + /* 590 */ 4, 4, 131, 4, 4, 4, 127, 131, 131, 4, + /* 600 */ 4, 4, 131, 4, 4, 4, 4, 4, 4, 4, + /* 610 */ 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, + /* 620 */ 4, 4, 4, 4, 4, +}; + +#define YY_SHIFT_USE_DFLT (-1) +#define YY_SHIFT_MAX 314 +static const short yy_shift_ofst[] = { + /* 0 */ -1, 34, 66, 67, 68, 89, 95, 97, 117, 124, + /* 10 */ 125, 132, 136, 140, 63, 63, 63, 63, 63, 63, + /* 20 */ 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + /* 30 */ 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + /* 40 */ 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, + /* 50 */ 63, 63, 63, 63, 195, 192, 192, 205, 260, 260, + /* 60 */ 268, 263, 263, 271, 266, 266, 273, 274, 269, 274, + /* 70 */ 192, 269, 278, 280, 281, 280, 260, 281, 284, 288, + /* 80 */ 283, 288, 263, 283, 290, 294, 291, 294, 266, 291, + /* 90 */ 299, 63, 63, 192, 303, 318, 303, 324, 63, 63, + /* 100 */ 63, 260, 326, 333, 326, 334, 63, 63, 63, 263, + /* 110 */ 335, 339, 335, 344, 63, 63, 63, 63, 266, 341, + /* 120 */ 348, 341, 349, 195, 347, 195, 347, 361, 205, 358, + /* 130 */ 205, 358, 366, 268, 362, 268, 362, 369, 271, 365, + /* 140 */ 271, 365, 372, 273, 367, 273, 367, 374, 278, 370, + /* 150 */ 278, 370, 375, 284, 373, 284, 373, 380, 290, 377, + /* 160 */ 290, 377, 384, 379, 379, 379, 379, 379, 379, 379, + /* 170 */ 384, 379, 379, 379, 379, 379, 379, 384, 379, 386, + /* 180 */ 382, 382, 382, 382, 382, 382, 382, 386, 382, 382, + /* 190 */ 382, 382, 382, 382, 386, 382, 404, 400, 400, 400, + /* 200 */ 400, 400, 400, 400, 404, 400, 400, 400, 400, 400, + /* 210 */ 400, 404, 400, 428, 433, 433, 433, 433, 433, 433, + /* 220 */ 433, 428, 433, 433, 433, 433, 433, 433, 428, 433, + /* 230 */ 475, 474, 486, 476, 487, 489, 490, 492, 495, 484, + /* 240 */ 494, 493, 499, 500, 504, 506, 513, 520, 516, 517, + /* 250 */ 518, 524, 525, 521, 522, 523, 529, 530, 526, 528, + /* 260 */ 536, 542, 547, 545, 549, 551, 552, 557, 558, 559, + /* 270 */ 560, 563, 565, 568, 569, 573, 574, 575, 576, 578, + /* 280 */ 579, 581, 583, 584, 585, 586, 587, 589, 590, 591, + /* 290 */ 595, 596, 597, 599, 600, 601, 602, 603, 604, 605, + /* 300 */ 606, 607, 608, 609, 610, 611, 612, 613, 614, 615, + /* 310 */ 616, 617, 618, 619, 620, +}; + +#define YY_REDUCE_USE_DFLT (-40) +#define YY_REDUCE_MAX 229 +static const short yy_reduce_ofst[] = { + /* 0 */ 70, -37, 116, 122, 114, 120, 135, 142, 138, 146, + /* 10 */ -33, -2, 78, 143, 76, 6, 82, -39, 145, 147, + /* 20 */ 149, 14, 26, 38, 151, 153, 155, 156, 159, 160, + /* 30 */ 166, 167, 168, 169, 46, 60, 174, 175, 176, 180, + /* 40 */ 181, 182, 186, 187, 190, 191, -4, 50, 107, 108, + /* 50 */ 115, 123, 133, 165, 112, 164, 184, 170, 185, 188, + /* 60 */ 189, 194, 196, 193, 198, 199, 197, 200, 201, 203, + /* 70 */ 204, 206, 202, 207, 208, 210, 209, 211, 212, 213, + /* 80 */ 214, 216, 215, 217, 219, 218, 220, 222, 224, 223, + /* 90 */ 221, 228, 233, 235, 237, 247, 248, 225, 253, 255, + /* 100 */ 256, 249, 252, 261, 258, 234, 265, 267, 270, 259, + /* 110 */ 272, 275, 276, 241, 279, 285, 286, 287, 262, 277, + /* 120 */ 289, 282, 251, 292, 245, 293, 254, 264, 295, 257, + /* 130 */ 296, 297, 298, 300, 301, 302, 304, 305, 306, 307, + /* 140 */ 308, 309, 310, 311, 312, 313, 314, 316, 319, 315, + /* 150 */ 320, 317, 321, 323, 322, 325, 327, 328, 330, 329, + /* 160 */ 332, 331, 336, 337, 338, 340, 342, 343, 345, 346, + /* 170 */ 351, 350, 352, 353, 354, 355, 356, 363, 357, 364, + /* 180 */ 359, 368, 371, 376, 378, 381, 383, 388, 385, 387, + /* 190 */ 389, 390, 391, 392, 398, 393, 360, 406, 408, 409, + /* 200 */ 410, 411, 413, 414, 416, 417, 418, 419, 420, 423, + /* 210 */ 425, 426, 427, 432, 434, 435, 437, 439, 440, 443, + /* 220 */ 445, 448, 450, 453, 455, 461, 466, 467, 469, 471, +}; + +static const YYACTIONTYPE yy_default[] = { + /* 0 */ 491, 691, 691, 691, 691, 691, 691, 691, 691, 691, + /* 10 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, + /* 20 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, + /* 30 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, + /* 40 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, + /* 50 */ 691, 691, 691, 691, 691, 547, 547, 691, 549, 549, + /* 60 */ 691, 551, 551, 691, 553, 553, 691, 691, 572, 691, + /* 70 */ 547, 572, 691, 691, 575, 691, 549, 575, 691, 691, + /* 80 */ 578, 691, 551, 578, 691, 691, 581, 691, 553, 581, + /* 90 */ 691, 691, 691, 547, 539, 691, 539, 691, 691, 691, + /* 100 */ 691, 549, 541, 691, 541, 691, 691, 691, 691, 551, + /* 110 */ 543, 691, 543, 691, 691, 691, 691, 691, 553, 545, + /* 120 */ 691, 545, 691, 691, 600, 691, 600, 691, 691, 603, + /* 130 */ 691, 603, 691, 691, 606, 691, 606, 691, 691, 609, + /* 140 */ 691, 609, 691, 691, 616, 691, 616, 691, 691, 619, + /* 150 */ 691, 619, 691, 691, 622, 691, 622, 691, 691, 625, + /* 160 */ 691, 625, 691, 638, 638, 638, 638, 638, 638, 638, + /* 170 */ 691, 638, 638, 638, 638, 638, 638, 691, 638, 691, + /* 180 */ 653, 653, 653, 653, 653, 653, 653, 691, 653, 653, + /* 190 */ 653, 653, 653, 653, 691, 653, 691, 668, 668, 668, + /* 200 */ 668, 668, 668, 668, 691, 668, 668, 668, 668, 668, + /* 210 */ 668, 691, 668, 691, 683, 683, 683, 683, 683, 683, + /* 220 */ 683, 691, 683, 683, 683, 683, 683, 683, 691, 683, + /* 230 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, + /* 240 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, + /* 250 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, + /* 260 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, + /* 270 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, + /* 280 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, + /* 290 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, + /* 300 */ 691, 691, 691, 691, 691, 691, 691, 691, 691, 691, + /* 310 */ 691, 691, 691, 691, 691, 492, 493, 494, 495, 496, + /* 320 */ 497, 498, 499, 500, 501, 502, 503, 504, 505, 506, + /* 330 */ 507, 508, 509, 510, 511, 512, 513, 514, 515, 516, + /* 340 */ 517, 518, 519, 520, 521, 522, 523, 524, 525, 526, + /* 350 */ 534, 538, 527, 535, 528, 536, 529, 537, 555, 548, + /* 360 */ 559, 556, 550, 560, 557, 552, 561, 558, 554, 562, + /* 370 */ 563, 567, 571, 573, 564, 568, 574, 576, 565, 569, + /* 380 */ 577, 579, 566, 570, 580, 582, 583, 530, 587, 540, + /* 390 */ 591, 584, 531, 588, 542, 592, 585, 532, 589, 544, + /* 400 */ 593, 586, 533, 590, 546, 594, 595, 599, 601, 596, + /* 410 */ 602, 604, 597, 605, 607, 598, 608, 610, 611, 615, + /* 420 */ 617, 612, 618, 620, 613, 621, 623, 614, 624, 626, + /* 430 */ 627, 631, 639, 640, 641, 642, 643, 644, 645, 632, + /* 440 */ 633, 634, 635, 636, 637, 628, 646, 654, 655, 656, + /* 450 */ 657, 658, 659, 660, 647, 648, 649, 650, 651, 652, + /* 460 */ 629, 661, 669, 670, 671, 672, 673, 674, 675, 662, + /* 470 */ 663, 664, 665, 666, 667, 630, 676, 684, 685, 686, + /* 480 */ 687, 688, 689, 690, 677, 678, 679, 680, 681, 682, +}; + +#define YY_SZ_ACTTAB (int)(sizeof(yy_action)/sizeof(yy_action[0])) + +/* The next table maps tokens into fallback tokens. If a construct +** like the following: +** +** %fallback ID X Y Z. +** +** appears in the grammar, then ID becomes a fallback token for X, Y, +** and Z. Whenever one of the tokens X, Y, or Z is input to the parser +** but it does not parse, the type of the token is changed to ID and +** the parse is retried before an error is thrown. +*/ +#ifdef YYFALLBACK +static const YYCODETYPE yyFallback[] = { +}; +#endif /* YYFALLBACK */ + +/* The following structure represents a single element of the +** parser's stack. Information stored includes: +** +** + The state number for the parser at this level of the stack. +** +** + The value of the token stored at this level of the stack. +** (In other words, the "major" token.) +** +** + The semantic value stored at this level of the stack. This is +** the information used by the action routines in the grammar. +** It is sometimes called the "minor" token. +*/ +struct yyStackEntry +{ + YYACTIONTYPE stateno; /* The state-number */ + YYCODETYPE major; /* The major token value. This is the code + ** number for the token at this stack level */ + YYMINORTYPE minor; /* The user-supplied minor token value. This + ** is the value of the token */ +}; +typedef struct yyStackEntry yyStackEntry; + +/* The state of the parser is completely contained in an instance of +** the following structure */ +struct yyParser +{ + int yyidx; /* Index of top element in stack */ +#ifdef YYTRACKMAXSTACKDEPTH + int yyidxMax; /* Maximum value of yyidx */ +#endif + int yyerrcnt; /* Shifts left before out of the error */ + ParseARG_SDECL /* A place to hold %extra_argument */ +#if YYSTACKDEPTH<=0 + int yystksz; /* Current side of the stack */ + yyStackEntry *yystack; /* The parser's stack */ +#else + yyStackEntry yystack[YYSTACKDEPTH]; /* The parser's stack */ +#endif +}; +typedef struct yyParser yyParser; + +#ifndef NDEBUG +#include <stdio.h> +static FILE *yyTraceFILE = 0; +static char *yyTracePrompt = 0; +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* +** Turn parser tracing on by giving a stream to which to write the trace +** and a prompt to preface each trace message. Tracing is turned off +** by making either argument NULL +** +** Inputs: +** <ul> +** <li> A FILE* to which trace output should be written. +** If NULL, then tracing is turned off. +** <li> A prefix string written at the beginning of every +** line of trace output. If NULL, then tracing is +** turned off. +** </ul> +** +** Outputs: +** None. +*/ +void +ParseTrace (FILE * TraceFILE, char *zTracePrompt) +{ + yyTraceFILE = TraceFILE; + yyTracePrompt = zTracePrompt; + if (yyTraceFILE == 0) + yyTracePrompt = 0; + else if (yyTracePrompt == 0) + yyTraceFILE = 0; +} +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* For tracing shifts, the names of all terminals and nonterminals +** are required. The following table supplies these names */ +static const char *const yyTokenName[] = { + "$", "VANUATU_NEWLINE", "VANUATU_POINT", "VANUATU_OPEN_BRACKET", + "VANUATU_CLOSE_BRACKET", "VANUATU_POINT_M", "VANUATU_POINT_Z", + "VANUATU_POINT_ZM", + "VANUATU_NUM", "VANUATU_COMMA", "VANUATU_LINESTRING", + "VANUATU_LINESTRING_M", + "VANUATU_LINESTRING_Z", "VANUATU_LINESTRING_ZM", "VANUATU_POLYGON", + "VANUATU_POLYGON_M", + "VANUATU_POLYGON_Z", "VANUATU_POLYGON_ZM", "VANUATU_MULTIPOINT", + "VANUATU_MULTIPOINT_M", + "VANUATU_MULTIPOINT_Z", "VANUATU_MULTIPOINT_ZM", "VANUATU_MULTILINESTRING", + "VANUATU_MULTILINESTRING_M", + "VANUATU_MULTILINESTRING_Z", "VANUATU_MULTILINESTRING_ZM", + "VANUATU_MULTIPOLYGON", "VANUATU_MULTIPOLYGON_M", + "VANUATU_MULTIPOLYGON_Z", "VANUATU_MULTIPOLYGON_ZM", + "VANUATU_GEOMETRYCOLLECTION", "VANUATU_GEOMETRYCOLLECTION_M", + "VANUATU_GEOMETRYCOLLECTION_Z", "VANUATU_GEOMETRYCOLLECTION_ZM", "error", + "main", + "in", "state", "program", "geo_text", + "geo_textz", "geo_textm", "geo_textzm", "point", + "linestring", "polygon", "multipoint", "multilinestring", + "multipolygon", "geocoll", "pointz", "linestringz", + "polygonz", "multipointz", "multilinestringz", "multipolygonz", + "geocollz", "pointm", "linestringm", "polygonm", + "multipointm", "multilinestringm", "multipolygonm", "geocollm", + "pointzm", "linestringzm", "polygonzm", "multipointzm", + "multilinestringzm", "multipolygonzm", "geocollzm", "point_coordxy", + "point_coordxym", "point_coordxyz", "point_coordxyzm", "point_brkt_coordxy", + "coord", "point_brkt_coordxym", "point_brkt_coordxyz", + "point_brkt_coordxyzm", + "extra_brkt_pointsxy", "extra_brkt_pointsxym", "extra_brkt_pointsxyz", + "extra_brkt_pointsxyzm", + "extra_pointsxy", "extra_pointsxym", "extra_pointsxyz", "extra_pointsxyzm", + "linestring_text", "linestring_textm", "linestring_textz", + "linestring_textzm", + "polygon_text", "polygon_textm", "polygon_textz", "polygon_textzm", + "ring", "extra_rings", "ringm", "extra_ringsm", + "ringz", "extra_ringsz", "ringzm", "extra_ringszm", + "multipoint_text", "multipoint_textm", "multipoint_textz", + "multipoint_textzm", + "multilinestring_text", "multilinestring_textm", "multilinestring_textz", + "multilinestring_textzm", + "multilinestring_text2", "multilinestring_textm2", "multilinestring_textz2", + "multilinestring_textzm2", + "multipolygon_text", "multipolygon_textm", "multipolygon_textz", + "multipolygon_textzm", + "multipolygon_text2", "multipolygon_textm2", "multipolygon_textz2", + "multipolygon_textzm2", + "geocoll_text", "geocoll_textm", "geocoll_textz", "geocoll_textzm", + "geocoll_text2", "geocoll_textm2", "geocoll_textz2", "geocoll_textzm2", +}; +#endif /* NDEBUG */ + +#ifndef NDEBUG +/* For tracing reduce actions, the names of all rules are required. +*/ +static const char *const yyRuleName[] = { + /* 0 */ "main ::= in", + /* 1 */ "in ::=", + /* 2 */ "in ::= in state VANUATU_NEWLINE", + /* 3 */ "state ::= program", + /* 4 */ "program ::= geo_text", + /* 5 */ "program ::= geo_textz", + /* 6 */ "program ::= geo_textm", + /* 7 */ "program ::= geo_textzm", + /* 8 */ "geo_text ::= point", + /* 9 */ "geo_text ::= linestring", + /* 10 */ "geo_text ::= polygon", + /* 11 */ "geo_text ::= multipoint", + /* 12 */ "geo_text ::= multilinestring", + /* 13 */ "geo_text ::= multipolygon", + /* 14 */ "geo_text ::= geocoll", + /* 15 */ "geo_textz ::= pointz", + /* 16 */ "geo_textz ::= linestringz", + /* 17 */ "geo_textz ::= polygonz", + /* 18 */ "geo_textz ::= multipointz", + /* 19 */ "geo_textz ::= multilinestringz", + /* 20 */ "geo_textz ::= multipolygonz", + /* 21 */ "geo_textz ::= geocollz", + /* 22 */ "geo_textm ::= pointm", + /* 23 */ "geo_textm ::= linestringm", + /* 24 */ "geo_textm ::= polygonm", + /* 25 */ "geo_textm ::= multipointm", + /* 26 */ "geo_textm ::= multilinestringm", + /* 27 */ "geo_textm ::= multipolygonm", + /* 28 */ "geo_textm ::= geocollm", + /* 29 */ "geo_textzm ::= pointzm", + /* 30 */ "geo_textzm ::= linestringzm", + /* 31 */ "geo_textzm ::= polygonzm", + /* 32 */ "geo_textzm ::= multipointzm", + /* 33 */ "geo_textzm ::= multilinestringzm", + /* 34 */ "geo_textzm ::= multipolygonzm", + /* 35 */ "geo_textzm ::= geocollzm", + /* 36 */ + "point ::= VANUATU_POINT VANUATU_OPEN_BRACKET point_coordxy VANUATU_CLOSE_BRACKET", + /* 37 */ + "pointm ::= VANUATU_POINT_M VANUATU_OPEN_BRACKET point_coordxym VANUATU_CLOSE_BRACKET", + /* 38 */ + "pointz ::= VANUATU_POINT_Z VANUATU_OPEN_BRACKET point_coordxyz VANUATU_CLOSE_BRACKET", + /* 39 */ + "pointzm ::= VANUATU_POINT_ZM VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_CLOSE_BRACKET", + /* 40 */ + "point_brkt_coordxy ::= VANUATU_OPEN_BRACKET coord coord VANUATU_CLOSE_BRACKET", + /* 41 */ + "point_brkt_coordxym ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET", + /* 42 */ + "point_brkt_coordxyz ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET", + /* 43 */ + "point_brkt_coordxyzm ::= VANUATU_OPEN_BRACKET coord coord coord coord VANUATU_CLOSE_BRACKET", + /* 44 */ "point_coordxy ::= coord coord", + /* 45 */ "point_coordxym ::= coord coord coord", + /* 46 */ "point_coordxyz ::= coord coord coord", + /* 47 */ "point_coordxyzm ::= coord coord coord coord", + /* 48 */ "coord ::= VANUATU_NUM", + /* 49 */ "extra_brkt_pointsxy ::=", + /* 50 */ + "extra_brkt_pointsxy ::= VANUATU_COMMA point_brkt_coordxy extra_brkt_pointsxy", + /* 51 */ "extra_brkt_pointsxym ::=", + /* 52 */ + "extra_brkt_pointsxym ::= VANUATU_COMMA point_brkt_coordxym extra_brkt_pointsxym", + /* 53 */ "extra_brkt_pointsxyz ::=", + /* 54 */ + "extra_brkt_pointsxyz ::= VANUATU_COMMA point_brkt_coordxyz extra_brkt_pointsxyz", + /* 55 */ "extra_brkt_pointsxyzm ::=", + /* 56 */ + "extra_brkt_pointsxyzm ::= VANUATU_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm", + /* 57 */ "extra_pointsxy ::=", + /* 58 */ "extra_pointsxy ::= VANUATU_COMMA point_coordxy extra_pointsxy", + /* 59 */ "extra_pointsxym ::=", + /* 60 */ + "extra_pointsxym ::= VANUATU_COMMA point_coordxym extra_pointsxym", + /* 61 */ "extra_pointsxyz ::=", + /* 62 */ + "extra_pointsxyz ::= VANUATU_COMMA point_coordxyz extra_pointsxyz", + /* 63 */ "extra_pointsxyzm ::=", + /* 64 */ + "extra_pointsxyzm ::= VANUATU_COMMA point_coordxyzm extra_pointsxyzm", + /* 65 */ "linestring ::= VANUATU_LINESTRING linestring_text", + /* 66 */ "linestringm ::= VANUATU_LINESTRING_M linestring_textm", + /* 67 */ "linestringz ::= VANUATU_LINESTRING_Z linestring_textz", + /* 68 */ "linestringzm ::= VANUATU_LINESTRING_ZM linestring_textzm", + /* 69 */ + "linestring_text ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET", + /* 70 */ + "linestring_textm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET", + /* 71 */ + "linestring_textz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET", + /* 72 */ + "linestring_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET", + /* 73 */ "polygon ::= VANUATU_POLYGON polygon_text", + /* 74 */ "polygonm ::= VANUATU_POLYGON_M polygon_textm", + /* 75 */ "polygonz ::= VANUATU_POLYGON_Z polygon_textz", + /* 76 */ "polygonzm ::= VANUATU_POLYGON_ZM polygon_textzm", + /* 77 */ + "polygon_text ::= VANUATU_OPEN_BRACKET ring extra_rings VANUATU_CLOSE_BRACKET", + /* 78 */ + "polygon_textm ::= VANUATU_OPEN_BRACKET ringm extra_ringsm VANUATU_CLOSE_BRACKET", + /* 79 */ + "polygon_textz ::= VANUATU_OPEN_BRACKET ringz extra_ringsz VANUATU_CLOSE_BRACKET", + /* 80 */ + "polygon_textzm ::= VANUATU_OPEN_BRACKET ringzm extra_ringszm VANUATU_CLOSE_BRACKET", + /* 81 */ + "ring ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET", + /* 82 */ "extra_rings ::=", + /* 83 */ "extra_rings ::= VANUATU_COMMA ring extra_rings", + /* 84 */ + "ringm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET", + /* 85 */ "extra_ringsm ::=", + /* 86 */ "extra_ringsm ::= VANUATU_COMMA ringm extra_ringsm", + /* 87 */ + "ringz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET", + /* 88 */ "extra_ringsz ::=", + /* 89 */ "extra_ringsz ::= VANUATU_COMMA ringz extra_ringsz", + /* 90 */ + "ringzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET", + /* 91 */ "extra_ringszm ::=", + /* 92 */ "extra_ringszm ::= VANUATU_COMMA ringzm extra_ringszm", + /* 93 */ "multipoint ::= VANUATU_MULTIPOINT multipoint_text", + /* 94 */ "multipointm ::= VANUATU_MULTIPOINT_M multipoint_textm", + /* 95 */ "multipointz ::= VANUATU_MULTIPOINT_Z multipoint_textz", + /* 96 */ "multipointzm ::= VANUATU_MULTIPOINT_ZM multipoint_textzm", + /* 97 */ + "multipoint_text ::= VANUATU_OPEN_BRACKET point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET", + /* 98 */ + "multipoint_textm ::= VANUATU_OPEN_BRACKET point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET", + /* 99 */ + "multipoint_textz ::= VANUATU_OPEN_BRACKET point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET", + /* 100 */ + "multipoint_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET", + /* 101 */ + "multipoint_text ::= VANUATU_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy VANUATU_CLOSE_BRACKET", + /* 102 */ + "multipoint_textm ::= VANUATU_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym VANUATU_CLOSE_BRACKET", + /* 103 */ + "multipoint_textz ::= VANUATU_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz VANUATU_CLOSE_BRACKET", + /* 104 */ + "multipoint_textzm ::= VANUATU_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm VANUATU_CLOSE_BRACKET", + /* 105 */ + "multilinestring ::= VANUATU_MULTILINESTRING multilinestring_text", + /* 106 */ + "multilinestringm ::= VANUATU_MULTILINESTRING_M multilinestring_textm", + /* 107 */ + "multilinestringz ::= VANUATU_MULTILINESTRING_Z multilinestring_textz", + /* 108 */ + "multilinestringzm ::= VANUATU_MULTILINESTRING_ZM multilinestring_textzm", + /* 109 */ + "multilinestring_text ::= VANUATU_OPEN_BRACKET linestring_text multilinestring_text2 VANUATU_CLOSE_BRACKET", + /* 110 */ "multilinestring_text2 ::=", + /* 111 */ + "multilinestring_text2 ::= VANUATU_COMMA linestring_text multilinestring_text2", + /* 112 */ + "multilinestring_textm ::= VANUATU_OPEN_BRACKET linestring_textm multilinestring_textm2 VANUATU_CLOSE_BRACKET", + /* 113 */ "multilinestring_textm2 ::=", + /* 114 */ + "multilinestring_textm2 ::= VANUATU_COMMA linestring_textm multilinestring_textm2", + /* 115 */ + "multilinestring_textz ::= VANUATU_OPEN_BRACKET linestring_textz multilinestring_textz2 VANUATU_CLOSE_BRACKET", + /* 116 */ "multilinestring_textz2 ::=", + /* 117 */ + "multilinestring_textz2 ::= VANUATU_COMMA linestring_textz multilinestring_textz2", + /* 118 */ + "multilinestring_textzm ::= VANUATU_OPEN_BRACKET linestring_textzm multilinestring_textzm2 VANUATU_CLOSE_BRACKET", + /* 119 */ "multilinestring_textzm2 ::=", + /* 120 */ + "multilinestring_textzm2 ::= VANUATU_COMMA linestring_textzm multilinestring_textzm2", + /* 121 */ "multipolygon ::= VANUATU_MULTIPOLYGON multipolygon_text", + /* 122 */ "multipolygonm ::= VANUATU_MULTIPOLYGON_M multipolygon_textm", + /* 123 */ "multipolygonz ::= VANUATU_MULTIPOLYGON_Z multipolygon_textz", + /* 124 */ "multipolygonzm ::= VANUATU_MULTIPOLYGON_ZM multipolygon_textzm", + /* 125 */ + "multipolygon_text ::= VANUATU_OPEN_BRACKET polygon_text multipolygon_text2 VANUATU_CLOSE_BRACKET", + /* 126 */ "multipolygon_text2 ::=", + /* 127 */ + "multipolygon_text2 ::= VANUATU_COMMA polygon_text multipolygon_text2", + /* 128 */ + "multipolygon_textm ::= VANUATU_OPEN_BRACKET polygon_textm multipolygon_textm2 VANUATU_CLOSE_BRACKET", + /* 129 */ "multipolygon_textm2 ::=", + /* 130 */ + "multipolygon_textm2 ::= VANUATU_COMMA polygon_textm multipolygon_textm2", + /* 131 */ + "multipolygon_textz ::= VANUATU_OPEN_BRACKET polygon_textz multipolygon_textz2 VANUATU_CLOSE_BRACKET", + /* 132 */ "multipolygon_textz2 ::=", + /* 133 */ + "multipolygon_textz2 ::= VANUATU_COMMA polygon_textz multipolygon_textz2", + /* 134 */ + "multipolygon_textzm ::= VANUATU_OPEN_BRACKET polygon_textzm multipolygon_textzm2 VANUATU_CLOSE_BRACKET", + /* 135 */ "multipolygon_textzm2 ::=", + /* 136 */ + "multipolygon_textzm2 ::= VANUATU_COMMA polygon_textzm multipolygon_textzm2", + /* 137 */ "geocoll ::= VANUATU_GEOMETRYCOLLECTION geocoll_text", + /* 138 */ "geocollm ::= VANUATU_GEOMETRYCOLLECTION_M geocoll_textm", + /* 139 */ "geocollz ::= VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz", + /* 140 */ "geocollzm ::= VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm", + /* 141 */ + "geocoll_text ::= VANUATU_OPEN_BRACKET point geocoll_text2 VANUATU_CLOSE_BRACKET", + /* 142 */ + "geocoll_text ::= VANUATU_OPEN_BRACKET linestring geocoll_text2 VANUATU_CLOSE_BRACKET", + /* 143 */ + "geocoll_text ::= VANUATU_OPEN_BRACKET polygon geocoll_text2 VANUATU_CLOSE_BRACKET", + /* 144 */ + "geocoll_text ::= VANUATU_OPEN_BRACKET multipoint geocoll_text2 VANUATU_CLOSE_BRACKET", + /* 145 */ + "geocoll_text ::= VANUATU_OPEN_BRACKET multilinestring geocoll_text2 VANUATU_CLOSE_BRACKET", + /* 146 */ + "geocoll_text ::= VANUATU_OPEN_BRACKET multipolygon geocoll_text2 VANUATU_CLOSE_BRACKET", + /* 147 */ + "geocoll_text ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 VANUATU_CLOSE_BRACKET", + /* 148 */ "geocoll_text2 ::=", + /* 149 */ "geocoll_text2 ::= VANUATU_COMMA point geocoll_text2", + /* 150 */ "geocoll_text2 ::= VANUATU_COMMA linestring geocoll_text2", + /* 151 */ "geocoll_text2 ::= VANUATU_COMMA polygon geocoll_text2", + /* 152 */ "geocoll_text2 ::= VANUATU_COMMA multipoint geocoll_text2", + /* 153 */ "geocoll_text2 ::= VANUATU_COMMA multilinestring geocoll_text2", + /* 154 */ "geocoll_text2 ::= VANUATU_COMMA multipolygon geocoll_text2", + /* 155 */ + "geocoll_text2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2", + /* 156 */ + "geocoll_textm ::= VANUATU_OPEN_BRACKET pointm geocoll_textm2 VANUATU_CLOSE_BRACKET", + /* 157 */ + "geocoll_textm ::= VANUATU_OPEN_BRACKET linestringm geocoll_textm2 VANUATU_CLOSE_BRACKET", + /* 158 */ + "geocoll_textm ::= VANUATU_OPEN_BRACKET polygonm geocoll_textm2 VANUATU_CLOSE_BRACKET", + /* 159 */ + "geocoll_textm ::= VANUATU_OPEN_BRACKET multipointm geocoll_textm2 VANUATU_CLOSE_BRACKET", + /* 160 */ + "geocoll_textm ::= VANUATU_OPEN_BRACKET multilinestringm geocoll_textm2 VANUATU_CLOSE_BRACKET", + /* 161 */ + "geocoll_textm ::= VANUATU_OPEN_BRACKET multipolygonm geocoll_textm2 VANUATU_CLOSE_BRACKET", + /* 162 */ + "geocoll_textm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 VANUATU_CLOSE_BRACKET", + /* 163 */ "geocoll_textm2 ::=", + /* 164 */ "geocoll_textm2 ::= VANUATU_COMMA pointm geocoll_textm2", + /* 165 */ "geocoll_textm2 ::= VANUATU_COMMA linestringm geocoll_textm2", + /* 166 */ "geocoll_textm2 ::= VANUATU_COMMA polygonm geocoll_textm2", + /* 167 */ "geocoll_textm2 ::= VANUATU_COMMA multipointm geocoll_textm2", + /* 168 */ + "geocoll_textm2 ::= VANUATU_COMMA multilinestringm geocoll_textm2", + /* 169 */ "geocoll_textm2 ::= VANUATU_COMMA multipolygonm geocoll_textm2", + /* 170 */ + "geocoll_textm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2", + /* 171 */ + "geocoll_textz ::= VANUATU_OPEN_BRACKET pointz geocoll_textz2 VANUATU_CLOSE_BRACKET", + /* 172 */ + "geocoll_textz ::= VANUATU_OPEN_BRACKET linestringz geocoll_textz2 VANUATU_CLOSE_BRACKET", + /* 173 */ + "geocoll_textz ::= VANUATU_OPEN_BRACKET polygonz geocoll_textz2 VANUATU_CLOSE_BRACKET", + /* 174 */ + "geocoll_textz ::= VANUATU_OPEN_BRACKET multipointz geocoll_textz2 VANUATU_CLOSE_BRACKET", + /* 175 */ + "geocoll_textz ::= VANUATU_OPEN_BRACKET multilinestringz geocoll_textz2 VANUATU_CLOSE_BRACKET", + /* 176 */ + "geocoll_textz ::= VANUATU_OPEN_BRACKET multipolygonz geocoll_textz2 VANUATU_CLOSE_BRACKET", + /* 177 */ + "geocoll_textz ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 VANUATU_CLOSE_BRACKET", + /* 178 */ "geocoll_textz2 ::=", + /* 179 */ "geocoll_textz2 ::= VANUATU_COMMA pointz geocoll_textz2", + /* 180 */ "geocoll_textz2 ::= VANUATU_COMMA linestringz geocoll_textz2", + /* 181 */ "geocoll_textz2 ::= VANUATU_COMMA polygonz geocoll_textz2", + /* 182 */ "geocoll_textz2 ::= VANUATU_COMMA multipointz geocoll_textz2", + /* 183 */ + "geocoll_textz2 ::= VANUATU_COMMA multilinestringz geocoll_textz2", + /* 184 */ "geocoll_textz2 ::= VANUATU_COMMA multipolygonz geocoll_textz2", + /* 185 */ + "geocoll_textz2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2", + /* 186 */ + "geocoll_textzm ::= VANUATU_OPEN_BRACKET pointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", + /* 187 */ + "geocoll_textzm ::= VANUATU_OPEN_BRACKET linestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", + /* 188 */ + "geocoll_textzm ::= VANUATU_OPEN_BRACKET polygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", + /* 189 */ + "geocoll_textzm ::= VANUATU_OPEN_BRACKET multipointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", + /* 190 */ + "geocoll_textzm ::= VANUATU_OPEN_BRACKET multilinestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", + /* 191 */ + "geocoll_textzm ::= VANUATU_OPEN_BRACKET multipolygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", + /* 192 */ + "geocoll_textzm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 VANUATU_CLOSE_BRACKET", + /* 193 */ "geocoll_textzm2 ::=", + /* 194 */ "geocoll_textzm2 ::= VANUATU_COMMA pointzm geocoll_textzm2", + /* 195 */ "geocoll_textzm2 ::= VANUATU_COMMA linestringzm geocoll_textzm2", + /* 196 */ "geocoll_textzm2 ::= VANUATU_COMMA polygonzm geocoll_textzm2", + /* 197 */ "geocoll_textzm2 ::= VANUATU_COMMA multipointzm geocoll_textzm2", + /* 198 */ + "geocoll_textzm2 ::= VANUATU_COMMA multilinestringzm geocoll_textzm2", + /* 199 */ + "geocoll_textzm2 ::= VANUATU_COMMA multipolygonzm geocoll_textzm2", + /* 200 */ + "geocoll_textzm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2", +}; +#endif /* NDEBUG */ + + +#if YYSTACKDEPTH<=0 +/* +** Try to increase the size of the parser stack. +*/ +static void +yyGrowStack (yyParser * p) +{ + int newSize; + yyStackEntry *pNew; + + newSize = p->yystksz * 2 + 100; + pNew = realloc (p->yystack, newSize * sizeof (pNew[0])); + if (pNew) + { + p->yystack = pNew; + p->yystksz = newSize; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sStack grows to %d entries!\n", + yyTracePrompt, p->yystksz); + } +#endif + } +} +#endif + +/* +** This function allocates a new parser. +** The only argument is a pointer to a function which works like +** malloc. +** +** Inputs: +** A pointer to the function used to allocate memory. +** +** Outputs: +** A pointer to a parser. This pointer is used in subsequent calls +** to Parse and ParseFree. +*/ +void * +ParseAlloc (void *(*mallocProc) (size_t)) +{ + yyParser *pParser; + pParser = (yyParser *) (*mallocProc) ((size_t) sizeof (yyParser)); + if (pParser) + { + pParser->yyidx = -1; +#ifdef YYTRACKMAXSTACKDEPTH + pParser->yyidxMax = 0; +#endif +#if YYSTACKDEPTH<=0 + pParser->yystack = NULL; + pParser->yystksz = 0; + yyGrowStack (pParser); +#endif + } + return pParser; +} + +/* The following function deletes the value associated with a +** symbol. The symbol can be either a terminal or nonterminal. +** "yymajor" is the symbol code, and "yypminor" is a pointer to +** the value. +*/ +static void +yy_destructor (yyParser * yypParser, /* The parser */ + YYCODETYPE yymajor, /* Type code for object to destroy */ + YYMINORTYPE * yypminor /* The object to be destroyed */ + ) +{ + ParseARG_FETCH; + switch (yymajor) + { + /* Here is inserted the actions which take place when a + ** terminal or non-terminal is destroyed. This can happen + ** when the symbol is popped from the stack during a + ** reduce or during error processing or when a parser is + ** being destroyed before it is finished parsing. + ** + ** Note: during a reduce, the only symbols destroyed are those + ** which appear on the RHS of the rule, but which are not used + ** inside the C code. + */ + default: + break; /* If no destructor action specified: do nothing */ + } +} + +/* +** Pop the parser's stack once. +** +** If there is a destructor routine associated with the token which +** is popped from the stack, then call it. +** +** Return the major token number for the symbol popped. +*/ +static int +yy_pop_parser_stack (yyParser * pParser) +{ + YYCODETYPE yymajor; + yyStackEntry *yytos = &pParser->yystack[pParser->yyidx]; + + if (pParser->yyidx < 0) + return 0; +#ifndef NDEBUG + if (yyTraceFILE && pParser->yyidx >= 0) + { + fprintf (yyTraceFILE, "%sPopping %s\n", + yyTracePrompt, yyTokenName[yytos->major]); + } +#endif + yymajor = yytos->major; + yy_destructor (pParser, yymajor, &yytos->minor); + pParser->yyidx--; + return yymajor; +} + +/* +** Deallocate and destroy a parser. Destructors are all called for +** all stack elements before shutting the parser down. +** +** Inputs: +** <ul> +** <li> A pointer to the parser. This should be a pointer +** obtained from ParseAlloc. +** <li> A pointer to a function used to reclaim memory obtained +** from malloc. +** </ul> +*/ +void +ParseFree (void *p, /* The parser to be deleted */ + void (*freeProc) (void *) /* Function used to reclaim memory */ + ) +{ + yyParser *pParser = (yyParser *) p; + if (pParser == 0) + return; + while (pParser->yyidx >= 0) + yy_pop_parser_stack (pParser); +#if YYSTACKDEPTH<=0 + free (pParser->yystack); +#endif + (*freeProc) ((void *) pParser); +} + +/* +** Return the peak depth of the stack for a parser. +*/ +#ifdef YYTRACKMAXSTACKDEPTH +int +ParseStackPeak (void *p) +{ + yyParser *pParser = (yyParser *) p; + return pParser->yyidxMax; +} +#endif + +/* +** Find the appropriate action for a parser given the terminal +** look-ahead token iLookAhead. +** +** If the look-ahead token is YYNOCODE, then check to see if the action is +** independent of the look-ahead. If it is, return the action, otherwise +** return YY_NO_ACTION. +*/ +static int +yy_find_shift_action (yyParser * pParser, /* The parser */ + YYCODETYPE iLookAhead /* The look-ahead token */ + ) +{ + int i; + int stateno = pParser->yystack[pParser->yyidx].stateno; + + if (stateno > YY_SHIFT_MAX + || (i = yy_shift_ofst[stateno]) == YY_SHIFT_USE_DFLT) + { + return yy_default[stateno]; + } + assert (iLookAhead != YYNOCODE); + i += iLookAhead; + if (i < 0 || i >= YY_SZ_ACTTAB || yy_lookahead[i] != iLookAhead) + { + if (iLookAhead > 0) + { +#ifdef YYFALLBACK + YYCODETYPE iFallback; /* Fallback token */ + if (iLookAhead < sizeof (yyFallback) / sizeof (yyFallback[0]) + && (iFallback = yyFallback[iLookAhead]) != 0) + { +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sFALLBACK %s => %s\n", + yyTracePrompt, yyTokenName[iLookAhead], + yyTokenName[iFallback]); + } +#endif + return yy_find_shift_action (pParser, iFallback); + } +#endif +#ifdef YYWILDCARD + { + int j = i - iLookAhead + YYWILDCARD; + if (j >= 0 && j < YY_SZ_ACTTAB + && yy_lookahead[j] == YYWILDCARD) + { +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sWILDCARD %s => %s\n", + yyTracePrompt, yyTokenName[iLookAhead], + yyTokenName[YYWILDCARD]); + } +#endif /* NDEBUG */ + return yy_action[j]; + } + } +#endif /* YYWILDCARD */ + } + return yy_default[stateno]; + } + else + { + return yy_action[i]; + } +} + +/* +** Find the appropriate action for a parser given the non-terminal +** look-ahead token iLookAhead. +** +** If the look-ahead token is YYNOCODE, then check to see if the action is +** independent of the look-ahead. If it is, return the action, otherwise +** return YY_NO_ACTION. +*/ +static int +yy_find_reduce_action (int stateno, /* Current state number */ + YYCODETYPE iLookAhead /* The look-ahead token */ + ) +{ + int i; +#ifdef YYERRORSYMBOL + if (stateno > YY_REDUCE_MAX) + { + return yy_default[stateno]; + } +#else + assert (stateno <= YY_REDUCE_MAX); +#endif + i = yy_reduce_ofst[stateno]; + assert (i != YY_REDUCE_USE_DFLT); + assert (iLookAhead != YYNOCODE); + i += iLookAhead; +#ifdef YYERRORSYMBOL + if (i < 0 || i >= YY_SZ_ACTTAB || yy_lookahead[i] != iLookAhead) + { + return yy_default[stateno]; + } +#else + assert (i >= 0 && i < YY_SZ_ACTTAB); + assert (yy_lookahead[i] == iLookAhead); +#endif + return yy_action[i]; +} + +/* +** The following routine is called if the stack overflows. +*/ +static void +yyStackOverflow (yyParser * yypParser, YYMINORTYPE * yypMinor) +{ + ParseARG_FETCH; + yypParser->yyidx--; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sStack Overflow!\n", yyTracePrompt); + } +#endif + while (yypParser->yyidx >= 0) + yy_pop_parser_stack (yypParser); + /* Here code is inserted which will execute if the parser + ** stack every overflows */ + + spatialite_e ("Giving up. Parser stack overflow\n"); + ParseARG_STORE; /* Suppress warning about unused %extra_argument var */ +} + +/* +** Perform a shift action. +*/ +static void +yy_shift (yyParser * yypParser, /* The parser to be shifted */ + int yyNewState, /* The new state to shift in */ + int yyMajor, /* The major token to shift in */ + YYMINORTYPE * yypMinor /* Pointer to the minor token to shift in */ + ) +{ + yyStackEntry *yytos; + yypParser->yyidx++; +#ifdef YYTRACKMAXSTACKDEPTH + if (yypParser->yyidx > yypParser->yyidxMax) + { + yypParser->yyidxMax = yypParser->yyidx; + } +#endif +#if YYSTACKDEPTH>0 + if (yypParser->yyidx >= YYSTACKDEPTH) + { + yyStackOverflow (yypParser, yypMinor); + return; + } +#else + if (yypParser->yyidx >= yypParser->yystksz) + { + yyGrowStack (yypParser); + if (yypParser->yyidx >= yypParser->yystksz) + { + yyStackOverflow (yypParser, yypMinor); + return; + } + } +#endif + yytos = &yypParser->yystack[yypParser->yyidx]; + yytos->stateno = (YYACTIONTYPE) yyNewState; + yytos->major = (YYCODETYPE) yyMajor; + yytos->minor = *yypMinor; +#ifndef NDEBUG + if (yyTraceFILE && yypParser->yyidx > 0) + { + int i; + fprintf (yyTraceFILE, "%sShift %d\n", yyTracePrompt, yyNewState); + fprintf (yyTraceFILE, "%sStack:", yyTracePrompt); + for (i = 1; i <= yypParser->yyidx; i++) + fprintf (yyTraceFILE, " %s", + yyTokenName[yypParser->yystack[i].major]); + fprintf (yyTraceFILE, "\n"); + } +#endif +} + +/* The following table contains information about every rule that +** is used during the reduce. +*/ +static const struct +{ + YYCODETYPE lhs; /* Symbol on the left-hand side of the rule */ + unsigned char nrhs; /* Number of right-hand side symbols in the rule */ +} yyRuleInfo[] = +{ + { + 35, 1}, + { + 36, 0}, + { + 36, 3}, + { + 37, 1}, + { + 38, 1}, + { + 38, 1}, + { + 38, 1}, + { + 38, 1}, + { + 39, 1}, + { + 39, 1}, + { + 39, 1}, + { + 39, 1}, + { + 39, 1}, + { + 39, 1}, + { + 39, 1}, + { + 40, 1}, + { + 40, 1}, + { + 40, 1}, + { + 40, 1}, + { + 40, 1}, + { + 40, 1}, + { + 40, 1}, + { + 41, 1}, + { + 41, 1}, + { + 41, 1}, + { + 41, 1}, + { + 41, 1}, + { + 41, 1}, + { + 41, 1}, + { + 42, 1}, + { + 42, 1}, + { + 42, 1}, + { + 42, 1}, + { + 42, 1}, + { + 42, 1}, + { + 42, 1}, + { + 43, 4}, + { + 57, 4}, + { + 50, 4}, + { + 64, 4}, + { + 75, 4}, + { + 77, 5}, + { + 78, 5}, + { + 79, 6}, + { + 71, 2}, + { + 72, 3}, + { + 73, 3}, + { + 74, 4}, + { + 76, 1}, + { + 80, 0}, + { + 80, 3}, + { + 81, 0}, + { + 81, 3}, + { + 82, 0}, + { + 82, 3}, + { + 83, 0}, + { + 83, 3}, + { + 84, 0}, + { + 84, 3}, + { + 85, 0}, + { + 85, 3}, + { + 86, 0}, + { + 86, 3}, + { + 87, 0}, + { + 87, 3}, + { + 44, 2}, + { + 58, 2}, + { + 51, 2}, + { + 65, 2}, + { + 88, 6}, + { + 89, 6}, + { + 90, 6}, + { + 91, 6}, + { + 45, 2}, + { + 59, 2}, + { + 52, 2}, + { + 66, 2}, + { + 92, 4}, + { + 93, 4}, + { + 94, 4}, + { + 95, 4}, + { + 96, 10}, + { + 97, 0}, + { + 97, 3}, + { + 98, 10}, + { + 99, 0}, + { + 99, 3}, + { + 100, 10}, + { + 101, 0}, + { + 101, 3}, + { + 102, 10}, + { + 103, 0}, + { + 103, 3}, + { + 46, 2}, + { + 60, 2}, + { + 53, 2}, + { + 67, 2}, + { + 104, 4}, + { + 105, 4}, + { + 106, 4}, + { + 107, 4}, + { + 104, 4}, + { + 105, 4}, + { + 106, 4}, + { + 107, 4}, + { + 47, 2}, + { + 61, 2}, + { + 54, 2}, + { + 68, 2}, + { + 108, 4}, + { + 112, 0}, + { + 112, 3}, + { + 109, 4}, + { + 113, 0}, + { + 113, 3}, + { + 110, 4}, + { + 114, 0}, + { + 114, 3}, + { + 111, 4}, + { + 115, 0}, + { + 115, 3}, + { + 48, 2}, + { + 62, 2}, + { + 55, 2}, + { + 69, 2}, + { + 116, 4}, + { + 120, 0}, + { + 120, 3}, + { + 117, 4}, + { + 121, 0}, + { + 121, 3}, + { + 118, 4}, + { + 122, 0}, + { + 122, 3}, + { + 119, 4}, + { + 123, 0}, + { + 123, 3}, + { + 49, 2}, + { + 63, 2}, + { + 56, 2}, + { + 70, 2}, + { + 124, 4}, + { + 124, 4}, + { + 124, 4}, + { + 124, 4}, + { + 124, 4}, + { + 124, 4}, + { + 124, 5}, + { + 128, 0}, + { + 128, 3}, + { + 128, 3}, + { + 128, 3}, + { + 128, 3}, + { + 128, 3}, + { + 128, 3}, + { + 128, 4}, + { + 125, 4}, + { + 125, 4}, + { + 125, 4}, + { + 125, 4}, + { + 125, 4}, + { + 125, 4}, + { + 125, 5}, + { + 129, 0}, + { + 129, 3}, + { + 129, 3}, + { + 129, 3}, + { + 129, 3}, + { + 129, 3}, + { + 129, 3}, + { + 129, 4}, + { + 126, 4}, + { + 126, 4}, + { + 126, 4}, + { + 126, 4}, + { + 126, 4}, + { + 126, 4}, + { + 126, 5}, + { + 130, 0}, + { + 130, 3}, + { + 130, 3}, + { + 130, 3}, + { + 130, 3}, + { + 130, 3}, + { + 130, 3}, + { + 130, 4}, + { + 127, 4}, + { + 127, 4}, + { + 127, 4}, + { + 127, 4}, + { + 127, 4}, + { + 127, 4}, + { + 127, 5}, + { + 131, 0}, + { + 131, 3}, + { + 131, 3}, + { + 131, 3}, + { + 131, 3}, + { + 131, 3}, + { + 131, 3}, + { +131, 4},}; + +static void yy_accept (yyParser *); /* Forward Declaration */ + +/* +** Perform a reduce action and the shift that must immediately +** follow the reduce. +*/ +static void +yy_reduce (yyParser * yypParser, /* The parser */ + int yyruleno /* Number of the rule by which to reduce */ + ) +{ + int yygoto; /* The next state */ + int yyact; /* The next action */ + YYMINORTYPE yygotominor; /* The LHS of the rule reduced */ + yyStackEntry *yymsp; /* The top of the parser's stack */ + int yysize; /* Amount to pop the stack */ + ParseARG_FETCH; + yymsp = &yypParser->yystack[yypParser->yyidx]; +#ifndef NDEBUG + if (yyTraceFILE && yyruleno >= 0 + && yyruleno < (int) (sizeof (yyRuleName) / sizeof (yyRuleName[0]))) + { + fprintf (yyTraceFILE, "%sReduce [%s].\n", yyTracePrompt, + yyRuleName[yyruleno]); + } +#endif /* NDEBUG */ + + /* Silence complaints from purify about yygotominor being uninitialized + ** in some cases when it is copied into the stack after the following + ** switch. yygotominor is uninitialized when a rule reduces that does + ** not set the value of its left-hand side nonterminal. Leaving the + ** value of the nonterminal uninitialized is utterly harmless as long + ** as the value is never used. So really the only thing this code + ** accomplishes is to quieten purify. + ** + ** 2007-01-16: The wireshark project (www.wireshark.org) reports that + ** without this code, their parser segfaults. I'm not sure what there + ** parser is doing to make this happen. This is the second bug report + ** from wireshark this week. Clearly they are stressing Lemon in ways + ** that it has not been previously stressed... (SQLite ticket #2172) + */ + /*memset(&yygotominor, 0, sizeof(yygotominor)); */ + yygotominor = yyzerominor; + + + switch (yyruleno) + { + /* Beginning here are the reduction cases. A typical example + ** follows: + ** case 0: + ** #line <lineno> <grammarfile> + ** { ... } // User supplied code + ** #line <lineno> <thisfile> + ** break; + */ + case 8: /* geo_text ::= point */ + case 9: /* geo_text ::= linestring */ + yytestcase (yyruleno == 9); + case 10: /* geo_text ::= polygon */ + yytestcase (yyruleno == 10); + case 11: /* geo_text ::= multipoint */ + yytestcase (yyruleno == 11); + case 12: /* geo_text ::= multilinestring */ + yytestcase (yyruleno == 12); + case 13: /* geo_text ::= multipolygon */ + yytestcase (yyruleno == 13); + case 14: /* geo_text ::= geocoll */ + yytestcase (yyruleno == 14); + case 15: /* geo_textz ::= pointz */ + yytestcase (yyruleno == 15); + case 16: /* geo_textz ::= linestringz */ + yytestcase (yyruleno == 16); + case 17: /* geo_textz ::= polygonz */ + yytestcase (yyruleno == 17); + case 18: /* geo_textz ::= multipointz */ + yytestcase (yyruleno == 18); + case 19: /* geo_textz ::= multilinestringz */ + yytestcase (yyruleno == 19); + case 20: /* geo_textz ::= multipolygonz */ + yytestcase (yyruleno == 20); + case 21: /* geo_textz ::= geocollz */ + yytestcase (yyruleno == 21); + case 22: /* geo_textm ::= pointm */ + yytestcase (yyruleno == 22); + case 23: /* geo_textm ::= linestringm */ + yytestcase (yyruleno == 23); + case 24: /* geo_textm ::= polygonm */ + yytestcase (yyruleno == 24); + case 25: /* geo_textm ::= multipointm */ + yytestcase (yyruleno == 25); + case 26: /* geo_textm ::= multilinestringm */ + yytestcase (yyruleno == 26); + case 27: /* geo_textm ::= multipolygonm */ + yytestcase (yyruleno == 27); + case 28: /* geo_textm ::= geocollm */ + yytestcase (yyruleno == 28); + case 29: /* geo_textzm ::= pointzm */ + yytestcase (yyruleno == 29); + case 30: /* geo_textzm ::= linestringzm */ + yytestcase (yyruleno == 30); + case 31: /* geo_textzm ::= polygonzm */ + yytestcase (yyruleno == 31); + case 32: /* geo_textzm ::= multipointzm */ + yytestcase (yyruleno == 32); + case 33: /* geo_textzm ::= multilinestringzm */ + yytestcase (yyruleno == 33); + case 34: /* geo_textzm ::= multipolygonzm */ + yytestcase (yyruleno == 34); + case 35: /* geo_textzm ::= geocollzm */ + yytestcase (yyruleno == 35); + { + p_data->result = yymsp[0].minor.yy0; + } + break; + case 36: /* point ::= VANUATU_POINT VANUATU_OPEN_BRACKET point_coordxy VANUATU_CLOSE_BRACKET */ + { + yygotominor.yy0 = + vanuatu_buildGeomFromPoint (p_data, + (gaiaPointPtr) yymsp[-1].minor. + yy0); + } + break; + case 37: /* pointm ::= VANUATU_POINT_M VANUATU_OPEN_BRACKET point_coordxym VANUATU_CLOSE_BRACKET */ + case 38: /* pointz ::= VANUATU_POINT_Z VANUATU_OPEN_BRACKET point_coordxyz VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 38); + case 39: /* pointzm ::= VANUATU_POINT_ZM VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 39); + { + yygotominor.yy0 = + vanuatu_buildGeomFromPoint (p_data, + (gaiaPointPtr) yymsp[-1].minor. + yy0); + } + break; + case 40: /* point_brkt_coordxy ::= VANUATU_OPEN_BRACKET coord coord VANUATU_CLOSE_BRACKET */ + { + yygotominor.yy0 = + (void *) vanuatu_point_xy (p_data, + (double *) yymsp[-2].minor.yy0, + (double *) yymsp[-1].minor.yy0); + } + break; + case 41: /* point_brkt_coordxym ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET */ + { + yygotominor.yy0 = + (void *) vanuatu_point_xym (p_data, + (double *) yymsp[-3].minor.yy0, + (double *) yymsp[-2].minor.yy0, + (double *) yymsp[-1].minor.yy0); + } + break; + case 42: /* point_brkt_coordxyz ::= VANUATU_OPEN_BRACKET coord coord coord VANUATU_CLOSE_BRACKET */ + { + yygotominor.yy0 = + (void *) vanuatu_point_xyz (p_data, + (double *) yymsp[-3].minor.yy0, + (double *) yymsp[-2].minor.yy0, + (double *) yymsp[-1].minor.yy0); + } + break; + case 43: /* point_brkt_coordxyzm ::= VANUATU_OPEN_BRACKET coord coord coord coord VANUATU_CLOSE_BRACKET */ + { + yygotominor.yy0 = + (void *) vanuatu_point_xyzm (p_data, + (double *) yymsp[-4].minor.yy0, + (double *) yymsp[-3].minor.yy0, + (double *) yymsp[-2].minor.yy0, + (double *) yymsp[-1].minor.yy0); + } + break; + case 44: /* point_coordxy ::= coord coord */ + { + yygotominor.yy0 = + (void *) vanuatu_point_xy (p_data, + (double *) yymsp[-1].minor.yy0, + (double *) yymsp[0].minor.yy0); + } + break; + case 45: /* point_coordxym ::= coord coord coord */ + { + yygotominor.yy0 = + (void *) vanuatu_point_xym (p_data, + (double *) yymsp[-2].minor.yy0, + (double *) yymsp[-1].minor.yy0, + (double *) yymsp[0].minor.yy0); + } + break; + case 46: /* point_coordxyz ::= coord coord coord */ + { + yygotominor.yy0 = + (void *) vanuatu_point_xyz (p_data, + (double *) yymsp[-2].minor.yy0, + (double *) yymsp[-1].minor.yy0, + (double *) yymsp[0].minor.yy0); + } + break; + case 47: /* point_coordxyzm ::= coord coord coord coord */ + { + yygotominor.yy0 = + (void *) vanuatu_point_xyzm (p_data, + (double *) yymsp[-3].minor.yy0, + (double *) yymsp[-2].minor.yy0, + (double *) yymsp[-1].minor.yy0, + (double *) yymsp[0].minor.yy0); + } + break; + case 48: /* coord ::= VANUATU_NUM */ + case 93: /* multipoint ::= VANUATU_MULTIPOINT multipoint_text */ + yytestcase (yyruleno == 93); + case 94: /* multipointm ::= VANUATU_MULTIPOINT_M multipoint_textm */ + yytestcase (yyruleno == 94); + case 95: /* multipointz ::= VANUATU_MULTIPOINT_Z multipoint_textz */ + yytestcase (yyruleno == 95); + case 96: /* multipointzm ::= VANUATU_MULTIPOINT_ZM multipoint_textzm */ + yytestcase (yyruleno == 96); + case 105: /* multilinestring ::= VANUATU_MULTILINESTRING multilinestring_text */ + yytestcase (yyruleno == 105); + case 106: /* multilinestringm ::= VANUATU_MULTILINESTRING_M multilinestring_textm */ + yytestcase (yyruleno == 106); + case 107: /* multilinestringz ::= VANUATU_MULTILINESTRING_Z multilinestring_textz */ + yytestcase (yyruleno == 107); + case 108: /* multilinestringzm ::= VANUATU_MULTILINESTRING_ZM multilinestring_textzm */ + yytestcase (yyruleno == 108); + case 121: /* multipolygon ::= VANUATU_MULTIPOLYGON multipolygon_text */ + yytestcase (yyruleno == 121); + case 122: /* multipolygonm ::= VANUATU_MULTIPOLYGON_M multipolygon_textm */ + yytestcase (yyruleno == 122); + case 123: /* multipolygonz ::= VANUATU_MULTIPOLYGON_Z multipolygon_textz */ + yytestcase (yyruleno == 123); + case 124: /* multipolygonzm ::= VANUATU_MULTIPOLYGON_ZM multipolygon_textzm */ + yytestcase (yyruleno == 124); + case 137: /* geocoll ::= VANUATU_GEOMETRYCOLLECTION geocoll_text */ + yytestcase (yyruleno == 137); + case 138: /* geocollm ::= VANUATU_GEOMETRYCOLLECTION_M geocoll_textm */ + yytestcase (yyruleno == 138); + case 139: /* geocollz ::= VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz */ + yytestcase (yyruleno == 139); + case 140: /* geocollzm ::= VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm */ + yytestcase (yyruleno == 140); + { + yygotominor.yy0 = yymsp[0].minor.yy0; + } + break; + case 49: /* extra_brkt_pointsxy ::= */ + case 51: /* extra_brkt_pointsxym ::= */ + yytestcase (yyruleno == 51); + case 53: /* extra_brkt_pointsxyz ::= */ + yytestcase (yyruleno == 53); + case 55: /* extra_brkt_pointsxyzm ::= */ + yytestcase (yyruleno == 55); + case 57: /* extra_pointsxy ::= */ + yytestcase (yyruleno == 57); + case 59: /* extra_pointsxym ::= */ + yytestcase (yyruleno == 59); + case 61: /* extra_pointsxyz ::= */ + yytestcase (yyruleno == 61); + case 63: /* extra_pointsxyzm ::= */ + yytestcase (yyruleno == 63); + case 82: /* extra_rings ::= */ + yytestcase (yyruleno == 82); + case 85: /* extra_ringsm ::= */ + yytestcase (yyruleno == 85); + case 88: /* extra_ringsz ::= */ + yytestcase (yyruleno == 88); + case 91: /* extra_ringszm ::= */ + yytestcase (yyruleno == 91); + case 110: /* multilinestring_text2 ::= */ + yytestcase (yyruleno == 110); + case 113: /* multilinestring_textm2 ::= */ + yytestcase (yyruleno == 113); + case 116: /* multilinestring_textz2 ::= */ + yytestcase (yyruleno == 116); + case 119: /* multilinestring_textzm2 ::= */ + yytestcase (yyruleno == 119); + case 126: /* multipolygon_text2 ::= */ + yytestcase (yyruleno == 126); + case 129: /* multipolygon_textm2 ::= */ + yytestcase (yyruleno == 129); + case 132: /* multipolygon_textz2 ::= */ + yytestcase (yyruleno == 132); + case 135: /* multipolygon_textzm2 ::= */ + yytestcase (yyruleno == 135); + case 148: /* geocoll_text2 ::= */ + yytestcase (yyruleno == 148); + case 163: /* geocoll_textm2 ::= */ + yytestcase (yyruleno == 163); + case 178: /* geocoll_textz2 ::= */ + yytestcase (yyruleno == 178); + case 193: /* geocoll_textzm2 ::= */ + yytestcase (yyruleno == 193); + { + yygotominor.yy0 = NULL; + } + break; + case 50: /* extra_brkt_pointsxy ::= VANUATU_COMMA point_brkt_coordxy extra_brkt_pointsxy */ + case 52: /* extra_brkt_pointsxym ::= VANUATU_COMMA point_brkt_coordxym extra_brkt_pointsxym */ + yytestcase (yyruleno == 52); + case 54: /* extra_brkt_pointsxyz ::= VANUATU_COMMA point_brkt_coordxyz extra_brkt_pointsxyz */ + yytestcase (yyruleno == 54); + case 56: /* extra_brkt_pointsxyzm ::= VANUATU_COMMA point_brkt_coordxyzm extra_brkt_pointsxyzm */ + yytestcase (yyruleno == 56); + case 58: /* extra_pointsxy ::= VANUATU_COMMA point_coordxy extra_pointsxy */ + yytestcase (yyruleno == 58); + case 60: /* extra_pointsxym ::= VANUATU_COMMA point_coordxym extra_pointsxym */ + yytestcase (yyruleno == 60); + case 62: /* extra_pointsxyz ::= VANUATU_COMMA point_coordxyz extra_pointsxyz */ + yytestcase (yyruleno == 62); + case 64: /* extra_pointsxyzm ::= VANUATU_COMMA point_coordxyzm extra_pointsxyzm */ + yytestcase (yyruleno == 64); + { + ((gaiaPointPtr) yymsp[-1].minor.yy0)->Next = + (gaiaPointPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 65: /* linestring ::= VANUATU_LINESTRING linestring_text */ + case 66: /* linestringm ::= VANUATU_LINESTRING_M linestring_textm */ + yytestcase (yyruleno == 66); + case 67: /* linestringz ::= VANUATU_LINESTRING_Z linestring_textz */ + yytestcase (yyruleno == 67); + case 68: /* linestringzm ::= VANUATU_LINESTRING_ZM linestring_textzm */ + yytestcase (yyruleno == 68); + { + yygotominor.yy0 = + vanuatu_buildGeomFromLinestring (p_data, + (gaiaLinestringPtr) + yymsp[0].minor.yy0); + } + break; + case 69: /* linestring_text ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_linestring_xy (p_data, + (gaiaPointPtr) + yymsp[-4].minor.yy0); + } + break; + case 70: /* linestring_textm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_linestring_xym (p_data, + (gaiaPointPtr) + yymsp[-4].minor.yy0); + } + break; + case 71: /* linestring_textz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_linestring_xyz (p_data, + (gaiaPointPtr) + yymsp[-4].minor.yy0); + } + break; + case 72: /* linestring_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_linestring_xyzm (p_data, + (gaiaPointPtr) + yymsp[-4].minor.yy0); + } + break; + case 73: /* polygon ::= VANUATU_POLYGON polygon_text */ + case 74: /* polygonm ::= VANUATU_POLYGON_M polygon_textm */ + yytestcase (yyruleno == 74); + case 75: /* polygonz ::= VANUATU_POLYGON_Z polygon_textz */ + yytestcase (yyruleno == 75); + case 76: /* polygonzm ::= VANUATU_POLYGON_ZM polygon_textzm */ + yytestcase (yyruleno == 76); + { + yygotominor.yy0 = + vanuatu_buildGeomFromPolygon (p_data, + (gaiaPolygonPtr) yymsp[0].minor. + yy0); + } + break; + case 77: /* polygon_text ::= VANUATU_OPEN_BRACKET ring extra_rings VANUATU_CLOSE_BRACKET */ + { + ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = + (gaiaRingPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_polygon_xy (p_data, + (gaiaRingPtr) yymsp[-2].minor. + yy0); + } + break; + case 78: /* polygon_textm ::= VANUATU_OPEN_BRACKET ringm extra_ringsm VANUATU_CLOSE_BRACKET */ + { + ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = + (gaiaRingPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_polygon_xym (p_data, + (gaiaRingPtr) yymsp[-2].minor. + yy0); + } + break; + case 79: /* polygon_textz ::= VANUATU_OPEN_BRACKET ringz extra_ringsz VANUATU_CLOSE_BRACKET */ + { + ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = + (gaiaRingPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_polygon_xyz (p_data, + (gaiaRingPtr) yymsp[-2].minor. + yy0); + } + break; + case 80: /* polygon_textzm ::= VANUATU_OPEN_BRACKET ringzm extra_ringszm VANUATU_CLOSE_BRACKET */ + { + ((gaiaRingPtr) yymsp[-2].minor.yy0)->Next = + (gaiaRingPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_polygon_xyzm (p_data, + (gaiaRingPtr) yymsp[-2].minor. + yy0); + } + break; + case 81: /* ring ::= VANUATU_OPEN_BRACKET point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy VANUATU_COMMA point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-6].minor.yy0; + ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-4].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_ring_xy (p_data, + (gaiaPointPtr) yymsp[-8].minor.yy0); + } + break; + case 83: /* extra_rings ::= VANUATU_COMMA ring extra_rings */ + case 86: /* extra_ringsm ::= VANUATU_COMMA ringm extra_ringsm */ + yytestcase (yyruleno == 86); + case 89: /* extra_ringsz ::= VANUATU_COMMA ringz extra_ringsz */ + yytestcase (yyruleno == 89); + case 92: /* extra_ringszm ::= VANUATU_COMMA ringzm extra_ringszm */ + yytestcase (yyruleno == 92); + { + ((gaiaRingPtr) yymsp[-1].minor.yy0)->Next = + (gaiaRingPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 84: /* ringm ::= VANUATU_OPEN_BRACKET point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym VANUATU_COMMA point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-6].minor.yy0; + ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-4].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_ring_xym (p_data, + (gaiaPointPtr) yymsp[-8].minor. + yy0); + } + break; + case 87: /* ringz ::= VANUATU_OPEN_BRACKET point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz VANUATU_COMMA point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-6].minor.yy0; + ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-4].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_ring_xyz (p_data, + (gaiaPointPtr) yymsp[-8].minor. + yy0); + } + break; + case 90: /* ringzm ::= VANUATU_OPEN_BRACKET point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm VANUATU_COMMA point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ + { + ((gaiaPointPtr) yymsp[-8].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-6].minor.yy0; + ((gaiaPointPtr) yymsp[-6].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-4].minor.yy0; + ((gaiaPointPtr) yymsp[-4].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-2].minor.yy0; + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_ring_xyzm (p_data, + (gaiaPointPtr) yymsp[-8].minor. + yy0); + } + break; + case 97: /* multipoint_text ::= VANUATU_OPEN_BRACKET point_coordxy extra_pointsxy VANUATU_CLOSE_BRACKET */ + case 101: /* multipoint_text ::= VANUATU_OPEN_BRACKET point_brkt_coordxy extra_brkt_pointsxy VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 101); + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_multipoint_xy (p_data, + (gaiaPointPtr) + yymsp[-2].minor.yy0); + } + break; + case 98: /* multipoint_textm ::= VANUATU_OPEN_BRACKET point_coordxym extra_pointsxym VANUATU_CLOSE_BRACKET */ + case 102: /* multipoint_textm ::= VANUATU_OPEN_BRACKET point_brkt_coordxym extra_brkt_pointsxym VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 102); + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_multipoint_xym (p_data, + (gaiaPointPtr) + yymsp[-2].minor.yy0); + } + break; + case 99: /* multipoint_textz ::= VANUATU_OPEN_BRACKET point_coordxyz extra_pointsxyz VANUATU_CLOSE_BRACKET */ + case 103: /* multipoint_textz ::= VANUATU_OPEN_BRACKET point_brkt_coordxyz extra_brkt_pointsxyz VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 103); + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_multipoint_xyz (p_data, + (gaiaPointPtr) + yymsp[-2].minor.yy0); + } + break; + case 100: /* multipoint_textzm ::= VANUATU_OPEN_BRACKET point_coordxyzm extra_pointsxyzm VANUATU_CLOSE_BRACKET */ + case 104: /* multipoint_textzm ::= VANUATU_OPEN_BRACKET point_brkt_coordxyzm extra_brkt_pointsxyzm VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 104); + { + ((gaiaPointPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPointPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_multipoint_xyzm (p_data, + (gaiaPointPtr) + yymsp[-2].minor.yy0); + } + break; + case 109: /* multilinestring_text ::= VANUATU_OPEN_BRACKET linestring_text multilinestring_text2 VANUATU_CLOSE_BRACKET */ + { + ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = + (gaiaLinestringPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_multilinestring_xy (p_data, + (gaiaLinestringPtr) + yymsp[-2].minor.yy0); + } + break; + case 111: /* multilinestring_text2 ::= VANUATU_COMMA linestring_text multilinestring_text2 */ + case 114: /* multilinestring_textm2 ::= VANUATU_COMMA linestring_textm multilinestring_textm2 */ + yytestcase (yyruleno == 114); + case 117: /* multilinestring_textz2 ::= VANUATU_COMMA linestring_textz multilinestring_textz2 */ + yytestcase (yyruleno == 117); + case 120: /* multilinestring_textzm2 ::= VANUATU_COMMA linestring_textzm multilinestring_textzm2 */ + yytestcase (yyruleno == 120); + { + ((gaiaLinestringPtr) yymsp[-1].minor.yy0)->Next = + (gaiaLinestringPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 112: /* multilinestring_textm ::= VANUATU_OPEN_BRACKET linestring_textm multilinestring_textm2 VANUATU_CLOSE_BRACKET */ + { + ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = + (gaiaLinestringPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_multilinestring_xym (p_data, + (gaiaLinestringPtr) + yymsp[-2].minor.yy0); + } + break; + case 115: /* multilinestring_textz ::= VANUATU_OPEN_BRACKET linestring_textz multilinestring_textz2 VANUATU_CLOSE_BRACKET */ + { + ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = + (gaiaLinestringPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_multilinestring_xyz (p_data, + (gaiaLinestringPtr) + yymsp[-2].minor.yy0); + } + break; + case 118: /* multilinestring_textzm ::= VANUATU_OPEN_BRACKET linestring_textzm multilinestring_textzm2 VANUATU_CLOSE_BRACKET */ + { + ((gaiaLinestringPtr) yymsp[-2].minor.yy0)->Next = + (gaiaLinestringPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_multilinestring_xyzm (p_data, + (gaiaLinestringPtr) + yymsp[-2].minor.yy0); + } + break; + case 125: /* multipolygon_text ::= VANUATU_OPEN_BRACKET polygon_text multipolygon_text2 VANUATU_CLOSE_BRACKET */ + { + ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPolygonPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_multipolygon_xy (p_data, + (gaiaPolygonPtr) + yymsp[-2].minor.yy0); + } + break; + case 127: /* multipolygon_text2 ::= VANUATU_COMMA polygon_text multipolygon_text2 */ + case 130: /* multipolygon_textm2 ::= VANUATU_COMMA polygon_textm multipolygon_textm2 */ + yytestcase (yyruleno == 130); + case 133: /* multipolygon_textz2 ::= VANUATU_COMMA polygon_textz multipolygon_textz2 */ + yytestcase (yyruleno == 133); + case 136: /* multipolygon_textzm2 ::= VANUATU_COMMA polygon_textzm multipolygon_textzm2 */ + yytestcase (yyruleno == 136); + { + ((gaiaPolygonPtr) yymsp[-1].minor.yy0)->Next = + (gaiaPolygonPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 128: /* multipolygon_textm ::= VANUATU_OPEN_BRACKET polygon_textm multipolygon_textm2 VANUATU_CLOSE_BRACKET */ + { + ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPolygonPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_multipolygon_xym (p_data, + (gaiaPolygonPtr) + yymsp[-2].minor.yy0); + } + break; + case 131: /* multipolygon_textz ::= VANUATU_OPEN_BRACKET polygon_textz multipolygon_textz2 VANUATU_CLOSE_BRACKET */ + { + ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPolygonPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_multipolygon_xyz (p_data, + (gaiaPolygonPtr) + yymsp[-2].minor.yy0); + } + break; + case 134: /* multipolygon_textzm ::= VANUATU_OPEN_BRACKET polygon_textzm multipolygon_textzm2 VANUATU_CLOSE_BRACKET */ + { + ((gaiaPolygonPtr) yymsp[-2].minor.yy0)->Next = + (gaiaPolygonPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_multipolygon_xyzm (p_data, + (gaiaPolygonPtr) + yymsp[-2].minor.yy0); + } + break; + case 141: /* geocoll_text ::= VANUATU_OPEN_BRACKET point geocoll_text2 VANUATU_CLOSE_BRACKET */ + case 142: /* geocoll_text ::= VANUATU_OPEN_BRACKET linestring geocoll_text2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 142); + case 143: /* geocoll_text ::= VANUATU_OPEN_BRACKET polygon geocoll_text2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 143); + case 144: /* geocoll_text ::= VANUATU_OPEN_BRACKET multipoint geocoll_text2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 144); + case 145: /* geocoll_text ::= VANUATU_OPEN_BRACKET multilinestring geocoll_text2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 145); + case 146: /* geocoll_text ::= VANUATU_OPEN_BRACKET multipolygon geocoll_text2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 146); + case 147: /* geocoll_text ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 147); + { + ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = + (gaiaGeomCollPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_geomColl_xy (p_data, + (gaiaGeomCollPtr) + yymsp[-2].minor.yy0); + } + break; + case 149: /* geocoll_text2 ::= VANUATU_COMMA point geocoll_text2 */ + case 150: /* geocoll_text2 ::= VANUATU_COMMA linestring geocoll_text2 */ + yytestcase (yyruleno == 150); + case 151: /* geocoll_text2 ::= VANUATU_COMMA polygon geocoll_text2 */ + yytestcase (yyruleno == 151); + case 152: /* geocoll_text2 ::= VANUATU_COMMA multipoint geocoll_text2 */ + yytestcase (yyruleno == 152); + case 153: /* geocoll_text2 ::= VANUATU_COMMA multilinestring geocoll_text2 */ + yytestcase (yyruleno == 153); + case 154: /* geocoll_text2 ::= VANUATU_COMMA multipolygon geocoll_text2 */ + yytestcase (yyruleno == 154); + case 155: /* geocoll_text2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION geocoll_text geocoll_text2 */ + yytestcase (yyruleno == 155); + case 164: /* geocoll_textm2 ::= VANUATU_COMMA pointm geocoll_textm2 */ + yytestcase (yyruleno == 164); + case 165: /* geocoll_textm2 ::= VANUATU_COMMA linestringm geocoll_textm2 */ + yytestcase (yyruleno == 165); + case 166: /* geocoll_textm2 ::= VANUATU_COMMA polygonm geocoll_textm2 */ + yytestcase (yyruleno == 166); + case 167: /* geocoll_textm2 ::= VANUATU_COMMA multipointm geocoll_textm2 */ + yytestcase (yyruleno == 167); + case 168: /* geocoll_textm2 ::= VANUATU_COMMA multilinestringm geocoll_textm2 */ + yytestcase (yyruleno == 168); + case 169: /* geocoll_textm2 ::= VANUATU_COMMA multipolygonm geocoll_textm2 */ + yytestcase (yyruleno == 169); + case 170: /* geocoll_textm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 */ + yytestcase (yyruleno == 170); + case 179: /* geocoll_textz2 ::= VANUATU_COMMA pointz geocoll_textz2 */ + yytestcase (yyruleno == 179); + case 180: /* geocoll_textz2 ::= VANUATU_COMMA linestringz geocoll_textz2 */ + yytestcase (yyruleno == 180); + case 181: /* geocoll_textz2 ::= VANUATU_COMMA polygonz geocoll_textz2 */ + yytestcase (yyruleno == 181); + case 182: /* geocoll_textz2 ::= VANUATU_COMMA multipointz geocoll_textz2 */ + yytestcase (yyruleno == 182); + case 183: /* geocoll_textz2 ::= VANUATU_COMMA multilinestringz geocoll_textz2 */ + yytestcase (yyruleno == 183); + case 184: /* geocoll_textz2 ::= VANUATU_COMMA multipolygonz geocoll_textz2 */ + yytestcase (yyruleno == 184); + case 185: /* geocoll_textz2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 */ + yytestcase (yyruleno == 185); + case 194: /* geocoll_textzm2 ::= VANUATU_COMMA pointzm geocoll_textzm2 */ + yytestcase (yyruleno == 194); + case 195: /* geocoll_textzm2 ::= VANUATU_COMMA linestringzm geocoll_textzm2 */ + yytestcase (yyruleno == 195); + case 196: /* geocoll_textzm2 ::= VANUATU_COMMA polygonzm geocoll_textzm2 */ + yytestcase (yyruleno == 196); + case 197: /* geocoll_textzm2 ::= VANUATU_COMMA multipointzm geocoll_textzm2 */ + yytestcase (yyruleno == 197); + case 198: /* geocoll_textzm2 ::= VANUATU_COMMA multilinestringzm geocoll_textzm2 */ + yytestcase (yyruleno == 198); + case 199: /* geocoll_textzm2 ::= VANUATU_COMMA multipolygonzm geocoll_textzm2 */ + yytestcase (yyruleno == 199); + case 200: /* geocoll_textzm2 ::= VANUATU_COMMA VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 */ + yytestcase (yyruleno == 200); + { + ((gaiaGeomCollPtr) yymsp[-1].minor.yy0)->Next = + (gaiaGeomCollPtr) yymsp[0].minor.yy0; + yygotominor.yy0 = yymsp[-1].minor.yy0; + } + break; + case 156: /* geocoll_textm ::= VANUATU_OPEN_BRACKET pointm geocoll_textm2 VANUATU_CLOSE_BRACKET */ + case 157: /* geocoll_textm ::= VANUATU_OPEN_BRACKET linestringm geocoll_textm2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 157); + case 158: /* geocoll_textm ::= VANUATU_OPEN_BRACKET polygonm geocoll_textm2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 158); + case 159: /* geocoll_textm ::= VANUATU_OPEN_BRACKET multipointm geocoll_textm2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 159); + case 160: /* geocoll_textm ::= VANUATU_OPEN_BRACKET multilinestringm geocoll_textm2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 160); + case 161: /* geocoll_textm ::= VANUATU_OPEN_BRACKET multipolygonm geocoll_textm2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 161); + case 162: /* geocoll_textm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_M geocoll_textm geocoll_textm2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 162); + { + ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = + (gaiaGeomCollPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_geomColl_xym (p_data, + (gaiaGeomCollPtr) + yymsp[-2].minor.yy0); + } + break; + case 171: /* geocoll_textz ::= VANUATU_OPEN_BRACKET pointz geocoll_textz2 VANUATU_CLOSE_BRACKET */ + case 172: /* geocoll_textz ::= VANUATU_OPEN_BRACKET linestringz geocoll_textz2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 172); + case 173: /* geocoll_textz ::= VANUATU_OPEN_BRACKET polygonz geocoll_textz2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 173); + case 174: /* geocoll_textz ::= VANUATU_OPEN_BRACKET multipointz geocoll_textz2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 174); + case 175: /* geocoll_textz ::= VANUATU_OPEN_BRACKET multilinestringz geocoll_textz2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 175); + case 176: /* geocoll_textz ::= VANUATU_OPEN_BRACKET multipolygonz geocoll_textz2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 176); + case 177: /* geocoll_textz ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_Z geocoll_textz geocoll_textz2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 177); + { + ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = + (gaiaGeomCollPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_geomColl_xyz (p_data, + (gaiaGeomCollPtr) + yymsp[-2].minor.yy0); + } + break; + case 186: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET pointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ + case 187: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET linestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 187); + case 188: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET polygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 188); + case 189: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET multipointzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 189); + case 190: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET multilinestringzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 190); + case 191: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET multipolygonzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 191); + case 192: /* geocoll_textzm ::= VANUATU_OPEN_BRACKET VANUATU_GEOMETRYCOLLECTION_ZM geocoll_textzm geocoll_textzm2 VANUATU_CLOSE_BRACKET */ + yytestcase (yyruleno == 192); + { + ((gaiaGeomCollPtr) yymsp[-2].minor.yy0)->Next = + (gaiaGeomCollPtr) yymsp[-1].minor.yy0; + yygotominor.yy0 = + (void *) vanuatu_geomColl_xyzm (p_data, + (gaiaGeomCollPtr) + yymsp[-2].minor.yy0); + } + break; + default: + /* (0) main ::= in */ yytestcase (yyruleno == 0); + /* (1) in ::= */ yytestcase (yyruleno == 1); + /* (2) in ::= in state VANUATU_NEWLINE */ yytestcase (yyruleno == 2); + /* (3) state ::= program */ yytestcase (yyruleno == 3); + /* (4) program ::= geo_text */ yytestcase (yyruleno == 4); + /* (5) program ::= geo_textz */ yytestcase (yyruleno == 5); + /* (6) program ::= geo_textm */ yytestcase (yyruleno == 6); + /* (7) program ::= geo_textzm */ yytestcase (yyruleno == 7); + break; + }; + yygoto = yyRuleInfo[yyruleno].lhs; + yysize = yyRuleInfo[yyruleno].nrhs; + yypParser->yyidx -= yysize; + yyact = yy_find_reduce_action (yymsp[-yysize].stateno, (YYCODETYPE) yygoto); + if (yyact < YYNSTATE) + { +#ifdef NDEBUG + /* If we are not debugging and the reduce action popped at least + ** one element off the stack, then we can push the new element back + ** onto the stack here, and skip the stack overflow test in yy_shift(). + ** That gives a significant speed improvement. */ + if (yysize) + { + yypParser->yyidx++; + yymsp -= yysize - 1; + yymsp->stateno = (YYACTIONTYPE) yyact; + yymsp->major = (YYCODETYPE) yygoto; + yymsp->minor = yygotominor; + } + else +#endif + { + yy_shift (yypParser, yyact, yygoto, &yygotominor); + } + } + else + { + assert (yyact == YYNSTATE + YYNRULE + 1); + yy_accept (yypParser); + } +} + +/* +** The following code executes when the parse fails +*/ +#ifndef YYNOERRORRECOVERY +static void +yy_parse_failed (yyParser * yypParser /* The parser */ + ) +{ + ParseARG_FETCH; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sFail!\n", yyTracePrompt); + } +#endif + while (yypParser->yyidx >= 0) + yy_pop_parser_stack (yypParser); + /* Here code is inserted which will be executed whenever the + ** parser fails */ + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} +#endif /* YYNOERRORRECOVERY */ + +/* +** The following code executes when a syntax error first occurs. +*/ +static void +yy_syntax_error (yyParser * yypParser, /* The parser */ + int yymajor, /* The major type of the error token */ + YYMINORTYPE yyminor /* The minor type of the error token */ + ) +{ + ParseARG_FETCH; +#define TOKEN (yyminor.yy0) + +/* +** Sandro Furieri 2010 Apr 4 +** when the LEMON parser encounters an error +** then this global variable is set +*/ + p_data->vanuatu_parse_error = 1; + p_data->result = NULL; + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} + +/* +** The following is executed when the parser accepts +*/ +static void +yy_accept (yyParser * yypParser /* The parser */ + ) +{ + ParseARG_FETCH; +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sAccept!\n", yyTracePrompt); + } +#endif + while (yypParser->yyidx >= 0) + yy_pop_parser_stack (yypParser); + /* Here code is inserted which will be executed whenever the + ** parser accepts */ + ParseARG_STORE; /* Suppress warning about unused %extra_argument variable */ +} + +/* The main parser program. +** The first argument is a pointer to a structure obtained from +** "ParseAlloc" which describes the current state of the parser. +** The second argument is the major token number. The third is +** the minor token. The fourth optional argument is whatever the +** user wants (and specified in the grammar) and is available for +** use by the action routines. +** +** Inputs: +** <ul> +** <li> A pointer to the parser (an opaque structure.) +** <li> The major token number. +** <li> The minor token number. +** <li> An option argument of a grammar-specified type. +** </ul> +** +** Outputs: +** None. +*/ +void +Parse (void *yyp, /* The parser */ + int yymajor, /* The major token code number */ + ParseTOKENTYPE yyminor /* The value for the token */ + ParseARG_PDECL /* Optional %extra_argument parameter */ + ) +{ + YYMINORTYPE yyminorunion; + int yyact; /* The parser action. */ + int yyendofinput; /* True if we are at the end of input */ +#ifdef YYERRORSYMBOL + int yyerrorhit = 0; /* True if yymajor has invoked an error */ +#endif + yyParser *yypParser; /* The parser */ + + /* (re)initialize the parser, if necessary */ + yypParser = (yyParser *) yyp; + if (yypParser->yyidx < 0) + { +#if YYSTACKDEPTH<=0 + if (yypParser->yystksz <= 0) + { + /*memset(&yyminorunion, 0, sizeof(yyminorunion)); */ + yyminorunion = yyzerominor; + yyStackOverflow (yypParser, &yyminorunion); + return; + } +#endif + yypParser->yyidx = 0; + yypParser->yyerrcnt = -1; + yypParser->yystack[0].stateno = 0; + yypParser->yystack[0].major = 0; + } + yyminorunion.yy0 = yyminor; + yyendofinput = (yymajor == 0); + ParseARG_STORE; + +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sInput %s\n", yyTracePrompt, + yyTokenName[yymajor]); + } +#endif + + do + { + yyact = yy_find_shift_action (yypParser, (YYCODETYPE) yymajor); + if (yyact < YYNSTATE) + { + assert (!yyendofinput); /* Impossible to shift the $ token */ + yy_shift (yypParser, yyact, yymajor, &yyminorunion); + yypParser->yyerrcnt--; + yymajor = YYNOCODE; + } + else if (yyact < YYNSTATE + YYNRULE) + { + yy_reduce (yypParser, yyact - YYNSTATE); + } + else + { + assert (yyact == YY_ERROR_ACTION); +#ifdef YYERRORSYMBOL + int yymx; +#endif +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sSyntax Error!\n", yyTracePrompt); + } +#endif +#ifdef YYERRORSYMBOL + /* A syntax error has occurred. + ** The response to an error depends upon whether or not the + ** grammar defines an error token "ERROR". + ** + ** This is what we do if the grammar does define ERROR: + ** + ** * Call the %syntax_error function. + ** + ** * Begin popping the stack until we enter a state where + ** it is legal to shift the error symbol, then shift + ** the error symbol. + ** + ** * Set the error count to three. + ** + ** * Begin accepting and shifting new tokens. No new error + ** processing will occur until three tokens have been + ** shifted successfully. + ** + */ + if (yypParser->yyerrcnt < 0) + { + yy_syntax_error (yypParser, yymajor, yyminorunion); + } + yymx = yypParser->yystack[yypParser->yyidx].major; + if (yymx == YYERRORSYMBOL || yyerrorhit) + { +#ifndef NDEBUG + if (yyTraceFILE) + { + fprintf (yyTraceFILE, "%sDiscard input token %s\n", + yyTracePrompt, yyTokenName[yymajor]); + } +#endif + yy_destructor (yypParser, (YYCODETYPE) yymajor, + &yyminorunion); + yymajor = YYNOCODE; + } + else + { + while (yypParser->yyidx >= 0 && + yymx != YYERRORSYMBOL && + (yyact = + yy_find_reduce_action (yypParser->yystack + [yypParser->yyidx].stateno, + YYERRORSYMBOL)) >= + YYNSTATE) + { + yy_pop_parser_stack (yypParser); + } + if (yypParser->yyidx < 0 || yymajor == 0) + { + yy_destructor (yypParser, (YYCODETYPE) yymajor, + &yyminorunion); + yy_parse_failed (yypParser); + yymajor = YYNOCODE; + } + else if (yymx != YYERRORSYMBOL) + { + YYMINORTYPE u2; + u2.YYERRSYMDT = 0; + yy_shift (yypParser, yyact, YYERRORSYMBOL, &u2); + } + } + yypParser->yyerrcnt = 3; + yyerrorhit = 1; +#elif defined(YYNOERRORRECOVERY) + /* If the YYNOERRORRECOVERY macro is defined, then do not attempt to + ** do any kind of error recovery. Instead, simply invoke the syntax + ** error routine and continue going as if nothing had happened. + ** + ** Applications can set this macro (for example inside %include) if + ** they intend to abandon the parse upon the first syntax error seen. + */ + yy_syntax_error (yypParser, yymajor, yyminorunion); + yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); + yymajor = YYNOCODE; + +#else /* YYERRORSYMBOL is not defined */ + /* This is what we do if the grammar does not define ERROR: + ** + ** * Report an error message, and throw away the input token. + ** + ** * If the input token is $, then fail the parse. + ** + ** As before, subsequent error messages are suppressed until + ** three input tokens have been successfully shifted. + */ + if (yypParser->yyerrcnt <= 0) + { + yy_syntax_error (yypParser, yymajor, yyminorunion); + } + yypParser->yyerrcnt = 3; + yy_destructor (yypParser, (YYCODETYPE) yymajor, &yyminorunion); + if (yyendofinput) + { + yy_parse_failed (yypParser); + } + yymajor = YYNOCODE; +#endif + } + } + while (yymajor != YYNOCODE && yypParser->yyidx >= 0); + return; +} diff --git a/src/spatialite/src/gaiageo/vanuatuWkt.h b/src/spatialite/src/gaiageo/vanuatuWkt.h new file mode 100644 index 0000000..f723c93 --- /dev/null +++ b/src/spatialite/src/gaiageo/vanuatuWkt.h @@ -0,0 +1,33 @@ +#define VANUATU_NEWLINE 1 +#define VANUATU_POINT 2 +#define VANUATU_OPEN_BRACKET 3 +#define VANUATU_CLOSE_BRACKET 4 +#define VANUATU_POINT_M 5 +#define VANUATU_POINT_Z 6 +#define VANUATU_POINT_ZM 7 +#define VANUATU_NUM 8 +#define VANUATU_COMMA 9 +#define VANUATU_LINESTRING 10 +#define VANUATU_LINESTRING_M 11 +#define VANUATU_LINESTRING_Z 12 +#define VANUATU_LINESTRING_ZM 13 +#define VANUATU_POLYGON 14 +#define VANUATU_POLYGON_M 15 +#define VANUATU_POLYGON_Z 16 +#define VANUATU_POLYGON_ZM 17 +#define VANUATU_MULTIPOINT 18 +#define VANUATU_MULTIPOINT_M 19 +#define VANUATU_MULTIPOINT_Z 20 +#define VANUATU_MULTIPOINT_ZM 21 +#define VANUATU_MULTILINESTRING 22 +#define VANUATU_MULTILINESTRING_M 23 +#define VANUATU_MULTILINESTRING_Z 24 +#define VANUATU_MULTILINESTRING_ZM 25 +#define VANUATU_MULTIPOLYGON 26 +#define VANUATU_MULTIPOLYGON_M 27 +#define VANUATU_MULTIPOLYGON_Z 28 +#define VANUATU_MULTIPOLYGON_ZM 29 +#define VANUATU_GEOMETRYCOLLECTION 30 +#define VANUATU_GEOMETRYCOLLECTION_M 31 +#define VANUATU_GEOMETRYCOLLECTION_Z 32 +#define VANUATU_GEOMETRYCOLLECTION_ZM 33 diff --git a/src/spatialite/src/geopackage/Makefile.am b/src/spatialite/src/geopackage/Makefile.am new file mode 100644 index 0000000..8d36eac --- /dev/null +++ b/src/spatialite/src/geopackage/Makefile.am @@ -0,0 +1,39 @@ +AM_CFLAGS = $(GCOV_FLAGS) + +AM_CPPFLAGS = @CFLAGS@ +AM_CPPFLAGS += -I$(top_srcdir)/src/headers + +noinst_LTLIBRARIES = libgeopackage.la geopackage.la + +SHARED_SOURCES = \ + gpkg_add_tile_triggers.c \ + gpkg_get_normal_row.c \ + gpkg_get_normal_zoom.c \ + gpkgGetImageType.c \ + gpkgCreateBaseTables.c \ + gpkgInsertEpsgSRID.c \ + gpkgCreateTilesTable.c \ + gpkgCreateTilesZoomLevel.c \ + gpkgAddGeometryColumn.c \ + gpkgMakePoint.c \ + gpkgBinary.c \ + gpkg_add_geometry_triggers.c \ + gpkg_add_spatial_index.c \ + gaia_cvt_gpkg.c + +libgeopackage_la_SOURCES = $(SHARED_SOURCES) + +libgeopackage_la_CFLAGS = -fvisibility=hidden + +geopackage_la_SOURCES = $(SHARED_SOURCES) + +geopackage_la_CPPFLAGS = @CFLAGS@ +geopackage_la_CPPFLAGS += -I$(top_srcdir)/src/headers -I. +geopackage_la_CPPFLAGS += -DLOADABLE_EXTENSION +geopackage_la_CPPFLAGS += -fvisibility=hidden +geopackage_la_LDFLAGS = -module +geopackage_la_LIBTOOLFLAGS = --tag=disable-static + +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda + +EXTRA_DIST = geopackage_internal.h diff --git a/src/spatialite/src/geopackage/Makefile.in b/src/spatialite/src/geopackage/Makefile.in new file mode 100644 index 0000000..c73f0c3 --- /dev/null +++ b/src/spatialite/src/geopackage/Makefile.in @@ -0,0 +1,876 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/geopackage +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +geopackage_la_LIBADD = +am__objects_1 = geopackage_la-gpkg_add_tile_triggers.lo \ + geopackage_la-gpkg_get_normal_row.lo \ + geopackage_la-gpkg_get_normal_zoom.lo \ + geopackage_la-gpkgGetImageType.lo \ + geopackage_la-gpkgCreateBaseTables.lo \ + geopackage_la-gpkgInsertEpsgSRID.lo \ + geopackage_la-gpkgCreateTilesTable.lo \ + geopackage_la-gpkgCreateTilesZoomLevel.lo \ + geopackage_la-gpkgAddGeometryColumn.lo \ + geopackage_la-gpkgMakePoint.lo geopackage_la-gpkgBinary.lo \ + geopackage_la-gpkg_add_geometry_triggers.lo \ + geopackage_la-gpkg_add_spatial_index.lo \ + geopackage_la-gaia_cvt_gpkg.lo +am_geopackage_la_OBJECTS = $(am__objects_1) +geopackage_la_OBJECTS = $(am_geopackage_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +geopackage_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(geopackage_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +libgeopackage_la_LIBADD = +am__objects_2 = libgeopackage_la-gpkg_add_tile_triggers.lo \ + libgeopackage_la-gpkg_get_normal_row.lo \ + libgeopackage_la-gpkg_get_normal_zoom.lo \ + libgeopackage_la-gpkgGetImageType.lo \ + libgeopackage_la-gpkgCreateBaseTables.lo \ + libgeopackage_la-gpkgInsertEpsgSRID.lo \ + libgeopackage_la-gpkgCreateTilesTable.lo \ + libgeopackage_la-gpkgCreateTilesZoomLevel.lo \ + libgeopackage_la-gpkgAddGeometryColumn.lo \ + libgeopackage_la-gpkgMakePoint.lo \ + libgeopackage_la-gpkgBinary.lo \ + libgeopackage_la-gpkg_add_geometry_triggers.lo \ + libgeopackage_la-gpkg_add_spatial_index.lo \ + libgeopackage_la-gaia_cvt_gpkg.lo +am_libgeopackage_la_OBJECTS = $(am__objects_2) +libgeopackage_la_OBJECTS = $(am_libgeopackage_la_OBJECTS) +libgeopackage_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(libgeopackage_la_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ + -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(geopackage_la_SOURCES) $(libgeopackage_la_SOURCES) +DIST_SOURCES = $(geopackage_la_SOURCES) $(libgeopackage_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CFLAGS = $(GCOV_FLAGS) +AM_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers +noinst_LTLIBRARIES = libgeopackage.la geopackage.la +SHARED_SOURCES = \ + gpkg_add_tile_triggers.c \ + gpkg_get_normal_row.c \ + gpkg_get_normal_zoom.c \ + gpkgGetImageType.c \ + gpkgCreateBaseTables.c \ + gpkgInsertEpsgSRID.c \ + gpkgCreateTilesTable.c \ + gpkgCreateTilesZoomLevel.c \ + gpkgAddGeometryColumn.c \ + gpkgMakePoint.c \ + gpkgBinary.c \ + gpkg_add_geometry_triggers.c \ + gpkg_add_spatial_index.c \ + gaia_cvt_gpkg.c + +libgeopackage_la_SOURCES = $(SHARED_SOURCES) +libgeopackage_la_CFLAGS = -fvisibility=hidden +geopackage_la_SOURCES = $(SHARED_SOURCES) +geopackage_la_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers -I. \ + -DLOADABLE_EXTENSION -fvisibility=hidden +geopackage_la_LDFLAGS = -module +geopackage_la_LIBTOOLFLAGS = --tag=disable-static +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda +EXTRA_DIST = geopackage_internal.h +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/geopackage/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/geopackage/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +geopackage.la: $(geopackage_la_OBJECTS) $(geopackage_la_DEPENDENCIES) $(EXTRA_geopackage_la_DEPENDENCIES) + $(AM_V_CCLD)$(geopackage_la_LINK) $(geopackage_la_OBJECTS) $(geopackage_la_LIBADD) $(LIBS) + +libgeopackage.la: $(libgeopackage_la_OBJECTS) $(libgeopackage_la_DEPENDENCIES) $(EXTRA_libgeopackage_la_DEPENDENCIES) + $(AM_V_CCLD)$(libgeopackage_la_LINK) $(libgeopackage_la_OBJECTS) $(libgeopackage_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geopackage_la-gaia_cvt_gpkg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geopackage_la-gpkgAddGeometryColumn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geopackage_la-gpkgBinary.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geopackage_la-gpkgCreateBaseTables.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geopackage_la-gpkgCreateTilesTable.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geopackage_la-gpkgCreateTilesZoomLevel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geopackage_la-gpkgGetImageType.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geopackage_la-gpkgInsertEpsgSRID.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geopackage_la-gpkgMakePoint.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geopackage_la-gpkg_add_geometry_triggers.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geopackage_la-gpkg_add_spatial_index.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geopackage_la-gpkg_add_tile_triggers.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geopackage_la-gpkg_get_normal_row.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/geopackage_la-gpkg_get_normal_zoom.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeopackage_la-gaia_cvt_gpkg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeopackage_la-gpkgAddGeometryColumn.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeopackage_la-gpkgBinary.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeopackage_la-gpkgCreateBaseTables.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeopackage_la-gpkgCreateTilesTable.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeopackage_la-gpkgCreateTilesZoomLevel.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeopackage_la-gpkgGetImageType.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeopackage_la-gpkgInsertEpsgSRID.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeopackage_la-gpkgMakePoint.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeopackage_la-gpkg_add_geometry_triggers.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeopackage_la-gpkg_add_spatial_index.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeopackage_la-gpkg_add_tile_triggers.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeopackage_la-gpkg_get_normal_row.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libgeopackage_la-gpkg_get_normal_zoom.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +geopackage_la-gpkg_add_tile_triggers.lo: gpkg_add_tile_triggers.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geopackage_la-gpkg_add_tile_triggers.lo -MD -MP -MF $(DEPDIR)/geopackage_la-gpkg_add_tile_triggers.Tpo -c -o geopackage_la-gpkg_add_tile_triggers.lo `test -f 'gpkg_add_tile_triggers.c' || echo '$(srcdir)/'`gpkg_add_tile_triggers.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/geopackage_la-gpkg_add_tile_triggers.Tpo $(DEPDIR)/geopackage_la-gpkg_add_tile_triggers.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkg_add_tile_triggers.c' object='geopackage_la-gpkg_add_tile_triggers.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geopackage_la-gpkg_add_tile_triggers.lo `test -f 'gpkg_add_tile_triggers.c' || echo '$(srcdir)/'`gpkg_add_tile_triggers.c + +geopackage_la-gpkg_get_normal_row.lo: gpkg_get_normal_row.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geopackage_la-gpkg_get_normal_row.lo -MD -MP -MF $(DEPDIR)/geopackage_la-gpkg_get_normal_row.Tpo -c -o geopackage_la-gpkg_get_normal_row.lo `test -f 'gpkg_get_normal_row.c' || echo '$(srcdir)/'`gpkg_get_normal_row.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/geopackage_la-gpkg_get_normal_row.Tpo $(DEPDIR)/geopackage_la-gpkg_get_normal_row.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkg_get_normal_row.c' object='geopackage_la-gpkg_get_normal_row.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geopackage_la-gpkg_get_normal_row.lo `test -f 'gpkg_get_normal_row.c' || echo '$(srcdir)/'`gpkg_get_normal_row.c + +geopackage_la-gpkg_get_normal_zoom.lo: gpkg_get_normal_zoom.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geopackage_la-gpkg_get_normal_zoom.lo -MD -MP -MF $(DEPDIR)/geopackage_la-gpkg_get_normal_zoom.Tpo -c -o geopackage_la-gpkg_get_normal_zoom.lo `test -f 'gpkg_get_normal_zoom.c' || echo '$(srcdir)/'`gpkg_get_normal_zoom.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/geopackage_la-gpkg_get_normal_zoom.Tpo $(DEPDIR)/geopackage_la-gpkg_get_normal_zoom.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkg_get_normal_zoom.c' object='geopackage_la-gpkg_get_normal_zoom.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geopackage_la-gpkg_get_normal_zoom.lo `test -f 'gpkg_get_normal_zoom.c' || echo '$(srcdir)/'`gpkg_get_normal_zoom.c + +geopackage_la-gpkgGetImageType.lo: gpkgGetImageType.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geopackage_la-gpkgGetImageType.lo -MD -MP -MF $(DEPDIR)/geopackage_la-gpkgGetImageType.Tpo -c -o geopackage_la-gpkgGetImageType.lo `test -f 'gpkgGetImageType.c' || echo '$(srcdir)/'`gpkgGetImageType.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/geopackage_la-gpkgGetImageType.Tpo $(DEPDIR)/geopackage_la-gpkgGetImageType.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgGetImageType.c' object='geopackage_la-gpkgGetImageType.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geopackage_la-gpkgGetImageType.lo `test -f 'gpkgGetImageType.c' || echo '$(srcdir)/'`gpkgGetImageType.c + +geopackage_la-gpkgCreateBaseTables.lo: gpkgCreateBaseTables.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geopackage_la-gpkgCreateBaseTables.lo -MD -MP -MF $(DEPDIR)/geopackage_la-gpkgCreateBaseTables.Tpo -c -o geopackage_la-gpkgCreateBaseTables.lo `test -f 'gpkgCreateBaseTables.c' || echo '$(srcdir)/'`gpkgCreateBaseTables.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/geopackage_la-gpkgCreateBaseTables.Tpo $(DEPDIR)/geopackage_la-gpkgCreateBaseTables.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgCreateBaseTables.c' object='geopackage_la-gpkgCreateBaseTables.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geopackage_la-gpkgCreateBaseTables.lo `test -f 'gpkgCreateBaseTables.c' || echo '$(srcdir)/'`gpkgCreateBaseTables.c + +geopackage_la-gpkgInsertEpsgSRID.lo: gpkgInsertEpsgSRID.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geopackage_la-gpkgInsertEpsgSRID.lo -MD -MP -MF $(DEPDIR)/geopackage_la-gpkgInsertEpsgSRID.Tpo -c -o geopackage_la-gpkgInsertEpsgSRID.lo `test -f 'gpkgInsertEpsgSRID.c' || echo '$(srcdir)/'`gpkgInsertEpsgSRID.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/geopackage_la-gpkgInsertEpsgSRID.Tpo $(DEPDIR)/geopackage_la-gpkgInsertEpsgSRID.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgInsertEpsgSRID.c' object='geopackage_la-gpkgInsertEpsgSRID.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geopackage_la-gpkgInsertEpsgSRID.lo `test -f 'gpkgInsertEpsgSRID.c' || echo '$(srcdir)/'`gpkgInsertEpsgSRID.c + +geopackage_la-gpkgCreateTilesTable.lo: gpkgCreateTilesTable.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geopackage_la-gpkgCreateTilesTable.lo -MD -MP -MF $(DEPDIR)/geopackage_la-gpkgCreateTilesTable.Tpo -c -o geopackage_la-gpkgCreateTilesTable.lo `test -f 'gpkgCreateTilesTable.c' || echo '$(srcdir)/'`gpkgCreateTilesTable.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/geopackage_la-gpkgCreateTilesTable.Tpo $(DEPDIR)/geopackage_la-gpkgCreateTilesTable.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgCreateTilesTable.c' object='geopackage_la-gpkgCreateTilesTable.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geopackage_la-gpkgCreateTilesTable.lo `test -f 'gpkgCreateTilesTable.c' || echo '$(srcdir)/'`gpkgCreateTilesTable.c + +geopackage_la-gpkgCreateTilesZoomLevel.lo: gpkgCreateTilesZoomLevel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geopackage_la-gpkgCreateTilesZoomLevel.lo -MD -MP -MF $(DEPDIR)/geopackage_la-gpkgCreateTilesZoomLevel.Tpo -c -o geopackage_la-gpkgCreateTilesZoomLevel.lo `test -f 'gpkgCreateTilesZoomLevel.c' || echo '$(srcdir)/'`gpkgCreateTilesZoomLevel.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/geopackage_la-gpkgCreateTilesZoomLevel.Tpo $(DEPDIR)/geopackage_la-gpkgCreateTilesZoomLevel.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgCreateTilesZoomLevel.c' object='geopackage_la-gpkgCreateTilesZoomLevel.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geopackage_la-gpkgCreateTilesZoomLevel.lo `test -f 'gpkgCreateTilesZoomLevel.c' || echo '$(srcdir)/'`gpkgCreateTilesZoomLevel.c + +geopackage_la-gpkgAddGeometryColumn.lo: gpkgAddGeometryColumn.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geopackage_la-gpkgAddGeometryColumn.lo -MD -MP -MF $(DEPDIR)/geopackage_la-gpkgAddGeometryColumn.Tpo -c -o geopackage_la-gpkgAddGeometryColumn.lo `test -f 'gpkgAddGeometryColumn.c' || echo '$(srcdir)/'`gpkgAddGeometryColumn.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/geopackage_la-gpkgAddGeometryColumn.Tpo $(DEPDIR)/geopackage_la-gpkgAddGeometryColumn.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgAddGeometryColumn.c' object='geopackage_la-gpkgAddGeometryColumn.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geopackage_la-gpkgAddGeometryColumn.lo `test -f 'gpkgAddGeometryColumn.c' || echo '$(srcdir)/'`gpkgAddGeometryColumn.c + +geopackage_la-gpkgMakePoint.lo: gpkgMakePoint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geopackage_la-gpkgMakePoint.lo -MD -MP -MF $(DEPDIR)/geopackage_la-gpkgMakePoint.Tpo -c -o geopackage_la-gpkgMakePoint.lo `test -f 'gpkgMakePoint.c' || echo '$(srcdir)/'`gpkgMakePoint.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/geopackage_la-gpkgMakePoint.Tpo $(DEPDIR)/geopackage_la-gpkgMakePoint.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgMakePoint.c' object='geopackage_la-gpkgMakePoint.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geopackage_la-gpkgMakePoint.lo `test -f 'gpkgMakePoint.c' || echo '$(srcdir)/'`gpkgMakePoint.c + +geopackage_la-gpkgBinary.lo: gpkgBinary.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geopackage_la-gpkgBinary.lo -MD -MP -MF $(DEPDIR)/geopackage_la-gpkgBinary.Tpo -c -o geopackage_la-gpkgBinary.lo `test -f 'gpkgBinary.c' || echo '$(srcdir)/'`gpkgBinary.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/geopackage_la-gpkgBinary.Tpo $(DEPDIR)/geopackage_la-gpkgBinary.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgBinary.c' object='geopackage_la-gpkgBinary.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geopackage_la-gpkgBinary.lo `test -f 'gpkgBinary.c' || echo '$(srcdir)/'`gpkgBinary.c + +geopackage_la-gpkg_add_geometry_triggers.lo: gpkg_add_geometry_triggers.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geopackage_la-gpkg_add_geometry_triggers.lo -MD -MP -MF $(DEPDIR)/geopackage_la-gpkg_add_geometry_triggers.Tpo -c -o geopackage_la-gpkg_add_geometry_triggers.lo `test -f 'gpkg_add_geometry_triggers.c' || echo '$(srcdir)/'`gpkg_add_geometry_triggers.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/geopackage_la-gpkg_add_geometry_triggers.Tpo $(DEPDIR)/geopackage_la-gpkg_add_geometry_triggers.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkg_add_geometry_triggers.c' object='geopackage_la-gpkg_add_geometry_triggers.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geopackage_la-gpkg_add_geometry_triggers.lo `test -f 'gpkg_add_geometry_triggers.c' || echo '$(srcdir)/'`gpkg_add_geometry_triggers.c + +geopackage_la-gpkg_add_spatial_index.lo: gpkg_add_spatial_index.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geopackage_la-gpkg_add_spatial_index.lo -MD -MP -MF $(DEPDIR)/geopackage_la-gpkg_add_spatial_index.Tpo -c -o geopackage_la-gpkg_add_spatial_index.lo `test -f 'gpkg_add_spatial_index.c' || echo '$(srcdir)/'`gpkg_add_spatial_index.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/geopackage_la-gpkg_add_spatial_index.Tpo $(DEPDIR)/geopackage_la-gpkg_add_spatial_index.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkg_add_spatial_index.c' object='geopackage_la-gpkg_add_spatial_index.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geopackage_la-gpkg_add_spatial_index.lo `test -f 'gpkg_add_spatial_index.c' || echo '$(srcdir)/'`gpkg_add_spatial_index.c + +geopackage_la-gaia_cvt_gpkg.lo: gaia_cvt_gpkg.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT geopackage_la-gaia_cvt_gpkg.lo -MD -MP -MF $(DEPDIR)/geopackage_la-gaia_cvt_gpkg.Tpo -c -o geopackage_la-gaia_cvt_gpkg.lo `test -f 'gaia_cvt_gpkg.c' || echo '$(srcdir)/'`gaia_cvt_gpkg.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/geopackage_la-gaia_cvt_gpkg.Tpo $(DEPDIR)/geopackage_la-gaia_cvt_gpkg.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gaia_cvt_gpkg.c' object='geopackage_la-gaia_cvt_gpkg.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(geopackage_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(geopackage_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o geopackage_la-gaia_cvt_gpkg.lo `test -f 'gaia_cvt_gpkg.c' || echo '$(srcdir)/'`gaia_cvt_gpkg.c + +libgeopackage_la-gpkg_add_tile_triggers.lo: gpkg_add_tile_triggers.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -MT libgeopackage_la-gpkg_add_tile_triggers.lo -MD -MP -MF $(DEPDIR)/libgeopackage_la-gpkg_add_tile_triggers.Tpo -c -o libgeopackage_la-gpkg_add_tile_triggers.lo `test -f 'gpkg_add_tile_triggers.c' || echo '$(srcdir)/'`gpkg_add_tile_triggers.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgeopackage_la-gpkg_add_tile_triggers.Tpo $(DEPDIR)/libgeopackage_la-gpkg_add_tile_triggers.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkg_add_tile_triggers.c' object='libgeopackage_la-gpkg_add_tile_triggers.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -c -o libgeopackage_la-gpkg_add_tile_triggers.lo `test -f 'gpkg_add_tile_triggers.c' || echo '$(srcdir)/'`gpkg_add_tile_triggers.c + +libgeopackage_la-gpkg_get_normal_row.lo: gpkg_get_normal_row.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -MT libgeopackage_la-gpkg_get_normal_row.lo -MD -MP -MF $(DEPDIR)/libgeopackage_la-gpkg_get_normal_row.Tpo -c -o libgeopackage_la-gpkg_get_normal_row.lo `test -f 'gpkg_get_normal_row.c' || echo '$(srcdir)/'`gpkg_get_normal_row.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgeopackage_la-gpkg_get_normal_row.Tpo $(DEPDIR)/libgeopackage_la-gpkg_get_normal_row.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkg_get_normal_row.c' object='libgeopackage_la-gpkg_get_normal_row.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -c -o libgeopackage_la-gpkg_get_normal_row.lo `test -f 'gpkg_get_normal_row.c' || echo '$(srcdir)/'`gpkg_get_normal_row.c + +libgeopackage_la-gpkg_get_normal_zoom.lo: gpkg_get_normal_zoom.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -MT libgeopackage_la-gpkg_get_normal_zoom.lo -MD -MP -MF $(DEPDIR)/libgeopackage_la-gpkg_get_normal_zoom.Tpo -c -o libgeopackage_la-gpkg_get_normal_zoom.lo `test -f 'gpkg_get_normal_zoom.c' || echo '$(srcdir)/'`gpkg_get_normal_zoom.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgeopackage_la-gpkg_get_normal_zoom.Tpo $(DEPDIR)/libgeopackage_la-gpkg_get_normal_zoom.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkg_get_normal_zoom.c' object='libgeopackage_la-gpkg_get_normal_zoom.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -c -o libgeopackage_la-gpkg_get_normal_zoom.lo `test -f 'gpkg_get_normal_zoom.c' || echo '$(srcdir)/'`gpkg_get_normal_zoom.c + +libgeopackage_la-gpkgGetImageType.lo: gpkgGetImageType.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -MT libgeopackage_la-gpkgGetImageType.lo -MD -MP -MF $(DEPDIR)/libgeopackage_la-gpkgGetImageType.Tpo -c -o libgeopackage_la-gpkgGetImageType.lo `test -f 'gpkgGetImageType.c' || echo '$(srcdir)/'`gpkgGetImageType.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgeopackage_la-gpkgGetImageType.Tpo $(DEPDIR)/libgeopackage_la-gpkgGetImageType.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgGetImageType.c' object='libgeopackage_la-gpkgGetImageType.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -c -o libgeopackage_la-gpkgGetImageType.lo `test -f 'gpkgGetImageType.c' || echo '$(srcdir)/'`gpkgGetImageType.c + +libgeopackage_la-gpkgCreateBaseTables.lo: gpkgCreateBaseTables.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -MT libgeopackage_la-gpkgCreateBaseTables.lo -MD -MP -MF $(DEPDIR)/libgeopackage_la-gpkgCreateBaseTables.Tpo -c -o libgeopackage_la-gpkgCreateBaseTables.lo `test -f 'gpkgCreateBaseTables.c' || echo '$(srcdir)/'`gpkgCreateBaseTables.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgeopackage_la-gpkgCreateBaseTables.Tpo $(DEPDIR)/libgeopackage_la-gpkgCreateBaseTables.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgCreateBaseTables.c' object='libgeopackage_la-gpkgCreateBaseTables.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -c -o libgeopackage_la-gpkgCreateBaseTables.lo `test -f 'gpkgCreateBaseTables.c' || echo '$(srcdir)/'`gpkgCreateBaseTables.c + +libgeopackage_la-gpkgInsertEpsgSRID.lo: gpkgInsertEpsgSRID.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -MT libgeopackage_la-gpkgInsertEpsgSRID.lo -MD -MP -MF $(DEPDIR)/libgeopackage_la-gpkgInsertEpsgSRID.Tpo -c -o libgeopackage_la-gpkgInsertEpsgSRID.lo `test -f 'gpkgInsertEpsgSRID.c' || echo '$(srcdir)/'`gpkgInsertEpsgSRID.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgeopackage_la-gpkgInsertEpsgSRID.Tpo $(DEPDIR)/libgeopackage_la-gpkgInsertEpsgSRID.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgInsertEpsgSRID.c' object='libgeopackage_la-gpkgInsertEpsgSRID.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -c -o libgeopackage_la-gpkgInsertEpsgSRID.lo `test -f 'gpkgInsertEpsgSRID.c' || echo '$(srcdir)/'`gpkgInsertEpsgSRID.c + +libgeopackage_la-gpkgCreateTilesTable.lo: gpkgCreateTilesTable.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -MT libgeopackage_la-gpkgCreateTilesTable.lo -MD -MP -MF $(DEPDIR)/libgeopackage_la-gpkgCreateTilesTable.Tpo -c -o libgeopackage_la-gpkgCreateTilesTable.lo `test -f 'gpkgCreateTilesTable.c' || echo '$(srcdir)/'`gpkgCreateTilesTable.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgeopackage_la-gpkgCreateTilesTable.Tpo $(DEPDIR)/libgeopackage_la-gpkgCreateTilesTable.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgCreateTilesTable.c' object='libgeopackage_la-gpkgCreateTilesTable.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -c -o libgeopackage_la-gpkgCreateTilesTable.lo `test -f 'gpkgCreateTilesTable.c' || echo '$(srcdir)/'`gpkgCreateTilesTable.c + +libgeopackage_la-gpkgCreateTilesZoomLevel.lo: gpkgCreateTilesZoomLevel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -MT libgeopackage_la-gpkgCreateTilesZoomLevel.lo -MD -MP -MF $(DEPDIR)/libgeopackage_la-gpkgCreateTilesZoomLevel.Tpo -c -o libgeopackage_la-gpkgCreateTilesZoomLevel.lo `test -f 'gpkgCreateTilesZoomLevel.c' || echo '$(srcdir)/'`gpkgCreateTilesZoomLevel.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgeopackage_la-gpkgCreateTilesZoomLevel.Tpo $(DEPDIR)/libgeopackage_la-gpkgCreateTilesZoomLevel.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgCreateTilesZoomLevel.c' object='libgeopackage_la-gpkgCreateTilesZoomLevel.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -c -o libgeopackage_la-gpkgCreateTilesZoomLevel.lo `test -f 'gpkgCreateTilesZoomLevel.c' || echo '$(srcdir)/'`gpkgCreateTilesZoomLevel.c + +libgeopackage_la-gpkgAddGeometryColumn.lo: gpkgAddGeometryColumn.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -MT libgeopackage_la-gpkgAddGeometryColumn.lo -MD -MP -MF $(DEPDIR)/libgeopackage_la-gpkgAddGeometryColumn.Tpo -c -o libgeopackage_la-gpkgAddGeometryColumn.lo `test -f 'gpkgAddGeometryColumn.c' || echo '$(srcdir)/'`gpkgAddGeometryColumn.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgeopackage_la-gpkgAddGeometryColumn.Tpo $(DEPDIR)/libgeopackage_la-gpkgAddGeometryColumn.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgAddGeometryColumn.c' object='libgeopackage_la-gpkgAddGeometryColumn.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -c -o libgeopackage_la-gpkgAddGeometryColumn.lo `test -f 'gpkgAddGeometryColumn.c' || echo '$(srcdir)/'`gpkgAddGeometryColumn.c + +libgeopackage_la-gpkgMakePoint.lo: gpkgMakePoint.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -MT libgeopackage_la-gpkgMakePoint.lo -MD -MP -MF $(DEPDIR)/libgeopackage_la-gpkgMakePoint.Tpo -c -o libgeopackage_la-gpkgMakePoint.lo `test -f 'gpkgMakePoint.c' || echo '$(srcdir)/'`gpkgMakePoint.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgeopackage_la-gpkgMakePoint.Tpo $(DEPDIR)/libgeopackage_la-gpkgMakePoint.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgMakePoint.c' object='libgeopackage_la-gpkgMakePoint.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -c -o libgeopackage_la-gpkgMakePoint.lo `test -f 'gpkgMakePoint.c' || echo '$(srcdir)/'`gpkgMakePoint.c + +libgeopackage_la-gpkgBinary.lo: gpkgBinary.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -MT libgeopackage_la-gpkgBinary.lo -MD -MP -MF $(DEPDIR)/libgeopackage_la-gpkgBinary.Tpo -c -o libgeopackage_la-gpkgBinary.lo `test -f 'gpkgBinary.c' || echo '$(srcdir)/'`gpkgBinary.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgeopackage_la-gpkgBinary.Tpo $(DEPDIR)/libgeopackage_la-gpkgBinary.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkgBinary.c' object='libgeopackage_la-gpkgBinary.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -c -o libgeopackage_la-gpkgBinary.lo `test -f 'gpkgBinary.c' || echo '$(srcdir)/'`gpkgBinary.c + +libgeopackage_la-gpkg_add_geometry_triggers.lo: gpkg_add_geometry_triggers.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -MT libgeopackage_la-gpkg_add_geometry_triggers.lo -MD -MP -MF $(DEPDIR)/libgeopackage_la-gpkg_add_geometry_triggers.Tpo -c -o libgeopackage_la-gpkg_add_geometry_triggers.lo `test -f 'gpkg_add_geometry_triggers.c' || echo '$(srcdir)/'`gpkg_add_geometry_triggers.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgeopackage_la-gpkg_add_geometry_triggers.Tpo $(DEPDIR)/libgeopackage_la-gpkg_add_geometry_triggers.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkg_add_geometry_triggers.c' object='libgeopackage_la-gpkg_add_geometry_triggers.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -c -o libgeopackage_la-gpkg_add_geometry_triggers.lo `test -f 'gpkg_add_geometry_triggers.c' || echo '$(srcdir)/'`gpkg_add_geometry_triggers.c + +libgeopackage_la-gpkg_add_spatial_index.lo: gpkg_add_spatial_index.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -MT libgeopackage_la-gpkg_add_spatial_index.lo -MD -MP -MF $(DEPDIR)/libgeopackage_la-gpkg_add_spatial_index.Tpo -c -o libgeopackage_la-gpkg_add_spatial_index.lo `test -f 'gpkg_add_spatial_index.c' || echo '$(srcdir)/'`gpkg_add_spatial_index.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgeopackage_la-gpkg_add_spatial_index.Tpo $(DEPDIR)/libgeopackage_la-gpkg_add_spatial_index.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gpkg_add_spatial_index.c' object='libgeopackage_la-gpkg_add_spatial_index.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -c -o libgeopackage_la-gpkg_add_spatial_index.lo `test -f 'gpkg_add_spatial_index.c' || echo '$(srcdir)/'`gpkg_add_spatial_index.c + +libgeopackage_la-gaia_cvt_gpkg.lo: gaia_cvt_gpkg.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -MT libgeopackage_la-gaia_cvt_gpkg.lo -MD -MP -MF $(DEPDIR)/libgeopackage_la-gaia_cvt_gpkg.Tpo -c -o libgeopackage_la-gaia_cvt_gpkg.lo `test -f 'gaia_cvt_gpkg.c' || echo '$(srcdir)/'`gaia_cvt_gpkg.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libgeopackage_la-gaia_cvt_gpkg.Tpo $(DEPDIR)/libgeopackage_la-gaia_cvt_gpkg.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gaia_cvt_gpkg.c' object='libgeopackage_la-gaia_cvt_gpkg.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgeopackage_la_CFLAGS) $(CFLAGS) -c -o libgeopackage_la-gaia_cvt_gpkg.lo `test -f 'gaia_cvt_gpkg.c' || echo '$(srcdir)/'`gaia_cvt_gpkg.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/geopackage/gaia_cvt_gpkg.c b/src/spatialite/src/geopackage/gaia_cvt_gpkg.c new file mode 100644 index 0000000..2702fca --- /dev/null +++ b/src/spatialite/src/geopackage/gaia_cvt_gpkg.c @@ -0,0 +1,1412 @@ +/* + + gaia_cvt_gpkg.c -- implements GPKG DB conversion [both directions] + + version 4.2, 2014 May 10 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): Brad Hards <bradh@frogmouth.net> + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include "config.h" + +#ifdef ENABLE_GEOPACKAGE /* enabling GeoPackage extensions */ + +#include <stdlib.h> +#include <string.h> +#include <stdio.h> + +#include <spatialite/sqlite.h> +#include <spatialite/debug.h> +#include <spatialite.h> +#include <spatialite/gaiaaux.h> +#include <spatialite/geopackage.h> + +struct pk_item +{ +/* a struct wrapping a Primary Key item */ + int position; + char *column; + struct pk_item *next; +}; + +struct primary_key +{ +/* a struct wrapping a Primary Key */ + struct pk_item *first; + struct pk_item *last; + int num_items; + struct pk_item **array; +}; + +static struct primary_key * +alloc_pk () +{ +/* creating an empty Primary Key */ + struct primary_key *pk = malloc (sizeof (struct primary_key)); + pk->first = NULL; + pk->last = NULL; + pk->num_items = 0; + pk->array = NULL; + return pk; +} + +static void +destroy_pk (struct primary_key *pk) +{ +/* destroying a Primary Key */ + struct pk_item *pi; + struct pk_item *pin; + if (pk == NULL) + return; + pi = pk->first; + while (pi != NULL) + { + pin = pi->next; + if (pi->column != NULL) + free (pi->column); + free (pi); + pi = pin; + } + if (pk->array != NULL) + free (pk->array); + free (pk); +} + +static void +add_to_pk (struct primary_key *pk, int position, const char *column) +{ +/* appending an item to a Primary Key */ + int len; + struct pk_item *pi; + if (pk == NULL) + return; + pi = malloc (sizeof (struct pk_item)); + pi->position = position; + len = strlen (column); + pi->column = malloc (len + 1); + strcpy (pi->column, column); + pi->next = NULL; + if (pk->first == NULL) + pk->first = pi; + if (pk->last != NULL) + pk->last->next = pi; + pk->last = pi; + pk->num_items += 1; +} + +static void +sort_pk (struct primary_key *pk) +{ +/* sorting the PK items by increasing position */ + struct pk_item *pi; + struct pk_item *pi2; + int i; + int ok = 1; + if (pk == NULL) + return; + if (pk->array != NULL) + free (pk->array); + pk->array = NULL; + if (pk->num_items <= 0) + return; + pk->array = malloc (sizeof (struct pk_item *) * pk->num_items); + pi = pk->first; + i = 0; + while (pi != NULL) + { + /* pre-loading the array */ + *(pk->array + i++) = pi; + pi = pi->next; + } + while (ok) + { + /* bubble sort */ + ok = 0; + for (i = 1; i < pk->num_items; i++) + { + pi = *(pk->array + (i - 1)); + pi2 = *(pk->array + i); + if (pi->position > pi2->position) + { + /* swapping */ + *(pk->array + (i - 1)) = pi2; + *(pk->array + i) = pi; + ok = 1; + } + } + } +} + +static int +create_gpkg_destination (sqlite3 * handle, const char *create_sql, + const char *table_name, const char *column_name, + const char *geometry_type, int has_z, int has_m, + int srid, int spatial_index) +{ +/* attempting to create a GPKG destination table */ + int ret; + char *sql_err = NULL; + char *sql; + +/* creating the table */ + ret = sqlite3_exec (handle, create_sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE \"%s\" error: %s\n", table_name, sql_err); + sqlite3_free (sql_err); + return 0; + } + +/* adding the geometry column */ + sql = + sqlite3_mprintf + ("SELECT gpkgAddGeometryColumn(Lower(%Q), Lower(%Q), %Q, %d, %d, %d)", + table_name, column_name, geometry_type, has_z, has_m, srid); + ret = sqlite3_exec (handle, sql, NULL, NULL, &sql_err); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("gpkgAddGeometryColumn \"%s\" error: %s\n", table_name, + sql_err); + sqlite3_free (sql_err); + return 0; + } + +/* adding the geometry triggers */ + sql = + sqlite3_mprintf + ("SELECT gpkgAddGeometryTriggers(Lower(%Q), Lower(%Q))", + table_name, column_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, &sql_err); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("gpkgAddGeometryTriggers \"%s\" error: %s\n", + table_name, sql_err); + sqlite3_free (sql_err); + return 0; + } + + if (spatial_index) + { + /* adding Spatial Index support */ + sql = + sqlite3_mprintf + ("SELECT gpkgAddSpatialIndex(Lower(%Q), Lower(%Q))", + table_name, column_name); + ret = sqlite3_exec (handle, sql, NULL, NULL, &sql_err); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("gpkgAddSpatialIndex \"%s\" error: %s\n", + table_name, sql_err); + sqlite3_free (sql_err); + return 0; + } + } + return 1; +} + +static int +create_spatialite_destination (sqlite3 * handle, const char *create_sql, + const char *table_name, const char *column_name, + const char *geometry_type, const char *dims, + int srid) +{ +/* attempting to create a Spatialite destination table */ + int ret; + char *sql_err = NULL; + char *sql; + int i; + char **results; + int rows; + int columns; + int ok = 0; + +/* creating the table */ + ret = sqlite3_exec (handle, create_sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE \"%s\" error: %s\n", table_name, sql_err); + sqlite3_free (sql_err); + return 0; + } + +/* adding the geometry column */ + sql = + sqlite3_mprintf + ("SELECT AddGeometryColumn(Lower(%Q), Lower(%Q), %d, %Q, %Q)", + table_name, column_name, srid, geometry_type, dims); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + ok = atoi (results[(i * columns) + 0]); + } + sqlite3_free_table (results); + if (!ok) + { + spatialite_e ("AddGeometryColumn \"%s\": error\n", table_name); + return 0; + } + return 1; +} + +static char * +prepare_create_table (sqlite3 * handle, const char *table_name, + const char *column_name) +{ +/* building a CREATE TABLE statement */ + int ret; + char *sql; + int i; + char **results; + int rows; + int columns; + char *create_sql; + char *prev_sql; + char *xtable; + int first = 1; + struct primary_key *pk = alloc_pk (); + + xtable = gaiaDoubleQuotedSql (table_name); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xtable); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + create_sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (", xtable); + free (xtable); + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + const char *name; + const char *type; + int not_null; + int pk_idx; + char *xname; + char *xtype; + name = results[(i * columns) + 1]; + if (strcasecmp (name, column_name) == 0) + { + /* skipping the geometry column */ + continue; + } + type = results[(i * columns) + 2]; + not_null = atoi (results[(i * columns) + 3]); + pk_idx = atoi (results[(i * columns) + 5]); + if (pk_idx > 0) + add_to_pk (pk, pk_idx, name); + xname = gaiaDoubleQuotedSql (name); + xtype = gaiaDoubleQuotedSql (type); + prev_sql = create_sql; + if (first) + { + if (not_null) + create_sql = + sqlite3_mprintf ("%s\n\t\"%s\" \"%s\" NOT NULL", + prev_sql, xname, xtype); + else + create_sql = + sqlite3_mprintf ("%s\n\t\"%s\" \"%s\"", prev_sql, + xname, xtype); + first = 0; + } + else + { + if (not_null) + create_sql = + sqlite3_mprintf ("%s,\n\t\"%s\" \"%s\" NOT NULL", + prev_sql, xname, xtype); + else + create_sql = + sqlite3_mprintf ("%s,\n\t\"%s\" \"%s\"", prev_sql, + xname, xtype); + } + free (xname); + free (xtype); + sqlite3_free (prev_sql); + } + } + sqlite3_free_table (results); + + if (pk->num_items > 0) + { + /* setting up the Primary Key (if any) */ + char *pk_name; + char *xpk_name; + int idx; + sort_pk (pk); + prev_sql = create_sql; + pk_name = sqlite3_mprintf ("pk_%s", table_name); + xpk_name = gaiaDoubleQuotedSql (pk_name); + sqlite3_free (pk_name); + create_sql = + sqlite3_mprintf ("%s,\n\tCONSTRAINT \"%s\" PRIMARY KEY (", + prev_sql, xpk_name); + free (xpk_name); + sqlite3_free (prev_sql); + for (idx = 0; idx < pk->num_items; idx++) + { + char *xcolumn; + struct pk_item *pi = *(pk->array + idx); + prev_sql = create_sql; + xcolumn = gaiaDoubleQuotedSql (pi->column); + if (idx == 0) + create_sql = + sqlite3_mprintf ("%s\"%s\"", prev_sql, xcolumn); + else + create_sql = + sqlite3_mprintf ("%s, \"%s\"", prev_sql, xcolumn); + free (xcolumn); + sqlite3_free (prev_sql); + } + prev_sql = create_sql; + create_sql = sqlite3_mprintf ("%s)", prev_sql); + sqlite3_free (prev_sql); + } + destroy_pk (pk); + + prev_sql = create_sql; + create_sql = sqlite3_mprintf ("%s)", prev_sql); + sqlite3_free (prev_sql); + return create_sql; +} + +static int +create_Spatialite2GPKG_statements (sqlite3 * handle_in, sqlite3 * handle_out, + const char *table_name, + const char *geometry_column, + sqlite3_stmt ** stmt_in, + sqlite3_stmt ** stmt_out) +{ +/* attempting to create the IN and OUT prepared stmts */ + int ret; + char *sql; + int i; + char **results; + int rows; + int columns; + char *in_sql; + char *in2_sql; + char *out_sql; + char *out2_sql; + char *prev_sql; + char *prev2_sql; + char *xtable; + int first_in = 1; + int first_out = 1; + char *sql_err = NULL; + sqlite3_stmt *xstmt_in; + sqlite3_stmt *xstmt_out; + +/* starting a transaction */ + ret = sqlite3_exec (handle_out, "BEGIN", NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN TRANSACTION error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + +/* building the IN and OUT sql expressions */ + xtable = gaiaDoubleQuotedSql (table_name); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xtable); + ret = sqlite3_get_table (handle_in, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + in_sql = sqlite3_mprintf ("SELECT"); + in2_sql = sqlite3_mprintf ("FROM \"%s\"", xtable); + out_sql = sqlite3_mprintf ("INSERT INTO \"%s\" (", xtable); + out2_sql = sqlite3_mprintf (") VALUES ("); + free (xtable); + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + const char *name; + char *xname; + name = results[(i * columns) + 1]; + xname = gaiaDoubleQuotedSql (name); + if (strcasecmp (name, geometry_column) == 0) + { + /* the geometry column */ + prev_sql = in_sql; + if (first_in) + { + in_sql = + sqlite3_mprintf ("%s AsGPB(\"%s\")", prev_sql, + xname); + first_in = 0; + } + else + { + in_sql = + sqlite3_mprintf ("%s, AsGPB(\"%s\")", prev_sql, + xname); + } + sqlite3_free (prev_sql); + prev_sql = out_sql; + prev2_sql = out2_sql; + if (first_out) + { + out_sql = + sqlite3_mprintf ("%s\"%s\"", prev_sql, xname); + out2_sql = sqlite3_mprintf ("%s?", prev2_sql); + first_out = 0; + } + else + { + out_sql = + sqlite3_mprintf ("%s, \"%s\"", prev_sql, xname); + out2_sql = sqlite3_mprintf ("%s, ?", prev2_sql); + } + sqlite3_free (prev_sql); + sqlite3_free (prev2_sql); + free (xname); + continue; + } + prev_sql = in_sql; + if (first_in) + { + in_sql = sqlite3_mprintf ("%s \"%s\"", prev_sql, xname); + first_in = 0; + } + else + { + in_sql = sqlite3_mprintf ("%s, \"%s\"", prev_sql, xname); + } + sqlite3_free (prev_sql); + prev_sql = out_sql; + prev2_sql = out2_sql; + if (first_out) + { + out_sql = sqlite3_mprintf ("%s\"%s\"", prev_sql, xname); + out2_sql = sqlite3_mprintf ("%s?", prev2_sql); + first_out = 0; + } + else + { + out_sql = sqlite3_mprintf ("%s, \"%s\"", prev_sql, xname); + out2_sql = sqlite3_mprintf ("%s, ?", prev2_sql); + } + sqlite3_free (prev_sql); + sqlite3_free (prev2_sql); + free (xname); + } + } + sqlite3_free_table (results); + prev_sql = in_sql; + in_sql = sqlite3_mprintf ("%s %s", prev_sql, in2_sql); + sqlite3_free (prev_sql); + sqlite3_free (in2_sql); + prev_sql = out_sql; + out_sql = sqlite3_mprintf ("%s%s)", prev_sql, out2_sql); + sqlite3_free (prev_sql); + sqlite3_free (out2_sql); + +/* preparing the IN stmt */ + ret = + sqlite3_prepare_v2 (handle_in, in_sql, strlen (in_sql), &xstmt_in, + NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "SELECT FROM \"%s\" error: %s\n", table_name, + sqlite3_errmsg (handle_in)); + goto stop; + } + +/* preparing the OUT stmt */ + ret = + sqlite3_prepare_v2 (handle_out, out_sql, strlen (out_sql), &xstmt_out, + NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT INTO \"%s\" error: %s\n", table_name, + sqlite3_errmsg (handle_out)); + goto stop; + } + + sqlite3_free (in_sql); + sqlite3_free (out_sql); + *stmt_in = xstmt_in; + *stmt_out = xstmt_out; + return 1; + + stop: + sqlite3_free (in_sql); + sqlite3_free (out_sql); + if (xstmt_in != NULL) + sqlite3_finalize (xstmt_in); + if (xstmt_out != NULL) + sqlite3_finalize (xstmt_out); + return 0; +} + +static int +create_GPKG2Spatialite_statements (sqlite3 * handle_in, sqlite3 * handle_out, + const char *table_name, + const char *geometry_column, + sqlite3_stmt ** stmt_in, + sqlite3_stmt ** stmt_out) +{ +/* attempting to create the IN and OUT prepared stmts */ + int ret; + char *sql; + int i; + char **results; + int rows; + int columns; + char *in_sql; + char *in2_sql; + char *out_sql; + char *out2_sql; + char *prev_sql; + char *prev2_sql; + char *xtable; + int first_in = 1; + int first_out = 1; + char *sql_err = NULL; + sqlite3_stmt *xstmt_in; + sqlite3_stmt *xstmt_out; + +/* starting a transaction */ + ret = sqlite3_exec (handle_out, "BEGIN", NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN TRANSACTION error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + +/* building the IN and OUT sql expressions */ + xtable = gaiaDoubleQuotedSql (table_name); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xtable); + ret = sqlite3_get_table (handle_in, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + in_sql = sqlite3_mprintf ("SELECT"); + in2_sql = sqlite3_mprintf ("FROM \"%s\"", xtable); + out_sql = sqlite3_mprintf ("INSERT INTO \"%s\" (", xtable); + out2_sql = sqlite3_mprintf (") VALUES ("); + free (xtable); + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + const char *name; + char *xname; + name = results[(i * columns) + 1]; + xname = gaiaDoubleQuotedSql (name); + if (strcasecmp (name, geometry_column) == 0) + { + /* the geometry column */ + prev_sql = in_sql; + if (first_in) + { + in_sql = + sqlite3_mprintf ("%s GeomFromGPB(\"%s\")", + prev_sql, xname); + first_in = 0; + } + else + { + in_sql = + sqlite3_mprintf ("%s, GeomFromGPB(\"%s\")", + prev_sql, xname); + } + sqlite3_free (prev_sql); + prev_sql = out_sql; + prev2_sql = out2_sql; + if (first_out) + { + out_sql = + sqlite3_mprintf ("%s\"%s\"", prev_sql, xname); + out2_sql = sqlite3_mprintf ("%s?", prev2_sql); + first_out = 0; + } + else + { + out_sql = + sqlite3_mprintf ("%s, \"%s\"", prev_sql, xname); + out2_sql = sqlite3_mprintf ("%s, ?", prev2_sql); + } + sqlite3_free (prev_sql); + sqlite3_free (prev2_sql); + free (xname); + continue; + } + prev_sql = in_sql; + if (first_in) + { + in_sql = sqlite3_mprintf ("%s \"%s\"", prev_sql, xname); + first_in = 0; + } + else + { + in_sql = sqlite3_mprintf ("%s, \"%s\"", prev_sql, xname); + } + sqlite3_free (prev_sql); + prev_sql = out_sql; + prev2_sql = out2_sql; + if (first_out) + { + out_sql = sqlite3_mprintf ("%s\"%s\"", prev_sql, xname); + out2_sql = sqlite3_mprintf ("%s?", prev2_sql); + first_out = 0; + } + else + { + out_sql = sqlite3_mprintf ("%s, \"%s\"", prev_sql, xname); + out2_sql = sqlite3_mprintf ("%s, ?", prev2_sql); + } + sqlite3_free (prev_sql); + sqlite3_free (prev2_sql); + free (xname); + } + } + sqlite3_free_table (results); + prev_sql = in_sql; + in_sql = sqlite3_mprintf ("%s %s", prev_sql, in2_sql); + sqlite3_free (prev_sql); + sqlite3_free (in2_sql); + prev_sql = out_sql; + out_sql = sqlite3_mprintf ("%s%s)", prev_sql, out2_sql); + sqlite3_free (prev_sql); + sqlite3_free (out2_sql); + +/* preparing the IN stmt */ + ret = + sqlite3_prepare_v2 (handle_in, in_sql, strlen (in_sql), &xstmt_in, + NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "SELECT FROM \"%s\" error: %s\n", table_name, + sqlite3_errmsg (handle_in)); + goto stop; + } + +/* preparing the OUT stmt */ + ret = + sqlite3_prepare_v2 (handle_out, out_sql, strlen (out_sql), &xstmt_out, + NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT INTO \"%s\" error: %s\n", table_name, + sqlite3_errmsg (handle_out)); + goto stop; + } + + sqlite3_free (in_sql); + sqlite3_free (out_sql); + *stmt_in = xstmt_in; + *stmt_out = xstmt_out; + return 1; + + stop: + sqlite3_free (in_sql); + sqlite3_free (out_sql); + if (xstmt_in != NULL) + sqlite3_finalize (xstmt_in); + if (xstmt_out != NULL) + sqlite3_finalize (xstmt_out); + return 0; +} + +static int +do_copy_table (sqlite3 * handle_in, sqlite3 * handle_out, + sqlite3_stmt * stmt_in, sqlite3_stmt * stmt_out, + const char *table_name) +{ +/* copying all rows from IN and OUT tables */ + int ret; + char *sql_err = NULL; + + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt_in); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + int c; + int cols = sqlite3_column_count (stmt_in); + sqlite3_reset (stmt_out); + sqlite3_clear_bindings (stmt_out); + for (c = 0; c < cols; c++) + { + /* binding column values */ + switch (sqlite3_column_type (stmt_in, c)) + { + case SQLITE_INTEGER: + sqlite3_bind_int64 (stmt_out, c + 1, + sqlite3_column_int64 (stmt_in, + c)); + break; + case SQLITE_FLOAT: + sqlite3_bind_double (stmt_out, c + 1, + sqlite3_column_double (stmt_in, + c)); + break; + case SQLITE_TEXT: + sqlite3_bind_text (stmt_out, c + 1, + (const char *) + sqlite3_column_text (stmt_in, c), + sqlite3_column_bytes (stmt_in, + c), + SQLITE_STATIC); + break; + case SQLITE_BLOB: + sqlite3_bind_blob (stmt_out, c + 1, + sqlite3_column_blob (stmt_in, c), + sqlite3_column_bytes (stmt_in, + c), + SQLITE_STATIC); + break; + default: + sqlite3_bind_null (stmt_out, c + 1); + break; + }; + } + ret = sqlite3_step (stmt_out); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + /* an unexpected error occurred */ + spatialite_e ("Error while inserting into \"%s\": %s\n", + table_name, sqlite3_errmsg (handle_out)); + goto stop; + } + } + else + { + /* an unexpected error occurred */ + spatialite_e ("Error while querying from \"%s\": %s\n", + table_name, sqlite3_errmsg (handle_in)); + goto stop; + } + } + +/* committing the still pending transaction */ + ret = sqlite3_exec (handle_out, "COMMIT", NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT TRANSACTION error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + return 1; + + stop: +/* invalidating the still pending transaction */ + ret = sqlite3_exec (handle_out, "ROLLBACK", NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + spatialite_e ("ROLLBACK TRANSACTION error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + return 0; +} + +static int +do_insert_content (sqlite3 * handle, const char *table_name, + const char *geometry_column, int srid) +{ +/* registering the GPKG table in GPKG_CONTENTS */ + char *sql; + char *xgeom; + char *xtable; + int ret; + char *sql_err = NULL; + + xtable = gaiaDoubleQuotedSql (table_name); + xgeom = gaiaDoubleQuotedSql (geometry_column); + sql = sqlite3_mprintf ("INSERT INTO gpkg_contents (table_name, data_type, " + "identifier, description, last_change, min_x, min_y, max_x, max_y, srs_id) " + "SELECT Lower(%Q), 'features', Lower(%Q), ' ', " + "strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now'), Min(ST_MinX(\"%s\")), " + "Min(ST_MinY(\"%s\")), Max(ST_MaxX(\"%s\")), Max(ST_MaxY(\"%s\")), %d " + "FROM \"%s\"", table_name, table_name, xgeom, xgeom, + xgeom, xgeom, srid, xtable); + free (xgeom); + free (xtable); + ret = sqlite3_exec (handle, sql, NULL, NULL, &sql_err); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("INSERT INTO gpkg_contents error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + return 1; +} + +static int +copy_spatialite2GPKG (sqlite3 * handle_in, sqlite3 * handle_out, int legacy) +{ +/* attempting to copy all Geometry Tables */ + int ret; + const char *sql; + int i; + char **results; + int rows; + int columns; + char *create_sql; + sqlite3_stmt *stmt_in = NULL; + sqlite3_stmt *stmt_out = NULL; + + if (legacy) + { + sql = "SELECT f_table_name, f_geometry_column, type, " + "coord_dimension, srid, spatial_index_enabled " + "FROM geometry_columns"; + } + else + { + sql = "SELECT f_table_name, f_geometry_column, geometry_type, " + "srid, spatial_index_enabled FROM geometry_columns"; + } + ret = sqlite3_get_table (handle_in, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + const char *table_name; + const char *geometry_column; + const char *geometry_type; + int has_z = 0; + int has_m = 0; + int srid; + int spatial_index; + table_name = results[(i * columns) + 0]; + geometry_column = results[(i * columns) + 1]; + if (legacy) + { + const char *dims; + geometry_type = results[(i * columns) + 2]; + if (strcasecmp (geometry_type, "GEOMETRYCOLLECTION") == 0) + geometry_type = "GEOMCOLLECTION"; + dims = results[(i * columns) + 2]; + if (strcasecmp (dims, "XYZ") == 0 + || strcasecmp (dims, "XYZM") == 0) + has_z = 1; + if (strcasecmp (dims, "XYM") == 0 + || strcasecmp (dims, "XYZM") == 0) + has_m = 1; + srid = atoi (results[(i * columns) + 4]); + spatial_index = atoi (results[(i * columns) + 5]); + } + else + { + int gtype = atoi (results[(i * columns) + 2]); + switch (gtype) + { + case GAIA_POINT: + case GAIA_POINTM: + case GAIA_POINTZ: + case GAIA_POINTZM: + geometry_type = "POINT"; + break; + case GAIA_LINESTRING: + case GAIA_LINESTRINGM: + case GAIA_LINESTRINGZ: + case GAIA_LINESTRINGZM: + geometry_type = "LINESTRING"; + break; + case GAIA_POLYGON: + case GAIA_POLYGONM: + case GAIA_POLYGONZ: + case GAIA_POLYGONZM: + geometry_type = "POLYGON"; + break; + case GAIA_MULTIPOINT: + case GAIA_MULTIPOINTM: + case GAIA_MULTIPOINTZ: + case GAIA_MULTIPOINTZM: + geometry_type = "MULTIPOINT"; + break; + case GAIA_MULTILINESTRING: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTILINESTRINGZ: + case GAIA_MULTILINESTRINGZM: + geometry_type = "MULTILINESTRING"; + break; + case GAIA_MULTIPOLYGON: + case GAIA_MULTIPOLYGONM: + case GAIA_MULTIPOLYGONZ: + case GAIA_MULTIPOLYGONZM: + geometry_type = "MULTIPOLYGON"; + break; + case GAIA_GEOMETRYCOLLECTION: + case GAIA_GEOMETRYCOLLECTIONM: + case GAIA_GEOMETRYCOLLECTIONZ: + case GAIA_GEOMETRYCOLLECTIONZM: + geometry_type = "GEOMCOLLECTION"; + break; + case 0: + case 1000: + case 2000: + case 3000: + geometry_type = "GEOMETRY"; + break; + }; + switch (gtype) + { + case 2000: + case GAIA_POINTM: + case GAIA_LINESTRINGM: + case GAIA_POLYGONM: + case GAIA_MULTIPOINTM: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTIPOLYGONM: + case GAIA_GEOMETRYCOLLECTIONM: + has_m = 1; + break; + case 1000: + case GAIA_POINTZ: + case GAIA_LINESTRINGZ: + case GAIA_POLYGONZ: + case GAIA_MULTIPOINTZ: + case GAIA_MULTILINESTRINGZ: + case GAIA_MULTIPOLYGONZ: + case GAIA_GEOMETRYCOLLECTIONZ: + has_z = 1; + break; + case 3000: + case GAIA_POINTZM: + case GAIA_LINESTRINGZM: + case GAIA_POLYGONZM: + case GAIA_MULTIPOINTZM: + case GAIA_MULTILINESTRINGZM: + case GAIA_MULTIPOLYGONZM: + case GAIA_GEOMETRYCOLLECTIONZM: + has_z = 1; + has_m = 1; + break; + }; + srid = atoi (results[(i * columns) + 3]); + spatial_index = atoi (results[(i * columns) + 4]); + } + create_sql = + prepare_create_table (handle_in, table_name, + geometry_column); + if (create_sql == NULL) + { + /* error: unable to create CREATE TABLE sql statement */ + sqlite3_free_table (results); + return 0; + } + if (!create_gpkg_destination + (handle_out, create_sql, table_name, geometry_column, + geometry_type, has_z, has_m, srid, spatial_index)) + { + /* error: unable to create the target destination */ + sqlite3_free (create_sql); + sqlite3_free_table (results); + return 0; + } + sqlite3_free (create_sql); + if (!create_Spatialite2GPKG_statements + (handle_in, handle_out, table_name, geometry_column, + &stmt_in, &stmt_out)) + { + /* error: unable to create the IN and OUT stmts */ + sqlite3_free_table (results); + return 0; + } + if (!do_copy_table + (handle_in, handle_out, stmt_in, stmt_out, table_name)) + { + sqlite3_finalize (stmt_in); + sqlite3_finalize (stmt_out); + sqlite3_free_table (results); + return 0; + } + sqlite3_finalize (stmt_in); + sqlite3_finalize (stmt_out); + if (!do_insert_content + (handle_out, table_name, geometry_column, srid)) + { + sqlite3_free_table (results); + return 0; + } + } + } + sqlite3_free_table (results); + return 1; +} + +static int +copy_GPKG2Spatialite (sqlite3 * handle_in, sqlite3 * handle_out) +{ +/* attempting to copy all Geometry Tables */ + int ret; + const char *sql; + int i; + char **results; + int rows; + int columns; + char *create_sql; + sqlite3_stmt *stmt_in = NULL; + sqlite3_stmt *stmt_out = NULL; + + sql = "SELECT table_name, column_name, geometry_type_name, " + "srs_id, z, m FROM gpkg_geometry_columns"; + ret = sqlite3_get_table (handle_in, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + const char *table_name; + const char *geometry_column; + const char *geometry_type; + int has_z = 0; + int has_m = 0; + int srid; + const char *dims = "XY"; + table_name = results[(i * columns) + 0]; + geometry_column = results[(i * columns) + 1]; + geometry_type = results[(i * columns) + 2]; + if (strcasecmp (geometry_type, "GEOMCOLLECTION") == 0) + geometry_type = "GEOMETRYCOLLECTION"; + srid = atoi (results[(i * columns) + 3]); + has_z = atoi (results[(i * columns) + 4]); + has_m = atoi (results[(i * columns) + 5]); + if (has_z && has_m) + dims = "XYZM"; + else if (has_z) + dims = "XYZ"; + else if (has_m) + dims = "XYM"; + create_sql = + prepare_create_table (handle_in, table_name, + geometry_column); + if (create_sql == NULL) + { + /* error: unable to create CREATE TABLE sql statement */ + sqlite3_free_table (results); + return 0; + } + if (!create_spatialite_destination + (handle_out, create_sql, table_name, geometry_column, + geometry_type, dims, srid)) + { + /* error: unable to create the target destination */ + sqlite3_free (create_sql); + sqlite3_free_table (results); + return 0; + } + sqlite3_free (create_sql); + if (!create_GPKG2Spatialite_statements + (handle_in, handle_out, table_name, geometry_column, + &stmt_in, &stmt_out)) + { + /* error: unable to create the IN and OUT stmts */ + sqlite3_free_table (results); + return 0; + } + if (!do_copy_table + (handle_in, handle_out, stmt_in, stmt_out, table_name)) + { + sqlite3_finalize (stmt_in); + sqlite3_finalize (stmt_out); + sqlite3_free_table (results); + return 0; + } + sqlite3_finalize (stmt_in); + sqlite3_finalize (stmt_out); + } + } + sqlite3_free_table (results); + return 1; +} + +static int +check_valid_gpkg (sqlite3 * handle) +{ +/* checking for a valid GPKG origin */ + int ret; + int i; + char **results; + int rows; + int columns; + int result; + const char *sql; + +/* checking Metadata tables */ + sql = "SELECT CheckGeoPackageMetaData()"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + result = 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + result = atoi (results[(i * columns) + 0]); + } + sqlite3_free_table (results); + if (result != 1) + { + /* not presenting acceptable Metadata tables */ + return 0; + } + +/* testing that at least one Geometry is actually defined */ + sql = "SELECT Count(*) FROM gpkg_geometry_columns"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + result = 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + result = atoi (results[(i * columns) + 0]); + } + sqlite3_free_table (results); + if (result <= 0) + return 0; + return 1; +} + +static int +check_valid_spatialite (sqlite3 * handle, int *legacy) +{ +/* checking for a valid SpatiaLite origin */ + int ret; + int i; + char **results; + int rows; + int columns; + int result; + const char *sql; + +/* checking Metadata tables */ + sql = "SELECT CheckSpatialMetaData()"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + result = 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + result = atoi (results[(i * columns) + 0]); + } + sqlite3_free_table (results); + if (result == 1 || result == 3) + ; + else + { + /* not presenting acceptable Metadata tables */ + return 0; + } + if (result == 1) + *legacy = 1; + else + *legacy = 0; + +/* testing that at least one Geometry is actually defined */ + sql = "SELECT Count(*) FROM geometry_columns"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + result = 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + result = atoi (results[(i * columns) + 0]); + } + sqlite3_free_table (results); + if (result <= 0) + return 0; + return 1; +} + +static int +initialize_gpkg (sqlite3 * handle) +{ +/* attempting to initialize a GPKG destination */ + int ret; + const char *sql; + char *sql_err = NULL; + +/* creating Metadata tables */ + sql = "SELECT gpkgCreateBaseTables()"; + + ret = sqlite3_exec (handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + spatialite_e ("gpkgCreateBaseTables error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + return 1; +} + +static int +initialize_spatialite (sqlite3 * handle) +{ +/* attempting to initialize a SpatiaLite destination */ + int ret; + int i; + char **results; + int rows; + int columns; + int result; + const char *sql; + +/* creating Metadata tables */ + sql = "SELECT InitSpatialMetaData(1)"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + result = 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + result = atoi (results[(i * columns) + 0]); + } + sqlite3_free_table (results); + return result; +} + +SPATIALITE_DECLARE int +gaiaGPKG2Spatialite (sqlite3 * handle_in, const char *gpkg_in_path, + sqlite3 * handle_out, const char *splite_out_path) +{ +/* attempting to create a SpatiaLite DB by converting a GPKG DB */ + if (handle_in == NULL) + goto error; + if (!check_valid_gpkg (handle_in)) + { + /* not a valid IN GPKG: quitting */ + spatialite_e ("Invalid GPKG origin:\n\"%s\"\n", gpkg_in_path); + goto error; + } + if (handle_out == NULL) + goto error; + if (!initialize_spatialite (handle_out)) + { + /* unable to initialize a valid SpatiaLite DB: quitting */ + spatialite_e + ("Unable to initialize SpatiaLite destination:\n\"%s\"\n", + splite_out_path); + goto error; + } + +/* copying/converting all Spatial tables */ + if (!copy_GPKG2Spatialite (handle_in, handle_out)) + goto error; + return 1; + + error: + spatialite_e ("Conversion aborted due to previous error(s)\n"); + return 0; +} + +SPATIALITE_DECLARE int +gaiaSpatialite2GPKG (sqlite3 * handle_in, const char *splite_in_path, + sqlite3 * handle_out, const char *gpkg_out_path) +{ +/* attempting to create a GPKG DB by converting a SpatiaLite DB */ + int legacy; + + if (handle_in == NULL) + goto error; + if (!check_valid_spatialite (handle_in, &legacy)) + { + /* not a valid IN GPKG: quitting */ + spatialite_e ("Invalid SpatiaLite origin:\n\"%s\"\n", splite_in_path); + goto error; + } + if (handle_out == NULL) + goto error; + if (!initialize_gpkg (handle_out)) + { + /* unable to initialize a valid GPKG DB: quitting */ + spatialite_e ("Unable to initialize GPKG destination:\n\"%s\"\n", + gpkg_out_path); + goto error; + } + +/* copying/converting all Spatial tables */ + if (!copy_spatialite2GPKG (handle_in, handle_out, legacy)) + goto error; + return 1; + + error: + spatialite_e ("Conversion aborted due to previous error(s)\n"); + return 0; +} + +#endif /* end enabling GeoPackage extensions */ diff --git a/src/spatialite/src/geopackage/geopackage_internal.h b/src/spatialite/src/geopackage/geopackage_internal.h new file mode 100644 index 0000000..31c7058 --- /dev/null +++ b/src/spatialite/src/geopackage/geopackage_internal.h @@ -0,0 +1,46 @@ +#include <errno.h> +#include <limits.h> +#include <stdio.h> +#include <stddef.h> +#include <stdlib.h> +#include <string.h> + +#include <spatialite/sqlite.h> + +#include "spatialite/debug.h" + +#include "spatialite.h" +#include <spatialite_private.h> + +#define GEOPACKAGE_HEADER_LEN 8 +#define GEOPACKAGE_2D_ENVELOPE_LEN 32 +#define GEOPACKAGE_3D_ENVELOPE_LEN 48 +#define GEOPACKAGE_4D_ENVELOPE_LEN 64 +#define GEOPACKAGE_MAGIC1 0x47 +#define GEOPACKAGE_MAGIC2 0x50 +#define GEOPACKAGE_VERSION 0x00 +#define GEOPACKAGE_WKB_LITTLEENDIAN 0x01 +#define GEOPACKAGE_WKB_EXTENDEDGEOMETRY_FLAG (0x01 << 5) +#define GEOPACKAGE_WKB_EMPTY_FLAG (0x01 << 4) +#define GEOPACKAGE_2D_ENVELOPE 0x01 +#define GEOPACKAGE_3D_ENVELOPE 0x02 +#define GEOPACKAGE_2DM_ENVELOPE 0x03 +#define GEOPACKAGE_3DM_ENVELOPE 0x04 +#define GEOPACKAGE_FLAGS_2D_LITTLEENDIAN ((GEOPACKAGE_2D_ENVELOPE << 1) | GEOPACKAGE_WKB_LITTLEENDIAN) +#define GEOPACKAGE_FLAGS_2DM_LITTLEENDIAN ((GEOPACKAGE_2DM_ENVELOPE << 1) | GEOPACKAGE_WKB_LITTLEENDIAN) +#define GEOPACKAGE_FLAGS_3D_LITTLEENDIAN ((GEOPACKAGE_3D_ENVELOPE << 1) | GEOPACKAGE_WKB_LITTLEENDIAN) +#define GEOPACKAGE_FLAGS_3DM_LITTLEENDIAN ((GEOPACKAGE_3DM_ENVELOPE << 1) | GEOPACKAGE_WKB_LITTLEENDIAN) +#define GEOPACKAGE_WKB_POINT 1 +#define GEOPACKAGE_WKB_POINTZ 1001 +#define GEOPACKAGE_WKB_POINTM 2001 +#define GEOPACKAGE_WKB_POINTZM 3001 +#define GEOPACKAGE_WKB_HEADER_LEN ((sizeof(char) + sizeof(int))) + +#define GEOPACKAGE_DEFAULT_UNDEFINED_SRID 0 + +GEOPACKAGE_DECLARE void gpkgSetHeader2DLittleEndian (unsigned char *ptr, + int srid, int endian_arch); + +GEOPACKAGE_DECLARE void gpkgSetHeader2DMbr (unsigned char *ptr, double min_x, + double min_y, double max_x, + double max_y, int endian_arch); diff --git a/src/spatialite/src/geopackage/gpkgAddGeometryColumn.c b/src/spatialite/src/geopackage/gpkgAddGeometryColumn.c new file mode 100644 index 0000000..e44b77f --- /dev/null +++ b/src/spatialite/src/geopackage/gpkgAddGeometryColumn.c @@ -0,0 +1,209 @@ +/* + + GeoPackage extensions for SpatiaLite / SQLite + +Version: MPL 1.1/GPL 2.0/LGPL 2.1 + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage Extensions + +The Initial Developer of the Original Code is Brad Hards (bradh@frogmouth.net) + +Portions created by the Initial Developer are Copyright (C) 2012-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include <math.h> + +#include "spatialite/geopackage.h" +#include "config.h" +#include "geopackage_internal.h" + +#ifdef ENABLE_GEOPACKAGE + +static char *SUPPORTED_GEOMETRY_TYPES[] = { + "GEOMETRY", + "POINT", + "LINESTRING", + "POLYGON", + "MULTIPOINT", + "MULTILINESTRING", + "MULTIPOLYGON", + "GEOMCOLLECTION", + NULL +}; + +GEOPACKAGE_DECLARE void +fnct_gpkgAddGeometryColumn (sqlite3_context * context, int argc + __attribute__ ((unused)), sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgAddGeomtryColumn(table_name, geometry_column_name, geometry_type, with_z, with_m, srs_id) +/ +/ Adds a geometry column to the specified table +/ geometry_type is a normal WKT name: "GEOMETRY", "POINT", "LINESTRING", "POLYGON", +/ "MULTIPOINT", "MULTILINESTRING", "MULTIPOLYGON", "GEOMCOLLECTION" +/ with_z is a flag (0 for no z values, 1 for mandatory z values, 2 for optional z values) +/ with_m is a flag (0 for no m values, 1 for mandatory m values, 2 for optional m values) +/ +/ returns nothing on success, raises exception on error +/ +/ This function assumes usual tile conventions, including that the tiles are power-of-two-zoom, +/ 256x256 pixels, 1 tile at the top level (zoom level 0). +/ +*/ + const unsigned char *table; + const unsigned char *geometry_column_name; + const unsigned char *geometry_type_name = NULL; + int with_z; + int with_m; + int srid; + int i = 0; + + char *sql_stmt = NULL; + sqlite3 *sqlite = NULL; + char *errMsg = NULL; + int ret = 0; + + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_error (context, + "gpkgAddGeometryColumn() error: argument 1 [table] is not of the string type", + -1); + return; + } + table = sqlite3_value_text (argv[0]); + + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + sqlite3_result_error (context, + "gpkgAddGeometryColumn() error: argument 2 [geometry_column_name] is not of the string type", + -1); + return; + } + geometry_column_name = sqlite3_value_text (argv[1]); + + if (sqlite3_value_type (argv[2]) != SQLITE_TEXT) + { + sqlite3_result_error (context, + "gpkgAddGeometryColumn() error: argument 3 [geometry_type] is not of the string type", + -1); + return; + } + for (i = 0; SUPPORTED_GEOMETRY_TYPES[i] != NULL; ++i) + { + if (strcasecmp + ((const char *) sqlite3_value_text (argv[2]), + SUPPORTED_GEOMETRY_TYPES[i]) == 0) + { + geometry_type_name = + (const unsigned char *) SUPPORTED_GEOMETRY_TYPES[i]; + break; + } + } + if (geometry_type_name == NULL) + { + sqlite3_result_error (context, + "gpkgAddGeometryColumn() error: argument 3 [geometry_type] not a recognised geometry type", + -1); + return; + } + + if (sqlite3_value_type (argv[3]) != SQLITE_INTEGER) + { + sqlite3_result_error (context, + "gpkgAddGeometryColumn() error: argument 4 [with_z] is not of the integer type", + -1); + return; + } + with_z = (double) sqlite3_value_int (argv[3]); + if ((with_z != 0) && (with_z != 1) && (with_z != 2)) + { + sqlite3_result_error (context, + "gpkgAddGeometryColumn() error: argument 4 [with_z] is not a known value (expected 0, 1 or 2)", + -1); + return; + } + + if (sqlite3_value_type (argv[4]) != SQLITE_INTEGER) + { + sqlite3_result_error (context, + "gpkgAddGeometryColumn() error: argument 5 [with_m] is not of the integer type", + -1); + return; + } + with_m = (double) sqlite3_value_int (argv[4]); + if ((with_m != 0) && (with_m != 1) && (with_m != 2)) + { + sqlite3_result_error (context, + "gpkgAddGeometryColumn() error: argument 5 [with_m] is not a known value (expected 0, 1 or 2)", + -1); + return; + } + + if (sqlite3_value_type (argv[5]) != SQLITE_INTEGER) + { + sqlite3_result_error (context, + "gpkgAddGeometryColumn() error: argument 6 [srid] is not of the integer type", + -1); + return; + } + srid = sqlite3_value_int (argv[5]); + + sqlite = sqlite3_context_db_handle (context); + + /* Add column definition to metadata table */ + sql_stmt = sqlite3_mprintf ("INSERT INTO gpkg_geometry_columns " + "(table_name, column_name, geometry_type_name, srs_id, z, m) " + "VALUES (%Q, %Q, %Q, %i, %i, %i)", + table, geometry_column_name, geometry_type_name, + srid, with_z, with_m); + + ret = sqlite3_exec (sqlite, sql_stmt, NULL, NULL, &errMsg); + sqlite3_free (sql_stmt); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, errMsg, -1); + sqlite3_free (errMsg); + return; + } + + /* extend table_name to actually have a geometry column */ + sql_stmt = sqlite3_mprintf ("ALTER TABLE %s ADD COLUMN %s BLOB", + table, geometry_column_name); + ret = sqlite3_exec (sqlite, sql_stmt, NULL, NULL, &errMsg); + sqlite3_free (sql_stmt); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, errMsg, -1); + sqlite3_free (errMsg); + return; + } + + /* TODO: add triggers */ +} + +#endif diff --git a/src/spatialite/src/geopackage/gpkgBinary.c b/src/spatialite/src/geopackage/gpkgBinary.c new file mode 100644 index 0000000..849c332 --- /dev/null +++ b/src/spatialite/src/geopackage/gpkgBinary.c @@ -0,0 +1,512 @@ +/* + + GeoPackage extensions for SpatiaLite / SQLite + +Version: MPL 1.1/GPL 2.0/LGPL 2.1 + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage Extensions + +The Initial Developer of the Original Code is Brad Hards (bradh@frogmouth.net) + +Portions created by the Initial Developer are Copyright (C) 2014 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include "spatialite/geopackage.h" +#include "config.h" +#include "geopackage_internal.h" + +#ifdef ENABLE_GEOPACKAGE + +#define GEOPACKAGE_UNUSED() if (argc || argv) argc = argc; + +GEOPACKAGE_DECLARE void +gpkgSetHeader2DLittleEndian (unsigned char *ptr, int srid, int endian_arch) +{ + *ptr = GEOPACKAGE_MAGIC1; + *(ptr + 1) = GEOPACKAGE_MAGIC2; + *(ptr + 2) = GEOPACKAGE_VERSION; + *(ptr + 3) = GEOPACKAGE_FLAGS_2D_LITTLEENDIAN; + gaiaExport32 (ptr + 4, srid, 1, endian_arch); /* the SRID */ +} + +GEOPACKAGE_DECLARE void +gpkgSetHeader2DMbr (unsigned char *ptr, double min_x, double min_y, + double max_x, double max_y, int endian_arch) +{ + gaiaExport64 (ptr, min_x, 1, endian_arch); + gaiaExport64 (ptr + sizeof (double), max_x, 1, endian_arch); + gaiaExport64 (ptr + 2 * sizeof (double), min_y, 1, endian_arch); + gaiaExport64 (ptr + 3 * sizeof (double), max_y, 1, endian_arch); +} + +static void +gaiaToGPB (gaiaGeomCollPtr geom, unsigned char **result, unsigned int *size) +{ + int wkbOnlyLength; + unsigned char *wkbOnlyGeometry = NULL; + unsigned char *ptr; + int endian_arch = gaiaEndianArch (); + + gaiaToWkb (geom, &wkbOnlyGeometry, &wkbOnlyLength); + /* Calculate output size */ + /* We only do 2D envelopes (MBR) irrespective of the input geometry dimensions */ + *size = GEOPACKAGE_HEADER_LEN + GEOPACKAGE_2D_ENVELOPE_LEN; + *size += wkbOnlyLength; + + /* allocate result and fill with "canary" value */ + *result = malloc (*size); + if (*result == NULL) + { + return; + } + memset (*result, 0xD9, *size); + ptr = *result; + + /* build header */ + gpkgSetHeader2DLittleEndian (ptr, geom->Srid, endian_arch); + + /* build MBR */ + gpkgSetHeader2DMbr (ptr + GEOPACKAGE_HEADER_LEN, geom->MinX, geom->MinY, + geom->MaxX, geom->MaxY, endian_arch); + + /* copy wkbonly results to result */ + memcpy (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_2D_ENVELOPE_LEN, + wkbOnlyGeometry, wkbOnlyLength); + + free (wkbOnlyGeometry); +} + + +GEOPACKAGE_DECLARE void +fnct_ToGPB (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AsGPB(BLOB encoded geometry) +/ +/ converts the (spatialite) geometry blob into a GeoPackage format geometry blob +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + unsigned int len; + unsigned char *p_result = NULL; + GEOPACKAGE_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + { + sqlite3_result_null (context); + return; + } + else + { + gaiaToGPB (geo, &p_result, &len); + if (!p_result) + { + sqlite3_result_null (context); + } + else + { + sqlite3_result_blob (context, p_result, len, free); + } + } + gaiaFreeGeomColl (geo); +} + +static int +sanity_check_gpb (const unsigned char *wkb, int size, int *srid, + unsigned int *envelope_length) +{ + /* checking type coherency for GeoPackageBinary encoded GEOMETRY */ + int little_endian; + int endian_arch = gaiaEndianArch (); + char flags; + int envelope_code; + + if (size < GEOPACKAGE_HEADER_LEN) + { + return 0; /* too short to be GPB */ + } + if ((*(wkb + 0) != GEOPACKAGE_MAGIC1) || (*(wkb + 1) != GEOPACKAGE_MAGIC2)) + { + return 0; /* doesn't match required signature */ + } + if (*(wkb + 2) != GEOPACKAGE_VERSION) + { + return 0; /* we only know how to parse version 1 */ + } + + flags = *(wkb + 3); + + little_endian = flags & GEOPACKAGE_WKB_LITTLEENDIAN; + + envelope_code = ((flags >> 1) & 0x07); + switch (envelope_code) + { + case 0: + *envelope_length = 0; + break; + case 1: + *envelope_length = 32; + break; + case 2: + case 3: + *envelope_length = 48; + break; + case 4: + *envelope_length = 64; + break; + default: + /* illegal value - not valid GeoPackageBinary */ + fprintf (stderr, "Unsupported geopackage envelope value: 0x%x\n", + envelope_code); + return 0; + } + + if (flags & GEOPACKAGE_WKB_EXTENDEDGEOMETRY_FLAG) + { + fprintf (stderr, + "unsupported geopackage binary type (extended geopackage binary)\n"); + return 0; + } + + *srid = gaiaImport32 (wkb + 4, little_endian, endian_arch); + + return 1; +} + +GEOPACKAGE_DECLARE gaiaGeomCollPtr +gaiaFromGeoPackageGeometryBlob (const unsigned char *gpb, unsigned int gpb_len) +{ + gaiaGeomCollPtr geo = NULL; + int srid = GEOPACKAGE_DEFAULT_UNDEFINED_SRID; + unsigned int envelope_length = 0; + const unsigned char *wkb; + unsigned int wkb_len; + + if (!sanity_check_gpb (gpb, gpb_len, &srid, &envelope_length)) + { + return NULL; + } + + wkb = gpb + GEOPACKAGE_HEADER_LEN + envelope_length; + wkb_len = gpb_len - (GEOPACKAGE_HEADER_LEN + envelope_length); + + geo = gaiaFromWkb (wkb, wkb_len); + if (geo == NULL) + { + return NULL; + } + geo->Srid = srid; + + return geo; +} + +GEOPACKAGE_DECLARE void +fnct_GeomFromGPB (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ GeomFromGPB(GPB encoded geometry) +/ +/ returns a geometry created by parsing a GeoPackageBinary encoded blob +/ or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + const unsigned char *gpb; + unsigned int gpb_len; + gaiaGeomCollPtr geo = NULL; + + + GEOPACKAGE_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + gpb = sqlite3_value_blob (argv[0]); + gpb_len = sqlite3_value_bytes (argv[0]); + + geo = gaiaFromGeoPackageGeometryBlob (gpb, gpb_len); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); +} + +/* Sandro Furieri - 2014-05-19 */ + +GEOPACKAGE_DECLARE int +gaiaIsValidGPB (const unsigned char *gpb, int gpb_len) +{ +/* checks for a valid GPB */ + int srid; + unsigned int envelope_length; + + if (gpb == NULL) + return 0; + return sanity_check_gpb (gpb, gpb_len, &srid, &envelope_length); +} + +GEOPACKAGE_DECLARE int +gaiaGetSridFromGPB (const unsigned char *gpb, int gpb_len) +{ +/* extracts the SRID from a valid GPB */ + int srid; + unsigned int envelope_length; + + if (gpb == NULL) + return -1; + if (!sanity_check_gpb (gpb, gpb_len, &srid, &envelope_length)) + return -1; + return srid; +} + +GEOPACKAGE_DECLARE int +gaiaIsEmptyGPB (const unsigned char *gpb, int gpb_len) +{ +/* checks for an empty GPB */ + int srid; + unsigned int envelope_length; + int is_empty; + + if (gpb == NULL) + return -1; + if (!sanity_check_gpb (gpb, gpb_len, &srid, &envelope_length)) + return -1; + is_empty = *(gpb + 3) & GEOPACKAGE_WKB_EMPTY_FLAG; + return is_empty; +} + +GEOPACKAGE_DECLARE int +gaiaGetEnvelopeFromGPB (const unsigned char *gpb, int gpb_len, double *min_x, + double *max_x, double *min_y, double *max_y, int *has_z, + double *min_z, double *max_z, int *has_m, double *min_m, + double *max_m) +{ +/* attempts to retrieve a full Envelope from a GPB */ + gaiaGeomCollPtr geo; + double min; + double max; + if (gpb == NULL) + return 0; + geo = gaiaFromGeoPackageGeometryBlob (gpb, gpb_len); + if (geo == NULL) + return 0; +/* +/ defensive programming +/ +/ the GPKG seems to be a rather sparse and inconsistent standard +/ so we'll always ignore the Envelope declared by GPB +/ and we'll instead recompute 'our' Envelope from scratch +*/ + gaiaMbrGeometry (geo); + *min_x = geo->MinX; + *max_x = geo->MaxX; + *min_y = geo->MinY; + *max_y = geo->MaxY; + if (geo->DimensionModel == GAIA_XY_Z || geo->DimensionModel == GAIA_XY_Z_M) + { + *has_z = 1; + gaiaZRangeGeometry (geo, &min, &max); + *min_z = min; + *max_z = max; + } + else + *has_z = 0; + if (geo->DimensionModel == GAIA_XY_M || geo->DimensionModel == GAIA_XY_Z_M) + { + *has_m = 1; + gaiaMRangeGeometry (geo, &min, &max); + *min_m = min; + *max_m = max; + } + else + *has_m = 0; + gaiaFreeGeomColl (geo); + return 1; +} + +GEOPACKAGE_DECLARE char * +gaiaGetGeometryTypeFromGPB (const unsigned char *gpb, int gpb_len) +{ +/* attempts to retrieve the Geometry Type from a GPB */ + gaiaGeomCollPtr geo; + const char *type = NULL; + int len; + char *gtype; + + if (gpb == NULL) + return NULL; + geo = gaiaFromGeoPackageGeometryBlob (gpb, gpb_len); + if (geo == NULL) + return NULL; +/* +/ defensive programming +/ +/ the GPKG seems to be a rather sparse and inconsistent standard +/ so we'll always fetch the Geometry Type from 'our' Geometry Type +*/ + switch (gaiaGeometryType (geo)) + { + case GAIA_POINT: + case GAIA_POINTZ: + case GAIA_POINTM: + case GAIA_POINTZM: + type = "POINT"; + break; + case GAIA_LINESTRING: + case GAIA_LINESTRINGZ: + case GAIA_LINESTRINGM: + case GAIA_LINESTRINGZM: + type = "LINESTRING"; + break; + case GAIA_POLYGON: + case GAIA_POLYGONZ: + case GAIA_POLYGONM: + case GAIA_POLYGONZM: + type = "POLYGON"; + break; + case GAIA_MULTIPOINT: + case GAIA_MULTIPOINTZ: + case GAIA_MULTIPOINTM: + case GAIA_MULTIPOINTZM: + type = "MULTIPOINT"; + break; + case GAIA_MULTILINESTRING: + case GAIA_MULTILINESTRINGZ: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTILINESTRINGZM: + type = "MULTILINESTRING"; + break; + case GAIA_MULTIPOLYGON: + case GAIA_MULTIPOLYGONZ: + case GAIA_MULTIPOLYGONM: + case GAIA_MULTIPOLYGONZM: + type = "MULTIPOLYGON"; + break; + case GAIA_GEOMETRYCOLLECTION: + case GAIA_GEOMETRYCOLLECTIONZ: + case GAIA_GEOMETRYCOLLECTIONM: + case GAIA_GEOMETRYCOLLECTIONZM: + type = "GEOMCOLLECTION"; + break; + }; + gaiaFreeGeomColl (geo); + + if (type == NULL) + return NULL; + len = strlen (type); + gtype = malloc (len + 1); + strcpy (gtype, type); + return gtype; +} + +GEOPACKAGE_DECLARE void +fnct_GPKG_IsAssignable (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ GPKG_IsAssignale(expected_type_name TEXT, actual_type_name TEXT) +/ +/ returns: +/ 1 if the expected type is the same or a super-type of actual type +/ 0 otherwise +*/ + const char *expected; + const char *actual; + int ret = 0; + + GEOPACKAGE_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_int (context, ret); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + sqlite3_result_int (context, ret); + return; + } + expected = (const char *) sqlite3_value_text (argv[0]); + actual = (const char *) sqlite3_value_text (argv[1]); + if (strcasecmp (expected, actual) == 0) + ret = 1; + if (strcasecmp (expected, "GEOMETRY") == 0) + ret = 1; + if (strcasecmp (expected, "MULTIPOINT") == 0 + && strcasecmp (actual, "POINT") == 0) + ret = 1; + if (strcasecmp (expected, "MULTILINESTRING") == 0 + && strcasecmp (actual, "LINESTRING") == 0) + ret = 1; + if (strcasecmp (expected, "MULTIPOLYGON") == 0 + && strcasecmp (actual, "POLYGON") == 0) + ret = 1; + sqlite3_result_int (context, ret); +} + +GEOPACKAGE_DECLARE void +fnct_IsValidGPB (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ IsValidGPB(GPB encoded geometry) +/ +/ check for a valid GPB encoded geometry +*/ + const unsigned char *gpb; + unsigned int gpb_len; + + + GEOPACKAGE_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, 0); + return; + } + gpb = sqlite3_value_blob (argv[0]); + gpb_len = sqlite3_value_bytes (argv[0]); + sqlite3_result_int (context, gaiaIsValidGPB (gpb, gpb_len)); +} + +/* end Sandro Furieri - 2014-05-19 */ + +#endif diff --git a/src/spatialite/src/geopackage/gpkgCreateBaseTables.c b/src/spatialite/src/geopackage/gpkgCreateBaseTables.c new file mode 100644 index 0000000..aa7bf8b --- /dev/null +++ b/src/spatialite/src/geopackage/gpkgCreateBaseTables.c @@ -0,0 +1,373 @@ +/* + + GeoPackage extensions for SpatiaLite / SQLite + +Version: MPL 1.1/GPL 2.0/LGPL 2.1 + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage Extensions + +The Initial Developer of the Original Code is Brad Hards (bradh@frogmouth.net) + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + + +#include "spatialite/geopackage.h" +#include "config.h" +#include "geopackage_internal.h" + +#define GAIA_UNUSED() if (argc || argv) argc = argc; + +#ifdef ENABLE_GEOPACKAGE + +GEOPACKAGE_DECLARE void +fnct_gpkgCreateBaseTables (sqlite3_context * context, int argc + __attribute__ ((unused)), sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgCreateBaseTables() +/ +/ Create base tables for an "empty" GeoPackage +/ returns nothing on success, raises exception on error +/ +*/ + char *sql_stmt = NULL; + sqlite3 *sqlite = NULL; + char *errMsg = NULL; + int ret = 0; + int i = 0; + + const char *tableSchemas[] = { + "PRAGMA application_id = 1196437808", + + /* GeoPackage specification Table 18 */ + "CREATE TABLE gpkg_spatial_ref_sys (\n" + "srs_name TEXT NOT NULL,\n" + "srs_id INTEGER NOT NULL PRIMARY KEY,\n" + "organization TEXT NOT NULL,\n" + "organization_coordsys_id INTEGER NOT NULL,\n" + "definition TEXT NOT NULL,\n" "description TEXT\n" ")", + + /* GeoPackage Section 1.1.2.1.2 */ + "INSERT INTO gpkg_spatial_ref_sys (srs_name, srs_id, organization, organization_coordsys_id, definition) VALUES ('Undefined Cartesian', -1, 'NONE', -1, 'Undefined')", + "INSERT INTO gpkg_spatial_ref_sys (srs_name, srs_id, organization, organization_coordsys_id, definition) VALUES ('Undefined Geographic', 0, 'NONE', 0, 'Undefined')", + "INSERT INTO gpkg_spatial_ref_sys (srs_name, srs_id, organization, organization_coordsys_id, definition) VALUES ('WGS84', 4326, 'epsg', 4326, '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.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]')", + + /* GeoPackage specification Table 4 / Table 21 */ + /* Note that NULL is distinct on UNIQUE columns, so identifier definition isn't quite that far out-there */ + "CREATE TABLE gpkg_contents (\n" + "table_name TEXT NOT NULL PRIMARY KEY,\n" + "data_type TEXT NOT NULL,\n" + "identifier TEXT UNIQUE,\n" + "description TEXT DEFAULT '',\n" + "last_change TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ',CURRENT_TIMESTAMP)),\n" + "min_x DOUBLE,\n" + "min_y DOUBLE,\n" + "max_x DOUBLE,\n" + "max_y DOUBLE,\n" + "srs_id INTEGER,\n" + "CONSTRAINT fk_gc_r_srid FOREIGN KEY (srs_id) REFERENCES gpkg_spatial_ref_sys(srs_id))", + + /* GeoPackage specification Table 6 / Table 22 */ + "CREATE TABLE gpkg_geometry_columns (\n" + "table_name TEXT NOT NULL,\n" + "column_name TEXT,\n" + "geometry_type_name TEXT,\n" + "srs_id INTEGER NOT NULL,\n" + "z INTEGER NOT NULL,\n" + "m TINYINT NOT NULL,\n" + "CONSTRAINT pk_geom_cols PRIMARY KEY (table_name, column_name),\n" + "CONSTRAINT uk_gc_table_name UNIQUE (table_name),\n" + "CONSTRAINT fk_gc_tn FOREIGN KEY (table_name) REFERENCES gpkg_contents(table_name),\n" + "CONSTRAINT fk_gc_srs FOREIGN KEY (srs_id) REFERENCES gpkg_spatial_ref_sys (srs_id))", + + /* GeoPackage specification Table 8 / Table 26 */ + "CREATE TABLE gpkg_tile_matrix_set (\n" + "table_name TEXT NOT NULL PRIMARY KEY,\n" + "srs_id INTEGER NOT NULL,\n" + "min_x DOUBLE NOT NULL,\n" + "min_y DOUBLE NOT NULL,\n" + "max_x DOUBLE NOT NULL,\n" + "max_y DOUBLE NOT NULL,\n" + "CONSTRAINT fk_gtms_table_name FOREIGN KEY (table_name) REFERENCES gpkg_contents(table_name),\n" + "CONSTRAINT fk_gtms_srs FOREIGN KEY (srs_id) REFERENCES gpkg_spatial_ref_sys (srs_id))", + + /* Geopackage specification Table 9 / Table 27 */ + /* TODO: figure out if the defaults are required - https://github.com/opengis/geopackage/issues/67 */ + "CREATE TABLE gpkg_tile_matrix (\n" + "table_name TEXT NOT NULL,\n" + "zoom_level INTEGER NOT NULL,\n" + "matrix_width INTEGER NOT NULL,\n" + "matrix_height INTEGER NOT NULL,\n" + "tile_width INTEGER NOT NULL,\n" + "tile_height INTEGER NOT NULL,\n" + "pixel_x_size DOUBLE NOT NULL,\n" + "pixel_y_size DOUBLE NOT NULL,\n" + "CONSTRAINT pk_ttm PRIMARY KEY (table_name, zoom_level),\n" + "CONSTRAINT fk_tmm_table_name FOREIGN KEY (table_name) REFERENCES gpkg_contents(table_name))", + + /* GeoPackage specification Table 11 / Table 31 */ + "CREATE TABLE gpkg_data_columns (\n" + "table_name TEXT NOT NULL,\n" + "column_name TEXT NOT NULL,\n" + "name TEXT,\n" + "title TEXT,\n" + "description TEXT,\n" + "mime_type TEXT,\n" + "constraint_name TEXT,\n" + "CONSTRAINT pk_gdc PRIMARY KEY (table_name, column_name),\n" + "CONSTRAINT fk_gdc_tn FOREIGN KEY (table_name) REFERENCES gpkg_contents(table_name))", + + /* GeoPackage specification Table 12 / Table 32 */ + "CREATE TABLE gpkg_data_column_constraints (\n" + "constraint_name TEXT NOT NULL,\n" + "constraint_type TEXT NOT NULL,\n" + "value TEXT,\n" + "min NUMERIC,\n" + "minIsInclusive BOOLEAN,\n" + "max NUMERIC,\n" + "maxIsInclusive BOOLEAN,\n" + "CONSTRAINT gdcc_ntv UNIQUE (constraint_name, constraint_type, value))", + + /* GeoPackage specification Table 14 / Table 33 */ + "CREATE TABLE gpkg_metadata (\n" + "id INTEGER CONSTRAINT m_pk PRIMARY KEY ASC NOT NULL UNIQUE,\n" + "md_scope TEXT NOT NULL DEFAULT 'dataset',\n" + "md_standard_uri TEXT NOT NULL,\n" + "mime_type TEXT NOT NULL DEFAULT 'text/xml',\n" + "metadata TEXT NOT NULL)", + + /* GeoPackage specification Table 16 / Table 34 */ + "CREATE TABLE gpkg_metadata_reference (\n" + "reference_scope TEXT NOT NULL,\n" + "table_name TEXT,\n" + "column_name TEXT,\n" + "row_id_value INTEGER,\n" + "timestamp DATETIME NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ',CURRENT_TIMESTAMP)),\n" + "md_file_id INTEGER NOT NULL,\n" + "md_parent_id INTEGER,\n" + "CONSTRAINT crmr_mfi_fk FOREIGN KEY (md_file_id) REFERENCES gpkg_metadata(id),\n" + "CONSTRAINT crmr_mpi_fk FOREIGN KEY (md_parent_id) REFERENCES gpkg_metadata(id))", + + /* GeoPackage specification Table 17 / Table 36 */ + "CREATE TABLE gpkg_extensions (\n" + "table_name TEXT,\n" + "column_name TEXT,\n" + "extension_name TEXT NOT NULL,\n" + "definition TEXT NOT NULL,\n" + "scope TEXT NOT NULL,\n" + "CONSTRAINT ge_tce UNIQUE (table_name, column_name, extension_name))", + + /* Next 10 constraints are from GeoPackage specification Table 37 */ + "CREATE TRIGGER 'gpkg_tile_matrix_zoom_level_insert'\n" + "BEFORE INSERT ON 'gpkg_tile_matrix'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'insert on table ''gpkg_tile_matrix'' violates constraint: zoom_level cannot be less than 0')\n" + "WHERE (NEW.zoom_level < 0);\n" "END", + + "CREATE TRIGGER 'gpkg_tile_matrix_zoom_level_update'\n" + "BEFORE UPDATE of zoom_level ON 'gpkg_tile_matrix'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on table ''gpkg_tile_matrix'' violates constraint: zoom_level cannot be less than 0')\n" + "WHERE (NEW.zoom_level < 0);\n" "END", + + "CREATE TRIGGER 'gpkg_tile_matrix_matrix_width_insert'\n" + "BEFORE INSERT ON 'gpkg_tile_matrix'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'insert on table ''gpkg_tile_matrix'' violates constraint: matrix_width cannot be less than 1')\n" + "WHERE (NEW.matrix_width < 1);\n" "END", + + "CREATE TRIGGER 'gpkg_tile_matrix_matrix_width_update'\n" + "BEFORE UPDATE OF matrix_width ON 'gpkg_tile_matrix'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on table ''gpkg_tile_matrix'' violates constraint: matrix_width cannot be less than 1')\n" + "WHERE (NEW.matrix_width < 1);\n" "END", + + "CREATE TRIGGER 'gpkg_tile_matrix_matrix_height_insert'\n" + "BEFORE INSERT ON 'gpkg_tile_matrix'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'insert on table ''gpkg_tile_matrix'' violates constraint: matrix_height cannot be less than 1')\n" + "WHERE (NEW.matrix_height < 1);\n" "END", + + "CREATE TRIGGER 'gpkg_tile_matrix_matrix_height_update'\n" + "BEFORE UPDATE OF matrix_height ON 'gpkg_tile_matrix'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on table ''gpkg_tile_matrix'' violates constraint: matrix_height cannot be less than 1')\n" + "WHERE (NEW.matrix_height < 1);\n" "END", + + "CREATE TRIGGER 'gpkg_tile_matrix_pixel_x_size_insert'\n" + "BEFORE INSERT ON 'gpkg_tile_matrix'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'insert on table ''gpkg_tile_matrix'' violates constraint: pixel_x_size must be greater than 0')\n" + "WHERE NOT (NEW.pixel_x_size > 0);\n" "END", + + "CREATE TRIGGER 'gpkg_tile_matrix_pixel_x_size_update'\n" + "BEFORE UPDATE OF pixel_x_size ON 'gpkg_tile_matrix'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on table ''gpkg_tile_matrix'' violates constraint: pixel_x_size must be greater than 0')\n" + "WHERE NOT (NEW.pixel_x_size > 0);\n" "END", + + "CREATE TRIGGER 'gpkg_tile_matrix_pixel_y_size_insert'\n" + "BEFORE INSERT ON 'gpkg_tile_matrix'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'insert on table ''gpkg_tile_matrix'' violates constraint: pixel_y_size must be greater than 0')\n" + "WHERE NOT (NEW.pixel_y_size > 0);\n" "END", + + "CREATE TRIGGER 'gpkg_tile_matrix_pixel_y_size_update'\n" + "BEFORE UPDATE OF pixel_y_size ON 'gpkg_tile_matrix'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on table ''gpkg_tile_matrix'' violates constraint: pixel_y_size must be greater than 0')\n" + "WHERE NOT (NEW.pixel_y_size > 0);\n" "END", + + /* Next two constraints are from GeoPackage specification Table 38 */ + /* Note the change from catalogue to catalog, per https://github.com/opengis/geopackage/issues/69 */ + "CREATE TRIGGER 'gpkg_metadata_md_scope_insert'\n" + "BEFORE INSERT ON 'gpkg_metadata'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'insert on table gpkg_metadata violates constraint: md_scope must be one of undefined | fieldSession | collectionSession | series | dataset | featureType | feature | attributeType | attribute | tile | model | catalog | schema | taxonomy | software | service | collectionHardware | nonGeographicDataset | dimensionGroup')\n" + "WHERE NOT(NEW.md_scope IN ('undefined','fieldSession','collectionSession','series','dataset', 'featureType','feature','attributeType','attribute','tile','model', 'catalog','schema','taxonomy','software','service', 'collectionHardware','nonGeographicDataset','dimensionGroup'));\n" + "END", + + "CREATE TRIGGER 'gpkg_metadata_md_scope_update'\n" + "BEFORE UPDATE OF 'md_scope' ON 'gpkg_metadata'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on table gpkg_metadata violates constraint: md_scope must be one of undefined | fieldSession | collectionSession | series | dataset | featureType | feature | attributeType | attribute | tile | model | catalog | schema | taxonomy | software | service | collectionHardware | nonGeographicDataset | dimensionGroup')\n" + "WHERE NOT(NEW.md_scope IN ('undefined','fieldSession','collectionSession','series','dataset', 'featureType','feature','attributeType','attribute','tile','model', 'catalog','schema','taxonomy','software','service', 'collectionHardware','nonGeographicDataset','dimensionGroup'));\n" + "END", + + /* The following eight constraints are from GeoPackage specification Table 39 */ + "CREATE TRIGGER 'gpkg_metadata_reference_reference_scope_insert'\n" + "BEFORE INSERT ON 'gpkg_metadata_reference'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference violates constraint: reference_scope must be one of \"geopackage\", \"table\", \"column\", \"row\", \"row/col\"')\n" + "WHERE NOT NEW.reference_scope IN ('geopackage','table','column','row','row/col');\n" + "END", + + "CREATE TRIGGER 'gpkg_metadata_reference_reference_scope_update'\n" + "BEFORE UPDATE OF 'reference_scope' ON 'gpkg_metadata_reference'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference violates constraint: reference_scope must be one of \"geopackage\", \"table\", \"column\", \"row\", \"row/col\"')\n" + "WHERE NOT NEW.reference_scope IN ('geopackage','table','column','row','row/col');\n" + "END", + + "CREATE TRIGGER 'gpkg_metadata_reference_column_name_insert'\n" + "BEFORE INSERT ON 'gpkg_metadata_reference'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference violates constraint: column name must be NULL when reference_scope is \"geopackage\", \"table\" or \"row\"')\n" + "WHERE (NEW.reference_scope IN ('geopackage','table','row') AND NEW.column_name IS NOT NULL);\n" + "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference violates constraint: column name must be defined for the specified table when reference_scope is \"column\" or \"row/col\"')\n" + "WHERE (NEW.reference_scope IN ('column','row/col') AND NOT NEW.table_name IN (SELECT name FROM SQLITE_MASTER WHERE type = 'table' AND name = NEW.table_name AND sql LIKE ('%' || NEW.column_name || '%')));\n" + "END", + + "CREATE TRIGGER 'gpkg_metadata_reference_column_name_update'\n" + "BEFORE UPDATE OF column_name ON 'gpkg_metadata_reference'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference violates constraint: column name must be NULL when reference_scope is \"geopackage\", \"table\" or \"row\"')\n" + "WHERE (NEW.reference_scope IN ('geopackage','table','row') AND NEW.column_nameIS NOT NULL);\n" + "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference violates constraint: column name must be defined for the specified table when reference_scope is \"column\" or \"row/col\"')\n" + "WHERE (NEW.reference_scope IN ('column','row/col') AND NOT NEW.table_name IN (SELECT name FROM SQLITE_MASTER WHERE type = 'table' AND name = NEW.table_name AND sql LIKE ('%' || NEW.column_name || '%')));\n" + "END", + + "CREATE TRIGGER 'gpkg_metadata_reference_row_id_value_insert'\n" + "BEFORE INSERT ON 'gpkg_metadata_reference'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference violates constraint: row_id_value must be NULL when reference_scope is \"geopackage\", \"table\" or \"column\"')\n" + "WHERE NEW.reference_scope IN ('geopackage','table','column') AND NEW.row_id_value IS NOT NULL;\n" + "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference violates constraint: row_id_value must exist in specified table when reference_scope is \"row\" or \"row/col\"')\n" + "WHERE NEW.reference_scope IN ('row','row/col') AND NOT EXISTS (SELECT rowid FROM (SELECT NEW.table_name AS table_name) WHERE rowid = NEW.row_id_value);\n" + "END", + + "CREATE TRIGGER 'gpkg_metadata_reference_row_id_value_update'\n" + "BEFORE UPDATE OF 'row_id_value' ON 'gpkg_metadata_reference'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference violates constraint: row_id_value must be NULL when reference_scope is \"geopackage\", \"table\" or \"column\"')\n" + "WHERE NEW.reference_scope IN ('geopackage','table','column') AND NEW.row_id_value IS NOT NULL;\n" + "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference violates constraint: row_id_value must exist in specified table when reference_scope is \"row\" or \"row/col\"')\n" + "WHERE NEW.reference_scope IN ('row','row/col') AND NOT EXISTS (SELECT rowid FROM (SELECT NEW.table_name AS table_name) WHERE rowid = NEW.row_id_value);\n" + "END", + + "CREATE TRIGGER 'gpkg_metadata_reference_timestamp_insert'\n" + "BEFORE INSERT ON 'gpkg_metadata_reference'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'insert on table gpkg_metadata_reference violates constraint: timestamp must be a valid time in ISO 8601 \"yyyy-mm-ddThh-mm-ss.cccZ\" form')\n" + "WHERE NOT (NEW.timestamp GLOB '[1-2][0-9][0-9][0-9]-[0-1][0-9]-[1-3][0-9]T[0-2][0-9]:[0-5][0-9]:[0-5][0-9].[0-9][0-9][0-9]Z' AND strftime('%s',NEW.timestamp) NOT NULL);\n" + "END", + + "CREATE TRIGGER 'gpkg_metadata_reference_timestamp_update'\n" + "BEFORE UPDATE OF 'timestamp' ON 'gpkg_metadata_reference'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on table gpkg_metadata_reference violates constraint: timestamp must be a valid time in ISO 8601 \"yyyy-mm-ddThh-mm-ss.cccZ\" form')\n" + "WHERE NOT (NEW.timestamp GLOB '[1-2][0-9][0-9][0-9]-[0-1][0-9]-[1-3][0-9]T[0-2][0-9]:[0-5][0-9]:[0-5][0-9].[0-9][0-9][0-9]Z' AND strftime('%s',NEW.timestamp) NOT NULL);\n" + "END", + + /* the following four constraints probably should be in the GeoPackage spec, but aren't */ + "CREATE TRIGGER 'gpkg_geometry_columns_z_insert'\n" + "BEFORE INSERT ON 'gpkg_geometry_columns'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'insert on table gpkg_geometry_columns violates constraint: z must be one of 0, 1 or 2')\n" + "WHERE NOT(NEW.z IN (0, 1, 2));\n" "END", + + "CREATE TRIGGER 'gpkg_geometry_columns_z_update'\n" + "BEFORE UPDATE OF 'z' ON 'gpkg_geometry_columns'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on table gpkg_geometry_columns violates constraint: z must be one of 0, 1 or 2')\n" + "WHERE NOT NEW.z IN (0, 1, 2);\n" "END", + + "CREATE TRIGGER 'gpkg_geometry_columns_m_insert'\n" + "BEFORE INSERT ON 'gpkg_geometry_columns'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'insert on table gpkg_geometry_columns violates constraint: m must be one of 0, 1 or 2')\n" + "WHERE NOT(NEW.m IN (0, 1, 2));\n" "END", + + "CREATE TRIGGER 'gpkg_geometry_columns_m_update'\n" + "BEFORE UPDATE OF 'm' ON 'gpkg_geometry_columns'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on table gpkg_geometry_columns violates constraint: m must be one of 0, 1 or 2')\n" + "WHERE NOT NEW.m IN (0, 1, 2);\n" "END", + + NULL + }; + + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + + for (i = 0; tableSchemas[i] != NULL; ++i) + { + sql_stmt = sqlite3_mprintf ("%s", tableSchemas[i]); + sqlite = sqlite3_context_db_handle (context); + ret = sqlite3_exec (sqlite, sql_stmt, NULL, NULL, &errMsg); + sqlite3_free (sql_stmt); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, errMsg, -1); + sqlite3_free (errMsg); + return; + } + } +} +#endif diff --git a/src/spatialite/src/geopackage/gpkgCreateTilesTable.c b/src/spatialite/src/geopackage/gpkgCreateTilesTable.c new file mode 100644 index 0000000..2a3a3ed --- /dev/null +++ b/src/spatialite/src/geopackage/gpkgCreateTilesTable.c @@ -0,0 +1,205 @@ +/* + + GeoPackage extensions for SpatiaLite / SQLite + +Version: MPL 1.1/GPL 2.0/LGPL 2.1 + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage Extensions + +The Initial Developer of the Original Code is Brad Hards (bradh@frogmouth.net) + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include "spatialite/geopackage.h" +#include "config.h" +#include "geopackage_internal.h" + +#ifdef ENABLE_GEOPACKAGE +GEOPACKAGE_DECLARE void +fnct_gpkgCreateTilesTable (sqlite3_context * context, int argc + __attribute__ ((unused)), sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgCreateTilesTable(table_name, srid, min_x, min_y, max_x, max_y) +/ +/ Create a new (empty) Tiles table and the triggers for that table +/ It also adds in the matching entries into gpkg_contents and gpkg_tile_matrix_set +/ +/ TODO: consider adding description and identifier to gpkg_contents +/ +/ returns nothing on success, raises exception on error +/ +/ This function assumes usual tile conventions, including that the tiles are power-of-two-zoom. +/ +*/ + const unsigned char *table; + int srid = -1; + double min_x; + double min_y; + double max_x; + double max_y; + char *sql_stmt = NULL; + sqlite3 *sqlite = NULL; + char *errMsg = NULL; + int ret = 0; + int i = 0; + + const char *metaTableSchemas[] = { + "INSERT INTO gpkg_contents (table_name, data_type, srs_id, min_x, min_y, max_x, max_y) VALUES (%Q, 'tiles', %i, %f, %f, %f, %f)", + "INSERT INTO gpkg_tile_matrix_set (table_name, srs_id, min_x, min_y, max_x, max_y) VALUES (%Q, %i, %f, %f, %f, %f)", + NULL + }; + + const char *tableSchemas[] = { + "CREATE TABLE %q (\n" + "id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + "zoom_level INTEGER NOT NULL DEFAULT 0,\n" + "tile_column INTEGER NOT NULL DEFAULT 0,\n" + "tile_row INTEGER NOT NULL DEFAULT 0,\n" + "tile_data BLOB NOT NULL,\n" + "UNIQUE (zoom_level, tile_column, tile_row))", + + "SELECT gpkgAddTileTriggers(%Q)", + + NULL + }; + + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_error (context, + "gpkgCreateTilesTable() error: argument 1 [table] is not of the String type", + -1); + return; + } + table = sqlite3_value_text (argv[0]); + + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_error (context, + "gpkgCreateTilesTable() error: argument 2 [srid] is not of the integer type", + -1); + return; + } + srid = sqlite3_value_int (argv[1]); + + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + { + min_x = sqlite3_value_double (argv[2]); + } + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + min_x = (double) sqlite3_value_int (argv[2]); + } + else + { + sqlite3_result_error (context, + "gpkgCreateTilesTable() error: argument 3 [min_x] is not a numeric type", + -1); + return; + } + + if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + { + min_y = sqlite3_value_double (argv[3]); + } + else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + min_y = (double) sqlite3_value_int (argv[3]); + } + else + { + sqlite3_result_error (context, + "gpkgCreateTilesTable() error: argument 4 [min_y] is not a numeric type", + -1); + return; + } + + if (sqlite3_value_type (argv[4]) == SQLITE_FLOAT) + { + max_x = sqlite3_value_double (argv[4]); + } + else if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) + { + max_x = (double) sqlite3_value_int (argv[4]); + } + else + { + sqlite3_result_error (context, + "gpkgCreateTilesTable() error: argument 5 [max_x] is not a numeric type", + -1); + return; + } + + if (sqlite3_value_type (argv[5]) == SQLITE_FLOAT) + { + max_y = sqlite3_value_double (argv[5]); + } + else if (sqlite3_value_type (argv[5]) == SQLITE_INTEGER) + { + max_y = (double) sqlite3_value_int (argv[5]); + } + else + { + sqlite3_result_error (context, + "gpkgCreateTilesTable() error: argument 6 [max_y] is not a numeric type", + -1); + return; + } + sqlite = sqlite3_context_db_handle (context); + + for (i = 0; metaTableSchemas[i] != NULL; ++i) + { + sql_stmt = + sqlite3_mprintf (metaTableSchemas[i], table, srid, min_x, min_y, + max_x, max_y); + ret = sqlite3_exec (sqlite, sql_stmt, NULL, NULL, &errMsg); + sqlite3_free (sql_stmt); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, errMsg, -1); + sqlite3_free (errMsg); + return; + } + } + + for (i = 0; tableSchemas[i] != NULL; ++i) + { + sql_stmt = sqlite3_mprintf (tableSchemas[i], table); + ret = sqlite3_exec (sqlite, sql_stmt, NULL, NULL, &errMsg); + sqlite3_free (sql_stmt); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, errMsg, -1); + sqlite3_free (errMsg); + return; + } + } +} +#endif diff --git a/src/spatialite/src/geopackage/gpkgCreateTilesZoomLevel.c b/src/spatialite/src/geopackage/gpkgCreateTilesZoomLevel.c new file mode 100644 index 0000000..6dda9e4 --- /dev/null +++ b/src/spatialite/src/geopackage/gpkgCreateTilesZoomLevel.c @@ -0,0 +1,148 @@ +/* + + GeoPackage extensions for SpatiaLite / SQLite + +Version: MPL 1.1/GPL 2.0/LGPL 2.1 + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage Extensions + +The Initial Developer of the Original Code is Brad Hards (bradh@frogmouth.net) + +Portions created by the Initial Developer are Copyright (C) 2012-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include <math.h> + +#include "spatialite/geopackage.h" +#include "config.h" +#include "geopackage_internal.h" + +#ifdef ENABLE_GEOPACKAGE +GEOPACKAGE_DECLARE void +fnct_gpkgCreateTilesZoomLevel (sqlite3_context * context, int argc + __attribute__ ((unused)), sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgCreateTilesZoomLevel(table_name, zoom_level, extent_width, extent_height) +/ +/ Adds a zoom level for the specified table +/ +/ returns nothing on success, raises exception on error +/ +/ This function assumes usual tile conventions, including that the tiles are power-of-two-zoom, +/ 256x256 pixels, 1 tile at the top level (zoom level 0). +/ +*/ + const unsigned char *table; + int zoomlevel = 0; + int columns = 1; + int rows = 1; + int tilesize = 256; + double extent_height; + double extent_width; + char *sql_stmt = NULL; + sqlite3 *sqlite = NULL; + char *errMsg = NULL; + int ret = 0; + + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_error (context, + "gpkgCreateTilesZoomLevel() error: argument 1 [table] is not of the String type", + -1); + return; + } + table = sqlite3_value_text (argv[0]); + + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_error (context, + "gpkgCreateTilesZoomLevel() error: argument 2 [zoom level] is not of the integer type", + -1); + return; + } + zoomlevel = sqlite3_value_int (argv[1]); + if (zoomlevel < 0) + { + sqlite3_result_error (context, + "gpkgCreateTilesZoomLevel() error: argument 2 [zoom level] must be >= 0", + -1); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + extent_width = (double) sqlite3_value_int (argv[2]); + } + else if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + { + extent_width = sqlite3_value_double (argv[2]); + } + else + { + sqlite3_result_error (context, + "gpkgCreateTilesZoomLevel() error: argument 3 [extent_width] is not of a numerical type", + -1); + return; + } + + if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + extent_height = (double) sqlite3_value_int (argv[3]); + } + else if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + { + extent_height = sqlite3_value_double (argv[3]); + } + else + { + sqlite3_result_error (context, + "gpkgCreateTilesZoomLevel() error: argument 4 [extent_height] is not of a numerical type", + -1); + return; + } + + sqlite = sqlite3_context_db_handle (context); + columns = pow (2, zoomlevel); + rows = columns; + + sql_stmt = sqlite3_mprintf ("INSERT INTO gpkg_tile_matrix" + "(table_name, zoom_level, matrix_width, matrix_height, tile_width, tile_height, pixel_x_size, pixel_y_size)" + "VALUES (%Q, %i, %i, %i, %i, %i, %g, %g)", + table, zoomlevel, columns, rows, tilesize, + tilesize, extent_width / (tilesize * columns), + extent_height / (tilesize * rows)); + ret = sqlite3_exec (sqlite, sql_stmt, NULL, NULL, &errMsg); + sqlite3_free (sql_stmt); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, errMsg, -1); + sqlite3_free (errMsg); + return; + } +} +#endif diff --git a/src/spatialite/src/geopackage/gpkgGetImageType.c b/src/spatialite/src/geopackage/gpkgGetImageType.c new file mode 100644 index 0000000..a6b7f36 --- /dev/null +++ b/src/spatialite/src/geopackage/gpkgGetImageType.c @@ -0,0 +1,106 @@ +/* + + GeoPackage extensions for SpatiaLite / SQLite + +Version: MPL 1.1/GPL 2.0/LGPL 2.1 + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage Extensions + +The Initial Developer of the Original Code is Brad Hards (bradh@frogmouth.net) + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include "spatialite/geopackage.h" +#include <spatialite/gaiaexif.h> +#include "config.h" +#include "geopackage_internal.h" + +#ifdef ENABLE_GEOPACKAGE + +GEOPACKAGE_DECLARE void +fnct_gpkgGetImageType (sqlite3_context * context, int argc UNUSED, + sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgGetImageType(blob) +/ +/ Gets the image type (as a string) of the blob argument, or "unknown" if +/ the image type is not one of the PNG, JPEG, TIFF or WebP format types that +/ are supported in GeoPackage. This function raises exception on error (e.g. +/ wrong argument type). +/ +/ The result will be one of: +/ - "png" - for PNG +/ - "jpeg" - for JPEG +/ - "tiff" - for TIFF +/ - "x-webp" - for WebP +/ These are the mime type for the image format (without the "image/" prefix) +/ +*/ + unsigned char *p_blob = NULL; + int n_bytes = 0; + int blobType; + + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_error (context, + "gpkgGetImageType() error: argument 1 [image blob] is not of the BLOB type", + -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + + blobType = gaiaGuessBlobType (p_blob, n_bytes); + switch (blobType) + { + case GAIA_TIFF_BLOB: + sqlite3_result_text (context, "tiff", strlen ("tiff"), + SQLITE_TRANSIENT); + break; + case GAIA_PNG_BLOB: + sqlite3_result_text (context, "png", strlen ("png"), + SQLITE_TRANSIENT); + break; + case GAIA_JPEG_BLOB: + sqlite3_result_text (context, "jpeg", strlen ("jpeg"), + SQLITE_TRANSIENT); + break; + case GAIA_WEBP_BLOB: + sqlite3_result_text (context, "x-webp", strlen ("x-webp"), + SQLITE_TRANSIENT); + break; + default: + sqlite3_result_text (context, "unknown", strlen ("unknown"), + SQLITE_TRANSIENT); + break; + } +} +#endif diff --git a/src/spatialite/src/geopackage/gpkgInsertEpsgSRID.c b/src/spatialite/src/geopackage/gpkgInsertEpsgSRID.c new file mode 100644 index 0000000..13f9798 --- /dev/null +++ b/src/spatialite/src/geopackage/gpkgInsertEpsgSRID.c @@ -0,0 +1,129 @@ +/* + + GeoPackage extensions for SpatiaLite / SQLite + +Version: MPL 1.1/GPL 2.0/LGPL 2.1 + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage Extensions + +The Initial Developer of the Original Code is Brad Hards (bradh@frogmouth.net) + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include "spatialite/geopackage.h" +#include "config.h" +#include "geopackage_internal.h" + +#ifdef ENABLE_GEOPACKAGE +GEOPACKAGE_DECLARE void +fnct_gpkgInsertEpsgSRID (sqlite3_context * context, int argc UNUSED, + sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgInsertEpsgSRID(srid) +/ +/ Adds a spatial reference system entry for the specified EPSG identifier +/ +/ It is an error to try to add the entry if it already exists (this is often indicated by +/ the "PRIMARY KEY must be unique" error message) +/ +/ returns nothing on success, raises exception on error +*/ + char *sqlcmd = NULL; + sqlite3 *sqlite = NULL; + sqlite3_stmt *sql_stmt; + int ret = 0; + int srid; + struct epsg_defs *first = NULL; + struct epsg_defs *last = NULL; + + if (sqlite3_value_type (argv[0]) != SQLITE_INTEGER) + { + sqlite3_result_error (context, + "gpkgInsertEpsgSRID() error: argument 1 [srid] is not of the integer type", + -1); + return; + } + srid = sqlite3_value_int (argv[0]); + + /* get the EPSG definition for this SRID from our master list */ + initialize_epsg (srid, &first, &last); + if (first == NULL) + { + sqlite3_result_error (context, + "gpkgInsertEpsgSRID() error: srid is not defined in the EPSG inlined dataset", + -1); + return; + } + + /* get a context handle */ + sqlite = sqlite3_context_db_handle (context); + + /* add the definition for the SRID */ + sqlcmd = + "INSERT INTO gpkg_spatial_ref_sys (srs_name, srs_id, organization, " + "organization_coordsys_id, definition) VALUES (?, ?, ?, ?, ?)"; + ret = sqlite3_prepare_v2 (sqlite, sqlcmd, strlen (sqlcmd), &sql_stmt, NULL); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, sqlite3_errmsg (sqlite), -1); + goto stop; + } + sqlite3_bind_text (sql_stmt, 1, first->ref_sys_name, + strlen (first->ref_sys_name), SQLITE_STATIC); + sqlite3_bind_int (sql_stmt, 2, first->srid); + sqlite3_bind_text (sql_stmt, 3, first->auth_name, strlen (first->auth_name), + SQLITE_STATIC); + sqlite3_bind_int (sql_stmt, 4, first->auth_srid); + if (strlen (first->srs_wkt) == 0) + { + sqlite3_bind_text (sql_stmt, 5, "Undefined", 9, SQLITE_STATIC); + } + else + { + sqlite3_bind_text (sql_stmt, 5, first->srs_wkt, + strlen (first->srs_wkt), SQLITE_STATIC); + } + ret = sqlite3_step (sql_stmt); + if (ret != SQLITE_DONE && ret != SQLITE_ROW) + { + sqlite3_result_error (context, sqlite3_errmsg (sqlite), -1); + goto stop; + } + stop: + if (sql_stmt != NULL) + { + sqlite3_finalize (sql_stmt); + } + +/* freeing the EPSG defs list */ + free_epsg (first); +} +#endif diff --git a/src/spatialite/src/geopackage/gpkgMakePoint.c b/src/spatialite/src/geopackage/gpkgMakePoint.c new file mode 100644 index 0000000..0e47b11 --- /dev/null +++ b/src/spatialite/src/geopackage/gpkgMakePoint.c @@ -0,0 +1,826 @@ +/* + + GeoPackage extensions for SpatiaLite / SQLite + +Version: MPL 1.1/GPL 2.0/LGPL 2.1 + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage Extensions + +The Initial Developer of the Original Code is Brad Hards (bradh@frogmouth.net) + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include "spatialite/geopackage.h" +#include "config.h" +#include "geopackage_internal.h" + +#ifdef ENABLE_GEOPACKAGE + +#define GEOPACKAGE_UNUSED() if (argc || argv) argc = argc; + +static void +gpkgMakePoint (double x, double y, int srid, unsigned char **result, + unsigned int *size) +{ + /* build a Blob encoded Geometry representing a POINT */ + unsigned char *ptr; + int endian_arch = gaiaEndianArch (); + + /* computing the Blob size and then allocating it */ + *size = GEOPACKAGE_HEADER_LEN + GEOPACKAGE_2D_ENVELOPE_LEN; + *size += GEOPACKAGE_WKB_HEADER_LEN; + *size += (sizeof (double) * 2); /* [x,y] coords */ + *result = malloc (*size); + if (*result == NULL) + { + return; + } + memset (*result, 0xD9, *size); + ptr = *result; + + /* setting the Blob value */ + gpkgSetHeader2DLittleEndian (ptr, srid, endian_arch); + + gpkgSetHeader2DMbr (ptr + GEOPACKAGE_HEADER_LEN, x, y, x, y, endian_arch); + + *(ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_2D_ENVELOPE_LEN) = + GEOPACKAGE_WKB_LITTLEENDIAN; + gaiaExport32 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_2D_ENVELOPE_LEN + 1, + GEOPACKAGE_WKB_POINT, 1, endian_arch); + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_2D_ENVELOPE_LEN + + GEOPACKAGE_WKB_HEADER_LEN, x, 1, endian_arch); + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_2D_ENVELOPE_LEN + + GEOPACKAGE_WKB_HEADER_LEN + sizeof (double), y, 1, + endian_arch); +} + +static void +gpkgMakePointZ (double x, double y, double z, int srid, unsigned char **result, + unsigned int *size) +{ +/* build a Blob encoded Geometry representing a POINT */ + unsigned char *ptr; + int endian_arch = gaiaEndianArch (); +/* computing the Blob size and then allocating it */ + *size = GEOPACKAGE_HEADER_LEN + GEOPACKAGE_3D_ENVELOPE_LEN; + *size += GEOPACKAGE_WKB_HEADER_LEN; + *size += (sizeof (double) * 3); /* [x,y,z] coords */ + *result = malloc (*size); + if (*result == NULL) + { + return; + } + memset (*result, 0xD9, *size); /* just a flag value */ + ptr = *result; +/* setting the Blob value */ + *ptr = GEOPACKAGE_MAGIC1; + *(ptr + 1) = GEOPACKAGE_MAGIC2; + *(ptr + 2) = GEOPACKAGE_VERSION; + *(ptr + 3) = GEOPACKAGE_FLAGS_3D_LITTLEENDIAN; + gaiaExport32 (ptr + 4, srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN, x, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + sizeof (double), x, 1, endian_arch); /* MBR - maximum x */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + 2 * sizeof (double), y, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + 3 * sizeof (double), y, 1, endian_arch); /* MBR - maximum Y */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + 4 * sizeof (double), z, 1, endian_arch); /* MBR - maximum Z */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + 5 * sizeof (double), z, 1, endian_arch); /* MBR - maximum Z */ + *(ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_3D_ENVELOPE_LEN) = + GEOPACKAGE_WKB_LITTLEENDIAN; + gaiaExport32 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_3D_ENVELOPE_LEN + 1, + GEOPACKAGE_WKB_POINTZ, 1, endian_arch); + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_3D_ENVELOPE_LEN + + GEOPACKAGE_WKB_HEADER_LEN, x, 1, endian_arch); + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_3D_ENVELOPE_LEN + + GEOPACKAGE_WKB_HEADER_LEN + sizeof (double), y, 1, + endian_arch); + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_3D_ENVELOPE_LEN + + GEOPACKAGE_WKB_HEADER_LEN + (2 * sizeof (double)), z, 1, + endian_arch); +} + +static void +gpkgMakePointM (double x, double y, double m, int srid, unsigned char **result, + unsigned int *size) +{ +/* build a Blob encoded Geometry representing a POINT */ + unsigned char *ptr; + int endian_arch = gaiaEndianArch (); +/* computing the Blob size and then allocating it */ + *size = GEOPACKAGE_HEADER_LEN + GEOPACKAGE_3D_ENVELOPE_LEN; + *size += GEOPACKAGE_WKB_HEADER_LEN; + *size += (sizeof (double) * 3); /* [x,y,m] coords */ + *result = malloc (*size); + if (*result == NULL) + { + return; + } + memset (*result, 0xD9, *size); /* just a flag value */ + ptr = *result; +/* setting the Blob value */ + *ptr = GEOPACKAGE_MAGIC1; + *(ptr + 1) = GEOPACKAGE_MAGIC2; + *(ptr + 2) = GEOPACKAGE_VERSION; + *(ptr + 3) = GEOPACKAGE_FLAGS_2DM_LITTLEENDIAN; + gaiaExport32 (ptr + 4, srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN, x, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + sizeof (double), x, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + 2 * sizeof (double), y, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + 3 * sizeof (double), y, 1, endian_arch); /* MBR - maximum Y */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + 4 * sizeof (double), m, 1, endian_arch); /* MBR - maximum M */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + 5 * sizeof (double), m, 1, endian_arch); /* MBR - maximum M */ + *(ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_3D_ENVELOPE_LEN) = + GEOPACKAGE_WKB_LITTLEENDIAN; + gaiaExport32 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_3D_ENVELOPE_LEN + 1, + GEOPACKAGE_WKB_POINTM, 1, endian_arch); + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_3D_ENVELOPE_LEN + + GEOPACKAGE_WKB_HEADER_LEN, x, 1, endian_arch); + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_3D_ENVELOPE_LEN + + GEOPACKAGE_WKB_HEADER_LEN + sizeof (double), y, 1, + endian_arch); + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_3D_ENVELOPE_LEN + + GEOPACKAGE_WKB_HEADER_LEN + (2 * sizeof (double)), m, 1, + endian_arch); +} + +static void +gpkgMakePointZM (double x, double y, double z, double m, int srid, + unsigned char **result, unsigned int *size) +{ +/* build a Blob encoded Geometry representing a POINT */ + unsigned char *ptr; + int endian_arch = gaiaEndianArch (); +/* computing the Blob size and then allocating it */ + *size = GEOPACKAGE_HEADER_LEN + GEOPACKAGE_4D_ENVELOPE_LEN; + *size += GEOPACKAGE_WKB_HEADER_LEN; + *size += (sizeof (double) * 4); /* [x,y,z,m] coords */ + *result = malloc (*size); + if (*result == NULL) + { + return; + } + memset (*result, 0xD9, *size); /* just a flag value */ + ptr = *result; +/* setting the Blob value */ + *ptr = GEOPACKAGE_MAGIC1; + *(ptr + 1) = GEOPACKAGE_MAGIC2; + *(ptr + 2) = GEOPACKAGE_VERSION; + *(ptr + 3) = GEOPACKAGE_FLAGS_3DM_LITTLEENDIAN; + gaiaExport32 (ptr + 4, srid, 1, endian_arch); /* the SRID */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN, x, 1, endian_arch); /* MBR - minimum X */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + 1 * sizeof (double), x, 1, endian_arch); /* MBR - maximum X */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + 2 * sizeof (double), y, 1, endian_arch); /* MBR - minimum Y */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + 3 * sizeof (double), y, 1, endian_arch); /* MBR - maximum Y */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + 4 * sizeof (double), z, 1, endian_arch); /* MBR - minimum Z */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + 5 * sizeof (double), z, 1, endian_arch); /* MBR - maximum Z */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + 6 * sizeof (double), m, 1, endian_arch); /* MBR - minimum M */ + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + 7 * sizeof (double), m, 1, endian_arch); /* MBR - maximum M */ + *(ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_4D_ENVELOPE_LEN) = + GEOPACKAGE_WKB_LITTLEENDIAN; + gaiaExport32 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_4D_ENVELOPE_LEN + 1, + GEOPACKAGE_WKB_POINTZM, 1, endian_arch); + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_4D_ENVELOPE_LEN + + GEOPACKAGE_WKB_HEADER_LEN, x, 1, endian_arch); + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_4D_ENVELOPE_LEN + + GEOPACKAGE_WKB_HEADER_LEN + sizeof (double), y, 1, + endian_arch); + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_4D_ENVELOPE_LEN + + GEOPACKAGE_WKB_HEADER_LEN + (2 * sizeof (double)), z, 1, + endian_arch); + gaiaExport64 (ptr + GEOPACKAGE_HEADER_LEN + GEOPACKAGE_4D_ENVELOPE_LEN + + GEOPACKAGE_WKB_HEADER_LEN + (3 * sizeof (double)), m, 1, + endian_arch); +} + +GEOPACKAGE_DECLARE void +fnct_gpkgMakePoint (sqlite3_context * context, int argc UNUSED, + sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgMakePoint(x, y) +/ +/ Creates a GeoPackage geometry POINT +/ +/ returns nothing on success, raises exception on error +*/ + unsigned int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + GEOPACKAGE_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = sqlite3_value_double (argv[0]); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + { + y = sqlite3_value_double (argv[1]); + } + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + gpkgMakePoint (x, y, GEOPACKAGE_DEFAULT_UNDEFINED_SRID, &p_result, &len); + if (!p_result) + { + sqlite3_result_null (context); + } + else + { + sqlite3_result_blob (context, p_result, len, free); + } +} + +GEOPACKAGE_DECLARE void +fnct_gpkgMakePointWithSRID (sqlite3_context * context, int argc UNUSED, + sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgMakePoint(x, y, srid) +/ +/ Creates a GeoPackage geometry POINT +/ +/ returns nothing on success, raises exception on error +*/ + unsigned int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + int srid; + GEOPACKAGE_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = sqlite3_value_double (argv[0]); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + { + y = sqlite3_value_double (argv[1]); + } + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + srid = sqlite3_value_int (argv[2]); + + gpkgMakePoint (x, y, srid, &p_result, &len); + if (!p_result) + { + sqlite3_result_null (context); + } + else + { + sqlite3_result_blob (context, p_result, len, free); + } +} + +GEOPACKAGE_DECLARE void +fnct_gpkgMakePointZ (sqlite3_context * context, int argc UNUSED, + sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgMakePointZ(x, y, z) +/ +/ Creates a GeoPackage geometry POINT Z +/ +/ returns nothing on success, raises exception on error +*/ + unsigned int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + double z; + GEOPACKAGE_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = sqlite3_value_double (argv[0]); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + { + y = sqlite3_value_double (argv[1]); + } + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + { + z = sqlite3_value_double (argv[2]); + } + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + z = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + + gpkgMakePointZ (x, y, z, GEOPACKAGE_DEFAULT_UNDEFINED_SRID, &p_result, + &len); + if (!p_result) + { + sqlite3_result_null (context); + } + else + { + sqlite3_result_blob (context, p_result, len, free); + } +} + +GEOPACKAGE_DECLARE void +fnct_gpkgMakePointZWithSRID (sqlite3_context * context, int argc UNUSED, + sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgMakePointZ(x, y, z, srid) +/ +/ Creates a GeoPackage geometry POINT Z +/ +/ returns nothing on success, raises exception on error +*/ + unsigned int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + double z; + int srid; + GEOPACKAGE_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = sqlite3_value_double (argv[0]); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + { + y = sqlite3_value_double (argv[1]); + } + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + { + z = sqlite3_value_double (argv[2]); + } + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + z = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + srid = sqlite3_value_int (argv[3]); + + gpkgMakePointZ (x, y, z, srid, &p_result, &len); + if (!p_result) + { + sqlite3_result_null (context); + } + else + { + sqlite3_result_blob (context, p_result, len, free); + } +} + +GEOPACKAGE_DECLARE void +fnct_gpkgMakePointM (sqlite3_context * context, int argc UNUSED, + sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgMakePointM(x, y, m) +/ +/ Creates a GeoPackage geometry POINT M +/ +/ returns nothing on success, raises exception on error +*/ + unsigned int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + double m; + GEOPACKAGE_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = sqlite3_value_double (argv[0]); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + { + y = sqlite3_value_double (argv[1]); + } + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + { + m = sqlite3_value_double (argv[2]); + } + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + m = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + + gpkgMakePointM (x, y, m, GEOPACKAGE_DEFAULT_UNDEFINED_SRID, &p_result, + &len); + if (!p_result) + { + sqlite3_result_null (context); + } + else + { + sqlite3_result_blob (context, p_result, len, free); + } +} + +GEOPACKAGE_DECLARE void +fnct_gpkgMakePointMWithSRID (sqlite3_context * context, int argc UNUSED, + sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgMakePointM(x, y, m, srid) +/ +/ Creates a GeoPackage geometry POINT M +/ +/ returns nothing on success, raises exception on error +*/ + unsigned int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + double m; + int srid; + GEOPACKAGE_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = sqlite3_value_double (argv[0]); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + { + y = sqlite3_value_double (argv[1]); + } + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + { + m = sqlite3_value_double (argv[2]); + } + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + m = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + srid = sqlite3_value_int (argv[3]); + + gpkgMakePointM (x, y, m, srid, &p_result, &len); + if (!p_result) + { + sqlite3_result_null (context); + } + else + { + sqlite3_result_blob (context, p_result, len, free); + } +} + +GEOPACKAGE_DECLARE void +fnct_gpkgMakePointZM (sqlite3_context * context, int argc UNUSED, + sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgMakePointM(x, y, z, m) +/ +/ Creates a GeoPackage geometry POINT ZM +/ +/ returns nothing on success, raises exception on error +*/ + unsigned int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + double z; + double m; + GEOPACKAGE_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = sqlite3_value_double (argv[0]); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + { + y = sqlite3_value_double (argv[1]); + } + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + { + z = sqlite3_value_double (argv[2]); + } + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + z = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + { + m = sqlite3_value_double (argv[3]); + } + else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[3]); + m = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + + gpkgMakePointZM (x, y, z, m, GEOPACKAGE_DEFAULT_UNDEFINED_SRID, &p_result, + &len); + if (!p_result) + { + sqlite3_result_null (context); + } + else + { + sqlite3_result_blob (context, p_result, len, free); + } +} + +GEOPACKAGE_DECLARE void +fnct_gpkgMakePointZMWithSRID (sqlite3_context * context, int argc UNUSED, + sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgMakePointZM(x, y, z, m, srid) +/ +/ Creates a GeoPackage geometry POINT ZM +/ +/ returns nothing on success, raises exception on error +*/ + unsigned int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + double z; + double m; + int srid; + GEOPACKAGE_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = sqlite3_value_double (argv[0]); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + { + y = sqlite3_value_double (argv[1]); + } + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + { + z = sqlite3_value_double (argv[2]); + } + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + z = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + { + m = sqlite3_value_double (argv[3]); + } + else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[3]); + m = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[4]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + srid = sqlite3_value_int (argv[4]); + + gpkgMakePointZM (x, y, z, m, srid, &p_result, &len); + if (!p_result) + { + sqlite3_result_null (context); + } + else + { + sqlite3_result_blob (context, p_result, len, free); + } +} +#endif diff --git a/src/spatialite/src/geopackage/gpkg_add_geometry_triggers.c b/src/spatialite/src/geopackage/gpkg_add_geometry_triggers.c new file mode 100644 index 0000000..f91e358 --- /dev/null +++ b/src/spatialite/src/geopackage/gpkg_add_geometry_triggers.c @@ -0,0 +1,191 @@ +/* + + GeoPackage extensions for SpatiaLite / SQLite + +Version: MPL 1.1/GPL 2.0/LGPL 2.1 + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage Extensions + +The Initial Developer of the Original Code is Sandro Furieri (a.furieri@lqt.it) + +Portions created by the Initial Developer are Copyright (C) 2014 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards (bradh@frogmouth.net) + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include "spatialite/geopackage.h" +#include "spatialite/gaiaaux.h" +#include "config.h" +#include "geopackage_internal.h" + +#ifdef ENABLE_GEOPACKAGE +GEOPACKAGE_DECLARE void +fnct_gpkgAddGeometryTriggers (sqlite3_context * context, int argc + __attribute__ ((unused)), sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgAddGeometryTriggers(table, column) +/ +/ Adds Geopackage geometry table triggers for the named table +/ returns nothing on success, raises exception on error +/ +*/ + const char *table; + const char *column; + char *xtable; + char *xcolumn; + char *sql_stmt = NULL; + sqlite3 *sqlite = NULL; + char *errMsg = NULL; + int ret = 0; + int i = 0; + const char *trigger_stmts[] = { + "CREATE TRIGGER \"fgti_%s_%s\"\n" + "BEFORE INSERT ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE (ROLLBACK, 'insert on \"%s\" violates constraint: " + "ST_GeometryType(\"%s\") is not assignable from " + "gpkg_geometry_columns.geometry_type_name value')\n" + "WHERE (SELECT geometry_type_name\n" + "FROM gpkg_geometry_columns\n" + "WHERE Lower(table_name) = Lower(%Q)\n" + "AND Lower(column_name) = Lower(%Q)\n" + "AND gpkg_IsAssignable(geometry_type_name, " + "ST_GeometryType(NEW.\"%s\")) = 0);\nEND", + + "CREATE TRIGGER \"fgtu_%s_%s\"\n" + "BEFORE UPDATE OF \"%s\" ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE (ROLLBACK, 'update of \"%s\" on \"%s\" violates constraint: " + "ST_GeometryType(\"%s\") is not assignable from " + "gpkg_geometry_columns.geometry_type_name value')\n" + "WHERE (SELECT geometry_type_name\n" + "FROM gpkg_geometry_columns\n" + "WHERE Lower(table_name) = Lower(%Q) " + "AND Lower(column_name) = Lower(%Q) " + "AND gpkg_IsAssignable(geometry_type_name, " + "ST_GeometryType(NEW.\"%s\")) = 0);\nEND", + + "CREATE TRIGGER \"fgsi_%s_%s\"\n" + "BEFORE INSERT ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE (ROLLBACK, 'insert on \"%s\" violates constraint: " + "ST_SRID(\"%s\") does not match gpkg_geometry_columns.srs_id value')\n" + "WHERE (SELECT srs_id FROM gpkg_geometry_columns\n" + "WHERE Lower(table_name) = Lower(%Q) " + "AND Lower(column_name) = Lower(%Q) " + "AND ST_SRID(NEW.\"%s\") <> srs_id);\nEND", + + "CREATE TRIGGER \"fgsu_%s_%s\"\n" + "BEFORE UPDATE OF \"%s\" ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE (ROLLBACK, 'update of \"%s\" on \"%s\" violates constraint: " + "ST_SRID(\"%s\") does not match gpkg_geometry_columns.srs_id value')\n" + "WHERE (SELECT srs_id FROM gpkg_geometry_columns\n" + "WHERE Lower(table_name) = Lower(%Q) " + "AND Lower(column_name) = Lower(%Q) " + "AND ST_SRID(NEW.\"%s\") <> srs_id);\nEND", + + NULL + }; + + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_error (context, + "gpkgAddGeometryTriggers() error: argument 1 [table] is not of the String type", + -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + sqlite3_result_error (context, + "gpkgAddGeometryTriggers() error: argument 2 [column] is not of the String type", + -1); + return; + } + table = (const char *) sqlite3_value_text (argv[0]); + column = (const char *) sqlite3_value_text (argv[1]); + xtable = gaiaDoubleQuotedSql (table); + xcolumn = gaiaDoubleQuotedSql (column); + sqlite = sqlite3_context_db_handle (context); + + for (i = 0; i < 4; i++) + { + /* inserting the Triggers */ + if (i == 0 || i == 2) + sql_stmt = + sqlite3_mprintf (trigger_stmts[i], xtable, xcolumn, xtable, + table, xcolumn, column, column, xcolumn); + else + sql_stmt = + sqlite3_mprintf (trigger_stmts[i], xtable, xcolumn, xcolumn, + xtable, table, column, xcolumn, column, + column, xcolumn); + ret = sqlite3_exec (sqlite, sql_stmt, NULL, NULL, &errMsg); + sqlite3_free (sql_stmt); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, errMsg, -1); + sqlite3_free (errMsg); + free (xtable); + free (xcolumn); + return; + } + } + free (xtable); + free (xcolumn); + +/* registering the GPKG extensions */ + sql_stmt = sqlite3_mprintf ("INSERT INTO gpkg_extensions " + "(table_name, column_name, extension_name, definition, scope) " + "VALUES (Lower(%Q), Lower(%Q), 'gpkg_geometry_type_trigger', " + "'GeoPackage 1.0 Specification Annex N', 'write-only')", + table, column); + ret = sqlite3_exec (sqlite, sql_stmt, NULL, NULL, &errMsg); + sqlite3_free (sql_stmt); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, errMsg, -1); + sqlite3_free (errMsg); + return; + } + sql_stmt = sqlite3_mprintf ("INSERT INTO gpkg_extensions " + "(table_name, column_name, extension_name, definition, scope) " + "VALUES (Lower(%Q), Lower(%Q), 'gpkg_srs_id_trigger', " + "'GeoPackage 1.0 Specification Annex N', 'write-only')", + table, column); + ret = sqlite3_exec (sqlite, sql_stmt, NULL, NULL, &errMsg); + sqlite3_free (sql_stmt); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, errMsg, -1); + sqlite3_free (errMsg); + return; + } +} +#endif diff --git a/src/spatialite/src/geopackage/gpkg_add_spatial_index.c b/src/spatialite/src/geopackage/gpkg_add_spatial_index.c new file mode 100644 index 0000000..d3be278 --- /dev/null +++ b/src/spatialite/src/geopackage/gpkg_add_spatial_index.c @@ -0,0 +1,214 @@ +/* + + GeoPackage extensions for SpatiaLite / SQLite + +Version: MPL 1.1/GPL 2.0/LGPL 2.1 + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage Extensions + +The Initial Developer of the Original Code is Sandro Furieri (a.furieri@lqt.it) + +Portions created by the Initial Developer are Copyright (C) 2014 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards (bradh@frogmouth.net) + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include "spatialite/geopackage.h" +#include "spatialite/gaiaaux.h" +#include "config.h" +#include "geopackage_internal.h" + +#ifdef ENABLE_GEOPACKAGE +GEOPACKAGE_DECLARE void +fnct_gpkgAddSpatialIndex (sqlite3_context * context, int argc + __attribute__ ((unused)), sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgAddSpatialIndex(table, column) +/ +/ Adds Geopackage SpatialIndex triggers for the named table +/ and creates the "rtree_<T>_<C> Virtual Table +/ returns nothing on success, raises exception on error +/ +*/ + const char *table; + const char *column; + char *xtable; + char *xcolumn; + char *sql_stmt = NULL; + sqlite3 *sqlite = NULL; + char *errMsg = NULL; + int ret = 0; + int i = 0; + const char *trigger_stmts[] = { + "CREATE TRIGGER \"rtree_%s_%s_insert\"\n" + "AFTER INSERT ON \"%s\"\n" + "WHEN (new.\"%s\" NOT NULL AND NOT ST_IsEmpty(NEW.\"%s\"))\n" + "BEGIN\n" + "INSERT OR REPLACE INTO \"rtree_%s_%s\" VALUES (NEW.ROWID, " + "ST_MinX(NEW.\"%s\"), ST_MaxX(NEW.\"%s\"), ST_MinY(NEW.\"%s\"), " + "ST_MaxY(NEW.\"%s\"));\nEND", + + "CREATE TRIGGER \"rtree_%s_%s_update1\"\n" + "AFTER UPDATE OF \"%s\" ON \"%s\"\n" + "WHEN OLD.ROWID = NEW.ROWID AND " + "(NEW.\"%s\" NOT NULL AND NOT ST_IsEmpty(NEW.\"%s\"))\n" + "BEGIN\n" + "INSERT OR REPLACE INTO \"rtree_%s_%s\" VALUES (NEW.ROWID, " + "ST_MinX(NEW.\"%s\"), ST_MaxX(NEW.\"%s\"), ST_MinY(NEW.\"%s\"), " + "ST_MaxY(NEW.\"%s\"));\nEND", + + "CREATE TRIGGER \"rtree_%s_%s_update2\"\n" + "AFTER UPDATE OF \"%s\" ON \"%s\"\n" + "WHEN OLD.ROWID = NEW.ROWID AND " + "(NEW.\"%s\" IS NULL OR ST_IsEmpty(NEW.\"%s\"))\n" + "BEGIN\n" "DELETE FROM \"rtree_%s_%s\" WHERE id = OLD.ROWID;\nEND", + + "CREATE TRIGGER \"rtree_%s_%s_update3\"\n" + "AFTER UPDATE OF \"%s\" ON \"%s\"\n" + "WHEN OLD.ROWID != NEW.ROWID AND " + "(NEW.\"%s\" NOT NULL AND NOT ST_IsEmpty(NEW.\"%s\"))\n" + "BEGIN\n" + "DELETE FROM \"rtree_%s_%s\" WHERE id = OLD.ROWID;\n" + "INSERT OR REPLACE INTO \"rtree_%s_%s\" VALUES (NEW.ROWID, " + "ST_MinX(NEW.\"%s\"), ST_MaxX(NEW.\"%s\"), ST_MinY(NEW.\"%s\"), " + "ST_MaxY(NEW.\"%s\"));\nEND", + + "CREATE TRIGGER \"rtree_%s_%s_update4\"\n" + "AFTER UPDATE ON \"%s\"\n" + "WHEN OLD.ROWID != NEW.ROWID AND " + "(NEW.\"%s\" IS NULL OR ST_IsEmpty(NEW.\"%s\"))\n" + "BEGIN\n" + "DELETE FROM \"rtree_%s_%s\" WHERE id IN (OLD.ROWID, NEW.ROWID);\n" + "END", + + "CREATE TRIGGER \"rtree_%s_%s_delete\"\n" + "AFTER DELETE ON \"%s\"" + "WHEN old.\"%s\" NOT NULL\n" + "BEGIN\n" "DELETE FROM \"rtree_%s_%s\" WHERE id = OLD.ROWID;\nEND", + + NULL + }; + + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_error (context, + "gpkgAddSpatialIndex() error: argument 1 [table] is not of the String type", + -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + sqlite3_result_error (context, + "gpkgAddSpatialIndex() error: argument 2 [column] is not of the String type", + -1); + return; + } + table = (const char *) sqlite3_value_text (argv[0]); + column = (const char *) sqlite3_value_text (argv[1]); + xtable = gaiaDoubleQuotedSql (table); + xcolumn = gaiaDoubleQuotedSql (column); + sqlite = sqlite3_context_db_handle (context); + + for (i = 0; i < 6; i++) + { + /* inserting the Triggers */ + if (i == 0) + sql_stmt = + sqlite3_mprintf (trigger_stmts[i], xtable, xcolumn, xtable, + xcolumn, xcolumn, xtable, xcolumn, xcolumn, + xcolumn, xcolumn, xcolumn); + else if (i == 1) + sql_stmt = + sqlite3_mprintf (trigger_stmts[i], xtable, xcolumn, xcolumn, + xtable, xcolumn, xcolumn, xtable, xcolumn, + xcolumn, xcolumn, xcolumn, xcolumn, xcolumn); + else if (i == 2) + sql_stmt = + sqlite3_mprintf (trigger_stmts[i], xtable, xcolumn, xcolumn, + xtable, xcolumn, xcolumn, xtable, xcolumn); + else if (i == 3) + sql_stmt = + sqlite3_mprintf (trigger_stmts[i], xtable, xcolumn, xcolumn, + xtable, xcolumn, xcolumn, xtable, xcolumn, + xtable, xcolumn, xcolumn, xcolumn, xcolumn, + xcolumn); + else if (i == 4) + sql_stmt = + sqlite3_mprintf (trigger_stmts[i], xtable, xcolumn, xtable, + xcolumn, xcolumn, xtable, xcolumn); + else + sql_stmt = + sqlite3_mprintf (trigger_stmts[i], xtable, xcolumn, xtable, + xcolumn, xtable, xcolumn); + + ret = sqlite3_exec (sqlite, sql_stmt, NULL, NULL, &errMsg); + sqlite3_free (sql_stmt); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, errMsg, -1); + sqlite3_free (errMsg); + free (xtable); + free (xcolumn); + return; + } + } + +/* creating the R*Tree Virtual Table */ + sql_stmt = sqlite3_mprintf ("CREATE VIRTUAL TABLE \"rtree_%s_%s\" " + "USING rtree(id, minx, maxx, miny, maxy)", + xtable, xcolumn); + ret = sqlite3_exec (sqlite, sql_stmt, NULL, NULL, &errMsg); + sqlite3_free (sql_stmt); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, errMsg, -1); + sqlite3_free (errMsg); + free (xtable); + free (xcolumn); + return; + } + free (xtable); + free (xcolumn); + +/* registering the GPKG extensions */ + sql_stmt = sqlite3_mprintf ("INSERT INTO gpkg_extensions " + "(table_name, column_name, extension_name, definition, scope) " + "VALUES (Lower(%Q), Lower(%Q), 'gpkg_rtree_index', " + "'GeoPackage 1.0 Specification Annex L', 'write-only')", + table, column); + ret = sqlite3_exec (sqlite, sql_stmt, NULL, NULL, &errMsg); + sqlite3_free (sql_stmt); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, errMsg, -1); + sqlite3_free (errMsg); + return; + } +} +#endif diff --git a/src/spatialite/src/geopackage/gpkg_add_tile_triggers.c b/src/spatialite/src/geopackage/gpkg_add_tile_triggers.c new file mode 100644 index 0000000..2e0d33b --- /dev/null +++ b/src/spatialite/src/geopackage/gpkg_add_tile_triggers.c @@ -0,0 +1,143 @@ +/* + + GeoPackage extensions for SpatiaLite / SQLite + +Version: MPL 1.1/GPL 2.0/LGPL 2.1 + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage Extensions + +The Initial Developer of the Original Code is Brad Hards (bradh@frogmouth.net) + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include "spatialite/geopackage.h" +#include "config.h" +#include "geopackage_internal.h" + +#ifdef ENABLE_GEOPACKAGE +GEOPACKAGE_DECLARE void +fnct_gpkgAddTileTriggers (sqlite3_context * context, int argc + __attribute__ ((unused)), sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgAddTileTriggers(table) +/ +/ Adds Geopackage tile table triggers for the named table +/ returns nothing on success, raises exception on error +/ +*/ + const unsigned char *table; + char *sql_stmt = NULL; + sqlite3 *sqlite = NULL; + char *errMsg = NULL; + int ret = 0; + int i = 0; + /* Note: the code below relies on there being twelve (or less) varargs, all of which are the table name */ + const char *trigger_stmts[] = { + "CREATE TRIGGER \"%s_zoom_insert\"\n" + "BEFORE INSERT ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'insert on table ''%s'' violates constraint: zoom_level not specified for table in gpkg_tile_matrix')\n" + "WHERE NOT (NEW.zoom_level IN (SELECT zoom_level FROM gpkg_tile_matrix WHERE table_name = \"%s\"));\n" + "END", + + "CREATE TRIGGER \"%s_zoom_update\"\n" + "BEFORE UPDATE OF zoom_level ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on table ''%s'' violates constraint: zoom_level not specified for table in gpkg_tile_matrix')\n" + "WHERE NOT (NEW.zoom_level IN (SELECT zoom_level FROM gpkg_tile_matrix WHERE table_name = \"%s\"));\n" + "END", + + "CREATE TRIGGER \"%s_tile_column_insert\"\n" + "BEFORE INSERT ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'insert on table ''%s'' violates constraint: tile_column cannot be < 0')\n" + "WHERE (NEW.tile_column < 0) ;\n" + "SELECT RAISE(ABORT, 'insert on table ''%s'' violates constraint: tile_column must be < matrix_width specified for table and zoom level in gpkg_tile_matrix')\n" + "WHERE NOT (NEW.tile_column < (SELECT matrix_width FROM gpkg_tile_matrix WHERE table_name = '%s' AND zoom_level = NEW.zoom_level));\n" + "END", + + "CREATE TRIGGER \"%s_tile_column_update\"\n" + "BEFORE UPDATE OF tile_column ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on table ''%s'' violates constraint: tile_column cannot be < 0')\n" + "WHERE (NEW.tile_column < 0) ;\n" + "SELECT RAISE(ABORT, 'update on table ''%s'' violates constraint: tile_column must be < matrix_width specified for table and zoom level in gpkg_tile_matrix')\n" + "WHERE NOT (NEW.tile_column < (SELECT matrix_width FROM gpkg_tile_matrix WHERE table_name = '%s' AND zoom_level = NEW.zoom_level));\n" + "END", + + "CREATE TRIGGER \"%s_tile_row_insert\"\n" + "BEFORE INSERT ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'insert on table ''%s'' violates constraint: tile_row cannot be < 0')\n" + "WHERE (NEW.tile_row < 0) ;\n" + "SELECT RAISE(ABORT, 'insert on table ''%s'' violates constraint: tile_row must be < matrix_height specified for table and zoom level in gpkg_tile_matrix')\n" + "WHERE NOT (NEW.tile_row < (SELECT matrix_height FROM gpkg_tile_matrix WHERE table_name = '%s' AND zoom_level = NEW.zoom_level));\n" + "END", + + "CREATE TRIGGER \"%s_tile_row_update\"\n" + "BEFORE UPDATE OF tile_row ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on table ''%s'' violates constraint: tile_row cannot be < 0')\n" + "WHERE (NEW.tile_row < 0) ;\n" + "SELECT RAISE(ABORT, 'update on table ''%s'' violates constraint: tile_row must be < matrix_height specified for table and zoom level in gpkg_tile_matrix')\n" + "WHERE NOT (NEW.tile_row < (SELECT matrix_height FROM gpkg_tile_matrix WHERE table_name = '%s' AND zoom_level = NEW.zoom_level));\n" + "END", + + NULL + }; + + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_error (context, + "gpkgAddTileTriggers() error: argument 1 [table] is not of the String type", + -1); + return; + } + table = sqlite3_value_text (argv[0]); + + for (i = 0; trigger_stmts[i] != NULL; ++i) + { + sql_stmt = + sqlite3_mprintf (trigger_stmts[i], table, table, table, table, + table, table, table, table, table, table, table, + table); + sqlite = sqlite3_context_db_handle (context); + ret = sqlite3_exec (sqlite, sql_stmt, NULL, NULL, &errMsg); + sqlite3_free (sql_stmt); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, errMsg, -1); + sqlite3_free (errMsg); + return; + } + } +} +#endif diff --git a/src/spatialite/src/geopackage/gpkg_get_normal_row.c b/src/spatialite/src/geopackage/gpkg_get_normal_row.c new file mode 100644 index 0000000..73da7b7 --- /dev/null +++ b/src/spatialite/src/geopackage/gpkg_get_normal_row.c @@ -0,0 +1,150 @@ +/* + + GeoPackage extensions for SpatiaLite / SQLite + +Version: MPL 1.1/GPL 2.0/LGPL 2.1 + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage Extensions + +The Initial Developer of the Original Code is Brad Hards (bradh@frogmouth.net) + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include "spatialite/geopackage.h" +#include "config.h" +#include "geopackage_internal.h" + +#ifdef ENABLE_GEOPACKAGE +GEOPACKAGE_DECLARE void +fnct_gpkgGetNormalRow (sqlite3_context * context, int argc UNUSED, + sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgGetNormalRow(tile_table_name, normal_zoom_level, inverted_row_number) +/ +/ Gets the normal integer row number for the specified table, normal zoom level +/ and inverted row number. Raises a SQL exception if no zoom level row record in +/ tile_matrix_metadata +/ +/ Note that this function can also be used to convert from a normal row number +/ to an inverted row number - this conversion is symmetric. +*/ + const unsigned char *table; + int zoom_level; + int inverted_row_number; + int matrix_height; + int normal_row_number; + char *sql_stmt = NULL; + sqlite3 *sqlite = NULL; + char *errMsg = NULL; + char **results; + char *endptr = 0; + int rows = 0; + int columns = 0; + int ret = 0; + + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_error (context, + "gpkgGetNormalRow() error: argument 1 [tile_table_name] is not of the String type", + -1); + return; + } + table = sqlite3_value_text (argv[0]); + + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_error (context, + "gpkgGetNormalRow() error: argument 2 [normal zoom level] is not of the integer type", + -1); + return; + } + zoom_level = sqlite3_value_int (argv[1]); + + if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) + { + sqlite3_result_error (context, + "gpkgGetNormalRow() error: argument 3 [inverted_row_number] is not of the integer type", + -1); + return; + } + inverted_row_number = sqlite3_value_int (argv[2]); + + sql_stmt = + sqlite3_mprintf + ("SELECT matrix_height FROM gpkg_tile_matrix WHERE table_name=\"%q\" AND zoom_level=%i", + table, zoom_level); + + sqlite = sqlite3_context_db_handle (context); + ret = + sqlite3_get_table (sqlite, sql_stmt, &results, &rows, &columns, + &errMsg); + sqlite3_free (sql_stmt); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, errMsg, -1); + sqlite3_free (errMsg); + return; + } + if (rows != 1) + { + sqlite3_result_error (context, + "gpkgGetNormalRow: tile table or zoom level not found", + -1); + sqlite3_free_table (results); + sqlite3_free (errMsg); + return; + } + errno = 0; + matrix_height = strtol (results[1 * columns + 0], &endptr, 10); + if ((endptr == results[1 * columns + 0]) + || (matrix_height < 0) + || (errno == ERANGE && matrix_height == INT_MAX) + || (errno != 0 && matrix_height == 0)) + { + sqlite3_free_table (results); + sqlite3_result_error (context, + "gpkgGetNormalRow: could not parse result (corrupt GeoPackage?)", + -1); + return; + } + sqlite3_free_table (results); + if ((inverted_row_number >= matrix_height) || (inverted_row_number < 0)) + { + sqlite3_result_error (context, + "gpkgGetNormalRow: row number outside of matrix height range", + -1); + return; + } + + normal_row_number = matrix_height - inverted_row_number - 1; + sqlite3_result_int (context, normal_row_number); +} +#endif diff --git a/src/spatialite/src/geopackage/gpkg_get_normal_zoom.c b/src/spatialite/src/geopackage/gpkg_get_normal_zoom.c new file mode 100644 index 0000000..1a88b78 --- /dev/null +++ b/src/spatialite/src/geopackage/gpkg_get_normal_zoom.c @@ -0,0 +1,140 @@ +/* + + GeoPackage extensions for SpatiaLite / SQLite + +Version: MPL 1.1/GPL 2.0/LGPL 2.1 + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage Extensions + +The Initial Developer of the Original Code is Brad Hards (bradh@frogmouth.net) + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include "spatialite/geopackage.h" +#include "config.h" +#include "geopackage_internal.h" + +#ifdef ENABLE_GEOPACKAGE +GEOPACKAGE_DECLARE void +fnct_gpkgGetNormalZoom (sqlite3_context * context, int argc UNUSED, + sqlite3_value ** argv) +{ +/* SQL function: +/ gpkgGetNormalZoom(tile_table_name, inverted_zoom_level) +/ +/ Gets the normal integer zoom level for data stored in the specified table. +/ Raises a SQL exception if inverted zoom level is outside the range of +/ tile_matrix_metadata table normal zoom levels defined for the tile_table +/ +/ Note that this function can also be used to convert from a normal zoom level +/ to an inverted zoom level - this conversion is symmetric. +*/ + const unsigned char *table; + int inverted_zoom_level; + long max_zoom_level; + long normal_zoom_level; + char *sql_stmt = NULL; + sqlite3 *sqlite = NULL; + char *errMsg = NULL; + char **results; + char *endptr = 0; + int rows = 0; + int columns = 0; + int ret = 0; + + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_error (context, + "gpkgGetNormalZoom() error: argument 1 [tile_table_name] is not of the String type", + -1); + return; + } + table = sqlite3_value_text (argv[0]); + + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_error (context, + "gpkgGetNormalZoom() error: argument 2 [inverted zoom level] is not of the integer type", + -1); + return; + } + inverted_zoom_level = sqlite3_value_int (argv[1]); + + sql_stmt = + sqlite3_mprintf + ("SELECT MAX(zoom_level) FROM gpkg_tile_matrix WHERE table_name=\"%q\"", + table); + + sqlite = sqlite3_context_db_handle (context); + ret = + sqlite3_get_table (sqlite, sql_stmt, &results, &rows, &columns, + &errMsg); + sqlite3_free (sql_stmt); + if (ret != SQLITE_OK) + { + sqlite3_result_error (context, errMsg, -1); + sqlite3_free (errMsg); + return; + } + if ((rows != 1) || (results[1 * columns + 0] == NULL)) + { + sqlite3_free_table (results); + sqlite3_result_error (context, + "gpkgGetNormalZoom: tile table not found in gpkg_tile_matrix", + -1); + sqlite3_free (errMsg); + return; + } + errno = 0; + max_zoom_level = strtol (results[1 * columns + 0], &endptr, 10); + if ((endptr == results[1 * columns + 0]) + || (max_zoom_level < 0) + || (errno == ERANGE && max_zoom_level == LONG_MAX) + || (errno != 0 && max_zoom_level == 0)) + { + sqlite3_free_table (results); + sqlite3_result_error (context, + "gpkgGetNormalZoom: could not parse result (corrupt GeoPackage?)", + -1); + return; + } + sqlite3_free_table (results); + if ((inverted_zoom_level > max_zoom_level) || (inverted_zoom_level < 0)) + { + sqlite3_result_error (context, + "gpkgGetNormalZoom: input zoom level number outside of valid zoom levels", + -1); + return; + } + + normal_zoom_level = max_zoom_level - inverted_zoom_level; + sqlite3_result_int (context, normal_zoom_level); +} +#endif diff --git a/src/spatialite/src/headers/Makefile.am b/src/spatialite/src/headers/Makefile.am new file mode 100644 index 0000000..2c99ee7 --- /dev/null +++ b/src/spatialite/src/headers/Makefile.am @@ -0,0 +1,20 @@ + +noinst_HEADERS = spatialite_private.h +nobase_include_HEADERS = spatialite.h \ + spatialite/gaiaexif.h \ + spatialite/gaiaaux.h \ + spatialite/gaiageo.h \ + spatialite/gg_const.h \ + spatialite/gg_structs.h \ + spatialite/gg_core.h \ + spatialite/gg_mbr.h \ + spatialite/gg_formats.h \ + spatialite/gg_dynamic.h \ + spatialite/gg_advanced.h \ + spatialite/gg_xml.h \ + spatialite/gg_wfs.h \ + spatialite/gg_dxf.h \ + spatialite/spatialite.h \ + spatialite/sqlite.h \ + spatialite/debug.h \ + spatialite/geopackage.h diff --git a/src/spatialite/src/headers/Makefile.in b/src/spatialite/src/headers/Makefile.in new file mode 100644 index 0000000..2a43e50 --- /dev/null +++ b/src/spatialite/src/headers/Makefile.in @@ -0,0 +1,580 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/headers +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(nobase_include_HEADERS) $(noinst_HEADERS) +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__installdirs = "$(DESTDIR)$(includedir)" +HEADERS = $(nobase_include_HEADERS) $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +noinst_HEADERS = spatialite_private.h +nobase_include_HEADERS = spatialite.h \ + spatialite/gaiaexif.h \ + spatialite/gaiaaux.h \ + spatialite/gaiageo.h \ + spatialite/gg_const.h \ + spatialite/gg_structs.h \ + spatialite/gg_core.h \ + spatialite/gg_mbr.h \ + spatialite/gg_formats.h \ + spatialite/gg_dynamic.h \ + spatialite/gg_advanced.h \ + spatialite/gg_xml.h \ + spatialite/gg_wfs.h \ + spatialite/gg_dxf.h \ + spatialite/spatialite.h \ + spatialite/sqlite.h \ + spatialite/debug.h \ + spatialite/geopackage.h + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/headers/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/headers/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +install-nobase_includeHEADERS: $(nobase_include_HEADERS) + @$(NORMAL_INSTALL) + @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(includedir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(includedir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(includedir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(includedir)/$$dir"; }; \ + echo " $(INSTALL_HEADER) $$xfiles '$(DESTDIR)$(includedir)/$$dir'"; \ + $(INSTALL_HEADER) $$xfiles "$(DESTDIR)$(includedir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_includeHEADERS: + @$(NORMAL_UNINSTALL) + @list='$(nobase_include_HEADERS)'; test -n "$(includedir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(includedir)'; $(am__uninstall_files_from_dir) + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(HEADERS) +installdirs: + for dir in "$(DESTDIR)$(includedir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: install-nobase_includeHEADERS + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-nobase_includeHEADERS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-generic distclean-libtool distclean-tags distdir dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man \ + install-nobase_includeHEADERS install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-nobase_includeHEADERS + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/headers/spatialite.h b/src/spatialite/src/headers/spatialite.h new file mode 100644 index 0000000..af26d87 --- /dev/null +++ b/src/spatialite/src/headers/spatialite.h @@ -0,0 +1,1049 @@ +/* + spatialite.h -- Gaia spatial support for SQLite + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +/** + \file spatialite.h + + Main SpatiaLite header file + */ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#ifdef _WIN32 +#ifdef DLL_EXPORT +#define SPATIALITE_DECLARE __declspec(dllexport) +#else +#define SPATIALITE_DECLARE extern +#endif +#else +#define SPATIALITE_DECLARE __attribute__ ((visibility("default"))) +#endif +#endif + +#ifndef _SPATIALITE_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _SPATIALITE_H +#endif + + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include <spatialite/gaiageo.h> + +#ifdef LOADABLE_EXTENSION +/* SPATIALITE_DECLARE int + sqlite3_spatialite_init (sqlite3 * db, char **pzErrMsg, + const sqlite3_api_routines * pApi);*/ +#endif + +/** + Initializes the library + + \note you are always expected to explicitly call this function + before attempting to call any SpatiaLite own function. + */ + SPATIALITE_DECLARE void spatialite_initialize (void); + +/** + Finalizes the library + + \note you are always expected to explicitly call this function + immediately before exiting the main application.\n + This function will free any memory allocation and will release + any system resource internally used by the library.\n + */ + SPATIALITE_DECLARE void spatialite_shutdown (void); + +/** + Return the current library version. + + \return the version string. + */ + SPATIALITE_DECLARE const char *spatialite_version (void); + +/** + Return the target CPU name. + + \return the target CPU string. + */ + SPATIALITE_DECLARE const char *spatialite_target_cpu (void); + +/** + Initializes the internal memory block supporting each connection + + \sa spatialite_init_ex, spatialite_cleanup_ex + + */ + SPATIALITE_DECLARE void *spatialite_alloc_connection (void); + +/** + Initializes a SpatiaLite connection. + + This function is now \b DEPRECATED because is not reentrant (not thread safe); + use spatialite_init_ex() for all new development. + + \param verbose if TRUE a short start-up message is shown on stderr + + \sa spatialite_cleanup, spatialite_init_ex + + \note You absolutely must invoke this function before attempting to perform + any other SpatiaLite's call. + + */ + SPATIALITE_DECLARE void spatialite_init (int verbose); + +/** + Initializes a SpatiaLite connection. + + \param db_handle handle to the current SQLite connection + \param ptr a memory pointer returned by spatialite_alloc_connection() + \param verbose if TRUE a short start-up message is shown on stderr + + \sa spatialite_alloc_connection, spatialite_cleanup_ex, spatialite_init + + \note You absolutely must invoke this function before attempting to perform + any other SpatiaLite's call. + + */ + SPATIALITE_DECLARE void spatialite_init_ex (sqlite3 * db_handle, + const void *ptr, int verbose); + +/** + Initializes the GEOS library. + + \note You are never supposed to invoke this function (internally handled). + + */ + SPATIALITE_DECLARE void spatialite_init_geos (void); + +/** + Cleanup a SpatiaLite connection + + This function is now \b DEPRECATED; use spatialite_cleanup_ex() for all new development. + + This function performs general cleanup, essentially undoing the effect + of spatialite_init(). + + \sa spatialite_init +*/ + SPATIALITE_DECLARE void spatialite_cleanup (void); + +/** + Cleanup a SpatiaLite connection + + This function performs general cleanup, essentially undoing the effect + of spatialite_init_ex(). + + \param ptr the same memory pointer passed to the corresponding call to + spatialite_init_ex() and returned by spatialite_alloc_connection() + + \sa spatialite_init_ex, spatialite_alloc_connection +*/ + SPATIALITE_DECLARE void spatialite_cleanup_ex (const void *ptr); + +/** + Dumps a full geometry-table into an external Shapefile + + \param sqlite handle to current DB connection + \param table the name of the table to be exported + \param column the name of the geometry column + \param shp_path pathname of the Shapefile to be exported (no suffix) + \param charset a valid GNU ICONV charset to be used for DBF text strings + \param geom_type "POINT", "LINESTRING", "POLYGON", "MULTIPOLYGON" or NULL + \param verbose if TRUE a short report is shown on stderr + \param rows on completion will contain the total number of actually exported rows + \param err_msg on completion will contain an error message (if any) + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int dump_shapefile (sqlite3 * sqlite, char *table, + char *column, char *shp_path, + char *charset, char *geom_type, + int verbose, int *rows, + char *err_msg); + +/** + Loads an external Shapefile into a newly created table + + \param sqlite handle to current DB connection + \param shp_path pathname of the Shapefile to be imported (no suffix) + \param table the name of the table to be created + \param charset a valid GNU ICONV charset to be used for DBF text strings + \param srid the SRID to be set for Geometries + \param column the name of the geometry column + \param coerce2d if TRUE any Geometry will be casted to 2D [XY] + \param compressed if TRUE compressed Geometries will be created + \param verbose if TRUE a short report is shown on stderr + \param spatial_index if TRUE an R*Tree Spatial Index will be created + \param rows on completion will contain the total number of actually exported rows + \param err_msg on completion will contain an error message (if any) + + \return 0 on failure, any other value on success + + \sa load_shapefile_ex + + \note this function simply calls load_shapefile_ex by passing + implicit gype="AUTO" and pk_column=NULL arguments + */ + SPATIALITE_DECLARE int load_shapefile (sqlite3 * sqlite, char *shp_path, + char *table, char *charset, int srid, + char *column, int coerce2d, + int compressed, int verbose, + int spatial_index, int *rows, + char *err_msg); + +/** + Loads an external Shapefile into a newly created table + + \param sqlite handle to current DB connection + \param shp_path pathname of the Shapefile to be imported (no suffix) + \param table the name of the table to be created + \param charset a valid GNU ICONV charset to be used for DBF text strings + \param srid the SRID to be set for Geometries + \param geo_column the name of the geometry column + \param gtype expected to be one of: "LINESTRING", "LINESTRINGZ", + "LINESTRINGM", "LINESTRINGZM", "MULTILINESTRING", "MULTILINESTRINGZ", + "MULTILINESTRINGM", "MULTILINESTRINGZM", "POLYGON", "POLYGONZ", "POLYGONM", + "POLYGONZM", "MULTIPOLYGON", "MULTIPOLYGONZ", "MULTIPOLYGONM", + "MULTIPOLYGONZM" or "AUTO". + \param pk_column name of the Primary Key column; if NULL or mismatching + then "PK_UID" will be assumed by default. + \param coerce2d if TRUE any Geometry will be casted to 2D [XY] + \param compressed if TRUE compressed Geometries will be created + \param verbose if TRUE a short report is shown on stderr + \param spatial_index if TRUE an R*Tree Spatial Index will be created + \param rows on completion will contain the total number of actually exported rows + \param err_msg on completion will contain an error message (if any) + + \return 0 on failure, any other value on success + + \sa load_shapefile + + \note the Shapefile format doesn't supports any distinction between + LINESTRINGs and MULTILINESTRINGs, or between POLYGONs and MULTIPOLYGONs; + as does not allows to clearly distinguish if the M-measure is required. + \n So a first preliminary scan of the Shapefile is required in order to + correctly identify the actual payload (gtype = "AUTO", default case). + \n By explicitly specifying some expected geometry type this first scan + will be skipped at all thus introducing a noticeable performance gain. + \n Anyway, declaring a mismatching geometry type will surely cause a failure. + */ + SPATIALITE_DECLARE int load_shapefile_ex (sqlite3 * sqlite, char *shp_path, + char *table, char *charset, + int srid, char *geo_column, + char *gtype, char *pk_column, + int coerce2d, int compressed, + int verbose, int spatial_index, + int *rows, char *err_msg); + +/** + Loads an external DBF file into a newly created table + + \param sqlite handle to current DB connection + \param dbf_path pathname of the DBF file to be imported + \param table the name of the table to be created + \param charset a valid GNU ICONV charset to be used for DBF text strings + \param verbose if TRUE a short report is shown on stderr + \param rows on completion will contain the total number of actually exported rows + \param err_msg on completion will contain an error message (if any) + + \sa load_dbf_ex + + \note this function simply calls load_dbf_ex by passing an + implicit pk_column=NULL argument + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int load_dbf (sqlite3 * sqlite, char *dbf_path, + char *table, char *charset, int verbose, + int *rows, char *err_msg); + +/** + Loads an external DBF file into a newly created table + + \param sqlite handle to current DB connection + \param dbf_path pathname of the DBF file to be imported + \param table the name of the table to be created + \param pk_column name of the Primary Key column; if NULL or mismatching + then "PK_UID" will be assumed by default. + \param charset a valid GNU ICONV charset to be used for DBF text strings + \param verbose if TRUE a short report is shown on stderr + \param rows on completion will contain the total number of actually exported rows + \param err_msg on completion will contain an error message (if any) + + \sa load_shapefile + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int load_dbf_ex (sqlite3 * sqlite, char *dbf_path, + char *table, char *pk_column, + char *charset, int verbose, int *rows, + char *err_msg); + + +/** + Dumps a full table into an external DBF file + + \param sqlite handle to current DB connection + \param table the name of the table to be exported + \param dbf_path pathname of the DBF to be exported + \param charset a valid GNU ICONV charset to be used for DBF text strings + \param err_msg on completion will contain an error message (if any) + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int dump_dbf (sqlite3 * sqlite, char *table, + char *dbf_path, char *charset, + char *err_msg); + +/** + Loads an external spreadsheet (.xls) file into a newly created table + + \param sqlite handle to current DB connection + \param path pathname of the spreadsheet file to be imported + \param table the name of the table to be created + \param worksheetIndex the index identifying the worksheet to be imported + \param first_titles if TRUE the first line is assumed to contain column names + \param rows on completion will contain the total number of actually exported rows + \param err_msg on completion will contain an error message (if any) + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int load_XL (sqlite3 * sqlite, const char *path, + const char *table, + unsigned int worksheetIndex, + int first_titles, unsigned int *rows, + char *err_msg); + +/** + A portable replacement for C99 round() + + \param value a double value + + \return the nearest integeral value + */ + SPATIALITE_DECLARE double math_round (double value); + +/** + A portable replacement for C99 llabs() + + \param value a 64 bit integer value + + \return the corresponding absolute value + */ + SPATIALITE_DECLARE sqlite3_int64 math_llabs (sqlite3_int64 value); + +/** + Inserts the inlined EPSG dataset into the "spatial_ref_sys" table + + \param sqlite handle to current DB connection + \param verbose if TRUE a short report is shown on stderr + + \return 0 on failure, any other value on success + + \sa spatial_ref_sys_init2 + + \note this function is internally invoked by the SQL function + InitSpatialMetadata(), and is not usually intended for direct use. + This functions is now deprecated, and will simply call + spatial_ref_sys_init2(sqlite, GAIA_EPSG_ANY, verbose). + */ + SPATIALITE_DECLARE int spatial_ref_sys_init (sqlite3 * sqlite, int verbose); + +/** + Inserts the inlined EPSG dataset into the "spatial_ref_sys" table + + \param sqlite handle to current DB connection + \param mode can be one of GAIA_EPSG_ANY, GAIA_EPSG_NONE or GAIA_EPSG_WGS84_ONLY + \param verbose if TRUE a short report is shown on stderr + + \return 0 on failure, any other value on success + + \note this function is internally invoked by the SQL function + InitSpatialMetadata(), and is not usually intended for direct use. + */ + SPATIALITE_DECLARE int spatial_ref_sys_init2 (sqlite3 * sqlite, int mode, + int verbose); + +/** + Inserts some inlined EPSG definition into the "spatial_ref_sys" table + + \param sqlite handle to current DB connection + \param srid the SRID value uniquely identifying the required EPSG definition + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int insert_epsg_srid (sqlite3 * sqlite, int srid); + +/** + Checks if a column is actually defined into the given table + + \param sqlite handle to current DB connection + \param table the table to be checked + \param column the column to be checked + + \return 0 on success, any other value on success + + \note internally used to detect if some KML attribute defaults to a constant value + */ + SPATIALITE_DECLARE int + is_kml_constant (sqlite3 * sqlite, char *table, char *column); + +/** + Dumps a full geometry-table into an external KML file + + \param sqlite handle to current DB connection + \param table the name of the table to be exported + \param geom_col the name of the geometry column + \param kml_path pathname of the KML file to be exported + \param name_col column to be used for KML "name" (may be null) + \param desc_col column to be used for KML "description" (may be null) + \param precision number of decimal digits for coordinates + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int dump_kml (sqlite3 * sqlite, char *table, + char *geom_col, char *kml_path, + char *name_col, char *desc_col, + int precision); + +/** + Checks for duplicated rows into the same table + + \param sqlite handle to current DB connection + \param table name of the table to be checked + \param dupl_count on completion will contain the number of duplicated rows found + + \sa remove_duplicated_rows + \note two (or more) rows are assumed to be duplicated if any column + + value (excluding any Primary Key column) is exacly the same + */ + SPATIALITE_DECLARE void check_duplicated_rows (sqlite3 * sqlite, + char *table, + int *dupl_count); + +/** + Remove duplicated rows from a table + + \param sqlite handle to current DB connection + \param table name of the table to be cleaned + + \sa check_duplicated_rows, remove_duplicated_rows_ex + + \note when two (or more) duplicated rows exist, only the first occurence + will be preserved, then deleting any further occurrence. + */ + SPATIALITE_DECLARE void remove_duplicated_rows (sqlite3 * sqlite, + char *table); + +/** + Remove duplicated rows from a table + + \param sqlite handle to current DB connection + \param table name of the table to be cleaned + \param removed on successful completion will contain the total + count of removed duplicate rows + + \sa check_duplicated_rows, remove_duplicated_rows + + \note when two (or more) duplicated rows exist, only the first occurence + will be preserved, then deleting any further occurrence. + */ + SPATIALITE_DECLARE void remove_duplicated_rows_ex (sqlite3 * sqlite, + char *table, + int *removed); + +/** + Creates a derived table surely containing elementary Geometries + + \param sqlite handle to current DB connection + \param inTable name of the input table + \param geometry name of the Geometry column + \param outTable name of the output table to be created + \param pKey name of the Primary Key column in the output table + \param multiId name of the column identifying origins in the output table + + \note if the input table contains some kind of complex Geometry + (MULTIPOINT, MULTILINESTRING, MULTIPOLYGON or GEOMETRYCOLLECTION), + then many rows are inserted into the output table: each single + row will contain the same attributes and an elementaty Geometry. + All the rows created by expanding the same input row will expose + the same value in the "multiId" column. + */ + SPATIALITE_DECLARE void elementary_geometries (sqlite3 * sqlite, + char *inTable, + char *geometry, + char *outTable, char *pKey, + char *multiId); + +/** + Dumps a full geometry-table into an external GeoJSON file + + \param sqlite handle to current DB connection + \param table the name of the table to be exported + \param geom_col the name of the geometry column + \param outfile_path pathname for the GeoJSON file to be written to + \param precision number of decimal digits for coordinates + \param option the format to use for output + + \note valid values for option are: + - 0 no option + - 1 GeoJSON MBR + - 2 GeoJSON Short CRS (e.g EPSG:4326) + - 3 MBR + Short CRS + - 4 GeoJSON Long CRS (e.g urn:ogc:def:crs:EPSG::4326) + - 5 MBR + Long CRS + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int dump_geojson (sqlite3 * sqlite, char *table, + char *geom_col, char *outfile_path, + int precision, int option); + +/** + Updates the LAYER_STATICS metadata table + + \param sqlite handle to current DB connection + \param table name of the table to be processed + \param column name of the geometry to be processed + + \note this function will explore the given table/geometry determining + the number of rows and the full layer extent; a corresponding table/geometry + entry is expected to be already declared in the GEOMETRY_COLUMNS table. + These informations will be permanently stored into the LAYER_STATISTICS + table; if such table does not yet exists will be implicitly created. + - if table is NULL, any entry found within GEOMETRY_COLUMNS + will be processed. + - if table is not NULL and column is NULL, any geometry + belonging to the given table will be processed. + - if both table and column are not NULL, then only the + given entry will be processed. + + \sa gaiaStatisticsInvalidate, gaiaGetLayerExtent, gaiaGetVectorLayersList + + \return 0 on failure, the total count of processed entries on success + */ + SPATIALITE_DECLARE int update_layer_statistics (sqlite3 * sqlite, + const char *table, + const char *column); + +/** + Immediately and unconditionally invalidates the already existing Statistics + + \param handle SQLite handle to current DB connection. + \param table VectorLayer Table (or View, or VirtualShape). + \param geometry Geometry Column name. + + \return 0 on success, any other value on success + + \sa update_layer_statistics, gaiaGetLayerExtent, gaiaGetVectorLayersList + + \note if the table arg is NULL all Statistics for any VectorLayer defined within + the DB will be invalidated; otherwise only a single Layer will be affectedd (if existing). + \n By defining the geometry arg (not NULL) you can further restrict your selection. + */ + SPATIALITE_DECLARE int gaiaStatisticsInvalidate (sqlite3 * handle, + const char *table, + const char *geometry); + +/** + Queries the Metadata tables returning the Layer Full Extent + + \param handle SQLite handle to current DB connection. + \param table VectorLayer Table (or View, or VirtualShape). + \param geometry Geometry Column name. + \param mode if TRUE a PESSIMISTIC statistics update will be implied, + otherwise OPTIMISTIC. + + \return the pointer to the newly created Geometry (Envelope): NULL on failure + + \sa update_layer_statistic, gaiaStatisticsInvalidate, gaiaGetVectorLayersList + + \note you are responsible to destroy (before or after) any allocated + Geometry returned by gaiaGetLayerExtent(). + \n The geometry arg is optional when the table simply has a single Geometry Column, + and can be NULL in this case. + \n When the mode arg is set to FALSE (default) then the returned infos + will be simply retrieved from the staticized statistic tables (faster, but could be inaccurate). + \n If the mode arg is set to TRUE a preliminary attempt to update the + statistic tables will be always performed (probably slower, but surely accurate). + \n If the named Layer doesn't exist, or if it's completely empty (not containing + any valid Geometry) NULL will be returned. + */ + SPATIALITE_DECLARE gaiaGeomCollPtr gaiaGetLayerExtent (sqlite3 * handle, + const char *table, + const char *geometry, + int mode); + +/** + Queries the Metadata tables supporting Vector Layers + + \param handle SQLite handle to current DB connection. + \param table VectorLayer Table (or View, or VirtualShape). + \param geometry Geometry Column name. + \param mode one of GAIA_VECTORS_LIST_OPTIMISTIC or GAIA_VECTORS_LIST_PESSIMISTIC. + + \return the pointer to the newly created VectorLayersList object: NULL on failure + + \sa gaiaFreeVectorLayersList, update_layer_statistics, gaiaStatisticsInvalidate, + gaiaGetLayerExtent, gaiaGetVectorLayersList + + \note you are responsible to destroy (before or after) any allocated + VectorLayersList returned by gaiaGetVectorLayersList(). + \n If the table arg is NULL all VectorLayers defined within the DB will be reported; + otherwise only a single Layer will be reported (if existing). + \n By defining the geometry arg (not NULL) you can further restrict the returned report. + \n When the mode arg is set to GAIA_VECTORS_LIST_OPTIMISTIC (default) then the returned infos + will be simply retrieved from the staticized statistic tables (faster, but could be inaccurate). + \n If the mode arg is set to GAIA_VECTORS_LIST_PESSIMISTIC a preliminary attempt to update the + statistic tables will be always performed (probably slower, but surely accurate). + */ + SPATIALITE_DECLARE gaiaVectorLayersListPtr gaiaGetVectorLayersList (sqlite3 + * + handle, + const + char + *table, + const + char + *geometry, + int + mode); + +/** + Creates (or re-creates) the "splite_metacatalog" and + "splite_metacalog_statistics" tables. + + \param handle SQLite handle to current DB connection. + + \return 0 (FALSE) on failure, any other value (TRUE) on success + + \sa gaiaUpdateMetaCatalogStatistics, gaiaUpdateMetaCatalogStatisticsFromMaster + */ + SPATIALITE_DECLARE int gaiaCreateMetaCatalogTables (sqlite3 * handle); + +/** + Updates the "splite_metacatalog_statistics" table. + + \param handle SQLite handle to current DB connection. + \param table name of the table to be processed. + \param column name of the column to be processed. + + \return 0 (FALSE) on failure, any other value (TRUE) on success + + \sa gaiaCreateMetaCatalogTables, gaiaUpdateMetaCatalogStatisticsFromMaster + */ + SPATIALITE_DECLARE int gaiaUpdateMetaCatalogStatistics (sqlite3 * handle, + const char *table, + const char *column); + +/** + Updates the "splite_metacatalog_statistics" table (using a Master Table). + + \param handle SQLite handle to current DB connection. + \param master_table name of the master-table controlling the whole process. + \param table_name name of the column into the master-table containing table-names. + \param column_name name of the column into the master-table containing column-names. + + \return 0 (FALSE) on failure, any other value (TRUE) on success + + \sa gaiaCreateMetaCatalogTables, gaiaUpdateMetaCatalogStatistics + */ + SPATIALITE_DECLARE int gaiaUpdateMetaCatalogStatisticsFromMaster (sqlite3 * + handle, + const char + *master_table, + const char + *table_name, + const char + *column_name); + +/** + Destroys a VectorLayersList object + + \param ptr pointer to the VectorLayersList object to be destroyed + + \sa gaiaGetVectorLayersList + */ + SPATIALITE_DECLARE void gaiaFreeVectorLayersList (gaiaVectorLayersListPtr + ptr); + +/** + Drops a layer-table, removing any related dependency + + \param sqlite handle to current DB connection + \param table name of the table to be removed + + \note this function will drop a SpatialTable, SpatialView or VirtualShape being + properly registered within the Metadata tables. + \n an eventual Spatial Index will be dropped as well, and any row referring the + selected table will be removed from the Metadata tables. + + \return 0 on failure, any other value on success + + \sa gaiaDropTableEx + + \note this one simply is a convenience method alway defaulting to + gaiaDropTableEx(sqlite, "main", table); + */ + SPATIALITE_DECLARE int gaiaDropTable (sqlite3 * sqlite, const char *table); + +/** + Drops a layer-table, removing any related dependency + + \param sqlite handle to current DB connection + \param prefix schema prefix identifying the target DB\n + "main" always identifies the main DB (primary, not Attached). + \param table name of the table to be removed + + \note this function will drop a SpatialTable, SpatialView or VirtualShape being + properly registered within the Metadata tables. + \n an eventual Spatial Index will be dropped as well, and any row referring the + selected table will be removed from the Metadata tables. + + \return 0 on failure, any other value on success + + \sa gaiaDropTable + */ + SPATIALITE_DECLARE int gaiaDropTableEx (sqlite3 * sqlite, + const char *prefix, + const char *table); + +/** + Checks a Geometry Column for validity + + \param sqlite handle to current DB connection + \param table name of the table + \param geometry name of the column to be checked + \param report_path pathname of the report-file + \param n_rows if this variable is not NULL on successful completion will + contain the total number of rows found into the checkeck table + \param n_invalids if this variable is not NULL on successful completion will + contain the total number of invalid Geometries found into the checkeck table + \param err_msg if this variable is not NULL and the return status is ZERO + (failure), an appropriate error message will be returned + + \sa check_geometry_column_r, check_all_geometry_columns, + sanitize_geometry_column, sanitize_all_geometry_columns + + \note this function will check a Geometry Column (layer) for validity; + a HTML report will be produced. + \n an eventual error message returned via err_msg requires to be deallocated + by invoking free()\n + not reentrant and thread unsafe. + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int check_geometry_column (sqlite3 * sqlite, + const char *table, + const char *geom, + const char *report_path, + int *n_rows, int *n_invalids, + char **err_msg); + +/** + Checks a Geometry Column for validity + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param sqlite handle to current DB connection + \param table name of the table + \param geometry name of the column to be checked + \param report_path pathname of the report-file + \param n_rows if this variable is not NULL on successful completion will + contain the total number of rows found into the checkeck table + \param n_invalids if this variable is not NULL on successful completion will + contain the total number of invalid Geometries found into the checkeck table + \param err_msg if this variable is not NULL and the return status is ZERO + (failure), an appropriate error message will be returned + + \sa check_geometry_column, check_all_geometry_columns, + sanitize_geometry_column, sanitize_all_geometry_columns + + \note this function will check a Geometry Column (layer) for validity; + a HTML report will be produced. + \n an eventual error message returned via err_msg requires to be deallocated + by invoking free()\n + reentrant and thread-safe. + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int check_geometry_column_r (const void *p_cache, + sqlite3 * sqlite, + const char *table, + const char *geom, + const char *report_path, + int *n_rows, + int *n_invalids, + char **err_msg); + +/** + Checks all Geometry Columns for validity + + \param sqlite handle to current DB connection + \param output_dir pathname of the directory to be created for report-files + \param n_invalids if this variable is not NULL on successful completion will + contain the total number of invalid Geometries found + \param err_msg if this variable is not NULL and the return status is ZERO + (failure), an appropriate error message will be returned + + \sa check_all_geometry_columns_r, check_geometry_column, + sanitize_geometry_column, sanitize_all_geometry_columns + + \note this function will check all Geometry Columns (vector layers) for validity; + a HTML report will be produced. + \n an eventual error message returned via err_msg requires to be deallocated + by invoking free()\n + not reentrant and thread unsafe. + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int check_all_geometry_columns (sqlite3 * sqlite, + const char *output_dir, + int *n_invalids, + char **err_msg); + +/** + Checks all Geometry Columns for validity + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param sqlite handle to current DB connection + \param output_dir pathname of the directory to be created for report-files + \param n_invalids if this variable is not NULL on successful completion will + contain the total number of invalid Geometries found + \param err_msg if this variable is not NULL and the return status is ZERO + (failure), an appropriate error message will be returned + + \sa check_all_geometry_columns, check_geometry_column, + sanitize_geometry_column, sanitize_all_geometry_columns + + \note this function will check all Geometry Columns (vector layers) for validity; + a HTML report will be produced. + \n an eventual error message returned via err_msg requires to be deallocated + by invoking free()\n + reentrant and thread-safe. + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int check_all_geometry_columns_r (const void *p_cache, + sqlite3 * sqlite, + const char *output_dir, + int *n_invalids, + char **err_msg); + +/** + Sanitizes a Geometry Column making all invalid geometries to be valid + + \param sqlite handle to current DB connection + \param table name of the table + \param geometry name of the column to be checked + \param tmp_table name of the temporary table + \param report_path pathname of the report-file + \param n_invalids if this variable is not NULL on successful completion will + contain the total number of invalid Geometries found into the sanitize table + \param n_repaired if this variable is not NULL on successful completion will + contain the total number of repaired Geometries + \param n_discarded if this variable is not NULL on successful completion will + contain the total number of repaired Geometries (by discarding fragments) + \param n_failures if this variable is not NULL on successful completion will + contain the total number of repair failures (i.e. Geometries beyond possible repair) + \param err_msg if this variable is not NULL and the return status is ZERO + (failure), an appropriate error message will be returned + + \sa sanitize_geometry_column_r, check_geometry_column, + check_all_geometry_columns, sanitize_all_geometry_columns + + \note this function will attempt to make valid all invalid geometries + found within a Geometry Column (layer); a temporary table is required. + \n if the process has full success the temprary table will be deleted; + otherwise it will be preserved for further inspection. + a HTML report will be produced as well. + \n an eventual error message returned via err_msg requires to be deallocated + by invoking free()\n + not reentrant and thread unsafe. + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int sanitize_geometry_column (sqlite3 * sqlite, + const char *table, + const char *geom, + const char *tmp_table, + const char *report_path, + int *n_invalids, + int *n_repaired, + int *n_discarded, + int *n_failures, + char **err_msg); + +/** + Sanitizes a Geometry Column making all invalid geometries to be valid + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param sqlite handle to current DB connection + \param table name of the table + \param geometry name of the column to be checked + \param tmp_table name of the temporary table + \param report_path pathname of the report-file + \param n_invalids if this variable is not NULL on successful completion will + contain the total number of invalid Geometries found into the sanitize table + \param n_repaired if this variable is not NULL on successful completion will + contain the total number of repaired Geometries + \param n_discarded if this variable is not NULL on successful completion will + contain the total number of repaired Geometries (by discarding fragments) + \param n_failures if this variable is not NULL on successful completion will + contain the total number of repair failures (i.e. Geometries beyond possible repair) + \param err_msg if this variable is not NULL and the return status is ZERO + (failure), an appropriate error message will be returned + + \sa sanitize_geometry_column, check_geometry_column, + check_all_geometry_columns, sanitize_all_geometry_columns + + \note this function will attempt to make valid all invalid geometries + found within a Geometry Column (layer); a temporary table is required. + \n if the process has full success the temprary table will be deleted; + otherwise it will be preserved for further inspection. + a HTML report will be produced as well. + \n an eventual error message returned via err_msg requires to be deallocated + by invoking free()\n + reentrant and thread-safe. + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int sanitize_geometry_column_r (const void *p_cache, + sqlite3 * sqlite, + const char *table, + const char *geom, + const char *tmp_table, + const char *report_path, + int *n_invalids, + int *n_repaired, + int *n_discarded, + int *n_failures, + char **err_msg); + +/** + Sanitizes all Geometry Columns making all invalid geometries to be valid + + \param sqlite handle to current DB connection + \param tmp_prefix name-prefix for temporary tables + \param output_dir pathname of the directory to be created for report-files + \param not_repaired if this variable is not NULL on successful completion will + contain the total count of repair failures (i.e. Geometries beyond possible repair) + \param err_msg if this variable is not NULL and the return status is ZERO + (failure), an appropriate error message will be returned + + \sa sanitize_all_geometry_columns_r, check_geometry_column, + check_all_geometry_columns, sanitize_geometry_column + + \note this function will attempt to make valid all invalid geometries + found within all Geometry Columns (vector layers); a temporary table is + required so to support each input table. + \n if the process has full success the temprary table will be deleted; + otherwise it will be preserved for further inspection. + a HTML report will be produced as well. + \n an eventual error message returned via err_msg requires to be deallocated + by invoking free()\n + not reentrant and thread unsafe. + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int sanitize_all_geometry_columns (sqlite3 * sqlite, + const char + *tmp_prefix, + const char + *output_dir, + int *not_repaired, + char **err_msg); + +/** + Sanitizes all Geometry Columns making all invalid geometries to be valid + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param sqlite handle to current DB connection + \param tmp_prefix name-prefix for temporary tables + \param output_dir pathname of the directory to be created for report-files + \param not_repaired if this variable is not NULL on successful completion will + contain the total count of repair failures (i.e. Geometries beyond possible repair) + \param err_msg if this variable is not NULL and the return status is ZERO + (failure), an appropriate error message will be returned + + \sa sanitize_all_geometry_columns, check_geometry_column, + check_all_geometry_columns, sanitize_geometry_column + + \note this function will attempt to make valid all invalid geometries + found within all Geometry Columns (vector layers); a temporary table is + required so to support each input table. + \n if the process has full success the temprary table will be deleted; + otherwise it will be preserved for further inspection. + a HTML report will be produced as well. + \n an eventual error message returned via err_msg requires to be deallocated + by invoking free()\n + reentrant and thread-safe. + + \return 0 on failure, any other value on success + */ + SPATIALITE_DECLARE int sanitize_all_geometry_columns_r (const void *p_cache, + sqlite3 * sqlite, + const char + *tmp_prefix, + const char + *output_dir, + int *not_repaired, + char **err_msg); + + SPATIALITE_DECLARE int gaiaGPKG2Spatialite (sqlite3 * handle_in, + const char *gpkg_in_path, + sqlite3 * handle_out, + const char *splite_out_path); + SPATIALITE_DECLARE int gaiaSpatialite2GPKG (sqlite3 * handle_in, + const char *splite_in_path, + sqlite3 * handle_out, + const char *gpkg_out_path); + +#ifdef __cplusplus +} +#endif + +#endif /* _SPATIALITE_H */ diff --git a/src/spatialite/src/headers/spatialite/debug.h b/src/spatialite/src/headers/spatialite/debug.h new file mode 100644 index 0000000..8d5a0b0 --- /dev/null +++ b/src/spatialite/src/headers/spatialite/debug.h @@ -0,0 +1,77 @@ +/* + debug.h -- abstract defs for standard output functions + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2012-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Pepijn Van Eeckhoudt <pepijnvaneeckhoudt@luciad.com> + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#ifndef SPATIALITE_DEBUG_H +#define SPATIALITE_DEBUG_H + +#ifdef __ANDROID__ /* Android specific */ + +#include <android/log.h> + +#ifdef DEBUG +#define spatialite_d(...) +#else +#define spatialite_d(...) __android_log_print(ANDROID_LOG_DEBUG, "Spatialite", __VA_ARGS__) +#endif + +#define spatialite_i(...) __android_log_print(ANDROID_LOG_INFO, "Spatialite", __VA_ARGS__) +#define spatialite_e(...) __android_log_print(ANDROID_LOG_ERROR, "Spatialite", __VA_ARGS__) + +#else /* any other standard platform (Win, Linux, Mac) */ + +#include <stdio.h> + +#ifdef DEBUG +#define spatialite_d(...) +#else +#define spatialite_d(...) fprintf(stdout, __VA_ARGS__) +#endif + +#define spatialite_i(...) fprintf(stdout, __VA_ARGS__) +#define spatialite_e(...) fprintf(stderr, __VA_ARGS__) + +#endif /* platform specific */ + +#endif diff --git a/src/spatialite/src/headers/spatialite/gaiaaux.h b/src/spatialite/src/headers/spatialite/gaiaaux.h new file mode 100644 index 0000000..38d8605 --- /dev/null +++ b/src/spatialite/src/headers/spatialite/gaiaaux.h @@ -0,0 +1,405 @@ +/* + gaiaaux.h -- Gaia common utility functions + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +/** + \file gaiaaux.h + + Auxiliary/helper functions + */ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#ifdef DLL_EXPORT +#define GAIAAUX_DECLARE __declspec(dllexport) +#else +#define GAIAAUX_DECLARE extern +#endif +#endif + +#ifndef _GAIAAUX_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _GAIAAUX_H +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* constants */ +/** SQL single quoted string (text constant) */ +#define GAIA_SQL_SINGLE_QUOTE 1001 +/** SQL double quoted string (SQL name) */ +#define GAIA_SQL_DOUBLE_QUOTE 1002 + +/* function prototypes */ + +/** + Retrieves the Locale Charset + + \return the GNU ICONV name identifying the locale charset + */ + GAIAAUX_DECLARE const char *gaiaGetLocaleCharset (void); + +/** + Converts a text string from one charset to another + + \param buf the text string to be converted + \param fromCs the GNU ICONV name identifying the input charset + \param toCs the GNU ICONV name identifying the output charset + + \return 0 on failure, any other value on success. + + \note this function uses an internal buffer limited to 64KB; + so it's not safe passing extremely huge-sized text string. + */ + GAIAAUX_DECLARE int gaiaConvertCharset (char **buf, const char *fromCs, + const char *toCs); + +/** + Creates a persistent UTF8 converter object + + \param fromCS the GNU ICONV name identifying the input charset + + \return the handle of the converter object, or NULL on failure + + \sa gaiaFreeUTF8Converter + + \note you must properly destroy the converter object + when it isn't any longer used. + */ + GAIAAUX_DECLARE void *gaiaCreateUTF8Converter (const char *fromCS); + +/** + Destroys an UTF8 converter object + + \param cvtCS the handle identifying the UTF8 convert object + (returned by a previous call to gaiaCreateUTF8Converter). + + \sa gaiaCreateUTF8Converter + */ + GAIAAUX_DECLARE void gaiaFreeUTF8Converter (void *cvtCS); + +/** + Converts a text string to UTF8 + + \param cvtCS the handle identifying the UTF8 convert object + (returned by a previous call to gaiaCreateUTF8Converter). + \param buf the input text string + \param len length (in bytes) of input string + \param err on completion will contain 0 on success, any other value on failure + + \return the null-terminated UTF8 encoded string: NULL on failure + + \sa gaiaCreateUTF8Converter, gaiaFreeUTF8Converter + + \note this function can safely handle strings of arbitrary length, + and will return the converted string into a dynamically allocated buffer + created by malloc(). + You are required to explicitly free() any string returned by this function. + */ + GAIAAUX_DECLARE char *gaiaConvertToUTF8 (void *cvtCS, const char *buf, + int len, int *err); + +/** + Checks if a name is a reserved SQLite name + + \param name the name to be checked + + \return 0 if no: any other value if yes + + \sa gaiaIsReservedSqlName, gaiaIllegalSqlName + */ + GAIAAUX_DECLARE int gaiaIsReservedSqliteName (const char *name); + +/** + Checks if a name is a reserved SQL name + + \param name the name to be checked + + \return 0 if no: any other value if yes + + \sa gaiaIsReservedSqliteName, gaiaIllegalSqlName + */ + GAIAAUX_DECLARE int gaiaIsReservedSqlName (const char *name); + +/** + Checks if a name is an illegal SQL name + + \param name the name to be checked + + \return 0 if no: any other value if yes + + \sa gaiaIsReservedSqliteName, gaiaIsReservedSqlName + */ + GAIAAUX_DECLARE int gaiaIllegalSqlName (const char *name); + +/** + Properly formats an SQL text constant + + \param value the text string to be formatted + + \return the formatted string: NULL on failure + + \sa gaiaQuotedSql, gaiaDequotedSql + + \note this function simply is a convenience method corresponding to: + gaiaQuotedSQL(value, GAIA_SQL_SINGLE_QUOTE); + + \remark passing a string like "Sant'Andrea" will return 'Sant''Andrea' + */ + GAIAAUX_DECLARE char *gaiaSingleQuotedSql (const char *value); + +/** + Properly formats an SQL name + + \param value the SQL name to be formatted + + \return the formatted string: NULL on failure + + \sa gaiaQuotedSql, gaiaDequotedSql + + \note this function simply is a convenience method corresponding to: + gaiaQuotedSQL(value, GAIA_SQL_DOUBLE_QUOTE); + + \remark passing a string like "Sant\"Andrea" will return "Sant""Andrea" + */ + GAIAAUX_DECLARE char *gaiaDoubleQuotedSql (const char *value); + +/** + Properly formats an SQL generic string + + \param value the string to be formatted + \param quote GAIA_SQL_SINGLE_QUOTE or GAIA_SQL_DOUBLE_QUOTE + + \return the formatted string: NULL on failure + + \sa gaiaSingleQuotedSql, gaiaDoubleQuotedSql, gaiaDequotedSql + + \note this function can safely handle strings of arbitrary length, + and will return the formatted string into a dynamically allocated buffer + created by malloc(). + You are required to explicitly free() any string returned by this function. + */ + GAIAAUX_DECLARE char *gaiaQuotedSql (const char *value, int quote); + +/** + Properly formats an SQL generic string (dequoting) + + \param value the string to be dequoted + + \return the formatted string: NULL on failure + + \sa gaiaSingleQuotedSql, gaiaDoubleQuotedSql, gaiaQuotedSql + + \note this function can safely handle strings of arbitrary length, + and will return the formatted string into a dynamically allocated buffer + created by malloc(). + You are required to explicitly free() any string returned by this function. + */ + GAIAAUX_DECLARE char *gaiaDequotedSql (const char *value); + +/* +/ DEPRECATED FUNCTION: gaiaCleanSqlString() +/ this function must not be used for any new project +/ it's still maintained for backward compatibility, +/ but will be probably removed in future versions +*/ + +/** + deprecated function + + \param value the string to be formatted + + \sa gaiaQuotedSql + + \note this function is still supported simply for backward compatibility. + it's intrinsically unsafe (passing huge strings potentially leads to + buffer overflows) and you are strongly encouraged to use gaiaQuotedSql() + as a safest replacement. + */ + GAIAAUX_DECLARE void gaiaCleanSqlString (char *value); + +/** + SQL log: statement start + + \param sqlite handle of the current DB connection + \param user_agent name of the invoking application, e.g. "spatialite_gui" or "spatialite CLI" + \param utf8Sql the SQL statement bein executed + \param sqllog_pk after completion this variable will contain the value + of the Primary Key identifying the corresponding Log event + + \sa gaiaUpdateSqlLog + + \note this function inserts an \b event into the SQL Log, and + is expected to be invoked immediately \b before executing the SQL + statement itself. + */ + GAIAAUX_DECLARE void gaiaInsertIntoSqlLog (sqlite3 * sqlite, + const char *user_agent, + const char *utf8Sql, + sqlite3_int64 * sqllog_pk); + +/** + SQL log: statement start + + \param sqlite handle of the current DB connection + \param sqllog_pk the Primary Key identifying the corresponding Log event. + \n expected to be exactely the same returned by the most recent call to gaiaInsertIntoSqlLog() + \param success expected to be TRUE if the SQL statement was succesfully executed. + \param errMsg expected to be the error message returned by SQLite on failure, NULL on success. + + \sa gaiaInsertIntoSqlLog + + \note this function completes an \b event inserted into the SQL Log, and + is expected to be invoked immediately \b after executing the SQL + statement itself. + */ + GAIAAUX_DECLARE void gaiaUpdateSqlLog (sqlite3 * sqlite, + sqlite3_int64 sqllog_pk, int success, + const char *errMsg); + +/** + Creates a persistent MD5 checksum object + + \return the handle of an MD5 checksum object, or NULL on failure + + \sa gaiaFreeMD5Checksum, gaiaUpdateMD5Checksum, gaiaFinalizeMD5Checksum + + \note you must properly destroy the MD5 object + when it isn't any longer used. + */ + GAIAAUX_DECLARE void *gaiaCreateMD5Checksum (void); + +/** + Destroys an MD5 checksum object + + \param md5 the handle of the MD5 checksum object (returned by + a previous call to gaiaCreateMD5Checksum). + + \sa gaiaCreateMD5Checksum + */ + GAIAAUX_DECLARE void gaiaFreeMD5Checksum (void *md5); + +/** + Updates an MD5 checksum object + + \param md5 the handle of the MD5 checksum object (returned by + a previous call to gaiaCreateMD5Checksum). + \param blob an arbitrary sequence of binary data + \param blob_size the length (in bytes) of the binary data + + \sa gaiaCreateMD5Checksum, gaiaFreeMD5Checksum, gaiaFinalizeMD5Checksum + + \note you can repeatedly invoke gaiaUpdateMD5Checksum more than a single + time and always using the same MD5 object. + In this case the final MD5 checksum returned by gaiaGetMD5Checsum will be + the total checksum for any data processed by the MD5 object since its + initialization. + */ + GAIAAUX_DECLARE void gaiaUpdateMD5Checksum (void *md5, + const unsigned char *blob, + int blob_len); + +/** + Return an MD5 checksum value + + \param md5 the handle of the MD5 checksum object (returned by + a previous call to gaiaCreateMD5Checksum). + + \return an hexadecimal text string representing the MD checksum: + NULL on failure + + \sa gaiaCreateMD5Checksum, gaiaUpdateMD5Checksum, gaiaFreeMD5Checksum + + \note this function will return the MD5 checksum into a dynamically allocated + buffer created by malloc(). + You are required to explicitly free() any string returned by this function. + + \note gaiaFinalizeMD5Checksum will implicitly reset the MD5 object to its + initial state. + */ + GAIAAUX_DECLARE char *gaiaFinalizeMD5Checksum (void *md5); + +/** + Return longitude and latitude angles from a DMS string + + \param dms a text string representing a valid DMS (Degrees/Minutes/Seconds) + expression. + \param longitude on completion this variable will contain the longitude angle + expressed in Decimal Degrees. + \param latitude on completion this variable will contain the latitude angle + expressed in Decimal Degrees. + + \return ZERO (FALSE) on failure, any other different value (TRUE) on success. + + \sa gaiaConvertToDMS + + \note this function will return a dynamically allocated buffer created + by malloc(). + You are required to explicitly free() any string returned by this function. + */ + GAIAAUX_DECLARE int gaiaParseDMS (const char *dms, double *longitude, + double *latitude); + +/** + Return a DMS string + + \param longitude the angle of longitude expressed in Decimal Degrees. + \param latitude the angle of latitude expressed in Decimal Degrees. + + \return the corresponding DMS (Degrees/Minutes/Seconds) text string, + or NULL on failure + + \sa gaiaLongitudeFromDMS, gaiaLatitudeFromDMS + + \note this function will return a dynamically allocated buffer created + by malloc(). + You are required to explicitly free() any string returned by this function. + */ + GAIAAUX_DECLARE char *gaiaConvertToDMS (double longitude, double latitude); + +#ifdef __cplusplus +} +#endif + +#endif /* _GAIAAUX_H */ diff --git a/src/spatialite/src/headers/spatialite/gaiaexif.h b/src/spatialite/src/headers/spatialite/gaiaexif.h new file mode 100644 index 0000000..a62f40a --- /dev/null +++ b/src/spatialite/src/headers/spatialite/gaiaexif.h @@ -0,0 +1,653 @@ +/* + gaiaexif.h -- Gaia common EXIF Metadata reading functions + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +/** + \file gaiaexif.h + + EXIF/image: supporting functions and constants + */ + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#ifdef DLL_EXPORT +#define GAIAEXIF_DECLARE __declspec(dllexport) +#else +#define GAIAEXIF_DECLARE extern +#endif +#endif + +#ifndef _GAIAEXIF_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _GAIAEXIF_H +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* constants used for BLOB value types */ +/** generic hexadecimal BLOB */ +#define GAIA_HEX_BLOB 0 +/** this BLOB does actually contain a GIF image */ +#define GAIA_GIF_BLOB 1 +/** this BLOB does actually containt a PNG image */ +#define GAIA_PNG_BLOB 2 +/** this BLOB does actually contain a generic JPEG image */ +#define GAIA_JPEG_BLOB 3 +/** this BLOB does actually contain a JPEG-EXIF image */ +#define GAIA_EXIF_BLOB 4 +/** this BLOB does actually contain a JPEG-EXIF image including GPS data */ +#define GAIA_EXIF_GPS_BLOB 5 +/** this BLOB does actually contain a ZIP compressed file */ +#define GAIA_ZIP_BLOB 6 +/** this BLOB does actually contain a PDF document */ +#define GAIA_PDF_BLOB 7 +/** this BLOB does actually contain a SpatiaLite Geometry */ +#define GAIA_GEOMETRY_BLOB 8 +/** this BLOB does actually contain a TIFF image */ +#define GAIA_TIFF_BLOB 9 +/** this BLOB does actually contain a WebP image */ +#define GAIA_WEBP_BLOB 10 +/** this BLOB does actually contain a SpatiaLite XmlBLOB */ +#define GAIA_XML_BLOB 11 +/** this BLOB does actually contain a GPKG Geometry */ +#define GAIA_GPB_BLOB 12 + +/* constants used for EXIF value types */ +/** unrecognized EXIF value */ +#define GAIA_EXIF_NONE 0 +/** EXIF value of the BYTE type */ +#define GAIA_EXIF_BYTE 1 +/** EXIF value of the SHORT type */ +#define GAIA_EXIF_SHORT 2 +/** EXIF value of the STRING type */ +#define GAIA_EXIF_STRING 3 +/** EXIF value of the LONG type */ +#define GAIA_EXIF_LONG 4 +/** EXIF value of the RATIONAL type */ +#define GAIA_EXIF_RATIONAL 5 +/** EXIF value of the SLONG type */ +#define GAIA_EXIF_SLONG 9 +/** EXIF value of the SRATIONAL type */ +#define GAIA_EXIF_SRATIONAL 10 + +/** + Container for an EXIF tag + */ + typedef struct gaiaExifTagStruct + { +/* an EXIF TAG */ + /** GPS data included (0/1) */ + char Gps; + /** EXIF tag ID */ + unsigned short TagId; + /** EXIF value type */ + unsigned short Type; + /** number of values */ + unsigned short Count; + /** tag offset [big- little-endian encoded] */ + unsigned char TagOffset[4]; + /** array of BYTE values */ + unsigned char *ByteValue; + /** array of STRING values */ + char *StringValue; + /** array of SHORT values */ + unsigned short *ShortValues; + /** array of LONG values ] */ + unsigned int *LongValues; + /** array of RATIONAL values [numerators] */ + unsigned int *LongRationals1; + /** array of RATIONAL values [denominators] */ + unsigned int *LongRationals2; + /** array of Signed SHORT values */ + short *SignedShortValues; + /** array of Signed LONG values */ + int *SignedLongValues; + /** array of Signed RATIONAL values [numerators] */ + int *SignedLongRationals1; + /** array of Signed RATIONAL values [denominators] */ + int *SignedLongRationals2; + /** array of FLOAT values */ + float *FloatValues; + /** array of DOUBLE values */ + double *DoubleValues; + /** pointer to next item into the linked list */ + struct gaiaExifTagStruct *Next; + } gaiaExifTag; +/** + Typedef for EXIF tag structure. + + \sa gaiaExifTagStruct + */ + typedef gaiaExifTag *gaiaExifTagPtr; + +/** + Container for a list of EXIF tags + */ + typedef struct gaiaExifTagListStruct + { +/* an EXIF TAG LIST */ + /** pointer to first item into the linked list */ + gaiaExifTagPtr First; + /** pointer to the last item into the linked list */ + gaiaExifTagPtr Last; + /** number of items */ + int NumTags; + /** an array of pointers to items */ + gaiaExifTagPtr *TagsArray; + } gaiaExifTagList; +/** + Typedef for EXIF tag structure + + \sa gaiaExifTagListStruct + */ + typedef gaiaExifTagList *gaiaExifTagListPtr; + +/* function prototipes */ + +/** + Creates a list of EXIF tags by parsing a BLOB of the JPEG-EXIF type + + \param blob the BLOB to be parsed + \param size the BLOB size (in bytes) + + \return a list of EXIF tags: or NULL if any error is encountered + + \sa gaiaExifTagsFree + + \note you must explicitly destroy the list when it's any longer used. + */ + GAIAEXIF_DECLARE gaiaExifTagListPtr gaiaGetExifTags (const unsigned char + *blob, int size); + +/** + Destroy a list of EXIF tags + + \param tag_list the list to be destroied + + \sa gaiaGetExifTags + + \note the pointer passed to this function must be one returned by a + previous call to gaiaGetExifTags + */ + GAIAEXIF_DECLARE void gaiaExifTagsFree (gaiaExifTagListPtr tag_list); + +/** + Return the total number of EXIF tags into the list + + \param tag_list pointer to an EXIF tag list. + + \return the EXIF tag count. + + \sa gaiaGetExifTags, gaiaExifTagsFree + */ + GAIAEXIF_DECLARE int gaiaGetExifTagsCount (gaiaExifTagListPtr tag_list); + +/** + Retrieves an EXIF tag by its relative position into the list + + \param tag_list pointer to an EXIF tag list. + \param pos relative item position [first item is 0] + + \return a pointer to the corresponding EXIF tag: NULL if not found + + \sa gaiaGetExifTags, gaiaExifTagsFree, gaiaExifTagsCount + */ + GAIAEXIF_DECLARE gaiaExifTagPtr gaiaGetExifTagByPos (gaiaExifTagListPtr + tag_list, + const int pos); + +/** + Return the total number of EXIF tags into the list + + \param tag_list pointer to an EXIF tag list. + + \return the EXIF tag count. + + \sa gaiaGetExifTags, gaiaExifTagsFree + */ + GAIAEXIF_DECLARE int gaiaGetExifTagsCount (gaiaExifTagListPtr tag_list); + +/** + Retrieves an EXIF tag by its Tag ID + + \param tag_list pointer to an EXIF tag list. + \param tag_id the Tag ID to be found + + \return a pointer to the corresponding EXIF tag: NULL if not found + + \sa gaiaGetExifTags, gaiaExifTagsFree + */ + GAIAEXIF_DECLARE gaiaExifTagPtr gaiaGetExifTagById (const gaiaExifTagListPtr + tag_list, + const unsigned short + tag_id); + +/** + Retrieves an EXIF-GPS tag by its Tag ID + + \param tag_list pointer to an EXIF tag list. + \param tag_id the GPS Tag ID to be found + + \return a pointer to the corresponding EXIF tag: NULL if not found + + \sa gaiaGetExifTags, gaiaExifTagsFree + */ + GAIAEXIF_DECLARE gaiaExifTagPtr gaiaGetExifGpsTagById (const + gaiaExifTagListPtr + tag_list, + const unsigned short + tag_id); + +/** + Retrieves an EXIF tag by its name + + \param tag_list pointer to an EXIF tag list. + \param tag_name the Tag Name to be found + + \return a pointer to the corresponding EXIF tag: NULL if not found + + \sa gaiaGetExifTags, gaiaExifTagsFree + */ + GAIAEXIF_DECLARE gaiaExifTagPtr gaiaGetExifTagByName (const + gaiaExifTagListPtr + tag_list, + const char *tag_name); + +/** + Return the Tag ID from an EXIF tag + + \param tag pointer to an EXIF tag + + \return the Tag ID + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName + */ + GAIAEXIF_DECLARE unsigned short gaiaExifTagGetId (const gaiaExifTagPtr tag); + +/** + Return the Tag Name from an EXIF tag + + \param tag pointer to an EXIF tag + \param tag_name receiving buffer: the Tag Name will be copied here + \param len length of the receiving buffer + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName + */ + GAIAEXIF_DECLARE void gaiaExifTagGetName (const gaiaExifTagPtr tag, + char *tag_name, int len); + +/** + Checks if an EXIF tag actually is an EXIF-GPS tag + + \param tag pointer to an EXIF tag + + \return 0 if false: any other value if true + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName + */ + GAIAEXIF_DECLARE int gaiaIsExifGpsTag (const gaiaExifTagPtr tag); + +/** + Return the value type for an EXIF tag + + \param tag pointer to an EXIF tag + + \return the value type: one of GAIA_EXIF_NONE, GAIA_EXIF_BYTE, + GAIA_EXIF_SHORT, GAIA_EXIF_STRING, GAIA_EXIF_LONG, GAIA_EXIF_RATIONAL, + GAIA_EXIF_SLONG, GAIA_EXIF_SRATIONAL + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName + */ + GAIAEXIF_DECLARE unsigned short gaiaExifTagGetValueType (const + gaiaExifTagPtr + tag); + +/** + Return the total count of values from an EXIF tag + + \param tag pointer to an EXIF tag + + \return the number of available values + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName + */ + GAIAEXIF_DECLARE unsigned short gaiaExifTagGetNumValues (const + gaiaExifTagPtr + tag); + +/** + Return a BYTE value from an EXIF tag + + \param tag pointer to an EXIF tag. + \param ind value index [first value has index 0]. + \param ok on completion will contain 0 on failure: any other value on success. + + \return the BYTE value + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaExifTagGetValueType, gaiaExifTagGetNumValues + */ + GAIAEXIF_DECLARE unsigned char gaiaExifTagGetByteValue (const gaiaExifTagPtr + tag, const int ind, + int *ok); + +/** + Return a STRING value from an EXIF tag + + \param tag pointer to an EXIF tag. + \param str receiving buffer: the STRING value will be copied here. + \param len length of the receiving buffer + \param ok on completion will contain 0 on failure: any other value on success. + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaExifTagGetValueType, gaiaExifTagGetNumValues + */ + GAIAEXIF_DECLARE void gaiaExifTagGetStringValue (const gaiaExifTagPtr tag, + char *str, int len, + int *ok); + +/** + Return a SHORT value from an EXIF tag + + \param tag pointer to an EXIF tag. + \param ind value index [first value has index 0]. + \param ok on completion will contain 0 on failure: any other value on success. + + \return the SHORT value + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaExifTagGetValueType, gaiaExifTagGetNumValues + */ + GAIAEXIF_DECLARE unsigned short gaiaExifTagGetShortValue (const + gaiaExifTagPtr + tag, + const int ind, + int *ok); + +/** + Return a LONG value from an EXIF tag + + \param tag pointer to an EXIF tag. + \param ind value index [first value has index 0]. + \param ok on completion will contain 0 on failure: any other value on success. + + \return the LONG value + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaExifTagGetValueType, gaiaExifTagGetNumValues + */ + GAIAEXIF_DECLARE unsigned int gaiaExifTagGetLongValue (const gaiaExifTagPtr + tag, const int ind, + int *ok); + +/** + Return a RATIONAL [numerator] value from an EXIF tag + + \param tag pointer to an EXIF tag. + \param ind value index [first value has index 0]. + \param ok on completion will contain 0 on failure: any other value on success. + + \return the RATIONAL [numerator] value + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaExifTagGetValueType, gaiaExifTagGetNumValues + */ + GAIAEXIF_DECLARE unsigned int gaiaExifTagGetRational1Value (const + gaiaExifTagPtr + tag, + const int ind, + int *ok); + +/** + Return a RATIONAL [denominator] value from an EXIF tag + + \param tag pointer to an EXIF tag. + \param ind value index [first value has index 0]. + \param ok on completion will contain 0 on failure: any other value on success. + + \return the RATIONAL [denominator] value + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaExifTagGetValueType, gaiaExifTagGetNumValues + */ + GAIAEXIF_DECLARE unsigned int gaiaExifTagGetRational2Value (const + gaiaExifTagPtr + tag, + const int ind, + int *ok); + +/** + Return a RATIONAL value from an EXIF tag + + \param tag pointer to an EXIF tag. + \param ind value index [first value has index 0]. + \param ok on completion will contain 0 on failure: any other value on success. + + \return the RATIONAL value + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaExifTagGetValueType, gaiaExifTagGetNumValues + */ + GAIAEXIF_DECLARE double gaiaExifTagGetRationalValue (const gaiaExifTagPtr + tag, const int ind, + int *ok); + +/** + Return a Signed SHORT value from an EXIF tag + + \param tag pointer to an EXIF tag. + \param ind value index [first value has index 0]. + \param ok on completion will contain 0 on failure: any other value on success. + + \return the Signed SHORT value + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaExifTagGetValueType, gaiaExifTagGetNumValues + */ + GAIAEXIF_DECLARE short gaiaExifTagGetSignedShortValue (const gaiaExifTagPtr + tag, const int ind, + int *ok); + +/** + Return a Signed LONG value from an EXIF tag + + \param tag pointer to an EXIF tag. + \param ind value index [first value has index 0]. + \param ok on completion will contain 0 on failure: any other value on success. + + \return the Signed LONG value + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaExifTagGetValueType, gaiaExifTagGetNumValues + */ + GAIAEXIF_DECLARE int gaiaExifTagGetSignedLongValue (const gaiaExifTagPtr + tag, const int ind, + int *ok); + +/** + Return a SRATIONAL [numerator] value from an EXIF tag + + \param tag pointer to an EXIF tag. + \param ind value index [first value has index 0]. + \param ok on completion will contain 0 on failure: any other value on success. + + \return the SRATIONAL [numerator] value + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaExifTagGetValueType, gaiaExifTagGetNumValues + */ + GAIAEXIF_DECLARE int gaiaExifTagGetSignedRational1Value (const + gaiaExifTagPtr tag, + const int ind, + int *ok); + +/** + Return a SRATIONAL [denominator] value from an EXIF tag + + \param tag pointer to an EXIF tag. + \param ind value index [first value has index 0]. + \param ok on completion will contain 0 on failure: any other value on success. + + \return the SRATIONAL [denominator] value + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaExifTagGetValueType, gaiaExifTagGetNumValues + */ + GAIAEXIF_DECLARE int gaiaExifTagGetSignedRational2Value (const + gaiaExifTagPtr tag, + const int ind, + int *ok); + +/** + Return a Signed RATIONAL value from an EXIF tag + + \param tag pointer to an EXIF tag. + \param ind value index [first value has index 0]. + \param ok on completion will contain 0 on failure: any other value on success. + + \return the Signed RATIONAL value + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaExifTagGetValueType, gaiaExifTagGetNumValues + */ + GAIAEXIF_DECLARE double gaiaExifTagGetSignedRationalValue (const + gaiaExifTagPtr + tag, + const int ind, + int *ok); + +/** + Return a FLOAT value from an EXIF tag + + \param tag pointer to an EXIF tag. + \param ind value index [first value has index 0]. + \param ok on completion will contain 0 on failure: any other value on success. + + \return the FLOAT value + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaExifTagGetValueType, gaiaExifTagGetNumValues + */ + GAIAEXIF_DECLARE float gaiaExifTagGetFloatValue (const gaiaExifTagPtr tag, + const int ind, int *ok); + +/** + Return a DOUBLE value from an EXIF tag + + \param tag pointer to an EXIF tag. + \param ind value index [first value has index 0]. + \param ok on completion will contain 0 on failure: any other value on success. + + \return the DOUBLE value + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaExifTagGetValueType, gaiaExifTagGetNumValues + */ + GAIAEXIF_DECLARE double gaiaExifTagGetDoubleValue (const gaiaExifTagPtr tag, + const int ind, int *ok); + +/** + Return a human readable description from an EXIF tag + + \param tag pointer to an EXIF tag. + \param str receiving buffer: the STRING value will be copied here. + \param len length of the receiving buffer + \param ok on completion will contain 0 on failure: any other value on success. + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName + */ + GAIAEXIF_DECLARE void gaiaExifTagGetHumanReadable (const gaiaExifTagPtr tag, + char *str, int len, + int *ok); + +/** + Attempts to guess the actual content-type of some BLOB + + \param blob the BLOB to be parsed + \param size length of the BLOB (in bytes) + + \return the BLOB type: one of GAIA_HEX_BLOB, GAIA_GIF_BLOB, GAIA_PNG_BLOB, + GAIA_JPEG_BLOB, GAIA_EXIF_BLOB, GAIA_EXIF_GPS_BLOB, GAIA_ZIP_BLOB, + GAIA_PDF_BLOB, GAIA_GEOMETRY_BLOB, GAIA_TIFF_BLOB, GAIA_WEBP_BLOB, + GAIA_XML_BLOB, GAIA_GPB_BLOB + */ + GAIAEXIF_DECLARE int gaiaGuessBlobType (const unsigned char *blob, + int size); +/** + Return longitude and latitude from an EXIF-GPS tag + + \param blob the BLOB to be parsed + \param size length of the BLOB (in bytes) + \param longitude on success will contain the longitude coordinate + \param latitude on success will contain the latitude coordinate + + \return 0 on failure: any other value on success + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaIsExifGpsTag + */ + GAIAEXIF_DECLARE int gaiaGetGpsCoords (const unsigned char *blob, int size, + double *longitude, double *latitude); +/** + Return a text string representing DMS coordinates from an EXIF-GPS tag + + \param blob the BLOB to be parsed + \param size length of the BLOB (in bytes) + \param latlong receiving buffer: the text string will be copied here. + \param ll_size length of the receiving buffer + + \return 0 on failure: any other value on success + + \sa gaiaGetExifTagById, gaiaGetExifGpsTagById, gaiaGetExifTagByName, + gaiaIsExifGpsTag + */ + GAIAEXIF_DECLARE int gaiaGetGpsLatLong (const unsigned char *blob, int size, + char *latlong, int ll_size); + +#ifdef __cplusplus +} +#endif + +#endif /* _GAIAEXIF_H */ diff --git a/src/spatialite/src/headers/spatialite/gaiageo.h b/src/spatialite/src/headers/spatialite/gaiageo.h new file mode 100644 index 0000000..7ddb412 --- /dev/null +++ b/src/spatialite/src/headers/spatialite/gaiageo.h @@ -0,0 +1,77 @@ +/* + gaiageo.h -- Gaia common support for geometries + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Klaus Foerster klaus.foerster@svg.cc + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + + +/** + \file gaiageo.h + + Geometry handling functions and constants + */ + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +/* stdio.h included for FILE objects. */ +#include <stdio.h> +#ifdef DLL_EXPORT +#define GAIAGEO_DECLARE __declspec(dllexport) +#else +#define GAIAGEO_DECLARE extern +#endif +#endif + +#ifndef _GAIAGEO_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _GAIAGEO_H +#endif + +#include "gg_const.h" +#include "gg_structs.h" +#include "gg_core.h" +#include "gg_mbr.h" +#include "gg_formats.h" +#include "gg_dynamic.h" +#include "gg_advanced.h" +#include "gg_xml.h" + +#endif /* _GAIAGEO_H */ diff --git a/src/spatialite/src/headers/spatialite/geopackage.h b/src/spatialite/src/headers/spatialite/geopackage.h new file mode 100644 index 0000000..e042fc6 --- /dev/null +++ b/src/spatialite/src/headers/spatialite/geopackage.h @@ -0,0 +1,184 @@ +/* + + GeoPackage extensions for SpatiaLite / SQLite + + version 4.2, 2014 July 25 + +Version: MPL 1.1/GPL 2.0/LGPL 2.1 + +The contents of this file are subject to the Mozilla Public License Version +1.1 (the "License"); you may not use this file except in compliance with +the License. You may obtain a copy of the License at +http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage Extensions + +The Initial Developer of the Original Code is Brad Hards (bradh@frogmouth.net) + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Sandro Furieri (a.furieri@lqt.it) + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +/** + \file geopackage.h + + GeoPackage: supporting functions and constants + */ + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#ifdef DLL_EXPORT +#define GEOPACKAGE_DECLARE __declspec(dllexport) +#else +#define GEOPACKAGE_DECLARE extern +#endif +#endif + +#ifndef _GEOPACKAGE_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _GEOPACKAGE_H +#endif + +#include "sqlite.h" + +#ifdef __cplusplus +extern "C" +{ +#endif + +#include <spatialite/gaiageo.h> + +/* Internal geopackage SQL function implementation */ + GEOPACKAGE_DECLARE void fnct_gpkgCreateBaseTables (sqlite3_context * + context, int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgCreateTilesTable (sqlite3_context * + context, int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgCreateTilesZoomLevel (sqlite3_context * + context, int argc, + sqlite3_value ** + argv); + GEOPACKAGE_DECLARE void fnct_gpkgInsertEpsgSRID (sqlite3_context * + context, int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgAddTileTriggers (sqlite3_context * context, + int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgGetNormalRow (sqlite3_context * context, + int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgGetNormalZoom (sqlite3_context * context, + int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgGetImageType (sqlite3_context * context, + int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgAddGeometryColumn (sqlite3_context * + context, int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgMakePoint (sqlite3_context * + context, int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgMakePointWithSRID (sqlite3_context * + context, int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgMakePointZ (sqlite3_context * + context, int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgMakePointZWithSRID (sqlite3_context * + context, int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgMakePointM (sqlite3_context * + context, int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgMakePointMWithSRID (sqlite3_context * + context, int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgMakePointZM (sqlite3_context * + context, int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgMakePointZMWithSRID (sqlite3_context * + context, int argc, + sqlite3_value ** + argv); + GEOPACKAGE_DECLARE void fnct_ToGPB (sqlite3_context * context, int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_GeomFromGPB (sqlite3_context * context, + int argc, sqlite3_value ** argv); + + GEOPACKAGE_DECLARE gaiaGeomCollPtr gaiaFromGeoPackageGeometryBlob (const + unsigned + char + *gpb, + unsigned + int + gpb_len); + +/* Sandro Furieri - 2014-05-19 */ + GEOPACKAGE_DECLARE int gaiaIsValidGPB (const unsigned char *gpb, + int gpb_len); + GEOPACKAGE_DECLARE int gaiaGetSridFromGPB (const unsigned char *gpb, + int gpb_len); + GEOPACKAGE_DECLARE int gaiaIsEmptyGPB (const unsigned char *gpb, + int gpb_len); + GEOPACKAGE_DECLARE int gaiaGetEnvelopeFromGPB (const unsigned char *gpb, + int gpb_len, double *min_x, + double *max_x, double *min_y, + double *max_y, int *has_z, + double *min_z, double *max_z, + int *has_m, double *min_m, + double *max_m); + GEOPACKAGE_DECLARE char *gaiaGetGeometryTypeFromGPB (const unsigned char + *gpb, int gpb_len); + GEOPACKAGE_DECLARE void fnct_IsValidGPB (sqlite3_context * context, + int argc, sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_GPKG_IsAssignable (sqlite3_context * context, + int argc, + sqlite3_value ** argv); + GEOPACKAGE_DECLARE void fnct_gpkgAddGeometryTriggers (sqlite3_context * + context, int argc, + sqlite3_value ** + argv); + GEOPACKAGE_DECLARE void fnct_gpkgAddGeometryTriggers (sqlite3_context * + context, int argc, + sqlite3_value ** + argv); + GEOPACKAGE_DECLARE void fnct_gpkgAddSpatialIndex (sqlite3_context * context, + int argc, + sqlite3_value ** argv); +/* end Sandro Furieri - 2014-05-19 */ + + +/* Markers for unused arguments / variable */ +#if __GNUC__ +#define UNUSED __attribute__ ((__unused__)) +#else +#define UNUSED +#endif + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/src/spatialite/src/headers/spatialite/gg_advanced.h b/src/spatialite/src/headers/spatialite/gg_advanced.h new file mode 100644 index 0000000..db8014a --- /dev/null +++ b/src/spatialite/src/headers/spatialite/gg_advanced.h @@ -0,0 +1,3697 @@ +/* + gg_advanced.h -- Gaia common support for geometries: advanced + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +/* + +CREDITS: + +this module has been partly funded by: +Regione Toscana - Settore Sistema Informativo Territoriale ed Ambientale +(wrapping liblwgeom APIs) + +*/ + + +/** + \file gg_advanced.h + + Geometry handling functions: advanced + */ + +#ifndef _GG_ADVANCED_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _GG_ADVANCED_H +#endif + +/** Gaia-to-GEOS: all geometries */ +#define GAIA2GEOS_ALL 0 + +/** Gaia-to-GEOS: only geometries of the Point type */ +#define GAIA2GEOS_ONLY_POINTS 1 + +/** Gaia-to-GEOS: only geometries of the Linestring type */ +#define GAIA2GEOS_ONLY_LINESTRINGS 2 + +/** Gaia-to-GEOS: only geometries of the Polygon type */ +#define GAIA2GEOS_ONLY_POLYGONS 3 + +#ifdef __cplusplus +extern "C" +{ +#endif + +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#ifndef OMIT_PROJ /* including PROJ.4 */ +#endif + +/** + Converts and angle from Radians into Degrees + \param rads the angle measured in Radians. + + \return the angle measured in Degrees. + + \sa gaiaDegsToRads + + \remark \b PROJ.4 support required + */ + GAIAGEO_DECLARE double gaiaRadsToDegs (double rads); + +/** + Converts and angle from Degrees into Radians + \param degs the angle measured in Degrees. + + \return the angle measured in Radians. + + \sa gaiaRadsToDegs + + \remark \b PROJ.4 support required + */ + GAIAGEO_DECLARE double gaiaDegsToRads (double degs); + +/** + Tansforms a Geometry object into a different Reference System + [aka Reprojection] + + \param org pointer to input Geometry object. + \param proj_from geodetic parameters string [EPSG format] qualifying the + input Reference System + \param proj_to geodetic parameters string [EPSG format] qualifying the + output Reference System + + \return the pointer to newly created Geometry object: NULL on failure. + + \sa gaiaTransform_r, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, this including any Geometry returned by gaiaGeometryTransform()\n + not reentrant and thread unsafe. + + \remark \b PROJ.4 support required + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaTransform (gaiaGeomCollPtr org, + char *proj_from, + char *proj_to); + +/** + Tansforms a Geometry object into a different Reference System + [aka Reprojection] + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param org pointer to input Geometry object. + \param proj_from geodetic parameters string [EPSG format] qualifying the + input Reference System + \param proj_to geodetic parameters string [EPSG format] qualifying the + output Reference System + + \return the pointer to newly created Geometry object: NULL on failure. + + \sa gaiaTransform, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, this including any Geometry returned by gaiaGeometryTransform()\n + reentrant and thread-safe. + + \remark \b PROJ.4 support required + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaTransform_r (const void *p_cache, + gaiaGeomCollPtr org, + char *proj_from, + char *proj_to); + +#endif /* end including PROJ.4 */ + +#ifndef OMIT_GEOS /* including GEOS */ + +/** + Resets the GEOS error and warning messages to an empty state + + \sa gaiaResetGeosMsg_r, + gaiaGetGeosErrorMsg, gaiaGetGeosWarningMsg, gaiaGeosAuxErrorMsg, + gaiaSetGeosErrorMsg, gaiaSetGeosWarningMsg, gaiaSetGeosAuxErrorMsg + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE void gaiaResetGeosMsg (void); + +/** + Resets the GEOS error and warning messages to an empty state + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + + \sa gaiaResetGeosMsg, + gaiaGetGeosErrorMsg, gaiaGetGeosWarningMsg, gaiaGeosAuxErrorMsg, + gaiaSetGeosErrorMsg, gaiaSetGeosWarningMsg, gaiaSetGeosAuxErrorMsg + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE void gaiaResetGeosMsg_r (const void *p_cache); + +/** + Return the latest GEOS error message (if any) + + \return the latest GEOS error message: an empty string if no error was + previoysly found. + + \sa gaiaGetGeosErrorMsg_r, + gaiaResetGeosMsg, gaiaGetGeosWarningMsg, gaiaGetGeosAuxErrorMsg, + gaiaSetGeosErrorMsg, gaiaSetGeosWarningMsg, gaiaSetGeosAuxErrorMsg, + gaiaCriticalPointFromGEOSmsg + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE const char *gaiaGetGeosErrorMsg (void); + +/** + Return the latest GEOS error message (if any) + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + + \return the latest GEOS error message: an empty string if no error was + previoysly found. + + \sa gaiaGetGeosErrorMsg, + gaiaResetGeosMsg, gaiaGetGeosWarningMsg, gaiaGetGeosAuxErrorMsg, + gaiaSetGeosErrorMsg, gaiaSetGeosWarningMsg, gaiaSetGeosAuxErrorMsg, + gaiaCriticalPointFromGEOSmsg + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE const char *gaiaGetGeosErrorMsg_r (const void *p_cache); + +/** + Return the latest GEOS warning message (if any) + + \return the latest GEOS warning message: an empty string if no warning was + previoysly found. + + \sa gaiaGetGeosWarningMsg_r, + gaiaResetGeosMsg, gaiaGetGeosErrorMsg, gaiaGetGeosAuxErrorMsg, + gaiaSetGeosErrorMsg, gaiaSetGeosWarningMsg, gaiaSetGeosAuxErrorMsg, + gaiaCriticalPointFromGEOSmsg + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE const char *gaiaGetGeosWarningMsg (void); + +/** + Return the latest GEOS warning message (if any) + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + + \return the latest GEOS warning message: an empty string if no warning was + previoysly found. + + \sa gaiaGetGeosWarningMsg, + gaiaResetGeosMsg, gaiaGetGeosErrorMsg, gaiaGetGeosAuxErrorMsg, + gaiaSetGeosErrorMsg, gaiaSetGeosWarningMsg, gaiaSetGeosAuxErrorMsg, + gaiaCriticalPointFromGEOSmsg + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE const char *gaiaGetGeosWarningMsg_r (const void *p_cache); + +/** + Return the latest GEOS (auxiliary) error message (if any) + + \return the latest GEOS (auxiliary) error message: an empty string if no + error was previoysly found. + + \sa gaiaGetGeosAuxErrorMsg_r, + gaiaResetGeosMsg, gaiaGetGeosErrorMsg, gaiaGetGeosWarningMsg, + gaiaSetGeosErrorMsg, gaiaSetGeosWarningMsg, gaiaSetGeosAuxErrorMsg + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE const char *gaiaGetGeosAuxErrorMsg (void); + +/** + Return the latest GEOS (auxiliary) error message (if any) + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + + \return the latest GEOS (auxiliary) error message: an empty string if no + error was previoysly found. + + \sa gaiaGetGeosAuxErrorMsg, + gaiaResetGeosMsg, gaiaGetGeosErrorMsg, gaiaGetGeosWarningMsg, + gaiaSetGeosErrorMsg, gaiaSetGeosWarningMsg, gaiaSetGeosAuxErrorMsg + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE const char *gaiaGetGeosAuxErrorMsg_r (const void *p_cache); + +/** + Attempts to (possibile) return a Point Geometry extracted from the latest + GEOS error / warning message + + \return a Point Geometry: NULL if no warning/error was previoysly found + or if the current GEOS message doesn't contains a critical Point. + + \sa gaiaCriticalPointFromGEOSmsg_r, + gaiaResetGeosMsg, gaiaGetGeosErrorMsg, gaiaGetGeosWarningMsg, + gaiaSetGeosErrorMsg, gaiaSetGeosWarningMsg, gaiaSetGeosAuxErrorMsg + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCriticalPointFromGEOSmsg (void); + +/** + Attempts to (possibile) return a Point Geometry extracted from the latest + GEOS error / warning message + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + + \return a Point Geometry: NULL if no warning/error was previoysly found + or if the current GEOS message doesn't contains a critical Point. + + \sa gaiaCriticalPointFromGEOSmsg_r, + gaiaResetGeosMsg, gaiaGetGeosErrorMsg, gaiaGetGeosWarningMsg, + gaiaSetGeosErrorMsg, gaiaSetGeosWarningMsg, gaiaSetGeosAuxErrorMsg + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCriticalPointFromGEOSmsg_r (const void + *p_cache); + +/** + Set the current GEOS error message + + \param msg the error message to be set. + + \sa gaiaSetGeosErrorMsg_r, + gaiaResetGeosMsg, gaiaGetGeosErrorMsg, gaiaGetGeosWarningMsg, + gaiaGetGeosAuxErrorMsg, gaiaSetGeosWarningMsg, gaiaSetGeosAuxErrorMsg + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE void gaiaSetGeosErrorMsg (const char *msg); + +/** + Set the current GEOS error message + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param msg the error message to be set. + + \sa gaiaSetGeosErrorMsg, + gaiaResetGeosMsg, gaiaGetGeosErrorMsg, gaiaGetGeosWarningMsg, + gaiaGetGeosAuxErrorMsg, gaiaSetGeosWarningMsg, gaiaSetGeosAuxErrorMsg + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE void gaiaSetGeosErrorMsg_r (const void *p_cache, + const char *msg); + +/** + Set the current GEOS warning message + + \param msg the warning message to be set. + + \sa gaiaSetGeosWarningMsg_r, + gaiaResetGeosMsg, gaiaGetGeosErrorMsg, gaiaGetGeosWarningMsg, + gaiaGetGeosAuxErrorMsg, gaiaSetGeosErrorMsg, gaiaSetGeosAuxErrorMsg + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE void gaiaSetGeosWarningMsg (const char *msg); + +/** + Set the current GEOS warning message + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param msg the warning message to be set. + + \sa gaiaSetGeosWarningMsg, + gaiaResetGeosMsg, gaiaGetGeosErrorMsg, gaiaGetGeosWarningMsg, + gaiaGetGeosAuxErrorMsg, gaiaSetGeosErrorMsg, gaiaSetGeosAuxErrorMsg + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE void gaiaSetGeosWarningMsg_r (const void *p_cache, + const char *msg); + +/** + Set the current GEOS (auxiliary) error message + + \param msg the error message to be set. + + \sa gaiaSetAuxErrorMsg_r, + gaiaResetGeosMsg, gaiaGetGeosErrorMsg, gaiaGetGeosWarningMsg, + gaiaGetGeosAuxErrorMsg, gaiaSetGeosWarningMsg, gaiaSetGeosErrorMsg + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE void gaiaSetGeosAuxErrorMsg (const char *msg); + +/** + Set the current GEOS (auxiliary) error message + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param msg the error message to be set. + + \sa gaiaSetAuxErrorMsg, + gaiaResetGeosMsg, gaiaGetGeosErrorMsg, gaiaGetGeosWarningMsg, + gaiaGetGeosAuxErrorMsg, gaiaSetGeosWarningMsg, gaiaSetGeosErrorMsg + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE void gaiaSetGeosAuxErrorMsg_r (const void *p_cache, + const char *msg); + +/** + Converts a Geometry object into a GEOS Geometry + + \param gaia pointer to Geometry object + + \return handle to GEOS Geometry + + \sa gaiaToGeos_r, gaiaFromGeos_XY, gaiaFromGeos_XYZ, gaiaFromGeos_XYM, + gaiaFromGeos_XYZM, gaiaToGeosSelective + + \note convenience method, simply defaulting to gaiaToGeosSelective(geom, GAIA2GEOS_ALL)\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE void *gaiaToGeos (const gaiaGeomCollPtr gaia); + +/** + Converts a Geometry object into a GEOS Geometry + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param gaia pointer to Geometry object + + \return handle to GEOS Geometry + + \sa gaiaToGeos, gaiaFromGeos_XY, gaiaFromGeos_XYZ, gaiaFromGeos_XYM, + gaiaFromGeos_XYZM, gaiaToGeosSelective_r + + \note convenience method, simply defaulting to gaiaToGeosSelective_r(p_cache, geom, GAIA2GEOS_ALL)\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE void *gaiaToGeos_r (const void *p_cache, + const gaiaGeomCollPtr gaia); + +/** + Converts a Geometry object into a GEOS Geometry + + \param gaia pointer to Geometry object + \param mode one of GAIA2GEOS_ALL, GAIA2GEOS_ONLY_POINTS, + GAIA2GEOS_ONLY_LINESTRINGS or GAIA2GEOS_ONLY_POLYGONS + + \return handle to GEOS Geometry + + \sa gaiaToGeosSelective_r, gaiaFromGeos_XY, gaiaFromGeos_XYZ, + gaiaFromGeos_XYM, gaiaFromGeos_XYZM + + \note if the mode argument is not GAIA2GEOS_ALL only elementary geometries + of the selected type will be passed to GEOS, ignoring any other.\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE void *gaiaToGeosSelective (const gaiaGeomCollPtr gaia, + int mode); + +/** + Converts a Geometry object into a GEOS Geometry + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param gaia pointer to Geometry object + \param mode one of GAIA2GEOS_ALL, GAIA2GEOS_ONLY_POINTS, + GAIA2GEOS_ONLY_LINESTRINGS or GAIA2GEOS_ONLY_POLYGONS + + \return handle to GEOS Geometry + + \sa gaiaToGeosSelective, gaiaFromGeos_XY, gaiaFromGeos_XYZ, + gaiaFromGeos_XYM, gaiaFromGeos_XYZM + + \note if the mode argument is not GAIA2GEOS_ALL only elementary geometries + of the selected type will be passed to GEOS, ignoring any other.\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE void *gaiaToGeosSelective_r (const void *p_cache, + const gaiaGeomCollPtr gaia, + int mode); + +/** + Converts a GEOS Geometry into a Geometry object [XY dims] + + \param geos handle to GEOS Geometry + + \return the pointer to the newly created Geometry object + + \sa gaiaFromGeos_XY_r, + gaiaToGeos, gaiaFromGeos_XYZ, gaiaFromGeos_XYM, gaiaFromGeos_XYZM + + \note you are responsible to destroy (before or after) any allocated + Geometry, this including any Geometry returned by gaiaFromGeos_XY()\n + not reentrant and thread usafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromGeos_XY (const void *geos); + +/** + Converts a GEOS Geometry into a Geometry object [XY dims] + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geos handle to GEOS Geometry + + \return the pointer to the newly created Geometry object + + \sa gaiaFromGeos_XY, + gaiaToGeos, gaiaFromGeos_XYZ, gaiaFromGeos_XYM, gaiaFromGeos_XYZM + + \note you are responsible to destroy (before or after) any allocated + Geometry, this including any Geometry returned by gaiaFromGeos_XY_r()\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromGeos_XY_r (const void *p_cache, + const void *geos); + +/** + Converts a GEOS Geometry into a Geometry object [XYZ dims] + + \param geos handle to GEOS Geometry + + \return the pointer to the newly created Geometry object + + \sa gaiaFromGeos_XYZ_r, + gaiaToGeos, gaiaFromGeos_XY, gaiaFromGeos_XYM, gaiaFromGeos_XYZM + + \note you are responsible to destroy (before or after) any allocated + Geometry, this including any Geometry returned by gaiaFromGeos_XYZ()\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromGeos_XYZ (const void *geos); + +/** + Converts a GEOS Geometry into a Geometry object [XYZ dims] + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geos handle to GEOS Geometry + + \return the pointer to the newly created Geometry object + + \sa gaiaFromGeos_XYZ, + gaiaToGeos, gaiaFromGeos_XY, gaiaFromGeos_XYM, gaiaFromGeos_XYZM + + \note you are responsible to destroy (before or after) any allocated + Geometry, this including any Geometry returned by gaiaFromGeos_XYZ_r()\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromGeos_XYZ_r (const void *p_cache, + const void *geos); + +/** + Converts a GEOS Geometry into a Geometry object [XYM dims] + + \param geos handle to GEOS Geometry + + \return the pointer to the newly created Geometry object + + \sa gaiaFromGeos_XYM_r, + gaiaToGeos, gaiaFromGeos_XY, gaiaFromGeos_XYZ, gaiaFromGeos_XYZM + + \note you are responsible to destroy (before or after) any allocated + Geometry, this including any Geometry returned by gaiaFromGeos_XYM()\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromGeos_XYM (const void *geos); + +/** + Converts a GEOS Geometry into a Geometry object [XYM dims] + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geos handle to GEOS Geometry + + \return the pointer to the newly created Geometry object + + \sa gaiaFromGeos_XYM, + gaiaToGeos, gaiaFromGeos_XY, gaiaFromGeos_XYZ, gaiaFromGeos_XYZM + + \note you are responsible to destroy (before or after) any allocated + Geometry, this including any Geometry returned by gaiaFromGeos_XYM_r()\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromGeos_XYM_r (const void *p_cache, + const void *geos); + +/** + Converts a GEOS Geometry into a Geometry object [XYZM dims] + + \param geos handle to GEOS Geometry + + \return the pointer to the newly created Geometry object + + \sa gaiaFromGeos_XYZM_r, + gaiaToGeos, gaiaFromGeos_XY, gaiaFromGeos_XYZ, gaiaFromGeos_XYM + + \note you are responsible to destroy (before or after) any allocated + Geometry, this including any Geometry returned by gaiaFromGeos_XYZM()\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromGeos_XYZM (const void *geos); + +/** + Converts a GEOS Geometry into a Geometry object [XYZM dims] + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geos handle to GEOS Geometry + + \return the pointer to the newly created Geometry object + + \sa gaiaFromGeos_XYZM, + gaiaToGeos, gaiaFromGeos_XY, gaiaFromGeos_XYZ, gaiaFromGeos_XYM + + \note you are responsible to destroy (before or after) any allocated + Geometry, this including any Geometry returned by gaiaFromGeos_XYZM_r()\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromGeos_XYZM_r (const void *p_cache, + const void *geos); + +/** + Checks if a Geometry object represents an OGC Simple Geometry + + \param geom pointer to Geometry object. + + \return 0 if false; any other value if true + + \sa gaiaIsSimple_r, + gaiaIsClosed, gaiaIsRing, gaiaIsValid + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaIsSimple (gaiaGeomCollPtr geom); + +/** + Checks if a Geometry object represents an OGC Simple Geometry + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to Geometry object. + + \return 0 if false; any other value if true + + \sa gaiaIsSimple, + gaiaIsClosed, gaiaIsRing, gaiaIsValid + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaIsSimple_r (const void *p_cache, + gaiaGeomCollPtr geom); + +/** + Checks if a Linestring object represents an OGC Closed Geometry + + This function only works on a single linestring - if you pass in a multi-line + linestring geometry, it will return 0 (false). See gaiaIsClosedGeom for an + alternative. + + \param line pointer to Linestring object. + + \return 0 if false; any other value if true + + \sa gaiaIsSimple, gaiaIsRing, gaiaIsValid, gaiaIsClosedGeom + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaIsClosed (gaiaLinestringPtr line); + +/** + Checks if a Geometry object represents an OGC Closed Linestring + + \param geom pointer to Geometry object. + + \return 0 if false; any other value if true + + \sa gaiaIsClosedGeom_r, + gaiaIsSimple, gaiaIsRing, gaiaIsValid, gaiaIsClosed + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaIsClosedGeom (gaiaGeomCollPtr geom); + +/** + Checks if a Geometry object represents an OGC Closed Linestring + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to Geometry object. + + \return 0 if false; any other value if true + + \sa gaiaIsClosedGeom, + gaiaIsSimple, gaiaIsRing, gaiaIsValid, gaiaIsClosed + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaIsClosedGeom_r (const void *p_cache, + gaiaGeomCollPtr geom); + +/** + Checks if a Linestring object represents an OGC Ring Geometry + + \param line pointer to Geometry object. + + \return 0 if false; any other value if true + + \sa gaiaIsRing_r, + gaiaIsSimple, gaiaIsClosed, gaiaIsValid + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaIsRing (gaiaLinestringPtr line); + +/** + Checks if a Linestring object represents an OGC Ring Geometry + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param line pointer to Geometry object. + + \return 0 if false; any other value if true + + \sa gaiaIsRing, + gaiaIsSimple, gaiaIsClosed, gaiaIsValid + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaIsRing_r (const void *p_cache, + gaiaLinestringPtr line); + +/** + Checks if a Geometry object represents an OGC Valid Geometry + + \param geom pointer to Geometry object. + + \return 0 if false; any other value if true + + \sa gaiaIsValid_r, + gaiaIsSimple, gaiaIsClosed, gaiaIsRing, gaiaIsValidReason + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaIsValid (gaiaGeomCollPtr geom); + +/** + return a TEXT string stating if a Geometry is valid and if not + valid, a reason why + * + \param geom pointer to the Geometry object to be validated. + + \return a text string. + + \sa gaiaIsValid, gaiaIsValidReason_r, gaiaIsValidDetail + + \note you are responsible to free() the returned text string\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE char *gaiaIsValidReason (gaiaGeomCollPtr geom); + +/** + return a TEXT string stating if a Geometry is valid and if not + valid, a reason why + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to the Geometry object to be validated. + + \return a text string. + + \sa gaiaIsValid_r, gaiaIsValidReason, gaiaIsValidDetail_r + + \note you are responsible to free() the returned text string\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE char *gaiaIsValidReason_r (const void *p_cache, + gaiaGeomCollPtr geom); + +/** + return a Geometry detail causing a Geometry to be invalid + * + \param geom pointer to the Geometry object to be validated. + + \return pointer to a Geometry object causing invalidity, or NULL. + + \sa gaiaIsValid, gaiaIsValidReason, gaiaIsValidDetail_r + + \note you are responsible to destroy the returned Geometry\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaIsValidDetail (gaiaGeomCollPtr geom); + +/** + return a Geometry detail causing a Geometry to be invalid + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to the Geometry object to be validated. + + \return pointer to a Geometry object causing invalidity, or NULL. + + \sa gaiaIsValid_r, gaiaIsValidReason_r, gaiaIsValidDetail + + \note you are responsible to destroy the returned Geometry\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaIsValidDetail_r (const void *p_cache, + gaiaGeomCollPtr geom); + +/** + Checks if a Geometry object represents an OGC Valid Geometry + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to Geometry object. + + \return 0 if false; any other value if true + + \sa gaiaIsValid, + gaiaIsSimple, gaiaIsClosed, gaiaIsRing, gaiaIsValidReason_r + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaIsValid_r (const void *p_cache, + gaiaGeomCollPtr geom); + +/** + Measures the total Length for a Geometry object + + \param geom pointer to Geometry object + \param length on completion this variable will contain the measured length + + \return 0 on failure: any other value on success + + \sa gaiaGeomCollLenght_r, + gaiaGeomCollArea, gaiaMeasureLength, gaiaGeomCollLengthOrPerimeter + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollLength (gaiaGeomCollPtr geom, + double *length); + +/** + Measures the total Length for a Geometry object + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to Geometry object + \param length on completion this variable will contain the measured length + + \return 0 on failure: any other value on success + + \sa gaiaGeomCollLenght, + gaiaGeomCollArea, gaiaMeasureLength, gaiaGeomCollLengthOrPerimeter + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollLength_r (const void *p_cache, + gaiaGeomCollPtr geom, + double *length); + +/** + Measures the total Length or Perimeter for a Geometry object + + \param geom pointer to Geometry object + \param perimeter if TRUE only Polygons will be considered, ignoring any Linesting + \n the opposite if FALSE (considering only Linestrings and ignoring any Polygon) + \param length on completion this variable will contain the measured length + or perimeter + + \return 0 on failure: any other value on success + + \sa gaiaGeomCollLengthOrPerimeter_r, + gaiaGeomCollArea, gaiaMeasureLength, gaiaGeomCollLength + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollLengthOrPerimeter (gaiaGeomCollPtr geom, + int perimeter, + double *length); + +/** + Measures the total Length or Perimeter for a Geometry object + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to Geometry object + \param perimeter if TRUE only Polygons will be considered, ignoring any Linesting + \n the opposite if FALSE (considering only Linestrings and ignoring any Polygon) + \param length on completion this variable will contain the measured length + or perimeter + + \return 0 on failure: any other value on success + + \sa gaiaGeomCollLengthOrPerimeter, + gaiaGeomCollArea, gaiaMeasureLength, gaiaGeomCollLength + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollLengthOrPerimeter_r (const void *p_cache, + gaiaGeomCollPtr geom, + int perimeter, + double *length); + +/** + Measures the total Area for a Geometry object + + \param geom pointer to Geometry object + \param area on completion this variable will contain the measured area + + \return 0 on failure: any other value on success + + \sa gaiaGeoCollArea_r, + gaiaGeomCollLength, gaiaMeasureArea, gaiaGeodesicArea + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollArea (gaiaGeomCollPtr geom, double *area); + +/** + Measures the total Area for a Geometry object + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to Geometry object + \param area on completion this variable will contain the measured area + + \return 0 on failure: any other value on success + + \sa gaiaGeoCollArea, + gaiaGeomCollLength, gaiaMeasureArea, gaiaGeodesicArea + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollArea_r (const void *p_cache, + gaiaGeomCollPtr geom, double *area); + +/** + Attempts to rearrange a generic Geometry object into a Polygon or MultiPolygon + + \param geom the input Geometry object + \param force_multi if not set to 0, then an eventual Polygon will be + returned casted to MultiPolygon + + \return the pointer to newly created Geometry object representing a + Polygon or MultiPolygon Geometry: NULL on failure. + + \sa gaiaPolygonize_r, gaiaMakePolygon, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaPolygonize()\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaPolygonize (gaiaGeomCollPtr geom, + int force_multi); + +/** + Attempts to rearrange a generic Geometry object into a Polygon or MultiPolygon + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom the input Geometry object + \param force_multi if not set to 0, then an eventual Polygon will be + returned casted to MultiPolygon + + \return the pointer to newly created Geometry object representing a + Polygon or MultiPolygon Geometry: NULL on failure. + + \sa gaiaPolygonize, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaPolygonize_r()\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaPolygonize_r (const void *p_cache, + gaiaGeomCollPtr geom, + int force_multi); +/** + Spatial relationship evalution: Equals + + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollEquals_r, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, + gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollContains, + gaiaGeomCollWithin, gaiaGeomCollTouches, gaiaGeomCollRelate + + \note Obsolete: not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollEquals (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); +/** + Spatial relationship evalution: Equals + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, + gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollContains, + gaiaGeomCollWithin, gaiaGeomCollTouches, gaiaGeomCollRelate + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollEquals_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial relationship evalution: Disjoint + + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollDisjoint_r, gaiaGeomCollEquals, gaiaGeomCollIntersects, + gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollContains, + gaiaGeomCollWithin, gaiaGeomCollTouches, gaiaGeomCollRelate + + \note Obsolete: not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollDisjoint (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial relationship evalution: Disjoint + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollDisjoint_r, gaiaGeomCollEquals, gaiaGeomCollIntersects, + gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollContains, + gaiaGeomCollWithin, gaiaGeomCollTouches, gaiaGeomCollRelate + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollDisjoint_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial relationship evalution: Disjoint (GEOSPreparedGeometry) + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param blob1 the BLOB corresponding to the first Geometry + \param size1 the size (in bytes) of the first BLOB + \param geom2 the second Geometry object to be evaluated + \param blob2 the BLOB corresponding to the second Geometry + \param size2 the size (in bytes) of the second BLOB + + \return 0 if false: any other value if true + + \sa gaiaGeomCollDisjoint, gaiaGeomCollDisjoint_r + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollPreparedDisjoint (const void *p_cache, + gaiaGeomCollPtr geom1, + unsigned char *blob1, + int size1, + gaiaGeomCollPtr geom2, + unsigned char *blob2, + int size2); + +/** + Spatial relationship evalution: Intesects + + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollIntersects_r, gaiaGeomCollPreparedIntersects, + gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollOverlaps, + gaiaGeomCollCrosses, gaiaGeomCollContains, gaiaGeomCollWithin, + gaiaGeomCollTouches, gaiaGeomCollRelate + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollIntersects (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial relationship evalution: Intersects + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollIntersects, gaiaGeomCollPreparedIntersects, + gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollOverlaps, + gaiaGeomCollCrosses, gaiaGeomCollContains, gaiaGeomCollWithin, + gaiaGeomCollTouches, gaiaGeomCollRelate + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollIntersects_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial relationship evalution: Intersects (GEOSPreparedGeometry) + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param blob1 the BLOB corresponding to the first Geometry + \param size1 the size (in bytes) of the first BLOB + \param geom2 the second Geometry object to be evaluated + \param blob2 the BLOB corresponding to the second Geometry + \param size2 the size (in bytes) of the second BLOB + + \return 0 if false: any other value if true + + \sa gaiaGeomCollIntersects, gaiaGeomCollIntersects_r + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollPreparedIntersects (const void *p_cache, + gaiaGeomCollPtr geom1, + unsigned char *blob1, + int size1, + gaiaGeomCollPtr geom2, + unsigned char *blob2, + int size2); + +/** + Spatial relationship evalution: Overlaps + + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollOverlaps_r, gaiaGeomCollPreparedOverlaps, + gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, + gaiaGeomCollCrosses, gaiaGeomCollContains, gaiaGeomCollWithin, + gaiaGeomCollTouches, gaiaGeomCollRelate + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollOverlaps (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial relationship evalution: Overlaps + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollOverlaps, gaiaGeomCollPreparedOverlaps, + gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, + gaiaGeomCollCrosses, gaiaGeomCollContains, gaiaGeomCollWithin, + gaiaGeomCollTouches, gaiaGeomCollRelate + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollOverlaps_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial relationship evalution: Overlaps (GEOSPreparedGeometry) + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param blob1 the BLOB corresponding to the first Geometry + \param size1 the size (in bytes) of the first BLOB + \param geom2 the second Geometry object to be evaluated + \param blob2 the BLOB corresponding to the second Geometry + \param size2 the size (in bytes) of the second BLOB + + \return 0 if false: any other value if true + + \sa gaiaGeomCollOverlaps, gaiaGeomCollOverlaps_r + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollPreparedOverlaps (const void *p_cache, + gaiaGeomCollPtr geom1, + unsigned char *blob1, + int size1, + gaiaGeomCollPtr geom2, + unsigned char *blob2, + int size2); + +/** + Spatial relationship evalution: Crosses + + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollCrosses_r, gaiaGeomCollPreparedCrosses, + gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, + gaiaGeomCollOverlaps, gaiaGeomCollContains, gaiaGeomCollWithin, + gaiaGeomCollTouches, gaiaGeomCollRelate + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollCrosses (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial relationship evalution: Crosses + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollCrosses, gaiaGeomCollPreparedCrosses, + gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, + gaiaGeomCollOverlaps, gaiaGeomCollContains, gaiaGeomCollWithin, + gaiaGeomCollTouches, gaiaGeomCollRelate + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollCrosses_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial relationship evalution: Crosses (GEOSPreparedGeometry) + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param blob1 the BLOB corresponding to the first Geometry + \param size1 the size (in bytes) of the first BLOB + \param geom2 the second Geometry object to be evaluated + \param blob2 the BLOB corresponding to the second Geometry + \param size2 the size (in bytes) of the second BLOB + + \return 0 if false: any other value if true + + \note reentrant and thread-safe. + + \sa gaiaGeomCollCrosses, gaiaGeomCollCrosses_r + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollPreparedCrosses (const void *p_cache, + gaiaGeomCollPtr geom1, + unsigned char *blob1, + int size1, + gaiaGeomCollPtr geom2, + unsigned char *blob2, + int size2); + +/** + Spatial relationship evalution: Contains + + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollContains_r, gaiaGeomCollPreparedContains, + gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, + gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollWithin, + gaiaGeomCollTouches, gaiaGeomCollRelate + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollContains (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial relationship evalution: Contains + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollContains, gaiaGeomCollPreparedContains, + gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, + gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollWithin, + gaiaGeomCollTouches, gaiaGeomCollRelate + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollContains_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial relationship evalution: Contains (GEOSPreparedGeometry) + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param blob1 the BLOB corresponding to the first Geometry + \param size1 the size (in bytes) of the first BLOB + \param geom2 the second Geometry object to be evaluated + \param blob2 the BLOB corresponding to the second Geometry + \param size2 the size (in bytes) of the second BLOB + + \return 0 if false: any other value if true + + \sa gaiaGeomCollContains, gaiaGeomCollContains_r + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollPreparedContains (const void *p_cache, + gaiaGeomCollPtr geom1, + unsigned char *blob1, + int size1, + gaiaGeomCollPtr geom2, + unsigned char *blob2, + int size2); + +/** + Spatial relationship evalution: Within + + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollWithin_r, gaiaGeomCollPreparedWithin, + gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, + gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollContains, + gaiaGeomCollTouches, gaiaGeomCollRelate + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollWithin (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial relationship evalution: Within + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollWithin, gaiaGeomCollPreparedWithin, + gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, + gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollContains, + gaiaGeomCollTouches, gaiaGeomCollRelate + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollWithin_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial relationship evalution: Within (GEOSPreparedGeometry) + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param blob1 the BLOB corresponding to the first Geometry + \param size1 the size (in bytes) of the first BLOB + \param geom2 the second Geometry object to be evaluated + \param blob2 the BLOB corresponding to the second Geometry + \param size2 the size (in bytes) of the second BLOB + + \return 0 if false: any other value if true + + \sa gaiaGeomCollWithin, gaiaGeomCollWithin_r + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollPreparedWithin (const void *p_cache, + gaiaGeomCollPtr geom1, + unsigned char *blob1, + int size1, + gaiaGeomCollPtr geom2, + unsigned char *blob2, + int size2); + +/** + Spatial relationship evalution: Touches + + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollTouches_r, gaiaGeomCollPreparedTouches, + gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, + gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollContains, + gaiaGeomCollWithin, gaiaGeomCollRelate + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollTouches (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial relationship evalution: Touches + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + + \return 0 if false: any other value if true + + \sa gaiaGeomCollTouches, gaiaGeomCollPreparedTouches, + gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, + gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollContains, + gaiaGeomCollWithin, gaiaGeomCollRelate + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollTouches_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial relationship evalution: Touches (GEOSPreparedGeometry) + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param blob1 the BLOB corresponding to the first Geometry + \param size1 the size (in bytes) of the first BLOB + \param geom2 the second Geometry object to be evaluated + \param blob2 the BLOB corresponding to the second Geometry + \param size2 the size (in bytes) of the second BLOB + + \return 0 if false: any other value if true + + \sa gaiaGeomCollTouches, gaiaGeomCollTouches_r + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollPreparedTouches (const void *p_cache, + gaiaGeomCollPtr geom1, + unsigned char *blob1, + int size1, + gaiaGeomCollPtr geom2, + unsigned char *blob2, + int size2); + +/** + Spatial relationship evalution: Relate + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + \param pattern intersection matrix pattern [DE-9IM] + + \return 0 if false: any other value if true + + \sa gaiaGeomCollRelate_r, + gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, + gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollContains, + gaiaGeomCollWithin, gaiaGeomCollRelate + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollRelate (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2, + const char *pattern); + +/** + Spatial relationship evalution: Relate + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object to be evaluated + \param geom2 the second Geometry object to be evaluated + \param pattern intersection matrix pattern [DE-9IM] + + \return 0 if false: any other value if true + + \sa gaiaGeomCollRelate, + gaiaGeomCollEquals, gaiaGeomCollDisjoint, gaiaGeomCollIntersects, + gaiaGeomCollOverlaps, gaiaGeomCollCrosses, gaiaGeomCollContains, + gaiaGeomCollWithin, gaiaGeomCollRelate + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollRelate_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2, + const char *pattern); + +/** + Calculates the maximum distance intercurring between two Geometry objects + + \param geom1 the first Geometry object + \param geom2 the second Geometry object + \param dist on completion this variable will contain the calculated distance + + \return 0 on failure: any other value on success. + + \sa gaiaGeomCollDistance_r, + gaia3DDistance, gaiaMaxDistance, gaia3DMaxDistance + + \note this function always computes the 2D cartesian distance.\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollDistance (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2, + double *dist); + +/** + Calculates the maximum distance intercurring between two Geometry objects + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object + \param geom2 the second Geometry object + \param dist on completion this variable will contain the calculated distance + + \return 0 on failure: any other value on success. + + \sa gaiaGeomCollDistance, + gaia3DDistance, gaiaMaxDistance, gaia3DMaxDistance + + \note this function always computes the 2D cartesian distance.\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollDistance_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2, + double *dist); + +/** + Spatial operator: Intersection + + \param geom1 the first Geometry object + \param geom2 the second Geometry object + + \return the pointer to newly created Geometry object representing the + geometry Intersection of both input Geometries: NULL on failure. + + \sa gaiaGeometryIntersection_r, + gaiaFreeGeomColl, gaiaGeometryUnion, gaiaGeometryDifference, + gaiaGeometrySymDifference, gaiaBoundary + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaGeometryIntersection()\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeometryIntersection (gaiaGeomCollPtr + geom1, + gaiaGeomCollPtr + geom2); + +/** + Spatial operator: Intersection + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object + \param geom2 the second Geometry object + + \return the pointer to newly created Geometry object representing the + geometry Intersection of both input Geometries: NULL on failure. + + \sa gaiaGeometryIntersection, + gaiaFreeGeomColl, gaiaGeometryUnion, gaiaGeometryDifference, + gaiaGeometrySymDifference, gaiaBoundary + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaGeometryIntersection_r()\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeometryIntersection_r (const void + *p_cache, + gaiaGeomCollPtr + geom1, + gaiaGeomCollPtr + geom2); + +/** + Spatial operator: Union + + \param geom1 the first Geometry object + \param geom2 the second Geometry object + + \return the pointer to newly created Geometry object representing the + geometry Union of both input Geometries: NULL on failure. + + \sa gaiaGeometryUnion_r, + gaiaFreeGeomColl, gaiaUnaryUnion, gaiaUnionCascaded + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaGeometryUnion()\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeometryUnion (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial operator: Union + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object + \param geom2 the second Geometry object + + \return the pointer to newly created Geometry object representing the + geometry Union of both input Geometries: NULL on failure. + + \sa gaiaGeometryUnion, + gaiaFreeGeomColl, gaiaUnaryUnion, gaiaUnionCascaded + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaGeometryUnion_r()\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeometryUnion_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial operator: Union Cascaded + + \param geom the input Geometry object. + + \return the pointer to newly created Geometry object: NULL on failure. + \n this function is similar to gaiaUnaryUnion, but it only accepts Polygons and + MultiPolygons and it's now deprecated; anyway it's supported on older GEOS versions. + NULL on failure. + + \sa gaiaUnionCascaded, + gaiaFreeGeomColl, gaiaGeometryUnion, gaiaUnionUnion + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaUnionCascaded()\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaUnionCascaded (gaiaGeomCollPtr geom); + +/** + Spatial operator: Union Cascaded + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom the input Geometry object. + + \return the pointer to newly created Geometry object: NULL on failure. + \n this function is similar to gaiaUnaryUnion, but it only accepts Polygons and + MultiPolygons and it's now deprecated; anyway it's supported on older GEOS versions. + NULL on failure. + + \sa gaiaUnionCascaded, + gaiaFreeGeomColl, gaiaGeometryUnion, gaiaUnionUnion + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaUnionCascaded_r()\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaUnionCascaded_r (const void *p_cache, + gaiaGeomCollPtr geom); + +/** + Spatial operator: Difference + + \param geom1 the first Geometry object + \param geom2 the second Geometry object + + \return the pointer to newly created Geometry object representing the + geometry Difference of both input Geometries: NULL on failure. + + \sa gaiaGeometryDifference_r, gaiaGeometrySymDifference, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaGeometryDifference()\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeometryDifference (gaiaGeomCollPtr + geom1, + gaiaGeomCollPtr + geom2); + +/** + Spatial operator: Difference + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object + \param geom2 the second Geometry object + + \return the pointer to newly created Geometry object representing the + geometry Difference of both input Geometries: NULL on failure. + + \sa gaiaGeometryDifference, gaiaGeometrySymDifference, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaGeometryDifference_r()\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeometryDifference_r (const void + *p_cache, + gaiaGeomCollPtr + geom1, + gaiaGeomCollPtr + geom2); + +/** + Spatial operator: SymDifference + + \param geom1 the first Geometry object + \param geom2 the second Geometry object + + \return the pointer to newly created Geometry object representing the + geometry SymDifference of both input Geometries: NULL on failure. + + \sa gaiaGeometrySymDifference_r, gaiaGeometryDifference, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaGeometrySymDifference()\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeometrySymDifference (gaiaGeomCollPtr + geom1, + gaiaGeomCollPtr + geom2); + +/** + Spatial operator: SymDifference + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 the first Geometry object + \param geom2 the second Geometry object + + \return the pointer to newly created Geometry object representing the + geometry SymDifference of both input Geometries: NULL on failure. + + \sa gaiaGeometrySymDifference, gaiaGeometryDifference, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaGeometrySymDifference_r()\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeometrySymDifference_r (const void + *p_cache, + gaiaGeomCollPtr + geom1, + gaiaGeomCollPtr + geom2); + +/** + Spatial operator: Boundary + + \param geom the Geometry object to be evaluated + + \return the pointer to newly created Geometry object representing the + geometry Boundary of the input Geometry: NULL on failure. + + \sa gaiaBoudary_r, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaBoundary()\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaBoundary (gaiaGeomCollPtr geom); + +/** + Spatial operator: Boundary + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom the Geometry object to be evaluated + + \return the pointer to newly created Geometry object representing the + geometry Boundary of the input Geometry: NULL on failure. + + \sa gaiaBoudary, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaBoundary_r()\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaBoundary_r (const void *p_cache, + gaiaGeomCollPtr geom); + +/** + Spatial operator: Centroid + + \param geom pointer to Geometry object. + \param x on completion this variable will contain the centroid X coordinate + \param y on completion this variable will contain the centroid Y coordinate + + \return 0 on failure: any other value on success + + \sa gaiaGeomCollCentroid_r, gaiaRingCentroid + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollCentroid (gaiaGeomCollPtr geom, double *x, + double *y); + +/** + Spatial operator: Centroid + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to Geometry object. + \param x on completion this variable will contain the centroid X coordinate + \param y on completion this variable will contain the centroid Y coordinate + + \return 0 on failure: any other value on success + + \sa gaiaGeomCollCentroid, gaiaRingCentroid + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollCentroid_r (const void *p_cache, + gaiaGeomCollPtr geom, double *x, + double *y); + +/** + Spatial operator: PointOnSurface + + \param geom pointer to Geometry object. + \param x on completion this variable will contain the Point X coordinate + \param y on completion this variable will contain the Point Y coordinate + + \return 0 on failure: any other value on success + + \sa gaiaGetPointOnSurface_r + + \note not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGetPointOnSurface (gaiaGeomCollPtr geom, double *x, + double *y); + +/** + Spatial operator: PointOnSurface + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to Geometry object. + \param x on completion this variable will contain the Point X coordinate + \param y on completion this variable will contain the Point Y coordinate + + \return 0 on failure: any other value on success + + \sa gaiaGetPointOnSurface + + \note reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE int gaiaGetPointOnSurface_r (const void *p_cache, + gaiaGeomCollPtr geom, + double *x, double *y); + +/** + Spatial operator: Simplify + + \param geom the input Geometry object + \param tolerance approximation threshold + + \return the pointer to newly created Geometry object representing the + simplified Geometry [applying the Douglas-Peucker algorithm]: NULL on failure. + + \sa gaiaGeomCollSimplify_r, + gaiaFreeGeomColl, gaiaGeomCollSimplifyPreserveTopology + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaGeomCollSimplify()\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeomCollSimplify (gaiaGeomCollPtr geom, + double tolerance); + +/** + Spatial operator: Simplify + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom the input Geometry object + \param tolerance approximation threshold + + \return the pointer to newly created Geometry object representing the + simplified Geometry [applying the Douglas-Peucker algorithm]: NULL on failure. + + \sa gaiaGeomCollSimplify, + gaiaFreeGeomColl, gaiaGeomCollSimplifyPreserveTopology + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaGeomCollSimplify_r()\n + reentrant and thread safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeomCollSimplify_r (const void *p_cache, + gaiaGeomCollPtr + geom, + double tolerance); + +/** + Spatial operator: Simplify [preserving topology] + + \param geom the input Geometry object + \param tolerance approximation threshold + + \return the pointer to newly created Geometry object representing the + simplified Geometry [applying the Douglas-Peucker algorithm]: NULL on failure. + + \sa gaiaGeomCollSimplifyPreserveTopology_r, + gaiaFreeGeomColl, gaiaGeomCollSimplify + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaGeomCollSimplify()\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr + gaiaGeomCollSimplifyPreserveTopology (gaiaGeomCollPtr geom, + double tolerance); + +/** + Spatial operator: Simplify [preserving topology] + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom the input Geometry object + \param tolerance approximation threshold + + \return the pointer to newly created Geometry object representing the + simplified Geometry [applying the Douglas-Peucker algorithm]: NULL on failure. + + \sa gaiaGeomCollSimplifyPreserveTopology, + gaiaFreeGeomColl, gaiaGeomCollSimplify + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaGeomCollSimplify_r()\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr + gaiaGeomCollSimplifyPreserveTopology_r (const void *p_cache, + gaiaGeomCollPtr geom, + double tolerance); + +/** + Spatial operator: ConvexHull + + \param geom the input Geometry object + + \return the pointer to newly created Geometry object representing the + ConvexHull of input Geometry: NULL on failure. + + \sa gaiaConvexHull_r, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaConvexHull()\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaConvexHull (gaiaGeomCollPtr geom); + +/** + Spatial operator: ConvexHull + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom the input Geometry object + + \return the pointer to newly created Geometry object representing the + ConvexHull of input Geometry: NULL on failure. + + \sa gaiaConvexHull, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaConvexHull_r()\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaConvexHull_r (const void *p_cache, + gaiaGeomCollPtr geom); + +/** + Spatial operator: Buffer + + \param geom the input Geometry object + \param radius the buffer's radius + \param points number of points (aka vertices) to be used in order to + approximate a circular arc. + + \return the pointer to newly created Geometry object representing the + Buffer of input Geometry: NULL on failure. + + \sa gaiaGeomCollBuffer_r, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaGeomCollBuffer()\n + not reentrant and thread unsafe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeomCollBuffer (gaiaGeomCollPtr geom, + double radius, + int points); + +/** + Spatial operator: Buffer + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom the input Geometry object + \param radius the buffer's radius + \param points number of points (aka vertices) to be used in order to + approximate a circular arc. + + \return the pointer to newly created Geometry object representing the + Buffer of input Geometry: NULL on failure. + + \sa gaiaGeomCollBuffer, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaGeomCollBuffer_r()\n + reentrant and thread-safe. + + \remark \b GEOS support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaGeomCollBuffer_r (const void *p_cache, + gaiaGeomCollPtr geom, + double radius, + int points); + +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +#ifdef GEOS_ADVANCED +#endif + +/** + Calculates the Hausdorff distance intercurring between two Geometry objects + + \param geom1 pointer to first Geometry object + \param geom2 pointer to second Geometry object + \param dist on completion this variable will contain the calculated Hausdorff + distance + + \return 0 on failure: any other value on success. + + \sa gaiaHausdorffDistance_r + + \note not reentrant and thread unsafe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE int gaiaHausdorffDistance (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2, + double *dist); + +/** + Calculates the Hausdorff distance intercurring between two Geometry objects + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 pointer to first Geometry object + \param geom2 pointer to second Geometry object + \param dist on completion this variable will contain the calculated Hausdorff + distance + + \return 0 on failure: any other value on success. + + \sa gaiaHausdorffDistance + + \note reentrant and thread-safe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE int gaiaHausdorffDistance_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2, + double *dist); + +/** + Spatial operator: Offset Curve + + \param geom the input Geometry object + \param radius the buffer's radius + \param points number of points (aka vertices) to be used in order to + approximate a circular arc. + \param left_right if set to 1 the left-sided OffsetCurve will be returned; + otherwise the right-sided one. + + \return the pointer to newly created Geometry object representing the + OffsetCurve of input Geometry: NULL on failure. + + \sa gaiaOffsetCurve_r, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaOffsetCurve()\n + not reentrant and thread unsafe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaOffsetCurve (gaiaGeomCollPtr geom, + double radius, int points, + int left_right); + +/** + Spatial operator: Offset Curve + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom the input Geometry object + \param radius the buffer's radius + \param points number of points (aka vertices) to be used in order to + approximate a circular arc. + \param left_right if set to 1 the left-sided OffsetCurve will be returned; + otherwise the right-sided one. + + \return the pointer to newly created Geometry object representing the + OffsetCurve of input Geometry: NULL on failure. + + \sa gaiaOffsetCurve, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaOffsetCurve_r()\n + reentrant and thread-safe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaOffsetCurve_r (const void *p_cache, + gaiaGeomCollPtr geom, + double radius, + int points, + int left_right); + +/** + Spatial operator: Single Sided Buffer + + \param geom the input Geometry object + \param radius the buffer's radius + \param points number of points (aka vertices) to be used in order to + approximate a circular arc. + \param left_right if set to 1 the left-sided Buffer will be returned; + otherwise the right-sided one. + + \return the pointer to newly created Geometry object representing the + single-sided Buffer of input Geometry: NULL on failure. + + \sa gaiaSingleSidedBuffer_r, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaSingleSidedBuffer()\n + not reentrant and thread unsafe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSingleSidedBuffer (gaiaGeomCollPtr geom, + double radius, + int points, + int left_right); + +/** + Spatial operator: Single Sided Buffer + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom the input Geometry object + \param radius the buffer's radius + \param points number of points (aka vertices) to be used in order to + approximate a circular arc. + \param left_right if set to 1 the left-sided Buffer will be returned; + otherwise the right-sided one. + + \return the pointer to newly created Geometry object representing the + single-sided Buffer of input Geometry: NULL on failure. + + \sa gaiaSingleSidedBuffer, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaSingleSidedBuffer_r()\n + reentrant and thread-safe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSingleSidedBuffer_r (const void + *p_cache, + gaiaGeomCollPtr + geom, + double radius, + int points, + int left_right); + +/** + Spatial operator: Shared Paths + + \param geom1 pointer to first Geometry object + \param geom2 pointer to second Geometry object + + \return the pointer to newly created Geometry object representing any + Share Path common to both input geometries: NULL on failure. + + \sa gaiaSharedPaths_r, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaSharedPaths()\n + not reentrant and thread unsafe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSharedPaths (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial operator: Shared Paths + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 pointer to first Geometry object + \param geom2 pointer to second Geometry object + + \return the pointer to newly created Geometry object representing any + Share Path common to both input geometries: NULL on failure. + + \sa gaiaSharedPaths, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaSharedPaths_r()\n + reentrant and thread-safe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSharedPaths_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial operator: Line Interpolate Point + + \param ln_geom the input Geometry object [expected to be of lineal type] + \param fraction total length fraction [in the range 0.0 / 1.0] + + \return the pointer to newly created Geometry object representing a Point + laying on the input Geometry and positioned at the given length fraction: + NULL on failure. + + \sa gaiaLineInterpolatePoint_r, + gaiaLineInterpolateEquidistantPoints, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaLineInterpolatePoint()\n + not reentrant and thread unsafe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaLineInterpolatePoint (gaiaGeomCollPtr + ln_geom, + double fraction); + +/** + Spatial operator: Line Interpolate Point + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param ln_geom the input Geometry object [expected to be of lineal type] + \param fraction total length fraction [in the range 0.0 / 1.0] + + \return the pointer to newly created Geometry object representing a Point + laying on the input Geometry and positioned at the given length fraction: + NULL on failure. + + \sa gaiaLineInterpolatePoint, + gaiaLineInterpolateEquidistantPoints, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaLineInterpolatePoint_r()\n + reentrant and thread-safe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaLineInterpolatePoint_r (const void + *p_cache, + gaiaGeomCollPtr + ln_geom, + double + fraction); + +/** + Spatial operator: Line Interpolate Equidistant Points + + \param ln_geom the input Geometry object [expected to be of lineal type] + \param distance regular distance between interpolated points + + \return the pointer to newly created Geometry object representing a MultiPoint; + such MultiPoint always supports the M coordinate (the corresponding value + representing the progressive distance for each interpolated Point). + individual Points will be regularly spaced by the given distance: + NULL on failure. + + \sa gaiaLineInterpolateEquidistantPoints_r, + gaiaLineInterpolatePoint, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaLineInterpolateEquidistantPoints()\n + not reentrant and thread unsafe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr + gaiaLineInterpolateEquidistantPoints (gaiaGeomCollPtr ln_geom, + double distance); + +/** + Spatial operator: Line Interpolate Equidistant Points + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param ln_geom the input Geometry object [expected to be of lineal type] + \param distance regular distance between interpolated points + + \return the pointer to newly created Geometry object representing a MultiPoint; + such MultiPoint always supports the M coordinate (the corresponding value + representing the progressive distance for each interpolated Point). + individual Points will be regularly spaced by the given distance: + NULL on failure. + + \sa gaiaLineInterpolateEquidistantPoints, + gaiaLineInterpolatePoint, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaLineInterpolateEquidistantPoints_r()\n + reentrant and thread-safe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr + gaiaLineInterpolateEquidistantPoints_r (const void *p_cache, + gaiaGeomCollPtr ln_geom, + double distance); + +/** + Spatial operator: Line Substring + + \param ln_geom the input Geometry object [expected to be of lineal type] + \param start_fraction substring start, expressed as total length fraction + [in the range 0.0 / 1.0] + \param end_fraction substring end, expressed as total length fraction + + \return the pointer to newly created Geometry object representing a Linestring + laying on the input Geometry. + \n this Linestring will begin (and stop) at given total length fractions. + NULL on failure. + + \sa gaiaLineSubstring_r, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaLineSubstring()\n + not reentrant and thread unsafe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaLineSubstring (gaiaGeomCollPtr ln_geom, + double start_fraction, + double end_fraction); + +/** + Spatial operator: Line Substring + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param ln_geom the input Geometry object [expected to be of lineal type] + \param start_fraction substring start, expressed as total length fraction + [in the range 0.0 / 1.0] + \param end_fraction substring end, expressed as total length fraction + + \return the pointer to newly created Geometry object representing a Linestring + laying on the input Geometry. + \n this Linestring will begin (and stop) at given total length fractions. + NULL on failure. + + \sa gaiaLineSubstring, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaLineSubstring_r()\n + reentrant and thread-safe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaLineSubstring_r (const void *p_cache, + gaiaGeomCollPtr + ln_geom, + double start_fraction, + double end_fraction); + +/** + Spatial operator: Shortest Line + + \param geom1 pointer to the first Geometry object. + \param geom2 pointer to the second Geometry object. + + \return the pointer to newly created Geometry object representing a Linestring; + NULL on failure. + \n the returned Linestring graphically represents the minimum distance + intercurrinng between both input geometries. + + \sa gaiaShortestLine_r, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaShortestLine()\n + not reentrant and thread unsafe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaShortestLine (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial operator: Shortest Line + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 pointer to the first Geometry object. + \param geom2 pointer to the second Geometry object. + + \return the pointer to newly created Geometry object representing a Linestring; + NULL on failure. + \n the returned Linestring graphically represents the minimum distance + intercurrinng between both input geometries. + + \sa gaiaShortestLine, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaShortestLine_r()\n + reentrant and thread-safe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaShortestLine_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial operator: Snap + + \param geom1 pointer to the first Geometry object. + \param geom2 pointer to the second Geometry object. + \param tolerance approximation factor + + \return the pointer to newly created Geometry object; NULL on failure. + \n the returned Geometry represents the first input Geometry (nicely + \e snapped to the second input Geometry, whenever is possible). + + \sa gaiaSnap_r, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaSnap()\n + not reentrant and thread unsafe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSnap (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2, + double tolerance); + +/** + Spatial operator: Snap + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 pointer to the first Geometry object. + \param geom2 pointer to the second Geometry object. + \param tolerance approximation factor + + \return the pointer to newly created Geometry object; NULL on failure. + \n the returned Geometry represents the first input Geometry (nicely + \e snapped to the second input Geometry, whenever is possible). + + \sa gaiaSnap, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaSnap_r()\n + reentrant and thread-safe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSnap_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2, + double tolerance); + +/** + Spatial operator: Line Merge + + \param geom pointer to input Geometry object. + + \return the pointer to newly created Geometry object; NULL on failure. + \n if possible, this representing a reassembled Linestring or MultiLinestring. + + \sa gaiaLineMerge_r, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaLineMerge()\n + not reentrant and thread unsafe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaLineMerge (gaiaGeomCollPtr geom); + +/** + Spatial operator: Line Merge + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to input Geometry object. + + \return the pointer to newly created Geometry object; NULL on failure. + \n if possible, this representing a reassembled Linestring or MultiLinestring. + + \sa gaiaLineMerge, gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaLineMerge_r()\n + reentrant and thread-safe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaLineMerge_r (const void *p_cache, + gaiaGeomCollPtr geom); + +/** + Spatial operator: Line Cut At Nodes + + \param geom1 pointer to input Geometry object [Linestring or MultiLinestring]. + \param geom2 pointer to input Geometry object [Point or MultiPoint]. + + \return the pointer to newly created Geometry object; NULL on failure. + \n if possible, any input Linestring will be split accordingly to given Node(s): + no point will be interpolated, existing Linestring Vertices will be evaluated. + + \sa gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaLinesCutAtNodes() + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaLinesCutAtNodes (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Spatial operator: Unary Union + + \param geom the input Geometry object. + + \return the pointer to newly created Geometry object: NULL on failure. + \n this function is the same as gaiaGeometryUnion, except in that this + works internally to the input Geometry itself. + NULL on failure. + + \sa gaiaUnaryUnion_r, gaiaFreeGeomColl, gaiaGeometryUnion, gaiaUnionCascaded + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaUnaryUnion()\n + not reentrant and thread unsafe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaUnaryUnion (gaiaGeomCollPtr geom); + +/** + Spatial operator: Unary Union + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom the input Geometry object. + + \return the pointer to newly created Geometry object: NULL on failure. + \n this function is the same as gaiaGeometryUnion, except in that this + works internally to the input Geometry itself. + NULL on failure. + + \sa gaiaUnaryUnion, gaiaFreeGeomColl, gaiaGeometryUnion, gaiaUnionCascaded + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaUnaryUnion_r()\n + reentrant and thread-safe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaUnaryUnion_r (const void *p_cache, + gaiaGeomCollPtr geom); + +/** + Determines the location of the closest Point on Linestring to the given Point + + \param ln_geom pointer to first input Geometry object [expected to be of + the lineal type]. + \param pt_geom pointer to second input Geometry object [expected to be a + Point]. + + \return the fraction [in the range 0.0 / 1.0] of ln_geom total length + where the closest Point to pt_geom lays. + + \sa gaiaLineLocatePoint_r + + \note not reentrant and thread unsafe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE double gaiaLineLocatePoint (gaiaGeomCollPtr ln_geom, + gaiaGeomCollPtr pt_geom); + +/** + Determines the location of the closest Point on Linestring to the given Point + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param ln_geom pointer to first input Geometry object [expected to be of + the lineal type]. + \param pt_geom pointer to second input Geometry object [expected to be a + Point]. + + \return the fraction [in the range 0.0 / 1.0] of ln_geom total length + where the closest Point to pt_geom lays. + + \sa gaiaLineLocatePoint + + \note reentrant and thread-safe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE double gaiaLineLocatePoint_r (const void *p_cache, + gaiaGeomCollPtr ln_geom, + gaiaGeomCollPtr pt_geom); + +/** + Topology check: test if a Geometry covers another one + + \param geom1 pointer to first input Geometry object. + \param geom2 pointer to second input Geometry object. + + \return 0 if false; any other value if geom1 \e spatially \e covers geom2. + + \sa gaiaGeomCollCovers_r, gaiaGeomCollPreparedCovers, gaiaGeomCollCoveredBy + + \note not reentrant and thead unsafe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollCovers (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Topology check: test if a Geometry covers another one + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 pointer to first input Geometry object. + \param geom2 pointer to second input Geometry object. + + \return 0 if false; any other value if geom1 \e spatially \e covers geom2. + + \sa gaiaGeomCollCovers, gaiaGeomCollPreparedCovers, gaiaGeomCollCoveredBy + + \note reentrant and thead-safe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollCovers_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Topology check: test if a Geometry covers another one (GEOSPreparedGeometry) + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 pointer to first input Geometry object. + \param blob1 the BLOB corresponding to the first Geometry + \param size1 the size (in bytes) of the first BLOB + \param geom2 pointer to second input Geometry object. + \param blob2 the BLOB corresponding to the second Geometry + \param size2 the size (in bytes) of the second BLOB + + \return 0 if false; any other value if geom1 \e spatially \e covers geom2. + + \note reentrant and thread-safe. + + \sa gaiaGeomCollCovers, gaiaGeomCollCovers_r + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollPreparedCovers (const void *p_cache, + gaiaGeomCollPtr geom1, + unsigned char *blob1, + int size1, + gaiaGeomCollPtr geom2, + unsigned char *blob2, + int size2); + +/** + Topology check: test if a Geometry is covered by another one + + \param geom1 pointer to first input Geometry object. + \param geom2 pointer to second input Geometry object. + + \return 0 if false; any other value if geom2 is \e spatially \e covered \e by + geom1. + + \sa gaiaGeomCollCoveredBy_r, gaiaGeomCollPreparedCoveredBy, gaiaGeomCollCovers + + \note not reentrant and thread unsafe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollCoveredBy (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Topology check: test if a Geometry is covered by another one + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 pointer to first input Geometry object. + \param geom2 pointer to second input Geometry object. + + \return 0 if false; any other value if geom2 is \e spatially \e covered \e by + geom1. + + \sa gaiaGeomCollCoveredBy, gaiaGeomCollPreparedCoveredBy, gaiaGeomCollCovers + + \note reentrant and thread-safe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollCoveredBy_r (const void *p_cache, + gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Topology check: test if a Geometry is covered by another one (GEOSPreparedGeometry) + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 pointer to first input Geometry object. + \param blob1 the BLOB corresponding to the first Geometry + \param size1 the size (in bytes) of the first BLOB + \param geom2 pointer to second input Geometry object. + \param blob2 the BLOB corresponding to the second Geometry + \param size2 the size (in bytes) of the second BLOB + + \return 0 if false; any other value if geom2 is \e spatially \e covered \e by + geom1. + + \sa gaiaGeomCollCoveredBy, gaiaGeomCollCoveredBy_r, gaiaGeomCollCovers + + \note reentrant and thread-safe. + + \remark \b GEOS-ADVANCED support required. + */ + GAIAGEO_DECLARE int gaiaGeomCollPreparedCoveredBy (const void *p_cache, + gaiaGeomCollPtr geom1, + unsigned char *blob1, + int size1, + gaiaGeomCollPtr geom2, + unsigned char *blob2, + int size2); + +/** + Utility function: SquareGrid + + \param geom the Geometry to be covered by the Grid. + \param origin_x the X ccordinate identifying the Grid Origin. + \param origin_y the Y coordinate identifiying the Grid Origin. + \param size the Grid cell-side size. + \param only_edges if non-zero will return a MULTILINESTRING, otherwise it will + return a MULTIPOLYGON containing square POLYGONs. + + \return the pointer to newly created Geometry object: NULL on failure. + \n this function will always return a MultiPolygon + \n NULL will be returned if any argument is invalid. + + \sa gaiaSquareGrid_r, gaiaFreeGeomColl, gaiaTriangularGrid, gaiaHexagonalGrid + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaSquareGrid()\n + not reentrant and thread unsafe. + + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSquareGrid (gaiaGeomCollPtr geom, + double origin_x, + double origin_y, + double size, + int only_edges); + +/** + Utility function: SquareGrid + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom the Geometry to be covered by the Grid. + \param origin_x the X ccordinate identifying the Grid Origin. + \param origin_y the Y coordinate identifiying the Grid Origin. + \param size the Grid cell-side size. + \param only_edges if non-zero will return a MULTILINESTRING, otherwise it will + return a MULTIPOLYGON containing square POLYGONs. + + \return the pointer to newly created Geometry object: NULL on failure. + \n this function will always return a MultiPolygon + \n NULL will be returned if any argument is invalid. + + \sa gaiaSquareGrid, gaiaFreeGeomColl, gaiaTriangularGrid, gaiaHexagonalGrid + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaSquareGrid_r()\n + reentrant and thread-safe. + + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSquareGrid_r (const void *p_cache, + gaiaGeomCollPtr geom, + double origin_x, + double origin_y, + double size, + int only_edges); + +/** + Utility function: TriangularGrid + + \param geom the Geometry to be covered by the Grid. + \param origin_x the X ccordinate identifying the Grid Origin. + \param origin_y the Y coordinate identifiying the Grid Origin. + \param size the Grid cell-side size. + \param only_edges if non-zero will return a MULTILINESTRING, otherwise it will + return a MULTIPOLYGON containing triangular POLYGONs. + + \return the pointer to newly created Geometry object: NULL on failure. + \n this function will always return a MultiPolygon + \n NULL will be returned if any argument is invalid. + + \sa gaiaTriangularGrid_r, gaiaFreeGeomColl, gaiaSquareGrid, gaiaHexagonalGrid + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaTriangularGrid()\n + not reentrant and thread unsafe. + + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaTriangularGrid (gaiaGeomCollPtr geom, + double origin_x, + double origin_y, + double size, + int only_edges); + +/** + Utility function: TriangularGrid + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom the Geometry to be covered by the Grid. + \param origin_x the X ccordinate identifying the Grid Origin. + \param origin_y the Y coordinate identifiying the Grid Origin. + \param size the Grid cell-side size. + \param only_edges if non-zero will return a MULTILINESTRING, otherwise it will + return a MULTIPOLYGON containing triangular POLYGONs. + + \return the pointer to newly created Geometry object: NULL on failure. + \n this function will always return a MultiPolygon + \n NULL will be returned if any argument is invalid. + + \sa gaiaTriangularGrid, gaiaFreeGeomColl, gaiaSquareGrid, gaiaHexagonalGrid + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaTriangularGrid_r()\n + reentrant and thread-safe. + + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaTriangularGrid_r (const void *p_cache, + gaiaGeomCollPtr geom, + double origin_x, + double origin_y, + double size, + int only_edges); + +/** + Utility function: HexagonalGrid + + \param geom the Geometry to be covered by the Grid. + \param origin_x the X ccordinate identifying the Grid Origin. + \param origin_y the Y coordinate identifiying the Grid Origin. + \param size the Grid cell-side size. + \param only_edges if non-zero will return a MULTILINESTRING, otherwise it will + return a MULTIPOLYGON containing hexagonal POLYGONs. + + \return the pointer to newly created Geometry object: NULL on failure. + \n this function will always return a MultiPolygon + \n NULL will be returned if any argument is invalid. + + \sa gaiaGexagonalGrid_r, gaiaFreeGeomColl, gaiaSquareGrid, gaiaTriangularGrid + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaHexagonalGrid()\n + not reentrant and thread unsafe. + + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaHexagonalGrid (gaiaGeomCollPtr geom, + double origin_x, + double origin_y, + double size, + int only_edges); + +/** + Utility function: HexagonalGrid + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom the Geometry to be covered by the Grid. + \param origin_x the X ccordinate identifying the Grid Origin. + \param origin_y the Y coordinate identifiying the Grid Origin. + \param size the Grid cell-side size. + \param only_edges if non-zero will return a MULTILINESTRING, otherwise it will + return a MULTIPOLYGON containing hexagonal POLYGONs. + + \return the pointer to newly created Geometry object: NULL on failure. + \n this function will always return a MultiPolygon + \n NULL will be returned if any argument is invalid. + + \sa gaiaGexagonalGrid, gaiaFreeGeomColl, gaiaSquareGrid, gaiaTriangularGrid + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaHexagonalGrid_r()\n + reentrant and thread-safe. + + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaHexagonalGrid_r (const void *p_cache, + gaiaGeomCollPtr geom, + double origin_x, + double origin_y, + double size, + int only_edges); + +#endif /* end GEOS advanced features */ + +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +#ifdef GEOS_TRUNK +#endif + +/** + Delaunay Triangulation + + \param geom pointer to input Geometry object. + \param tolerance optional snapping tolerance. + \param only_edges if non-zero will return a MULTILINESTRING, otherwise it will + return a MULTIPOLYGON containing triangular POLYGONs. + + \return the pointer to newly created Geometry object: NULL on failure. + \n NULL will be returned if any argument is invalid. + + \sa gaiaDelaunatTriangulation_r, + gaiaFreeGeomColl, gaiaVoronojDiagram, gaiaConcaveHull + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaDelaunayTriangulation()\n + not reentrant and thread unsafe. + + \remark \b GEOS-TRUNK support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaDelaunayTriangulation (gaiaGeomCollPtr + geom, + double tolerance, + int only_edges); + +/** + Delaunay Triangulation + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to input Geometry object. + \param tolerance optional snapping tolerance. + \param only_edges if non-zero will return a MULTILINESTRING, otherwise it will + return a MULTIPOLYGON containing triangular POLYGONs. + + \return the pointer to newly created Geometry object: NULL on failure. + \n NULL will be returned if any argument is invalid. + + \sa gaiaDelaunatTriangulation, + gaiaFreeGeomColl, gaiaVoronojDiagram, gaiaConcaveHull + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaDelaunayTriangulation_r()\n + reentrant and thread-safe. + + \remark \b GEOS-TRUNK support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaDelaunayTriangulation_r (const void + *p_cache, + gaiaGeomCollPtr + geom, + double + tolerance, + int + only_edges); + +/** + Voronoj Diagram + + \param geom pointer to input Geometry object. + \param extra_frame_size percent factor expanding the BBOX of input Geometry + \param tolerance optional snapping tolerance. + \param only_edges if non-zero will return a MULTILINESTRING, otherwise it will + return a MULTIPOLYGON. + + \return the pointer to newly created Geometry object: NULL on failure. + \n NULL will be returned if any argument is invalid. + + \sa gaiaVoronojDiagram_r, gaiaFreeGeomColl, gaiaDelaunayTriangulation + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaVoronojDiagram()\n + not reentrant and thread unsafe. + + \remark \b GEOS-TRUNK support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaVoronojDiagram (gaiaGeomCollPtr geom, + double extra_frame_size, + double tolerance, + int only_edges); + +/** + Voronoj Diagram + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to input Geometry object. + \param extra_frame_size percent factor expanding the BBOX of input Geometry + \param tolerance optional snapping tolerance. + \param only_edges if non-zero will return a MULTILINESTRING, otherwise it will + return a MULTIPOLYGON. + + \return the pointer to newly created Geometry object: NULL on failure. + \n NULL will be returned if any argument is invalid. + + \sa gaiaVoronojDiagram, gaiaFreeGeomColl, gaiaDelaunayTriangulation + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaVoronojDiagram_r()\n + reentrant and thread-safe. + + \remark \b GEOS-TRUNK support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaVoronojDiagram_r (const void *p_cache, + gaiaGeomCollPtr geom, + double + extra_frame_size, + double tolerance, + int only_edges); + +/** + Concave Hull + + \param geom pointer to input Geometry object. + \param factor multiplier used for filtering Delaunay triangles: please read the note. + \param tolerance optional snapping tolerance. + \param allow_holes if FALSE any interior hole will be suppressed. + + \return the pointer to newly created Geometry object (always of the Polygon type): + NULL on failure. + \n NULL will be returned if any argument is invalid. + + \sa gaiaConcaveHull_r, gaiaFreeGeomColl, gaiaDelaunayTriangulation + + \note This function will first create the Delauany Triangulation corresponding + to input Geometry, determining at the same time the \b standard \b deviation + for all edge's lengths. + \n Then in a second pass all Delaunay's triangles will be filtered, and all + triangles presenting at least one edge longer than \b standard \b deviation + \b * \b factor will be discarded. + \n All filtered triangles will then be merged altogether so to create the Concave Hull. + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaConcaveHull()\n + not reentrant and thread unsafe. + + \remark \b GEOS-TRUNK support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaConcaveHull (gaiaGeomCollPtr geom, + double factor, + double tolerance, + int allow_holes); + +/** + Concave Hull + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to input Geometry object. + \param factor multiplier used for filtering Delaunay triangles: please read the note. + \param tolerance optional snapping tolerance. + \param allow_holes if FALSE any interior hole will be suppressed. + + \return the pointer to newly created Geometry object (always of the Polygon type): + NULL on failure. + \n NULL will be returned if any argument is invalid. + + \sa gaiaConcaveHull, gaiaFreeGeomColl, gaiaDelaunayTriangulation + + \note This function will first create the Delauany Triangulation corresponding + to input Geometry, determining at the same time the \b standard \b deviation + for all edge's lengths. + \n Then in a second pass all Delaunay's triangles will be filtered, and all + triangles presenting at least one edge longer than \b standard \b deviation + \b * \b factor will be discarded. + \n All filtered triangles will then be merged altogether so to create the Concave Hull. + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaConcaveHull_r()\n + reentrant and thread-safe. + + \remark \b GEOS-TRUNK support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaConcaveHull_r (const void *p_cache, + gaiaGeomCollPtr geom, + double factor, + double tolerance, + int allow_holes); + +#endif /* end GEOS experimental features */ + +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +#ifdef ENABLE_LWGEOM +#endif + +/** + Resets the LWGEOM error and warning messages to an empty state + + \sa gaiaGetLwGeomErrorMsg, gaiaGetLwGeomWarningMsg, gaiaSetLwGeomErrorMsg, + gaiaSetLwGeomWarningMsg + + \note not reentrant and thread unsafe. + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE void gaiaResetLwGeomMsg (void); + +/** + Return the latest LWGEOM error message (if any) + + \return the latest LWGEOM error message: an empty string if no error was + previoysly found. + + \note not reentrant and thread unsafe. + + \sa gaiaResetLwGeomMsg, gaiaGetLwGeomWarningMsg, gaiaSetLwGeomErrorMsg, + gaiaSetLwGeomWarningMsg + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE const char *gaiaGetLwGeomErrorMsg (void); + +/** + Return the latest LWGEOM warning message (if any) + + \return the latest LWGEOM warning message: an empty string if no warning was + previoysly found. + + \sa gaiaResetLwGeomMsg, gaiaGetLwGeomErrorMsg, gaiaSetLwGeomErrorMsg, + gaiaSetLwGeomWarningMsg + + \note not reentrant and thread unsafe. + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE const char *gaiaGetLwGeomWarningMsg (void); + +/** + Set the current LWGEOM error message + + \param msg the error message to be set. + + \sa gaiaResetLwGeomMsg, gaiaGetLwGeomErrorMsg, gaiaGetLwGeomWarningMsg, + gaiaSetLwGeomWarningMsg + + \note not reentrant and thread unsafe. + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE void gaiaSetLwGeomErrorMsg (const char *msg); + +/** + Set the current LWGEOM warning message + + \param msg the warning message to be set. + + \sa gaiaResetLwGeomMsg, gaiaGetLwGeomErrorMsg, gaiaGetLwGeomWarningMsg, + gaiaSetLwGeomErrorMsg + + \note not reentrant and thread unsafe. + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE void gaiaSetLwGeomWarningMsg (const char *msg); + +/** + Utility function: MakeValid + + \param geom the input Geometry object. + + \return the pointer to newly created Geometry object: NULL on failure. + \n this function will attempt to create a valid representation of a given + invalid geometry without loosing any of the input vertices. + \n Already-valid geometries are returned without further intervention. + \n NULL will be returned if the passed argument is invalid. + + \sa gaiaFreeGeomColl, gaiaMakeValidDiscarded + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaMakeValid() + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMakeValid (gaiaGeomCollPtr geom); + +/** + Utility function: MakeValidDiscarded + + \param geom the input Geometry object. + + \return the pointer to newly created Geometry object: NULL on failure. + \n this function will attempt to collect any invalid item (offending + geometries) discarded by gaiaMakeValid while building a valid Geometry. + \n Saving any discarded item could be useful for a finer (manual) adjustment. + \n NULL will be returned if gaiaMakeValid hasn't identified any offending item + to be discarded during the validation. + + \sa gaiaFreeGeomColl, gaiaMakeValid + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaMakeValidDiscarded() + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMakeValidDiscarded (gaiaGeomCollPtr + geom); + +/** + Utility function: Segmentize + + \param geom the input Geometry object. + \param dist the meximum segment length. + + \return the pointer to newly created Geometry object: NULL on failure. + \n this function will return a modified geometry having no segment longer than the given distance. + \n Distance computation is performed in 2d only. + \n all Points or segments shorter than 'dist' will be returned without further intervention. + \n NULL will be returned if the passed argument is invalid. + + \sa gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaSegmentize() + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSegmentize (gaiaGeomCollPtr geom, + double dist); + +/** + Utility function: Azimuth + + \param xa the X coordinate of PointA. + \param ya the Y coordinate of PointA. + \param xb the X ccordinate of PointB. + \param yb the Y coordinate of PointB. + \param azimuth on completion this variable will contain the angle in radians from + the horizontal of the vector defined by pointA and pointB. + \n Angle is computed clockwise from down-to-up: on the clock: 12=0; 3=PI/2; 6=PI; 9=3PI/2. + + \return 0 on failure: any other value on success + + \sa gaiaProjectedPoint + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE int gaiaAzimuth (double xa, double ya, double xb, + double yb, double *azimuth); + +/** + Utility function: EllipsoidAzimuth + + \param xa the X coordinate of PointA. + \param ya the Y coordinate of PointA. + \param xb the X ccordinate of PointB. + \param yb the Y coordinate of PointB. + \param a major axis of the reference spheroid. + \param b minor axis of the reference spheroid. + \param azimuth on completion this variable will contain the angle in radians from + the horizontal of the vector defined by pointA and pointB. + \n Angle is computed clockwise from down-to-up: on the clock: 12=0; 3=PI/2; 6=PI; 9=3PI/2. + + \return 0 on failure: any other value on success + + \sa gaiaAzimuth + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE int gaiaEllipsoidAzimuth (double xa, double ya, double xb, + double yb, double a, double b, + double *azimuth); + +/** + Utility function: ProjectedPoint + + \param x1 the X coordinate of the Start Point. + \param y1 the Y coordinate of the Start Point. + \param a major axis of the reference spheroid. + \param b minor axis of the reference spheroid. + \param distance a distance expressed in Meters + \param azimuth (aka bearing aka heading) expressed in radians; + on the clock: 12=0; 3=PI/2; 6=PI; 9=3PI/2. + \param x2 on completion this variable will contain the the X coordinate + of the Projected Point. + \param y2 on completion this variable will contain the the Y coordinate + of the Projected Point. + + \return 0 on failure: any other value on success + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE int gaiaProjectedPoint (double x1, double y1, double a, + double b, double distance, + double azimuth, double *x2, + double *y2); + +/** + Utility function: GeoHash + + \param geom the input geometry. + \param precision the expected precision: if <= 0 will be automatically determined. + + \return NULL on failure: a null-terminated text string on success + + \note you are responsible to free (before or after) any text string returned + by gaiaGeoHash() + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE char *gaiaGeoHash (gaiaGeomCollPtr geom, int precision); + +/** + Utility function: AsX3D + + \param geom the input geometry. + \param srs the WKT SRS definition. + \param precision the expected precision (coord decimal digits). + \param options + \param refid the X3D namespace + + \return NULL on failure: a null-terminated text string on success + + \note you are responsible to free (before or after) any text string returned + by gaiaAsX3D() + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE char *gaiaAsX3D (gaiaGeomCollPtr geom, const char *srs, + int precision, int options, + const char *refid); + +/** + Calculates the minimum 3D distance intercurring between two Geometry objects + + \param geom1 the first Geometry object + \param geom2 the second Geometry object + \param dist on completion this variable will contain the calculated distance + + \return 0 on failure: any other value on success. + + \sa gaiaGeomCollDistance, gaiaMaxDistance, gaia3DMaxDisance + + \note this function computes the 3D cartesian distance (if Z is supported) + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE int gaia3DDistance (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2, double *dist); + +/** + Calculates the maximum 2D distance intercurring between two Geometry objects + + \param geom1 the first Geometry object + \param geom2 the second Geometry object + \param dist on completion this variable will contain the calculated distance + + \return 0 on failure: any other value on success. + + \sa gaiaGeomCollDistance, gaia3DDistance, gaia3DMaxDistance + + \note this function computes the 2D maximum cartesian distance (Z is always ignored) + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE int gaiaMaxDistance (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2, double *dist); + +/** + Calculates the maximum 3D distance intercurring between two Geometry objects + + \param geom1 the first Geometry object + \param geom2 the second Geometry object + \param dist on completion this variable will contain the calculated distance + + \return 0 on failure: any other value on success. + + \sa gaiaGeomCollDistance, gaia3DDistance, gaiaMaxDistance + + \note this function computes the 3D maximum cartesian distance (if Z is supported) + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE int gaia3DMaxDistance (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2, double *dist); + +/** + Utility function: Split + + \param input the input Geometry object. + \param blade the blade Geometry object. + + \return the pointer to newly created Geometry object: NULL on failure. + \n The function supports splitting a line by point, a line by line, a polygon by line. + + \sa gaiaFreeGeomColl, gaiaSplitLeft, gaiaSplitRight + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaSplit() + + \note gaiaSplit will return both the \b left and the \b right split halves at the same time. + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSplit (gaiaGeomCollPtr input, + gaiaGeomCollPtr blade); + +/** + Utility function: SplitLeft + + \param input the input Geometry object. + \param blade the blade Geometry object. + + \return the pointer to newly created Geometry object: NULL on failure. + \n The function supports splitting a line by point, a line by line, a polygon by line. + + \sa gaiaFreeGeomColl, gaiaSplit, gaiaSplitRight + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaSplitLeft() + + \note gaiaSplitLeft will only return the \b left split half; NULL may be eventually + returned if empty. + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSplitLeft (gaiaGeomCollPtr input, + gaiaGeomCollPtr blade); + +/** + Utility function: SplitRight + + \param input the input Geometry object. + \param blade the blade Geometry object. + + \return the pointer to newly created Geometry object: NULL on failure. + \n The function supports splitting a line by point, a line by line, a polygon by line. + + \sa gaiaFreeGeomColl, gaiaSplit, gaiaSplitLeft + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaSplitRight() + + \note gaiaSplitLeft will only return the \b right split half; NULL may be eventually + returned if empty. + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSplitRight (gaiaGeomCollPtr input, + gaiaGeomCollPtr blade); + +/** + Measures the total Area for a Geometry object (geodesic) + + \param geom pointer to Geometry object + \param a major axis of the reference spheroid. + \param b minor axis of the reference spheroid. + \param use_ellipsoid if TRUE will measure the Area on the Ellipsoid, + otherwise on the Sphere + \param area on completion this variable will contain the measured area + + \return 0 on failure: any other value on success + + \sa gaiaGeomCollLength, gaiaMeasureArea, gaiaGeomCollArea + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE int gaiaGeodesicArea (gaiaGeomCollPtr geom, double a, + double b, int use_ellipsoid, + double *area); + +/** + Utility function: re-noding lines + + \param input the input Geometry object. + + \return the pointer to newly created Geometry object: NULL on failure. + \n The function fully nodes a set of linestrings, using the least nodes + preserving all the input ones. + + \sa gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaNode() + + \remark \b LWGEOM support required. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaNodeLines (gaiaGeomCollPtr input); + +#endif /* end LWGEOM support */ + +#endif /* end including GEOS */ + +/** + Utility function: SnapToGrid + + \param geom the input Geometry object. + \param origin_x the X ccordinate identifying the Grid Origin. + \param origin_y the Y coordinate identifiying the Grid Origin. + \param origin_z the Z ccordinate identifying the Grid Origin. + \param origin_m the M coordinate identifiying the Grid Origin. + \param size_x Grid cell size (X axis). + \param size_y Grid cell size (Y axis). + \param size_z Grid cell size (Z axis). + \param size_m Grid cell size (M axis). + + \return the pointer to newly created Geometry object: NULL on failure. + \n this function will return a modified geometry having all points snapped to a regular Grid + defined by its origin and cell size. + \n Consecutive points falling on the same cell will be removed, eventually returning NULL if + \n output points are not enough to define a geometry of the given type. + \n Collapsed geometries in a collection are stripped from it. + \n Specify 0 as size for any dimension you don't want to snap to a grid. + \n NULL will be returned if the passed argument is invalid. + + \sa gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaSnapToGrid() + + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSnapToGrid (gaiaGeomCollPtr geom, + double origin_x, + double origin_y, + double origin_z, + double origin_m, + double size_x, + double size_y, + double size_z, + double size_m); + +#ifdef __cplusplus +} +#endif + +#endif /* _GG_ADVANCED_H */ diff --git a/src/spatialite/src/headers/spatialite/gg_const.h b/src/spatialite/src/headers/spatialite/gg_const.h new file mode 100644 index 0000000..0ad1b5e --- /dev/null +++ b/src/spatialite/src/headers/spatialite/gg_const.h @@ -0,0 +1,572 @@ +/* + gg_const.h -- Gaia common support for geometries: constants + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Klaus Foerster klaus.foerster@svg.cc + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + + +/** + \file gg_const.h + + Geometry constants and macros + */ + +#ifndef _GG_CONST_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _GG_CONST_H +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* constant values for getVectorLayersList modes */ + +/** mode: FAST (QGIS data-provider) */ +#define GAIA_VECTORS_LIST_FAST 0 + +/** mode: OPTIMISTIC */ +#define GAIA_VECTORS_LIST_OPTIMISTIC 1 + +/** mode: PESSIMISTIC */ +#define GAIA_VECTORS_LIST_PESSIMISTIC 2 + +/* constant values for Vector Layer Types */ + +/** Vector Layer: unknown type */ +#define GAIA_VECTOR_UNKNOWN -1 +/** Vector Layer: Spatial Table */ +#define GAIA_VECTOR_TABLE 1 +/** Vector Layer: Spatial View */ +#define GAIA_VECTOR_VIEW 2 +/** Vector Layer: Virtual Shape */ +#define GAIA_VECTOR_VIRTUAL 3 + +/* constant values for Vector Layer Geometry Types */ + +/** Vector Layer Geometry: Geometry */ +#define GAIA_VECTOR_GEOMETRY 0 +/** Vector Layer Geometry: Point */ +#define GAIA_VECTOR_POINT 1 +/** Vector Layer Geometry: Linestring */ +#define GAIA_VECTOR_LINESTRING 2 +/** Vector Layer Geometry: Polygon */ +#define GAIA_VECTOR_POLYGON 3 +/** Vector Layer Geometry: MultiPoint */ +#define GAIA_VECTOR_MULTIPOINT 4 +/** Vector Layer Geometry: MultiLinestring */ +#define GAIA_VECTOR_MULTILINESTRING 5 +/** Vector Layer Geometry: MultiPolygon */ +#define GAIA_VECTOR_MULTIPOLYGON 6 +/** Vector Layer Geometry: GeometryCollection */ +#define GAIA_VECTOR_GEOMETRYCOLLECTION 7 + +/* constant values for Spatial Index */ + +/** Vector Layer: no Spatial Index */ +#define GAIA_SPATIAL_INDEX_NONE 0 +/** Vector Layer: Spatial Index RTree */ +#define GAIA_SPATIAL_INDEX_RTREE 1 +/** Vector Layer: Spatial Index MbrCache */ +#define GAIA_SPATIAL_INDEX_MBRCACHE 2 + +/* constant values for generic geometry classes */ + +/** WKT parser: unknown Geometry type */ +#define GAIA_TYPE_NONE 0 +/** WKT parser: Point Geometry type */ +#define GAIA_TYPE_POINT 1 +/** WKT parser: Linestring Geometry type */ +#define GAIA_TYPE_LINESTRING 2 +/** WKT parser: Polygon Geometry type */ +#define GAIA_TYPE_POLYGON 3 + +/* constants that defines byte storage order */ +/** Big-Endian marker */ +#define GAIA_BIG_ENDIAN 0 +/** Little-Endian marker */ +#define GAIA_LITTLE_ENDIAN 1 + +/* constants that defines special markers used for encoding of SpatiaLite internal BLOB geometries */ +/** BLOB-Geometry internal marker: START */ +#define GAIA_MARK_START 0x00 +/** BLOB-Geometry internal marker: END */ +#define GAIA_MARK_END 0xFE +/** BLOB-Geometry internal marker: MBR */ +#define GAIA_MARK_MBR 0x7C +/** BLOB-Geometry internal marker: ENTITY */ +#define GAIA_MARK_ENTITY 0x69 + +/* constants that defines GEOMETRY CLASSes */ +/** BLOB-Geometry CLASS: unknown */ +#define GAIA_UNKNOWN 0 +/** BLOB-Geometry CLASS: POINT */ +#define GAIA_POINT 1 +/** BLOB-Geometry CLASS: LINESTRING */ +#define GAIA_LINESTRING 2 +/** BLOB-Geometry CLASS: POLYGON */ +#define GAIA_POLYGON 3 +/** BLOB-Geometry CLASS: MULTIPOINT */ +#define GAIA_MULTIPOINT 4 +/** BLOB-Geometry CLASS: MULTILINESTRING */ +#define GAIA_MULTILINESTRING 5 +/** BLOB-Geometry CLASS: MULTIPOLYGON */ +#define GAIA_MULTIPOLYGON 6 +/** BLOB-Geometry CLASS: GEOMETRYCOLLECTION */ +#define GAIA_GEOMETRYCOLLECTION 7 +/** BLOB-Geometry CLASS: POINT Z */ +#define GAIA_POINTZ 1001 +/** BLOB-Geometry CLASS: LINESTRING Z */ +#define GAIA_LINESTRINGZ 1002 +/** BLOB-Geometry CLASS: POLYGON Z */ +#define GAIA_POLYGONZ 1003 +/** BLOB-Geometry CLASS: MULTIPOINT Z */ +#define GAIA_MULTIPOINTZ 1004 +/** BLOB-Geometry CLASS: MULTILINESTRING Z */ +#define GAIA_MULTILINESTRINGZ 1005 +/** BLOB-Geometry CLASS: MULTIPOLYGON Z */ +#define GAIA_MULTIPOLYGONZ 1006 +/** BLOB-Geometry CLASS: GEOMETRYCOLLECTION Z */ +#define GAIA_GEOMETRYCOLLECTIONZ 1007 +/** BLOB-Geometry CLASS: POINT M */ +#define GAIA_POINTM 2001 +/** BLOB-Geometry CLASS: LINESTRING M */ +#define GAIA_LINESTRINGM 2002 +/** BLOB-Geometry CLASS: POLYGON M */ +#define GAIA_POLYGONM 2003 +/** BLOB-Geometry CLASS: MULTIPOINT M */ +#define GAIA_MULTIPOINTM 2004 +/** BLOB-Geometry CLASS: MULTILINESTRING M */ +#define GAIA_MULTILINESTRINGM 2005 +/** BLOB-Geometry CLASS: MULTIPOLYGON M */ +#define GAIA_MULTIPOLYGONM 2006 +/** BLOB-Geometry CLASS: GEOMETRYCOLLECTION M */ +#define GAIA_GEOMETRYCOLLECTIONM 2007 +/** BLOB-Geometry CLASS: POINT ZM */ +#define GAIA_POINTZM 3001 +/** BLOB-Geometry CLASS: LINESTRING ZM */ +#define GAIA_LINESTRINGZM 3002 +/** BLOB-Geometry CLASS: POLYGON ZM */ +#define GAIA_POLYGONZM 3003 +/** BLOB-Geometry CLASS: MULTIPOINT ZM */ +#define GAIA_MULTIPOINTZM 3004 +/** BLOB-Geometry CLASS: MULTILINESTRING ZM */ +#define GAIA_MULTILINESTRINGZM 3005 +/** BLOB-Geometry CLASS: MULTIPOLYGON ZM */ +#define GAIA_MULTIPOLYGONZM 3006 +/** BLOB-Geometry CLASS: GEOMETRYCOLLECTION ZM */ +#define GAIA_GEOMETRYCOLLECTIONZM 3007 + +/* constants that defines Compressed GEOMETRY CLASSes */ +/** BLOB-Geometry CLASS: compressed LINESTRING */ +#define GAIA_COMPRESSED_LINESTRING 1000002 +/** BLOB-Geometry CLASS: compressed POLYGON */ +#define GAIA_COMPRESSED_POLYGON 1000003 +/** BLOB-Geometry CLASS: compressed LINESTRING Z */ +#define GAIA_COMPRESSED_LINESTRINGZ 1001002 +/** BLOB-Geometry CLASS: compressed POLYGON Z */ +#define GAIA_COMPRESSED_POLYGONZ 1001003 +/** BLOB-Geometry CLASS: compressed LINESTRING M */ +#define GAIA_COMPRESSED_LINESTRINGM 1002002 +/** BLOB-Geometry CLASS: compressed POLYGON M */ +#define GAIA_COMPRESSED_POLYGONM 1002003 +/** BLOB-Geometry CLASS: compressed LINESTRING ZM */ +#define GAIA_COMPRESSED_LINESTRINGZM 1003002 +/** BLOB-Geometry CLASS: compressed POLYGON ZM */ +#define GAIA_COMPRESSED_POLYGONZM 1003003 + +/* constants that defines GEOS-WKB 3D CLASSes */ +/** GEOS-WKB 3D CLASS: POINT Z */ +#define GAIA_GEOSWKB_POINTZ -2147483647 +/** GEOS-WKB 3D CLASS: LINESTRING Z */ +#define GAIA_GEOSWKB_LINESTRINGZ -2147483646 +/** GEOS-WKB 3D CLASS: POLYGON Z */ +#define GAIA_GEOSWKB_POLYGONZ -2147483645 +/** GEOS-WKB 3D CLASS: MULTIPOINT Z */ +#define GAIA_GEOSWKB_MULTIPOINTZ -2147483644 +/** GEOS-WKB 3D CLASS: MULTILINESTRING Z */ +#define GAIA_GEOSWKB_MULTILINESTRINGZ -2147483643 +/** GEOS-WKB 3D CLASS: MULTIPOLYGON Z */ +#define GAIA_GEOSWKB_MULTIPOLYGONZ -2147483642 +/** GEOS-WKB 3D CLASS: POINT Z */ +#define GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ -2147483641 + +/* constants that defines multitype values */ +/** DBF data type: NULL */ +#define GAIA_NULL_VALUE 0 +/** DBF data type: TEXT */ +#define GAIA_TEXT_VALUE 1 +/** DBF data type: INT */ +#define GAIA_INT_VALUE 2 +/** DBF data type: DOUBLE */ +#define GAIA_DOUBLE_VALUE 3 + +/* constants that defines POINT index for LINESTRING */ +/** Linestring/Ring functions: START POINT */ +#define GAIA_START_POINT 1 +/** Linestring/Ring functions: END POINT */ +#define GAIA_END_POINT 2 +/** Linestring/Ring functions: POINTN */ +#define GAIA_POINTN 3 + +/* constants that defines MBRs spatial relationships */ +/** MBR relationships: CONTAINS */ +#define GAIA_MBR_CONTAINS 1 +/** MBR relationships: DISJOINT */ +#define GAIA_MBR_DISJOINT 2 +/** MBR relationships: EQUAL */ +#define GAIA_MBR_EQUAL 3 +/** MBR relationships: INTERSECTS */ +#define GAIA_MBR_INTERSECTS 4 +/** MBR relationships: OVERLAP */ +#define GAIA_MBR_OVERLAPS 5 +/** MBR relationships: TOUCHES */ +#define GAIA_MBR_TOUCHES 6 +/** MBR relationships: WITHIN */ +#define GAIA_MBR_WITHIN 7 + +/* constants used for FilterMBR */ +/** FilerMBR relationships: WITHIN */ +#define GAIA_FILTER_MBR_WITHIN 74 +/** FilerMBR relationships: CONTAINS */ +#define GAIA_FILTER_MBR_CONTAINS 77 +/** FilerMBR relationships: INTERSECTS */ +#define GAIA_FILTER_MBR_INTERSECTS 79 +/** FilerMBR relationships: DECLARE */ +#define GAIA_FILTER_MBR_DECLARE 89 + +/* constants defining SVG default values */ +/** SVG precision: RELATIVE */ +#define GAIA_SVG_DEFAULT_RELATIVE 0 +/** SVG precision: DEFAULT */ +#define GAIA_SVG_DEFAULT_PRECISION 6 +/** SVG precision: MAX */ +#define GAIA_SVG_DEFAULT_MAX_PRECISION 15 + +/* constants used for VirtualNetwork */ +/** VirtualNetwork internal markers: START */ +#define GAIA_NET_START 0x67 +/** VirtualNetwork internal markers: 64 bit START */ +#define GAIA_NET64_START 0x68 +/** VirtualNetwork internal markers: A-Stat START */ +#define GAIA_NET64_A_STAR_START 0x69 +/** VirtualNetwork internal markers: END */ +#define GAIA_NET_END 0x87 +/** VirtualNetwork internal markers: HEADER */ +#define GAIA_NET_HEADER 0xc0 +/** VirtualNetwork internal markers: CODE */ +#define GAIA_NET_CODE 0xa6 +/** VirtualNetwork internal markers: ID */ +#define GAIA_NET_ID 0xb5 +/** VirtualNetwork internal markers: NODE */ +#define GAIA_NET_NODE 0xde +/** VirtualNetwork internal markers: ARC */ +#define GAIA_NET_ARC 0x54 +/** VirtualNetwork internal markers: TABLE */ +#define GAIA_NET_TABLE 0xa0 +/** VirtualNetwork internal markers: FROM */ +#define GAIA_NET_FROM 0xa1 +/** VirtualNetwork internal markers: TO */ +#define GAIA_NET_TO 0xa2 +/** VirtualNetwork internal markers: GEOM */ +#define GAIA_NET_GEOM 0xa3 +/** VirtualNetwork internal markers: NAME */ +#define GAIA_NET_NAME 0xa4 +/** VirtualNetwork internal markers: COEFF */ +#define GAIA_NET_A_STAR_COEFF 0xa5 +/** VirtualNetwork internal markers: BLOCK */ +#define GAIA_NET_BLOCK 0xed + +/* constants used for Coordinate Dimensions */ +/** Coordinate Dimensions: XY */ +#define GAIA_XY 0x00 +/** Coordinate Dimensions: XYZ */ +#define GAIA_XY_Z 0x01 +/** Coordinate Dimensions: XYM */ +#define GAIA_XY_M 0x02 +/** Coordinate Dimensions: XYZM */ +#define GAIA_XY_Z_M 0x03 + +/* constants used for length unit conversion */ +/** Length unit conversion: Kilometer */ +#define GAIA_KM 0 +/** Length unit conversion: Meter */ +#define GAIA_M 1 +/** Length unit conversion: Decimeter */ +#define GAIA_DM 2 +/** Length unit conversion: Centimeter */ +#define GAIA_CM 3 +/** Length unit conversion: Millimeter */ +#define GAIA_MM 4 +/** Length unit conversion: International Nautical Mile */ +#define GAIA_KMI 5 +/** Length unit conversion: Inch */ +#define GAIA_IN 6 +/** Length unit conversion: Feet */ +#define GAIA_FT 7 +/** Length unit conversion: Yard */ +#define GAIA_YD 8 +/** Length unit conversion: Mile */ +#define GAIA_MI 9 +/** Length unit conversion: Fathom */ +#define GAIA_FATH 10 +/** Length unit conversion: Chain */ +#define GAIA_CH 11 +/** Length unit conversion: Link */ +#define GAIA_LINK 12 +/** Length unit conversion: US Inch */ +#define GAIA_US_IN 13 +/** Length unit conversion: US Feet */ +#define GAIA_US_FT 14 +/** Length unit conversion: US Yard */ +#define GAIA_US_YD 15 +/** Length unit conversion: US Chain */ +#define GAIA_US_CH 16 +/** Length unit conversion: US Mile */ +#define GAIA_US_MI 17 +/** Length unit conversion: Indian Yard */ +#define GAIA_IND_YD 18 +/** Length unit conversion: Indian Feet */ +#define GAIA_IND_FT 19 +/** Length unit conversion: Indian Chain */ +#define GAIA_IND_CH 20 +/** Length unit conversion: MIN */ +#define GAIA_MIN_UNIT GAIA_KM +/** Length unit conversion: MAX */ +#define GAIA_MAX_UNIT GAIA_IND_CH + +/* constants used for SHAPES */ +/** SHP shape: unknown */ +#define GAIA_SHP_NULL 0 +/** SHP shape: POINT */ +#define GAIA_SHP_POINT 1 +/** SHP shape: POLYLINE */ +#define GAIA_SHP_POLYLINE 3 +/** SHP shape: POLYGON */ +#define GAIA_SHP_POLYGON 5 +/** SHP shape: MULTIPOINT */ +#define GAIA_SHP_MULTIPOINT 8 +/** SHP shape: POINT Z */ +#define GAIA_SHP_POINTZ 11 +/** SHP shape: POLYLINE Z */ +#define GAIA_SHP_POLYLINEZ 13 +/** SHP shape: POLYGON Z */ +#define GAIA_SHP_POLYGONZ 15 +/** SHP shape: MULTIPOINT Z */ +#define GAIA_SHP_MULTIPOINTZ 18 +/** SHP shape: POINT M */ +#define GAIA_SHP_POINTM 21 +/** SHP shape: POLYLINE M */ +#define GAIA_SHP_POLYLINEM 23 +/** SHP shape: POLYGON M */ +#define GAIA_SHP_POLYGONM 25 +/** SHP shape: MULTIPOINT M */ +#define GAIA_SHP_MULTIPOINTM 28 + +/* constants used for Clone Special modes */ +/** Clone Special Mode: Same Order as input */ +#define GAIA_SAME_ORDER 0 +/** Clone Special Mode: Reversed Order */ +#define GAIA_REVERSE_ORDER -1 +/** Clone Special Mode: apply Left Handle Rule to Polygon Rings */ +#define GAIA_LHR_ORDER -2 + +/* macros */ +/** + macro extracting XY coordinates + + \param xy pointer [const void *] to COORD mem-array + \param v [int] point index [first point has index 0] + \param x [double *] X coordinate + \param y [double *] Y coordinate + + \sa gaiaLineGetPoint, gaiaRingGetPoint + + \note using this macro on behalf of COORDs not of [XY] dims may cause serious + problems + */ +#define gaiaGetPoint(xy,v,x,y) \ + {*x = xy[(v) * 2]; \ + *y = xy[(v) * 2 + 1];} + +/** + macro setting XY coordinates + + \param xy pointer [const void *] to COORD mem-array + \param v [int] point index [first point has index 0] + \param x [double] X coordinate + \param y [double] Y coordinate + + \sa gaiaLineSetPoint, gaiaRingSetPoint + + \note using this macro on behalf on COORDs not of [XY] dims may cause + serious problems + */ +#define gaiaSetPoint(xy,v,x,y) \ + {xy[(v) * 2] = x; \ + xy[(v) * 2 + 1] = y;} + +/** + macro extracting XYZ coordinates + + \param xyz pointer [const void *] to COORD mem-array + \param v [int] point index [first point has index 0] + \param x [double *] X coordinate + \param y [double *] Y coordinate + \param z [double *] Z coordinate + + \sa gaiaLineGetPoint, gaiaRingGetPoint + + \note using this macro on behalf of COORDs not of [XYZ] dims may cause serious + problems + */ +#define gaiaGetPointXYZ(xyz,v,x,y,z) \ + {*x = xyz[(v) * 3]; \ + *y = xyz[(v) * 3 + 1]; \ + *z = xyz[(v) * 3 + 2];} + +/** + macro setting XYZ coordinates + + \param xyz pointer [const void *] to COORD mem-array + \param v [int] point index [first point has index 0] + \param x [double] X coordinate + \param y [double] Y coordinate + \param z [double] Z coordinate + + \sa gaiaLineSetPoint, gaiaRingSetPoint + + \note using this macro on behalf on COORDs not of [XYZ] dims may cause + serious problems + */ +#define gaiaSetPointXYZ(xyz,v,x,y,z) \ + {xyz[(v) * 3] = x; \ + xyz[(v) * 3 + 1] = y; \ + xyz[(v) * 3 + 2] = z;} + +/** + macro extracting XYM coordinates + + \param xym pointer [const void *] to COORD mem-array + \param v [int] point index [first point has index 0] + \param x [double *] X coordinate + \param y [double *] Y coordinate + \param m [double *] M measure + + \sa gaiaLineGetPoint, gaiaRingGetPoint + + \note using this macro on behalf of COORDs not of [XYM] dims may cause serious + problems + */ +#define gaiaGetPointXYM(xym,v,x,y,m) \ + {*x = xym[(v) * 3]; \ + *y = xym[(v) * 3 + 1]; \ + *m = xym[(v) * 3 + 2];} + +/** + macro setting XYM coordinates + + \param xym pointer [const void *] to COORD mem-array + \param v [int] point index [first point has index 0] + \param x [double] X coordinate + \param y [double] Y coordinate + \param m [double] M measure + + \sa gaiaLineSetPoint, gaiaRingSetPoint + + \note using this macro on behalf on COORDs not of [XYM] dims may cause + serious problems + */ +#define gaiaSetPointXYM(xym,v,x,y,m) \ + {xym[(v) * 3] = x; \ + xym[(v) * 3 + 1] = y; \ + xym[(v) * 3 + 2] = m;} + +/** + macro extracting XYZM coordinates + + \param xyzm pointer [const void *] to COORD mem-array + \param v [int] point index [first point has index 0] + \param x [double *] X coordinate + \param y [double *] Y coordinate + \param z [double *] Z coordinate + \param m [double *] M measure + + \sa gaiaLineGetPoint, gaiaRingGetPoint + + \note using this macro on behalf of COORDs not of [XYZM] dims may cause serious + problems + */ +#define gaiaGetPointXYZM(xyzm,v,x,y,z,m) \ + {*x = xyzm[(v) * 4]; \ + *y = xyzm[(v) * 4 + 1]; \ + *z = xyzm[(v) * 4 + 2]; \ + *m = xyzm[(v) * 4 + 3];} + +/** + macro setting XYZM coordinates + + \param xyzm pointer [const void *] to COORD mem-array + \param v [int] point index [first point has index 0] + \param x [double] X coordinate + \param y [double] Y coordinate + \param z [double] Z coordinate + \param m [double] M measure + + \sa gaiaLineSetPoint, gaiaRingSetPoint + + \note using this macro on behalf on COORDs not of [XYZM] dims may cause + serious problems + */ +#define gaiaSetPointXYZM(xyzm,v,x,y,z,m) \ + {xyzm[(v) * 4] = x; \ + xyzm[(v) * 4 + 1] = y; \ + xyzm[(v) * 4 + 2] = z; \ + xyzm[(v) * 4 + 3] = m;} + + +#ifdef __cplusplus +} +#endif + +#endif /* _GG_CONST_H */ diff --git a/src/spatialite/src/headers/spatialite/gg_core.h b/src/spatialite/src/headers/spatialite/gg_core.h new file mode 100644 index 0000000..b543ab7 --- /dev/null +++ b/src/spatialite/src/headers/spatialite/gg_core.h @@ -0,0 +1,1959 @@ +/* + gg_core.h -- Gaia common support for geometries: core functions + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + + +/** + \file gg_core.h + + Geometry handling functions: core + */ + +#ifndef _GG_CORE_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _GG_CORE_H +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* function prototypes */ + +/** + Safely frees any dynamic memory block allocated by the library itself + + \param ptr pointer to dynamically allocated memory + + \note on some platforms (most notably, Microsoft Windows) many different + runtime libraries may actually support the same process. + \n attempting to free() a memory block allocated by a different runtime + module may easily cause fatal memory corruption. + */ + GAIAGEO_DECLARE void gaiaFree (void *ptr); + +/** + Allocates a 2D POINT [XY] + + \param x the X coordinate. + \param y the Y coordinate. + + \return the pointer to the newly created POINT object: NULL on failure + + \sa gaiaFreePoint + + \note you are responsible to destroy (before or after) any allocated + POINT, unless you've passed ownership of the POINT object to some + further object: in this case destroying the higher order object will + implicitly destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaPointPtr gaiaAllocPoint (double x, double y); + +/** + Allocates a 3D POINT [XYZ] + + \param x the X coordinate. + \param y the Y coordinate. + \param z the Z coordinate. + + \return the pointer to the newly created POINT object: NULL on failure + + \sa gaiaFreePoint + + \note you are responsible to destroy (before or after) any allocated + POINT, unless you've passed ownership of the POINT object to some + further object: in this case destroying the higher order object will + implicitly destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaPointPtr gaiaAllocPointXYZ (double x, double y, + double z); + +/** + Allocates a 2D POINT [XYM] + + \param x the X coordinate. + \param y the Y coordinate. + \param m the M measure. + + \return the pointer to the newly created POINT object: NULL on failure + + \sa gaiaFreePoint + + \note you are responsible to destroy (before or after) any allocated + POINT, unless you've passed ownership of the POINT object to some + further object: in this case destroying the higher order object will + implicitly destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaPointPtr gaiaAllocPointXYM (double x, double y, + double m); + +/** + Allocates a 3D POINT [XYZM] + + \param x the X coordinate. + \param y the Y coordinate. + \param z the Z coordinate. + \param m the M measure. + + \return the pointer to the newly created POINT object: NULL on failure + + \sa gaiaFreePoint + + \note you are responsible to destroy (before or after) any allocated + POINT, unless you've passed ownership of the POINT object to some + further object: in this case destroying the higher order object will + implicitly destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaPointPtr gaiaAllocPointXYZM (double x, double y, + double z, double m); + +/** + Destroys a POINT object + + \param ptr pointer to the POINT object to be destroyed + + \sa gaiaAllocPoint, gaiaAllocPointXYZ, gaiaAllocPointXYM, gaiaAllocPointXYZM + + \note attempting to destroy any POINT object whose ownership has already + been transferred to some other (higher order) object is a serious + error, and will easily cause severe memory corruption. + */ + GAIAGEO_DECLARE void gaiaFreePoint (gaiaPointPtr ptr); + +/** + Allocates a 2D LINESTRING [XY] + + \param vert number of points [aka vertices] into the Linestring + + \return the pointer to newly created LINESTRING object: NULL on failure + + \sa gaiaFreeLinestring, gaiaLineSetPoint, gaiaLineGetPoint, gaiaSetPoint, + gaiaGetPoint + + \note you are responsible to destroy (before or after) any allocated LINESTRING, + unless you've passed ownership of the LINESTRING object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaLinestringPtr gaiaAllocLinestring (int vert); + +/** + Allocates a 3D LINESTRING [XYZ] + + \param vert number of points [aka vertices] into the Linestring + + \return the pointer to newly created LINESTRING object: NULL on failure + + \sa gaiaFreeLinestring, gaiaLineSetPoint, gaiaLineGetPoint, gaiaSetPointXYZ, + gaiaGetPointXYZ + + \note you are responsible to destroy (before or after) any allocated LINESTRING, + unless you've passed ownership of the LINESTRING object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaLinestringPtr gaiaAllocLinestringXYZ (int vert); + +/** + Allocates a 2D LINESTRING [XYM] + + \param vert number of points [aka vertices] into the Linestring + + \return the pointer to newly created LINESTRING object: NULL on failure + + \sa gaiaFreeLinestring, gaiaLineSetPoint, gaiaLineGetPoint, gaiaSetPointXYM, + gaiaGetPointXYM + + \note you are responsible to destroy (before or after) any allocated LINESTRING, + unless you've passed ownership of the LINESTRING object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaLinestringPtr gaiaAllocLinestringXYM (int vert); + +/** + Allocates a 3D LINESTRING [XYZM] + + \param vert number of points [aka vertices] into the Linestring + + \return the pointer to newly created LINESTRING object: NULL on failure + + \sa gaiaFreeLinestring, gaiaLineSetPoint, gaiaLineGetPoint, gaiaSetPointXYZM, + gaiaGetPointXYZM + + \note you are responsible to destroy (before or after) any allocated LINESTRING, + unless you've passed ownership of the LINESTRING object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaLinestringPtr gaiaAllocLinestringXYZM (int vert); + +/** + Destroys a LINESTRING object + + \param ptr pointer to the LINESTRING object to be destroyed + + \sa gaiaAllocLinestring, gaiaAllocLinestringXYZ, gaiaAllocLinestringXYM, + gaiaAllocLinestringXYZM + + \note attempting to destroy any LINESTRING object whose ownnership has already + been transferred to some other (higher order) object is a serious + error, and will easily cause severe memory corruption. + */ + GAIAGEO_DECLARE void gaiaFreeLinestring (gaiaLinestringPtr ptr); + +/** + Copies coordinates between two LINESTRING objects + + \param dst destination LINESTRING [output] + \param src origin LINESTRING [input] + + \sa gaiaCopyLinestringCoordsReverse + + \note both LINESTRING objects must have exactly the same number of points: + if dimensions aren't the same for both objects, then the appropriate + conversion will be silently applied. + */ + GAIAGEO_DECLARE void gaiaCopyLinestringCoords (gaiaLinestringPtr dst, + gaiaLinestringPtr src); + +/** + Copies coordinates between two LINESTRING objects in reverse order + + \param dst destination LINESTRING [output] + \param src origin LINESTRING [input] + + \sa gaiaCopyLinestringCoords + + \note both LINESTRING objects must have exactly the same number of points: + if dimensions aren't the same for both objects, then the appropriate + conversion will be silently applied. + */ + GAIAGEO_DECLARE void gaiaCopyLinestringCoordsReverse (gaiaLinestringPtr dst, + gaiaLinestringPtr + src); + +/** + Allocates a 2D RING [XY] + + \param vert number of points [aka vertices] into the Ring + + \return the pointer to newly created RING object: NULL on failure + + \sa gaiaFreeRing, gaiaRingSetPoint, gaiaRingGetPoint, gaiaSetPoint, + gaiaGetPoint + + \note you are responsible to destroy (before or after) any allocated RING, + unless you've passed ownership of the RING object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaRingPtr gaiaAllocRing (int vert); + +/** + Allocates a 3D RING [XYZ] + + \param vert number of points [aka vertices] into the Ring + + \return the pointer to newly created RING object: NULL on failure + + \sa gaiaFreeRing, gaiaRingSetPoint, gaiaRingGetPoint, gaiaSetPointXYZ, + gaiaGetPointXYZ + + \note you are responsible to destroy (before or after) any allocated RING, + unless you've passed ownership of the RING object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaRingPtr gaiaAllocRingXYZ (int vert); + +/** + Allocates 2D RING [XYM] + + \param vert number of points [aka vertices] into the Ring + + \return the pointer to newly created RING object: NULL on failure + + \sa gaiaFreeRing, gaiaRingSetPoint, gaiaRingGetPoint, gaiaSetPointXYM, + gaiaGetPointXYM + + \note you are responsible to destroy (before or after) any allocated RING, + unless you've passed ownership of the RING object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaRingPtr gaiaAllocRingXYM (int vert); + +/** + Allocates a 3D RING [XYZM] + + \param vert number of points [aka vertices] into the Ring + + \return the pointer to newly created RING object: NULL on failure + + \sa gaiaFreeRing, gaiaRingSetPoint, gaiaRingGetPoint, gaiaSetPointXYZM, + gaiaSetPointXYZM + + \note you are responsible to destroy (before or after) any allocated RING, + unless you've passed ownership of the RING object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaRingPtr gaiaAllocRingXYZM (int vert); + +/** + Destroys a RING object + + \param ptr pointer to the RING object to be destroyed + + \sa gaiaAllocRing, gaiaAllocRingXYZ, gaiaAllocRingXYM, + gaiaAllocRingXYZM + + \note attempting to destroy any RING object whose ownership has already + been transferred to some other (higher order) object is a serious + error, and will easily cause severe memory corruption. + */ + GAIAGEO_DECLARE void gaiaFreeRing (gaiaRingPtr ptr); + +/** + Copies coordinates between two RING objects + + \param dst destination RING [output] + \param src origin RING [input] + + \sa gaiaCopyRingCoordsReverse + + \note both RING objects must have exactly the same number of points: + if dimensions aren't the same for both objects, then the appropriate + conversion will be silently applied. + */ + GAIAGEO_DECLARE void gaiaCopyRingCoords (gaiaRingPtr dst, gaiaRingPtr src); + +/** + Copies coordinates between two RING objects in reverse order + + \param dst destination RING [output] + \param src origin RING [input] + + \sa gaiaCopyRingCoords + + \note both RING objects must have exactly the same number of points: + if dimensions aren't the same for both objects, then the appropriate + conversion will be silently applied. + */ + GAIAGEO_DECLARE void gaiaCopyRingCoordsReverse (gaiaRingPtr dst, + gaiaRingPtr src); + +/** + Allocates a 2D POLYGON [XY] + + \param vert number of points [aka vertices] into the Exterior Ring. + \param holes number of Interior Rings [0, if no Interior Ring is required]. + + \return the pointer to newly created POLYGON object: NULL on failure + + \sa gaiaFreePolygon + + \note you are responsible to destroy (before or after) any allocated POLYGON, + unless you've passed ownership of the POLYGON object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaPolygonPtr gaiaAllocPolygon (int vert, int holes); + +/** + Allocates a 3D POLYGON [XYZ] + + \param vert number of points [aka vertices] into the Exterior Ring. + \param holes number of Interior Rings [0, if no Interior Ring is required]. + + \return the pointer to newly created POLYGON object: NULL on failure + + \sa gaiaFreePolygon + + \note you are responsible to destroy (before or after) any allocated POLYGON, + unless you've passed ownership of the POLYGON object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaPolygonPtr gaiaAllocPolygonXYZ (int vert, int holes); + +/** + Allocates a 2D POLYGON [XYM] + + \param vert number of points [aka vertices] into the Exterior Ring. + \param holes number of Interior Rings [0, if no Interior Ring is required]. + + \return the pointer to newly created POLYGON object: NULL on failure + + \sa gaiaFreePolygon + + \note you are responsible to destroy (before or after) any allocated POLYGON, + unless you've passed ownership of the POLYGON object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaPolygonPtr gaiaAllocPolygonXYM (int vert, int holes); + +/** + Allocates a 3D POLYGON [XYZM] + + \param vert number of points [aka vertices] into the Exterior Ring. + \param holes number of Interior Rings [may by 0, if no Interior Ring is required]. + + \return the pointer to newly created POLYGON object: NULL on failure + + \sa gaiaFreePolygon + + \note you are responsible to destroy (before or after) any allocated POLYGON, + unless you've passed ownership of the POLYGON object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaPolygonPtr gaiaAllocPolygonXYZM (int vert, int holes); + +/** + Allocates a POLYGON + + \param ring pointer to a valid RING object: assumed to be the Polygon's + Exterior Ring. + + \return the pointer to newly created POLYGON object: NULL on failure + + \sa gaiaAllocRing, gaiaAllocRingXYZ, gaiaAllocRingXYM, gaiaAllocRingXYZM, + gaiaFreePolygon + + \note you are responsible to destroy (before or after) any allocated POLYGON, + unless you've passed ownership of the POLYGON object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + \n Ownership of passed Ring object will be transferred to the + Polygon object being created. + */ + GAIAGEO_DECLARE gaiaPolygonPtr gaiaCreatePolygon (gaiaRingPtr ring); + +/** + Destroys a POLYGON object + + \param polyg pointer to the POLYGON object to be destroyed + + \sa gaiaAllocPolygon, gaiaAllocPolygonXYZ, gaiaAllocPolygonXYM, + gaiaAllocPolygonXYZM, gaiaCreatePolygon + + \note attempting to destroy any POLYGON object whose ownership has already + been transferred to some other (higher order) object is a serious + error, and will easily cause severe memory corruption. + \n Ownership of each RING object referenced by a POLYGON object always belongs + to the POLYGON itself, so destroying the POLYGON will surely destroy + any related RING as well. + */ + GAIAGEO_DECLARE void gaiaFreePolygon (gaiaPolygonPtr polyg); + +/** + Allocates a 2D Geometry [XY] + + \return the pointer to newly created Geometry object: NULL on failure + + \sa gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + unless you've passed ownership of the Geometry object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaAllocGeomColl (void); + +/** + Allocates a 3D Geometry [XYZ] + + \return the pointer to newly created Geometry object: NULL on failure + + \sa gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + unless you've passed ownership of the Geometry object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaAllocGeomCollXYZ (void); + +/** + Allocates a 2D Geometry [XYM] + + \return the pointer to newly created Geometry object: NULL on failure + + \sa gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + unless you've passed ownership of the Geometry object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaAllocGeomCollXYM (void); + +/** + Allocates a 3D Geometry [XYZM] + + \return the pointer to newly created Geometry object: NULL on failure + + \sa gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + unless you've passed ownership of the Geometry object to some further + object: in this case destroying the higher order object will implicitly + destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaAllocGeomCollXYZM (void); + +/** + Destroys a Geometry object + + \param geom pointer to the Geometry object to be destroyed + + \sa gaiaAllocGeomColl, gaiaAllocGeomCollXYZ, gaiaAllocGeomCollXYM, + gaiaAllocGeomCollXYZM + + \note attempting to destroy any Geometry object whose ownership has already + been transferred to some other (higher order) object is a serious + error, and will easily cause severe memory corruption. + \n Ownership of each POINT, LINESTRING or POLYGON object referenced by a + Geometry object always belongs to the Geometry itself, so destroying the + Geometry will surely destroy any related elementary geometry item as well. + */ + GAIAGEO_DECLARE void gaiaFreeGeomColl (gaiaGeomCollPtr geom); + +/** + Creates a new 2D Point [XY] object into a Geometry object + + \param p pointer to the Geometry object + \param x X coordinate of the Point to be created + \param y X coordinate of the Point to be created + + \note ownership of the newly created POINT object belongs to the Geometry + object. + */ + GAIAGEO_DECLARE void gaiaAddPointToGeomColl (gaiaGeomCollPtr p, double x, + double y); + +/** + Creates a new 3D Point [XYZ] object into a Geometry object + + \param p pointer to the Geometry object + \param x X coordinate of the Point to be created + \param y X coordinate of the Point to be created + \param z Z coordinate of the Point to be created + + \note ownership of the newly created POINT object belongs to the Geometry + object. + */ + GAIAGEO_DECLARE void gaiaAddPointToGeomCollXYZ (gaiaGeomCollPtr p, double x, + double y, double z); + +/** + Creates a new 2D Point [XYM] object into a Geometry object + + \param p pointer to the Geometry object + \param x X coordinate of the Point to be created + \param y X coordinate of the Point to be created + \param m M measure of the Point to be created + + \note ownership of the newly created POINT object belongs to the Geometry + object. + */ + GAIAGEO_DECLARE void gaiaAddPointToGeomCollXYM (gaiaGeomCollPtr p, double x, + double y, double m); + +/** + Creates a new 3D Point [XYZM] object into a Geometry object + + \param p pointer to the Geometry object + \param x X coordinate of the Point to be created + \param y X coordinate of the Point to be created + \param z Z coordinate of the Point to be created + \param m M measure of the Point to be created + + \note ownership of the newly created POINT object belongs to the Geometry + object. + */ + GAIAGEO_DECLARE void gaiaAddPointToGeomCollXYZM (gaiaGeomCollPtr p, + double x, double y, + double z, double m); + +/** + Creates a new Linestring object into a Geometry object + + \param p pointer to the Geometry object. + \param vert number of points [aka vertices] into the Linestring. + + \return the pointer to newly created Linestring: NULL on failure. + + \note ownership of the newly created Linestring object belongs to the Geometry object. + \n the newly created Linestring will have the same dimensions as the Geometry has. + */ + GAIAGEO_DECLARE gaiaLinestringPtr + gaiaAddLinestringToGeomColl (gaiaGeomCollPtr p, int vert); + +/** + Inserts an already existing Linestring object into a Geometry object + + \param p pointer to the Geometry object. + \param line pointer to the Linestring object. + + \note ownership of the Linestring object will be transferred to the + Geometry object. + */ + GAIAGEO_DECLARE void gaiaInsertLinestringInGeomColl (gaiaGeomCollPtr p, + gaiaLinestringPtr + line); + +/** + Creates a new Polygon object into a Geometry object + + \param p pointer to the Geometry object. + \param vert number of points [aka vertices] into the Polygon's Exterior Ring. + \param interiors number of Interiors Rings [0, if no Interior Ring is required] + + \return the pointer to newly created Polygon: NULL on failure. + + \note ownership of the newly created Polygon object belongs to the Geometry object. + \n the newly created Polygon will have the same dimensions as the Geometry has. + */ + GAIAGEO_DECLARE gaiaPolygonPtr gaiaAddPolygonToGeomColl (gaiaGeomCollPtr p, + int vert, + int interiors); + +/** + Creates a new Polygon object into a Geometry object starting from an + already existing Ring object + + \param p pointer to the Geometry object. + \param ring pointer to the Ring object [assumed to represent to Polygon's + Exterior Ring]. + + \return the pointer to the newly created Polygon object: NULL on failure. + + \note ownership of the Ring object will be transferred to the + Polygon object, and the Polygon object ownerships belongs to the Geometry object. + \n the Polygon object will have the same dimensions as the Ring object has. + */ + GAIAGEO_DECLARE gaiaPolygonPtr gaiaInsertPolygonInGeomColl (gaiaGeomCollPtr + p, + gaiaRingPtr + ring); + +/** + Creates a new Interior Ring object into a Polygon object + + \param p pointer to the Polygon object. + \param pos relative position index [first Interior Ring has index 0]. + \param vert number of points (aka vertices) into the Ring. + + \return the pointer to the newly created Ring object: NULL on failure. + + \sa gaiaAllocPolygon, gaiaAllocPolygonXYZ, gaiaAllocPolygonXYM, + gaiaAllocPolygonXYZM + + \note ownership of the Ring object belongs to the Polygon object. + \n the newly created Ring will have the same dimensions the Polygon has. + */ + GAIAGEO_DECLARE gaiaRingPtr gaiaAddInteriorRing (gaiaPolygonPtr p, int pos, + int vert); + +/** + Inserts an already existing Ring object into a Polygon object + + \param p pointer to the Polygon object + \param ring pointer to the Ring object + + \sa gaiaAddRingToPolygon + + \note ownership of the Ring object still remains to the calling procedure + (a duplicated copy of the original Ring will be inserted into the Polygon). + \n the newly created Polygon will have the same dimensions as the Ring has. + \n if required the Polygon's Interior Rings count could be increased. + */ + GAIAGEO_DECLARE void gaiaInsertInteriorRing (gaiaPolygonPtr p, + gaiaRingPtr ring); + +/** + Inserts an already existing Ring object into a Polygon object + + \param polyg pointer to the Polygon object + \param ring pointer to the Ring object + + \sa gaiaInsertInteriorRing + + \note ownership of the Ring object will be transferred to the Polygon object. + \n the newly created Polygon will have the same dimensions as the Ring has. + \n if required the Polygon's Interior Rings count could be increased. + */ + GAIAGEO_DECLARE void gaiaAddRingToPolyg (gaiaPolygonPtr polyg, + gaiaRingPtr ring); + +/** + Duplicates a Linestring object + + \param line pointer to Linestring object [origin]. + + \return the pointer to newly created Linestring object: NULL on failure. + + \sa gaiaCloneRing, gaiaClonePolygon, gaiaCloneGeomColl, + gaiaCloneGeomCollPoints, gaiaCloneGeomCollLinestrings, + gaiaCloneGeomCollPolygons, gaiaCloneLinestringSpecial + + \note the newly created object is an exact copy of the original one. + */ + GAIAGEO_DECLARE gaiaLinestringPtr gaiaCloneLinestring (gaiaLinestringPtr + line); +/** + Duplicates a Linestring object (special) + + \param line pointer to Linestring object [origin]. + \param mode one of GAIA_SAME_ORDER or GAIA_REVERSE_ORDER. + + \return the pointer to newly created Linestring object: NULL on failure. + + \sa gaiaCloneLinestring, gaiaCloneGeomCollSpecial + + \note if GAIA_REVERSE_ORDER is specified, then any vertex into the newly created + object will be in reverse order [first vertex will be last one, and last vertex + will be the first one]. In any other case this function will simply default to + gaiaCloneLinestring. + */ + GAIAGEO_DECLARE gaiaLinestringPtr + gaiaCloneLinestringSpecial (gaiaLinestringPtr line, int mode); + +/** + Duplicates a Ring object + + \param ring pointer to Ring object [origin]. + + \return the pointer to newly created Ring object: NULL on failure. + + \sa gaiaCloneLinestring, gaiaClonePolygon, gaiaCloneGeomColl, + gaiaCloneGeomCollPoints, gaiaCloneGeomCollLinestrings, + gaiaCloneGeomCollPolygons, gaiaCloneRingSpecial + + \note the newly created object is an exact copy of the original one. + */ + GAIAGEO_DECLARE gaiaRingPtr gaiaCloneRing (gaiaRingPtr ring); + +/** + Duplicates a Ring object (special) + + \param ring pointer to Ring object [origin]. + \param mode one of GAIA_SAME_ORDER or GAIA_REVERSE_ORDER. + + \return the pointer to newly created Ring object: NULL on failure. + + \sa gaiaCloneRing, gaiaClonePolygonSpecial + + \note if GAIA_REVERSE_ORDER is specified, then any vertex into the newly created + object will be in reverse order [first vertex will be last one, and last vertex + will be the first one]. In any other case this function will simply default to + gaiaCloneRing. + */ + GAIAGEO_DECLARE gaiaRingPtr gaiaCloneRingSpecial (gaiaRingPtr ring, + int mode); + +/** + Duplicates a Polygon object + + \param polyg pointer to Polygon object [origin]. + + \return the pointer to newly created Polygon object: NULL on failure. + + \sa gaiaCloneLinestring, gaiaCloneRing, gaiaCloneGeomColl, + gaiaCloneGeomCollPoints, gaiaCloneGeomCollLinestrings, + gaiaCloneGeomCollPolygons, gaiaClonePolygonSpecial + + \note the newly created object is an exact copy of the original one. + */ + GAIAGEO_DECLARE gaiaPolygonPtr gaiaClonePolygon (gaiaPolygonPtr polyg); + +/** + Duplicates a Polygon object (special) + + \param polyg pointer to Polygon object [origin]. + \param mode one of GAIA_SAME_ORDER, GAIA_REVERSE_ORDER or GAIA_LHR_ORDER. + + \return the pointer to newly created Polygon object: NULL on failure. + + \sa gaiaClonePolygon, gaiaCloneGeomCollSpecial + + \note if GAIA_REVERSE_ORDER is specified, then any Ring into the newly created + object will be in reverse order. If GAIA_LHR_ORDER is specified instead, any + Exterior Ring will have clockwise orientation, and any Interior Ring will have + counter-clockwise orientation. In any other case this function will simply + default to gaiaClonePolygon. + */ + GAIAGEO_DECLARE gaiaPolygonPtr gaiaClonePolygonSpecial (gaiaPolygonPtr + polyg, int mode); + +/** + Duplicates a Geometry object + + \param geom pointer to Geometry object [origin]. + + \return the pointer to newly created Geometry object: NULL on failure. + + \sa gaiaCloneLinestring, gaiaCloneRing, gaiaClonePolygon, + gaiaCloneGeomCollPoints, gaiaCloneGeomCollLinestrings, + gaiaCloneGeomCollPolygons, gaiaCastGeomCollToXY, gaiaCastGeomCollToXYZ, + gaiaCastGeomCollToXYM, gaiaCastGeomCollToXYZM, gaiaExtractPointsFromGeomColl, + gaiaExtractLinestringsFromGeomColl, gaiaExtractPolygonsFromGeomColl, + gaiaMergeGeometries, gaiaCloneGeomCollSpecial + + \note the newly created object is an exact copy of the original one. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCloneGeomColl (gaiaGeomCollPtr geom); + +/** + Duplicates a Geometry object (special) + + \param geom pointer to Geometry object [origin]. + \param mode one of GAIA_SAME_ORDER, GAIA_REVERSE_ORDER or GAIA_LHR_ORDER. + + \return the pointer to newly created Geometry object: NULL on failure. + + \sa gaiaCloneLinestringSpecial, gaiaCloneRingSpecial, gaiaClonePolygonSpecial, + gaiaCloneGeomColl + + \note if GAIA_REVERSE_ORDER is specified, then any Linestring and/or Ring into + the newly created object will be in reverse order. If GAIA_LHR_ORDER is specified + instead, any Polygong will have the Exterior Ring in clockwise orientation, and any + Interior Ring int counter-clockwise orientation. In any other case this function will + simply default to gaiaCloneGeomColl. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCloneGeomCollSpecial (gaiaGeomCollPtr + geom, int mode); + +/** + Duplicates a Geometry object [Points only] + + \param geom pointer to Geometry object [origin]. + + \return the pointer to newly created Geometry object: NULL on failure. + + \sa gaiaCloneLinestring, gaiaCloneRing, gaiaClonePolygon, gaiaCloneGeomColl, + gaiaCloneGeomCollLinestrings, + gaiaCloneGeomCollPolygons + + \note the newly created object is an exact copy of the original one; except + in that only Point objects will be copied. + \n Caveat: an empty Geometry could be returned. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCloneGeomCollPoints (gaiaGeomCollPtr + geom); + +/** + Duplicates a Geometry object [Linestrings only] + + \param geom pointer to Geometry object [origin]. + + \return the pointer to newly created Geometry object: NULL on failure. + + \sa gaiaCloneLinestring, gaiaCloneRing, gaiaClonePolygon, gaiaCloneGeomColl, + gaiaCloneGeomCollPoints, gaiaCloneGeomCollPolygons + + \note the newly created object is an exact copy of the original one; except + in that only Linestrings objects will be copied. + \n Caveat: an empty Geometry could be returned. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr + gaiaCloneGeomCollLinestrings (gaiaGeomCollPtr geom); + +/** + Duplicates a Geometry object [Polygons only] + + \param geom pointer to Geometry object [origin]. + + \return the pointer to newly created Geometry object: NULL on failure. + + \sa gaiaCloneLinestring, gaiaCloneRing, gaiaClonePolygon, gaiaCloneGeomColl, + gaiaCloneGeomCollPoints, gaiaCloneGeomCollLinestrings + + \note the newly created object is an exact copy of the original one; except + in that only Polygons objects will be copied. + \n Caveat: an empty Geometry could be returned. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCloneGeomCollPolygons (gaiaGeomCollPtr + geom); + +/** + Duplicates a Geometry object [casting dimensions to 2D XY] + + \param geom pointer to Geometry object [origin]. + + \return the pointer to newly created Geometry object: NULL on failure. + + \sa gaiaCloneGeomColl, gaiaCastGeomCollToXYZ, + gaiaCastGeomCollToXYM, gaiaCastGeomCollToXYZM + + \note the newly created object is an exact copy of the original one; except + in that any elementary item will be casted to 2D [XY] dimensions. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCastGeomCollToXY (gaiaGeomCollPtr geom); + +/** + Duplicates a Geometry object [casting dimensions to 3D XYZ] + + \param geom pointer to Geometry object [origin]. + + \return the pointer to newly created Geometry object: NULL on failure. + + \sa gaiaCloneGeomColl, gaiaCastGeomCollToXY, + gaiaCastGeomCollToXYM, gaiaCastGeomCollToXYZM + + \note the newly created object is an exact copy of the original one; except + in that any elementary item will be cast to 3D [XYZ] dimensions. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCastGeomCollToXYZ (gaiaGeomCollPtr + geom); + +/** + Duplicates a Geometry object [casting dimensions to 2D XYM] + + \param geom pointer to Geometry object [origin]. + + \return the pointer to newly created Geometry object: NULL on failure. + + \sa gaiaCloneGeomColl, gaiaCastGeomCollToXY, gaiaCastGeomCollToXYZ, + gaiaCastGeomCollToXYZM + + \note the newly created object is an exact copy of the original one; except + in that any elementary item will be cast to 2D [XYM] dimensions. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCastGeomCollToXYM (gaiaGeomCollPtr + geom); + +/** + Duplicates a Geometry object [casting dimensions to 3D XYZM] + + \param geom pointer to Geometry object [origin]. + + \return the pointer to newly created Geometry object: NULL on failure. + + \sa gaiaCloneGeomColl, gaiaCastGeomCollToXY, gaiaCastGeomCollToXYZ, + gaiaCastGeomCollToXYM + + \note the newly created object is an exact copy of the original one; except + in that any elementary item will be cast to 3D [XYZM] dimensions. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaCastGeomCollToXYZM (gaiaGeomCollPtr + geom); + +/** + Gets coodinates from a Linestring's Point + + \param ln pointer to Linestring object. + \param v relative position of Point: first Point has index 0 + \param x on completion this variable will contain the Point X coordinate. + \param y on completion this variable will contain the Point Y coordinate. + \param z on completion this variable will contain the Point Z coordinate. + \param m on completion this variable will contain the Point M measure. + + \return 0 on failure: any other different value on success. + + \sa gaiaLineSetPoint, gaiaGetPoint, gaiaGetPointXYZ, gaiaGetPointXYM, + gaiaGetPointXYZM + + \note this function perform the same identical task performed by + gaiaGetPoint(), gaiaGetPointXYZ(), gaiaGetPointXYM() and gaiaGetPointXYZM() + macros. + \n using the gaiaLineGetPoint() function is a little bit slower but is + intrinsically safest, because misused macros can easily cause severe + memory corruption. + \n gaiaLineGetPoint() instead will always ensure that the appropriate + dimensions (as declared by the Linestring object) will be correctly used. + */ + GAIAGEO_DECLARE int gaiaLineGetPoint (gaiaLinestringPtr ln, int v, + double *x, double *y, double *z, + double *m); + +/** + Sets coordinates for a Linestring's Point + + \param ln pointer to Linestring object. + \param v relative position of Point: first Point has index 0 + \param x the Point's X coordinate. + \param y the Point's Y coordinate. + \param z the Point's Z coordinate. + \param m the Point's M measure. + + \return 0 on failure: any other different value on success. + + \sa gaiaLineGetPoint, gaiaSetPoint, gaiaSetPointXYZ, gaiaSetPointXYM, + gaiaSetPointXYZM + + \note this function perform the same identical task performed by + gaiaSetPoint(), gaiaSetPointXYZ(), gaiaSetPointXYM() and gaiaSetPointXYZM() + macros. + \n using the gaiaLineSetPoint() function is a little bit slower but is + intrinsically safest, because misused macros can easily cause severe + memory corruption. + \n gaiaLineSetPoint() instead will always ensure that the appropriate + dimensions (as declared by the Linestring object) will be correctly used. + */ + GAIAGEO_DECLARE int gaiaLineSetPoint (gaiaLinestringPtr ln, int v, double x, + double y, double z, double m); + +/** + Gets coordinates from a Ring's Point + + \param rng pointer to Ring object. + \param v relative position of Point: first Point has index 0 + \param x on completion this variable will contain the Point X coordinate. + \param y on completion this variable will contain the Point Y coordinate. + \param z on completion this variable will contain the Point Z coordinate. + \param m on completion this variable will contain the Point M measure. + + \return 0 on failure: any other different value on success. + + \sa gaiaRingSetPoint, gaiaGetPoint, gaiaGetPointXYZ, gaiaGetPointXYM, + gaiaGetPointXYZM + + \note this function perform the same identical task performed by + gaiaGetPoint(), gaiaGetPointXYZ(), gaiaGetPointXYM() and gaiaGetPointXYZM() + macros. + \n using the gaiaRingGetPoint() function is a little bit slower but is + intrinsically safest, because misused macros can easily cause severe + memory corruption. + \n gaiaRingGetPoint() instead will always ensure that the appropriate + dimensions (as declared by the Ring object) will be correctly used. + */ + GAIAGEO_DECLARE int gaiaRingGetPoint (gaiaRingPtr rng, int v, double *x, + double *y, double *z, double *m); + +/** + Sets coodinates for a Ring's Point + + \param rng pointer to Ring object. + \param v relative position of Point: first Point has index 0 + \param x the Point's X coordinate. + \param y the Point's Y coordinate. + \param z the Point's Z coordinate. + \param m the Point's M measure. + + \return 0 on failure: any other different value on success. + + \sa gaiaRingGetPoint, gaiaGetPoint, gaiaGetPointXYZ, gaiaSetPointXYM, + gaiaSetPointXYZM + + \note this function perform the same identical task performed by + gaiaSetPoint(), gaiaSetPointXYZ(), gaiaSetPointXYM() and gaiaSetPointXYZM() + macros. + \n using the gaiaRingSetPoint() function is a little bit slower but is + intrinsically safest, because misused macros can easily cause severe + memory corruption. + \n gaiaRingSetPoint() instead will always ensure that the appropriate + dimensions (as declared by the Ring object) will be correctly used. + */ + GAIAGEO_DECLARE int gaiaRingSetPoint (gaiaRingPtr rng, int v, double x, + double y, double z, double m); + +/** + Determines OGC dimensions for a Geometry object + + \param geom pointer to Geometry object + + \return OGC dimensions + + \note OGC dimensions are defined as follows: + \li if the Geometry doesn't contain any elementary item: \b -1 + \li if the Geometry only contains Point items: \b 0 + \li if the Geometry only contains Point / Linestring items: \b 1 + \li if the Geometry contains some Polygon item: \b 2 + */ + GAIAGEO_DECLARE int gaiaDimension (gaiaGeomCollPtr geom); + +/** + Determines the corresponding Type for a Geometry object + + \param geom pointer to Geometry object + + \return the corresponding Geometry Type + + \note Type is one of: GAIA_POINT, GAIA_LINESTRING, GAIA_POLYGON, + GAIA_MULTIPOINT, GAIA_MULTILINESTRING, GAIA_MULTIPOLYGON, + GAIA_GEOMETRYCOLLECTION, GAIA_POINTZ, GAIA_LINESTRINGZ, GAIA_POLYGONZ, + GAIA_MULTIPOINTZ, GAIA_MULTILINESTRINGZ, GAIA_MULTIPOLYGONZ, + GAIA_GEOMETRYCOLLECTIONZ, GAIA_POINTM, GAIA_LINESTRINGM, GAIA_POLYGONM, + GAIA_MULTIPOINTM, GAIA_MULTILINESTRINGM, GAIA_MULTIPOLYGONM, + GAIA_GEOMETRYCOLLECTIONM, GAIA_POINTZM, GAIA_LINESTRINGZM, GAIA_POLYGONZM, + GAIA_MULTIPOINTZM, GAIA_MULTILINESTRINGZM, GAIA_MULTIPOLYGONZM, + GAIA_GEOMETRYCOLLECTIONZM + \n on failure GAIA_NONE will be returned. + */ + GAIAGEO_DECLARE int gaiaGeometryType (gaiaGeomCollPtr geom); + +/** + Determines the corresponding Type for a Geometry object + + \param geom pointer to Geometry object + + \return the corresponding Geometry Type + + \sa gaiaGeometryType + + \note Type is one of: GAIA_POINT, GAIA_LINESTRING, GAIA_POLYGON, + GAIA_MULTIPOINT, GAIA_MULTILINESTRING, GAIA_MULTIPOLYGON, + GAIA_GEOMETRYCOLLECTION + \n on failure GAIA_NONE will be returned. + + \remark deprecated function (used in earlier SpatiaLite versions). + */ + GAIAGEO_DECLARE int gaiaGeometryAliasType (gaiaGeomCollPtr geom); + +/** + Checks for empty Geometry object + + \param geom pointer to Geometry object + + \return 0 if the Geometry is empty: otherwise any other different value. + + \note an empty Geometry is a Geometry not containing any elementary + item: i.e. no Points, no Linestrings and no Polygons at all. + */ + GAIAGEO_DECLARE int gaiaIsEmpty (gaiaGeomCollPtr geom); + +/** + Checks for toxic Geometry object + + \param geom pointer to Geometry object + + \return 0 if the Geometry is not toxic: otherwise any other different value. + + \sa gaiaIsToxic_r, gaiaSanitize + + \note a \b toxic Geometry is a Geometry containing severely malformed + Polygons: i.e. containing less than 4 Points. + \n Or containing severely malformed Linestrings: i.e. containing less + than 2 Points. + \n Attempting to pass any toxic Geometry to GEOS supported functions + will easily cause a crash.\n + not reentrant and thread unsafe. + */ + GAIAGEO_DECLARE int gaiaIsToxic (gaiaGeomCollPtr geom); + +/** + Checks for toxic Geometry object + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to Geometry object + + \return 0 if the Geometry is not toxic: otherwise any other different value. + + \sa gaiaIsToxic, gaiaSanitize + + \note a \b toxic Geometry is a Geometry containing severely malformed + Polygons: i.e. containing less than 4 Points. + \n Or containing severely malformed Linestrings: i.e. containing less + than 2 Points. + \n Attempting to pass any toxic Geometry to GEOS supported functions + will easily cause a crash.\n + reentrant and thread-safe. + */ + GAIAGEO_DECLARE int gaiaIsToxic_r (const void *p_cache, + gaiaGeomCollPtr geom); + +/** + Checks for not-closed Rings + + \param ring pointer to Ring object + + \return 0 if the Ring in unclosed: otherwise any other different value. + + \sa gaiaIsNotClosedRing_r, gaiaIsToxic, gaiaIsNotClosedGeomColl + + \note unclosed Rings cause GEOS supported functions to crash. + \n SpatiaLite will always carefully check any Ring before passing it + to GEOS, eventually silently inserting a further point required so + to properly close the figure. + \n This function allows to explicitly identify any unclosed Ring.\n + not reentrant and thread unsafe. + */ + GAIAGEO_DECLARE int gaiaIsNotClosedRing (gaiaRingPtr ring); + +/** + Checks for not-closed Rings + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param ring pointer to Ring object + + \return 0 if the Ring in unclosed: otherwise any other different value. + + \sa gaiaIsNotClosedRing, gaiaIsToxic, gaiaIsNotClosedGeomColl + + \note unclosed Rings cause GEOS supported functions to crash. + \n SpatiaLite will always carefully check any Ring before passing it + to GEOS, eventually silently inserting a further point required so + to properly close the figure. + \n This function allows to explicitly identify any unclosed Ring.\n + reentrant and thread-safe. + */ + GAIAGEO_DECLARE int gaiaIsNotClosedRing_r (const void *p_data, + gaiaRingPtr ring); + +/** + Checks for not-closed Rings in a Geometry object + + \param geom pointer to Geometry object + + \return 0 if the Geometry has no unclosed Rings: otherwise any other different value. + + \sa gaiaIsNotClosedGeomColl_r, gaiaIsToxic, gaiaIsNotClosedRing + + \note This function allows to explicitly identify any Geometry containing + at least one unclosed Ring.\n + not reentrant and thread unsafe. + */ + GAIAGEO_DECLARE int gaiaIsNotClosedGeomColl (gaiaGeomCollPtr geom); + +/** + Checks for not-closed Rings in a Geometry object + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom pointer to Geometry object + + \return 0 if the Geometry has no unclosed Rings: otherwise any other different value. + + \sa gaiaIsNotClosedGeomColl, gaiaIsToxic, gaiaIsNotClosedRing + + \note This function allows to explicitly identify any Geometry containing + at least one unclosed Ring.\n + reentrant and thread-safe. + */ + GAIAGEO_DECLARE int gaiaIsNotClosedGeomColl_r (const void *p_data, + gaiaGeomCollPtr geom); + +/** + Attempts to sanitize a possibly malformed Geometry object + + \param org pointer to Geometry object. + + \return the pointer to newly created Geometry: NULL on failure. + + \sa gaiaIsToxic + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry created by gaiaSanitize() + \n the output Geometry will surely have: + \li no repeated Points on Linestrings or Rings (i.e. consecutive Points + sharing exactly the same coordinates): any repeated Point will be suppressed, + simply leaving only the first occurrence. + \li proper Ring closure: for sure any Ring will have exactly coinciding + first and last Points. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaSanitize (gaiaGeomCollPtr org); + + +/** + Attempts to resolve a (Multi)Linestring from a Geometry object + + \param geom pointer to Geometry object. + \param force_multi: 0 if the returned Geometry could represent a Linestring: + any other value if casting to MultiLinestring is required unconditionally. + + \return the pointer to newly created Geometry: NULL on failure. + + \sa gaiaDissolveSegments, gaiaDissolvePoints + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry created by gaiaLinearize() + \n the input Geometry is expected to contain Polygons only: then any Ring + will be transformed into the corresponding Linestring. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaLinearize (gaiaGeomCollPtr geom, + int force_multi); + +/** + Attempts to resolve a collection of Segments from a Geometry object + + \param geom pointer to Geometry object. + + \return the pointer to newly created Geometry: NULL on failure. + + \sa gaiaLinearize, gaiaDissolvePoints + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry created by gaiaDissolveSegments() + \n the input Geometry can be of any arbitrary type: + \li any Point will be copied untouched. + \li any Linestring will be dissolved into Segments. + \li any Ring will be dissolved into Segments. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaDissolveSegments (gaiaGeomCollPtr geom); + +/** + Attempts to resolve a collection of Points from a Geometry object + + \param geom pointer to Geometry object. + + \return the pointer to newly created Geometry: NULL on failure. + + \sa gaiaLinearize, gaiaDissolveSegments + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry created by gaiaDissolvePoints() + \n the input Geometry can be of any arbitrary type: + \li any Point will be copied untouched. + \li any Linestring will be dissolved into sparse Points. + \li any Ring will be dissolved into sparse Points. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaDissolvePoints (gaiaGeomCollPtr geom); + +/** + Extracts any Point from a Geometry object + + \param geom pointer to Geometry object + + \return the pointer to newly created Geometry: NULL on failure. + + \sa gaiaExtractLinestringsFromGeomColl, + gaiaExtractPolygonsFromGeomColl, gaiaCloneGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry created by gaiaExtractPointsFromGeomColl() + \n the newly created Geometry will contain any Point contained into the + input Geometry. + \n if the input Geometry doesn't contains any Point, then NULL will be returned. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr + gaiaExtractPointsFromGeomColl (gaiaGeomCollPtr geom); + +/** + Extracts any Linestring from a Geometry object + + \param geom pointer to Geometry object + + \return the pointer to newly created Geometry: NULL on failure. + + \sa gaiaExtractPointsFromGeomColl, gaiaExtractPolygonsFromGeomColl, + gaiaCloneGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry created by gaiaExtractLinestringsFromGeomColl() + \n the newly created Geometry will contain any Linestring contained into the + input Geometry. + \n if the input Geometry doesn't contains any Linestring, then NULL will be returned. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr + gaiaExtractLinestringsFromGeomColl (gaiaGeomCollPtr geom); + +/** + Extracts any Polygon from a Geometry object + + \param geom pointer to Geometry object + + \return the pointer to newly created Geometry: NULL on failure. + + \sa gaiaExtractPointsFromGeomColl, gaiaExtractLinestringsFromGeomColl, + gaiaCloneGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry created by gaiaExtractPolygonsFromGeomColl() + \n the newly created Geometry will contain any Polygon contained into the + input Geometry. + \n if the input Geometry doesn't contains any Polygon, then NULL will be returned. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr + gaiaExtractPolygonsFromGeomColl (gaiaGeomCollPtr geom); + +/** + Merges two Geometry objects into a single one + + \param geom1 pointer to first Geometry object. + \param geom2 pointer to second Geometry object. + + \return the pointer to newly created Geometry: NULL on failure. + + \sa gaiaMergeGeometries_r, gaiaCloneGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry created by gaiaMergeGeometries() + \n the newly created Geometry will contain any Point, Linestring and/or + Polygon contained in both input Geometries.\n + not reentrant and thread unsafe. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMergeGeometries (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2); + +/** + Merges two Geometry objects into a single one + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param geom1 pointer to first Geometry object. + \param geom2 pointer to second Geometry object. + + \return the pointer to newly created Geometry: NULL on failure. + + \sa gaiaMergeGeometries, gaiaCloneGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry created by gaiaMergeGeometries() + \n the newly created Geometry will contain any Point, Linestring and/or + Polygon contained in both input Geometries.\n + reentrant and thread-safe. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMergeGeometries_r (const void *p_cache, + gaiaGeomCollPtr + geom1, + gaiaGeomCollPtr + geom2); + +/** + Return a GeometryCollection containing elements matching the specified range of measures + + \param geom pointer to Geometry object + \param m_start range of measures: start value + \param m_end range of measures: end value + + \return the pointer to newly created Geometry: NULL on failure. + + \note you are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry created by gaiaLocateBetweenMeasures() + \n the newly created Geometry will contain Points and/or Linestrings. + \n if the input Geometry has no M dimension then NULL will be returned. + \n if the input Geometry doesn't contains any point/vertex corresponding to the + required range of measures then NULL will be returned. + \n if the input Geometry contains any Polygon (or is a GeometryCollection) then + NULL will be returned. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr + gaiaLocateBetweenMeasures (gaiaGeomCollPtr geom, double m_start, + double m_end); + +/** + Measures the geometric length for a Linestring or Ring + + \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_ZM + \param coords pointed to COORD mem-array + \param vert number of Points (aka Vertices) within the COORD mem-array + + \return the calculated geometric length + + \sa gaiaGeomCollLength + + \note \b dims, \b coords and \b vert are usually expected to correspond to + \b DimensionModel, \b Coords and \b Points members from a gaiaLinestringStruct + or gaiaRingStruct + + \remark internal method: doesn't require any GEOS support. + */ + GAIAGEO_DECLARE double gaiaMeasureLength (int dims, double *coords, + int vert); + +/** + Measures the geometric area for a Ring object + + \param ring pointer to Ring object + + \return the calculated geometric area + + \sa gaiaGeomCollArea + + \remark internal method: doesn't require any GEOS support. + */ + GAIAGEO_DECLARE double gaiaMeasureArea (gaiaRingPtr ring); + +/** + Determines the Centroid for a Ring object + + \param ring pointer to Ring object. + \param rx on completion this variable will contain the centroid X coordinate. + \param ry on completion this variable will contain the centroid Y coordinate. + + \sa gaiaGeomCollCentroid + + \remark internal method: doesn't require any GEOS support. + */ + GAIAGEO_DECLARE void gaiaRingCentroid (gaiaRingPtr ring, double *rx, + double *ry); + +/** + Determines the direction for a Ring object + + \param p pointer to Ring object + + \return 0 if the ring has counter-clockwise direction; any other different + value for clockwise direction. + */ + GAIAGEO_DECLARE void gaiaClockwise (gaiaRingPtr p); + +/** + Check if a Point lays on a Ring surface + + \param ring pointer to Ring object + \param pt_x Point X coordinate + \param pt_y Point Y coordinate + + \return 0 if false: any other value if true + */ + GAIAGEO_DECLARE int gaiaIsPointOnRingSurface (gaiaRingPtr ring, double pt_x, + double pt_y); + +/** + Checks if a Point lays on a Polygon surface + + \param polyg pointer to Polygon object + \param x Point X coordinate + \param y Point Y coordinate + + \return 0 if false: any other value if true + */ + GAIAGEO_DECLARE int gaiaIsPointOnPolygonSurface (gaiaPolygonPtr polyg, + double x, double y); + +/** + Computes the minimum distance between a Point and a Linestring or Ring + + \param x0 Point X coordinate + \param y0 Point Y coordinate + \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_ZM + \param coords pointed to COORD mem-array + \param vert number of Points (aka Vertices) within the COORD mem-array + + \return the calculated minumum distance. + + \note \b dims, \b coords and \b vert are usually expected to correspond to + \b DimensionModel, \b Coords and \b Points members from a gaiaLinestringStruct + or gaiaRingStruct + */ + GAIAGEO_DECLARE double gaiaMinDistance (double x0, double y0, + int dims, double *coords, int vert); + +/** + Determines the intesection Point between two Segments + + \param x0 on completion this variable will contain the Intersection X coord + \param y0 on completion this variable will contain the Intersection Y coord + \param x1 start Point X of first Segment + \param y1 start Point Y of first Segment + \param x2 end Point X of first Segment + \param y2 end Point Y of first Segment + \param x3 start Point X of second Segment + \param y3 start Point Y of second Segment + \param x4 end Point X of second Segment + \param y4 end Point Y of second Segment + + \return 0 if the Segments doesn't intersect at all: any other value on + success. + */ + GAIAGEO_DECLARE int gaiaIntersect (double *x0, double *y0, double x1, + double y1, double x2, double y2, + double x3, double y3, double x4, + double y4); + +/** + Shifts any coordinate within a Geometry object + + \param geom pointer to Geometry object. + \param shift_x X axis shift factor. + \param shift_y Y axis shift factor. + + \sa gaiaScaleCoords, gaiaRotateCoords, gaiaReflectCoords, gaiaSwapCoords, + gaiaShiftCoords3D, gaiaShiftLongitude + */ + GAIAGEO_DECLARE void gaiaShiftCoords (gaiaGeomCollPtr geom, double shift_x, + double shift_y); + +/** + Shifts any coordinate within a 3D Geometry object + + \param geom pointer to Geometry object. + \param shift_x X axis shift factor. + \param shift_y Y axis shift factor. + \param shift_z Z axis shift factor. + + \sa gaiaScaleCoords, gaiaRotateCoords, gaiaReflectCoords, gaiaSwapCoords, + gaiaShiftCoords, gaiaShiftLongitude, gaiaNormalizeLonLat + */ + GAIAGEO_DECLARE void gaiaShiftCoords3D (gaiaGeomCollPtr geom, + double shift_x, double shift_y, + double shift_z); + +/** + Shifts negative longitudes + + \param geom pointer to Geometry object. + + \sa gaiaShiftCoords, gaiaShiftCoords3D, gaiaNormalizeLonLat + + \note only intended for geographic (longitude/latitude) coordinates. + Negative longitudes (-180/0) will be shifted by 360, thus allowing + to represent longitudes in the 0/360 range and effectively crossing + the International Date Line. + + */ + GAIAGEO_DECLARE void gaiaShiftLongitude (gaiaGeomCollPtr geom); + +/** + Shifts any coordinate to within the "normal range" of longitude and + latitude values (-180.0 to 180.0 longitude and -90.0 to 90.0 latitude). + + \param geom pointer to Geometry object. + + \sa gaiaScaleCoords, gaiaRotateCoords, gaiaReflectCoords, gaiaSwapCoords, + gaiaShiftCoords3D, gaiaShiftLongitude + */ + GAIAGEO_DECLARE void gaiaNormalizeLonLat (gaiaGeomCollPtr geom); + + +/** + Scales any coordinate within a Geometry object + + \param geom pointer to Geometry object. + \param scale_x X axis scale factor. + \param scale_y Y axis scale factor. + + \sa gaiaShiftCoords, gaiaRotateCoords, gaiaReflectCoords, gaiaSwapCoords + */ + GAIAGEO_DECLARE void gaiaScaleCoords (gaiaGeomCollPtr geom, double scale_x, + double scale_y); + +/** + Rotates any coordinate within a Geometry object + + \param geom pointer to Geometry object. + \param angle rotation angle [expressed in Degrees]. + + \sa gaiaShiftCoords, gaiaScaleCoords, gaiaReflectCoords, gaiaSwapCoords + */ + GAIAGEO_DECLARE void gaiaRotateCoords (gaiaGeomCollPtr geom, double angle); + +/** + Reflects any coordinate within a Geometry object + + \param geom pointer to Geometry object. + \param x_axis if set to 0, no X axis reflection will be applied: + otherwise the X axis will be reflected. + \param y_axis if set to 0, no Y axis reflection will be applied: + otherwise the Y axis will be reflected. + + \sa gaiaShiftCoords, gaiaScaleCoords, gaiaRotateCoords, gaiaSwapCoords + */ + GAIAGEO_DECLARE void gaiaReflectCoords (gaiaGeomCollPtr geom, int x_axis, + int y_axis); + +/** + Swaps any coordinate within a Geometry object + + \param geom pointer to Geometry object. + + \sa gaiaShiftCoords, gaiaScaleCoords, gaiaRotateCoords, gaiaReflectCoords + + \note the X and Y axes will be swapped. + */ + GAIAGEO_DECLARE void gaiaSwapCoords (gaiaGeomCollPtr geom); + +/** + Checks if two Linestring objects are equivalent + + \param line1 pointer to first Linestring object. + \param line2 pointer to second Linestring object. + + \return 0 if false: any other different value if true + + \sa gaiaPolygonEquals + + \note two Linestrings objects are assumed to be equivalent if exactly + \remark deprecated function (used in earlier SpatiaLite versions). + the same Points are found in both them. + */ + GAIAGEO_DECLARE int gaiaLinestringEquals (gaiaLinestringPtr line1, + gaiaLinestringPtr line2); + +/** + Checks if two Polygons objects are equivalent + + \param polyg1 pointer to first Polygon object. + \param polyg2 pointer to second Polygon object. + + \return 0 if false: any other different value if true + + \sa gaiaLinestringEquals + + \note two Polygon objects are assumed to be equivalent if exactly + the same Points are found in both them. + + \remark deprecated function (used in earlier SpatiaLite versions). + */ + GAIAGEO_DECLARE int gaiaPolygonEquals (gaiaPolygonPtr polyg1, + gaiaPolygonPtr polyg2); + +/** + Retrieves Geodesic params for an Ellipsoid definition + + \param name text string identifying an Ellipsoid definition. + \param a on completion this variable will contain the first geodesic param. + \param b on completion this variable will contain the second geodesic param. + \param rf on completion this variable will contain the third geodesic param. + + \return 0 on failure: any other value on success. + + \sa gaiaGreatCircleDistance, gaiaGeodesicDistance, + gaiaGreatCircleTotalLength, gaiaGeodesicTotalLength + + \note supported Ellipsoid definitions are: \b MERIT, \b SGS85, \b GRS80, + \b IAU76, \b airy, \b APL4.9, \b NWL9D, \b mod_airy, \b andrae, \b aust_SA, + \b GRS67, \b bessel, \b bess_nam, \b clrk66, \b clrk80, \b CPM, \b delmbr, + \b engelis, \b evrst30, \b evrst48, \b evrst56, \b evrst69, \b evrstSS, + \b fschr60 + */ + GAIAGEO_DECLARE int gaiaEllipseParams (const char *name, double *a, + double *b, double *rf); + +/** + Calculates the Great Circle Distance between between two Points + + \param a first geodesic parameter. + \param b second geodesic parameter. + \param lat1 Latitude of first Point. + \param lon1 Longitude of first Point. + \param lat2 Latitude of second Point. + \param lon2 Longitude of second Point. + + \return the calculated Great Circle Distance. + + \sa gaiaEllipseParams, gaiaGeodesicDistance, + gaiaGreatCircleTotalLength, gaiaGeodesicTotalLength + + \note the returned distance is expressed in Kilometers. + \n the Great Circle method is less accurate but fastest to be calculated. + */ + GAIAGEO_DECLARE double gaiaGreatCircleDistance (double a, double b, + double lat1, double lon1, + double lat2, double lon2); + +/** + Calculates the Geodesic Distance between between two Points + + \param a first geodesic parameter. + \param b second geodesic parameter. + \param rf third geodesic parameter. + \param lat1 Latitude of first Point. + \param lon1 Longitude of first Point. + \param lat2 Latitude of second Point. + \param lon2 Longitude of second Point. + + \return the calculated Geodesic Distance. + + \sa gaiaEllipseParams, gaiaGreatCircleDistance, gaiaGreatCircleTotalLength, + gaiaGeodesicTotalLength + + \note the returned distance is expressed in Kilometers. + \n the Geodesic method is much more accurate but slowest to be calculated. + */ + GAIAGEO_DECLARE double gaiaGeodesicDistance (double a, double b, double rf, + double lat1, double lon1, + double lat2, double lon2); + +/** + Calculates the Great Circle Total Length for a Linestring / Ring + + \param a first geodesic parameter. + \param b second geodesic parameter. + \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_ZM + \param coords pointed to COORD mem-array + \param vert number of Points (aka Vertices) within the COORD mem-array + + \return the calculated Great Circle Total Length. + + \sa gaiaEllipseParams, gaiaGreatCircleDistance, gaiaGeodesicDistance, + gaiaGeodesicTotalLength + + \note the returned length is expressed in Kilometers. + \n the Great Circle method is less accurate but fastest to be calculated. + \n \b dims, \b coords and \b vert are usually expected to correspond to + \b DimensionModel, \b Coords and \b Points members from a gaiaLinestringStruct + or gaiaRingStruct + */ + GAIAGEO_DECLARE double gaiaGreatCircleTotalLength (double a, double b, + int dims, double *coords, + int vert); + +/** + Calculates the Geodesic Total Length for a Linestring / Ring + + \param a first geodesic parameter. + \param b second geodesic parameter. + \param rf third geodesic parameter. + \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_ZM + \param coords pointed to COORD mem-array + \param vert number of Points (aka Vertices) within the COORD mem-array + + \return the calculated Geodesic Total Length. + + \sa gaiaEllipseParams, gaiaGreatCircleDistance, gaiaGeodesicDistance, + gaiaGreatCircleTotalLength + + \note the returned length is expressed in Kilometers. + \n the Geodesic method is much more accurate but slowest to be calculated. + \n \b dims, \b coords and \b vert are usually expected to correspond to + \b DimensionModel, \b Coords and \b Points members from a gaiaLinestringStruct + or gaiaRingStruct + */ + GAIAGEO_DECLARE double gaiaGeodesicTotalLength (double a, double b, + double rf, int dims, + double *coords, int vert); + +/** + Convert a Length from a Measure Unit to another + + \param value the length measure to be converted. + \param unit_from original Measure Unit. + \param unit_to converted Measure Unit. + \param cvt on completion this variable will contain the converted length + measure. + + \note supported Measu Units are: GAIA_KM, GAIA_M, GAIA_DM, GAIA_CM, GAIA_MM, + GAIA_KMI, GAIA_IN, GAIA_FT, GAIA_YD, GAIA_MI, GAIA_FATH, GAIC_CH, GAIA_LINK, + GAIA_US_IN, GAIA_US_FT, GAIA_US_YD, GAIA_US_CH, GAIA_US_MI, GAIA_IND_YD, + GAIA_IND_FT, GAIA_IND_CH + */ + GAIAGEO_DECLARE int gaiaConvertLength (double value, int unit_from, + int unit_to, double *cvt); + +/** + Creates a Circle (Linestring) Geometry + + \param center_x center point X coordinate. + \param center_y center point Y coordinate. + \param radius the circle's radius. + \param step angular distance (in degrees) between points on the circumference. + + \sa gaiaMakeArc, gaiaMakeEllipse, gaiaMakeEllipticArc + + \note simply a convenience method defaulting to gaiaMakeEllipse + with both axes set to radius value + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMakeCircle (double center_x, + double center_y, + double radius, double step); + +/** + Creates an Ellipse (Linestring) Geometry + + \param center_x center point X coordinate. + \param center_y center point Y coordinate. + \param x_axis the ellipses's X axis. + \param y_axis the ellipses's Y axis. + \param step angular distance (in degrees) between points on the ellipse. + + \sa gaiaMakeEllipticArc, gaiaMakeCircle, gaiaMakeArc + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMakeEllipse (double center_x, + double center_y, + double x_axis, + double y_axis, + double step); + +/** + Creates a Circular Arc (Linestring) Geometry + + \param center_x center point X coordinate. + \param center_y center point Y coordinate. + \param radius the circle's radius. + \param start the start angle (in degrees). + \param start the stop angle (in degrees). + \param step angular distance (in degrees) between points on the circumference. + + \sa gaiaMakeCircle, gaiaMakeEllipse, gaiaMakeEllipticArc + + \note simply a convenience method defaulting to gaiaMakeEllipticArc + with both axes set to radius value + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMakeArc (double center_x, + double center_y, double radius, + double start, double stop, + double step); + +/** + Creates an Elliptic Arc (Linestring) Geometry + + \param center_x center point X coordinate. + \param center_y center point Y coordinate. + \param x_axis the ellipses's X axis. + \param y_axis the ellipses's Y axis. + \param start the start angle (in degrees). + \param start the stop angle (in degrees). + \param step angular distance (in degrees) between points on the ellipse. + + \sa gaiaMakeCircle, gaiaMakeEllipse, gaiaMakeEllipticArc + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMakeEllipticArc (double center_x, + double center_y, + double x_axis, + double y_axis, + double start, + double stop, + double step); + +/** + Creates a Polygon from closed Linestrings + + \param exterior a closed Linestring assumed to represent the Exterior Ring. + \param interiors one (or more than one) clsed Linestrings assumed to represent + all Interior Rings (could be a Linstring or a MultiLinestring).\n + NULL if there are no Interior Rings at all. + + \sa gaiaPolygonize + + \note this method will simply check if all the received Linestrings are + closed, but it could possibly return an invalid Polygon if there is any + topology inconsistency between the exterior and interior rings. + You are responsible to destroy (before or after) any allocated Geometry, + this including any Geometry returned by gaiaPolygonize()\n + not reentrant and thread unsafe. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaMakePolygon (gaiaGeomCollPtr exterior, + gaiaGeomCollPtr interiors); + +#ifdef __cplusplus +} +#endif + +#endif /* _GG_CORE_H */ diff --git a/src/spatialite/src/headers/spatialite/gg_dxf.h b/src/spatialite/src/headers/spatialite/gg_dxf.h new file mode 100644 index 0000000..e741137 --- /dev/null +++ b/src/spatialite/src/headers/spatialite/gg_dxf.h @@ -0,0 +1,992 @@ +/* + gg_dxf.h -- Gaia common support for DXF files + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + + +/** + \file gg_dxf.h + + Geometry handling functions: DXF files + */ + +#ifndef _GG_DXF_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _GG_DXF_H +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* constant values for DXF */ + +/** import distinct layers */ +#define GAIA_DXF_IMPORT_BY_LAYER 1 +/** import layers mixed altogether by type */ +#define GAIA_DXF_IMPORT_MIXED 2 +/** auto-selects 2D or 3D */ +#define GAIA_DXF_AUTO_2D_3D 3 +/** always force 2D */ +#define GAIA_DXF_FORCE_2D 4 +/** always force 3D */ +#define GAIA_DXF_FORCE_3D 5 +/** don't apply any special Ring handling */ +#define GAIA_DXF_RING_NONE 6 +/** apply special "linked rings" handling */ +#define GAIA_DXF_RING_LINKED 7 +/** apply special "unlinked rings" handling */ +#define GAIA_DXF_RING_UNLINKED 8 + + +/** DXF version [Writer] */ +#define GAIA_DXF_V12 1000 + +/* data structs */ + + +/** + wrapper for DXF Extra Attribute object + */ + typedef struct gaia_dxf_extra_attr + { +/** pointer to Extra Attribute Key value */ + char *key; +/** pointer to Extra Attribute Value string */ + char *value; +/** pointer to next item [linked list] */ + struct gaia_dxf_extra_attr *next; + } gaiaDxfExtraAttr; +/** + Typedef for DXF Extra Attribute object + + \sa gaiaDxfExtraAttr + */ + typedef gaiaDxfExtraAttr *gaiaDxfExtraAttrPtr; + +/** + wrapper for DXF Insert object + */ + typedef struct gaia_dxf_insert + { +/** pointer to Block ID string */ + char *block_id; +/** X coordinate */ + double x; +/** Y coordinate */ + double y; +/** Z coordinate */ + double z; +/** X scale factor */ + double scale_x; +/** Y scale factor */ + double scale_y; +/** Z scale factor */ + double scale_z; +/** rotation angle */ + double angle; +/** boolean flag: contains Text objects */ + int hasText; +/** boolean flag: contains Point objects */ + int hasPoint; +/** boolean flag: contains Polyline (Linestring) objects */ + int hasLine; +/** boolean flag: contains Polyline (Polygon) objects */ + int hasPolyg; +/** boolean flag: contains Hatch objects */ + int hasHatch; +/** boolean flag: contains 3d Text objects */ + int is3Dtext; +/** boolean flag: contains 3d Point objects */ + int is3Dpoint; +/** boolean flag: contains 3d Polyline (Linestring) objects */ + int is3Dline; +/** boolean flag: contains 3d Polyline (Polygon) objects */ + int is3Dpolyg; +/** pointer to first Extra Attribute [linked list] */ + gaiaDxfExtraAttrPtr first; +/** pointer to last Extra Attribute [linked list] */ + gaiaDxfExtraAttrPtr last; +/** pointer to next item [linked list] */ + struct gaia_dxf_insert *next; + } gaiaDxfInsert; +/** + Typedef for DXF Insert object + + \sa gaiaDxfText + */ + typedef gaiaDxfInsert *gaiaDxfInsertPtr; + +/** + wrapper for DXF Text object + */ + typedef struct gaia_dxf_text + { +/** pointer to Label string */ + char *label; +/** X coordinate */ + double x; +/** Y coordinate */ + double y; +/** Z coordinate */ + double z; +/** label rotation angle */ + double angle; +/** pointer to first Extra Attribute [linked list] */ + gaiaDxfExtraAttrPtr first; +/** pointer to last Extra Attribute [linked list] */ + gaiaDxfExtraAttrPtr last; +/** pointer to next item [linked list] */ + struct gaia_dxf_text *next; + } gaiaDxfText; +/** + Typedef for DXF Text object + + \sa gaiaDxfText + */ + typedef gaiaDxfText *gaiaDxfTextPtr; + +/** + wrapper for DXF Point object + */ + typedef struct gaia_dxf_point + { +/** X coordinate */ + double x; +/** Y coordinate */ + double y; +/** Z coordinate */ + double z; +/** pointer to first Extra Attribute [linked list] */ + gaiaDxfExtraAttrPtr first; +/** pointer to last Extra Attribute [linked list] */ + gaiaDxfExtraAttrPtr last; +/** pointer to next item [linked list] */ + struct gaia_dxf_point *next; + } gaiaDxfPoint; +/** + Typedef for DXF Point object + + \sa gaiaDxfPoint + */ + typedef gaiaDxfPoint *gaiaDxfPointPtr; + +/** + wrapper for DXF Circle object + */ + typedef struct gaia_dxf_circle + { +/** Center X coordinate */ + double cx; +/** Center Y coordinate */ + double cy; +/** Center Z coordinate */ + double cz; +/** radius */ + double radius; + } gaiaDxfCircle; +/** + Typedef for DXF Circle object + + \sa gaiaDxfCircle + */ + typedef gaiaDxfCircle *gaiaDxfCirclePtr; + +/** + wrapper for DXF Arc object + */ + typedef struct gaia_dxf_arc + { +/** Center X coordinate */ + double cx; +/** Center Y coordinate */ + double cy; +/** Center Z coordinate */ + double cz; +/** radius */ + double radius; +/** start angle */ + double start; +/** stop angle */ + double stop; + } gaiaDxfArc; +/** + Typedef for DXF Arc object + + \sa gaiaDxfArc + */ + typedef gaiaDxfArc *gaiaDxfArcPtr; + +/** + wrapper for DXF Polygon interior hole object + */ + typedef struct gaia_dxf_hole + { +/** total count of points */ + int points; +/** array of X coordinates */ + double *x; +/** array of Y coordinates */ + double *y; +/** array of Z coordinates */ + double *z; +/** pointer to next item [linked list] */ + struct gaia_dxf_hole *next; + } gaiaDxfHole; +/** + Typedef for DXF Point object + + \sa gaiaDxfHole + */ + typedef gaiaDxfHole *gaiaDxfHolePtr; + +/** + wrapper for DXF Polyline object + could be a Linestring or a Polygon depending on the is_closed flag + */ + typedef struct gaia_dxf_polyline + { +/** open (Linestring) or closed (Polygon exterior ring) */ + int is_closed; +/** total count of points */ + int points; +/** array of X coordinates */ + double *x; +/** array of Y coordinates */ + double *y; +/** array of Z coordinates */ + double *z; +/** pointer to first Polygon hole [linked list] */ + gaiaDxfHolePtr first_hole; +/** pointer to last Polygon hole [linked list] */ + gaiaDxfHolePtr last_hole; +/** pointer to first Extra Attribute [linked list] */ + gaiaDxfExtraAttrPtr first; +/** pointer to last Extra Attribute [linked list] */ + gaiaDxfExtraAttrPtr last; +/** pointer to next item [linked list] */ + struct gaia_dxf_polyline *next; + } gaiaDxfPolyline; +/** + Typedef for DXF Polyline object + + \sa gaiaDxfPolyline + */ + typedef gaiaDxfPolyline *gaiaDxfPolylinePtr; +/** + wrapper for DXF Pattern Segment object + */ + typedef struct gaia_dxf_hatch_segm + { +/** start X */ + double x0; +/** start Y */ + double y0; +/** end X */ + double x1; +/** end Y */ + double y1; +/** pointer to next item [linked list] */ + struct gaia_dxf_hatch_segm *next; + } gaiaDxfHatchSegm; +/** + Typedef for DXF Hatch Segment object + + \sa gaiaDxfHatch + */ + typedef gaiaDxfHatchSegm *gaiaDxfHatchSegmPtr; + +/** + wrapper for DXF Boundary Path object + */ + typedef struct gaia_dxf_boundary_path + { +/** pointer to first segment */ + gaiaDxfHatchSegmPtr first; +/** pointer to last segment */ + gaiaDxfHatchSegmPtr last; +/** pointer to next item [linked list] */ + struct gaia_dxf_boundary_path *next; + } gaiaDxfBoundaryPath; +/** + Typedef for DXF Boundary Path object + + \sa gaiaDxfBoundaryPath + */ + typedef gaiaDxfBoundaryPath *gaiaDxfBoundaryPathPtr; + +/** + wrapper for DXF Pattern Hatch object + */ + typedef struct gaia_dxf_hatch + { +/** hatch pattern spacing */ + double spacing; +/** hatch line angle */ + double angle; +/** hatch line base X */ + double base_x; +/** hatch line base Y */ + double base_y; +/** hatch line offset X */ + double offset_x; +/** hatch line offset Y */ + double offset_y; +/** pointer to first Boundary */ + gaiaDxfBoundaryPathPtr first; +/** pointer to last Boundary */ + gaiaDxfBoundaryPathPtr last; +/** pointer to Boundary geometry */ + gaiaGeomCollPtr boundary; +/** pointer to first Pattern segment */ + gaiaDxfHatchSegmPtr first_out; +/** pointer to last Pattern segment */ + gaiaDxfHatchSegmPtr last_out; +/** pointer to next item [linked list] */ + struct gaia_dxf_hatch *next; + } gaiaDxfHatch; +/** + Typedef for DXF Hatch object + + \sa gaiaDxfHatch + */ + typedef gaiaDxfHatch *gaiaDxfHatchPtr; + +/** + wrapper for DXF Block object + */ + typedef struct gaia_dxf_block + { +/** Boolean flag: this block is referenced by some Insert */ + int hasInsert; +/** pointer to Layer Name string */ + char *layer_name; +/** pointer to Block ID string */ + char *block_id; +/** pointer to first DXF Text object [linked list] */ + gaiaDxfTextPtr first_text; +/** pointer to last DXF Text object [linked list] */ + gaiaDxfTextPtr last_text; +/** pointer to first DXF Point object [linked list] */ + gaiaDxfPointPtr first_point; +/** pointer to last DXF Point object [linked list] */ + gaiaDxfPointPtr last_point; +/** pointer to first DXF Polyline (Linestring) object [linked list] */ + gaiaDxfPolylinePtr first_line; +/** pointer to last DXF Polyline (Linestring) object [linked list] */ + gaiaDxfPolylinePtr last_line; +/** pointer to first DXF Polyline (Polygon) object [linked list] */ + gaiaDxfPolylinePtr first_polyg; +/** pointer to last DXF Polyline (Polygon) object [linked list] */ + gaiaDxfPolylinePtr last_polyg; +/** pointer to first DXF Hatch object [linked list] */ + gaiaDxfHatchPtr first_hatch; +/** pointer to last DXF Hatch object [linked list] */ + gaiaDxfHatchPtr last_hatch; +/** boolean flag: contains 3d Text objects */ + int is3Dtext; +/** boolean flag: contains 3d Point objects */ + int is3Dpoint; +/** boolean flag: contains 3d Polyline (Linestring) objects */ + int is3Dline; +/** boolean flag: contains 3d Polyline (Polygon) objects */ + int is3Dpolyg; +/** pointer to next item [linked list] */ + struct gaia_dxf_block *next; + } gaiaDxfBlock; +/** + Typedef for DXF Block object + + \sa gaiaDxfBlock + */ + typedef gaiaDxfBlock *gaiaDxfBlockPtr; + +/** + wrapper for DXF Layer object + */ + typedef struct gaia_dxf_layer + { +/** pointer to Layer Name string */ + char *layer_name; +/** pointer to first DXF Text object [linked list] */ + gaiaDxfTextPtr first_text; +/** pointer to last DXF Text object [linked list] */ + gaiaDxfTextPtr last_text; +/** pointer to first DXF Point object [linked list] */ + gaiaDxfPointPtr first_point; +/** pointer to lasst DXF Point object [linked list] */ + gaiaDxfPointPtr last_point; +/** pointer to first DXF Polyline (Linestring) object [linked list] */ + gaiaDxfPolylinePtr first_line; +/** pointer to last DXF Polyline (Linestring) object [linked list] */ + gaiaDxfPolylinePtr last_line; +/** pointer to first DXF Polyline (Polygon) object [linked list] */ + gaiaDxfPolylinePtr first_polyg; +/** pointer to last DXF Polyline (Polygon) object [linked list] */ + gaiaDxfPolylinePtr last_polyg; +/** pointer to first DXF Hatch object [linked list] */ + gaiaDxfHatchPtr first_hatch; +/** pointer to last DXF Hatch object [linked list] */ + gaiaDxfHatchPtr last_hatch; +/** pointer to first DXF Insert Text object [linked list] */ + gaiaDxfInsertPtr first_ins_text; +/** pointer to last DXF Insert Text object [linked list] */ + gaiaDxfInsertPtr last_ins_text; +/** pointer to first DXF Insert Point object [linked list] */ + gaiaDxfInsertPtr first_ins_point; +/** pointer to last DXF Insert Point object [linked list] */ + gaiaDxfInsertPtr last_ins_point; +/** pointer to first DXF Insert Polyline (Linestring) object [linked list] */ + gaiaDxfInsertPtr first_ins_line; +/** pointer to last DXF Insert Polyline (Linestring) object [linked list] */ + gaiaDxfInsertPtr last_ins_line; +/** pointer to first DXF Insert Polyline (Polygon) object [linked list] */ + gaiaDxfInsertPtr first_ins_polyg; +/** pointer to last DXF Insert Polyline (Polygon) object [linked list] */ + gaiaDxfInsertPtr last_ins_polyg; +/** pointer to first DXF Insert Hatch object [linked list] */ + gaiaDxfInsertPtr first_ins_hatch; +/** pointer to last DXF Insert Hatch object [linked list] */ + gaiaDxfInsertPtr last_ins_hatch; +/** boolean flag: contains 3d Text objects */ + int is3Dtext; +/** boolean flag: contains 3d Point objects */ + int is3Dpoint; +/** boolean flag: contains 3d Polyline (Linestring) objects */ + int is3Dline; +/** boolean flag: contains 3d Polyline (Polygon) objects */ + int is3Dpolyg; +/** boolean flag: contains 3d Insert Text objects */ + int is3DinsText; +/** boolean flag: contains 3d Insert Point objects */ + int is3DinsPoint; +/** boolean flag: contains 3d Insert Polyline (Linestring) objects */ + int is3DinsLine; +/** boolean flag: contains 3d Insert Polyline (Polygon) objects */ + int is3DinsPolyg; +/** boolean flag: contains Text Extra Attributes */ + int hasExtraText; +/** boolean flag: contains Point Extra Attributes */ + int hasExtraPoint; +/** boolean flag: contains Polyline (Linestring) Extra Attributes */ + int hasExtraLine; +/** boolean flag: contains Polyline (Polygon) Extra Attributes */ + int hasExtraPolyg; +/** boolean flag: contains Insert Text Extra Attributes */ + int hasExtraInsText; +/** boolean flag: contains Insert Text Extra Attributes */ + int hasExtraInsPoint; +/** boolean flag: contains Insert Polyline (Linestring) Extra Attributes */ + int hasExtraInsLine; +/** boolean flag: contains Insert Polyline (Polygon) Extra Attributes */ + int hasExtraInsPolyg; +/** pointer to next item [linked list] */ + struct gaia_dxf_layer *next; + } gaiaDxfLayer; +/** + Typedef for DXF Layer object + + \sa gaiaDxfLayer + */ + typedef gaiaDxfLayer *gaiaDxfLayerPtr; + +/** + wrapper for DXF Parser object + */ + typedef struct gaia_dxf_parser + { +/** OUT: origin/input filename */ + char *filename; +/** OUT: pointer to first DXF Layer object [linked list] */ + gaiaDxfLayerPtr first_layer; +/** OUT: pointer to last DXF Layer object [linked list] */ + gaiaDxfLayerPtr last_layer; +/** OUT: pointer to first DXF Block object [linked list] */ + gaiaDxfBlockPtr first_block; +/** OUT: pointer to last DXF Block object [linked list] */ + gaiaDxfBlockPtr last_block; +/** IN: parser option - dimension handlig */ + int force_dims; +/** IN: parser option - the SRID */ + int srid; +/** IN: parser option - pointer the single Layer Name string */ + const char *selected_layer; +/** IN: parser option - pointer to prefix string for DB tables */ + const char *prefix; +/** IN: parser option - linked rings special handling */ + int linked_rings; +/** IN: parser option - unlinked rings special handling */ + int unlinked_rings; +/** internal parser variable */ + int line_no; +/** internal parser variable */ + int op_code_line; +/** internal parser variable */ + int op_code; +/** internal parser variable */ + int section; +/** internal parser variable */ + int tables; +/** internal parser variable */ + int blocks; +/** internal parser variable */ + int entities; +/** internal parser variable */ + int is_layer; +/** internal parser variable */ + int is_block; +/** internal parser variable */ + int is_text; +/** internal parser variable */ + int is_point; +/** internal parser variable */ + int is_polyline; +/** internal parser variable */ + int is_lwpolyline; +/** internal parser variable */ + int is_line; +/** internal parser variable */ + int is_circle; +/** internal parser variable */ + int is_arc; +/** internal parser variable */ + int is_vertex; +/** internal parser variable */ + int is_hatch; +/** internal parser variable */ + int is_hatch_boundary; +/** internal parser variable */ + int is_insert; +/** internal parser variable */ + int eof; +/** internal parser variable */ + int error; +/** internal parser variable */ + char *curr_layer_name; +/** internal parser variable */ + gaiaDxfText curr_text; +/** internal parser variable */ + gaiaDxfInsert curr_insert; +/** internal parser variable */ + gaiaDxfBlock curr_block; +/** internal parser variable */ + gaiaDxfPoint curr_point; +/** internal parser variable */ + gaiaDxfPoint curr_end_point; +/** internal parser variable */ + gaiaDxfCircle curr_circle; +/** internal parser variable */ + gaiaDxfArc curr_arc; +/** internal parser variable */ + int is_closed_polyline; +/** internal parser variable */ + gaiaDxfPointPtr first_pt; +/** internal parser variable */ + gaiaDxfPointPtr last_pt; +/** internal parser variable */ + char *extra_key; +/** internal parser variable */ + char *extra_value; +/** internal parser variable */ + gaiaDxfExtraAttrPtr first_ext; +/** internal parser variable */ + gaiaDxfExtraAttrPtr last_ext; +/** internal parser variable */ + gaiaDxfHatchPtr curr_hatch; +/** internal parser variable */ + int undeclared_layers; + } gaiaDxfParser; +/** + Typedef for DXF Layer object + + \sa gaiaDxfParser + */ + typedef gaiaDxfParser *gaiaDxfParserPtr; + +/** + wrapper for DXF Write object + */ + typedef struct gaia_dxf_write + { +/** IN: output DXF file handle */ + FILE *out; +/** IN: coord's precision (number of decimal digits) */ + int precision; +/** IN: DXF version number */ + int version; +/** OUT: count of exported geometries */ + int count; +/** OUT: error flag */ + int error; + } gaiaDxfWriter; +/** + Typedef for DXF Writer object + */ + typedef gaiaDxfWriter *gaiaDxfWriterPtr; + + +/* function prototypes */ + + +/** + Creates a DXF Parser object + + \param srid the SRID value to be used for all Geometries + \param force_dims should be one of GAIA_DXF_AUTO_2D_3D, GAIA_DXF_FORCE_2D + or GAIA_DXF_FORCE_3D + \param prefix an optional prefix to be used for DB target tables + (could be NULL) + \param selected_layers if set, only the DXF Layer of corresponding name will + be imported (could be NULL) + \param special_rings rings handling: should be one of GAIA_DXF_RING_NONE, + GAIA_DXF_RING_LINKED of GAIA_DXF_RING_UNLINKED + + \return the pointer to a DXF Parser object + + \sa gaiaDestroyDxfParser, gaiaParseDxfFile, gaiaLoadFromDxfParser + + \note the DXF Parser object corresponds to dynamically allocated memory: + so you are responsible to destroy this object before or later by invoking + gaiaDestroyDxfParser(). + */ + GAIAGEO_DECLARE gaiaDxfParserPtr gaiaCreateDxfParser (int srid, + int force_dims, + const char *prefix, + const char + *selected_layer, + int special_rings); + +/** + Destroying a DXF Parser object + + \param parser pointer to DXF Parser object + + \sa gaiaCreateDxfParser + + \note the pointer to the DXF Parser object to be finalized is expected + to be the one returned by a previous call to gaiaCreateDxfParser. + */ + GAIAGEO_DECLARE void gaiaDestroyDxfParser (gaiaDxfParserPtr parser); + +/** + Parsing a DXF file + + \param parser pointer to DXF Parser object + \param dxf_path pathname of the DXF external file to be parsed + + \return 0 on failure, any other value on success + + \sa gaiaParseDxfFile_r, + gaiaCreateDxfParser, gaiaDestroyDxfParser, gaiaLoadFromDxfParser + + \note the pointer to the DXF Parser object is expected to be the one + returned by a previous call to gaiaCreateDxfParser. + A DXF Parser object can be used only a single time to parse a DXF file.\n + not reentrant and thread unsafe. + */ + GAIAGEO_DECLARE int gaiaParseDxfFile (gaiaDxfParserPtr parser, + const char *dxf_path); + +/** + Parsing a DXF file + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param parser pointer to DXF Parser object + \param dxf_path pathname of the DXF external file to be parsed + + \return 0 on failure, any other value on success + + \sa gaiaParseDxfFile, + gaiaCreateDxfParser, gaiaDestroyDxfParser, gaiaLoadFromDxfParser + + \note the pointer to the DXF Parser object is expected to be the one + returned by a previous call to gaiaCreateDxfParser. + A DXF Parser object can be used only a single time to parse a DXF file.\n + reentrant and thread-safe. + */ + GAIAGEO_DECLARE int gaiaParseDxfFile_r (const void *p_cache, + gaiaDxfParserPtr parser, + const char *dxf_path); + +/** + Populating a DB so to permanently store all Geometries from a DXF Parser + + \param db_handle handle to a valid DB connection + \param parser pointer to DXF Parser object + \param mode should be one of GAIA_DXF_IMPORT_BY_LAYER or GAIA_DXF_IMPORT_MIXED + \param append boolean flag: if set and some required DB table already exists + will attempt to append further rows into the existing table. + otherwise an error will be returned. + + \return 0 on failure, any other value on success + + \sa gaiaCreateDxfParser, gaiaDestroyDxfParser, gaiaParseDxfFile + + \note the pointer to the DXF Parser object is expected to be the one + returned by a previous call to gaiaCreateDxfParser and previously used + for a succesfull call to gaiaParseDxfFile + */ + GAIAGEO_DECLARE int gaiaLoadFromDxfParser (sqlite3 * db_handle, + gaiaDxfParserPtr parser, + int mode, int append); + +/** + Initializing a DXF Writer Object + + \param writer pointer to the gaiaDxfWriter object to be initialized + \param out file handle to DXF output file + \param precision number of decimal digits for any coordinate + \param version currently always expected to be GAIA_DXF_V12 + + \return 0 on failure, any other value on success + + \sa gaiaDxfWriteHeader, gaiaExportDxf + */ + GAIAGEO_DECLARE int gaiaDxfWriterInit (gaiaDxfWriterPtr dxf, + FILE * out, int precision, + int version); + +/** + Writing the DXF Header + + \param dxf pointer to a properly initialized gaiaDxfWriter object + \param minx the minimum X coordinate contained within the DXF + \param minx the minimum Y coordinate contained within the DXF + \param minx the minimum Z coordinate contained within the DXF + \param minx the maximum X coordinate contained within the DXF + \param minx the maximum Y coordinate contained within the DXF + \param minx the maximum Z coordinate contained within the DXF + + \return 0 on failure, any other value on success + + \sa gaiaDxfWriterInit, gaiaDxfWriteFooter, gaiaDxfWriteTables, gaiaDxfWriteEntities + */ + GAIAGEO_DECLARE int + gaiaDxfWriteHeader (gaiaDxfWriterPtr dxf, double minx, double miny, + double minz, double maxx, double maxy, double maxz); + +/** + Writing a DXF Entities Section Header + + \param dxf pointer to a properly initialized gaiaDxfWriter object + + \return 0 on failure, any other value on success + + \sa gaiaDxfWriteHeader + */ + GAIAGEO_DECLARE int gaiaDxfWriteFooter (gaiaDxfWriterPtr dxf); + +/** + Writing the DXF Tables Section Header + + \param dxf pointer to a properly initialized gaiaDxfWriter object + + \return 0 on failure, any other value on success + + \sa gaiaDxfWriteHeader, gaiaDxfWriteEndSection + */ + GAIAGEO_DECLARE int gaiaDxfWriteTables (gaiaDxfWriterPtr dxf); + +/** + Writing a DXF Table/Layer definition + + \param dxf pointer to a properly initialized gaiaDxfWriter object + \param layer_name name of the layer + + \return 0 on failure, any other value on success + + \sa gaiaDxfWriteTables, gaiaDxfWriteEndSection + */ + GAIAGEO_DECLARE int gaiaDxfWriteLayer (gaiaDxfWriterPtr dxf, + const char *layer_name); + +/** + Writing a DXF Entities Section Header + + \param dxf pointer to a properly initialized gaiaDxfWriter object + + \return 0 on failure, any other value on success + + \sa gaiaDxfWriteHeader, gaiaDxfWriteEndSection, gaiaDxfWritePoint, + gaiaDxfWriteText, gaiaDxfWriteLine, gaiaDxfWriteRing, gaiaDxfWriteGeometry + */ + GAIAGEO_DECLARE int gaiaDxfWriteEntities (gaiaDxfWriterPtr dxf); + +/** + Writing a DXF Entities Section Header + + \param dxf pointer to a properly initialized gaiaDxfWriter object + + \return 0 on failure, any other value on success + + \sa gaiaDxfWriteTables, gaiaDxfWriteEntities + */ + GAIAGEO_DECLARE int gaiaDxfWriteEndSection (gaiaDxfWriterPtr dxf); + +/** + Writing a DXF Point Entity + + \param dxf pointer to a properly initialized gaiaDxfWriter object + \param layer_name name of the corresponding layer + \param x X coordinate value + \param y Y coordinate value + \param z Z coordinate value + + \return 0 on failure, any other value on success + + \sa gaiaDxfWriteEntities, gaiaDxfWriteEndSection, gaiaDxfWriteText, + gaiaDxfWriteLine, gaiaDxfWriteRing, gaiaDxfWriteGeometry + */ + GAIAGEO_DECLARE int gaiaDxfWritePoint (gaiaDxfWriterPtr dxf, + const char *layer_name, double x, + double y, double z); + +/** + Writing a DXF Text Entity + + \param dxf pointer to a properly initialized gaiaDxfWriter object + \param layer_name name of the corresponding layer + \param x X coordinate value + \param y Y coordinate value + \param z Z coordinate value + \param label text string containing the label value + \param text_height height of the text in map units + \param angle text rotation angle + + \return 0 on failure, any other value on success + + \sa gaiaDxfWriteEntities, gaiaDxfWriteEndSection, gaiaDxfWritePoint, + gaiaDxfWriteLine, gaiaDxfWriteRing, gaiaDxfWriteGeometry + */ + GAIAGEO_DECLARE int gaiaDxfWriteText (gaiaDxfWriterPtr dxf, + const char *layer_name, double x, + double y, double z, const char *label, + double text_height, double angle); + +/** + Writing a DXF Polyline (opened) Entity + + \param dxf pointer to a properly initialized gaiaDxfWriter object + \param layer_name name of the corresponding layer + \param line pointer to the internal Linestring to be exported into the DXF + + \return 0 on failure, any other value on success + + \sa gaiaDxfWriteEntities, gaiaDxfWriteEndSection, gaiaDxfWritePoint, + gaiaDxfWriteText, gaiaDxfWriteRing, gaiaDxfWriteGeometry + */ + GAIAGEO_DECLARE int + gaiaDxfWriteLine (gaiaDxfWriterPtr dxf, const char *layer_name, + gaiaLinestringPtr line); + +/** + Writing a DXF Polyline (closed) Entity + + \param dxf pointer to a properly initialized gaiaDxfWriter object + \param layer_name name of the corresponding layer + \param line pointer to the internal Ring to be exported into the DXF + + \return 0 on failure, any other value on success + + \sa gaiaDxfWriteEntities, gaiaDxfWriteEndSection, gaiaDxfWritePoint, + gaiaDxfWriteText, gaiaDxfWriteLine, gaiaDxfWriteGeometry + */ + GAIAGEO_DECLARE int + gaiaDxfWriteRing (gaiaDxfWriterPtr dxf, const char *layer_name, + gaiaRingPtr ring); + +/** + Writing a DXF generic Entity + + \param dxf pointer to a properly initialized gaiaDxfWriter object + \param layer_name name of the corresponding layer + \param line pointer to the internal Ring to be exported into the DXF + \param label text string containing the label value (could be NULL) + \param text_height only for Text Labels: ingnored in any other case. + \param text_rotation only for Text Labels: ingnored in any other case. + + \return 0 on failure, any other value on success + + \sa gaiaDxfWriteEntities, gaiaDxfWriteEndSection, gaiaDxfWritePoint, + gaiaDxfWriteText, gaiaDxfWriteLine, gaiaDxfWriteRing + */ + GAIAGEO_DECLARE int + gaiaDxfWriteGeometry (gaiaDxfWriterPtr dxf, const char *layer_name, + const char *label, double text_height, + double text_rotation, gaiaGeomCollPtr geometry); + +/** + Exporting a complex DXF file + + \param dxf pointer to a properly initialized gaiaDxfWriter object + \param db_hanlde handle to the current DB connection + \param sql a text string defining the SQL query to be used for + extracting all geometries/entities to be exported into the output DXF + \param layer_col_name name of the SQL resultset column containing the Layer name + \param geom_col_name name of the SQL resultset column containing Geometries + \param label_col_name name of the SQL resultset column containing Label values + (could be NULL) + \param text_height_col_name name of the SQL resultset column containing Text Height values + (could be NULL) + \param text_rotation_col_name name of the SQL resultset column containing Text Rotation values + (could be NULL) + \param geom_filter an optional arbitrary Geometry to be used as a Spatial Filter + (could be NULL) + + \return 0 on failure; the total count of exported entities on success + + \sa gaiaDxfWriterInit + */ + GAIAGEO_DECLARE int + gaiaExportDxf (gaiaDxfWriterPtr dxf, sqlite3 * db_handle, + const char *sql, const char *layer_col_name, + const char *geom_col_name, const char *label_col_name, + const char *text_height_col_name, + const char *text_rotation_col_name, + gaiaGeomCollPtr geom_filter); + +#ifdef __cplusplus +} +#endif + +#endif /* _GG_DXF_H */ diff --git a/src/spatialite/src/headers/spatialite/gg_dynamic.h b/src/spatialite/src/headers/spatialite/gg_dynamic.h new file mode 100644 index 0000000..fd26455 --- /dev/null +++ b/src/spatialite/src/headers/spatialite/gg_dynamic.h @@ -0,0 +1,420 @@ +/* + gg_dynamic.h -- Gaia common support for geometries: DynamicLine functions + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + + +/** + \file gg_dynamic.h + + Geometry handling functions: DynamicLine handling + */ + +#ifndef _GG_DYNAMIC +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _GG_DYNAMIC +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* function prototypes */ + +/** + Creates a new dynamicly growing line/ring object + + \return the pointer to newly created object + + \sa gaiaCreateDynamicLine, gaiaFreeDynamicLine + + \note you are responsible to destroy (before or after) any allocated + dynamically growing line/ring object. + */ + GAIAGEO_DECLARE gaiaDynamicLinePtr gaiaAllocDynamicLine (void); + +/** + Destroys a dynamically growing line/ring object + + \param p pointer to object to be destroyed + + \sa gaiaAllocDynamicLine + */ + GAIAGEO_DECLARE void gaiaFreeDynamicLine (gaiaDynamicLinePtr p); + +/** + Appends a new 2D Point [XY] at the end of a dynamically growing line/ring + object + + \param p pointer to the dynamically growing line/ring object. + \param x X coordinate of the Point + \param y Y coordinate of the Point + + \return the pointer to newly created Point + */ + GAIAGEO_DECLARE gaiaPointPtr + gaiaAppendPointToDynamicLine (gaiaDynamicLinePtr p, double x, double y); + +/** + Appends a new 3D Point [XYZ] at the end of a dynamically growing line/ring + object + + \param p pointer to the dynamically growing line/ring object. + \param x X coordinate of the Point + \param y Y coordinate of the Point + \param z Z coordinate of the Point + + \return the pointer to newly created Point + */ + GAIAGEO_DECLARE gaiaPointPtr + gaiaAppendPointZToDynamicLine (gaiaDynamicLinePtr p, double x, double y, + double z); + +/** + Appends a new 2D Point [XYM] at the end of a dynamically growing line/ring + object + + \param p pointer to the dynamically growing line/ring object. + \param x X coordinate of the Point + \param y Y coordinate of the Point + \param m M measure of the Point + + \return the pointer to newly created Point + */ + GAIAGEO_DECLARE gaiaPointPtr + gaiaAppendPointMToDynamicLine (gaiaDynamicLinePtr p, double x, double y, + double m); + +/** + Appends a new 3D Point [XYZM] at the end of a dynamically growing line/ring + object + + \param p pointer to the dynamically growing line/ring object. + \param x X coordinate of the Point + \param y Y coordinate of the Point + \param z Z coordinate of the Point + \param m M measure of the Point + + \return the pointer to newly created Point + */ + GAIAGEO_DECLARE gaiaPointPtr + gaiaAppendPointZMToDynamicLine (gaiaDynamicLinePtr p, double x, + double y, double z, double m); + +/** + Appends a new 2D Point [XY] before the first one of a dynamically growing + line/ring object + + \param p pointer to the dynamically growing line/ring object. + \param x X coordinate of the Point + \param y Y coordinate of the Point + + \return the pointer to newly created Point + */ + GAIAGEO_DECLARE gaiaPointPtr + gaiaPrependPointToDynamicLine (gaiaDynamicLinePtr p, double x, + double y); + +/** + Appends a new 3D Point [XYZ] before the first one of a dynamically growing + line/ring object + + \param p pointer to the dynamically growing line/ring object. + \param x X coordinate of the Point + \param y Y coordinate of the Point + \param z Z coordinate of the Point + + \return the pointer to newly created Point + */ + GAIAGEO_DECLARE gaiaPointPtr + gaiaPrependPointZToDynamicLine (gaiaDynamicLinePtr p, double x, + double y, double z); + +/** + Appends a new 2D Point [XYM] before the first one of a dynamically growing + line/ring object + + \param p pointer to the dynamically growing line/ring object. + \param x X coordinate of the Point + \param y Y coordinate of the Point + \param m M measure of the Point + + \return the pointer to newly created Point + */ + GAIAGEO_DECLARE gaiaPointPtr + gaiaPrependPointMToDynamicLine (gaiaDynamicLinePtr p, double x, + double y, double m); + +/** + Appends a new 3D Point [XYZM] before the first one of a dynamically growing + line/ring object + + \param p pointer to the dynamically growing line/ring object. + \param x X coordinate of the Point + \param y Y coordinate of the Point + \param z Z coordinate of the Point + \param m M measure of the Point + + \return the pointer to newly created Point + */ + GAIAGEO_DECLARE gaiaPointPtr + gaiaPrependPointZMToDynamicLine (gaiaDynamicLinePtr p, double x, + double y, double z, double m); + +/** + Appends a new 2D Point [XY] immediately after the given Point into a + dynamically growing line/ring object + + \param p pointer to the dynamically growing line/ring object. + \param pt pointer to the given Point. + \param x X coordinate of the Point to be appended + \param y Y coordinate of the Point to be appended + + \sa gaiaDynamicLiceInsertBefore + + \return the pointer to newly created Point + */ + GAIAGEO_DECLARE gaiaPointPtr gaiaDynamicLineInsertAfter (gaiaDynamicLinePtr + p, gaiaPointPtr pt, + double x, + double y); + +/** + Appends a new 2D Point [XY] immediately before the given Point into a + dynamically growing line/ring object + + \param p pointer to the dynamically growing line/ring object. + \param pt pointer to the given Point. + \param x X coordinate of the Point to be appended + \param y Y coordinate of the Point to be appended + + \sa gaiaDynamicLiceInsertBeforeAfter + + \return the pointer to newly created Point + */ + GAIAGEO_DECLARE gaiaPointPtr gaiaDynamicLineInsertBefore (gaiaDynamicLinePtr + p, + gaiaPointPtr pt, + double x, + double y); + +/** + Removes a given Point from a dynamically growing line/ring object + + \param p pointer to dynamically growing line/ring object. + \param pt pointer to given Point. + + \note the given Point (referenced by its address) will be removed from + the dynamically growin line/ring object. + \n the given Point will be then implicitly destroyed. + */ + GAIAGEO_DECLARE void gaiaDynamicLineDeletePoint (gaiaDynamicLinePtr p, + gaiaPointPtr pt); + +/** + Duplicates a dynamically growing line/ring object + + \param org pointer to dynamically growing line/ring object [origin]. + + \return the pointer to newly created dynamic growing line/ring object: + NULL on failure. + + \note the newly created object is an exact copy of the original one. + */ + GAIAGEO_DECLARE gaiaDynamicLinePtr gaiaCloneDynamicLine (gaiaDynamicLinePtr + org); + +/** + Duplicates and reverts a dynamically growing line/ring object + + \param org pointer to dynamically growing line/ring object [origin]. + + \return the pointer to newly created dynamic growing line/ring object: + NULL on failure. + + \note the newly created object is an exact copy of the origina one, except + in that direction is reverted. + \n i.e. first inpunt point becomes last output point, and last input point + becomes first output point. + */ + GAIAGEO_DECLARE gaiaDynamicLinePtr + gaiaReverseDynamicLine (gaiaDynamicLinePtr org); + +/** + Cuts a dynamically growing line/ring in two halves, using a given + cut point + + \param org pointer to the input object [the line to be split]. + \param point pointer to given cut point. + + \return the pointer to newly created dynamic growing line/ring object: + NULL on failure. + + \sa gaiaDynamicLineSplitAfter + + \note the newly created object will contain a line going from the orginal + first point to the cut point [excluded]. + \n on completion the orginal line will be reduced, going from the cut + point [included] to the original last point. + */ + GAIAGEO_DECLARE gaiaDynamicLinePtr + gaiaDynamicLineSplitBefore (gaiaDynamicLinePtr org, gaiaPointPtr point); + +/** + Cuts a dynamically growing line/ring in two halves, using a given + cut point + + \param org pointer to the input object [the line to be split]. + \param point pointer to given cut point. + + \return the pointer to newly created dynamic growing line/ring object: + NULL on failure. + + \sa gaiaDynamicLineSplitBefore + + \note the newly created object will contain a line going from the orginal + first point to the cut point [included]. + \n on completion the orginal line will be reduced, going from the cut + point [excluded] to the original last point. + */ + GAIAGEO_DECLARE gaiaDynamicLinePtr + gaiaDynamicLineSplitAfter (gaiaDynamicLinePtr org, gaiaPointPtr point); + +/** + Merges two dynamically growing line/ring object into a single one + + \param org pointer to the first input object [first line]. + \param point pointer to the reference Point object. + \param toJoin pointer to the second input object [second line]. + + \return the pointer to newly created dynamically growing line/ring object + [merged line]: NULL on failure. + + \sa gaiaDynamicLineJoinBefore + + \note the reference Point must exists into the first line: the second line + will then be inserted immediately after the reference Point. + \n The newly created object will represent the resulting merged line: + \n both input objects remain untouched. + */ + GAIAGEO_DECLARE gaiaDynamicLinePtr + gaiaDynamicLineJoinAfter (gaiaDynamicLinePtr org, gaiaPointPtr point, + gaiaDynamicLinePtr toJoin); + +/** + Merges two dynamically growing line/ring object into a single one + + \param org pointer to the first input object [first line]. + \param point pointer to the reference Point object. + \param toJoin pointer to the second input object [second line]. + + \return the pointer to newly created dynamically growing line/ring object + [merged line]: NULL on failure. + + \sa gaiaDynamicLineJoinAfter + + \note the reference Point must exists into the first line: the second line + will then be inserted immediately before the reference Point. + \n The newly created object will represent the resulting merged line: + \n both input objects remain untouched. + */ + GAIAGEO_DECLARE gaiaDynamicLinePtr + gaiaDynamicLineJoinBefore (gaiaDynamicLinePtr org, gaiaPointPtr point, + gaiaDynamicLinePtr toJoin); + +/** + Finds a Point within a dymically growing line/ring object [by coords] + + \param p pointer to dymamically line/ring object. + \param x Point X coordinate. + \param y Point Y coordinate. + + \return the pointer to the corresponding Point object: NULL on failure. + + \sa gaiaDynamicLineFindByPos + + \note if the line object contains more Points sharing the same coordinates, + a reference to the first one found will be returned. + */ + GAIAGEO_DECLARE gaiaPointPtr gaiaDynamicLineFindByCoords (gaiaDynamicLinePtr + p, double x, + double y); + +/** + Finds a Point within a dymically growing line/ring object [by position] + + \param p pointer to dymamically line/ring object. + \param pos relative position [first Point has index 0]. + + \return the pointer to the corresponding Point object: NULL on failure. + + \sa gaiaDynamicLineFindByCoords + */ + GAIAGEO_DECLARE gaiaPointPtr gaiaDynamicLineFindByPos (gaiaDynamicLinePtr p, + int pos); + +/** + Creates a new dynamicly growing line/ring object + + \param coords an array of COORDs, any dimension [XY, XYZ, XYM, XYZM] + \param points number of points [aka vertices] into the array + + \return the pointer to newly created object + + \sa gaiaAllocDynamicLine, gaiaFreeDynamicLine, gaiaLinestringStruct, + gaiaRingStruct + + \note you are responsible to destroy (before or after) any allocated + dynamically growing line/ring object. + \n The COORDs array is usually expected to be one found within a + gaiaLinestring or gaiaRing object. + */ + GAIAGEO_DECLARE gaiaDynamicLinePtr gaiaCreateDynamicLine (double *coords, + int points); + +#ifdef __cplusplus +} +#endif + +#endif /* _GG_DYNAMIC */ diff --git a/src/spatialite/src/headers/spatialite/gg_formats.h b/src/spatialite/src/headers/spatialite/gg_formats.h new file mode 100644 index 0000000..a3ebcda --- /dev/null +++ b/src/spatialite/src/headers/spatialite/gg_formats.h @@ -0,0 +1,1594 @@ +/* + gg_formats.h -- Gaia common support for geometries: formats + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Klaus Foerster klaus.foerster@svg.cc + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + + +/** + \file gg_formats.h + + Geometry handling functions: formats + */ + +#ifndef _GG_FORMATS_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _GG_FORMATS_H +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* function prototypes */ + +/** + Test CPU endianness + + \return 0 if big-endian: any other value if little-endian + */ + GAIAGEO_DECLARE int gaiaEndianArch (void); + +/** + Import an INT-16 value in endian-aware fashion + + \param p endian-dependent representation (input buffer). + \param little_endian 0 if the input buffer is big-endian: any other value + for little-endian. + \param little_endian_arch the value returned by gaiaEndianArch() + + \return the internal SHORT value + + \sa gaiaEndianArch, gaiaExport16 + + \note you are expected to pass an input buffer corresponding to an + allocation size of (at least) 2 bytes. + */ + GAIAGEO_DECLARE short gaiaImport16 (const unsigned char *p, + int little_endian, + int little_endian_arch); + +/** + Import an INT-32 value in endian-aware fashion + + \param p endian-dependent representation (input buffer). + \param little_endian 0 if the input buffer is big-endian: any other value + for little-endian. + \param little_endian_arch the value returned by gaiaEndianArch() + + \return the internal INT value + + \sa gaiaEndianArch, gaiaExport32 + + \note you are expected to pass an input buffer corresponding to an + allocation size of (at least) 4 bytes. + */ + GAIAGEO_DECLARE int gaiaImport32 (const unsigned char *p, int little_endian, + int little_endian_arch); + +/** + Import an UINT-32 value in endian-aware fashion + + \param p endian-dependent representation (input buffer). + \param little_endian 0 if the input buffer is big-endian: any other value + for little-endian. + \param little_endian_arch the value returned by gaiaEndianArch() + + \return the internal UINT value + + \sa gaiaEndianArch, gaiaExportU32 + + \note you are expected to pass an input buffer corresponding to an + allocation size of (at least) 4 bytes. + */ + GAIAGEO_DECLARE unsigned int gaiaImportU32 (const unsigned char *p, + int little_endian, + int little_endian_arch); + +/** + Import a FLOAT-32 value in endian-aware fashion + + \param p endian-dependent representation (input buffer). + \param little_endian 0 if the input buffer is big-endian: any other value + for little-endian. + \param little_endian_arch the value returned by gaiaEndianArch() + + \return the internal FLOAT value + + \sa gaiaEndianArch, gaiaExportF32 + + \note you are expected to pass an input buffer corresponding to an + allocation size of (at least) 4 bytes. + */ + GAIAGEO_DECLARE float gaiaImportF32 (const unsigned char *p, + int little_endian, + int little_endian_arch); + +/** + Import an DOUBLE-64 in endian-aware fashion + + \param p endian-dependent representation (input buffer). + \param little_endian 0 if the input buffer is big-endian: any other value + for little-endian. + \param little_endian_arch the value returned by gaiaEndianArch() + + \return the internal DOUBLE value + + \sa gaiaEndianArch, gaiaExport64 + + \note you are expected to pass an input buffer corresponding to an + allocation size of (at least) 8 bytes. + */ + GAIAGEO_DECLARE double gaiaImport64 (const unsigned char *p, + int little_endian, + int little_endian_arch); + +/** + Import an INT-64 in endian-aware fashion + + \param p endian-dependent representation (input buffer). + \param little_endian 0 if the input buffer is big-endian: any other value + for little-endian. + \param little_endian_arch the value returned by gaiaEndianArch() + + \return the internal INT-64 value + + \sa gaiaEndianArch, gaiaExportI64 + + \note you are expected to pass an input buffer corresponding to an + allocation size of (at least) 8 bytes. + */ + GAIAGEO_DECLARE sqlite3_int64 gaiaImportI64 (const unsigned char *p, + int little_endian, + int little_endian_arch); + +/** + Export an INT-16 value in endian-aware fashion + + \param p endian-dependent representation (output buffer). + \param value the internal value to be exported. + \param little_endian 0 if the output buffer has to be big-endian: any other value + for little-endian. + \param little_endian_arch the value returned by gaiaEndianArch() + + \sa gaiaEndianArch, gaiaImport16 + + \note you are expected to pass an output buffer corresponding to an + allocation size of (at least) 2 bytes. + */ + GAIAGEO_DECLARE void gaiaExport16 (unsigned char *p, short value, + int little_endian, + int little_endian_arch); + +/** + Export an INT-32 value in endian-aware fashion + + \param p endian-dependent representation (output buffer). + \param value the internal value to be exported. + \param little_endian 0 if the output buffer has to be big-endian: any other value + for little-endian. + \param little_endian_arch the value returned by gaiaEndianArch() + + \sa gaiaEndianArch, gaiaImport32 + + \note you are expected to pass an output buffer corresponding to an + allocation size of (at least) 4 bytes. + */ + GAIAGEO_DECLARE void gaiaExport32 (unsigned char *p, int value, + int little_endian, + int little_endian_arch); + +/** + Export an UINT-32 value in endian-aware fashion + + \param p endian-dependent representation (output buffer). + \param value the internal value to be exported. + \param little_endian 0 if the output buffer has to be big-endian: any other value + for little-endian. + \param little_endian_arch the value returned by gaiaEndianArch() + + \sa gaiaEndianArch, gaiaImportU32 + + \note you are expected to pass an output buffer corresponding to an + allocation size of (at least) 4 bytes. + */ + GAIAGEO_DECLARE void gaiaExportU32 (unsigned char *p, unsigned int value, + int little_endian, + int little_endian_arch); + +/** + Export a FLOAT-32 value in endian-aware fashion + + \param p endian-dependent representation (output buffer). + \param value the internal value to be exported. + \param little_endian 0 if the output buffer has to be big-endian: any other value + for little-endian. + \param little_endian_arch the value returned by gaiaEndianArch() + + \sa gaiaEndianArch, gaiaImportF32 + + \note you are expected to pass an output buffer corresponding to an + allocation size of (at least) 4 bytes. + */ + GAIAGEO_DECLARE void gaiaExportF32 (unsigned char *p, float value, + int little_endian, + int little_endian_arch); + +/** + Export a DOUBLE value in endian-aware fashion + + \param p endian-dependent representation (output buffer). + \param value the internal value to be exported. + \param little_endian 0 if the output buffer has to be big-endian: any other value + for little-endian. + \param little_endian_arch the value returned by gaiaEndianArch() + + \sa gaiaEndianArch, gaiaImport64 + + \note you are expected to pass an output buffer corresponding to an + allocation size of (at least) 8 bytes. + */ + GAIAGEO_DECLARE void gaiaExport64 (unsigned char *p, double value, + int little_endian, + int little_endian_arch); + +/** + Export an INT-64 value in endian-aware fashion + + \param p endian-dependent representation (output buffer). + \param value the internal value to be exported. + \param little_endian 0 if the output buffer has to be big-endian: any other value + for little-endian. + \param little_endian_arch the value returned by gaiaEndianArch() + + \sa gaiaEndianArch, gaiaImportI64 + + \note you are expected to pass an output buffer corresponding to an + allocation size of (at least) 8 bytes. + */ + GAIAGEO_DECLARE void gaiaExportI64 (unsigned char *p, sqlite3_int64 value, + int little_endian, + int little_endian_arch); + +/** + Initializes a dynamically growing Text output buffer + + \param buf pointer to gaiaOutBufferStruct structure + + \sa gaiaOutBufferReset, gaiaAppendToOutBuffer + + \note Text notations representing Geometry objects may easily require + a huge storage amount: the gaiaOutBufferStruct automatically supports + a dynamically growing output buffer. + \n You are required to initialize this structure before attempting + any further operation; + and you are responsible to cleanup any related memory allocation + when it's any longer required. + */ + GAIAGEO_DECLARE void gaiaOutBufferInitialize (gaiaOutBufferPtr buf); + +/** + Resets a dynamically growing Text output buffer to its initial (empty) state + + \param buf pointer to gaiaOutBufferStruct structure + + \sa gaiaOutBufferInitialize, gaiaAppendToOutBuffer + + \note You are required to initialize this structure before attempting + any further operation: + this function will release any related memory allocation. + */ + GAIAGEO_DECLARE void gaiaOutBufferReset (gaiaOutBufferPtr buf); + +/** + Appends a text string at the end of Text output buffer + + \param buf pointer to gaiaOutBufferStruct structure. + \param text the text string to be appended. + + \sa gaiaOutBufferInitialize, gaiaOutBufferReset + + \note You are required to initialize this structure before attempting + any further operation: + the dynamically growing Text buffer will be automatically allocated + and/or extended as required. + */ + GAIAGEO_DECLARE void gaiaAppendToOutBuffer (gaiaOutBufferPtr buf, + const char *text); + +/** + Creates a BLOB-Geometry representing a Point + + \param x Point X coordinate. + \param y Point Y coordinate. + \param srid the SRID to be set for the Point. + \param result on completion will containt a pointer to BLOB-Geometry: + NULL on failure. + \param size on completion this variable will contain the BLOB's size (in bytes) + + \sa gaiaFromSpatiaLiteBlobWkb + + \note the BLOB buffer corresponds to dynamically allocated memory: + so you are responsible to free() it [unless SQLite will take care + of memory cleanup via buffer binding]. + */ + GAIAGEO_DECLARE void gaiaMakePoint (double x, double y, int srid, + unsigned char **result, int *size); + +/** + Creates a BLOB-Geometry representing a PointZ + + \param x Point X coordinate. + \param y Point Y coordinate. + \param z Point Z coordinate. + \param srid the SRID to be set for the Point. + \param result on completion will containt a pointer to BLOB-Geometry: + NULL on failure. + \param size on completion this variable will contain the BLOB's size (in bytes) + + \sa gaiaFromSpatiaLiteBlobWkb + + \note the BLOB buffer corresponds to dynamically allocated memory: + so you are responsible to free() it [unless SQLite will take care + of memory cleanup via buffer binding]. + */ + GAIAGEO_DECLARE void gaiaMakePointZ (double x, double y, double z, int srid, + unsigned char **result, int *size); + +/** + Creates a BLOB-Geometry representing a PointM + + \param x Point X coordinate. + \param y Point Y coordinate. + \param m Point M coordinate. + \param srid the SRID to be set for the Point. + \param result on completion will containt a pointer to BLOB-Geometry: + NULL on failure. + \param size on completion this variable will contain the BLOB's size (in bytes) + + \sa gaiaFromSpatiaLiteBlobWkb + + \note the BLOB buffer corresponds to dynamically allocated memory: + so you are responsible to free() it [unless SQLite will take care + of memory cleanup via buffer binding]. + */ + GAIAGEO_DECLARE void gaiaMakePointM (double x, double y, double m, int srid, + unsigned char **result, int *size); + +/** + Creates a BLOB-Geometry representing a PointZM + + \param x Point X coordinate. + \param y Point Y coordinate. + \param z Point Z coordinate. + \param m Point M coordinate. + \param srid the SRID to be set for the Point. + \param result on completion will containt a pointer to BLOB-Geometry: + NULL on failure. + \param size on completion this variable will contain the BLOB's size (in bytes) + + \sa gaiaFromSpatiaLiteBlobWkb + + \note the BLOB buffer corresponds to dynamically allocated memory: + so you are responsible to free() it [unless SQLite will take care + of memory cleanup via buffer binding]. + */ + GAIAGEO_DECLARE void gaiaMakePointZM (double x, double y, double z, + double m, int srid, + unsigned char **result, int *size); + +/** + Creates a BLOB-Geometry representing a Segment (2-Points Linestring) + + \param geom1 pointer to first Geometry object (expected to represent a Point). + \param geom2 pointer to second Geometry object (expected to represent a Point). + \param result on completion will containt a pointer to BLOB-Geometry: + NULL on failure. + \param size on completion this variable will contain the BLOB's size (in bytes) + + \sa gaiaFromSpatiaLiteBlobWkb + + \note the BLOB buffer corresponds to dynamically allocated memory: + so you are responsible to free() it [unless SQLite will take care + of memory cleanup via buffer binding]. + */ + GAIAGEO_DECLARE void gaiaMakeLine (gaiaGeomCollPtr geom1, + gaiaGeomCollPtr geom2, + unsigned char **result, int *size); + +/** + Creates a Geometry object from the corresponding BLOB-Geometry + + \param blob pointer to BLOB-Geometry + \param size the BLOB's size + + \return the pointer to the newly created Geometry object: NULL on failure + + \sa gaiaFreeGeomColl, gaiaToSpatiaLiteBlobWkb, gaiaToCompressedBlobWkb + + \note you are responsible to destroy (before or after) any allocated Geometry, + unless you've passed ownership of the Geometry object to some further object: + in this case destroying the higher order object will implicitly destroy any + contained child object. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromSpatiaLiteBlobWkb (const unsigned + char *blob, + unsigned int + size); + +/** + Creates a BLOB-Geometry corresponding to a Geometry object + + \param geom pointer to the Geometry object. + \param result on completion will containt a pointer to BLOB-Geometry: + NULL on failure. + \param size on completion this variable will contain the BLOB's size (in bytes) + + \sa gaiaFromSpatiaLiteBlobWkb, gaiaToCompressedBlobWkb + + \note the BLOB buffer corresponds to dynamically allocated memory: + so you are responsible to free() it [unless SQLite will take care + of memory cleanup via buffer binding]. + */ + GAIAGEO_DECLARE void gaiaToSpatiaLiteBlobWkb (gaiaGeomCollPtr geom, + unsigned char **result, + int *size); + +/** + Creates a Compressed BLOB-Geometry corresponding to a Geometry object + + \param geom pointer to the Geometry object. + \param result on completion will containt a pointer to Compressed BLOB-Geometry: + NULL on failure. + \param size on completion this variable will contain the BLOB's size (in bytes) + + \sa gaiaFromSpatiaLiteBlobWkb, gaiaToSpatiaLiteBlobWkb + + \note this function will apply compression to any Linestring / Ring found + within the Geometry to be encoded. + \n the returned BLOB buffer corresponds to dynamically allocated memory: + so you are responsible to free() it [unless SQLite will take care + of memory cleanup via buffer binding]. + */ + GAIAGEO_DECLARE void gaiaToCompressedBlobWkb (gaiaGeomCollPtr geom, + unsigned char **result, + int *size); + +/** + Creates a Geometry object from WKB notation + + \param blob pointer to WKB buffer + \param size the BLOB's size (in bytes) + + \return the pointer to the newly created Geometry object: NULL on failure. + + \sa gaiaToWkb, gaiaToHexWkb, gaiaFromEWKB, gaiaToEWKB + + \note you are responsible to destroy (before or after) any allocated Geometry, + unless you've passed ownership of the Geometry object to some further object: + in this case destroying the higher order object will implicitly destroy any + contained child object. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromWkb (const unsigned char *blob, + unsigned int size); + +/** + Encodes a Geometry object into WKB notation + + \param geom pointer to Geometry object + \param result on completion will containt a pointer to the WKB buffer [BLOB]: + NULL on failure. + \param size on completion this variable will contain the BLOB's size (in bytes) + + \sa gaiaFromWkb, gaiaToHexWkb, gaiaFromEWKB, gaiaToEWKB + + \note this function will apply 3D WKB encoding as internally intended by + SpatiaLite: not necessarily intended by other OGC-like implementations. + \n Anyway, 2D WKB is surely standard and safely interoperable. + \n the returned BLOB buffer corresponds to dynamically allocated memory: + so you are responsible to free() it [unless SQLite will take care + of memory cleanup via buffer binding]. + */ + GAIAGEO_DECLARE void gaiaToWkb (gaiaGeomCollPtr geom, + unsigned char **result, int *size); + +/** + Encodes a Geometry object into (hex) WKB notation + + \param geom pointer to Geometry object + + \return the pointer to a text buffer containing WKB translated into plain + hexadecimal: NULL on failure. + + \sa gaiaFromWkb, gaiaToWkb, gaiaFromEWKB, gaiaToEWKB + + \note the returned buffer corresponds to dynamically allocated memory: + so you are responsible to free() it [unless SQLite will take care + of memory cleanup via buffer binding]. + */ + GAIAGEO_DECLARE char *gaiaToHexWkb (gaiaGeomCollPtr geom); + +/** + Encodes a Geometry object into EWKB notation + + \param out_buf pointer to dynamically growing Text buffer + \param geom pointer to Geometry object + + \sa gaiaFromWkb, gaiaToWkb, gaiaToHexWkb, gaiaFromEWKB, gaiaToEWKB + + \note this function will produce strictly conformat EWKB; you can + safely use this for PostGIS data exchange. + */ + GAIAGEO_DECLARE void gaiaToEWKB (gaiaOutBufferPtr out_buf, + gaiaGeomCollPtr geom); + +/** + Creates a Geometry object from EWKB notation + + \param in_buffer pointer to EWKB buffer + + \return the pointer to the newly created Geometry object: NULL on failure. + + \sa gaiaToWkb, gaiaToHexWkb, gaiaParseHexEWKB, gaiaToEWKB, gaiaEwkbGetPoint, + gaiaEwkbGetLinestring, gaiaEwkbGetPolygon, gaiaEwkbGetMultiGeometry + + \note you are responsible to destroy (before or after) any allocated Geometry, + unless you've passed ownership of the Geometry object to some further object: + in this case destroying the higher order object will implicitly destroy any + contained child object. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromEWKB (const unsigned char + *in_buffer); + +/** + Translates an EWKB notation from hexadecimal into binary + + \param blob_hex pointer to EWKB input buffer (hexadecimal text string) + \param blob_size lenght (in bytes) of the input buffer; if succesfull will + contain the lenght of the returned output buffer. + + \return the pointer to the newly created EWKB binary buffer: NULL on failure. + + \sa gaiaToWkb, gaiaToHexWkb, gaiaFromEWKB, gaiaToEWKB + + \note you are responsible to destroy (before or after) any buffer allocated by + gaiaParseHexEWKB() + */ + GAIAGEO_DECLARE unsigned char *gaiaParseHexEWKB (const unsigned char + *blob_hex, int *blob_size); + +/** + Attempts to decode a Point from within an EWKB binary buffer + + \param geom pointer to an existing Geometry object; if succesfull the parsed Point + will be inserted into this Geometry + \param blob pointer to EWKB input buffer + \param offset the offset (in bytes) on the input buffer where the Point definition is expected to start. + \param blob_size lenght (in bytes) of the input buffer. + \param endian (boolean) states if the EWKB input buffer is little- or big-endian encode. + \param endian_arch (boolean) states if the target CPU has a little- or big-endian architecture. + \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_Z_M + + \return -1 on failure; otherwise the offset where the next object starts. + + \sa gaiaEwkbGetLinestring, gaiaEwkbGetPolygon, gaiaEwkbGetMultiGeometry + + \note these functions are mainly intended for internal usage. + */ + GAIAGEO_DECLARE int + gaiaEwkbGetPoint (gaiaGeomCollPtr geom, unsigned char *blob, + int offset, int blob_size, int endian, + int endian_arch, int dims); + +/** + Attempts to decode a Point from within an EWKB binary buffer + + \param geom pointer to an existing Geometry object; if succesfull the parsed Linestring + will be inserted into this Geometry + \param blob pointer to EWKB input buffer + \param offset the offset (in bytes) on the input buffer where the Point definition is expected to start. + \param blob_size lenght (in bytes) of the input buffer. + \param endian (boolean) states if the EWKB input buffer is little- or big-endian encode. + \param endian_arch (boolean) states if the target CPU has a little- or big-endian architecture. + \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_Z_M + + \return -1 on failure; otherwise the offset where the next object starts. + + \sa gaiaEwkbGetPoint, gaiaEwkbGetPolygon, gaiaEwkbGetMultiGeometry + + \note these functions are mainly intended for internal usage. + */ + GAIAGEO_DECLARE int + gaiaEwkbGetLinestring (gaiaGeomCollPtr geom, unsigned char *blob, + int offset, int blob_size, int endian, + int endian_arch, int dims); + +/** + Attempts to decode a Polygon from within an EWKB binary buffer + + \param geom pointer to an existing Geometry object; if succesfull the parsed Polygon + will be inserted into this Geometry + \param blob pointer to EWKB input buffer + \param offset the offset (in bytes) on the input buffer where the Point definition is expected to start. + \param blob_size lenght (in bytes) of the input buffer. + \param endian (boolean) states if the EWKB input buffer is little- or big-endian encode. + \param endian_arch (boolean) states if the target CPU has a little- or big-endian architecture. + \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_Z_M + + \return -1 on failure; otherwise the offset where the next object starts. + + \sa gaiaEwkbGetPoint, gaiaEwkbGetPolygon, gaiaEwkbGetMultiGeometry + */ + GAIAGEO_DECLARE int + gaiaEwkbGetPolygon (gaiaGeomCollPtr geom, unsigned char *blob, + int offset, int blob_size, int endian, + int endian_arch, int dims); + +/** + Attempts to decode a MultiGeometry from within an EWKB binary buffer + + \param geom pointer to an existing Geometry object; if succesfull the parsed MultiGeometry + will be inserted into this Geometry + \param blob pointer to EWKB input buffer + \param offset the offset (in bytes) on the input buffer where the Point definition is expected to start. + \param blob_size lenght (in bytes) of the input buffer. + \param endian (boolean) states if the EWKB input buffer is little- or big-endian encode. + \param endian_arch (boolean) states if the target CPU has a little- or big-endian architecture. + \param dims dimensions: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M or GAIA_XY_Z_M + + \return -1 on failure; otherwise the offset where the next object starts. + + \sa gaiaEwkbGetPoint, gaiaEwkbGetLinestring, gaiaEwkbGetPolygon + + \note these functions are mainly intended for internal usage. + */ + GAIAGEO_DECLARE int + gaiaEwkbGetMultiGeometry (gaiaGeomCollPtr geom, unsigned char *blob, + int offset, int blob_size, int endian, + int endian_arch, int dims); + +/** + Creates a Geometry object from FGF notation + + \param blob pointer to FGF buffer + \param size the BLOB's size (in bytes) + + \return the pointer to the newly created Geometry object: NULL on failure. + + \sa gaiaToFgf + + \note you are responsible to destroy (before or after) any allocated Geometry, + unless you've passed ownership of the Geometry object to some further object: + in this case destroying the higher order object will implicitly destroy any + contained child object. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromFgf (const unsigned char *blob, + unsigned int size); + +/** + Encodes a Geometry object into FGF notation + + \param geom pointer to Geometry object + \param result on completion will containt a pointer to the FGF buffer [BLOB]: + NULL on failure. + \param size on completion this variable will contain the BLOB's size (in bytes) + \param coord_dims one of: GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM + + \sa gaiaFromFgf + + \note the returned BLOB buffer corresponds to dynamically allocated memory: + so you are responsible to free() it [unless SQLite will take care + of memory cleanup via buffer binding]. + */ + GAIAGEO_DECLARE void gaiaToFgf (gaiaGeomCollPtr geom, + unsigned char **result, int *size, + int coord_dims); + +/** + Creates a Geometry object from WKT notation + + \param in_buffer pointer to WKT buffer + \param type the expected Geometry Class Type + \n if actual type defined in WKT doesn't corresponds to this, an error will + be raised. + + \return the pointer to the newly created Geometry object: NULL on failure + + \sa gaiaOutWkt, gaiaOutWktStrict, gaiaParseEWKT, gaiaToEWKT + + \note you are responsible to destroy (before or after) any allocated Geometry, + unless you've passed ownership of the Geometry object to some further object: + in this case destroying the higher order object will implicitly destroy any + contained child object. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaParseWkt (const unsigned char + *in_buffer, short type); + +/** + Encodes a Geometry object into WKT notation + + \param out_buf pointer to dynamically growing Text buffer + \param geom pointer to Geometry object + + \sa gaiaParseWkt, gaiaOutWktStrict, gaiaParseEWKT, gaiaToEWKT + + \note this function will apply 3D WKT encoding as internally intended by + SpatiaLite: not necessarily intended by other OGC-like implementations. + \n Anyway, 2D WKT is surely standard and safely interoperable. + */ + GAIAGEO_DECLARE void gaiaOutWkt (gaiaOutBufferPtr out_buf, + gaiaGeomCollPtr geom); + +/** + Encodes a Geometry object into strict 2D WKT notation + + \param out_buf pointer to dynamically growing Text buffer + \param geom pointer to Geometry object + \param precision decimal digits to be used for coordinates + + \sa gaiaParseWkt, gaiaOutWkt, gaiaParseEWKT, gaiaToEWKT + + \note this function will apply strict 2D WKT encoding, so to be surely + standard and safely interoperable. + \n Dimensions will be automatically casted to 2D [XY] when required. + */ + GAIAGEO_DECLARE void gaiaOutWktStrict (gaiaOutBufferPtr out_buf, + gaiaGeomCollPtr geom, int precision); + +/** + Creates a Geometry object from EWKT notation + + \param in_buffer pointer to EWKT buffer + + \return the pointer to the newly created Geometry object: NULL on failure + + \sa gaiaParseWkt, gaiaOutWkt, gaiaOutWktStrict, gaiaToEWKT + + \note you are responsible to destroy (before or after) any allocated Geometry, + unless you've passed ownership of the Geometry object to some further object: + in this case destroying the higher order object will implicitly destroy any + contained child object. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaParseEWKT (const unsigned char + *in_buffer); + +/** + Encodes a Geometry object into EWKT notation + + \param out_buf pointer to dynamically growing Text buffer + \param geom pointer to Geometry object + + \sa gaiaParseWkt, gaiaOutWkt, gaiaOutWktStrict, gaiaParseEWKT + + \note this function will apply PostGIS own EWKT encoding. + */ + GAIAGEO_DECLARE void gaiaToEWKT (gaiaOutBufferPtr out_buf, + gaiaGeomCollPtr geom); + +/** + Encodes a WKT 3D Point [XYZ] + + \param out_buf pointer to dynamically growing Text buffer + \param point pointer to Point object + + \sa gaiaOutLinestringZ, gaiaOutPolygonZ + + \remark mainly intended for internal usage. + */ + GAIAGEO_DECLARE void gaiaOutPointZ (gaiaOutBufferPtr out_buf, + gaiaPointPtr point); + +/** + Encodes a WKT 3D Linestring [XYZ] + + \param out_buf pointer to dynamically growing Text buffer + \param linestring pointer to Linestring object + + \sa gaiaOutPointZ, gaiaOutPolygonZ + + \remark mainly intended for internal usage. + */ + GAIAGEO_DECLARE void gaiaOutLinestringZ (gaiaOutBufferPtr out_buf, + gaiaLinestringPtr linestring); + +/** + Encodes a WKT 3D Polygon [XYZ] + + \param out_buf pointer to dynamically growing Text buffer + \param polygon pointer to Point object + + \sa gaiaOutPointZ, gaiaOutLinestringZ + + \remark mainly intended for internal usage. + */ + GAIAGEO_DECLARE void gaiaOutPolygonZ (gaiaOutBufferPtr out_buf, + gaiaPolygonPtr polygon); +/** + Creates a Geometry object from KML notation + + \param in_buffer pointer to KML buffer + + \return the pointer to the newly created Geometry object: NULL on failure + + \sa gaiaOutBareKml, gaiaOutFullKml + + \note you are responsible to destroy (before or after) any allocated Geometry, + unless you've passed ownership of the Geometry object to some further object: + in this case destroying the higher order object will implicitly destroy any + contained child object. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaParseKml (const unsigned char + *in_buffer); + +/** + Encodes a Geometry object into KML notation + + \param out_buf pointer to dynamically growing Text buffer + \param geom pointer to Geometry object + \param precision decimal digits to be used for coordinates + + \sa gaiaParseKml, gaiaOutFullKml + + \note this function will export the simplest KML notation (no descriptions). + */ + GAIAGEO_DECLARE void gaiaOutBareKml (gaiaOutBufferPtr out_buf, + gaiaGeomCollPtr geom, int precision); + +/** + Encodes a Geometry object into KML notation + + \param out_buf pointer to dynamically growing Text buffer + \param name text string to be set as KML \e name + \param desc text string to se set as KML \e description + \param geom pointer to Geometry object + \param precision decimal digits to be used for coordinates + + \sa gaiaParseKml, gaiaOutBareKml + + \note this function will export the simplest KML notation (no descriptions). + */ + GAIAGEO_DECLARE void gaiaOutFullKml (gaiaOutBufferPtr out_buf, + const char *name, const char *desc, + gaiaGeomCollPtr geom, int precision); + +/** + Creates a Geometry object from GML notation + + \param in_buffer pointer to GML buffer + \param sqlite_handle handle to current DB connection + + \return the pointer to the newly created Geometry object: NULL on failure + + \sa gaiaParseGml_r, gaiaOutGml + + \note you are responsible to destroy (before or after) any allocated Geometry, + unless you've passed ownership of the Geometry object to some further object: + in this case destroying the higher order object will implicitly destroy any + contained child object.\n + not reentrant and thread unsafe. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaParseGml (const unsigned char + *in_buffer, + sqlite3 * sqlite_handle); + +/** + Creates a Geometry object from GML notation + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param in_buffer pointer to GML buffer + \param sqlite_handle handle to current DB connection + + \return the pointer to the newly created Geometry object: NULL on failure + + \sa gaiaParseGml, gaiaOutGml + + \note you are responsible to destroy (before or after) any allocated Geometry, + unless you've passed ownership of the Geometry object to some further object: + in this case destroying the higher order object will implicitly destroy any + contained child object.\n + reentrant and thread-safe. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaParseGml_r (const void *p_cache, + const unsigned char + *in_buffer, + sqlite3 * sqlite_handle); + +/** + Encodes a Geometry object into GML notation + + \param out_buf pointer to dynamically growing Text buffer + \param version GML version + \param precision decimal digits to be used for coordinates + \param geom pointer to Geometry object + + \sa gaiaParseGml + + \note if \e version is set to \b 3, then GMLv3 will be used; + in any other case GMLv2 will be assumed by default. + */ + GAIAGEO_DECLARE void gaiaOutGml (gaiaOutBufferPtr out_buf, int version, + int precision, gaiaGeomCollPtr geom); + +/** + Creates a Geometry object from GeoJSON notation + + \param in_buffer pointer to GeoJSON buffer + + \return the pointer to the newly created Geometry object: NULL on failure + + \sa gaiaOutGeoJSON + + \note you are responsible to destroy (before or after) any allocated Geometry, + unless you've passed ownership of the Geometry object to some further object: + in this case destroying the higher order object will implicitly destroy any + contained child object. + */ + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaParseGeoJSON (const unsigned char + *in_buffer); + +/** + Encodes a Geometry object into GeoJSON notation + + \param out_buf pointer to dynamically growing Text buffer + \param geom pointer to Geometry object + \param precision decimal digits to be used for coordinates + \param options GeoJSON specific options + + \sa gaiaParseGeoJSON + + \note \e options can assume the following values: + \li 1 = BBOX, no CRS + \li 2 = no BBOX, short form CRS + \li 3 = BBOX, short form CRS + \li 4 = no BBOX, long form CRS + \li 5 = BBOX, long form CRS + \li any other value: no BBOX and no CRS + */ + GAIAGEO_DECLARE void gaiaOutGeoJSON (gaiaOutBufferPtr out_buf, + gaiaGeomCollPtr geom, int precision, + int options); +/** + Encodes a Geometry object into SVG notation + + \param out_buf pointer to dynamically growing Text buffer + \param geom pointer to Geometry object + \param relative flag: relative or absolute coordinates + \param precision decimal digits to be used for coordinates + + \note if \e relative is set to \b 1, then SVG relative coords will be used: + in any other case SVG absolute coords will be assumed by default. + */ + GAIAGEO_DECLARE void gaiaOutSvg (gaiaOutBufferPtr out_buf, + gaiaGeomCollPtr geom, int relative, + int precision); + +/** + Allocates a new DBF Field Value object [duplicating an existing one] + + \param org pointer to input DBF Field Value object. + + \return the pointer to newly created DBF Field object. + + \sa gaiaAllocDbfField, gaiaFreeDbfField, gaiaCloneDbfField, gaiaCloneValue, + gaiaSetNullValue, gaiaSetIntValue, gaiaSetDoubleValue, + gaiaSetStrValue + + \note the newly created object is an exact copy of the original one. + */ + GAIAGEO_DECLARE gaiaValuePtr gaiaCloneValue (gaiaValuePtr org); + +/** + Resets a DBF Field Value object to its initial empty state + + \param p pointer to DBF Field Value object + + \sa gaiaAllocDbfField, gaiaCloneDbfField, gaiaCloneValue, + gaiaSetNullValue, gaiaSetIntValue, gaiaSetDoubleValue, + gaiaSetStrValue, gaiaResetDbfEntity + */ + GAIAGEO_DECLARE void gaiaFreeValue (gaiaValuePtr p); + +/** + Allocates a new DBF Field object + + \param name text string: DBF Field name. + \param type identifier of the corresponding DBF data type. + \param offset corresponding offset into the DBF I/O buffer. + \param length max field length (in bytes). + \param decimals precision: number of decimal digits. + + \return the pointer to newly created DBF Field object. + + \sa gaiaFreeDbfField, gaiaCloneDbfField, gaiaFreeValue, + gaiaSetNullValue, gaiaSetIntValue, gaiaSetDoubleValue, + gaiaSetStrValue + + \note you are responsible to destroy (before or after) any allocated DBF Field, + unless you've passed ownership to some further object: in this case destroying the higher order object will implicitly destroy any contained child object. + \n supported DBF data types are: + \li 'C' text string [default] + \li 'N' numeric + \li 'D' date + \li 'L' boolean + */ + GAIAGEO_DECLARE gaiaDbfFieldPtr gaiaAllocDbfField (char *name, + unsigned char type, + int offset, + unsigned char length, + unsigned char decimals); + +/** + Destroys a DBF Field object + + \param p pointer to DBF Field object + + \sa gaiaAllocDbfField, gaiaCloneDbfField, gaiaCloneValue, + gaiaFreeValue, gaiaSetNullValue, gaiaSetIntValue, gaiaSetDoubleValue, + gaiaSetStrValue + */ + GAIAGEO_DECLARE void gaiaFreeDbfField (gaiaDbfFieldPtr p); + +/** + Allocates a new DBF Field object [duplicating an existing one] + + \param org pointer to input DBF Field object. + + \return the pointer to newly created DBF Field object. + + \sa gaiaAllocDbfField, gaiaFreeDbfField, gaiaCloneDbfField, + gaiaFreeValue, gaiaSetNullValue, gaiaSetIntValue, gaiaSetDoubleValue, + gaiaSetStrValue + + \note the newly created object is an exact copy of the original one + [this including an evantual Field Value]. + */ + GAIAGEO_DECLARE gaiaDbfFieldPtr gaiaCloneDbfField (gaiaDbfFieldPtr org); + +/** + Sets a NULL current value for a DBF Field object + + \param field pointer to DBF Field object + + \sa gaiaAllocDbfField, gaiaFreeDbfField, gaiaCloneDbfField, + gaiaFreeValue, gaiaSetIntValue, gaiaSetDoubleValue, + gaiaSetStrValue + */ + GAIAGEO_DECLARE void gaiaSetNullValue (gaiaDbfFieldPtr field); + +/** + Sets an INTEGER current value for a DBF Field object + + \param field pointer to DBF Field object. + \param value integer value to be set. + + \sa gaiaAllocDbfField, gaiaFreeDbfField, gaiaCloneDbfField, + gaiaFreeValue, gaiaSetNullValue, gaiaSetDoubleValue, + gaiaSetStrValue + */ + GAIAGEO_DECLARE void gaiaSetIntValue (gaiaDbfFieldPtr field, + sqlite3_int64 value); + +/** + Sets a DOUBLE current value for a DBF Field object + + \param field pointer to DBF Field object. + \param value double value to be set. + + \sa gaiaAllocDbfField, gaiaFreeDbfField, gaiaCloneDbfField, + gaiaFreeValue, gaiaSetNullValue, gaiaSetIntValue, gaiaSetStrValue + */ + GAIAGEO_DECLARE void gaiaSetDoubleValue (gaiaDbfFieldPtr field, + double value); + +/** + Sets a TEXT current value for a DBF Field object + + \param field pointer to DBF Field object. + \param str text string value to be set. + + \sa gaiaAllocDbfField, gaiaFreeDbfField, gaiaCloneDbfField, + gaiaFreeValue, gaiaSetNullValue, gaiaSetIntValue, gaiaSetDoubleValue + */ + GAIAGEO_DECLARE void gaiaSetStrValue (gaiaDbfFieldPtr field, char *str); + +/** + Creates an initially empty DBF List object + + \return the pointer to newly allocated DBF List object: NULL on failure. + + \sa gaiaFreeDbfList, gaiaIsValidDbfList, + gaiaResetDbfEntity, gaiaCloneDbfEntity, gaiaAddDbfField + + \note you are responsible to destroy (before or after) any allocated DBF List, + unless you've passed ownership to some further object: in this case destroying + the higher order object will implicitly destroy any contained child object. + */ + GAIAGEO_DECLARE gaiaDbfListPtr gaiaAllocDbfList (void); + +/** + Destroys a DBF List object + + \param list pointer to the DBF List object + + \sa gaiaAllocDbfList, gaiaIsValidDbfList, + gaiaResetDbfEntity, gaiaCloneDbfEntity, gaiaAddDbfField + + \note attempting to destroy any DBF List object whose ownnership has already + been transferred to some other (higher order) object is a serious error, + and will easily cause severe memory corruption. + */ + GAIAGEO_DECLARE void gaiaFreeDbfList (gaiaDbfListPtr list); + +/** + Checks a DBF List object for validity + + \param list pointer to the DBF List object. + + \return 0 if not valid: any other value if valid. + + \sa gaiaAllocDbfList, gaiaFreeDbfList, gaiaIsValidDbfList, + gaiaResetDbfEntity, gaiaCloneDbfEntity, gaiaAddDbfField + */ + GAIAGEO_DECLARE int gaiaIsValidDbfList (gaiaDbfListPtr list); + +/** + Inserts a further DBF Field object into a DBF List object + + \param list pointer to the DBF List object. + \param name text string: DBF Field name. + \param type identifier of the corresponding DBF data type. + \param offset corresponding offset into the DBF I/O buffer. + \param length max field length (in bytes). + \param decimals precision: number of decimal digits. + + \return the pointer to newly created DBF Field object. + + \sa gaiaAllocDbfField + + \note supported DBF data types are: + \li 'C' text string [default] + \li 'N' numeric + \li 'D' date + \li 'L' boolean + */ + GAIAGEO_DECLARE gaiaDbfFieldPtr gaiaAddDbfField (gaiaDbfListPtr list, + char *name, + unsigned char type, + int offset, + unsigned char length, + unsigned char decimals); + +/** + Resets a DBF List object to its initial empty state + + \param list pointer to the DBF List object. + + \sa gaiaFreeValue + + \note any DBF Field associated to the List object will be reset to its + initial empty state (i.e. \e no \e value at all). + */ + GAIAGEO_DECLARE void gaiaResetDbfEntity (gaiaDbfListPtr list); + +/** + Allocates a new DBF List object [duplicating an existing one] + + \param org pointer to input DBF List object. + + \return the pointer to newly created DBF List object. + + \sa gaiaCloneDbfField, gaiaCloneValue, + + \note the newly created object is an exact copy of the original one. + \n this including any currently set Field Value. + */ + GAIAGEO_DECLARE gaiaDbfListPtr gaiaCloneDbfEntity (gaiaDbfListPtr org); + +/** + Allocates a new Shapefile object. + + \return the pointer to newly created Shapefile object. + + \sa gaiaFreeShapefile, gaiaOpenShpRead, gaiaOpenShpWrite, + gaiaReadShpEntity, gaiaShpAnalyze, gaiaWriteShpEntity, gaiaFlushShpHeaders + + \note you are responsible to destroy (before or after) any allocated Shapefile. + \n you should phisically open the Shapefile in \e read or \e write mode + before performing any actual I/O operation. + */ + GAIAGEO_DECLARE gaiaShapefilePtr gaiaAllocShapefile (void); + +/** + Destroys a Shapefile object + + \param shp pointer to the Shapefile object. + + \sa gaiaAllocShapefile, gaiaOpenShpRead, gaiaOpenShpWrite, + gaiaReadShpEntity, gaiaShpAnalyze, gaiaWriteShpEntity, gaiaFlushShpHeaders + + \note destroying the Shapefile object will close any related file: + anyway you a responsible to explicitly call gaiaFlushShpHeader + before destroyng a Shapefile opened in \e write mode. + */ + GAIAGEO_DECLARE void gaiaFreeShapefile (gaiaShapefilePtr shp); + +/** + Open a Shapefile in read mode + + \param shp pointer to the Shapefile object. + \param path \e abstract pathname to the corresponding file-system files. + \param charFrom GNU ICONV name identifying the input charset encoding. + \param charTo GNU ICONV name identifying the output charset encoding. + + \sa gaiaAllocShapefile, gaiaFreeShapefile, gaiaOpenShpWrite, + gaiaReadShpEntity, gaiaShpAnalyze, gaiaWriteShpEntity, gaiaFlushShpHeaders + + \note on failure the object member \e Valid will be set to 0; and the + object member \e LastError will contain the appropriate error message. + \n the \e abstract pathname should not contain any suffix at all. + */ + GAIAGEO_DECLARE void gaiaOpenShpRead (gaiaShapefilePtr shp, + const char *path, + const char *charFrom, + const char *charTo); + +/** + Open a Shapefile in read mode + + \param shp pointer to the Shapefile object. + \param path \e abstract pathname to the corresponding file-system files. + \param shape the SHAPE code; expected to be one of GAIA_SHP_POINT, + GAIA_SHP_POLYLINE, GAIA_SHP_POLYGON, GAIA_SHP_MULTIPOINT, GAIA_SHP_POINTZ, + GAIA_SHP_POLYLINEZ, GAIA_SHP_POLYGONZ, GAIA_SHP_MULTIPOINTZ, + GAIA_SHP_POINTM, GAIA_SHP_POLYLINEM, GAIA_SHP_POLYGONM, GAIA_SHP_MULTIPOINTM + \param list pointer to DBF List object representing the corresponding + data attributes. + \param charFrom GNU ICONV name identifying the input charset encoding. + \param charTo GNU ICONV name identifying the output charset encoding. + + \sa gaiaAllocShapefile, gaiaFreeShapefile, gaiaOpenShpRead, + gaiaReadShpEntity, gaiaShpAnalyze, gaiaWriteShpEntity, gaiaFlushShpHeaders + + \note on failure the object member \e Valid will be set to 0; and the + object member \e LastError will contain the appropriate error message. + \n the \e abstract pathname should not contain any suffix at all. + */ + GAIAGEO_DECLARE void gaiaOpenShpWrite (gaiaShapefilePtr shp, + const char *path, int shape, + gaiaDbfListPtr list, + const char *charFrom, + const char *charTo); + +/** + Reads a feature from a Shapefile object + + \param shp pointer to the Shapefile object. + \param current_row the row number identifying the feature to be read. + \param srid feature's SRID + + \return 0 on failure: any other value on success. + + \sa gaiaAllocShapefile, gaiaFreeShapefile, gaiaOpenShpRead, gaiaOpenShpWrite, + gaiaShpAnalyze, gaiaWriteShpEntity, gaiaFlushShpHeaders + + \note on completion the Shapefile's \e Dbf member will contain the feature + read: + \li the \e Dbf->Geometry member will contain the corresponding Geometry + \li and the \e Dbf->First member will point to the linked list containing + the corresponding data attributes [both data formats and values]. + + \remark the Shapefile object should be opened in \e read mode. + */ + GAIAGEO_DECLARE int gaiaReadShpEntity (gaiaShapefilePtr shp, + int current_row, int srid); + +/** + Prescans a Shapefile object gathering informations + + \param shp pointer to the Shapefile object. + + \sa gaiaAllocShapefile, gaiaFreeShapefile, gaiaOpenShpRead, gaiaOpenShpWrite, + gaiaReadShpEntity, gaiaWriteShpEntity, gaiaFlushShpHeaders + + \note on completion the Shapefile's \e EffectiveType will containt the + Geometry type corresponding to features actually found. + + \remark the Shapefile object should be opened in \e read mode. + */ + GAIAGEO_DECLARE void gaiaShpAnalyze (gaiaShapefilePtr shp); + +/** + Writes a feature into a Shapefile object + + \param shp pointer to the Shapefile object. + \param entity pointer to DBF List object containing both Geometry and Field + values. + + \return 0 on failure: any other value on success. + + \sa gaiaAllocShapefile, gaiaFreeShapefile, gaiaOpenShpRead, gaiaOpenShpWrite, + gaiaReadShpEntity, gaiaShpAnalyze, gaiaFlushShpHeaders + + \remark the Shapefile object should be opened in \e write mode. + */ + GAIAGEO_DECLARE int gaiaWriteShpEntity (gaiaShapefilePtr shp, + gaiaDbfListPtr entity); + +/** + Writes into an output Shapefile any required header / footer + + \param shp pointer to the Shapefile object. + + \sa gaiaAllocShapefile, gaiaFreeShapefile, gaiaOpenShpRead, gaiaOpenShpWrite, + gaiaReadShpEntity, gaiaShpAnalyze, gaiaWriteShpEntity + + \note forgetting to call gaiaFlushShpHeader for any Shapefile opened in + \e write mode immediately before destroying the object, will surely + cause severe file corruption. + */ + GAIAGEO_DECLARE void gaiaFlushShpHeaders (gaiaShapefilePtr shp); + +/** + Allocates a new DBF File object. + + \return the pointer to newly created DBF File object. + + \sa gaiaFreeDbf, gaiaOpenDbfRead, gaiaOpenDbfWrite, + gaiaReadDbfEntity, gaiaWriteDbfEntity, gaiaFlushDbfHeader + + \note you are responsible to destroy (before or after) any allocated DBF File. + \n you should phisically open the DBF File in \e read or \e write mode + before performing any actual I/O operation. + */ + GAIAGEO_DECLARE gaiaDbfPtr gaiaAllocDbf (void); + +/** + Destroys a DBF File object + + \param dbf pointer to the DBF File object. + + \sa gaiaAllocDbf, gaiaFreeDbf, gaiaOpenDbfWrite, + gaiaReadDbfEntity, gaiaWriteDbfEntity, gaiaFlushDbfHeader + + \note destroying the Shapefile object will close any related file: + anyway you a responsible to explicitly call gaiaFlushShpHeader + before destroyng a Shapefile opened in \e write mode. + */ + GAIAGEO_DECLARE void gaiaFreeDbf (gaiaDbfPtr dbf); + +/** + Open a DBF File in read mode + + \param dbf pointer to the DBF File object. + \param path pathname to the corresponding file-system file. + \param charFrom GNU ICONV name identifying the input charset encoding. + \param charTo GNU ICONV name identifying the output charset encoding. + + \sa gaiaAllocDbf, gaiaFreeDbf, gaiaOpenDbfWrite, + gaiaReadDbfEntity, gaiaWriteDbfEntity, gaiaFlushDbfHeader + + \note on failure the object member \e Valid will be set to 0; and the + object member \e LastError will contain the appropriate error message. + */ + GAIAGEO_DECLARE void gaiaOpenDbfRead (gaiaDbfPtr dbf, + const char *path, + const char *charFrom, + const char *charTo); + +/** + Open a DBF File in write mode + + \param dbf pointer to the DBF File object. + \param path pathname to the corresponding file-system file. + \param charFrom GNU ICONV name identifying the input charset encoding. + \param charTo GNU ICONV name identifying the output charset encoding. + + \sa gaiaAllocDbf, gaiaFreeDbf, gaiaOpenDbfRead, + gaiaReadDbfEntity, gaiaWriteDbfEntity, gaiaFlushDbfHeader + + \note on failure the object member \e Valid will be set to 0; and the + object member \e LastError will contain the appropriate error message. + */ + GAIAGEO_DECLARE void gaiaOpenDbfWrite (gaiaDbfPtr dbf, + const char *path, + const char *charFrom, + const char *charTo); + +/** + Reads a record from a DBF File object + + \param dbf pointer to the DBF File object. + \param current_row the row number identifying the record to be read. + \param deleted on completion this variable will contain 0 if the record + just read is valid: any other value if the record just read is marked as + \e logically \e deleted. + + \return 0 on failure: any other value on success. + + \sa gaiaAllocDbf, gaiaFreeDbf, gaiaOpenDbfRead, gaiaOpenDbfWrite, + gaiaFlushDbfHeader + + \note on completion the DBF File \e First member will point to the + linked list containing the corresponding data attributes [both data + formats and values]. + + \remark the DBF File object should be opened in \e read mode. + */ + GAIAGEO_DECLARE int gaiaReadDbfEntity (gaiaDbfPtr dbf, int current_row, + int *deleted); + +/** + Writes a record into a DBF File object + + \param dbf pointer to the DBF File object. + \param entity pointer to DBF List object containing Fields and corresponding + values. + + \return 0 on failure: any other value on success. + + \sa gaiaAllocDbf, gaiaFreeDbf, gaiaOpenDbfRead, gaiaOpenDbfWrite, + gaiaReadDbfEntity, gaiaFlushDbfHeader + + \remark the DBF File object should be opened in \e write mode. + */ + GAIAGEO_DECLARE int gaiaWriteDbfEntity (gaiaDbfPtr dbf, + gaiaDbfListPtr entity); + +/** + Writes into an output DBF File any required header / footer + + \param dbf pointer to the DBF File object. + + \sa gaiaAllocDbf, gaiaFreeDbf, gaiaOpenDbfRead, gaiaOpenDbfWrite, + gaiaReadDbfEntity, gaiaWriteDbfEntity + + \note forgetting to call gaiaFlushDbfHeader for any DBF File opened in + \e write mode immediately before destroying the object, will surely + cause severe file corruption. + */ + GAIAGEO_DECLARE void gaiaFlushDbfHeader (gaiaDbfPtr dbf); + + + +#ifndef OMIT_ICONV /* ICONV enabled: supporting text reader */ + +/** + Creates a Text Reader object + + \param path to the corresponding file-system file. + \param field_separator the character acting as a separator between adjacent + fields. + \param text_separator the character used to quote text strings. + \param decimal_separator the character used as a separator between integer + and decimal digits for real numeric values. + \param first_line_titles 0 if the first line contains regular values: + any other value if the first line contains column names. + \param encoding GNU ICONV name identifying the input charset encoding. + + \return the pointer to the newly created Text Reader object: NULL on failure + + \sa gaiaTextReaderDestroy, gaiaTextReaderParse, + gaiaTextReaderGetRow, gaiaTextReaderFetchField + + \note you are responsible to destroy (before or after) any allocated Text + Reader object. + */ + GAIAGEO_DECLARE gaiaTextReaderPtr gaiaTextReaderAlloc (const char *path, + char field_separator, + char text_separator, + char + decimal_separator, + int + first_line_titles, + const char + *encoding); + +/** + Destroys a Text Reader object + + \param reader pointer to Text Reader object. + + \sa gaiaTextReaderAlloc, gaiaTextReaderParse, + gaiaTextReaderGetRow, gaiaTextReaderFetchField + */ + GAIAGEO_DECLARE void gaiaTextReaderDestroy (gaiaTextReaderPtr reader); + +/** + Prescans the external file associated to a Text Reade object + + \param reader pointer to Text Reader object. + + \return 0 on failure: any other value on success. + + \sa gaiaTextReaderAlloc, gaiaTextReaderDestroy, + gaiaTextReaderGetRow, gaiaTextReaderFetchField + + \note this preliminary step is required so to ensure: + \li file consistency: checking expected formatting rules. + \li identifying the number / type / name of fields [aka columns]. + \li identifying the actual number of lines within the file. + */ + GAIAGEO_DECLARE int gaiaTextReaderParse (gaiaTextReaderPtr reader); + +/** + Reads a line from a Text Reader object + + \param reader pointer to Text Reader object. + \param row_num the Line Number identifying the Line to be read. + + \return 0 on failure: any other value on success. + + \sa gaiaTextReaderAlloc, gaiaTextReaderDestroy, gaiaTextReaderParse, + gaiaTextReaderFetchField + + \note this function will load the requested Line into the current buffer: + you can then use gaiaTextReaderFetchField in order to retrieve + any individual field [aka column] value. + */ + GAIAGEO_DECLARE int gaiaTextReaderGetRow (gaiaTextReaderPtr reader, + int row_num); + +/** + Retrieves an individual field value from the current Line + + \param reader pointer to Text Reader object. + \param field_num relative field [aka column] index: first field has index 0. + \param type on completion this variable will contain the value type. + \param value on completion this variable will contain the current field value. + + \return 0 on failure: any other value on success. + + \sa gaiaTextReaderAlloc, gaiaTextReaderDestroy, gaiaTextReaderParse, + gaiaTextReaderGetRow + */ + GAIAGEO_DECLARE int gaiaTextReaderFetchField (gaiaTextReaderPtr reader, + int field_num, int *type, + const char **value); + +#endif /* end ICONV (text reader) */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GG_FORMATS_H */ diff --git a/src/spatialite/src/headers/spatialite/gg_mbr.h b/src/spatialite/src/headers/spatialite/gg_mbr.h new file mode 100644 index 0000000..9ff25ca --- /dev/null +++ b/src/spatialite/src/headers/spatialite/gg_mbr.h @@ -0,0 +1,464 @@ +/* + gg_mbr.h -- Gaia common support for geometries: MBR functions + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + + +/** + \file gg_mbr.h + + Geometry handling functions: MBR + */ + +#ifndef _GG_MBR_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _GG_MBR_H +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* function prototypes */ + +/** + Updates the actual MBR for a Linestring object + + \param line pointer to the Linestring object + */ + GAIAGEO_DECLARE void gaiaMbrLinestring (gaiaLinestringPtr line); + +/** + Updates the actual MBR for a Ring object + + \param rng pointer to the Ring object + */ + GAIAGEO_DECLARE void gaiaMbrRing (gaiaRingPtr rng); + +/** + Updates the actual MBR for a Polygon object + + \param polyg pointer to the Polygon object + */ + GAIAGEO_DECLARE void gaiaMbrPolygon (gaiaPolygonPtr polyg); + +/** + Updates the actual MBR for a Geometry object + + \param geom pointer to the Geometry object + */ + GAIAGEO_DECLARE void gaiaMbrGeometry (gaiaGeomCollPtr geom); + +/** + Retrieves the MBR (MinX) from a BLOB-Geometry object + + \param blob pointer to BLOB-Geometry. + \param size the BLOB's size (in bytes). + \param minx on completion this variable will contain the MBR MinX coordinate. + + \return 0 on failure: any other value on success. + + \sa gaiaGetMbrMaxX, gaiaGetMbrMinY, gaiaGetMbrMaxY + */ + GAIAGEO_DECLARE int gaiaGetMbrMinX (const unsigned char *blob, + unsigned int size, double *minx); + +/** + Retrieves the MBR (MaxX) from a BLOB-Geometry object + + \param blob pointer to BLOB-Geometry. + \param size the BLOB's size (in bytes). + \param maxx on completion this variable will contain the MBR MaxX coordinate. + + \return 0 on failure: any other value on success. + + \sa gaiaGetMbrMinX, gaiaGetMbrMinY, gaiaGetMbrMaxY + */ + GAIAGEO_DECLARE int gaiaGetMbrMaxX (const unsigned char *blob, + unsigned int size, double *maxx); + +/** + Retrieves the MBR (MinY) from a BLOB-Geometry object + + \param blob pointer to BLOB-Geometry. + \param size the BLOB's size (in bytes). + \param miny on completion this variable will contain the MBR MinY coordinate. + + \return 0 on failure: any other value on success. + + \sa gaiaGetMbrMinX, gaiaGetMbrMaxX, gaiaGetMbrMaxY + */ + GAIAGEO_DECLARE int gaiaGetMbrMinY (const unsigned char *blob, + unsigned int size, double *miny); + +/** + Retrieves the MBR (MaxY) from a BLOB-Geometry object + + \param blob pointer to BLOB-Geometry. + \param size the BLOB's size (in bytes). + \param maxy on completion this variable will contain the MBR MaxY coordinate. + + \return 0 on failure: any other value on success. + + \sa gaiaGetMbrMinX, gaiaGetMbrMaxX, gaiaGetMbrMinY + */ + GAIAGEO_DECLARE int gaiaGetMbrMaxY (const unsigned char *blob, + unsigned int size, double *maxy); + +/** + Creates a Geometry object corresponding to the Envelope [MBR] for a + BLOB-Geometry + + \param blob pointer to BLOB-Geometry + \param size the BLOB's size (in bytes) + + \return the pointer to the newly created Geometry object: NULL on failure + + \sa gaiaFreeGeomColl + + \note you are responsible to destroy (before or after) any allocated Geometry, + unless you've passed ownership of the Geometry object to some further object: + in this case destroying the higher order object will implicitly destroy any + contained child object. + */ + + GAIAGEO_DECLARE gaiaGeomCollPtr gaiaFromSpatiaLiteBlobMbr (const unsigned + char *blob, + unsigned int + size); + +/** + MBRs comparison: Contains + + \param mbr1 pointer to first Geometry object. + \param mbr2 pointer to second Geometry object. + + \return 0 if false; any other value if mbr1 spatially \e contains mbr2 + + \sa gaiaMbrsDisjoint, gaiaMbrsEqual, gaiaMbrsIntersects, + gaiaMbrsOverlaps, gaiaMbrsTouches, gaiaMbrsWithin + */ + GAIAGEO_DECLARE int gaiaMbrsContains (gaiaGeomCollPtr mbr1, + gaiaGeomCollPtr mbr2); + +/** + MBRs comparison: Disjoint + + \param mbr1 pointer to first Geometry object. + \param mbr2 pointer to second Geometry object. + + \return 0 if false; any other value if mbr1 and mbr2 are spatially \e disjoint + + \sa gaiaMbrsContains, gaiaMbrsEqual, gaiaMbrsIntersects, + gaiaMbrsOverlaps, gaiaMbrsTouches, gaiaMbrsWithin + */ + GAIAGEO_DECLARE int gaiaMbrsDisjoint (gaiaGeomCollPtr mbr1, + gaiaGeomCollPtr mbr2); + +/** + MBRs comparison: Equal + + \param mbr1 pointer to first Geometry object. + \param mbr2 pointer to second Geometry object. + + \return 0 if false; any other value if mbr1 and mbr2 are spatially \e equal + + \sa gaiaMbrsContains, gaiaMbrsDisjoint, gaiaMbrsIntersects, + gaiaMbrsOverlaps, gaiaMbrsTouches, gaiaMbrsWithin + */ + GAIAGEO_DECLARE int gaiaMbrsEqual (gaiaGeomCollPtr mbr1, + gaiaGeomCollPtr mbr2); + +/** + MBRs comparison: Intersects + + \param mbr1 pointer to first Geometry object. + \param mbr2 pointer to second Geometry object. + + \return 0 if false; any other value if mbr1 and mbr2 spatially \e intersect + + \sa gaiaMbrsContains, gaiaMbrsDisjoint, gaiaMbrsEqual, + gaiaMbrsOverlaps, gaiaMbrsTouches, gaiaMbrsWithin + */ + GAIAGEO_DECLARE int gaiaMbrsIntersects (gaiaGeomCollPtr mbr1, + gaiaGeomCollPtr mbr2); + +/** + MBRs comparison: Overlaps + + \param mbr1 pointer to first Geometry object. + \param mbr2 pointer to second Geometry object. + + \return 0 if false; any other value if mbr1 and mbr2 spatially \e overlap + + \sa gaiaMbrsContains, gaiaMbrsDisjoint, gaiaMbrsEqual, gaiaMbrsIntersects, + gaiaMbrsTouches, gaiaMbrsWithin + */ + GAIAGEO_DECLARE int gaiaMbrsOverlaps (gaiaGeomCollPtr mbr1, + gaiaGeomCollPtr mbr2); + +/** + MBRs comparison: Touches + + \param mbr1 pointer to first Geometry object. + \param mbr2 pointer to second Geometry object. + + \return 0 if false; any other value if mbr1 and mbr2 spatially \e touche + + \sa gaiaMbrsContains, gaiaMbrsDisjoint, gaiaMbrsEqual, gaiaMbrsIntersects, + gaiaMbrsOverlaps, gaiaMbrsWithin + */ + GAIAGEO_DECLARE int gaiaMbrsTouches (gaiaGeomCollPtr mbr1, + gaiaGeomCollPtr mbr2); + +/** + MBRs comparison: Within + + \param mbr1 pointer to first Geometry object. + \param mbr2 pointer to second Geometry object. + + \return 0 if false; any other value if mbr1 is spatially \e within mbr2 + + \sa gaiaMbrsContains, gaiaMbrsDisjoint, gaiaMbrsEqual, gaiaMbrsIntersects, + gaiaMbrsOverlaps, gaiaMbrsTouches + */ + GAIAGEO_DECLARE int gaiaMbrsWithin (gaiaGeomCollPtr mbr1, + gaiaGeomCollPtr mbr2); + +/** + Creates a BLOB-Geometry representing an Envelope [MBR] + + \param x1 first X coordinate. + \param y1 first Y coordinate. + \param x2 second X coordinate. + \param y2 second Y coordinate. + \param srid the SRID associated to the Envelope + \param result on completion will contain a pointer to newly created + BLOB-Geometry + \param size on completion this variabile will contain the BLOB's size (in + bytes) + + \sa gaiaBuildCircleMbr + + \note [XY] coords must define two extreme Points identifying a diagonal + of the MBR [Envelope] + \n no special order is required for coords: MAX / MIN values will be + internally arranged as appropriate. + */ + GAIAGEO_DECLARE void gaiaBuildMbr (double x1, double y1, double x2, + double y2, int srid, + unsigned char **result, int *size); + +/** + Creates a BLOB-Geometry representing an Envelope [MBR] + + \param x centre X coordinate. + \param y centre Y coordinate. + \param radius the radius of the circle + \param srid the SRID associated to the Envelope + \param result on completion will contain a pointer to newly created + BLOB-Geometry + \param size on completion this variabile will contain the BLOB's size (in + bytes) + + \sa gaiaBuildMbr + + \note the \e circle of givern \e radius and \e centre will be used so to + determine the corresponding \e square Envelope + */ + GAIAGEO_DECLARE void gaiaBuildCircleMbr (double x, double y, double radius, + int srid, unsigned char **result, + int *size); + +/** + Creates a BLOB-FilterMBR + + \param x1 first X coordinate. + \param y1 first Y coordinate. + \param x2 second X coordinate. + \param y2 second Y coordinate. + \param mode one of: GAIA_FILTER_MBR_WITHIN, GAIA_FILTER_MBR_CONTAINS, + GAIA_FILTER_MBR_INTERSECTS, GAIA_FILTER_MBR_DECLARE + \param result on completion will contain a pointer to newly created + BLOB-FilterMBR + \param size on completion this variabile will contain the BLOB's size (in + bytes) + + \sa gaiaParseFilterMbr + + \note [XY] coords must define two extreme Points identifying a diagonal + of the MBR [Envelope] + \n no special order is required for coords: MAX / MIN values will be + internally arranged as appropriate. + + \remark internally used to implement Geometry Callback R*Tree filtering. + */ + GAIAGEO_DECLARE void gaiaBuildFilterMbr (double x1, double y1, double x2, + double y2, int mode, + unsigned char **result, int *size); + +/** + Creates a BLOB-FilterMBR + + \param result pointer to BLOB-FilterMBR [previously created by + gaiaBuildFilterMbr] + BLOB-Geometry + \param size BLOB's size (in bytes) + \param minx on completion this variable will contain the MBR MinX coord. + \param miny on completion this variable will contain the MBR MinY coord. + \param maxx on completion this variable will contain the MBR MinY coord. + \param maxy on completion this variable will contain the MBR MaxY coord. + \param mode on completion this variable will contain the FilterMBR mode. + + \sa gaiaBuildFilterMbr + + \remark internally used to implement Geometry Callback R*Tree filtering. + */ + GAIAGEO_DECLARE int gaiaParseFilterMbr (unsigned char *result, int size, + double *minx, double *miny, + double *maxx, double *maxy, + int *mode); + +/** + Computes the Z-Range for a Linestring object + + \param line pointer to the Linestring object + \param min on completion this variable will contain the min Z value found + \param max on completion this variable will contain the max Z value found + + \note if the Linestring has XY or XYM dims, the Z-Range is meaningless + */ + GAIAGEO_DECLARE void gaiaZRangeLinestring (gaiaLinestringPtr line, + double *min, double *max); + +/** + Computes the Z-Range for a Ring object + + \param rng pointer to the Ring object + \param min on completion this variable will contain the min Z value found + \param max on completion this variable will contain the max Z value found + + \note if the Ring has XY or XYM dims, the Z-Range is meaningless + */ + GAIAGEO_DECLARE void gaiaZRangeRing (gaiaRingPtr rng, double *min, + double *max); + +/** + Computes the Z-Range for a Polygon object + + \param polyg pointer to the Polygon object + \param min on completion this variable will contain the min Z value found + \param max on completion this variable will contain the max Z value found + + \note if the Polygon has XY or XYM dims, the Z-Range is meaningless + */ + GAIAGEO_DECLARE void gaiaZRangePolygon (gaiaPolygonPtr polyg, double *min, + double *max); + +/** + Computes the Z-Range for a Geometry object + + \param geom pointer to the Geometry object + \param min on completion this variable will contain the min Z value found + \param max on completion this variable will contain the max Z value found + + \note if the Geometry has XY or XYM dims, the Z-Range is meaningless + */ + GAIAGEO_DECLARE void gaiaZRangeGeometry (gaiaGeomCollPtr geom, double *min, + double *max); + +/** + Computes the M-Range for a Linestring object + + \param line pointer to the Linestring object + \param min on completion this variable will contain the min M value found + \param max on completion this variable will contain the max M value found + + \note if the Linestring has XY or XYZ dims, the M-Range is meaningless + */ + GAIAGEO_DECLARE void gaiaMRangeLinestring (gaiaLinestringPtr line, + double *min, double *max); + +/** + Computes the M-Range for a Ring object + + \param rng pointer to the Ring object + \param min on completion this variable will contain the min M value found + \param max on completion this variable will contain the max M value found + + \note if the Ring has XY or XYZ dims, the M-Range is meaningless + */ + GAIAGEO_DECLARE void gaiaMRangeRing (gaiaRingPtr rng, double *min, + double *max); + +/** + Computes the M-Range for a Polygon object + + \param polyg pointer to the Polygon object + \param min on completion this variable will contain the min M value found + \param max on completion this variable will contain the max M value found + + \note if the Polygon has XY or XYZ dims, the M-Range is meaningless + */ + GAIAGEO_DECLARE void gaiaMRangePolygon (gaiaPolygonPtr polyg, double *min, + double *max); + +/** + Computes the Z-Range for a Geometry object + + \param geom pointer to the Geometry object + \param min on completion this variable will contain the min M value found + \param max on completion this variable will contain the max M value found + + \note if the Geometry has XY or XYZ dims, the M-Range is meaningless + */ + GAIAGEO_DECLARE void gaiaMRangeGeometry (gaiaGeomCollPtr geom, double *min, + double *max); + + +#ifdef __cplusplus +} +#endif + +#endif /* _GG_MBR_H */ diff --git a/src/spatialite/src/headers/spatialite/gg_structs.h b/src/spatialite/src/headers/spatialite/gg_structs.h new file mode 100644 index 0000000..21ab99b --- /dev/null +++ b/src/spatialite/src/headers/spatialite/gg_structs.h @@ -0,0 +1,820 @@ +/* + gg_structs.h -- Gaia common support for geometries: structures + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + + +/** + \file gg_structs.h + + Geometry structures + */ + +#ifndef _GG_STRUCTS_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _GG_STRUCTS_H +#endif + +#include <sys/types.h> + +#ifdef __cplusplus +extern "C" +{ +#endif + +/** + Container for OGC POINT Geometry + */ + typedef struct gaiaPointStruct + { +/* an OpenGis POINT */ +/** X coordinate */ + double X; /* X,Y coordinates */ +/** Y coordinate */ + double Y; +/** Z coordinate: only for XYZ and XYZM dims */ + double Z; /* Z coordinate */ +/** M measure: only for XYM and XYZM dims */ + double M; /* M measure */ +/** one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM */ + int DimensionModel; /* (x,y), (x,y,z), (x,y,m) or (x,y,z,m) */ +/** pointer to next item [double linked list] */ + struct gaiaPointStruct *Next; /* for double-linked list */ +/** pointer to previous item [double linked list] */ + struct gaiaPointStruct *Prev; /* for double-linked list */ + } gaiaPoint; +/** + Typedef for OGC POINT structure + + \sa gaiaPoint + */ + typedef gaiaPoint *gaiaPointPtr; + +/** + Container for dynamically growing line/ring + */ + typedef struct gaiaDynamicLineStruct + { +/* a generic DYNAMIC LINE object */ +/** invalid object */ + int Error; +/** the SRID */ + int Srid; +/** pointer to first POINT [double linked list] */ + gaiaPointPtr First; /* Points linked list - first */ +/** pointer to last POINT [double linked list] */ + gaiaPointPtr Last; /* Points linked list - last */ + } gaiaDynamicLine; +/** + Typedef for dynamically growing line/ring structure + + \sa gaiaDynamicLine + */ + typedef gaiaDynamicLine *gaiaDynamicLinePtr; + +/** + Container for OGC LINESTRING Geometry + */ + typedef struct gaiaLinestringStruct + { +/* an OpenGis LINESTRING */ +/** number of points [aka vertices] */ + int Points; /* number of vertices */ +/** COORDs mem-array */ + double *Coords; /* X,Y [vertices] array */ +/** MBR: min X */ + double MinX; /* MBR - BBOX */ +/** MBR: min Y */ + double MinY; /* MBR - BBOX */ +/** MBR: max X */ + double MaxX; /* MBR - BBOX */ +/** MBR: max X */ + double MaxY; /* MBR - BBOX */ +/** one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM */ + int DimensionModel; /* (x,y), (x,y,z), (x,y,m) or (x,y,z,m) */ +/** pointer to next item [linked list] */ + struct gaiaLinestringStruct *Next; /* for linked list */ + } gaiaLinestring; +/** + Typedef for OGC LINESTRING structure + + \sa gaiaLinestring + */ + typedef gaiaLinestring *gaiaLinestringPtr; + +/** + Container for OGC RING Geometry + */ + typedef struct gaiaRingStruct + { +/* a GIS ring - OpenGis LINESTRING, closed */ +/** number of points [aka vertices] */ + int Points; /* number of vertices */ +/** COORDs mem-array */ + double *Coords; /* X,Y [vertices] array */ +/** clockwise / counterclockwise */ + int Clockwise; /* clockwise / counterclockwise */ +/** MBR: min X */ + double MinX; /* MBR - BBOX */ +/** MBR: min Y */ + double MinY; /* MBR - BBOX */ +/** MBR: max X */ + double MaxX; /* MBR - BBOX */ +/** MBR: max Y */ + double MaxY; /* MBR - BBOX */ +/** one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM */ + int DimensionModel; /* (x,y), (x,y,z), (x,y,m) or (x,y,z,m) */ +/** pointer to next item [linked list] */ + struct gaiaRingStruct *Next; /* for linked list */ +/** pointer to belonging Polygon */ + struct gaiaPolygonStruct *Link; /* polygon reference */ + } gaiaRing; +/** + Typedef for OGC RING structure + + \sa gaiaRing + */ + typedef gaiaRing *gaiaRingPtr; + +/** + Container for OGC POLYGON Geometry + */ + typedef struct gaiaPolygonStruct + { +/* an OpenGis POLYGON */ +/** the exterior ring (mandatory) */ + gaiaRingPtr Exterior; /* exterior ring */ +/** number of interior rings (may be, none) */ + int NumInteriors; /* number of interior rings */ +/** array of interior rings */ + gaiaRingPtr Interiors; /* interior rings array */ +/** index of first unused interior ring */ + int NextInterior; /* first free interior ring */ +/** MBR: min X */ + double MinX; /* MBR - BBOX */ +/** MBR: min Y */ + double MinY; /* MBR - BBOX */ +/** MBR: max X */ + double MaxX; /* MBR - BBOX */ +/** MBR: max Y */ + double MaxY; /* MBR - BBOX */ +/** one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM */ + int DimensionModel; /* (x,y), (x,y,z), (x,y,m) or (x,y,z,m) */ +/** pointer to next item [linked list] */ + struct gaiaPolygonStruct *Next; /* for linked list */ + } gaiaPolygon; +/** + Typedef for OGC POLYGON structure + + \sa gaiaPolygon + */ + typedef gaiaPolygon *gaiaPolygonPtr; + +/** + Container for OGC GEOMETRYCOLLECTION Geometry + */ + typedef struct gaiaGeomCollStruct + { +/* OpenGis GEOMETRYCOLLECTION */ +/** the SRID */ + int Srid; /* the SRID value for this GEOMETRY */ +/** CPU endian arch */ + char endian_arch; /* littleEndian - bigEndian arch for target CPU */ +/** BLOB Geometry endian arch */ + char endian; /* littleEndian - bigEndian */ +/** BLOB-Geometry buffer */ + const unsigned char *blob; /* WKB encoded buffer */ +/** BLOB-Geometry buffer size (in bytes) */ + unsigned long size; /* buffer size */ +/** current offset [BLOB parsing] */ + unsigned long offset; /* current offset [for parsing] */ +/** pointer to first POINT [linked list]; may be NULL */ + gaiaPointPtr FirstPoint; /* Points linked list - first */ +/** pointer to last POINT [linked list]; may be NULL */ + gaiaPointPtr LastPoint; /* Points linked list - last */ +/** pointer to first LINESTRING [linked list]; may be NULL */ + gaiaLinestringPtr FirstLinestring; /* Linestrings linked list - first */ +/** pointer to last LINESTRING [linked list]; may be NULL */ + gaiaLinestringPtr LastLinestring; /* Linestrings linked list - last */ +/** pointer to first POLYGON [linked list]; may be NULL */ + gaiaPolygonPtr FirstPolygon; /* Polygons linked list - first */ +/** pointer to last POLYGON [linked list]; may be NULL */ + gaiaPolygonPtr LastPolygon; /* Polygons linked list - last */ +/** MBR: min X */ + double MinX; /* MBR - BBOX */ +/** MBR: min Y */ + double MinY; /* MBR - BBOX */ +/** MBR: max X */ + double MaxX; /* MBR - BBOX */ +/** MBR: max Y */ + double MaxY; /* MBR - BBOX */ +/** one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM */ + int DimensionModel; /* (x,y), (x,y,z), (x,y,m) or (x,y,z,m) */ +/** any valid Geometry Class type */ + int DeclaredType; /* the declared TYPE for this Geometry */ +/** pointer to next item [linked list] */ + struct gaiaGeomCollStruct *Next; /* Vanuatu - used for linked list */ + } gaiaGeomColl; +/** + Typedef for OGC GEOMETRYCOLLECTION structure + + \sa gaiaGeomCool + */ + typedef gaiaGeomColl *gaiaGeomCollPtr; + +/** + Container similar to LINESTRING [internally used] + */ + typedef struct gaiaPreRingStruct + { +/* a LINESTRING used to build rings */ +/** pointer to LINESTRING */ + gaiaLinestringPtr Line; /* a LINESTRING pointer */ +/** already used/visited item */ + int AlreadyUsed; /* a switch to mark an already used line element */ +/** pointer to next item [linked list] */ + struct gaiaPreRingStruct *Next; /* for linked list */ + } gaiaPreRing; +/** + Typedef for gaiaPreRing structure + + \sa gaiaPreRing + */ + typedef gaiaPreRing *gaiaPreRingPtr; + +/** + Container for variant (multi-type) value + */ + typedef struct gaiaValueStruct + { +/* a DBF field multitype value */ +/** data type: one of GAIA_NULL_VALUE, GAIA_INT_VALUE, GAIA_DOUBLE_VALUE, GAIA_TEXT_VALUE */ + short Type; /* the type */ +/** TEXT type value */ + char *TxtValue; /* the text value */ +/** INT type value */ + sqlite3_int64 IntValue; /* the integer value */ +/** DOUBLE type value */ + double DblValue; /* the double value */ + } gaiaValue; +/** + Typedef for variant (multi-type) value structure + */ + typedef gaiaValue *gaiaValuePtr; + +/** + Container for DBF field + */ + typedef struct gaiaDbfFieldStruct + { +/* a DBF field definition - shapefile attribute */ +/** field name */ + char *Name; /* field name */ +/** DBF data type */ + unsigned char Type; /* field type */ +/** DBF buffer offset [where the field value starts] */ + int Offset; /* buffer offset [this field begins at *buffer+offset* and extends for *length* bytes */ +/** total DBF buffer field length (in bytes) */ + unsigned char Length; /* field total length [in bytes] */ +/** precision (decimal digits) */ + unsigned char Decimals; /* decimal positions */ +/** current variant [multi-type] value */ + gaiaValuePtr Value; /* the current multitype value for this attribute */ +/** pointer to next item [linked list] */ + struct gaiaDbfFieldStruct *Next; /* pointer to next element in linked list */ + } gaiaDbfField; +/** + Typedef for DBF field structure + */ + typedef gaiaDbfField *gaiaDbfFieldPtr; + +/** + Container for a list of DBF fields + */ + typedef struct gaiaDbfListStruct + { +/* a linked list to contain the DBF fields definitions - shapefile attributes */ +/** current RowID */ + int RowId; /* the current RowId */ +/** current Geometry */ + gaiaGeomCollPtr Geometry; /* geometry for current entity */ +/** pointer to first DBF field [linked list] */ + gaiaDbfFieldPtr First; /* pointer to first element in linked list */ +/** pointer to last DBF field [linked list] */ + gaiaDbfFieldPtr Last; /* pointer to last element in linker list */ + } gaiaDbfList; +/** + Typedef for a list of DBF fields + + \sa gaiaDbfList + */ + typedef gaiaDbfList *gaiaDbfListPtr; + +/** + Container for DBF file handling + */ + typedef struct gaiaDbfStruct + { +/* DBF TYPE */ +/** DBF endian arch */ + int endian_arch; +/** validity flag: 1 = ready to be processed */ + int Valid; /* 1 = ready to process */ +/** DBF file pathname */ + char *Path; /* the DBF path */ +/** FILE handle */ + FILE *flDbf; /* the DBF file handle */ +/** list of DBF fields */ + gaiaDbfListPtr Dbf; /* the DBF attributes list */ +/** I/O buffer */ + unsigned char *BufDbf; /* the DBF I/O buffer */ +/** header size (in bytes) */ + int DbfHdsz; /* the DBF header length */ +/** record length (in bytes) */ + int DbfReclen; /* the DBF record length */ +/** current file size */ + int DbfSize; /* current DBF size */ +/** current Record Number */ + int DbfRecno; /* current DBF record number */ +/** handle to ICONV converter object */ + void *IconvObj; /* opaque reference to ICONV converter */ +/** last error message (may be NULL) */ + char *LastError; /* last error message */ + } gaiaDbf; +/** + Typedef for DBF file handler structure + + \sa gaiaDbf + */ + typedef gaiaDbf *gaiaDbfPtr; + +/** + Container for SHP file handling + */ + typedef struct gaiaShapefileStruct + { +/* SHAPEFILE TYPE */ +/** SHP endian arch */ + int endian_arch; +/** validity flag: 1 = ready to be processed */ + int Valid; /* 1 = ready to process */ +/** read or write mode */ + int ReadOnly; /* read or write mode */ +/** SHP 'abstract' path (no suffixes) */ + char *Path; /* the shapefile abstract path [no suffixes] */ +/** FILE handle to SHX file */ + FILE *flShx; /* the SHX file handle */ +/** FILE handle to SHP file */ + FILE *flShp; /* the SHP file handle */ +/** FILE handle to DBF file */ + FILE *flDbf; /* the DBF file handle */ +/** the SHP shape code */ + int Shape; /* the SHAPE code for the whole shapefile */ +/** list of DBF fields */ + gaiaDbfListPtr Dbf; /* the DBF attributes list */ +/** DBF I/O buffer */ + unsigned char *BufDbf; /* the DBF I/O buffer */ +/** DBF header size (in bytes) */ + int DbfHdsz; /* the DBF header length */ +/** DBF record length (in bytes) */ + int DbfReclen; /* the DBF record length */ +/** DBF current file size (in bytes) */ + int DbfSize; /* current DBF size */ +/** DBF current Record Number */ + int DbfRecno; /* current DBF record number */ +/** SHP I/O buffer */ + unsigned char *BufShp; /* the SHP I/O buffer */ +/** SHP current buffer size (in bytes) */ + int ShpBfsz; /* the SHP buffer current size */ +/** SHP current file size */ + int ShpSize; /* current SHP size */ +/** SHX current file size */ + int ShxSize; /* current SHX size */ +/** Total Extent: min X */ + double MinX; /* the MBR/BBOX for the whole shapefile */ +/** Total Extent: min Y */ + double MinY; +/** Total Extent: max X */ + double MaxX; +/** Total Extent: max Y */ + double MaxY; +/** handle to ICONV converter object */ + void *IconvObj; /* opaque reference to ICONV converter */ +/** last error message (may be NULL) */ + char *LastError; /* last error message */ +/** SHP actual OGC Geometry type */ + int EffectiveType; /* the effective Geometry-type, as determined by gaiaShpAnalyze() */ +/** SHP actual dims: one of GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM */ + int EffectiveDims; /* the effective Dimensions [XY, XYZ, XYM, XYZM], as determined by gaiaShpAnalyze() */ + } gaiaShapefile; +/** + Typedef for SHP file handler structure + + \sa gaiaShapefile + */ + typedef gaiaShapefile *gaiaShapefilePtr; + +/** + Container for dynamically growing output buffer + */ + typedef struct gaiaOutBufferStruct + { +/* a struct handling a dynamically growing output buffer */ +/** current buffer */ + char *Buffer; +/** current write offset */ + int WriteOffset; +/** current buffer size (in bytes) */ + int BufferSize; +/** validity flag */ + int Error; + } gaiaOutBuffer; +/** + Typedef for dynamically growing output buffer structure + + \sa gaiaOutBuffer + */ + typedef gaiaOutBuffer *gaiaOutBufferPtr; + +#ifndef OMIT_ICONV /* ICONV enabled: supporting text reader */ + +/** Virtual Text driver: MAX number of fields */ +#define VRTTXT_FIELDS_MAX 65535 +/** Virtual Text driver: MAX block size (in bytes) */ +#define VRTTXT_BLOCK_MAX 65535 + +/** Virtual Text driver: TEXT value */ +#define VRTTXT_TEXT 1 +/** Virtual Text driver: INTEGER value */ +#define VRTTXT_INTEGER 2 +/** Virtual Text driver: DOUBLE value */ +#define VRTTXT_DOUBLE 3 +/** Virtual Text driver: NULL value */ +#define VRTTXT_NULL 4 + +/** + Container for Virtual Text record (line) + */ + struct vrttxt_line + { +/* a struct representing a full LINE (aka Record) */ +/** current offset (parsing) */ + off_t offset; +/** line length (in bytes) */ + int len; +/** array of field offsets (where each field starts) */ + int field_offsets[VRTTXT_FIELDS_MAX]; +/** number of field into the record */ + int num_fields; +/** validity flag */ + int error; + }; + +/** + Container for Virtual Text record (line) offsets + */ + struct vrttxt_row + { +/* a struct storing Row offsets */ +/** Line Number */ + int line_no; +/** start offset */ + off_t offset; +/** record (line) length (in bytes) */ + int len; +/** number of fields into this record */ + int num_fields; + }; + +/** + Container for Virtual Text block of records + */ + struct vrttxt_row_block + { +/* +/ for efficiency sake, individual Row offsets +/ are grouped in reasonably sized blocks +*/ +/** array of records [lines] */ + struct vrttxt_row rows[VRTTXT_BLOCK_MAX]; +/** number of records into the array */ + int num_rows; +/** min Line Number */ + int min_line_no; +/** max Line Number */ + int max_line_no; +/** pointer to next item [linked list] */ + struct vrttxt_row_block *next; + }; + +/** + Container for Virtual Text column (field) header + */ + struct vrttxt_column_header + { +/* a struct representing a Column (aka Field) header */ +/** column name */ + char *name; +/** data type: one of GAIA_NULL_VALUE, GAIA_INT_VALUE, GAIA_DOUBLE_VALUE, GAIA_TEXT_VALUE */ + int type; + }; + +/** + Container for Virtual Text file handling + */ + typedef struct vrttxt_reader + { +/* the main TXT-Reader struct */ +/** array of columns (fields) */ + struct vrttxt_column_header columns[VRTTXT_FIELDS_MAX]; +/** FILE handle */ + FILE *text_file; +/** handle to ICONV converter object */ + void *toUtf8; /* the UTF-8 ICONV converter */ +/** field separator character */ + char field_separator; +/** text separator character (quote) */ + char text_separator; +/** decimal separator */ + char decimal_separator; +/** TRUE if the first line contains column names */ + int first_line_titles; +/** validity flag */ + int error; +/** pointer to first block of records [linked list] */ + struct vrttxt_row_block *first; +/** pointer to last block of records [linked list] */ + struct vrttxt_row_block *last; +/** array of pointers to individual records [lines] */ + struct vrttxt_row **rows; +/** number of records */ + int num_rows; +/** current Line Number */ + int line_no; +/** max number of columns (fields) */ + int max_fields; +/** current buffer size */ + int current_buf_sz; +/** current buffer offset [parsing] */ + int current_buf_off; +/** I/O buffer */ + char *line_buffer; +/** current field buffer */ + char *field_buffer; +/** array of field offsets [current record] */ + int field_offsets[VRTTXT_FIELDS_MAX]; +/** array of field lengths [current record] */ + int field_lens[VRTTXT_FIELDS_MAX]; +/** max field [current record] */ + int max_current_field; +/** current record [line] ready for parsing */ + int current_line_ready; + } gaiaTextReader; +/** + Typedef for Virtual Text file handling structure + + \sa gaiaTextReader + */ + typedef gaiaTextReader *gaiaTextReaderPtr; + +#endif /* end ICONV (text reader) */ + +/** + Layer Extent infos + */ + typedef struct gaiaLayerExtentInfos + { +/** row count (aka feature count) */ + int Count; +/** Extent: min X */ + double MinX; /* MBR - BBOX */ +/** Extent: min Y */ + double MinY; /* MBR - BBOX */ +/** Extent: max X */ + double MaxX; /* MBR - BBOX */ +/** Extent: max Y */ + double MaxY; /* MBR - BBOX */ + } gaiaLayerExtent; + +/** + Typedef for Layer Extent infos + + \sa gaiaLayerExtent + */ + typedef gaiaLayerExtent *gaiaLayerExtentPtr; + +/** + Layer Auth infos + */ + typedef struct gaiaLayerAuthInfos + { +/** Read-Only layer: TRUE or FALSE */ + int IsReadOnly; +/** Hidden layer: TRUE or FALSE */ + int IsHidden; + } gaiaLayerAuth; + +/** + Typedef for Layer Auth infos + + \sa gaiaLayerAuth + */ + typedef gaiaLayerAuth *gaiaLayerAuthPtr; + +/** + Attribute/Field MaxSize/Length infos + */ + typedef struct gaiaAttributeFieldMaxSizeInfos + { +/** MaxSize / MaxLength */ + int MaxSize; + } gaiaAttributeFieldMaxSize; + +/** + Typedef for Attribute/Field MaxSize/Length infos + + \sa gaiaAttributeFieldMaxSize + */ + typedef gaiaAttributeFieldMaxSize *gaiaAttributeFieldMaxSizePtr; + +/** + Attribute/Field Integer range infos + */ + typedef struct gaiaAttributeFieldIntRangeInfos + { +/** Minimum value */ + sqlite3_int64 MinValue; +/** Maximum value */ + sqlite3_int64 MaxValue; + } gaiaAttributeFieldIntRange; + +/** + Typedef for Attribute/Field Integer range infos + + \sa gaiaAttributeFieldIntRange + */ + typedef gaiaAttributeFieldIntRange *gaiaAttributeFieldIntRangePtr; + +/** + Attribute/Field Double range infos + */ + typedef struct gaiaAttributeFieldDoubleRangeInfos + { +/** Minimum value */ + double MinValue; +/** Maximum value */ + double MaxValue; + } gaiaAttributeFieldDoubleRange; + +/** + Typedef for Attribute/Field Double range infos + + \sa gaiaAttributeFieldDoubleRange + */ + typedef gaiaAttributeFieldDoubleRange *gaiaAttributeFieldDoubleRangePtr; + +/** + LayerAttributeField infos + */ + typedef struct gaiaLayerAttributeFieldInfos + { +/** ordinal position */ + int Ordinal; +/** SQL name of the corresponding column */ + char *AttributeFieldName; +/** total count of NULL values */ + int NullValuesCount; +/** total count of INTEGER values */ + int IntegerValuesCount; +/** total count of DOUBLE values */ + int DoubleValuesCount; +/** total count of TEXT values */ + int TextValuesCount; +/** total count of BLOB values */ + int BlobValuesCount; +/** pointer to MaxSize/Length infos (may be NULL) */ + gaiaAttributeFieldMaxSizePtr MaxSize; +/** pointer to range of Integer values infos (may be NULL) */ + gaiaAttributeFieldIntRangePtr IntRange; +/** pointer to range of Double values infos (may be NULL) */ + gaiaAttributeFieldDoubleRangePtr DoubleRange; +/** pointer to next item (linked list) */ + struct gaiaLayerAttributeFieldInfos *Next; + } gaiaLayerAttributeField; + +/** + Typedef for Layer AttributeField infos + + \sa gaiaLayerAttributeField + */ + typedef gaiaLayerAttributeField *gaiaLayerAttributeFieldPtr; + +/** + Vector Layer item + */ + typedef struct gaiaVectorLayerItem + { +/** one of GAIA_VECTOR_UNKNOWN, GAIA_VECTOR_TABLE, GAIA_VECTOR_VIEW, + GAIA_VECTOR_VIRTUAL */ + int LayerType; +/** SQL name of the corresponding table */ + char *TableName; +/** SQL name of the corresponding Geometry column */ + char *GeometryName; +/** SRID value */ + int Srid; +/** one of GAIA_VECTOR_UNKNOWN, GAIA_VECTOR_POINT, GAIA_VECTOR_LINESTRING, + GAIA_VECTOR_POLYGON, GAIA_VECTOR_MULTIPOINT, GAIA_VECTOR_MULTILINESTRING, + GAIA_VECTOR_MULTIPOLYGON, GAIA_VECTOR_GEOMETRYCOLLECTION, GAIA_VECTOR_GEOMETRY +*/ + int GeometryType; +/** one of GAIA_VECTOR_UNKNOWN, GAIA_XY, GAIA_XY_Z, GAIA_XY_M, GAIA_XY_ZM */ + int Dimensions; +/** one of GAIA_VECTOR_UNKNOWN, GAIA_SPATIAL_INDEX_NONE, GAIA_SPATIAL_INDEX_RTREE, + GAIA_SPATIAL_INDEX_MBRCACHE +*/ + int SpatialIndex; +/** pointer to Extent infos (may be NULL) */ + gaiaLayerExtentPtr ExtentInfos; +/** pointer to Auth infos (may be NULL) */ + gaiaLayerAuthPtr AuthInfos; +/** pointer to first Field/Attribute (linked list) */ + gaiaLayerAttributeFieldPtr First; +/** pointer to last Field/Attribute (linked list) */ + gaiaLayerAttributeFieldPtr Last; +/** pointer to next item (linked list) */ + struct gaiaVectorLayerItem *Next; + } gaiaVectorLayer; + +/** + Typedef for Vector Layer item + + \sa gaiaVectorLayer + */ + typedef gaiaVectorLayer *gaiaVectorLayerPtr; + +/** + Container for Vector Layers List + */ + typedef struct gaiaVectorLayersListStr + { +/** pointer to first vector layer (linked list) */ + gaiaVectorLayerPtr First; +/** pointer to last vector layer (linked list) */ + gaiaVectorLayerPtr Last; +/** pointer to currently set vector layer */ + gaiaVectorLayerPtr Current; + } gaiaVectorLayersList; + +/** + Typedef for Vector Layers List + + \sa gaiaVectorLayersList + */ + typedef gaiaVectorLayersList *gaiaVectorLayersListPtr; + +#ifdef __cplusplus +} +#endif + +#endif /* _GG_STRUCTS_H */ diff --git a/src/spatialite/src/headers/spatialite/gg_wfs.h b/src/spatialite/src/headers/spatialite/gg_wfs.h new file mode 100644 index 0000000..6945c53 --- /dev/null +++ b/src/spatialite/src/headers/spatialite/gg_wfs.h @@ -0,0 +1,517 @@ +/* + gg_wfs.h -- Gaia common support for WFS + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + + +/** + \file gg_wfs.h + + WFS support + */ + +#ifndef _GG_WFS_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _GG_WFS_H +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + + typedef struct gaia_wfs_catalog gaiaWFScatalog; + typedef gaiaWFScatalog *gaiaWFScatalogPtr; + + typedef struct gaia_wfs_item gaiaWFSitem; + typedef gaiaWFSitem *gaiaWFSitemPtr; + + typedef struct gaia_wfs_schema gaiaWFSschema; + typedef gaiaWFSschema *gaiaWFSschemaPtr; + + typedef struct gaia_wfs_column gaiaWFScolumn; + typedef gaiaWFScolumn *gaiaWFScolumnPtr; + +/** + Loads data from some WFS source + + \param sqlite handle to current DB connection + \param path_or_url pointer to some WFS-GetFeature XML Document (could be a pathname or an URL). + \param alt_describe_uri an alternative URI for DescribeFeatureType to be used + if no one is found within the XML document returned by GetFeature. + \param layer_name the name of the WFS layer. + \param swap_axes if TRUE the X and Y axes will be swapped + \param table the name of the table to be created + \param pk_column name of the Primary Key column; if NULL or mismatching + then "PK_UID" will be assumed by default. + \param spatial_index if TRUE an R*Tree Spatial Index will be created + \param rows on completion will contain the total number of actually imported rows + \param err_msg on completion will contain an error message (if any) + \param progress_callback pointer to a callback function to be invoked immediately + after processing each WFS page (could be NULL) + \param callback_ptr an arbitrary pointer (to be passed as the second argument + by the callback function). + + \sa create_wfs_catalog, load_from_wfs_paged, reset_wfs_http_connection + + \return 0 on failure, any other value on success + + \note an eventual error message returned via err_msg requires to be deallocated + by invoking free() + \n please note: this one simply is a convenience method, and exactly corresponds + to load_from_wfs_paged() setting a negative page size. + */ + SPATIALITE_DECLARE int load_from_wfs (sqlite3 * sqlite, + const char *path_or_url, + const char *alt_describe_uri, + const char *layer_name, int swap_axes, + const char *table, + const char *pk_column_name, + int spatial_index, int *rows, + char **err_msg, + void (*progress_callback) (int, + void *), + void *callback_ptr); + +/** + Loads data from some WFS source (using WFS paging) + + \param sqlite handle to current DB connection + \param path_or_url pointer to some WFS-GetFeature XML Document (could be a pathname or an URL). + \param alt_describe_uri an alternative URI for DescribeFeatureType to be used + if no one is found within the XML document returned by GetFeature. + \param layer_name the name of the WFS layer. + \param swap_axes if TRUE the X and Y axes will be swapped + \param table the name of the table to be created + \param pk_column name of the Primary Key column; if NULL or mismatching + then "PK_UID" will be assumed by default. + \param spatial_index if TRUE an R*Tree Spatial Index will be created + \param page_size max number of features for each single WFS call; if zero or + negative a single monolithic page is assumed (i.e. paging will not be applied). + \param rows on completion will contain the total number of actually imported rows + \param err_msg on completion will contain an error message (if any) + \param progress_callback pointer to a callback function to be invoked immediately + after processing each WFS page (could be NULL) + \param callback_ptr an arbitrary pointer (to be passed as the second argument + by the callback function). + + \sa create_wfs_catalog, load_from_wfs, reset_wfs_http_connection + + \return 0 on failure, any other value on success + + \note an eventual error message returned via err_msg requires to be deallocated + by invoking free() + + \note the progress_callback function must have this signature: + \b void \b myfunct(\b int \b count, \b void \b *ptr); + \n and will cyclically report how many features have been processed since the initial call start. + */ + SPATIALITE_DECLARE int load_from_wfs_paged (sqlite3 * sqlite, + const char *path_or_url, + const char *alt_describe_uri, + const char *layer_name, + int swap_axes, + const char *table, + const char *pk_column_name, + int spatial_index, + int page_size, int *rows, + char **err_msg, + void (*progress_callback) (int, + void + *), + void *callback_ptr); + +/** + Creates a Catalog for some WFS service + + \param path_or_url pointer to some WFS-GetCapabilities XML Document (could be a pathname or an URL). + \param err_msg on completion will contain an error message (if any) + + \return the pointer to the corresponding WFS-Catalog object: NULL on failure + + \sa destroy_wfs_catalog, get_wfs_catalog_count, get_wfs_catalog_item, load_from_wfs, + reset_wfs_http_connection + + \note an eventual error message returned via err_msg requires to be deallocated + by invoking free().\n + you are responsible to destroy (before or after) any WFS-Catalog returned by create_wfs_catalog(). + */ + SPATIALITE_DECLARE gaiaWFScatalogPtr create_wfs_catalog (const char + *path_or_url, + char **err_msg); + +/** + Destroys a WFS-Catalog object freeing any allocated resource + + \param handle the pointer to a valid WFS-Catalog returned by a previous call + to create_wfs_catalog() + + \sa create_wfs_catalog + */ + SPATIALITE_DECLARE void destroy_wfs_catalog (gaiaWFScatalogPtr handle); + +/** + Return the base URL for any WFS-GetFeature call + + \param handle the pointer to a valid WFS-Item returned by a previous call + to get_wfs_catalog_item(). + + \return the base URL for any WFS-GetFeature call: NULL is undefined + + \sa create_wfs_catalog, get_wfs_base_describe_url, get_wfs_request_url + */ + SPATIALITE_DECLARE const char *get_wfs_base_request_url (gaiaWFScatalogPtr + handle); + +/** + Return the base URL for any WFS-DescribeFeatureType call + + \param handle the pointer to a valid WFS-Item returned by a previous call + to get_wfs_catalog_item(). + + \return the base URL for any WFS-DescribeFeatureType call: NULL is undefined + + \sa create_wfs_catalog, get_wfs_base_request_url, get_wfs_describe_url + */ + SPATIALITE_DECLARE const char *get_wfs_base_describe_url (gaiaWFScatalogPtr + handle); + +/** + Return a GetFeature URL (GET) + + \param handle the pointer to a valid WFS-Item returned by a previous call + to get_wfs_catalog_item(). + \param name the NAME uniquely identifying the required WFS layer. + \param version could be "1.0.0" or "1.1.0"; if NULL or invalid "1.1.0" + will be assumed. + \param srid the preferred SRS to be used for WFS geometries; if negative + or mismatching will be simply ignored. + \param max_features the WFS MAXFEATURES argument; any negative or zero + value will be ignored. + + \return the GetFeature URL: NULL if any error is found. + + \sa get_wfs_base_request_url, get_wfs_describe_url + + \note you are responsible to destroy (before or after) any allocated + memory returned by get_wfs_request_url(). + */ + SPATIALITE_DECLARE char *get_wfs_request_url (gaiaWFScatalogPtr handle, + const char *name, + const char *version, + int srid, int max_features); + +/** + Return a DescribeFeatureType URL (GET) + + \param handle the pointer to a valid WFS-Item returned by a previous call + to get_wfs_catalog_item(). + \param name the NAME uniquely identifying the required WFS layer. + \param version could be "1.0.0" or "1.1.0"; if NULL or invalid "1.1.0" + will be assumed. + + \return the DescribeFeatureType URL: NULL if any error is found. + + \sa get_wfs_base_describe_url, get_wfs_request_url + + \note you are responsible to destroy (before or after) any allocated + memory returned by get_wfs_describe_url(). + */ + SPATIALITE_DECLARE char *get_wfs_describe_url (gaiaWFScatalogPtr handle, + const char *name, + const char *version); + +/** + Return the total count of items (aka Layers) defined within a WFS-Catalog object + + \param handle the pointer to a valid WFS-Catalog returned by a previous call + to create_wfs_catalog() + + \return the total count of items (aka Layers) defined within a WFS-Catalog object: + a negative number if the WFS-Catalog isn't valid + + \sa create_wfs_catalog, get_wfs_catalog_item + */ + SPATIALITE_DECLARE int get_wfs_catalog_count (gaiaWFScatalogPtr handle); + +/** + Return the pointer to some specific Layer defined within a WFS-Catalog object + + \param handle the pointer to a valid WFS-Catalog returned by a previous call + to create_wfs_catalog() + \param index the relative index identifying the required WFS-Layer (the first + Item in the WFS-Catalaog object has index ZERO). + + \return the pointer to the required WFS-Layer object: NULL if the passed index + isn't valid + + \sa create_wfs_catalog, get_wfs_catalog_count, get_wfs_item_name, get_wfs_item_title, + get_wfs_item_abstract, get_wfs_layer_srid_count, get_wfs_layer_srid, + get_wfs_keyword_count, get_wfs_keyword + */ + SPATIALITE_DECLARE gaiaWFSitemPtr get_wfs_catalog_item (gaiaWFScatalogPtr + handle, int index); + +/** + Return the name corresponding to some WFS-Item (aka Layer) object + + \param handle the pointer to a valid WFS-Item returned by a previous call + to get_wfs_catalog_item(). + + \return the name corresponding to the WFS-Layer object + + \sa get_wfs_layer_title, get_wfs_layer_abstract, get_wfs_layer_srid_count, get_wfs_layer_srid, + get_wfs_keyword_count, get_wfs_keyword + */ + SPATIALITE_DECLARE const char *get_wfs_item_name (gaiaWFSitemPtr handle); + +/** + Return the title corresponding to some WFS-Item (aka Layer) object + + \param handle the pointer to a valid WFS-Item returned by a previous call + to get_wfs_catalog_item(). + + \return the title corresponding to the WFS-Layer object + + \sa get_wfs_item_name, get_wfs_item_abstract, get_wfs_layer_srid_count, get_wfs_layer_srid, + get_wfs_keyword_count, get_wfs_keyword + */ + SPATIALITE_DECLARE const char *get_wfs_item_title (gaiaWFSitemPtr handle); + +/** + Return the abstract corresponding to some WFS-Item (aka Layer) object + + \param handle the pointer to a valid WFS-Item returned by a previous call + to get_wfs_catalog_item(). + + \return the abstract corresponding to the WFS-Layer object + + \sa get_wfs_item_name, get_wfs_item_title, get_wfs_layer_srid_count, get_wfs_layer_srid, + get_wfs_keyword_count, get_wfs_keyword + */ + SPATIALITE_DECLARE const char *get_wfs_item_abstract (gaiaWFSitemPtr + handle); + +/** + Return the total count of SRIDs supported by a WFS-Item object + + \param handle the pointer to a valid WFS-Item returned by a previous call + to get_wfs_catalog_item(). + + \return the total count of SRIDs supported by a WFS-Item object: + a negative number if the WFS-Item isn't valid + + \sa get_wfs_item_name, get_wfs_item_title, get_wfs_item_abstract, + get_wfs_layer_srid, get_wfs_keyword_count, get_wfs_keyword + */ + SPATIALITE_DECLARE int get_wfs_layer_srid_count (gaiaWFSitemPtr handle); + +/** + Return one of the SRIDs supported by a WFS-Item object + + \param handle the pointer to a valid WFS-Item returned by a previous call + to get_wfs_catalog_item(). + \param index the relative index identifying the required SRID (the first + SRID value supported by a WFS-Item object has index ZERO). + + \return the SRID-value: a negative number if the required SRID-value isn't defined. + + \sa get_wfs_item_name, get_wfs_item_title, get_wfs_item_abstract, + get_wfs_layer_srid_count, get_wfs_keyword_count, get_wfs_keyword + */ + SPATIALITE_DECLARE int get_wfs_layer_srid (gaiaWFSitemPtr handle, + int index); + +/** + Return the total count of Keywords associated to a WFS-Item object + + \param handle the pointer to a valid WFS-Item returned by a previous call + to get_wfs_catalog_item(). + + \return the total count of Keyword associated to a WFS-Item object: + a negative number if the WFS-Item isn't valid + + \sa get_wfs_item_name, get_wfs_item_title, get_wfs_item_abstract, + get_wfs_layer_srid_count, get_wfs_layer_srid, get_wfs_layer_keyword + */ + SPATIALITE_DECLARE int get_wfs_keyword_count (gaiaWFSitemPtr handle); + +/** + Return one of the Keywords supported by a WFS-Item object + + \param handle the pointer to a valid WFS-Item returned by a previous call + to get_wfs_catalog_item(). + \param index the relative index identifying the required Keyword (the first + Keyword associated to a WFS-Item object has index ZERO). + + \return the Keyword value: NULL if the required Keyword isn't defined. + + \sa get_wfs_item_name, get_wfs_item_title, get_wfs_item_abstract, + get_wfs_layer_srid_count, get_wfs_layer_srid, get_wfs_layer_keyword + */ + SPATIALITE_DECLARE const char *get_wfs_keyword (gaiaWFSitemPtr handle, + int index); + +/** + Creates a Schema representing some WFS Layer + + \param path_or_url pointer to some WFS-DescribeFeatureType XML Document (could be a pathname or an URL). + \param err_msg on completion will contain an error message (if any) + + \return the pointer to the corresponding WFS-Schema object: NULL on failure + + \sa destroy_wfs_schema,get_wfs_schema_column_count, get_wfs_schema_column_info, + get_wfs_schema_geometry_info + + \note an eventual error message returned via err_msg requires to be deallocated + by invoking free().\n + you are responsible to destroy (before or after) any WFS-Schema returned by create_wfs_schema(). + */ + SPATIALITE_DECLARE gaiaWFSschemaPtr create_wfs_schema (const char + *path_or_url, + const char + *layer_name, + char **err_msg); + +/** + Destroys a WFS-schema object freeing any allocated resource + + \param handle the pointer to a valid WFS-Catalog returned by a previous call + to create_wfs_schema() + + \sa create_wfs_schema + */ + SPATIALITE_DECLARE void destroy_wfs_schema (gaiaWFSschemaPtr handle); + +/** + Return the infos describing some WFS-GeometryColumn object + + \param handle the pointer to a valid WFS-Schema returned by a previous call + to create_wfs_schema(). + \param name on completion will contain a pointer to the GeometryColumn name + \param type on completion will contain the GeometryType set for the Column; + could be one of GAIA_POINT, GAIA_LINESTRING, GAIA_POLYGON, GAIA_MULTIPOINT, + GAIA_MULTILINESTRING, GAIA_MULTIPOLYGON or GAIA_GEOMETRYCOLLECTION + \param srid on completion will contain the SRID-value set for the GeometryColumn + \param dims on completion will contain the dimensions (2 or 3) set + for the GeometryColumn + \param nullable on completion will contain a Boolean value; if TRUE + the Column may contain NULL-values. + + \return TRUE on success, FALSE if any error is encountered or if + the WFS-Schema hasn't any Geometry-Column defined. + + \sa create_wfs_schema, get_wfs_schema_column_count, get_wfs_schema_column, + get_wfs_schema_column_info + */ + SPATIALITE_DECLARE int get_wfs_schema_geometry_info (gaiaWFSschemaPtr + handle, + const char **name, + int *type, int *srid, + int *dims, + int *nullable); + +/** + Return the total count of items (aka Columns) defined within a WFS-Schema object + + \param handle the pointer to a valid WFS-Schema returned by a previous call + to create_wfs_schema() + + \return the total count of items (aka Columns) defined within a WFS-Schema object: + a negative number if the WFS-Schema isn't valid + + \sa create_wfs_schema, get_wfs_schema_geometry_info, + get_wfs_schema_column, get_wfs_schema_column_info + */ + SPATIALITE_DECLARE int get_wfs_schema_column_count (gaiaWFSschemaPtr + handle); + +/** + Return the pointer to some specific Column defined within a WFS-Schema object + + \param handle the pointer to a valid WFS-Schema returned by a previous call + to create_wfs_schema() + \param index the relative index identifying the required WFS-Column (the first + Item in the WFS-Schema object has index ZERO). + + \return the pointer to the required WFS-Column object: NULL if the passed index + isn't valid + + \sa create_wfs_schema, get_wfs_schema_geometry_info, + get_wfs_schema_column_count, get_wfs_schema_column_info + */ + SPATIALITE_DECLARE gaiaWFScolumnPtr get_wfs_schema_column (gaiaWFSschemaPtr + handle, + int index); + +/** + Return the infos describing some WFS-Column object + + \param handle the pointer to a valid WFS-Column returned by a previous call + to get_wfs_schema_column(). + \param name on completion will contain a pointer to the Column name + \param type on completion will contain the datatype set for the Column; + could be one of SQLITE_TEXT, SQLITE_INTEGER or SQLITE_FLOAT + \param nullable on completion will contain a Boolean value; if TRUE + the Column may contain NULL-values. + + \return TRUE on success, FALSE if any error is encountered + + \sa get_wfs_schema_column, get_wfs_schema_geometry_info + */ + SPATIALITE_DECLARE int get_wfs_schema_column_info (gaiaWFScolumnPtr handle, + const char **name, + int *type, + int *nullable); + +/** + Resets the libxml2 "nano HTTP": useful when changing the HTTP_PROXY settings + + \sa create_wfs_catalog, load_from_wfs, load_from_wfs_paged + */ + SPATIALITE_DECLARE void reset_wfs_http_connection (void); + +#ifdef __cplusplus +} +#endif + +#endif /* _GG_WFS_H */ diff --git a/src/spatialite/src/headers/spatialite/gg_xml.h b/src/spatialite/src/headers/spatialite/gg_xml.h new file mode 100644 index 0000000..7dd3c46 --- /dev/null +++ b/src/spatialite/src/headers/spatialite/gg_xml.h @@ -0,0 +1,760 @@ +/* + gg_xml.h -- Gaia common support for XML documents + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + + +/** + \file gg_xml.h + + Geometry handling functions: XML document + */ + +#ifndef _GG_XML_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _GG_XML_H +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +/* constant values for XmlBLOB */ + +/** XmlBLOB internal marker: START */ +#define GAIA_XML_START 0x00 +/** XmlBLOB internal marker: END */ +#define GAIA_XML_END 0xDD +/** XmlBLOB internal marker: HEADER */ +#define GAIA_XML_HEADER 0xAC +/** XmlBLOB internal marker: LEGACY HEADER */ +#define GAIA_XML_LEGACY_HEADER 0xAB +/** XmlBLOB internal marker: SCHEMA */ +#define GAIA_XML_SCHEMA 0xBA +/** XmlBLOB internal marker: FILEID */ +#define GAIA_XML_FILEID 0xCA +/** XmlBLOB internal marker: PARENTID */ +#define GAIA_XML_PARENTID 0xDA +/** XmlBLOB internal marker: TITLE */ +#define GAIA_XML_NAME 0xDE +/** XmlBLOB internal marker: TITLE */ +#define GAIA_XML_TITLE 0xDB +/** XmlBLOB internal marker: ABSTRACT */ +#define GAIA_XML_ABSTRACT 0xDC +/** XmlBLOB internal marker: GEOMETRY */ +#define GAIA_XML_GEOMETRY 0xDD +/** XmlBLOB internal marker: CRC32 */ +#define GAIA_XML_CRC32 0xBC +/** XmlBLOB internal marker: PAYLOAD */ +#define GAIA_XML_PAYLOAD 0xCB + +/* bitmasks for XmlBLOB-FLAG */ + +/** XmlBLOB FLAG - LITTLE_ENDIAN bitmask */ +#define GAIA_XML_LITTLE_ENDIAN 0x01 +/** XmlBLOB FLAG - COMPRESSED bitmask */ +#define GAIA_XML_COMPRESSED 0x02 +/** XmlBLOB FLAG - VALIDATED bitmask */ +#define GAIA_XML_VALIDATED 0x04 +/** XmlBLOB FLAG - ISO METADATA bitmask */ +#define GAIA_XML_ISO_METADATA 0x80 +/** XmlBLOB FLAG - SLDSE VECTOR STYLE bitmask */ +#define GAIA_XML_SLD_SE_RASTER_STYLE 0x10 +/** XmlBLOB FLAG - SLDSE VECTOR STYLE bitmask */ +#define GAIA_XML_SLD_SE_VECTOR_STYLE 0x40 +/** XmlBLOB FLAG - SLD STYLE bitmask */ +#define GAIA_XML_SLD_STYLE 0x48 +/** XmlBLOB FLAG - SVG bitmask */ +#define GAIA_XML_SVG 0x20 + + +/* function prototypes */ + +#ifndef DOXYGEN_SHOULD_IGNORE_THIS +#ifdef ENABLE_LIBXML2 /* LIBXML2 enabled: supporting XML documents */ +#endif + +/** + return the LIBXML2 version string + + \return a text string identifying the current LIBXML2 version + + \note the version string corresponds to dynamically allocated memory: + so you are responsible to free() it [unless SQLite will take care + of memory cleanup via buffer binding]. + */ + GAIAGEO_DECLARE char *gaia_libxml2_version (void); + +/** + Creates an XmlBLOB buffer + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param xml pointer to the XML document (XmlBLOB payload). + \param xml_len lenght of the XML document (in bytes). + \param compressed if TRUE the returned XmlBLOB will be zip-compressed. + \param schemaURI if not NULL the XML document will be assumed to be valid + only if it succesfully passes a formal Schema valitadion. + \param result on completion will containt a pointer to XmlBLOB: + NULL on failure. + \param size on completion this variable will contain the XmlBLOB's size (in bytes) + \param parsing_errors on completion this variable will contain all error/warning + messages emitted during the XML Parsing step. Can be set to NULL so to ignore any message. + \param schema_validation_errors on completion this variable will contain all error/warning + messages emitted during the XML Schema Validation step. Can be set to NULL so to ignore any message. + + \sa gaiaXmlFromBlob, gaiaXmlTextFromBlob, gaiaXmlBlobGetLastParseError, + gaiaXmlBlobGetLastValidateError + + \note the XmlBLOB buffer corresponds to dynamically allocated memory: + so you are responsible to free() it [unless SQLite will take care + of memory cleanup via buffer binding]. + */ + GAIAGEO_DECLARE void gaiaXmlToBlob (const void *p_cache, + const unsigned char *xml, int xml_len, + int compressed, const char *schemaURI, + unsigned char **result, int *size, + char **parsing_errors, + char **schema_validation_errors); + +/** + Extract an XMLDocument from within an XmlBLOB buffer + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + \param indent if a negative value is passed the XMLDocument will + be extracted exactly as it was when loaded. Otherwise it will be + properly formatted using the required intenting (max. 8); ZERO + means that the whole XML Document will consist of a single line. + + \return the pointer to the newly created XMLDocument buffer: NULL on failure + + \sa gaiaXmlToBlob, gaiaXmlFromBlob + + \note the returned XMLDocument will always be encoded as UTF-8 (irrespectively + from the internal encoding declaration), so to allow any further processing as + SQLite TEXT. + + \note the XMLDocument buffer corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE char *gaiaXmlTextFromBlob (const unsigned char *blob, + int size, int indent); + +/** + Extract an XMLDocument from within an XmlBLOB buffer + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + \param indent if a negative value is passed the XMLDocument will + be extracted exactly as it was when loaded. Otherwise it will be + properly formatted using the required intenting (max. 8); ZERO + means that the whole XML Document will consist of a single line. + \param result pointer to the memory buffer containing the XML Document + \param res_size dimension (in bytes) of the XML Document memory buffer + (both values will be passed back after succesful completion). + + + \sa gaiaXmlToBlob, gaiaXmlTextFromBlob + + \note the returned XMLDocument will always respect the internal encoding declaration, + and may not support any further processing as SQLite TEXT if it's not UTF-8. + + \note the XMLDocument buffer corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE void gaiaXmlFromBlob (const unsigned char *blob, + int size, int indent, + unsigned char **result, + int *res_size); + +/** + Checks if a BLOB actually is a valid XmlBLOB buffer + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return TRUE or FALSE + + \sa gaiaIsCompressedXmlBlob, gaiaIsSchemaValidatedXmlBlob, + gaiaIsIsoMetadataXmlBlob, gaiaIsSldSeVectorStyleXmlBlob, + gaiaIsSldSeRasterStyleXmlBlob, gaiaIsSldStyleXmlBlob, + gaiaIsSvgXmlBlob + */ + GAIAGEO_DECLARE int gaiaIsValidXmlBlob (const unsigned char *blob, + int size); + +/** + Checks if a valid XmlBLOB buffer is compressed or not + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return TRUE or FALSE if the BLOB actually is a valid XmlBLOB; -1 in any other case. + + \sa gaiaIsValidXmlBlob, gaiaIsSchemaValidatedXmlBlob, + gaiaIsIsoMetadataXmlBlob, gaiaIsSldSeVectorStyleXmlBlob, + gaiaIsSldSeRasterStyleXmlBlob, gaiaIsSldStyleXmlBlob, + gaiaIsSvgXmlBlob + */ + GAIAGEO_DECLARE int gaiaIsCompressedXmlBlob (const unsigned char *blob, + int size); + +/** + Checks if a valid XmlBLOB buffer does contain an ISO Metadata or not + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return TRUE or FALSE if the BLOB actually is a valid XmlBLOB; -1 in any other case. + + \sa gaiaIsValidXmlBlob, gaiaIsSchemaValidatedXmlBlob, + gaiaIsCompressedXmlBlob, gaiaIsSldSeVectorStyleXmlBlob, + gaiaIsSldSeRasterStyleXmlBlob, gaiaIsSldStyleXmlBlob, + gaiaIsSvgXmlBlob + */ + GAIAGEO_DECLARE int gaiaIsIsoMetadataXmlBlob (const unsigned char *blob, + int size); + +/** + Checks if a valid XmlBLOB buffer does contain an SLD/SE Style or not + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return TRUE or FALSE if the BLOB actually is a valid XmlBLOB of the + Vector type; -1 in any other case. + + \sa gaiaIsValidXmlBlob, gaiaIsSchemaValidatedXmlBlob, + gaiaIsCompressedXmlBlob, gaiaIsIsoMetadataXmlBlob, + gaiaIsSldSeRasterStyleXmlBlob, gaiaIsSvgXmlBlob + */ + GAIAGEO_DECLARE int gaiaIsSldSeVectorStyleXmlBlob (const unsigned char + *blob, int size); + +/** + Checks if a valid XmlBLOB buffer does contain an SLD/SE Style or not + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return TRUE or FALSE if the BLOB actually is a valid XmlBLOB of the + Raster type; -1 in any other case. + + \sa gaiaIsValidXmlBlob, gaiaIsSchemaValidatedXmlBlob, + gaiaIsCompressedXmlBlob, gaiaIsIsoMetadataXmlBlob, + gaiaIsSldSeVectorStyleXmlBlob, gaiaIsSldStyleXmlBlob, + gaiaIsSvgXmlBlob + */ + GAIAGEO_DECLARE int gaiaIsSldSeRasterStyleXmlBlob (const unsigned char + *blob, int size); + +/** + Checks if a valid XmlBLOB buffer does contain an SLD Style or not + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return TRUE or FALSE if the BLOB actually is a valid XmlBLOB of the + SLD type; -1 in any other case. + + \sa gaiaIsValidXmlBlob, gaiaIsSchemaValidatedXmlBlob, + gaiaIsCompressedXmlBlob, gaiaIsIsoMetadataXmlBlob, + gaiaIsSldSeVectorStyleXmlBlob, gaiaIsSldSeRasterXmlBlob, + gaiaIsSvgXmlBlob + */ + GAIAGEO_DECLARE int gaiaIsSldStyleXmlBlob (const unsigned char + *blob, int size); + +/** + Checks if a valid XmlBLOB buffer does contain an SVG Symbol or not + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return TRUE or FALSE if the BLOB actually is a valid XmlBLOB; -1 in any other case. + + \sa gaiaIsValidXmlBlob, gaiaIsSchemaValidatedXmlBlob, + gaiaIsCompressedXmlBlob, gaiaIsIsoMetadataXmlBlob, + gaiaIsSldSeVectorStyleXmlBlob, gaiaIsSldStyleXmlBlob, + gaiaIsSldSeRasterStyleXmlBlob + */ + GAIAGEO_DECLARE int gaiaIsSvgXmlBlob (const unsigned char *blob, int size); + +/** + Return another XmlBLOB buffer compressed / uncompressed + + \param blob pointer to the input XmlBLOB buffer. + \param in_size input XmlBLOB's size (in bytes). + \param compressed if TRUE the returned XmlBLOB will be zip-compressed. + \param result on completion will containt a pointer to the output XmlBLOB: + NULL on failure. + \param out_size on completion this variable will contain the output XmlBLOB's size (in bytes) + + \sa gaiaXmlToBlob, gaiaIsCompressedXmlBlob + + \note the XmlBLOB buffer corresponds to dynamically allocated memory: + so you are responsible to free() it [unless SQLite will take care + of memory cleanup via buffer binding]. + */ + GAIAGEO_DECLARE void gaiaXmlBlobCompression (const unsigned char *blob, + int in_size, int compressed, + unsigned char **result, + int *out_size); + +/** + Checks if a valid XmlBLOB buffer has succesfully passed a formal Schema validation or not + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return TRUE or FALSE if the BLOB actually is a valid XmlBLOB but not schema-validated; + -1 in any other case. + + \sa gaiaIsValidXmlBlob, gaiaIsSvgXmlBlob, + gaiaIsCompressedXmlBlob, gaiaIsIsoMetadataXmlBlob, + gaiaIsSldSeVectorStyleXmlBlob, gaiaIsSldSeRasterStyleXmlBlob, + gaiaIsSldStyleXmlBlob + */ + GAIAGEO_DECLARE int gaiaIsSchemaValidatedXmlBlob (const unsigned char *blob, + int size); + +/** + Return the XMLDocument size (in bytes) from a valid XmlBLOB buffer + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return the XMLDocument size (in bytes) for any valid XmlBLOB; + -1 if the BLOB isn't a valid XmlBLOB. + */ + GAIAGEO_DECLARE int gaiaXmlBlobGetDocumentSize (const unsigned char *blob, + int size); + +/** + Return the SchemaURI from a valid XmlBLOB buffer + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return the SchemaURI for any valid XmlBLOB containing a SchemaURI; + NULL in any other case. + + \sa gaiaXmlGetInternalSchemaURI + + \note the returned SchemaURI corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE char *gaiaXmlBlobGetSchemaURI (const unsigned char + *blob, int size); + +/** + Return the Internal SchemaURI from a valid XmlDocument + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param xml pointer to the XML document + \param xml_len lenght of the XML document (in bytes). + + \return the SchemaURI eventually defined within a valid XMLDocument; + NULL if the XMLDocument is invalid, or if it doesn't contain any SchemaURI. + + \sa gaiaXmlBlobGetSchemaURI + + \note the returned SchemaURI corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE char *gaiaXmlGetInternalSchemaURI (const void *p_cache, + const unsigned char *xml, + int xml_len); + +/** + Return the FileIdentifier from a valid XmlBLOB buffer + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return the FileIdentifier for any valid XmlBLOB containing a FileIdentifier; + NULL in any other case. + + \sa gaiaIsIsoMetadataXmlBlob, gaiaXmlBlobSetFileId, gaiaXmlBlobAddFileId + + \note the returned FileIdentifier corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE char *gaiaXmlBlobGetFileId (const unsigned char + *blob, int size); + +/** + Return the ParentIdentifier from a valid XmlBLOB buffer + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return the ParentIdentifier for any valid XmlBLOB containing a ParentIdentifier; + NULL in any other case. + + \sa gaiaIsIsoMetadataXmlBlob, gaiaXmlBlobSetParentId, gaiaXmlBlobAddParentId + + \note the returned ParentIdentifier corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE char *gaiaXmlBlobGetParentId (const unsigned char + *blob, int size); + +/** + Return a new XmlBLOB (ISO Metadata) by replacing the FileId value + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param blob pointer to the input XmlBLOB buffer. + \param size input XmlBLOB's size (in bytes). + \param identifier the new FileId value to be set. + \param new_blob on completion will contain a pointer to the output XmlBLOB buffer. + \param new_size on completion will containg the output XmlBlob's size (in bytes). + + \return TRUE for success; FALSE for any failure cause. + + \sa gaiaIsIsoMetadataXmlBlob, gaiaXmlBlobGetFileId, gaiaXmlBlobAddFileId + + \note the output XmlBLOB corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE int gaiaXmlBlobSetFileId (const void *p_cache, + const unsigned char *blob, + int size, const char *identifier, + unsigned char **new_blob, + int *new_size); + +/** + Return a new XmlBLOB (ISO Metadata) by replacing the ParentId value + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param blob pointer to the inputXmlBLOB buffer. + \param size input XmlBLOB's size (in bytes). + \param identifier the new ParentId value to be set. + \param new_blob on completion will contain a pointer to the output XmlBLOB buffer. + \param new_size on completion will containg the output XmlBlob's size (in bytes). + + \return TRUE for success; FALSE for any failure cause. + + \sa gaiaIsIsoMetadataXmlBlob, gaiaXmlBlobGetParentId, gaiaXmlBlobAddParentId + + \note the returned XmlBLOB corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE int gaiaXmlBlobSetParentId (const void *p_cache, + const unsigned char *blob, + int size, + const char *identifier, + unsigned char **new_blob, + int *new_size); + +/** + Return a new XmlBLOB (ISO Metadata) by inserting a FileId value + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param blob pointer to the input XmlBLOB buffer. + \param size input XmlBLOB's size (in bytes). + \param identifier the new FileId value to be inserted. + \param ns_id prefix corresponding to FileIdentifier NameSpace (may be NULL) + \param uri_id URI corresponding to the FileIdentifier NameSpace (may be NULL) + \param ns_charstr prefix corresponding to CharacterString NameSpace (may be NULL) + \param uri_charstr URI corresponding to CharacterString NameSpace (may be NULL) + \param new_blob on completion will contain a pointer to the output XmlBLOB buffer. + \param new_size on completion will containg the output XmlBlob's size (in bytes). + + \return TRUE for success; FALSE for any failure cause. + + \sa gaiaIsIsoMetadataXmlBlob, gaiaXmlBlobGetFileId, gaiaXmlBlobSetFileId + + \note the output XmlBLOB corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE int gaiaXmlBlobAddFileId (const void *p_cache, + const unsigned char *blob, + int size, const char *identifier, + const char *ns_id, + const char *uri_id, + const char *ns_charstr, + const char *uri_charstr, + unsigned char **new_blob, + int *new_size); + +/** + Return a new XmlBLOB (ISO Metadata) by inserting a ParentId value + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param blob pointer to the inputXmlBLOB buffer. + \param size input XmlBLOB's size (in bytes). + \param identifier the new ParentId value to be inserted. + \param ns_id prefix corresponding to FileIdentifier NameSpace (may be NULL) + \param uri_id URI corresponding to the FileIdentifier NameSpace (may be NULL) + \param ns_charstr prefix corresponding to CharacterString NameSpace (may be NULL) + \param uri_charstr URI corresponding to CharacterString NameSpace (may be NULL) + \param new_blob on completion will contain a pointer to the output XmlBLOB buffer. + \param new_size on completion will containg the output XmlBlob's size (in bytes). + + \return TRUE for success; FALSE for any failure cause. + + \sa gaiaIsIsoMetadataXmlBlob, gaiaXmlBlobGetParentId, gaiaXmlBlobSetParentId + + \note the returned XmlBLOB corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE int gaiaXmlBlobAddParentId (const void *p_cache, + const unsigned char *blob, + int size, + const char *identifier, + const char *ns_id, + const char *uri_id, + const char *ns_charstr, + const char *uri_charstr, + unsigned char **new_blob, + int *new_size); + +/** + Return the Name from a valid XmlBLOB buffer + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return the Name for any valid XmlBLOB containing a Name; + NULL in any other case. + + \sa gaiaIsIsoMetadataXmlBlob, gaiaIsSldSeVectorStyleXmlBlob, + gaiaIsSldSeRasterStyleXmlBlob, gaiaIsSldStyleXmlBlob + + \note the returned Name corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE char *gaiaXmlBlobGetName (const unsigned char + *blob, int size); + +/** + Return the Title from a valid XmlBLOB buffer + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return the Title for any valid XmlBLOB containing a Title; + NULL in any other case. + + \sa gaiaIsIsoMetadataXmlBlob, gaiaIsSldSeVectorStyleXmlBlob, + gaiaIsSldSeRasterStyleXmlBlob, gaiaIsSldStyleXmlBlob + + \note the returned Title corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE char *gaiaXmlBlobGetTitle (const unsigned char + *blob, int size); + +/** + Return the Abstract from a valid XmlBLOB buffer + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return the Abstract for any valid XmlBLOB containing an Abstract; + NULL in any other case. + + \sa gaiaIsIsoMetadataXmlBlob, gaiaIsSldSeVectorStyleXmlBlob, + gaiaIsSldSeRasterStyleXmlBlob, gaiaIsSldStyleXmlBlob + + \note the returned Abstract corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE char *gaiaXmlBlobGetAbstract (const unsigned char + *blob, int size); + +/** + Return the Geometry Buffer from a valid XmlBLOB buffer + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + \param blob_geom on completion this variable will contain + a pointer to the returned Geometry Buffer (NULL if no Geometry + was defined within the XmlBLOB) + \param blob_size on completion this variable will contain + the size (in bytes) of the returned Geometry Buffer + + \sa gaiaIsIsoMetadataXmlBlob + + \note the returned Geometry Buffer corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE void gaiaXmlBlobGetGeometry (const unsigned char + *blob, int size, + unsigned char **blob_geom, + int *blob_size); + +/** + Return the Charset Encoding from a valid XmlBLOB buffer + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + + \return the Charset Encoding for any valid XmlBLOB explicitly defining an Encoding; + NULL in any other case. + + \note the returned Encoding corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE char *gaiaXmlBlobGetEncoding (const unsigned char + *blob, int size); + +/** + Return the most recent XML Parse error/warning (if any) + + \param ptr a memory pointer returned by spatialite_alloc_connection() + + \return the most recent XML Parse error/warning message (if any); + NULL in any other case. + + \sa gaiaXmlBlobGetLastValidateError, gaiaIsValidXPathExpression, + gaiaXmlBlobGetLastXPathError + + \note the returned error/warning message corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE char *gaiaXmlBlobGetLastParseError (const void *p_cache); + +/** + Return the most recent XML Validate error/warning (if any) + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + + \return the most recent XML Validate error/warning message (if any); + NULL in any other case. + + \sa gaiaXmlBlobGetLastParseError, gaiaIsValidXPathExpression, + gaiaXmlBlobGetLastXPathError + + \note the returned error/warning message corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE char *gaiaXmlBlobGetLastValidateError (const void *p_cache); + +/** + Checks if a Text string could be a valid XPathExpression + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + \param xpath_expr pointer to the XPathExpression to be checked. + + \return TRUE or FALSE if the Text string actually is a valid XPathExpression; + -1 in any other case. + + \sa gaiaXmlBlobGetLastXPathError + */ + GAIAGEO_DECLARE int gaiaIsValidXPathExpression (const void *p_cache, + const char *xpath_expr); + +/** + Return the most recent XPath error/warning (if any) + + \param p_cache a memory pointer returned by spatialite_alloc_connection() + + \return the most recent XPath error/warning message (if any); + NULL in any other case. + + \sa gaiaXmlBlobGetLastParseError, gaiaXmlBlobGetLastValidateError, + gaiaIsValidXPathExpression + + \note the returned error/warning message corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + */ + GAIAGEO_DECLARE char *gaiaXmlBlobGetLastXPathError (const void *p_cache); + +/** + Load an external XML Document + + \param path_or_url pointer to the external XML Document (could be a pathname or an URL). + \param result on completion will containt a pointer to a BLOB: + NULL on failure. + \param size on completion this variable will contain the BLOB's size (in bytes). + \param parsing_errors on completion this variable will contain all error/warning + messages emitted during the XML Parsing step. Can be set to NULL so to ignore any message. + + \sa gaiaXmlFromBlob, gaiaXmlStore + + \note the BLOB buffer corresponds to dynamically allocated memory: + so you are responsible to free() it [unless SQLite will take care + of memory cleanup via buffer binding]. + */ + GAIAGEO_DECLARE int gaiaXmlLoad (const void *p_cache, + const char *path_or_url, + unsigned char **result, int *size, + char **parsing_errors); + +/** + Stores an external XML Document + + \param blob pointer to the XmlBLOB buffer. + \param size XmlBLOB's size (in bytes). + \param path pathname of the export file + \param indent if a negative value is passed the XMLDocument will + be extracted exactly as it was when loaded. Otherwise it will be + properly formatted using the required intenting (max. 8); ZERO + means that the whole XML Document will consist of a single line. + + \sa gaiaXmlToBlob, gaiaXmlTextFromBlob + + \note the returned XMLDocument will always respect the internal encoding declaration, + and may not support any further processing as SQLite TEXT if it's not UTF-8. + + \note the XMLDocument buffer corresponds to dynamically allocated memory: + so you are responsible to free() it before or after. + + \sa gaiaXmlFromBlob, gaiaXmlLoad + + \note the BLOB buffer corresponds to dynamically allocated memory: + so you are responsible to free() it [unless SQLite will take care + of memory cleanup via buffer binding]. + */ + GAIAGEO_DECLARE int gaiaXmlStore (const unsigned char *blob, int size, + const char *path, int indent); + +#endif /* end LIBXML2: supporting XML documents */ + +#ifdef __cplusplus +} +#endif + +#endif /* _GG_XML_H */ diff --git a/src/spatialite/src/headers/spatialite/spatialite.h b/src/spatialite/src/headers/spatialite/spatialite.h new file mode 100644 index 0000000..963319d --- /dev/null +++ b/src/spatialite/src/headers/spatialite/spatialite.h @@ -0,0 +1,59 @@ +/* + spatialite.h -- Gaia support for SQLite extensions + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include <spatialite_private.h> + +SPATIALITE_PRIVATE int virtualshape_extension_init (void *db); +SPATIALITE_PRIVATE int virtualdbf_extension_init (void *db); +SPATIALITE_PRIVATE int virtualtext_extension_init (void *db); +SPATIALITE_PRIVATE int virtualXL_extension_init (void *db); +SPATIALITE_PRIVATE int virtualnetwork_extension_init (void *db); +SPATIALITE_PRIVATE int virtualfdo_extension_init (void *db); +SPATIALITE_PRIVATE int virtualbbox_extension_init (void *db, + const void *p_cache); +SPATIALITE_PRIVATE int mbrcache_extension_init (void *db); +SPATIALITE_PRIVATE int virtual_spatialindex_extension_init (void *db); +SPATIALITE_PRIVATE int virtual_xpath_extension_init (void *db, + const void *p_cache); +SPATIALITE_PRIVATE int virtualgpkg_extension_init (void *db); diff --git a/src/spatialite/src/headers/spatialite/sqlite.h b/src/spatialite/src/headers/spatialite/sqlite.h new file mode 100644 index 0000000..8301f4a --- /dev/null +++ b/src/spatialite/src/headers/spatialite/sqlite.h @@ -0,0 +1,65 @@ +/* + sqlite.h -- supporting SQLite headers in a flexible way + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Pepijn Van Eeckhoudt <pepijnvaneeckhoudt@luciad.com> + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#ifndef _SPATIALITE_SQLITE_H +#define _SPATIALITE_SQLITE_H + +#ifdef LOADABLE_EXTENSION /* loadable-extension only */ +#ifdef SPL_AMALGAMATION /* spatialite-amalgamation */ +#include <spatialite/sqlite3ext.h> +#else +#include <sqlite3ext.h> +#endif +/* We can't use SQLITE_EXTENSION_INIT1 as this is an intializer in recent version of sqlite */ +extern const sqlite3_api_routines *sqlite3_api; +#else /* ordinary lib */ +#ifdef SPL_AMALGAMATION /* spatialite-amalgamation */ +#include <spatialite/sqlite3.h> +#else +#include <sqlite3.h> +#endif +#endif + +#endif diff --git a/src/spatialite/src/headers/spatialite_private.h b/src/spatialite/src/headers/spatialite_private.h new file mode 100644 index 0000000..4be4aaa --- /dev/null +++ b/src/spatialite/src/headers/spatialite_private.h @@ -0,0 +1,402 @@ +/* + spatialite.h -- Gaia spatial support for SQLite + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include <time.h> +#include <stdarg.h> + +#include <zlib.h> + +/** + \file spatialite_private.h + + SpatiaLite private header file + */ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#ifdef _WIN32 +#ifdef DLL_EXPORT +#define SPATIALITE_PRIVATE +#else +#define SPATIALITE_PRIVATE +#endif +#else +#define SPATIALITE_PRIVATE __attribute__ ((visibility("hidden"))) +#endif +#endif + +#ifndef _SPATIALITE_PRIVATE_H +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#define _SPATIALITE_PRIVATE_H +#endif + +#ifdef __cplusplus +extern "C" +{ +#endif + +/** spatial_ref_sys_init2: will create the "spatial_ref_sys" table + and will populate this table with any supported EPSG SRID definition */ +#define GAIA_EPSG_ANY -9999 +/** spatial_ref_sys_init2: will create the "spatial_ref_sys" table + and will populate this table only inserting WGS84-related definitions */ +#define GAIA_EPSG_WGS84_ONLY -9998 +/** spatial_ref_sys_init2: will create the "spatial_ref_sys" table + but will avoid to insert any row at all */ +#define GAIA_EPSG_NONE -9997 + +#define SPATIALITE_STATISTICS_GENUINE 1 +#define SPATIALITE_STATISTICS_VIEWS 2 +#define SPATIALITE_STATISTICS_VIRTS 3 +#define SPATIALITE_STATISTICS_LEGACY 4 + +#define SPATIALITE_CACHE_MAGIC1 0xf8 +#define SPATIALITE_CACHE_MAGIC2 0x8f + + struct vxpath_ns + { +/* a Namespace definition */ + char *Prefix; + char *Href; + struct vxpath_ns *Next; + }; + + struct vxpath_namespaces + { +/* Namespace container */ + struct vxpath_ns *First; + struct vxpath_ns *Last; + }; + + struct splite_geos_cache_item + { + unsigned char gaiaBlob[64]; + int gaiaBlobSize; + uLong crc32; + void *geosGeom; + void *preparedGeosGeom; + }; + + struct splite_xmlSchema_cache_item + { + time_t timestamp; + char *schemaURI; + void *schemaDoc; + void *parserCtxt; + void *schema; + }; + +#define MAX_XMLSCHEMA_CACHE 16 + + struct splite_internal_cache + { + unsigned char magic1; + void *GEOS_handle; + void *PROJ_handle; + void *xmlParsingErrors; + void *xmlSchemaValidationErrors; + void *xmlXPathErrors; + struct splite_geos_cache_item cacheItem1; + struct splite_geos_cache_item cacheItem2; + struct splite_xmlSchema_cache_item xmlSchemaCache[MAX_XMLSCHEMA_CACHE]; + int pool_index; + void (*geos_warning) (const char *fmt, ...); + void (*geos_error) (const char *fmt, ...); + unsigned char magic2; + }; + + struct epsg_defs + { + int srid; + char *auth_name; + int auth_srid; + char *ref_sys_name; + char *proj4text; + char *srs_wkt; + struct epsg_defs *next; + }; + + SPATIALITE_PRIVATE void + free_internal_cache (struct splite_internal_cache *cache); + + SPATIALITE_PRIVATE struct epsg_defs *add_epsg_def (int filter_srid, + struct epsg_defs **first, + struct epsg_defs **last, + int srid, + const char *auth_name, + int auth_srid, + const char + *ref_sys_name); + + SPATIALITE_PRIVATE void + add_proj4text (struct epsg_defs *p, int count, const char *text); + + SPATIALITE_PRIVATE void + add_srs_wkt (struct epsg_defs *p, int count, const char *text); + + SPATIALITE_PRIVATE void + initialize_epsg (int filter, struct epsg_defs **first, + struct epsg_defs **last); + + SPATIALITE_PRIVATE void free_epsg (struct epsg_defs *first); + + SPATIALITE_PRIVATE int checkSpatialMetaData (const void *sqlite); + + SPATIALITE_PRIVATE int delaunay_triangle_check (void *pg); + + SPATIALITE_PRIVATE void *voronoj_build (int pgs, void *first, + double extra_frame_size); + + SPATIALITE_PRIVATE void *voronoj_build_r (const void *p_cache, int pgs, + void *first, + double extra_frame_size); + + SPATIALITE_PRIVATE void *voronoj_export (void *voronoj, void *result, + int only_edges); + + SPATIALITE_PRIVATE void *voronoj_export_r (const void *p_cache, + void *voronoj, void *result, + int only_edges); + + SPATIALITE_PRIVATE void voronoj_free (void *voronoj); + + SPATIALITE_PRIVATE void *concave_hull_build (void *first, + int dimension_model, + double factor, + int allow_holes); + + SPATIALITE_PRIVATE void *concave_hull_build_r (const void *p_cache, + void *first, + int dimension_model, + double factor, + int allow_holes); + + SPATIALITE_PRIVATE int createAdvancedMetaData (void *sqlite); + + SPATIALITE_PRIVATE void updateSpatiaLiteHistory (void *sqlite, + const char *table, + const char *geom, + const char *operation); + + SPATIALITE_PRIVATE int createGeometryColumns (void *p_sqlite); + + SPATIALITE_PRIVATE int check_layer_statistics (void *p_sqlite); + + SPATIALITE_PRIVATE int check_views_layer_statistics (void *p_sqlite); + + SPATIALITE_PRIVATE int check_virts_layer_statistics (void *p_sqlite); + + SPATIALITE_PRIVATE void + updateGeometryTriggers (void *p_sqlite, const char *table, + const char *column); + + SPATIALITE_PRIVATE int + getRealSQLnames (void *p_sqlite, const char *table, const char *column, + char **real_table, char **real_column); + + SPATIALITE_PRIVATE void buildSpatialIndex (void *p_sqlite, const unsigned char *table, const char *column); /* DEPRECATED - always use buildSpatialIndexEx */ + + SPATIALITE_PRIVATE int + buildSpatialIndexEx (void *p_sqlite, const unsigned char *table, + const char *column); + + SPATIALITE_PRIVATE int validateRowid (void *p_sqlite, const char *table); + + SPATIALITE_PRIVATE int + doComputeFieldInfos (void *p_sqlite, const char *table, + const char *column, int stat_type, void *p_lyr); + + SPATIALITE_PRIVATE void + getProjParams (void *p_sqlite, int srid, char **params); + + SPATIALITE_PRIVATE int + getEllipsoidParams (void *p_sqlite, int srid, double *a, double *b, + double *rf); + + SPATIALITE_PRIVATE void addVectorLayer (void *list, const char *layer_type, + const char *table_name, + const char *geometry_column, + int geometry_type, int srid, + int spatial_index); + + SPATIALITE_PRIVATE void addVectorLayerExtent (void *list, + const char *table_name, + const char *geometry_column, + int count, double min_x, + double min_y, double max_x, + double max_y); + + SPATIALITE_PRIVATE void addLayerAttributeField (void *list, + const char *table_name, + const char *geometry_column, + int ordinal, + const char *column_name, + int null_values, + int integer_values, + int double_values, + int text_values, + int blob_values, + int null_max_size, + int max_size, + int null_int_range, + void *integer_min, + void *integer_max, + int null_double_range, + double double_min, + double double_max); + + SPATIALITE_PRIVATE int createStylingTables (void *p_sqlite, int relaxed); + + SPATIALITE_PRIVATE int register_external_graphic (void *p_sqlite, + const char *xlink_href, + const unsigned char + *p_blob, int n_bytes, + const char *title, + const char *abstract, + const char *file_name); + + SPATIALITE_PRIVATE int register_vector_styled_layer (void *p_sqlite, + const char + *f_table_name, + const char + *f_geometry_column, + int style_id, + const unsigned char + *p_blob, int n_bytes); + + SPATIALITE_PRIVATE int register_raster_styled_layer (void *p_sqlite, + const char + *coverage_name, + int style_id, + const unsigned char + *p_blob, int n_bytes); + + SPATIALITE_PRIVATE int register_styled_group (void *p_sqlite, + const char *group_name, + const char *f_table_name, + const char *f_geometry_column, + const char *coverage_name, + int paint_order); + + SPATIALITE_PRIVATE int styled_group_set_infos (void *p_sqlite, + const char *group_name, + const char *title, + const char *abstract); + + SPATIALITE_PRIVATE int register_group_style (void *p_sqlite, + const char *group_name, + int style_id, + const unsigned char + *p_blob, int n_bytes); + + SPATIALITE_PRIVATE int createIsoMetadataTables (void *p_sqlite, + int relaxed); + + SPATIALITE_PRIVATE int get_iso_metadata_id (void *p_sqlite, + const char *fileIdentifier, + void *p_id); + + SPATIALITE_PRIVATE int register_iso_metadata (void *p_sqlite, + const char *scope, + const unsigned char *p_blob, + int n_bytes, void *p_id, + const char *fileIdentifier); + + SPATIALITE_PRIVATE int createRasterCoveragesTable (void *p_sqlite); + + SPATIALITE_PRIVATE int checkPopulatedCoverage (void *p_sqlite, + const char *coverage_name); + + SPATIALITE_PRIVATE const char *splite_lwgeom_version (void); + + SPATIALITE_PRIVATE void splite_lwgeom_init (void); + + SPATIALITE_PRIVATE void splite_free_geos_cache_item (struct + splite_geos_cache_item + *p); + + SPATIALITE_PRIVATE void splite_free_geos_cache_item_r (const void *p_cache, + struct + splite_geos_cache_item + *p); + + SPATIALITE_PRIVATE void splite_free_xml_schema_cache_item (struct + splite_xmlSchema_cache_item + *p); + + SPATIALITE_PRIVATE void + vxpath_free_namespaces (struct vxpath_namespaces *ns_list); + + SPATIALITE_PRIVATE struct vxpath_namespaces *vxpath_get_namespaces (void + *p_xml_doc); + + SPATIALITE_PRIVATE int vxpath_eval_expr (const void *p_cache, void *xml_doc, + const char *xpath_expr, + void *p_xpathCtx, + void *p_xpathObj); + + SPATIALITE_PRIVATE void *register_spatialite_sql_functions (void *db, + const void + *cache); + + SPATIALITE_PRIVATE void init_spatialite_virtualtables (void *p_db, + const void *p_cache); + + SPATIALITE_PRIVATE void spatialite_splash_screen (int verbose); + + SPATIALITE_PRIVATE void geos_error (const char *fmt, ...); + + SPATIALITE_PRIVATE void geos_warning (const char *fmt, ...); + + SPATIALITE_PRIVATE void splite_cache_semaphore_lock (void); + + SPATIALITE_PRIVATE void splite_cache_semaphore_unlock (void); + + SPATIALITE_PRIVATE void splite_lwgeom_semaphore_lock (void); + + SPATIALITE_PRIVATE void splite_lwgeom_semaphore_unlock (void); + +#ifdef __cplusplus +} +#endif + +#endif /* _SPATIALITE_PRIVATE_H */ diff --git a/src/spatialite/src/md5/Makefile.am b/src/spatialite/src/md5/Makefile.am new file mode 100644 index 0000000..98e9e0f --- /dev/null +++ b/src/spatialite/src/md5/Makefile.am @@ -0,0 +1,18 @@ + +AM_CPPFLAGS = @CFLAGS@ +AM_CPPFLAGS += -I$(top_srcdir)/src/headers -I. + +noinst_HEADERS = md5.h +noinst_LTLIBRARIES = libmd5.la md5.la + +libmd5_la_SOURCES = md5.c gaia_md5.c + +md5_la_SOURCES = md5.c gaia_md5.c + +md5_la_CPPFLAGS = @CFLAGS@ +md5_la_CPPFLAGS += -I$(top_srcdir)/src/headers -I. +md5_la_CPPFLAGS += -DLOADABLE_EXTENSION +md5_la_LDFLAGS = -module +md5_la_LIBTOOLFLAGS = --tag=disable-static + +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda diff --git a/src/spatialite/src/md5/Makefile.in b/src/spatialite/src/md5/Makefile.in new file mode 100644 index 0000000..5155c36 --- /dev/null +++ b/src/spatialite/src/md5/Makefile.in @@ -0,0 +1,622 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/md5 +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(noinst_HEADERS) +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libmd5_la_LIBADD = +am_libmd5_la_OBJECTS = md5.lo gaia_md5.lo +libmd5_la_OBJECTS = $(am_libmd5_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +md5_la_LIBADD = +am_md5_la_OBJECTS = md5_la-md5.lo md5_la-gaia_md5.lo +md5_la_OBJECTS = $(am_md5_la_OBJECTS) +md5_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(md5_la_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(md5_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libmd5_la_SOURCES) $(md5_la_SOURCES) +DIST_SOURCES = $(libmd5_la_SOURCES) $(md5_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +HEADERS = $(noinst_HEADERS) +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers -I. +noinst_HEADERS = md5.h +noinst_LTLIBRARIES = libmd5.la md5.la +libmd5_la_SOURCES = md5.c gaia_md5.c +md5_la_SOURCES = md5.c gaia_md5.c +md5_la_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers -I. \ + -DLOADABLE_EXTENSION +md5_la_LDFLAGS = -module +md5_la_LIBTOOLFLAGS = --tag=disable-static +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/md5/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/md5/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libmd5.la: $(libmd5_la_OBJECTS) $(libmd5_la_DEPENDENCIES) $(EXTRA_libmd5_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libmd5_la_OBJECTS) $(libmd5_la_LIBADD) $(LIBS) + +md5.la: $(md5_la_OBJECTS) $(md5_la_DEPENDENCIES) $(EXTRA_md5_la_DEPENDENCIES) + $(AM_V_CCLD)$(md5_la_LINK) $(md5_la_OBJECTS) $(md5_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gaia_md5.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5_la-gaia_md5.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/md5_la-md5.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +md5_la-md5.lo: md5.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(md5_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(md5_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT md5_la-md5.lo -MD -MP -MF $(DEPDIR)/md5_la-md5.Tpo -c -o md5_la-md5.lo `test -f 'md5.c' || echo '$(srcdir)/'`md5.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/md5_la-md5.Tpo $(DEPDIR)/md5_la-md5.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='md5.c' object='md5_la-md5.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(md5_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(md5_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o md5_la-md5.lo `test -f 'md5.c' || echo '$(srcdir)/'`md5.c + +md5_la-gaia_md5.lo: gaia_md5.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(md5_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(md5_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT md5_la-gaia_md5.lo -MD -MP -MF $(DEPDIR)/md5_la-gaia_md5.Tpo -c -o md5_la-gaia_md5.lo `test -f 'gaia_md5.c' || echo '$(srcdir)/'`gaia_md5.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/md5_la-gaia_md5.Tpo $(DEPDIR)/md5_la-gaia_md5.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='gaia_md5.c' object='md5_la-gaia_md5.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(md5_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(md5_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o md5_la-gaia_md5.lo `test -f 'gaia_md5.c' || echo '$(srcdir)/'`gaia_md5.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) $(HEADERS) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/md5/gaia_md5.c b/src/spatialite/src/md5/gaia_md5.c new file mode 100644 index 0000000..11c6f17 --- /dev/null +++ b/src/spatialite/src/md5/gaia_md5.c @@ -0,0 +1,116 @@ +/* + + gaia_md5.c -- a thin wrapper built around the original MD5 + implementation from Alexander Peslyak + (released on the Public Domain) + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include <spatialite/sqlite.h> +#include <spatialite/gaiaaux.h> + +#include "md5.h" + +GAIAAUX_DECLARE void * +gaiaCreateMD5Checksum (void) +{ +/* Creates and initializes an MD5 checksum object */ + MD5_CTX *md5 = malloc (sizeof (MD5_CTX)); + splite_MD5_Init (md5); + return md5; +} + +GAIAAUX_DECLARE void +gaiaFreeMD5Checksum (void *p_md5) +{ +/* memory cleanup - destroying an MD5 checksum object */ + unsigned char result[32]; + MD5_CTX *md5 = (MD5_CTX *) p_md5; + if (md5 == NULL) + return; + splite_MD5_Final (result, md5); + free (md5); +} + +GAIAAUX_DECLARE void +gaiaUpdateMD5Checksum (void *p_md5, const unsigned char *blob, int blob_len) +{ +/* progressively updating the MD5 checksum */ + MD5_CTX *md5 = (MD5_CTX *) p_md5; + if (md5 == NULL || blob == NULL) + return; + splite_MD5_Update (md5, (void *)blob, blob_len); +} + +GAIAAUX_DECLARE char * +gaiaFinalizeMD5Checksum (void *p_md5) +{ +/* return the current MD5 checksum and resets the MD5 object */ + int i; + char *hex; + char hex_byte[8]; + unsigned char result[32]; + MD5_CTX *md5 = (MD5_CTX *) p_md5; + if (md5 == NULL) + return NULL; + splite_MD5_Final (result, md5); + splite_MD5_Init (md5); +/* formatting the MD5 checksum as hex-text */ + hex = malloc (33); + *hex = '\0'; + for (i = 0; i < 16; i++) + { + sprintf (hex_byte, "%02x", result[i]); + strcat (hex, hex_byte); + } + return hex; +} diff --git a/src/spatialite/src/md5/md5.c b/src/spatialite/src/md5/md5.c new file mode 100644 index 0000000..656c145 --- /dev/null +++ b/src/spatialite/src/md5/md5.c @@ -0,0 +1,302 @@ +/* + * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc. + * MD5 Message-Digest Algorithm (RFC 1321). + * + * Homepage: + * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5 + * + * Author: + * Alexander Peslyak, better known as Solar Designer <solar at openwall.com> + * + * This software was written by Alexander Peslyak in 2001. No copyright is + * claimed, and the software is hereby placed in the public domain. + * In case this attempt to disclaim copyright and place the software in the + * public domain is deemed null and void, then the software is + * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the + * general public under the following terms: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted. + * + * There's ABSOLUTELY NO WARRANTY, express or implied. + * + * (This is a heavily cut-down "BSD license".) + * + * This differs from Colin Plumb's older public domain implementation in that + * no exactly 32-bit integer data type is required (any 32-bit or wider + * unsigned integer data type will do), there's no compile-time endianness + * configuration, and the function prototypes match OpenSSL's. No code from + * Colin Plumb's implementation has been reused; this comment merely compares + * the properties of the two independent implementations. + * + * The primary goals of this implementation are portability and ease of use. + * It is meant to be fast, but not as fast as possible. Some known + * optimizations are not included to reduce source code size and avoid + * compile-time configuration. + */ + +#ifndef HAVE_OPENSSL + +#include <string.h> + +#include "md5.h" + +/* + * The basic MD5 functions. + * + * F and G are optimized compared to their RFC 1321 definitions for + * architectures that lack an AND-NOT instruction, just like in Colin Plumb's + * implementation. + */ +#define F(x, y, z) ((z) ^ ((x) & ((y) ^ (z)))) +#define G(x, y, z) ((y) ^ ((z) & ((x) ^ (y)))) +#define H(x, y, z) ((x) ^ (y) ^ (z)) +#define I(x, y, z) ((y) ^ ((x) | ~(z))) + +/* + * The MD5 transformation for all four rounds. + */ +#define STEP(f, a, b, c, d, x, t, s) \ + (a) += f((b), (c), (d)) + (x) + (t); \ + (a) = (((a) << (s)) | (((a) & 0xffffffff) >> (32 - (s)))); \ + (a) += (b); + +/* + * SET reads 4 input bytes in little-endian byte order and stores them + * in a properly aligned word in host byte order. + * + * The check for little-endian architectures that tolerate unaligned + * memory accesses is just an optimization. Nothing will break if it + * doesn't work. + */ +#if defined(__i386__) || defined(__x86_64__) || defined(__vax__) +#define SET(n) \ + (*(MD5_u32plus *)&ptr[(n) * 4]) +#define GET(n) \ + SET(n) +#else +#define SET(n) \ + (ctx->block[(n)] = \ + (MD5_u32plus)ptr[(n) * 4] | \ + ((MD5_u32plus)ptr[(n) * 4 + 1] << 8) | \ + ((MD5_u32plus)ptr[(n) * 4 + 2] << 16) | \ + ((MD5_u32plus)ptr[(n) * 4 + 3] << 24)) +#define GET(n) \ + (ctx->block[(n)]) +#endif + +/* + * This processes one or more 64-byte data blocks, but does NOT update + * the bit counters. There are no alignment requirements. + */ +static void *body(MD5_CTX *ctx, void *data, unsigned long size) +{ + unsigned char *ptr; + MD5_u32plus a, b, c, d; + MD5_u32plus saved_a, saved_b, saved_c, saved_d; + + ptr = data; + + a = ctx->a; + b = ctx->b; + c = ctx->c; + d = ctx->d; + + do { + saved_a = a; + saved_b = b; + saved_c = c; + saved_d = d; + +/* Round 1 */ + STEP(F, a, b, c, d, SET(0), 0xd76aa478, 7) + STEP(F, d, a, b, c, SET(1), 0xe8c7b756, 12) + STEP(F, c, d, a, b, SET(2), 0x242070db, 17) + STEP(F, b, c, d, a, SET(3), 0xc1bdceee, 22) + STEP(F, a, b, c, d, SET(4), 0xf57c0faf, 7) + STEP(F, d, a, b, c, SET(5), 0x4787c62a, 12) + STEP(F, c, d, a, b, SET(6), 0xa8304613, 17) + STEP(F, b, c, d, a, SET(7), 0xfd469501, 22) + STEP(F, a, b, c, d, SET(8), 0x698098d8, 7) + STEP(F, d, a, b, c, SET(9), 0x8b44f7af, 12) + STEP(F, c, d, a, b, SET(10), 0xffff5bb1, 17) + STEP(F, b, c, d, a, SET(11), 0x895cd7be, 22) + STEP(F, a, b, c, d, SET(12), 0x6b901122, 7) + STEP(F, d, a, b, c, SET(13), 0xfd987193, 12) + STEP(F, c, d, a, b, SET(14), 0xa679438e, 17) + STEP(F, b, c, d, a, SET(15), 0x49b40821, 22) + +/* Round 2 */ + STEP(G, a, b, c, d, GET(1), 0xf61e2562, 5) + STEP(G, d, a, b, c, GET(6), 0xc040b340, 9) + STEP(G, c, d, a, b, GET(11), 0x265e5a51, 14) + STEP(G, b, c, d, a, GET(0), 0xe9b6c7aa, 20) + STEP(G, a, b, c, d, GET(5), 0xd62f105d, 5) + STEP(G, d, a, b, c, GET(10), 0x02441453, 9) + STEP(G, c, d, a, b, GET(15), 0xd8a1e681, 14) + STEP(G, b, c, d, a, GET(4), 0xe7d3fbc8, 20) + STEP(G, a, b, c, d, GET(9), 0x21e1cde6, 5) + STEP(G, d, a, b, c, GET(14), 0xc33707d6, 9) + STEP(G, c, d, a, b, GET(3), 0xf4d50d87, 14) + STEP(G, b, c, d, a, GET(8), 0x455a14ed, 20) + STEP(G, a, b, c, d, GET(13), 0xa9e3e905, 5) + STEP(G, d, a, b, c, GET(2), 0xfcefa3f8, 9) + STEP(G, c, d, a, b, GET(7), 0x676f02d9, 14) + STEP(G, b, c, d, a, GET(12), 0x8d2a4c8a, 20) + +/* Round 3 */ + STEP(H, a, b, c, d, GET(5), 0xfffa3942, 4) + STEP(H, d, a, b, c, GET(8), 0x8771f681, 11) + STEP(H, c, d, a, b, GET(11), 0x6d9d6122, 16) + STEP(H, b, c, d, a, GET(14), 0xfde5380c, 23) + STEP(H, a, b, c, d, GET(1), 0xa4beea44, 4) + STEP(H, d, a, b, c, GET(4), 0x4bdecfa9, 11) + STEP(H, c, d, a, b, GET(7), 0xf6bb4b60, 16) + STEP(H, b, c, d, a, GET(10), 0xbebfbc70, 23) + STEP(H, a, b, c, d, GET(13), 0x289b7ec6, 4) + STEP(H, d, a, b, c, GET(0), 0xeaa127fa, 11) + STEP(H, c, d, a, b, GET(3), 0xd4ef3085, 16) + STEP(H, b, c, d, a, GET(6), 0x04881d05, 23) + STEP(H, a, b, c, d, GET(9), 0xd9d4d039, 4) + STEP(H, d, a, b, c, GET(12), 0xe6db99e5, 11) + STEP(H, c, d, a, b, GET(15), 0x1fa27cf8, 16) + STEP(H, b, c, d, a, GET(2), 0xc4ac5665, 23) + +/* Round 4 */ + STEP(I, a, b, c, d, GET(0), 0xf4292244, 6) + STEP(I, d, a, b, c, GET(7), 0x432aff97, 10) + STEP(I, c, d, a, b, GET(14), 0xab9423a7, 15) + STEP(I, b, c, d, a, GET(5), 0xfc93a039, 21) + STEP(I, a, b, c, d, GET(12), 0x655b59c3, 6) + STEP(I, d, a, b, c, GET(3), 0x8f0ccc92, 10) + STEP(I, c, d, a, b, GET(10), 0xffeff47d, 15) + STEP(I, b, c, d, a, GET(1), 0x85845dd1, 21) + STEP(I, a, b, c, d, GET(8), 0x6fa87e4f, 6) + STEP(I, d, a, b, c, GET(15), 0xfe2ce6e0, 10) + STEP(I, c, d, a, b, GET(6), 0xa3014314, 15) + STEP(I, b, c, d, a, GET(13), 0x4e0811a1, 21) + STEP(I, a, b, c, d, GET(4), 0xf7537e82, 6) + STEP(I, d, a, b, c, GET(11), 0xbd3af235, 10) + STEP(I, c, d, a, b, GET(2), 0x2ad7d2bb, 15) + STEP(I, b, c, d, a, GET(9), 0xeb86d391, 21) + + a += saved_a; + b += saved_b; + c += saved_c; + d += saved_d; + + ptr += 64; + } while (size -= 64); + + ctx->a = a; + ctx->b = b; + ctx->c = c; + ctx->d = d; + + return ptr; +} + +/* + Sandro Furieri - SpatiaLite - 2013-06-03 + + simply re-declaring all these functions as PRIVATE + (not externally visible outside libspatialite itself) +*/ + +MD5_PRIVATE void splite_MD5_Init(MD5_CTX *ctx) +{ + ctx->a = 0x67452301; + ctx->b = 0xefcdab89; + ctx->c = 0x98badcfe; + ctx->d = 0x10325476; + + ctx->lo = 0; + ctx->hi = 0; +} + +MD5_PRIVATE void splite_MD5_Update(MD5_CTX *ctx, void *data, unsigned long size) +{ + MD5_u32plus saved_lo; + unsigned long used, free; + + saved_lo = ctx->lo; + if ((ctx->lo = (saved_lo + size) & 0x1fffffff) < saved_lo) + ctx->hi++; + ctx->hi += size >> 29; + + used = saved_lo & 0x3f; + + if (used) { + free = 64 - used; + + if (size < free) { + memcpy(&ctx->buffer[used], data, size); + return; + } + + memcpy(&ctx->buffer[used], data, free); + data = (unsigned char *)data + free; + size -= free; + body(ctx, ctx->buffer, 64); + } + + if (size >= 64) { + data = body(ctx, data, size & ~(unsigned long)0x3f); + size &= 0x3f; + } + + memcpy(ctx->buffer, data, size); +} + +MD5_PRIVATE void splite_MD5_Final(unsigned char *result, MD5_CTX *ctx) +{ + unsigned long used, free; + + used = ctx->lo & 0x3f; + + ctx->buffer[used++] = 0x80; + + free = 64 - used; + + if (free < 8) { + memset(&ctx->buffer[used], 0, free); + body(ctx, ctx->buffer, 64); + used = 0; + free = 64; + } + + memset(&ctx->buffer[used], 0, free - 8); + + ctx->lo <<= 3; + ctx->buffer[56] = ctx->lo; + ctx->buffer[57] = ctx->lo >> 8; + ctx->buffer[58] = ctx->lo >> 16; + ctx->buffer[59] = ctx->lo >> 24; + ctx->buffer[60] = ctx->hi; + ctx->buffer[61] = ctx->hi >> 8; + ctx->buffer[62] = ctx->hi >> 16; + ctx->buffer[63] = ctx->hi >> 24; + + body(ctx, ctx->buffer, 64); + + result[0] = ctx->a; + result[1] = ctx->a >> 8; + result[2] = ctx->a >> 16; + result[3] = ctx->a >> 24; + result[4] = ctx->b; + result[5] = ctx->b >> 8; + result[6] = ctx->b >> 16; + result[7] = ctx->b >> 24; + result[8] = ctx->c; + result[9] = ctx->c >> 8; + result[10] = ctx->c >> 16; + result[11] = ctx->c >> 24; + result[12] = ctx->d; + result[13] = ctx->d >> 8; + result[14] = ctx->d >> 16; + result[15] = ctx->d >> 24; + + memset(ctx, 0, sizeof(*ctx)); +} + +#endif diff --git a/src/spatialite/src/md5/md5.h b/src/spatialite/src/md5/md5.h new file mode 100644 index 0000000..de322a9 --- /dev/null +++ b/src/spatialite/src/md5/md5.h @@ -0,0 +1,64 @@ +/* + * This is an OpenSSL-compatible implementation of the RSA Data Security, Inc. + * MD5 Message-Digest Algorithm (RFC 1321). + * + * Homepage: + * http://openwall.info/wiki/people/solar/software/public-domain-source-code/md5 + * + * Author: + * Alexander Peslyak, better known as Solar Designer <solar at openwall.com> + * + * This software was written by Alexander Peslyak in 2001. No copyright is + * claimed, and the software is hereby placed in the public domain. + * In case this attempt to disclaim copyright and place the software in the + * public domain is deemed null and void, then the software is + * Copyright (c) 2001 Alexander Peslyak and it is hereby released to the + * general public under the following terms: + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted. + * + * There's ABSOLUTELY NO WARRANTY, express or implied. + * + * See md5.c for more information. + */ + +#ifdef HAVE_OPENSSL +#include <openssl/md5.h> +#elif !defined(_MD5_H) +#define _MD5_H + +/* + + SpatiaLite private MD5 declarations + + Sandro Furieri - 2013-06-03 +*/ +#ifndef DOXYGEN_SHOULD_SKIP_THIS +#ifdef _WIN32 +#ifdef DLL_EXPORT +#define MD5_PRIVATE +#else +#define MD5_PRIVATE +#endif +#else +#define MD5_PRIVATE __attribute__ ((visibility("hidden"))) +#endif +#endif +/* end Sandro Furieri - SpatiaLite - 2013-06-03 */ + +/* Any 32-bit or wider unsigned integer data type will do */ +typedef unsigned int MD5_u32plus; + +typedef struct { + MD5_u32plus lo, hi; + MD5_u32plus a, b, c, d; + unsigned char buffer[64]; + MD5_u32plus block[16]; +} MD5_CTX; + +MD5_PRIVATE void splite_MD5_Init(MD5_CTX *ctx); +MD5_PRIVATE void splite_MD5_Update(MD5_CTX *ctx, void *data, unsigned long size); +MD5_PRIVATE void splite_MD5_Final(unsigned char *result, MD5_CTX *ctx); + +#endif diff --git a/src/spatialite/src/shapefiles/Makefile.am b/src/spatialite/src/shapefiles/Makefile.am new file mode 100644 index 0000000..3c2f96a --- /dev/null +++ b/src/spatialite/src/shapefiles/Makefile.am @@ -0,0 +1,17 @@ + +AM_CPPFLAGS = @CFLAGS@ +AM_CPPFLAGS += -I$(top_srcdir)/src/headers + +noinst_LTLIBRARIES = libshapefiles.la shapefiles.la + +libshapefiles_la_SOURCES = shapefiles.c validator.c + +shapefiles_la_SOURCES = shapefiles.c validator.c + +shapefiles_la_CPPFLAGS = @CFLAGS@ +shapefiles_la_CPPFLAGS += -I$(top_srcdir)/src/headers -I. +shapefiles_la_CPPFLAGS += -DLOADABLE_EXTENSION +shapefiles_la_LDFLAGS = -module +shapefiles_la_LIBTOOLFLAGS = --tag=disable-static + +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda diff --git a/src/spatialite/src/shapefiles/Makefile.in b/src/spatialite/src/shapefiles/Makefile.in new file mode 100644 index 0000000..7e29bb1 --- /dev/null +++ b/src/spatialite/src/shapefiles/Makefile.in @@ -0,0 +1,621 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/shapefiles +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libshapefiles_la_LIBADD = +am_libshapefiles_la_OBJECTS = shapefiles.lo validator.lo +libshapefiles_la_OBJECTS = $(am_libshapefiles_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +shapefiles_la_LIBADD = +am_shapefiles_la_OBJECTS = shapefiles_la-shapefiles.lo \ + shapefiles_la-validator.lo +shapefiles_la_OBJECTS = $(am_shapefiles_la_OBJECTS) +shapefiles_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(shapefiles_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(shapefiles_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libshapefiles_la_SOURCES) $(shapefiles_la_SOURCES) +DIST_SOURCES = $(libshapefiles_la_SOURCES) $(shapefiles_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers +noinst_LTLIBRARIES = libshapefiles.la shapefiles.la +libshapefiles_la_SOURCES = shapefiles.c validator.c +shapefiles_la_SOURCES = shapefiles.c validator.c +shapefiles_la_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers -I. \ + -DLOADABLE_EXTENSION +shapefiles_la_LDFLAGS = -module +shapefiles_la_LIBTOOLFLAGS = --tag=disable-static +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/shapefiles/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/shapefiles/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libshapefiles.la: $(libshapefiles_la_OBJECTS) $(libshapefiles_la_DEPENDENCIES) $(EXTRA_libshapefiles_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libshapefiles_la_OBJECTS) $(libshapefiles_la_LIBADD) $(LIBS) + +shapefiles.la: $(shapefiles_la_OBJECTS) $(shapefiles_la_DEPENDENCIES) $(EXTRA_shapefiles_la_DEPENDENCIES) + $(AM_V_CCLD)$(shapefiles_la_LINK) $(shapefiles_la_OBJECTS) $(shapefiles_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shapefiles.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shapefiles_la-shapefiles.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shapefiles_la-validator.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/validator.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +shapefiles_la-shapefiles.lo: shapefiles.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(shapefiles_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shapefiles_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shapefiles_la-shapefiles.lo -MD -MP -MF $(DEPDIR)/shapefiles_la-shapefiles.Tpo -c -o shapefiles_la-shapefiles.lo `test -f 'shapefiles.c' || echo '$(srcdir)/'`shapefiles.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shapefiles_la-shapefiles.Tpo $(DEPDIR)/shapefiles_la-shapefiles.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='shapefiles.c' object='shapefiles_la-shapefiles.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(shapefiles_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shapefiles_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shapefiles_la-shapefiles.lo `test -f 'shapefiles.c' || echo '$(srcdir)/'`shapefiles.c + +shapefiles_la-validator.lo: validator.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(shapefiles_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shapefiles_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT shapefiles_la-validator.lo -MD -MP -MF $(DEPDIR)/shapefiles_la-validator.Tpo -c -o shapefiles_la-validator.lo `test -f 'validator.c' || echo '$(srcdir)/'`validator.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/shapefiles_la-validator.Tpo $(DEPDIR)/shapefiles_la-validator.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='validator.c' object='shapefiles_la-validator.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(shapefiles_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(shapefiles_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o shapefiles_la-validator.lo `test -f 'validator.c' || echo '$(srcdir)/'`validator.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/shapefiles/shapefiles.c b/src/spatialite/src/shapefiles/shapefiles.c new file mode 100644 index 0000000..ce53e4a --- /dev/null +++ b/src/spatialite/src/shapefiles/shapefiles.c @@ -0,0 +1,6050 @@ +/* + + shapefiles.c -- implements shapefile support [import - export] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): Brad Hards <bradh@frogmouth.net> + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#if defined(_WIN32) && !defined(__MINGW32__) +/* MSVC strictly requires this include [off_t] */ +#include <sys/types.h> +#endif + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <math.h> + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include <spatialite/sqlite.h> +#include <spatialite/debug.h> + +#include <spatialite/gaiaaux.h> +#include <spatialite/gaiageo.h> +#include <spatialite.h> +#include <spatialite_private.h> + +#ifndef OMIT_FREEXL +#include <freexl.h> +#endif + +#if defined(_WIN32) && !defined(__MINGW32__) +#define strcasecmp _stricmp +#define strncasecmp _strnicmp +#endif + +/* 64 bit integer: portable format for printf() */ +#if defined(_WIN32) && !defined(__MINGW32__) +#define FRMT64 "%I64d" +#else +#define FRMT64 "%lld" +#endif + +struct auxdbf_fld +{ +/* auxiliary DBF field struct */ + char already_used; + gaiaDbfFieldPtr dbf_field; + struct auxdbf_fld *next; +}; + +struct auxdbf_list +{ +/* auxiliary DBF struct */ + struct auxdbf_fld *first; + struct auxdbf_fld *last; +}; + +struct resultset_values +{ +/* a struct wrapping values from a resultset */ + int type; + sqlite3_int64 int_value; + double dbl_value; + unsigned char *txt_blob_value; + int txt_blob_size; +}; + +struct resultset_comparator +{ +/* object for comparing two rows of the same resultset */ + struct resultset_values *previous; + struct resultset_values *current; + int num_columns; + sqlite3_int64 previous_rowid; + sqlite3_int64 current_rowid; +}; + +static struct resultset_comparator * +create_resultset_comparator (int columns) +{ +/* creating an empty resultset comparator object */ + int i; + struct resultset_comparator *p = + malloc (sizeof (struct resultset_comparator)); + p->num_columns = columns; + p->previous_rowid = -1; + p->current_rowid = -1; + p->previous = malloc (sizeof (struct resultset_values) * columns); + p->current = malloc (sizeof (struct resultset_values) * columns); + for (i = 0; i < columns; i++) + { + struct resultset_values *value = p->previous + i; + value->type = SQLITE_NULL; + value->txt_blob_value = NULL; + value = p->current + i; + value->type = SQLITE_NULL; + value->txt_blob_value = NULL; + } + return p; +} + +static void +destroy_resultset_comparator (struct resultset_comparator *ptr) +{ +/* memory cleanup - destroying a resultset comparator object */ + int i; + if (ptr == NULL) + return; + for (i = 0; i < ptr->num_columns; i++) + { + struct resultset_values *value = ptr->previous + i; + if (value->txt_blob_value != NULL) + free (value->txt_blob_value); + value = ptr->current + i; + if (value->txt_blob_value != NULL) + free (value->txt_blob_value); + } + if (ptr->previous != NULL) + free (ptr->previous); + if (ptr->current != NULL) + free (ptr->current); + free (ptr); +} + +static void +save_row_from_resultset (struct resultset_comparator *ptr, sqlite3_stmt * stmt) +{ +/* saving the current row values */ + int i; + int size; + const unsigned char *p; + if (ptr == NULL) + return; + ptr->current_rowid = sqlite3_column_int64 (stmt, 0); + for (i = 0; i < ptr->num_columns; i++) + { + struct resultset_values *value = ptr->current + i; + value->type = sqlite3_column_type (stmt, i + 1); + switch (value->type) + { + case SQLITE_INTEGER: + value->int_value = sqlite3_column_int64 (stmt, i + 1); + break; + case SQLITE_FLOAT: + value->dbl_value = sqlite3_column_double (stmt, i + 1); + break; + case SQLITE_TEXT: + p = sqlite3_column_text (stmt, i + 1); + size = strlen ((const char *) p); + value->txt_blob_value = malloc (size + 1); + strcpy ((char *) (value->txt_blob_value), (const char *) p); + break; + case SQLITE_BLOB: + p = sqlite3_column_blob (stmt, i + 1); + size = sqlite3_column_bytes (stmt, i + 1); + value->txt_blob_value = malloc (size); + memcpy (value->txt_blob_value, p, size); + value->txt_blob_size = size; + break; + }; + } +} + +static int +resultset_rows_equals (struct resultset_comparator *ptr) +{ +/* comparing the current and previous row from the resultset */ + int i; + if (ptr == NULL) + return 0; + for (i = 0; i < ptr->num_columns; i++) + { + struct resultset_values *val_prev = ptr->previous + i; + struct resultset_values *val_curr = ptr->current + i; + if (val_prev->type != val_curr->type) + return 0; + switch (val_prev->type) + { + case SQLITE_INTEGER: + if (val_prev->int_value != val_curr->int_value) + return 0; + break; + case SQLITE_FLOAT: + if (val_prev->dbl_value != val_curr->dbl_value) + return 0; + break; + case SQLITE_TEXT: + if (strcmp + ((const char *) (val_prev->txt_blob_value), + (const char *) (val_curr->txt_blob_value)) != 0) + return 0; + break; + case SQLITE_BLOB: + if (val_prev->txt_blob_size != val_curr->txt_blob_size) + return 0; + if (memcmp + (val_prev->txt_blob_value, val_curr->txt_blob_value, + val_curr->txt_blob_size) != 0) + return 0; + break; + }; + } + return 1; +} + +static sqlite3_int64 +get_current_resultset_rowid (struct resultset_comparator *ptr) +{ +/* returns the current ROWID */ + if (ptr == NULL) + return -1; + return ptr->current_rowid; +} + +static void +reset_resultset_current_row (struct resultset_comparator *ptr) +{ +/* resetting the resultset current row values */ + int i; + if (ptr == NULL) + return; + ptr->current_rowid = -1; + for (i = 0; i < ptr->num_columns; i++) + { + struct resultset_values *value = ptr->current + i; + value->type = SQLITE_NULL; + if (value->txt_blob_value != NULL) + free (value->txt_blob_value); + value->txt_blob_value = NULL; + } +} + +static void +swap_resultset_rows (struct resultset_comparator *ptr) +{ +/* resetting the resultset comparator */ + int i; + if (ptr == NULL) + return; + ptr->previous_rowid = ptr->current_rowid; + ptr->current_rowid = -1; + for (i = 0; i < ptr->num_columns; i++) + { + struct resultset_values *val_prev = ptr->previous + i; + struct resultset_values *val_curr = ptr->current + i; + if (val_prev->txt_blob_value != NULL) + free (val_prev->txt_blob_value); + val_prev->type = val_curr->type; + val_prev->int_value = val_curr->int_value; + val_prev->dbl_value = val_curr->dbl_value; + val_prev->txt_blob_value = val_curr->txt_blob_value; + val_prev->txt_blob_size = val_curr->txt_blob_size; + val_curr->type = SQLITE_NULL; + val_curr->txt_blob_value = NULL; + } +} + +static struct auxdbf_list * +alloc_auxdbf (gaiaDbfListPtr dbf_list) +{ +/* allocating the auxiliary DBF struct */ + gaiaDbfFieldPtr fld; + struct auxdbf_fld *fld_ex; + struct auxdbf_list *auxdbf = malloc (sizeof (struct auxdbf_list)); + auxdbf->first = NULL; + auxdbf->last = NULL; + fld = dbf_list->First; + while (fld) + { + fld_ex = malloc (sizeof (struct auxdbf_fld)); + fld_ex->already_used = 0; + fld_ex->dbf_field = fld; + fld_ex->next = NULL; + if (auxdbf->first == NULL) + auxdbf->first = fld_ex; + if (auxdbf->last != NULL) + auxdbf->last->next = fld_ex; + auxdbf->last = fld_ex; + fld = fld->Next; + } + return auxdbf; +} + +static void +free_auxdbf (struct auxdbf_list *auxdbf) +{ +/* freeing an auxiliary DBF struct */ + struct auxdbf_fld *n_fld; + struct auxdbf_fld *fld = auxdbf->first; + while (fld != NULL) + { + n_fld = fld->next; + free (fld); + fld = n_fld; + } + free (auxdbf); +} + +static gaiaDbfFieldPtr +getDbfField (struct auxdbf_list *aux, char *name) +{ +/* find a DBF attribute by name */ + struct auxdbf_fld *fld = aux->first; + while (fld) + { + if (strcasecmp (fld->dbf_field->Name, name) == 0) + { + fld->already_used = 1; + return fld->dbf_field; + } + fld = fld->next; + } + fld = aux->first; + while (fld) + { + if (fld->already_used) + { + fld = fld->next; + continue; + } + if (strncasecmp (fld->dbf_field->Name, name, 9) == 0) + { + fld->already_used = 1; + return fld->dbf_field; + } + fld = fld->next; + } + return NULL; +} + +#ifndef OMIT_ICONV /* ICONV enabled: supporting SHP */ + +SPATIALITE_DECLARE int +load_shapefile (sqlite3 * sqlite, char *shp_path, char *table, char *charset, + int srid, char *column, int coerce2d, int compressed, + int verbose, int spatial_index, int *rows, char *err_msg) +{ + return load_shapefile_ex (sqlite, shp_path, table, charset, srid, column, + NULL, NULL, coerce2d, compressed, verbose, + spatial_index, rows, err_msg); +} + +SPATIALITE_DECLARE int +load_shapefile_ex (sqlite3 * sqlite, char *shp_path, char *table, char *charset, + int srid, char *g_column, char *gtype, char *pk_column, + int coerce2d, int compressed, int verbose, int spatial_index, + int *rows, char *err_msg) +{ + sqlite3_stmt *stmt = NULL; + int ret; + char *errMsg = NULL; + char *sql; + char *dummy; + int already_exists = 0; + int metadata = 0; + int sqlError = 0; + gaiaShapefilePtr shp = NULL; + gaiaDbfFieldPtr dbf_field; + int cnt; + int col_cnt; + int seed; + int len; + int dup; + int idup; + int current_row; + char **col_name = NULL; + unsigned char *blob; + int blob_size; + char *geom_type; + char *txt_dims; + char *geo_column = g_column; + char *xgtype = gtype; + char *qtable = NULL; + char *qpk_name = NULL; + char *pk_name = NULL; + int pk_autoincr = 1; + char *xname; + int pk_type = SQLITE_INTEGER; + int pk_set; + gaiaOutBuffer sql_statement; + if (!geo_column) + geo_column = "Geometry"; + if (!xgtype) + ; + else + { + if (strcasecmp (xgtype, "LINESTRING") == 0) + xgtype = "LINESTRING"; + else if (strcasecmp (xgtype, "LINESTRINGZ") == 0) + xgtype = "LINESTRINGZ"; + else if (strcasecmp (xgtype, "LINESTRINGM") == 0) + xgtype = "LINESTRINGM"; + else if (strcasecmp (xgtype, "LINESTRINGZM") == 0) + xgtype = "LINESTRINGZM"; + else if (strcasecmp (xgtype, "MULTILINESTRING") == 0) + xgtype = "MULTILINESTRING"; + else if (strcasecmp (xgtype, "MULTILINESTRINGZ") == 0) + xgtype = "MULTILINESTRINGZ"; + else if (strcasecmp (xgtype, "MULTILINESTRINGM") == 0) + xgtype = "MULTILINESTRINGM"; + else if (strcasecmp (xgtype, "MULTILINESTRINGZM") == 0) + xgtype = "MULTILINESTRINGZM"; + else if (strcasecmp (xgtype, "POLYGON") == 0) + xgtype = "POLYGON"; + else if (strcasecmp (xgtype, "POLYGONZ") == 0) + xgtype = "POLYGONZ"; + else if (strcasecmp (xgtype, "POLYGONM") == 0) + xgtype = "POLYGONM"; + else if (strcasecmp (xgtype, "POLYGONZM") == 0) + xgtype = "POLYGONZM"; + else if (strcasecmp (xgtype, "MULTIPOLYGON") == 0) + xgtype = "MULTIPOLYGON"; + else if (strcasecmp (xgtype, "MULTIPOLYGONZ") == 0) + xgtype = "MULTIPOLYGONZ"; + else if (strcasecmp (xgtype, "MULTIPOLYGONM") == 0) + xgtype = "MULTIPOLYGONM"; + else if (strcasecmp (xgtype, "MULTIPOLYGONZM") == 0) + xgtype = "MULTIPOLYGONZM"; + else + xgtype = NULL; + } + qtable = gaiaDoubleQuotedSql (table); +/* checking if TABLE already exists */ + sql = + sqlite3_mprintf ("SELECT name FROM sqlite_master WHERE type = 'table' " + "AND Lower(name) = Lower(%Q)", table); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + if (!err_msg) + spatialite_e ("load shapefile error: <%s>\n", + sqlite3_errmsg (sqlite)); + else + sprintf (err_msg, "load shapefile error: <%s>\n", + sqlite3_errmsg (sqlite)); + goto clean_up; + } + while (1) + { + /* scrolling the result set */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + already_exists = 1; + else + { + spatialite_e ("load shapefile error: <%s>\n", + sqlite3_errmsg (sqlite)); + break; + } + } + sqlite3_finalize (stmt); + if (already_exists) + { + if (!err_msg) + spatialite_e ("load shapefile error: table '%s' already exists\n", + table); + else + sprintf (err_msg, + "load shapefile error: table '%s' already exists\n", + table); + if (qtable) + free (qtable); + if (qpk_name) + free (qpk_name); + return 0; + } +/* checking if MetaData GEOMETRY_COLUMNS exists */ + sql = + "SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'geometry_columns'"; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + if (!err_msg) + spatialite_e ("load shapefile error: <%s>\n", + sqlite3_errmsg (sqlite)); + else + sprintf (err_msg, "load shapefile error: <%s>\n", + sqlite3_errmsg (sqlite)); + if (qtable) + free (qtable); + if (qpk_name) + free (qpk_name); + return 0; + } + while (1) + { + /* scrolling the result set */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + metadata = 1; + else + { + spatialite_e ("load shapefile error: <%s>\n", + sqlite3_errmsg (sqlite)); + break; + } + } + sqlite3_finalize (stmt); + shp = gaiaAllocShapefile (); + gaiaOpenShpRead (shp, shp_path, charset, "UTF-8"); + if (!(shp->Valid)) + { + if (!err_msg) + { + spatialite_e + ("load shapefile error: cannot open shapefile '%s'\n", + shp_path); + if (shp->LastError) + spatialite_e ("\tcause: %s\n", shp->LastError); + } + else + { + char extra[512]; + *extra = '\0'; + if (shp->LastError) + sprintf (extra, "\n\tcause: %s\n", shp->LastError); + sprintf (err_msg, + "load shapefile error: cannot open shapefile '%s'%s", + shp_path, extra); + } + gaiaFreeShapefile (shp); + if (qtable) + free (qtable); + if (qpk_name) + free (qpk_name); + return 0; + } +/* checking for duplicate / illegal column names and antialising them */ + col_cnt = 0; + dbf_field = shp->Dbf->First; + while (dbf_field) + { + /* counting DBF fields */ + col_cnt++; + dbf_field = dbf_field->Next; + } + col_name = malloc (sizeof (char *) * col_cnt); + cnt = 0; + seed = 0; + if (pk_column != NULL) + { + /* validating the Primary Key column */ + dbf_field = shp->Dbf->First; + while (dbf_field) + { + if (strcasecmp (pk_column, dbf_field->Name) == 0) + { + /* ok, using this field as Primary Key */ + pk_name = pk_column; + pk_autoincr = 0; + switch (dbf_field->Type) + { + case 'C': + pk_type = SQLITE_TEXT; + break; + case 'N': + if (dbf_field->Decimals) + pk_type = SQLITE_FLOAT; + else + { + if (dbf_field->Length <= 18) + pk_type = SQLITE_INTEGER; + else + pk_type = SQLITE_FLOAT; + } + break; + case 'D': + pk_type = SQLITE_FLOAT; + break; + case 'F': + pk_type = SQLITE_FLOAT; + break; + case 'L': + pk_type = SQLITE_INTEGER; + break; + }; + } + dbf_field = dbf_field->Next; + } + } + if (pk_name == NULL) + { + if (pk_column != NULL) + pk_name = pk_column; + else + pk_name = "PK_UID"; + } + qpk_name = gaiaDoubleQuotedSql (pk_name); + dbf_field = shp->Dbf->First; + while (dbf_field) + { + /* preparing column names */ + char *xdummy = NULL; + if (strcasecmp (pk_name, dbf_field->Name) == 0) + { + /* skipping the Primary Key field */ + dummy = dbf_field->Name; + len = strlen (dummy); + *(col_name + cnt) = malloc (len + 1); + strcpy (*(col_name + cnt), dummy); + cnt++; + dbf_field = dbf_field->Next; + continue; + } + dummy = dbf_field->Name; + dup = 0; + for (idup = 0; idup < cnt; idup++) + { + if (strcasecmp (dummy, *(col_name + idup)) == 0) + dup = 1; + } + if (strcasecmp (dummy, pk_name) == 0) + dup = 1; + if (strcasecmp (dummy, geo_column) == 0) + dup = 1; + if (dup) + { + xdummy = sqlite3_mprintf ("COL_%d", seed++); + spatialite_e + ("Warning: duplicated fieldName \"%s\" in shapefile \"%s\": " + "renaming the second occurence in table \"%s\" as \"%s\".\n", + dummy, shp_path, table, xdummy); + dummy = xdummy; + } + len = strlen (dummy); + *(col_name + cnt) = malloc (len + 1); + strcpy (*(col_name + cnt), dummy); + if (xdummy) + sqlite3_free (xdummy); + cnt++; + dbf_field = dbf_field->Next; + } + if (verbose) + spatialite_e + ("========\nLoading shapefile at '%s' into SQLite table '%s'\n", + shp_path, table); +/* starting a transaction */ + if (verbose) + spatialite_e ("\nBEGIN;\n"); + ret = sqlite3_exec (sqlite, "BEGIN", NULL, 0, &errMsg); + if (ret != SQLITE_OK) + { + if (!err_msg) + spatialite_e ("load shapefile error: <%s>\n", errMsg); + else + sprintf (err_msg, "load shapefile error: <%s>\n", errMsg); + sqlite3_free (errMsg); + sqlError = 1; + goto clean_up; + } +/* creating the Table */ + gaiaOutBufferInitialize (&sql_statement); + if (pk_type == SQLITE_TEXT) + { + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " + "TEXT PRIMARY KEY NOT NULL", qtable, qpk_name); + } + else if (pk_type == SQLITE_FLOAT) + { + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " + "DOUBLE PRIMARY KEY NOT NULL", qtable, + qpk_name); + } + else + { + if (pk_autoincr) + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " + "INTEGER PRIMARY KEY AUTOINCREMENT", + qtable, qpk_name); + else + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " + "INTEGER NOT NULL PRIMARY KEY", qtable, + qpk_name); + } + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + cnt = 0; + dbf_field = shp->Dbf->First; + while (dbf_field) + { + if (strcasecmp (pk_name, dbf_field->Name) == 0) + { + /* skipping the Primary Key field */ + dbf_field = dbf_field->Next; + cnt++; + continue; + } + xname = gaiaDoubleQuotedSql (*(col_name + cnt)); + sql = sqlite3_mprintf (",\n\"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + cnt++; + switch (dbf_field->Type) + { + case 'C': + gaiaAppendToOutBuffer (&sql_statement, " TEXT"); + break; + case 'N': + if (dbf_field->Decimals) + gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); + else + { + if (dbf_field->Length <= 18) + gaiaAppendToOutBuffer (&sql_statement, " INTEGER"); + else + gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); + } + break; + case 'D': + gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); + break; + case 'F': + gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); + break; + case 'L': + gaiaAppendToOutBuffer (&sql_statement, " INTEGER"); + break; + }; + dbf_field = dbf_field->Next; + } + if (metadata) + gaiaAppendToOutBuffer (&sql_statement, ")"); + else + { + xname = gaiaDoubleQuotedSql (geo_column); + sql = sqlite3_mprintf (",\n\"%s\" BLOB)", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + { + if (verbose) + spatialite_e ("%s;\n", sql_statement.Buffer); + ret = sqlite3_exec (sqlite, sql_statement.Buffer, NULL, 0, &errMsg); + } + else + ret = SQLITE_ERROR; + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + { + if (!err_msg) + spatialite_e ("load shapefile error: <%s>\n", errMsg); + else + sprintf (err_msg, "load shapefile error: <%s>\n", errMsg); + sqlite3_free (errMsg); + sqlError = 1; + goto clean_up; + } + if (metadata) + { + /* creating Geometry column */ + switch (shp->Shape) + { + case GAIA_SHP_POINT: + case GAIA_SHP_POINTM: + case GAIA_SHP_POINTZ: + geom_type = "POINT"; + break; + case GAIA_SHP_MULTIPOINT: + case GAIA_SHP_MULTIPOINTM: + case GAIA_SHP_MULTIPOINTZ: + geom_type = "MULTIPOINT"; + break; + case GAIA_SHP_POLYLINE: + case GAIA_SHP_POLYLINEM: + case GAIA_SHP_POLYLINEZ: + if (xgtype == NULL) + { + /* auto-decting if MULTILINESTRING is required */ + gaiaShpAnalyze (shp); + if (shp->EffectiveType == GAIA_LINESTRING) + geom_type = "LINESTRING"; + else + geom_type = "MULTILINESTRING"; + } + else + { + /* user-defined geometry type */ + if (strcmp (xgtype, "LINESTRING") == 0) + { + geom_type = "LINESTRING"; + shp->EffectiveType = GAIA_LINESTRING; + shp->EffectiveDims = GAIA_XY; + } + if (strcmp (xgtype, "LINESTRINGZ") == 0) + { + geom_type = "LINESTRING"; + shp->EffectiveType = GAIA_LINESTRING; + shp->EffectiveDims = GAIA_XY_Z; + } + if (strcmp (xgtype, "LINESTRINGM") == 0) + { + geom_type = "LINESTRING"; + shp->EffectiveType = GAIA_LINESTRING; + shp->EffectiveDims = GAIA_XY_M; + } + if (strcmp (xgtype, "LINESTRINGZM") == 0) + { + geom_type = "LINESTRING"; + shp->EffectiveType = GAIA_LINESTRING; + shp->EffectiveDims = GAIA_XY_Z_M; + } + if (strcmp (xgtype, "MULTILINESTRING") == 0) + { + geom_type = "MULTILINESTRING"; + shp->EffectiveType = GAIA_MULTILINESTRING; + shp->EffectiveDims = GAIA_XY; + } + if (strcmp (xgtype, "MULTILINESTRINGZ") == 0) + { + geom_type = "MULTILINESTRING"; + shp->EffectiveType = GAIA_MULTILINESTRING; + shp->EffectiveDims = GAIA_XY_Z; + } + if (strcmp (xgtype, "MULTILINESTRINGM") == 0) + { + geom_type = "MULTILINESTRING"; + shp->EffectiveType = GAIA_MULTILINESTRING; + shp->EffectiveDims = GAIA_XY_M; + } + if (strcmp (xgtype, "MULTILINESTRINGZM") == 0) + { + geom_type = "MULTILINESTRING"; + shp->EffectiveType = GAIA_MULTILINESTRING; + shp->EffectiveDims = GAIA_XY_Z_M; + } + } + break; + case GAIA_SHP_POLYGON: + case GAIA_SHP_POLYGONM: + case GAIA_SHP_POLYGONZ: + if (xgtype == NULL) + { + /* auto-decting if MULTIPOLYGON is required */ + gaiaShpAnalyze (shp); + if (shp->EffectiveType == GAIA_POLYGON) + geom_type = "POLYGON"; + else + geom_type = "MULTIPOLYGON"; + } + else + { + /* user-defined geometry type */ + if (strcmp (xgtype, "POLYGON") == 0) + { + geom_type = "POLYGON"; + shp->EffectiveType = GAIA_POLYGON; + shp->EffectiveDims = GAIA_XY; + } + if (strcmp (xgtype, "POLYGONZ") == 0) + { + geom_type = "POLYGON"; + shp->EffectiveType = GAIA_POLYGON; + shp->EffectiveDims = GAIA_XY_Z; + } + if (strcmp (xgtype, "POLYGONM") == 0) + { + geom_type = "POLYGON"; + shp->EffectiveType = GAIA_POLYGON; + shp->EffectiveDims = GAIA_XY_M; + } + if (strcmp (xgtype, "POLYGONZM") == 0) + { + geom_type = "POLYGON"; + shp->EffectiveType = GAIA_POLYGON; + shp->EffectiveDims = GAIA_XY_Z_M; + } + if (strcmp (xgtype, "MULTIPOLYGON") == 0) + { + geom_type = "MULTIPOLYGON"; + shp->EffectiveType = GAIA_MULTIPOLYGON; + shp->EffectiveDims = GAIA_XY; + } + if (strcmp (xgtype, "MULTIPOLYGONZ") == 0) + { + geom_type = "MULTIPOLYGON"; + shp->EffectiveType = GAIA_MULTIPOLYGON; + shp->EffectiveDims = GAIA_XY_Z; + } + if (strcmp (xgtype, "MULTIPOLYGONM") == 0) + { + geom_type = "MULTIPOLYGON"; + shp->EffectiveType = GAIA_MULTIPOLYGON; + shp->EffectiveDims = GAIA_XY_M; + } + if (strcmp (xgtype, "MULTIPOLYGONZM") == 0) + { + geom_type = "MULTIPOLYGON"; + shp->EffectiveType = GAIA_MULTIPOLYGON; + shp->EffectiveDims = GAIA_XY_Z_M; + } + } + break; + }; + if (coerce2d) + shp->EffectiveDims = GAIA_XY; + switch (shp->EffectiveDims) + { + case GAIA_XY_Z: + txt_dims = "XYZ"; + break; + case GAIA_XY_M: + txt_dims = "XYM"; + break; + case GAIA_XY_Z_M: + txt_dims = "XYZM"; + break; + default: + txt_dims = "XY"; + break; + }; + sql = sqlite3_mprintf ("SELECT AddGeometryColumn(%Q, %Q, %d, %Q, %Q)", + table, geo_column, srid, geom_type, txt_dims); + if (verbose) + spatialite_e ("%s;\n", sql); + ret = sqlite3_exec (sqlite, sql, NULL, 0, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + if (!err_msg) + spatialite_e ("load shapefile error: <%s>\n", errMsg); + else + sprintf (err_msg, "load shapefile error: <%s>\n", errMsg); + sqlite3_free (errMsg); + sqlError = 1; + goto clean_up; + } + if (spatial_index) + { + /* creating the Spatial Index */ + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, %Q)", + table, geo_column); + ret = sqlite3_exec (sqlite, sql, NULL, 0, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + if (!err_msg) + spatialite_e ("load shapefile error: <%s>\n", errMsg); + else + sprintf (err_msg, "load shapefile error: <%s>\n", + errMsg); + sqlite3_free (errMsg); + sqlError = 1; + goto clean_up; + } + } + } + else + { + /* no Metadata */ + if (shp->Shape == GAIA_SHP_POLYLINE + || shp->Shape == GAIA_SHP_POLYLINEM + || shp->Shape == GAIA_SHP_POLYLINEZ + || shp->Shape == GAIA_SHP_POLYGON + || shp->Shape == GAIA_SHP_POLYGONM + || shp->Shape == GAIA_SHP_POLYGONZ) + { + /* + / fixing anyway the Geometry type for + / LINESTRING/MULTILINESTRING or + / POLYGON/MULTIPOLYGON + */ + gaiaShpAnalyze (shp); + } + } + /* preparing the INSERT INTO parametrerized statement */ + gaiaOutBufferInitialize (&sql_statement); + sql = sqlite3_mprintf ("INSERT INTO \"%s\" (\"%s\",", qtable, qpk_name); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + cnt = 0; + dbf_field = shp->Dbf->First; + while (dbf_field) + { + /* columns corresponding to some DBF attribute */ + if (strcasecmp (pk_name, dbf_field->Name) == 0) + { + /* skipping the Primary Key field */ + dbf_field = dbf_field->Next; + cnt++; + continue; + } + xname = gaiaDoubleQuotedSql (*(col_name + cnt++)); + sql = sqlite3_mprintf ("\"%s\" ,", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + dbf_field = dbf_field->Next; + } + xname = gaiaDoubleQuotedSql (geo_column); /* the GEOMETRY column */ + sql = sqlite3_mprintf ("\"%s\")\n VALUES (?", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + dbf_field = shp->Dbf->First; + while (dbf_field) + { + /* column values */ + if (strcasecmp (pk_name, dbf_field->Name) == 0) + { + /* skipping the Primary Key field */ + dbf_field = dbf_field->Next; + continue; + } + gaiaAppendToOutBuffer (&sql_statement, ", ?"); + dbf_field = dbf_field->Next; + } + gaiaAppendToOutBuffer (&sql_statement, ", ?)"); /* the GEOMETRY column */ + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + ret = + sqlite3_prepare_v2 (sqlite, sql_statement.Buffer, + strlen (sql_statement.Buffer), &stmt, NULL); + else + ret = SQLITE_ERROR; + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + { + if (!err_msg) + spatialite_e ("load shapefile error: <%s>\n", + sqlite3_errmsg (sqlite)); + else + sprintf (err_msg, "load shapefile error: <%s>\n", + sqlite3_errmsg (sqlite)); + sqlError = 1; + goto clean_up; + } + current_row = 0; + while (1) + { + /* inserting rows from shapefile */ + ret = gaiaReadShpEntity (shp, current_row, srid); + if (!ret) + { + if (!(shp->LastError)) /* normal SHP EOF */ + break; + if (!err_msg) + spatialite_e ("%s\n", shp->LastError); + else + sprintf (err_msg, "%s\n", shp->LastError); + sqlError = 1; + sqlite3_finalize (stmt); + goto clean_up; + } + current_row++; + /* binding query params */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + pk_set = 0; + cnt = 0; + dbf_field = shp->Dbf->First; + while (dbf_field) + { + /* Primary Key value */ + if (strcasecmp (pk_name, dbf_field->Name) == 0) + { + if (pk_type == SQLITE_TEXT) + sqlite3_bind_text (stmt, 1, + dbf_field->Value->TxtValue, + strlen (dbf_field->Value-> + TxtValue), SQLITE_STATIC); + else if (pk_type == SQLITE_FLOAT) + sqlite3_bind_double (stmt, 1, + dbf_field->Value->DblValue); + else + sqlite3_bind_int64 (stmt, 1, + dbf_field->Value->IntValue); + pk_set = 1; + } + dbf_field = dbf_field->Next; + } + if (!pk_set) + sqlite3_bind_int (stmt, 1, current_row); + cnt = 0; + dbf_field = shp->Dbf->First; + while (dbf_field) + { + /* column values */ + if (strcasecmp (pk_name, dbf_field->Name) == 0) + { + /* skipping the Primary Key field */ + dbf_field = dbf_field->Next; + continue; + } + if (!(dbf_field->Value)) + sqlite3_bind_null (stmt, cnt + 2); + else + { + switch (dbf_field->Value->Type) + { + case GAIA_INT_VALUE: + sqlite3_bind_int64 (stmt, cnt + 2, + dbf_field->Value->IntValue); + break; + case GAIA_DOUBLE_VALUE: + sqlite3_bind_double (stmt, cnt + 2, + dbf_field->Value->DblValue); + break; + case GAIA_TEXT_VALUE: + sqlite3_bind_text (stmt, cnt + 2, + dbf_field->Value->TxtValue, + strlen (dbf_field-> + Value->TxtValue), + SQLITE_STATIC); + break; + default: + sqlite3_bind_null (stmt, cnt + 2); + break; + } + } + cnt++; + dbf_field = dbf_field->Next; + } + if (shp->Dbf->Geometry) + { + if (compressed) + gaiaToCompressedBlobWkb (shp->Dbf->Geometry, &blob, + &blob_size); + else + gaiaToSpatiaLiteBlobWkb (shp->Dbf->Geometry, &blob, + &blob_size); + sqlite3_bind_blob (stmt, cnt + 2, blob, blob_size, free); + } + else + { + /* handling a NULL-Geometry */ + sqlite3_bind_null (stmt, cnt + 2); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + if (!err_msg) + spatialite_e ("load shapefile error: <%s>\n", + sqlite3_errmsg (sqlite)); + else + sprintf (err_msg, "load shapefile error: <%s>\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + sqlError = 1; + goto clean_up; + } + } + sqlite3_finalize (stmt); + clean_up: + if (qtable) + free (qtable); + if (qpk_name) + free (qpk_name); + gaiaFreeShapefile (shp); + if (col_name) + { + /* releasing memory allocation for column names */ + for (cnt = 0; cnt < col_cnt; cnt++) + free (*(col_name + cnt)); + free (col_name); + } + if (sqlError) + { + /* some error occurred - ROLLBACK */ + if (verbose) + spatialite_e ("ROLLBACK;\n"); + ret = sqlite3_exec (sqlite, "ROLLBACK", NULL, 0, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("load shapefile error: <%s>\n", errMsg); + sqlite3_free (errMsg); + } + if (rows) + *rows = current_row; + return 0; + } + else + { + /* ok - confirming pending transaction - COMMIT */ + if (verbose) + spatialite_e ("COMMIT;\n"); + ret = sqlite3_exec (sqlite, "COMMIT", NULL, 0, &errMsg); + if (ret != SQLITE_OK) + { + if (!err_msg) + spatialite_e ("load shapefile error: <%s>\n", errMsg); + else + sprintf (err_msg, "load shapefile error: <%s>\n", errMsg); + sqlite3_free (errMsg); + return 0; + } + if (rows) + *rows = current_row; + if (verbose) + spatialite_e + ("\nInserted %d rows into '%s' from SHAPEFILE\n========\n", + current_row, table); + if (err_msg) + sprintf (err_msg, "Inserted %d rows into '%s' from SHAPEFILE", + current_row, table); + return 1; + } +} + +#endif /* end ICONV (SHP) */ + +static void +output_prj_file (sqlite3 * sqlite, char *path, char *table, char *column) +{ +/* exporting [if possible] a .PRJ file */ + char **results; + int rows; + int columns; + int i; + char *errMsg = NULL; + int srid = -1; + char *sql; + int ret; + int rs_srid = 0; + int rs_srs_wkt = 0; + int rs_srtext = 0; + int has_srtext = 0; + const char *name; + char *srsWkt = NULL; + FILE *out; + +/* step I: retrieving the SRID */ + sql = sqlite3_mprintf ("SELECT srid FROM geometry_columns WHERE " + "Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", + table, column); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("dump shapefile MetaData error: <%s>\n", errMsg); + sqlite3_free (errMsg); + return; + } + for (i = 1; i <= rows; i++) + { + srid = atoi (results[(i * columns) + 0]); + } + sqlite3_free_table (results); + if (srid <= 0) + { + /* srid still undefined, so we'll read VIEWS_GEOMETRY_COLUMNS */ + sql = sqlite3_mprintf ("SELECT srid FROM views_geometry_columns " + "JOIN geometry_columns USING (f_table_name, f_geometry_column) " + "WHERE Lower(view_name) = Lower(%Q) AND " + "Lower(view_geometry) = Lower(%Q)", + table, column); + ret = + sqlite3_get_table (sqlite, sql, &results, &rows, &columns, + &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("dump shapefile MetaData error: <%s>\n", errMsg); + sqlite3_free (errMsg); + return; + } + for (i = 1; i <= rows; i++) + { + srid = atoi (results[(i * columns) + 0]); + } + sqlite3_free_table (results); + } + if (srid <= 0) + return; + +/* step II: checking if the SRS_WKT or SRTEXT column actually exists */ + ret = + sqlite3_get_table (sqlite, "PRAGMA table_info(spatial_ref_sys)", + &results, &rows, &columns, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("dump shapefile MetaData error: <%s>\n", errMsg); + sqlite3_free (errMsg); + return; + } + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "srid") == 0) + rs_srid = 1; + if (strcasecmp (name, "srs_wkt") == 0) + rs_srs_wkt = 1; + if (strcasecmp (name, "srtext") == 0) + rs_srtext = 1; + } + } + sqlite3_free_table (results); + if (rs_srs_wkt == 1 || rs_srtext == 1) + has_srtext = 1; + if (rs_srid == 0 || has_srtext == 0) + return; + +/* step III: fetching WKT SRS */ + if (rs_srtext) + { + sql = sqlite3_mprintf ("SELECT srtext FROM spatial_ref_sys " + "WHERE srid = %d AND srtext IS NOT NULL", + srid); + } + else + { + sql = sqlite3_mprintf ("SELECT srs_wkt FROM spatial_ref_sys " + "WHERE srid = %d AND srs_wkt IS NOT NULL", + srid); + } + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("dump shapefile MetaData error: <%s>\n", errMsg); + sqlite3_free (errMsg); + goto end; + } + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + char *srs = results[(i * columns) + 0]; + int len = strlen (srs); + if (srsWkt) + free (srsWkt); + srsWkt = malloc (len + 1); + strcpy (srsWkt, srs); + } + } + sqlite3_free_table (results); + if (srsWkt == NULL) + goto end; + +/* step IV: generating the .PRJ file */ + sql = sqlite3_mprintf ("%s.prj", path); + out = fopen (sql, "wb"); + sqlite3_free (sql); + if (!out) + goto end; + fprintf (out, "%s\r\n", srsWkt); + fclose (out); + end: + if (srsWkt) + free (srsWkt); + return; +} + +#ifndef OMIT_ICONV /* ICONV enabled: supporting SHAPEFILE and DBF */ + + +static int +get_default_dbf_fields (sqlite3 * sqlite, const char *xtable, + const char *db_prefix, const char *table_name, + gaiaDbfListPtr * dbf_export_list) +{ +/* creating DBF field definitions for an empty DBF */ + int row = 0; + char *sql; + sqlite3_stmt *stmt; + int ret; + int offset = 0; + gaiaDbfListPtr list = NULL; + + if (db_prefix != NULL && table_name != NULL) + { + char *xprefix = gaiaDoubleQuotedSql (db_prefix); + char *xxtable = gaiaDoubleQuotedSql (table_name); + sql = + sqlite3_mprintf ("PRAGMA \"%s\".table_info(\"%s\")", xprefix, + xxtable); + free (xprefix); + free (xxtable); + } + else + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xtable); +/* +/ compiling SQL prepared statement +*/ + + list = gaiaAllocDbfList (); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto sql_error; + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a result set row */ + int xtype = SQLITE_TEXT; + int length = 60; + char *name = (char *) sqlite3_column_text (stmt, 1); + const char *type = (const char *) sqlite3_column_text (stmt, 2); + + if (strcasecmp (type, "INT") == 0 + || strcasecmp (type, "INTEGER") == 0 + || strcasecmp (type, "SMALLINT") == 0 + || strcasecmp (type, "BIGINT") == 0 + || strcasecmp (type, "TINYINT") == 0) + xtype = SQLITE_INTEGER; + if (strcasecmp (type, "DOUBLE") == 0 + || strcasecmp (type, "REAL") == 0 + || strcasecmp (type, "DOUBLE PRECISION") == 0 + || strcasecmp (type, "NUMERIC") == 0 + || strcasecmp (type, "FLOAT") == 0) + xtype = SQLITE_FLOAT; + if (strncasecmp (type, "VARCHAR(", 8) == 0) + length = atoi (type + 8); + if (strncasecmp (type, "CHAR(", 5) == 0) + length = atoi (type + 5); + + if (xtype == SQLITE_FLOAT) + { + gaiaAddDbfField (list, name, 'N', offset, 19, 6); + offset += 19; + } + else if (xtype == SQLITE_INTEGER) + { + gaiaAddDbfField (list, name, 'N', offset, 18, 0); + offset += 18; + } + else + { + gaiaAddDbfField (list, name, 'C', offset, length, 0); + offset += length; + } + row++; + } + else + goto sql_error; + } + sqlite3_finalize (stmt); + if (row == 0) + goto sql_error; + *dbf_export_list = list; + return 1; + sql_error: + gaiaFreeDbfList (list); + *dbf_export_list = NULL; + return 0; +} + +static gaiaVectorLayersListPtr +recover_unregistered_geometry (sqlite3 * handle, const char *table, + const char *geometry) +{ +/* attempting to recover an unregistered Geometry */ + int len; + int error = 0; + gaiaVectorLayersListPtr list; + gaiaVectorLayerPtr lyr; + +/* allocating a VectorLayersList */ + list = malloc (sizeof (gaiaVectorLayersList)); + list->First = NULL; + list->Last = NULL; + list->Current = NULL; + + lyr = malloc (sizeof (gaiaVectorLayer)); + lyr->LayerType = GAIA_VECTOR_UNKNOWN; + len = strlen (table); + lyr->TableName = malloc (len + 1); + strcpy (lyr->TableName, table); + len = strlen (geometry); + lyr->GeometryName = malloc (len + 1); + strcpy (lyr->GeometryName, geometry); + lyr->Srid = 0; + lyr->GeometryType = GAIA_VECTOR_UNKNOWN; + lyr->Dimensions = GAIA_VECTOR_UNKNOWN; + lyr->SpatialIndex = GAIA_SPATIAL_INDEX_NONE; + lyr->ExtentInfos = NULL; + lyr->AuthInfos = NULL; + lyr->First = NULL; + lyr->Last = NULL; + lyr->Next = NULL; + list->Current = NULL; + if (list->First == NULL) + list->First = lyr; + if (list->Last != NULL) + list->Last->Next = lyr; + list->Last = lyr; + + if (!doComputeFieldInfos + (handle, lyr->TableName, lyr->GeometryName, + SPATIALITE_STATISTICS_LEGACY, lyr)) + error = 1; + + if (list->First == NULL || error) + { + gaiaFreeVectorLayersList (list); + return NULL; + } + return list; +} + +static int +compute_max_int_length (sqlite3_int64 min, sqlite3_int64 max) +{ +/* determining the buffer size for some INT */ + int pos_len = 0; + int neg_len = 1; + sqlite3_int64 value = max; + if (value == 0) + pos_len = 1; + else + { + while (value != 0) + { + pos_len++; + value /= 10; + } + } + if (min >= 0) + return pos_len; + value = min; + while (value != 0) + { + neg_len++; + value /= 10; + } + if (neg_len > pos_len) + return neg_len; + return pos_len; +} + +static int +compute_max_dbl_length (double min, double max) +{ +/* determining the buffer size for some DOUBLE */ + int pos_len = 0; + int neg_len = 1; + sqlite3_int64 value; + if (max >= 0.0) + value = floor (max); + else + value = ceil (max); + while (value != 0) + { + pos_len++; + value /= 10; + } + if (min >= 0.0) + return pos_len + 7; + value = ceil (min); + while (value != 0) + { + neg_len++; + value /= 10; + } + if (neg_len > pos_len) + return neg_len + 7; + return pos_len + 7; +} + +static void +shp_parse_table_name (const char *tn, char **db_prefix, char **table_name) +{ +/* attempting to extract an eventual DB prefix */ + int i; + int len = strlen (tn); + int i_dot = -1; + int l_db; + int l_tbl; + for (i = 0; i < len; i++) + { + if (tn[i] == '.') + { + i_dot = i; + break; + } + } + if (i_dot >= 1) + { + l_db = i_dot; + l_tbl = len - (i_dot + 1); + *db_prefix = malloc (l_db + 1); + memset (*db_prefix, '\0', l_db + 1); + memcpy (*db_prefix, tn, l_db); + *table_name = malloc (l_tbl + 1); + strcpy (*table_name, tn + i_dot + 1); + return; + } + *table_name = malloc (len + 1); + strcpy (*table_name, tn); +} + +static int +get_attached_layer_v4 (sqlite3 * handle, const char *db_prefix, + const char *table, const char *geometry, + gaiaVectorLayersListPtr list) +{ +/* creating a VectorLayersList object - v.4.0.0 DB layout */ + char *sql; + int ret; + sqlite3_stmt *stmt; + int error = 0; + char *xdb; + +/* querying the vector_layers view */ + xdb = gaiaDoubleQuotedSql (db_prefix); + sql = + sqlite3_mprintf + ("SELECT layer_type, table_name, geometry_column, geometry_type, " + "srid, spatial_index_enabled FROM \"%s\".vector_layers " + "WHERE Lower(table_name) = Lower(%Q) AND " + "Lower(geometry_column) = Lower(%Q)", xdb, table, geometry); + free (xdb); +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + error = 1; + goto stop; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + const char *layer_type = + (const char *) sqlite3_column_text (stmt, 0); + const char *table_name = + (const char *) sqlite3_column_text (stmt, 1); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 2); + int geometry_type = sqlite3_column_int (stmt, 3); + int srid = sqlite3_column_int (stmt, 4); + int spatial_index = sqlite3_column_int (stmt, 5); + addVectorLayer (list, layer_type, table_name, geometry_column, + geometry_type, srid, spatial_index); + } + else + error = 1; + } + ret = sqlite3_finalize (stmt); + + stop: + if (error) + return 0; + +/* querying the vector_layers_statistics view */ + xdb = gaiaDoubleQuotedSql (db_prefix); + sql = + sqlite3_mprintf + ("SELECT table_name, geometry_column, row_count, extent_min_x, " + "extent_min_y, extent_max_x, extent_max_y FROM \"%s\".vector_layers_statistics " + "WHERE Lower(table_name) = Lower(%Q) AND " + "Lower(geometry_column) = Lower(%Q)", xdb, table, geometry); + free (xdb); +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + error = 1; + goto stop2; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + int is_null = 0; + const char *table_name = + (const char *) sqlite3_column_text (stmt, 0); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 1); + int count; + double min_x; + double min_y; + double max_x; + double max_y; + if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) + is_null = 1; + else + count = sqlite3_column_int (stmt, 2); + if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) + is_null = 1; + else + min_x = sqlite3_column_double (stmt, 3); + if (sqlite3_column_type (stmt, 4) == SQLITE_NULL) + is_null = 1; + else + min_y = sqlite3_column_double (stmt, 4); + if (sqlite3_column_type (stmt, 5) == SQLITE_NULL) + is_null = 1; + else + max_x = sqlite3_column_double (stmt, 5); + if (sqlite3_column_type (stmt, 6) == SQLITE_NULL) + is_null = 1; + else + max_y = sqlite3_column_double (stmt, 6); + if (!is_null) + addVectorLayerExtent (list, table_name, geometry_column, + count, min_x, min_y, max_x, max_y); + } + } + ret = sqlite3_finalize (stmt); + + stop2: +/* querying the vector_layers_field_infos view */ + xdb = gaiaDoubleQuotedSql (db_prefix); + sql = + sqlite3_mprintf + ("SELECT table_name, geometry_column, ordinal, column_name, " + "null_values, integer_values, double_values, text_values, blob_values," + "max_size, integer_min, integer_max, double_min, double_max " + "FROM \"%s\".vector_layers_field_infos " + "WHERE Lower(table_name) = Lower(%Q) AND " + "Lower(geometry_column) = Lower(%Q)", xdb, table, geometry); + free (xdb); +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + error = 1; + goto stop4; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + int null_max_size = 0; + int null_int_range = 0; + int null_double_range = 0; + int max_size; + sqlite3_int64 integer_min; + sqlite3_int64 integer_max; + double double_min; + double double_max; + const char *table_name = + (const char *) sqlite3_column_text (stmt, 0); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 1); + int ordinal = sqlite3_column_int (stmt, 2); + const char *column_name = + (const char *) sqlite3_column_text (stmt, 3); + int null_values = sqlite3_column_int (stmt, 4); + int integer_values = sqlite3_column_int (stmt, 5); + int double_values = sqlite3_column_int (stmt, 6); + int text_values = sqlite3_column_int (stmt, 7); + int blob_values = sqlite3_column_int (stmt, 8); + if (sqlite3_column_type (stmt, 9) == SQLITE_NULL) + null_max_size = 1; + else + max_size = sqlite3_column_int (stmt, 9); + if (sqlite3_column_type (stmt, 10) == SQLITE_NULL + || sqlite3_column_type (stmt, 11) == SQLITE_NULL) + null_int_range = 1; + else + { + integer_min = sqlite3_column_int64 (stmt, 10); + integer_max = sqlite3_column_int64 (stmt, 11); + } + if (sqlite3_column_type (stmt, 12) == SQLITE_NULL + || sqlite3_column_type (stmt, 13) == SQLITE_NULL) + null_double_range = 1; + else + { + double_min = sqlite3_column_double (stmt, 12); + double_max = sqlite3_column_double (stmt, 13); + } + addLayerAttributeField (list, table_name, geometry_column, + ordinal, column_name, null_values, + integer_values, double_values, + text_values, blob_values, null_max_size, + max_size, null_int_range, &integer_min, + &integer_max, null_double_range, + double_min, double_max); + } + } + ret = sqlite3_finalize (stmt); + + stop4: + if (error) + return 0; + return 1; +} + +static int +check_spatial_metadata (const void *handle, const char *db_prefix) +{ +/* internal utility function: +/ +/ 0 - if no valid SpatialMetaData where found +/ 1 - if SpatiaLite-like (legacy) SpatialMetadata where found +/ 2 - if FDO-OGR-like SpatialMetadata where found +/ 3 - if SpatiaLite-like (current) SpatialMetadata where found +/ +*/ + sqlite3 *sqlite = (sqlite3 *) handle; + int spatialite_legacy_rs = 0; + int spatialite_rs = 0; + int fdo_rs = 0; + int spatialite_legacy_gc = 0; + int spatialite_gc = 0; + int fdo_gc = 0; + int rs_srid = 0; + int auth_name = 0; + int auth_srid = 0; + int srtext = 0; + int ref_sys_name = 0; + int proj4text = 0; + int f_table_name = 0; + int f_geometry_column = 0; + int geometry_type = 0; + int coord_dimension = 0; + int gc_srid = 0; + int geometry_format = 0; + int type = 0; + int spatial_index_enabled = 0; + char *sql; + int ret; + const char *name; + int i; + char **results; + int rows; + int columns; + char *xdb; +/* checking the GEOMETRY_COLUMNS table */ + xdb = gaiaDoubleQuotedSql (db_prefix); + sql = sqlite3_mprintf ("PRAGMA \"%s\".table_info(geometry_columns)", xdb); + free (xdb); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto unknown; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "f_table_name") == 0) + f_table_name = 1; + if (strcasecmp (name, "f_geometry_column") == 0) + f_geometry_column = 1; + if (strcasecmp (name, "geometry_type") == 0) + geometry_type = 1; + if (strcasecmp (name, "coord_dimension") == 0) + coord_dimension = 1; + if (strcasecmp (name, "srid") == 0) + gc_srid = 1; + if (strcasecmp (name, "geometry_format") == 0) + geometry_format = 1; + if (strcasecmp (name, "type") == 0) + type = 1; + if (strcasecmp (name, "spatial_index_enabled") == 0) + spatial_index_enabled = 1; + } + } + sqlite3_free_table (results); + if (f_table_name && f_geometry_column && type && coord_dimension + && gc_srid && spatial_index_enabled) + spatialite_legacy_gc = 1; + if (f_table_name && f_geometry_column && geometry_type && coord_dimension + && gc_srid && spatial_index_enabled) + spatialite_gc = 1; + if (f_table_name && f_geometry_column && geometry_type && coord_dimension + && gc_srid && geometry_format) + fdo_gc = 1; +/* checking the SPATIAL_REF_SYS table */ + xdb = gaiaDoubleQuotedSql (db_prefix); + sql = sqlite3_mprintf ("PRAGMA \"%s\".table_info(spatial_ref_sys)", xdb); + free (xdb); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto unknown; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "srid") == 0) + rs_srid = 1; + if (strcasecmp (name, "auth_name") == 0) + auth_name = 1; + if (strcasecmp (name, "auth_srid") == 0) + auth_srid = 1; + if (strcasecmp (name, "srtext") == 0) + srtext = 1; + if (strcasecmp (name, "ref_sys_name") == 0) + ref_sys_name = 1; + if (strcasecmp (name, "proj4text") == 0) + proj4text = 1; + if (strcasecmp (name, "srtext") == 0) + srtext = 1; + } + } + sqlite3_free_table (results); + if (rs_srid && auth_name && auth_srid && ref_sys_name && proj4text + && srtext) + spatialite_rs = 1; + if (rs_srid && auth_name && auth_srid && ref_sys_name && proj4text) + spatialite_legacy_rs = 1; + if (rs_srid && auth_name && auth_srid && srtext) + fdo_rs = 1; +/* verifying the MetaData format */ + if (spatialite_legacy_gc && spatialite_legacy_rs) + return 1; + if (fdo_gc && fdo_rs) + return 2; + if (spatialite_gc && spatialite_rs) + return 3; + unknown: + return 0; +} + +static int +get_attached_table_layer_legacy (sqlite3 * handle, const char *db_prefix, + const char *table, const char *geometry, + gaiaVectorLayersListPtr list) +{ +/* fetching Table-based geometries */ + int ret; + char *sql; + const char *name; + int i; + char **results; + int rows; + int columns; + int f_table = 0; + int f_geometry = 0; + int type = 0; + int dims = 0; + int srid = 0; + int spatial_index = 0; + sqlite3_stmt *stmt; + int error = 0; + char *xdb; + +/* checking the GEOMETRY_COLUMN table */ + xdb = gaiaDoubleQuotedSql (db_prefix); + sql = sqlite3_mprintf ("PRAGMA \"%s\".table_info(geometry_columns)", xdb); + free (xdb); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "f_table_name") == 0) + f_table = 1; + if (strcasecmp (name, "f_geometry_column") == 0) + f_geometry = 1; + if (strcasecmp (name, "type") == 0) + type = 1; + if (strcasecmp (name, "coord_dimension") == 0) + dims = 1; + if (strcasecmp (name, "srid") == 0) + srid = 1; + if (strcasecmp (name, "spatial_index_enabled") == 0) + spatial_index = 1; + } + } + sqlite3_free_table (results); + if (f_table && f_geometry && type && dims && srid && spatial_index) + ; + else + return 1; + + + xdb = gaiaDoubleQuotedSql (db_prefix); + sql = + sqlite3_mprintf + ("SELECT f_table_name, f_geometry_column, type, coord_dimension, " + "srid, spatial_index_enabled FROM \"%s\".geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", xdb, table, geometry); + free (xdb); +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + error = 1; + goto stop; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + const char *table_name = + (const char *) sqlite3_column_text (stmt, 0); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 1); + const char *type = (const char *) sqlite3_column_text (stmt, 2); + const char *dims = (const char *) sqlite3_column_text (stmt, 3); + int srid = sqlite3_column_int (stmt, 4); + int spatial_index = sqlite3_column_int (stmt, 5); + int geometry_type = -1; + if (strcasecmp (type, "POINT") == 0) + geometry_type = 1; + if (strcasecmp (type, "LINESTRING") == 0) + geometry_type = 2; + if (strcasecmp (type, "POLYGON") == 0) + geometry_type = 3; + if (strcasecmp (type, "MULTIPOINT") == 0) + geometry_type = 4; + if (strcasecmp (type, "MULTILINESTRING") == 0) + geometry_type = 5; + if (strcasecmp (type, "MULTIPOLYGON") == 0) + geometry_type = 6; + if (strcasecmp (type, "GEOMETRYCOLLECTION") == 0) + geometry_type = 7; + if (strcasecmp (type, "GEOMETRY") == 0) + geometry_type = 0; + if (strcasecmp (dims, "XYZ") == 0 + || strcasecmp (dims, "3") == 0) + geometry_type += 1000; + if (strcasecmp (dims, "XYM") == 0) + geometry_type += 2000; + if (strcasecmp (dims, "XYZM") == 0 + || strcasecmp (dims, "4") == 0) + geometry_type += 3000; + addVectorLayer (list, "SpatialTable", table_name, + geometry_column, geometry_type, srid, + spatial_index); + } + else + error = 1; + } + ret = sqlite3_finalize (stmt); + + stop: + if (error) + return 0; + return 1; +} + +static int +get_attached_view_layer_legacy (sqlite3 * handle, const char *db_prefix, + const char *table, const char *geometry, + gaiaVectorLayersListPtr list) +{ +/* fetching View-based geometries */ + int ret; + char *sql; + const char *name; + int i; + char **results; + int rows; + int columns; + int f_table = 0; + int f_geometry = 0; + int type = 0; + int dims = 0; + int srid = 0; + int spatial_index = 0; + int view_name = 0; + int view_geometry = 0; + int fvw_table = 0; + int fvw_geometry = 0; + sqlite3_stmt *stmt; + int error = 0; + char *xdb; + +/* checking the GEOMETRY_COLUMN table */ + xdb = gaiaDoubleQuotedSql (db_prefix); + sql = sqlite3_mprintf ("PRAGMA \"%s\".table_info(geometry_columns)", xdb); + free (xdb); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "f_table_name") == 0) + f_table = 1; + if (strcasecmp (name, "f_geometry_column") == 0) + f_geometry = 1; + if (strcasecmp (name, "type") == 0) + type = 1; + if (strcasecmp (name, "coord_dimension") == 0) + dims = 1; + if (strcasecmp (name, "srid") == 0) + srid = 1; + if (strcasecmp (name, "spatial_index_enabled") == 0) + spatial_index = 1; + } + } + sqlite3_free_table (results); + if (f_table && f_geometry && type && dims && srid && spatial_index) + ; + else + return 1; + +/* checking the VIEWS_GEOMETRY_COLUMN table */ + xdb = gaiaDoubleQuotedSql (db_prefix); + sql = + sqlite3_mprintf ("PRAGMA \"%s\".table_info(views_geometry_columns)", + xdb); + free (xdb); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "view_name") == 0) + view_name = 1; + if (strcasecmp (name, "view_geometry") == 0) + view_geometry = 1; + if (strcasecmp (name, "f_table_name") == 0) + fvw_table = 1; + if (strcasecmp (name, "f_geometry_column") == 0) + fvw_geometry = 1; + } + } + sqlite3_free_table (results); + if (view_name && view_geometry && fvw_table && fvw_geometry) + ; + else + return 1; + + xdb = gaiaDoubleQuotedSql (db_prefix); + sql = + sqlite3_mprintf + ("SELECT a.view_name, a.view_geometry, b.type, b.coord_dimension, " + "b.srid, b.spatial_index_enabled FROM \"%s\".views_geometry_columns AS a " + "JOIN \"%s\".geometry_columns AS b ON (Lower(a.f_table_name) = Lower(b.f_table_name) " + "AND Lower(a.f_geometry_column) = Lower(b.f_geometry_column)) " + "WHERE Lower(a.view_name) = Lower(%Q) AND " + "Lower(a.view_geometry) = Lower(%Q)", xdb, xdb, table, geometry); + free (xdb); +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + error = 1; + goto stop; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + const char *table_name = + (const char *) sqlite3_column_text (stmt, 0); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 1); + const char *type = (const char *) sqlite3_column_text (stmt, 2); + const char *dims = (const char *) sqlite3_column_text (stmt, 3); + int srid = sqlite3_column_int (stmt, 4); + int spatial_index = sqlite3_column_int (stmt, 5); + int geometry_type = -1; + if (strcasecmp (type, "POINT") == 0) + geometry_type = 1; + if (strcasecmp (type, "LINESTRING") == 0) + geometry_type = 2; + if (strcasecmp (type, "POLYGON") == 0) + geometry_type = 3; + if (strcasecmp (type, "MULTIPOINT") == 0) + geometry_type = 4; + if (strcasecmp (type, "MULTILINESTRING") == 0) + geometry_type = 5; + if (strcasecmp (type, "MULTIPOLYGON") == 0) + geometry_type = 6; + if (strcasecmp (type, "GEOMETRYCOLLECTION") == 0) + geometry_type = 7; + if (strcasecmp (type, "GEOMETRY") == 0) + geometry_type = 0; + if (strcasecmp (dims, "XYZ") == 0 + || strcasecmp (dims, "3") == 0) + geometry_type += 1000; + if (strcasecmp (dims, "XYM") == 0) + geometry_type += 2000; + if (strcasecmp (dims, "XYZM") == 0 + || strcasecmp (dims, "4") == 0) + geometry_type += 3000; + addVectorLayer (list, "SpatialView", table_name, + geometry_column, geometry_type, srid, + spatial_index); + } + else + error = 1; + } + ret = sqlite3_finalize (stmt); + + stop: + if (error) + return 0; + return 1; +} + +static int +get_attached_table_extent_legacy (sqlite3 * handle, const char *db_prefix, + const char *table, const char *geometry, + gaiaVectorLayersListPtr list) +{ +/* fetching Table-based extents */ + int ret; + char *sql; + const char *name; + int i; + char **results; + int rows; + int columns; + int f_table = 0; + int f_geometry = 0; + int count = 0; + int minx = 0; + int miny = 0; + int maxx = 0; + int maxy = 0; + sqlite3_stmt *stmt; + char *xdb; + +/* checking the LAYER_STATISTICS table */ + xdb = gaiaDoubleQuotedSql (db_prefix); + sql = sqlite3_mprintf ("PRAGMA \"%s\".table_info(layer_statistics)", xdb); + free (xdb); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "table_name") == 0) + f_table = 1; + if (strcasecmp (name, "geometry_column") == 0) + f_geometry = 1; + if (strcasecmp (name, "row_count") == 0) + count = 1; + if (strcasecmp (name, "extent_min_x") == 0) + minx = 1; + if (strcasecmp (name, "extent_min_y") == 0) + miny = 1; + if (strcasecmp (name, "extent_max_x") == 0) + maxx = 1; + if (strcasecmp (name, "extent_max_y") == 0) + maxy = 1; + } + } + sqlite3_free_table (results); + if (f_table && f_geometry && count && minx && miny && maxx && maxy) + ; + else + return 1; + +/* querying the layer_statistics table */ + xdb = gaiaDoubleQuotedSql (db_prefix); + sql = + sqlite3_mprintf + ("SELECT table_name, geometry_column, row_count, extent_min_x, " + "extent_min_y, extent_max_x, extent_max_y FROM \"%s\".layer_statistics " + "WHERE Lower(table_name) = Lower(%Q) AND " + "Lower(geometry_column) = Lower(%Q)", xdb, table, geometry); + free (xdb); +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + int is_null = 0; + const char *table_name = + (const char *) sqlite3_column_text (stmt, 0); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 1); + int count; + double min_x; + double min_y; + double max_x; + double max_y; + if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) + is_null = 1; + else + count = sqlite3_column_int (stmt, 2); + if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) + is_null = 1; + else + min_x = sqlite3_column_double (stmt, 3); + if (sqlite3_column_type (stmt, 4) == SQLITE_NULL) + is_null = 1; + else + min_y = sqlite3_column_double (stmt, 4); + if (sqlite3_column_type (stmt, 5) == SQLITE_NULL) + is_null = 1; + else + max_x = sqlite3_column_double (stmt, 5); + if (sqlite3_column_type (stmt, 6) == SQLITE_NULL) + is_null = 1; + else + max_y = sqlite3_column_double (stmt, 6); + if (!is_null) + addVectorLayerExtent (list, table_name, geometry_column, + count, min_x, min_y, max_x, max_y); + } + } + ret = sqlite3_finalize (stmt); + stop: + return 1; +} + +static int +get_attached_view_extent_legacy (sqlite3 * handle, const char *db_prefix, + const char *table, const char *geometry, + gaiaVectorLayersListPtr list) +{ +/* fetching View-based extents */ + int ret; + char *sql; + const char *name; + int i; + char **results; + int rows; + int columns; + int f_table = 0; + int f_geometry = 0; + int count = 0; + int minx = 0; + int miny = 0; + int maxx = 0; + int maxy = 0; + sqlite3_stmt *stmt; + char *xdb; + +/* checking the VIEWS_LAYER_STATISTICS table */ + xdb = gaiaDoubleQuotedSql (db_prefix); + sql = + sqlite3_mprintf ("PRAGMA \"%s\".table_info(views_layer_statistics)", + xdb); + free (xdb); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "view_name") == 0) + f_table = 1; + if (strcasecmp (name, "view_geometry") == 0) + f_geometry = 1; + if (strcasecmp (name, "row_count") == 0) + count = 1; + if (strcasecmp (name, "extent_min_x") == 0) + minx = 1; + if (strcasecmp (name, "extent_min_y") == 0) + miny = 1; + if (strcasecmp (name, "extent_max_x") == 0) + maxx = 1; + if (strcasecmp (name, "extent_max_y") == 0) + maxy = 1; + } + } + sqlite3_free_table (results); + if (f_table && f_geometry && count && minx && miny && maxx && maxy) + ; + else + return 1; + +/* querying the views_layer_statistics table */ + + xdb = gaiaDoubleQuotedSql (db_prefix); + sql = + sqlite3_mprintf + ("SELECT view_name, view_geometry, row_count, extent_min_x, " + "extent_min_y, extent_max_x, extent_max_y FROM \"%s\".views_layer_statistics " + "WHERE Lower(view_name) = Lower(%Q) AND " + "Lower(view_geometry) = Lower(%Q)", xdb, table, geometry); + free (xdb); +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + int is_null = 0; + const char *table_name = + (const char *) sqlite3_column_text (stmt, 0); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 1); + int count; + double min_x; + double min_y; + double max_x; + double max_y; + if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) + is_null = 1; + else + count = sqlite3_column_int (stmt, 2); + if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) + is_null = 1; + else + min_x = sqlite3_column_double (stmt, 3); + if (sqlite3_column_type (stmt, 4) == SQLITE_NULL) + is_null = 1; + else + min_y = sqlite3_column_double (stmt, 4); + if (sqlite3_column_type (stmt, 5) == SQLITE_NULL) + is_null = 1; + else + max_x = sqlite3_column_double (stmt, 5); + if (sqlite3_column_type (stmt, 6) == SQLITE_NULL) + is_null = 1; + else + max_y = sqlite3_column_double (stmt, 6); + if (!is_null) + addVectorLayerExtent (list, table_name, geometry_column, + count, min_x, min_y, max_x, max_y); + } + } + ret = sqlite3_finalize (stmt); + stop: + return 1; +} + +static gaiaVectorLayersListPtr +attached_layer (sqlite3 * handle, const char *db_prefix, const char *table, + const char *geometry) +{ +/* attempting to support a "layer" from within an attached DB */ + gaiaVectorLayersListPtr list; + int metadata_version; + list = malloc (sizeof (gaiaVectorLayersList)); + list->First = NULL; + list->Last = NULL; + list->Current = NULL; + + metadata_version = check_spatial_metadata (handle, db_prefix); + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + if (!get_attached_layer_v4 (handle, db_prefix, table, geometry, list)) + { + gaiaFreeVectorLayersList (list); + return NULL; + } + if (list->First == NULL) + { + gaiaFreeVectorLayersList (list); + return NULL; + } + return list; + } + +/* legacy metadata style <= v.3.x.x */ + if (!get_attached_table_layer_legacy + (handle, db_prefix, table, geometry, list)) + goto error; + if (!get_attached_view_layer_legacy + (handle, db_prefix, table, geometry, list)) + goto error; + if (!get_attached_table_extent_legacy + (handle, db_prefix, table, geometry, list)) + goto error; + if (!get_attached_view_extent_legacy + (handle, db_prefix, table, geometry, list)) + goto error; + + if (list->First == NULL) + { + gaiaFreeVectorLayersList (list); + return NULL; + } + return list; + + error: + gaiaFreeVectorLayersList (list); + return NULL; +} + +SPATIALITE_DECLARE int +dump_shapefile (sqlite3 * sqlite, char *table, char *column, char *shp_path, + char *charset, char *geom_type, int verbose, int *xrows, + char *err_msg) +{ +/* SHAPEFILE dump */ + char *sql; + char *dummy; + int shape = -1; + int len; + int ret; + sqlite3_stmt *stmt; + int n_cols = 0; + int offset = 0; + int i; + int rows = 0; + char buf[256]; + char *xtable; + char *xcolumn; + const void *blob_value; + gaiaShapefilePtr shp = NULL; + gaiaDbfListPtr dbf_list; + gaiaDbfListPtr dbf_write; + gaiaDbfFieldPtr dbf_field; + gaiaVectorLayerPtr lyr = NULL; + gaiaLayerAttributeFieldPtr fld; + gaiaVectorLayersListPtr list; + char *db_prefix = NULL; + char *table_name = NULL; + char *xprefix; + char *xxtable; + struct auxdbf_list *auxdbf = NULL; + + if (geom_type) + { + /* normalizing required geometry type */ + if (strcasecmp ((char *) geom_type, "POINT") == 0) + shape = GAIA_POINT; + if (strcasecmp ((char *) geom_type, "LINESTRING") == 0) + shape = GAIA_LINESTRING; + if (strcasecmp ((char *) geom_type, "POLYGON") == 0) + shape = GAIA_POLYGON; + if (strcasecmp ((char *) geom_type, "MULTIPOINT") == 0) + shape = GAIA_POINT; + } +/* is the datasource a genuine registered Geometry ?? */ + list = gaiaGetVectorLayersList (sqlite, table, column, + GAIA_VECTORS_LIST_PESSIMISTIC); + if (list == NULL) + { + /* attempting to recover an unregistered Geometry */ + list = recover_unregistered_geometry (sqlite, table, column); + } + + if (list == NULL) + { + /* attempting to enucleate an eventual DB-prefix */ + shp_parse_table_name (table, &db_prefix, &table_name); + if (db_prefix != NULL && table_name != NULL) + list = attached_layer (sqlite, db_prefix, table_name, column); + } + + if (list != NULL) + lyr = list->First; + if (lyr == NULL) + { + gaiaFreeVectorLayersList (list); + if (!err_msg) + spatialite_e + ("Unable to detect GeometryType for \"%s\".\"%s\" ... sorry\n", + table, column); + else + sprintf (err_msg, + "Unable to detect GeometryType for \"%s\".\"%s\" ... sorry\n", + table, column); + return 0; + } + + switch (lyr->GeometryType) + { + case GAIA_VECTOR_POINT: + switch (lyr->Dimensions) + { + case GAIA_XY: + shape = GAIA_POINT; + break; + case GAIA_XY_Z: + shape = GAIA_POINTZ; + break; + case GAIA_XY_M: + shape = GAIA_POINTM; + break; + case GAIA_XY_Z_M: + shape = GAIA_POINTZM; + break; + }; + break; + case GAIA_VECTOR_LINESTRING: + switch (lyr->Dimensions) + { + case GAIA_XY: + shape = GAIA_LINESTRING; + break; + case GAIA_XY_Z: + shape = GAIA_LINESTRINGZ; + break; + case GAIA_XY_M: + shape = GAIA_LINESTRINGM; + break; + case GAIA_XY_Z_M: + shape = GAIA_LINESTRINGZM; + break; + }; + break; + case GAIA_VECTOR_POLYGON: + switch (lyr->Dimensions) + { + case GAIA_XY: + shape = GAIA_POLYGON; + break; + case GAIA_XY_Z: + shape = GAIA_POLYGONZ; + break; + case GAIA_XY_M: + shape = GAIA_POLYGONM; + break; + case GAIA_XY_Z_M: + shape = GAIA_POLYGONZM; + break; + }; + break; + case GAIA_VECTOR_MULTIPOINT: + switch (lyr->Dimensions) + { + case GAIA_XY: + shape = GAIA_MULTIPOINT; + break; + case GAIA_XY_Z: + shape = GAIA_MULTIPOINTZ; + break; + case GAIA_XY_M: + shape = GAIA_MULTIPOINTM; + break; + case GAIA_XY_Z_M: + shape = GAIA_MULTIPOINTZM; + break; + }; + break; + case GAIA_VECTOR_MULTILINESTRING: + switch (lyr->Dimensions) + { + case GAIA_XY: + shape = GAIA_MULTILINESTRING; + break; + case GAIA_XY_Z: + shape = GAIA_MULTILINESTRINGZ; + break; + case GAIA_XY_M: + shape = GAIA_MULTILINESTRINGM; + break; + case GAIA_XY_Z_M: + shape = GAIA_MULTILINESTRINGZM; + break; + }; + break; + case GAIA_VECTOR_MULTIPOLYGON: + switch (lyr->Dimensions) + { + case GAIA_XY: + shape = GAIA_MULTIPOLYGON; + break; + case GAIA_XY_Z: + shape = GAIA_MULTIPOLYGONZ; + break; + case GAIA_XY_M: + shape = GAIA_MULTIPOLYGONM; + break; + case GAIA_XY_Z_M: + shape = GAIA_MULTIPOLYGONZM; + break; + }; + break; + }; + + if (shape < 0) + { + if (!err_msg) + spatialite_e + ("Unable to detect GeometryType for \"%s\".\"%s\" ... sorry\n", + table, column); + else + sprintf (err_msg, + "Unable to detect GeometryType for \"%s\".\"%s\" ... sorry\n", + table, column); + return 0; + } + if (verbose) + spatialite_e + ("========\nDumping SQLite table '%s' into shapefile at '%s'\n", + table, shp_path); + /* preparing SQL statement */ + xtable = gaiaDoubleQuotedSql (table); + xcolumn = gaiaDoubleQuotedSql (column); + if (shape == GAIA_LINESTRING || shape == GAIA_LINESTRINGZ + || shape == GAIA_LINESTRINGM || shape == GAIA_LINESTRINGZM || + shape == GAIA_MULTILINESTRING || shape == GAIA_MULTILINESTRINGZ + || shape == GAIA_MULTILINESTRINGM || shape == GAIA_MULTILINESTRINGZM) + { + if (db_prefix != NULL && table_name != NULL) + { + xprefix = gaiaDoubleQuotedSql (db_prefix); + xxtable = gaiaDoubleQuotedSql (table_name); + sql = + sqlite3_mprintf + ("SELECT * FROM \"%s\".\"%s\" WHERE GeometryAliasType(\"%s\") = " + "'LINESTRING' OR GeometryAliasType(\"%s\") = 'MULTILINESTRING' " + "OR \"%s\" IS NULL", xprefix, xxtable, xcolumn, xcolumn, + xcolumn); + free (xprefix); + free (xxtable); + } + else + sql = + sqlite3_mprintf + ("SELECT * FROM \"%s\" WHERE GeometryAliasType(\"%s\") = " + "'LINESTRING' OR GeometryAliasType(\"%s\") = 'MULTILINESTRING' " + "OR \"%s\" IS NULL", xtable, xcolumn, xcolumn, xcolumn); + } + else if (shape == GAIA_POLYGON || shape == GAIA_POLYGONZ + || shape == GAIA_POLYGONM || shape == GAIA_POLYGONZM || + shape == GAIA_MULTIPOLYGON || shape == GAIA_MULTIPOLYGONZ + || shape == GAIA_MULTIPOLYGONM || shape == GAIA_MULTIPOLYGONZM) + { + if (db_prefix != NULL && table_name != NULL) + { + xprefix = gaiaDoubleQuotedSql (db_prefix); + xxtable = gaiaDoubleQuotedSql (table_name); + sql = + sqlite3_mprintf + ("SELECT * FROM \"%s\".\"%s\" WHERE GeometryAliasType(\"%s\") = " + "'POLYGON' OR GeometryAliasType(\"%s\") = 'MULTIPOLYGON'" + "OR \"%s\" IS NULL", xprefix, xxtable, xcolumn, xcolumn, + xcolumn); + free (xprefix); + free (xxtable); + } + else + sql = + sqlite3_mprintf + ("SELECT * FROM \"%s\" WHERE GeometryAliasType(\"%s\") = " + "'POLYGON' OR GeometryAliasType(\"%s\") = 'MULTIPOLYGON'" + "OR \"%s\" IS NULL", xtable, xcolumn, xcolumn, xcolumn); + } + else if (shape == GAIA_MULTIPOINT || shape == GAIA_MULTIPOINTZ + || shape == GAIA_MULTIPOINTM || shape == GAIA_MULTIPOINTZM) + { + if (db_prefix != NULL && table_name != NULL) + { + xprefix = gaiaDoubleQuotedSql (db_prefix); + xxtable = gaiaDoubleQuotedSql (table_name); + sql = + sqlite3_mprintf + ("SELECT * FROM \"%s\".\"%s\" WHERE GeometryAliasType(\"%s\") = " + "'POINT' OR GeometryAliasType(\"%s\") = 'MULTIPOINT'" + "OR \"%s\" IS NULL", xprefix, xxtable, xcolumn, xcolumn, + xcolumn); + free (xprefix); + free (xxtable); + } + else + sql = + sqlite3_mprintf + ("SELECT * FROM \"%s\" WHERE GeometryAliasType(\"%s\") = " + "'POINT' OR GeometryAliasType(\"%s\") = 'MULTIPOINT'" + "OR \"%s\" IS NULL", xtable, xcolumn, xcolumn, xcolumn); + } + else + { + if (db_prefix != NULL && table_name != NULL) + { + xprefix = gaiaDoubleQuotedSql (db_prefix); + xxtable = gaiaDoubleQuotedSql (table_name); + sql = + sqlite3_mprintf + ("SELECT * FROM \"%s\".\"%s\" WHERE GeometryAliasType(\"%s\") = " + "'POINT' OR \"%s\" IS NULL", xprefix, xxtable, xcolumn, + xcolumn); + free (xprefix); + free (xxtable); + } + else + sql = + sqlite3_mprintf + ("SELECT * FROM \"%s\" WHERE GeometryAliasType(\"%s\") = " + "'POINT' OR \"%s\" IS NULL", xtable, xcolumn, xcolumn); + } +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto sql_error; + + if (lyr->First == NULL) + { + /* the datasource is probably empty - zero rows */ + if (get_default_dbf_fields + (sqlite, xtable, db_prefix, table_name, &dbf_list)) + goto continue_exporting; + } + +/* preparing the DBF fields list */ + dbf_list = gaiaAllocDbfList (); + offset = 0; + fld = lyr->First; + while (fld) + { + int sql_type = SQLITE_NULL; + int max_len; + if (strcasecmp (fld->AttributeFieldName, column) == 0) + { + /* ignoring the Geometry itself */ + fld = fld->Next; + continue; + } + if (fld->IntegerValuesCount > 0 && fld->DoubleValuesCount == 0 + && fld->TextValuesCount == 0) + { + sql_type = SQLITE_INTEGER; + max_len = 18; + if (fld->IntRange) + max_len = + compute_max_int_length (fld->IntRange->MinValue, + fld->IntRange->MaxValue); + } + if (fld->DoubleValuesCount > 0 && fld->TextValuesCount == 0) + { + sql_type = SQLITE_FLOAT; + max_len = 19; + if (fld->DoubleRange) + max_len = + compute_max_dbl_length (fld->DoubleRange->MinValue, + fld->DoubleRange->MaxValue); + } + if (fld->TextValuesCount > 0) + { + sql_type = SQLITE_TEXT; + max_len = 255; + if (fld->MaxSize) + max_len = fld->MaxSize->MaxSize; + } + if (sql_type == SQLITE_NULL) + { + /* considering as TEXT(1) */ + sql_type = SQLITE_TEXT; + max_len = 1; + } + /* adding a DBF field */ + if (sql_type == SQLITE_TEXT) + { + if (max_len == 0) /* avoiding ZERO-length fields */ + max_len = 1; + gaiaAddDbfField (dbf_list, fld->AttributeFieldName, 'C', offset, + max_len, 0); + offset += max_len; + } + if (sql_type == SQLITE_FLOAT) + { + if (max_len > 19) + max_len = 19; + if (max_len < 8) + max_len = 8; + gaiaAddDbfField (dbf_list, fld->AttributeFieldName, 'N', offset, + max_len, 6); + offset += max_len; + } + if (sql_type == SQLITE_INTEGER) + { + if (max_len > 18) + max_len = 18; + gaiaAddDbfField (dbf_list, fld->AttributeFieldName, 'N', offset, + max_len, 0); + offset += max_len; + } + fld = fld->Next; + } + +/* resetting SQLite query */ + continue_exporting: + ret = sqlite3_reset (stmt); + if (ret != SQLITE_OK) + goto sql_error; +/* trying to open shapefile files */ + shp = gaiaAllocShapefile (); + gaiaOpenShpWrite (shp, shp_path, shape, dbf_list, "UTF-8", charset); + if (!(shp->Valid)) + goto no_file; +/* trying to export the .PRJ file */ + output_prj_file (sqlite, shp_path, table, column); + while (1) + { + /* scrolling the result set to dump data into shapefile */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + if (n_cols == 0) + n_cols = sqlite3_column_count (stmt); + rows++; + dbf_write = gaiaCloneDbfEntity (dbf_list); + auxdbf = alloc_auxdbf (dbf_write); + for (i = 0; i < n_cols; i++) + { + if (strcasecmp + ((char *) column, + (char *) sqlite3_column_name (stmt, i)) == 0) + { + /* this one is the internal BLOB encoded GEOMETRY to be exported */ + if (sqlite3_column_type (stmt, i) != SQLITE_BLOB) + { + /* this one is a NULL Geometry */ + dbf_write->Geometry = NULL; + } + else + { + blob_value = sqlite3_column_blob (stmt, i); + len = sqlite3_column_bytes (stmt, i); + dbf_write->Geometry = + gaiaFromSpatiaLiteBlobWkb (blob_value, + len); + } + } + dummy = (char *) sqlite3_column_name (stmt, i); + dbf_field = getDbfField (auxdbf, dummy); + if (!dbf_field) + continue; + if (sqlite3_column_type (stmt, i) == SQLITE_NULL) + { + /* handling NULL values */ + gaiaSetNullValue (dbf_field); + } + else + { + switch (dbf_field->Type) + { + case 'N': + if (sqlite3_column_type (stmt, i) == + SQLITE_INTEGER) + gaiaSetIntValue (dbf_field, + sqlite3_column_int64 + (stmt, i)); + else if (sqlite3_column_type (stmt, i) == + SQLITE_FLOAT) + gaiaSetDoubleValue (dbf_field, + sqlite3_column_double + (stmt, i)); + else + gaiaSetNullValue (dbf_field); + break; + case 'C': + if (sqlite3_column_type (stmt, i) == + SQLITE_TEXT) + { + dummy = + (char *) + sqlite3_column_text (stmt, i); + gaiaSetStrValue (dbf_field, dummy); + } + else if (sqlite3_column_type (stmt, i) == + SQLITE_INTEGER) + { + sprintf (buf, FRMT64, + sqlite3_column_int64 (stmt, + i)); + gaiaSetStrValue (dbf_field, buf); + } + else if (sqlite3_column_type (stmt, i) == + SQLITE_FLOAT) + { + sql = sqlite3_mprintf ("%1.6f", + sqlite3_column_double + (stmt, i)); + gaiaSetStrValue (dbf_field, sql); + sqlite3_free (sql); + } + else + gaiaSetNullValue (dbf_field); + break; + }; + } + } + free_auxdbf (auxdbf); + auxdbf = NULL; + if (!gaiaWriteShpEntity (shp, dbf_write)) + spatialite_e ("shapefile write error\n"); + gaiaFreeDbfList (dbf_write); + } + else + goto sql_error; + } + if (auxdbf != NULL) + free_auxdbf (auxdbf); + sqlite3_finalize (stmt); + gaiaFlushShpHeaders (shp); + gaiaFreeShapefile (shp); + free (xtable); + free (xcolumn); + gaiaFreeVectorLayersList (list); + if (verbose) + spatialite_e ("\nExported %d rows into SHAPEFILE\n========\n", rows); + if (xrows) + *xrows = rows; + if (err_msg) + sprintf (err_msg, "Exported %d rows into SHAPEFILE", rows); + if (db_prefix != NULL) + free (db_prefix); + if (table_name != NULL) + free (table_name); + return 1; + sql_error: +/* some SQL error occurred */ + if (auxdbf != NULL) + free_auxdbf (auxdbf); + sqlite3_finalize (stmt); + free (xtable); + free (xcolumn); + gaiaFreeVectorLayersList (list); + if (dbf_list) + gaiaFreeDbfList (dbf_list); + if (shp) + gaiaFreeShapefile (shp); + if (!err_msg) + spatialite_e ("SELECT failed: %s", sqlite3_errmsg (sqlite)); + else + sprintf (err_msg, "SELECT failed: %s", sqlite3_errmsg (sqlite)); + if (db_prefix != NULL) + free (db_prefix); + if (table_name != NULL) + free (table_name); + return 0; + no_file: +/* shapefile can't be created/opened */ + if (auxdbf != NULL) + free_auxdbf (auxdbf); + free (xtable); + free (xcolumn); + gaiaFreeVectorLayersList (list); + if (dbf_list) + gaiaFreeDbfList (dbf_list); + if (shp) + gaiaFreeShapefile (shp); + if (!err_msg) + spatialite_e ("ERROR: unable to open '%s' for writing", shp_path); + else + sprintf (err_msg, "ERROR: unable to open '%s' for writing", shp_path); + if (db_prefix != NULL) + free (db_prefix); + if (table_name != NULL) + free (table_name); + return 0; +} + +SPATIALITE_DECLARE int +load_dbf (sqlite3 * sqlite, char *dbf_path, char *table, char *charset, + int verbose, int *rows, char *err_msg) +{ + return load_dbf_ex (sqlite, dbf_path, table, NULL, charset, verbose, rows, + err_msg); +} + +SPATIALITE_DECLARE int +load_dbf_ex (sqlite3 * sqlite, char *dbf_path, char *table, char *pk_column, + char *charset, int verbose, int *rows, char *err_msg) +{ + sqlite3_stmt *stmt; + int ret; + char *errMsg = NULL; + char *sql; + char *dummy; + char *xname; + int already_exists = 0; + int sqlError = 0; + gaiaDbfPtr dbf = NULL; + gaiaDbfFieldPtr dbf_field; + int cnt; + int col_cnt; + int seed; + int len; + int dup; + int idup; + int current_row; + char **col_name = NULL; + int deleted; + char *qtable = NULL; + char *qpk_name = NULL; + char *pk_name = NULL; + int pk_autoincr = 1; + gaiaOutBuffer sql_statement; + int pk_type = SQLITE_INTEGER; + int pk_set; + qtable = gaiaDoubleQuotedSql (table); +/* checking if TABLE already exists */ + sql = sqlite3_mprintf ("SELECT name FROM sqlite_master WHERE " + "type = 'table' AND Lower(name) = Lower(%Q)", table); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + if (!err_msg) + spatialite_e ("load DBF error: <%s>\n", sqlite3_errmsg (sqlite)); + else + sprintf (err_msg, "load DBF error: <%s>\n", + sqlite3_errmsg (sqlite)); + if (qtable) + free (qtable); + if (qpk_name) + free (qpk_name); + return 0; + } + while (1) + { + /* scrolling the result set */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + already_exists = 1; + else + { + spatialite_e ("load DBF error: <%s>\n", + sqlite3_errmsg (sqlite)); + break; + } + } + sqlite3_finalize (stmt); + if (already_exists) + { + if (!err_msg) + spatialite_e ("load DBF error: table '%s' already exists\n", + table); + else + sprintf (err_msg, "load DBF error: table '%s' already exists\n", + table); + if (qtable) + free (qtable); + if (qpk_name) + free (qpk_name); + return 0; + } + dbf = gaiaAllocDbf (); + gaiaOpenDbfRead (dbf, dbf_path, charset, "UTF-8"); + if (!(dbf->Valid)) + { + if (!err_msg) + { + spatialite_e ("load DBF error: cannot open '%s'\n", dbf_path); + if (dbf->LastError) + spatialite_e ("\tcause: %s\n", dbf->LastError); + } + else + { + char extra[512]; + *extra = '\0'; + if (dbf->LastError) + sprintf (extra, "\n\tcause: %s", dbf->LastError); + sprintf (err_msg, "load DBF error: cannot open '%s'%s", + dbf_path, extra); + } + gaiaFreeDbf (dbf); + if (qtable) + free (qtable); + if (qpk_name) + free (qpk_name); + return 0; + } +/* checking for duplicate / illegal column names and antialising them */ + col_cnt = 0; + dbf_field = dbf->Dbf->First; + while (dbf_field) + { + /* counting DBF fields */ + col_cnt++; + dbf_field = dbf_field->Next; + } + col_name = malloc (sizeof (char *) * col_cnt); + cnt = 0; + seed = 0; + if (pk_column != NULL) + { + /* validating the Primary Key column */ + dbf_field = dbf->Dbf->First; + while (dbf_field) + { + if (strcasecmp (pk_column, dbf_field->Name) == 0) + { + /* ok, using this field as Primary Key */ + pk_name = pk_column; + pk_autoincr = 0; + switch (dbf_field->Type) + { + case 'C': + pk_type = SQLITE_TEXT; + break; + case 'N': + if (dbf_field->Decimals) + pk_type = SQLITE_FLOAT; + else + { + if (dbf_field->Length <= 18) + pk_type = SQLITE_INTEGER; + else + pk_type = SQLITE_FLOAT; + } + break; + case 'D': + pk_type = SQLITE_FLOAT; + break; + case 'F': + pk_type = SQLITE_FLOAT; + break; + case 'L': + pk_type = SQLITE_INTEGER; + break; + }; + } + dbf_field = dbf_field->Next; + } + } + if (pk_name == NULL) + { + if (pk_column != NULL) + pk_name = pk_column; + else + pk_name = "PK_UID"; + } + qpk_name = gaiaDoubleQuotedSql (pk_name); + dbf_field = dbf->Dbf->First; + while (dbf_field) + { + /* preparing column names */ + char *xdummy = NULL; + if (strcasecmp (pk_name, dbf_field->Name) == 0) + { + /* skipping the Primary Key field */ + dummy = dbf_field->Name; + len = strlen (dummy); + *(col_name + cnt) = malloc (len + 1); + strcpy (*(col_name + cnt), dummy); + cnt++; + dbf_field = dbf_field->Next; + continue; + } + dummy = dbf_field->Name; + dup = 0; + for (idup = 0; idup < cnt; idup++) + { + if (strcasecmp (dummy, *(col_name + idup)) == 0) + dup = 1; + } + if (dup) + { + xdummy = sqlite3_mprintf ("COL_%d", seed++); + dummy = xdummy; + } + len = strlen (dummy); + *(col_name + cnt) = malloc (len + 1); + strcpy (*(col_name + cnt), dummy); + if (xdummy) + free (xdummy); + cnt++; + dbf_field = dbf_field->Next; + } + if (verbose) + spatialite_e ("========\nLoading DBF at '%s' into SQLite table '%s'\n", + dbf_path, table); +/* starting a transaction */ + if (verbose) + spatialite_e ("\nBEGIN;\n"); + ret = sqlite3_exec (sqlite, "BEGIN", NULL, 0, &errMsg); + if (ret != SQLITE_OK) + { + if (!err_msg) + spatialite_e ("load DBF error: <%s>\n", errMsg); + else + sprintf (err_msg, "load DBF error: <%s>\n", errMsg); + sqlite3_free (errMsg); + sqlError = 1; + goto clean_up; + } +/* creating the Table */ + gaiaOutBufferInitialize (&sql_statement); + if (pk_type == SQLITE_TEXT) + { + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " + "TEXT PRIMARY KEY NOT NULL", qtable, qpk_name); + } + else if (pk_type == SQLITE_FLOAT) + { + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " + "DOUBLE PRIMARY KEY NOT NULL", qtable, + qpk_name); + } + else + { + if (pk_autoincr) + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " + "INTEGER PRIMARY KEY AUTOINCREMENT", + qtable, qpk_name); + else + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n\"%s\" " + "INTEGER NOT NULL PRIMARY KEY", qtable, + qpk_name); + } + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + cnt = 0; + dbf_field = dbf->Dbf->First; + while (dbf_field) + { + if (strcasecmp (pk_name, dbf_field->Name) == 0) + { + /* skipping the Primary Key field */ + dbf_field = dbf_field->Next; + cnt++; + continue; + } + xname = gaiaDoubleQuotedSql (*(col_name + cnt)); + sql = sqlite3_mprintf (",\n\"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + cnt++; + switch (dbf_field->Type) + { + case 'C': + gaiaAppendToOutBuffer (&sql_statement, " TEXT"); + break; + case 'N': + if (dbf_field->Decimals) + gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); + else + { + if (dbf_field->Length <= 18) + gaiaAppendToOutBuffer (&sql_statement, " INTEGER"); + else + gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); + } + break; + case 'D': + gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); + break; + case 'F': + gaiaAppendToOutBuffer (&sql_statement, " DOUBLE"); + break; + case 'L': + gaiaAppendToOutBuffer (&sql_statement, " INTEGER"); + break; + }; + dbf_field = dbf_field->Next; + } + gaiaAppendToOutBuffer (&sql_statement, ")"); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + { + if (verbose) + spatialite_e ("%s;\n", sql_statement.Buffer); + ret = sqlite3_exec (sqlite, sql_statement.Buffer, NULL, 0, &errMsg); + } + else + ret = SQLITE_ERROR; + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + { + if (!err_msg) + spatialite_e ("load DBF error: <%s>\n", errMsg); + else + sprintf (err_msg, "load DBF error: <%s>\n", errMsg); + sqlite3_free (errMsg); + sqlError = 1; + goto clean_up; + } + /* preparing the INSERT INTO parametrerized statement */ + sql = sqlite3_mprintf ("INSERT INTO \"%s\" (\"%s\"", qtable, qpk_name); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + cnt = 0; + dbf_field = dbf->Dbf->First; + while (dbf_field) + { + /* columns corresponding to some DBF attribute */ + if (strcasecmp (pk_name, dbf_field->Name) == 0) + { + /* skipping the Primary Key field */ + dbf_field = dbf_field->Next; + cnt++; + continue; + } + xname = gaiaDoubleQuotedSql (*(col_name + cnt++)); + sql = sqlite3_mprintf (",\"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + dbf_field = dbf_field->Next; + } + gaiaAppendToOutBuffer (&sql_statement, ")\nVALUES (?"); + dbf_field = dbf->Dbf->First; + while (dbf_field) + { + /* column values */ + if (strcasecmp (pk_name, dbf_field->Name) == 0) + { + /* skipping the Primary Key field */ + dbf_field = dbf_field->Next; + continue; + } + gaiaAppendToOutBuffer (&sql_statement, ", ?"); + dbf_field = dbf_field->Next; + } + gaiaAppendToOutBuffer (&sql_statement, ")"); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + ret = + sqlite3_prepare_v2 (sqlite, sql_statement.Buffer, + strlen (sql_statement.Buffer), &stmt, NULL); + else + ret = SQLITE_ERROR; + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + { + if (!err_msg) + spatialite_e ("load DBF error: <%s>\n", sqlite3_errmsg (sqlite)); + else + sprintf (err_msg, "load DBF error: <%s>\n", + sqlite3_errmsg (sqlite)); + sqlError = 1; + goto clean_up; + } + current_row = 0; + while (1) + { + /* inserting rows from DBF */ + ret = gaiaReadDbfEntity (dbf, current_row, &deleted); + if (!ret) + { + if (!(dbf->LastError)) /* normal DBF EOF */ + break; + if (!err_msg) + spatialite_e ("%s\n", dbf->LastError); + else + sprintf (err_msg, "%s\n", dbf->LastError); + sqlError = 1; + goto clean_up; + } + current_row++; + if (deleted) + { + /* skipping DBF deleted row */ + continue; + } + /* binding query params */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + pk_set = 0; + cnt = 0; + dbf_field = dbf->Dbf->First; + while (dbf_field) + { + /* Primary Key value */ + if (strcasecmp (pk_name, dbf_field->Name) == 0) + { + if (pk_type == SQLITE_TEXT) + sqlite3_bind_text (stmt, 1, + dbf_field->Value->TxtValue, + strlen (dbf_field->Value-> + TxtValue), SQLITE_STATIC); + else if (pk_type == SQLITE_FLOAT) + sqlite3_bind_double (stmt, 1, + dbf_field->Value->DblValue); + else + sqlite3_bind_int64 (stmt, 1, + dbf_field->Value->IntValue); + pk_set = 1; + } + dbf_field = dbf_field->Next; + } + if (!pk_set) + sqlite3_bind_int (stmt, 1, current_row); + cnt = 0; + dbf_field = dbf->Dbf->First; + while (dbf_field) + { + /* column values */ + if (strcasecmp (pk_name, dbf_field->Name) == 0) + { + /* skipping the Primary Key field */ + dbf_field = dbf_field->Next; + continue; + } + if (!(dbf_field->Value)) + sqlite3_bind_null (stmt, cnt + 2); + else + { + switch (dbf_field->Value->Type) + { + case GAIA_INT_VALUE: + sqlite3_bind_int64 (stmt, cnt + 2, + dbf_field->Value->IntValue); + break; + case GAIA_DOUBLE_VALUE: + sqlite3_bind_double (stmt, cnt + 2, + dbf_field->Value->DblValue); + break; + case GAIA_TEXT_VALUE: + sqlite3_bind_text (stmt, cnt + 2, + dbf_field->Value->TxtValue, + strlen (dbf_field-> + Value->TxtValue), + SQLITE_STATIC); + break; + default: + sqlite3_bind_null (stmt, cnt + 2); + break; + } + } + cnt++; + dbf_field = dbf_field->Next; + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + if (!err_msg) + spatialite_e ("load DBF error: <%s>\n", + sqlite3_errmsg (sqlite)); + else + sprintf (err_msg, "load DBF error: <%s>\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + sqlError = 1; + goto clean_up; + } + } + sqlite3_finalize (stmt); + clean_up: + if (qtable) + free (qtable); + if (qpk_name) + free (qpk_name); + gaiaFreeDbf (dbf); + if (col_name) + { + /* releasing memory allocation for column names */ + for (cnt = 0; cnt < col_cnt; cnt++) + free (*(col_name + cnt)); + free (col_name); + } + if (sqlError) + { + /* some error occurred - ROLLBACK */ + if (verbose) + spatialite_e ("ROLLBACK;\n"); + ret = sqlite3_exec (sqlite, "ROLLBACK", NULL, 0, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("load DBF error: <%s>\n", errMsg); + sqlite3_free (errMsg); + }; + if (rows) + *rows = current_row; + if (qtable) + free (qtable); + if (qpk_name) + free (qpk_name); + return 0; + } + else + { + /* ok - confirming pending transaction - COMMIT */ + if (verbose) + spatialite_e ("COMMIT;\n"); + ret = sqlite3_exec (sqlite, "COMMIT", NULL, 0, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("load DBF error: <%s>\n", errMsg); + sqlite3_free (errMsg); + return 0; + } + if (rows) + *rows = current_row; + if (verbose) + spatialite_e ("\nInserted %d rows into '%s' from DBF\n========\n", + current_row, table); + if (err_msg) + sprintf (err_msg, "Inserted %d rows into '%s' from DBF", + current_row, table); + return 1; + } +} + +SPATIALITE_DECLARE int +dump_dbf (sqlite3 * sqlite, char *table, char *dbf_path, char *charset, + char *err_msg) +{ +/* DBF dump */ + int rows; + int i; + char *sql; + char *xtable; + sqlite3_stmt *stmt; + int row1 = 0; + int n_cols = 0; + int offset = 0; + int type; + gaiaDbfPtr dbf = NULL; + gaiaDbfListPtr dbf_export_list = NULL; + gaiaDbfListPtr dbf_list = NULL; + gaiaDbfListPtr dbf_write; + gaiaDbfFieldPtr dbf_field; + int *max_length = NULL; + int *sql_type = NULL; + char *dummy; + char buf[256]; + int len; + int ret; + char *db_prefix = NULL; + char *table_name = NULL; + struct auxdbf_list *auxdbf = NULL; + + shp_parse_table_name (table, &db_prefix, &table_name); +/* +/ preparing SQL statement +*/ + if (db_prefix != NULL && table_name != NULL) + { + char *xdb = gaiaDoubleQuotedSql (db_prefix); + char *xxtable = gaiaDoubleQuotedSql (table_name); + sql = sqlite3_mprintf ("SELECT * FROM \"%s\".\"%s\"", xdb, xxtable); + free (xdb); + free (xxtable); + } + else + { + xtable = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("SELECT * FROM \"%s\"", xtable); + } +/* +/ compiling SQL prepared statement +*/ + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto sql_error; + rows = 0; + while (1) + { + /* + / Pass I - scrolling the result set to compute real DBF attributes' sizes and types + */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a result set row */ + row1++; + if (n_cols == 0) + { + /* this one is the first row, so we are going to prepare the DBF Fields list */ + n_cols = sqlite3_column_count (stmt); + dbf_export_list = gaiaAllocDbfList (); + max_length = (int *) malloc (sizeof (int) * n_cols); + sql_type = (int *) malloc (sizeof (int) * n_cols); + for (i = 0; i < n_cols; i++) + { + /* initializes the DBF export fields */ + dummy = (char *) sqlite3_column_name (stmt, i); + gaiaAddDbfField (dbf_export_list, dummy, '\0', 0, 0, + 0); + max_length[i] = 0; + sql_type[i] = SQLITE_NULL; + } + } + for (i = 0; i < n_cols; i++) + { + /* update the DBF export fields analyzing fetched data */ + type = sqlite3_column_type (stmt, i); + if (type == SQLITE_NULL || type == SQLITE_BLOB) + continue; + if (type == SQLITE_TEXT) + { + len = sqlite3_column_bytes (stmt, i); + sql_type[i] = SQLITE_TEXT; + if (len > max_length[i]) + max_length[i] = len; + } + else if (type == SQLITE_FLOAT + && sql_type[i] != SQLITE_TEXT) + sql_type[i] = SQLITE_FLOAT; /* promoting a numeric column to be DOUBLE */ + else if (type == SQLITE_INTEGER + && (sql_type[i] == SQLITE_NULL + || sql_type[i] == SQLITE_INTEGER)) + sql_type[i] = SQLITE_INTEGER; /* promoting a null column to be INTEGER */ + if (type == SQLITE_INTEGER && max_length[i] < 18) + max_length[i] = 18; + if (type == SQLITE_FLOAT && max_length[i] < 24) + max_length[i] = 24; + } + } + else + goto sql_error; + } + if (!row1) + goto empty_result_set; + i = 0; + offset = 0; + dbf_list = gaiaAllocDbfList (); + dbf_field = dbf_export_list->First; + while (dbf_field) + { + /* preparing the final DBF attribute list */ + if (sql_type[i] == SQLITE_NULL || sql_type[i] == SQLITE_BLOB) + { + i++; + dbf_field = dbf_field->Next; + continue; + } + if (sql_type[i] == SQLITE_TEXT) + { + gaiaAddDbfField (dbf_list, dbf_field->Name, 'C', offset, + max_length[i], 0); + offset += max_length[i]; + } + if (sql_type[i] == SQLITE_FLOAT) + { + gaiaAddDbfField (dbf_list, dbf_field->Name, 'N', offset, 19, 6); + offset += 19; + } + if (sql_type[i] == SQLITE_INTEGER) + { + gaiaAddDbfField (dbf_list, dbf_field->Name, 'N', offset, 18, 0); + offset += 18; + } + i++; + dbf_field = dbf_field->Next; + } + free (max_length); + free (sql_type); + gaiaFreeDbfList (dbf_export_list); + dbf_export_list = NULL; + + continue_exporting: +/* resetting SQLite query */ + ret = sqlite3_reset (stmt); + if (ret != SQLITE_OK) + goto sql_error; +/* trying to open the DBF file */ + dbf = gaiaAllocDbf (); +/* xfering export-list ownership */ + dbf->Dbf = dbf_list; + dbf_list = NULL; + gaiaOpenDbfWrite (dbf, dbf_path, "UTF-8", charset); + if (!(dbf->Valid)) + goto no_file; + while (1) + { + /* Pass II - scrolling the result set to dump data into DBF */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + rows++; + dbf_write = gaiaCloneDbfEntity (dbf->Dbf); + auxdbf = alloc_auxdbf (dbf_write); + for (i = 0; i < n_cols; i++) + { + dummy = (char *) sqlite3_column_name (stmt, i); + dbf_field = getDbfField (auxdbf, dummy); + if (!dbf_field) + continue; + if (sqlite3_column_type (stmt, i) == SQLITE_NULL + || sqlite3_column_type (stmt, i) == SQLITE_BLOB) + { + /* handling NULL values */ + gaiaSetNullValue (dbf_field); + } + else + { + switch (dbf_field->Type) + { + case 'N': + if (sqlite3_column_type (stmt, i) == + SQLITE_INTEGER) + gaiaSetIntValue (dbf_field, + sqlite3_column_int64 + (stmt, i)); + else if (sqlite3_column_type (stmt, i) == + SQLITE_FLOAT) + gaiaSetDoubleValue (dbf_field, + sqlite3_column_double + (stmt, i)); + else + gaiaSetNullValue (dbf_field); + break; + case 'C': + if (sqlite3_column_type (stmt, i) == + SQLITE_TEXT) + { + dummy = (char *) + sqlite3_column_text (stmt, i); + gaiaSetStrValue (dbf_field, dummy); + } + else if (sqlite3_column_type (stmt, i) == + SQLITE_INTEGER) + { + sprintf (buf, FRMT64, + sqlite3_column_int64 (stmt, + i)); + gaiaSetStrValue (dbf_field, buf); + } + else if (sqlite3_column_type (stmt, i) == + SQLITE_FLOAT) + { + sql = sqlite3_mprintf ("%1.6f", + sqlite3_column_double + (stmt, i)); + gaiaSetStrValue (dbf_field, sql); + sqlite3_free (sql); + } + else + gaiaSetNullValue (dbf_field); + break; + }; + } + } + free_auxdbf (auxdbf); + auxdbf = NULL; + if (!gaiaWriteDbfEntity (dbf, dbf_write)) + spatialite_e ("DBF write error\n"); + gaiaFreeDbfList (dbf_write); + } + else + goto sql_error; + } + if (auxdbf != NULL) + free_auxdbf (auxdbf); + sqlite3_finalize (stmt); + gaiaFlushDbfHeader (dbf); + gaiaFreeDbf (dbf); + free (xtable); + if (!err_msg) + spatialite_e ("Exported %d rows into the DBF file\n", rows); + else + sprintf (err_msg, "Exported %d rows into the DBF file\n", rows); + if (db_prefix != NULL) + free (db_prefix); + if (table_name != NULL) + free (table_name); + return 1; + sql_error: +/* some SQL error occurred */ + if (auxdbf != NULL) + free_auxdbf (auxdbf); + free (xtable); + sqlite3_finalize (stmt); + if (dbf_export_list) + gaiaFreeDbfList (dbf_export_list); + if (dbf_list) + gaiaFreeDbfList (dbf_list); + if (dbf) + gaiaFreeDbf (dbf); + if (!err_msg) + spatialite_e ("dump DBF file error: %s\n", sqlite3_errmsg (sqlite)); + else + sprintf (err_msg, "dump DBF file error: %s\n", sqlite3_errmsg (sqlite)); + if (db_prefix != NULL) + free (db_prefix); + if (table_name != NULL) + free (table_name); + return 0; + no_file: +/* DBF can't be created/opened */ + if (auxdbf != NULL) + free_auxdbf (auxdbf); + free (xtable); + if (dbf_export_list) + gaiaFreeDbfList (dbf_export_list); + if (dbf_list) + gaiaFreeDbfList (dbf_list); + if (dbf) + gaiaFreeDbf (dbf); + if (!err_msg) + spatialite_e ("ERROR: unable to open '%s' for writing\n", dbf_path); + else + sprintf (err_msg, "ERROR: unable to open '%s' for writing\n", dbf_path); + if (db_prefix != NULL) + free (db_prefix); + if (table_name != NULL) + free (table_name); + return 0; + empty_result_set: +/* the result set is empty - nothing to do */ + if (auxdbf != NULL) + free_auxdbf (auxdbf); + if (get_default_dbf_fields + (sqlite, xtable, db_prefix, table_name, &dbf_list)) + goto continue_exporting; + free (xtable); + sqlite3_finalize (stmt); + if (dbf_export_list) + gaiaFreeDbfList (dbf_export_list); + if (dbf_list) + gaiaFreeDbfList (dbf_list); + if (dbf) + gaiaFreeDbf (dbf); + if (!err_msg) + spatialite_e + ("The SQL SELECT returned an empty result set ... there is nothing to export ...\n"); + else + sprintf (err_msg, + "The SQL SELECT returned an empty result set ... there is nothing to export ...\n"); + if (db_prefix != NULL) + free (db_prefix); + if (table_name != NULL) + free (table_name); + return 0; +} + +#endif /* end ICONV (SHP and DBF) */ + +SPATIALITE_DECLARE int +is_kml_constant (sqlite3 * sqlite, char *table, char *column) +{ +/* checking a possible column name for KML dump */ + char *sql; + char *xname; + int ret; + int k = 1; + const char *name; + char **results; + int rows; + int columns; + int i; + char *errMsg = NULL; + + xname = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 1; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, column) == 0) + k = 0; + } + } + sqlite3_free_table (results); + return k; +} + +SPATIALITE_DECLARE int +dump_kml (sqlite3 * sqlite, char *table, char *geom_col, char *kml_path, + char *name_col, char *desc_col, int precision) +{ +/* dumping a geometry table as KML */ + char *sql; + char *xname; + char *xdesc; + char *xgeom_col; + char *xtable; + sqlite3_stmt *stmt = NULL; + FILE *out = NULL; + int ret; + int rows = 0; + int is_const = 1; + +/* opening/creating the KML file */ + out = fopen (kml_path, "wb"); + if (!out) + goto no_file; + +/* preparing SQL statement */ + if (name_col == NULL) + xname = sqlite3_mprintf ("%Q", "name"); + else + { + is_const = is_kml_constant (sqlite, table, name_col); + if (is_const) + xname = sqlite3_mprintf ("%Q", name_col); + else + { + xname = gaiaDoubleQuotedSql (name_col); + sql = sqlite3_mprintf ("\"%s\"", xname); + free (xname); + xname = sql; + } + } + if (desc_col == NULL) + xdesc = sqlite3_mprintf ("%Q", "description"); + else + { + is_const = is_kml_constant (sqlite, table, desc_col); + if (is_const) + xdesc = sqlite3_mprintf ("%Q", desc_col); + else + { + xdesc = gaiaDoubleQuotedSql (desc_col); + sql = sqlite3_mprintf ("\"%s\"", xdesc); + free (xdesc); + xdesc = sql; + } + } + xgeom_col = gaiaDoubleQuotedSql (geom_col); + xtable = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("SELECT AsKML(%s, %s, %s, %d) FROM \"%s\" " + "WHERE \"%s\" IS NOT NULL", xname, xdesc, + xgeom_col, precision, xtable, xgeom_col); + sqlite3_free (xname); + sqlite3_free (xdesc); + free (xgeom_col); + free (xtable); +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto sql_error; + + while (1) + { + /* scrolling the result set */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a result set row */ + if (rows == 0) + { + fprintf (out, + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n"); + fprintf (out, + "<kml xmlns=\"http://www.opengis.net/kml/2.2\">\r\n"); + fprintf (out, "<Document>\r\n"); + } + rows++; + fprintf (out, "\t%s\r\n", sqlite3_column_text (stmt, 0)); + } + else + goto sql_error; + } + if (!rows) + goto empty_result_set; + + + fprintf (out, "</Document>\r\n"); + fprintf (out, "</kml>\r\n"); + sqlite3_finalize (stmt); + fclose (out); + return 1; + + sql_error: +/* some SQL error occurred */ + if (stmt) + sqlite3_finalize (stmt); + if (out) + fclose (out); + spatialite_e ("Dump KML error: %s\n", sqlite3_errmsg (sqlite)); + return 0; + no_file: +/* KML file can't be created/opened */ + if (stmt) + sqlite3_finalize (stmt); + if (out) + fclose (out); + spatialite_e ("ERROR: unable to open '%s' for writing\n", kml_path); + return 0; + empty_result_set: +/* the result set is empty - nothing to do */ + if (stmt) + sqlite3_finalize (stmt); + if (out) + fclose (out); + spatialite_e + ("The SQL SELECT returned an empty result set\n... there is nothing to export ...\n"); + return 0; +} + +static int +is_table (sqlite3 * sqlite, const char *table) +{ +/* check if this one really is a TABLE */ + char *sql; + int ret; + char **results; + int rows; + int columns; + char *errMsg = NULL; + int ok = 0; + + sql = sqlite3_mprintf ("SELECT tbl_name FROM sqlite_master " + "WHERE type = 'table' AND Lower(tbl_name) = Lower(%Q)", + table); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("SQLite SQL error: %s\n", errMsg); + sqlite3_free (errMsg); + return ok; + } + if (rows < 1) + ; + else + ok = 1; + sqlite3_free_table (results); + return ok; +} + +SPATIALITE_DECLARE void +check_duplicated_rows (sqlite3 * sqlite, char *table, int *dupl_count) +{ +/* Checking a Table for Duplicate rows */ + char *sql; + int first = 1; + char *xname; + int pk; + int ret; + char **results; + int rows; + int columns; + int i; + char *errMsg = NULL; + sqlite3_stmt *stmt = NULL; + gaiaOutBuffer sql_statement; + gaiaOutBuffer col_list; + + *dupl_count = 0; + + if (is_table (sqlite, table) == 0) + { + spatialite_e (".chkdupl %s: no such table\n", table); + return; + } +/* extracting the column names (excluding any Primary Key) */ + gaiaOutBufferInitialize (&col_list); + xname = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("SQLite SQL error: %s\n", errMsg); + sqlite3_free (errMsg); + return; + } + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + sql = results[(i * columns) + 1]; + pk = atoi (results[(i * columns) + 5]); + if (!pk) + { + xname = gaiaDoubleQuotedSql (sql); + if (first) + { + sql = sqlite3_mprintf ("\"%s\"", xname); + first = 0; + } + else + sql = sqlite3_mprintf (", \"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&col_list, sql); + sqlite3_free (sql); + } + } + } + sqlite3_free_table (results); + /* preparing the SQL statement */ + gaiaOutBufferInitialize (&sql_statement); + gaiaAppendToOutBuffer (&sql_statement, + "SELECT Count(*) AS \"[dupl-count]\", "); + if (col_list.Error == 0 && col_list.Buffer != NULL) + gaiaAppendToOutBuffer (&sql_statement, col_list.Buffer); + xname = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("\nFROM \"%s\"\nGROUP BY ", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + if (col_list.Error == 0 && col_list.Buffer != NULL) + gaiaAppendToOutBuffer (&sql_statement, col_list.Buffer); + gaiaOutBufferReset (&col_list); + gaiaAppendToOutBuffer (&sql_statement, "\nHAVING \"[dupl-count]\" > 1"); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + { + ret = + sqlite3_prepare_v2 (sqlite, sql_statement.Buffer, + strlen (sql_statement.Buffer), &stmt, NULL); + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); + return; + } + } + while (1) + { + /* fetching the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* fetching a row */ + *dupl_count += sqlite3_column_int (stmt, 0) - 1; + } + else + { + spatialite_e ("SQL error: %s", sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + return; + } + } + sqlite3_finalize (stmt); + if (*dupl_count) + spatialite_e ("%d duplicated rows found !!!\n", *dupl_count); + else + spatialite_e ("No duplicated rows have been identified\n"); +} + +static int +do_delete_duplicates2 (sqlite3 * sqlite, sqlite3_int64 rowid, + sqlite3_stmt * stmt1) +{ +/* deleting duplicate rows [actual delete] */ + int ret; + + sqlite3_reset (stmt1); + sqlite3_clear_bindings (stmt1); + sqlite3_bind_int64 (stmt1, 1, rowid); + ret = sqlite3_step (stmt1); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); + return 0; + } + return 1; +} + +static int +do_delete_duplicates (sqlite3 * sqlite, const char *sql1, const char *sql2, + int *count) +{ +/* deleting duplicate rows */ + struct resultset_comparator *rs_obj = NULL; + sqlite3_stmt *stmt1 = NULL; + sqlite3_stmt *stmt2 = NULL; + int ret; + int cnt = 0; + char *sql_err = NULL; + + *count = 0; + +/* the complete operation is handled as an unique SQL Transaction */ + ret = sqlite3_exec (sqlite, "BEGIN", NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + spatialite_e ("BEGIN TRANSACTION error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } +/* preparing the main SELECT statement */ + ret = sqlite3_prepare_v2 (sqlite, sql1, strlen (sql1), &stmt1, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); + return 0; + } +/* preparing the DELETE statement */ + ret = sqlite3_prepare_v2 (sqlite, sql2, strlen (sql2), &stmt2, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); + goto error; + } + + rs_obj = create_resultset_comparator (sqlite3_column_count (stmt1) - 1); + while (1) + { + /* fetching the result set rows */ + ret = sqlite3_step (stmt1); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* fetching a row */ + save_row_from_resultset (rs_obj, stmt1); + if (resultset_rows_equals (rs_obj)) + { + if (do_delete_duplicates2 + (sqlite, get_current_resultset_rowid (rs_obj), stmt2)) + { + cnt += 1; + reset_resultset_current_row (rs_obj); + continue; + } + else + goto error; + } + } + else + { + spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); + goto error; + } + swap_resultset_rows (rs_obj); + } + + sqlite3_finalize (stmt1); + sqlite3_finalize (stmt2); + destroy_resultset_comparator (rs_obj); + +/* confirm the still pending Transaction */ + ret = sqlite3_exec (sqlite, "COMMIT", NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + spatialite_e ("COMMIT TRANSACTION error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + + *count = cnt; + return 1; + + error: + *count = 0; + if (stmt1) + sqlite3_finalize (stmt1); + if (stmt2) + sqlite3_finalize (stmt2); + +/* performing a ROLLBACK anyway */ + ret = sqlite3_exec (sqlite, "ROLLBACK", NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + spatialite_e ("ROLLBACK TRANSACTION error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + + return 0; +} + +SPATIALITE_DECLARE void +remove_duplicated_rows_ex (sqlite3 * sqlite, char *table, int *removed) +{ +/* attempting to delete Duplicate rows from a table */ + char *sql; + char *sql2; + int first = 1; + char *xname; + int pk; + int ret; + char **results; + int rows; + int columns; + int i; + char *errMsg = NULL; + int count; + gaiaOutBuffer sql_statement; + gaiaOutBuffer col_list; + + if (removed != NULL) + *removed = 0; + + if (is_table (sqlite, table) == 0) + { + spatialite_e (".remdupl %s: no such table\n", table); + return; + } +/* extracting the column names (excluding any Primary Key) */ + gaiaOutBufferInitialize (&col_list); + xname = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("SQLite SQL error: %s\n", errMsg); + sqlite3_free (errMsg); + return; + } + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + sql = results[(i * columns) + 1]; + pk = atoi (results[(i * columns) + 5]); + if (!pk) + { + if (first) + first = 0; + else + gaiaAppendToOutBuffer (&col_list, ", "); + xname = gaiaDoubleQuotedSql (sql); + sql = sqlite3_mprintf ("\"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&col_list, sql); + sqlite3_free (sql); + } + } + } + sqlite3_free_table (results); +/* preparing the SQL statement (identifying duplicated rows) */ + gaiaOutBufferInitialize (&sql_statement); + gaiaAppendToOutBuffer (&sql_statement, "SELECT ROWID, "); + if (col_list.Error == 0 && col_list.Buffer != NULL) + gaiaAppendToOutBuffer (&sql_statement, col_list.Buffer); + xname = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("\nFROM \"%s\"\nORDER BY ", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + if (col_list.Error == 0 && col_list.Buffer != NULL) + gaiaAppendToOutBuffer (&sql_statement, col_list.Buffer); + gaiaOutBufferReset (&col_list); + gaiaAppendToOutBuffer (&sql_statement, ", ROWID"); +/* preparing the SQL statement [delete] */ + xname = gaiaDoubleQuotedSql (table); + sql2 = sqlite3_mprintf ("DELETE FROM \"%s\" WHERE ROWID = ?", xname); + free (xname); + + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + sql = sql_statement.Buffer; + else + sql = "NULL-SELECT"; + if (do_delete_duplicates (sqlite, sql, sql2, &count)) + { + if (removed == NULL) + { + if (!count) + spatialite_e ("No duplicated rows have been identified\n"); + else + spatialite_e ("%d duplicated rows deleted from: %s\n", + count, table); + } + else + *removed = count; + } + gaiaOutBufferReset (&sql_statement); + sqlite3_free (sql2); +} + +SPATIALITE_DECLARE void +remove_duplicated_rows (sqlite3 * sqlite, char *table) +{ +/* attempting to delete Duplicate rows from a table */ + remove_duplicated_rows_ex (sqlite, table, NULL); +} + +static int +check_elementary (sqlite3 * sqlite, const char *inTable, const char *geom, + const char *outTable, const char *pKey, const char *multiID, + char *type, int *srid, char *coordDims) +{ +/* preliminary check for ELEMENTARY GEOMETRIES */ + char *sql; + char *xtable; + int ret; + char **results; + int rows; + int columns; + char *errMsg = NULL; + int ok = 0; + int i; + char *gtp; + char *dims; + int metadata_version = checkSpatialMetaData (sqlite); + +/* fetching metadata */ + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + sql = sqlite3_mprintf ("SELECT geometry_type, srid " + "FROM geometry_columns WHERE Lower(f_table_name) = Lower(%Q) " + "AND Lower(f_geometry_column) = Lower(%Q)", + inTable, geom); + } + else + { + /* legacy metadata style <= v.3.1.0 */ + sql = sqlite3_mprintf ("SELECT type, coord_dimension, srid " + "FROM geometry_columns WHERE Lower(f_table_name) = Lower(%Q) " + "AND Lower(f_geometry_column) = Lower(%Q)", + inTable, geom); + } + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", errMsg); + sqlite3_free (errMsg); + return 0; + } + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + gtp = "UNKNOWN"; + dims = "UNKNOWN"; + switch (atoi (results[(i * columns) + 0])) + { + case 0: + gtp = "GEOMETRY"; + dims = "XY"; + break; + case 1: + gtp = "POINT"; + dims = "XY"; + break; + case 2: + gtp = "LINESTRING"; + dims = "XY"; + break; + case 3: + gtp = "POLYGON"; + dims = "XY"; + break; + case 4: + gtp = "MULTIPOINT"; + dims = "XY"; + break; + case 5: + gtp = "MULTILINESTRING"; + dims = "XY"; + break; + case 6: + gtp = "MULTIPOLYGON"; + dims = "XY"; + break; + case 7: + gtp = "GEOMETRYCOLLECTION"; + dims = "XY"; + break; + case 1000: + gtp = "GEOMETRY"; + dims = "XYZ"; + break; + case 1001: + gtp = "POINT"; + dims = "XYZ"; + break; + case 1002: + gtp = "LINESTRING"; + dims = "XYZ"; + break; + case 1003: + gtp = "POLYGON"; + dims = "XYZ"; + break; + case 1004: + gtp = "MULTIPOINT"; + dims = "XYZ"; + break; + case 1005: + gtp = "MULTILINESTRING"; + dims = "XYZ"; + break; + case 1006: + gtp = "MULTIPOLYGON"; + dims = "XYZ"; + break; + case 1007: + gtp = "GEOMETRYCOLLECTION"; + dims = "XYZ"; + break; + case 2000: + gtp = "GEOMETRY"; + dims = "XYM"; + break; + case 2001: + gtp = "POINT"; + dims = "XYM"; + break; + case 2002: + gtp = "LINESTRING"; + dims = "XYM"; + break; + case 2003: + gtp = "POLYGON"; + dims = "XYM"; + break; + case 2004: + gtp = "MULTIPOINT"; + dims = "XYM"; + break; + case 2005: + gtp = "MULTILINESTRING"; + dims = "XYM"; + break; + case 2006: + gtp = "MULTIPOLYGON"; + dims = "XYM"; + break; + case 2007: + gtp = "GEOMETRYCOLLECTION"; + dims = "XYM"; + break; + case 3000: + gtp = "GEOMETRY"; + dims = "XYZM"; + break; + case 3001: + gtp = "POINT"; + dims = "XYZM"; + break; + case 3002: + gtp = "LINESTRING"; + dims = "XYZM"; + break; + case 3003: + gtp = "POLYGON"; + dims = "XYZM"; + break; + case 3004: + gtp = "MULTIPOINT"; + dims = "XYZM"; + break; + case 3005: + gtp = "MULTILINESTRING"; + dims = "XYZM"; + break; + case 3006: + gtp = "MULTIPOLYGON"; + dims = "XYZM"; + break; + case 3007: + gtp = "GEOMETRYCOLLECTION"; + dims = "XYZM"; + break; + }; + *srid = atoi (results[(i * columns) + 1]); + } + else + { + /* legacy metadata style <= v.3.1.0 */ + gtp = results[(i * columns) + 0]; + dims = results[(i * columns) + 1]; + *srid = atoi (results[(i * columns) + 2]); + } + if (strcasecmp (gtp, "POINT") == 0 + || strcasecmp (gtp, "MULTIPOINT") == 0) + strcpy (type, "POINT"); + else if (strcasecmp (gtp, "LINESTRING") == 0 + || strcasecmp (gtp, "MULTILINESTRING") == 0) + strcpy (type, "LINESTRING"); + else if (strcasecmp (gtp, "POLYGON") == 0 + || strcasecmp (gtp, "MULTIPOLYGON") == 0) + strcpy (type, "POLYGON"); + else + strcpy (type, "GEOMETRY"); + strcpy (coordDims, dims); + ok = 1; + } + } + sqlite3_free_table (results); + if (!ok) + return 0; + +/* checking if PrimaryKey already exists */ + xtable = gaiaDoubleQuotedSql (inTable); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xtable); + free (xtable); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", errMsg); + sqlite3_free (errMsg); + return 0; + } + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + if (strcasecmp (pKey, results[(i * columns) + 1]) == 0) + ok = 0; + } + } + sqlite3_free_table (results); + if (!ok) + return 0; + +/* checking if MultiID already exists */ + xtable = gaiaDoubleQuotedSql (inTable); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xtable); + free (xtable); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", errMsg); + sqlite3_free (errMsg); + return 0; + } + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + if (strcasecmp (multiID, results[(i * columns) + 1]) == 0) + ok = 0; + } + } + sqlite3_free_table (results); + if (!ok) + return 0; + +/* cheching if Output Table already exists */ + sql = sqlite3_mprintf ("SELECT Count(*) FROM sqlite_master " + "WHERE type = 'table' AND Lower(tbl_name) = Lower(%Q)", + outTable); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", errMsg); + sqlite3_free (errMsg); + return 0; + } + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + if (atoi (results[(i * columns) + 0]) != 0) + ok = 0; + } + } + sqlite3_free_table (results); + + return ok; +} + +static gaiaGeomCollPtr +elemGeomFromPoint (gaiaPointPtr pt, int srid) +{ +/* creating a Geometry containing a single Point */ + gaiaGeomCollPtr g = NULL; + switch (pt->DimensionModel) + { + case GAIA_XY_Z_M: + g = gaiaAllocGeomCollXYZM (); + break; + case GAIA_XY_Z: + g = gaiaAllocGeomCollXYZ (); + break; + case GAIA_XY_M: + g = gaiaAllocGeomCollXYM (); + break; + default: + g = gaiaAllocGeomColl (); + break; + }; + if (!g) + return NULL; + g->Srid = srid; + g->DeclaredType = GAIA_POINT; + switch (pt->DimensionModel) + { + case GAIA_XY_Z_M: + gaiaAddPointToGeomCollXYZM (g, pt->X, pt->Y, pt->Z, pt->M); + break; + case GAIA_XY_Z: + gaiaAddPointToGeomCollXYZ (g, pt->X, pt->Y, pt->Z); + break; + case GAIA_XY_M: + gaiaAddPointToGeomCollXYM (g, pt->X, pt->Y, pt->M); + break; + default: + gaiaAddPointToGeomColl (g, pt->X, pt->Y); + break; + }; + return g; +} + +static gaiaGeomCollPtr +elemGeomFromLinestring (gaiaLinestringPtr ln, int srid) +{ +/* creating a Geometry containing a single Linestring */ + gaiaGeomCollPtr g = NULL; + gaiaLinestringPtr ln2; + int iv; + double x; + double y; + double z; + double m; + switch (ln->DimensionModel) + { + case GAIA_XY_Z_M: + g = gaiaAllocGeomCollXYZM (); + break; + case GAIA_XY_Z: + g = gaiaAllocGeomCollXYZ (); + break; + case GAIA_XY_M: + g = gaiaAllocGeomCollXYM (); + break; + default: + g = gaiaAllocGeomColl (); + break; + }; + if (!g) + return NULL; + g->Srid = srid; + g->DeclaredType = GAIA_LINESTRING; + ln2 = gaiaAddLinestringToGeomColl (g, ln->Points); + switch (ln->DimensionModel) + { + case GAIA_XY_Z_M: + for (iv = 0; iv < ln->Points; iv++) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (ln2->Coords, iv, x, y, z, m); + } + break; + case GAIA_XY_Z: + for (iv = 0; iv < ln->Points; iv++) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (ln2->Coords, iv, x, y, z); + } + break; + case GAIA_XY_M: + for (iv = 0; iv < ln->Points; iv++) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (ln2->Coords, iv, x, y, m); + } + break; + default: + for (iv = 0; iv < ln->Points; iv++) + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + gaiaSetPoint (ln2->Coords, iv, x, y); + } + break; + }; + return g; +} + +static gaiaGeomCollPtr +elemGeomFromPolygon (gaiaPolygonPtr pg, int srid) +{ +/* creating a Geometry containing a single Polygon */ + gaiaGeomCollPtr g = NULL; + gaiaPolygonPtr pg2; + gaiaRingPtr rng; + gaiaRingPtr rng2; + int ib; + int iv; + double x; + double y; + double z; + double m; + switch (pg->DimensionModel) + { + case GAIA_XY_Z_M: + g = gaiaAllocGeomCollXYZM (); + break; + case GAIA_XY_Z: + g = gaiaAllocGeomCollXYZ (); + break; + case GAIA_XY_M: + g = gaiaAllocGeomCollXYM (); + break; + default: + g = gaiaAllocGeomColl (); + break; + }; + if (!g) + return NULL; + g->Srid = srid; + g->DeclaredType = GAIA_POLYGON; + rng = pg->Exterior; + pg2 = gaiaAddPolygonToGeomColl (g, rng->Points, pg->NumInteriors); + rng2 = pg2->Exterior; + switch (pg->DimensionModel) + { + case GAIA_XY_Z_M: + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (rng2->Coords, iv, x, y, z, m); + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + rng = pg->Interiors + ib; + rng2 = gaiaAddInteriorRing (pg2, ib, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (rng2->Coords, iv, x, y, z, m); + } + } + break; + case GAIA_XY_Z: + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (rng2->Coords, iv, x, y, z); + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + rng = pg->Interiors + ib; + rng2 = gaiaAddInteriorRing (pg2, ib, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (rng2->Coords, iv, x, y, z); + } + } + break; + case GAIA_XY_M: + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (rng2->Coords, iv, x, y, m); + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + rng = pg->Interiors + ib; + rng2 = gaiaAddInteriorRing (pg2, ib, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (rng2->Coords, iv, x, y, m); + } + } + break; + default: + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + gaiaSetPoint (rng2->Coords, iv, x, y); + } + for (ib = 0; ib < pg->NumInteriors; ib++) + { + rng = pg->Interiors + ib; + rng2 = gaiaAddInteriorRing (pg2, ib, rng->Points); + for (iv = 0; iv < rng->Points; iv++) + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + gaiaSetPoint (rng2->Coords, iv, x, y); + } + } + break; + }; + return g; +} + +SPATIALITE_DECLARE void +elementary_geometries (sqlite3 * sqlite, + char *inTable, char *geometry, char *outTable, + char *pKey, char *multiId) +{ +/* attempting to create a derived table surely containing elemetary Geoms */ + char type[128]; + int srid; + char dims[64]; + char *sql; + char *xname; + char *xpk; + char *xmulti; + gaiaOutBuffer sql_statement; + gaiaOutBuffer sql2; + gaiaOutBuffer sql3; + gaiaOutBuffer sql4; + char *sql_geom; + int ret; + int comma = 0; + char *errMsg = NULL; + int i; + char **results; + int rows; + int columns; + int geom_idx = -1; + sqlite3_stmt *stmt_in = NULL; + sqlite3_stmt *stmt_out = NULL; + int n_columns; + sqlite3_int64 id = 0; + + if (check_elementary + (sqlite, inTable, geometry, outTable, pKey, multiId, type, &srid, + dims) == 0) + { + spatialite_e (".elemgeo: invalid args\n"); + return; + } + +/* starts a transaction */ + ret = sqlite3_exec (sqlite, "BEGIN", NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", errMsg); + sqlite3_free (errMsg); + goto abort; + } + + gaiaOutBufferInitialize (&sql_statement); + gaiaOutBufferInitialize (&sql2); + gaiaOutBufferInitialize (&sql3); + gaiaOutBufferInitialize (&sql4); + + gaiaAppendToOutBuffer (&sql_statement, "SELECT "); + xname = gaiaDoubleQuotedSql (outTable); + xpk = gaiaDoubleQuotedSql (pKey); + xmulti = gaiaDoubleQuotedSql (multiId); + sql = + sqlite3_mprintf ("INSERT INTO \"%s\" (\"%s\", \"%s\", ", xname, xpk, + xmulti); + free (xname); + free (xpk); + free (xmulti); + gaiaAppendToOutBuffer (&sql2, sql); + sqlite3_free (sql); + gaiaAppendToOutBuffer (&sql3, ") VALUES (NULL, ?"); + xname = gaiaDoubleQuotedSql (outTable); + xpk = gaiaDoubleQuotedSql (pKey); + xmulti = gaiaDoubleQuotedSql (multiId); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n" + "\t\"%s\" INTEGER PRIMARY KEY AUTOINCREMENT" + ",\n\t\"%s\" INTEGER NOT NULL", xname, xpk, xmulti); + free (xname); + free (xpk); + free (xmulti); + gaiaAppendToOutBuffer (&sql4, sql); + sqlite3_free (sql); + + xname = gaiaDoubleQuotedSql (inTable); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", errMsg); + sqlite3_free (errMsg); + goto abort; + } + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + xname = gaiaDoubleQuotedSql (results[(i * columns) + 1]); + if (comma) + sql = sqlite3_mprintf (", \"%s\"", xname); + else + { + comma = 1; + sql = sqlite3_mprintf ("\"%s\"", xname); + } + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + gaiaAppendToOutBuffer (&sql2, sql); + gaiaAppendToOutBuffer (&sql3, ", ?"); + sqlite3_free (sql); + + if (strcasecmp (geometry, results[(i * columns) + 1]) == 0) + geom_idx = i - 1; + else + { + xname = gaiaDoubleQuotedSql (results[(i * columns) + 1]); + if (atoi (results[(i * columns) + 3]) != 0) + sql = + sqlite3_mprintf (",\n\t\"%s\" %s NOT NULL", xname, + results[(i * columns) + 2]); + else + sql = + sqlite3_mprintf (",\n\t\"%s\" %s", xname, + results[(i * columns) + 2]); + free (xname); + gaiaAppendToOutBuffer (&sql4, sql); + sqlite3_free (sql); + } + } + } + sqlite3_free_table (results); + if (geom_idx < 0) + goto abort; + + xname = gaiaDoubleQuotedSql (inTable); + sql = sqlite3_mprintf (" FROM \"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + gaiaAppendToOutBuffer (&sql2, sql3.Buffer); + gaiaAppendToOutBuffer (&sql2, ")"); + gaiaAppendToOutBuffer (&sql4, ")"); + gaiaOutBufferReset (&sql3); + + sql_geom = + sqlite3_mprintf ("SELECT AddGeometryColumn(%Q, %Q, %d, %Q, %Q)", + outTable, geometry, srid, type, dims); + +/* creating the output table */ + ret = sqlite3_exec (sqlite, sql4.Buffer, NULL, NULL, &errMsg); + gaiaOutBufferReset (&sql4); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", errMsg); + sqlite3_free (errMsg); + goto abort; + } +/* creating the output Geometry */ + ret = sqlite3_exec (sqlite, sql_geom, NULL, NULL, &errMsg); + sqlite3_free (sql_geom); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", errMsg); + sqlite3_free (errMsg); + goto abort; + } + +/* preparing the INPUT statement */ + ret = + sqlite3_prepare_v2 (sqlite, sql_statement.Buffer, + strlen (sql_statement.Buffer), &stmt_in, NULL); + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); + goto abort; + } + +/* preparing the OUTPUT statement */ + ret = + sqlite3_prepare_v2 (sqlite, sql2.Buffer, strlen (sql2.Buffer), + &stmt_out, NULL); + gaiaOutBufferReset (&sql2); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); + goto abort; + } + +/* data transfer */ + n_columns = sqlite3_column_count (stmt_in); + while (1) + { + ret = sqlite3_step (stmt_in); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + gaiaGeomCollPtr g = + gaiaFromSpatiaLiteBlobWkb ((const unsigned char *) + sqlite3_column_blob (stmt_in, + geom_idx), + sqlite3_column_bytes (stmt_in, + geom_idx)); + if (!g) + { + /* NULL input geometry */ + sqlite3_reset (stmt_out); + sqlite3_clear_bindings (stmt_out); + sqlite3_bind_int64 (stmt_out, 1, id); + sqlite3_bind_null (stmt_out, geom_idx + 2); + + for (i = 0; i < n_columns; i++) + { + int type = sqlite3_column_type (stmt_in, i); + if (i == geom_idx) + continue; + switch (type) + { + case SQLITE_INTEGER: + sqlite3_bind_int64 (stmt_out, i + 2, + sqlite3_column_int + (stmt_in, i)); + break; + case SQLITE_FLOAT: + sqlite3_bind_double (stmt_out, i + 2, + sqlite3_column_double + (stmt_in, i)); + break; + case SQLITE_TEXT: + sqlite3_bind_text (stmt_out, i + 2, + (const char *) + sqlite3_column_text + (stmt_in, i), + sqlite3_column_bytes + (stmt_in, i), + SQLITE_STATIC); + break; + case SQLITE_BLOB: + sqlite3_bind_blob (stmt_out, i + 2, + sqlite3_column_blob + (stmt_in, i), + sqlite3_column_bytes + (stmt_in, i), + SQLITE_STATIC); + break; + case SQLITE_NULL: + default: + sqlite3_bind_null (stmt_out, i + 2); + break; + }; + } + + ret = sqlite3_step (stmt_out); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("[OUT]step error: %s\n", + sqlite3_errmsg (sqlite)); + goto abort; + } + } + else + { + /* separating Elementary Geoms */ + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaGeomCollPtr outGeom; + pt = g->FirstPoint; + while (pt) + { + /* separating Points */ + outGeom = elemGeomFromPoint (pt, g->Srid); + sqlite3_reset (stmt_out); + sqlite3_clear_bindings (stmt_out); + sqlite3_bind_int64 (stmt_out, 1, id); + if (!outGeom) + sqlite3_bind_null (stmt_out, geom_idx + 2); + else + { + unsigned char *blob; + int size; + gaiaToSpatiaLiteBlobWkb (outGeom, &blob, + &size); + sqlite3_bind_blob (stmt_out, geom_idx + 2, + blob, size, free); + gaiaFreeGeomColl (outGeom); + } + + for (i = 0; i < n_columns; i++) + { + int type = sqlite3_column_type (stmt_in, i); + if (i == geom_idx) + continue; + switch (type) + { + case SQLITE_INTEGER: + sqlite3_bind_int64 (stmt_out, i + 2, + sqlite3_column_int + (stmt_in, i)); + break; + case SQLITE_FLOAT: + sqlite3_bind_double (stmt_out, i + 2, + sqlite3_column_double + (stmt_in, i)); + break; + case SQLITE_TEXT: + sqlite3_bind_text (stmt_out, i + 2, + (const char *) + sqlite3_column_text + (stmt_in, i), + sqlite3_column_bytes + (stmt_in, i), + SQLITE_STATIC); + break; + case SQLITE_BLOB: + sqlite3_bind_blob (stmt_out, i + 2, + sqlite3_column_blob + (stmt_in, i), + sqlite3_column_bytes + (stmt_in, i), + SQLITE_STATIC); + break; + case SQLITE_NULL: + default: + sqlite3_bind_null (stmt_out, i + 2); + break; + }; + } + + ret = sqlite3_step (stmt_out); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("[OUT]step error: %s\n", + sqlite3_errmsg (sqlite)); + goto abort; + } + pt = pt->Next; + } + ln = g->FirstLinestring; + while (ln) + { + /* separating Linestrings */ + outGeom = elemGeomFromLinestring (ln, g->Srid); + sqlite3_reset (stmt_out); + sqlite3_clear_bindings (stmt_out); + sqlite3_bind_int64 (stmt_out, 1, id); + if (!outGeom) + sqlite3_bind_null (stmt_out, geom_idx + 2); + else + { + unsigned char *blob; + int size; + gaiaToSpatiaLiteBlobWkb (outGeom, &blob, + &size); + sqlite3_bind_blob (stmt_out, geom_idx + 2, + blob, size, free); + gaiaFreeGeomColl (outGeom); + } + + for (i = 0; i < n_columns; i++) + { + int type = sqlite3_column_type (stmt_in, i); + if (i == geom_idx) + continue; + switch (type) + { + case SQLITE_INTEGER: + sqlite3_bind_int64 (stmt_out, i + 2, + sqlite3_column_int + (stmt_in, i)); + break; + case SQLITE_FLOAT: + sqlite3_bind_double (stmt_out, i + 2, + sqlite3_column_double + (stmt_in, i)); + break; + case SQLITE_TEXT: + sqlite3_bind_text (stmt_out, i + 2, + (const char *) + sqlite3_column_text + (stmt_in, i), + sqlite3_column_bytes + (stmt_in, i), + SQLITE_STATIC); + break; + case SQLITE_BLOB: + sqlite3_bind_blob (stmt_out, i + 2, + sqlite3_column_blob + (stmt_in, i), + sqlite3_column_bytes + (stmt_in, i), + SQLITE_STATIC); + break; + case SQLITE_NULL: + default: + sqlite3_bind_null (stmt_out, i + 2); + break; + }; + } + + ret = sqlite3_step (stmt_out); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("[OUT]step error: %s\n", + sqlite3_errmsg (sqlite)); + goto abort; + } + ln = ln->Next; + } + pg = g->FirstPolygon; + while (pg) + { + /* separating Polygons */ + outGeom = elemGeomFromPolygon (pg, g->Srid); + sqlite3_reset (stmt_out); + sqlite3_clear_bindings (stmt_out); + sqlite3_bind_int64 (stmt_out, 1, id); + if (!outGeom) + sqlite3_bind_null (stmt_out, geom_idx + 2); + else + { + unsigned char *blob; + int size; + gaiaToSpatiaLiteBlobWkb (outGeom, &blob, + &size); + sqlite3_bind_blob (stmt_out, geom_idx + 2, + blob, size, free); + gaiaFreeGeomColl (outGeom); + } + + for (i = 0; i < n_columns; i++) + { + int type = sqlite3_column_type (stmt_in, i); + if (i == geom_idx) + continue; + switch (type) + { + case SQLITE_INTEGER: + sqlite3_bind_int64 (stmt_out, i + 2, + sqlite3_column_int + (stmt_in, i)); + break; + case SQLITE_FLOAT: + sqlite3_bind_double (stmt_out, i + 2, + sqlite3_column_double + (stmt_in, i)); + break; + case SQLITE_TEXT: + sqlite3_bind_text (stmt_out, i + 2, + (const char *) + sqlite3_column_text + (stmt_in, i), + sqlite3_column_bytes + (stmt_in, i), + SQLITE_STATIC); + break; + case SQLITE_BLOB: + sqlite3_bind_blob (stmt_out, i + 2, + sqlite3_column_blob + (stmt_in, i), + sqlite3_column_bytes + (stmt_in, i), + SQLITE_STATIC); + break; + case SQLITE_NULL: + default: + sqlite3_bind_null (stmt_out, i + 2); + break; + }; + } + + ret = sqlite3_step (stmt_out); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("[OUT]step error: %s\n", + sqlite3_errmsg (sqlite)); + goto abort; + } + pg = pg->Next; + } + gaiaFreeGeomColl (g); + } + id++; + } + else + { + spatialite_e ("[IN]step error: %s\n", sqlite3_errmsg (sqlite)); + goto abort; + } + } + sqlite3_finalize (stmt_in); + sqlite3_finalize (stmt_out); + +/* commits the transaction */ + ret = sqlite3_exec (sqlite, "COMMIT", NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", errMsg); + sqlite3_free (errMsg); + goto abort; + } + return; + + abort: + if (stmt_in) + sqlite3_finalize (stmt_in); + if (stmt_out) + sqlite3_finalize (stmt_out); +} + +#ifndef OMIT_FREEXL /* including FreeXL */ + +SPATIALITE_DECLARE int +load_XL (sqlite3 * sqlite, const char *path, const char *table, + unsigned int worksheetIndex, int first_titles, unsigned int *rows, + char *err_msg) +{ +/* loading an XL spreadsheet as a new DB table */ + sqlite3_stmt *stmt; + unsigned int current_row; + int ret; + char *errMsg = NULL; + char *xname; + char *dummy; + char *xdummy; + char *sql; + int sqlError = 0; + const void *xl_handle; + unsigned int info; + unsigned short columns; + unsigned short col; + gaiaOutBuffer sql_statement; + FreeXL_CellValue cell; + int already_exists = 0; +/* checking if TABLE already exists */ + sql = + sqlite3_mprintf ("SELECT name FROM sqlite_master WHERE type = 'table' " + "AND Lower(name) = Lower(%Q)", table); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + if (!err_msg) + spatialite_e ("load XL error: <%s>\n", sqlite3_errmsg (sqlite)); + else + sprintf (err_msg, "load XL error: <%s>\n", + sqlite3_errmsg (sqlite)); + return 0; + } + while (1) + { + /* scrolling the result set */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + already_exists = 1; + else + { + spatialite_e ("load XL error: <%s>\n", sqlite3_errmsg (sqlite)); + break; + } + } + sqlite3_finalize (stmt); + if (already_exists) + { + if (!err_msg) + spatialite_e ("load XL error: table '%s' already exists\n", + table); + else + sprintf (err_msg, "load XL error: table '%s' already exists\n", + table); + return 0; + } +/* opening the .XLS file [Workbook] */ + ret = freexl_open (path, &xl_handle); + if (ret != FREEXL_OK) + goto error; +/* checking if Password protected */ + ret = freexl_get_info (xl_handle, FREEXL_BIFF_PASSWORD, &info); + if (ret != FREEXL_OK) + goto error; + if (info != FREEXL_BIFF_PLAIN) + goto error; +/* Worksheet entries */ + ret = freexl_get_info (xl_handle, FREEXL_BIFF_SHEET_COUNT, &info); + if (ret != FREEXL_OK) + goto error; + if (info == 0) + goto error; + if (worksheetIndex < info) + ; + else + goto error; + ret = freexl_select_active_worksheet (xl_handle, worksheetIndex); + if (ret != FREEXL_OK) + goto error; + ret = freexl_worksheet_dimensions (xl_handle, rows, &columns); + if (ret != FREEXL_OK) + goto error; +/* starting a transaction */ + ret = sqlite3_exec (sqlite, "BEGIN", NULL, 0, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("load XL error: %s\n", errMsg); + sqlite3_free (errMsg); + sqlError = 1; + goto clean_up; + } +/* creating the Table */ + gaiaOutBufferInitialize (&sql_statement); + xname = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + gaiaAppendToOutBuffer (&sql_statement, + " (\nPK_UID INTEGER PRIMARY KEY AUTOINCREMENT"); + for (col = 0; col < columns; col++) + { + if (first_titles) + { + /* fetching column names */ + for (col = 0; col < columns; col++) + { + ret = freexl_get_cell_value (xl_handle, 0, col, &cell); + if (ret != FREEXL_OK) + dummy = sqlite3_mprintf ("col_%d", col); + else + { + if (cell.type == FREEXL_CELL_INT) + dummy = + sqlite3_mprintf ("%d", + cell.value.int_value); + else if (cell.type == FREEXL_CELL_DOUBLE) + dummy = sqlite3_mprintf ("%1.2f ", + cell.value. + double_value); + else if (cell.type == FREEXL_CELL_TEXT + || cell.type == FREEXL_CELL_SST_TEXT + || cell.type == FREEXL_CELL_DATE + || cell.type == FREEXL_CELL_DATETIME + || cell.type == FREEXL_CELL_TIME) + { + int len = strlen (cell.value.text_value); + if (len < 256) + dummy = + sqlite3_mprintf ("%s", + cell.value. + text_value); + else + dummy = sqlite3_mprintf ("col_%d", col); + } + else + dummy = sqlite3_mprintf ("col_%d", col); + } + xdummy = gaiaDoubleQuotedSql (dummy); + sqlite3_free (dummy); + sql = sqlite3_mprintf (", \"%s\"", xdummy); + free (xdummy); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + } + else + { + /* setting default column names */ + for (col = 0; col < columns; col++) + { + dummy = sqlite3_mprintf ("col_%d", col); + xdummy = gaiaDoubleQuotedSql (dummy); + sqlite3_free (dummy); + sql = sqlite3_mprintf (", \"%s\"", xdummy); + free (xdummy); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + } + } + gaiaAppendToOutBuffer (&sql_statement, ")"); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + { + ret = sqlite3_exec (sqlite, sql_statement.Buffer, NULL, 0, &errMsg); + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("load XL error: %s\n", errMsg); + sqlite3_free (errMsg); + sqlError = 1; + goto clean_up; + } + } +/* preparing the INSERT INTO parameterized statement */ + gaiaOutBufferReset (&sql_statement); + xname = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("INSERT INTO \"%s\" (PK_UID", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + for (col = 0; col < columns; col++) + { + if (first_titles) + { + ret = freexl_get_cell_value (xl_handle, 0, col, &cell); + if (ret != FREEXL_OK) + dummy = sqlite3_mprintf ("col_%d", col); + else + { + if (cell.type == FREEXL_CELL_INT) + dummy = sqlite3_mprintf ("%d", cell.value.int_value); + else if (cell.type == FREEXL_CELL_DOUBLE) + dummy = + sqlite3_mprintf ("%1.2f", + cell.value.double_value); + else if (cell.type == FREEXL_CELL_TEXT + || cell.type == FREEXL_CELL_SST_TEXT + || cell.type == FREEXL_CELL_DATE + || cell.type == FREEXL_CELL_DATETIME + || cell.type == FREEXL_CELL_TIME) + { + int len = strlen (cell.value.text_value); + if (len < 256) + dummy = + sqlite3_mprintf ("%s", + cell.value.text_value); + else + dummy = sqlite3_mprintf ("col_%d", col); + } + else + dummy = sqlite3_mprintf ("col_%d", col); + } + xdummy = gaiaDoubleQuotedSql (dummy); + sqlite3_free (dummy); + sql = sqlite3_mprintf (", \"%s\"", xdummy); + free (xdummy); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + else + { + /* setting default column names */ + dummy = sqlite3_mprintf ("col_%d", col); + xdummy = gaiaDoubleQuotedSql (dummy); + sqlite3_free (dummy); + sql = sqlite3_mprintf (", \"%s\"", xdummy); + free (xdummy); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + } + gaiaAppendToOutBuffer (&sql_statement, ")\nVALUES (NULL"); + for (col = 0; col < columns; col++) + { + /* column values */ + gaiaAppendToOutBuffer (&sql_statement, ", ?"); + } + gaiaAppendToOutBuffer (&sql_statement, ")"); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + { + ret = + sqlite3_prepare_v2 (sqlite, sql_statement.Buffer, + strlen (sql_statement.Buffer), &stmt, NULL); + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("load XL error: %s\n", sqlite3_errmsg (sqlite)); + sqlError = 1; + goto clean_up; + } + } + if (first_titles) + current_row = 1; + else + current_row = 0; + while (current_row < *rows) + { + /* binding query params */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + for (col = 0; col < columns; col++) + { + /* column values */ + ret = + freexl_get_cell_value (xl_handle, current_row, col, &cell); + if (ret != FREEXL_OK) + sqlite3_bind_null (stmt, col + 1); + else + { + switch (cell.type) + { + case FREEXL_CELL_INT: + sqlite3_bind_int (stmt, col + 1, + cell.value.int_value); + break; + case FREEXL_CELL_DOUBLE: + sqlite3_bind_double (stmt, col + 1, + cell.value.double_value); + break; + case FREEXL_CELL_TEXT: + case FREEXL_CELL_SST_TEXT: + case FREEXL_CELL_DATE: + case FREEXL_CELL_DATETIME: + case FREEXL_CELL_TIME: + sqlite3_bind_text (stmt, col + 1, + cell.value.text_value, + strlen (cell.value.text_value), + SQLITE_STATIC); + break; + default: + sqlite3_bind_null (stmt, col + 1); + break; + }; + } + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("load XL error: %s\n", sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + sqlError = 1; + goto clean_up; + } + current_row++; + } + sqlite3_finalize (stmt); + clean_up: + if (sqlError) + { + /* some error occurred - ROLLBACK */ + ret = sqlite3_exec (sqlite, "ROLLBACK", NULL, 0, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("load XL error: %s\n", errMsg); + sqlite3_free (errMsg); + } + spatialite_e + ("XL not loaded\n\n\na ROLLBACK was automatically performed\n"); + } + else + { + /* ok - confirming pending transaction - COMMIT */ + ret = sqlite3_exec (sqlite, "COMMIT", NULL, 0, &errMsg); + if (ret != SQLITE_OK) + { + if (!err_msg) + spatialite_e ("load XL error: %s\n", errMsg); + else + sprintf (err_msg, "load XL error: %s\n", errMsg); + sqlite3_free (errMsg); + return 0; + } + if (first_titles) + *rows = *rows - 1; /* allow for header row */ + spatialite_e ("XL loaded\n\n%d inserted rows\n", *rows); + } + freexl_close (xl_handle); + return 1; + + error: + freexl_close (xl_handle); + if (!err_msg) + spatialite_e ("XL datasource '%s' is not valid\n", path); + else + sprintf (err_msg, "XL datasource '%s' is not valid\n", path); + return 0; +} + +#endif /* FreeXL enabled/disabled */ + +SPATIALITE_DECLARE int +dump_geojson (sqlite3 * sqlite, char *table, char *geom_col, char *outfile_path, + int precision, int option) +{ +/* dumping a geometry table as GeoJSON - Brad Hards 2011-11-09 */ + char *sql; + char *xgeom_col; + char *xtable; + sqlite3_stmt *stmt = NULL; + FILE *out = NULL; + int ret; + int rows = 0; + +/* opening/creating the GeoJSON output file */ + out = fopen (outfile_path, "wb"); + if (!out) + goto no_file; + +/* preparing SQL statement */ + xtable = gaiaDoubleQuotedSql (table); + xgeom_col = gaiaDoubleQuotedSql (geom_col); + sql = + sqlite3_mprintf + ("SELECT AsGeoJSON(\"%s\", %d, %d) FROM \"%s\" WHERE \"%s\" IS NOT NULL", + xgeom_col, precision, option, xtable, xgeom_col); + free (xtable); + free (xgeom_col); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto sql_error; + + while (1) + { + /* scrolling the result set */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + { + break; /* end of result set */ + } + if (ret == SQLITE_ROW) + { + rows++; + fprintf (out, "%s\r\n", sqlite3_column_text (stmt, 0)); + } + else + { + goto sql_error; + } + } + if (rows == 0) + { + goto empty_result_set; + } + + sqlite3_finalize (stmt); + fclose (out); + return 1; + + sql_error: +/* an SQL error occurred */ + if (stmt) + { + sqlite3_finalize (stmt); + } + if (out) + { + fclose (out); + } + spatialite_e ("Dump GeoJSON error: %s\n", sqlite3_errmsg (sqlite)); + return 0; + + no_file: +/* Output file could not be created / opened */ + if (stmt) + { + sqlite3_finalize (stmt); + } + if (out) + { + fclose (out); + } + spatialite_e ("ERROR: unable to open '%s' for writing\n", outfile_path); + return 0; + + empty_result_set: +/* the result set is empty - nothing to do */ + if (stmt) + { + sqlite3_finalize (stmt); + } + if (out) + { + fclose (out); + } + spatialite_e ("The SQL SELECT returned no data to export...\n"); + return 0; +} diff --git a/src/spatialite/src/shapefiles/validator.c b/src/spatialite/src/shapefiles/validator.c new file mode 100644 index 0000000..1a6fad1 --- /dev/null +++ b/src/spatialite/src/shapefiles/validator.c @@ -0,0 +1,3745 @@ +/* + + validator.c -- implements geometry validation and repair + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include <sys/stat.h> +#include <sys/types.h> + +#if defined(_WIN32) +#include <direct.h> +#endif + +#include <stdlib.h> +#include <stdio.h> +#include <string.h> +#include <time.h> + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include <spatialite/sqlite.h> +#include <spatialite/debug.h> + +#include <spatialite/gaiaaux.h> +#include <spatialite/gaiageo.h> +#include <spatialite.h> +#include <spatialite_private.h> + +/* 64 bit integer: portable format for printf() */ +#if defined(_WIN32) && !defined(__MINGW32__) +#define FRMT64 "%I64d" +#else +#define FRMT64 "%lld" +#endif + +#if defined(_WIN32) && !defined(__MINGW32__) +#define strcasecmp _stricmp +#endif + +struct validity_report_row +{ + sqlite3_int64 rowid; + int valid; + char *warning; + char *error; + char *extra; + struct validity_report_row *next; +}; + +struct validity_report +{ + struct validity_report_row *first; + struct validity_report_row *last; + int n_rows; + int n_nullgeoms; + int n_valids; + int n_invalids; + int n_warnings; +}; + +struct sanitize_report_row +{ + sqlite3_int64 rowid; + int repaired; + char *warning; + char *error; + char *summary; + struct sanitize_report_row *next; +}; + +struct sanitize_report +{ + struct sanitize_report_row *first; + struct sanitize_report_row *last; + int n_invalids; + int n_repaired; + int n_discarded; + int n_not_repaired; + int input_type; + int repaired_type; + int discarded_type; +}; + +static int +check_table_column (sqlite3 * sqlite, const char *table, const char *geom, + int *gtype, int *srid) +{ +/* chacks if a table-column effectively exists */ + char *sql; + const char *xsql; + int ret; + int i; + char **results; + int rows; + int columns; + int spatial_type = 0; + int ok = 0; + + *gtype = -1; + *srid = -2; +/* checking the DB layout */ + xsql = "SELECT CheckSpatialMetadata()"; + ret = sqlite3_get_table (sqlite, xsql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + spatial_type = atoi (results[(i * columns) + 0]); + } + sqlite3_free_table (results); + if (spatial_type == 1 || spatial_type == 3) + ; + else + return 0; + +/* checking the table-column */ + if (spatial_type == 1) + xsql = "SELECT type, coord_dimension, srid FROM geometry_columns "; + else + xsql = "SELECT geometry_type, srid FROM geometry_columns "; + sql = sqlite3_mprintf ("%s WHERE Lower(f_table_name) = Lower(%Q) " + "AND Lower(f_geometry_column) = Lower(%Q)", xsql, + table, geom); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + ok = 1; + if (spatial_type == 1) + { + int ndims; + const char *type = results[(i * columns) + 0]; + const char *dims = results[(i * columns) + 2]; + if (strcasecmp (dims, "XYZM") == 0) + ndims = GAIA_XY_Z_M; + else if (strcasecmp (dims, "4") == 0) + ndims = GAIA_XY_Z_M; + else if (strcasecmp (dims, "XYZ") == 0) + ndims = GAIA_XY_Z; + else if (strcasecmp (dims, "3") == 0) + ndims = GAIA_XY_Z; + else if (strcasecmp (dims, "XYM") == 0) + ndims = GAIA_XY_M; + else + ndims = GAIA_XY; + if (strcasecmp (type, "POINT") == 0) + { + if (ndims == GAIA_XY_Z_M) + *gtype = 3001; + else if (ndims == GAIA_XY_Z) + *gtype = 1001; + else if (ndims == GAIA_XY_M) + *gtype = 2001; + else + *gtype = 1; + } + if (strcasecmp (type, "LINESTRING") == 0) + { + if (ndims == GAIA_XY_Z_M) + *gtype = 3002; + else if (ndims == GAIA_XY_Z) + *gtype = 1002; + else if (ndims == GAIA_XY_M) + *gtype = 2002; + else + *gtype = 2; + } + if (strcasecmp (type, "POLYGON") == 0) + { + if (ndims == GAIA_XY_Z_M) + *gtype = 3003; + else if (ndims == GAIA_XY_Z) + *gtype = 1003; + else if (ndims == GAIA_XY_M) + *gtype = 2003; + else + *gtype = 3; + } + if (strcasecmp (type, "MULTIPOINT") == 0) + { + if (ndims == GAIA_XY_Z_M) + *gtype = 3004; + else if (ndims == GAIA_XY_Z) + *gtype = 1004; + else if (ndims == GAIA_XY_M) + *gtype = 2004; + else + *gtype = 4; + } + if (strcasecmp (type, "MULTILINESTRING") == 0) + { + if (ndims == GAIA_XY_Z_M) + *gtype = 3005; + else if (ndims == GAIA_XY_Z) + *gtype = 1005; + else if (ndims == GAIA_XY_M) + *gtype = 2005; + else + *gtype = 5; + } + if (strcasecmp (type, "MULTIPOLYGON") == 0) + { + if (ndims == GAIA_XY_Z_M) + *gtype = 3006; + else if (ndims == GAIA_XY_Z) + *gtype = 1006; + else if (ndims == GAIA_XY_M) + *gtype = 2006; + else + *gtype = 6; + } + if (strcasecmp (type, "GEOMETRYCOLLECTION") == 0) + { + if (ndims == GAIA_XY_Z_M) + *gtype = 3007; + else if (ndims == GAIA_XY_Z) + *gtype = 1007; + else if (ndims == GAIA_XY_M) + *gtype = 2007; + else + *gtype = 7; + } + if (strcasecmp (type, "GEOMETRY") == 0) + { + if (ndims == GAIA_XY_Z_M) + *gtype = 3000; + else if (ndims == GAIA_XY_Z) + *gtype = 1000; + else if (ndims == GAIA_XY_M) + *gtype = 2000; + else + *gtype = 0; + } + *srid = atoi (results[(i * columns) + 1]); + } + else + { + *gtype = atoi (results[(i * columns) + 0]); + *srid = atoi (results[(i * columns) + 1]); + } + } + } + sqlite3_free_table (results); + return ok; +} + +#ifdef ENABLE_LWGEOM /* only if LWGEOM is supported */ + +static struct sanitize_report * +alloc_sanitize_report (void) +{ +/* allocating the report container struct */ + struct sanitize_report *p = malloc (sizeof (struct sanitize_report)); + p->first = NULL; + p->last = NULL; + p->n_invalids = 0; + p->n_repaired = 0; + p->n_discarded = 0; + p->n_not_repaired = 0; + p->input_type = -1; + p->repaired_type = -1; + p->discarded_type = -1; + return p; +} + +static void +free_sanitize_report (struct sanitize_report *p) +{ +/* memory cleanup: freeing the report container struct */ + struct sanitize_report_row *r; + struct sanitize_report_row *rn; + r = p->first; + while (r) + { + rn = r->next; + if (r->warning != NULL) + free (r->warning); + if (r->error != NULL) + free (r->error); + if (r->summary != NULL) + free (r->summary); + free (r); + r = rn; + } + free (p); +} + +static void +addMessageToSanitizeReport (struct sanitize_report *report, sqlite3_int64 rowid, + int repaired, const char *error, + const char *warning, const char *summary) +{ +/* adding a message to the report */ + int len; + struct sanitize_report_row *r = + malloc (sizeof (struct sanitize_report_row)); + r->rowid = rowid; + r->repaired = repaired; + r->error = NULL; + r->warning = NULL; + r->summary = NULL; + r->next = NULL; + if (error) + { + len = strlen (error); + r->error = malloc (len + 1); + strcpy (r->error, error); + } + if (warning) + { + len = strlen (warning); + r->warning = malloc (len + 1); + strcpy (r->warning, warning); + } + if (summary) + { + len = strlen (summary); + r->summary = malloc (len + 1); + strcpy (r->summary, summary); + } + if (!repaired) + report->n_not_repaired += 1; + else + { + if (summary == NULL) + report->n_repaired += 1; + else + report->n_discarded += 1; + } + if (report->first == NULL) + report->first = r; + if (report->last != NULL) + report->last->next = r; + report->last = r; +} + +static int +eval_type (int old, int new) +{ +/* evaluates the max. common Geometry Type */ + int o_dims; + int n_dims; + int r_dims; + int o_type; + int n_type; + int r_type; + int ret; + if (old < 0) + { + /* first evaluation */ + return new; + } + switch (old) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + o_dims = GAIA_XY; + break; + case 1000: + case 1001: + case 1002: + case 1003: + case 1004: + case 1005: + case 1006: + case 1007: + o_dims = GAIA_XY_Z; + break; + case 2000: + case 2001: + case 2002: + case 2003: + case 2004: + case 2005: + case 2006: + case 2007: + o_dims = GAIA_XY_M; + break; + case 3000: + case 3001: + case 3002: + case 3003: + case 3004: + case 3005: + case 3006: + case 3007: + o_dims = GAIA_XY_Z_M; + break; + default: + o_dims = GAIA_XY; + break; + }; + switch (new) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + n_dims = GAIA_XY; + break; + case 1000: + case 1001: + case 1002: + case 1003: + case 1004: + case 1005: + case 1006: + case 1007: + n_dims = GAIA_XY_Z; + break; + case 2000: + case 2001: + case 2002: + case 2003: + case 2004: + case 2005: + case 2006: + case 2007: + n_dims = GAIA_XY_M; + break; + case 3000: + case 3001: + case 3002: + case 3003: + case 3004: + case 3005: + case 3006: + case 3007: + n_dims = GAIA_XY_Z_M; + break; + default: + n_dims = GAIA_XY; + break; + }; + switch (old) + { + case 0: + case 1000: + case 2000: + case 3000: + o_type = -1; + break; + case 1: + case 1001: + case 2001: + case 3001: + o_type = GAIA_POINT; + break; + case 2: + case 1002: + case 2002: + case 3002: + o_type = GAIA_LINESTRING; + break; + case 3: + case 1003: + case 2003: + case 3003: + o_type = GAIA_POLYGON; + break; + case 4: + case 1004: + case 2004: + case 3004: + o_type = GAIA_MULTIPOINT; + break; + case 5: + case 1005: + case 2005: + case 3005: + o_type = GAIA_MULTILINESTRING; + break; + case 6: + case 1006: + case 2006: + case 3006: + o_type = GAIA_MULTIPOLYGON; + break; + case 7: + case 1007: + case 2007: + case 3007: + o_type = GAIA_GEOMETRYCOLLECTION; + break; + default: + o_type = -1; + break; + }; + switch (new) + { + case 0: + case 1000: + case 2000: + case 3000: + n_type = -1; + break; + case 1: + case 1001: + case 2001: + case 3001: + n_type = GAIA_POINT; + break; + case 2: + case 1002: + case 2002: + case 3002: + n_type = GAIA_LINESTRING; + break; + case 3: + case 1003: + case 2003: + case 3003: + n_type = GAIA_POLYGON; + break; + case 4: + case 1004: + case 2004: + case 3004: + n_type = GAIA_MULTIPOINT; + break; + case 5: + case 1005: + case 2005: + case 3005: + n_type = GAIA_MULTILINESTRING; + break; + case 6: + case 1006: + case 2006: + case 3006: + n_type = GAIA_MULTIPOLYGON; + break; + case 7: + case 1007: + case 2007: + case 3007: + n_type = GAIA_GEOMETRYCOLLECTION; + break; + default: + n_type = -1; + break; + }; + if (o_type == n_type) + r_type = n_type; + else + { + if ((o_type == GAIA_POINT || n_type == GAIA_POINT) + && (o_type == GAIA_MULTIPOINT || n_type == GAIA_MULTIPOINT)) + r_type = GAIA_MULTIPOINT; + else if ((o_type == GAIA_LINESTRING || n_type == GAIA_LINESTRING) + && (o_type == GAIA_LINESTRING || n_type == GAIA_LINESTRING)) + r_type = GAIA_MULTILINESTRING; + else if ((o_type == GAIA_POLYGON || n_type == GAIA_POLYGON) + && (o_type == GAIA_MULTIPOLYGON + || n_type == GAIA_MULTIPOLYGON)) + r_type = GAIA_MULTIPOLYGON; + else + r_type = GAIA_GEOMETRYCOLLECTION; + } + if (o_dims == n_dims) + r_dims = n_dims; + else + { + if ((o_dims == GAIA_XY || n_dims == GAIA_XY) + && (o_dims == GAIA_XY_Z || n_dims == GAIA_XY_Z)) + r_dims = GAIA_XY_Z; + if ((o_dims == GAIA_XY || n_dims == GAIA_XY) + && (o_dims == GAIA_XY_M || n_dims == GAIA_XY_M)) + r_dims = GAIA_XY_M; + if ((o_dims == GAIA_XY || n_dims == GAIA_XY) + && (o_dims == GAIA_XY_Z_M || n_dims == GAIA_XY_Z_M)) + r_dims = GAIA_XY_Z_M; + if ((o_dims == GAIA_XY_M || n_dims == GAIA_XY_M) + && (o_dims == GAIA_XY_Z || n_dims == GAIA_XY_Z)) + r_dims = GAIA_XY_Z_M; + if ((o_dims == GAIA_XY_M || n_dims == GAIA_XY_M) + && (o_dims == GAIA_XY_Z_M || n_dims == GAIA_XY_Z_M)) + r_dims = GAIA_XY_Z_M; + if ((o_dims == GAIA_XY_Z || n_dims == GAIA_XY_Z) + && (o_dims == GAIA_XY_Z_M || n_dims == GAIA_XY_Z_M)) + r_dims = GAIA_XY_Z_M; + } + switch (r_type) + { + case GAIA_POINT: + switch (r_dims) + { + case GAIA_XY_Z_M: + ret = 3001; + break; + case GAIA_XY_Z: + ret = 1001; + break; + case GAIA_XY_M: + ret = 2001; + break; + case GAIA_XY: + ret = 1; + break; + }; + break; + case GAIA_LINESTRING: + switch (r_dims) + { + case GAIA_XY_Z_M: + ret = 3002; + break; + case GAIA_XY_Z: + ret = 1002; + break; + case GAIA_XY_M: + ret = 2002; + break; + case GAIA_XY: + ret = 2; + break; + }; + break; + case GAIA_POLYGON: + switch (r_dims) + { + case GAIA_XY_Z_M: + ret = 3003; + break; + case GAIA_XY_Z: + ret = 1003; + break; + case GAIA_XY_M: + ret = 2003; + break; + case GAIA_XY: + ret = 3; + break; + }; + break; + case GAIA_MULTIPOINT: + switch (r_dims) + { + case GAIA_XY_Z_M: + ret = 3004; + break; + case GAIA_XY_Z: + ret = 1004; + break; + case GAIA_XY_M: + ret = 2004; + break; + case GAIA_XY: + ret = 4; + break; + }; + break; + case GAIA_MULTILINESTRING: + switch (r_dims) + { + case GAIA_XY_Z_M: + ret = 3005; + break; + case GAIA_XY_Z: + ret = 1005; + break; + case GAIA_XY_M: + ret = 2005; + break; + case GAIA_XY: + ret = 5; + break; + }; + break; + case GAIA_MULTIPOLYGON: + switch (r_dims) + { + case GAIA_XY_Z_M: + ret = 3006; + break; + case GAIA_XY_Z: + ret = 1006; + break; + case GAIA_XY_M: + ret = 2006; + break; + case GAIA_XY: + ret = 6; + break; + }; + break; + default: + switch (r_dims) + { + case GAIA_XY_Z_M: + ret = 3007; + break; + case GAIA_XY_Z: + ret = 1007; + break; + case GAIA_XY_M: + ret = 2007; + break; + case GAIA_XY: + ret = 7; + break; + }; + break; + }; + return ret; +} + +static int +eval_cast_type (int old, int new) +{ +/* determining the appropriate Type Casting (if any) */ + int o_type; + int n_type; + switch (old) + { + case 0: + case 1000: + case 2000: + case 3000: + o_type = -1; + break; + case 1: + case 1001: + case 2001: + case 3001: + o_type = GAIA_POINT; + break; + case 2: + case 1002: + case 2002: + case 3002: + o_type = GAIA_LINESTRING; + break; + case 3: + case 1003: + case 2003: + case 3003: + o_type = GAIA_POLYGON; + break; + case 4: + case 1004: + case 2004: + case 3004: + o_type = GAIA_MULTIPOINT; + break; + case 5: + case 1005: + case 2005: + case 3005: + o_type = GAIA_MULTILINESTRING; + break; + case 6: + case 1006: + case 2006: + case 3006: + o_type = GAIA_MULTIPOLYGON; + break; + case 7: + case 1007: + case 2007: + case 3007: + o_type = GAIA_GEOMETRYCOLLECTION; + break; + default: + o_type = -1; + break; + }; + switch (new) + { + case 0: + case 1000: + case 2000: + case 3000: + n_type = -1; + break; + case 1: + case 1001: + case 2001: + case 3001: + n_type = GAIA_POINT; + break; + case 2: + case 1002: + case 2002: + case 3002: + n_type = GAIA_LINESTRING; + break; + case 3: + case 1003: + case 2003: + case 3003: + n_type = GAIA_POLYGON; + break; + case 4: + case 1004: + case 2004: + case 3004: + n_type = GAIA_MULTIPOINT; + break; + case 5: + case 1005: + case 2005: + case 3005: + n_type = GAIA_MULTILINESTRING; + break; + case 6: + case 1006: + case 2006: + case 3006: + n_type = GAIA_MULTIPOLYGON; + break; + case 7: + case 1007: + case 2007: + case 3007: + n_type = GAIA_GEOMETRYCOLLECTION; + break; + default: + n_type = -1; + break; + }; + if (o_type == n_type) + return -1; + return n_type; +} + +static int +eval_cast_dims (int old, int new) +{ +/* determining the appropriate Dimensions Casting (if any) */ + int o_dims; + int n_dims; + switch (old) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + o_dims = GAIA_XY; + break; + case 1000: + case 1001: + case 1002: + case 1003: + case 1004: + case 1005: + case 1006: + case 1007: + o_dims = GAIA_XY_Z; + break; + case 2000: + case 2001: + case 2002: + case 2003: + case 2004: + case 2005: + case 2006: + case 2007: + o_dims = GAIA_XY_M; + break; + case 3000: + case 3001: + case 3002: + case 3003: + case 3004: + case 3005: + case 3006: + case 3007: + o_dims = GAIA_XY_Z_M; + break; + default: + o_dims = GAIA_XY; + break; + }; + switch (new) + { + case 0: + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + case 7: + n_dims = GAIA_XY; + break; + case 1000: + case 1001: + case 1002: + case 1003: + case 1004: + case 1005: + case 1006: + case 1007: + n_dims = GAIA_XY_Z; + break; + case 2000: + case 2001: + case 2002: + case 2003: + case 2004: + case 2005: + case 2006: + case 2007: + n_dims = GAIA_XY_M; + break; + case 3000: + case 3001: + case 3002: + case 3003: + case 3004: + case 3005: + case 3006: + case 3007: + n_dims = GAIA_XY_Z_M; + break; + default: + n_dims = GAIA_XY; + break; + }; + if (o_dims == n_dims) + return -1; + return n_dims; +} + + +static const char * +createDiscardedSummary (gaiaGeomCollPtr geom, char *summary) +{ +/* short summary for discarded fragments */ + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + int pts = 0; + int lns = 0; + int pgs = 0; + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts > 0 && lns == 0 && pgs == 0) + sprintf (summary, "%d Poin%s", pts, (pts > 1) ? "ts" : "t"); + if (pts == 0 && lns > 0 && pgs == 0) + sprintf (summary, "%d Linestrin%s", lns, (lns > 1) ? "gs" : "g"); + if (pts == 0 && lns == 0 && pgs > 0) + sprintf (summary, "%d Polygo%s", pgs, (pgs > 1) ? "ns" : "n"); + if (pts > 0 && lns > 0 && pgs == 0) + sprintf (summary, "%d Poin%s; %d Linestrin%s", pts, + (pts > 1) ? "ts" : "t", lns, (lns > 1) ? "gs" : "s"); + if (pts > 0 && lns == 0 && pgs > 0) + sprintf (summary, "%d Poin%s; %d Polygo%s", pts, (pts > 1) ? "ts" : "t", + pgs, (pgs > 1) ? "ns" : "n"); + if (pts == 0 && lns > 0 && pgs > 0) + sprintf (summary, "%d Linestrin%s; %d Polygo%s", lns, + (lns > 1) ? "gs" : "g", pgs, (pgs > 1) ? "ns" : "n"); + if (pts > 0 && lns > 0 && pgs > 0) + sprintf (summary, "%d Poin%s; %d Linestrin%s; %d Polygo%s", pts, + (pts > 1) ? "ts" : "t", lns, (lns > 1) ? "gs" : "s", pgs, + (pgs > 1) ? "ns" : "n"); + return summary; +} + +static int +change_geometry_type (sqlite3 * sqlite, const char *table, const char *geometry, + int cast_type, int cast_dims) +{ +/* changing the Geometry Type for the whole table/column */ + int ret; + int i; + char **results; + int rows; + int columns; + int spatial_type = 0; + const char *xsql; + char *sql; + sqlite3_stmt *stmt; + char *xtable; + char *xgeom; + const char *xtype; + const char *xdims; + +/* checking the DB layout */ + xsql = "SELECT CheckSpatialMetadata()"; + ret = sqlite3_get_table (sqlite, xsql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + spatial_type = atoi (results[(i * columns) + 0]); + } + sqlite3_free_table (results); + if (spatial_type == 1 || spatial_type == 3) + ; + else + return 0; + +/* updating the "geometry_columns" row */ + if (spatial_type == 1) + sql = sqlite3_mprintf ("UPDATE geometry_columns SET type = ?, " + "coord_dimension = ? WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", table, + geometry); + else + sql = sqlite3_mprintf ("UPDATE geometry_columns SET geometry_type = ?, " + "coord_dimension = ? WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", table, + geometry); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + return 0; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + if (spatial_type == 1) + { + const char *p_type = "GEOMETRY"; + const char *p_dims = "XY"; + switch (cast_type) + { + case GAIA_POINT: + p_type = "POINT"; + break; + case GAIA_LINESTRING: + p_type = "LINESTRING"; + break; + case GAIA_POLYGON: + p_type = "POLYGON"; + break; + case GAIA_MULTIPOINT: + p_type = "MULTIPOINT"; + break; + case GAIA_MULTILINESTRING: + p_type = "MULTILINESTRING"; + break; + case GAIA_MULTIPOLYGON: + p_type = "MULTIPOLYGON"; + break; + case GAIA_GEOMETRYCOLLECTION: + p_type = "GEOMETRYCOLLECTION"; + break; + }; + switch (cast_dims) + { + case GAIA_XY_Z_M: + p_dims = "XYZM"; + break; + case GAIA_XY_Z: + p_dims = "XYZ"; + break; + case GAIA_XY_M: + p_dims = "ZYM"; + break; + }; + sqlite3_bind_text (stmt, 1, p_type, strlen (p_type), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, p_dims, strlen (p_dims), SQLITE_STATIC); + } + else + { + int gtype = 0; + int ndims = 2; + switch (cast_type) + { + case GAIA_POINT: + switch (cast_dims) + { + case GAIA_XY_Z_M: + gtype = 3001; + ndims = 4; + break; + case GAIA_XY_Z: + gtype = 1001; + ndims = 3; + break; + case GAIA_XY_M: + gtype = 2001; + ndims = 3; + break; + default: + gtype = 1; + ndims = 2; + break; + }; + break; + case GAIA_LINESTRING: + switch (cast_dims) + { + case GAIA_XY_Z_M: + gtype = 3002; + ndims = 4; + break; + case GAIA_XY_Z: + gtype = 1002; + ndims = 3; + break; + case GAIA_XY_M: + gtype = 2002; + ndims = 3; + break; + default: + gtype = 2; + ndims = 2; + break; + }; + break; + case GAIA_POLYGON: + switch (cast_dims) + { + case GAIA_XY_Z_M: + gtype = 3003; + ndims = 4; + break; + case GAIA_XY_Z: + gtype = 1003; + ndims = 3; + break; + case GAIA_XY_M: + gtype = 2003; + ndims = 3; + break; + default: + gtype = 3; + ndims = 2; + break; + }; + break; + case GAIA_MULTIPOINT: + switch (cast_dims) + { + case GAIA_XY_Z_M: + gtype = 3004; + ndims = 4; + break; + case GAIA_XY_Z: + gtype = 1004; + ndims = 3; + break; + case GAIA_XY_M: + gtype = 2004; + ndims = 3; + break; + default: + gtype = 4; + ndims = 2; + break; + }; + break; + case GAIA_MULTILINESTRING: + switch (cast_dims) + { + case GAIA_XY_Z_M: + gtype = 3005; + ndims = 4; + break; + case GAIA_XY_Z: + gtype = 1005; + ndims = 3; + break; + case GAIA_XY_M: + gtype = 2005; + ndims = 3; + break; + default: + gtype = 5; + ndims = 2; + break; + }; + break; + case GAIA_MULTIPOLYGON: + switch (cast_dims) + { + case GAIA_XY_Z_M: + gtype = 3006; + ndims = 4; + break; + case GAIA_XY_Z: + gtype = 1006; + ndims = 3; + break; + case GAIA_XY_M: + gtype = 2006; + ndims = 3; + break; + default: + gtype = 6; + ndims = 2; + break; + }; + break; + case GAIA_GEOMETRYCOLLECTION: + switch (cast_dims) + { + case GAIA_XY_Z_M: + gtype = 3007; + ndims = 4; + break; + case GAIA_XY_Z: + gtype = 1007; + ndims = 3; + break; + case GAIA_XY_M: + gtype = 2007; + ndims = 3; + break; + default: + gtype = 7; + ndims = 2; + break; + }; + break; + }; + sqlite3_bind_int (stmt, 1, gtype); + sqlite3_bind_int (stmt, 2, ndims); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + return 0; + } + sqlite3_finalize (stmt); + +/* applying type casting to already inserted Geometries */ + xtable = gaiaDoubleQuotedSql (table); + xgeom = gaiaDoubleQuotedSql (geometry); + xtype = "Geometry"; + xdims = "XY"; + switch (cast_type) + { + case GAIA_POINT: + xtype = "Point"; + break; + case GAIA_LINESTRING: + xtype = "Linestring"; + break; + case GAIA_POLYGON: + xtype = "Polygon"; + break; + case GAIA_MULTIPOINT: + xtype = "MultiPoint"; + break; + case GAIA_MULTILINESTRING: + xtype = "MultiLinestring"; + break; + case GAIA_MULTIPOLYGON: + xtype = "MultiPolygon"; + break; + case GAIA_GEOMETRYCOLLECTION: + xtype = "GeometryCollection"; + break; + }; + switch (cast_dims) + { + case GAIA_XY_Z_M: + xdims = "XYZM"; + break; + case GAIA_XY_Z: + xdims = "XYZ"; + break; + case GAIA_XY_M: + xdims = "XYM"; + break; + }; + sql = + sqlite3_mprintf + ("UPDATE \"%s\" SET \"%s\" = CastTo%s(CastTo%s(\"%s\"))", xtable, xgeom, + xtype, xdims, xgeom); + free (xtable); + free (xgeom); + ret = sqlite3_exec (sqlite, sql, NULL, 0, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + return 0; + } + + return 1; +} + +static void +drop_tmp_table (sqlite3 * sqlite, const char *tmp_table) +{ +/* dropping the auxiliary temporary table */ + char *sql; + char *xtable; + int ret; + + xtable = gaiaDoubleQuotedSql (tmp_table); + sql = sqlite3_mprintf ("DROP TABLE \"%s\"", xtable); + free (xtable); + ret = sqlite3_exec (sqlite, sql, NULL, 0, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + spatialite_e ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); +} + +static void +update_repaired (sqlite3 * sqlite, const char *table, const char *geometry, + const char *tmp_table, int old_type, int new_type) +{ +/* updating all repaired geometries */ + char *sql; + int cast_type = -1; + int cast_dims = -1; + int type; + char *xtmp_table; + char *xtable; + char *xgeom; + const char *casttype; + const char *castdims; + int ret; + int is_error = 0; + sqlite3_stmt *stmt; + sqlite3_stmt *stmt_out; + +/* determining the final Geometry Type */ + type = eval_type (old_type, new_type); + if (type != old_type) + { + /* determining the eventual Castings to be applied */ + cast_type = eval_cast_type (old_type, new_type); + cast_dims = eval_cast_dims (old_type, new_type); + } + +/* preparing the SELECT statement */ + xtmp_table = gaiaDoubleQuotedSql (tmp_table); + sql = sqlite3_mprintf ("SELECT ref_rowid, repaired_geometry FROM \"%s\" " + "WHERE repaired_geometry IS NOT NULL", xtmp_table); + free (xtmp_table); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + +/* preparing the UPDATE statement */ + xtable = gaiaDoubleQuotedSql (table); + xgeom = gaiaDoubleQuotedSql (geometry); + switch (new_type) + { + case 1: + casttype = "Point"; + castdims = "XY"; + break; + case 1001: + casttype = "Point"; + castdims = "XYZ"; + break; + case 2001: + casttype = "Point"; + castdims = "XYM"; + break; + case 3001: + casttype = "Point"; + castdims = "XYZM"; + break; + case 2: + casttype = "Linestring"; + castdims = "XY"; + break; + case 1002: + casttype = "Linestring"; + castdims = "XYZ"; + break; + case 2002: + casttype = "Linestring"; + castdims = "XYM"; + break; + case 3002: + casttype = "Linestring"; + castdims = "XYZM"; + break; + case 3: + casttype = "Polygon"; + castdims = "XY"; + break; + case 1003: + casttype = "Polygon"; + castdims = "XYZ"; + break; + case 2003: + casttype = "Polygon"; + castdims = "XYM"; + break; + case 3003: + casttype = "Polygon"; + castdims = "XYZM"; + break; + case 4: + casttype = "MultiPoint"; + castdims = "XY"; + break; + case 1004: + casttype = "MultiPoint"; + castdims = "XYZ"; + break; + case 2004: + casttype = "MultiPoint"; + castdims = "XYM"; + break; + case 3004: + casttype = "MultiPoint"; + castdims = "XYZM"; + break; + case 5: + casttype = "MultiLinestring"; + castdims = "XY"; + break; + case 1005: + casttype = "MultiLinestring"; + castdims = "XYZ"; + break; + case 2005: + casttype = "MultiLinestring"; + castdims = "XYM"; + break; + case 3005: + casttype = "MultiLinestring"; + castdims = "XYZM"; + break; + case 6: + casttype = "MultiPolygon"; + castdims = "XY"; + break; + case 1006: + casttype = "MultiPolygon"; + castdims = "XYZ"; + break; + case 2006: + casttype = "MultiPolygon"; + castdims = "XYM"; + break; + case 3006: + casttype = "MultiPolygon"; + castdims = "XYZM"; + break; + case 7: + casttype = "GeometryCollection"; + castdims = "XY"; + break; + case 1007: + casttype = "GeometryCollection"; + castdims = "XYZ"; + break; + case 2007: + casttype = "GeometryCollection"; + castdims = "XYM"; + break; + case 3007: + casttype = "GeometryCollection"; + castdims = "XYZM"; + break; + case 0: + casttype = "Multi"; + castdims = "XY"; + break; + case 1000: + casttype = "Multi"; + castdims = "XYZ"; + break; + case 2000: + casttype = "Multi"; + castdims = "XYM"; + break; + case 3000: + casttype = "Multi"; + castdims = "XYZM"; + break; + default: + casttype = "Multi"; + castdims = "XY"; + break; + }; + sql = sqlite3_mprintf ("UPDATE \"%s\" SET \"%s\" = CastTo%s(CastTo%s(?)) " + "WHERE ROWID = ?", xtable, xgeom, casttype, + castdims); + free (xtable); + free (xgeom); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt_out, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + +/* starting a Transaction */ + ret = sqlite3_exec (sqlite, "BEGIN", NULL, 0, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + + if (cast_type != -1 || cast_dims != -1) + { + /* changing the Geometry Type to the whole table/column */ + if (!change_geometry_type + (sqlite, table, geometry, cast_type, cast_dims)) + return; + } + + while (1) + { + /* scrolling the result set */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing one row from the resultset */ + sqlite3_int64 rowid = sqlite3_column_int (stmt, 0); + if (sqlite3_column_type (stmt, 1) == SQLITE_BLOB) + { + const unsigned char *blob = sqlite3_column_blob (stmt, 1); + int n_bytes = sqlite3_column_bytes (stmt, 1); + /* updating the main table */ + sqlite3_reset (stmt_out); + sqlite3_clear_bindings (stmt_out); + sqlite3_bind_blob (stmt_out, 1, blob, n_bytes, + SQLITE_STATIC); + sqlite3_bind_int64 (stmt_out, 2, rowid); + ret = sqlite3_step (stmt_out); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + is_error = 1; + spatialite_e + ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + break; + } + } + } + else + { + spatialite_e ("check_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + break; + } + } + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_out); + + if (is_error) + { + /* Rollback */ + ret = sqlite3_exec (sqlite, "ROLLBACK", NULL, 0, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + goto stop; + } + else + { + /* dropping the auxiliary temporary table */ + drop_tmp_table (sqlite, tmp_table); + /* committing the still pending Transaction */ + ret = sqlite3_exec (sqlite, "COMMIT", NULL, 0, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + } + stop: + return; +} + +static int +sanitize_geometry_column_common (const void *p_cache, sqlite3 * sqlite, + const char *table, const char *geom, + const char *tmp_table, const char *report_path, + int *n_invalids, int *n_repaired, + int *n_discarded, int *n_failures, + char **err_msg) +{ +/* attempts to repair invalid Geometries from a Geometry Column */ + char *sql; + char *xtable; + char *xgeom; + char *xtmp_table; + sqlite3_stmt *stmt; + sqlite3_stmt *stmt_out; + int ret; + int gtype; + int srid; + const char *x_type; + const char *x_dims; + char num[256]; + FILE *out = NULL; + const char *p_msg; + const char *p_summary; + char summary[1024]; + int is_error = 0; + time_t v_time; + struct tm *v_tm; + const char *day; + const char *month; + int len; + struct sanitize_report_row *p_r; + struct sanitize_report *report = alloc_sanitize_report (); + + if (err_msg != NULL) + *err_msg = NULL; + + if (!check_table_column (sqlite, table, geom, >ype, &srid)) + { + spatialite_e ("sanitize_geometry_column error: <%s><%s>\n" + "Not defined in \"geometry_columns\"", table, geom); + if (err_msg != NULL) + { + char *msg = + sqlite3_mprintf + ("sanitize_geometry_column error: <%s><%s>\n" + "Not defined in \"geometry_columns\"", table, geom); + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + sqlite3_free (msg); + } + goto stop; + } + +/* decoding Geometry Type and Dimensions */ + switch (gtype) + { + case 0: + x_type = "GEOMETRY"; + x_dims = "XY"; + break; + case 1000: + x_type = "GEOMETRY"; + x_dims = "XYZ"; + break; + case 2000: + x_type = "GEOMETRY"; + x_dims = "XYM"; + break; + case 3000: + x_type = "GEOMETRY"; + x_dims = "XYZM"; + break; + case 1: + x_type = "POINT"; + x_dims = "XY"; + break; + case 1001: + x_type = "POINT"; + x_dims = "XYZ"; + break; + case 2001: + x_type = "POINT"; + x_dims = "XYM"; + break; + case 3001: + x_type = "POINT"; + x_dims = "XYZM"; + break; + case 2: + x_type = "LINESTRING"; + x_dims = "XY"; + break; + case 1002: + x_type = "LINESTRING"; + x_dims = "XYZ"; + break; + case 2002: + x_type = "LINESTRING"; + x_dims = "XYM"; + break; + case 3002: + x_type = "LINESTRING"; + x_dims = "XYZM"; + break; + case 3: + x_type = "POLYGON"; + x_dims = "XY"; + break; + case 1003: + x_type = "POLYGON"; + x_dims = "XYZ"; + break; + case 2003: + x_type = "POLYGON"; + x_dims = "XYM"; + break; + case 3003: + x_type = "POLYGON"; + x_dims = "XYZM"; + break; + case 4: + x_type = "MULTIPOINT"; + x_dims = "XY"; + break; + case 1004: + x_type = "MULTIPOINT"; + x_dims = "XYZ"; + break; + case 2004: + x_type = "MULTIPOINT"; + x_dims = "XYM"; + break; + case 3004: + x_type = "MULTIPOINT"; + x_dims = "XYZM"; + break; + case 5: + x_type = "MULTILINESTRING"; + x_dims = "XY"; + break; + case 1005: + x_type = "MULTILINESTRING"; + x_dims = "XYZ"; + break; + case 2005: + x_type = "MULTILINESTRING"; + x_dims = "XYM"; + break; + case 3005: + x_type = "MULTILINESTRING"; + x_dims = "XYZM"; + break; + case 6: + x_type = "MULTIPOLYGON"; + x_dims = "XY"; + break; + case 1006: + x_type = "MULTIPOLYGON"; + x_dims = "XYZ"; + break; + case 2006: + x_type = "MULTIPOLYGON"; + x_dims = "XYM"; + break; + case 3006: + x_type = "MULTIPOLYGON"; + x_dims = "XYZM"; + break; + case 7: + x_type = "GEOMETRYCOLLECTION"; + x_dims = "XY"; + break; + case 1007: + x_type = "GEOMETRYCOLLECTION"; + x_dims = "XYZ"; + break; + case 2007: + x_type = "GEOMETRYCOLLECTION"; + x_dims = "XYM"; + break; + case 3007: + x_type = "GEOMETRYCOLLECTION"; + x_dims = "XYZM"; + break; + default: + x_type = "UNKNOWN"; + x_dims = "UNKNOWN"; + break; + }; + + xtable = gaiaDoubleQuotedSql (table); + xgeom = gaiaDoubleQuotedSql (geom); + sql = sqlite3_mprintf ("SELECT ROWID, \"%s\" FROM \"%s\"", xgeom, xtable); + free (xtable); + free (xgeom); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + if (err_msg != NULL) + { + char *msg = + sqlite3_mprintf ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + sqlite3_free (msg); + } + goto stop; + } + +/* creating the auxiliary temporary table */ + xtmp_table = gaiaDoubleQuotedSql (tmp_table); + sql = + sqlite3_mprintf + ("CREATE TABLE \"%s\" (ref_rowid INTEGER NOT NULL PRIMARY KEY, " + "input_geometry BLOB, repaired_geometry BLOB, discarded_geometry BLOB)", + xtmp_table); + free (xtmp_table); + ret = sqlite3_exec (sqlite, sql, NULL, 0, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + if (err_msg != NULL) + { + char *msg = + sqlite3_mprintf ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + sqlite3_free (msg); + } + goto stop; + } + +/* preparing the INSERT INTO statement */ + xtmp_table = gaiaDoubleQuotedSql (tmp_table); + sql = sqlite3_mprintf ("INSERT INTO \"%s\" " + "(ref_rowid, input_geometry, repaired_geometry, discarded_geometry) " + "VALUES (?, ?, ?, ?)", xtmp_table); + free (xtmp_table); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt_out, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + if (err_msg != NULL) + { + char *msg = + sqlite3_mprintf ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + sqlite3_free (msg); + } + goto stop; + } + +/* starting a Transaction */ + ret = sqlite3_exec (sqlite, "BEGIN", NULL, 0, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + if (err_msg != NULL) + { + char *msg = + sqlite3_mprintf ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + sqlite3_free (msg); + } + goto stop; + } + +/* opening the HTML report */ + out = fopen (report_path, "wb"); + if (out == NULL) + goto stop; + + while (1) + { + /* scrolling the result set */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing one row from the resultset */ + gaiaGeomCollPtr geom = NULL; + sqlite3_int64 rowid = sqlite3_column_int (stmt, 0); + if (sqlite3_column_type (stmt, 1) == SQLITE_BLOB) + { + const unsigned char *blob = sqlite3_column_blob (stmt, 1); + int n_bytes = sqlite3_column_bytes (stmt, 1); + geom = gaiaFromSpatiaLiteBlobWkb (blob, n_bytes); + } + if (geom) + { + /* checking a geometry for validity */ + int valret; + if (p_cache != NULL) + { + gaiaResetGeosMsg_r (p_cache); + valret = gaiaIsValid_r (p_cache, geom); + } + else + { + gaiaResetGeosMsg (); + valret = gaiaIsValid (geom); + } + if (!valret) + { + unsigned char *blob_geom; + int blob_sz_geom; + unsigned char *blob_saned; + int blob_sz_saned; + unsigned char *blob_dscrd; + int blob_sz_dscrd; + const char *error; + const char *warning; + gaiaGeomCollPtr repaired; + gaiaGeomCollPtr discarded; + report->n_invalids += 1; + gaiaResetLwGeomMsg (); + repaired = gaiaMakeValid (geom); + discarded = gaiaMakeValidDiscarded (geom); + error = gaiaGetLwGeomErrorMsg (); + warning = gaiaGetLwGeomWarningMsg (); + if (discarded == NULL) + p_summary = NULL; + else + p_summary = + createDiscardedSummary (discarded, summary); + addMessageToSanitizeReport (report, rowid, + (repaired == + NULL) ? 0 : 1, error, + warning, p_summary); + /* inserting into the auxiliary temporary table */ + sqlite3_reset (stmt_out); + sqlite3_clear_bindings (stmt_out); + sqlite3_bind_int64 (stmt_out, 1, rowid); + if (!repaired) + { + report->input_type = + eval_type (report->input_type, + gaiaGeometryType (geom)); + gaiaToSpatiaLiteBlobWkb (geom, &blob_geom, + &blob_sz_geom); + sqlite3_bind_blob (stmt_out, 2, blob_geom, + blob_sz_geom, free); + sqlite3_bind_null (stmt_out, 3); + } + else + { + report->repaired_type = + eval_type (report->repaired_type, + gaiaGeometryType (repaired)); + sqlite3_bind_null (stmt_out, 2); + gaiaToSpatiaLiteBlobWkb (repaired, + &blob_saned, + &blob_sz_saned); + sqlite3_bind_blob (stmt_out, 3, blob_saned, + blob_sz_saned, free); + } + if (discarded) + { + report->discarded_type = + eval_type (report->discarded_type, + gaiaGeometryType (discarded)); + gaiaToSpatiaLiteBlobWkb (discarded, + &blob_dscrd, + &blob_sz_dscrd); + sqlite3_bind_blob (stmt_out, 4, blob_dscrd, + blob_sz_dscrd, free); + } + else + sqlite3_bind_null (stmt_out, 4); + /* inserting into the auxiliary temporary table */ + ret = sqlite3_step (stmt_out); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + is_error = 1; + spatialite_e + ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + if (err_msg != NULL) + { + char *msg = + sqlite3_mprintf + ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + sqlite3_free (msg); + } + break; + } + if (repaired) + gaiaFreeGeomColl (repaired); + if (discarded) + gaiaFreeGeomColl (discarded); + } + gaiaFreeGeomColl (geom); + } + } + else + { + spatialite_e ("check_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + if (err_msg != NULL) + { + char *msg = + sqlite3_mprintf + ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + sqlite3_free (msg); + } + break; + } + } + sqlite3_finalize (stmt); + sqlite3_finalize (stmt_out); + + if (is_error) + { + /* Rollback */ + ret = sqlite3_exec (sqlite, "ROLLBACK", NULL, 0, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + if (err_msg != NULL) + { + char *msg = + sqlite3_mprintf + ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + sqlite3_free (msg); + } + goto stop; + } + goto stop; + } + else + { + /* committing the still pending Transaction */ + ret = sqlite3_exec (sqlite, "COMMIT", NULL, 0, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + if (err_msg != NULL) + { + char *msg = + sqlite3_mprintf + ("sanitize_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + sqlite3_free (msg); + } + goto stop; + } + } + +/* generating the HTML header */ + fprintf (out, + "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\n"); + fprintf (out, "<html>\n\t<head>\n"); + fprintf (out, + "\t\t<meta content=\"text/html; charset=UTF-8\" http-equiv=\"content-type\">\n"); + fprintf (out, + "\t\t<title>SpatiaLite Repair Geometries - Table: %s\n", + table); + fprintf (out, "\t\t\n"); + fprintf (out, "\t\n\t\n"); + time (&v_time); + v_tm = localtime (&v_time); + switch (v_tm->tm_wday) + { + case 0: + day = "Sun"; + break; + case 1: + day = "Mon"; + break; + case 2: + day = "Tue"; + break; + case 3: + day = "Wed"; + break; + case 4: + day = "Thu"; + break; + case 5: + day = "Fri"; + break; + case 6: + day = "Sat"; + break; + }; + switch (v_tm->tm_mon) + { + case 0: + month = "Jan"; + break; + case 1: + month = "Feb"; + break; + case 2: + month = "Mar"; + break; + case 3: + month = "Apr"; + break; + case 4: + month = "May"; + break; + case 5: + month = "Jun"; + break; + case 6: + month = "Jul"; + break; + case 7: + month = "Aug"; + break; + case 8: + month = "Sep"; + break; + case 9: + month = "Oct"; + break; + case 10: + month = "Nov"; + break; + case 11: + month = "Dec"; + break; + }; + fprintf (out, "\t\t%d-%s-%d, %s [%02d:%02d:%02d]
    \n", + v_tm->tm_year + 1900, month, v_tm->tm_mday, day, v_tm->tm_hour, + v_tm->tm_min, v_tm->tm_sec); + fprintf (out, "\t\t

    SpatiaLite Repair Geometries

    \n"); + +/* generating the summary sub-report */ + fprintf (out, "\t\t

    Summary

    \n"); + fprintf (out, + "\t\t\n"); + fprintf (out, + "\t\t\t\n"); + fprintf (out, "\t\t\t\n", table); + fprintf (out, "\t\t\t\n", geom); + fprintf (out, "\t\t\t\n", x_type); + fprintf (out, "\t\t\t\n", x_dims); + fprintf (out, "\t\t\t\n", + srid); + fprintf (out, + "\t\t\t\n"); + fprintf (out, + "\t\t\t\n", + report->n_invalids); + if (report->n_repaired > 0) + fprintf (out, + "\t\t\t\n", + report->n_repaired); + else + fprintf (out, + "\t\t\t\n"); + if (report->n_discarded > 0) + fprintf (out, + "\t\t\t\n", + report->n_discarded); + else + fprintf (out, + "\t\t\t\n"); + if (report->n_not_repaired > 0) + fprintf (out, + "\t\t\t\n", + report->n_not_repaired); + else + fprintf (out, + "\t\t\t\n"); + fprintf (out, + "\t\t\t\n"); + if (report->n_not_repaired > 0) + { + fprintf (out, + "\t\t\t\n", + tmp_table); + } + else if (report->n_discarded > 0) + { + fprintf (out, + "\t\t\t\n"); + } + else if (report->n_repaired > 0) + { + fprintf (out, + "\t\t\t\n"); + } + else + { + fprintf (out, + "\t\t\t\n"); + } + fprintf (out, "\t\t
    Table / Layer
    Table%s
    Geometry Column%s
    Geometry Type%s
    Dimensions%s
    SRID%d
    Statistics
    Invalid Geometries%d
    Repaired Geometries (fully recovered)%d
    Repaired Geometries (fully recovered)NONE
    Repaired Geometries (by discarding fragments)%d
    Repaired Geometries (by discarding fragments)NONE
    Failures (Not Repaired Geometries)%d
    Failures (Not Repaired Geometries)NONE
    Suggested Action
    This layer contains severly damaged Geometries (beyond any possible repair);
    "); + fprintf (out, + "please manually check the %s table.
    This layer contains valid but dubious Geometries;
    "); + fprintf (out, "a repair action is suggested.
    This layer has been succesfully repaired and is now completely valid;
    "); + fprintf (out, + "doesn't require any further corrective action.
    This layer already was completely valid;
    "); + fprintf (out, "no corrective action was applied.
    \n"); + + if (report->n_not_repaired != 0) + { + /* generating the NotRepaired sub-report */ + fprintf (out, "\t\t\t
    \n\t\t

    Not Repaired Geometries

    \n"); + fprintf (out, + "\t\t\n"); + fprintf (out, + "\t\t\t"); + fprintf (out, ""); + fprintf (out, + "\n"); + p_r = report->first; + while (p_r) + { + if (p_r->repaired != 0) + { + p_r = p_r->next; + continue; + } + sprintf (num, FRMT64, p_r->rowid); + p_msg = "Unknown cause"; + if (p_r->error) + p_msg = p_r->error; + else if (p_r->warning) + p_msg = p_r->warning; + fprintf (out, + "\t\t\t\n", + num, p_msg); + p_r = p_r->next; + } + fprintf (out, "\t\t
    ROWIDStatusError Message
    %sNot Repaired (beyond possible repair)%s
    \n"); + } + + if (report->n_discarded != 0) + { + /* generating the DiscardedFragments sub-report */ + fprintf (out, + "\t\t\t
    \n\t\t

    Repaired Geometries (by discarding fragments)

    \n"); + fprintf (out, + "\t\t\n"); + fprintf (out, + "\t\t\t"); + fprintf (out, ""); + fprintf (out, + "\n"); + p_r = report->first; + while (p_r) + { + if (p_r->summary == NULL) + { + p_r = p_r->next; + continue; + } + sprintf (num, FRMT64, p_r->rowid); + fprintf (out, + "\t\t\t\n", + num, p_r->summary); + p_r = p_r->next; + } + fprintf (out, "\t\t
    ROWIDStatusDiscarded fragments summary
    %sRepaired by discarding fragments%s
    \n"); + } + +/* generating the HTML footer */ + fprintf (out, "\t\n\n"); + + fclose (out); + +/* post-processing actions */ + if (report->n_invalids == 0) + { + /* we can immediately drop the tmp-table for sure */ + drop_tmp_table (sqlite, tmp_table); + } + if (report->n_repaired > 0 && report->n_discarded == 0 + && report->n_not_repaired == 0) + { + /* we can safely update all repaired geometries, then dropping the tmp_table */ + update_repaired (sqlite, table, geom, tmp_table, gtype, + report->repaired_type); + } + + if (n_invalids != NULL) + *n_invalids = report->n_invalids; + if (n_repaired != NULL) + *n_repaired = report->n_repaired; + if (n_discarded != NULL) + *n_discarded = report->n_discarded; + if (n_failures != NULL) + *n_failures = report->n_not_repaired; + free_sanitize_report (report); + return 1; + stop: + free_sanitize_report (report); + if (out) + fclose (out); + return 0; +} + +SPATIALITE_DECLARE int +sanitize_geometry_column (sqlite3 * sqlite, const char *table, const char *geom, + const char *tmp_table, const char *report_path, + int *n_invalids, int *n_repaired, int *n_discarded, + int *n_failures, char **err_msg) +{ + return sanitize_geometry_column_common (NULL, sqlite, table, geom, + tmp_table, report_path, n_invalids, + n_repaired, n_discarded, n_failures, + err_msg); +} + +SPATIALITE_DECLARE int +sanitize_geometry_column_r (const void *p_cache, sqlite3 * sqlite, + const char *table, const char *geom, + const char *tmp_table, const char *report_path, + int *n_invalids, int *n_repaired, int *n_discarded, + int *n_failures, char **err_msg) +{ + return sanitize_geometry_column_common (p_cache, sqlite, table, geom, + tmp_table, report_path, n_invalids, + n_repaired, n_discarded, n_failures, + err_msg); +} + +static int +sanitize_all_geometry_columns_common (const void *p_cache, sqlite3 * sqlite, + const char *tmp_prefix, + const char *output_dir, + int *x_not_repaired, char **err_msg) +{ +/* attempts to repair invalid Geometries from all Geometry Columns */ + const char *sql; + int ret; + int i; + char **results; + int rows; + int columns; + int n_invalids; + int n_repaired; + int n_discarded; + int n_failures; + char *report; + char *tmp_table; + FILE *out = NULL; + time_t v_time; + struct tm *v_tm; + const char *day; + const char *month; + int sum_not_repaired = 0; + + if (err_msg != NULL) + *err_msg = NULL; + +/* attempting to create the output directory */ +#if defined(_WIN32) + _mkdir (output_dir); +#else + mkdir (output_dir, 0777); +#endif + +/* opening the HTML report */ + report = sqlite3_mprintf ("%s/index.html", output_dir); + out = fopen (report, "wb"); + sqlite3_free (report); + if (out == NULL) + goto stop; + +/* generating the HTML header */ + fprintf (out, + "\n"); + fprintf (out, "\n\t\n"); + fprintf (out, + "\t\t\n"); + fprintf (out, + "\t\tSpatiaLite Repair Geometries - All Tables\n"); + fprintf (out, "\t\t\n"); + fprintf (out, "\t\n\t\n"); + + time (&v_time); + v_tm = localtime (&v_time); + switch (v_tm->tm_wday) + { + case 0: + day = "Sun"; + break; + case 1: + day = "Mon"; + break; + case 2: + day = "Tue"; + break; + case 3: + day = "Wed"; + break; + case 4: + day = "Thu"; + break; + case 5: + day = "Fri"; + break; + case 6: + day = "Sat"; + break; + }; + switch (v_tm->tm_mon) + { + case 0: + month = "Jan"; + break; + case 1: + month = "Feb"; + break; + case 2: + month = "Mar"; + break; + case 3: + month = "Apr"; + break; + case 4: + month = "May"; + break; + case 5: + month = "Jun"; + break; + case 6: + month = "Jul"; + break; + case 7: + month = "Aug"; + break; + case 8: + month = "Sep"; + break; + case 9: + month = "Oct"; + break; + case 10: + month = "Nov"; + break; + case 11: + month = "Dec"; + break; + }; + fprintf (out, "\t\t%d-%s-%d, %s [%02d:%02d:%02d]
    \n", + v_tm->tm_year + 1900, month, v_tm->tm_mday, day, v_tm->tm_hour, + v_tm->tm_min, v_tm->tm_sec); + fprintf (out, "\t\t

    SpatiaLite Repair Geometries

    \n"); + +/* table header */ + fprintf (out, + "\t\t\n"); + fprintf (out, + "\t\t\t"); + fprintf (out, ""); + fprintf (out, ""); + fprintf (out, + ""); + fprintf (out, + ""); + fprintf (out, + ""); + fprintf (out, + ""); + fprintf (out, + "\n"); + + sql = "SELECT f_table_name, f_geometry_column FROM geometry_columns"; + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + goto stop; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + const char *cls_1; + const char *cls_2; + const char *cls_msg; + const char *p_msg; + const char *table = results[(i * columns) + 0]; + const char *geom = results[(i * columns) + 1]; + report = sqlite3_mprintf ("%s/lyr_%04d.html", output_dir, i); + tmp_table = + sqlite3_mprintf ("%s%s_%s", tmp_prefix, table, geom); + if (p_cache != NULL) + ret = + sanitize_geometry_column_r (p_cache, sqlite, table, + geom, tmp_table, report, + &n_invalids, &n_repaired, + &n_discarded, &n_failures, + err_msg); + else + ret = + sanitize_geometry_column (sqlite, table, geom, + tmp_table, report, + &n_invalids, &n_repaired, + &n_discarded, &n_failures, + err_msg); + sqlite3_free (report); + sqlite3_free (tmp_table); + fprintf (out, + "\t\t\t", + i); + fprintf (out, "", table, geom); + sum_not_repaired += n_failures; + if (n_invalids == 0) + { + p_msg = "NONE: this layer was already fully valid"; + cls_msg = "nil"; + } + else if (n_discarded == 0 && n_failures == 0) + { + p_msg = + "NONE: this layer has been succesfully sanitized and is now fully valid"; + cls_msg = "ok"; + } + else if (n_discarded == 0 && n_failures > 0) + { + p_msg = "Please check all discarded fragments"; + cls_msg = "wng"; + } + else + { + p_msg = + "Manually adjust all Geometries beyond possible repair, then retry"; + cls_msg = "err"; + } + if (n_repaired == 0) + cls_1 = "nil"; + else + cls_1 = "ok"; + fprintf (out, + "", + n_invalids, cls_1, n_repaired); + if (n_discarded == 0) + cls_1 = "nil"; + else + cls_1 = "wng"; + if (n_failures == 0) + cls_2 = "nil"; + else + cls_2 = "err"; + fprintf (out, + "", + cls_1, n_discarded, cls_2, n_failures); + fprintf (out, "\n", cls_msg, + p_msg); + } + } + sqlite3_free_table (results); + +/* generating the HTML footer */ + fprintf (out, "\t\t
    Show DetailsTableGeometryInvalid GeometriesRepaired GeometriesRepaired Geometries
    (by Discarding Fragments)
    Repair Failures
    (beyond possible repair)
    Suggested Action
    show%s%s%d%d%d%d%s
    \n\t\n\n"); + + fclose (out); + if (x_not_repaired != NULL) + *x_not_repaired = sum_not_repaired; + return 1; + stop: + return 0; +} + +SPATIALITE_DECLARE int +sanitize_all_geometry_columns (sqlite3 * sqlite, + const char *tmp_prefix, + const char *output_dir, int *x_not_repaired, + char **err_msg) +{ + return sanitize_all_geometry_columns_common (NULL, sqlite, tmp_prefix, + output_dir, x_not_repaired, + err_msg); +} + +SPATIALITE_DECLARE int +sanitize_all_geometry_columns_r (const void *p_cache, sqlite3 * sqlite, + const char *tmp_prefix, + const char *output_dir, int *x_not_repaired, + char **err_msg) +{ + return sanitize_all_geometry_columns_common (p_cache, sqlite, tmp_prefix, + output_dir, x_not_repaired, + err_msg); +} + +#else /* LIBXML2 isn't enabled */ + +SPATIALITE_DECLARE int +sanitize_all_geometry_columns (sqlite3 * sqlite, + const char *tmp_prefix, + const char *output_dir, int *x_not_repaired, + char **err_msg) +{ +/* LWGEOM isn't enabled: always returning an error */ + int len; + const char *msg = "Sorry ... libspatialite was built disabling LWGEOM\n" + "and is thus unable to support MakeValid"; + +/* silencing stupid compiler warnings */ + if (sqlite == NULL || tmp_prefix == NULL || output_dir == NULL + || x_not_repaired == NULL) + tmp_prefix = NULL; + + if (err_msg == NULL) + return 0; + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + return 0; +} + +SPATIALITE_DECLARE int +sanitize_all_geometry_columns_r (const void *p_cache, sqlite3 * sqlite, + const char *tmp_prefix, + const char *output_dir, int *x_not_repaired, + char **err_msg) +{ +/* LWGEOM isn't enabled: always returning an error */ + int len; + const char *msg = "Sorry ... libspatialite was built disabling LWGEOM\n" + "and is thus unable to support MakeValid"; + +/* silencing stupid compiler warnings */ + if (p_cache == NULL || sqlite == NULL || tmp_prefix == NULL + || output_dir == NULL || x_not_repaired == NULL) + tmp_prefix = NULL; + + if (err_msg == NULL) + return 0; + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + return 0; +} + +SPATIALITE_DECLARE int +sanitize_geometry_column (sqlite3 * sqlite, const char *table, const char *geom, + const char *tmp_table, const char *report_path, + int *n_invalids, int *n_repaired, int *n_discarded, + int *n_failures, char **err_msg) +{ +/* LWGEOM isn't enabled: always returning an error */ + int len; + const char *msg = "Sorry ... libspatialite was built disabling LWGEOM\n" + "and is thus unable to support MakeValid"; + +/* silencing stupid compiler warnings */ + if (sqlite == NULL || table == NULL || geom == NULL || tmp_table == NULL + || report_path == NULL || n_invalids == NULL || n_repaired == NULL + || n_discarded == NULL || n_failures == NULL) + table = NULL; + + + if (err_msg == NULL) + return 0; + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + return 0; +} + +SPATIALITE_DECLARE int +sanitize_geometry_column_r (const void *p_cache, sqlite3 * sqlite, + const char *table, const char *geom, + const char *tmp_table, const char *report_path, + int *n_invalids, int *n_repaired, int *n_discarded, + int *n_failures, char **err_msg) +{ +/* LWGEOM isn't enabled: always returning an error */ + int len; + const char *msg = "Sorry ... libspatialite was built disabling LWGEOM\n" + "and is thus unable to support MakeValid"; + +/* silencing stupid compiler warnings */ + if (p_cache == NULL || sqlite == NULL || table == NULL || geom == NULL + || tmp_table == NULL || report_path == NULL || n_invalids == NULL + || n_repaired == NULL || n_discarded == NULL || n_failures == NULL) + table = NULL; + + + if (err_msg == NULL) + return 0; + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + return 0; +} + +#endif /* end LWGEOM conditionals */ + + +#ifndef OMIT_GEOS /* only if GEOS is supported */ + +static struct validity_report * +alloc_validity_report (void) +{ +/* allocating the report container struct */ + struct validity_report *p = malloc (sizeof (struct validity_report)); + p->first = NULL; + p->last = NULL; + p->n_rows = 0; + p->n_nullgeoms = 0; + p->n_valids = 0; + p->n_invalids = 0; + p->n_warnings = 0; + return p; +} + +static void +free_validity_report (struct validity_report *p) +{ +/* memory cleanup: freeing the report container struct */ + struct validity_report_row *r; + struct validity_report_row *rn; + r = p->first; + while (r) + { + rn = r->next; + if (r->warning != NULL) + free (r->warning); + if (r->error != NULL) + free (r->error); + if (r->extra != NULL) + free (r->extra); + free (r); + r = rn; + } + free (p); +} + +static void +addMessageToValidityReport (struct validity_report *report, sqlite3_int64 rowid, + int valid, const char *error, const char *warning, + const char *extra) +{ +/* adding a message to the report */ + int len; + struct validity_report_row *r = + malloc (sizeof (struct validity_report_row)); + r->rowid = rowid; + r->valid = valid; + r->error = NULL; + r->warning = NULL; + r->extra = NULL; + r->next = NULL; + if (error) + { + len = strlen (error); + r->error = malloc (len + 1); + strcpy (r->error, error); + } + if (warning) + { + len = strlen (warning); + r->warning = malloc (len + 1); + strcpy (r->warning, warning); + } + if (extra) + { + len = strlen (extra); + r->extra = malloc (len + 1); + strcpy (r->extra, extra); + } + if (!valid) + report->n_invalids += 1; + else + report->n_warnings += 1; + if (report->first == NULL) + report->first = r; + if (report->last != NULL) + report->last->next = r; + report->last = r; +} + +static int +check_geometry_column_common (const void *p_cache, sqlite3 * sqlite, + const char *table, const char *geom, + const char *report_path, int *n_rows, + int *n_invalids, char **err_msg) +{ +/* checks a Geometry Column for validity */ + char *sql; + char *xtable; + char *xgeom; + sqlite3_stmt *stmt; + int ret; + int gtype; + int srid; + const char *x_type; + const char *x_dims; + char num[256]; + time_t v_time; + struct tm *v_tm; + const char *day; + const char *month; + FILE *out = NULL; + const char *p_msg; + int len; + struct validity_report_row *p_r; + struct validity_report *report = alloc_validity_report (); + + if (err_msg != NULL) + *err_msg = NULL; + + if (!check_table_column (sqlite, table, geom, >ype, &srid)) + { + spatialite_e ("check_geometry_column error: <%s>\n" + "Not defined in \"geometry_columns\"", table); + if (err_msg != NULL) + { + char *msg = + sqlite3_mprintf ("check_geometry_column error: <%s><%s>\n" + "Not defined in \"geometry_columns\"", + table, geom); + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + sqlite3_free (msg); + } + goto stop; + } + +/* decoding Geometry Type and Dimensions */ + switch (gtype) + { + case 0: + x_type = "GEOMETRY"; + x_dims = "XY"; + break; + case 1000: + x_type = "GEOMETRY"; + x_dims = "XYZ"; + break; + case 2000: + x_type = "GEOMETRY"; + x_dims = "XYM"; + break; + case 3000: + x_type = "GEOMETRY"; + x_dims = "XYZM"; + break; + case 1: + x_type = "POINT"; + x_dims = "XY"; + break; + case 1001: + x_type = "POINT"; + x_dims = "XYZ"; + break; + case 2001: + x_type = "POINT"; + x_dims = "XYM"; + break; + case 3001: + x_type = "POINT"; + x_dims = "XYZM"; + break; + case 2: + x_type = "LINESTRING"; + x_dims = "XY"; + break; + case 1002: + x_type = "LINESTRING"; + x_dims = "XYZ"; + break; + case 2002: + x_type = "LINESTRING"; + x_dims = "XYM"; + break; + case 3002: + x_type = "LINESTRING"; + x_dims = "XYZM"; + break; + case 3: + x_type = "POLYGON"; + x_dims = "XY"; + break; + case 1003: + x_type = "POLYGON"; + x_dims = "XYZ"; + break; + case 2003: + x_type = "POLYGON"; + x_dims = "XYM"; + break; + case 3003: + x_type = "POLYGON"; + x_dims = "XYZM"; + break; + case 4: + x_type = "MULTIPOINT"; + x_dims = "XY"; + break; + case 1004: + x_type = "MULTIPOINT"; + x_dims = "XYZ"; + break; + case 2004: + x_type = "MULTIPOINT"; + x_dims = "XYM"; + break; + case 3004: + x_type = "MULTIPOINT"; + x_dims = "XYZM"; + break; + case 5: + x_type = "MULTILINESTRING"; + x_dims = "XY"; + break; + case 1005: + x_type = "MULTILINESTRING"; + x_dims = "XYZ"; + break; + case 2005: + x_type = "MULTILINESTRING"; + x_dims = "XYM"; + break; + case 3005: + x_type = "MULTILINESTRING"; + x_dims = "XYZM"; + break; + case 6: + x_type = "MULTIPOLYGON"; + x_dims = "XY"; + break; + case 1006: + x_type = "MULTIPOLYGON"; + x_dims = "XYZ"; + break; + case 2006: + x_type = "MULTIPOLYGON"; + x_dims = "XYM"; + break; + case 3006: + x_type = "MULTIPOLYGON"; + x_dims = "XYZM"; + break; + case 7: + x_type = "GEOMETRYCOLLECTION"; + x_dims = "XY"; + break; + case 1007: + x_type = "GEOMETRYCOLLECTION"; + x_dims = "XYZ"; + break; + case 2007: + x_type = "GEOMETRYCOLLECTION"; + x_dims = "XYM"; + break; + case 3007: + x_type = "GEOMETRYCOLLECTION"; + x_dims = "XYZM"; + break; + default: + x_type = "UNKNOWN"; + x_dims = "UNKNOWN"; + break; + }; + + xtable = gaiaDoubleQuotedSql (table); + xgeom = gaiaDoubleQuotedSql (geom); + sql = sqlite3_mprintf ("SELECT ROWID, \"%s\" FROM \"%s\"", xgeom, xtable); + free (xtable); + free (xgeom); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("check_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + if (err_msg != NULL) + { + char *msg = + sqlite3_mprintf ("check_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + sqlite3_free (msg); + } + goto stop; + } + +/* opening the HTML report */ + out = fopen (report_path, "wb"); + if (out == NULL) + goto stop; + + while (1) + { + /* scrolling the result set */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing one row from the resultset */ + gaiaGeomCollPtr geom = NULL; + sqlite3_int64 rowid = sqlite3_column_int (stmt, 0); + report->n_rows += 1; + if (sqlite3_column_type (stmt, 1) == SQLITE_BLOB) + { + const unsigned char *blob = sqlite3_column_blob (stmt, 1); + int n_bytes = sqlite3_column_bytes (stmt, 1); + geom = gaiaFromSpatiaLiteBlobWkb (blob, n_bytes); + } + if (geom) + { + /* checking a geometry for validity */ + int valid; + const char *error; + const char *warning; + const char *extra; + if (p_cache != NULL) + { + gaiaResetGeosMsg_r (p_cache); + valid = gaiaIsValid_r (p_cache, geom); + error = gaiaGetGeosErrorMsg_r (p_cache); + warning = gaiaGetGeosWarningMsg_r (p_cache); + extra = gaiaGetGeosAuxErrorMsg_r (p_cache); + } + else + { + gaiaResetGeosMsg (); + valid = gaiaIsValid (geom); + error = gaiaGetGeosErrorMsg (); + warning = gaiaGetGeosWarningMsg (); + extra = gaiaGetGeosAuxErrorMsg (); + } + if (!valid || error || warning) + addMessageToValidityReport (report, rowid, valid, + error, warning, extra); + else + report->n_valids += 1; + gaiaFreeGeomColl (geom); + } + else + report->n_nullgeoms += 1; + } + else + { + spatialite_e ("check_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + if (err_msg != NULL) + { + char *msg = + sqlite3_mprintf + ("check_geometry_column error: <%s>\n", + sqlite3_errmsg (sqlite)); + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + sqlite3_free (msg); + } + break; + } + } + sqlite3_finalize (stmt); + +/* generating the HTML header */ + fprintf (out, + "\n"); + fprintf (out, "\n\t\n"); + fprintf (out, + "\t\t\n"); + fprintf (out, "\t\tSpatiaLite Validity Check - Table: %s\n", + table); + fprintf (out, "\t\t\n"); + fprintf (out, "\t\n\t\n"); + + time (&v_time); + v_tm = localtime (&v_time); + switch (v_tm->tm_wday) + { + case 0: + day = "Sun"; + break; + case 1: + day = "Mon"; + break; + case 2: + day = "Tue"; + break; + case 3: + day = "Wed"; + break; + case 4: + day = "Thu"; + break; + case 5: + day = "Fri"; + break; + case 6: + day = "Sat"; + break; + }; + switch (v_tm->tm_mon) + { + case 0: + month = "Jan"; + break; + case 1: + month = "Feb"; + break; + case 2: + month = "Mar"; + break; + case 3: + month = "Apr"; + break; + case 4: + month = "May"; + break; + case 5: + month = "Jun"; + break; + case 6: + month = "Jul"; + break; + case 7: + month = "Aug"; + break; + case 8: + month = "Sep"; + break; + case 9: + month = "Oct"; + break; + case 10: + month = "Nov"; + break; + case 11: + month = "Dec"; + break; + }; + fprintf (out, "\t\t%d-%s-%d, %s [%02d:%02d:%02d]
    \n", + v_tm->tm_year + 1900, month, v_tm->tm_mday, day, v_tm->tm_hour, + v_tm->tm_min, v_tm->tm_sec); + fprintf (out, "\t\t

    SpatiaLite Validity Check

    \n"); + +/* generating the summary sub-report */ + fprintf (out, "\t\t

    Summary

    \n"); + fprintf (out, + "\t\t\n"); + fprintf (out, + "\t\t\t\n"); + fprintf (out, "\t\t\t\n", table); + fprintf (out, "\t\t\t\n", geom); + fprintf (out, "\t\t\t\n", x_type); + fprintf (out, "\t\t\t\n", x_dims); + fprintf (out, "\t\t\t\n", + srid); + fprintf (out, + "\t\t\t\n"); + fprintf (out, + "\t\t\t\n", + report->n_rows); + if (report->n_nullgeoms > 0) + fprintf (out, + "\t\t\t\n", + report->n_nullgeoms); + else + fprintf (out, + "\t\t\t\n"); + fprintf (out, + "\t\t\t\n", + report->n_valids); + if (report->n_warnings > 0) + fprintf (out, + "\t\t\t\n", + report->n_warnings); + else + fprintf (out, + "\t\t\t\n"); + if (report->n_invalids > 0) + fprintf (out, + "\t\t\t\n", + report->n_invalids); + else + fprintf (out, + "\t\t\t\n"); + fprintf (out, + "\t\t\t\n"); + if (report->n_invalids > 0) + { + fprintf (out, + "\t\t\t\n"); + } + else if (report->n_warnings > 0) + { + fprintf (out, + "\t\t\t\n"); + } + else + { + fprintf (out, + "\t\t\t\n"); + } + fprintf (out, "\t\t
    Table / Layer
    Table%s
    Geometry Column%s
    Geometry Type%s
    Dimensions%s
    SRID%d
    Statistics
    Total Rows%d
    NULL Geometries%d
    NULL GeometriesNONE
    Valid Geometries (full valid)%d
    Valid Geometries (minor issues)%d
    Valid Geometries (minor issues)NONE
    Invalid Geometries%d
    Invalid GeometriesNONE
    Suggested Action
    This layer contains invalid Geometries;
    "); + fprintf (out, "a repair action is urgently required.
    This layer contains valid but dubious Geometries;
    "); + fprintf (out, "a repair action is suggested.
    This layer is perfectly valid;
    "); + fprintf (out, "doesn't require any corrective action.
    \n"); + + if (report->n_invalids > 0) + { + /* generating the errors sub-report */ + fprintf (out, "\t\t\t
    \n\t\t

    Invalid Geometries List

    \n"); + fprintf (out, + "\t\t\n"); + fprintf (out, + "\t\t\t"); + fprintf (out, + "\n"); + p_r = report->first; + while (p_r) + { + if (p_r->valid != 0) + { + p_r = p_r->next; + continue; + } + sprintf (num, FRMT64, p_r->rowid); + p_msg = "Unknown cause"; + if (p_r->error) + p_msg = p_r->error; + else if (p_r->warning) + p_msg = p_r->warning; + else if (p_r->extra) + p_msg = p_r->extra; + fprintf (out, + "\t\t\t\n", + num, p_msg); + p_r = p_r->next; + } + fprintf (out, "\t\t
    ROWIDError Cause
    %s%s
    \n"); + } + + if (report->n_warnings > 0) + { + /* generating the warnings sub-report */ + fprintf (out, + "\t\t\t
    \n\t\t

    Valid Geometries List (anyway presenting some minor issue)

    \n"); + fprintf (out, + "\t\t\n"); + fprintf (out, + "\t\t\t"); + fprintf (out, + "\n"); + p_r = report->first; + while (p_r) + { + if (p_r->valid != 1) + { + p_r = p_r->next; + continue; + } + sprintf (num, FRMT64, p_r->rowid); + p_msg = "Unknown cause"; + if (p_r->error) + p_msg = p_r->error; + else if (p_r->warning) + p_msg = p_r->warning; + fprintf (out, + "\t\t\t\n", + num, p_msg); + p_r = p_r->next; + } + fprintf (out, "\t\t
    ROWIDWarning Cause
    %s%s
    \n"); + } + +/* generating the HTML footer */ + fprintf (out, "\t\n\n"); + + fclose (out); + if (n_rows != NULL) + *n_rows = report->n_rows; + if (n_invalids != NULL) + *n_invalids = report->n_invalids; + free_validity_report (report); + return 1; + stop: + free_validity_report (report); + if (out) + fclose (out); + return 0; +} + +SPATIALITE_DECLARE int +check_geometry_column (sqlite3 * sqlite, const char *table, const char *geom, + const char *report_path, int *n_rows, int *n_invalids, + char **err_msg) +{ + return check_geometry_column_common (NULL, sqlite, table, geom, report_path, + n_rows, n_invalids, err_msg); +} + +SPATIALITE_DECLARE int +check_geometry_column_r (const void *p_cache, sqlite3 * sqlite, + const char *table, const char *geom, + const char *report_path, int *n_rows, int *n_invalids, + char **err_msg) +{ + return check_geometry_column_common (p_cache, sqlite, table, geom, + report_path, n_rows, n_invalids, + err_msg); +} + +static int +check_all_geometry_columns_common (const void *p_cache, sqlite3 * sqlite, + const char *output_dir, int *x_invalids, + char **err_msg) +{ +/* checks all Geometry Columns for validity */ + const char *sql; + int ret; + int i; + char **results; + int rows; + int columns; + int n_rows; + int n_invalids; + char *report; + FILE *out = NULL; + time_t v_time; + struct tm *v_tm; + const char *day; + const char *month; + int sum_invalids = 0; + +/* attempting to create the output directory */ +#if defined(_WIN32) + _mkdir (output_dir); +#else + mkdir (output_dir, 0777); +#endif + + if (err_msg != NULL) + *err_msg = NULL; + +/* opening the HTML report */ + report = sqlite3_mprintf ("%s/index.html", output_dir); + out = fopen (report, "wb"); + sqlite3_free (report); + if (out == NULL) + goto stop; + +/* generating the HTML header */ + fprintf (out, + "\n"); + fprintf (out, "\n\t\n"); + fprintf (out, + "\t\t\n"); + fprintf (out, + "\t\tSpatiaLite Validity Check - All Tables\n"); + fprintf (out, "\t\t\n"); + fprintf (out, "\t\n\t\n"); + + time (&v_time); + v_tm = localtime (&v_time); + switch (v_tm->tm_wday) + { + case 0: + day = "Sun"; + break; + case 1: + day = "Mon"; + break; + case 2: + day = "Tue"; + break; + case 3: + day = "Wed"; + break; + case 4: + day = "Thu"; + break; + case 5: + day = "Fri"; + break; + case 6: + day = "Sat"; + break; + }; + switch (v_tm->tm_mon) + { + case 0: + month = "Jan"; + break; + case 1: + month = "Feb"; + break; + case 2: + month = "Mar"; + break; + case 3: + month = "Apr"; + break; + case 4: + month = "May"; + break; + case 5: + month = "Jun"; + break; + case 6: + month = "Jul"; + break; + case 7: + month = "Aug"; + break; + case 8: + month = "Sep"; + break; + case 9: + month = "Oct"; + break; + case 10: + month = "Nov"; + break; + case 11: + month = "Dec"; + break; + }; + fprintf (out, "\t\t%d-%s-%d, %s [%02d:%02d:%02d]
    \n", + v_tm->tm_year + 1900, month, v_tm->tm_mday, day, v_tm->tm_hour, + v_tm->tm_min, v_tm->tm_sec); + fprintf (out, "\t\t

    SpatiaLite Validity Check

    \n"); + +/* table header */ + fprintf (out, + "\t\t\n"); + fprintf (out, + "\t\t\t"); + fprintf (out, ""); + fprintf (out, ""); + fprintf (out, ""); + fprintf (out, + ""); + fprintf (out, + "\n"); + + sql = "SELECT f_table_name, f_geometry_column FROM geometry_columns"; + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + goto stop; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + const char *table = results[(i * columns) + 0]; + const char *geom = results[(i * columns) + 1]; + report = sqlite3_mprintf ("%s/lyr_%04d.html", output_dir, i); + if (p_cache != NULL) + ret = + check_geometry_column_r (p_cache, sqlite, table, geom, + report, &n_rows, &n_invalids, + err_msg); + else + ret = + check_geometry_column (sqlite, table, geom, report, + &n_rows, &n_invalids, err_msg); + sqlite3_free (report); + fprintf (out, + "\t\t\t", + i); + fprintf (out, "", table, geom); + sum_invalids += n_invalids; + if (n_invalids == 0) + { + fprintf (out, + "", + n_rows, n_invalids); + fprintf (out, + "\n"); + } + else + { + fprintf (out, + "", + n_rows, n_invalids); + fprintf (out, + "\n"); + } + } + } + sqlite3_free_table (results); + +/* generating the HTML footer */ + fprintf (out, "\t\t
    Show DetailsTableGeometryTotal RowsInvalid GeometriesSuggested Action
    show%s%s%d%dNONE: this layer is fully valid
    %d%dRepairing this layer is urgently required
    \n\t\n\n"); + + fclose (out); + if (x_invalids != NULL) + *x_invalids = sum_invalids; + return 1; + stop: + return 0; +} + +SPATIALITE_DECLARE int +check_all_geometry_columns (sqlite3 * sqlite, + const char *output_dir, int *x_invalids, + char **err_msg) +{ + return check_all_geometry_columns_common (NULL, sqlite, output_dir, + x_invalids, err_msg); +} + +SPATIALITE_DECLARE int +check_all_geometry_columns_r (const void *p_cache, sqlite3 * sqlite, + const char *output_dir, int *x_invalids, + char **err_msg) +{ + return check_all_geometry_columns_common (p_cache, sqlite, output_dir, + x_invalids, err_msg); +} + +#else + +SPATIALITE_DECLARE int +check_all_geometry_columns (sqlite3 * sqlite, + const char *output_dir, int *x_invalids, + char **err_msg) +{ +/* GEOS isn't enabled: always returning an error */ + int len; + const char *msg = "Sorry ... libspatialite was built disabling LWGEOM\n" + "and is thus unable to support IsValid"; +/* silencing stupid compiler warnings */ + if (sqlite == NULL || output_dir == NULL || x_invalids == NULL) + output_dir = NULL; + + if (err_msg == NULL) + return 0; + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + return 0; +} + +SPATIALITE_DECLARE int +check_all_geometry_columns_r (const void *p_cache, sqlite3 * sqlite, + const char *output_dir, int *x_invalids, + char **err_msg) +{ +/* GEOS isn't enabled: always returning an error */ + int len; + const char *msg = "Sorry ... libspatialite was built disabling LWGEOM\n" + "and is thus unable to support IsValid"; +/* silencing stupid compiler warnings */ + if (p_cache == NULL || sqlite == NULL || output_dir == NULL + || x_invalids == NULL) + output_dir = NULL; + + if (err_msg == NULL) + return 0; + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + return 0; +} + +SPATIALITE_DECLARE int +check_geometry_column (sqlite3 * sqlite, + const char *table, + const char *geom, + const char *report_path, + int *n_rows, int *n_invalids, char **err_msg) +{ +/* GEOS isn't enabled: always returning an error */ + int len; + const char *msg = "Sorry ... libspatialite was built disabling GEOS\n" + "and is thus unable to support IsValid"; + +/* silencing stupid compiler warnings */ + if (sqlite == NULL || table == NULL || geom == NULL || + report_path == NULL || n_rows == NULL || n_invalids == NULL) + table = NULL; + + if (err_msg == NULL) + return 0; + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + return 0; +} + +SPATIALITE_DECLARE int +check_geometry_column_r (const void *p_cache, sqlite3 * sqlite, + const char *table, + const char *geom, + const char *report_path, + int *n_rows, int *n_invalids, char **err_msg) +{ +/* GEOS isn't enabled: always returning an error */ + int len; + const char *msg = "Sorry ... libspatialite was built disabling GEOS\n" + "and is thus unable to support IsValid"; + +/* silencing stupid compiler warnings */ + if (p_cache == NULL || sqlite == NULL || table == NULL || geom == NULL || + report_path == NULL || n_rows == NULL || n_invalids == NULL) + table = NULL; + + if (err_msg == NULL) + return 0; + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + return 0; +} + +#endif /* end GEOS conditionals */ diff --git a/src/spatialite/src/spatialite/Makefile.am b/src/spatialite/src/spatialite/Makefile.am new file mode 100644 index 0000000..a87ad04 --- /dev/null +++ b/src/spatialite/src/spatialite/Makefile.am @@ -0,0 +1,36 @@ + +AM_CPPFLAGS = @CFLAGS@ @GEOS_CFLAGS@ @LIBXML2_CFLAGS@ +AM_CPPFLAGS += -I$(top_srcdir)/src/headers + +noinst_LTLIBRARIES = libsplite.la splite.la + +SPATIALITE_COMMON_SOURCES = mbrcache.c \ + spatialite.c \ + spatialite_init.c \ + metatables.c \ + statistics.c \ + extra_tables.c \ + virtualdbf.c \ + virtualXL.c \ + virtualfdo.c \ + virtualgpkg.c \ + virtualbbox.c \ + virtualspatialindex.c \ + virtualnetwork.c \ + virtualshape.c \ + virtualxpath.c + +libsplite_la_SOURCES = $(SPATIALITE_COMMON_SOURCES) + +libsplite_la_CFLAGS = -fvisibility=hidden + +splite_la_SOURCES = $(SPATIALITE_COMMON_SOURCES) + +splite_la_CPPFLAGS = @CFLAGS@ @GEOS_CFLAGS@ @LIBXML2_CFLAGS@ +splite_la_CPPFLAGS += -I$(top_srcdir)/src/headers -I. +splite_la_CPPFLAGS += -DLOADABLE_EXTENSION +splite_la_CPPFLAGS += -fvisibility=hidden +splite_la_LDFLAGS = -module +splite_la_LIBTOOLFLAGS = --tag=disable-static + +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda diff --git a/src/spatialite/src/spatialite/Makefile.in b/src/spatialite/src/spatialite/Makefile.in new file mode 100644 index 0000000..7db32bd --- /dev/null +++ b/src/spatialite/src/spatialite/Makefile.in @@ -0,0 +1,880 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/spatialite +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libsplite_la_LIBADD = +am__objects_1 = libsplite_la-mbrcache.lo libsplite_la-spatialite.lo \ + libsplite_la-spatialite_init.lo libsplite_la-metatables.lo \ + libsplite_la-statistics.lo libsplite_la-extra_tables.lo \ + libsplite_la-virtualdbf.lo libsplite_la-virtualXL.lo \ + libsplite_la-virtualfdo.lo libsplite_la-virtualgpkg.lo \ + libsplite_la-virtualbbox.lo \ + libsplite_la-virtualspatialindex.lo \ + libsplite_la-virtualnetwork.lo libsplite_la-virtualshape.lo \ + libsplite_la-virtualxpath.lo +am_libsplite_la_OBJECTS = $(am__objects_1) +libsplite_la_OBJECTS = $(am_libsplite_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libsplite_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libsplite_la_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +splite_la_LIBADD = +am__objects_2 = splite_la-mbrcache.lo splite_la-spatialite.lo \ + splite_la-spatialite_init.lo splite_la-metatables.lo \ + splite_la-statistics.lo splite_la-extra_tables.lo \ + splite_la-virtualdbf.lo splite_la-virtualXL.lo \ + splite_la-virtualfdo.lo splite_la-virtualgpkg.lo \ + splite_la-virtualbbox.lo splite_la-virtualspatialindex.lo \ + splite_la-virtualnetwork.lo splite_la-virtualshape.lo \ + splite_la-virtualxpath.lo +am_splite_la_OBJECTS = $(am__objects_2) +splite_la_OBJECTS = $(am_splite_la_OBJECTS) +splite_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(splite_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libsplite_la_SOURCES) $(splite_la_SOURCES) +DIST_SOURCES = $(libsplite_la_SOURCES) $(splite_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = @CFLAGS@ @GEOS_CFLAGS@ @LIBXML2_CFLAGS@ \ + -I$(top_srcdir)/src/headers +noinst_LTLIBRARIES = libsplite.la splite.la +SPATIALITE_COMMON_SOURCES = mbrcache.c \ + spatialite.c \ + spatialite_init.c \ + metatables.c \ + statistics.c \ + extra_tables.c \ + virtualdbf.c \ + virtualXL.c \ + virtualfdo.c \ + virtualgpkg.c \ + virtualbbox.c \ + virtualspatialindex.c \ + virtualnetwork.c \ + virtualshape.c \ + virtualxpath.c + +libsplite_la_SOURCES = $(SPATIALITE_COMMON_SOURCES) +libsplite_la_CFLAGS = -fvisibility=hidden +splite_la_SOURCES = $(SPATIALITE_COMMON_SOURCES) +splite_la_CPPFLAGS = @CFLAGS@ @GEOS_CFLAGS@ @LIBXML2_CFLAGS@ \ + -I$(top_srcdir)/src/headers -I. -DLOADABLE_EXTENSION \ + -fvisibility=hidden +splite_la_LDFLAGS = -module +splite_la_LIBTOOLFLAGS = --tag=disable-static +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/spatialite/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/spatialite/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libsplite.la: $(libsplite_la_OBJECTS) $(libsplite_la_DEPENDENCIES) $(EXTRA_libsplite_la_DEPENDENCIES) + $(AM_V_CCLD)$(libsplite_la_LINK) $(libsplite_la_OBJECTS) $(libsplite_la_LIBADD) $(LIBS) + +splite.la: $(splite_la_OBJECTS) $(splite_la_DEPENDENCIES) $(EXTRA_splite_la_DEPENDENCIES) + $(AM_V_CCLD)$(splite_la_LINK) $(splite_la_OBJECTS) $(splite_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-extra_tables.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-mbrcache.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-metatables.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-spatialite.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-spatialite_init.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-statistics.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-virtualXL.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-virtualbbox.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-virtualdbf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-virtualfdo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-virtualgpkg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-virtualnetwork.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-virtualshape.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-virtualspatialindex.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsplite_la-virtualxpath.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splite_la-extra_tables.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splite_la-mbrcache.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splite_la-metatables.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splite_la-spatialite.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splite_la-spatialite_init.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splite_la-statistics.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splite_la-virtualXL.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splite_la-virtualbbox.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splite_la-virtualdbf.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splite_la-virtualfdo.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splite_la-virtualgpkg.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splite_la-virtualnetwork.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splite_la-virtualshape.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splite_la-virtualspatialindex.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/splite_la-virtualxpath.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libsplite_la-mbrcache.lo: mbrcache.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-mbrcache.lo -MD -MP -MF $(DEPDIR)/libsplite_la-mbrcache.Tpo -c -o libsplite_la-mbrcache.lo `test -f 'mbrcache.c' || echo '$(srcdir)/'`mbrcache.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsplite_la-mbrcache.Tpo $(DEPDIR)/libsplite_la-mbrcache.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mbrcache.c' object='libsplite_la-mbrcache.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-mbrcache.lo `test -f 'mbrcache.c' || echo '$(srcdir)/'`mbrcache.c + +libsplite_la-spatialite.lo: spatialite.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-spatialite.lo -MD -MP -MF $(DEPDIR)/libsplite_la-spatialite.Tpo -c -o libsplite_la-spatialite.lo `test -f 'spatialite.c' || echo '$(srcdir)/'`spatialite.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsplite_la-spatialite.Tpo $(DEPDIR)/libsplite_la-spatialite.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='spatialite.c' object='libsplite_la-spatialite.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-spatialite.lo `test -f 'spatialite.c' || echo '$(srcdir)/'`spatialite.c + +libsplite_la-spatialite_init.lo: spatialite_init.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-spatialite_init.lo -MD -MP -MF $(DEPDIR)/libsplite_la-spatialite_init.Tpo -c -o libsplite_la-spatialite_init.lo `test -f 'spatialite_init.c' || echo '$(srcdir)/'`spatialite_init.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsplite_la-spatialite_init.Tpo $(DEPDIR)/libsplite_la-spatialite_init.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='spatialite_init.c' object='libsplite_la-spatialite_init.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-spatialite_init.lo `test -f 'spatialite_init.c' || echo '$(srcdir)/'`spatialite_init.c + +libsplite_la-metatables.lo: metatables.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-metatables.lo -MD -MP -MF $(DEPDIR)/libsplite_la-metatables.Tpo -c -o libsplite_la-metatables.lo `test -f 'metatables.c' || echo '$(srcdir)/'`metatables.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsplite_la-metatables.Tpo $(DEPDIR)/libsplite_la-metatables.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='metatables.c' object='libsplite_la-metatables.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-metatables.lo `test -f 'metatables.c' || echo '$(srcdir)/'`metatables.c + +libsplite_la-statistics.lo: statistics.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-statistics.lo -MD -MP -MF $(DEPDIR)/libsplite_la-statistics.Tpo -c -o libsplite_la-statistics.lo `test -f 'statistics.c' || echo '$(srcdir)/'`statistics.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsplite_la-statistics.Tpo $(DEPDIR)/libsplite_la-statistics.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='statistics.c' object='libsplite_la-statistics.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-statistics.lo `test -f 'statistics.c' || echo '$(srcdir)/'`statistics.c + +libsplite_la-extra_tables.lo: extra_tables.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-extra_tables.lo -MD -MP -MF $(DEPDIR)/libsplite_la-extra_tables.Tpo -c -o libsplite_la-extra_tables.lo `test -f 'extra_tables.c' || echo '$(srcdir)/'`extra_tables.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsplite_la-extra_tables.Tpo $(DEPDIR)/libsplite_la-extra_tables.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='extra_tables.c' object='libsplite_la-extra_tables.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-extra_tables.lo `test -f 'extra_tables.c' || echo '$(srcdir)/'`extra_tables.c + +libsplite_la-virtualdbf.lo: virtualdbf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-virtualdbf.lo -MD -MP -MF $(DEPDIR)/libsplite_la-virtualdbf.Tpo -c -o libsplite_la-virtualdbf.lo `test -f 'virtualdbf.c' || echo '$(srcdir)/'`virtualdbf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsplite_la-virtualdbf.Tpo $(DEPDIR)/libsplite_la-virtualdbf.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualdbf.c' object='libsplite_la-virtualdbf.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-virtualdbf.lo `test -f 'virtualdbf.c' || echo '$(srcdir)/'`virtualdbf.c + +libsplite_la-virtualXL.lo: virtualXL.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-virtualXL.lo -MD -MP -MF $(DEPDIR)/libsplite_la-virtualXL.Tpo -c -o libsplite_la-virtualXL.lo `test -f 'virtualXL.c' || echo '$(srcdir)/'`virtualXL.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsplite_la-virtualXL.Tpo $(DEPDIR)/libsplite_la-virtualXL.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualXL.c' object='libsplite_la-virtualXL.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-virtualXL.lo `test -f 'virtualXL.c' || echo '$(srcdir)/'`virtualXL.c + +libsplite_la-virtualfdo.lo: virtualfdo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-virtualfdo.lo -MD -MP -MF $(DEPDIR)/libsplite_la-virtualfdo.Tpo -c -o libsplite_la-virtualfdo.lo `test -f 'virtualfdo.c' || echo '$(srcdir)/'`virtualfdo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsplite_la-virtualfdo.Tpo $(DEPDIR)/libsplite_la-virtualfdo.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualfdo.c' object='libsplite_la-virtualfdo.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-virtualfdo.lo `test -f 'virtualfdo.c' || echo '$(srcdir)/'`virtualfdo.c + +libsplite_la-virtualgpkg.lo: virtualgpkg.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-virtualgpkg.lo -MD -MP -MF $(DEPDIR)/libsplite_la-virtualgpkg.Tpo -c -o libsplite_la-virtualgpkg.lo `test -f 'virtualgpkg.c' || echo '$(srcdir)/'`virtualgpkg.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsplite_la-virtualgpkg.Tpo $(DEPDIR)/libsplite_la-virtualgpkg.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualgpkg.c' object='libsplite_la-virtualgpkg.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-virtualgpkg.lo `test -f 'virtualgpkg.c' || echo '$(srcdir)/'`virtualgpkg.c + +libsplite_la-virtualbbox.lo: virtualbbox.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-virtualbbox.lo -MD -MP -MF $(DEPDIR)/libsplite_la-virtualbbox.Tpo -c -o libsplite_la-virtualbbox.lo `test -f 'virtualbbox.c' || echo '$(srcdir)/'`virtualbbox.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsplite_la-virtualbbox.Tpo $(DEPDIR)/libsplite_la-virtualbbox.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualbbox.c' object='libsplite_la-virtualbbox.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-virtualbbox.lo `test -f 'virtualbbox.c' || echo '$(srcdir)/'`virtualbbox.c + +libsplite_la-virtualspatialindex.lo: virtualspatialindex.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-virtualspatialindex.lo -MD -MP -MF $(DEPDIR)/libsplite_la-virtualspatialindex.Tpo -c -o libsplite_la-virtualspatialindex.lo `test -f 'virtualspatialindex.c' || echo '$(srcdir)/'`virtualspatialindex.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsplite_la-virtualspatialindex.Tpo $(DEPDIR)/libsplite_la-virtualspatialindex.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualspatialindex.c' object='libsplite_la-virtualspatialindex.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-virtualspatialindex.lo `test -f 'virtualspatialindex.c' || echo '$(srcdir)/'`virtualspatialindex.c + +libsplite_la-virtualnetwork.lo: virtualnetwork.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-virtualnetwork.lo -MD -MP -MF $(DEPDIR)/libsplite_la-virtualnetwork.Tpo -c -o libsplite_la-virtualnetwork.lo `test -f 'virtualnetwork.c' || echo '$(srcdir)/'`virtualnetwork.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsplite_la-virtualnetwork.Tpo $(DEPDIR)/libsplite_la-virtualnetwork.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualnetwork.c' object='libsplite_la-virtualnetwork.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-virtualnetwork.lo `test -f 'virtualnetwork.c' || echo '$(srcdir)/'`virtualnetwork.c + +libsplite_la-virtualshape.lo: virtualshape.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-virtualshape.lo -MD -MP -MF $(DEPDIR)/libsplite_la-virtualshape.Tpo -c -o libsplite_la-virtualshape.lo `test -f 'virtualshape.c' || echo '$(srcdir)/'`virtualshape.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsplite_la-virtualshape.Tpo $(DEPDIR)/libsplite_la-virtualshape.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualshape.c' object='libsplite_la-virtualshape.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-virtualshape.lo `test -f 'virtualshape.c' || echo '$(srcdir)/'`virtualshape.c + +libsplite_la-virtualxpath.lo: virtualxpath.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -MT libsplite_la-virtualxpath.lo -MD -MP -MF $(DEPDIR)/libsplite_la-virtualxpath.Tpo -c -o libsplite_la-virtualxpath.lo `test -f 'virtualxpath.c' || echo '$(srcdir)/'`virtualxpath.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsplite_la-virtualxpath.Tpo $(DEPDIR)/libsplite_la-virtualxpath.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualxpath.c' object='libsplite_la-virtualxpath.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsplite_la_CFLAGS) $(CFLAGS) -c -o libsplite_la-virtualxpath.lo `test -f 'virtualxpath.c' || echo '$(srcdir)/'`virtualxpath.c + +splite_la-mbrcache.lo: mbrcache.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT splite_la-mbrcache.lo -MD -MP -MF $(DEPDIR)/splite_la-mbrcache.Tpo -c -o splite_la-mbrcache.lo `test -f 'mbrcache.c' || echo '$(srcdir)/'`mbrcache.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/splite_la-mbrcache.Tpo $(DEPDIR)/splite_la-mbrcache.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='mbrcache.c' object='splite_la-mbrcache.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o splite_la-mbrcache.lo `test -f 'mbrcache.c' || echo '$(srcdir)/'`mbrcache.c + +splite_la-spatialite.lo: spatialite.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT splite_la-spatialite.lo -MD -MP -MF $(DEPDIR)/splite_la-spatialite.Tpo -c -o splite_la-spatialite.lo `test -f 'spatialite.c' || echo '$(srcdir)/'`spatialite.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/splite_la-spatialite.Tpo $(DEPDIR)/splite_la-spatialite.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='spatialite.c' object='splite_la-spatialite.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o splite_la-spatialite.lo `test -f 'spatialite.c' || echo '$(srcdir)/'`spatialite.c + +splite_la-spatialite_init.lo: spatialite_init.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT splite_la-spatialite_init.lo -MD -MP -MF $(DEPDIR)/splite_la-spatialite_init.Tpo -c -o splite_la-spatialite_init.lo `test -f 'spatialite_init.c' || echo '$(srcdir)/'`spatialite_init.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/splite_la-spatialite_init.Tpo $(DEPDIR)/splite_la-spatialite_init.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='spatialite_init.c' object='splite_la-spatialite_init.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o splite_la-spatialite_init.lo `test -f 'spatialite_init.c' || echo '$(srcdir)/'`spatialite_init.c + +splite_la-metatables.lo: metatables.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT splite_la-metatables.lo -MD -MP -MF $(DEPDIR)/splite_la-metatables.Tpo -c -o splite_la-metatables.lo `test -f 'metatables.c' || echo '$(srcdir)/'`metatables.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/splite_la-metatables.Tpo $(DEPDIR)/splite_la-metatables.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='metatables.c' object='splite_la-metatables.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o splite_la-metatables.lo `test -f 'metatables.c' || echo '$(srcdir)/'`metatables.c + +splite_la-statistics.lo: statistics.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT splite_la-statistics.lo -MD -MP -MF $(DEPDIR)/splite_la-statistics.Tpo -c -o splite_la-statistics.lo `test -f 'statistics.c' || echo '$(srcdir)/'`statistics.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/splite_la-statistics.Tpo $(DEPDIR)/splite_la-statistics.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='statistics.c' object='splite_la-statistics.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o splite_la-statistics.lo `test -f 'statistics.c' || echo '$(srcdir)/'`statistics.c + +splite_la-extra_tables.lo: extra_tables.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT splite_la-extra_tables.lo -MD -MP -MF $(DEPDIR)/splite_la-extra_tables.Tpo -c -o splite_la-extra_tables.lo `test -f 'extra_tables.c' || echo '$(srcdir)/'`extra_tables.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/splite_la-extra_tables.Tpo $(DEPDIR)/splite_la-extra_tables.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='extra_tables.c' object='splite_la-extra_tables.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o splite_la-extra_tables.lo `test -f 'extra_tables.c' || echo '$(srcdir)/'`extra_tables.c + +splite_la-virtualdbf.lo: virtualdbf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT splite_la-virtualdbf.lo -MD -MP -MF $(DEPDIR)/splite_la-virtualdbf.Tpo -c -o splite_la-virtualdbf.lo `test -f 'virtualdbf.c' || echo '$(srcdir)/'`virtualdbf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/splite_la-virtualdbf.Tpo $(DEPDIR)/splite_la-virtualdbf.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualdbf.c' object='splite_la-virtualdbf.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o splite_la-virtualdbf.lo `test -f 'virtualdbf.c' || echo '$(srcdir)/'`virtualdbf.c + +splite_la-virtualXL.lo: virtualXL.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT splite_la-virtualXL.lo -MD -MP -MF $(DEPDIR)/splite_la-virtualXL.Tpo -c -o splite_la-virtualXL.lo `test -f 'virtualXL.c' || echo '$(srcdir)/'`virtualXL.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/splite_la-virtualXL.Tpo $(DEPDIR)/splite_la-virtualXL.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualXL.c' object='splite_la-virtualXL.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o splite_la-virtualXL.lo `test -f 'virtualXL.c' || echo '$(srcdir)/'`virtualXL.c + +splite_la-virtualfdo.lo: virtualfdo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT splite_la-virtualfdo.lo -MD -MP -MF $(DEPDIR)/splite_la-virtualfdo.Tpo -c -o splite_la-virtualfdo.lo `test -f 'virtualfdo.c' || echo '$(srcdir)/'`virtualfdo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/splite_la-virtualfdo.Tpo $(DEPDIR)/splite_la-virtualfdo.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualfdo.c' object='splite_la-virtualfdo.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o splite_la-virtualfdo.lo `test -f 'virtualfdo.c' || echo '$(srcdir)/'`virtualfdo.c + +splite_la-virtualgpkg.lo: virtualgpkg.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT splite_la-virtualgpkg.lo -MD -MP -MF $(DEPDIR)/splite_la-virtualgpkg.Tpo -c -o splite_la-virtualgpkg.lo `test -f 'virtualgpkg.c' || echo '$(srcdir)/'`virtualgpkg.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/splite_la-virtualgpkg.Tpo $(DEPDIR)/splite_la-virtualgpkg.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualgpkg.c' object='splite_la-virtualgpkg.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o splite_la-virtualgpkg.lo `test -f 'virtualgpkg.c' || echo '$(srcdir)/'`virtualgpkg.c + +splite_la-virtualbbox.lo: virtualbbox.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT splite_la-virtualbbox.lo -MD -MP -MF $(DEPDIR)/splite_la-virtualbbox.Tpo -c -o splite_la-virtualbbox.lo `test -f 'virtualbbox.c' || echo '$(srcdir)/'`virtualbbox.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/splite_la-virtualbbox.Tpo $(DEPDIR)/splite_la-virtualbbox.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualbbox.c' object='splite_la-virtualbbox.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o splite_la-virtualbbox.lo `test -f 'virtualbbox.c' || echo '$(srcdir)/'`virtualbbox.c + +splite_la-virtualspatialindex.lo: virtualspatialindex.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT splite_la-virtualspatialindex.lo -MD -MP -MF $(DEPDIR)/splite_la-virtualspatialindex.Tpo -c -o splite_la-virtualspatialindex.lo `test -f 'virtualspatialindex.c' || echo '$(srcdir)/'`virtualspatialindex.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/splite_la-virtualspatialindex.Tpo $(DEPDIR)/splite_la-virtualspatialindex.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualspatialindex.c' object='splite_la-virtualspatialindex.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o splite_la-virtualspatialindex.lo `test -f 'virtualspatialindex.c' || echo '$(srcdir)/'`virtualspatialindex.c + +splite_la-virtualnetwork.lo: virtualnetwork.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT splite_la-virtualnetwork.lo -MD -MP -MF $(DEPDIR)/splite_la-virtualnetwork.Tpo -c -o splite_la-virtualnetwork.lo `test -f 'virtualnetwork.c' || echo '$(srcdir)/'`virtualnetwork.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/splite_la-virtualnetwork.Tpo $(DEPDIR)/splite_la-virtualnetwork.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualnetwork.c' object='splite_la-virtualnetwork.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o splite_la-virtualnetwork.lo `test -f 'virtualnetwork.c' || echo '$(srcdir)/'`virtualnetwork.c + +splite_la-virtualshape.lo: virtualshape.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT splite_la-virtualshape.lo -MD -MP -MF $(DEPDIR)/splite_la-virtualshape.Tpo -c -o splite_la-virtualshape.lo `test -f 'virtualshape.c' || echo '$(srcdir)/'`virtualshape.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/splite_la-virtualshape.Tpo $(DEPDIR)/splite_la-virtualshape.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualshape.c' object='splite_la-virtualshape.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o splite_la-virtualshape.lo `test -f 'virtualshape.c' || echo '$(srcdir)/'`virtualshape.c + +splite_la-virtualxpath.lo: virtualxpath.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT splite_la-virtualxpath.lo -MD -MP -MF $(DEPDIR)/splite_la-virtualxpath.Tpo -c -o splite_la-virtualxpath.lo `test -f 'virtualxpath.c' || echo '$(srcdir)/'`virtualxpath.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/splite_la-virtualxpath.Tpo $(DEPDIR)/splite_la-virtualxpath.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualxpath.c' object='splite_la-virtualxpath.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(splite_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(splite_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o splite_la-virtualxpath.lo `test -f 'virtualxpath.c' || echo '$(srcdir)/'`virtualxpath.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/spatialite/extra_tables.c b/src/spatialite/src/spatialite/extra_tables.c new file mode 100644 index 0000000..f2e1dad --- /dev/null +++ b/src/spatialite/src/spatialite/extra_tables.c @@ -0,0 +1,4428 @@ +/* + + extra_tables.c -- Creating all SLD/SE and ISO Metadata extra tables + + version 4.0, 2013 February 16 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +/* + +CREDITS: + +this module has been partly funded by: +Regione Toscana - Settore Sistema Informativo Territoriale ed Ambientale +(implementing XML support - ISO Metadata and SLD/SE Styles) + +*/ + +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include +#include +#include + +#ifdef _WIN32 +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +static int +check_splite_metacatalog (sqlite3 * sqlite) +{ +/* checks if "splite_metacatalog" really exists */ + int table_name = 0; + int column_name = 0; + int table_name2 = 0; + int column_name2 = 0; + int value = 0; + int count = 0; + char sql[1024]; + int ret; + const char *name; + int i; + char **results; + int rows; + int columns; +/* checking the "splite_metacatalog" table */ + strcpy (sql, "PRAGMA table_info(splite_metacatalog)"); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "table_name") == 0) + table_name = 1; + if (strcasecmp (name, "column_name") == 0) + column_name = 1; + } + } + sqlite3_free_table (results); +/* checking the "splite_metacatalog_statistics" table */ + strcpy (sql, "PRAGMA table_info(splite_metacatalog_statistics)"); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "table_name") == 0) + table_name2 = 1; + if (strcasecmp (name, "column_name") == 0) + column_name2 = 1; + if (strcasecmp (name, "value") == 0) + value = 1; + if (strcasecmp (name, "count") == 0) + count = 1; + } + } + sqlite3_free_table (results); + if (table_name && column_name && table_name2 && column_name2 && value + && count) + return 1; + return 0; +} + +static int +metacatalog_statistics (sqlite3 * sqlite, sqlite3_stmt * stmt_out, + sqlite3_stmt * stmt_del, const char *table, + const char *column) +{ +/* auxiliary - updating "splite_metacatalog_statistics" */ + char *xtable; + char *xcolumn; + char *sql_statement; + int ret; + sqlite3_stmt *stmt_in; + + xtable = gaiaDoubleQuotedSql (table); + xcolumn = gaiaDoubleQuotedSql (column); + sql_statement = sqlite3_mprintf ("SELECT \"%s\", Count(*) FROM \"%s\" " + "GROUP BY \"%s\"", xcolumn, xtable, + xcolumn); + free (xcolumn); + free (xtable); + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt_in, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("Update MetaCatalog Statistics(4) error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + return 0; + } + +/* deleting all existing rows */ + sqlite3_reset (stmt_del); + sqlite3_clear_bindings (stmt_del); + sqlite3_bind_text (stmt_del, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt_del, 2, column, strlen (column), SQLITE_STATIC); + ret = sqlite3_step (stmt_del); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("populate MetaCatalog Statistics(5) error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt_in); + return 0; + } + + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt_in); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + sqlite3_reset (stmt_out); + sqlite3_clear_bindings (stmt_out); + sqlite3_bind_text (stmt_out, 1, table, strlen (table), + SQLITE_STATIC); + sqlite3_bind_text (stmt_out, 2, column, strlen (column), + SQLITE_STATIC); + switch (sqlite3_column_type (stmt_in, 0)) + { + case SQLITE_INTEGER: + sqlite3_bind_int64 (stmt_out, 3, + sqlite3_column_int (stmt_in, 0)); + break; + case SQLITE_FLOAT: + sqlite3_bind_double (stmt_out, 3, + sqlite3_column_double (stmt_in, 0)); + break; + case SQLITE_TEXT: + sqlite3_bind_text (stmt_out, 3, + (const char *) + sqlite3_column_text (stmt_in, 0), + sqlite3_column_bytes (stmt_in, 0), + SQLITE_STATIC); + break; + case SQLITE_BLOB: + sqlite3_bind_blob (stmt_out, 3, + sqlite3_column_blob (stmt_in, 0), + sqlite3_column_bytes (stmt_in, 0), + SQLITE_STATIC); + break; + default: + sqlite3_bind_null (stmt_out, 3); + break; + }; + sqlite3_bind_int (stmt_out, 4, sqlite3_column_int (stmt_in, 1)); + ret = sqlite3_step (stmt_out); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e + ("populate MetaCatalog Statistics(6) error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt_in); + return 0; + } + } + } + sqlite3_finalize (stmt_in); + + return 1; +} + +SPATIALITE_DECLARE int +gaiaUpdateMetaCatalogStatistics (sqlite3 * sqlite, const char *table, + const char *column) +{ +/* Updates the "splite_metacalog_statistics" table */ + char *sql_statement; + int ret; + sqlite3_stmt *stmt_in; + sqlite3_stmt *stmt_out; + sqlite3_stmt *stmt_del; + + if (!check_splite_metacatalog (sqlite)) + { + spatialite_e + ("invalid or not existing \"splite_metacatalog_statistics\" table\n"); + return 0; + } + +/* updating the MetaCatalog statistics */ + sql_statement = sqlite3_mprintf ("SELECT table_name, column_name " + "FROM splite_metacatalog WHERE " + "Lower(table_name) = Lower(%Q) " + "AND Lower(column_name) = Lower(%Q)", + table, column); + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt_in, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("Update MetaCatalog Statistics(1) error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + return 0; + } + + sql_statement = "INSERT INTO splite_metacatalog_statistics " + "(table_name, column_name, value, count) " "VALUES (?, ?, ?, ?)"; + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt_out, NULL); + if (ret != SQLITE_OK) + { + sqlite3_finalize (stmt_in); + spatialite_e ("Update MetaCatalog Statistics(2) error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + return 0; + } + + sql_statement = "DELETE FROM splite_metacatalog_statistics " + "WHERE Lower(table_name) = Lower(?) AND Lower(column_name) = Lower(?)"; + ret = + sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt_del, NULL); + if (ret != SQLITE_OK) + { + sqlite3_finalize (stmt_in); + sqlite3_finalize (stmt_out); + spatialite_e ("Update MetaCatalog Statistics(3) error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + return 0; + } + + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt_in); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + const char *table = + (const char *) sqlite3_column_text (stmt_in, 0); + const char *column = + (const char *) sqlite3_column_text (stmt_in, 1); + if (!metacatalog_statistics + (sqlite, stmt_out, stmt_del, table, column)) + { + sqlite3_finalize (stmt_in); + sqlite3_finalize (stmt_out); + sqlite3_finalize (stmt_del); + return 0; + } + } + } + sqlite3_finalize (stmt_in); + sqlite3_finalize (stmt_out); + sqlite3_finalize (stmt_del); + return 1; +} + +static int +check_master_table (sqlite3 * sqlite, const char *master_table, + const char *table, const char *column) +{ +/* checks if the Master Table could be accessed */ + int table_name = 0; + int column_name = 0; + char *sql; + int ret; + char *xmaster; + const char *name; + int i; + char **results; + int rows; + int columns; +/* checking the Master table */ + xmaster = gaiaDoubleQuotedSql (master_table); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xmaster); + free (xmaster); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, table) == 0) + table_name = 1; + if (strcasecmp (name, column) == 0) + column_name = 1; + } + } + sqlite3_free_table (results); + if (table_name && column_name) + return 1; + return 0; +} + +SPATIALITE_DECLARE int +gaiaUpdateMetaCatalogStatisticsFromMaster (sqlite3 * sqlite, + const char *master_table, + const char *table_name, + const char *column_name) +{ +/* Updates the "splite_metacalog_statistics" table (using a Master Table) */ + int ret; + char *sql_statement; + sqlite3_stmt *stmt; + char *xmaster; + char *xtable; + char *xcolumn; + if (!check_master_table (sqlite, master_table, table_name, column_name)) + { + spatialite_e + ("UpdateMetaCatalogStatisticsFromMaster: mismatching or not existing Master Table\n"); + return 0; + } + +/* scanning the Master Table */ + xmaster = gaiaDoubleQuotedSql (master_table); + xtable = gaiaDoubleQuotedSql (table_name); + xcolumn = gaiaDoubleQuotedSql (column_name); + sql_statement = + sqlite3_mprintf ("SELECT \"%s\", \"%s\" FROM \"%s\"", xtable, xcolumn, + xmaster); + free (xmaster); + free (xtable); + free (xcolumn); + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e + ("UpdateMetaCatalogStatisticsFromMaster(1) error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + return 0; + } + + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + const char *table = + (const char *) sqlite3_column_text (stmt, 0); + const char *column = + (const char *) sqlite3_column_text (stmt, 1); + if (!gaiaUpdateMetaCatalogStatistics (sqlite, table, column)) + { + sqlite3_finalize (stmt); + return 0; + } + } + } + sqlite3_finalize (stmt); + return 1; +} + +static int +check_unique_index (sqlite3 * sqlite, const char *index, const char *column) +{ +/* checks if a column has any Unique constraint - pass two */ + char *xindex; + char *sql_statement; + int ret; + sqlite3_stmt *stmt_in; + int is_unique = 0; + int index_parts = 0; + + xindex = gaiaDoubleQuotedSql (index); + sql_statement = sqlite3_mprintf ("PRAGMA index_info(\"%s\")", xindex); + free (xindex); + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt_in, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("populate MetaCatalog(8) error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + return 0; + } + + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt_in); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + const char *colname = + (const char *) sqlite3_column_text (stmt_in, 2); + if (strcasecmp (colname, column) == 0) + is_unique = 1; + index_parts++; + } + } + sqlite3_finalize (stmt_in); + + if (index_parts > 1) + { + /* ignoring any multi-column index */ + is_unique = 0; + } + return is_unique; +} + +static int +check_unique (sqlite3 * sqlite, const char *table, const char *column) +{ +/* checks if a column has any Unique constraint */ + char *xtable; + char *sql_statement; + int ret; + sqlite3_stmt *stmt_in; + int is_unique = 0; + + xtable = gaiaDoubleQuotedSql (table); + sql_statement = sqlite3_mprintf ("PRAGMA index_list(\"%s\")", xtable); + free (xtable); + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt_in, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("populate MetaCatalog(7) error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + return 0; + } + + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt_in); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + const char *idxname = + (const char *) sqlite3_column_text (stmt_in, 1); + if (sqlite3_column_int (stmt_in, 2) == 1) + { + /* Unique Index */ + if (check_unique_index (sqlite, idxname, column)) + is_unique = 1; + } + } + } + sqlite3_finalize (stmt_in); + + return is_unique; +} + +static int +check_foreign_key (sqlite3 * sqlite, const char *table, const char *column) +{ +/* checks if a column is part of any Foreign Key */ + char *xtable; + char *sql_statement; + int ret; + sqlite3_stmt *stmt_in; + int is_foreign_key = 0; + + xtable = gaiaDoubleQuotedSql (table); + sql_statement = sqlite3_mprintf ("PRAGMA foreign_key_list(\"%s\")", xtable); + free (xtable); + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt_in, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("populate MetaCatalog(6) error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + return 0; + } + + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt_in); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + const char *colname = + (const char *) sqlite3_column_text (stmt_in, 3); + if (strcasecmp (colname, column) == 0) + is_foreign_key = 1; + } + } + sqlite3_finalize (stmt_in); + + return is_foreign_key; +} + +static int +table_info (sqlite3 * sqlite, sqlite3_stmt * stmt_out, const char *table) +{ +/* auxiliary - populating "splite_metacatalog" */ + char *xtable; + char *sql_statement; + int ret; + sqlite3_stmt *stmt_in; + + xtable = gaiaDoubleQuotedSql (table); + sql_statement = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xtable); + free (xtable); + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt_in, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("populate MetaCatalog(3) error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + return 0; + } + + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt_in); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + int is_foreign_key; + int is_unique; + sqlite3_reset (stmt_out); + sqlite3_clear_bindings (stmt_out); + sqlite3_bind_text (stmt_out, 1, table, strlen (table), + SQLITE_STATIC); + sqlite3_bind_text (stmt_out, 2, + (const char *) sqlite3_column_text (stmt_in, + 1), + sqlite3_column_bytes (stmt_in, 1), + SQLITE_STATIC); + sqlite3_bind_text (stmt_out, 3, + (const char *) sqlite3_column_text (stmt_in, + 2), + sqlite3_column_bytes (stmt_in, 2), + SQLITE_STATIC); + sqlite3_bind_int (stmt_out, 4, sqlite3_column_int (stmt_in, 3)); + sqlite3_bind_int (stmt_out, 5, sqlite3_column_int (stmt_in, 5)); + is_foreign_key = + check_foreign_key (sqlite, table, + (const char *) + sqlite3_column_text (stmt_in, 1)); + sqlite3_bind_int (stmt_out, 6, is_foreign_key); + is_unique = + check_unique (sqlite, table, + (const char *) sqlite3_column_text (stmt_in, + 1)); + sqlite3_bind_int (stmt_out, 7, is_unique); + ret = sqlite3_step (stmt_out); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("populate MetaCatalog(4) error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt_in); + return 0; + } + } + } + sqlite3_finalize (stmt_in); + + return 1; +} + +SPATIALITE_DECLARE int +gaiaCreateMetaCatalogTables (sqlite3 * sqlite) +{ +/* Creates both "splite_metacatalog" and "splite_metacalog_statistics" tables */ + char *sql_statement; + char *err_msg = NULL; + int ret; + sqlite3_stmt *stmt_in; + sqlite3_stmt *stmt_out; + +/* creating "splite_metacatalog" */ + sql_statement = "CREATE TABLE splite_metacatalog (\n" + "table_name TEXT NOT NULL,\n" + "column_name TEXT NOT NULL,\n" + "type TEXT NOT NULL,\n" + "not_null INTEGER NOT NULL,\n" + "primary_key INTEGER NOT NULL,\n" + "foreign_key INTEGER NOT NULL,\n" + "unique_value INTEGER NOT NULL,\n" + "CONSTRAINT pk_splite_metacatalog PRIMARY KEY (table_name, column_name))"; + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e + ("CREATE TABLE splite_metacatalog - error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + +/* creating "splite_metacatalog_statistics" */ + sql_statement = "CREATE TABLE splite_metacatalog_statistics (\n" + "table_name TEXT NOT NULL,\n" + "column_name TEXT NOT NULL,\n" + "value TEXT,\n" + "count INTEGER NOT NULL,\n" + "CONSTRAINT pk_splite_metacatalog_statistics PRIMARY KEY (table_name, column_name, value),\n" + "CONSTRAINT fk_splite_metacatalog_statistics FOREIGN KEY (table_name, column_name) " + "REFERENCES splite_metacatalog (table_name, column_name))"; + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e + ("CREATE TABLE splite_metacatalog_statistics - error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } + +/* populating the MetaCatalog table */ + sql_statement = "SELECT name FROM sqlite_master WHERE type = 'table' " + "AND sql NOT LIKE 'CREATE VIRTUAL TABLE%'"; + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt_in, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("populate MetaCatalog(1) error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + return 0; + } + + sql_statement = "INSERT INTO splite_metacatalog " + "(table_name, column_name, type, not_null, primary_key, foreign_key, unique_value) " + "VALUES (?, ?, ?, ?, ?, ?, ?)"; + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt_out, NULL); + if (ret != SQLITE_OK) + { + sqlite3_finalize (stmt_in); + spatialite_e ("populate MetaCatalog(2) error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + return 0; + } + + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt_in); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + const char *table = + (const char *) sqlite3_column_text (stmt_in, 0); + if (!table_info (sqlite, stmt_out, table)) + { + sqlite3_finalize (stmt_in); + sqlite3_finalize (stmt_out); + return 0; + } + } + } + sqlite3_finalize (stmt_in); + sqlite3_finalize (stmt_out); + return 1; +} + +static int +check_raster_coverages (sqlite3 * sqlite) +{ +/* checking if the "raster_coverages" table already exists */ + int exists = 0; + char *sql_statement; + char *errMsg = NULL; + int ret; + char **results; + int rows; + int columns; + int i; + sql_statement = "SELECT name FROM sqlite_master WHERE type = 'table' " + "AND Upper(name) = Upper('raster_coverages')"; + ret = + sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + &errMsg); + if (ret != SQLITE_OK) + { + sqlite3_free (errMsg); + return 0; + } + for (i = 1; i <= rows; i++) + exists = 1; + sqlite3_free_table (results); + return exists; +} + +static int +check_raster_coverages_ref_sys (sqlite3 * sqlite) +{ +/* checking if the "raster_coverages_ref_sys" view already exists */ + int exists = 0; + char *sql_statement; + char *errMsg = NULL; + int ret; + char **results; + int rows; + int columns; + int i; + sql_statement = "SELECT name FROM sqlite_master WHERE type = 'view' " + "AND Upper(name) = Upper('raster_coverages_ref_sys')"; + ret = + sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + &errMsg); + if (ret != SQLITE_OK) + { + sqlite3_free (errMsg); + return 0; + } + for (i = 1; i <= rows; i++) + exists = 1; + sqlite3_free_table (results); + return exists; +} + +static int +create_raster_coverages (sqlite3 * sqlite) +{ +/* creating the "raster_coverages" table */ + char *sql; + int ret; + char *err_msg = NULL; + sql = "CREATE TABLE raster_coverages (\n" + "coverage_name TEXT NOT NULL PRIMARY KEY,\n" + "title TEXT NOT NULL DEFAULT '*** missing Title ***',\n" + "abstract TEXT NOT NULL DEFAULT '*** missing Abstract ***',\n" + "sample_type TEXT NOT NULL DEFAULT '*** undefined ***',\n" + "pixel_type TEXT NOT NULL DEFAULT '*** undefined ***',\n" + "num_bands INTEGER NOT NULL DEFAULT 1,\n" + "compression TEXT NOT NULL DEFAULT 'NONE',\n" + "quality INTEGER NOT NULL DEFAULT 100,\n" + "tile_width INTEGER NOT NULL DEFAULT 512,\n" + "tile_height INTEGER NOT NULL DEFAULT 512,\n" + "horz_resolution DOUBLE NOT NULL,\n" + "vert_resolution DOUBLE NOT NULL,\n" + "srid INTEGER NOT NULL,\n" + "nodata_pixel BLOB NOT NULL,\n" + "palette BLOB,\n" + "statistics BLOB,\n" + "extent_minx DOUBLE,\n" + "extent_miny DOUBLE,\n" + "extent_maxx DOUBLE,\n" + "extent_maxy DOUBLE,\n" + "CONSTRAINT fk_rc_srs FOREIGN KEY (srid) " + "REFERENCES spatial_ref_sys (srid))"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE 'raster_coverages' error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating the raster_coverages triggers */ + sql = "CREATE TRIGGER raster_coverages_name_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "coverage_name value must not contain a single quote')\n" + "WHERE NEW.coverage_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'insert on raster_coverages_layers violates constraint: " + "coverage_name value must not contain a double quote')\n" + "WHERE NEW.coverage_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "coverage_name value must be lower case')\n" + "WHERE NEW.coverage_name <> lower(NEW.coverage_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_name_update\n" + "BEFORE UPDATE OF 'coverage_name' ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on raster_coverages violates constraint: " + "coverage_name value must not contain a single quote')\n" + "WHERE NEW.coverage_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'update on raster_coverages violates constraint: " + "coverage_name value must not contain a double quote')\n" + "WHERE NEW.coverage_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'update on raster_coverages violates constraint: " + "coverage_name value must be lower case')\n" + "WHERE NEW.coverage_name <> lower(NEW.coverage_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_sample_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "sample_type must be one of ''1-BIT'' | ''2-BIT'' | ''4-BIT'' | " + "''INT8'' | ''UINT8'' | ''INT16'' | ''UINT16'' | ''INT32'' | " + "''UINT32'' | ''FLOAT'' | ''DOUBLE''')\n" + "WHERE NEW.sample_type NOT IN ('1-BIT', '2-BIT', '4-BIT', " + "'INT8', 'UINT8', 'INT16', 'UINT16', 'INT32', " + "'UINT32', 'FLOAT', 'DOUBLE');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_sample_update\n" + "BEFORE UPDATE OF 'sample_type' ON 'raster_coverages'" + "\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "sample_type must be one of ''1-BIT'' | ''2-BIT'' | ''4-BIT'' | " + "''INT8'' | ''UINT8'' | ''INT16'' | ''UINT16'' | ''INT32'' | " + "''UINT32'' | ''FLOAT'' | ''DOUBLE''')\n" + "WHERE NEW.sample_type NOT IN ('1-BIT', '2-BIT', '4-BIT', " + "'INT8', 'UINT8', 'INT16', 'UINT16', 'INT32', " + "'UINT32', 'FLOAT', 'DOUBLE');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_pixel_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "pixel_type must be one of ''MONOCHROME'' | ''PALETTE'' | " + "''GRAYSCALE'' | ''RGB'' | ''MULTIBAND'' | ''DATAGRID''')\n" + "WHERE NEW.pixel_type NOT IN ('MONOCHROME', 'PALETTE', " + "'GRAYSCALE', 'RGB', 'MULTIBAND', 'DATAGRID');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_pixel_update\n" + "BEFORE UPDATE OF 'pixel_type' ON 'raster_coverages'" + "\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "pixel_type must be one of ''MONOCHROME'' | ''PALETTE'' | " + "''GRAYSCALE'' | ''RGB'' | ''MULTIBAND'' | ''DATAGRID''')\n" + "WHERE NEW.pixel_type NOT IN ('MONOCHROME', 'PALETTE', " + "'GRAYSCALE', 'RGB', 'MULTIBAND', 'DATAGRID');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_bands_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "num_bands must be >= 1')\nWHERE NEW.num_bands < 1;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_bands_update\n" + "BEFORE UPDATE OF 'num_bands' ON 'raster_coverages'" + "\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "num_bands must be >= 1')\nWHERE NEW.num_bands < 1;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_compression_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "compression must be one of ''NONE'' | ''DEFLATE'' | ''LZMA'' | " + "''PNG'' | ''JPEG'' | ''LOSSY_WEBP'' | ''LOSSLESS_WEBP'' | " + "''CCITTFAX4''')\n" + "WHERE NEW.compression NOT IN ('NONE', 'DEFLATE', 'LZMA', " + "'PNG', 'JPEG', 'LOSSY_WEBP', 'LOSSLESS_WEBP', " "'CCITTFAX4');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_compression_update\n" + "BEFORE UPDATE OF 'compression' ON 'raster_coverages'" + "\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "compression must be one of ''NONE'' | ''DEFLATE'' | ''LZMA'' | " + "''PNG'' | ''JPEG'' | ''LOSSY_WEBP'' | ''LOSSLESS_WEBP'' | " + "''CCITTFAX4''')\n" + "WHERE NEW.compression NOT IN ('NONE', 'DEFLATE', 'LZMA', " + "'PNG', 'JPEG', 'LOSSY_WEBP', 'LOSSLESS_WEBP', " "'CCITTFAX4');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_quality_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "quality must be between 0 and 100')\n" + "WHERE NEW.quality NOT BETWEEN 0 AND 100;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_quality_update\n" + "BEFORE UPDATE OF 'quality' ON 'raster_coverages'" + "\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "quality must be between 0 and 100')\n" + "WHERE NEW.quality NOT BETWEEN 0 AND 100;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_tilew_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "tile_width must be an exact multiple of 8 between 256 and 1024')\n" + "WHERE CastToInteger(NEW.tile_width) IS NULL OR " + "NEW.tile_width NOT BETWEEN 256 AND 1024 OR (NEW.tile_width % 8) <> 0;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_tilew_update\n" + "BEFORE UPDATE OF 'tile_width' ON 'raster_coverages'" + "\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "tile_width must be an exact multiple of 8 between 256 and 1024')\n" + "WHERE CastToInteger(NEW.tile_width) IS NULL OR " + "NEW.tile_width NOT BETWEEN 256 AND 1024 OR (NEW.tile_width % 8) <> 0;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_tileh_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "tile_height must be an exact multiple of 8 between 256 and 1024')\n" + "WHERE CastToInteger(NEW.tile_height) IS NULL OR " + "NEW.tile_height NOT BETWEEN 256 AND 1024 OR (NEW.tile_height % 8) <> 0;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_tileh_update\n" + "BEFORE UPDATE OF 'tile_height' ON 'raster_coverages'" + "\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "tile_height must be an exact multiple of 8 between 256 and 1024')\n" + "WHERE CastToInteger(NEW.tile_height) IS NULL OR " + "NEW.tile_height NOT BETWEEN 256 AND 1024 OR (NEW.tile_height % 8) <> 0;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_horzres_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "horz_resolution must be positive')\n" + "WHERE NEW.horz_resolution IS NOT NULL AND " + "(NEW.horz_resolution <= 0.0 OR CastToDouble(NEW.horz_resolution) IS NULL);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_horzres_update\n" + "BEFORE UPDATE OF 'horz_resolution' ON 'raster_coverages'" + "\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "horz_resolution must be positive')\n" + "WHERE NEW.horz_resolution IS NOT NULL AND " + "(NEW.horz_resolution <= 0.0 OR CastToDouble(NEW.horz_resolution) IS NULL);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_vertres_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "vert_resolution must be positive')\n" + "WHERE NEW.vert_resolution IS NOT NULL AND " + "(NEW.vert_resolution <= 0.0 OR CastToDouble(NEW.vert_resolution) IS NULL);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_vertres_update\n" + "BEFORE UPDATE OF 'vert_resolution' ON 'raster_coverages'" + "\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "vert_resolution must be positive')\n" + "WHERE NEW.vert_resolution IS NOT NULL AND " + "(NEW.vert_resolution <= 0.0 OR CastToDouble(NEW.vert_resolution) IS NULL);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_nodata_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "invalid nodata_pixel')\nWHERE NEW.nodata_pixel IS NOT NULL AND " + "IsValidPixel(NEW.nodata_pixel, NEW.sample_type, NEW.num_bands) <> 1;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_nodata_update\n" + "BEFORE UPDATE OF 'nodata_pixel' ON 'raster_coverages'" + "\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "invalid nodata_pixel')\nWHERE NEW.nodata_pixel IS NOT NULL AND " + "IsValidPixel(NEW.nodata_pixel, NEW.sample_type, NEW.num_bands) <> 1;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_palette_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "invalid palette')\nWHERE NEW.palette IS NOT NULL AND " + "(NEW.pixel_type <> 'PALETTE' OR NEW.num_bands <> 1 OR " + "IsValidRasterPalette(NEW.palette, NEW.sample_type) <> 1);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_palette_update\n" + "BEFORE UPDATE OF 'palette' ON 'raster_coverages'" + "\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "invalid palette')\nWHERE NEW.palette IS NOT NULL AND " + "(NEW.pixel_type <> 'PALETTE' OR NEW.num_bands <> 1 OR " + "IsValidRasterPalette(NEW.palette, NEW.sample_type) <> 1);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_statistics_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "invalid statistics')\nWHERE NEW.statistics IS NOT NULL AND " + "IsValidRasterStatistics(NEW.statistics, NEW.sample_type, NEW.num_bands) <> 1;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_statistics_update\n" + "BEFORE UPDATE OF 'statistics' ON 'raster_coverages'" + "\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "invalid statistics')\nWHERE NEW.statistics IS NOT NULL AND " + "IsValidRasterStatistics(NEW.statistics, NEW.sample_type, NEW.num_bands) <> 1;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_monosample_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent MONOCHROME sample_type')\nWHERE NEW.pixel_type = 'MONOCHROME' " + "AND NEW.sample_type <> '1-BIT';\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_monosample_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent MONOCHROME sample_type')\nWHERE NEW.pixel_type = 'MONOCHROME' " + "AND NEW.sample_type <>'1-BIT';\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_monocompr_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent MONOCHROME compression')\nWHERE NEW.pixel_type = 'MONOCHROME' " + "AND NEW.compression NOT IN ('NONE', 'PNG', 'CCITTFAX4');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_monocompr_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent MONOCHROME compression')\nWHERE NEW.pixel_type = 'MONOCHROME' " + "AND NEW.compression NOT IN ('NONE', 'PNG', 'CCITTFAX4');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_monobands_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent MONOCHROME num_bands')\nWHERE NEW.pixel_type = 'MONOCHROME' " + "AND NEW.num_bands <> 1;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_monobands_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent MONOCHROME num_bands')\nWHERE NEW.pixel_type = 'MONOCHROME' " + "AND NEW.num_bands <> 1;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_pltsample_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent PALETTE sample_type')\nWHERE NEW.pixel_type = 'PALETTE' " + "AND NEW.sample_type NOT IN ('1-BIT', '2-BIT', '4-BIT', 'UINT8');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_pltsample_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent PALETTE sample_type')\nWHERE NEW.pixel_type = 'PALETTE' " + "AND NEW.sample_type NOT IN ('1-BIT', '2-BIT', '4-BIT', 'UINT8');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_pltcompr_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent PALETTE compression')\nWHERE NEW.pixel_type = 'PALETTE' " + "AND NEW.compression NOT IN ('NONE', 'PNG');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_pltcompr_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent PALETTE compression')\nWHERE NEW.pixel_type = 'PALETTE' " + "AND NEW.compression NOT IN ('NONE', 'PNG');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_pltbands_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent PALETTE num_bands')\nWHERE NEW.pixel_type = 'PALETTE' " + "AND NEW.num_bands <> 1;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_pltbands_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent PALETTE num_bands')\nWHERE NEW.pixel_type = 'PALETTE' " + "AND NEW.num_bands <> 1;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_graysample_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent GRAYSCALE sample_type')\nWHERE NEW.pixel_type = 'GRAYSCALE' " + "AND NEW.sample_type NOT IN ('2-BIT', '4-BIT', 'UINT8');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_graysample_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent GRAYSCALE sample_type')\nWHERE NEW.pixel_type = 'GRAYSCALE' " + "AND NEW.sample_type NOT IN ('2-BIT', '4-BIT', 'UINT8');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_graybands_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent GRAYSCALE num_bands')\nWHERE NEW.pixel_type = 'GRAYSCALE' " + "AND NEW.num_bands <> 1;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_graybands_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent GRAYSCALE num_bands')\nWHERE NEW.pixel_type = 'GRAYSCALE' " + "AND NEW.num_bands <> 1;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_graycompr_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent GRAYSCALE compression')\nWHERE NEW.pixel_type = 'GRAYSCALE' " + "AND NEW.compression NOT IN ('NONE', 'PNG', 'JPEG', 'LOSSY_WEBP', " + "'LOSSLESS_WEBP');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_graycompr_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent GRAYSCALE compression')\nWHERE NEW.pixel_type = 'GRAYSCALE' " + "AND NEW.compression NOT IN ('NONE', 'PNG', 'JPEG', 'LOSSY_WEBP', " + "'LOSSLESS_WEBP');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_rgbsample_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent RGB sample_type')\nWHERE NEW.pixel_type = 'RGB' " + "AND NEW.sample_type NOT IN ('UINT8', 'UINT16');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_rgbsample_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent RGB sample_type')\nWHERE NEW.pixel_type = 'RGB' " + "AND NEW.sample_type NOT IN ('UINT8', 'UINT16');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_rgbcompr_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent RGB compression')\nWHERE NEW.pixel_type = 'RGB' " + "AND ((NEW.sample_type = 'UINT8' AND NEW.compression NOT IN (" + "'NONE', 'PNG', 'JPEG', 'LOSSY_WEBP', 'LOSSLESS_WEBP') OR " + "(NEW.sample_type = 'UINT16' AND NEW.compression NOT IN (" + "'NONE', 'DEFLATE', 'LZMA'))));\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_rgbcompr_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent RGB compression')\nWHERE NEW.pixel_type = 'RGB' " + "AND ((NEW.sample_type = 'UINT8' AND NEW.compression NOT IN (" + "'NONE', 'PNG', 'JPEG', 'LOSSY_WEBP', 'LOSSLESS_WEBP') OR " + "(NEW.sample_type = 'UINT16' AND NEW.compression NOT IN (" + "'NONE', 'DEFLATE', 'LZMA'))));\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_rgbbands_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent RGB num_bands')\nWHERE NEW.pixel_type = 'RGB' " + "AND NEW.num_bands <> 3;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_rgbbands_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent RGB num_bands')\nWHERE NEW.pixel_type = 'RGB' " + "AND NEW.num_bands <> 3;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_multisample_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent MULTIBAND sample_type')\nWHERE NEW.pixel_type = 'MULTIBAND' " + "AND NEW.sample_type NOT IN ('UINT8', 'UINT16');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_multisample_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent MULTIBAND sample_type')\nWHERE NEW.pixel_type = 'MULTIBAND' " + "AND NEW.sample_type NOT IN ('UINT8', 'UINT16');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_multicompr_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent MULTIBAND compression')\nWHERE NEW.pixel_type = 'MULTIBAND' " + "AND NEW.compression NOT IN ('NONE', 'DEFLATE', 'LZMA');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_multibands_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent MULTIBAND num_bands')\nWHERE NEW.pixel_type = 'MULTIBAND' " + "AND NEW.num_bands < 2;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_multibands_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent MULTIBAND num_bands')\nWHERE NEW.pixel_type = 'MULTIBAND' " + "AND NEW.num_bands < 2;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_multicompr_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent MULTIBAND compression')\nWHERE NEW.pixel_type = 'MULTIBAND' " + "AND NEW.compression NOT IN ('NONE', 'DEFLATE', 'LZMA');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_gridsample_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent DATAGRID sample_type')\nWHERE NEW.pixel_type = 'DATAGRID' " + "AND NEW.sample_type NOT IN ('INT8', 'UINT8', 'INT16', 'UINT16', " + "'INT32', 'UINT32', 'FLOAT', 'DOUBLE');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_gridsample_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent DATAGRID sample_type')\nWHERE NEW.pixel_type = 'DATAGRID' " + "AND NEW.sample_type NOT IN ('INT8', 'UINT8', 'INT16', 'UINT16', " + "'INT32', 'UINT32', 'FLOAT', 'DOUBLE');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_gridcompr_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent DATAGRID compression')\nWHERE NEW.pixel_type = 'DATAGRID' " + "AND NEW.compression NOT IN ('NONE', 'DEFLATE', 'LZMA');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_gridcompr_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent DATAGRID compression')\nWHERE NEW.pixel_type = 'DATAGRID' " + "AND NEW.compression NOT IN ('NONE', 'DEFLATE', 'LZMA');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_gridbands_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent DATAGRID num_bands')\nWHERE NEW.pixel_type = 'DATAGRID' " + "AND NEW.num_bands <> 1;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_gridbands_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "inconsistent DATAGRID num_bands')\nWHERE NEW.pixel_type = 'DATAGRID' " + "AND NEW.num_bands <> 1;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_georef_insert\n" + "BEFORE INSERT ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on raster_coverages violates constraint: " + "inconsistent georeferencing infos')\n" + "WHERE NOT ((NEW.horz_resolution IS NULL AND NEW.vert_resolution IS NULL " + "AND NEW.srid IS NULL) OR (NEW.horz_resolution IS NOT NULL " + "AND NEW.vert_resolution IS NOT NULL AND NEW.srid IS NOT NULL));\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_georef_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on raster_coverages violates constraint: " + "inconsistent georeferencing infos')\n" + "WHERE NOT ((NEW.horz_resolution IS NULL AND NEW.vert_resolution IS NULL " + "AND NEW.srid IS NULL) OR (NEW.horz_resolution IS NOT NULL " + "AND NEW.vert_resolution IS NOT NULL AND NEW.srid IS NOT NULL));\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_update\n" + "BEFORE UPDATE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on raster_coverages violates constraint: " + "attempting to change the definition of an already populated Coverage')\n" + "WHERE IsPopulatedCoverage(OLD.coverage_name) = 1 AND " + "((OLD.sample_type <> NEW.sample_type) AND (OLD.pixel_type <> NEW.sample_type) " + "OR (OLD.num_bands <> NEW.num_bands) OR (OLD.compression <> NEW.compression) " + "OR (OLD.quality <> NEW.quality) OR (OLD.tile_width <> NEW.tile_width) " + "OR (OLD.tile_height <> NEW.tile_height) OR (OLD.horz_resolution <> NEW.horz_resolution) " + "OR (OLD.vert_resolution <> NEW.vert_resolution) OR " + "(OLD.srid <> NEW.srid) OR (OLD.nodata_pixel <> NEW.nodata_pixel));\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER raster_coverages_delete\n" + "BEFORE DELETE ON 'raster_coverages'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'delete on raster_coverages violates constraint: " + "attempting to delete the definition of an already populated Coverage')\n" + "WHERE IsPopulatedCoverage(OLD.coverage_name) = 1;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating the raster_coverages_ref_sys view */ + sql = "CREATE VIEW raster_coverages_ref_sys AS\n" + "SELECT c.coverage_name AS coverage_name, c.title AS title, " + "c.abstract AS abstract, c.sample_type AS sample_type, " + "c.pixel_type AS pixel_type, c.num_bands AS num_bands, " + "c.compression AS compression, c.quality AS quality, " + "c.tile_width AS tile_width, c.tile_height AS tile_height, " + "c.horz_resolution AS horz_resolution, c.vert_resolution AS vert_resolution, " + "c.nodata_pixel AS nodata_pixel, c.palette AS palette, " + "c.statistics AS statistics, c.extent_minx AS extent_minx, " + "c.extent_miny AS extent_miny, c.extent_maxx AS extent_maxx, " + "c.extent_maxy AS extent_maxy, c.srid AS srid, " + "s.auth_name AS auth_name, s.auth_srid AS auth_srid, " + "s.ref_sys_name AS ref_sys_name, s.proj4text AS proj4text\n" + "FROM raster_coverages AS c\n" + "LEFT JOIN spatial_ref_sys AS s ON (c.srid = s.srid)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW 'raster_coverages_ref_sys' error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +SPATIALITE_PRIVATE int +createRasterCoveragesTable (void *p_sqlite) +{ +/* Creating the main RasterCoverages table */ + int ok_table; + sqlite3 *sqlite = p_sqlite; + +/* checking if already defined */ + ok_table = check_raster_coverages (sqlite); + if (ok_table) + { + spatialite_e + ("CreateRasterCoveragesTable() error: table 'raster_coverages' already exists\n"); + goto error; + } + ok_table = check_raster_coverages_ref_sys (sqlite); + if (ok_table) + { + spatialite_e + ("CreateRasterCoveragesTable() error: view 'raster_coverages_ref_sys' already exists\n"); + goto error; + } + +/* creating the main RasterCoverages table */ + if (!create_raster_coverages (sqlite)) + goto error; + return 1; + + error: + return 0; +} + +static int +check_if_coverage_exists (sqlite3 * sqlite, const char *coverage) +{ +/* checking if a Coverage table already exists */ + int exists = 0; + char *sql_statement; + char *errMsg = NULL; + int ret; + char **results; + int rows; + int columns; + int i; + sql_statement = + sqlite3_mprintf ("SELECT name FROM sqlite_master WHERE type = 'table' " + "AND Upper(name) = Upper(%Q)", coverage); + ret = + sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + sqlite3_free (errMsg); + return 0; + } + for (i = 1; i <= rows; i++) + exists = 1; + sqlite3_free_table (results); + return exists; +} + +SPATIALITE_PRIVATE int +checkPopulatedCoverage (void *p_sqlite, const char *coverage_name) +{ +/* checking if a Coverage table is already populated */ + int is_populated = 0; + char *xname; + char *xxname; + char *sql_statement; + char *errMsg = NULL; + int ret; + char **results; + int rows; + int columns; + int i; + sqlite3 *sqlite = p_sqlite; + xname = sqlite3_mprintf ("%s_tile_data", coverage_name); + if (!check_if_coverage_exists (sqlite, xname)) + { + sqlite3_free (xname); + return 0; + } + xxname = gaiaDoubleQuotedSql (xname); + sqlite3_free (xname); + sql_statement = + sqlite3_mprintf ("SELECT ROWID FROM \"%s\" LIMIT 10", xxname); + free (xxname); + ret = + sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + sqlite3_free (errMsg); + return 0; + } + for (i = 1; i <= rows; i++) + is_populated = 1; + sqlite3_free_table (results); + return is_populated; +} + +#ifdef ENABLE_LIBXML2 /* including LIBXML2 */ + +static int +check_styling_table (sqlite3 * sqlite, const char *table, int is_view) +{ +/* checking if some SLD/SE Styling-related table/view already exists */ + int exists = 0; + char *sql_statement; + char *errMsg = NULL; + int ret; + char **results; + int rows; + int columns; + int i; + sql_statement = + sqlite3_mprintf ("SELECT name FROM sqlite_master WHERE type = '%s'" + "AND Upper(name) = Upper(%Q)", + (!is_view) ? "table" : "view", table); + ret = + sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + sqlite3_free (errMsg); + return 0; + } + for (i = 1; i <= rows; i++) + exists = 1; + sqlite3_free_table (results); + return exists; +} + +static int +create_external_graphics (sqlite3 * sqlite) +{ +/* creating the SE_external_graphics table */ + char *sql; + int ret; + char *err_msg = NULL; + sql = "CREATE TABLE SE_external_graphics (\n" + "xlink_href TEXT NOT NULL PRIMARY KEY,\n" + "title TEXT NOT NULL DEFAULT '*** undefined ***',\n" + "abstract TEXT NOT NULL DEFAULT '*** undefined ***',\n" + "resource BLOB NOT NULL,\n" + "file_name TEXT NOT NULL DEFAULT '*** undefined ***')"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE 'SE_external_graphics' error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating the SE_external_graphics triggers */ + sql = "CREATE TRIGGER sextgr_mime_type_insert\n" + "BEFORE INSERT ON 'SE_external_graphics'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_external_graphics violates constraint: " + "GetMimeType(resource) must be one of ''image/gif'' | ''image/png'' | " + "''image/jpeg'' | ''image/svg+xml''')\n" + "WHERE GetMimeType(NEW.resource) NOT IN ('image/gif', 'image/png', " + "'image/jpeg', 'image/svg+xml');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER sextgr_mime_type_update\n" + "BEFORE UPDATE OF 'mime_type' ON 'SE_external_graphics'" + "\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT, 'update on SE_external_graphics violates constraint: " + "GetMimeType(resource) must be one of ''image/gif'' | ''image/png'' | " + "''image/jpeg'' | ''image/svg+xml''')\n" + "WHERE GetMimeType(NEW.resource) NOT IN ('image/gif', 'image/png', " + "'image/jpeg', 'image/svg+xml');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_vector_styled_layers (sqlite3 * sqlite, int relaxed) +{ +/* creating the SE_vector_styled_layers table */ + char *sql; + int ret; + char *err_msg = NULL; + sql = "CREATE TABLE SE_vector_styled_layers (\n" + "f_table_name TEXT NOT NULL,\n" + "f_geometry_column TEXT NOT NULL,\n" + "style_id INTEGER NOT NULL,\n" + "style_name TEXT NOT NULL DEFAULT 'missing_name',\n" + "style BLOB NOT NULL,\n" + "CONSTRAINT pk_sevstl PRIMARY KEY " + "(f_table_name, f_geometry_column, style_id),\n" + "CONSTRAINT fk_sevstl FOREIGN KEY (f_table_name, f_geometry_column) " + "REFERENCES geometry_columns (f_table_name, f_geometry_column) " + "ON DELETE CASCADE)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE 'SE_vector_styled_layers' error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating the layer-style UNIQUE index */ + sql = "CREATE UNIQUE INDEX idx_vector_style ON SE_vector_styled_layers " + "(f_table_name, f_geometry_column, style_name)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX 'idx_vector_style' error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating the SE_vector_styled_layers triggers */ + sql = "CREATE TRIGGER sevstl_f_table_name_insert\n" + "BEFORE INSERT ON 'SE_vector_styled_layers'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_vector_styled_layers violates constraint: " + "f_table_name value must not contain a single quote')\n" + "WHERE NEW.f_table_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'insert on SE_vector_styled_layers violates constraint: " + "f_table_name value must not contain a double quote')\n" + "WHERE NEW.f_table_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'insert on SE_vector_styled_layers violates constraint: " + "f_table_name value must be lower case')\n" + "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER sevstl_f_table_name_update\n" + "BEFORE UPDATE OF 'f_table_name' ON 'SE_vector_styled_layers'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_vector_styled_layers violates constraint: " + "f_table_name value must not contain a single quote')\n" + "WHERE NEW.f_table_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'update on SE_vector_styled_layers violates constraint: " + "f_table_name value must not contain a double quote')\n" + "WHERE NEW.f_table_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'update on SE_vector_styled_layers violates constraint: " + "f_table_name value must be lower case')\n" + "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER sevstl_f_geometry_column_insert\n" + "BEFORE INSERT ON 'SE_vector_styled_layers'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_vector_styled_layers violates constraint: " + "f_geometry_column value must not contain a single quote')\n" + "WHERE NEW.f_geometry_column LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'insert on SE_vector_styled_layers violates constraint: " + "f_geometry_column value must not contain a double quote')\n" + "WHERE NEW.f_geometry_column LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'insert on SE_vector_styled_layers violates constraint: " + "f_geometry_column value must be lower case')\n" + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER sevstl_f_geometry_column_update\n" + "BEFORE UPDATE OF 'f_geometry_column' ON 'SE_vector_styled_layers'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_vector_styled_layers violates constraint: " + "f_geometry_column value must not contain a single quote')\n" + "WHERE NEW.f_geometry_column LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'update on SE_vector_styled_layers violates constraint: " + "f_geometry_column value must not contain a double quote')\n" + "WHERE NEW.f_geometry_column LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'update on SE_vector_styled_layers violates constraint: " + "f_geometry_column value must be lower case')\n" + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + if (relaxed == 0) + { + /* strong trigger - imposing XML schema validation */ + sql = "CREATE TRIGGER sevstl_style_insert\n" + "BEFORE INSERT ON 'SE_vector_styled_layers'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_vector_styled_layers violates constraint: " + "not a valid SLD/SE Vector Style')\n" + "WHERE XB_IsSldSeVectorStyle(NEW.style) <> 1;\n" + "SELECT RAISE(ABORT,'insert on SE_vector_styled_layers violates constraint: " + "not an XML Schema Validated SLD/SE Vector Style')\n" + "WHERE XB_IsSchemaValidated(NEW.style) <> 1;\nEND"; + } + else + { + /* relaxed trigger - not imposing XML schema validation */ + sql = "CREATE TRIGGER sevstl_style_insert\n" + "BEFORE INSERT ON 'SE_vector_styled_layers'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_vector_styled_layers violates constraint: " + "not a valid SLD/SE Vector Style')\n" + "WHERE XB_IsSldSeVectorStyle(NEW.style) <> 1;\nEND"; + } + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + if (relaxed == 0) + { + /* strong trigger - imposing XML schema validation */ + sql = "CREATE TRIGGER sevstl_style_update\n" + "BEFORE UPDATE ON 'SE_vector_styled_layers'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_vector_styled_layers violates constraint: " + "not a valid SLD/SE Vector Style')\n" + "WHERE XB_IsSldSeVectorStyle(NEW.style) <> 1;\n" + "SELECT RAISE(ABORT,'update on SE_vector_styled_layers violates constraint: " + "not an XML Schema Validated SLD/SE Vector Style')\n" + "WHERE XB_IsSchemaValidated(NEW.style) <> 1;\nEND"; + } + else + { + /* relaxed trigger - not imposing XML schema validation */ + sql = "CREATE TRIGGER sevstl_style_update\n" + "BEFORE UPDATE ON 'SE_vector_styled_layers'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_vector_styled_layers violates constraint: " + "not a valid SLD/SE Vector Style')\n" + "WHERE XB_IsSldSeVectorStyle(NEW.style) <> 1;\nEND"; + } + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* automatically setting the style_name after inserting */ + sql = "CREATE TRIGGER sevstl_style_name_ins\n" + "AFTER INSERT ON 'SE_vector_styled_layers'\nFOR EACH ROW BEGIN\n" + "UPDATE SE_vector_styled_layers " + "SET style_name = XB_GetName(NEW.style) " + "WHERE f_table_name = NEW.f_table_name " + "AND f_geometry_column = NEW.f_geometry_column " + "AND style_id = NEW.style_id;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* automatically setting the style_name after updating */ + sql = "CREATE TRIGGER sevstl_style_name_upd\n" + "AFTER UPDATE OF style ON " + "'SE_vector_styled_layers'\nFOR EACH ROW BEGIN\n" + "UPDATE SE_vector_styled_layers " + "SET style_name = XB_GetName(NEW.style) " + "WHERE f_table_name = NEW.f_table_name " + "AND f_geometry_column = NEW.f_geometry_column " + "AND style_id = NEW.style_id;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_raster_styled_layers (sqlite3 * sqlite, int relaxed) +{ +/* creating the SE_raster_styled_layers table */ + char *sql; + int ret; + char *err_msg = NULL; + sql = "CREATE TABLE SE_raster_styled_layers (\n" + "coverage_name TEXT NOT NULL,\n" + "style_id INTEGER NOT NULL,\n" + "style_name TEXT NOT NULL DEFAULT 'missing_name',\n" + "style BLOB NOT NULL,\n" + "CONSTRAINT pk_serstl PRIMARY KEY " "(coverage_name, style_id),\n" + "CONSTRAINT fk_serstl FOREIGN KEY (coverage_name) " + "REFERENCES raster_coverages (coverage_name) " "ON DELETE CASCADE)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE 'SE_raster_styled_layers' error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating the layer-style UNIQUE index */ + sql = "CREATE UNIQUE INDEX idx_raster_style ON SE_raster_styled_layers " + "(coverage_name, style_name)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX 'idx_raster_style' error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating the SE_raster_styled_layers triggers */ + sql = "CREATE TRIGGER serstl_coverage_name_insert\n" + "BEFORE INSERT ON 'SE_raster_styled_layers'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_raster_styled_layers violates constraint: " + "coverage_name value must not contain a single quote')\n" + "WHERE NEW.coverage_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'insert on SE_raster_styled_layers violates constraint: " + "coverage_name value must not contain a double quote')\n" + "WHERE NEW.coverage_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'insert on SE_raster_styled_layers violates constraint: " + "coverage_name value must be lower case')\n" + "WHERE NEW.coverage_name <> lower(NEW.coverage_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER serstl_coverage_name_update\n" + "BEFORE UPDATE OF 'coverage_name' ON 'SE_raster_styled_layers'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_raster_styled_layers violates constraint: " + "coverage_name value must not contain a single quote')\n" + "WHERE NEW.coverage_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'update on SE_raster_styled_layers violates constraint: " + "coverage_name value must not contain a double quote')\n" + "WHERE NEW.coverage_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'update on SE_raster_styled_layers violates constraint: " + "coverage_name value must be lower case')\n" + "WHERE NEW.coverage_name <> lower(NEW.coverage_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + if (relaxed == 0) + { + /* strong trigger - imposing XML schema validation */ + sql = "CREATE TRIGGER serstl_style_insert\n" + "BEFORE INSERT ON 'SE_raster_styled_layers'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_raster_styled_layers violates constraint: " + "not a valid SLD/SE Raster Style')\n" + "WHERE XB_IsSldSeRasterStyle(NEW.style) <> 1;\n" + "SELECT RAISE(ABORT,'insert on SE_raster_styled_layers violates constraint: " + "not an XML Schema Validated SLD/SE Raster Style')\n" + "WHERE XB_IsSchemaValidated(NEW.style) <> 1;\nEND"; + } + else + { + /* relaxed trigger - not imposing XML schema validation */ + sql = "CREATE TRIGGER serstl_style_insert\n" + "BEFORE INSERT ON 'SE_raster_styled_layers'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_raster_styled_layers violates constraint: " + "not a valid SLD/SE Raster Style')\n" + "WHERE XB_IsSldSeRasterStyle(NEW.style) <> 1;\nEND"; + } + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + if (relaxed == 0) + { + /* strong trigger - imposing XML schema validation */ + sql = "CREATE TRIGGER serstl_style_update\n" + "BEFORE UPDATE ON 'SE_raster_styled_layers'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_raster_styled_layers violates constraint: " + "not a valid SLD/SE Raster Style')\n" + "WHERE XB_IsSldSeRasterStyle(NEW.style) <> 1;\n" + "SELECT RAISE(ABORT,'update on SE_raster_styled_layers violates constraint: " + "not an XML Schema Validated SLD/SE Raster Style')\n" + "WHERE XB_IsSchemaValidated(NEW.style) <> 1;\nEND"; + } + else + { + /* relaxed trigger - not imposing XML schema validation */ + sql = "CREATE TRIGGER serstl_style_update\n" + "BEFORE UPDATE ON 'SE_raster_styled_layers'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_raster_styled_layers violates constraint: " + "not a valid SLD/SE Raster Style')\n" + "WHERE XB_IsSldSeRasterStyle(NEW.style) <> 1;\nEND"; + } + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* automatically setting the style_name after inserting */ + sql = "CREATE TRIGGER serstl_style_name_ins\n" + "AFTER INSERT ON 'SE_raster_styled_layers'\nFOR EACH ROW BEGIN\n" + "UPDATE SE_raster_styled_layers " + "SET style_name = XB_GetName(NEW.style) " + "WHERE coverage_name = NEW.coverage_name " + "AND style_id = NEW.style_id;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* automatically setting the style_name after updating */ + sql = "CREATE TRIGGER serstl_style_name_upd\n" + "AFTER UPDATE OF style ON " + "'SE_raster_styled_layers'\nFOR EACH ROW BEGIN\n" + "UPDATE SE_raster_styled_layers " + "SET style_name = XB_GetName(NEW.style) " + "WHERE coverage_name = NEW.coverage_name " + "AND style_id = NEW.style_id;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_styled_groups (sqlite3 * sqlite) +{ +/* creating the SE_styled_groups table */ + char *sql; + int ret; + char *err_msg = NULL; + sql = "CREATE TABLE SE_styled_groups (\n" + "group_name TEXT NOT NULL PRIMARY KEY,\n" + "title TEXT NOT NULL DEFAULT '*** undefined ***',\n" + "abstract TEXT NOT NULL DEFAULT '*** undefined ***')"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE 'SE_styled_groups' error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating the SE_styled_groups triggers */ + sql = "CREATE TRIGGER segrp_group_name_insert\n" + "BEFORE INSERT ON 'SE_styled_groups'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_styled_groups violates constraint: " + "group_name value must not contain a single quote')\n" + "WHERE NEW.group_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'insert on SE_styled_groups violates constraint: " + "group_name value must not contain a double quote')\n" + "WHERE NEW.group_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'insert on SE_styled_groups violates constraint: " + "group_name value must be lower case')\n" + "WHERE NEW.group_name <> lower(NEW.group_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER segrp_group_name_update\n" + "BEFORE UPDATE OF 'group_name' ON 'SE_styled_groups'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_styled_groups violates constraint: " + "group_name value must not contain a single quote')\n" + "WHERE NEW.group_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'update on SE_styled_groups violates constraint: " + "group_name value must not contain a double quote')\n" + "WHERE NEW.group_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'update on SE_styled_groups violates constraint: " + "group_name value must be lower case')\n" + "WHERE NEW.group_name <> lower(NEW.group_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_styled_group_refs (sqlite3 * sqlite) +{ +/* creating the SE_styled_group_refs table */ + char *sql; + int ret; + char *err_msg = NULL; + sql = "CREATE TABLE SE_styled_group_refs (\n" + "id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + "group_name TEXT NOT NULL,\n" + "paint_order INTEGER NOT NULL,\n" + "f_table_name TEXT,\n" + "f_geometry_column TEXT,\n" + "coverage_name TEXT,\n" + "CONSTRAINT fk_se_refs FOREIGN KEY (group_name) " + "REFERENCES SE_styled_groups (group_name) " + "ON DELETE CASCADE,\n" + "CONSTRAINT fk_se_group_vector FOREIGN KEY " + "(f_table_name, f_geometry_column) " + "REFERENCES geometry_columns " + "(f_table_name, f_geometry_column) " + "ON DELETE CASCADE,\n" + "CONSTRAINT fk_se_group_raster " + "FOREIGN KEY (coverage_name) " + "REFERENCES raster_coverages (coverage_name) " "ON DELETE CASCADE)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e + ("CREATE TABLE 'SE_styled_group_refs' error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating the SE_styled_group_refs triggers */ + sql = "CREATE TRIGGER segrrefs_group_name_insert\n" + "BEFORE INSERT ON 'SE_styled_group_refs'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_styled_group_refs violates constraint: " + "group_name value must not contain a single quote')\n" + "WHERE NEW.group_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'insert on SE_styled_group_refs violates constraint: " + "group_name value must not contain a double quote')\n" + "WHERE NEW.group_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'insert on SE_styled_group_refs violates constraint: " + "group_name value must be lower case')\n" + "WHERE NEW.group_name <> lower(NEW.group_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER segrrefs_group_name_update\n" + "BEFORE UPDATE OF 'group_name' ON 'SE_styled_group_refs'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_styled_group_refs violates constraint: " + "group_name value must not contain a single quote')\n" + "WHERE NEW.group_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'update on SE_styled_group_refs violates constraint: " + "group_name value must not contain a double quote')\n" + "WHERE NEW.group_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'update on SE_styled_group_refs violates constraint: " + "group_name value must be lower case')\n" + "WHERE NEW.group_name <> lower(NEW.group_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER segrrefs_f_table_name_insert\n" + "BEFORE INSERT ON 'SE_styled_group_refs'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_styled_group_refs violates constraint: " + "f_table_name value must not contain a single quote')\n" + "WHERE NEW.f_table_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'insert on SE_styled_group_refs violates constraint: " + "f_table_name value must not contain a double quote')\n" + "WHERE NEW.f_table_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'insert on SE_styled_group_refs violates constraint: " + "f_table_name value must be lower case')\n" + "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER segrrefs_f_table_name_update\n" + "BEFORE UPDATE OF 'f_table_name' ON 'SE_styled_group_refs'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_styled_group_refs violates constraint: " + "f_table_name value must not contain a single quote')\n" + "WHERE NEW.f_table_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'update on SE_styled_group_refs violates constraint: " + "f_table_name value must not contain a double quote')\n" + "WHERE NEW.f_table_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'update on SE_styled_group_refs violates constraint: " + "f_table_name value must be lower case')\n" + "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER segrrefs_f_geometry_column_insert\n" + "BEFORE INSERT ON 'SE_styled_group_refs'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_styled_group_refs violates constraint: " + "f_geometry_column value must not contain a single quote')\n" + "WHERE NEW.f_geometry_column LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'insert on SE_styled_group_refs violates constraint: " + "f_geometry_column value must not contain a double quote')\n" + "WHERE NEW.f_geometry_column LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'insert on SE_styled_group_refs violates constraint: " + "f_geometry_column value must be lower case')\n" + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER segrrefs_f_geometry_column_update\n" + "BEFORE UPDATE OF 'f_geometry_column' ON 'SE_styled_group_refs'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_styled_group_refs violates constraint: " + "f_geometry_column value must not contain a single quote')\n" + "WHERE NEW.f_geometry_column LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'update on SE_styled_group_refs violates constraint: " + "f_geometry_column value must not contain a double quote')\n" + "WHERE NEW.f_geometry_column LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'update on SE_styled_group_refs violates constraint: " + "f_geometry_column value must be lower case')\n" + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER segrrefs_coverage_name_insert\n" + "BEFORE INSERT ON 'SE_styled_group_refs'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_styled_group_refs violates constraint: " + "coverage_name value must not contain a single quote')\n" + "WHERE NEW.coverage_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'insert on SE_styled_group_refs violates constraint: " + "coverage_name value must not contain a double quote')\n" + "WHERE NEW.coverage_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'insert on SE_styled_group_refs violates constraint: " + "coverage_name value must be lower case')\n" + "WHERE NEW.coverage_name <> lower(NEW.coverage_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER segrrefs_coverage_name_update\n" + "BEFORE UPDATE OF 'coverage_name' ON 'SE_styled_group_refs'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_styled_group_refs violates constraint: " + "coverage_name value must not contain a single quote')\n" + "WHERE NEW.coverage_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'update on SE_styled_group_refs violates constraint: " + "coverage_name value must not contain a double quote')\n" + "WHERE NEW.coverage_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'update on SE_styled_group_refs violates constraint: " + "coverage_name value must be lower case')\n" + "WHERE NEW.coverage_name <> lower(NEW.coverage_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER segrrefs_insert\n" + "BEFORE INSERT ON 'SE_styled_group_refs'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_styled_group_refs violates constraint: " + "cannot reference both Vector and Raster at the same time')\n" + "WHERE (NEW.f_table_name IS NOT NULL OR NEW.f_geometry_column IS NOT NULL) " + "AND NEW.coverage_name IS NOT NULL;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER segrrefs_update\n" + "BEFORE UPDATE ON 'SE_styled_group_refs'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_styled_group_refs violates constraint: " + "cannot reference both Vector and Raster at the same time')\n" + "WHERE (NEW.f_table_name IS NOT NULL OR NEW.f_geometry_column IS NOT NULL) " + "AND NEW.coverage_name IS NOT NULL;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating any Index on SE_styled_group_refs */ + sql = "CREATE INDEX idx_SE_styled_vgroups ON " + "SE_styled_group_refs " "(f_table_name, f_geometry_column)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("Create Index 'idx_SE_styled_vgroups' error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE INDEX idx_SE_styled_rgroups ON " + "SE_styled_group_refs " "(coverage_name)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("Create Index 'idx_SE_styled_rgroups' error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE INDEX idx_SE_styled_groups_paint ON " + "SE_styled_group_refs " "(group_name, paint_order)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e + ("Create Index 'idx_SE_styled_groups_paint' error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_group_styles (sqlite3 * sqlite, int relaxed) +{ +/* creating the SE_group_styles table */ + char *sql; + int ret; + char *err_msg = NULL; + sql = "CREATE TABLE SE_group_styles (\n" + "group_name TEXT NOT NULL,\n" + "style_id INTEGER NOT NULL,\n" + "style_name TEXT NOT NULL DEFAULT 'missing_name',\n" + "style BLOB NOT NULL,\n" + "CONSTRAINT pk_segrpstl PRIMARY KEY " "(group_name, style_id),\n" + "CONSTRAINT fk_segrpstl FOREIGN KEY (group_name) " + "REFERENCES SE_styled_groups (group_name) " "ON DELETE CASCADE)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE 'SE_group_styles' error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating the layer-style UNIQUE index */ + sql = "CREATE UNIQUE INDEX idx_group_style ON SE_group_styles " + "(group_name, style_name)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE INDEX 'idx_group_style' error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating the SE_group_styles triggers */ + sql = "CREATE TRIGGER segrpstl_group_name_insert\n" + "BEFORE INSERT ON 'SE_group_styles'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_group_styles violates constraint: " + "group_name value must not contain a single quote')\n" + "WHERE NEW.group_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'insert on SE_group_styles violates constraint: " + "group_name value must not contain a double quote')\n" + "WHERE NEW.group_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'insert on SE_group_styles violates constraint: " + "group_name value must be lower case')\n" + "WHERE NEW.group_name <> lower(NEW.group_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER segrpstl_group_name_update\n" + "BEFORE UPDATE OF 'group_name' ON 'SE_group_styles'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_group_styles violates constraint: " + "group_name value must not contain a single quote')\n" + "WHERE NEW.group_name LIKE ('%''%');\n" + "SELECT RAISE(ABORT,'update on SE_group_styles violates constraint: " + "group_name value must not contain a double quote')\n" + "WHERE NEW.group_name LIKE ('%\"%');\n" + "SELECT RAISE(ABORT,'update on SE_group_styles violates constraint: " + "group_name value must be lower case')\n" + "WHERE NEW.group_name <> lower(NEW.group_name);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + if (relaxed == 0) + { + /* strong trigger - imposing XML schema validation */ + sql = "CREATE TRIGGER segrpstl_style_insert\n" + "BEFORE INSERT ON 'SE_group_styles'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_group_styles violates constraint: " + "not a valid SLD Style')\n" + "WHERE XB_IsSldStyle(NEW.style) <> 1;\n" + "SELECT RAISE(ABORT,'insert on SE_group_styles violates constraint: " + "not an XML Schema Validated SLD Style')\n" + "WHERE XB_IsSchemaValidated(NEW.style) <> 1;\nEND"; + } + else + { + /* relaxed trigger - not imposing XML schema validation */ + sql = "CREATE TRIGGER segrpstl_style_insert\n" + "BEFORE INSERT ON 'SE_group_styles'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on SE_group_styles violates constraint: " + "not a valid SLD Style')\n" + "WHERE XB_IsSldStyle(NEW.style) <> 1;\nEND"; + } + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + if (relaxed == 0) + { + /* strong trigger - imposing XML schema validation */ + sql = "CREATE TRIGGER segrpstl_style_update\n" + "BEFORE UPDATE ON 'SE_group_styles'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_group_styles violates constraint: " + "not a valid SLD Style')\n" + "WHERE XB_IsSldStyle(NEW.style) <> 1;\n" + "SELECT RAISE(ABORT,'update on SE_group_styles violates constraint: " + "not an XML Schema Validated SLD Style')\n" + "WHERE XB_IsSchemaValidated(NEW.style) <> 1;\nEND"; + } + else + { + /* relaxed trigger - not imposing XML schema validation */ + sql = "CREATE TRIGGER segrpstl_style_update\n" + "BEFORE UPDATE ON 'SE_group_styles'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on SE_group_styles violates constraint: " + "not a valid SLD Raster Style')\n" + "WHERE XB_IsSldStyle(NEW.style) <> 1;\nEND"; + } + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* automatically setting the style_name after inserting */ + sql = "CREATE TRIGGER segrpstl_style_name_ins\n" + "AFTER INSERT ON 'SE_group_styles'\nFOR EACH ROW BEGIN\n" + "UPDATE SE_group_styles " + "SET style_name = XB_GetName(NEW.style) " + "WHERE group_name = NEW.group_name " + "AND style_id = NEW.style_id;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* automatically setting the style_name after updating */ + sql = "CREATE TRIGGER segrpstl_style_name_upd\n" + "AFTER UPDATE OF style ON " + "'SE_group_styles'\nFOR EACH ROW BEGIN\n" + "UPDATE SE_group_styles " + "SET style_name = XB_GetName(NEW.style) " + "WHERE group_name = NEW.group_name " + "AND style_id = NEW.style_id;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_external_graphics_view (sqlite3 * sqlite) +{ +/* creating the SE_external_graphics_view view */ + char *sql_statement; + int ret; + char *err_msg = NULL; + sql_statement = + sqlite3_mprintf + ("CREATE VIEW SE_external_graphics_view AS\n" + "SELECT xlink_href AS xlink_href, title AS title, " + "abstract AS abstract, resource AS resource, " + "file_name AS file_name, GetMimeType(resource) AS mime_type\n" + "FROM SE_external_graphics"); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e + ("CREATE VIEW 'SE_external_graphics_view' error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_vector_styled_layers_view (sqlite3 * sqlite) +{ +/* creating the SE_vector_styled_layers_view view */ + char *sql_statement; + int ret; + char *err_msg = NULL; + sql_statement = + sqlite3_mprintf ("CREATE VIEW SE_vector_styled_layers_view AS \n" + "SELECT f_table_name AS f_table_name, f_geometry_column AS f_geometry_column, " + "style_id AS style_id, style_name AS name, XB_GetTitle(style) AS title, " + "XB_GetAbstract(style) AS abstract, style AS style, " + "XB_IsSchemaValidated(style) AS schema_validated, " + "XB_GetSchemaURI(style) AS schema_uri\n" + "FROM SE_vector_styled_layers"); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e + ("CREATE VIEW 'SE_vector_styled_layers_view' error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_raster_styled_layers_view (sqlite3 * sqlite) +{ +/* creating the SE_raster_styled_layers_view view */ + char *sql_statement; + int ret; + char *err_msg = NULL; + sql_statement = + sqlite3_mprintf ("CREATE VIEW SE_raster_styled_layers_view AS \n" + "SELECT coverage_name AS coverage_name, style_id AS style_id, " + "style_name AS name, XB_GetTitle(style) AS title, " + "XB_GetAbstract(style) AS abstract, style AS style, " + "XB_IsSchemaValidated(style) AS schema_validated, " + "XB_GetSchemaURI(style) AS schema_uri\n" + "FROM SE_raster_styled_layers"); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e + ("CREATE VIEW 'SE_raster_styled_layers_view' error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_styled_groups_view (sqlite3 * sqlite) +{ +/* creating the SE_styled_groups_view view */ + char *sql; + int ret; + char *err_msg = NULL; + sql = "CREATE VIEW SE_styled_groups_view AS " + "SELECT g.group_name AS group_name, g.title AS group_title, " + "g.abstract AS group_abstract, gr.paint_order AS paint_order, " + "'vector' AS type, v.f_table_name AS layer_name, " + "v.f_geometry_column AS geometry_column, " + "v.geometry_type AS geometry_type, v.coord_dimension AS coord_dimension, " + "v.srid AS srid FROM SE_styled_groups AS g " + "JOIN SE_styled_group_refs AS gr ON (g.group_name = gr.group_name) " + "JOIN geometry_columns AS v ON (gr.f_table_name = v.f_table_name " + "AND gr.f_geometry_column = v.f_geometry_column) UNION " + "SELECT g.group_name AS group_name, g.title AS group_title, " + "g.abstract AS group_abstract, gr.paint_order AS paint_order, " + "'raster' AS type, r.coverage_name AS layer_name, NULL AS geometry_column, " + "NULL AS geometry_type, NULL AS coord_dimension, r.srid AS srid " + "FROM SE_styled_groups AS g " + "JOIN SE_styled_group_refs AS gr ON (g.group_name = gr.group_name) " + "JOIN raster_coverages AS r ON (gr.coverage_name = r.coverage_name)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e + ("CREATE VIEW 'SE_styled_groups_view' error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_group_styles_view (sqlite3 * sqlite) +{ +/* creating the SE_group_styles_view view */ + char *sql_statement; + int ret; + char *err_msg = NULL; + sql_statement = + sqlite3_mprintf ("CREATE VIEW SE_group_styles_view AS \n" + "SELECT group_name AS group_name, style_id AS style_id, " + "style_name AS name, XB_GetTitle(style) AS title, " + "XB_GetAbstract(style) AS abstract, style AS style, " + "XB_IsSchemaValidated(style) AS schema_validated, " + "XB_GetSchemaURI(style) AS schema_uri\n" + "FROM SE_group_styles"); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e + ("CREATE VIEW 'SE_group_styles_view' error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +SPATIALITE_PRIVATE int +createStylingTables (void *p_sqlite, int relaxed) +{ +/* Creating the SE Styling tables */ + const char *tables[12]; + int views[11]; + const char **p_tbl; + int *p_view; + int ok_table; + sqlite3 *sqlite = p_sqlite; + +/* checking SLD/SE Styling tables */ + tables[0] = "SE_external_graphics"; + tables[1] = "SE_vector_styled_layers"; + tables[2] = "SE_raster_styled_layers"; + tables[3] = "SE_styled_groups"; + tables[4] = "SE_styled_group_refs"; + tables[5] = "SE_group_styles"; + tables[6] = "SE_external_graphics_view"; + tables[7] = "SE_vector_styled_layers_view"; + tables[8] = "SE_raster_styled_layers_view"; + tables[9] = "SE_styled_groups_view"; + tables[10] = "SE_group_styles_view"; + tables[11] = NULL; + views[0] = 0; + views[1] = 0; + views[2] = 0; + views[3] = 0; + views[4] = 0; + views[5] = 0; + views[6] = 1; + views[7] = 1; + views[8] = 1; + views[9] = 1; + views[10] = 1; + p_tbl = tables; + p_view = views; + while (*p_tbl != NULL) + { + ok_table = check_styling_table (sqlite, *p_tbl, *p_view); + if (ok_table) + { + spatialite_e + ("CreateStylingTables() error: table '%s' already exists\n", + *p_tbl); + goto error; + } + p_tbl++; + p_view++; + } + +/* creating the SLD/SE Styling tables */ + if (!check_raster_coverages (sqlite)) + { + /* creating the main RasterCoverages table as well */ + if (!create_raster_coverages (sqlite)) + goto error; + } + if (!create_external_graphics (sqlite)) + goto error; + if (!create_vector_styled_layers (sqlite, relaxed)) + goto error; + if (!create_raster_styled_layers (sqlite, relaxed)) + goto error; + if (!create_styled_groups (sqlite)) + goto error; + if (!create_styled_group_refs (sqlite)) + goto error; + if (!create_group_styles (sqlite, relaxed)) + goto error; + if (!create_external_graphics_view (sqlite)) + goto error; + if (!create_vector_styled_layers_view (sqlite)) + goto error; + if (!create_raster_styled_layers_view (sqlite)) + goto error; + if (!create_styled_groups_view (sqlite)) + goto error; + if (!create_group_styles_view (sqlite)) + goto error; + return 1; + + error: + return 0; +} + +static int +check_iso_metadata_table (sqlite3 * sqlite, const char *table, int is_view) +{ +/* checking if some ISO Metadata-related table/view already exists */ + int exists = 0; + char *sql_statement; + char *errMsg = NULL; + int ret; + char **results; + int rows; + int columns; + int i; + sql_statement = + sqlite3_mprintf ("SELECT name FROM sqlite_master WHERE type = '%s'" + "AND Upper(name) = Upper(%Q)", + (!is_view) ? "table" : "view", table); + ret = + sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + sqlite3_free (errMsg); + return 0; + } + for (i = 1; i <= rows; i++) + exists = 1; + sqlite3_free_table (results); + return exists; +} + +static int +create_iso_metadata (sqlite3 * sqlite, int relaxed) +{ +/* creating the ISO_metadata table */ + char *sql; + int ret; + char *err_msg = NULL; + sql = "CREATE TABLE ISO_metadata (\n" + "id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + "md_scope TEXT NOT NULL DEFAULT 'dataset',\n" + "metadata BLOB NOT NULL DEFAULT (zeroblob(4)),\n" + "fileId TEXT,\nparentId TEXT)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE 'ISO_metadata' error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* adding the Geometry column */ + sql = + "SELECT AddGeometryColumn('ISO_metadata', 'geometry', 4326, 'MULTIPOLYGON', 'XY')"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e + (" AddGeometryColumn 'ISO_metadata'.'geometry' error:%s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } +/* adding a Spatial Index */ + sql = "SELECT CreateSpatialIndex ('ISO_metadata', 'geometry')"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e + ("CreateSpatialIndex 'ISO_metadata'.'geometry' error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating the ISO_metadata triggers */ + sql = "CREATE TRIGGER 'ISO_metadata_md_scope_insert'\n" + "BEFORE INSERT ON 'ISO_metadata'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ROLLBACK, 'insert on table ISO_metadata violates constraint: " + "md_scope must be one of ''undefined'' | ''fieldSession'' | ''collectionSession'' " + "| ''series'' | ''dataset'' | ''featureType'' | ''feature'' | ''attributeType'' " + "| ''attribute'' | ''tile'' | ''model'' | ''catalogue'' | ''schema'' " + "| ''taxonomy'' | ''software'' | ''service'' | ''collectionHardware'' " + "| ''nonGeographicDataset'' | ''dimensionGroup''')\n" + "WHERE NOT(NEW.md_scope IN ('undefined','fieldSession','collectionSession'," + "'series','dataset','featureType','feature','attributeType','attribute'," + "'tile','model','catalogue','schema','taxonomy','software','service'," + "'collectionHardware','nonGeographicDataset','dimensionGroup'));\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER 'ISO_metadata_md_scope_update'\n" + "BEFORE UPDATE OF 'md_scope' ON 'ISO_metadata'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ROLLBACK, 'update on table ISO_metadata violates constraint: " + "md_scope must be one of ''undefined'' | ''fieldSession'' | ''collectionSession'' " + "| ''series'' | ''dataset'' | ''featureType'' | ''feature'' | ''attributeType'' |" + " ''attribute'' | ''tile'' | ''model'' | ''catalogue'' | ''schema'' " + "| ''taxonomy'' | ''software'' | ''service'' | ''collectionHardware'' " + "| ''nonGeographicDataset'' | ''dimensionGroup''')\n" + "WHERE NOT(NEW.md_scope IN ('undefined','fieldSession','collectionSession'," + "'series','dataset','featureType','feature','attributeType','attribute'," + "'tile','model','catalogue','schema','taxonomy','software','service'," + "'collectionHardware','nonGeographicDataset','dimensionGroup'));\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER 'ISO_metadata_fileIdentifier_insert'\n" + "AFTER INSERT ON 'ISO_metadata'\nFOR EACH ROW BEGIN\n" + "UPDATE ISO_metadata SET fileId = XB_GetFileId(NEW.metadata), " + "parentId = XB_GetParentId(NEW.metadata), " + "geometry = XB_GetGeometry(NEW.metadata) WHERE id = NEW.id;\n" + "UPDATE ISO_metadata_reference " + "SET md_parent_id = GetIsoMetadataId(NEW.parentId) " + "WHERE md_file_id = NEW.id;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER 'ISO_metadata_fileIdentifier_update'\n" + "AFTER UPDATE ON 'ISO_metadata'\nFOR EACH ROW BEGIN\n" + "UPDATE ISO_metadata SET fileId = XB_GetFileId(NEW.metadata), " + "parentId = XB_GetParentId(NEW.metadata), " + "geometry = XB_GetGeometry(NEW.metadata) WHERE id = NEW.id;\n" + "UPDATE ISO_metadata_reference " + "SET md_parent_id = GetIsoMetadataId(NEW.parentId) " + "WHERE md_file_id = NEW.id;\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + if (relaxed == 0) + { + /* strong trigger - imposing XML schema validation */ + sql = "CREATE TRIGGER ISO_metadata_insert\n" + "BEFORE INSERT ON 'ISO_metadata'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on ISO_metadata violates constraint: " + "not a valid ISO Metadata XML')\n" + "WHERE XB_IsIsoMetadata(NEW.metadata) <> 1 AND NEW.id <> 0;\n" + "SELECT RAISE(ABORT,'insert on ISO_metadata violates constraint: " + "not an XML Schema Validated ISO Metadata')\n" + "WHERE XB_IsSchemaValidated(NEW.metadata) <> 1 AND NEW.id <> 0;\nEND"; + } + else + { + /* relaxed trigger - not imposing XML schema validation */ + sql = "CREATE TRIGGER ISO_metadata_insert\n" + "BEFORE INSERT ON 'ISO_metadata'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'insert on ISO_metadata violates constraint: " + "not a valid ISO Metadata XML')\n" + "WHERE XB_IsIsoMetadata(NEW.metadata) <> 1 AND NEW.id <> 0;\nEND"; + } + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + if (relaxed == 0) + { + /* strong trigger - imposing XML schema validation */ + sql = "CREATE TRIGGER ISO_metadata_update\n" + "BEFORE UPDATE ON 'ISO_metadata'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on ISO_metadata violates constraint: " + "not a valid ISO Metadata XML')\n" + "WHERE XB_IsIsoMetadata(NEW.metadata) <> 1 AND NEW.id <> 0;\n" + "SELECT RAISE(ABORT,'update on ISO_metadata violates constraint: " + "not an XML Schema Validated ISO Metadata')\n" + "WHERE XB_IsSchemaValidated(NEW.metadata) <> 1 AND NEW.id <> 0;\nEND"; + } + else + { + /* relaxed trigger - not imposing XML schema validation */ + sql = "CREATE TRIGGER ISO_metadata_update\n" + "BEFORE UPDATE ON 'ISO_metadata'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ABORT,'update on ISO_metadata violates constraint: " + "not a valid ISO Metadata XML')\n" + "WHERE XB_IsIsoMetadata(NEW.metadata) <> 1 AND NEW.id <> 0;\nEND"; + } + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating any Index on ISO_metadata */ + sql = "CREATE UNIQUE INDEX idx_ISO_metadata_ids ON " + "ISO_metadata (fileId)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("Create Index 'idx_ISO_metadata_ids' error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE INDEX idx_ISO_metadata_parents ON " "ISO_metadata (parentId)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("Create Index 'idx_ISO_metadata_parents' error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_iso_metadata_reference (sqlite3 * sqlite) +{ +/* creating the ISO_metadata_reference table */ + char *sql; + int ret; + char *err_msg = NULL; + sql = "CREATE TABLE ISO_metadata_reference (\n" + "reference_scope TEXT NOT NULL DEFAULT 'table',\n" + "table_name TEXT NOT NULL DEFAULT 'undefined',\n" + "column_name TEXT NOT NULL DEFAULT 'undefined',\n" + "row_id_value INTEGER NOT NULL DEFAULT 0,\n" + "timestamp TEXT NOT NULL DEFAULT (" + "strftime('%Y-%m-%dT%H:%M:%fZ',CURRENT_TIMESTAMP)),\n" + "md_file_id INTEGER NOT NULL DEFAULT 0,\n" + "md_parent_id INTEGER NOT NULL DEFAULT 0,\n" + "CONSTRAINT fk_isometa_mfi FOREIGN KEY (md_file_id) " + "REFERENCES ISO_metadata(id),\n" + "CONSTRAINT fk_isometa_mpi FOREIGN KEY (md_parent_id) " + "REFERENCES ISO_metadata(id))"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE 'ISO_metadata_reference' error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating the ISO_metadata_reference triggers */ + sql = "CREATE TRIGGER 'ISO_metadata_reference_scope_insert'\n" + "BEFORE INSERT ON 'ISO_metadata_reference'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ROLLBACK, 'insert on table ISO_metadata_reference violates constraint: " + "reference_scope must be one of ''table'' | ''column'' | ''row'' | ''row/col''')\n" + "WHERE NOT NEW.reference_scope IN ('table','column','row','row/col');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER 'ISO_metadata_reference_scope_update'\n" + "BEFORE UPDATE OF 'reference_scope' ON 'ISO_metadata_reference'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ROLLBACK, 'update on table ISO_metadata_reference violates constraint: " + "referrence_scope must be one of ''table'' | ''column'' | ''row'' | ''row/col''')\n" + "WHERE NOT NEW.reference_scope IN ('table','column','row','row/col');\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER 'ISO_metadata_reference_table_name_insert'\n" + "BEFORE INSERT ON 'ISO_metadata_reference'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ROLLBACK, 'insert on table ISO_metadata_reference violates constraint: " + "table_name must be the name of a table in geometry_columns')\n" + "WHERE NOT NEW.table_name IN (\n" + "SELECT f_table_name AS table_name FROM geometry_columns);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER 'ISO_metadata_reference_table_name_update'\n" + "BEFORE UPDATE OF 'table_name' ON 'ISO_metadata_reference'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ROLLBACK, 'update on table ISO_metadata_reference violates constraint: " + "table_name must be the name of a table in geometry_columns')\n" + "WHERE NOT NEW.table_name IN (\n" + "SELECT f_table_name AS table_name FROM geometry_columns);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER 'ISO_metadata_reference_row_id_value_insert'\n" + "BEFORE INSERT ON 'ISO_metadata_reference'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ROLLBACK, 'insert on ISO_table ISO_metadata_reference violates constraint: " + "row_id_value must be 0 when reference_scope is ''table'' or ''column''')\n" + "WHERE NEW.reference_scope IN ('table','column') AND NEW.row_id_value <> 0;\n" + "SELECT RAISE(ROLLBACK, 'insert on table ISO_metadata_reference violates constraint: " + "row_id_value must exist in specified table when reference_scope is ''row'' or ''row/col''')\n" + "WHERE NEW.reference_scope IN ('row','row/col') AND NOT EXISTS\n" + "(SELECT rowid FROM (SELECT NEW.table_name AS table_name) " + "WHERE rowid = NEW.row_id_value);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER 'ISO_metadata_reference_row_id_value_update'\n" + "BEFORE UPDATE OF 'row_id_value' ON 'ISO_metadata_reference'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ROLLBACK, 'update on table ISO_metadata_reference violates constraint: " + "row_id_value must be 0 when reference_scope is ''table'' or ''column''')\n" + "WHERE NEW.reference_scope IN ('table','column') AND NEW.row_id_value <> 0;\n" + "SELECT RAISE(ROLLBACK, 'update on ISO_table metadata_reference violates constraint: " + "row_id_value must exist in specified table when reference_scope is ''row'' or ''row/col''')\n" + "WHERE NEW.reference_scope IN ('row','row/col') AND NOT EXISTS\n" + "(SELECT rowid FROM (SELECT NEW.table_name AS table_name) " + "WHERE rowid = NEW.row_id_value);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER 'ISO_metadata_reference_timestamp_insert'\n" + "BEFORE INSERT ON 'ISO_metadata_reference'\nFOR EACH ROW BEGIN\n" + "SELECT RAISE(ROLLBACK, 'insert on table ISO_metadata_reference violates constraint: " + "timestamp must be a valid time in ISO 8601 ''yyyy-mm-ddThh:mm:ss.cccZ'' form')\n" + "WHERE NOT (NEW.timestamp GLOB'[1-2][0-9][0-9][0-9]-[0-1][0-9]-[1-3][0-9]T" + "[0-2][0-9]:[0-5][0-9]:[0-5][0-9].[0-9][0-9][0-9]Z' AND strftime('%s'," + "NEW.timestamp) NOT NULL);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE TRIGGER 'ISO_metadata_reference_timestamp_update'\n" + "BEFORE UPDATE OF 'timestamp' ON 'ISO_metadata_reference'\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ROLLBACK, 'update on table ISO_metadata_reference violates constraint: " + "timestamp must be a valid time in ISO 8601 ''yyyy-mm-ddThh:mm:ss.cccZ'' form')\n" + "WHERE NOT (NEW.timestamp GLOB'[1-2][0-9][0-9][0-9]-[0-1][0-9]-[1-3][0-9]T" + "[0-2][0-9]:[0-5][0-9]:[0-5][0-9].[0-9][0-9][0-9]Z' AND strftime('%s'," + "NEW.timestamp) NOT NULL);\nEND"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } +/* creating any Index on ISO_metadata_reference */ + sql = "CREATE INDEX idx_ISO_metadata_reference_ids ON " + "ISO_metadata_reference (md_file_id)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e + ("Create Index 'idx_ISO_metadata_reference_ids' error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } + sql = "CREATE INDEX idx_ISO_metadata_reference_parents ON " + "ISO_metadata_reference (md_parent_id)"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e + ("Create Index 'idx_ISO_metadata_reference_parents' error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_iso_metadata_view (sqlite3 * sqlite) +{ +/* creating the ISO_metadata_view view */ + char *sql; + int ret; + char *err_msg = NULL; + sql = "CREATE VIEW ISO_metadata_view AS\n" + "SELECT id AS id, md_scope AS md_scope, XB_GetTitle(metadata) AS title, " + "XB_GetAbstract(metadata) AS abstract, geometry AS geometry, " + "fileId AS fileIdentifier, parentId AS parentIdentifier, metadata AS metadata, " + "XB_IsSchemaValidated(metadata) AS schema_validated, " + "XB_GetSchemaURI(metadata) AS metadata_schema_URI\n" + "FROM ISO_metadata"; + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW 'ISO_metadata_view' error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +SPATIALITE_PRIVATE int +createIsoMetadataTables (void *p_sqlite, int relaxed) +{ +/* Creating the ISO Metadata tables */ + const char *tables[4]; + int views[3]; + const char **p_tbl; + int *p_view; + int ok_table; + int ret; + char *err_msg = NULL; + sqlite3 *sqlite = p_sqlite; + +/* checking ISO Metadata tables */ + tables[0] = "ISO_metadata"; + tables[1] = "ISO_metadata_reference"; + tables[2] = "ISO_metadata_view"; + tables[3] = NULL; + views[0] = 0; + views[1] = 0; + views[2] = 1; + p_tbl = tables; + p_view = views; + while (*p_tbl != NULL) + { + ok_table = check_iso_metadata_table (sqlite, *p_tbl, *p_view); + if (ok_table) + { + spatialite_e + ("CreateIsoMetadataTables() error: table '%s' already exists\n", + *p_tbl); + goto error; + } + p_tbl++; + p_view++; + } + +/* creating the ISO Metadata tables */ + if (!create_iso_metadata (sqlite, relaxed)) + goto error; + if (!create_iso_metadata_reference (sqlite)) + goto error; + if (!create_iso_metadata_view (sqlite)) + goto error; +/* inserting the default "undef" row into ISO_metadata */ + ret = + sqlite3_exec (sqlite, + "INSERT INTO ISO_metadata (id, md_scope) VALUES (0, 'undefined')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e + ("Insert default 'undefined' ISO_metadata row - error: %s\n", + err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; + + error: + return 0; +} + +SPATIALITE_PRIVATE int +register_external_graphic (void *p_sqlite, const char *xlink_href, + const unsigned char *p_blob, int n_bytes, + const char *title, const char *abstract, + const char *file_name) +{ +/* auxiliary function: inserts or updates an ExternalGraphic Resource */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + int ret; + const char *sql; + sqlite3_stmt *stmt; + int exists = 0; + int extras = 0; + int retval = 0; + +/* checking if already exists */ + sql = "SELECT xlink_href FROM SE_external_graphics WHERE xlink_href = ?"; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerExternalGraphic: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, xlink_href, strlen (xlink_href), SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + exists = 1; + } + sqlite3_finalize (stmt); + + if (title != NULL && abstract != NULL && file_name != NULL) + extras = 1; + if (exists) + { + /* update */ + if (extras) + { + /* full infos */ + sql = "UPDATE SE_external_graphics " + "SET resource = ?, title = ?, abstract = ?, file_name = ? " + "WHERE xlink_href = ?"; + } + else + { + /* limited basic infos */ + sql = "UPDATE SE_external_graphics " + "SET resource = ? WHERE xlink_href = ?"; + } + } + else + { + /* insert */ + if (extras) + { + /* full infos */ + sql = "INSERT INTO SE_external_graphics " + "(xlink_href, resource, title, abstract, file_name) " + "VALUES (?, ?, ?, ?, ?)"; + } + else + { + /* limited basic infos */ + sql = "INSERT INTO SE_external_graphics " + "(xlink_href, resource) VALUES (?, ?)"; + } + } + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerExternalGraphic: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + if (exists) + { + /* update */ + if (extras) + { + /* full infos */ + sqlite3_bind_blob (stmt, 1, p_blob, n_bytes, SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, title, strlen (title), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, abstract, strlen (abstract), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 4, file_name, strlen (file_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 5, xlink_href, strlen (xlink_href), + SQLITE_STATIC); + } + else + { + /* limited basic infos */ + sqlite3_bind_blob (stmt, 1, p_blob, n_bytes, SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, xlink_href, strlen (xlink_href), + SQLITE_STATIC); + } + } + else + { + /* insert */ + if (extras) + { + /* full infos */ + sqlite3_bind_text (stmt, 1, xlink_href, strlen (xlink_href), + SQLITE_STATIC); + sqlite3_bind_blob (stmt, 2, p_blob, n_bytes, SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, title, strlen (title), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 4, abstract, strlen (abstract), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 5, file_name, strlen (file_name), + SQLITE_STATIC); + } + else + { + /* limited basic infos */ + sqlite3_bind_text (stmt, 1, xlink_href, strlen (xlink_href), + SQLITE_STATIC); + sqlite3_bind_blob (stmt, 2, p_blob, n_bytes, SQLITE_STATIC); + } + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + retval = 1; + else + spatialite_e ("registerExternalGraphic() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + return retval; + stop: + return 0; +} + +SPATIALITE_PRIVATE int +register_vector_styled_layer (void *p_sqlite, const char *f_table_name, + const char *f_geometry_column, int style_id, + const unsigned char *p_blob, int n_bytes) +{ +/* auxiliary function: inserts or updates a Vector Styled Layer */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + int ret; + const char *sql; + sqlite3_stmt *stmt; + int exists = 0; + int retval = 0; + + if (style_id >= 0) + { + /* checking if already exists */ + sql = "SELECT style_id FROM SE_vector_styled_layers " + "WHERE f_table_name = Lower(?) AND f_geometry_column = Lower(?) " + "AND style_id = ?"; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerVectorStyledLayer: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, f_table_name, strlen (f_table_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, f_geometry_column, + strlen (f_geometry_column), SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, style_id); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + exists = 1; + } + sqlite3_finalize (stmt); + } + else + { + /* assigning the next style_id value */ + style_id = 0; + sql = "SELECT Max(style_id) FROM SE_vector_styled_layers " + "WHERE f_table_name = Lower(?) AND f_geometry_column = Lower(?) "; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerVectorStyledLayer: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, f_table_name, strlen (f_table_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, f_geometry_column, + strlen (f_geometry_column), SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_INTEGER) + style_id = sqlite3_column_int (stmt, 0) + 1; + } + } + sqlite3_finalize (stmt); + } + + if (exists) + { + /* update */ + sql = "UPDATE SE_vector_styled_layers SET style = ? " + "WHERE f_table_name = Lower(?) AND f_geometry_column = Lower(?) " + "AND style_id = ?"; + } + else + { + /* insert */ + sql = "INSERT INTO SE_vector_styled_layers " + "(f_table_name, f_geometry_column, style_id, style) VALUES " + "(?, ?, ?, ?)"; + } + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerVectorStyledLayer: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + if (exists) + { + /* update */ + sqlite3_bind_blob (stmt, 1, p_blob, n_bytes, SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, f_table_name, strlen (f_table_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, f_geometry_column, + strlen (f_geometry_column), SQLITE_STATIC); + sqlite3_bind_int (stmt, 4, style_id); + } + else + { + /* insert */ + sqlite3_bind_text (stmt, 1, f_table_name, strlen (f_table_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, f_geometry_column, + strlen (f_geometry_column), SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, style_id); + sqlite3_bind_blob (stmt, 4, p_blob, n_bytes, SQLITE_STATIC); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + retval = 1; + else + spatialite_e ("registerVectorStyledLayer() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + return retval; + stop: + return 0; +} + +SPATIALITE_PRIVATE int +register_raster_styled_layer (void *p_sqlite, const char *coverage_name, + int style_id, const unsigned char *p_blob, + int n_bytes) +{ +/* auxiliary function: inserts or updates a Raster Styled Layer */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + int ret; + const char *sql; + sqlite3_stmt *stmt; + int exists = 0; + int retval = 0; + + if (style_id >= 0) + { + /* checking if already exists */ + sql = "SELECT style_id FROM SE_raster_styled_layers " + "WHERE coverage_name = Lower(?) AND style_id = ?"; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerRasterStyledLayer: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, coverage_name, strlen (coverage_name), + SQLITE_STATIC); + sqlite3_bind_int (stmt, 2, style_id); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + exists = 1; + } + sqlite3_finalize (stmt); + } + else + { + /* assigning the next style_id value */ + style_id = 0; + sql = "SELECT Max(style_id) FROM SE_raster_styled_layers " + "WHERE coverage_name = Lower(?) "; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerVectorStyledLayer: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, coverage_name, strlen (coverage_name), + SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_INTEGER) + style_id = sqlite3_column_int (stmt, 0) + 1; + } + } + sqlite3_finalize (stmt); + } + + if (exists) + { + /* update */ + sql = "UPDATE SE_raster_styled_layers SET style = ? " + "WHERE coverage_name = Lower(?) AND style_id = ?"; + } + else + { + /* insert */ + sql = "INSERT INTO SE_raster_styled_layers " + "(coverage_name, style_id, style) VALUES (?, ?, ?)"; + } + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerRasterStyledLayer: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + if (exists) + { + /* update */ + sqlite3_bind_blob (stmt, 1, p_blob, n_bytes, SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, coverage_name, strlen (coverage_name), + SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, style_id); + } + else + { + /* insert */ + sqlite3_bind_text (stmt, 1, coverage_name, strlen (coverage_name), + SQLITE_STATIC); + sqlite3_bind_int (stmt, 2, style_id); + sqlite3_bind_blob (stmt, 3, p_blob, n_bytes, SQLITE_STATIC); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + retval = 1; + else + spatialite_e ("registerRasterStyledLayer() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + return retval; + stop: + return 0; +} + +SPATIALITE_PRIVATE int +register_styled_group (void *p_sqlite, const char *group_name, + const char *f_table_name, + const char *f_geometry_column, + const char *coverage_name, int paint_order) +{ +/* auxiliary function: inserts or updates a Styled Group Item */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + int ret; + const char *sql; + sqlite3_stmt *stmt; + int exists_group = 0; + int exists = 0; + int retval = 0; + sqlite3_int64 id; + + /* checking if the Group already exists */ + sql = "SELECT group_name FROM SE_styled_groups " + "WHERE group_name = Lower(?)"; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerStyledGroupsRefs: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, group_name, strlen (group_name), SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + exists_group = 1; + } + sqlite3_finalize (stmt); + + if (!exists_group) + { + /* insert group */ + sql = "INSERT INTO SE_styled_groups (group_name) VALUES (?)"; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerStyledGroupsRefs: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, group_name, strlen (group_name), + SQLITE_STATIC); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + retval = 1; + else + spatialite_e ("registerStyledGroupsRefs() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + if (retval == 0) + goto stop; + retval = 0; + } + + if (paint_order >= 0) + { + /* checking if the group-item already exists */ + sql = "SELECT id FROM SE_styled_group_refs " + "WHERE group_name = Lower(?) AND paint_order = ?"; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerStyledGroupsRefs: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, group_name, strlen (group_name), + SQLITE_STATIC); + sqlite3_bind_int (stmt, 2, paint_order); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + id = sqlite3_column_int64 (stmt, 0); + exists++; + } + } + sqlite3_finalize (stmt); + if (exists != 1) + goto stop; + } + + if (paint_order < 0) + { + /* assigning the next paint_order value */ + paint_order = 0; + sql = "SELECT Max(paint_order) FROM SE_styled_group_refs " + "WHERE group_name = Lower(?) "; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerStyledGroupsRefs: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, group_name, strlen (group_name), + SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_INTEGER) + paint_order = sqlite3_column_int (stmt, 0) + 1; + } + } + sqlite3_finalize (stmt); + } + + if (exists) + { + /* update */ + sql = "UPDATE SE_styled_group_refs SET paint_order = ? " + "WHERE id = ?"; + } + else + { + /* insert */ + if (coverage_name == NULL) + { + /* vector styled layer */ + sql = "INSERT INTO SE_styled_group_refs " + "(id, group_name, f_table_name, f_geometry_column, paint_order) " + "VALUES (NULL, ?, ?, ?, ?)"; + } + else + { + /* raster styled layer */ + sql = "INSERT INTO SE_styled_group_refs " + "(id, group_name, coverage_name, paint_order) " + "VALUES (NULL, ?, ?, ?)"; + } + } + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerStyledGroupsRefs: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + if (exists) + { + /* update */ + sqlite3_bind_int (stmt, 1, paint_order); + sqlite3_bind_int64 (stmt, 2, id); + } + else + { + /* insert */ + sqlite3_bind_text (stmt, 1, group_name, strlen (group_name), + SQLITE_STATIC); + if (coverage_name == NULL) + { + /* vector styled layer */ + sqlite3_bind_text (stmt, 2, f_table_name, + strlen (f_table_name), SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, f_geometry_column, + strlen (f_geometry_column), SQLITE_STATIC); + sqlite3_bind_int (stmt, 4, paint_order); + } + else + { + /* raster styled layer */ + sqlite3_bind_text (stmt, 2, coverage_name, + strlen (coverage_name), SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, paint_order); + } + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + retval = 1; + else + spatialite_e ("registerStyledGroupsRefs() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + return retval; + stop: + return 0; +} + +SPATIALITE_PRIVATE int +styled_group_set_infos (void *p_sqlite, const char *group_name, + const char *title, const char *abstract) +{ +/* auxiliary function: inserts or updates the Styled Group descriptive infos */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + int ret; + const char *sql; + sqlite3_stmt *stmt; + int exists = 0; + int retval = 0; + + /* checking if the Group already exists */ + sql = "SELECT group_name FROM SE_styled_groups " + "WHERE group_name = Lower(?)"; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("styledGroupSetInfos: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, group_name, strlen (group_name), SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + exists = 1; + } + sqlite3_finalize (stmt); + + if (!exists) + { + /* insert group */ + sql = + "INSERT INTO SE_styled_groups (group_name, title, abstract) VALUES (?, ?, ?)"; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("styledGroupSetInfos: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, group_name, strlen (group_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, title, strlen (title), SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, abstract, strlen (abstract), + SQLITE_STATIC); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + retval = 1; + else + spatialite_e ("styledGroupSetInfos() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + } + else + { + /* update group */ + sql = + "UPDATE SE_styled_groups SET title = ?, abstract = ? WHERE group_name = ?"; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("styledGroupSetInfos: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, title, strlen (title), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, abstract, strlen (abstract), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, group_name, strlen (group_name), + SQLITE_STATIC); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + retval = 1; + else + spatialite_e ("styledGroupSetInfos() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + } + return retval; + stop: + return 0; +} + +SPATIALITE_PRIVATE int +register_group_style (void *p_sqlite, const char *group_name, int style_id, + const unsigned char *p_blob, int n_bytes) +{ +/* auxiliary function: inserts or updates a Group Style */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + int ret; + const char *sql; + sqlite3_stmt *stmt; + int exists = 0; + int retval = 0; + + if (style_id >= 0) + { + /* checking if already exists */ + sql = "SELECT style_id FROM SE_group_styles " + "WHERE group_name = Lower(?) AND style_id = ?"; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerGroupStyle: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, group_name, strlen (group_name), + SQLITE_STATIC); + sqlite3_bind_int (stmt, 2, style_id); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + exists = 1; + } + sqlite3_finalize (stmt); + } + else + { + /* assigning the next style_id value */ + style_id = 0; + sql = "SELECT Max(style_id) FROM SE_group_styles " + "WHERE group_name = Lower(?) "; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerGroupStyle: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, group_name, strlen (group_name), + SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_INTEGER) + style_id = sqlite3_column_int (stmt, 0) + 1; + } + } + sqlite3_finalize (stmt); + } + + if (exists) + { + /* update */ + sql = "UPDATE SE_group_styles SET style = ? " + "WHERE group_name = Lower(?) AND style_id = ?"; + } + else + { + /* insert */ + sql = "INSERT INTO SE_group_styles " + "(group_name, style_id, style) VALUES (?, ?, ?)"; + } + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerGroupStyle: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + if (exists) + { + /* update */ + sqlite3_bind_blob (stmt, 1, p_blob, n_bytes, SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, group_name, strlen (group_name), + SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, style_id); + } + else + { + /* insert */ + sqlite3_bind_text (stmt, 1, group_name, strlen (group_name), + SQLITE_STATIC); + sqlite3_bind_int (stmt, 2, style_id); + sqlite3_bind_blob (stmt, 3, p_blob, n_bytes, SQLITE_STATIC); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + retval = 1; + else + spatialite_e ("registerGroupStyled() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + return retval; + stop: + return 0; +} + +SPATIALITE_PRIVATE int +get_iso_metadata_id (void *p_sqlite, const char *fileIdentifier, void *p_id) +{ +/* auxiliary function: return the ID of the row corresponding to "fileIdentifier" */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + sqlite3_int64 *p64 = (sqlite3_int64 *) p_id; + sqlite3_int64 id; + int ret; + const char *sql; + sqlite3_stmt *stmt; + int ok = 0; + + sql = "SELECT id FROM ISO_metadata WHERE fileId = ?"; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("getIsoMetadataId: \"%s\"\n", sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, fileIdentifier, strlen (fileIdentifier), + SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + ok++; + id = sqlite3_column_int64 (stmt, 0); + } + } + sqlite3_finalize (stmt); + + if (ok == 1) + { + *p64 = id; + return 1; + } + stop: + return 0; +} + +SPATIALITE_PRIVATE int +register_iso_metadata (void *p_sqlite, const char *scope, + const unsigned char *p_blob, int n_bytes, void *p_id, + const char *fileIdentifier) +{ +/* auxiliary function: inserts or updates an ISO Metadata */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + sqlite3_int64 *p64 = (sqlite3_int64 *) p_id; + sqlite3_int64 id = *p64; + int ret; + const char *sql; + sqlite3_stmt *stmt; + int exists = 0; + int retval = 0; + + if (id >= 0) + { + /* checking if already exists - by ID */ + sql = "SELECT id FROM ISO_metadata WHERE id = ?"; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerIsoMetadata: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_int64 (stmt, 1, id); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + exists = 1; + } + sqlite3_finalize (stmt); + } + if (fileIdentifier != NULL) + { + /* checking if already exists - by fileIdentifier */ + sql = "SELECT id FROM ISO_metadata WHERE fileId = ?"; + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerIsoMetadata: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, fileIdentifier, strlen (fileIdentifier), + SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + exists = 1; + id = sqlite3_column_int64 (stmt, 0); + } + } + sqlite3_finalize (stmt); + } + + if (exists) + { + /* update */ + sql = "UPDATE ISO_metadata SET md_scope = ?, metadata = ? " + "WHERE id = ?"; + } + else + { + /* insert */ + sql = "INSERT INTO ISO_metadata " + "(id, md_scope, metadata) VALUES (?, ?, ?)"; + } + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("registerIsoMetadata: \"%s\"\n", + sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + if (exists) + { + /* update */ + sqlite3_bind_text (stmt, 1, scope, strlen (scope), SQLITE_STATIC); + sqlite3_bind_blob (stmt, 2, p_blob, n_bytes, SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, id); + } + else + { + /* insert */ + if (id < 0) + sqlite3_bind_null (stmt, 1); + else + sqlite3_bind_int64 (stmt, 1, id); + sqlite3_bind_text (stmt, 2, scope, strlen (scope), SQLITE_STATIC); + sqlite3_bind_blob (stmt, 3, p_blob, n_bytes, SQLITE_STATIC); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + retval = 1; + else + spatialite_e ("registerIsoMetadata() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + return retval; + stop: + return 0; +} + +#endif /* end including LIBXML2 */ diff --git a/src/spatialite/src/spatialite/mbrcache.c b/src/spatialite/src/spatialite/mbrcache.c new file mode 100644 index 0000000..5534127 --- /dev/null +++ b/src/spatialite/src/spatialite/mbrcache.c @@ -0,0 +1,1532 @@ +/* + + mbrcache.c -- SQLite3 extension [MBR CACHE VIRTUAL TABLE] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include +#include +#include + +#ifdef _WIN32 +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +#if defined(_WIN32) && !defined(__MINGW32__) +#define LONG64_MAX _I64_MAX +#define LONG64_MIN _I64_MIN +#else +#define LONG64_MAX 9223372036854775807LL +#define LONG64_MIN (-LONG64_MAX + 1) +#endif + +static struct sqlite3_module my_mbr_module; + +/* + +memory structs used to store the MBR's cache + +the basic idea is to implement a hierarchy in order to avoid +excessive memory fragmentation and achieve better performance + +- the cache is a linked-list of cache page elements + - each cache page contains an array of 32 cache blocks + - each cache block contains an array of 32 cache cells +so a single cache page con store up to 1024 cache cells + +*/ + +struct mbr_cache_cell +{ +/* +a cached entity +*/ + +/* the entity's ROWID */ + sqlite3_int64 rowid; +/* the MBR */ + double minx; + double miny; + double maxx; + double maxy; +}; + +struct mbr_cache_block +{ +/* +a block of 32 cached entities +*/ + +/* +allocation bitmap: the meaning of each bit is: +1 - corresponding cache cell is in use +0 - corresponding cache cell is unused +*/ + unsigned int bitmap; +/* +the MBR corresponding to this cache block +i.e. the combined MBR for any contained cell +*/ + double minx; + double miny; + double maxx; + double maxy; +/* the cache cells array */ + struct mbr_cache_cell cells[32]; +}; + +struct mbr_cache_page +{ +/* +a page containing 32 cached blocks +*/ + +/* +allocation bitmap: the meaning of each bit is: +1 - corresponding cache block is in full +0 - corresponding cache block is not full +*/ + unsigned int bitmap; +/* +the MBR corresponding to this cache page +i.e. the combined MBR for any contained block +*/ + double minx; + double miny; + double maxx; + double maxy; +/* the cache blocks array */ + struct mbr_cache_block blocks[32]; +/* the min-max rowid for this page */ + sqlite3_int64 min_rowid; + sqlite3_int64 max_rowid; +/* pointer to next element into the cached pages linked list */ + struct mbr_cache_page *next; +}; + +struct mbr_cache +{ +/* +the MBR's cache +implemented as a cache pages linked list +*/ + +/* pointers used to handle the cache pages linked list */ + struct mbr_cache_page *first; + struct mbr_cache_page *last; +/* + pointer used to identify the current cache page when inserting a new cache cell + */ + struct mbr_cache_page *current; +}; + +typedef struct MbrCacheStruct +{ +/* extends the sqlite3_vtab struct */ + const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ + int nRef; /* # references: USED INTERNALLY BY SQLITE */ + char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ + sqlite3 *db; /* the sqlite db holding the virtual table */ + struct mbr_cache *cache; /* the MBR's cache */ + char *table_name; /* the main table to be cached */ + char *column_name; /* the column to be cached */ + int error; /* some previous error disables any operation */ +} MbrCache; +typedef MbrCache *MbrCachePtr; + +typedef struct MbrCacheCursortStruct +{ +/* extends the sqlite3_vtab_cursor struct */ + MbrCachePtr pVtab; /* Virtual table of this cursor */ + int eof; /* the EOF marker */ +/* +positioning parameters while performing a cache search +*/ + struct mbr_cache_page *current_page; + int current_block_index; + int current_cell_index; + struct mbr_cache_cell *current_cell; +/* +the strategy to use: + 0 = sequential scan + 1 = find rowid + 2 = spatial search +*/ + int strategy; +/* the MBR to search for */ + double minx; + double miny; + double maxx; + double maxy; +/* +the MBR search mode: + 0 = WITHIN + 1 = CONTAIN +*/ + int mbr_mode; +} MbrCacheCursor; +typedef MbrCacheCursor *MbrCacheCursorPtr; + +static unsigned int +cache_bitmask (int x) +{ +/* return the bitmask corresponding to index X */ + switch (x) + { + case 0: + return 0x80000000; + case 1: + return 0x40000000; + case 2: + return 0x20000000; + case 3: + return 0x10000000; + case 4: + return 0x08000000; + case 5: + return 0x04000000; + case 6: + return 0x02000000; + case 7: + return 0x01000000; + case 8: + return 0x00800000; + case 9: + return 0x00400000; + case 10: + return 0x00200000; + case 11: + return 0x00100000; + case 12: + return 0x00080000; + case 13: + return 0x00040000; + case 14: + return 0x00020000; + case 15: + return 0x00010000; + case 16: + return 0x00008000; + case 17: + return 0x00004000; + case 18: + return 0x00002000; + case 19: + return 0x00001000; + case 20: + return 0x00000800; + case 21: + return 0x00000400; + case 22: + return 0x00000200; + case 23: + return 0x00000100; + case 24: + return 0x00000080; + case 25: + return 0x00000040; + case 26: + return 0x00000020; + case 27: + return 0x00000010; + case 28: + return 0x00000008; + case 29: + return 0x00000004; + case 30: + return 0x00000002; + case 31: + return 0x00000001; + }; + return 0x00000000; +} + +static struct mbr_cache * +cache_alloc (void) +{ +/* allocates and initializes an empty cache struct */ + struct mbr_cache *p = malloc (sizeof (struct mbr_cache)); + p->first = NULL; + p->last = NULL; + p->current = NULL; + return p; +} + +static struct mbr_cache_page * +cache_page_alloc (void) +{ +/* allocates and initializes a cache page */ + int i; + struct mbr_cache_block *pb; + struct mbr_cache_page *p = malloc (sizeof (struct mbr_cache_page)); + p->bitmap = 0x00000000; + p->next = NULL; + p->minx = DBL_MAX; + p->miny = DBL_MAX; + p->maxx = -DBL_MAX; + p->maxy = -DBL_MAX; + for (i = 0; i < 32; i++) + { + pb = p->blocks + i; + pb->bitmap = 0x00000000; + pb->minx = DBL_MAX; + pb->miny = DBL_MAX; + pb->maxx = -DBL_MAX; + pb->maxy = DBL_MAX; + } + p->max_rowid = LONG64_MIN; + p->min_rowid = LONG64_MAX; + return p; +} + +static void +cache_destroy (struct mbr_cache *p) +{ +/* memory cleanup; destroying a cache and any page into the cache */ + struct mbr_cache_page *pp; + struct mbr_cache_page *ppn; + if (!p) + return; + pp = p->first; + while (pp) + { + ppn = pp->next; + free (pp); + pp = ppn; + } + free (p); +} + +static int +cache_get_free_block (struct mbr_cache_page *pp) +{ +/* scans a cache page, returning the index of the first available block containing a free cell */ + int ib; + for (ib = 0; ib < 32; ib++) + { + if ((pp->bitmap & cache_bitmask (ib)) == 0x00000000) + return ib; + } + return -1; +} + +static void +cache_fix_page_bitmap (struct mbr_cache_page *pp) +{ +/* updating the cache page bitmap */ + int ib; + for (ib = 0; ib < 32; ib++) + { + if (pp->blocks[ib].bitmap == 0xffffffff) + { + /* all the cells into this block are used; marking the page bitmap */ + pp->bitmap |= cache_bitmask (ib); + } + } +} + +static int +cache_get_free_cell (struct mbr_cache_block *pb) +{ +/* scans a cache block, returning the index of the first free cell */ + int ic; + for (ic = 0; ic < 32; ic++) + { + if ((pb->bitmap & cache_bitmask (ic)) == 0x00000000) + return ic; + } + return -1; +} + +static struct mbr_cache_page * +cache_get_free_page (struct mbr_cache *p) +{ +/* return a pointer to the first cache page containing a free cell */ + struct mbr_cache_page *pp; + if (!(p->first)) + { + /* the cache is empty; so we surely need to allocate the first page */ + pp = cache_page_alloc (); + p->first = pp; + p->last = pp; + p->current = pp; + return pp; + } + if (p->current) + { + /* checking if there is at least a free block into the current page */ + if (p->current->bitmap != 0xffffffff) + return p->current; + } + pp = p->first; + while (pp) + { + /* scanning the page list in order to discover if there is an existing page not yet completely filled */ + if (pp->bitmap != 0xffffffff) + { + p->current = pp; + return pp; + } + pp = pp->next; + } +/* we have to allocate a new page */ + pp = cache_page_alloc (); + p->last->next = pp; + p->last = pp; + p->current = pp; + return pp; +} + +static void +cache_insert_cell (struct mbr_cache *p, sqlite3_int64 rowid, double minx, + double miny, double maxx, double maxy) +{ +/* inserting a new cell */ + struct mbr_cache_page *pp = cache_get_free_page (p); + int ib = cache_get_free_block (pp); + struct mbr_cache_block *pb = pp->blocks + ib; + int ic = cache_get_free_cell (pb); + struct mbr_cache_cell *pc = pb->cells + ic; + pc->rowid = rowid; + pc->minx = minx; + pc->miny = miny; + pc->maxx = maxx; + pc->maxy = maxy; +/* marking the cache cell as used into the block bitmap */ + pb->bitmap |= cache_bitmask (ic); +/* updating the cache block MBR */ + if (pb->minx > minx) + pb->minx = minx; + if (pb->maxx < maxx) + pb->maxx = maxx; + if (pb->miny > miny) + pb->miny = miny; + if (pb->maxy < maxy) + pb->maxy = maxy; +/* updating the cache page MBR */ + if (pp->minx > minx) + pp->minx = minx; + if (pp->maxx < maxx) + pp->maxx = maxx; + if (pp->miny > miny) + pp->miny = miny; + if (pp->maxy < maxy) + pp->maxy = maxy; +/* fixing the cache page bitmap */ + cache_fix_page_bitmap (pp); +/* updating min-max rowid into the cache page */ + if (pp->min_rowid > rowid) + pp->min_rowid = rowid; + if (pp->max_rowid < rowid) + pp->max_rowid = rowid; +} + +static struct mbr_cache * +cache_load (sqlite3 * handle, const char *table, const char *column) +{ +/* +initial loading the MBR cache +retrieving any existing entity from the main table +*/ + sqlite3_stmt *stmt; + int ret; + char *sql_statement; + sqlite3_int64 rowid; + double minx; + double maxx; + double miny; + double maxy; + int v1; + int v2; + int v3; + int v4; + int v5; + struct mbr_cache *p_cache; + char *xcolumn; + char *xtable; + xcolumn = gaiaDoubleQuotedSql (column); + xtable = gaiaDoubleQuotedSql (table); + sql_statement = + sqlite3_mprintf ("SELECT ROWID, MbrMinX(\"%s\"), MbrMinY(\"%s\"), " + "MbrMaxX(\"%s\"), MbrMaxY(\"%s\") FROM \"%s\"", + xcolumn, xcolumn, xcolumn, xcolumn, xtable); + free (xcolumn); + free (xtable); + ret = + sqlite3_prepare_v2 (handle, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { +/* some error occurred */ + spatialite_e ("cache SQL error: %s\n", sqlite3_errmsg (handle)); + return NULL; + } + p_cache = cache_alloc (); + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + v1 = 0; + v2 = 0; + v3 = 0; + v4 = 0; + v5 = 0; + if (sqlite3_column_type (stmt, 0) == SQLITE_INTEGER) + v1 = 1; + if (sqlite3_column_type (stmt, 1) == SQLITE_FLOAT) + v2 = 1; + if (sqlite3_column_type (stmt, 1) == SQLITE_FLOAT) + v3 = 1; + if (sqlite3_column_type (stmt, 1) == SQLITE_FLOAT) + v4 = 1; + if (sqlite3_column_type (stmt, 1) == SQLITE_FLOAT) + v5 = 1; + if (v1 && v2 && v3 && v4 && v5) + { + /* ok, this entity is a valid one; inserting them into the MBR's cache */ + rowid = sqlite3_column_int (stmt, 0); + minx = sqlite3_column_double (stmt, 1); + miny = sqlite3_column_double (stmt, 2); + maxx = sqlite3_column_double (stmt, 3); + maxy = sqlite3_column_double (stmt, 4); + cache_insert_cell (p_cache, rowid, minx, miny, maxx, + maxy); + } + } + else + { +/* some unexpected error occurred */ + spatialite_e ("sqlite3_step() error: %s\n", + sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + cache_destroy (p_cache); + return NULL; + } + } +/* we have now to finalize the query [memory cleanup] */ + sqlite3_finalize (stmt); + return p_cache; +} + +static int +cache_find_next_cell (struct mbr_cache_page **page, int *i_block, int *i_cell, + struct mbr_cache_cell **cell) +{ +/* finding next cached cell */ + struct mbr_cache_page *pp = *page; + struct mbr_cache_block *pb; + struct mbr_cache_cell *pc; + int ib; + int ic; + int sib = *i_block; + int sic = *i_cell; + while (pp) + { + for (ib = sib; ib < 32; ib++) + { + pb = pp->blocks + ib; + for (ic = sic; ic < 32; ic++) + { + if ((pb->bitmap & cache_bitmask (ic)) == 0x00000000) + continue; + pc = pb->cells + ic; + if (pc == *cell) + { + /* this one is the current cell */ + continue; + } + /* next cell found */ + *page = pp; + *i_block = ib; + *i_cell = ic; + *cell = pc; + return 1; + } + sic = 0; + } + sib = 0; + pp = pp->next; + } + return 0; +} + +static int +cache_find_next_mbr (struct mbr_cache_page **page, int *i_block, int *i_cell, + struct mbr_cache_cell **cell, double minx, double miny, + double maxx, double maxy, int mode) +{ +/* finding next cached cell */ + struct mbr_cache_page *pp = *page; + struct mbr_cache_block *pb; + struct mbr_cache_cell *pc; + int ib; + int ic; + int sib = *i_block; + int sic = *i_cell; + int ok_mbr; + while (pp) + { + ok_mbr = 0; + if (pp->maxx >= minx && pp->minx <= maxx && pp->maxy >= miny + && pp->miny <= maxy) + ok_mbr = 1; + if (ok_mbr) + { + for (ib = sib; ib < 32; ib++) + { + pb = pp->blocks + ib; + ok_mbr = 0; + if (pb->maxx >= minx && pb->minx <= maxx + && pb->maxy >= miny && pb->miny <= maxy) + ok_mbr = 1; + if (ok_mbr) + { + for (ic = sic; ic < 32; ic++) + { + if ((pb->bitmap & cache_bitmask (ic)) == + 0x00000000) + continue; + pc = pb->cells + ic; + ok_mbr = 0; + if (mode == GAIA_FILTER_MBR_INTERSECTS) + { + /* MBR INTERSECTS */ + if (pc->maxx >= minx && pc->minx <= maxx + && pc->maxy >= miny + && pc->miny <= maxy) + ok_mbr = 1; + } + else if (mode == GAIA_FILTER_MBR_CONTAINS) + { + /* MBR CONTAINS */ + if (minx >= pc->minx && maxx <= pc->maxx + && miny >= pc->miny + && maxy <= pc->maxy) + ok_mbr = 1; + } + else + { + /* MBR WITHIN */ + if (pc->minx >= minx && pc->maxx <= maxx + && pc->miny >= miny + && pc->maxy <= maxy) + ok_mbr = 1; + } + if (ok_mbr) + { + if (pc == *cell) + { + /* this one is the current cell */ + continue; + } + /* next cell found */ + *page = pp; + *i_block = ib; + *i_cell = ic; + *cell = pc; + return 1; + } + } + } + sic = 0; + } + } + sib = 0; + pp = pp->next; + } + return 0; +} + +static struct mbr_cache_cell * +cache_find_by_rowid (struct mbr_cache_page *pp, sqlite3_int64 rowid) +{ +/* trying to find a row by rowid from the Mbr cache */ + struct mbr_cache_block *pb; + struct mbr_cache_cell *pc; + int ib; + int ic; + while (pp) + { + if (rowid >= pp->min_rowid && rowid <= pp->max_rowid) + { + for (ib = 0; ib < 32; ib++) + { + pb = pp->blocks + ib; + for (ic = 0; ic < 32; ic++) + { + if ((pb->bitmap & cache_bitmask (ic)) == 0x00000000) + continue; + pc = pb->cells + ic; + if (pc->rowid == rowid) + return pc; + } + } + } + pp = pp->next; + } + return 0; +} + +static void +cache_update_page (struct mbr_cache_page *pp, int i_block) +{ +/* updating the cache block and cache page MBR after a DELETE or UPDATE occurred */ + struct mbr_cache_block *pb; + struct mbr_cache_cell *pc; + int ib; + int ic; +/* updating the cache block MBR */ + pb = pp->blocks + i_block; + pb->minx = DBL_MAX; + pb->miny = DBL_MAX; + pb->maxx = -DBL_MAX; + pb->maxy = -DBL_MAX; + for (ic = 0; ic < 32; ic++) + { + if ((pb->bitmap & cache_bitmask (ic)) == 0x00000000) + continue; + pc = pb->cells + ic; + if (pb->minx > pc->minx) + pb->minx = pc->minx; + if (pb->miny > pc->miny) + pb->miny = pc->miny; + if (pb->maxx < pc->maxx) + pb->maxx = pc->maxx; + if (pb->maxy < pc->maxy) + pb->maxy = pc->maxy; + } +/* updating the cache page MBR */ + pp->minx = DBL_MAX; + pp->miny = DBL_MAX; + pp->maxx = -DBL_MAX; + pp->maxy = -DBL_MAX; + pp->min_rowid = LONG64_MAX; + pp->max_rowid = LONG64_MIN; + for (ib = 0; ib < 32; ib++) + { + pb = pp->blocks + ib; + for (ic = 0; ic < 32; ic++) + { + if ((pb->bitmap & cache_bitmask (ic)) == 0x00000000) + continue; + pc = pb->cells + ic; + if (pp->minx > pc->minx) + pp->minx = pc->minx; + if (pp->miny > pc->miny) + pp->miny = pc->miny; + if (pp->maxx < pc->maxx) + pp->maxx = pc->maxx; + if (pp->maxy < pc->maxy) + pp->maxy = pc->maxy; + if (pp->min_rowid > pc->rowid) + pp->min_rowid = pc->rowid; + if (pp->max_rowid < pc->rowid) + pp->max_rowid = pc->rowid; + } + } +} + +static int +cache_delete_cell (struct mbr_cache_page *pp, sqlite3_int64 rowid) +{ +/* trying to delete a row identified by rowid from the Mbr cache */ + struct mbr_cache_block *pb; + struct mbr_cache_cell *pc; + int ib; + int ic; + while (pp) + { + if (rowid >= pp->min_rowid && rowid <= pp->max_rowid) + { + for (ib = 0; ib < 32; ib++) + { + pb = pp->blocks + ib; + for (ic = 0; ic < 32; ic++) + { + if ((pb->bitmap & cache_bitmask (ic)) == 0x00000000) + continue; + pc = pb->cells + ic; + if (pc->rowid == rowid) + { + /* marking the cell as free */ + pb->bitmap &= ~(cache_bitmask (ic)); + /* marking the block as not full */ + pp->bitmap &= ~(cache_bitmask (ib)); + /* updating the cache block and cache page MBR */ + cache_update_page (pp, ib); + return 1; + } + } + } + } + pp = pp->next; + } + return 0; +} + +static int +cache_update_cell (struct mbr_cache_page *pp, sqlite3_int64 rowid, double minx, + double miny, double maxx, double maxy) +{ +/* trying to update a row identified by rowid from the Mbr cache */ + struct mbr_cache_block *pb; + struct mbr_cache_cell *pc; + int ib; + int ic; + while (pp) + { + if (rowid >= pp->min_rowid && rowid <= pp->max_rowid) + { + for (ib = 0; ib < 32; ib++) + { + pb = pp->blocks + ib; + for (ic = 0; ic < 32; ic++) + { + if ((pb->bitmap & cache_bitmask (ic)) == 0x00000000) + continue; + pc = pb->cells + ic; + if (pc->rowid == rowid) + { + /* updating the cell MBR */ + pc->minx = minx; + pc->miny = miny; + pc->maxx = maxx; + pc->maxy = maxy; + /* updating the cache block and cache page MBR */ + cache_update_page (pp, ib); + return 1; + } + } + } + } + pp = pp->next; + } + return 0; +} + +static int +mbrc_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* creates the virtual table and caches related Geometry column */ + int err; + int ret; + int i; + int len; + int n_rows; + int n_columns; + const char *vtable; + const char *table; + const char *column; + const char *col_name; + char *xvtable = NULL; + char *xtable = NULL; + char *xcolumn = NULL; + char **results; + char *err_msg = NULL; + char *sql_statement; + int ok_col; + MbrCachePtr p_vt; + char *xname; + if (pAux) + pAux = pAux; /* unused arg warning suppression */ + p_vt = (MbrCachePtr) sqlite3_malloc (sizeof (MbrCache)); + if (!p_vt) + return SQLITE_NOMEM; + *ppVTab = (sqlite3_vtab *) p_vt; + p_vt->pModule = &my_mbr_module; + p_vt->nRef = 0; + p_vt->zErrMsg = NULL; + p_vt->db = db; + p_vt->table_name = NULL; + p_vt->column_name = NULL; + p_vt->cache = NULL; +/* checking for table_name and geo_column_name */ + if (argc == 5) + { + vtable = argv[2]; + len = strlen (vtable); + if ((*(vtable + 0) == '\'' || *(vtable + 0) == '"') + && (*(vtable + len - 1) == '\'' || *(vtable + len - 1) == '"')) + { +/* the VirtualTableName is enclosed between quotes - we need to dequote it */ + xvtable = gaiaDequotedSql (vtable); + vtable = xvtable; + } + table = argv[3]; + len = strlen (table); + if ((*(table + 0) == '\'' || *(table + 0) == '"') + && (*(table + len - 1) == '\'' || *(table + len - 1) == '"')) + { +/* the MainTableName is enclosed between quotes - we need to dequote it */ + xtable = gaiaDequotedSql (table); + table = xtable; + } + column = argv[4]; + len = strlen (column); + if ((*(column + 0) == '\'' || *(column + 0) == '"') + && (*(column + len - 1) == '\'' || *(column + len - 1) == '"')) + { +/* the GeometryColumnName is enclosed between quotes - we need to dequote it */ + xcolumn = gaiaDequotedSql (column); + column = xcolumn; + } + len = strlen (table); + p_vt->table_name = sqlite3_malloc (len + 1); + strcpy (p_vt->table_name, table); + len = strlen (column); + p_vt->column_name = sqlite3_malloc (len + 1); + strcpy (p_vt->column_name, column); + if (xtable) + free (xtable); + if (xcolumn) + free (xcolumn); + } + else + { + *pzErr = + sqlite3_mprintf + ("[MbrCache module] CREATE VIRTUAL: illegal arg list {table_name, geo_column_name}"); + return SQLITE_ERROR; + } +/* retrieving the base table columns */ + err = 0; + ok_col = 0; + xname = gaiaDoubleQuotedSql (p_vt->table_name); + sql_statement = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = + sqlite3_get_table (db, sql_statement, &results, &n_rows, &n_columns, + &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + sqlite3_free (sql_statement); + err = 1; + goto illegal; + } + if (n_rows > 1) + { + for (i = 1; i <= n_rows; i++) + { + col_name = results[(i * n_columns) + 1]; + if (strcasecmp (col_name, p_vt->column_name) == 0) + ok_col = 1; + } + sqlite3_free_table (results); + if (!ok_col) + err = 1; + } + else + err = 1; + illegal: + if (err) + { + /* something is going the wrong way; creating a stupid default table */ + xname = gaiaDoubleQuotedSql (vtable); + sql_statement = + sqlite3_mprintf ("CREATE TABLE \"%s\" (rowid INTEGER, mbr BLOB)", + xname); + free (xname); + if (sqlite3_declare_vtab (db, sql_statement) != SQLITE_OK) + { + sqlite3_free (sql_statement); + *pzErr = + sqlite3_mprintf + ("[MbrCache module] cannot build the VirtualTable\n"); + return SQLITE_ERROR; + } + sqlite3_free (sql_statement); + p_vt->error = 1; + *ppVTab = (sqlite3_vtab *) p_vt; + return SQLITE_OK; + } + p_vt->error = 0; + xname = gaiaDoubleQuotedSql (vtable); + sql_statement = + sqlite3_mprintf ("CREATE TABLE \"%s\" (rowid INTEGER, mbr BLOB)", + xname); + free (xname); + if (sqlite3_declare_vtab (db, sql_statement) != SQLITE_OK) + { + *pzErr = + sqlite3_mprintf + ("[MbrCache module] CREATE VIRTUAL: invalid SQL statement \"%s\"", + sql_statement); + sqlite3_free (sql_statement); + return SQLITE_ERROR; + } + sqlite3_free (sql_statement); + *ppVTab = (sqlite3_vtab *) p_vt; + return SQLITE_OK; +} + +static int +mbrc_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* connects the virtual table - simply aliases mbrc_create() */ + return mbrc_create (db, pAux, argc, argv, ppVTab, pzErr); +} + +static int +mbrc_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIdxInfo) +{ +/* best index selection */ + int i; + int err = 1; + int errors = 0; + int mbr = 0; + int rowid = 0; + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + for (i = 0; i < pIdxInfo->nConstraint; i++) + { + /* verifying the constraints */ + struct sqlite3_index_constraint *p = &(pIdxInfo->aConstraint[i]); + if (p->usable) + { + if (p->iColumn == 0 && p->op == SQLITE_INDEX_CONSTRAINT_EQ) + rowid++; + else if (p->iColumn == 1 && p->op == SQLITE_INDEX_CONSTRAINT_EQ) + mbr++; + else + errors++; + } + } + if (mbr == 1 && rowid == 0 && errors == 0) + { + /* this one is a valid spatially-filtered query */ + pIdxInfo->idxNum = 2; + for (i = 0; i < pIdxInfo->nConstraint; i++) + { + pIdxInfo->aConstraintUsage[i].argvIndex = 1; + pIdxInfo->aConstraintUsage[i].omit = 1; + } + err = 0; + } + if (mbr == 0 && rowid == 1 && errors == 0) + { + /* this one is a valid rowid-filtered query */ + pIdxInfo->idxNum = 1; + pIdxInfo->estimatedCost = 1.0; + for (i = 0; i < pIdxInfo->nConstraint; i++) + { + if (pIdxInfo->aConstraint[i].usable) + { + pIdxInfo->aConstraintUsage[i].argvIndex = 1; + pIdxInfo->aConstraintUsage[i].omit = 1; + } + } + err = 0; + } + if (mbr == 0 && rowid == 0 && errors == 0) + { + /* this one is a valid unfiltered query */ + pIdxInfo->idxNum = 0; + err = 0; + } + if (err) + { + /* illegal query */ + pIdxInfo->idxNum = -1; + } + return SQLITE_OK; +} + +static int +mbrc_disconnect (sqlite3_vtab * pVTab) +{ +/* disconnects the virtual table */ + MbrCachePtr p_vt = (MbrCachePtr) pVTab; + if (p_vt->cache) + cache_destroy (p_vt->cache); + if (p_vt->table_name) + sqlite3_free (p_vt->table_name); + if (p_vt->column_name) + sqlite3_free (p_vt->column_name); + sqlite3_free (p_vt); + return SQLITE_OK; +} + +static int +mbrc_destroy (sqlite3_vtab * pVTab) +{ +/* destroys the virtual table - simply aliases mbrc_disconnect() */ + return mbrc_disconnect (pVTab); +} + +static void +mbrc_read_row_unfiltered (MbrCacheCursorPtr cursor) +{ +/* trying to read the next row from the Mbr cache - unfiltered mode */ + struct mbr_cache_page *page = cursor->current_page; + struct mbr_cache_cell *cell = cursor->current_cell; + int i_block = cursor->current_block_index; + int i_cell = cursor->current_cell_index; + if (cache_find_next_cell (&page, &i_block, &i_cell, &cell)) + { + cursor->current_page = page; + cursor->current_block_index = i_block; + cursor->current_cell_index = i_cell; + cursor->current_cell = cell; + } + else + cursor->eof = 1; +} + +static void +mbrc_read_row_filtered (MbrCacheCursorPtr cursor) +{ +/* trying to read the next row from the Mbr cache - spatially filter mode */ + struct mbr_cache_page *page = cursor->current_page; + struct mbr_cache_cell *cell = cursor->current_cell; + int i_block = cursor->current_block_index; + int i_cell = cursor->current_cell_index; + if (cache_find_next_mbr + (&page, &i_block, &i_cell, &cell, cursor->minx, cursor->miny, + cursor->maxx, cursor->maxy, cursor->mbr_mode)) + { + cursor->current_page = page; + cursor->current_block_index = i_block; + cursor->current_cell_index = i_cell; + cursor->current_cell = cell; + } + else + cursor->eof = 1; +} + +static void +mbrc_read_row_by_rowid (MbrCacheCursorPtr cursor, sqlite3_int64 rowid) +{ +/* trying to find a row by rowid from the Mbr cache */ + struct mbr_cache_cell *cell = + cache_find_by_rowid (cursor->pVtab->cache->first, rowid); + if (cell) + cursor->current_cell = cell; + else + { + cursor->current_cell = NULL; + cursor->eof = 1; + } +} + +static int +mbrc_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) +{ +/* opening a new cursor */ + MbrCachePtr p_vt = (MbrCachePtr) pVTab; + MbrCacheCursorPtr cursor = + (MbrCacheCursorPtr) sqlite3_malloc (sizeof (MbrCacheCursor)); + if (cursor == NULL) + return SQLITE_ERROR; + cursor->pVtab = p_vt; + if (p_vt->error) + { + cursor->eof = 1; + *ppCursor = (sqlite3_vtab_cursor *) cursor; + return SQLITE_OK; + } + if (!(p_vt->cache)) + p_vt->cache = + cache_load (p_vt->db, p_vt->table_name, p_vt->column_name); + cursor->current_page = cursor->pVtab->cache->first; + cursor->current_block_index = 0; + cursor->current_cell_index = 0; + cursor->current_cell = NULL; + cursor->eof = 0; + *ppCursor = (sqlite3_vtab_cursor *) cursor; + return SQLITE_OK; +} + +static int +mbrc_close (sqlite3_vtab_cursor * pCursor) +{ +/* closing the cursor */ + sqlite3_free (pCursor); + return SQLITE_OK; +} + +static int +mbrc_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, + int argc, sqlite3_value ** argv) +{ +/* setting up a cursor filter */ + MbrCacheCursorPtr cursor = (MbrCacheCursorPtr) pCursor; + if (idxStr || argc) + idxStr = idxStr; /* unused arg warning suppression */ + if (cursor->pVtab->error) + { + cursor->eof = 1; + return SQLITE_OK; + } + cursor->current_page = cursor->pVtab->cache->first; + cursor->current_block_index = 0; + cursor->current_cell_index = 0; + cursor->current_cell = NULL; + cursor->eof = 0; + cursor->strategy = idxNum; + if (idxNum == 0) + { + /* unfiltered mode */ + mbrc_read_row_unfiltered (cursor); + return SQLITE_OK; + } + if (idxNum == 1) + { + /* filtering by ROWID */ + sqlite3_int64 rowid = sqlite3_value_int64 (argv[0]); + mbrc_read_row_by_rowid (cursor, rowid); + return SQLITE_OK; + } + if (idxNum == 2) + { + /* filtering by MBR spatial relation */ + unsigned char *p_blob; + int n_bytes; + double minx; + double miny; + double maxx; + double maxy; + int mode; + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + cursor->eof = 1; + else + { + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (gaiaParseFilterMbr + (p_blob, n_bytes, &minx, &miny, &maxx, &maxy, &mode)) + { + if (mode == GAIA_FILTER_MBR_WITHIN + || mode == GAIA_FILTER_MBR_CONTAINS + || mode == GAIA_FILTER_MBR_INTERSECTS) + { + cursor->minx = minx; + cursor->miny = miny; + cursor->maxx = maxx; + cursor->maxy = maxy; + cursor->mbr_mode = mode; + mbrc_read_row_filtered (cursor); + } + else + cursor->eof = 1; + } + } + return SQLITE_OK; + } +/* illegal query mode */ + cursor->eof = 1; + return SQLITE_OK; +} + +static int +mbrc_next (sqlite3_vtab_cursor * pCursor) +{ +/* fetching a next row from cursor */ + MbrCacheCursorPtr cursor = (MbrCacheCursorPtr) pCursor; + if (cursor->pVtab->error) + { + cursor->eof = 1; + return SQLITE_OK; + } + if (cursor->strategy == 0) + mbrc_read_row_unfiltered (cursor); + else if (cursor->strategy == 2) + mbrc_read_row_filtered (cursor); + else + cursor->eof = 1; + return SQLITE_OK; +} + +static int +mbrc_eof (sqlite3_vtab_cursor * pCursor) +{ +/* cursor EOF */ + MbrCacheCursorPtr cursor = (MbrCacheCursorPtr) pCursor; + return cursor->eof; +} + +static int +mbrc_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, + int column) +{ +/* fetching value for the Nth column */ + MbrCacheCursorPtr cursor = (MbrCacheCursorPtr) pCursor; + if (!(cursor->current_cell)) + sqlite3_result_null (pContext); + else + { + if (column == 0) + { + /* the PRIMARY KEY column */ + sqlite3_result_int64 (pContext, cursor->current_cell->rowid); + } + if (column == 1) + { + /* the MBR column */ + char *envelope = sqlite3_mprintf ("POLYGON((" + "%1.2f %1.2f, %1.2f %1.2f, %1.2f %1.2f, %1.2f %1.2f, %1.2f %1.2f))", + cursor->current_cell->minx, + cursor->current_cell->miny, + cursor->current_cell->maxx, + cursor->current_cell->miny, + cursor->current_cell->maxx, + cursor->current_cell->maxy, + cursor->current_cell->minx, + cursor->current_cell->maxy, + cursor->current_cell->minx, + cursor->current_cell->miny); + sqlite3_result_text (pContext, envelope, strlen (envelope), + sqlite3_free); + } + } + return SQLITE_OK; +} + +static int +mbrc_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) +{ +/* fetching the ROWID */ + MbrCacheCursorPtr cursor = (MbrCacheCursorPtr) pCursor; + *pRowid = cursor->current_cell->rowid; + return SQLITE_OK; +} + +static int +mbrc_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, + sqlite_int64 * pRowid) +{ +/* generic update [INSERT / UPDATE / DELETE */ + sqlite3_int64 rowid; + unsigned char *p_blob; + int n_bytes; + double minx; + double miny; + double maxx; + double maxy; + int mode; + int illegal = 0; + MbrCachePtr p_vtab = (MbrCachePtr) pVTab; + if (pRowid) + pRowid = pRowid; /* unused arg warning suppression */ + if (p_vtab->error) + return SQLITE_OK; + if (!(p_vtab->cache)) + p_vtab->cache = + cache_load (p_vtab->db, p_vtab->table_name, p_vtab->column_name); + if (argc == 1) + { + /* performing a DELETE */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + rowid = sqlite3_value_int64 (argv[0]); + cache_delete_cell (p_vtab->cache->first, rowid); + } + else + illegal = 1; + } + else + { + if (sqlite3_value_type (argv[0]) == SQLITE_NULL) + { + /* performing an INSERT */ + if (argc == 4) + { + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER + && sqlite3_value_type (argv[3]) == SQLITE_BLOB) + { + rowid = sqlite3_value_int64 (argv[2]); + p_blob = + (unsigned char *) sqlite3_value_blob (argv[3]); + n_bytes = sqlite3_value_bytes (argv[3]); + if (gaiaParseFilterMbr + (p_blob, n_bytes, &minx, &miny, &maxx, &maxy, + &mode)) + { + if (mode == GAIA_FILTER_MBR_DECLARE) + { + if (!cache_find_by_rowid + (p_vtab->cache->first, rowid)) + cache_insert_cell (p_vtab->cache, + rowid, minx, + miny, maxx, + maxy); + } + else + illegal = 1; + } + else + illegal = 1; + } + else + illegal = 1; + } + else + illegal = 1; + } + else + { + /* performing an UPDATE */ + if (argc == 4) + { + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER + && sqlite3_value_type (argv[3]) == SQLITE_BLOB) + { + rowid = sqlite3_value_int64 (argv[0]); + p_blob = + (unsigned char *) sqlite3_value_blob (argv[3]); + n_bytes = sqlite3_value_bytes (argv[3]); + if (gaiaParseFilterMbr + (p_blob, n_bytes, &minx, &miny, &maxx, &maxy, + &mode)) + { + if (mode == GAIA_FILTER_MBR_DECLARE) + cache_update_cell (p_vtab->cache->first, + rowid, minx, miny, + maxx, maxy); + else + illegal = 1; + } + else + illegal = 1; + } + else + illegal = 1; + } + else + illegal = 1; + } + } + if (illegal) + return SQLITE_MISMATCH; + return SQLITE_OK; +} + +static int +mbrc_begin (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +mbrc_sync (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +mbrc_commit (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +mbrc_rollback (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +int +sqlite3MbrCacheInit (sqlite3 * db) +{ + int rc = SQLITE_OK; + my_mbr_module.iVersion = 1; + my_mbr_module.xCreate = &mbrc_create; + my_mbr_module.xConnect = &mbrc_connect; + my_mbr_module.xBestIndex = &mbrc_best_index; + my_mbr_module.xDisconnect = &mbrc_disconnect; + my_mbr_module.xDestroy = &mbrc_destroy; + my_mbr_module.xOpen = &mbrc_open; + my_mbr_module.xClose = &mbrc_close; + my_mbr_module.xFilter = &mbrc_filter; + my_mbr_module.xNext = &mbrc_next; + my_mbr_module.xEof = &mbrc_eof; + my_mbr_module.xColumn = &mbrc_column; + my_mbr_module.xRowid = &mbrc_rowid; + my_mbr_module.xUpdate = &mbrc_update; + my_mbr_module.xBegin = &mbrc_begin; + my_mbr_module.xSync = &mbrc_sync; + my_mbr_module.xCommit = &mbrc_commit; + my_mbr_module.xRollback = &mbrc_rollback; + my_mbr_module.xFindFunction = NULL; + sqlite3_create_module_v2 (db, "MbrCache", &my_mbr_module, NULL, 0); + return rc; +} + +int +mbrcache_extension_init (void *xdb) +{ + sqlite3 *db = (sqlite3 *) xdb; + return sqlite3MbrCacheInit (db); +} diff --git a/src/spatialite/src/spatialite/metatables.c b/src/spatialite/src/spatialite/metatables.c new file mode 100644 index 0000000..1908b0f --- /dev/null +++ b/src/spatialite/src/spatialite/metatables.c @@ -0,0 +1,6105 @@ +/* + + metatables.c -- creating the metadata tables and related triggers + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Pepijn Van Eeckhoudt +(implementing Android support) + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include +#include +#include +#include +#include + +#ifdef _WIN32 +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +struct spatial_index_str +{ +/* a struct to implement a linked list of spatial-indexes */ + char ValidRtree; + char ValidCache; + char *TableName; + char *ColumnName; + struct spatial_index_str *Next; +}; + +static int +testSpatiaLiteHistory (sqlite3 * sqlite) +{ +/* internal utility function: +/ +/ checks if the SPATIALITE_HISTORY table already exists +/ +*/ + int event_id = 0; + int table_name = 0; + int geometry_column = 0; + int event = 0; + int timestamp = 0; + int ver_sqlite = 0; + int ver_splite = 0; + char sql[1024]; + int ret; + const char *name; + int i; + char **results; + int rows; + int columns; +/* checking the SPATIALITE_HISTORY table */ + strcpy (sql, "PRAGMA table_info(spatialite_history)"); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "event_id") == 0) + event_id = 1; + if (strcasecmp (name, "table_name") == 0) + table_name = 1; + if (strcasecmp (name, "geometry_column") == 0) + geometry_column = 1; + if (strcasecmp (name, "event") == 0) + event = 1; + if (strcasecmp (name, "timestamp") == 0) + timestamp = 1; + if (strcasecmp (name, "ver_sqlite") == 0) + ver_sqlite = 1; + if (strcasecmp (name, "ver_splite") == 0) + ver_splite = 1; + } + } + sqlite3_free_table (results); + if (event_id && table_name && geometry_column && event && timestamp + && ver_sqlite && ver_splite) + return 1; + return 0; +} + +static int +checkSpatiaLiteHistory (sqlite3 * sqlite) +{ +/* internal utility function: +/ +/ checks if the SPATIALITE_HISTORY table already exists +/ if not, such table will then be created +/ +*/ + char sql[1024]; + char *errMsg = NULL; + int ret; + + if (testSpatiaLiteHistory (sqlite)) + return 1; + +/* creating the SPATIALITE_HISTORY table */ + strcpy (sql, "CREATE TABLE IF NOT EXISTS "); + strcat (sql, "spatialite_history (\n"); + strcat (sql, "event_id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,\n"); + strcat (sql, "table_name TEXT NOT NULL,\n"); + strcat (sql, "geometry_column TEXT,\n"); + strcat (sql, "event TEXT NOT NULL,\n"); + strcat (sql, "timestamp TEXT NOT NULL,\n"); + strcat (sql, "ver_sqlite TEXT NOT NULL,\n"); + strcat (sql, "ver_splite TEXT NOT NULL)"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + return 0; + + if (testSpatiaLiteHistory (sqlite)) + return 1; + return 0; +} + +SPATIALITE_PRIVATE void +updateSpatiaLiteHistory (void *p_sqlite, const char *table, + const char *geom, const char *operation) +{ +/* inserting a row in SPATIALITE_HISTORY */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + char sql[2048]; + sqlite3_stmt *stmt = NULL; + int ret; + + if (checkSpatiaLiteHistory (sqlite) == 0) + return; + + strcpy (sql, "INSERT INTO spatialite_history "); + strcat (sql, "(event_id, table_name, geometry_column, event, timestamp, "); + strcat (sql, "ver_sqlite, ver_splite) VALUES (NULL, ?, ?, ?, "); + strcat (sql, "strftime('%Y-%m-%dT%H:%M:%fZ', 'now'), "); + strcat (sql, "sqlite_version(), spatialite_version())"); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s\n%s\n", sql, sqlite3_errmsg (sqlite)); + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + if (!geom) + sqlite3_bind_null (stmt, 2); + else + sqlite3_bind_text (stmt, 2, geom, strlen (geom), SQLITE_STATIC); + sqlite3_bind_text (stmt, 3, operation, strlen (operation), SQLITE_STATIC); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + goto stop; + spatialite_e ("SQL error: %s\n", sqlite3_errmsg (sqlite)); + + stop: + if (stmt) + sqlite3_finalize (stmt); +} + +static int +create_views_geometry_columns (sqlite3 * sqlite) +{ + char sql[4186]; + char *errMsg = NULL; + int ret; +/* creating the VIEWS_GEOMETRY_COLUMNS table */ + strcpy (sql, "CREATE TABLE IF NOT EXISTS "); + strcat (sql, "views_geometry_columns (\n"); + strcat (sql, "view_name TEXT NOT NULL,\n"); + strcat (sql, "view_geometry TEXT NOT NULL,\n"); + strcat (sql, "view_rowid TEXT NOT NULL,\n"); + strcat (sql, "f_table_name TEXT NOT NULL,\n"); + strcat (sql, "f_geometry_column TEXT NOT NULL,\n"); + strcat (sql, "read_only INTEGER NOT NULL,\n"); + strcat (sql, "CONSTRAINT pk_geom_cols_views PRIMARY KEY "); + strcat (sql, "(view_name, view_geometry),\n"); + strcat (sql, "CONSTRAINT fk_views_geom_cols FOREIGN KEY "); + strcat (sql, "(f_table_name, f_geometry_column) "); + strcat (sql, "REFERENCES geometry_columns "); + strcat (sql, "(f_table_name, f_geometry_column) "); + strcat (sql, "ON DELETE CASCADE,\n"); + strcat (sql, "CONSTRAINT ck_vw_rdonly CHECK (read_only IN "); + strcat (sql, "(0,1)))"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating an INDEX supporting the GEOMETRY_COLUMNS FK */ + strcpy (sql, "CREATE INDEX IF NOT EXISTS "); + strcat (sql, "idx_viewsjoin ON views_geometry_columns\n"); + strcat (sql, "(f_table_name, f_geometry_column)"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the VIEWS_GEOMETRY_COLUMNS triggers */ + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_view_name_insert\n"); + strcat (sql, "BEFORE INSERT ON 'views_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); + strcat (sql, "view_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); + strcat (sql, "view_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: \n"); + strcat (sql, "view_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_view_name_update\n"); + strcat (sql, "BEFORE UPDATE OF 'view_name' ON 'views_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); + strcat (sql, "view_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); + strcat (sql, "view_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); + strcat (sql, "view_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_view_geometry_insert\n"); + strcat (sql, "BEFORE INSERT ON 'views_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); + strcat (sql, "view_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: \n"); + strcat (sql, "view_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); + strcat (sql, "view_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_view_geometry_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'view_geometry' ON 'views_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); + strcat (sql, "view_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: \n"); + strcat (sql, "view_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); + strcat (sql, "view_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_view_rowid_update\n"); + strcat (sql, "BEFORE UPDATE OF 'view_rowid' ON 'views_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); + strcat (sql, "view_rowid value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); + strcat (sql, "view_rowid value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_rowid LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); + strcat (sql, "view_rowid value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_rowid <> lower(NEW.view_rowid);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_view_rowid_insert\n"); + strcat (sql, "BEFORE INSERT ON 'views_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); + strcat (sql, "view_rowid value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_rowid LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: \n"); + strcat (sql, "view_rowid value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_rowid LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); + strcat (sql, "view_rowid value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_rowid <> lower(NEW.view_rowid);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_f_table_name_insert\n"); + strcat (sql, "BEFORE INSERT ON 'views_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); + strcat (sql, "f_table_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); + strcat (sql, "f_table_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: \n"); + strcat (sql, "f_table_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgc_f_table_name_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'f_table_name' ON 'views_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); + strcat (sql, "f_table_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); + strcat (sql, "f_table_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); + strcat (sql, "f_table_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, + "CREATE TRIGGER IF NOT EXISTS vwgc_f_geometry_column_insert\n"); + strcat (sql, "BEFORE INSERT ON 'views_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: \n"); + strcat (sql, "f_geometry_column value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns violates constraint: "); + strcat (sql, "f_geometry_column value must be lower case')\n"); + strcat (sql, + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, + "CREATE TRIGGER IF NOT EXISTS vwgc_f_geometry_column_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'f_geometry_column' ON 'views_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns violates constraint: "); + strcat (sql, "f_geometry_column value must be lower case')\n"); + strcat (sql, + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + return 1; +} + +static int +create_virts_geometry_columns (sqlite3 * sqlite) +{ + char sql[4186]; + char *errMsg = NULL; + int ret; +/* creating the VIRTS_GEOMETRY_COLUMNS table */ + strcpy (sql, "CREATE TABLE IF NOT EXISTS "); + strcat (sql, "virts_geometry_columns (\n"); + strcat (sql, "virt_name TEXT NOT NULL,\n"); + strcat (sql, "virt_geometry TEXT NOT NULL,\n"); + strcat (sql, "geometry_type INTEGER NOT NULL,\n"); + strcat (sql, "coord_dimension INTEGER NOT NULL,\n"); + strcat (sql, "srid INTEGER NOT NULL,\n"); + strcat (sql, "CONSTRAINT pk_geom_cols_virts PRIMARY KEY "); + strcat (sql, "(virt_name, virt_geometry),\n"); + strcat (sql, "CONSTRAINT fk_vgc_srid FOREIGN KEY "); + strcat (sql, "(srid) REFERENCES spatial_ref_sys (srid))"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating an INDEX supporting the SPATIAL_REF_SYS FK */ + strcpy (sql, "CREATE INDEX IF NOT EXISTS "); + strcat (sql, "idx_virtssrid ON virts_geometry_columns\n"); + strcat (sql, "(srid)"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the VIRTS_GEOMETRY_COLUMNS triggers */ + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_virt_name_insert\n"); + strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns violates constraint: "); + strcat (sql, "virt_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns violates constraint: "); + strcat (sql, "virt_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns violates constraint: \n"); + strcat (sql, "virt_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_virt_name_update\n"); + strcat (sql, "BEFORE UPDATE OF 'virt_name' ON 'virts_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns violates constraint: "); + strcat (sql, "virt_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns violates constraint: "); + strcat (sql, "virt_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns violates constraint: "); + strcat (sql, "virt_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_virt_geometry_insert\n"); + strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns violates constraint: "); + strcat (sql, "virt_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns violates constraint: \n"); + strcat (sql, "virt_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns violates constraint: "); + strcat (sql, "virt_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_virt_geometry_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'virt_geometry' ON 'virts_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns violates constraint: "); + strcat (sql, "virt_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns violates constraint: \n"); + strcat (sql, "virt_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns violates constraint: "); + strcat (sql, "virt_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_geometry_type_insert\n"); + strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, "SELECT RAISE(ABORT,'geometry_type must be one of "); + strcat (sql, "0,1,2,3,4,5,6,7,"); + strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); + strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); + strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007')\n"); + strcat (sql, "WHERE NOT(NEW.geometry_type IN (0,1,2,3,4,5,6,7,"); + strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); + strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); + strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007));\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_geometry_type_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'geometry_type' ON 'virts_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, "SELECT RAISE(ABORT,'geometry_type must be one of "); + strcat (sql, "0,1,2,3,4,5,6,7,"); + strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); + strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); + strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007')\n"); + strcat (sql, "WHERE NOT(NEW.geometry_type IN (0,1,2,3,4,5,6,7,"); + strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); + strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); + strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007));\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_coord_dimension_insert\n"); + strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'coord_dimension must be one of 2,3,4')\n"); + strcat (sql, "WHERE NOT(NEW.coord_dimension IN (2,3,4));\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgc_coord_dimension_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'coord_dimension' ON 'virts_geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'coord_dimension must be one of 2,3,4')\n"); + strcat (sql, "WHERE NOT(NEW.coord_dimension IN (2,3,4));\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + return 1; +} + +static int +create_geometry_columns_statistics (sqlite3 * sqlite) +{ + char sql[4186]; + char *errMsg = NULL; + int ret; +/* creating the GEOMETRY_COLUMNS_STATISTICS table */ + strcpy (sql, "CREATE TABLE IF NOT EXISTS "); + strcat (sql, "geometry_columns_statistics (\n"); + strcat (sql, "f_table_name TEXT NOT NULL,\n"); + strcat (sql, "f_geometry_column TEXT NOT NULL,\n"); + strcat (sql, "last_verified TIMESTAMP,\n"); + strcat (sql, "row_count INTEGER,\n"); + strcat (sql, "extent_min_x DOUBLE,\n"); + strcat (sql, "extent_min_y DOUBLE,\n"); + strcat (sql, "extent_max_x DOUBLE,\n"); + strcat (sql, "extent_max_y DOUBLE,\n"); + strcat (sql, "CONSTRAINT pk_gc_statistics PRIMARY KEY "); + strcat (sql, "(f_table_name, f_geometry_column),\n"); + strcat (sql, "CONSTRAINT fk_gc_statistics FOREIGN KEY "); + strcat (sql, "(f_table_name, f_geometry_column) REFERENCES "); + strcat (sql, "geometry_columns (f_table_name, f_geometry_column) "); + strcat (sql, "ON DELETE CASCADE)"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the GEOMETRY_COLUMNS_STATISTICS triggers */ + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcs_f_table_name_insert\n"); + strcat (sql, "BEFORE INSERT ON 'geometry_columns_statistics'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_statistics violates constraint: "); + strcat (sql, "f_table_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_statistics violates constraint: "); + strcat (sql, "f_table_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_statistics violates constraint: \n"); + strcat (sql, "f_table_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcs_f_table_name_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'f_table_name' ON 'geometry_columns_statistics'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_statistics violates constraint: "); + strcat (sql, "f_table_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_statistics violates constraint: "); + strcat (sql, "f_table_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_statistics violates constraint: "); + strcat (sql, "f_table_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcs_f_geometry_column_insert\n"); + strcat (sql, "BEFORE INSERT ON 'geometry_columns_statistics'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_statistics violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_statistics violates constraint: \n"); + strcat (sql, "f_geometry_column value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_statistics violates constraint: "); + strcat (sql, "f_geometry_column value must be lower case')\n"); + strcat (sql, + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcs_f_geometry_column_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'f_geometry_column' ON 'geometry_columns_statistics'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_statistics violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_statistics violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_statistics violates constraint: "); + strcat (sql, "f_geometry_column value must be lower case')\n"); + strcat (sql, + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + return 1; +} + +static int +create_views_geometry_columns_statistics (sqlite3 * sqlite) +{ + char sql[4186]; + char *errMsg = NULL; + int ret; +/* creating the VIEWS_GEOMETRY_COLUMNS_STATISTICS table */ + strcpy (sql, "CREATE TABLE IF NOT EXISTS "); + strcat (sql, "views_geometry_columns_statistics (\n"); + strcat (sql, "view_name TEXT NOT NULL,\n"); + strcat (sql, "view_geometry TEXT NOT NULL,\n"); + strcat (sql, "last_verified TIMESTAMP,\n"); + strcat (sql, "row_count INTEGER,\n"); + strcat (sql, "extent_min_x DOUBLE,\n"); + strcat (sql, "extent_min_y DOUBLE,\n"); + strcat (sql, "extent_max_x DOUBLE,\n"); + strcat (sql, "extent_max_y DOUBLE,\n"); + strcat (sql, "CONSTRAINT pk_vwgc_statistics PRIMARY KEY "); + strcat (sql, "(view_name, view_geometry),\n"); + strcat (sql, "CONSTRAINT fk_vwgc_statistics FOREIGN KEY "); + strcat (sql, "(view_name, view_geometry) REFERENCES "); + strcat (sql, "views_geometry_columns (view_name, view_geometry) "); + strcat (sql, "ON DELETE CASCADE)"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the VIEWS_GEOMETRY_COLUMNS_STATISTICS triggers */ + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcs_view_name_insert\n"); + strcat (sql, "BEFORE INSERT ON 'views_geometry_columns_statistics'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_statistics violates constraint: "); + strcat (sql, "view_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_statistics violates constraint: "); + strcat (sql, "view_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_statistics violates constraint: \n"); + strcat (sql, "view_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcs_view_name_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'view_name' ON 'views_geometry_columns_statistics'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_statistics violates constraint: "); + strcat (sql, "view_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_statistics violates constraint: "); + strcat (sql, "view_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_statistics violates constraint: "); + strcat (sql, "view_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcs_view_geometry_insert\n"); + strcat (sql, "BEFORE INSERT ON 'views_geometry_columns_statistics'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_statistics violates constraint: "); + strcat (sql, "view_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_statistics violates constraint: \n"); + strcat (sql, "view_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_statistics violates constraint: "); + strcat (sql, "view_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcs_view_geometry_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'view_geometry' ON 'views_geometry_columns_statistics'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_statistics violates constraint: "); + strcat (sql, "view_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_statistics violates constraint: \n"); + strcat (sql, "view_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_statistics violates constraint: "); + strcat (sql, "view_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + return 1; +} + +static int +create_virts_geometry_columns_statistics (sqlite3 * sqlite) +{ + char sql[4186]; + char *errMsg = NULL; + int ret; +/* creating the VIRTS_GEOMETRY_COLUMNS_STATISTICS table */ + strcpy (sql, "CREATE TABLE IF NOT EXISTS "); + strcat (sql, "virts_geometry_columns_statistics (\n"); + strcat (sql, "virt_name TEXT NOT NULL,\n"); + strcat (sql, "virt_geometry TEXT NOT NULL,\n"); + strcat (sql, "last_verified TIMESTAMP,\n"); + strcat (sql, "row_count INTEGER,\n"); + strcat (sql, "extent_min_x DOUBLE,\n"); + strcat (sql, "extent_min_y DOUBLE,\n"); + strcat (sql, "extent_max_x DOUBLE,\n"); + strcat (sql, "extent_max_y DOUBLE,\n"); + strcat (sql, "CONSTRAINT pk_vrtgc_statistics PRIMARY KEY "); + strcat (sql, "(virt_name, virt_geometry),\n"); + strcat (sql, "CONSTRAINT fk_vrtgc_statistics FOREIGN KEY "); + strcat (sql, "(virt_name, virt_geometry) REFERENCES "); + strcat (sql, "virts_geometry_columns (virt_name, virt_geometry) "); + strcat (sql, "ON DELETE CASCADE)"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the VIRTS_GEOMETRY_COLUMNS_STATISTICS triggers */ + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcs_virt_name_insert\n"); + strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns_statistics'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_statistics violates constraint: "); + strcat (sql, "virt_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_statistics violates constraint: "); + strcat (sql, "virt_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_statistics violates constraint: \n"); + strcat (sql, "virt_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcs_virt_name_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'virt_name' ON 'virts_geometry_columns_statistics'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_statistics violates constraint: "); + strcat (sql, "virt_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_statistics violates constraint: "); + strcat (sql, "virt_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_statistics violates constraint: "); + strcat (sql, "virt_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcs_virt_geometry_insert\n"); + strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns_statistics'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_statistics violates constraint: "); + strcat (sql, "virt_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_statistics violates constraint: \n"); + strcat (sql, "virt_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_statistics violates constraint: "); + strcat (sql, "virt_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcs_virt_geometry_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'virt_geometry' ON 'virts_geometry_columns_statistics'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_statistics violates constraint: "); + strcat (sql, "virt_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_statistics violates constraint: \n"); + strcat (sql, "virt_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_statistics violates constraint: "); + strcat (sql, "virt_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + return 1; +} + +static int +create_geometry_columns_field_infos (sqlite3 * sqlite) +{ + char sql[4186]; + char *errMsg = NULL; + int ret; +/* creating the GEOMETRY_COLUMNS_FIELD_INFOS table */ + strcpy (sql, "CREATE TABLE IF NOT EXISTS "); + strcat (sql, "geometry_columns_field_infos (\n"); + strcat (sql, "f_table_name TEXT NOT NULL,\n"); + strcat (sql, "f_geometry_column TEXT NOT NULL,\n"); + strcat (sql, "ordinal INTEGER NOT NULL,\n"); + strcat (sql, "column_name TEXT NOT NULL,\n"); + strcat (sql, "null_values INTEGER NOT NULL,\n"); + strcat (sql, "integer_values INTEGER NOT NULL,\n"); + strcat (sql, "double_values INTEGER NOT NULL,\n"); + strcat (sql, "text_values INTEGER NOT NULL,\n"); + strcat (sql, "blob_values INTEGER NOT NULL,\n"); + strcat (sql, "max_size INTEGER,\n"); + strcat (sql, "integer_min INTEGER,\n"); + strcat (sql, "integer_max INTEGER,\n"); + strcat (sql, "double_min DOUBLE,\n"); + strcat (sql, "double_max DOUBLE,\n"); + strcat (sql, "CONSTRAINT pk_gcfld_infos PRIMARY KEY "); + strcat (sql, "(f_table_name, f_geometry_column, ordinal, column_name),\n"); + strcat (sql, "CONSTRAINT fk_gcfld_infos FOREIGN KEY "); + strcat (sql, "(f_table_name, f_geometry_column) REFERENCES "); + strcat (sql, "geometry_columns (f_table_name, f_geometry_column) "); + strcat (sql, "ON DELETE CASCADE)"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the GEOMETRY_COLUMNS_FIELD_INFOS triggers */ + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcfi_f_table_name_insert\n"); + strcat (sql, "BEFORE INSERT ON 'geometry_columns_field_infos'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_field_infos violates constraint: "); + strcat (sql, "f_table_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_field_infos violates constraint: "); + strcat (sql, "f_table_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_field_infos violates constraint: \n"); + strcat (sql, "f_table_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcfi_f_table_name_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'f_table_name' ON 'geometry_columns_field_infos'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_field_infos violates constraint: "); + strcat (sql, "f_table_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_field_infos violates constraint: "); + strcat (sql, "f_table_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_field_infos violates constraint: "); + strcat (sql, "f_table_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, + "CREATE TRIGGER IF NOT EXISTS gcfi_f_geometry_column_insert\n"); + strcat (sql, "BEFORE INSERT ON 'geometry_columns_field_infos'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_field_infos violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_field_infos violates constraint: \n"); + strcat (sql, "f_geometry_column value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_field_infos violates constraint: "); + strcat (sql, "f_geometry_column value must be lower case')\n"); + strcat (sql, + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, + "CREATE TRIGGER IF NOT EXISTS gcfi_f_geometry_column_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'f_geometry_column' ON 'geometry_columns_field_infos'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_field_infos violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_field_infos violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_field_infos violates constraint: "); + strcat (sql, "f_geometry_column value must be lower case')\n"); + strcat (sql, + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + return 1; +} + +static int +create_views_geometry_columns_field_infos (sqlite3 * sqlite) +{ + char sql[4186]; + char *errMsg = NULL; + int ret; +/* creating the VIEWS_COLUMNS_FIELD_INFOS table */ + strcpy (sql, "CREATE TABLE IF NOT EXISTS "); + strcat (sql, "views_geometry_columns_field_infos (\n"); + strcat (sql, "view_name TEXT NOT NULL,\n"); + strcat (sql, "view_geometry TEXT NOT NULL,\n"); + strcat (sql, "ordinal INTEGER NOT NULL,\n"); + strcat (sql, "column_name TEXT NOT NULL,\n"); + strcat (sql, "null_values INTEGER NOT NULL,\n"); + strcat (sql, "integer_values INTEGER NOT NULL,\n"); + strcat (sql, "double_values INTEGER NOT NULL,\n"); + strcat (sql, "text_values INTEGER NOT NULL,\n"); + strcat (sql, "blob_values INTEGER NOT NULL,\n"); + strcat (sql, "max_size INTEGER,\n"); + strcat (sql, "integer_min INTEGER,\n"); + strcat (sql, "integer_max INTEGER,\n"); + strcat (sql, "double_min DOUBLE,\n"); + strcat (sql, "double_max DOUBLE,\n"); + strcat (sql, "CONSTRAINT pk_vwgcfld_infos PRIMARY KEY "); + strcat (sql, "(view_name, view_geometry, ordinal, column_name),\n"); + strcat (sql, "CONSTRAINT fk_vwgcfld_infos FOREIGN KEY "); + strcat (sql, "(view_name, view_geometry) REFERENCES "); + strcat (sql, "views_geometry_columns (view_name, view_geometry) "); + strcat (sql, "ON DELETE CASCADE)"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the VIEWS_COLUMNS_FIELD_INFOS triggers */ + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcfi_view_name_insert\n"); + strcat (sql, "BEFORE INSERT ON 'views_geometry_columns_field_infos'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_field_infos violates constraint: "); + strcat (sql, "view_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_field_infos violates constraint: "); + strcat (sql, "view_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_field_infos violates constraint: \n"); + strcat (sql, "view_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcfi_view_name_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'view_name' ON 'views_geometry_columns_field_infos'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_field_infos violates constraint: "); + strcat (sql, "view_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_field_infos violates constraint: "); + strcat (sql, "view_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_field_infos violates constraint: "); + strcat (sql, "view_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcfi_view_geometry_insert\n"); + strcat (sql, "BEFORE INSERT ON 'views_geometry_columns_field_infos'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_field_infos violates constraint: "); + strcat (sql, "view_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_field_infos violates constraint: \n"); + strcat (sql, "view_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_field_infos violates constraint: "); + strcat (sql, "view_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcfi_view_geometry_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'view_geometry' ON 'views_geometry_columns_field_infos'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_field_infos violates constraint: "); + strcat (sql, "view_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_field_infos violates constraint: \n"); + strcat (sql, "view_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_field_infos violates constraint: "); + strcat (sql, "view_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + return 1; +} + +static int +create_virts_geometry_columns_field_infos (sqlite3 * sqlite) +{ + char sql[4186]; + char *errMsg = NULL; + int ret; +/* creating the VIRTS_GEOMETRY_COLUMNS_FIELD_INFOS table */ + strcpy (sql, "CREATE TABLE IF NOT EXISTS "); + strcat (sql, "virts_geometry_columns_field_infos (\n"); + strcat (sql, "virt_name TEXT NOT NULL,\n"); + strcat (sql, "virt_geometry TEXT NOT NULL,\n"); + strcat (sql, "ordinal INTEGER NOT NULL,\n"); + strcat (sql, "column_name TEXT NOT NULL,\n"); + strcat (sql, "null_values INTEGER NOT NULL,\n"); + strcat (sql, "integer_values INTEGER NOT NULL,\n"); + strcat (sql, "double_values INTEGER NOT NULL,\n"); + strcat (sql, "text_values INTEGER NOT NULL,\n"); + strcat (sql, "blob_values INTEGER NOT NULL,\n"); + strcat (sql, "max_size INTEGER,\n"); + strcat (sql, "integer_min INTEGER,\n"); + strcat (sql, "integer_max INTEGER,\n"); + strcat (sql, "double_min DOUBLE,\n"); + strcat (sql, "double_max DOUBLE,\n"); + strcat (sql, "CONSTRAINT pk_vrtgcfld_infos PRIMARY KEY "); + strcat (sql, "(virt_name, virt_geometry, ordinal, column_name),\n"); + strcat (sql, "CONSTRAINT fk_vrtgcfld_infos FOREIGN KEY "); + strcat (sql, "(virt_name, virt_geometry) REFERENCES "); + strcat (sql, "virts_geometry_columns (virt_name, virt_geometry) "); + strcat (sql, "ON DELETE CASCADE)"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the VIRTS_GEOMETRY_COLUMNS_FIELD_INFOS triggers */ + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcfi_virt_name_insert\n"); + strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns_field_infos'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_field_infos violates constraint: "); + strcat (sql, "virt_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_field_infos violates constraint: "); + strcat (sql, "virt_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_field_infos violates constraint: \n"); + strcat (sql, "virt_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcfi_virt_name_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'virt_name' ON 'virts_geometry_columns_field_infos'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_field_infos violates constraint: "); + strcat (sql, "virt_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_field_infos violates constraint: "); + strcat (sql, "virt_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_field_infos violates constraint: "); + strcat (sql, "virt_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcfi_virt_geometry_insert\n"); + strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns_field_infos'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_field_infos violates constraint: "); + strcat (sql, "virt_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_field_infos violates constraint: \n"); + strcat (sql, "virt_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_field_infos violates constraint: "); + strcat (sql, "virt_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcfi_virt_geometry_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'virt_geometry' ON 'virts_geometry_columns_field_infos'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_field_infos violates constraint: "); + strcat (sql, "virt_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_field_infos violates constraint: \n"); + strcat (sql, "virt_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_field_infos violates constraint: "); + strcat (sql, "virt_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + return 1; +} + +static int +create_geometry_columns_times (sqlite3 * sqlite) +{ + char sql[4186]; + char *errMsg = NULL; + int ret; +/* creating the GEOMETRY_COLUMNS_TIME table */ + strcpy (sql, "CREATE TABLE IF NOT EXISTS "); + strcat (sql, "geometry_columns_time (\n"); + strcat (sql, "f_table_name TEXT NOT NULL,\n"); + strcat (sql, "f_geometry_column TEXT NOT NULL,\n"); + strcat (sql, + "last_insert TIMESTAMP NOT NULL DEFAULT '0000-01-01T00:00:00.000Z',\n"); + strcat (sql, + "last_update TIMESTAMP NOT NULL DEFAULT '0000-01-01T00:00:00.000Z',\n"); + strcat (sql, + "last_delete TIMESTAMP NOT NULL DEFAULT '0000-01-01T00:00:00.000Z',\n"); + strcat (sql, "CONSTRAINT pk_gc_time PRIMARY KEY "); + strcat (sql, "(f_table_name, f_geometry_column),\n"); + strcat (sql, "CONSTRAINT fk_gc_time FOREIGN KEY "); + strcat (sql, "(f_table_name, f_geometry_column) "); + strcat (sql, "REFERENCES geometry_columns "); + strcat (sql, "(f_table_name, f_geometry_column) "); + strcat (sql, "ON DELETE CASCADE)"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the GEOMETRY_COLUMNS_TIME triggers */ + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gctm_f_table_name_insert\n"); + strcat (sql, "BEFORE INSERT ON 'geometry_columns_time'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_time violates constraint: "); + strcat (sql, "f_table_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_time violates constraint: "); + strcat (sql, "f_table_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_time violates constraint: \n"); + strcat (sql, "f_table_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gctm_f_table_name_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'f_table_name' ON 'geometry_columns_time'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_time violates constraint: "); + strcat (sql, "f_table_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_time violates constraint: "); + strcat (sql, "f_table_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_time violates constraint: "); + strcat (sql, "f_table_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, + "CREATE TRIGGER IF NOT EXISTS gctm_f_geometry_column_insert\n"); + strcat (sql, "BEFORE INSERT ON 'geometry_columns_time'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_time violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_time violates constraint: \n"); + strcat (sql, "f_geometry_column value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_time violates constraint: "); + strcat (sql, "f_geometry_column value must be lower case')\n"); + strcat (sql, + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, + "CREATE TRIGGER IF NOT EXISTS gctm_f_geometry_column_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'f_geometry_column' ON 'geometry_columns_time'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_time violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_time violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_time violates constraint: "); + strcat (sql, "f_geometry_column value must be lower case')\n"); + strcat (sql, + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + return 1; +} + +static int +create_geometry_columns_auth (sqlite3 * sqlite) +{ + char sql[4186]; + char *errMsg = NULL; + int ret; +/* creating the GEOMETRY_COLUMNS_AUTH table */ + strcpy (sql, "CREATE TABLE IF NOT EXISTS "); + strcat (sql, "geometry_columns_auth (\n"); + strcat (sql, "f_table_name TEXT NOT NULL,\n"); + strcat (sql, "f_geometry_column TEXT NOT NULL,\n"); + strcat (sql, "read_only INTEGER NOT NULL,\n"); + strcat (sql, "hidden INTEGER NOT NULL,\n"); + strcat (sql, "CONSTRAINT pk_gc_auth PRIMARY KEY "); + strcat (sql, "(f_table_name, f_geometry_column),\n"); + strcat (sql, "CONSTRAINT fk_gc_auth FOREIGN KEY "); + strcat (sql, "(f_table_name, f_geometry_column) "); + strcat (sql, "REFERENCES geometry_columns "); + strcat (sql, "(f_table_name, f_geometry_column) "); + strcat (sql, "ON DELETE CASCADE,\n"); + strcat (sql, "CONSTRAINT ck_gc_ronly CHECK (read_only IN "); + strcat (sql, "(0,1)),\n"); + strcat (sql, "CONSTRAINT ck_gc_hidden CHECK (hidden IN "); + strcat (sql, "(0,1)))"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the GEOMETRY_COLUMNS_AUTH triggers */ + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcau_f_table_name_insert\n"); + strcat (sql, "BEFORE INSERT ON 'geometry_columns_auth'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_auth violates constraint: "); + strcat (sql, "f_table_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_auth violates constraint: "); + strcat (sql, "f_table_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_auth violates constraint: \n"); + strcat (sql, "f_table_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS gcau_f_table_name_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'f_table_name' ON 'geometry_columns_auth'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_auth violates constraint: "); + strcat (sql, "f_table_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_auth violates constraint: "); + strcat (sql, "f_table_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_auth violates constraint: "); + strcat (sql, "f_table_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, + "CREATE TRIGGER IF NOT EXISTS gcau_f_geometry_column_insert\n"); + strcat (sql, "BEFORE INSERT ON 'geometry_columns_auth'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_auth violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_auth violates constraint: \n"); + strcat (sql, "f_geometry_column value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns_auth violates constraint: "); + strcat (sql, "f_geometry_column value must be lower case')\n"); + strcat (sql, + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, + "CREATE TRIGGER IF NOT EXISTS gcau_f_geometry_column_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'f_geometry_column' ON 'geometry_columns_auth'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_auth violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_auth violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns_auth violates constraint: "); + strcat (sql, "f_geometry_column value must be lower case')\n"); + strcat (sql, + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + return 1; +} + +static int +create_views_geometry_columns_auth (sqlite3 * sqlite) +{ + char sql[4186]; + char *errMsg = NULL; + int ret; +/* creating the VIEWS_GEOMETRY_COLUMNS_AUTH table */ + strcpy (sql, "CREATE TABLE IF NOT EXISTS "); + strcat (sql, "views_geometry_columns_auth (\n"); + strcat (sql, "view_name TEXT NOT NULL,\n"); + strcat (sql, "view_geometry TEXT NOT NULL,\n"); + strcat (sql, "hidden INTEGER NOT NULL,\n"); + strcat (sql, "CONSTRAINT pk_vwgc_auth PRIMARY KEY "); + strcat (sql, "(view_name, view_geometry),\n"); + strcat (sql, "CONSTRAINT fk_vwgc_auth FOREIGN KEY "); + strcat (sql, "(view_name, view_geometry) "); + strcat (sql, "REFERENCES views_geometry_columns "); + strcat (sql, "(view_name, view_geometry) "); + strcat (sql, "ON DELETE CASCADE,\n"); + strcat (sql, "CONSTRAINT ck_vwgc_hidden CHECK (hidden IN "); + strcat (sql, "(0,1)))"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the VIEWS_GEOMETRY_COLUMNS_AUTH triggers */ + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcau_view_name_insert\n"); + strcat (sql, "BEFORE INSERT ON 'views_geometry_columns_auth'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_auth violates constraint: "); + strcat (sql, "view_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_auth violates constraint: "); + strcat (sql, "view_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_auth violates constraint: \n"); + strcat (sql, "view_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcau_view_name_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'view_name' ON 'views_geometry_columns_auth'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_auth violates constraint: "); + strcat (sql, "view_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_auth violates constraint: "); + strcat (sql, "view_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_auth violates constraint: "); + strcat (sql, "view_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_name <> lower(NEW.view_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcau_view_geometry_insert\n"); + strcat (sql, "BEFORE INSERT ON 'views_geometry_columns_auth'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_auth violates constraint: "); + strcat (sql, "view_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_auth violates constraint: \n"); + strcat (sql, "view_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on views_geometry_columns_auth violates constraint: "); + strcat (sql, "view_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vwgcau_view_geometry_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'view_geometry' ON 'views_geometry_columns_auth'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_auth violates constraint: "); + strcat (sql, "view_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_auth violates constraint: \n"); + strcat (sql, "view_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.view_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on views_geometry_columns_auth violates constraint: "); + strcat (sql, "view_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.view_geometry <> lower(NEW.view_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + return 1; +} + +static int +create_virts_geometry_columns_auth (sqlite3 * sqlite) +{ + char sql[4186]; + char *errMsg = NULL; + int ret; +/* creating the VIRTS_GEOMETRY_COLUMNS_AUTH table */ + strcpy (sql, "CREATE TABLE IF NOT EXISTS "); + strcat (sql, "virts_geometry_columns_auth (\n"); + strcat (sql, "virt_name TEXT NOT NULL,\n"); + strcat (sql, "virt_geometry TEXT NOT NULL,\n"); + strcat (sql, "hidden INTEGER NOT NULL,\n"); + strcat (sql, "CONSTRAINT pk_vrtgc_auth PRIMARY KEY "); + strcat (sql, "(virt_name, virt_geometry),\n"); + strcat (sql, "CONSTRAINT fk_vrtgc_auth FOREIGN KEY "); + strcat (sql, "(virt_name, virt_geometry) "); + strcat (sql, "REFERENCES virts_geometry_columns "); + strcat (sql, "(virt_name, virt_geometry) "); + strcat (sql, "ON DELETE CASCADE,\n"); + strcat (sql, "CONSTRAINT ck_vrtgc_hidden CHECK (hidden IN "); + strcat (sql, "(0,1)))"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the VIRTS_GEOMETRY_COLUMNS_AUTH triggers */ + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcau_virt_name_insert\n"); + strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns_auth'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_auth violates constraint: "); + strcat (sql, "virt_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_auth violates constraint: "); + strcat (sql, "virt_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_auth violates constraint: \n"); + strcat (sql, "virt_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcau_virt_name_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'virt_name' ON 'virts_geometry_columns_auth'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_auth violates constraint: "); + strcat (sql, "virt_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_auth violates constraint: "); + strcat (sql, "virt_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_auth violates constraint: "); + strcat (sql, "virt_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_name <> lower(NEW.virt_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcau_virt_geometry_insert\n"); + strcat (sql, "BEFORE INSERT ON 'virts_geometry_columns_auth'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_auth violates constraint: "); + strcat (sql, "virt_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_auth violates constraint: \n"); + strcat (sql, "virt_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on virts_geometry_columns_auth violates constraint: "); + strcat (sql, "virt_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + strcpy (sql, "CREATE TRIGGER IF NOT EXISTS vtgcau_virt_geometry_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'virt_geometry' ON 'virts_geometry_columns_auth'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_auth violates constraint: "); + strcat (sql, "virt_geometry value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_auth violates constraint: \n"); + strcat (sql, "virt_geometry value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.virt_geometry LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on virts_geometry_columns_auth violates constraint: "); + strcat (sql, "virt_geometry value must be lower case')\n"); + strcat (sql, "WHERE NEW.virt_geometry <> lower(NEW.virt_geometry);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + return 1; +} + +static int +create_geometry_columns_views (sqlite3 * sqlite) +{ + char sql[4186]; + char *errMsg = NULL; + int ret; +/* creating the VECTOR_LAYERS view */ + strcpy (sql, "CREATE VIEW IF NOT EXISTS "); + strcat (sql, "vector_layers AS\n"); + strcat (sql, "SELECT 'SpatialTable' AS layer_type, "); + strcat (sql, "f_table_name AS table_name, "); + strcat (sql, "f_geometry_column AS geometry_column, "); + strcat (sql, "geometry_type AS geometry_type, "); + strcat (sql, "coord_dimension AS coord_dimension, "); + strcat (sql, "srid AS srid, "); + strcat (sql, "spatial_index_enabled AS spatial_index_enabled\n"); + strcat (sql, "FROM geometry_columns\n"); + strcat (sql, "UNION\n"); + strcat (sql, "SELECT 'SpatialView' AS layer_type, "); + strcat (sql, "a.view_name AS table_name, "); + strcat (sql, "a.view_geometry AS geometry_column, "); + strcat (sql, "b.geometry_type AS geometry_type, "); + strcat (sql, "b.coord_dimension AS coord_dimension, "); + strcat (sql, "b.srid AS srid, "); + strcat (sql, "b.spatial_index_enabled AS spatial_index_enabled\n"); + strcat (sql, "FROM views_geometry_columns AS a\n"); + strcat (sql, "LEFT JOIN geometry_columns AS b ON ("); + strcat (sql, "Upper(a.f_table_name) = Upper(b.f_table_name) AND "); + strcat (sql, "Upper(a.f_geometry_column) = Upper(b.f_geometry_column))\n"); + strcat (sql, "UNION\n"); + strcat (sql, "SELECT 'VirtualShape' AS layer_type, "); + strcat (sql, "virt_name AS table_name, "); + strcat (sql, "virt_geometry AS geometry_column, "); + strcat (sql, "geometry_type AS geometry_type, "); + strcat (sql, "coord_dimension AS coord_dimension, "); + strcat (sql, "srid AS srid, "); + strcat (sql, "0 AS spatial_index_enabled\n"); + strcat (sql, "FROM virts_geometry_columns"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the VECTOR_LAYERS_AUTH view */ + strcpy (sql, "CREATE VIEW IF NOT EXISTS "); + strcat (sql, "vector_layers_auth AS\n"); + strcat (sql, "SELECT 'SpatialTable' AS layer_type, "); + strcat (sql, "f_table_name AS table_name, "); + strcat (sql, "f_geometry_column AS geometry_column, "); + strcat (sql, "read_only AS read_only, "); + strcat (sql, "hidden AS hidden\n"); + strcat (sql, "FROM geometry_columns_auth\n"); + strcat (sql, "UNION\n"); + strcat (sql, "SELECT 'SpatialView' AS layer_type, "); + strcat (sql, "a.view_name AS table_name, "); + strcat (sql, "a.view_geometry AS geometry_column, "); + strcat (sql, "b.read_only AS read_only, "); + strcat (sql, "a.hidden AS hidden\n"); + strcat (sql, "FROM views_geometry_columns_auth AS a\n"); + strcat (sql, "JOIN views_geometry_columns AS b ON ("); + strcat (sql, "Upper(a.view_name) = Upper(b.view_name) AND "); + strcat (sql, "Upper(a.view_geometry) = Upper(b.view_geometry))\n"); + strcat (sql, "UNION\n"); + strcat (sql, "SELECT 'VirtualShape' AS layer_type, "); + strcat (sql, "virt_name AS table_name, "); + strcat (sql, "virt_geometry AS geometry_column, "); + strcat (sql, "1 AS read_only, "); + strcat (sql, "hidden AS hidden\n"); + strcat (sql, "FROM virts_geometry_columns_auth"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the VECTOR_LAYERS_STATISTICS view */ + strcpy (sql, "CREATE VIEW IF NOT EXISTS "); + strcat (sql, "vector_layers_statistics AS\n"); + strcat (sql, "SELECT 'SpatialTable' AS layer_type, "); + strcat (sql, "f_table_name AS table_name, "); + strcat (sql, "f_geometry_column AS geometry_column, "); + strcat (sql, "last_verified AS last_verified, "); + strcat (sql, "row_count AS row_count, "); + strcat (sql, "extent_min_x AS extent_min_x, "); + strcat (sql, "extent_min_y AS extent_min_y, "); + strcat (sql, "extent_max_x AS extent_max_x, "); + strcat (sql, "extent_max_y AS extent_max_y\n"); + strcat (sql, "FROM geometry_columns_statistics\n"); + strcat (sql, "UNION\n"); + strcat (sql, "SELECT 'SpatialView' AS layer_type, "); + strcat (sql, "view_name AS table_name, "); + strcat (sql, "view_geometry AS geometry_column, "); + strcat (sql, "last_verified AS last_verified, "); + strcat (sql, "row_count AS row_count, "); + strcat (sql, "extent_min_x AS extent_min_x, "); + strcat (sql, "extent_min_y AS extent_min_y, "); + strcat (sql, "extent_max_x AS extent_max_x, "); + strcat (sql, "extent_max_y AS extent_max_y\n"); + strcat (sql, "FROM views_geometry_columns_statistics\n"); + strcat (sql, "UNION\n"); + strcat (sql, "SELECT 'VirtualShape' AS layer_type, "); + strcat (sql, "virt_name AS table_name, "); + strcat (sql, "virt_geometry AS geometry_column, "); + strcat (sql, "last_verified AS last_verified, "); + strcat (sql, "row_count AS row_count, "); + strcat (sql, "extent_min_x AS extent_min_x, "); + strcat (sql, "extent_min_y AS extent_min_y, "); + strcat (sql, "extent_max_x AS extent_max_x, "); + strcat (sql, "extent_max_y AS extent_max_y\n"); + strcat (sql, "FROM virts_geometry_columns_statistics"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the VECTOR_LAYERS_FIELD_INFOS view */ + strcpy (sql, "CREATE VIEW IF NOT EXISTS "); + strcat (sql, "vector_layers_field_infos AS\n"); + strcat (sql, "SELECT 'SpatialTable' AS layer_type, "); + strcat (sql, "f_table_name AS table_name, "); + strcat (sql, "f_geometry_column AS geometry_column, "); + strcat (sql, "ordinal AS ordinal, "); + strcat (sql, "column_name AS column_name, "); + strcat (sql, "null_values AS null_values, "); + strcat (sql, "integer_values AS integer_values, "); + strcat (sql, "double_values AS double_values, "); + strcat (sql, "text_values AS text_values, "); + strcat (sql, "blob_values AS blob_values, "); + strcat (sql, "max_size AS max_size, "); + strcat (sql, "integer_min AS integer_min, "); + strcat (sql, "integer_max AS integer_max, "); + strcat (sql, "double_min AS double_min, "); + strcat (sql, "double_max double_max\n"); + strcat (sql, "FROM geometry_columns_field_infos\n"); + strcat (sql, "UNION\n"); + strcat (sql, "SELECT 'SpatialView' AS layer_type, "); + strcat (sql, "view_name AS table_name, "); + strcat (sql, "view_geometry AS geometry_column, "); + strcat (sql, "ordinal AS ordinal, "); + strcat (sql, "column_name AS column_name, "); + strcat (sql, "null_values AS null_values, "); + strcat (sql, "integer_values AS integer_values, "); + strcat (sql, "double_values AS double_values, "); + strcat (sql, "text_values AS text_values, "); + strcat (sql, "blob_values AS blob_values, "); + strcat (sql, "max_size AS max_size, "); + strcat (sql, "integer_min AS integer_min, "); + strcat (sql, "integer_max AS integer_max, "); + strcat (sql, "double_min AS double_min, "); + strcat (sql, "double_max double_max\n"); + strcat (sql, "FROM views_geometry_columns_field_infos\n"); + strcat (sql, "UNION\n"); + strcat (sql, "SELECT 'VirtualShape' AS layer_type, "); + strcat (sql, "virt_name AS table_name, "); + strcat (sql, "virt_geometry AS geometry_column, "); + strcat (sql, "ordinal AS ordinal, "); + strcat (sql, "column_name AS column_name, "); + strcat (sql, "null_values AS null_values, "); + strcat (sql, "integer_values AS integer_values, "); + strcat (sql, "double_values AS double_values, "); + strcat (sql, "text_values AS text_values, "); + strcat (sql, "blob_values AS blob_values, "); + strcat (sql, "max_size AS max_size, "); + strcat (sql, "integer_min AS integer_min, "); + strcat (sql, "integer_max AS integer_max, "); + strcat (sql, "double_min AS double_min, "); + strcat (sql, "double_max double_max\n"); + strcat (sql, "FROM virts_geometry_columns_field_infos"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + return 1; +} + +SPATIALITE_PRIVATE int +check_layer_statistics (void *p_sqlite) +{ +/* +/ checks the LAYER_STATISTICS table for validity; +/ if the table doesn't exist, attempts to create +*/ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + char sql[8192]; + char **results; + int rows; + int columns; + int ret; + int raster_layer = 0; + int table_name = 0; + int geometry_column = 0; + int row_count = 0; + int extent_min_x = 0; + int extent_min_y = 0; + int extent_max_x = 0; + int extent_max_y = 0; + int i; + const char *name; + int has_pk = 0; + +/* checking the LAYER_STATISTICS table */ + ret = + sqlite3_get_table (sqlite, "PRAGMA table_info(layer_statistics)", + &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "raster_layer") == 0) + raster_layer = 1; + if (strcasecmp (name, "table_name") == 0) + table_name = 1; + if (strcasecmp (name, "geometry_column") == 0) + geometry_column = 1; + if (strcasecmp (name, "row_count") == 0) + row_count = 1; + if (strcasecmp (name, "extent_min_x") == 0) + extent_min_x = 1; + if (strcasecmp (name, "extent_min_y") == 0) + extent_min_y = 1; + if (strcasecmp (name, "extent_max_x") == 0) + extent_max_x = 1; + if (strcasecmp (name, "extent_max_y") == 0) + extent_max_y = 1; + } + } + sqlite3_free_table (results); + +/* LAYER_STATISTICS already exists and has a valid layout */ + if (raster_layer && table_name && geometry_column && row_count + && extent_min_x && extent_max_x && extent_min_y && extent_max_y) + return 1; +/* LAYER_STATISTICS already exists, but has an invalid layout */ + if (raster_layer || table_name || geometry_column || row_count + || extent_min_x || extent_max_x || extent_min_y || extent_max_y) + return 0; + +/* checking if GEOMETRY_COLUMNS has a Primary Key */ + ret = + sqlite3_get_table (sqlite, "PRAGMA table_info(geometry_columns)", + &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 5]; + if (atoi (name) != 0) + has_pk = 1; + } + } + sqlite3_free_table (results); + +/* attempting to create LAYER_STATISTICS */ + if (has_pk) + { + /* GEOMETRY_COLUMNS has a Primary Key */ + strcpy (sql, "CREATE TABLE layer_statistics (\n"); + strcat (sql, "raster_layer INTEGER NOT NULL,\n"); + strcat (sql, "table_name TEXT NOT NULL,\n"); + strcat (sql, "geometry_column TEXT NOT NULL,\n"); + strcat (sql, "row_count INTEGER,\n"); + strcat (sql, "extent_min_x DOUBLE,\n"); + strcat (sql, "extent_min_y DOUBLE,\n"); + strcat (sql, "extent_max_x DOUBLE,\n"); + strcat (sql, "extent_max_y DOUBLE,\n"); + strcat (sql, "CONSTRAINT pk_layer_statistics PRIMARY KEY "); + strcat (sql, "(raster_layer, table_name, geometry_column),\n"); + strcat (sql, "CONSTRAINT fk_layer_statistics FOREIGN KEY "); + strcat (sql, "(table_name, geometry_column) REFERENCES "); + strcat (sql, "geometry_columns (f_table_name, f_geometry_column) "); + strcat (sql, "ON DELETE CASCADE)"); + } + else + { + /* there is no Primary Key on GEOMETRY_COLUMNS */ + strcpy (sql, "CREATE TABLE layer_statistics (\n"); + strcat (sql, "raster_layer INTEGER NOT NULL,\n"); + strcat (sql, "table_name TEXT NOT NULL,\n"); + strcat (sql, "geometry_column TEXT NOT NULL,\n"); + strcat (sql, "row_count INTEGER,\n"); + strcat (sql, "extent_min_x DOUBLE,\n"); + strcat (sql, "extent_min_y DOUBLE,\n"); + strcat (sql, "extent_max_x DOUBLE,\n"); + strcat (sql, "extent_max_y DOUBLE,\n"); + strcat (sql, "CONSTRAINT pk_layer_statistics PRIMARY KEY "); + strcat (sql, "(raster_layer, table_name, geometry_column))"); + } + ret = sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + if (ret != SQLITE_OK) + return 0; + return 1; +} + +SPATIALITE_PRIVATE int +check_views_layer_statistics (void *p_sqlite) +{ +/* +/ checks the VIEWS_LAYER_STATISTICS table for validity; +/ if the table doesn't exist, attempts to create +*/ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + char sql[8192]; + char **results; + int rows; + int columns; + int ret; + int view_name = 0; + int view_geometry = 0; + int row_count = 0; + int extent_min_x = 0; + int extent_min_y = 0; + int extent_max_x = 0; + int extent_max_y = 0; + int i; + const char *name; + +/* checking the VIEWS_LAYER_STATISTICS table */ + ret = + sqlite3_get_table (sqlite, "PRAGMA table_info(views_layer_statistics)", + &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "view_name") == 0) + view_name = 1; + if (strcasecmp (name, "view_geometry") == 0) + view_geometry = 1; + if (strcasecmp (name, "row_count") == 0) + row_count = 1; + if (strcasecmp (name, "extent_min_x") == 0) + extent_min_x = 1; + if (strcasecmp (name, "extent_min_y") == 0) + extent_min_y = 1; + if (strcasecmp (name, "extent_max_x") == 0) + extent_max_x = 1; + if (strcasecmp (name, "extent_max_y") == 0) + extent_max_y = 1; + } + } + sqlite3_free_table (results); + +/* VIEWS_LAYER_STATISTICS already exists and has a valid layout */ + if (view_name && view_geometry && row_count && extent_min_x && extent_max_x + && extent_min_y && extent_max_y) + return 1; +/* VIEWS_LAYER_STATISTICS already exists, but has an invalid layout */ + if (view_name || view_geometry || row_count || extent_min_x || extent_max_x + || extent_min_y || extent_max_y) + return 0; + +/* attempting to create VIEWS_LAYER_STATISTICS */ + strcpy (sql, "CREATE TABLE views_layer_statistics (\n"); + strcat (sql, "view_name TEXT NOT NULL,\n"); + strcat (sql, "view_geometry TEXT NOT NULL,\n"); + strcat (sql, "row_count INTEGER,\n"); + strcat (sql, "extent_min_x DOUBLE,\n"); + strcat (sql, "extent_min_y DOUBLE,\n"); + strcat (sql, "extent_max_x DOUBLE,\n"); + strcat (sql, "extent_max_y DOUBLE,\n"); + strcat (sql, "CONSTRAINT pk_views_layer_statistics PRIMARY KEY "); + strcat (sql, "(view_name, view_geometry),\n"); + strcat (sql, "CONSTRAINT fk_views_layer_statistics FOREIGN KEY "); + strcat (sql, "(view_name, view_geometry) REFERENCES "); + strcat (sql, "views_geometry_columns (view_name, view_geometry) "); + strcat (sql, "ON DELETE CASCADE)"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + if (ret != SQLITE_OK) + return 0; + return 1; +} + +SPATIALITE_PRIVATE int +check_virts_layer_statistics (void *p_sqlite) +{ +/* +/ checks the VIRTS_LAYER_STATISTICS table for validity; +/ if the table doesn't exist, attempts to create +*/ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + char sql[8192]; + char **results; + int rows; + int columns; + int ret; + int virt_name = 0; + int virt_geometry = 0; + int row_count = 0; + int extent_min_x = 0; + int extent_min_y = 0; + int extent_max_x = 0; + int extent_max_y = 0; + int i; + const char *name; + +/* checking the VIRTS_LAYER_STATISTICS table */ + ret = + sqlite3_get_table (sqlite, "PRAGMA table_info(virts_layer_statistics)", + &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "virt_name") == 0) + virt_name = 1; + if (strcasecmp (name, "virt_geometry") == 0) + virt_geometry = 1; + if (strcasecmp (name, "row_count") == 0) + row_count = 1; + if (strcasecmp (name, "extent_min_x") == 0) + extent_min_x = 1; + if (strcasecmp (name, "extent_min_y") == 0) + extent_min_y = 1; + if (strcasecmp (name, "extent_max_x") == 0) + extent_max_x = 1; + if (strcasecmp (name, "extent_max_y") == 0) + extent_max_y = 1; + } + } + sqlite3_free_table (results); + +/* VIRTS_LAYER_STATISTICS already exists and has a valid layout */ + if (virt_name && virt_geometry && row_count && extent_min_x && extent_max_x + && extent_min_y && extent_max_y) + return 1; +/* VIRTS_LAYER_STATISTICS already exists, but has an invalid layout */ + if (virt_name || virt_geometry || row_count || extent_min_x || extent_max_x + || extent_min_y || extent_max_y) + return 0; + +/* attempting to create VIRTS_LAYER_STATISTICS */ + strcpy (sql, "CREATE TABLE virts_layer_statistics (\n"); + strcat (sql, "virt_name TEXT NOT NULL,\n"); + strcat (sql, "virt_geometry TEXT NOT NULL,\n"); + strcat (sql, "row_count INTEGER,\n"); + strcat (sql, "extent_min_x DOUBLE,\n"); + strcat (sql, "extent_min_y DOUBLE,\n"); + strcat (sql, "extent_max_x DOUBLE,\n"); + strcat (sql, "extent_max_y DOUBLE,\n"); + strcat (sql, "CONSTRAINT pk_virts_layer_statistics PRIMARY KEY "); + strcat (sql, "(virt_name, virt_geometry),\n"); + strcat (sql, "CONSTRAINT fk_virts_layer_statistics FOREIGN KEY "); + strcat (sql, "(virt_name, virt_geometry) REFERENCES "); + strcat (sql, "virts_geometry_columns (virt_name, virt_geometry) "); + strcat (sql, "ON DELETE CASCADE)"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + if (ret != SQLITE_OK) + return 0; + return 1; +} + +static int +create_sql_statements_log (sqlite3 * sqlite) +{ + char sql[4186]; + char *errMsg = NULL; + int ret; +/* creating the SQL_STATEMENTS_LOG table */ + strcpy (sql, "CREATE TABLE IF NOT EXISTS "); + strcat (sql, "sql_statements_log (\n"); + strcat (sql, "id INTEGER PRIMARY KEY AUTOINCREMENT,\n"); + strcat (sql, + "time_start TIMESTAMP NOT NULL DEFAULT '0000-01-01T00:00:00.000Z',\n"); + strcat (sql, + "time_end TIMESTAMP NOT NULL DEFAULT '0000-01-01T00:00:00.000Z',\n"); + strcat (sql, "user_agent TEXT NOT NULL,\n"); + strcat (sql, "sql_statement TEXT NOT NULL,\n"); + strcat (sql, "success INTEGER NOT NULL DEFAULT 0,\n"); + strcat (sql, "error_cause TEXT NOT NULL DEFAULT 'ABORTED',\n"); + strcat (sql, "CONSTRAINT sqllog_success CHECK "); + strcat (sql, "(success IN (0,1)))"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + return 1; +} + +SPATIALITE_PRIVATE int +createAdvancedMetaData (void *p_sqlite) +{ +/* creating the advanced MetaData tables */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + if (!create_views_geometry_columns (sqlite)) + return 0; + if (!create_virts_geometry_columns (sqlite)) + return 0; + if (!create_geometry_columns_statistics (sqlite)) + return 0; + if (!create_views_geometry_columns_statistics (sqlite)) + return 0; + if (!create_virts_geometry_columns_statistics (sqlite)) + return 0; + if (!create_geometry_columns_field_infos (sqlite)) + return 0; + if (!create_views_geometry_columns_field_infos (sqlite)) + return 0; + if (!create_virts_geometry_columns_field_infos (sqlite)) + return 0; + if (!create_geometry_columns_times (sqlite)) + return 0; + if (!create_geometry_columns_auth (sqlite)) + return 0; + if (!create_views_geometry_columns_auth (sqlite)) + return 0; + if (!create_virts_geometry_columns_auth (sqlite)) + return 0; + if (!create_geometry_columns_views (sqlite)) + return 0; + if (!create_sql_statements_log (sqlite)) + return 0; + + return 1; +} + +SPATIALITE_PRIVATE int +createGeometryColumns (void *p_sqlite) +{ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + char sql[4186]; + char *errMsg = NULL; + int ret; +/* creating the GEOMETRY_COLUMNS table */ + strcpy (sql, "CREATE TABLE geometry_columns (\n"); + strcat (sql, "f_table_name TEXT NOT NULL,\n"); + strcat (sql, "f_geometry_column TEXT NOT NULL,\n"); + strcat (sql, "geometry_type INTEGER NOT NULL,\n"); + strcat (sql, "coord_dimension INTEGER NOT NULL,\n"); + strcat (sql, "srid INTEGER NOT NULL,\n"); + strcat (sql, "spatial_index_enabled INTEGER NOT NULL,\n"); + strcat (sql, "CONSTRAINT pk_geom_cols PRIMARY KEY "); + strcat (sql, "(f_table_name, f_geometry_column),\n"); + strcat (sql, "CONSTRAINT fk_gc_srs FOREIGN KEY "); + strcat (sql, "(srid) REFERENCES spatial_ref_sys (srid),\n"); + strcat (sql, "CONSTRAINT ck_gc_rtree CHECK "); + strcat (sql, "(spatial_index_enabled IN (0,1,2)))"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, + "table successfully created"); +/* creating an INDEX corresponding to the SRID FK */ + strcpy (sql, "CREATE INDEX idx_srid_geocols ON geometry_columns\n"); + strcat (sql, "(srid) "); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } +/* creating the GEOMETRY_COLUMNS triggers */ + strcpy (sql, "CREATE TRIGGER geometry_columns_f_table_name_insert\n"); + strcat (sql, "BEFORE INSERT ON 'geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns violates constraint: "); + strcat (sql, "f_table_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns violates constraint: "); + strcat (sql, "f_table_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns violates constraint: \n"); + strcat (sql, "f_table_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, + "trigger 'geometry_columns_f_table_name_insert' successfully created"); + strcpy (sql, "CREATE TRIGGER geometry_columns_f_table_name_update\n"); + strcat (sql, "BEFORE UPDATE OF 'f_table_name' ON 'geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: "); + strcat (sql, "f_table_name value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: "); + strcat (sql, "f_table_name value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_table_name LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: "); + strcat (sql, "f_table_name value must be lower case')\n"); + strcat (sql, "WHERE NEW.f_table_name <> lower(NEW.f_table_name);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, + "trigger 'geometry_columns_f_table_name_update' successfully created"); + strcpy (sql, "CREATE TRIGGER geometry_columns_f_geometry_column_insert\n"); + strcat (sql, "BEFORE INSERT ON 'geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns violates constraint: \n"); + strcat (sql, "f_geometry_column value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'insert on geometry_columns violates constraint: "); + strcat (sql, "f_geometry_column value must be lower case')\n"); + strcat (sql, + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, + "trigger 'geometry_columns_f_geometry_column_insert' successfully created"); + strcpy (sql, "CREATE TRIGGER geometry_columns_f_geometry_column_update\n"); + strcat (sql, + "BEFORE UPDATE OF 'f_geometry_column' ON 'geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a single quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%''%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: "); + strcat (sql, "f_geometry_column value must not contain a double quote')\n"); + strcat (sql, "WHERE NEW.f_geometry_column LIKE ('%\"%');\n"); + strcat (sql, + "SELECT RAISE(ABORT,'update on geometry_columns violates constraint: "); + strcat (sql, "f_geometry_column value must be lower case')\n"); + strcat (sql, + "WHERE NEW.f_geometry_column <> lower(NEW.f_geometry_column);\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, + "trigger 'geometry_columns_f_geometry_column_update' successfully created"); + strcpy (sql, "CREATE TRIGGER geometry_columns_geometry_type_insert\n"); + strcat (sql, "BEFORE INSERT ON 'geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, "SELECT RAISE(ABORT,'geometry_type must be one of "); + strcat (sql, "0,1,2,3,4,5,6,7,"); + strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); + strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); + strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007')\n"); + strcat (sql, "WHERE NOT(NEW.geometry_type IN (0,1,2,3,4,5,6,7,"); + strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); + strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); + strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007));\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, + "trigger 'geometry_columns_geometry_type_insert' successfully created"); + strcpy (sql, "CREATE TRIGGER geometry_columns_geometry_type_update\n"); + strcat (sql, "BEFORE UPDATE OF 'geometry_type' ON 'geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, "SELECT RAISE(ABORT,'geometry_type must be one of "); + strcat (sql, "0,1,2,3,4,5,6,7,"); + strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); + strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); + strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007')\n"); + strcat (sql, "WHERE NOT(NEW.geometry_type IN (0,1,2,3,4,5,6,7,"); + strcat (sql, "1000,1001,1002,1003,1004,1005,1006,1007,"); + strcat (sql, "2000,2001,2002,2003,2004,2005,2006,2007,"); + strcat (sql, "3000,3001,3002,3003,3004,3005,3006,3007));\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, + "trigger 'geometry_columns_geometry_type_update' successfully created"); + strcpy (sql, "CREATE TRIGGER geometry_columns_coord_dimension_insert\n"); + strcat (sql, "BEFORE INSERT ON 'geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'coord_dimension must be one of 2,3,4')\n"); + strcat (sql, "WHERE NOT(NEW.coord_dimension IN (2,3,4));\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, + "trigger 'geometry_columns_coord_dimension_insert' successfully created"); + strcpy (sql, "CREATE TRIGGER geometry_columns_coord_dimension_update\n"); + strcat (sql, "BEFORE UPDATE OF 'coord_dimension' ON 'geometry_columns'\n"); + strcat (sql, "FOR EACH ROW BEGIN\n"); + strcat (sql, + "SELECT RAISE(ABORT,'coord_dimension must be one of 2,3,4')\n"); + strcat (sql, "WHERE NOT(NEW.coord_dimension IN (2,3,4));\n"); + strcat (sql, "END"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql, errMsg); + sqlite3_free (errMsg); + return 0; + } + updateSpatiaLiteHistory (sqlite, "geometry_columns", NULL, + "trigger 'geometry_columns_coord_dimension_update' successfully created"); + return 1; +} + +SPATIALITE_PRIVATE void +updateGeometryTriggers (void *p_sqlite, const char *table, const char *column) +{ +/* updates triggers for some Spatial Column */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + int ret; + int col_index; + const char *col_dims; + int index; + int cached; + int dims; + char *txt_dims; + int len; + char *errMsg = NULL; + char *sql_statement; + char *raw; + char *quoted_trigger; + char *quoted_rtree; + char *quoted_table; + char *quoted_column; + char *p_table = NULL; + char *p_column = NULL; + sqlite3_stmt *stmt; + struct spatial_index_str *first_idx = NULL; + struct spatial_index_str *last_idx = NULL; + struct spatial_index_str *curr_idx; + struct spatial_index_str *next_idx; + int metadata_version = checkSpatialMetaData (sqlite); + + if (!getRealSQLnames (sqlite, table, column, &p_table, &p_column)) + { + spatialite_e + ("updateTableTriggers() error: not existing Table or Column\n"); + return; + } + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + sql_statement = sqlite3_mprintf ("SELECT spatial_index_enabled " + "FROM geometry_columns WHERE Lower(f_table_name) = Lower(?) " + "AND Lower(f_geometry_column) = Lower(?)"); + } + else + { + /* legacy metadata style <= v.3.1.0 */ + sql_statement = + sqlite3_mprintf ("SELECT spatial_index_enabled, coord_dimension " + "FROM geometry_columns WHERE Lower(f_table_name) = Lower(?) " + "AND Lower(f_geometry_column) = Lower(?)"); + } +/* compiling SQL prepared statement */ + ret = + sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("updateTableTriggers: error %d \"%s\"\n", + sqlite3_errcode (sqlite), sqlite3_errmsg (sqlite)); + return; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + col_index = sqlite3_column_int (stmt, 0); + if (metadata_version == 1) + { + /* legacy metadata style <= v.3.1.0 */ + col_dims = (const char *) sqlite3_column_text (stmt, 1); + dims = GAIA_XY; + if (strcasecmp (col_dims, "XYZ") == 0) + dims = GAIA_XY_Z; + if (strcasecmp (col_dims, "XYM") == 0) + dims = GAIA_XY_M; + if (strcasecmp (col_dims, "XYZM") == 0) + dims = GAIA_XY_Z_M; + switch (dims) + { + case GAIA_XY_Z: + txt_dims = "XYZ"; + break; + case GAIA_XY_M: + txt_dims = "XYM"; + break; + case GAIA_XY_Z_M: + txt_dims = "XYZM"; + break; + default: + txt_dims = "XY"; + break; + }; + } + index = 0; + cached = 0; + if (col_index == 1) + index = 1; + if (col_index == 2) + cached = 1; + + /* trying to delete old versions [v2.0, v2.2] triggers[if any] */ + raw = sqlite3_mprintf ("gti_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("gtu_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("gsi_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("gsu_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + /* end deletion old versions [v2.0, v2.2] triggers[if any] */ + + /* deleting the old INSERT trigger TYPE [if any] */ + raw = sqlite3_mprintf ("ggi_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + /* inserting the new INSERT trigger TYPE */ + raw = sqlite3_mprintf ("ggi_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + quoted_column = gaiaDoubleQuotedSql (p_column); + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" BEFORE INSERT ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ROLLBACK, '%q.%q violates Geometry constraint [geom-type or SRID not allowed]')\n" + "WHERE (SELECT geometry_type FROM geometry_columns\n" + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)\n" + "AND GeometryConstraints(NEW.\"%s\", geometry_type, srid) = 1) IS NULL;\nEND", + quoted_trigger, quoted_table, p_table, p_column, + p_table, p_column, quoted_column); + free (quoted_trigger); + free (quoted_table); + free (quoted_column); + } + else + { + /* legacy metadata style <= v.3.1.0 */ + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" BEFORE INSERT ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ROLLBACK, '%q.%q violates Geometry constraint [geom-type or SRID not allowed]')\n" + "WHERE (SELECT type FROM geometry_columns\n" + "WHERE f_table_name = %Q AND f_geometry_column = %Q\n" + "AND GeometryConstraints(NEW.\"%s\", type, srid, %Q) = 1) IS NULL;\nEND", + quoted_trigger, quoted_table, p_table, p_column, + p_table, p_column, quoted_column, txt_dims); + free (quoted_trigger); + free (quoted_table); + free (quoted_column); + } + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + /* deleting the old UPDATE trigger TYPE [if any] */ + raw = sqlite3_mprintf ("ggu_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + /* inserting the new UPDATE trigger TYPE */ + raw = sqlite3_mprintf ("ggu_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + quoted_column = gaiaDoubleQuotedSql (p_column); + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" BEFORE UPDATE ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ROLLBACK, '%q.%q violates Geometry constraint [geom-type or SRID not allowed]')\n" + "WHERE (SELECT geometry_type FROM geometry_columns\n" + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)\n" + "AND GeometryConstraints(NEW.\"%s\", geometry_type, srid) = 1) IS NULL;\nEND", + quoted_trigger, quoted_table, p_table, p_column, + p_table, p_column, quoted_column); + free (quoted_trigger); + free (quoted_table); + free (quoted_column); + } + else + { + /* legacy metadata style <= v.3.1.0 */ + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" BEFORE UPDATE ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "SELECT RAISE(ROLLBACK, '%q.%q violates Geometry constraint [geom-type or SRID not allowed]')\n" + "WHERE (SELECT type FROM geometry_columns\n" + "WHERE f_table_name = %Q AND f_geometry_column = %Q\n" + "AND GeometryConstraints(NEW.\"%s\", type, srid, %Q) = 1) IS NULL;\nEND", + quoted_trigger, quoted_table, p_table, p_column, + p_table, p_column, quoted_column, txt_dims); + free (quoted_trigger); + free (quoted_table); + free (quoted_column); + } + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + /* inserting SpatialIndex information into the linked list */ + curr_idx = malloc (sizeof (struct spatial_index_str)); + len = strlen (p_table); + curr_idx->TableName = malloc (len + 1); + strcpy (curr_idx->TableName, p_table); + len = strlen (p_column); + curr_idx->ColumnName = malloc (len + 1); + strcpy (curr_idx->ColumnName, p_column); + curr_idx->ValidRtree = (char) index; + curr_idx->ValidCache = (char) cached; + curr_idx->Next = NULL; + if (!first_idx) + first_idx = curr_idx; + if (last_idx) + last_idx->Next = curr_idx; + last_idx = curr_idx; + + /* deleting the old INSERT trigger SPATIAL_INDEX [if any] */ + raw = sqlite3_mprintf ("gii_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + if (metadata_version == 3) + { + /* deleting the old UPDATE (timestamp) trigger [if any] */ + raw = sqlite3_mprintf ("tmu_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = + sqlite3_exec (sqlite, sql_statement, NULL, NULL, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + /* deleting the old INSERT (timestamp) trigger [if any] */ + raw = sqlite3_mprintf ("tmi_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = + sqlite3_exec (sqlite, sql_statement, NULL, NULL, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + /* deleting the old DELETE (timestamp) trigger [if any] */ + raw = sqlite3_mprintf ("tmd_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = + sqlite3_exec (sqlite, sql_statement, NULL, NULL, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + } + + if (index == 0 && cached == 0) + { + + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + + /* inserting the new UPDATE (timestamp) trigger */ + raw = + sqlite3_mprintf ("tmu_%s_%s", p_table, + p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" AFTER UPDATE ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "UPDATE geometry_columns_time SET last_update = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q);\nEND", + quoted_trigger, quoted_table, p_table, + p_column); + free (quoted_trigger); + free (quoted_table); + ret = + sqlite3_exec (sqlite, sql_statement, NULL, NULL, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + /* inserting the new INSERT (timestamp) trigger */ + raw = + sqlite3_mprintf ("tmi_%s_%s", p_table, + p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" AFTER INSERT ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "UPDATE geometry_columns_time SET last_insert = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q);\nEND", + quoted_trigger, quoted_table, p_table, + p_column); + free (quoted_trigger); + free (quoted_table); + ret = + sqlite3_exec (sqlite, sql_statement, NULL, NULL, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + /* inserting the new DELETE (timestamp) trigger */ + raw = + sqlite3_mprintf ("tmd_%s_%s", p_table, + p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" AFTER DELETE ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "UPDATE geometry_columns_time SET last_delete = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q);\nEND", + quoted_trigger, quoted_table, p_table, + p_column); + free (quoted_trigger); + free (quoted_table); + ret = + sqlite3_exec (sqlite, sql_statement, NULL, NULL, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + } + } + + /* deleting the old INSERT trigger SPATIAL_INDEX [if any] */ + raw = sqlite3_mprintf ("gid_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + /* deleting the old UPDATE trigger SPATIAL_INDEX [if any] */ + raw = sqlite3_mprintf ("giu_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + /* deleting the old DELETE trigger SPATIAL_INDEX [if any] */ + raw = sqlite3_mprintf ("gid_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + /* deleting the old INSERT trigger MBR_CACHE [if any] */ + raw = sqlite3_mprintf ("gci_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + /* deleting the old UPDATE trigger MBR_CACHE [if any] */ + raw = sqlite3_mprintf ("gcu_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + /* deleting the old UPDATE trigger MBR_CACHE [if any] */ + raw = sqlite3_mprintf ("gcd_%s_%s", p_table, p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = + sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", + quoted_trigger); + free (quoted_trigger); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + if (index) + { + /* inserting the new INSERT trigger RTree */ + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + raw = + sqlite3_mprintf ("gii_%s_%s", p_table, + p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + raw = + sqlite3_mprintf ("idx_%s_%s", p_table, + p_column); + quoted_rtree = gaiaDoubleQuotedSql (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + quoted_column = gaiaDoubleQuotedSql (p_column); + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" AFTER INSERT ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "UPDATE geometry_columns_time SET last_insert = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q);\n" + "DELETE FROM \"%s\" WHERE pkid=NEW.ROWID;\n" + "SELECT RTreeAlign(%Q, NEW.ROWID, NEW.\"%s\");\nEND", + quoted_trigger, quoted_table, p_table, + p_column, quoted_rtree, raw, quoted_column); + sqlite3_free (raw); + free (quoted_trigger); + free (quoted_rtree); + free (quoted_table); + free (quoted_column); + } + else + { + /* legacy metadata style <= v.3.1.0 */ + raw = + sqlite3_mprintf ("gii_%s_%s", p_table, + p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + raw = + sqlite3_mprintf ("idx_%s_%s", p_table, + p_column); + quoted_rtree = gaiaDoubleQuotedSql (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + quoted_column = gaiaDoubleQuotedSql (p_column); + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" AFTER INSERT ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "DELETE FROM \"%s\" WHERE pkid=NEW.ROWID;\n" + "SELECT RTreeAlign(%Q, NEW.ROWID, NEW.\"%s\");\nEND", + quoted_trigger, quoted_table, quoted_rtree, + raw, quoted_column); + sqlite3_free (raw); + free (quoted_trigger); + free (quoted_rtree); + free (quoted_table); + free (quoted_column); + } + ret = + sqlite3_exec (sqlite, sql_statement, NULL, NULL, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + /* inserting the new UPDATE trigger RTree */ + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + raw = + sqlite3_mprintf ("giu_%s_%s", p_table, + p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + raw = + sqlite3_mprintf ("idx_%s_%s", p_table, + p_column); + quoted_rtree = gaiaDoubleQuotedSql (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + quoted_column = gaiaDoubleQuotedSql (p_column); + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" AFTER UPDATE ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "UPDATE geometry_columns_time SET last_update = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q);\n" + "DELETE FROM \"%s\" WHERE pkid=NEW.ROWID;\n" + "SELECT RTreeAlign(%Q, NEW.ROWID, NEW.\"%s\");\nEND", + quoted_trigger, quoted_table, p_table, + p_column, quoted_rtree, raw, quoted_column); + sqlite3_free (raw); + free (quoted_trigger); + free (quoted_rtree); + free (quoted_table); + free (quoted_column); + } + else + { + /* legacy metadata style <= v.3.1.0 */ + raw = + sqlite3_mprintf ("giu_%s_%s", p_table, + p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + raw = + sqlite3_mprintf ("idx_%s_%s", p_table, + p_column); + quoted_rtree = gaiaDoubleQuotedSql (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + quoted_column = gaiaDoubleQuotedSql (p_column); + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" AFTER UPDATE ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "DELETE FROM \"%s\" WHERE pkid=NEW.ROWID;\n" + "SELECT RTreeAlign(%Q, NEW.ROWID, NEW.\"%s\");\nEND", + quoted_trigger, quoted_table, quoted_rtree, + raw, quoted_column); + sqlite3_free (raw); + free (quoted_trigger); + free (quoted_rtree); + free (quoted_table); + free (quoted_column); + } + ret = + sqlite3_exec (sqlite, sql_statement, NULL, NULL, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + /* inserting the new DELETE trigger RTree */ + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + raw = + sqlite3_mprintf ("gid_%s_%s", p_table, + p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + raw = + sqlite3_mprintf ("idx_%s_%s", p_table, + p_column); + quoted_rtree = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + quoted_column = gaiaDoubleQuotedSql (p_column); + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" AFTER DELETE ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "UPDATE geometry_columns_time SET last_delete = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q);\n" + "DELETE FROM \"%s\" WHERE pkid=OLD.ROWID;\nEND", + quoted_trigger, quoted_table, p_table, + p_column, quoted_rtree); + free (quoted_trigger); + free (quoted_rtree); + free (quoted_table); + free (quoted_column); + } + else + { + /* legacy metadata style <= v.3.1.0 */ + raw = + sqlite3_mprintf ("gid_%s_%s", p_table, + p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + raw = + sqlite3_mprintf ("idx_%s_%s", p_table, + p_column); + quoted_rtree = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + quoted_column = gaiaDoubleQuotedSql (p_column); + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" AFTER DELETE ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "DELETE FROM \"%s\" WHERE pkid=OLD.ROWID;\nEND", + quoted_trigger, quoted_table, quoted_rtree); + free (quoted_trigger); + free (quoted_rtree); + free (quoted_table); + free (quoted_column); + } + ret = + sqlite3_exec (sqlite, sql_statement, NULL, NULL, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + } + + if (cached) + { + /* inserting the new INSERT trigger MBRcache */ + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + raw = + sqlite3_mprintf ("gci_%s_%s", p_table, + p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + raw = + sqlite3_mprintf ("cache_%s_%s", p_table, + p_column); + quoted_rtree = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + quoted_column = gaiaDoubleQuotedSql (p_column); + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" AFTER INSERT ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "UPDATE geometry_columns_time SET last_insert = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q);\n" + "INSERT INTO \"%s\" (rowid, mbr) VALUES (NEW.ROWID,\nBuildMbrFilter(" + "MbrMinX(NEW.\"%s\"), MbrMinY(NEW.\"%s\"), MbrMaxX(NEW.\"%s\"), MbrMaxY(NEW.\"%s\")));\nEND", + quoted_trigger, quoted_table, p_table, + p_column, quoted_rtree, quoted_column, + quoted_column, quoted_column, quoted_column); + free (quoted_trigger); + free (quoted_rtree); + free (quoted_table); + free (quoted_column); + } + else + { + /* legacy metadata style <= v.3.1.0 */ + raw = + sqlite3_mprintf ("gci_%s_%s", p_table, + p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + raw = + sqlite3_mprintf ("cache_%s_%s", p_table, + p_column); + quoted_rtree = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + quoted_column = gaiaDoubleQuotedSql (p_column); + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" AFTER INSERT ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "INSERT INTO \"%s\" (rowid, mbr) VALUES (NEW.ROWID,\nBuildMbrFilter(" + "MbrMinX(NEW.\"%s\"), MbrMinY(NEW.\"%s\"), MbrMaxX(NEW.\"%s\"), MbrMaxY(NEW.\"%s\")));\nEND", + quoted_trigger, quoted_table, quoted_rtree, + quoted_column, quoted_column, quoted_column, + quoted_column); + free (quoted_trigger); + free (quoted_rtree); + free (quoted_table); + free (quoted_column); + } + ret = + sqlite3_exec (sqlite, sql_statement, NULL, NULL, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + /* inserting the new UPDATE trigger MBRcache */ + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + raw = + sqlite3_mprintf ("gcu_%s_%s", p_table, + p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + raw = + sqlite3_mprintf ("cache_%s_%s", p_table, + p_column); + quoted_rtree = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + quoted_column = gaiaDoubleQuotedSql (p_column); + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" AFTER UPDATE ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "UPDATE geometry_columns_time SET last_update = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q);\n" + "UPDATE \"%s\" SET mbr = BuildMbrFilter(" + "MbrMinX(NEW.\"%s\"), MbrMinY(NEW.\"%s\"), MbrMaxX(NEW.\"%s\"), MbrMaxY(NEW.\"%s\"))\n" + "WHERE rowid = NEW.ROWID;\nEND", + quoted_trigger, quoted_table, p_table, + p_column, quoted_rtree, + quoted_column, quoted_column, quoted_column, + quoted_column); + free (quoted_trigger); + free (quoted_rtree); + free (quoted_table); + free (quoted_column); + } + else + { + /* legacy metadata style <= v.3.1.0 */ + raw = + sqlite3_mprintf ("gcu_%s_%s", p_table, + p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + raw = + sqlite3_mprintf ("cache_%s_%s", p_table, + p_column); + quoted_rtree = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + quoted_column = gaiaDoubleQuotedSql (p_column); + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" AFTER UPDATE ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "UPDATE \"%s\" SET mbr = BuildMbrFilter(" + "MbrMinX(NEW.\"%s\"), MbrMinY(NEW.\"%s\"), MbrMaxX(NEW.\"%s\"), MbrMaxY(NEW.\"%s\"))\n" + "WHERE rowid = NEW.ROWID;\nEND", + quoted_trigger, quoted_table, quoted_rtree, + quoted_column, quoted_column, quoted_column, + quoted_column); + free (quoted_trigger); + free (quoted_rtree); + free (quoted_table); + free (quoted_column); + } + ret = + sqlite3_exec (sqlite, sql_statement, NULL, NULL, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + /* inserting the new DELETE trigger MBRcache */ + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + raw = + sqlite3_mprintf ("gcd_%s_%s", p_table, + p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + raw = + sqlite3_mprintf ("cache_%s_%s", p_table, + p_column); + quoted_rtree = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" AFTER DELETE ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "UPDATE geometry_columns_time SET last_delete = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')\n" + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q);\n" + "DELETE FROM \"%s\" WHERE rowid = OLD.ROWID;\nEND", + quoted_trigger, quoted_table, p_table, + p_column, quoted_rtree); + free (quoted_trigger); + free (quoted_rtree); + free (quoted_table); + } + else + { + /* legacy metadata style <= v.3.1.0 */ + raw = + sqlite3_mprintf ("gcd_%s_%s", p_table, + p_column); + quoted_trigger = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + raw = + sqlite3_mprintf ("cache_%s_%s", p_table, + p_column); + quoted_rtree = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + quoted_table = gaiaDoubleQuotedSql (p_table); + quoted_column = gaiaDoubleQuotedSql (p_column); + sql_statement = + sqlite3_mprintf + ("CREATE TRIGGER \"%s\" AFTER DELETE ON \"%s\"\n" + "FOR EACH ROW BEGIN\n" + "DELETE FROM \"%s\" WHERE rowid = OLD.ROWID;\nEND", + quoted_trigger, quoted_table, quoted_rtree); + free (quoted_trigger); + free (quoted_rtree); + free (quoted_table); + } + ret = + sqlite3_exec (sqlite, sql_statement, NULL, NULL, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + } + + } + } + ret = sqlite3_finalize (stmt); +/* now we'll adjust any related SpatialIndex as required */ + curr_idx = first_idx; + while (curr_idx) + { + if (curr_idx->ValidRtree) + { + /* building RTree SpatialIndex */ + int status; + raw = sqlite3_mprintf ("idx_%s_%s", curr_idx->TableName, + curr_idx->ColumnName); + quoted_rtree = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("CREATE VIRTUAL TABLE \"%s\" " + "USING rtree(pkid, xmin, xmax, ymin, ymax)", + quoted_rtree); + free (quoted_rtree); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + status = buildSpatialIndexEx (sqlite, + (unsigned char + *) (curr_idx->TableName), + curr_idx->ColumnName); + if (status == 0) + ; + else + { + if (status == -2) + errMsg = + sqlite3_mprintf + ("SpatialIndex error: a physical column named ROWID shadows the real ROWID"); + else + errMsg = + sqlite3_mprintf + ("SpatialIndex error: unable to rebuild the T*Tree"); + goto error; + } + } + if (curr_idx->ValidCache) + { + /* building MbrCache SpatialIndex */ + raw = sqlite3_mprintf ("cache_%s_%s", curr_idx->TableName, + curr_idx->ColumnName); + quoted_rtree = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + quoted_table = gaiaDoubleQuotedSql (curr_idx->TableName); + quoted_column = gaiaDoubleQuotedSql (curr_idx->ColumnName); + sql_statement = sqlite3_mprintf ("CREATE VIRTUAL TABLE \"%s\" " + "USING MbrCache(\"%s\", \"%s\")", + quoted_rtree, quoted_table, + quoted_column); + free (quoted_rtree); + free (quoted_table); + free (quoted_column); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + } + curr_idx = curr_idx->Next; + } + goto index_cleanup; + error: + spatialite_e ("updateTableTriggers: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + index_cleanup: + curr_idx = first_idx; + while (curr_idx) + { + next_idx = curr_idx->Next; + if (curr_idx->TableName) + free (curr_idx->TableName); + if (curr_idx->ColumnName) + free (curr_idx->ColumnName); + free (curr_idx); + curr_idx = next_idx; + } + if (p_table) + free (p_table); + if (p_column) + free (p_column); +} + +SPATIALITE_PRIVATE void +buildSpatialIndex (void *p_sqlite, const unsigned char *table, + const char *column) +{ +/* DEPRECATED - always use buildSpatialIndexEx as a safer replacement */ + buildSpatialIndexEx (p_sqlite, table, column); +} + +SPATIALITE_PRIVATE int +validateRowid (void *p_sqlite, const char *table) +{ +/* check for tables containing a physical column named ROWID */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + int rowid = 0; + char *sql; + int ret; + const char *name; + int i; + char **results; + int rows; + int columns; + char *quoted_table = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", quoted_table); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + free (quoted_table); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "rowid") == 0) + rowid = 1; + } + } + sqlite3_free_table (results); + if (rowid == 0) + return 1; + return 0; +} + +SPATIALITE_PRIVATE int +buildSpatialIndexEx (void *p_sqlite, const unsigned char *table, + const char *column) +{ +/* loading a SpatialIndex [RTree] */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + char *raw; + char *quoted_rtree; + char *quoted_table; + char *quoted_column; + char *sql_statement; + char *errMsg = NULL; + int ret; + + if (!validateRowid (sqlite, (const char *) table)) + { + /* a physical column named "rowid" shadows the real ROWID */ + spatialite_e + ("buildSpatialIndex error: a physical column named ROWID shadows the real ROWID\n"); + return -2; + } + + raw = sqlite3_mprintf ("idx_%s_%s", table, column); + quoted_rtree = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + quoted_table = gaiaDoubleQuotedSql ((const char *) table); + quoted_column = gaiaDoubleQuotedSql (column); + sql_statement = sqlite3_mprintf ("INSERT INTO \"%s\" " + "(pkid, xmin, xmax, ymin, ymax) " + "SELECT ROWID, MbrMinX(\"%s\"), MbrMaxX(\"%s\"), MbrMinY(\"%s\"), MbrMaxY(\"%s\") " + "FROM \"%s\" WHERE MbrMinX(\"%s\") IS NOT NULL", + quoted_rtree, quoted_column, quoted_column, + quoted_column, quoted_column, quoted_table, + quoted_column); + free (quoted_rtree); + free (quoted_table); + free (quoted_column); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("buildSpatialIndex error: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + return -1; + } + return 0; +} + +SPATIALITE_PRIVATE int +getRealSQLnames (void *p_sqlite, const char *table, const char *column, + char **real_table, char **real_column) +{ +/* attempting to retrieve the "real" table and column names (upper/lowercase) */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + char *p_table = NULL; + char *p_column = NULL; + char *sql_statement; + char *quoted; + const char *name; + int len; + sqlite3_stmt *stmt; + int ret; + + sql_statement = sqlite3_mprintf ("SELECT name " + "FROM sqlite_master WHERE type = 'table' " + "AND Lower(name) = Lower(?)"); +/* compiling SQL prepared statement */ + ret = + sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("real_names: error %d \"%s\"\n", + sqlite3_errcode (sqlite), sqlite3_errmsg (sqlite)); + return 0; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + name = (const char *) sqlite3_column_text (stmt, 0); + len = sqlite3_column_bytes (stmt, 0); + if (p_table) + free (p_table); + p_table = malloc (len + 1); + strcpy (p_table, name); + } + } + sqlite3_finalize (stmt); + + if (p_table == NULL) + return 0; + + quoted = gaiaDoubleQuotedSql (p_table); + sql_statement = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", quoted); + free (quoted); +/* compiling SQL prepared statement */ + ret = + sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("real_names: error %d \"%s\"\n", + sqlite3_errcode (sqlite), sqlite3_errmsg (sqlite)); + free (p_table); + return 0; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + name = (const char *) sqlite3_column_text (stmt, 1); + len = sqlite3_column_bytes (stmt, 1); + if (strcasecmp (name, column) == 0) + { + if (p_column) + free (p_column); + p_column = malloc (len + 1); + strcpy (p_column, name); + } + } + } + sqlite3_finalize (stmt); + + if (p_column == NULL) + { + free (p_table); + return 0; + } + + *real_table = p_table; + *real_column = p_column; + return 1; +} + +SPATIALITE_PRIVATE void +addLayerAttributeField (void *x_list, const char *table_name, + const char *geometry_column, int ordinal, + const char *column_name, int null_values, + int integer_values, int double_values, int text_values, + int blob_values, int null_max_size, int max_size, + int null_int_range, void *x_integer_min, + void *x_integer_max, int null_double_range, + double double_min, double double_max) +{ +/* adding some AttributeFiled to a VectorLayer */ + gaiaVectorLayersListPtr list = (gaiaVectorLayersListPtr) x_list; + sqlite3_int64 integer_min = *((sqlite3_int64 *) x_integer_min); + sqlite3_int64 integer_max = *((sqlite3_int64 *) x_integer_max); + gaiaLayerAttributeFieldPtr fld; + int len; + gaiaVectorLayerPtr lyr = list->Current; + if (lyr) + { + if (strcasecmp (lyr->TableName, table_name) == 0 + && strcasecmp (lyr->GeometryName, geometry_column) == 0) + goto valid_pointer; + } + list->Current = NULL; + lyr = list->First; + while (lyr) + { + if (strcasecmp (lyr->TableName, table_name) == 0 + && strcasecmp (lyr->GeometryName, geometry_column) == 0) + { + list->Current = lyr; + goto valid_pointer; + } + lyr = lyr->Next; + } + valid_pointer: + lyr = list->Current; + if (lyr == NULL) + return; + fld = malloc (sizeof (gaiaLayerAttributeField)); + fld->Ordinal = ordinal; + len = strlen (column_name); + fld->AttributeFieldName = malloc (len + 1); + strcpy (fld->AttributeFieldName, column_name); + fld->NullValuesCount = null_values; + fld->IntegerValuesCount = integer_values; + fld->DoubleValuesCount = double_values; + fld->TextValuesCount = text_values; + fld->BlobValuesCount = blob_values; + fld->MaxSize = NULL; + fld->IntRange = NULL; + fld->DoubleRange = NULL; + if (!null_max_size) + { + fld->MaxSize = malloc (sizeof (gaiaAttributeFieldMaxSize)); + fld->MaxSize->MaxSize = max_size; + } + if (!null_int_range) + { + fld->IntRange = malloc (sizeof (gaiaAttributeFieldIntRange)); + fld->IntRange->MinValue = integer_min; + fld->IntRange->MaxValue = integer_max; + } + if (!null_double_range) + { + fld->DoubleRange = malloc (sizeof (gaiaAttributeFieldDoubleRange)); + fld->DoubleRange->MinValue = double_min; + fld->DoubleRange->MaxValue = double_max; + } + fld->Next = NULL; + if (lyr->First == NULL) + lyr->First = fld; + if (lyr->Last != NULL) + lyr->Last->Next = fld; + lyr->Last = fld; +} + +SPATIALITE_PRIVATE void +addVectorLayer (void *x_list, const char *layer_type, + const char *table_name, const char *geometry_column, + int geometry_type, int srid, int spatial_index) +{ +/* adding a Layer to a VectorLayersList */ + gaiaVectorLayersListPtr list = (gaiaVectorLayersListPtr) x_list; + int len; + gaiaVectorLayerPtr lyr = malloc (sizeof (gaiaVectorLayer)); + lyr->LayerType = GAIA_VECTOR_UNKNOWN; + if (strcasecmp (layer_type, "SpatialTable") == 0) + lyr->LayerType = GAIA_VECTOR_TABLE; + if (strcasecmp (layer_type, "SpatialView") == 0) + lyr->LayerType = GAIA_VECTOR_VIEW; + if (strcasecmp (layer_type, "VirtualShape") == 0) + lyr->LayerType = GAIA_VECTOR_VIRTUAL; + len = strlen (table_name); + lyr->TableName = malloc (len + 1); + strcpy (lyr->TableName, table_name); + len = strlen (geometry_column); + lyr->GeometryName = malloc (len + 1); + strcpy (lyr->GeometryName, geometry_column); + lyr->Srid = srid; + switch (geometry_type) + { + case 0: + lyr->GeometryType = GAIA_VECTOR_GEOMETRY; + lyr->Dimensions = GAIA_XY; + break; + case 1000: + lyr->GeometryType = GAIA_VECTOR_GEOMETRY; + lyr->Dimensions = GAIA_XY_Z; + break; + case 2000: + lyr->GeometryType = GAIA_VECTOR_GEOMETRY; + lyr->Dimensions = GAIA_XY_M; + break; + case 3000: + lyr->GeometryType = GAIA_VECTOR_GEOMETRY; + lyr->Dimensions = GAIA_XY_Z_M; + break; + case 1: + lyr->GeometryType = GAIA_VECTOR_POINT; + lyr->Dimensions = GAIA_XY; + break; + case 1001: + lyr->GeometryType = GAIA_VECTOR_POINT; + lyr->Dimensions = GAIA_XY_Z; + break; + case 2001: + lyr->GeometryType = GAIA_VECTOR_POINT; + lyr->Dimensions = GAIA_XY_M; + break; + case 3001: + lyr->GeometryType = GAIA_VECTOR_POINT; + lyr->Dimensions = GAIA_XY_Z_M; + break; + case 2: + lyr->GeometryType = GAIA_VECTOR_LINESTRING; + lyr->Dimensions = GAIA_XY; + break; + case 1002: + lyr->GeometryType = GAIA_VECTOR_LINESTRING; + lyr->Dimensions = GAIA_XY_Z; + break; + case 2002: + lyr->GeometryType = GAIA_VECTOR_LINESTRING; + lyr->Dimensions = GAIA_XY_M; + break; + case 3002: + lyr->GeometryType = GAIA_VECTOR_LINESTRING; + lyr->Dimensions = GAIA_XY_Z_M; + break; + case 3: + lyr->GeometryType = GAIA_VECTOR_POLYGON; + lyr->Dimensions = GAIA_XY; + break; + case 1003: + lyr->GeometryType = GAIA_VECTOR_POLYGON; + lyr->Dimensions = GAIA_XY_Z; + break; + case 2003: + lyr->GeometryType = GAIA_VECTOR_POLYGON; + lyr->Dimensions = GAIA_XY_M; + break; + case 3003: + lyr->GeometryType = GAIA_VECTOR_POLYGON; + lyr->Dimensions = GAIA_XY_Z_M; + break; + case 4: + lyr->GeometryType = GAIA_VECTOR_MULTIPOINT; + lyr->Dimensions = GAIA_XY; + break; + case 1004: + lyr->GeometryType = GAIA_VECTOR_MULTIPOINT; + lyr->Dimensions = GAIA_XY_Z; + break; + case 2004: + lyr->GeometryType = GAIA_VECTOR_MULTIPOINT; + lyr->Dimensions = GAIA_XY_M; + break; + case 3004: + lyr->GeometryType = GAIA_VECTOR_MULTIPOINT; + lyr->Dimensions = GAIA_XY_Z_M; + break; + case 5: + lyr->GeometryType = GAIA_VECTOR_MULTILINESTRING; + lyr->Dimensions = GAIA_XY; + break; + case 1005: + lyr->GeometryType = GAIA_VECTOR_MULTILINESTRING; + lyr->Dimensions = GAIA_XY_Z; + break; + case 2005: + lyr->GeometryType = GAIA_VECTOR_MULTILINESTRING; + lyr->Dimensions = GAIA_XY_M; + break; + case 3005: + lyr->GeometryType = GAIA_VECTOR_MULTILINESTRING; + lyr->Dimensions = GAIA_XY_Z_M; + break; + case 6: + lyr->GeometryType = GAIA_VECTOR_MULTIPOLYGON; + lyr->Dimensions = GAIA_XY; + break; + case 1006: + lyr->GeometryType = GAIA_VECTOR_MULTIPOLYGON; + lyr->Dimensions = GAIA_XY_Z; + break; + case 2006: + lyr->GeometryType = GAIA_VECTOR_MULTIPOLYGON; + lyr->Dimensions = GAIA_XY_M; + break; + case 3006: + lyr->GeometryType = GAIA_VECTOR_MULTIPOLYGON; + lyr->Dimensions = GAIA_XY_Z_M; + break; + case 7: + lyr->GeometryType = GAIA_VECTOR_GEOMETRYCOLLECTION; + lyr->Dimensions = GAIA_XY; + break; + case 1007: + lyr->GeometryType = GAIA_VECTOR_GEOMETRYCOLLECTION; + lyr->Dimensions = GAIA_XY_Z; + break; + case 2007: + lyr->GeometryType = GAIA_VECTOR_GEOMETRYCOLLECTION; + lyr->Dimensions = GAIA_XY_M; + break; + case 3007: + lyr->GeometryType = GAIA_VECTOR_GEOMETRYCOLLECTION; + lyr->Dimensions = GAIA_XY_Z_M; + break; + default: + lyr->GeometryType = GAIA_VECTOR_UNKNOWN; + lyr->Dimensions = GAIA_VECTOR_UNKNOWN; + break; + }; + switch (spatial_index) + { + case 0: + lyr->SpatialIndex = GAIA_SPATIAL_INDEX_NONE; + break; + case 1: + lyr->SpatialIndex = GAIA_SPATIAL_INDEX_RTREE; + break; + case 2: + lyr->SpatialIndex = GAIA_SPATIAL_INDEX_MBRCACHE; + break; + default: + lyr->SpatialIndex = GAIA_VECTOR_UNKNOWN; + break; + }; + lyr->ExtentInfos = NULL; + lyr->AuthInfos = NULL; + lyr->First = NULL; + lyr->Last = NULL; + lyr->Next = NULL; + list->Current = NULL; + if (list->First == NULL) + list->First = lyr; + if (list->Last != NULL) + list->Last->Next = lyr; + list->Last = lyr; +} + +SPATIALITE_PRIVATE void +addVectorLayerExtent (void *x_list, const char *table_name, + const char *geometry_column, int count, double min_x, + double min_y, double max_x, double max_y) +{ +/* appending a LayerExtent object to the corresponding VectorLayer */ + gaiaVectorLayersListPtr list = (gaiaVectorLayersListPtr) x_list; + gaiaVectorLayerPtr lyr = list->First; + while (lyr) + { + if (strcasecmp (lyr->TableName, table_name) == 0 + && strcasecmp (lyr->GeometryName, geometry_column) == 0) + { + lyr->ExtentInfos = malloc (sizeof (gaiaLayerExtent)); + lyr->ExtentInfos->Count = count; + lyr->ExtentInfos->MinX = min_x; + lyr->ExtentInfos->MinY = min_y; + lyr->ExtentInfos->MaxX = max_x; + lyr->ExtentInfos->MaxY = max_y; + return; + } + lyr = lyr->Next; + } +} + +static void +addVectorLayerAuth (gaiaVectorLayersListPtr list, const char *table_name, + const char *geometry_column, int read_only, int hidden) +{ +/* appending a LayerAuth object to the corresponding VectorLayer */ + gaiaVectorLayerPtr lyr = list->First; + while (lyr) + { + if (strcasecmp (lyr->TableName, table_name) == 0 + && strcasecmp (lyr->GeometryName, geometry_column) == 0) + { + gaiaLayerAuthPtr auth = malloc (sizeof (gaiaLayerAuth)); + lyr->AuthInfos = auth; + auth->IsReadOnly = read_only; + auth->IsHidden = hidden; + return; + } + lyr = lyr->Next; + } +} + +static void +freeLayerAttributeField (gaiaLayerAttributeFieldPtr fld) +{ +/* destroying an AttributeField */ + if (fld->AttributeFieldName) + free (fld->AttributeFieldName); + if (fld->MaxSize) + free (fld->MaxSize); + if (fld->IntRange) + free (fld->IntRange); + if (fld->DoubleRange) + free (fld->DoubleRange); + free (fld); +} + +static void +freeVectorLayer (gaiaVectorLayerPtr lyr) +{ +/* destroyng a VectorLayer object */ + gaiaLayerAttributeFieldPtr fld; + gaiaLayerAttributeFieldPtr fldn; + if (!lyr) + return; + if (lyr->TableName) + free (lyr->TableName); + if (lyr->GeometryName) + free (lyr->GeometryName); + if (lyr->ExtentInfos) + free (lyr->ExtentInfos); + if (lyr->AuthInfos) + free (lyr->AuthInfos); + fld = lyr->First; + while (fld) + { + fldn = fld->Next; + freeLayerAttributeField (fld); + fld = fldn; + } + free (lyr); +} + +SPATIALITE_DECLARE void +gaiaFreeVectorLayersList (gaiaVectorLayersListPtr list) +{ +/* destroying a VectorLayersList object */ + gaiaVectorLayerPtr lyr; + gaiaVectorLayerPtr lyr_n; + if (!list) + return; + lyr = list->First; + while (lyr) + { + /* destroying each layer */ + lyr_n = lyr->Next; + freeVectorLayer (lyr); + lyr = lyr_n; + } + free (list); +} + +static int +gaiaGetVectorLayersList_v4 (sqlite3 * handle, const char *table, + const char *geometry, gaiaVectorLayersListPtr list) +{ +/* creating a VectorLayersList object - v.4.0.0 DB layout */ + char *sql; + int ret; + sqlite3_stmt *stmt; + int error = 0; + +/* querying the vector_layers view */ + if (table == NULL) + sql = + sqlite3_mprintf + ("SELECT layer_type, table_name, geometry_column, geometry_type, " + "srid, spatial_index_enabled FROM vector_layers"); + else + { + if (geometry == NULL) + sql = + sqlite3_mprintf + ("SELECT layer_type, table_name, geometry_column, geometry_type, " + "srid, spatial_index_enabled FROM vector_layers " + "WHERE Lower(table_name) = Lower(%Q)", table); + else + sql = + sqlite3_mprintf + ("SELECT layer_type, table_name, geometry_column, geometry_type, " + "srid, spatial_index_enabled FROM vector_layers " + "WHERE Lower(table_name) = Lower(%Q) AND " + "Lower(geometry_column) = Lower(%Q)", table, geometry); + } +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + error = 1; + goto stop; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + const char *layer_type = + (const char *) sqlite3_column_text (stmt, 0); + const char *table_name = + (const char *) sqlite3_column_text (stmt, 1); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 2); + int geometry_type = sqlite3_column_int (stmt, 3); + int srid = sqlite3_column_int (stmt, 4); + int spatial_index = sqlite3_column_int (stmt, 5); + addVectorLayer (list, layer_type, table_name, geometry_column, + geometry_type, srid, spatial_index); + } + else + error = 1; + } + ret = sqlite3_finalize (stmt); + + stop: + if (error) + return 0; + +/* querying the vector_layers_statistics view */ + if (table == NULL) + sql = + sqlite3_mprintf + ("SELECT table_name, geometry_column, row_count, extent_min_x, " + "extent_min_y, extent_max_x, extent_max_y FROM vector_layers_statistics"); + else + { + if (geometry == NULL) + sql = + sqlite3_mprintf + ("SELECT table_name, geometry_column, row_count, extent_min_x, " + "extent_min_y, extent_max_x, extent_max_y FROM vector_layers_statistics " + "WHERE Lower(table_name) = Lower(%Q)", table); + else + sql = + sqlite3_mprintf + ("SELECT table_name, geometry_column, row_count, extent_min_x, " + "extent_min_y, extent_max_x, extent_max_y FROM vector_layers_statistics " + "WHERE Lower(table_name) = Lower(%Q) AND " + "Lower(geometry_column) = Lower(%Q)", table, geometry); + } +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + error = 1; + goto stop2; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + int is_null = 0; + const char *table_name = + (const char *) sqlite3_column_text (stmt, 0); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 1); + int count; + double min_x; + double min_y; + double max_x; + double max_y; + if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) + is_null = 1; + else + count = sqlite3_column_int (stmt, 2); + if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) + is_null = 1; + else + min_x = sqlite3_column_double (stmt, 3); + if (sqlite3_column_type (stmt, 4) == SQLITE_NULL) + is_null = 1; + else + min_y = sqlite3_column_double (stmt, 4); + if (sqlite3_column_type (stmt, 5) == SQLITE_NULL) + is_null = 1; + else + max_x = sqlite3_column_double (stmt, 5); + if (sqlite3_column_type (stmt, 6) == SQLITE_NULL) + is_null = 1; + else + max_y = sqlite3_column_double (stmt, 6); + if (!is_null) + addVectorLayerExtent (list, table_name, geometry_column, + count, min_x, min_y, max_x, max_y); + } + } + ret = sqlite3_finalize (stmt); + + stop2: +/* querying the vector_layers_auth view */ + if (table == NULL) + sql = + sqlite3_mprintf + ("SELECT table_name, geometry_column, read_only, hidden " + "FROM vector_layers_auth"); + else + { + if (geometry == NULL) + sql = + sqlite3_mprintf + ("SELECT table_name, geometry_column, read_only, hidden " + "FROM vector_layers_auth WHERE Lower(table_name) = Lower(%Q)", + table, geometry); + else + sql = + sqlite3_mprintf + ("SELECT table_name, geometry_column, read_only, hidden " + "FROM vector_layers_auth " + "WHERE Lower(table_name) = Lower(%Q) AND " + "Lower(geometry_column) = Lower(%Q)", table, geometry); + } +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + error = 1; + goto stop3; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + int is_null = 0; + const char *table_name = + (const char *) sqlite3_column_text (stmt, 0); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 1); + int read_only; + int hidden; + if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) + is_null = 1; + else + read_only = sqlite3_column_int (stmt, 2); + if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) + is_null = 1; + else + hidden = sqlite3_column_int (stmt, 3); + if (!is_null) + addVectorLayerAuth (list, table_name, geometry_column, + read_only, hidden); + } + } + ret = sqlite3_finalize (stmt); + + stop3: +/* querying the vector_layers_field_infos view */ + if (table == NULL) + { + /* if no "table" is set, we'll never return AttributeField Infos */ + goto stop4; + } + else + { + if (geometry == NULL) + sql = + sqlite3_mprintf + ("SELECT table_name, geometry_column, ordinal, column_name, " + "null_values, integer_values, double_values, text_values, blob_values," + "max_size, integer_min, integer_max, double_min, double_max " + "FROM vector_layers_field_infos WHERE Lower(table_name) = Lower(%Q)", + table, geometry); + else + sql = + sqlite3_mprintf + ("SELECT table_name, geometry_column, ordinal, column_name, " + "null_values, integer_values, double_values, text_values, blob_values," + "max_size, integer_min, integer_max, double_min, double_max " + "FROM vector_layers_field_infos " + "WHERE Lower(table_name) = Lower(%Q) AND " + "Lower(geometry_column) = Lower(%Q)", table, geometry); + } +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + error = 1; + goto stop4; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + int null_max_size = 0; + int null_int_range = 0; + int null_double_range = 0; + int max_size; + sqlite3_int64 integer_min; + sqlite3_int64 integer_max; + double double_min; + double double_max; + const char *table_name = + (const char *) sqlite3_column_text (stmt, 0); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 1); + int ordinal = sqlite3_column_int (stmt, 2); + const char *column_name = + (const char *) sqlite3_column_text (stmt, 3); + int null_values = sqlite3_column_int (stmt, 4); + int integer_values = sqlite3_column_int (stmt, 5); + int double_values = sqlite3_column_int (stmt, 6); + int text_values = sqlite3_column_int (stmt, 7); + int blob_values = sqlite3_column_int (stmt, 8); + if (sqlite3_column_type (stmt, 9) == SQLITE_NULL) + null_max_size = 1; + else + max_size = sqlite3_column_int (stmt, 9); + if (sqlite3_column_type (stmt, 10) == SQLITE_NULL + || sqlite3_column_type (stmt, 11) == SQLITE_NULL) + null_int_range = 1; + else + { + integer_min = sqlite3_column_int64 (stmt, 10); + integer_max = sqlite3_column_int64 (stmt, 11); + } + if (sqlite3_column_type (stmt, 12) == SQLITE_NULL + || sqlite3_column_type (stmt, 13) == SQLITE_NULL) + null_double_range = 1; + else + { + double_min = sqlite3_column_double (stmt, 12); + double_max = sqlite3_column_double (stmt, 13); + } + addLayerAttributeField (list, table_name, geometry_column, + ordinal, column_name, null_values, + integer_values, double_values, + text_values, blob_values, null_max_size, + max_size, null_int_range, &integer_min, + &integer_max, null_double_range, + double_min, double_max); + } + } + ret = sqlite3_finalize (stmt); + + stop4: + if (error) + return 0; + return 1; +} + +static int +get_table_layers_legacy (sqlite3 * handle, const char *table, + const char *geometry, gaiaVectorLayersListPtr list) +{ +/* fetching Table-based geometries */ + int ret; + char *sql; + const char *name; + int i; + char **results; + int rows; + int columns; + int f_table = 0; + int f_geometry = 0; + int type = 0; + int dims = 0; + int srid = 0; + int spatial_index = 0; + sqlite3_stmt *stmt; + int error = 0; + +/* checking the GEOMETRY_COLUMN table */ + sql = "PRAGMA table_info(geometry_columns)"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "f_table_name") == 0) + f_table = 1; + if (strcasecmp (name, "f_geometry_column") == 0) + f_geometry = 1; + if (strcasecmp (name, "type") == 0) + type = 1; + if (strcasecmp (name, "coord_dimension") == 0) + dims = 1; + if (strcasecmp (name, "srid") == 0) + srid = 1; + if (strcasecmp (name, "spatial_index_enabled") == 0) + spatial_index = 1; + } + } + sqlite3_free_table (results); + if (f_table && f_geometry && type && dims && srid && spatial_index) + ; + else + return 1; + + if (table == NULL) + sql = + sqlite3_mprintf + ("SELECT f_table_name, f_geometry_column, type, coord_dimension, " + "srid, spatial_index_enabled FROM geometry_columns"); + else + { + if (geometry == NULL) + sql = + sqlite3_mprintf + ("SELECT f_table_name, f_geometry_column, type, coord_dimension, " + "srid, spatial_index_enabled FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q)", table); + else + sql = + sqlite3_mprintf + ("SELECT f_table_name, f_geometry_column, type, coord_dimension, " + "srid, spatial_index_enabled FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", table, geometry); + } +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + error = 1; + goto stop; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + const char *table_name = + (const char *) sqlite3_column_text (stmt, 0); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 1); + const char *type = (const char *) sqlite3_column_text (stmt, 2); + const char *dims = (const char *) sqlite3_column_text (stmt, 3); + int srid = sqlite3_column_int (stmt, 4); + int spatial_index = sqlite3_column_int (stmt, 5); + int geometry_type = -1; + if (strcasecmp (type, "POINT") == 0) + geometry_type = 1; + if (strcasecmp (type, "LINESTRING") == 0) + geometry_type = 2; + if (strcasecmp (type, "POLYGON") == 0) + geometry_type = 3; + if (strcasecmp (type, "MULTIPOINT") == 0) + geometry_type = 4; + if (strcasecmp (type, "MULTILINESTRING") == 0) + geometry_type = 5; + if (strcasecmp (type, "MULTIPOLYGON") == 0) + geometry_type = 6; + if (strcasecmp (type, "GEOMETRYCOLLECTION") == 0) + geometry_type = 7; + if (strcasecmp (type, "GEOMETRY") == 0) + geometry_type = 0; + if (strcasecmp (dims, "XYZ") == 0 + || strcasecmp (dims, "3") == 0) + geometry_type += 1000; + if (strcasecmp (dims, "XYM") == 0) + geometry_type += 2000; + if (strcasecmp (dims, "XYZM") == 0 + || strcasecmp (dims, "4") == 0) + geometry_type += 3000; + addVectorLayer (list, "SpatialTable", table_name, + geometry_column, geometry_type, srid, + spatial_index); + } + else + error = 1; + } + ret = sqlite3_finalize (stmt); + + stop: + if (error) + return 0; + return 1; +} + +static int +get_view_layers_legacy (sqlite3 * handle, const char *table, + const char *geometry, gaiaVectorLayersListPtr list) +{ +/* fetching View-based geometries */ + int ret; + char *sql; + const char *name; + int i; + char **results; + int rows; + int columns; + int f_table = 0; + int f_geometry = 0; + int type = 0; + int dims = 0; + int srid = 0; + int spatial_index = 0; + int view_name = 0; + int view_geometry = 0; + int fvw_table = 0; + int fvw_geometry = 0; + sqlite3_stmt *stmt; + int error = 0; + +/* checking the GEOMETRY_COLUMN table */ + sql = "PRAGMA table_info(geometry_columns)"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "f_table_name") == 0) + f_table = 1; + if (strcasecmp (name, "f_geometry_column") == 0) + f_geometry = 1; + if (strcasecmp (name, "type") == 0) + type = 1; + if (strcasecmp (name, "coord_dimension") == 0) + dims = 1; + if (strcasecmp (name, "srid") == 0) + srid = 1; + if (strcasecmp (name, "spatial_index_enabled") == 0) + spatial_index = 1; + } + } + sqlite3_free_table (results); + if (f_table && f_geometry && type && dims && srid && spatial_index) + ; + else + return 1; + +/* checking the VIEWS_GEOMETRY_COLUMN table */ + sql = "PRAGMA table_info(views_geometry_columns)"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "view_name") == 0) + view_name = 1; + if (strcasecmp (name, "view_geometry") == 0) + view_geometry = 1; + if (strcasecmp (name, "f_table_name") == 0) + fvw_table = 1; + if (strcasecmp (name, "f_geometry_column") == 0) + fvw_geometry = 1; + } + } + sqlite3_free_table (results); + if (view_name && view_geometry && fvw_table && fvw_geometry) + ; + else + return 1; + + if (table == NULL) + sql = + sqlite3_mprintf + ("SELECT a.view_name, a.view_geometry, b.type, b.coord_dimension, " + "b.srid, b.spatial_index_enabled FROM views_geometry_columns AS a " + "JOIN geometry_columns AS b ON (Lower(a.f_table_name) = Lower(b.f_table_name) " + "AND Lower(a.f_geometry_column) = Lower(b.f_geometry_column))"); + else + { + if (geometry == NULL) + sql = + sqlite3_mprintf + ("SELECT a.view_name, a.view_geometry, b.type, b.coord_dimension, " + "b.srid, b.spatial_index_enabled FROM views_geometry_columns AS a " + "JOIN geometry_columns AS b ON (Lower(a.f_table_name) = Lower(b.f_table_name) " + "AND Lower(a.f_geometry_column) = Lower(b.f_geometry_column)) " + "WHERE Lower(a.view_name) = Lower(%Q)", table); + else + sql = + sqlite3_mprintf + ("SELECT a.view_name, a.view_geometry, b.type, b.coord_dimension, " + "b.srid, b.spatial_index_enabled FROM views_geometry_columns AS a " + "JOIN geometry_columns AS b ON (Lower(a.f_table_name) = Lower(b.f_table_name) " + "AND Lower(a.f_geometry_column) = Lower(b.f_geometry_column)) " + "WHERE Lower(a.view_name) = Lower(%Q) AND " + "Lower(a.view_geometry) = Lower(%Q)", table, geometry); + } +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + error = 1; + goto stop; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + const char *table_name = + (const char *) sqlite3_column_text (stmt, 0); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 1); + const char *type = (const char *) sqlite3_column_text (stmt, 2); + const char *dims = (const char *) sqlite3_column_text (stmt, 3); + int srid = sqlite3_column_int (stmt, 4); + int spatial_index = sqlite3_column_int (stmt, 5); + int geometry_type = -1; + if (strcasecmp (type, "POINT") == 0) + geometry_type = 1; + if (strcasecmp (type, "LINESTRING") == 0) + geometry_type = 2; + if (strcasecmp (type, "POLYGON") == 0) + geometry_type = 3; + if (strcasecmp (type, "MULTIPOINT") == 0) + geometry_type = 4; + if (strcasecmp (type, "MULTILINESTRING") == 0) + geometry_type = 5; + if (strcasecmp (type, "MULTIPOLYGON") == 0) + geometry_type = 6; + if (strcasecmp (type, "GEOMETRYCOLLECTION") == 0) + geometry_type = 7; + if (strcasecmp (type, "GEOMETRY") == 0) + geometry_type = 0; + if (strcasecmp (dims, "XYZ") == 0 + || strcasecmp (dims, "3") == 0) + geometry_type += 1000; + if (strcasecmp (dims, "XYM") == 0) + geometry_type += 2000; + if (strcasecmp (dims, "XYZM") == 0 + || strcasecmp (dims, "4") == 0) + geometry_type += 3000; + addVectorLayer (list, "SpatialView", table_name, + geometry_column, geometry_type, srid, + spatial_index); + } + else + error = 1; + } + ret = sqlite3_finalize (stmt); + + stop: + if (error) + return 0; + return 1; +} + +static int +get_table_extent_legacy (sqlite3 * handle, const char *table, + const char *geometry, gaiaVectorLayersListPtr list) +{ +/* fetching Table-based extents */ + int ret; + char *sql; + const char *name; + int i; + char **results; + int rows; + int columns; + int f_table = 0; + int f_geometry = 0; + int count = 0; + int minx = 0; + int miny = 0; + int maxx = 0; + int maxy = 0; + sqlite3_stmt *stmt; + +/* checking the LAYER_STATISTICS table */ + sql = "PRAGMA table_info(layer_statistics)"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "table_name") == 0) + f_table = 1; + if (strcasecmp (name, "geometry_column") == 0) + f_geometry = 1; + if (strcasecmp (name, "row_count") == 0) + count = 1; + if (strcasecmp (name, "extent_min_x") == 0) + minx = 1; + if (strcasecmp (name, "extent_min_y") == 0) + miny = 1; + if (strcasecmp (name, "extent_max_x") == 0) + maxx = 1; + if (strcasecmp (name, "extent_max_y") == 0) + maxy = 1; + } + } + sqlite3_free_table (results); + if (f_table && f_geometry && count && minx && miny && maxx && maxy) + ; + else + return 1; + +/* querying the layer_statistics table */ + if (table == NULL) + sql = + sqlite3_mprintf + ("SELECT table_name, geometry_column, row_count, extent_min_x, " + "extent_min_y, extent_max_x, extent_max_y FROM layer_statistics"); + else + { + if (geometry == NULL) + sql = + sqlite3_mprintf + ("SELECT table_name, geometry_column, row_count, extent_min_x, " + "extent_min_y, extent_max_x, extent_max_y FROM layer_statistics " + "WHERE Lower(table_name) = Lower(%Q)", table); + else + sql = + sqlite3_mprintf + ("SELECT table_name, geometry_column, row_count, extent_min_x, " + "extent_min_y, extent_max_x, extent_max_y FROM layer_statistics " + "WHERE Lower(table_name) = Lower(%Q) AND " + "Lower(geometry_column) = Lower(%Q)", table, geometry); + } +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + int is_null = 0; + const char *table_name = + (const char *) sqlite3_column_text (stmt, 0); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 1); + int count; + double min_x; + double min_y; + double max_x; + double max_y; + if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) + is_null = 1; + else + count = sqlite3_column_int (stmt, 2); + if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) + is_null = 1; + else + min_x = sqlite3_column_double (stmt, 3); + if (sqlite3_column_type (stmt, 4) == SQLITE_NULL) + is_null = 1; + else + min_y = sqlite3_column_double (stmt, 4); + if (sqlite3_column_type (stmt, 5) == SQLITE_NULL) + is_null = 1; + else + max_x = sqlite3_column_double (stmt, 5); + if (sqlite3_column_type (stmt, 6) == SQLITE_NULL) + is_null = 1; + else + max_y = sqlite3_column_double (stmt, 6); + if (!is_null) + addVectorLayerExtent (list, table_name, geometry_column, + count, min_x, min_y, max_x, max_y); + } + } + ret = sqlite3_finalize (stmt); + stop: + return 1; +} + +static int +get_view_extent_legacy (sqlite3 * handle, const char *table, + const char *geometry, gaiaVectorLayersListPtr list) +{ +/* fetching View-based extents */ + int ret; + char *sql; + const char *name; + int i; + char **results; + int rows; + int columns; + int f_table = 0; + int f_geometry = 0; + int count = 0; + int minx = 0; + int miny = 0; + int maxx = 0; + int maxy = 0; + sqlite3_stmt *stmt; + +/* checking the VIEWS_LAYER_STATISTICS table */ + sql = "PRAGMA table_info(views_layer_statistics)"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "view_name") == 0) + f_table = 1; + if (strcasecmp (name, "view_geometry") == 0) + f_geometry = 1; + if (strcasecmp (name, "row_count") == 0) + count = 1; + if (strcasecmp (name, "extent_min_x") == 0) + minx = 1; + if (strcasecmp (name, "extent_min_y") == 0) + miny = 1; + if (strcasecmp (name, "extent_max_x") == 0) + maxx = 1; + if (strcasecmp (name, "extent_max_y") == 0) + maxy = 1; + } + } + sqlite3_free_table (results); + if (f_table && f_geometry && count && minx && miny && maxx && maxy) + ; + else + return 1; + +/* querying the views_layer_statistics table */ + if (table == NULL) + sql = + sqlite3_mprintf + ("SELECT view_name, view_geometry, row_count, extent_min_x, " + "extent_min_y, extent_max_x, extent_max_y FROM views_layer_statistics"); + else + { + if (geometry == NULL) + sql = + sqlite3_mprintf + ("SELECT view_name, view_geometry, row_count, extent_min_x, " + "extent_min_y, extent_max_x, extent_max_y FROM views_layer_statistics " + "WHERE Lower(view_name) = Lower(%Q)", table); + else + sql = + sqlite3_mprintf + ("SELECT view_name, view_geometry, row_count, extent_min_x, " + "extent_min_y, extent_max_x, extent_max_y FROM views_layer_statistics " + "WHERE Lower(view_name) = Lower(%Q) AND " + "Lower(view_geometry) = Lower(%Q)", table, geometry); + } +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + int is_null = 0; + const char *table_name = + (const char *) sqlite3_column_text (stmt, 0); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 1); + int count; + double min_x; + double min_y; + double max_x; + double max_y; + if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) + is_null = 1; + else + count = sqlite3_column_int (stmt, 2); + if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) + is_null = 1; + else + min_x = sqlite3_column_double (stmt, 3); + if (sqlite3_column_type (stmt, 4) == SQLITE_NULL) + is_null = 1; + else + min_y = sqlite3_column_double (stmt, 4); + if (sqlite3_column_type (stmt, 5) == SQLITE_NULL) + is_null = 1; + else + max_x = sqlite3_column_double (stmt, 5); + if (sqlite3_column_type (stmt, 6) == SQLITE_NULL) + is_null = 1; + else + max_y = sqlite3_column_double (stmt, 6); + if (!is_null) + addVectorLayerExtent (list, table_name, geometry_column, + count, min_x, min_y, max_x, max_y); + } + } + ret = sqlite3_finalize (stmt); + stop: + return 1; +} + +static int +get_table_auth_legacy (sqlite3 * handle, const char *table, + const char *geometry, gaiaVectorLayersListPtr list) +{ +/* fetching Table-based Auth */ + int ret; + char *sql; + const char *name; + int i; + char **results; + int rows; + int columns; + int f_table = 0; + int f_geometry = 0; + int read_only = 0; + int hidden = 0; + sqlite3_stmt *stmt; + +/* checking the GEOMETRY_COLUMNS_AUTH table */ + sql = "PRAGMA table_info(geometry_columns_auth)"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "f_table_name") == 0) + f_table = 1; + if (strcasecmp (name, "f_geometry_column") == 0) + f_geometry = 1; + if (strcasecmp (name, "read_only") == 0) + read_only = 1; + if (strcasecmp (name, "hidden") == 0) + hidden = 1; + } + } + sqlite3_free_table (results); + if (f_table && f_geometry && read_only && hidden) + ; + else + return 1; + +/* querying the geometry_columns_auth table */ + if (table == NULL) + sql = + sqlite3_mprintf + ("SELECT f_table_name, f_geometry_column, read_only, hidden " + "FROM geometry_columns_auth"); + else + { + if (geometry == NULL) + sql = + sqlite3_mprintf + ("SELECT f_table_name, f_geometry_column, read_only, hidden " + "FROM geometry_columns_auth " + "WHERE Lower(f_table_name) = Lower(%Q)", table); + else + sql = + sqlite3_mprintf + ("SELECT f_table_name, f_geometry_column, read_only, hidden " + "FROM geometry_columns_auth " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", table, geometry); + } +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto stop; + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* processing a VectorLayer row */ + int is_null = 0; + const char *table_name = + (const char *) sqlite3_column_text (stmt, 0); + const char *geometry_column = + (const char *) sqlite3_column_text (stmt, 1); + int read_only; + int hidden; + if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) + is_null = 1; + else + read_only = sqlite3_column_int (stmt, 2); + if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) + is_null = 1; + else + hidden = sqlite3_column_int (stmt, 3); + if (!is_null) + addVectorLayerAuth (list, table_name, geometry_column, + read_only, hidden); + } + } + ret = sqlite3_finalize (stmt); + stop: + return 1; +} + +static int +compute_table_fields_statistics (sqlite3 * handle, const char *table, + const char *geometry, + gaiaVectorLayersListPtr list) +{ +/* computing field statistics - legacy */ + gaiaVectorLayerPtr lyr; + lyr = list->First; + while (lyr) + { + /* testing if the Table/Geometry is already defined */ + if (geometry == NULL) + { + if (strcasecmp (lyr->TableName, table) == 0) + { + if (!doComputeFieldInfos + (handle, lyr->TableName, lyr->GeometryName, + SPATIALITE_STATISTICS_LEGACY, lyr)) + return 0; + } + } + else + { + if (strcasecmp (lyr->TableName, table) == 0 + && strcasecmp (lyr->GeometryName, geometry) == 0) + { + if (!doComputeFieldInfos + (handle, lyr->TableName, lyr->GeometryName, + SPATIALITE_STATISTICS_LEGACY, lyr)) + return 0; + } + } + lyr = lyr->Next; + } + return 1; +} + +static int +check_v4_statistics (sqlite3 * handle) +{ +/* checking if v.4.0.0 statistics tables are supported */ + char *sql_statement; + int ret; + char **results; + int rows; + int columns; + +/* testing the SQL Query */ + sql_statement = + sqlite3_mprintf ("SELECT g.table_name, g.geometry_column, " + "s.row_count, s.extent_min_x, s.extent_min_y, " + "s.extent_max_x, s.extent_max_y " + "FROM vector_layers AS g " + "LEFT JOIN vector_layers_statistics AS s ON " + "(g.table_name = s.table_name AND " + "g.geometry_column = s.geometry_column) LIMIT 1"); + ret = + sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + sqlite3_free_table (results); + + return 1; +} + +static int +check_v3_statistics (sqlite3 * handle) +{ +/* checking if v.3.0.0 statistics tables are supported */ + char *sql_statement; + int ret; + char **results; + int rows; + int columns; + + if (!check_layer_statistics (handle)) + return 0; +/* testing the SQL Query - Table-based Geometries */ + sql_statement = + sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column, " + "s.row_count, s.extent_min_x, s.extent_min_y, " + "s.extent_max_x, s.extent_max_y " + "FROM geometry_columns AS g " + "LEFT JOIN layer_statistics AS s ON " + "(g.f_table_name = s.table_name AND " + "g.f_geometry_column = s.geometry_column) LIMIT 1"); + ret = + sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + sqlite3_free_table (results); + + if (!check_views_layer_statistics (handle)) + return 0; +/* testing the SQL Query - View-based Geometries */ + sql_statement = + sqlite3_mprintf ("SELECT g.view_name, g.view_geometry, " + "s.row_count, s.extent_min_x, s.extent_min_y, " + "s.extent_max_x, s.extent_max_y " + "FROM views_geometry_columns AS g " + "LEFT JOIN views_layer_statistics AS s ON " + "(g.view_name = s.view_name AND " + "g.view_geometry = s.view_geometry) LIMIT 1"); + ret = + sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + sqlite3_free_table (results); + + if (!check_virts_layer_statistics (handle)) + return 0; +/* testing the SQL Query - VirtualShape-based Geometries */ + sql_statement = + sqlite3_mprintf ("SELECT g.virt_name, g.virt_geometry, " + "s.row_count, s.extent_min_x, s.extent_min_y, " + "s.extent_max_x, s.extent_max_y " + "FROM virts_geometry_columns AS g " + "LEFT JOIN virts_layer_statistics AS s ON " + "(g.virt_name = s.virt_name AND " + "g.virt_geometry = s.virt_geometry) LIMIT 1"); + ret = + sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + sqlite3_free_table (results); + + return 1; +} + +static int +check_v2_statistics (sqlite3 * handle) +{ +/* checking if v.2.0.0 statistics tables are supported */ + char *sql_statement; + int ret; + char **results; + int rows; + int columns; + + if (!check_layer_statistics (handle)) + return 0; +/* testing the SQL Query - Table-based Geometries */ + sql_statement = + sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column, " + "s.row_count, s.extent_min_x, s.extent_min_y, " + "s.extent_max_x, s.extent_max_y " + "FROM geometry_columns AS g " + "LEFT JOIN layer_statistics AS s ON " + "(g.f_table_name = s.table_name AND " + "g.f_geometry_column = s.geometry_column) LIMIT 1"); + ret = + sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + sqlite3_free_table (results); + + return 1; +} + +static int +optimistic_layer_statistics_v4 (sqlite3 * handle, const char *table, + const char *geometry) +{ +/* selective statistics update - v.4.0.0 layout */ + char *sql_statement; + int ret; + const char *f_table_name; + const char *f_geometry_column; + int i; + char **results; + int rows; + int columns; + int error = 0; + + if (table == NULL && geometry == NULL) + { + /* processing any table/geometry found in GEOMETRY_COLUMNS */ + sql_statement = + sqlite3_mprintf ("SELECT g.table_name, g.geometry_column " + "FROM vector_layers AS g " + "LEFT JOIN vector_layers_statistics AS s ON " + "(g.table_name = s.table_name AND " + "g.geometry_column = s.geometry_column) " + "WHERE s.row_count IS NULL OR s.extent_min_x IS NULL " + "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " + "OR s.extent_max_y IS NULL"); + } + else if (geometry == NULL) + { + /* processing any geometry belonging to this table */ + sql_statement = + sqlite3_mprintf ("SELECT g.table_name, g.geometry_column " + "FROM vector_layers AS g " + "LEFT JOIN vector_layers_statistics AS s ON " + "(g.table_name = s.table_name AND " + "g.geometry_column = s.geometry_column) " + "WHERE Lower(g.table_name) = Lower(%Q) AND " + "(s.row_count IS NULL OR s.extent_min_x IS NULL " + "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " + "OR s.extent_max_y IS NULL)", table); + } + else + { + /* processing a single table/geometry entry */ + sql_statement = + sqlite3_mprintf ("SELECT g.table_name, g.geometry_column " + "FROM vector_layers AS g " + "LEFT JOIN vector_layers_statistics AS s ON " + "(g.table_name = s.table_name AND " + "g.geometry_column = s.geometry_column) " + "WHERE Lower(g.table_name) = Lower(%Q) AND " + "Lower(g.geometry_column) = Lower(%Q) AND " + "(s.row_count IS NULL OR s.extent_min_x IS NULL " + "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " + "OR s.extent_max_y IS NULL)", table, geometry); + } + ret = + sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + f_table_name = results[(i * columns) + 0]; + f_geometry_column = results[(i * columns) + 1]; + if (!update_layer_statistics + (handle, f_table_name, f_geometry_column)) + { + error = 1; + break; + } + } + } + sqlite3_free_table (results); + if (error) + return 0; + return 1; +} + +static int +optimistic_layer_statistics_v3 (sqlite3 * handle, const char *table, + const char *geometry) +{ +/* selective statistics update - v.3.0.0 layout */ + char *sql_statement; + int ret; + const char *f_table_name; + const char *f_geometry_column; + int i; + char **results; + int rows; + int columns; + int error = 0; + +/* genuine Table-based Geometries */ + if (table == NULL && geometry == NULL) + { + /* processing any table/geometry found in GEOMETRY_COLUMNS */ + sql_statement = + sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column " + "FROM geometry_columns AS g " + "LEFT JOIN layer_statistics AS s ON " + "(g.f_table_name = s.table_name AND " + "g.f_geometry_column = s.geometry_column) " + "WHERE s.row_count IS NULL OR s.extent_min_x IS NULL " + "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " + "OR s.extent_max_y IS NULL"); + } + else if (geometry == NULL) + { + /* processing any geometry belonging to this table */ + sql_statement = + sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column " + "FROM geometry_columns AS g " + "LEFT JOIN layer_statistics AS s ON " + "(g.f_table_name = s.table_name AND " + "g.f_geometry_column = s.geometry_column) " + "WHERE Lower(g.f_table_name) = Lower(%Q) AND " + "(s.row_count IS NULL OR s.extent_min_x IS NULL " + "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " + "OR s.extent_max_y IS NULL)", table); + } + else + { + /* processing a single table/geometry entry */ + sql_statement = + sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column " + "FROM geometry_columns AS g " + "LEFT JOIN layer_statistics AS s ON " + "(g.f_table_name = s.table_name AND " + "g.f_geometry_column = s.geometry_column) " + "WHERE Lower(g.f_table_name) = Lower(%Q) AND " + "Lower(g.f_geometry_column) = Lower(%Q) AND " + "(s.row_count IS NULL OR s.extent_min_x IS NULL " + "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " + "OR s.extent_max_y IS NULL)", table, geometry); + } + ret = + sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + f_table_name = results[(i * columns) + 0]; + f_geometry_column = results[(i * columns) + 1]; + if (!update_layer_statistics + (handle, f_table_name, f_geometry_column)) + { + error = 1; + break; + } + } + } + sqlite3_free_table (results); + if (error) + return 0; + +/* View Based Geometries */ + if (table == NULL && geometry == NULL) + { + /* processing any table/geometry found in GEOMETRY_COLUMNS */ + sql_statement = + sqlite3_mprintf ("SELECT g.view_name, g.view_geometry " + "FROM views_geometry_columns AS g " + "LEFT JOIN views_layer_statistics AS s ON " + "(g.view_name = s.view_name AND " + "g.view_geometry = s.view_geometry) " + "WHERE s.row_count IS NULL OR s.extent_min_x IS NULL " + "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " + "OR s.extent_max_y IS NULL"); + } + else if (geometry == NULL) + { + /* processing any geometry belonging to this table */ + sql_statement = + sqlite3_mprintf ("SELECT g.view_name, g.view_geometry " + "FROM views_geometry_columns AS g " + "LEFT JOIN views_layer_statistics AS s ON " + "(g.view_name = s.view_name AND " + "g.view_geometry = s.view_geometry) " + "WHERE Lower(g.view_name) = Lower(%Q) AND " + "(s.row_count IS NULL OR s.extent_min_x IS NULL " + "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " + "OR s.extent_max_y IS NULL)", table); + } + else + { + /* processing a single table/geometry entry */ + sql_statement = + sqlite3_mprintf ("SELECT g.view_name, g.view_geometry " + "FROM views_geometry_columns AS g " + "LEFT JOIN views_layer_statistics AS s ON " + "(g.view_name = s.view_name AND " + "g.view_geometry = s.view_geometry) " + "WHERE Lower(g.view_name) = Lower(%Q) AND " + "Lower(g.view_geometry) = Lower(%Q) AND " + "(s.row_count IS NULL OR s.extent_min_x IS NULL " + "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " + "OR s.extent_max_y IS NULL)", table, geometry); + } + ret = + sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + f_table_name = results[(i * columns) + 0]; + f_geometry_column = results[(i * columns) + 1]; + if (!update_layer_statistics + (handle, f_table_name, f_geometry_column)) + { + error = 1; + break; + } + } + } + sqlite3_free_table (results); + if (error) + return 0; + +/* VirtualShape Based Geometries */ + if (table == NULL && geometry == NULL) + { + /* processing any table/geometry found in GEOMETRY_COLUMNS */ + sql_statement = + sqlite3_mprintf ("SELECT g.virt_name, g.virt_geometry " + "FROM virts_geometry_columns AS g " + "LEFT JOIN virts_layer_statistics AS s ON " + "(g.virt_name = s.virt_name AND " + "g.virt_geometry = s.virt_geometry) " + "WHERE s.row_count IS NULL OR s.extent_min_x IS NULL " + "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " + "OR s.extent_max_y IS NULL"); + } + else if (geometry == NULL) + { + /* processing any geometry belonging to this table */ + sql_statement = + sqlite3_mprintf ("SELECT g.virt_name, g.virt_geometry " + "FROM virts_geometry_columns AS g " + "LEFT JOIN virts_layer_statistics AS s ON " + "(g.virt_name = s.virt_name AND " + "g.virt_geometry = s.virt_geometry) " + "WHERE Lower(g.virt_name) = Lower(%Q) AND " + "(s.row_count IS NULL OR s.extent_min_x IS NULL " + "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " + "OR s.extent_max_y IS NULL)", table); + } + else + { + /* processing a single table/geometry entry */ + sql_statement = + sqlite3_mprintf ("SELECT g.virt_name, g.virt_geometry " + "FROM virts_geometry_columns AS g " + "LEFT JOIN virts_layer_statistics AS s ON " + "(g.virt_name = s.virt_name AND " + "g.virt_geometry = s.virt_geometry) " + "WHERE Lower(g.virt_name) = Lower(%Q) AND " + "Lower(g.virt_geometry) = Lower(%Q) AND " + "(s.row_count IS NULL OR s.extent_min_x IS NULL " + "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " + "OR s.extent_max_y IS NULL)", table, geometry); + } + ret = + sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + f_table_name = results[(i * columns) + 0]; + f_geometry_column = results[(i * columns) + 1]; + if (!update_layer_statistics + (handle, f_table_name, f_geometry_column)) + { + error = 1; + break; + } + } + } + sqlite3_free_table (results); + if (error) + return 0; + return 1; +} + +static int +optimistic_layer_statistics_v2 (sqlite3 * handle, const char *table, + const char *geometry) +{ +/* selective statistics update - v.2.0.0 layout */ + char *sql_statement; + int ret; + const char *f_table_name; + const char *f_geometry_column; + int i; + char **results; + int rows; + int columns; + int error = 0; + +/* genuine Table-based Geometries */ + if (table == NULL && geometry == NULL) + { + /* processing any table/geometry found in GEOMETRY_COLUMNS */ + sql_statement = + sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column " + "FROM geometry_columns AS g " + "LEFT JOIN layer_statistics AS s ON " + "(g.f_table_name = s.table_name AND " + "g.f_geometry_column = s.geometry_column) " + "WHERE s.row_count IS NULL OR s.extent_min_x IS NULL " + "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " + "OR s.extent_max_y IS NULL"); + } + else if (geometry == NULL) + { + /* processing any geometry belonging to this table */ + sql_statement = + sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column " + "FROM geometry_columns AS g " + "LEFT JOIN layer_statistics AS s ON " + "(g.f_table_name = s.table_name AND " + "g.f_geometry_column = s.geometry_column) " + "WHERE Lower(g.f_table_name) = Lower(%Q) AND " + "(s.row_count IS NULL OR s.extent_min_x IS NULL " + "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " + "OR s.extent_max_y IS NULL)", table); + } + else + { + /* processing a single table/geometry entry */ + sql_statement = + sqlite3_mprintf ("SELECT g.f_table_name, g.f_geometry_column " + "FROM geometry_columns AS g " + "LEFT JOIN layer_statistics AS s ON " + "(g.f_table_name = s.table_name AND " + "g.f_geometry_column = s.geometry_column) " + "WHERE Lower(g.f_table_name) = Lower(%Q) AND " + "Lower(g.f_geometry_column) = Lower(%Q) AND " + "(s.row_count IS NULL OR s.extent_min_x IS NULL " + "OR s.extent_min_y IS NULL OR s.extent_max_y IS NULL " + "OR s.extent_max_y IS NULL)", table, geometry); + } + ret = + sqlite3_get_table (handle, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + f_table_name = results[(i * columns) + 0]; + f_geometry_column = results[(i * columns) + 1]; + if (!update_layer_statistics + (handle, f_table_name, f_geometry_column)) + { + error = 1; + break; + } + } + } + sqlite3_free_table (results); + if (error) + return 0; + return 1; +} + +static int +optimistic_layer_statistics (sqlite3 * handle, const char *table, + const char *geometry) +{ +/* selective statistics update */ + if (check_v4_statistics (handle)) + return optimistic_layer_statistics_v4 (handle, table, geometry); + else if (check_v3_statistics (handle)) + return optimistic_layer_statistics_v3 (handle, table, geometry); + else if (check_v2_statistics (handle)) + return optimistic_layer_statistics_v2 (handle, table, geometry); + else + return 0; +} + +SPATIALITE_DECLARE gaiaVectorLayersListPtr +gaiaGetVectorLayersList (sqlite3 * handle, const char *table, + const char *geometry, int mode) +{ +/* creating a VectorLayersList object */ + gaiaVectorLayersListPtr list; + int metadata_version; + + if (mode == GAIA_VECTORS_LIST_PESSIMISTIC) + { + /* updating anyway the statistics before querying */ + if (!update_layer_statistics (handle, table, geometry)) + return NULL; + } + if (mode == GAIA_VECTORS_LIST_OPTIMISTIC) + { + /* selectively updating the statistics before querying */ + if (!optimistic_layer_statistics (handle, table, geometry)) + { + /* failure: defaulting to Pessimistic */ + if (!update_layer_statistics (handle, table, geometry)) + return NULL; + } + } + +/* allocating an empty VectorLayersList */ + list = malloc (sizeof (gaiaVectorLayersList)); + list->First = NULL; + list->Last = NULL; + list->Current = NULL; + + metadata_version = checkSpatialMetaData (handle); + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + if (!gaiaGetVectorLayersList_v4 (handle, table, geometry, list)) + { + gaiaFreeVectorLayersList (list); + return NULL; + } + if (list->First == NULL) + { + gaiaFreeVectorLayersList (list); + return NULL; + } + return list; + } + +/* legacy metadata style <= v.3.x.x */ + if (!get_table_layers_legacy (handle, table, geometry, list)) + goto error; + if (!get_view_layers_legacy (handle, table, geometry, list)) + goto error; + if (!get_table_extent_legacy (handle, table, geometry, list)) + goto error; + if (!get_view_extent_legacy (handle, table, geometry, list)) + goto error; + if (!get_table_auth_legacy (handle, table, geometry, list)) + goto error; + if (table != NULL && mode == GAIA_VECTORS_LIST_PESSIMISTIC) + { + if (!compute_table_fields_statistics (handle, table, geometry, list)) + goto error; + } + + if (list->First == NULL) + { + gaiaFreeVectorLayersList (list); + return NULL; + } + return list; + + error: + gaiaFreeVectorLayersList (list); + return NULL; +} + +SPATIALITE_DECLARE gaiaGeomCollPtr +gaiaGetLayerExtent (sqlite3 * handle, const char *table, + const char *geometry, int mode) +{ +/* attempting to get a Layer Full Extent (Envelope) */ + gaiaVectorLayersListPtr list; + gaiaVectorLayerPtr lyr; + double minx = -DBL_MAX; + double miny = -DBL_MAX; + double maxx = DBL_MAX; + double maxy = DBL_MAX; + int srid; + gaiaGeomCollPtr bbox; + gaiaPolygonPtr polyg; + gaiaRingPtr rect; + int md = GAIA_VECTORS_LIST_OPTIMISTIC; + + if (table == NULL) + return NULL; + if (mode) + md = GAIA_VECTORS_LIST_PESSIMISTIC; + + list = gaiaGetVectorLayersList (handle, table, geometry, md); + if (list == NULL) + return NULL; + lyr = list->First; + if (lyr == list->Last && lyr != NULL) + { + srid = lyr->Srid; + if (lyr->ExtentInfos) + { + minx = lyr->ExtentInfos->MinX; + miny = lyr->ExtentInfos->MinY; + maxx = lyr->ExtentInfos->MaxX; + maxy = lyr->ExtentInfos->MaxY; + } + } + gaiaFreeVectorLayersList (list); + + if (minx == -DBL_MIN || miny == -DBL_MAX || maxx == DBL_MAX + || maxy == DBL_MAX) + return NULL; + +/* building the Envelope */ + bbox = gaiaAllocGeomColl (); + bbox->Srid = srid; + polyg = gaiaAddPolygonToGeomColl (bbox, 5, 0); + rect = polyg->Exterior; + gaiaSetPoint (rect->Coords, 0, minx, miny); /* vertex # 1 */ + gaiaSetPoint (rect->Coords, 1, maxx, miny); /* vertex # 2 */ + gaiaSetPoint (rect->Coords, 2, maxx, maxy); /* vertex # 3 */ + gaiaSetPoint (rect->Coords, 3, minx, maxy); /* vertex # 4 */ + gaiaSetPoint (rect->Coords, 4, minx, miny); /* vertex # 5 [same as vertex # 1 to close the polygon] */ + return bbox; +} + +SPATIALITE_DECLARE int +gaiaStatisticsInvalidate (sqlite3 * sqlite, const char *table, + const char *geometry) +{ +/* attempting to immediately and unconditionally invalidate Statistics */ + int metadata_version = checkSpatialMetaData (sqlite); + + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + int ret; + char *errMsg = NULL; + char *sql_statement; + if (table != NULL && geometry != NULL) + sql_statement = + sqlite3_mprintf ("UPDATE geometry_columns_time SET " + "last_insert = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now'), " + "last_update = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now'), " + "last_delete = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now') " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", + table, geometry); + else if (table != NULL) + sql_statement = + sqlite3_mprintf ("UPDATE geometry_columns_time SET " + "last_insert = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now'), " + "last_update = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now'), " + "last_delete = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now') " + "WHERE Lower(f_table_name) = Lower(%Q)", + table); + else + sql_statement = + sqlite3_mprintf ("UPDATE geometry_columns_time SET " + "last_insert = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now'), " + "last_update = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now'), " + "last_delete = strftime('%%Y-%%m-%%dT%%H:%%M:%%fZ', 'now')"); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("SQL error: %s: %s\n", sql_statement, errMsg); + sqlite3_free (errMsg); + return 0; + } + return 1; + } + else + return 0; +} diff --git a/src/spatialite/src/spatialite/spatialite.c b/src/spatialite/src/spatialite/spatialite.c new file mode 100644 index 0000000..ec88f3c --- /dev/null +++ b/src/spatialite/src/spatialite/spatialite.c @@ -0,0 +1,30155 @@ +/* + + spatialite.c -- SQLite3 spatial extension + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Pepijn Van Eeckhoudt +(implementing Android support) + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +/* + +CREDITS: + +this module has been partly funded by: +Regione Toscana - Settore Sistema Informativo Territoriale ed Ambientale +(exposing liblwgeom APIs as SpatiaLite own SQL functions) + +*/ + +#include +#include +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#if defined(_WIN32) || defined(WIN32) +#include +#define isatty _isatty +#else +#include +#endif + + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#ifndef OMIT_GEOS /* including GEOS */ +#include +#endif + +#ifndef OMIT_PROJ /* including PROJ.4 */ +#include +#endif + +#ifdef _WIN32 +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +/* 64 bit integer: portable format for printf() */ +#if defined(_WIN32) && !defined(__MINGW32__) +#define FRMT64 "%I64d" +#define FRMT64_WO_PCT "I64d" +#else +#define FRMT64 "%lld" +#define FRMT64_WO_PCT "lld" +#endif + +#define GAIA_UNUSED() if (argc || argv) argc = argc; + +struct gaia_geom_chain_item +{ +/* a struct used to store a chain item */ + gaiaGeomCollPtr geom; + struct gaia_geom_chain_item *next; +}; + +struct gaia_geom_chain +{ +/* a struct used to store a dynamic chain of GeometryCollections */ + int all_polygs; + struct gaia_geom_chain_item *first; + struct gaia_geom_chain_item *last; +}; + +#ifndef OMIT_GEOCALLBACKS /* supporting RTree geometry callbacks */ +struct gaia_rtree_mbr +{ +/* a struct used by R*Tree GeometryCallback functions [MBR] */ + double minx; + double miny; + double maxx; + double maxy; +}; +#endif /* end RTree geometry callbacks */ + +struct stddev_str +{ +/* a struct to implement StandardVariation and Variance aggregate functions */ + int cleaned; + double mean; + double quot; + double count; +}; + +struct fdo_table +{ +/* a struct to implement a linked-list for FDO-ORG table names */ + char *table; + struct fdo_table *next; +}; + +struct gpkg_table +{ +/* a struct to implement a linked-list for OGC GeoPackage table names */ + char *table; + struct gpkg_table *next; +}; + +static void +fnct_spatialite_version (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ spatialite_version() +/ +/ return a text string representing the current SpatiaLite version +*/ + int len; + const char *p_result = spatialite_version (); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + len = strlen (p_result); + sqlite3_result_text (context, p_result, len, SQLITE_TRANSIENT); +} + +static void +fnct_spatialite_target_cpu (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ spatialite_target_cpu() +/ +/ return a text string representing the current SpatiaLite Target CPU +*/ + int len; + const char *p_result = spatialite_target_cpu (); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + len = strlen (p_result); + sqlite3_result_text (context, p_result, len, SQLITE_TRANSIENT); +} + +static void +fnct_geos_version (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ geos_version() +/ +/ return a text string representing the current GEOS version +/ or NULL if GEOS is currently unsupported +*/ + +#ifndef OMIT_GEOS /* GEOS version */ + int len; + const char *p_result = GEOSversion (); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + len = strlen (p_result); + sqlite3_result_text (context, p_result, len, SQLITE_TRANSIENT); +#else + sqlite3_result_null (context); +#endif +} + +static void +fnct_proj4_version (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ proj4_version() +/ +/ return a text string representing the current PROJ.4 version +/ or NULL if PROJ.4 is currently unsupported +*/ + +#ifndef OMIT_PROJ /* PROJ.4 version */ + int len; + const char *p_result = pj_get_release (); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + len = strlen (p_result); + sqlite3_result_text (context, p_result, len, SQLITE_TRANSIENT); +#else + sqlite3_result_null (context); +#endif +} + +static void +fnct_has_proj (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ HasProj() +/ +/ return 1 if built including Proj.4; otherwise 0 +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ +#ifndef OMIT_PROJ /* PROJ.4 is supported */ + sqlite3_result_int (context, 1); +#else + sqlite3_result_int (context, 0); +#endif +} + +static void +fnct_has_geos (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ HasGeos() +/ +/ return 1 if built including GEOS; otherwise 0 +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ +#ifndef OMIT_GEOS /* GEOS is supported */ + sqlite3_result_int (context, 1); +#else + sqlite3_result_int (context, 0); +#endif +} + +static void +fnct_has_geos_advanced (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ HasGeosAdvanced() +/ +/ return 1 if built including GEOS-ADVANCED; otherwise 0 +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ +#ifdef GEOS_ADVANCED /* GEOS-ADVANCED is supported */ + sqlite3_result_int (context, 1); +#else + sqlite3_result_int (context, 0); +#endif +} + +static void +fnct_has_geos_trunk (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ HasGeosTrunk() +/ +/ return 1 if built including GEOS-TRUNK; otherwise 0 +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ +#ifdef GEOS_TRUNK /* GEOS-TRUNK is supported */ + sqlite3_result_int (context, 1); +#else + sqlite3_result_int (context, 0); +#endif +} + +static void +fnct_lwgeom_version (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ lwgeom_version() +/ +/ return a text string representing the current LWGEOM version +/ or NULL if LWGEOM is currently unsupported +*/ + +#ifdef ENABLE_LWGEOM /* LWGEOM version */ + int len; + const char *p_result = splite_lwgeom_version (); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + len = strlen (p_result); + sqlite3_result_text (context, p_result, len, SQLITE_TRANSIENT); +#else + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + sqlite3_result_null (context); +#endif +} + +static void +fnct_libxml2_version (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ libxml2_version() +/ +/ return a text string representing the current LIBXML2 version +/ or NULL if LIBXML2 is currently unsupported +*/ + +#ifdef ENABLE_LIBXML2 /* LIBXML2 version */ + int len; + const char *p_result = gaia_libxml2_version (); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + len = strlen (p_result); + sqlite3_result_text (context, p_result, len, free); +#else + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + sqlite3_result_null (context); +#endif +} + +static void +fnct_has_lwgeom (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ HasLwGeom() +/ +/ return 1 if built including LWGEOM; otherwise 0 +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ +#ifdef ENABLE_LWGEOM /* LWGEOM is supported */ + sqlite3_result_int (context, 1); +#else + sqlite3_result_int (context, 0); +#endif +} + +static void +fnct_has_iconv (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ HasIconv() +/ +/ return 1 if built including ICONV; otherwise 0 +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ +#ifndef OMIT_ICONV /* ICONV is supported */ + sqlite3_result_int (context, 1); +#else + sqlite3_result_int (context, 0); +#endif +} + +static void +fnct_has_math_sql (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ HasMathSql() +/ +/ return 1 if built including MATHSQL; otherwise 0 +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ +#ifndef OMIT_MATHSQL /* MATHSQL is supported */ + sqlite3_result_int (context, 1); +#else + sqlite3_result_int (context, 0); +#endif +} + +static void +fnct_has_geo_callbacks (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ HasGeoCallbacks() +/ +/ return 1 if built enabling GEOCALLBACKS; otherwise 0 +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ +#ifndef OMIT_GEOCALLBACKS /* GEO-CALLBACKS are supported */ + sqlite3_result_int (context, 1); +#else + sqlite3_result_int (context, 0); +#endif +} + +static void +fnct_has_freeXL (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ HasFreeXL() +/ +/ return 1 if built including FreeXL; otherwise 0 +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ +#ifndef OMIT_FREEXL /* FreeXL is supported */ + sqlite3_result_int (context, 1); +#else + sqlite3_result_int (context, 0); +#endif +} + +static void +fnct_has_epsg (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ HasEpsg() +/ +/ return 1 if built including EPSG; otherwise 0 +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ +#ifndef OMIT_EPSG /* EPSG is supported */ + sqlite3_result_int (context, 1); +#else + sqlite3_result_int (context, 0); +#endif +} + +static void +fnct_has_libxml2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ HasLibXML2() +/ +/ return 1 if built including LIBXML2; otherwise 0 +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ +#ifdef ENABLE_LIBXML2 /* LIBXML2 is supported */ + sqlite3_result_int (context, 1); +#else + sqlite3_result_int (context, 0); +#endif +} + +static void +fnct_has_geopackage (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ HasGeoPackage() +/ +/ return 1 if built including GeoPackage support (GPKG); otherwise 0 +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE is supported */ + sqlite3_result_int (context, 1); +#else + sqlite3_result_int (context, 0); +#endif +} + +static void +fnct_GeometryConstraints (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ GeometryConstraints(BLOBencoded geometry, geometry-type, srid) +/ GeometryConstraints(BLOBencoded geometry, geometry-type, srid, dimensions) +/ +/ checks geometry constraints, returning: +/ +/ -1 - if some error occurred +/ 1 - if geometry constraints validation passes +/ 0 - if geometry constraints validation fails +/ +*/ + int little_endian; + int endian_arch = gaiaEndianArch (); + unsigned char *p_blob = NULL; + int n_bytes = 0; + int srid; + int geom_srid = -1; + const char *type; + int xtype; + int geom_type = -1; + int geom_normalized_type; + const unsigned char *dimensions; + int dims = GAIA_XY; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_BLOB + || sqlite3_value_type (argv[0]) == SQLITE_NULL) + ; + else + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_TEXT) + type = (const char *) sqlite3_value_text (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + /* current metadata style >= v.4.0.0 */ + type = "UNKNOWN"; + switch (sqlite3_value_int (argv[1])) + { + case 0: + type = "GEOMETRY"; + dims = GAIA_XY; + break; + case 1: + type = "POINT"; + dims = GAIA_XY; + break; + case 2: + type = "LINESTRING"; + dims = GAIA_XY; + break; + case 3: + type = "POLYGON"; + dims = GAIA_XY; + break; + case 4: + type = "MULTIPOINT"; + dims = GAIA_XY; + break; + case 5: + type = "MULTILINESTRING"; + dims = GAIA_XY; + break; + case 6: + type = "MULTIPOLYGON"; + dims = GAIA_XY; + break; + case 7: + type = "GEOMETRYCOLLECTION"; + dims = GAIA_XY; + break; + case 1000: + type = "GEOMETRY"; + dims = GAIA_XY_Z; + break; + case 1001: + type = "POINT"; + dims = GAIA_XY_Z; + break; + case 1002: + type = "LINESTRING"; + dims = GAIA_XY_Z; + break; + case 1003: + type = "POLYGON"; + dims = GAIA_XY_Z; + break; + case 1004: + type = "MULTIPOINT"; + dims = GAIA_XY_Z; + break; + case 1005: + type = "MULTILINESTRING"; + dims = GAIA_XY_Z; + break; + case 1006: + type = "MULTIPOLYGON"; + dims = GAIA_XY_Z; + break; + case 1007: + type = "GEOMETRYCOLLECTION"; + dims = GAIA_XY_Z; + break; + case 2000: + type = "GEOMETRY"; + dims = GAIA_XY_M; + break; + case 2001: + type = "POINT"; + dims = GAIA_XY_M; + break; + case 2002: + type = "LINESTRING"; + dims = GAIA_XY_M; + break; + case 2003: + type = "POLYGON"; + dims = GAIA_XY_M; + break; + case 2004: + type = "MULTIPOINT"; + dims = GAIA_XY_M; + break; + case 2005: + type = "MULTILINESTRING"; + dims = GAIA_XY_M; + break; + case 2006: + type = "MULTIPOLYGON"; + dims = GAIA_XY_M; + break; + case 2007: + type = "GEOMETRYCOLLECTION"; + dims = GAIA_XY_M; + break; + case 3000: + type = "GEOMETRY"; + dims = GAIA_XY_Z_M; + break; + case 3001: + type = "POINT"; + dims = GAIA_XY_Z_M; + break; + case 3002: + type = "LINESTRING"; + dims = GAIA_XY_Z_M; + break; + case 3003: + type = "POLYGON"; + dims = GAIA_XY_Z_M; + break; + case 3004: + type = "MULTIPOINT"; + dims = GAIA_XY_Z_M; + break; + case 3005: + type = "MULTILINESTRING"; + dims = GAIA_XY_Z_M; + break; + case 3006: + type = "MULTIPOLYGON"; + dims = GAIA_XY_Z_M; + break; + case 3007: + type = "GEOMETRYCOLLECTION"; + dims = GAIA_XY_Z_M; + break; + }; + } + else + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[2]); + else + { + sqlite3_result_int (context, -1); + return; + } + if (argc == 4) + { + /* explicit dimensions - supporting XYZM */ + dimensions = sqlite3_value_text (argv[3]); + if (strcasecmp ((char *) dimensions, "XYZ") == 0) + dims = GAIA_XY_Z; + else if (strcasecmp ((char *) dimensions, "XYM") == 0) + dims = GAIA_XY_M; + else if (strcasecmp ((char *) dimensions, "XYZM") == 0) + dims = GAIA_XY_Z_M; + else + dims = GAIA_XY; + } + if (sqlite3_value_type (argv[0]) == SQLITE_BLOB) + { + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + } + if (p_blob) + { + /* quick Geometry validation */ + if (n_bytes < 45) + goto illegal_geometry; /* cannot be an internal BLOB WKB geometry */ + if (*(p_blob + 0) != GAIA_MARK_START) + goto illegal_geometry; /* failed to recognize START signature */ + if (*(p_blob + (n_bytes - 1)) != GAIA_MARK_END) + goto illegal_geometry; /* failed to recognize END signature */ + if (*(p_blob + 38) != GAIA_MARK_MBR) + goto illegal_geometry; /* failed to recognize MBR signature */ + if (*(p_blob + 1) == GAIA_LITTLE_ENDIAN) + little_endian = 1; + else if (*(p_blob + 1) == GAIA_BIG_ENDIAN) + little_endian = 0; + else + goto illegal_geometry; /* unknown encoding; neither little-endian nor big-endian */ + geom_type = gaiaImport32 (p_blob + 39, little_endian, endian_arch); + geom_srid = gaiaImport32 (p_blob + 2, little_endian, endian_arch); + goto valid_geometry; + illegal_geometry: + sqlite3_result_int (context, -1); + return; + } + valid_geometry: + xtype = GAIA_UNKNOWN; + if (strcasecmp ((char *) type, "POINT") == 0) + { + switch (dims) + { + case GAIA_XY_Z: + xtype = GAIA_POINTZ; + break; + case GAIA_XY_M: + xtype = GAIA_POINTM; + break; + case GAIA_XY_Z_M: + xtype = GAIA_POINTZM; + break; + default: + xtype = GAIA_POINT; + break; + }; + } + if (strcasecmp ((char *) type, "LINESTRING") == 0) + { + switch (dims) + { + case GAIA_XY_Z: + xtype = GAIA_LINESTRINGZ; + break; + case GAIA_XY_M: + xtype = GAIA_LINESTRINGM; + break; + case GAIA_XY_Z_M: + xtype = GAIA_LINESTRINGZM; + break; + default: + xtype = GAIA_LINESTRING; + break; + }; + } + if (strcasecmp ((char *) type, "POLYGON") == 0) + { + switch (dims) + { + case GAIA_XY_Z: + xtype = GAIA_POLYGONZ; + break; + case GAIA_XY_M: + xtype = GAIA_POLYGONM; + break; + case GAIA_XY_Z_M: + xtype = GAIA_POLYGONZM; + break; + default: + xtype = GAIA_POLYGON; + break; + }; + } + if (strcasecmp ((char *) type, "MULTIPOINT") == 0) + { + switch (dims) + { + case GAIA_XY_Z: + xtype = GAIA_MULTIPOINTZ; + break; + case GAIA_XY_M: + xtype = GAIA_MULTIPOINTM; + break; + case GAIA_XY_Z_M: + xtype = GAIA_MULTIPOINTZM; + break; + default: + xtype = GAIA_MULTIPOINT; + break; + }; + } + if (strcasecmp ((char *) type, "MULTILINESTRING") == 0) + { + switch (dims) + { + case GAIA_XY_Z: + xtype = GAIA_MULTILINESTRINGZ; + break; + case GAIA_XY_M: + xtype = GAIA_MULTILINESTRINGM; + break; + case GAIA_XY_Z_M: + xtype = GAIA_MULTILINESTRINGZM; + break; + default: + xtype = GAIA_MULTILINESTRING; + break; + }; + } + if (strcasecmp ((char *) type, "MULTIPOLYGON") == 0) + { + switch (dims) + { + case GAIA_XY_Z: + xtype = GAIA_MULTIPOLYGONZ; + break; + case GAIA_XY_M: + xtype = GAIA_MULTIPOLYGONM; + break; + case GAIA_XY_Z_M: + xtype = GAIA_MULTIPOLYGONZM; + break; + default: + xtype = GAIA_MULTIPOLYGON; + break; + }; + } + if (strcasecmp ((char *) type, "GEOMETRYCOLLECTION") == 0) + { + switch (dims) + { + case GAIA_XY_Z: + xtype = GAIA_GEOMETRYCOLLECTIONZ; + break; + case GAIA_XY_M: + xtype = GAIA_GEOMETRYCOLLECTIONM; + break; + case GAIA_XY_Z_M: + xtype = GAIA_GEOMETRYCOLLECTIONZM; + break; + default: + xtype = GAIA_GEOMETRYCOLLECTION; + break; + }; + } + switch (geom_type) + { + /* adjusting COMPRESSED Geometries */ + case GAIA_COMPRESSED_LINESTRING: + geom_normalized_type = GAIA_LINESTRING; + break; + case GAIA_COMPRESSED_LINESTRINGZ: + geom_normalized_type = GAIA_LINESTRINGZ; + break; + case GAIA_COMPRESSED_LINESTRINGM: + geom_normalized_type = GAIA_LINESTRINGM; + break; + case GAIA_COMPRESSED_LINESTRINGZM: + geom_normalized_type = GAIA_LINESTRINGZM; + break; + case GAIA_COMPRESSED_POLYGON: + geom_normalized_type = GAIA_POLYGON; + break; + case GAIA_COMPRESSED_POLYGONZ: + geom_normalized_type = GAIA_POLYGONZ; + break; + case GAIA_COMPRESSED_POLYGONM: + geom_normalized_type = GAIA_POLYGONM; + break; + case GAIA_COMPRESSED_POLYGONZM: + geom_normalized_type = GAIA_POLYGONZM; + break; + default: + geom_normalized_type = geom_type; + break; + }; + if (strcasecmp ((char *) type, "GEOMETRY") == 0) + xtype = -1; + if (xtype == GAIA_UNKNOWN) + sqlite3_result_int (context, -1); + else + { + ret = 1; + if (p_blob) + { + /* skipping NULL Geometry; this is assumed to be always good */ + if (geom_srid != srid) + ret = 0; + if (xtype == -1) + ; + else if (xtype != geom_normalized_type) + ret = 0; + } + sqlite3_result_int (context, ret); + } +} + +static void +fnct_RTreeAlign (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ RTreeAlign(RTree-table-name, PKID-value, BLOBencoded geometry) +/ +/ attempts to update the associated R*Tree, returning: +/ +/ -1 - if some invalid arg was passed +/ 1 - succesfull update +/ 0 - update failure +/ +*/ + unsigned char *p_blob = NULL; + int n_bytes = 0; + sqlite3_int64 pkid; + const char *rtree_table; + char *table_name; + int len; + char pkv[64]; + gaiaGeomCollPtr geom = NULL; + int ret; + char *sql_statement; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + rtree_table = (const char *) sqlite3_value_text (argv[0]); + else + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + pkid = sqlite3_value_int64 (argv[1]); + else + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_BLOB + || sqlite3_value_type (argv[2]) == SQLITE_NULL) + ; + else + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_BLOB) + { + p_blob = (unsigned char *) sqlite3_value_blob (argv[2]); + n_bytes = sqlite3_value_bytes (argv[2]); + geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + } + + if (geom == NULL) + { + /* NULL geometry: nothing to do */ + sqlite3_result_int (context, 1); + } + else + { + /* INSERTing into the R*Tree */ + if (*(rtree_table + 0) == '"' + && *(rtree_table + strlen (rtree_table) - 1) == '"') + { + /* earlier versions may pass an already quoted name */ + char *dequoted_table_name; + len = strlen (rtree_table); + table_name = malloc (len + 1); + strcpy (table_name, rtree_table); + dequoted_table_name = gaiaDequotedSql (table_name); + free (table_name); + if (dequoted_table_name == NULL) + { + sqlite3_result_int (context, -1); + return; + } + table_name = gaiaDoubleQuotedSql (dequoted_table_name); + free (dequoted_table_name); + } + else + table_name = gaiaDoubleQuotedSql (rtree_table); + sprintf (pkv, FRMT64, pkid); + sql_statement = + sqlite3_mprintf + ("INSERT INTO \"%s\" (pkid, xmin, ymin, xmax, ymax) " + "VALUES (%s, %1.12f, %1.12f, %1.12f, %1.12f)", table_name, + pkv, geom->MinX, geom->MinY, geom->MaxX, geom->MaxY); + gaiaFreeGeomColl (geom); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); + sqlite3_free (sql_statement); + free (table_name); + if (ret != SQLITE_OK) + sqlite3_result_int (context, 0); + else + sqlite3_result_int (context, 1); + } +} + +static void +fnct_IsValidNoDataPixel (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ IsValidNoDataPixel(BLOBencoded pixel, text sample_type, int num_bands) +/ +/ basic version intended to be overloaded by RasterLite-2 +/ always return 0 (FALSE) +/ or -1 (INVALID ARGS) +/ +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) + { + sqlite3_result_int (context, -1); + return; + } + sqlite3_result_int (context, 0); +} + +static void +fnct_IsValidRasterPalette (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ IsValidRasterPalette(BLOBencoded palette, text sample_type) +/ +/ basic version intended to be overloaded by RasterLite-2 +/ always return 0 (FALSE) +/ or -1 (INVALID ARGS) +/ +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + sqlite3_result_int (context, 0); +} + +static void +fnct_IsValidRasterStatistics (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ IsValidRasterStatistics(text coverage, BLOBencoded statistics) +/ or +/ IsValidRasterStatistics(BLOBencoded statistics, text sample_type, int num_bands) +/ +/ basic version intended to be overloaded by RasterLite-2 +/ always return 0 (FALSE) +/ or -1 (INVALID ARGS) +/ +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (argc == 2) + { + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + } + else + { + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) + { + sqlite3_result_int (context, -1); + return; + } + } + sqlite3_result_int (context, 0); +} + +static void +fnct_IsValidRasterTile (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ IsValidRasterTile(text coverage, integer level, BLOBencoded tile_odd, +/ BLOBencoded tile_even) +/ +/ basic version intended to be overloaded by RasterLite-2 +/ always return 0 (FALSE) +/ or -1 (INVALID ARGS) +/ +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[2]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[3]) != SQLITE_BLOB + && sqlite3_value_type (argv[3]) != SQLITE_NULL) + { + sqlite3_result_int (context, -1); + return; + } + sqlite3_result_int (context, 0); +} + +static void +fnct_IsPopulatedCoverage (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ IsPopulatedCoverage(text coverage) +/ +/ check if a RasterCoverage is already populated +/ returns 1 if TRUE, 0 if FALSE +/ -1 on invalid arguments +*/ + const char *coverage; + int ret; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + coverage = (const char *) sqlite3_value_text (argv[0]); + ret = checkPopulatedCoverage (sqlite, coverage); + sqlite3_result_int (context, ret); + return; +} + +static int +is_without_rowid_table (sqlite3 * sqlite, const char *table) +{ +/* internal utility functions; checks for WITHOUT ROWID tables */ + char *sql; + char *xtable; + int ret; + int i; + char **results; + int rows; + int columns; + int j; + char **results2; + int rows2; + int columns2; + char *errMsg = NULL; + int without_rowid = 0; + + xtable = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("PRAGMA index_list(\"%s\")", xtable); + free (xtable); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + sqlite3_free (errMsg); + return 1; + } + for (i = 1; i <= rows; i++) + { + const char *index = results[(i * columns) + 1]; + sql = sqlite3_mprintf ("SELECT count(*) FROM sqlite_master WHERE " + "type = 'index' AND Lower(tbl_name) = Lower(%Q) " + "AND Lower(name) = Lower(%Q)", table, index); + ret = + sqlite3_get_table (sqlite, sql, &results2, &rows2, &columns2, + &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + sqlite3_free (errMsg); + return 1; + } + for (j = 1; j <= rows2; j++) + { + if (atoi (results2[(j * columns2) + 0]) == 0) + without_rowid = 1; + } + sqlite3_free_table (results2); + } + sqlite3_free_table (results); + return without_rowid; +} + +SPATIALITE_PRIVATE int +checkSpatialMetaData (const void *handle) +{ +/* internal utility function: +/ +/ for FDO-OGR interoperability and cross-version seamless compatibility: +/ tests the SpatialMetadata type, returning: +/ +/ 0 - if no valid SpatialMetaData where found +/ 1 - if SpatiaLite-like (legacy) SpatialMetadata where found +/ 2 - if FDO-OGR-like SpatialMetadata where found +/ 3 - if SpatiaLite-like (current) SpatialMetadata where found +/ +*/ + sqlite3 *sqlite = (sqlite3 *) handle; + int spatialite_legacy_rs = 0; + int spatialite_rs = 0; + int fdo_rs = 0; + int spatialite_legacy_gc = 0; + int spatialite_gc = 0; + int fdo_gc = 0; + int rs_srid = 0; + int auth_name = 0; + int auth_srid = 0; + int srtext = 0; + int ref_sys_name = 0; + int proj4text = 0; + int f_table_name = 0; + int f_geometry_column = 0; + int geometry_type = 0; + int coord_dimension = 0; + int gc_srid = 0; + int geometry_format = 0; + int type = 0; + int spatial_index_enabled = 0; + char sql[1024]; + int ret; + const char *name; + int i; + char **results; + int rows; + int columns; +/* checking the GEOMETRY_COLUMNS table */ + strcpy (sql, "PRAGMA table_info(geometry_columns)"); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + goto unknown; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "f_table_name") == 0) + f_table_name = 1; + if (strcasecmp (name, "f_geometry_column") == 0) + f_geometry_column = 1; + if (strcasecmp (name, "geometry_type") == 0) + geometry_type = 1; + if (strcasecmp (name, "coord_dimension") == 0) + coord_dimension = 1; + if (strcasecmp (name, "srid") == 0) + gc_srid = 1; + if (strcasecmp (name, "geometry_format") == 0) + geometry_format = 1; + if (strcasecmp (name, "type") == 0) + type = 1; + if (strcasecmp (name, "spatial_index_enabled") == 0) + spatial_index_enabled = 1; + } + } + sqlite3_free_table (results); + if (f_table_name && f_geometry_column && type && coord_dimension + && gc_srid && spatial_index_enabled) + spatialite_legacy_gc = 1; + if (f_table_name && f_geometry_column && geometry_type && coord_dimension + && gc_srid && spatial_index_enabled) + spatialite_gc = 1; + if (f_table_name && f_geometry_column && geometry_type && coord_dimension + && gc_srid && geometry_format) + fdo_gc = 1; +/* checking the SPATIAL_REF_SYS table */ + strcpy (sql, "PRAGMA table_info(spatial_ref_sys)"); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + goto unknown; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "srid") == 0) + rs_srid = 1; + if (strcasecmp (name, "auth_name") == 0) + auth_name = 1; + if (strcasecmp (name, "auth_srid") == 0) + auth_srid = 1; + if (strcasecmp (name, "srtext") == 0) + srtext = 1; + if (strcasecmp (name, "ref_sys_name") == 0) + ref_sys_name = 1; + if (strcasecmp (name, "proj4text") == 0) + proj4text = 1; + if (strcasecmp (name, "srtext") == 0) + srtext = 1; + } + } + sqlite3_free_table (results); + if (rs_srid && auth_name && auth_srid && ref_sys_name && proj4text + && srtext) + spatialite_rs = 1; + if (rs_srid && auth_name && auth_srid && ref_sys_name && proj4text) + spatialite_legacy_rs = 1; + if (rs_srid && auth_name && auth_srid && srtext) + fdo_rs = 1; +/* verifying the MetaData format */ + if (spatialite_legacy_gc && spatialite_legacy_rs) + return 1; + if (fdo_gc && fdo_rs) + return 2; + if (spatialite_gc && spatialite_rs) + return 3; + unknown: + return 0; +} + +static void +add_fdo_table (struct fdo_table **first, struct fdo_table **last, + const char *table, int len) +{ +/* adds an FDO-OGR styled Geometry Table to corresponding linked list */ + struct fdo_table *p = malloc (sizeof (struct fdo_table)); + p->table = malloc (len + 1); + strcpy (p->table, table); + p->next = NULL; + if (!(*first)) + (*first) = p; + if ((*last)) + (*last)->next = p; + (*last) = p; +} + +static void +free_fdo_tables (struct fdo_table *first) +{ +/* memory cleanup; destroying the FDO-OGR tables linked list */ + struct fdo_table *p; + struct fdo_table *pn; + p = first; + while (p) + { + pn = p->next; + if (p->table) + free (p->table); + free (p); + p = pn; + } +} + +static void +fnct_AutoFDOStart (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AutoFDOStart(void) +/ +/ for FDO-OGR interoperability: +/ tests the SpatialMetadata type, then automatically +/ creating a VirtualFDO table for each FDO-OGR main table +/ declared within FDO-styled SpatialMetadata +/ +*/ + int ret; + const char *name; + int i; + char **results; + int rows; + int columns; + char *sql_statement; + int count = 0; + struct fdo_table *first = NULL; + struct fdo_table *last = NULL; + struct fdo_table *p; + int len; + char *xname; + char *xxname; + char *xtable; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (checkSpatialMetaData (sqlite) == 2) + { + /* ok, creating VirtualFDO tables */ + sql_statement = "SELECT DISTINCT f_table_name FROM geometry_columns"; + ret = sqlite3_get_table (sqlite, sql_statement, &results, &rows, + &columns, NULL); + if (ret != SQLITE_OK) + goto error; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 0]; + if (name) + { + len = strlen (name); + add_fdo_table (&first, &last, name, len); + } + } + } + sqlite3_free_table (results); + p = first; + while (p) + { + /* destroying the VirtualFDO table [if existing] */ + xxname = sqlite3_mprintf ("fdo_%s", p->table); + xname = gaiaDoubleQuotedSql (xxname); + sqlite3_free (xxname); + sql_statement = + sqlite3_mprintf ("DROP TABLE IF EXISTS \"%s\"", xname); + free (xname); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + /* creating the VirtualFDO table */ + xxname = sqlite3_mprintf ("fdo_%s", p->table); + xname = gaiaDoubleQuotedSql (xxname); + sqlite3_free (xxname); + xtable = gaiaDoubleQuotedSql (p->table); + sql_statement = + sqlite3_mprintf + ("CREATE VIRTUAL TABLE \"%s\" USING VirtualFDO(\"%s\")", + xname, xtable); + free (xname); + free (xtable); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + count++; + p = p->next; + } + error: + free_fdo_tables (first); + sqlite3_result_int (context, count); + return; + } + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_AutoFDOStop (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AutoFDOStop(void) +/ +/ for FDO-OGR interoperability: +/ tests the SpatialMetadata type, then automatically +/ removes any VirtualFDO table +/ +*/ + int ret; + const char *name; + int i; + char **results; + int rows; + int columns; + char *sql_statement; + int count = 0; + struct fdo_table *first = NULL; + struct fdo_table *last = NULL; + struct fdo_table *p; + int len; + char *xname; + char *xxname; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (checkSpatialMetaData (sqlite) == 2) + { + /* ok, removing VirtualFDO tables */ + sql_statement = "SELECT DISTINCT f_table_name FROM geometry_columns"; + ret = sqlite3_get_table (sqlite, sql_statement, &results, &rows, + &columns, NULL); + if (ret != SQLITE_OK) + goto error; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 0]; + if (name) + { + len = strlen (name); + add_fdo_table (&first, &last, name, len); + } + } + } + sqlite3_free_table (results); + p = first; + while (p) + { + /* destroying the VirtualFDO table [if existing] */ + xxname = sqlite3_mprintf ("fdo_%s", p->table); + xname = gaiaDoubleQuotedSql (xxname); + sqlite3_free (xxname); + sql_statement = + sqlite3_mprintf ("DROP TABLE IF EXISTS \"%s\"", xname); + free (xname); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + count++; + p = p->next; + } + error: + free_fdo_tables (first); + sqlite3_result_int (context, count); + return; + } + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_CheckSpatialMetaData (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CheckSpatialMetaData(void) +/ +/ for FDO-OGR interoperability: +/ tests the SpatialMetadata type, returning: +/ +/ 0 - if no valid SpatialMetaData where found +/ 1 - if SpatiaLite-legacy SpatialMetadata where found +/ 2- if FDO-OGR-like SpatialMetadata where found +/ 3 - if SpatiaLite-current SpatialMetadata where found +/ +*/ + sqlite3 *sqlite; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + sqlite = sqlite3_context_db_handle (context); + ret = checkSpatialMetaData (sqlite); + if (ret == 3) + { + /* trying to create the advanced metadata tables >= v.4.0.0 */ + createAdvancedMetaData (sqlite); + } + sqlite3_result_int (context, ret); + return; +} + +static void +fnct_InitSpatialMetaData (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ InitSpatialMetaData() +/ or +/ InitSpatialMetaData(text mode) +/ or +/ InitSpatialMetaData(integer transaction) +/ or +/ InitSpatialMetaData(integer transaction, text mode) +/ +/ creates the SPATIAL_REF_SYS and GEOMETRY_COLUMNS tables +/ returns 1 on success +/ 0 on failure +*/ + char sql[8192]; + char *errMsg = NULL; + int ret; + int transaction = 0; + const char *xmode; + int mode = GAIA_EPSG_ANY; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (argc == 1) + { + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + { + xmode = (const char *) sqlite3_value_text (argv[0]); + if (strcasecmp (xmode, "NONE") == 0 + || strcasecmp (xmode, "EMPTY") == 0) + mode = GAIA_EPSG_NONE; + if (strcasecmp (xmode, "WGS84") == 0 + || strcasecmp (xmode, "WGS84_ONLY") == 0) + mode = GAIA_EPSG_WGS84_ONLY; + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + transaction = sqlite3_value_int (argv[0]); + else + { + spatialite_e + ("InitSpatialMetaData() error: argument 1 is not of the String or Integer type\n"); + sqlite3_result_int (context, 0); + return; + } + } + if (argc == 2) + { + if (sqlite3_value_type (argv[0]) != SQLITE_INTEGER) + { + spatialite_e + ("InitSpatialMetaData() error: argument 1 is not of the Integer type\n"); + sqlite3_result_int (context, 0); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("InitSpatialMetaData() error: argument 2 is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + transaction = sqlite3_value_int (argv[0]); + xmode = (const char *) sqlite3_value_text (argv[1]); + if (strcasecmp (xmode, "NONE") == 0 + || strcasecmp (xmode, "EMPTY") == 0) + mode = GAIA_EPSG_NONE; + if (strcasecmp (xmode, "WGS84") == 0 + || strcasecmp (xmode, "WGS84_ONLY") == 0) + mode = GAIA_EPSG_WGS84_ONLY; + } + + if (transaction) + { + /* starting a Transaction */ + ret = sqlite3_exec (sqlite, "BEGIN", NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + goto error; + } + +/* creating the SPATIAL_REF_SYS table */ + strcpy (sql, "CREATE TABLE spatial_ref_sys (\n"); + strcat (sql, "srid INTEGER NOT NULL PRIMARY KEY,\n"); + strcat (sql, "auth_name TEXT NOT NULL,\n"); + strcat (sql, "auth_srid INTEGER NOT NULL,\n"); + strcat (sql, "ref_sys_name TEXT NOT NULL DEFAULT 'Unknown',\n"); + strcat (sql, "proj4text TEXT NOT NULL,\n"); + strcat (sql, "srtext TEXT NOT NULL DEFAULT 'Undefined')"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + goto error; + strcpy (sql, "CREATE UNIQUE INDEX idx_spatial_ref_sys \n"); + strcat (sql, "ON spatial_ref_sys (auth_srid, auth_name)"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + goto error; + updateSpatiaLiteHistory (sqlite, "spatial_ref_sys", NULL, + "table successfully created"); + +/* creating the GEOMETRY_COLUMNS table */ + if (!createGeometryColumns (sqlite)) + goto error; + +/* creating the GEOM_COLS_REF_SYS view */ + strcpy (sql, "CREATE VIEW geom_cols_ref_sys AS\n"); + strcat (sql, "SELECT f_table_name, f_geometry_column, geometry_type,\n"); + strcat (sql, "coord_dimension, spatial_ref_sys.srid AS srid,\n"); + strcat (sql, "auth_name, auth_srid, ref_sys_name, proj4text, srtext\n"); + strcat (sql, "FROM geometry_columns, spatial_ref_sys\n"); + strcat (sql, "WHERE geometry_columns.srid = spatial_ref_sys.srid"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + updateSpatiaLiteHistory (sqlite, "geom_cols_ref_sys", NULL, + "view 'geom_cols_ref_sys' successfully created"); + if (ret != SQLITE_OK) + goto error; + if (!createAdvancedMetaData (sqlite)) + goto error; +/* creating the SpatialIndex VIRTUAL TABLE */ + strcpy (sql, "CREATE VIRTUAL TABLE SpatialIndex "); + strcat (sql, "USING VirtualSpatialIndex()"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + goto error; + if (spatial_ref_sys_init2 (sqlite, mode, 0)) + { + if (mode == GAIA_EPSG_NONE) + updateSpatiaLiteHistory (sqlite, "spatial_ref_sys", NULL, + "table successfully created [empty]"); + else + updateSpatiaLiteHistory (sqlite, "spatial_ref_sys", NULL, + "table successfully populated"); + } + + if (transaction) + { + /* confirming the still pending Transaction */ + ret = sqlite3_exec (sqlite, "COMMIT", NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + goto error; + } + + sqlite3_result_int (context, 1); + return; + error: + spatialite_e (" InitSpatiaMetaData() error:\"%s\"\n", errMsg); + sqlite3_free (errMsg); + if (transaction) + { + /* performing a Rollback */ + ret = sqlite3_exec (sqlite, "ROLLBACK", NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e (" InitSpatiaMetaData() error:\"%s\"\n", errMsg); + sqlite3_free (errMsg); + } + } + sqlite3_result_int (context, 0); + return; +} + +static int +checkGeoPackage (sqlite3 * handle) +{ +/* testing for GeoPackage meta-tables */ + sqlite3 *sqlite = (sqlite3 *) handle; + char sql[1024]; + int ret; + const char *name; + int table_name = 0; + int column_name = 0; + int geometry_type_name = 0; + int srs_id_gc = 0; + int has_z = 0; + int has_m = 0; + int gpkg_gc = 0; + int srs_id_srs = 0; + int srs_name = 0; + int gpkg_srs = 0; + int i; + char **results; + int rows; + int columns; +/* checking the GPKG_GEOMETRY_COLUMNS table */ + strcpy (sql, "PRAGMA table_info(gpkg_geometry_columns)"); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + goto unknown; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "table_name") == 0) + table_name = 1; + if (strcasecmp (name, "column_name") == 0) + column_name = 1; + if (strcasecmp (name, "geometry_type_name") == 0) + geometry_type_name = 1; + if (strcasecmp (name, "srs_id") == 0) + srs_id_gc = 1; + if (strcasecmp (name, "z") == 0) + has_z = 1; + if (strcasecmp (name, "m") == 0) + has_m = 1; + } + } + sqlite3_free_table (results); + if (table_name && column_name && geometry_type_name && srs_id_gc && has_z + && has_m) + gpkg_gc = 1; +/* checking the GPKG_SPATIAL_REF_SYS table */ + strcpy (sql, "PRAGMA table_info(gpkg_spatial_ref_sys)"); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + goto unknown; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 1]; + if (strcasecmp (name, "srs_id") == 0) + srs_id_srs = 1; + if (strcasecmp (name, "srs_name") == 0) + srs_name = 1; + } + } + sqlite3_free_table (results); + if (srs_id_srs && srs_name) + gpkg_srs = 1; + if (gpkg_gc && gpkg_srs) + return 1; + unknown: + return 0; +} + +static void +fnct_CheckGeoPackageMetaData (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CheckGeoPackageMetaData(void) +/ +/ for OGC GeoPackage interoperability: +/ tests if GeoPackage metadata tables are found +/ +*/ + sqlite3 *sqlite; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + sqlite = sqlite3_context_db_handle (context); + ret = checkGeoPackage (sqlite); + sqlite3_result_int (context, ret); + return; +} + +#ifdef ENABLE_GEOPACKAGE /* enabling GeoPackage extensions */ + +static void +add_gpkg_table (struct gpkg_table **first, struct gpkg_table **last, + const char *table, int len) +{ +/* adds a GPKG Geometry Table to corresponding linked list */ + struct gpkg_table *p = malloc (sizeof (struct gpkg_table)); + p->table = malloc (len + 1); + strcpy (p->table, table); + p->next = NULL; + if (!(*first)) + (*first) = p; + if ((*last)) + (*last)->next = p; + (*last) = p; +} + +static void +free_gpkg_tables (struct gpkg_table *first) +{ +/* memory cleanup; destroying the GPKG tables linked list */ + struct gpkg_table *p; + struct gpkg_table *pn; + p = first; + while (p) + { + pn = p->next; + if (p->table) + free (p->table); + free (p); + p = pn; + } +} + +static void +fnct_AutoGPKGStart (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AutoGPKGStart(void) +/ +/ for OCG GeoPackage interoperability: +/ tests the DB layout, then automatically +/ creating a VirtualGPKS table for each GPKG main table +/ declared within gpkg_geometry_colums +/ +*/ + int ret; + const char *name; + int i; + char **results; + int rows; + int columns; + char *sql_statement; + int count = 0; + struct gpkg_table *first = NULL; + struct gpkg_table *last = NULL; + struct gpkg_table *p; + int len; + char *xname; + char *xxname; + char *xtable; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (checkGeoPackage (sqlite)) + { + /* ok, creating VirtualGPKG tables */ + sql_statement = + "SELECT DISTINCT table_name FROM gpkg_geometry_columns"; + ret = + sqlite3_get_table (sqlite, sql_statement, &results, &rows, + &columns, NULL); + if (ret != SQLITE_OK) + goto error; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 0]; + if (name) + { + len = strlen (name); + add_gpkg_table (&first, &last, name, len); + } + } + } + sqlite3_free_table (results); + p = first; + while (p) + { + /* destroying the VirtualGPKG table [if existing] */ + xxname = sqlite3_mprintf ("vgpkg_%s", p->table); + xname = gaiaDoubleQuotedSql (xxname); + sqlite3_free (xxname); + sql_statement = + sqlite3_mprintf ("DROP TABLE IF EXISTS \"%s\"", xname); + free (xname); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + /* creating the VirtualGPKG table */ + xxname = sqlite3_mprintf ("vgpkg_%s", p->table); + xname = gaiaDoubleQuotedSql (xxname); + sqlite3_free (xxname); + xtable = gaiaDoubleQuotedSql (p->table); + sql_statement = + sqlite3_mprintf + ("CREATE VIRTUAL TABLE \"%s\" USING VirtualGPKG(\"%s\")", + xname, xtable); + free (xname); + free (xtable); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + count++; + p = p->next; + } + error: + free_gpkg_tables (first); + sqlite3_result_int (context, count); + return; + } + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_AutoGPKGStop (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AutoGPKGStop(void) +/ +/ for OGC GeoPackage interoperability: +/ tests the DB layout, then automatically removes any VirtualGPKG table +/ +*/ + int ret; + const char *name; + int i; + char **results; + int rows; + int columns; + char *sql_statement; + int count = 0; + struct gpkg_table *first = NULL; + struct gpkg_table *last = NULL; + struct gpkg_table *p; + int len; + char *xname; + char *xxname; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (checkGeoPackage (sqlite)) + { + /* ok, removing VirtualGPKG tables */ + sql_statement = + "SELECT DISTINCT table_name FROM gpkg_geometry_columns"; + ret = + sqlite3_get_table (sqlite, sql_statement, &results, &rows, + &columns, NULL); + if (ret != SQLITE_OK) + goto error; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 0]; + if (name) + { + len = strlen (name); + add_gpkg_table (&first, &last, name, len); + } + } + } + sqlite3_free_table (results); + p = first; + while (p) + { + /* destroying the VirtualGPKG table [if existing] */ + xxname = sqlite3_mprintf ("vgpkg_%s", p->table); + xname = gaiaDoubleQuotedSql (xxname); + sqlite3_free (xxname); + sql_statement = + sqlite3_mprintf ("DROP TABLE IF EXISTS \"%s\"", xname); + free (xname); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + count++; + p = p->next; + } + error: + free_gpkg_tables (first); + sqlite3_result_int (context, count); + return; + } + sqlite3_result_int (context, 0); + return; +} + +#endif /* end enabling GeoPackage extensions */ + +static void +fnct_InsertEpsgSrid (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ InsertEpsgSrid(int srid) +/ +/ returns 1 on success: 0 on failure +*/ + int srid; + int ret; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[0]); + else + { + sqlite3_result_int (context, 0); + return; + } + ret = insert_epsg_srid (sqlite, srid); + if (!ret) + sqlite3_result_int (context, 0); + else + sqlite3_result_int (context, 1); +} + +static int +recoverGeomColumn (sqlite3 * sqlite, const char *table, + const char *column, int xtype, int dims, int srid) +{ +/* checks if TABLE.COLUMN exists and has the required features */ + int ok = 1; + int type; + sqlite3_stmt *stmt; + gaiaGeomCollPtr geom; + const void *blob_value; + int len; + int ret; + int i_col; + int is_nullable = 1; + char *p_table; + char *p_column; + char *sql_statement; + +/* testing if NOT NULL */ + p_table = gaiaDoubleQuotedSql (table); + sql_statement = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", p_table); + free (p_table); + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("recoverGeomColumn: \"%s\"\n", sqlite3_errmsg (sqlite)); + return 0; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + if (strcasecmp + (column, (const char *) sqlite3_column_text (stmt, 1)) == 0) + { + if (sqlite3_column_int (stmt, 2) != 0) + is_nullable = 0; + } + } + } + sqlite3_finalize (stmt); + + p_table = gaiaDoubleQuotedSql (table); + p_column = gaiaDoubleQuotedSql (column); + sql_statement = + sqlite3_mprintf ("SELECT \"%s\" FROM \"%s\"", p_column, p_table); + free (p_table); + free (p_column); +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("recoverGeomColumn: error %d \"%s\"\n", + sqlite3_errcode (sqlite), sqlite3_errmsg (sqlite)); + return 0; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* checking Geometry features */ + geom = NULL; + for (i_col = 0; i_col < sqlite3_column_count (stmt); i_col++) + { + if (sqlite3_column_type (stmt, i_col) == SQLITE_NULL) + { + /* found a NULL geometry */ + if (!is_nullable) + ok = 0; + } + else if (sqlite3_column_type (stmt, i_col) != SQLITE_BLOB) + ok = 0; + else + { + blob_value = sqlite3_column_blob (stmt, i_col); + len = sqlite3_column_bytes (stmt, i_col); + geom = gaiaFromSpatiaLiteBlobWkb (blob_value, len); + if (!geom) + ok = 0; + else + { + if (geom->DimensionModel != dims) + ok = 0; + if (geom->Srid != srid) + ok = 0; + type = gaiaGeometryType (geom); + if (xtype == -1) + ; /* GEOMETRY */ + else + { + if (xtype == type) + ; + else + ok = 0; + } + gaiaFreeGeomColl (geom); + } + } + } + } + if (!ok) + break; + } + ret = sqlite3_finalize (stmt); + if (ret != SQLITE_OK) + { + spatialite_e ("recoverGeomColumn: error %d \"%s\"\n", + sqlite3_errcode (sqlite), sqlite3_errmsg (sqlite)); + return 0; + } + return ok; +} + +static void +fnct_AddGeometryColumn (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ AddGeometryColumn(table, column, srid, type [ , dimension [ , not-null ] ] ) +/ +/ creates a new COLUMN of given TYPE into TABLE +/ returns 1 on success +/ 0 on failure +*/ + const char *table; + const char *column; + const unsigned char *type; + const unsigned char *txt_dims; + int xtype; + int srid = -1; + int dimension = 2; + int dims = -1; + int auto_dims = -1; + char sql[1024]; + int ret; + int notNull = 0; + int metadata_version; + sqlite3_stmt *stmt; + char *p_table = NULL; + char *quoted_table; + char *quoted_column; + const char *p_type; + const char *p_dims; + int n_type; + int n_dims; + char *sql_statement; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("AddGeometryColumn() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + table = (const char *) sqlite3_value_text (argv[0]); + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("AddGeometryColumn() error: argument 2 [column_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + column = (const char *) sqlite3_value_text (argv[1]); + if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) + { + spatialite_e + ("AddGeometryColumn() error: argument 3 [SRID] is not of the Integer type\n"); + sqlite3_result_int (context, 0); + return; + } + srid = sqlite3_value_int (argv[2]); + if (sqlite3_value_type (argv[3]) != SQLITE_TEXT) + { + spatialite_e + ("AddGeometryColumn() error: argument 4 [geometry_type] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + type = sqlite3_value_text (argv[3]); + if (argc > 4) + { + if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) + { + dimension = sqlite3_value_int (argv[4]); + if (dimension == 2) + dims = GAIA_XY; + if (dimension == 3) + dims = GAIA_XY_Z; + if (dimension == 4) + dims = GAIA_XY_Z_M; + } + else if (sqlite3_value_type (argv[4]) == SQLITE_TEXT) + { + txt_dims = sqlite3_value_text (argv[4]); + if (strcasecmp ((char *) txt_dims, "XY") == 0) + dims = GAIA_XY; + if (strcasecmp ((char *) txt_dims, "XYZ") == 0) + dims = GAIA_XY_Z; + if (strcasecmp ((char *) txt_dims, "XYM") == 0) + dims = GAIA_XY_M; + if (strcasecmp ((char *) txt_dims, "XYZM") == 0) + dims = GAIA_XY_Z_M; + } + else + { + spatialite_e + ("AddGeometryColumn() error: argument 5 [dimension] is not of the Integer or Text type\n"); + sqlite3_result_int (context, 0); + return; + } + } + if (argc == 6) + { + /* optional NOT NULL arg */ + if (sqlite3_value_type (argv[5]) != SQLITE_INTEGER) + { + spatialite_e + ("AddGeometryColumn() error: argument 6 [not null] is not of the Integer type\n"); + sqlite3_result_int (context, 0); + return; + } + notNull = sqlite3_value_int (argv[5]); + } + xtype = GAIA_UNKNOWN; + if (strcasecmp ((char *) type, "POINT") == 0) + { + auto_dims = GAIA_XY; + xtype = GAIA_POINT; + } + if (strcasecmp ((char *) type, "LINESTRING") == 0) + { + auto_dims = GAIA_XY; + xtype = GAIA_LINESTRING; + } + if (strcasecmp ((char *) type, "POLYGON") == 0) + { + auto_dims = GAIA_XY; + xtype = GAIA_POLYGON; + } + if (strcasecmp ((char *) type, "MULTIPOINT") == 0) + { + auto_dims = GAIA_XY; + xtype = GAIA_MULTIPOINT; + } + if (strcasecmp ((char *) type, "MULTILINESTRING") == 0) + { + auto_dims = GAIA_XY; + xtype = GAIA_MULTILINESTRING; + } + if (strcasecmp ((char *) type, "MULTIPOLYGON") == 0) + { + auto_dims = GAIA_XY; + xtype = GAIA_MULTIPOLYGON; + } + if (strcasecmp ((char *) type, "GEOMETRYCOLLECTION") == 0) + { + auto_dims = GAIA_XY; + xtype = GAIA_GEOMETRYCOLLECTION; + } + if (strcasecmp ((char *) type, "GEOMETRY") == 0) + { + auto_dims = GAIA_XY; + xtype = -1; + } + if (strcasecmp ((char *) type, "POINTZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = GAIA_POINT; + } + if (strcasecmp ((char *) type, "LINESTRINGZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = GAIA_LINESTRING; + } + if (strcasecmp ((char *) type, "POLYGONZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = GAIA_POLYGON; + } + if (strcasecmp ((char *) type, "MULTIPOINTZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = GAIA_MULTIPOINT; + } + if (strcasecmp ((char *) type, "MULTILINESTRINGZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = GAIA_MULTILINESTRING; + } + if (strcasecmp ((char *) type, "MULTIPOLYGONZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = GAIA_MULTIPOLYGON; + } + if (strcasecmp ((char *) type, "GEOMETRYCOLLECTIONZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = GAIA_GEOMETRYCOLLECTION; + } + if (strcasecmp ((char *) type, "GEOMETRYZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = -1; + } + if (strcasecmp ((char *) type, "POINTM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = GAIA_POINT; + } + if (strcasecmp ((char *) type, "LINESTRINGM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = GAIA_LINESTRING; + } + if (strcasecmp ((char *) type, "POLYGONM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = GAIA_POLYGON; + } + if (strcasecmp ((char *) type, "MULTIPOINTM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = GAIA_MULTIPOINT; + } + if (strcasecmp ((char *) type, "MULTILINESTRINGM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = GAIA_MULTILINESTRING; + } + if (strcasecmp ((char *) type, "MULTIPOLYGONM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = GAIA_MULTIPOLYGON; + } + if (strcasecmp ((char *) type, "GEOMETRYCOLLECTIONM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = GAIA_GEOMETRYCOLLECTION; + } + if (strcasecmp ((char *) type, "GEOMETRYM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = -1; + } + if (strcasecmp ((char *) type, "POINTZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = GAIA_POINT; + } + if (strcasecmp ((char *) type, "LINESTRINGZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = GAIA_LINESTRING; + } + if (strcasecmp ((char *) type, "POLYGONZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = GAIA_POLYGON; + } + if (strcasecmp ((char *) type, "MULTIPOINTZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = GAIA_MULTIPOINT; + } + if (strcasecmp ((char *) type, "MULTILINESTRINGZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = GAIA_MULTILINESTRING; + } + if (strcasecmp ((char *) type, "MULTIPOLYGONZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = GAIA_MULTIPOLYGON; + } + if (strcasecmp ((char *) type, "GEOMETRYCOLLECTIONZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = GAIA_GEOMETRYCOLLECTION; + } + if (strcasecmp ((char *) type, "GEOMETRYZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = -1; + } + if (xtype == GAIA_UNKNOWN) + { + spatialite_e + ("AddGeometryColumn() error: argument 4 [geometry_type] has an illegal value\n"); + sqlite3_result_int (context, 0); + return; + } + if (dims < 0) + dims = auto_dims; + if (dims == GAIA_XY || dims == GAIA_XY_Z || dims == GAIA_XY_M + || dims == GAIA_XY_Z_M) + ; + else + { + spatialite_e + ("AddGeometryColumn() error: argument 5 [dimension] ILLEGAL VALUE\n"); + sqlite3_result_int (context, 0); + return; + } + if (auto_dims != GAIA_XY && dims != auto_dims) + { + spatialite_e + ("AddGeometryColumn() error: argument 5 [dimension] ILLEGAL VALUE\n"); + sqlite3_result_int (context, 0); + return; + } +/* checking if the table exists */ + strcpy (sql, + "SELECT name FROM sqlite_master WHERE type = 'table' AND Lower(name) = Lower(?)"); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("AddGeometryColumn: \"%s\"\n", sqlite3_errmsg (sqlite)); + sqlite3_result_int (context, 0); + return; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + if (p_table != NULL) + sqlite3_free (p_table); + p_table = + sqlite3_mprintf ("%s", + (const char *) sqlite3_column_text (stmt, + 0)); + } + } + sqlite3_finalize (stmt); + if (!p_table) + { + spatialite_e + ("AddGeometryColumn() error: table '%s' does not exist\n", table); + sqlite3_result_int (context, 0); + return; + } +/* checking for WITHOUT ROWID */ + if (is_without_rowid_table (sqlite, table)) + { + spatialite_e + ("AddGeometryColumn() error: table '%s' is WITHOUT ROWID\n", + table); + sqlite3_result_int (context, 0); + return; + } + metadata_version = checkSpatialMetaData (sqlite); + if (metadata_version == 1 || metadata_version == 3) + ; + else + { + spatialite_e + ("AddGeometryColumn() error: unexpected metadata layout\n"); + sqlite3_result_int (context, 0); + return; + } +/* trying to add the column */ + switch (xtype) + { + case GAIA_POINT: + p_type = "POINT"; + break; + case GAIA_LINESTRING: + p_type = "LINESTRING"; + break; + case GAIA_POLYGON: + p_type = "POLYGON"; + break; + case GAIA_MULTIPOINT: + p_type = "MULTIPOINT"; + break; + case GAIA_MULTILINESTRING: + p_type = "MULTILINESTRING"; + break; + case GAIA_MULTIPOLYGON: + p_type = "MULTIPOLYGON"; + break; + case GAIA_GEOMETRYCOLLECTION: + p_type = "GEOMETRYCOLLECTION"; + break; + case -1: + p_type = "GEOMETRY"; + break; + }; + quoted_table = gaiaDoubleQuotedSql (p_table); + quoted_column = gaiaDoubleQuotedSql (column); + if (notNull) + { + /* adding a NOT NULL clause */ + sql_statement = + sqlite3_mprintf ("ALTER TABLE \"%s\" ADD COLUMN \"%s\" " + "%s NOT NULL DEFAULT ''", quoted_table, + quoted_column, p_type); + } + else + sql_statement = + sqlite3_mprintf ("ALTER TABLE \"%s\" ADD COLUMN \"%s\" %s ", + quoted_table, quoted_column, p_type); + free (quoted_table); + free (quoted_column); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("AddGeometryColumn: \"%s\"\n", sqlite3_errmsg (sqlite)); + sqlite3_result_int (context, 0); + sqlite3_free (p_table); + return; + } +/*ok, inserting into geometry_columns [Spatial Metadata] */ + if (metadata_version == 1) + { + /* legacy metadata style <= v.3.1.0 */ + switch (xtype) + { + case GAIA_POINT: + p_type = "POINT"; + break; + case GAIA_LINESTRING: + p_type = "LINESTRING"; + break; + case GAIA_POLYGON: + p_type = "POLYGON"; + break; + case GAIA_MULTIPOINT: + p_type = "MULTIPOINT"; + break; + case GAIA_MULTILINESTRING: + p_type = "MULTILINESTRING"; + break; + case GAIA_MULTIPOLYGON: + p_type = "MULTIPOLYGON"; + break; + case GAIA_GEOMETRYCOLLECTION: + p_type = "GEOMETRYCOLLECTION"; + break; + case -1: + p_type = "GEOMETRY"; + break; + }; + switch (dims) + { + case GAIA_XY: + p_dims = "XY"; + break; + case GAIA_XY_Z: + p_dims = "XYZ"; + break; + case GAIA_XY_M: + p_dims = "XYM"; + break; + case GAIA_XY_Z_M: + p_dims = "XYZM"; + break; + }; + sql_statement = sqlite3_mprintf ("INSERT INTO geometry_columns " + "(f_table_name, f_geometry_column, type, coord_dimension, srid, " + "spatial_index_enabled) VALUES (?, ?, %Q, %Q, ?, 0)", + p_type, p_dims); + } + else + { + /* current metadata style >= v.4.0.0 */ + switch (xtype) + { + case GAIA_POINT: + if (dims == GAIA_XY_Z) + n_type = 1001; + else if (dims == GAIA_XY_M) + n_type = 2001; + else if (dims == GAIA_XY_Z_M) + n_type = 3001; + else + n_type = 1; + break; + case GAIA_LINESTRING: + if (dims == GAIA_XY_Z) + n_type = 1002; + else if (dims == GAIA_XY_M) + n_type = 2002; + else if (dims == GAIA_XY_Z_M) + n_type = 3002; + else + n_type = 2; + break; + case GAIA_POLYGON: + if (dims == GAIA_XY_Z) + n_type = 1003; + else if (dims == GAIA_XY_M) + n_type = 2003; + else if (dims == GAIA_XY_Z_M) + n_type = 3003; + else + n_type = 3; + break; + case GAIA_MULTIPOINT: + if (dims == GAIA_XY_Z) + n_type = 1004; + else if (dims == GAIA_XY_M) + n_type = 2004; + else if (dims == GAIA_XY_Z_M) + n_type = 3004; + else + n_type = 4; + break; + case GAIA_MULTILINESTRING: + if (dims == GAIA_XY_Z) + n_type = 1005; + else if (dims == GAIA_XY_M) + n_type = 2005; + else if (dims == GAIA_XY_Z_M) + n_type = 3005; + else + n_type = 5; + break; + case GAIA_MULTIPOLYGON: + if (dims == GAIA_XY_Z) + n_type = 1006; + else if (dims == GAIA_XY_M) + n_type = 2006; + else if (dims == GAIA_XY_Z_M) + n_type = 3006; + else + n_type = 6; + break; + case GAIA_GEOMETRYCOLLECTION: + if (dims == GAIA_XY_Z) + n_type = 1007; + else if (dims == GAIA_XY_M) + n_type = 2007; + else if (dims == GAIA_XY_Z_M) + n_type = 3007; + else + n_type = 7; + break; + case -1: + if (dims == GAIA_XY_Z) + n_type = 1000; + else if (dims == GAIA_XY_M) + n_type = 2000; + else if (dims == GAIA_XY_Z_M) + n_type = 3000; + else + n_type = 0; + break; + }; + switch (dims) + { + case GAIA_XY: + n_dims = 2; + break; + case GAIA_XY_Z: + case GAIA_XY_M: + n_dims = 3; + break; + case GAIA_XY_Z_M: + n_dims = 4; + break; + }; + sql_statement = sqlite3_mprintf ("INSERT INTO geometry_columns " + "(f_table_name, f_geometry_column, geometry_type, coord_dimension, " + "srid, spatial_index_enabled) VALUES (Lower(?), Lower(?), %d, %d, ?, 0)", + n_type, n_dims); + } + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("AddGeometryColumn: \"%s\"\n", sqlite3_errmsg (sqlite)); + sqlite3_result_int (context, 0); + sqlite3_free (p_table); + return; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, p_table, strlen (p_table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + if (srid < 0) + sqlite3_bind_int (stmt, 3, -1); + else + sqlite3_bind_int (stmt, 3, srid); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("AddGeometryColumn() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + goto error; + } + sqlite3_finalize (stmt); + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + + /* inserting a row into GEOMETRY_COLUMNS_AUTH */ + strcpy (sql, + "INSERT OR REPLACE INTO geometry_columns_auth (f_table_name, f_geometry_column, "); + strcat (sql, "read_only, hidden) VALUES (Lower(?), Lower(?), 0, 0)"); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("AddGeometryColumn: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_result_int (context, 0); + sqlite3_free (p_table); + return; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("AddGeometryColumn() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + goto error; + } + sqlite3_finalize (stmt); + /* inserting a row into GEOMETRY_COLUMNS_STATISTICS */ + strcpy (sql, + "INSERT OR REPLACE INTO geometry_columns_statistics (f_table_name, f_geometry_column) "); + strcat (sql, "VALUES (Lower(?), Lower(?))"); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("AddGeometryColumn: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_result_int (context, 0); + sqlite3_free (p_table); + return; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("AddGeometryColumn() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + goto error; + } + sqlite3_finalize (stmt); + /* inserting a row into GEOMETRY_COLUMNS_TIME */ + strcpy (sql, + "INSERT OR REPLACE INTO geometry_columns_time (f_table_name, f_geometry_column) "); + strcat (sql, "VALUES (Lower(?), Lower(?))"); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("AddGeometryColumn: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_result_int (context, 0); + sqlite3_free (p_table); + return; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("AddGeometryColumn() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + goto error; + } + sqlite3_finalize (stmt); + } + updateGeometryTriggers (sqlite, table, column); + sqlite3_result_int (context, 1); + switch (xtype) + { + case GAIA_POINT: + p_type = "POINT"; + break; + case GAIA_LINESTRING: + p_type = "LINESTRING"; + break; + case GAIA_POLYGON: + p_type = "POLYGON"; + break; + case GAIA_MULTIPOINT: + p_type = "MULTIPOINT"; + break; + case GAIA_MULTILINESTRING: + p_type = "MULTILINESTRING"; + break; + case GAIA_MULTIPOLYGON: + p_type = "MULTIPOLYGON"; + break; + case GAIA_GEOMETRYCOLLECTION: + p_type = "GEOMETRYCOLLECTION"; + break; + case -1: + p_type = "GEOMETRY"; + break; + }; + switch (dims) + { + case GAIA_XY: + p_dims = "XY"; + break; + case GAIA_XY_Z: + p_dims = "XYZ"; + break; + case GAIA_XY_M: + p_dims = "XYM"; + break; + case GAIA_XY_Z_M: + p_dims = "XYZM"; + break; + }; + sql_statement = + sqlite3_mprintf ("Geometry [%s,%s,SRID=%d] successfully created", + p_type, p_dims, (srid <= 0) ? -1 : srid); + updateSpatiaLiteHistory (sqlite, table, column, sql_statement); + sqlite3_free (sql_statement); + sqlite3_free (p_table); + return; + error: + sqlite3_result_int (context, 0); + sqlite3_free (p_table); + return; +} + +static void +fnct_RecoverGeometryColumn (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ RecoverGeometryColumn(table, column, srid, type , dimension ) +/ +/ checks if an existing TABLE.COLUMN satisfies the required geometric features +/ if yes adds it to SpatialMetaData and enabling triggers +/ returns 1 on success +/ 0 on failure +*/ + const char *table; + const char *column; + const unsigned char *type; + int xtype; + int xxtype; + int srid = -1; + const unsigned char *txt_dims; + int dimension = 2; + int dims = -1; + int auto_dims = -1; + char sql[1024]; + int ret; + int metadata_version; + sqlite3_stmt *stmt; + int exists = 0; + const char *p_type; + const char *p_dims; + int n_type; + int n_dims; + char *sql_statement; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("RecoverGeometryColumn() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + table = (const char *) sqlite3_value_text (argv[0]); + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("RecoverGeometryColumn() error: argument 2 [column_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + column = (const char *) sqlite3_value_text (argv[1]); + if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) + { + spatialite_e + ("RecoverGeometryColumn() error: argument 3 [SRID] is not of the Integer type\n"); + sqlite3_result_int (context, 0); + return; + } + srid = sqlite3_value_int (argv[2]); + if (sqlite3_value_type (argv[3]) != SQLITE_TEXT) + { + spatialite_e + ("RecoverGeometryColumn() error: argument 4 [geometry_type] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + type = sqlite3_value_text (argv[3]); + if (argc == 5) + { + if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) + { + dimension = sqlite3_value_int (argv[4]); + if (dimension == 2) + dims = GAIA_XY; + if (dimension == 3) + dims = GAIA_XY_Z; + if (dimension == 4) + dims = GAIA_XY_Z_M; + } + else if (sqlite3_value_type (argv[4]) == SQLITE_TEXT) + { + txt_dims = sqlite3_value_text (argv[4]); + if (strcasecmp ((char *) txt_dims, "XY") == 0) + dims = GAIA_XY; + if (strcasecmp ((char *) txt_dims, "XYZ") == 0) + dims = GAIA_XY_Z; + if (strcasecmp ((char *) txt_dims, "XYM") == 0) + dims = GAIA_XY_M; + if (strcasecmp ((char *) txt_dims, "XYZM") == 0) + dims = GAIA_XY_Z_M; + } + else + { + spatialite_e + ("RecoverGeometryColumn() error: argument 5 [dimension] is not of the Integer or Text type\n"); + sqlite3_result_int (context, 0); + return; + } + } + xtype = GAIA_UNKNOWN; + if (strcasecmp ((char *) type, "POINT") == 0) + { + auto_dims = GAIA_XY; + xtype = GAIA_POINT; + } + if (strcasecmp ((char *) type, "LINESTRING") == 0) + { + auto_dims = GAIA_XY; + xtype = GAIA_LINESTRING; + } + if (strcasecmp ((char *) type, "POLYGON") == 0) + { + auto_dims = GAIA_XY; + xtype = GAIA_POLYGON; + } + if (strcasecmp ((char *) type, "MULTIPOINT") == 0) + { + auto_dims = GAIA_XY; + xtype = GAIA_MULTIPOINT; + } + if (strcasecmp ((char *) type, "MULTILINESTRING") == 0) + { + auto_dims = GAIA_XY; + xtype = GAIA_MULTILINESTRING; + } + if (strcasecmp ((char *) type, "MULTIPOLYGON") == 0) + { + auto_dims = GAIA_XY; + xtype = GAIA_MULTIPOLYGON; + } + if (strcasecmp ((char *) type, "GEOMETRYCOLLECTION") == 0) + { + auto_dims = GAIA_XY; + xtype = GAIA_GEOMETRYCOLLECTION; + } + if (strcasecmp ((char *) type, "GEOMETRY") == 0) + { + auto_dims = GAIA_XY; + xtype = -1; + } + if (strcasecmp ((char *) type, "POINTZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = GAIA_POINT; + } + if (strcasecmp ((char *) type, "LINESTRINGZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = GAIA_LINESTRING; + } + if (strcasecmp ((char *) type, "POLYGONZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = GAIA_POLYGON; + } + if (strcasecmp ((char *) type, "MULTIPOINTZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = GAIA_MULTIPOINT; + } + if (strcasecmp ((char *) type, "MULTILINESTRINGZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = GAIA_MULTILINESTRING; + } + if (strcasecmp ((char *) type, "MULTIPOLYGONZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = GAIA_MULTIPOLYGON; + } + if (strcasecmp ((char *) type, "GEOMETRYCOLLECTIONZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = GAIA_GEOMETRYCOLLECTION; + } + if (strcasecmp ((char *) type, "GEOMETRYZ") == 0) + { + auto_dims = GAIA_XY_Z; + xtype = -1; + } + if (strcasecmp ((char *) type, "POINTM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = GAIA_POINT; + } + if (strcasecmp ((char *) type, "LINESTRINGM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = GAIA_LINESTRING; + } + if (strcasecmp ((char *) type, "POLYGONM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = GAIA_POLYGON; + } + if (strcasecmp ((char *) type, "MULTIPOINTM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = GAIA_MULTIPOINT; + } + if (strcasecmp ((char *) type, "MULTILINESTRINGM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = GAIA_MULTILINESTRING; + } + if (strcasecmp ((char *) type, "MULTIPOLYGONM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = GAIA_MULTIPOLYGON; + } + if (strcasecmp ((char *) type, "GEOMETRYCOLLECTIONM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = GAIA_GEOMETRYCOLLECTION; + } + if (strcasecmp ((char *) type, "GEOMETRYM") == 0) + { + auto_dims = GAIA_XY_M; + xtype = -1; + } + if (strcasecmp ((char *) type, "POINTZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = GAIA_POINT; + } + if (strcasecmp ((char *) type, "LINESTRINGZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = GAIA_LINESTRING; + } + if (strcasecmp ((char *) type, "POLYGONZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = GAIA_POLYGON; + } + if (strcasecmp ((char *) type, "MULTIPOINTZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = GAIA_MULTIPOINT; + } + if (strcasecmp ((char *) type, "MULTILINESTRINGZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = GAIA_MULTILINESTRING; + } + if (strcasecmp ((char *) type, "MULTIPOLYGONZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = GAIA_MULTIPOLYGON; + } + if (strcasecmp ((char *) type, "GEOMETRYCOLLECTIONZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = GAIA_GEOMETRYCOLLECTION; + } + if (strcasecmp ((char *) type, "GEOMETRYZM") == 0) + { + auto_dims = GAIA_XY_Z_M; + xtype = -1; + } + if (dims < 0) + dims = auto_dims; + if (xtype == GAIA_UNKNOWN) + { + spatialite_e + ("RecoverGeometryColumn() error: argument 4 [geometry_type] has an illegal value\n"); + sqlite3_result_int (context, 0); + return; + } + if (dims == GAIA_XY || dims == GAIA_XY_Z || dims == GAIA_XY_M + || dims == GAIA_XY_Z_M) + ; + else + { + spatialite_e + ("RecoverGeometryColumn() error: argument 5 [dimension] ILLEGAL VALUE\n"); + sqlite3_result_int (context, 0); + return; + } + if (auto_dims != GAIA_XY && dims != auto_dims) + { + spatialite_e + ("RecoverGeometryColumn() error: argument 5 [dimension] ILLEGAL VALUE\n"); + sqlite3_result_int (context, 0); + return; + } + metadata_version = checkSpatialMetaData (sqlite); + if (metadata_version == 1 || metadata_version == 3) + ; + else + { + spatialite_e + ("RecoverGeometryColumn() error: unexpected metadata layout\n"); + sqlite3_result_int (context, 0); + return; + } +/* checking if the table exists */ + strcpy (sql, + "SELECT name FROM sqlite_master WHERE type = 'table' AND Lower(name) = Lower(?)"); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("RecoverGeometryColumn: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_result_int (context, 0); + return; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) + exists = 1; + } + } + sqlite3_finalize (stmt); + if (!exists) + { + spatialite_e + ("RecoverGeometryColumn() error: table '%s' does not exist\n", + table); + sqlite3_result_int (context, 0); + return; + } + if (is_without_rowid_table (sqlite, table)) + { + spatialite_e + ("RecoverGeometryColumn() error: table '%s' is WITHOUT ROWID\n", + table); + sqlite3_result_int (context, 0); + return; + } +/* adjusting the actual GeometryType */ + xxtype = xtype; + xtype = GAIA_UNKNOWN; + if (xxtype == GAIA_POINT) + { + switch (dims) + { + case GAIA_XY_Z: + xtype = GAIA_POINTZ; + break; + case GAIA_XY_M: + xtype = GAIA_POINTM; + break; + case GAIA_XY_Z_M: + xtype = GAIA_POINTZM; + break; + default: + xtype = GAIA_POINT; + break; + }; + } + if (xxtype == GAIA_LINESTRING) + { + switch (dims) + { + case GAIA_XY_Z: + xtype = GAIA_LINESTRINGZ; + break; + case GAIA_XY_M: + xtype = GAIA_LINESTRINGM; + break; + case GAIA_XY_Z_M: + xtype = GAIA_LINESTRINGZM; + break; + default: + xtype = GAIA_LINESTRING; + break; + }; + } + if (xxtype == GAIA_POLYGON) + { + switch (dims) + { + case GAIA_XY_Z: + xtype = GAIA_POLYGONZ; + break; + case GAIA_XY_M: + xtype = GAIA_POLYGONM; + break; + case GAIA_XY_Z_M: + xtype = GAIA_POLYGONZM; + break; + default: + xtype = GAIA_POLYGON; + break; + }; + } + if (xxtype == GAIA_MULTIPOINT) + { + switch (dims) + { + case GAIA_XY_Z: + xtype = GAIA_MULTIPOINTZ; + break; + case GAIA_XY_M: + xtype = GAIA_MULTIPOINTM; + break; + case GAIA_XY_Z_M: + xtype = GAIA_MULTIPOINTZM; + break; + default: + xtype = GAIA_MULTIPOINT; + break; + }; + } + if (xxtype == GAIA_MULTILINESTRING) + { + switch (dims) + { + case GAIA_XY_Z: + xtype = GAIA_MULTILINESTRINGZ; + break; + case GAIA_XY_M: + xtype = GAIA_MULTILINESTRINGM; + break; + case GAIA_XY_Z_M: + xtype = GAIA_MULTILINESTRINGZM; + break; + default: + xtype = GAIA_MULTILINESTRING; + break; + }; + } + if (xxtype == GAIA_MULTIPOLYGON) + { + switch (dims) + { + case GAIA_XY_Z: + xtype = GAIA_MULTIPOLYGONZ; + break; + case GAIA_XY_M: + xtype = GAIA_MULTIPOLYGONM; + break; + case GAIA_XY_Z_M: + xtype = GAIA_MULTIPOLYGONZM; + break; + default: + xtype = GAIA_MULTIPOLYGON; + break; + }; + } + if (xxtype == GAIA_GEOMETRYCOLLECTION) + { + switch (dims) + { + case GAIA_XY_Z: + xtype = GAIA_GEOMETRYCOLLECTIONZ; + break; + case GAIA_XY_M: + xtype = GAIA_GEOMETRYCOLLECTIONM; + break; + case GAIA_XY_Z_M: + xtype = GAIA_GEOMETRYCOLLECTIONZM; + break; + default: + xtype = GAIA_GEOMETRYCOLLECTION; + break; + }; + } + if (xxtype == -1) + xtype = -1; /* GEOMETRY */ + if (!recoverGeomColumn (sqlite, table, column, xtype, dims, srid)) + { + spatialite_e ("RecoverGeometryColumn(): validation failed\n"); + sqlite3_result_int (context, 0); + return; + } +/* deleting anyway any previous definition */ + sql_statement = sqlite3_mprintf ("DELETE FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(?) AND " + "Lower(f_geometry_column) = Lower(?)"); + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("RecoverGeometryColumn: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_result_int (context, 0); + return; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("RecoverGeometryColumn() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + goto error; + } + sqlite3_finalize (stmt); + + if (metadata_version == 1) + { + /* legacy metadata style <= v.3.1.0 */ + switch (xtype) + { + case GAIA_POINT: + case GAIA_POINTZ: + case GAIA_POINTM: + case GAIA_POINTZM: + p_type = "POINT"; + break; + case GAIA_LINESTRING: + case GAIA_LINESTRINGZ: + case GAIA_LINESTRINGM: + case GAIA_LINESTRINGZM: + p_type = "LINESTRING"; + break; + case GAIA_POLYGON: + case GAIA_POLYGONZ: + case GAIA_POLYGONM: + case GAIA_POLYGONZM: + p_type = "POLYGON"; + break; + case GAIA_MULTIPOINT: + case GAIA_MULTIPOINTZ: + case GAIA_MULTIPOINTM: + case GAIA_MULTIPOINTZM: + p_type = "MULTIPOINT"; + break; + case GAIA_MULTILINESTRING: + case GAIA_MULTILINESTRINGZ: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTILINESTRINGZM: + p_type = "MULTILINESTRING"; + break; + case GAIA_MULTIPOLYGON: + case GAIA_MULTIPOLYGONZ: + case GAIA_MULTIPOLYGONM: + case GAIA_MULTIPOLYGONZM: + p_type = "MULTIPOLYGON"; + break; + case GAIA_GEOMETRYCOLLECTION: + case GAIA_GEOMETRYCOLLECTIONZ: + case GAIA_GEOMETRYCOLLECTIONM: + case GAIA_GEOMETRYCOLLECTIONZM: + p_type = "GEOMETRYCOLLECTION"; + break; + case -1: + p_type = "GEOMETRY"; + break; + }; + strcat (sql, "', '"); + switch (dims) + { + case GAIA_XY: + p_dims = "XY"; + break; + case GAIA_XY_Z: + p_dims = "XYZ"; + break; + case GAIA_XY_M: + p_dims = "XYM"; + break; + case GAIA_XY_Z_M: + p_dims = "XYZM"; + break; + }; +/* Sandro 2013-01-07 +/ fixing an issue reported by Peter Aronson [ESRI] + sql_statement = sqlite3_mprintf ("INSERT INTO geometry_columns " + "(f_table_name, f_geometry_column, type, coord_dimension, srid, " + "spatial_index_enabled) VALUES (Lower(?), Lower(?), %Q, %Q, ?, 0)", + p_type, p_dims); +*/ + sql_statement = sqlite3_mprintf ("INSERT INTO geometry_columns " + "(f_table_name, f_geometry_column, type, coord_dimension, srid, " + "spatial_index_enabled) VALUES (?, ?, %Q, %Q, ?, 0)", + p_type, p_dims); + } + else + { + /* current metadata style >= v.4.0.0 */ + switch (xtype) + { + case GAIA_POINT: + n_type = 1; + n_dims = 2; + break; + case GAIA_POINTZ: + n_type = 1001; + n_dims = 3; + break; + case GAIA_POINTM: + n_type = 2001; + n_dims = 3; + break; + case GAIA_POINTZM: + n_type = 3001; + n_dims = 4; + break; + case GAIA_LINESTRING: + n_type = 2; + n_dims = 2; + break; + case GAIA_LINESTRINGZ: + n_type = 1002; + n_dims = 3; + break; + case GAIA_LINESTRINGM: + n_type = 2002; + n_dims = 3; + break; + case GAIA_LINESTRINGZM: + n_type = 3002; + n_dims = 4; + break; + case GAIA_POLYGON: + n_type = 3; + n_dims = 2; + break; + case GAIA_POLYGONZ: + n_type = 1003; + n_dims = 3; + break; + case GAIA_POLYGONM: + n_type = 2003; + n_dims = 3; + break; + case GAIA_POLYGONZM: + n_type = 3003; + n_dims = 4; + break; + case GAIA_MULTIPOINT: + n_type = 4; + n_dims = 2; + break; + case GAIA_MULTIPOINTZ: + n_type = 1004; + n_dims = 3; + break; + case GAIA_MULTIPOINTM: + n_type = 2004; + n_dims = 3; + break; + case GAIA_MULTIPOINTZM: + n_type = 3004; + n_dims = 4; + break; + case GAIA_MULTILINESTRING: + n_type = 5; + n_dims = 2; + break; + case GAIA_MULTILINESTRINGZ: + n_type = 1005; + n_dims = 3; + break; + case GAIA_MULTILINESTRINGM: + n_type = 2005; + n_dims = 3; + break; + case GAIA_MULTILINESTRINGZM: + n_type = 3005; + n_dims = 4; + break; + case GAIA_MULTIPOLYGON: + n_type = 6; + n_dims = 2; + break; + case GAIA_MULTIPOLYGONZ: + n_type = 1006; + n_dims = 3; + break; + case GAIA_MULTIPOLYGONM: + n_type = 2006; + n_dims = 3; + break; + case GAIA_MULTIPOLYGONZM: + n_type = 3006; + n_dims = 4; + break; + case GAIA_GEOMETRYCOLLECTION: + n_type = 7; + n_dims = 2; + break; + case GAIA_GEOMETRYCOLLECTIONZ: + n_type = 1007; + n_dims = 3; + break; + case GAIA_GEOMETRYCOLLECTIONM: + n_type = 2007; + n_dims = 3; + break; + case GAIA_GEOMETRYCOLLECTIONZM: + n_type = 3007; + n_dims = 4; + break; + case -1: + switch (dims) + { + case GAIA_XY: + n_type = 0; + n_dims = 2; + break; + case GAIA_XY_Z: + n_type = 1000; + n_dims = 3; + break; + case GAIA_XY_M: + n_type = 2000; + n_dims = 3; + break; + case GAIA_XY_Z_M: + n_type = 3000; + n_dims = 4; + break; + }; + break; + }; + sql_statement = sqlite3_mprintf ("INSERT INTO geometry_columns " + "(f_table_name, f_geometry_column, geometry_type, coord_dimension, " + "srid, spatial_index_enabled) VALUES (Lower(?), Lower(?), %d, %d, ?, 0)", + n_type, n_dims); + } + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("RecoverGeometryColumn: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_result_int (context, 0); + return; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + if (srid < 0) + sqlite3_bind_int (stmt, 3, -1); + else + sqlite3_bind_int (stmt, 3, srid); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("RecoverGeometryColumn() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + goto error; + } + sqlite3_finalize (stmt); + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + + /* inserting a row into GEOMETRY_COLUMNS_AUTH */ + strcpy (sql, + "INSERT OR REPLACE INTO geometry_columns_auth (f_table_name, f_geometry_column, "); + strcat (sql, "read_only, hidden) VALUES (Lower(?), Lower(?), 0, 0)"); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("RecoverGeometryColumn: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_result_int (context, 0); + return; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("RecoverGeometryColumn() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + goto error; + } + sqlite3_finalize (stmt); + /* inserting a row into GEOMETRY_COLUMNS_STATISTICS */ + strcpy (sql, + "INSERT OR REPLACE INTO geometry_columns_statistics (f_table_name, f_geometry_column) "); + strcat (sql, "VALUES (Lower(?), Lower(?))"); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("RecoverGeometryColumn: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_result_int (context, 0); + return; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("RecoverGeometryColumn() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + goto error; + } + sqlite3_finalize (stmt); + /* inserting a row into GEOMETRY_COLUMNS_TIME */ + strcpy (sql, + "INSERT OR REPLACE INTO geometry_columns_time (f_table_name, f_geometry_column) "); + strcat (sql, "VALUES (Lower(?), Lower(?))"); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("RecoverGeometryColumn: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_result_int (context, 0); + return; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("RecoverGeometryColumn() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + goto error; + } + sqlite3_finalize (stmt); + } + updateGeometryTriggers (sqlite, table, column); + sqlite3_result_int (context, 1); + switch (xtype) + { + case GAIA_POINT: + case GAIA_POINTZ: + case GAIA_POINTM: + case GAIA_POINTZM: + p_type = "POINT"; + break; + case GAIA_LINESTRING: + case GAIA_LINESTRINGZ: + case GAIA_LINESTRINGM: + case GAIA_LINESTRINGZM: + p_type = "LINESTRING"; + break; + case GAIA_POLYGON: + case GAIA_POLYGONZ: + case GAIA_POLYGONM: + case GAIA_POLYGONZM: + p_type = "POLYGON"; + break; + case GAIA_MULTIPOINT: + case GAIA_MULTIPOINTZ: + case GAIA_MULTIPOINTM: + case GAIA_MULTIPOINTZM: + p_type = "MULTIPOINT"; + break; + case GAIA_MULTILINESTRING: + case GAIA_MULTILINESTRINGZ: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTILINESTRINGZM: + p_type = "MULTILINESTRING"; + break; + case GAIA_MULTIPOLYGON: + case GAIA_MULTIPOLYGONZ: + case GAIA_MULTIPOLYGONM: + case GAIA_MULTIPOLYGONZM: + p_type = "MULTIPOLYGON"; + break; + case GAIA_GEOMETRYCOLLECTION: + case GAIA_GEOMETRYCOLLECTIONZ: + case GAIA_GEOMETRYCOLLECTIONM: + case GAIA_GEOMETRYCOLLECTIONZM: + p_type = "GEOMETRYCOLLECTION"; + break; + case -1: + p_type = "GEOMETRY"; + break; + }; + switch (dims) + { + case GAIA_XY: + p_dims = "XY"; + break; + case GAIA_XY_Z: + p_dims = "XYZ"; + break; + case GAIA_XY_M: + p_dims = "XYM"; + break; + case GAIA_XY_Z_M: + p_dims = "XYZM"; + break; + }; + sql_statement = + sqlite3_mprintf ("Geometry [%s,%s,SRID=%d] successfully recovered", + p_type, p_dims, (srid <= 0) ? -1 : srid); + updateSpatiaLiteHistory (sqlite, table, column, sql_statement); + sqlite3_free (sql_statement); + return; + error: + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_DiscardGeometryColumn (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ DiscardGeometryColumn(table, column) +/ +/ removes TABLE.COLUMN from the Spatial MetaData [thus disabling triggers too] +/ returns 1 on success +/ 0 on failure +*/ + const unsigned char *table; + const unsigned char *column; + char *p_table = NULL; + char *p_column = NULL; + sqlite3_stmt *stmt; + char *sql_statement; + char *raw; + char *quoted; + char *errMsg = NULL; + int ret; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("DiscardGeometryColumn() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + table = sqlite3_value_text (argv[0]); + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("DiscardGeometryColumn() error: argument 2 [column_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + column = sqlite3_value_text (argv[1]); + + sql_statement = sqlite3_mprintf ("DELETE FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(?) " + "AND Lower(f_geometry_column) = Lower(?)"); + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("DiscardGeometryColumn: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_result_int (context, 0); + return; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, (const char *) table, + strlen ((const char *) table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, (const char *) column, + strlen ((const char *) column), SQLITE_STATIC); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("DiscardGeometryColumn() error: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + goto error; + } + sqlite3_finalize (stmt); +/* removing triggers too */ + if (!getRealSQLnames + (sqlite, (const char *) table, (const char *) column, &p_table, + &p_column)) + { + spatialite_e + ("DiscardGeometryColumn() error: not existing Table or Column\n"); + sqlite3_result_int (context, 0); + return; + } + raw = sqlite3_mprintf ("ggi_%s_%s", p_table, p_column); + quoted = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("ggu_%s_%s", p_table, p_column); + quoted = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("gii_%s_%s", p_table, p_column); + quoted = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("giu_%s_%s", p_table, p_column); + quoted = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("gid_%s_%s", p_table, p_column); + quoted = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("gci_%s_%s", p_table, p_column); + quoted = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("gcu_%s_%s", p_table, p_column); + quoted = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("gcd_%s_%s", p_table, p_column); + quoted = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("tmi_%s_%s", p_table, p_column); + quoted = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("tmu_%s_%s", p_table, p_column); + quoted = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("tmd_%s_%s", p_table, p_column); + quoted = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + + /* trying to delete old versions [v2.0, v2.2] triggers[if any] */ + raw = sqlite3_mprintf ("gti_%s_%s", p_table, p_column); + quoted = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("gtu_%s_%s", p_table, p_column); + quoted = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("gsi_%s_%s", p_table, p_column); + quoted = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + raw = sqlite3_mprintf ("gsu_%s_%s", p_table, p_column); + quoted = gaiaDoubleQuotedSql (raw); + sqlite3_free (raw); + sql_statement = sqlite3_mprintf ("DROP TRIGGER IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + /* end deletion old versions [v2.0, v2.2] triggers[if any] */ + + sqlite3_result_int (context, 1); + updateSpatiaLiteHistory (sqlite, p_table, + p_column, "Geometry successfully discarded"); + free (p_table); + free (p_column); + return; + error: + if (p_table) + free (p_table); + if (p_column) + free (p_column); + spatialite_e ("DiscardGeometryColumn() error: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + sqlite3_result_int (context, 0); + return; +} + +static int +registerVirtual (sqlite3 * sqlite, const char *table) +{ +/* attempting to register a VirtualGeometry */ + char gtype[64]; + int xtype = -1; + int srid; + char **results; + int ret; + int rows; + int columns; + int i; + char *errMsg = NULL; + int ok_virt_name = 0; + int ok_virt_geometry = 0; + int ok_srid = 0; + int ok_geometry_type = 0; + int ok_type = 0; + int ok_coord_dimension = 0; + int xdims; + char *quoted; + char *sql_statement; + +/* testing the layout of virts_geometry_columns table */ + ret = sqlite3_get_table (sqlite, + "PRAGMA table_info(virts_geometry_columns)", + &results, &rows, &columns, &errMsg); + if (ret != SQLITE_OK) + { + spatialite_e ("RegisterVirtualGeometry() error: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + return 0; + } + for (i = 1; i <= rows; i++) + { + if (strcasecmp ("virt_name", results[(i * columns) + 1]) == 0) + ok_virt_name = 1; + if (strcasecmp ("virt_geometry", results[(i * columns) + 1]) == 0) + ok_virt_geometry = 1; + if (strcasecmp ("srid", results[(i * columns) + 1]) == 0) + ok_srid = 1; + if (strcasecmp ("geometry_type", results[(i * columns) + 1]) == 0) + ok_geometry_type = 1; + if (strcasecmp ("type", results[(i * columns) + 1]) == 0) + ok_type = 1; + if (strcasecmp ("coord_dimension", results[(i * columns) + 1]) == 0) + ok_coord_dimension = 1; + } + sqlite3_free_table (results); + + if (ok_virt_name && ok_virt_geometry && ok_srid && ok_geometry_type + && ok_coord_dimension) + ; + else if (ok_virt_name && ok_virt_geometry && ok_srid && ok_type) + ; + else + return 0; + +/* determining Geometry Type and dims */ + quoted = gaiaDoubleQuotedSql (table); + sql_statement = + sqlite3_mprintf ("SELECT DISTINCT " + "ST_GeometryType(Geometry), ST_Srid(Geometry) FROM \"%s\"", + quoted); + free (quoted); + ret = sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("RegisterVirtualGeometry() error: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + return 0; + } + for (i = 1; i <= rows; i++) + { + if (results[(i * columns)] == NULL) + *gtype = '\0'; + else + strcpy (gtype, results[(i * columns)]); + if (results[(i * columns) + 1] == NULL) + srid = 0; + else + srid = atoi (results[(i * columns) + 1]); + } + sqlite3_free_table (results); + +/* normalized Geometry type */ + if (strcmp (gtype, "POINT") == 0) + xtype = 1; + if (strcmp (gtype, "POINT Z") == 0) + xtype = 1001; + if (strcmp (gtype, "POINT M") == 0) + xtype = 2001; + if (strcmp (gtype, "POINT ZM") == 0) + xtype = 3001; + if (strcmp (gtype, "LINESTRING") == 0) + xtype = 2; + if (strcmp (gtype, "LINESTRING Z") == 0) + xtype = 1002; + if (strcmp (gtype, "LINESTRING M") == 0) + xtype = 2002; + if (strcmp (gtype, "LINESTRING ZM") == 0) + xtype = 3002; + if (strcmp (gtype, "POLYGON") == 0) + xtype = 3; + if (strcmp (gtype, "POLYGON Z") == 0) + xtype = 1003; + if (strcmp (gtype, "POLYGON M") == 0) + xtype = 2003; + if (strcmp (gtype, "POLYGON ZM") == 0) + xtype = 3003; + if (strcmp (gtype, "MULTIPOINT") == 0) + xtype = 4; + if (strcmp (gtype, "MULTIPOINT Z") == 0) + xtype = 1004; + if (strcmp (gtype, "MULTIPOINT M") == 0) + xtype = 2004; + if (strcmp (gtype, "MULTIPOINT ZM") == 0) + xtype = 3004; + if (strcmp (gtype, "MULTILINESTRING") == 0) + xtype = 5; + if (strcmp (gtype, "MULTILINESTRING Z") == 0) + xtype = 1005; + if (strcmp (gtype, "MULTILINESTRING M") == 0) + xtype = 2005; + if (strcmp (gtype, "MULTILINESTRING ZM") == 0) + xtype = 3005; + if (strcmp (gtype, "MULTIPOLYGON") == 0) + xtype = 6; + if (strcmp (gtype, "MULTIPOLYGON Z") == 0) + xtype = 1006; + if (strcmp (gtype, "MULTIPOLYGON M") == 0) + xtype = 2006; + if (strcmp (gtype, "MULTIPOLYGON ZM") == 0) + xtype = 3006; + +/* updating metadata tables */ + xdims = -1; + switch (xtype) + { + case 1: + case 2: + case 3: + case 4: + case 5: + case 6: + xdims = 2; + break; + case 1001: + case 1002: + case 1003: + case 1004: + case 1005: + case 1006: + case 2001: + case 2002: + case 2003: + case 2004: + case 2005: + case 2006: + xdims = 3; + break; + case 3001: + case 3002: + case 3003: + case 3004: + case 3005: + case 3006: + xdims = 4; + break; + }; + if (ok_geometry_type) + { + /* has the "geometry_type" column */ + sql_statement = + sqlite3_mprintf + ("INSERT OR REPLACE INTO virts_geometry_columns " + "(virt_name, virt_geometry, geometry_type, coord_dimension, srid) " + "VALUES (Lower(%Q), 'geometry', %d, %d, %d)", table, xtype, + xdims, srid); + } + else + { + /* has the "type" column */ + const char *xgtype = "UNKNOWN"; + switch (xtype) + { + case 1: + case 1001: + case 2001: + case 3001: + xgtype = "POINT"; + break; + case 2: + case 1002: + case 2002: + case 3002: + xgtype = "LINESTRING"; + break; + case 3: + case 1003: + case 2003: + case 3003: + xgtype = "POLYGON"; + break; + case 4: + case 1004: + case 2004: + case 3004: + xgtype = "MULTIPOINT"; + break; + case 5: + case 1005: + case 2005: + case 3005: + xgtype = "MULTILINESTRING"; + break; + case 6: + case 1006: + case 2006: + case 3006: + xgtype = "MULTIPOLYGON"; + break; + }; + sql_statement = + sqlite3_mprintf + ("INSERT OR REPLACE INTO virts_geometry_columns " + "(virt_name, virt_geometry, type, srid) " + "VALUES (Lower(%Q), 'geometry', %Q, %d)", table, xgtype, srid); + } + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("RegisterVirtualGeometry() error: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + return 0; + } + if (checkSpatialMetaData (sqlite) == 3) + { + /* current metadata style >= v.4.0.0 */ + + /* inserting a row into VIRTS_GEOMETRY_COLUMNS_AUTH */ + sql_statement = sqlite3_mprintf ("INSERT OR REPLACE INTO " + "virts_geometry_columns_auth (virt_name, virt_geometry, hidden) " + "VALUES (Lower(%Q), 'geometry', 0)", + table); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("RegisterVirtualGeometry() error: \"%s\"\n", + errMsg); + sqlite3_free (errMsg); + return 0; + } + /* inserting a row into GEOMETRY_COLUMNS_STATISTICS */ + sql_statement = sqlite3_mprintf ("INSERT OR REPLACE INTO " + "virts_geometry_columns_statistics (virt_name, virt_geometry) " + "VALUES (Lower(%Q), 'geometry')", + table); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("RegisterVirtualGeometry() error: \"%s\"\n", + errMsg); + sqlite3_free (errMsg); + return 0; + } + } + return 1; +} + +static void +fnct_RegisterVirtualGeometry (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ RegisterVirtualGeometry(table) +/ +/ insert/updates TABLE.COLUMN into the Spatial MetaData [Virtual Table] +/ returns 1 on success +/ 0 on failure +*/ + const unsigned char *table; + char sql[1024]; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("RegisterVirtualGeometry() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + table = sqlite3_value_text (argv[0]); + if (!registerVirtual (sqlite, (char *) table)) + goto error; + sqlite3_result_int (context, 1); + strcpy (sql, "Virtual Geometry successfully registered"); + updateSpatiaLiteHistory (sqlite, (const char *) table, "Geometry", sql); + return; + error: + spatialite_e ("RegisterVirtualGeometry() error\n"); + sqlite3_result_int (context, 0); + return; +} + + +static void +fnct_DropVirtualGeometry (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ DropVirtualGeometry(table) +/ +/ removes TABLE.COLUMN from the Spatial MetaData and DROPs the Virtual Table +/ returns 1 on success +/ 0 on failure +*/ + const unsigned char *table; + char *sql_statement; + char *errMsg = NULL; + int ret; + char *quoted; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("DropVirtualGeometry() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + table = sqlite3_value_text (argv[0]); + sql_statement = sqlite3_mprintf ("DELETE FROM virts_geometry_columns " + "WHERE Lower(virt_name) = Lower(%Q)", + table); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + quoted = gaiaDoubleQuotedSql ((const char *) table); + sql_statement = sqlite3_mprintf ("DROP TABLE IF EXISTS \"%s\"", quoted); + free (quoted); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + sqlite3_result_int (context, 1); + updateSpatiaLiteHistory (sqlite, (const char *) table, "Geometry", + "Virtual Geometry successfully dropped"); + return; + error: + spatialite_e ("DropVirtualGeometry() error: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_InitFDOSpatialMetaData (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ InitFDOSpatialMetaData(void) +/ +/ creates the FDO-styled SPATIAL_REF_SYS and GEOMETRY_COLUMNS tables +/ returns 1 on success +/ 0 on failure +*/ + char sql[1024]; + char *errMsg = NULL; + int ret; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ +/* creating the SPATIAL_REF_SYS tables */ + strcpy (sql, "CREATE TABLE spatial_ref_sys (\n"); + strcat (sql, "srid INTEGER PRIMARY KEY,\n"); + strcat (sql, "auth_name TEXT,\n"); + strcat (sql, "auth_srid INTEGER,\n"); + strcat (sql, "srtext TEXT)"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + goto error; +/* creating the GEOMETRY_COLUMN tables */ + strcpy (sql, "CREATE TABLE geometry_columns (\n"); + strcat (sql, "f_table_name TEXT,\n"); + strcat (sql, "f_geometry_column TEXT,\n"); + strcat (sql, "geometry_type INTEGER,\n"); + strcat (sql, "coord_dimension INTEGER,\n"); + strcat (sql, "srid INTEGER,\n"); + strcat (sql, "geometry_format TEXT)"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + goto error; + sqlite3_result_int (context, 1); + return; + error: + spatialite_e ("InitFDOSpatiaMetaData() error: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + sqlite3_result_int (context, 0); + return; +} + +static int +recoverFDOGeomColumn (sqlite3 * sqlite, const unsigned char *table, + const unsigned char *column, int xtype, int srid) +{ +/* checks if TABLE.COLUMN exists and has the required features */ + int ok = 1; + char *sql_statement; + int type; + sqlite3_stmt *stmt; + gaiaGeomCollPtr geom; + const void *blob_value; + int len; + int ret; + int i_col; + char *xcolumn; + char *xtable; + xcolumn = gaiaDoubleQuotedSql ((char *) column); + xtable = gaiaDoubleQuotedSql ((char *) table); + sql_statement = + sqlite3_mprintf ("SELECT \"%s\" FROM \"%s\"", xcolumn, xtable); + free (xcolumn); + free (xtable); +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("recoverFDOGeomColumn: error %d \"%s\"\n", + sqlite3_errcode (sqlite), sqlite3_errmsg (sqlite)); + return 0; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + /* checking Geometry features */ + geom = NULL; + for (i_col = 0; i_col < sqlite3_column_count (stmt); i_col++) + { + if (sqlite3_column_type (stmt, i_col) != SQLITE_BLOB) + ok = 0; + else + { + blob_value = sqlite3_column_blob (stmt, i_col); + len = sqlite3_column_bytes (stmt, i_col); + geom = gaiaFromSpatiaLiteBlobWkb (blob_value, len); + if (!geom) + ok = 0; + else + { + if (geom->Srid != srid) + ok = 0; + /* normalizing Geometry Type */ + switch (gaiaGeometryType (geom)) + { + case GAIA_POINT: + case GAIA_POINTZ: + case GAIA_POINTM: + case GAIA_POINTZM: + type = GAIA_POINT; + break; + case GAIA_LINESTRING: + case GAIA_LINESTRINGZ: + case GAIA_LINESTRINGM: + case GAIA_LINESTRINGZM: + type = GAIA_LINESTRING; + break; + case GAIA_POLYGON: + case GAIA_POLYGONZ: + case GAIA_POLYGONM: + case GAIA_POLYGONZM: + type = GAIA_POLYGON; + break; + case GAIA_MULTIPOINT: + case GAIA_MULTIPOINTZ: + case GAIA_MULTIPOINTM: + case GAIA_MULTIPOINTZM: + type = GAIA_MULTIPOINT; + break; + case GAIA_MULTILINESTRING: + case GAIA_MULTILINESTRINGZ: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTILINESTRINGZM: + type = GAIA_MULTILINESTRING; + break; + case GAIA_MULTIPOLYGON: + case GAIA_MULTIPOLYGONZ: + case GAIA_MULTIPOLYGONM: + case GAIA_MULTIPOLYGONZM: + type = GAIA_MULTIPOLYGON; + break; + case GAIA_GEOMETRYCOLLECTION: + case GAIA_GEOMETRYCOLLECTIONZ: + case GAIA_GEOMETRYCOLLECTIONM: + case GAIA_GEOMETRYCOLLECTIONZM: + type = GAIA_GEOMETRYCOLLECTION; + break; + default: + type = -1; + break; + }; + if (xtype == type) + ; + else + ok = 0; + gaiaFreeGeomColl (geom); + } + } + } + } + if (!ok) + break; + } + ret = sqlite3_finalize (stmt); + if (ret != SQLITE_OK) + { + spatialite_e ("recoverFDOGeomColumn: error %d \"%s\"\n", + sqlite3_errcode (sqlite), sqlite3_errmsg (sqlite)); + return 0; + } + return ok; +} + +static void +fnct_AddFDOGeometryColumn (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ AddFDOGeometryColumn(table, column, srid, geometry_type , dimension, geometry_format ) +/ +/ creates a new COLUMN of given TYPE into TABLE +/ returns 1 on success +/ 0 on failure +*/ + const char *table; + const char *column; + const char *format; + char xformat[64]; + int type; + int srid = -1; + int dimension = 2; + char *sql_statement; + char *errMsg = NULL; + int ret; + char **results; + int rows; + int columns; + int i; + int oktbl; + char *xtable; + char *xcolumn; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("AddFDOGeometryColumn() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + table = (const char *) sqlite3_value_text (argv[0]); + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("AddFDOGeometryColumn() error: argument 2 [column_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + column = (const char *) sqlite3_value_text (argv[1]); + if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) + { + spatialite_e + ("AddFDOGeometryColumn() error: argument 3 [SRID] is not of the Integer type\n"); + sqlite3_result_int (context, 0); + return; + } + srid = sqlite3_value_int (argv[2]); + if (sqlite3_value_type (argv[3]) != SQLITE_INTEGER) + { + spatialite_e + ("AddFDOGeometryColumn() error: argument 4 [geometry_type] is not of the Integer type\n"); + sqlite3_result_int (context, 0); + return; + } + type = sqlite3_value_int (argv[3]); + if (sqlite3_value_type (argv[4]) != SQLITE_INTEGER) + { + spatialite_e + ("AddFDOGeometryColumn() error: argument 5 [dimension] is not of the Integer type\n"); + sqlite3_result_int (context, 0); + return; + } + dimension = sqlite3_value_int (argv[4]); + if (sqlite3_value_type (argv[5]) != SQLITE_TEXT) + { + spatialite_e + ("AddFDOGeometryColumn() error: argument 6 [geometry_format] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + format = (const char *) sqlite3_value_text (argv[5]); + if (type == + GAIA_POINT + || type == + GAIA_LINESTRING + || type == + GAIA_POLYGON + || type == + GAIA_MULTIPOINT + || type == + GAIA_MULTILINESTRING + || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) + ; + else + { + spatialite_e + ("AddFDOGeometryColumn() error: argument 4 [geometry_type] has an illegal value\n"); + sqlite3_result_int (context, 0); + return; + } + if (dimension < 2 || dimension > 4) + { + spatialite_e + ("AddFDOGeometryColumn() error: argument 5 [dimension] current version only accepts dimension=2,3,4\n"); + sqlite3_result_int (context, 0); + return; + } + if (strcasecmp (format, "WKT") == 0) + strcpy (xformat, "WKT"); + else if (strcasecmp (format, "WKB") == 0) + strcpy (xformat, "WKB"); + else if (strcasecmp (format, "FGF") == 0) + strcpy (xformat, "FGF"); + else if (strcasecmp (format, "SPATIALITE") == 0) + strcpy (xformat, "SPATIALITE"); + else + { + spatialite_e + ("AddFDOGeometryColumn() error: argument 6 [geometry_format] has to be one of: WKT,WKB,FGF,SPATIALITE\n"); + sqlite3_result_int (context, 0); + return; + } +/* checking if the table exists */ + xtable = gaiaDoubleQuotedSql (table); + xcolumn = gaiaDoubleQuotedSql (column); + sql_statement = sqlite3_mprintf ("SELECT name FROM sqlite_master " + "WHERE type = 'table' AND Upper(name) = Upper(%Q)", + table); + free (xtable); + free (xcolumn); + ret = sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("AddFDOGeometryColumn: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + return; + } + oktbl = 0; + for (i = 1; i <= rows; i++) + oktbl = 1; + sqlite3_free_table (results); + if (!oktbl) + { + spatialite_e + ("AddFDOGeometryColumn() error: table '%s' does not exist\n", + table); + sqlite3_result_int (context, 0); + return; + } +/* trying to add the column */ + xtable = gaiaDoubleQuotedSql (table); + xcolumn = gaiaDoubleQuotedSql (column); + sql_statement = sqlite3_mprintf ("ALTER TABLE \"%s\" " + "ADD COLUMN \"%s\" BLOB", xtable, xcolumn); + free (xtable); + free (xcolumn); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; +/*ok, inserting into geometry_columns [FDO Spatial Metadata] */ + sql_statement = sqlite3_mprintf ("INSERT INTO geometry_columns " + "(f_table_name, f_geometry_column, geometry_type, " + "coord_dimension, srid, geometry_format) VALUES (%Q, %Q, %d, %d, %d, %Q)", + table, column, type, dimension, + (srid <= 0) ? -1 : srid, xformat); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + sqlite3_result_int (context, 1); + return; + error: + spatialite_e ("AddFDOGeometryColumn() error: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_RecoverFDOGeometryColumn (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ RecoverFDOGeometryColumn(table, column, srid, geometry_type , dimension, geometry_format ) +/ +/ checks if an existing TABLE.COLUMN satisfies the required geometric features +/ if yes adds it to FDO-styled SpatialMetaData +/ returns 1 on success +/ 0 on failure +*/ + const char *table; + const char *column; + const char *format; + char xformat[64]; + int type; + int srid = -1; + int dimension = 2; + char *sql_statement; + char *errMsg = NULL; + int ret; + char **results; + int rows; + int columns; + int i; + int ok_tbl; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("RecoverFDOGeometryColumn() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + table = (const char *) sqlite3_value_text (argv[0]); + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("RecoverFDOGeometryColumn() error: argument 2 [column_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + column = (const char *) sqlite3_value_text (argv[1]); + if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) + { + spatialite_e + ("RecoverFDOGeometryColumn() error: argument 3 [SRID] is not of the Integer type\n"); + sqlite3_result_int (context, 0); + return; + } + srid = sqlite3_value_int (argv[2]); + if (sqlite3_value_type (argv[3]) != SQLITE_INTEGER) + { + spatialite_e + ("RecoverFDOGeometryColumn() error: argument 4 [geometry_type] is not of the Integer type\n"); + sqlite3_result_int (context, 0); + return; + } + type = sqlite3_value_int (argv[3]); + if (sqlite3_value_type (argv[4]) != SQLITE_INTEGER) + { + spatialite_e + ("RecoverFDOGeometryColumn() error: argument 5 [dimension] is not of the Integer type\n"); + sqlite3_result_int (context, 0); + return; + } + dimension = sqlite3_value_int (argv[4]); + if (sqlite3_value_type (argv[5]) != SQLITE_TEXT) + { + spatialite_e + ("RecoverFDOGeometryColumn() error: argument 6 [geometry_format] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + format = (const char *) sqlite3_value_text (argv[5]); + if (type == + GAIA_POINT + || type == + GAIA_LINESTRING + || type == + GAIA_POLYGON + || type == + GAIA_MULTIPOINT + || type == + GAIA_MULTILINESTRING + || type == GAIA_MULTIPOLYGON || type == GAIA_GEOMETRYCOLLECTION) + ; + else + { + spatialite_e + ("RecoverFDOGeometryColumn() error: argument 4 [geometry_type] has an illegal value\n"); + sqlite3_result_int (context, 0); + return; + } + if (dimension < 2 || dimension > 4) + { + spatialite_e + ("RecoverFDOGeometryColumn() error: argument 5 [dimension] current version only accepts dimension=2,3,4\n"); + sqlite3_result_int (context, 0); + return; + } + if (strcasecmp (format, "WKT") == 0) + strcpy (xformat, "WKT"); + else if (strcasecmp (format, "WKB") == 0) + strcpy (xformat, "WKB"); + else if (strcasecmp (format, "FGF") == 0) + strcpy (xformat, "FGF"); + else if (strcasecmp (format, "SPATIALITE") == 0) + strcpy (xformat, "SPATIALITE"); + else + { + spatialite_e + ("RecoverFDOGeometryColumn() error: argument 6 [geometry_format] has to be one of: WKT,WKB,FGF\n"); + sqlite3_result_int (context, 0); + return; + } +/* checking if the table exists */ + sql_statement = sqlite3_mprintf ("SELECT name FROM sqlite_master " + "WHERE type = 'table' AND Upper(name) = Upper(%Q)", + table); + ret = sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("RecoverFDOGeometryColumn: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + return; + } + ok_tbl = 0; + for (i = 1; i <= rows; i++) + ok_tbl = 1; + sqlite3_free_table (results); + if (!ok_tbl) + { + spatialite_e + ("RecoverFDOGeometryColumn() error: table '%s' does not exist\n", + table); + sqlite3_result_int (context, 0); + return; + } + if (!recoverFDOGeomColumn + (sqlite, (const unsigned char *) table, + (const unsigned char *) column, type, srid)) + { + spatialite_e ("RecoverFDOGeometryColumn(): validation failed\n"); + sqlite3_result_int (context, 0); + return; + } + sql_statement = sqlite3_mprintf ("INSERT INTO geometry_columns " + "(f_table_name, f_geometry_column, geometry_type, " + "coord_dimension, srid, geometry_format) VALUES (%Q, %Q, %d, %d, %d, %Q)", + table, column, type, dimension, + (srid <= 0) ? -1 : srid, xformat); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + sqlite3_result_int (context, 1); + return; + error: + spatialite_e ("RecoverFDOGeometryColumn() error: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_DiscardFDOGeometryColumn (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ DiscardFDOGeometryColumn(table, column) +/ +/ removes TABLE.COLUMN from the Spatial MetaData +/ returns 1 on success +/ 0 on failure +*/ + const unsigned char *table; + const unsigned char *column; + char *sql_statement; + char *errMsg = NULL; + int ret; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("DiscardFDOGeometryColumn() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + table = sqlite3_value_text (argv[0]); + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("DiscardFDOGeometryColumn() error: argument 2 [column_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + column = sqlite3_value_text (argv[1]); + sql_statement = + sqlite3_mprintf + ("DELETE FROM geometry_columns WHERE Upper(f_table_name) = " + "Upper(%Q) AND Upper(f_geometry_column) = Upper(%Q)", table, column); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + sqlite3_result_int (context, 1); + return; + error: + spatialite_e ("DiscardFDOGeometryColumn() error: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + sqlite3_result_int (context, 0); + return; +} + +static int +eval_rtree_entry (int ok_geom, double geom_value, int ok_rtree, + double rtree_value) +{ +/* evaluating geom-coord and rtree-coord */ + if (!ok_geom && !ok_rtree) + return 1; + if (ok_geom && ok_rtree) + { + float g = (float) geom_value; + float r = (float) rtree_value; + double tic = fabs (geom_value - r) * 2.0; + float diff = g - r; + if (diff > tic) + return 0; + return 1; + } + return 0; +} + +static int +check_spatial_index (sqlite3 * sqlite, const unsigned char *table, + const unsigned char *geom) +{ +/* attempting to check an R*Tree for consistency */ + char *xtable = NULL; + char *xgeom = NULL; + char *idx_name; + char *xidx_name = NULL; + char sql[1024]; + char *sql_statement; + int ret; + int is_defined = 0; + sqlite3_stmt *stmt; + sqlite3_int64 count_geom; + sqlite3_int64 count_rtree; + sqlite3_int64 count_rev = 0; + double g_xmin; + double g_ymin; + double g_xmax; + double g_ymax; + int ok_g_xmin; + int ok_g_ymin; + int ok_g_xmax; + int ok_g_ymax; + double i_xmin; + double i_ymin; + double i_xmax; + double i_ymax; + int ok_i_xmin; + int ok_i_ymin; + int ok_i_xmax; + int ok_i_ymax; + int rowid_column = 0; + int without_rowid = 0; + + if (is_without_rowid_table (sqlite, (char *) table)) + { + spatialite_e ("check_spatial_index: table \"%s\" is WITHOUT ROWID\n", + table); + without_rowid = 1; + goto err_label; + } + +/* checking if the R*Tree Spatial Index is defined */ + sql_statement = sqlite3_mprintf ("SELECT Count(*) FROM geometry_columns " + "WHERE Upper(f_table_name) = Upper(%Q) " + "AND Upper(f_geometry_column) = Upper(%Q) AND spatial_index_enabled = 1", + table, geom); + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CheckSpatialIndex SQL error: %s\n", + sqlite3_errmsg (sqlite)); + goto err_label; + } + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + is_defined = sqlite3_column_int (stmt, 0); + else + { + spatialite_e ("sqlite3_step() error: %s\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + goto err_label; + } + } + sqlite3_finalize (stmt); + if (!is_defined) + goto err_label; + + xgeom = gaiaDoubleQuotedSql ((char *) geom); + xtable = gaiaDoubleQuotedSql ((char *) table); + idx_name = sqlite3_mprintf ("idx_%s_%s", table, geom); + xidx_name = gaiaDoubleQuotedSql (idx_name); + sqlite3_free (idx_name); + + if (!validateRowid (sqlite, (const char *) table)) + { + /* a physical column named "rowid" shadows the real ROWID */ + rowid_column = 1; + goto err_label; + } + +/* counting how many Geometries are set into the main-table */ + sql_statement = sqlite3_mprintf ("SELECT Count(*) FROM \"%s\" " + "WHERE ST_GeometryType(\"%s\") IS NOT NULL", + xtable, xgeom); + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CheckSpatialIndex SQL error: %s\n", + sqlite3_errmsg (sqlite)); + goto err_label; + } + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + count_geom = sqlite3_column_int (stmt, 0); + else + { + spatialite_e ("sqlite3_step() error: %s\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + goto err_label; + } + } + sqlite3_finalize (stmt); + +/* counting how many R*Tree entries are defined */ + sql_statement = sqlite3_mprintf ("SELECT Count(*) FROM \"%s\"", xidx_name); + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CheckSpatialIndex SQL error: %s\n", + sqlite3_errmsg (sqlite)); + goto err_label; + } + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + count_rtree = sqlite3_column_int (stmt, 0); + else + { + spatialite_e ("sqlite3_step() error: %s\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + goto err_label; + } + } + sqlite3_finalize (stmt); + if (count_geom != count_rtree) + { + /* unexpected count difference */ + goto mismatching_zero; + } + +/* now we'll check the R*Tree against the corresponding geometry-table */ + sql_statement = + sqlite3_mprintf ("SELECT MbrMinX(g.\"%s\"), MbrMinY(g.\"%s\"), " + "MbrMaxX(g.\"%s\"), MbrMaxY(g.\"%s\"), i.xmin, i.ymin, i.xmax, i.ymax\n" + "FROM \"%s\" AS i\nLEFT JOIN \"%s\" AS g ON (g.ROWID = i.pkid)", + xgeom, xgeom, xgeom, xgeom, xidx_name, xtable); + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CheckSpatialIndex SQL error: %s\n", + sqlite3_errmsg (sqlite)); + goto err_label; + } + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + /* checking a row */ + count_rev++; + ok_g_xmin = 1; + ok_g_ymin = 1; + ok_g_xmax = 1; + ok_g_ymax = 1; + ok_i_xmin = 1; + ok_i_ymin = 1; + ok_i_xmax = 1; + ok_i_ymax = 1; + if (sqlite3_column_type (stmt, 0) == SQLITE_NULL) + ok_g_xmin = 0; + else + g_xmin = sqlite3_column_double (stmt, 0); + if (sqlite3_column_type (stmt, 1) == SQLITE_NULL) + ok_g_ymin = 0; + else + g_ymin = sqlite3_column_double (stmt, 1); + if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) + ok_g_xmax = 0; + else + g_xmax = sqlite3_column_double (stmt, 2); + if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) + ok_g_ymax = 0; + else + g_ymax = sqlite3_column_double (stmt, 3); + if (sqlite3_column_type (stmt, 4) == SQLITE_NULL) + ok_i_xmin = 0; + else + i_xmin = sqlite3_column_double (stmt, 4); + if (sqlite3_column_type (stmt, 5) == SQLITE_NULL) + ok_i_ymin = 0; + else + i_ymin = sqlite3_column_double (stmt, 5); + if (sqlite3_column_type (stmt, 6) == SQLITE_NULL) + ok_i_xmax = 0; + else + i_xmax = sqlite3_column_double (stmt, 6); + if (sqlite3_column_type (stmt, 7) == SQLITE_NULL) + ok_i_ymax = 0; + else + i_ymax = sqlite3_column_double (stmt, 7); + if (eval_rtree_entry (ok_g_xmin, g_xmin, ok_i_xmin, i_xmin) + == 0) + goto mismatching; + if (eval_rtree_entry (ok_g_ymin, g_ymin, ok_i_ymin, i_ymin) + == 0) + goto mismatching; + if (eval_rtree_entry (ok_g_xmax, g_xmax, ok_i_xmax, i_xmax) + == 0) + goto mismatching; + if (eval_rtree_entry (ok_g_ymax, g_ymax, ok_i_ymax, i_ymax) + == 0) + goto mismatching; + } + else + { + spatialite_e ("sqlite3_step() error: %s\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + goto err_label; + } + } + sqlite3_finalize (stmt); + if (count_geom != count_rev) + goto mismatching; + strcpy (sql, "Check SpatialIndex: is valid"); + updateSpatiaLiteHistory (sqlite, (const char *) table, + (const char *) geom, sql); + free (xgeom); + free (xtable); + free (xidx_name); + return 1; + mismatching: + sqlite3_finalize (stmt); + strcpy (sql, "Check SpatialIndex: INCONSISTENCIES detected"); + updateSpatiaLiteHistory (sqlite, (const char *) table, + (const char *) geom, sql); + mismatching_zero: + if (xgeom) + free (xgeom); + if (xtable) + free (xtable); + if (xidx_name) + free (xidx_name); + return 0; + err_label: + if (xgeom) + free (xgeom); + if (xtable) + free (xtable); + if (xidx_name) + free (xidx_name); + if (rowid_column) + return -2; + if (without_rowid) + return -3; + return -1; +} + +static int +check_any_spatial_index (sqlite3 * sqlite) +{ +/* attempting to check any defined R*Tree for consistency */ + const unsigned char *table; + const unsigned char *column; + int status; + char sql[1024]; + int ret; + int invalid_rtree = 0; + sqlite3_stmt *stmt; + +/* retrieving any defined R*Tree */ + strcpy (sql, + "SELECT f_table_name, f_geometry_column FROM geometry_columns "); + strcat (sql, "WHERE spatial_index_enabled = 1"); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("CheckSpatialIndex SQL error: %s\n", + sqlite3_errmsg (sqlite)); + return -1; + } + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + /* checking a single R*Tree */ + table = sqlite3_column_text (stmt, 0); + column = sqlite3_column_text (stmt, 1); + status = check_spatial_index (sqlite, table, column); + if (status < 0) + { + sqlite3_finalize (stmt); + return status; + } + if (status == 0) + invalid_rtree = 1; + } + else + { + spatialite_e ("sqlite3_step() error: %s\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + return -1; + } + } + sqlite3_finalize (stmt); + if (invalid_rtree) + return 0; + return 1; +} + +static void +fnct_CheckSpatialIndex (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CheckSpatialIndex() +/ CheckSpatialIndex(table, column) +/ +/ checks a SpatialIndex for consistency, returning: +/ 1 - the R*Tree is fully consistent +/ 0 - the R*Tree is inconsistent +/ -1 if any physical "ROWID" column exist shadowing the real ROWID +/ NULL on failure +*/ + const unsigned char *table; + const unsigned char *column; + int status; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (argc == 0) + { + /* no arguments: we must check any defined R*Tree */ + status = check_any_spatial_index (sqlite); + if (status < 0) + { + if (status == -2) + sqlite3_result_int (context, -1); + else + sqlite3_result_null (context); + } + else if (status > 0) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + return; + } + + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("CheckSpatialIndex() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_null (context); + return; + } + table = sqlite3_value_text (argv[0]); + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("CheckSpatialIndex() error: argument 2 [column_name] is not of the String type\n"); + sqlite3_result_null (context); + return; + } + column = sqlite3_value_text (argv[1]); + status = check_spatial_index (sqlite, table, column); + if (status == -2) + sqlite3_result_int (context, -1); + else if (status == -3) + sqlite3_result_int (context, -1); + else if (status < 0) + sqlite3_result_null (context); + else if (status > 0) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); +} + +static int +recover_spatial_index (sqlite3 * sqlite, const unsigned char *table, + const unsigned char *geom) +{ +/* attempting to rebuild an R*Tree */ + char *sql_statement; + char *errMsg = NULL; + int ret; + char *idx_name; + char *xidx_name; + char sql[1024]; + int is_defined = 0; + sqlite3_stmt *stmt; + int status; + +/* checking if the R*Tree Spatial Index is defined */ + sql_statement = sqlite3_mprintf ("SELECT Count(*) FROM geometry_columns " + "WHERE Upper(f_table_name) = Upper(%Q) " + "AND Upper(f_geometry_column) = Upper(%Q) AND spatial_index_enabled = 1", + table, geom); + ret = sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("RecoverSpatialIndex SQL error: %s\n", + sqlite3_errmsg (sqlite)); + return -1; + } + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + is_defined = sqlite3_column_int (stmt, 0); + else + { + spatialite_e ("sqlite3_step() error: %s\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + return -1; + } + } + sqlite3_finalize (stmt); + if (!is_defined) + return -1; + +/* erasing the R*Tree table */ + idx_name = sqlite3_mprintf ("idx_%s_%s", table, geom); + xidx_name = gaiaDoubleQuotedSql (idx_name); + sqlite3_free (idx_name); + sql_statement = sqlite3_mprintf ("DELETE FROM \"%s\"", xidx_name); + free (xidx_name); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; +/* populating the R*Tree table from scratch */ + status = buildSpatialIndexEx (sqlite, table, (const char *) geom); + if (status == 0) + ; + else + { + if (status == -2) + { + strcpy (sql, + "SpatialIndex: a physical column named ROWID shadows the real ROWID"); + updateSpatiaLiteHistory (sqlite, (const char *) table, + (const char *) geom, sql); + } + else + { + strcpy (sql, "SpatialIndex: unable to rebuild the R*Tree"); + updateSpatiaLiteHistory (sqlite, (const char *) table, + (const char *) geom, sql); + } + return status; + } + strcpy (sql, "SpatialIndex: successfully recovered"); + updateSpatiaLiteHistory (sqlite, (const char *) table, + (const char *) geom, sql); + return 1; + error: + spatialite_e ("RecoverSpatialIndex() error: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + return 0; +} + +static int +recover_any_spatial_index (sqlite3 * sqlite, int no_check) +{ +/* attempting to rebuild any defined R*Tree */ + const unsigned char *table; + const unsigned char *column; + int status; + char sql[1024]; + int ret; + int to_be_fixed; + int rowid_column = 0; + int without_rowid = 0; + sqlite3_stmt *stmt; + +/* retrieving any defined R*Tree */ + strcpy (sql, + "SELECT f_table_name, f_geometry_column FROM geometry_columns "); + strcat (sql, "WHERE spatial_index_enabled = 1"); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("RecoverSpatialIndex SQL error: %s\n", + sqlite3_errmsg (sqlite)); + return -1; + } + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + /* checking a single R*Tree */ + table = sqlite3_column_text (stmt, 0); + column = sqlite3_column_text (stmt, 1); + to_be_fixed = 1; + if (!no_check) + { + status = check_spatial_index (sqlite, table, column); + if (status < 0) + { + /* some unexpected error occurred */ + if (status == -2) + rowid_column = 1; + if (status == -3) + without_rowid = 1; + goto fatal_error; + } + else if (status > 0) + { + /* the Spatial Index is already valid */ + to_be_fixed = 0; + } + } + if (to_be_fixed) + { + /* rebuilding the Spatial Index */ + status = recover_spatial_index (sqlite, table, column); + if (status < 0) + { + /* some unexpected error occurred */ + if (status == -2) + rowid_column = 1; + if (status == -3) + without_rowid = 1; + goto fatal_error; + } + else if (status == 0) + goto error; + } + } + else + { + spatialite_e ("sqlite3_step() error: %s\n", + sqlite3_errmsg (sqlite)); + sqlite3_finalize (stmt); + return -1; + } + } + sqlite3_finalize (stmt); + return 1; + error: + sqlite3_finalize (stmt); + return 0; + fatal_error: + sqlite3_finalize (stmt); + if (rowid_column) + return -2; + if (without_rowid) + return -3; + return -1; +} + +static void +fnct_RecoverSpatialIndex (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ RecoverSpatialIndex() +/ RecoverSpatialIndex(no_check) +/ RecoverSpatialIndex(table, column) +/ RecoverSpatialIndex(table, column, no_check) +/ +/ attempts to rebuild a SpatialIndex, returning: +/ 1 - on success +/ 0 - on failure +/ -1 if any physical "ROWID" column exist shadowing the real ROWID +/ or if the table was created WITHOUT ROWID +/ NULL if any syntax error is detected +*/ + const unsigned char *table; + const unsigned char *column; + int no_check = 0; + int status; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (argc <= 1) + { + /* no arguments: we must rebuild any defined R*Tree */ + if (argc == 1) + { + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + no_check = sqlite3_value_int (argv[0]); + else + { + spatialite_e + ("RecoverSpatialIndex() error: argument 1 [no_check] is not of the Integer type\n"); + sqlite3_result_null (context); + return; + } + } + status = recover_any_spatial_index (sqlite, no_check); + if (status < 0) + { + if (status == -2) + sqlite3_result_int (context, -1); + else if (status == -3) + sqlite3_result_int (context, -1); + else + sqlite3_result_null (context); + } + else if (status > 0) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + return; + } + + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("RecoverSpatialIndex() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_null (context); + return; + } + table = sqlite3_value_text (argv[0]); + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("RecoverSpatialIndex() error: argument 2 [column_name] is not of the String type\n"); + sqlite3_result_null (context); + return; + } + column = sqlite3_value_text (argv[1]); + if (argc == 3) + { + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + no_check = sqlite3_value_int (argv[2]); + else + { + spatialite_e + ("RecoverSpatialIndex() error: argument 2 [no_check] is not of the Integer type\n"); + sqlite3_result_null (context); + return; + } + } + if (!no_check) + { + /* checking the current SpatialIndex validity */ + status = check_spatial_index (sqlite, table, column); + if (status < 0) + { + /* some unexpected error occurred */ + if (status == -2 || status == -3) + sqlite3_result_int (context, -1); + else + sqlite3_result_null (context); + return; + } + else if (status > 0) + { + /* the Spatial Index is already valid */ + sqlite3_result_int (context, 1); + return; + } + } +/* rebuilding the Spatial Index */ + status = recover_spatial_index (sqlite, table, column); + if (status == -2) + sqlite3_result_int (context, -1); + else if (status < 0) + sqlite3_result_null (context); + else if (status > 0) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); +} + +static void +fnct_CheckShadowedRowid (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CheckShadowedRowid(table) +/ +/ checks if some table has a "rowid" physical column shadowing the real ROWID +/ 1 - yes, the ROWID is shadowed +/ 0 - no, the ROWID isn't shadowed +/ NULL on failure (e.g. not existing table) +*/ + const unsigned char *table; + int ret; + char sql[128]; + sqlite3_stmt *stmt; + int exists = 0; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("CheckShadowedRowid() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_null (context); + return; + } + table = sqlite3_value_text (argv[0]); + +/* checking if the table exists */ + strcpy (sql, + "SELECT name FROM sqlite_master WHERE type = 'table' AND Lower(name) = Lower(?)"); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("CheckShadowedRowid: \"%s\"\n", + sqlite3_errmsg (sqlite)); + sqlite3_result_null (context); + return; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, (const char *) table, + strlen ((const char *) table), SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + exists = 1; + } + sqlite3_finalize (stmt); + if (!exists) + sqlite3_result_null (context); + else + { + if (!validateRowid (sqlite, (const char *) table)) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + } +} + +static void +fnct_CheckWithoutRowid (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CheckWithoutRowid(table) +/ +/ checks if some table has been created WITHOUT ROWID +/ 1 - yes, the table is WITHOUT ROWID +/ 0 - no, the ROWID should be supported +/ NULL on failure (e.g. not existing table) +*/ + const unsigned char *table; + int ret; + char sql[128]; + sqlite3_stmt *stmt; + int exists = 0; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("CheckWithoutRowid() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_null (context); + return; + } + table = sqlite3_value_text (argv[0]); + +/* checking if the table exists */ + strcpy (sql, + "SELECT name FROM sqlite_master WHERE type = 'table' AND Lower(name) = Lower(?)"); + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("CheckWithoutRowid: \"%s\"\n", sqlite3_errmsg (sqlite)); + sqlite3_result_null (context); + return; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, (const char *) table, + strlen ((const char *) table), SQLITE_STATIC); + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + exists = 1; + } + sqlite3_finalize (stmt); + if (!exists) + sqlite3_result_null (context); + else + { + if (is_without_rowid_table (sqlite, (const char *) table)) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + } +} + +static void +fnct_CreateSpatialIndex (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CreateSpatialIndex(table, column ) +/ +/ creates a SpatialIndex based on Column and Table +/ returns 1 on success +/ 0 on failure +*/ + const char *table; + const char *column; + char *sql_statement; + char sql[1024]; + char *errMsg = NULL; + int ret; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("CreateSpatialIndex() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + table = (const char *) sqlite3_value_text (argv[0]); + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("CreateSpatialIndex() error: argument 2 [column_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + column = (const char *) sqlite3_value_text (argv[1]); + if (is_without_rowid_table (sqlite, table)) + { + spatialite_e + ("CreateSpatialIndex() error: table '%s' is WITHOUT ROWID\n", + table); + sqlite3_result_int (context, -1); + return; + } + if (!validateRowid (sqlite, table)) + { + spatialite_e + ("CreateSpatialIndex() error: a physical column named ROWID shadows the real ROWID\n"); + sqlite3_result_int (context, -1); + return; + } + sql_statement = + sqlite3_mprintf + ("UPDATE geometry_columns SET spatial_index_enabled = 1 " + "WHERE Upper(f_table_name) = Upper(%Q) AND " + "Upper(f_geometry_column) = Upper(%Q) AND spatial_index_enabled = 0", + table, column); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + if (sqlite3_changes (sqlite) == 0) + { + spatialite_e + ("CreateSpatialIndex() error: either \"%s\".\"%s\" isn't a Geometry column or a SpatialIndex is already defined\n", + table, column); + sqlite3_result_int (context, 0); + return; + } + updateGeometryTriggers (sqlite, table, column); + sqlite3_result_int (context, 1); + strcpy (sql, "R*Tree Spatial Index successfully created"); + updateSpatiaLiteHistory (sqlite, table, column, sql); + return; + error: + spatialite_e ("CreateSpatialIndex() error: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_CreateMbrCache (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CreateMbrCache(table, column ) +/ +/ creates an MBR Cache based on Column and Table +/ returns 1 on success +/ 0 on failure +*/ + const char *table; + const char *column; + char *sql_statement; + char sql[1024]; + char *errMsg = NULL; + int ret; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("CreateMbrCache() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + table = (const char *) sqlite3_value_text (argv[0]); + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("CreateMbrCache() error: argument 2 [column_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + column = (const char *) sqlite3_value_text (argv[1]); + sql_statement = + sqlite3_mprintf + ("UPDATE geometry_columns SET spatial_index_enabled = 2 " + "WHERE Upper(f_table_name) = Upper(%Q) " + "AND Upper(f_geometry_column) = Upper(%Q) AND spatial_index_enabled = 0", + table, column); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + if (sqlite3_changes (sqlite) == 0) + { + spatialite_e + ("CreateMbrCache() error: either \"%s\".\"%s\" isn't a Geometry column or a SpatialIndex is already defined\n", + table, column); + sqlite3_result_int (context, 0); + return; + } + updateGeometryTriggers (sqlite, table, column); + sqlite3_result_int (context, 1); + strcpy (sql, "MbrCache successfully created"); + updateSpatiaLiteHistory (sqlite, table, column, sql); + return; + error: + spatialite_e ("CreateMbrCache() error: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_DisableSpatialIndex (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ DisableSpatialIndex(table, column ) +/ +/ disables a SpatialIndex based on Column and Table +/ returns 1 on success +/ 0 on failure +*/ + const char *table; + const char *column; + char sql[1024]; + char *sql_statement; + char *errMsg = NULL; + int ret; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("DisableSpatialIndex() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + table = (const char *) sqlite3_value_text (argv[0]); + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("DisableSpatialIndex() error: argument 2 [column_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + column = (const char *) sqlite3_value_text (argv[1]); + + sql_statement = + sqlite3_mprintf + ("UPDATE geometry_columns SET spatial_index_enabled = 0 " + "WHERE Upper(f_table_name) = Upper(%Q) AND " + "Upper(f_geometry_column) = Upper(%Q) AND spatial_index_enabled <> 0", + table, column); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + if (sqlite3_changes (sqlite) == 0) + { + spatialite_e + ("DisableSpatialIndex() error: either \"%s\".\"%s\" isn't a Geometry column or no SpatialIndex is defined\n", + table, column); + sqlite3_result_int (context, 0); + return; + } + updateGeometryTriggers (sqlite, table, column); + sqlite3_result_int (context, 1); + strcpy (sql, "SpatialIndex successfully disabled"); + updateSpatiaLiteHistory (sqlite, table, column, sql); + return; + error: + spatialite_e ("DisableSpatialIndex() error: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_RebuildGeometryTriggers (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ RebuildGeometryTriggers(table, column ) +/ +/ rebuilds Geometry Triggers (constraints) based on Column and Table +/ returns 1 on success +/ 0 on failure +*/ + const char *table; + const char *column; + char *sql_statement; + char *errMsg = NULL; + int ret; + char **results; + int rows; + int columns; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("RebuildGeometryTriggers() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + table = (const char *) sqlite3_value_text (argv[0]); + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("RebuildGeometryTriggers() error: argument 2 [column_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + column = (const char *) sqlite3_value_text (argv[1]); + sql_statement = + sqlite3_mprintf ("SELECT f_table_name FROM geometry_columns " + "WHERE Upper(f_table_name) = Upper(%Q) AND Upper(f_geometry_column) = Upper (%Q)", + table, column); + ret = sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto error; + sqlite3_free_table (results); + if (rows <= 0) + { + spatialite_e + ("RebuildGeometryTriggers() error: \"%s\".\"%s\" isn't a Geometry column\n", + table, column); + sqlite3_result_int (context, 0); + return; + } + updateGeometryTriggers (sqlite, table, column); + sqlite3_result_int (context, 1); + updateSpatiaLiteHistory (sqlite, table, column, + "Geometry Triggers successfully rebuilt"); + return; + error: + spatialite_e ("RebuildGeometryTriggers() error: \"%s\"\n", errMsg); + sqlite3_free (errMsg); + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_UpdateLayerStatistics (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ UpdateLayerStatistics(table, column ) +/ +/ Updates LAYER_STATISTICS [based on Column and Table] +/ returns 1 on success +/ 0 on failure +*/ + const char *sql; + const char *table = NULL; + const char *column = NULL; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (argc >= 1) + { + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("UpdateLayerStatistics() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + table = (const char *) sqlite3_value_text (argv[0]); + } + if (argc >= 2) + { + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("UpdateLayerStatistics() error: argument 2 [column_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + column = (const char *) sqlite3_value_text (argv[1]); + } + if (!update_layer_statistics (sqlite, table, column)) + goto error; + sqlite3_result_int (context, 1); + sql = "UpdateLayerStatistics"; + if (table == NULL) + table = "ALL-TABLES"; + if (column == NULL) + column = "ALL-GEOMETRY-COLUMNS"; + updateSpatiaLiteHistory (sqlite, (const char *) table, + (const char *) column, sql); + return; + error: + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_GetLayerExtent (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ GetLayerExtent(table) +/ GetLayerExtent(table, column ) +/ GetLayerExtent(table, column, pessimistic ) +/ +/ Return a Geometry (Envelope) corresponding to the full layer +/ extent [eventually updating the supporting statistics +/ NULL on failure +*/ + const char *table = NULL; + const char *column = NULL; + int pessimistic = 0; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geom; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (argc >= 1) + { + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("GetLayerExtent() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_null (context); + return; + } + table = (const char *) sqlite3_value_text (argv[0]); + } + if (argc >= 2) + { + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("GetLayerExtent() error: argument 2 [column_name] is not of the String type\n"); + sqlite3_result_null (context); + return; + } + column = (const char *) sqlite3_value_text (argv[1]); + } + if (argc >= 3) + { + if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) + { + spatialite_e + ("GetLayerExtent() error: argument 3 [OPTIMISTIC/PESSIMISTIC] is not of the Integer type\n"); + sqlite3_result_null (context); + return; + } + pessimistic = sqlite3_value_int (argv[2]); + } + geom = gaiaGetLayerExtent (sqlite, table, column, pessimistic); + if (!geom) + goto error; +/* builds the BLOB geometry to be returned */ + gaiaToSpatiaLiteBlobWkb (geom, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (geom); + return; + error: + sqlite3_result_null (context); + return; +} + +static void +fnct_InvalidateLayerStatistics (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ InvalidateLayerStatistics(void) +/ InvalidateLayerStatistics(table) +/ InvalidateLayerStatistics(table, column ) +/ +/ Immediately and unconditionally invalidates Layer Statistics +/ returns 1 on success +/ 0 on failure +*/ + const char *sql; + const char *table = NULL; + const char *column = NULL; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (argc >= 1) + { + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("InvalidateLayerStatistics() error: argument 1 [table_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + table = (const char *) sqlite3_value_text (argv[0]); + } + if (argc >= 2) + { + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + spatialite_e + ("InvalidateLayerStatistics() error: argument 2 [column_name] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + column = (const char *) sqlite3_value_text (argv[1]); + } + if (!gaiaStatisticsInvalidate (sqlite, table, column)) + goto error; + sqlite3_result_int (context, 1); + sql = "InvalidateLayerStatistics"; + if (table == NULL) + table = "ALL-TABLES"; + if (column == NULL) + column = "ALL-GEOMETRY-COLUMNS"; + updateSpatiaLiteHistory (sqlite, (const char *) table, + (const char *) column, sql); + return; + error: + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_CreateRasterCoveragesTable (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CreateRasterCoveragesTable() +/ +/ creates the main RasterCoverages table +/ returns 1 on success +/ 0 on failure +*/ + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + + if (!createRasterCoveragesTable (sqlite)) + goto error; + updateSpatiaLiteHistory (sqlite, "*** Raster Coverages ***", NULL, + "Main table successfully created"); + sqlite3_result_int (context, 1); + return; + + error: + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_CreateMetaCatalogTables (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CreateMetaCatalogTables(transaction TRUE|FALSE) +/ +/ creates (or re-creates) both "splite_metacatalog" +/ and "splite_metacatalog_statistics" tables +/ returns 1 on success +/ 0 on failure +*/ + char *errMsg = NULL; + int ret; + int transaction = 0; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + + if (sqlite3_value_type (argv[0]) != SQLITE_INTEGER) + { + spatialite_e + ("CreateMetaCatalogTables() error: argument 1 [TRANSACTION] is not of the Integer type\n"); + sqlite3_result_null (context); + return; + } + transaction = sqlite3_value_int (argv[0]); + if (transaction) + { + /* starting a Transaction */ + ret = sqlite3_exec (sqlite, "BEGIN", NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + goto error; + } + if (!gaiaCreateMetaCatalogTables (sqlite)) + goto error; + if (transaction) + { + /* committing the still pending Transaction */ + ret = sqlite3_exec (sqlite, "COMMIT", NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + goto error; + } + updateSpatiaLiteHistory (sqlite, "*** MetaCatalog ***", NULL, + "Tables successfully created and initialized"); + sqlite3_result_int (context, 1); + return; + + error: + if (transaction) + { + /* performing a Rollback */ + ret = sqlite3_exec (sqlite, "ROLLBACK", NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + sqlite3_free (errMsg); + } + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_UpdateMetaCatalogStatistics (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ UpdateMetaCatalogStatistics(transaction TRUE|FALSE, table, column) +/ UpdateMetaCatalogStatistics(transaction TRUE|FALSE, master_table, table_name, column_name) +/ +/ updates the MetaCatalog statistics +/ returns 1 on success +/ 0 on failure +*/ + char *errMsg = NULL; + int ret; + int transaction = 0; + const char *master_table = NULL; + const char *table = NULL; + const char *column = NULL; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + + if (sqlite3_value_type (argv[0]) != SQLITE_INTEGER) + { + spatialite_e + ("UpdateMetaCatalogStatistics() error: argument 1 [TRANSACTION] is not of the Integer type\n"); + sqlite3_result_null (context); + return; + } + transaction = sqlite3_value_int (argv[0]); + if (argc == 3) + { + /* table & column mode */ + if (sqlite3_value_type (argv[1]) == SQLITE_TEXT) + table = (const char *) sqlite3_value_text (argv[1]); + else + { + spatialite_e + ("UpdateMetaCatalogStatistics() error: argument 2 [TABLE_NAME] is not of the Text type\n"); + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_TEXT) + column = (const char *) sqlite3_value_text (argv[2]); + else + { + spatialite_e + ("UpdateMetaCatalogStatistics() error: argument 2 [COLUMN_NAME] is not of the Text type\n"); + sqlite3_result_null (context); + return; + } + } + else + { + /* master-table & table_name & column_name mode */ + if (sqlite3_value_type (argv[1]) == SQLITE_TEXT) + master_table = (const char *) sqlite3_value_text (argv[1]); + else + { + spatialite_e + ("UpdateMetaCatalogStatistics() error: argument 2 [MASTER_TABLE] is not of the Text type\n"); + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_TEXT) + table = (const char *) sqlite3_value_text (argv[2]); + else + { + spatialite_e + ("UpdateMetaCatalogStatistics() error: argument 3 [TABLE_NAME] is not of the Text type\n"); + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_TEXT) + column = (const char *) sqlite3_value_text (argv[3]); + else + { + spatialite_e + ("UpdateMetaCatalogStatistics() error: argument 3 [COLUMN_NAME] is not of the Text type\n"); + sqlite3_result_null (context); + return; + } + } + if (transaction) + { + /* starting a Transaction */ + ret = sqlite3_exec (sqlite, "BEGIN", NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + goto error; + } + if (master_table != NULL) + { + if (!gaiaUpdateMetaCatalogStatisticsFromMaster + (sqlite, master_table, table, column)) + goto error; + } + else + { + if (!gaiaUpdateMetaCatalogStatistics (sqlite, table, column)) + goto error; + } + if (transaction) + { + /* committing the still pending Transaction */ + ret = sqlite3_exec (sqlite, "COMMIT", NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + goto error; + } + updateSpatiaLiteHistory (sqlite, "*** MetaCatalog ***", NULL, + "Statistics successfully updated"); + sqlite3_result_int (context, 1); + return; + + error: + if (transaction) + { + /* performing a Rollback */ + ret = sqlite3_exec (sqlite, "ROLLBACK", NULL, NULL, &errMsg); + if (ret != SQLITE_OK) + sqlite3_free (errMsg); + } + sqlite3_result_int (context, 0); + return; +} + +static gaiaPointPtr +simplePoint (gaiaGeomCollPtr geo) +{ +/* helper function +/ if this GEOMETRY contains only one POINT, and no other elementary geometry +/ the POINT address will be returned +/ otherwise NULL will be returned +*/ + int cnt = 0; + gaiaPointPtr point; + gaiaPointPtr this_point = NULL; + if (!geo) + return NULL; + if (geo->FirstLinestring || geo->FirstPolygon) + return NULL; + point = geo->FirstPoint; + while (point) + { + /* counting how many POINTs are there */ + cnt++; + this_point = point; + point = point->Next; + } + if (cnt == 1 && this_point) + return this_point; + return NULL; +} + +static gaiaLinestringPtr +simpleLinestring (gaiaGeomCollPtr geo) +{ +/* helper function +/ if this GEOMETRY contains only one LINESTRING, and no other elementary geometry +/ the LINESTRING address will be returned +/ otherwise NULL will be returned +*/ + int cnt = 0; + gaiaLinestringPtr line; + gaiaLinestringPtr this_line = NULL; + if (!geo) + return NULL; + if (geo->FirstPoint || geo->FirstPolygon) + return NULL; + line = geo->FirstLinestring; + while (line) + { + /* counting how many LINESTRINGs are there */ + cnt++; + this_line = line; + line = line->Next; + } + if (cnt == 1 && this_line) + return this_line; + return NULL; +} + +static gaiaPolygonPtr +simplePolygon (gaiaGeomCollPtr geo) +{ +/* helper function +/ if this GEOMETRY contains only one POLYGON, and no other elementary geometry +/ the POLYGON address will be returned +/ otherwise NULL will be returned +*/ + int cnt = 0; + gaiaPolygonPtr polyg; + gaiaPolygonPtr this_polyg = NULL; + if (!geo) + return NULL; + if (geo->FirstPoint || geo->FirstLinestring) + return NULL; + polyg = geo->FirstPolygon; + while (polyg) + { + /* counting how many POLYGONs are there */ + cnt++; + this_polyg = polyg; + polyg = polyg->Next; + } + if (cnt == 1 && this_polyg) + return this_polyg; + return NULL; +} + +static void +fnct_AsText (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AsText(BLOB encoded geometry) +/ +/ returns the corresponding WKT encoded value +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + gaiaOutBuffer out_buf; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + gaiaOutBufferInitialize (&out_buf); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaOutWkt (&out_buf, geo); + if (out_buf.Error || out_buf.Buffer == NULL) + sqlite3_result_null (context); + else + { + len = out_buf.WriteOffset; + sqlite3_result_text (context, out_buf.Buffer, len, free); + out_buf.Buffer = NULL; + } + } + gaiaFreeGeomColl (geo); + gaiaOutBufferReset (&out_buf); +} + +static void +fnct_AsWkt (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AsWkt(BLOB encoded geometry [, Integer precision]) +/ +/ returns the corresponding WKT encoded value +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + int precision = 15; + gaiaOutBuffer out_buf; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (argc == 2) + { + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + precision = sqlite3_value_int (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + gaiaOutBufferInitialize (&out_buf); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaOutWktStrict (&out_buf, geo, precision); + if (out_buf.Error || out_buf.Buffer == NULL) + sqlite3_result_null (context); + else + { + len = out_buf.WriteOffset; + sqlite3_result_text (context, out_buf.Buffer, len, free); + out_buf.Buffer = NULL; + } + } + gaiaFreeGeomColl (geo); + gaiaOutBufferReset (&out_buf); +} + +/* +/ +/ AsSvg(geometry,[relative], [precision]) implementation +/ +//////////////////////////////////////////////////////////// +/ +/ Author: Klaus Foerster klaus.foerster@svg.cc +/ version 0.9. 2008 September 21 + / + */ + +static void +fnct_AsSvg (sqlite3_context * context, int argc, sqlite3_value ** argv, + int relative, int precision) +{ +/* SQL function: + AsSvg(BLOB encoded geometry, [int relative], [int precision]) + returns the corresponding SVG encoded value or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + gaiaOutBuffer out_buf; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + { + sqlite3_result_null (context); + return; + } + else + { + /* make sure relative is 0 or 1 */ + if (relative > 0) + relative = 1; + else + relative = 0; + /* make sure precision is between 0 and 15 - default to 6 if absent */ + if (precision > GAIA_SVG_DEFAULT_MAX_PRECISION) + precision = GAIA_SVG_DEFAULT_MAX_PRECISION; + if (precision < 0) + precision = 0; + /* produce SVG-notation - actual work is done in gaiageo/gg_wkt.c */ + gaiaOutBufferInitialize (&out_buf); + gaiaOutSvg (&out_buf, geo, relative, precision); + if (out_buf.Error || out_buf.Buffer == NULL) + sqlite3_result_null (context); + else + { + len = out_buf.WriteOffset; + sqlite3_result_text (context, out_buf.Buffer, len, free); + out_buf.Buffer = NULL; + } + } + gaiaFreeGeomColl (geo); + gaiaOutBufferReset (&out_buf); +} + +static void +fnct_AsSvg1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* called without additional arguments */ + fnct_AsSvg (context, argc, argv, GAIA_SVG_DEFAULT_RELATIVE, + GAIA_SVG_DEFAULT_PRECISION); +} + +static void +fnct_AsSvg2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* called with relative-switch */ + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + fnct_AsSvg (context, argc, argv, sqlite3_value_int (argv[1]), + GAIA_SVG_DEFAULT_PRECISION); + else + sqlite3_result_null (context); +} + +static void +fnct_AsSvg3 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* called with relative-switch and precision-argument */ + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER + && sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + fnct_AsSvg (context, argc, argv, sqlite3_value_int (argv[1]), + sqlite3_value_int (argv[2])); + else + sqlite3_result_null (context); +} + +/* END of Klaus Foerster AsSvg() implementation */ + +SPATIALITE_PRIVATE void +getProjParams (void *p_sqlite, int srid, char **proj_params) +{ +/* retrives the PROJ params from SPATIAL_SYS_REF table, if possible */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + char *sql; + char **results; + int rows; + int columns; + int i; + int ret; + int len; + const char *proj4text; + char *errMsg = NULL; + *proj_params = NULL; + sql = sqlite3_mprintf + ("SELECT proj4text FROM spatial_ref_sys WHERE srid = %d", srid); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("unknown SRID: %d\t<%s>\n", srid, errMsg); + sqlite3_free (errMsg); + return; + } + for (i = 1; i <= rows; i++) + { + proj4text = results[(i * columns)]; + if (proj4text != NULL) + { + len = strlen (proj4text); + *proj_params = malloc (len + 1); + strcpy (*proj_params, proj4text); + } + } + if (*proj_params == NULL) + spatialite_e ("unknown SRID: %d\n", srid); + sqlite3_free_table (results); +} + +#ifndef OMIT_PROJ /* PROJ.4 is strictly required to support KML */ +static void +fnct_AsKml1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AsKml(BLOB encoded geometry [, Integer precision]) +/ +/ returns the corresponding 'bare geom' KML representation +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + gaiaOutBuffer out_buf; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geo_wgs84; + char *proj_from; + char *proj_to; + int precision = 15; + void *data = sqlite3_user_data (context); + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (argc == 2) + { + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + precision = sqlite3_value_int (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + } + gaiaOutBufferInitialize (&out_buf); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + if (geo->Srid == 4326) + ; /* already WGS84 */ + else if (geo->Srid <= 0) + { + /* unknown SRID: giving up */ + sqlite3_result_null (context); + goto stop; + } + else + { + /* attempting to reproject into WGS84 */ + getProjParams (sqlite, geo->Srid, &proj_from); + getProjParams (sqlite, 4326, &proj_to); + if (proj_to == NULL || proj_from == NULL) + { + if (proj_from) + free (proj_from); + if (proj_to) + free (proj_to); + sqlite3_result_null (context); + goto stop; + } + if (data != NULL) + geo_wgs84 = gaiaTransform_r (data, geo, proj_from, proj_to); + else + geo_wgs84 = gaiaTransform (geo, proj_from, proj_to); + free (proj_from); + free (proj_to); + if (!geo_wgs84) + { + sqlite3_result_null (context); + goto stop; + } + /* ok, reprojection was successful */ + gaiaFreeGeomColl (geo); + geo = geo_wgs84; + } + /* produce KML-notation - actual work is done in gaiageo/gg_wkt.c */ + gaiaOutBareKml (&out_buf, geo, precision); + if (out_buf.Error || out_buf.Buffer == NULL) + sqlite3_result_null (context); + else + { + len = out_buf.WriteOffset; + sqlite3_result_text (context, out_buf.Buffer, len, free); + out_buf.Buffer = NULL; + } + } + stop: + gaiaFreeGeomColl (geo); + gaiaOutBufferReset (&out_buf); +} + +static void +fnct_AsKml3 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AsKml(Anything name, Anything description, BLOB encoded geometry [, Integer precision]) +/ +/ returns the corresponding 'full' KML representation +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + gaiaOutBuffer out_buf; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geo_wgs84; + sqlite3_int64 int_value; + double dbl_value; + const char *name; + const char *desc; + char *name_malloc = NULL; + char *desc_malloc = NULL; + char dummy[128]; + char *xdummy; + char *proj_from; + char *proj_to; + int precision = 15; + void *data = sqlite3_user_data (context); + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + switch (sqlite3_value_type (argv[0])) + { + case SQLITE_TEXT: + name = (const char *) sqlite3_value_text (argv[0]); + len = strlen (name); + name_malloc = malloc (len + 1); + strcpy (name_malloc, name); + name = name_malloc; + break; + case SQLITE_INTEGER: + int_value = sqlite3_value_int64 (argv[0]); + sprintf (dummy, FRMT64, int_value); + len = strlen (dummy); + name_malloc = malloc (len + 1); + strcpy (name_malloc, dummy); + name = name_malloc; + break; + case SQLITE_FLOAT: + dbl_value = sqlite3_value_double (argv[0]); + xdummy = sqlite3_mprintf ("%1.6f", dbl_value); + len = strlen (xdummy); + name_malloc = malloc (len + 1); + strcpy (name_malloc, xdummy); + sqlite3_free (xdummy); + name = name_malloc; + break; + case SQLITE_BLOB: + name = "BLOB"; + break; + default: + name = "NULL"; + break; + }; + switch (sqlite3_value_type (argv[1])) + { + case SQLITE_TEXT: + desc = (const char *) sqlite3_value_text (argv[1]); + len = strlen (desc); + desc_malloc = malloc (len + 1); + strcpy (desc_malloc, desc); + desc = desc_malloc; + break; + case SQLITE_INTEGER: + int_value = sqlite3_value_int64 (argv[1]); + sprintf (dummy, FRMT64, int_value); + len = strlen (dummy); + desc_malloc = malloc (len + 1); + strcpy (desc_malloc, dummy); + desc = desc_malloc; + break; + case SQLITE_FLOAT: + dbl_value = sqlite3_value_double (argv[1]); + xdummy = sqlite3_mprintf ("%1.6f", dbl_value); + len = strlen (xdummy); + desc_malloc = malloc (len + 1); + strcpy (desc_malloc, xdummy); + sqlite3_free (xdummy); + desc = desc_malloc; + break; + case SQLITE_BLOB: + desc = "BLOB"; + break; + default: + desc = "NULL"; + break; + }; + gaiaOutBufferInitialize (&out_buf); + if (sqlite3_value_type (argv[2]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + goto stop; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[2]); + n_bytes = sqlite3_value_bytes (argv[2]); + if (argc == 4) + { + if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + precision = sqlite3_value_int (argv[3]); + else + { + sqlite3_result_null (context); + goto stop; + } + } + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + if (geo->Srid == 4326) + ; /* already WGS84 */ + else if (geo->Srid == 0) + { + /* unknown SRID: giving up */ + sqlite3_result_null (context); + goto stop; + } + else + { + /* attempting to reproject into WGS84 */ + getProjParams (sqlite, geo->Srid, &proj_from); + getProjParams (sqlite, 4326, &proj_to); + if (proj_to == NULL || proj_from == NULL) + { + if (proj_from != NULL) + free (proj_from); + if (proj_to != NULL) + free (proj_to); + sqlite3_result_null (context); + goto stop; + } + if (data != NULL) + geo_wgs84 = gaiaTransform_r (data, geo, proj_from, proj_to); + else + geo_wgs84 = gaiaTransform (geo, proj_from, proj_to); + free (proj_from); + free (proj_to); + if (!geo_wgs84) + { + sqlite3_result_null (context); + goto stop; + } + /* ok, reprojection was successful */ + gaiaFreeGeomColl (geo); + geo = geo_wgs84; + } + /* produce KML-notation - actual work is done in gaiageo/gg_wkt.c */ + gaiaOutFullKml (&out_buf, name, desc, geo, precision); + if (out_buf.Error || out_buf.Buffer == NULL) + sqlite3_result_null (context); + else + { + len = out_buf.WriteOffset; + sqlite3_result_text (context, out_buf.Buffer, len, free); + out_buf.Buffer = NULL; + } + } + stop: + gaiaFreeGeomColl (geo); + if (name_malloc) + free (name_malloc); + if (desc_malloc) + free (desc_malloc); + gaiaOutBufferReset (&out_buf); +} + +static void +fnct_AsKml (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AsKml(Anything name, Anything description, BLOB encoded geometry) +/ or +/ AsKml(BLOB encoded geometry) +/ +/ returns the corresponding KML representation +/ or NULL if any error is encountered +*/ + if (argc == 3 || argc == 4) + fnct_AsKml3 (context, argc, argv); + else + fnct_AsKml1 (context, argc, argv); +} +#endif /* end including PROJ.4 */ + +static void +fnct_AsGml (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AsGml(BLOB encoded geometry) +/ or +/ AsGml(integer version, BLOB encoded geometry) +/ or +/ AsGml(integer version, BLOB encoded geometry, integer precision) +/ +/ *version* may be 2 (GML 2.1.2) or 3 (GML 3.1.1) +/ default *version*: 2 +/ +/ *precision* is the number of output decimal digits +/ default *precision*: 15 +/ +/ returns the corresponding GML representation +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + int version = 2; + int precision = 15; + gaiaOutBuffer out_buf; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (argc == 3) + { + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + version = sqlite3_value_int (argv[0]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + precision = sqlite3_value_int (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + } + else if (argc == 2) + { + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER + && sqlite3_value_type (argv[1]) == SQLITE_BLOB) + { + version = sqlite3_value_int (argv[0]); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_BLOB + && sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + precision = sqlite3_value_int (argv[1]); + } + else + { + sqlite3_result_null (context); + return; + } + } + else + { + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + } + gaiaOutBufferInitialize (&out_buf); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + /* produce GML-notation - actual work is done in gaiageo/gg_wkt.c */ + gaiaOutGml (&out_buf, version, precision, geo); + if (out_buf.Error || out_buf.Buffer == NULL) + sqlite3_result_null (context); + else + { + len = out_buf.WriteOffset; + sqlite3_result_text (context, out_buf.Buffer, len, free); + out_buf.Buffer = NULL; + } + } + gaiaFreeGeomColl (geo); + gaiaOutBufferReset (&out_buf); +} + +static void +fnct_AsGeoJSON (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AsGeoJSON(BLOB encoded geometry) +/ or +/ AsGeoJSON(BLOB encoded geometry, integer precision) +/ or +/ AsGeoJSON(BLOB encoded geometry, integer precision, integer options) +/ +/ *precision* is the number of output decimal digits +/ default *precision*: 15 +/ +/ *options* may be one of the followings: +/ 0 = no options [default] +/ 1 = GeoJSON MBR +/ 2 = GeoJSON Short CRS (e.g EPSG:4326) +/ 3 = 1 + 2 (Mbr + shortCrs) +/ 4 = GeoJSON Long CRS (e.g urn:ogc:def:crs:EPSG::4326) +/ 5 = 1 + 4 (Mbr + longCrs) +/ +/ returns the corresponding GML representation +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + int precision = 15; + int options = 0; + gaiaOutBuffer out_buf; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (argc == 3) + { + if (sqlite3_value_type (argv[0]) == SQLITE_BLOB + && sqlite3_value_type (argv[1]) == SQLITE_INTEGER + && sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + precision = sqlite3_value_int (argv[1]); + options = sqlite3_value_int (argv[2]); + if (options >= 1 && options <= 5) + ; + else + options = 0; + } + else + { + sqlite3_result_null (context); + return; + } + } + else if (argc == 2) + { + if (sqlite3_value_type (argv[0]) == SQLITE_BLOB + && sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + precision = sqlite3_value_int (argv[1]); + } + else + { + sqlite3_result_null (context); + return; + } + } + else + { + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + } + gaiaOutBufferInitialize (&out_buf); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + /* produce GeoJSON-notation - actual work is done in gaiageo/gg_wkt.c */ + gaiaOutGeoJSON (&out_buf, geo, precision, options); + if (out_buf.Error || out_buf.Buffer == NULL) + sqlite3_result_null (context); + else + { + len = out_buf.WriteOffset; + sqlite3_result_text (context, out_buf.Buffer, len, free); + out_buf.Buffer = NULL; + } + } + gaiaFreeGeomColl (geo); + gaiaOutBufferReset (&out_buf); +} + +static void +fnct_AsBinary (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AsBinary(BLOB encoded geometry) +/ +/ returns the corresponding WKB encoded value +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaToWkb (geo, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_AsFGF (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AsFGF(BLOB encoded geometry) +/ +/ returns the corresponding FGF encoded value +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + int coord_dims; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + spatialite_e + ("AsFGF() error: argument 2 [geom_coords] is not of the Integer type\n"); + sqlite3_result_null (context); + return; + } + coord_dims = sqlite3_value_int (argv[1]); + if (coord_dims + == 0 || coord_dims == 1 || coord_dims == 2 || coord_dims == 3) + ; + else + { + spatialite_e + ("AsFGF() error: argument 2 [geom_coords] out of range [0,1,2,3]\n"); + sqlite3_result_null (context); + return; + } + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaToFgf (geo, &p_result, &len, coord_dims); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_MakePoint1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MakePoint(double X, double Y) +/ alias +/ ST_Point(double X, double Y) +/ +/ builds a POINT +/ or NULL if any error is encountered +*/ + int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + y = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + gaiaMakePoint (x, y, 0, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_MakePoint2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MakePoint(double X, double Y, int SRID) +/ +/ builds a POINT +/ or NULL if any error is encountered +*/ + int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + int srid; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + y = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + gaiaMakePoint (x, y, srid, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_MakePointZ1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MakePointZ(double X, double Y, double Z) +/ +/ builds a POINT Z +/ or NULL if any error is encountered +*/ + int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + double z; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + y = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + z = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + z = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + gaiaMakePointZ (x, y, z, 0, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_MakePointZ2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MakePointZ(double X, double Y, double Z, int SRID) +/ +/ builds a POINT Z +/ or NULL if any error is encountered +*/ + int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + double z; + int srid; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + y = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + z = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + z = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[3]); + else + { + sqlite3_result_null (context); + return; + } + gaiaMakePointZ (x, y, z, srid, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_MakePointM1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MakePointM(double X, double Y, double M) +/ +/ builds a POINT M +/ or NULL if any error is encountered +*/ + int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + double m; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + y = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + m = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + m = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + gaiaMakePointM (x, y, m, 0, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_MakePointM2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MakePointM(double X, double Y, double M, int SRID) +/ +/ builds a POINT M +/ or NULL if any error is encountered +*/ + int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + double m; + int srid; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + y = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + m = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + m = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[3]); + else + { + sqlite3_result_null (context); + return; + } + gaiaMakePointM (x, y, m, srid, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_MakePointZM1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MakePointZM(double X, double Y, double Z, double M) +/ +/ builds a POINT ZM +/ or NULL if any error is encountered +*/ + int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + double z; + double m; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + y = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + z = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + z = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + m = sqlite3_value_double (argv[3]); + else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[3]); + m = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + gaiaMakePointZM (x, y, z, m, 0, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_MakePointZM2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MakePointZM(double X, double Y, double Z, double M, int SRID) +/ +/ builds a POINT +/ or NULL if any error is encountered +*/ + int len; + int int_value; + unsigned char *p_result = NULL; + double x; + double y; + double z; + double m; + int srid; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + y = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + z = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + z = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + m = sqlite3_value_double (argv[3]); + else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[3]); + m = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[4]); + else + { + sqlite3_result_null (context); + return; + } + gaiaMakePointZM (x, y, z, m, srid, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); +} + +static void +addGeomPointToDynamicLine (gaiaDynamicLinePtr dyn, gaiaGeomCollPtr geom) +{ +/* appending a simple-Point Geometry to a Dynamic Line */ + int pts; + int lns; + int pgs; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + + if (dyn == NULL) + return; + if (dyn->Error) + return; +/* checking if GEOM simply is a POINT */ + if (geom == NULL) + { + dyn->Error = 1; + return; + } + pts = 0; + lns = 0; + pgs = 0; + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts == 1 && lns == 0 && pgs == 0) + ; + else + { + /* failure: not a simple POINT */ + dyn->Error = 1; + return; + } + + if (dyn->Srid != geom->Srid) + { + /* failure: SRID mismatch */ + dyn->Error = 1; + return; + } + + switch (geom->FirstPoint->DimensionModel) + { + case GAIA_XY_Z_M: + gaiaAppendPointZMToDynamicLine (dyn, geom->FirstPoint->X, + geom->FirstPoint->Y, + geom->FirstPoint->Z, + geom->FirstPoint->M); + break; + case GAIA_XY_Z: + gaiaAppendPointZToDynamicLine (dyn, geom->FirstPoint->X, + geom->FirstPoint->Y, + geom->FirstPoint->Z); + break; + case GAIA_XY_M: + gaiaAppendPointMToDynamicLine (dyn, geom->FirstPoint->X, + geom->FirstPoint->Y, + geom->FirstPoint->M); + break; + default: + gaiaAppendPointToDynamicLine (dyn, geom->FirstPoint->X, + geom->FirstPoint->Y); + break; + } +} + +static void +fnct_MakeLine_step (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MakeLine(BLOBencoded geom) +/ +/ aggregate function - STEP +/ +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geom; + gaiaDynamicLinePtr *p; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geom) + return; + p = sqlite3_aggregate_context (context, sizeof (gaiaDynamicLinePtr)); + if (!(*p)) + { + /* this is the first row */ + *p = gaiaAllocDynamicLine (); + (*p)->Srid = geom->Srid; + addGeomPointToDynamicLine (*p, geom); + gaiaFreeGeomColl (geom); + } + else + { + /* subsequent rows */ + addGeomPointToDynamicLine (*p, geom); + gaiaFreeGeomColl (geom); + } +} + +static gaiaGeomCollPtr +geomFromDynamicLine (gaiaDynamicLinePtr dyn) +{ +/* attempting to build a Geometry from a Dynamic Line */ + gaiaGeomCollPtr geom = NULL; + gaiaLinestringPtr ln = NULL; + gaiaPointPtr pt; + int iv; + int count = 0; + int dims = GAIA_XY; + + if (dyn == NULL) + return NULL; + if (dyn->Error) + return NULL; + + pt = dyn->First; + while (pt) + { + /* counting points and checking dims */ + count++; + if (dims == GAIA_XY && pt->DimensionModel != GAIA_XY) + dims = pt->DimensionModel; + if (dims == GAIA_XY_Z + && (pt->DimensionModel == GAIA_XY_M + || pt->DimensionModel == GAIA_XY_Z_M)) + dims = GAIA_XY_Z_M; + if (dims == GAIA_XY_M + && (pt->DimensionModel == GAIA_XY_Z + || pt->DimensionModel == GAIA_XY_Z_M)) + dims = GAIA_XY_Z_M; + pt = pt->Next; + } + if (count < 2) + return NULL; + + switch (dims) + { + case GAIA_XY_Z_M: + geom = gaiaAllocGeomCollXYZM (); + ln = gaiaAllocLinestringXYZM (count); + break; + case GAIA_XY_Z: + geom = gaiaAllocGeomCollXYZ (); + ln = gaiaAllocLinestringXYZ (count); + break; + case GAIA_XY_M: + geom = gaiaAllocGeomCollXYM (); + ln = gaiaAllocLinestringXYM (count); + break; + default: + geom = gaiaAllocGeomColl (); + ln = gaiaAllocLinestring (count); + break; + }; + + if (geom != NULL && ln != NULL) + { + gaiaInsertLinestringInGeomColl (geom, ln); + geom->Srid = dyn->Srid; + } + else + { + if (geom) + gaiaFreeGeomColl (geom); + if (ln) + gaiaFreeLinestring (ln); + return NULL; + } + + iv = 0; + pt = dyn->First; + while (pt) + { + /* setting linestring points */ + if (dims == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (ln->Coords, iv, pt->X, pt->Y, pt->Z, pt->M); + } + else if (dims == GAIA_XY_Z) + { + gaiaSetPointXYZ (ln->Coords, iv, pt->X, pt->Y, pt->Z); + } + else if (dims == GAIA_XY_M) + { + gaiaSetPointXYM (ln->Coords, iv, pt->X, pt->Y, pt->M); + } + else + { + gaiaSetPoint (ln->Coords, iv, pt->X, pt->Y); + } + iv++; + pt = pt->Next; + } + return geom; +} + +static void +fnct_MakeLine_final (sqlite3_context * context) +{ +/* SQL function: +/ MakeLine(BLOBencoded geom) +/ +/ aggregate function - FINAL +/ +*/ + gaiaGeomCollPtr result; + gaiaDynamicLinePtr *p = sqlite3_aggregate_context (context, 0); + if (!p) + { + sqlite3_result_null (context); + return; + } + result = geomFromDynamicLine (*p); + gaiaFreeDynamicLine (*p); + if (!result) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } +} + +static void +buildLineFromMultiPoint (sqlite3_context * context, gaiaGeomCollPtr geom, + int direction) +{ +/* internal: building a Linestring from a MultiPolygon */ + gaiaGeomCollPtr result; + gaiaDynamicLinePtr dyn; + int n_pts = 0; + int n_lns = 0; + int n_pgs = 0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + if (geom) + { + pt = geom->FirstPoint; + while (pt) + { + n_pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + n_lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + n_pgs++; + pg = pg->Next; + } + } + /* checking if really is a MultiPoint */ + if (n_pts >= 2 && n_lns == 0 && n_pgs == 0) + ; + else + { + sqlite3_result_null (context); + goto end; + } + dyn = gaiaAllocDynamicLine (); + dyn->Srid = geom->Srid; + pt = geom->FirstPoint; + while (pt) + { + /* inserting all Points accordingly to required direction */ + if (direction) + { + /* conformant direction */ + switch (pt->DimensionModel) + { + case GAIA_XY_Z_M: + gaiaAppendPointZMToDynamicLine (dyn, pt->X, pt->Y, + pt->Z, pt->M); + break; + case GAIA_XY_Z: + gaiaAppendPointZToDynamicLine (dyn, pt->X, pt->Y, pt->Z); + break; + case GAIA_XY_M: + gaiaAppendPointMToDynamicLine (dyn, pt->X, pt->Y, pt->M); + break; + default: + gaiaAppendPointToDynamicLine (dyn, pt->X, pt->Y); + break; + } + } + else + { + /* reverse direction */ + switch (pt->DimensionModel) + { + case GAIA_XY_Z_M: + gaiaPrependPointZMToDynamicLine (dyn, pt->X, pt->Y, + pt->Z, pt->M); + break; + case GAIA_XY_Z: + gaiaPrependPointZToDynamicLine (dyn, pt->X, pt->Y, pt->Z); + break; + case GAIA_XY_M: + gaiaPrependPointMToDynamicLine (dyn, pt->X, pt->Y, pt->M); + break; + default: + gaiaPrependPointToDynamicLine (dyn, pt->X, pt->Y); + break; + } + } + pt = pt->Next; + } + result = geomFromDynamicLine (dyn); + gaiaFreeDynamicLine (dyn); + if (!result) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + end: + gaiaFreeGeomColl (geom); +} + +static void +fnct_MakeLine (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MakeLine(point-geometry geom1, point-geometry geom2) +/ or +/ MakeLine(multipoint geom, boolean direction) +/ +/ - builds a SEGMENT joining two POINTs +/ - the MultiPoint version works exactely as the corresponding aggregate +/ function, but not requiring aggregation; direction=TRUE direct order, +/ direction=FALSE reverse order +/ - or NULL if any error is encountered +*/ + int len; + unsigned char *p_blob; + int n_bytes; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + goto stop; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo1) + { + sqlite3_result_null (context); + goto stop; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + /* expecting a single MultiPoint input */ + int direction = sqlite3_value_int (argv[1]); + buildLineFromMultiPoint (context, geo1, direction); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + goto stop; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo2) + { + sqlite3_result_null (context); + goto stop; + } + gaiaMakeLine (geo1, geo2, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); + stop: + if (geo1) + gaiaFreeGeomColl (geo1); + if (geo2) + gaiaFreeGeomColl (geo2); +} + +static void +fnct_MakeCircle (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MakeCircle(double cx, double cy, double radius) +/ or +/ MakeCircle(double cx, double cy, double radius, int srid) +/ or +/ MakeCircle(double cx, double cy, double radius, int srid, double step) +/ +/ - builds a Linestring approximating a Circle +/ - step is the angular distance (in degrees) between points on +/ the circurmference (by default: every 10 degs) +/ - or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geom = NULL; + int ival; + double cx; + double cy; + double r; + int srid = 0; + double step = 10.0; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[0]); + cx = ival; + } + else if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + cx = sqlite3_value_double (argv[0]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[1]); + cy = ival; + } + else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + cy = sqlite3_value_double (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[2]); + r = ival; + } + else if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + r = sqlite3_value_double (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + if (argc >= 4) + { + if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[3]); + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 5) + { + if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[4]); + step = ival; + } + else if (sqlite3_value_type (argv[4]) == SQLITE_FLOAT) + step = sqlite3_value_double (argv[4]); + else + { + sqlite3_result_null (context); + return; + } + } + + geom = gaiaMakeCircle (cx, cy, r, step); + if (!geom) + sqlite3_result_null (context); + else + { + if (srid != 0) + geom->Srid = srid; + gaiaToSpatiaLiteBlobWkb (geom, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + } + if (geom) + gaiaFreeGeomColl (geom); +} + +static void +fnct_MakeArc (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MakeArc(double cx, double cy, double radius, double start, double stop) +/ or +/ MakeArc(double cx, double cy, double radius, double start, double stop, +/ int srid) +/ or +/ MakeArc(double cx, double cy, double radius, double start, double stop, +/ int srid, double step) +/ +/ - builds a Linestring approximating a Circular Arc +/ - start and stop are the initial and final angles (in degrees) +/ - step is the angular distance (in degrees) between points on +/ the circurmference (by default: every 10 degs) +/ - or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geom = NULL; + int ival; + double cx; + double cy; + double r; + double start; + double stop; + int srid = 0; + double step = 10.0; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[0]); + cx = ival; + } + else if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + cx = sqlite3_value_double (argv[0]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[1]); + cy = ival; + } + else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + cy = sqlite3_value_double (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[2]); + r = ival; + } + else if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + r = sqlite3_value_double (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[3]); + start = ival; + } + else if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + start = sqlite3_value_double (argv[3]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[4]); + stop = ival; + } + else if (sqlite3_value_type (argv[4]) == SQLITE_FLOAT) + stop = sqlite3_value_double (argv[4]); + else + { + sqlite3_result_null (context); + return; + } + if (argc >= 6) + { + if (sqlite3_value_type (argv[5]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[5]); + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 7) + { + if (sqlite3_value_type (argv[6]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[6]); + step = ival; + } + else if (sqlite3_value_type (argv[6]) == SQLITE_FLOAT) + step = sqlite3_value_double (argv[6]); + else + { + sqlite3_result_null (context); + return; + } + } + + geom = gaiaMakeArc (cx, cy, r, start, stop, step); + if (!geom) + sqlite3_result_null (context); + else + { + if (srid != 0) + geom->Srid = srid; + gaiaToSpatiaLiteBlobWkb (geom, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + } + if (geom) + gaiaFreeGeomColl (geom); +} + +static void +fnct_MakeEllipse (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MakeEllipse(double cx, double cy, double x_axis, double y_axis) +/ or +/ MakeEllipse(double cx, double cy, double x_axis, double y_axis, +/ int srid) +/ or +/ MakeEllipse(double cx, double cy, double x_axis, double y_axis, +/ int srid, double step) +/ +/ - builds a Linestring approximating an Ellipse +/ - step is the angular distance (in degrees) between points on +/ the ellipse (by default: every 10 degs) +/ - or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geom = NULL; + int ival; + double cx; + double cy; + double x_axis; + double y_axis; + int srid = 0; + double step = 10.0; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[0]); + cx = ival; + } + else if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + cx = sqlite3_value_double (argv[0]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[1]); + cy = ival; + } + else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + cy = sqlite3_value_double (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[2]); + x_axis = ival; + } + else if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + x_axis = sqlite3_value_double (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[3]); + y_axis = ival; + } + else if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + y_axis = sqlite3_value_double (argv[3]); + else + { + sqlite3_result_null (context); + return; + } + if (argc >= 5) + { + if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[4]); + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 6) + { + if (sqlite3_value_type (argv[5]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[5]); + step = ival; + } + else if (sqlite3_value_type (argv[5]) == SQLITE_FLOAT) + step = sqlite3_value_double (argv[5]); + else + { + sqlite3_result_null (context); + return; + } + } + geom = gaiaMakeEllipse (cx, cy, x_axis, y_axis, step); + if (!geom) + sqlite3_result_null (context); + else + { + if (srid != 0) + geom->Srid = srid; + gaiaToSpatiaLiteBlobWkb (geom, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + } + if (geom) + gaiaFreeGeomColl (geom); +} + +static void +fnct_MakeEllipticArc (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ MakeEllipticArc(double cx, double cy, double x_axis, double y_axis, +/ double start, double stop) +/ or +/ MakeEllipticArc(double cx, double cy, double x_axis, double y_axis, +/ double start, double stop, int srid) +/ or +/ MakeEllipticArc(double cx, double cy, double x_axis, double y_axis, +/ double start, double stop, int srid, double step) +/ +/ - builds a Linestring approximating an Elliptic Arc +/ - start and stop are the initial and final angles (in degrees) +/ - step is the angular distance (in degrees) between points on +/ the ellipse (by default: every 10 degs) +/ - or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geom = NULL; + int ival; + double cx; + double cy; + double x_axis; + double y_axis; + double start; + double stop; + int srid = 0; + double step = 10.0; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[0]); + cx = ival; + } + else if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + cx = sqlite3_value_double (argv[0]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[1]); + cy = ival; + } + else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + cy = sqlite3_value_double (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[2]); + x_axis = ival; + } + else if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + x_axis = sqlite3_value_double (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[3]); + y_axis = ival; + } + else if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + y_axis = sqlite3_value_double (argv[3]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[4]); + start = ival; + } + else if (sqlite3_value_type (argv[4]) == SQLITE_FLOAT) + start = sqlite3_value_double (argv[4]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[5]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[5]); + stop = ival; + } + else if (sqlite3_value_type (argv[5]) == SQLITE_FLOAT) + stop = sqlite3_value_double (argv[5]); + else + { + sqlite3_result_null (context); + return; + } + if (argc >= 7) + { + if (sqlite3_value_type (argv[6]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[6]); + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 8) + { + if (sqlite3_value_type (argv[7]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[7]); + step = ival; + } + else if (sqlite3_value_type (argv[7]) == SQLITE_FLOAT) + step = sqlite3_value_double (argv[7]); + else + { + sqlite3_result_null (context); + return; + } + } + + geom = gaiaMakeEllipticArc (cx, cy, x_axis, y_axis, start, stop, step); + if (!geom) + sqlite3_result_null (context); + else + { + if (srid != 0) + geom->Srid = srid; + gaiaToSpatiaLiteBlobWkb (geom, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + } + if (geom) + gaiaFreeGeomColl (geom); +} + +static void +fnct_MakeCircularSector (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ MakeCircularSector(double cx, double cy, double radius, double start, double stop) +/ or +/ MakeCircularSector(double cx, double cy, double radius, double start, double stop, +/ int srid) +/ or +/ MakeCircularSector(double cx, double cy, double radius, double start, double stop, +/ int srid, double step) +/ +/ - builds a Polygon approximating a Circular Sector +/ - start and stop are the initial and final angles (in degrees) +/ - step is the angular distance (in degrees) between points on +/ the circurmference (by default: every 10 degs) +/ - or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geom = NULL; + gaiaGeomCollPtr sector = NULL; + int ival; + double cx; + double cy; + double r; + double start; + double stop; + int srid = 0; + double step = 10.0; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[0]); + cx = ival; + } + else if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + cx = sqlite3_value_double (argv[0]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[1]); + cy = ival; + } + else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + cy = sqlite3_value_double (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[2]); + r = ival; + } + else if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + r = sqlite3_value_double (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[3]); + start = ival; + } + else if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + start = sqlite3_value_double (argv[3]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[4]); + stop = ival; + } + else if (sqlite3_value_type (argv[4]) == SQLITE_FLOAT) + stop = sqlite3_value_double (argv[4]); + else + { + sqlite3_result_null (context); + return; + } + if (argc >= 6) + { + if (sqlite3_value_type (argv[5]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[5]); + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 7) + { + if (sqlite3_value_type (argv[6]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[6]); + step = ival; + } + else if (sqlite3_value_type (argv[6]) == SQLITE_FLOAT) + step = sqlite3_value_double (argv[6]); + else + { + sqlite3_result_null (context); + return; + } + } + + geom = gaiaMakeArc (cx, cy, r, start, stop, step); + if (!geom) + sqlite3_result_null (context); + else + { + int ii; + int io = 0; + double x; + double y; + gaiaLinestringPtr in = geom->FirstLinestring; + gaiaPolygonPtr pg; + gaiaRingPtr out; + sector = gaiaAllocGeomColl (); + pg = gaiaAddPolygonToGeomColl (sector, in->Points + 2, 0); + out = pg->Exterior; + /* inserting the Centre - first point */ + gaiaSetPoint (out->Coords, io, cx, cy); + io++; + for (ii = 0; ii < in->Points; ii++) + { + /* copying the Arc's points */ + gaiaGetPoint (in->Coords, ii, &x, &y); + gaiaSetPoint (out->Coords, io, x, y); + io++; + } + /* inserting the Centre - last point */ + gaiaSetPoint (out->Coords, io, cx, cy); + if (srid != 0) + sector->Srid = srid; + gaiaToSpatiaLiteBlobWkb (sector, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + } + if (geom) + gaiaFreeGeomColl (geom); + if (sector) + gaiaFreeGeomColl (sector); +} + +static void +fnct_MakeCircularStripe (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ MakeCircularStripe(double cx, double cy, double radius_1, double radius_2, +/ double start, double stop) +/ or +/ MakeCircularStripe(double cx, double cy, double radius_1, double radius_2, +/ double start, double stop, int srid) +/ or +/ MakeCircularStripe(double cx, double cy, double radius_1, double radius_2, +/ double start, double stop, int srid, double step) +/ +/ - builds a Polygon approximating a Circular Stripe delimited by two +/ arcs sharing the same Centre-Point but having different radii +/ - start and stop are the initial and final angles (in degrees) +/ - step is the angular distance (in degrees) between points on +/ the circurmference (by default: every 10 degs) +/ - or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr arc1 = NULL; + gaiaGeomCollPtr arc2 = NULL; + gaiaGeomCollPtr stripe = NULL; + int ival; + double cx; + double cy; + double r1; + double r2; + double start; + double stop; + int srid = 0; + double step = 10.0; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[0]); + cx = ival; + } + else if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + cx = sqlite3_value_double (argv[0]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[1]); + cy = ival; + } + else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + cy = sqlite3_value_double (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[2]); + r1 = ival; + } + else if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + r1 = sqlite3_value_double (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[3]); + r2 = ival; + } + else if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + r2 = sqlite3_value_double (argv[3]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[4]); + start = ival; + } + else if (sqlite3_value_type (argv[4]) == SQLITE_FLOAT) + start = sqlite3_value_double (argv[4]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[5]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[5]); + stop = ival; + } + else if (sqlite3_value_type (argv[5]) == SQLITE_FLOAT) + stop = sqlite3_value_double (argv[5]); + else + { + sqlite3_result_null (context); + return; + } + if (argc >= 7) + { + if (sqlite3_value_type (argv[6]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[6]); + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 8) + { + if (sqlite3_value_type (argv[7]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[7]); + step = ival; + } + else if (sqlite3_value_type (argv[7]) == SQLITE_FLOAT) + step = sqlite3_value_double (argv[7]); + else + { + sqlite3_result_null (context); + return; + } + } + + arc1 = gaiaMakeArc (cx, cy, r1, start, stop, step); + arc2 = gaiaMakeArc (cx, cy, r2, start, stop, step); + if (arc1 == NULL || arc2 == NULL) + sqlite3_result_null (context); + else + { + int ii; + int io = 0; + double x; + double y; + gaiaLinestringPtr in1 = arc1->FirstLinestring; + gaiaLinestringPtr in2 = arc2->FirstLinestring; + gaiaPolygonPtr pg; + gaiaRingPtr out; + stripe = gaiaAllocGeomColl (); + pg = gaiaAddPolygonToGeomColl (stripe, + in1->Points + in2->Points + 1, 0); + out = pg->Exterior; + for (ii = 0; ii < in1->Points; ii++) + { + /* copying the first Arc's points - direct order */ + gaiaGetPoint (in1->Coords, ii, &x, &y); + gaiaSetPoint (out->Coords, io, x, y); + io++; + } + for (ii = in2->Points - 1; ii >= 0; ii--) + { + /* copying the second Arc's points - reverse order */ + gaiaGetPoint (in2->Coords, ii, &x, &y); + gaiaSetPoint (out->Coords, io, x, y); + io++; + } + /* closing the Polygon Ring */ + gaiaGetPoint (out->Coords, 0, &x, &y); + gaiaSetPoint (out->Coords, io, x, y); + if (srid != 0) + stripe->Srid = srid; + gaiaToSpatiaLiteBlobWkb (stripe, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + } + if (arc1) + gaiaFreeGeomColl (arc1); + if (arc2) + gaiaFreeGeomColl (arc2); + if (stripe) + gaiaFreeGeomColl (stripe); +} + +static void +fnct_MakeEllipticSector (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ MakeEllipticSector(double cx, double cy, double x_axis, double y_axis, +/ double start, double stop) +/ or +/ MakeEllipticSector(double cx, double cy, double x_axis, double y_axis, +/ double start, double stop, int srid) +/ or +/ MakeEllipticSector(double cx, double cy, double x_axis, double y_axis, +/ double start, double stop, int srid, double step) +/ +/ - builds a Polygon approximating an Elliptic Sector +/ - start and stop are the initial and final angles (in degrees) +/ - step is the angular distance (in degrees) between points on +/ the ellipse (by default: every 10 degs) +/ - or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geom = NULL; + gaiaGeomCollPtr sector = NULL; + int ival; + double cx; + double cy; + double x_axis; + double y_axis; + double start; + double stop; + int srid = 0; + double step = 10.0; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[0]); + cx = ival; + } + else if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + cx = sqlite3_value_double (argv[0]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[1]); + cy = ival; + } + else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + cy = sqlite3_value_double (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[2]); + x_axis = ival; + } + else if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + x_axis = sqlite3_value_double (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[3]); + y_axis = ival; + } + else if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + y_axis = sqlite3_value_double (argv[3]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[4]); + start = ival; + } + else if (sqlite3_value_type (argv[4]) == SQLITE_FLOAT) + start = sqlite3_value_double (argv[4]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[5]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[5]); + stop = ival; + } + else if (sqlite3_value_type (argv[5]) == SQLITE_FLOAT) + stop = sqlite3_value_double (argv[5]); + else + { + sqlite3_result_null (context); + return; + } + if (argc >= 7) + { + if (sqlite3_value_type (argv[6]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[6]); + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 8) + { + if (sqlite3_value_type (argv[7]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[7]); + step = ival; + } + else if (sqlite3_value_type (argv[7]) == SQLITE_FLOAT) + step = sqlite3_value_double (argv[7]); + else + { + sqlite3_result_null (context); + return; + } + } + + geom = gaiaMakeEllipticArc (cx, cy, x_axis, y_axis, start, stop, step); + if (!geom) + sqlite3_result_null (context); + else + { + int ii; + int io = 0; + double x; + double y; + gaiaLinestringPtr in = geom->FirstLinestring; + gaiaPolygonPtr pg; + gaiaRingPtr out; + sector = gaiaAllocGeomColl (); + pg = gaiaAddPolygonToGeomColl (sector, in->Points + 2, 0); + out = pg->Exterior; + /* inserting the Centre - first point */ + gaiaSetPoint (out->Coords, io, cx, cy); + io++; + for (ii = 0; ii < in->Points; ii++) + { + /* copying the Arc's points */ + gaiaGetPoint (in->Coords, ii, &x, &y); + gaiaSetPoint (out->Coords, io, x, y); + io++; + } + /* inserting the Centre - last point */ + gaiaSetPoint (out->Coords, io, cx, cy); + if (srid != 0) + sector->Srid = srid; + gaiaToSpatiaLiteBlobWkb (sector, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + } + if (geom) + gaiaFreeGeomColl (geom); + if (sector) + gaiaFreeGeomColl (sector); +} + +static void +fnct_Collect_step (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Collect(BLOBencoded geom) +/ +/ aggregate function - STEP +/ +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geom; + gaiaGeomCollPtr result; + gaiaGeomCollPtr *p; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geom) + return; + p = sqlite3_aggregate_context (context, sizeof (gaiaGeomCollPtr)); + if (!(*p)) + { + /* this is the first row */ + *p = geom; + } + else + { + /* subsequent rows */ + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaMergeGeometries_r (data, *p, geom); + else + result = gaiaMergeGeometries (*p, geom); + gaiaFreeGeomColl (*p); + *p = result; + gaiaFreeGeomColl (geom); + } +} + +static void +fnct_Collect_final (sqlite3_context * context) +{ +/* SQL function: +/ Collect(BLOBencoded geom) +/ +/ aggregate function - FINAL +/ +*/ + gaiaGeomCollPtr result; + gaiaGeomCollPtr *p = sqlite3_aggregate_context (context, 0); + if (!p) + { + sqlite3_result_null (context); + return; + } + result = *p; + if (!result) + sqlite3_result_null (context); + else if (gaiaIsEmpty (result)) + { + gaiaFreeGeomColl (result); + sqlite3_result_null (context); + } + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } +} + +static void +fnct_Collect (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Collect(geometry geom1, geometry geom2) +/ +/ merges two generic GEOMETRIES into a single one +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo1 || !geo2) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaMergeGeometries_r (data, geo1, geo2); + else + result = gaiaMergeGeometries (geo1, geo2); + if (!result) + sqlite3_result_null (context); + else if (gaiaIsEmpty (result)) + { + gaiaFreeGeomColl (result); + sqlite3_result_null (context); + } + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +geom_from_text1 (sqlite3_context * context, int argc, sqlite3_value ** argv, + short type) +{ +/* SQL function: +/ GeomFromText(WKT encoded geometry) +/ +/ returns the current geometry by parsing WKT encoded string +/ or NULL if any error is encountered +/ +/ if *type* is a negative value can accept any GEOMETRY CLASS +/ otherwise only requests conforming with required CLASS are valid +*/ + int len; + unsigned char *p_result = NULL; + const unsigned char *text; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + text = sqlite3_value_text (argv[0]); + geo = gaiaParseWkt (text, type); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); +} + +static void +geom_from_text2 (sqlite3_context * context, int argc, sqlite3_value ** argv, + short type) +{ +/* SQL function: +/ GeomFromText(WKT encoded geometry, SRID) +/ +/ returns the current geometry by parsing WKT encoded string +/ or NULL if any error is encountered +/ +/ if *type* is a negative value can accept any GEOMETRY CLASS +/ otherwise only requests conforming with required CLASS are valid +*/ + int len; + unsigned char *p_result = NULL; + const unsigned char *text; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + text = sqlite3_value_text (argv[0]); + geo = gaiaParseWkt (text, type); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + geo->Srid = sqlite3_value_int (argv[1]); + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); +} + +static int +check_wkb (const unsigned char *wkb, int size, short type) +{ +/* checking type coherency for WKB encoded GEOMETRY */ + int little_endian; + int wkb_type; + int endian_arch = gaiaEndianArch (); + if (size < 5) + return 0; /* too short to be a WKB */ + if (*(wkb + 0) == 0x01) + little_endian = GAIA_LITTLE_ENDIAN; + else if (*(wkb + 0) == 0x00) + little_endian = GAIA_BIG_ENDIAN; + else + return 0; /* illegal byte ordering; neither BIG-ENDIAN nor LITTLE-ENDIAN */ + wkb_type = gaiaImport32 (wkb + 1, little_endian, endian_arch); + if (wkb_type == GAIA_POINT || wkb_type == GAIA_LINESTRING + || wkb_type == GAIA_POLYGON || wkb_type == GAIA_MULTIPOINT + || wkb_type == GAIA_MULTILINESTRING || wkb_type == GAIA_MULTIPOLYGON + || wkb_type == GAIA_GEOMETRYCOLLECTION || wkb_type == GAIA_POINTZ + || wkb_type == GAIA_LINESTRINGZ || wkb_type == GAIA_POLYGONZ + || wkb_type == GAIA_MULTIPOINTZ || wkb_type == GAIA_MULTILINESTRINGZ + || wkb_type == GAIA_MULTIPOLYGONZ + || wkb_type == GAIA_GEOMETRYCOLLECTIONZ || wkb_type == GAIA_POINTM + || wkb_type == GAIA_LINESTRINGM || wkb_type == GAIA_POLYGONM + || wkb_type == GAIA_MULTIPOINTM || wkb_type == GAIA_MULTILINESTRINGM + || wkb_type == GAIA_MULTIPOLYGONM + || wkb_type == GAIA_GEOMETRYCOLLECTIONM || wkb_type == GAIA_POINTZM + || wkb_type == GAIA_LINESTRINGZM || wkb_type == GAIA_POLYGONZM + || wkb_type == GAIA_MULTIPOINTZM || wkb_type == GAIA_MULTILINESTRINGZM + || wkb_type == GAIA_MULTIPOLYGONZM + || wkb_type == GAIA_GEOMETRYCOLLECTIONZM) + ; + else + return 0; /* illegal GEOMETRY CLASS */ + if (type < 0) + ; /* no restrinction about GEOMETRY CLASS TYPE */ + else + { + if (wkb_type != type) + return 0; /* invalid CLASS TYPE for request */ + } + return 1; +} + +static void +geom_from_wkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv, + short type) +{ +/* SQL function: +/ GeomFromWKB(WKB encoded geometry) +/ +/ returns the current geometry by parsing a WKB encoded blob +/ or NULL if any error is encountered +/ +/ if *type* is a negative value can accept any GEOMETRY CLASS +/ otherwise only requests conforming with required CLASS are valid +*/ + int len; + int n_bytes; + unsigned char *p_result = NULL; + const unsigned char *wkb; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + wkb = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (!check_wkb (wkb, n_bytes, type)) + return; + geo = gaiaFromWkb (wkb, n_bytes); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); +} + +static void +geom_from_wkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv, + short type) +{ +/* SQL function: +/ GeomFromWKB(WKB encoded geometry, SRID) +/ +/ returns the current geometry by parsing a WKB encoded blob +/ or NULL if any error is encountered +/ +/ if *type* is a negative value can accept any GEOMETRY CLASS +/ otherwise only requests conforming with required CLASS are valid +*/ + int len; + int n_bytes; + unsigned char *p_result = NULL; + const unsigned char *wkb; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + wkb = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (!check_wkb (wkb, n_bytes, type)) + return; + geo = gaiaFromWkb (wkb, n_bytes); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + geo->Srid = sqlite3_value_int (argv[1]); + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_GeometryFromFGF1 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ GeomFromFGF(FGF encoded geometry) +/ +/ returns the current geometry by parsing an FGF encoded blob +/ or NULL if any error is encountered +/ +/ if *type* is a negative value can accept any GEOMETRY CLASS +/ otherwise only requests conforming with required CLASS are valid +*/ + int len; + int n_bytes; + unsigned char *p_result = NULL; + const unsigned char *fgf; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + fgf = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromFgf (fgf, n_bytes); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_GeometryFromFGF2 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ GeomFromFGF(FGF encoded geometry, SRID) +/ +/ returns the current geometry by parsing an FGF encoded string +/ or NULL if any error is encountered +/ +/ if *type* is a negative value can accept any GEOMETRY CLASS +/ otherwise only requests conforming with required CLASS are valid +*/ + int len; + int n_bytes; + unsigned char *p_result = NULL; + const unsigned char *fgf; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + fgf = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromFgf (fgf, n_bytes); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + geo->Srid = sqlite3_value_int (argv[1]); + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); +} + +/* +/ the following functions simply readdress the request to geom_from_text?() +/ setting the appropriate GEOMETRY CLASS TYPE +*/ + +static void +fnct_GeomFromText1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_text1 (context, argc, argv, (short) -1); +} + +static void +fnct_GeomFromText2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_text2 (context, argc, argv, (short) -1); +} + +static void +fnct_GeomCollFromText1 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ + geom_from_text1 (context, argc, argv, (short) GAIA_GEOMETRYCOLLECTION); +} + +static void +fnct_GeomCollFromText2 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ + geom_from_text2 (context, argc, argv, (short) GAIA_GEOMETRYCOLLECTION); +} + +static void +fnct_LineFromText1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_text1 (context, argc, argv, (short) GAIA_LINESTRING); +} + +static void +fnct_LineFromText2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_text2 (context, argc, argv, (short) GAIA_LINESTRING); +} + +static void +fnct_PointFromText1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_text1 (context, argc, argv, (short) GAIA_POINT); +} + +static void +fnct_PointFromText2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_text2 (context, argc, argv, (short) GAIA_POINT); +} + +static void +fnct_PolyFromText1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_text1 (context, argc, argv, (short) GAIA_POLYGON); +} + +static void +fnct_PolyFromText2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_text2 (context, argc, argv, (short) GAIA_POLYGON); +} + +static void +fnct_MLineFromText1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_text1 (context, argc, argv, (short) GAIA_MULTILINESTRING); +} + +static void +fnct_MLineFromText2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_text2 (context, argc, argv, (short) GAIA_MULTILINESTRING); +} + +static void +fnct_MPointFromText1 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ + geom_from_text1 (context, argc, argv, (short) GAIA_MULTIPOINT); +} + +static void +fnct_MPointFromText2 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ + geom_from_text2 (context, argc, argv, (short) GAIA_MULTIPOINT); +} + +static void +fnct_MPolyFromText1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_text1 (context, argc, argv, (short) GAIA_MULTIPOLYGON); +} + +static void +fnct_MPolyFromText2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_text2 (context, argc, argv, (short) GAIA_MULTIPOLYGON); +} + +static void +fnct_WktToSql (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_WKTToSQL(WKT encoded geometry) +/ +/ returns the current geometry by parsing WKT encoded string +/ or NULL if any error is encountered +/ +/ the SRID is always 0 [SQL/MM function] +*/ + int len; + unsigned char *p_result = NULL; + const unsigned char *text; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + text = sqlite3_value_text (argv[0]); + geo = gaiaParseWkt (text, -1); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + geo->Srid = 0; + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); +} + +/* +/ the following functions simply readdress the request to geom_from_wkb?() +/ setting the appropriate GEOMETRY CLASS TYPE +*/ + +static void +fnct_GeomFromWkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_wkb1 (context, argc, argv, (short) -1); +} + +static void +fnct_GeomFromWkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_wkb2 (context, argc, argv, (short) -1); +} + +static void +fnct_GeomCollFromWkb1 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ + geom_from_wkb1 (context, argc, argv, (short) GAIA_GEOMETRYCOLLECTION); +} + +static void +fnct_GeomCollFromWkb2 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ + geom_from_wkb2 (context, argc, argv, (short) GAIA_GEOMETRYCOLLECTION); +} + +static void +fnct_LineFromWkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_wkb1 (context, argc, argv, (short) GAIA_LINESTRING); +} + +static void +fnct_LineFromWkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_wkb2 (context, argc, argv, (short) GAIA_LINESTRING); +} + +static void +fnct_PointFromWkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_wkb1 (context, argc, argv, (short) GAIA_POINT); +} + +static void +fnct_PointFromWkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_wkb2 (context, argc, argv, (short) GAIA_POINT); +} + +static void +fnct_PolyFromWkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_wkb1 (context, argc, argv, (short) GAIA_POLYGON); +} + +static void +fnct_PolyFromWkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_wkb2 (context, argc, argv, (short) GAIA_POLYGON); +} + +static void +fnct_MLineFromWkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_wkb1 (context, argc, argv, (short) GAIA_MULTILINESTRING); +} + +static void +fnct_MLineFromWkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_wkb2 (context, argc, argv, (short) GAIA_MULTILINESTRING); +} + +static void +fnct_MPointFromWkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_wkb1 (context, argc, argv, (short) GAIA_MULTIPOINT); +} + +static void +fnct_MPointFromWkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_wkb2 (context, argc, argv, (short) GAIA_MULTIPOINT); +} + +static void +fnct_MPolyFromWkb1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_wkb1 (context, argc, argv, (short) GAIA_MULTIPOLYGON); +} + +static void +fnct_MPolyFromWkb2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + geom_from_wkb2 (context, argc, argv, (short) GAIA_MULTIPOLYGON); +} + +static void +fnct_WkbToSql (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_WKBToSQL(WKB encoded geometry) +/ +/ returns the current geometry by parsing a WKB encoded blob +/ or NULL if any error is encountered +/ +/ the SRID is always 0 [SQL/MM function] +*/ + int len; + int n_bytes; + unsigned char *p_result = NULL; + const unsigned char *wkb; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + wkb = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (!check_wkb (wkb, n_bytes, -1)) + return; + geo = gaiaFromWkb (wkb, n_bytes); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + geo->Srid = 0; + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_CompressGeometry (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CompressGeometry(BLOB encoded geometry) +/ +/ returns a COMPRESSED geometry [if a valid Geometry was supplied] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaToCompressedBlobWkb (geo, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_UncompressGeometry (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ UncompressGeometry(BLOB encoded geometry) +/ +/ returns an UNCOMPRESSED geometry [if a valid Geometry was supplied] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_SanitizeGeometry (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ SanitizeGeometry(BLOB encoded geometry) +/ +/ returns a SANITIZED geometry [if a valid Geometry was supplied] +/ or NULL in any other case +/ +/ Sanitizing includes: +/ - repeated vertices suppression +/ - enforcing ring closure +/ +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr sanitized = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + sanitized = gaiaSanitize (geo); + gaiaToSpatiaLiteBlobWkb (sanitized, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (geo); + gaiaFreeGeomColl (sanitized); +} + +static void +cast_count (gaiaGeomCollPtr geom, int *pts, int *lns, int *pgs) +{ +/* counting elementary geometries */ + int n_pts = 0; + int n_lns = 0; + int n_pgs = 0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + if (geom) + { + pt = geom->FirstPoint; + while (pt) + { + n_pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + n_lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + n_pgs++; + pg = pg->Next; + } + } + *pts = n_pts; + *lns = n_lns; + *pgs = n_pgs; +} + +static void +fnct_CastAutomagic (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CastAutomagic(BLOB encoded geometry) +/ +/ accepts on input both a valid SpatiaLite BLOB geometry +/ or a valid GPKG BLOB geometry, thus returning a SpatiaLite +/ BLOB geometry +/ will return NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + { +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE enabled: supporting GPKG geometries */ + if (gaiaIsValidGPB (p_blob, n_bytes)) + { + geo = gaiaFromGeoPackageGeometryBlob (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); + } + return; + } + else +#endif /* end GEOPACKAGE: supporting GPKG geometries */ + sqlite3_result_null (context); + } + else + { + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); + } +} + +static void +fnct_CastToPoint (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CastToPoint(BLOB encoded geometry) +/ +/ returns a POINT-type geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + int pts; + int lns; + int pgs; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + cast_count (geo, &pts, &lns, &pgs); + if (pts == 1 && lns == 0 && pgs == 0) + { + geom2 = gaiaCloneGeomColl (geo); + geom2->Srid = geo->Srid; + geom2->DeclaredType = GAIA_POINT; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_CastToLinestring (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CastToLinestring(BLOB encoded geometry) +/ +/ returns a LINESTRING-type geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + int pts; + int lns; + int pgs; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + cast_count (geo, &pts, &lns, &pgs); + if (pts == 0 && lns == 1 && pgs == 0) + { + geom2 = gaiaCloneGeomColl (geo); + geom2->Srid = geo->Srid; + geom2->DeclaredType = GAIA_LINESTRING; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_CastToPolygon (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CastToPolygon(BLOB encoded geometry) +/ +/ returns a POLYGON-type geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + int pts; + int lns; + int pgs; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + cast_count (geo, &pts, &lns, &pgs); + if (pts == 0 && lns == 0 && pgs == 1) + { + geom2 = gaiaCloneGeomColl (geo); + geom2->Srid = geo->Srid; + geom2->DeclaredType = GAIA_POLYGON; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_CastToMultiPoint (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CastToMultiPoint(BLOB encoded geometry) +/ +/ returns a MULTIPOINT-type geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + int pts; + int lns; + int pgs; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + cast_count (geo, &pts, &lns, &pgs); + if (pts >= 1 && lns == 0 && pgs == 0) + { + geom2 = gaiaCloneGeomColl (geo); + geom2->Srid = geo->Srid; + geom2->DeclaredType = GAIA_MULTIPOINT; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_CastToMultiLinestring (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CastToMultiLinestring(BLOB encoded geometry) +/ +/ returns a MULTILINESTRING-type geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + int pts; + int lns; + int pgs; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + cast_count (geo, &pts, &lns, &pgs); + if (pts == 0 && lns >= 1 && pgs == 0) + { + geom2 = gaiaCloneGeomColl (geo); + geom2->Srid = geo->Srid; + geom2->DeclaredType = GAIA_MULTILINESTRING; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_CastToMultiPolygon (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CastToMultiPolygon(BLOB encoded geometry) +/ +/ returns a MULTIPOLYGON-type geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + int pts; + int lns; + int pgs; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + cast_count (geo, &pts, &lns, &pgs); + if (pts == 0 && lns == 0 && pgs >= 1) + { + geom2 = gaiaCloneGeomColl (geo); + geom2->Srid = geo->Srid; + geom2->DeclaredType = GAIA_MULTIPOLYGON; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_CastToGeometryCollection (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CastToGeometryCollection(BLOB encoded geometry) +/ +/ returns a GEOMETRYCOLLECTION-type geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + int pts; + int lns; + int pgs; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + cast_count (geo, &pts, &lns, &pgs); + if (pts >= 1 || lns >= 1 || pgs >= 1) + { + geom2 = gaiaCloneGeomColl (geo); + geom2->Srid = geo->Srid; + geom2->DeclaredType = GAIA_GEOMETRYCOLLECTION; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_CastToMulti (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CastToMulti(BLOB encoded geometry) +/ +/ returns a MULTIPOINT, MULTILINESTRING, MULTIPOLYGON or +/ GEOMETRYCOLLECTION-type geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + int pts; + int lns; + int pgs; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + cast_count (geo, &pts, &lns, &pgs); + if (pts >= 1 || lns >= 1 || pgs >= 1) + { + geom2 = gaiaCloneGeomColl (geo); + geom2->Srid = geo->Srid; + if (pts >= 1 && lns == 0 && pgs == 0) + geom2->DeclaredType = GAIA_MULTIPOINT; + else if (pts == 0 && lns >= 1 && pgs == 0) + geom2->DeclaredType = GAIA_MULTILINESTRING; + else if (pts == 0 && lns == 0 && pgs >= 1) + geom2->DeclaredType = GAIA_MULTIPOLYGON; + else + geom2->DeclaredType = GAIA_GEOMETRYCOLLECTION; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_CastToSingle (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CastToSingle(BLOB encoded geometry) +/ +/ returns a POINT, LINESTRING or POLYGON-type geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + int pts; + int lns; + int pgs; + int ok; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + cast_count (geo, &pts, &lns, &pgs); + ok = 0; + if (pts == 1 && lns == 0 && pgs == 0) + ok = 1; + if (pts == 0 && lns == 1 && pgs == 0) + ok = 1; + if (pts == 0 && lns == 0 && pgs == 1) + ok = 1; + if (ok) + { + geom2 = gaiaCloneGeomColl (geo); + geom2->Srid = geo->Srid; + if (pts == 1) + geom2->DeclaredType = GAIA_POINT; + else if (lns == 1) + geom2->DeclaredType = GAIA_LINESTRING; + else + geom2->DeclaredType = GAIA_POLYGON; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_CastToXY (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CastToXY(BLOB encoded geometry) +/ +/ returns an XY-dimension Geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + geom2 = gaiaCastGeomCollToXY (geo); + if (geom2) + { + geom2->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_CastToXYZ (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CastToXY(BLOB encoded geometry) +/ +/ returns an XY-dimension Geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + geom2 = gaiaCastGeomCollToXYZ (geo); + if (geom2) + { + geom2->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_CastToXYM (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CastToXY(BLOB encoded geometry) +/ +/ returns an XYM-dimension Geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + geom2 = gaiaCastGeomCollToXYM (geo); + if (geom2) + { + geom2->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_CastToXYZM (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CastToXY(BLOB encoded geometry) +/ +/ returns an XYZM-dimension Geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + geom2 = gaiaCastGeomCollToXYZM (geo); + if (geom2) + { + geom2->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_ExtractMultiPoint (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ ExtractMultiPoint(BLOB encoded geometry) +/ +/ returns a MULTIPOINT-type geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + int pts; + int lns; + int pgs; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + cast_count (geo, &pts, &lns, &pgs); + if (pts >= 1) + { + geom2 = gaiaCloneGeomCollPoints (geo); + geom2->Srid = geo->Srid; + geom2->DeclaredType = GAIA_MULTIPOINT; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_ExtractMultiLinestring (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ ExtractMultiLinestring(BLOB encoded geometry) +/ +/ returns a MULTILINESTRING-type geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + int pts; + int lns; + int pgs; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + cast_count (geo, &pts, &lns, &pgs); + if (lns >= 1) + { + geom2 = gaiaCloneGeomCollLinestrings (geo); + geom2->Srid = geo->Srid; + geom2->DeclaredType = GAIA_MULTILINESTRING; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_ExtractMultiPolygon (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ ExtractMultiPolygon(BLOB encoded geometry) +/ +/ returns a MULTIPOLYGON-type geometry [if conversion is possible] +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + int pts; + int lns; + int pgs; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + cast_count (geo, &pts, &lns, &pgs); + if (pgs >= 1) + { + geom2 = gaiaCloneGeomCollPolygons (geo); + geom2->Srid = geo->Srid; + geom2->DeclaredType = GAIA_MULTIPOLYGON; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_Reverse (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_Reverse(BLOB encoded geometry) +/ +/ returns a new Geometry: any Linestring or Ring will be in reverse order +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + geom2 = gaiaCloneGeomCollSpecial (geo, GAIA_REVERSE_ORDER); + geom2->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (geo); + } +} + +static void +fnct_ForceLHR (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_ForceLHR(BLOB encoded geometry) +/ +/ returns a new Geometry: any Exterior Ring will be in clockwise orientation +/ and any Interior Ring will be in counter-clockwise orientation +/ or NULL in any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + geom2 = gaiaCloneGeomCollSpecial (geo, GAIA_LHR_ORDER); + geom2->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (geom2, &p_result, &len); + gaiaFreeGeomColl (geom2); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (geo); + } +} + +static void +fnct_Dimension (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Dimension(BLOB encoded geometry) +/ +/ returns: +/ 0 if geometry is a POINT or MULTIPOINT +/ 1 if geometry is a LINESTRING or MULTILINESTRING +/ 2 if geometry is a POLYGON or MULTIPOLYGON +/ 0, 1, 2, for GEOMETRYCOLLECTIONS according to geometries contained inside +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int dim; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + dim = gaiaDimension (geo); + sqlite3_result_int (context, dim); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_CoordDimension (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CoordDimension(BLOB encoded geometry) +/ +/ returns: +/ 'XY', 'XYM', 'XYZ', 'XYZM' +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + char *p_dim = NULL; + char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + if (geo->DimensionModel == GAIA_XY) + p_dim = "XY"; + else if (geo->DimensionModel == GAIA_XY_Z) + p_dim = "XYZ"; + else if (geo->DimensionModel == GAIA_XY_M) + p_dim = "XYM"; + else if (geo->DimensionModel == GAIA_XY_Z_M) + p_dim = "XYZM"; + if (p_dim) + { + len = strlen (p_dim); + p_result = malloc (len + 1); + strcpy (p_result, p_dim); + } + if (!p_result) + sqlite3_result_null (context); + else + { + len = strlen (p_result); + sqlite3_result_text (context, p_result, len, free); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_NDims (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_NDims(BLOB encoded geometry) +/ +/ returns: +/ 2, 3 or 4 +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int result = 0; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + if (geo->DimensionModel == GAIA_XY) + result = 2; + else if (geo->DimensionModel == GAIA_XY_Z) + result = 3; + else if (geo->DimensionModel == GAIA_XY_M) + result = 3; + else if (geo->DimensionModel == GAIA_XY_Z_M) + result = 4; + sqlite3_result_int (context, result); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_GeometryType (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ GeometryType(BLOB encoded geometry) +/ +/ returns the class for current geometry: +/ 'POINT' or 'MULTIPOINT' [Z, M, ZM] +/ 'LINESTRING' or 'MULTILINESTRING' [Z, M, ZM] +/ 'POLYGON' or 'MULTIPOLYGON' [Z, M, ZM] +/ 'GEOMETRYCOLLECTION' [Z, M, ZM] +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + int type; + char *p_type = NULL; + char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + { +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE enabled: supporting GPKG geometries */ + if (gaiaIsValidGPB (p_blob, n_bytes)) + { + char *gpb_type = gaiaGetGeometryTypeFromGPB (p_blob, n_bytes); + if (gpb_type == NULL) + sqlite3_result_null (context); + else + { + len = strlen (gpb_type); + sqlite3_result_text (context, gpb_type, len, free); + } + return; + } + else +#endif /* end GEOPACKAGE: supporting GPKG geometries */ + sqlite3_result_null (context); + } + else + { + type = gaiaGeometryType (geo); + switch (type) + { + case GAIA_POINT: + p_type = "POINT"; + break; + case GAIA_POINTZ: + p_type = "POINT Z"; + break; + case GAIA_POINTM: + p_type = "POINT M"; + break; + case GAIA_POINTZM: + p_type = "POINT ZM"; + break; + case GAIA_MULTIPOINT: + p_type = "MULTIPOINT"; + break; + case GAIA_MULTIPOINTZ: + p_type = "MULTIPOINT Z"; + break; + case GAIA_MULTIPOINTM: + p_type = "MULTIPOINT M"; + break; + case GAIA_MULTIPOINTZM: + p_type = "MULTIPOINT ZM"; + break; + case GAIA_LINESTRING: + case GAIA_COMPRESSED_LINESTRING: + p_type = "LINESTRING"; + break; + case GAIA_LINESTRINGZ: + case GAIA_COMPRESSED_LINESTRINGZ: + p_type = "LINESTRING Z"; + break; + case GAIA_LINESTRINGM: + case GAIA_COMPRESSED_LINESTRINGM: + p_type = "LINESTRING M"; + break; + case GAIA_LINESTRINGZM: + case GAIA_COMPRESSED_LINESTRINGZM: + p_type = "LINESTRING ZM"; + break; + case GAIA_MULTILINESTRING: + p_type = "MULTILINESTRING"; + break; + case GAIA_MULTILINESTRINGZ: + p_type = "MULTILINESTRING Z"; + break; + case GAIA_MULTILINESTRINGM: + p_type = "MULTILINESTRING M"; + break; + case GAIA_MULTILINESTRINGZM: + p_type = "MULTILINESTRING ZM"; + break; + case GAIA_POLYGON: + case GAIA_COMPRESSED_POLYGON: + p_type = "POLYGON"; + break; + case GAIA_POLYGONZ: + case GAIA_COMPRESSED_POLYGONZ: + p_type = "POLYGON Z"; + break; + case GAIA_POLYGONM: + case GAIA_COMPRESSED_POLYGONM: + p_type = "POLYGON M"; + break; + case GAIA_POLYGONZM: + case GAIA_COMPRESSED_POLYGONZM: + p_type = "POLYGON ZM"; + break; + case GAIA_MULTIPOLYGON: + p_type = "MULTIPOLYGON"; + break; + case GAIA_MULTIPOLYGONZ: + p_type = "MULTIPOLYGON Z"; + break; + case GAIA_MULTIPOLYGONM: + p_type = "MULTIPOLYGON M"; + break; + case GAIA_MULTIPOLYGONZM: + p_type = "MULTIPOLYGON ZM"; + break; + case GAIA_GEOMETRYCOLLECTION: + p_type = "GEOMETRYCOLLECTION"; + break; + case GAIA_GEOMETRYCOLLECTIONZ: + p_type = "GEOMETRYCOLLECTION Z"; + break; + case GAIA_GEOMETRYCOLLECTIONM: + p_type = "GEOMETRYCOLLECTION M"; + break; + case GAIA_GEOMETRYCOLLECTIONZM: + p_type = "GEOMETRYCOLLECTION ZM"; + break; + }; + if (p_type) + { + len = strlen (p_type); + p_result = malloc (len + 1); + strcpy (p_result, p_type); + } + if (!p_result) + sqlite3_result_null (context); + else + { + len = strlen (p_result); + sqlite3_result_text (context, p_result, len, free); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_GeometryAliasType (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ GeometryAliasType(BLOB encoded geometry) +/ +/ returns the alias-class for current geometry: +/ 'POINT' +/ 'LINESTRING' +/ 'POLYGON' +/ 'MULTIPOINT' +/ 'MULTILINESTRING' +/ 'MULTIPOLYGON' +/ 'GEOMETRYCOLLECTION' +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + int type; + char *p_type = NULL; + char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + type = gaiaGeometryAliasType (geo); + switch (type) + { + case GAIA_POINT: + p_type = "POINT"; + break; + case GAIA_MULTIPOINT: + p_type = "MULTIPOINT"; + break; + case GAIA_LINESTRING: + p_type = "LINESTRING"; + break; + case GAIA_MULTILINESTRING: + p_type = "MULTILINESTRING"; + break; + case GAIA_POLYGON: + p_type = "POLYGON"; + break; + case GAIA_MULTIPOLYGON: + p_type = "MULTIPOLYGON"; + break; + case GAIA_GEOMETRYCOLLECTION: + p_type = "GEOMETRYCOLLECTION"; + break; + }; + if (p_type) + { + len = strlen (p_type); + p_result = malloc (len + 1); + strcpy (p_result, p_type); + } + if (!p_result) + sqlite3_result_null (context); + else + { + len = strlen (p_result); + sqlite3_result_text (context, p_result, len, free); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_SridFromAuthCRS (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ SridFromAuthCRS(auth_name, auth_srid) +/ +/ returns the SRID +/ or NULL if any error is encountered +*/ + const unsigned char *auth_name; + int auth_srid; + int srid = -1; + char *sql; + char **results; + int n_rows; + int n_columns; + char *err_msg = NULL; + int ret; + int i; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + auth_name = sqlite3_value_text (argv[0]); + auth_srid = sqlite3_value_int (argv[1]); + + sql = sqlite3_mprintf ("SELECT srid FROM spatial_ref_sys " + "WHERE Upper(auth_name) = Upper(%Q) AND auth_srid = %d", + auth_name, auth_srid); + ret = sqlite3_get_table (sqlite, sql, &results, &n_rows, &n_columns, + &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto done; + if (n_rows >= 1) + { + for (i = 1; i <= n_rows; i++) + srid = atoi (results[(i * n_columns) + 0]); + } + sqlite3_free_table (results); + done: + sqlite3_result_int (context, srid); +} + +static void +fnct_SRID (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Srid(BLOB encoded geometry) +/ +/ returns the SRID +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + { +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE enabled: supporting GPKG geometries */ + if (gaiaIsValidGPB (p_blob, n_bytes)) + { + int srid = gaiaGetSridFromGPB (p_blob, n_bytes); + sqlite3_result_int (context, srid); + } + else + sqlite3_result_null (context); + return; +#endif /* end GEOPACKAGE: supporting GPKG geometries */ + sqlite3_result_null (context); + } + else + sqlite3_result_int (context, geo->Srid); + gaiaFreeGeomColl (geo); +} + +static void +fnct_SetSRID (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ SetSrid(BLOBencoded geometry, srid) +/ +/ returns a new geometry that is the original one received, but with the new SRID [no coordinates translation is applied] +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + int srid; + unsigned char *p_result = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + geo->Srid = srid; + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &n_bytes); + sqlite3_result_blob (context, p_result, n_bytes, free); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_IsEmpty (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ IsEmpty(BLOB encoded geometry) +/ +/ returns: +/ 1 if this geometry contains no elementary geometries +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + { +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE enabled: supporting GPKG geometries */ + if (gaiaIsValidGPB (p_blob, n_bytes)) + { + int is_empty = gaiaIsEmptyGPB (p_blob, n_bytes); + sqlite3_result_int (context, is_empty); + } + else +#endif /* end GEOPACKAGE: supporting GPKG geometries */ + sqlite3_result_int (context, -1); + } + else + sqlite3_result_int (context, gaiaIsEmpty (geo)); + gaiaFreeGeomColl (geo); +} + +static void +fnct_Is3D (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Is3D(BLOB encoded geometry) +/ +/ returns: +/ 1 if this geometry has Z coords +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + { +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE enabled: supporting GPKG geometries */ + if (gaiaIsValidGPB (p_blob, n_bytes)) + { + double min_x; + double max_x; + double min_y; + double max_y; + int has_z; + double min_z; + double max_z; + int has_m; + double min_m; + double max_m; + if (gaiaGetEnvelopeFromGPB + (p_blob, n_bytes, &min_x, &max_x, &min_y, &max_y, &has_z, + &min_z, &max_z, &has_m, &min_m, &max_m)) + { + sqlite3_result_int (context, has_z); + } + } + else +#endif /* end GEOPACKAGE: supporting GPKG geometries */ + sqlite3_result_int (context, -1); + } + else + { + if (geo->DimensionModel == GAIA_XY_Z + || geo->DimensionModel == GAIA_XY_Z_M) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_IsMeasured (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ IsMeasured(BLOB encoded geometry) +/ +/ returns: +/ 1 if this geometry has M coords +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + { +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE enabled: supporting GPKG geometries */ + if (gaiaIsValidGPB (p_blob, n_bytes)) + { + double min_x; + double max_x; + double min_y; + double max_y; + int has_z; + double min_z; + double max_z; + int has_m; + double min_m; + double max_m; + if (gaiaGetEnvelopeFromGPB + (p_blob, n_bytes, &min_x, &max_x, &min_y, &max_y, &has_z, + &min_z, &max_z, &has_m, &min_m, &max_m)) + { + sqlite3_result_int (context, has_m); + } + } + else +#endif /* end GEOPACKAGE: supporting GPKG geometries */ + sqlite3_result_int (context, -1); + } + else + { + if (geo->DimensionModel == GAIA_XY_M + || geo->DimensionModel == GAIA_XY_Z_M) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_MinZ (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_MinZ(BLOB encoded GEMETRY) +/ +/ returns the MinZ coordinate for current geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + double min; + double max; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + { +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE enabled: supporting GPKG geometries */ + if (gaiaIsValidGPB (p_blob, n_bytes)) + { + double min_x; + double max_x; + double min_y; + double max_y; + int has_z; + double min_z; + double max_z; + int has_m; + double min_m; + double max_m; + if (gaiaGetEnvelopeFromGPB + (p_blob, n_bytes, &min_x, &max_x, &min_y, &max_y, &has_z, + &min_z, &max_z, &has_m, &min_m, &max_m)) + { + if (has_z) + sqlite3_result_double (context, min_z); + else + sqlite3_result_null (context); + } + } + else +#endif /* end GEOPACKAGE: supporting GPKG geometries */ + sqlite3_result_null (context); + } + else + { + if (geo->DimensionModel == GAIA_XY_Z + || geo->DimensionModel == GAIA_XY_Z_M) + { + gaiaZRangeGeometry (geo, &min, &max); + sqlite3_result_double (context, min); + } + else + sqlite3_result_null (context); + gaiaFreeGeomColl (geo); + } +} + +static void +fnct_MaxZ (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_MaxZ(BLOB encoded GEMETRY) +/ +/ returns the MaxZ coordinate for current geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + double min; + double max; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + { +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE enabled: supporting GPKG geometries */ + if (gaiaIsValidGPB (p_blob, n_bytes)) + { + double min_x; + double max_x; + double min_y; + double max_y; + int has_z; + double min_z; + double max_z; + int has_m; + double min_m; + double max_m; + if (gaiaGetEnvelopeFromGPB + (p_blob, n_bytes, &min_x, &max_x, &min_y, &max_y, &has_z, + &min_z, &max_z, &has_m, &min_m, &max_m)) + { + if (has_z) + sqlite3_result_double (context, max_z); + else + sqlite3_result_null (context); + } + } + else +#endif /* end GEOPACKAGE: supporting GPKG geometries */ + sqlite3_result_null (context); + } + else + { + if (geo->DimensionModel == GAIA_XY_Z + || geo->DimensionModel == GAIA_XY_Z_M) + { + gaiaZRangeGeometry (geo, &min, &max); + sqlite3_result_double (context, max); + } + else + sqlite3_result_null (context); + gaiaFreeGeomColl (geo); + } +} + +static void +fnct_MinM (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_MinM(BLOB encoded GEMETRY) +/ +/ returns the MinM coordinate for current geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + double min; + double max; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + { +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE enabled: supporting GPKG geometries */ + if (gaiaIsValidGPB (p_blob, n_bytes)) + { + double min_x; + double max_x; + double min_y; + double max_y; + int has_z; + double min_z; + double max_z; + int has_m; + double min_m; + double max_m; + if (gaiaGetEnvelopeFromGPB + (p_blob, n_bytes, &min_x, &max_x, &min_y, &max_y, &has_z, + &min_z, &max_z, &has_m, &min_m, &max_m)) + { + if (has_m) + sqlite3_result_double (context, min_m); + else + sqlite3_result_null (context); + } + } + else +#endif /* end GEOPACKAGE: supporting GPKG geometries */ + sqlite3_result_null (context); + } + else + { + if (geo->DimensionModel == GAIA_XY_M + || geo->DimensionModel == GAIA_XY_Z_M) + { + gaiaMRangeGeometry (geo, &min, &max); + sqlite3_result_double (context, min); + } + else + sqlite3_result_null (context); + gaiaFreeGeomColl (geo); + } +} + +static void +fnct_MaxM (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_MaxM(BLOB encoded GEMETRY) +/ +/ returns the MaxM coordinate for current geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + double min; + double max; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + { +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE enabled: supporting GPKG geometries */ + if (gaiaIsValidGPB (p_blob, n_bytes)) + { + double min_x; + double max_x; + double min_y; + double max_y; + int has_z; + double min_z; + double max_z; + int has_m; + double min_m; + double max_m; + if (gaiaGetEnvelopeFromGPB + (p_blob, n_bytes, &min_x, &max_x, &min_y, &max_y, &has_z, + &min_z, &max_z, &has_m, &min_m, &max_m)) + { + if (has_m) + sqlite3_result_double (context, max_m); + else + sqlite3_result_null (context); + } + } + else +#endif /* end GEOPACKAGE: supporting GPKG geometries */ + sqlite3_result_null (context); + } + else + { + if (geo->DimensionModel == GAIA_XY_M + || geo->DimensionModel == GAIA_XY_Z_M) + { + gaiaMRangeGeometry (geo, &min, &max); + sqlite3_result_double (context, max); + } + else + sqlite3_result_null (context); + gaiaFreeGeomColl (geo); + } +} + +static void +fnct_Envelope (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Envelope(BLOB encoded geometry) +/ +/ returns the MBR for current geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr bbox; + gaiaPolygonPtr polyg; + gaiaRingPtr rect; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaMbrGeometry (geo); + bbox = gaiaAllocGeomColl (); + bbox->Srid = geo->Srid; + polyg = gaiaAddPolygonToGeomColl (bbox, 5, 0); + rect = polyg->Exterior; + gaiaSetPoint (rect->Coords, 0, geo->MinX, geo->MinY); /* vertex # 1 */ + gaiaSetPoint (rect->Coords, 1, geo->MaxX, geo->MinY); /* vertex # 2 */ + gaiaSetPoint (rect->Coords, 2, geo->MaxX, geo->MaxY); /* vertex # 3 */ + gaiaSetPoint (rect->Coords, 3, geo->MinX, geo->MaxY); /* vertex # 4 */ + gaiaSetPoint (rect->Coords, 4, geo->MinX, geo->MinY); /* vertex # 5 [same as vertex # 1 to close the polygon] */ + gaiaToSpatiaLiteBlobWkb (bbox, &p_result, &len); + gaiaFreeGeomColl (bbox); + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_Expand (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_Expand(BLOB encoded geometry, double amount) +/ +/ returns the MBR for current geometry expanded by "amount" in each direction +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr bbox; + gaiaPolygonPtr polyg; + gaiaRingPtr rect; + double tic; + int int_value; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + tic = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + tic = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaMbrGeometry (geo); + bbox = gaiaAllocGeomColl (); + bbox->Srid = geo->Srid; + polyg = gaiaAddPolygonToGeomColl (bbox, 5, 0); + rect = polyg->Exterior; + gaiaSetPoint (rect->Coords, 0, geo->MinX - tic, geo->MinY - tic); /* vertex # 1 */ + gaiaSetPoint (rect->Coords, 1, geo->MaxX + tic, geo->MinY - tic); /* vertex # 2 */ + gaiaSetPoint (rect->Coords, 2, geo->MaxX + tic, geo->MaxY + tic); /* vertex # 3 */ + gaiaSetPoint (rect->Coords, 3, geo->MinX - tic, geo->MaxY + tic); /* vertex # 4 */ + gaiaSetPoint (rect->Coords, 4, geo->MinX - tic, geo->MinY - tic); /* vertex # 5 [same as vertex # 1 to close the polygon] */ + gaiaToSpatiaLiteBlobWkb (bbox, &p_result, &len); + gaiaFreeGeomColl (bbox); + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (geo); +} + +static void +build_filter_mbr (sqlite3_context * context, int argc, + sqlite3_value ** argv, int mode) +{ +/* SQL functions: +/ BuildMbrFilter(double X1, double Y1, double X2, double Y2) +/ FilterMBRWithin(double X1, double Y1, double X2, double Y2) +/ FilterMBRContain(double X1, double Y1, double X2, double Y2) +/ FilterMBRIntersects(double X1, double Y1, double X2, double Y2) +/ +/ builds a generic filter for MBR from two points (identifying a rectangle's diagonal) +/ or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + double x1; + double y1; + double x2; + double y2; + int int_value; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x1 = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x1 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + y1 = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y1 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + x2 = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + x2 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + y2 = sqlite3_value_double (argv[3]); + else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[3]); + y2 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + gaiaBuildFilterMbr (x1, y1, x2, y2, mode, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); +} + +/* +/ the following functions simply readdress the request to build_filter_mbr() +/ setting the appropriate MODe +*/ + +static void +fnct_BuildMbrFilter (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + build_filter_mbr (context, argc, argv, GAIA_FILTER_MBR_DECLARE); +} + +static void +fnct_FilterMbrWithin (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ + build_filter_mbr (context, argc, argv, GAIA_FILTER_MBR_WITHIN); +} + +static void +fnct_FilterMbrContains (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ + build_filter_mbr (context, argc, argv, GAIA_FILTER_MBR_CONTAINS); +} + +static void +fnct_FilterMbrIntersects (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ + build_filter_mbr (context, argc, argv, GAIA_FILTER_MBR_INTERSECTS); +} + +static void +fnct_BuildMbr1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ BuildMBR(double X1, double Y1, double X2, double Y2) +/ +/ builds an MBR from two points (identifying a rectangle's diagonal) +/ or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + double x1; + double y1; + double x2; + double y2; + int int_value; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x1 = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x1 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + y1 = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y1 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + x2 = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + x2 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + y2 = sqlite3_value_double (argv[3]); + else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[3]); + y2 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + gaiaBuildMbr (x1, y1, x2, y2, -1, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_BuildMbr2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ BuildMBR(double X1, double Y1, double X2, double Y2, int SRID) +/ +/ builds an MBR from two points (identifying a rectangle's diagonal) +/ or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + double x1; + double y1; + double x2; + double y2; + int int_value; + int srid; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x1 = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x1 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + y1 = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y1 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + x2 = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + x2 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + y2 = sqlite3_value_double (argv[3]); + else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[3]); + y2 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[4]); + else + { + sqlite3_result_null (context); + return; + } + gaiaBuildMbr (x1, y1, x2, y2, srid, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_BuildCircleMbr1 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ BuildCircleMBR(double X, double Y, double radius) +/ +/ builds an MBR from two points (identifying a rectangle's diagonal) +/ or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + double x; + double y; + double radius; + int int_value; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + y = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + radius = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + radius = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + gaiaBuildCircleMbr (x, y, radius, -1, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_BuildCircleMbr2 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ BuildCircleMBR(double X, double Y, double radius, int SRID) +/ +/ builds an MBR from two points (identifying a rectangle's diagonal) +/ or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + double x; + double y; + double radius; + int int_value; + int srid; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + y = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + radius = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + radius = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + srid = sqlite3_value_int (argv[3]); + else + { + sqlite3_result_null (context); + return; + } + gaiaBuildCircleMbr (x, y, radius, srid, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_Extent_step (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Extent(BLOBencoded geom) +/ +/ aggregate function - STEP +/ +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geom; + double **p; + double *max_min; + int *srid_check; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geom) + return; + gaiaMbrGeometry (geom); + p = sqlite3_aggregate_context (context, sizeof (double **)); + if (!(*p)) + { + /* this is the first row */ + max_min = malloc ((sizeof (double) * 5)); + *(max_min + 0) = geom->MinX; + *(max_min + 1) = geom->MinY; + *(max_min + 2) = geom->MaxX; + *(max_min + 3) = geom->MaxY; + srid_check = (int *) (max_min + 4); + *(srid_check + 0) = geom->Srid; + *(srid_check + 1) = geom->Srid; + *p = max_min; + } + else + { + /* subsequent rows */ + max_min = *p; + if (geom->MinX < *(max_min + 0)) + *(max_min + 0) = geom->MinX; + if (geom->MinY < *(max_min + 1)) + *(max_min + 1) = geom->MinY; + if (geom->MaxX > *(max_min + 2)) + *(max_min + 2) = geom->MaxX; + if (geom->MaxY > *(max_min + 3)) + *(max_min + 3) = geom->MaxY; + srid_check = (int *) (max_min + 4); + if (*(srid_check + 1) != geom->Srid) + *(srid_check + 1) = geom->Srid; + } + gaiaFreeGeomColl (geom); +} + +static void +fnct_Extent_final (sqlite3_context * context) +{ +/* SQL function: +/ Extent(BLOBencoded geom) +/ +/ aggregate function - FINAL +/ +*/ + gaiaGeomCollPtr result; + gaiaPolygonPtr polyg; + gaiaRingPtr rect; + double *max_min; + double minx; + double miny; + double maxx; + double maxy; + int *srid_check; + double **p = sqlite3_aggregate_context (context, 0); + if (!p) + { + sqlite3_result_null (context); + return; + } + max_min = *p; + if (!max_min) + { + sqlite3_result_null (context); + return; + } + srid_check = (int *) (max_min + 4); + if (*(srid_check + 0) != *(srid_check + 1)) + { + sqlite3_result_null (context); + return; + } + result = gaiaAllocGeomColl (); + if (!result) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = *(srid_check + 0); + polyg = gaiaAddPolygonToGeomColl (result, 5, 0); + rect = polyg->Exterior; + minx = *(max_min + 0); + miny = *(max_min + 1); + maxx = *(max_min + 2); + maxy = *(max_min + 3); + gaiaSetPoint (rect->Coords, 0, minx, miny); /* vertex # 1 */ + gaiaSetPoint (rect->Coords, 1, maxx, miny); /* vertex # 2 */ + gaiaSetPoint (rect->Coords, 2, maxx, maxy); /* vertex # 3 */ + gaiaSetPoint (rect->Coords, 3, minx, maxy); /* vertex # 4 */ + gaiaSetPoint (rect->Coords, 4, minx, miny); /* vertex # 5 [same as vertex # 1 to close the polygon] */ + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + free (max_min); +} + +static void +fnct_MbrMinX (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MbrMinX(BLOB encoded GEMETRY) +/ +/ returns the MinX coordinate for current geometry's MBR +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + double coord; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (!gaiaGetMbrMinX (p_blob, n_bytes, &coord)) + { +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE enabled: supporting GPKG geometries */ + if (gaiaIsValidGPB (p_blob, n_bytes)) + { + double min_x; + double max_x; + double min_y; + double max_y; + int has_z; + double min_z; + double max_z; + int has_m; + double min_m; + double max_m; + if (gaiaGetEnvelopeFromGPB + (p_blob, n_bytes, &min_x, &max_x, &min_y, &max_y, &has_z, + &min_z, &max_z, &has_m, &min_m, &max_m)) + { + sqlite3_result_double (context, min_x); + } + } + else +#endif /* end GEOPACKAGE: supporting GPKG geometries */ + sqlite3_result_null (context); + } + else + sqlite3_result_double (context, coord); +} + +static void +fnct_MbrMaxX (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MbrMaxX(BLOB encoded GEMETRY) +/ +/ returns the MaxX coordinate for current geometry's MBR +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + double coord; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (!gaiaGetMbrMaxX (p_blob, n_bytes, &coord)) + { +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE enabled: supporting GPKG geometries */ + if (gaiaIsValidGPB (p_blob, n_bytes)) + { + double min_x; + double max_x; + double min_y; + double max_y; + int has_z; + double min_z; + double max_z; + int has_m; + double min_m; + double max_m; + if (gaiaGetEnvelopeFromGPB + (p_blob, n_bytes, &min_x, &max_x, &min_y, &max_y, &has_z, + &min_z, &max_z, &has_m, &min_m, &max_m)) + { + sqlite3_result_double (context, max_x); + } + } + else +#endif /* end GEOPACKAGE: supporting GPKG geometries */ + sqlite3_result_null (context); + } + else + sqlite3_result_double (context, coord); +} + +static void +fnct_MbrMinY (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MbrMinY(BLOB encoded GEMETRY) +/ +/ returns the MinY coordinate for current geometry's MBR +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + double coord; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (!gaiaGetMbrMinY (p_blob, n_bytes, &coord)) + { +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE enabled: supporting GPKG geometries */ + if (gaiaIsValidGPB (p_blob, n_bytes)) + { + double min_x; + double max_x; + double min_y; + double max_y; + int has_z; + double min_z; + double max_z; + int has_m; + double min_m; + double max_m; + if (gaiaGetEnvelopeFromGPB + (p_blob, n_bytes, &min_x, &max_x, &min_y, &max_y, &has_z, + &min_z, &max_z, &has_m, &min_m, &max_m)) + { + sqlite3_result_double (context, min_y); + } + } + else +#endif /* end GEOPACKAGE: supporting GPKG geometries */ + sqlite3_result_null (context); + } + else + sqlite3_result_double (context, coord); +} + +static void +fnct_MbrMaxY (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MbrMaxY(BLOB encoded GEMETRY) +/ +/ returns the MaxY coordinate for current geometry's MBR +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + double coord; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (!gaiaGetMbrMaxY (p_blob, n_bytes, &coord)) + { +#ifdef ENABLE_GEOPACKAGE /* GEOPACKAGE enabled: supporting GPKG geometries */ + if (gaiaIsValidGPB (p_blob, n_bytes)) + { + double min_x; + double max_x; + double min_y; + double max_y; + int has_z; + double min_z; + double max_z; + int has_m; + double min_m; + double max_m; + if (gaiaGetEnvelopeFromGPB + (p_blob, n_bytes, &min_x, &max_x, &min_y, &max_y, &has_z, + &min_z, &max_z, &has_m, &min_m, &max_m)) + { + sqlite3_result_double (context, max_y); + } + } + else +#endif /* end GEOPACKAGE: supporting GPKG geometries */ + sqlite3_result_null (context); + } + else + sqlite3_result_double (context, coord); +} + +#ifndef OMIT_GEOCALLBACKS /* supporting RTree geometry callbacks */ +static void +gaia_mbr_del (void *p) +{ +/* freeing data used by R*Tree Geometry Callback */ + sqlite3_free (p); +} + +static int +fnct_RTreeIntersects (sqlite3_rtree_geometry * p, int nCoord, double *aCoord, + int *pRes) +{ +/* R*Tree Geometry callback function: +/ ... MATCH RTreeIntersects(double x1, double y1, double x2, double y2) +*/ + struct gaia_rtree_mbr *mbr; + double xmin; + double xmax; + double ymin; + double ymax; + float fminx; + float fminy; + float fmaxx; + float fmaxy; + double tic; + double tic2; + + if (p->pUser == 0) + { + /* first call: we must check args and then initialize the MBR struct */ + if (nCoord != 4) + return SQLITE_ERROR; + if (p->nParam != 4) + return SQLITE_ERROR; + mbr = (struct gaia_rtree_mbr *) (p->pUser = + sqlite3_malloc (sizeof + (struct + gaia_rtree_mbr))); + if (!mbr) + return SQLITE_NOMEM; + p->xDelUser = gaia_mbr_del; + xmin = p->aParam[0]; + ymin = p->aParam[1]; + xmax = p->aParam[2]; + ymax = p->aParam[3]; + if (xmin > xmax) + { + xmin = p->aParam[2]; + xmax = p->aParam[0]; + } + if (ymin > ymax) + { + ymin = p->aParam[3]; + ymax = p->aParam[1]; + } + + /* adjusting the MBR so to compensate for DOUBLE/FLOAT truncations */ + fminx = (float) xmin; + fminy = (float) ymin; + fmaxx = (float) xmax; + fmaxy = (float) ymax; + tic = fabs (xmin - fminx); + tic2 = fabs (ymin - fminy); + if (tic2 > tic) + tic = tic2; + tic2 = fabs (xmax - fmaxx); + if (tic2 > tic) + tic = tic2; + tic2 = fabs (ymax - fmaxy); + if (tic2 > tic) + tic = tic2; + tic *= 2.0; + + mbr->minx = xmin - tic; + mbr->miny = ymin - tic; + mbr->maxx = xmax + tic; + mbr->maxy = ymax + tic; + } + + mbr = (struct gaia_rtree_mbr *) (p->pUser); + xmin = aCoord[0]; + xmax = aCoord[1]; + ymin = aCoord[2]; + ymax = aCoord[3]; + *pRes = 1; +/* evaluating Intersects relationship */ + if (xmin > mbr->maxx) + *pRes = 0; + if (xmax < mbr->minx) + *pRes = 0; + if (ymin > mbr->maxy) + *pRes = 0; + if (ymax < mbr->miny) + *pRes = 0; + return SQLITE_OK; +} + +static int +fnct_RTreeDistWithin (sqlite3_rtree_geometry * p, int nCoord, double *aCoord, + int *pRes) +{ +/* R*Tree Geometry callback function: +/ ... MATCH RTreeDistWithin(double x, double y, double radius) +*/ + struct gaia_rtree_mbr *mbr; + double xmin; + double xmax; + double ymin; + double ymax; + + if (p->pUser == 0) + { + /* first call: we must check args and then initialize the MBR struct */ + if (nCoord != 4) + return SQLITE_ERROR; + if (p->nParam != 3) + return SQLITE_ERROR; + mbr = (struct gaia_rtree_mbr *) (p->pUser = + sqlite3_malloc (sizeof + (struct + gaia_rtree_mbr))); + if (!mbr) + return SQLITE_NOMEM; + p->xDelUser = gaia_mbr_del; + mbr->minx = p->aParam[0] - p->aParam[2]; + mbr->miny = p->aParam[1] - p->aParam[2]; + mbr->maxx = p->aParam[0] + p->aParam[2]; + mbr->maxy = p->aParam[1] + p->aParam[2]; + } + + mbr = (struct gaia_rtree_mbr *) (p->pUser); + xmin = aCoord[0]; + xmax = aCoord[1]; + ymin = aCoord[2]; + ymax = aCoord[3]; + *pRes = 1; +/* evaluating Intersects relationship */ + if (xmin > mbr->maxx) + *pRes = 0; + if (xmax < mbr->minx) + *pRes = 0; + if (ymin > mbr->maxy) + *pRes = 0; + if (ymax < mbr->miny) + *pRes = 0; + return SQLITE_OK; +} +#endif /* end RTree geometry callbacks */ + +static void +fnct_X (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ X(BLOB encoded POINT) +/ +/ returns the X coordinate for current POINT geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaPointPtr point; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + point = simplePoint (geo); + if (!point) + sqlite3_result_null (context); + else + sqlite3_result_double (context, point->X); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_Y (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Y(BLOB encoded POINT) +/ +/ returns the Y coordinate for current POINT geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaPointPtr point; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + point = simplePoint (geo); + if (!point) + sqlite3_result_null (context); + else + sqlite3_result_double (context, point->Y); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_Z (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Z(BLOB encoded POINT) +/ +/ returns the Z coordinate for current POINT geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaPointPtr point; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + point = simplePoint (geo); + if (!point) + sqlite3_result_null (context); + else + { + if (point->DimensionModel == GAIA_XY_Z + || point->DimensionModel == GAIA_XY_Z_M) + sqlite3_result_double (context, point->Z); + else + sqlite3_result_null (context); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_M (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ M(BLOB encoded POINT) +/ +/ returns the M coordinate for current POINT geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaPointPtr point; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + point = simplePoint (geo); + if (!point) + sqlite3_result_null (context); + else + { + if (point->DimensionModel == GAIA_XY_M + || point->DimensionModel == GAIA_XY_Z_M) + sqlite3_result_double (context, point->M); + else + sqlite3_result_null (context); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_NumPoints (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ NumPoints(BLOB encoded LINESTRING) +/ +/ returns the number of vertices for current LINESTRING geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaLinestringPtr line; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + line = simpleLinestring (geo); + if (!line) + sqlite3_result_null (context); + else + sqlite3_result_int (context, line->Points); + } + gaiaFreeGeomColl (geo); +} + +static void +point_n (sqlite3_context * context, int argc, sqlite3_value ** argv, + int request) +{ +/* SQL functions: +/ StartPoint(BLOB encoded LINESTRING geometry) +/ EndPoint(BLOB encoded LINESTRING geometry) +/ PointN(BLOB encoded LINESTRING geometry, integer point_no) +/ +/ returns the Nth POINT for current LINESTRING geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int vertex; + int len; + double x; + double y; + double z; + double m; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + gaiaLinestringPtr line; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (request == GAIA_POINTN) + { + /* PointN() requires point index to be defined as an SQL function argument */ + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + vertex = sqlite3_value_int (argv[1]); + } + else if (request == GAIA_END_POINT) + vertex = -1; /* EndPoint() specifies a negative point index */ + else + vertex = 1; /* StartPoint() */ + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + line = simpleLinestring (geo); + if (!line) + sqlite3_result_null (context); + else + { + if (vertex < 0) + vertex = line->Points - 1; + else + vertex -= 1; /* decreasing the point index by 1, because PointN counts starting at index 1 */ + if (vertex >= 0 && vertex < line->Points) + { + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, vertex, &x, &y, &z); + result = gaiaAllocGeomCollXYZ (); + result->Srid = geo->Srid; + gaiaAddPointToGeomCollXYZ (result, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, vertex, &x, &y, &m); + result = gaiaAllocGeomCollXYM (); + result->Srid = geo->Srid; + gaiaAddPointToGeomCollXYM (result, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, vertex, &x, &y, + &z, &m); + result = gaiaAllocGeomCollXYZM (); + result->Srid = geo->Srid; + gaiaAddPointToGeomCollXYZM (result, x, y, z, m); + } + else + { + gaiaGetPoint (line->Coords, vertex, &x, &y); + result = gaiaAllocGeomColl (); + result->Srid = geo->Srid; + gaiaAddPointToGeomColl (result, x, y); + } + } + else + result = NULL; + if (!result) + sqlite3_result_null (context); + else + { + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + gaiaFreeGeomColl (result); + sqlite3_result_blob (context, p_result, len, free); + } + } + } + gaiaFreeGeomColl (geo); +} + +/* +/ the following functions simply readdress the request to point_n() +/ setting the appropriate request mode +*/ + +static void +fnct_StartPoint (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + point_n (context, argc, argv, GAIA_START_POINT); +} + +static void +fnct_EndPoint (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + point_n (context, argc, argv, GAIA_END_POINT); +} + +static void +fnct_PointN (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + point_n (context, argc, argv, GAIA_POINTN); +} + +static void +fnct_ExteriorRing (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL functions: +/ ExteriorRing(BLOB encoded POLYGON geometry) +/ +/ returns the EXTERIOR RING for current POLYGON geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int iv; + double x; + double y; + double z; + double m; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + gaiaLinestringPtr line; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + polyg = simplePolygon (geo); + if (!polyg) + sqlite3_result_null (context); + else + { + ring = polyg->Exterior; + if (ring->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (ring->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else if (ring->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else + result = gaiaAllocGeomColl (); + result->Srid = geo->Srid; + line = gaiaAddLinestringToGeomColl (result, ring->Points); + for (iv = 0; iv < line->Points; iv++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (line->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (line->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (line->Coords, iv, x, y, z, m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + gaiaSetPoint (line->Coords, iv, x, y); + } + } + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + gaiaFreeGeomColl (result); + sqlite3_result_blob (context, p_result, len, free); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_NumInteriorRings (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ NumInteriorRings(BLOB encoded POLYGON) +/ +/ returns the number of INTERIOR RINGS for current POLYGON geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaPolygonPtr polyg; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + polyg = simplePolygon (geo); + if (!polyg) + sqlite3_result_null (context); + else + sqlite3_result_int (context, polyg->NumInteriors); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_InteriorRingN (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL functions: +/ InteriorRingN(BLOB encoded POLYGON geometry) +/ +/ returns the Nth INTERIOR RING for current POLYGON geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int border; + int iv; + double x; + double y; + double z; + double m; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + gaiaLinestringPtr line; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + border = sqlite3_value_int (argv[1]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + polyg = simplePolygon (geo); + if (!polyg) + sqlite3_result_null (context); + else + { + if (border >= 1 && border <= polyg->NumInteriors) + { + ring = polyg->Interiors + (border - 1); + if (ring->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (ring->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else if (ring->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else + result = gaiaAllocGeomColl (); + result->Srid = geo->Srid; + line = gaiaAddLinestringToGeomColl (result, ring->Points); + for (iv = 0; iv < line->Points; iv++) + { + if (ring->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring->Coords, iv, &x, + &y, &z); + gaiaSetPointXYZ (line->Coords, iv, x, y, z); + } + else if (ring->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring->Coords, iv, &x, + &y, &m); + gaiaSetPointXYM (line->Coords, iv, x, y, m); + } + else if (ring->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring->Coords, iv, &x, + &y, &z, &m); + gaiaSetPointXYZM (line->Coords, iv, x, + y, z, m); + } + else + { + gaiaGetPoint (ring->Coords, iv, &x, &y); + gaiaSetPoint (line->Coords, iv, x, y); + } + } + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + gaiaFreeGeomColl (result); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_NumGeometries (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ NumGeometries(BLOB encoded GEOMETRYCOLLECTION) +/ +/ returns the number of elementary geometries for current geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int cnt = 0; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + point = geo->FirstPoint; + while (point) + { + /* counts how many points are there */ + cnt++; + point = point->Next; + } + line = geo->FirstLinestring; + while (line) + { + /* counts how many linestrings are there */ + cnt++; + line = line->Next; + } + polyg = geo->FirstPolygon; + while (polyg) + { + /* counts how many polygons are there */ + cnt++; + polyg = polyg->Next; + } + sqlite3_result_int (context, cnt); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_NPoints (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_NPoints(BLOB encoded GEOMETRYCOLLECTION) +/ +/ returns the total number of points/vertices for current geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int cnt = 0; + int ib; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + gaiaRingPtr rng; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + point = geo->FirstPoint; + while (point) + { + /* counts how many points are there */ + cnt++; + point = point->Next; + } + line = geo->FirstLinestring; + while (line) + { + /* counts how many points are there */ + cnt += line->Points; + line = line->Next; + } + polyg = geo->FirstPolygon; + while (polyg) + { + /* counts how many points are in the exterior ring */ + rng = polyg->Exterior; + cnt += rng->Points; + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* processing any interior ring */ + rng = polyg->Interiors + ib; + cnt += rng->Points; + } + polyg = polyg->Next; + } + sqlite3_result_int (context, cnt); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_NRings (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_NRings(BLOB encoded GEOMETRYCOLLECTION) +/ +/ returns the total number of rings for current geometry +/ (this including both interior and exterior rings) +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int cnt = 0; + gaiaPolygonPtr polyg; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + polyg = geo->FirstPolygon; + while (polyg) + { + /* counts how many rings are there */ + cnt += polyg->NumInteriors + 1; + polyg = polyg->Next; + } + sqlite3_result_int (context, cnt); + } + gaiaFreeGeomColl (geo); +} + +static int +is_single_point (gaiaGeomCollPtr geom) +{ +/* check if this geometry is a simple Point */ + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts == 1 && lns == 0 && pgs == 0) + return 1; + return 0; +} + +static int +is_single_linestring (gaiaGeomCollPtr geom) +{ +/* check if this geometry is a simple Linestring */ + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts == 0 && lns == 1 && pgs == 0) + return 1; + return 0; +} + +static void +fnct_AddPoint (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL functions: +/ ST_AddPoint(BLOB encoded LINESTRING line, BLOB encoded POINT point) +/ ST_AddPoint(BLOB encoded LINESTRING line, BLOB encoded POINT point, INTEGER position) +/ +/ returns a new Linestring by adding a new Point before "position" (zero-based index) +/ a negative "position" (default) means appending to the end +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaLinestringPtr ln; + gaiaLinestringPtr out_ln; + gaiaPointPtr pt; + int position = -1; + gaiaGeomCollPtr line = NULL; + gaiaGeomCollPtr point = NULL; + gaiaGeomCollPtr out; + int len; + unsigned char *p_result = NULL; + int iv; + int out_iv; + double x; + double y; + double m; + double z; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + line = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!line) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + gaiaFreeGeomColl (line); + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + point = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!point) + { + gaiaFreeGeomColl (line); + sqlite3_result_null (context); + return; + } + if (argc == 3) + { + if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + goto stop; + } + position = sqlite3_value_int (argv[2]); + } + if (is_single_linestring (line) && is_single_point (point)) + ; + else + { + sqlite3_result_null (context); + goto stop; + } + ln = line->FirstLinestring; + pt = point->FirstPoint; + if (position >= 0 && position >= ln->Points) + { + sqlite3_result_null (context); + goto stop; + } +/* creating the output Geometry */ + if (line->DimensionModel == GAIA_XY_Z) + out = gaiaAllocGeomCollXYZ (); + else if (line->DimensionModel == GAIA_XY_M) + out = gaiaAllocGeomCollXYM (); + else if (line->DimensionModel == GAIA_XY_Z_M) + out = gaiaAllocGeomCollXYZM (); + else + out = gaiaAllocGeomColl (); + out->Srid = line->Srid; + out->DeclaredType = line->DeclaredType; + out_ln = gaiaAddLinestringToGeomColl (out, ln->Points + 1); + if (position < 0) + { + /* appending the new Point */ + for (iv = 0; iv < ln->Points; iv++) + { + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (out_ln->Coords, iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (out_ln->Coords, iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (out_ln->Coords, iv, x, y, z, m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + gaiaSetPoint (out_ln->Coords, iv, x, y); + } + } + /* appending the new Point */ + x = pt->X; + y = pt->Y; + z = pt->Z; + m = pt->M; + out_iv = ln->Points; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (out_ln->Coords, out_iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (out_ln->Coords, out_iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (out_ln->Coords, out_iv, x, y, z, m); + } + else + { + gaiaSetPoint (out_ln->Coords, out_iv, x, y); + } + } + else + { + /* inserting the new Point before "position" */ + out_iv = 0; + for (iv = 0; iv < position; iv++) + { + /* copying all Points before "position" */ + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (out_ln->Coords, out_iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (out_ln->Coords, out_iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (out_ln->Coords, out_iv, x, y, z, m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + gaiaSetPoint (out_ln->Coords, out_iv, x, y); + } + out_iv++; + } + /* inserting the new Point */ + x = pt->X; + y = pt->Y; + z = pt->Z; + m = pt->M; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (out_ln->Coords, out_iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (out_ln->Coords, out_iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (out_ln->Coords, out_iv, x, y, z, m); + } + else + { + gaiaSetPoint (out_ln->Coords, out_iv, x, y); + } + out_iv++; + for (iv = position; iv < ln->Points; iv++) + { + /* copying all Points after "position" */ + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (out_ln->Coords, out_iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (out_ln->Coords, out_iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (out_ln->Coords, out_iv, x, y, z, m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + gaiaSetPoint (out_ln->Coords, out_iv, x, y); + } + out_iv++; + } + } + gaiaToSpatiaLiteBlobWkb (out, &p_result, &len); + gaiaFreeGeomColl (out); + sqlite3_result_blob (context, p_result, len, free); + stop: + gaiaFreeGeomColl (line); + gaiaFreeGeomColl (point); +} + +static void +fnct_SetPoint (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL functions: +/ ST_SetPoint(BLOB encoded LINESTRING line, INTEGER position, BLOB encoded POINT point) +/ +/ returns a new Linestring by replacing the Point at "position" (zero-based index) +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaLinestringPtr ln; + gaiaLinestringPtr out_ln; + gaiaPointPtr pt; + int position; + gaiaGeomCollPtr line = NULL; + gaiaGeomCollPtr point = NULL; + gaiaGeomCollPtr out; + int len; + unsigned char *p_result = NULL; + int iv; + double x; + double y; + double m; + double z; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + line = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!line) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + gaiaFreeGeomColl (line); + sqlite3_result_null (context); + return; + } + position = sqlite3_value_int (argv[1]); + if (sqlite3_value_type (argv[2]) != SQLITE_BLOB) + { + gaiaFreeGeomColl (line); + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[2]); + n_bytes = sqlite3_value_bytes (argv[2]); + point = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!point) + { + gaiaFreeGeomColl (line); + sqlite3_result_null (context); + return; + } + if (is_single_linestring (line) && is_single_point (point)) + ; + else + { + sqlite3_result_null (context); + goto stop; + } + ln = line->FirstLinestring; + pt = point->FirstPoint; + if (position < 0 || position >= ln->Points) + { + sqlite3_result_null (context); + goto stop; + } +/* creating the output Geometry */ + if (line->DimensionModel == GAIA_XY_Z) + out = gaiaAllocGeomCollXYZ (); + else if (line->DimensionModel == GAIA_XY_M) + out = gaiaAllocGeomCollXYM (); + else if (line->DimensionModel == GAIA_XY_Z_M) + out = gaiaAllocGeomCollXYZM (); + else + out = gaiaAllocGeomColl (); + out->Srid = line->Srid; + out->DeclaredType = line->DeclaredType; + out_ln = gaiaAddLinestringToGeomColl (out, ln->Points); + for (iv = 0; iv < ln->Points; iv++) + { + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + } + if (iv == position) + { + /* replacing the new Point */ + x = pt->X; + y = pt->Y; + z = pt->Z; + m = pt->M; + } + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaSetPointXYZ (out_ln->Coords, iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaSetPointXYM (out_ln->Coords, iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaSetPointXYZM (out_ln->Coords, iv, x, y, z, m); + } + else + { + gaiaSetPoint (out_ln->Coords, iv, x, y); + } + } + gaiaToSpatiaLiteBlobWkb (out, &p_result, &len); + gaiaFreeGeomColl (out); + sqlite3_result_blob (context, p_result, len, free); + stop: + gaiaFreeGeomColl (line); + gaiaFreeGeomColl (point); +} + +static void +fnct_RemovePoint (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL functions: +/ ST_RemovePoint(BLOB encoded LINESTRING line, INTEGER position) +/ +/ returns a new Linestring by removing the Point at "position" (zero-based index) +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaLinestringPtr ln; + gaiaLinestringPtr out_ln; + int position; + gaiaGeomCollPtr line = NULL; + gaiaGeomCollPtr out; + int len; + unsigned char *p_result = NULL; + int iv; + int out_iv; + double x; + double y; + double m; + double z; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + line = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!line) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + goto stop; + } + position = sqlite3_value_int (argv[1]); + if (!is_single_linestring (line)) + { + sqlite3_result_null (context); + goto stop; + } + ln = line->FirstLinestring; + if (position < 0 || position >= ln->Points) + { + sqlite3_result_null (context); + goto stop; + } +/* creating the output Geometry */ + if (line->DimensionModel == GAIA_XY_Z) + out = gaiaAllocGeomCollXYZ (); + else if (line->DimensionModel == GAIA_XY_M) + out = gaiaAllocGeomCollXYM (); + else if (line->DimensionModel == GAIA_XY_Z_M) + out = gaiaAllocGeomCollXYZM (); + else + out = gaiaAllocGeomColl (); + out->Srid = line->Srid; + out->DeclaredType = line->DeclaredType; + out_ln = gaiaAddLinestringToGeomColl (out, ln->Points - 1); + out_iv = 0; + for (iv = 0; iv < position; iv++) + { + /* copying all Points before "position" */ + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (out_ln->Coords, out_iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (out_ln->Coords, out_iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (out_ln->Coords, out_iv, x, y, z, m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + gaiaSetPoint (out_ln->Coords, out_iv, x, y); + } + out_iv++; + } + for (iv = position + 1; iv < ln->Points; iv++) + { + /* copying all Points after "position" */ + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + gaiaSetPointXYZ (out_ln->Coords, out_iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + gaiaSetPointXYM (out_ln->Coords, out_iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + gaiaSetPointXYZM (out_ln->Coords, out_iv, x, y, z, m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + gaiaSetPoint (out_ln->Coords, out_iv, x, y); + } + out_iv++; + } + gaiaToSpatiaLiteBlobWkb (out, &p_result, &len); + gaiaFreeGeomColl (out); + sqlite3_result_blob (context, p_result, len, free); + stop: + gaiaFreeGeomColl (line); +} + +static void +fnct_MakePolygon (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL functions: +/ ST_MakePolygon(BLOB encoded LINESTRING line) +/ ST_MakePolygon(BLOB encoded LINESTRING line, BLOB encoded (MULTI)LINESTING holes) +/ +/ returns a new POLYGON from the given exterior and interior rings +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr exterior = NULL; + gaiaGeomCollPtr interiors = NULL; + gaiaGeomCollPtr out; + int len; + unsigned char *p_result = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + goto stop; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + exterior = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!exterior) + { + sqlite3_result_null (context); + goto stop; + } + if (argc == 2) + { + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + goto stop; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + interiors = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!interiors) + { + sqlite3_result_null (context); + goto stop; + } + } + out = gaiaMakePolygon (exterior, interiors); + if (!out) + { + sqlite3_result_null (context); + goto stop; + } + gaiaToSpatiaLiteBlobWkb (out, &p_result, &len); + gaiaFreeGeomColl (out); + sqlite3_result_blob (context, p_result, len, free); + stop: + gaiaFreeGeomColl (exterior); + gaiaFreeGeomColl (interiors); +} + +static int +getXYZMSinglePoint (gaiaGeomCollPtr geom, double *x, double *y, double *z, + double *m) +{ +/* check if this geometry is a simple Point (returning full coords) */ + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts == 1 && lns == 0 && pgs == 0) + ; + else + return 0; + *x = geom->FirstPoint->X; + *y = geom->FirstPoint->Y; + if (geom->DimensionModel == GAIA_XY_Z + || geom->DimensionModel == GAIA_XY_Z_M) + *z = geom->FirstPoint->Z; + else + *z = 0.0; + if (geom->DimensionModel == GAIA_XY_M + || geom->DimensionModel == GAIA_XY_Z_M) + *m = geom->FirstPoint->M; + else + *m = 0.0; + return 1; +} + +static void +fnct_SnapToGrid (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_SnapToGrid(BLOBencoded geom, double size) +/ ST_SnapToGrid(BLOBencoded geom, double sizeX, double sizeY) +/ ST_SnapToGrid(BLOBencoded geom, double originX, double originY, +/ double sizeX, double sizeY) +/ +/ Snap all points of the input geometry to the grid defined by its +/ origin and cell size. Remove consecutive points falling on the same +/ cell. Collapsed geometries in a collection are stripped from it. +/ +/ +/ ST_SnapToGrid(BLOBencoded geom, BLOBencoded point, double sizeX, +/ double sizeY, double sizeZ, double sizeM) +/ +/ Snap all points of the input geometry to the grid defined by its +/ origin (the second argument, must be a point) and cell sizes. +/ +/ Specify 0 as size for any dimension you don't want to snap to +/ a grid. +/ return NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int int_value; + double origin_x = 0.0; + double origin_y = 0.0; + double origin_z = 0.0; + double origin_m = 0.0; + double size_x; + double size_y; + double size_z = 0.0; + double size_m = 0.0; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr point = NULL; + gaiaGeomCollPtr result = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (argc == 2) + { + /* ST_SnapToGrid(BLOBencoded geom, double size) */ + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + size_x = int_value; + size_y = size_x; + } + else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + { + size_x = sqlite3_value_double (argv[1]); + size_y = size_x; + } + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 3) + { + /* ST_SnapToGrid(BLOBencoded geom, double sizeX, double sizeY) */ + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + size_x = int_value; + } + else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + { + size_x = sqlite3_value_double (argv[1]); + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + size_y = int_value; + } + else if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + { + size_y = sqlite3_value_double (argv[2]); + } + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 5) + { + /* + / ST_SnapToGrid(BLOBencoded geom, double originX, double originY, + / double sizeX, double sizeY) + */ + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + origin_x = int_value; + } + else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + { + origin_x = sqlite3_value_double (argv[1]); + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + origin_y = int_value; + } + else if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + { + origin_y = sqlite3_value_double (argv[2]); + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[3]); + size_x = int_value; + } + else if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + { + size_x = sqlite3_value_double (argv[3]); + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[4]); + size_y = int_value; + } + else if (sqlite3_value_type (argv[4]) == SQLITE_FLOAT) + { + size_y = sqlite3_value_double (argv[4]); + } + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 6) + { + /* + / ST_SnapToGrid(BLOBencoded geom, BLOBencoded point, double sizeX, + / double sizeY, double sizeZ, double sizeM) + */ + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + point = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!point) + { + sqlite3_result_null (context); + return; + } + if (!getXYZMSinglePoint + (point, &origin_x, &origin_y, &origin_z, &origin_m)) + { + gaiaFreeGeomColl (point); + sqlite3_result_null (context); + return; + } + gaiaFreeGeomColl (point); + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + size_x = int_value; + } + else if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + { + size_x = sqlite3_value_double (argv[2]); + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[3]); + size_y = int_value; + } + else if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + { + size_y = sqlite3_value_double (argv[3]); + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[4]); + size_z = int_value; + } + else if (sqlite3_value_type (argv[4]) == SQLITE_FLOAT) + { + size_z = sqlite3_value_double (argv[4]); + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[5]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[5]); + size_m = int_value; + } + else if (sqlite3_value_type (argv[5]) == SQLITE_FLOAT) + { + size_m = sqlite3_value_double (argv[5]); + } + else + { + sqlite3_result_null (context); + return; + } + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + result = + gaiaSnapToGrid (geo, origin_x, origin_y, origin_z, origin_m, + size_x, size_y, size_z, size_m); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static char garsMapping[24] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', + 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z' +}; + +static char +garsLetterCode (int value) +{ + return garsMapping[value]; +} + +static int +garsMappingIndex (const char letter) +{ + int i = 0; + for (i = 0; i < 24; ++i) + { + if (letter == garsMapping[i]) + return i; + } + return -1; +} + +static double +garsLetterToDegreesLat (char msd, char lsd) +{ + double high = garsMappingIndex (msd) * 24.0; + double low = garsMappingIndex (lsd); + if ((high < 0) || (low < 0)) + { + return -100.0; + } + return (((high + low) * 0.5) - 90.0); +} + + +static void +fnct_GARSMbr (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ GARSMbr(Text) +/ +/ converts the Text (which should be a valid GARS area) to the corresponding +/ MBR geometry. +/ This function will return NULL if an error occurs +*/ + const char *text = NULL; + int len = 0; + unsigned char *p_result = NULL; + double x1 = 0.0; + double y1 = 0.0; + double x2 = 0.0; + double y2 = 0.0; + + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + text = (const char *) sqlite3_value_text (argv[0]); + if ((strlen (text) < 5) || (strlen (text) > 7)) + { + sqlite3_result_null (context); + return; + } + if (strlen (text) == 5) + { + int numMatch = 0; + unsigned int digit100 = 0; + char letterMSD = '\0'; + char letterLSD = '\0'; + numMatch = sscanf (text, "%u%c%c", &digit100, &letterMSD, &letterLSD); + if (numMatch != 3) + { + sqlite3_result_null (context); + return; + } + x1 = ((digit100 - 1) * 0.5) - 180.0; + y1 = garsLetterToDegreesLat (letterMSD, letterLSD); + if ((x1 < -180.0) || (x1 > 179.5) || (y1 < -90.0) || (y1 > 89.5)) + { + sqlite3_result_null (context); + return; + } + x2 = x1 + 0.5; + y2 = y1 + 0.5; + } + if (strlen (text) == 6) + { + unsigned int numMatch = 0; + unsigned int digit100 = 0; + char letterMSD = '\0'; + char letterLSD = '\0'; + unsigned int digitSegment = 0; + numMatch = + sscanf (text, "%u%c%c%u", &digit100, &letterMSD, &letterLSD, + &digitSegment); + if (numMatch != 4) + { + sqlite3_result_null (context); + return; + } + if ((digitSegment < 1) || (digitSegment > 4)) + { + sqlite3_result_null (context); + return; + } + x1 = ((digit100 - 1) * 0.5) - 180.0; + if ((digitSegment == 2) || (digitSegment == 4)) + { + x1 += 0.25; + } + y1 = garsLetterToDegreesLat (letterMSD, letterLSD); + if ((digitSegment == 1) || (digitSegment == 2)) + { + y1 += 0.25; + } + if ((x1 < -180.0) || (x1 > 179.75) || (y1 < -90.0) || (y1 > 89.75)) + { + sqlite3_result_null (context); + return; + } + x2 = x1 + 0.25; + y2 = y1 + 0.25; + } + if (strlen (text) == 7) + { + unsigned int numMatch = 0; + unsigned int digit100 = 0; + char letterMSD = '\0'; + char letterLSD = '\0'; + unsigned int digitAndKeypad = 0; + unsigned int digitSegment = 0; + unsigned int keypadNumber = 0; + numMatch = + sscanf (text, "%u%c%c%u", &digit100, &letterMSD, &letterLSD, + &digitAndKeypad); + if (numMatch != 4) + { + sqlite3_result_null (context); + return; + } + digitSegment = digitAndKeypad / 10; + keypadNumber = digitAndKeypad % 10; + if ((digitSegment < 1) || (digitSegment > 4)) + { + sqlite3_result_null (context); + return; + } + if (keypadNumber < 1) + { + sqlite3_result_null (context); + return; + } + x1 = ((digit100 - 1) * 0.5) - 180.0; + if ((digitSegment == 2) || (digitSegment == 4)) + { + x1 += 0.25; + } + y1 = garsLetterToDegreesLat (letterMSD, letterLSD); + if ((digitSegment == 1) || (digitSegment == 2)) + { + y1 += 0.25; + } + switch (keypadNumber) + { + case 1: + x1 += 0 * 0.25 / 3; + y1 += 2 * 0.25 / 3; + break; + case 2: + x1 += 1 * 0.25 / 3; + y1 += 2 * 0.25 / 3; + break; + case 3: + x1 += 2 * 0.25 / 3; + y1 += 2 * 0.25 / 3; + break; + case 4: + x1 += 0 * 0.25 / 3; + y1 += 1 * 0.25 / 3; + break; + case 5: + x1 += 1 * 0.25 / 3; + y1 += 1 * 0.25 / 3; + break; + case 6: + x1 += 2 * 0.25 / 3; + y1 += 1 * 0.25 / 3; + break; + case 7: + x1 += 0 * 0.25 / 3; + y1 += 0 * 0.25 / 3; + break; + case 8: + x1 += 1 * 0.25 / 3; + y1 += 0 * 0.25 / 3; + break; + case 9: + x1 += 2 * 0.25 / 3; + y1 += 0 * 0.25 / 3; + break; + } + if ((x1 < -180.0) || (x1 >= 180.0) || (y1 < -90.0) || (y1 >= 90.0)) + { + sqlite3_result_null (context); + return; + } + x2 = x1 + (0.25 / 3); + y2 = y1 + (0.25 / 3); + } + gaiaBuildMbr (x1, y1, x2, y2, 4326, &p_result, &len); + if (!p_result) + { + sqlite3_result_null (context); + spatialite_e ("bad p_result\n"); + } + else + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_ToGARS (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ToGARS(BLOB encoded POINT) +/ +/ returns the Global Area Reference System coordinate area for a given point, +/ or NULL if an error occurs +*/ + unsigned char *p_blob; + int n_bytes; + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + gaiaGeomCollPtr geo = NULL; + char p_result[8]; + int lon_band = 0; + double lon_minutes = 0; + int segmentNumber = 0; + int lat_band = 0; + double lat_minutes = 0; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + { + sqlite3_result_null (context); + return; + } + gaiaNormalizeLonLat (geo); + point = geo->FirstPoint; + while (point != NULL) + { + pts++; + point = point->Next; + } + line = geo->FirstLinestring; + while (line != NULL) + { + lns++; + line = line->Next; + } + polyg = geo->FirstPolygon; + while (polyg != NULL) + { + pgs++; + polyg = polyg->Next; + } + if (pts == 1 && lns == 0 && pgs == 0) + point = geo->FirstPoint; + else + { + /* not a single Point */ + gaiaFreeGeomColl (geo); + sqlite3_result_null (context); + return; + } + /* longitude band */ + lon_band = 1 + (int) ((point->X + 180.0) * 2); + sprintf (p_result, "%03i", lon_band); + /* latitude band */ + lat_band = (int) ((point->Y + 90.0) * 2); + p_result[3] = garsLetterCode (lat_band / 24); + p_result[4] = garsLetterCode (lat_band % 24); + /* quadrant */ + lon_minutes = fmod ((point->X + 180.0), 0.5) * 60.0; + if (lon_minutes < 15.0) + { + segmentNumber = 1; + } + else + { + segmentNumber = 2; + lon_minutes -= 15.0; + } + lat_minutes = fmod ((point->Y + 90.0), 0.5) * 60.0; + if (lat_minutes < 15.0) + { + segmentNumber += 2; + } + else + { + /* we already have the right segment */ + lat_minutes -= 15.0; + } + sprintf (&(p_result[5]), "%i", segmentNumber); + /* area */ + segmentNumber = 0; + if (lon_minutes >= 10.0) + { + segmentNumber = 3; + } + else if (lon_minutes >= 5.0) + { + segmentNumber = 2; + } + else + { + segmentNumber = 1; + } + if (lat_minutes >= 10.0) + { + /* nothing to add */ + } + else if (lat_minutes >= 5.0) + { + segmentNumber += 3; + } + else + { + segmentNumber += 6; + } + sprintf (&(p_result[6]), "%i", segmentNumber); + sqlite3_result_text (context, p_result, 7, SQLITE_TRANSIENT); + gaiaFreeGeomColl (geo); +} + +static void +fnct_GeometryN (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ GeometryN(BLOB encoded GEOMETRYCOLLECTION geometry) +/ +/ returns the Nth geometry for current GEOMETRYCOLLECTION or MULTIxxxx geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int entity; + int len; + int cnt = 0; + int iv; + int ib; + double x; + double y; + double z; + double m; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaLinestringPtr line2; + gaiaPolygonPtr polyg; + gaiaPolygonPtr polyg2; + gaiaRingPtr ring_in; + gaiaRingPtr ring_out; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + entity = sqlite3_value_int (argv[1]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + point = geo->FirstPoint; + while (point) + { + /* counts how many points are there */ + cnt++; + if (cnt == entity) + { + /* ok, required elementary geometry is this POINT */ + if (point->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (point->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else if (point->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else + result = gaiaAllocGeomColl (); + result->Srid = geo->Srid; + if (point->DimensionModel == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (result, point->X, + point->Y, point->Z); + else if (point->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (result, point->X, + point->Y, point->M); + else if (point->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (result, point->X, + point->Y, point->Z, + point->M); + else + gaiaAddPointToGeomColl (result, point->X, point->Y); + goto skip; + } + point = point->Next; + } + line = geo->FirstLinestring; + while (line) + { + /* counts how many linestrings are there */ + cnt++; + if (cnt == entity) + { + /* ok, required elementary geometry is this LINESTRING */ + if (line->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (line->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else if (line->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else + result = gaiaAllocGeomColl (); + result->Srid = geo->Srid; + line2 = + gaiaAddLinestringToGeomColl (result, line->Points); + for (iv = 0; iv < line2->Points; iv++) + { + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, + &y, &z); + gaiaSetPointXYZ (line2->Coords, iv, x, y, z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, + &y, &m); + gaiaSetPointXYM (line2->Coords, iv, x, y, m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, + &y, &z, &m); + gaiaSetPointXYZM (line2->Coords, iv, x, + y, z, m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + gaiaSetPoint (line2->Coords, iv, x, y); + } + } + goto skip; + } + line = line->Next; + } + polyg = geo->FirstPolygon; + while (polyg) + { + /* counts how many polygons are there */ + cnt++; + if (cnt == entity) + { + /* ok, required elementary geometry is this POLYGON */ + if (polyg->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (polyg->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else if (polyg->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else + result = gaiaAllocGeomColl (); + result->Srid = geo->Srid; + ring_in = polyg->Exterior; + polyg2 = + gaiaAddPolygonToGeomColl (result, + ring_in->Points, + polyg->NumInteriors); + ring_out = polyg2->Exterior; + for (iv = 0; iv < ring_out->Points; iv++) + { + /* copying the exterior ring POINTs */ + if (ring_in->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring_in->Coords, iv, + &x, &y, &z); + gaiaSetPointXYZ (ring_out->Coords, iv, + x, y, z); + } + else if (ring_in->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring_in->Coords, iv, + &x, &y, &m); + gaiaSetPointXYM (ring_out->Coords, iv, + x, y, m); + } + else if (ring_in->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring_in->Coords, iv, + &x, &y, &z, &m); + gaiaSetPointXYZM (ring_out->Coords, iv, + x, y, z, m); + } + else + { + gaiaGetPoint (ring_in->Coords, iv, &x, &y); + gaiaSetPoint (ring_out->Coords, iv, x, y); + } + } + for (ib = 0; ib < polyg2->NumInteriors; ib++) + { + /* processing the interior rings */ + ring_in = polyg->Interiors + ib; + ring_out = + gaiaAddInteriorRing (polyg2, ib, + ring_in->Points); + for (iv = 0; iv < ring_out->Points; iv++) + { + if (ring_in->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ring_in->Coords, + iv, &x, &y, &z); + gaiaSetPointXYZ (ring_out->Coords, iv, + x, y, z); + } + else if (ring_in->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ring_in->Coords, + iv, &x, &y, &m); + gaiaSetPointXYM (ring_out->Coords, iv, + x, y, m); + } + else if (ring_in->DimensionModel == + GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ring_in->Coords, iv, + &x, &y, &z, &m); + gaiaSetPointXYZM (ring_out->Coords, iv, + x, y, z, m); + } + else + { + gaiaGetPoint (ring_in->Coords, + iv, &x, &y); + gaiaSetPoint (ring_out->Coords, + iv, x, y); + } + } + } + goto skip; + } + polyg = polyg->Next; + } + skip: + if (result) + { + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + gaiaFreeGeomColl (result); + sqlite3_result_blob (context, p_result, len, free); + } + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo); +} + +static void +mbrs_eval (sqlite3_context * context, int argc, sqlite3_value ** argv, + int request) +{ +/* SQL function: +/ MBRsomething(BLOB encoded GEOMETRY-1, BLOB encoded GEOMETRY-2) +/ +/ returns: +/ 1 if the required spatial relationship between the two MBRs is TRUE +/ 0 otherwise +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int ret; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobMbr (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobMbr (p_blob, n_bytes); + if (!geo1 || !geo2) + sqlite3_result_null (context); + else + { + ret = 0; + gaiaMbrGeometry (geo1); + gaiaMbrGeometry (geo2); + switch (request) + { + case GAIA_MBR_CONTAINS: + ret = gaiaMbrsContains (geo1, geo2); + break; + case GAIA_MBR_DISJOINT: + ret = gaiaMbrsDisjoint (geo1, geo2); + break; + case GAIA_MBR_EQUAL: + ret = gaiaMbrsEqual (geo1, geo2); + break; + case GAIA_MBR_INTERSECTS: + ret = gaiaMbrsIntersects (geo1, geo2); + break; + case GAIA_MBR_OVERLAPS: + ret = gaiaMbrsOverlaps (geo1, geo2); + break; + case GAIA_MBR_TOUCHES: + ret = gaiaMbrsTouches (geo1, geo2); + break; + case GAIA_MBR_WITHIN: + ret = gaiaMbrsWithin (geo1, geo2); + break; + } + if (ret < 0) + sqlite3_result_null (context); + else + sqlite3_result_int (context, ret); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +/* +/ the following functions simply readdress the mbr_eval() +/ setting the appropriate request mode +*/ + +static void +fnct_MbrContains (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + mbrs_eval (context, argc, argv, GAIA_MBR_CONTAINS); +} + +static void +fnct_MbrDisjoint (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + mbrs_eval (context, argc, argv, GAIA_MBR_DISJOINT); +} + +static void +fnct_MbrEqual (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + mbrs_eval (context, argc, argv, GAIA_MBR_EQUAL); +} + +static void +fnct_MbrIntersects (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + mbrs_eval (context, argc, argv, GAIA_MBR_INTERSECTS); +} + +static void +fnct_EnvIntersects (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_EnvIntersects(Geometry geom, double X1, double Y1, double X2, double Y2) +/ ST_EnvelopesIntersects(Geometry geom, double X1, double Y1, double X2, double Y2) +/ +/ the second MBR is defined by two points (identifying a rectangle's diagonal) +/ or NULL if any error is encountered +*/ + double x1; + double y1; + double x2; + double y2; + int int_value; + unsigned char *p_blob; + int n_bytes; + int ret = 0; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + gaiaLinestringPtr ln; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + x1 = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + x1 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + y1 = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + y1 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + x2 = sqlite3_value_double (argv[3]); + else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[3]); + x2 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[4]) == SQLITE_FLOAT) + y2 = sqlite3_value_double (argv[4]); + else if (sqlite3_value_type (argv[4]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[4]); + y2 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo1) + sqlite3_result_null (context); + else + { + gaiaMbrGeometry (geo1); + geo2 = gaiaAllocGeomColl (); + ln = gaiaAddLinestringToGeomColl (geo2, 2); + gaiaSetPoint (ln->Coords, 0, x1, y1); + gaiaSetPoint (ln->Coords, 1, x2, y2); + gaiaMbrGeometry (geo2); + ret = gaiaMbrsIntersects (geo1, geo2); + sqlite3_result_int (context, ret); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + + +static void +fnct_MbrOverlaps (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + mbrs_eval (context, argc, argv, GAIA_MBR_OVERLAPS); +} + +static void +fnct_MbrTouches (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + mbrs_eval (context, argc, argv, GAIA_MBR_TOUCHES); +} + +static void +fnct_MbrWithin (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + mbrs_eval (context, argc, argv, GAIA_MBR_WITHIN); +} + +static void +fnct_ShiftCoords (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ShiftCoords(BLOBencoded geometry, shiftX, shiftY) +/ +/ returns a new geometry that is the original one received, but with shifted coordinates +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + double shift_x; + double shift_y; + int int_value; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + shift_x = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + shift_x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + shift_y = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + shift_y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaShiftCoords (geo, shift_x, shift_y); + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_Translate (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Translate(BLOBencoded geometry, shiftX, shiftY, shiftZ) +/ +/ returns a new geometry that is the original one received, but with shifted coordinates +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + double shift_x; + double shift_y; + double shift_z; + int int_value; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + shift_x = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + shift_x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + shift_y = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + shift_y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + shift_z = sqlite3_value_double (argv[3]); + else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[3]); + shift_z = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaShiftCoords3D (geo, shift_x, shift_y, shift_z); + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (geo); +} + + +static void +fnct_ShiftLongitude (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ShiftLongitude(BLOBencoded geometry) +/ +/ returns a new geometry that is the original one received, but with negative +/ longitudes shifted by 360 +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaShiftLongitude (geo); + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_NormalizeLonLat (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ NormalizeLonLat (BLOBencoded geometry) +/ +/ returns a new geometry that is the original one received, but with longitude +/ and latitude values shifted into the range [-180 - 180, -90 - 90]. +/ NULL is returned if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaNormalizeLonLat (geo); + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_ScaleCoords (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ScaleCoords(BLOBencoded geometry, scale_factor_x [, scale_factor_y]) +/ +/ returns a new geometry that is the original one received, but with scaled coordinates +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + double scale_x; + double scale_y; + int int_value; + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + scale_x = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + scale_x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (argc == 2) + scale_y = scale_x; /* this one is an isotropic scaling request */ + else + { + /* an anisotropic scaling is requested */ + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + scale_y = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + scale_y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaScaleCoords (geo, scale_x, scale_y); + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_RotateCoords (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ RotateCoords(BLOBencoded geometry, angle) +/ +/ returns a new geometry that is the original one received, but with rotated coordinates +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + double angle; + int int_value; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + angle = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + angle = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaRotateCoords (geo, angle); + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_ReflectCoords (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ReflectCoords(BLOBencoded geometry, x_axis, y_axis) +/ +/ returns a new geometry that is the original one received, but with mirrored coordinates +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + int x_axis; + int y_axis; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + x_axis = sqlite3_value_int (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + y_axis = sqlite3_value_int (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaReflectCoords (geo, x_axis, y_axis); + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_SwapCoords (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ SwapCoords(BLOBencoded geometry) +/ +/ returns a new geometry that is the original one received, but with swapped x- and y-coordinate +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaSwapCoords (geo); + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + if (!p_result) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (geo); +} + +SPATIALITE_PRIVATE int +getEllipsoidParams (void *p_sqlite, int srid, double *a, double *b, double *rf) +{ +/* +/ retrieves the PROJ +ellps=xx [+a=xx +b=xx] params +/from SPATIAL_SYS_REF table, if possible +*/ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + char *proj4text; + char *p_proj; + char *p_ellps; + char *p_datum; + char *p_a; + char *p_b; + char *p_end; + + if (srid == 0) + { + /* + / SRID=0 is formally defined as "Undefined Geographic" + / so will default to SRID=4326 (WGS84 Long/Lat) + */ + srid = 4326; + } + getProjParams (sqlite, srid, &proj4text); + if (proj4text == NULL) + return 0; +/* parsing the proj4text geodesic string */ + p_proj = strstr (proj4text, "+proj="); + p_datum = strstr (proj4text, "+datum="); + p_ellps = strstr (proj4text, "+ellps="); + p_a = strstr (proj4text, "+a="); + p_b = strstr (proj4text, "+b="); +/* checking if +proj=longlat is true */ + if (!p_proj) + goto invalid; + p_end = strchr (p_proj, ' '); + if (p_end) + *p_end = '\0'; + if (strcmp (p_proj + 6, "longlat") != 0) + goto invalid; + if (p_ellps) + { + /* trying to retrieve the ellipsoid params by name */ + p_end = strchr (p_ellps, ' '); + if (p_end) + *p_end = '\0'; + if (gaiaEllipseParams (p_ellps + 7, a, b, rf)) + goto valid; + } + else if (p_datum) + { + /* + / starting since GDAL 1.9.0 the WGS84 [4326] PROJ.4 def doesn't + / declares any longer the "+ellps=" param + / in this case we'll attempt to recover using "+datum=". + */ + p_end = strchr (p_datum, ' '); + if (p_end) + *p_end = '\0'; + if (gaiaEllipseParams (p_datum + 7, a, b, rf)) + goto valid; + } + if (p_a && p_b) + { + /* trying to retrieve the +a=xx and +b=xx args */ + p_end = strchr (p_a, ' '); + if (p_end) + *p_end = '\0'; + p_end = strchr (p_b, ' '); + if (p_end) + *p_end = '\0'; + *a = atof (p_a + 3); + *b = atof (p_b + 3); + *rf = 1.0 / ((*a - *b) / *a); + goto valid; + } + + valid: + free (proj4text); + return 1; + + invalid: + free (proj4text); + return 0; +} + +static void +fnct_FromEWKB (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ GeomFromEWKB(EWKB encoded geometry) +/ +/ returns the current geometry by parsing Geos/PostGis EWKB encoded string +/ or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + const unsigned char *text; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + text = sqlite3_value_text (argv[0]); + geo = gaiaFromEWKB (text); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_ToEWKB (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AsEWKB(BLOB encoded geometry) +/ +/ returns a text string corresponding to Geos/PostGIS EWKB notation +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + gaiaOutBuffer out_buf; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + { + sqlite3_result_null (context); + return; + } + else + { + gaiaOutBufferInitialize (&out_buf); + gaiaToEWKB (&out_buf, geo); + if (out_buf.Error || out_buf.Buffer == NULL) + sqlite3_result_null (context); + else + { + len = out_buf.WriteOffset; + sqlite3_result_text (context, out_buf.Buffer, len, free); + out_buf.Buffer = NULL; + } + } + gaiaFreeGeomColl (geo); + gaiaOutBufferReset (&out_buf); +} + +static void +fnct_ToEWKT (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AsEWKT(BLOB encoded geometry) +/ +/ returns the corresponding PostGIS EWKT encoded value +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + gaiaOutBuffer out_buf; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + gaiaOutBufferInitialize (&out_buf); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + gaiaToEWKT (&out_buf, geo); + if (out_buf.Error || out_buf.Buffer == NULL) + sqlite3_result_null (context); + else + { + len = out_buf.WriteOffset; + sqlite3_result_text (context, out_buf.Buffer, len, free); + out_buf.Buffer = NULL; + } + } + gaiaFreeGeomColl (geo); + gaiaOutBufferReset (&out_buf); +} + +static void +fnct_FromEWKT (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ GeomFromEWKT(EWKT encoded geometry) +/ +/ returns the current geometry by parsing EWKT (PostGIS) encoded string +/ or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + const unsigned char *text; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + text = sqlite3_value_text (argv[0]); + geo = gaiaParseEWKT (text); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_FromGeoJSON (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ GeomFromGeoJSON(GeoJSON encoded geometry) +/ +/ returns the current geometry by parsing GeoJSON encoded string +/ or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + const unsigned char *text; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + text = sqlite3_value_text (argv[0]); + geo = gaiaParseGeoJSON (text); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_FromKml (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ GeomFromKml(KML encoded geometry) +/ +/ returns the current geometry by parsing KML encoded string +/ or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + const unsigned char *text; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + text = sqlite3_value_text (argv[0]); + geo = gaiaParseKml (text); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_FromGml (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ GeomFromGml(GML encoded geometry) +/ +/ returns the current geometry by parsing GML encoded string +/ or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + const unsigned char *text; + gaiaGeomCollPtr geo = NULL; + void *data = sqlite3_user_data (context); + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + text = sqlite3_value_text (argv[0]); + if (data != NULL) + geo = gaiaParseGml_r (data, text, sqlite); + else + geo = gaiaParseGml (text, sqlite); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + gaiaToSpatiaLiteBlobWkb (geo, &p_result, &len); + gaiaFreeGeomColl (geo); + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_LinesFromRings (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ LinesFromRings(BLOBencoded geometry, BOOL multi_linestring) +/ +/ returns a new geometry [LINESTRING or MULTILINESTRING] representing +/ the linearization for current (MULTI)POLYGON geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr geom_new = NULL; + int len; + int multi_linestring = 0; + unsigned char *p_result = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + if (argc == 2) + { + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + multi_linestring = sqlite3_value_int (argv[1]); + } + geom_new = gaiaLinearize (geo, multi_linestring); + if (!geom_new) + goto invalid; + gaiaFreeGeomColl (geo); + gaiaToSpatiaLiteBlobWkb (geom_new, &p_result, &len); + gaiaFreeGeomColl (geom_new); + sqlite3_result_blob (context, p_result, len, free); + return; + invalid: + if (geo) + gaiaFreeGeomColl (geo); + sqlite3_result_null (context); +} + +#ifndef OMIT_GEOS /* including GEOS */ + +static void +fnct_BuildArea (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ BuildArea(BLOBencoded geometry) +/ +/ Assuming that Geometry represents a set of sparse Linestrings, +/ this function will attempt to reassemble a single Polygon +/ (or a set of Polygons) +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaPolygonize_r (data, geo, 0); + else + result = gaiaPolygonize (geo, 0); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + + +static void +fnct_Polygonize_step (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ Polygonize(BLOBencoded geom) +/ +/ aggregate function - STEP +/ +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geom; + gaiaGeomCollPtr result; + gaiaGeomCollPtr *p; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geom) + return; + p = sqlite3_aggregate_context (context, sizeof (gaiaGeomCollPtr)); + if (!(*p)) + { + /* this is the first row */ + *p = geom; + } + else + { + /* subsequent rows */ + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaMergeGeometries_r (data, *p, geom); + else + result = gaiaMergeGeometries (*p, geom); + gaiaFreeGeomColl (*p); + *p = result; + gaiaFreeGeomColl (geom); + } +} + +static void +fnct_Polygonize_final (sqlite3_context * context) +{ +/* SQL function: +/ Polygonize(BLOBencoded geom) +/ +/ aggregate function - FINAL +/ +*/ + gaiaGeomCollPtr result; + gaiaGeomCollPtr geom; + gaiaGeomCollPtr *p = sqlite3_aggregate_context (context, 0); + if (!p) + { + sqlite3_result_null (context); + return; + } + result = *p; + if (!result) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + geom = gaiaPolygonize_r (data, result, 0); + else + geom = gaiaPolygonize (result, 0); + if (geom == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + geom->Srid = result->Srid; + gaiaToSpatiaLiteBlobWkb (geom, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (geom); + } + gaiaFreeGeomColl (result); + } +} + +#endif /* end including GEOS */ + +static void +fnct_DissolveSegments (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ DissolveSegments(BLOBencoded geometry) +/ +/ Dissolves any LINESTRING or RING into elementary segments +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + result = gaiaDissolveSegments (geo); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_DissolvePoints (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ DissolvePoints(BLOBencoded geometry) +/ +/ Dissolves any LINESTRING or RING into elementary Vertices +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + result = gaiaDissolvePoints (geo); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_CollectionExtract (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CollectionExtract(BLOBencoded geometry, Integer type) +/ +/ Extracts from a GEOMETRYCOLLECTION any item of the required TYPE +/ 1=Point - 2=Linestring - 3=Polygon +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + int type; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + type = sqlite3_value_int (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + if (type == 1 || type == 2 || type == 3) + ; + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + switch (type) + { + case 1: + result = gaiaExtractPointsFromGeomColl (geo); + break; + case 2: + result = gaiaExtractLinestringsFromGeomColl (geo); + break; + case 3: + result = gaiaExtractPolygonsFromGeomColl (geo); + break; + }; + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_LocateBetweenMeasures (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL functions: +/ ST_Locate_Along_Measure(BLOBencoded geometry, Double m_value) +/ ST_Locate_Between_Measures(BLOBencoded geometry, Double m_start, Double m_end) +/ +/ Extracts from a GEOMETRY (supporting M) any Point/Linestring +/ matching the range of measures +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + double m_start; + double m_end; + int intval; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + m_start = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + intval = sqlite3_value_int (argv[1]); + m_start = intval; + } + else + { + sqlite3_result_null (context); + return; + } + if (argc > 2) + { + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + m_end = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + intval = sqlite3_value_int (argv[2]); + m_end = intval; + } + else + { + sqlite3_result_null (context); + return; + } + } + else + m_end = m_start; + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + result = gaiaLocateBetweenMeasures (geo, m_start, m_end); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +#ifndef OMIT_PROJ /* including PROJ.4 */ + +static void +fnct_Transform (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Transform(BLOBencoded geometry, srid) +/ +/ returns a new geometry that is the original one received, but with the new SRID [no coordinates translation is applied] +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + int srid_from; + int srid_to; + char *proj_from; + char *proj_to; + void *data = sqlite3_user_data (context); + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + srid_to = sqlite3_value_int (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + srid_from = geo->Srid; + getProjParams (sqlite, srid_from, &proj_from); + getProjParams (sqlite, srid_to, &proj_to); + if (proj_to == NULL || proj_from == NULL) + { + if (proj_from) + free (proj_from); + if (proj_to) + free (proj_to); + gaiaFreeGeomColl (geo); + sqlite3_result_null (context); + return; + } + if (data != NULL) + result = gaiaTransform_r (data, geo, proj_from, proj_to); + else + result = gaiaTransform (geo, proj_from, proj_to); + free (proj_from); + free (proj_to); + if (!result) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = srid_to; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +#endif /* end including PROJ.4 */ + +#ifndef OMIT_GEOS /* including GEOS */ + +static void +fnct_GEOS_GetLastWarningMsg (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ GEOS_GetLastWarningMsg() +/ +/ return the most recent GEOS warning message (if any) +/ return NULL on any other case +*/ + const char *msg; + void *data = sqlite3_user_data (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (data != NULL) + msg = gaiaGetGeosWarningMsg_r (data); + else + msg = gaiaGetGeosWarningMsg (); + if (msg == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, msg, strlen (msg), SQLITE_STATIC); +} + +static void +fnct_GEOS_GetLastErrorMsg (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ GEOS_GetLastErrorMsg() +/ +/ return the most recent GEOS error message (if any) +/ return NULL on any other case +*/ + const char *msg; + void *data = sqlite3_user_data (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (data != NULL) + msg = gaiaGetGeosErrorMsg_r (data); + else + msg = gaiaGetGeosErrorMsg (); + if (msg == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, msg, strlen (msg), SQLITE_STATIC); +} + +static void +fnct_GEOS_GetLastAuxErrorMsg (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ GEOS_GetLastAuxErrorMsg() +/ +/ return the most recent GEOS error message (if any) +/ return NULL on any other case +*/ + const char *msg; + void *data = sqlite3_user_data (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (data != NULL) + msg = gaiaGetGeosAuxErrorMsg_r (data); + else + msg = gaiaGetGeosAuxErrorMsg (); + if (msg == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, msg, strlen (msg), SQLITE_STATIC); +} + +static void +fnct_GEOS_GetCriticalPointFromMsg (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ GEOS_GetCriticalPointFromMsg() +/ +/ return a Point Geometry by (possibly) parsing the most recent GEOS error/warning message +/ return NULL on any other case +*/ + int srid = -1; + gaiaGeomCollPtr geom; + void *data = sqlite3_user_data (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (argc == 1) + { + if (sqlite3_value_type (argv[0]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + srid = sqlite3_value_int (argv[0]); + } + if (data != NULL) + geom = gaiaCriticalPointFromGEOSmsg_r (data); + else + geom = gaiaCriticalPointFromGEOSmsg (); + if (geom == NULL) + sqlite3_result_null (context); + else + { + unsigned char *blob; + int len; + geom->Srid = srid; + gaiaToSpatiaLiteBlobWkb (geom, &blob, &len); + gaiaFreeGeomColl (geom); + sqlite3_result_blob (context, blob, len, free); + } +} + +static void +fnct_IsValidReason (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ IsValidReason(geom) +/ ST_IsValidReason(geom) +/ +/ return a TEXT string stating if a Geometry is valid +/ and if not valid, a reason why +/ return NULL on any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + gaiaGeomCollPtr geom; + char *str; + void *data = sqlite3_user_data (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (data != NULL) + str = gaiaIsValidReason_r (data, geom); + else + str = gaiaIsValidReason (geom); + if (str == NULL) + sqlite3_result_null (context); + else + { + len = strlen (str); + sqlite3_result_text (context, str, len, free); + } + if (geom != NULL) + gaiaFreeGeomColl (geom); +} + +static void +fnct_IsValidDetail (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ IsValidDetail(geom) +/ ST_IsValidDetail(geom) +/ +/ return a Geometry detail causing a Geometry to be invalid +/ return NULL on any other case +*/ + unsigned char *p_blob; + int n_bytes; + int len; + gaiaGeomCollPtr geom; + gaiaGeomCollPtr detail; + unsigned char *p_result = NULL; + void *data = sqlite3_user_data (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (data != NULL) + detail = gaiaIsValidDetail_r (data, geom); + else + detail = gaiaIsValidDetail (geom); + if (detail == NULL) + sqlite3_result_null (context); + else + { + detail->Srid = geom->Srid; + gaiaToSpatiaLiteBlobWkb (detail, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + } + if (geom != NULL) + gaiaFreeGeomColl (geom); + if (detail != NULL) + gaiaFreeGeomColl (detail); +} + +static void +fnct_Boundary (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Boundary(BLOB encoded geometry) +/ +/ returns the combinatorial boundary for current geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr boundary; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + if (gaiaIsEmpty (geo)) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + boundary = gaiaBoundary_r (data, geo); + else + boundary = gaiaBoundary (geo); + if (!boundary) + sqlite3_result_null (context); + else + { + gaiaToSpatiaLiteBlobWkb (boundary, &p_result, &len); + gaiaFreeGeomColl (boundary); + sqlite3_result_blob (context, p_result, len, free); + } + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_IsClosed (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ IsClosed(BLOB encoded LINESTRING or MULTILINESTRING geometry) +/ +/ returns: +/ 1 if this LINESTRING is closed [or if this is a MULTILINESTRING and every LINESTRINGs are closed] +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_int (context, -1); + else + { + sqlite3_result_int (context, gaiaIsClosedGeom (geo)); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_IsSimple (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ IsSimple(BLOB encoded GEOMETRY) +/ +/ returns: +/ 1 if this GEOMETRY is simple +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int ret; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_int (context, -1); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaIsSimple_r (data, geo); + else + ret = gaiaIsSimple (geo); + if (ret < 0) + sqlite3_result_int (context, -1); + else + sqlite3_result_int (context, ret); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_IsRing (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ IsRing(BLOB encoded LINESTRING geometry) +/ +/ returns: +/ 1 if this LINESTRING is a valid RING +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int ret; + gaiaGeomCollPtr geo = NULL; + gaiaLinestringPtr line; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_int (context, -1); + else + { + line = simpleLinestring (geo); + if (!line < 0) + sqlite3_result_int (context, -1); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaIsRing_r (data, line); + else + ret = gaiaIsRing (line); + sqlite3_result_int (context, ret); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_IsValid (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ IsValid(BLOB encoded GEOMETRY) +/ +/ returns: +/ 1 if this GEOMETRY is a valid one +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int ret; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_int (context, -1); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaIsValid_r (data, geo); + else + ret = gaiaIsValid (geo); + if (ret < 0) + sqlite3_result_int (context, -1); + else + sqlite3_result_int (context, ret); + } + gaiaFreeGeomColl (geo); +} + +static void +length_common (const void *p_cache, sqlite3_context * context, int argc, + sqlite3_value ** argv, int is_perimeter) +{ +/* common implementation supporting both ST_Length and ST_Perimeter */ + unsigned char *p_blob; + int n_bytes; + double length = 0.0; + int ret; + int use_ellipsoid = -1; + double a; + double b; + double rf; + gaiaGeomCollPtr geo = NULL; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (argc == 2) + { + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + use_ellipsoid = sqlite3_value_int (argv[1]); + if (use_ellipsoid != 0) + use_ellipsoid = 1; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + if (use_ellipsoid >= 0) + { + /* attempting to identify the corresponding ellipsoid */ + if (getEllipsoidParams (sqlite, geo->Srid, &a, &b, &rf)) + { + double l; + int ib; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + if (use_ellipsoid) + { + /* measuring on the Ellipsoid */ + if (!is_perimeter) + { + line = geo->FirstLinestring; + while (line) + { + /* Linestrings */ + l = gaiaGeodesicTotalLength (a, + b, + rf, + line->DimensionModel, + line-> + Coords, + line-> + Points); + if (l < 0.0) + { + length = -1.0; + break; + } + length += l; + line = line->Next; + } + } + if (length >= 0) + { + if (is_perimeter) + { + /* Polygons */ + polyg = geo->FirstPolygon; + while (polyg) + { + /* exterior Ring */ + ring = polyg->Exterior; + l = gaiaGeodesicTotalLength (a, b, + rf, + ring-> + DimensionModel, + ring-> + Coords, + ring-> + Points); + if (l < 0.0) + { + length = -1.0; + break; + } + length += l; + for (ib = 0; + ib < + polyg->NumInteriors; ib++) + { + /* interior Rings */ + ring = + polyg->Interiors + ib; + l = gaiaGeodesicTotalLength + (a, b, rf, + ring->DimensionModel, + ring->Coords, + ring->Points); + if (l < 0.0) + { + length = -1.0; + break; + } + length += l; + } + if (length < 0.0) + break; + polyg = polyg->Next; + } + } + } + } + else + { + /* measuring on the Great Circle */ + if (!is_perimeter) + { + line = geo->FirstLinestring; + while (line) + { + /* Linestrings */ + length += + gaiaGreatCircleTotalLength + (a, b, line->DimensionModel, + line->Coords, line->Points); + line = line->Next; + } + } + if (length >= 0) + { + if (is_perimeter) + { + /* Polygons */ + polyg = geo->FirstPolygon; + while (polyg) + { + /* exterior Ring */ + ring = polyg->Exterior; + length += + gaiaGreatCircleTotalLength + (a, b, + ring->DimensionModel, + ring->Coords, ring->Points); + for (ib = 0; + ib < + polyg->NumInteriors; ib++) + { + /* interior Rings */ + ring = + polyg->Interiors + ib; + length += + gaiaGreatCircleTotalLength + (a, b, + ring->DimensionModel, + ring->Coords, + ring->Points); + } + polyg = polyg->Next; + } + } + } + } + if (length < 0.0) + { + /* invalid distance */ + sqlite3_result_null (context); + } + else + sqlite3_result_double (context, length); + } + else + sqlite3_result_null (context); + goto stop; + } + else if (p_cache != NULL) + ret = + gaiaGeomCollLengthOrPerimeter_r (p_cache, geo, is_perimeter, + &length); + else + ret = gaiaGeomCollLengthOrPerimeter (geo, is_perimeter, &length); + if (!ret) + sqlite3_result_null (context); + else + sqlite3_result_double (context, length); + } + stop: + gaiaFreeGeomColl (geo); +} + +static void +fnct_Length (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_Length(BLOB encoded GEOMETRYCOLLECTION) +/ ST_Length(BLOB encoded GEOMETRYCOLLECTION, Boolean use_ellipsoid) +/ +/ returns the total length for current geometry +/ or NULL if any error is encountered +/ +/ Please note: starting since 4.0.0 this function will ignore +/ any Polygon (only Linestrings will be considered) +/ +*/ + void *data = sqlite3_user_data (context); + length_common (data, context, argc, argv, 0); +} + +static void +fnct_Perimeter (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_Perimeter(BLOB encoded GEOMETRYCOLLECTION) +/ ST_Perimeter(BLOB encoded GEOMETRYCOLLECTION, Boolean use_ellipsoid) +/ +/ returns the total perimeter length for current geometry +/ or NULL if any error is encountered +/ +/ Please note: starting since 4.0.0 this function will ignore +/ any Linestring (only Polygons will be considered) +/ +*/ + void *data = sqlite3_user_data (context); + length_common (data, context, argc, argv, 1); +} + +static void +fnct_Area (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Area(BLOB encoded GEOMETRYCOLLECTION) +/ +/ returns the total area for current geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + double area = 0.0; + int ret; + int use_ellipsoid = -1; +#ifdef ENABLE_LWGEOM /* only if LWGEOM is enabled */ + double a; + double b; + double rf; + sqlite3 *sqlite = sqlite3_context_db_handle (context); +#endif /* end LWGEOM conditional */ + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (argc == 2) + { + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + use_ellipsoid = sqlite3_value_int (argv[1]); + if (use_ellipsoid != 0) + use_ellipsoid = 1; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + if (use_ellipsoid >= 0) + { +#ifdef ENABLE_LWGEOM /* only if LWGEOM is enabled */ + /* attempting to identify the corresponding ellipsoid */ + if (getEllipsoidParams (sqlite, geo->Srid, &a, &b, &rf)) + ret = gaiaGeodesicArea (geo, a, b, use_ellipsoid, &area); + else + ret = 0; +#else + ret = 0; +#endif /* end LWGEOM conditional */ + } + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaGeomCollArea_r (data, geo, &area); + else + ret = gaiaGeomCollArea (geo, &area); + } + if (!ret) + sqlite3_result_null (context); + else + sqlite3_result_double (context, area); + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_Centroid (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Centroid(BLOBencoded POLYGON or MULTIPOLYGON geometry) +/ +/ returns a POINT representing the centroid for current POLYGON / MULTIPOLYGON geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + int ret; + double x; + double y; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + if (gaiaIsEmpty (geo)) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaGeomCollCentroid_r (data, geo, &x, &y); + else + ret = gaiaGeomCollCentroid (geo, &x, &y); + if (!ret) + sqlite3_result_null (context); + else + { + result = gaiaAllocGeomColl (); + result->Srid = geo->Srid; + gaiaAddPointToGeomColl (result, x, y); + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + gaiaFreeGeomColl (result); + sqlite3_result_blob (context, p_result, len, free); + } + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_PointOnSurface (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ PointOnSurface(BLOBencoded POLYGON or MULTIPOLYGON geometry) +/ +/ returns a POINT guaranteed to lie on the Surface +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + double x; + double y; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + int posret; + if (data != NULL) + posret = gaiaGetPointOnSurface_r (data, geo, &x, &y); + else + posret = gaiaGetPointOnSurface (geo, &x, &y); + if (!posret) + sqlite3_result_null (context); + else + { + result = gaiaAllocGeomColl (); + gaiaAddPointToGeomColl (result, x, y); + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + gaiaFreeGeomColl (result); + sqlite3_result_blob (context, p_result, len, free); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_Simplify (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Simplify(BLOBencoded geometry, tolerance) +/ +/ returns a new geometry that is a caricature of the original one received, but simplified using the Douglas-Peuker algorihtm +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + int int_value; + double tolerance; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + tolerance = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + tolerance = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaGeomCollSimplify_r (data, geo, tolerance); + else + result = gaiaGeomCollSimplify (geo, tolerance); + if (!result) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_SimplifyPreserveTopology (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ SimplifyPreserveTopology(BLOBencoded geometry, tolerance) +/ +/ returns a new geometry that is a caricature of the original one received, but simplified using the Douglas-Peuker algorihtm [preserving topology] +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + int int_value; + double tolerance; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + tolerance = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + tolerance = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = + gaiaGeomCollSimplifyPreserveTopology_r (data, geo, tolerance); + else + result = gaiaGeomCollSimplifyPreserveTopology (geo, tolerance); + if (!result) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_ConvexHull (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ConvexHull(BLOBencoded geometry) +/ +/ returns a new geometry representing the CONVEX HULL for current geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaConvexHull_r (data, geo); + else + result = gaiaConvexHull (geo); + if (!result) + sqlite3_result_null (context); + else + { + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_Buffer (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Buffer(BLOBencoded geometry, radius) +/ +/ returns a new geometry representing the BUFFER for current geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + double radius; + int int_value; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + radius = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + radius = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaGeomCollBuffer_r (data, geo, radius, 30); + else + result = gaiaGeomCollBuffer (geo, radius, 30); + if (!result) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_Intersection (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Intersection(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns a new geometry representing the INTERSECTION of both geometries +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo1 || !geo2) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaGeometryIntersection_r (data, geo1, geo2); + else + result = gaiaGeometryIntersection (geo1, geo2); + if (!result) + sqlite3_result_null (context); + else if (gaiaIsEmpty (result)) + { + gaiaFreeGeomColl (result); + sqlite3_result_null (context); + } + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static int +gaia_union_polygs (gaiaGeomCollPtr geom) +{ +/* testing if this geometry simply contains Polygons */ + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts || lns) + return 0; + if (!pgs) + return 0; + return 1; +} + +static void +fnct_Union_step (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Union(BLOBencoded geom) +/ +/ aggregate function - STEP +/ +*/ + struct gaia_geom_chain *chain; + struct gaia_geom_chain_item *item; + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geom; + struct gaia_geom_chain **p; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geom) + return; + p = sqlite3_aggregate_context (context, sizeof (struct gaia_geom_chain **)); + if (!(*p)) + { + /* this is the first row */ + chain = malloc (sizeof (struct gaia_geom_chain)); + *p = chain; + item = malloc (sizeof (struct gaia_geom_chain_item)); + item->geom = geom; + item->next = NULL; + chain->all_polygs = gaia_union_polygs (geom); + chain->first = item; + chain->last = item; + } + else + { + /* subsequent rows */ + chain = *p; + item = malloc (sizeof (struct gaia_geom_chain_item)); + item->geom = geom; + item->next = NULL; + if (!gaia_union_polygs (geom)) + chain->all_polygs = 0; + chain->last->next = item; + chain->last = item; + } +} + +static void +gaia_free_geom_chain (struct gaia_geom_chain *chain) +{ + struct gaia_geom_chain_item *p = chain->first; + struct gaia_geom_chain_item *pn; + while (p) + { + pn = p->next; + gaiaFreeGeomColl (p->geom); + free (p); + p = pn; + } + free (chain); +} + +static void +fnct_Union_final (sqlite3_context * context) +{ +/* SQL function: +/ Union(BLOBencoded geom) +/ +/ aggregate function - FINAL +/ +*/ + gaiaGeomCollPtr tmp; + struct gaia_geom_chain *chain; + struct gaia_geom_chain_item *item; + gaiaGeomCollPtr aggregate; + gaiaGeomCollPtr result; + void *data = sqlite3_user_data (context); + struct gaia_geom_chain **p = sqlite3_aggregate_context (context, 0); + if (!p) + { + sqlite3_result_null (context); + return; + } + chain = *p; + +/* applying UnaryUnion */ + item = chain->first; + while (item) + { + gaiaGeomCollPtr geom = item->geom; + if (item == chain->first) + { + /* initializing the aggregate geometry */ + aggregate = geom; + item->geom = NULL; + item = item->next; + continue; + } + if (data != NULL) + tmp = gaiaMergeGeometries_r (data, aggregate, geom); + else + tmp = gaiaMergeGeometries (aggregate, geom); + gaiaFreeGeomColl (aggregate); + gaiaFreeGeomColl (geom); + item->geom = NULL; + aggregate = tmp; + item = item->next; + } + if (data != NULL) + result = gaiaUnaryUnion_r (data, aggregate); + else + result = gaiaUnaryUnion (aggregate); + gaiaFreeGeomColl (aggregate); + gaia_free_geom_chain (chain); + + if (result == NULL) + sqlite3_result_null (context); + else if (gaiaIsEmpty (result)) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + } + gaiaFreeGeomColl (result); +} + +static void +fnct_Union (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Union(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns a new geometry representing the UNION of both geometries +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo1 || !geo2) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaGeometryUnion_r (data, geo1, geo2); + else + result = gaiaGeometryUnion (geo1, geo2); + if (!result) + sqlite3_result_null (context); + else if (gaiaIsEmpty (result)) + { + gaiaFreeGeomColl (result); + sqlite3_result_null (context); + } + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_Difference (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Difference(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns a new geometry representing the DIFFERENCE of both geometries +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo1 || !geo2) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaGeometryDifference_r (data, geo1, geo2); + else + result = gaiaGeometryDifference (geo1, geo2); + if (!result) + sqlite3_result_null (context); + else if (gaiaIsEmpty (result)) + { + gaiaFreeGeomColl (result); + sqlite3_result_null (context); + } + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_SymDifference (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ SymDifference(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns a new geometry representing the SYMMETRIC DIFFERENCE of both geometries +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo1 || !geo2) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaGeometrySymDifference_r (data, geo1, geo2); + else + result = gaiaGeometrySymDifference (geo1, geo2); + if (!result) + sqlite3_result_null (context); + else if (gaiaIsEmpty (result)) + { + gaiaFreeGeomColl (result); + sqlite3_result_null (context); + } + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_Equals (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Equals(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns: +/ 1 if the two geometries are "spatially equal" +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo1 || !geo2) + sqlite3_result_int (context, -1); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaGeomCollEquals_r (data, geo1, geo2); + else + ret = gaiaGeomCollEquals (geo1, geo2); + sqlite3_result_int (context, ret); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_Intersects (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Intersects(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns: +/ 1 if the two geometries do "spatially intersects" +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *blob1; + unsigned char *blob2; + int bytes1; + int bytes2; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + blob1 = (unsigned char *) sqlite3_value_blob (argv[0]); + bytes1 = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (blob1, bytes1); + blob2 = (unsigned char *) sqlite3_value_blob (argv[1]); + bytes2 = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (blob2, bytes2); + if (!geo1 || !geo2) + sqlite3_result_int (context, -1); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaGeomCollPreparedIntersects (data, + geo1, blob1, bytes1, geo2, + blob2, bytes2); + else + ret = gaiaGeomCollIntersects (geo1, geo2); + sqlite3_result_int (context, ret); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_Disjoint (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Disjoint(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns: +/ 1 if the two geometries are "spatially disjoint" +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *blob1; + unsigned char *blob2; + int bytes1; + int bytes2; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + blob1 = (unsigned char *) sqlite3_value_blob (argv[0]); + bytes1 = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (blob1, bytes1); + blob2 = (unsigned char *) sqlite3_value_blob (argv[1]); + bytes2 = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (blob2, bytes2); + if (!geo1 || !geo2) + sqlite3_result_int (context, -1); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaGeomCollPreparedDisjoint (data, + geo1, blob1, bytes1, geo2, + blob2, bytes2); + else + ret = gaiaGeomCollDisjoint (geo1, geo2); + sqlite3_result_int (context, ret); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_Overlaps (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Overlaps(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns: +/ 1 if the two geometries do "spatially overlaps" +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *blob1; + unsigned char *blob2; + int bytes1; + int bytes2; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + blob1 = (unsigned char *) sqlite3_value_blob (argv[0]); + bytes1 = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (blob1, bytes1); + blob2 = (unsigned char *) sqlite3_value_blob (argv[1]); + bytes2 = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (blob2, bytes2); + if (!geo1 || !geo2) + sqlite3_result_int (context, -1); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaGeomCollPreparedOverlaps (data, + geo1, blob1, bytes1, geo2, + blob2, bytes2); + else + ret = gaiaGeomCollOverlaps (geo1, geo2); + sqlite3_result_int (context, ret); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_Crosses (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Crosses(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns: +/ 1 if the two geometries do "spatially crosses" +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *blob1; + unsigned char *blob2; + int bytes1; + int bytes2; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + blob1 = (unsigned char *) sqlite3_value_blob (argv[0]); + bytes1 = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (blob1, bytes1); + blob2 = (unsigned char *) sqlite3_value_blob (argv[1]); + bytes2 = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (blob2, bytes2); + if (!geo1 || !geo2) + sqlite3_result_int (context, -1); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaGeomCollPreparedCrosses (data, + geo1, blob1, bytes1, geo2, + blob2, bytes2); + else + ret = gaiaGeomCollCrosses (geo1, geo2); + sqlite3_result_int (context, ret); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_Touches (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Touches(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns: +/ 1 if the two geometries do "spatially touches" +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *blob1; + unsigned char *blob2; + int bytes1; + int bytes2; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + blob1 = (unsigned char *) sqlite3_value_blob (argv[0]); + bytes1 = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (blob1, bytes1); + blob2 = (unsigned char *) sqlite3_value_blob (argv[1]); + bytes2 = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (blob2, bytes2); + if (!geo1 || !geo2) + sqlite3_result_int (context, -1); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaGeomCollPreparedTouches (data, + geo1, blob1, bytes1, geo2, + blob2, bytes2); + else + ret = gaiaGeomCollTouches (geo1, geo2); + sqlite3_result_int (context, ret); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_Within (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Within(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns: +/ 1 if GEOM-1 is completely contained within GEOM-2 +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *blob1; + unsigned char *blob2; + int bytes1; + int bytes2; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + blob1 = (unsigned char *) sqlite3_value_blob (argv[0]); + bytes1 = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (blob1, bytes1); + blob2 = (unsigned char *) sqlite3_value_blob (argv[1]); + bytes2 = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (blob2, bytes2); + if (!geo1 || !geo2) + sqlite3_result_int (context, -1); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaGeomCollPreparedWithin (data, geo1, + blob1, bytes1, geo2, blob2, + bytes2); + else + ret = gaiaGeomCollWithin (geo1, geo2); + sqlite3_result_int (context, ret); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_Contains (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Contains(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns: +/ 1 if GEOM-1 completely contains GEOM-2 +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *blob1; + unsigned char *blob2; + int bytes1; + int bytes2; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + blob1 = (unsigned char *) sqlite3_value_blob (argv[0]); + bytes1 = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (blob1, bytes1); + blob2 = (unsigned char *) sqlite3_value_blob (argv[1]); + bytes2 = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (blob2, bytes2); + if (!geo1 || !geo2) + sqlite3_result_int (context, -1); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaGeomCollPreparedContains (data, + geo1, blob1, bytes1, geo2, + blob2, bytes2); + else + ret = gaiaGeomCollContains (geo1, geo2); + sqlite3_result_int (context, ret); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_Relate (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Relate(BLOBencoded geom1, BLOBencoded geom2, string pattern) +/ +/ returns: +/ 1 if GEOM-1 and GEOM-2 have a spatial relationship as specified by the patternMatrix +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + int ret; + const unsigned char *pattern; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[2]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + pattern = sqlite3_value_text (argv[2]); + if (!geo1 || !geo2) + sqlite3_result_int (context, -1); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaGeomCollRelate_r (data, geo1, geo2, (char *) pattern); + else + ret = gaiaGeomCollRelate (geo1, geo2, (char *) pattern); + sqlite3_result_int (context, ret); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_Distance (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Distance(BLOBencoded geom1, BLOBencoded geom2) +/ Distance(BLOBencoded geom1, BLOBencoded geom2, Boolen use_ellipsoid) +/ +/ returns the distance between GEOM-1 and GEOM-2 +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + double dist; + int use_ellipsoid = -1; + double a; + double b; + double rf; + int ret; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + void *data = sqlite3_user_data (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (argc == 3) + { + if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + use_ellipsoid = sqlite3_value_int (argv[2]); + if (use_ellipsoid != 0) + use_ellipsoid = 1; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo1 || !geo2) + sqlite3_result_null (context); + else + { + if (use_ellipsoid >= 0) + { + /* attempting to identify the corresponding ellipsoid */ + if (getEllipsoidParams (sqlite, geo1->Srid, &a, &b, &rf)) + { + gaiaGeomCollPtr shortest; + if (data != NULL) + shortest = gaiaShortestLine_r (data, geo1, geo2); + else + shortest = gaiaShortestLine (geo1, geo2); + if (shortest == NULL) + sqlite3_result_null (context); + else if (shortest->FirstLinestring == NULL) + { + gaiaFreeGeomColl (shortest); + sqlite3_result_null (context); + } + else + { + /* computes the metric distance */ + double x0; + double y0; + double x1; + double y1; + double z; + double m; + gaiaLinestringPtr ln = shortest->FirstLinestring; + dist = -1.0; + if (ln->Points == 2) + { + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, 0, + &x0, &y0, &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, 0, + &x0, &y0, &m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, 0, + &x0, &y0, &z, &m); + } + else + { + gaiaGetPoint (ln->Coords, 0, &x0, &y0); + } + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, 1, + &x1, &y1, &z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, 1, + &x1, &y1, &m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, 1, + &x1, &y1, &z, &m); + } + else + { + gaiaGetPoint (ln->Coords, 1, &x1, &y1); + } + if (use_ellipsoid) + dist = + gaiaGeodesicDistance (a, b, + rf, y0, + x0, y1, x1); + else + { + a = 6378137.0; + rf = 298.257223563; + b = (a * (1.0 - (1.0 / rf))); + dist = + gaiaGreatCircleDistance (a, + b, + y0, + x0, + y1, x1); + } + if (dist < 0.0) + { + /* invalid distance */ + sqlite3_result_null (context); + } + else + sqlite3_result_double (context, dist); + } + else + sqlite3_result_null (context); + gaiaFreeGeomColl (shortest); + } + } + else + sqlite3_result_null (context); + goto stop; + } + else + { + if (data != NULL) + ret = gaiaGeomCollDistance_r (data, geo1, geo2, &dist); + else + ret = gaiaGeomCollDistance (geo1, geo2, &dist); + if (!ret) + sqlite3_result_null (context); + else + sqlite3_result_double (context, dist); + } + } + stop: + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_PtDistWithin (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ PtDistWithin(BLOBencoded geom1, BLOBencoded geom2, double dist +/ [, boolen use_spheroid]) +/ +/ returns TRUE if the distance between GEOM-1 and GEOM-2 +/ is less or equal to dist +/ +/ - if both geom1 and geom2 are in the 4326 (WGS84) SRID, +/ (and does actually contains a single POINT each one) +/ dist is assumed to be measured in Meters +/ - in this case the optional arg use_spheroid is +/ checked to determine if geodesic distance has to be +/ computed on the sphere (quickest) or on the spheroid +/ default: use_spheroid = FALSE +/ +/ in any other case the "plain" distance is evaluated +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + double ref_dist; + int use_spheroid = 0; + double x0; + double y0; + double x1; + double y1; + int pt0 = 0; + int ln0 = 0; + int pg0 = 0; + int pt1 = 0; + int ln1 = 0; + int pg1 = 0; + double dist; + double a; + double b; + double rf; + int ret; + void *data = sqlite3_user_data (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER + || sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + ; + else + { + sqlite3_result_null (context); + return; + } + if (argc == 4) + { + /* optional use_spheroid arg */ + if (sqlite3_value_type (argv[3]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int dst = sqlite3_value_int (argv[2]); + ref_dist = dst; + } + else + ref_dist = sqlite3_value_double (argv[2]); + if (argc == 4) + use_spheroid = sqlite3_value_int (argv[3]); + if (!geo1 || !geo2) + sqlite3_result_null (context); + else + { + if (geo1->Srid == 4326 && geo2->Srid == 4326) + { + /* checking for single points */ + pt = geo1->FirstPoint; + while (pt) + { + x0 = pt->X; + y0 = pt->Y; + pt0++; + pt = pt->Next; + } + ln = geo1->FirstLinestring; + while (ln) + { + ln0++; + ln = ln->Next; + } + pg = geo1->FirstPolygon; + while (pg) + { + pg0++; + pg = pg->Next; + } + pt = geo2->FirstPoint; + while (pt) + { + x1 = pt->X; + y1 = pt->Y; + pt1++; + pt = pt->Next; + } + ln = geo2->FirstLinestring; + while (ln) + { + ln1++; + ln = ln->Next; + } + pg = geo2->FirstPolygon; + while (pg) + { + pg1++; + pg = pg->Next; + } + if (pt0 == 1 && pt1 == 1 && ln0 == 0 && ln1 == 0 && pg0 == 0 + && pg1 == 0) + { + /* using geodesic distance */ + a = 6378137.0; + rf = 298.257223563; + b = (a * (1.0 - (1.0 / rf))); + if (use_spheroid) + { + dist = + gaiaGeodesicDistance (a, b, rf, y0, x0, y1, x1); + if (dist <= ref_dist) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + } + else + { + dist = + gaiaGreatCircleDistance (a, b, y0, x0, y1, x1); + if (dist <= ref_dist) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + } + goto stop; + } + } +/* defaulting to flat distance */ + if (data != NULL) + ret = gaiaGeomCollDistance_r (data, geo1, geo2, &dist); + else + ret = gaiaGeomCollDistance (geo1, geo2, &dist); + if (!ret) + sqlite3_result_null (context); + if (dist <= ref_dist) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + } + stop: + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +SPATIALITE_PRIVATE void +geos_error (const char *fmt, ...) +{ +/* reporting some GEOS error */ + va_list ap; + char *msg; + va_start (ap, fmt); + msg = sqlite3_vmprintf (fmt, ap); + va_end (ap); + if (msg) + { + spatialite_e ("GEOS error: %s\n", msg); + gaiaSetGeosErrorMsg (msg); + sqlite3_free (msg); + } + else + gaiaSetGeosErrorMsg (NULL); +} + +SPATIALITE_PRIVATE void +geos_warning (const char *fmt, ...) +{ +/* reporting some GEOS warning */ + va_list ap; + char *msg; + va_start (ap, fmt); + msg = sqlite3_vmprintf (fmt, ap); + va_end (ap); + if (msg) + { + spatialite_e ("GEOS warning: %s\n", msg); + gaiaSetGeosWarningMsg (msg); + sqlite3_free (msg); + } + else + gaiaSetGeosWarningMsg (NULL); +} + +static void +fnct_aux_polygonize (sqlite3_context * context, gaiaGeomCollPtr geom_org, + int force_multipolygon, int allow_multipolygon) +{ +/* a common function performing any kind of polygonization op */ + gaiaGeomCollPtr geom_new = NULL; + int len; + unsigned char *p_result = NULL; + gaiaPolygonPtr pg; + int pgs = 0; + void *data = sqlite3_user_data (context); + if (!geom_org) + goto invalid; + if (data != NULL) + geom_new = gaiaPolygonize_r (data, geom_org, force_multipolygon); + else + geom_new = gaiaPolygonize (geom_org, force_multipolygon); + if (!geom_new) + goto invalid; + gaiaFreeGeomColl (geom_org); + pg = geom_new->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pgs > 1 && allow_multipolygon == 0) + { + /* invalid: a POLYGON is expected !!! */ + gaiaFreeGeomColl (geom_new); + sqlite3_result_null (context); + return; + } + gaiaToSpatiaLiteBlobWkb (geom_new, &p_result, &len); + gaiaFreeGeomColl (geom_new); + sqlite3_result_blob (context, p_result, len, free); + return; + invalid: + if (geom_org) + gaiaFreeGeomColl (geom_org); + sqlite3_result_null (context); +} + +/* +/ the following functions performs initial argument checking, +/ and then readdressing the request to fnct_aux_polygonize() +/ for actual processing +*/ + +static void +fnct_BdPolyFromText1 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ BdPolyFromText(WKT encoded MULTILINESTRING) +/ +/ returns the current geometry [POLYGON] by parsing a WKT encoded MULTILINESTRING +/ or NULL if any error is encountered +/ +*/ + const unsigned char *text; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + text = sqlite3_value_text (argv[0]); + geo = gaiaParseWkt (text, -1); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + if (geo->DeclaredType != GAIA_MULTILINESTRING) + { + gaiaFreeGeomColl (geo); + sqlite3_result_null (context); + return; + } + geo->Srid = 0; + fnct_aux_polygonize (context, geo, 0, 0); + return; +} + +static void +fnct_BdPolyFromText2 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ BdPolyFromText(WKT encoded MULTILINESTRING, SRID) +/ +/ returns the current geometry [POLYGON] by parsing a WKT encoded MULTILINESTRING +/ or NULL if any error is encountered +/ +*/ + const unsigned char *text; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + text = sqlite3_value_text (argv[0]); + geo = gaiaParseWkt (text, -1); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + if (geo->DeclaredType != GAIA_MULTILINESTRING) + { + gaiaFreeGeomColl (geo); + sqlite3_result_null (context); + return; + } + geo->Srid = sqlite3_value_int (argv[1]); + fnct_aux_polygonize (context, geo, 0, 0); + return; +} + +static void +fnct_BdMPolyFromText1 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ BdMPolyFromText(WKT encoded MULTILINESTRING) +/ +/ returns the current geometry [MULTIPOLYGON] by parsing a WKT encoded MULTILINESTRING +/ or NULL if any error is encountered +/ +*/ + const unsigned char *text; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + text = sqlite3_value_text (argv[0]); + geo = gaiaParseWkt (text, -1); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + if (geo->DeclaredType != GAIA_MULTILINESTRING) + { + gaiaFreeGeomColl (geo); + sqlite3_result_null (context); + return; + } + geo->Srid = 0; + fnct_aux_polygonize (context, geo, 1, 1); + return; +} + +static void +fnct_BdMPolyFromText2 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ BdMPolyFromText(WKT encoded MULTILINESTRING, SRID) +/ +/ returns the current geometry [MULTIPOLYGON] by parsing a WKT encoded MULTILINESTRING +/ or NULL if any error is encountered +/ +*/ + const unsigned char *text; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + text = sqlite3_value_text (argv[0]); + geo = gaiaParseWkt (text, -1); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + if (geo->DeclaredType != GAIA_MULTILINESTRING) + { + gaiaFreeGeomColl (geo); + sqlite3_result_null (context); + return; + } + geo->Srid = sqlite3_value_int (argv[1]); + fnct_aux_polygonize (context, geo, 1, 1); + return; +} + +static void +fnct_BdPolyFromWKB1 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ BdPolyFromWKB(WKB encoded MULTILINESTRING) +/ +/ returns the current geometry [POLYGON] by parsing a WKB encoded MULTILINESTRING +/ or NULL if any error is encountered +/ +*/ + int n_bytes; + const unsigned char *wkb; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + wkb = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (!check_wkb (wkb, n_bytes, -1)) + return; + geo = gaiaFromWkb (wkb, n_bytes); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + if (geo->DeclaredType != GAIA_MULTILINESTRING) + { + gaiaFreeGeomColl (geo); + sqlite3_result_null (context); + return; + } + geo->Srid = 0; + fnct_aux_polygonize (context, geo, 0, 0); + return; +} + +static void +fnct_BdPolyFromWKB2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ BdPolyFromWKB(WKB encoded MULTILINESTRING) +/ +/ returns the current geometry [POLYGON] by parsing a WKB encoded MULTILINESTRING +/ or NULL if any error is encountered +/ +*/ + int n_bytes; + const unsigned char *wkb; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + wkb = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (!check_wkb (wkb, n_bytes, -1)) + return; + geo = gaiaFromWkb (wkb, n_bytes); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + if (geo->DeclaredType != GAIA_MULTILINESTRING) + { + gaiaFreeGeomColl (geo); + sqlite3_result_null (context); + return; + } + geo->Srid = sqlite3_value_int (argv[1]); + fnct_aux_polygonize (context, geo, 0, 0); + return; +} + +static void +fnct_BdMPolyFromWKB1 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ BdMPolyFromWKB(WKB encoded MULTILINESTRING) +/ +/ returns the current geometry [MULTIPOLYGON] by parsing a WKB encoded MULTILINESTRING +/ or NULL if any error is encountered +/ +*/ + int n_bytes; + const unsigned char *wkb; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + wkb = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (!check_wkb (wkb, n_bytes, -1)) + return; + geo = gaiaFromWkb (wkb, n_bytes); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + if (geo->DeclaredType != GAIA_MULTILINESTRING) + { + gaiaFreeGeomColl (geo); + sqlite3_result_null (context); + return; + } + geo->Srid = 0; + fnct_aux_polygonize (context, geo, 1, 1); + return; +} + +static void +fnct_BdMPolyFromWKB2 (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ BdMPolyFromWKB(WKB encoded MULTILINESTRING) +/ +/ returns the current geometry [MULTIPOLYGON] by parsing a WKB encoded MULTILINESTRING +/ or NULL if any error is encountered +/ +*/ + int n_bytes; + const unsigned char *wkb; + gaiaGeomCollPtr geo = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + wkb = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (!check_wkb (wkb, n_bytes, -1)) + return; + geo = gaiaFromWkb (wkb, n_bytes); + if (geo == NULL) + { + sqlite3_result_null (context); + return; + } + if (geo->DeclaredType != GAIA_MULTILINESTRING) + { + gaiaFreeGeomColl (geo); + sqlite3_result_null (context); + return; + } + geo->Srid = sqlite3_value_int (argv[1]); + fnct_aux_polygonize (context, geo, 1, 1); + return; +} + +static int +check_topo_table (sqlite3 * sqlite, const char *table, int is_view) +{ +/* checking if some Topology-related table/view already exists */ + int exists = 0; + char *sql_statement; + char *errMsg = NULL; + int ret; + char **results; + int rows; + int columns; + int i; + sql_statement = + sqlite3_mprintf ("SELECT name FROM sqlite_master WHERE type = '%s'" + "AND Upper(name) = Upper(%Q)", + (!is_view) ? "table" : "view", table); + ret = sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + &errMsg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + sqlite3_free (errMsg); + return 0; + } + for (i = 1; i <= rows; i++) + exists = 1; + sqlite3_free_table (results); + return exists; +} + +static int +create_topo_nodes (sqlite3 * sqlite, const char *table, int srid, int dims) +{ +/* creating the topo_nodes table */ + char *sql_statement; + char *sqltable; + char *idx_name; + char *xidx_name; + int ret; + char *err_msg = NULL; + sqltable = gaiaDoubleQuotedSql (table); + sql_statement = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n" + "node_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + "node_code TEXT)", sqltable); + free (sqltable); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE '%s' error: %s\n", table, err_msg); + sqlite3_free (err_msg); + return 0; + } + sql_statement = + sqlite3_mprintf + ("SELECT AddGeometryColumn(%Q, 'Geometry', %d, 'POINT', '%s', 1)", + table, srid, (dims == GAIA_XY_Z) ? "XYZ" : "XY"); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("AddGeometryColumn '%s'.'Geometry' error: %s\n", + table, err_msg); + sqlite3_free (err_msg); + return 0; + } + sql_statement = + sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'Geometry')", table); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CreateSpatialIndex '%s'.'Geometry' error: %s\n", + table, err_msg); + sqlite3_free (err_msg); + return 0; + } + sqltable = gaiaDoubleQuotedSql (table); + idx_name = sqlite3_mprintf ("idx_%s_code", table); + xidx_name = gaiaDoubleQuotedSql (idx_name); + sqlite3_free (idx_name); + sql_statement = + sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (node_code)", + xidx_name, sqltable); + free (sqltable); + free (xidx_name); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("Create Index '%s'('node_code') error: %s\n", + sqltable, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_topo_edges (sqlite3 * sqlite, const char *table, int srid, int dims) +{ +/* creating the topo_edges table */ + char *sql_statement; + char *sqltable; + char *idx_name; + char *xidx_name; + int ret; + char *err_msg = NULL; + sqltable = gaiaDoubleQuotedSql (table); + sql_statement = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n" + "edge_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + "node_from_code TEXT,\n" + "node_to_code TEXT,\n" + "edge_code TEXT)", sqltable); + free (sqltable); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE '%s' error: %s\n", table, err_msg); + sqlite3_free (err_msg); + return 0; + } + sql_statement = + sqlite3_mprintf + ("SELECT AddGeometryColumn(%Q, 'Geometry', %d, 'LINESTRING', '%s', 1)", + table, srid, (dims == GAIA_XY_Z) ? "XYZ" : "XY"); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("AddGeometryColumn '%s'.'Geometry' error: %s\n", + table, err_msg); + sqlite3_free (err_msg); + return 0; + } + sql_statement = + sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, 'Geometry')", table); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CreateSpatialIndex '%s'.'Geometry' error: %s\n", + table, err_msg); + sqlite3_free (err_msg); + return 0; + } + sqltable = gaiaDoubleQuotedSql (table); + idx_name = sqlite3_mprintf ("idx_%s_code", table); + xidx_name = gaiaDoubleQuotedSql (idx_name); + sqlite3_free (idx_name); + sql_statement = + sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (edge_code)", + xidx_name, sqltable); + free (sqltable); + free (xidx_name); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("Create Index '%s'('edge_code') error: %s\n", + sqltable, err_msg); + sqlite3_free (err_msg); + return 0; + } + sqltable = gaiaDoubleQuotedSql (table); + idx_name = sqlite3_mprintf ("idx_%s_from", table); + xidx_name = gaiaDoubleQuotedSql (idx_name); + sqlite3_free (idx_name); + sql_statement = + sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (node_from_code)", + xidx_name, sqltable); + free (sqltable); + free (xidx_name); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("Create Index '%s'('node_from_code') error: %s\n", + sqltable, err_msg); + sqlite3_free (err_msg); + return 0; + } + sqltable = gaiaDoubleQuotedSql (table); + idx_name = sqlite3_mprintf ("idx_%s_to", table); + xidx_name = gaiaDoubleQuotedSql (idx_name); + sqlite3_free (idx_name); + sql_statement = + sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (node_to_code)", + xidx_name, sqltable); + free (sqltable); + free (xidx_name); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("Create Index '%s'('node_to_code') error: %s\n", + sqltable, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_topo_faces (sqlite3 * sqlite, const char *table) +{ +/* creating the topo_faces table */ + char *sql_statement; + char *sqltable; + char *idx_name; + char *xidx_name; + int ret; + char *err_msg = NULL; + sqltable = gaiaDoubleQuotedSql (table); + sql_statement = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n" + "face_id INTEGER PRIMARY KEY AUTOINCREMENT,\n" + "face_code TEXT)", sqltable); + free (sqltable); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE '%s' error: %s\n", table, err_msg); + sqlite3_free (err_msg); + return 0; + } + sqltable = gaiaDoubleQuotedSql (table); + idx_name = sqlite3_mprintf ("idx_%s_code", table); + xidx_name = gaiaDoubleQuotedSql (idx_name); + sqlite3_free (idx_name); + sql_statement = + sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (face_code)", + xidx_name, sqltable); + free (sqltable); + free (xidx_name); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("Create Index '%s'('face_code') error: %s\n", + sqltable, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_topo_faces_edges (sqlite3 * sqlite, const char *table, + const char *table2) +{ +/* creating the topo_faces_edges table */ + char *sql_statement; + char *sqltable; + char *sqltable2; + char *idx_name; + char *xidx_name; + int ret; + char *err_msg = NULL; + sqltable = gaiaDoubleQuotedSql (table); + sqltable2 = gaiaDoubleQuotedSql (table2); + sql_statement = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n" + "face_id INTEGER NOT NULL,\n" + "edge_code TEXT NOT NULL,\n" + "orientation TEXT,\n" + "CONSTRAINT pk_faces_edges PRIMARY KEY " + "(face_id, edge_code),\n" + "CONSTRAINT fk_faces_edges FOREIGN KEY " + "(face_id) REFERENCES \"%s\" (face_id))\n", + sqltable, sqltable2); + free (sqltable); + free (sqltable2); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE '%s' error: %s\n", table, err_msg); + sqlite3_free (err_msg); + return 0; + } + sqltable = gaiaDoubleQuotedSql (table); + idx_name = sqlite3_mprintf ("idx_%s_edge", table); + xidx_name = gaiaDoubleQuotedSql (idx_name); + sqlite3_free (idx_name); + sql_statement = + sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (edge_code)", + xidx_name, sqltable); + free (sqltable); + free (xidx_name); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("Create Index '%s'('edge_code') error: %s\n", + sqltable, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_topo_curves (sqlite3 * sqlite, const char *table) +{ +/* creating the topo_curves table */ + char *sql_statement; + char *sqltable; + char *idx_name; + char *xidx_name; + int ret; + char *err_msg = NULL; + sqltable = gaiaDoubleQuotedSql (table); + sql_statement = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n" + "curve_id INTEGER NOT NULL,\n" + "edge_code TEXT NOT NULL,\n" + "orientation TEXT,\n" + "CONSTRAINT pk_curves PRIMARY KEY " + "(curve_id, edge_code))\n", sqltable); + free (sqltable); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE '%s' error: %s\n", table, err_msg); + sqlite3_free (err_msg); + return 0; + } + sqltable = gaiaDoubleQuotedSql (table); + idx_name = sqlite3_mprintf ("idx_%s_edge", table); + xidx_name = gaiaDoubleQuotedSql (idx_name); + sqlite3_free (idx_name); + sql_statement = + sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (edge_code)", + xidx_name, sqltable); + free (sqltable); + free (xidx_name); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("Create Index '%s'('edge_code') error: %s\n", + sqltable, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_topo_surfaces (sqlite3 * sqlite, const char *table) +{ +/* creating the topo_surfaces table */ + char *sql_statement; + char *sqltable; + char *idx_name; + char *xidx_name; + int ret; + char *err_msg = NULL; + sqltable = gaiaDoubleQuotedSql (table); + sql_statement = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n" + "surface_id INTEGER NOT NULL,\n" + "face_code TEXT NOT NULL,\n" + "orientation TEXT,\n" + "CONSTRAINT pk_surfaces PRIMARY KEY " + "(surface_id, face_code))", sqltable); + free (sqltable); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE '%s' error: %s\n", table, err_msg); + sqlite3_free (err_msg); + return 0; + } + sqltable = gaiaDoubleQuotedSql (table); + idx_name = sqlite3_mprintf ("idx_%s_face", table); + xidx_name = gaiaDoubleQuotedSql (idx_name); + sqlite3_free (idx_name); + sql_statement = + sqlite3_mprintf ("CREATE INDEX \"%s\" ON \"%s\" (face_code)", + xidx_name, sqltable); + free (sqltable); + free (xidx_name); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("Create Index '%s'('face_code') error: %s\n", + sqltable, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_check_node_codes (sqlite3 * sqlite, const char *view, + const char *table_nodes) +{ +/* creating the check node codes VIEW */ + char *sql_statement; + char *sqltable; + char *sqlview; + int ret; + char *err_msg = NULL; + sqlview = gaiaDoubleQuotedSql (view); + sqltable = gaiaDoubleQuotedSql (table_nodes); + sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" + "SELECT node_code AS node_code, Count(node_id) AS count\n" + "FROM \"%s\"\nGROUP BY node_code\nHAVING count > 1\n", + sqlview, sqltable); + free (sqlview); + free (sqltable); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_check_node_geoms (sqlite3 * sqlite, const char *view, + const char *table_nodes) +{ +/* creating the check node geoms VIEW */ + char *sql_statement; + char *sqltable; + char *sqlview; + int ret; + char *err_msg = NULL; + sqlview = gaiaDoubleQuotedSql (view); + sqltable = gaiaDoubleQuotedSql (table_nodes); + sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" + "SELECT n1.node_id AS node1_id, n1.node_code AS node1_code, " + "n2.node_id AS node2_id, n2.node_code AS node2_code\n" + "FROM \"%s\" AS n1\nJOIN \"%s\" AS n2 ON (\n" + " n1.node_id <> n2.node_id AND\n" + " ST_Equals(n1.Geometry, n2.Geometry) = 1 AND\n" + " n2.node_id IN (\n SELECT ROWID FROM SpatialIndex\n" + " WHERE f_table_name = %Q AND\n search_frame = n1.Geometry))\n", + sqlview, sqltable, sqltable, table_nodes); + free (sqlview); + free (sqltable); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_check_edge_codes (sqlite3 * sqlite, const char *view, + const char *table_edges) +{ +/* creating the check edge codes VIEW */ + char *sql_statement; + char *sqltable; + char *sqlview; + int ret; + char *err_msg = NULL; + sqlview = gaiaDoubleQuotedSql (view); + sqltable = gaiaDoubleQuotedSql (table_edges); + sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" + "SELECT edge_code AS edge_code, Count(edge_id) AS count\n" + "FROM \"%s\"\nGROUP BY edge_code\nHAVING count > 1\n", + sqlview, sqltable); + free (sqlview); + free (sqltable); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_check_edge_geoms (sqlite3 * sqlite, const char *view, + const char *table_edges) +{ +/* creating the check edge geoms VIEW */ + char *sql_statement; + char *sqltable; + char *sqlview; + int ret; + char *err_msg = NULL; + sqlview = gaiaDoubleQuotedSql (view); + sqltable = gaiaDoubleQuotedSql (table_edges); + sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" + "SELECT e1.edge_id AS edge1_id, e1.edge_code AS edge1_code, " + "e2.edge_id AS edge2_id, e2.edge_code AS edge2_code\n" + "FROM \"%s\" AS e1\nJOIN \"%s\" AS e2 ON (\n e1.edge_id <> e2.edge_id AND\n" + "NOT (e1.node_from_code = e2.node_from_code " + "AND e1.node_to_code = e2.node_to_code) AND\n" + " ST_Crosses(e1.Geometry, e2.Geometry) = 1 AND\n" + " e2.edge_id IN (\n" + " SELECT ROWID FROM SpatialIndex\n" + " WHERE f_table_name = %Q AND\n search_frame = e1.Geometry))\n", + sqlview, sqltable, sqltable, table_edges); + free (sqlview); + free (sqltable); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_check_edge_node_geoms (sqlite3 * sqlite, const char *view, + const char *table_edges, const char *table_nodes) +{ +/* creating the check edge/node geoms VIEW */ + char *sql_statement; + char *sql_edges; + char *sql_nodes; + char *sqlview; + int ret; + char *err_msg = NULL; + sqlview = gaiaDoubleQuotedSql (view); + sql_edges = gaiaDoubleQuotedSql (table_edges); + sql_nodes = gaiaDoubleQuotedSql (table_nodes); + sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" + "SELECT e.edge_id AS edge_id, n.node_id AS node_id\n" + "FROM \"%s\" AS e,\n\"%s\" AS n\n" + "WHERE ST_Intersects(e.Geometry, n.Geometry)\n" + " AND ST_Equals(ST_StartPoint(e.Geometry), n.Geometry) = 0\n" + " AND ST_Equals(ST_EndPoint(e.Geometry), n.Geometry) = 0\n" + " AND n.ROWID IN (\n SELECT ROWID FROM SpatialIndex\n" + " WHERE f_table_name = %Q\n AND search_frame = e.Geometry);", + sqlview, sql_edges, sql_nodes, + table_nodes); + free (sqlview); + free (sql_nodes); + free (sql_edges); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_check_face_codes (sqlite3 * sqlite, const char *view, + const char *table_faces) +{ +/* creating the check face codes VIEW */ + char *sql_statement; + char *sqltable; + char *sqlview; + int ret; + char *err_msg = NULL; + sqlview = gaiaDoubleQuotedSql (view); + sqltable = gaiaDoubleQuotedSql (table_faces); + sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" + "SELECT face_code AS face_code, Count(face_id) AS count\n" + "FROM \"%s\"\nGROUP BY face_code\nHAVING count > 1\n", + sqlview, sqltable); + free (sqltable); + free (sqlview); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_faces_resolved (sqlite3 * sqlite, const char *view, const char *faces, + const char *faces_edges, const char *edges) +{ +/* creating the Faces Resolved VIEW */ + char *sql_statement; + char *sql_faces; + char *sql_faces_edges; + char *sql_edges; + char *sqlview; + int ret; + char *err_msg = NULL; + sqlview = gaiaDoubleQuotedSql (view); + sql_faces = gaiaDoubleQuotedSql (faces); + sql_faces_edges = gaiaDoubleQuotedSql (faces_edges); + sql_edges = gaiaDoubleQuotedSql (edges); + sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" + "SELECT f.face_id AS face_id, f.face_code AS face_code, " + "ST_Polygonize(e.Geometry) AS Geometry\n" + "FROM \"%s\" AS f\nLEFT JOIN \"%s\" AS fe ON (fe.face_id = f.face_id)\n" + "LEFT JOIN \"%s\" AS e ON (e.edge_code = fe.edge_code)\n" + "GROUP BY f.face_id\n", sqlview, + sql_faces, sql_faces_edges, sql_edges); + free (sqlview); + free (sql_faces); + free (sql_faces_edges); + free (sql_edges); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_curves_resolved (sqlite3 * sqlite, const char *view, + const char *curves, char *edges) +{ +/* creating the Curves Resolved VIEW */ + char *sql_statement; + char *sql_curves; + char *sql_edges; + char *sqlview; + int ret; + char *err_msg = NULL; + sqlview = gaiaDoubleQuotedSql (view); + sql_curves = gaiaDoubleQuotedSql (curves); + sql_edges = gaiaDoubleQuotedSql (edges); + sql_statement = + sqlite3_mprintf + ("CREATE VIEW \"%s\" AS\nSELECT c.curve_id AS curve_id, " + "CastToMultiLinestring(ST_Collect(e.Geometry)) AS Geometry\n" + "FROM \"%s\" AS c\nLEFT JOIN \"%s\" AS e ON (e.edge_code = c.edge_code)\n" + "GROUP BY c.curve_id\n", sqlview, sql_curves, sql_edges); + free (sqlview); + free (sql_edges); + free (sql_curves); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_surfaces_resolved (sqlite3 * sqlite, const char *view, + const char *surfaces, const char *faces) +{ +/* creating the Surfaces Resolved VIEW */ + char *sql_statement; + char *sql_surfaces; + char *sql_faces; + char *sqlview; + int ret; + char *err_msg = NULL; + sqlview = gaiaDoubleQuotedSql (view); + sql_surfaces = gaiaDoubleQuotedSql (surfaces); + sql_faces = gaiaDoubleQuotedSql (faces); + sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" + "SELECT s.surface_id AS surface_id,\n" + " CastToMultipolygon(ST_UnaryUnion(ST_Collect(f.Geometry))) AS Geometry\n" + "FROM \"%s\" AS s\n" + "LEFT JOIN \"%s\" AS f ON (f.face_code = s.face_code)\n" + "GROUP BY s.surface_id\n", sqlview, + sql_surfaces, sql_faces); + free (sqlview); + free (sql_surfaces); + free (sql_faces); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_dangling_nodes (sqlite3 * sqlite, const char *view, + const char *nodes, const char *edges) +{ +/* creating the Dangling Nodes VIEW */ + char *sql_statement; + char *sql_nodes; + char *sql_edges; + char *sqlview; + int ret; + char *err_msg = NULL; + sqlview = gaiaDoubleQuotedSql (view); + sql_nodes = gaiaDoubleQuotedSql (nodes); + sql_edges = gaiaDoubleQuotedSql (edges); + sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" + "SELECT n.node_id AS node_id\nFROM \"%s\" AS n\n" + "LEFT JOIN \"%s\" AS e ON (n.node_code = e.node_from_code)\n" + "WHERE e.edge_id IS NULL\nINTERSECT\nSELECT n.node_id AS node_id\n" + "FROM \"%s\" AS n\nLEFT JOIN \"%s\" AS e ON (n.node_code = e.node_to_code)\n" + "WHERE e.edge_id IS NULL\n", sqlview, + sql_nodes, sql_edges, sql_nodes, + sql_edges); + free (sqlview); + free (sql_nodes); + free (sql_edges); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_dangling_edges (sqlite3 * sqlite, const char *view, + const char *edges, const char *faces_edges, + const char *curves) +{ +/* creating the Dangling Edges VIEW */ + char *sql_statement; + char *sql_edges; + char *sql_faces_edges; + char *sql_curves; + char *sqlview; + int ret; + char *err_msg = NULL; + sqlview = gaiaDoubleQuotedSql (view); + sql_edges = gaiaDoubleQuotedSql (edges); + sql_faces_edges = gaiaDoubleQuotedSql (faces_edges); + sql_curves = gaiaDoubleQuotedSql (curves); + sql_statement = sqlite3_mprintf ("CREATE VIEW \"%s\" AS\n" + "SELECT e.edge_id AS edge_id\nFROM \"%s\" AS e\n" + "LEFT JOIN \"%s\" AS f ON (e.edge_code = f.edge_code)\n" + "WHERE f.edge_code IS NULL\nINTERSECT\nSELECT e.edge_id AS edge_id\n" + "FROM \"%s\" AS e\nLEFT JOIN \"%s\" AS c ON (e.edge_code = c.edge_code)\n" + "WHERE c.edge_code IS NULL\n", sqlview, + sql_edges, sql_faces_edges, sql_edges, + sql_curves); + free (sqlview); + free (sql_edges); + free (sql_faces_edges); + free (sql_curves); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_check_edges_from_to (sqlite3 * sqlite, const char *view, + const char *edges, const char *nodes) +{ +/* creating the Edges/Nodes [from/to] VIEW */ + char skeleton[2048]; + char *sql_statement; + char *sql_edges; + char *sql_nodes; + char *sqlview; + int ret; + char *err_msg = NULL; + sqlview = gaiaDoubleQuotedSql (view); + sql_edges = gaiaDoubleQuotedSql (edges); + sql_nodes = gaiaDoubleQuotedSql (nodes); + strcpy (skeleton, "CREATE VIEW \"%s\" AS\n"); + strcat (skeleton, "SELECT e.edge_id AS edge_id, n.node_id AS node_id,\n"); + strcat (skeleton, " n.node_code AS node_code,\n"); + strcat (skeleton, "'Mismatching coords' AS error_cause\n"); + strcat (skeleton, "FROM \"%s\" AS e\n"); + strcat (skeleton, "JOIN \"%s\" AS n ON "); + strcat (skeleton, "(e.node_from_code = n.node_code)\n"); + strcat (skeleton, + "WHERE ST_Equals(ST_StartPoint(e.Geometry), n.Geometry) = 0\n"); + strcat (skeleton, "UNION\n"); + strcat (skeleton, "SELECT e.edge_id AS edge_id, n.node_id AS node_id,\n"); + strcat (skeleton, " n.node_code AS node_code,\n"); + strcat (skeleton, " 'Mismatching coords' AS error_cause\n"); + strcat (skeleton, "FROM \"%s\" AS e\n"); + strcat (skeleton, "JOIN \"%s\" AS n ON "); + strcat (skeleton, "(e.node_to_code = n.node_code)\n"); + strcat (skeleton, + "WHERE ST_Equals(ST_EndPoint(e.Geometry), n.Geometry) = 0\n"); + strcat (skeleton, "UNION\n"); + strcat (skeleton, "SELECT e.edge_id AS edge_id, n.node_id AS node_id,\n"); + strcat (skeleton, " n.node_code AS node_code,\n"); + strcat (skeleton, " 'Unresolved Node reference' AS error_cause\n"); + strcat (skeleton, "FROM \"%s\" AS e\n"); + strcat (skeleton, "LEFT JOIN \"%s\" AS n ON "); + strcat (skeleton, "(e.node_from_code = n.node_code)\n"); + strcat (skeleton, "WHERE n.node_id IS NULL\n"); + strcat (skeleton, "UNION\n"); + strcat (skeleton, "SELECT e.edge_id AS edge_id, n.node_id AS node_id,\n"); + strcat (skeleton, " n.node_code AS node_code,\n"); + strcat (skeleton, " 'Unresolved Node reference' AS error_cause\n"); + strcat (skeleton, "FROM \"%s\" AS e\n"); + strcat (skeleton, "LEFT JOIN \"%s\" AS n ON "); + strcat (skeleton, "(e.node_to_code = n.node_code)\n"); + strcat (skeleton, "WHERE n.node_id IS NULL\n"); + sql_statement = sqlite3_mprintf (skeleton, sqlview, + sql_edges, sql_nodes, sql_edges, + sql_nodes, sql_edges, sql_nodes, + sql_edges, sql_nodes); + free (sqlview); + free (sql_edges); + free (sql_nodes); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE VIEW '%s' error: %s\n", view, err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +create_topo_master (sqlite3 * sqlite) +{ +/* creating the topo_master table */ + char sql[2048]; + int ret; + char *err_msg = NULL; + +/* creating the table */ + strcpy (sql, "CREATE TABLE topology_master (\n"); + strcat (sql, "nodes TEXT NOT NULL,\n"); + strcat (sql, "edges TEXT NOT NULL,\n"); + strcat (sql, "faces TEXT NOT NULL,\n"); + strcat (sql, "faces_edges TEXT NOT NULL,\n"); + strcat (sql, "curves TEXT NOT NULL,\n"); + strcat (sql, "surfaces TEXT NOT NULL,\n"); + strcat (sql, "check_node_ids TEXT NOT NULL,\n"); + strcat (sql, "check_node_geoms TEXT NOT NULL,\n"); + strcat (sql, "check_edge_ids TEXT NOT NULL,\n"); + strcat (sql, "check_edge_geoms TEXT NOT NULL,\n"); + strcat (sql, "check_edge_node_geoms TEXT NOT NULL,\n"); + strcat (sql, "check_face_ids TEXT NOT NULL,\n"); + strcat (sql, "faces_resolved TEXT NOT NULL,\n"); + strcat (sql, "curves_resolved TEXT NOT NULL,\n"); + strcat (sql, "surfaces_resolved TEXT NOT NULL,\n"); + strcat (sql, "dangling_nodes TEXT NOT NULL,\n"); + strcat (sql, "dangling_edges TEXT NOT NULL,\n"); + strcat (sql, "check_edges_from_to TEXT NOT NULL,\n"); + strcat (sql, "coord_dimension TEXT NOT NULL,\n"); + strcat (sql, "srid INTEGER NOT NULL,\n"); + strcat (sql, "CONSTRAINT fk_topo_master FOREIGN KEY \n"); + strcat (sql, "(srid) REFERENCES spatial_ref_sys (srid))"); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + spatialite_e ("CREATE TABLE 'topology_master' error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static int +update_topo_master (sqlite3 * sqlite, const char *nodes, const char *edges, + const char *faces, const char *faces_edges, + const char *curves, const char *surfaces, + const char *check_nodes, const char *check_node_geoms, + const char *check_edges, const char *check_edge_geoms, + const char *check_edge_node_geoms, + const char *check_faces, const char *faces_res, + const char *curves_res, const char *surfaces_res, + const char *dangling_nodes, const char *dangling_edges, + const char *check_edges_from_to, int srid, int dims) +{ +/* updating the topo_master table */ + char *sql_statement; + int ret; + char *err_msg = NULL; + +/* inserting Topology data into MASTER */ + sql_statement = sqlite3_mprintf ("INSERT INTO topology_master " + "(nodes, edges, faces, faces_edges, curves, surfaces, check_node_ids, " + "check_node_geoms, check_edge_ids, check_edge_geoms, check_edge_node_geoms, " + "check_face_ids, faces_resolved, curves_resolved, surfaces_resolved, " + "dangling_nodes, dangling_edges, check_edges_from_to, coord_dimension, srid) " + "VALUES (%Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %Q, %d)", + nodes, edges, faces, faces_edges, curves, + surfaces, check_nodes, check_node_geoms, + check_edges, check_edge_geoms, + check_edge_node_geoms, check_faces, + faces_res, curves_res, surfaces_res, + dangling_nodes, dangling_edges, + check_edges_from_to, + (dims == GAIA_XY_Z) ? "XYZ" : "XY", srid); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, &err_msg); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + { + spatialite_e ("INSERT INTO 'topology_master' error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +static void +fnct_CreateTopologyTables (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CreateTopologyTables(srid, coord_dims) +/ or +/ CreateTopologyTables(prefix, srid, coord_dims) +/ +/ creates any Topology related table +/ returns 1 on success +/ 0 on failure +*/ + const char *prefix = "topo_"; + const unsigned char *txt_dims; + int srid = -1; + int dimension; + int dims = -1; + char *table_curves; + char *table_surfaces; + char *table_nodes; + char *table_edges; + char *table_faces; + char *table_faces_edges; + char *view_check_node_codes; + char *view_check_node_geoms; + char *view_check_edge_codes; + char *view_check_edge_geoms; + char *view_check_edge_node_geoms; + char *view_check_face_codes; + char *view_faces_resolved; + char *view_curves_resolved; + char *view_surfaces_resolved; + char *view_dangling_nodes; + char *view_dangling_edges; + char *view_edges_check_from_to; + const char *tables[20]; + int views[20]; + int *p_view; + const char **p_tbl; + int ok_table; + int create_master = 1; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (argc == 3) + { + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + spatialite_e + ("CreateTopologyTables() error: argument 1 [table_prefix] is not of the String type\n"); + sqlite3_result_int (context, 0); + return; + } + prefix = (char *) sqlite3_value_text (argv[0]); + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + spatialite_e + ("CreateTopologyTables() error: argument 2 [SRID] is not of the Integer type\n"); + sqlite3_result_int (context, 0); + return; + } + srid = sqlite3_value_int (argv[1]); + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + dimension = sqlite3_value_int (argv[2]); + if (dimension == 2) + dims = GAIA_XY; + if (dimension == 3) + dims = GAIA_XY_Z; + } + else if (sqlite3_value_type (argv[2]) == SQLITE_TEXT) + { + txt_dims = sqlite3_value_text (argv[2]); + if (strcasecmp ((char *) txt_dims, "XY") == 0) + dims = GAIA_XY; + if (strcasecmp ((char *) txt_dims, "XYZ") == 0) + dims = GAIA_XY_Z; + } + else + { + spatialite_e + ("CreateTopologyTables() error: argument 3 [dimension] is not of the Integer or Text type\n"); + sqlite3_result_int (context, 0); + return; + } + } + else + { + if (sqlite3_value_type (argv[0]) != SQLITE_INTEGER) + { + spatialite_e + ("CreateTopologyTables() error: argument 1 [SRID] is not of the Integer type\n"); + sqlite3_result_int (context, 0); + return; + } + srid = sqlite3_value_int (argv[0]); + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + dimension = sqlite3_value_int (argv[1]); + if (dimension == 2) + dims = GAIA_XY; + if (dimension == 3) + dims = GAIA_XY_Z; + } + else if (sqlite3_value_type (argv[1]) == SQLITE_TEXT) + { + txt_dims = sqlite3_value_text (argv[1]); + if (strcasecmp ((char *) txt_dims, "XY") == 0) + dims = GAIA_XY; + if (strcasecmp ((char *) txt_dims, "XYZ") == 0) + dims = GAIA_XY_Z; + } + else + { + spatialite_e + ("CreateTopologyTables() error: argument 2 [dimension] is not of the Integer or Text type\n"); + sqlite3_result_int (context, 0); + return; + } + } + if (dims == GAIA_XY || dims == GAIA_XY_Z) + ; + else + { + spatialite_e + ("CreateTopologyTables() error: [dimension] ILLEGAL VALUE\n"); + sqlite3_result_int (context, 0); + return; + } + if (srid <= 0) + { + spatialite_e ("CreateTopologyTables() error: [SRID] ILLEGAL VALUE\n"); + sqlite3_result_int (context, 0); + return; + } + +/* checking Topology tables */ + tables[0] = "topology_master"; + views[0] = 0; + table_curves = sqlite3_mprintf ("%scurves", prefix); + tables[1] = table_curves; + views[1] = 0; + table_surfaces = sqlite3_mprintf ("%ssurfaces", prefix); + tables[2] = table_surfaces; + views[2] = 0; + table_nodes = sqlite3_mprintf ("%snodes", prefix); + tables[3] = table_nodes; + views[3] = 0; + table_edges = sqlite3_mprintf ("%sedges", prefix); + tables[4] = table_edges; + views[4] = 0; + table_faces = sqlite3_mprintf ("%sfaces", prefix); + tables[5] = table_faces; + views[5] = 0; + table_faces_edges = sqlite3_mprintf ("%sfaces_edges", prefix); + tables[6] = table_faces_edges; + views[6] = 0; + view_check_node_codes = + sqlite3_mprintf ("%snodes_check_dupl_codes", prefix); + tables[7] = view_check_node_codes; + views[7] = 1; + view_check_node_geoms = + sqlite3_mprintf ("%snodes_check_dupl_geoms", prefix); + tables[8] = view_check_node_geoms; + views[8] = 1; + view_check_edge_codes = + sqlite3_mprintf ("%sedges_check_dupl_codes", prefix); + tables[9] = view_check_edge_codes; + views[9] = 1; + view_check_edge_geoms = + sqlite3_mprintf ("%sedges_check_intersections", prefix); + tables[10] = view_check_edge_geoms; + views[10] = 1; + view_check_edge_node_geoms = + sqlite3_mprintf ("%sedges_check_nodes", prefix); + tables[11] = view_check_edge_node_geoms; + views[11] = 1; + view_check_face_codes = + sqlite3_mprintf ("%sfaces_check_dupl_codes", prefix); + tables[12] = view_check_face_codes; + views[12] = 1; + view_faces_resolved = sqlite3_mprintf ("%sfaces_resolved", prefix); + tables[13] = view_faces_resolved; + views[13] = 1; + view_curves_resolved = sqlite3_mprintf ("%scurves_resolved", prefix); + tables[14] = view_curves_resolved; + views[14] = 1; + view_surfaces_resolved = sqlite3_mprintf ("%ssurfaces_resolved", prefix); + tables[15] = view_surfaces_resolved; + views[15] = 1; + view_dangling_nodes = sqlite3_mprintf ("%sdangling_nodes", prefix); + tables[16] = view_dangling_nodes; + views[16] = 1; + view_dangling_edges = sqlite3_mprintf ("%sdangling_edges", prefix); + tables[17] = view_dangling_edges; + views[17] = 1; + view_edges_check_from_to = + sqlite3_mprintf ("%sedges_check_from_to", prefix); + tables[18] = view_edges_check_from_to; + views[18] = 1; + tables[19] = NULL; + p_view = views; + p_tbl = tables; + while (*p_tbl != NULL) + { + ok_table = check_topo_table (sqlite, *p_tbl, *p_view); + if (ok_table) + { + if (strcmp (*p_tbl, "topology_master") == 0) + create_master = 0; + else + { + spatialite_e + ("CreateTopologyTables() error: table '%s' already exists\n", + *p_tbl); + goto error; + } + } + p_tbl++; + p_view++; + } + +/* creating Topology tables */ + if (create_master) + { + if (!create_topo_master (sqlite)) + goto error; + } + if (!create_topo_nodes (sqlite, table_nodes, srid, dims)) + goto error; + if (!create_topo_edges (sqlite, table_edges, srid, dims)) + goto error; + if (!create_topo_faces (sqlite, table_faces)) + goto error; + if (!create_topo_faces_edges (sqlite, table_faces_edges, table_faces)) + goto error; + if (!create_topo_curves (sqlite, table_curves)) + goto error; + if (!create_topo_surfaces (sqlite, table_surfaces)) + goto error; + if (!create_check_node_codes (sqlite, view_check_node_codes, table_nodes)) + goto error; + if (!create_check_node_geoms (sqlite, view_check_node_geoms, table_nodes)) + goto error; + if (!create_check_edge_codes (sqlite, view_check_edge_codes, table_edges)) + goto error; + if (!create_check_edge_geoms (sqlite, view_check_edge_geoms, table_edges)) + goto error; + if (!create_check_edge_node_geoms + (sqlite, view_check_edge_node_geoms, table_edges, table_nodes)) + goto error; + if (!create_check_face_codes (sqlite, view_check_face_codes, table_faces)) + goto error; + if (!create_faces_resolved + (sqlite, view_faces_resolved, table_faces, table_faces_edges, + table_edges)) + goto error; + if (!create_curves_resolved + (sqlite, view_curves_resolved, table_curves, table_edges)) + goto error; + if (!create_surfaces_resolved + (sqlite, view_surfaces_resolved, table_surfaces, view_faces_resolved)) + goto error; + if (!create_dangling_nodes + (sqlite, view_dangling_nodes, table_nodes, table_edges)) + goto error; + if (!create_dangling_edges + (sqlite, view_dangling_edges, table_edges, table_faces_edges, + table_curves)) + goto error; + if (!create_check_edges_from_to + (sqlite, view_edges_check_from_to, table_edges, table_nodes)) + goto error; + if (!update_topo_master + (sqlite, table_nodes, table_edges, table_faces, table_faces_edges, + table_curves, table_surfaces, view_check_node_codes, + view_check_node_geoms, view_check_edge_codes, view_check_edge_geoms, + view_check_edge_node_geoms, view_check_face_codes, + view_faces_resolved, view_curves_resolved, view_surfaces_resolved, + view_dangling_nodes, view_dangling_edges, view_edges_check_from_to, + srid, dims)) + goto error; + updateSpatiaLiteHistory (sqlite, "*** TOPOLOGY ***", NULL, + "Topology tables successfully created"); + sqlite3_result_int (context, 1); + sqlite3_free (table_curves); + sqlite3_free (table_surfaces); + sqlite3_free (table_nodes); + sqlite3_free (table_edges); + sqlite3_free (table_faces); + sqlite3_free (table_faces_edges); + sqlite3_free (view_check_node_codes); + sqlite3_free (view_check_node_geoms); + sqlite3_free (view_check_edge_codes); + sqlite3_free (view_check_edge_geoms); + sqlite3_free (view_check_edge_node_geoms); + sqlite3_free (view_check_face_codes); + sqlite3_free (view_faces_resolved); + sqlite3_free (view_curves_resolved); + sqlite3_free (view_surfaces_resolved); + sqlite3_free (view_dangling_nodes); + sqlite3_free (view_dangling_edges); + sqlite3_free (view_edges_check_from_to); + return; + + error: + sqlite3_result_int (context, 0); + sqlite3_free (table_curves); + sqlite3_free (table_surfaces); + sqlite3_free (table_nodes); + sqlite3_free (table_edges); + sqlite3_free (table_faces); + sqlite3_free (table_faces_edges); + sqlite3_free (view_check_node_codes); + sqlite3_free (view_check_node_geoms); + sqlite3_free (view_check_edge_codes); + sqlite3_free (view_check_edge_geoms); + sqlite3_free (view_check_edge_node_geoms); + sqlite3_free (view_check_face_codes); + sqlite3_free (view_faces_resolved); + sqlite3_free (view_curves_resolved); + sqlite3_free (view_surfaces_resolved); + sqlite3_free (view_dangling_nodes); + sqlite3_free (view_dangling_edges); + sqlite3_free (view_edges_check_from_to); + return; +} + +static void +fnct_OffsetCurve (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ OffsetCurve(BLOBencoded geometry, radius, left-or-right-side) +/ +/ returns a new geometry representing the OFFSET-CURVE for current geometry +/ [a LINESTRING is expected] +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + double radius; + int int_value; + int left_right; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + radius = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + radius = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + left_right = sqlite3_value_int (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaOffsetCurve_r (data, geo, radius, 16, left_right); + else + result = gaiaOffsetCurve (geo, radius, 16, left_right); + if (!result) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_SingleSidedBuffer (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ SingleSidedBuffer(BLOBencoded geometry, radius, left-or-right-side) +/ +/ returns a new geometry representing the SingleSided BUFFER +/ for current geometry [a LINESTRING is expected] +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + double radius; + int int_value; + int left_right; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + radius = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + radius = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + left_right = sqlite3_value_int (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = + gaiaSingleSidedBuffer_r (data, geo, radius, 16, left_right); + else + result = gaiaSingleSidedBuffer (geo, radius, 16, left_right); + if (!result) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_HausdorffDistance (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ HausdorffDistance(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns the discrete Hausdorff distance between GEOM-1 and GEOM-2 +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + double dist; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo1 || !geo2) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaHausdorffDistance_r (data, geo1, geo2, &dist); + else + ret = gaiaHausdorffDistance (geo1, geo2, &dist); + if (!ret) + sqlite3_result_null (context); + sqlite3_result_double (context, dist); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_SharedPaths (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ SharedPaths(BLOBencoded geometry1, BLOBencoded geometry2) +/ +/ returns a new geometry representing common (shared) Edges +/ [two LINESTRINGs/MULTILINESTRINGs are expected] +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo1 == NULL || geo2 == NULL) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaSharedPaths_r (data, geo1, geo2); + else + result = gaiaSharedPaths (geo1, geo2); + if (!result) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo1->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_Covers (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Covers(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns: +/ 1 if GEOM-1 "spatially covers" GEOM-2 +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *blob1; + unsigned char *blob2; + int bytes1; + int bytes2; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + blob1 = (unsigned char *) sqlite3_value_blob (argv[0]); + bytes1 = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (blob1, bytes1); + blob2 = (unsigned char *) sqlite3_value_blob (argv[1]); + bytes2 = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (blob2, bytes2); + if (!geo1 || !geo2) + sqlite3_result_int (context, -1); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaGeomCollPreparedCovers (data, geo1, + blob1, bytes1, geo2, blob2, + bytes2); + else + ret = gaiaGeomCollCovers (geo1, geo2); + sqlite3_result_int (context, ret); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_CoveredBy (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CoveredBy(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns: +/ 1 if GEOM-1 is "spatially covered by" GEOM-2 +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *blob1; + unsigned char *blob2; + int bytes1; + int bytes2; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + blob1 = (unsigned char *) sqlite3_value_blob (argv[0]); + bytes1 = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (blob1, bytes1); + blob2 = (unsigned char *) sqlite3_value_blob (argv[1]); + bytes2 = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (blob2, bytes2); + if (!geo1 || !geo2) + sqlite3_result_int (context, -1); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + ret = gaiaGeomCollPreparedCoveredBy (data, + geo1, blob1, bytes1, geo2, + blob2, bytes2); + else + ret = gaiaGeomCollCoveredBy (geo1, geo2); + sqlite3_result_int (context, ret); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_LineInterpolatePoint (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ LineInterpolatePoint(BLOBencoded geometry1, double fraction) +/ +/ returns a new geometry representing a point interpolated along a line +/ [a LINESTRING is expected / fraction ranging from 0.0 to 1.0] +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int int_value; + double fraction; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + fraction = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + fraction = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaLineInterpolatePoint_r (data, geo, fraction); + else + result = gaiaLineInterpolatePoint (geo, fraction); + if (!result) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_LineInterpolateEquidistantPoints (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ LineInterpolateEquidistantPointS(BLOBencoded geometry1, double distance) +/ +/ returns a new geometry representing a point interpolated along a line +/ [a LINESTRING is expected / fraction ranging from 0.0 to 1.0] +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int int_value; + double distance; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + distance = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + distance = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = + gaiaLineInterpolateEquidistantPoints_r (data, geo, distance); + else + result = gaiaLineInterpolateEquidistantPoints (geo, distance); + if (!result) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_LineLocatePoint (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ LineLocatePoint(BLOBencoded geometry1, BLOBencoded geometry2) +/ +/ return a number (between 0.0 and 1.0) representing the location +/ of the closest point on LineString to the given Point, as a fraction +/ of total 2d line length +/ +/ - geom1 is expected to represent some LINESTRING +/ - geom2 is expected to represent some POINT +*/ + unsigned char *p_blob; + int n_bytes; + double fraction; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo1 == NULL || geo2 == NULL) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + fraction = gaiaLineLocatePoint_r (data, geo1, geo2); + else + fraction = gaiaLineLocatePoint (geo1, geo2); + if (fraction >= 0.0 && fraction <= 1.0) + sqlite3_result_double (context, fraction); + else + sqlite3_result_null (context); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_LineSubstring (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ LineSubstring(BLOBencoded geometry1, double start_fraction, double end_fraction) +/ +/ Return a Linestring being a substring of the input one starting and ending at +/ the given fractions of total 2d length [fractions ranging from 0.0 to 1.0] +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int int_value; + double fraction1; + double fraction2; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + fraction1 = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + fraction1 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + fraction2 = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + fraction2 = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaLineSubstring_r (data, geo, fraction1, fraction2); + else + result = gaiaLineSubstring (geo, fraction1, fraction2); + if (!result) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_ClosestPoint (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ClosestPoint(BLOBencoded geometry1, BLOBencoded geometry2) +/ +/ Returns the Point on geom1 that is closest to geom2 +/ NULL is returned for invalid arguments (or if distance is ZERO) +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo1 == NULL || geo2 == NULL) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaShortestLine_r (data, geo1, geo2); + else + result = gaiaShortestLine (geo1, geo2); + if (result == NULL) + sqlite3_result_null (context); + else if (result->FirstLinestring == NULL) + { + gaiaFreeGeomColl (result); + sqlite3_result_null (context); + } + else + { + /* builds the BLOB geometry to be returned */ + double x; + double y; + double z; + double m; + int len; + unsigned char *p_result = NULL; + gaiaGeomCollPtr pt = NULL; + gaiaLinestringPtr ln = result->FirstLinestring; + if (ln->DimensionModel == GAIA_XY_Z) + pt = gaiaAllocGeomCollXYZ (); + else if (ln->DimensionModel == GAIA_XY_M) + pt = gaiaAllocGeomCollXYM (); + else if (ln->DimensionModel == GAIA_XY_Z_M) + pt = gaiaAllocGeomCollXYZM (); + else + pt = gaiaAllocGeomColl (); + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, 0, &x, &y, &z); + gaiaAddPointToGeomCollXYZ (pt, x, y, z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, 0, &x, &y, &m); + gaiaAddPointToGeomCollXYM (pt, x, y, m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, 0, &x, &y, &z, &m); + gaiaAddPointToGeomCollXYZM (pt, x, y, z, m); + } + else + { + gaiaGetPoint (ln->Coords, 0, &x, &y); + gaiaAddPointToGeomColl (pt, x, y); + } + pt->Srid = geo1->Srid; + gaiaToSpatiaLiteBlobWkb (pt, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + gaiaFreeGeomColl (pt); + } + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_ShortestLine (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ShortestLine(BLOBencoded geometry1, BLOBencoded geometry2) +/ +/ Returns the shortest line between two geometries +/ NULL is returned for invalid arguments (or if distance is ZERO) +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo1 == NULL || geo2 == NULL) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaShortestLine_r (data, geo1, geo2); + else + result = gaiaShortestLine (geo1, geo2); + sqlite3_result_null (context); + if (!result) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo1->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_Snap (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Snap(BLOBencoded geometry1, BLOBencoded geometry2, double tolerance) +/ +/ Returns a new Geometry corresponding to geom1 snapped to geom2 +/ and using the given tolerance +/ NULL is returned for invalid arguments (or if distance is ZERO) +*/ + unsigned char *p_blob; + int n_bytes; + int int_value; + double tolerance; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + tolerance = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + tolerance = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo1 == NULL || geo2 == NULL) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaSnap_r (data, geo1, geo2, tolerance); + else + result = gaiaSnap (geo1, geo2, tolerance); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo1->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_LineMerge (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ LineMerge(BLOBencoded geometry) +/ +/ Assuming that Geometry represents a set of sparse Linestrings, +/ this function will attempt to reassemble a single line +/ (or a set of lines) +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaLineMerge_r (data, geo); + else + result = gaiaLineMerge (geo); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_UnaryUnion (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ UnaryUnion(BLOBencoded geometry) +/ +/ exactly like Union, but using a single Collection +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = gaiaUnaryUnion_r (data, geo); + else + result = gaiaUnaryUnion (geo); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_SquareGrid (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_SquareGrid(BLOBencoded geom, double size) +/ ST_SquareGrid(BLOBencoded geom, double size, boolean edges_only) +/ ST_SquareGrid(BLOBencoded geom, double size, boolean edges_only, BLOBencoded origin) +/ +/ Builds a regular grid (Square cells) covering the geom. +/ each cell has the edges's length as defined by the size argument +/ an arbitrary origin is supported (0,0 is assumed by default) +/ return NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int int_value; + double origin_x = 0.0; + double origin_y = 0.0; + double size; + int edges_only = 0; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr point = NULL; + gaiaGeomCollPtr result = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + size = int_value; + } + else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + { + size = sqlite3_value_double (argv[1]); + } + else + { + sqlite3_result_null (context); + return; + } + if (size <= 0.0) + { + /* negative side size */ + sqlite3_result_null (context); + return; + } + if (argc >= 3) + { + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + edges_only = sqlite3_value_int (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 4) + { + if (sqlite3_value_type (argv[3]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[3]); + n_bytes = sqlite3_value_bytes (argv[3]); + point = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!point) + { + sqlite3_result_null (context); + return; + } + if (point->FirstLinestring != NULL) + goto no_point; + if (point->FirstPolygon != NULL) + goto no_point; + if (point->FirstPoint != NULL) + { + if (point->FirstPoint == point->LastPoint) + { + origin_x = point->FirstPoint->X; + origin_y = point->FirstPoint->Y; + gaiaFreeGeomColl (point); + } + else + goto no_point; + } + else + goto no_point; + + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (geo->FirstPoint != NULL) + goto no_polygon; + if (geo->FirstLinestring != NULL) + goto no_polygon; + if (geo->FirstPolygon == NULL) + goto no_polygon; + if (data != NULL) + result = + gaiaSquareGrid_r (data, geo, origin_x, origin_y, size, + edges_only); + else + result = + gaiaSquareGrid (geo, origin_x, origin_y, size, edges_only); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); + return; + + no_point: + gaiaFreeGeomColl (point); + sqlite3_result_null (context); + return; + + no_polygon: + gaiaFreeGeomColl (geo); + sqlite3_result_null (context); + return; +} + +static void +fnct_TriangularGrid (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_TriangularGrid(BLOBencoded geom, double size) +/ ST_TriangularGrid(BLOBencoded geom, double size, boolean edges_only) +/ ST_TriangularGrid(BLOBencoded geom, double size, boolean edges_only, BLOBencoded origin) +/ +/ Builds a regular grid (Triangular cells) covering the geom. +/ each cell has the edge's length as defined by the size argument +/ an arbitrary origin is supported (0,0 is assumed by default) +/ return NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int int_value; + double origin_x = 0.0; + double origin_y = 0.0; + double size; + int edges_only = 0; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr point = NULL; + gaiaGeomCollPtr result = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + size = int_value; + } + else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + { + size = sqlite3_value_double (argv[1]); + } + else + { + sqlite3_result_null (context); + return; + } + if (size <= 0.0) + { + /* negative side size */ + sqlite3_result_null (context); + return; + } + if (argc >= 3) + { + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + edges_only = sqlite3_value_int (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 4) + { + if (sqlite3_value_type (argv[3]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[3]); + n_bytes = sqlite3_value_bytes (argv[3]); + point = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!point) + { + sqlite3_result_null (context); + return; + } + if (point->FirstLinestring != NULL) + goto no_point; + if (point->FirstPolygon != NULL) + goto no_point; + if (point->FirstPoint != NULL) + { + if (point->FirstPoint == point->LastPoint) + { + origin_x = point->FirstPoint->X; + origin_y = point->FirstPoint->Y; + gaiaFreeGeomColl (point); + } + else + goto no_point; + } + else + goto no_point; + + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (geo->FirstPoint != NULL) + goto no_polygon; + if (geo->FirstLinestring != NULL) + goto no_polygon; + if (geo->FirstPolygon == NULL) + goto no_polygon; + if (data != NULL) + result = + gaiaTriangularGrid_r (data, geo, origin_x, origin_y, size, + edges_only); + else + result = + gaiaTriangularGrid (geo, origin_x, origin_y, size, + edges_only); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); + return; + + no_point: + gaiaFreeGeomColl (point); + sqlite3_result_null (context); + return; + + no_polygon: + gaiaFreeGeomColl (geo); + sqlite3_result_null (context); + return; +} + +static void +fnct_HexagonalGrid (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_HexagonalGrid(BLOBencoded geom, double size) +/ ST_HexagonalGrid(BLOBencoded geom, double size, boolean edges_only) +/ ST_HexagonalGrid(BLOBencoded geom, double size, boolean edges_only, BLOBencoded origin) +/ +/ Builds a regular grid (Hexagonal cells) covering the geom. +/ each cell has the edges's length as defined by the size argument +/ an arbitrary origin is supported (0,0 is assumed by default) +/ return NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int int_value; + double origin_x = 0.0; + double origin_y = 0.0; + double size; + int edges_only = 0; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr point = NULL; + gaiaGeomCollPtr result = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + size = int_value; + } + else if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + { + size = sqlite3_value_double (argv[1]); + } + else + { + sqlite3_result_null (context); + return; + } + if (size <= 0.0) + { + /* negative side size */ + sqlite3_result_null (context); + return; + } + if (argc >= 3) + { + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + edges_only = sqlite3_value_int (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 4) + { + if (sqlite3_value_type (argv[3]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[3]); + n_bytes = sqlite3_value_bytes (argv[3]); + point = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!point) + { + sqlite3_result_null (context); + return; + } + if (point->FirstLinestring != NULL) + goto no_point; + if (point->FirstPolygon != NULL) + goto no_point; + if (point->FirstPoint != NULL) + { + if (point->FirstPoint == point->LastPoint) + { + origin_x = point->FirstPoint->X; + origin_y = point->FirstPoint->Y; + gaiaFreeGeomColl (point); + } + else + goto no_point; + } + else + goto no_point; + + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (geo->FirstPoint != NULL) + goto no_polygon; + if (geo->FirstLinestring != NULL) + goto no_polygon; + if (geo->FirstPolygon == NULL) + goto no_polygon; + if (data != NULL) + result = + gaiaHexagonalGrid_r (data, geo, origin_x, origin_y, size, + edges_only); + else + result = + gaiaHexagonalGrid (geo, origin_x, origin_y, size, edges_only); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); + return; + + no_point: + gaiaFreeGeomColl (point); + sqlite3_result_null (context); + return; + + no_polygon: + gaiaFreeGeomColl (geo); + sqlite3_result_null (context); + return; +} + +static void +fnct_LinesCutAtNodes (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ LinesCutAtNodes(BLOBencoded geometry1, BLOBencoded geometry2) +/ +/ Assuming that Geometry-1 represents a set of arbitray Linestrings, +/ and that Geometry-2 represents of arbitrary Points, this function +/ will then attempt to cut lines accordingly to given nodes. +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geom1 = NULL; + gaiaGeomCollPtr geom2 = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geom1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geom2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geom1 == NULL || geom2 == NULL) + { + if (geom1) + gaiaFreeGeomColl (geom1); + if (geom2) + gaiaFreeGeomColl (geom2); + sqlite3_result_null (context); + return; + } + result = gaiaLinesCutAtNodes (geom1, geom2); + if (result == NULL) + { + sqlite3_result_null (context); + } + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geom1->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + gaiaFreeGeomColl (geom1); + gaiaFreeGeomColl (geom2); +} + +static int +cmp_pt_coords (const void *p1, const void *p2) +{ +/* compares two nodes by ID [for QSORT] */ + gaiaPointPtr pt1 = *((gaiaPointPtr *) p1); + gaiaPointPtr pt2 = *((gaiaPointPtr *) p2); + if (pt1->X == pt2->X && pt1->Y == pt2->Y && pt1->Z == pt2->Z) + return 0; + if (pt1->X > pt2->X) + return 1; + if (pt1->X == pt2->X && pt1->Y > pt2->Y) + return 1; + if (pt1->X == pt2->X && pt1->Y == pt2->Y && pt1->Z > pt2->Z) + return 1; + return -1; +} + +static gaiaGeomCollPtr +auxPolygNodes (gaiaGeomCollPtr geom) +{ +/* attempting to identify Ring-Nodes */ + gaiaGeomCollPtr result = NULL; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + gaiaPointPtr pt; + gaiaPointPtr prev_pt; + gaiaPointPtr *sorted = NULL; + int count = 0; + int iv; + int ib; + double x; + double y; + double z; + double m; + +/* inserting all Points into a Dynamic Line */ + gaiaDynamicLinePtr dyn = gaiaAllocDynamicLine (); + pg = geom->FirstPolygon; + while (pg) + { + rng = pg->Exterior; + /* CAVEAT: first point needs to be skipped (closed ring) */ + for (iv = 1; iv < rng->Points; iv++) + { + /* exterior ring */ + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + gaiaAppendPointZToDynamicLine (dyn, x, y, z); + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + gaiaAppendPointMToDynamicLine (dyn, x, y, m); + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + gaiaAppendPointZMToDynamicLine (dyn, x, y, z, m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + gaiaAppendPointToDynamicLine (dyn, x, y); + } + } + + for (ib = 0; ib < pg->NumInteriors; ib++) + { + rng = pg->Interiors + ib; + /* CAVEAT: first point needs to be skipped (closed ring) */ + for (iv = 1; iv < rng->Points; iv++) + { + /* interior ring */ + if (geom->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + gaiaAppendPointZToDynamicLine (dyn, x, y, z); + } + else if (geom->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + gaiaAppendPointMToDynamicLine (dyn, x, y, m); + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + gaiaAppendPointZMToDynamicLine (dyn, x, y, z, m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + gaiaAppendPointToDynamicLine (dyn, x, y); + } + } + } + pg = pg->Next; + } + + pt = dyn->First; + while (pt) + { + /* counting how many points */ + count++; + pt = pt->Next; + } + if (count == 0) + { + gaiaFreeDynamicLine (dyn); + return NULL; + } + +/* allocating and initializing an array of pointers */ + sorted = malloc (sizeof (gaiaPointPtr) * count); + iv = 0; + pt = dyn->First; + while (pt) + { + *(sorted + iv++) = pt; + pt = pt->Next; + } + +/* sorting points by coords */ + qsort (sorted, count, sizeof (gaiaPointPtr), cmp_pt_coords); + + if (geom->DimensionModel == GAIA_XY_Z) + result = gaiaAllocGeomCollXYZ (); + else if (geom->DimensionModel == GAIA_XY_M) + result = gaiaAllocGeomCollXYM (); + else if (geom->DimensionModel == GAIA_XY_Z_M) + result = gaiaAllocGeomCollXYZM (); + else + result = gaiaAllocGeomColl (); + result->Srid = geom->Srid; + +/* identifying nodes */ + prev_pt = NULL; + for (iv = 0; iv < count; iv++) + { + pt = *(sorted + iv); + if (prev_pt != NULL) + { + if (prev_pt->X == pt->X && prev_pt->Y == pt->Y + && prev_pt->Z == pt->Z) + { + if (result->LastPoint != NULL) + { + if (result->LastPoint->X == pt->X + && result->LastPoint->Y == pt->Y + && result->LastPoint->Z == pt->Z) + continue; + } + /* Node found */ + if (result->DimensionModel == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (result, pt->X, pt->Y, + pt->Z); + else if (result->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (result, pt->X, pt->Y, + pt->M); + else if (result->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (result, pt->X, + pt->Y, pt->Z, pt->M); + else + gaiaAddPointToGeomColl (result, pt->X, pt->Y); + } + } + prev_pt = pt; + } + + if (result->FirstPoint == NULL) + { + gaiaFreeGeomColl (result); + result = NULL; + } + free (sorted); + gaiaFreeDynamicLine (dyn); + return result; +} + +static void +fnct_RingsCutAtNodes (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ RingsCutAtNodes(BLOBencoded geometry) +/ +/ This function will attempt to return a collection of lines +/ representing Polygon/Rings: the input geometry is expected +/ to be a Polygon or MultiPolygon. +/ Each Ring will be cut accordingly to any identified "node" +/ i.e. self-intersections or intersections between two Rings. +/ +/ NULL is returned for invalid arguments +*/ + int pts = 0; + int lns = 0; + int pgs = 0; + unsigned char *p_blob; + int n_bytes; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaGeomCollPtr geom = NULL; + gaiaGeomCollPtr geom1 = NULL; + gaiaGeomCollPtr geom2 = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geom == NULL) + { + sqlite3_result_null (context); + return; + } + +/* checking if Geometry is a Polygon or MultiPolyhon */ + pt = geom->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pts > 0 || lns > 0 || pgs == 0) + { + /* not Polygon/MultiPolygon */ + gaiaFreeGeomColl (geom); + sqlite3_result_null (context); + return; + } + +/* transforming Rings into Linestrings */ + geom1 = gaiaLinearize (geom, 1); + if (geom1 == NULL) + { + gaiaFreeGeomColl (geom); + sqlite3_result_null (context); + return; + } + +/* identifying the Nodes */ + geom2 = auxPolygNodes (geom); + if (geom2 == NULL) + { + /* there is no need to cut any Ring [no Nodes] */ + int len; + unsigned char *p_result = NULL; + geom1->Srid = geom->Srid; + gaiaToSpatiaLiteBlobWkb (geom1, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (geom); + gaiaFreeGeomColl (geom1); + return; + } + +/* attempting to cut Rings */ + result = gaiaLinesCutAtNodes (geom1, geom2); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geom->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + gaiaFreeGeomColl (geom); + gaiaFreeGeomColl (geom1); + gaiaFreeGeomColl (geom2); +} + +#ifdef GEOS_ADVANCED /* GEOS advanced features - 3.4.0 */ + +static void +fnct_DelaunayTriangulation (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ DelaunayTriangulation(BLOBencoded geometry) +/ DelaunayTriangulation(BLOBencoded geometry, boolean onlyEdges) +/ DelaunayTriangulation(BLOBencoded geometry, boolean onlyEdges, double tolerance) +/ +/ Attempts to build a Delaunay Triangulation using all points/vertices +/ found in the input geometry. +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + int int_value; + double tolerance = 0.0; + int only_edges = 0; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (argc >= 2) + { + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + only_edges = sqlite3_value_int (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 3) + { + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + tolerance = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + tolerance = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = + gaiaDelaunayTriangulation_r (data, geo, tolerance, + only_edges); + else + result = gaiaDelaunayTriangulation (geo, tolerance, only_edges); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_VoronojDiagram (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ VoronojDiagram(BLOBencoded geometry) +/ VoronojDiagram(BLOBencoded geometry, boolean onlyEdges) +/ VoronojDiagram(BLOBencoded geometry, boolean onlyEdges, +/ double extra_frame_size) +/ VoronojDiagram(BLOBencoded geometry, boolean onlyEdges, +/ double extra_frame_size, double tolerance) +/ +/ Attempts to build a Voronoj Diagram using all points/vertices +/ found in the input geometry. +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + int int_value; + double tolerance = 0.0; + double extra_frame_size = -1.0; + int only_edges = 0; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (argc >= 2) + { + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + only_edges = sqlite3_value_int (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + } + if (argc >= 3) + { + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + extra_frame_size = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[2]); + extra_frame_size = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 4) + { + if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + tolerance = sqlite3_value_double (argv[3]); + else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[3]); + tolerance = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = + gaiaVoronojDiagram_r (data, geo, extra_frame_size, tolerance, + only_edges); + else + result = + gaiaVoronojDiagram (geo, extra_frame_size, tolerance, + only_edges); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_ConcaveHull (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ConcaveHull(BLOBencoded geometry) +/ ConcaveHull(BLOBencoded geometry, double factor) +/ ConcaveHull(BLOBencoded geometry, double factor, boolean allow_holes) +/ ConcaveHull(BLOBencoded geometry, double factor, +/ boolean allow_holes, double tolerance) +/ +/ Attempts to build a ConcaveHull using all points/vertices +/ found in the input geometry. +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + int int_value; + double tolerance = 0.0; + double factor = 3.0; + int allow_holes = 0; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (argc >= 2) + { + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + factor = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + factor = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + } + if (argc >= 3) + { + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + allow_holes = sqlite3_value_int (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 4) + { + if (sqlite3_value_type (argv[3]) == SQLITE_FLOAT) + tolerance = sqlite3_value_double (argv[3]); + else if (sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[3]); + tolerance = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + void *data = sqlite3_user_data (context); + if (data != NULL) + result = + gaiaConcaveHull_r (data, geo, factor, tolerance, allow_holes); + else + result = gaiaConcaveHull (geo, factor, tolerance, allow_holes); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +#endif /* end GEOS advanced features */ + +#ifdef ENABLE_LWGEOM /* enabling LWGEOM support */ + +static void +fnct_LWGEOM_GetLastWarningMsg (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ LWGEOM_GetLastWarningMsg() +/ +/ return the most recent LWGEOM warning message (if any) +/ return NULL on any other case +*/ + const char *msg; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + msg = gaiaGetLwGeomWarningMsg (); + if (msg == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, msg, strlen (msg), SQLITE_STATIC); +} + +static void +fnct_LWGEOM_GetLastErrorMsg (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ LWGEOM_GetLastErrorMsg() +/ +/ return the most recent LWGEOM error message (if any) +/ return NULL on any other case +*/ + const char *msg; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + msg = gaiaGetLwGeomErrorMsg (); + if (msg == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, msg, strlen (msg), SQLITE_STATIC); +} + +static void +fnct_MakeValid (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MakeValid(BLOBencoded geometry) +/ +/ Attempts to make an invalid geometry valid without loosing vertices. +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + result = gaiaMakeValid (geo); + if (result == NULL) + { + char *msg; + const char *lw_err = gaiaGetLwGeomErrorMsg (); + if (lw_err) + msg = sqlite3_mprintf + ("MakeValid error - LWGEOM reports: %s\n", lw_err); + else + msg = sqlite3_mprintf + ("MakeValid error - LWGEOM reports: Unknown Reason\n"); + sqlite3_result_error (context, msg, strlen (msg)); + sqlite3_free (msg); + } + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_MakeValidDiscarded (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ MakeValidDiscarded(BLOBencoded geometry) +/ +/ Strictly related to MakeValid(); useful to collect any offending item +/ discarded during the validation process. +/ NULL is returned for invalid arguments (or if no discarded items are found) +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + result = gaiaMakeValidDiscarded (geo); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_Segmentize (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Segmentize(BLOBencoded geometry, double dist) +/ +/ Ensure every segment is at most 'dist' long +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + int int_value; + double dist; + gaiaGeomCollPtr geo = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + dist = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + dist = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geo == NULL) + sqlite3_result_null (context); + else + { + result = gaiaSegmentize (geo, dist); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = geo->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (geo); +} + +static void +fnct_Split (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Split(BLOBencoded input, BLOBencoded blade) +/ +/ Returns a collection of geometries resulting by splitting a geometry +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr input = NULL; + gaiaGeomCollPtr blade = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + input = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (input == NULL) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + blade = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (blade == NULL) + { + gaiaFreeGeomColl (input); + sqlite3_result_null (context); + return; + } + else + { + result = gaiaSplit (input, blade); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = input->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (input); + gaiaFreeGeomColl (blade); +} + +static void +fnct_SplitLeft (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ SplitLeft(BLOBencoded input, BLOBencoded blade) +/ +/ Returns a collection of geometries resulting by splitting a geometry [left half] +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr input = NULL; + gaiaGeomCollPtr blade = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + input = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (input == NULL) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + blade = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (blade == NULL) + { + gaiaFreeGeomColl (input); + sqlite3_result_null (context); + return; + } + else + { + result = gaiaSplitLeft (input, blade); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = input->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (input); + gaiaFreeGeomColl (blade); +} + +static void +fnct_SplitRight (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ SplitRight(BLOBencoded input, BLOBencoded blade) +/ +/ Returns a collection of geometries resulting by splitting a geometry [right half] +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr input = NULL; + gaiaGeomCollPtr blade = NULL; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + input = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (input == NULL) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + blade = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (blade == NULL) + { + gaiaFreeGeomColl (input); + sqlite3_result_null (context); + return; + } + else + { + result = gaiaSplitRight (input, blade); + if (result == NULL) + sqlite3_result_null (context); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + result->Srid = input->Srid; + gaiaToSpatiaLiteBlobWkb (result, &p_result, &len); + sqlite3_result_blob (context, p_result, len, free); + gaiaFreeGeomColl (result); + } + } + gaiaFreeGeomColl (input); + gaiaFreeGeomColl (blade); +} + +static int +getXYSinglePoint (gaiaGeomCollPtr geom, double *x, double *y) +{ +/* check if this geometry is a simple Point (returning 2D coords) */ + double z; + double m; + return getXYZMSinglePoint (geom, x, y, &z, &m); +} + +static void +fnct_Azimuth (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Azimuth(BLOBencoded pointA, BLOBencoded pointB) +/ +/ Returns the angle in radians from the horizontal of the vector +/ defined by pointA and pointB. +/ Angle is computed clockwise from down-to-up: on the clock: +/ 12=0; 3=PI/2; 6=PI; 9=3PI/2. +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geom; + double x1; + double y1; + double x2; + double y2; + double a; + double b; + double rf; + double azimuth; + int srid; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + +/* retrieving and validating the first point */ + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geom == NULL) + { + sqlite3_result_null (context); + return; + } + if (!getXYSinglePoint (geom, &x1, &y1)) + { + gaiaFreeGeomColl (geom); + sqlite3_result_null (context); + return; + } + srid = geom->Srid; + gaiaFreeGeomColl (geom); + +/* retrieving and validating the second point */ + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geom == NULL) + { + sqlite3_result_null (context); + return; + } + if (!getXYSinglePoint (geom, &x2, &y2)) + { + gaiaFreeGeomColl (geom); + sqlite3_result_null (context); + return; + } + gaiaFreeGeomColl (geom); + + if (getEllipsoidParams (sqlite, srid, &a, &b, &rf)) + { + if (gaiaEllipsoidAzimuth (x1, y1, x2, y2, a, b, &azimuth)) + sqlite3_result_double (context, azimuth); + else + sqlite3_result_null (context); + return; + } + + if (gaiaAzimuth (x1, y1, x2, y2, &azimuth)) + sqlite3_result_double (context, azimuth); + else + sqlite3_result_null (context); +} + +static void +fnct_Project (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ Project(BLOBencoded point, distance Double, bearing Double) +/ +/ Returns a new Point projected from a start point given a +/ distance and a bearing. +/ - Point is expected to be Long/Lat +/ - Distance is in meters +/ - Bearing is in radians; on the clock: +/ 12=0; 3=PI/2; 6=PI; 9=3PI/2. +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geom; + double x1; + double y1; + double x2; + double y2; + int ival; + double distance; + double azimuth; + double a; + double b; + double rf; + int srid; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + distance = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[1]); + distance = ival; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_FLOAT) + azimuth = sqlite3_value_double (argv[2]); + else if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + ival = sqlite3_value_int (argv[2]); + azimuth = ival; + } + else + { + sqlite3_result_null (context); + return; + } + +/* retrieving and validating the start point */ + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geom == NULL) + { + sqlite3_result_null (context); + return; + } + if (!getXYSinglePoint (geom, &x1, &y1)) + { + gaiaFreeGeomColl (geom); + sqlite3_result_null (context); + return; + } + srid = geom->Srid; + gaiaFreeGeomColl (geom); + if (!getEllipsoidParams (sqlite, srid, &a, &b, &rf)) + { + sqlite3_result_null (context); + return; + } + if (distance == 0.0) + { + /* returning the Start Point */ + gaiaMakePoint (x1, y1, srid, &p_blob, &n_bytes); + if (!p_blob) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_blob, n_bytes, free); + return; + } + + if (gaiaProjectedPoint (x1, y1, a, b, distance, azimuth, &x2, &y2)) + { + gaiaMakePoint (x2, y2, srid, &p_blob, &n_bytes); + if (!p_blob) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, p_blob, n_bytes, free); + } + else + sqlite3_result_null (context); +} + +static void +fnct_GeoHash (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ GeoHash(BLOBencoded geom) +/ GeoHash(BLOBencoded geom, Integer precision) +/ +/ Returns a GeoHash representation for input geometry +/ (expected to be in longitude/latitude coords) +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geom; + int precision = 0; + char *geo_hash; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (argc == 2) + { + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + precision = sqlite3_value_int (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + } + + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geom == NULL) + { + sqlite3_result_null (context); + return; + } + geo_hash = gaiaGeoHash (geom, precision); + if (geo_hash != NULL) + { + int len = strlen (geo_hash); + sqlite3_result_text (context, geo_hash, len, free); + } + else + sqlite3_result_null (context); + gaiaFreeGeomColl (geom); +} + +static char * +get_srs_by_srid (sqlite3 * sqlite, int srid, int longsrs) +{ +/* retrieves the short- or long- srs reference for the given srid */ + char sql[1024]; + int ret; + const char *name; + int i; + char **results; + int rows; + int columns; + int len; + char *srs = NULL; + + if (longsrs) + sprintf (sql, + "SELECT 'urn:ogc:def:crs:' || auth_name || '::' || auth_srid " + "FROM spatial_ref_sys WHERE srid = %d", srid); + else + sprintf (sql, "SELECT auth_name || ':' || auth_srid " + "FROM spatial_ref_sys WHERE srid = %d", srid); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return NULL; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + name = results[(i * columns) + 0]; + len = strlen (name); + srs = malloc (len + 1); + strcpy (srs, name); + } + } + sqlite3_free_table (results); + return srs; +} + +static void +fnct_AsX3D (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ AsX3D(BLOBencoded geom) +/ AsX3D(BLOBencoded geom, Integer precision) +/ AsX3D(BLOBencoded geom, Integer precision, Integer options) +/ AsX3D(BLOBencoded geom, Integer precision, Integer options, Text refid) +/ +/ Returns an X3D representation for input geometry +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geom; + int precision = 15; + int options = 0; + const char *refid = ""; + char *srs = NULL; + char *x3d; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (argc >= 2) + { + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + precision = sqlite3_value_int (argv[1]); + else + { + sqlite3_result_null (context); + return; + } + } + if (argc >= 3) + { + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + options = sqlite3_value_int (argv[2]); + else + { + sqlite3_result_null (context); + return; + } + } + if (argc == 4) + { + if (sqlite3_value_type (argv[3]) == SQLITE_TEXT) + refid = (const char *) sqlite3_value_text (argv[3]); + else + { + sqlite3_result_null (context); + return; + } + } + + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (geom == NULL) + { + sqlite3_result_null (context); + return; + } + if (geom->Srid > 0) + { + int longshort = 0; + if (options & 1) + longshort = 1; + srs = get_srs_by_srid (sqlite, geom->Srid, longshort); + } + x3d = gaiaAsX3D (geom, srs, precision, options, refid); + if (x3d != NULL) + { + int len = strlen (x3d); + sqlite3_result_text (context, x3d, len, free); + } + else + sqlite3_result_null (context); + gaiaFreeGeomColl (geom); + if (srs) + free (srs); +} + +static void +fnct_3DDistance (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ 3DDistance(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns the 3D distance between GEOM-1 and GEOM-2 +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + double dist; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo1 || !geo2) + sqlite3_result_null (context); + else + { + ret = gaia3DDistance (geo1, geo2, &dist); + if (!ret) + sqlite3_result_null (context); + else + sqlite3_result_double (context, dist); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_MaxDistance (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MaxDistance(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns the max 2D distance between GEOM-1 and GEOM-2 +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + double dist; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo1 || !geo2) + sqlite3_result_null (context); + else + { + ret = gaiaMaxDistance (geo1, geo2, &dist); + if (!ret) + sqlite3_result_null (context); + else + sqlite3_result_double (context, dist); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_3DMaxDistance (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ 3DMaxDistance(BLOBencoded geom1, BLOBencoded geom2) +/ +/ returns the max 3D distance between GEOM-1 and GEOM-2 +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geo1 = NULL; + gaiaGeomCollPtr geo2 = NULL; + double dist; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo1 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + p_blob = (unsigned char *) sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + geo2 = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo1 || !geo2) + sqlite3_result_null (context); + else + { + ret = gaia3DMaxDistance (geo1, geo2, &dist); + if (!ret) + sqlite3_result_null (context); + else + sqlite3_result_double (context, dist); + } + gaiaFreeGeomColl (geo1); + gaiaFreeGeomColl (geo2); +} + +static void +fnct_Node (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ST_Node(BLOBencoded linestring(s)) +/ +/ Returns a new new (Multi)Linestring by re-noding the input linestring(s) +/ NULL is returned for invalid arguments +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr input; + gaiaGeomCollPtr result; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + +/* retrieving the input geometry */ + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + input = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (input == NULL) + { + sqlite3_result_null (context); + return; + } + + result = gaiaNodeLines (input); + if (result != NULL) + { + gaiaToSpatiaLiteBlobWkb (result, &p_blob, &n_bytes); + sqlite3_result_blob (context, p_blob, n_bytes, free); + gaiaFreeGeomColl (result); + } + else + sqlite3_result_null (context); + gaiaFreeGeomColl (input); +} + +static int +check_all_linestrings (gaiaGeomCollPtr in) +{ +/* check id this is a collection of Linestrings */ + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + + if (in == NULL) + return 0; +/* checking if we have any POINT */ + pt = in->FirstPoint; + while (pt) + { + pts++; + pt = pt->Next; + } + if (pts > 0) + return 0; +/* checking if we have any POLYGON */ + pg = in->FirstPolygon; + while (pg) + { + pgs++; + pg = pg->Next; + } + if (pgs > 0) + return 0; +/* checking if we have any LINESTRING */ + ln = in->FirstLinestring; + while (ln) + { + lns++; + ln = ln->Next; + } + if (lns == 0) + return 0; + return 1; +} + +static gaiaGeomCollPtr +get_nodes (gaiaGeomCollPtr in) +{ +/* extracts all Nodes (Linestring extermities) */ + int iv; + double x; + double y; + double m; + double z; + gaiaLinestringPtr ln; + gaiaGeomCollPtr out; + + if (in == NULL) + return NULL; + + if (in->DimensionModel == GAIA_XY_M) + out = gaiaAllocGeomCollXYM (); + else if (in->DimensionModel == GAIA_XY_Z) + out = gaiaAllocGeomCollXYZ (); + else if (in->DimensionModel == GAIA_XY_Z_M) + out = gaiaAllocGeomCollXYZM (); + else + out = gaiaAllocGeomColl (); + out->Srid = in->Srid; + + ln = in->FirstLinestring; + while (ln) + { + /* saving the extreme points - Start */ + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, 0, &x, &y, &z); + gaiaAddPointToGeomCollXYZ (out, x, y, z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, 0, &x, &y, &m); + gaiaAddPointToGeomCollXYM (out, x, y, m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, 0, &x, &y, &z, &m); + gaiaAddPointToGeomCollXYZM (out, x, y, z, m); + } + else + { + gaiaGetPoint (ln->Coords, 0, &x, &y); + gaiaAddPointToGeomColl (out, x, y); + } + /* saving the extreme points - End */ + iv = ln->Points - 1; + if (ln->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (ln->Coords, iv, &x, &y, &z); + gaiaAddPointToGeomCollXYZ (out, x, y, z); + } + else if (ln->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (ln->Coords, iv, &x, &y, &m); + gaiaAddPointToGeomCollXYM (out, x, y, m); + } + else if (ln->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (ln->Coords, iv, &x, &y, &z, &m); + gaiaAddPointToGeomCollXYZM (out, x, y, z, m); + } + else + { + gaiaGetPoint (ln->Coords, iv, &x, &y); + gaiaAddPointToGeomColl (out, x, y); + } + ln = ln->Next; + } + + return out; +} + +static int +point_is_defined (gaiaPointPtr in, gaiaGeomCollPtr geom) +{ +/* checking if a Point is already defined */ + gaiaPointPtr pt = geom->FirstPoint; + while (pt) + { + if (geom->DimensionModel == GAIA_XY_Z) + { + if (pt->X == in->X && pt->Y == in->Y && pt->Z == in->Z) + return 1; + } + else if (geom->DimensionModel == GAIA_XY_M) + { + if (pt->X == in->X && pt->Y == in->Y && pt->M == in->M) + return 1; + } + else if (geom->DimensionModel == GAIA_XY_Z_M) + { + if (pt->X == in->X && pt->Y == in->Y && pt->Z == in->Z + && pt->M == in->M) + return 1; + } + else + { + if (pt->X == in->X && pt->Y == in->Y) + return 1; + } + pt = pt->Next; + } + return 0; +} + +static gaiaGeomCollPtr +get_self_intersections (gaiaGeomCollPtr in_old, gaiaGeomCollPtr in_new) +{ +/* extracting the self-intersection points */ + gaiaPointPtr pt; + gaiaGeomCollPtr out; + + if (in_old->DimensionModel == GAIA_XY_M) + out = gaiaAllocGeomCollXYM (); + else if (in_old->DimensionModel == GAIA_XY_Z) + out = gaiaAllocGeomCollXYZ (); + else if (in_old->DimensionModel == GAIA_XY_Z_M) + out = gaiaAllocGeomCollXYZM (); + else + out = gaiaAllocGeomColl (); + out->Srid = in_old->Srid; + + pt = in_new->FirstPoint; + while (pt) + { + int ok1 = point_is_defined (pt, in_old); + int ok2 = point_is_defined (pt, out); + if (!ok1 && !ok2) + { + /* inserting a Point into the result collection */ + if (out->DimensionModel == GAIA_XY_Z) + gaiaAddPointToGeomCollXYZ (out, pt->X, pt->Y, pt->Z); + else if (out->DimensionModel == GAIA_XY_M) + gaiaAddPointToGeomCollXYM (out, pt->X, pt->Y, pt->M); + else if (out->DimensionModel == GAIA_XY_Z_M) + gaiaAddPointToGeomCollXYZM (out, pt->X, pt->Y, pt->Z, + pt->M); + else + gaiaAddPointToGeomColl (out, pt->X, pt->Y); + } + pt = pt->Next; + } + + if (out->FirstPoint == NULL) + { + /* no self-intersections were found */ + gaiaFreeGeomColl (out); + return NULL; + } + + return out; +} + +static void +fnct_SelfIntersections (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ ST_SelfIntersections(BLOBencoded linestring(s)) +/ +/ Returns a MultiPoint Geometry representing any self-intersection +/ found within the input geometry [linestring(s)] +/ NULL is returned for invalid arguments, or when no self-intersections +/ were found +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr input; + gaiaGeomCollPtr noded; + gaiaGeomCollPtr result; + gaiaGeomCollPtr nodes_in; + gaiaGeomCollPtr nodes_out; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + +/* retrieving the input geometry */ + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + input = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (input == NULL) + { + sqlite3_result_null (context); + return; + } + +/* checking the input (Linestrings only) */ + if (!check_all_linestrings (input)) + { + gaiaFreeGeomColl (input); + sqlite3_result_null (context); + return; + } +/* extracting all input nodes */ + nodes_in = get_nodes (input); + + noded = gaiaNodeLines (input); + gaiaFreeGeomColl (input); +/* extracting all output nodes */ + nodes_out = get_nodes (noded); + gaiaFreeGeomColl (noded); + +/* identifying the intersections */ + result = get_self_intersections (nodes_in, nodes_out); + gaiaFreeGeomColl (nodes_in); + gaiaFreeGeomColl (nodes_out); + if (result != NULL) + { + result->DeclaredType = GAIA_MULTIPOINT; + gaiaToSpatiaLiteBlobWkb (result, &p_blob, &n_bytes); + sqlite3_result_blob (context, p_blob, n_bytes, free); + gaiaFreeGeomColl (result); + } + else + sqlite3_result_null (context); +} + +#endif /* end LWGEOM support */ + +#endif /* end including GEOS */ + +static int +text2double (const unsigned char *str, double *val) +{ +/* checks for a valid number, eventually returning a DOUBLE */ + int err = 0; + int sign = 0; + int decimal = 0; + int exp = 0; + int expsign = 0; + const unsigned char *p = str; + while (*p != '\0') + { + switch (*p) + { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + break; + case '-': + case '+': + if (!exp) + sign++; + else + expsign++; + case '.': + decimal++; + break; + case 'e': + case 'E': + exp++; + break; + default: + err = 1; + break; + }; + p++; + } + if (sign > 1 || expsign > 1 || decimal > 1 || (exp == 0 && expsign > 0)) + err = 1; + if (err) + return 0; + *val = atof ((const char *) str); + return 1; +} + +static void +fnct_CastToInteger (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CastToInteger(generic value) +/ +/ returns an INTEGER value [if conversion is possible] +/ or NULL in any other case +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + sqlite3_int64 val = sqlite3_value_int64 (argv[0]); + sqlite3_result_int64 (context, val); + return; + } + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + sqlite3_int64 val; + double dval = sqlite3_value_double (argv[0]); + double diff = dval - floor (dval); + val = (sqlite3_int64) sqlite3_value_double (argv[0]); + if (diff >= 0.5) + val++; + sqlite3_result_int64 (context, val); + return; + } + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + { + const unsigned char *txt = sqlite3_value_text (argv[0]); + double dval; + if (text2double (txt, &dval)) + { + sqlite3_int64 val; + double dval = sqlite3_value_double (argv[0]); + double diff = dval - floor (dval); + val = (sqlite3_int64) sqlite3_value_double (argv[0]); + if (diff >= 0.5) + val++; + sqlite3_result_int64 (context, val); + return; + } + } + sqlite3_result_null (context); +} + +static void +fnct_CastToDouble (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CastToDouble(generic value) +/ +/ returns a DOUBLE value [if conversion is possible] +/ or NULL in any other case +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + double val = (double) sqlite3_value_int64 (argv[0]); + sqlite3_result_double (context, val); + return; + } + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + double val = sqlite3_value_double (argv[0]); + sqlite3_result_double (context, val); + return; + } + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + { + const unsigned char *txt = sqlite3_value_text (argv[0]); + double val; + if (text2double (txt, &val)) + { + sqlite3_result_double (context, val); + return; + } + } + sqlite3_result_null (context); +} + +static void +fnct_CastToText (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CastToText(generic value) +/ CastToText(generic value, Integer left-aligned-length) +/ +/ returns a TEXT value [if conversion is possible] +/ or NULL in any other case +*/ + char *txt; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + char format[32]; + const char *fmt = FRMT64; + sqlite3_int64 val; + if (argc == 2) + { + int length; + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + length = sqlite3_value_int (argv[1]); + if (length > 0) + { + sprintf (format, "%%0%d" FRMT64_WO_PCT, length); + fmt = format; + } + } + val = sqlite3_value_int64 (argv[0]); + txt = sqlite3_mprintf (fmt, val); + sqlite3_result_text (context, txt, strlen (txt), sqlite3_free); + return; + } + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + int i; + int len; + double val = sqlite3_value_double (argv[0]); + char format[32]; + const char *fmt = "%1.18f"; + if (argc == 2) + { + int length; + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + length = sqlite3_value_int (argv[1]); + if (length > 0) + { + sprintf (format, "%%0%d.18f", length + 19); + fmt = format; + } + } + txt = sqlite3_mprintf (fmt, val); + len = strlen (txt); + for (i = len - 1; i > 0; i--) + { + /* suppressing meaningless trailing zeroes */ + if (txt[i] >= '1' && txt[i] <= '9') + break; + if (txt[i] == '.') + { + txt[i + 1] = '0'; + break; + } + if (txt[i] == '0') + txt[i] = '\0'; + } + sqlite3_result_text (context, txt, strlen (txt), sqlite3_free); + return; + } + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + { + int n_bytes; + txt = (char *) sqlite3_value_text (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + sqlite3_result_text (context, txt, n_bytes, SQLITE_TRANSIENT); + return; + } + sqlite3_result_null (context); +} + +static int +parseHexByte (unsigned char hi, unsigned char lo, unsigned char *val) +{ +/* converting a byte for its Hex representation */ + unsigned char x; + switch (hi) + { + case '0': + x = 0; + break; + case '1': + x = 16; + break; + case '2': + x = 16 * 2; + break; + case '3': + x = 16 * 3; + break; + case '4': + x = 16 * 4; + break; + case '5': + x = 16 * 5; + break; + case '6': + x = 16 * 6; + break; + case '7': + x = 16 * 7; + break; + case '8': + x = 16 * 8; + break; + case '9': + x = 16 * 9; + break; + case 'a': + case 'A': + x = 16 * 10; + break; + case 'b': + case 'B': + x = 16 * 11; + break; + case 'c': + case 'C': + x = 16 * 12; + break; + case 'd': + case 'D': + x = 16 * 13; + break; + case 'e': + case 'E': + x = 16 * 14; + break; + case 'f': + case 'F': + x = 16 * 15; + break; + default: + return 0; + }; + switch (lo) + { + case '0': + x += 0; + break; + case '1': + x += 1; + break; + case '2': + x += 2; + break; + case '3': + x += 3; + break; + case '4': + x += 4; + break; + case '5': + x += 5; + break; + case '6': + x += 6; + break; + case '7': + x += 7; + break; + case '8': + x += 8; + break; + case '9': + x += 9; + break; + case 'a': + case 'A': + x += 10; + break; + case 'b': + case 'B': + x += 11; + break; + case 'c': + case 'C': + x += 12; + break; + case 'd': + case 'D': + x += 13; + break; + case 'e': + case 'E': + x += 14; + break; + case 'f': + case 'F': + x += 15; + break; + default: + return 0; + }; + *val = x; + return 1; +} + +static int +parseHexString (const unsigned char *in, int in_len, unsigned char **out, + int *out_len) +{ +/* parsing an Hexadecimal string */ + unsigned char *buf; + unsigned char *p_out; + unsigned char byteval; + int i; + int len; + *out = NULL; + *out_len = 0; + if (in == NULL) + return 0; + len = in_len / 2; + if (len * 2 != in_len) /* # digits is an odd number */ + return 0; + buf = malloc (len); + p_out = buf; + for (i = 0; i < in_len; i += 2) + { + if (!parseHexByte (in[i], in[i + 1], &byteval)) + goto error; + *p_out++ = byteval; + } + *out = buf; + *out_len = len; + return 1; + error: + free (buf); + return 0; +} + +static void +fnct_CastToBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CastToBlob(generic value) +/ or +/ CastToBlob(generic value, boolen hex_input) +/ +/ returns a BLOB value [if conversion is possible] +/ or NULL in any other case +*/ + const unsigned char *p_blob; + int n_bytes; + int is_hex = 0; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (argc == 2) + { + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + is_hex = sqlite3_value_int (argv[1]); + } + if (sqlite3_value_type (argv[0]) == SQLITE_BLOB) + { + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (is_hex) + { + /* attempting to convert Hexadecimal input */ + unsigned char *blob; + int bytes; + if (!parseHexString (p_blob, n_bytes, &blob, &bytes)) + { + sqlite3_result_null (context); + return; + } + sqlite3_result_blob (context, blob, bytes, free); + return; + } + sqlite3_result_blob (context, p_blob, n_bytes, SQLITE_TRANSIENT); + return; + } + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + { + p_blob = sqlite3_value_text (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (is_hex) + { + /* attempting to convert Hexadecimal input */ + unsigned char *blob; + int bytes; + if (!parseHexString (p_blob, n_bytes, &blob, &bytes)) + { + sqlite3_result_null (context); + return; + } + sqlite3_result_blob (context, blob, bytes, free); + return; + } + sqlite3_result_blob (context, p_blob, n_bytes, SQLITE_TRANSIENT); + return; + } + sqlite3_result_null (context); +} + +static void +fnct_ForceAsNull (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ForceAsNull(generic val1, generic val2) +/ +/ returns a NULL value if val1 and val2 are equal +/ (and exactly of the same type) +/ return val1 in any other case +*/ + int type1; + int type2; + const unsigned char *p_blob; + int n_bytes; + const unsigned char *p_blob2; + int n_bytes2; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + type1 = sqlite3_value_type (argv[0]); + type2 = sqlite3_value_type (argv[1]); + if (type1 == type2) + { + switch (type1) + { + case SQLITE_INTEGER: + if (sqlite3_value_int64 (argv[0]) == + sqlite3_value_int64 (argv[1])) + { + sqlite3_result_null (context); + return; + } + break; + case SQLITE_FLOAT: + if (sqlite3_value_double (argv[0]) == + sqlite3_value_double (argv[1])) + { + sqlite3_result_null (context); + return; + } + break; + case SQLITE_TEXT: + p_blob = sqlite3_value_text (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + p_blob2 = sqlite3_value_text (argv[1]); + n_bytes2 = sqlite3_value_bytes (argv[1]); + if (n_bytes == n_bytes2) + { + if (strcasecmp + ((const char *) p_blob, (const char *) p_blob2) == 0) + { + sqlite3_result_null (context); + return; + } + } + break; + case SQLITE_BLOB: + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + p_blob2 = sqlite3_value_blob (argv[1]); + n_bytes2 = sqlite3_value_bytes (argv[1]); + if (n_bytes == n_bytes2) + { + if (memcmp (p_blob, p_blob2, n_bytes) == 0) + { + sqlite3_result_null (context); + return; + } + } + break; + case SQLITE_NULL: + sqlite3_result_null (context); + return; + }; + } +/* returning the first argument */ + switch (type1) + { + case SQLITE_INTEGER: + sqlite3_result_int64 (context, sqlite3_value_int64 (argv[0])); + break; + case SQLITE_FLOAT: + sqlite3_result_double (context, sqlite3_value_double (argv[0])); + break; + case SQLITE_TEXT: + p_blob = sqlite3_value_text (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + sqlite3_result_text (context, (const char *) p_blob, n_bytes, + SQLITE_TRANSIENT); + break; + case SQLITE_BLOB: + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + sqlite3_result_blob (context, p_blob, n_bytes, SQLITE_TRANSIENT); + break; + default: + sqlite3_result_null (context); + break; + }; +} + +static void +fnct_CreateUUID (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ CreateUUID() +/ +/ returns a TEXT value containing an UUID +/ [xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx] +*/ + unsigned char rnd[16]; + char uuid[64]; + char *p = uuid; + int i; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + sqlite3_randomness (16, rnd); + for (i = 0; i < 16; i++) + { + if (i == 4 || i == 6 || i == 8 || i == 10) + *p++ = '-'; + sprintf (p, "%02x", rnd[i]); + p += 2; + } + *p = '\0'; + uuid[14] = '4'; + uuid[19] = '8'; + sqlite3_result_text (context, uuid, strlen (uuid), SQLITE_TRANSIENT); +} + +static void +fnct_MD5Checksum (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ MD5Checksum(blob) +/ +/ returns a TEXT value containing an hex MD5 checksum +/ [xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx] +/ or +/ NULL on invalid arguments +*/ + void *md5; + char *checksum; + const unsigned char *blob; + int blob_len; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + + if (sqlite3_value_type (argv[0]) == SQLITE_BLOB) + { + blob = sqlite3_value_blob (argv[0]); + blob_len = sqlite3_value_bytes (argv[0]); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + { + blob = sqlite3_value_text (argv[0]); + blob_len = sqlite3_value_bytes (argv[0]); + } + else + { + sqlite3_result_null (context); + return; + } +/* creating an MD5 object */ + md5 = gaiaCreateMD5Checksum (); +/* evaluating the BLOB */ + gaiaUpdateMD5Checksum (md5, blob, blob_len); + checksum = gaiaFinalizeMD5Checksum (md5); + gaiaFreeMD5Checksum (md5); + if (checksum == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, checksum, strlen (checksum), free); +} + +static void +fnct_MD5TotalChecksum_step (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ MD5TotalChecksum(BLOB) +/ +/ aggregate function - STEP +/ +*/ + void **p; + void *md5; + const unsigned char *blob; + int blob_len; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + + if (sqlite3_value_type (argv[0]) == SQLITE_BLOB) + { + blob = sqlite3_value_blob (argv[0]); + blob_len = sqlite3_value_bytes (argv[0]); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + { + blob = sqlite3_value_text (argv[0]); + blob_len = sqlite3_value_bytes (argv[0]); + } + else + { + sqlite3_result_null (context); + return; + } + p = sqlite3_aggregate_context (context, sizeof (void *)); + if (!(*p)) + { + /* this is the first row - creating an MD5 object */ + md5 = gaiaCreateMD5Checksum (); + gaiaUpdateMD5Checksum (md5, blob, blob_len); + *p = md5; + } + else + { + /* subsequent rows */ + md5 = *p; + gaiaUpdateMD5Checksum (md5, blob, blob_len); + } +} + +static void +fnct_MD5TotalChecksum_final (sqlite3_context * context) +{ +/* SQL function: +/ MD5TotalChecksum(BLOB) +/ +/ aggregate function - FINAL +/ +*/ + void **p; + void *md5; + char *checksum; + p = sqlite3_aggregate_context (context, 0); + if (!(*p)) + { + sqlite3_result_null (context); + return; + } + md5 = *p; + checksum = gaiaFinalizeMD5Checksum (md5); + gaiaFreeMD5Checksum (md5); + if (checksum == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, checksum, strlen (checksum), free); +} + +#ifndef OMIT_MATHSQL /* supporting SQL math functions */ + +static int +testInvalidFP (double x) +{ +/* testing if this one is an invalid Floating Point */ +#ifdef _WIN32 + if (_fpclass (x) == _FPCLASS_NN || _fpclass (x) == _FPCLASS_PN || + _fpclass (x) == _FPCLASS_NZ || _fpclass (x) == _FPCLASS_PZ) + ; + else + return 1; +#else + if (fpclassify (x) == FP_NORMAL || fpclassify (x) == FP_ZERO) + ; + else + return 1; +#endif + return 0; +} + +static void +fnct_math_acos (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ acos(double X) +/ +/ Returns the arc cosine of X, that is, the value whose cosine is X +/ or NULL if any error is encountered +*/ + int int_value; + double x; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = acos (sqlite3_value_double (argv[0])); + if (testInvalidFP (x)) + sqlite3_result_null (context); + else + sqlite3_result_double (context, x); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + x = acos (x); + if (testInvalidFP (x)) + sqlite3_result_null (context); + else + sqlite3_result_double (context, x); + } + else + sqlite3_result_null (context); +} + +static void +fnct_math_asin (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ asin(double X) +/ +/ Returns the arc sine of X, that is, the value whose sine is X +/ or NULL if any error is encountered +*/ + int int_value; + double x; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = asin (sqlite3_value_double (argv[0])); + if (testInvalidFP (x)) + sqlite3_result_null (context); + else + sqlite3_result_double (context, x); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + x = asin (x); + if (testInvalidFP (x)) + sqlite3_result_null (context); + else + sqlite3_result_double (context, x); + } + else + sqlite3_result_null (context); +} + +static void +fnct_math_atan (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ atan(double X) +/ +/ Returns the arc tangent of X, that is, the value whose tangent is X +/ or NULL if any error is encountered +*/ + int int_value; + double x; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = atan (sqlite3_value_double (argv[0])); + sqlite3_result_double (context, x); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + x = atan (x); + sqlite3_result_double (context, x); + } + else + sqlite3_result_null (context); +} + +static void +fnct_math_ceil (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ceil(double X) +/ +/ Returns the smallest integer value not less than X +/ or NULL if any error is encountered +*/ + int int_value; + double x; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = ceil (sqlite3_value_double (argv[0])); + sqlite3_result_double (context, x); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + x = ceil (x); + sqlite3_result_double (context, x); + } + else + sqlite3_result_null (context); +} + +static void +fnct_math_cos (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ cos(double X) +/ +/ Returns the cosine of X, where X is given in radians +/ or NULL if any error is encountered +*/ + int int_value; + double x; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = cos (sqlite3_value_double (argv[0])); + sqlite3_result_double (context, x); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + x = cos (x); + sqlite3_result_double (context, x); + } + else + sqlite3_result_null (context); +} + +static void +fnct_math_cot (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ cot(double X) +/ +/ Returns the cotangent of X +/ or NULL if any error is encountered +*/ + int int_value; + double x; + double tang; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + tang = tan (x); + if (tang == 0.0) + { + sqlite3_result_null (context); + return; + } + x = 1.0 / tang; + sqlite3_result_double (context, x); +} + +static void +fnct_math_degrees (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ degrees(double X) +/ +/ Returns the argument X, converted from radians to degrees +/ or NULL if any error is encountered +*/ + int int_value; + double x; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + x = x * 57.29577951308232; + sqlite3_result_double (context, x); +} + +static void +fnct_math_exp (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ exp(double X) +/ +/ Returns the value of e (the base of natural logarithms) raised to the power of X +/ or NULL if any error is encountered +*/ + int int_value; + double x; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = exp (sqlite3_value_double (argv[0])); + sqlite3_result_double (context, x); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + x = exp (x); + sqlite3_result_double (context, x); + } + else + sqlite3_result_null (context); +} + +static void +fnct_math_floor (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ floor(double X) +/ +/ Returns the largest integer value not greater than X +/ or NULL if any error is encountered +*/ + int int_value; + double x; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = floor (sqlite3_value_double (argv[0])); + sqlite3_result_double (context, x); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + x = floor (x); + sqlite3_result_double (context, x); + } + else + sqlite3_result_null (context); +} + +static void +fnct_math_logn (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ log(double X) +/ +/ Returns the natural logarithm of X; that is, the base-e logarithm of X +/ or NULL if any error is encountered +*/ + int int_value; + double x; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = log (sqlite3_value_double (argv[0])); + if (testInvalidFP (x)) + sqlite3_result_null (context); + else + sqlite3_result_double (context, x); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + x = log (x); + if (testInvalidFP (x)) + sqlite3_result_null (context); + else + sqlite3_result_double (context, x); + } + else + sqlite3_result_null (context); +} + +static void +fnct_math_logn2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ log(double B, double X) +/ +/ Returns the logarithm of X to the base B +/ or NULL if any error is encountered +*/ + int int_value; + double x = 0.0; + double b = 1.0; + double log1; + double log2; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + b = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + b = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (x <= 0.0 || b <= 1.0) + { + sqlite3_result_null (context); + return; + } + log1 = log (x); + if (testInvalidFP (log1)) + { + sqlite3_result_null (context); + return; + } + log2 = log (b); + if (testInvalidFP (log2)) + { + sqlite3_result_null (context); + return; + } + sqlite3_result_double (context, log1 / log2); +} + +static void +fnct_math_log_2 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ log2(double X) +/ +/ Returns the base-2 logarithm of X +/ or NULL if any error is encountered +*/ + int int_value; + double x; + double log1; + double log2; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + log1 = log (x); + if (testInvalidFP (log1)) + { + sqlite3_result_null (context); + return; + } + log2 = log (2.0); + sqlite3_result_double (context, log1 / log2); +} + +static void +fnct_math_log_10 (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ log10(double X) +/ +/ Returns the base-10 logarithm of X +/ or NULL if any error is encountered +*/ + int int_value; + double x; + double log1; + double log2; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + log1 = log (x); + if (testInvalidFP (log1)) + { + sqlite3_result_null (context); + return; + } + log2 = log (10.0); + sqlite3_result_double (context, log1 / log2); +} + +static void +fnct_math_pi (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ pi(void) +/ +/ Returns the value of (pi) +*/ + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + sqlite3_result_double (context, 3.14159265358979323846); +} + +static void +fnct_math_pow (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ pow(double X, double Y) +/ +/ Returns the value of X raised to the power of Y. +/ or NULL if any error is encountered +*/ + int int_value; + double x; + double y; + double p; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + y = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[1]); + y = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + p = pow (x, y); + if (testInvalidFP (p)) + sqlite3_result_null (context); + else + sqlite3_result_double (context, p); +} + +static void +fnct_math_stddev_step (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ stddev_pop(double X) +/ stddev_samp(double X) +/ var_pop(double X) +/ var_samp(double X) +/ +/ aggregate function - STEP +/ +*/ + struct stddev_str *p; + int int_value; + double x; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + return; + p = sqlite3_aggregate_context (context, sizeof (struct stddev_str)); + if (!(p->cleaned)) + { + p->cleaned = 1; + p->mean = x; + p->quot = 0.0; + p->count = 0.0; + } + p->count += 1.0; + p->quot = + p->quot + + (((p->count - 1.0) * ((x - p->mean) * (x - p->mean))) / p->count); + p->mean = p->mean + ((x - p->mean) / p->count); +} + +static void +fnct_math_stddev_pop_final (sqlite3_context * context) +{ +/* SQL function: +/ stddev_pop(double X) +/ aggregate function - FINAL +/ +*/ + double x; + struct stddev_str *p = sqlite3_aggregate_context (context, 0); + if (!p) + { + sqlite3_result_null (context); + return; + } + x = sqrt (p->quot / p->count); + sqlite3_result_double (context, x); +} + +static void +fnct_math_stddev_samp_final (sqlite3_context * context) +{ +/* SQL function: +/ stddev_samp(double X) +/ aggregate function - FINAL +/ +*/ + double x; + struct stddev_str *p = sqlite3_aggregate_context (context, 0); + if (!p) + { + sqlite3_result_null (context); + return; + } + x = sqrt (p->quot / (p->count - 1.0)); + sqlite3_result_double (context, x); +} + +static void +fnct_math_var_pop_final (sqlite3_context * context) +{ +/* SQL function: +/ var_pop(double X) +/ aggregate function - FINAL +/ +*/ + double x; + struct stddev_str *p = sqlite3_aggregate_context (context, 0); + if (!p) + { + sqlite3_result_null (context); + return; + } + x = p->quot / p->count; + sqlite3_result_double (context, x); +} + +static void +fnct_math_var_samp_final (sqlite3_context * context) +{ +/* SQL function: +/ var_samp(double X) +/ aggregate function - FINAL +/ +*/ + double x; + struct stddev_str *p = sqlite3_aggregate_context (context, 0); + if (!p) + { + sqlite3_result_null (context); + return; + } + x = p->quot / (p->count - 1.0); + sqlite3_result_double (context, x); +} + +static void +fnct_math_radians (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ radians(double X) +/ +/ Returns the argument X, converted from degrees to radians +/ or NULL if any error is encountered +*/ + int int_value; + double x; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + x = x * .0174532925199432958; + sqlite3_result_double (context, x); +} + +static void +fnct_math_sign (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ sign(double X) +/ +/ Returns the sign of the argument as -1, 0, or 1, depending on whether X is negative, zero, or positive +/ or NULL if any error is encountered +*/ + int int_value; + double x; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + x = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (x > 0.0) + sqlite3_result_double (context, 1.0); + else if (x < 0.0) + sqlite3_result_double (context, -1.0); + else + sqlite3_result_double (context, 0.0); +} + +static void +fnct_math_sin (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ sin(double X) +/ +/ Returns the sine of X, where X is given in radians +/ or NULL if any error is encountered +*/ + int int_value; + double x; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = sin (sqlite3_value_double (argv[0])); + sqlite3_result_double (context, x); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + x = sin (x); + sqlite3_result_double (context, x); + } + else + sqlite3_result_null (context); +} + +static void +fnct_math_sqrt (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ sqrt(double X) +/ +/ Returns the square root of a non-negative number X +/ or NULL if any error is encountered +*/ + int int_value; + double x; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = sqrt (sqlite3_value_double (argv[0])); + if (testInvalidFP (x)) + sqlite3_result_null (context); + else + sqlite3_result_double (context, x); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + x = sqrt (x); + if (testInvalidFP (x)) + sqlite3_result_null (context); + else + sqlite3_result_double (context, x); + } + else + sqlite3_result_null (context); +} + +static void +fnct_math_tan (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ tan(double X) +/ +/ Returns the tangent of X, where X is given in radians +/ or NULL if any error is encountered +*/ + int int_value; + double x; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + { + x = tan (sqlite3_value_double (argv[0])); + sqlite3_result_double (context, x); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + x = int_value; + x = tan (x); + sqlite3_result_double (context, x); + } + else + sqlite3_result_null (context); +} + +#endif /* end supporting SQL math functions */ + +static void +fnct_GeomFromExifGpsBlob (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ GeomFromExifGpsBlob(BLOB encoded image) +/ +/ returns: +/ a POINT geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + gaiaGeomCollPtr geom; + unsigned char *geoblob; + int geosize; + double longitude; + double latitude; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (gaiaGetGpsCoords (p_blob, n_bytes, &longitude, &latitude)) + { + geom = gaiaAllocGeomColl (); + geom->Srid = 4326; + gaiaAddPointToGeomColl (geom, longitude, latitude); + gaiaToSpatiaLiteBlobWkb (geom, &geoblob, &geosize); + gaiaFreeGeomColl (geom); + sqlite3_result_blob (context, geoblob, geosize, free); + } + else + sqlite3_result_null (context); +} + +static char * +guess_mime_type (const unsigned char *p_blob, int n_bytes) +{ +/* guessing the mime-type corresponding to some BLOB */ + int blob_type; + const char *mime = NULL; + int len; + char *string = NULL; + blob_type = gaiaGuessBlobType (p_blob, n_bytes); + switch (blob_type) + { + case GAIA_ZIP_BLOB: + mime = "application/zip"; + break; + case GAIA_PDF_BLOB: + mime = "application/pdf"; + break; + case GAIA_TIFF_BLOB: + mime = "image/tiff"; + break; + case GAIA_GIF_BLOB: + mime = "image/gif"; + break; + case GAIA_PNG_BLOB: + mime = "image/png"; + break; + case GAIA_JPEG_BLOB: + case GAIA_EXIF_BLOB: + case GAIA_EXIF_GPS_BLOB: + mime = "image/jpeg"; + break; +#ifdef ENABLE_LIBXML2 /* including LIBXML2 */ + case GAIA_XML_BLOB: + mime = "application/xml"; + if (gaiaIsSvgXmlBlob (p_blob, n_bytes)) + mime = "image/svg+xml"; + break; +#endif /* end including LIBXML2 */ + }; + if (mime != NULL) + { + len = strlen (mime); + string = malloc (len + 1); + strcpy (string, mime); + } + return string; +} + +static void +fnct_GetMimeType (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ GetMimeType(BLOB) +/ +/ returns: +/ the Mime-Type corresponding to the BLOB +/ or NULL if any error is encountered or no valid mime is defined +*/ + unsigned char *p_blob; + int n_bytes; + char *mime = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + mime = guess_mime_type (p_blob, n_bytes); + if (mime == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, mime, strlen (mime), free); +} + +static void +blob_guess (sqlite3_context * context, int argc, sqlite3_value ** argv, + int request) +{ +/* SQL function: +/ IsGifBlob(BLOB encoded image) +/ IsPngBlob, IsJpegBlob, IsExifBlob, IsExifGpsBlob, IsTiffBlob, +/ IsZipBlob, IsPdfBlob,IsGeometryBlob +/ +/ returns: +/ 1 if the required BLOB_TYPE is TRUE +/ 0 otherwise +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int blob_type; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + blob_type = gaiaGuessBlobType (p_blob, n_bytes); + if (request == GAIA_GEOMETRY_BLOB) + { + if (blob_type == GAIA_GEOMETRY_BLOB) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + return; + } + if (request == GAIA_ZIP_BLOB) + { + if (blob_type == GAIA_ZIP_BLOB) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + return; + } + if (request == GAIA_PDF_BLOB) + { + if (blob_type == GAIA_PDF_BLOB) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + return; + } + if (request == GAIA_TIFF_BLOB) + { + if (blob_type == GAIA_TIFF_BLOB) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + return; + } + if (request == GAIA_GIF_BLOB) + { + if (blob_type == GAIA_GIF_BLOB) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + return; + } + if (request == GAIA_PNG_BLOB) + { + if (blob_type == GAIA_PNG_BLOB) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + return; + } + if (request == GAIA_JPEG_BLOB) + { + if (blob_type == GAIA_JPEG_BLOB || blob_type == GAIA_EXIF_BLOB + || blob_type == GAIA_EXIF_GPS_BLOB) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + return; + } + if (request == GAIA_EXIF_BLOB) + { + if (blob_type == GAIA_EXIF_BLOB || blob_type == GAIA_EXIF_GPS_BLOB) + { + sqlite3_result_int (context, 1); + } + else + sqlite3_result_int (context, 0); + return; + } + if (request == GAIA_EXIF_GPS_BLOB) + { + if (blob_type == GAIA_EXIF_GPS_BLOB) + { + sqlite3_result_int (context, 1); + } + else + sqlite3_result_int (context, 0); + return; + } + if (request == GAIA_WEBP_BLOB) + { + if (blob_type == GAIA_WEBP_BLOB) + sqlite3_result_int (context, 1); + else + sqlite3_result_int (context, 0); + return; + } + sqlite3_result_int (context, -1); +} + +/* +/ the following functions simply readdress the blob_guess() +/ setting the appropriate request mode +*/ + +static void +fnct_IsGeometryBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + blob_guess (context, argc, argv, GAIA_GEOMETRY_BLOB); +} + +static void +fnct_IsZipBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + blob_guess (context, argc, argv, GAIA_ZIP_BLOB); +} + +static void +fnct_IsPdfBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + blob_guess (context, argc, argv, GAIA_PDF_BLOB); +} + +static void +fnct_IsTiffBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + blob_guess (context, argc, argv, GAIA_TIFF_BLOB); +} + +static void +fnct_IsGifBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + blob_guess (context, argc, argv, GAIA_GIF_BLOB); +} + +static void +fnct_IsPngBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + blob_guess (context, argc, argv, GAIA_PNG_BLOB); +} + +static void +fnct_IsJpegBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + blob_guess (context, argc, argv, GAIA_JPEG_BLOB); +} + +static void +fnct_IsExifBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + blob_guess (context, argc, argv, GAIA_EXIF_BLOB); +} + +static void +fnct_IsExifGpsBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + blob_guess (context, argc, argv, GAIA_EXIF_GPS_BLOB); +} + +static void +fnct_IsWebPBlob (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + blob_guess (context, argc, argv, GAIA_WEBP_BLOB); +} + +static void +fnct_BlobFromFile (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ BlobFromFile(TEXT filepath) +/ +/ returns: +/ some BLOB on success +/ or NULL on failure +*/ + unsigned char *p_blob; + int n_bytes; + int max_blob; + int rd; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + const char *path = NULL; + FILE *in = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + path = (const char *) sqlite3_value_text (argv[0]); + if (path == NULL) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + in = fopen (path, "rb"); + if (in == NULL) + { + sqlite3_result_null (context); + return; + } + else + { + /* querying the file length */ + if (fseek (in, 0, SEEK_END) < 0) + { + sqlite3_result_null (context); + fclose (in); + return; + } + n_bytes = ftell (in); + max_blob = sqlite3_limit (sqlite, SQLITE_LIMIT_LENGTH, -1); + if (n_bytes > max_blob) + { + /* too big; cannot be stored into a BLOB */ + sqlite3_result_null (context); + fclose (in); + return; + } + rewind (in); + p_blob = malloc (n_bytes); + /* attempting to load the BLOB from the file */ + rd = fread (p_blob, 1, n_bytes, in); + fclose (in); + if (rd != n_bytes) + { + /* read error */ + free (p_blob); + sqlite3_result_null (context); + return; + } + sqlite3_result_blob (context, p_blob, n_bytes, free); + } +} + +static void +fnct_BlobToFile (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ BlobToFile(BLOB payload, TEXT filepath) +/ +/ returns: +/ 1 on success +/ or 0 on failure +*/ + unsigned char *p_blob; + int n_bytes; + const char *path = NULL; + FILE *out = NULL; + int ret = 1; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, 0); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_TEXT) + path = (const char *) sqlite3_value_text (argv[1]); + if (path == NULL) + { + sqlite3_result_int (context, 0); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + out = fopen (path, "wb"); + if (out == NULL) + ret = 0; + else + { + /* exporting the BLOB into the file */ + int wr = fwrite (p_blob, 1, n_bytes, out); + if (wr != n_bytes) + ret = 0; + fclose (out); + } + sqlite3_result_int (context, ret); +} + +static void +fnct_ExportDXF (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ ExportDXF(TEXT out_dir, TEXT filename, TEXT sql_query, TEXT layer_col_name, +/ TEXT geom_col_name, TEXT label_col_name, TEXT text_height_col_name, +/ TEXT text_rotation_col_name, BLOB geom_filter) +/ or +/ ExportDXF(TEXT out_dir, TEXT filename, TEXT sql_query, TEXT layer_col_name, +/ TEXT geom_col_name, TEXT label_col_name, TEXT text_height_col_name, +/ TEXT text_rotation_col_name, BLOB geom_filter, INT precision) +/ +/ returns: +/ 1 on success +/ or 0 on failure +*/ + unsigned char *p_blob; + int n_bytes; + char *path; + const char *dir_path = NULL; + const char *filename = NULL; + FILE *out = NULL; + const char *sql_query = NULL; + const char *layer_col_name = NULL; + const char *geom_col_name = NULL; + const char *label_col_name = NULL; + const char *text_height_col_name = NULL; + const char *text_rotation_col_name = NULL; + gaiaGeomCollPtr geom = NULL; + int precision = 3; + int ret = 1; + sqlite3 *db_handle = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + dir_path = (const char *) sqlite3_value_text (argv[0]); + if (sqlite3_value_type (argv[1]) == SQLITE_TEXT) + filename = (const char *) sqlite3_value_text (argv[1]); + if (sqlite3_value_type (argv[2]) == SQLITE_TEXT) + sql_query = (const char *) sqlite3_value_text (argv[2]); + if (sqlite3_value_type (argv[3]) == SQLITE_TEXT) + layer_col_name = (const char *) sqlite3_value_text (argv[3]); + if (sqlite3_value_type (argv[4]) == SQLITE_TEXT) + geom_col_name = (const char *) sqlite3_value_text (argv[4]); + if (sqlite3_value_type (argv[5]) == SQLITE_TEXT) + label_col_name = (const char *) sqlite3_value_text (argv[5]); + if (sqlite3_value_type (argv[6]) == SQLITE_TEXT) + text_height_col_name = (const char *) sqlite3_value_text (argv[6]); + if (sqlite3_value_type (argv[7]) == SQLITE_TEXT) + text_rotation_col_name = (const char *) sqlite3_value_text (argv[7]); + if (sqlite3_value_type (argv[8]) == SQLITE_BLOB) + { + p_blob = (unsigned char *) sqlite3_value_blob (argv[8]); + n_bytes = sqlite3_value_bytes (argv[8]); + geom = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + } + if (argc == 10) + { + if (sqlite3_value_type (argv[9]) == SQLITE_INTEGER) + precision = sqlite3_value_int (argv[9]); + } + if (dir_path == NULL || filename == NULL || sql_query == NULL + || layer_col_name == NULL || geom_col_name == NULL) + { + sqlite3_result_int (context, 0); + if (geom != NULL) + gaiaFreeGeomColl (geom); + return; + } + + path = sqlite3_mprintf ("%s/%s.dxf", dir_path, filename); + out = fopen (path, "wb"); + if (out == NULL) + { + ret = 0; + spatialite_e ("ExportDXF error - unable to create \"%s\"\n", path); + } + else + { + /* exporting the DXF */ + gaiaDxfWriter dxf; + gaiaDxfWriterInit (&dxf, out, precision, GAIA_DXF_V12); + ret = gaiaExportDxf (&dxf, db_handle, sql_query, layer_col_name, + geom_col_name, label_col_name, + text_height_col_name, text_rotation_col_name, + geom); + if (ret > 0) + ret = 1; + fclose (out); + } + sqlite3_result_int (context, ret); + if (geom != NULL) + gaiaFreeGeomColl (geom); + sqlite3_free (path); +} + +static void +fnct_CountUnsafeTriggers (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CountUnsafeTriggers() +/ +/ returns: +/ the total count of *unsafe* triggers found +/ 0 if no dubious trigger has been identifiedfailure +*/ + int ret; + int i; + char **results; + int rows; + int columns; + const char *sql; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + int count = 0; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + +/* checking all Triggers */ + sql = "SELECT Count(*) FROM sqlite_master WHERE " + "type IN ('trigger', 'view') AND (sql LIKE '%BlobFromFile%' " + "OR sql LIKE '%BlobToFile%' OR sql LIKE '%XB_LoadXML%' " + "OR sql LIKE '%XB_StoreXML%')"; + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + goto unknown; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + count = atoi (results[(i * columns) + 0]); + } + } + sqlite3_free_table (results); + unknown: + sqlite3_result_int (context, count); +} + +static void +fnct_GeodesicLength (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ GeodesicLength(BLOB encoded GEOMETRYCOLLECTION) +/ +/ returns the total Geodesic length for current geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + double l; + double length = 0.0; + double a; + double b; + double rf; + gaiaGeomCollPtr geo = NULL; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + int ib; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + if (getEllipsoidParams (sqlite, geo->Srid, &a, &b, &rf)) + { + line = geo->FirstLinestring; + while (line) + { + /* Linestrings */ + l = gaiaGeodesicTotalLength (a, b, rf, + line->DimensionModel, + line->Coords, line->Points); + if (l < 0.0) + { + length = -1.0; + break; + } + length += l; + line = line->Next; + } + if (length >= 0) + { + /* Polygons */ + polyg = geo->FirstPolygon; + while (polyg) + { + /* exterior Ring */ + ring = polyg->Exterior; + l = gaiaGeodesicTotalLength (a, b, rf, + ring->DimensionModel, + ring->Coords, + ring->Points); + if (l < 0.0) + { + length = -1.0; + break; + } + length += l; + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* interior Rings */ + ring = polyg->Interiors + ib; + l = gaiaGeodesicTotalLength (a, b, rf, + ring-> + DimensionModel, + ring->Coords, + ring->Points); + if (l < 0.0) + { + length = -1.0; + break; + } + length += l; + } + if (length < 0.0) + break; + polyg = polyg->Next; + } + } + if (length < 0.0) + sqlite3_result_null (context); + else + sqlite3_result_double (context, length); + } + else + sqlite3_result_null (context); + gaiaFreeGeomColl (geo); + } +} + +static void +fnct_GreatCircleLength (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ GreatCircleLength(BLOB encoded GEOMETRYCOLLECTION) +/ +/ returns the total Great Circle length for current geometry +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + double length = 0.0; + double a; + double b; + double rf; + gaiaGeomCollPtr geo = NULL; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + gaiaRingPtr ring; + int ib; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + geo = gaiaFromSpatiaLiteBlobWkb (p_blob, n_bytes); + if (!geo) + sqlite3_result_null (context); + else + { + if (getEllipsoidParams (sqlite, geo->Srid, &a, &b, &rf)) + { + line = geo->FirstLinestring; + while (line) + { + /* Linestrings */ + length += + gaiaGreatCircleTotalLength (a, b, + line->DimensionModel, + line->Coords, + line->Points); + line = line->Next; + } + if (length >= 0) + { + /* Polygons */ + polyg = geo->FirstPolygon; + while (polyg) + { + /* exterior Ring */ + ring = polyg->Exterior; + length += + gaiaGreatCircleTotalLength (a, b, + ring-> + DimensionModel, + ring->Coords, + ring->Points); + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + /* interior Rings */ + ring = polyg->Interiors + ib; + length += + gaiaGreatCircleTotalLength (a, b, + ring-> + DimensionModel, + ring->Coords, + ring->Points); + } + polyg = polyg->Next; + } + } + sqlite3_result_double (context, length); + } + else + sqlite3_result_null (context); + gaiaFreeGeomColl (geo); + } +} + +static void +convertUnit (sqlite3_context * context, int argc, sqlite3_value ** argv, + int unit_from, int unit_to) +{ +/* SQL functions: +/ CvtToKm(), CvtToDm(), CvtToCm(), CvtToMm(), CvtToKmi(), CvtToIn(), CvtToFt(), +/ CvtToYd(), CvtToMi(), CvtToFath(), CvtToCh(), CvtToLink(), CvtToUsIn(), +/ CvtToUsFt(), CvtToUsYd(), CvtToUsCh(), CvtToUsMi(), CvtToIndFt(), +/ CvtToIndYd(), CvtToIndCh(), +/ CvtFromKm(), CvtFromDm(), CvtFromCm(), CvtFromMm(), CvtFromKmi(), +/ CvtFromIn(), CvtFromFt(), CvtFromYd(), CvtFromMi(), CvtFromFath(), +/ CvtFromCh(), CvtFromLink(), CvtFromUsIn(), CvtFromUsFt(), CvtFromUsYd(), +/ CvtFromUsCh(), CvtFromUsMi(), CvtFromIndFt(), CvtFromIndYd(), +/ CvtFromIndCh() +/ +/ converts a Length from one unit to a different one +/ or NULL if any error is encountered +*/ + double cvt; + double value; + int int_value; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + value = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int_value = sqlite3_value_int (argv[0]); + value = int_value; + } + else + { + sqlite3_result_null (context); + return; + } + if (!gaiaConvertLength (value, unit_from, unit_to, &cvt)) + sqlite3_result_null (context); + else + sqlite3_result_double (context, cvt); +} + +static void +fnct_cvtToKm (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_KM); +} + +static void +fnct_cvtToDm (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_DM); +} + +static void +fnct_cvtToCm (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_CM); +} + +static void +fnct_cvtToMm (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_MM); +} + +static void +fnct_cvtToKmi (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_KMI); +} + +static void +fnct_cvtToIn (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_IN); +} + +static void +fnct_cvtToFt (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_FT); +} + +static void +fnct_cvtToYd (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_YD); +} + +static void +fnct_cvtToMi (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_MI); +} + +static void +fnct_cvtToFath (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_FATH); +} + +static void +fnct_cvtToCh (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_CH); +} + +static void +fnct_cvtToLink (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_LINK); +} + +static void +fnct_cvtToUsIn (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_US_IN); +} + +static void +fnct_cvtToUsFt (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_US_FT); +} + +static void +fnct_cvtToUsYd (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_US_YD); +} + +static void +fnct_cvtToUsCh (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_US_CH); +} + +static void +fnct_cvtToUsMi (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_US_MI); +} + +static void +fnct_cvtToIndFt (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_IND_FT); +} + +static void +fnct_cvtToIndYd (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_IND_YD); +} + +static void +fnct_cvtToIndCh (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_M, GAIA_IND_CH); +} + +static void +fnct_cvtFromKm (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_KM, GAIA_M); +} + +static void +fnct_cvtFromDm (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_DM, GAIA_M); +} + +static void +fnct_cvtFromCm (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_CM, GAIA_M); +} + +static void +fnct_cvtFromMm (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_MM, GAIA_M); +} + +static void +fnct_cvtFromKmi (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_KMI, GAIA_M); +} + +static void +fnct_cvtFromIn (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_IN, GAIA_M); +} + +static void +fnct_cvtFromFt (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_FT, GAIA_M); +} + +static void +fnct_cvtFromYd (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_YD, GAIA_M); +} + +static void +fnct_cvtFromMi (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_MI, GAIA_M); +} + +static void +fnct_cvtFromFath (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_FATH, GAIA_M); +} + +static void +fnct_cvtFromCh (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_CH, GAIA_M); +} + +static void +fnct_cvtFromLink (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_LINK, GAIA_M); +} + +static void +fnct_cvtFromUsIn (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_US_IN, GAIA_M); +} + +static void +fnct_cvtFromUsFt (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_US_FT, GAIA_M); +} + +static void +fnct_cvtFromUsYd (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_US_YD, GAIA_M); +} + +static void +fnct_cvtFromUsCh (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_US_CH, GAIA_M); +} + +static void +fnct_cvtFromUsMi (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_US_MI, GAIA_M); +} + +static void +fnct_cvtFromIndFt (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_IND_FT, GAIA_M); +} + +static void +fnct_cvtFromIndYd (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_IND_YD, GAIA_M); +} + +static void +fnct_cvtFromIndCh (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ + convertUnit (context, argc, argv, GAIA_IND_CH, GAIA_M); +} + +static void +fnct_longFromDMS (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ LongitudeFromDMS ( dms_string ) +/ +/ return the Longitude (in Decimal Degrees) from a DMS text expression +/ or NULL if any error is encountered +*/ + const char *dms; + double longitude; + double latitude; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + dms = (const char *) sqlite3_value_text (argv[0]); + else + { + sqlite3_result_null (context); + return; + } + if (!gaiaParseDMS (dms, &longitude, &latitude)) + sqlite3_result_null (context); + else + sqlite3_result_double (context, longitude); +} + +static void +fnct_latFromDMS (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ LatitudeFromDMS ( dms_string ) +/ +/ return the Latitude (in Decimal Degrees) from a DMS text expression +/ or NULL if any error is encountered +*/ + const char *dms; + double longitude; + double latitude; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + dms = (const char *) sqlite3_value_text (argv[0]); + else + { + sqlite3_result_null (context); + return; + } + if (!gaiaParseDMS (dms, &longitude, &latitude)) + sqlite3_result_null (context); + else + sqlite3_result_double (context, latitude); +} + +static void +fnct_toDMS (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ LongLatToDMS ( longitude, latitude ) +/ +/ return a DMS text expression +/ or NULL if any error is encountered +*/ + double longitude; + double latitude; + char *dms; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) == SQLITE_FLOAT) + longitude = sqlite3_value_double (argv[0]); + else if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + int value = sqlite3_value_int (argv[0]); + longitude = value; + } + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_FLOAT) + latitude = sqlite3_value_double (argv[1]); + else if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + { + int value = sqlite3_value_int (argv[1]); + latitude = value; + } + else + { + sqlite3_result_null (context); + return; + } + dms = gaiaConvertToDMS (longitude, latitude); + if (dms == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, dms, strlen (dms), free); +} + +#ifdef ENABLE_LIBXML2 /* including LIBXML2 */ + +static void +fnct_CreateStylingTables (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CreateStylingTables() +/ or +/ CreateStylingTables(bool relaxed) +/ +/ creates any SLD/SE related table +/ returns 1 on success +/ 0 on failure, -1 on invalid arguments +*/ + int relaxed = 0; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (argc == 1) + { + if (sqlite3_value_type (argv[0]) != SQLITE_INTEGER) + { + sqlite3_result_int (context, -1); + return; + } + relaxed = sqlite3_value_int (argv[0]); + } + + if (!createStylingTables (sqlite, relaxed)) + goto error; + updateSpatiaLiteHistory (sqlite, "*** SE Styling ***", NULL, + "Styling tables successfully created"); + sqlite3_result_int (context, 1); + return; + + error: + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_RegisterExternalGraphic (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ RegisterExternalGraphic(String xlink_href, BLOB resource) +/ or +/ RegisterExternalGraphic(String xlink_href, BLOB resource, String file_name) +/ +/ insert or updates an External Graphic +/ returns 1 on success +/ 0 on failure, -1 on invalid arguments +*/ + int ret; + const char *xlink_href; + const char *title = NULL; + const char *abstract = NULL; + const char *file_name = NULL; + const unsigned char *p_blob; + int n_bytes; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (argc == 5) + { + /* optional extra args */ + if (sqlite3_value_type (argv[2]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[3]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[4]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + } + xlink_href = (const char *) sqlite3_value_text (argv[0]); + p_blob = sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + if (argc == 5) + { + title = (const char *) sqlite3_value_text (argv[2]); + abstract = (const char *) sqlite3_value_text (argv[3]); + file_name = (const char *) sqlite3_value_text (argv[4]); + } + ret = register_external_graphic (sqlite, xlink_href, p_blob, n_bytes, + title, abstract, file_name); + sqlite3_result_int (context, ret); +} + +static void +fnct_RegisterVectorStyledLayer (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ RegisterVectorStyledLayer(String f_table_name, String f_geometry_column, +/ BLOB style) +/ or +/ RegisterVectorStyledLayer(String f_table_name, String f_geometry_column, +/ Integer style_id, BLOB style) +/ +/ inserts or updates a Vector Styled Layer +/ returns 1 on success +/ 0 on failure, -1 on invalid arguments +*/ + int ret; + const char *f_geometry_column; + const char *f_table_name; + int style_id = -1; + const unsigned char *p_blob; + int n_bytes; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + if (argc == 4) + { + /* optional extra args */ + if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[3]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + } + else + { + /* no extra-args */ + if (sqlite3_value_type (argv[2]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + } + f_table_name = (const char *) sqlite3_value_text (argv[0]); + f_geometry_column = (const char *) sqlite3_value_text (argv[1]); + if (argc == 4) + { + style_id = sqlite3_value_int (argv[2]); + p_blob = sqlite3_value_blob (argv[3]); + n_bytes = sqlite3_value_bytes (argv[3]); + } + else + { + p_blob = sqlite3_value_blob (argv[2]); + n_bytes = sqlite3_value_bytes (argv[2]); + } + ret = register_vector_styled_layer (sqlite, f_table_name, + f_geometry_column, style_id, p_blob, + n_bytes); + sqlite3_result_int (context, ret); +} + +static void +fnct_RegisterRasterStyledLayer (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ RegisterRasterStyledLayer(String coverage_name, BLOB style) +/ or +/ RegisterRasterStyledLayer(String coverage_name, Integer style_id, +/ BLOB style) +/ +/ inserts or updates a Raster Styled Layer +/ returns 1 on success +/ 0 on failure, -1 on invalid arguments +*/ + int ret; + const char *coverage_name; + int style_id = -1; + const unsigned char *p_blob; + int n_bytes; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + if (argc == 3) + { + /* optional extra args */ + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[2]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + } + else + { + /* no extra-args */ + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + } + coverage_name = (const char *) sqlite3_value_text (argv[0]); + if (argc == 3) + { + style_id = sqlite3_value_int (argv[1]); + p_blob = sqlite3_value_blob (argv[2]); + n_bytes = sqlite3_value_bytes (argv[2]); + } + else + { + p_blob = sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + } + ret = register_raster_styled_layer (sqlite, coverage_name, style_id, + p_blob, n_bytes); + sqlite3_result_int (context, ret); +} + +static void +fnct_RegisterStyledGroup (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ RegisterStyledGroup(String group_name, String coverage_name +/ [, Integer paint_order ] ) +/ or +/ RegisterStyledGroup(String group_name, String f_table_name, +/ String f_geometry_column +/ [, Integer paint_order ] ) +/ +/ inserts or updates a Styled Group item +/ returns 1 on success +/ 0 on failure, -1 on invalid arguments +*/ + int ret; + const char *group_name; + const char *f_table_name = NULL; + const char *f_geometry_column = NULL; + const char *coverage_name = NULL; + int paint_order = -1; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (argc == 2) + { + /* raster layer - default */ + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT + && sqlite3_value_type (argv[1]) == SQLITE_TEXT) + { + group_name = (const char *) sqlite3_value_text (argv[0]); + coverage_name = (const char *) sqlite3_value_text (argv[1]); + } + else + { + sqlite3_result_int (context, -1); + return; + } + } + else if (argc == 3) + { + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT + && sqlite3_value_type (argv[1]) == SQLITE_TEXT + && sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + { + /* raster layer - paint_order */ + group_name = (const char *) sqlite3_value_text (argv[0]); + coverage_name = (const char *) sqlite3_value_text (argv[1]); + paint_order = sqlite3_value_int (argv[2]); + } + else if (sqlite3_value_type (argv[0]) == SQLITE_TEXT + && sqlite3_value_type (argv[1]) == SQLITE_TEXT + && sqlite3_value_type (argv[2]) == SQLITE_TEXT) + { + /* vector layer - default */ + group_name = (const char *) sqlite3_value_text (argv[0]); + f_table_name = (const char *) sqlite3_value_text (argv[1]); + f_geometry_column = (const char *) sqlite3_value_text (argv[2]); + } + else + { + sqlite3_result_int (context, -1); + return; + } + } + else if (argc == 4) + { + /* vector layer - paint_order */ + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT + && sqlite3_value_type (argv[1]) == SQLITE_TEXT + && sqlite3_value_type (argv[2]) == SQLITE_TEXT + && sqlite3_value_type (argv[3]) == SQLITE_INTEGER) + { + group_name = (const char *) sqlite3_value_text (argv[0]); + f_table_name = (const char *) sqlite3_value_text (argv[1]); + f_geometry_column = (const char *) sqlite3_value_text (argv[2]); + paint_order = sqlite3_value_int (argv[3]); + } + else + { + sqlite3_result_int (context, -1); + return; + } + } + ret = register_styled_group (sqlite, group_name, f_table_name, + f_geometry_column, coverage_name, paint_order); + sqlite3_result_int (context, ret); +} + +static void +fnct_SetStyledGroupInfos (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ SetStyledGroupInfos(String group_name, String title, +/ String abstract) +/ +/ inserts or updates the descriptive infos supporting a Styled Group +/ returns 1 on success +/ 0 on failure, -1 on invalid arguments +*/ + int ret; + const char *group_name; + const char *title = NULL; + const char *abstract = NULL; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[2]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + group_name = (const char *) sqlite3_value_text (argv[0]); + title = (const char *) sqlite3_value_text (argv[1]); + abstract = (const char *) sqlite3_value_text (argv[2]); + ret = styled_group_set_infos (sqlite, group_name, title, abstract); + sqlite3_result_int (context, ret); +} + +static void +fnct_RegisterGroupStyle (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ RegisterGroupStyle(String group_name, BLOB style) +/ or +/ RegisterGroupStyle(String group_name, Integer style_id, +/ BLOB style) +/ +/ inserts or updates a Group Style +/ returns 1 on success +/ 0 on failure, -1 on invalid arguments +*/ + int ret; + const char *group_name; + int style_id = -1; + const unsigned char *p_blob; + int n_bytes; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + if (argc == 3) + { + /* optional extra args */ + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[2]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + } + else + { + /* no extra-args */ + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + } + group_name = (const char *) sqlite3_value_text (argv[0]); + if (argc == 3) + { + style_id = sqlite3_value_int (argv[1]); + p_blob = sqlite3_value_blob (argv[2]); + n_bytes = sqlite3_value_bytes (argv[2]); + } + else + { + p_blob = sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + } + ret = register_group_style (sqlite, group_name, style_id, p_blob, n_bytes); + sqlite3_result_int (context, ret); +} + +static void +fnct_CreateIsoMetadataTables (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ CreateIsoMetadataTables() +/ or +/ CreateIsoMetadataTables(bool relaxed) +/ +/ creates any ISO Metadata related table +/ returns 1 on success +/ 0 on failure, -1 on invalid arguments +*/ + int relaxed = 0; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (argc == 1) + { + if (sqlite3_value_type (argv[0]) != SQLITE_INTEGER) + { + sqlite3_result_int (context, -1); + return; + } + relaxed = sqlite3_value_int (argv[0]); + } + + if (!createIsoMetadataTables (sqlite, relaxed)) + goto error; + updateSpatiaLiteHistory (sqlite, "*** ISO Metadata ***", NULL, + "ISO Metadata tables successfully created"); + sqlite3_result_int (context, 1); + return; + + error: + sqlite3_result_int (context, 0); + return; +} + +static void +fnct_GetIsoMetadataId (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ GetIsoMetadataId(String fileIdentifier) +/ +/ return the ID of the row corresponding to "fileIdentifier" +/ 0 on failure / -1 on invalid argument +*/ + const char *fileIdentifier; + sqlite3_int64 id; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + fileIdentifier = (const char *) sqlite3_value_text (argv[0]); + if (!get_iso_metadata_id (sqlite, fileIdentifier, &id)) + sqlite3_result_int (context, 0); + else + sqlite3_result_int64 (context, id); +} + +static void +fnct_RegisterIsoMetadata (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ RegisterIsoMetadata(String scope, BLOB metadata) +/ or +/ RegisterIsoMetadata(String scope, BLOB metadata, +/ Integer id) +/ or +/ RegisterIsoMetadata(String scope, BLOB metadata, +/ String fileIdentifier) +/ +/ insert or updates a Raster Styled Layer +/ returns 1 on success +/ 0 on failure, -1 on invalid arguments +*/ + int ret; + const char *scope; + const unsigned char *p_blob; + int n_bytes; + sqlite3_int64 id = -1; + const char *fileIdentifier = NULL; + sqlite3 *sqlite = sqlite3_context_db_handle (context); + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (argc == 3) + { + /* optional extra args */ + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER || + sqlite3_value_type (argv[2]) == SQLITE_TEXT) + ; + else + { + sqlite3_result_int (context, -1); + return; + } + } + scope = (const char *) sqlite3_value_text (argv[0]); + p_blob = sqlite3_value_blob (argv[1]); + n_bytes = sqlite3_value_bytes (argv[1]); + if (argc == 3) + { + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + id = sqlite3_value_int64 (argv[2]); + if (sqlite3_value_type (argv[2]) == SQLITE_TEXT) + fileIdentifier = (const char *) sqlite3_value_text (argv[2]); + } + ret = register_iso_metadata (sqlite, scope, p_blob, n_bytes, &id, + fileIdentifier); + sqlite3_result_int (context, ret); +} + +static void +fnct_XB_Create (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_Create(BLOB XMLdocument) +/ XB_Create(BLOB XMLdocument, bool compressed) +/ XB_Create(BLOB XMLdocument, bool compressed, text SchemaURI) +/ XB_Create(BLOB XMLdocument, bool compressed, int InternalSchemaURI) +/ +/ returns the current XmlBlob by parsing an XMLdocument +/ or NULL if any error is encountered +/ +/ - the XMLdocument should be "well formed" +/ - if *compressed* is TRUE (default) the XmlBlob would be zipped +/ - if *SchemaURI* in not NULL then only XMLdocuments succesfully +/ passing a formal Schema Validation will be accepted as valid +/ - if *InternalSchamaURI* is defined (any numeric value) then an +/ attempt will be made in order to identify a SchemaURI defined +/ internally within the XMLDocument itself. +/ if such internal SchemaURI doesn't exists, or if the formal +/ Schema Validation fails, NULL will be returned. +*/ + int len; + unsigned char *p_result = NULL; + const unsigned char *xml; + int xml_len; + int compressed = 1; + int use_internal_schema_uri = 0; + const char *schemaURI = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (argc >= 2) + { + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + } + if (argc == 3) + { + if (sqlite3_value_type (argv[2]) == SQLITE_INTEGER) + use_internal_schema_uri = 1; + else if (sqlite3_value_type (argv[2]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + } + xml = (const unsigned char *) sqlite3_value_blob (argv[0]); + xml_len = sqlite3_value_bytes (argv[0]); + if (argc >= 2) + compressed = sqlite3_value_int (argv[1]); + if (use_internal_schema_uri) + { + /* using the SchemaURI internally defined within the XMLDocument */ + char *internalSchemaURI = + gaiaXmlGetInternalSchemaURI (sqlite3_user_data (context), xml, + xml_len); + if (internalSchemaURI == NULL) + { + /* unable to identify the SchemaURI */ + p_result = NULL; + } + else + { + /* ok, attempting to validate using the internal SchemaURI */ + gaiaXmlToBlob (sqlite3_user_data (context), xml, xml_len, + compressed, internalSchemaURI, &p_result, + &len, NULL, NULL); + free (internalSchemaURI); + } + } + else + { + if (argc == 3) + schemaURI = (const char *) sqlite3_value_text (argv[2]); + gaiaXmlToBlob (sqlite3_user_data (context), xml, xml_len, + compressed, schemaURI, &p_result, &len, NULL, NULL); + } + if (p_result == NULL) + { + sqlite3_result_null (context); + return; + } + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_XB_LoadXML (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_LoadXML(text path-or-URL) +/ +/ returns a generic Text by parsing an XML Document +/ or NULL if any error is encountered +/ +*/ + const char *path_or_url; + unsigned char *xml; + int xml_len; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + path_or_url = (const char *) sqlite3_value_text (argv[0]); + +/* acquiring the XML Document as a Blob */ + ret = gaiaXmlLoad + (sqlite3_user_data (context), path_or_url, &xml, &xml_len, NULL); + if (!ret || xml == NULL) + { + sqlite3_result_null (context); + return; + } + + sqlite3_result_blob (context, xml, xml_len, free); +} + +static void +fnct_XB_GetPayload (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_GetPayload(XmlBLOB) +/ XB_GetPayload(XmlBLOB, int format) +/ +/ returns the current XMLDocument (as BLOB) by parsing an XmlBLOB +/ or NULL if any error is encountered +/ +/ the returned buffer will be always null-terminated +*/ + const unsigned char *p_blob; + int n_bytes; + unsigned char *out; + int out_len; + int indent = -1; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (argc == 2) + { + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (argc == 2) + indent = sqlite3_value_int (argv[1]); + gaiaXmlFromBlob (p_blob, n_bytes, indent, &out, &out_len); + if (out == NULL) + { + sqlite3_result_null (context); + return; + } + sqlite3_result_blob (context, out, out_len, free); +} + +static void +fnct_XB_StoreXML (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_StoreXML(XmlBLOB, text path) +/ XB_StoreXML(XmlBLOB, taxt path, int format) +/ +/ exports the current XMLDocument into an external file by parsing an XmlBLOB +/ return 1 on success, 0 on failure, -1 on invalid args +/ +*/ + const unsigned char *p_blob; + int n_bytes; + const char *path; + int indent = -1; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + if (argc == 3) + { + if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) + { + sqlite3_result_int (context, -1); + return; + } + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + path = (const char *) sqlite3_value_text (argv[1]); + if (argc == 3) + indent = sqlite3_value_int (argv[2]); + if (!gaiaXmlStore (p_blob, n_bytes, path, indent)) + { + sqlite3_result_int (context, 0); + return; + } + sqlite3_result_int (context, 1); +} + +static void +fnct_XB_GetDocument (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_GetDocument(XmlBLOB) +/ XB_GetDocument(XmlBLOB, int indent) +/ +/ returns the current XMLDocument (as UTF-8 TEXT) by parsing an XmlBLOB +/ or NULL if any error is encountered +/ +/ the returned buffer will be always null-terminated +*/ + const unsigned char *p_blob; + int n_bytes; + char *xml; + int len; + int indent = -1; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (argc == 2) + { + if (sqlite3_value_type (argv[1]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (argc == 2) + indent = sqlite3_value_int (argv[1]); + xml = gaiaXmlTextFromBlob (p_blob, n_bytes, indent); + if (xml == NULL) + { + sqlite3_result_null (context); + return; + } + len = strlen ((const char *) xml); + sqlite3_result_text (context, (char *) xml, len, free); +} + +static void +fnct_XB_SchemaValidate (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ XB_SchemaValidate(XmlBLOB, text SchemaURI) +/ XB_SchemaValidate(XmlBLOB, text SchemaURI, bool compressed) +/ XB_SchemaValidate(XmlBLOB, int InternalSchemaURI) +/ XB_SchemaValidate(XmlBLOB, int InternalSchemaURI, bool compressed) +/ +/ returns a validated XmlBLOB object if the SchemaValidation was succesfull +/ or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + const unsigned char *p_blob; + int n_bytes; + unsigned char *xml; + int xml_len; + int compressed = 1; + const char *schemaURI = NULL; + int use_internal_schema_uri = 0; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + use_internal_schema_uri = 1; + else if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + if (argc == 3) + { + if (sqlite3_value_type (argv[2]) != SQLITE_INTEGER) + { + sqlite3_result_null (context); + return; + } + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + if (argc == 3) + compressed = sqlite3_value_int (argv[2]); + gaiaXmlFromBlob (p_blob, n_bytes, -1, &xml, &xml_len); + if (xml == NULL) + { + sqlite3_result_null (context); + return; + } + if (use_internal_schema_uri) + { + /* using the SchemaURI internally defined within the XMLDocument */ + char *internalSchemaURI = + gaiaXmlGetInternalSchemaURI (sqlite3_user_data (context), xml, + xml_len); + if (internalSchemaURI == NULL) + { + /* unable to identify the SchemaURI */ + p_result = NULL; + } + else + { + /* ok, attempting to validate using the internal SchemaURI */ + gaiaXmlToBlob (sqlite3_user_data (context), xml, xml_len, + compressed, internalSchemaURI, &p_result, + &len, NULL, NULL); + free (internalSchemaURI); + } + } + else + { + schemaURI = (const char *) sqlite3_value_text (argv[1]); + gaiaXmlToBlob (sqlite3_user_data (context), xml, xml_len, + compressed, schemaURI, &p_result, &len, NULL, NULL); + } + free (xml); + if (p_result == NULL) + { + sqlite3_result_null (context); + return; + } + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_XB_Compress (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_Compress(XmlBLOB) +/ +/ returns a compressed XmlBLOB object +/ or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + const unsigned char *p_blob; + int n_bytes; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + gaiaXmlBlobCompression (p_blob, n_bytes, 1, &p_result, &len); + if (p_result == NULL) + { + sqlite3_result_null (context); + return; + } + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_XB_Uncompress (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_Uncompress(XmlBLOB) +/ +/ returns an uncompressed XmlBLOB object +/ or NULL if any error is encountered +*/ + int len; + unsigned char *p_result = NULL; + const unsigned char *p_blob; + int n_bytes; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + gaiaXmlBlobCompression (p_blob, n_bytes, 0, &p_result, &len); + if (p_result == NULL) + { + sqlite3_result_null (context); + return; + } + sqlite3_result_blob (context, p_result, len, free); +} + +static void +fnct_XB_IsValid (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_IsValid(XmlBLOB) +/ +/ returns TRUE if the current BLOB is an XmlBLOB, FALSE if not +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + ret = gaiaIsValidXmlBlob (p_blob, n_bytes); + sqlite3_result_int (context, ret); +} + +static void +fnct_XB_IsCompressed (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ XB_IsCompressed(XmlBLOB) +/ +/ returns TRUE if the current BLOB is a compressed XmlBLOB, +/ FALSE if it's a valid uncompressed XmlBLOB +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + ret = gaiaIsCompressedXmlBlob (p_blob, n_bytes); + sqlite3_result_int (context, ret); +} + +static void +fnct_XB_IsSchemaValidated (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ XB_IsSchemaValidated(XmlBLOB) +/ +/ returns TRUE if the current BLOB is a Schema validated XmlBLOB, +/ FALSE if it's a valid but not validated XmlBLOB +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + ret = gaiaIsSchemaValidatedXmlBlob (p_blob, n_bytes); + sqlite3_result_int (context, ret); +} + +static void +fnct_XB_IsIsoMetadata (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ XB_IsIsoMetadata(XmlBLOB) +/ +/ returns TRUE if the current BLOB is an ISO Metadata XmlBLOB, +/ FALSE if it's a valid XmlBLOB but not an ISO Metadata +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + ret = gaiaIsIsoMetadataXmlBlob (p_blob, n_bytes); + sqlite3_result_int (context, ret); +} + +static void +fnct_XB_IsSldSeVectorStyle (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ XB_IsSldSeVectorStyle(XmlBLOB) +/ +/ returns TRUE if the current BLOB is an SLD/SE Vector Style XmlBLOB, +/ FALSE if it's a valid XmlBLOB but not an SLD/SE Style +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + ret = gaiaIsSldSeVectorStyleXmlBlob (p_blob, n_bytes); + sqlite3_result_int (context, ret); +} + +static void +fnct_XB_IsSldSeRasterStyle (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ XB_IsSldSeRasterStyle(XmlBLOB) +/ +/ returns TRUE if the current BLOB is an SLD/SE Raster Style XmlBLOB, +/ FALSE if it's a valid XmlBLOB but not an SLD/SE Style +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + ret = gaiaIsSldSeRasterStyleXmlBlob (p_blob, n_bytes); + sqlite3_result_int (context, ret); +} + +static void +fnct_XB_IsSldStyle (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_IsSldStyle(XmlBLOB) +/ +/ returns TRUE if the current BLOB is an SLD Style XmlBLOB, +/ FALSE if it's a valid XmlBLOB but not an SLD Style +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + ret = gaiaIsSldStyleXmlBlob (p_blob, n_bytes); + sqlite3_result_int (context, ret); +} + +static void +fnct_XB_IsSvg (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_IsSvg(XmlBLOB) +/ +/ returns TRUE if the current BLOB is an SLD/SE Style XmlBLOB, +/ FALSE if it's a valid XmlBLOB but not an SLD/SE Style +/ or -1 if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_int (context, -1); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + ret = gaiaIsSvgXmlBlob (p_blob, n_bytes); + sqlite3_result_int (context, ret); +} + +static void +fnct_XB_GetDocumentSize (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ XB_GetDocumentSize(XmlBLOB) +/ +/ if the BLOB is a valid XmlBLOB will return the XMLDocument size (in bytes) +/ or NULL if any error is encountered +*/ + unsigned char *p_blob; + int n_bytes; + int ret; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = (unsigned char *) sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + ret = gaiaXmlBlobGetDocumentSize (p_blob, n_bytes); + if (ret < 0) + sqlite3_result_null (context); + else + sqlite3_result_int (context, ret); +} + +static void +fnct_XB_GetSchemaURI (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ XB_GetSchemaURI(XmlBLOB) +/ +/ if the BLOB is a valid XmlBLOB containing a SchemaURI then +/ the SchemaURI will be returned +/ return NULL on any other case +*/ + const unsigned char *p_blob; + int n_bytes; + char *schema_uri; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + schema_uri = gaiaXmlBlobGetSchemaURI (p_blob, n_bytes); + if (schema_uri == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, schema_uri, strlen (schema_uri), free); +} + +static void +fnct_XB_GetFileId (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_GetFileId(XmlBLOB) +/ +/ if the BLOB is a valid XmlBLOB containing a FileIdentifier then +/ the FileIdentifier will be returned +/ return NULL on any other case +*/ + const unsigned char *p_blob; + int n_bytes; + char *file_identifier; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + file_identifier = gaiaXmlBlobGetFileId (p_blob, n_bytes); + if (file_identifier == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, file_identifier, + strlen (file_identifier), free); +} + +static void +fnct_XB_GetParentId (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_GetParentId(XmlBLOB) +/ +/ if the BLOB is a valid XmlBLOB containing a ParentIdentifier then +/ the ParentIdentifier will be returned +/ return NULL on any other case +*/ + const unsigned char *p_blob; + int n_bytes; + char *parent_identifier; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + parent_identifier = gaiaXmlBlobGetParentId (p_blob, n_bytes); + if (parent_identifier == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, parent_identifier, + strlen (parent_identifier), free); +} + +static void +fnct_XB_SetFileId (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_SetFileId(XmlBLOB, Text value) +/ +/ if the BLOB is a valid XmlBLOB of the ISO-Metadata type +/ already containing a FileID then this function will +/ return a new XmlBLOB containing the new FileID +/ return NULL on any other case +*/ + const unsigned char *p_blob; + int n_bytes; + unsigned char *new_blob; + int new_bytes; + const char *identifier; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + identifier = (const char *) sqlite3_value_text (argv[1]); + if (!gaiaXmlBlobSetFileId + (sqlite3_user_data (context), p_blob, n_bytes, identifier, &new_blob, + &new_bytes)) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, new_blob, new_bytes, free); +} + +static void +fnct_XB_SetParentId (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_SetParentId(XmlBLOB, Text value) +/ +/ if the BLOB is a valid XmlBLOB of the ISO-Metadata type +/ already containing a ParentID then this function will +/ return a new XmlBLOB containing the new ParentID +/ return NULL on any other case +*/ + const unsigned char *p_blob; + int n_bytes; + unsigned char *new_blob; + int new_bytes; + const char *identifier; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + identifier = (const char *) sqlite3_value_text (argv[1]); + if (!gaiaXmlBlobSetParentId + (sqlite3_user_data (context), p_blob, n_bytes, identifier, &new_blob, + &new_bytes)) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, new_blob, new_bytes, free); +} + +static void +fnct_XB_AddFileId (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_AddFileId(XmlBLOB, Text value, Text ns_id, Text uri_id, Text ns_charstr, Text uri_charstr) +/ +/ if the BLOB is a valid XmlBLOB of the ISO-Metadata type +/ not containing a FileID then this function will +/ return a new XmlBLOB containing the new FileID +/ return NULL on any other case +*/ + const unsigned char *p_blob; + int n_bytes; + unsigned char *new_blob; + int new_bytes; + const char *identifier; + const char *ns_id = NULL; + const char *uri_id = NULL; + const char *ns_charstr = NULL; + const char *uri_charstr = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_TEXT + || sqlite3_value_type (argv[2]) == SQLITE_NULL) + ; + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_TEXT + || sqlite3_value_type (argv[3]) == SQLITE_NULL) + ; + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[4]) == SQLITE_TEXT + || sqlite3_value_type (argv[4]) == SQLITE_NULL) + ; + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[5]) == SQLITE_TEXT + || sqlite3_value_type (argv[5]) == SQLITE_NULL) + ; + else + { + sqlite3_result_null (context); + return; + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + identifier = (const char *) sqlite3_value_text (argv[1]); + if (sqlite3_value_type (argv[2]) == SQLITE_TEXT) + ns_id = (const char *) sqlite3_value_text (argv[2]); + if (sqlite3_value_type (argv[3]) == SQLITE_TEXT) + uri_id = (const char *) sqlite3_value_text (argv[3]); + if (sqlite3_value_type (argv[4]) == SQLITE_TEXT) + ns_charstr = (const char *) sqlite3_value_text (argv[4]); + if (sqlite3_value_type (argv[5]) == SQLITE_TEXT) + uri_charstr = (const char *) sqlite3_value_text (argv[5]); + if (!gaiaXmlBlobAddFileId + (sqlite3_user_data (context), p_blob, n_bytes, identifier, ns_id, + uri_id, ns_charstr, uri_charstr, &new_blob, &new_bytes)) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, new_blob, new_bytes, free); +} + +static void +fnct_XB_AddParentId (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_AddParentId(XmlBLOB, Text value, Text ns_id, Text uri_id, Text ns_charstr, Text url_charstr) +/ +/ if the BLOB is a valid XmlBLOB of the ISO-Metadata type +/ not containing a ParentID then this function will +/ return a new XmlBLOB containing the new ParentID +/ return NULL on any other case +*/ + const unsigned char *p_blob; + int n_bytes; + unsigned char *new_blob; + int new_bytes; + const char *identifier; + const char *ns_id = NULL; + const char *uri_id = NULL; + const char *ns_charstr = NULL; + const char *uri_charstr = NULL; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[1]) != SQLITE_TEXT) + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[2]) == SQLITE_TEXT + || sqlite3_value_type (argv[2]) == SQLITE_NULL) + ; + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[3]) == SQLITE_TEXT + || sqlite3_value_type (argv[3]) == SQLITE_NULL) + ; + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[4]) == SQLITE_TEXT + || sqlite3_value_type (argv[4]) == SQLITE_NULL) + ; + else + { + sqlite3_result_null (context); + return; + } + if (sqlite3_value_type (argv[5]) == SQLITE_TEXT + || sqlite3_value_type (argv[5]) == SQLITE_NULL) + ; + else + { + sqlite3_result_null (context); + return; + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + identifier = (const char *) sqlite3_value_text (argv[1]); + if (sqlite3_value_type (argv[2]) == SQLITE_TEXT) + ns_id = (const char *) sqlite3_value_text (argv[2]); + if (sqlite3_value_type (argv[3]) == SQLITE_TEXT) + uri_id = (const char *) sqlite3_value_text (argv[3]); + if (sqlite3_value_type (argv[4]) == SQLITE_TEXT) + ns_charstr = (const char *) sqlite3_value_text (argv[4]); + if (sqlite3_value_type (argv[5]) == SQLITE_TEXT) + uri_charstr = (const char *) sqlite3_value_text (argv[5]); + if (!gaiaXmlBlobAddParentId + (sqlite3_user_data (context), p_blob, n_bytes, identifier, ns_id, + uri_id, ns_charstr, uri_charstr, &new_blob, &new_bytes)) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, new_blob, new_bytes, free); +} + +static void +fnct_XB_GetName (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_GetName(XmlBLOB) +/ +/ if the BLOB is a valid XmlBLOB containing a Name then +/ the Name will be returned +/ return NULL on any other case +*/ + const unsigned char *p_blob; + int n_bytes; + char *name; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + name = gaiaXmlBlobGetName (p_blob, n_bytes); + if (name == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, name, strlen (name), free); +} + +static void +fnct_XB_GetTitle (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_GetTitle(XmlBLOB) +/ +/ if the BLOB is a valid XmlBLOB containing a Title then +/ the Title will be returned +/ return NULL on any other case +*/ + const unsigned char *p_blob; + int n_bytes; + char *title; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + title = gaiaXmlBlobGetTitle (p_blob, n_bytes); + if (title == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, title, strlen (title), free); +} + +static void +fnct_XB_GetAbstract (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_GetAbstract(XmlBLOB) +/ +/ if the BLOB is a valid XmlBLOB containing an Abstract then +/ the Abstract will be returned +/ return NULL on any other case +*/ + const unsigned char *p_blob; + int n_bytes; + char *abstract; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + abstract = gaiaXmlBlobGetAbstract (p_blob, n_bytes); + if (abstract == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, abstract, strlen (abstract), free); +} + +static void +fnct_XB_GetGeometry (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_GetGeometry(XmlBLOB) +/ +/ if the BLOB is a valid XmlBLOB containing a Geometry then +/ the Geometry will be returned +/ return NULL on any other case +*/ + const unsigned char *p_blob; + int n_bytes; + int blob_len; + unsigned char *blob; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + gaiaXmlBlobGetGeometry (p_blob, n_bytes, &blob, &blob_len); + if (blob == NULL) + sqlite3_result_null (context); + else + sqlite3_result_blob (context, blob, blob_len, free); +} + +static void +fnct_XB_GetEncoding (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_GetEncoding(XmlBLOB) +/ +/ if the BLOB is a valid XmlBLOB explicitly defining an encoding then +/ the charset name will be returned +/ return NULL on any other case +*/ + const unsigned char *p_blob; + int n_bytes; + char *encoding; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + p_blob = sqlite3_value_blob (argv[0]); + n_bytes = sqlite3_value_bytes (argv[0]); + encoding = gaiaXmlBlobGetEncoding (p_blob, n_bytes); + if (encoding == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, encoding, strlen (encoding), free); +} + +static void +fnct_XB_GetInternalSchemaURI (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ XB_GetInternalSchemaURI(XmlDocument) +/ +/ if the XMLDocument is valid and it contains an internally +/ defined SchemaURI then this SchemaURI will be returned +/ return NULL on any other case +*/ + const unsigned char *xml; + int xml_len; + char *schema_uri; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_BLOB) + { + sqlite3_result_null (context); + return; + } + xml = sqlite3_value_blob (argv[0]); + xml_len = sqlite3_value_bytes (argv[0]); + schema_uri = + gaiaXmlGetInternalSchemaURI (sqlite3_user_data (context), xml, xml_len); + if (schema_uri == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, schema_uri, strlen (schema_uri), free); +} + +static void +fnct_XB_GetLastParseError (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ XB_GetLastParseError() +/ +/ return the most recent XML Parse error/warning (if any) +/ return NULL on any other case +*/ + char *msg; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + msg = gaiaXmlBlobGetLastParseError (sqlite3_user_data (context)); + if (msg == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, msg, strlen (msg), SQLITE_STATIC); +} + +static void +fnct_XB_GetLastValidateError (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ XB_GetLastValidateError() +/ +/ return the most recent XML Validate error/warning (if any) +/ return NULL on any other case +*/ + char *msg; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + msg = gaiaXmlBlobGetLastValidateError (sqlite3_user_data (context)); + if (msg == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, msg, strlen (msg), SQLITE_STATIC); +} + +static void +fnct_XB_IsValidXPathExpression (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ XB_IsValidXPathExpression(text XPathExpression) +/ +/ returns TRUE if the current arg is a valid XPathExpression, +/ FALSE if it's not +/ or -1 if any error is encountered +*/ + int ret; + const char *xpath; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + if (sqlite3_value_type (argv[0]) != SQLITE_TEXT) + { + sqlite3_result_int (context, -1); + return; + } + xpath = (const char *) sqlite3_value_text (argv[0]); + ret = gaiaIsValidXPathExpression (sqlite3_user_data (context), xpath); + sqlite3_result_int (context, ret); +} + +static void +fnct_XB_GetLastXPathError (sqlite3_context * context, int argc, + sqlite3_value ** argv) +{ +/* SQL function: +/ XB_GetLastXPathError() +/ +/ return the most recent XML Validate error/warning (if any) +/ return NULL on any other case +*/ + char *msg; + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + msg = gaiaXmlBlobGetLastXPathError (sqlite3_user_data (context)); + if (msg == NULL) + sqlite3_result_null (context); + else + sqlite3_result_text (context, msg, strlen (msg), SQLITE_STATIC); +} + +static void +fnct_XB_CacheFlush (sqlite3_context * context, int argc, sqlite3_value ** argv) +{ +/* SQL function: +/ XB_CacheFlush() +/ +/ resets the Internal XML Schema Cache to its initial empty state +/ +/ returns TRUE on success +*/ + int i; + struct splite_xmlSchema_cache_item *p_xmlSchema; + struct splite_internal_cache *cache = sqlite3_user_data (context); + + GAIA_UNUSED (); /* LCOV_EXCL_LINE */ + + for (i = 0; i < MAX_XMLSCHEMA_CACHE; i++) + { + /* freeing the XmlSchema cache */ + p_xmlSchema = &(cache->xmlSchemaCache[i]); + splite_free_xml_schema_cache_item (p_xmlSchema); + } + sqlite3_result_int (context, 1); +} + +#endif /* end including LIBXML2 */ + +SPATIALITE_PRIVATE void * +register_spatialite_sql_functions (void *p_db, const void *p_cache) +{ + sqlite3 *db = p_db; + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + const char *security_level; + sqlite3_create_function (db, "spatialite_version", 0, SQLITE_ANY, 0, + fnct_spatialite_version, 0, 0); + sqlite3_create_function (db, "spatialite_target_cpu", 0, SQLITE_ANY, 0, + fnct_spatialite_target_cpu, 0, 0); + sqlite3_create_function (db, "proj4_version", 0, SQLITE_ANY, 0, + fnct_proj4_version, 0, 0); + sqlite3_create_function (db, "geos_version", 0, SQLITE_ANY, 0, + fnct_geos_version, 0, 0); + sqlite3_create_function (db, "lwgeom_version", 0, SQLITE_ANY, 0, + fnct_lwgeom_version, 0, 0); + sqlite3_create_function (db, "libxml2_version", 0, SQLITE_ANY, 0, + fnct_libxml2_version, 0, 0); + sqlite3_create_function (db, "HasProj", 0, SQLITE_ANY, 0, + fnct_has_proj, 0, 0); + sqlite3_create_function (db, "HasGeos", 0, SQLITE_ANY, 0, + fnct_has_geos, 0, 0); + sqlite3_create_function (db, "HasGeosAdvanced", 0, SQLITE_ANY, 0, + fnct_has_geos_advanced, 0, 0); + sqlite3_create_function (db, "HasGeosTrunk", 0, SQLITE_ANY, 0, + fnct_has_geos_trunk, 0, 0); + sqlite3_create_function (db, "HasLwGeom", 0, SQLITE_ANY, 0, + fnct_has_lwgeom, 0, 0); + sqlite3_create_function (db, "HasMathSql", 0, SQLITE_ANY, 0, + fnct_has_math_sql, 0, 0); + sqlite3_create_function (db, "HasGeoCallbacks", 0, SQLITE_ANY, 0, + fnct_has_geo_callbacks, 0, 0); + sqlite3_create_function (db, "HasIconv", 0, SQLITE_ANY, 0, + fnct_has_iconv, 0, 0); + sqlite3_create_function (db, "HasFreeXL", 0, SQLITE_ANY, 0, + fnct_has_freeXL, 0, 0); + sqlite3_create_function (db, "HasEpsg", 0, SQLITE_ANY, 0, + fnct_has_epsg, 0, 0); + sqlite3_create_function (db, "HasLibXML2", 0, SQLITE_ANY, 0, + fnct_has_libxml2, 0, 0); + sqlite3_create_function (db, "HasGeoPackage", 0, SQLITE_ANY, 0, + fnct_has_geopackage, 0, 0); + sqlite3_create_function (db, "GeometryConstraints", 3, SQLITE_ANY, 0, + fnct_GeometryConstraints, 0, 0); + sqlite3_create_function (db, "GeometryConstraints", 4, SQLITE_ANY, 0, + fnct_GeometryConstraints, 0, 0); + sqlite3_create_function (db, "RTreeAlign", 3, SQLITE_ANY, 0, + fnct_RTreeAlign, 0, 0); + sqlite3_create_function (db, "IsValidNoDataPixel", 3, SQLITE_ANY, 0, + fnct_IsValidNoDataPixel, 0, 0); + sqlite3_create_function (db, "IsValidRasterPalette", 2, SQLITE_ANY, 0, + fnct_IsValidRasterPalette, 0, 0); + sqlite3_create_function (db, "IsValidRasterStatistics", 2, SQLITE_ANY, 0, + fnct_IsValidRasterStatistics, 0, 0); + sqlite3_create_function (db, "IsValidRasterStatistics", 3, SQLITE_ANY, 0, + fnct_IsValidRasterStatistics, 0, 0); + sqlite3_create_function (db, "IsValidRasterTile", 4, SQLITE_ANY, 0, + fnct_IsValidRasterTile, 0, 0); + sqlite3_create_function (db, "IsPopulatedCoverage", 1, SQLITE_ANY, 0, + fnct_IsPopulatedCoverage, 0, 0); + sqlite3_create_function (db, "CheckSpatialMetaData", 0, SQLITE_ANY, 0, + fnct_CheckSpatialMetaData, 0, 0); + sqlite3_create_function (db, "CheckGeoPackageMetaData", 0, SQLITE_ANY, 0, + fnct_CheckGeoPackageMetaData, 0, 0); + sqlite3_create_function (db, "AutoFDOStart", 0, SQLITE_ANY, 0, + fnct_AutoFDOStart, 0, 0); + sqlite3_create_function (db, "AutoFDOStop", 0, SQLITE_ANY, 0, + fnct_AutoFDOStop, 0, 0); + sqlite3_create_function (db, "InitFDOSpatialMetaData", 0, SQLITE_ANY, 0, + fnct_InitFDOSpatialMetaData, 0, 0); + sqlite3_create_function (db, "AddFDOGeometryColumn", 6, SQLITE_ANY, 0, + fnct_AddFDOGeometryColumn, 0, 0); + sqlite3_create_function (db, "RecoverFDOGeometryColumn", 6, SQLITE_ANY, 0, + fnct_RecoverFDOGeometryColumn, 0, 0); + sqlite3_create_function (db, "DiscardFDOGeometryColumn", 2, SQLITE_ANY, 0, + fnct_DiscardFDOGeometryColumn, 0, 0); + sqlite3_create_function (db, "InitSpatialMetaData", 0, SQLITE_ANY, 0, + fnct_InitSpatialMetaData, 0, 0); + sqlite3_create_function (db, "InitSpatialMetaData", 1, SQLITE_ANY, 0, + fnct_InitSpatialMetaData, 0, 0); + sqlite3_create_function (db, "InitSpatialMetaData", 2, SQLITE_ANY, 0, + fnct_InitSpatialMetaData, 0, 0); + sqlite3_create_function (db, "InsertEpsgSrid", 1, SQLITE_ANY, 0, + fnct_InsertEpsgSrid, 0, 0); + sqlite3_create_function (db, "AddGeometryColumn", 4, SQLITE_ANY, 0, + fnct_AddGeometryColumn, 0, 0); + sqlite3_create_function (db, "AddGeometryColumn", 5, SQLITE_ANY, 0, + fnct_AddGeometryColumn, 0, 0); + sqlite3_create_function (db, "AddGeometryColumn", 6, SQLITE_ANY, 0, + fnct_AddGeometryColumn, 0, 0); + sqlite3_create_function (db, "RecoverGeometryColumn", 4, SQLITE_ANY, 0, + fnct_RecoverGeometryColumn, 0, 0); + sqlite3_create_function (db, "RecoverGeometryColumn", 5, SQLITE_ANY, 0, + fnct_RecoverGeometryColumn, 0, 0); + sqlite3_create_function (db, "DiscardGeometryColumn", 2, SQLITE_ANY, 0, + fnct_DiscardGeometryColumn, 0, 0); + sqlite3_create_function (db, "RegisterVirtualGeometry", 1, SQLITE_ANY, 0, + fnct_RegisterVirtualGeometry, 0, 0); + sqlite3_create_function (db, "DropVirtualGeometry", 1, SQLITE_ANY, 0, + fnct_DropVirtualGeometry, 0, 0); + sqlite3_create_function (db, "RecoverSpatialIndex", 0, SQLITE_ANY, 0, + fnct_RecoverSpatialIndex, 0, 0); + sqlite3_create_function (db, "RecoverSpatialIndex", 1, SQLITE_ANY, 0, + fnct_RecoverSpatialIndex, 0, 0); + sqlite3_create_function (db, "RecoverSpatialIndex", 2, SQLITE_ANY, 0, + fnct_RecoverSpatialIndex, 0, 0); + sqlite3_create_function (db, "RecoverSpatialIndex", 3, SQLITE_ANY, 0, + fnct_RecoverSpatialIndex, 0, 0); + sqlite3_create_function (db, "CheckSpatialIndex", 0, SQLITE_ANY, 0, + fnct_CheckSpatialIndex, 0, 0); + sqlite3_create_function (db, "CheckSpatialIndex", 2, SQLITE_ANY, 0, + fnct_CheckSpatialIndex, 0, 0); + sqlite3_create_function (db, "CheckShadowedRowid", 1, SQLITE_ANY, 0, + fnct_CheckShadowedRowid, 0, 0); + sqlite3_create_function (db, "CheckWithoutRowid", 1, SQLITE_ANY, 0, + fnct_CheckWithoutRowid, 0, 0); + sqlite3_create_function (db, "CreateSpatialIndex", 2, SQLITE_ANY, 0, + fnct_CreateSpatialIndex, 0, 0); + sqlite3_create_function (db, "CreateMbrCache", 2, SQLITE_ANY, 0, + fnct_CreateMbrCache, 0, 0); + sqlite3_create_function (db, "DisableSpatialIndex", 2, SQLITE_ANY, 0, + fnct_DisableSpatialIndex, 0, 0); + sqlite3_create_function (db, "RebuildGeometryTriggers", 2, SQLITE_ANY, 0, + fnct_RebuildGeometryTriggers, 0, 0); + sqlite3_create_function (db, "UpdateLayerStatistics", 0, SQLITE_ANY, 0, + fnct_UpdateLayerStatistics, 0, 0); + sqlite3_create_function (db, "UpdateLayerStatistics", 1, SQLITE_ANY, 0, + fnct_UpdateLayerStatistics, 0, 0); + sqlite3_create_function (db, "UpdateLayerStatistics", 2, SQLITE_ANY, 0, + fnct_UpdateLayerStatistics, 0, 0); + sqlite3_create_function (db, "GetLayerExtent", 1, SQLITE_ANY, 0, + fnct_GetLayerExtent, 0, 0); + sqlite3_create_function (db, "GetLayerExtent", 2, SQLITE_ANY, 0, + fnct_GetLayerExtent, 0, 0); + sqlite3_create_function (db, "GetLayerExtent", 3, SQLITE_ANY, 0, + fnct_GetLayerExtent, 0, 0); + sqlite3_create_function (db, "InvalidateLayerStatistics", 0, SQLITE_ANY, 0, + fnct_InvalidateLayerStatistics, 0, 0); + sqlite3_create_function (db, "InvalidateLayerStatistics", 1, SQLITE_ANY, 0, + fnct_InvalidateLayerStatistics, 0, 0); + sqlite3_create_function (db, "InvalidateLayerStatistics", 2, SQLITE_ANY, 0, + fnct_InvalidateLayerStatistics, 0, 0); + sqlite3_create_function (db, "CreateRasterCoveragesTable", 0, SQLITE_ANY, + 0, fnct_CreateRasterCoveragesTable, 0, 0); + sqlite3_create_function (db, "CreateMetaCatalogTables", 1, SQLITE_ANY, 0, + fnct_CreateMetaCatalogTables, 0, 0); + sqlite3_create_function (db, "UpdateMetaCatalogStatistics", 3, SQLITE_ANY, + 0, fnct_UpdateMetaCatalogStatistics, 0, 0); + sqlite3_create_function (db, "UpdateMetaCatalogStatistics", 4, SQLITE_ANY, + 0, fnct_UpdateMetaCatalogStatistics, 0, 0); + sqlite3_create_function (db, "AsText", 1, SQLITE_ANY, 0, fnct_AsText, 0, 0); + sqlite3_create_function (db, "ST_AsText", 1, SQLITE_ANY, 0, fnct_AsText, 0, + 0); + sqlite3_create_function (db, "AsWkt", 1, SQLITE_ANY, 0, fnct_AsWkt, 0, 0); + sqlite3_create_function (db, "AsWkt", 2, SQLITE_ANY, 0, fnct_AsWkt, 0, 0); + sqlite3_create_function (db, "AsSvg", 1, SQLITE_ANY, 0, fnct_AsSvg1, 0, 0); + sqlite3_create_function (db, "AsSvg", 2, SQLITE_ANY, 0, fnct_AsSvg2, 0, 0); + sqlite3_create_function (db, "AsSvg", 3, SQLITE_ANY, 0, fnct_AsSvg3, 0, 0); + +#ifndef OMIT_PROJ /* PROJ.4 is strictly required to support KML */ + sqlite3_create_function (db, "AsKml", 1, SQLITE_ANY, cache, fnct_AsKml, 0, + 0); + sqlite3_create_function (db, "AsKml", 2, SQLITE_ANY, cache, fnct_AsKml, 0, + 0); + sqlite3_create_function (db, "AsKml", 3, SQLITE_ANY, cache, fnct_AsKml, 0, + 0); + sqlite3_create_function (db, "AsKml", 4, SQLITE_ANY, cache, fnct_AsKml, 0, + 0); +#endif /* end including PROJ.4 */ + + sqlite3_create_function (db, "AsGml", 1, SQLITE_ANY, 0, fnct_AsGml, 0, 0); + sqlite3_create_function (db, "AsGml", 2, SQLITE_ANY, 0, fnct_AsGml, 0, 0); + sqlite3_create_function (db, "AsGml", 3, SQLITE_ANY, 0, fnct_AsGml, 0, 0); + sqlite3_create_function (db, "GeomFromGml", 1, SQLITE_ANY, cache, + fnct_FromGml, 0, 0); + sqlite3_create_function (db, "AsGeoJSON", 1, SQLITE_ANY, 0, + fnct_AsGeoJSON, 0, 0); + sqlite3_create_function (db, "AsGeoJSON", 2, SQLITE_ANY, 0, + fnct_AsGeoJSON, 0, 0); + sqlite3_create_function (db, "AsGeoJSON", 3, SQLITE_ANY, 0, + fnct_AsGeoJSON, 0, 0); + sqlite3_create_function (db, "GeomFromGeoJSON", 1, SQLITE_ANY, 0, + fnct_FromGeoJSON, 0, 0); + sqlite3_create_function (db, "GeomFromKml", 1, SQLITE_ANY, 0, + fnct_FromKml, 0, 0); + sqlite3_create_function (db, "AsFGF", 2, SQLITE_ANY, 0, fnct_AsFGF, 0, 0); + sqlite3_create_function (db, "GeomFromEWKB", 1, SQLITE_ANY, 0, + fnct_FromEWKB, 0, 0); + sqlite3_create_function (db, "AsEWKB", 1, SQLITE_ANY, 0, fnct_ToEWKB, 0, 0); + sqlite3_create_function (db, "AsEWKT", 1, SQLITE_ANY, 0, fnct_ToEWKT, 0, 0); + sqlite3_create_function (db, "GeomFromEWKT", 1, SQLITE_ANY, 0, + fnct_FromEWKT, 0, 0); + sqlite3_create_function (db, "AsBinary", 1, SQLITE_ANY, 0, fnct_AsBinary, + 0, 0); + sqlite3_create_function (db, "ST_AsBinary", 1, SQLITE_ANY, 0, + fnct_AsBinary, 0, 0); + sqlite3_create_function (db, "GeomFromText", 1, SQLITE_ANY, 0, + fnct_GeomFromText1, 0, 0); + sqlite3_create_function (db, "GeomFromText", 2, SQLITE_ANY, 0, + fnct_GeomFromText2, 0, 0); + sqlite3_create_function (db, "GeometryFromText", 1, SQLITE_ANY, 0, + fnct_GeomFromText1, 0, 0); + sqlite3_create_function (db, "GeometryFromText", 2, SQLITE_ANY, 0, + fnct_GeomFromText2, 0, 0); + sqlite3_create_function (db, "GeomCollFromText", 1, SQLITE_ANY, 0, + fnct_GeomCollFromText1, 0, 0); + sqlite3_create_function (db, "GeomCollFromText", 2, SQLITE_ANY, 0, + fnct_GeomCollFromText2, 0, 0); + sqlite3_create_function (db, "GeometryCollectionFromText", 1, SQLITE_ANY, + 0, fnct_GeomCollFromText1, 0, 0); + sqlite3_create_function (db, "GeometryCollectionFromText", 2, SQLITE_ANY, + 0, fnct_GeomCollFromText2, 0, 0); + sqlite3_create_function (db, "PointFromText", 1, SQLITE_ANY, 0, + fnct_PointFromText1, 0, 0); + sqlite3_create_function (db, "PointFromText", 2, SQLITE_ANY, 0, + fnct_PointFromText2, 0, 0); + sqlite3_create_function (db, "LineFromText", 1, SQLITE_ANY, 0, + fnct_LineFromText1, 0, 0); + sqlite3_create_function (db, "LineFromText", 2, SQLITE_ANY, 0, + fnct_LineFromText2, 0, 0); + sqlite3_create_function (db, "LineStringFromText", 1, SQLITE_ANY, 0, + fnct_LineFromText1, 0, 0); + sqlite3_create_function (db, "LineStringFromText", 2, SQLITE_ANY, 0, + fnct_LineFromText2, 0, 0); + sqlite3_create_function (db, "PolyFromText", 1, SQLITE_ANY, 0, + fnct_PolyFromText1, 0, 0); + sqlite3_create_function (db, "PolyFromText", 2, SQLITE_ANY, 0, + fnct_PolyFromText2, 0, 0); + sqlite3_create_function (db, "PolygonFromText", 1, SQLITE_ANY, 0, + fnct_PolyFromText1, 0, 0); + sqlite3_create_function (db, "PolygonFromText", 2, SQLITE_ANY, 0, + fnct_PolyFromText2, 0, 0); + sqlite3_create_function (db, "MPointFromText", 1, SQLITE_ANY, 0, + fnct_MPointFromText1, 0, 0); + sqlite3_create_function (db, "MPointFromText", 2, SQLITE_ANY, 0, + fnct_MPointFromText2, 0, 0); + sqlite3_create_function (db, "MultiPointFromText", 1, SQLITE_ANY, 0, + fnct_MPointFromText1, 0, 0); + sqlite3_create_function (db, "MultiPointFromText", 2, SQLITE_ANY, 0, + fnct_MPointFromText2, 0, 0); + sqlite3_create_function (db, "MLineFromText", 1, SQLITE_ANY, 0, + fnct_MLineFromText1, 0, 0); + sqlite3_create_function (db, "MLineFromText", 2, SQLITE_ANY, 0, + fnct_MLineFromText2, 0, 0); + sqlite3_create_function (db, "MultiLineStringFromText", 1, SQLITE_ANY, 0, + fnct_MLineFromText1, 0, 0); + sqlite3_create_function (db, "MultiLineStringFromText", 2, SQLITE_ANY, 0, + fnct_MLineFromText2, 0, 0); + sqlite3_create_function (db, "MPolyFromText", 1, SQLITE_ANY, 0, + fnct_MPolyFromText1, 0, 0); + sqlite3_create_function (db, "MPolyFromText", 2, SQLITE_ANY, 0, + fnct_MPolyFromText2, 0, 0); + sqlite3_create_function (db, "MultiPolygonFromText", 1, SQLITE_ANY, 0, + fnct_MPolyFromText1, 0, 0); + sqlite3_create_function (db, "MultiPolygonFromText", 2, SQLITE_ANY, 0, + fnct_MPolyFromText2, 0, 0); + sqlite3_create_function (db, "GeomFromWKB", 1, SQLITE_ANY, 0, + fnct_GeomFromWkb1, 0, 0); + sqlite3_create_function (db, "GeomFromWKB", 2, SQLITE_ANY, 0, + fnct_GeomFromWkb2, 0, 0); + sqlite3_create_function (db, "GeometryFromWKB", 1, SQLITE_ANY, 0, + fnct_GeomFromWkb1, 0, 0); + sqlite3_create_function (db, "GeometryFromWKB", 2, SQLITE_ANY, 0, + fnct_GeomFromWkb2, 0, 0); + sqlite3_create_function (db, "GeomCollFromWKB", 1, SQLITE_ANY, 0, + fnct_GeomCollFromWkb1, 0, 0); + sqlite3_create_function (db, "GeomCollFromWKB", 2, SQLITE_ANY, 0, + fnct_GeomCollFromWkb2, 0, 0); + sqlite3_create_function (db, "GeometryCollectionFromWKB", 1, SQLITE_ANY, 0, + fnct_GeomCollFromWkb1, 0, 0); + sqlite3_create_function (db, "GeometryCollectionFromWKB", 2, SQLITE_ANY, 0, + fnct_GeomCollFromWkb2, 0, 0); + sqlite3_create_function (db, "PointFromWKB", 1, SQLITE_ANY, 0, + fnct_PointFromWkb1, 0, 0); + sqlite3_create_function (db, "PointFromWKB", 2, SQLITE_ANY, 0, + fnct_PointFromWkb2, 0, 0); + sqlite3_create_function (db, "LineFromWKB", 1, SQLITE_ANY, 0, + fnct_LineFromWkb1, 0, 0); + sqlite3_create_function (db, "LineFromWKB", 2, SQLITE_ANY, 0, + fnct_LineFromWkb2, 0, 0); + sqlite3_create_function (db, "LineStringFromWKB", 1, SQLITE_ANY, 0, + fnct_LineFromWkb1, 0, 0); + sqlite3_create_function (db, "LineStringFromWKB", 2, SQLITE_ANY, 0, + fnct_LineFromWkb2, 0, 0); + sqlite3_create_function (db, "PolyFromWKB", 1, SQLITE_ANY, 0, + fnct_PolyFromWkb1, 0, 0); + sqlite3_create_function (db, "PolyFromWKB", 2, SQLITE_ANY, 0, + fnct_PolyFromWkb2, 0, 0); + sqlite3_create_function (db, "PolygonFromWKB", 1, SQLITE_ANY, 0, + fnct_PolyFromWkb1, 0, 0); + sqlite3_create_function (db, "PolygonFromWKB", 2, SQLITE_ANY, 0, + fnct_PolyFromWkb2, 0, 0); + sqlite3_create_function (db, "MPointFromWKB", 1, SQLITE_ANY, 0, + fnct_MPointFromWkb1, 0, 0); + sqlite3_create_function (db, "MPointFromWKB", 2, SQLITE_ANY, 0, + fnct_MPointFromWkb2, 0, 0); + sqlite3_create_function (db, "MultiPointFromWKB", 1, SQLITE_ANY, 0, + fnct_MPointFromWkb1, 0, 0); + sqlite3_create_function (db, "MultiPointFromWKB", 2, SQLITE_ANY, 0, + fnct_MPointFromWkb2, 0, 0); + sqlite3_create_function (db, "MLineFromWKB", 1, SQLITE_ANY, 0, + fnct_MLineFromWkb1, 0, 0); + sqlite3_create_function (db, "MLineFromWKB", 2, SQLITE_ANY, 0, + fnct_MLineFromWkb2, 0, 0); + sqlite3_create_function (db, "MultiLineStringFromWKB", 1, SQLITE_ANY, 0, + fnct_MLineFromWkb1, 0, 0); + sqlite3_create_function (db, "MultiLineStringFromWKB", 2, SQLITE_ANY, 0, + fnct_MLineFromWkb2, 0, 0); + sqlite3_create_function (db, "MPolyFromWKB", 1, SQLITE_ANY, 0, + fnct_MPolyFromWkb1, 0, 0); + sqlite3_create_function (db, "MPolyFromWKB", 2, SQLITE_ANY, 0, + fnct_MPolyFromWkb2, 0, 0); + sqlite3_create_function (db, "MultiPolygonFromWKB", 1, SQLITE_ANY, 0, + fnct_MPolyFromWkb1, 0, 0); + sqlite3_create_function (db, "MultiPolygonFromWKB", 2, SQLITE_ANY, 0, + fnct_MPolyFromWkb2, 0, 0); + sqlite3_create_function (db, "ST_WKTToSQL", 1, SQLITE_ANY, 0, + fnct_WktToSql, 0, 0); + sqlite3_create_function (db, "ST_GeomFromText", 1, SQLITE_ANY, 0, + fnct_GeomFromText1, 0, 0); + sqlite3_create_function (db, "ST_GeomFromText", 2, SQLITE_ANY, 0, + fnct_GeomFromText2, 0, 0); + sqlite3_create_function (db, "ST_GeometryFromText", 1, SQLITE_ANY, 0, + fnct_GeomFromText1, 0, 0); + sqlite3_create_function (db, "ST_GeometryFromText", 2, SQLITE_ANY, 0, + fnct_GeomFromText2, 0, 0); + sqlite3_create_function (db, "ST_GeomCollFromText", 1, SQLITE_ANY, 0, + fnct_GeomCollFromText1, 0, 0); + sqlite3_create_function (db, "ST_GeomCollFromText", 2, SQLITE_ANY, 0, + fnct_GeomCollFromText2, 0, 0); + sqlite3_create_function (db, "ST_GeometryCollectionFromText", 1, + SQLITE_ANY, 0, fnct_GeomCollFromText1, 0, 0); + sqlite3_create_function (db, "ST_GeometryCollectionFromText", 2, + SQLITE_ANY, 0, fnct_GeomCollFromText2, 0, 0); + sqlite3_create_function (db, "ST_PointFromText", 1, SQLITE_ANY, 0, + fnct_PointFromText1, 0, 0); + sqlite3_create_function (db, "ST_PointFromText", 2, SQLITE_ANY, 0, + fnct_PointFromText2, 0, 0); + sqlite3_create_function (db, "ST_LineFromText", 1, SQLITE_ANY, 0, + fnct_LineFromText1, 0, 0); + sqlite3_create_function (db, "ST_LineFromText", 2, SQLITE_ANY, 0, + fnct_LineFromText2, 0, 0); + sqlite3_create_function (db, "ST_LineStringFromText", 1, SQLITE_ANY, 0, + fnct_LineFromText1, 0, 0); + sqlite3_create_function (db, "ST_LineStringFromText", 2, SQLITE_ANY, 0, + fnct_LineFromText2, 0, 0); + sqlite3_create_function (db, "ST_PolyFromText", 1, SQLITE_ANY, 0, + fnct_PolyFromText1, 0, 0); + sqlite3_create_function (db, "ST_PolyFromText", 2, SQLITE_ANY, 0, + fnct_PolyFromText2, 0, 0); + sqlite3_create_function (db, "ST_PolygonFromText", 1, SQLITE_ANY, 0, + fnct_PolyFromText1, 0, 0); + sqlite3_create_function (db, "ST_PolygonFromText", 2, SQLITE_ANY, 0, + fnct_PolyFromText2, 0, 0); + sqlite3_create_function (db, "ST_MPointFromText", 1, SQLITE_ANY, 0, + fnct_MPointFromText1, 0, 0); + sqlite3_create_function (db, "ST_MPointFromText", 2, SQLITE_ANY, 0, + fnct_MPointFromText2, 0, 0); + sqlite3_create_function (db, "ST_MultiPointFromText", 1, SQLITE_ANY, 0, + fnct_MPointFromText1, 0, 0); + sqlite3_create_function (db, "ST_MultiPointFromText", 2, SQLITE_ANY, 0, + fnct_MPointFromText2, 0, 0); + sqlite3_create_function (db, "ST_MLineFromText", 1, SQLITE_ANY, 0, + fnct_MLineFromText1, 0, 0); + sqlite3_create_function (db, "ST_MLineFromText", 2, SQLITE_ANY, 0, + fnct_MLineFromText2, 0, 0); + sqlite3_create_function (db, "ST_MultiLineStringFromText", 1, SQLITE_ANY, + 0, fnct_MLineFromText1, 0, 0); + sqlite3_create_function (db, "ST_MultiLineStringFromText", 2, SQLITE_ANY, + 0, fnct_MLineFromText2, 0, 0); + sqlite3_create_function (db, "ST_MPolyFromText", 1, SQLITE_ANY, 0, + fnct_MPolyFromText1, 0, 0); + sqlite3_create_function (db, "ST_MPolyFromText", 2, SQLITE_ANY, 0, + fnct_MPolyFromText2, 0, 0); + sqlite3_create_function (db, "ST_MultiPolygonFromText", 1, SQLITE_ANY, 0, + fnct_MPolyFromText1, 0, 0); + sqlite3_create_function (db, "ST_MultiPolygonFromText", 2, SQLITE_ANY, 0, + fnct_MPolyFromText2, 0, 0); + sqlite3_create_function (db, "ST_WKBToSQL", 1, SQLITE_ANY, 0, + fnct_WkbToSql, 0, 0); + sqlite3_create_function (db, "ST_GeomFromWKB", 1, SQLITE_ANY, 0, + fnct_GeomFromWkb1, 0, 0); + sqlite3_create_function (db, "ST_GeomFromWKB", 2, SQLITE_ANY, 0, + fnct_GeomFromWkb2, 0, 0); + sqlite3_create_function (db, "ST_GeometryFromWKB", 1, SQLITE_ANY, 0, + fnct_GeomFromWkb1, 0, 0); + sqlite3_create_function (db, "ST_GeometryFromWKB", 2, SQLITE_ANY, 0, + fnct_GeomFromWkb2, 0, 0); + sqlite3_create_function (db, "ST_GeomCollFromWKB", 1, SQLITE_ANY, 0, + fnct_GeomCollFromWkb1, 0, 0); + sqlite3_create_function (db, "ST_GeomCollFromWKB", 2, SQLITE_ANY, 0, + fnct_GeomCollFromWkb2, 0, 0); + sqlite3_create_function (db, "ST_GeometryCollectionFromWKB", 1, SQLITE_ANY, + 0, fnct_GeomCollFromWkb1, 0, 0); + sqlite3_create_function (db, "ST_GeometryCollectionFromWKB", 2, SQLITE_ANY, + 0, fnct_GeomCollFromWkb2, 0, 0); + sqlite3_create_function (db, "ST_PointFromWKB", 1, SQLITE_ANY, 0, + fnct_PointFromWkb1, 0, 0); + sqlite3_create_function (db, "ST_PointFromWKB", 2, SQLITE_ANY, 0, + fnct_PointFromWkb2, 0, 0); + sqlite3_create_function (db, "ST_LineFromWKB", 1, SQLITE_ANY, 0, + fnct_LineFromWkb1, 0, 0); + sqlite3_create_function (db, "ST_LineFromWKB", 2, SQLITE_ANY, 0, + fnct_LineFromWkb2, 0, 0); + sqlite3_create_function (db, "ST_LineStringFromWKB", 1, SQLITE_ANY, 0, + fnct_LineFromWkb1, 0, 0); + sqlite3_create_function (db, "ST_LineStringFromWKB", 2, SQLITE_ANY, 0, + fnct_LineFromWkb2, 0, 0); + sqlite3_create_function (db, "ST_PolyFromWKB", 1, SQLITE_ANY, 0, + fnct_PolyFromWkb1, 0, 0); + sqlite3_create_function (db, "ST_PolyFromWKB", 2, SQLITE_ANY, 0, + fnct_PolyFromWkb2, 0, 0); + sqlite3_create_function (db, "ST_PolygonFromWKB", 1, SQLITE_ANY, 0, + fnct_PolyFromWkb1, 0, 0); + sqlite3_create_function (db, "ST_PolygonFromWKB", 2, SQLITE_ANY, 0, + fnct_PolyFromWkb2, 0, 0); + sqlite3_create_function (db, "ST_MPointFromWKB", 1, SQLITE_ANY, 0, + fnct_MPointFromWkb1, 0, 0); + sqlite3_create_function (db, "ST_MPointFromWKB", 2, SQLITE_ANY, 0, + fnct_MPointFromWkb2, 0, 0); + sqlite3_create_function (db, "ST_MultiPointFromWKB", 1, SQLITE_ANY, 0, + fnct_MPointFromWkb1, 0, 0); + sqlite3_create_function (db, "ST_MultiPointFromWKB", 2, SQLITE_ANY, 0, + fnct_MPointFromWkb2, 0, 0); + sqlite3_create_function (db, "ST_MLineFromWKB", 1, SQLITE_ANY, 0, + fnct_MLineFromWkb1, 0, 0); + sqlite3_create_function (db, "ST_MLineFromWKB", 2, SQLITE_ANY, 0, + fnct_MLineFromWkb2, 0, 0); + sqlite3_create_function (db, "ST_MultiLineStringFromWKB", 1, SQLITE_ANY, 0, + fnct_MLineFromWkb1, 0, 0); + sqlite3_create_function (db, "ST_MultiLineStringFromWKB", 2, SQLITE_ANY, 0, + fnct_MLineFromWkb2, 0, 0); + sqlite3_create_function (db, "ST_MPolyFromWKB", 1, SQLITE_ANY, 0, + fnct_MPolyFromWkb1, 0, 0); + sqlite3_create_function (db, "ST_MPolyFromWKB", 2, SQLITE_ANY, 0, + fnct_MPolyFromWkb2, 0, 0); + sqlite3_create_function (db, "ST_MultiPolygonFromWKB", 1, SQLITE_ANY, 0, + fnct_MPolyFromWkb1, 0, 0); + sqlite3_create_function (db, "ST_MultiPolygonFromWKB", 2, SQLITE_ANY, 0, + fnct_MPolyFromWkb2, 0, 0); + sqlite3_create_function (db, "GeomFromFGF", 1, SQLITE_ANY, 0, + fnct_GeometryFromFGF1, 0, 0); + sqlite3_create_function (db, "GeomFromFGF", 2, SQLITE_ANY, 0, + fnct_GeometryFromFGF2, 0, 0); + sqlite3_create_function (db, "CompressGeometry", 1, SQLITE_ANY, 0, + fnct_CompressGeometry, 0, 0); + sqlite3_create_function (db, "UncompressGeometry", 1, SQLITE_ANY, 0, + fnct_UncompressGeometry, 0, 0); + sqlite3_create_function (db, "SanitizeGeometry", 1, SQLITE_ANY, 0, + fnct_SanitizeGeometry, 0, 0); + sqlite3_create_function (db, "CastToInteger", 1, SQLITE_ANY, 0, + fnct_CastToInteger, 0, 0); + sqlite3_create_function (db, "CastToDouble", 1, SQLITE_ANY, 0, + fnct_CastToDouble, 0, 0); + sqlite3_create_function (db, "CastToText", 1, SQLITE_ANY, 0, + fnct_CastToText, 0, 0); + sqlite3_create_function (db, "CastToText", 2, SQLITE_ANY, 0, + fnct_CastToText, 0, 0); + sqlite3_create_function (db, "CastToBlob", 1, SQLITE_ANY, 0, + fnct_CastToBlob, 0, 0); + sqlite3_create_function (db, "CastToBlob", 2, SQLITE_ANY, 0, + fnct_CastToBlob, 0, 0); + sqlite3_create_function (db, "ForceAsNull", 2, SQLITE_ANY, 0, + fnct_ForceAsNull, 0, 0); + sqlite3_create_function (db, "CreateUUID", 0, SQLITE_ANY, 0, + fnct_CreateUUID, 0, 0); + sqlite3_create_function (db, "MD5Checksum", 1, SQLITE_ANY, 0, + fnct_MD5Checksum, 0, 0); + sqlite3_create_function (db, "MD5TotalChecksum", 1, SQLITE_ANY, 0, 0, + fnct_MD5TotalChecksum_step, + fnct_MD5TotalChecksum_final); + sqlite3_create_function (db, "CastToPoint", 1, SQLITE_ANY, 0, + fnct_CastToPoint, 0, 0); + sqlite3_create_function (db, "CastToLinestring", 1, SQLITE_ANY, 0, + fnct_CastToLinestring, 0, 0); + sqlite3_create_function (db, "CastToPolygon", 1, SQLITE_ANY, 0, + fnct_CastToPolygon, 0, 0); + sqlite3_create_function (db, "CastToMultiPoint", 1, SQLITE_ANY, 0, + fnct_CastToMultiPoint, 0, 0); + sqlite3_create_function (db, "CastToMultiLinestring", 1, SQLITE_ANY, 0, + fnct_CastToMultiLinestring, 0, 0); + sqlite3_create_function (db, "CastToMultiPolygon", 1, SQLITE_ANY, 0, + fnct_CastToMultiPolygon, 0, 0); + sqlite3_create_function (db, "CastToGeometryCollection", 1, SQLITE_ANY, 0, + fnct_CastToGeometryCollection, 0, 0); + sqlite3_create_function (db, "CastToMulti", 1, SQLITE_ANY, 0, + fnct_CastToMulti, 0, 0); + sqlite3_create_function (db, "ST_Multi", 1, SQLITE_ANY, 0, + fnct_CastToMulti, 0, 0); + sqlite3_create_function (db, "CastToSingle", 1, SQLITE_ANY, 0, + fnct_CastToSingle, 0, 0); + sqlite3_create_function (db, "CastToXY", 1, SQLITE_ANY, 0, fnct_CastToXY, + 0, 0); + sqlite3_create_function (db, "CastToXYZ", 1, SQLITE_ANY, 0, fnct_CastToXYZ, + 0, 0); + sqlite3_create_function (db, "CastToXYM", 1, SQLITE_ANY, 0, fnct_CastToXYM, + 0, 0); + sqlite3_create_function (db, "CastToXYZM", 1, SQLITE_ANY, 0, + fnct_CastToXYZM, 0, 0); + sqlite3_create_function (db, "ExtractMultiPoint", 1, SQLITE_ANY, 0, + fnct_ExtractMultiPoint, 0, 0); + sqlite3_create_function (db, "ExtractMultiLinestring", 1, SQLITE_ANY, 0, + fnct_ExtractMultiLinestring, 0, 0); + sqlite3_create_function (db, "ExtractMultiPolygon", 1, SQLITE_ANY, 0, + fnct_ExtractMultiPolygon, 0, 0); + sqlite3_create_function (db, "ST_Reverse", 1, SQLITE_ANY, 0, fnct_Reverse, + 0, 0); + sqlite3_create_function (db, "ST_ForceLHR", 1, SQLITE_ANY, 0, + fnct_ForceLHR, 0, 0); + sqlite3_create_function (db, "Dimension", 1, SQLITE_ANY, 0, fnct_Dimension, + 0, 0); + sqlite3_create_function (db, "ST_Dimension", 1, SQLITE_ANY, 0, + fnct_Dimension, 0, 0); + sqlite3_create_function (db, "CoordDimension", 1, SQLITE_ANY, 0, + fnct_CoordDimension, 0, 0); + sqlite3_create_function (db, "ST_NDims", 1, SQLITE_ANY, 0, fnct_NDims, 0, + 0); + sqlite3_create_function (db, "GeometryType", 1, SQLITE_ANY, 0, + fnct_GeometryType, 0, 0); + sqlite3_create_function (db, "ST_GeometryType", 1, SQLITE_ANY, 0, + fnct_GeometryType, 0, 0); + sqlite3_create_function (db, "GeometryAliasType", 1, SQLITE_ANY, 0, + fnct_GeometryAliasType, 0, 0); + sqlite3_create_function (db, "SridFromAuthCRS", 2, SQLITE_ANY, 0, + fnct_SridFromAuthCRS, 0, 0); + sqlite3_create_function (db, "SRID", 1, SQLITE_ANY, 0, fnct_SRID, 0, 0); + sqlite3_create_function (db, "ST_SRID", 1, SQLITE_ANY, 0, fnct_SRID, 0, 0); + sqlite3_create_function (db, "SetSRID", 2, SQLITE_ANY, 0, fnct_SetSRID, 0, + 0); + sqlite3_create_function (db, "IsEmpty", 1, SQLITE_ANY, 0, fnct_IsEmpty, 0, + 0); + sqlite3_create_function (db, "ST_IsEmpty", 1, SQLITE_ANY, 0, fnct_IsEmpty, + 0, 0); + sqlite3_create_function (db, "ST_Is3D", 1, SQLITE_ANY, 0, fnct_Is3D, 0, 0); + sqlite3_create_function (db, "ST_IsMeasured", 1, SQLITE_ANY, 0, + fnct_IsMeasured, 0, 0); + sqlite3_create_function (db, "Envelope", 1, SQLITE_ANY, 0, fnct_Envelope, + 0, 0); + sqlite3_create_function (db, "ST_Envelope", 1, SQLITE_ANY, 0, + fnct_Envelope, 0, 0); + sqlite3_create_function (db, "ST_Expand", 2, SQLITE_ANY, 0, fnct_Expand, + 0, 0); + sqlite3_create_function (db, "X", 1, SQLITE_ANY, 0, fnct_X, 0, 0); + sqlite3_create_function (db, "Y", 1, SQLITE_ANY, 0, fnct_Y, 0, 0); + sqlite3_create_function (db, "Z", 1, SQLITE_ANY, 0, fnct_Z, 0, 0); + sqlite3_create_function (db, "M", 1, SQLITE_ANY, 0, fnct_M, 0, 0); + sqlite3_create_function (db, "ST_X", 1, SQLITE_ANY, 0, fnct_X, 0, 0); + sqlite3_create_function (db, "ST_Y", 1, SQLITE_ANY, 0, fnct_Y, 0, 0); + sqlite3_create_function (db, "ST_Z", 1, SQLITE_ANY, 0, fnct_Z, 0, 0); + sqlite3_create_function (db, "ST_M", 1, SQLITE_ANY, 0, fnct_M, 0, 0); + sqlite3_create_function (db, "ST_MinX", 1, SQLITE_ANY, 0, fnct_MbrMinX, 0, + 0); + sqlite3_create_function (db, "ST_MinY", 1, SQLITE_ANY, 0, fnct_MbrMinY, 0, + 0); + sqlite3_create_function (db, "ST_MinZ", 1, SQLITE_ANY, 0, fnct_MinZ, 0, 0); + sqlite3_create_function (db, "ST_MinM", 1, SQLITE_ANY, 0, fnct_MinM, 0, 0); + sqlite3_create_function (db, "ST_MaxX", 1, SQLITE_ANY, 0, fnct_MbrMaxX, 0, + 0); + sqlite3_create_function (db, "ST_MaxY", 1, SQLITE_ANY, 0, fnct_MbrMaxY, 0, + 0); + sqlite3_create_function (db, "ST_MaxZ", 1, SQLITE_ANY, 0, fnct_MaxZ, 0, 0); + sqlite3_create_function (db, "ST_MaxM", 1, SQLITE_ANY, 0, fnct_MaxM, 0, 0); + sqlite3_create_function (db, "NumPoints", 1, SQLITE_ANY, 0, + fnct_NumPoints, 0, 0); + sqlite3_create_function (db, "ST_NumPoints", 1, SQLITE_ANY, 0, + fnct_NumPoints, 0, 0); + sqlite3_create_function (db, "StartPoint", 1, SQLITE_ANY, 0, + fnct_StartPoint, 0, 0); + sqlite3_create_function (db, "EndPoint", 1, SQLITE_ANY, 0, fnct_EndPoint, + 0, 0); + sqlite3_create_function (db, "ST_StartPoint", 1, SQLITE_ANY, 0, + fnct_StartPoint, 0, 0); + sqlite3_create_function (db, "ST_EndPoint", 1, SQLITE_ANY, 0, + fnct_EndPoint, 0, 0); + sqlite3_create_function (db, "PointN", 2, SQLITE_ANY, 0, fnct_PointN, 0, 0); + sqlite3_create_function (db, "ST_PointN", 2, SQLITE_ANY, 0, fnct_PointN, 0, + 0); + sqlite3_create_function (db, "ExteriorRing", 1, SQLITE_ANY, 0, + fnct_ExteriorRing, 0, 0); + sqlite3_create_function (db, "ST_ExteriorRing", 1, SQLITE_ANY, 0, + fnct_ExteriorRing, 0, 0); + sqlite3_create_function (db, "NumInteriorRing", 1, SQLITE_ANY, 0, + fnct_NumInteriorRings, 0, 0); + sqlite3_create_function (db, "NumInteriorRings", 1, SQLITE_ANY, 0, + fnct_NumInteriorRings, 0, 0); + sqlite3_create_function (db, "ST_NumInteriorRing", 1, SQLITE_ANY, 0, + fnct_NumInteriorRings, 0, 0); + sqlite3_create_function (db, "InteriorRingN", 2, SQLITE_ANY, 0, + fnct_InteriorRingN, 0, 0); + sqlite3_create_function (db, "ST_InteriorRingN", 2, SQLITE_ANY, 0, + fnct_InteriorRingN, 0, 0); + sqlite3_create_function (db, "NumGeometries", 1, SQLITE_ANY, 0, + fnct_NumGeometries, 0, 0); + sqlite3_create_function (db, "ST_NumGeometries", 1, SQLITE_ANY, 0, + fnct_NumGeometries, 0, 0); + sqlite3_create_function (db, "GeometryN", 2, SQLITE_ANY, 0, fnct_GeometryN, + 0, 0); + sqlite3_create_function (db, "ST_GeometryN", 2, SQLITE_ANY, 0, + fnct_GeometryN, 0, 0); + sqlite3_create_function (db, "MBRContains", 2, SQLITE_ANY, 0, + fnct_MbrContains, 0, 0); + sqlite3_create_function (db, "MbrDisjoint", 2, SQLITE_ANY, 0, + fnct_MbrDisjoint, 0, 0); + sqlite3_create_function (db, "MBREqual", 2, SQLITE_ANY, 0, fnct_MbrEqual, + 0, 0); + sqlite3_create_function (db, "MbrIntersects", 2, SQLITE_ANY, 0, + fnct_MbrIntersects, 0, 0); + sqlite3_create_function (db, "ST_EnvIntersects", 2, SQLITE_ANY, 0, + fnct_MbrIntersects, 0, 0); + sqlite3_create_function (db, "ST_EnvIntersects", 5, SQLITE_ANY, 0, + fnct_EnvIntersects, 0, 0); + sqlite3_create_function (db, "ST_EnvelopesIntersects", 2, SQLITE_ANY, 0, + fnct_MbrIntersects, 0, 0); + sqlite3_create_function (db, "ST_EnvelopesIntersects", 5, SQLITE_ANY, 0, + fnct_EnvIntersects, 0, 0); + sqlite3_create_function (db, "MBROverlaps", 2, SQLITE_ANY, 0, + fnct_MbrOverlaps, 0, 0); + sqlite3_create_function (db, "MbrTouches", 2, SQLITE_ANY, 0, + fnct_MbrTouches, 0, 0); + sqlite3_create_function (db, "MbrWithin", 2, SQLITE_ANY, 0, fnct_MbrWithin, + 0, 0); + sqlite3_create_function (db, "ShiftCoords", 3, SQLITE_ANY, 0, + fnct_ShiftCoords, 0, 0); + sqlite3_create_function (db, "ShiftCoordinates", 3, SQLITE_ANY, 0, + fnct_ShiftCoords, 0, 0); + sqlite3_create_function (db, "ST_Translate", 4, SQLITE_ANY, 0, + fnct_Translate, 0, 0); + sqlite3_create_function (db, "ST_Shift_Longitude", 1, SQLITE_ANY, 0, + fnct_ShiftLongitude, 0, 0); + sqlite3_create_function (db, "NormalizeLonLat", 1, SQLITE_ANY, 0, + fnct_NormalizeLonLat, 0, 0); + sqlite3_create_function (db, "ScaleCoords", 2, SQLITE_ANY, 0, + fnct_ScaleCoords, 0, 0); + sqlite3_create_function (db, "ScaleCoordinates", 2, SQLITE_ANY, 0, + fnct_ScaleCoords, 0, 0); + sqlite3_create_function (db, "ScaleCoords", 3, SQLITE_ANY, 0, + fnct_ScaleCoords, 0, 0); + sqlite3_create_function (db, "ScaleCoordinates", 3, SQLITE_ANY, 0, + fnct_ScaleCoords, 0, 0); + sqlite3_create_function (db, "RotateCoords", 2, SQLITE_ANY, 0, + fnct_RotateCoords, 0, 0); + sqlite3_create_function (db, "RotateCoordinates", 2, SQLITE_ANY, 0, + fnct_RotateCoords, 0, 0); + sqlite3_create_function (db, "ReflectCoords", 3, SQLITE_ANY, 0, + fnct_ReflectCoords, 0, 0); + sqlite3_create_function (db, "ReflectCoordinates", 3, SQLITE_ANY, 0, + fnct_ReflectCoords, 0, 0); + sqlite3_create_function (db, "SwapCoords", 1, SQLITE_ANY, 0, + fnct_SwapCoords, 0, 0); + sqlite3_create_function (db, "SwapCoordinates", 1, SQLITE_ANY, 0, + fnct_SwapCoords, 0, 0); + sqlite3_create_function (db, "BuildMbr", 4, SQLITE_ANY, 0, fnct_BuildMbr1, + 0, 0); + sqlite3_create_function (db, "BuildMbr", 5, SQLITE_ANY, 0, fnct_BuildMbr2, + 0, 0); + sqlite3_create_function (db, "BuildCircleMbr", 3, SQLITE_ANY, 0, + fnct_BuildCircleMbr1, 0, 0); + sqlite3_create_function (db, "BuildCircleMbr", 4, SQLITE_ANY, 0, + fnct_BuildCircleMbr2, 0, 0); + sqlite3_create_function (db, "Extent", 1, SQLITE_ANY, 0, 0, + fnct_Extent_step, fnct_Extent_final); + sqlite3_create_function (db, "MbrMinX", 1, SQLITE_ANY, 0, fnct_MbrMinX, 0, + 0); + sqlite3_create_function (db, "MbrMaxX", 1, SQLITE_ANY, 0, fnct_MbrMaxX, 0, + 0); + sqlite3_create_function (db, "MbrMinY", 1, SQLITE_ANY, 0, fnct_MbrMinY, 0, + 0); + sqlite3_create_function (db, "MbrMaxY", 1, SQLITE_ANY, 0, fnct_MbrMaxY, 0, + 0); + sqlite3_create_function (db, "ST_Point", 2, SQLITE_ANY, 0, fnct_MakePoint1, + 0, 0); + sqlite3_create_function (db, "MakePoint", 2, SQLITE_ANY, 0, + fnct_MakePoint1, 0, 0); + sqlite3_create_function (db, "MakePoint", 3, SQLITE_ANY, 0, + fnct_MakePoint2, 0, 0); + sqlite3_create_function (db, "MakePointZ", 3, SQLITE_ANY, 0, + fnct_MakePointZ1, 0, 0); + sqlite3_create_function (db, "MakePointZ", 4, SQLITE_ANY, 0, + fnct_MakePointZ2, 0, 0); + sqlite3_create_function (db, "MakePointM", 3, SQLITE_ANY, 0, + fnct_MakePointM1, 0, 0); + sqlite3_create_function (db, "MakePointM", 4, SQLITE_ANY, 0, + fnct_MakePointM2, 0, 0); + sqlite3_create_function (db, "MakePointZM", 4, SQLITE_ANY, 0, + fnct_MakePointZM1, 0, 0); + sqlite3_create_function (db, "MakePointZM", 5, SQLITE_ANY, 0, + fnct_MakePointZM2, 0, 0); + sqlite3_create_function (db, "MakeLine", 1, SQLITE_ANY, 0, 0, + fnct_MakeLine_step, fnct_MakeLine_final); + sqlite3_create_function (db, "MakeLine", 2, SQLITE_ANY, 0, fnct_MakeLine, + 0, 0); + sqlite3_create_function (db, "MakeCircle", 3, SQLITE_ANY, 0, + fnct_MakeCircle, 0, 0); + sqlite3_create_function (db, "MakeCircle", 4, SQLITE_ANY, 0, + fnct_MakeCircle, 0, 0); + sqlite3_create_function (db, "MakeCircle", 5, SQLITE_ANY, 0, + fnct_MakeCircle, 0, 0); + sqlite3_create_function (db, "MakeEllipse", 4, SQLITE_ANY, 0, + fnct_MakeEllipse, 0, 0); + sqlite3_create_function (db, "MakeEllipse", 5, SQLITE_ANY, 0, + fnct_MakeEllipse, 0, 0); + sqlite3_create_function (db, "MakeEllipse", 6, SQLITE_ANY, 0, + fnct_MakeEllipse, 0, 0); + sqlite3_create_function (db, "MakeArc", 5, SQLITE_ANY, 0, fnct_MakeArc, 0, + 0); + sqlite3_create_function (db, "MakeArc", 6, SQLITE_ANY, 0, fnct_MakeArc, 0, + 0); + sqlite3_create_function (db, "MakeArc", 7, SQLITE_ANY, 0, fnct_MakeArc, 0, + 0); + sqlite3_create_function (db, "MakeEllipticArc", 6, SQLITE_ANY, 0, + fnct_MakeEllipticArc, 0, 0); + sqlite3_create_function (db, "MakeEllipticArc", 7, SQLITE_ANY, 0, + fnct_MakeEllipticArc, 0, 0); + sqlite3_create_function (db, "MakeEllipticArc", 8, SQLITE_ANY, 0, + fnct_MakeEllipticArc, 0, 0); + sqlite3_create_function (db, "MakeCircularSector", 5, SQLITE_ANY, 0, + fnct_MakeCircularSector, 0, 0); + sqlite3_create_function (db, "MakeCircularSector", 6, SQLITE_ANY, 0, + fnct_MakeCircularSector, 0, 0); + sqlite3_create_function (db, "MakeCircularSector", 7, SQLITE_ANY, 0, + fnct_MakeCircularSector, 0, 0); + sqlite3_create_function (db, "MakeCircularStripe", 6, SQLITE_ANY, 0, + fnct_MakeCircularStripe, 0, 0); + sqlite3_create_function (db, "MakeCircularStripe", 7, SQLITE_ANY, 0, + fnct_MakeCircularStripe, 0, 0); + sqlite3_create_function (db, "MakeCircularStripe", 8, SQLITE_ANY, 0, + fnct_MakeCircularStripe, 0, 0); + sqlite3_create_function (db, "MakeEllipticSector", 6, SQLITE_ANY, 0, + fnct_MakeEllipticSector, 0, 0); + sqlite3_create_function (db, "MakeEllipticSector", 7, SQLITE_ANY, 0, + fnct_MakeEllipticSector, 0, 0); + sqlite3_create_function (db, "MakeEllipticSector", 8, SQLITE_ANY, 0, + fnct_MakeEllipticSector, 0, 0); + sqlite3_create_function (db, "Collect", 1, SQLITE_ANY, cache, 0, + fnct_Collect_step, fnct_Collect_final); + sqlite3_create_function (db, "Collect", 2, SQLITE_ANY, cache, fnct_Collect, + 0, 0); + sqlite3_create_function (db, "ST_Collect", 1, SQLITE_ANY, cache, 0, + fnct_Collect_step, fnct_Collect_final); + sqlite3_create_function (db, "ST_Collect", 2, SQLITE_ANY, cache, + fnct_Collect, 0, 0); + sqlite3_create_function (db, "BuildMbrFilter", 4, SQLITE_ANY, 0, + fnct_BuildMbrFilter, 0, 0); + sqlite3_create_function (db, "FilterMbrWithin", 4, SQLITE_ANY, 0, + fnct_FilterMbrWithin, 0, 0); + sqlite3_create_function (db, "FilterMbrContains", 4, SQLITE_ANY, 0, + fnct_FilterMbrContains, 0, 0); + sqlite3_create_function (db, "FilterMbrIntersects", 4, SQLITE_ANY, 0, + fnct_FilterMbrIntersects, 0, 0); + sqlite3_create_function (db, "LinesFromRings", 1, SQLITE_ANY, 0, + fnct_LinesFromRings, 0, 0); + sqlite3_create_function (db, "ST_LinesFromRings", 1, SQLITE_ANY, 0, + fnct_LinesFromRings, 0, 0); + sqlite3_create_function (db, "LinesFromRings", 2, SQLITE_ANY, 0, + fnct_LinesFromRings, 0, 0); + sqlite3_create_function (db, "ST_LinesFromRings", 2, SQLITE_ANY, 0, + fnct_LinesFromRings, 0, 0); + sqlite3_create_function (db, "ST_NPoints", 1, SQLITE_ANY, 0, fnct_NPoints, + 0, 0); + sqlite3_create_function (db, "ST_nrings", 1, SQLITE_ANY, 0, fnct_NRings, 0, + 0); + sqlite3_create_function (db, "ToGARS", 1, SQLITE_ANY, 0, fnct_ToGARS, 0, 0); + sqlite3_create_function (db, "GARSMbr", 1, SQLITE_ANY, 0, fnct_GARSMbr, 0, + 0); + sqlite3_create_function (db, "SnapToGrid", 2, SQLITE_ANY, 0, + fnct_SnapToGrid, 0, 0); + sqlite3_create_function (db, "ST_SnapToGrid", 2, SQLITE_ANY, 0, + fnct_SnapToGrid, 0, 0); + sqlite3_create_function (db, "SnapToGrid", 3, SQLITE_ANY, 0, + fnct_SnapToGrid, 0, 0); + sqlite3_create_function (db, "ST_SnapToGrid", 3, SQLITE_ANY, 0, + fnct_SnapToGrid, 0, 0); + sqlite3_create_function (db, "SnapToGrid", 5, SQLITE_ANY, 0, + fnct_SnapToGrid, 0, 0); + sqlite3_create_function (db, "ST_SnapToGrid", 5, SQLITE_ANY, 0, + fnct_SnapToGrid, 0, 0); + sqlite3_create_function (db, "SnapToGrid", 6, SQLITE_ANY, 0, + fnct_SnapToGrid, 0, 0); + sqlite3_create_function (db, "ST_SnapToGrid", 6, SQLITE_ANY, 0, + fnct_SnapToGrid, 0, 0); + sqlite3_create_function (db, "AddPoint", 2, SQLITE_ANY, 0, fnct_AddPoint, + 0, 0); + sqlite3_create_function (db, "ST_AddPoint", 2, SQLITE_ANY, 0, + fnct_AddPoint, 0, 0); + sqlite3_create_function (db, "AddPoint", 3, SQLITE_ANY, 0, fnct_AddPoint, + 0, 0); + sqlite3_create_function (db, "ST_AddPoint", 3, SQLITE_ANY, 0, + fnct_AddPoint, 0, 0); + sqlite3_create_function (db, "RemovePoint", 2, SQLITE_ANY, 0, + fnct_RemovePoint, 0, 0); + sqlite3_create_function (db, "ST_RemovePoint", 2, SQLITE_ANY, 0, + fnct_RemovePoint, 0, 0); + sqlite3_create_function (db, "SetPoint", 3, SQLITE_ANY, 0, fnct_SetPoint, + 0, 0); + sqlite3_create_function (db, "ST_SetPoint", 3, SQLITE_ANY, 0, + fnct_SetPoint, 0, 0); + sqlite3_create_function (db, "MakePolygon", 1, SQLITE_ANY, 0, + fnct_MakePolygon, 0, 0); + sqlite3_create_function (db, "ST_MakePolygon", 1, SQLITE_ANY, 0, + fnct_MakePolygon, 0, 0); + sqlite3_create_function (db, "MakePolygon", 2, SQLITE_ANY, 0, + fnct_MakePolygon, 0, 0); + sqlite3_create_function (db, "ST_MakePolygon", 2, SQLITE_ANY, 0, + fnct_MakePolygon, 0, 0); + +#ifndef OMIT_GEOS /* including GEOS */ + sqlite3_create_function (db, "BuildArea", 1, SQLITE_ANY, cache, + fnct_BuildArea, 0, 0); + sqlite3_create_function (db, "ST_BuildArea", 1, SQLITE_ANY, cache, + fnct_BuildArea, 0, 0); + sqlite3_create_function (db, "Polygonize", 1, SQLITE_ANY, cache, 0, + fnct_Polygonize_step, fnct_Polygonize_final); + sqlite3_create_function (db, "ST_Polygonize", 1, SQLITE_ANY, cache, 0, + fnct_Polygonize_step, fnct_Polygonize_final); +#endif /* end including GEOS */ + + sqlite3_create_function (db, "DissolveSegments", 1, SQLITE_ANY, 0, + fnct_DissolveSegments, 0, 0); + sqlite3_create_function (db, "ST_DissolveSegments", 1, SQLITE_ANY, 0, + fnct_DissolveSegments, 0, 0); + sqlite3_create_function (db, "DissolvePoints", 1, SQLITE_ANY, 0, + fnct_DissolvePoints, 0, 0); + sqlite3_create_function (db, "ST_DissolvePoints", 1, SQLITE_ANY, 0, + fnct_DissolvePoints, 0, 0); + sqlite3_create_function (db, "CollectionExtract", 2, SQLITE_ANY, 0, + fnct_CollectionExtract, 0, 0); + sqlite3_create_function (db, "ST_CollectionExtract", 2, SQLITE_ANY, 0, + fnct_CollectionExtract, 0, 0); + sqlite3_create_function (db, "ST_Locate_Along_Measure", 2, SQLITE_ANY, 0, + fnct_LocateBetweenMeasures, 0, 0); + sqlite3_create_function (db, "ST_LocateAlong", 2, SQLITE_ANY, 0, + fnct_LocateBetweenMeasures, 0, 0); + sqlite3_create_function (db, "ST_Locate_Between_Measures", 3, SQLITE_ANY, + 0, fnct_LocateBetweenMeasures, 0, 0); + sqlite3_create_function (db, "ST_LocateBetween", 3, SQLITE_ANY, 0, + fnct_LocateBetweenMeasures, 0, 0); +#ifndef OMIT_GEOCALLBACKS /* supporting RTree geometry callbacks */ + sqlite3_rtree_geometry_callback (db, "RTreeWithin", fnct_RTreeIntersects, + 0); + sqlite3_rtree_geometry_callback (db, "RTreeContains", + fnct_RTreeIntersects, 0); + sqlite3_rtree_geometry_callback (db, "RTreeIntersects", + fnct_RTreeIntersects, 0); + sqlite3_rtree_geometry_callback (db, "RTreeDistWithin", + fnct_RTreeDistWithin, 0); +#endif /* end RTree geometry callbacks */ + +/* some BLOB/JPEG/EXIF functions */ + sqlite3_create_function (db, "IsGeometryBlob", 1, SQLITE_ANY, 0, + fnct_IsGeometryBlob, 0, 0); + sqlite3_create_function (db, "IsZipBlob", 1, SQLITE_ANY, 0, + fnct_IsZipBlob, 0, 0); + sqlite3_create_function (db, "IsPdfBlob", 1, SQLITE_ANY, 0, + fnct_IsPdfBlob, 0, 0); + sqlite3_create_function (db, "IsTiffBlob", 1, SQLITE_ANY, 0, + fnct_IsTiffBlob, 0, 0); + sqlite3_create_function (db, "IsGifBlob", 1, SQLITE_ANY, 0, + fnct_IsGifBlob, 0, 0); + sqlite3_create_function (db, "IsPngBlob", 1, SQLITE_ANY, 0, + fnct_IsPngBlob, 0, 0); + sqlite3_create_function (db, "IsJpegBlob", 1, SQLITE_ANY, 0, + fnct_IsJpegBlob, 0, 0); + sqlite3_create_function (db, "IsExifBlob", 1, SQLITE_ANY, 0, + fnct_IsExifBlob, 0, 0); + sqlite3_create_function (db, "IsExifGpsBlob", 1, SQLITE_ANY, 0, + fnct_IsExifGpsBlob, 0, 0); + sqlite3_create_function (db, "IsWebpBlob", 1, SQLITE_ANY, 0, + fnct_IsWebPBlob, 0, 0); + sqlite3_create_function (db, "GeomFromExifGpsBlob", 1, SQLITE_ANY, 0, + fnct_GeomFromExifGpsBlob, 0, 0); + sqlite3_create_function (db, "GetMimeType", 1, SQLITE_ANY, 0, + fnct_GetMimeType, 0, 0); + sqlite3_create_function (db, "CountUnsafeTriggers", 0, SQLITE_ANY, 0, + fnct_CountUnsafeTriggers, 0, 0); + +/* +// enabling BlobFromFile, BlobToFile and XB_LoadXML, XB_StoreXML, ExportDXF +// +// these functions could potentially introduce serious security issues, +// most notably when invoked from within some Trigger +// - BlobToFile: some arbitrary code, possibly harmfull (e.g. virus or +// trojan) could be installed on the local file-system, the user being +// completely unaware of this +// - BlobFromFile: some file could be maliciously "stolen" from the local +// file system and then inseted into the DB +// - the same is for XB_LoadXML and XB_StoreXML +// - ExportDXF could potentially flood the local file-system by +// outputting a huge size of data +// +// so by default such functions are disabled. +// if for any good/legitimate reason the user really wants to enable them +// the following environment variable has to be explicitly declared: +// +// SPATIALITE_SECURITY=relaxed +// +*/ + security_level = getenv ("SPATIALITE_SECURITY"); + if (security_level == NULL) + ; + else if (strcasecmp (security_level, "relaxed") == 0) + { + sqlite3_create_function (db, "BlobFromFile", 1, SQLITE_ANY, 0, + fnct_BlobFromFile, 0, 0); + sqlite3_create_function (db, "BlobToFile", 2, SQLITE_ANY, 0, + fnct_BlobToFile, 0, 0); + sqlite3_create_function (db, "ExportDXF", 9, SQLITE_ANY, 0, + fnct_ExportDXF, 0, 0); + sqlite3_create_function (db, "ExportDXF", 10, SQLITE_ANY, 0, + fnct_ExportDXF, 0, 0); + +#ifdef ENABLE_LIBXML2 /* including LIBXML2 */ + + sqlite3_create_function (db, "XB_LoadXML", 1, SQLITE_ANY, cache, + fnct_XB_LoadXML, 0, 0); + sqlite3_create_function (db, "XB_StoreXML", 2, SQLITE_ANY, 0, + fnct_XB_StoreXML, 0, 0); + sqlite3_create_function (db, "XB_StoreXML", 3, SQLITE_ANY, 0, + fnct_XB_StoreXML, 0, 0); + +#endif /* end including LIBXML2 */ + + } + +/* some Geodesic functions */ + sqlite3_create_function (db, "GreatCircleLength", 1, SQLITE_ANY, 0, + fnct_GreatCircleLength, 0, 0); + sqlite3_create_function (db, "GeodesicLength", 1, SQLITE_ANY, 0, + fnct_GeodesicLength, 0, 0); + +/* some Length Unit conversion functions */ + sqlite3_create_function (db, "CvtToKm", 1, SQLITE_ANY, 0, fnct_cvtToKm, 0, + 0); + sqlite3_create_function (db, "CvtToDm", 1, SQLITE_ANY, 0, fnct_cvtToDm, 0, + 0); + sqlite3_create_function (db, "CvtToCm", 1, SQLITE_ANY, 0, fnct_cvtToCm, 0, + 0); + sqlite3_create_function (db, "CvtToMm", 1, SQLITE_ANY, 0, fnct_cvtToMm, 0, + 0); + sqlite3_create_function (db, "CvtToKmi", 1, SQLITE_ANY, 0, fnct_cvtToKmi, + 0, 0); + sqlite3_create_function (db, "CvtToIn", 1, SQLITE_ANY, 0, fnct_cvtToIn, 0, + 0); + sqlite3_create_function (db, "CvtToFt", 1, SQLITE_ANY, 0, fnct_cvtToFt, 0, + 0); + sqlite3_create_function (db, "CvtToYd", 1, SQLITE_ANY, 0, fnct_cvtToYd, 0, + 0); + sqlite3_create_function (db, "CvtToMi", 1, SQLITE_ANY, 0, fnct_cvtToMi, 0, + 0); + sqlite3_create_function (db, "CvtToFath", 1, SQLITE_ANY, 0, + fnct_cvtToFath, 0, 0); + sqlite3_create_function (db, "CvtToCh", 1, SQLITE_ANY, 0, fnct_cvtToCh, 0, + 0); + sqlite3_create_function (db, "CvtToLink", 1, SQLITE_ANY, 0, + fnct_cvtToLink, 0, 0); + sqlite3_create_function (db, "CvtToUsIn", 1, SQLITE_ANY, 0, + fnct_cvtToUsIn, 0, 0); + sqlite3_create_function (db, "CvtToUsFt", 1, SQLITE_ANY, 0, + fnct_cvtToUsFt, 0, 0); + sqlite3_create_function (db, "CvtToUsYd", 1, SQLITE_ANY, 0, + fnct_cvtToUsYd, 0, 0); + sqlite3_create_function (db, "CvtToUsCh", 1, SQLITE_ANY, 0, + fnct_cvtToUsCh, 0, 0); + sqlite3_create_function (db, "CvtToUsMi", 1, SQLITE_ANY, 0, + fnct_cvtToUsMi, 0, 0); + sqlite3_create_function (db, "CvtToIndFt", 1, SQLITE_ANY, 0, + fnct_cvtToIndFt, 0, 0); + sqlite3_create_function (db, "CvtToIndYd", 1, SQLITE_ANY, 0, + fnct_cvtToIndYd, 0, 0); + sqlite3_create_function (db, "CvtToIndCh", 1, SQLITE_ANY, 0, + fnct_cvtToIndCh, 0, 0); + sqlite3_create_function (db, "CvtFromKm", 1, SQLITE_ANY, 0, + fnct_cvtFromKm, 0, 0); + sqlite3_create_function (db, "CvtFromDm", 1, SQLITE_ANY, 0, + fnct_cvtFromDm, 0, 0); + sqlite3_create_function (db, "CvtFromCm", 1, SQLITE_ANY, 0, + fnct_cvtFromCm, 0, 0); + sqlite3_create_function (db, "CvtFromMm", 1, SQLITE_ANY, 0, + fnct_cvtFromMm, 0, 0); + sqlite3_create_function (db, "CvtFromKmi", 1, SQLITE_ANY, 0, + fnct_cvtFromKmi, 0, 0); + sqlite3_create_function (db, "CvtFromIn", 1, SQLITE_ANY, 0, + fnct_cvtFromIn, 0, 0); + sqlite3_create_function (db, "CvtFromFt", 1, SQLITE_ANY, 0, + fnct_cvtFromFt, 0, 0); + sqlite3_create_function (db, "CvtFromYd", 1, SQLITE_ANY, 0, + fnct_cvtFromYd, 0, 0); + sqlite3_create_function (db, "CvtFromMi", 1, SQLITE_ANY, 0, + fnct_cvtFromMi, 0, 0); + sqlite3_create_function (db, "CvtFromFath", 1, SQLITE_ANY, 0, + fnct_cvtFromFath, 0, 0); + sqlite3_create_function (db, "CvtFromCh", 1, SQLITE_ANY, 0, + fnct_cvtFromCh, 0, 0); + sqlite3_create_function (db, "CvtFromLink", 1, SQLITE_ANY, 0, + fnct_cvtFromLink, 0, 0); + sqlite3_create_function (db, "CvtFromUsIn", 1, SQLITE_ANY, 0, + fnct_cvtFromUsIn, 0, 0); + sqlite3_create_function (db, "CvtFromUsFt", 1, SQLITE_ANY, 0, + fnct_cvtFromUsFt, 0, 0); + sqlite3_create_function (db, "CvtFromUsYd", 1, SQLITE_ANY, 0, + fnct_cvtFromUsYd, 0, 0); + sqlite3_create_function (db, "CvtFromUsCh", 1, SQLITE_ANY, 0, + fnct_cvtFromUsCh, 0, 0); + sqlite3_create_function (db, "CvtFromUsMi", 1, SQLITE_ANY, 0, + fnct_cvtFromUsMi, 0, 0); + sqlite3_create_function (db, "CvtFromIndFt", 1, SQLITE_ANY, 0, + fnct_cvtFromIndFt, 0, 0); + sqlite3_create_function (db, "CvtFromIndYd", 1, SQLITE_ANY, 0, + fnct_cvtFromIndYd, 0, 0); + sqlite3_create_function (db, "CvtFromIndCh", 1, SQLITE_ANY, 0, + fnct_cvtFromIndCh, 0, 0); + +/* DMS (Degrees/Minutes/Seconds) to DD (decimal degrees) */ + sqlite3_create_function (db, "LongitudeFromDMS", 1, SQLITE_ANY, 0, + fnct_longFromDMS, 0, 0); + sqlite3_create_function (db, "LatitudeFromDMS", 1, SQLITE_ANY, 0, + fnct_latFromDMS, 0, 0); + sqlite3_create_function (db, "LongLatToDMS", 2, SQLITE_ANY, 0, fnct_toDMS, + 0, 0); + +#ifndef OMIT_MATHSQL /* supporting SQL math functions */ + +/* some extra math functions */ + sqlite3_create_function (db, "acos", 1, SQLITE_ANY, 0, fnct_math_acos, 0, + 0); + sqlite3_create_function (db, "asin", 1, SQLITE_ANY, 0, fnct_math_asin, 0, + 0); + sqlite3_create_function (db, "atan", 1, SQLITE_ANY, 0, fnct_math_atan, 0, + 0); + sqlite3_create_function (db, "ceil", 1, SQLITE_ANY, 0, fnct_math_ceil, 0, + 0); + sqlite3_create_function (db, "ceiling", 1, SQLITE_ANY, 0, fnct_math_ceil, + 0, 0); + sqlite3_create_function (db, "cos", 1, SQLITE_ANY, 0, fnct_math_cos, 0, 0); + sqlite3_create_function (db, "cot", 1, SQLITE_ANY, 0, fnct_math_cot, 0, 0); + sqlite3_create_function (db, "degrees", 1, SQLITE_ANY, 0, + fnct_math_degrees, 0, 0); + sqlite3_create_function (db, "exp", 1, SQLITE_ANY, 0, fnct_math_exp, 0, 0); + sqlite3_create_function (db, "floor", 1, SQLITE_ANY, 0, fnct_math_floor, + 0, 0); + sqlite3_create_function (db, "ln", 1, SQLITE_ANY, 0, fnct_math_logn, 0, 0); + sqlite3_create_function (db, "log", 1, SQLITE_ANY, 0, fnct_math_logn, 0, 0); + sqlite3_create_function (db, "log", 2, SQLITE_ANY, 0, fnct_math_logn2, 0, + 0); + sqlite3_create_function (db, "log2", 1, SQLITE_ANY, 0, fnct_math_log_2, 0, + 0); + sqlite3_create_function (db, "log10", 1, SQLITE_ANY, 0, fnct_math_log_10, + 0, 0); + sqlite3_create_function (db, "pi", 0, SQLITE_ANY, 0, fnct_math_pi, 0, 0); + sqlite3_create_function (db, "pow", 2, SQLITE_ANY, 0, fnct_math_pow, 0, 0); + sqlite3_create_function (db, "power", 2, SQLITE_ANY, 0, fnct_math_pow, 0, + 0); + sqlite3_create_function (db, "radians", 1, SQLITE_ANY, 0, + fnct_math_radians, 0, 0); + sqlite3_create_function (db, "sign", 1, SQLITE_ANY, 0, fnct_math_sign, 0, + 0); + sqlite3_create_function (db, "sin", 1, SQLITE_ANY, 0, fnct_math_sin, 0, 0); + sqlite3_create_function (db, "stddev_pop", 1, SQLITE_ANY, 0, 0, + fnct_math_stddev_step, fnct_math_stddev_pop_final); + sqlite3_create_function (db, "stddev_samp", 1, SQLITE_ANY, 0, 0, + fnct_math_stddev_step, + fnct_math_stddev_samp_final); + sqlite3_create_function (db, "sqrt", 1, SQLITE_ANY, 0, fnct_math_sqrt, 0, + 0); + sqlite3_create_function (db, "tan", 1, SQLITE_ANY, 0, fnct_math_tan, 0, 0); + sqlite3_create_function (db, "var_pop", 1, SQLITE_ANY, 0, 0, + fnct_math_stddev_step, fnct_math_var_pop_final); + sqlite3_create_function (db, "var_samp", 1, SQLITE_ANY, 0, 0, + fnct_math_stddev_step, fnct_math_var_samp_final); + +#endif /* end supporting SQL math functions */ + +#ifndef OMIT_PROJ /* including PROJ.4 */ + + sqlite3_create_function (db, "Transform", 2, SQLITE_ANY, cache, + fnct_Transform, 0, 0); + sqlite3_create_function (db, "ST_Transform", 2, SQLITE_ANY, cache, + fnct_Transform, 0, 0); + +#endif /* end including PROJ.4 */ + +#ifndef OMIT_GEOS /* including GEOS */ + + sqlite3_create_function (db, "GEOS_GetLastErrorMsg", 0, SQLITE_ANY, + cache, fnct_GEOS_GetLastErrorMsg, 0, 0); + sqlite3_create_function (db, "GEOS_GetLastWarningMsg", 0, SQLITE_ANY, + cache, fnct_GEOS_GetLastWarningMsg, 0, 0); + sqlite3_create_function (db, "GEOS_GetLastAuxErrorMsg", 0, SQLITE_ANY, + cache, fnct_GEOS_GetLastAuxErrorMsg, 0, 0); + sqlite3_create_function (db, "GEOS_GetCriticalPointFromMsg", 0, SQLITE_ANY, + cache, fnct_GEOS_GetCriticalPointFromMsg, 0, 0); + sqlite3_create_function (db, "GEOS_GetCriticalPointFromMsg", 1, SQLITE_ANY, + cache, fnct_GEOS_GetCriticalPointFromMsg, 0, 0); + sqlite3_create_function (db, "IsValidReason", 1, SQLITE_ANY, + cache, fnct_IsValidReason, 0, 0); + sqlite3_create_function (db, "ST_IsValidReason", 1, SQLITE_ANY, + cache, fnct_IsValidReason, 0, 0); + sqlite3_create_function (db, "IsValidDetail", 1, SQLITE_ANY, + cache, fnct_IsValidDetail, 0, 0); + sqlite3_create_function (db, "ST_IsValidDetail", 1, SQLITE_ANY, + cache, fnct_IsValidDetail, 0, 0); + + sqlite3_create_function (db, "Boundary", 1, SQLITE_ANY, cache, + fnct_Boundary, 0, 0); + sqlite3_create_function (db, "ST_Boundary", 1, SQLITE_ANY, cache, + fnct_Boundary, 0, 0); + sqlite3_create_function (db, "IsClosed", 1, SQLITE_ANY, 0, fnct_IsClosed, 0, + 0); + sqlite3_create_function (db, "ST_IsClosed", 1, SQLITE_ANY, 0, fnct_IsClosed, + 0, 0); + sqlite3_create_function (db, "IsSimple", 1, SQLITE_ANY, cache, + fnct_IsSimple, 0, 0); + sqlite3_create_function (db, "ST_IsSimple", 1, SQLITE_ANY, cache, + fnct_IsSimple, 0, 0); + sqlite3_create_function (db, "IsRing", 1, SQLITE_ANY, cache, fnct_IsRing, 0, + 0); + sqlite3_create_function (db, "ST_IsRing", 1, SQLITE_ANY, cache, fnct_IsRing, + 0, 0); + sqlite3_create_function (db, "IsValid", 1, SQLITE_ANY, cache, fnct_IsValid, + 0, 0); + sqlite3_create_function (db, "ST_IsValid", 1, SQLITE_ANY, cache, + fnct_IsValid, 0, 0); + sqlite3_create_function (db, "GLength", 1, SQLITE_ANY, cache, fnct_Length, + 0, 0); + sqlite3_create_function (db, "GLength", 2, SQLITE_ANY, cache, fnct_Length, + 0, 0); + sqlite3_create_function (db, "ST_Length", 1, SQLITE_ANY, cache, fnct_Length, + 0, 0); + sqlite3_create_function (db, "ST_Length", 2, SQLITE_ANY, cache, fnct_Length, + 0, 0); + sqlite3_create_function (db, "Perimeter", 1, SQLITE_ANY, cache, + fnct_Perimeter, 0, 0); + sqlite3_create_function (db, "Perimeter", 2, SQLITE_ANY, cache, + fnct_Perimeter, 0, 0); + sqlite3_create_function (db, "ST_Perimeter", 1, SQLITE_ANY, cache, + fnct_Perimeter, 0, 0); + sqlite3_create_function (db, "ST_Perimeter", 2, SQLITE_ANY, cache, + fnct_Perimeter, 0, 0); + sqlite3_create_function (db, "Area", 1, SQLITE_ANY, cache, fnct_Area, 0, 0); + sqlite3_create_function (db, "ST_Area", 1, SQLITE_ANY, cache, fnct_Area, 0, + 0); + sqlite3_create_function (db, "ST_Centroid", 1, SQLITE_ANY, cache, + fnct_Centroid, 0, 0); + sqlite3_create_function (db, "Centroid", 1, SQLITE_ANY, cache, + fnct_Centroid, 0, 0); + sqlite3_create_function (db, "PointOnSurface", 1, SQLITE_ANY, cache, + fnct_PointOnSurface, 0, 0); + sqlite3_create_function (db, "ST_PointOnSurface", 1, SQLITE_ANY, cache, + fnct_PointOnSurface, 0, 0); + sqlite3_create_function (db, "Simplify", 2, SQLITE_ANY, cache, + fnct_Simplify, 0, 0); + sqlite3_create_function (db, "ST_Simplify", 2, SQLITE_ANY, cache, + fnct_Simplify, 0, 0); + sqlite3_create_function (db, "ST_Generalize", 2, SQLITE_ANY, cache, + fnct_Simplify, 0, 0); + sqlite3_create_function (db, "SimplifyPreserveTopology", 2, SQLITE_ANY, + cache, fnct_SimplifyPreserveTopology, 0, 0); + sqlite3_create_function (db, "ST_SimplifyPreserveTopology", 2, SQLITE_ANY, + cache, fnct_SimplifyPreserveTopology, 0, 0); + sqlite3_create_function (db, "ConvexHull", 1, SQLITE_ANY, cache, + fnct_ConvexHull, 0, 0); + sqlite3_create_function (db, "ST_ConvexHull", 1, SQLITE_ANY, cache, + fnct_ConvexHull, 0, 0); + sqlite3_create_function (db, "Buffer", 2, SQLITE_ANY, cache, fnct_Buffer, 0, + 0); + sqlite3_create_function (db, "ST_Buffer", 2, SQLITE_ANY, cache, fnct_Buffer, + 0, 0); + sqlite3_create_function (db, "Intersection", 2, SQLITE_ANY, cache, + fnct_Intersection, 0, 0); + sqlite3_create_function (db, "ST_Intersection", 2, SQLITE_ANY, cache, + fnct_Intersection, 0, 0); + sqlite3_create_function (db, "GUnion", 1, SQLITE_ANY, cache, 0, + fnct_Union_step, fnct_Union_final); + sqlite3_create_function (db, "GUnion", 2, SQLITE_ANY, cache, fnct_Union, 0, + 0); + sqlite3_create_function (db, "ST_Union", 1, SQLITE_ANY, cache, 0, + fnct_Union_step, fnct_Union_final); + sqlite3_create_function (db, "ST_Union", 2, SQLITE_ANY, cache, fnct_Union, + 0, 0); + sqlite3_create_function (db, "Difference", 2, SQLITE_ANY, cache, + fnct_Difference, 0, 0); + sqlite3_create_function (db, "ST_Difference", 2, SQLITE_ANY, cache, + fnct_Difference, 0, 0); + sqlite3_create_function (db, "SymDifference", 2, SQLITE_ANY, cache, + fnct_SymDifference, 0, 0); + sqlite3_create_function (db, "ST_SymDifference", 2, SQLITE_ANY, cache, + fnct_SymDifference, 0, 0); + sqlite3_create_function (db, "Equals", 2, SQLITE_ANY, cache, fnct_Equals, 0, + 0); + sqlite3_create_function (db, "ST_Equals", 2, SQLITE_ANY, cache, fnct_Equals, + 0, 0); + sqlite3_create_function (db, "Intersects", 2, SQLITE_ANY, cache, + fnct_Intersects, 0, 0); + sqlite3_create_function (db, "ST_Intersects", 2, SQLITE_ANY, cache, + fnct_Intersects, 0, 0); + sqlite3_create_function (db, "Disjoint", 2, SQLITE_ANY, cache, + fnct_Disjoint, 0, 0); + sqlite3_create_function (db, "ST_Disjoint", 2, SQLITE_ANY, cache, + fnct_Disjoint, 0, 0); + sqlite3_create_function (db, "Overlaps", 2, SQLITE_ANY, cache, + fnct_Overlaps, 0, 0); + sqlite3_create_function (db, "ST_Overlaps", 2, SQLITE_ANY, cache, + fnct_Overlaps, 0, 0); + sqlite3_create_function (db, "Crosses", 2, SQLITE_ANY, cache, fnct_Crosses, + 0, 0); + sqlite3_create_function (db, "ST_Crosses", 2, SQLITE_ANY, cache, + fnct_Crosses, 0, 0); + sqlite3_create_function (db, "Touches", 2, SQLITE_ANY, cache, fnct_Touches, + 0, 0); + sqlite3_create_function (db, "ST_Touches", 2, SQLITE_ANY, cache, + fnct_Touches, 0, 0); + sqlite3_create_function (db, "Within", 2, SQLITE_ANY, cache, fnct_Within, 0, + 0); + sqlite3_create_function (db, "ST_Within", 2, SQLITE_ANY, cache, fnct_Within, + 0, 0); + sqlite3_create_function (db, "Contains", 2, SQLITE_ANY, cache, + fnct_Contains, 0, 0); + sqlite3_create_function (db, "ST_Contains", 2, SQLITE_ANY, cache, + fnct_Contains, 0, 0); + sqlite3_create_function (db, "Relate", 3, SQLITE_ANY, cache, fnct_Relate, 0, + 0); + sqlite3_create_function (db, "ST_Relate", 3, SQLITE_ANY, cache, fnct_Relate, + 0, 0); + sqlite3_create_function (db, "Distance", 2, SQLITE_ANY, cache, + fnct_Distance, 0, 0); + sqlite3_create_function (db, "Distance", 3, SQLITE_ANY, cache, + fnct_Distance, 0, 0); + sqlite3_create_function (db, "ST_Distance", 2, SQLITE_ANY, cache, + fnct_Distance, 0, 0); + sqlite3_create_function (db, "ST_Distance", 3, SQLITE_ANY, cache, + fnct_Distance, 0, 0); + sqlite3_create_function (db, "PtDistWithin", 3, SQLITE_ANY, cache, + fnct_PtDistWithin, 0, 0); + sqlite3_create_function (db, "PtDistWithin", 4, SQLITE_ANY, cache, + fnct_PtDistWithin, 0, 0); + sqlite3_create_function (db, "BdPolyFromText", 1, SQLITE_ANY, cache, + fnct_BdPolyFromText1, 0, 0); + sqlite3_create_function (db, "BdPolyFromText", 2, SQLITE_ANY, cache, + fnct_BdPolyFromText2, 0, 0); + sqlite3_create_function (db, "BdMPolyFromText", 1, SQLITE_ANY, cache, + fnct_BdMPolyFromText1, 0, 0); + sqlite3_create_function (db, "BdMPolyFromText", 2, SQLITE_ANY, cache, + fnct_BdMPolyFromText2, 0, 0); + sqlite3_create_function (db, "BdPolyFromWKB", 1, SQLITE_ANY, cache, + fnct_BdPolyFromWKB1, 0, 0); + sqlite3_create_function (db, "BdPolyFromWKB", 2, SQLITE_ANY, cache, + fnct_BdPolyFromWKB2, 0, 0); + sqlite3_create_function (db, "BdMPolyFromWKB", 1, SQLITE_ANY, cache, + fnct_BdMPolyFromWKB1, 0, 0); + sqlite3_create_function (db, "BdMPolyFromWKB", 2, SQLITE_ANY, cache, + fnct_BdMPolyFromWKB2, 0, 0); + sqlite3_create_function (db, "ST_BdPolyFromText", 1, SQLITE_ANY, cache, + fnct_BdPolyFromText1, 0, 0); + sqlite3_create_function (db, "ST_BdPolyFromText", 2, SQLITE_ANY, cache, + fnct_BdPolyFromText2, 0, 0); + sqlite3_create_function (db, "ST_BdMPolyFromText", 1, SQLITE_ANY, cache, + fnct_BdMPolyFromText1, 0, 0); + sqlite3_create_function (db, "ST_BdMPolyFromText", 2, SQLITE_ANY, cache, + fnct_BdMPolyFromText2, 0, 0); + sqlite3_create_function (db, "ST_BdPolyFromWKB", 1, SQLITE_ANY, cache, + fnct_BdPolyFromWKB1, 0, 0); + sqlite3_create_function (db, "ST_BdPolyFromWKB", 2, SQLITE_ANY, cache, + fnct_BdPolyFromWKB2, 0, 0); + sqlite3_create_function (db, "ST_BdMPolyFromWKB", 1, SQLITE_ANY, cache, + fnct_BdMPolyFromWKB1, 0, 0); + sqlite3_create_function (db, "ST_BdMPolyFromWKB", 2, SQLITE_ANY, cache, + fnct_BdMPolyFromWKB2, 0, 0); + sqlite3_create_function (db, "CreateTopologyTables", 2, SQLITE_ANY, 0, + fnct_CreateTopologyTables, 0, 0); + sqlite3_create_function (db, "CreateTopologyTables", 3, SQLITE_ANY, 0, + fnct_CreateTopologyTables, 0, 0); + sqlite3_create_function (db, "OffsetCurve", 3, SQLITE_ANY, cache, + fnct_OffsetCurve, 0, 0); + sqlite3_create_function (db, "ST_OffsetCurve", 3, SQLITE_ANY, cache, + fnct_OffsetCurve, 0, 0); + sqlite3_create_function (db, "SingleSidedBuffer", 3, SQLITE_ANY, cache, + fnct_SingleSidedBuffer, 0, 0); + sqlite3_create_function (db, "ST_SingleSidedBuffer", 3, SQLITE_ANY, cache, + fnct_SingleSidedBuffer, 0, 0); + sqlite3_create_function (db, "HausdorffDistance", 2, SQLITE_ANY, cache, + fnct_HausdorffDistance, 0, 0); + sqlite3_create_function (db, "ST_HausdorffDistance", 2, SQLITE_ANY, cache, + fnct_HausdorffDistance, 0, 0); + sqlite3_create_function (db, "SharedPaths", 2, SQLITE_ANY, cache, + fnct_SharedPaths, 0, 0); + sqlite3_create_function (db, "ST_SharedPaths", 2, SQLITE_ANY, cache, + fnct_SharedPaths, 0, 0); + sqlite3_create_function (db, "Covers", 2, SQLITE_ANY, cache, fnct_Covers, + 0, 0); + sqlite3_create_function (db, "ST_Covers", 2, SQLITE_ANY, cache, + fnct_Covers, 0, 0); + sqlite3_create_function (db, "CoveredBy", 2, SQLITE_ANY, cache, + fnct_CoveredBy, 0, 0); + sqlite3_create_function (db, "ST_CoveredBy", 2, SQLITE_ANY, cache, + fnct_CoveredBy, 0, 0); + sqlite3_create_function (db, "Line_Interpolate_Point", 2, SQLITE_ANY, cache, + fnct_LineInterpolatePoint, 0, 0); + sqlite3_create_function (db, "ST_Line_Interpolate_Point", 2, SQLITE_ANY, + cache, fnct_LineInterpolatePoint, 0, 0); + sqlite3_create_function (db, "Line_Interpolate_Equidistant_Points", 2, + SQLITE_ANY, cache, + fnct_LineInterpolateEquidistantPoints, 0, 0); + sqlite3_create_function (db, "ST_Line_Interpolate_Equidistant_Points", 2, + SQLITE_ANY, cache, + fnct_LineInterpolateEquidistantPoints, 0, 0); + sqlite3_create_function (db, "Line_Locate_Point", 2, SQLITE_ANY, cache, + fnct_LineLocatePoint, 0, 0); + sqlite3_create_function (db, "ST_Line_Locate_Point", 2, SQLITE_ANY, cache, + fnct_LineLocatePoint, 0, 0); + sqlite3_create_function (db, "Line_Substring", 3, SQLITE_ANY, cache, + fnct_LineSubstring, 0, 0); + sqlite3_create_function (db, "ST_Line_Substring", 3, SQLITE_ANY, cache, + fnct_LineSubstring, 0, 0); + sqlite3_create_function (db, "ClosestPoint", 2, SQLITE_ANY, cache, + fnct_ClosestPoint, 0, 0); + sqlite3_create_function (db, "ST_ClosestPoint", 2, SQLITE_ANY, cache, + fnct_ClosestPoint, 0, 0); + sqlite3_create_function (db, "ShortestLine", 2, SQLITE_ANY, cache, + fnct_ShortestLine, 0, 0); + sqlite3_create_function (db, "ST_ShortestLine", 2, SQLITE_ANY, cache, + fnct_ShortestLine, 0, 0); + sqlite3_create_function (db, "Snap", 3, SQLITE_ANY, cache, fnct_Snap, 0, 0); + sqlite3_create_function (db, "ST_Snap", 3, SQLITE_ANY, cache, fnct_Snap, 0, + 0); + sqlite3_create_function (db, "LineMerge", 1, SQLITE_ANY, cache, + fnct_LineMerge, 0, 0); + sqlite3_create_function (db, "ST_LineMerge", 1, SQLITE_ANY, cache, + fnct_LineMerge, 0, 0); + sqlite3_create_function (db, "UnaryUnion", 1, SQLITE_ANY, cache, + fnct_UnaryUnion, 0, 0); + sqlite3_create_function (db, "ST_UnaryUnion", 1, SQLITE_ANY, cache, + fnct_UnaryUnion, 0, 0); + sqlite3_create_function (db, "SquareGrid", 2, SQLITE_ANY, cache, + fnct_SquareGrid, 0, 0); + sqlite3_create_function (db, "SquareGrid", 3, SQLITE_ANY, cache, + fnct_SquareGrid, 0, 0); + sqlite3_create_function (db, "SquareGrid", 4, SQLITE_ANY, cache, + fnct_SquareGrid, 0, 0); + sqlite3_create_function (db, "ST_SquareGrid", 2, SQLITE_ANY, cache, + fnct_SquareGrid, 0, 0); + sqlite3_create_function (db, "ST_SquareGrid", 3, SQLITE_ANY, cache, + fnct_SquareGrid, 0, 0); + sqlite3_create_function (db, "ST_SquareGrid", 4, SQLITE_ANY, cache, + fnct_SquareGrid, 0, 0); + sqlite3_create_function (db, "TriangularGrid", 2, SQLITE_ANY, cache, + fnct_TriangularGrid, 0, 0); + sqlite3_create_function (db, "TriangularGrid", 3, SQLITE_ANY, cache, + fnct_TriangularGrid, 0, 0); + sqlite3_create_function (db, "TriangularGrid", 4, SQLITE_ANY, cache, + fnct_TriangularGrid, 0, 0); + sqlite3_create_function (db, "ST_TriangularGrid", 2, SQLITE_ANY, cache, + fnct_TriangularGrid, 0, 0); + sqlite3_create_function (db, "ST_TriangularGrid", 3, SQLITE_ANY, cache, + fnct_TriangularGrid, 0, 0); + sqlite3_create_function (db, "ST_TriangularGrid", 4, SQLITE_ANY, cache, + fnct_TriangularGrid, 0, 0); + sqlite3_create_function (db, "HexagonalGrid", 2, SQLITE_ANY, cache, + fnct_HexagonalGrid, 0, 0); + sqlite3_create_function (db, "HexagonalGrid", 3, SQLITE_ANY, cache, + fnct_HexagonalGrid, 0, 0); + sqlite3_create_function (db, "HexagonalGrid", 4, SQLITE_ANY, cache, + fnct_HexagonalGrid, 0, 0); + sqlite3_create_function (db, "ST_HexagonalGrid", 2, SQLITE_ANY, cache, + fnct_HexagonalGrid, 0, 0); + sqlite3_create_function (db, "ST_HexagonalGrid", 3, SQLITE_ANY, cache, + fnct_HexagonalGrid, 0, 0); + sqlite3_create_function (db, "ST_HexagonalGrid", 4, SQLITE_ANY, cache, + fnct_HexagonalGrid, 0, 0); + sqlite3_create_function (db, "LinesCutAtNodes", 2, SQLITE_ANY, 0, + fnct_LinesCutAtNodes, 0, 0); + sqlite3_create_function (db, "ST_LinesCutAtNodes", 2, SQLITE_ANY, 0, + fnct_LinesCutAtNodes, 0, 0); + sqlite3_create_function (db, "RingsCutAtNodes", 1, SQLITE_ANY, 0, + fnct_RingsCutAtNodes, 0, 0); + sqlite3_create_function (db, "ST_RingsCutAtNodes", 1, SQLITE_ANY, 0, + fnct_RingsCutAtNodes, 0, 0); + +#ifdef GEOS_ADVANCED /* GEOS advanced features - 3.4.0 */ + + sqlite3_create_function (db, "DelaunayTriangulation", 1, SQLITE_ANY, cache, + fnct_DelaunayTriangulation, 0, 0); + sqlite3_create_function (db, "DelaunayTriangulation", 2, SQLITE_ANY, cache, + fnct_DelaunayTriangulation, 0, 0); + sqlite3_create_function (db, "DelaunayTriangulation", 3, SQLITE_ANY, cache, + fnct_DelaunayTriangulation, 0, 0); + sqlite3_create_function (db, "ST_DelaunayTriangulation", 1, SQLITE_ANY, + cache, fnct_DelaunayTriangulation, 0, 0); + sqlite3_create_function (db, "ST_DelaunayTriangulation", 2, SQLITE_ANY, + cache, fnct_DelaunayTriangulation, 0, 0); + sqlite3_create_function (db, "ST_DelaunayTriangulation", 3, SQLITE_ANY, + cache, fnct_DelaunayTriangulation, 0, 0); + sqlite3_create_function (db, "VoronojDiagram", 1, SQLITE_ANY, cache, + fnct_VoronojDiagram, 0, 0); + sqlite3_create_function (db, "VoronojDiagram", 2, SQLITE_ANY, cache, + fnct_VoronojDiagram, 0, 0); + sqlite3_create_function (db, "VoronojDiagram", 3, SQLITE_ANY, cache, + fnct_VoronojDiagram, 0, 0); + sqlite3_create_function (db, "VoronojDiagram", 4, SQLITE_ANY, cache, + fnct_VoronojDiagram, 0, 0); + sqlite3_create_function (db, "ST_VoronojDiagram", 1, SQLITE_ANY, cache, + fnct_VoronojDiagram, 0, 0); + sqlite3_create_function (db, "ST_VoronojDiagram", 2, SQLITE_ANY, cache, + fnct_VoronojDiagram, 0, 0); + sqlite3_create_function (db, "ST_VoronojDiagram", 3, SQLITE_ANY, cache, + fnct_VoronojDiagram, 0, 0); + sqlite3_create_function (db, "ST_VoronojDiagram", 4, SQLITE_ANY, cache, + fnct_VoronojDiagram, 0, 0); + sqlite3_create_function (db, "ConcaveHull", 1, SQLITE_ANY, cache, + fnct_ConcaveHull, 0, 0); + sqlite3_create_function (db, "ConcaveHull", 2, SQLITE_ANY, cache, + fnct_ConcaveHull, 0, 0); + sqlite3_create_function (db, "ConcaveHull", 3, SQLITE_ANY, cache, + fnct_ConcaveHull, 0, 0); + sqlite3_create_function (db, "ConcaveHull", 4, SQLITE_ANY, cache, + fnct_ConcaveHull, 0, 0); + sqlite3_create_function (db, "ST_ConcaveHull", 1, SQLITE_ANY, cache, + fnct_ConcaveHull, 0, 0); + sqlite3_create_function (db, "ST_ConcaveHull", 2, SQLITE_ANY, cache, + fnct_ConcaveHull, 0, 0); + sqlite3_create_function (db, "ST_ConcaveHull", 3, SQLITE_ANY, cache, + fnct_ConcaveHull, 0, 0); + sqlite3_create_function (db, "ST_ConcaveHull", 4, SQLITE_ANY, cache, + fnct_ConcaveHull, 0, 0); + +#endif /* end GEOS advanced features */ + +#ifdef ENABLE_LWGEOM /* enabling LWGEOM support */ + + sqlite3_create_function (db, "LWGEOM_GetLastErrorMsg", 0, SQLITE_ANY, + 0, fnct_LWGEOM_GetLastErrorMsg, 0, 0); + sqlite3_create_function (db, "LWGEOM_GetLastWarningMsg", 0, SQLITE_ANY, + 0, fnct_LWGEOM_GetLastWarningMsg, 0, 0); + + sqlite3_create_function (db, "MakeValid", 1, SQLITE_ANY, 0, + fnct_MakeValid, 0, 0); + sqlite3_create_function (db, "ST_MakeValid", 1, SQLITE_ANY, 0, + fnct_MakeValid, 0, 0); + sqlite3_create_function (db, "MakeValidDiscarded", 1, SQLITE_ANY, 0, + fnct_MakeValidDiscarded, 0, 0); + sqlite3_create_function (db, "ST_MakeValidDiscarded", 1, SQLITE_ANY, 0, + fnct_MakeValidDiscarded, 0, 0); + sqlite3_create_function (db, "Area", 2, SQLITE_ANY, 0, fnct_Area, 0, 0); + sqlite3_create_function (db, "ST_Area", 2, SQLITE_ANY, 0, fnct_Area, 0, 0); + sqlite3_create_function (db, "Segmentize", 2, SQLITE_ANY, 0, + fnct_Segmentize, 0, 0); + sqlite3_create_function (db, "ST_Segmentize", 2, SQLITE_ANY, 0, + fnct_Segmentize, 0, 0); + sqlite3_create_function (db, "Azimuth", 2, SQLITE_ANY, 0, fnct_Azimuth, 0, + 0); + sqlite3_create_function (db, "ST_Azimuth", 2, SQLITE_ANY, 0, fnct_Azimuth, + 0, 0); + sqlite3_create_function (db, "Project", 3, SQLITE_ANY, 0, fnct_Project, 0, + 0); + sqlite3_create_function (db, "ST_Project", 3, SQLITE_ANY, 0, fnct_Project, + 0, 0); + sqlite3_create_function (db, "GeoHash", 1, SQLITE_ANY, 0, fnct_GeoHash, 0, + 0); + sqlite3_create_function (db, "GeoHash", 2, SQLITE_ANY, 0, fnct_GeoHash, 0, + 0); + sqlite3_create_function (db, "ST_GeoHash", 1, SQLITE_ANY, 0, fnct_GeoHash, + 0, 0); + sqlite3_create_function (db, "ST_GeoHash", 2, SQLITE_ANY, 0, fnct_GeoHash, + 0, 0); + sqlite3_create_function (db, "AsX3D", 1, SQLITE_ANY, 0, fnct_AsX3D, 0, 0); + sqlite3_create_function (db, "AsX3D", 2, SQLITE_ANY, 0, fnct_AsX3D, 0, 0); + sqlite3_create_function (db, "AsX3D", 3, SQLITE_ANY, 0, fnct_AsX3D, 0, 0); + sqlite3_create_function (db, "AsX3D", 4, SQLITE_ANY, 0, fnct_AsX3D, 0, 0); + sqlite3_create_function (db, "ST_AsX3D", 1, SQLITE_ANY, 0, fnct_AsX3D, + 0, 0); + sqlite3_create_function (db, "ST_AsX3D", 2, SQLITE_ANY, 0, fnct_AsX3D, + 0, 0); + sqlite3_create_function (db, "ST_AsX3D", 3, SQLITE_ANY, 0, fnct_AsX3D, + 0, 0); + sqlite3_create_function (db, "ST_AsX3D", 4, SQLITE_ANY, 0, fnct_AsX3D, + 0, 0); + sqlite3_create_function (db, "ST_3DDistance", 2, SQLITE_ANY, 0, + fnct_3DDistance, 0, 0); + sqlite3_create_function (db, "MaxDistance", 2, SQLITE_ANY, 0, + fnct_MaxDistance, 0, 0); + sqlite3_create_function (db, "ST_MaxDistance", 2, SQLITE_ANY, 0, + fnct_MaxDistance, 0, 0); + sqlite3_create_function (db, "ST_3DMaxDistance", 2, SQLITE_ANY, 0, + fnct_3DMaxDistance, 0, 0); + sqlite3_create_function (db, "Split", 2, SQLITE_ANY, 0, fnct_Split, 0, 0); + sqlite3_create_function (db, "ST_Split", 2, SQLITE_ANY, 0, fnct_Split, + 0, 0); + sqlite3_create_function (db, "SplitLeft", 2, SQLITE_ANY, 0, + fnct_SplitLeft, 0, 0); + sqlite3_create_function (db, "ST_SplitLeft", 2, SQLITE_ANY, 0, + fnct_SplitLeft, 0, 0); + sqlite3_create_function (db, "SplitRight", 2, SQLITE_ANY, 0, + fnct_SplitRight, 0, 0); + sqlite3_create_function (db, "ST_SplitRight", 2, SQLITE_ANY, 0, + fnct_SplitRight, 0, 0); + sqlite3_create_function (db, "ST_Node", 1, SQLITE_ANY, 0, fnct_Node, 0, 0); + sqlite3_create_function (db, "SelfIntersections", 1, SQLITE_ANY, 0, + fnct_SelfIntersections, 0, 0); + sqlite3_create_function (db, "ST_SelfIntersections", 1, SQLITE_ANY, 0, + fnct_SelfIntersections, 0, 0); + +#endif /* end LWGEOM support */ + +#endif /* end including GEOS */ + +#ifdef ENABLE_LIBXML2 /* including LIBXML2 */ + + sqlite3_create_function (db, "CreateStylingTables", 0, SQLITE_ANY, 0, + fnct_CreateStylingTables, 0, 0); + sqlite3_create_function (db, "CreateStylingTables", 1, SQLITE_ANY, 0, + fnct_CreateStylingTables, 0, 0); + sqlite3_create_function (db, "RegisterExternalGraphic", 2, SQLITE_ANY, 0, + fnct_RegisterExternalGraphic, 0, 0); + sqlite3_create_function (db, "RegisterExternalGraphic", 5, SQLITE_ANY, 0, + fnct_RegisterExternalGraphic, 0, 0); + sqlite3_create_function (db, "RegisterVectorStyledLayer", 3, SQLITE_ANY, + 0, fnct_RegisterVectorStyledLayer, 0, 0); + sqlite3_create_function (db, "RegisterVectorStyledLayer", 4, SQLITE_ANY, + 0, fnct_RegisterVectorStyledLayer, 0, 0); + sqlite3_create_function (db, "RegisterRasterStyledLayer", 2, SQLITE_ANY, + 0, fnct_RegisterRasterStyledLayer, 0, 0); + sqlite3_create_function (db, "RegisterRasterStyledLayer", 3, SQLITE_ANY, + 0, fnct_RegisterRasterStyledLayer, 0, 0); + sqlite3_create_function (db, "RegisterStyledGroup", 2, SQLITE_ANY, 0, + fnct_RegisterStyledGroup, 0, 0); + sqlite3_create_function (db, "RegisterStyledGroup", 3, SQLITE_ANY, 0, + fnct_RegisterStyledGroup, 0, 0); + sqlite3_create_function (db, "RegisterStyledGroup", 4, SQLITE_ANY, 0, + fnct_RegisterStyledGroup, 0, 0); + sqlite3_create_function (db, "SetStyledGroupInfos", 3, SQLITE_ANY, 0, + fnct_SetStyledGroupInfos, 0, 0); + sqlite3_create_function (db, "RegisterGroupStyle", 2, SQLITE_ANY, + 0, fnct_RegisterGroupStyle, 0, 0); + sqlite3_create_function (db, "RegisterGroupStyle", 3, SQLITE_ANY, + 0, fnct_RegisterGroupStyle, 0, 0); + sqlite3_create_function (db, "CreateIsoMetadataTables", 0, SQLITE_ANY, 0, + fnct_CreateIsoMetadataTables, 0, 0); + sqlite3_create_function (db, "CreateIsoMetadataTables", 1, SQLITE_ANY, 0, + fnct_CreateIsoMetadataTables, 0, 0); + sqlite3_create_function (db, "GetIsoMetadataId", 1, SQLITE_ANY, 0, + fnct_GetIsoMetadataId, 0, 0); + sqlite3_create_function (db, "RegisterIsoMetadata", 2, SQLITE_ANY, 0, + fnct_RegisterIsoMetadata, 0, 0); + sqlite3_create_function (db, "RegisterIsoMetadata", 3, SQLITE_ANY, 0, + fnct_RegisterIsoMetadata, 0, 0); + sqlite3_create_function (db, "XB_Create", 1, SQLITE_ANY, cache, + fnct_XB_Create, 0, 0); + sqlite3_create_function (db, "XB_Create", 2, SQLITE_ANY, cache, + fnct_XB_Create, 0, 0); + sqlite3_create_function (db, "XB_Create", 3, SQLITE_ANY, cache, + fnct_XB_Create, 0, 0); + sqlite3_create_function (db, "XB_GetPayload", 1, SQLITE_ANY, 0, + fnct_XB_GetPayload, 0, 0); + sqlite3_create_function (db, "XB_GetPayload", 2, SQLITE_ANY, 0, + fnct_XB_GetPayload, 0, 0); + sqlite3_create_function (db, "XB_GetDocument", 1, SQLITE_ANY, 0, + fnct_XB_GetDocument, 0, 0); + sqlite3_create_function (db, "XB_GetDocument", 2, SQLITE_ANY, 0, + fnct_XB_GetDocument, 0, 0); + sqlite3_create_function (db, "XB_SchemaValidate", 2, SQLITE_ANY, cache, + fnct_XB_SchemaValidate, 0, 0); + sqlite3_create_function (db, "XB_Compress", 1, SQLITE_ANY, 0, + fnct_XB_Compress, 0, 0); + sqlite3_create_function (db, "XB_Uncompress", 1, SQLITE_ANY, 0, + fnct_XB_Uncompress, 0, 0); + sqlite3_create_function (db, "XB_IsValid", 1, SQLITE_ANY, 0, + fnct_XB_IsValid, 0, 0); + sqlite3_create_function (db, "XB_IsSchemaValidated", 1, SQLITE_ANY, 0, + fnct_XB_IsSchemaValidated, 0, 0); + sqlite3_create_function (db, "XB_IsCompressed", 1, SQLITE_ANY, 0, + fnct_XB_IsCompressed, 0, 0); + sqlite3_create_function (db, "XB_IsIsoMetadata", 1, SQLITE_ANY, 0, + fnct_XB_IsIsoMetadata, 0, 0); + sqlite3_create_function (db, "XB_IsSldSeVectorStyle", 1, SQLITE_ANY, 0, + fnct_XB_IsSldSeVectorStyle, 0, 0); + sqlite3_create_function (db, "XB_IsSldSeRasterStyle", 1, SQLITE_ANY, 0, + fnct_XB_IsSldSeRasterStyle, 0, 0); + sqlite3_create_function (db, "XB_IsSldStyle", 1, SQLITE_ANY, 0, + fnct_XB_IsSldStyle, 0, 0); + sqlite3_create_function (db, "XB_IsSvg", 1, SQLITE_ANY, 0, fnct_XB_IsSvg, + 0, 0); + sqlite3_create_function (db, "XB_GetSchemaURI", 1, SQLITE_ANY, 0, + fnct_XB_GetSchemaURI, 0, 0); + sqlite3_create_function (db, "XB_GetInternalSchemaURI", 1, SQLITE_ANY, + cache, fnct_XB_GetInternalSchemaURI, 0, 0); + sqlite3_create_function (db, "XB_GetFileId", 1, SQLITE_ANY, 0, + fnct_XB_GetFileId, 0, 0); + sqlite3_create_function (db, "XB_GetParentId", 1, SQLITE_ANY, 0, + fnct_XB_GetParentId, 0, 0); + sqlite3_create_function (db, "XB_SetFileId", 2, SQLITE_ANY, cache, + fnct_XB_SetFileId, 0, 0); + sqlite3_create_function (db, "XB_SetParentId", 2, SQLITE_ANY, cache, + fnct_XB_SetParentId, 0, 0); + sqlite3_create_function (db, "XB_AddFileId", 6, SQLITE_ANY, cache, + fnct_XB_AddFileId, 0, 0); + sqlite3_create_function (db, "XB_AddParentId", 6, SQLITE_ANY, cache, + fnct_XB_AddParentId, 0, 0); + sqlite3_create_function (db, "XB_GetName", 1, SQLITE_ANY, 0, + fnct_XB_GetName, 0, 0); + sqlite3_create_function (db, "XB_GetTitle", 1, SQLITE_ANY, 0, + fnct_XB_GetTitle, 0, 0); + sqlite3_create_function (db, "XB_GetAbstract", 1, SQLITE_ANY, 0, + fnct_XB_GetAbstract, 0, 0); + sqlite3_create_function (db, "XB_GetGeometry", 1, SQLITE_ANY, 0, + fnct_XB_GetGeometry, 0, 0); + sqlite3_create_function (db, "XB_GetDocumentSize", 1, SQLITE_ANY, 0, + fnct_XB_GetDocumentSize, 0, 0); + sqlite3_create_function (db, "XB_GetEncoding", 1, SQLITE_ANY, 0, + fnct_XB_GetEncoding, 0, 0); + sqlite3_create_function (db, "XB_GetLastParseError", 0, SQLITE_ANY, cache, + fnct_XB_GetLastParseError, 0, 0); + sqlite3_create_function (db, "XB_GetLastValidateError", 0, SQLITE_ANY, + cache, fnct_XB_GetLastValidateError, 0, 0); + sqlite3_create_function (db, "XB_IsValidXPathExpression", 1, SQLITE_ANY, + cache, fnct_XB_IsValidXPathExpression, 0, 0); + sqlite3_create_function (db, "XB_GetLastXPathError", 0, SQLITE_ANY, cache, + fnct_XB_GetLastXPathError, 0, 0); + sqlite3_create_function (db, "XB_CacheFlush", 0, SQLITE_ANY, cache, + fnct_XB_CacheFlush, 0, 0); + +#endif /* end including LIBXML2 */ + +#ifdef ENABLE_GEOPACKAGE /* enabling GeoPackage extensions */ + + sqlite3_create_function (db, "AutoGPKGStart", 0, SQLITE_ANY, 0, + fnct_AutoGPKGStart, 0, 0); + sqlite3_create_function (db, "AutoGPKGStop", 0, SQLITE_ANY, 0, + fnct_AutoGPKGStop, 0, 0); + + /* not yet finalised geopackage raster functions, plus some convenience API */ + sqlite3_create_function (db, "gpkgCreateBaseTables", 0, SQLITE_ANY, 0, + fnct_gpkgCreateBaseTables, 0, 0); + sqlite3_create_function (db, "gpkgInsertEpsgSRID", 1, SQLITE_ANY, 0, + fnct_gpkgInsertEpsgSRID, 0, 0); + sqlite3_create_function (db, "gpkgCreateTilesTable", 6, SQLITE_ANY, 0, + fnct_gpkgCreateTilesTable, 0, 0); + sqlite3_create_function (db, "gpkgCreateTilesZoomLevel", 4, SQLITE_ANY, 0, + fnct_gpkgCreateTilesZoomLevel, 0, 0); + sqlite3_create_function (db, "gpkgAddTileTriggers", 1, SQLITE_ANY, 0, + fnct_gpkgAddTileTriggers, 0, 0); + sqlite3_create_function (db, "gpkgGetNormalZoom", 2, SQLITE_ANY, 0, + fnct_gpkgGetNormalZoom, 0, 0); + sqlite3_create_function (db, "gpkgGetNormalRow", 3, SQLITE_ANY, 0, + fnct_gpkgGetNormalRow, 0, 0); + sqlite3_create_function (db, "gpkgGetImageType", 1, SQLITE_ANY, 0, + fnct_gpkgGetImageType, 0, 0); + sqlite3_create_function (db, "gpkgAddGeometryColumn", 6, SQLITE_ANY, 0, + fnct_gpkgAddGeometryColumn, 0, 0); + sqlite3_create_function (db, "gpkgAddGeometryTriggers", 2, SQLITE_ANY, 0, + fnct_gpkgAddGeometryTriggers, 0, 0); + sqlite3_create_function (db, "gpkgAddSpatialIndex", 2, SQLITE_ANY, 0, + fnct_gpkgAddSpatialIndex, 0, 0); + sqlite3_create_function (db, "gpkgMakePoint", 2, SQLITE_ANY, 0, + fnct_gpkgMakePoint, 0, 0); + sqlite3_create_function (db, "gpkgMakePoint", 3, SQLITE_ANY, 0, + fnct_gpkgMakePointWithSRID, 0, 0); + sqlite3_create_function (db, "gpkgMakePointZ", 3, SQLITE_ANY, 0, + fnct_gpkgMakePointZ, 0, 0); + sqlite3_create_function (db, "gpkgMakePointZ", 4, SQLITE_ANY, 0, + fnct_gpkgMakePointZWithSRID, 0, 0); + sqlite3_create_function (db, "gpkgMakePointM", 3, SQLITE_ANY, 0, + fnct_gpkgMakePointM, 0, 0); + sqlite3_create_function (db, "gpkgMakePointM", 4, SQLITE_ANY, 0, + fnct_gpkgMakePointMWithSRID, 0, 0); + sqlite3_create_function (db, "gpkgMakePointZM", 4, SQLITE_ANY, 0, + fnct_gpkgMakePointZM, 0, 0); + sqlite3_create_function (db, "gpkgMakePointZM", 5, SQLITE_ANY, 0, + fnct_gpkgMakePointZMWithSRID, 0, 0); + sqlite3_create_function (db, "AsGPB", 1, SQLITE_ANY, 0, fnct_ToGPB, 0, 0); + sqlite3_create_function (db, "GeomFromGPB", 1, SQLITE_ANY, 0, + fnct_GeomFromGPB, 0, 0); + sqlite3_create_function (db, "IsValidGPB", 1, SQLITE_ANY, 0, + fnct_IsValidGPB, 0, 0); + sqlite3_create_function (db, "GPKG_IsAssignable", 2, SQLITE_ANY, 0, + fnct_GPKG_IsAssignable, 0, 0); + sqlite3_create_function (db, "CastAutomagic", 1, SQLITE_ANY, 0, + fnct_CastAutomagic, 0, 0); + +#endif /* end enabling GeoPackage extensions */ + + return cache; +} + +SPATIALITE_PRIVATE void +init_spatialite_virtualtables (void *p_db, const void *p_cache) +{ + sqlite3 *db = (sqlite3 *) p_db; + +#ifndef OMIT_ICONV /* when ICONV is disabled SHP/DBF/TXT cannot be supported */ +/* initializing the VirtualShape extension */ + virtualshape_extension_init (db); +/* initializing the VirtualDbf extension */ + virtualdbf_extension_init (db); +/* initializing the VirtualText extension */ + virtualtext_extension_init (db); + +#ifndef OMIT_FREEXL +/* initializing the VirtualXL extension */ + virtualXL_extension_init (db); +#endif /* FreeXL enabled/disable */ +#endif /* ICONV enabled/disabled */ + +/* initializing the VirtualNetwork extension */ + virtualnetwork_extension_init (db); +/* initializing the MbrCache extension */ + mbrcache_extension_init (db); +/* initializing the VirtualFDO extension */ + virtualfdo_extension_init (db); +/* initializing the VirtualBBox extension */ + virtualbbox_extension_init (db, p_cache); +/* initializing the VirtualSpatialIndex extension */ + virtual_spatialindex_extension_init (db); + +#ifdef ENABLE_GEOPACKAGE /* only if GeoPackage support is enabled */ +/* initializing the VirtualFDO extension */ + virtualgpkg_extension_init (db); +#endif /* end GEOPACKAGE conditional */ + +#ifdef ENABLE_LIBXML2 /* including LIBXML2 */ +/* initializing the VirtualXPath extension */ + virtual_xpath_extension_init (db, p_cache); +#endif /* LIBXML2 enabled/disable */ +} + +#ifdef LOADABLE_EXTENSION /* loadable-extension only */ +SQLITE_EXTENSION_INIT1 static int +init_spatialite_extension (sqlite3 * db, char **pzErrMsg, + const sqlite3_api_routines * pApi) +{ + void *p_cache = spatialite_alloc_connection (); + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + SQLITE_EXTENSION_INIT2 (pApi); + +#ifdef POSTGIS_2_1 /* initializing liblwgeom from PostGIS 2.1.x (or later) */ + splite_lwgeom_init (); +#endif /* end POSTGIS_2_1 */ + +/* setting the POSIX locale for numeric */ + setlocale (LC_NUMERIC, "POSIX"); + *pzErrMsg = NULL; + + register_spatialite_sql_functions (db, cache); + + init_spatialite_virtualtables (db, p_cache); + +/* setting a timeout handler */ + sqlite3_busy_timeout (db, 5000); + + return 0; +} +#endif + +SPATIALITE_DECLARE void +spatialite_init_geos (void) +{ +/* initializes GEOS (or resets to initial state - as required by LWGEOM) */ +#ifndef OMIT_GEOS /* initializing GEOS */ + initGEOS (geos_warning, geos_error); +#endif /* end GEOS */ +} + +SPATIALITE_PRIVATE void +spatialite_splash_screen (int verbose) +{ + if (isatty (1)) + { + /* printing "hello" message only when stdout is on console */ + if (verbose) + { + spatialite_i ("SpatiaLite version ..: %s", + spatialite_version ()); + spatialite_i ("\tSupported Extensions:\n"); +#ifndef OMIT_ICONV /* ICONV is required by SHP/DBF/TXT */ + spatialite_i + ("\t- 'VirtualShape'\t[direct Shapefile access]\n"); + spatialite_i ("\t- 'VirtualDbf'\t\t[direct DBF access]\n"); +#ifndef OMIT_FREEXL + spatialite_i ("\t- 'VirtualXL'\t\t[direct XLS access]\n"); +#endif /* end FreeXL conditional */ + spatialite_i ("\t- 'VirtualText'\t\t[direct CSV/TXT access]\n"); +#endif /* end ICONV conditional */ + spatialite_i + ("\t- 'VirtualNetwork'\t[Dijkstra shortest path]\n"); + spatialite_i ("\t- 'RTree'\t\t[Spatial Index - R*Tree]\n"); + spatialite_i + ("\t- 'MbrCache'\t\t[Spatial Index - MBR cache]\n"); + spatialite_i + ("\t- 'VirtualSpatialIndex'\t[R*Tree metahandler]\n"); + +#ifdef ENABLE_LIBXML2 /* VirtualXPath is supported */ + spatialite_i + ("\t- 'VirtualXPath'\t[XML Path Language - XPath]\n"); +#endif /* end including LIBXML2 */ + + spatialite_i + ("\t- 'VirtualFDO'\t\t[FDO-OGR interoperability]\n"); + +#ifdef ENABLE_GEOPACKAGE /* VirtualGPKG is supported */ + spatialite_i + ("\t- 'VirtualGPKG'\t[OGC GeoPackage interoperability]\n"); +#endif + spatialite_i ("\t- 'VirtualBBox'\t\t[BoundingBox tables]\n"); + spatialite_i ("\t- 'SpatiaLite'\t\t[Spatial SQL - OGC]\n"); + } +#ifndef OMIT_PROJ /* PROJ.4 version */ + if (verbose) + spatialite_i ("PROJ.4 version ......: %s\n", pj_get_release ()); +#endif /* end including PROJ.4 */ +#ifndef OMIT_GEOS /* GEOS version */ + if (verbose) + spatialite_i ("GEOS version ........: %s\n", GEOSversion ()); +#endif /* end GEOS version */ +#ifdef ENABLE_LWGEOM /* LWGEOM version */ + if (verbose) + spatialite_i ("LWGEOM version ......: %s\n", + splite_lwgeom_version ()); +#endif /* end LWGEOM version */ + if (verbose) + spatialite_i ("TARGET CPU ..........: %s\n", + spatialite_target_cpu ()); + } +} + +#ifndef LOADABLE_EXTENSION +SPATIALITE_DECLARE void +spatialite_init_ex (sqlite3 * db_handle, const void *p_cache, int verbose) +{ +/* used when SQLite initializes as an ordinary lib */ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + if (p_cache == NULL) + { + spatialite_e + ("ERROR unable to initialize the SpatiaLite extension: NULL cache !!!\n"); + return; + } + +/* setting the POSIX locale for numeric */ + setlocale (LC_NUMERIC, "POSIX"); + +#ifdef POSTGIS_2_1 /* initializing liblwgeom from PostGIS 2.1.x (or later) */ + splite_lwgeom_init (); +#endif /* end POSTGIS_2_1 */ + + register_spatialite_sql_functions (db_handle, cache); + + init_spatialite_virtualtables (db_handle, p_cache); + spatialite_splash_screen (verbose); + +/* setting a timeout handler */ + sqlite3_busy_timeout (db_handle, 5000); +} + +SPATIALITE_DECLARE void +spatialite_cleanup_ex (const void *ptr) +{ + struct splite_internal_cache *cache = (struct splite_internal_cache *) ptr; + + if (cache == NULL) + return; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return; + +#ifdef ENABLE_LWGEOM + gaiaResetLwGeomMsg (); +#endif + + free_internal_cache (cache); + sqlite3_reset_auto_extension (); +} +#endif /* not built as loadable-extension only */ + +#ifdef LOADABLE_EXTENSION /* loadable-extension only */ +#if !(defined _WIN32) || defined(__MINGW32__) +/* MSVC is unable to understand this declaration */ +__attribute__ ((visibility ("default"))) +#endif + SPATIALITE_DECLARE int + sqlite3_modspatialite_init (sqlite3 * db, char **pzErrMsg, + const sqlite3_api_routines * pApi) +{ +/* SQLite invokes this routine once when it dynamically loads the extension. */ + spatialite_initialize (); + return init_spatialite_extension (db, pzErrMsg, pApi); +} +#endif + +SPATIALITE_DECLARE sqlite3_int64 +math_llabs (sqlite3_int64 value) +{ +/* replacing the C99 llabs() function */ + return value < 0 ? -value : value; +} + +SPATIALITE_DECLARE double +math_round (double value) +{ +/* replacing the C99 round() function */ + double min = floor (value); + if (fabs (value - min) < 0.5) + return min; + return min + 1.0; +} diff --git a/src/spatialite/src/spatialite/spatialite_init.c b/src/spatialite/src/spatialite/spatialite_init.c new file mode 100644 index 0000000..befbc68 --- /dev/null +++ b/src/spatialite/src/spatialite/spatialite_init.c @@ -0,0 +1,141 @@ +/* + + spatialite_init.c -- SQLite3 spatial extension + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Pepijn Van Eeckhoudt +(implementing Android support) + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +/* + +CREDITS: + +this module has been partly funded by: +Regione Toscana - Settore Sistema Informativo Territoriale ed Ambientale +(exposing liblwgeom APIs as SpatiaLite own SQL functions) + +*/ + +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include + +#include +#include +#include + +#ifndef OMIT_GEOS /* including GEOS */ +#include +#endif + +#ifndef LOADABLE_EXTENSION /* ordinary library, not loadable-extension */ + +static int +init_spatialite_extension (sqlite3 * db, char **pzErrMsg, const void *pApi) +{ + if (pApi == NULL) + pApi = NULL; /* suppressing stupid compiler warnings */ + +/* setting the POSIX locale for numeric */ + setlocale (LC_NUMERIC, "POSIX"); + *pzErrMsg = NULL; + + register_spatialite_sql_functions (db, NULL); + + init_spatialite_virtualtables (db, NULL); + +/* setting a timeout handler */ + sqlite3_busy_timeout (db, 5000); + + return 0; +} + +SPATIALITE_DECLARE void +spatialite_init (int verbose) +{ +/* used when SQLite initializes as an ordinary lib + + OBSOLETE - strongly discouraged !!!!! + always using spatialite_init_ex() as a replacement + is warmly reccomended +*/ + spatialite_initialize (); + +#ifndef OMIT_GEOS /* initializing GEOS */ + initGEOS (geos_warning, geos_error); +#endif /* end GEOS */ + +#ifdef POSTGIS_2_1 /* initializing liblwgeom from PostGIS 2.1.x (or later) */ + splite_lwgeom_init (); +#endif /* end POSTGIS_2_1 */ + + sqlite3_auto_extension ((void (*)(void)) init_spatialite_extension); + spatialite_splash_screen (verbose); +} + +SPATIALITE_DECLARE void +spatialite_cleanup () +{ +/* OBSOLETE - strongly discouraged !!!!! + always using spatialite_cleanup_ex() as a replacement + is warmly reccomended +*/ + +#ifndef OMIT_GEOS + finishGEOS (); +#endif + +#ifdef ENABLE_LWGEOM + gaiaResetLwGeomMsg (); +#endif + + sqlite3_reset_auto_extension (); +} +#endif diff --git a/src/spatialite/src/spatialite/statistics.c b/src/spatialite/src/spatialite/statistics.c new file mode 100644 index 0000000..e6652b2 --- /dev/null +++ b/src/spatialite/src/spatialite/statistics.c @@ -0,0 +1,2261 @@ +/* + + statistics.c -- helper functions updating internal statistics + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Pepijn Van Eeckhoudt +(implementing Android support) + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#if defined(_WIN32) || defined(WIN32) +#include +#define isatty _isatty +#else +#include +#endif + +#include +#include + +#include +#include +#include +#include + +#ifndef OMIT_GEOS /* including GEOS */ +#include +#endif + +#ifndef OMIT_PROJ /* including PROJ.4 */ +#include +#endif + +#ifdef _WIN32 +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +struct field_item_infos +{ + int ordinal; + char *col_name; + int null_values; + int integer_values; + int double_values; + int text_values; + int blob_values; + int max_size; + int int_minmax_set; + int int_min; + int int_max; + int dbl_minmax_set; + double dbl_min; + double dbl_max; + struct field_item_infos *next; +}; + +struct field_container_infos +{ + struct field_item_infos *first; + struct field_item_infos *last; +}; + +static int +do_update_layer_statistics_v4 (sqlite3 * sqlite, const char *table, + const char *column, int count, int has_coords, + double min_x, double min_y, double max_x, + double max_y) +{ +/* update GEOMETRY_COLUMNS_STATISTICS Version >= 4.0.0 */ + char sql[8192]; + int ret; + int error = 0; + sqlite3_stmt *stmt; + + strcpy (sql, "INSERT OR REPLACE INTO geometry_columns_statistics "); + strcat (sql, "(f_table_name, f_geometry_column, last_verified, "); + strcat (sql, "row_count, extent_min_x, extent_min_y, "); + strcat (sql, "extent_max_x, extent_max_y) VALUES (?, ?, "); + strcat (sql, "strftime('%Y-%m-%dT%H:%M:%fZ', 'now'), ?, ?, ?, ?, ?)"); + +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + return 0; + +/* binding INSERT params */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, count); + if (has_coords) + { + sqlite3_bind_double (stmt, 4, min_x); + sqlite3_bind_double (stmt, 5, min_y); + sqlite3_bind_double (stmt, 6, max_x); + sqlite3_bind_double (stmt, 7, max_y); + } + else + { + sqlite3_bind_null (stmt, 4); + sqlite3_bind_null (stmt, 5); + sqlite3_bind_null (stmt, 6); + sqlite3_bind_null (stmt, 7); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + error = 1; + ret = sqlite3_finalize (stmt); + if (ret != SQLITE_OK) + return 0; + if (error) + return 0; + return 1; +} + +static int +do_update_layer_statistics (sqlite3 * sqlite, const char *table, + const char *column, int count, int has_coords, + double min_x, double min_y, double max_x, + double max_y) +{ +/* update LAYER_STATISTICS [single table/geometry] */ + char sql[8192]; + int ret; + int error = 0; + sqlite3_stmt *stmt; + int metadata_version = checkSpatialMetaData (sqlite); + + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + return do_update_layer_statistics_v4 (sqlite, table, column, count, + has_coords, min_x, min_y, max_x, + max_y); + } + + if (!check_layer_statistics (sqlite)) + return 0; + strcpy (sql, "INSERT OR REPLACE INTO layer_statistics "); + strcat (sql, "(raster_layer, table_name, geometry_column, "); + strcat (sql, "row_count, extent_min_x, extent_min_y, "); + strcat (sql, "extent_max_x, extent_max_y) "); + strcat (sql, "VALUES (0, ?, ?, ?, ?, ?, ?, ?)"); + +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + return 0; +/* binding INSERT params */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, count); + if (has_coords) + { + sqlite3_bind_double (stmt, 4, min_x); + sqlite3_bind_double (stmt, 5, min_y); + sqlite3_bind_double (stmt, 6, max_x); + sqlite3_bind_double (stmt, 7, max_y); + } + else + { + sqlite3_bind_null (stmt, 4); + sqlite3_bind_null (stmt, 5); + sqlite3_bind_null (stmt, 6); + sqlite3_bind_null (stmt, 7); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + error = 1; + ret = sqlite3_finalize (stmt); + if (ret != SQLITE_OK) + return 0; + if (error) + return 0; + return 1; +} + +static int +do_update_views_layer_statistics_v4 (sqlite3 * sqlite, const char *table, + const char *column, int count, + int has_coords, double min_x, + double min_y, double max_x, double max_y) +{ +/* update VIEWS_GEOMETRY_COLUMNS_STATISTICS Version >= 4.0.0 */ + char sql[8192]; + int ret; + int error = 0; + sqlite3_stmt *stmt; + + strcpy (sql, "INSERT OR REPLACE INTO views_geometry_columns_statistics "); + strcat (sql, "(view_name, view_geometry, last_verified, "); + strcat (sql, "row_count, extent_min_x, extent_min_y, "); + strcat (sql, "extent_max_x, extent_max_y) VALUES (?, ?, "); + strcat (sql, "strftime('%Y-%m-%dT%H:%M:%fZ', 'now'), ?, ?, ?, ?, ?)"); + +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + return 0; + +/* binding INSERT params */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, count); + if (has_coords) + { + sqlite3_bind_double (stmt, 4, min_x); + sqlite3_bind_double (stmt, 5, min_y); + sqlite3_bind_double (stmt, 6, max_x); + sqlite3_bind_double (stmt, 7, max_y); + } + else + { + sqlite3_bind_null (stmt, 4); + sqlite3_bind_null (stmt, 5); + sqlite3_bind_null (stmt, 6); + sqlite3_bind_null (stmt, 7); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + error = 1; + ret = sqlite3_finalize (stmt); + if (ret != SQLITE_OK) + return 0; + if (error) + return 0; + return 1; +} + +static int +do_update_views_layer_statistics (sqlite3 * sqlite, const char *table, + const char *column, int count, + int has_coords, double min_x, double min_y, + double max_x, double max_y) +{ +/* update VIEWS_LAYER_STATISTICS [single table/geometry] */ + char sql[8192]; + int ret; + int error = 0; + sqlite3_stmt *stmt; + int metadata_version = checkSpatialMetaData (sqlite); + + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + return do_update_views_layer_statistics_v4 (sqlite, table, column, + count, has_coords, min_x, + min_y, max_x, max_y); + } + + if (!check_views_layer_statistics (sqlite)) + return 0; + strcpy (sql, "INSERT OR REPLACE INTO views_layer_statistics "); + strcat (sql, "(view_name, view_geometry, "); + strcat (sql, "row_count, extent_min_x, extent_min_y, "); + strcat (sql, "extent_max_x, extent_max_y) "); + strcat (sql, "VALUES (?, ?, ?, ?, ?, ?, ?)"); + +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + return 0; + +/* binding INSERT params */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, count); + if (has_coords) + { + sqlite3_bind_double (stmt, 4, min_x); + sqlite3_bind_double (stmt, 5, min_y); + sqlite3_bind_double (stmt, 6, max_x); + sqlite3_bind_double (stmt, 7, max_y); + } + else + { + sqlite3_bind_null (stmt, 4); + sqlite3_bind_null (stmt, 5); + sqlite3_bind_null (stmt, 6); + sqlite3_bind_null (stmt, 7); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + error = 1; + ret = sqlite3_finalize (stmt); + if (ret != SQLITE_OK) + return 0; + if (error) + return 0; + return 1; +} + +static int +do_update_virts_layer_statistics_v4 (sqlite3 * sqlite, const char *table, + const char *column, int count, + int has_coords, double min_x, + double min_y, double max_x, double max_y) +{ +/* update VIRTS_GEOMETRY_COLUMNS_STATISTICS Version >= 4.0.0 */ + char sql[8192]; + int ret; + int error = 0; + sqlite3_stmt *stmt; + + strcpy (sql, "INSERT OR REPLACE INTO virts_geometry_columns_statistics "); + strcat (sql, "(virt_name, virt_geometry, last_verified, "); + strcat (sql, "row_count, extent_min_x, extent_min_y, "); + strcat (sql, "extent_max_x, extent_max_y) VALUES (?, ?, "); + strcat (sql, "strftime('%Y-%m-%dT%H:%M:%fZ', 'now'), ?, ?, ?, ?, ?)"); + +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + return 0; + +/* binding INSERT params */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, count); + if (has_coords) + { + sqlite3_bind_double (stmt, 4, min_x); + sqlite3_bind_double (stmt, 5, min_y); + sqlite3_bind_double (stmt, 6, max_x); + sqlite3_bind_double (stmt, 7, max_y); + } + else + { + sqlite3_bind_null (stmt, 4); + sqlite3_bind_null (stmt, 5); + sqlite3_bind_null (stmt, 6); + sqlite3_bind_null (stmt, 7); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + error = 1; + ret = sqlite3_finalize (stmt); + if (ret != SQLITE_OK) + return 0; + if (error) + return 0; + return 1; +} + +static int +do_update_virts_layer_statistics (sqlite3 * sqlite, const char *table, + const char *column, int count, + int has_coords, double min_x, double min_y, + double max_x, double max_y) +{ +/* update VIRTS_LAYER_STATISTICS [single table/geometry] */ + char sql[8192]; + int ret; + int error = 0; + sqlite3_stmt *stmt; + int metadata_version = checkSpatialMetaData (sqlite); + + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + return do_update_virts_layer_statistics_v4 (sqlite, table, column, + count, has_coords, min_x, + min_y, max_x, max_y); + } + + if (!check_virts_layer_statistics (sqlite)) + return 0; + strcpy (sql, "INSERT OR REPLACE INTO virts_layer_statistics "); + strcat (sql, "(virt_name, virt_geometry, "); + strcat (sql, "row_count, extent_min_x, extent_min_y, "); + strcat (sql, "extent_max_x, extent_max_y) "); + strcat (sql, "VALUES (?, ?, ?, ?, ?, ?, ?)"); + +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + return 0; + +/* binding INSERT params */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, count); + if (has_coords) + { + sqlite3_bind_double (stmt, 4, min_x); + sqlite3_bind_double (stmt, 5, min_y); + sqlite3_bind_double (stmt, 6, max_x); + sqlite3_bind_double (stmt, 7, max_y); + } + else + { + sqlite3_bind_null (stmt, 4); + sqlite3_bind_null (stmt, 5); + sqlite3_bind_null (stmt, 6); + sqlite3_bind_null (stmt, 7); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + error = 1; + ret = sqlite3_finalize (stmt); + if (ret != SQLITE_OK) + return 0; + if (error) + return 0; + return 1; +} + +static void +update_field_infos (struct field_container_infos *infos, int ordinal, + const char *col_name, const char *type, int size, int count) +{ +/* updating the field container infos */ + int len; + struct field_item_infos *p = infos->first; + while (p) + { + if (strcasecmp (col_name, p->col_name) == 0) + { + /* updating an already defined field */ + if (strcasecmp (type, "null") == 0) + p->null_values += count; + if (strcasecmp (type, "integer") == 0) + p->integer_values += count; + if (strcasecmp (type, "real") == 0) + p->double_values += count; + if (strcasecmp (type, "text") == 0) + { + p->text_values += count; + if (size > p->max_size) + p->max_size = size; + } + if (strcasecmp (type, "blob") == 0) + { + p->blob_values += count; + if (size > p->max_size) + p->max_size = size; + } + return; + } + p = p->next; + } +/* inserting a new field */ + p = malloc (sizeof (struct field_item_infos)); + p->ordinal = ordinal; + len = strlen (col_name); + p->col_name = malloc (len + 1); + strcpy (p->col_name, col_name); + p->null_values = 0; + p->integer_values = 0; + p->double_values = 0; + p->text_values = 0; + p->blob_values = 0; + p->max_size = -1; + p->int_minmax_set = 0; + p->int_min = 0; + p->int_max = 0; + p->dbl_minmax_set = 0; + p->dbl_min = 0.0; + p->dbl_max = 0.0; + p->next = NULL; + if (strcasecmp (type, "null") == 0) + p->null_values += count; + if (strcasecmp (type, "integer") == 0) + p->integer_values += count; + if (strcasecmp (type, "real") == 0) + p->double_values += count; + if (strcasecmp (type, "text") == 0) + { + p->text_values += count; + if (size > p->max_size) + p->max_size = size; + } + if (strcasecmp (type, "blob") == 0) + { + p->blob_values += count; + if (size > p->max_size) + p->max_size = size; + } + if (infos->first == NULL) + infos->first = p; + if (infos->last != NULL) + infos->last->next = p; + infos->last = p; +} + +static void +update_field_infos_int_minmax (struct field_container_infos *infos, + const char *col_name, int int_min, int int_max) +{ +/* updating the field container infos - Int MinMax */ + struct field_item_infos *p = infos->first; + while (p) + { + if (strcasecmp (col_name, p->col_name) == 0) + { + p->int_minmax_set = 1; + p->int_min = int_min; + p->int_max = int_max; + return; + } + p = p->next; + } +} + +static void +update_field_infos_double_minmax (struct field_container_infos *infos, + const char *col_name, double dbl_min, + double dbl_max) +{ +/* updating the field container infos - Double MinMax */ + struct field_item_infos *p = infos->first; + while (p) + { + if (strcasecmp (col_name, p->col_name) == 0) + { + p->dbl_minmax_set = 1; + p->dbl_min = dbl_min; + p->dbl_max = dbl_max; + return; + } + p = p->next; + } +} + +static void +free_field_infos (struct field_container_infos *infos) +{ +/* memory cleanup - freeing a field infos container */ + struct field_item_infos *p = infos->first; + struct field_item_infos *pn; + while (p) + { + /* destroying field items */ + pn = p->next; + if (p->col_name) + free (p->col_name); + free (p); + p = pn; + } +} + +static int +do_update_field_infos (sqlite3 * sqlite, const char *table, + const char *column, struct field_container_infos *infos) +{ +/* update GEOMETRY_COLUMNS_FIELD_INFOS Version >= 4.0.0 */ + char sql[8192]; + char *sql_statement; + int ret; + int error = 0; + sqlite3_stmt *stmt; + struct field_item_infos *p = infos->first; + +/* deleting any previous row */ + sql_statement = sqlite3_mprintf ("DELETE FROM geometry_columns_field_infos " + "WHERE Lower(f_table_name) = Lower(%Q) AND " + "Lower(f_geometry_column) = Lower(%Q)", + table, column); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + +/* reinserting yet again */ + strcpy (sql, "INSERT INTO geometry_columns_field_infos "); + strcat (sql, "(f_table_name, f_geometry_column, ordinal, "); + strcat (sql, "column_name, null_values, integer_values, "); + strcat (sql, "double_values, text_values, blob_values, max_size, "); + strcat (sql, "integer_min, integer_max, double_min, double_max) "); + strcat (sql, "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); + +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + return 0; + + while (p) + { +/* binding INSERT params */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, p->ordinal); + sqlite3_bind_text (stmt, 4, p->col_name, strlen (p->col_name), + SQLITE_STATIC); + sqlite3_bind_int (stmt, 5, p->null_values); + sqlite3_bind_int (stmt, 6, p->integer_values); + sqlite3_bind_int (stmt, 7, p->double_values); + sqlite3_bind_int (stmt, 8, p->text_values); + sqlite3_bind_int (stmt, 9, p->blob_values); + if (p->max_size < 0) + sqlite3_bind_null (stmt, 10); + else + sqlite3_bind_int (stmt, 10, p->max_size); + if (p->int_minmax_set) + { + sqlite3_bind_int (stmt, 11, p->int_min); + sqlite3_bind_int (stmt, 12, p->int_max); + } + else + { + sqlite3_bind_null (stmt, 11); + sqlite3_bind_null (stmt, 12); + } + if (p->dbl_minmax_set) + { + sqlite3_bind_double (stmt, 13, p->dbl_min); + sqlite3_bind_double (stmt, 14, p->dbl_max); + } + else + { + sqlite3_bind_null (stmt, 13); + sqlite3_bind_null (stmt, 14); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + error = 1; + p = p->next; + } + ret = sqlite3_finalize (stmt); + if (ret != SQLITE_OK) + return 0; + if (error) + return 0; + return 1; +} + +static int +do_update_views_field_infos (sqlite3 * sqlite, const char *table, + const char *column, + struct field_container_infos *infos) +{ +/* update VIEW_GEOMETRY_COLUMNS_FIELD_INFOS Version >= 4.0.0 */ + char sql[8192]; + char *sql_statement; + int ret; + int error = 0; + sqlite3_stmt *stmt; + struct field_item_infos *p = infos->first; + +/* deleting any previous row */ + sql_statement = + sqlite3_mprintf ("DELETE FROM views_geometry_columns_field_infos " + "WHERE Lower(view_name) = Lower(%Q) AND " + "Lower(view_geometry) = Lower(%Q)", table, column); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + +/* reinserting yet again */ + strcpy (sql, "INSERT INTO views_geometry_columns_field_infos "); + strcat (sql, "(view_name, view_geometry, ordinal, "); + strcat (sql, "column_name, null_values, integer_values, "); + strcat (sql, "double_values, text_values, blob_values, max_size, "); + strcat (sql, "integer_min, integer_max, double_min, double_max) "); + strcat (sql, "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); + +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + return 0; + + while (p) + { +/* binding INSERT params */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, p->ordinal); + sqlite3_bind_text (stmt, 4, p->col_name, strlen (p->col_name), + SQLITE_STATIC); + sqlite3_bind_int (stmt, 5, p->null_values); + sqlite3_bind_int (stmt, 6, p->integer_values); + sqlite3_bind_int (stmt, 7, p->double_values); + sqlite3_bind_int (stmt, 8, p->text_values); + sqlite3_bind_int (stmt, 9, p->blob_values); + if (p->max_size < 0) + sqlite3_bind_null (stmt, 10); + else + sqlite3_bind_int (stmt, 10, p->max_size); + if (p->int_minmax_set) + { + sqlite3_bind_int (stmt, 11, p->int_min); + sqlite3_bind_int (stmt, 12, p->int_max); + } + else + { + sqlite3_bind_null (stmt, 11); + sqlite3_bind_null (stmt, 12); + } + if (p->dbl_minmax_set) + { + sqlite3_bind_double (stmt, 13, p->dbl_min); + sqlite3_bind_double (stmt, 14, p->dbl_max); + } + else + { + sqlite3_bind_null (stmt, 13); + sqlite3_bind_null (stmt, 14); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + error = 1; + p = p->next; + } + ret = sqlite3_finalize (stmt); + if (ret != SQLITE_OK) + return 0; + if (error) + return 0; + return 1; +} + +static int +do_update_virts_field_infos (sqlite3 * sqlite, const char *table, + const char *column, + struct field_container_infos *infos) +{ +/* update VIRTS_GEOMETRY_COLUMNS_FIELD_INFOS Version >= 4.0.0 */ + char sql[8192]; + char *sql_statement; + int ret; + int error = 0; + sqlite3_stmt *stmt; + struct field_item_infos *p = infos->first; + +/* deleting any previous row */ + sql_statement = + sqlite3_mprintf ("DELETE FROM virts_geometry_columns_field_infos " + "WHERE Lower(virt_name) = Lower(%Q) AND " + "Lower(virt_geometry) = Lower(%Q)", table, column); + ret = sqlite3_exec (sqlite, sql_statement, NULL, NULL, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + +/* reinserting yet again */ + strcpy (sql, "INSERT INTO virts_geometry_columns_field_infos "); + strcat (sql, "(virt_name, virt_geometry, ordinal, "); + strcat (sql, "column_name, null_values, integer_values, "); + strcat (sql, "double_values, text_values, blob_values, max_size, "); + strcat (sql, "integer_min, integer_max, double_min, double_max) "); + strcat (sql, "VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"); + +/* compiling SQL prepared statement */ + ret = sqlite3_prepare_v2 (sqlite, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + return 0; + + while (p) + { +/* binding INSERT params */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_text (stmt, 1, table, strlen (table), SQLITE_STATIC); + sqlite3_bind_text (stmt, 2, column, strlen (column), SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, p->ordinal); + sqlite3_bind_text (stmt, 4, p->col_name, strlen (p->col_name), + SQLITE_STATIC); + sqlite3_bind_int (stmt, 5, p->null_values); + sqlite3_bind_int (stmt, 6, p->integer_values); + sqlite3_bind_int (stmt, 7, p->double_values); + sqlite3_bind_int (stmt, 8, p->text_values); + sqlite3_bind_int (stmt, 9, p->blob_values); + if (p->max_size < 0) + sqlite3_bind_null (stmt, 10); + else + sqlite3_bind_int (stmt, 10, p->max_size); + if (p->int_minmax_set) + { + sqlite3_bind_int (stmt, 11, p->int_min); + sqlite3_bind_int (stmt, 12, p->int_max); + } + else + { + sqlite3_bind_null (stmt, 11); + sqlite3_bind_null (stmt, 12); + } + if (p->dbl_minmax_set) + { + sqlite3_bind_double (stmt, 13, p->dbl_min); + sqlite3_bind_double (stmt, 14, p->dbl_max); + } + else + { + sqlite3_bind_null (stmt, 13); + sqlite3_bind_null (stmt, 14); + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + error = 1; + p = p->next; + } + ret = sqlite3_finalize (stmt); + if (ret != SQLITE_OK) + return 0; + if (error) + return 0; + return 1; +} + +static int +do_compute_minmax (sqlite3 * sqlite, const char *table, + struct field_container_infos *infos) +{ +/* Pass2 - computing Integer / Double min/max ranges */ + char *quoted; + char *sql_statement; + int int_min; + int int_max; + double dbl_min; + double dbl_max; + int ret; + int i; + int c; + char **results; + int rows; + int columns; + const char *col_name; + int is_double; + int comma = 0; + int empty = 1; + gaiaOutBuffer out_buf; + struct field_item_infos *ptr; + + gaiaOutBufferInitialize (&out_buf); + gaiaAppendToOutBuffer (&out_buf, "SELECT DISTINCT "); + ptr = infos->first; + while (ptr) + { + quoted = gaiaDoubleQuotedSql (ptr->col_name); + if (ptr->integer_values >= 0 && ptr->double_values == 0 + && ptr->blob_values == 0 && ptr->text_values == 0) + { + if (comma) + sql_statement = + sqlite3_mprintf (", 0, %Q, min(\"%s\"), max(\"%s\")", + ptr->col_name, quoted, quoted); + else + { + comma = 1; + sql_statement = + sqlite3_mprintf (" 0, %Q, min(\"%s\"), max(\"%s\")", + ptr->col_name, quoted, quoted); + } + gaiaAppendToOutBuffer (&out_buf, sql_statement); + sqlite3_free (sql_statement); + empty = 0; + } + if (ptr->double_values >= 0 && ptr->integer_values == 0 + && ptr->blob_values == 0 && ptr->text_values == 0) + { + if (comma) + sql_statement = + sqlite3_mprintf (", 1, %Q, min(\"%s\"), max(\"%s\")", + ptr->col_name, quoted, quoted); + else + { + comma = 1; + sql_statement = + sqlite3_mprintf (" 1, %Q, min(\"%s\"), max(\"%s\")", + ptr->col_name, quoted, quoted); + } + gaiaAppendToOutBuffer (&out_buf, sql_statement); + sqlite3_free (sql_statement); + empty = 0; + } + free (quoted); + ptr = ptr->next; + } + if (out_buf.Buffer == NULL) + return 0; + if (empty) + { + /* no columns to check */ + gaiaOutBufferReset (&out_buf); + return 1; + + } + quoted = gaiaDoubleQuotedSql (table); + sql_statement = sqlite3_mprintf (" FROM \"%s\"", quoted); + free (quoted); + gaiaAppendToOutBuffer (&out_buf, sql_statement); + sqlite3_free (sql_statement); +/* executing the SQL query */ + ret = sqlite3_get_table (sqlite, out_buf.Buffer, &results, &rows, &columns, + NULL); + gaiaOutBufferReset (&out_buf); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + for (c = 0; c < columns; c += 4) + { + /* retrieving field infos */ + is_double = atoi (results[(i * columns) + c + 0]); + col_name = results[(i * columns) + c + 1]; + if (results[(i * columns) + c + 2] != NULL + && results[(i * columns) + c + 3] != NULL) + { + if (!is_double) + { + int_min = + atoi (results[(i * columns) + c + 2]); + int_max = + atoi (results[(i * columns) + c + 3]); + update_field_infos_int_minmax (infos, + col_name, + int_min, + int_max); + } + else + { + dbl_min = + atof (results[(i * columns) + c + 2]); + dbl_max = + atof (results[(i * columns) + c + 3]); + update_field_infos_double_minmax (infos, + col_name, + dbl_min, + dbl_max); + } + } + } + } + } + sqlite3_free_table (results); + + return 1; +} + +static void +copy_attributes_into_layer (struct field_container_infos *infos, + gaiaVectorLayerPtr lyr) +{ +/* copying the AttributeField definitions into the VectorLayer */ + gaiaLayerAttributeFieldPtr fld; + int len; + struct field_item_infos *p = infos->first; + while (p) + { + /* adding an AttributeField definition */ + fld = malloc (sizeof (gaiaLayerAttributeField)); + fld->Ordinal = p->ordinal; + len = strlen (p->col_name); + fld->AttributeFieldName = malloc (len + 1); + strcpy (fld->AttributeFieldName, p->col_name); + fld->NullValuesCount = p->null_values; + fld->IntegerValuesCount = p->integer_values; + fld->DoubleValuesCount = p->double_values; + fld->TextValuesCount = p->text_values; + fld->BlobValuesCount = p->blob_values; + fld->MaxSize = NULL; + fld->IntRange = NULL; + fld->DoubleRange = NULL; + if (p->max_size) + { + fld->MaxSize = malloc (sizeof (gaiaAttributeFieldMaxSize)); + fld->MaxSize->MaxSize = p->max_size; + } + if (p->int_minmax_set) + { + fld->IntRange = malloc (sizeof (gaiaAttributeFieldIntRange)); + fld->IntRange->MinValue = p->int_min; + fld->IntRange->MaxValue = p->int_max; + } + if (p->dbl_minmax_set) + { + fld->DoubleRange = + malloc (sizeof (gaiaAttributeFieldDoubleRange)); + fld->DoubleRange->MinValue = p->dbl_min; + fld->DoubleRange->MaxValue = p->dbl_max; + } + fld->Next = NULL; + if (lyr->First == NULL) + lyr->First = fld; + if (lyr->Last != NULL) + lyr->Last->Next = fld; + lyr->Last = fld; + p = p->next; + } +} + +SPATIALITE_PRIVATE int +doComputeFieldInfos (void *p_sqlite, const char *table, + const char *column, int stat_type, void *p_lyr) +{ +/* computes FIELD_INFOS [single table/geometry] */ + sqlite3 *sqlite = (sqlite3 *) p_sqlite; + gaiaVectorLayerPtr lyr = (gaiaVectorLayerPtr) p_lyr; + char *sql_statement; + char *quoted; + int ret; + int i; + int c; + char **results; + int rows; + int columns; + int ordinal; + const char *col_name; + const char *type; + const char *sz; + int size; + int count; + int error = 0; + int comma = 0; + gaiaOutBuffer out_buf; + gaiaOutBuffer group_by; + struct field_container_infos infos; + + gaiaOutBufferInitialize (&out_buf); + gaiaOutBufferInitialize (&group_by); + infos.first = NULL; + infos.last = NULL; + +/* retrieving the column names for the current table */ +/* then building the SQL query statement */ + quoted = gaiaDoubleQuotedSql (table); + sql_statement = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", quoted); + free (quoted); + ret = + sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + + if (rows < 1) + ; + else + { + gaiaAppendToOutBuffer (&out_buf, "SELECT DISTINCT Count(*)"); + gaiaAppendToOutBuffer (&group_by, "GROUP BY"); + for (i = 1; i <= rows; i++) + { + ordinal = atoi (results[(i * columns) + 0]); + col_name = results[(i * columns) + 1]; + quoted = gaiaDoubleQuotedSql (col_name); + sql_statement = + sqlite3_mprintf + (", %d, %Q AS col_%d, typeof(\"%s\") AS typ_%d, max(length(\"%s\"))", + ordinal, col_name, ordinal, quoted, ordinal, quoted); + free (quoted); + gaiaAppendToOutBuffer (&out_buf, sql_statement); + sqlite3_free (sql_statement); + if (!comma) + { + comma = 1; + sql_statement = + sqlite3_mprintf (" col_%d, typ_%d", ordinal, ordinal); + } + else + sql_statement = + sqlite3_mprintf (", col_%d, typ_%d", ordinal, ordinal); + gaiaAppendToOutBuffer (&group_by, sql_statement); + sqlite3_free (sql_statement); + } + } + sqlite3_free_table (results); + + if (out_buf.Buffer == NULL) + return 0; + quoted = gaiaDoubleQuotedSql (table); + sql_statement = sqlite3_mprintf (" FROM \"%s\" ", quoted); + free (quoted); + gaiaAppendToOutBuffer (&out_buf, sql_statement); + sqlite3_free (sql_statement); + gaiaAppendToOutBuffer (&out_buf, group_by.Buffer); + gaiaOutBufferReset (&group_by); + +/* executing the SQL query */ + ret = sqlite3_get_table (sqlite, out_buf.Buffer, &results, &rows, &columns, + NULL); + gaiaOutBufferReset (&out_buf); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + count = atoi (results[(i * columns) + 0]); + for (c = 1; c < columns; c += 4) + { + /* retrieving field infos */ + ordinal = atoi (results[(i * columns) + c + 0]); + col_name = results[(i * columns) + c + 1]; + type = results[(i * columns) + c + 2]; + sz = results[(i * columns) + c + 3]; + if (sz == NULL) + size = -1; + else + size = atoi (sz); + update_field_infos (&infos, ordinal, col_name, type, size, + count); + } + } + } + sqlite3_free_table (results); + +/* Pass-2: computing INTEGER and DOUBLE min/max ranges */ + if (!error) + { + if (!do_compute_minmax (sqlite, table, &infos)) + error = 1; + } + + switch (stat_type) + { + case SPATIALITE_STATISTICS_LEGACY: + if (!error) + copy_attributes_into_layer (&infos, lyr); + free_field_infos (&infos); + if (error) + return 0; + return 1; + break; + case SPATIALITE_STATISTICS_GENUINE: + if (!do_update_field_infos (sqlite, table, column, &infos)) + error = 1; + break; + case SPATIALITE_STATISTICS_VIEWS: + if (!do_update_views_field_infos (sqlite, table, column, &infos)) + error = 1; + break; + case SPATIALITE_STATISTICS_VIRTS: + if (!do_update_virts_field_infos (sqlite, table, column, &infos)) + error = 1; + break; + }; + free_field_infos (&infos); + if (error) + return 0; + return 1; +} + +static int +do_compute_layer_statistics (sqlite3 * sqlite, const char *table, + const char *column, int stat_type) +{ +/* computes LAYER_STATISTICS [single table/geometry] */ + int ret; + int error = 0; + int count; + double min_x; + double min_y; + double max_x; + double max_y; + int has_coords = 1; + char *quoted; + char *col_quoted; + char *sql_statement; + sqlite3_stmt *stmt; + int metadata_version = checkSpatialMetaData (sqlite); + + quoted = gaiaDoubleQuotedSql ((const char *) table); + col_quoted = gaiaDoubleQuotedSql ((const char *) column); + sql_statement = sqlite3_mprintf ("SELECT Count(*), " + "Min(MbrMinX(\"%s\")), Min(MbrMinY(\"%s\")), Max(MbrMaxX(\"%s\")), Max(MbrMaxY(\"%s\")) " + "FROM \"%s\"", col_quoted, col_quoted, + col_quoted, col_quoted, quoted); + free (quoted); + free (col_quoted); + +/* compiling SQL prepared statement */ + ret = + sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + count = sqlite3_column_int (stmt, 0); + if (sqlite3_column_type (stmt, 1) == SQLITE_NULL) + has_coords = 0; + else + min_x = sqlite3_column_double (stmt, 1); + if (sqlite3_column_type (stmt, 2) == SQLITE_NULL) + has_coords = 0; + else + min_y = sqlite3_column_double (stmt, 2); + if (sqlite3_column_type (stmt, 3) == SQLITE_NULL) + has_coords = 0; + else + max_x = sqlite3_column_double (stmt, 3); + if (sqlite3_column_type (stmt, 4) == SQLITE_NULL) + has_coords = 0; + else + max_y = sqlite3_column_double (stmt, 4); + switch (stat_type) + { + case SPATIALITE_STATISTICS_GENUINE: + if (!do_update_layer_statistics + (sqlite, table, column, count, has_coords, min_x, + min_y, max_x, max_y)) + error = 1; + break; + case SPATIALITE_STATISTICS_VIEWS: + if (!do_update_views_layer_statistics + (sqlite, table, column, count, has_coords, min_x, + min_y, max_x, max_y)) + error = 1; + break; + case SPATIALITE_STATISTICS_VIRTS: + if (!do_update_virts_layer_statistics + (sqlite, table, column, count, has_coords, min_x, + min_y, max_x, max_y)) + error = 1; + break; + }; + } + else + error = 1; + } + ret = sqlite3_finalize (stmt); + if (ret != SQLITE_OK) + return 0; + if (error) + return 0; + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + if (!doComputeFieldInfos (sqlite, table, column, stat_type, NULL)) + return 0; + } + return 1; +} + +static int +genuine_layer_statistics_v4 (sqlite3 * sqlite, const char *table, + const char *column) +{ +/* updating GEOMETRY_COLUMNS_STATISTICS Version >= 4.0.0 */ + char *sql_statement; + int ret; + const char *f_table_name; + const char *f_geometry_column; + int i; + char **results; + int rows; + int columns; + int error = 0; + + if (table == NULL && column == NULL) + { + /* processing any table/geometry found in GEOMETRY_COLUMNS */ + sql_statement = + sqlite3_mprintf ("SELECT t.f_table_name, t.f_geometry_column " + "FROM geometry_columns_time AS t, " + "geometry_columns_statistics AS s " + "WHERE Lower(s.f_table_name) = Lower(t.f_table_name) AND " + "Lower(s.f_geometry_column) = Lower(t.f_geometry_column) AND " + "(s.last_verified < t.last_insert OR " + "s.last_verified < t.last_update OR " + "s.last_verified < t.last_delete OR " + "s.last_verified IS NULL)"); + } + else if (column == NULL) + { + /* processing any geometry belonging to this table */ + sql_statement = + sqlite3_mprintf ("SELECT t.f_table_name, t.f_geometry_column " + "FROM geometry_columns_time AS t, " + "geometry_columns_statistics AS s " + "WHERE Lower(t.f_table_name) = Lower(%Q) AND " + "Lower(s.f_table_name) = Lower(t.f_table_name) AND " + "Lower(s.f_geometry_column) = Lower(t.f_geometry_column) AND " + "(s.last_verified < t.last_insert OR " + "s.last_verified < t.last_update OR " + "s.last_verified < t.last_delete OR " + "s.last_verified IS NULL)", table); + } + else + { + /* processing a single table/geometry entry */ + sql_statement = + sqlite3_mprintf ("SELECT t.f_table_name, t.f_geometry_column " + "FROM geometry_columns_time AS t, " + "geometry_columns_statistics AS s " + "WHERE Lower(t.f_table_name) = Lower(%Q) AND " + "Lower(t.f_geometry_column) = Lower(%Q) AND " + "Lower(s.f_table_name) = Lower(t.f_table_name) AND " + "Lower(s.f_geometry_column) = Lower(t.f_geometry_column) AND " + "(s.last_verified < t.last_insert OR " + "s.last_verified < t.last_update OR " + "s.last_verified < t.last_delete OR " + "s.last_verified IS NULL)", table, column); + } + ret = + sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + f_table_name = results[(i * columns) + 0]; + f_geometry_column = results[(i * columns) + 1]; + if (!do_compute_layer_statistics + (sqlite, f_table_name, f_geometry_column, + SPATIALITE_STATISTICS_GENUINE)) + { + error = 1; + break; + } + } + } + sqlite3_free_table (results); + if (error) + return 0; + return 1; +} + +static int +genuine_layer_statistics (sqlite3 * sqlite, const char *table, + const char *column) +{ +/* updating genuine LAYER_STATISTICS metadata */ + char *sql_statement; + int ret; + const char *f_table_name; + const char *f_geometry_column; + int i; + char **results; + int rows; + int columns; + int error = 0; + int metadata_version = checkSpatialMetaData (sqlite); + + if (metadata_version == 3) + { + /* current metadata style >= v.4.0.0 */ + return genuine_layer_statistics_v4 (sqlite, table, column); + } + + if (table == NULL && column == NULL) + { + /* processing any table/geometry found in GEOMETRY_COLUMNS */ + sql_statement = + sqlite3_mprintf ("SELECT f_table_name, f_geometry_column " + "FROM geometry_columns"); + } + else if (column == NULL) + { + /* processing any geometry belonging to this table */ + sql_statement = + sqlite3_mprintf ("SELECT f_table_name, f_geometry_column " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q)", table); + } + else + { + /* processing a single table/geometry entry */ + sql_statement = + sqlite3_mprintf ("SELECT f_table_name, f_geometry_column " + "FROM geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q) " + "AND Lower(f_geometry_column) = Lower(%Q)", + table, column); + } + ret = + sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + f_table_name = results[(i * columns) + 0]; + f_geometry_column = results[(i * columns) + 1]; + if (!do_compute_layer_statistics + (sqlite, f_table_name, f_geometry_column, + SPATIALITE_STATISTICS_GENUINE)) + { + error = 1; + break; + } + } + } + sqlite3_free_table (results); + if (error) + return 0; + return 1; +} + +static int +views_layer_statistics (sqlite3 * sqlite, const char *table, const char *column) +{ +/* updating VIEWS_LAYER_STATISTICS metadata */ + char *sql_statement; + int ret; + const char *view_name; + const char *view_geometry; + int i; + char **results; + int rows; + int columns; + int error = 0; + + if (table == NULL && column == NULL) + { + /* processing any table/geometry found in VIEWS_GEOMETRY_COLUMNS */ + sql_statement = sqlite3_mprintf ("SELECT view_name, view_geometry " + "FROM views_geometry_columns"); + } + else if (column == NULL) + { + /* processing any geometry belonging to this table */ + sql_statement = sqlite3_mprintf ("SELECT view_name, view_geometry " + "FROM views_geometry_columns " + "WHERE Lower(view_name) = Lower(%Q)", + table); + } + else + { + /* processing a single table/geometry entry */ + sql_statement = sqlite3_mprintf ("SELECT view_name, view_geometry " + "FROM views_geometry_columns " + "WHERE Lower(view_name) = Lower(%Q) " + "AND Lower(view_geometry) = Lower(%Q)", + table, column); + } + ret = + sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + view_name = results[(i * columns) + 0]; + view_geometry = results[(i * columns) + 1]; + if (!do_compute_layer_statistics + (sqlite, view_name, view_geometry, + SPATIALITE_STATISTICS_VIEWS)) + { + error = 1; + break; + } + } + } + sqlite3_free_table (results); + if (error) + return 0; + return 1; +} + +static int +virts_layer_statistics (sqlite3 * sqlite, const char *table, const char *column) +{ +/* updating VIRTS_LAYER_STATISTICS metadata */ + char *sql_statement; + int ret; + const char *f_table_name; + const char *f_geometry_column; + int i; + char **results; + int rows; + int columns; + int error = 0; + + if (table == NULL && column == NULL) + { + /* processing any table/geometry found in VIRTS_GEOMETRY_COLUMNS */ + sql_statement = sqlite3_mprintf ("SELECT virt_name, virt_geometry " + "FROM virts_geometry_columns"); + } + else if (column == NULL) + { + /* processing any geometry belonging to this table */ + sql_statement = sqlite3_mprintf ("SELECT virt_name, virt_geometry " + "FROM virts_geometry_columns " + "WHERE Lower(virt_name) = Lower(%Q)", + table); + } + else + { + /* processing a single table/geometry entry */ + sql_statement = sqlite3_mprintf ("SELECT virt_name, virt_geometry " + "FROM virts_geometry_columns " + "WHERE Lower(virt_name) = Lower(%Q) " + "AND Lower(virt_geometry) = Lower(%Q)", + table, column); + } + ret = + sqlite3_get_table (sqlite, sql_statement, &results, &rows, &columns, + NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + f_table_name = results[(i * columns) + 0]; + f_geometry_column = results[(i * columns) + 1]; + if (!do_compute_layer_statistics + (sqlite, f_table_name, f_geometry_column, + SPATIALITE_STATISTICS_VIRTS)) + { + error = 1; + break; + } + } + } + sqlite3_free_table (results); + if (error) + return 0; + return 1; +} + +static int +has_views_metadata (sqlite3 * sqlite) +{ +/* testing if the VIEWS_GEOMETRY_COLUMNS table exists */ + char **results; + int rows; + int columns; + int ret; + int i; + int defined = 0; + ret = + sqlite3_get_table (sqlite, "PRAGMA table_info(views_geometry_columns)", + &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + defined = 1; + } + sqlite3_free_table (results); + return defined; +} + +static int +has_virts_metadata (sqlite3 * sqlite) +{ +/* testing if the VIRTS_GEOMETRY_COLUMNS table exists */ + char **results; + int rows; + int columns; + int ret; + int i; + int defined = 0; + ret = + sqlite3_get_table (sqlite, "PRAGMA table_info(virts_geometry_columns)", + &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + defined = 1; + } + sqlite3_free_table (results); + return defined; +} + +SPATIALITE_DECLARE int +update_layer_statistics (sqlite3 * sqlite, const char *table, + const char *column) +{ +/* updating LAYER_STATISTICS metadata [main] */ + if (!genuine_layer_statistics (sqlite, table, column)) + return 0; + if (has_views_metadata (sqlite)) + { + if (!views_layer_statistics (sqlite, table, column)) + return 0; + } + if (has_virts_metadata (sqlite)) + { + if (!virts_layer_statistics (sqlite, table, column)) + return 0; + } + return 1; +} + +struct drop_params +{ +/* a struct supporting Drop Table */ + char **rtrees; + int n_rtrees; + int is_view; + int ok_geometry_columns; + int ok_views_geometry_columns; + int ok_virts_geometry_columns; + int ok_geometry_columns_auth; + int ok_geometry_columns_field_infos; + int ok_geometry_columns_statistics; + int ok_views_geometry_columns_auth; + int ok_views_geometry_columns_field_infos; + int ok_views_geometry_columns_statistics; + int ok_virts_geometry_columns_auth; + int ok_virts_geometry_columns_field_infos; + int ok_virts_geometry_columns_statistics; + int ok_layer_statistics; + int ok_views_layer_statistics; + int ok_virts_layer_statistics; + int ok_layer_params; + int ok_layer_sub_classes; + int ok_layer_table_layout; +}; + +static int +do_drop_table (sqlite3 * sqlite, const char *prefix, const char *table, + struct drop_params *aux) +{ +/* performing the actual work */ + char *sql; + char *q_prefix; + char *q_name; + int i; + + if (aux->is_view) + { + /* dropping a View */ + q_name = gaiaDoubleQuotedSql (table); + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = + sqlite3_mprintf ("DROP VIEW IF EXISTS \"%s\".\"%s\"", q_prefix, + q_name); + free (q_prefix); + free (q_name); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + else + { + /* dropping a Table */ + q_name = gaiaDoubleQuotedSql (table); + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = + sqlite3_mprintf ("DROP TABLE IF EXISTS \"%s\".\"%s\"", q_prefix, + q_name); + free (q_prefix); + free (q_name); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + + for (i = 0; i < aux->n_rtrees; i++) + { + /* dropping any R*Tree */ + q_name = gaiaDoubleQuotedSql (*(aux->rtrees + i)); + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = + sqlite3_mprintf ("DROP TABLE IF EXISTS \"%s\".\"%s\"", q_prefix, + q_name); + free (q_prefix); + free (q_name); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + + if (aux->ok_layer_params) + { + /* deleting from LAYER_PARAMS */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = sqlite3_mprintf ("DELETE FROM \"%s\".layer_params " + "WHERE lower(table_name) = lower(%Q)", + q_prefix, table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_layer_sub_classes) + { + /* deleting from LAYER_SUB_CLASSES */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = sqlite3_mprintf ("DELETE FROM \"%s\".layer_sub_classes " + "WHERE lower(table_name) = lower(%Q)", + q_prefix, table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_layer_table_layout) + { + /* deleting from LAYER_TABLE_LAYOUT */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = sqlite3_mprintf ("DELETE FROM \"%s\".layer_table_layout " + "WHERE lower(table_name) = lower(%Q)", + q_prefix, table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_geometry_columns_auth) + { + /* deleting from GEOMETRY_COLUMNS_AUTH */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = sqlite3_mprintf ("DELETE FROM \"%s\".geometry_columns_auth " + "WHERE lower(f_table_name) = lower(%Q)", + q_prefix, table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_geometry_columns_field_infos) + { + /* deleting from GEOMETRY_COLUMNS_FIELD_INFOS */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = + sqlite3_mprintf + ("DELETE FROM \"%s\".geometry_columns_fiels_infos " + "WHERE lower(f_table_name) = lower(%Q)", q_prefix, table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_geometry_columns_statistics) + { + /* deleting from GEOMETRY_COLUMNS_STATISTICS */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = + sqlite3_mprintf ("DELETE FROM \"%s\".geometry_columns_statistics " + "WHERE lower(f_table_name) = lower(%Q)", + q_prefix, table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_views_geometry_columns_auth) + { + /* deleting from VIEWS_GEOMETRY_COLUMNS_AUTH */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = + sqlite3_mprintf ("DELETE FROM \"%s\".views_geometry_columns_auth " + "WHERE lower(view_name) = lower(%Q)", q_prefix, + table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_views_geometry_columns_field_infos) + { + /* deleting from VIEWS_GEOMETRY_COLUMNS_FIELD_INFOS */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = + sqlite3_mprintf + ("DELETE FROM \"%s\".views_geometry_columns_fiels_infos " + "WHERE view_name = %Q", q_prefix, table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_views_geometry_columns_statistics) + { + /* deleting from VIEWS_GEOMETRY_COLUMNS_STATISTICS */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = + sqlite3_mprintf + ("DELETE FROM \"%s\".views_geometry_columns_statistics " + "WHERE lower(view_name) = lower(%Q)", q_prefix, table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_virts_geometry_columns_auth) + { + /* deleting from VIRTS_GEOMETRY_COLUMNS_AUTH */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = + sqlite3_mprintf ("DELETE FROM \"%s\".virts_geometry_columns_auth " + "WHERE lower(virt_name) = lower(%Q)", q_prefix, + table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_virts_geometry_columns_field_infos) + { + /* deleting from VIRTS_GEOMETRY_COLUMNS_FIELD_INFOS */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = + sqlite3_mprintf + ("DELETE FROM \"%s\".virts_geometry_columns_fiels_infos " + "WHERE lower(virt_name) = lower(%Q)", q_prefix, table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_virts_geometry_columns_statistics) + { + /* deleting from VIRTS_GEOMETRY_COLUMNS_STATISTICS */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = + sqlite3_mprintf + ("DELETE FROM \"%s\".virts_geometry_columns_statistics " + "WHERE lower(virt_name) = lower(%Q)", q_prefix, table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_layer_statistics) + { + /* deleting from LAYER_STATISTICS */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = sqlite3_mprintf ("DELETE FROM \"%s\".layer_statistics " + "WHERE lower(table_name) = lower(%Q)", + q_prefix, table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_views_layer_statistics) + { + /* deleting from VIEWS_LAYER_STATISTICS */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = sqlite3_mprintf ("DELETE FROM \"%s\".views_layer_statistics " + "WHERE lower(view_name) = lower(%Q)", q_prefix, + table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_virts_layer_statistics) + { + /* deleting from VIRTS_LAYER_STATISTICS */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = sqlite3_mprintf ("DELETE FROM \"%s\".virts_layer_statistics " + "WHERE lower(virt_name) = lower(%Q)", q_prefix, + table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_geometry_columns) + { + /* deleting from GEOMETRY_COLUMNS */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = sqlite3_mprintf ("DELETE FROM \"%s\".geometry_columns " + "WHERE lower(f_table_name) = lower(%Q)", + q_prefix, table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_views_geometry_columns) + { + /* deleting from VIEWS_GEOMETRY_COLUMNS */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = sqlite3_mprintf ("DELETE FROM \"%s\".views_geometry_columns " + "WHERE lower(view_name) = lower(%Q)", q_prefix, + table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (aux->ok_virts_geometry_columns) + { + /* deleting from VIEWS_GEOMETRY_COLUMNS */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = sqlite3_mprintf ("DELETE FROM \"%s\".virts_geometry_columns " + "WHERE lower(virt_name) = lower(%Q)", q_prefix, + table); + free (q_prefix); + sqlite3_exec (sqlite, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + + return 1; +} + +static int +do_drop_sub_view (sqlite3 * sqlite, const char *prefix, const char *table, + struct drop_params *aux) +{ +/* dropping any depending View */ + int ret; + int i; + char **results; + int rows; + int columns; + char *sql; + char *q_prefix; + struct drop_params aux2; + +/* initializing the aux params */ + aux2.rtrees = NULL; + aux2.n_rtrees = 0; + aux2.is_view = 1; + aux2.ok_geometry_columns = 0; + aux2.ok_views_geometry_columns = aux->ok_views_geometry_columns; + aux2.ok_virts_geometry_columns = aux->ok_virts_geometry_columns; + aux2.ok_geometry_columns_auth = aux->ok_geometry_columns_auth; + aux2.ok_geometry_columns_field_infos = aux->ok_geometry_columns_field_infos; + aux2.ok_geometry_columns_statistics = aux->ok_geometry_columns_statistics; + aux2.ok_views_geometry_columns_auth = aux->ok_views_geometry_columns_auth; + aux2.ok_views_geometry_columns_field_infos = + aux->ok_views_geometry_columns_field_infos; + aux2.ok_views_geometry_columns_statistics = + aux->ok_views_geometry_columns_statistics; + aux2.ok_virts_geometry_columns_auth = aux->ok_virts_geometry_columns_auth; + aux2.ok_virts_geometry_columns_field_infos = + aux->ok_virts_geometry_columns_field_infos; + aux2.ok_virts_geometry_columns_statistics = + aux->ok_virts_geometry_columns_statistics; + aux2.ok_layer_statistics = aux->ok_layer_statistics; + aux2.ok_views_layer_statistics = aux->ok_views_layer_statistics; + aux2.ok_virts_layer_statistics = aux->ok_virts_layer_statistics; + aux2.ok_layer_params = aux->ok_layer_params; + aux2.ok_layer_sub_classes = aux->ok_layer_sub_classes; + aux2.ok_layer_table_layout = aux->ok_layer_table_layout; + + + if (aux->ok_views_geometry_columns == 0) + return 1; + +/* identifying any View depending on the target */ + q_prefix = gaiaDoubleQuotedSql (prefix); + sql = + sqlite3_mprintf ("SELECT view_name FROM \"%s\".views_geometry_columns " + "WHERE Lower(f_table_name) = Lower(%Q)", q_prefix, + table); + free (q_prefix); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { + for (i = 1; i <= rows; i++) + { + const char *name = results[(i * columns) + 0]; + /* dropping the view itself */ + if (!do_drop_table (sqlite, prefix, name, &aux2)) + return 0; + } + } + sqlite3_free_table (results); + return 1; +} + +static int +check_drop_layout (sqlite3 * sqlite, const char *prefix, const char *table, + struct drop_params *aux) +{ +/* checking the actual DB configuration */ + int i; + char **results; + int rows; + int columns; + char jolly = '%'; + char *x_name; + int ret; + char *sql; + char *q_prefix = gaiaDoubleQuotedSql (prefix); + sql = + sqlite3_mprintf + ("SELECT type, name FROM \"%s\".sqlite_master WHERE type = 'table' or type = 'view'", + q_prefix); + free (q_prefix); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ret = 0; + else + { + ret = 1; + for (i = 1; i <= rows; i++) + { + const char *type = results[(i * columns) + 0]; + const char *name = results[(i * columns) + 1]; + if (name) + { + /* checking which tables are actually defined */ + if (strcasecmp (name, "geometry_columns") == 0) + aux->ok_geometry_columns = 1; + if (strcasecmp (name, "views_geometry_columns") == 0) + aux->ok_views_geometry_columns = 1; + if (strcasecmp (name, "virts_geometry_columns") == 0) + aux->ok_virts_geometry_columns = 1; + if (strcasecmp (name, "geometry_columns_auth") == 0) + aux->ok_geometry_columns_auth = 1; + if (strcasecmp (name, "views_geometry_columns_auth") == 0) + aux->ok_views_geometry_columns_auth = 1; + if (strcasecmp (name, "virts_geometry_columns_auth") == 0) + aux->ok_virts_geometry_columns_auth = 1; + if (strcasecmp (name, "geometry_columns_statistics") == 0) + aux->ok_geometry_columns_statistics = 1; + if (strcasecmp (name, "views_geometry_columns_statistics") + == 0) + aux->ok_views_geometry_columns_statistics = 1; + if (strcasecmp (name, "virts_geometry_columns_statistics") + == 0) + aux->ok_virts_geometry_columns_statistics = 1; + if (strcasecmp (name, "geometry_columns_field_infos") == + 0) + aux->ok_geometry_columns_field_infos = 1; + if (strcasecmp + (name, "views_geometry_columns_field_infos") == 0) + aux->ok_views_geometry_columns_field_infos = 1; + if (strcasecmp + (name, "virts_geometry_columns_field_infos") == 0) + aux->ok_virts_geometry_columns_field_infos = 1; + if (strcasecmp (name, "layer_params") == 0) + aux->ok_layer_params = 1; + if (strcasecmp (name, "layer_statistics") == 0) + aux->ok_layer_statistics = 1; + if (strcasecmp (name, "layer_sub_classes") == 0) + aux->ok_layer_sub_classes = 1; + if (strcasecmp (name, "layer_table_layout") == 0) + aux->ok_layer_table_layout = 1; + if (strcasecmp (name, "views_geometry_columns") == 0) + aux->ok_views_geometry_columns = 1; + if (strcasecmp (name, "virts_geometry_columns") == 0) + aux->ok_virts_geometry_columns = 1; + if (strcasecmp (name, "virts_geometry_columns") == 0) + aux->ok_virts_geometry_columns = 1; + if (strcasecmp (name, table) == 0) + { + /* checking if the target is a view */ + if (strcasecmp (type, "view") == 0) + aux->is_view = 1; + } + } + } + } + sqlite3_free_table (results); + if (!ret) + return 0; + +/* identifying any possible R*Tree supporting the main target */ + q_prefix = gaiaDoubleQuotedSql (prefix); + x_name = sqlite3_mprintf ("idx_%s_%c", table, jolly); + sql = + sqlite3_mprintf + ("SELECT name FROM \"%s\".sqlite_master WHERE type = 'table' " + "AND name LIKE(%Q) AND sql LIKE('%cvirtual%c') AND sql LIKE('%crtree%c')", + q_prefix, x_name, jolly, jolly, jolly, jolly); + free (q_prefix); + sqlite3_free (x_name); + ret = sqlite3_get_table (sqlite, sql, &results, &rows, &columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return 0; + if (rows < 1) + ; + else + { +/* allocating the rtrees array */ + aux->n_rtrees = rows; + aux->rtrees = malloc (sizeof (char **) * aux->n_rtrees); + for (i = 1; i <= rows; i++) + { + const char *name = results[(i * columns) + 0]; + int len = strlen (name); + *(aux->rtrees + (i - 1)) = malloc (len + 1); + strcpy (*(aux->rtrees + (i - 1)), name); + } + } + sqlite3_free_table (results); + return 1; +} + +SPATIALITE_DECLARE int +gaiaDropTable (sqlite3 * sqlite, const char *table) +{ + return gaiaDropTableEx (sqlite, "main", table); +} + +SPATIALITE_DECLARE int +gaiaDropTableEx (sqlite3 * sqlite, const char *prefix, const char *table) +{ +/* dropping a Spatial Table and any other related stuff */ + int ret; + struct drop_params aux; + +/* initializing the aux params */ + aux.rtrees = NULL; + aux.n_rtrees = 0; + aux.is_view = 0; + aux.ok_geometry_columns = 0; + aux.ok_views_geometry_columns = 0; + aux.ok_virts_geometry_columns = 0; + aux.ok_geometry_columns_auth = 0; + aux.ok_geometry_columns_field_infos = 0; + aux.ok_geometry_columns_statistics = 0; + aux.ok_views_geometry_columns_auth = 0; + aux.ok_views_geometry_columns_field_infos = 0; + aux.ok_views_geometry_columns_statistics = 0; + aux.ok_virts_geometry_columns_auth = 0; + aux.ok_virts_geometry_columns_field_infos = 0; + aux.ok_virts_geometry_columns_statistics = 0; + aux.ok_layer_statistics = 0; + aux.ok_views_layer_statistics = 0; + aux.ok_virts_layer_statistics = 0; + aux.ok_layer_params = 0; + aux.ok_layer_sub_classes = 0; + aux.ok_layer_table_layout = 0; + if (prefix == NULL) + return 0; + if (table == NULL) + return 0; +/* the whole operation is a single transaction */ + ret = sqlite3_exec (sqlite, "BEGIN", NULL, NULL, NULL); + if (ret != SQLITE_OK) + return 0; +/* checking the actual DB configuration */ + if (!check_drop_layout (sqlite, prefix, table, &aux)) + goto rollback; +/* recursively dropping any depending View */ + if (!do_drop_sub_view (sqlite, prefix, table, &aux)) + goto rollback; + if (!do_drop_table (sqlite, prefix, table, &aux)) + goto rollback; +/* committing the still pending transaction */ + ret = sqlite3_exec (sqlite, "COMMIT", NULL, NULL, NULL); + if (ret != SQLITE_OK) + goto rollback; + if (aux.rtrees) + { + /* memory cleanup - rtrees */ + int i; + for (i = 0; i < aux.n_rtrees; i++) + { + if (*(aux.rtrees + i) != NULL) + free (*(aux.rtrees + i)); + } + free (aux.rtrees); + } + return 1; + + rollback: + +/* invalidating the still pending transaction */ + sqlite3_exec (sqlite, "ROLLBACK", NULL, NULL, NULL); + if (aux.rtrees) + { + /* memory cleanup - rtrees */ + int i; + for (i = 0; i < aux.n_rtrees; i++) + { + if (*(aux.rtrees + i) != NULL) + free (*(aux.rtrees + i)); + } + free (aux.rtrees); + } + return 0; +} diff --git a/src/spatialite/src/spatialite/virtualXL.c b/src/spatialite/src/spatialite/virtualXL.c new file mode 100644 index 0000000..9bde0f4 --- /dev/null +++ b/src/spatialite/src/spatialite/virtualXL.c @@ -0,0 +1,938 @@ +/* + + virtualXLc -- SQLite3 extension [VIRTUAL TABLE accessing .XLS] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include + +#include +#include +#include + +#ifndef OMIT_FREEXL +#include +#endif + +#ifdef _WIN32 +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +#ifndef OMIT_ICONV /* if ICONV is disabled no XL support is available */ +#ifndef OMIT_FREEXL /* FreeXL is disabled */ + +static struct sqlite3_module my_XL_module; + +typedef struct VirtualXLStruct +{ +/* extends the sqlite3_vtab struct */ + const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ + int nRef; /* # references: USED INTERNALLY BY SQLITE */ + char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ + sqlite3 *db; /* the sqlite db holding the virtual table */ + const void *XL_handle; /* the XL handle */ + unsigned int rows; /* Worksheet #rows */ + unsigned short columns; /* Worksheet #columns */ + char firstLineTitles; /* 'Y' or 'N' */ +} VirtualXL; +typedef VirtualXL *VirtualXLPtr; + +typedef struct VirtualXLConstraintStruct +{ +/* a constraint to be verified for xFilter */ + int iColumn; /* Column on left-hand side of constraint */ + int op; /* Constraint operator */ + char valueType; /* value Type ('I'=int,'D'=double,'T'=text) */ + sqlite3_int64 intValue; /* Int64 comparison value */ + double dblValue; /* Double comparison value */ + char *txtValue; /* Text comparison value */ + struct VirtualXLConstraintStruct *next; +} VirtualXLConstraint; +typedef VirtualXLConstraint *VirtualXLConstraintPtr; + +typedef struct VirtualXLCursorStruct +{ +/* extends the sqlite3_vtab_cursor struct */ + VirtualXLPtr pVtab; /* Virtual table of this cursor */ + unsigned int current_row; /* the current row ID */ + int eof; /* the EOF marker */ + VirtualXLConstraintPtr firstConstraint; + VirtualXLConstraintPtr lastConstraint; +} VirtualXLCursor; +typedef VirtualXLCursor *VirtualXLCursorPtr; + +static int +vXL_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* creates the virtual table connected to some XLS file */ + char *sql; + VirtualXLPtr p_vt; + char path[2048]; + char firstLineTitles = 'N'; + unsigned int worksheet = 0; + unsigned int max_worksheet; + unsigned int info; + unsigned int rows; + unsigned short columns; + unsigned short col; + int len; + int ret; + const void *handle; + const char *pPath = NULL; + char *xname; + gaiaOutBuffer sql_statement; + if (pAux) + pAux = pAux; /* unused arg warning suppression */ +/* checking for XLS PATH */ + if (argc == 4 || argc == 5 || argc == 6) + { + pPath = argv[3]; + len = strlen (pPath); + if ((*(pPath + 0) == '\'' || *(pPath + 0) == '"') + && (*(pPath + len - 1) == '\'' || *(pPath + len - 1) == '"')) + { + /* the path is enclosed between quotes - we need to dequote it */ + strcpy (path, pPath + 1); + len = strlen (path); + *(path + len - 1) = '\0'; + } + else + strcpy (path, pPath); + if (argc == 5 || argc == 6) + worksheet = atoi (argv[4]); + if (argc == 6) + { + if (atoi (argv[5]) == 1) + firstLineTitles = 'Y'; + } + } + else + { + *pzErr = + sqlite3_mprintf + ("[VirtualXL module] CREATE VIRTUAL: illegal arg list {xls_path [, worksheet_index [, first_line_titles(1/0)]]}"); + return SQLITE_ERROR; + } +/* allocating the main XL module */ + p_vt = (VirtualXLPtr) sqlite3_malloc (sizeof (VirtualXL)); + if (!p_vt) + return SQLITE_NOMEM; + p_vt->pModule = &my_XL_module; + p_vt->nRef = 0; + p_vt->zErrMsg = NULL; + p_vt->db = db; + p_vt->XL_handle = NULL; + p_vt->rows = 0; + p_vt->columns = 0; + p_vt->firstLineTitles = firstLineTitles; +/* opening the .XLS file [Workbook] */ + ret = freexl_open (path, &handle); + if (ret != FREEXL_OK) + { + /* free memory */ + freexl_close (handle); + /* something is going the wrong way; creating a stupid default table */ + xname = gaiaDoubleQuotedSql (argv[2]); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (PKUID INTEGER)", xname); + free (xname); + if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) + { + sqlite3_free (sql); + *pzErr = + sqlite3_mprintf + ("[VirtualXL module] cannot build a table from XL\n"); + return SQLITE_ERROR; + } + sqlite3_free (sql); + *ppVTab = (sqlite3_vtab *) p_vt; + return SQLITE_OK; + } +/* checking if Password Protected [obfuscated] */ + freexl_get_info (handle, FREEXL_BIFF_PASSWORD, &info); + if (info != FREEXL_BIFF_PLAIN) + { + /* free memory */ + freexl_close (handle); + /* Obfuscated: creating a stupid default table */ + xname = gaiaDoubleQuotedSql (argv[2]); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (PKUID INTEGER)", xname); + free (xname); + if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) + { + sqlite3_free (sql); + *pzErr = + sqlite3_mprintf + ("[VirtualXL module] Password protected [obfuscated] .xls\n"); + return SQLITE_ERROR; + } + sqlite3_free (sql); + *ppVTab = (sqlite3_vtab *) p_vt; + return SQLITE_OK; + } +/* querying how many Worksheets are there */ + freexl_get_info (handle, FREEXL_BIFF_SHEET_COUNT, &max_worksheet); + if (worksheet >= max_worksheet) + { + /* free memory */ + freexl_close (handle); + /* no such Worksheet: creating a stupid default table */ + xname = gaiaDoubleQuotedSql (argv[2]); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (PKUID INTEGER)", xname); + free (xname); + if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) + { + sqlite3_free (sql); + *pzErr = + sqlite3_mprintf + ("[VirtualXL module] no such Worksheet [index=%u]\n", + worksheet); + return SQLITE_ERROR; + } + sqlite3_free (sql); + *ppVTab = (sqlite3_vtab *) p_vt; + return SQLITE_OK; + } +/* selecting the currently active XL Worksheet */ + freexl_select_active_worksheet (handle, worksheet); + freexl_worksheet_dimensions (handle, &rows, &columns); + p_vt->XL_handle = handle; + p_vt->rows = rows; + p_vt->columns = columns; +/* preparing the COLUMNs for this VIRTUAL TABLE */ + gaiaOutBufferInitialize (&sql_statement); + xname = gaiaDoubleQuotedSql (argv[2]); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (row_no INTEGER", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + if (firstLineTitles == 'Y') + { + /* fetching column names */ + for (col = 0; col < columns; col++) + { + FreeXL_CellValue cell; + int ret = freexl_get_cell_value (handle, 0, col, &cell); + if (ret != FREEXL_OK) + sql = sqlite3_mprintf ("col_%d", col); + else + { + if (cell.type == FREEXL_CELL_INT) + sql = sqlite3_mprintf ("%d", cell.value.int_value); + else if (cell.type == FREEXL_CELL_DOUBLE) + sql = + sqlite3_mprintf ("%1.2f", + cell.value.double_value); + else if (cell.type == FREEXL_CELL_TEXT + || cell.type == FREEXL_CELL_SST_TEXT + || cell.type == FREEXL_CELL_DATE + || cell.type == FREEXL_CELL_DATETIME + || cell.type == FREEXL_CELL_TIME) + { + int len = strlen (cell.value.text_value); + if (len < 256) + sql = + sqlite3_mprintf ("%s", + cell.value.text_value); + else + sql = sqlite3_mprintf ("col_%d", col); + } + else + sql = sqlite3_mprintf ("col_%d", col); + } + xname = gaiaDoubleQuotedSql (sql); + sqlite3_free (sql); + sql = sqlite3_mprintf (", \"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + } + else + { + /* setting default column names */ + for (col = 0; col < columns; col++) + { + sql = sqlite3_mprintf ("col_%d", col); + xname = gaiaDoubleQuotedSql (sql); + sqlite3_free (sql); + sql = sqlite3_mprintf (", \"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + } + gaiaAppendToOutBuffer (&sql_statement, ")"); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + { + if (sqlite3_declare_vtab (db, sql_statement.Buffer) != SQLITE_OK) + { + *pzErr = + sqlite3_mprintf + ("[VirtualXL module] CREATE VIRTUAL: invalid SQL statement \"%s\"", + sql_statement.Buffer); + gaiaOutBufferReset (&sql_statement); + return SQLITE_ERROR; + } + } + gaiaOutBufferReset (&sql_statement); + *ppVTab = (sqlite3_vtab *) p_vt; + return SQLITE_OK; +} + +static int +vXL_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* connects the virtual table to a .xls file - simply aliases vXL_create() */ + return vXL_create (db, pAux, argc, argv, ppVTab, pzErr); +} + +static int +vXL_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIndex) +{ +/* best index selection */ + int i; + int iArg = 0; + char str[2048]; + char buf[64]; + + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + + *str = '\0'; + for (i = 0; i < pIndex->nConstraint; i++) + { + if (pIndex->aConstraint[i].usable) + { + iArg++; + pIndex->aConstraintUsage[i].argvIndex = iArg; + pIndex->aConstraintUsage[i].omit = 1; + sprintf (buf, "%d:%d,", pIndex->aConstraint[i].iColumn, + pIndex->aConstraint[i].op); + strcat (str, buf); + } + } + if (*str != '\0') + { + pIndex->idxStr = sqlite3_mprintf ("%s", str); + pIndex->needToFreeIdxStr = 1; + } + + return SQLITE_OK; +} + +static int +vXL_disconnect (sqlite3_vtab * pVTab) +{ +/* disconnects the virtual table */ + VirtualXLPtr p_vt = (VirtualXLPtr) pVTab; + if (p_vt->XL_handle) + freexl_close (p_vt->XL_handle); + sqlite3_free (p_vt); + return SQLITE_OK; +} + +static int +vXL_destroy (sqlite3_vtab * pVTab) +{ +/* destroys the virtual table - simply aliases vXL_disconnect() */ + return vXL_disconnect (pVTab); +} + +static void +vXL_read_row (VirtualXLCursorPtr cursor) +{ +/* trying to read a "row" from XL */ + cursor->current_row++; + if (cursor->current_row > cursor->pVtab->rows) + { + cursor->eof = 1; + return; + } +} + +static int +vXL_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) +{ +/* opening a new cursor */ + VirtualXLCursorPtr cursor = + (VirtualXLCursorPtr) sqlite3_malloc (sizeof (VirtualXLCursor)); + if (cursor == NULL) + return SQLITE_ERROR; + cursor->firstConstraint = NULL; + cursor->lastConstraint = NULL; + cursor->pVtab = (VirtualXLPtr) pVTab; + if (cursor->pVtab->firstLineTitles == 'Y') + cursor->current_row = 1; + else + cursor->current_row = 0; + cursor->eof = 0; + *ppCursor = (sqlite3_vtab_cursor *) cursor; + vXL_read_row (cursor); + return SQLITE_OK; +} + +static void +vXL_free_constraints (VirtualXLCursorPtr cursor) +{ +/* memory cleanup - cursor constraints */ + VirtualXLConstraintPtr pC; + VirtualXLConstraintPtr pCn; + pC = cursor->firstConstraint; + while (pC) + { + pCn = pC->next; + if (pC->txtValue) + sqlite3_free (pC->txtValue); + sqlite3_free (pC); + pC = pCn; + } + cursor->firstConstraint = NULL; + cursor->lastConstraint = NULL; +} + +static int +vXL_close (sqlite3_vtab_cursor * pCursor) +{ +/* closing the cursor */ + VirtualXLCursorPtr cursor = (VirtualXLCursorPtr) pCursor; + vXL_free_constraints (cursor); + sqlite3_free (pCursor); + return SQLITE_OK; +} + +static int +vXL_parse_constraint (const char *str, int index, int *iColumn, int *op) +{ +/* parsing a constraint string */ + char buf[64]; + const char *in = str; + char *out = buf; + int i = 0; + int found = 0; + + *out = '\0'; + while (*in != '\0') + { + if (*in == ',') + { + if (index == i) + { + *out = '\0'; + found = 1; + break; + } + i++; + in++; + continue; + } + if (index == i) + *out++ = *in; + in++; + } + if (!found) + return 0; + in = buf; + for (i = 0; i < (int) strlen (buf); i++) + { + if (buf[i] == ':') + { + buf[i] = '\0'; + *iColumn = atoi (buf); + *op = atoi (buf + i + 1); + return 1; + } + in++; + } + return 0; +} + +static int +vXL_eval_constraints (VirtualXLCursorPtr cursor) +{ +/* evaluating Filter constraints */ + FreeXL_CellValue cell; + VirtualXLConstraintPtr pC = cursor->firstConstraint; + if (pC == NULL) + return 1; + while (pC) + { + int ok = 0; + if (pC->iColumn == 0) + { + /* the PRIMARY KEY column */ + if (pC->valueType == 'I') + { + int cur_row = cursor->current_row; + if (cursor->pVtab->firstLineTitles == 'Y') + cur_row--; + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (cur_row == pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (cur_row > pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (cur_row <= pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (cur_row < pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (cur_row >= pC->intValue) + ok = 1; + break; + }; + } + goto done; + } + if (cursor->pVtab->XL_handle != NULL + && cursor->current_row <= cursor->pVtab->rows + && pC->iColumn <= cursor->pVtab->columns) + freexl_get_cell_value (cursor->pVtab->XL_handle, + cursor->current_row - 1, pC->iColumn - 1, + &cell); + else + cell.type = FREEXL_CELL_NULL; + if (cell.type == FREEXL_CELL_INT) + { + if (pC->valueType == 'I') + { + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (cell.value.int_value == pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (cell.value.int_value > pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (cell.value.int_value <= pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (cell.value.int_value < pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (cell.value.int_value >= pC->intValue) + ok = 1; + break; + }; + } + if (pC->valueType == 'D') + { + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (cell.value.int_value == pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (cell.value.int_value > pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (cell.value.int_value <= pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (cell.value.int_value < pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (cell.value.int_value >= pC->dblValue) + ok = 1; + break; + }; + } + } + if (cell.type == FREEXL_CELL_DOUBLE) + { + if (pC->valueType == 'I') + { + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (cell.value.double_value == pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (cell.value.double_value > pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (cell.value.double_value <= pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (cell.value.double_value < pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (cell.value.double_value >= pC->intValue) + ok = 1; + break; + }; + } + if (pC->valueType == 'D') + { + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (cell.value.double_value == pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (cell.value.double_value > pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (cell.value.double_value <= pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (cell.value.double_value < pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (cell.value.double_value >= pC->dblValue) + ok = 1; + break; + }; + } + } + if ((cell.type == FREEXL_CELL_TEXT + || cell.type == FREEXL_CELL_SST_TEXT + || cell.type == FREEXL_CELL_DATE + || cell.type == FREEXL_CELL_DATETIME + || cell.type == FREEXL_CELL_TIME) && pC->valueType == 'T') + { + int ret = strcmp (cell.value.text_value, pC->txtValue); + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (ret == 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (ret > 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (ret <= 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (ret < 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (ret >= 0) + ok = 1; + break; + }; + } + done: + if (!ok) + return 0; + pC = pC->next; + } + return 1; +} + +static int +vXL_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, + int argc, sqlite3_value ** argv) +{ +/* setting up a cursor filter */ + int i; + int iColumn; + int op; + int len; + VirtualXLConstraintPtr pC; + VirtualXLCursorPtr cursor = (VirtualXLCursorPtr) pCursor; + if (idxNum) + idxNum = idxNum; /* unused arg warning suppression */ + +/* resetting any previously set filter constraint */ + vXL_free_constraints (cursor); + + for (i = 0; i < argc; i++) + { + if (!vXL_parse_constraint (idxStr, i, &iColumn, &op)) + continue; + pC = sqlite3_malloc (sizeof (VirtualXLConstraint)); + if (!pC) + continue; + pC->iColumn = iColumn; + pC->op = op; + pC->valueType = '\0'; + pC->txtValue = NULL; + pC->next = NULL; + + if (sqlite3_value_type (argv[i]) == SQLITE_INTEGER) + { + pC->valueType = 'I'; + pC->intValue = sqlite3_value_int64 (argv[i]); + } + if (sqlite3_value_type (argv[i]) == SQLITE_FLOAT) + { + pC->valueType = 'D'; + pC->dblValue = sqlite3_value_double (argv[i]); + } + if (sqlite3_value_type (argv[i]) == SQLITE_TEXT) + { + pC->valueType = 'T'; + len = sqlite3_value_bytes (argv[i]) + 1; + pC->txtValue = (char *) sqlite3_malloc (len); + if (pC->txtValue) + strcpy (pC->txtValue, + (char *) sqlite3_value_text (argv[i])); + } + if (cursor->firstConstraint == NULL) + cursor->firstConstraint = pC; + if (cursor->lastConstraint != NULL) + cursor->lastConstraint->next = pC; + cursor->lastConstraint = pC; + } + + if (cursor->pVtab->firstLineTitles == 'Y') + cursor->current_row = 1; + else + cursor->current_row = 0; + cursor->eof = 0; + while (1) + { + vXL_read_row (cursor); + if (cursor->eof) + break; + if (vXL_eval_constraints (cursor)) + break; + } + return SQLITE_OK; +} + +static int +vXL_next (sqlite3_vtab_cursor * pCursor) +{ +/* fetching a next row from cursor */ + VirtualXLCursorPtr cursor = (VirtualXLCursorPtr) pCursor; + while (1) + { + vXL_read_row (cursor); + if (cursor->eof) + break; + if (vXL_eval_constraints (cursor)) + break; + } + return SQLITE_OK; +} + +static int +vXL_eof (sqlite3_vtab_cursor * pCursor) +{ +/* cursor EOF */ + VirtualXLCursorPtr cursor = (VirtualXLCursorPtr) pCursor; + return cursor->eof; +} + +static int +vXL_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, + int column) +{ +/* fetching value for the Nth column */ + FreeXL_CellValue cell; + VirtualXLCursorPtr cursor = (VirtualXLCursorPtr) pCursor; + if (column == 0) + { + /* the PRIMARY KEY column */ + if (cursor->pVtab->firstLineTitles == 'Y') + sqlite3_result_int (pContext, cursor->current_row - 1); + else + sqlite3_result_int (pContext, cursor->current_row); + return SQLITE_OK; + } + if (cursor->pVtab->XL_handle != NULL + && cursor->current_row <= cursor->pVtab->rows + && column <= cursor->pVtab->columns) + freexl_get_cell_value (cursor->pVtab->XL_handle, + cursor->current_row - 1, column - 1, &cell); + else + cell.type = FREEXL_CELL_NULL; + switch (cell.type) + { + case FREEXL_CELL_INT: + sqlite3_result_int (pContext, cell.value.int_value); + break; + case FREEXL_CELL_DOUBLE: + sqlite3_result_double (pContext, cell.value.double_value); + break; + case FREEXL_CELL_TEXT: + case FREEXL_CELL_SST_TEXT: + case FREEXL_CELL_DATE: + case FREEXL_CELL_DATETIME: + case FREEXL_CELL_TIME: + sqlite3_result_text (pContext, cell.value.text_value, + strlen (cell.value.text_value), SQLITE_STATIC); + break; + default: + sqlite3_result_null (pContext); + break; + }; + return SQLITE_OK; +} + +static int +vXL_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) +{ +/* fetching the ROWID */ + VirtualXLCursorPtr cursor = (VirtualXLCursorPtr) pCursor; + if (cursor->pVtab->firstLineTitles == 'Y') + *pRowid = cursor->current_row - 1; + else + *pRowid = cursor->current_row; + return SQLITE_OK; +} + +static int +vXL_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, + sqlite_int64 * pRowid) +{ +/* generic update [INSERT / UPDATE / DELETE */ + if (pVTab || argc || argv || pRowid) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_READONLY; +} + +static int +vXL_begin (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vXL_sync (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vXL_commit (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vXL_rollback (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +spliteVirtualXLInit (sqlite3 * db) +{ + int rc = SQLITE_OK; + my_XL_module.iVersion = 1; + my_XL_module.xCreate = &vXL_create; + my_XL_module.xConnect = &vXL_connect; + my_XL_module.xBestIndex = &vXL_best_index; + my_XL_module.xDisconnect = &vXL_disconnect; + my_XL_module.xDestroy = &vXL_destroy; + my_XL_module.xOpen = &vXL_open; + my_XL_module.xClose = &vXL_close; + my_XL_module.xFilter = &vXL_filter; + my_XL_module.xNext = &vXL_next; + my_XL_module.xEof = &vXL_eof; + my_XL_module.xColumn = &vXL_column; + my_XL_module.xRowid = &vXL_rowid; + my_XL_module.xUpdate = &vXL_update; + my_XL_module.xBegin = &vXL_begin; + my_XL_module.xSync = &vXL_sync; + my_XL_module.xCommit = &vXL_commit; + my_XL_module.xRollback = &vXL_rollback; + my_XL_module.xFindFunction = NULL; + sqlite3_create_module_v2 (db, "VirtualXL", &my_XL_module, NULL, 0); + return rc; +} + +SPATIALITE_PRIVATE int +virtualXL_extension_init (void *xdb) +{ + sqlite3 *db = (sqlite3 *) xdb; + return spliteVirtualXLInit (db); +} + +#endif /* FreeXL enabled/disabled */ +#endif /* ICONV enabled/disabled */ diff --git a/src/spatialite/src/spatialite/virtualbbox.c b/src/spatialite/src/spatialite/virtualbbox.c new file mode 100644 index 0000000..f70fce2 --- /dev/null +++ b/src/spatialite/src/spatialite/virtualbbox.c @@ -0,0 +1,984 @@ +/* + + virtualbbox.c -- SQLite3 extension [VIRTUAL TABLE accessing BoundingBox tables] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include +#include +#include + +#ifdef _WIN32 +#define strcasecmp _stricmp +#define strncasecmp _strnicmp +#endif /* not WIN32 */ + +/* 64 bit integer: portable format for printf() */ +#if defined(_WIN32) && !defined(__MINGW32__) +#define FRMT64 "%I64d" +#else +#define FRMT64 "%lld" +#endif + +#if defined(_WIN32) && !defined(__MINGW32__) +#define LONG64_MAX _I64_MAX +#define LONG64_MIN _I64_MIN +#else +#define LONG64_MAX 9223372036854775807LL +#define LONG64_MIN (-LONG64_MAX + 1) +#endif + +static struct sqlite3_module my_bbox_module; + +typedef struct SqliteValue +{ +/* a multitype storing a column value */ + int Type; + sqlite3_int64 IntValue; + double DoubleValue; + char *Text; + unsigned char *Blob; + int Size; +} SqliteValue; +typedef SqliteValue *SqliteValuePtr; + +typedef struct VirtualBBoxStruct +{ +/* extends the sqlite3_vtab struct */ + const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ + int nRef; /* # references: USED INTERNALLY BY SQLITE */ + char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ + sqlite3 *db; /* the sqlite db holding the virtual table */ + char *table; /* the real-table name */ + int nColumns; /* the # columns into the table */ + char **Column; /* the name for each column */ + char **Type; /* the type for each column */ + char *Visible; /* true / false */ + SqliteValuePtr *Value; /* the current-row value for each column */ + const void *p_cache; /* pointer to the internal cache */ + int Srid; /* the SRID for each Geometry column */ + char *ColSrid; /* the column containing a SRID definition */ + int ForceWGS84; /* always force WGS84 long-lat */ + char *MinX; /* name of the MinX input column */ + char *MinY; /* name of the MinY input column */ + char *MaxX; /* name of the MaxX input column */ + char *MaxY; /* name of the MaxY input column */ + gaiaGeomCollPtr BBoxGeom; /* current BBOX geometry */ +} VirtualBBox; +typedef VirtualBBox *VirtualBBoxPtr; + +typedef struct VirtualBBoxCursorStruct +{ +/* extends the sqlite3_vtab_cursor struct */ + VirtualBBoxPtr pVtab; /* Virtual table of this cursor */ + sqlite3_stmt *stmt; + sqlite3_int64 current_row; /* the current row ID */ + int eof; /* the EOF marker */ +} VirtualBBoxCursor; +typedef VirtualBBoxCursor *VirtualBBoxCursorPtr; + +static SqliteValuePtr +value_alloc (void) +{ +/* allocates and initialites a Value multitype */ + SqliteValuePtr p = malloc (sizeof (SqliteValue)); + p->Type = SQLITE_NULL; + p->Text = NULL; + p->Blob = NULL; + return p; +} + +static void +value_free (SqliteValuePtr p) +{ +/* freeing a Value multitype */ + if (!p) + return; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + free (p); +} + +static void +value_set_null (SqliteValuePtr p) +{ +/* setting a NULL value to the multitype */ + if (!p) + return; + p->Type = SQLITE_NULL; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + p->Text = NULL; + p->Blob = NULL; +} + +static void +value_set_int (SqliteValuePtr p, sqlite3_int64 value) +{ +/* setting an INT value to the multitype */ + if (!p) + return; + p->Type = SQLITE_INTEGER; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + p->Text = NULL; + p->Blob = NULL; + p->IntValue = value; +} + +static void +value_set_double (SqliteValuePtr p, double value) +{ +/* setting a DOUBLE value to the multitype */ + if (!p) + return; + p->Type = SQLITE_FLOAT; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + p->Text = NULL; + p->Blob = NULL; + p->DoubleValue = value; +} + +static void +value_set_text (SqliteValuePtr p, const char *value, int size) +{ +/* setting a TEXT value to the multitype */ + if (!p) + return; + p->Type = SQLITE_TEXT; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + p->Blob = NULL; + p->Text = malloc (size); + memcpy (p->Text, value, size); + p->Size = size; +} + +static void +value_set_blob (SqliteValuePtr p, const unsigned char *value, int size) +{ +/* setting a BLOB value to the multitype */ + if (!p) + return; + p->Type = SQLITE_BLOB; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + p->Text = NULL; + p->Blob = malloc (size); + memcpy (p->Blob, value, size); + p->Size = size; +} + +static void +free_table (VirtualBBoxPtr p_vt) +{ +/* memory cleanup; freeing the virtual table struct */ + int i; + if (!p_vt) + return; + if (p_vt->table) + sqlite3_free (p_vt->table); + if (p_vt->Column) + { + for (i = 0; i < p_vt->nColumns; i++) + { + if (*(p_vt->Column + i)) + sqlite3_free (*(p_vt->Column + i)); + } + sqlite3_free (p_vt->Column); + } + if (p_vt->Type) + { + for (i = 0; i < p_vt->nColumns; i++) + { + if (*(p_vt->Type + i)) + sqlite3_free (*(p_vt->Type + i)); + } + sqlite3_free (p_vt->Type); + } + if (p_vt->Visible) + sqlite3_free (p_vt->Visible); + if (p_vt->Value) + { + for (i = 0; i < p_vt->nColumns; i++) + { + if (*(p_vt->Value + i)) + value_free (*(p_vt->Value + i)); + } + sqlite3_free (p_vt->Value); + } + if (p_vt->MinX) + sqlite3_free (p_vt->MinX); + if (p_vt->MinY) + sqlite3_free (p_vt->MinY); + if (p_vt->MaxX) + sqlite3_free (p_vt->MaxX); + if (p_vt->MaxY) + sqlite3_free (p_vt->MaxY); + if (p_vt->ColSrid) + sqlite3_free (p_vt->ColSrid); + if (p_vt->BBoxGeom) + gaiaFreeGeomColl (p_vt->BBoxGeom); + sqlite3_free (p_vt); +} + +static void +vbbox_read_row (VirtualBBoxCursorPtr cursor) +{ +/* trying to read a row from the BoundingBox real-table */ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) cursor->pVtab->p_cache; + sqlite3_stmt *stmt; + int ret; + int ic; + int icx; + const char *text; + const unsigned char *blob; + int size; + sqlite3_int64 pk; + double minx; + double miny; + double maxx; + double maxy; + int srid; + char ok_minx = 'N'; + char ok_miny = 'N'; + char ok_maxx = 'N'; + char ok_maxy = 'N'; + char ok_srid = 'N'; + stmt = cursor->stmt; + sqlite3_bind_int64 (stmt, 1, cursor->current_row); + ret = sqlite3_step (stmt); + if (ret == SQLITE_ROW) + { + pk = sqlite3_column_int64 (stmt, 0); + if (sqlite3_column_type (stmt, 1) == SQLITE_FLOAT) + { + minx = sqlite3_column_double (stmt, 1); + ok_minx = 'Y'; + } + if (sqlite3_column_type (stmt, 2) == SQLITE_FLOAT) + { + miny = sqlite3_column_double (stmt, 2); + ok_miny = 'Y'; + } + if (sqlite3_column_type (stmt, 3) == SQLITE_FLOAT) + { + maxx = sqlite3_column_double (stmt, 3); + ok_maxx = 'Y'; + } + if (sqlite3_column_type (stmt, 4) == SQLITE_FLOAT) + { + maxy = sqlite3_column_double (stmt, 4); + ok_maxy = 'Y'; + } + if (sqlite3_column_type (stmt, 5) == SQLITE_INTEGER) + { + srid = sqlite3_column_int (stmt, 5); + ok_srid = 'Y'; + } + if (cursor->pVtab->BBoxGeom) + gaiaFreeGeomColl (cursor->pVtab->BBoxGeom); + cursor->pVtab->BBoxGeom = NULL; + if (ok_minx == 'Y' && ok_miny == 'Y' && ok_maxx == 'Y' + && ok_maxy == 'Y') + { + gaiaGeomCollPtr geom = gaiaAllocGeomColl (); + gaiaPolygonPtr pg = gaiaAddPolygonToGeomColl (geom, 5, 0); + gaiaRingPtr rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, minx, miny); + gaiaSetPoint (rng->Coords, 1, maxx, miny); + gaiaSetPoint (rng->Coords, 2, maxx, maxy); + gaiaSetPoint (rng->Coords, 3, minx, maxy); + gaiaSetPoint (rng->Coords, 4, minx, miny); + if (ok_srid == 'Y') + { + if (cursor->pVtab->ForceWGS84) + { + /* converting to WGS84 long-lat */ + gaiaGeomCollPtr geom2 = NULL; + char *proj_from = NULL; + char *proj_to = NULL; + geom->Srid = srid; + getProjParams (cursor->pVtab->db, srid, &proj_from); + getProjParams (cursor->pVtab->db, 4326, &proj_to); + if (proj_to == NULL || proj_from == NULL) + geom2 = NULL; + else +#ifndef OMIT_PROJ /* including PROJ.4 */ + if (cache != NULL) + geom2 = + gaiaTransform_r (cache, geom, proj_from, + proj_to); + else + geom2 = + gaiaTransform (geom, proj_from, proj_to); +#endif /* end including PROJ.4 */ + geom2 = NULL; + if (geom2 != NULL) + geom2->Srid = 4326; + cursor->pVtab->BBoxGeom = geom2; + gaiaFreeGeomColl (geom); + if (proj_from) + free (proj_from); + if (proj_to) + free (proj_to); + } + else + { + geom->Srid = srid; + cursor->pVtab->BBoxGeom = geom; + } + } + else + { + geom->Srid = cursor->pVtab->Srid; + cursor->pVtab->BBoxGeom = geom; + } + } + icx = 5; + for (ic = 0; ic < cursor->pVtab->nColumns; ic++) + { + if (*(cursor->pVtab->Visible + ic) != 'Y') + continue; + icx++; + switch (sqlite3_column_type (stmt, icx)) + { + case SQLITE_INTEGER: + value_set_int (*(cursor->pVtab->Value + ic), + sqlite3_column_int64 (stmt, icx)); + break; + case SQLITE_FLOAT: + value_set_double (*(cursor->pVtab->Value + ic), + sqlite3_column_double (stmt, icx)); + break; + case SQLITE_TEXT: + text = (char *) sqlite3_column_text (stmt, icx); + size = sqlite3_column_bytes (stmt, icx); + value_set_text (*(cursor->pVtab->Value + ic), text, size); + break; + case SQLITE_BLOB: + blob = sqlite3_column_blob (stmt, icx); + size = sqlite3_column_bytes (stmt, icx); + value_set_blob (*(cursor->pVtab->Value + ic), blob, size); + break; + case SQLITE_NULL: + default: + value_set_null (*(cursor->pVtab->Value + ic)); + break; + }; + } + } + else + { + /* an error occurred */ + cursor->eof = 1; + return; + } + cursor->eof = 0; + cursor->current_row = pk; +} + +static int +vbbox_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* creates the virtual table connected to some BoundingBox table */ + char *vtable = NULL; + char *table = NULL; + char *col_minx = NULL; + char *col_miny = NULL; + char *col_maxx = NULL; + char *col_maxy = NULL; + char *col_srid = NULL; + char *x_force_wgs84 = NULL; + int ret; + int i; + int i2; + int len; + int n_rows; + int n_columns; + const char *col_name; + const char *col_type; + int force_wgs84; + char **results; + char *sql; + char *xname; + gaiaOutBuffer sql_statement; + VirtualBBoxPtr p_vt = NULL; + if (pAux) + pAux = pAux; /* unused arg warning suppression */ + gaiaOutBufferInitialize (&sql_statement); +/* checking for table_name */ + if (argc >= 10) + { + vtable = gaiaDequotedSql ((char *) argv[2]); + table = gaiaDequotedSql ((char *) argv[3]); + col_minx = gaiaDequotedSql ((char *) argv[4]); + col_miny = gaiaDequotedSql ((char *) argv[5]); + col_maxx = gaiaDequotedSql ((char *) argv[6]); + col_maxy = gaiaDequotedSql ((char *) argv[7]); + col_srid = gaiaDequotedSql ((char *) argv[8]); + x_force_wgs84 = gaiaDequotedSql ((char *) argv[9]); + } + else + { + *pzErr = + sqlite3_mprintf + ("[VirtualBBox module] CREATE VIRTUAL: illegal arg list {table_name, col_minx, col_miny, col_maxx, col_maxy, srid, longlat=1|0, columns}\n"); + goto error; + } + if (strcmp (x_force_wgs84, "0") == 0) + force_wgs84 = 0; + else if (strcmp (x_force_wgs84, "1") == 0) + force_wgs84 = 1; + else + { + *pzErr = + sqlite3_mprintf + ("[VirtualBBox module] CREATE VIRTUAL: illegal arg list {table_name, col_minx, col_miny, col_maxx, col_maxy, srid, longlat=1|0, columns}\n"); + goto error; + } +/* retrieving the base table columns */ + xname = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (db, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto illegal; + if (n_rows >= 1) + { + p_vt = (VirtualBBoxPtr) sqlite3_malloc (sizeof (VirtualBBox)); + if (!p_vt) + return SQLITE_NOMEM; + p_vt->db = db; + p_vt->p_cache = pAux; + p_vt->nRef = 0; + p_vt->zErrMsg = NULL; + len = strlen (table); + p_vt->table = sqlite3_malloc (len + 1); + strcpy (p_vt->table, table); + p_vt->nColumns = n_rows; + p_vt->Column = sqlite3_malloc (sizeof (char *) * n_rows); + p_vt->Type = sqlite3_malloc (sizeof (char *) * n_rows); + p_vt->Visible = sqlite3_malloc (sizeof (char *) * n_rows); + memset (p_vt->Visible, 'N', n_rows); + p_vt->Value = sqlite3_malloc (sizeof (SqliteValuePtr) * n_rows); + p_vt->Srid = atoi (col_srid); + p_vt->ForceWGS84 = force_wgs84; +#ifndef OMIT_PROJ /* including PROJ.4 */ + if (p_vt->ForceWGS84) + spatialite_e + ("VirtualBBOX WARNING - WGS84 is requested, but PROJ4 support is currently disabled\n"); +#endif /* end including PROJ.4 */ + p_vt->ColSrid = NULL; + p_vt->MinX = NULL; + p_vt->MinY = NULL; + p_vt->MaxX = NULL; + p_vt->MaxY = NULL; + p_vt->BBoxGeom = NULL; + for (i = 0; i < n_rows; i++) + { + *(p_vt->Column + i) = NULL; + *(p_vt->Type + i) = NULL; + *(p_vt->Value + i) = value_alloc (); + } + for (i = 1; i <= n_rows; i++) + { + col_name = results[(i * n_columns) + 1]; + col_type = results[(i * n_columns) + 2]; + len = strlen (col_name); + if (strcasecmp (col_name, col_minx) == 0) + { + p_vt->MinX = sqlite3_malloc (len + 1); + strcpy (p_vt->MinX, col_name); + } + if (strcasecmp (col_name, col_miny) == 0) + { + p_vt->MinY = sqlite3_malloc (len + 1); + strcpy (p_vt->MinY, col_name); + } + if (strcasecmp (col_name, col_maxx) == 0) + { + p_vt->MaxX = sqlite3_malloc (len + 1); + strcpy (p_vt->MaxX, col_name); + } + if (strcasecmp (col_name, col_maxy) == 0) + { + p_vt->MaxY = sqlite3_malloc (len + 1); + strcpy (p_vt->MaxY, col_name); + } + if (strcasecmp (col_name, col_srid) == 0) + { + p_vt->ColSrid = sqlite3_malloc (len + 1); + strcpy (p_vt->ColSrid, col_name); + } + *(p_vt->Column + (i - 1)) = sqlite3_malloc (len + 1); + strcpy (*(p_vt->Column + (i - 1)), col_name); + len = strlen (col_type); + *(p_vt->Type + (i - 1)) = sqlite3_malloc (len + 1); + strcpy (*(p_vt->Type + (i - 1)), col_type); + for (i2 = 10; i2 < argc; i2++) + { + char *extra_col = gaiaDequotedSql ((char *) argv[i2]); + if (strcasecmp (extra_col, col_name) == 0) + *(p_vt->Visible + (i - 1)) = 'Y'; + free (extra_col); + } + } + sqlite3_free_table (results); + } + else + { + sqlite3_free_table (results); + goto illegal; + } + if (p_vt->MinX == NULL || p_vt->MinY == NULL || p_vt->MaxX == NULL + || p_vt->MaxY == NULL) + goto illegal; +/* preparing the COLUMNs for this VIRTUAL TABLE */ + xname = gaiaDoubleQuotedSql (vtable); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (Geometry Polygon", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + for (i = 0; i < p_vt->nColumns; i++) + { + if (*(p_vt->Visible + i) != 'Y') + continue; + xname = gaiaDoubleQuotedSql (*(p_vt->Column + i)); + sql = sqlite3_mprintf (", \"%s\" %s", xname, *(p_vt->Type + i)); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + gaiaAppendToOutBuffer (&sql_statement, ")"); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + { + if (sqlite3_declare_vtab (db, sql_statement.Buffer) != SQLITE_OK) + { + *pzErr = + sqlite3_mprintf + ("[VirtualBBox module] CREATE VIRTUAL: invalid SQL statement \"%s\"", + sql); + goto error; + } + gaiaOutBufferReset (&sql_statement); + } + else + goto error; + *ppVTab = (sqlite3_vtab *) p_vt; + free (vtable); + free (table); + free (col_minx); + free (col_miny); + free (col_maxx); + free (col_maxy); + free (col_srid); + free (x_force_wgs84); + return SQLITE_OK; + illegal: +/* something is going the wrong way */ + gaiaOutBufferReset (&sql_statement); + if (p_vt) + free_table (p_vt); + *pzErr = + sqlite3_mprintf + ("[VirtualBBox module] '%s' isn't a valid BoundingBox table\n", table); + error: + if (vtable) + free (vtable); + if (table) + free (table); + if (col_minx) + free (col_minx); + if (col_miny) + free (col_miny); + if (col_maxx) + free (col_maxx); + if (col_maxy) + free (col_maxy); + if (col_srid) + free (col_srid); + if (x_force_wgs84) + free (x_force_wgs84); + gaiaOutBufferReset (&sql_statement); + return SQLITE_ERROR; +} + +static int +vbbox_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* connects the virtual table to some shapefile - simply aliases vbbox_create() */ + return vbbox_create (db, pAux, argc, argv, ppVTab, pzErr); +} + +static int +vbbox_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIndex) +{ +/* best index selection */ + if (pVTab || pIndex) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vbbox_disconnect (sqlite3_vtab * pVTab) +{ +/* disconnects the virtual table */ + VirtualBBoxPtr p_vt = (VirtualBBoxPtr) pVTab; + free_table (p_vt); + return SQLITE_OK; +} + +static int +vbbox_destroy (sqlite3_vtab * pVTab) +{ +/* destroys the virtual table - simply aliases vbbox_disconnect() */ + return vbbox_disconnect (pVTab); +} + +static int +vbbox_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) +{ +/* opening a new cursor */ + sqlite3_stmt *stmt; + gaiaOutBuffer sql_statement; + int ret; + char *sql; + int ic; + char *xname; + VirtualBBoxCursorPtr cursor = + (VirtualBBoxCursorPtr) sqlite3_malloc (sizeof (VirtualBBoxCursor)); + if (cursor == NULL) + return SQLITE_ERROR; + cursor->pVtab = (VirtualBBoxPtr) pVTab; + gaiaOutBufferInitialize (&sql_statement); + gaiaAppendToOutBuffer (&sql_statement, "SELECT ROWID"); + xname = gaiaDoubleQuotedSql (cursor->pVtab->MinX); + sql = sqlite3_mprintf (",\"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + xname = gaiaDoubleQuotedSql (cursor->pVtab->MinY); + sql = sqlite3_mprintf (",\"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + xname = gaiaDoubleQuotedSql (cursor->pVtab->MaxX); + sql = sqlite3_mprintf (",\"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + xname = gaiaDoubleQuotedSql (cursor->pVtab->MaxY); + sql = sqlite3_mprintf (",\"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + if (cursor->pVtab->ColSrid == NULL) + gaiaAppendToOutBuffer (&sql_statement, ",NULL"); + else + { + xname = gaiaDoubleQuotedSql (cursor->pVtab->ColSrid); + sql = sqlite3_mprintf (",\"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + for (ic = 0; ic < cursor->pVtab->nColumns; ic++) + { + value_set_null (*(cursor->pVtab->Value + ic)); + if (*(cursor->pVtab->Visible + ic) != 'Y') + continue; + xname = gaiaDoubleQuotedSql (*(cursor->pVtab->Column + ic)); + sql = sqlite3_mprintf (",\"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + xname = gaiaDoubleQuotedSql (cursor->pVtab->table); + sql = sqlite3_mprintf (" FROM \"%s\" WHERE ROWID >= ?", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + ret = + sqlite3_prepare_v2 (cursor->pVtab->db, sql_statement.Buffer, + strlen (sql_statement.Buffer), &stmt, NULL); + else + ret = SQLITE_ERROR; + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + { + /* an error occurred */ + cursor->eof = 1; + return SQLITE_ERROR; + } + cursor->stmt = stmt; + cursor->current_row = LONG64_MIN; + cursor->eof = 0; + *ppCursor = (sqlite3_vtab_cursor *) cursor; + vbbox_read_row (cursor); + return SQLITE_OK; +} + +static int +vbbox_close (sqlite3_vtab_cursor * pCursor) +{ +/* closing the cursor */ + int ic; + VirtualBBoxCursorPtr cursor = (VirtualBBoxCursorPtr) pCursor; + for (ic = 0; ic < cursor->pVtab->nColumns; ic++) + value_set_null (*(cursor->pVtab->Value + ic)); + if (cursor->stmt) + sqlite3_finalize (cursor->stmt); + sqlite3_free (pCursor); + return SQLITE_OK; +} + +static int +vbbox_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, + int argc, sqlite3_value ** argv) +{ +/* setting up a cursor filter */ + if (pCursor || idxNum || idxStr || argc || argv) + pCursor = pCursor; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vbbox_next (sqlite3_vtab_cursor * pCursor) +{ +/* fetching next row from cursor */ + VirtualBBoxCursorPtr cursor = (VirtualBBoxCursorPtr) pCursor; + (cursor->current_row)++; + vbbox_read_row (cursor); + return SQLITE_OK; +} + +static int +vbbox_eof (sqlite3_vtab_cursor * pCursor) +{ +/* cursor EOF */ + VirtualBBoxCursorPtr cursor = (VirtualBBoxCursorPtr) pCursor; + return cursor->eof; +} + +static int +vbbox_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, + int column) +{ +/* fetching value for the Nth column */ + VirtualBBoxCursorPtr cursor = (VirtualBBoxCursorPtr) pCursor; + SqliteValuePtr value; + int icol = 0; + int icol_ok = 0; + if (column == 0) + { + /* the BBox Geometry */ + if (cursor->pVtab->BBoxGeom == NULL) + sqlite3_result_null (pContext); + else + { + unsigned char *blob; + int size; + gaiaToSpatiaLiteBlobWkb (cursor->pVtab->BBoxGeom, &blob, &size); + sqlite3_result_blob (pContext, blob, size, free); + } + return SQLITE_OK; + } + while (icol < cursor->pVtab->nColumns) + { + if (*(cursor->pVtab->Visible + icol) != 'Y') + { + icol++; + continue; + } + icol_ok++; + if (icol_ok == column) + { + value = *(cursor->pVtab->Value + icol); + switch (value->Type) + { + case SQLITE_INTEGER: + sqlite3_result_int64 (pContext, value->IntValue); + break; + case SQLITE_FLOAT: + sqlite3_result_double (pContext, value->DoubleValue); + break; + case SQLITE_TEXT: + sqlite3_result_text (pContext, value->Text, value->Size, + SQLITE_STATIC); + break; + case SQLITE_BLOB: + sqlite3_result_blob (pContext, value->Blob, value->Size, + SQLITE_STATIC); + break; + default: + sqlite3_result_null (pContext); + break; + }; + return SQLITE_OK; + } + icol++; + } + sqlite3_result_null (pContext); + return SQLITE_OK; +} + +static int +vbbox_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) +{ +/* fetching the ROWID */ + VirtualBBoxCursorPtr cursor = (VirtualBBoxCursorPtr) pCursor; + *pRowid = cursor->current_row; + return SQLITE_OK; +} + +static int +vbbox_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, + sqlite_int64 * pRowid) +{ +/* generic update [INSERT / UPDATE / DELETE */ + if (pVTab || argc || argv || pRowid) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_READONLY; +} + +static int +vbbox_begin (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vbbox_sync (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vbbox_commit (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vbbox_rollback (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +spliteVirtualBBoxInit (sqlite3 * db, void *p_cache) +{ + int rc = SQLITE_OK; + my_bbox_module.iVersion = 1; + my_bbox_module.xCreate = &vbbox_create; + my_bbox_module.xConnect = &vbbox_connect; + my_bbox_module.xBestIndex = &vbbox_best_index; + my_bbox_module.xDisconnect = &vbbox_disconnect; + my_bbox_module.xDestroy = &vbbox_destroy; + my_bbox_module.xOpen = &vbbox_open; + my_bbox_module.xClose = &vbbox_close; + my_bbox_module.xFilter = &vbbox_filter; + my_bbox_module.xNext = &vbbox_next; + my_bbox_module.xEof = &vbbox_eof; + my_bbox_module.xColumn = &vbbox_column; + my_bbox_module.xRowid = &vbbox_rowid; + my_bbox_module.xUpdate = &vbbox_update; + my_bbox_module.xBegin = &vbbox_begin; + my_bbox_module.xSync = &vbbox_sync; + my_bbox_module.xCommit = &vbbox_commit; + my_bbox_module.xRollback = &vbbox_rollback; + my_bbox_module.xFindFunction = NULL; + sqlite3_create_module_v2 (db, "VirtualBBox", &my_bbox_module, p_cache, 0); + return rc; +} + +SPATIALITE_PRIVATE int +virtualbbox_extension_init (void *xdb, const void *p_cache) +{ + sqlite3 *db = (sqlite3 *) xdb; + return spliteVirtualBBoxInit (db, (void *) p_cache); +} diff --git a/src/spatialite/src/spatialite/virtualdbf.c b/src/spatialite/src/spatialite/virtualdbf.c new file mode 100644 index 0000000..44bfcb1 --- /dev/null +++ b/src/spatialite/src/spatialite/virtualdbf.c @@ -0,0 +1,907 @@ +/* + + virtualdbf.c -- SQLite3 extension [VIRTUAL TABLE accessing DBF] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include +#include +#include + +#ifdef _WIN32 +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +#ifndef OMIT_ICONV /* if ICONV is disabled no DBF support is available */ + +static struct sqlite3_module my_dbf_module; + +typedef struct VirtualDbfStruct +{ +/* extends the sqlite3_vtab struct */ + const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ + int nRef; /* # references: USED INTERNALLY BY SQLITE */ + char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ + sqlite3 *db; /* the sqlite db holding the virtual table */ + gaiaDbfPtr dbf; /* the DBF struct */ +} VirtualDbf; +typedef VirtualDbf *VirtualDbfPtr; + +typedef struct VirtualDbfConstraintStruct +{ +/* a constraint to be verified for xFilter */ + int iColumn; /* Column on left-hand side of constraint */ + int op; /* Constraint operator */ + char valueType; /* value Type ('I'=int,'D'=double,'T'=text) */ + sqlite3_int64 intValue; /* Int64 comparison value */ + double dblValue; /* Double comparison value */ + char *txtValue; /* Text comparison value */ + struct VirtualDbfConstraintStruct *next; +} VirtualDbfConstraint; +typedef VirtualDbfConstraint *VirtualDbfConstraintPtr; + +typedef struct VirtualDbfCursorStruct +{ +/* extends the sqlite3_vtab_cursor struct */ + VirtualDbfPtr pVtab; /* Virtual table of this cursor */ + long current_row; /* the current row ID */ + int eof; /* the EOF marker */ + VirtualDbfConstraintPtr firstConstraint; + VirtualDbfConstraintPtr lastConstraint; +} VirtualDbfCursor; + +typedef VirtualDbfCursor *VirtualDbfCursorPtr; + +static int +vdbf_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* creates the virtual table connected to some DBF */ + char *sql; + VirtualDbfPtr p_vt; + char path[2048]; + char encoding[128]; + const char *pEncoding = NULL; + int len; + const char *pPath = NULL; + gaiaDbfFieldPtr pFld; + int cnt; + int col_cnt; + int seed; + int dup; + int idup; + char *xname; + char **col_name = NULL; + gaiaOutBuffer sql_statement; + if (pAux) + pAux = pAux; /* unused arg warning suppression */ +/* checking for DBF PATH */ + if (argc == 5) + { + pPath = argv[3]; + len = strlen (pPath); + if ((*(pPath + 0) == '\'' || *(pPath + 0) == '"') + && (*(pPath + len - 1) == '\'' || *(pPath + len - 1) == '"')) + { + /* the path is enclosed between quotes - we need to dequote it */ + strcpy (path, pPath + 1); + len = strlen (path); + *(path + len - 1) = '\0'; + } + else + strcpy (path, pPath); + pEncoding = argv[4]; + len = strlen (pEncoding); + if ((*(pEncoding + 0) == '\'' || *(pEncoding + 0) == '"') + && (*(pEncoding + len - 1) == '\'' + || *(pEncoding + len - 1) == '"')) + { + /* the charset-name is enclosed between quotes - we need to dequote it */ + strcpy (encoding, pEncoding + 1); + len = strlen (encoding); + *(encoding + len - 1) = '\0'; + } + else + strcpy (encoding, pEncoding); + } + else + { + *pzErr = + sqlite3_mprintf + ("[VirtualDbf module] CREATE VIRTUAL: illegal arg list {dbf_path, encoding}"); + return SQLITE_ERROR; + } + p_vt = (VirtualDbfPtr) sqlite3_malloc (sizeof (VirtualDbf)); + if (!p_vt) + return SQLITE_NOMEM; + p_vt->pModule = &my_dbf_module; + p_vt->nRef = 0; + p_vt->zErrMsg = NULL; + p_vt->db = db; + p_vt->dbf = gaiaAllocDbf (); +/* trying to open file */ + gaiaOpenDbfRead (p_vt->dbf, path, encoding, "UTF-8"); + if (!(p_vt->dbf->Valid)) + { + /* something is going the wrong way; creating a stupid default table */ + xname = gaiaDoubleQuotedSql ((const char *) argv[2]); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (PKUID INTEGER)", xname); + free (xname); + if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) + { + sqlite3_free (sql); + *pzErr = + sqlite3_mprintf + ("[VirtualDbf module] cannot build a table from DBF\n"); + return SQLITE_ERROR; + } + sqlite3_free (sql); + *ppVTab = (sqlite3_vtab *) p_vt; + return SQLITE_OK; + } +/* preparing the COLUMNs for this VIRTUAL TABLE */ + gaiaOutBufferInitialize (&sql_statement); + xname = gaiaDoubleQuotedSql (argv[2]); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (PKUID INTEGER", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); +/* checking for duplicate / illegal column names and antialising them */ + col_cnt = 0; + pFld = p_vt->dbf->Dbf->First; + while (pFld) + { + /* counting DBF fields */ + col_cnt++; + pFld = pFld->Next; + } + col_name = malloc (sizeof (char *) * col_cnt); + cnt = 0; + seed = 0; + pFld = p_vt->dbf->Dbf->First; + while (pFld) + { + xname = gaiaDoubleQuotedSql (pFld->Name); + dup = 0; + for (idup = 0; idup < cnt; idup++) + { + if (strcasecmp (xname, *(col_name + idup)) == 0) + dup = 1; + } + if (strcasecmp (xname, "\"PKUID\"") == 0) + dup = 1; + if (dup) + { + free (xname); + sql = sqlite3_mprintf ("COL_%d", seed++); + xname = gaiaDoubleQuotedSql (sql); + sqlite3_free (sql); + } + if (pFld->Type == 'N') + { + if (pFld->Decimals > 0 || pFld->Length > 18) + sql = sqlite3_mprintf (", \"%s\" DOUBLE", xname); + else + sql = sqlite3_mprintf (", \"%s\" INTEGER", xname); + } + else if (pFld->Type == 'F') + sql = sqlite3_mprintf (", \"%s\" DOUBLE", xname); + else + sql = + sqlite3_mprintf (", \"%s\" VARCHAR(%d)", xname, pFld->Length); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + *(col_name + cnt) = xname; + cnt++; + pFld = pFld->Next; + } + gaiaAppendToOutBuffer (&sql_statement, ")"); + if (col_name) + { + /* releasing memory allocation for column names */ + for (cnt = 0; cnt < col_cnt; cnt++) + free (*(col_name + cnt)); + free (col_name); + } + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + { + if (sqlite3_declare_vtab (db, sql_statement.Buffer) != SQLITE_OK) + { + *pzErr = + sqlite3_mprintf + ("[VirtualDbf module] CREATE VIRTUAL: invalid SQL statement \"%s\"", + sql_statement.Buffer); + gaiaOutBufferReset (&sql_statement); + return SQLITE_ERROR; + } + } + gaiaOutBufferReset (&sql_statement); + *ppVTab = (sqlite3_vtab *) p_vt; + return SQLITE_OK; +} + +static int +vdbf_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* connects the virtual table to some DBF - simply aliases vdbf_create() */ + return vdbf_create (db, pAux, argc, argv, ppVTab, pzErr); +} + +static int +vdbf_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIndex) +{ +/* best index selection */ + int i; + int iArg = 0; + char str[2048]; + char buf[64]; + + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + + *str = '\0'; + for (i = 0; i < pIndex->nConstraint; i++) + { + if (pIndex->aConstraint[i].usable) + { + iArg++; + pIndex->aConstraintUsage[i].argvIndex = iArg; + pIndex->aConstraintUsage[i].omit = 1; + sprintf (buf, "%d:%d,", pIndex->aConstraint[i].iColumn, + pIndex->aConstraint[i].op); + strcat (str, buf); + } + } + if (*str != '\0') + { + pIndex->idxStr = sqlite3_mprintf ("%s", str); + pIndex->needToFreeIdxStr = 1; + } + + return SQLITE_OK; +} + +static int +vdbf_disconnect (sqlite3_vtab * pVTab) +{ +/* disconnects the virtual table */ + VirtualDbfPtr p_vt = (VirtualDbfPtr) pVTab; + if (p_vt->dbf) + gaiaFreeDbf (p_vt->dbf); + sqlite3_free (p_vt); + return SQLITE_OK; +} + +static int +vdbf_destroy (sqlite3_vtab * pVTab) +{ +/* destroys the virtual table - simply aliases vdbf_disconnect() */ + return vdbf_disconnect (pVTab); +} + +static void +vdbf_read_row (VirtualDbfCursorPtr cursor, int *deleted_row) +{ +/* trying to read a "row" from DBF */ + int ret; + int deleted; + if (!(cursor->pVtab->dbf->Valid)) + { + cursor->eof = 1; + return; + } + ret = gaiaReadDbfEntity (cursor->pVtab->dbf, cursor->current_row, &deleted); + if (!ret) + { + if (!(cursor->pVtab->dbf->LastError)) /* normal DBF EOF */ + { + cursor->eof = 1; + return; + } + /* an error occurred */ + spatialite_e ("%s\n", cursor->pVtab->dbf->LastError); + cursor->eof = 1; + return; + } + cursor->current_row++; + *deleted_row = deleted; +} + +static int +vdbf_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) +{ +/* opening a new cursor */ + int deleted; + VirtualDbfCursorPtr cursor = + (VirtualDbfCursorPtr) sqlite3_malloc (sizeof (VirtualDbfCursor)); + if (cursor == NULL) + return SQLITE_ERROR; + cursor->firstConstraint = NULL; + cursor->lastConstraint = NULL; + cursor->pVtab = (VirtualDbfPtr) pVTab; + cursor->current_row = 0; + cursor->eof = 0; + *ppCursor = (sqlite3_vtab_cursor *) cursor; + while (1) + { + vdbf_read_row (cursor, &deleted); + if (cursor->eof) + break; + if (!deleted) + break; + } + return SQLITE_OK; +} + +static void +vdbf_free_constraints (VirtualDbfCursorPtr cursor) +{ +/* memory cleanup - cursor constraints */ + VirtualDbfConstraintPtr pC; + VirtualDbfConstraintPtr pCn; + pC = cursor->firstConstraint; + while (pC) + { + pCn = pC->next; + if (pC->txtValue) + sqlite3_free (pC->txtValue); + sqlite3_free (pC); + pC = pCn; + } + cursor->firstConstraint = NULL; + cursor->lastConstraint = NULL; +} + +static int +vdbf_close (sqlite3_vtab_cursor * pCursor) +{ +/* closing the cursor */ + VirtualDbfCursorPtr cursor = (VirtualDbfCursorPtr) pCursor; + vdbf_free_constraints (cursor); + sqlite3_free (pCursor); + return SQLITE_OK; +} + +static int +vdbf_parse_constraint (const char *str, int index, int *iColumn, int *op) +{ +/* parsing a constraint string */ + char buf[64]; + const char *in = str; + char *out = buf; + int i = 0; + int found = 0; + + *out = '\0'; + while (*in != '\0') + { + if (*in == ',') + { + if (index == i) + { + *out = '\0'; + found = 1; + break; + } + i++; + in++; + continue; + } + if (index == i) + *out++ = *in; + in++; + } + if (!found) + return 0; + in = buf; + for (i = 0; i < (int) strlen (buf); i++) + { + if (buf[i] == ':') + { + buf[i] = '\0'; + *iColumn = atoi (buf); + *op = atoi (buf + i + 1); + return 1; + } + in++; + } + return 0; +} + +static int +vdbf_eval_constraints (VirtualDbfCursorPtr cursor) +{ +/* evaluating Filter constraints */ + int nCol; + gaiaDbfFieldPtr pFld; + VirtualDbfConstraintPtr pC = cursor->firstConstraint; + if (pC == NULL) + return 1; + while (pC) + { + int ok = 0; + if (pC->iColumn == 0) + { + /* the PRIMARY KEY column */ + if (pC->valueType == 'I') + { + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (cursor->current_row == pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (cursor->current_row > pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (cursor->current_row <= pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (cursor->current_row < pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (cursor->current_row >= pC->intValue) + ok = 1; + break; + }; + } + goto done; + } + nCol = 1; + pFld = cursor->pVtab->dbf->Dbf->First; + while (pFld) + { + if (nCol == pC->iColumn) + { + if ((pFld->Value)) + { + switch (pFld->Value->Type) + { + case GAIA_INT_VALUE: + if (pC->valueType == 'I') + { + + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (pFld->Value->IntValue == + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (pFld->Value->IntValue > + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (pFld->Value->IntValue <= + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (pFld->Value->IntValue < + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (pFld->Value->IntValue >= + pC->intValue) + ok = 1; + break; + }; + } + break; + case GAIA_DOUBLE_VALUE: + if (pC->valueType == 'I') + { + + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (pFld->Value->DblValue == + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (pFld->Value->DblValue > + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (pFld->Value->DblValue <= + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (pFld->Value->DblValue < + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (pFld->Value->DblValue >= + pC->intValue) + ok = 1; + break; + }; + } + if (pC->valueType == 'D') + { + + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (pFld->Value->DblValue == + pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (pFld->Value->DblValue > + pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (pFld->Value->DblValue <= + pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (pFld->Value->DblValue < + pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (pFld->Value->DblValue >= + pC->dblValue) + ok = 1; + break; + } + } + break; + case GAIA_TEXT_VALUE: + if (pC->valueType == 'T' && pC->txtValue) + { + + int ret; + ret = + strcmp (pFld->Value->TxtValue, + pC->txtValue); + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (ret == 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (ret > 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (ret <= 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (ret < 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (ret >= 0) + ok = 1; + break; + }; + } + break; + }; + } + goto done; + } + nCol++; + pFld = pFld->Next; + } + done: + if (!ok) + return 0; + pC = pC->next; + } + return 1; +} + +static int +vdbf_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, + int argc, sqlite3_value ** argv) +{ +/* setting up a cursor filter */ + int i; + int iColumn; + int op; + int len; + int deleted; + VirtualDbfConstraintPtr pC; + VirtualDbfCursorPtr cursor = (VirtualDbfCursorPtr) pCursor; + if (idxNum) + idxNum = idxNum; /* unused arg warning suppression */ + +/* resetting any previously set filter constraint */ + vdbf_free_constraints (cursor); + + for (i = 0; i < argc; i++) + { + if (!vdbf_parse_constraint (idxStr, i, &iColumn, &op)) + continue; + pC = sqlite3_malloc (sizeof (VirtualDbfConstraint)); + if (!pC) + continue; + pC->iColumn = iColumn; + pC->op = op; + pC->valueType = '\0'; + pC->txtValue = NULL; + pC->next = NULL; + + if (sqlite3_value_type (argv[i]) == SQLITE_INTEGER) + { + pC->valueType = 'I'; + pC->intValue = sqlite3_value_int64 (argv[i]); + } + if (sqlite3_value_type (argv[i]) == SQLITE_FLOAT) + { + pC->valueType = 'D'; + pC->dblValue = sqlite3_value_double (argv[i]); + } + if (sqlite3_value_type (argv[i]) == SQLITE_TEXT) + { + pC->valueType = 'T'; + len = sqlite3_value_bytes (argv[i]) + 1; + pC->txtValue = (char *) sqlite3_malloc (len); + if (pC->txtValue) + strcpy (pC->txtValue, + (char *) sqlite3_value_text (argv[i])); + } + if (cursor->firstConstraint == NULL) + cursor->firstConstraint = pC; + if (cursor->lastConstraint != NULL) + cursor->lastConstraint->next = pC; + cursor->lastConstraint = pC; + } + + cursor->current_row = 0; + cursor->eof = 0; + while (1) + { + vdbf_read_row (cursor, &deleted); + if (cursor->eof) + break; + if (deleted) + continue; + if (vdbf_eval_constraints (cursor)) + break; + } + return SQLITE_OK; +} + +static int +vdbf_next (sqlite3_vtab_cursor * pCursor) +{ +/* fetching a next row from cursor */ + int deleted; + VirtualDbfCursorPtr cursor = (VirtualDbfCursorPtr) pCursor; + while (1) + { + vdbf_read_row (cursor, &deleted); + if (cursor->eof) + break; + if (deleted) + continue; + if (vdbf_eval_constraints (cursor)) + break; + } + return SQLITE_OK; +} + +static int +vdbf_eof (sqlite3_vtab_cursor * pCursor) +{ +/* cursor EOF */ + VirtualDbfCursorPtr cursor = (VirtualDbfCursorPtr) pCursor; + return cursor->eof; +} + +static int +vdbf_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, + int column) +{ +/* fetching value for the Nth column */ + int nCol = 1; + gaiaDbfFieldPtr pFld; + VirtualDbfCursorPtr cursor = (VirtualDbfCursorPtr) pCursor; + if (column == 0) + { + /* the PRIMARY KEY column */ + sqlite3_result_int (pContext, cursor->current_row); + return SQLITE_OK; + } + pFld = cursor->pVtab->dbf->Dbf->First; + while (pFld) + { + /* column values */ + if (nCol == column) + { + if (!(pFld->Value)) + sqlite3_result_null (pContext); + else + { + switch (pFld->Value->Type) + { + case GAIA_INT_VALUE: + sqlite3_result_int64 (pContext, + pFld->Value->IntValue); + break; + case GAIA_DOUBLE_VALUE: + sqlite3_result_double (pContext, + pFld->Value->DblValue); + break; + case GAIA_TEXT_VALUE: + sqlite3_result_text (pContext, + pFld->Value->TxtValue, + strlen (pFld->Value->TxtValue), + SQLITE_STATIC); + break; + default: + sqlite3_result_null (pContext); + break; + } + } + break; + } + nCol++; + pFld = pFld->Next; + } + return SQLITE_OK; +} + +static int +vdbf_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) +{ +/* fetching the ROWID */ + VirtualDbfCursorPtr cursor = (VirtualDbfCursorPtr) pCursor; + *pRowid = cursor->current_row; + return SQLITE_OK; +} + +static int +vdbf_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, + sqlite_int64 * pRowid) +{ +/* generic update [INSERT / UPDATE / DELETE */ + if (pVTab || argc || argv || pRowid) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_READONLY; +} + +static int +vdbf_begin (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vdbf_sync (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vdbf_commit (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vdbf_rollback (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +spliteVirtualDbfInit (sqlite3 * db) +{ + int rc = SQLITE_OK; + my_dbf_module.iVersion = 1; + my_dbf_module.xCreate = &vdbf_create; + my_dbf_module.xConnect = &vdbf_connect; + my_dbf_module.xBestIndex = &vdbf_best_index; + my_dbf_module.xDisconnect = &vdbf_disconnect; + my_dbf_module.xDestroy = &vdbf_destroy; + my_dbf_module.xOpen = &vdbf_open; + my_dbf_module.xClose = &vdbf_close; + my_dbf_module.xFilter = &vdbf_filter; + my_dbf_module.xNext = &vdbf_next; + my_dbf_module.xEof = &vdbf_eof; + my_dbf_module.xColumn = &vdbf_column; + my_dbf_module.xRowid = &vdbf_rowid; + my_dbf_module.xUpdate = &vdbf_update; + my_dbf_module.xBegin = &vdbf_begin; + my_dbf_module.xSync = &vdbf_sync; + my_dbf_module.xCommit = &vdbf_commit; + my_dbf_module.xRollback = &vdbf_rollback; + my_dbf_module.xFindFunction = NULL; + sqlite3_create_module_v2 (db, "VirtualDbf", &my_dbf_module, NULL, 0); + return rc; +} + +SPATIALITE_PRIVATE int +virtualdbf_extension_init (void *xdb) +{ + sqlite3 *db = (sqlite3 *) xdb; + return spliteVirtualDbfInit (db); +} + +#endif /* ICONV enabled/disabled */ diff --git a/src/spatialite/src/spatialite/virtualfdo.c b/src/spatialite/src/spatialite/virtualfdo.c new file mode 100644 index 0000000..d08d335 --- /dev/null +++ b/src/spatialite/src/spatialite/virtualfdo.c @@ -0,0 +1,2196 @@ +/* + + virtualfdo.c -- SQLite3 extension [VIRTUAL TABLE accessing FDO-OGR tables] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include + +#include +#include +#include + +/* constants definining FDO-OGR Geometry formats */ +#define FDO_OGR_NONE 0 +#define FDO_OGR_WKT 1 +#define FDO_OGR_WKB 2 +#define FDO_OGR_FGF 3 +#define FDO_OGR_SPLITE 4 + +#ifdef _WIN32 +#define strcasecmp _stricmp +#define strncasecmp _strnicmp +#endif /* not WIN32 */ + +/* 64 bit integer: portable format for printf() */ +#if defined(_WIN32) && !defined(__MINGW32__) +#define FRMT64 "%I64d" +#else +#define FRMT64 "%lld" +#endif + +#if defined(_WIN32) && !defined(__MINGW32__) +#define LONG64_MAX _I64_MAX +#define LONG64_MIN _I64_MIN +#else +#define LONG64_MAX 9223372036854775807LL +#define LONG64_MIN (-LONG64_MAX + 1) +#endif + +struct sqlite3_module my_fdo_module; + +typedef struct SqliteValue +{ +/* a multitype storing a column value */ + int Type; + sqlite3_int64 IntValue; + double DoubleValue; + char *Text; + unsigned char *Blob; + int Size; +} SqliteValue; +typedef SqliteValue *SqliteValuePtr; + +typedef struct VirtualFDOStruct +{ +/* extends the sqlite3_vtab struct */ + const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ + int nRef; /* # references: USED INTERNALLY BY SQLITE */ + char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ + sqlite3 *db; /* the sqlite db holding the virtual table */ + char *table; /* the real-table name */ + int nColumns; /* the # columns into the table */ + char **Column; /* the name for each column */ + char **Type; /* the type for each column */ + int *NotNull; /* NotNull clause for each column */ + SqliteValuePtr *Value; /* the current-row value for each column */ + int nGeometries; /* # Geometry columns into the table */ + char **GeoColumn; /* the name for each Geometry column */ + int *Srid; /* the SRID for each Geometry column */ + int *GeoType; /* the Type for each Geometry column */ + int *Format; /* the Format for each Geometry column */ + int *CoordDimensions; /* # Dimensions for each Geometry column */ +} VirtualFDO; +typedef VirtualFDO *VirtualFDOPtr; + +typedef struct VirtualFDOCursorStruct +{ +/* extends the sqlite3_vtab_cursor struct */ + VirtualFDOPtr pVtab; /* Virtual table of this cursor */ + sqlite3_stmt *stmt; + sqlite3_int64 current_row; /* the current row ID */ + int eof; /* the EOF marker */ +} VirtualFDOCursor; +typedef VirtualFDOCursor *VirtualFDOCursorPtr; + +static SqliteValuePtr +value_alloc (void) +{ +/* allocates and initialites a Value multitype */ + SqliteValuePtr p = malloc (sizeof (SqliteValue)); + p->Type = SQLITE_NULL; + p->Text = NULL; + p->Blob = NULL; + return p; +} + +static void +value_free (SqliteValuePtr p) +{ +/* freeing a Value multitype */ + if (!p) + return; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + free (p); +} + +static void +value_set_null (SqliteValuePtr p) +{ +/* setting a NULL value to the multitype */ + if (!p) + return; + p->Type = SQLITE_NULL; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + p->Text = NULL; + p->Blob = NULL; +} + +static void +value_set_int (SqliteValuePtr p, sqlite3_int64 value) +{ +/* setting an INT value to the multitype */ + if (!p) + return; + p->Type = SQLITE_INTEGER; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + p->Text = NULL; + p->Blob = NULL; + p->IntValue = value; +} + +static void +value_set_double (SqliteValuePtr p, double value) +{ +/* setting a DOUBLE value to the multitype */ + if (!p) + return; + p->Type = SQLITE_FLOAT; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + p->Text = NULL; + p->Blob = NULL; + p->DoubleValue = value; +} + +static void +value_set_text (SqliteValuePtr p, const char *value, int size) +{ +/* setting a TEXT value to the multitype */ + if (!p) + return; + p->Type = SQLITE_TEXT; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + p->Blob = NULL; + p->Text = malloc (size); + memcpy (p->Text, value, size); + p->Size = size; +} + +static void +value_set_blob (SqliteValuePtr p, const unsigned char *value, int size) +{ +/* setting a BLOB value to the multitype */ + if (!p) + return; + p->Type = SQLITE_BLOB; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + p->Text = NULL; + p->Blob = malloc (size); + memcpy (p->Blob, value, size); + p->Size = size; +} + +static void +free_table (VirtualFDOPtr p_vt) +{ +/* memory cleanup; freeing the virtual table struct */ + int i; + if (!p_vt) + return; + if (p_vt->table) + sqlite3_free (p_vt->table); + if (p_vt->Column) + { + for (i = 0; i < p_vt->nColumns; i++) + { + if (*(p_vt->Column + i)) + sqlite3_free (*(p_vt->Column + i)); + } + sqlite3_free (p_vt->Column); + } + if (p_vt->Type) + { + for (i = 0; i < p_vt->nColumns; i++) + { + if (*(p_vt->Type + i)) + sqlite3_free (*(p_vt->Type + i)); + } + sqlite3_free (p_vt->Type); + } + if (p_vt->NotNull) + sqlite3_free (p_vt->NotNull); + if (p_vt->Value) + { + for (i = 0; i < p_vt->nColumns; i++) + { + if (*(p_vt->Value + i)) + value_free (*(p_vt->Value + i)); + } + sqlite3_free (p_vt->Value); + } + if (p_vt->GeoColumn) + { + for (i = 0; i < p_vt->nGeometries; i++) + { + if (*(p_vt->GeoColumn + i)) + sqlite3_free (*(p_vt->GeoColumn + i)); + } + sqlite3_free (p_vt->GeoColumn); + } + if (p_vt->Srid) + sqlite3_free (p_vt->Srid); + if (p_vt->GeoType) + sqlite3_free (p_vt->GeoType); + if (p_vt->Format) + sqlite3_free (p_vt->Format); + if (p_vt->CoordDimensions) + sqlite3_free (p_vt->CoordDimensions); + sqlite3_free (p_vt); +} + + +static void +vfdoOutWkt3D (gaiaOutBufferPtr out_buf, gaiaGeomCollPtr geom) +{ +/* prints the GEOS-WKT-3D representation of current geometry */ + int pts = 0; + int lns = 0; + int pgs = 0; + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + if (!geom) + return; + point = geom->FirstPoint; + while (point) + { + /* counting how many POINTs are there */ + pts++; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* counting how many LINESTRINGs are there */ + lns++; + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* counting how many POLYGONs are there */ + pgs++; + polyg = polyg->Next; + } + if ((pts + lns + pgs) == 1 + && (geom->DeclaredType == GAIA_POINT + || geom->DeclaredType == GAIA_LINESTRING + || geom->DeclaredType == GAIA_POLYGON)) + { + /* we have only one elementary geometry */ + point = geom->FirstPoint; + while (point) + { + /* processing POINT */ + gaiaAppendToOutBuffer (out_buf, "POINT ("); + gaiaOutPointZ (out_buf, point); + gaiaAppendToOutBuffer (out_buf, ")"); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* processing LINESTRING */ + gaiaAppendToOutBuffer (out_buf, "LINESTRING ("); + gaiaOutLinestringZ (out_buf, line); + gaiaAppendToOutBuffer (out_buf, ")"); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* processing POLYGONZ */ + gaiaAppendToOutBuffer (out_buf, "POLYGON ("); + gaiaOutPolygonZ (out_buf, polyg); + gaiaAppendToOutBuffer (out_buf, ")"); + polyg = polyg->Next; + } + } + else + { + /* we have some kind of complex geometry */ + if (pts > 0 && lns == 0 && pgs == 0 + && geom->DeclaredType == GAIA_MULTIPOINT) + { + /* some kind of MULTIPOINT */ + gaiaAppendToOutBuffer (out_buf, "MULTIPOINT ("); + point = geom->FirstPoint; + while (point) + { + if (point != geom->FirstPoint) + gaiaAppendToOutBuffer (out_buf, ", "); + gaiaOutPointZ (out_buf, point); + point = point->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (pts == 0 && lns > 0 && pgs == 0 + && geom->DeclaredType == GAIA_MULTILINESTRING) + { + /* some kind of MULTILINESTRING */ + gaiaAppendToOutBuffer (out_buf, "MULTILINESTRING ("); + line = geom->FirstLinestring; + while (line) + { + if (line != geom->FirstLinestring) + gaiaAppendToOutBuffer (out_buf, ", ("); + else + gaiaAppendToOutBuffer (out_buf, "("); + gaiaOutLinestringZ (out_buf, line); + gaiaAppendToOutBuffer (out_buf, ")"); + line = line->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + else if (pts == 0 && lns == 0 && pgs > 0 + && geom->DeclaredType == GAIA_MULTIPOLYGON) + { + /* some kind of MULTIPOLYGON */ + gaiaAppendToOutBuffer (out_buf, "MULTIPOLYGON ("); + polyg = geom->FirstPolygon; + while (polyg) + { + if (polyg != geom->FirstPolygon) + gaiaAppendToOutBuffer (out_buf, ", ("); + else + gaiaAppendToOutBuffer (out_buf, "("); + gaiaOutPolygonZ (out_buf, polyg); + gaiaAppendToOutBuffer (out_buf, ")"); + polyg = polyg->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + else + { + /* some kind of GEOMETRYCOLLECTION */ + int ie = 0; + gaiaAppendToOutBuffer (out_buf, "GEOMETRYCOLLECTION ("); + point = geom->FirstPoint; + while (point) + { + /* processing POINTs */ + if (ie > 0) + gaiaAppendToOutBuffer (out_buf, ", "); + ie++; + gaiaAppendToOutBuffer (out_buf, "POINT ("); + gaiaOutPointZ (out_buf, point); + gaiaAppendToOutBuffer (out_buf, ")"); + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* processing LINESTRINGs */ + if (ie > 0) + gaiaAppendToOutBuffer (out_buf, ", "); + ie++; + gaiaAppendToOutBuffer (out_buf, "LINESTRING ("); + gaiaOutLinestringZ (out_buf, line); + gaiaAppendToOutBuffer (out_buf, ")"); + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* processing POLYGONs */ + if (ie > 0) + gaiaAppendToOutBuffer (out_buf, ", "); + ie++; + gaiaAppendToOutBuffer (out_buf, "POLYGON ("); + gaiaOutPolygonZ (out_buf, polyg); + gaiaAppendToOutBuffer (out_buf, ")"); + polyg = polyg->Next; + } + gaiaAppendToOutBuffer (out_buf, ")"); + } + } +} + +static void +vfdoToWkb3D (gaiaGeomCollPtr geom, unsigned char **result, int *size) +{ +/* builds the GEOS-WKB-3D representation for this GEOMETRY */ + int ib; + int iv; + double x; + double y; + double z = 0.0; + double m = 0.0; + int entities = 0; + int n_points = 0; + int n_linestrings = 0; + int n_polygons = 0; + int type; + unsigned char *ptr; + gaiaPointPtr pt; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + gaiaPointPtr point = NULL; + gaiaLinestringPtr line = NULL; + gaiaPolygonPtr polyg = NULL; + int endian_arch = gaiaEndianArch (); + gaiaMbrGeometry (geom); +/* how many entities, and of what kind, do we have ? */ + pt = geom->FirstPoint; + while (pt) + { + point = pt; + entities++; + n_points++; + pt = pt->Next; + } + ln = geom->FirstLinestring; + while (ln) + { + line = ln; + entities++; + n_linestrings++; + ln = ln->Next; + } + pg = geom->FirstPolygon; + while (pg) + { + polyg = pg; + entities++; + n_polygons++; + pg = pg->Next; + } + *size = 0; + *result = NULL; + if (n_points == 0 && n_polygons == 0 && n_linestrings == 0) + return; +/* ok, we can determine the geometry class */ + if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTIPOINT) + type = GAIA_GEOSWKB_MULTIPOINTZ; + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ; + else + type = GAIA_GEOSWKB_POINTZ; + } + else if (n_points > 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ; + else + type = GAIA_GEOSWKB_MULTIPOINTZ; + } + else if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTILINESTRING) + type = GAIA_GEOSWKB_MULTILINESTRINGZ; + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ; + else + type = GAIA_GEOSWKB_LINESTRINGZ; + } + else if (n_points == 0 && n_linestrings > 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ; + else + type = GAIA_GEOSWKB_MULTILINESTRINGZ; + } + else if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) + { + if (geom->DeclaredType == GAIA_MULTIPOLYGON) + type = GAIA_GEOSWKB_MULTIPOLYGONZ; + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ; + else + type = GAIA_GEOSWKB_POLYGONZ; + } + else if (n_points == 0 && n_linestrings == 0 && n_polygons > 1) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + type = GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ; + else + type = GAIA_GEOSWKB_MULTIPOLYGONZ; + } + else + type = GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ; +/* and now we compute the size of WKB */ + *size = 5; /* header size */ + if (type == GAIA_GEOSWKB_MULTIPOINTZ + || type == GAIA_GEOSWKB_MULTILINESTRINGZ + || type == GAIA_GEOSWKB_MULTIPOLYGONZ + || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) + *size += 4; + point = geom->FirstPoint; + while (point) + { + if (type == GAIA_GEOSWKB_MULTIPOINTZ + || type == GAIA_GEOSWKB_MULTILINESTRINGZ + || type == GAIA_GEOSWKB_MULTIPOLYGONZ + || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) + *size += 5; + *size += (sizeof (double) * 3); /* three doubles for each POINT */ + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + if (type == GAIA_GEOSWKB_MULTIPOINTZ + || type == GAIA_GEOSWKB_MULTILINESTRINGZ + || type == GAIA_GEOSWKB_MULTIPOLYGONZ + || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) + *size += 5; + *size += (4 + ((sizeof (double) * 3) * line->Points)); /* # points + [x,y,z] for each vertex */ + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + if (type == GAIA_GEOSWKB_MULTIPOINTZ + || type == GAIA_GEOSWKB_MULTILINESTRINGZ + || type == GAIA_GEOSWKB_MULTIPOLYGONZ + || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) + *size += 5; + rng = polyg->Exterior; + *size += (8 + ((sizeof (double) * 3) * rng->Points)); /* # rings + # points + [x,y,z] array - exterior ring */ + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + *size += (4 + ((sizeof (double) * 3) * rng->Points)); /* # points + [x,y,z] array - interior ring */ + } + polyg = polyg->Next; + } + *result = malloc (*size); + ptr = *result; +/* and finally we build the WKB */ + *ptr = 0x01; /* little endian byte order */ + gaiaExport32 (ptr + 1, type, 1, endian_arch); /* the main CLASS TYPE */ + ptr += 5; + if (type == GAIA_GEOSWKB_MULTIPOINTZ + || type == GAIA_GEOSWKB_MULTILINESTRINGZ + || type == GAIA_GEOSWKB_MULTIPOLYGONZ + || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) + { + gaiaExport32 (ptr, entities, 1, endian_arch); /* it's a collection; # entities */ + ptr += 4; + } + point = geom->FirstPoint; + while (point) + { + if (type == GAIA_GEOSWKB_MULTIPOINTZ + || type == GAIA_GEOMETRYCOLLECTIONZ) + { + *ptr = 0x01; + /* it's a collection: the CLASS TYPE for this element */ + gaiaExport32 (ptr + 1, GAIA_GEOSWKB_POINTZ, 1, endian_arch); + ptr += 5; + } + gaiaExport64 (ptr, point->X, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 8, point->Y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 16, point->Z, 1, endian_arch); /* Z */ + ptr += 24; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + if (type == GAIA_GEOSWKB_MULTILINESTRINGZ + || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) + { + *ptr = 0x01; + /* it's a collection: the CLASS TYPE for this element */ + gaiaExport32 (ptr + 1, GAIA_GEOSWKB_LINESTRINGZ, 1, + endian_arch); + ptr += 5; + } + gaiaExport32 (ptr, line->Points, 1, endian_arch); /* # points */ + ptr += 4; + for (iv = 0; iv < line->Points; iv++) + { + z = 0.0; + m = 0.0; + if (line->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (line->Coords, iv, &x, &y, &z); + } + else if (line->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (line->Coords, iv, &x, &y, &m); + } + else if (line->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (line->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (line->Coords, iv, &x, &y); + } + gaiaExport64 (ptr, x, 1, endian_arch); /* X */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y */ + gaiaExport64 (ptr + 16, z, 1, endian_arch); /* Z */ + ptr += 24; + } + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + if (type == GAIA_GEOSWKB_MULTIPOLYGONZ + || type == GAIA_GEOSWKB_GEOMETRYCOLLECTIONZ) + { + *ptr = 0x01; + /* it's a collection: the CLASS TYPE for this element */ + gaiaExport32 (ptr + 1, GAIA_GEOSWKB_POLYGONZ, 1, endian_arch); + ptr += 5; + } + gaiaExport32 (ptr, polyg->NumInteriors + 1, 1, endian_arch); /* # rings */ + rng = polyg->Exterior; + gaiaExport32 (ptr + 4, rng->Points, 1, endian_arch); /* # points - exterior ring */ + ptr += 8; + for (iv = 0; iv < rng->Points; iv++) + { + z = 0.0; + m = 0.0; + if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + gaiaExport64 (ptr, x, 1, endian_arch); /* X - exterior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - exterior ring */ + gaiaExport64 (ptr + 16, z, 1, endian_arch); /* Z - exterior ring */ + ptr += 24; + } + for (ib = 0; ib < polyg->NumInteriors; ib++) + { + rng = polyg->Interiors + ib; + gaiaExport32 (ptr, rng->Points, 1, endian_arch); /* # points - interior ring */ + ptr += 4; + for (iv = 0; iv < rng->Points; iv++) + { + z = 0.0; + m = 0.0; + if (rng->DimensionModel == GAIA_XY_Z) + { + gaiaGetPointXYZ (rng->Coords, iv, &x, &y, &z); + } + else if (rng->DimensionModel == GAIA_XY_M) + { + gaiaGetPointXYM (rng->Coords, iv, &x, &y, &m); + } + else if (rng->DimensionModel == GAIA_XY_Z_M) + { + gaiaGetPointXYZM (rng->Coords, iv, &x, &y, &z, &m); + } + else + { + gaiaGetPoint (rng->Coords, iv, &x, &y); + } + gaiaExport64 (ptr, x, 1, endian_arch); /* X - interior ring */ + gaiaExport64 (ptr + 8, y, 1, endian_arch); /* Y - interior ring */ + gaiaExport64 (ptr + 16, z, 1, endian_arch); /* Z - exterior ring */ + ptr += 24; + } + } + polyg = polyg->Next; + } +} + +static int +vfdoGeometryType (gaiaGeomCollPtr geom) +{ +/* determinates the Class for this geometry */ + gaiaPointPtr point; + gaiaLinestringPtr line; + gaiaPolygonPtr polyg; + int n_points = 0; + int n_linestrings = 0; + int n_polygons = 0; + if (!geom) + return GAIA_UNKNOWN; + point = geom->FirstPoint; + while (point) + { + /* counts how many points are there */ + n_points++; + point = point->Next; + } + line = geom->FirstLinestring; + while (line) + { + /* counts how many linestrings are there */ + n_linestrings++; + line = line->Next; + } + polyg = geom->FirstPolygon; + while (polyg) + { + /* counts how many polygons are there */ + n_polygons++; + polyg = polyg->Next; + } + if (n_points == 0 && n_linestrings == 0 && n_polygons == 0) + return GAIA_UNKNOWN; + if (n_points == 1 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTIPOINT) + return GAIA_MULTIPOINT; + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + return GAIA_GEOMETRYCOLLECTION; + else + return GAIA_POINT; + } + if (n_points > 0 && n_linestrings == 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + return GAIA_GEOMETRYCOLLECTION; + else + return GAIA_MULTIPOINT; + } + if (n_points == 0 && n_linestrings == 1 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_MULTILINESTRING) + return GAIA_MULTILINESTRING; + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + return GAIA_GEOMETRYCOLLECTION; + else + return GAIA_LINESTRING; + } + if (n_points == 0 && n_linestrings > 0 && n_polygons == 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + return GAIA_GEOMETRYCOLLECTION; + else + return GAIA_MULTILINESTRING; + } + if (n_points == 0 && n_linestrings == 0 && n_polygons == 1) + { + if (geom->DeclaredType == GAIA_MULTIPOLYGON) + return GAIA_MULTIPOLYGON; + else if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + return GAIA_GEOMETRYCOLLECTION; + else + return GAIA_POLYGON; + } + if (n_points == 0 && n_linestrings == 0 && n_polygons > 0) + { + if (geom->DeclaredType == GAIA_GEOMETRYCOLLECTION) + return GAIA_GEOMETRYCOLLECTION; + else + return GAIA_MULTIPOLYGON; + } + return GAIA_GEOMETRYCOLLECTION; +} + +static int +vfdo_insert_row (VirtualFDOPtr p_vt, sqlite3_int64 * rowid, int argc, + sqlite3_value ** argv) +{ +/* trying to insert a row into FDO-OGR real-table */ + sqlite3_stmt *stmt; + int ret; + int i; + int ic; + int ig; + int geom_done; + int err_geom = 0; + int geom_constraint_err = 0; + char prefix[16]; + const char *text; + const unsigned char *blob; + gaiaOutBuffer out_buf; + gaiaOutBuffer sql_statement; + unsigned char *blob_wkb; + int size; + char *sql; + char buf[256]; + char *xname; + gaiaGeomCollPtr geom = NULL; + gaiaOutBufferInitialize (&sql_statement); + xname = gaiaDoubleQuotedSql (p_vt->table); + sql = sqlite3_mprintf ("INSERT INTO \"%s\" ", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + for (ic = 0; ic < p_vt->nColumns; ic++) + { + if (ic == 0) + strcpy (prefix, "("); + else + strcpy (prefix, ", "); + xname = gaiaDoubleQuotedSql (*(p_vt->Column + ic)); + sql = sqlite3_mprintf ("%s%s", prefix, xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + gaiaAppendToOutBuffer (&sql_statement, ") VALUES "); + for (ic = 0; ic < p_vt->nColumns; ic++) + { + if (ic == 0) + strcpy (prefix, "("); + else + strcpy (prefix, ", "); + sprintf (buf, "%s?", prefix); + gaiaAppendToOutBuffer (&sql_statement, buf); + } + gaiaAppendToOutBuffer (&sql_statement, ")"); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + ret = + sqlite3_prepare_v2 (p_vt->db, sql_statement.Buffer, + strlen (sql_statement.Buffer), &stmt, NULL); + else + ret = SQLITE_ERROR; + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + return SQLITE_ERROR; + for (i = 2; i < argc; i++) + { + geom_done = 0; + for (ig = 0; ig < p_vt->nGeometries; ig++) + { + if (strcasecmp + (*(p_vt->Column + i - 2), *(p_vt->GeoColumn + ig)) == 0) + { + /* this one is a Geometry column */ + if (sqlite3_value_type (argv[i]) == SQLITE_BLOB) + { + blob = sqlite3_value_blob (argv[i]); + size = sqlite3_value_bytes (argv[i]); + geom = gaiaFromSpatiaLiteBlobWkb (blob, size); + if (geom) + { + if (geom->Srid != *(p_vt->Srid + ig)) + { + /* SRID constraint violation */ + geom_constraint_err = 1; + goto error; + } + /* checking for TYPE constraint violation */ + if (vfdoGeometryType (geom) != + *(p_vt->GeoType + ig)) + { + /* Geometry TYPE constraint violation */ + geom_constraint_err = 1; + goto error; + } + switch (*(p_vt->Format + ig)) + { + case FDO_OGR_WKT: + gaiaOutBufferInitialize (&out_buf); + if (*(p_vt->CoordDimensions + ig) == + GAIA_XY_Z) + vfdoOutWkt3D (&out_buf, geom); + else + gaiaOutWkt (&out_buf, geom); + if (out_buf.Error == 0 + && out_buf.Buffer != NULL) + { + sqlite3_bind_text (stmt, i - 1, + out_buf.Buffer, + out_buf.WriteOffset, + free); + out_buf.Buffer = NULL; + gaiaOutBufferReset (&out_buf); + } + else + { + err_geom = 1; + goto error; + } + break; + case FDO_OGR_WKB: + if (*(p_vt->CoordDimensions + ig) == + GAIA_XY_Z) + vfdoToWkb3D (geom, &blob_wkb, + &size); + else + gaiaToWkb (geom, &blob_wkb, &size); + if (blob_wkb) + sqlite3_bind_blob (stmt, i - 1, + blob_wkb, size, + free); + else + { + err_geom = 1; + goto error; + } + break; + case FDO_OGR_FGF: + gaiaToFgf (geom, &blob_wkb, &size, + *(p_vt->CoordDimensions + + ig)); + if (blob_wkb) + sqlite3_bind_blob (stmt, i - 1, + blob_wkb, size, + free); + else + { + err_geom = 1; + goto error; + } + break; + case FDO_OGR_SPLITE: + gaiaToSpatiaLiteBlobWkb (geom, + &blob_wkb, + &size); + if (blob_wkb) + sqlite3_bind_blob (stmt, i - 1, + blob_wkb, size, + free); + else + { + err_geom = 1; + goto error; + } + break; + default: + err_geom = 1; + goto error; + break; + }; + } + else + { + err_geom = 1; + goto error; + } + } + else if (sqlite3_value_type (argv[i]) == SQLITE_NULL) + sqlite3_bind_null (stmt, i - 1); + else + { + err_geom = 1; + goto error; + } + geom_done = 1; + } + } + if (geom_done) + { + if (geom) + { + /* memory cleanup: Kashif Rasul 14 Jan 2010 */ + gaiaFreeGeomColl (geom); + geom = NULL; + } + continue; + } + switch (sqlite3_value_type (argv[i])) + { + case SQLITE_INTEGER: + sqlite3_bind_int64 (stmt, i - 1, sqlite3_value_int64 (argv[i])); + break; + case SQLITE_FLOAT: + sqlite3_bind_double (stmt, i - 1, + sqlite3_value_double (argv[i])); + break; + case SQLITE_TEXT: + text = (char *) sqlite3_value_text (argv[i]); + size = sqlite3_value_bytes (argv[i]); + sqlite3_bind_text (stmt, i - 1, text, size, SQLITE_STATIC); + break; + case SQLITE_BLOB: + blob = sqlite3_value_blob (argv[i]); + size = sqlite3_value_bytes (argv[i]); + sqlite3_bind_blob (stmt, i - 1, blob, size, SQLITE_STATIC); + break; + case SQLITE_NULL: + default: + sqlite3_bind_null (stmt, i - 1); + break; + }; + } + error: + if (geom) + { + /* memory cleanup: Kashif Rasul 14 Jan 2010 */ + gaiaFreeGeomColl (geom); + } + if (err_geom || geom_constraint_err) + { + sqlite3_finalize (stmt); + return SQLITE_CONSTRAINT; + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + sqlite3_finalize (stmt); + return ret; + } + sqlite3_finalize (stmt); + *rowid = sqlite3_last_insert_rowid (p_vt->db); + return SQLITE_OK; +} + +static int +vfdo_update_row (VirtualFDOPtr p_vt, sqlite3_int64 rowid, int argc, + sqlite3_value ** argv) +{ +/* trying to update a row in FDO-OGR real-table */ + sqlite3_stmt *stmt; + int ret; + int i; + int ic; + int ig; + int geom_done; + int err_geom = 0; + int geom_constraint_err = 0; + char prefix[16]; + const char *text; + const unsigned char *blob; + gaiaOutBuffer out_buf; + gaiaOutBuffer sql_statement; + unsigned char *blob_wkb; + int size; + char *sql; + char buf[256]; + char *xname; + gaiaGeomCollPtr geom; + gaiaOutBufferInitialize (&sql_statement); + xname = gaiaDoubleQuotedSql (p_vt->table); + sql = sqlite3_mprintf ("UPDATE \"%s\" SET", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + for (ic = 0; ic < p_vt->nColumns; ic++) + { + if (ic == 0) + strcpy (prefix, " "); + else + strcpy (prefix, ", "); + xname = gaiaDoubleQuotedSql (*(p_vt->Column + ic)); + sql = sqlite3_mprintf ("%s%s = ?", prefix, xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + sprintf (buf, " WHERE ROWID = " FRMT64, rowid); + gaiaAppendToOutBuffer (&sql_statement, buf); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + ret = + sqlite3_prepare_v2 (p_vt->db, sql_statement.Buffer, + strlen (sql_statement.Buffer), &stmt, NULL); + else + ret = SQLITE_ERROR; + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + return SQLITE_ERROR; + for (i = 2; i < argc; i++) + { + geom_done = 0; + for (ig = 0; ig < p_vt->nGeometries; ig++) + { + if (strcasecmp + (*(p_vt->Column + i - 2), *(p_vt->GeoColumn + ig)) == 0) + { + /* this one is a Geometry column */ + if (sqlite3_value_type (argv[i]) == SQLITE_BLOB) + { + blob = sqlite3_value_blob (argv[i]); + size = sqlite3_value_bytes (argv[i]); + geom = gaiaFromSpatiaLiteBlobWkb (blob, size); + if (geom) + { + if (geom->Srid != *(p_vt->Srid + ig)) + { + /* SRID constraint violation */ + geom_constraint_err = 1; + goto error; + } + /* checking for TYPE constraint violation */ + if (vfdoGeometryType (geom) != + *(p_vt->GeoType + ig)) + { + /* Geometry TYPE constraint violation */ + geom_constraint_err = 1; + goto error; + } + switch (*(p_vt->Format + ig)) + { + case FDO_OGR_WKT: + gaiaOutBufferInitialize (&out_buf); + if (*(p_vt->CoordDimensions + ig) == + GAIA_XY_Z) + vfdoOutWkt3D (&out_buf, geom); + else + gaiaOutWkt (&out_buf, geom); + if (out_buf.Error == 0 + && out_buf.Buffer != NULL) + { + sqlite3_bind_text (stmt, i - 1, + out_buf.Buffer, + out_buf.WriteOffset, + free); + out_buf.Buffer = NULL; + gaiaOutBufferReset (&out_buf); + } + else + { + err_geom = 1; + goto error; + } + break; + case FDO_OGR_WKB: + if (*(p_vt->CoordDimensions + ig) == + GAIA_XY_Z) + vfdoToWkb3D (geom, &blob_wkb, + &size); + else + gaiaToWkb (geom, &blob_wkb, &size); + if (blob_wkb) + sqlite3_bind_blob (stmt, i - 1, + blob_wkb, size, + free); + else + { + err_geom = 1; + goto error; + } + break; + case FDO_OGR_FGF: + gaiaToFgf (geom, &blob_wkb, &size, + *(p_vt->CoordDimensions + + ig)); + if (blob_wkb) + sqlite3_bind_blob (stmt, i - 1, + blob_wkb, size, + free); + else + { + err_geom = 1; + goto error; + } + break; + case FDO_OGR_SPLITE: + gaiaToSpatiaLiteBlobWkb (geom, + &blob_wkb, + &size); + if (blob_wkb) + sqlite3_bind_blob (stmt, i - 1, + blob_wkb, size, + free); + else + { + err_geom = 1; + goto error; + } + break; + default: + err_geom = 1; + goto error; + break; + }; + } + else + { + err_geom = 1; + goto error; + } + } + else if (sqlite3_value_type (argv[i]) == SQLITE_NULL) + sqlite3_bind_null (stmt, i - 1); + else + { + err_geom = 1; + goto error; + } + geom_done = 1; + } + } + if (geom_done) + { + gaiaFreeGeomColl (geom); + geom = NULL; + continue; + } + switch (sqlite3_value_type (argv[i])) + { + case SQLITE_INTEGER: + sqlite3_bind_int64 (stmt, i - 1, sqlite3_value_int64 (argv[i])); + break; + case SQLITE_FLOAT: + sqlite3_bind_double (stmt, i - 1, + sqlite3_value_double (argv[i])); + break; + case SQLITE_TEXT: + text = (char *) sqlite3_value_text (argv[i]); + size = sqlite3_value_bytes (argv[i]); + sqlite3_bind_text (stmt, i - 1, text, size, SQLITE_STATIC); + break; + case SQLITE_BLOB: + blob = sqlite3_value_blob (argv[i]); + size = sqlite3_value_bytes (argv[i]); + sqlite3_bind_blob (stmt, i - 1, blob, size, SQLITE_STATIC); + break; + case SQLITE_NULL: + default: + sqlite3_bind_null (stmt, i - 1); + break; + }; + } + error: + gaiaFreeGeomColl (geom); + if (err_geom || geom_constraint_err) + { + sqlite3_finalize (stmt); + return SQLITE_CONSTRAINT; + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + sqlite3_finalize (stmt); + return ret; + } + sqlite3_finalize (stmt); + return SQLITE_OK; +} + +static int +vfdo_delete_row (VirtualFDOPtr p_vt, sqlite3_int64 rowid) +{ +/* trying to delete a row from FDO-OGR real-table */ + char *sql_statement; + char dummy[256]; + int ret; + char *xname; + xname = gaiaDoubleQuotedSql (p_vt->table); + sprintf (dummy, FRMT64, rowid); + sql_statement = + sqlite3_mprintf ("DELETE FROM \"%s\" WHERE ROWID = %s", xname, dummy); + free (xname); + ret = sqlite3_exec (p_vt->db, sql_statement, NULL, NULL, NULL); + sqlite3_free (sql_statement); + return ret; +} + +char * +vfdo_convertWKT3D (const char *wkt) +{ +/* converting WKT 3D */ + char *out; + char *o; + const char *p = wkt; + int len = strlen (wkt); + int extra = 0; + while (*p != '\0') + { + if (strncasecmp (p, "POINT", 5) == 0) + { + p += 5; + extra++; + continue; + } + if (strncasecmp (p, "LINESTRING", 10) == 0) + { + p += 10; + extra++; + continue; + } + if (strncasecmp (p, "POLYGON", 7) == 0) + { + p += 7; + extra++; + continue; + } + if (strncasecmp (p, "MULTIPOINT", 10) == 0) + { + p += 10; + extra++; + continue; + } + if (strncasecmp (p, "MULTILINESTRING", 15) == 0) + { + p += 15; + extra++; + continue; + } + if (strncasecmp (p, "MULTIPOLYGON", 12) == 0) + { + p += 12; + extra++; + continue; + } + if (strncasecmp (p, "GEOMETRYCOLLECTION", 18) == 0) + { + p += 18; + extra++; + continue; + } + p++; + } + out = malloc (len + extra + 1); + o = out; + p = wkt; + while (*p != '\0') + { + if (strncasecmp (p, "POINT", 5) == 0) + { + strcpy (o, "POINTZ"); + o += 6; + p += 5; + continue; + } + if (strncasecmp (p, "LINESTRING", 10) == 0) + { + strcpy (o, "LINESTRINGZ"); + o += 11; + p += 10; + continue; + } + if (strncasecmp (p, "POLYGON", 7) == 0) + { + strcpy (o, "POLYGONZ"); + o += 8; + p += 7; + continue; + } + if (strncasecmp (p, "MULTIPOINT", 10) == 0) + { + strcpy (o, "MULTIPOINTZ"); + o += 11; + p += 10; + continue; + } + if (strncasecmp (p, "MULTILINESTRING", 15) == 0) + { + strcpy (o, "MULTILINESTRINGZ"); + o += 16; + p += 15; + continue; + } + if (strncasecmp (p, "MULTIPOLYGON", 12) == 0) + { + strcpy (o, "MULTIPOLYGONZ"); + o += 13; + p += 12; + continue; + } + if (strncasecmp (p, "GEOMETRYCOLLECTION", 18) == 0) + { + strcpy (o, "GEOMETRYCOLLECTIONZ"); + o += 19; + p += 18; + continue; + } + *o++ = *p++; + } + *o = '\0'; + return out; +} + +static void +vfdo_read_row (VirtualFDOCursorPtr cursor) +{ +/* trying to read a row from FDO-OGR real-table */ + sqlite3_stmt *stmt; + int ret; + int ic; + int ig; + unsigned char *wkt; + const char *text; + const unsigned char *blob; + unsigned char *xblob; + int size; + sqlite3_int64 pk; + int geom_done; + gaiaGeomCollPtr geom; + stmt = cursor->stmt; + sqlite3_bind_int64 (stmt, 1, cursor->current_row); + ret = sqlite3_step (stmt); + if (ret == SQLITE_ROW) + { + pk = sqlite3_column_int64 (stmt, 0); + for (ic = 0; ic < cursor->pVtab->nColumns; ic++) + { + /* fetching column values */ + geom_done = 0; + for (ig = 0; ig < cursor->pVtab->nGeometries; ig++) + { + if (strcasecmp + (*(cursor->pVtab->Column + ic), + *(cursor->pVtab->GeoColumn + ig)) == 0) + { + /* this one is a Geometry column */ + switch (*(cursor->pVtab->Format + ig)) + { + case FDO_OGR_WKT: + if (sqlite3_column_type (stmt, ic + 1) == + SQLITE_TEXT) + { + /* trying to parse a WKT Geometry */ + char delete_wkt = 0; + wkt = (unsigned char *) + sqlite3_column_text (stmt, ic + 1); + if (* + (cursor->pVtab->CoordDimensions + + ig) == GAIA_XY_Z) + { + wkt = (unsigned char *) + vfdo_convertWKT3D ((char *) + wkt); + if (wkt == NULL) + { + value_set_null (* + (cursor-> + pVtab-> + Value + + ic)); + continue; + } + delete_wkt = 1; + } + geom = gaiaParseWkt (wkt, -1); + if (delete_wkt) + free ((void *) wkt); + if (!geom) + value_set_null (* + (cursor->pVtab-> + Value + ic)); + else + { + geom->Srid = + *(cursor->pVtab->Srid + ig); + gaiaToSpatiaLiteBlobWkb (geom, + &xblob, + &size); + if (xblob) + { + value_set_blob (* + (cursor-> + pVtab-> + Value + + ic), xblob, + size); + free (xblob); + } + else + value_set_null (* + (cursor-> + pVtab-> + Value + ic)); + gaiaFreeGeomColl (geom); + } + } + else + value_set_null (* + (cursor->pVtab->Value + + ic)); + break; + case FDO_OGR_WKB: + if (sqlite3_column_type (stmt, ic + 1) == + SQLITE_BLOB) + { + /* trying to parse a WKB Geometry */ + blob = + sqlite3_column_blob (stmt, ic + 1); + size = + sqlite3_column_bytes (stmt, ic + 1); + geom = gaiaFromWkb (blob, size); + if (!geom) + value_set_null (* + (cursor->pVtab-> + Value + ic)); + else + { + geom->Srid = + *(cursor->pVtab->Srid + ig); + gaiaToSpatiaLiteBlobWkb (geom, + &xblob, + &size); + if (xblob) + { + value_set_blob (* + (cursor-> + pVtab-> + Value + + ic), xblob, + size); + free (xblob); + } + else + value_set_null (* + (cursor-> + pVtab-> + Value + ic)); + gaiaFreeGeomColl (geom); + } + } + else + value_set_null (* + (cursor->pVtab->Value + + ic)); + break; + case FDO_OGR_FGF: + if (sqlite3_column_type (stmt, ic + 1) == + SQLITE_BLOB) + { + /* trying to parse an FGF Geometry */ + blob = + sqlite3_column_blob (stmt, ic + 1); + size = + sqlite3_column_bytes (stmt, ic + 1); + geom = gaiaFromFgf (blob, size); + if (!geom) + value_set_null (* + (cursor->pVtab-> + Value + ic)); + else + { + geom->Srid = + *(cursor->pVtab->Srid + ig); + gaiaToSpatiaLiteBlobWkb (geom, + &xblob, + &size); + if (xblob) + { + value_set_blob (* + (cursor-> + pVtab-> + Value + + ic), xblob, + size); + free (xblob); + } + else + value_set_null (* + (cursor-> + pVtab-> + Value + ic)); + gaiaFreeGeomColl (geom); + } + } + else + value_set_null (* + (cursor->pVtab->Value + + ic)); + break; + case FDO_OGR_SPLITE: + if (sqlite3_column_type (stmt, ic + 1) == + SQLITE_BLOB) + { + /* trying to parse a SPATIALITE Geometry */ + blob = + sqlite3_column_blob (stmt, ic + 1); + size = + sqlite3_column_bytes (stmt, ic + 1); + value_set_blob (* + (cursor->pVtab->Value + + ic), blob, size); + } + else + value_set_null (* + (cursor->pVtab->Value + + ic)); + break; + default: + value_set_null (*(cursor->pVtab->Value + ic)); + break; + }; + geom_done = 1; + } + } + if (geom_done) + continue; + switch (sqlite3_column_type (stmt, ic + 1)) + { + case SQLITE_INTEGER: + value_set_int (*(cursor->pVtab->Value + ic), + sqlite3_column_int64 (stmt, ic + 1)); + break; + case SQLITE_FLOAT: + value_set_double (*(cursor->pVtab->Value + ic), + sqlite3_column_double (stmt, ic + 1)); + break; + case SQLITE_TEXT: + text = (char *) sqlite3_column_text (stmt, ic + 1); + size = sqlite3_column_bytes (stmt, ic + 1); + value_set_text (*(cursor->pVtab->Value + ic), text, size); + break; + case SQLITE_BLOB: + blob = sqlite3_column_blob (stmt, ic + 1); + size = sqlite3_column_bytes (stmt, ic + 1); + value_set_blob (*(cursor->pVtab->Value + ic), blob, size); + break; + case SQLITE_NULL: + default: + value_set_null (*(cursor->pVtab->Value + ic)); + break; + }; + } + } + else + { + /* an error occurred */ + cursor->eof = 1; + return; + } + cursor->eof = 0; + cursor->current_row = pk; +} + +static int +vfdo_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* creates the virtual table connected to some FDO-OGR table */ + char *vtable = NULL; + char *table = NULL; + int ret; + int i; + int len; + int n_rows; + int n_columns; + const char *col_name; + const char *col_type; + const char *format; + int coord_dimension; + int not_null; + int srid; + int type; + char **results; + char *sql; + char prefix[16]; + char *xname; + gaiaOutBuffer sql_statement; + VirtualFDOPtr p_vt = NULL; + if (pAux) + pAux = pAux; /* unused arg warning suppression */ + gaiaOutBufferInitialize (&sql_statement); +/* checking for table_name */ + if (argc == 4) + { + vtable = gaiaDequotedSql ((char *) argv[2]); + table = gaiaDequotedSql ((char *) argv[3]); + } + else + { + *pzErr = + sqlite3_mprintf + ("[VirtualFDO module] CREATE VIRTUAL: illegal arg list {table_name}\n"); + goto error; + } +/* retrieving the base table columns */ + xname = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (db, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto illegal; + if (n_rows >= 1) + { + p_vt = (VirtualFDOPtr) sqlite3_malloc (sizeof (VirtualFDO)); + if (!p_vt) + return SQLITE_NOMEM; + p_vt->db = db; + p_vt->nRef = 0; + p_vt->zErrMsg = NULL; + len = strlen (table); + p_vt->table = sqlite3_malloc (len + 1); + strcpy (p_vt->table, table); + p_vt->nColumns = n_rows; + p_vt->Column = sqlite3_malloc (sizeof (char *) * n_rows); + p_vt->Type = sqlite3_malloc (sizeof (char *) * n_rows); + p_vt->NotNull = sqlite3_malloc (sizeof (int) * n_rows); + p_vt->Value = sqlite3_malloc (sizeof (SqliteValuePtr) * n_rows); + for (i = 0; i < n_rows; i++) + { + *(p_vt->Column + i) = NULL; + *(p_vt->Type + i) = NULL; + *(p_vt->NotNull + i) = -1; + *(p_vt->Value + i) = value_alloc (); + } + p_vt->nGeometries = 0; + p_vt->GeoColumn = NULL; + p_vt->Srid = NULL; + p_vt->GeoType = NULL; + p_vt->Format = NULL; + p_vt->CoordDimensions = NULL; + for (i = 1; i <= n_rows; i++) + { + col_name = results[(i * n_columns) + 1]; + col_type = results[(i * n_columns) + 2]; + if (atoi (results[(i * n_columns) + 3]) == 0) + not_null = 0; + else + not_null = 1; + len = strlen (col_name); + *(p_vt->Column + (i - 1)) = sqlite3_malloc (len + 1); + strcpy (*(p_vt->Column + (i - 1)), col_name); + len = strlen (col_type); + *(p_vt->Type + (i - 1)) = sqlite3_malloc (len + 1); + strcpy (*(p_vt->Type + (i - 1)), col_type); + *(p_vt->NotNull + (i - 1)) = not_null; + } + sqlite3_free_table (results); + } + else + goto illegal; +/* retrieving the base table columns */ + sql = sqlite3_mprintf ("SELECT f_geometry_column, geometry_type, srid, " + "geometry_format, coord_dimension\n" + "FROM geometry_columns WHERE Upper(f_table_name) = Upper(%Q)", + table); + ret = sqlite3_get_table (db, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto illegal; + if (n_rows >= 1) + { + p_vt->nGeometries = n_rows; + p_vt->GeoColumn = sqlite3_malloc (sizeof (char *) * n_rows); + p_vt->Srid = sqlite3_malloc (sizeof (char *) * n_rows); + p_vt->GeoType = sqlite3_malloc (sizeof (int) * n_rows); + p_vt->Format = sqlite3_malloc (sizeof (int) * n_rows); + p_vt->CoordDimensions = sqlite3_malloc (sizeof (int) * n_rows); + for (i = 0; i < n_rows; i++) + { + *(p_vt->GeoColumn + i) = NULL; + *(p_vt->Srid + i) = -1; + *(p_vt->GeoType + i) = -1; + *(p_vt->Format + i) = FDO_OGR_NONE; + *(p_vt->CoordDimensions + i) = GAIA_XY; + } + for (i = 1; i <= n_rows; i++) + { + col_name = results[(i * n_columns) + 0]; + type = atoi (results[(i * n_columns) + 1]); + srid = atoi (results[(i * n_columns) + 2]); + format = results[(i * n_columns) + 3]; + coord_dimension = atoi (results[(i * n_columns) + 4]); + len = strlen (col_name); + *(p_vt->GeoColumn + (i - 1)) = sqlite3_malloc (len + 1); + strcpy (*(p_vt->GeoColumn + (i - 1)), col_name); + *(p_vt->GeoType + (i - 1)) = type; + *(p_vt->Srid + (i - 1)) = srid; + if (strcasecmp (format, "WKT") == 0) + *(p_vt->Format + (i - 1)) = FDO_OGR_WKT; + if (strcasecmp (format, "WKB") == 0) + *(p_vt->Format + (i - 1)) = FDO_OGR_WKB; + if (strcasecmp (format, "FGF") == 0) + *(p_vt->Format + (i - 1)) = FDO_OGR_FGF; + if (strcasecmp (format, "SPATIALITE") == 0) + *(p_vt->Format + (i - 1)) = FDO_OGR_SPLITE; + if (coord_dimension == 3) + *(p_vt->CoordDimensions + (i - 1)) = GAIA_XY_Z; + else if (coord_dimension == 4) + *(p_vt->CoordDimensions + (i - 1)) = GAIA_XY_Z_M; + else + *(p_vt->CoordDimensions + (i - 1)) = GAIA_XY; + } + sqlite3_free_table (results); + } + else + goto illegal; +/* preparing the COLUMNs for this VIRTUAL TABLE */ + xname = gaiaDoubleQuotedSql (vtable); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" ", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + for (i = 0; i < p_vt->nColumns; i++) + { + if (i == 0) + strcpy (prefix, "("); + else + strcpy (prefix, ", "); + xname = gaiaDoubleQuotedSql (*(p_vt->Column + i)); + if (*(p_vt->NotNull + i)) + sql = + sqlite3_mprintf ("%s%s %s NOT NULL", prefix, xname, + *(p_vt->Type + i)); + else + sql = + sqlite3_mprintf ("%s%s %s", prefix, xname, *(p_vt->Type + i)); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + gaiaAppendToOutBuffer (&sql_statement, ")"); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + { + if (sqlite3_declare_vtab (db, sql_statement.Buffer) != SQLITE_OK) + { + *pzErr = + sqlite3_mprintf + ("[VirtualFDO module] CREATE VIRTUAL: invalid SQL statement \"%s\"", + sql); + goto error; + } + gaiaOutBufferReset (&sql_statement); + } + else + goto error; + *ppVTab = (sqlite3_vtab *) p_vt; + free (vtable); + free (table); + return SQLITE_OK; + illegal: +/* something is going the wrong way */ + gaiaOutBufferReset (&sql_statement); + if (p_vt) + free_table (p_vt); + *pzErr = + sqlite3_mprintf + ("[VirtualFDO module] '%s' isn't a valid FDO-OGR Geometry table\n", + table); + error: + if (vtable) + free (vtable); + if (table) + free (table); + gaiaOutBufferReset (&sql_statement); + return SQLITE_ERROR; +} + +static int +vfdo_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* connects the virtual table to some shapefile - simply aliases vfdo_create() */ + return vfdo_create (db, pAux, argc, argv, ppVTab, pzErr); +} + +static int +vfdo_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIndex) +{ +/* best index selection */ + if (pVTab || pIndex) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vfdo_disconnect (sqlite3_vtab * pVTab) +{ +/* disconnects the virtual table */ + VirtualFDOPtr p_vt = (VirtualFDOPtr) pVTab; + free_table (p_vt); + return SQLITE_OK; +} + +static int +vfdo_destroy (sqlite3_vtab * pVTab) +{ +/* destroys the virtual table - simply aliases vfdo_disconnect() */ + return vfdo_disconnect (pVTab); +} + +static int +vfdo_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) +{ +/* opening a new cursor */ + sqlite3_stmt *stmt; + gaiaOutBuffer sql_statement; + int ret; + char *sql; + int ic; + char *xname; + VirtualFDOCursorPtr cursor = + (VirtualFDOCursorPtr) sqlite3_malloc (sizeof (VirtualFDOCursor)); + if (cursor == NULL) + return SQLITE_ERROR; + cursor->pVtab = (VirtualFDOPtr) pVTab; + gaiaOutBufferInitialize (&sql_statement); + gaiaAppendToOutBuffer (&sql_statement, "SELECT ROWID"); + for (ic = 0; ic < cursor->pVtab->nColumns; ic++) + { + value_set_null (*(cursor->pVtab->Value + ic)); + xname = gaiaDoubleQuotedSql (*(cursor->pVtab->Column + ic)); + sql = sqlite3_mprintf (",\"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + xname = gaiaDoubleQuotedSql (cursor->pVtab->table); + sql = sqlite3_mprintf (" FROM \"%s\" WHERE ROWID >= ?", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + ret = + sqlite3_prepare_v2 (cursor->pVtab->db, sql_statement.Buffer, + strlen (sql_statement.Buffer), &stmt, NULL); + else + ret = SQLITE_ERROR; + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + { + /* an error occurred */ + cursor->eof = 1; + return SQLITE_ERROR; + } + cursor->stmt = stmt; + cursor->current_row = LONG64_MIN; + cursor->eof = 0; + *ppCursor = (sqlite3_vtab_cursor *) cursor; + vfdo_read_row (cursor); + return SQLITE_OK; +} + +static int +vfdo_close (sqlite3_vtab_cursor * pCursor) +{ +/* closing the cursor */ + int ic; + VirtualFDOCursorPtr cursor = (VirtualFDOCursorPtr) pCursor; + for (ic = 0; ic < cursor->pVtab->nColumns; ic++) + value_set_null (*(cursor->pVtab->Value + ic)); + if (cursor->stmt) + sqlite3_finalize (cursor->stmt); + sqlite3_free (pCursor); + return SQLITE_OK; +} + +static int +vfdo_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, + int argc, sqlite3_value ** argv) +{ +/* setting up a cursor filter */ + if (pCursor || idxNum || idxStr || argc || argv) + pCursor = pCursor; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vfdo_next (sqlite3_vtab_cursor * pCursor) +{ +/* fetching next row from cursor */ + VirtualFDOCursorPtr cursor = (VirtualFDOCursorPtr) pCursor; + (cursor->current_row)++; + vfdo_read_row (cursor); + return SQLITE_OK; +} + +static int +vfdo_eof (sqlite3_vtab_cursor * pCursor) +{ +/* cursor EOF */ + VirtualFDOCursorPtr cursor = (VirtualFDOCursorPtr) pCursor; + return cursor->eof; +} + +static int +vfdo_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, + int column) +{ +/* fetching value for the Nth column */ + VirtualFDOCursorPtr cursor = (VirtualFDOCursorPtr) pCursor; + SqliteValuePtr value; + if (column >= 0 && column < cursor->pVtab->nColumns) + { + value = *(cursor->pVtab->Value + column); + switch (value->Type) + { + case SQLITE_INTEGER: + sqlite3_result_int64 (pContext, value->IntValue); + break; + case SQLITE_FLOAT: + sqlite3_result_double (pContext, value->DoubleValue); + break; + case SQLITE_TEXT: + sqlite3_result_text (pContext, value->Text, value->Size, + SQLITE_STATIC); + break; + case SQLITE_BLOB: + sqlite3_result_blob (pContext, value->Blob, value->Size, + SQLITE_STATIC); + break; + default: + sqlite3_result_null (pContext); + break; + }; + } + else + sqlite3_result_null (pContext); + return SQLITE_OK; +} + +static int +vfdo_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) +{ +/* fetching the ROWID */ + VirtualFDOCursorPtr cursor = (VirtualFDOCursorPtr) pCursor; + *pRowid = cursor->current_row; + return SQLITE_OK; +} + +static int +vfdo_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, + sqlite_int64 * pRowid) +{ +/* generic update [INSERT / UPDATE / DELETE */ + sqlite3_int64 rowid = 0; + int ret; + VirtualFDOPtr p_vt = (VirtualFDOPtr) pVTab; + if (argc == 1) + { + /* performing a DELETE */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + rowid = sqlite3_value_int64 (argv[0]); + ret = vfdo_delete_row (p_vt, rowid); + } + else + ret = SQLITE_MISMATCH; + } + else + { + if (sqlite3_value_type (argv[0]) == SQLITE_NULL) + { + /* performing an INSERT */ + ret = vfdo_insert_row (p_vt, &rowid, argc, argv); + if (ret == SQLITE_OK) + *pRowid = rowid; + } + else + { + /* performing an UPDATE */ + rowid = sqlite3_value_int64 (argv[0]); + ret = vfdo_update_row (p_vt, rowid, argc, argv); + } + } + return ret; +} + +static int +vfdo_begin (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vfdo_sync (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vfdo_commit (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vfdo_rollback (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +spliteVirtualFDOInit (sqlite3 * db) +{ + int rc = SQLITE_OK; + my_fdo_module.iVersion = 1; + my_fdo_module.xCreate = &vfdo_create; + my_fdo_module.xConnect = &vfdo_connect; + my_fdo_module.xBestIndex = &vfdo_best_index; + my_fdo_module.xDisconnect = &vfdo_disconnect; + my_fdo_module.xDestroy = &vfdo_destroy; + my_fdo_module.xOpen = &vfdo_open; + my_fdo_module.xClose = &vfdo_close; + my_fdo_module.xFilter = &vfdo_filter; + my_fdo_module.xNext = &vfdo_next; + my_fdo_module.xEof = &vfdo_eof; + my_fdo_module.xColumn = &vfdo_column; + my_fdo_module.xRowid = &vfdo_rowid; + my_fdo_module.xUpdate = &vfdo_update; + my_fdo_module.xBegin = &vfdo_begin; + my_fdo_module.xSync = &vfdo_sync; + my_fdo_module.xCommit = &vfdo_commit; + my_fdo_module.xRollback = &vfdo_rollback; + my_fdo_module.xFindFunction = NULL; + sqlite3_create_module_v2 (db, "VirtualFDO", &my_fdo_module, NULL, 0); + return rc; +} + +SPATIALITE_PRIVATE int +virtualfdo_extension_init (void *xdb) +{ + sqlite3 *db = (sqlite3 *) xdb; + return spliteVirtualFDOInit (db); +} diff --git a/src/spatialite/src/spatialite/virtualgpkg.c b/src/spatialite/src/spatialite/virtualgpkg.c new file mode 100644 index 0000000..d1cbe04 --- /dev/null +++ b/src/spatialite/src/spatialite/virtualgpkg.c @@ -0,0 +1,1077 @@ +/* + + virtualgpkg.c -- SQLite3 extension [VIRTUAL TABLE accessing GPKG tables] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2014 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include + +#include +#include +#include +#include + +/* 64 bit integer: portable format for printf() */ +#if defined(_WIN32) && !defined(__MINGW32__) +#define FRMT64 "%I64d" +#else +#define FRMT64 "%lld" +#endif + +#if defined(_WIN32) && !defined(__MINGW32__) +#define LONG64_MAX _I64_MAX +#define LONG64_MIN _I64_MIN +#else +#define LONG64_MAX 9223372036854775807LL +#define LONG64_MIN (-LONG64_MAX + 1) +#endif + +#ifdef ENABLE_GEOPACKAGE /* only if GeoPackage support is enabled */ + +struct sqlite3_module my_gpkg_module; + +typedef struct SqliteValue +{ +/* a multitype storing a column value */ + int Type; + sqlite3_int64 IntValue; + double DoubleValue; + char *Text; + unsigned char *Blob; + int Size; +} SqliteValue; +typedef SqliteValue *SqliteValuePtr; + +typedef struct VirtualGPKGStruct +{ +/* extends the sqlite3_vtab struct */ + const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ + int nRef; /* # references: USED INTERNALLY BY SQLITE */ + char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ + sqlite3 *db; /* the sqlite db holding the virtual table */ + char *table; /* the real-table name */ + int nColumns; /* the # columns into the table */ + char **Column; /* the name for each column */ + char **Type; /* the type for each column */ + int *NotNull; /* NotNull clause for each column */ + SqliteValuePtr *Value; /* the current-row value for each column */ + char *GeoColumn; /* name of the Geometry column */ + int Srid; /* SRID of the Geometry column */ + int GeoType; /* Type of the Geometry column */ +} VirtualGPKG; +typedef VirtualGPKG *VirtualGPKGPtr; + +typedef struct VirtualGPKGCursorStruct +{ +/* extends the sqlite3_vtab_cursor struct */ + VirtualGPKGPtr pVtab; /* Virtual table of this cursor */ + sqlite3_stmt *stmt; + sqlite3_int64 current_row; /* the current row ID */ + int eof; /* the EOF marker */ +} VirtualGPKGCursor; +typedef VirtualGPKGCursor *VirtualGPKGCursorPtr; + +static SqliteValuePtr +value_alloc (void) +{ +/* allocates and initialites a Value multitype */ + SqliteValuePtr p = malloc (sizeof (SqliteValue)); + p->Type = SQLITE_NULL; + p->Text = NULL; + p->Blob = NULL; + return p; +} + +static void +value_free (SqliteValuePtr p) +{ +/* freeing a Value multitype */ + if (!p) + return; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + free (p); +} + +static void +value_set_null (SqliteValuePtr p) +{ +/* setting a NULL value to the multitype */ + if (!p) + return; + p->Type = SQLITE_NULL; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + p->Text = NULL; + p->Blob = NULL; +} + +static void +value_set_int (SqliteValuePtr p, sqlite3_int64 value) +{ +/* setting an INT value to the multitype */ + if (!p) + return; + p->Type = SQLITE_INTEGER; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + p->Text = NULL; + p->Blob = NULL; + p->IntValue = value; +} + +static void +value_set_double (SqliteValuePtr p, double value) +{ +/* setting a DOUBLE value to the multitype */ + if (!p) + return; + p->Type = SQLITE_FLOAT; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + p->Text = NULL; + p->Blob = NULL; + p->DoubleValue = value; +} + +static void +value_set_text (SqliteValuePtr p, const char *value, int size) +{ +/* setting a TEXT value to the multitype */ + if (!p) + return; + p->Type = SQLITE_TEXT; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + p->Blob = NULL; + p->Text = malloc (size); + memcpy (p->Text, value, size); + p->Size = size; +} + +static void +value_set_blob (SqliteValuePtr p, const unsigned char *value, int size) +{ +/* setting a BLOB value to the multitype */ + if (!p) + return; + p->Type = SQLITE_BLOB; + if (p->Text) + free (p->Text); + if (p->Blob) + free (p->Blob); + p->Text = NULL; + p->Blob = malloc (size); + memcpy (p->Blob, value, size); + p->Size = size; +} + +static void +vgpkg_read_row (VirtualGPKGCursorPtr cursor) +{ +/* trying to read a row from GPKG real-table */ + sqlite3_stmt *stmt; + int ret; + int ic; + const char *text; + const unsigned char *blob; + int size; + sqlite3_int64 pk; + stmt = cursor->stmt; + sqlite3_bind_int64 (stmt, 1, cursor->current_row); + ret = sqlite3_step (stmt); + if (ret == SQLITE_ROW) + { + pk = sqlite3_column_int64 (stmt, 0); + for (ic = 0; ic < cursor->pVtab->nColumns; ic++) + { + /* fetching column values */ + switch (sqlite3_column_type (stmt, ic + 1)) + { + case SQLITE_INTEGER: + value_set_int (*(cursor->pVtab->Value + ic), + sqlite3_column_int64 (stmt, ic + 1)); + break; + case SQLITE_FLOAT: + value_set_double (*(cursor->pVtab->Value + ic), + sqlite3_column_double (stmt, ic + 1)); + break; + case SQLITE_TEXT: + text = (char *) sqlite3_column_text (stmt, ic + 1); + size = sqlite3_column_bytes (stmt, ic + 1); + value_set_text (*(cursor->pVtab->Value + ic), text, size); + break; + case SQLITE_BLOB: + blob = sqlite3_column_blob (stmt, ic + 1); + size = sqlite3_column_bytes (stmt, ic + 1); + value_set_blob (*(cursor->pVtab->Value + ic), blob, size); + break; + case SQLITE_NULL: + default: + value_set_null (*(cursor->pVtab->Value + ic)); + break; + }; + } + } + else + { + /* an error occurred */ + cursor->eof = 1; + return; + } + cursor->eof = 0; + cursor->current_row = pk; +} + +static int +vgpkg_insert_row (VirtualGPKGPtr p_vt, sqlite3_int64 * rowid, int argc, + sqlite3_value ** argv) +{ +/* trying to insert a row into GPKG real-table */ + sqlite3_stmt *stmt; + int ret; + int i; + int ic; + char prefix[16]; + const char *text; + const unsigned char *blob; + gaiaOutBuffer sql_statement; + int size; + char *sql; + char buf[256]; + char *xname; + gaiaOutBufferInitialize (&sql_statement); + xname = gaiaDoubleQuotedSql (p_vt->table); + sql = sqlite3_mprintf ("INSERT INTO \"%s\" ", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + for (ic = 0; ic < p_vt->nColumns; ic++) + { + if (ic == 0) + strcpy (prefix, "("); + else + strcpy (prefix, ", "); + xname = gaiaDoubleQuotedSql (*(p_vt->Column + ic)); + sql = sqlite3_mprintf ("%s%s", prefix, xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + gaiaAppendToOutBuffer (&sql_statement, ") VALUES "); + for (ic = 0; ic < p_vt->nColumns; ic++) + { + if (ic == 0) + strcpy (prefix, "("); + else + strcpy (prefix, ", "); + if (strcasecmp (*(p_vt->Column + ic), p_vt->GeoColumn) == 0) + { + /* this is the geometry column */ + sql = sqlite3_mprintf ("%sAsGPB(?)", prefix); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + else + { + sprintf (buf, "%s?", prefix); + gaiaAppendToOutBuffer (&sql_statement, buf); + } + } + gaiaAppendToOutBuffer (&sql_statement, ")"); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + ret = + sqlite3_prepare_v2 (p_vt->db, sql_statement.Buffer, + strlen (sql_statement.Buffer), &stmt, NULL); + else + ret = SQLITE_ERROR; + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + return SQLITE_ERROR; + for (i = 2; i < argc; i++) + { + switch (sqlite3_value_type (argv[i])) + { + case SQLITE_INTEGER: + sqlite3_bind_int64 (stmt, i - 1, sqlite3_value_int64 (argv[i])); + break; + case SQLITE_FLOAT: + sqlite3_bind_double (stmt, i - 1, + sqlite3_value_double (argv[i])); + break; + case SQLITE_TEXT: + text = (char *) sqlite3_value_text (argv[i]); + size = sqlite3_value_bytes (argv[i]); + sqlite3_bind_text (stmt, i - 1, text, size, SQLITE_STATIC); + break; + case SQLITE_BLOB: + blob = sqlite3_value_blob (argv[i]); + size = sqlite3_value_bytes (argv[i]); + sqlite3_bind_blob (stmt, i - 1, blob, size, SQLITE_STATIC); + break; + case SQLITE_NULL: + default: + sqlite3_bind_null (stmt, i - 1); + break; + }; + } + sqlite3_finalize (stmt); + *rowid = sqlite3_last_insert_rowid (p_vt->db); + return SQLITE_OK; +} + +static int +vgpkg_update_row (VirtualGPKGPtr p_vt, sqlite3_int64 rowid, int argc, + sqlite3_value ** argv) +{ +/* trying to update a row in GPKG real-table */ + sqlite3_stmt *stmt; + int ret; + int i; + int ic; + char prefix[16]; + const char *text; + const unsigned char *blob; + gaiaOutBuffer sql_statement; + int size; + char *sql; + char buf[256]; + char *xname; + gaiaOutBufferInitialize (&sql_statement); + xname = gaiaDoubleQuotedSql (p_vt->table); + sql = sqlite3_mprintf ("UPDATE \"%s\" SET", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + for (ic = 0; ic < p_vt->nColumns; ic++) + { + if (ic == 0) + strcpy (prefix, " "); + else + strcpy (prefix, ", "); + xname = gaiaDoubleQuotedSql (*(p_vt->Column + ic)); + if (strcasecmp (*(p_vt->Column + ic), p_vt->GeoColumn) == 0) + { + /* this is the geometry column */ + sql = sqlite3_mprintf ("%s%s = AsGPB(?)", prefix, xname); + } + else + sql = sqlite3_mprintf ("%s%s = ?", prefix, xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + sprintf (buf, " WHERE ROWID = " FRMT64, rowid); + gaiaAppendToOutBuffer (&sql_statement, buf); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + ret = + sqlite3_prepare_v2 (p_vt->db, sql_statement.Buffer, + strlen (sql_statement.Buffer), &stmt, NULL); + else + ret = SQLITE_ERROR; + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + return SQLITE_ERROR; + for (i = 2; i < argc; i++) + { + switch (sqlite3_value_type (argv[i])) + { + case SQLITE_INTEGER: + sqlite3_bind_int64 (stmt, i - 1, sqlite3_value_int64 (argv[i])); + break; + case SQLITE_FLOAT: + sqlite3_bind_double (stmt, i - 1, + sqlite3_value_double (argv[i])); + break; + case SQLITE_TEXT: + text = (char *) sqlite3_value_text (argv[i]); + size = sqlite3_value_bytes (argv[i]); + sqlite3_bind_text (stmt, i - 1, text, size, SQLITE_STATIC); + break; + case SQLITE_BLOB: + blob = sqlite3_value_blob (argv[i]); + size = sqlite3_value_bytes (argv[i]); + sqlite3_bind_blob (stmt, i - 1, blob, size, SQLITE_STATIC); + break; + case SQLITE_NULL: + default: + sqlite3_bind_null (stmt, i - 1); + break; + }; + } + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + sqlite3_finalize (stmt); + return ret; + } + sqlite3_finalize (stmt); + return SQLITE_OK; +} + +static int +vgpkg_delete_row (VirtualGPKGPtr p_vt, sqlite3_int64 rowid) +{ +/* trying to delete a row from GPKG real-table */ + char *sql_statement; + char dummy[256]; + int ret; + char *xname; + xname = gaiaDoubleQuotedSql (p_vt->table); + sprintf (dummy, FRMT64, rowid); + sql_statement = + sqlite3_mprintf ("DELETE FROM \"%s\" WHERE ROWID = %s", xname, dummy); + free (xname); + ret = sqlite3_exec (p_vt->db, sql_statement, NULL, NULL, NULL); + sqlite3_free (sql_statement); + return ret; +} + +static void +free_table (VirtualGPKGPtr p_vt) +{ +/* memory cleanup; freeing the virtual table struct */ + int i; + if (!p_vt) + return; + if (p_vt->table) + sqlite3_free (p_vt->table); + if (p_vt->Column) + { + for (i = 0; i < p_vt->nColumns; i++) + { + if (*(p_vt->Column + i)) + sqlite3_free (*(p_vt->Column + i)); + } + sqlite3_free (p_vt->Column); + } + if (p_vt->Type) + { + for (i = 0; i < p_vt->nColumns; i++) + { + if (*(p_vt->Type + i)) + sqlite3_free (*(p_vt->Type + i)); + } + sqlite3_free (p_vt->Type); + } + if (p_vt->NotNull) + sqlite3_free (p_vt->NotNull); + if (p_vt->Value) + { + for (i = 0; i < p_vt->nColumns; i++) + { + if (*(p_vt->Value + i)) + value_free (*(p_vt->Value + i)); + } + sqlite3_free (p_vt->Value); + } + if (p_vt->GeoColumn) + sqlite3_free (p_vt->GeoColumn); + sqlite3_free (p_vt); +} + +static int +vgpkg_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* creates the virtual table connected to some GPKG table */ + char *vtable = NULL; + char *table = NULL; + int ret; + int i; + int len; + int n_rows; + int n_columns; + const char *col_name; + const char *col_type; + int not_null; + const char *type; + int has_z; + int has_m; + char **results; + char *sql; + char prefix[16]; + char *xname; + gaiaOutBuffer sql_statement; + VirtualGPKGPtr p_vt = NULL; + if (pAux) + pAux = pAux; /* unused arg warning suppression */ + gaiaOutBufferInitialize (&sql_statement); +/* checking for table_name */ + if (argc == 4) + { + vtable = gaiaDequotedSql ((char *) argv[2]); + table = gaiaDequotedSql ((char *) argv[3]); + } + else + { + *pzErr = + sqlite3_mprintf + ("[VirtualGPKG module] CREATE VIRTUAL: illegal arg list {table_name}\n"); + goto error; + } +/* retrieving the base table columns */ + xname = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (db, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto illegal; + if (n_rows >= 1) + { + p_vt = (VirtualGPKGPtr) sqlite3_malloc (sizeof (VirtualGPKG)); + if (!p_vt) + return SQLITE_NOMEM; + p_vt->db = db; + p_vt->nRef = 0; + p_vt->zErrMsg = NULL; + len = strlen (table); + p_vt->table = sqlite3_malloc (len + 1); + strcpy (p_vt->table, table); + p_vt->nColumns = n_rows; + p_vt->Column = sqlite3_malloc (sizeof (char *) * n_rows); + p_vt->Type = sqlite3_malloc (sizeof (char *) * n_rows); + p_vt->NotNull = sqlite3_malloc (sizeof (int) * n_rows); + p_vt->Value = sqlite3_malloc (sizeof (SqliteValuePtr) * n_rows); + for (i = 0; i < n_rows; i++) + { + *(p_vt->Column + i) = NULL; + *(p_vt->Type + i) = NULL; + *(p_vt->NotNull + i) = -1; + *(p_vt->Value + i) = value_alloc (); + } + p_vt->GeoColumn = NULL; + p_vt->Srid = -1; + p_vt->GeoType = GAIA_UNKNOWN; + for (i = 1; i <= n_rows; i++) + { + col_name = results[(i * n_columns) + 1]; + col_type = results[(i * n_columns) + 2]; + if (atoi (results[(i * n_columns) + 3]) == 0) + not_null = 0; + else + not_null = 1; + len = strlen (col_name); + *(p_vt->Column + (i - 1)) = sqlite3_malloc (len + 1); + strcpy (*(p_vt->Column + (i - 1)), col_name); + len = strlen (col_type); + *(p_vt->Type + (i - 1)) = sqlite3_malloc (len + 1); + strcpy (*(p_vt->Type + (i - 1)), col_type); + *(p_vt->NotNull + (i - 1)) = not_null; + } + sqlite3_free_table (results); + } + else + goto illegal; +/* retrieving the base table columns */ + sql = + sqlite3_mprintf + ("SELECT column_name, geometry_type_name, srs_id, z, m\n" + "FROM gpkg_geometry_columns WHERE Upper(table_name) = Upper(%Q)", + table); + ret = sqlite3_get_table (db, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto illegal; + if (n_rows >= 1) + { + col_name = results[n_columns + 0]; + type = results[n_columns + 1]; + p_vt->Srid = atoi (results[n_columns + 2]); + has_z = atoi (results[n_columns + 3]); + has_m = atoi (results[n_columns + 4]); + len = strlen (col_name); + p_vt->GeoColumn = sqlite3_malloc (len + 1); + strcpy (p_vt->GeoColumn, col_name); + if (strcasecmp (type, "POINT") == 0) + { + if (has_z && has_m) + p_vt->GeoType = GAIA_POINTZM; + else if (has_z) + p_vt->GeoType = GAIA_POINTZ; + else if (has_m) + p_vt->GeoType = GAIA_POINTM; + else + p_vt->GeoType = GAIA_POINT; + } + if (strcasecmp (type, "LINESTRING") == 0) + { + if (has_z && has_m) + p_vt->GeoType = GAIA_LINESTRINGZM; + else if (has_z) + p_vt->GeoType = GAIA_LINESTRINGZ; + else if (has_m) + p_vt->GeoType = GAIA_LINESTRINGM; + else + p_vt->GeoType = GAIA_LINESTRING; + } + if (strcasecmp (type, "POLYGON") == 0) + { + if (has_z && has_m) + p_vt->GeoType = GAIA_POLYGONZM; + else if (has_z) + p_vt->GeoType = GAIA_POLYGONZ; + else if (has_m) + p_vt->GeoType = GAIA_POLYGONM; + else + p_vt->GeoType = GAIA_POLYGON; + } + if (strcasecmp (type, "MULTIPOINT") == 0) + { + if (has_z && has_m) + p_vt->GeoType = GAIA_MULTIPOINTZM; + else if (has_z) + p_vt->GeoType = GAIA_MULTIPOINTZ; + else if (has_m) + p_vt->GeoType = GAIA_MULTIPOINTM; + else + p_vt->GeoType = GAIA_MULTIPOINT; + } + if (strcasecmp (type, "MULTILINESTRING") == 0) + { + if (has_z && has_m) + p_vt->GeoType = GAIA_MULTILINESTRINGZM; + else if (has_z) + p_vt->GeoType = GAIA_MULTILINESTRINGZ; + else if (has_m) + p_vt->GeoType = GAIA_MULTILINESTRINGM; + else + p_vt->GeoType = GAIA_MULTILINESTRING; + } + if (strcasecmp (type, "MULTIPOLYGON") == 0) + { + if (has_z && has_m) + p_vt->GeoType = GAIA_MULTIPOLYGONZM; + else if (has_z) + p_vt->GeoType = GAIA_MULTIPOLYGONZ; + else if (has_m) + p_vt->GeoType = GAIA_MULTIPOLYGONM; + else + p_vt->GeoType = GAIA_MULTIPOLYGON; + } + if (strcasecmp (type, "GEOMCOLLECTION") == 0) + { + if (has_z && has_m) + p_vt->GeoType = GAIA_GEOMETRYCOLLECTIONZM; + else if (has_z) + p_vt->GeoType = GAIA_GEOMETRYCOLLECTIONZ; + else if (has_m) + p_vt->GeoType = GAIA_GEOMETRYCOLLECTIONM; + else + p_vt->GeoType = GAIA_GEOMETRYCOLLECTION; + } + sqlite3_free_table (results); + } + else + goto illegal; +/* preparing the COLUMNs for this VIRTUAL TABLE */ + xname = gaiaDoubleQuotedSql (vtable); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" ", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + for (i = 0; i < p_vt->nColumns; i++) + { + if (i == 0) + strcpy (prefix, "("); + else + strcpy (prefix, ", "); + xname = gaiaDoubleQuotedSql (*(p_vt->Column + i)); + if (*(p_vt->NotNull + i)) + sql = + sqlite3_mprintf ("%s%s %s NOT NULL", prefix, xname, + *(p_vt->Type + i)); + else + sql = + sqlite3_mprintf ("%s%s %s", prefix, xname, *(p_vt->Type + i)); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + gaiaAppendToOutBuffer (&sql_statement, ")"); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + { + if (sqlite3_declare_vtab (db, sql_statement.Buffer) != SQLITE_OK) + { + *pzErr = + sqlite3_mprintf + ("[VirtualGPKG module] CREATE VIRTUAL: invalid SQL statement \"%s\"", + sql); + goto error; + } + gaiaOutBufferReset (&sql_statement); + } + else + goto error; + *ppVTab = (sqlite3_vtab *) p_vt; + free (vtable); + free (table); + return SQLITE_OK; + illegal: +/* something is going the wrong way */ + gaiaOutBufferReset (&sql_statement); + if (p_vt) + free_table (p_vt); + *pzErr = + sqlite3_mprintf + ("[VirtualGPKG module] '%s' isn't a valid GPKG Geometry table\n", + table); + error: + if (vtable) + free (vtable); + if (table) + free (table); + gaiaOutBufferReset (&sql_statement); + return SQLITE_ERROR; +} + +static int +vgpkg_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* connects the virtual table to some shapefile - simply aliases vgpkg_create() */ + return vgpkg_create (db, pAux, argc, argv, ppVTab, pzErr); +} + +static int +vgpkg_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIndex) +{ +/* best index selection */ + if (pVTab || pIndex) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vgpkg_disconnect (sqlite3_vtab * pVTab) +{ +/* disconnects the virtual table */ + VirtualGPKGPtr p_vt = (VirtualGPKGPtr) pVTab; + free_table (p_vt); + return SQLITE_OK; +} + +static int +vgpkg_destroy (sqlite3_vtab * pVTab) +{ +/* destroys the virtual table - simply aliases vgpkg_disconnect() */ + return vgpkg_disconnect (pVTab); +} + +static int +vgpkg_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) +{ +/* opening a new cursor */ + sqlite3_stmt *stmt; + gaiaOutBuffer sql_statement; + int ret; + char *sql; + int ic; + char *xname; + VirtualGPKGCursorPtr cursor = + (VirtualGPKGCursorPtr) sqlite3_malloc (sizeof (VirtualGPKGCursor)); + if (cursor == NULL) + return SQLITE_ERROR; + cursor->pVtab = (VirtualGPKGPtr) pVTab; + gaiaOutBufferInitialize (&sql_statement); + gaiaAppendToOutBuffer (&sql_statement, "SELECT ROWID"); + for (ic = 0; ic < cursor->pVtab->nColumns; ic++) + { + value_set_null (*(cursor->pVtab->Value + ic)); + xname = gaiaDoubleQuotedSql (*(cursor->pVtab->Column + ic)); + if (strcasecmp + (*(cursor->pVtab->Column + ic), cursor->pVtab->GeoColumn) == 0) + { + /* this is the geometry column */ + sql = sqlite3_mprintf (",GeomFromGPB(\"%s\")", xname); + } + else + sql = sqlite3_mprintf (",\"%s\"", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + xname = gaiaDoubleQuotedSql (cursor->pVtab->table); + sql = sqlite3_mprintf (" FROM \"%s\" WHERE ROWID >= ?", xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + ret = + sqlite3_prepare_v2 (cursor->pVtab->db, sql_statement.Buffer, + strlen (sql_statement.Buffer), &stmt, NULL); + else + ret = SQLITE_ERROR; + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + { + /* an error occurred */ + cursor->eof = 1; + return SQLITE_ERROR; + } + cursor->stmt = stmt; + cursor->current_row = LONG64_MIN; + cursor->eof = 0; + *ppCursor = (sqlite3_vtab_cursor *) cursor; + vgpkg_read_row (cursor); + return SQLITE_OK; +} + +static int +vgpkg_close (sqlite3_vtab_cursor * pCursor) +{ +/* closing the cursor */ + int ic; + VirtualGPKGCursorPtr cursor = (VirtualGPKGCursorPtr) pCursor; + for (ic = 0; ic < cursor->pVtab->nColumns; ic++) + value_set_null (*(cursor->pVtab->Value + ic)); + if (cursor->stmt) + sqlite3_finalize (cursor->stmt); + sqlite3_free (pCursor); + return SQLITE_OK; +} + +static int +vgpkg_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, + int argc, sqlite3_value ** argv) +{ +/* setting up a cursor filter */ + if (pCursor || idxNum || idxStr || argc || argv) + pCursor = pCursor; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vgpkg_next (sqlite3_vtab_cursor * pCursor) +{ +/* fetching next row from cursor */ + VirtualGPKGCursorPtr cursor = (VirtualGPKGCursorPtr) pCursor; + (cursor->current_row)++; + vgpkg_read_row (cursor); + return SQLITE_OK; +} + +static int +vgpkg_eof (sqlite3_vtab_cursor * pCursor) +{ +/* cursor EOF */ + VirtualGPKGCursorPtr cursor = (VirtualGPKGCursorPtr) pCursor; + return cursor->eof; +} + +static int +vgpkg_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, + int column) +{ +/* fetching value for the Nth column */ + VirtualGPKGCursorPtr cursor = (VirtualGPKGCursorPtr) pCursor; + SqliteValuePtr value; + if (column >= 0 && column < cursor->pVtab->nColumns) + { + value = *(cursor->pVtab->Value + column); + switch (value->Type) + { + case SQLITE_INTEGER: + sqlite3_result_int64 (pContext, value->IntValue); + break; + case SQLITE_FLOAT: + sqlite3_result_double (pContext, value->DoubleValue); + break; + case SQLITE_TEXT: + sqlite3_result_text (pContext, value->Text, value->Size, + SQLITE_STATIC); + break; + case SQLITE_BLOB: + sqlite3_result_blob (pContext, value->Blob, value->Size, + SQLITE_STATIC); + break; + default: + sqlite3_result_null (pContext); + break; + }; + } + else + sqlite3_result_null (pContext); + return SQLITE_OK; +} + +static int +vgpkg_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) +{ +/* fetching the ROWID */ + VirtualGPKGCursorPtr cursor = (VirtualGPKGCursorPtr) pCursor; + *pRowid = cursor->current_row; + return SQLITE_OK; +} + +static int +vgpkg_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, + sqlite_int64 * pRowid) +{ +/* generic update [INSERT / UPDATE / DELETE */ + sqlite3_int64 rowid = 0; + int ret; + VirtualGPKGPtr p_vt = (VirtualGPKGPtr) pVTab; + if (argc == 1) + { + /* performing a DELETE */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + { + rowid = sqlite3_value_int64 (argv[0]); + ret = vgpkg_delete_row (p_vt, rowid); + } + else + ret = SQLITE_MISMATCH; + } + else + { + if (sqlite3_value_type (argv[0]) == SQLITE_NULL) + { + /* performing an INSERT */ + ret = vgpkg_insert_row (p_vt, &rowid, argc, argv); + if (ret == SQLITE_OK) + *pRowid = rowid; + } + else + { + /* performing an UPDATE */ + rowid = sqlite3_value_int64 (argv[0]); + ret = vgpkg_update_row (p_vt, rowid, argc, argv); + } + } + return ret; +} + +static int +vgpkg_begin (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vgpkg_sync (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vgpkg_commit (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vgpkg_rollback (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +spliteVirtualGPKGInit (sqlite3 * db) +{ + int rc = SQLITE_OK; + my_gpkg_module.iVersion = 1; + my_gpkg_module.xCreate = &vgpkg_create; + my_gpkg_module.xConnect = &vgpkg_connect; + my_gpkg_module.xBestIndex = &vgpkg_best_index; + my_gpkg_module.xDisconnect = &vgpkg_disconnect; + my_gpkg_module.xDestroy = &vgpkg_destroy; + my_gpkg_module.xOpen = &vgpkg_open; + my_gpkg_module.xClose = &vgpkg_close; + my_gpkg_module.xFilter = &vgpkg_filter; + my_gpkg_module.xNext = &vgpkg_next; + my_gpkg_module.xEof = &vgpkg_eof; + my_gpkg_module.xColumn = &vgpkg_column; + my_gpkg_module.xRowid = &vgpkg_rowid; + my_gpkg_module.xUpdate = &vgpkg_update; + my_gpkg_module.xBegin = &vgpkg_begin; + my_gpkg_module.xSync = &vgpkg_sync; + my_gpkg_module.xCommit = &vgpkg_commit; + my_gpkg_module.xRollback = &vgpkg_rollback; + my_gpkg_module.xFindFunction = NULL; + sqlite3_create_module_v2 (db, "VirtualGPKG", &my_gpkg_module, NULL, 0); + return rc; +} + +SPATIALITE_PRIVATE int +virtualgpkg_extension_init (void *xdb) +{ + sqlite3 *db = (sqlite3 *) xdb; + return spliteVirtualGPKGInit (db); +} + +#endif /* end GEOPACKAGE conditional */ diff --git a/src/spatialite/src/spatialite/virtualnetwork.c b/src/spatialite/src/spatialite/virtualnetwork.c new file mode 100644 index 0000000..5591e94 --- /dev/null +++ b/src/spatialite/src/spatialite/virtualnetwork.c @@ -0,0 +1,2263 @@ +/* + + virtualnetwork.c -- SQLite3 extension [VIRTUAL TABLE Routing - shortest path] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Luigi Costalli luigi.costalli@gmail.com + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include + +#include +#include +#include + +static struct sqlite3_module my_net_module; + +#define VNET_DIJKSTRA_ALGORITHM 1 +#define VNET_A_STAR_ALGORITHM 2 + +#ifdef _WIN32 +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +/****************************************************************************** +/ +/ VirtualNetwork structs +/ +******************************************************************************/ + +typedef struct NetworkArcStruct +{ +/* an ARC */ + const struct NetworkNodeStruct *NodeFrom; + const struct NetworkNodeStruct *NodeTo; + sqlite3_int64 ArcRowid; + double Cost; +} NetworkArc; +typedef NetworkArc *NetworkArcPtr; + +typedef struct NetworkNodeStruct +{ +/* a NODE */ + int InternalIndex; + sqlite3_int64 Id; + char *Code; + double CoordX; + double CoordY; + int NumArcs; + NetworkArcPtr Arcs; +} NetworkNode; +typedef NetworkNode *NetworkNodePtr; + +typedef struct NetworkStruct +{ +/* the main NETWORK structure */ + int Net64; + int AStar; + int EndianArch; + int MaxCodeLength; + int CurrentIndex; + int NodeCode; + int NumNodes; + char *TableName; + char *FromColumn; + char *ToColumn; + char *GeometryColumn; + char *NameColumn; + double AStarHeuristicCoeff; + NetworkNodePtr Nodes; +} Network; +typedef Network *NetworkPtr; + +typedef struct ArcSolutionStruct +{ +/* Geometry corresponding to an Arc used by Dijkstra shortest path solution */ + sqlite3_int64 ArcRowid; + char *FromCode; + char *ToCode; + sqlite3_int64 FromId; + sqlite3_int64 ToId; + int Points; + double *Coords; + int Srid; + char *Name; + struct ArcSolutionStruct *Next; + +} ArcSolution; +typedef ArcSolution *ArcSolutionPtr; + +typedef struct RowSolutionStruct +{ +/* a row into the shortest path solution */ + NetworkArcPtr Arc; + char *Name; + struct RowSolutionStruct *Next; + +} RowSolution; +typedef RowSolution *RowSolutionPtr; + +typedef struct SolutionStruct +{ +/* the shortest path solution */ + ArcSolutionPtr FirstArc; + ArcSolutionPtr LastArc; + NetworkNodePtr From; + NetworkNodePtr To; + RowSolutionPtr First; + RowSolutionPtr Last; + RowSolutionPtr CurrentRow; + sqlite3_int64 CurrentRowId; + double TotalCost; + gaiaGeomCollPtr Geometry; +} Solution; +typedef Solution *SolutionPtr; + +/****************************************************************************** +/ +/ Dijkstra and A* common structs +/ +******************************************************************************/ + +typedef struct RoutingNode +{ + int Id; + struct RoutingNode **To; + NetworkArcPtr *Link; + int DimTo; + struct RoutingNode *PreviousNode; + NetworkArcPtr Arc; + double Distance; + double HeuristicDistance; + int Inspected; +} RoutingNode; +typedef RoutingNode *RoutingNodePtr; + +typedef struct RoutingNodes +{ + RoutingNodePtr Nodes; + NetworkArcPtr *ArcsBuffer; + RoutingNodePtr *NodesBuffer; + int Dim; + int DimLink; +} RoutingNodes; +typedef RoutingNodes *RoutingNodesPtr; + +typedef struct RoutingHeapStruct +{ + RoutingNodePtr *Values; + int Head; + int Tail; +} RoutingHeap; +typedef RoutingHeap *RoutingHeapPtr; + +/****************************************************************************** +/ +/ VirtualTable structs +/ +******************************************************************************/ + +typedef struct VirtualNetworkStruct +{ +/* extends the sqlite3_vtab struct */ + const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ + int nRef; /* # references: USED INTERNALLY BY SQLITE */ + char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ + sqlite3 *db; /* the sqlite db holding the virtual table */ + NetworkPtr graph; /* the NETWORK structure */ + RoutingNodesPtr routing; /* the ROUTING structure */ + int currentAlgorithm; /* the currently selected Shortest Path Algorithm */ +} VirtualNetwork; +typedef VirtualNetwork *VirtualNetworkPtr; + +typedef struct VirtualNetworkCursortStruct +{ +/* extends the sqlite3_vtab_cursor struct */ + VirtualNetworkPtr pVtab; /* Virtual table of this cursor */ + SolutionPtr solution; /* the current solution */ + int eof; /* the EOF marker */ +} VirtualNetworkCursor; +typedef VirtualNetworkCursor *VirtualNetworkCursorPtr; + +/* +/ +/ implementation of the Dijkstra Shortest Path algorithm +/ +//////////////////////////////////////////////////////////// +/ +/ Author: Luigi Costalli luigi.costalli@gmail.com +/ version 1.0. 2008 October 21 +/ +*/ + +static RoutingNodesPtr +routing_init (NetworkPtr graph) +{ +/* allocating and initializing the ROUTING struct */ + int i; + int j; + int cnt = 0; + RoutingNodesPtr nd; + RoutingNodePtr ndn; + NetworkNodePtr nn; +/* allocating the main Nodes struct */ + nd = malloc (sizeof (RoutingNodes)); +/* allocating and initializing Nodes array */ + nd->Nodes = malloc (sizeof (RoutingNode) * graph->NumNodes); + nd->Dim = graph->NumNodes; + nd->DimLink = 0; + +/* pre-alloc buffer strategy - GENSCHER 2010-01-05 */ + for (i = 0; i < graph->NumNodes; cnt += graph->Nodes[i].NumArcs, i++); + nd->NodesBuffer = malloc (sizeof (RoutingNodePtr) * cnt); + nd->ArcsBuffer = malloc (sizeof (NetworkArcPtr) * cnt); + + cnt = 0; + for (i = 0; i < graph->NumNodes; i++) + { + /* initializing the Nodes array */ + nn = graph->Nodes + i; + ndn = nd->Nodes + i; + ndn->Id = nn->InternalIndex; + ndn->DimTo = nn->NumArcs; + ndn->To = &(nd->NodesBuffer[cnt]); + ndn->Link = &(nd->ArcsBuffer[cnt]); + cnt += nn->NumArcs; + + for (j = 0; j < nn->NumArcs; j++) + { + /* setting the outcoming Arcs for the current Node */ + nd->DimLink++; + ndn->To[j] = nd->Nodes + nn->Arcs[j].NodeTo->InternalIndex; + ndn->Link[j] = nn->Arcs + j; + } + } + return (nd); +} + +static void +routing_free (RoutingNodes * e) +{ +/* memory cleanup; freeing the ROUTING struct */ + free (e->ArcsBuffer); + free (e->NodesBuffer); + free (e->Nodes); + free (e); +} + +static RoutingHeapPtr +routing_heap_init (int dim) +{ +/* allocating the Nodes ordered list */ + RoutingHeapPtr h; + h = malloc (sizeof (RoutingHeap)); + h->Values = malloc (sizeof (RoutingNodePtr) * dim); + h->Head = 0; + h->Tail = 0; + return (h); +} + +static void +routing_heap_free (RoutingHeapPtr h) +{ +/* freeing the Nodes ordered list */ + free (h->Values); + free (h); +} + +static void +routing_push (RoutingHeapPtr h, RoutingNodePtr n) +{ +/* inserting a Node into the list */ + h->Values[h->Tail] = n; + h->Tail++; +} + +static RoutingNodePtr +dijkstra_pop (RoutingHeapPtr h) +{ +/* fetching the minimum value */ + int i; + RoutingNodePtr n; + double min = DBL_MAX; + int i_min = h->Head; + for (i = h->Head; i < h->Tail; i++) + { + n = h->Values[i]; + if (n->Distance < min) + { + min = n->Distance; + i_min = i; + } + } + if (i_min > h->Head) + { + n = h->Values[i_min]; + h->Values[i_min] = h->Values[h->Head]; + h->Values[h->Head] = n; + } + n = h->Values[h->Head]; + h->Head++; + return (n); +} + +static NetworkArcPtr * +dijkstra_shortest_path (RoutingNodesPtr e, NetworkNodePtr pfrom, + NetworkNodePtr pto, int *ll) +{ +/* identifying the Shortest Path - Dijkstra's algorithm */ + int from; + int to; + int i; + int k; + RoutingNodePtr n; + RoutingNodePtr p_to; + NetworkArcPtr p_link; + int cnt; + NetworkArcPtr *result; + RoutingHeapPtr h; +/* setting From/To */ + from = pfrom->InternalIndex; + to = pto->InternalIndex; +/* initializing the heap */ + h = routing_heap_init (e->DimLink); +/* initializing the graph */ + for (i = 0; i < e->Dim; i++) + { + n = e->Nodes + i; + n->PreviousNode = NULL; + n->Arc = NULL; + n->Inspected = 0; + n->Distance = DBL_MAX; + } +/* pushes the From node into the Nodes list */ + e->Nodes[from].Distance = 0.0; + routing_push (h, e->Nodes + from); + while (h->Tail != h->Head) + { + /* Dijsktra loop */ + n = dijkstra_pop (h); + if (n->Id == to) + { + /* destination reached */ + break; + } + n->Inspected = 1; + for (i = 0; i < n->DimTo; i++) + { + p_to = *(n->To + i); + p_link = *(n->Link + i); + if (p_to->Inspected == 0) + { + if (p_to->Distance == DBL_MAX) + { + /* inserting a new node into the list */ + p_to->Distance = n->Distance + p_link->Cost; + p_to->PreviousNode = n; + p_to->Arc = p_link; + routing_push (h, p_to); + } + else if (p_to->Distance > n->Distance + p_link->Cost) + { + /* updating an already inserted node */ + p_to->Distance = n->Distance + p_link->Cost; + p_to->PreviousNode = n; + p_to->Arc = p_link; + } + } + } + } + routing_heap_free (h); + cnt = 0; + n = e->Nodes + to; + while (n->PreviousNode != NULL) + { + /* counting how many Arcs are into the Shortest Path solution */ + cnt++; + n = n->PreviousNode; + } +/* allocating the solution */ + result = malloc (sizeof (NetworkArcPtr) * cnt); + k = cnt - 1; + n = e->Nodes + to; + while (n->PreviousNode != NULL) + { + /* inserting an Arc into the solution */ + result[k] = n->Arc; + n = n->PreviousNode; + k--; + } + *ll = cnt; + return (result); +} + +/* END of Luigi Costalli Dijkstra Shortest Path implementation */ + +/* +/ +/ implementation of the A* Shortest Path algorithm +/ +*/ + +static RoutingNodePtr +a_star_pop (RoutingHeapPtr h) +{ +/* fetching the minimum value */ + int i; + RoutingNodePtr n; + double min = DBL_MAX; + int i_min = h->Head; + for (i = h->Head; i < h->Tail; i++) + { + n = h->Values[i]; + if (n->HeuristicDistance < min) + { + min = n->HeuristicDistance; + i_min = i; + } + } + if (i_min > h->Head) + { + n = h->Values[i_min]; + h->Values[i_min] = h->Values[h->Head]; + h->Values[h->Head] = n; + } + n = h->Values[h->Head]; + h->Head++; + return (n); +} + +static double +a_star_heuristic_distance (NetworkNodePtr n1, NetworkNodePtr n2, double coeff) +{ +/* computing the euclidean distance intercurring between two nodes */ + double dx = n1->CoordX - n2->CoordX; + double dy = n1->CoordY - n2->CoordY; + double dist = sqrt ((dx * dx) + (dy * dy)) * coeff; + return dist; +} + +static NetworkArcPtr * +a_star_shortest_path (RoutingNodesPtr e, NetworkNodePtr nodes, + NetworkNodePtr pfrom, NetworkNodePtr pto, + double heuristic_coeff, int *ll) +{ +/* identifying the Shortest Path - A* algorithm */ + int from; + int to; + int i; + int k; + RoutingNodePtr pAux; + RoutingNodePtr n; + RoutingNodePtr p_to; + NetworkNodePtr pOrg; + NetworkNodePtr pDest; + NetworkArcPtr p_link; + int cnt; + NetworkArcPtr *result; + RoutingHeapPtr h; +/* setting From/To */ + from = pfrom->InternalIndex; + to = pto->InternalIndex; + pAux = e->Nodes + from; + pOrg = nodes + pAux->Id; + pAux = e->Nodes + to; + pDest = nodes + pAux->Id; +/* initializing the heap */ + h = routing_heap_init (e->DimLink); +/* initializing the graph */ + for (i = 0; i < e->Dim; i++) + { + n = e->Nodes + i; + n->PreviousNode = NULL; + n->Arc = NULL; + n->Inspected = 0; + n->Distance = DBL_MAX; + n->HeuristicDistance = DBL_MAX; + } +/* pushes the From node into the Nodes list */ + e->Nodes[from].Distance = 0.0; + e->Nodes[from].HeuristicDistance = + a_star_heuristic_distance (pOrg, pDest, heuristic_coeff); + routing_push (h, e->Nodes + from); + while (h->Tail != h->Head) + { + /* A* loop */ + n = a_star_pop (h); + if (n->Id == to) + { + /* destination reached */ + break; + } + n->Inspected = 1; + for (i = 0; i < n->DimTo; i++) + { + p_to = *(n->To + i); + p_link = *(n->Link + i); + if (p_to->Inspected == 0) + { + if (p_to->Distance == DBL_MAX) + { + /* inserting a new node into the list */ + p_to->Distance = n->Distance + p_link->Cost; + pOrg = nodes + p_to->Id; + p_to->HeuristicDistance = + p_to->Distance + + a_star_heuristic_distance (pOrg, pDest, + heuristic_coeff); + p_to->PreviousNode = n; + p_to->Arc = p_link; + routing_push (h, p_to); + } + else if (p_to->Distance > n->Distance + p_link->Cost) + { + /* updating an already inserted node */ + p_to->Distance = n->Distance + p_link->Cost; + pOrg = nodes + p_to->Id; + p_to->HeuristicDistance = + p_to->Distance + + a_star_heuristic_distance (pOrg, pDest, + heuristic_coeff); + p_to->PreviousNode = n; + p_to->Arc = p_link; + } + } + } + } + routing_heap_free (h); + cnt = 0; + n = e->Nodes + to; + while (n->PreviousNode != NULL) + { + /* counting how many Arcs are into the Shortest Path solution */ + cnt++; + n = n->PreviousNode; + } +/* allocating the solution */ + result = malloc (sizeof (NetworkArcPtr) * cnt); + k = cnt - 1; + n = e->Nodes + to; + while (n->PreviousNode != NULL) + { + /* inserting an Arc into the solution */ + result[k] = n->Arc; + n = n->PreviousNode; + k--; + } + *ll = cnt; + return (result); +} + +/* END of A* Shortest Path implementation */ + +static int +cmp_nodes_code (const void *p1, const void *p2) +{ +/* compares two nodes by CODE [for BSEARCH] */ + NetworkNodePtr pN1 = (NetworkNodePtr) p1; + NetworkNodePtr pN2 = (NetworkNodePtr) p2; + return strcmp (pN1->Code, pN2->Code); +} + +static int +cmp_nodes_id (const void *p1, const void *p2) +{ +/* compares two nodes by ID [for BSEARCH] */ + NetworkNodePtr pN1 = (NetworkNodePtr) p1; + NetworkNodePtr pN2 = (NetworkNodePtr) p2; + if (pN1->Id == pN2->Id) + return 0; + if (pN1->Id > pN2->Id) + return 1; + return -1; +} + +static NetworkNodePtr +find_node_by_code (NetworkPtr graph, const char *code) +{ +/* searching a Node (by Code) into the sorted list */ + NetworkNodePtr ret; + NetworkNode pN; + pN.Code = (char *) code; + ret = + bsearch (&pN, graph->Nodes, graph->NumNodes, sizeof (NetworkNode), + cmp_nodes_code); + return ret; +} + +static NetworkNodePtr +find_node_by_id (NetworkPtr graph, const sqlite3_int64 id) +{ +/* searching a Node (by Id) into the sorted list */ + NetworkNodePtr ret; + NetworkNode pN; + pN.Id = id; + ret = + bsearch (&pN, graph->Nodes, graph->NumNodes, sizeof (NetworkNode), + cmp_nodes_id); + return ret; +} + +static void +delete_solution (SolutionPtr solution) +{ +/* deleting the current solution */ + ArcSolutionPtr pA; + ArcSolutionPtr pAn; + RowSolutionPtr pR; + RowSolutionPtr pRn; + if (!solution) + return; + pA = solution->FirstArc; + while (pA) + { + pAn = pA->Next; + if (pA->FromCode) + free (pA->FromCode); + if (pA->ToCode) + free (pA->ToCode); + if (pA->Coords) + free (pA->Coords); + if (pA->Name) + free (pA->Name); + free (pA); + pA = pAn; + } + pR = solution->First; + while (pR) + { + pRn = pR->Next; + if (pR->Name) + free (pR->Name); + free (pR); + pR = pRn; + } + if (solution->Geometry) + gaiaFreeGeomColl (solution->Geometry); + free (solution); +} + +static void +reset_solution (SolutionPtr solution) +{ +/* resetting the current solution */ + ArcSolutionPtr pA; + ArcSolutionPtr pAn; + RowSolutionPtr pR; + RowSolutionPtr pRn; + if (!solution) + return; + pA = solution->FirstArc; + while (pA) + { + pAn = pA->Next; + if (pA->FromCode) + free (pA->FromCode); + if (pA->ToCode) + free (pA->ToCode); + if (pA->Coords) + free (pA->Coords); + free (pA); + pA = pAn; + } + pR = solution->First; + while (pR) + { + pRn = pR->Next; + if (pR->Name) + free (pR->Name); + free (pR); + pR = pRn; + } + if (solution->Geometry) + gaiaFreeGeomColl (solution->Geometry); + solution->FirstArc = NULL; + solution->LastArc = NULL; + solution->From = NULL; + solution->To = NULL; + solution->First = NULL; + solution->Last = NULL; + solution->CurrentRow = NULL; + solution->CurrentRowId = 0; + solution->TotalCost = 0.0; + solution->Geometry = NULL; +} + +static SolutionPtr +alloc_solution (void) +{ +/* allocates and initializes the current solution */ + SolutionPtr p = malloc (sizeof (Solution)); + p->FirstArc = NULL; + p->LastArc = NULL; + p->From = NULL; + p->To = NULL; + p->First = NULL; + p->Last = NULL; + p->CurrentRow = NULL; + p->CurrentRowId = 0; + p->TotalCost = 0.0; + p->Geometry = NULL; + return p; +} + +static void +add_arc_to_solution (SolutionPtr solution, NetworkArcPtr arc) +{ +/* inserts an Arc into the Shortest Path solution */ + RowSolutionPtr p = malloc (sizeof (RowSolution)); + p->Arc = arc; + p->Name = NULL; + p->Next = NULL; + solution->TotalCost += arc->Cost; + if (!(solution->First)) + solution->First = p; + if (solution->Last) + solution->Last->Next = p; + solution->Last = p; +} + +static void +add_arc_geometry_to_solution (SolutionPtr solution, sqlite3_int64 arc_id, + const char *from_code, const char *to_code, + sqlite3_int64 from_id, sqlite3_int64 to_id, + int points, double *coords, int srid, + const char *name) +{ +/* inserts an Arc Geometry into the Shortest Path solution */ + int len; + ArcSolutionPtr p = malloc (sizeof (ArcSolution)); + p->ArcRowid = arc_id; + p->FromCode = NULL; + len = strlen (from_code); + if (len > 0) + { + p->FromCode = malloc (len + 1); + strcpy (p->FromCode, from_code); + } + p->ToCode = NULL; + len = strlen (to_code); + if (len > 0) + { + p->ToCode = malloc (len + 1); + strcpy (p->ToCode, to_code); + } + p->FromId = from_id; + p->ToId = to_id; + p->Points = points; + p->Coords = coords; + p->Srid = srid; + if (name == NULL) + p->Name = NULL; + else + { + len = strlen (name); + p->Name = malloc (len + 1); + strcpy (p->Name, name); + } + p->Next = NULL; + if (!(solution->FirstArc)) + solution->FirstArc = p; + if (solution->LastArc) + solution->LastArc->Next = p; + solution->LastArc = p; +} + +static void +build_solution (sqlite3 * handle, NetworkPtr graph, SolutionPtr solution, + NetworkArcPtr * shortest_path, int cnt) +{ +/* formatting the Shortest Path solution */ + int i; + char *sql; + int err; + int error = 0; + int ret; + sqlite3_int64 arc_id; + const unsigned char *blob; + int size; + sqlite3_int64 from_id; + sqlite3_int64 to_id; + char *from_code; + char *to_code; + char *name; + int tbd; + int ind; + int base = 0; + int block = 128; + int how_many; + sqlite3_stmt *stmt; + char *xfrom; + char *xto; + char *xgeom; + char *xname; + char *xtable; + gaiaOutBuffer sql_statement; + if (cnt > 0) + { + /* building the solution */ + for (i = 0; i < cnt; i++) + { + add_arc_to_solution (solution, shortest_path[i]); + } + } + tbd = cnt; + while (tbd > 0) + { + /* requesting max 128 arcs at each time */ + if (tbd < block) + how_many = tbd; + else + how_many = block; +/* preparing the Geometry representing this solution [reading arcs] */ + gaiaOutBufferInitialize (&sql_statement); + if (graph->NameColumn) + { + /* a Name column is defined */ + xfrom = gaiaDoubleQuotedSql (graph->FromColumn); + xto = gaiaDoubleQuotedSql (graph->ToColumn); + xgeom = gaiaDoubleQuotedSql (graph->GeometryColumn); + xname = gaiaDoubleQuotedSql (graph->NameColumn); + xtable = gaiaDoubleQuotedSql (graph->TableName); + sql = + sqlite3_mprintf + ("SELECT ROWID, \"%s\", \"%s\", \"%s\", \"%s\" FROM \"%s\" WHERE ROWID IN (", + xfrom, xto, xgeom, xname, xtable); + free (xfrom); + free (xto); + free (xgeom); + free (xname); + free (xtable); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + else + { + /* no Name column is defined */ + xfrom = gaiaDoubleQuotedSql (graph->FromColumn); + xto = gaiaDoubleQuotedSql (graph->ToColumn); + xgeom = gaiaDoubleQuotedSql (graph->GeometryColumn); + xtable = gaiaDoubleQuotedSql (graph->TableName); + sql = + sqlite3_mprintf + ("SELECT ROWID, \"%s\", \"%s\", \"%s\" FROM \"%s\" WHERE ROWID IN (", + xfrom, xto, xgeom, xtable); + free (xfrom); + free (xto); + free (xgeom); + free (xtable); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + } + for (i = 0; i < how_many; i++) + { + if (i == 0) + gaiaAppendToOutBuffer (&sql_statement, "?"); + else + gaiaAppendToOutBuffer (&sql_statement, ",?"); + } + gaiaAppendToOutBuffer (&sql_statement, ")"); + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + ret = + sqlite3_prepare_v2 (handle, sql_statement.Buffer, + strlen (sql_statement.Buffer), &stmt, + NULL); + else + ret = SQLITE_ERROR; + gaiaOutBufferReset (&sql_statement); + if (ret != SQLITE_OK) + { + error = 1; + goto abort; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + ind = 1; + for (i = 0; i < cnt; i++) + { + if (i < base) + continue; + if (i >= (base + how_many)) + break; + sqlite3_bind_int64 (stmt, ind, shortest_path[i]->ArcRowid); + ind++; + } + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + arc_id = -1; + from_id = -1; + to_id = -1; + from_code = NULL; + to_code = NULL; + blob = NULL; + size = 0; + name = NULL; + err = 0; + if (sqlite3_column_type (stmt, 0) == SQLITE_INTEGER) + arc_id = sqlite3_column_int64 (stmt, 0); + else + err = 1; + if (graph->NodeCode) + { + /* nodes are identified by TEXT codes */ + if (sqlite3_column_type (stmt, 1) == SQLITE_TEXT) + from_code = + (char *) sqlite3_column_text (stmt, 1); + else + err = 1; + if (sqlite3_column_type (stmt, 2) == SQLITE_TEXT) + to_code = + (char *) sqlite3_column_text (stmt, 2); + else + err = 1; + } + else + { + /* nodes are identified by INTEGER ids */ + if (sqlite3_column_type (stmt, 1) == SQLITE_INTEGER) + from_id = sqlite3_column_int64 (stmt, 1); + else + err = 1; + if (sqlite3_column_type (stmt, 2) == SQLITE_INTEGER) + to_id = sqlite3_column_int64 (stmt, 2); + else + err = 1; + } + if (sqlite3_column_type (stmt, 3) == SQLITE_BLOB) + { + blob = + (const unsigned char *) + sqlite3_column_blob (stmt, 3); + size = sqlite3_column_bytes (stmt, 3); + } + else + err = 1; + if (graph->NameColumn) + { + if (sqlite3_column_type (stmt, 4) == SQLITE_TEXT) + name = (char *) sqlite3_column_text (stmt, 4); + } + if (err) + error = 1; + else + { + /* saving the Arc geometry into the temporary struct */ + gaiaGeomCollPtr geom = + gaiaFromSpatiaLiteBlobWkb (blob, size); + if (geom) + { + /* OK, we have fetched a valid Geometry */ + if (geom->FirstPoint == NULL + && geom->FirstPolygon == NULL + && geom->FirstLinestring != NULL + && geom->FirstLinestring == + geom->LastLinestring) + { + /* Geometry is LINESTRING as expected */ + int iv; + int points = + geom->FirstLinestring->Points; + double *coords = + malloc (sizeof (double) * + (points * 2)); + for (iv = 0; iv < points; iv++) + { + double x; + double y; + gaiaGetPoint + (geom->FirstLinestring-> + Coords, iv, &x, &y); + *(coords + ((iv * 2) + 0)) = x; + *(coords + ((iv * 2) + 1)) = y; + } + if (from_code == NULL) + from_code = ""; + if (to_code == NULL) + to_code = ""; + add_arc_geometry_to_solution (solution, + arc_id, + from_code, + to_code, + from_id, + to_id, + points, + coords, + geom-> + Srid, + name); + } + else + error = 1; + gaiaFreeGeomColl (geom); + } + else + error = 1; + } + } + } + sqlite3_finalize (stmt); + tbd -= how_many; + base += how_many; + } + abort: + if (shortest_path) + free (shortest_path); + if (!error) + { + /* building the Geometry representing the Shortest Path Solution */ + gaiaLinestringPtr ln; + int tot_pts = 0; + RowSolutionPtr pR; + ArcSolutionPtr pA; + int srid = -1; + if (solution->FirstArc) + srid = (solution->FirstArc)->Srid; + pR = solution->First; + while (pR) + { + pA = solution->FirstArc; + while (pA) + { + /* computing how many vertices do we need to build the LINESTRING */ + if (pR->Arc->ArcRowid == pA->ArcRowid) + { + if (pR == solution->First) + tot_pts += pA->Points; + else + tot_pts += (pA->Points - 1); + if (pA->Srid != srid) + srid = -1; + } + pA = pA->Next; + } + pR = pR->Next; + } + /* creating the Shortest Path Geometry - LINESTRING */ + ln = gaiaAllocLinestring (tot_pts); + solution->Geometry = gaiaAllocGeomColl (); + solution->Geometry->Srid = srid; + gaiaInsertLinestringInGeomColl (solution->Geometry, ln); + tot_pts = 0; + pR = solution->First; + while (pR) + { + /* building the LINESTRING */ + int skip; + if (pR == solution->First) + skip = 0; /* for first arc we must copy any vertex */ + else + skip = 1; /* for subsequent arcs we must skip first vertex [already inserted from previous arc] */ + pA = solution->FirstArc; + while (pA) + { + if (pR->Arc->ArcRowid == pA->ArcRowid) + { + /* copying vertices from correspoinding Arc Geometry */ + int ini; + int iv; + int rev; + double x; + double y; + if (graph->NodeCode) + { + /* nodes are identified by TEXT codes */ + if (strcmp + (pR->Arc->NodeFrom->Code, + pA->ToCode) == 0) + rev = 1; + else + rev = 0; + } + else + { + /* nodes are identified by INTEGER ids */ + if (pR->Arc->NodeFrom->Id == pA->ToId) + rev = 1; + else + rev = 0; + } + if (rev) + { + /* copying Arc vertices in reverse order */ + if (skip) + ini = pA->Points - 2; + else + ini = pA->Points - 1; + for (iv = ini; iv >= 0; iv--) + { + x = *(pA->Coords + ((iv * 2) + 0)); + y = *(pA->Coords + ((iv * 2) + 1)); + gaiaSetPoint (ln->Coords, tot_pts, x, + y); + tot_pts++; + } + } + else + { + /* copying Arc vertices in normal order */ + if (skip) + ini = 1; + else + ini = 0; + for (iv = ini; iv < pA->Points; iv++) + { + x = *(pA->Coords + ((iv * 2) + 0)); + y = *(pA->Coords + ((iv * 2) + 1)); + gaiaSetPoint (ln->Coords, tot_pts, x, + y); + tot_pts++; + } + } + if (pA->Name) + { + int len = strlen (pA->Name); + pR->Name = malloc (len + 1); + strcpy (pR->Name, pA->Name); + } + break; + } + pA = pA->Next; + } + pR = pR->Next; + } + } +} + +static void +dijkstra_solve (sqlite3 * handle, NetworkPtr graph, RoutingNodesPtr routing, + SolutionPtr solution) +{ +/* computing a Dijkstra Shortest Path solution */ + int cnt; + NetworkArcPtr *shortest_path = + dijkstra_shortest_path (routing, solution->From, solution->To, &cnt); + build_solution (handle, graph, solution, shortest_path, cnt); +} + +static void +a_star_solve (sqlite3 * handle, NetworkPtr graph, RoutingNodesPtr routing, + SolutionPtr solution) +{ +/* computing an A* Shortest Path solution */ + int cnt; + NetworkArcPtr *shortest_path = + a_star_shortest_path (routing, graph->Nodes, solution->From, + solution->To, graph->AStarHeuristicCoeff, &cnt); + build_solution (handle, graph, solution, shortest_path, cnt); +} + +static void +network_free (NetworkPtr p) +{ +/* memory cleanup; freeing any allocation for the network struct */ + NetworkNodePtr pN; + int i; + if (!p) + return; + for (i = 0; i < p->NumNodes; i++) + { + pN = p->Nodes + i; + if (pN->Code) + free (pN->Code); + if (pN->Arcs) + free (pN->Arcs); + } + if (p->Nodes) + free (p->Nodes); + if (p->TableName) + free (p->TableName); + if (p->FromColumn) + free (p->FromColumn); + if (p->ToColumn) + free (p->ToColumn); + if (p->GeometryColumn) + free (p->GeometryColumn); + if (p->NameColumn) + free (p->NameColumn); + free (p); +} + +static NetworkPtr +network_init (const unsigned char *blob, int size) +{ +/* parsing the HEADER block */ + NetworkPtr graph; + int net64; + int aStar = 0; + int nodes; + int node_code; + int max_code_length; + int endian_arch = gaiaEndianArch (); + const char *table; + const char *from; + const char *to; + const char *geom; + const char *name = NULL; + double a_star_coeff = 1.0; + int len; + const unsigned char *ptr; + if (size < 9) + return NULL; + if (*(blob + 0) == GAIA_NET_START) /* signature - legacy format using 32bit ints */ + net64 = 0; + else if (*(blob + 0) == GAIA_NET64_START) /* signature - format using 64bit ints */ + net64 = 1; + else if (*(blob + 0) == GAIA_NET64_A_STAR_START) /* signature - format using 64bit ints AND supporting A* */ + { + net64 = 1; + aStar = 1; + } + else + return NULL; + if (*(blob + 1) != GAIA_NET_HEADER) /* signature */ + return NULL; + nodes = gaiaImport32 (blob + 2, 1, endian_arch); /* # nodes */ + if (nodes <= 0) + return NULL; + if (*(blob + 6) == GAIA_NET_CODE) /* Nodes identified by a TEXT code */ + node_code = 1; + else if (*(blob + 6) == GAIA_NET_ID) /* Nodes indentified by an INTEGER id */ + node_code = 0; + else + return NULL; + max_code_length = *(blob + 7); /* Max TEXT Code length */ + if (*(blob + 8) != GAIA_NET_TABLE) /* signature for TABLE NAME */ + return NULL; + ptr = blob + 9; + len = gaiaImport16 (ptr, 1, endian_arch); /* TABLE NAME is varlen */ + ptr += 2; + table = (char *) ptr; + ptr += len; + if (*ptr != GAIA_NET_FROM) /* signature for FromNode COLUMN */ + return NULL; + ptr++; + len = gaiaImport16 (ptr, 1, endian_arch); /* FromNode COLUMN is varlen */ + ptr += 2; + from = (char *) ptr; + ptr += len; + if (*ptr != GAIA_NET_TO) /* signature for ToNode COLUMN */ + return NULL; + ptr++; + len = gaiaImport16 (ptr, 1, endian_arch); /* ToNode COLUMN is varlen */ + ptr += 2; + to = (char *) ptr; + ptr += len; + if (*ptr != GAIA_NET_GEOM) /* signature for Geometry COLUMN */ + return NULL; + ptr++; + len = gaiaImport16 (ptr, 1, endian_arch); /* Geometry COLUMN is varlen */ + ptr += 2; + geom = (char *) ptr; + ptr += len; + if (net64) + { + if (*ptr != GAIA_NET_NAME) /* signature for Name COLUMN - may be empty */ + return NULL; + ptr++; + len = gaiaImport16 (ptr, 1, endian_arch); /* Name COLUMN is varlen */ + ptr += 2; + name = (char *) ptr; + ptr += len; + } + if (net64 && aStar) + { + if (*ptr != GAIA_NET_A_STAR_COEFF) /* signature for A* Heuristic Coeff */ + return NULL; + ptr++; + a_star_coeff = gaiaImport64 (ptr, 1, endian_arch); + ptr += 8; + } + if (*ptr != GAIA_NET_END) /* signature */ + return NULL; + graph = malloc (sizeof (Network)); + graph->Net64 = net64; + graph->AStar = aStar; + graph->EndianArch = endian_arch; + graph->CurrentIndex = 0; + graph->NodeCode = node_code; + graph->MaxCodeLength = max_code_length; + graph->NumNodes = nodes; + graph->Nodes = malloc (sizeof (NetworkNode) * nodes); + len = strlen (table); + graph->TableName = malloc (len + 1); + strcpy (graph->TableName, table); + len = strlen (from); + graph->FromColumn = malloc (len + 1); + strcpy (graph->FromColumn, from); + len = strlen (to); + graph->ToColumn = malloc (len + 1); + strcpy (graph->ToColumn, to); + len = strlen (geom); + graph->GeometryColumn = malloc (len + 1); + strcpy (graph->GeometryColumn, geom); + if (!net64) + { + /* Name column is not supported */ + graph->NameColumn = NULL; + } + else + { + len = strlen (name); + if (len <= 1) + graph->NameColumn = NULL; + else + { + graph->NameColumn = malloc (len + 1); + strcpy (graph->NameColumn, name); + } + } + graph->AStarHeuristicCoeff = a_star_coeff; + return graph; +} + +static int +network_block (NetworkPtr graph, const unsigned char *blob, int size) +{ +/* parsing a NETWORK Block */ + const unsigned char *in = blob; + int nodes; + int i; + int ia; + int index; + char code[256]; + double x; + double y; + sqlite3_int64 nodeId = -1; + int arcs; + NetworkNodePtr pN; + NetworkArcPtr pA; + int len; + sqlite3_int64 arcId; + int nodeToIdx; + double cost; + if (size < 3) + goto error; + if (*in++ != GAIA_NET_BLOCK) /* signature */ + goto error; + nodes = gaiaImport16 (in, 1, graph->EndianArch); /* # Nodes */ + in += 2; + for (i = 0; i < nodes; i++) + { + /* parsing each node */ + if ((size - (in - blob)) < 5) + goto error; + if (*in++ != GAIA_NET_NODE) /* signature */ + goto error; + index = gaiaImport32 (in, 1, graph->EndianArch); /* node internal index */ + in += 4; + if (index < 0 || index >= graph->NumNodes) + goto error; + if (graph->NodeCode) + { + /* Nodes are identified by a TEXT Code */ + if ((size - (in - blob)) < graph->MaxCodeLength) + goto error; + memcpy (code, in, graph->MaxCodeLength); + in += graph->MaxCodeLength; + } + else + { + /* Nodes are identified by an INTEGER Id */ + if (graph->Net64) + { + if ((size - (in - blob)) < 8) + goto error; + nodeId = gaiaImportI64 (in, 1, graph->EndianArch); /* the Node ID: 64bit */ + in += 8; + } + else + { + if ((size - (in - blob)) < 4) + goto error; + nodeId = gaiaImport32 (in, 1, graph->EndianArch); /* the Node ID: 32bit */ + in += 4; + } + } + if (graph->AStar) + { + /* fetching node's X,Y coords */ + if ((size - (in - blob)) < 8) + goto error; + x = gaiaImport64 (in, 1, graph->EndianArch); /* X coord */ + in += 8; + if ((size - (in - blob)) < 8) + goto error; + y = gaiaImport64 (in, 1, graph->EndianArch); /* Y coord */ + in += 8; + } + else + { + x = DBL_MAX; + y = DBL_MAX; + } + if ((size - (in - blob)) < 2) + goto error; + arcs = gaiaImport16 (in, 1, graph->EndianArch); /* # Arcs */ + in += 2; + if (arcs < 0) + goto error; + /* initializing the Node */ + pN = graph->Nodes + index; + pN->InternalIndex = index; + if (graph->NodeCode) + { + /* Nodes are identified by a TEXT Code */ + pN->Id = -1; + len = strlen (code); + pN->Code = malloc (len + 1); + strcpy (pN->Code, code); + } + else + { + /* Nodes are identified by an INTEGER Id */ + pN->Id = nodeId; + pN->Code = NULL; + } + pN->CoordX = x; + pN->CoordY = y; + pN->NumArcs = arcs; + if (arcs) + { + /* parsing the Arcs */ + pN->Arcs = malloc (sizeof (NetworkArc) * arcs); + for (ia = 0; ia < arcs; ia++) + { + /* parsing each Arc */ + if (graph->Net64) + { + if ((size - (in - blob)) < 22) + goto error; + } + else + { + if ((size - (in - blob)) < 18) + goto error; + } + if (*in++ != GAIA_NET_ARC) /* signature */ + goto error; + if (graph->Net64) + { + arcId = gaiaImportI64 (in, 1, graph->EndianArch); /* # Arc ROWID: 64bit */ + in += 8; + } + else + { + arcId = gaiaImport32 (in, 1, graph->EndianArch); /* # Arc ROWID: 32bit */ + in += 4; + } + nodeToIdx = gaiaImport32 (in, 1, graph->EndianArch); /* # NodeTo internal index */ + in += 4; + cost = gaiaImport64 (in, 1, graph->EndianArch); /* # Cost */ + in += 8; + if (*in++ != GAIA_NET_END) /* signature */ + goto error; + pA = pN->Arcs + ia; + /* initializing the Arc */ + if (nodeToIdx < 0 || nodeToIdx >= graph->NumNodes) + goto error; + pA->NodeFrom = pN; + pA->NodeTo = graph->Nodes + nodeToIdx; + pA->ArcRowid = arcId; + pA->Cost = cost; + } + } + else + pN->Arcs = NULL; + if ((size - (in - blob)) < 1) + goto error; + if (*in++ != GAIA_NET_END) /* signature */ + goto error; + } + return 1; + error: + return 0; +} + +static NetworkPtr +load_network (sqlite3 * handle, const char *table) +{ +/* loads the NETWORK struct */ + NetworkPtr graph = NULL; + sqlite3_stmt *stmt; + char *sql; + int ret; + int header = 1; + const unsigned char *blob; + int size; + char *xname; + xname = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("SELECT NetworkData FROM \"%s\" ORDER BY Id", xname); + free (xname); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + goto abort; + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_BLOB) + { + blob = + (const unsigned char *) sqlite3_column_blob (stmt, 0); + size = sqlite3_column_bytes (stmt, 0); + if (header) + { + /* parsing the HEADER block */ + graph = network_init (blob, size); + header = 0; + } + else + { + /* parsing ordinary Blocks */ + if (!graph) + { + sqlite3_finalize (stmt); + goto abort; + } + if (!network_block (graph, blob, size)) + { + sqlite3_finalize (stmt); + goto abort; + } + } + } + else + { + sqlite3_finalize (stmt); + goto abort; + } + } + else + { + sqlite3_finalize (stmt); + goto abort; + } + } + sqlite3_finalize (stmt); + return graph; + abort: + network_free (graph); + return NULL; +} + +static int +vnet_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* creates the virtual table connected to some shapefile */ + VirtualNetworkPtr p_vt; + int err; + int ret; + int i; + int n_rows; + int n_columns; + char *vtable = NULL; + char *table = NULL; + const char *col_name = NULL; + char **results; + char *err_msg = NULL; + char *sql; + int ok_id; + int ok_data; + char *xname; + NetworkPtr graph = NULL; + if (pAux) + pAux = pAux; /* unused arg warning suppression */ +/* checking for table_name and geo_column_name */ + if (argc == 4) + { + vtable = gaiaDequotedSql (argv[2]); + table = gaiaDequotedSql (argv[3]); + } + else + { + *pzErr = + sqlite3_mprintf + ("[VirtualNetwork module] CREATE VIRTUAL: illegal arg list {NETWORK-DATAtable}\n"); + goto error; + } +/* retrieving the base table columns */ + err = 0; + ok_id = 0; + ok_data = 0; + xname = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (db, sql, &results, &n_rows, &n_columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + err = 1; + goto illegal; + } + if (n_rows > 1) + { + for (i = 1; i <= n_rows; i++) + { + col_name = results[(i * n_columns) + 1]; + if (strcasecmp (col_name, "id") == 0) + ok_id = 1; + if (strcasecmp (col_name, "networkdata") == 0) + ok_data = 1; + } + sqlite3_free_table (results); + if (!ok_id) + err = 1; + if (!ok_data) + err = 1; + } + else + err = 1; + illegal: + if (err) + { + /* something is going the wrong way */ + *pzErr = + sqlite3_mprintf + ("[VirtualNetwork module] cannot build a valid NETWORK\n"); + return SQLITE_ERROR; + } + p_vt = (VirtualNetworkPtr) sqlite3_malloc (sizeof (VirtualNetwork)); + if (!p_vt) + return SQLITE_NOMEM; + graph = load_network (db, table); + if (!graph) + { + /* something is going the wrong way */ + *pzErr = + sqlite3_mprintf + ("[VirtualNetwork module] cannot build a valid NETWORK\n"); + goto error; + } + p_vt->db = db; + p_vt->graph = graph; + p_vt->currentAlgorithm = VNET_DIJKSTRA_ALGORITHM; + p_vt->routing = NULL; + p_vt->pModule = &my_net_module; + p_vt->nRef = 0; + p_vt->zErrMsg = NULL; +/* preparing the COLUMNs for this VIRTUAL TABLE */ + xname = gaiaDoubleQuotedSql (vtable); + if (p_vt->graph->NodeCode) + { + if (p_vt->graph->NameColumn) + { + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (Algorithm TEXT, " + "ArcRowid INTEGER, NodeFrom TEXT, NodeTo TEXT," + " Cost DOUBLE, Geometry BLOB, Name TEXT)", + xname); + } + else + { + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (Algorithm TEXT, " + "ArcRowid INTEGER, NodeFrom TEXT, NodeTo TEXT," + " Cost DOUBLE, Geometry BLOB)", xname); + } + } + else + { + if (p_vt->graph->NameColumn) + { + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (Algorithm TEXT, " + "ArcRowid INTEGER, NodeFrom INTEGER, NodeTo INTEGER," + " Cost DOUBLE, Geometry BLOB, Name TEXT)", + xname); + } + else + { + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (Algorithm TEXT, " + "ArcRowid INTEGER, NodeFrom INTEGER, NodeTo INTEGER," + " Cost DOUBLE, Geometry BLOB)", xname); + } + } + free (xname); + if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) + { + *pzErr = + sqlite3_mprintf + ("[VirtualNetwork module] CREATE VIRTUAL: invalid SQL statement \"%s\"", + sql); + sqlite3_free (sql); + goto error; + } + sqlite3_free (sql); + *ppVTab = (sqlite3_vtab *) p_vt; + p_vt->routing = routing_init (p_vt->graph); + free (table); + free (vtable); + return SQLITE_OK; + error: + if (table) + free (table); + if (vtable) + free (vtable); + return SQLITE_ERROR; +} + +static int +vnet_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* connects the virtual table to some shapefile - simply aliases vshp_create() */ + return vnet_create (db, pAux, argc, argv, ppVTab, pzErr); +} + +static int +vnet_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIdxInfo) +{ +/* best index selection */ + int i; + int errors = 0; + int err = 1; + int from = 0; + int to = 0; + int i_from = -1; + int i_to = -1; + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + for (i = 0; i < pIdxInfo->nConstraint; i++) + { + /* verifying the constraints */ + struct sqlite3_index_constraint *p = &(pIdxInfo->aConstraint[i]); + if (p->usable) + { + if (p->iColumn == 2 && p->op == SQLITE_INDEX_CONSTRAINT_EQ) + { + from++; + i_from = i; + } + else if (p->iColumn == 3 && p->op == SQLITE_INDEX_CONSTRAINT_EQ) + { + to++; + i_to = i; + } + else + errors++; + } + } + if (from == 1 && to == 1 && errors == 0) + { + /* this one is a valid Shortest Path query */ + if (i_from < i_to) + pIdxInfo->idxNum = 1; /* first arg is FROM */ + else + pIdxInfo->idxNum = 2; /* first arg is TO */ + pIdxInfo->estimatedCost = 1.0; + for (i = 0; i < pIdxInfo->nConstraint; i++) + { + if (pIdxInfo->aConstraint[i].usable) + { + pIdxInfo->aConstraintUsage[i].argvIndex = i + 1; + pIdxInfo->aConstraintUsage[i].omit = 1; + } + } + err = 0; + } + if (err) + { + /* illegal query */ + pIdxInfo->idxNum = 0; + } + return SQLITE_OK; +} + +static int +vnet_disconnect (sqlite3_vtab * pVTab) +{ +/* disconnects the virtual table */ + VirtualNetworkPtr p_vt = (VirtualNetworkPtr) pVTab; + if (p_vt->routing) + routing_free (p_vt->routing); + if (p_vt->graph) + network_free (p_vt->graph); + sqlite3_free (p_vt); + return SQLITE_OK; +} + +static int +vnet_destroy (sqlite3_vtab * pVTab) +{ +/* destroys the virtual table - simply aliases vshp_disconnect() */ + return vnet_disconnect (pVTab); +} + +static void +vnet_read_row (VirtualNetworkCursorPtr cursor) +{ +/* trying to read a "row" from Shortest Path solution */ + if (cursor->solution->CurrentRow == NULL) + cursor->eof = 1; + else + cursor->eof = 0; + return; +} + +static int +vnet_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) +{ +/* opening a new cursor */ + VirtualNetworkCursorPtr cursor = + (VirtualNetworkCursorPtr) + sqlite3_malloc (sizeof (VirtualNetworkCursor)); + if (cursor == NULL) + return SQLITE_ERROR; + cursor->pVtab = (VirtualNetworkPtr) pVTab; + cursor->solution = alloc_solution (); + cursor->eof = 0; + *ppCursor = (sqlite3_vtab_cursor *) cursor; + return SQLITE_OK; +} + +static int +vnet_close (sqlite3_vtab_cursor * pCursor) +{ +/* closing the cursor */ + VirtualNetworkCursorPtr cursor = (VirtualNetworkCursorPtr) pCursor; + delete_solution (cursor->solution); + sqlite3_free (pCursor); + return SQLITE_OK; +} + +static int +vnet_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, + int argc, sqlite3_value ** argv) +{ +/* setting up a cursor filter */ + int node_code = 0; + VirtualNetworkCursorPtr cursor = (VirtualNetworkCursorPtr) pCursor; + VirtualNetworkPtr net = (VirtualNetworkPtr) cursor->pVtab; + if (idxStr) + idxStr = idxStr; /* unused arg warning suppression */ + node_code = net->graph->NodeCode; + reset_solution (cursor->solution); + cursor->eof = 1; + if (idxNum == 1 && argc == 2) + { + /* retrieving the Shortest Path From/To params */ + if (node_code) + { + /* Nodes are identified by TEXT Codes */ + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + cursor->solution->From = + find_node_by_code (net->graph, + (char *) + sqlite3_value_text (argv[0])); + if (sqlite3_value_type (argv[1]) == SQLITE_TEXT) + cursor->solution->To = + find_node_by_code (net->graph, + (char *) + sqlite3_value_text (argv[1])); + } + else + { + /* Nodes are identified by INT Ids */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + cursor->solution->From = + find_node_by_id (net->graph, + sqlite3_value_int (argv[0])); + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + cursor->solution->To = + find_node_by_id (net->graph, + sqlite3_value_int (argv[1])); + } + } + if (idxNum == 2 && argc == 2) + { + /* retrieving the Shortest Path To/From params */ + if (node_code) + { + /* Nodes are identified by TEXT Codes */ + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + cursor->solution->To = + find_node_by_code (net->graph, + (char *) + sqlite3_value_text (argv[0])); + if (sqlite3_value_type (argv[1]) == SQLITE_TEXT) + cursor->solution->From = + find_node_by_code (net->graph, + (char *) + sqlite3_value_text (argv[1])); + } + else + { + /* Nodes are identified by INT Ids */ + if (sqlite3_value_type (argv[0]) == SQLITE_INTEGER) + cursor->solution->To = + find_node_by_id (net->graph, + sqlite3_value_int (argv[0])); + if (sqlite3_value_type (argv[1]) == SQLITE_INTEGER) + cursor->solution->From = + find_node_by_id (net->graph, + sqlite3_value_int (argv[1])); + } + } + if (cursor->solution->From && cursor->solution->To) + { + cursor->eof = 0; + if (net->currentAlgorithm == VNET_A_STAR_ALGORITHM) + a_star_solve (net->db, net->graph, net->routing, + cursor->solution); + else + dijkstra_solve (net->db, net->graph, net->routing, + cursor->solution); + return SQLITE_OK; + } + cursor->eof = 0; + return SQLITE_OK; +} + +static int +vnet_next (sqlite3_vtab_cursor * pCursor) +{ +/* fetching a next row from cursor */ + VirtualNetworkCursorPtr cursor = (VirtualNetworkCursorPtr) pCursor; + if (cursor->solution->CurrentRowId == 0) + cursor->solution->CurrentRow = cursor->solution->First; + else + cursor->solution->CurrentRow = cursor->solution->CurrentRow->Next; + if (!(cursor->solution->CurrentRow)) + { + cursor->eof = 1; + return SQLITE_OK; + } + (cursor->solution->CurrentRowId)++; + vnet_read_row (cursor); + return SQLITE_OK; +} + +static int +vnet_eof (sqlite3_vtab_cursor * pCursor) +{ +/* cursor EOF */ + VirtualNetworkCursorPtr cursor = (VirtualNetworkCursorPtr) pCursor; + return cursor->eof; +} + +static int +vnet_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, + int column) +{ +/* fetching value for the Nth column */ + RowSolutionPtr row; + int node_code = 0; + const char *algorithm; + VirtualNetworkCursorPtr cursor = (VirtualNetworkCursorPtr) pCursor; + VirtualNetworkPtr net = (VirtualNetworkPtr) cursor->pVtab; + node_code = net->graph->NodeCode; + if (cursor->solution->CurrentRow == 0) + { + /* special case: this one is the solution summary */ + if (column == 0) + { + /* the currently used Algorithm */ + if (net->currentAlgorithm == VNET_A_STAR_ALGORITHM) + algorithm = "A*"; + else + algorithm = "Dijkstra"; + sqlite3_result_text (pContext, algorithm, strlen (algorithm), + SQLITE_STATIC); + } + if (cursor->solution->From == NULL || cursor->solution->To == NULL) + { + /* empty [uninitialized] solution */ + if (column > 0) + sqlite3_result_null (pContext); + return SQLITE_OK; + } + if (column == 1) + { + /* the ArcRowId column */ + sqlite3_result_null (pContext); + } + if (column == 2) + { + /* the NodeFrom column */ + if (node_code) + sqlite3_result_text (pContext, cursor->solution->From->Code, + strlen (cursor->solution->From->Code), + SQLITE_STATIC); + else + sqlite3_result_int64 (pContext, cursor->solution->From->Id); + } + if (column == 3) + { + /* the NodeTo column */ + if (node_code) + sqlite3_result_text (pContext, cursor->solution->To->Code, + strlen (cursor->solution->To->Code), + SQLITE_STATIC); + else + sqlite3_result_int64 (pContext, cursor->solution->To->Id); + } + if (column == 4) + { + /* the Cost column */ + sqlite3_result_double (pContext, cursor->solution->TotalCost); + } + if (column == 5) + { + /* the Geometry column */ + if (!(cursor->solution->Geometry)) + sqlite3_result_null (pContext); + else + { + /* builds the BLOB geometry to be returned */ + int len; + unsigned char *p_result = NULL; + gaiaToSpatiaLiteBlobWkb (cursor->solution->Geometry, + &p_result, &len); + sqlite3_result_blob (pContext, p_result, len, free); + } + } + if (column == 6) + { + /* the [optional] Name column */ + sqlite3_result_null (pContext); + } + } + else + { + /* ordinary case: this one is an Arc used by the solution */ + row = cursor->solution->CurrentRow; + if (column == 0) + { + /* the currently used Algorithm */ + if (net->currentAlgorithm == VNET_A_STAR_ALGORITHM) + algorithm = "A*"; + else + algorithm = "Dijkstra"; + sqlite3_result_text (pContext, algorithm, strlen (algorithm), + SQLITE_STATIC); + } + if (column == 1) + { + /* the ArcRowId column */ + sqlite3_result_int64 (pContext, row->Arc->ArcRowid); + } + if (column == 2) + { + /* the NodeFrom column */ + if (node_code) + sqlite3_result_text (pContext, row->Arc->NodeFrom->Code, + strlen (row->Arc->NodeFrom->Code), + SQLITE_STATIC); + else + sqlite3_result_int64 (pContext, row->Arc->NodeFrom->Id); + } + if (column == 3) + { + /* the NodeTo column */ + if (node_code) + sqlite3_result_text (pContext, row->Arc->NodeTo->Code, + strlen (row->Arc->NodeTo->Code), + SQLITE_STATIC); + else + sqlite3_result_int64 (pContext, row->Arc->NodeTo->Id); + } + if (column == 4) + { + /* the Cost column */ + sqlite3_result_double (pContext, row->Arc->Cost); + } + if (column == 5) + { + /* the Geometry column */ + sqlite3_result_null (pContext); + } + if (column == 6) + { + /* the [optional] Name column */ + if (row->Name) + sqlite3_result_text (pContext, row->Name, + strlen (row->Name), SQLITE_STATIC); + else + sqlite3_result_null (pContext); + } + } + return SQLITE_OK; +} + +static int +vnet_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) +{ +/* fetching the ROWID */ + VirtualNetworkCursorPtr cursor = (VirtualNetworkCursorPtr) pCursor; + *pRowid = cursor->solution->CurrentRowId; + return SQLITE_OK; +} + +static int +vnet_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, + sqlite_int64 * pRowid) +{ +/* generic update [INSERT / UPDATE / DELETE */ + VirtualNetworkPtr p_vtab = (VirtualNetworkPtr) pVTab; + if (pRowid) + pRowid = pRowid; /* unused arg warning suppression */ + if (argc == 1) + { + /* performing a DELETE is forbidden */ + return SQLITE_READONLY; + } + else + { + if (sqlite3_value_type (argv[0]) == SQLITE_NULL) + { + /* performing an INSERT is forbidden */ + return SQLITE_READONLY; + } + else + { + /* performing an UPDATE */ + if (argc == 9) + { + p_vtab->currentAlgorithm = VNET_DIJKSTRA_ALGORITHM; + if (sqlite3_value_type (argv[2]) == SQLITE_TEXT) + { + const unsigned char *algorithm = + sqlite3_value_text (argv[2]); + if (strcmp ((char *) algorithm, "A*") == 0) + p_vtab->currentAlgorithm = + VNET_A_STAR_ALGORITHM; + if (strcmp ((char *) algorithm, "a*") == 0) + p_vtab->currentAlgorithm = + VNET_A_STAR_ALGORITHM; + } + if (p_vtab->graph->AStar == 0) + p_vtab->currentAlgorithm = VNET_DIJKSTRA_ALGORITHM; + } + return SQLITE_OK; + } + } + return SQLITE_READONLY; +} + +static int +vnet_begin (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vnet_sync (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vnet_commit (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vnet_rollback (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +spliteVirtualNetworkInit (sqlite3 * db) +{ + int rc = SQLITE_OK; + my_net_module.iVersion = 1; + my_net_module.xCreate = &vnet_create; + my_net_module.xConnect = &vnet_connect; + my_net_module.xBestIndex = &vnet_best_index; + my_net_module.xDisconnect = &vnet_disconnect; + my_net_module.xDestroy = &vnet_destroy; + my_net_module.xOpen = &vnet_open; + my_net_module.xClose = &vnet_close; + my_net_module.xFilter = &vnet_filter; + my_net_module.xNext = &vnet_next; + my_net_module.xEof = &vnet_eof; + my_net_module.xColumn = &vnet_column; + my_net_module.xRowid = &vnet_rowid; + my_net_module.xUpdate = &vnet_update; + my_net_module.xBegin = &vnet_begin; + my_net_module.xSync = &vnet_sync; + my_net_module.xCommit = &vnet_commit; + my_net_module.xRollback = &vnet_rollback; + my_net_module.xFindFunction = NULL; + sqlite3_create_module_v2 (db, "VirtualNetwork", &my_net_module, NULL, 0); + return rc; +} + +SPATIALITE_PRIVATE int +virtualnetwork_extension_init (void *xdb) +{ + sqlite3 *db = (sqlite3 *) xdb; + return spliteVirtualNetworkInit (db); +} diff --git a/src/spatialite/src/spatialite/virtualshape.c b/src/spatialite/src/spatialite/virtualshape.c new file mode 100644 index 0000000..04fd607 --- /dev/null +++ b/src/spatialite/src/spatialite/virtualshape.c @@ -0,0 +1,1194 @@ +/* + + virtualshape.c -- SQLite3 extension [VIRTUAL TABLE accessing Shapefile] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include +#include +#include +#include + +#ifdef _WIN32 +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +#ifndef OMIT_ICONV /* if ICONV is disabled no SHP support is available */ + +static struct sqlite3_module my_shape_module; + +typedef struct VirtualShapeStruct +{ +/* extends the sqlite3_vtab struct */ + const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ + int nRef; /* # references: USED INTERNALLY BY SQLITE */ + char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ + sqlite3 *db; /* the sqlite db holding the virtual table */ + gaiaShapefilePtr Shp; /* the Shapefile struct */ + int Srid; /* the Shapefile SRID */ +} VirtualShape; +typedef VirtualShape *VirtualShapePtr; + +typedef struct VirtualShapeConstraintStruct +{ +/* a constraint to be verified for xFilter */ + int iColumn; /* Column on left-hand side of constraint */ + int op; /* Constraint operator */ + char valueType; /* value Type ('I'=int,'D'=double,'T'=text) */ + sqlite3_int64 intValue; /* Int64 comparison value */ + double dblValue; /* Double comparison value */ + char *txtValue; /* Text comparison value */ + struct VirtualShapeConstraintStruct *next; +} VirtualShapeConstraint; +typedef VirtualShapeConstraint *VirtualShapeConstraintPtr; + + +typedef struct VirtualShapeCursorStruct +{ +/* extends the sqlite3_vtab_cursor struct */ + VirtualShapePtr pVtab; /* Virtual table of this cursor */ + long current_row; /* the current row ID */ + int blobSize; + unsigned char *blobGeometry; + int eof; /* the EOF marker */ + VirtualShapeConstraintPtr firstConstraint; + VirtualShapeConstraintPtr lastConstraint; +} VirtualShapeCursor; +typedef VirtualShapeCursor *VirtualShapeCursorPtr; + +static int +vshp_has_metadata (sqlite3 * db, int *geotype) +{ +/* testing the layout of virts_geometry_columns table */ + char **results; + int ret; + int rows; + int columns; + int i; + int ok_virt_name = 0; + int ok_virt_geometry = 0; + int ok_srid = 0; + int ok_geometry_type = 0; + int ok_type = 0; + int ok_coord_dimension = 0; + + ret = + sqlite3_get_table (db, "PRAGMA table_info(virts_geometry_columns)", + &results, &rows, &columns, NULL); + if (ret != SQLITE_OK) + return 0; + for (i = 1; i <= rows; i++) + { + if (strcasecmp ("virt_name", results[(i * columns) + 1]) == 0) + ok_virt_name = 1; + if (strcasecmp ("virt_geometry", results[(i * columns) + 1]) == 0) + ok_virt_geometry = 1; + if (strcasecmp ("srid", results[(i * columns) + 1]) == 0) + ok_srid = 1; + if (strcasecmp ("geometry_type", results[(i * columns) + 1]) == 0) + ok_geometry_type = 1; + if (strcasecmp ("type", results[(i * columns) + 1]) == 0) + ok_type = 1; + if (strcasecmp ("coord_dimension", results[(i * columns) + 1]) == 0) + ok_coord_dimension = 1; + } + sqlite3_free_table (results); + + if (ok_virt_name && ok_virt_geometry && ok_srid && ok_geometry_type + && ok_coord_dimension) + { + *geotype = 1; + return 1; + } + if (ok_virt_name && ok_virt_geometry && ok_srid && ok_type) + { + *geotype = 0; + return 1; + } + return 0; +} + +static int +vshp_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* creates the virtual table connected to some shapefile */ + char *sql; + VirtualShapePtr p_vt; + char path[2048]; + char encoding[128]; + const char *pEncoding = NULL; + int len; + const char *pPath = NULL; + int srid; + gaiaDbfFieldPtr pFld; + int cnt; + int col_cnt; + int seed; + int dup; + int idup; + char *xname; + char **col_name = NULL; + int geotype; + gaiaOutBuffer sql_statement; + if (pAux) + pAux = pAux; /* unused arg warning suppression */ +/* checking for shapefile PATH */ + if (argc == 6) + { + pPath = argv[3]; + len = strlen (pPath); + if ((*(pPath + 0) == '\'' || *(pPath + 0) == '"') + && (*(pPath + len - 1) == '\'' || *(pPath + len - 1) == '"')) + { + /* the path is enclosed between quotes - we need to dequote it */ + strcpy (path, pPath + 1); + len = strlen (path); + *(path + len - 1) = '\0'; + } + else + strcpy (path, pPath); + pEncoding = argv[4]; + len = strlen (pEncoding); + if ((*(pEncoding + 0) == '\'' || *(pEncoding + 0) == '"') + && (*(pEncoding + len - 1) == '\'' + || *(pEncoding + len - 1) == '"')) + { + /* the charset-name is enclosed between quotes - we need to dequote it */ + strcpy (encoding, pEncoding + 1); + len = strlen (encoding); + *(encoding + len - 1) = '\0'; + } + else + strcpy (encoding, pEncoding); + srid = atoi (argv[5]); + if (srid < 0) + srid = -1; + } + else + { + *pzErr = + sqlite3_mprintf + ("[VirtualShape module] CREATE VIRTUAL: illegal arg list {shp_path, encoding, srid}"); + return SQLITE_ERROR; + } + p_vt = (VirtualShapePtr) sqlite3_malloc (sizeof (VirtualShape)); + if (!p_vt) + return SQLITE_NOMEM; + p_vt->pModule = &my_shape_module; + p_vt->nRef = 0; + p_vt->zErrMsg = NULL; + p_vt->db = db; + p_vt->Shp = gaiaAllocShapefile (); + p_vt->Srid = srid; +/* trying to open files etc in order to ensure we actually have a genuine shapefile */ + gaiaOpenShpRead (p_vt->Shp, path, encoding, "UTF-8"); + if (!(p_vt->Shp->Valid)) + { + /* something is going the wrong way; creating a stupid default table */ + xname = gaiaDoubleQuotedSql ((const char *) argv[2]); + sql = + sqlite3_mprintf + ("CREATE TABLE \"%s\" (PKUID INTEGER, Geometry BLOB)", xname); + free (xname); + if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) + { + sqlite3_free (sql); + *pzErr = + sqlite3_mprintf + ("[VirtualShape module] cannot build a table from Shapefile\n"); + return SQLITE_ERROR; + } + sqlite3_free (sql); + *ppVTab = (sqlite3_vtab *) p_vt; + return SQLITE_OK; + } + if (p_vt->Shp->Shape == 3 || p_vt->Shp->Shape == 13 || + p_vt->Shp->Shape == 23 || p_vt->Shp->Shape == 5 || + p_vt->Shp->Shape == 15 || p_vt->Shp->Shape == 25) + { + /* fixing anyway the Geometry type for LINESTRING/MULTILINESTRING or POLYGON/MULTIPOLYGON */ + gaiaShpAnalyze (p_vt->Shp); + } +/* preparing the COLUMNs for this VIRTUAL TABLE */ + gaiaOutBufferInitialize (&sql_statement); + xname = gaiaDoubleQuotedSql (argv[2]); + sql = + sqlite3_mprintf ("CREATE TABLE \"%s\" (PKUID INTEGER, Geometry BLOB", + xname); + free (xname); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); +/* checking for duplicate / illegal column names and antialising them */ + col_cnt = 0; + pFld = p_vt->Shp->Dbf->First; + while (pFld) + { + /* counting DBF fields */ + col_cnt++; + pFld = pFld->Next; + } + col_name = malloc (sizeof (char *) * col_cnt); + cnt = 0; + seed = 0; + pFld = p_vt->Shp->Dbf->First; + while (pFld) + { + xname = gaiaDoubleQuotedSql (pFld->Name); + dup = 0; + for (idup = 0; idup < cnt; idup++) + { + if (strcasecmp (xname, *(col_name + idup)) == 0) + dup = 1; + } + if (strcasecmp (xname, "\"PKUID\"") == 0) + dup = 1; + if (strcasecmp (xname, "\"Geometry\"") == 0) + dup = 1; + if (dup) + { + free (xname); + sql = sqlite3_mprintf ("COL_%d", seed++); + xname = gaiaDoubleQuotedSql (sql); + sqlite3_free (sql); + } + if (pFld->Type == 'N') + { + if (pFld->Decimals > 0 || pFld->Length > 18) + sql = sqlite3_mprintf (", \"%s\" DOUBLE", xname); + else + sql = sqlite3_mprintf (", \"%s\" INTEGER", xname); + } + else if (pFld->Type == 'F') + sql = sqlite3_mprintf (", \"%s\" DOUBLE", xname); + else + sql = + sqlite3_mprintf (", \"%s\" VARCHAR(%d)", xname, pFld->Length); + gaiaAppendToOutBuffer (&sql_statement, sql); + sqlite3_free (sql); + *(col_name + cnt) = xname; + cnt++; + pFld = pFld->Next; + } + gaiaAppendToOutBuffer (&sql_statement, ")"); + if (col_name) + { + /* releasing memory allocation for column names */ + for (cnt = 0; cnt < col_cnt; cnt++) + free (*(col_name + cnt)); + free (col_name); + } + if (sql_statement.Error == 0 && sql_statement.Buffer != NULL) + { + if (sqlite3_declare_vtab (db, sql_statement.Buffer) != SQLITE_OK) + { + *pzErr = + sqlite3_mprintf + ("[VirtualShape module] CREATE VIRTUAL: invalid SQL statement \"%s\"", + sql_statement.Buffer); + gaiaOutBufferReset (&sql_statement); + return SQLITE_ERROR; + } + } + gaiaOutBufferReset (&sql_statement); + *ppVTab = (sqlite3_vtab *) p_vt; + + if (vshp_has_metadata (db, &geotype)) + { + /* registering the Virtual Geometry */ + if (geotype) + { + int xtype = 0; + int xdims = 0; + switch (p_vt->Shp->EffectiveType) + { + case GAIA_POINT: + switch (p_vt->Shp->EffectiveDims) + { + case GAIA_XY_Z_M: + xtype = 3001; + xdims = 4; + break; + case GAIA_XY_M: + xtype = 2001; + xdims = 3; + break; + case GAIA_XY_Z: + xtype = 1001; + xdims = 3; + break; + default: + xtype = 1; + xdims = 2; + break; + }; + break; + case GAIA_LINESTRING: + switch (p_vt->Shp->EffectiveDims) + { + case GAIA_XY_Z_M: + xtype = 3002; + xdims = 4; + break; + case GAIA_XY_M: + xtype = 2002; + xdims = 3; + break; + case GAIA_XY_Z: + xtype = 1002; + xdims = 3; + break; + default: + xtype = 2; + xdims = 2; + break; + }; + break; + case GAIA_POLYGON: + switch (p_vt->Shp->EffectiveDims) + { + case GAIA_XY_Z_M: + xtype = 3003; + xdims = 4; + break; + case GAIA_XY_M: + xtype = 2003; + xdims = 3; + break; + case GAIA_XY_Z: + xtype = 1003; + xdims = 3; + break; + default: + xtype = 3; + xdims = 2; + break; + }; + break; + case GAIA_MULTIPOINT: + switch (p_vt->Shp->EffectiveDims) + { + case GAIA_XY_Z_M: + xtype = 3004; + xdims = 4; + break; + case GAIA_XY_M: + xtype = 2004; + xdims = 3; + break; + case GAIA_XY_Z: + xtype = 1004; + xdims = 3; + break; + default: + xtype = 4; + xdims = 2; + break; + }; + break; + case GAIA_MULTILINESTRING: + switch (p_vt->Shp->EffectiveDims) + { + case GAIA_XY_Z_M: + xtype = 3005; + xdims = 4; + break; + case GAIA_XY_M: + xtype = 2005; + xdims = 3; + break; + case GAIA_XY_Z: + xtype = 1005; + xdims = 3; + break; + default: + xtype = 5; + xdims = 2; + break; + }; + break; + case GAIA_MULTIPOLYGON: + switch (p_vt->Shp->EffectiveDims) + { + case GAIA_XY_Z_M: + xtype = 3006; + xdims = 4; + break; + case GAIA_XY_M: + xtype = 2006; + xdims = 3; + break; + case GAIA_XY_Z: + xtype = 1006; + xdims = 3; + break; + default: + xtype = 6; + xdims = 2; + break; + }; + break; + }; + sql = + sqlite3_mprintf + ("INSERT OR IGNORE INTO virts_geometry_columns " + "(virt_name, virt_geometry, geometry_type, coord_dimension, srid) " + "VALUES (Lower(%Q), 'geometry', %d, %d, %d)", argv[2], + xtype, xdims, p_vt->Srid); + } + else + { + const char *xgtype = "GEOMETRY"; + switch (p_vt->Shp->EffectiveType) + { + case GAIA_POINT: + xgtype = "POINT"; + break; + case GAIA_LINESTRING: + xgtype = "LINESTRING"; + break; + case GAIA_POLYGON: + xgtype = "POLYGON"; + break; + case GAIA_MULTIPOINT: + xgtype = "MULTIPOINT"; + break; + case GAIA_MULTILINESTRING: + xgtype = "MULTILINESTRING"; + break; + case GAIA_MULTIPOLYGON: + xgtype = "MULTIPOLYGON"; + break; + }; + sql = + sqlite3_mprintf + ("INSERT OR IGNORE INTO virts_geometry_columns " + "(virt_name, virt_geometry, type, srid) " + "VALUES (Lower(%Q), 'geometry', %Q, %d)", argv[2], xgtype, + p_vt->Srid); + } + sqlite3_exec (db, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + if (checkSpatialMetaData (db) == 3) + { + /* current metadata style >= v.4.0.0 */ + + /* inserting a row into VIRTS_GEOMETRY_COLUMNS_AUTH */ + sql = sqlite3_mprintf ("INSERT OR IGNORE INTO " + "virts_geometry_columns_auth (virt_name, virt_geometry, hidden) " + "VALUES (Lower(%Q), 'geometry', 0)", argv[2]); + sqlite3_exec (db, sql, NULL, NULL, NULL); + sqlite3_free (sql); + + /* inserting a row into GEOMETRY_COLUMNS_STATISTICS */ + sql = sqlite3_mprintf ("INSERT OR IGNORE INTO " + "virts_geometry_columns_statistics (virt_name, virt_geometry) " + "VALUES (Lower(%Q), 'geometry')", argv[2]); + sqlite3_exec (db, sql, NULL, NULL, NULL); + sqlite3_free (sql); + } + + return SQLITE_OK; +} + +static int +vshp_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* connects the virtual table to some shapefile - simply aliases vshp_create() */ + return vshp_create (db, pAux, argc, argv, ppVTab, pzErr); +} + +static int +vshp_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIndex) +{ +/* best index selection */ + int i; + int iArg = 0; + char str[2048]; + char buf[64]; + + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + + *str = '\0'; + for (i = 0; i < pIndex->nConstraint; i++) + { + if (pIndex->aConstraint[i].usable) + { + iArg++; + pIndex->aConstraintUsage[i].argvIndex = iArg; + pIndex->aConstraintUsage[i].omit = 1; + sprintf (buf, "%d:%d,", pIndex->aConstraint[i].iColumn, + pIndex->aConstraint[i].op); + strcat (str, buf); + } + } + if (*str != '\0') + { + pIndex->idxStr = sqlite3_mprintf ("%s", str); + pIndex->needToFreeIdxStr = 1; + } + + return SQLITE_OK; +} + +static int +vshp_disconnect (sqlite3_vtab * pVTab) +{ +/* disconnects the virtual table */ + VirtualShapePtr p_vt = (VirtualShapePtr) pVTab; + if (p_vt->Shp) + gaiaFreeShapefile (p_vt->Shp); + sqlite3_free (p_vt); + return SQLITE_OK; +} + +static int +vshp_destroy (sqlite3_vtab * pVTab) +{ +/* destroys the virtual table - simply aliases vshp_disconnect() */ + return vshp_disconnect (pVTab); +} + +static void +vshp_read_row (VirtualShapeCursorPtr cursor) +{ +/* trying to read a "row" from shapefile */ + int ret; + gaiaGeomCollPtr geom; + if (!(cursor->pVtab->Shp->Valid)) + { + cursor->eof = 1; + return; + } + if (cursor->blobGeometry) + { + free (cursor->blobGeometry); + cursor->blobGeometry = NULL; + } + ret = + gaiaReadShpEntity (cursor->pVtab->Shp, cursor->current_row, + cursor->pVtab->Srid); + if (!ret) + { + if (!(cursor->pVtab->Shp->LastError)) /* normal SHP EOF */ + { + cursor->eof = 1; + return; + } + /* an error occurred */ + spatialite_e ("%s\n", cursor->pVtab->Shp->LastError); + cursor->eof = 1; + return; + } + cursor->current_row++; + geom = cursor->pVtab->Shp->Dbf->Geometry; + if (geom) + { + /* preparing the BLOB representing Geometry */ + gaiaToSpatiaLiteBlobWkb (geom, &(cursor->blobGeometry), + &(cursor->blobSize)); + } +} + +static int +vshp_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) +{ +/* opening a new cursor */ + VirtualShapeCursorPtr cursor = + (VirtualShapeCursorPtr) sqlite3_malloc (sizeof (VirtualShapeCursor)); + if (cursor == NULL) + return SQLITE_ERROR; + cursor->firstConstraint = NULL; + cursor->lastConstraint = NULL; + cursor->pVtab = (VirtualShapePtr) pVTab; + cursor->current_row = 0; + cursor->blobGeometry = NULL; + cursor->blobSize = 0; + cursor->eof = 0; + *ppCursor = (sqlite3_vtab_cursor *) cursor; + vshp_read_row (cursor); + return SQLITE_OK; +} + +static void +vshp_free_constraints (VirtualShapeCursorPtr cursor) +{ +/* memory cleanup - cursor constraints */ + VirtualShapeConstraintPtr pC; + VirtualShapeConstraintPtr pCn; + pC = cursor->firstConstraint; + while (pC) + { + pCn = pC->next; + if (pC->txtValue) + sqlite3_free (pC->txtValue); + sqlite3_free (pC); + pC = pCn; + } + cursor->firstConstraint = NULL; + cursor->lastConstraint = NULL; +} + +static int +vshp_close (sqlite3_vtab_cursor * pCursor) +{ +/* closing the cursor */ + VirtualShapeCursorPtr cursor = (VirtualShapeCursorPtr) pCursor; + if (cursor->blobGeometry) + free (cursor->blobGeometry); + vshp_free_constraints (cursor); + sqlite3_free (pCursor); + return SQLITE_OK; +} + +static int +vshp_parse_constraint (const char *str, int index, int *iColumn, int *op) +{ +/* parsing a constraint string */ + char buf[64]; + const char *in = str; + char *out = buf; + int i = 0; + int found = 0; + + *out = '\0'; + while (*in != '\0') + { + if (*in == ',') + { + if (index == i) + { + *out = '\0'; + found = 1; + break; + } + i++; + in++; + continue; + } + if (index == i) + *out++ = *in; + in++; + } + if (!found) + return 0; + in = buf; + for (i = 0; i < (int) strlen (buf); i++) + { + if (buf[i] == ':') + { + buf[i] = '\0'; + *iColumn = atoi (buf); + *op = atoi (buf + i + 1); + return 1; + } + in++; + } + return 0; +} + +static int +vshp_eval_constraints (VirtualShapeCursorPtr cursor) +{ +/* evaluating Filter constraints */ + int nCol; + gaiaDbfFieldPtr pFld; + VirtualShapeConstraintPtr pC = cursor->firstConstraint; + if (pC == NULL) + return 1; + while (pC) + { + int ok = 0; + if (pC->iColumn == 0) + { + /* the PRIMARY KEY column */ + if (pC->valueType == 'I') + { + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (cursor->current_row == pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (cursor->current_row > pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (cursor->current_row <= pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (cursor->current_row < pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (cursor->current_row >= pC->intValue) + ok = 1; + break; + }; + } + goto done; + } + nCol = 2; + pFld = cursor->pVtab->Shp->Dbf->First; + while (pFld) + { + if (nCol == pC->iColumn) + { + if ((pFld->Value)) + { + switch (pFld->Value->Type) + { + case GAIA_INT_VALUE: + if (pC->valueType == 'I') + { + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (pFld->Value->IntValue == + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (pFld->Value->IntValue > + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (pFld->Value->IntValue <= + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (pFld->Value->IntValue < + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (pFld->Value->IntValue >= + pC->intValue) + ok = 1; + break; + }; + } + break; + case GAIA_DOUBLE_VALUE: + if (pC->valueType == 'I') + { + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (pFld->Value->DblValue == + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (pFld->Value->DblValue > + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (pFld->Value->DblValue <= + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (pFld->Value->DblValue < + pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (pFld->Value->DblValue >= + pC->intValue) + ok = 1; + break; + }; + } + if (pC->valueType == 'D') + { + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (pFld->Value->DblValue == + pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (pFld->Value->DblValue > + pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (pFld->Value->DblValue <= + pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (pFld->Value->DblValue < + pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (pFld->Value->DblValue >= + pC->dblValue) + ok = 1; + break; + } + } + break; + case GAIA_TEXT_VALUE: + if (pC->valueType == 'T' && pC->txtValue) + { + int ret; + ret = + strcmp (pFld->Value->TxtValue, + pC->txtValue); + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (ret == 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (ret > 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (ret <= 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (ret < 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (ret >= 0) + ok = 1; + break; + }; + } + break; + }; + } + goto done; + } + nCol++; + pFld = pFld->Next; + } + done: + if (!ok) + return 0; + pC = pC->next; + } + return 1; +} + +static int +vshp_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, + int argc, sqlite3_value ** argv) +{ +/* setting up a cursor filter */ + int i; + int iColumn; + int op; + int len; + VirtualShapeConstraintPtr pC; + VirtualShapeCursorPtr cursor = (VirtualShapeCursorPtr) pCursor; + if (idxNum) + idxNum = idxNum; /* unused arg warning suppression */ + +/* resetting any previously set filter constraint */ + vshp_free_constraints (cursor); + + for (i = 0; i < argc; i++) + { + if (!vshp_parse_constraint (idxStr, i, &iColumn, &op)) + continue; + pC = sqlite3_malloc (sizeof (VirtualShapeConstraint)); + if (!pC) + continue; + pC->iColumn = iColumn; + pC->op = op; + pC->valueType = '\0'; + pC->txtValue = NULL; + pC->next = NULL; + + if (sqlite3_value_type (argv[i]) == SQLITE_INTEGER) + { + pC->valueType = 'I'; + pC->intValue = sqlite3_value_int64 (argv[i]); + } + if (sqlite3_value_type (argv[i]) == SQLITE_FLOAT) + { + pC->valueType = 'D'; + pC->dblValue = sqlite3_value_double (argv[i]); + } + if (sqlite3_value_type (argv[i]) == SQLITE_TEXT) + { + pC->valueType = 'T'; + len = sqlite3_value_bytes (argv[i]) + 1; + pC->txtValue = (char *) sqlite3_malloc (len); + if (pC->txtValue) + strcpy (pC->txtValue, + (char *) sqlite3_value_text (argv[i])); + } + if (cursor->firstConstraint == NULL) + cursor->firstConstraint = pC; + if (cursor->lastConstraint != NULL) + cursor->lastConstraint->next = pC; + cursor->lastConstraint = pC; + } + + cursor->current_row = 0; + if (cursor->blobGeometry) + free (cursor->blobGeometry); + cursor->blobGeometry = NULL; + cursor->blobSize = 0; + cursor->eof = 0; + while (1) + { + vshp_read_row (cursor); + if (cursor->eof) + break; + if (vshp_eval_constraints (cursor)) + break; + } + return SQLITE_OK; +} + +static int +vshp_next (sqlite3_vtab_cursor * pCursor) +{ +/* fetching a next row from cursor */ + VirtualShapeCursorPtr cursor = (VirtualShapeCursorPtr) pCursor; + while (1) + { + vshp_read_row (cursor); + if (cursor->eof) + break; + if (vshp_eval_constraints (cursor)) + break; + } + return SQLITE_OK; +} + +static int +vshp_eof (sqlite3_vtab_cursor * pCursor) +{ +/* cursor EOF */ + VirtualShapeCursorPtr cursor = (VirtualShapeCursorPtr) pCursor; + return cursor->eof; +} + +static int +vshp_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, + int column) +{ +/* fetching value for the Nth column */ + int nCol = 2; + gaiaGeomCollPtr geom; + gaiaDbfFieldPtr pFld; + VirtualShapeCursorPtr cursor = (VirtualShapeCursorPtr) pCursor; + if (column == 0) + { + /* the PRIMARY KEY column */ + sqlite3_result_int (pContext, cursor->current_row); + return SQLITE_OK; + } + if (column == 1) + { + /* the GEOMETRY column */ + geom = cursor->pVtab->Shp->Dbf->Geometry; + if (geom) + sqlite3_result_blob (pContext, cursor->blobGeometry, + cursor->blobSize, SQLITE_STATIC); + else + sqlite3_result_null (pContext); + return SQLITE_OK; + } + pFld = cursor->pVtab->Shp->Dbf->First; + while (pFld) + { + /* column values */ + if (nCol == column) + { + if (!(pFld->Value)) + sqlite3_result_null (pContext); + else + { + switch (pFld->Value->Type) + { + case GAIA_INT_VALUE: + sqlite3_result_int64 (pContext, + pFld->Value->IntValue); + break; + case GAIA_DOUBLE_VALUE: + sqlite3_result_double (pContext, + pFld->Value->DblValue); + break; + case GAIA_TEXT_VALUE: + sqlite3_result_text (pContext, + pFld->Value->TxtValue, + strlen (pFld->Value->TxtValue), + SQLITE_STATIC); + break; + default: + sqlite3_result_null (pContext); + break; + } + } + break; + } + nCol++; + pFld = pFld->Next; + } + return SQLITE_OK; +} + +static int +vshp_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) +{ +/* fetching the ROWID */ + VirtualShapeCursorPtr cursor = (VirtualShapeCursorPtr) pCursor; + *pRowid = cursor->current_row; + return SQLITE_OK; +} + +static int +vshp_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, + sqlite_int64 * pRowid) +{ +/* generic update [INSERT / UPDATE / DELETE */ + if (pVTab || argc || argv || pRowid) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_READONLY; +} + +static int +vshp_begin (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vshp_sync (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vshp_commit (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vshp_rollback (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +spliteVirtualShapeInit (sqlite3 * db) +{ + int rc = SQLITE_OK; + my_shape_module.iVersion = 1; + my_shape_module.xCreate = &vshp_create; + my_shape_module.xConnect = &vshp_connect; + my_shape_module.xBestIndex = &vshp_best_index; + my_shape_module.xDisconnect = &vshp_disconnect; + my_shape_module.xDestroy = &vshp_destroy; + my_shape_module.xOpen = &vshp_open; + my_shape_module.xClose = &vshp_close; + my_shape_module.xFilter = &vshp_filter; + my_shape_module.xNext = &vshp_next; + my_shape_module.xEof = &vshp_eof; + my_shape_module.xColumn = &vshp_column; + my_shape_module.xRowid = &vshp_rowid; + my_shape_module.xUpdate = &vshp_update; + my_shape_module.xBegin = &vshp_begin; + my_shape_module.xSync = &vshp_sync; + my_shape_module.xCommit = &vshp_commit; + my_shape_module.xRollback = &vshp_rollback; + my_shape_module.xFindFunction = NULL; + sqlite3_create_module_v2 (db, "VirtualShape", &my_shape_module, NULL, 0); + return rc; +} + +SPATIALITE_PRIVATE int +virtualshape_extension_init (void *xdb) +{ + sqlite3 *db = (sqlite3 *) xdb; + return spliteVirtualShapeInit (db); +} + +#endif /* ICONV enabled/disabled */ diff --git a/src/spatialite/src/spatialite/virtualspatialindex.c b/src/spatialite/src/spatialite/virtualspatialindex.c new file mode 100644 index 0000000..604742d --- /dev/null +++ b/src/spatialite/src/spatialite/virtualspatialindex.c @@ -0,0 +1,930 @@ +/* + + virtualspatialindex.c -- SQLite3 extension [VIRTUAL TABLE RTree metahandler] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include + +#include +#include +#include + +#ifdef _WIN32 +#define strcasecmp _stricmp +#define strncasecmp _strnicmp +#endif /* not WIN32 */ + +static struct sqlite3_module my_spidx_module; + + +/****************************************************************************** +/ +/ VirtualTable structs +/ +******************************************************************************/ + +typedef struct VirtualSpatialIndexStruct +{ +/* extends the sqlite3_vtab struct */ + const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ + int nRef; /* # references: USED INTERNALLY BY SQLITE */ + char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ + sqlite3 *db; /* the sqlite db holding the virtual table */ +} VirtualSpatialIndex; +typedef VirtualSpatialIndex *VirtualSpatialIndexPtr; + +typedef struct VirtualSpatialIndexCursorStruct +{ +/* extends the sqlite3_vtab_cursor struct */ + VirtualSpatialIndexPtr pVtab; /* Virtual table of this cursor */ + int eof; /* the EOF marker */ + sqlite3_stmt *stmt; + sqlite3_int64 CurrentRowId; +} VirtualSpatialIndexCursor; +typedef VirtualSpatialIndexCursor *VirtualSpatialIndexCursorPtr; + +static int +vspidx_check_view_rtree (sqlite3 * sqlite, const char *table_name, + const char *geom_column, char **real_table, + char **real_geom) +{ +/* checks if the required RTree is actually defined - SpatialView */ + sqlite3_stmt *stmt; + char *sql_statement; + int ret; + int count = 0; + char *rt = NULL; + char *rg = NULL; + +/* testing if views_geometry_columns exists */ + sql_statement = sqlite3_mprintf ("SELECT tbl_name FROM sqlite_master " + "WHERE type = 'table' AND tbl_name = 'views_geometry_columns'"); + ret = + sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + count++; + } + sqlite3_finalize (stmt); + if (count != 1) + return 0; + count = 0; + +/* attempting to find the RTree Geometry Column */ + sql_statement = + sqlite3_mprintf ("SELECT a.f_table_name, a.f_geometry_column " + "FROM views_geometry_columns AS a " + "JOIN geometry_columns AS b ON (" + "Upper(a.f_table_name) = Upper(b.f_table_name) AND " + "Upper(a.f_geometry_column) = Upper(b.f_geometry_column)) " + "WHERE Upper(a.view_name) = Upper(%Q) " + "AND Upper(a.view_geometry) = Upper(%Q) AND b.spatial_index_enabled = 1", + table_name, geom_column); + ret = + sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + const char *v = (const char *) sqlite3_column_text (stmt, 0); + int len = sqlite3_column_bytes (stmt, 0); + if (rt) + free (rt); + rt = malloc (len + 1); + strcpy (rt, v); + v = (const char *) sqlite3_column_text (stmt, 1); + len = sqlite3_column_bytes (stmt, 1); + if (rg) + free (rg); + rg = malloc (len + 1); + strcpy (rg, v); + count++; + } + } + sqlite3_finalize (stmt); + if (count != 1) + return 0; + if (!validateRowid (sqlite, table_name)) + { + free (rt); + free (rg); + return 0; + } + *real_table = rt; + *real_geom = rg; + return 1; +} + +static int +vspidx_check_rtree (sqlite3 * sqlite, const char *db_prefix, + const char *table_name, const char *geom_column, + char **real_table, char **real_geom) +{ +/* checks if the required RTree is actually defined */ + sqlite3_stmt *stmt; + char *sql_statement; + int ret; + int count = 0; + char *rt = NULL; + char *rg = NULL; + + if (db_prefix == NULL) + { + sql_statement = + sqlite3_mprintf + ("SELECT f_table_name, f_geometry_column FROM geometry_columns " + "WHERE Upper(f_table_name) = Upper(%Q) AND " + "Upper(f_geometry_column) = Upper(%Q) AND spatial_index_enabled = 1", + table_name, geom_column); + } + else + { + char *quoted_db = gaiaDoubleQuotedSql (db_prefix); + sql_statement = + sqlite3_mprintf + ("SELECT f_table_name, f_geometry_column FROM \"%s\".geometry_columns " + "WHERE Upper(f_table_name) = Upper(%Q) AND " + "Upper(f_geometry_column) = Upper(%Q) AND spatial_index_enabled = 1", + quoted_db, table_name, geom_column); + free (quoted_db); + } + ret = + sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + const char *v = (const char *) sqlite3_column_text (stmt, 0); + int len = sqlite3_column_bytes (stmt, 0); + if (rt) + free (rt); + rt = malloc (len + 1); + strcpy (rt, v); + v = (const char *) sqlite3_column_text (stmt, 1); + len = sqlite3_column_bytes (stmt, 1); + if (rg) + free (rg); + rg = malloc (len + 1); + strcpy (rg, v); + count++; + } + } + sqlite3_finalize (stmt); + if (count != 1) + return vspidx_check_view_rtree (sqlite, table_name, geom_column, + real_table, real_geom); + else + { + *real_table = rt; + *real_geom = rg; + } + return 1; +} + +static int +vspidx_find_view_rtree (sqlite3 * sqlite, const char *db_prefix, + const char *table_name, char **real_table, + char **real_geom) +{ +/* attempts to find the corresponding RTree Geometry Column - SpatialView */ + sqlite3_stmt *stmt; + char *sql_statement; + int ret; + int count = 0; + char *rt = NULL; + char *rg = NULL; + +/* testing if views_geometry_columns exists */ + if (db_prefix == NULL) + { + sql_statement = sqlite3_mprintf ("SELECT tbl_name FROM sqlite_master " + "WHERE type = 'table' AND tbl_name = 'views_geometry_columns'"); + } + else + { + char *quoted_db = gaiaDoubleQuotedSql (db_prefix); + sql_statement = + sqlite3_mprintf ("SELECT tbl_name FROM \"%s\".sqlite_master " + "WHERE type = 'table' AND tbl_name = 'views_geometry_columns'", + quoted_db); + free (quoted_db); + } + ret = + sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + count++; + } + sqlite3_finalize (stmt); + if (count != 1) + return 0; + count = 0; + +/* attempting to find the RTree Geometry Column */ + if (db_prefix == NULL) + { + sql_statement = + sqlite3_mprintf ("SELECT a.f_table_name, a.f_geometry_column " + "FROM views_geometry_columns AS a " + "JOIN geometry_columns AS b ON (" + "Upper(a.f_table_name) = Upper(b.f_table_name) AND " + "Upper(a.f_geometry_column) = Upper(b.f_geometry_column)) " + "WHERE Upper(a.view_name) = Upper(%Q) AND b.spatial_index_enabled = 1", + table_name); + } + else + { + char *quoted_db = gaiaDoubleQuotedSql (db_prefix); + sql_statement = + sqlite3_mprintf ("SELECT a.f_table_name, a.f_geometry_column " + "FROM \"%s\".views_geometry_columns AS a " + "JOIN \"%s\".geometry_columns AS b ON (" + "Upper(a.f_table_name) = Upper(b.f_table_name) AND " + "Upper(a.f_geometry_column) = Upper(b.f_geometry_column)) " + "WHERE Upper(a.view_name) = Upper(%Q) AND b.spatial_index_enabled = 1", + quoted_db, quoted_db, table_name); + free (quoted_db); + } + ret = + sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + const char *v = (const char *) sqlite3_column_text (stmt, 0); + int len = sqlite3_column_bytes (stmt, 0); + if (rt) + free (rt); + rt = malloc (len + 1); + strcpy (rt, v); + v = (const char *) sqlite3_column_text (stmt, 1); + len = sqlite3_column_bytes (stmt, 1); + if (rg) + free (rg); + rg = malloc (len + 1); + strcpy (rg, v); + count++; + } + } + sqlite3_finalize (stmt); + if (count != 1) + return 0; + *real_table = rt; + *real_geom = rg; + return 1; +} + +static int +vspidx_find_rtree (sqlite3 * sqlite, const char *db_prefix, + const char *table_name, char **real_table, char **real_geom) +{ +/* attempts to find the corresponding RTree Geometry Column */ + sqlite3_stmt *stmt; + char *sql_statement; + int ret; + int count = 0; + char *rt = NULL; + char *rg = NULL; + + if (db_prefix == NULL) + { + sql_statement = + sqlite3_mprintf + ("SELECT f_table_name, f_geometry_column FROM geometry_columns " + "WHERE Upper(f_table_name) = Upper(%Q) AND spatial_index_enabled = 1", + table_name); + } + else + { + char *quoted_db = gaiaDoubleQuotedSql (db_prefix); + sql_statement = + sqlite3_mprintf + ("SELECT f_table_name, f_geometry_column FROM \"%s\".geometry_columns " + "WHERE Upper(f_table_name) = Upper(%Q) AND spatial_index_enabled = 1", + quoted_db, table_name); + free (quoted_db); + } + ret = + sqlite3_prepare_v2 (sqlite, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + return 0; + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + const char *v = (const char *) sqlite3_column_text (stmt, 0); + int len = sqlite3_column_bytes (stmt, 0); + if (rt) + free (rt); + rt = malloc (len + 1); + strcpy (rt, v); + v = (const char *) sqlite3_column_text (stmt, 1); + len = sqlite3_column_bytes (stmt, 1); + if (rg) + free (rg); + rg = malloc (len + 1); + strcpy (rg, v); + count++; + } + } + sqlite3_finalize (stmt); + if (count != 1) + return vspidx_find_view_rtree (sqlite, db_prefix, table_name, + real_table, real_geom); + else + { + *real_table = rt; + *real_geom = rg; + } + return 1; +} + +static void +vspidx_parse_table_name (const char *tn, char **db_prefix, char **table_name) +{ +/* attempting to extract an eventual DB prefix */ + int i; + int len = strlen (tn); + int i_dot = -1; + if (strncasecmp (tn, "DB=", 3) == 0) + { + int l_db; + int l_tbl; + for (i = 3; i < len; i++) + { + if (tn[i] == '.') + { + i_dot = i; + break; + } + } + if (i_dot > 1) + { + l_db = i_dot - 3; + l_tbl = len - (i_dot + 1); + *db_prefix = malloc (l_db + 1); + memset (*db_prefix, '\0', l_db + 1); + memcpy (*db_prefix, tn + 3, l_db); + *table_name = malloc (l_tbl + 1); + strcpy (*table_name, tn + i_dot + 1); + return; + } + } + *table_name = malloc (len + 1); + strcpy (*table_name, tn); +} + +static int +vspidx_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* creates the virtual table for R*Tree SpatialIndex metahandling */ + VirtualSpatialIndexPtr p_vt; + char *buf; + char *vtable; + char *xname; + if (pAux) + pAux = pAux; /* unused arg warning suppression */ + if (argc == 3) + { + vtable = gaiaDequotedSql ((char *) argv[2]); + } + else + { + *pzErr = + sqlite3_mprintf + ("[VirtualSpatialIndex module] CREATE VIRTUAL: illegal arg list {void}\n"); + return SQLITE_ERROR; + } + p_vt = + (VirtualSpatialIndexPtr) sqlite3_malloc (sizeof (VirtualSpatialIndex)); + if (!p_vt) + return SQLITE_NOMEM; + p_vt->db = db; + p_vt->pModule = &my_spidx_module; + p_vt->nRef = 0; + p_vt->zErrMsg = NULL; +/* preparing the COLUMNs for this VIRTUAL TABLE */ + xname = gaiaDoubleQuotedSql (vtable); + buf = sqlite3_mprintf ("CREATE TABLE \"%s\" (f_table_name TEXT, " + "f_geometry_column TEXT, search_frame BLOB)", xname); + free (xname); + free (vtable); + if (sqlite3_declare_vtab (db, buf) != SQLITE_OK) + { + sqlite3_free (buf); + *pzErr = + sqlite3_mprintf + ("[VirtualSpatialIndex module] CREATE VIRTUAL: invalid SQL statement \"%s\"", + buf); + return SQLITE_ERROR; + } + sqlite3_free (buf); + *ppVTab = (sqlite3_vtab *) p_vt; + return SQLITE_OK; +} + +static int +vspidx_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* connects the virtual table - simply aliases vspidx_create() */ + return vspidx_create (db, pAux, argc, argv, ppVTab, pzErr); +} + +static int +vspidx_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIdxInfo) +{ +/* best index selection */ + int i; + int errors = 0; + int err = 1; + int table = 0; + int geom = 0; + int mbr = 0; + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + for (i = 0; i < pIdxInfo->nConstraint; i++) + { + /* verifying the constraints */ + struct sqlite3_index_constraint *p = &(pIdxInfo->aConstraint[i]); + if (p->usable) + { + if (p->iColumn == 0 && p->op == SQLITE_INDEX_CONSTRAINT_EQ) + table++; + else if (p->iColumn == 1 && p->op == SQLITE_INDEX_CONSTRAINT_EQ) + geom++; + else if (p->iColumn == 2 && p->op == SQLITE_INDEX_CONSTRAINT_EQ) + mbr++; + else + errors++; + } + } + if (table == 1 && (geom == 0 || geom == 1) && mbr == 1 && errors == 0) + { + /* this one is a valid SpatialIndex query */ + if (geom == 1) + pIdxInfo->idxNum = 1; + else + pIdxInfo->idxNum = 2; + pIdxInfo->estimatedCost = 1.0; + for (i = 0; i < pIdxInfo->nConstraint; i++) + { + if (pIdxInfo->aConstraint[i].usable) + { + pIdxInfo->aConstraintUsage[i].argvIndex = i + 1; + pIdxInfo->aConstraintUsage[i].omit = 1; + } + } + err = 0; + } + if (err) + { + /* illegal query */ + pIdxInfo->idxNum = 0; + } + return SQLITE_OK; +} + +static int +vspidx_disconnect (sqlite3_vtab * pVTab) +{ +/* disconnects the virtual table */ + VirtualSpatialIndexPtr p_vt = (VirtualSpatialIndexPtr) pVTab; + sqlite3_free (p_vt); + return SQLITE_OK; +} + +static int +vspidx_destroy (sqlite3_vtab * pVTab) +{ +/* destroys the virtual table - simply aliases vspidx_disconnect() */ + return vspidx_disconnect (pVTab); +} + +static int +vspidx_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) +{ +/* opening a new cursor */ + VirtualSpatialIndexCursorPtr cursor = + (VirtualSpatialIndexCursorPtr) + sqlite3_malloc (sizeof (VirtualSpatialIndexCursor)); + if (cursor == NULL) + return SQLITE_ERROR; + cursor->pVtab = (VirtualSpatialIndexPtr) pVTab; + cursor->stmt = NULL; + cursor->eof = 1; + *ppCursor = (sqlite3_vtab_cursor *) cursor; + return SQLITE_OK; +} + +static int +vspidx_close (sqlite3_vtab_cursor * pCursor) +{ +/* closing the cursor */ + VirtualSpatialIndexCursorPtr cursor = + (VirtualSpatialIndexCursorPtr) pCursor; + if (cursor->stmt) + sqlite3_finalize (cursor->stmt); + sqlite3_free (pCursor); + return SQLITE_OK; +} + +static int +vspidx_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, + int argc, sqlite3_value ** argv) +{ +/* setting up a cursor filter */ + char *db_prefix = NULL; + char *table_name = NULL; + char *geom_column; + char *xtable = NULL; + char *xgeom = NULL; + char *idx_name; + char *idx_nameQ; + char *sql_statement; + gaiaGeomCollPtr geom = NULL; + int ok_table = 0; + int ok_geom = 0; + const unsigned char *blob; + int size; + int exists; + int ret; + sqlite3_stmt *stmt; + float minx; + float miny; + float maxx; + float maxy; + double tic; + double tic2; + VirtualSpatialIndexCursorPtr cursor = + (VirtualSpatialIndexCursorPtr) pCursor; + VirtualSpatialIndexPtr spidx = (VirtualSpatialIndexPtr) cursor->pVtab; + if (idxStr) + idxStr = idxStr; /* unused arg warning suppression */ + cursor->eof = 1; + if (idxNum == 1 && argc == 3) + { + /* retrieving the Table/Column/MBR params */ + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + { + char *tn = (char *) sqlite3_value_text (argv[0]); + vspidx_parse_table_name (tn, &db_prefix, &table_name); + ok_table = 1; + } + if (sqlite3_value_type (argv[1]) == SQLITE_TEXT) + { + geom_column = (char *) sqlite3_value_text (argv[1]); + ok_geom = 1; + } + if (sqlite3_value_type (argv[2]) == SQLITE_BLOB) + { + blob = sqlite3_value_blob (argv[2]); + size = sqlite3_value_bytes (argv[2]); + geom = gaiaFromSpatiaLiteBlobWkb (blob, size); + } + if (ok_table && ok_geom && geom) + ; + else + { + /* invalid args */ + goto stop; + } + } + if (idxNum == 2 && argc == 2) + { + /* retrieving the Table/MBR params */ + if (sqlite3_value_type (argv[0]) == SQLITE_TEXT) + { + char *tn = (char *) sqlite3_value_text (argv[0]); + vspidx_parse_table_name (tn, &db_prefix, &table_name); + ok_table = 1; + } + if (sqlite3_value_type (argv[1]) == SQLITE_BLOB) + { + blob = sqlite3_value_blob (argv[1]); + size = sqlite3_value_bytes (argv[1]); + geom = gaiaFromSpatiaLiteBlobWkb (blob, size); + } + if (ok_table && geom) + ; + else + { + /* invalid args */ + goto stop; + } + } + +/* checking if the corresponding R*Tree exists */ + if (ok_geom) + exists = + vspidx_check_rtree (spidx->db, db_prefix, table_name, geom_column, + &xtable, &xgeom); + else + exists = + vspidx_find_rtree (spidx->db, db_prefix, table_name, &xtable, + &xgeom); + if (!exists) + goto stop; + +/* building the RTree query */ + idx_name = sqlite3_mprintf ("idx_%s_%s", xtable, xgeom); + idx_nameQ = gaiaDoubleQuotedSql (idx_name); + if (db_prefix == NULL) + { + sql_statement = sqlite3_mprintf ("SELECT pkid FROM \"%s\" WHERE " + "xmin <= ? AND xmax >= ? AND ymin <= ? AND ymax >= ?", + idx_nameQ); + } + else + { + char *quoted_db = gaiaDoubleQuotedSql (db_prefix); + sql_statement = + sqlite3_mprintf ("SELECT pkid FROM \"%s\".\"%s\" WHERE " + "xmin <= ? AND xmax >= ? AND ymin <= ? AND ymax >= ?", + quoted_db, idx_nameQ); + free (quoted_db); + } + free (idx_nameQ); + sqlite3_free (idx_name); + ret = + sqlite3_prepare_v2 (spidx->db, sql_statement, strlen (sql_statement), + &stmt, NULL); + sqlite3_free (sql_statement); + if (ret != SQLITE_OK) + goto stop; +/* binding stmt params [MBR] */ + gaiaMbrGeometry (geom); + +/* adjusting the MBR so to compensate for DOUBLE/FLOAT truncations */ + minx = (float) (geom->MinX); + miny = (float) (geom->MinY); + maxx = (float) (geom->MaxX); + maxy = (float) (geom->MaxY); + tic = fabs (geom->MinX - minx); + tic2 = fabs (geom->MinY - miny); + if (tic2 > tic) + tic = tic2; + tic2 = fabs (geom->MaxX - maxx); + if (tic2 > tic) + tic = tic2; + tic2 = fabs (geom->MaxY - maxy); + if (tic2 > tic) + tic = tic2; + tic *= 2.0; + sqlite3_bind_double (stmt, 1, geom->MaxX + tic); + sqlite3_bind_double (stmt, 2, geom->MinX - tic); + sqlite3_bind_double (stmt, 3, geom->MaxY + tic); + sqlite3_bind_double (stmt, 4, geom->MinY - tic); + cursor->stmt = stmt; + cursor->eof = 0; +/* fetching the first ResultSet's row */ + ret = sqlite3_step (cursor->stmt); + if (ret == SQLITE_ROW) + cursor->CurrentRowId = sqlite3_column_int64 (cursor->stmt, 0); + else + cursor->eof = 1; + stop: + if (geom) + gaiaFreeGeomColl (geom); + if (xtable) + free (xtable); + if (xgeom) + free (xgeom); + if (db_prefix) + free (db_prefix); + if (table_name) + free (table_name); + return SQLITE_OK; +} + +static int +vspidx_next (sqlite3_vtab_cursor * pCursor) +{ +/* fetching a next row from cursor */ + int ret; + VirtualSpatialIndexCursorPtr cursor = + (VirtualSpatialIndexCursorPtr) pCursor; + ret = sqlite3_step (cursor->stmt); + if (ret == SQLITE_ROW) + cursor->CurrentRowId = sqlite3_column_int64 (cursor->stmt, 0); + else + cursor->eof = 1; + return SQLITE_OK; +} + +static int +vspidx_eof (sqlite3_vtab_cursor * pCursor) +{ +/* cursor EOF */ + VirtualSpatialIndexCursorPtr cursor = + (VirtualSpatialIndexCursorPtr) pCursor; + return cursor->eof; +} + +static int +vspidx_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, + int column) +{ +/* fetching value for the Nth column */ + VirtualSpatialIndexCursorPtr cursor = + (VirtualSpatialIndexCursorPtr) pCursor; + if (cursor || column) + cursor = cursor; /* unused arg warning suppression */ + if (column) + column = column; /* unused arg warning suppression */ + sqlite3_result_null (pContext); + return SQLITE_OK; +} + +static int +vspidx_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) +{ +/* fetching the ROWID */ + VirtualSpatialIndexCursorPtr cursor = + (VirtualSpatialIndexCursorPtr) pCursor; + *pRowid = cursor->CurrentRowId; + return SQLITE_OK; +} + +static int +vspidx_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, + sqlite_int64 * pRowid) +{ +/* generic update [INSERT / UPDATE / DELETE */ + if (pRowid || argc || argv || pVTab) + pRowid = pRowid; /* unused arg warning suppression */ +/* read only datasource */ + return SQLITE_READONLY; +} + +static int +vspidx_begin (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vspidx_sync (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vspidx_commit (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vspidx_rollback (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +spliteVirtualSpatialIndexInit (sqlite3 * db) +{ + int rc = SQLITE_OK; + my_spidx_module.iVersion = 1; + my_spidx_module.xCreate = &vspidx_create; + my_spidx_module.xConnect = &vspidx_connect; + my_spidx_module.xBestIndex = &vspidx_best_index; + my_spidx_module.xDisconnect = &vspidx_disconnect; + my_spidx_module.xDestroy = &vspidx_destroy; + my_spidx_module.xOpen = &vspidx_open; + my_spidx_module.xClose = &vspidx_close; + my_spidx_module.xFilter = &vspidx_filter; + my_spidx_module.xNext = &vspidx_next; + my_spidx_module.xEof = &vspidx_eof; + my_spidx_module.xColumn = &vspidx_column; + my_spidx_module.xRowid = &vspidx_rowid; + my_spidx_module.xUpdate = &vspidx_update; + my_spidx_module.xBegin = &vspidx_begin; + my_spidx_module.xSync = &vspidx_sync; + my_spidx_module.xCommit = &vspidx_commit; + my_spidx_module.xRollback = &vspidx_rollback; + my_spidx_module.xFindFunction = NULL; + sqlite3_create_module_v2 (db, "VirtualSpatialIndex", &my_spidx_module, NULL, + 0); + return rc; +} + +SPATIALITE_PRIVATE int +virtual_spatialindex_extension_init (void *xdb) +{ + sqlite3 *db = (sqlite3 *) xdb; + return spliteVirtualSpatialIndexInit (db); +} diff --git a/src/spatialite/src/spatialite/virtualxpath.c b/src/spatialite/src/spatialite/virtualxpath.c new file mode 100644 index 0000000..5630643 --- /dev/null +++ b/src/spatialite/src/spatialite/virtualxpath.c @@ -0,0 +1,1148 @@ +/* + + virtualxpath.c -- SQLite3 extension [VIRTUAL XPath handler] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#ifdef ENABLE_LIBXML2 /* LIBXML2 enabled: supporting XML documents */ + +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#define LONG64_MAX _I64_MAX +#define LONG64_MIN _I64_MIN +#else +#define LONG64_MAX 9223372036854775807LL +#define LONG64_MIN (-LONG64_MAX + 1) +#endif + +#include + +#include +#include +#include +#include + +#ifdef _WIN32 +#define strcasecmp _stricmp +#define strncasecmp _strnicmp +#endif /* not WIN32 */ + +static struct sqlite3_module my_xpath_module; + +/****************************************************************************** +/ +/ VirtualTable structs +/ +******************************************************************************/ + +typedef struct VirtualXPathStruct +{ +/* extends the sqlite3_vtab struct */ + const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ + int nRef; /* # references: USED INTERNALLY BY SQLITE */ + char *zErrMsg; /* error message: USE INTERNALLY BY SQLITE */ + sqlite3 *db; /* the sqlite db holding the virtual table */ + const void *p_cache; /* pointer to the internal cache */ + char *table; /* the real-table name */ + char *column; /* the real-column name */ +} VirtualXPath; +typedef VirtualXPath *VirtualXPathPtr; + +typedef struct VirtualXPathCursorStruct +{ +/* extends the sqlite3_vtab_cursor struct */ + VirtualXPathPtr pVtab; /* Virtual table of this cursor */ + int eof; /* the EOF marker */ + sqlite3_stmt *stmt; + char *xpathExpr; + xmlDocPtr xmlDoc; + xmlXPathContextPtr xpathContext; + xmlXPathObjectPtr xpathObj; + int xpathIdx; + sqlite3_int64 current_row; + int keyOp1; + sqlite3_int64 keyVal1; + int keyOp2; + sqlite3_int64 keyVal2; +} VirtualXPathCursor; +typedef VirtualXPathCursor *VirtualXPathCursorPtr; + +static void +vxpath_free_ns (struct vxpath_ns *ns) +{ +/* memory cleanup - destroying a Namespace item */ + if (!ns) + return; + if (ns->Prefix) + free (ns->Prefix); + if (ns->Href) + free (ns->Href); + free (ns); +} + +SPATIALITE_PRIVATE void +vxpath_free_namespaces (struct vxpath_namespaces *ns_list) +{ +/* memory cleanup - destroying the Namespaces list */ + struct vxpath_ns *ns; + struct vxpath_ns *nns; + if (!ns_list) + return; + + ns = ns_list->First; + while (ns) + { + nns = ns->Next; + vxpath_free_ns (ns); + ns = nns; + } + free (ns_list); +} + +static void +vxpath_add_ns (struct vxpath_namespaces *ns_list, const char *prefix, + const char *href) +{ +/* inserting a further Namespace into the list */ + int len; + struct vxpath_ns *ns = ns_list->First; + while (ns) + { + /* checking if it's already defined */ + if (ns->Prefix == NULL || prefix == NULL) + { + if (ns->Prefix == NULL && prefix == NULL + && strcmp (ns->Href, href) == 0) + { + /* ok, already defined (default Namespace) */ + return; + } + } + else + { + if (strcmp (ns->Prefix, prefix) == 0 + && strcmp (ns->Href, href) == 0) + { + /* ok, already defined */ + return; + } + } + ns = ns->Next; + } + +/* inserting a new Namespace */ + ns = malloc (sizeof (struct vxpath_ns)); + if (prefix == NULL) + ns->Prefix = NULL; + else + { + len = strlen (prefix); + ns->Prefix = malloc (len + 1); + strcpy (ns->Prefix, prefix); + } + len = strlen (href); + ns->Href = malloc (len + 1); + strcpy (ns->Href, href); + ns->Next = NULL; + if (ns_list->First == NULL) + ns_list->First = ns; + if (ns_list->Last != NULL) + ns_list->Last->Next = ns; + ns_list->Last = ns; +} + +static void +vxpath_feed_ns (struct vxpath_namespaces *ns_list, xmlNodePtr start) +{ +/* recursively searching for Namespaces */ + xmlNodePtr node = start; + while (node) + { + if (node->ns != NULL) + { + /* a Namespace is defined */ + vxpath_add_ns (ns_list, (const char *) (node->ns->prefix), + (const char *) (node->ns->href)); + } + if (node->properties != NULL) + { + /* exploring the Attribute list */ + struct _xmlAttr *attr = node->properties; + while (attr) + { + if (attr->type == XML_ATTRIBUTE_NODE) + { + if (attr->ns != NULL) + { + /* a Namespace is defined */ + vxpath_add_ns (ns_list, + (const char *) (attr->ns-> + prefix), + (const char *) (attr->ns-> + href)); + } + } + attr = attr->next; + } + } + vxpath_feed_ns (ns_list, node->children); + node = node->next; + } +} + +SPATIALITE_PRIVATE struct vxpath_namespaces * +vxpath_get_namespaces (void *p_xml_doc) +{ +/* creating and populating the Namespaces list */ + xmlDocPtr xml_doc = (xmlDocPtr) p_xml_doc; + xmlNodePtr root = xmlDocGetRootElement (xml_doc); + struct vxpath_namespaces *ns_list; + ns_list = malloc (sizeof (struct vxpath_namespaces)); + ns_list->First = NULL; + ns_list->Last = NULL; + vxpath_feed_ns (ns_list, root); + return ns_list; +} + +static int +is_valid_cache (struct splite_internal_cache *cache) +{ +/* testing if the passed cache is a valid one */ + if (cache == NULL) + return 0; + if (cache->magic1 != SPATIALITE_CACHE_MAGIC1 + || cache->magic2 != SPATIALITE_CACHE_MAGIC2) + return 0; + return 1; +} + +static void +vxpathError (void *ctx, const char *msg, ...) +{ +/* appending to the current XPath Error buffer */ + struct splite_internal_cache *cache = (struct splite_internal_cache *) ctx; + gaiaOutBufferPtr buf; + char out[65536]; + va_list args; + + if (ctx != NULL) + ctx = NULL; /* suppressing stupid compiler warnings (unused args) */ + if (!is_valid_cache (cache)) + return; + buf = (gaiaOutBufferPtr) (cache->xmlXPathErrors); + + va_start (args, msg); + vsnprintf (out, 65536, msg, args); + gaiaAppendToOutBuffer (buf, out); + va_end (args); +} + +static void +vxpathResetXmlErrors (struct splite_internal_cache *cache) +{ +/* resetting the XPath Error buffer */ + gaiaOutBufferPtr buf; + if (!is_valid_cache (cache)) + return; + buf = (gaiaOutBufferPtr) (cache->xmlXPathErrors); + gaiaOutBufferReset (buf); +} + +GAIAGEO_DECLARE int +gaiaIsValidXPathExpression (const void *p_cache, const char *xpath_expr) +{ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; + xmlXPathCompExprPtr result; + xmlGenericErrorFunc xpathError; + if (!is_valid_cache (cache)) + return 0; + xpathError = (xmlGenericErrorFunc) vxpathError; + + vxpathResetXmlErrors (cache); + xmlSetGenericErrorFunc (cache, xpathError); + +/* testing an XPath expression */ + result = xmlXPathCompile ((const xmlChar *) xpath_expr); + xmlSetGenericErrorFunc ((void *) stderr, NULL); + if (result) + { + xmlXPathFreeCompExpr (result); + return 1; + } + return 0; +} + +SPATIALITE_PRIVATE int +vxpath_eval_expr (const void *p_cache, void *x_xml_doc, const char *xpath_expr, + void *x_xpathCtx, void *x_xpathObj) +{ + struct splite_internal_cache *cache = + (struct splite_internal_cache *) p_cache; +/* evaluating an XPath expression */ + xmlDocPtr xml_doc = (xmlDocPtr) x_xml_doc; + xmlXPathContextPtr *p_xpathCtx = (xmlXPathContextPtr *) x_xpathCtx; + xmlXPathObjectPtr *p_xpathObj = (xmlXPathObjectPtr *) x_xpathObj; + xmlXPathObjectPtr xpathObj; + xmlXPathContextPtr xpathCtx; + xmlGenericErrorFunc xpathError = (xmlGenericErrorFunc) vxpathError; + +/* attempting to identify all required Namespaces */ + struct vxpath_ns *ns; + struct vxpath_namespaces *ns_list = vxpath_get_namespaces (xml_doc); + + if (is_valid_cache (cache)) + { + vxpathResetXmlErrors (cache); + xmlSetGenericErrorFunc (cache, xpathError); + } + +/* creating an XPath context */ + xpathCtx = xmlXPathNewContext (xml_doc); + if (xpathCtx == NULL) + { + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 0; + } + +/* registering all Namespaces */ + if (xpathCtx != NULL && ns_list != NULL) + { + ns = ns_list->First; + while (ns) + { + if (ns->Prefix == NULL) + { + /* the default Namespace always is "dflt:xx" */ + xmlXPathRegisterNs (xpathCtx, (xmlChar *) "dflt", + (xmlChar *) ns->Href); + } + else + { + /* a fully qualified Namespace */ + xmlXPathRegisterNs (xpathCtx, (xmlChar *) ns->Prefix, + (xmlChar *) ns->Href); + } + ns = ns->Next; + } + } + vxpath_free_namespaces (ns_list); + +/* evaluating the XPath expression */ + xpathObj = xmlXPathEvalExpression ((const xmlChar *) xpath_expr, xpathCtx); + if (xpathObj != NULL) + { + xmlNodeSetPtr nodes = xpathObj->nodesetval; + int num_nodes = (nodes) ? nodes->nodeNr : 0; + if (num_nodes >= 1) + { + /* OK: match found */ + *p_xpathCtx = xpathCtx; + *p_xpathObj = xpathObj; + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 1; + } + /* invalid: empty nodeset */ + xmlXPathFreeObject (xpathObj); + } + xmlXPathFreeContext (xpathCtx); + + xmlSetGenericErrorFunc ((void *) stderr, NULL); + return 0; +} + +static void +vxpath_read_row (VirtualXPathCursorPtr cursor) +{ +/* trying to read a row from the real-table */ + sqlite3_stmt *stmt; + int ret; + sqlite3_int64 pk; + int eof; + if (cursor->stmt == NULL || cursor->xpathExpr == NULL) + return; + + if (cursor->xpathObj) + xmlXPathFreeObject (cursor->xpathObj); + if (cursor->xpathContext) + xmlXPathFreeContext (cursor->xpathContext); + if (cursor->xmlDoc) + xmlFreeDoc (cursor->xmlDoc); + cursor->xmlDoc = NULL; + cursor->xpathContext = NULL; + cursor->xpathObj = NULL; + + stmt = cursor->stmt; + sqlite3_bind_int64 (stmt, 1, cursor->current_row); + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_ROW) + { + pk = sqlite3_column_int64 (stmt, 0); + /* filtering the PK value */ + eof = 0; + switch (cursor->keyOp1) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (pk > cursor->keyVal1) + eof = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (pk >= cursor->keyVal1) + eof = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (pk > cursor->keyVal1) + eof = 1; + break; + }; + switch (cursor->keyOp2) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (pk > cursor->keyVal2) + eof = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (pk >= cursor->keyVal2) + eof = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (pk > cursor->keyVal2) + eof = 1; + break; + }; + if (eof) + { + cursor->eof = 1; + return; + } + + if (sqlite3_column_type (stmt, 1) == SQLITE_BLOB) + { + xmlDocPtr xml_doc; + int xml_len; + unsigned char *xml; + const unsigned char *blob = sqlite3_column_blob (stmt, 1); + int size = sqlite3_column_bytes (stmt, 1); + gaiaXmlFromBlob (blob, size, -1, &xml, &xml_len); + if (!xml) + continue; + xml_doc = + xmlReadMemory ((const char *) xml, xml_len, + "noname.xml", NULL, 0); + if (xml_doc != NULL) + { + xmlXPathContextPtr xpathCtx; + xmlXPathObjectPtr xpathObj; + if (vxpath_eval_expr + (cursor->pVtab->p_cache, xml_doc, + cursor->xpathExpr, &xpathCtx, &xpathObj)) + { + free (xml); + if (cursor->xpathObj) + xmlXPathFreeObject (cursor->xpathObj); + if (cursor->xpathContext) + xmlXPathFreeContext + (cursor->xpathContext); + if (cursor->xmlDoc) + xmlFreeDoc (cursor->xmlDoc); + cursor->xmlDoc = xml_doc; + cursor->xpathContext = xpathCtx; + cursor->xpathObj = xpathObj; + cursor->xpathIdx = 0; + break; + } + free (xml); + xmlFreeDoc (xml_doc); + } + } + } + else + { + /* an error occurred */ + cursor->eof = 1; + return; + } + } + cursor->eof = 0; + cursor->current_row = pk; +} + +static void +vxpath_check (sqlite3 * db, const char *table, const char *column, int *okTable, + int *okCol) +{ +/* checking if both Table and Column exist */ + char **results; + char *sql; + char *xname; + int ret; + int i; + int n_rows; + int n_columns; + xname = gaiaDoubleQuotedSql (table); + sql = sqlite3_mprintf ("PRAGMA table_info(\"%s\")", xname); + free (xname); + ret = sqlite3_get_table (db, sql, &results, &n_rows, &n_columns, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + return; + if (n_rows >= 1) + { + *okTable = 1; + for (i = 1; i <= n_rows; i++) + { + const char *col_name = results[(i * n_columns) + 1]; + if (strcasecmp (col_name, column) == 0) + *okCol = 1; + } + } + sqlite3_free_table (results); +} + +static int +vxpath_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* creates the virtual table for XPath */ + VirtualXPathPtr p_vt; + char *vtable = NULL; + char *table = NULL; + char *column = NULL; + char *xname; + char *sql; + int okTable = 0; + int okCol = 0; + if (argc == 5) + { + vtable = gaiaDequotedSql ((char *) argv[2]); + table = gaiaDequotedSql ((char *) argv[3]); + column = gaiaDequotedSql ((char *) argv[4]); + } + else + { + *pzErr = + sqlite3_mprintf + ("[VirtualXPath module] CREATE VIRTUAL: illegal arg list {void}\n"); + return SQLITE_ERROR; + } + vxpath_check (db, table, column, &okTable, &okCol); + if (!okTable || !okCol) + goto illegal; + xname = gaiaDoubleQuotedSql (vtable); + sql = sqlite3_mprintf ("CREATE TABLE \"%s\" (pkid INTEGER, sub INTEGER, " + "parent TEXT, node TEXT, attribute TEXT, " + "value TEXT, xpath_expr TEXT)", xname); + free (xname); + if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) + { + sqlite3_free (sql); + *pzErr = + sqlite3_mprintf + ("[VirtualXPath module] CREATE VIRTUAL: invalid SQL statement \"%s\"", + sql); + goto error; + } + sqlite3_free (sql); + p_vt = (VirtualXPathPtr) sqlite3_malloc (sizeof (VirtualXPath)); + if (!p_vt) + return SQLITE_NOMEM; + p_vt->db = db; + p_vt->p_cache = pAux; + if (p_vt->p_cache == NULL) + spatialite_e ("VirtualXPath WARNING - no XML cache is available !!!\n"); + p_vt->nRef = 0; + p_vt->zErrMsg = NULL; + p_vt->table = table; + p_vt->column = column; + *ppVTab = (sqlite3_vtab *) p_vt; + free (vtable); + return SQLITE_OK; + illegal: +/* something is going the wrong way */ + if (!okTable == 0) + *pzErr = + sqlite3_mprintf + ("[VirtualXPath module] table \"%s\" doesn't exists\n", table); + else if (!okCol) + *pzErr = + sqlite3_mprintf + ("[VirtualXPath module] table \"%s\" exists, but has no \"%s\" column\n", + table, column); + error: + return SQLITE_ERROR; +} + +static int +vxpath_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* connects the virtual table - simply aliases vxpath_create() */ + return vxpath_create (db, pAux, argc, argv, ppVTab, pzErr); +} + +static int +vxpath_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIdxInfo) +{ +/* best index selection */ + int i; + int errors = 0; + int err = 1; + int xpath = 0; + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + for (i = 0; i < pIdxInfo->nConstraint; i++) + { + /* verifying the constraints */ + struct sqlite3_index_constraint *p = &(pIdxInfo->aConstraint[i]); + if (p->usable) + { + if (p->iColumn == 0); + else if (p->iColumn == 6 && p->op == SQLITE_INDEX_CONSTRAINT_EQ) + xpath++; + else + errors++; + } + } + if (xpath == 1 && errors == 0) + { + /* this one is a valid XPath query */ + pIdxInfo->idxNum = 1; + pIdxInfo->estimatedCost = 1.0; + pIdxInfo->idxStr = sqlite3_malloc (pIdxInfo->nConstraint * 2); + pIdxInfo->needToFreeIdxStr = 1; + for (i = 0; i < pIdxInfo->nConstraint; i++) + { + struct sqlite3_index_constraint *p = + &(pIdxInfo->aConstraint[i]); + if (p->usable) + { + char *pStr = pIdxInfo->idxStr + (i * 2); + if (p->iColumn == 6) + *pStr = 0; + else + *pStr = 1; + pStr++; + *pStr = p->op; + pIdxInfo->aConstraintUsage[i].argvIndex = i + 1; + pIdxInfo->aConstraintUsage[i].omit = 1; + } + } + err = 0; + } + if (err) + { + /* illegal query */ + pIdxInfo->idxNum = 0; + } + return SQLITE_OK; +} + +static int +vxpath_disconnect (sqlite3_vtab * pVTab) +{ +/* disconnects the virtual table */ + VirtualXPathPtr p_vt = (VirtualXPathPtr) pVTab; + free (p_vt->column); + free (p_vt->table); + sqlite3_free (p_vt); + return SQLITE_OK; +} + +static int +vxpath_destroy (sqlite3_vtab * pVTab) +{ +/* destroys the virtual table - simply aliases vxpath_disconnect() */ + return vxpath_disconnect (pVTab); +} + +static int +vxpath_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) +{ +/* opening a new cursor */ + sqlite3_stmt *stmt; + int ret; + char *sql; + char *xname; + char *xcolumn; + VirtualXPathCursorPtr cursor = + (VirtualXPathCursorPtr) sqlite3_malloc (sizeof (VirtualXPathCursor)); + if (cursor == NULL) + return SQLITE_ERROR; + cursor->pVtab = (VirtualXPathPtr) pVTab; + cursor->xmlDoc = NULL; + cursor->xpathContext = NULL; + cursor->xpathObj = NULL; + cursor->xpathExpr = NULL; + cursor->stmt = NULL; + cursor->keyOp1 = 0; + cursor->keyVal1 = 0; + cursor->keyOp2 = 0; + cursor->keyVal2 = 0; + xcolumn = gaiaDoubleQuotedSql (cursor->pVtab->column); + xname = gaiaDoubleQuotedSql (cursor->pVtab->table); + sql = sqlite3_mprintf ("SELECT ROWID, \"%s\" FROM \"%s\"" + " WHERE ROWID >= ?", xcolumn, xname); + free (xname); + free (xcolumn); + ret = + sqlite3_prepare_v2 (cursor->pVtab->db, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + /* an error occurred */ + cursor->eof = 1; + return SQLITE_ERROR; + } + cursor->stmt = stmt; + cursor->current_row = LONG64_MIN; + cursor->eof = 0; + *ppCursor = (sqlite3_vtab_cursor *) cursor; + return SQLITE_OK; +} + +static int +vxpath_close (sqlite3_vtab_cursor * pCursor) +{ +/* closing the cursor */ + VirtualXPathCursorPtr cursor = (VirtualXPathCursorPtr) pCursor; + if (cursor->stmt) + sqlite3_finalize (cursor->stmt); + if (cursor->xpathObj) + xmlXPathFreeObject (cursor->xpathObj); + if (cursor->xpathContext) + xmlXPathFreeContext (cursor->xpathContext); + if (cursor->xmlDoc) + xmlFreeDoc (cursor->xmlDoc); + if (cursor->xpathExpr) + free (cursor->xpathExpr); + sqlite3_free (pCursor); + return SQLITE_OK; +} + +static int +vxpath_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, + int argc, sqlite3_value ** argv) +{ +/* setting up a cursor filter */ + int ok = 0; + VirtualXPathCursorPtr cursor = (VirtualXPathCursorPtr) pCursor; + if (idxStr) + idxStr = idxStr; /* unused arg warning suppression */ + cursor->eof = 1; + if (idxNum == 1) + { + int i; + cursor->keyOp1 = 0; + cursor->keyOp2 = 0; + for (i = 0; i < argc; i++) + { + const char *pStr = idxStr + (i * 2); + if (*pStr == 0) + { + /* retrieving the XPath expression param */ + if (sqlite3_value_type (argv[i]) == SQLITE_TEXT) + { + char *exp = (char *) sqlite3_value_text (argv[i]); + if (exp != NULL) + { + int len = strlen (exp); + cursor->xpathExpr = malloc (len + 1); + strcpy (cursor->xpathExpr, exp); + } + ok = 1; + } + } + else + { + /* evaluating a ROWID contraint */ + pStr++; + if (cursor->keyOp1 == 0) + { + cursor->keyOp1 = *pStr; + cursor->keyVal1 = sqlite3_value_int64 (argv[i]); + } + else + { + cursor->keyOp2 = *pStr; + cursor->keyVal2 = sqlite3_value_int64 (argv[i]); + } + } + } + } + if (!ok) + { + cursor->eof = 1; + return SQLITE_OK; + } +/* attempting to set a reasonable ROWID */ + switch (cursor->keyOp1) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + cursor->current_row = cursor->keyVal1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + cursor->current_row = cursor->keyVal1 + 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + cursor->current_row = cursor->keyVal1; + break; + }; + switch (cursor->keyOp2) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + cursor->current_row = cursor->keyVal2; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + cursor->current_row = cursor->keyVal2 + 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + cursor->current_row = cursor->keyVal2; + break; + }; + vxpath_read_row (cursor); + return SQLITE_OK; +} + +static int +vxpath_next (sqlite3_vtab_cursor * pCursor) +{ +/* fetching a next row from cursor */ + VirtualXPathCursorPtr cursor = (VirtualXPathCursorPtr) pCursor; + if (cursor->xpathObj != NULL) + { + /* we already have a current XPath node-set */ + xmlNodeSetPtr nodes = cursor->xpathObj->nodesetval; + int num_nodes = (nodes) ? nodes->nodeNr : 0; + if ((cursor->xpathIdx + 1) < num_nodes) + { + /* ok, consuming the current XPath node from the node-set */ + cursor->xpathIdx += 1; + return SQLITE_OK; + } + } + (cursor->current_row)++; + vxpath_read_row (cursor); + return SQLITE_OK; +} + +static int +vxpath_eof (sqlite3_vtab_cursor * pCursor) +{ +/* cursor EOF */ + VirtualXPathCursorPtr cursor = (VirtualXPathCursorPtr) pCursor; + return cursor->eof; +} + +static int +vxpath_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, + int column) +{ +/* fetching value for the Nth column */ + VirtualXPathCursorPtr cursor = (VirtualXPathCursorPtr) pCursor; + xmlNodeSetPtr nodeset = cursor->xpathObj->nodesetval; + xmlNodePtr node = nodeset->nodeTab[cursor->xpathIdx]; + xmlNodePtr parent = node->parent; + char *xParent = NULL; + char *xNode = NULL; + char *xAttribute = NULL; + char *xValue = NULL; + char *prefix; + + if (node->type == XML_ELEMENT_NODE) + { + if (parent != NULL) + { + if (parent->ns != NULL && parent->name != NULL) + { + prefix = (char *) (parent->ns->prefix); + if (prefix == NULL) + prefix = "dflt"; + xParent = sqlite3_mprintf ("%s:%s", prefix, parent->name); + } + else if (parent->name != NULL) + xParent = sqlite3_mprintf ("%s", parent->name); + } + if (node->ns != NULL && node->name != NULL) + { + prefix = (char *) (node->ns->prefix); + if (prefix == NULL) + prefix = "dflt"; + xNode = sqlite3_mprintf ("%s:%s", prefix, node->name); + } + else if (node->name != NULL) + xNode = sqlite3_mprintf ("%s", node->name); + } + else if (node->type == XML_ATTRIBUTE_NODE) + { + if (parent != NULL) + { + xmlNodePtr granpa = parent->parent; + if (granpa != NULL) + { + if (granpa->ns != NULL && granpa->name != NULL) + { + prefix = (char *) (granpa->ns->prefix); + if (prefix == NULL) + prefix = "dflt"; + xParent = + sqlite3_mprintf ("%s:%s", prefix, granpa->name); + } + else if (granpa->name != NULL) + xParent = sqlite3_mprintf ("%s", granpa->name); + } + if (parent->ns != NULL && parent->name != NULL) + { + prefix = (char *) (parent->ns->prefix); + if (prefix == NULL) + prefix = "dflt"; + xNode = sqlite3_mprintf ("%s:%s", prefix, parent->name); + } + else if (parent->name != NULL) + xNode = sqlite3_mprintf ("%s", parent->name); + } + if (node->ns != NULL && node->name != NULL) + { + prefix = (char *) (node->ns->prefix); + if (prefix == NULL) + prefix = "dflt"; + xAttribute = sqlite3_mprintf ("%s:%s", prefix, node->name); + } + else if (node->name != NULL) + xAttribute = sqlite3_mprintf ("%s", node->name); + if (node->children != NULL) + { + if (node->children->content != NULL) + xValue = sqlite3_mprintf ("%s", node->children->content); + } + } + else if (node->type == XML_TEXT_NODE) + { + if (parent != NULL) + { + xmlNodePtr granpa = parent->parent; + if (granpa != NULL) + { + if (granpa->ns != NULL && granpa->name != NULL) + { + prefix = (char *) (granpa->ns->prefix); + if (prefix == NULL) + prefix = "dflt"; + xParent = + sqlite3_mprintf ("%s:%s", prefix, granpa->name); + } + else if (granpa->name != NULL) + xParent = sqlite3_mprintf ("%s", granpa->name); + } + if (parent->ns != NULL && parent->name != NULL) + { + prefix = (char *) (parent->ns->prefix); + if (prefix == NULL) + prefix = "dflt"; + xNode = sqlite3_mprintf ("%s:%s", prefix, parent->name); + } + else if (parent->name != NULL) + xNode = sqlite3_mprintf ("%s", parent->name); + } + if (node->content != NULL) + xValue = sqlite3_mprintf ("%s", node->content); + } + + if (column == 0) + sqlite3_result_int64 (pContext, cursor->current_row); + else if (column == 1) + sqlite3_result_int (pContext, cursor->xpathIdx); + else if (column == 2) + { + if (!xParent) + sqlite3_result_null (pContext); + else + sqlite3_result_text (pContext, xParent, + strlen (xParent), SQLITE_TRANSIENT); + } + else if (column == 3) + { + if (!xNode) + sqlite3_result_null (pContext); + else + sqlite3_result_text (pContext, xNode, + strlen (xNode), SQLITE_TRANSIENT); + } + else if (column == 4) + { + if (!xAttribute) + sqlite3_result_null (pContext); + else + sqlite3_result_text (pContext, xAttribute, + strlen (xAttribute), SQLITE_TRANSIENT); + } + else if (column == 5) + { + if (!xValue) + sqlite3_result_null (pContext); + else + sqlite3_result_text (pContext, xValue, + strlen (xValue), SQLITE_TRANSIENT); + } + else if (column == 6) + sqlite3_result_text (pContext, cursor->xpathExpr, + strlen (cursor->xpathExpr), SQLITE_STATIC); + else + sqlite3_result_null (pContext); + if (xParent) + sqlite3_free (xParent); + if (xNode) + sqlite3_free (xNode); + if (xAttribute) + sqlite3_free (xAttribute); + if (xValue) + sqlite3_free (xValue); + return SQLITE_OK; +} + +static int +vxpath_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) +{ +/* fetching the ROWID */ + VirtualXPathCursorPtr cursor = (VirtualXPathCursorPtr) pCursor; + *pRowid = cursor->current_row; + return SQLITE_OK; +} + +static int +vxpath_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, + sqlite_int64 * pRowid) +{ +/* generic update [INSERT / UPDATE / DELETE */ + if (pRowid || argc || argv || pVTab) + pRowid = pRowid; /* unused arg warning suppression */ +/* read only datasource */ + return SQLITE_READONLY; +} + +static int +vxpath_begin (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vxpath_sync (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vxpath_commit (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vxpath_rollback (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +spliteVirtualXPathInit (sqlite3 * db, void *p_cache) +{ + int rc = SQLITE_OK; + my_xpath_module.iVersion = 1; + my_xpath_module.xCreate = &vxpath_create; + my_xpath_module.xConnect = &vxpath_connect; + my_xpath_module.xBestIndex = &vxpath_best_index; + my_xpath_module.xDisconnect = &vxpath_disconnect; + my_xpath_module.xDestroy = &vxpath_destroy; + my_xpath_module.xOpen = &vxpath_open; + my_xpath_module.xClose = &vxpath_close; + my_xpath_module.xFilter = &vxpath_filter; + my_xpath_module.xNext = &vxpath_next; + my_xpath_module.xEof = &vxpath_eof; + my_xpath_module.xColumn = &vxpath_column; + my_xpath_module.xRowid = &vxpath_rowid; + my_xpath_module.xUpdate = &vxpath_update; + my_xpath_module.xBegin = &vxpath_begin; + my_xpath_module.xSync = &vxpath_sync; + my_xpath_module.xCommit = &vxpath_commit; + my_xpath_module.xRollback = &vxpath_rollback; + my_xpath_module.xFindFunction = NULL; + sqlite3_create_module_v2 (db, "VirtualXPath", &my_xpath_module, p_cache, 0); + return rc; +} + +SPATIALITE_PRIVATE int +virtual_xpath_extension_init (void *xdb, const void *p_cache) +{ + sqlite3 *db = (sqlite3 *) xdb; + return spliteVirtualXPathInit (db, (void *) p_cache); +} + +#endif /* end LIBXML2: supporting XML documents */ diff --git a/src/spatialite/src/srsinit/Makefile.am b/src/spatialite/src/srsinit/Makefile.am new file mode 100644 index 0000000..1ae233e --- /dev/null +++ b/src/spatialite/src/srsinit/Makefile.am @@ -0,0 +1,76 @@ + +SUBDIRS = epsg_update + +AM_CPPFLAGS = @CFLAGS@ +AM_CPPFLAGS += -I$(top_srcdir)/src/headers + +noinst_LTLIBRARIES = libsrsinit.la srsinit.la + +SRSINIT_COMMON_SOURCES = srs_init.c \ + epsg_inlined_00.c \ + epsg_inlined_01.c \ + epsg_inlined_02.c \ + epsg_inlined_03.c \ + epsg_inlined_04.c \ + epsg_inlined_05.c \ + epsg_inlined_06.c \ + epsg_inlined_07.c \ + epsg_inlined_08.c \ + epsg_inlined_09.c \ + epsg_inlined_10.c \ + epsg_inlined_11.c \ + epsg_inlined_12.c \ + epsg_inlined_13.c \ + epsg_inlined_14.c \ + epsg_inlined_15.c \ + epsg_inlined_16.c \ + epsg_inlined_17.c \ + epsg_inlined_18.c \ + epsg_inlined_19.c \ + epsg_inlined_20.c \ + epsg_inlined_21.c \ + epsg_inlined_22.c \ + epsg_inlined_23.c \ + epsg_inlined_24.c \ + epsg_inlined_25.c \ + epsg_inlined_26.c \ + epsg_inlined_27.c \ + epsg_inlined_28.c \ + epsg_inlined_29.c \ + epsg_inlined_30.c \ + epsg_inlined_31.c \ + epsg_inlined_32.c \ + epsg_inlined_33.c \ + epsg_inlined_34.c \ + epsg_inlined_35.c \ + epsg_inlined_36.c \ + epsg_inlined_37.c \ + epsg_inlined_38.c \ + epsg_inlined_39.c \ + epsg_inlined_40.c \ + epsg_inlined_41.c \ + epsg_inlined_42.c \ + epsg_inlined_43.c \ + epsg_inlined_44.c \ + epsg_inlined_45.c \ + epsg_inlined_wgs84_00.c \ + epsg_inlined_wgs84_01.c \ + epsg_inlined_prussian.c \ + epsg_inlined_extra.c + +libsrsinit_la_SOURCES = $(SRSINIT_COMMON_SOURCES) + +libsrsinit_la_CFLAGS = -fvisibility=hidden + +srsinit_la_SOURCES = $(SRSINIT_COMMON_SOURCES) + +srsinit_la_CPPFLAGS = @CFLAGS@ +srsinit_la_CPPFLAGS += -I$(top_srcdir)/src/headers -I. +srsinit_la_CPPFLAGS += -DLOADABLE_EXTENSION +srsinit_la_CPPFLAGS += -fvisibility=hidden +srsinit_la_LDFLAGS = -module +srsinit_la_LIBTOOLFLAGS = --tag=disable-static + +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda + + diff --git a/src/spatialite/src/srsinit/Makefile.in b/src/spatialite/src/srsinit/Makefile.in new file mode 100644 index 0000000..bbd2474 --- /dev/null +++ b/src/spatialite/src/srsinit/Makefile.in @@ -0,0 +1,1669 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/srsinit +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libsrsinit_la_LIBADD = +am__objects_1 = libsrsinit_la-srs_init.lo \ + libsrsinit_la-epsg_inlined_00.lo \ + libsrsinit_la-epsg_inlined_01.lo \ + libsrsinit_la-epsg_inlined_02.lo \ + libsrsinit_la-epsg_inlined_03.lo \ + libsrsinit_la-epsg_inlined_04.lo \ + libsrsinit_la-epsg_inlined_05.lo \ + libsrsinit_la-epsg_inlined_06.lo \ + libsrsinit_la-epsg_inlined_07.lo \ + libsrsinit_la-epsg_inlined_08.lo \ + libsrsinit_la-epsg_inlined_09.lo \ + libsrsinit_la-epsg_inlined_10.lo \ + libsrsinit_la-epsg_inlined_11.lo \ + libsrsinit_la-epsg_inlined_12.lo \ + libsrsinit_la-epsg_inlined_13.lo \ + libsrsinit_la-epsg_inlined_14.lo \ + libsrsinit_la-epsg_inlined_15.lo \ + libsrsinit_la-epsg_inlined_16.lo \ + libsrsinit_la-epsg_inlined_17.lo \ + libsrsinit_la-epsg_inlined_18.lo \ + libsrsinit_la-epsg_inlined_19.lo \ + libsrsinit_la-epsg_inlined_20.lo \ + libsrsinit_la-epsg_inlined_21.lo \ + libsrsinit_la-epsg_inlined_22.lo \ + libsrsinit_la-epsg_inlined_23.lo \ + libsrsinit_la-epsg_inlined_24.lo \ + libsrsinit_la-epsg_inlined_25.lo \ + libsrsinit_la-epsg_inlined_26.lo \ + libsrsinit_la-epsg_inlined_27.lo \ + libsrsinit_la-epsg_inlined_28.lo \ + libsrsinit_la-epsg_inlined_29.lo \ + libsrsinit_la-epsg_inlined_30.lo \ + libsrsinit_la-epsg_inlined_31.lo \ + libsrsinit_la-epsg_inlined_32.lo \ + libsrsinit_la-epsg_inlined_33.lo \ + libsrsinit_la-epsg_inlined_34.lo \ + libsrsinit_la-epsg_inlined_35.lo \ + libsrsinit_la-epsg_inlined_36.lo \ + libsrsinit_la-epsg_inlined_37.lo \ + libsrsinit_la-epsg_inlined_38.lo \ + libsrsinit_la-epsg_inlined_39.lo \ + libsrsinit_la-epsg_inlined_40.lo \ + libsrsinit_la-epsg_inlined_41.lo \ + libsrsinit_la-epsg_inlined_42.lo \ + libsrsinit_la-epsg_inlined_43.lo \ + libsrsinit_la-epsg_inlined_44.lo \ + libsrsinit_la-epsg_inlined_45.lo \ + libsrsinit_la-epsg_inlined_wgs84_00.lo \ + libsrsinit_la-epsg_inlined_wgs84_01.lo \ + libsrsinit_la-epsg_inlined_prussian.lo \ + libsrsinit_la-epsg_inlined_extra.lo +am_libsrsinit_la_OBJECTS = $(am__objects_1) +libsrsinit_la_OBJECTS = $(am_libsrsinit_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +libsrsinit_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(libsrsinit_la_CFLAGS) \ + $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +srsinit_la_LIBADD = +am__objects_2 = srsinit_la-srs_init.lo srsinit_la-epsg_inlined_00.lo \ + srsinit_la-epsg_inlined_01.lo srsinit_la-epsg_inlined_02.lo \ + srsinit_la-epsg_inlined_03.lo srsinit_la-epsg_inlined_04.lo \ + srsinit_la-epsg_inlined_05.lo srsinit_la-epsg_inlined_06.lo \ + srsinit_la-epsg_inlined_07.lo srsinit_la-epsg_inlined_08.lo \ + srsinit_la-epsg_inlined_09.lo srsinit_la-epsg_inlined_10.lo \ + srsinit_la-epsg_inlined_11.lo srsinit_la-epsg_inlined_12.lo \ + srsinit_la-epsg_inlined_13.lo srsinit_la-epsg_inlined_14.lo \ + srsinit_la-epsg_inlined_15.lo srsinit_la-epsg_inlined_16.lo \ + srsinit_la-epsg_inlined_17.lo srsinit_la-epsg_inlined_18.lo \ + srsinit_la-epsg_inlined_19.lo srsinit_la-epsg_inlined_20.lo \ + srsinit_la-epsg_inlined_21.lo srsinit_la-epsg_inlined_22.lo \ + srsinit_la-epsg_inlined_23.lo srsinit_la-epsg_inlined_24.lo \ + srsinit_la-epsg_inlined_25.lo srsinit_la-epsg_inlined_26.lo \ + srsinit_la-epsg_inlined_27.lo srsinit_la-epsg_inlined_28.lo \ + srsinit_la-epsg_inlined_29.lo srsinit_la-epsg_inlined_30.lo \ + srsinit_la-epsg_inlined_31.lo srsinit_la-epsg_inlined_32.lo \ + srsinit_la-epsg_inlined_33.lo srsinit_la-epsg_inlined_34.lo \ + srsinit_la-epsg_inlined_35.lo srsinit_la-epsg_inlined_36.lo \ + srsinit_la-epsg_inlined_37.lo srsinit_la-epsg_inlined_38.lo \ + srsinit_la-epsg_inlined_39.lo srsinit_la-epsg_inlined_40.lo \ + srsinit_la-epsg_inlined_41.lo srsinit_la-epsg_inlined_42.lo \ + srsinit_la-epsg_inlined_43.lo srsinit_la-epsg_inlined_44.lo \ + srsinit_la-epsg_inlined_45.lo \ + srsinit_la-epsg_inlined_wgs84_00.lo \ + srsinit_la-epsg_inlined_wgs84_01.lo \ + srsinit_la-epsg_inlined_prussian.lo \ + srsinit_la-epsg_inlined_extra.lo +am_srsinit_la_OBJECTS = $(am__objects_2) +srsinit_la_OBJECTS = $(am_srsinit_la_OBJECTS) +srsinit_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ + $(AM_CFLAGS) $(CFLAGS) $(srsinit_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libsrsinit_la_SOURCES) $(srsinit_la_SOURCES) +DIST_SOURCES = $(libsrsinit_la_SOURCES) $(srsinit_la_SOURCES) +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = epsg_update +AM_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers +noinst_LTLIBRARIES = libsrsinit.la srsinit.la +SRSINIT_COMMON_SOURCES = srs_init.c \ + epsg_inlined_00.c \ + epsg_inlined_01.c \ + epsg_inlined_02.c \ + epsg_inlined_03.c \ + epsg_inlined_04.c \ + epsg_inlined_05.c \ + epsg_inlined_06.c \ + epsg_inlined_07.c \ + epsg_inlined_08.c \ + epsg_inlined_09.c \ + epsg_inlined_10.c \ + epsg_inlined_11.c \ + epsg_inlined_12.c \ + epsg_inlined_13.c \ + epsg_inlined_14.c \ + epsg_inlined_15.c \ + epsg_inlined_16.c \ + epsg_inlined_17.c \ + epsg_inlined_18.c \ + epsg_inlined_19.c \ + epsg_inlined_20.c \ + epsg_inlined_21.c \ + epsg_inlined_22.c \ + epsg_inlined_23.c \ + epsg_inlined_24.c \ + epsg_inlined_25.c \ + epsg_inlined_26.c \ + epsg_inlined_27.c \ + epsg_inlined_28.c \ + epsg_inlined_29.c \ + epsg_inlined_30.c \ + epsg_inlined_31.c \ + epsg_inlined_32.c \ + epsg_inlined_33.c \ + epsg_inlined_34.c \ + epsg_inlined_35.c \ + epsg_inlined_36.c \ + epsg_inlined_37.c \ + epsg_inlined_38.c \ + epsg_inlined_39.c \ + epsg_inlined_40.c \ + epsg_inlined_41.c \ + epsg_inlined_42.c \ + epsg_inlined_43.c \ + epsg_inlined_44.c \ + epsg_inlined_45.c \ + epsg_inlined_wgs84_00.c \ + epsg_inlined_wgs84_01.c \ + epsg_inlined_prussian.c \ + epsg_inlined_extra.c + +libsrsinit_la_SOURCES = $(SRSINIT_COMMON_SOURCES) +libsrsinit_la_CFLAGS = -fvisibility=hidden +srsinit_la_SOURCES = $(SRSINIT_COMMON_SOURCES) +srsinit_la_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers -I. \ + -DLOADABLE_EXTENSION -fvisibility=hidden +srsinit_la_LDFLAGS = -module +srsinit_la_LIBTOOLFLAGS = --tag=disable-static +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/srsinit/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/srsinit/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libsrsinit.la: $(libsrsinit_la_OBJECTS) $(libsrsinit_la_DEPENDENCIES) $(EXTRA_libsrsinit_la_DEPENDENCIES) + $(AM_V_CCLD)$(libsrsinit_la_LINK) $(libsrsinit_la_OBJECTS) $(libsrsinit_la_LIBADD) $(LIBS) + +srsinit.la: $(srsinit_la_OBJECTS) $(srsinit_la_DEPENDENCIES) $(EXTRA_srsinit_la_DEPENDENCIES) + $(AM_V_CCLD)$(srsinit_la_LINK) $(srsinit_la_OBJECTS) $(srsinit_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_00.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_01.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_02.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_03.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_04.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_05.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_06.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_07.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_08.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_09.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_10.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_11.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_12.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_13.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_14.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_15.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_16.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_17.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_18.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_19.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_20.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_21.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_22.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_23.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_24.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_25.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_26.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_27.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_28.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_29.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_30.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_31.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_32.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_33.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_34.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_35.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_36.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_37.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_38.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_39.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_40.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_41.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_42.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_43.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_44.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_45.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_extra.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_prussian.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_00.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_01.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libsrsinit_la-srs_init.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_00.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_01.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_02.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_03.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_04.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_05.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_06.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_07.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_08.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_09.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_10.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_11.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_12.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_13.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_14.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_15.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_16.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_17.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_18.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_19.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_20.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_21.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_22.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_23.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_24.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_25.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_26.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_27.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_28.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_29.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_30.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_31.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_32.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_33.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_34.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_35.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_36.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_37.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_38.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_39.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_40.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_41.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_42.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_43.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_44.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_45.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_extra.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_prussian.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_wgs84_00.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-epsg_inlined_wgs84_01.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/srsinit_la-srs_init.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +libsrsinit_la-srs_init.lo: srs_init.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-srs_init.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-srs_init.Tpo -c -o libsrsinit_la-srs_init.lo `test -f 'srs_init.c' || echo '$(srcdir)/'`srs_init.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-srs_init.Tpo $(DEPDIR)/libsrsinit_la-srs_init.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='srs_init.c' object='libsrsinit_la-srs_init.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-srs_init.lo `test -f 'srs_init.c' || echo '$(srcdir)/'`srs_init.c + +libsrsinit_la-epsg_inlined_00.lo: epsg_inlined_00.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_00.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_00.Tpo -c -o libsrsinit_la-epsg_inlined_00.lo `test -f 'epsg_inlined_00.c' || echo '$(srcdir)/'`epsg_inlined_00.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_00.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_00.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_00.c' object='libsrsinit_la-epsg_inlined_00.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_00.lo `test -f 'epsg_inlined_00.c' || echo '$(srcdir)/'`epsg_inlined_00.c + +libsrsinit_la-epsg_inlined_01.lo: epsg_inlined_01.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_01.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_01.Tpo -c -o libsrsinit_la-epsg_inlined_01.lo `test -f 'epsg_inlined_01.c' || echo '$(srcdir)/'`epsg_inlined_01.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_01.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_01.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_01.c' object='libsrsinit_la-epsg_inlined_01.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_01.lo `test -f 'epsg_inlined_01.c' || echo '$(srcdir)/'`epsg_inlined_01.c + +libsrsinit_la-epsg_inlined_02.lo: epsg_inlined_02.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_02.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_02.Tpo -c -o libsrsinit_la-epsg_inlined_02.lo `test -f 'epsg_inlined_02.c' || echo '$(srcdir)/'`epsg_inlined_02.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_02.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_02.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_02.c' object='libsrsinit_la-epsg_inlined_02.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_02.lo `test -f 'epsg_inlined_02.c' || echo '$(srcdir)/'`epsg_inlined_02.c + +libsrsinit_la-epsg_inlined_03.lo: epsg_inlined_03.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_03.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_03.Tpo -c -o libsrsinit_la-epsg_inlined_03.lo `test -f 'epsg_inlined_03.c' || echo '$(srcdir)/'`epsg_inlined_03.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_03.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_03.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_03.c' object='libsrsinit_la-epsg_inlined_03.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_03.lo `test -f 'epsg_inlined_03.c' || echo '$(srcdir)/'`epsg_inlined_03.c + +libsrsinit_la-epsg_inlined_04.lo: epsg_inlined_04.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_04.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_04.Tpo -c -o libsrsinit_la-epsg_inlined_04.lo `test -f 'epsg_inlined_04.c' || echo '$(srcdir)/'`epsg_inlined_04.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_04.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_04.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_04.c' object='libsrsinit_la-epsg_inlined_04.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_04.lo `test -f 'epsg_inlined_04.c' || echo '$(srcdir)/'`epsg_inlined_04.c + +libsrsinit_la-epsg_inlined_05.lo: epsg_inlined_05.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_05.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_05.Tpo -c -o libsrsinit_la-epsg_inlined_05.lo `test -f 'epsg_inlined_05.c' || echo '$(srcdir)/'`epsg_inlined_05.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_05.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_05.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_05.c' object='libsrsinit_la-epsg_inlined_05.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_05.lo `test -f 'epsg_inlined_05.c' || echo '$(srcdir)/'`epsg_inlined_05.c + +libsrsinit_la-epsg_inlined_06.lo: epsg_inlined_06.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_06.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_06.Tpo -c -o libsrsinit_la-epsg_inlined_06.lo `test -f 'epsg_inlined_06.c' || echo '$(srcdir)/'`epsg_inlined_06.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_06.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_06.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_06.c' object='libsrsinit_la-epsg_inlined_06.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_06.lo `test -f 'epsg_inlined_06.c' || echo '$(srcdir)/'`epsg_inlined_06.c + +libsrsinit_la-epsg_inlined_07.lo: epsg_inlined_07.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_07.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_07.Tpo -c -o libsrsinit_la-epsg_inlined_07.lo `test -f 'epsg_inlined_07.c' || echo '$(srcdir)/'`epsg_inlined_07.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_07.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_07.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_07.c' object='libsrsinit_la-epsg_inlined_07.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_07.lo `test -f 'epsg_inlined_07.c' || echo '$(srcdir)/'`epsg_inlined_07.c + +libsrsinit_la-epsg_inlined_08.lo: epsg_inlined_08.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_08.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_08.Tpo -c -o libsrsinit_la-epsg_inlined_08.lo `test -f 'epsg_inlined_08.c' || echo '$(srcdir)/'`epsg_inlined_08.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_08.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_08.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_08.c' object='libsrsinit_la-epsg_inlined_08.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_08.lo `test -f 'epsg_inlined_08.c' || echo '$(srcdir)/'`epsg_inlined_08.c + +libsrsinit_la-epsg_inlined_09.lo: epsg_inlined_09.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_09.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_09.Tpo -c -o libsrsinit_la-epsg_inlined_09.lo `test -f 'epsg_inlined_09.c' || echo '$(srcdir)/'`epsg_inlined_09.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_09.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_09.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_09.c' object='libsrsinit_la-epsg_inlined_09.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_09.lo `test -f 'epsg_inlined_09.c' || echo '$(srcdir)/'`epsg_inlined_09.c + +libsrsinit_la-epsg_inlined_10.lo: epsg_inlined_10.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_10.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_10.Tpo -c -o libsrsinit_la-epsg_inlined_10.lo `test -f 'epsg_inlined_10.c' || echo '$(srcdir)/'`epsg_inlined_10.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_10.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_10.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_10.c' object='libsrsinit_la-epsg_inlined_10.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_10.lo `test -f 'epsg_inlined_10.c' || echo '$(srcdir)/'`epsg_inlined_10.c + +libsrsinit_la-epsg_inlined_11.lo: epsg_inlined_11.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_11.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_11.Tpo -c -o libsrsinit_la-epsg_inlined_11.lo `test -f 'epsg_inlined_11.c' || echo '$(srcdir)/'`epsg_inlined_11.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_11.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_11.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_11.c' object='libsrsinit_la-epsg_inlined_11.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_11.lo `test -f 'epsg_inlined_11.c' || echo '$(srcdir)/'`epsg_inlined_11.c + +libsrsinit_la-epsg_inlined_12.lo: epsg_inlined_12.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_12.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_12.Tpo -c -o libsrsinit_la-epsg_inlined_12.lo `test -f 'epsg_inlined_12.c' || echo '$(srcdir)/'`epsg_inlined_12.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_12.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_12.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_12.c' object='libsrsinit_la-epsg_inlined_12.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_12.lo `test -f 'epsg_inlined_12.c' || echo '$(srcdir)/'`epsg_inlined_12.c + +libsrsinit_la-epsg_inlined_13.lo: epsg_inlined_13.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_13.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_13.Tpo -c -o libsrsinit_la-epsg_inlined_13.lo `test -f 'epsg_inlined_13.c' || echo '$(srcdir)/'`epsg_inlined_13.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_13.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_13.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_13.c' object='libsrsinit_la-epsg_inlined_13.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_13.lo `test -f 'epsg_inlined_13.c' || echo '$(srcdir)/'`epsg_inlined_13.c + +libsrsinit_la-epsg_inlined_14.lo: epsg_inlined_14.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_14.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_14.Tpo -c -o libsrsinit_la-epsg_inlined_14.lo `test -f 'epsg_inlined_14.c' || echo '$(srcdir)/'`epsg_inlined_14.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_14.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_14.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_14.c' object='libsrsinit_la-epsg_inlined_14.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_14.lo `test -f 'epsg_inlined_14.c' || echo '$(srcdir)/'`epsg_inlined_14.c + +libsrsinit_la-epsg_inlined_15.lo: epsg_inlined_15.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_15.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_15.Tpo -c -o libsrsinit_la-epsg_inlined_15.lo `test -f 'epsg_inlined_15.c' || echo '$(srcdir)/'`epsg_inlined_15.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_15.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_15.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_15.c' object='libsrsinit_la-epsg_inlined_15.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_15.lo `test -f 'epsg_inlined_15.c' || echo '$(srcdir)/'`epsg_inlined_15.c + +libsrsinit_la-epsg_inlined_16.lo: epsg_inlined_16.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_16.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_16.Tpo -c -o libsrsinit_la-epsg_inlined_16.lo `test -f 'epsg_inlined_16.c' || echo '$(srcdir)/'`epsg_inlined_16.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_16.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_16.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_16.c' object='libsrsinit_la-epsg_inlined_16.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_16.lo `test -f 'epsg_inlined_16.c' || echo '$(srcdir)/'`epsg_inlined_16.c + +libsrsinit_la-epsg_inlined_17.lo: epsg_inlined_17.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_17.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_17.Tpo -c -o libsrsinit_la-epsg_inlined_17.lo `test -f 'epsg_inlined_17.c' || echo '$(srcdir)/'`epsg_inlined_17.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_17.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_17.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_17.c' object='libsrsinit_la-epsg_inlined_17.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_17.lo `test -f 'epsg_inlined_17.c' || echo '$(srcdir)/'`epsg_inlined_17.c + +libsrsinit_la-epsg_inlined_18.lo: epsg_inlined_18.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_18.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_18.Tpo -c -o libsrsinit_la-epsg_inlined_18.lo `test -f 'epsg_inlined_18.c' || echo '$(srcdir)/'`epsg_inlined_18.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_18.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_18.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_18.c' object='libsrsinit_la-epsg_inlined_18.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_18.lo `test -f 'epsg_inlined_18.c' || echo '$(srcdir)/'`epsg_inlined_18.c + +libsrsinit_la-epsg_inlined_19.lo: epsg_inlined_19.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_19.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_19.Tpo -c -o libsrsinit_la-epsg_inlined_19.lo `test -f 'epsg_inlined_19.c' || echo '$(srcdir)/'`epsg_inlined_19.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_19.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_19.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_19.c' object='libsrsinit_la-epsg_inlined_19.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_19.lo `test -f 'epsg_inlined_19.c' || echo '$(srcdir)/'`epsg_inlined_19.c + +libsrsinit_la-epsg_inlined_20.lo: epsg_inlined_20.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_20.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_20.Tpo -c -o libsrsinit_la-epsg_inlined_20.lo `test -f 'epsg_inlined_20.c' || echo '$(srcdir)/'`epsg_inlined_20.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_20.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_20.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_20.c' object='libsrsinit_la-epsg_inlined_20.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_20.lo `test -f 'epsg_inlined_20.c' || echo '$(srcdir)/'`epsg_inlined_20.c + +libsrsinit_la-epsg_inlined_21.lo: epsg_inlined_21.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_21.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_21.Tpo -c -o libsrsinit_la-epsg_inlined_21.lo `test -f 'epsg_inlined_21.c' || echo '$(srcdir)/'`epsg_inlined_21.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_21.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_21.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_21.c' object='libsrsinit_la-epsg_inlined_21.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_21.lo `test -f 'epsg_inlined_21.c' || echo '$(srcdir)/'`epsg_inlined_21.c + +libsrsinit_la-epsg_inlined_22.lo: epsg_inlined_22.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_22.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_22.Tpo -c -o libsrsinit_la-epsg_inlined_22.lo `test -f 'epsg_inlined_22.c' || echo '$(srcdir)/'`epsg_inlined_22.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_22.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_22.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_22.c' object='libsrsinit_la-epsg_inlined_22.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_22.lo `test -f 'epsg_inlined_22.c' || echo '$(srcdir)/'`epsg_inlined_22.c + +libsrsinit_la-epsg_inlined_23.lo: epsg_inlined_23.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_23.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_23.Tpo -c -o libsrsinit_la-epsg_inlined_23.lo `test -f 'epsg_inlined_23.c' || echo '$(srcdir)/'`epsg_inlined_23.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_23.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_23.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_23.c' object='libsrsinit_la-epsg_inlined_23.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_23.lo `test -f 'epsg_inlined_23.c' || echo '$(srcdir)/'`epsg_inlined_23.c + +libsrsinit_la-epsg_inlined_24.lo: epsg_inlined_24.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_24.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_24.Tpo -c -o libsrsinit_la-epsg_inlined_24.lo `test -f 'epsg_inlined_24.c' || echo '$(srcdir)/'`epsg_inlined_24.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_24.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_24.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_24.c' object='libsrsinit_la-epsg_inlined_24.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_24.lo `test -f 'epsg_inlined_24.c' || echo '$(srcdir)/'`epsg_inlined_24.c + +libsrsinit_la-epsg_inlined_25.lo: epsg_inlined_25.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_25.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_25.Tpo -c -o libsrsinit_la-epsg_inlined_25.lo `test -f 'epsg_inlined_25.c' || echo '$(srcdir)/'`epsg_inlined_25.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_25.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_25.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_25.c' object='libsrsinit_la-epsg_inlined_25.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_25.lo `test -f 'epsg_inlined_25.c' || echo '$(srcdir)/'`epsg_inlined_25.c + +libsrsinit_la-epsg_inlined_26.lo: epsg_inlined_26.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_26.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_26.Tpo -c -o libsrsinit_la-epsg_inlined_26.lo `test -f 'epsg_inlined_26.c' || echo '$(srcdir)/'`epsg_inlined_26.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_26.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_26.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_26.c' object='libsrsinit_la-epsg_inlined_26.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_26.lo `test -f 'epsg_inlined_26.c' || echo '$(srcdir)/'`epsg_inlined_26.c + +libsrsinit_la-epsg_inlined_27.lo: epsg_inlined_27.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_27.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_27.Tpo -c -o libsrsinit_la-epsg_inlined_27.lo `test -f 'epsg_inlined_27.c' || echo '$(srcdir)/'`epsg_inlined_27.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_27.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_27.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_27.c' object='libsrsinit_la-epsg_inlined_27.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_27.lo `test -f 'epsg_inlined_27.c' || echo '$(srcdir)/'`epsg_inlined_27.c + +libsrsinit_la-epsg_inlined_28.lo: epsg_inlined_28.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_28.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_28.Tpo -c -o libsrsinit_la-epsg_inlined_28.lo `test -f 'epsg_inlined_28.c' || echo '$(srcdir)/'`epsg_inlined_28.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_28.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_28.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_28.c' object='libsrsinit_la-epsg_inlined_28.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_28.lo `test -f 'epsg_inlined_28.c' || echo '$(srcdir)/'`epsg_inlined_28.c + +libsrsinit_la-epsg_inlined_29.lo: epsg_inlined_29.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_29.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_29.Tpo -c -o libsrsinit_la-epsg_inlined_29.lo `test -f 'epsg_inlined_29.c' || echo '$(srcdir)/'`epsg_inlined_29.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_29.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_29.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_29.c' object='libsrsinit_la-epsg_inlined_29.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_29.lo `test -f 'epsg_inlined_29.c' || echo '$(srcdir)/'`epsg_inlined_29.c + +libsrsinit_la-epsg_inlined_30.lo: epsg_inlined_30.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_30.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_30.Tpo -c -o libsrsinit_la-epsg_inlined_30.lo `test -f 'epsg_inlined_30.c' || echo '$(srcdir)/'`epsg_inlined_30.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_30.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_30.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_30.c' object='libsrsinit_la-epsg_inlined_30.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_30.lo `test -f 'epsg_inlined_30.c' || echo '$(srcdir)/'`epsg_inlined_30.c + +libsrsinit_la-epsg_inlined_31.lo: epsg_inlined_31.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_31.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_31.Tpo -c -o libsrsinit_la-epsg_inlined_31.lo `test -f 'epsg_inlined_31.c' || echo '$(srcdir)/'`epsg_inlined_31.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_31.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_31.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_31.c' object='libsrsinit_la-epsg_inlined_31.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_31.lo `test -f 'epsg_inlined_31.c' || echo '$(srcdir)/'`epsg_inlined_31.c + +libsrsinit_la-epsg_inlined_32.lo: epsg_inlined_32.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_32.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_32.Tpo -c -o libsrsinit_la-epsg_inlined_32.lo `test -f 'epsg_inlined_32.c' || echo '$(srcdir)/'`epsg_inlined_32.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_32.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_32.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_32.c' object='libsrsinit_la-epsg_inlined_32.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_32.lo `test -f 'epsg_inlined_32.c' || echo '$(srcdir)/'`epsg_inlined_32.c + +libsrsinit_la-epsg_inlined_33.lo: epsg_inlined_33.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_33.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_33.Tpo -c -o libsrsinit_la-epsg_inlined_33.lo `test -f 'epsg_inlined_33.c' || echo '$(srcdir)/'`epsg_inlined_33.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_33.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_33.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_33.c' object='libsrsinit_la-epsg_inlined_33.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_33.lo `test -f 'epsg_inlined_33.c' || echo '$(srcdir)/'`epsg_inlined_33.c + +libsrsinit_la-epsg_inlined_34.lo: epsg_inlined_34.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_34.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_34.Tpo -c -o libsrsinit_la-epsg_inlined_34.lo `test -f 'epsg_inlined_34.c' || echo '$(srcdir)/'`epsg_inlined_34.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_34.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_34.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_34.c' object='libsrsinit_la-epsg_inlined_34.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_34.lo `test -f 'epsg_inlined_34.c' || echo '$(srcdir)/'`epsg_inlined_34.c + +libsrsinit_la-epsg_inlined_35.lo: epsg_inlined_35.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_35.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_35.Tpo -c -o libsrsinit_la-epsg_inlined_35.lo `test -f 'epsg_inlined_35.c' || echo '$(srcdir)/'`epsg_inlined_35.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_35.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_35.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_35.c' object='libsrsinit_la-epsg_inlined_35.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_35.lo `test -f 'epsg_inlined_35.c' || echo '$(srcdir)/'`epsg_inlined_35.c + +libsrsinit_la-epsg_inlined_36.lo: epsg_inlined_36.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_36.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_36.Tpo -c -o libsrsinit_la-epsg_inlined_36.lo `test -f 'epsg_inlined_36.c' || echo '$(srcdir)/'`epsg_inlined_36.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_36.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_36.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_36.c' object='libsrsinit_la-epsg_inlined_36.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_36.lo `test -f 'epsg_inlined_36.c' || echo '$(srcdir)/'`epsg_inlined_36.c + +libsrsinit_la-epsg_inlined_37.lo: epsg_inlined_37.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_37.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_37.Tpo -c -o libsrsinit_la-epsg_inlined_37.lo `test -f 'epsg_inlined_37.c' || echo '$(srcdir)/'`epsg_inlined_37.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_37.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_37.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_37.c' object='libsrsinit_la-epsg_inlined_37.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_37.lo `test -f 'epsg_inlined_37.c' || echo '$(srcdir)/'`epsg_inlined_37.c + +libsrsinit_la-epsg_inlined_38.lo: epsg_inlined_38.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_38.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_38.Tpo -c -o libsrsinit_la-epsg_inlined_38.lo `test -f 'epsg_inlined_38.c' || echo '$(srcdir)/'`epsg_inlined_38.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_38.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_38.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_38.c' object='libsrsinit_la-epsg_inlined_38.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_38.lo `test -f 'epsg_inlined_38.c' || echo '$(srcdir)/'`epsg_inlined_38.c + +libsrsinit_la-epsg_inlined_39.lo: epsg_inlined_39.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_39.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_39.Tpo -c -o libsrsinit_la-epsg_inlined_39.lo `test -f 'epsg_inlined_39.c' || echo '$(srcdir)/'`epsg_inlined_39.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_39.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_39.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_39.c' object='libsrsinit_la-epsg_inlined_39.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_39.lo `test -f 'epsg_inlined_39.c' || echo '$(srcdir)/'`epsg_inlined_39.c + +libsrsinit_la-epsg_inlined_40.lo: epsg_inlined_40.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_40.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_40.Tpo -c -o libsrsinit_la-epsg_inlined_40.lo `test -f 'epsg_inlined_40.c' || echo '$(srcdir)/'`epsg_inlined_40.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_40.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_40.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_40.c' object='libsrsinit_la-epsg_inlined_40.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_40.lo `test -f 'epsg_inlined_40.c' || echo '$(srcdir)/'`epsg_inlined_40.c + +libsrsinit_la-epsg_inlined_41.lo: epsg_inlined_41.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_41.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_41.Tpo -c -o libsrsinit_la-epsg_inlined_41.lo `test -f 'epsg_inlined_41.c' || echo '$(srcdir)/'`epsg_inlined_41.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_41.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_41.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_41.c' object='libsrsinit_la-epsg_inlined_41.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_41.lo `test -f 'epsg_inlined_41.c' || echo '$(srcdir)/'`epsg_inlined_41.c + +libsrsinit_la-epsg_inlined_42.lo: epsg_inlined_42.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_42.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_42.Tpo -c -o libsrsinit_la-epsg_inlined_42.lo `test -f 'epsg_inlined_42.c' || echo '$(srcdir)/'`epsg_inlined_42.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_42.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_42.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_42.c' object='libsrsinit_la-epsg_inlined_42.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_42.lo `test -f 'epsg_inlined_42.c' || echo '$(srcdir)/'`epsg_inlined_42.c + +libsrsinit_la-epsg_inlined_43.lo: epsg_inlined_43.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_43.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_43.Tpo -c -o libsrsinit_la-epsg_inlined_43.lo `test -f 'epsg_inlined_43.c' || echo '$(srcdir)/'`epsg_inlined_43.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_43.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_43.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_43.c' object='libsrsinit_la-epsg_inlined_43.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_43.lo `test -f 'epsg_inlined_43.c' || echo '$(srcdir)/'`epsg_inlined_43.c + +libsrsinit_la-epsg_inlined_44.lo: epsg_inlined_44.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_44.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_44.Tpo -c -o libsrsinit_la-epsg_inlined_44.lo `test -f 'epsg_inlined_44.c' || echo '$(srcdir)/'`epsg_inlined_44.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_44.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_44.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_44.c' object='libsrsinit_la-epsg_inlined_44.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_44.lo `test -f 'epsg_inlined_44.c' || echo '$(srcdir)/'`epsg_inlined_44.c + +libsrsinit_la-epsg_inlined_45.lo: epsg_inlined_45.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_45.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_45.Tpo -c -o libsrsinit_la-epsg_inlined_45.lo `test -f 'epsg_inlined_45.c' || echo '$(srcdir)/'`epsg_inlined_45.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_45.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_45.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_45.c' object='libsrsinit_la-epsg_inlined_45.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_45.lo `test -f 'epsg_inlined_45.c' || echo '$(srcdir)/'`epsg_inlined_45.c + +libsrsinit_la-epsg_inlined_wgs84_00.lo: epsg_inlined_wgs84_00.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_wgs84_00.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_00.Tpo -c -o libsrsinit_la-epsg_inlined_wgs84_00.lo `test -f 'epsg_inlined_wgs84_00.c' || echo '$(srcdir)/'`epsg_inlined_wgs84_00.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_00.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_00.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_wgs84_00.c' object='libsrsinit_la-epsg_inlined_wgs84_00.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_wgs84_00.lo `test -f 'epsg_inlined_wgs84_00.c' || echo '$(srcdir)/'`epsg_inlined_wgs84_00.c + +libsrsinit_la-epsg_inlined_wgs84_01.lo: epsg_inlined_wgs84_01.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_wgs84_01.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_01.Tpo -c -o libsrsinit_la-epsg_inlined_wgs84_01.lo `test -f 'epsg_inlined_wgs84_01.c' || echo '$(srcdir)/'`epsg_inlined_wgs84_01.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_01.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_wgs84_01.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_wgs84_01.c' object='libsrsinit_la-epsg_inlined_wgs84_01.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_wgs84_01.lo `test -f 'epsg_inlined_wgs84_01.c' || echo '$(srcdir)/'`epsg_inlined_wgs84_01.c + +libsrsinit_la-epsg_inlined_prussian.lo: epsg_inlined_prussian.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_prussian.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_prussian.Tpo -c -o libsrsinit_la-epsg_inlined_prussian.lo `test -f 'epsg_inlined_prussian.c' || echo '$(srcdir)/'`epsg_inlined_prussian.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_prussian.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_prussian.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_prussian.c' object='libsrsinit_la-epsg_inlined_prussian.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_prussian.lo `test -f 'epsg_inlined_prussian.c' || echo '$(srcdir)/'`epsg_inlined_prussian.c + +libsrsinit_la-epsg_inlined_extra.lo: epsg_inlined_extra.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -MT libsrsinit_la-epsg_inlined_extra.lo -MD -MP -MF $(DEPDIR)/libsrsinit_la-epsg_inlined_extra.Tpo -c -o libsrsinit_la-epsg_inlined_extra.lo `test -f 'epsg_inlined_extra.c' || echo '$(srcdir)/'`epsg_inlined_extra.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libsrsinit_la-epsg_inlined_extra.Tpo $(DEPDIR)/libsrsinit_la-epsg_inlined_extra.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_extra.c' object='libsrsinit_la-epsg_inlined_extra.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libsrsinit_la_CFLAGS) $(CFLAGS) -c -o libsrsinit_la-epsg_inlined_extra.lo `test -f 'epsg_inlined_extra.c' || echo '$(srcdir)/'`epsg_inlined_extra.c + +srsinit_la-srs_init.lo: srs_init.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-srs_init.lo -MD -MP -MF $(DEPDIR)/srsinit_la-srs_init.Tpo -c -o srsinit_la-srs_init.lo `test -f 'srs_init.c' || echo '$(srcdir)/'`srs_init.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-srs_init.Tpo $(DEPDIR)/srsinit_la-srs_init.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='srs_init.c' object='srsinit_la-srs_init.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-srs_init.lo `test -f 'srs_init.c' || echo '$(srcdir)/'`srs_init.c + +srsinit_la-epsg_inlined_00.lo: epsg_inlined_00.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_00.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_00.Tpo -c -o srsinit_la-epsg_inlined_00.lo `test -f 'epsg_inlined_00.c' || echo '$(srcdir)/'`epsg_inlined_00.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_00.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_00.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_00.c' object='srsinit_la-epsg_inlined_00.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_00.lo `test -f 'epsg_inlined_00.c' || echo '$(srcdir)/'`epsg_inlined_00.c + +srsinit_la-epsg_inlined_01.lo: epsg_inlined_01.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_01.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_01.Tpo -c -o srsinit_la-epsg_inlined_01.lo `test -f 'epsg_inlined_01.c' || echo '$(srcdir)/'`epsg_inlined_01.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_01.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_01.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_01.c' object='srsinit_la-epsg_inlined_01.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_01.lo `test -f 'epsg_inlined_01.c' || echo '$(srcdir)/'`epsg_inlined_01.c + +srsinit_la-epsg_inlined_02.lo: epsg_inlined_02.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_02.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_02.Tpo -c -o srsinit_la-epsg_inlined_02.lo `test -f 'epsg_inlined_02.c' || echo '$(srcdir)/'`epsg_inlined_02.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_02.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_02.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_02.c' object='srsinit_la-epsg_inlined_02.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_02.lo `test -f 'epsg_inlined_02.c' || echo '$(srcdir)/'`epsg_inlined_02.c + +srsinit_la-epsg_inlined_03.lo: epsg_inlined_03.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_03.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_03.Tpo -c -o srsinit_la-epsg_inlined_03.lo `test -f 'epsg_inlined_03.c' || echo '$(srcdir)/'`epsg_inlined_03.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_03.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_03.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_03.c' object='srsinit_la-epsg_inlined_03.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_03.lo `test -f 'epsg_inlined_03.c' || echo '$(srcdir)/'`epsg_inlined_03.c + +srsinit_la-epsg_inlined_04.lo: epsg_inlined_04.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_04.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_04.Tpo -c -o srsinit_la-epsg_inlined_04.lo `test -f 'epsg_inlined_04.c' || echo '$(srcdir)/'`epsg_inlined_04.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_04.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_04.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_04.c' object='srsinit_la-epsg_inlined_04.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_04.lo `test -f 'epsg_inlined_04.c' || echo '$(srcdir)/'`epsg_inlined_04.c + +srsinit_la-epsg_inlined_05.lo: epsg_inlined_05.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_05.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_05.Tpo -c -o srsinit_la-epsg_inlined_05.lo `test -f 'epsg_inlined_05.c' || echo '$(srcdir)/'`epsg_inlined_05.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_05.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_05.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_05.c' object='srsinit_la-epsg_inlined_05.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_05.lo `test -f 'epsg_inlined_05.c' || echo '$(srcdir)/'`epsg_inlined_05.c + +srsinit_la-epsg_inlined_06.lo: epsg_inlined_06.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_06.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_06.Tpo -c -o srsinit_la-epsg_inlined_06.lo `test -f 'epsg_inlined_06.c' || echo '$(srcdir)/'`epsg_inlined_06.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_06.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_06.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_06.c' object='srsinit_la-epsg_inlined_06.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_06.lo `test -f 'epsg_inlined_06.c' || echo '$(srcdir)/'`epsg_inlined_06.c + +srsinit_la-epsg_inlined_07.lo: epsg_inlined_07.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_07.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_07.Tpo -c -o srsinit_la-epsg_inlined_07.lo `test -f 'epsg_inlined_07.c' || echo '$(srcdir)/'`epsg_inlined_07.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_07.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_07.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_07.c' object='srsinit_la-epsg_inlined_07.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_07.lo `test -f 'epsg_inlined_07.c' || echo '$(srcdir)/'`epsg_inlined_07.c + +srsinit_la-epsg_inlined_08.lo: epsg_inlined_08.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_08.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_08.Tpo -c -o srsinit_la-epsg_inlined_08.lo `test -f 'epsg_inlined_08.c' || echo '$(srcdir)/'`epsg_inlined_08.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_08.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_08.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_08.c' object='srsinit_la-epsg_inlined_08.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_08.lo `test -f 'epsg_inlined_08.c' || echo '$(srcdir)/'`epsg_inlined_08.c + +srsinit_la-epsg_inlined_09.lo: epsg_inlined_09.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_09.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_09.Tpo -c -o srsinit_la-epsg_inlined_09.lo `test -f 'epsg_inlined_09.c' || echo '$(srcdir)/'`epsg_inlined_09.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_09.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_09.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_09.c' object='srsinit_la-epsg_inlined_09.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_09.lo `test -f 'epsg_inlined_09.c' || echo '$(srcdir)/'`epsg_inlined_09.c + +srsinit_la-epsg_inlined_10.lo: epsg_inlined_10.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_10.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_10.Tpo -c -o srsinit_la-epsg_inlined_10.lo `test -f 'epsg_inlined_10.c' || echo '$(srcdir)/'`epsg_inlined_10.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_10.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_10.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_10.c' object='srsinit_la-epsg_inlined_10.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_10.lo `test -f 'epsg_inlined_10.c' || echo '$(srcdir)/'`epsg_inlined_10.c + +srsinit_la-epsg_inlined_11.lo: epsg_inlined_11.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_11.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_11.Tpo -c -o srsinit_la-epsg_inlined_11.lo `test -f 'epsg_inlined_11.c' || echo '$(srcdir)/'`epsg_inlined_11.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_11.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_11.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_11.c' object='srsinit_la-epsg_inlined_11.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_11.lo `test -f 'epsg_inlined_11.c' || echo '$(srcdir)/'`epsg_inlined_11.c + +srsinit_la-epsg_inlined_12.lo: epsg_inlined_12.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_12.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_12.Tpo -c -o srsinit_la-epsg_inlined_12.lo `test -f 'epsg_inlined_12.c' || echo '$(srcdir)/'`epsg_inlined_12.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_12.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_12.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_12.c' object='srsinit_la-epsg_inlined_12.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_12.lo `test -f 'epsg_inlined_12.c' || echo '$(srcdir)/'`epsg_inlined_12.c + +srsinit_la-epsg_inlined_13.lo: epsg_inlined_13.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_13.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_13.Tpo -c -o srsinit_la-epsg_inlined_13.lo `test -f 'epsg_inlined_13.c' || echo '$(srcdir)/'`epsg_inlined_13.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_13.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_13.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_13.c' object='srsinit_la-epsg_inlined_13.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_13.lo `test -f 'epsg_inlined_13.c' || echo '$(srcdir)/'`epsg_inlined_13.c + +srsinit_la-epsg_inlined_14.lo: epsg_inlined_14.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_14.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_14.Tpo -c -o srsinit_la-epsg_inlined_14.lo `test -f 'epsg_inlined_14.c' || echo '$(srcdir)/'`epsg_inlined_14.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_14.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_14.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_14.c' object='srsinit_la-epsg_inlined_14.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_14.lo `test -f 'epsg_inlined_14.c' || echo '$(srcdir)/'`epsg_inlined_14.c + +srsinit_la-epsg_inlined_15.lo: epsg_inlined_15.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_15.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_15.Tpo -c -o srsinit_la-epsg_inlined_15.lo `test -f 'epsg_inlined_15.c' || echo '$(srcdir)/'`epsg_inlined_15.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_15.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_15.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_15.c' object='srsinit_la-epsg_inlined_15.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_15.lo `test -f 'epsg_inlined_15.c' || echo '$(srcdir)/'`epsg_inlined_15.c + +srsinit_la-epsg_inlined_16.lo: epsg_inlined_16.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_16.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_16.Tpo -c -o srsinit_la-epsg_inlined_16.lo `test -f 'epsg_inlined_16.c' || echo '$(srcdir)/'`epsg_inlined_16.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_16.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_16.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_16.c' object='srsinit_la-epsg_inlined_16.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_16.lo `test -f 'epsg_inlined_16.c' || echo '$(srcdir)/'`epsg_inlined_16.c + +srsinit_la-epsg_inlined_17.lo: epsg_inlined_17.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_17.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_17.Tpo -c -o srsinit_la-epsg_inlined_17.lo `test -f 'epsg_inlined_17.c' || echo '$(srcdir)/'`epsg_inlined_17.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_17.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_17.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_17.c' object='srsinit_la-epsg_inlined_17.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_17.lo `test -f 'epsg_inlined_17.c' || echo '$(srcdir)/'`epsg_inlined_17.c + +srsinit_la-epsg_inlined_18.lo: epsg_inlined_18.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_18.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_18.Tpo -c -o srsinit_la-epsg_inlined_18.lo `test -f 'epsg_inlined_18.c' || echo '$(srcdir)/'`epsg_inlined_18.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_18.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_18.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_18.c' object='srsinit_la-epsg_inlined_18.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_18.lo `test -f 'epsg_inlined_18.c' || echo '$(srcdir)/'`epsg_inlined_18.c + +srsinit_la-epsg_inlined_19.lo: epsg_inlined_19.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_19.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_19.Tpo -c -o srsinit_la-epsg_inlined_19.lo `test -f 'epsg_inlined_19.c' || echo '$(srcdir)/'`epsg_inlined_19.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_19.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_19.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_19.c' object='srsinit_la-epsg_inlined_19.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_19.lo `test -f 'epsg_inlined_19.c' || echo '$(srcdir)/'`epsg_inlined_19.c + +srsinit_la-epsg_inlined_20.lo: epsg_inlined_20.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_20.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_20.Tpo -c -o srsinit_la-epsg_inlined_20.lo `test -f 'epsg_inlined_20.c' || echo '$(srcdir)/'`epsg_inlined_20.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_20.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_20.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_20.c' object='srsinit_la-epsg_inlined_20.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_20.lo `test -f 'epsg_inlined_20.c' || echo '$(srcdir)/'`epsg_inlined_20.c + +srsinit_la-epsg_inlined_21.lo: epsg_inlined_21.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_21.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_21.Tpo -c -o srsinit_la-epsg_inlined_21.lo `test -f 'epsg_inlined_21.c' || echo '$(srcdir)/'`epsg_inlined_21.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_21.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_21.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_21.c' object='srsinit_la-epsg_inlined_21.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_21.lo `test -f 'epsg_inlined_21.c' || echo '$(srcdir)/'`epsg_inlined_21.c + +srsinit_la-epsg_inlined_22.lo: epsg_inlined_22.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_22.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_22.Tpo -c -o srsinit_la-epsg_inlined_22.lo `test -f 'epsg_inlined_22.c' || echo '$(srcdir)/'`epsg_inlined_22.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_22.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_22.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_22.c' object='srsinit_la-epsg_inlined_22.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_22.lo `test -f 'epsg_inlined_22.c' || echo '$(srcdir)/'`epsg_inlined_22.c + +srsinit_la-epsg_inlined_23.lo: epsg_inlined_23.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_23.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_23.Tpo -c -o srsinit_la-epsg_inlined_23.lo `test -f 'epsg_inlined_23.c' || echo '$(srcdir)/'`epsg_inlined_23.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_23.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_23.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_23.c' object='srsinit_la-epsg_inlined_23.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_23.lo `test -f 'epsg_inlined_23.c' || echo '$(srcdir)/'`epsg_inlined_23.c + +srsinit_la-epsg_inlined_24.lo: epsg_inlined_24.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_24.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_24.Tpo -c -o srsinit_la-epsg_inlined_24.lo `test -f 'epsg_inlined_24.c' || echo '$(srcdir)/'`epsg_inlined_24.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_24.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_24.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_24.c' object='srsinit_la-epsg_inlined_24.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_24.lo `test -f 'epsg_inlined_24.c' || echo '$(srcdir)/'`epsg_inlined_24.c + +srsinit_la-epsg_inlined_25.lo: epsg_inlined_25.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_25.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_25.Tpo -c -o srsinit_la-epsg_inlined_25.lo `test -f 'epsg_inlined_25.c' || echo '$(srcdir)/'`epsg_inlined_25.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_25.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_25.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_25.c' object='srsinit_la-epsg_inlined_25.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_25.lo `test -f 'epsg_inlined_25.c' || echo '$(srcdir)/'`epsg_inlined_25.c + +srsinit_la-epsg_inlined_26.lo: epsg_inlined_26.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_26.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_26.Tpo -c -o srsinit_la-epsg_inlined_26.lo `test -f 'epsg_inlined_26.c' || echo '$(srcdir)/'`epsg_inlined_26.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_26.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_26.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_26.c' object='srsinit_la-epsg_inlined_26.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_26.lo `test -f 'epsg_inlined_26.c' || echo '$(srcdir)/'`epsg_inlined_26.c + +srsinit_la-epsg_inlined_27.lo: epsg_inlined_27.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_27.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_27.Tpo -c -o srsinit_la-epsg_inlined_27.lo `test -f 'epsg_inlined_27.c' || echo '$(srcdir)/'`epsg_inlined_27.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_27.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_27.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_27.c' object='srsinit_la-epsg_inlined_27.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_27.lo `test -f 'epsg_inlined_27.c' || echo '$(srcdir)/'`epsg_inlined_27.c + +srsinit_la-epsg_inlined_28.lo: epsg_inlined_28.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_28.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_28.Tpo -c -o srsinit_la-epsg_inlined_28.lo `test -f 'epsg_inlined_28.c' || echo '$(srcdir)/'`epsg_inlined_28.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_28.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_28.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_28.c' object='srsinit_la-epsg_inlined_28.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_28.lo `test -f 'epsg_inlined_28.c' || echo '$(srcdir)/'`epsg_inlined_28.c + +srsinit_la-epsg_inlined_29.lo: epsg_inlined_29.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_29.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_29.Tpo -c -o srsinit_la-epsg_inlined_29.lo `test -f 'epsg_inlined_29.c' || echo '$(srcdir)/'`epsg_inlined_29.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_29.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_29.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_29.c' object='srsinit_la-epsg_inlined_29.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_29.lo `test -f 'epsg_inlined_29.c' || echo '$(srcdir)/'`epsg_inlined_29.c + +srsinit_la-epsg_inlined_30.lo: epsg_inlined_30.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_30.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_30.Tpo -c -o srsinit_la-epsg_inlined_30.lo `test -f 'epsg_inlined_30.c' || echo '$(srcdir)/'`epsg_inlined_30.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_30.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_30.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_30.c' object='srsinit_la-epsg_inlined_30.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_30.lo `test -f 'epsg_inlined_30.c' || echo '$(srcdir)/'`epsg_inlined_30.c + +srsinit_la-epsg_inlined_31.lo: epsg_inlined_31.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_31.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_31.Tpo -c -o srsinit_la-epsg_inlined_31.lo `test -f 'epsg_inlined_31.c' || echo '$(srcdir)/'`epsg_inlined_31.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_31.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_31.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_31.c' object='srsinit_la-epsg_inlined_31.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_31.lo `test -f 'epsg_inlined_31.c' || echo '$(srcdir)/'`epsg_inlined_31.c + +srsinit_la-epsg_inlined_32.lo: epsg_inlined_32.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_32.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_32.Tpo -c -o srsinit_la-epsg_inlined_32.lo `test -f 'epsg_inlined_32.c' || echo '$(srcdir)/'`epsg_inlined_32.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_32.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_32.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_32.c' object='srsinit_la-epsg_inlined_32.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_32.lo `test -f 'epsg_inlined_32.c' || echo '$(srcdir)/'`epsg_inlined_32.c + +srsinit_la-epsg_inlined_33.lo: epsg_inlined_33.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_33.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_33.Tpo -c -o srsinit_la-epsg_inlined_33.lo `test -f 'epsg_inlined_33.c' || echo '$(srcdir)/'`epsg_inlined_33.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_33.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_33.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_33.c' object='srsinit_la-epsg_inlined_33.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_33.lo `test -f 'epsg_inlined_33.c' || echo '$(srcdir)/'`epsg_inlined_33.c + +srsinit_la-epsg_inlined_34.lo: epsg_inlined_34.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_34.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_34.Tpo -c -o srsinit_la-epsg_inlined_34.lo `test -f 'epsg_inlined_34.c' || echo '$(srcdir)/'`epsg_inlined_34.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_34.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_34.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_34.c' object='srsinit_la-epsg_inlined_34.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_34.lo `test -f 'epsg_inlined_34.c' || echo '$(srcdir)/'`epsg_inlined_34.c + +srsinit_la-epsg_inlined_35.lo: epsg_inlined_35.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_35.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_35.Tpo -c -o srsinit_la-epsg_inlined_35.lo `test -f 'epsg_inlined_35.c' || echo '$(srcdir)/'`epsg_inlined_35.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_35.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_35.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_35.c' object='srsinit_la-epsg_inlined_35.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_35.lo `test -f 'epsg_inlined_35.c' || echo '$(srcdir)/'`epsg_inlined_35.c + +srsinit_la-epsg_inlined_36.lo: epsg_inlined_36.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_36.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_36.Tpo -c -o srsinit_la-epsg_inlined_36.lo `test -f 'epsg_inlined_36.c' || echo '$(srcdir)/'`epsg_inlined_36.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_36.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_36.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_36.c' object='srsinit_la-epsg_inlined_36.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_36.lo `test -f 'epsg_inlined_36.c' || echo '$(srcdir)/'`epsg_inlined_36.c + +srsinit_la-epsg_inlined_37.lo: epsg_inlined_37.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_37.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_37.Tpo -c -o srsinit_la-epsg_inlined_37.lo `test -f 'epsg_inlined_37.c' || echo '$(srcdir)/'`epsg_inlined_37.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_37.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_37.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_37.c' object='srsinit_la-epsg_inlined_37.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_37.lo `test -f 'epsg_inlined_37.c' || echo '$(srcdir)/'`epsg_inlined_37.c + +srsinit_la-epsg_inlined_38.lo: epsg_inlined_38.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_38.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_38.Tpo -c -o srsinit_la-epsg_inlined_38.lo `test -f 'epsg_inlined_38.c' || echo '$(srcdir)/'`epsg_inlined_38.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_38.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_38.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_38.c' object='srsinit_la-epsg_inlined_38.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_38.lo `test -f 'epsg_inlined_38.c' || echo '$(srcdir)/'`epsg_inlined_38.c + +srsinit_la-epsg_inlined_39.lo: epsg_inlined_39.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_39.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_39.Tpo -c -o srsinit_la-epsg_inlined_39.lo `test -f 'epsg_inlined_39.c' || echo '$(srcdir)/'`epsg_inlined_39.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_39.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_39.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_39.c' object='srsinit_la-epsg_inlined_39.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_39.lo `test -f 'epsg_inlined_39.c' || echo '$(srcdir)/'`epsg_inlined_39.c + +srsinit_la-epsg_inlined_40.lo: epsg_inlined_40.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_40.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_40.Tpo -c -o srsinit_la-epsg_inlined_40.lo `test -f 'epsg_inlined_40.c' || echo '$(srcdir)/'`epsg_inlined_40.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_40.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_40.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_40.c' object='srsinit_la-epsg_inlined_40.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_40.lo `test -f 'epsg_inlined_40.c' || echo '$(srcdir)/'`epsg_inlined_40.c + +srsinit_la-epsg_inlined_41.lo: epsg_inlined_41.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_41.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_41.Tpo -c -o srsinit_la-epsg_inlined_41.lo `test -f 'epsg_inlined_41.c' || echo '$(srcdir)/'`epsg_inlined_41.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_41.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_41.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_41.c' object='srsinit_la-epsg_inlined_41.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_41.lo `test -f 'epsg_inlined_41.c' || echo '$(srcdir)/'`epsg_inlined_41.c + +srsinit_la-epsg_inlined_42.lo: epsg_inlined_42.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_42.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_42.Tpo -c -o srsinit_la-epsg_inlined_42.lo `test -f 'epsg_inlined_42.c' || echo '$(srcdir)/'`epsg_inlined_42.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_42.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_42.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_42.c' object='srsinit_la-epsg_inlined_42.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_42.lo `test -f 'epsg_inlined_42.c' || echo '$(srcdir)/'`epsg_inlined_42.c + +srsinit_la-epsg_inlined_43.lo: epsg_inlined_43.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_43.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_43.Tpo -c -o srsinit_la-epsg_inlined_43.lo `test -f 'epsg_inlined_43.c' || echo '$(srcdir)/'`epsg_inlined_43.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_43.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_43.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_43.c' object='srsinit_la-epsg_inlined_43.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_43.lo `test -f 'epsg_inlined_43.c' || echo '$(srcdir)/'`epsg_inlined_43.c + +srsinit_la-epsg_inlined_44.lo: epsg_inlined_44.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_44.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_44.Tpo -c -o srsinit_la-epsg_inlined_44.lo `test -f 'epsg_inlined_44.c' || echo '$(srcdir)/'`epsg_inlined_44.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_44.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_44.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_44.c' object='srsinit_la-epsg_inlined_44.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_44.lo `test -f 'epsg_inlined_44.c' || echo '$(srcdir)/'`epsg_inlined_44.c + +srsinit_la-epsg_inlined_45.lo: epsg_inlined_45.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_45.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_45.Tpo -c -o srsinit_la-epsg_inlined_45.lo `test -f 'epsg_inlined_45.c' || echo '$(srcdir)/'`epsg_inlined_45.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_45.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_45.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_45.c' object='srsinit_la-epsg_inlined_45.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_45.lo `test -f 'epsg_inlined_45.c' || echo '$(srcdir)/'`epsg_inlined_45.c + +srsinit_la-epsg_inlined_wgs84_00.lo: epsg_inlined_wgs84_00.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_wgs84_00.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_wgs84_00.Tpo -c -o srsinit_la-epsg_inlined_wgs84_00.lo `test -f 'epsg_inlined_wgs84_00.c' || echo '$(srcdir)/'`epsg_inlined_wgs84_00.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_wgs84_00.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_wgs84_00.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_wgs84_00.c' object='srsinit_la-epsg_inlined_wgs84_00.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_wgs84_00.lo `test -f 'epsg_inlined_wgs84_00.c' || echo '$(srcdir)/'`epsg_inlined_wgs84_00.c + +srsinit_la-epsg_inlined_wgs84_01.lo: epsg_inlined_wgs84_01.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_wgs84_01.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_wgs84_01.Tpo -c -o srsinit_la-epsg_inlined_wgs84_01.lo `test -f 'epsg_inlined_wgs84_01.c' || echo '$(srcdir)/'`epsg_inlined_wgs84_01.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_wgs84_01.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_wgs84_01.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_wgs84_01.c' object='srsinit_la-epsg_inlined_wgs84_01.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_wgs84_01.lo `test -f 'epsg_inlined_wgs84_01.c' || echo '$(srcdir)/'`epsg_inlined_wgs84_01.c + +srsinit_la-epsg_inlined_prussian.lo: epsg_inlined_prussian.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_prussian.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_prussian.Tpo -c -o srsinit_la-epsg_inlined_prussian.lo `test -f 'epsg_inlined_prussian.c' || echo '$(srcdir)/'`epsg_inlined_prussian.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_prussian.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_prussian.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_prussian.c' object='srsinit_la-epsg_inlined_prussian.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_prussian.lo `test -f 'epsg_inlined_prussian.c' || echo '$(srcdir)/'`epsg_inlined_prussian.c + +srsinit_la-epsg_inlined_extra.lo: epsg_inlined_extra.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT srsinit_la-epsg_inlined_extra.lo -MD -MP -MF $(DEPDIR)/srsinit_la-epsg_inlined_extra.Tpo -c -o srsinit_la-epsg_inlined_extra.lo `test -f 'epsg_inlined_extra.c' || echo '$(srcdir)/'`epsg_inlined_extra.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/srsinit_la-epsg_inlined_extra.Tpo $(DEPDIR)/srsinit_la-epsg_inlined_extra.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='epsg_inlined_extra.c' object='srsinit_la-epsg_inlined_extra.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(srsinit_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(srsinit_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o srsinit_la-epsg_inlined_extra.lo `test -f 'epsg_inlined_extra.c' || echo '$(srcdir)/'`epsg_inlined_extra.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-recursive +all-am: Makefile $(LTLIBRARIES) +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-am clean clean-generic clean-libtool \ + clean-noinstLTLIBRARIES cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/srsinit/epsg_inlined_00.c b/src/spatialite/src/srsinit/epsg_inlined_00.c new file mode 100644 index 0000000..0bc77ff --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_00.c @@ -0,0 +1,3366 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_00 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 2000, "epsg", 2000, + "Anguilla 1957 / British West Indies Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); + add_proj4text (p, 1, + "_0=400000 +y_0=0 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Anguilla 1957 / British West Indies Grid\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Anguilla 1957\",DATUM[\"Anguilla_1957\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7012\"]],AUTHORITY[\"EPSG\",\"6600\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4600\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-62],PARAMETER[\"scale_factor\",0.9995],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",400000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"2000\"]]"); + p = add_epsg_def (filter, first, last, 2001, "epsg", 2001, + "Antigua 1943 / British West Indies Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); + add_proj4text (p, 1, + "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-255,-15,71,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Antigua 1943 / British West Indies Grid\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"Antigua 1943\",DATUM[\"Antigua_1943\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7012\"]],TOWGS84[-255,-15,71,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6601\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4601\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",-62],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9995],PARAMETER[\"false_easting\",400"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2001\"]]"); + p = add_epsg_def (filter, first, last, 2002, "epsg", 2002, + "Dominica 1945 / British West Indies Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); + add_proj4text (p, 1, + "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=725,685,536,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Dominica 1945 / British West Indies Grid\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Dominica 1945\",DATUM[\"Dominica_1945\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7012\"]],TOWGS84[725,685,536,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6602\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4602\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",-62],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",0.9995],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "400000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2002\"]]"); + p = add_epsg_def (filter, first, last, 2003, "epsg", 2003, + "Grenada 1953 / British West Indies Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); + add_proj4text (p, 1, + "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=72,213.7,93,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Grenada 1953 / British West Indies Grid\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"Grenada 1953\",DATUM[\"Grenada_1953\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7012\"]],TOWGS84[72,213.7,93,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6603\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4603\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",-62],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9995],PARAMETER[\"false_easting\",400"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2003\"]]"); + p = add_epsg_def (filter, first, last, 2004, "epsg", 2004, + "Montserrat 1958 / British West Indies Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); + add_proj4text (p, 1, + "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=174,359,365,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Montserrat 1958 / British West Indies Grid\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"Montserrat 1958\",DATUM[\"Montserrat_1958\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7012\"]],TOWGS84[174,359,365,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6604\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4604\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",-62],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",0.9995],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",400000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EA"); + add_srs_wkt (p, 12, + "ST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2004\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 2005, "epsg", 2005, + "St. Kitts 1955 / British West Indies Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); + add_proj4text (p, 1, + "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=9,183,236,0,0,0,"); + add_proj4text (p, 2, + "0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"St. Kitts 1955 / British West Indies Grid\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"St. Kitts 1955\",DATUM[\"St_Kitts_1955\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7012\"]],TOWGS84[9,183,236,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6605\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4605\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",-62],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",0.9995],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "400000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2005\"]]"); + p = add_epsg_def (filter, first, last, 2006, "epsg", 2006, + "St. Lucia 1955 / British West Indies Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); + add_proj4text (p, 1, + "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=-149,128,296,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"St. Lucia 1955 / British West Indies Grid\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"St. Lucia 1955\",DATUM[\"St_Lucia_1955\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7012\"]],TOWGS84[-149,128,296,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6606\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4606\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",-62],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",0.9995],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",400000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2006\"]]"); + p = add_epsg_def (filter, first, last, 2007, "epsg", 2007, + "St. Vincent 45 / British West Indies Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); + add_proj4text (p, 1, + "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=195.671,332.517,"); + add_proj4text (p, 2, + "274.607,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"St. Vincent 45 / British West Indies Grid\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"St. Vincent 1945\",DATUM[\"St_Vincent_1945\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7012\"]],TOWGS84[195.671,332.517,274.607,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6607\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4607\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 9, + "ian\",-62],PARAMETER[\"scale_factor\",0.9995],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",400000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 11, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"2007\"]]"); + p = add_epsg_def (filter, first, last, 2008, "epsg", 2008, + "NAD27(CGQ77) / SCoPQ zone 2 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 2 (deprecated)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD27(CGQ77)\",DATUM[\"North_American_Datum_1927_CG"); + add_srs_wkt (p, 2, + "Q77\",SPHEROID[\"Clarke 1866\",6378206.4,294.97869821390"); + add_srs_wkt (p, 3, + "06,AUTHORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"66"); + add_srs_wkt (p, 4, + "09\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-55.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9999],PARAMETER[\"false_easting\",304800],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"2008\"]]"); + p = add_epsg_def (filter, first, last, 2009, "epsg", 2009, + "NAD27(CGQ77) / SCoPQ zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 3\",GEOGCS[\"NAD27(CG"); + add_srs_wkt (p, 1, + "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-58.5],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9999],PARAMETER[\"false_easting\",304800],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2009\"]]"); + p = add_epsg_def (filter, first, last, 2010, "epsg", 2010, + "NAD27(CGQ77) / SCoPQ zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 4\",GEOGCS[\"NAD27(CG"); + add_srs_wkt (p, 1, + "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-61.5],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9999],PARAMETER[\"false_easting\",304800],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2010\"]]"); + p = add_epsg_def (filter, first, last, 2011, "epsg", 2011, + "NAD27(CGQ77) / SCoPQ zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 5\",GEOGCS[\"NAD27(CG"); + add_srs_wkt (p, 1, + "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-64.5],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9999],PARAMETER[\"false_easting\",304800],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2011\"]]"); + p = add_epsg_def (filter, first, last, 2012, "epsg", 2012, + "NAD27(CGQ77) / SCoPQ zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 6\",GEOGCS[\"NAD27(CG"); + add_srs_wkt (p, 1, + "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-67.5],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9999],PARAMETER[\"false_easting\",304800],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2012\"]]"); + p = add_epsg_def (filter, first, last, 2013, "epsg", 2013, + "NAD27(CGQ77) / SCoPQ zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 7\",GEOGCS[\"NAD27(CG"); + add_srs_wkt (p, 1, + "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-70.5],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9999],PARAMETER[\"false_easting\",304800],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2013\"]]"); + p = add_epsg_def (filter, first, last, 2014, "epsg", 2014, + "NAD27(CGQ77) / SCoPQ zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 8\",GEOGCS[\"NAD27(CG"); + add_srs_wkt (p, 1, + "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-73.5],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9999],PARAMETER[\"false_easting\",304800],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2014\"]]"); + p = add_epsg_def (filter, first, last, 2015, "epsg", 2015, + "NAD27(CGQ77) / SCoPQ zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 9\",GEOGCS[\"NAD27(CG"); + add_srs_wkt (p, 1, + "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-76.5],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9999],PARAMETER[\"false_easting\",304800],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2015\"]]"); + p = add_epsg_def (filter, first, last, 2016, "epsg", 2016, + "NAD27(CGQ77) / SCoPQ zone 10"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(CGQ77) / SCoPQ zone 10\",GEOGCS[\"NAD27(C"); + add_srs_wkt (p, 1, + "GQ77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-79.5],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.9999],PARAMETER[\"false_easting\",304800],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"2016\"]]"); + p = add_epsg_def (filter, first, last, 2017, "epsg", 2017, + "NAD27(76) / MTM zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(76) / MTM zone 8\",GEOGCS[\"NAD27(76)\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clark"); + add_srs_wkt (p, 2, + "e 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 7, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",-73.5],PARAMETER[\"scale_factor\",0.9999],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",304800],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2017\"]]"); + p = add_epsg_def (filter, first, last, 2018, "epsg", 2018, + "NAD27(76) / MTM zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(76) / MTM zone 9\",GEOGCS[\"NAD27(76)\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clark"); + add_srs_wkt (p, 2, + "e 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 7, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",-76.5],PARAMETER[\"scale_factor\",0.9999],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",304800],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2018\"]]"); + p = add_epsg_def (filter, first, last, 2019, "epsg", 2019, + "NAD27(76) / MTM zone 10"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(76) / MTM zone 10\",GEOGCS[\"NAD27(76)\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); + add_srs_wkt (p, 2, + "ke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-79.5],PARAMETER[\"scale_factor\",0.9999],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2019\"]]"); + p = add_epsg_def (filter, first, last, 2020, "epsg", 2020, + "NAD27(76) / MTM zone 11"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(76) / MTM zone 11\",GEOGCS[\"NAD27(76)\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); + add_srs_wkt (p, 2, + "ke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-82.5],PARAMETER[\"scale_factor\",0.9999],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"2020\"]]"); + p = add_epsg_def (filter, first, last, 2021, "epsg", 2021, + "NAD27(76) / MTM zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(76) / MTM zone 12\",GEOGCS[\"NAD27(76)\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); + add_srs_wkt (p, 2, + "ke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-81],PARAMETER[\"scale_factor\",0.9999],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2021\"]]"); + p = add_epsg_def (filter, first, last, 2022, "epsg", 2022, + "NAD27(76) / MTM zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(76) / MTM zone 13\",GEOGCS[\"NAD27(76)\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); + add_srs_wkt (p, 2, + "ke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-84],PARAMETER[\"scale_factor\",0.9999],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2022\"]]"); + p = add_epsg_def (filter, first, last, 2023, "epsg", 2023, + "NAD27(76) / MTM zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(76) / MTM zone 14\",GEOGCS[\"NAD27(76)\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); + add_srs_wkt (p, 2, + "ke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-87],PARAMETER[\"scale_factor\",0.9999],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2023\"]]"); + p = add_epsg_def (filter, first, last, 2024, "epsg", 2024, + "NAD27(76) / MTM zone 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(76) / MTM zone 15\",GEOGCS[\"NAD27(76)\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); + add_srs_wkt (p, 2, + "ke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-90],PARAMETER[\"scale_factor\",0.9999],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2024\"]]"); + p = add_epsg_def (filter, first, last, 2025, "epsg", 2025, + "NAD27(76) / MTM zone 16"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(76) / MTM zone 16\",GEOGCS[\"NAD27(76)\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); + add_srs_wkt (p, 2, + "ke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-93],PARAMETER[\"scale_factor\",0.9999],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2025\"]]"); + p = add_epsg_def (filter, first, last, 2026, "epsg", 2026, + "NAD27(76) / MTM zone 17"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(76) / MTM zone 17\",GEOGCS[\"NAD27(76)\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Clar"); + add_srs_wkt (p, 2, + "ke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-96],PARAMETER[\"scale_factor\",0.9999],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2026\"]]"); + p = add_epsg_def (filter, first, last, 2027, "epsg", 2027, + "NAD27(76) / UTM zone 15N"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(76) / UTM zone 15N\",GEOGCS[\"NAD27(76)\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-93],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2027\"]]"); + p = add_epsg_def (filter, first, last, 2028, "epsg", 2028, + "NAD27(76) / UTM zone 16N"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(76) / UTM zone 16N\",GEOGCS[\"NAD27(76)\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-87],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2028\"]]"); + p = add_epsg_def (filter, first, last, 2029, "epsg", 2029, + "NAD27(76) / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(76) / UTM zone 17N\",GEOGCS[\"NAD27(76)\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-81],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2029\"]]"); + p = add_epsg_def (filter, first, last, 2030, "epsg", 2030, + "NAD27(76) / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(76) / UTM zone 18N\",GEOGCS[\"NAD27(76)\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1927_1976\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],AUTHORITY[\"EPSG\",\"6608\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4608\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-75],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2030\"]]"); + p = add_epsg_def (filter, first, last, 2031, "epsg", 2031, + "NAD27(CGQ77) / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(CGQ77) / UTM zone 17N\",GEOGCS[\"NAD27(CG"); + add_srs_wkt (p, 1, + "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-81],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"2031\"]]"); + p = add_epsg_def (filter, first, last, 2032, "epsg", 2032, + "NAD27(CGQ77) / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(CGQ77) / UTM zone 18N\",GEOGCS[\"NAD27(CG"); + add_srs_wkt (p, 1, + "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-75],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"2032\"]]"); + p = add_epsg_def (filter, first, last, 2033, "epsg", 2033, + "NAD27(CGQ77) / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(CGQ77) / UTM zone 19N\",GEOGCS[\"NAD27(CG"); + add_srs_wkt (p, 1, + "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-69],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"2033\"]]"); + p = add_epsg_def (filter, first, last, 2034, "epsg", 2034, + "NAD27(CGQ77) / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(CGQ77) / UTM zone 20N\",GEOGCS[\"NAD27(CG"); + add_srs_wkt (p, 1, + "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-63],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"2034\"]]"); + p = add_epsg_def (filter, first, last, 2035, "epsg", 2035, + "NAD27(CGQ77) / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(CGQ77) / UTM zone 21N\",GEOGCS[\"NAD27(CG"); + add_srs_wkt (p, 1, + "Q77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-57],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"2035\"]]"); + p = add_epsg_def (filter, first, last, 2036, "epsg", 2036, + "NAD83(CSRS98) / New Brunswick Stereo (deprecated)"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2"); + add_proj4text (p, 1, + "500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / New Brunswick Stereo (deprecate"); + add_srs_wkt (p, 1, + "d)\",GEOGCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spa"); + add_srs_wkt (p, 2, + "tial_Reference_System\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 3, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4140\"]],PROJECTION[\"Oblique_Stereographic\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_origin\",46.5],PARAMETER[\"centr"); + add_srs_wkt (p, 9, + "al_meridian\",-66.5],PARAMETER[\"scale_factor\",0.999912"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_easting\",2500000],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_northing\",7500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"2036\"]]"); + p = add_epsg_def (filter, first, last, 2037, "epsg", 2037, + "NAD83(CSRS98) / UTM zone 19N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / UTM zone 19N (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "2037\"]]"); + p = add_epsg_def (filter, first, last, 2038, "epsg", 2038, + "NAD83(CSRS98) / UTM zone 20N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / UTM zone 20N (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "2038\"]]"); + p = add_epsg_def (filter, first, last, 2039, "epsg", 2039, + "Israel / Israeli TM Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31.73439361111111 +lon_0=35.204516944"); + add_proj4text (p, 1, + "44445 +k=1.0000067 +x_0=219529.584 +y_0=626907.39 +ellps"); + add_proj4text (p, 2, + "=GRS80 +towgs84=-48,55,52,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Israel / Israeli TM Grid\",GEOGCS[\"Israel\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Israel\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 2, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[-48,55,52,0,0,0"); + add_srs_wkt (p, 3, + ",0],AUTHORITY[\"EPSG\",\"6141\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"4141\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 7, + "TER[\"latitude_of_origin\",31.73439361111111],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",35.20451694444445],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1.0000067],PARAMETER[\"false_easting\",219529"); + add_srs_wkt (p, 10, + ".584],PARAMETER[\"false_northing\",626907.39],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EA"); + add_srs_wkt (p, 12, + "ST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2039\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 2040, "epsg", 2040, + "Locodjo 1965 / UTM zone 30N"); + add_proj4text (p, 0, + "+proj=utm +zone=30 +ellps=clrk80 +towgs84=-125,53,467,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Locodjo 1965 / UTM zone 30N\",GEOGCS[\"Locodjo "); + add_srs_wkt (p, 1, + "1965\",DATUM[\"Locodjo_1965\",SPHEROID[\"Clarke 1880 (RG"); + add_srs_wkt (p, 2, + "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-125,53,467,0,0,0,0],AUTHORITY[\"EPSG\",\"6142\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4142\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-3],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"2040\"]]"); + p = add_epsg_def (filter, first, last, 2041, "epsg", 2041, + "Abidjan 1987 / UTM zone 30N"); + add_proj4text (p, 0, + "+proj=utm +zone=30 +ellps=clrk80 +towgs84=-124.76,53,466"); + add_proj4text (p, 1, + ".79,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Abidjan 1987 / UTM zone 30N\",GEOGCS[\"Abidjan "); + add_srs_wkt (p, 1, + "1987\",DATUM[\"Abidjan_1987\",SPHEROID[\"Clarke 1880 (RG"); + add_srs_wkt (p, 2, + "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-124.76,53,466.79,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "143\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4143\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",-3],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"2041\"]]"); + p = add_epsg_def (filter, first, last, 2042, "epsg", 2042, + "Locodjo 1965 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-125,53,467,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Locodjo 1965 / UTM zone 29N\",GEOGCS[\"Locodjo "); + add_srs_wkt (p, 1, + "1965\",DATUM[\"Locodjo_1965\",SPHEROID[\"Clarke 1880 (RG"); + add_srs_wkt (p, 2, + "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-125,53,467,0,0,0,0],AUTHORITY[\"EPSG\",\"6142\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4142\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-9],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"2042\"]]"); + p = add_epsg_def (filter, first, last, 2043, "epsg", 2043, + "Abidjan 1987 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-124.76,53,466"); + add_proj4text (p, 1, + ".79,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Abidjan 1987 / UTM zone 29N\",GEOGCS[\"Abidjan "); + add_srs_wkt (p, 1, + "1987\",DATUM[\"Abidjan_1987\",SPHEROID[\"Clarke 1880 (RG"); + add_srs_wkt (p, 2, + "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-124.76,53,466.79,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "143\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4143\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",-9],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"2043\"]]"); + p = add_epsg_def (filter, first, last, 2044, "epsg", 2044, + "Hanoi 1972 / Gauss-Kruger zone 18"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Hanoi 1972 / Gauss-Kruger zone 18\",GEOGCS[\"Ha"); + add_srs_wkt (p, 1, + "noi 1972\",DATUM[\"Hanoi_1972\",SPHEROID[\"Krassowsky 19"); + add_srs_wkt (p, 2, + "40\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-17.51,-108.32,-62.39,0,0,0,0],AUTHORITY[\"EPSG\",\"614"); + add_srs_wkt (p, 4, + "7\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4147\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",105],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",1],PARAMETER[\"false_easting\",18500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2044\"]]"); + p = add_epsg_def (filter, first, last, 2045, "epsg", 2045, + "Hanoi 1972 / Gauss-Kruger zone 19"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Hanoi 1972 / Gauss-Kruger zone 19\",GEOGCS[\"Ha"); + add_srs_wkt (p, 1, + "noi 1972\",DATUM[\"Hanoi_1972\",SPHEROID[\"Krassowsky 19"); + add_srs_wkt (p, 2, + "40\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-17.51,-108.32,-62.39,0,0,0,0],AUTHORITY[\"EPSG\",\"614"); + add_srs_wkt (p, 4, + "7\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4147\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",111],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",1],PARAMETER[\"false_easting\",19500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2045\"]]"); + p = add_epsg_def (filter, first, last, 2046, "epsg", 2046, + "Hartebeesthoek94 / Lo15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Hartebeesthoek94 / Lo15\",GEOGCS[\"Hartebeestho"); + add_srs_wkt (p, 1, + "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); + add_srs_wkt (p, 2, + "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"2046\"]]"); + p = add_epsg_def (filter, first, last, 2047, "epsg", 2047, + "Hartebeesthoek94 / Lo17"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=17 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Hartebeesthoek94 / Lo17\",GEOGCS[\"Hartebeestho"); + add_srs_wkt (p, 1, + "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); + add_srs_wkt (p, 2, + "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",17],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"2047\"]]"); + p = add_epsg_def (filter, first, last, 2048, "epsg", 2048, + "Hartebeesthoek94 / Lo19"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Hartebeesthoek94 / Lo19\",GEOGCS[\"Hartebeestho"); + add_srs_wkt (p, 1, + "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); + add_srs_wkt (p, 2, + "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",19],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"2048\"]]"); + p = add_epsg_def (filter, first, last, 2049, "epsg", 2049, + "Hartebeesthoek94 / Lo21"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Hartebeesthoek94 / Lo21\",GEOGCS[\"Hartebeestho"); + add_srs_wkt (p, 1, + "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); + add_srs_wkt (p, 2, + "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",21],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"2049\"]]"); + p = add_epsg_def (filter, first, last, 2050, "epsg", 2050, + "Hartebeesthoek94 / Lo23"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Hartebeesthoek94 / Lo23\",GEOGCS[\"Hartebeestho"); + add_srs_wkt (p, 1, + "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); + add_srs_wkt (p, 2, + "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",23],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"2050\"]]"); + p = add_epsg_def (filter, first, last, 2051, "epsg", 2051, + "Hartebeesthoek94 / Lo25"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Hartebeesthoek94 / Lo25\",GEOGCS[\"Hartebeestho"); + add_srs_wkt (p, 1, + "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); + add_srs_wkt (p, 2, + "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",25],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"2051\"]]"); + p = add_epsg_def (filter, first, last, 2052, "epsg", 2052, + "Hartebeesthoek94 / Lo27"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Hartebeesthoek94 / Lo27\",GEOGCS[\"Hartebeestho"); + add_srs_wkt (p, 1, + "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); + add_srs_wkt (p, 2, + "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",27],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"2052\"]]"); + p = add_epsg_def (filter, first, last, 2053, "epsg", 2053, + "Hartebeesthoek94 / Lo29"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Hartebeesthoek94 / Lo29\",GEOGCS[\"Hartebeestho"); + add_srs_wkt (p, 1, + "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); + add_srs_wkt (p, 2, + "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",29],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"2053\"]]"); + p = add_epsg_def (filter, first, last, 2054, "epsg", 2054, + "Hartebeesthoek94 / Lo31"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Hartebeesthoek94 / Lo31\",GEOGCS[\"Hartebeestho"); + add_srs_wkt (p, 1, + "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); + add_srs_wkt (p, 2, + "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",31],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"2054\"]]"); + p = add_epsg_def (filter, first, last, 2055, "epsg", 2055, + "Hartebeesthoek94 / Lo33"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Hartebeesthoek94 / Lo33\",GEOGCS[\"Hartebeestho"); + add_srs_wkt (p, 1, + "ek94\",DATUM[\"Hartebeesthoek94\",SPHEROID[\"WGS 84\",63"); + add_srs_wkt (p, 2, + "78137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6148\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4148\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor_South_Orientated\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",33],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"2055\"]]"); + p = add_epsg_def (filter, first, last, 2056, "epsg", 2056, + "CH1903+ / LV95"); + add_proj4text (p, 0, + "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333"); + add_proj4text (p, 1, + "333333 +k_0=1 +x_0=2600000 +y_0=1200000 +ellps=bessel +t"); + add_proj4text (p, 2, + "owgs84=674.374,15.056,405.346,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CH1903+ / LV95\",GEOGCS[\"CH1903+\",DATUM[\"CH1"); + add_srs_wkt (p, 1, + "903+\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[674.374,15.056,405"); + add_srs_wkt (p, 3, + ".346,0,0,0,0],AUTHORITY[\"EPSG\",\"6150\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4150\"]],PROJECTION[\"Hotine_Oblique_Merc"); + add_srs_wkt (p, 7, + "ator_Azimuth_Center\"],PARAMETER[\"latitude_of_center\","); + add_srs_wkt (p, 8, + "46.95240555555556],PARAMETER[\"longitude_of_center\",7.4"); + add_srs_wkt (p, 9, + "39583333333333],PARAMETER[\"azimuth\",90],PARAMETER[\"re"); + add_srs_wkt (p, 10, + "ctified_grid_angle\",90],PARAMETER[\"scale_factor\",1],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",2600000],PARAMETER[\"false_no"); + add_srs_wkt (p, 12, + "rthing\",1200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9001\"]],AXIS[\"Y\",EAST],AXIS[\"X\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"2056\"]]"); + p = add_epsg_def (filter, first, last, 2057, "epsg", 2057, + "Rassadiran / Nakhl e Taqi"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=27.51882880555555 +lonc=52.6035391666"); + add_proj4text (p, 1, + "6667 +alpha=0.5716611944444444 +k=0.999895934 +x_0=65837"); + add_proj4text (p, 2, + "7.437 +y_0=3044969.194 +gamma=0.5716611944444444 +ellps="); + add_proj4text (p, 3, + "intl +towgs84=-133.63,-157.5,-158.62,0,0,0,0 +units=m +n"); + add_proj4text (p, 4, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Rassadiran / Nakhl e Taqi\",GEOGCS[\"Rassadiran"); + add_srs_wkt (p, 1, + "\",DATUM[\"Rassadiran\",SPHEROID[\"International 1924\","); + add_srs_wkt (p, 2, + "6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-133.6"); + add_srs_wkt (p, 3, + "3,-157.5,-158.62,0,0,0,0],AUTHORITY[\"EPSG\",\"6153\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4153\"]],PROJECTION[\"Hotine_"); + add_srs_wkt (p, 7, + "Oblique_Mercator_Azimuth_Center\"],PARAMETER[\"latitude_"); + add_srs_wkt (p, 8, + "of_center\",27.51882880555555],PARAMETER[\"longitude_of_"); + add_srs_wkt (p, 9, + "center\",52.60353916666667],PARAMETER[\"azimuth\",0.5716"); + add_srs_wkt (p, 10, + "611944444444],PARAMETER[\"rectified_grid_angle\",0.57166"); + add_srs_wkt (p, 11, + "11944444444],PARAMETER[\"scale_factor\",0.999895934],PAR"); + add_srs_wkt (p, 12, + "AMETER[\"false_easting\",658377.437],PARAMETER[\"false_n"); + add_srs_wkt (p, 13, + "orthing\",3044969.194],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 14, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 15, + "ORTH],AUTHORITY[\"EPSG\",\"2057\"]]"); + p = add_epsg_def (filter, first, last, 2058, "epsg", 2058, + "ED50(ED77) / UTM zone 38N"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +ellps=intl +towgs84=-117,-132,-164,0"); + add_proj4text (p, 1, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50(ED77) / UTM zone 38N\",GEOGCS[\"ED50(ED77)"); + add_srs_wkt (p, 1, + "\",DATUM[\"European_Datum_1950_1977\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-117,-132,-164,0,0,0,0],AUTHORITY[\"EPSG\",\"615"); + add_srs_wkt (p, 4, + "4\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4154\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",45],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"2058\"]]"); + p = add_epsg_def (filter, first, last, 2059, "epsg", 2059, + "ED50(ED77) / UTM zone 39N"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=intl +towgs84=-117,-132,-164,0"); + add_proj4text (p, 1, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50(ED77) / UTM zone 39N\",GEOGCS[\"ED50(ED77)"); + add_srs_wkt (p, 1, + "\",DATUM[\"European_Datum_1950_1977\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-117,-132,-164,0,0,0,0],AUTHORITY[\"EPSG\",\"615"); + add_srs_wkt (p, 4, + "4\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4154\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",51],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"2059\"]]"); + p = add_epsg_def (filter, first, last, 2060, "epsg", 2060, + "ED50(ED77) / UTM zone 40N"); + add_proj4text (p, 0, + "+proj=utm +zone=40 +ellps=intl +towgs84=-117,-132,-164,0"); + add_proj4text (p, 1, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50(ED77) / UTM zone 40N\",GEOGCS[\"ED50(ED77)"); + add_srs_wkt (p, 1, + "\",DATUM[\"European_Datum_1950_1977\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-117,-132,-164,0,0,0,0],AUTHORITY[\"EPSG\",\"615"); + add_srs_wkt (p, 4, + "4\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4154\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",57],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"2060\"]]"); + p = add_epsg_def (filter, first, last, 2061, "epsg", 2061, + "ED50(ED77) / UTM zone 41N"); + add_proj4text (p, 0, + "+proj=utm +zone=41 +ellps=intl +towgs84=-117,-132,-164,0"); + add_proj4text (p, 1, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50(ED77) / UTM zone 41N\",GEOGCS[\"ED50(ED77)"); + add_srs_wkt (p, 1, + "\",DATUM[\"European_Datum_1950_1977\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-117,-132,-164,0,0,0,0],AUTHORITY[\"EPSG\",\"615"); + add_srs_wkt (p, 4, + "4\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4154\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",63],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"2061\"]]"); + p = add_epsg_def (filter, first, last, 2062, "epsg", 2062, + "Madrid 1870 (Madrid) / Spain"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40 +lat_0=40 +lon_0=0 +k_0=0.9988085293"); + add_proj4text (p, 1, + " +x_0=600000 +y_0=600000 +a=6378298.3 +b=6356657.1426695"); + add_proj4text (p, 2, + "61 +pm=madrid +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Madrid 1870 (Madrid) / Spain\",GEOGCS[\"Madrid "); + add_srs_wkt (p, 1, + "1870 (Madrid)\",DATUM[\"Madrid_1870_Madrid\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Struve 1860\",6378298.3,294.73,AUTHORITY[\"EPSG\",\"7028"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"6903\"]],PRIMEM[\"Madrid\",-3."); + add_srs_wkt (p, 4, + "687938888888889,AUTHORITY[\"EPSG\",\"8905\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4903\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",40],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",0],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9988085293],PARAMETER[\"false_easting\",600000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",600000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"2062\"]]"); + p = add_epsg_def (filter, first, last, 2063, "epsg", 2063, + "Dabola 1981 / UTM zone 28N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,"); + add_proj4text (p, 1, + "259,-9,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Dabola 1981 / UTM zone 28N (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"Conakry 1905\",DATUM[\"Conakry_1905\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1880 (IGN)\",6378249.2,293.4660212936265,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7011\"]],TOWGS84[-23,259,-9,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6315\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4315\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",-15],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",0.9996],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2063\"]]"); + p = add_epsg_def (filter, first, last, 2064, "epsg", 2064, + "Dabola 1981 / UTM zone 29N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,"); + add_proj4text (p, 1, + "259,-9,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Dabola 1981 / UTM zone 29N (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"Conakry 1905\",DATUM[\"Conakry_1905\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1880 (IGN)\",6378249.2,293.4660212936265,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7011\"]],TOWGS84[-23,259,-9,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6315\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4315\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",-9],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); + add_srs_wkt (p, 12, + "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2064\"]]"); + p = add_epsg_def (filter, first, last, 2065, "epsg", 2065, + "S-JTSK (Ferro) / Krovak"); + add_proj4text (p, 0, + "+proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.288139722"); + add_proj4text (p, 1, + "22222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=589"); + add_proj4text (p, 2, + ",76,480,0,0,0,0 +pm=ferro +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"S-JTSK (Ferro) / Krovak\",GEOGCS[\"S-JTSK (Ferr"); + add_srs_wkt (p, 1, + "o)\",DATUM[\"System_Jednotne_Trigonometricke_Site_Katast"); + add_srs_wkt (p, 2, + "ralni_Ferro\",SPHEROID[\"Bessel 1841\",6377397.155,299.1"); + add_srs_wkt (p, 3, + "528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[589,76,480,"); + add_srs_wkt (p, 4, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6818\"]],PRIMEM[\"Ferro\","); + add_srs_wkt (p, 5, + "-17.66666666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\""); + add_srs_wkt (p, 6, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 7, + "],AUTHORITY[\"EPSG\",\"4818\"]],PROJECTION[\"Krovak\"],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"latitude_of_center\",49.5],PARAMETER[\"longit"); + add_srs_wkt (p, 9, + "ude_of_center\",42.5],PARAMETER[\"azimuth\",30.288139722"); + add_srs_wkt (p, 10, + "22222],PARAMETER[\"pseudo_standard_parallel_1\",78.5],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_easti"); + add_srs_wkt (p, 12, + "ng\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",SOUTH],AXIS[\""); + add_srs_wkt (p, 14, + "Y\",WEST],AUTHORITY[\"EPSG\",\"2065\"]]"); + p = add_epsg_def (filter, first, last, 2066, "epsg", 2066, + "Mount Dillon / Tobago Grid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=11.25217861111111 +lon_0=-60.686008888"); + add_proj4text (p, 1, + "88889 +x_0=37718.66159325 +y_0=36209.91512952 +a=6378293"); + add_proj4text (p, 2, + ".645208759 +b=6356617.987679838 +to_meter=0.201166195164"); + add_proj4text (p, 3, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mount Dillon / Tobago Grid\",GEOGCS[\"Mount Dil"); + add_srs_wkt (p, 1, + "lon\",DATUM[\"Mount_Dillon\",SPHEROID[\"Clarke 1858\",63"); + add_srs_wkt (p, 2, + "78293.645208759,294.2606763692569,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "007\"]],AUTHORITY[\"EPSG\",\"6157\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4157\"]],PROJECTION[\"Cassini_Soldner\"],PARAME"); + add_srs_wkt (p, 7, + "TER[\"latitude_of_origin\",11.25217861111111],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-60.68600888888889],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",187500],PARAMETER[\"false_northing\",180000"); + add_srs_wkt (p, 10, + "],UNIT[\"Clarke's link\",0.201166195164,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9039\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"2066\"]]"); + p = add_epsg_def (filter, first, last, 2067, "epsg", 2067, + "Naparima 1955 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=intl +towgs84=-0.465,372.095,1"); + add_proj4text (p, 1, + "71.736,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Naparima 1955 / UTM zone 20N\",GEOGCS[\"Naparim"); + add_srs_wkt (p, 1, + "a 1955\",DATUM[\"Naparima_1955\",SPHEROID[\"Internationa"); + add_srs_wkt (p, 2, + "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[-0.465,372.095,171.736,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6158\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4158\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-63],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 12, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"2067\"]]"); + p = add_epsg_def (filter, first, last, 2068, "epsg", 2068, + "ELD79 / Libya zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9999 +x_0=200000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ELD79 / Libya zone 5\",GEOGCS[\"ELD79\",DATUM[\""); + add_srs_wkt (p, 1, + "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",9],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9999],PARAMETER[\"false_easting\",200000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"2068\"]]"); + p = add_epsg_def (filter, first, last, 2069, "epsg", 2069, + "ELD79 / Libya zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9999 +x_0=200000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ELD79 / Libya zone 6\",GEOGCS[\"ELD79\",DATUM[\""); + add_srs_wkt (p, 1, + "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",11],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",200000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"2069\"]]"); + p = add_epsg_def (filter, first, last, 2070, "epsg", 2070, + "ELD79 / Libya zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9999 +x_0=200000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ELD79 / Libya zone 7\",GEOGCS[\"ELD79\",DATUM[\""); + add_srs_wkt (p, 1, + "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",13],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",200000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"2070\"]]"); + p = add_epsg_def (filter, first, last, 2071, "epsg", 2071, + "ELD79 / Libya zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=200000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ELD79 / Libya zone 8\",GEOGCS[\"ELD79\",DATUM[\""); + add_srs_wkt (p, 1, + "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",200000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"2071\"]]"); + p = add_epsg_def (filter, first, last, 2072, "epsg", 2072, + "ELD79 / Libya zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9999 +x_0=200000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ELD79 / Libya zone 9\",GEOGCS[\"ELD79\",DATUM[\""); + add_srs_wkt (p, 1, + "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",17],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",200000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"2072\"]]"); + p = add_epsg_def (filter, first, last, 2073, "epsg", 2073, + "ELD79 / Libya zone 10"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9999 +x_0=200000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ELD79 / Libya zone 10\",GEOGCS[\"ELD79\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Libyan_Datum_1979\",SPHEROID[\"International "); + add_srs_wkt (p, 2, + "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"central_meridian\",19],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9999],PARAMETER[\"false_easting\",200000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"2073\"]]"); + p = add_epsg_def (filter, first, last, 2074, "epsg", 2074, + "ELD79 / Libya zone 11"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=200000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ELD79 / Libya zone 11\",GEOGCS[\"ELD79\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Libyan_Datum_1979\",SPHEROID[\"International "); + add_srs_wkt (p, 2, + "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"central_meridian\",21],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9999],PARAMETER[\"false_easting\",200000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"2074\"]]"); + p = add_epsg_def (filter, first, last, 2075, "epsg", 2075, + "ELD79 / Libya zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=23 +k=0.9999 +x_0=200000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ELD79 / Libya zone 12\",GEOGCS[\"ELD79\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Libyan_Datum_1979\",SPHEROID[\"International "); + add_srs_wkt (p, 2, + "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"central_meridian\",23],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9999],PARAMETER[\"false_easting\",200000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"2075\"]]"); + p = add_epsg_def (filter, first, last, 2076, "epsg", 2076, + "ELD79 / Libya zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=25 +k=0.9999 +x_0=200000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ELD79 / Libya zone 13\",GEOGCS[\"ELD79\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Libyan_Datum_1979\",SPHEROID[\"International "); + add_srs_wkt (p, 2, + "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"central_meridian\",25],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9999],PARAMETER[\"false_easting\",200000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"2076\"]]"); + p = add_epsg_def (filter, first, last, 2077, "epsg", 2077, + "ELD79 / UTM zone 32N"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +ellps=intl +towgs84=-115.854,-99.058"); + add_proj4text (p, 1, + "3,-152.462,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ELD79 / UTM zone 32N\",GEOGCS[\"ELD79\",DATUM[\""); + add_srs_wkt (p, 1, + "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",9],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"2077\"]]"); + p = add_epsg_def (filter, first, last, 2078, "epsg", 2078, + "ELD79 / UTM zone 33N"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +ellps=intl +towgs84=-115.854,-99.058"); + add_proj4text (p, 1, + "3,-152.462,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ELD79 / UTM zone 33N\",GEOGCS[\"ELD79\",DATUM[\""); + add_srs_wkt (p, 1, + "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"2078\"]]"); + p = add_epsg_def (filter, first, last, 2079, "epsg", 2079, + "ELD79 / UTM zone 34N"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +ellps=intl +towgs84=-115.854,-99.058"); + add_proj4text (p, 1, + "3,-152.462,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ELD79 / UTM zone 34N\",GEOGCS[\"ELD79\",DATUM[\""); + add_srs_wkt (p, 1, + "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",21],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"2079\"]]"); + p = add_epsg_def (filter, first, last, 2080, "epsg", 2080, + "ELD79 / UTM zone 35N"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +ellps=intl +towgs84=-115.854,-99.058"); + add_proj4text (p, 1, + "3,-152.462,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ELD79 / UTM zone 35N\",GEOGCS[\"ELD79\",DATUM[\""); + add_srs_wkt (p, 1, + "European_Libyan_Datum_1979\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "115.854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6159\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",27],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"2080\"]]"); + p = add_epsg_def (filter, first, last, 2081, "epsg", 2081, + "Chos Malal 1914 / Argentina 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=intl +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Chos Malal 1914 / Argentina 2\",GEOGCS[\"Chos M"); + add_srs_wkt (p, 1, + "alal 1914\",DATUM[\"Chos_Malal_1914\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6160\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4160\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",-90],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-69],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); + add_srs_wkt (p, 9, + "sting\",2500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"2081\"]]"); + p = add_epsg_def (filter, first, last, 2082, "epsg", 2082, + "Pampa del Castillo / Argentina 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0 +units=m +"); + add_proj4text (p, 2, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pampa del Castillo / Argentina 2\",GEOGCS[\"Pam"); + add_srs_wkt (p, 1, + "pa del Castillo\",DATUM[\"Pampa_del_Castillo\",SPHEROID["); + add_srs_wkt (p, 2, + "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7022\"]],TOWGS84[27.5,14,186.4,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6161\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4161\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",-90],PARAMETER[\"central_meridian\",-69],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",250000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2082\"]]"); + p = add_epsg_def (filter, first, last, 2083, "epsg", 2083, + "Hito XVIII 1963 / Argentina 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=intl +towgs84=16,196,93,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Hito XVIII 1963 / Argentina 2\",GEOGCS[\"Hito X"); + add_srs_wkt (p, 1, + "VIII 1963\",DATUM[\"Hito_XVIII_1963\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[16,196,93,0,0,0,0],AUTHORITY[\"EPSG\",\"6254\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"4254\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",1],PARAMETER[\"false_easting\",2500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"2083\"]]"); + p = add_epsg_def (filter, first, last, 2084, "epsg", 2084, + "Hito XVIII 1963 / UTM zone 19S"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +south +ellps=intl +towgs84=16,196,93"); + add_proj4text (p, 1, + ",0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Hito XVIII 1963 / UTM zone 19S\",GEOGCS[\"Hito "); + add_srs_wkt (p, 1, + "XVIII 1963\",DATUM[\"Hito_XVIII_1963\",SPHEROID[\"Intern"); + add_srs_wkt (p, 2, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[16,196,93,0,0,0,0],AUTHORITY[\"EPSG\",\"6254\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4254\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-69],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 12, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"2084\"]]"); + p = add_epsg_def (filter, first, last, 2085, "epsg", 2085, + "NAD27 / Cuba Norte (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=22.35 +lat_0=22.35 +lon_0=-81 +k_0=0.99"); + add_proj4text (p, 1, + "993602 +x_0=500000 +y_0=280296.016 +datum=NAD27 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Cuba Norte (deprecated)\",GEOGCS[\"NAD2"); + add_srs_wkt (p, 1, + "7\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clark"); + add_srs_wkt (p, 2, + "e 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Coni"); + add_srs_wkt (p, 7, + "c_1SP\"],PARAMETER[\"latitude_of_origin\",22.35],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-81],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.99993602],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",280296.016],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2085\"]]"); + p = add_epsg_def (filter, first, last, 2086, "epsg", 2086, + "NAD27 / Cuba Sur (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=20.71666666666667 +lat_0=20.71666666666"); + add_proj4text (p, 1, + "667 +lon_0=-76.83333333333333 +k_0=0.99994848 +x_0=50000"); + add_proj4text (p, 2, + "0 +y_0=229126.939 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Cuba Sur (deprecated)\",GEOGCS[\"NAD27\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1"); + add_srs_wkt (p, 2, + "866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_1"); + add_srs_wkt (p, 7, + "SP\"],PARAMETER[\"latitude_of_origin\",20.71666666666667"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-76.83333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.99994848],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",500000],PARAMETER[\"false_northing\",229126.939]"); + add_srs_wkt (p, 11, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2086\"]]"); + p = add_epsg_def (filter, first, last, 2087, "epsg", 2087, + "ELD79 / TM 12 NE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=intl +towgs84=-115.854,-99.0583,-152.462,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ELD79 / TM 12 NE\",GEOGCS[\"ELD79\",DATUM[\"Eur"); + add_srs_wkt (p, 1, + "opean_Libyan_Datum_1979\",SPHEROID[\"International 1924\""); + add_srs_wkt (p, 2, + ",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-115."); + add_srs_wkt (p, 3, + "854,-99.0583,-152.462,0,0,0,0],AUTHORITY[\"EPSG\",\"6159"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4159\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",12],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"2087\"]]"); + p = add_epsg_def (filter, first, last, 2088, "epsg", 2088, + "Carthage / TM 11 NE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +datum=carthage +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Carthage / TM 11 NE\",GEOGCS[\"Carthage\",DATUM"); + add_srs_wkt (p, 1, + "[\"Carthage\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,2"); + add_srs_wkt (p, 2, + "93.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "263,6,431,0,0,0,0],AUTHORITY[\"EPSG\",\"6223\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4223\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",11],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"2088\"]]"); + p = add_epsg_def (filter, first, last, 2089, "epsg", 2089, + "Yemen NGN96 / UTM zone 38N"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Yemen NGN96 / UTM zone 38N\",GEOGCS[\"Yemen NGN"); + add_srs_wkt (p, 1, + "96\",DATUM[\"Yemen_National_Geodetic_Network_1996\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6163\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4163\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",45],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"2089\"]]"); + p = add_epsg_def (filter, first, last, 2090, "epsg", 2090, + "Yemen NGN96 / UTM zone 39N"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Yemen NGN96 / UTM zone 39N\",GEOGCS[\"Yemen NGN"); + add_srs_wkt (p, 1, + "96\",DATUM[\"Yemen_National_Geodetic_Network_1996\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6163\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4163\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",51],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"2090\"]]"); + p = add_epsg_def (filter, first, last, 2091, "epsg", 2091, + "South Yemen / Gauss Kruger zone 8 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"South Yemen / Gauss Kruger zone 8 (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"South Yemen\",DATUM[\"South_Yemen\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[-76,-138,67,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6164\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4164\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",45],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",8500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2091\"]]"); + p = add_epsg_def (filter, first, last, 2092, "epsg", 2092, + "South Yemen / Gauss Kruger zone 9 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"South Yemen / Gauss Kruger zone 9 (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"South Yemen\",DATUM[\"South_Yemen\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[-76,-138,67,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6164\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4164\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",51],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",9500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2092\"]]"); + p = add_epsg_def (filter, first, last, 2093, "epsg", 2093, + "Hanoi 1972 / GK 106 NE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=106 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=-17.51,-108.32,-62.39,0,0,0,0 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Hanoi 1972 / GK 106 NE\",GEOGCS[\"Hanoi 1972\","); + add_srs_wkt (p, 1, + "DATUM[\"Hanoi_1972\",SPHEROID[\"Krassowsky 1940\",637824"); + add_srs_wkt (p, 2, + "5,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[-17.51,-10"); + add_srs_wkt (p, 3, + "8.32,-62.39,0,0,0,0],AUTHORITY[\"EPSG\",\"6147\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4147\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",106],PARAMETER[\"scale_factor\",1]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AUTHORITY[\"EPSG\",\"2093\"]]"); + p = add_epsg_def (filter, first, last, 2094, "epsg", 2094, + "WGS 72BE / TM 106 NE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0.38 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / TM 106 NE\",GEOGCS[\"WGS 72BE\",DATU"); + add_srs_wkt (p, 1, + "M[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",106],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"2094\"]]"); + p = add_epsg_def (filter, first, last, 2095, "epsg", 2095, + "Bissau / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=intl +towgs84=-173,253,27,0,0,"); + add_proj4text (p, 1, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Bissau / UTM zone 28N\",GEOGCS[\"Bissau\",DATUM"); + add_srs_wkt (p, 1, + "[\"Bissau\",SPHEROID[\"International 1924\",6378388,297,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-173,253,27,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6165\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4165\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); + add_srs_wkt (p, 9, + "alse_easting\",500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 11, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2095\"]]"); + p = add_epsg_def (filter, first, last, 2096, "epsg", 2096, + "Korean 1985 / East Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=5"); + add_proj4text (p, 1, + "00000 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korean 1985 / East Belt\",GEOGCS[\"Korean 1985\""); + add_srs_wkt (p, 1, + ",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel 1841\",63"); + add_srs_wkt (p, 2, + "77397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"416"); + add_srs_wkt (p, 6, + "2\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",38],PARAMETER[\"central_meridian\",12"); + add_srs_wkt (p, 8, + "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 9, + "ng\",200000],PARAMETER[\"false_northing\",500000],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"2096\"]]"); + p = add_epsg_def (filter, first, last, 2097, "epsg", 2097, + "Korean 1985 / Central Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=5"); + add_proj4text (p, 1, + "00000 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korean 1985 / Central Belt\",GEOGCS[\"Korean 19"); + add_srs_wkt (p, 1, + "85\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel 1841\""); + add_srs_wkt (p, 2, + ",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4162\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",38],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 8, + "127],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 9, + "ting\",200000],PARAMETER[\"false_northing\",500000],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"2097\"]]"); + p = add_epsg_def (filter, first, last, 2098, "epsg", 2098, + "Korean 1985 / West Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=5"); + add_proj4text (p, 1, + "00000 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korean 1985 / West Belt\",GEOGCS[\"Korean 1985\""); + add_srs_wkt (p, 1, + ",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel 1841\",63"); + add_srs_wkt (p, 2, + "77397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"416"); + add_srs_wkt (p, 6, + "2\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",38],PARAMETER[\"central_meridian\",12"); + add_srs_wkt (p, 8, + "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 9, + "ng\",200000],PARAMETER[\"false_northing\",500000],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"2098\"]]"); + p = add_epsg_def (filter, first, last, 2099, "epsg", 2099, + "Qatar 1948 / Qatar Grid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=25.38236111111111 +lon_0=50.7613888888"); + add_proj4text (p, 1, + "8889 +x_0=100000 +y_0=100000 +ellps=helmert +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Qatar 1948 / Qatar Grid\",GEOGCS[\"Qatar 1948\""); + add_srs_wkt (p, 1, + ",DATUM[\"Qatar_1948\",SPHEROID[\"Helmert 1906\",6378200,"); + add_srs_wkt (p, 2, + "298.3,AUTHORITY[\"EPSG\",\"7020\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "6286\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 4, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4286\"]],PROJECTION["); + add_srs_wkt (p, 6, + "\"Cassini_Soldner\"],PARAMETER[\"latitude_of_origin\",25"); + add_srs_wkt (p, 7, + ".38236111111111],PARAMETER[\"central_meridian\",50.76138"); + add_srs_wkt (p, 8, + "888888889],PARAMETER[\"false_easting\",100000],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_northing\",100000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"2099\"]]"); + p = add_epsg_def (filter, first, last, 2100, "epsg", 2100, + "GGRS87 / Greek Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +datum=GGRS87 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GGRS87 / Greek Grid\",GEOGCS[\"GGRS87\",DATUM[\""); + add_srs_wkt (p, 1, + "Greek_Geodetic_Reference_System_1987\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[-199.87,74.79,246.62,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6121\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4121\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",24],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"2100\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_01.c b/src/spatialite/src/srsinit/epsg_inlined_01.c new file mode 100644 index 0000000..08a3cd2 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_01.c @@ -0,0 +1,3502 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_01 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 2101, "epsg", 2101, + "Lake / Maracaibo Grid M1"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666"); + add_proj4text (p, 1, + "667 +lon_0=-71.60561777777777 +k_0=1 +x_0=0 +y_0=-52684."); + add_proj4text (p, 2, + "972 +ellps=intl +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Lake / Maracaibo Grid M1\",GEOGCS[\"Lake\",DATU"); + add_srs_wkt (p, 1, + "M[\"Lake\",SPHEROID[\"International 1924\",6378388,297,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\",\"6249\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4249\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 6, + "ert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 7, + "n\",10.16666666666667],PARAMETER[\"central_meridian\",-7"); + add_srs_wkt (p, 8, + "1.60561777777777],PARAMETER[\"scale_factor\",1],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"false_easting\",0],PARAMETER[\"false_northing\",-526"); + add_srs_wkt (p, 10, + "84.972],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 12, + "101\"]]"); + p = add_epsg_def (filter, first, last, 2102, "epsg", 2102, + "Lake / Maracaibo Grid"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666"); + add_proj4text (p, 1, + "667 +lon_0=-71.60561777777777 +k_0=1 +x_0=200000 +y_0=14"); + add_proj4text (p, 2, + "7315.028 +ellps=intl +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Lake / Maracaibo Grid\",GEOGCS[\"Lake\",DATUM[\""); + add_srs_wkt (p, 1, + "Lake\",SPHEROID[\"International 1924\",6378388,297,AUTHO"); + add_srs_wkt (p, 2, + "RITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\",\"6249\"]],P"); + add_srs_wkt (p, 3, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 4, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 5, + "\"]],AUTHORITY[\"EPSG\",\"4249\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 6, + "Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "10.16666666666667],PARAMETER[\"central_meridian\",-71.60"); + add_srs_wkt (p, 8, + "561777777777],PARAMETER[\"scale_factor\",1],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",200000],PARAMETER[\"false_northing\",147"); + add_srs_wkt (p, 10, + "315.028],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2102\"]]"); + p = add_epsg_def (filter, first, last, 2103, "epsg", 2103, + "Lake / Maracaibo Grid M3"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666"); + add_proj4text (p, 1, + "667 +lon_0=-71.60561777777777 +k_0=1 +x_0=500000 +y_0=44"); + add_proj4text (p, 2, + "7315.028 +ellps=intl +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Lake / Maracaibo Grid M3\",GEOGCS[\"Lake\",DATU"); + add_srs_wkt (p, 1, + "M[\"Lake\",SPHEROID[\"International 1924\",6378388,297,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\",\"6249\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4249\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 6, + "ert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 7, + "n\",10.16666666666667],PARAMETER[\"central_meridian\",-7"); + add_srs_wkt (p, 8, + "1.60561777777777],PARAMETER[\"scale_factor\",1],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"false_easting\",500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",447315.028],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2103\"]]"); + p = add_epsg_def (filter, first, last, 2104, "epsg", 2104, + "Lake / Maracaibo La Rosa Grid"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=10.16666666666667 +lat_0=10.16666666666"); + add_proj4text (p, 1, + "667 +lon_0=-71.60561777777777 +k_0=1 +x_0=-17044 +y_0=-2"); + add_proj4text (p, 2, + "3139.97 +ellps=intl +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Lake / Maracaibo La Rosa Grid\",GEOGCS[\"Lake\""); + add_srs_wkt (p, 1, + ",DATUM[\"Lake\",SPHEROID[\"International 1924\",6378388,"); + add_srs_wkt (p, 2, + "297,AUTHORITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "249\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4249\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",10.16666666666667],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-71.60561777777777],PARAMETER[\"scale_factor\",1],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_easting\",-17044],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",-23139.97],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"2104\"]]"); + p = add_epsg_def (filter, first, last, 2105, "epsg", 2105, + "NZGD2000 / Mount Eden 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-36.87972222222222 +lon_0=174.7641666"); + add_proj4text (p, 1, + "666667 +k=0.9999 +x_0=400000 +y_0=800000 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Mount Eden 2000\",GEOGCS[\"NZGD2000\""); + add_srs_wkt (p, 1, + ",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",-36.8"); + add_srs_wkt (p, 8, + "7972222222222],PARAMETER[\"central_meridian\",174.764166"); + add_srs_wkt (p, 9, + "6666667],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",400000],PARAMETER[\"false_northing\",800"); + add_srs_wkt (p, 11, + "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"2105\"]]"); + p = add_epsg_def (filter, first, last, 2106, "epsg", 2106, + "NZGD2000 / Bay of Plenty 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-37.76111111111111 +lon_0=176.4661111"); + add_proj4text (p, 1, + "111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Bay of Plenty 2000\",GEOGCS[\"NZGD20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"616"); + add_srs_wkt (p, 4, + "7\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); + add_srs_wkt (p, 8, + "37.76111111111111],PARAMETER[\"central_meridian\",176.46"); + add_srs_wkt (p, 9, + "61111111111],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",400000],PARAMETER[\"false_northing\",8000"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"2106\"]]"); + p = add_epsg_def (filter, first, last, 2107, "epsg", 2107, + "NZGD2000 / Poverty Bay 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-38.62444444444444 +lon_0=177.8855555"); + add_proj4text (p, 1, + "555556 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Poverty Bay 2000\",GEOGCS[\"NZGD2000"); + add_srs_wkt (p, 1, + "\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-38."); + add_srs_wkt (p, 8, + "62444444444444],PARAMETER[\"central_meridian\",177.88555"); + add_srs_wkt (p, 9, + "55555556],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",400000],PARAMETER[\"false_northing\",800000]"); + add_srs_wkt (p, 11, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2107\"]]"); + p = add_epsg_def (filter, first, last, 2108, "epsg", 2108, + "NZGD2000 / Hawkes Bay 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-39.65083333333333 +lon_0=176.6736111"); + add_proj4text (p, 1, + "111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Hawkes Bay 2000\",GEOGCS[\"NZGD2000\""); + add_srs_wkt (p, 1, + ",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",-39.6"); + add_srs_wkt (p, 8, + "5083333333333],PARAMETER[\"central_meridian\",176.673611"); + add_srs_wkt (p, 9, + "1111111],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",400000],PARAMETER[\"false_northing\",800000],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"2108\"]]"); + p = add_epsg_def (filter, first, last, 2109, "epsg", 2109, + "NZGD2000 / Taranaki 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-39.13555555555556 +lon_0=174.2277777"); + add_proj4text (p, 1, + "777778 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Taranaki 2000\",GEOGCS[\"NZGD2000\","); + add_srs_wkt (p, 1, + "DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",-39.135"); + add_srs_wkt (p, 8, + "55555555556],PARAMETER[\"central_meridian\",174.22777777"); + add_srs_wkt (p, 9, + "77778],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",400000],PARAMETER[\"false_northing\",800000],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2109\"]]"); + p = add_epsg_def (filter, first, last, 2110, "epsg", 2110, + "NZGD2000 / Tuhirangi 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-39.51222222222222 +lon_0=175.64 +k=1"); + add_proj4text (p, 1, + " +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Tuhirangi 2000\",GEOGCS[\"NZGD2000\""); + add_srs_wkt (p, 1, + ",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",-39.5"); + add_srs_wkt (p, 8, + "1222222222222],PARAMETER[\"central_meridian\",175.64],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "400000],PARAMETER[\"false_northing\",800000],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2110\"]]"); + p = add_epsg_def (filter, first, last, 2111, "epsg", 2111, + "NZGD2000 / Wanganui 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-40.24194444444444 +lon_0=175.4880555"); + add_proj4text (p, 1, + "555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Wanganui 2000\",GEOGCS[\"NZGD2000\","); + add_srs_wkt (p, 1, + "DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",-40.241"); + add_srs_wkt (p, 8, + "94444444444],PARAMETER[\"central_meridian\",175.48805555"); + add_srs_wkt (p, 9, + "55555],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",400000],PARAMETER[\"false_northing\",800000],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2111\"]]"); + p = add_epsg_def (filter, first, last, 2112, "epsg", 2112, + "NZGD2000 / Wairarapa 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-40.92527777777777 +lon_0=175.6472222"); + add_proj4text (p, 1, + "222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Wairarapa 2000\",GEOGCS[\"NZGD2000\""); + add_srs_wkt (p, 1, + ",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",-40.9"); + add_srs_wkt (p, 8, + "2527777777777],PARAMETER[\"central_meridian\",175.647222"); + add_srs_wkt (p, 9, + "2222222],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",400000],PARAMETER[\"false_northing\",800000],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"2112\"]]"); + p = add_epsg_def (filter, first, last, 2113, "epsg", 2113, + "NZGD2000 / Wellington 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-41.3011111111111 +lon_0=174.77638888"); + add_proj4text (p, 1, + "88889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84"); + add_proj4text (p, 2, + "=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Wellington 2000\",GEOGCS[\"NZGD2000\""); + add_srs_wkt (p, 1, + ",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",-41.3"); + add_srs_wkt (p, 8, + "011111111111],PARAMETER[\"central_meridian\",174.7763888"); + add_srs_wkt (p, 9, + "888889],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",400000],PARAMETER[\"false_northing\",800000],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"2113\"]]"); + p = add_epsg_def (filter, first, last, 2114, "epsg", 2114, + "NZGD2000 / Collingwood 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-40.71472222222223 +lon_0=172.6719444"); + add_proj4text (p, 1, + "444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Collingwood 2000\",GEOGCS[\"NZGD2000"); + add_srs_wkt (p, 1, + "\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-40."); + add_srs_wkt (p, 8, + "71472222222223],PARAMETER[\"central_meridian\",172.67194"); + add_srs_wkt (p, 9, + "44444444],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",400000],PARAMETER[\"false_northing\",800000]"); + add_srs_wkt (p, 11, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2114\"]]"); + p = add_epsg_def (filter, first, last, 2115, "epsg", 2115, + "NZGD2000 / Nelson 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-41.27444444444444 +lon_0=173.2991666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Nelson 2000\",GEOGCS[\"NZGD2000\",DA"); + add_srs_wkt (p, 1, + "TUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",-41.2744"); + add_srs_wkt (p, 8, + "4444444444],PARAMETER[\"central_meridian\",173.299166666"); + add_srs_wkt (p, 9, + "6667],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",400000],PARAMETER[\"false_northing\",800000],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2115\"]]"); + p = add_epsg_def (filter, first, last, 2116, "epsg", 2116, + "NZGD2000 / Karamea 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-41.28972222222222 +lon_0=172.1088888"); + add_proj4text (p, 1, + "888889 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Karamea 2000\",GEOGCS[\"NZGD2000\",D"); + add_srs_wkt (p, 1, + "ATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",-41.289"); + add_srs_wkt (p, 8, + "72222222222],PARAMETER[\"central_meridian\",172.10888888"); + add_srs_wkt (p, 9, + "88889],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",400000],PARAMETER[\"false_northing\",800000],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2116\"]]"); + p = add_epsg_def (filter, first, last, 2117, "epsg", 2117, + "NZGD2000 / Buller 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-41.81055555555555 +lon_0=171.5811111"); + add_proj4text (p, 1, + "111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Buller 2000\",GEOGCS[\"NZGD2000\",DA"); + add_srs_wkt (p, 1, + "TUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",-41.8105"); + add_srs_wkt (p, 8, + "5555555555],PARAMETER[\"central_meridian\",171.581111111"); + add_srs_wkt (p, 9, + "1111],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",400000],PARAMETER[\"false_northing\",800000],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2117\"]]"); + p = add_epsg_def (filter, first, last, 2118, "epsg", 2118, + "NZGD2000 / Grey 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-42.33361111111111 +lon_0=171.5497222"); + add_proj4text (p, 1, + "222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Grey 2000\",GEOGCS[\"NZGD2000\",DATU"); + add_srs_wkt (p, 1, + "M[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 198"); + add_srs_wkt (p, 2, + "0\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",-42.3336111"); + add_srs_wkt (p, 8, + "1111111],PARAMETER[\"central_meridian\",171.549722222222"); + add_srs_wkt (p, 9, + "2],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",400000],PARAMETER[\"false_northing\",800000],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"2118\"]]"); + p = add_epsg_def (filter, first, last, 2119, "epsg", 2119, + "NZGD2000 / Amuri 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-42.68888888888888 +lon_0=173.01 +k=1"); + add_proj4text (p, 1, + " +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Amuri 2000\",GEOGCS[\"NZGD2000\",DAT"); + add_srs_wkt (p, 1, + "UM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",-42.688888"); + add_srs_wkt (p, 8, + "88888888],PARAMETER[\"central_meridian\",173.01],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",40000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",800000],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2119"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 2120, "epsg", 2120, + "NZGD2000 / Marlborough 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-41.54444444444444 +lon_0=173.8019444"); + add_proj4text (p, 1, + "444444 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Marlborough 2000\",GEOGCS[\"NZGD2000"); + add_srs_wkt (p, 1, + "\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-41."); + add_srs_wkt (p, 8, + "54444444444444],PARAMETER[\"central_meridian\",173.80194"); + add_srs_wkt (p, 9, + "44444444],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",400000],PARAMETER[\"false_northing\",800000]"); + add_srs_wkt (p, 11, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2120\"]]"); + p = add_epsg_def (filter, first, last, 2121, "epsg", 2121, + "NZGD2000 / Hokitika 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-42.88611111111111 +lon_0=170.9797222"); + add_proj4text (p, 1, + "222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Hokitika 2000\",GEOGCS[\"NZGD2000\","); + add_srs_wkt (p, 1, + "DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",-42.886"); + add_srs_wkt (p, 8, + "11111111111],PARAMETER[\"central_meridian\",170.97972222"); + add_srs_wkt (p, 9, + "22222],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",400000],PARAMETER[\"false_northing\",800000],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2121\"]]"); + p = add_epsg_def (filter, first, last, 2122, "epsg", 2122, + "NZGD2000 / Okarito 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-43.11 +lon_0=170.2608333333333 +k=1 "); + add_proj4text (p, 1, + "+x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Okarito 2000\",GEOGCS[\"NZGD2000\",D"); + add_srs_wkt (p, 1, + "ATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",-43.11]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",170.2608333333333],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",400"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",800000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21"); + add_srs_wkt (p, 12, + "22\"]]"); + p = add_epsg_def (filter, first, last, 2123, "epsg", 2123, + "NZGD2000 / Jacksons Bay 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-43.97777777777778 +lon_0=168.6061111"); + add_proj4text (p, 1, + "111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Jacksons Bay 2000\",GEOGCS[\"NZGD200"); + add_srs_wkt (p, 1, + "0\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-43."); + add_srs_wkt (p, 8, + "97777777777778],PARAMETER[\"central_meridian\",168.60611"); + add_srs_wkt (p, 9, + "11111111],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",400000],PARAMETER[\"false_northing\",800000]"); + add_srs_wkt (p, 11, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2123\"]]"); + p = add_epsg_def (filter, first, last, 2124, "epsg", 2124, + "NZGD2000 / Mount Pleasant 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-43.59055555555556 +lon_0=172.7269444"); + add_proj4text (p, 1, + "444445 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Mount Pleasant 2000\",GEOGCS[\"NZGD2"); + add_srs_wkt (p, 1, + "000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"616"); + add_srs_wkt (p, 4, + "7\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); + add_srs_wkt (p, 8, + "43.59055555555556],PARAMETER[\"central_meridian\",172.72"); + add_srs_wkt (p, 9, + "69444444445],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",400000],PARAMETER[\"false_northing\",8000"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"2124\"]]"); + p = add_epsg_def (filter, first, last, 2125, "epsg", 2125, + "NZGD2000 / Gawler 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-43.74861111111111 +lon_0=171.3605555"); + add_proj4text (p, 1, + "555555 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Gawler 2000\",GEOGCS[\"NZGD2000\",DA"); + add_srs_wkt (p, 1, + "TUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",-43.7486"); + add_srs_wkt (p, 8, + "1111111111],PARAMETER[\"central_meridian\",171.360555555"); + add_srs_wkt (p, 9, + "5555],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",400000],PARAMETER[\"false_northing\",800000],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2125\"]]"); + p = add_epsg_def (filter, first, last, 2126, "epsg", 2126, + "NZGD2000 / Timaru 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-44.40194444444445 +lon_0=171.0572222"); + add_proj4text (p, 1, + "222222 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Timaru 2000\",GEOGCS[\"NZGD2000\",DA"); + add_srs_wkt (p, 1, + "TUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",-44.4019"); + add_srs_wkt (p, 8, + "4444444445],PARAMETER[\"central_meridian\",171.057222222"); + add_srs_wkt (p, 9, + "2222],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",400000],PARAMETER[\"false_northing\",800000],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2126\"]]"); + p = add_epsg_def (filter, first, last, 2127, "epsg", 2127, + "NZGD2000 / Lindis Peak 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-44.735 +lon_0=169.4675 +k=1 +x_0=400"); + add_proj4text (p, 1, + "000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Lindis Peak 2000\",GEOGCS[\"NZGD2000"); + add_srs_wkt (p, 1, + "\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-44."); + add_srs_wkt (p, 8, + "735],PARAMETER[\"central_meridian\",169.4675],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",400000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",800000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2127\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2128, "epsg", 2128, + "NZGD2000 / Mount Nicholas 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-45.13277777777778 +lon_0=168.3986111"); + add_proj4text (p, 1, + "111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Mount Nicholas 2000\",GEOGCS[\"NZGD2"); + add_srs_wkt (p, 1, + "000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"616"); + add_srs_wkt (p, 4, + "7\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); + add_srs_wkt (p, 8, + "45.13277777777778],PARAMETER[\"central_meridian\",168.39"); + add_srs_wkt (p, 9, + "86111111111],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",400000],PARAMETER[\"false_northing\",8000"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"2128\"]]"); + p = add_epsg_def (filter, first, last, 2129, "epsg", 2129, + "NZGD2000 / Mount York 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-45.56361111111111 +lon_0=167.7386111"); + add_proj4text (p, 1, + "111111 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Mount York 2000\",GEOGCS[\"NZGD2000\""); + add_srs_wkt (p, 1, + ",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",-45.5"); + add_srs_wkt (p, 8, + "6361111111111],PARAMETER[\"central_meridian\",167.738611"); + add_srs_wkt (p, 9, + "1111111],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",400000],PARAMETER[\"false_northing\",800000],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"2129\"]]"); + p = add_epsg_def (filter, first, last, 2130, "epsg", 2130, + "NZGD2000 / Observation Point 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-45.81611111111111 +lon_0=170.6283333"); + add_proj4text (p, 1, + "333333 +k=1 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Observation Point 2000\",GEOGCS[\"NZ"); + add_srs_wkt (p, 1, + "GD2000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",-45.81611111111111],PARAMETER[\"central_meridian\",170."); + add_srs_wkt (p, 9, + "6283333333333],PARAMETER[\"scale_factor\",1],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",400000],PARAMETER[\"false_northing\",800"); + add_srs_wkt (p, 11, + "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"2130\"]]"); + p = add_epsg_def (filter, first, last, 2131, "epsg", 2131, + "NZGD2000 / North Taieri 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-45.86138888888889 +lon_0=170.2825 +k"); + add_proj4text (p, 1, + "=0.99996 +x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0"); + add_proj4text (p, 2, + ",0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / North Taieri 2000\",GEOGCS[\"NZGD200"); + add_srs_wkt (p, 1, + "0\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-45."); + add_srs_wkt (p, 8, + "86138888888889],PARAMETER[\"central_meridian\",170.2825]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.99996],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",400000],PARAMETER[\"false_northing\",800000],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2131\"]]"); + p = add_epsg_def (filter, first, last, 2132, "epsg", 2132, + "NZGD2000 / Bluff 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-46.6 +lon_0=168.3427777777778 +k=1 +"); + add_proj4text (p, 1, + "x_0=400000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Bluff 2000\",GEOGCS[\"NZGD2000\",DAT"); + add_srs_wkt (p, 1, + "UM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",-46.6],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",168.3427777777778],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",1],PARAMETER[\"false_easting\",400000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",800000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2132\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2133, "epsg", 2133, + "NZGD2000 / UTM zone 58S"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / UTM zone 58S\",GEOGCS[\"NZGD2000\",D"); + add_srs_wkt (p, 1, + "ATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",165],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"2133\"]]"); + p = add_epsg_def (filter, first, last, 2134, "epsg", 2134, + "NZGD2000 / UTM zone 59S"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / UTM zone 59S\",GEOGCS[\"NZGD2000\",D"); + add_srs_wkt (p, 1, + "ATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",171],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"2134\"]]"); + p = add_epsg_def (filter, first, last, 2135, "epsg", 2135, + "NZGD2000 / UTM zone 60S"); + add_proj4text (p, 0, + "+proj=utm +zone=60 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / UTM zone 60S\",GEOGCS[\"NZGD2000\",D"); + add_srs_wkt (p, 1, + "ATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",177],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"2135\"]]"); + p = add_epsg_def (filter, first, last, 2136, "epsg", 2136, + "Accra / Ghana National Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.9997"); + add_proj4text (p, 1, + "5 +x_0=274319.7391633579 +y_0=0 +a=6378300 +b=6356751.68"); + add_proj4text (p, 2, + "9189189 +towgs84=-199,32,322,0,0,0,0 +to_meter=0.3047997"); + add_proj4text (p, 3, + "101815088 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Accra / Ghana National Grid\",GEOGCS[\"Accra\","); + add_srs_wkt (p, 1, + "DATUM[\"Accra\",SPHEROID[\"War Office\",6378300,296,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7029\"]],TOWGS84[-199,32,322,0,0,0,0],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6168\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4168\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",4.666666666666667],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-1],PARAMETER[\"scale_factor\",0.99975],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",900000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"Gold Coast foot\",0.3047997101815088,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9094\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2136\"]]"); + p = add_epsg_def (filter, first, last, 2137, "epsg", 2137, + "Accra / TM 1 NW"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-1 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +a=6378300 +b=6356751.689189189 +towgs84=-199,32,322"); + add_proj4text (p, 2, + ",0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Accra / TM 1 NW\",GEOGCS[\"Accra\",DATUM[\"Accr"); + add_srs_wkt (p, 1, + "a\",SPHEROID[\"War Office\",6378300,296,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 2, + "\",\"7029\"]],TOWGS84[-199,32,322,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6168\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4168\"]],PRO"); + add_srs_wkt (p, 6, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 7, + "_origin\",0],PARAMETER[\"central_meridian\",-1],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 9, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 10, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 11, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2137\"]]"); + p = add_epsg_def (filter, first, last, 2138, "epsg", 2138, + "NAD27(CGQ77) / Quebec Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_"); + add_proj4text (p, 1, + "0=0 +y_0=0 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27(CGQ77) / Quebec Lambert\",GEOGCS[\"NAD27("); + add_srs_wkt (p, 1, + "CGQ77)\",DATUM[\"North_American_Datum_1927_CGQ77\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6609\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4609\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",60"); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_2\",46],PARAMETER[\"lati"); + add_srs_wkt (p, 9, + "tude_of_origin\",44],PARAMETER[\"central_meridian\",-68."); + add_srs_wkt (p, 10, + "5],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "2138\"]]"); + p = add_epsg_def (filter, first, last, 2139, "epsg", 2139, + "NAD83(CSRS98) / SCoPQ zone 2 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / SCoPQ zone 2 (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-55.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",304800],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2139\"]]"); + p = add_epsg_def (filter, first, last, 2140, "epsg", 2140, + "NAD83(CSRS98) / MTM zone 3 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / MTM zone 3 (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "58.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2140\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2141, "epsg", 2141, + "NAD83(CSRS98) / MTM zone 4 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / MTM zone 4 (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "61.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2141\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2142, "epsg", 2142, + "NAD83(CSRS98) / MTM zone 5 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / MTM zone 5 (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "64.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2142\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2143, "epsg", 2143, + "NAD83(CSRS98) / MTM zone 6 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / MTM zone 6 (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "67.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2143\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2144, "epsg", 2144, + "NAD83(CSRS98) / MTM zone 7 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / MTM zone 7 (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "70.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2144\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2145, "epsg", 2145, + "NAD83(CSRS98) / MTM zone 8 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / MTM zone 8 (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "73.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2145\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2146, "epsg", 2146, + "NAD83(CSRS98) / MTM zone 9 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / MTM zone 9 (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "76.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2146\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2147, "epsg", 2147, + "NAD83(CSRS98) / MTM zone 10 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / MTM zone 10 (deprecated)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "79.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2147\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2148, "epsg", 2148, + "NAD83(CSRS98) / UTM zone 21N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / UTM zone 21N (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "2148\"]]"); + p = add_epsg_def (filter, first, last, 2149, "epsg", 2149, + "NAD83(CSRS98) / UTM zone 18N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / UTM zone 18N (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "2149\"]]"); + p = add_epsg_def (filter, first, last, 2150, "epsg", 2150, + "NAD83(CSRS98) / UTM zone 17N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / UTM zone 17N (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "2150\"]]"); + p = add_epsg_def (filter, first, last, 2151, "epsg", 2151, + "NAD83(CSRS98) / UTM zone 13N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / UTM zone 13N (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 12, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"2151\"]]"); + p = add_epsg_def (filter, first, last, 2152, "epsg", 2152, + "NAD83(CSRS98) / UTM zone 12N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / UTM zone 12N (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 12, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"2152\"]]"); + p = add_epsg_def (filter, first, last, 2153, "epsg", 2153, + "NAD83(CSRS98) / UTM zone 11N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / UTM zone 11N (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4140\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 12, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"2153\"]]"); + p = add_epsg_def (filter, first, last, 2154, "epsg", 2154, + "RGF93 / Lambert-93"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0="); + add_proj4text (p, 1, + "700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGF93 / Lambert-93\",GEOGCS[\"RGF93\",DATUM[\"R"); + add_srs_wkt (p, 1, + "eseau_Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",49],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",44],PARAMETER[\"latitude_"); + add_srs_wkt (p, 9, + "of_origin\",46.5],PARAMETER[\"central_meridian\",3],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",700000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",6600000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"2154\"]]"); + p = add_epsg_def (filter, first, last, 2155, "epsg", 2155, + "American Samoa 1962 / American Samoa Lambert (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.266666666"); + add_proj4text (p, 1, + "66667 +lon_0=170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +e"); + add_proj4text (p, 2, + "llps=clrk66 +towgs84=-115,118,426,0,0,0,0 +units=us-ft +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"American Samoa 1962 / American Samoa Lambert (d"); + add_srs_wkt (p, 1, + "eprecated)\",GEOGCS[\"American Samoa 1962\",DATUM[\"Amer"); + add_srs_wkt (p, 2, + "ican_Samoa_1962\",SPHEROID[\"Clarke 1866\",6378206.4,294"); + add_srs_wkt (p, 3, + ".9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[-11"); + add_srs_wkt (p, 4, + "5,118,426,0,0,0,0],AUTHORITY[\"EPSG\",\"6169\"]],PRIMEM["); + add_srs_wkt (p, 5, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 6, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 7, + "UTHORITY[\"EPSG\",\"4169\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 8, + "mal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",-14.26"); + add_srs_wkt (p, 9, + "666666666667],PARAMETER[\"central_meridian\",170],PARAME"); + add_srs_wkt (p, 10, + "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",5000"); + add_srs_wkt (p, 11, + "00],PARAMETER[\"false_northing\",0],UNIT[\"US survey foo"); + add_srs_wkt (p, 12, + "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); + add_srs_wkt (p, 13, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"215"); + add_srs_wkt (p, 14, + "5\"]]"); + p = add_epsg_def (filter, first, last, 2156, "epsg", 2156, + "NAD83(HARN) / UTM zone 59S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / UTM zone 59S (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_"); + add_srs_wkt (p, 2, + "Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",171]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 12, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"2156\"]]"); + p = add_epsg_def (filter, first, last, 2157, "epsg", 2157, + "IRENET95 / Irish Transverse Mercator"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=0.99982 +x_0=600000"); + add_proj4text (p, 1, + " +y_0=750000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IRENET95 / Irish Transverse Mercator\",GEOGCS[\""); + add_srs_wkt (p, 1, + "IRENET95\",DATUM[\"IRENET95\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6173\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4173\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",53.5],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-8],PARAMETER[\"scale_factor\",0.99982"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",600000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",750000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"2157\"]]"); + p = add_epsg_def (filter, first, last, 2158, "epsg", 2158, + "IRENET95 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IRENET95 / UTM zone 29N\",GEOGCS[\"IRENET95\",D"); + add_srs_wkt (p, 1, + "ATUM[\"IRENET95\",SPHEROID[\"GRS 1980\",6378137,298.2572"); + add_srs_wkt (p, 2, + "22101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6173\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4173\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 11, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2158\"]]"); + p = add_epsg_def (filter, first, last, 2159, "epsg", 2159, + "Sierra Leone 1924 / New Colony Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_"); + add_proj4text (p, 1, + "0=152399.8550907544 +y_0=0 +a=6378300 +b=6356751.6891891"); + add_proj4text (p, 2, + "89 +to_meter=0.3047997101815088 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Sierra Leone 1924 / New Colony Grid\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Sierra Leone 1924\",DATUM[\"Sierra_Leone_Colony_1924\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"War Office\",6378300,296,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7029\"]],AUTHORITY[\"EPSG\",\"6174\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4174\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",6.666666666666667],PARAME"); + add_srs_wkt (p, 8, + "TER[\"central_meridian\",-12],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"Gold Coast foot\",0.3047997101815"); + add_srs_wkt (p, 11, + "088,AUTHORITY[\"EPSG\",\"9094\"]],AXIS[\"Easting\",EAST]"); + add_srs_wkt (p, 12, + ",AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2159\"]]"); + p = add_epsg_def (filter, first, last, 2160, "epsg", 2160, + "Sierra Leone 1924 / New War Office Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=6.666666666666667 +lon_0=-12 +k=1 +x_"); + add_proj4text (p, 1, + "0=243839.7681452071 +y_0=182879.8261089053 +a=6378300 +b"); + add_proj4text (p, 2, + "=6356751.689189189 +to_meter=0.3047997101815088 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Sierra Leone 1924 / New War Office Grid\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"Sierra Leone 1924\",DATUM[\"Sierra_Leone_Colony_1924"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"War Office\",6378300,296,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7029\"]],AUTHORITY[\"EPSG\",\"6174\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4174\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",6.666666666666667],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-12],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",800000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",600000],UNIT[\"Gold Coast foot\",0.3047"); + add_srs_wkt (p, 11, + "997101815088,AUTHORITY[\"EPSG\",\"9094\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 12, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "2160\"]]"); + p = add_epsg_def (filter, first, last, 2161, "epsg", 2161, + "Sierra Leone 1968 / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=clrk80 +towgs84=-88,4,101,0,0,"); + add_proj4text (p, 1, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Sierra Leone 1968 / UTM zone 28N\",GEOGCS[\"Sie"); + add_srs_wkt (p, 1, + "rra Leone 1968\",DATUM[\"Sierra_Leone_1968\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7012\"]],TOWGS84[-88,4,101,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6175\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4175\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",-15],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2161\"]]"); + p = add_epsg_def (filter, first, last, 2162, "epsg", 2162, + "Sierra Leone 1968 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-88,4,101,0,0,"); + add_proj4text (p, 1, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Sierra Leone 1968 / UTM zone 29N\",GEOGCS[\"Sie"); + add_srs_wkt (p, 1, + "rra Leone 1968\",DATUM[\"Sierra_Leone_1968\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7012\"]],TOWGS84[-88,4,101,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6175\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4175\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",-9],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2162\"]]"); + p = add_epsg_def (filter, first, last, 2163, "epsg", 2163, + "US National Atlas Equal Area"); + add_proj4text (p, 0, + "+proj=laea +lat_0=45 +lon_0=-100 +x_0=0 +y_0=0 +a=637099"); + add_proj4text (p, 1, + "7 +b=6370997 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"US National Atlas Equal Area\",GEOGCS[\"Unspeci"); + add_srs_wkt (p, 1, + "fied datum based upon the Clarke 1866 Authalic Sphere\","); + add_srs_wkt (p, 2, + "DATUM[\"Not_specified_based_on_Clarke_1866_Authalic_Sphe"); + add_srs_wkt (p, 3, + "re\",SPHEROID[\"Clarke 1866 Authalic Sphere\",6370997,0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"7052\"]],AUTHORITY[\"EPSG\",\"6052\""); + add_srs_wkt (p, 5, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 6, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "9122\"]],AUTHORITY[\"EPSG\",\"4052\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 8, + "ert_Azimuthal_Equal_Area\"],PARAMETER[\"latitude_of_cent"); + add_srs_wkt (p, 9, + "er\",45],PARAMETER[\"longitude_of_center\",-100],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2163\"]]"); + p = add_epsg_def (filter, first, last, 2164, "epsg", 2164, + "Locodjo 1965 / TM 5 NW"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Locodjo 1965 / TM 5 NW\",GEOGCS[\"Locodjo 1965\""); + add_srs_wkt (p, 1, + ",DATUM[\"Locodjo_1965\",SPHEROID[\"Clarke 1880 (RGS)\",6"); + add_srs_wkt (p, 2, + "378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-125,53,467,0,0,0,0],AUTHORITY[\"EPSG\",\"6142\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4142\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-5],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"2164\"]]"); + p = add_epsg_def (filter, first, last, 2165, "epsg", 2165, + "Abidjan 1987 / TM 5 NW"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-5 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=clrk80 +towgs84=-124.76,53,466.79,0,0,0,0 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Abidjan 1987 / TM 5 NW\",GEOGCS[\"Abidjan 1987\""); + add_srs_wkt (p, 1, + ",DATUM[\"Abidjan_1987\",SPHEROID[\"Clarke 1880 (RGS)\",6"); + add_srs_wkt (p, 2, + "378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-124.76,53,466.79,0,0,0,0],AUTHORITY[\"EPSG\",\"6143\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4143\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-5],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"2165\"]]"); + p = add_epsg_def (filter, first, last, 2166, "epsg", 2166, + "Pulkovo 1942(83) / Gauss Kruger zone 3 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / Gauss Kruger zone 3 (depreca"); + add_srs_wkt (p, 1, + "ted)\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_"); + add_srs_wkt (p, 2, + "83\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",9],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",3500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21"); + add_srs_wkt (p, 12, + "66\"]]"); + p = add_epsg_def (filter, first, last, 2167, "epsg", 2167, + "Pulkovo 1942(83) / Gauss Kruger zone 4 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / Gauss Kruger zone 4 (depreca"); + add_srs_wkt (p, 1, + "ted)\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_"); + add_srs_wkt (p, 2, + "83\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",12],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",4500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21"); + add_srs_wkt (p, 12, + "67\"]]"); + p = add_epsg_def (filter, first, last, 2168, "epsg", 2168, + "Pulkovo 1942(83) / Gauss Kruger zone 5 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / Gauss Kruger zone 5 (depreca"); + add_srs_wkt (p, 1, + "ted)\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_"); + add_srs_wkt (p, 2, + "83\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",15],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",5500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21"); + add_srs_wkt (p, 12, + "68\"]]"); + p = add_epsg_def (filter, first, last, 2169, "epsg", 2169, + "Luxembourg 1930 / Gauss"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=49.83333333333334 +lon_0=6.1666666666"); + add_proj4text (p, 1, + "66667 +k=1 +x_0=80000 +y_0=100000 +ellps=intl +towgs84=-"); + add_proj4text (p, 2, + "189.681,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0.459"); + add_proj4text (p, 3, + "8 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Luxembourg 1930 / Gauss\",GEOGCS[\"Luxembourg 1"); + add_srs_wkt (p, 1, + "930\",DATUM[\"Luxembourg_1930\",SPHEROID[\"International"); + add_srs_wkt (p, 2, + " 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[-189.681,18.3463,-42.7695,-0.33746,-3.09264,2.53861,0."); + add_srs_wkt (p, 4, + "4598],AUTHORITY[\"EPSG\",\"6181\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4181\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"latitude_of_origin\",49.83333333333334],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"central_meridian\",6.166666666666667],PARAMETER[\"sc"); + add_srs_wkt (p, 10, + "ale_factor\",1],PARAMETER[\"false_easting\",80000],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_northing\",100000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2169\"]]"); + p = add_epsg_def (filter, first, last, 2170, "epsg", 2170, + "MGI / Slovenia Grid (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Slovenia Grid (deprecated)\",GEOGCS[\"MGI"); + add_srs_wkt (p, 1, + "\",DATUM[\"Militar_Geographische_Institute\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137,1.474,5"); + add_srs_wkt (p, 4, + ".297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 5, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 6, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 7, + "TY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",15],PARAMETER[\"scale_factor\",0.9999],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"2170\"]]"); + p = add_epsg_def (filter, first, last, 2171, "epsg", 2171, + "Pulkovo 1942(58) / Poland zone I (deprecated)"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0"); + add_proj4text (p, 1, + ".9998 +x_0=4637000 +y_0=5647000 +ellps=krass +towgs84=33"); + add_proj4text (p, 2, + ".4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / Poland zone I (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,"); + add_srs_wkt (p, 4, + "0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 5, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 6, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 7, + "TY[\"EPSG\",\"4179\"]],PROJECTION[\"Oblique_Stereographi"); + add_srs_wkt (p, 8, + "c\"],PARAMETER[\"latitude_of_origin\",50.625],PARAMETER["); + add_srs_wkt (p, 9, + "\"central_meridian\",21.08333333333333],PARAMETER[\"scal"); + add_srs_wkt (p, 10, + "e_factor\",0.9998],PARAMETER[\"false_easting\",4637000],"); + add_srs_wkt (p, 11, + "PARAMETER[\"false_northing\",5647000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2171\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 2172, "epsg", 2172, + "Pulkovo 1942(58) / Poland zone II"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=53.00194444444445 +lon_0=21.50277777"); + add_proj4text (p, 1, + "777778 +k=0.9998 +x_0=4603000 +y_0=5806000 +ellps=krass "); + add_proj4text (p, 2, + "+towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +un"); + add_proj4text (p, 3, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / Poland zone II\",GEOGCS[\"Pu"); + add_srs_wkt (p, 1, + "lkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID[\"Kr"); + add_srs_wkt (p, 2, + "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); + add_srs_wkt (p, 3, + "]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4179\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",53.00194444444445],PARAMETER[\"c"); + add_srs_wkt (p, 9, + "entral_meridian\",21.50277777777778],PARAMETER[\"scale_f"); + add_srs_wkt (p, 10, + "actor\",0.9998],PARAMETER[\"false_easting\",4603000],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",5806000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2172\"]]"); + p = add_epsg_def (filter, first, last, 2173, "epsg", 2173, + "Pulkovo 1942(58) / Poland zone III"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=53.58333333333334 +lon_0=17.00833333"); + add_proj4text (p, 1, + "333333 +k=0.9998 +x_0=3501000 +y_0=5999000 +ellps=krass "); + add_proj4text (p, 2, + "+towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +un"); + add_proj4text (p, 3, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / Poland zone III\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4179\"]],PROJECTION[\"Oblique_Stereographic\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",53.58333333333334],PARAMETER["); + add_srs_wkt (p, 9, + "\"central_meridian\",17.00833333333333],PARAMETER[\"scal"); + add_srs_wkt (p, 10, + "e_factor\",0.9998],PARAMETER[\"false_easting\",3501000],"); + add_srs_wkt (p, 11, + "PARAMETER[\"false_northing\",5999000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2173\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 2174, "epsg", 2174, + "Pulkovo 1942(58) / Poland zone IV"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=51.67083333333333 +lon_0=16.67222222"); + add_proj4text (p, 1, + "222222 +k=0.9998 +x_0=3703000 +y_0=5627000 +ellps=krass "); + add_proj4text (p, 2, + "+towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +un"); + add_proj4text (p, 3, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / Poland zone IV\",GEOGCS[\"Pu"); + add_srs_wkt (p, 1, + "lkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID[\"Kr"); + add_srs_wkt (p, 2, + "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); + add_srs_wkt (p, 3, + "]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4179\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",51.67083333333333],PARAMETER[\"c"); + add_srs_wkt (p, 9, + "entral_meridian\",16.67222222222222],PARAMETER[\"scale_f"); + add_srs_wkt (p, 10, + "actor\",0.9998],PARAMETER[\"false_easting\",3703000],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",5627000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2174\"]]"); + p = add_epsg_def (filter, first, last, 2175, "epsg", 2175, + "Pulkovo 1942(58) / Poland zone V"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18.95833333333333 +k=0.99998"); + add_proj4text (p, 1, + "3 +x_0=237000 +y_0=-4700000 +ellps=krass +towgs84=33.4,-"); + add_proj4text (p, 2, + "146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / Poland zone V\",GEOGCS[\"Pul"); + add_srs_wkt (p, 1, + "kovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID[\"Kra"); + add_srs_wkt (p, 2, + "ssowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); + add_srs_wkt (p, 3, + "]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4179\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "8.95833333333333],PARAMETER[\"scale_factor\",0.999983],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_easting\",237000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",-4700000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9001\"]],AUTHORITY[\"EPSG\",\"2175\"]]"); + p = add_epsg_def (filter, first, last, 2176, "epsg", 2176, + "ETRS89 / Poland CS2000 zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.999923 +x_0=5500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Poland CS2000 zone 5\",GEOGCS[\"ETRS89"); + add_srs_wkt (p, 1, + "\",DATUM[\"European_Terrestrial_Reference_System_1989\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",15],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.999923],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2176"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 2177, "epsg", 2177, + "ETRS89 / Poland CS2000 zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.999923 +x_0=6500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Poland CS2000 zone 6\",GEOGCS[\"ETRS89"); + add_srs_wkt (p, 1, + "\",DATUM[\"European_Terrestrial_Reference_System_1989\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",18],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.999923],PARAMETER[\"false_easting\",6"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2177"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 2178, "epsg", 2178, + "ETRS89 / Poland CS2000 zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.999923 +x_0=7500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Poland CS2000 zone 7\",GEOGCS[\"ETRS89"); + add_srs_wkt (p, 1, + "\",DATUM[\"European_Terrestrial_Reference_System_1989\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",21],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.999923],PARAMETER[\"false_easting\",7"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2178"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 2179, "epsg", 2179, + "ETRS89 / Poland CS2000 zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.999923 +x_0=8500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Poland CS2000 zone 8\",GEOGCS[\"ETRS89"); + add_srs_wkt (p, 1, + "\",DATUM[\"European_Terrestrial_Reference_System_1989\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",24],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.999923],PARAMETER[\"false_easting\",8"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2179"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 2180, "epsg", 2180, + "ETRS89 / Poland CS92"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.9993 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=-5300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Poland CS92\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",19],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9993],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",-5300000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2180\"]]"); + p = add_epsg_def (filter, first, last, 2188, "epsg", 2188, + "Azores Occidental 1939 / UTM zone 25N"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +ellps=intl +towgs84=-425,-169,81,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Azores Occidental 1939 / UTM zone 25N\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Azores Occidental 1939\",DATUM[\"Azores_Occidental_Isl"); + add_srs_wkt (p, 2, + "ands_1939\",SPHEROID[\"International 1924\",6378388,297,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-425,-169,81,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6182\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4182\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 12, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"2188\"]]"); + p = add_epsg_def (filter, first, last, 2189, "epsg", 2189, + "Azores Central 1948 / UTM zone 26N"); + add_proj4text (p, 0, + "+proj=utm +zone=26 +ellps=intl +towgs84=-104,167,-38,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Azores Central 1948 / UTM zone 26N\",GEOGCS[\"A"); + add_srs_wkt (p, 1, + "zores Central 1948\",DATUM[\"Azores_Central_Islands_1948"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7022\"]],TOWGS84[-104,167,-38,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6183\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4183"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",-27]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\","); + add_srs_wkt (p, 12, + "EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2189"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 2190, "epsg", 2190, + "Azores Oriental 1940 / UTM zone 26N"); + add_proj4text (p, 0, + "+proj=utm +zone=26 +ellps=intl +towgs84=-203,141,53,0,0,"); + add_proj4text (p, 1, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Azores Oriental 1940 / UTM zone 26N\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Azores Oriental 1940\",DATUM[\"Azores_Oriental_Islands_1"); + add_srs_wkt (p, 2, + "940\",SPHEROID[\"International 1924\",6378388,297,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7022\"]],TOWGS84[-203,141,53,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6184\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 7, + "84\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-2"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"219"); + add_srs_wkt (p, 13, + "0\"]]"); + p = add_epsg_def (filter, first, last, 2191, "epsg", 2191, + "Madeira 1936 / UTM zone 28N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=intl +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Madeira 1936 / UTM zone 28N (deprecated)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Madeira 1936\",DATUM[\"Madeira_1936\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"6185\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4185\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",-15],PARAMETER[\"scale_factor\",0.9996],PARAMETER["); + add_srs_wkt (p, 9, + "\"false_easting\",500000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"2191\"]]"); + p = add_epsg_def (filter, first, last, 2192, "epsg", 2192, + "ED50 / France EuroLambert (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=2.3372291666666"); + add_proj4text (p, 1, + "67 +k_0=0.99987742 +x_0=600000 +y_0=2200000 +ellps=intl "); + add_proj4text (p, 2, + "+towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / France EuroLambert (deprecated)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\"Inter"); + add_srs_wkt (p, 2, + "national 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"623"); + add_srs_wkt (p, 4, + "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"L"); + add_srs_wkt (p, 7, + "ambert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",46.8],PARAMETER[\"central_meridian\",2.3372291666"); + add_srs_wkt (p, 9, + "66667],PARAMETER[\"scale_factor\",0.99987742],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",600000],PARAMETER[\"false_northing\",2"); + add_srs_wkt (p, 11, + "200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 12, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 13, + "192\"]]"); + p = add_epsg_def (filter, first, last, 2193, "epsg", 2193, + "NZGD2000 / New Zealand Transverse Mercator 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=173 +k=0.9996 +x_0=1600000 +"); + add_proj4text (p, 1, + "y_0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / New Zealand Transverse Mercator 2000"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"NZGD2000\",DATUM[\"New_Zealand_Geodetic_Datu"); + add_srs_wkt (p, 2, + "m_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",173],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",1600000],PARAMETER[\"false_northing\",10000000],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2193\"]]"); + p = add_epsg_def (filter, first, last, 2194, "epsg", 2194, + "American Samoa 1962 / American Samoa Lambert (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.266666666"); + add_proj4text (p, 1, + "66667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=0 +"); + add_proj4text (p, 2, + "ellps=clrk66 +towgs84=-115,118,426,0,0,0,0 +units=us-ft "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"American Samoa 1962 / American Samoa Lambert (d"); + add_srs_wkt (p, 1, + "eprecated)\",GEOGCS[\"American Samoa 1962\",DATUM[\"Amer"); + add_srs_wkt (p, 2, + "ican_Samoa_1962\",SPHEROID[\"Clarke 1866\",6378206.4,294"); + add_srs_wkt (p, 3, + ".9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[-11"); + add_srs_wkt (p, 4, + "5,118,426,0,0,0,0],AUTHORITY[\"EPSG\",\"6169\"]],PRIMEM["); + add_srs_wkt (p, 5, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 6, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 7, + "UTHORITY[\"EPSG\",\"4169\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 8, + "mal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",-14.26"); + add_srs_wkt (p, 9, + "666666666667],PARAMETER[\"central_meridian\",-170],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 11, + "000],PARAMETER[\"false_northing\",0],UNIT[\"US survey fo"); + add_srs_wkt (p, 12, + "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); + add_srs_wkt (p, 13, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"21"); + add_srs_wkt (p, 14, + "94\"]]"); + p = add_epsg_def (filter, first, last, 2195, "epsg", 2195, + "NAD83(HARN) / UTM zone 2S"); + add_proj4text (p, 0, + "+proj=utm +zone=2 +south +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / UTM zone 2S\",GEOGCS[\"NAD83(HARN"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"central_meridian\",-171],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2195\"]]"); + p = add_epsg_def (filter, first, last, 2196, "epsg", 2196, + "ETRS89 / Kp2000 Jutland"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9.5 +k=0.99995 +x_0=200000 +"); + add_proj4text (p, 1, + "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Kp2000 Jutland\",GEOGCS[\"ETRS89\",DAT"); + add_srs_wkt (p, 1, + "UM[\"European_Terrestrial_Reference_System_1989\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",9.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.99995],PARAMETER[\"false_easting\",200000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 12, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"2196\"]]"); + p = add_epsg_def (filter, first, last, 2197, "epsg", 2197, + "ETRS89 / Kp2000 Zealand"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.99995 +x_0=500000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Kp2000 Zealand\",GEOGCS[\"ETRS89\",DAT"); + add_srs_wkt (p, 1, + "UM[\"European_Terrestrial_Reference_System_1989\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",12],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.99995],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 12, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"2197\"]]"); + p = add_epsg_def (filter, first, last, 2198, "epsg", 2198, + "ETRS89 / Kp2000 Bornholm"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=900000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Kp2000 Bornholm\",GEOGCS[\"ETRS89\",DA"); + add_srs_wkt (p, 1, + "TUM[\"European_Terrestrial_Reference_System_1989\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",900000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"2198\"]]"); + p = add_epsg_def (filter, first, last, 2199, "epsg", 2199, + "Albanian 1987 / Gauss Kruger zone 4 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Albanian 1987 / Gauss Kruger zone 4 (deprecated"); + add_srs_wkt (p, 1, + ")\",GEOGCS[\"Albanian 1987\",DATUM[\"Albanian_1987\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7024\"]],AUTHORITY[\"EPSG\",\"6191\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4191\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",21],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_easting\",4500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 10, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"2199\"]]"); + p = add_epsg_def (filter, first, last, 2200, "epsg", 2200, + "ATS77 / New Brunswick Stereographic (ATS77)"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=3"); + add_proj4text (p, 1, + "00000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ATS77 / New Brunswick Stereographic (ATS77)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"ATS77\",DATUM[\"Average_Terrestrial_System_1977\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Average Terrestrial System 1977\",6378135,29"); + add_srs_wkt (p, 3, + "8.257,AUTHORITY[\"EPSG\",\"7041\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6122\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4122\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Oblique_Stereographic\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",46.5],PARAMETER[\"central_meridian\",-66.5],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",0.999912],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",300000],PARAMETER[\"false_northing\",800000],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2200\"]]"); + p = add_epsg_def (filter, first, last, 2201, "epsg", 2201, + "REGVEN / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"REGVEN / UTM zone 18N\",GEOGCS[\"REGVEN\",DATUM"); + add_srs_wkt (p, 1, + "[\"Red_Geodesica_Venezolana\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6189\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4189\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-75],PARAMETER[\"scale_factor\",0.9996],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"2201\"]]"); + p = add_epsg_def (filter, first, last, 2202, "epsg", 2202, + "REGVEN / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"REGVEN / UTM zone 19N\",GEOGCS[\"REGVEN\",DATUM"); + add_srs_wkt (p, 1, + "[\"Red_Geodesica_Venezolana\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6189\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4189\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-69],PARAMETER[\"scale_factor\",0.9996],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"2202\"]]"); + p = add_epsg_def (filter, first, last, 2203, "epsg", 2203, + "REGVEN / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"REGVEN / UTM zone 20N\",GEOGCS[\"REGVEN\",DATUM"); + add_srs_wkt (p, 1, + "[\"Red_Geodesica_Venezolana\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6189\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4189\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-63],PARAMETER[\"scale_factor\",0.9996],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"2203\"]]"); + p = add_epsg_def (filter, first, last, 2204, "epsg", 2204, + "NAD27 / Tennessee"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=3"); + add_proj4text (p, 1, + "4.66666666666666 +lon_0=-86 +x_0=609601.2192024384 +y_0="); + add_proj4text (p, 2, + "30480.06096012192 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Tennessee\",GEOGCS[\"NAD27\",DATUM[\"No"); + add_srs_wkt (p, 1, + "rth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",63782"); + add_srs_wkt (p, 2, + "06.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 6, + "67\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"standard_parallel_1\",35.25],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_2\",36.41666666666666],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 9, + "_origin\",34.66666666666666],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 10, + "n\",-86],PARAMETER[\"false_easting\",2000000],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_northing\",100000],UNIT[\"US survey foot\",0.304"); + add_srs_wkt (p, 12, + "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 13, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2204\"]]"); + p = add_epsg_def (filter, first, last, 2205, "epsg", 2205, + "NAD83 / Kentucky North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); + add_proj4text (p, 1, + "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +datum="); + add_proj4text (p, 2, + "NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Kentucky North\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37.96666"); + add_srs_wkt (p, 8, + "666666667],PARAMETER[\"standard_parallel_2\",38.96666666"); + add_srs_wkt (p, 9, + "666667],PARAMETER[\"latitude_of_origin\",37.5],PARAMETER"); + add_srs_wkt (p, 10, + "[\"central_meridian\",-84.25],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 12, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"2205\"]]"); + p = add_epsg_def (filter, first, last, 2206, "epsg", 2206, + "ED50 / 3-degree Gauss-Kruger zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / 3-degree Gauss-Kruger zone 9\",GEOGCS[\""); + add_srs_wkt (p, 1, + "ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",27],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",9500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"2206\"]]"); + p = add_epsg_def (filter, first, last, 2207, "epsg", 2207, + "ED50 / 3-degree Gauss-Kruger zone 10"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / 3-degree Gauss-Kruger zone 10\",GEOGCS[\""); + add_srs_wkt (p, 1, + "ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",30],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",10500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"2207\"]]"); + p = add_epsg_def (filter, first, last, 2208, "epsg", 2208, + "ED50 / 3-degree Gauss-Kruger zone 11"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / 3-degree Gauss-Kruger zone 11\",GEOGCS[\""); + add_srs_wkt (p, 1, + "ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",33],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",11500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"2208\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_02.c b/src/spatialite/src/srsinit/epsg_inlined_02.c new file mode 100644 index 0000000..fc9ac22 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_02.c @@ -0,0 +1,3672 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_02 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 2209, "epsg", 2209, + "ED50 / 3-degree Gauss-Kruger zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / 3-degree Gauss-Kruger zone 12\",GEOGCS[\""); + add_srs_wkt (p, 1, + "ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",36],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",12500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"2209\"]]"); + p = add_epsg_def (filter, first, last, 2210, "epsg", 2210, + "ED50 / 3-degree Gauss-Kruger zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / 3-degree Gauss-Kruger zone 13\",GEOGCS[\""); + add_srs_wkt (p, 1, + "ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",39],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",13500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"2210\"]]"); + p = add_epsg_def (filter, first, last, 2211, "epsg", 2211, + "ED50 / 3-degree Gauss-Kruger zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / 3-degree Gauss-Kruger zone 14\",GEOGCS[\""); + add_srs_wkt (p, 1, + "ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",42],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",14500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"2211\"]]"); + p = add_epsg_def (filter, first, last, 2212, "epsg", 2212, + "ED50 / 3-degree Gauss-Kruger zone 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / 3-degree Gauss-Kruger zone 15\",GEOGCS[\""); + add_srs_wkt (p, 1, + "ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",45],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",15500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"2212\"]]"); + p = add_epsg_def (filter, first, last, 2213, "epsg", 2213, + "ETRS89 / TM 30 NE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / TM 30 NE\",GEOGCS[\"ETRS89\",DATUM[\"E"); + add_srs_wkt (p, 1, + "uropean_Terrestrial_Reference_System_1989\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",30],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"2213\"]]"); + p = add_epsg_def (filter, first, last, 2214, "epsg", 2214, + "Douala 1948 / AOF west (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +"); + add_proj4text (p, 1, + "y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Douala 1948 / AOF west (deprecated)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Douala 1948\",DATUM[\"Douala_1948\",SPHEROID[\"Internati"); + add_srs_wkt (p, 2, + "onal 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[-206.1,-174.7,-87.7,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6192\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4192\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",10.5],PARAMETER[\"sca"); + add_srs_wkt (p, 9, + "le_factor\",0.999],PARAMETER[\"false_easting\",1000000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",1000000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2214\"]]"); + p = add_epsg_def (filter, first, last, 2215, "epsg", 2215, + "Manoca 1962 / UTM zone 32N"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-70."); + add_proj4text (p, 1, + "9,-151.8,-41.4,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Manoca 1962 / UTM zone 32N\",GEOGCS[\"Manoca 19"); + add_srs_wkt (p, 1, + "62\",DATUM[\"Manoca_1962\",SPHEROID[\"Clarke 1880 (IGN)\""); + add_srs_wkt (p, 2, + ",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-70.9,-151.8,-41.4,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6193\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4193\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9996],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"2215\"]]"); + p = add_epsg_def (filter, first, last, 2216, "epsg", 2216, + "Qornoq 1927 / UTM zone 22N"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +ellps=intl +towgs84=164,138,-189,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Qornoq 1927 / UTM zone 22N\",GEOGCS[\"Qornoq 19"); + add_srs_wkt (p, 1, + "27\",DATUM[\"Qornoq_1927\",SPHEROID[\"International 1924"); + add_srs_wkt (p, 2, + "\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[164"); + add_srs_wkt (p, 3, + ",138,-189,0,0,0,0],AUTHORITY[\"EPSG\",\"6194\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4194\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-51],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"2216\"]]"); + p = add_epsg_def (filter, first, last, 2217, "epsg", 2217, + "Qornoq 1927 / UTM zone 23N"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +ellps=intl +towgs84=164,138,-189,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Qornoq 1927 / UTM zone 23N\",GEOGCS[\"Qornoq 19"); + add_srs_wkt (p, 1, + "27\",DATUM[\"Qornoq_1927\",SPHEROID[\"International 1924"); + add_srs_wkt (p, 2, + "\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[164"); + add_srs_wkt (p, 3, + ",138,-189,0,0,0,0],AUTHORITY[\"EPSG\",\"6194\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4194\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-45],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"2217\"]]"); + p = add_epsg_def (filter, first, last, 2219, "epsg", 2219, + "ATS77 / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +a=6378135 +b=6356750.304921594 +unit"); + add_proj4text (p, 1, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ATS77 / UTM zone 19N\",GEOGCS[\"ATS77\",DATUM[\""); + add_srs_wkt (p, 1, + "Average_Terrestrial_System_1977\",SPHEROID[\"Average Ter"); + add_srs_wkt (p, 2, + "restrial System 1977\",6378135,298.257,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7041\"]],AUTHORITY[\"EPSG\",\"6122\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4122\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-69],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2219\"]]"); + p = add_epsg_def (filter, first, last, 2220, "epsg", 2220, + "ATS77 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +a=6378135 +b=6356750.304921594 +unit"); + add_proj4text (p, 1, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ATS77 / UTM zone 20N\",GEOGCS[\"ATS77\",DATUM[\""); + add_srs_wkt (p, 1, + "Average_Terrestrial_System_1977\",SPHEROID[\"Average Ter"); + add_srs_wkt (p, 2, + "restrial System 1977\",6378135,298.257,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7041\"]],AUTHORITY[\"EPSG\",\"6122\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4122\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-63],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2220\"]]"); + p = add_epsg_def (filter, first, last, 2222, "epsg", 2222, + "NAD83 / Arizona East (ft)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +datum=NAD83 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Arizona East (ft)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",31],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-110.1666666666667],PARAMETER[\"sca"); + add_srs_wkt (p, 9, + "le_factor\",0.9999],PARAMETER[\"false_easting\",700000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"2222\"]]"); + p = add_epsg_def (filter, first, last, 2223, "epsg", 2223, + "NAD83 / Arizona Central (ft)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +datum=NAD83 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Arizona Central (ft)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",31],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-111.9166666666667],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",70000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"2223\"]]"); + p = add_epsg_def (filter, first, last, 2224, "epsg", 2224, + "NAD83 / Arizona West (ft)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); + add_proj4text (p, 1, + "=213360 +y_0=0 +datum=NAD83 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Arizona West (ft)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",31],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-113.75],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.999933333],PARAMETER[\"false_easting\",700000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"2224\"]]"); + p = add_epsg_def (filter, first, last, 2225, "epsg", 2225, + "NAD83 / California zone 1 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); + add_proj4text (p, 1, + "3333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=5000"); + add_proj4text (p, 2, + "00.0001016001 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / California zone 1 (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",41.66666666666666],PARAMETER[\"standard_parallel_2\",40"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",39.33333333333334],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-122],PARAMETER[\"false_eas"); + add_srs_wkt (p, 11, + "ting\",6561666.667],PARAMETER[\"false_northing\",1640416"); + add_srs_wkt (p, 12, + ".667],UNIT[\"US survey foot\",0.3048006096012192,AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 14, + "],AUTHORITY[\"EPSG\",\"2225\"]]"); + p = add_epsg_def (filter, first, last, 2226, "epsg", 2226, + "NAD83 / California zone 2 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.00"); + add_proj4text (p, 2, + "01016 +y_0=500000.0001016001 +datum=NAD83 +units=us-ft +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / California zone 2 (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",39.83333333333334],PARAMETER[\"standard_parallel_2\",38"); + add_srs_wkt (p, 9, + ".33333333333334],PARAMETER[\"latitude_of_origin\",37.666"); + add_srs_wkt (p, 10, + "66666666666],PARAMETER[\"central_meridian\",-122],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",6561666.667],PARAMETER[\"false_nor"); + add_srs_wkt (p, 12, + "thing\",1640416.667],UNIT[\"US survey foot\",0.304800609"); + add_srs_wkt (p, 13, + "6012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 14, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2226\"]]"); + p = add_epsg_def (filter, first, last, 2227, "epsg", 2227, + "NAD83 / California zone 3 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0="); + add_proj4text (p, 2, + "500000.0001016001 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / California zone 3 (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",38.43333333333333],PARAMETER[\"standard_parallel_2\",37"); + add_srs_wkt (p, 9, + ".06666666666667],PARAMETER[\"latitude_of_origin\",36.5],"); + add_srs_wkt (p, 10, + "PARAMETER[\"central_meridian\",-120.5],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",6561666.667],PARAMETER[\"false_northing\",164"); + add_srs_wkt (p, 12, + "0416.667],UNIT[\"US survey foot\",0.3048006096012192,AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 14, + "ORTH],AUTHORITY[\"EPSG\",\"2227\"]]"); + p = add_epsg_def (filter, first, last, 2228, "epsg", 2228, + "NAD83 / California zone 4 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); + add_proj4text (p, 1, + "4 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.000101600"); + add_proj4text (p, 2, + "1 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / California zone 4 (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",37.25],PARAMETER[\"standard_parallel_2\",36],PARAMETER["); + add_srs_wkt (p, 9, + "\"latitude_of_origin\",35.33333333333334],PARAMETER[\"ce"); + add_srs_wkt (p, 10, + "ntral_meridian\",-119],PARAMETER[\"false_easting\",65616"); + add_srs_wkt (p, 11, + "66.667],PARAMETER[\"false_northing\",1640416.667],UNIT[\""); + add_srs_wkt (p, 12, + "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"2228\"]]"); + p = add_epsg_def (filter, first, last, 2229, "epsg", 2229, + "NAD83 / California zone 5 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=50"); + add_proj4text (p, 2, + "0000.0001016001 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / California zone 5 (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",35.46666666666667],PARAMETER[\"standard_parallel_2\",34"); + add_srs_wkt (p, 9, + ".03333333333333],PARAMETER[\"latitude_of_origin\",33.5],"); + add_srs_wkt (p, 10, + "PARAMETER[\"central_meridian\",-118],PARAMETER[\"false_e"); + add_srs_wkt (p, 11, + "asting\",6561666.667],PARAMETER[\"false_northing\",16404"); + add_srs_wkt (p, 12, + "16.667],UNIT[\"US survey foot\",0.3048006096012192,AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 14, + "TH],AUTHORITY[\"EPSG\",\"2229\"]]"); + p = add_epsg_def (filter, first, last, 2230, "epsg", 2230, + "NAD83 / California zone 6 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000"); + add_proj4text (p, 2, + ".0001016 +y_0=500000.0001016001 +datum=NAD83 +units=us-f"); + add_proj4text (p, 3, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / California zone 6 (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",33.88333333333333],PARAMETER[\"standard_parallel_2\",32"); + add_srs_wkt (p, 9, + ".78333333333333],PARAMETER[\"latitude_of_origin\",32.166"); + add_srs_wkt (p, 10, + "66666666666],PARAMETER[\"central_meridian\",-116.25],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",6561666.667],PARAMETER[\"false_"); + add_srs_wkt (p, 12, + "northing\",1640416.667],UNIT[\"US survey foot\",0.304800"); + add_srs_wkt (p, 13, + "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); + add_srs_wkt (p, 14, + "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2230\"]]"); + p = add_epsg_def (filter, first, last, 2231, "epsg", 2231, + "NAD83 / Colorado North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "288036576 +y_0=304800.6096012192 +datum=NAD83 +units=us-"); + add_proj4text (p, 3, + "ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Colorado North (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40"); + add_srs_wkt (p, 8, + ".78333333333333],PARAMETER[\"standard_parallel_2\",39.71"); + add_srs_wkt (p, 9, + "666666666667],PARAMETER[\"latitude_of_origin\",39.333333"); + add_srs_wkt (p, 10, + "33333334],PARAMETER[\"central_meridian\",-105.5],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_easting\",3000000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 12, + "\",1000000],UNIT[\"US survey foot\",0.3048006096012192,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"2231\"]]"); + p = add_epsg_def (filter, first, last, 2232, "epsg", 2232, + "NAD83 / Colorado Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); + add_proj4text (p, 1, + "3334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.60"); + add_proj4text (p, 2, + "96012192 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Colorado Central (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",39.75],PARAMETER[\"standard_parallel_2\",38.45],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"latitude_of_origin\",37.83333333333334],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-105.5],PARAMETER[\"false_easting\",3"); + add_srs_wkt (p, 11, + "000000],PARAMETER[\"false_northing\",1000000],UNIT[\"US "); + add_srs_wkt (p, 12, + "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 13, + "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 14, + "SG\",\"2232\"]]"); + p = add_epsg_def (filter, first, last, 2233, "epsg", 2233, + "NAD83 / Colorado South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "288036576 +y_0=304800.6096012192 +datum=NAD83 +units=us-"); + add_proj4text (p, 3, + "ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Colorado South (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38"); + add_srs_wkt (p, 8, + ".43333333333333],PARAMETER[\"standard_parallel_2\",37.23"); + add_srs_wkt (p, 9, + "333333333333],PARAMETER[\"latitude_of_origin\",36.666666"); + add_srs_wkt (p, 10, + "66666666],PARAMETER[\"central_meridian\",-105.5],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_easting\",3000000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 12, + "\",1000000],UNIT[\"US survey foot\",0.3048006096012192,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"2233\"]]"); + p = add_epsg_def (filter, first, last, 2234, "epsg", 2234, + "NAD83 / Connecticut (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); + add_proj4text (p, 1, + ".83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_"); + add_proj4text (p, 2, + "0=152400.3048006096 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Connecticut (ftUS)\",GEOGCS[\"NAD83\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.8"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"standard_parallel_2\",41.2],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"latitude_of_origin\",40.83333333333334],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"central_meridian\",-72.75],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",1000000],PARAMETER[\"false_northing\",500000],UNIT"); + add_srs_wkt (p, 12, + "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"2234\"]]"); + p = add_epsg_def (filter, first, last, 2235, "epsg", 2235, + "NAD83 / Delaware (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); + add_proj4text (p, 1, + "995 +x_0=200000.0001016002 +y_0=0 +datum=NAD83 +units=us"); + add_proj4text (p, 2, + "-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Delaware (ftUS)\",GEOGCS[\"NAD83\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",38],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-75.41666666666667],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.999995],PARAMETER[\"false_easting\",656166.6"); + add_srs_wkt (p, 10, + "67],PARAMETER[\"false_northing\",0],UNIT[\"US survey foo"); + add_srs_wkt (p, 11, + "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); + add_srs_wkt (p, 12, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"223"); + add_srs_wkt (p, 13, + "5\"]]"); + p = add_epsg_def (filter, first, last, 2236, "epsg", 2236, + "NAD83 / Florida East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000.0001016002 +y_0=0 +datum=NAD83 +units"); + add_proj4text (p, 2, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Florida East (ftUS)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",24.3333333333"); + add_srs_wkt (p, 8, + "3333],PARAMETER[\"central_meridian\",-81],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.999941177],PARAMETER[\"false_easting\",65"); + add_srs_wkt (p, 10, + "6166.667],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); + add_srs_wkt (p, 11, + "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"2236\"]]"); + p = add_epsg_def (filter, first, last, 2237, "epsg", 2237, + "NAD83 / Florida West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000.0001016002 +y_0=0 +datum=NAD83 +units"); + add_proj4text (p, 2, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Florida West (ftUS)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",24.3333333333"); + add_srs_wkt (p, 8, + "3333],PARAMETER[\"central_meridian\",-82],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.999941177],PARAMETER[\"false_easting\",65"); + add_srs_wkt (p, 10, + "6166.667],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); + add_srs_wkt (p, 11, + "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"2237\"]]"); + p = add_epsg_def (filter, first, last, 2238, "epsg", 2238, + "NAD83 / Florida North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); + add_proj4text (p, 1, + "9 +lon_0=-84.5 +x_0=600000 +y_0=0 +datum=NAD83 +units=us"); + add_proj4text (p, 2, + "-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Florida North (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",30"); + add_srs_wkt (p, 8, + ".75],PARAMETER[\"standard_parallel_2\",29.58333333333333"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",29],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-84.5],PARAMETER[\"false_easting\",1968500"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 12, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2238\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 2239, "epsg", 2239, + "NAD83 / Georgia East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=200000.0001016002 +y_0=0 +datum=NAD83 +units=us-f"); + add_proj4text (p, 2, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Georgia East (ftUS)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",30],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-82.16666666666667],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9999],PARAMETER[\"false_easting\",656166."); + add_srs_wkt (p, 10, + "667],PARAMETER[\"false_northing\",0],UNIT[\"US survey fo"); + add_srs_wkt (p, 11, + "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"22"); + add_srs_wkt (p, 13, + "39\"]]"); + p = add_epsg_def (filter, first, last, 2240, "epsg", 2240, + "NAD83 / Georgia West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=699999.9998983998 +y_0=0 +datum=NAD83 +units=us-f"); + add_proj4text (p, 2, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Georgia West (ftUS)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",30],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-84.16666666666667],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9999],PARAMETER[\"false_easting\",2296583"); + add_srs_wkt (p, 10, + ".333],PARAMETER[\"false_northing\",0],UNIT[\"US survey f"); + add_srs_wkt (p, 11, + "oot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],A"); + add_srs_wkt (p, 12, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 13, + "240\"]]"); + p = add_epsg_def (filter, first, last, 2241, "epsg", 2241, + "NAD83 / Idaho East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); + add_proj4text (p, 1, + "666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Idaho East (ftUS)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",41.66666666666"); + add_srs_wkt (p, 8, + "666],PARAMETER[\"central_meridian\",-112.1666666666667],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.999947368],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",656166.667],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"2241\"]]"); + p = add_epsg_def (filter, first, last, 2242, "epsg", 2242, + "NAD83 / Idaho Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); + add_proj4text (p, 1, + "99473679999999 +x_0=500000.0001016001 +y_0=0 +datum=NAD8"); + add_proj4text (p, 2, + "3 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Idaho Central (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",41.66666666"); + add_srs_wkt (p, 8, + "666666],PARAMETER[\"central_meridian\",-114],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.999947368],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "1640416.667],PARAMETER[\"false_northing\",0],UNIT[\"US s"); + add_srs_wkt (p, 11, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 12, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"2242\"]]"); + p = add_epsg_def (filter, first, last, 2243, "epsg", 2243, + "NAD83 / Idaho West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); + add_proj4text (p, 1, + ".999933333 +x_0=800000.0001016001 +y_0=0 +datum=NAD83 +u"); + add_proj4text (p, 2, + "nits=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Idaho West (ftUS)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",41.66666666666"); + add_srs_wkt (p, 8, + "666],PARAMETER[\"central_meridian\",-115.75],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.999933333],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "2624666.667],PARAMETER[\"false_northing\",0],UNIT[\"US s"); + add_srs_wkt (p, 11, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 12, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"2243\"]]"); + p = add_epsg_def (filter, first, last, 2244, "epsg", 2244, + "NAD83 / Indiana East (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +"); + add_proj4text (p, 2, + "datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Indiana East (ftUS) (deprecated)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "37.5],PARAMETER[\"central_meridian\",-85.66666666666667]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.999966667],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",328083.333],PARAMETER[\"false_northing\",81"); + add_srs_wkt (p, 11, + "8125],UNIT[\"US survey foot\",0.3048006096012192,AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 13, + "],AUTHORITY[\"EPSG\",\"2244\"]]"); + p = add_epsg_def (filter, first, last, 2245, "epsg", 2245, + "NAD83 / Indiana West (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=900000 +y_0=249364.9987299975 +datum=NAD83"); + add_proj4text (p, 2, + " +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Indiana West (ftUS) (deprecated)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "37.5],PARAMETER[\"central_meridian\",-87.08333333333333]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.999966667],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",2952750],PARAMETER[\"false_northing\",81812"); + add_srs_wkt (p, 11, + "5],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"2245\"]]"); + p = add_epsg_def (filter, first, last, 2246, "epsg", 2246, + "NAD83 / Kentucky North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); + add_proj4text (p, 1, + "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_"); + add_proj4text (p, 2, + "0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Kentucky North (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37"); + add_srs_wkt (p, 8, + ".96666666666667],PARAMETER[\"standard_parallel_2\",38.96"); + add_srs_wkt (p, 9, + "666666666667],PARAMETER[\"latitude_of_origin\",37.5],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"central_meridian\",-84.25],PARAMETER[\"false_ea"); + add_srs_wkt (p, 11, + "sting\",1640416.667],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 12, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 14, + "TY[\"EPSG\",\"2246\"]]"); + p = add_epsg_def (filter, first, last, 2247, "epsg", 2247, + "NAD83 / Kentucky South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0"); + add_proj4text (p, 2, + "001016001 +y_0=500000.0001016001 +datum=NAD83 +units=us-"); + add_proj4text (p, 3, + "ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Kentucky South (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37"); + add_srs_wkt (p, 8, + ".93333333333333],PARAMETER[\"standard_parallel_2\",36.73"); + add_srs_wkt (p, 9, + "333333333333],PARAMETER[\"latitude_of_origin\",36.333333"); + add_srs_wkt (p, 10, + "33333334],PARAMETER[\"central_meridian\",-85.75],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_easting\",1640416.667],PARAMETER[\"false_nort"); + add_srs_wkt (p, 12, + "hing\",1640416.667],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 13, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 14, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2247\"]]"); + p = add_epsg_def (filter, first, last, 2248, "epsg", 2248, + "NAD83 / Maryland (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666"); + add_proj4text (p, 1, + "666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +datum=NAD8"); + add_proj4text (p, 2, + "3 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Maryland (ftUS)\",GEOGCS[\"NAD83\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39.45],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_2\",38.3],PARAMETER[\"lati"); + add_srs_wkt (p, 9, + "tude_of_origin\",37.66666666666666],PARAMETER[\"central_"); + add_srs_wkt (p, 10, + "meridian\",-77],PARAMETER[\"false_easting\",1312333.333]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 12, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2248\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 2249, "epsg", 2249, + "NAD83 / Massachusetts Mainland (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=7"); + add_proj4text (p, 2, + "50000 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Massachusetts Mainland (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",42.68333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",41.71666666666667],PARAMETER[\"latitude_of_origin\",41]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"central_meridian\",-71.5],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",656166.667],PARAMETER[\"false_northing\",2460"); + add_srs_wkt (p, 12, + "625],UNIT[\"US survey foot\",0.3048006096012192,AUTHORIT"); + add_srs_wkt (p, 13, + "Y[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 14, + ",AUTHORITY[\"EPSG\",\"2249\"]]"); + p = add_epsg_def (filter, first, last, 2250, "epsg", 2250, + "NAD83 / Massachusetts Island (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333"); + add_proj4text (p, 1, + "333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0"); + add_proj4text (p, 2, + " +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Massachusetts Island (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",41.48333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",41.28333333333333],PARAMETER[\"latitude_of_origin\",41]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"central_meridian\",-70.5],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",1640416.667],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 12, + "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 14, + "ORITY[\"EPSG\",\"2250\"]]"); + p = add_epsg_def (filter, first, last, 2251, "epsg", 2251, + "NAD83 / Michigan North (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999"); + add_proj4text (p, 2, + "968001 +y_0=0 +datum=NAD83 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Michigan North (ft)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",47.0"); + add_srs_wkt (p, 8, + "8333333333334],PARAMETER[\"standard_parallel_2\",45.4833"); + add_srs_wkt (p, 9, + "3333333333],PARAMETER[\"latitude_of_origin\",44.78333333"); + add_srs_wkt (p, 10, + "333333],PARAMETER[\"central_meridian\",-87],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",26246719.16],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],A"); + add_srs_wkt (p, 13, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 14, + "251\"]]"); + p = add_epsg_def (filter, first, last, 2252, "epsg", 2252, + "NAD83 / Michigan Central (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43"); + add_proj4text (p, 1, + ".31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.9"); + add_proj4text (p, 2, + "99976001 +y_0=0 +datum=NAD83 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Michigan Central (ft)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",45"); + add_srs_wkt (p, 8, + ".7],PARAMETER[\"standard_parallel_2\",44.18333333333333]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"latitude_of_origin\",43.31666666666667],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"central_meridian\",-84.36666666666666],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_easting\",19685039.37],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"2252\"]]"); + p = add_epsg_def (filter, first, last, 2253, "epsg", 2253, + "NAD83 / Michigan South (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41"); + add_proj4text (p, 1, + ".5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 "); + add_proj4text (p, 2, + "+datum=NAD83 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Michigan South (ft)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",43.6"); + add_srs_wkt (p, 8, + "6666666666666],PARAMETER[\"standard_parallel_2\",42.1],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"latitude_of_origin\",41.5],PARAMETER[\"centra"); + add_srs_wkt (p, 10, + "l_meridian\",-84.36666666666666],PARAMETER[\"false_easti"); + add_srs_wkt (p, 11, + "ng\",13123359.58],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 12, + "foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 13, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2253\"]]"); + p = add_epsg_def (filter, first, last, 2254, "epsg", 2254, + "NAD83 / Mississippi East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=300000.0000000001 +y_0=0 +datum=NAD83 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Mississippi East (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",29.5],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-88.83333333333333],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",0.99995],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",984250.0000000002],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 11, + "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"2254\"]]"); + p = add_epsg_def (filter, first, last, 2255, "epsg", 2255, + "NAD83 / Mississippi West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=699999.9998983998 +y_0=0 +datum=NAD83 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Mississippi West (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",29.5],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-90.33333333333333],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",0.99995],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",2296583.333],PARAMETER[\"false_northing\",0],UNIT[\"US "); + add_srs_wkt (p, 11, + "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 12, + "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"2255\"]]"); + p = add_epsg_def (filter, first, last, 2256, "epsg", 2256, + "NAD83 / Montana (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5"); + add_proj4text (p, 1, + " +x_0=599999.9999976 +y_0=0 +datum=NAD83 +units=ft +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Montana (ft)\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); + add_srs_wkt (p, 7, + "nic_2SP\"],PARAMETER[\"standard_parallel_1\",49],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_2\",45],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 9, + "rigin\",44.25],PARAMETER[\"central_meridian\",-109.5],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",1968503.937],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"2256\"]]"); + p = add_epsg_def (filter, first, last, 2257, "epsg", 2257, + "NAD83 / New Mexico East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); + add_proj4text (p, 1, + "909091 +x_0=165000 +y_0=0 +datum=NAD83 +units=us-ft +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New Mexico East (ftUS)\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",31],PARAME"); + add_srs_wkt (p, 8, + "TER[\"central_meridian\",-104.3333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.999909091],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "541337.5],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); + add_srs_wkt (p, 11, + "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"2257\"]]"); + p = add_epsg_def (filter, first, last, 2258, "epsg", 2258, + "NAD83 / New Mexico Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=5000"); + add_proj4text (p, 1, + "00.0001016001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New Mexico Central (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",31],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",-106.25],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9999],PARAMETER[\"false_easting\",1640416.667]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 11, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2258\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2259, "epsg", 2259, + "NAD83 / New Mexico West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); + add_proj4text (p, 1, + "916667 +x_0=830000.0001016001 +y_0=0 +datum=NAD83 +units"); + add_proj4text (p, 2, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New Mexico West (ftUS)\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",31],PARAME"); + add_srs_wkt (p, 8, + "TER[\"central_meridian\",-107.8333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.999916667],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "2723091.667],PARAMETER[\"false_northing\",0],UNIT[\"US s"); + add_srs_wkt (p, 11, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 12, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"2259\"]]"); + p = add_epsg_def (filter, first, last, 2260, "epsg", 2260, + "NAD83 / New York East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +datum=NAD83 +units=us-ft +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New York East (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",38.83333333"); + add_srs_wkt (p, 8, + "333334],PARAMETER[\"central_meridian\",-74.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",492"); + add_srs_wkt (p, 10, + "125],PARAMETER[\"false_northing\",0],UNIT[\"US survey fo"); + add_srs_wkt (p, 11, + "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"22"); + add_srs_wkt (p, 13, + "60\"]]"); + p = add_epsg_def (filter, first, last, 2261, "epsg", 2261, + "NAD83 / New York Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=249999.9998983998 +y_0=0 +datum=NAD83 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New York Central (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",40],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",-76.58333333333333],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9999375],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",820208.3330000002],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 11, + "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"2261\"]]"); + p = add_epsg_def (filter, first, last, 2262, "epsg", 2262, + "NAD83 / New York West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=350000.0001016001 +y_0=0 +datum=NAD83 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New York West (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",40],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-78.58333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999375],PARAMETER[\"false_easting\",11"); + add_srs_wkt (p, 10, + "48291.667],PARAMETER[\"false_northing\",0],UNIT[\"US sur"); + add_srs_wkt (p, 11, + "vey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"2262\"]]"); + p = add_epsg_def (filter, first, last, 2263, "epsg", 2263, + "NAD83 / New York Long Island (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000"); + add_proj4text (p, 2, + "000001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New York Long Island (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",41.03333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",40.66666666666666],PARAMETER[\"latitude_of_origin\",40."); + add_srs_wkt (p, 10, + "16666666666666],PARAMETER[\"central_meridian\",-74],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",984250.0000000002],PARAMETER[\"f"); + add_srs_wkt (p, 12, + "alse_northing\",0],UNIT[\"US survey foot\",0.30480060960"); + add_srs_wkt (p, 13, + "12192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 14, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2263\"]]"); + p = add_epsg_def (filter, first, last, 2264, "epsg", 2264, + "NAD83 / North Carolina (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0="); + add_proj4text (p, 2, + "0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / North Carolina (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36"); + add_srs_wkt (p, 8, + ".16666666666666],PARAMETER[\"standard_parallel_2\",34.33"); + add_srs_wkt (p, 9, + "333333333334],PARAMETER[\"latitude_of_origin\",33.75],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-79],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US"); + add_srs_wkt (p, 12, + " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 13, + "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 14, + "PSG\",\"2264\"]]"); + p = add_epsg_def (filter, first, last, 2265, "epsg", 2265, + "NAD83 / North Dakota North (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333"); + add_proj4text (p, 1, + "333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +"); + add_proj4text (p, 2, + "datum=NAD83 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / North Dakota North (ft)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",48.73333333333333],PARAMETER[\"standard_parallel_2\",47"); + add_srs_wkt (p, 9, + ".43333333333333],PARAMETER[\"latitude_of_origin\",47],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-100.5],PARAMETER[\"false_e"); + add_srs_wkt (p, 11, + "asting\",1968503.937],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 12, + "IT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2265\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 2266, "epsg", 2266, + "NAD83 / North Dakota South (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333"); + add_proj4text (p, 1, + "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9"); + add_proj4text (p, 2, + "999976 +y_0=0 +datum=NAD83 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / North Dakota South (ft)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",47.48333333333333],PARAMETER[\"standard_parallel_2\",46"); + add_srs_wkt (p, 9, + ".18333333333333],PARAMETER[\"latitude_of_origin\",45.666"); + add_srs_wkt (p, 10, + "66666666666],PARAMETER[\"central_meridian\",-100.5],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",1968503.937],PARAMETER[\"false_n"); + add_srs_wkt (p, 12, + "orthing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 13, + "002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 14, + "PSG\",\"2266\"]]"); + p = add_epsg_def (filter, first, last, 2267, "epsg", 2267, + "NAD83 / Oklahoma North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +datum=NAD83"); + add_proj4text (p, 2, + " +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Oklahoma North (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36"); + add_srs_wkt (p, 8, + ".76666666666667],PARAMETER[\"standard_parallel_2\",35.56"); + add_srs_wkt (p, 9, + "666666666667],PARAMETER[\"latitude_of_origin\",35],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"central_meridian\",-98],PARAMETER[\"false_easting"); + add_srs_wkt (p, 11, + "\",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US su"); + add_srs_wkt (p, 12, + "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); + add_srs_wkt (p, 13, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 14, + "\",\"2267\"]]"); + p = add_epsg_def (filter, first, last, 2268, "epsg", 2268, + "NAD83 / Oklahoma South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Oklahoma South (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",35"); + add_srs_wkt (p, 8, + ".23333333333333],PARAMETER[\"standard_parallel_2\",33.93"); + add_srs_wkt (p, 9, + "333333333333],PARAMETER[\"latitude_of_origin\",33.333333"); + add_srs_wkt (p, 10, + "33333334],PARAMETER[\"central_meridian\",-98],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",1968500],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 12, + "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 14, + "UTHORITY[\"EPSG\",\"2268\"]]"); + p = add_epsg_def (filter, first, last, 2269, "epsg", 2269, + "NAD83 / Oregon North (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 "); + add_proj4text (p, 2, + "+datum=NAD83 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Oregon North (ft)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",46],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_2\",44.33333333333334],PARA"); + add_srs_wkt (p, 9, + "METER[\"latitude_of_origin\",43.66666666666666],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-120.5],PARAMETER[\"false_easting"); + add_srs_wkt (p, 11, + "\",8202099.738],PARAMETER[\"false_northing\",0],UNIT[\"f"); + add_srs_wkt (p, 12, + "oot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2269\"]]"); + p = add_epsg_def (filter, first, last, 2270, "epsg", 2270, + "NAD83 / Oregon South (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 "); + add_proj4text (p, 2, + "+datum=NAD83 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Oregon South (ft)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",44],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_2\",42.33333333333334],PARA"); + add_srs_wkt (p, 9, + "METER[\"latitude_of_origin\",41.66666666666666],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-120.5],PARAMETER[\"false_easting"); + add_srs_wkt (p, 11, + "\",4921259.843],PARAMETER[\"false_northing\",0],UNIT[\"f"); + add_srs_wkt (p, 12, + "oot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2270\"]]"); + p = add_epsg_def (filter, first, last, 2271, "epsg", 2271, + "NAD83 / Pennsylvania North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=4"); + add_proj4text (p, 1, + "0.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +datum"); + add_proj4text (p, 2, + "=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Pennsylvania North (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",41.95],PARAMETER[\"standard_parallel_2\",40.88333333333"); + add_srs_wkt (p, 9, + "333],PARAMETER[\"latitude_of_origin\",40.16666666666666]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"central_meridian\",-77.75],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_easting\",1968500],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 12, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 14, + "TY[\"EPSG\",\"2271\"]]"); + p = add_epsg_def (filter, first, last, 2272, "epsg", 2272, + "NAD83 / Pennsylvania South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +"); + add_proj4text (p, 2, + "y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Pennsylvania South (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",40.96666666666667],PARAMETER[\"standard_parallel_2\",39"); + add_srs_wkt (p, 9, + ".93333333333333],PARAMETER[\"latitude_of_origin\",39.333"); + add_srs_wkt (p, 10, + "33333333334],PARAMETER[\"central_meridian\",-77.75],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",1968500],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 14, + "RTH],AUTHORITY[\"EPSG\",\"2272\"]]"); + p = add_epsg_def (filter, first, last, 2273, "epsg", 2273, + "NAD83 / South Carolina (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31"); + add_proj4text (p, 1, + ".83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +datum=NAD"); + add_proj4text (p, 2, + "83 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / South Carolina (ft)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",34.8"); + add_srs_wkt (p, 8, + "3333333333334],PARAMETER[\"standard_parallel_2\",32.5],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"latitude_of_origin\",31.83333333333333],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"central_meridian\",-81],PARAMETER[\"false_easting"); + add_srs_wkt (p, 11, + "\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"foot\""); + add_srs_wkt (p, 12, + ",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 13, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2273\"]]"); + p = add_epsg_def (filter, first, last, 2274, "epsg", 2274, + "NAD83 / Tennessee (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=3"); + add_proj4text (p, 1, + "4.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +datum=NA"); + add_proj4text (p, 2, + "D83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Tennessee (ftUS)\",GEOGCS[\"NAD83\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36.4166"); + add_srs_wkt (p, 8, + "6666666666],PARAMETER[\"standard_parallel_2\",35.25],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"latitude_of_origin\",34.33333333333334],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"central_meridian\",-86],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); + add_srs_wkt (p, 12, + "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"2274\"]]"); + p = add_epsg_def (filter, first, last, 2275, "epsg", 2275, + "NAD83 / Texas North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=3"); + add_proj4text (p, 1, + "4 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.99989"); + add_proj4text (p, 2, + "83998 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Texas North (ftUS)\",GEOGCS[\"NAD83\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36.1"); + add_srs_wkt (p, 8, + "8333333333333],PARAMETER[\"standard_parallel_2\",34.65],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",34],PARAMETER[\"central"); + add_srs_wkt (p, 10, + "_meridian\",-101.5],PARAMETER[\"false_easting\",656166.6"); + add_srs_wkt (p, 11, + "67],PARAMETER[\"false_northing\",3280833.333],UNIT[\"US "); + add_srs_wkt (p, 12, + "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 13, + "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 14, + "SG\",\"2275\"]]"); + p = add_epsg_def (filter, first, last, 2276, "epsg", 2276, + "NAD83 / Texas North Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333"); + add_proj4text (p, 1, + "333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=2000000.0001016 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Texas North Central (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",33.96666666666667],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",32.13333333333333],PARAMETER[\"latitude_of_origin\",31."); + add_srs_wkt (p, 10, + "66666666666667],PARAMETER[\"central_meridian\",-98.5],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_easting\",1968500],PARAMETER[\"false_nor"); + add_srs_wkt (p, 12, + "thing\",6561666.667],UNIT[\"US survey foot\",0.304800609"); + add_srs_wkt (p, 13, + "6012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 14, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2276\"]]"); + p = add_epsg_def (filter, first, last, 2277, "epsg", 2277, + "NAD83 / Texas Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666"); + add_proj4text (p, 1, + "667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); + add_proj4text (p, 2, + "x_0=699999.9998983998 +y_0=3000000 +datum=NAD83 +units=u"); + add_proj4text (p, 3, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Texas Central (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",31"); + add_srs_wkt (p, 8, + ".88333333333333],PARAMETER[\"standard_parallel_2\",30.11"); + add_srs_wkt (p, 9, + "666666666667],PARAMETER[\"latitude_of_origin\",29.666666"); + add_srs_wkt (p, 10, + "66666667],PARAMETER[\"central_meridian\",-100.3333333333"); + add_srs_wkt (p, 11, + "333],PARAMETER[\"false_easting\",2296583.333],PARAMETER["); + add_srs_wkt (p, 12, + "\"false_northing\",9842500.000000002],UNIT[\"US survey f"); + add_srs_wkt (p, 13, + "oot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],A"); + add_srs_wkt (p, 14, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 15, + "277\"]]"); + p = add_epsg_def (filter, first, last, 2278, "epsg", 2278, + "NAD83 / Texas South Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333"); + add_proj4text (p, 1, + "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=3999999.9998984 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Texas South Central (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",30.28333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",28.38333333333333],PARAMETER[\"latitude_of_origin\",27."); + add_srs_wkt (p, 10, + "83333333333333],PARAMETER[\"central_meridian\",-99],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",1968500],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",13123333.333],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 13, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 14, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2278\"]]"); + p = add_epsg_def (filter, first, last, 2279, "epsg", 2279, + "NAD83 / Texas South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.00"); + add_proj4text (p, 2, + "00000001 +y_0=5000000.0001016 +datum=NAD83 +units=us-ft "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Texas South (ftUS)\",GEOGCS[\"NAD83\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",27.8"); + add_srs_wkt (p, 8, + "3333333333333],PARAMETER[\"standard_parallel_2\",26.1666"); + add_srs_wkt (p, 9, + "6666666667],PARAMETER[\"latitude_of_origin\",25.66666666"); + add_srs_wkt (p, 10, + "666667],PARAMETER[\"central_meridian\",-98.5],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",984250.0000000002],PARAMETER[\"false_n"); + add_srs_wkt (p, 12, + "orthing\",16404166.667],UNIT[\"US survey foot\",0.304800"); + add_srs_wkt (p, 13, + "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); + add_srs_wkt (p, 14, + "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2279\"]]"); + p = add_epsg_def (filter, first, last, 2280, "epsg", 2280, + "NAD83 / Utah North (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0"); + add_proj4text (p, 2, + "001504 +y_0=999999.9999960001 +datum=NAD83 +units=ft +no"); + add_proj4text (p, 3, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Utah North (ft)\",GEOGCS[\"NAD83\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.7833"); + add_srs_wkt (p, 8, + "3333333333],PARAMETER[\"standard_parallel_2\",40.7166666"); + add_srs_wkt (p, 9, + "6666667],PARAMETER[\"latitude_of_origin\",40.33333333333"); + add_srs_wkt (p, 10, + "334],PARAMETER[\"central_meridian\",-111.5],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",1640419.948],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",3280839.895],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"2280\"]]"); + p = add_epsg_def (filter, first, last, 2281, "epsg", 2281, + "NAD83 / Utah Central (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); + add_proj4text (p, 1, + "8.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0="); + add_proj4text (p, 2, + "1999999.999992 +datum=NAD83 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Utah Central (ft)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40.65"); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_2\",39.01666666666667],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"latitude_of_origin\",38.33333333333334],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"central_meridian\",-111.5],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",1640419.948],PARAMETER[\"false_northing\",6561679."); + add_srs_wkt (p, 12, + "79],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],A"); + add_srs_wkt (p, 13, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 14, + "281\"]]"); + p = add_epsg_def (filter, first, last, 2282, "epsg", 2282, + "NAD83 / Utah South (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); + add_proj4text (p, 1, + "6.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0="); + add_proj4text (p, 2, + "2999999.999988 +datum=NAD83 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Utah South (ft)\",GEOGCS[\"NAD83\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38.35],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_2\",37.21666666666667],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"latitude_of_origin\",36.66666666666666],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"central_meridian\",-111.5],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 11, + "g\",1640419.948],PARAMETER[\"false_northing\",9842519.68"); + add_srs_wkt (p, 12, + "5],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AX"); + add_srs_wkt (p, 13, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"22"); + add_srs_wkt (p, 14, + "82\"]]"); + p = add_epsg_def (filter, first, last, 2283, "epsg", 2283, + "NAD83 / Virginia North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2"); + add_proj4text (p, 2, + "000000.0001016 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Virginia North (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39"); + add_srs_wkt (p, 8, + ".2],PARAMETER[\"standard_parallel_2\",38.03333333333333]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"latitude_of_origin\",37.66666666666666],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"central_meridian\",-78.5],PARAMETER[\"false_eas"); + add_srs_wkt (p, 11, + "ting\",11482916.667],PARAMETER[\"false_northing\",656166"); + add_srs_wkt (p, 12, + "6.667],UNIT[\"US survey foot\",0.3048006096012192,AUTHOR"); + add_srs_wkt (p, 13, + "ITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 14, + "H],AUTHORITY[\"EPSG\",\"2283\"]]"); + p = add_epsg_def (filter, first, last, 2284, "epsg", 2284, + "NAD83 / Virginia South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0"); + add_proj4text (p, 2, + "001016 +y_0=999999.9998983998 +datum=NAD83 +units=us-ft "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Virginia South (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37"); + add_srs_wkt (p, 8, + ".96666666666667],PARAMETER[\"standard_parallel_2\",36.76"); + add_srs_wkt (p, 9, + "666666666667],PARAMETER[\"latitude_of_origin\",36.333333"); + add_srs_wkt (p, 10, + "33333334],PARAMETER[\"central_meridian\",-78.5],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_easting\",11482916.667],PARAMETER[\"false_nort"); + add_srs_wkt (p, 12, + "hing\",3280833.333],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 13, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 14, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2284\"]]"); + p = add_epsg_def (filter, first, last, 2285, "epsg", 2285, + "NAD83 / Washington North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47"); + add_proj4text (p, 1, + " +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0"); + add_proj4text (p, 2, + " +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Washington North (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",48.73333333333333],PARAMETER[\"standard_parallel_2\",47"); + add_srs_wkt (p, 9, + ".5],PARAMETER[\"latitude_of_origin\",47],PARAMETER[\"cen"); + add_srs_wkt (p, 10, + "tral_meridian\",-120.8333333333333],PARAMETER[\"false_ea"); + add_srs_wkt (p, 11, + "sting\",1640416.667],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 12, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 14, + "TY[\"EPSG\",\"2285\"]]"); + p = add_epsg_def (filter, first, last, 2286, "epsg", 2286, + "NAD83 / Washington South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333"); + add_proj4text (p, 1, + "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0"); + add_proj4text (p, 2, + "001016001 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Washington South (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",47.33333333333334],PARAMETER[\"standard_parallel_2\",45"); + add_srs_wkt (p, 9, + ".83333333333334],PARAMETER[\"latitude_of_origin\",45.333"); + add_srs_wkt (p, 10, + "33333333334],PARAMETER[\"central_meridian\",-120.5],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",1640416.667],PARAMETER[\"false_n"); + add_srs_wkt (p, 12, + "orthing\",0],UNIT[\"US survey foot\",0.3048006096012192,"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"2286\"]]"); + p = add_epsg_def (filter, first, last, 2287, "epsg", 2287, + "NAD83 / Wisconsin North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Wisconsin North (ftUS)\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); + add_srs_wkt (p, 8, + "6.76666666666667],PARAMETER[\"standard_parallel_2\",45.5"); + add_srs_wkt (p, 9, + "6666666666667],PARAMETER[\"latitude_of_origin\",45.16666"); + add_srs_wkt (p, 10, + "666666666],PARAMETER[\"central_meridian\",-90],PARAMETER"); + add_srs_wkt (p, 11, + "[\"false_easting\",1968500],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 14, + "AUTHORITY[\"EPSG\",\"2287\"]]"); + p = add_epsg_def (filter, first, last, 2288, "epsg", 2288, + "NAD83 / Wisconsin Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333"); + add_proj4text (p, 1, + "334 +lon_0=-90 +x_0=600000 +y_0=0 +datum=NAD83 +units=us"); + add_proj4text (p, 2, + "-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Wisconsin Central (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",45.5],PARAMETER[\"standard_parallel_2\",44.25],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"latitude_of_origin\",43.83333333333334],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-90],PARAMETER[\"false_easting\",1968"); + add_srs_wkt (p, 11, + "500],PARAMETER[\"false_northing\",0],UNIT[\"US survey fo"); + add_srs_wkt (p, 12, + "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); + add_srs_wkt (p, 13, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"22"); + add_srs_wkt (p, 14, + "88\"]]"); + p = add_epsg_def (filter, first, last, 2289, "epsg", 2289, + "NAD83 / Wisconsin South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +datum=NAD83"); + add_proj4text (p, 2, + " +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Wisconsin South (ftUS)\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); + add_srs_wkt (p, 8, + "4.06666666666667],PARAMETER[\"standard_parallel_2\",42.7"); + add_srs_wkt (p, 9, + "3333333333333],PARAMETER[\"latitude_of_origin\",42],PARA"); + add_srs_wkt (p, 10, + "METER[\"central_meridian\",-90],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 11, + "g\",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US s"); + add_srs_wkt (p, 12, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 13, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 14, + "G\",\"2289\"]]"); + p = add_epsg_def (filter, first, last, 2290, "epsg", 2290, + "ATS77 / Prince Edward Isl. Stereographic (ATS77)"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=70"); + add_proj4text (p, 1, + "0000 +y_0=400000 +a=6378135 +b=6356750.304921594 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ATS77 / Prince Edward Isl. Stereographic (ATS77"); + add_srs_wkt (p, 1, + ")\",GEOGCS[\"ATS77\",DATUM[\"Average_Terrestrial_System_"); + add_srs_wkt (p, 2, + "1977\",SPHEROID[\"Average Terrestrial System 1977\",6378"); + add_srs_wkt (p, 3, + "135,298.257,AUTHORITY[\"EPSG\",\"7041\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 4, + "SG\",\"6122\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4122\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Oblique_Stereographic\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",47.25],PARAMETER[\"central_meridian\",-63],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.999912],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",700000],PARAMETER[\"false_northing\",400000],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\","); + add_srs_wkt (p, 12, + "EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2290\"]]"); + p = add_epsg_def (filter, first, last, 2291, "epsg", 2291, + "NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83) (deprecated)"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=40"); + add_proj4text (p, 1, + "0000 +y_0=800000 +a=6378135 +b=6356750.304921594 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / Prince Edward Isl. Stereographi"); + add_srs_wkt (p, 1, + "c (NAD83) (deprecated)\",GEOGCS[\"ATS77\",DATUM[\"Averag"); + add_srs_wkt (p, 2, + "e_Terrestrial_System_1977\",SPHEROID[\"Average Terrestri"); + add_srs_wkt (p, 3, + "al System 1977\",6378135,298.257,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 4, + "41\"]],AUTHORITY[\"EPSG\",\"6122\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4122\"]],PROJECTION[\"Oblique_Stereographic\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",47.25],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",-63],PARAMETER[\"scale_factor\",0.999912],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_easting\",400000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",800000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 12, + "01\"]],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORIT"); + add_srs_wkt (p, 13, + "Y[\"EPSG\",\"2291\"]]"); + p = add_epsg_def (filter, first, last, 2292, "epsg", 2292, + "NAD83(CSRS98) / Prince Edward Isl. Stereographic (NAD83) (deprecated)"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=40"); + add_proj4text (p, 1, + "0000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS98) / Prince Edward Isl. Stereographi"); + add_srs_wkt (p, 1, + "c (NAD83) (deprecated)\",GEOGCS[\"NAD83(CSRS98)\",DATUM["); + add_srs_wkt (p, 2, + "\"NAD83_Canadian_Spatial_Reference_System\",SPHEROID[\"G"); + add_srs_wkt (p, 3, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 4, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6140\""); + add_srs_wkt (p, 5, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 6, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "9108\"]],AUTHORITY[\"EPSG\",\"4140\"]],PROJECTION[\"Obli"); + add_srs_wkt (p, 8, + "que_Stereographic\"],PARAMETER[\"latitude_of_origin\",47"); + add_srs_wkt (p, 9, + ".25],PARAMETER[\"central_meridian\",-63],PARAMETER[\"sca"); + add_srs_wkt (p, 10, + "le_factor\",0.999912],PARAMETER[\"false_easting\",400000"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_northing\",800000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "N(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2292\"]]"); + p = add_epsg_def (filter, first, last, 2294, "epsg", 2294, + "ATS77 / MTM Nova Scotia zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=4500000"); + add_proj4text (p, 1, + " +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"ATS77 / MTM Nova Scotia zone 4\",GEOGCS[\"ATS77"); + add_srs_wkt (p, 1, + "\",DATUM[\"Average_Terrestrial_System_1977\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Average Terrestrial System 1977\",6378135,298.257,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7041\"]],AUTHORITY[\"EPSG\",\"6122\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4122\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-61.5],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9999],PARAMETER[\"false_easting\",4500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"2294\"]]"); + p = add_epsg_def (filter, first, last, 2295, "epsg", 2295, + "ATS77 / MTM Nova Scotia zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=5500000"); + add_proj4text (p, 1, + " +y_0=0 +a=6378135 +b=6356750.304921594 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"ATS77 / MTM Nova Scotia zone 5\",GEOGCS[\"ATS77"); + add_srs_wkt (p, 1, + "\",DATUM[\"Average_Terrestrial_System_1977\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Average Terrestrial System 1977\",6378135,298.257,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7041\"]],AUTHORITY[\"EPSG\",\"6122\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4122\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-64.5],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9999],PARAMETER[\"false_easting\",5500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"2295\"]]"); + p = add_epsg_def (filter, first, last, 2308, "epsg", 2308, + "Batavia / TM 109 SE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=109 +k=0.9996 +x_0=500000 +y"); + add_proj4text (p, 1, + "_0=10000000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,0 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Batavia / TM 109 SE\",GEOGCS[\"Batavia\",DATUM["); + add_srs_wkt (p, 1, + "\"Batavia\",SPHEROID[\"Bessel 1841\",6377397.155,299.152"); + add_srs_wkt (p, 2, + "8128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-377,681,-50,"); + add_srs_wkt (p, 3, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6211\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4211\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); + add_srs_wkt (p, 8, + "ridian\",109],PARAMETER[\"scale_factor\",0.9996],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_easting\",500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"2308\"]]"); + p = add_epsg_def (filter, first, last, 2309, "epsg", 2309, + "WGS 84 / TM 116 SE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=116 +k=0.9996 +x_0=500000 +y"); + add_proj4text (p, 1, + "_0=10000000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / TM 116 SE\",GEOGCS[\"WGS 84\",DATUM[\""); + add_srs_wkt (p, 1, + "WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]]"); + add_srs_wkt (p, 3, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 4, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 5, + "22\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 6, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 7, + "AMETER[\"central_meridian\",116],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 8, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 10, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 11, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"2309\"]]"); + p = add_epsg_def (filter, first, last, 2310, "epsg", 2310, + "WGS 84 / TM 132 SE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=132 +k=0.9996 +x_0=500000 +y"); + add_proj4text (p, 1, + "_0=10000000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / TM 132 SE\",GEOGCS[\"WGS 84\",DATUM[\""); + add_srs_wkt (p, 1, + "WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]]"); + add_srs_wkt (p, 3, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 4, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 5, + "22\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 6, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 7, + "AMETER[\"central_meridian\",132],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 8, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 10, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 11, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"2310\"]]"); + p = add_epsg_def (filter, first, last, 2311, "epsg", 2311, + "WGS 84 / TM 6 NE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=6 +k=0.9996 +x_0=500000 +y_0"); + add_proj4text (p, 1, + "=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / TM 6 NE\",GEOGCS[\"WGS 84\",DATUM[\"WG"); + add_srs_wkt (p, 1, + "S_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHO"); + add_srs_wkt (p, 2, + "RITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],P"); + add_srs_wkt (p, 3, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 4, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 5, + "\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 6, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"central_meridian\",6],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 8, + "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 10, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 11, + "H],AUTHORITY[\"EPSG\",\"2311\"]]"); + p = add_epsg_def (filter, first, last, 2312, "epsg", 2312, + "Garoua / UTM zone 33N"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Garoua / UTM zone 33N\",GEOGCS[\"Garoua\",DATUM"); + add_srs_wkt (p, 1, + "[\"Garoua\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,2"); + add_srs_wkt (p, 2, + "93.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"6197\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 4, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4197\"]],PROJECTIO"); + add_srs_wkt (p, 6, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 7, + "n\",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"sc"); + add_srs_wkt (p, 8, + "ale_factor\",0.9996],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"2312\"]]"); + p = add_epsg_def (filter, first, last, 2313, "epsg", 2313, + "Kousseri / UTM zone 33N"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kousseri / UTM zone 33N\",GEOGCS[\"Kousseri\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Kousseri\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); + add_srs_wkt (p, 2, + ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6198\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4198\"]],PRO"); + add_srs_wkt (p, 6, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 7, + "_origin\",0],PARAMETER[\"central_meridian\",15],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 9, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 10, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 11, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2313\"]]"); + p = add_epsg_def (filter, first, last, 2314, "epsg", 2314, + "Trinidad 1903 / Trinidad Grid (ftCla)"); + add_proj4text (p, 0, + "+proj=cass +lat_0=10.44166666666667 +lon_0=-61.333333333"); + add_proj4text (p, 1, + "33334 +x_0=86501.46392052001 +y_0=65379.0134283 +a=63782"); + add_proj4text (p, 2, + "93.645208759 +b=6356617.987679838 +towgs84=-61.702,284.4"); + add_proj4text (p, 3, + "88,472.052,0,0,0,0 +to_meter=0.3047972654 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Trinidad 1903 / Trinidad Grid (ftCla)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Trinidad 1903\",DATUM[\"Trinidad_1903\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1858\",6378293.645208759,294.2606763692569,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7007\"]],TOWGS84[-61.702,284.488,472.052,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6302\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4302\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",10.44166666666667],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",-61.33333333333334],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",283800],PARAMETER[\"false_northing\",214500],"); + add_srs_wkt (p, 11, + "UNIT[\"Clarke's foot\",0.3047972654,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9005\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"2314\"]]"); + p = add_epsg_def (filter, first, last, 2315, "epsg", 2315, + "Campo Inchauspe / UTM zone 19S"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +south +ellps=intl +towgs84=-148,136,"); + add_proj4text (p, 1, + "90,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Campo Inchauspe / UTM zone 19S\",GEOGCS[\"Campo"); + add_srs_wkt (p, 1, + " Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Intern"); + add_srs_wkt (p, 2, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"2315\"]]"); + p = add_epsg_def (filter, first, last, 2316, "epsg", 2316, + "Campo Inchauspe / UTM zone 20S"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +south +ellps=intl +towgs84=-148,136,"); + add_proj4text (p, 1, + "90,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Campo Inchauspe / UTM zone 20S\",GEOGCS[\"Campo"); + add_srs_wkt (p, 1, + " Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Intern"); + add_srs_wkt (p, 2, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"2316\"]]"); + p = add_epsg_def (filter, first, last, 2317, "epsg", 2317, + "PSAD56 / ICN Regional"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=9 +lat_2=3 +lat_0=6 +lon_0=-66 +x_0=100"); + add_proj4text (p, 1, + "0000 +y_0=1000000 +ellps=intl +towgs84=-288,175,-376,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSAD56 / ICN Regional\",GEOGCS[\"PSAD56\",DATUM"); + add_srs_wkt (p, 1, + "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",9],PARAMETER[\"standard_parallel_2\",3],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"latitude_of_origin\",6],PARAMETER[\"central_merid"); + add_srs_wkt (p, 10, + "ian\",-66],PARAMETER[\"false_easting\",1000000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"2317\"]]"); + p = add_epsg_def (filter, first, last, 2318, "epsg", 2318, + "Ain el Abd / Aramco Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=17 +lat_2=33 +lat_0=25.08951 +lon_0=48 "); + add_proj4text (p, 1, + "+x_0=0 +y_0=0 +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Ain el Abd / Aramco Lambert\",GEOGCS[\"Ain el A"); + add_srs_wkt (p, 1, + "bd\",DATUM[\"Ain_el_Abd_1970\",SPHEROID[\"International "); + add_srs_wkt (p, 2, + "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\",\"6204\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4204\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",17"); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_2\",33],PARAMETER[\"lati"); + add_srs_wkt (p, 9, + "tude_of_origin\",25.08951],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",48],PARAMETER[\"false_easting\",0],PARAMETER[\"false_no"); + add_srs_wkt (p, 11, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"2318\"]]"); + p = add_epsg_def (filter, first, last, 2319, "epsg", 2319, + "ED50 / TM27"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / TM27\",GEOGCS[\"ED50\",DATUM[\"European_"); + add_srs_wkt (p, 1, + "Datum_1950\",SPHEROID[\"International 1924\",6378388,297"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",27],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"2319\"]]"); + p = add_epsg_def (filter, first, last, 2320, "epsg", 2320, + "ED50 / TM30"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / TM30\",GEOGCS[\"ED50\",DATUM[\"European_"); + add_srs_wkt (p, 1, + "Datum_1950\",SPHEROID[\"International 1924\",6378388,297"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",30],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"2320\"]]"); + p = add_epsg_def (filter, first, last, 2321, "epsg", 2321, + "ED50 / TM33"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / TM33\",GEOGCS[\"ED50\",DATUM[\"European_"); + add_srs_wkt (p, 1, + "Datum_1950\",SPHEROID[\"International 1924\",6378388,297"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",33],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"2321\"]]"); + p = add_epsg_def (filter, first, last, 2322, "epsg", 2322, + "ED50 / TM36"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / TM36\",GEOGCS[\"ED50\",DATUM[\"European_"); + add_srs_wkt (p, 1, + "Datum_1950\",SPHEROID[\"International 1924\",6378388,297"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",36],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"2322\"]]"); + p = add_epsg_def (filter, first, last, 2323, "epsg", 2323, + "ED50 / TM39"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / TM39\",GEOGCS[\"ED50\",DATUM[\"European_"); + add_srs_wkt (p, 1, + "Datum_1950\",SPHEROID[\"International 1924\",6378388,297"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",39],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"2323\"]]"); + p = add_epsg_def (filter, first, last, 2324, "epsg", 2324, + "ED50 / TM42"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / TM42\",GEOGCS[\"ED50\",DATUM[\"European_"); + add_srs_wkt (p, 1, + "Datum_1950\",SPHEROID[\"International 1924\",6378388,297"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",42],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"2324\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_03.c b/src/spatialite/src/srsinit/epsg_inlined_03.c new file mode 100644 index 0000000..5c19b68 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_03.c @@ -0,0 +1,3164 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_03 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 2325, "epsg", 2325, + "ED50 / TM45"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / TM45\",GEOGCS[\"ED50\",DATUM[\"European_"); + add_srs_wkt (p, 1, + "Datum_1950\",SPHEROID[\"International 1924\",6378388,297"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",45],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"2325\"]]"); + p = add_epsg_def (filter, first, last, 2326, "epsg", 2326, + "Hong Kong 1980 Grid System"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=22.31213333333334 +lon_0=114.17855555"); + add_proj4text (p, 1, + "55556 +k=1 +x_0=836694.05 +y_0=819069.8 +ellps=intl +tow"); + add_proj4text (p, 2, + "gs84=-162.619,-276.959,-161.764,0.067753,-2.24365,-1.158"); + add_proj4text (p, 3, + "83,-1.09425 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Hong Kong 1980 Grid System\",GEOGCS[\"Hong Kong"); + add_srs_wkt (p, 1, + " 1980\",DATUM[\"Hong_Kong_1980\",SPHEROID[\"Internationa"); + add_srs_wkt (p, 2, + "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[-162.619,-276.959,-161.764,0.067753,-2.24365,-1.15883"); + add_srs_wkt (p, 4, + ",-1.09425],AUTHORITY[\"EPSG\",\"6611\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4611\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",22.31213333333334],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"central_meridian\",114.1785555555556],PARAMETER"); + add_srs_wkt (p, 10, + "[\"scale_factor\",1],PARAMETER[\"false_easting\",836694."); + add_srs_wkt (p, 11, + "05],PARAMETER[\"false_northing\",819069.8],UNIT[\"metre\""); + add_srs_wkt (p, 12, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 13, + "26\"]]"); + p = add_epsg_def (filter, first, last, 2327, "epsg", 2327, + "Xian 1980 / Gauss-Kruger zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0"); + add_proj4text (p, 1, + " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger zone 13\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",75],PARAMETER["); + add_srs_wkt (p, 8, + "\"scale_factor\",1],PARAMETER[\"false_easting\",13500000"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2327\"]]"); + p = add_epsg_def (filter, first, last, 2328, "epsg", 2328, + "Xian 1980 / Gauss-Kruger zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0"); + add_proj4text (p, 1, + " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger zone 14\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",81],PARAMETER["); + add_srs_wkt (p, 8, + "\"scale_factor\",1],PARAMETER[\"false_easting\",14500000"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2328\"]]"); + p = add_epsg_def (filter, first, last, 2329, "epsg", 2329, + "Xian 1980 / Gauss-Kruger zone 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0"); + add_proj4text (p, 1, + " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger zone 15\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",87],PARAMETER["); + add_srs_wkt (p, 8, + "\"scale_factor\",1],PARAMETER[\"false_easting\",15500000"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2329\"]]"); + p = add_epsg_def (filter, first, last, 2330, "epsg", 2330, + "Xian 1980 / Gauss-Kruger zone 16"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0"); + add_proj4text (p, 1, + " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger zone 16\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",93],PARAMETER["); + add_srs_wkt (p, 8, + "\"scale_factor\",1],PARAMETER[\"false_easting\",16500000"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2330\"]]"); + p = add_epsg_def (filter, first, last, 2331, "epsg", 2331, + "Xian 1980 / Gauss-Kruger zone 17"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0"); + add_proj4text (p, 1, + " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger zone 17\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",99],PARAMETER["); + add_srs_wkt (p, 8, + "\"scale_factor\",1],PARAMETER[\"false_easting\",17500000"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2331\"]]"); + p = add_epsg_def (filter, first, last, 2332, "epsg", 2332, + "Xian 1980 / Gauss-Kruger zone 18"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger zone 18\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",105],PARAMETER"); + add_srs_wkt (p, 8, + "[\"scale_factor\",1],PARAMETER[\"false_easting\",1850000"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 10, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2332\"]]"); + p = add_epsg_def (filter, first, last, 2333, "epsg", 2333, + "Xian 1980 / Gauss-Kruger zone 19"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger zone 19\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",111],PARAMETER"); + add_srs_wkt (p, 8, + "[\"scale_factor\",1],PARAMETER[\"false_easting\",1950000"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 10, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2333\"]]"); + p = add_epsg_def (filter, first, last, 2334, "epsg", 2334, + "Xian 1980 / Gauss-Kruger zone 20"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger zone 20\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",117],PARAMETER"); + add_srs_wkt (p, 8, + "[\"scale_factor\",1],PARAMETER[\"false_easting\",2050000"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 10, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2334\"]]"); + p = add_epsg_def (filter, first, last, 2335, "epsg", 2335, + "Xian 1980 / Gauss-Kruger zone 21"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger zone 21\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",123],PARAMETER"); + add_srs_wkt (p, 8, + "[\"scale_factor\",1],PARAMETER[\"false_easting\",2150000"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 10, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2335\"]]"); + p = add_epsg_def (filter, first, last, 2336, "epsg", 2336, + "Xian 1980 / Gauss-Kruger zone 22"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger zone 22\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",129],PARAMETER"); + add_srs_wkt (p, 8, + "[\"scale_factor\",1],PARAMETER[\"false_easting\",2250000"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 10, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2336\"]]"); + p = add_epsg_def (filter, first, last, 2337, "epsg", 2337, + "Xian 1980 / Gauss-Kruger zone 23"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger zone 23\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",135],PARAMETER"); + add_srs_wkt (p, 8, + "[\"scale_factor\",1],PARAMETER[\"false_easting\",2350000"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 10, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2337\"]]"); + p = add_epsg_def (filter, first, last, 2338, "epsg", 2338, + "Xian 1980 / Gauss-Kruger CM 75E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger CM 75E\",GEOGCS[\"Xian"); + add_srs_wkt (p, 1, + " 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",637814"); + add_srs_wkt (p, 2, + "0,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJEC"); + add_srs_wkt (p, 6, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 7, + "igin\",0],PARAMETER[\"central_meridian\",75],PARAMETER[\""); + add_srs_wkt (p, 8, + "scale_factor\",1],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 10, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2338\"]]"); + p = add_epsg_def (filter, first, last, 2339, "epsg", 2339, + "Xian 1980 / Gauss-Kruger CM 81E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger CM 81E\",GEOGCS[\"Xian"); + add_srs_wkt (p, 1, + " 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",637814"); + add_srs_wkt (p, 2, + "0,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJEC"); + add_srs_wkt (p, 6, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 7, + "igin\",0],PARAMETER[\"central_meridian\",81],PARAMETER[\""); + add_srs_wkt (p, 8, + "scale_factor\",1],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 10, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2339\"]]"); + p = add_epsg_def (filter, first, last, 2340, "epsg", 2340, + "Xian 1980 / Gauss-Kruger CM 87E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger CM 87E\",GEOGCS[\"Xian"); + add_srs_wkt (p, 1, + " 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",637814"); + add_srs_wkt (p, 2, + "0,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJEC"); + add_srs_wkt (p, 6, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 7, + "igin\",0],PARAMETER[\"central_meridian\",87],PARAMETER[\""); + add_srs_wkt (p, 8, + "scale_factor\",1],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 10, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2340\"]]"); + p = add_epsg_def (filter, first, last, 2341, "epsg", 2341, + "Xian 1980 / Gauss-Kruger CM 93E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger CM 93E\",GEOGCS[\"Xian"); + add_srs_wkt (p, 1, + " 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",637814"); + add_srs_wkt (p, 2, + "0,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJEC"); + add_srs_wkt (p, 6, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 7, + "igin\",0],PARAMETER[\"central_meridian\",93],PARAMETER[\""); + add_srs_wkt (p, 8, + "scale_factor\",1],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 10, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2341\"]]"); + p = add_epsg_def (filter, first, last, 2342, "epsg", 2342, + "Xian 1980 / Gauss-Kruger CM 99E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger CM 99E\",GEOGCS[\"Xian"); + add_srs_wkt (p, 1, + " 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",637814"); + add_srs_wkt (p, 2, + "0,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJEC"); + add_srs_wkt (p, 6, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 7, + "igin\",0],PARAMETER[\"central_meridian\",99],PARAMETER[\""); + add_srs_wkt (p, 8, + "scale_factor\",1],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 10, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2342\"]]"); + p = add_epsg_def (filter, first, last, 2343, "epsg", 2343, + "Xian 1980 / Gauss-Kruger CM 105E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger CM 105E\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",105],PARAMETER"); + add_srs_wkt (p, 8, + "[\"scale_factor\",1],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2343\"]]"); + p = add_epsg_def (filter, first, last, 2344, "epsg", 2344, + "Xian 1980 / Gauss-Kruger CM 111E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger CM 111E\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",111],PARAMETER"); + add_srs_wkt (p, 8, + "[\"scale_factor\",1],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2344\"]]"); + p = add_epsg_def (filter, first, last, 2345, "epsg", 2345, + "Xian 1980 / Gauss-Kruger CM 117E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger CM 117E\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",117],PARAMETER"); + add_srs_wkt (p, 8, + "[\"scale_factor\",1],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2345\"]]"); + p = add_epsg_def (filter, first, last, 2346, "epsg", 2346, + "Xian 1980 / Gauss-Kruger CM 123E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger CM 123E\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",123],PARAMETER"); + add_srs_wkt (p, 8, + "[\"scale_factor\",1],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2346\"]]"); + p = add_epsg_def (filter, first, last, 2347, "epsg", 2347, + "Xian 1980 / Gauss-Kruger CM 129E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger CM 129E\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",129],PARAMETER"); + add_srs_wkt (p, 8, + "[\"scale_factor\",1],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2347\"]]"); + p = add_epsg_def (filter, first, last, 2348, "epsg", 2348, + "Xian 1980 / Gauss-Kruger CM 135E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / Gauss-Kruger CM 135E\",GEOGCS[\"Xia"); + add_srs_wkt (p, 1, + "n 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975\",63781"); + add_srs_wkt (p, 2, + "40,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",135],PARAMETER"); + add_srs_wkt (p, 8, + "[\"scale_factor\",1],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2348\"]]"); + p = add_epsg_def (filter, first, last, 2349, "epsg", 2349, + "Xian 1980 / 3-degree Gauss-Kruger zone 25"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0"); + add_proj4text (p, 1, + " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 25\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",75],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "25500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "49\"]]"); + p = add_epsg_def (filter, first, last, 2350, "epsg", 2350, + "Xian 1980 / 3-degree Gauss-Kruger zone 26"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0"); + add_proj4text (p, 1, + " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 26\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",78],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "26500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "50\"]]"); + p = add_epsg_def (filter, first, last, 2351, "epsg", 2351, + "Xian 1980 / 3-degree Gauss-Kruger zone 27"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0"); + add_proj4text (p, 1, + " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 27\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",81],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "27500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "51\"]]"); + p = add_epsg_def (filter, first, last, 2352, "epsg", 2352, + "Xian 1980 / 3-degree Gauss-Kruger zone 28"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0"); + add_proj4text (p, 1, + " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 28\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",84],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "28500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "52\"]]"); + p = add_epsg_def (filter, first, last, 2353, "epsg", 2353, + "Xian 1980 / 3-degree Gauss-Kruger zone 29"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0"); + add_proj4text (p, 1, + " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 29\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",87],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "29500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "53\"]]"); + p = add_epsg_def (filter, first, last, 2354, "epsg", 2354, + "Xian 1980 / 3-degree Gauss-Kruger zone 30"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0"); + add_proj4text (p, 1, + " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 30\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",90],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "30500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "54\"]]"); + p = add_epsg_def (filter, first, last, 2355, "epsg", 2355, + "Xian 1980 / 3-degree Gauss-Kruger zone 31"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0"); + add_proj4text (p, 1, + " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 31\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",93],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "31500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "55\"]]"); + p = add_epsg_def (filter, first, last, 2356, "epsg", 2356, + "Xian 1980 / 3-degree Gauss-Kruger zone 32"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0"); + add_proj4text (p, 1, + " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 32\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",96],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "32500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "56\"]]"); + p = add_epsg_def (filter, first, last, 2357, "epsg", 2357, + "Xian 1980 / 3-degree Gauss-Kruger zone 33"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0"); + add_proj4text (p, 1, + " +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 33\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",99],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "33500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "57\"]]"); + p = add_epsg_def (filter, first, last, 2358, "epsg", 2358, + "Xian 1980 / 3-degree Gauss-Kruger zone 34"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 34\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",102],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",34500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "58\"]]"); + p = add_epsg_def (filter, first, last, 2359, "epsg", 2359, + "Xian 1980 / 3-degree Gauss-Kruger zone 35"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 35\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",105],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",35500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "59\"]]"); + p = add_epsg_def (filter, first, last, 2360, "epsg", 2360, + "Xian 1980 / 3-degree Gauss-Kruger zone 36"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 36\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",108],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",36500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "60\"]]"); + p = add_epsg_def (filter, first, last, 2361, "epsg", 2361, + "Xian 1980 / 3-degree Gauss-Kruger zone 37"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 37\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",111],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",37500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "61\"]]"); + p = add_epsg_def (filter, first, last, 2362, "epsg", 2362, + "Xian 1980 / 3-degree Gauss-Kruger zone 38"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 38\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",114],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",38500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "62\"]]"); + p = add_epsg_def (filter, first, last, 2363, "epsg", 2363, + "Xian 1980 / 3-degree Gauss-Kruger zone 39"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 39\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",117],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",39500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "63\"]]"); + p = add_epsg_def (filter, first, last, 2364, "epsg", 2364, + "Xian 1980 / 3-degree Gauss-Kruger zone 40"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 40\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",120],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",40500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "64\"]]"); + p = add_epsg_def (filter, first, last, 2365, "epsg", 2365, + "Xian 1980 / 3-degree Gauss-Kruger zone 41"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 41\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",123],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",41500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "65\"]]"); + p = add_epsg_def (filter, first, last, 2366, "epsg", 2366, + "Xian 1980 / 3-degree Gauss-Kruger zone 42"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 42\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",126],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",42500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "66\"]]"); + p = add_epsg_def (filter, first, last, 2367, "epsg", 2367, + "Xian 1980 / 3-degree Gauss-Kruger zone 43"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 43\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",129],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",43500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "67\"]]"); + p = add_epsg_def (filter, first, last, 2368, "epsg", 2368, + "Xian 1980 / 3-degree Gauss-Kruger zone 44"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 44\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",132],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",44500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "68\"]]"); + p = add_epsg_def (filter, first, last, 2369, "epsg", 2369, + "Xian 1980 / 3-degree Gauss-Kruger zone 45"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0="); + add_proj4text (p, 1, + "0 +a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger zone 45\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",135],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",45500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"23"); + add_srs_wkt (p, 11, + "69\"]]"); + p = add_epsg_def (filter, first, last, 2370, "epsg", 2370, + "Xian 1980 / 3-degree Gauss-Kruger CM 75E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 75E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); + add_srs_wkt (p, 2, + "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",75],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 10, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2370"); + add_srs_wkt (p, 11, + "\"]]"); + p = add_epsg_def (filter, first, last, 2371, "epsg", 2371, + "Xian 1980 / 3-degree Gauss-Kruger CM 78E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 78E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); + add_srs_wkt (p, 2, + "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",78],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 10, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2371"); + add_srs_wkt (p, 11, + "\"]]"); + p = add_epsg_def (filter, first, last, 2372, "epsg", 2372, + "Xian 1980 / 3-degree Gauss-Kruger CM 81E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 81E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); + add_srs_wkt (p, 2, + "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",81],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 10, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2372"); + add_srs_wkt (p, 11, + "\"]]"); + p = add_epsg_def (filter, first, last, 2373, "epsg", 2373, + "Xian 1980 / 3-degree Gauss-Kruger CM 84E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 84E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); + add_srs_wkt (p, 2, + "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",84],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 10, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2373"); + add_srs_wkt (p, 11, + "\"]]"); + p = add_epsg_def (filter, first, last, 2374, "epsg", 2374, + "Xian 1980 / 3-degree Gauss-Kruger CM 87E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 87E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); + add_srs_wkt (p, 2, + "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",87],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 10, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2374"); + add_srs_wkt (p, 11, + "\"]]"); + p = add_epsg_def (filter, first, last, 2375, "epsg", 2375, + "Xian 1980 / 3-degree Gauss-Kruger CM 90E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 90E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); + add_srs_wkt (p, 2, + "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",90],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 10, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2375"); + add_srs_wkt (p, 11, + "\"]]"); + p = add_epsg_def (filter, first, last, 2376, "epsg", 2376, + "Xian 1980 / 3-degree Gauss-Kruger CM 93E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 93E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); + add_srs_wkt (p, 2, + "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",93],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 10, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2376"); + add_srs_wkt (p, 11, + "\"]]"); + p = add_epsg_def (filter, first, last, 2377, "epsg", 2377, + "Xian 1980 / 3-degree Gauss-Kruger CM 96E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 96E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); + add_srs_wkt (p, 2, + "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",96],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 10, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2377"); + add_srs_wkt (p, 11, + "\"]]"); + p = add_epsg_def (filter, first, last, 2378, "epsg", 2378, + "Xian 1980 / 3-degree Gauss-Kruger CM 99E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 99E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 1975"); + add_srs_wkt (p, 2, + "\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",99],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 10, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2378"); + add_srs_wkt (p, 11, + "\"]]"); + p = add_epsg_def (filter, first, last, 2379, "epsg", 2379, + "Xian 1980 / 3-degree Gauss-Kruger CM 102E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 102E\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",102],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"237"); + add_srs_wkt (p, 11, + "9\"]]"); + p = add_epsg_def (filter, first, last, 2380, "epsg", 2380, + "Xian 1980 / 3-degree Gauss-Kruger CM 105E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 105E\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",105],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"238"); + add_srs_wkt (p, 11, + "0\"]]"); + p = add_epsg_def (filter, first, last, 2381, "epsg", 2381, + "Xian 1980 / 3-degree Gauss-Kruger CM 108E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 108E\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",108],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"238"); + add_srs_wkt (p, 11, + "1\"]]"); + p = add_epsg_def (filter, first, last, 2382, "epsg", 2382, + "Xian 1980 / 3-degree Gauss-Kruger CM 111E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 111E\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",111],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"238"); + add_srs_wkt (p, 11, + "2\"]]"); + p = add_epsg_def (filter, first, last, 2383, "epsg", 2383, + "Xian 1980 / 3-degree Gauss-Kruger CM 114E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 114E\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",114],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"238"); + add_srs_wkt (p, 11, + "3\"]]"); + p = add_epsg_def (filter, first, last, 2384, "epsg", 2384, + "Xian 1980 / 3-degree Gauss-Kruger CM 117E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 117E\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",117],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"238"); + add_srs_wkt (p, 11, + "4\"]]"); + p = add_epsg_def (filter, first, last, 2385, "epsg", 2385, + "Xian 1980 / 3-degree Gauss-Kruger CM 120E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 120E\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",120],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"238"); + add_srs_wkt (p, 11, + "5\"]]"); + p = add_epsg_def (filter, first, last, 2386, "epsg", 2386, + "Xian 1980 / 3-degree Gauss-Kruger CM 123E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 123E\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",123],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"238"); + add_srs_wkt (p, 11, + "6\"]]"); + p = add_epsg_def (filter, first, last, 2387, "epsg", 2387, + "Xian 1980 / 3-degree Gauss-Kruger CM 126E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 126E\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",126],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"238"); + add_srs_wkt (p, 11, + "7\"]]"); + p = add_epsg_def (filter, first, last, 2388, "epsg", 2388, + "Xian 1980 / 3-degree Gauss-Kruger CM 129E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 129E\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",129],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"238"); + add_srs_wkt (p, 11, + "8\"]]"); + p = add_epsg_def (filter, first, last, 2389, "epsg", 2389, + "Xian 1980 / 3-degree Gauss-Kruger CM 132E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 132E\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",132],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"238"); + add_srs_wkt (p, 11, + "9\"]]"); + p = add_epsg_def (filter, first, last, 2390, "epsg", 2390, + "Xian 1980 / 3-degree Gauss-Kruger CM 135E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+a=6378140 +b=6356755.288157528 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Xian 1980 / 3-degree Gauss-Kruger CM 135E\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG 197"); + add_srs_wkt (p, 2, + "5\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4610\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",135],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"239"); + add_srs_wkt (p, 11, + "0\"]]"); + p = add_epsg_def (filter, first, last, 2391, "epsg", 2391, + "KKJ / Finland zone 1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=1500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.34"); + add_proj4text (p, 2, + "5,-1.376,1.496 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"KKJ / Finland zone 1\",GEOGCS[\"KKJ\",DATUM[\"K"); + add_srs_wkt (p, 1, + "artastokoordinaattijarjestelma_1966\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.49"); + add_srs_wkt (p, 4, + "6],AUTHORITY[\"EPSG\",\"6123\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 6, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4123\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",21],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",1500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"2391\"]]"); + p = add_epsg_def (filter, first, last, 2392, "epsg", 2392, + "KKJ / Finland zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=2500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.34"); + add_proj4text (p, 2, + "5,-1.376,1.496 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"KKJ / Finland zone 2\",GEOGCS[\"KKJ\",DATUM[\"K"); + add_srs_wkt (p, 1, + "artastokoordinaattijarjestelma_1966\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.49"); + add_srs_wkt (p, 4, + "6],AUTHORITY[\"EPSG\",\"6123\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 6, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4123\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",24],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",2500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"2392\"]]"); + p = add_epsg_def (filter, first, last, 2393, "epsg", 2393, + "KKJ / Finland Uniform Coordinate System"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=3500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.34"); + add_proj4text (p, 2, + "5,-1.376,1.496 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"KKJ / Finland Uniform Coordinate System\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"KKJ\",DATUM[\"Kartastokoordinaattijarjestelma_1966\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7022\"]],TOWGS84[-96.062,-82.428,-121.753,4.801"); + add_srs_wkt (p, 4, + ",0.345,-1.376,1.496],AUTHORITY[\"EPSG\",\"6123\"]],PRIME"); + add_srs_wkt (p, 5, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 6, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 7, + ",AUTHORITY[\"EPSG\",\"4123\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 8, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 9, + "[\"central_meridian\",27],PARAMETER[\"scale_factor\",1],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",3500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AUTHORITY[\"EPSG\",\"2393\"]]"); + p = add_epsg_def (filter, first, last, 2394, "epsg", 2394, + "KKJ / Finland zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.34"); + add_proj4text (p, 2, + "5,-1.376,1.496 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"KKJ / Finland zone 4\",GEOGCS[\"KKJ\",DATUM[\"K"); + add_srs_wkt (p, 1, + "artastokoordinaattijarjestelma_1966\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.49"); + add_srs_wkt (p, 4, + "6],AUTHORITY[\"EPSG\",\"6123\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 6, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4123\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",30],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",4500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"2394\"]]"); + p = add_epsg_def (filter, first, last, 2395, "epsg", 2395, + "South Yemen / Gauss-Kruger zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"South Yemen / Gauss-Kruger zone 8\",GEOGCS[\"So"); + add_srs_wkt (p, 1, + "uth Yemen\",DATUM[\"South_Yemen\",SPHEROID[\"Krassowsky "); + add_srs_wkt (p, 2, + "1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[-76,-138,67,0,0,0,0],AUTHORITY[\"EPSG\",\"6164\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4164\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",45],PARAMETER[\"scale_factor\",1"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",8500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AUTHORITY[\"EPSG\",\"2395\"]]"); + p = add_epsg_def (filter, first, last, 2396, "epsg", 2396, + "South Yemen / Gauss-Kruger zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=-76,-138,67,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"South Yemen / Gauss-Kruger zone 9\",GEOGCS[\"So"); + add_srs_wkt (p, 1, + "uth Yemen\",DATUM[\"South_Yemen\",SPHEROID[\"Krassowsky "); + add_srs_wkt (p, 2, + "1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[-76,-138,67,0,0,0,0],AUTHORITY[\"EPSG\",\"6164\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4164\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",51],PARAMETER[\"scale_factor\",1"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",9500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AUTHORITY[\"EPSG\",\"2396\"]]"); + p = add_epsg_def (filter, first, last, 2397, "epsg", 2397, + "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",9],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",350"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2397\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2398, "epsg", 2398, + "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",12],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",45"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2398\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2399, "epsg", 2399, + "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 5"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",15],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",55"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2399\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2400, "epsg", 2400, + "RT90 2.5 gon W (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0="); + add_proj4text (p, 1, + "1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-"); + add_proj4text (p, 2, + "0.855,2.141,-7.023,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RT90 2.5 gon W (deprecated)\",GEOGCS[\"RT90\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Rikets_koordinatsystem_1990\",SPHEROID[\"Bessel 1"); + add_srs_wkt (p, 2, + "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); + add_srs_wkt (p, 3, + "]],TOWGS84[414.1,41.3,603.1,-0.855,2.141,-7.023,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6124\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4124"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",15.8"); + add_srs_wkt (p, 9, + "0827777777778],PARAMETER[\"scale_factor\",1],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",1500000],PARAMETER[\"false_northing\",0]"); + add_srs_wkt (p, 11, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"2400\"]]"); + p = add_epsg_def (filter, first, last, 2401, "epsg", 2401, + "Beijing 1954 / 3-degree Gauss-Kruger zone 25"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 25\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",75],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",255000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2401\"]]"); + p = add_epsg_def (filter, first, last, 2402, "epsg", 2402, + "Beijing 1954 / 3-degree Gauss-Kruger zone 26"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 26\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",78],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",265000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2402\"]]"); + p = add_epsg_def (filter, first, last, 2403, "epsg", 2403, + "Beijing 1954 / 3-degree Gauss-Kruger zone 27"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 27\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",81],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",275000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2403\"]]"); + p = add_epsg_def (filter, first, last, 2404, "epsg", 2404, + "Beijing 1954 / 3-degree Gauss-Kruger zone 28"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 28\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",84],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",285000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2404\"]]"); + p = add_epsg_def (filter, first, last, 2405, "epsg", 2405, + "Beijing 1954 / 3-degree Gauss-Kruger zone 29"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 29\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",87],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",295000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2405\"]]"); + p = add_epsg_def (filter, first, last, 2406, "epsg", 2406, + "Beijing 1954 / 3-degree Gauss-Kruger zone 30"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 30\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",90],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",305000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2406\"]]"); + p = add_epsg_def (filter, first, last, 2407, "epsg", 2407, + "Beijing 1954 / 3-degree Gauss-Kruger zone 31"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 31\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",93],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",315000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2407\"]]"); + p = add_epsg_def (filter, first, last, 2408, "epsg", 2408, + "Beijing 1954 / 3-degree Gauss-Kruger zone 32"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 32\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",96],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",325000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2408\"]]"); + p = add_epsg_def (filter, first, last, 2409, "epsg", 2409, + "Beijing 1954 / 3-degree Gauss-Kruger zone 33"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 33\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",99],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",335000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2409\"]]"); + p = add_epsg_def (filter, first, last, 2410, "epsg", 2410, + "Beijing 1954 / 3-degree Gauss-Kruger zone 34"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 34\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",102],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",34500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2410\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2411, "epsg", 2411, + "Beijing 1954 / 3-degree Gauss-Kruger zone 35"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 35\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",105],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",35500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2411\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2412, "epsg", 2412, + "Beijing 1954 / 3-degree Gauss-Kruger zone 36"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 36\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",108],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",36500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2412\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2413, "epsg", 2413, + "Beijing 1954 / 3-degree Gauss-Kruger zone 37"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 37\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",111],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",37500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2413\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2414, "epsg", 2414, + "Beijing 1954 / 3-degree Gauss-Kruger zone 38"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 38\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",114],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",38500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2414\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2415, "epsg", 2415, + "Beijing 1954 / 3-degree Gauss-Kruger zone 39"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 39\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",117],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",39500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2415\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2416, "epsg", 2416, + "Beijing 1954 / 3-degree Gauss-Kruger zone 40"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 40\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",120],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",40500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2416\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2417, "epsg", 2417, + "Beijing 1954 / 3-degree Gauss-Kruger zone 41"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 41\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",123],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",41500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2417\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2418, "epsg", 2418, + "Beijing 1954 / 3-degree Gauss-Kruger zone 42"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 42\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",126],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",42500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2418\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2419, "epsg", 2419, + "Beijing 1954 / 3-degree Gauss-Kruger zone 43"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 43\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",129],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",43500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2419\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2420, "epsg", 2420, + "Beijing 1954 / 3-degree Gauss-Kruger zone 44"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 44\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",132],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",44500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2420\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2421, "epsg", 2421, + "Beijing 1954 / 3-degree Gauss-Kruger zone 45"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger zone 45\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",135],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",45500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2421\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2422, "epsg", 2422, + "Beijing 1954 / 3-degree Gauss-Kruger CM 75E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 75E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",75],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2422\"]]"); + p = add_epsg_def (filter, first, last, 2423, "epsg", 2423, + "Beijing 1954 / 3-degree Gauss-Kruger CM 78E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 78E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",78],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2423\"]]"); + p = add_epsg_def (filter, first, last, 2424, "epsg", 2424, + "Beijing 1954 / 3-degree Gauss-Kruger CM 81E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 81E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",81],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2424\"]]"); + p = add_epsg_def (filter, first, last, 2425, "epsg", 2425, + "Beijing 1954 / 3-degree Gauss-Kruger CM 84E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 84E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",84],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2425\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_04.c b/src/spatialite/src/srsinit/epsg_inlined_04.c new file mode 100644 index 0000000..e80e580 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_04.c @@ -0,0 +1,3376 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_04 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 2426, "epsg", 2426, + "Beijing 1954 / 3-degree Gauss-Kruger CM 87E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 87E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",87],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2426\"]]"); + p = add_epsg_def (filter, first, last, 2427, "epsg", 2427, + "Beijing 1954 / 3-degree Gauss-Kruger CM 90E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 90E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",90],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2427\"]]"); + p = add_epsg_def (filter, first, last, 2428, "epsg", 2428, + "Beijing 1954 / 3-degree Gauss-Kruger CM 93E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 93E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",93],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2428\"]]"); + p = add_epsg_def (filter, first, last, 2429, "epsg", 2429, + "Beijing 1954 / 3-degree Gauss-Kruger CM 96E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 96E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",96],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2429\"]]"); + p = add_epsg_def (filter, first, last, 2430, "epsg", 2430, + "Beijing 1954 / 3-degree Gauss-Kruger CM 99E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 99E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",99],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",500000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2430\"]]"); + p = add_epsg_def (filter, first, last, 2431, "epsg", 2431, + "Beijing 1954 / 3-degree Gauss-Kruger CM 102E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 102E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",102],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2431\"]]"); + p = add_epsg_def (filter, first, last, 2432, "epsg", 2432, + "Beijing 1954 / 3-degree Gauss-Kruger CM 105E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 105E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",105],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2432\"]]"); + p = add_epsg_def (filter, first, last, 2433, "epsg", 2433, + "Beijing 1954 / 3-degree Gauss-Kruger CM 108E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 108E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",108],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2433\"]]"); + p = add_epsg_def (filter, first, last, 2434, "epsg", 2434, + "Beijing 1954 / 3-degree Gauss-Kruger CM 111E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 111E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",111],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2434\"]]"); + p = add_epsg_def (filter, first, last, 2435, "epsg", 2435, + "Beijing 1954 / 3-degree Gauss-Kruger CM 114E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 114E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",114],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2435\"]]"); + p = add_epsg_def (filter, first, last, 2436, "epsg", 2436, + "Beijing 1954 / 3-degree Gauss-Kruger CM 117E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 117E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",117],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2436\"]]"); + p = add_epsg_def (filter, first, last, 2437, "epsg", 2437, + "Beijing 1954 / 3-degree Gauss-Kruger CM 120E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 120E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",120],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2437\"]]"); + p = add_epsg_def (filter, first, last, 2438, "epsg", 2438, + "Beijing 1954 / 3-degree Gauss-Kruger CM 123E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 123E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",123],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2438\"]]"); + p = add_epsg_def (filter, first, last, 2439, "epsg", 2439, + "Beijing 1954 / 3-degree Gauss-Kruger CM 126E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 126E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",126],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2439\"]]"); + p = add_epsg_def (filter, first, last, 2440, "epsg", 2440, + "Beijing 1954 / 3-degree Gauss-Kruger CM 129E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 129E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",129],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2440\"]]"); + p = add_epsg_def (filter, first, last, 2441, "epsg", 2441, + "Beijing 1954 / 3-degree Gauss-Kruger CM 132E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 132E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",132],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2441\"]]"); + p = add_epsg_def (filter, first, last, 2442, "epsg", 2442, + "Beijing 1954 / 3-degree Gauss-Kruger CM 135E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / 3-degree Gauss-Kruger CM 135E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",135],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2442\"]]"); + p = add_epsg_def (filter, first, last, 2443, "epsg", 2443, + "JGD2000 / Japan Plane Rectangular CS I"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS I\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",33],PARAMETER[\"central_meridian\",129.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2443\"]]"); + p = add_epsg_def (filter, first, last, 2444, "epsg", 2444, + "JGD2000 / Japan Plane Rectangular CS II"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS II\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",33],PARAMETER[\"central_meridian\",131],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2444\"]]"); + p = add_epsg_def (filter, first, last, 2445, "epsg", 2445, + "JGD2000 / Japan Plane Rectangular CS III"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS III\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",36],PARAMETER[\"central_meridian\",132.166666666666"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2445\"]]"); + p = add_epsg_def (filter, first, last, 2446, "epsg", 2446, + "JGD2000 / Japan Plane Rectangular CS IV"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS IV\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",33],PARAMETER[\"central_meridian\",133.5],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2446\"]]"); + p = add_epsg_def (filter, first, last, 2447, "epsg", 2447, + "JGD2000 / Japan Plane Rectangular CS V"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS V\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",36],PARAMETER[\"central_meridian\",134.3333333333333"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2447\"]]"); + p = add_epsg_def (filter, first, last, 2448, "epsg", 2448, + "JGD2000 / Japan Plane Rectangular CS VI"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS VI\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",36],PARAMETER[\"central_meridian\",136],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2448\"]]"); + p = add_epsg_def (filter, first, last, 2449, "epsg", 2449, + "JGD2000 / Japan Plane Rectangular CS VII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS VII\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",36],PARAMETER[\"central_meridian\",137.166666666666"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2449\"]]"); + p = add_epsg_def (filter, first, last, 2450, "epsg", 2450, + "JGD2000 / Japan Plane Rectangular CS VIII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS VIII\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",36],PARAMETER[\"central_meridian\",138.5],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",0.9999],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2450\"]]"); + p = add_epsg_def (filter, first, last, 2451, "epsg", 2451, + "JGD2000 / Japan Plane Rectangular CS IX"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS IX\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",36],PARAMETER[\"central_meridian\",139.833333333333"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2451\"]]"); + p = add_epsg_def (filter, first, last, 2452, "epsg", 2452, + "JGD2000 / Japan Plane Rectangular CS X"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS X\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",40],PARAMETER[\"central_meridian\",140.8333333333333"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2452\"]]"); + p = add_epsg_def (filter, first, last, 2453, "epsg", 2453, + "JGD2000 / Japan Plane Rectangular CS XI"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XI\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",44],PARAMETER[\"central_meridian\",140.25],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2453\"]]"); + p = add_epsg_def (filter, first, last, 2454, "epsg", 2454, + "JGD2000 / Japan Plane Rectangular CS XII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XII\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",44],PARAMETER[\"central_meridian\",142.25],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2454\"]]"); + p = add_epsg_def (filter, first, last, 2455, "epsg", 2455, + "JGD2000 / Japan Plane Rectangular CS XIII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XIII\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",44],PARAMETER[\"central_meridian\",144.25],PARAME"); + add_srs_wkt (p, 9, + "TER[\"scale_factor\",0.9999],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2455\"]]"); + p = add_epsg_def (filter, first, last, 2456, "epsg", 2456, + "JGD2000 / Japan Plane Rectangular CS XIV"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XIV\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",26],PARAMETER[\"central_meridian\",142],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2456\"]]"); + p = add_epsg_def (filter, first, last, 2457, "epsg", 2457, + "JGD2000 / Japan Plane Rectangular CS XV"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XV\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",26],PARAMETER[\"central_meridian\",127.5],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2457\"]]"); + p = add_epsg_def (filter, first, last, 2458, "epsg", 2458, + "JGD2000 / Japan Plane Rectangular CS XVI"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XVI\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",26],PARAMETER[\"central_meridian\",124],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2458\"]]"); + p = add_epsg_def (filter, first, last, 2459, "epsg", 2459, + "JGD2000 / Japan Plane Rectangular CS XVII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XVII\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",26],PARAMETER[\"central_meridian\",131],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2459\"]]"); + p = add_epsg_def (filter, first, last, 2460, "epsg", 2460, + "JGD2000 / Japan Plane Rectangular CS XVIII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XVIII\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",20],PARAMETER[\"central_meridian\",136],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2460\"]]"); + p = add_epsg_def (filter, first, last, 2461, "epsg", 2461, + "JGD2000 / Japan Plane Rectangular CS XIX"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / Japan Plane Rectangular CS XIX\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",26],PARAMETER[\"central_meridian\",154],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2461\"]]"); + p = add_epsg_def (filter, first, last, 2462, "epsg", 2462, + "Albanian 1987 / Gauss-Kruger zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Albanian 1987 / Gauss-Kruger zone 4\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Albanian 1987\",DATUM[\"Albanian_1987\",SPHEROID[\"Krass"); + add_srs_wkt (p, 2, + "owsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6191\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4191\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",21],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 9, + "ting\",4500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 10, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"2462\"]]"); + p = add_epsg_def (filter, first, last, 2463, "epsg", 2463, + "Pulkovo 1995 / Gauss-Kruger CM 21E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 21E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",21],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2463\"]]"); + p = add_epsg_def (filter, first, last, 2464, "epsg", 2464, + "Pulkovo 1995 / Gauss-Kruger CM 27E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 27E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",27],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2464\"]]"); + p = add_epsg_def (filter, first, last, 2465, "epsg", 2465, + "Pulkovo 1995 / Gauss-Kruger CM 33E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 33E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",33],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2465\"]]"); + p = add_epsg_def (filter, first, last, 2466, "epsg", 2466, + "Pulkovo 1995 / Gauss-Kruger CM 39E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 39E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",39],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2466\"]]"); + p = add_epsg_def (filter, first, last, 2467, "epsg", 2467, + "Pulkovo 1995 / Gauss-Kruger CM 45E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 45E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",45],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2467\"]]"); + p = add_epsg_def (filter, first, last, 2468, "epsg", 2468, + "Pulkovo 1995 / Gauss-Kruger CM 51E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 51E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",51],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2468\"]]"); + p = add_epsg_def (filter, first, last, 2469, "epsg", 2469, + "Pulkovo 1995 / Gauss-Kruger CM 57E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 57E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",57],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2469\"]]"); + p = add_epsg_def (filter, first, last, 2470, "epsg", 2470, + "Pulkovo 1995 / Gauss-Kruger CM 63E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 63E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",63],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2470\"]]"); + p = add_epsg_def (filter, first, last, 2471, "epsg", 2471, + "Pulkovo 1995 / Gauss-Kruger CM 69E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 69E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",69],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2471\"]]"); + p = add_epsg_def (filter, first, last, 2472, "epsg", 2472, + "Pulkovo 1995 / Gauss-Kruger CM 75E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 75E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",75],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2472\"]]"); + p = add_epsg_def (filter, first, last, 2473, "epsg", 2473, + "Pulkovo 1995 / Gauss-Kruger CM 81E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 81E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",81],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2473\"]]"); + p = add_epsg_def (filter, first, last, 2474, "epsg", 2474, + "Pulkovo 1995 / Gauss-Kruger CM 87E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 87E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",87],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2474\"]]"); + p = add_epsg_def (filter, first, last, 2475, "epsg", 2475, + "Pulkovo 1995 / Gauss-Kruger CM 93E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 93E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",93],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2475\"]]"); + p = add_epsg_def (filter, first, last, 2476, "epsg", 2476, + "Pulkovo 1995 / Gauss-Kruger CM 99E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 99E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",99],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2476\"]]"); + p = add_epsg_def (filter, first, last, 2477, "epsg", 2477, + "Pulkovo 1995 / Gauss-Kruger CM 105E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 105E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",105],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2477\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2478, "epsg", 2478, + "Pulkovo 1995 / Gauss-Kruger CM 111E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 111E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",111],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2478\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2479, "epsg", 2479, + "Pulkovo 1995 / Gauss-Kruger CM 117E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 117E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",117],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2479\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2480, "epsg", 2480, + "Pulkovo 1995 / Gauss-Kruger CM 123E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 123E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",123],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2480\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2481, "epsg", 2481, + "Pulkovo 1995 / Gauss-Kruger CM 129E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 129E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",129],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2481\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2482, "epsg", 2482, + "Pulkovo 1995 / Gauss-Kruger CM 135E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 135E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",135],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2482\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2483, "epsg", 2483, + "Pulkovo 1995 / Gauss-Kruger CM 141E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 141E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",141],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2483\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2484, "epsg", 2484, + "Pulkovo 1995 / Gauss-Kruger CM 147E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 147E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",147],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2484\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2485, "epsg", 2485, + "Pulkovo 1995 / Gauss-Kruger CM 153E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 153E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",153],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2485\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2486, "epsg", 2486, + "Pulkovo 1995 / Gauss-Kruger CM 159E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 159E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",159],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2486\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2487, "epsg", 2487, + "Pulkovo 1995 / Gauss-Kruger CM 165E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 165E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",165],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2487\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2488, "epsg", 2488, + "Pulkovo 1995 / Gauss-Kruger CM 171E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 171E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",171],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2488\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2489, "epsg", 2489, + "Pulkovo 1995 / Gauss-Kruger CM 177E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 177E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",177],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2489\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2490, "epsg", 2490, + "Pulkovo 1995 / Gauss-Kruger CM 177W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 177W\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",-177],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2490\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2491, "epsg", 2491, + "Pulkovo 1995 / Gauss-Kruger CM 171W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger CM 171W\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",-171],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2491\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2492, "epsg", 2492, + "Pulkovo 1942 / Gauss-Kruger CM 9E (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +e"); + add_proj4text (p, 1, + "llps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0."); + add_proj4text (p, 2, + "12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 9E (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2492\"]]"); + p = add_epsg_def (filter, first, last, 2493, "epsg", 2493, + "Pulkovo 1942 / Gauss-Kruger CM 15E (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 15E (deprecated)"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.1"); + add_srs_wkt (p, 4, + "2],AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 6, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",15],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"2493\"]]"); + p = add_epsg_def (filter, first, last, 2494, "epsg", 2494, + "Pulkovo 1942 / Gauss-Kruger CM 21E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 21E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",21],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2494\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2495, "epsg", 2495, + "Pulkovo 1942 / Gauss-Kruger CM 27E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 27E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",27],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2495\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2496, "epsg", 2496, + "Pulkovo 1942 / Gauss-Kruger CM 33E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 33E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",33],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2496\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2497, "epsg", 2497, + "Pulkovo 1942 / Gauss-Kruger CM 39E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 39E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",39],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2497\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2498, "epsg", 2498, + "Pulkovo 1942 / Gauss-Kruger CM 45E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 45E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",45],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2498\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2499, "epsg", 2499, + "Pulkovo 1942 / Gauss-Kruger CM 51E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 51E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",51],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2499\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2500, "epsg", 2500, + "Pulkovo 1942 / Gauss-Kruger CM 57E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 57E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",57],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2500\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2501, "epsg", 2501, + "Pulkovo 1942 / Gauss-Kruger CM 63E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 63E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",63],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2501\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2502, "epsg", 2502, + "Pulkovo 1942 / Gauss-Kruger CM 69E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 69E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",69],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2502\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2503, "epsg", 2503, + "Pulkovo 1942 / Gauss-Kruger CM 75E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 75E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",75],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2503\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2504, "epsg", 2504, + "Pulkovo 1942 / Gauss-Kruger CM 81E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 81E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",81],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2504\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2505, "epsg", 2505, + "Pulkovo 1942 / Gauss-Kruger CM 87E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 87E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",87],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2505\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2506, "epsg", 2506, + "Pulkovo 1942 / Gauss-Kruger CM 93E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 93E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",93],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2506\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2507, "epsg", 2507, + "Pulkovo 1942 / Gauss-Kruger CM 99E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 99E\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",99],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2507\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 2508, "epsg", 2508, + "Pulkovo 1942 / Gauss-Kruger CM 105E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 105E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",105],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2508\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2509, "epsg", 2509, + "Pulkovo 1942 / Gauss-Kruger CM 111E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 111E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",111],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2509\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2510, "epsg", 2510, + "Pulkovo 1942 / Gauss-Kruger CM 117E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 117E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",117],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2510\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2511, "epsg", 2511, + "Pulkovo 1942 / Gauss-Kruger CM 123E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 123E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",123],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2511\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2512, "epsg", 2512, + "Pulkovo 1942 / Gauss-Kruger CM 129E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 129E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",129],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2512\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2513, "epsg", 2513, + "Pulkovo 1942 / Gauss-Kruger CM 135E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 135E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",135],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2513\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2514, "epsg", 2514, + "Pulkovo 1942 / Gauss-Kruger CM 141E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 141E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",141],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2514\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2515, "epsg", 2515, + "Pulkovo 1942 / Gauss-Kruger CM 147E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 147E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",147],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2515\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2516, "epsg", 2516, + "Pulkovo 1942 / Gauss-Kruger CM 153E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 153E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",153],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2516\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2517, "epsg", 2517, + "Pulkovo 1942 / Gauss-Kruger CM 159E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 159E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",159],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2517\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2518, "epsg", 2518, + "Pulkovo 1942 / Gauss-Kruger CM 165E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 165E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",165],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2518\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2519, "epsg", 2519, + "Pulkovo 1942 / Gauss-Kruger CM 171E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 171E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",171],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2519\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2520, "epsg", 2520, + "Pulkovo 1942 / Gauss-Kruger CM 177E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 177E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",177],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2520\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 2521, "epsg", 2521, + "Pulkovo 1942 / Gauss-Kruger CM 177W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 177W\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",-177],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2521"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 2522, "epsg", 2522, + "Pulkovo 1942 / Gauss-Kruger CM 171W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger CM 171W\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",-171],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2522"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 2523, "epsg", 2523, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 7\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",7500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2523\"]]"); + p = add_epsg_def (filter, first, last, 2524, "epsg", 2524, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 8\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); + add_srs_wkt (p, 9, + "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",8500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2524\"]]"); + p = add_epsg_def (filter, first, last, 2525, "epsg", 2525, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 9\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",9500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2525\"]]"); + p = add_epsg_def (filter, first, last, 2526, "epsg", 2526, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 10"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 10\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",10500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2526\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_05.c b/src/spatialite/src/srsinit/epsg_inlined_05.c new file mode 100644 index 0000000..bc7c0f3 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_05.c @@ -0,0 +1,3488 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_05 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 2527, "epsg", 2527, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 11"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 11\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",11500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2527\"]]"); + p = add_epsg_def (filter, first, last, 2528, "epsg", 2528, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 12\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",12500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2528\"]]"); + p = add_epsg_def (filter, first, last, 2529, "epsg", 2529, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 13\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",13500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2529\"]]"); + p = add_epsg_def (filter, first, last, 2530, "epsg", 2530, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 14\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); + add_srs_wkt (p, 9, + "2],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",14500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2530\"]]"); + p = add_epsg_def (filter, first, last, 2531, "epsg", 2531, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 15\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",15500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2531\"]]"); + p = add_epsg_def (filter, first, last, 2532, "epsg", 2532, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 16"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 16\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); + add_srs_wkt (p, 9, + "8],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",16500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2532\"]]"); + p = add_epsg_def (filter, first, last, 2533, "epsg", 2533, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 17"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 17\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",17500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2533\"]]"); + p = add_epsg_def (filter, first, last, 2534, "epsg", 2534, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 18"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 18\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); + add_srs_wkt (p, 9, + "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",18500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2534\"]]"); + p = add_epsg_def (filter, first, last, 2535, "epsg", 2535, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 19"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 19\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",19500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2535\"]]"); + p = add_epsg_def (filter, first, last, 2536, "epsg", 2536, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 20"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 20\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",20500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2536\"]]"); + p = add_epsg_def (filter, first, last, 2537, "epsg", 2537, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 21"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 21\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",21500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2537\"]]"); + p = add_epsg_def (filter, first, last, 2538, "epsg", 2538, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 22"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 22\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",22500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2538\"]]"); + p = add_epsg_def (filter, first, last, 2539, "epsg", 2539, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 23"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 23\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",23500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2539\"]]"); + p = add_epsg_def (filter, first, last, 2540, "epsg", 2540, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 24"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 24\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); + add_srs_wkt (p, 9, + "2],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",24500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2540\"]]"); + p = add_epsg_def (filter, first, last, 2541, "epsg", 2541, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 25"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 25\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",25500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2541\"]]"); + p = add_epsg_def (filter, first, last, 2542, "epsg", 2542, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 26"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 26\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); + add_srs_wkt (p, 9, + "8],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",26500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2542\"]]"); + p = add_epsg_def (filter, first, last, 2543, "epsg", 2543, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 27"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 27\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",27500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2543\"]]"); + p = add_epsg_def (filter, first, last, 2544, "epsg", 2544, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 28"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 28\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); + add_srs_wkt (p, 9, + "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",28500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2544\"]]"); + p = add_epsg_def (filter, first, last, 2545, "epsg", 2545, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 29"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 29\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",29500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2545\"]]"); + p = add_epsg_def (filter, first, last, 2546, "epsg", 2546, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 30"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 30\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",30500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2546\"]]"); + p = add_epsg_def (filter, first, last, 2547, "epsg", 2547, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 31"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 31\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",31500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2547\"]]"); + p = add_epsg_def (filter, first, last, 2548, "epsg", 2548, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 32"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 32\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",32500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2548\"]]"); + p = add_epsg_def (filter, first, last, 2549, "epsg", 2549, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 33"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 33\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",33500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2549\"]]"); + p = add_epsg_def (filter, first, last, 2550, "epsg", 2550, + "Samboja / UTM zone 50S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +south +ellps=bessel +towgs84=-404.78"); + add_proj4text (p, 1, + ",685.68,45.47,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Samboja / UTM zone 50S (deprecated)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Samboja\",DATUM[\"Samboja\",SPHEROID[\"Bessel 1841\",637"); + add_srs_wkt (p, 2, + "7397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[-404.78,685.68,45.47,0,0,0,0],AUTHORITY[\"EPSG\",\"61"); + add_srs_wkt (p, 4, + "25\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9108\"]],AUTHORITY[\"EPSG\",\"4125\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",117],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"2550\"]]"); + p = add_epsg_def (filter, first, last, 2551, "epsg", 2551, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 34"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 34\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "02],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",34500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2551\"]]"); + p = add_epsg_def (filter, first, last, 2552, "epsg", 2552, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 35"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 35\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "05],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",35500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2552\"]]"); + p = add_epsg_def (filter, first, last, 2553, "epsg", 2553, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 36"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 36\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "08],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",36500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2553\"]]"); + p = add_epsg_def (filter, first, last, 2554, "epsg", 2554, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 37"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 37\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "11],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",37500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2554\"]]"); + p = add_epsg_def (filter, first, last, 2555, "epsg", 2555, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 38"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 38\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "14],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",38500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2555\"]]"); + p = add_epsg_def (filter, first, last, 2556, "epsg", 2556, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 39"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 39\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "17],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",39500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2556\"]]"); + p = add_epsg_def (filter, first, last, 2557, "epsg", 2557, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 40"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 40\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "20],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",40500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2557\"]]"); + p = add_epsg_def (filter, first, last, 2558, "epsg", 2558, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 41"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 41\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "23],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",41500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2558\"]]"); + p = add_epsg_def (filter, first, last, 2559, "epsg", 2559, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 42"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 42\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "26],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",42500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2559\"]]"); + p = add_epsg_def (filter, first, last, 2560, "epsg", 2560, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 43"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 43\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "29],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",43500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2560\"]]"); + p = add_epsg_def (filter, first, last, 2561, "epsg", 2561, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 44"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 44\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "32],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",44500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2561\"]]"); + p = add_epsg_def (filter, first, last, 2562, "epsg", 2562, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 45"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 45\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "35],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",45500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2562\"]]"); + p = add_epsg_def (filter, first, last, 2563, "epsg", 2563, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 46"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 46\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "38],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",46500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2563\"]]"); + p = add_epsg_def (filter, first, last, 2564, "epsg", 2564, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 47"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 47\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "41],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",47500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2564\"]]"); + p = add_epsg_def (filter, first, last, 2565, "epsg", 2565, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 48"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 48\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "44],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",48500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2565\"]]"); + p = add_epsg_def (filter, first, last, 2566, "epsg", 2566, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 49"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 49\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "47],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",49500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2566\"]]"); + p = add_epsg_def (filter, first, last, 2567, "epsg", 2567, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 50"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 50\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "50],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",50500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2567\"]]"); + p = add_epsg_def (filter, first, last, 2568, "epsg", 2568, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 51"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 51\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "53],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",51500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2568\"]]"); + p = add_epsg_def (filter, first, last, 2569, "epsg", 2569, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 52"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 52\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "56],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",52500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2569\"]]"); + p = add_epsg_def (filter, first, last, 2570, "epsg", 2570, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 53"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 53\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "59],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",53500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2570\"]]"); + p = add_epsg_def (filter, first, last, 2571, "epsg", 2571, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 54"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 54\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "62],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",54500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2571\"]]"); + p = add_epsg_def (filter, first, last, 2572, "epsg", 2572, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 55"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 55\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "65],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",55500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2572\"]]"); + p = add_epsg_def (filter, first, last, 2573, "epsg", 2573, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 56"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 56\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "68],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",56500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2573\"]]"); + p = add_epsg_def (filter, first, last, 2574, "epsg", 2574, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 57"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 57\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "71],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",57500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2574\"]]"); + p = add_epsg_def (filter, first, last, 2575, "epsg", 2575, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 58"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 58\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "74],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",58500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2575\"]]"); + p = add_epsg_def (filter, first, last, 2576, "epsg", 2576, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 59"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 59\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "77],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",59500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2576\"]]"); + p = add_epsg_def (filter, first, last, 2577, "epsg", 2577, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 60 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 60 (d"); + add_srs_wkt (p, 1, + "eprecated)\",GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_194"); + add_srs_wkt (p, 2, + "2\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35"); + add_srs_wkt (p, 4, + ",0.82,-0.12],AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 5, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 6, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 7, + "TY[\"EPSG\",\"4284\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",180],PARAMETER[\"scale_factor\",1],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",60000000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"2577\"]]"); + p = add_epsg_def (filter, first, last, 2578, "epsg", 2578, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 61"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.8"); + add_proj4text (p, 2, + "2,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 61\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "177],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",61500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"2578\"]]"); + p = add_epsg_def (filter, first, last, 2579, "epsg", 2579, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 62"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.8"); + add_proj4text (p, 2, + "2,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 62\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "174],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",62500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"2579\"]]"); + p = add_epsg_def (filter, first, last, 2580, "epsg", 2580, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 63"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.8"); + add_proj4text (p, 2, + "2,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 63\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "171],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",63500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"2580\"]]"); + p = add_epsg_def (filter, first, last, 2581, "epsg", 2581, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 64"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.8"); + add_proj4text (p, 2, + "2,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 64\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "168],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",64500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"2581\"]]"); + p = add_epsg_def (filter, first, last, 2582, "epsg", 2582, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 21E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 21E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2582\"]]"); + p = add_epsg_def (filter, first, last, 2583, "epsg", 2583, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 24E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 24E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); + add_srs_wkt (p, 9, + "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2583\"]]"); + p = add_epsg_def (filter, first, last, 2584, "epsg", 2584, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 27E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 27E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2584\"]]"); + p = add_epsg_def (filter, first, last, 2585, "epsg", 2585, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 30E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 30E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2585\"]]"); + p = add_epsg_def (filter, first, last, 2586, "epsg", 2586, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 33E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 33E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2586\"]]"); + p = add_epsg_def (filter, first, last, 2587, "epsg", 2587, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 36E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 36E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2587\"]]"); + p = add_epsg_def (filter, first, last, 2588, "epsg", 2588, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 39E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 39E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2588\"]]"); + p = add_epsg_def (filter, first, last, 2589, "epsg", 2589, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 42E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 42E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); + add_srs_wkt (p, 9, + "2],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2589\"]]"); + p = add_epsg_def (filter, first, last, 2590, "epsg", 2590, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 45E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 45E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2590\"]]"); + p = add_epsg_def (filter, first, last, 2591, "epsg", 2591, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 48E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 48E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); + add_srs_wkt (p, 9, + "8],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2591\"]]"); + p = add_epsg_def (filter, first, last, 2592, "epsg", 2592, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 51E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 51E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2592\"]]"); + p = add_epsg_def (filter, first, last, 2593, "epsg", 2593, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 54E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 54E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); + add_srs_wkt (p, 9, + "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2593\"]]"); + p = add_epsg_def (filter, first, last, 2594, "epsg", 2594, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 57E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 57E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2594\"]]"); + p = add_epsg_def (filter, first, last, 2595, "epsg", 2595, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 60E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 60E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2595\"]]"); + p = add_epsg_def (filter, first, last, 2596, "epsg", 2596, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 63E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 63E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2596\"]]"); + p = add_epsg_def (filter, first, last, 2597, "epsg", 2597, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 66E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 66E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2597\"]]"); + p = add_epsg_def (filter, first, last, 2598, "epsg", 2598, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 69E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 69E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2598\"]]"); + p = add_epsg_def (filter, first, last, 2599, "epsg", 2599, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 72E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 72E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); + add_srs_wkt (p, 9, + "2],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2599\"]]"); + p = add_epsg_def (filter, first, last, 2600, "epsg", 2600, + "Lietuvos Koordinoei Sistema 1994 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Lietuvos Koordinoei Sistema 1994 (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"LKS94\",DATUM[\"Lithuania_1994_ETRS89\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6126\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4669\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",24],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9998],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2600\"]]"); + p = add_epsg_def (filter, first, last, 2601, "epsg", 2601, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 75E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 75E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2601\"]]"); + p = add_epsg_def (filter, first, last, 2602, "epsg", 2602, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 78E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 78E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); + add_srs_wkt (p, 9, + "8],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2602\"]]"); + p = add_epsg_def (filter, first, last, 2603, "epsg", 2603, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 81E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 81E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2603\"]]"); + p = add_epsg_def (filter, first, last, 2604, "epsg", 2604, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 84E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 84E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); + add_srs_wkt (p, 9, + "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2604\"]]"); + p = add_epsg_def (filter, first, last, 2605, "epsg", 2605, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 87E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 87E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2605\"]]"); + p = add_epsg_def (filter, first, last, 2606, "epsg", 2606, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 90E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 90E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2606\"]]"); + p = add_epsg_def (filter, first, last, 2607, "epsg", 2607, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 93E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 93E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2607\"]]"); + p = add_epsg_def (filter, first, last, 2608, "epsg", 2608, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 96E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 96E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2608\"]]"); + p = add_epsg_def (filter, first, last, 2609, "epsg", 2609, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 99E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 99E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2609\"]]"); + p = add_epsg_def (filter, first, last, 2610, "epsg", 2610, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 102E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 102E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "02],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2610\"]]"); + p = add_epsg_def (filter, first, last, 2611, "epsg", 2611, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 105E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 105E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "05],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2611\"]]"); + p = add_epsg_def (filter, first, last, 2612, "epsg", 2612, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 108E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 108E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "08],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2612\"]]"); + p = add_epsg_def (filter, first, last, 2613, "epsg", 2613, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 111E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 111E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "11],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2613\"]]"); + p = add_epsg_def (filter, first, last, 2614, "epsg", 2614, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 114E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 114E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "14],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2614\"]]"); + p = add_epsg_def (filter, first, last, 2615, "epsg", 2615, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 117E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 117E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "17],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2615\"]]"); + p = add_epsg_def (filter, first, last, 2616, "epsg", 2616, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 120E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 120E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "20],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2616\"]]"); + p = add_epsg_def (filter, first, last, 2617, "epsg", 2617, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 123E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 123E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "23],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2617\"]]"); + p = add_epsg_def (filter, first, last, 2618, "epsg", 2618, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 126E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 126E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "26],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2618\"]]"); + p = add_epsg_def (filter, first, last, 2619, "epsg", 2619, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 129E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 129E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "29],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2619\"]]"); + p = add_epsg_def (filter, first, last, 2620, "epsg", 2620, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 132E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 132E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "32],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2620\"]]"); + p = add_epsg_def (filter, first, last, 2621, "epsg", 2621, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 135E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 135E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "35],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2621\"]]"); + p = add_epsg_def (filter, first, last, 2622, "epsg", 2622, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 138E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 138E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "38],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2622\"]]"); + p = add_epsg_def (filter, first, last, 2623, "epsg", 2623, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 141E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 141E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "41],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2623\"]]"); + p = add_epsg_def (filter, first, last, 2624, "epsg", 2624, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 144E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 144E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "44],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2624\"]]"); + p = add_epsg_def (filter, first, last, 2625, "epsg", 2625, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 147E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 147E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "47],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2625\"]]"); + p = add_epsg_def (filter, first, last, 2626, "epsg", 2626, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 150E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 150E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "50],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2626\"]]"); + p = add_epsg_def (filter, first, last, 2627, "epsg", 2627, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 153E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 153E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "53],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2627\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_06.c b/src/spatialite/src/srsinit/epsg_inlined_06.c new file mode 100644 index 0000000..43cd909 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_06.c @@ -0,0 +1,3492 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_06 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 2628, "epsg", 2628, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 156E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 156E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "56],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2628\"]]"); + p = add_epsg_def (filter, first, last, 2629, "epsg", 2629, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 159E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 159E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "59],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2629\"]]"); + p = add_epsg_def (filter, first, last, 2630, "epsg", 2630, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 162E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 162E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "62],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2630\"]]"); + p = add_epsg_def (filter, first, last, 2631, "epsg", 2631, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 165E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 165E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "65],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2631\"]]"); + p = add_epsg_def (filter, first, last, 2632, "epsg", 2632, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 168E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 168E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "68],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2632\"]]"); + p = add_epsg_def (filter, first, last, 2633, "epsg", 2633, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 171E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 171E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "71],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2633\"]]"); + p = add_epsg_def (filter, first, last, 2634, "epsg", 2634, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 174E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 174E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "74],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2634\"]]"); + p = add_epsg_def (filter, first, last, 2635, "epsg", 2635, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 177E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 177E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "77],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2635\"]]"); + p = add_epsg_def (filter, first, last, 2636, "epsg", 2636, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 180E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 180E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "80],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2636\"]]"); + p = add_epsg_def (filter, first, last, 2637, "epsg", 2637, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 177W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 177W\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "177],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2637\"]]"); + p = add_epsg_def (filter, first, last, 2638, "epsg", 2638, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 174W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 174W\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "174],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2638\"]]"); + p = add_epsg_def (filter, first, last, 2639, "epsg", 2639, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 171W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 171W\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "171],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2639\"]]"); + p = add_epsg_def (filter, first, last, 2640, "epsg", 2640, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 168W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 168W\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "168],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2640\"]]"); + p = add_epsg_def (filter, first, last, 2641, "epsg", 2641, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 7\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",21"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",7500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2641\"]]"); + p = add_epsg_def (filter, first, last, 2642, "epsg", 2642, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 8\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",24"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",8500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2642\"]]"); + p = add_epsg_def (filter, first, last, 2643, "epsg", 2643, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 9\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",27"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",9500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2643\"]]"); + p = add_epsg_def (filter, first, last, 2644, "epsg", 2644, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 10"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 10\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",10500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2644\"]]"); + p = add_epsg_def (filter, first, last, 2645, "epsg", 2645, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 11"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 11\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",11500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2645\"]]"); + p = add_epsg_def (filter, first, last, 2646, "epsg", 2646, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 12\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",12500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2646\"]]"); + p = add_epsg_def (filter, first, last, 2647, "epsg", 2647, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 13\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",13500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2647\"]]"); + p = add_epsg_def (filter, first, last, 2648, "epsg", 2648, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 14\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); + add_srs_wkt (p, 9, + "2],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",14500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2648\"]]"); + p = add_epsg_def (filter, first, last, 2649, "epsg", 2649, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 15\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",15500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2649\"]]"); + p = add_epsg_def (filter, first, last, 2650, "epsg", 2650, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 16"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=16500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 16\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); + add_srs_wkt (p, 9, + "8],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",16500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2650\"]]"); + p = add_epsg_def (filter, first, last, 2651, "epsg", 2651, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 17"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=17500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 17\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",17500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2651\"]]"); + p = add_epsg_def (filter, first, last, 2652, "epsg", 2652, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 18"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=18500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 18\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); + add_srs_wkt (p, 9, + "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",18500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2652\"]]"); + p = add_epsg_def (filter, first, last, 2653, "epsg", 2653, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 19"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=19500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 19\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",19500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2653\"]]"); + p = add_epsg_def (filter, first, last, 2654, "epsg", 2654, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 20"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=20500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 20\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",20500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2654\"]]"); + p = add_epsg_def (filter, first, last, 2655, "epsg", 2655, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 21"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=21500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 21\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",21500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2655\"]]"); + p = add_epsg_def (filter, first, last, 2656, "epsg", 2656, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 22"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=22500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 22\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",22500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2656\"]]"); + p = add_epsg_def (filter, first, last, 2657, "epsg", 2657, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 23"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=23500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 23\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",23500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2657\"]]"); + p = add_epsg_def (filter, first, last, 2658, "epsg", 2658, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 24"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=24500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 24\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); + add_srs_wkt (p, 9, + "2],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",24500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2658\"]]"); + p = add_epsg_def (filter, first, last, 2659, "epsg", 2659, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 25"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 25\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",25500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2659\"]]"); + p = add_epsg_def (filter, first, last, 2660, "epsg", 2660, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 26"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 26\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); + add_srs_wkt (p, 9, + "8],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",26500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2660\"]]"); + p = add_epsg_def (filter, first, last, 2661, "epsg", 2661, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 27"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 27\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",27500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2661\"]]"); + p = add_epsg_def (filter, first, last, 2662, "epsg", 2662, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 28"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 28\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); + add_srs_wkt (p, 9, + "4],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",28500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2662\"]]"); + p = add_epsg_def (filter, first, last, 2663, "epsg", 2663, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 29"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 29\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",29500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2663\"]]"); + p = add_epsg_def (filter, first, last, 2664, "epsg", 2664, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 30"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 30\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",30500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2664\"]]"); + p = add_epsg_def (filter, first, last, 2665, "epsg", 2665, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 31"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 31\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",31500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2665\"]]"); + p = add_epsg_def (filter, first, last, 2666, "epsg", 2666, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 32"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 32\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",32500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2666\"]]"); + p = add_epsg_def (filter, first, last, 2667, "epsg", 2667, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 33"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 33\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",33500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2667\"]]"); + p = add_epsg_def (filter, first, last, 2668, "epsg", 2668, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 34"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 34\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "02],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",34500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2668\"]]"); + p = add_epsg_def (filter, first, last, 2669, "epsg", 2669, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 35"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 35\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "05],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",35500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2669\"]]"); + p = add_epsg_def (filter, first, last, 2670, "epsg", 2670, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 36"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 36\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "08],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",36500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2670\"]]"); + p = add_epsg_def (filter, first, last, 2671, "epsg", 2671, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 37"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 37\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "11],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",37500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2671\"]]"); + p = add_epsg_def (filter, first, last, 2672, "epsg", 2672, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 38"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 38\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "14],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",38500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2672\"]]"); + p = add_epsg_def (filter, first, last, 2673, "epsg", 2673, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 39"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 39\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "17],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",39500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2673\"]]"); + p = add_epsg_def (filter, first, last, 2674, "epsg", 2674, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 40"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 40\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "20],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",40500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2674\"]]"); + p = add_epsg_def (filter, first, last, 2675, "epsg", 2675, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 41"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 41\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "23],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",41500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2675\"]]"); + p = add_epsg_def (filter, first, last, 2676, "epsg", 2676, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 42"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 42\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "26],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",42500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2676\"]]"); + p = add_epsg_def (filter, first, last, 2677, "epsg", 2677, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 43"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 43\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "29],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",43500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2677\"]]"); + p = add_epsg_def (filter, first, last, 2678, "epsg", 2678, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 44"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 44\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "32],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",44500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2678\"]]"); + p = add_epsg_def (filter, first, last, 2679, "epsg", 2679, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 45"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 45\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "35],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",45500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2679\"]]"); + p = add_epsg_def (filter, first, last, 2680, "epsg", 2680, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 46"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=46500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 46\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "38],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",46500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2680\"]]"); + p = add_epsg_def (filter, first, last, 2681, "epsg", 2681, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 47"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=47500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 47\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "41],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",47500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2681\"]]"); + p = add_epsg_def (filter, first, last, 2682, "epsg", 2682, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 48"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=48500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 48\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "44],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",48500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2682\"]]"); + p = add_epsg_def (filter, first, last, 2683, "epsg", 2683, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 49"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=49500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 49\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "47],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",49500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2683\"]]"); + p = add_epsg_def (filter, first, last, 2684, "epsg", 2684, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 50"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=50500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 50\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "50],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",50500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2684\"]]"); + p = add_epsg_def (filter, first, last, 2685, "epsg", 2685, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 51"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=51500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 51\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "53],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",51500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2685\"]]"); + p = add_epsg_def (filter, first, last, 2686, "epsg", 2686, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 52"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=52500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 52\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "56],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",52500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2686\"]]"); + p = add_epsg_def (filter, first, last, 2687, "epsg", 2687, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 53"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=53500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 53\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "59],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",53500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2687\"]]"); + p = add_epsg_def (filter, first, last, 2688, "epsg", 2688, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 54"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=54500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 54\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "62],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",54500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2688\"]]"); + p = add_epsg_def (filter, first, last, 2689, "epsg", 2689, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 55"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=55500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 55\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "65],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",55500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2689\"]]"); + p = add_epsg_def (filter, first, last, 2690, "epsg", 2690, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 56"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=56500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 56\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "68],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",56500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2690\"]]"); + p = add_epsg_def (filter, first, last, 2691, "epsg", 2691, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 57"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=57500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 57\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "71],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",57500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2691\"]]"); + p = add_epsg_def (filter, first, last, 2692, "epsg", 2692, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 58"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=58500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 58\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "74],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",58500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2692\"]]"); + p = add_epsg_def (filter, first, last, 2693, "epsg", 2693, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 59"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=59500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 59\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "77],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",59500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2693\"]]"); + p = add_epsg_def (filter, first, last, 2694, "epsg", 2694, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 60 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60000000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 60 (d"); + add_srs_wkt (p, 1, + "eprecated)\",GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_199"); + add_srs_wkt (p, 2, + "5\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,"); + add_srs_wkt (p, 4, + "0.13,-0.22],AUTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4200\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",180],PARAMETER[\"scale_factor\",1],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",60000000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"2694\"]]"); + p = add_epsg_def (filter, first, last, 2695, "epsg", 2695, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 61"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=61500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13"); + add_proj4text (p, 2, + ",-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 61\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "177],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",61500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"2695\"]]"); + p = add_epsg_def (filter, first, last, 2696, "epsg", 2696, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 62"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=62500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13"); + add_proj4text (p, 2, + ",-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 62\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "174],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",62500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"2696\"]]"); + p = add_epsg_def (filter, first, last, 2697, "epsg", 2697, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 63"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=63500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13"); + add_proj4text (p, 2, + ",-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 63\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "171],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",63500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"2697\"]]"); + p = add_epsg_def (filter, first, last, 2698, "epsg", 2698, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 64"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=64500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13"); + add_proj4text (p, 2, + ",-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 64\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "168],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",64500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"2698\"]]"); + p = add_epsg_def (filter, first, last, 2699, "epsg", 2699, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 21E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 21E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",21"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2699\"]]"); + p = add_epsg_def (filter, first, last, 2700, "epsg", 2700, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 24E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 24E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",24"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2700\"]]"); + p = add_epsg_def (filter, first, last, 2701, "epsg", 2701, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 27E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 27E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",27"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2701\"]]"); + p = add_epsg_def (filter, first, last, 2702, "epsg", 2702, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 30E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 30E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",30"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2702\"]]"); + p = add_epsg_def (filter, first, last, 2703, "epsg", 2703, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 33E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 33E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",33"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2703\"]]"); + p = add_epsg_def (filter, first, last, 2704, "epsg", 2704, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 36E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 36E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",36"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2704\"]]"); + p = add_epsg_def (filter, first, last, 2705, "epsg", 2705, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 39E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 39E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",39"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2705\"]]"); + p = add_epsg_def (filter, first, last, 2706, "epsg", 2706, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 42E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 42E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",42"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2706\"]]"); + p = add_epsg_def (filter, first, last, 2707, "epsg", 2707, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 45E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 45E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",45"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2707\"]]"); + p = add_epsg_def (filter, first, last, 2708, "epsg", 2708, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 48E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 48E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",48"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2708\"]]"); + p = add_epsg_def (filter, first, last, 2709, "epsg", 2709, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 51E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 51E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",51"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2709\"]]"); + p = add_epsg_def (filter, first, last, 2710, "epsg", 2710, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 54E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=54 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 54E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",54"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2710\"]]"); + p = add_epsg_def (filter, first, last, 2711, "epsg", 2711, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 57E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 57E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",57"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2711\"]]"); + p = add_epsg_def (filter, first, last, 2712, "epsg", 2712, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 60E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=60 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 60E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",60"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2712\"]]"); + p = add_epsg_def (filter, first, last, 2713, "epsg", 2713, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 63E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 63E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",63"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2713\"]]"); + p = add_epsg_def (filter, first, last, 2714, "epsg", 2714, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 66E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=66 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 66E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",66"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2714\"]]"); + p = add_epsg_def (filter, first, last, 2715, "epsg", 2715, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 69E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 69E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",69"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2715\"]]"); + p = add_epsg_def (filter, first, last, 2716, "epsg", 2716, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 72E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=72 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 72E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",72"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2716\"]]"); + p = add_epsg_def (filter, first, last, 2717, "epsg", 2717, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 75E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 75E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",75"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2717\"]]"); + p = add_epsg_def (filter, first, last, 2718, "epsg", 2718, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 78E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 78E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",78"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2718\"]]"); + p = add_epsg_def (filter, first, last, 2719, "epsg", 2719, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 81E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 81E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",81"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2719\"]]"); + p = add_epsg_def (filter, first, last, 2720, "epsg", 2720, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 84E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 84E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",84"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2720\"]]"); + p = add_epsg_def (filter, first, last, 2721, "epsg", 2721, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 87E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 87E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",87"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2721\"]]"); + p = add_epsg_def (filter, first, last, 2722, "epsg", 2722, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 90E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 90E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",90"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2722\"]]"); + p = add_epsg_def (filter, first, last, 2723, "epsg", 2723, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 93E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 93E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",93"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2723\"]]"); + p = add_epsg_def (filter, first, last, 2724, "epsg", 2724, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 96E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 96E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",96"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2724\"]]"); + p = add_epsg_def (filter, first, last, 2725, "epsg", 2725, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 99E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 99E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",99"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "2725\"]]"); + p = add_epsg_def (filter, first, last, 2726, "epsg", 2726, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 102E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 102E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "02],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2726\"]]"); + p = add_epsg_def (filter, first, last, 2727, "epsg", 2727, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 105E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 105E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "05],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2727\"]]"); + p = add_epsg_def (filter, first, last, 2728, "epsg", 2728, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 108E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 108E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "08],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2728\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_07.c b/src/spatialite/src/srsinit/epsg_inlined_07.c new file mode 100644 index 0000000..e1cda86 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_07.c @@ -0,0 +1,3662 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_07 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 2729, "epsg", 2729, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 111E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 111E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "11],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2729\"]]"); + p = add_epsg_def (filter, first, last, 2730, "epsg", 2730, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 114E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 114E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "14],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2730\"]]"); + p = add_epsg_def (filter, first, last, 2731, "epsg", 2731, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 117E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 117E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "17],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2731\"]]"); + p = add_epsg_def (filter, first, last, 2732, "epsg", 2732, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 120E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 120E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "20],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2732\"]]"); + p = add_epsg_def (filter, first, last, 2733, "epsg", 2733, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 123E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 123E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "23],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2733\"]]"); + p = add_epsg_def (filter, first, last, 2734, "epsg", 2734, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 126E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 126E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "26],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2734\"]]"); + p = add_epsg_def (filter, first, last, 2735, "epsg", 2735, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 129E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 129E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "29],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2735\"]]"); + p = add_epsg_def (filter, first, last, 2736, "epsg", 2736, + "Tete / UTM zone 36S"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +south +ellps=clrk66 +towgs84=-73.472"); + add_proj4text (p, 1, + ",-51.66,-112.482,0.953,4.6,-2.368,0.586 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Tete / UTM zone 36S\",GEOGCS[\"Tete\",DATUM[\"T"); + add_srs_wkt (p, 1, + "ete\",SPHEROID[\"Clarke 1866\",6378206.4,294.97869821390"); + add_srs_wkt (p, 2, + "06,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[-73.472,-51.66,"); + add_srs_wkt (p, 3, + "-112.482,0.953,4.6,-2.368,0.586],AUTHORITY[\"EPSG\",\"61"); + add_srs_wkt (p, 4, + "27\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4127\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",33],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"2736\"]]"); + p = add_epsg_def (filter, first, last, 2737, "epsg", 2737, + "Tete / UTM zone 37S"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +south +ellps=clrk66 +towgs84=-73.472"); + add_proj4text (p, 1, + ",-51.66,-112.482,0.953,4.6,-2.368,0.586 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Tete / UTM zone 37S\",GEOGCS[\"Tete\",DATUM[\"T"); + add_srs_wkt (p, 1, + "ete\",SPHEROID[\"Clarke 1866\",6378206.4,294.97869821390"); + add_srs_wkt (p, 2, + "06,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[-73.472,-51.66,"); + add_srs_wkt (p, 3, + "-112.482,0.953,4.6,-2.368,0.586],AUTHORITY[\"EPSG\",\"61"); + add_srs_wkt (p, 4, + "27\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4127\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",39],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"2737\"]]"); + p = add_epsg_def (filter, first, last, 2738, "epsg", 2738, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 132E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 132E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "32],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2738\"]]"); + p = add_epsg_def (filter, first, last, 2739, "epsg", 2739, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 135E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 135E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "35],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2739\"]]"); + p = add_epsg_def (filter, first, last, 2740, "epsg", 2740, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 138E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=138 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 138E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "38],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2740\"]]"); + p = add_epsg_def (filter, first, last, 2741, "epsg", 2741, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 141E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 141E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "41],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2741\"]]"); + p = add_epsg_def (filter, first, last, 2742, "epsg", 2742, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 144E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=144 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 144E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "44],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2742\"]]"); + p = add_epsg_def (filter, first, last, 2743, "epsg", 2743, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 147E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 147E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "47],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2743\"]]"); + p = add_epsg_def (filter, first, last, 2744, "epsg", 2744, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 150E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=150 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 150E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "50],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2744\"]]"); + p = add_epsg_def (filter, first, last, 2745, "epsg", 2745, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 153E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 153E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "53],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2745\"]]"); + p = add_epsg_def (filter, first, last, 2746, "epsg", 2746, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 156E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=156 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 156E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "56],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2746\"]]"); + p = add_epsg_def (filter, first, last, 2747, "epsg", 2747, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 159E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 159E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "59],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2747\"]]"); + p = add_epsg_def (filter, first, last, 2748, "epsg", 2748, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 162E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=162 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 162E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "62],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2748\"]]"); + p = add_epsg_def (filter, first, last, 2749, "epsg", 2749, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 165E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 165E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "65],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2749\"]]"); + p = add_epsg_def (filter, first, last, 2750, "epsg", 2750, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 168E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=168 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 168E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "68],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2750\"]]"); + p = add_epsg_def (filter, first, last, 2751, "epsg", 2751, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 171E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 171E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "71],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2751\"]]"); + p = add_epsg_def (filter, first, last, 2752, "epsg", 2752, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 174E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=174 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 174E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "74],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2752\"]]"); + p = add_epsg_def (filter, first, last, 2753, "epsg", 2753, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 177E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 177E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "77],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2753\"]]"); + p = add_epsg_def (filter, first, last, 2754, "epsg", 2754, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 180E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 180E\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "80],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"2754\"]]"); + p = add_epsg_def (filter, first, last, 2755, "epsg", 2755, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 177W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 177W\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "177],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2755\"]]"); + p = add_epsg_def (filter, first, last, 2756, "epsg", 2756, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 174W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-174 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 174W\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "174],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2756\"]]"); + p = add_epsg_def (filter, first, last, 2757, "epsg", 2757, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 171W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 171W\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "171],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2757\"]]"); + p = add_epsg_def (filter, first, last, 2758, "epsg", 2758, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 168W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-168 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 168W\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "168],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"2758\"]]"); + p = add_epsg_def (filter, first, last, 2759, "epsg", 2759, + "NAD83(HARN) / Alabama East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.9"); + add_proj4text (p, 1, + "9996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Alabama East\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",30.5],PARAMETER[\"central_meridian\",-85.8333333333"); + add_srs_wkt (p, 9, + "3333],PARAMETER[\"scale_factor\",0.99996],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",200000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); + add_srs_wkt (p, 12, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2759\"]]"); + p = add_epsg_def (filter, first, last, 2760, "epsg", 2760, + "NAD83(HARN) / Alabama West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=6"); + add_proj4text (p, 1, + "00000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Alabama West\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",30],PARAMETER[\"central_meridian\",-87.5],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.999933333],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"2760\"]]"); + p = add_epsg_def (filter, first, last, 2761, "epsg", 2761, + "NAD83(HARN) / Arizona East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Arizona East\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",31],PARAMETER[\"central_meridian\",-110.16666666666"); + add_srs_wkt (p, 9, + "67],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",213360],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 12, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2761\"]]"); + p = add_epsg_def (filter, first, last, 2762, "epsg", 2762, + "NAD83(HARN) / Arizona Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Arizona Central\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",31],PARAMETER[\"central_meridian\",-111.91666666"); + add_srs_wkt (p, 9, + "66667],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",213360],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); + add_srs_wkt (p, 12, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2762\"]]"); + p = add_epsg_def (filter, first, last, 2763, "epsg", 2763, + "NAD83(HARN) / Arizona West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); + add_proj4text (p, 1, + "=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Arizona West\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",31],PARAMETER[\"central_meridian\",-113.75],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",0.999933333],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",213360],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2763\"]]"); + p = add_epsg_def (filter, first, last, 2764, "epsg", 2764, + "NAD83(HARN) / Arkansas North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Arkansas North\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",36.23333333333333],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",34.93333333333333],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 10, + "origin\",34.33333333333334],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 11, + "\",-92],PARAMETER[\"false_easting\",400000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 14, + "\"EPSG\",\"2764\"]]"); + p = add_epsg_def (filter, first, last, 2765, "epsg", 2765, + "NAD83(HARN) / Arkansas South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellp"); + add_proj4text (p, 2, + "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Arkansas South\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",34.76666666666667],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",33.3],PARAMETER[\"latitude_of_origin\",32.6"); + add_srs_wkt (p, 10, + "6666666666666],PARAMETER[\"central_meridian\",-92],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_easting\",400000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 12, + "g\",400000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"2765\"]]"); + p = add_epsg_def (filter, first, last, 2766, "epsg", 2766, + "NAD83(HARN) / California zone 1"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); + add_proj4text (p, 1, + "3333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellp"); + add_proj4text (p, 2, + "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / California zone 1\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",41.66666666666666],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",40],PARAMETER[\"latitude_of_origin\",39.33"); + add_srs_wkt (p, 10, + "333333333334],PARAMETER[\"central_meridian\",-122],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_easting\",2000000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 12, + "ng\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"2766\"]]"); + p = add_epsg_def (filter, first, last, 2767, "epsg", 2767, + "NAD83(HARN) / California zone 2"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y"); + add_proj4text (p, 2, + "_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / California zone 2\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",39.83333333333334],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",38.33333333333334],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",37.66666666666666],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 11, + "n\",-122],PARAMETER[\"false_easting\",2000000],PARAMETER"); + add_srs_wkt (p, 12, + "[\"false_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 14, + "HORITY[\"EPSG\",\"2767\"]]"); + p = add_epsg_def (filter, first, last, 2768, "epsg", 2768, + "NAD83(HARN) / California zone 3"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +"); + add_proj4text (p, 2, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / California zone 3\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",38.43333333333333],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",37.06666666666667],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",36.5],PARAMETER[\"central_meridian\",-120.5],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",2000000],PARAMETER[\"false_no"); + add_srs_wkt (p, 12, + "rthing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 13, + "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 14, + "PSG\",\"2768\"]]"); + p = add_epsg_def (filter, first, last, 2769, "epsg", 2769, + "NAD83(HARN) / California zone 4"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); + add_proj4text (p, 1, + "4 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +tow"); + add_proj4text (p, 2, + "gs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / California zone 4\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",37.25],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",36],PARAMETER[\"latitude_of_origin\",35.33333333333334]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"central_meridian\",-119],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "easting\",2000000],PARAMETER[\"false_northing\",500000],"); + add_srs_wkt (p, 12, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2769\"]]"); + p = add_epsg_def (filter, first, last, 2770, "epsg", 2770, + "NAD83(HARN) / California zone 5"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +el"); + add_proj4text (p, 2, + "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / California zone 5\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",35.46666666666667],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",34.03333333333333],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",33.5],PARAMETER[\"central_meridian\",-118],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",2000000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 12, + "hing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 13, + "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 14, + "G\",\"2770\"]]"); + p = add_epsg_def (filter, first, last, 2771, "epsg", 2771, + "NAD83(HARN) / California zone 6"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000"); + add_proj4text (p, 2, + " +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 3, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / California zone 6\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",33.88333333333333],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",32.78333333333333],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",32.16666666666666],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 11, + "n\",-116.25],PARAMETER[\"false_easting\",2000000],PARAME"); + add_srs_wkt (p, 12, + "TER[\"false_northing\",500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 13, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 14, + ",AUTHORITY[\"EPSG\",\"2771\"]]"); + p = add_epsg_def (filter, first, last, 2772, "epsg", 2772, + "NAD83(HARN) / Colorado North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 3, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Colorado North\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",40.78333333333333],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",39.71666666666667],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 10, + "origin\",39.33333333333334],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 11, + "\",-105.5],PARAMETER[\"false_easting\",914401.8289],PARA"); + add_srs_wkt (p, 12, + "METER[\"false_northing\",304800.6096],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"2772\"]]"); + p = add_epsg_def (filter, first, last, 2773, "epsg", 2773, + "NAD83(HARN) / Colorado Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); + add_proj4text (p, 1, + "3334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +el"); + add_proj4text (p, 2, + "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Colorado Central\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",39.75],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",38.45],PARAMETER[\"latitude_of_origin\",37.833333333333"); + add_srs_wkt (p, 10, + "34],PARAMETER[\"central_meridian\",-105.5],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_easting\",914401.8289],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",304800.6096],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 13, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 14, + "\",\"2773\"]]"); + p = add_epsg_def (filter, first, last, 2774, "epsg", 2774, + "NAD83(HARN) / Colorado South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 3, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Colorado South\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",38.43333333333333],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",37.23333333333333],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 10, + "origin\",36.66666666666666],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 11, + "\",-105.5],PARAMETER[\"false_easting\",914401.8289],PARA"); + add_srs_wkt (p, 12, + "METER[\"false_northing\",304800.6096],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"2774\"]]"); + p = add_epsg_def (filter, first, last, 2775, "epsg", 2775, + "NAD83(HARN) / Connecticut"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); + add_proj4text (p, 1, + ".83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=1524"); + add_proj4text (p, 2, + "00.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 3, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Connecticut\",GEOGCS[\"NAD83(HARN"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); + add_srs_wkt (p, 8, + "parallel_1\",41.86666666666667],PARAMETER[\"standard_par"); + add_srs_wkt (p, 9, + "allel_2\",41.2],PARAMETER[\"latitude_of_origin\",40.8333"); + add_srs_wkt (p, 10, + "3333333334],PARAMETER[\"central_meridian\",-72.75],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_easting\",304800.6096],PARAMETER[\"false_no"); + add_srs_wkt (p, 12, + "rthing\",152400.3048],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"2775\"]]"); + p = add_epsg_def (filter, first, last, 2776, "epsg", 2776, + "NAD83(HARN) / Delaware"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); + add_proj4text (p, 1, + "995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Delaware\",GEOGCS[\"NAD83(HARN)\""); + add_srs_wkt (p, 1, + ",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "38],PARAMETER[\"central_meridian\",-75.41666666666667],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",0.999995],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",200000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2776\"]]"); + p = add_epsg_def (filter, first, last, 2777, "epsg", 2777, + "NAD83(HARN) / Florida East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Florida East\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",24.33333333333333],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "81],PARAMETER[\"scale_factor\",0.999941177],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",200000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2777\"]]"); + p = add_epsg_def (filter, first, last, 2778, "epsg", 2778, + "NAD83(HARN) / Florida West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Florida West\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",24.33333333333333],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "82],PARAMETER[\"scale_factor\",0.999941177],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",200000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2778\"]]"); + p = add_epsg_def (filter, first, last, 2779, "epsg", 2779, + "NAD83(HARN) / Florida North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); + add_proj4text (p, 1, + "9 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Florida North\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",30.75],PARAMETER[\"standard_parallel_2\",2"); + add_srs_wkt (p, 9, + "9.58333333333333],PARAMETER[\"latitude_of_origin\",29],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"central_meridian\",-84.5],PARAMETER[\"false_e"); + add_srs_wkt (p, 11, + "asting\",600000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 12, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 13, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2779\"]]"); + p = add_epsg_def (filter, first, last, 2780, "epsg", 2780, + "NAD83(HARN) / Georgia East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Georgia East\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",30],PARAMETER[\"central_meridian\",-82.166666666666"); + add_srs_wkt (p, 9, + "67],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",200000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 12, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2780\"]]"); + p = add_epsg_def (filter, first, last, 2781, "epsg", 2781, + "NAD83(HARN) / Georgia West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Georgia West\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",30],PARAMETER[\"central_meridian\",-84.166666666666"); + add_srs_wkt (p, 9, + "67],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",700000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 12, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2781\"]]"); + p = add_epsg_def (filter, first, last, 2782, "epsg", 2782, + "NAD83(HARN) / Hawaii zone 1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0."); + add_proj4text (p, 1, + "999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0"); + add_proj4text (p, 2, + ",0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Hawaii zone 1\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",18.83333333333333],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "155.5],PARAMETER[\"scale_factor\",0.999966667],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2782\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2783, "epsg", 2783, + "NAD83(HARN) / Hawaii zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Hawaii zone 2\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",20.33333333333333],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "156.6666666666667],PARAMETER[\"scale_factor\",0.99996666"); + add_srs_wkt (p, 10, + "7],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 12, + "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"2783\"]]"); + p = add_epsg_def (filter, first, last, 2784, "epsg", 2784, + "NAD83(HARN) / Hawaii zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99"); + add_proj4text (p, 1, + "999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Hawaii zone 3\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",21.16666666666667],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "158],PARAMETER[\"scale_factor\",0.99999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2784\"]]"); + p = add_epsg_def (filter, first, last, 2785, "epsg", 2785, + "NAD83(HARN) / Hawaii zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0."); + add_proj4text (p, 1, + "99999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Hawaii zone 4\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",21.83333333333333],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "159.5],PARAMETER[\"scale_factor\",0.99999],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2785\"]]"); + p = add_epsg_def (filter, first, last, 2786, "epsg", 2786, + "NAD83(HARN) / Hawaii zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0"); + add_proj4text (p, 2, + ",0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Hawaii zone 5\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",21.66666666666667],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "160.1666666666667],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2786\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 2787, "epsg", 2787, + "NAD83(HARN) / Idaho East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); + add_proj4text (p, 1, + "666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Idaho East\",GEOGCS[\"NAD83(HARN)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",41.66666666666666],PARAMETER[\"central_meridian\",-112."); + add_srs_wkt (p, 9, + "1666666666667],PARAMETER[\"scale_factor\",0.999947368],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_easting\",200000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 12, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"2787\"]]"); + p = add_epsg_def (filter, first, last, 2788, "epsg", 2788, + "NAD83(HARN) / Idaho Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); + add_proj4text (p, 1, + "99473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Idaho Central\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",41.66666666666666],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "114],PARAMETER[\"scale_factor\",0.999947368],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2788\"]]"); + p = add_epsg_def (filter, first, last, 2789, "epsg", 2789, + "NAD83(HARN) / Idaho West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); + add_proj4text (p, 1, + ".999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 2, + "0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Idaho West\",GEOGCS[\"NAD83(HARN)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",41.66666666666666],PARAMETER[\"central_meridian\",-115."); + add_srs_wkt (p, 9, + "75],PARAMETER[\"scale_factor\",0.999933333],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",800000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2789\"]]"); + p = add_epsg_def (filter, first, last, 2790, "epsg", 2790, + "NAD83(HARN) / Illinois East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); + add_proj4text (p, 1, + "333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Illinois East\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",36.66666666666666],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "88.33333333333333],PARAMETER[\"scale_factor\",0.999975],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",300000],PARAMETER[\"false_no"); + add_srs_wkt (p, 11, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"2790\"]]"); + p = add_epsg_def (filter, first, last, 2791, "epsg", 2791, + "NAD83(HARN) / Illinois West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Illinois West\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",36.66666666666666],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "90.16666666666667],PARAMETER[\"scale_factor\",0.99994117"); + add_srs_wkt (p, 10, + "7],PARAMETER[\"false_easting\",700000],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 12, + "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"2791\"]]"); + p = add_epsg_def (filter, first, last, 2792, "epsg", 2792, + "NAD83(HARN) / Indiana East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0"); + add_proj4text (p, 2, + ",0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Indiana East\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",37.5],PARAMETER[\"central_meridian\",-85.6666666666"); + add_srs_wkt (p, 9, + "6667],PARAMETER[\"scale_factor\",0.999966667],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",100000],PARAMETER[\"false_northing\",2"); + add_srs_wkt (p, 11, + "50000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"27"); + add_srs_wkt (p, 13, + "92\"]]"); + p = add_epsg_def (filter, first, last, 2793, "epsg", 2793, + "NAD83(HARN) / Indiana West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0"); + add_proj4text (p, 2, + ",0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Indiana West\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",37.5],PARAMETER[\"central_meridian\",-87.0833333333"); + add_srs_wkt (p, 9, + "3333],PARAMETER[\"scale_factor\",0.999966667],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",900000],PARAMETER[\"false_northing\",2"); + add_srs_wkt (p, 11, + "50000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"27"); + add_srs_wkt (p, 13, + "93\"]]"); + p = add_epsg_def (filter, first, last, 2794, "epsg", 2794, + "NAD83(HARN) / Iowa North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +"); + add_proj4text (p, 2, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Iowa North\",GEOGCS[\"NAD83(HARN)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",43.26666666666667],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 9, + "lel_2\",42.06666666666667],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 10, + "n\",41.5],PARAMETER[\"central_meridian\",-93.5],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_easting\",1500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 13, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "2794\"]]"); + p = add_epsg_def (filter, first, last, 2795, "epsg", 2795, + "NAD83(HARN) / Iowa South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); + add_proj4text (p, 1, + "667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Iowa South\",GEOGCS[\"NAD83(HARN)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",41.78333333333333],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 9, + "lel_2\",40.61666666666667],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 10, + "n\",40],PARAMETER[\"central_meridian\",-93.5],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",500000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 12, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2795\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 2796, "epsg", 2796, + "NAD83(HARN) / Kansas North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Kansas North\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",39.78333333333333],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 9, + "rallel_2\",38.71666666666667],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 10, + "igin\",38.33333333333334],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 11, + ",-98],PARAMETER[\"false_easting\",400000],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"2796\"]]"); + p = add_epsg_def (filter, first, last, 2797, "epsg", 2797, + "NAD83(HARN) / Kansas South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y"); + add_proj4text (p, 2, + "_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Kansas South\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",38.56666666666667],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 9, + "rallel_2\",37.26666666666667],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 10, + "igin\",36.66666666666666],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 11, + ",-98.5],PARAMETER[\"false_easting\",400000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",400000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 14, + "RITY[\"EPSG\",\"2797\"]]"); + p = add_epsg_def (filter, first, last, 2798, "epsg", 2798, + "NAD83(HARN) / Kentucky North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); + add_proj4text (p, 1, + "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps="); + add_proj4text (p, 2, + "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Kentucky North\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",37.96666666666667],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",38.96666666666667],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 10, + "origin\",37.5],PARAMETER[\"central_meridian\",-84.25],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 12, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 13, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "2798\"]]"); + p = add_epsg_def (filter, first, last, 2799, "epsg", 2799, + "NAD83(HARN) / Kentucky South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +"); + add_proj4text (p, 2, + "y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Kentucky South\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",37.93333333333333],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",36.73333333333333],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 10, + "origin\",36.33333333333334],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 11, + "\",-85.75],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 12, + "[\"false_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 14, + "HORITY[\"EPSG\",\"2799\"]]"); + p = add_epsg_def (filter, first, last, 2800, "epsg", 2800, + "NAD83(HARN) / Louisiana North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps="); + add_proj4text (p, 2, + "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Louisiana North\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",32.66666666666666],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",31.16666666666667],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",30.5],PARAMETER[\"central_meridian\",-92.5],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_easting\",1000000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 12, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 13, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"2800\"]]"); + p = add_epsg_def (filter, first, last, 2801, "epsg", 2801, + "NAD83(HARN) / Louisiana South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91"); + add_proj4text (p, 1, + ".33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Louisiana South\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",30.7],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",29.3],PARAMETER[\"latitude_of_origin\",28.5],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-91.33333333333333],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_easting\",1000000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 12, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); + add_srs_wkt (p, 13, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2801\"]]"); + p = add_epsg_def (filter, first, last, 2802, "epsg", 2802, + "NAD83(HARN) / Maine East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Maine East\",GEOGCS[\"NAD83(HARN)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",43.66666666666666],PARAMETER[\"central_meridian\",-68.5"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",300000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 12, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2802\"]]"); + p = add_epsg_def (filter, first, last, 2803, "epsg", 2803, + "NAD83(HARN) / Maine West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Maine West\",GEOGCS[\"NAD83(HARN)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",42.83333333333334],PARAMETER[\"central_meridian\",-70.1"); + add_srs_wkt (p, 9, + "6666666666667],PARAMETER[\"scale_factor\",0.999966667],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_easting\",900000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 12, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"2803\"]]"); + p = add_epsg_def (filter, first, last, 2804, "epsg", 2804, + "NAD83(HARN) / Maryland"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666"); + add_proj4text (p, 1, + "666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Maryland\",GEOGCS[\"NAD83(HARN)\""); + add_srs_wkt (p, 1, + ",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 8, + "llel_1\",39.45],PARAMETER[\"standard_parallel_2\",38.3],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",37.66666666666666],PARA"); + add_srs_wkt (p, 10, + "METER[\"central_meridian\",-77],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 11, + "g\",400000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 12, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 13, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2804\"]]"); + p = add_epsg_def (filter, first, last, 2805, "epsg", 2805, + "NAD83(HARN) / Massachusetts Mainland"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellp"); + add_proj4text (p, 2, + "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Massachusetts Mainland\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",42.68333333333333],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",41.71666666666667],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",41],PARAMETER[\"central_meridian\",-71.5]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_easting\",200000],PARAMETER[\"false_n"); + add_srs_wkt (p, 12, + "orthing\",750000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"2805\"]]"); + p = add_epsg_def (filter, first, last, 2806, "epsg", 2806, + "NAD83(HARN) / Massachusetts Island"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333"); + add_proj4text (p, 1, + "333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Massachusetts Island\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",41.48333333333333],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",41.28333333333333],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",41],PARAMETER[\"central_meridian\",-70.5]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 12, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"2806\"]]"); + p = add_epsg_def (filter, first, last, 2807, "epsg", 2807, + "NAD83(HARN) / Michigan North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_"); + add_proj4text (p, 2, + "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 3, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Michigan North\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",47.08333333333334],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",45.48333333333333],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 10, + "origin\",44.78333333333333],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 11, + "\",-87],PARAMETER[\"false_easting\",8000000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 14, + "\"EPSG\",\"2807\"]]"); + p = add_epsg_def (filter, first, last, 2808, "epsg", 2808, + "NAD83(HARN) / Michigan Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43"); + add_proj4text (p, 1, + ".31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +"); + add_proj4text (p, 2, + "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Michigan Central\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",45.7],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",44.18333333333333],PARAMETER[\"latitude_of_origin\",43."); + add_srs_wkt (p, 10, + "31666666666667],PARAMETER[\"central_meridian\",-84.36666"); + add_srs_wkt (p, 11, + "666666666],PARAMETER[\"false_easting\",6000000],PARAMETE"); + add_srs_wkt (p, 12, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); + add_srs_wkt (p, 14, + "ITY[\"EPSG\",\"2808\"]]"); + p = add_epsg_def (filter, first, last, 2809, "epsg", 2809, + "NAD83(HARN) / Michigan South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41"); + add_proj4text (p, 1, + ".5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps="); + add_proj4text (p, 2, + "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Michigan South\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",43.66666666666666],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",42.1],PARAMETER[\"latitude_of_origin\",41.5"); + add_srs_wkt (p, 10, + "],PARAMETER[\"central_meridian\",-84.36666666666666],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",4000000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 12, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 13, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "2809\"]]"); + p = add_epsg_def (filter, first, last, 2810, "epsg", 2810, + "NAD83(HARN) / Minnesota North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y"); + add_proj4text (p, 2, + "_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Minnesota North\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",48.63333333333333],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",47.03333333333333],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",46.5],PARAMETER[\"central_meridian\",-93.1],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_easting\",800000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 12, + "hing\",100000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 13, + "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 14, + "G\",\"2810\"]]"); + p = add_epsg_def (filter, first, last, 2811, "epsg", 2811, + "NAD83(HARN) / Minnesota Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); + add_proj4text (p, 1, + "5 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +to"); + add_proj4text (p, 2, + "wgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Minnesota Central\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",47.05],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",45.61666666666667],PARAMETER[\"latitude_of_origin\",45]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"central_meridian\",-94.25],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_easting\",800000],PARAMETER[\"false_northing\",100000]"); + add_srs_wkt (p, 12, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); + add_srs_wkt (p, 13, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2811\"]]"); + p = add_epsg_def (filter, first, last, 2812, "epsg", 2812, + "NAD83(HARN) / Minnesota South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps="); + add_proj4text (p, 2, + "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Minnesota South\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",45.21666666666667],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",43.78333333333333],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",43],PARAMETER[\"central_meridian\",-94],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",800000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 12, + "\",100000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 13, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"2812\"]]"); + p = add_epsg_def (filter, first, last, 2813, "epsg", 2813, + "NAD83(HARN) / Mississippi East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Mississippi East\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",29.5],PARAMETER[\"central_meridian\",-88.8333333"); + add_srs_wkt (p, 9, + "3333333],PARAMETER[\"scale_factor\",0.99995],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",300000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2813\"]]"); + p = add_epsg_def (filter, first, last, 2814, "epsg", 2814, + "NAD83(HARN) / Mississippi West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Mississippi West\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",29.5],PARAMETER[\"central_meridian\",-90.3333333"); + add_srs_wkt (p, 9, + "3333333],PARAMETER[\"scale_factor\",0.99995],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",700000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2814\"]]"); + p = add_epsg_def (filter, first, last, 2815, "epsg", 2815, + "NAD83(HARN) / Missouri East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9"); + add_proj4text (p, 1, + "99933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); + add_proj4text (p, 2, + "0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Missouri East\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",35.83333333333334],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "90.5],PARAMETER[\"scale_factor\",0.999933333],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",250000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 11, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2815\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2816, "epsg", 2816, + "NAD83(HARN) / Missouri Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9"); + add_proj4text (p, 1, + "99933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); + add_proj4text (p, 2, + "0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Missouri Central\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",35.83333333333334],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-92.5],PARAMETER[\"scale_factor\",0.999933333],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2816\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 2817, "epsg", 2817, + "NAD83(HARN) / Missouri West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9"); + add_proj4text (p, 1, + "99941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); + add_proj4text (p, 2, + "0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Missouri West\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",36.16666666666666],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "94.5],PARAMETER[\"scale_factor\",0.999941177],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",850000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 11, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2817\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2818, "epsg", 2818, + "NAD83(HARN) / Montana"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5"); + add_proj4text (p, 1, + " +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Montana\",GEOGCS[\"NAD83(HARN)\","); + add_srs_wkt (p, 1, + "DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"615"); + add_srs_wkt (p, 4, + "2\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION[\"L"); + add_srs_wkt (p, 7, + "ambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 8, + "lel_1\",49],PARAMETER[\"standard_parallel_2\",45],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",44.25],PARAMETER[\"central_me"); + add_srs_wkt (p, 10, + "ridian\",-109.5],PARAMETER[\"false_easting\",600000],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"2818\"]]"); + p = add_epsg_def (filter, first, last, 2819, "epsg", 2819, + "NAD83(HARN) / Nebraska"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); + add_proj4text (p, 1, + "lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 2, + "0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Nebraska\",GEOGCS[\"NAD83(HARN)\""); + add_srs_wkt (p, 1, + ",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 8, + "llel_1\",43],PARAMETER[\"standard_parallel_2\",40],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"latitude_of_origin\",39.83333333333334],PARAMETER"); + add_srs_wkt (p, 10, + "[\"central_meridian\",-100],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 11, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 13, + "\",NORTH],AUTHORITY[\"EPSG\",\"2819\"]]"); + p = add_epsg_def (filter, first, last, 2820, "epsg", 2820, + "NAD83(HARN) / Nevada East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 2, + "0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Nevada East\",GEOGCS[\"NAD83(HARN"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",34.75],PARAMETER[\"central_meridian\",-115.583333333"); + add_srs_wkt (p, 9, + "3333],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",200000],PARAMETER[\"false_northing\",800000"); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2820\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2821, "epsg", 2821, + "NAD83(HARN) / Nevada Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 2, + "0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Nevada Central\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",34.75],PARAMETER[\"central_meridian\",-116.666666"); + add_srs_wkt (p, 9, + "6666667],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",600"); + add_srs_wkt (p, 11, + "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); + add_srs_wkt (p, 12, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"282"); + add_srs_wkt (p, 13, + "1\"]]"); + p = add_epsg_def (filter, first, last, 2822, "epsg", 2822, + "NAD83(HARN) / Nevada West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 2, + "0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Nevada West\",GEOGCS[\"NAD83(HARN"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",34.75],PARAMETER[\"central_meridian\",-118.583333333"); + add_srs_wkt (p, 9, + "3333],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",800000],PARAMETER[\"false_northing\",400000"); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2822\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2823, "epsg", 2823, + "NAD83(HARN) / New Hampshire"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); + add_proj4text (p, 2, + "0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New Hampshire\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",42.5],PARAMETER[\"central_meridian\",-71.6666666666"); + add_srs_wkt (p, 9, + "6667],PARAMETER[\"scale_factor\",0.999966667],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",300000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 11, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2823\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2824, "epsg", 2824, + "NAD83(HARN) / New Jersey"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New Jersey\",GEOGCS[\"NAD83(HARN)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",38.83333333333334],PARAMETER[\"central_meridian\",-74.5"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",150000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 12, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2824\"]]"); + p = add_epsg_def (filter, first, last, 2825, "epsg", 2825, + "NAD83(HARN) / New Mexico East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); + add_proj4text (p, 1, + "909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New Mexico East\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",31],PARAMETER[\"central_meridian\",-104.33333333"); + add_srs_wkt (p, 9, + "33333],PARAMETER[\"scale_factor\",0.999909091],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",165000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2825\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2826, "epsg", 2826, + "NAD83(HARN) / New Mexico Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=5000"); + add_proj4text (p, 1, + "00 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 2, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New Mexico Central\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",31],PARAMETER[\"central_meridian\",-106.25],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2826\"]]"); + p = add_epsg_def (filter, first, last, 2827, "epsg", 2827, + "NAD83(HARN) / New Mexico West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); + add_proj4text (p, 1, + "916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New Mexico West\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",31],PARAMETER[\"central_meridian\",-107.83333333"); + add_srs_wkt (p, 9, + "33333],PARAMETER[\"scale_factor\",0.999916667],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",830000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2827\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2828, "epsg", 2828, + "NAD83(HARN) / New York East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New York East\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",38.83333333333334],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "74.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",150000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2828\"]]"); + p = add_epsg_def (filter, first, last, 2829, "epsg", 2829, + "NAD83(HARN) / New York Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New York Central\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",40],PARAMETER[\"central_meridian\",-76.583333333"); + add_srs_wkt (p, 9, + "33333],PARAMETER[\"scale_factor\",0.9999375],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",250000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2829\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_08.c b/src/spatialite/src/srsinit/epsg_inlined_08.c new file mode 100644 index 0000000..431dc41 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_08.c @@ -0,0 +1,3936 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_08 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 2830, "epsg", 2830, + "NAD83(HARN) / New York West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New York West\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",40],PARAMETER[\"central_meridian\",-78.583333333333"); + add_srs_wkt (p, 9, + "33],PARAMETER[\"scale_factor\",0.9999375],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",350000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); + add_srs_wkt (p, 12, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2830\"]]"); + p = add_epsg_def (filter, first, last, 2831, "epsg", 2831, + "NAD83(HARN) / New York Long Island"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New York Long Island\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",41.03333333333333],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",40.66666666666666],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",40.16666666666666],PARAMETER[\"central_me"); + add_srs_wkt (p, 11, + "ridian\",-74],PARAMETER[\"false_easting\",300000],PARAME"); + add_srs_wkt (p, 12, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 14, + "ORITY[\"EPSG\",\"2831\"]]"); + p = add_epsg_def (filter, first, last, 2832, "epsg", 2832, + "NAD83(HARN) / North Dakota North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333"); + add_proj4text (p, 1, + "333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GR"); + add_proj4text (p, 2, + "S80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / North Dakota North\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",48.73333333333333],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",47.43333333333333],PARAMETER[\"latitude"); + add_srs_wkt (p, 10, + "_of_origin\",47],PARAMETER[\"central_meridian\",-100.5],"); + add_srs_wkt (p, 11, + "PARAMETER[\"false_easting\",600000],PARAMETER[\"false_no"); + add_srs_wkt (p, 12, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"2832\"]]"); + p = add_epsg_def (filter, first, last, 2833, "epsg", 2833, + "NAD83(HARN) / North Dakota South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333"); + add_proj4text (p, 1, + "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +"); + add_proj4text (p, 2, + "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / North Dakota South\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",47.48333333333333],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",46.18333333333333],PARAMETER[\"latitude"); + add_srs_wkt (p, 10, + "_of_origin\",45.66666666666666],PARAMETER[\"central_meri"); + add_srs_wkt (p, 11, + "dian\",-100.5],PARAMETER[\"false_easting\",600000],PARAM"); + add_srs_wkt (p, 12, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 14, + "HORITY[\"EPSG\",\"2833\"]]"); + p = add_epsg_def (filter, first, last, 2834, "epsg", 2834, + "NAD83(HARN) / Ohio North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Ohio North\",GEOGCS[\"NAD83(HARN)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",41.7],PARAMETER[\"standard_parallel_2\",40.43"); + add_srs_wkt (p, 9, + "333333333333],PARAMETER[\"latitude_of_origin\",39.666666"); + add_srs_wkt (p, 10, + "66666666],PARAMETER[\"central_meridian\",-82.5],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_easting\",600000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 13, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2834\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 2835, "epsg", 2835, + "NAD83(HARN) / Ohio South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Ohio South\",GEOGCS[\"NAD83(HARN)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",40.03333333333333],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 9, + "lel_2\",38.73333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 10, + "n\",38],PARAMETER[\"central_meridian\",-82.5],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",600000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 12, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2835\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 2836, "epsg", 2836, + "NAD83(HARN) / Oklahoma North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Oklahoma North\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",36.76666666666667],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",35.56666666666667],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 10, + "origin\",35],PARAMETER[\"central_meridian\",-98],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_easting\",600000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 13, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2836\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 2837, "epsg", 2837, + "NAD83(HARN) / Oklahoma South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Oklahoma South\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",35.23333333333333],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",33.93333333333333],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 10, + "origin\",33.33333333333334],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 11, + "\",-98],PARAMETER[\"false_easting\",600000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 14, + "\"EPSG\",\"2837\"]]"); + p = add_epsg_def (filter, first, last, 2838, "epsg", 2838, + "NAD83(HARN) / Oregon North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Oregon North\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",46],PARAMETER[\"standard_parallel_2\",44.3"); + add_srs_wkt (p, 9, + "3333333333334],PARAMETER[\"latitude_of_origin\",43.66666"); + add_srs_wkt (p, 10, + "666666666],PARAMETER[\"central_meridian\",-120.5],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",2500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 12, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 13, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"28"); + add_srs_wkt (p, 14, + "38\"]]"); + p = add_epsg_def (filter, first, last, 2839, "epsg", 2839, + "NAD83(HARN) / Oregon South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Oregon South\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",44],PARAMETER[\"standard_parallel_2\",42.3"); + add_srs_wkt (p, 9, + "3333333333334],PARAMETER[\"latitude_of_origin\",41.66666"); + add_srs_wkt (p, 10, + "666666666],PARAMETER[\"central_meridian\",-120.5],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",1500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 12, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 13, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"28"); + add_srs_wkt (p, 14, + "39\"]]"); + p = add_epsg_def (filter, first, last, 2840, "epsg", 2840, + "NAD83(HARN) / Rhode Island"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); + add_proj4text (p, 1, + "9999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0"); + add_proj4text (p, 2, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Rhode Island\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",41.08333333333334],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "71.5],PARAMETER[\"scale_factor\",0.99999375],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",100000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2840\"]]"); + p = add_epsg_def (filter, first, last, 2841, "epsg", 2841, + "NAD83(HARN) / South Dakota North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666"); + add_proj4text (p, 1, + "666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_"); + add_proj4text (p, 2, + "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 3, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / South Dakota North\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",45.68333333333333],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",44.41666666666666],PARAMETER[\"latitude"); + add_srs_wkt (p, 10, + "_of_origin\",43.83333333333334],PARAMETER[\"central_meri"); + add_srs_wkt (p, 11, + "dian\",-100],PARAMETER[\"false_easting\",600000],PARAMET"); + add_srs_wkt (p, 12, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 14, + "RITY[\"EPSG\",\"2841\"]]"); + p = add_epsg_def (filter, first, last, 2842, "epsg", 2842, + "NAD83(HARN) / South Dakota South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); + add_proj4text (p, 1, + ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 3, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / South Dakota South\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",44.4],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",42.83333333333334],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "42.33333333333334],PARAMETER[\"central_meridian\",-100.3"); + add_srs_wkt (p, 11, + "333333333333],PARAMETER[\"false_easting\",600000],PARAME"); + add_srs_wkt (p, 12, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 14, + "ORITY[\"EPSG\",\"2842\"]]"); + p = add_epsg_def (filter, first, last, 2843, "epsg", 2843, + "NAD83(HARN) / Tennessee"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=3"); + add_proj4text (p, 1, + "4.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GR"); + add_proj4text (p, 2, + "S80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Tennessee\",GEOGCS[\"NAD83(HARN)\""); + add_srs_wkt (p, 1, + ",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 8, + "llel_1\",36.41666666666666],PARAMETER[\"standard_paralle"); + add_srs_wkt (p, 9, + "l_2\",35.25],PARAMETER[\"latitude_of_origin\",34.3333333"); + add_srs_wkt (p, 10, + "3333334],PARAMETER[\"central_meridian\",-86],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",600000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 12, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2843\"]]"); + p = add_epsg_def (filter, first, last, 2844, "epsg", 2844, + "NAD83(HARN) / Texas North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=3"); + add_proj4text (p, 1, + "4 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Texas North\",GEOGCS[\"NAD83(HARN"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); + add_srs_wkt (p, 8, + "parallel_1\",36.18333333333333],PARAMETER[\"standard_par"); + add_srs_wkt (p, 9, + "allel_2\",34.65],PARAMETER[\"latitude_of_origin\",34],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-101.5],PARAMETER[\"false_e"); + add_srs_wkt (p, 11, + "asting\",200000],PARAMETER[\"false_northing\",1000000],U"); + add_srs_wkt (p, 12, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2844\"]]"); + p = add_epsg_def (filter, first, last, 2845, "epsg", 2845, + "NAD83(HARN) / Texas North Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333"); + add_proj4text (p, 1, + "333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Texas North Central\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",33.96666666666667],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",32.13333333333333],PARAMETER[\"latitude"); + add_srs_wkt (p, 10, + "_of_origin\",31.66666666666667],PARAMETER[\"central_meri"); + add_srs_wkt (p, 11, + "dian\",-98.5],PARAMETER[\"false_easting\",600000],PARAME"); + add_srs_wkt (p, 12, + "TER[\"false_northing\",2000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 14, + "],AUTHORITY[\"EPSG\",\"2845\"]]"); + p = add_epsg_def (filter, first, last, 2846, "epsg", 2846, + "NAD83(HARN) / Texas Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666"); + add_proj4text (p, 1, + "667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); + add_proj4text (p, 2, + "x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 3, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Texas Central\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",31.88333333333333],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 9, + "rallel_2\",30.11666666666667],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 10, + "igin\",29.66666666666667],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 11, + ",-100.3333333333333],PARAMETER[\"false_easting\",700000]"); + add_srs_wkt (p, 12, + ",PARAMETER[\"false_northing\",3000000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"2846\"]]"); + p = add_epsg_def (filter, first, last, 2847, "epsg", 2847, + "NAD83(HARN) / Texas South Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333"); + add_proj4text (p, 1, + "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); + add_proj4text (p, 3, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Texas South Central\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",30.28333333333333],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",28.38333333333333],PARAMETER[\"latitude"); + add_srs_wkt (p, 10, + "_of_origin\",27.83333333333333],PARAMETER[\"central_meri"); + add_srs_wkt (p, 11, + "dian\",-99],PARAMETER[\"false_easting\",600000],PARAMETE"); + add_srs_wkt (p, 12, + "R[\"false_northing\",4000000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 14, + "AUTHORITY[\"EPSG\",\"2847\"]]"); + p = add_epsg_def (filter, first, last, 2848, "epsg", 2848, + "NAD83(HARN) / Texas South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y"); + add_proj4text (p, 2, + "_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Texas South\",GEOGCS[\"NAD83(HARN"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); + add_srs_wkt (p, 8, + "parallel_1\",27.83333333333333],PARAMETER[\"standard_par"); + add_srs_wkt (p, 9, + "allel_2\",26.16666666666667],PARAMETER[\"latitude_of_ori"); + add_srs_wkt (p, 10, + "gin\",25.66666666666667],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 11, + "-98.5],PARAMETER[\"false_easting\",300000],PARAMETER[\"f"); + add_srs_wkt (p, 12, + "alse_northing\",5000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 14, + "RITY[\"EPSG\",\"2848\"]]"); + p = add_epsg_def (filter, first, last, 2849, "epsg", 2849, + "NAD83(HARN) / Utah North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +"); + add_proj4text (p, 2, + "y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 3, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Utah North\",GEOGCS[\"NAD83(HARN)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",41.78333333333333],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 9, + "lel_2\",40.71666666666667],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 10, + "n\",40.33333333333334],PARAMETER[\"central_meridian\",-1"); + add_srs_wkt (p, 11, + "11.5],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); + add_srs_wkt (p, 14, + "ITY[\"EPSG\",\"2849\"]]"); + p = add_epsg_def (filter, first, last, 2850, "epsg", 2850, + "NAD83(HARN) / Utah Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); + add_proj4text (p, 1, + "8.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 "); + add_proj4text (p, 2, + "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Utah Central\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",40.65],PARAMETER[\"standard_parallel_2\",3"); + add_srs_wkt (p, 9, + "9.01666666666667],PARAMETER[\"latitude_of_origin\",38.33"); + add_srs_wkt (p, 10, + "333333333334],PARAMETER[\"central_meridian\",-111.5],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",2000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 13, + "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 14, + "G\",\"2850\"]]"); + p = add_epsg_def (filter, first, last, 2851, "epsg", 2851, + "NAD83(HARN) / Utah South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); + add_proj4text (p, 1, + "6.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 "); + add_proj4text (p, 2, + "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Utah South\",GEOGCS[\"NAD83(HARN)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",38.35],PARAMETER[\"standard_parallel_2\",37.2"); + add_srs_wkt (p, 9, + "1666666666667],PARAMETER[\"latitude_of_origin\",36.66666"); + add_srs_wkt (p, 10, + "666666666],PARAMETER[\"central_meridian\",-111.5],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 12, + "\",3000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"2851\"]]"); + p = add_epsg_def (filter, first, last, 2852, "epsg", 2852, + "NAD83(HARN) / Vermont"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0"); + add_proj4text (p, 1, + "=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Vermont\",GEOGCS[\"NAD83(HARN)\","); + add_srs_wkt (p, 1, + "DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"615"); + add_srs_wkt (p, 4, + "2\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",4"); + add_srs_wkt (p, 8, + "2.5],PARAMETER[\"central_meridian\",-72.5],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.999964286],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"2852\"]]"); + p = add_epsg_def (filter, first, last, 2853, "epsg", 2853, + "NAD83(HARN) / Virginia North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +"); + add_proj4text (p, 2, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Virginia North\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",39.2],PARAMETER[\"standard_parallel_2\","); + add_srs_wkt (p, 9, + "38.03333333333333],PARAMETER[\"latitude_of_origin\",37.6"); + add_srs_wkt (p, 10, + "6666666666666],PARAMETER[\"central_meridian\",-78.5],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",3500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 12, + "hing\",2000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 13, + "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 14, + "SG\",\"2853\"]]"); + p = add_epsg_def (filter, first, last, 2854, "epsg", 2854, + "NAD83(HARN) / Virginia South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +"); + add_proj4text (p, 2, + "y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 3, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Virginia South\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",37.96666666666667],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",36.76666666666667],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 10, + "origin\",36.33333333333334],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 11, + "\",-78.5],PARAMETER[\"false_easting\",3500000],PARAMETER"); + add_srs_wkt (p, 12, + "[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 14, + "UTHORITY[\"EPSG\",\"2854\"]]"); + p = add_epsg_def (filter, first, last, 2855, "epsg", 2855, + "NAD83(HARN) / Washington North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47"); + add_proj4text (p, 1, + " +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Washington North\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",48.73333333333333],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",47.5],PARAMETER[\"latitude_of_origin\",47]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"central_meridian\",-120.8333333333333],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 12, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 13, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 14, + "855\"]]"); + p = add_epsg_def (filter, first, last, 2856, "epsg", 2856, + "NAD83(HARN) / Washington South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333"); + add_proj4text (p, 1, + "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +"); + add_proj4text (p, 2, + "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Washington South\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",47.33333333333334],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",45.83333333333334],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",45.33333333333334],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 11, + "n\",-120.5],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 12, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); + add_srs_wkt (p, 14, + "ITY[\"EPSG\",\"2856\"]]"); + p = add_epsg_def (filter, first, last, 2857, "epsg", 2857, + "NAD83(HARN) / West Virginia North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); + add_proj4text (p, 1, + "5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / West Virginia North\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",40.25],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 9, + "_2\",39],PARAMETER[\"latitude_of_origin\",38.5],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-79.5],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 12, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"2857\"]]"); + p = add_epsg_def (filter, first, last, 2858, "epsg", 2858, + "NAD83(HARN) / West Virginia South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / West Virginia South\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",38.88333333333333],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",37.48333333333333],PARAMETER[\"latitude"); + add_srs_wkt (p, 10, + "_of_origin\",37],PARAMETER[\"central_meridian\",-81],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",600000],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 13, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "2858\"]]"); + p = add_epsg_def (filter, first, last, 2859, "epsg", 2859, + "NAD83(HARN) / Wisconsin North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Wisconsin North\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",46.76666666666667],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",45.56666666666667],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",45.16666666666666],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 11, + "n\",-90],PARAMETER[\"false_easting\",600000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 14, + "\"EPSG\",\"2859\"]]"); + p = add_epsg_def (filter, first, last, 2860, "epsg", 2860, + "NAD83(HARN) / Wisconsin Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333"); + add_proj4text (p, 1, + "334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Wisconsin Central\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",45.5],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",44.25],PARAMETER[\"latitude_of_origin\",43.833333333333"); + add_srs_wkt (p, 10, + "34],PARAMETER[\"central_meridian\",-90],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_easting\",600000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 12, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2860\"]]"); + p = add_epsg_def (filter, first, last, 2861, "epsg", 2861, + "NAD83(HARN) / Wisconsin South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Wisconsin South\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",44.06666666666667],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",42.73333333333333],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",42],PARAMETER[\"central_meridian\",-90],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",600000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 12, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); + add_srs_wkt (p, 13, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"286"); + add_srs_wkt (p, 14, + "1\"]]"); + p = add_epsg_def (filter, first, last, 2862, "epsg", 2862, + "NAD83(HARN) / Wyoming East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Wyoming East\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",40.5],PARAMETER[\"central_meridian\",-105.166666666"); + add_srs_wkt (p, 9, + "6667],PARAMETER[\"scale_factor\",0.9999375],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",200000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2862\"]]"); + p = add_epsg_def (filter, first, last, 2863, "epsg", 2863, + "NAD83(HARN) / Wyoming East Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0"); + add_proj4text (p, 2, + ",0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Wyoming East Central\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",40.5],PARAMETER[\"central_meridian\",-107.3"); + add_srs_wkt (p, 9, + "333333333333],PARAMETER[\"scale_factor\",0.9999375],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",400000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",100000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"2863\"]]"); + p = add_epsg_def (filter, first, last, 2864, "epsg", 2864, + "NAD83(HARN) / Wyoming West Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0"); + add_proj4text (p, 1, + "=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Wyoming West Central\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",40.5],PARAMETER[\"central_meridian\",-108.7"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",0.9999375],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",600000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2864\"]]"); + p = add_epsg_def (filter, first, last, 2865, "epsg", 2865, + "NAD83(HARN) / Wyoming West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0"); + add_proj4text (p, 2, + ",0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Wyoming West\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",40.5],PARAMETER[\"central_meridian\",-110.083333333"); + add_srs_wkt (p, 9, + "3333],PARAMETER[\"scale_factor\",0.9999375],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",800000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 11, + "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); + add_srs_wkt (p, 12, + "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2865"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 2866, "epsg", 2866, + "NAD83(HARN) / Puerto Rico and Virgin Is."); + add_proj4text (p, 0, + "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +"); + add_proj4text (p, 2, + "x_0=200000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 3, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Puerto Rico and Virgin Is.\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference"); + add_srs_wkt (p, 2, + "_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"415"); + add_srs_wkt (p, 7, + "2\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_1\",18.43333333333333],PARAMETER"); + add_srs_wkt (p, 9, + "[\"standard_parallel_2\",18.03333333333333],PARAMETER[\""); + add_srs_wkt (p, 10, + "latitude_of_origin\",17.83333333333333],PARAMETER[\"cent"); + add_srs_wkt (p, 11, + "ral_meridian\",-66.43333333333334],PARAMETER[\"false_eas"); + add_srs_wkt (p, 12, + "ting\",200000],PARAMETER[\"false_northing\",200000],UNIT"); + add_srs_wkt (p, 13, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 14, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2866\"]]"); + p = add_epsg_def (filter, first, last, 2867, "epsg", 2867, + "NAD83(HARN) / Arizona East (ft)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Arizona East (ft)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",31],PARAMETER[\"central_meridian\",-110.16666666"); + add_srs_wkt (p, 9, + "66667],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",700000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2867\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 2868, "epsg", 2868, + "NAD83(HARN) / Arizona Central (ft)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Arizona Central (ft)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",31],PARAMETER[\"central_meridian\",-111.916"); + add_srs_wkt (p, 9, + "6666666667],PARAMETER[\"scale_factor\",0.9999],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",700000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"28"); + add_srs_wkt (p, 13, + "68\"]]"); + p = add_epsg_def (filter, first, last, 2869, "epsg", 2869, + "NAD83(HARN) / Arizona West (ft)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); + add_proj4text (p, 1, + "=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Arizona West (ft)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",31],PARAMETER[\"central_meridian\",-113.75],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",0.999933333],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",700000],PARAMETER[\"false_northing\",0],UNIT[\"f"); + add_srs_wkt (p, 11, + "oot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 12, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2869\"]]"); + p = add_epsg_def (filter, first, last, 2870, "epsg", 2870, + "NAD83(HARN) / California zone 1 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); + add_proj4text (p, 1, + "3333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=5000"); + add_proj4text (p, 2, + "00.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); + add_proj4text (p, 3, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / California zone 1 (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); + add_srs_wkt (p, 2, + "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",41.66666666666666],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",40],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 10, + "\",39.33333333333334],PARAMETER[\"central_meridian\",-12"); + add_srs_wkt (p, 11, + "2],PARAMETER[\"false_easting\",6561666.667],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",1640416.667],UNIT[\"US survey foot\",0."); + add_srs_wkt (p, 13, + "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 14, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2870\"]]"); + p = add_epsg_def (filter, first, last, 2871, "epsg", 2871, + "NAD83(HARN) / California zone 2 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.00"); + add_proj4text (p, 2, + "01016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0"); + add_proj4text (p, 3, + ",0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / California zone 2 (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); + add_srs_wkt (p, 2, + "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",39.83333333333334],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",38.33333333333334],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",37.66666666666666],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-122],PARAMETER[\"false_easting\",6561666.66"); + add_srs_wkt (p, 12, + "7],PARAMETER[\"false_northing\",1640416.667],UNIT[\"US s"); + add_srs_wkt (p, 13, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 14, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 15, + "G\",\"2871\"]]"); + p = add_epsg_def (filter, first, last, 2872, "epsg", 2872, + "NAD83(HARN) / California zone 3 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0="); + add_proj4text (p, 2, + "500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 3, + "nits=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / California zone 3 (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); + add_srs_wkt (p, 2, + "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",38.43333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",37.06666666666667],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",36.5],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 11, + "120.5],PARAMETER[\"false_easting\",6561666.667],PARAMETE"); + add_srs_wkt (p, 12, + "R[\"false_northing\",1640416.667],UNIT[\"US survey foot\""); + add_srs_wkt (p, 13, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 14, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2872\"]"); + add_srs_wkt (p, 15, + "]"); + p = add_epsg_def (filter, first, last, 2873, "epsg", 2873, + "NAD83(HARN) / California zone 4 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); + add_proj4text (p, 1, + "4 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.000101600"); + add_proj4text (p, 2, + "1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / California zone 4 (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); + add_srs_wkt (p, 2, + "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",37.25],PARAMETER[\"standard_par"); + add_srs_wkt (p, 9, + "allel_2\",36],PARAMETER[\"latitude_of_origin\",35.333333"); + add_srs_wkt (p, 10, + "33333334],PARAMETER[\"central_meridian\",-119],PARAMETER"); + add_srs_wkt (p, 11, + "[\"false_easting\",6561666.667],PARAMETER[\"false_northi"); + add_srs_wkt (p, 12, + "ng\",1640416.667],UNIT[\"US survey foot\",0.304800609601"); + add_srs_wkt (p, 13, + "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 14, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2873\"]]"); + p = add_epsg_def (filter, first, last, 2874, "epsg", 2874, + "NAD83(HARN) / California zone 5 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=50"); + add_proj4text (p, 2, + "0000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +uni"); + add_proj4text (p, 3, + "ts=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / California zone 5 (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); + add_srs_wkt (p, 2, + "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",35.46666666666667],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",34.03333333333333],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",33.5],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 11, + "118],PARAMETER[\"false_easting\",6561666.667],PARAMETER["); + add_srs_wkt (p, 12, + "\"false_northing\",1640416.667],UNIT[\"US survey foot\","); + add_srs_wkt (p, 13, + "0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 14, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2874\"]"); + add_srs_wkt (p, 15, + "]"); + p = add_epsg_def (filter, first, last, 2875, "epsg", 2875, + "NAD83(HARN) / California zone 6 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000"); + add_proj4text (p, 2, + ".0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,"); + add_proj4text (p, 3, + "0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / California zone 6 (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); + add_srs_wkt (p, 2, + "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",33.88333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",32.78333333333333],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",32.16666666666666],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-116.25],PARAMETER[\"false_easting\",6561666"); + add_srs_wkt (p, 12, + ".667],PARAMETER[\"false_northing\",1640416.667],UNIT[\"U"); + add_srs_wkt (p, 13, + "S survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 15, + "EPSG\",\"2875\"]]"); + p = add_epsg_def (filter, first, last, 2876, "epsg", 2876, + "NAD83(HARN) / Colorado North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0"); + add_proj4text (p, 3, + ",0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Colorado North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",40.78333333333333],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",39.71666666666667],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",39.33333333333334],PARAMETER[\"central_me"); + add_srs_wkt (p, 11, + "ridian\",-105.5],PARAMETER[\"false_easting\",3000000],PA"); + add_srs_wkt (p, 12, + "RAMETER[\"false_northing\",1000000],UNIT[\"US survey foo"); + add_srs_wkt (p, 13, + "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); + add_srs_wkt (p, 14, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"287"); + add_srs_wkt (p, 15, + "6\"]]"); + p = add_epsg_def (filter, first, last, 2877, "epsg", 2877, + "NAD83(HARN) / Colorado Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); + add_proj4text (p, 1, + "3334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.60"); + add_proj4text (p, 2, + "96012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-f"); + add_proj4text (p, 3, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Colorado Central (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); + add_srs_wkt (p, 2, + "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",39.75],PARAMETER[\"standard_par"); + add_srs_wkt (p, 9, + "allel_2\",38.45],PARAMETER[\"latitude_of_origin\",37.833"); + add_srs_wkt (p, 10, + "33333333334],PARAMETER[\"central_meridian\",-105.5],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",3000000],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",1000000],UNIT[\"US survey foot\",0.304800609601219"); + add_srs_wkt (p, 13, + "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"2877\"]]"); + p = add_epsg_def (filter, first, last, 2878, "epsg", 2878, + "NAD83(HARN) / Colorado South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0"); + add_proj4text (p, 3, + ",0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Colorado South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",38.43333333333333],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",37.23333333333333],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",36.66666666666666],PARAMETER[\"central_me"); + add_srs_wkt (p, 11, + "ridian\",-105.5],PARAMETER[\"false_easting\",3000000],PA"); + add_srs_wkt (p, 12, + "RAMETER[\"false_northing\",1000000],UNIT[\"US survey foo"); + add_srs_wkt (p, 13, + "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); + add_srs_wkt (p, 14, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"287"); + add_srs_wkt (p, 15, + "8\"]]"); + p = add_epsg_def (filter, first, last, 2879, "epsg", 2879, + "NAD83(HARN) / Connecticut (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); + add_proj4text (p, 1, + ".83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_"); + add_proj4text (p, 2, + "0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 3, + "+units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Connecticut (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",41.86666666666667],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",41.2],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "40.83333333333334],PARAMETER[\"central_meridian\",-72.75"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_easting\",1000000],PARAMETER[\"false"); + add_srs_wkt (p, 12, + "_northing\",500000],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 13, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 14, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2879\"]]"); + p = add_epsg_def (filter, first, last, 2880, "epsg", 2880, + "NAD83(HARN) / Delaware (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); + add_proj4text (p, 1, + "995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Delaware (ftUS)\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",38],PARAMETER[\"central_meridian\",-75.416666666"); + add_srs_wkt (p, 9, + "66667],PARAMETER[\"scale_factor\",0.999995],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",656166.667],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"2880\"]]"); + p = add_epsg_def (filter, first, last, 2881, "epsg", 2881, + "NAD83(HARN) / Florida East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs"); + add_proj4text (p, 2, + "84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Florida East (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",24.33333333333333],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-81],PARAMETER[\"scale_factor\",0.999941177],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",656166.667],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 13, + "ORTH],AUTHORITY[\"EPSG\",\"2881\"]]"); + p = add_epsg_def (filter, first, last, 2882, "epsg", 2882, + "NAD83(HARN) / Florida West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs"); + add_proj4text (p, 2, + "84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Florida West (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",24.33333333333333],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-82],PARAMETER[\"scale_factor\",0.999941177],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",656166.667],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 13, + "ORTH],AUTHORITY[\"EPSG\",\"2882\"]]"); + p = add_epsg_def (filter, first, last, 2883, "epsg", 2883, + "NAD83(HARN) / Florida North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); + add_proj4text (p, 1, + "9 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Florida North (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",30.75],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 9, + "el_2\",29.58333333333333],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 10, + "\",29],PARAMETER[\"central_meridian\",-84.5],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",1968500],PARAMETER[\"false_northing\",0]"); + add_srs_wkt (p, 12, + ",UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 14, + "HORITY[\"EPSG\",\"2883\"]]"); + p = add_epsg_def (filter, first, last, 2884, "epsg", 2884, + "NAD83(HARN) / Georgia East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,"); + add_proj4text (p, 2, + "0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Georgia East (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",30],PARAMETER[\"central_meridian\",-82.166666"); + add_srs_wkt (p, 9, + "66666667],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",656166.667],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"2884\"]]"); + p = add_epsg_def (filter, first, last, 2885, "epsg", 2885, + "NAD83(HARN) / Georgia West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,"); + add_proj4text (p, 2, + "0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Georgia West (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",30],PARAMETER[\"central_meridian\",-84.166666"); + add_srs_wkt (p, 9, + "66666667],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",2296583.333],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"2885\"]]"); + p = add_epsg_def (filter, first, last, 2886, "epsg", 2886, + "NAD83(HARN) / Idaho East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); + add_proj4text (p, 1, + "666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); + add_proj4text (p, 3, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Idaho East (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",41.66666666666666],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-112.1666666666667],PARAMETER[\"scale_factor\",0.999947"); + add_srs_wkt (p, 10, + "368],PARAMETER[\"false_easting\",656166.667],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 12, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2886\"]]"); + p = add_epsg_def (filter, first, last, 2887, "epsg", 2887, + "NAD83(HARN) / Idaho Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); + add_proj4text (p, 1, + "99473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS8"); + add_proj4text (p, 2, + "0 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Idaho Central (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",41.66666666666666],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",-114],PARAMETER[\"scale_factor\",0.999947368],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_easting\",1640416.667],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",0],UNIT[\"US survey foot\",0.3048006096012192"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 13, + "\",NORTH],AUTHORITY[\"EPSG\",\"2887\"]]"); + p = add_epsg_def (filter, first, last, 2888, "epsg", 2888, + "NAD83(HARN) / Idaho West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); + add_proj4text (p, 1, + ".999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Idaho West (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",41.66666666666666],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-115.75],PARAMETER[\"scale_factor\",0.999933333],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",2624666.667],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 13, + "NORTH],AUTHORITY[\"EPSG\",\"2888\"]]"); + p = add_epsg_def (filter, first, last, 2889, "epsg", 2889, + "NAD83(HARN) / Indiana East (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=99999.99989839978 +y_0=249364.9987299975 +"); + add_proj4text (p, 2, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Indiana East (ftUS) (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refe"); + add_srs_wkt (p, 2, + "rence_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4152\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",37.5],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-85.66666666666667],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 10, + "9966667],PARAMETER[\"false_easting\",328083.333],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_northing\",818125],UNIT[\"US survey foot\",0."); + add_srs_wkt (p, 12, + "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2889\"]]"); + p = add_epsg_def (filter, first, last, 2890, "epsg", 2890, + "NAD83(HARN) / Indiana West (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=900000 +y_0=249364.9987299975 +ellps=GRS80"); + add_proj4text (p, 2, + " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Indiana West (ftUS) (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refe"); + add_srs_wkt (p, 2, + "rence_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4152\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",37.5],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-87.08333333333333],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 10, + "9966667],PARAMETER[\"false_easting\",2952750],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_northing\",818125],UNIT[\"US survey foot\",0.304"); + add_srs_wkt (p, 12, + "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 13, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2890\"]]"); + p = add_epsg_def (filter, first, last, 2891, "epsg", 2891, + "NAD83(HARN) / Kentucky North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); + add_proj4text (p, 1, + "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_"); + add_proj4text (p, 2, + "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no"); + add_proj4text (p, 3, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Kentucky North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",37.96666666666667],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",38.96666666666667],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",37.5],PARAMETER[\"central_meridian\",-84."); + add_srs_wkt (p, 11, + "25],PARAMETER[\"false_easting\",1640416.667],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 13, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 14, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2891\"]]"); + p = add_epsg_def (filter, first, last, 2892, "epsg", 2892, + "NAD83(HARN) / Kentucky South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0"); + add_proj4text (p, 2, + "001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0"); + add_proj4text (p, 3, + ",0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Kentucky South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",37.93333333333333],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",36.73333333333333],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",36.33333333333334],PARAMETER[\"central_me"); + add_srs_wkt (p, 11, + "ridian\",-85.75],PARAMETER[\"false_easting\",1640416.667"); + add_srs_wkt (p, 12, + "],PARAMETER[\"false_northing\",1640416.667],UNIT[\"US su"); + add_srs_wkt (p, 13, + "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); + add_srs_wkt (p, 14, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 15, + "\",\"2892\"]]"); + p = add_epsg_def (filter, first, last, 2893, "epsg", 2893, + "NAD83(HARN) / Maryland (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666"); + add_proj4text (p, 1, + "666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS8"); + add_proj4text (p, 2, + "0 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Maryland (ftUS)\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",39.45],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",38.3],PARAMETER[\"latitude_of_origin\",37.6666666666666"); + add_srs_wkt (p, 10, + "6],PARAMETER[\"central_meridian\",-77],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",1312333.333],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 12, + "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 14, + "ORITY[\"EPSG\",\"2893\"]]"); + p = add_epsg_def (filter, first, last, 2894, "epsg", 2894, + "NAD83(HARN) / Massachusetts Mainland (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=7"); + add_proj4text (p, 2, + "50000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Massachusetts Mainland (ftUS)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refere"); + add_srs_wkt (p, 2, + "nce_Network\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",42.68333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",41.71666666666667],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",41],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 11, + "\",-71.5],PARAMETER[\"false_easting\",656166.667],PARAME"); + add_srs_wkt (p, 12, + "TER[\"false_northing\",2460625],UNIT[\"US survey foot\","); + add_srs_wkt (p, 13, + "0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 14, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2894\"]"); + add_srs_wkt (p, 15, + "]"); + p = add_epsg_def (filter, first, last, 2895, "epsg", 2895, + "NAD83(HARN) / Massachusetts Island (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333"); + add_proj4text (p, 1, + "333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0"); + add_proj4text (p, 2, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_de"); + add_proj4text (p, 3, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Massachusetts Island (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Referenc"); + add_srs_wkt (p, 2, + "e_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 7, + "52\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_1\",41.48333333333333],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"standard_parallel_2\",41.28333333333333],PARAMETER[\""); + add_srs_wkt (p, 10, + "latitude_of_origin\",41],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 11, + "-70.5],PARAMETER[\"false_easting\",1640416.667],PARAMETE"); + add_srs_wkt (p, 12, + "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); + add_srs_wkt (p, 13, + "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); + add_srs_wkt (p, 14, + "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2895\"]]"); + p = add_epsg_def (filter, first, last, 2896, "epsg", 2896, + "NAD83(HARN) / Michigan North (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999"); + add_proj4text (p, 2, + "968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); + add_proj4text (p, 3, + "=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Michigan North (ft)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",47.08333333333334],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",45.48333333333333],PARAMETER[\"latitude"); + add_srs_wkt (p, 10, + "_of_origin\",44.78333333333333],PARAMETER[\"central_meri"); + add_srs_wkt (p, 11, + "dian\",-87],PARAMETER[\"false_easting\",26246719.16],PAR"); + add_srs_wkt (p, 12, + "AMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUTHOR"); + add_srs_wkt (p, 13, + "ITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 14, + "H],AUTHORITY[\"EPSG\",\"2896\"]]"); + p = add_epsg_def (filter, first, last, 2897, "epsg", 2897, + "NAD83(HARN) / Michigan Central (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43"); + add_proj4text (p, 1, + ".31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.9"); + add_proj4text (p, 2, + "99976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +uni"); + add_proj4text (p, 3, + "ts=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Michigan Central (ft)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",45.7],PARAMETER[\"standard_paralle"); + add_srs_wkt (p, 9, + "l_2\",44.18333333333333],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",43.31666666666667],PARAMETER[\"central_meridian\",-84.3"); + add_srs_wkt (p, 11, + "6666666666666],PARAMETER[\"false_easting\",19685039.37],"); + add_srs_wkt (p, 12, + "PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 14, + "ORTH],AUTHORITY[\"EPSG\",\"2897\"]]"); + p = add_epsg_def (filter, first, last, 2898, "epsg", 2898, + "NAD83(HARN) / Michigan South (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41"); + add_proj4text (p, 1, + ".5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 "); + add_proj4text (p, 2, + "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Michigan South (ft)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",43.66666666666666],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",42.1],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "41.5],PARAMETER[\"central_meridian\",-84.36666666666666]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_easting\",13123359.58],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"2898\"]]"); + p = add_epsg_def (filter, first, last, 2899, "epsg", 2899, + "NAD83(HARN) / Mississippi East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84"); + add_proj4text (p, 2, + "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Mississippi East (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); + add_srs_wkt (p, 2, + "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",29.5],PARAMETER[\"central_meridian\",-88"); + add_srs_wkt (p, 9, + ".83333333333333],PARAMETER[\"scale_factor\",0.99995],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_easting\",984250.0000000002],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 12, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2899\"]]"); + p = add_epsg_def (filter, first, last, 2900, "epsg", 2900, + "NAD83(HARN) / Mississippi West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84"); + add_proj4text (p, 2, + "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Mississippi West (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); + add_srs_wkt (p, 2, + "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",29.5],PARAMETER[\"central_meridian\",-90"); + add_srs_wkt (p, 9, + ".33333333333333],PARAMETER[\"scale_factor\",0.99995],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_easting\",2296583.333],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",0],UNIT[\"US survey foot\",0.3048006096012192"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 13, + "\",NORTH],AUTHORITY[\"EPSG\",\"2900\"]]"); + p = add_epsg_def (filter, first, last, 2901, "epsg", 2901, + "NAD83(HARN) / Montana (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5"); + add_proj4text (p, 1, + " +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); + add_proj4text (p, 2, + "0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Montana (ft)\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",49],PARAMETER[\"standard_parallel_2\",45],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",44.25],PARAMETER[\"cent"); + add_srs_wkt (p, 10, + "ral_meridian\",-109.5],PARAMETER[\"false_easting\",19685"); + add_srs_wkt (p, 11, + "03.937],PARAMETER[\"false_northing\",0],UNIT[\"foot\",0."); + add_srs_wkt (p, 12, + "3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 13, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2901\"]]"); + p = add_epsg_def (filter, first, last, 2902, "epsg", 2902, + "NAD83(HARN) / New Mexico East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); + add_proj4text (p, 1, + "909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New Mexico East (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",31],PARAMETER[\"central_meridian\",-104.33"); + add_srs_wkt (p, 9, + "33333333333],PARAMETER[\"scale_factor\",0.999909091],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_easting\",541337.5],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 13, + "NORTH],AUTHORITY[\"EPSG\",\"2902\"]]"); + p = add_epsg_def (filter, first, last, 2903, "epsg", 2903, + "NAD83(HARN) / New Mexico Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=5000"); + add_proj4text (p, 1, + "00.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New Mexico Central (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_"); + add_srs_wkt (p, 2, + "Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",31],PARAMETER[\"central_meridian\",-10"); + add_srs_wkt (p, 9, + "6.25],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",1640416.667],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 11, + "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"2903\"]]"); + p = add_epsg_def (filter, first, last, 2904, "epsg", 2904, + "NAD83(HARN) / New Mexico West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); + add_proj4text (p, 1, + "916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs"); + add_proj4text (p, 2, + "84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New Mexico West (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",31],PARAMETER[\"central_meridian\",-107.83"); + add_srs_wkt (p, 9, + "33333333333],PARAMETER[\"scale_factor\",0.999916667],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_easting\",2723091.667],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",0],UNIT[\"US survey foot\",0.3048006096012192"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 13, + "\",NORTH],AUTHORITY[\"EPSG\",\"2904\"]]"); + p = add_epsg_def (filter, first, last, 2905, "epsg", 2905, + "NAD83(HARN) / New York East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New York East (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",38.83333333333334],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",-74.5],PARAMETER[\"scale_factor\",0.9999],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",492125],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"2905\"]]"); + p = add_epsg_def (filter, first, last, 2906, "epsg", 2906, + "NAD83(HARN) / New York Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84"); + add_proj4text (p, 2, + "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New York Central (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); + add_srs_wkt (p, 2, + "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",40],PARAMETER[\"central_meridian\",-76.5"); + add_srs_wkt (p, 9, + "8333333333333],PARAMETER[\"scale_factor\",0.9999375],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_easting\",820208.3330000002],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 12, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2906\"]]"); + p = add_epsg_def (filter, first, last, 2907, "epsg", 2907, + "NAD83(HARN) / New York West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84"); + add_proj4text (p, 2, + "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New York West (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",40],PARAMETER[\"central_meridian\",-78.5833"); + add_srs_wkt (p, 9, + "3333333333],PARAMETER[\"scale_factor\",0.9999375],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",1148291.667],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 13, + "NORTH],AUTHORITY[\"EPSG\",\"2907\"]]"); + p = add_epsg_def (filter, first, last, 2908, "epsg", 2908, + "NAD83(HARN) / New York Long Island (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000"); + add_proj4text (p, 2, + "000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); + add_proj4text (p, 3, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New York Long Island (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Referenc"); + add_srs_wkt (p, 2, + "e_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 7, + "52\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_1\",41.03333333333333],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"standard_parallel_2\",40.66666666666666],PARAMETER[\""); + add_srs_wkt (p, 10, + "latitude_of_origin\",40.16666666666666],PARAMETER[\"cent"); + add_srs_wkt (p, 11, + "ral_meridian\",-74],PARAMETER[\"false_easting\",984250.0"); + add_srs_wkt (p, 12, + "000000002],PARAMETER[\"false_northing\",0],UNIT[\"US sur"); + add_srs_wkt (p, 13, + "vey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 14, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 15, + ",\"2908\"]]"); + p = add_epsg_def (filter, first, last, 2909, "epsg", 2909, + "NAD83(HARN) / North Dakota North (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333"); + add_proj4text (p, 1, + "333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +"); + add_proj4text (p, 2, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / North Dakota North (ft)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); + add_srs_wkt (p, 2, + "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",48.73333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",47.43333333333333],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",47],PARAMETER[\"central_meridian\",-10"); + add_srs_wkt (p, 11, + "0.5],PARAMETER[\"false_easting\",1968503.937],PARAMETER["); + add_srs_wkt (p, 12, + "\"false_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 14, + "ORITY[\"EPSG\",\"2909\"]]"); + p = add_epsg_def (filter, first, last, 2910, "epsg", 2910, + "NAD83(HARN) / North Dakota South (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333"); + add_proj4text (p, 1, + "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9"); + add_proj4text (p, 2, + "999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); + add_proj4text (p, 3, + "=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / North Dakota South (ft)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); + add_srs_wkt (p, 2, + "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",47.48333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",46.18333333333333],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",45.66666666666666],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-100.5],PARAMETER[\"false_easting\",1968503."); + add_srs_wkt (p, 12, + "937],PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.304"); + add_srs_wkt (p, 13, + "8,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"2910\"]]"); + p = add_epsg_def (filter, first, last, 2911, "epsg", 2911, + "NAD83(HARN) / Oklahoma North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Oklahoma North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",36.76666666666667],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",35.56666666666667],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",35],PARAMETER[\"central_meridian\",-98],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",1968500],PARAMETER[\"false_no"); + add_srs_wkt (p, 12, + "rthing\",0],UNIT[\"US survey foot\",0.3048006096012192,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"2911\"]]"); + p = add_epsg_def (filter, first, last, 2912, "epsg", 2912, + "NAD83(HARN) / Oklahoma South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); + add_proj4text (p, 3, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Oklahoma South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",35.23333333333333],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",33.93333333333333],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",33.33333333333334],PARAMETER[\"central_me"); + add_srs_wkt (p, 11, + "ridian\",-98],PARAMETER[\"false_easting\",1968500],PARAM"); + add_srs_wkt (p, 12, + "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); + add_srs_wkt (p, 13, + "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 14, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2912\"]]"); + p = add_epsg_def (filter, first, last, 2913, "epsg", 2913, + "NAD83(HARN) / Oregon North (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 "); + add_proj4text (p, 2, + "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Oregon North (ft)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",46],PARAMETER[\"standard_parallel_2\",4"); + add_srs_wkt (p, 9, + "4.33333333333334],PARAMETER[\"latitude_of_origin\",43.66"); + add_srs_wkt (p, 10, + "666666666666],PARAMETER[\"central_meridian\",-120.5],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",8202099.738],PARAMETER[\"false_"); + add_srs_wkt (p, 12, + "northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"2913\"]]"); + p = add_epsg_def (filter, first, last, 2914, "epsg", 2914, + "NAD83(HARN) / Oregon South (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 "); + add_proj4text (p, 2, + "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Oregon South (ft)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",44],PARAMETER[\"standard_parallel_2\",4"); + add_srs_wkt (p, 9, + "2.33333333333334],PARAMETER[\"latitude_of_origin\",41.66"); + add_srs_wkt (p, 10, + "666666666666],PARAMETER[\"central_meridian\",-120.5],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",4921259.843],PARAMETER[\"false_"); + add_srs_wkt (p, 12, + "northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"2914\"]]"); + p = add_epsg_def (filter, first, last, 2915, "epsg", 2915, + "NAD83(HARN) / Tennessee (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=3"); + add_proj4text (p, 1, + "4.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GR"); + add_proj4text (p, 2, + "S80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Tennessee (ftUS)\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",36.41666666666666],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",35.25],PARAMETER[\"latitude_of_origin\",34"); + add_srs_wkt (p, 10, + ".33333333333334],PARAMETER[\"central_meridian\",-86],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",1968500],PARAMETER[\"false_nort"); + add_srs_wkt (p, 12, + "hing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 14, + "ORTH],AUTHORITY[\"EPSG\",\"2915\"]]"); + p = add_epsg_def (filter, first, last, 2916, "epsg", 2916, + "NAD83(HARN) / Texas North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=3"); + add_proj4text (p, 1, + "4 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.99989"); + add_proj4text (p, 2, + "83998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Texas North (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",36.18333333333333],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",34.65],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",34],PARAMETER[\"central_meridian\",-101.5],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",656166.667],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",3280833.333],UNIT[\"US survey foot\",0.3048006096012192"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 14, + "\",NORTH],AUTHORITY[\"EPSG\",\"2916\"]]"); + p = add_epsg_def (filter, first, last, 2917, "epsg", 2917, + "NAD83(HARN) / Texas North Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333"); + add_proj4text (p, 1, + "333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 3, + "units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Texas North Central (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference"); + add_srs_wkt (p, 2, + "_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"415"); + add_srs_wkt (p, 7, + "2\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_1\",33.96666666666667],PARAMETER"); + add_srs_wkt (p, 9, + "[\"standard_parallel_2\",32.13333333333333],PARAMETER[\""); + add_srs_wkt (p, 10, + "latitude_of_origin\",31.66666666666667],PARAMETER[\"cent"); + add_srs_wkt (p, 11, + "ral_meridian\",-98.5],PARAMETER[\"false_easting\",196850"); + add_srs_wkt (p, 12, + "0],PARAMETER[\"false_northing\",6561666.667],UNIT[\"US s"); + add_srs_wkt (p, 13, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 14, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 15, + "G\",\"2917\"]]"); + p = add_epsg_def (filter, first, last, 2918, "epsg", 2918, + "NAD83(HARN) / Texas Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666"); + add_proj4text (p, 1, + "667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); + add_proj4text (p, 2, + "x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84"); + add_proj4text (p, 3, + "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Texas Central (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",31.88333333333333],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",30.11666666666667],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",29.66666666666667],PARAMETER[\"central_me"); + add_srs_wkt (p, 11, + "ridian\",-100.3333333333333],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 12, + ",2296583.333],PARAMETER[\"false_northing\",9842500.00000"); + add_srs_wkt (p, 13, + "0002],UNIT[\"US survey foot\",0.3048006096012192,AUTHORI"); + add_srs_wkt (p, 14, + "TY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 15, + "],AUTHORITY[\"EPSG\",\"2918\"]]"); + p = add_epsg_def (filter, first, last, 2919, "epsg", 2919, + "NAD83(HARN) / Texas South Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333"); + add_proj4text (p, 1, + "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +un"); + add_proj4text (p, 3, + "its=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Texas South Central (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference"); + add_srs_wkt (p, 2, + "_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"415"); + add_srs_wkt (p, 7, + "2\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_1\",30.28333333333333],PARAMETER"); + add_srs_wkt (p, 9, + "[\"standard_parallel_2\",28.38333333333333],PARAMETER[\""); + add_srs_wkt (p, 10, + "latitude_of_origin\",27.83333333333333],PARAMETER[\"cent"); + add_srs_wkt (p, 11, + "ral_meridian\",-99],PARAMETER[\"false_easting\",1968500]"); + add_srs_wkt (p, 12, + ",PARAMETER[\"false_northing\",13123333.333],UNIT[\"US su"); + add_srs_wkt (p, 13, + "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); + add_srs_wkt (p, 14, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 15, + "\",\"2919\"]]"); + p = add_epsg_def (filter, first, last, 2920, "epsg", 2920, + "NAD83(HARN) / Texas South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.00"); + add_proj4text (p, 2, + "00000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 3, + "0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Texas South (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",27.83333333333333],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",26.16666666666667],PARAMETER[\"latitude"); + add_srs_wkt (p, 10, + "_of_origin\",25.66666666666667],PARAMETER[\"central_meri"); + add_srs_wkt (p, 11, + "dian\",-98.5],PARAMETER[\"false_easting\",984250.0000000"); + add_srs_wkt (p, 12, + "002],PARAMETER[\"false_northing\",16404166.667],UNIT[\"U"); + add_srs_wkt (p, 13, + "S survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 15, + "EPSG\",\"2920\"]]"); + p = add_epsg_def (filter, first, last, 2921, "epsg", 2921, + "NAD83(HARN) / Utah North (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0"); + add_proj4text (p, 2, + "001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 3, + "0,0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Utah North (ft)\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",41.78333333333333],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",40.71666666666667],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",40.33333333333334],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 11, + "n\",-111.5],PARAMETER[\"false_easting\",1640419.948],PAR"); + add_srs_wkt (p, 12, + "AMETER[\"false_northing\",3280839.895],UNIT[\"foot\",0.3"); + add_srs_wkt (p, 13, + "048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 14, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2921\"]]"); + p = add_epsg_def (filter, first, last, 2922, "epsg", 2922, + "NAD83(HARN) / Utah Central (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); + add_proj4text (p, 1, + "8.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0="); + add_proj4text (p, 2, + "1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 3, + "s=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Utah Central (ft)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",40.65],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",39.01666666666667],PARAMETER[\"latitude_of_origin\",38."); + add_srs_wkt (p, 10, + "33333333333334],PARAMETER[\"central_meridian\",-111.5],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",1640419.948],PARAMETER[\"fals"); + add_srs_wkt (p, 12, + "e_northing\",6561679.79],UNIT[\"foot\",0.3048,AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 14, + "UTHORITY[\"EPSG\",\"2922\"]]"); + p = add_epsg_def (filter, first, last, 2923, "epsg", 2923, + "NAD83(HARN) / Utah South (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); + add_proj4text (p, 1, + "6.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0="); + add_proj4text (p, 2, + "2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 3, + "s=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Utah South (ft)\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",38.35],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",37.21666666666667],PARAMETER[\"latitude_of_origin\",36."); + add_srs_wkt (p, 10, + "66666666666666],PARAMETER[\"central_meridian\",-111.5],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",1640419.948],PARAMETER[\"fals"); + add_srs_wkt (p, 12, + "e_northing\",9842519.685],UNIT[\"foot\",0.3048,AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 14, + "AUTHORITY[\"EPSG\",\"2923\"]]"); + p = add_epsg_def (filter, first, last, 2924, "epsg", 2924, + "NAD83(HARN) / Virginia North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2"); + add_proj4text (p, 2, + "000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 3, + "s=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Virginia North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",39.2],PARAMETER[\"standard_paralle"); + add_srs_wkt (p, 9, + "l_2\",38.03333333333333],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",37.66666666666666],PARAMETER[\"central_meridian\",-78.5"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_easting\",11482916.667],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",6561666.667],UNIT[\"US survey foot\",0."); + add_srs_wkt (p, 13, + "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 14, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2924\"]]"); + p = add_epsg_def (filter, first, last, 2925, "epsg", 2925, + "NAD83(HARN) / Virginia South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0"); + add_proj4text (p, 2, + "001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 3, + "0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Virginia South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",37.96666666666667],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",36.76666666666667],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",36.33333333333334],PARAMETER[\"central_me"); + add_srs_wkt (p, 11, + "ridian\",-78.5],PARAMETER[\"false_easting\",11482916.667"); + add_srs_wkt (p, 12, + "],PARAMETER[\"false_northing\",3280833.333],UNIT[\"US su"); + add_srs_wkt (p, 13, + "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); + add_srs_wkt (p, 14, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 15, + "\",\"2925\"]]"); + p = add_epsg_def (filter, first, last, 2926, "epsg", 2926, + "NAD83(HARN) / Washington North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47"); + add_proj4text (p, 1, + " +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0"); + add_proj4text (p, 2, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_de"); + add_proj4text (p, 3, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Washington North (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); + add_srs_wkt (p, 2, + "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",48.73333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",47.5],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 10, + "in\",47],PARAMETER[\"central_meridian\",-120.83333333333"); + add_srs_wkt (p, 11, + "33],PARAMETER[\"false_easting\",1640416.667],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 13, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 14, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2926\"]]"); + p = add_epsg_def (filter, first, last, 2927, "epsg", 2927, + "NAD83(HARN) / Washington South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333"); + add_proj4text (p, 1, + "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0"); + add_proj4text (p, 2, + "001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +un"); + add_proj4text (p, 3, + "its=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Washington South (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Ne"); + add_srs_wkt (p, 2, + "twork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",47.33333333333334],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",45.83333333333334],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",45.33333333333334],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-120.5],PARAMETER[\"false_easting\",1640416."); + add_srs_wkt (p, 12, + "667],PARAMETER[\"false_northing\",0],UNIT[\"US survey fo"); + add_srs_wkt (p, 13, + "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); + add_srs_wkt (p, 14, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"29"); + add_srs_wkt (p, 15, + "27\"]]"); + p = add_epsg_def (filter, first, last, 2928, "epsg", 2928, + "NAD83(HARN) / Wisconsin North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); + add_proj4text (p, 3, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Wisconsin North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",46.76666666666667],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",45.56666666666667],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",45.16666666666666],PARAMETER[\"central_me"); + add_srs_wkt (p, 11, + "ridian\",-90],PARAMETER[\"false_easting\",1968500],PARAM"); + add_srs_wkt (p, 12, + "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); + add_srs_wkt (p, 13, + "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 14, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2928\"]]"); + p = add_epsg_def (filter, first, last, 2929, "epsg", 2929, + "NAD83(HARN) / Wisconsin Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333"); + add_proj4text (p, 1, + "334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Wisconsin Central (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); + add_srs_wkt (p, 2, + "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",45.5],PARAMETER[\"standard_para"); + add_srs_wkt (p, 9, + "llel_2\",44.25],PARAMETER[\"latitude_of_origin\",43.8333"); + add_srs_wkt (p, 10, + "3333333334],PARAMETER[\"central_meridian\",-90],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_easting\",1968500],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 14, + "AUTHORITY[\"EPSG\",\"2929\"]]"); + p = add_epsg_def (filter, first, last, 2930, "epsg", 2930, + "NAD83(HARN) / Wisconsin South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Wisconsin South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",44.06666666666667],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",42.73333333333333],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",42],PARAMETER[\"central_meridian\",-90],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",1968500],PARAMETER[\"false_no"); + add_srs_wkt (p, 12, + "rthing\",0],UNIT[\"US survey foot\",0.3048006096012192,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"2930\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_09.c b/src/spatialite/src/srsinit/epsg_inlined_09.c new file mode 100644 index 0000000..1a02152 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_09.c @@ -0,0 +1,3376 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_09 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 2931, "epsg", 2931, + "Beduaram / TM 13 NE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +a=6378249.2 +b=6356515 +towgs84=-106,-87,188,0,0,0,"); + add_proj4text (p, 2, + "0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beduaram / TM 13 NE\",GEOGCS[\"Beduaram\",DATUM"); + add_srs_wkt (p, 1, + "[\"Beduaram\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,2"); + add_srs_wkt (p, 2, + "93.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "106,-87,188,0,0,0,0],AUTHORITY[\"EPSG\",\"6213\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4213\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",13],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"2931\"]]"); + p = add_epsg_def (filter, first, last, 2932, "epsg", 2932, + "QND95 / Qatar National Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.9"); + add_proj4text (p, 1, + "9999 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-119.4"); + add_proj4text (p, 2, + "25,-303.659,-11.0006,1.1643,0.174458,1.09626,3.65706 +un"); + add_proj4text (p, 3, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"QND95 / Qatar National Grid\",GEOGCS[\"QND95\","); + add_srs_wkt (p, 1, + "DATUM[\"Qatar_National_Datum_1995\",SPHEROID[\"Internati"); + add_srs_wkt (p, 2, + "onal 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[-119.425,-303.659,-11.0006,1.1643,0.174458,1.09626"); + add_srs_wkt (p, 4, + ",3.65706],AUTHORITY[\"EPSG\",\"6614\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4614\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_origin\",24.45],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",51.21666666666667],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 10, + "or\",0.99999],PARAMETER[\"false_easting\",200000],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_northing\",300000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 13, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"2932\"]]"); + p = add_epsg_def (filter, first, last, 2933, "epsg", 2933, + "Segara / UTM zone 50S"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +south +ellps=bessel +towgs84=-403,68"); + add_proj4text (p, 1, + "4,41,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Segara / UTM zone 50S\",GEOGCS[\"Segara\",DATUM"); + add_srs_wkt (p, 1, + "[\"Gunung_Segara\",SPHEROID[\"Bessel 1841\",6377397.155,"); + add_srs_wkt (p, 2, + "299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-403,6"); + add_srs_wkt (p, 3, + "84,41,0,0,0,0],AUTHORITY[\"EPSG\",\"6613\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4613\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",117],PARAMETER[\"scale_factor\",0.9996],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"2933\"]]"); + p = add_epsg_def (filter, first, last, 2934, "epsg", 2934, + "Segara (Jakarta) / NEIEZ (deprecated)"); + add_proj4text (p, 0, + "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 "); + add_proj4text (p, 1, + "+ellps=bessel +towgs84=-403,684,41,0,0,0,0 +pm=jakarta +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Segara (Jakarta) / NEIEZ (deprecated)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Segara (Jakarta)\",DATUM[\"Gunung_Segara_Jakarta\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7004\"]],TOWGS84[-403,684,41,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6820\"]],PRIMEM[\"Jakarta\",106.8077194444"); + add_srs_wkt (p, 5, + "444,AUTHORITY[\"EPSG\",\"8908\"]],UNIT[\"degree\",0.0174"); + add_srs_wkt (p, 6, + "532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 7, + "PSG\",\"4820\"]],PROJECTION[\"Mercator_1SP\"],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",110],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "97],PARAMETER[\"false_easting\",3900000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",900000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"2934\"]]"); + p = add_epsg_def (filter, first, last, 2935, "epsg", 2935, + "Pulkovo 1942 / CS63 zone A1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=41.53333333"); + add_proj4text (p, 1, + "333333 +k=1 +x_0=1300000 +y_0=0 +ellps=krass +towgs84=23"); + add_proj4text (p, 2, + ".92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / CS63 zone A1\",GEOGCS[\"Pulkovo "); + add_srs_wkt (p, 1, + "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); + add_srs_wkt (p, 2, + "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); + add_srs_wkt (p, 3, + "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0.1166666666666667],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "41.53333333333333],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",1300000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"2935\"]]"); + p = add_epsg_def (filter, first, last, 2936, "epsg", 2936, + "Pulkovo 1942 / CS63 zone A2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=44.53333333"); + add_proj4text (p, 1, + "333333 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +towgs84=23"); + add_proj4text (p, 2, + ".92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / CS63 zone A2\",GEOGCS[\"Pulkovo "); + add_srs_wkt (p, 1, + "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); + add_srs_wkt (p, 2, + "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); + add_srs_wkt (p, 3, + "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0.1166666666666667],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "44.53333333333333],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",2300000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"2936\"]]"); + p = add_epsg_def (filter, first, last, 2937, "epsg", 2937, + "Pulkovo 1942 / CS63 zone A3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=47.53333333"); + add_proj4text (p, 1, + "333333 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +towgs84=23"); + add_proj4text (p, 2, + ".92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / CS63 zone A3\",GEOGCS[\"Pulkovo "); + add_srs_wkt (p, 1, + "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); + add_srs_wkt (p, 2, + "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); + add_srs_wkt (p, 3, + "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0.1166666666666667],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "47.53333333333333],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",3300000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"2937\"]]"); + p = add_epsg_def (filter, first, last, 2938, "epsg", 2938, + "Pulkovo 1942 / CS63 zone A4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0.1166666666666667 +lon_0=50.53333333"); + add_proj4text (p, 1, + "333333 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +towgs84=23"); + add_proj4text (p, 2, + ".92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / CS63 zone A4\",GEOGCS[\"Pulkovo "); + add_srs_wkt (p, 1, + "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); + add_srs_wkt (p, 2, + "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); + add_srs_wkt (p, 3, + "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0.1166666666666667],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "50.53333333333333],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",4300000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"2938\"]]"); + p = add_epsg_def (filter, first, last, 2939, "epsg", 2939, + "Pulkovo 1942 / CS63 zone K2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=50.76666666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=2300000 +y_0=0 +ellps=krass +towgs84=23"); + add_proj4text (p, 2, + ".92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / CS63 zone K2\",GEOGCS[\"Pulkovo "); + add_srs_wkt (p, 1, + "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); + add_srs_wkt (p, 2, + "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); + add_srs_wkt (p, 3, + "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0.1333333333333333],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "50.76666666666667],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",2300000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"2939\"]]"); + p = add_epsg_def (filter, first, last, 2940, "epsg", 2940, + "Pulkovo 1942 / CS63 zone K3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=53.76666666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=3300000 +y_0=0 +ellps=krass +towgs84=23"); + add_proj4text (p, 2, + ".92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / CS63 zone K3\",GEOGCS[\"Pulkovo "); + add_srs_wkt (p, 1, + "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); + add_srs_wkt (p, 2, + "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); + add_srs_wkt (p, 3, + "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0.1333333333333333],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "53.76666666666667],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",3300000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"2940\"]]"); + p = add_epsg_def (filter, first, last, 2941, "epsg", 2941, + "Pulkovo 1942 / CS63 zone K4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0.1333333333333333 +lon_0=56.76666666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=4300000 +y_0=0 +ellps=krass +towgs84=23"); + add_proj4text (p, 2, + ".92,-141.27,-80.9,-0,0.35,0.82,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / CS63 zone K4\",GEOGCS[\"Pulkovo "); + add_srs_wkt (p, 1, + "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); + add_srs_wkt (p, 2, + "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); + add_srs_wkt (p, 3, + "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0.1333333333333333],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "56.76666666666667],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",4300000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"2941\"]]"); + p = add_epsg_def (filter, first, last, 2942, "epsg", 2942, + "Porto Santo / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=intl +towgs84=-499,-249,314,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Porto Santo / UTM zone 28N\",GEOGCS[\"Porto San"); + add_srs_wkt (p, 1, + "to\",DATUM[\"Porto_Santo_1936\",SPHEROID[\"International"); + add_srs_wkt (p, 2, + " 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[-499,-249,314,0,0,0,0],AUTHORITY[\"EPSG\",\"6615\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4615\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-15],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"2942\"]]"); + p = add_epsg_def (filter, first, last, 2943, "epsg", 2943, + "Selvagem Grande / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=intl +towgs84=-289,-124,60,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Selvagem Grande / UTM zone 28N\",GEOGCS[\"Selva"); + add_srs_wkt (p, 1, + "gem Grande\",DATUM[\"Selvagem_Grande\",SPHEROID[\"Intern"); + add_srs_wkt (p, 2, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[-289,-124,60,0,0,0,0],AUTHORITY[\"EPSG\",\"6616"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4616\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-15],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"2943\"]]"); + p = add_epsg_def (filter, first, last, 2944, "epsg", 2944, + "NAD83(CSRS) / SCoPQ zone 2 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / SCoPQ zone 2 (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); + add_srs_wkt (p, 7, + "17\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-5"); + add_srs_wkt (p, 9, + "5.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",304800],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 11, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 12, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2944\"]]"); + p = add_epsg_def (filter, first, last, 2945, "epsg", 2945, + "NAD83(CSRS) / MTM zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 3\",GEOGCS[\"NAD83(CSRS)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-58.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); + add_srs_wkt (p, 10, + "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2945\"]]"); + p = add_epsg_def (filter, first, last, 2946, "epsg", 2946, + "NAD83(CSRS) / MTM zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 4\",GEOGCS[\"NAD83(CSRS)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-61.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); + add_srs_wkt (p, 10, + "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2946\"]]"); + p = add_epsg_def (filter, first, last, 2947, "epsg", 2947, + "NAD83(CSRS) / MTM zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 5\",GEOGCS[\"NAD83(CSRS)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-64.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); + add_srs_wkt (p, 10, + "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2947\"]]"); + p = add_epsg_def (filter, first, last, 2948, "epsg", 2948, + "NAD83(CSRS) / MTM zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 6\",GEOGCS[\"NAD83(CSRS)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-67.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); + add_srs_wkt (p, 10, + "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2948\"]]"); + p = add_epsg_def (filter, first, last, 2949, "epsg", 2949, + "NAD83(CSRS) / MTM zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 7\",GEOGCS[\"NAD83(CSRS)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-70.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); + add_srs_wkt (p, 10, + "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2949\"]]"); + p = add_epsg_def (filter, first, last, 2950, "epsg", 2950, + "NAD83(CSRS) / MTM zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 8\",GEOGCS[\"NAD83(CSRS)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-73.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); + add_srs_wkt (p, 10, + "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2950\"]]"); + p = add_epsg_def (filter, first, last, 2951, "epsg", 2951, + "NAD83(CSRS) / MTM zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 9\",GEOGCS[\"NAD83(CSRS)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-76.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); + add_srs_wkt (p, 10, + "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2951\"]]"); + p = add_epsg_def (filter, first, last, 2952, "epsg", 2952, + "NAD83(CSRS) / MTM zone 10"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 10\",GEOGCS[\"NAD83(CSRS"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-79.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); + add_srs_wkt (p, 10, + "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "(Y)\",NORTH],AUTHORITY[\"EPSG\",\"2952\"]]"); + p = add_epsg_def (filter, first, last, 2953, "epsg", 2953, + "NAD83(CSRS) / New Brunswick Stereographic"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=2"); + add_proj4text (p, 1, + "500000 +y_0=7500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / New Brunswick Stereographic\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4617\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",46.5],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-66.5],PARAMETER[\"scale_factor\",0.999912],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",2500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",7500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AUTHORITY[\"EPSG\",\"2953\"]]"); + p = add_epsg_def (filter, first, last, 2954, "epsg", 2954, + "NAD83(CSRS) / Prince Edward Isl. Stereographic (NAD83)"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=47.25 +lon_0=-63 +k=0.999912 +x_0=40"); + add_proj4text (p, 1, + "0000 +y_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / Prince Edward Isl. Stereographic "); + add_srs_wkt (p, 1, + "(NAD83)\",GEOGCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_"); + add_srs_wkt (p, 2, + "Spatial_Reference_System\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 3, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 4, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4617\"]],PROJECTION[\"Oblique_Stereographic"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",47.25],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",-63],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 10, + "912],PARAMETER[\"false_easting\",400000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",800000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"2954\"]]"); + p = add_epsg_def (filter, first, last, 2955, "epsg", 2955, + "NAD83(CSRS) / UTM zone 11N"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 11N\",GEOGCS[\"NAD83(CSR"); + add_srs_wkt (p, 1, + "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",-117],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2955\"]]"); + p = add_epsg_def (filter, first, last, 2956, "epsg", 2956, + "NAD83(CSRS) / UTM zone 12N"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 12N\",GEOGCS[\"NAD83(CSR"); + add_srs_wkt (p, 1, + "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",-111],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2956\"]]"); + p = add_epsg_def (filter, first, last, 2957, "epsg", 2957, + "NAD83(CSRS) / UTM zone 13N"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 13N\",GEOGCS[\"NAD83(CSR"); + add_srs_wkt (p, 1, + "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",-105],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2957\"]]"); + p = add_epsg_def (filter, first, last, 2958, "epsg", 2958, + "NAD83(CSRS) / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 17N\",GEOGCS[\"NAD83(CSR"); + add_srs_wkt (p, 1, + "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",-81],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2958\"]]"); + p = add_epsg_def (filter, first, last, 2959, "epsg", 2959, + "NAD83(CSRS) / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 18N\",GEOGCS[\"NAD83(CSR"); + add_srs_wkt (p, 1, + "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",-75],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2959\"]]"); + p = add_epsg_def (filter, first, last, 2960, "epsg", 2960, + "NAD83(CSRS) / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 19N\",GEOGCS[\"NAD83(CSR"); + add_srs_wkt (p, 1, + "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",-69],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2960\"]]"); + p = add_epsg_def (filter, first, last, 2961, "epsg", 2961, + "NAD83(CSRS) / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 20N\",GEOGCS[\"NAD83(CSR"); + add_srs_wkt (p, 1, + "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",-63],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2961\"]]"); + p = add_epsg_def (filter, first, last, 2962, "epsg", 2962, + "NAD83(CSRS) / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 21N\",GEOGCS[\"NAD83(CSR"); + add_srs_wkt (p, 1, + "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",-57],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2962\"]]"); + p = add_epsg_def (filter, first, last, 2964, "epsg", 2964, + "NAD27 / Alaska Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0"); + add_proj4text (p, 1, + "=0 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alaska Albers\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"standard_parallel_1\",55],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",65],PARAMETER[\"latitude_of_center\",50],PARA"); + add_srs_wkt (p, 9, + "METER[\"longitude_of_center\",-154],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",0],PARAMETER[\"false_northing\",0],UNIT[\"US sur"); + add_srs_wkt (p, 11, + "vey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"2964\"]]"); + p = add_epsg_def (filter, first, last, 2965, "epsg", 2965, + "NAD83 / Indiana East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +"); + add_proj4text (p, 2, + "datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Indiana East (ftUS)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",37.5],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-85.66666666666667],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.999966667],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "328083.333],PARAMETER[\"false_northing\",820208.33300000"); + add_srs_wkt (p, 11, + "02],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"2965\"]]"); + p = add_epsg_def (filter, first, last, 2966, "epsg", 2966, + "NAD83 / Indiana West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=900000 +y_0=249999.9998983998 +datum=NAD83"); + add_proj4text (p, 2, + " +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Indiana West (ftUS)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",37.5],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-87.08333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.999966667],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "2952750],PARAMETER[\"false_northing\",820208.3330000002]"); + add_srs_wkt (p, 11, + ",UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"2966\"]]"); + p = add_epsg_def (filter, first, last, 2967, "epsg", 2967, + "NAD83(HARN) / Indiana East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +"); + add_proj4text (p, 2, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Indiana East (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",37.5],PARAMETER[\"central_meridian\",-85.6666"); + add_srs_wkt (p, 9, + "6666666667],PARAMETER[\"scale_factor\",0.999966667],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",328083.333],PARAMETER[\"false_no"); + add_srs_wkt (p, 11, + "rthing\",820208.3330000002],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 12, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 13, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2967\"]]"); + p = add_epsg_def (filter, first, last, 2968, "epsg", 2968, + "NAD83(HARN) / Indiana West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80"); + add_proj4text (p, 2, + " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Indiana West (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",37.5],PARAMETER[\"central_meridian\",-87.0833"); + add_srs_wkt (p, 9, + "3333333333],PARAMETER[\"scale_factor\",0.999966667],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",2952750],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",820208.3330000002],UNIT[\"US survey foot\",0.30480"); + add_srs_wkt (p, 12, + "06096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 13, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2968\"]]"); + p = add_epsg_def (filter, first, last, 2969, "epsg", 2969, + "Fort Marigot / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=intl +towgs84=137,248,-430,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Fort Marigot / UTM zone 20N\",GEOGCS[\"Fort Mar"); + add_srs_wkt (p, 1, + "igot\",DATUM[\"Fort_Marigot\",SPHEROID[\"International 1"); + add_srs_wkt (p, 2, + "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); + add_srs_wkt (p, 3, + "137,248,-430,0,0,0,0],AUTHORITY[\"EPSG\",\"6621\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4621\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-63],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"2969\"]]"); + p = add_epsg_def (filter, first, last, 2970, "epsg", 2970, + "Guadeloupe 1948 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=intl +towgs84=-467,-16,-300,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Guadeloupe 1948 / UTM zone 20N\",GEOGCS[\"Guade"); + add_srs_wkt (p, 1, + "loupe 1948\",DATUM[\"Guadeloupe_1948\",SPHEROID[\"Intern"); + add_srs_wkt (p, 2, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[-467,-16,-300,0,0,0,0],AUTHORITY[\"EPSG\",\"662"); + add_srs_wkt (p, 4, + "2\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4622\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"2970\"]]"); + p = add_epsg_def (filter, first, last, 2971, "epsg", 2971, + "CSG67 / UTM zone 22N"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +ellps=intl +towgs84=-186,230,110,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CSG67 / UTM zone 22N\",GEOGCS[\"CSG67\",DATUM[\""); + add_srs_wkt (p, 1, + "Centre_Spatial_Guyanais_1967\",SPHEROID[\"International "); + add_srs_wkt (p, 2, + "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-186,230,110,0,0,0,0],AUTHORITY[\"EPSG\",\"6623\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4623\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-51],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"2971\"]]"); + p = add_epsg_def (filter, first, last, 2972, "epsg", 2972, + "RGFG95 / UTM zone 22N"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGFG95 / UTM zone 22N\",GEOGCS[\"RGFG95\",DATUM"); + add_srs_wkt (p, 1, + "[\"Reseau_Geodesique_Francais_Guyane_1995\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6624\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4624\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-51],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"2972\"]]"); + p = add_epsg_def (filter, first, last, 2973, "epsg", 2973, + "Martinique 1938 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=intl +towgs84=186,482,151,0,0,"); + add_proj4text (p, 1, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Martinique 1938 / UTM zone 20N\",GEOGCS[\"Marti"); + add_srs_wkt (p, 1, + "nique 1938\",DATUM[\"Martinique_1938\",SPHEROID[\"Intern"); + add_srs_wkt (p, 2, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[186,482,151,0,0,0,0],AUTHORITY[\"EPSG\",\"6625\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4625\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"2973\"]]"); + p = add_epsg_def (filter, first, last, 2975, "epsg", 2975, + "RGR92 / UTM zone 40S"); + add_proj4text (p, 0, + "+proj=utm +zone=40 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGR92 / UTM zone 40S\",GEOGCS[\"RGR92\",DATUM[\""); + add_srs_wkt (p, 1, + "Reseau_Geodesique_de_la_Reunion_1992\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6627\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4627\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",57],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"2975\"]]"); + p = add_epsg_def (filter, first, last, 2976, "epsg", 2976, + "Tahiti 52 / UTM zone 6S"); + add_proj4text (p, 0, + "+proj=utm +zone=6 +south +ellps=intl +towgs84=162,117,15"); + add_proj4text (p, 1, + "4,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tahiti 52 / UTM zone 6S\",GEOGCS[\"Tahiti 52\","); + add_srs_wkt (p, 1, + "DATUM[\"Tahiti_52\",SPHEROID[\"International 1924\",6378"); + add_srs_wkt (p, 2, + "388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[162,117,15"); + add_srs_wkt (p, 3, + "4,0,0,0,0],AUTHORITY[\"EPSG\",\"6628\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4628\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 7, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",-147],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"2976\"]]"); + p = add_epsg_def (filter, first, last, 2977, "epsg", 2977, + "Tahaa 54 / UTM zone 5S"); + add_proj4text (p, 0, + "+proj=utm +zone=5 +south +ellps=intl +towgs84=72.438,345"); + add_proj4text (p, 1, + ".918,79.486,1.6045,0.8823,0.5565,1.3746 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Tahaa 54 / UTM zone 5S\",GEOGCS[\"Tahaa 54\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Tahaa_54\",SPHEROID[\"International 1924\",6378388"); + add_srs_wkt (p, 2, + ",297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[72.438,345.91"); + add_srs_wkt (p, 3, + "8,79.486,1.6045,0.8823,0.5565,1.3746],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6629\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4629\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-153],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2977\"]]"); + p = add_epsg_def (filter, first, last, 2978, "epsg", 2978, + "IGN72 Nuku Hiva / UTM zone 7S"); + add_proj4text (p, 0, + "+proj=utm +zone=7 +south +ellps=intl +towgs84=84,274,65,"); + add_proj4text (p, 1, + "0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGN72 Nuku Hiva / UTM zone 7S\",GEOGCS[\"IGN72 "); + add_srs_wkt (p, 1, + "Nuku Hiva\",DATUM[\"IGN72_Nuku_Hiva\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[84,274,65,0,0,0,0],AUTHORITY[\"EPSG\",\"6630\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"4630\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",-141],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 12, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"2978\"]]"); + p = add_epsg_def (filter, first, last, 2979, "epsg", 2979, + "K0 1949 / UTM zone 42S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,"); + add_proj4text (p, 1, + "103,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"K0 1949 / UTM zone 42S (deprecated)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "K0 1949\",DATUM[\"K0_1949\",SPHEROID[\"International 192"); + add_srs_wkt (p, 2, + "4\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[14"); + add_srs_wkt (p, 3, + "5,-187,103,0,0,0,0],AUTHORITY[\"EPSG\",\"6631\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4631\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",69],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"2979\"]]"); + p = add_epsg_def (filter, first, last, 2980, "epsg", 2980, + "Combani 1950 / UTM zone 38S"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,"); + add_proj4text (p, 1, + "-262,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Combani 1950 / UTM zone 38S\",GEOGCS[\"Combani "); + add_srs_wkt (p, 1, + "1950\",DATUM[\"Combani_1950\",SPHEROID[\"International 1"); + add_srs_wkt (p, 2, + "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-382,-59,-262,0,0,0,0],AUTHORITY[\"EPSG\",\"6632\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4632\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",45],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"2980\"]]"); + p = add_epsg_def (filter, first, last, 2981, "epsg", 2981, + "IGN56 Lifou / UTM zone 58S"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=intl +towgs84=335.47,22"); + add_proj4text (p, 1, + "2.58,-230.94,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGN56 Lifou / UTM zone 58S\",GEOGCS[\"IGN56 Lif"); + add_srs_wkt (p, 1, + "ou\",DATUM[\"IGN56_Lifou\",SPHEROID[\"International 1924"); + add_srs_wkt (p, 2, + "\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[335"); + add_srs_wkt (p, 3, + ".47,222.58,-230.94,0,0,0,0],AUTHORITY[\"EPSG\",\"6633\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4633\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",165],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 12, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"2981\"]]"); + p = add_epsg_def (filter, first, last, 2982, "epsg", 2982, + "IGN72 Grand Terre / UTM zone 58S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=intl +towgs84=-13,-348,"); + add_proj4text (p, 1, + "292,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGN72 Grand Terre / UTM zone 58S (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"IGN72 Grand Terre\",DATUM[\"IGN72_Grande_Terre"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7022\"]],TOWGS84[-13,-348,292,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6634\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\"4634"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",165]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 12, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"2982\"]]"); + p = add_epsg_def (filter, first, last, 2983, "epsg", 2983, + "ST87 Ouvea / UTM zone 58S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=intl +towgs84=-122.383,"); + add_proj4text (p, 1, + "-188.696,103.344,3.5107,-4.9668,-5.7047,4.4798 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ST87 Ouvea / UTM zone 58S (deprecated)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"ST87 Ouvea\",DATUM[\"ST87_Ouvea\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-122.383,-188.696,103.344,3.5107,-4.9668,-5.7047,"); + add_srs_wkt (p, 4, + "4.4798],AUTHORITY[\"EPSG\",\"6635\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 5, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 6, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4635\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); + add_srs_wkt (p, 9, + "ridian\",165],PARAMETER[\"scale_factor\",0.9996],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 12, + "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); + add_srs_wkt (p, 13, + "ITY[\"EPSG\",\"2983\"]]"); + p = add_epsg_def (filter, first, last, 2984, "epsg", 2984, + "RGNC 1991 / Lambert New Caledonia (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +e"); + add_proj4text (p, 2, + "llps=intl +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGNC 1991 / Lambert New Caledonia (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"RGNC 1991\",DATUM[\"Reseau_Geodesique_Nouvelle"); + add_srs_wkt (p, 2, + "_Caledonie_1991\",SPHEROID[\"International 1924\",637838"); + add_srs_wkt (p, 3, + "8,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[0,0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0],AUTHORITY[\"EPSG\",\"6645\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 6, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4645\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",-20.66666666666667],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"standard_parallel_2\",-22.33333333333333],PARA"); + add_srs_wkt (p, 10, + "METER[\"latitude_of_origin\",-21.5],PARAMETER[\"central_"); + add_srs_wkt (p, 11, + "meridian\",166],PARAMETER[\"false_easting\",400000],PARA"); + add_srs_wkt (p, 12, + "METER[\"false_northing\",300000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 13, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 14, + "H],AUTHORITY[\"EPSG\",\"2984\"]]"); + p = add_epsg_def (filter, first, last, 2987, "epsg", 2987, + "Saint Pierre et Miquelon 1950 / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=clrk66 +towgs84=30,430,368,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Saint Pierre et Miquelon 1950 / UTM zone 21N\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Saint Pierre et Miquelon 1950\",DATUM[\"Saint_P"); + add_srs_wkt (p, 2, + "ierre_et_Miquelon_1950\",SPHEROID[\"Clarke 1866\",637820"); + add_srs_wkt (p, 3, + "6.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],TOWG"); + add_srs_wkt (p, 4, + "S84[30,430,368,0,0,0,0],AUTHORITY[\"EPSG\",\"6638\"]],PR"); + add_srs_wkt (p, 5, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 6, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 7, + "]],AUTHORITY[\"EPSG\",\"4638\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 8, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"central_meridian\",-57],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 10, + "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 13, + "H],AUTHORITY[\"EPSG\",\"2987\"]]"); + p = add_epsg_def (filter, first, last, 2988, "epsg", 2988, + "MOP78 / UTM zone 1S"); + add_proj4text (p, 0, + "+proj=utm +zone=1 +south +ellps=intl +towgs84=253,-132,-"); + add_proj4text (p, 1, + "127,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MOP78 / UTM zone 1S\",GEOGCS[\"MOP78\",DATUM[\""); + add_srs_wkt (p, 1, + "MOP78\",SPHEROID[\"International 1924\",6378388,297,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7022\"]],TOWGS84[253,-132,-127,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6639\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4639\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",500000],PARAMETER[\"false_northing\",10000"); + add_srs_wkt (p, 10, + "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); + add_srs_wkt (p, 11, + "[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"2988\"]]"); + p = add_epsg_def (filter, first, last, 2989, "epsg", 2989, + "RRAF 1991 / UTM zone 20N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RRAF 1991 / UTM zone 20N (deprecated)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"RRAF 1991\",DATUM[\"Reseau_de_Reference_des_Antilles_F"); + add_srs_wkt (p, 2, + "rancaises_1991\",SPHEROID[\"WGS 84\",6378137,298.2572235"); + add_srs_wkt (p, 3, + "63,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6640\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4640\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 13, + "989\"]]"); + p = add_epsg_def (filter, first, last, 2990, "epsg", 2990, + "Reunion 1947 / TM Reunion (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333"); + add_proj4text (p, 1, + "333333 +k=1 +x_0=50000 +y_0=160000 +ellps=intl +towgs84="); + add_proj4text (p, 2, + "94,-948,-1262,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Reunion 1947 / TM Reunion (deprecated)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Reunion 1947\",DATUM[\"Reunion_1947\",SPHEROID[\"Inte"); + add_srs_wkt (p, 2, + "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 3, + "]],TOWGS84[94,-948,-1262,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "626\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4626\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "-21.11666666666667],PARAMETER[\"central_meridian\",55.53"); + add_srs_wkt (p, 9, + "333333333333],PARAMETER[\"scale_factor\",1],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",50000],PARAMETER[\"false_northing\",1600"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2990\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 2991, "epsg", 2991, + "NAD83 / Oregon Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120"); + add_proj4text (p, 1, + ".5 +x_0=400000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Oregon Lambert\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",43],PARA"); + add_srs_wkt (p, 8, + "METER[\"standard_parallel_2\",45.5],PARAMETER[\"latitude"); + add_srs_wkt (p, 9, + "_of_origin\",41.75],PARAMETER[\"central_meridian\",-120."); + add_srs_wkt (p, 10, + "5],PARAMETER[\"false_easting\",400000],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 12, + "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"2991\"]]"); + p = add_epsg_def (filter, first, last, 2992, "epsg", 2992, + "NAD83 / Oregon Lambert (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120"); + add_proj4text (p, 1, + ".5 +x_0=399999.9999984 +y_0=0 +datum=NAD83 +units=ft +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Oregon Lambert (ft)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",43],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_2\",45.5],PARAMETER[\"lati"); + add_srs_wkt (p, 9, + "tude_of_origin\",41.75],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 10, + "120.5],PARAMETER[\"false_easting\",1312335.958],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"2992\"]]"); + p = add_epsg_def (filter, first, last, 2993, "epsg", 2993, + "NAD83(HARN) / Oregon Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120"); + add_proj4text (p, 1, + ".5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,"); + add_proj4text (p, 2, + "0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Oregon Lambert\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",43],PARAMETER[\"standard_parallel_2\",45"); + add_srs_wkt (p, 9, + ".5],PARAMETER[\"latitude_of_origin\",41.75],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-120.5],PARAMETER[\"false_easting\",4"); + add_srs_wkt (p, 11, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"2993\"]]"); + p = add_epsg_def (filter, first, last, 2994, "epsg", 2994, + "NAD83(HARN) / Oregon Lambert (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120"); + add_proj4text (p, 1, + ".5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 2, + "0,0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Oregon Lambert (ft)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",43],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",45.5],PARAMETER[\"latitude_of_origin\",41.75],PARAMETER"); + add_srs_wkt (p, 10, + "[\"central_meridian\",-120.5],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",1312335.958],PARAMETER[\"false_northing\",0],UNIT[\"foo"); + add_srs_wkt (p, 12, + "t\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST"); + add_srs_wkt (p, 13, + "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2994\"]]"); + p = add_epsg_def (filter, first, last, 2995, "epsg", 2995, + "IGN53 Mare / UTM zone 58S"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=intl +towgs84=287.58,17"); + add_proj4text (p, 1, + "7.78,-135.41,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGN53 Mare / UTM zone 58S\",GEOGCS[\"IGN53 Mare"); + add_srs_wkt (p, 1, + "\",DATUM[\"IGN53_Mare\",SPHEROID[\"International 1924\","); + add_srs_wkt (p, 2, + "6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[287.58"); + add_srs_wkt (p, 3, + ",177.78,-135.41,0,0,0,0],AUTHORITY[\"EPSG\",\"6641\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4641\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",165],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"2995\"]]"); + p = add_epsg_def (filter, first, last, 2996, "epsg", 2996, + "ST84 Ile des Pins / UTM zone 58S"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=intl +towgs84=-13,-348,"); + add_proj4text (p, 1, + "292,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ST84 Ile des Pins / UTM zone 58S\",GEOGCS[\"ST8"); + add_srs_wkt (p, 1, + "4 Ile des Pins\",DATUM[\"ST84_Ile_des_Pins\",SPHEROID[\""); + add_srs_wkt (p, 2, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "22\"]],TOWGS84[-13,-348,292,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6642\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4642\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"central_meridian\",165],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); + add_srs_wkt (p, 12, + "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2996\"]]"); + p = add_epsg_def (filter, first, last, 2997, "epsg", 2997, + "ST71 Belep / UTM zone 58S"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=intl +towgs84=-480.26,-"); + add_proj4text (p, 1, + "438.32,-643.429,16.3119,20.1721,-4.0349,-111.7 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ST71 Belep / UTM zone 58S\",GEOGCS[\"ST71 Belep"); + add_srs_wkt (p, 1, + "\",DATUM[\"ST71_Belep\",SPHEROID[\"International 1924\","); + add_srs_wkt (p, 2, + "6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-480.2"); + add_srs_wkt (p, 3, + "6,-438.32,-643.429,16.3119,20.1721,-4.0349,-111.7],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6643\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4643"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",165]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 12, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"2997\"]]"); + p = add_epsg_def (filter, first, last, 2998, "epsg", 2998, + "NEA74 Noumea / UTM zone 58S"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=intl +towgs84=-10.18,-3"); + add_proj4text (p, 1, + "50.43,291.37,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NEA74 Noumea / UTM zone 58S\",GEOGCS[\"NEA74 No"); + add_srs_wkt (p, 1, + "umea\",DATUM[\"NEA74_Noumea\",SPHEROID[\"International 1"); + add_srs_wkt (p, 2, + "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-10.18,-350.43,291.37,0,0,0,0],AUTHORITY[\"EPSG\",\"6644"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4644\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",165],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"2998\"]]"); + p = add_epsg_def (filter, first, last, 2999, "epsg", 2999, + "Grand Comoros / UTM zone 38S"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +south +ellps=intl +towgs84=-963,510,"); + add_proj4text (p, 1, + "-359,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Grand Comoros / UTM zone 38S\",GEOGCS[\"Grand C"); + add_srs_wkt (p, 1, + "omoros\",DATUM[\"Grand_Comoros\",SPHEROID[\"Internationa"); + add_srs_wkt (p, 2, + "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[-963,510,-359,0,0,0,0],AUTHORITY[\"EPSG\",\"6646\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4646\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",45],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"2999\"]]"); + p = add_epsg_def (filter, first, last, 3000, "epsg", 3000, + "Segara / NEIEZ"); + add_proj4text (p, 0, + "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 "); + add_proj4text (p, 1, + "+ellps=bessel +towgs84=-403,684,41,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Segara / NEIEZ\",GEOGCS[\"Segara\",DATUM[\"Gunu"); + add_srs_wkt (p, 1, + "ng_Segara\",SPHEROID[\"Bessel 1841\",6377397.155,299.152"); + add_srs_wkt (p, 2, + "8128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-403,684,41,0"); + add_srs_wkt (p, 3, + ",0,0,0],AUTHORITY[\"EPSG\",\"6613\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4613\"]],PROJECTION[\"Mercator_1SP\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"central_meridian\",110],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 8, + "997],PARAMETER[\"false_easting\",3900000],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_northing\",900000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 10, + "\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"3000\"]]"); + p = add_epsg_def (filter, first, last, 3001, "epsg", 3001, + "Batavia / NEIEZ"); + add_proj4text (p, 0, + "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 "); + add_proj4text (p, 1, + "+ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Batavia / NEIEZ\",GEOGCS[\"Batavia\",DATUM[\"Ba"); + add_srs_wkt (p, 1, + "tavia\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-377,681,-50,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6211\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4211\"]],PROJECTION[\"Mercator_1SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "central_meridian\",110],PARAMETER[\"scale_factor\",0.997"); + add_srs_wkt (p, 8, + "],PARAMETER[\"false_easting\",3900000],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_northing\",900000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 10, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"3001\"]]"); + p = add_epsg_def (filter, first, last, 3002, "epsg", 3002, + "Makassar / NEIEZ"); + add_proj4text (p, 0, + "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 "); + add_proj4text (p, 1, + "+ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Makassar / NEIEZ\",GEOGCS[\"Makassar\",DATUM[\""); + add_srs_wkt (p, 1, + "Makassar\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528"); + add_srs_wkt (p, 2, + "128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-587.8,519.75,"); + add_srs_wkt (p, 3, + "145.76,0,0,0,0],AUTHORITY[\"EPSG\",\"6257\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4257\"]],PROJECTION[\"Mercator_1SP\"],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",110],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.997],PARAMETER[\"false_easting\",3900000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",900000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 10, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"3002\"]]"); + p = add_epsg_def (filter, first, last, 3003, "epsg", 3003, + "Monte Mario / Italy zone 1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917,"); + add_proj4text (p, 2, + "0.714,-11.68 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Monte Mario / Italy zone 1\",GEOGCS[\"Monte Mar"); + add_srs_wkt (p, 1, + "io\",DATUM[\"Monte_Mario\",SPHEROID[\"International 1924"); + add_srs_wkt (p, 2, + "\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-10"); + add_srs_wkt (p, 3, + "4.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68],AUTHORITY[\"EP"); + add_srs_wkt (p, 4, + "SG\",\"6265\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4265\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",15000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"3003\"]]"); + p = add_epsg_def (filter, first, last, 3004, "epsg", 3004, + "Monte Mario / Italy zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-2.917"); + add_proj4text (p, 2, + ",0.714,-11.68 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Monte Mario / Italy zone 2\",GEOGCS[\"Monte Mar"); + add_srs_wkt (p, 1, + "io\",DATUM[\"Monte_Mario\",SPHEROID[\"International 1924"); + add_srs_wkt (p, 2, + "\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-10"); + add_srs_wkt (p, 3, + "4.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68],AUTHORITY[\"EP"); + add_srs_wkt (p, 4, + "SG\",\"6265\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4265\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",15],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",252"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"3004\"]]"); + p = add_epsg_def (filter, first, last, 3005, "epsg", 3005, + "NAD83 / BC Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x"); + add_proj4text (p, 1, + "_0=1000000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BC Albers\",GEOGCS[\"NAD83\",DATUM[\"No"); + add_srs_wkt (p, 1, + "rth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,"); + add_srs_wkt (p, 2, + "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4269\"]],PROJECTION[\"Albers_Conic_Equal_Are"); + add_srs_wkt (p, 7, + "a\"],PARAMETER[\"standard_parallel_1\",50],PARAMETER[\"s"); + add_srs_wkt (p, 8, + "tandard_parallel_2\",58.5],PARAMETER[\"latitude_of_cente"); + add_srs_wkt (p, 9, + "r\",45],PARAMETER[\"longitude_of_center\",-126],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",1000000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"3005\"]]"); + p = add_epsg_def (filter, first, last, 3006, "epsg", 3006, + "SWEREF99 TM"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 TM\",GEOGCS[\"SWEREF99\",DATUM[\"SWERE"); + add_srs_wkt (p, 1, + "F99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\"]]"); + add_srs_wkt (p, 6, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 7, + "e_of_origin\",0],PARAMETER[\"central_meridian\",15],PARA"); + add_srs_wkt (p, 8, + "METER[\"scale_factor\",0.9996],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30"); + add_srs_wkt (p, 11, + "06\"]]"); + p = add_epsg_def (filter, first, last, 3007, "epsg", 3007, + "SWEREF99 12 00"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=150000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 12 00\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); + add_srs_wkt (p, 1, + "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",12],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 10, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3007"); + add_srs_wkt (p, 11, + "\"]]"); + p = add_epsg_def (filter, first, last, 3008, "epsg", 3008, + "SWEREF99 13 30"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=150000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 13 30\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); + add_srs_wkt (p, 1, + "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",13.5],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"300"); + add_srs_wkt (p, 11, + "8\"]]"); + p = add_epsg_def (filter, first, last, 3009, "epsg", 3009, + "SWEREF99 15 00"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=150000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 15 00\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); + add_srs_wkt (p, 1, + "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",15],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 10, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3009"); + add_srs_wkt (p, 11, + "\"]]"); + p = add_epsg_def (filter, first, last, 3010, "epsg", 3010, + "SWEREF99 16 30"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=150000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 16 30\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); + add_srs_wkt (p, 1, + "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",16.5],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"301"); + add_srs_wkt (p, 11, + "0\"]]"); + p = add_epsg_def (filter, first, last, 3011, "epsg", 3011, + "SWEREF99 18 00"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=150000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 18 00\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); + add_srs_wkt (p, 1, + "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",18],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 10, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3011"); + add_srs_wkt (p, 11, + "\"]]"); + p = add_epsg_def (filter, first, last, 3012, "epsg", 3012, + "SWEREF99 14 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=14.25 +k=1 +x_0=150000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 14 15\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); + add_srs_wkt (p, 1, + "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",14.25]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30"); + add_srs_wkt (p, 11, + "12\"]]"); + p = add_epsg_def (filter, first, last, 3013, "epsg", 3013, + "SWEREF99 15 45"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15.75 +k=1 +x_0=150000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 15 45\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); + add_srs_wkt (p, 1, + "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",15.75]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30"); + add_srs_wkt (p, 11, + "13\"]]"); + p = add_epsg_def (filter, first, last, 3014, "epsg", 3014, + "SWEREF99 17 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=17.25 +k=1 +x_0=150000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 17 15\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); + add_srs_wkt (p, 1, + "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",17.25]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30"); + add_srs_wkt (p, 11, + "14\"]]"); + p = add_epsg_def (filter, first, last, 3015, "epsg", 3015, + "SWEREF99 18 45"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18.75 +k=1 +x_0=150000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 18 45\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); + add_srs_wkt (p, 1, + "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",18.75]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30"); + add_srs_wkt (p, 11, + "15\"]]"); + p = add_epsg_def (filter, first, last, 3016, "epsg", 3016, + "SWEREF99 20 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=20.25 +k=1 +x_0=150000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 20 15\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); + add_srs_wkt (p, 1, + "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",20.25]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30"); + add_srs_wkt (p, 11, + "16\"]]"); + p = add_epsg_def (filter, first, last, 3017, "epsg", 3017, + "SWEREF99 21 45"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21.75 +k=1 +x_0=150000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 21 45\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); + add_srs_wkt (p, 1, + "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",21.75]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30"); + add_srs_wkt (p, 11, + "17\"]]"); + p = add_epsg_def (filter, first, last, 3018, "epsg", 3018, + "SWEREF99 23 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=23.25 +k=1 +x_0=150000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 23 15\",GEOGCS[\"SWEREF99\",DATUM[\"SW"); + add_srs_wkt (p, 1, + "EREF99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",23.25]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 10, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30"); + add_srs_wkt (p, 11, + "18\"]]"); + p = add_epsg_def (filter, first, last, 3019, "epsg", 3019, + "RT90 7.5 gon V"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0="); + add_proj4text (p, 1, + "1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-"); + add_proj4text (p, 2, + "0.855,2.141,-7.023,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RT90 7.5 gon V\",GEOGCS[\"RT90\",DATUM[\"Rikets"); + add_srs_wkt (p, 1, + "_koordinatsystem_1990\",SPHEROID[\"Bessel 1841\",6377397"); + add_srs_wkt (p, 2, + ".155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[4"); + add_srs_wkt (p, 3, + "14.1,41.3,603.1,-0.855,2.141,-7.023,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6124\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4124\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",11.30827777777778"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",1500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3019\"]]"); + p = add_epsg_def (filter, first, last, 3020, "epsg", 3020, + "RT90 5 gon V"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0="); + add_proj4text (p, 1, + "1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-"); + add_proj4text (p, 2, + "0.855,2.141,-7.023,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RT90 5 gon V\",GEOGCS[\"RT90\",DATUM[\"Rikets_k"); + add_srs_wkt (p, 1, + "oordinatsystem_1990\",SPHEROID[\"Bessel 1841\",6377397.1"); + add_srs_wkt (p, 2, + "55,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[414"); + add_srs_wkt (p, 3, + ".1,41.3,603.1,-0.855,2.141,-7.023,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6124\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4124\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"central_meridian\",13.55827777777778]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",1500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3020\"]]"); + p = add_epsg_def (filter, first, last, 3021, "epsg", 3021, + "RT90 2.5 gon V"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0="); + add_proj4text (p, 1, + "1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-"); + add_proj4text (p, 2, + "0.855,2.141,-7.023,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RT90 2.5 gon V\",GEOGCS[\"RT90\",DATUM[\"Rikets"); + add_srs_wkt (p, 1, + "_koordinatsystem_1990\",SPHEROID[\"Bessel 1841\",6377397"); + add_srs_wkt (p, 2, + ".155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[4"); + add_srs_wkt (p, 3, + "14.1,41.3,603.1,-0.855,2.141,-7.023,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6124\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4124\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",15.80827777777778"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",1500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3021\"]]"); + p = add_epsg_def (filter, first, last, 3022, "epsg", 3022, + "RT90 0 gon"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0="); + add_proj4text (p, 1, + "1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-"); + add_proj4text (p, 2, + "0.855,2.141,-7.023,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RT90 0 gon\",GEOGCS[\"RT90\",DATUM[\"Rikets_koo"); + add_srs_wkt (p, 1, + "rdinatsystem_1990\",SPHEROID[\"Bessel 1841\",6377397.155"); + add_srs_wkt (p, 2, + ",299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[414.1"); + add_srs_wkt (p, 3, + ",41.3,603.1,-0.855,2.141,-7.023,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6124\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4124\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",18.05827777777778],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "1500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"302"); + add_srs_wkt (p, 12, + "2\"]]"); + p = add_epsg_def (filter, first, last, 3023, "epsg", 3023, + "RT90 2.5 gon O"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0="); + add_proj4text (p, 1, + "1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-"); + add_proj4text (p, 2, + "0.855,2.141,-7.023,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RT90 2.5 gon O\",GEOGCS[\"RT90\",DATUM[\"Rikets"); + add_srs_wkt (p, 1, + "_koordinatsystem_1990\",SPHEROID[\"Bessel 1841\",6377397"); + add_srs_wkt (p, 2, + ".155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[4"); + add_srs_wkt (p, 3, + "14.1,41.3,603.1,-0.855,2.141,-7.023,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6124\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4124\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",20.30827777777778"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",1500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3023\"]]"); + p = add_epsg_def (filter, first, last, 3024, "epsg", 3024, + "RT90 5 gon O"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0="); + add_proj4text (p, 1, + "1500000 +y_0=0 +ellps=bessel +towgs84=414.1,41.3,603.1,-"); + add_proj4text (p, 2, + "0.855,2.141,-7.023,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RT90 5 gon O\",GEOGCS[\"RT90\",DATUM[\"Rikets_k"); + add_srs_wkt (p, 1, + "oordinatsystem_1990\",SPHEROID[\"Bessel 1841\",6377397.1"); + add_srs_wkt (p, 2, + "55,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[414"); + add_srs_wkt (p, 3, + ".1,41.3,603.1,-0.855,2.141,-7.023,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6124\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4124\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"central_meridian\",22.55827777777778]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",1500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3024\"]]"); + p = add_epsg_def (filter, first, last, 3025, "epsg", 3025, + "RT38 7.5 gon V"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=11.30827777777778 +k=1 +x_0="); + add_proj4text (p, 1, + "1500000 +y_0=0 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RT38 7.5 gon V\",GEOGCS[\"RT38\",DATUM[\"Stockh"); + add_srs_wkt (p, 1, + "olm_1938\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528"); + add_srs_wkt (p, 2, + "128,AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "308\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4308\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "0],PARAMETER[\"central_meridian\",11.30827777777778],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",1"); + add_srs_wkt (p, 9, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 10, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3025"); + add_srs_wkt (p, 11, + "\"]]"); + p = add_epsg_def (filter, first, last, 3026, "epsg", 3026, + "RT38 5 gon V"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=13.55827777777778 +k=1 +x_0="); + add_proj4text (p, 1, + "1500000 +y_0=0 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RT38 5 gon V\",GEOGCS[\"RT38\",DATUM[\"Stockhol"); + add_srs_wkt (p, 1, + "m_1938\",SPHEROID[\"Bessel 1841\",6377397.155,299.152812"); + add_srs_wkt (p, 2, + "8,AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"630"); + add_srs_wkt (p, 3, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4308\"]],PROJECTION[\"T"); + add_srs_wkt (p, 6, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 7, + "],PARAMETER[\"central_meridian\",13.55827777777778],PARA"); + add_srs_wkt (p, 8, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",15"); + add_srs_wkt (p, 9, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 10, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3026\""); + add_srs_wkt (p, 11, + "]]"); + p = add_epsg_def (filter, first, last, 3027, "epsg", 3027, + "RT38 2.5 gon V"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0="); + add_proj4text (p, 1, + "1500000 +y_0=0 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RT38 2.5 gon V\",GEOGCS[\"RT38\",DATUM[\"Stockh"); + add_srs_wkt (p, 1, + "olm_1938\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528"); + add_srs_wkt (p, 2, + "128,AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "308\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4308\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "0],PARAMETER[\"central_meridian\",15.80827777777778],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",1"); + add_srs_wkt (p, 9, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 10, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3027"); + add_srs_wkt (p, 11, + "\"]]"); + p = add_epsg_def (filter, first, last, 3028, "epsg", 3028, + "RT38 0 gon"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18.05827777777778 +k=1 +x_0="); + add_proj4text (p, 1, + "1500000 +y_0=0 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RT38 0 gon\",GEOGCS[\"RT38\",DATUM[\"Stockholm_"); + add_srs_wkt (p, 1, + "1938\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6308\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4308\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",18.05827777777778],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",15000"); + add_srs_wkt (p, 9, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3028\"]]"); + p = add_epsg_def (filter, first, last, 3029, "epsg", 3029, + "RT38 2.5 gon O"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=20.30827777777778 +k=1 +x_0="); + add_proj4text (p, 1, + "1500000 +y_0=0 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RT38 2.5 gon O\",GEOGCS[\"RT38\",DATUM[\"Stockh"); + add_srs_wkt (p, 1, + "olm_1938\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528"); + add_srs_wkt (p, 2, + "128,AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "308\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4308\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "0],PARAMETER[\"central_meridian\",20.30827777777778],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",1"); + add_srs_wkt (p, 9, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 10, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3029"); + add_srs_wkt (p, 11, + "\"]]"); + p = add_epsg_def (filter, first, last, 3030, "epsg", 3030, + "RT38 5 gon O"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=22.55827777777778 +k=1 +x_0="); + add_proj4text (p, 1, + "1500000 +y_0=0 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RT38 5 gon O\",GEOGCS[\"RT38\",DATUM[\"Stockhol"); + add_srs_wkt (p, 1, + "m_1938\",SPHEROID[\"Bessel 1841\",6377397.155,299.152812"); + add_srs_wkt (p, 2, + "8,AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"630"); + add_srs_wkt (p, 3, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4308\"]],PROJECTION[\"T"); + add_srs_wkt (p, 6, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 7, + "],PARAMETER[\"central_meridian\",22.55827777777778],PARA"); + add_srs_wkt (p, 8, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",15"); + add_srs_wkt (p, 9, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 10, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3030\""); + add_srs_wkt (p, 11, + "]]"); + p = add_epsg_def (filter, first, last, 3031, "epsg", 3031, + "WGS 84 / Antarctic Polar Stereographic"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=0 +k=1 +x_0=0 "); + add_proj4text (p, 1, + "+y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / Antarctic Polar Stereographic\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",63781"); + add_srs_wkt (p, 2, + "37,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]"); + add_srs_wkt (p, 6, + ",PROJECTION[\"Polar_Stereographic\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 7, + "e_of_origin\",-71],PARAMETER[\"central_meridian\",0],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 11, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"3031\"]]"); + p = add_epsg_def (filter, first, last, 3032, "epsg", 3032, + "WGS 84 / Australian Antarctic Polar Stereographic"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-71 +lon_0=70 +k=1 +x_0=6"); + add_proj4text (p, 1, + "000000 +y_0=6000000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / Australian Antarctic Polar Stereograph"); + add_srs_wkt (p, 1, + "ic\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS"); + add_srs_wkt (p, 2, + " 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4326\"]],PROJECTION[\"Polar_Stereographic\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",-71],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 8, + "an\",70],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",6000000],PARAMETER[\"false_northing\",6000000"); + add_srs_wkt (p, 10, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"3032\"]]"); + p = add_epsg_def (filter, first, last, 3033, "epsg", 3033, + "WGS 84 / Australian Antarctic Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.5 +lat_2=-74.5 +lat_0=-50 +lon_0=70"); + add_proj4text (p, 1, + " +x_0=6000000 +y_0=6000000 +datum=WGS84 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / Australian Antarctic Lambert\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",-68.5],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-74.5],PARAMETER[\"latitude_of_origin\",-50],PARA"); + add_srs_wkt (p, 9, + "METER[\"central_meridian\",70],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",6000000],PARAMETER[\"false_northing\",6000000],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"303"); + add_srs_wkt (p, 13, + "3\"]]"); + p = add_epsg_def (filter, first, last, 3034, "epsg", 3034, + "ETRS89 / LCC Europe"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4"); + add_proj4text (p, 1, + "000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / LCC Europe\",GEOGCS[\"ETRS89\",DATUM[\""); + add_srs_wkt (p, 1, + "European_Terrestrial_Reference_System_1989\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",35],PARAMETER[\"standard_parallel_2\",65],PARAMETER"); + add_srs_wkt (p, 9, + "[\"latitude_of_origin\",52],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 10, + "\",10],PARAMETER[\"false_easting\",4000000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",2800000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3034\"]]"); + p = add_epsg_def (filter, first, last, 3035, "epsg", 3035, + "ETRS89 / LAEA Europe"); + add_proj4text (p, 0, + "+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / LAEA Europe\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"L"); + add_srs_wkt (p, 7, + "ambert_Azimuthal_Equal_Area\"],PARAMETER[\"latitude_of_c"); + add_srs_wkt (p, 8, + "enter\",52],PARAMETER[\"longitude_of_center\",10],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_easting\",4321000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",3210000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AUTHORITY[\"EPSG\",\"3035\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_10.c b/src/spatialite/src/srsinit/epsg_inlined_10.c new file mode 100644 index 0000000..004d6cd --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_10.c @@ -0,0 +1,3416 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_10 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 3036, "epsg", 3036, + "Moznet / UTM zone 36S"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +south +ellps=WGS84 +towgs84=0,0,0,-0"); + add_proj4text (p, 1, + ",-0,-0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Moznet / UTM zone 36S\",GEOGCS[\"Moznet\",DATUM"); + add_srs_wkt (p, 1, + "[\"Moznet_ITRF94\",SPHEROID[\"WGS 84\",6378137,298.25722"); + add_srs_wkt (p, 2, + "3563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,-0,-0,-"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6130\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4130\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 10, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 11, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"3036\"]]"); + p = add_epsg_def (filter, first, last, 3037, "epsg", 3037, + "Moznet / UTM zone 37S"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +south +ellps=WGS84 +towgs84=0,0,0,-0"); + add_proj4text (p, 1, + ",-0,-0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Moznet / UTM zone 37S\",GEOGCS[\"Moznet\",DATUM"); + add_srs_wkt (p, 1, + "[\"Moznet_ITRF94\",SPHEROID[\"WGS 84\",6378137,298.25722"); + add_srs_wkt (p, 2, + "3563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,-0,-0,-"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6130\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4130\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 10, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 11, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"3037\"]]"); + p = add_epsg_def (filter, first, last, 3038, "epsg", 3038, + "ETRS89 / TM26 (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / TM26 (deprecated)\",GEOGCS[\"ETRS89\","); + add_srs_wkt (p, 1, + "DATUM[\"European_Terrestrial_Reference_System_1989\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-27],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3038\"]]"); + p = add_epsg_def (filter, first, last, 3039, "epsg", 3039, + "ETRS89 / TM27 (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / TM27 (deprecated)\",GEOGCS[\"ETRS89\","); + add_srs_wkt (p, 1, + "DATUM[\"European_Terrestrial_Reference_System_1989\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-21],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3039\"]]"); + p = add_epsg_def (filter, first, last, 3040, "epsg", 3040, + "ETRS89 / UTM zone 28N (N-E)"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 28N (N-E)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-15],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3040\"]]"); + p = add_epsg_def (filter, first, last, 3041, "epsg", 3041, + "ETRS89 / UTM zone 29N (N-E)"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 29N (N-E)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-9],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3041\"]]"); + p = add_epsg_def (filter, first, last, 3042, "epsg", 3042, + "ETRS89 / UTM zone 30N (N-E)"); + add_proj4text (p, 0, + "+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 30N (N-E)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-3],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3042\"]]"); + p = add_epsg_def (filter, first, last, 3043, "epsg", 3043, + "ETRS89 / UTM zone 31N (N-E)"); + add_proj4text (p, 0, + "+proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 31N (N-E)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",3],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9996],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3043\"]]"); + p = add_epsg_def (filter, first, last, 3044, "epsg", 3044, + "ETRS89 / UTM zone 32N (N-E)"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 32N (N-E)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9996],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3044\"]]"); + p = add_epsg_def (filter, first, last, 3045, "epsg", 3045, + "ETRS89 / UTM zone 33N (N-E)"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 33N (N-E)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3045\"]]"); + p = add_epsg_def (filter, first, last, 3046, "epsg", 3046, + "ETRS89 / UTM zone 34N (N-E)"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 34N (N-E)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",21],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3046\"]]"); + p = add_epsg_def (filter, first, last, 3047, "epsg", 3047, + "ETRS89 / UTM zone 35N (N-E)"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 35N (N-E)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",27],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3047\"]]"); + p = add_epsg_def (filter, first, last, 3048, "epsg", 3048, + "ETRS89 / UTM zone 36N (N-E)"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 36N (N-E)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",33],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3048\"]]"); + p = add_epsg_def (filter, first, last, 3049, "epsg", 3049, + "ETRS89 / UTM zone 37N (N-E)"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 37N (N-E)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",39],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3049\"]]"); + p = add_epsg_def (filter, first, last, 3050, "epsg", 3050, + "ETRS89 / TM38 (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / TM38 (deprecated)\",GEOGCS[\"ETRS89\","); + add_srs_wkt (p, 1, + "DATUM[\"European_Terrestrial_Reference_System_1989\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",45],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3050\"]]"); + p = add_epsg_def (filter, first, last, 3051, "epsg", 3051, + "ETRS89 / TM39 (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / TM39 (deprecated)\",GEOGCS[\"ETRS89\","); + add_srs_wkt (p, 1, + "DATUM[\"European_Terrestrial_Reference_System_1989\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",51],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3051\"]]"); + p = add_epsg_def (filter, first, last, 3054, "epsg", 3054, + "Hjorsey 1955 / UTM zone 26N"); + add_proj4text (p, 0, + "+proj=utm +zone=26 +ellps=intl +towgs84=-73,46,-86,0,0,0"); + add_proj4text (p, 1, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Hjorsey 1955 / UTM zone 26N\",GEOGCS[\"Hjorsey "); + add_srs_wkt (p, 1, + "1955\",DATUM[\"Hjorsey_1955\",SPHEROID[\"International 1"); + add_srs_wkt (p, 2, + "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-73,46,-86,0,0,0,0],AUTHORITY[\"EPSG\",\"6658\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4658\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-27],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"3054\"]]"); + p = add_epsg_def (filter, first, last, 3055, "epsg", 3055, + "Hjorsey 1955 / UTM zone 27N"); + add_proj4text (p, 0, + "+proj=utm +zone=27 +ellps=intl +towgs84=-73,46,-86,0,0,0"); + add_proj4text (p, 1, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Hjorsey 1955 / UTM zone 27N\",GEOGCS[\"Hjorsey "); + add_srs_wkt (p, 1, + "1955\",DATUM[\"Hjorsey_1955\",SPHEROID[\"International 1"); + add_srs_wkt (p, 2, + "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-73,46,-86,0,0,0,0],AUTHORITY[\"EPSG\",\"6658\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4658\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-21],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"3055\"]]"); + p = add_epsg_def (filter, first, last, 3056, "epsg", 3056, + "Hjorsey 1955 / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=intl +towgs84=-73,46,-86,0,0,0"); + add_proj4text (p, 1, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Hjorsey 1955 / UTM zone 28N\",GEOGCS[\"Hjorsey "); + add_srs_wkt (p, 1, + "1955\",DATUM[\"Hjorsey_1955\",SPHEROID[\"International 1"); + add_srs_wkt (p, 2, + "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-73,46,-86,0,0,0,0],AUTHORITY[\"EPSG\",\"6658\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4658\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-15],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"3056\"]]"); + p = add_epsg_def (filter, first, last, 3057, "epsg", 3057, + "ISN93 / Lambert 1993"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19"); + add_proj4text (p, 1, + " +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ISN93 / Lambert 1993\",GEOGCS[\"ISN93\",DATUM[\""); + add_srs_wkt (p, 1, + "Islands_Net_1993\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 2, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 3, + ",0],AUTHORITY[\"EPSG\",\"6659\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"4659\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"standard_parallel_1\",64.25],PARAMETER[\"s"); + add_srs_wkt (p, 8, + "tandard_parallel_2\",65.75],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 9, + "in\",65],PARAMETER[\"central_meridian\",-19],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",500"); + add_srs_wkt (p, 11, + "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); + add_srs_wkt (p, 12, + "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3057"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 3058, "epsg", 3058, + "Helle 1954 / Jan Mayen Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-8.5 +k=1 +x_0=50000 +y_0=-7"); + add_proj4text (p, 1, + "800000 +ellps=intl +towgs84=982.609,552.753,-540.873,6.6"); + add_proj4text (p, 2, + "8163,-31.6115,-19.8482,16.805 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Helle 1954 / Jan Mayen Grid\",GEOGCS[\"Helle 19"); + add_srs_wkt (p, 1, + "54\",DATUM[\"Helle_1954\",SPHEROID[\"International 1924\""); + add_srs_wkt (p, 2, + ",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[982.6"); + add_srs_wkt (p, 3, + "09,552.753,-540.873,6.68163,-31.6115,-19.8482,16.805],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6660\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "660\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "8.5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",50000],PARAMETER[\"false_northing\",-7800000],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"3058\"]]"); + p = add_epsg_def (filter, first, last, 3059, "epsg", 3059, + "LKS92 / Latvia TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"LKS92 / Latvia TM\",GEOGCS[\"LKS92\",DATUM[\"La"); + add_srs_wkt (p, 1, + "tvia_1992\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"6661\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); + add_srs_wkt (p, 6, + "61\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 7, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",24"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",500000],PARAMETER[\"false_northing\",-6000000],"); + add_srs_wkt (p, 10, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"3059\"]]"); + p = add_epsg_def (filter, first, last, 3060, "epsg", 3060, + "IGN72 Grande Terre / UTM zone 58S"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=intl +towgs84=-11.64,-3"); + add_proj4text (p, 1, + "48.6,291.98,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGN72 Grande Terre / UTM zone 58S\",GEOGCS[\"IG"); + add_srs_wkt (p, 1, + "N72 Grande Terre\",DATUM[\"IGN72_Grande_Terre\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7022\"]],TOWGS84[-11.64,-348.6,291.98,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6634\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4662\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",165],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",10000000],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "060\"]]"); + p = add_epsg_def (filter, first, last, 3061, "epsg", 3061, + "Porto Santo 1995 / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=intl +towgs84=-502.862,-247.43"); + add_proj4text (p, 1, + "8,312.724,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Porto Santo 1995 / UTM zone 28N\",GEOGCS[\"Port"); + add_srs_wkt (p, 1, + "o Santo 1995\",DATUM[\"Porto_Santo_1995\",SPHEROID[\"Int"); + add_srs_wkt (p, 2, + "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-502.862,-247.438,312.724,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6663\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4663\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",-15],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",0.9996],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3061\"]]"); + p = add_epsg_def (filter, first, last, 3062, "epsg", 3062, + "Azores Oriental 1995 / UTM zone 26N"); + add_proj4text (p, 0, + "+proj=utm +zone=26 +ellps=intl +towgs84=-204.619,140.176"); + add_proj4text (p, 1, + ",55.226,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Azores Oriental 1995 / UTM zone 26N\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Azores Oriental 1995\",DATUM[\"Azores_Oriental_Islands_1"); + add_srs_wkt (p, 2, + "995\",SPHEROID[\"International 1924\",6378388,297,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7022\"]],TOWGS84[-204.619,140.176,55.226,"); + add_srs_wkt (p, 4, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6664\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4664\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); + add_srs_wkt (p, 9, + "ridian\",-27],PARAMETER[\"scale_factor\",0.9996],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"3062\"]]"); + p = add_epsg_def (filter, first, last, 3063, "epsg", 3063, + "Azores Central 1995 / UTM zone 26N"); + add_proj4text (p, 0, + "+proj=utm +zone=26 +ellps=intl +towgs84=-106.226,166.366"); + add_proj4text (p, 1, + ",-37.893,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Azores Central 1995 / UTM zone 26N\",GEOGCS[\"A"); + add_srs_wkt (p, 1, + "zores Central 1995\",DATUM[\"Azores_Central_Islands_1995"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7022\"]],TOWGS84[-106.226,166.366,-37.893,0,"); + add_srs_wkt (p, 4, + "0,0,0],AUTHORITY[\"EPSG\",\"6665\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4665\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",-27],PARAMETER[\"scale_factor\",0.9996],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"3063\"]]"); + p = add_epsg_def (filter, first, last, 3064, "epsg", 3064, + "IGM95 / UTM zone 32N"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGM95 / UTM zone 32N\",GEOGCS[\"IGM95\",DATUM[\""); + add_srs_wkt (p, 1, + "Istituto_Geografico_Militaire_1995\",SPHEROID[\"WGS 84\""); + add_srs_wkt (p, 2, + ",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6670\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4670\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",9],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"3064\"]]"); + p = add_epsg_def (filter, first, last, 3065, "epsg", 3065, + "IGM95 / UTM zone 33N"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGM95 / UTM zone 33N\",GEOGCS[\"IGM95\",DATUM[\""); + add_srs_wkt (p, 1, + "Istituto_Geografico_Militaire_1995\",SPHEROID[\"WGS 84\""); + add_srs_wkt (p, 2, + ",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6670\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4670\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",15],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"3065\"]]"); + p = add_epsg_def (filter, first, last, 3066, "epsg", 3066, + "ED50 / Jordan TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=37 +k=0.9998 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=-3000000 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / Jordan TM\",GEOGCS[\"ED50\",DATUM[\"Euro"); + add_srs_wkt (p, 1, + "pean_Datum_1950\",SPHEROID[\"International 1924\",637838"); + add_srs_wkt (p, 2, + "8,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 8, + "meridian\",37],PARAMETER[\"scale_factor\",0.9998],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_easting\",500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 10, + "\",-3000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"3066\"]]"); + p = add_epsg_def (filter, first, last, 3067, "epsg", 3067, + "ETRS89 / TM35FIN(E,N)"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / TM35FIN(E,N)\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",27],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"3067\"]]"); + p = add_epsg_def (filter, first, last, 3068, "epsg", 3068, + "DHDN / Soldner Berlin"); + add_proj4text (p, 0, + "+proj=cass +lat_0=52.41864827777778 +lon_0=13.6272036666"); + add_proj4text (p, 1, + "6667 +x_0=40000 +y_0=10000 +datum=potsdam +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / Soldner Berlin\",GEOGCS[\"DHDN\",DATUM[\""); + add_srs_wkt (p, 1, + "Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\",6"); + add_srs_wkt (p, 2, + "377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[598.1,73.7,418.2,0.202,0.045,-2.455,6.7],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Cassini_Soldner\"],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 8, + "origin\",52.41864827777778],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",13.62720366666667],PARAMETER[\"false_easting\",40000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",10000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3068\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 3069, "epsg", 3069, + "NAD27 / Wisconsin Transverse Mercator"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=500000 +y"); + add_proj4text (p, 1, + "_0=-4500000 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Wisconsin Transverse Mercator\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",-90],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",-4500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"3069\"]]"); + p = add_epsg_def (filter, first, last, 3070, "epsg", 3070, + "NAD83 / Wisconsin Transverse Mercator"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y"); + add_proj4text (p, 1, + "_0=-4480000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Wisconsin Transverse Mercator\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-90],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",520000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",-4480000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"3070\"]]"); + p = add_epsg_def (filter, first, last, 3071, "epsg", 3071, + "NAD83(HARN) / Wisconsin Transverse Mercator"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y"); + add_proj4text (p, 1, + "_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Wisconsin Transverse Mercator\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refere"); + add_srs_wkt (p, 2, + "nce_Network\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4152\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "90],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",520000],PARAMETER[\"false_northing\",-4480000"); + add_srs_wkt (p, 11, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3071\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 3072, "epsg", 3072, + "NAD83 / Maine CS2000 East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0"); + add_proj4text (p, 1, + ".99998 +x_0=700000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Maine CS2000 East\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",43.83333333333"); + add_srs_wkt (p, 8, + "334],PARAMETER[\"central_meridian\",-67.875],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.99998],PARAMETER[\"false_easting\",7000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"3072\"]]"); + p = add_epsg_def (filter, first, last, 3073, "epsg", 3073, + "NAD83 / Maine CS2000 Central (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500"); + add_proj4text (p, 1, + "000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Maine CS2000 Central (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",43],PARAMETER[\"central_meridian\",-69.125],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.99998],PARAMETER[\"false_easting\",5000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"3073\"]]"); + p = add_epsg_def (filter, first, last, 3074, "epsg", 3074, + "NAD83 / Maine CS2000 West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0"); + add_proj4text (p, 1, + ".99998 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Maine CS2000 West\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",42.83333333333"); + add_srs_wkt (p, 8, + "334],PARAMETER[\"central_meridian\",-70.375],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.99998],PARAMETER[\"false_easting\",3000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"3074\"]]"); + p = add_epsg_def (filter, first, last, 3075, "epsg", 3075, + "NAD83(HARN) / Maine CS2000 East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0"); + add_proj4text (p, 1, + ".99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Maine CS2000 East\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",43.83333333333334],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-67.875],PARAMETER[\"scale_factor\",0.99998],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",700000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 11, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3075\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 3076, "epsg", 3076, + "NAD83(HARN) / Maine CS2000 Central (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43 +lon_0=-69.125 +k=0.99998 +x_0=500"); + add_proj4text (p, 1, + "000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Maine CS2000 Central (deprecated)"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Re"); + add_srs_wkt (p, 2, + "ference_Network\",SPHEROID[\"GRS 1980\",6378137,298.2572"); + add_srs_wkt (p, 3, + "22101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0],AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 6, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4152\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",43],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 9, + "n\",-69.125],PARAMETER[\"scale_factor\",0.99998],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3076\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 3077, "epsg", 3077, + "NAD83(HARN) / Maine CS2000 West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0"); + add_proj4text (p, 1, + ".99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Maine CS2000 West\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",42.83333333333334],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-70.375],PARAMETER[\"scale_factor\",0.99998],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",300000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 11, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3077\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 3078, "epsg", 3078, + "NAD83 / Michigan Oblique Mercator"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=33"); + add_proj4text (p, 1, + "7.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +no"); + add_proj4text (p, 2, + "_uoff +gamma=337.25556 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Michigan Oblique Mercator\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Hotine_"); + add_srs_wkt (p, 7, + "Oblique_Mercator\"],PARAMETER[\"latitude_of_center\",45."); + add_srs_wkt (p, 8, + "30916666666666],PARAMETER[\"longitude_of_center\",-86],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"azimuth\",337.25556],PARAMETER[\"rectified_gr"); + add_srs_wkt (p, 10, + "id_angle\",337.25556],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_easting\",2546731.496],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",-4354009.816],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 14, + "UTHORITY[\"EPSG\",\"3078\"]]"); + p = add_epsg_def (filter, first, last, 3079, "epsg", 3079, + "NAD83(HARN) / Michigan Oblique Mercator"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=33"); + add_proj4text (p, 1, + "7.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +no"); + add_proj4text (p, 2, + "_uoff +gamma=337.25556 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 3, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Michigan Oblique Mercator\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_"); + add_srs_wkt (p, 2, + "Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_center\",45.30916666666666],PARAMETER[\"long"); + add_srs_wkt (p, 9, + "itude_of_center\",-86],PARAMETER[\"azimuth\",337.25556],"); + add_srs_wkt (p, 10, + "PARAMETER[\"rectified_grid_angle\",337.25556],PARAMETER["); + add_srs_wkt (p, 11, + "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",254"); + add_srs_wkt (p, 12, + "6731.496],PARAMETER[\"false_northing\",-4354009.816],UNI"); + add_srs_wkt (p, 13, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 14, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3079\"]]"); + p = add_epsg_def (filter, first, last, 3080, "epsg", 3080, + "NAD27 / Shackleford"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666"); + add_proj4text (p, 1, + "666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=914400 +y_"); + add_proj4text (p, 2, + "0=914400 +datum=NAD27 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Shackleford\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 7, + "AMETER[\"standard_parallel_1\",27.41666666666667],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_2\",34.91666666666666],PARAMETER"); + add_srs_wkt (p, 9, + "[\"latitude_of_origin\",31.16666666666667],PARAMETER[\"c"); + add_srs_wkt (p, 10, + "entral_meridian\",-100],PARAMETER[\"false_easting\",3000"); + add_srs_wkt (p, 11, + "000],PARAMETER[\"false_northing\",3000000],UNIT[\"foot\""); + add_srs_wkt (p, 12, + ",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 13, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3080\"]]"); + p = add_epsg_def (filter, first, last, 3081, "epsg", 3081, + "NAD83 / Texas State Mapping System"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.41666666666667 +lat_2=34.91666666666"); + add_proj4text (p, 1, + "666 +lat_0=31.16666666666667 +lon_0=-100 +x_0=1000000 +y"); + add_proj4text (p, 2, + "_0=1000000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Texas State Mapping System\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",27.41666666666667],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",34.91666666666666],PARAMETER[\"latitude_of_origin\",31."); + add_srs_wkt (p, 10, + "16666666666667],PARAMETER[\"central_meridian\",-100],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",1000000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 12, + "hing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 13, + "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 14, + "SG\",\"3081\"]]"); + p = add_epsg_def (filter, first, last, 3082, "epsg", 3082, + "NAD83 / Texas Centric Lambert Conformal"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x"); + add_proj4text (p, 1, + "_0=1500000 +y_0=5000000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Texas Centric Lambert Conformal\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"626"); + add_srs_wkt (p, 4, + "9\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"L"); + add_srs_wkt (p, 7, + "ambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 8, + "lel_1\",27.5],PARAMETER[\"standard_parallel_2\",35],PARA"); + add_srs_wkt (p, 9, + "METER[\"latitude_of_origin\",18],PARAMETER[\"central_mer"); + add_srs_wkt (p, 10, + "idian\",-100],PARAMETER[\"false_easting\",1500000],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_northing\",5000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 13, + "H],AUTHORITY[\"EPSG\",\"3082\"]]"); + p = add_epsg_def (filter, first, last, 3083, "epsg", 3083, + "NAD83 / Texas Centric Albers Equal Area"); + add_proj4text (p, 0, + "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x"); + add_proj4text (p, 1, + "_0=1500000 +y_0=6000000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Texas Centric Albers Equal Area\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"626"); + add_srs_wkt (p, 4, + "9\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"A"); + add_srs_wkt (p, 7, + "lbers_Conic_Equal_Area\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",27.5],PARAMETER[\"standard_parallel_2\",35],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"latitude_of_center\",18],PARAMETER[\"longitude_of_ce"); + add_srs_wkt (p, 10, + "nter\",-100],PARAMETER[\"false_easting\",1500000],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_northing\",6000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 13, + "],AUTHORITY[\"EPSG\",\"3083\"]]"); + p = add_epsg_def (filter, first, last, 3084, "epsg", 3084, + "NAD83(HARN) / Texas Centric Lambert Conformal"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x"); + add_proj4text (p, 1, + "_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Texas Centric Lambert Conformal\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refe"); + add_srs_wkt (p, 2, + "rence_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_1\",27.5],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",35],PARAMETER[\"latitude_of_origin\",18"); + add_srs_wkt (p, 10, + "],PARAMETER[\"central_meridian\",-100],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",1500000],PARAMETER[\"false_northing\",5000000"); + add_srs_wkt (p, 12, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3084\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 3085, "epsg", 3085, + "NAD83(HARN) / Texas Centric Albers Equal Area"); + add_proj4text (p, 0, + "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x"); + add_proj4text (p, 1, + "_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Texas Centric Albers Equal Area\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refe"); + add_srs_wkt (p, 2, + "rence_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4152\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_1\",27.5],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",35],PARAMETER[\"latitude_of_center\",18],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"longitude_of_center\",-100],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "easting\",1500000],PARAMETER[\"false_northing\",6000000]"); + add_srs_wkt (p, 12, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); + add_srs_wkt (p, 13, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3085\"]]"); + p = add_epsg_def (filter, first, last, 3086, "epsg", 3086, + "NAD83 / Florida GDL Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_"); + add_proj4text (p, 1, + "0=400000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Florida GDL Albers\",GEOGCS[\"NAD83\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Albers_Conic_"); + add_srs_wkt (p, 7, + "Equal_Area\"],PARAMETER[\"standard_parallel_1\",24],PARA"); + add_srs_wkt (p, 8, + "METER[\"standard_parallel_2\",31.5],PARAMETER[\"latitude"); + add_srs_wkt (p, 9, + "_of_center\",24],PARAMETER[\"longitude_of_center\",-84],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",400000],PARAMETER[\"false_no"); + add_srs_wkt (p, 11, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"3086\"]]"); + p = add_epsg_def (filter, first, last, 3087, "epsg", 3087, + "NAD83(HARN) / Florida GDL Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_"); + add_proj4text (p, 1, + "0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Florida GDL Albers\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Albers_Conic_Equal_Area\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",24],PARAMETER[\"standard_parallel_2\",31"); + add_srs_wkt (p, 9, + ".5],PARAMETER[\"latitude_of_center\",24],PARAMETER[\"lon"); + add_srs_wkt (p, 10, + "gitude_of_center\",-84],PARAMETER[\"false_easting\",4000"); + add_srs_wkt (p, 11, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 13, + "ORTH],AUTHORITY[\"EPSG\",\"3087\"]]"); + p = add_epsg_def (filter, first, last, 3088, "epsg", 3088, + "NAD83 / Kentucky Single Zone"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 "); + add_proj4text (p, 2, + "+y_0=1000000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Kentucky Single Zone\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37"); + add_srs_wkt (p, 8, + ".08333333333334],PARAMETER[\"standard_parallel_2\",38.66"); + add_srs_wkt (p, 9, + "666666666666],PARAMETER[\"latitude_of_origin\",36.333333"); + add_srs_wkt (p, 10, + "33333334],PARAMETER[\"central_meridian\",-85.75],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_easting\",1500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 12, + "\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"3088\"]]"); + p = add_epsg_def (filter, first, last, 3089, "epsg", 3089, + "NAD83 / Kentucky Single Zone (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 "); + add_proj4text (p, 2, + "+y_0=999999.9998983998 +datum=NAD83 +units=us-ft +no_def"); + add_proj4text (p, 3, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Kentucky Single Zone (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",37.08333333333334],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",38.66666666666666],PARAMETER[\"latitude_of_origin\",36."); + add_srs_wkt (p, 10, + "33333333333334],PARAMETER[\"central_meridian\",-85.75],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",4921250],PARAMETER[\"false_no"); + add_srs_wkt (p, 12, + "rthing\",3280833.333],UNIT[\"US survey foot\",0.30480060"); + add_srs_wkt (p, 13, + "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); + add_srs_wkt (p, 14, + "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3089\"]]"); + p = add_epsg_def (filter, first, last, 3090, "epsg", 3090, + "NAD83(HARN) / Kentucky Single Zone"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 "); + add_proj4text (p, 2, + "+y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 3, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Kentucky Single Zone\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",37.08333333333334],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",38.66666666666666],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",36.33333333333334],PARAMETER[\"central_me"); + add_srs_wkt (p, 11, + "ridian\",-85.75],PARAMETER[\"false_easting\",1500000],PA"); + add_srs_wkt (p, 12, + "RAMETER[\"false_northing\",1000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 14, + "ORTH],AUTHORITY[\"EPSG\",\"3090\"]]"); + p = add_epsg_def (filter, first, last, 3091, "epsg", 3091, + "NAD83(HARN) / Kentucky Single Zone (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 "); + add_proj4text (p, 2, + "+y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 3, + ",0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Kentucky Single Zone (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Referenc"); + add_srs_wkt (p, 2, + "e_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 7, + "52\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_1\",37.08333333333334],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"standard_parallel_2\",38.66666666666666],PARAMETER[\""); + add_srs_wkt (p, 10, + "latitude_of_origin\",36.33333333333334],PARAMETER[\"cent"); + add_srs_wkt (p, 11, + "ral_meridian\",-85.75],PARAMETER[\"false_easting\",49212"); + add_srs_wkt (p, 12, + "50],PARAMETER[\"false_northing\",3280833.333],UNIT[\"US "); + add_srs_wkt (p, 13, + "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 14, + "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 15, + "SG\",\"3091\"]]"); + p = add_epsg_def (filter, first, last, 3092, "epsg", 3092, + "Tokyo / UTM zone 51N"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +ellps=bessel +towgs84=-146.414,507.3"); + add_proj4text (p, 1, + "37,680.507,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / UTM zone 51N\",GEOGCS[\"Tokyo\",DATUM[\""); + add_srs_wkt (p, 1, + "Tokyo\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-146.414,507.337,"); + add_srs_wkt (p, 3, + "680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"6301\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4301\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",123],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"3092\"]]"); + p = add_epsg_def (filter, first, last, 3093, "epsg", 3093, + "Tokyo / UTM zone 52N"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +ellps=bessel +towgs84=-146.414,507.3"); + add_proj4text (p, 1, + "37,680.507,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / UTM zone 52N\",GEOGCS[\"Tokyo\",DATUM[\""); + add_srs_wkt (p, 1, + "Tokyo\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-146.414,507.337,"); + add_srs_wkt (p, 3, + "680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"6301\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4301\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",129],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"3093\"]]"); + p = add_epsg_def (filter, first, last, 3094, "epsg", 3094, + "Tokyo / UTM zone 53N"); + add_proj4text (p, 0, + "+proj=utm +zone=53 +ellps=bessel +towgs84=-146.414,507.3"); + add_proj4text (p, 1, + "37,680.507,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / UTM zone 53N\",GEOGCS[\"Tokyo\",DATUM[\""); + add_srs_wkt (p, 1, + "Tokyo\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-146.414,507.337,"); + add_srs_wkt (p, 3, + "680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"6301\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4301\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",135],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"3094\"]]"); + p = add_epsg_def (filter, first, last, 3095, "epsg", 3095, + "Tokyo / UTM zone 54N"); + add_proj4text (p, 0, + "+proj=utm +zone=54 +ellps=bessel +towgs84=-146.414,507.3"); + add_proj4text (p, 1, + "37,680.507,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / UTM zone 54N\",GEOGCS[\"Tokyo\",DATUM[\""); + add_srs_wkt (p, 1, + "Tokyo\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-146.414,507.337,"); + add_srs_wkt (p, 3, + "680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"6301\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4301\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",141],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"3095\"]]"); + p = add_epsg_def (filter, first, last, 3096, "epsg", 3096, + "Tokyo / UTM zone 55N"); + add_proj4text (p, 0, + "+proj=utm +zone=55 +ellps=bessel +towgs84=-146.414,507.3"); + add_proj4text (p, 1, + "37,680.507,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / UTM zone 55N\",GEOGCS[\"Tokyo\",DATUM[\""); + add_srs_wkt (p, 1, + "Tokyo\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-146.414,507.337,"); + add_srs_wkt (p, 3, + "680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"6301\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4301\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",147],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"3096\"]]"); + p = add_epsg_def (filter, first, last, 3097, "epsg", 3097, + "JGD2000 / UTM zone 51N"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / UTM zone 51N\",GEOGCS[\"JGD2000\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Japanese_Geodetic_Datum_2000\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6612\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4612\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",123],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"3097\"]]"); + p = add_epsg_def (filter, first, last, 3098, "epsg", 3098, + "JGD2000 / UTM zone 52N"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / UTM zone 52N\",GEOGCS[\"JGD2000\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Japanese_Geodetic_Datum_2000\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6612\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4612\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",129],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"3098\"]]"); + p = add_epsg_def (filter, first, last, 3099, "epsg", 3099, + "JGD2000 / UTM zone 53N"); + add_proj4text (p, 0, + "+proj=utm +zone=53 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / UTM zone 53N\",GEOGCS[\"JGD2000\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Japanese_Geodetic_Datum_2000\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6612\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4612\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",135],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"3099\"]]"); + p = add_epsg_def (filter, first, last, 3100, "epsg", 3100, + "JGD2000 / UTM zone 54N"); + add_proj4text (p, 0, + "+proj=utm +zone=54 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / UTM zone 54N\",GEOGCS[\"JGD2000\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Japanese_Geodetic_Datum_2000\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6612\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4612\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",141],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"3100\"]]"); + p = add_epsg_def (filter, first, last, 3101, "epsg", 3101, + "JGD2000 / UTM zone 55N"); + add_proj4text (p, 0, + "+proj=utm +zone=55 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2000 / UTM zone 55N\",GEOGCS[\"JGD2000\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Japanese_Geodetic_Datum_2000\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6612\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4612\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",147],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"3101\"]]"); + p = add_epsg_def (filter, first, last, 3102, "epsg", 3102, + "American Samoa 1962 / American Samoa Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-14.26666666666667 +lat_0=-14.266666666"); + add_proj4text (p, 1, + "66667 +lon_0=-170 +k_0=1 +x_0=152400.3048006096 +y_0=951"); + add_proj4text (p, 2, + "69.31165862332 +ellps=clrk66 +towgs84=-115,118,426,0,0,0"); + add_proj4text (p, 3, + ",0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"American Samoa 1962 / American Samoa Lambert\","); + add_srs_wkt (p, 1, + "GEOGCS[\"American Samoa 1962\",DATUM[\"American_Samoa_19"); + add_srs_wkt (p, 2, + "62\",SPHEROID[\"Clarke 1866\",6378206.4,294.978698213900"); + add_srs_wkt (p, 3, + "6,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[-115,118,426,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6169\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4169\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",-14.26666666666667]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"central_meridian\",-170],PARAMETER[\"scale_"); + add_srs_wkt (p, 10, + "factor\",1],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",312234.65],UNIT[\"US survey foot\","); + add_srs_wkt (p, 12, + "0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3102\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 3103, "epsg", 3103, + "Mauritania 1999 / UTM zone 28N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mauritania 1999 / UTM zone 28N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Mauritania 1999\",DATUM[\"Mauritania_1999\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG\",\"6681\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4681\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-15],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"3103\"]]"); + p = add_epsg_def (filter, first, last, 3104, "epsg", 3104, + "Mauritania 1999 / UTM zone 29N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mauritania 1999 / UTM zone 29N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Mauritania 1999\",DATUM[\"Mauritania_1999\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG\",\"6681\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4681\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-9],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"3104\"]]"); + p = add_epsg_def (filter, first, last, 3105, "epsg", 3105, + "Mauritania 1999 / UTM zone 30N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mauritania 1999 / UTM zone 30N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Mauritania 1999\",DATUM[\"Mauritania_1999\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG\",\"6681\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4681\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-3],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"3105\"]]"); + p = add_epsg_def (filter, first, last, 3106, "epsg", 3106, + "Gulshan 303 / Bangladesh Transverse Mercator"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +a=6377276.345 +b=6356075.41314024 +towgs84=283.7,73"); + add_proj4text (p, 2, + "5.9,261.1,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Gulshan 303 / Bangladesh Transverse Mercator\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Gulshan 303\",DATUM[\"Gulshan_303\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Everest 1830 (1937 Adjustment)\",6377276.345,300.8017,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7015\"]],TOWGS84[283.7,735.9,261.1,0,"); + add_srs_wkt (p, 4, + "0,0,0],AUTHORITY[\"EPSG\",\"6682\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4682\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",90],PARAMETER[\"scale_factor\",0.9996],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",500000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 11, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"3106\"]]"); + p = add_epsg_def (filter, first, last, 3107, "epsg", 3107, + "GDA94 / SA Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-28 +lat_2=-36 +lat_0=-32 +lon_0=135 +x"); + add_proj4text (p, 1, + "_0=1000000 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / SA Lambert\",GEOGCS[\"GDA94\",DATUM[\"G"); + add_srs_wkt (p, 1, + "eocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",-28]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",-36],PARAMETER[\"lati"); + add_srs_wkt (p, 9, + "tude_of_origin\",-32],PARAMETER[\"central_meridian\",135"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_easting\",1000000],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_northing\",2000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 13, + "TH],AUTHORITY[\"EPSG\",\"3107\"]]"); + p = add_epsg_def (filter, first, last, 3108, "epsg", 3108, + "ETRS89 / Guernsey Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=49.5 +lon_0=-2.416666666666667 +k=0.9"); + add_proj4text (p, 1, + "99997 +x_0=47000 +y_0=50000 +ellps=GRS80 +towgs84=0,0,0,"); + add_proj4text (p, 2, + "0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Guernsey Grid\",GEOGCS[\"ETRS89\",DATU"); + add_srs_wkt (p, 1, + "M[\"European_Terrestrial_Reference_System_1989\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "49.5],PARAMETER[\"central_meridian\",-2.416666666666667]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.999997],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",47000],PARAMETER[\"false_northing\",50000],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3108\"]]"); + p = add_epsg_def (filter, first, last, 3109, "epsg", 3109, + "ETRS89 / Jersey Transverse Mercator"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=49.225 +lon_0=-2.135 +k=0.99999990000"); + add_proj4text (p, 1, + "00001 +x_0=40000 +y_0=70000 +ellps=GRS80 +towgs84=0,0,0,"); + add_proj4text (p, 2, + "0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Jersey Transverse Mercator\",GEOGCS[\""); + add_srs_wkt (p, 1, + "ETRS89\",DATUM[\"European_Terrestrial_Reference_System_1"); + add_srs_wkt (p, 2, + "989\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",49.225],PARAMETER[\"central_meridian\",-2."); + add_srs_wkt (p, 9, + "135],PARAMETER[\"scale_factor\",0.9999999],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",40000],PARAMETER[\"false_northing\",70000"); + add_srs_wkt (p, 11, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"3109\"]]"); + p = add_epsg_def (filter, first, last, 3110, "epsg", 3110, + "AGD66 / Vicgrid66"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x"); + add_proj4text (p, 1, + "_0=2500000 +y_0=4500000 +ellps=aust_SA +towgs84=-117.808"); + add_proj4text (p, 2, + ",-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_de"); + add_proj4text (p, 3, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD66 / Vicgrid66\",GEOGCS[\"AGD66\",DATUM[\"Au"); + add_srs_wkt (p, 1, + "stralian_Geodetic_Datum_1966\",SPHEROID[\"Australian Nat"); + add_srs_wkt (p, 2, + "ional Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "3\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.234"); + add_srs_wkt (p, 4, + ",-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 5, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 6, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4202\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",-36],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",-38],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 10, + "n\",-37],PARAMETER[\"central_meridian\",145],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",2500000],PARAMETER[\"false_northing\",45"); + add_srs_wkt (p, 12, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 13, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 14, + "\"EPSG\",\"3110\"]]"); + p = add_epsg_def (filter, first, last, 3111, "epsg", 3111, + "GDA94 / Vicgrid94"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-36 +lat_2=-38 +lat_0=-37 +lon_0=145 +x"); + add_proj4text (p, 1, + "_0=2500000 +y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / Vicgrid94\",GEOGCS[\"GDA94\",DATUM[\"Ge"); + add_srs_wkt (p, 1, + "ocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",-36]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",-38],PARAMETER[\"lati"); + add_srs_wkt (p, 9, + "tude_of_origin\",-37],PARAMETER[\"central_meridian\",145"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_easting\",2500000],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_northing\",2500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 13, + "TH],AUTHORITY[\"EPSG\",\"3111\"]]"); + p = add_epsg_def (filter, first, last, 3112, "epsg", 3112, + "GDA94 / Geoscience Australia Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=134 +x_0"); + add_proj4text (p, 1, + "=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 2, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / Geoscience Australia Lambert\",GEOGCS[\""); + add_srs_wkt (p, 1, + "GDA94\",DATUM[\"Geocentric_Datum_of_Australia_1994\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6283\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",-18],PARAMETER[\"standard_parallel_2\",-36"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 10, + "l_meridian\",134],PARAMETER[\"false_easting\",0],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"3112\"]]"); + p = add_epsg_def (filter, first, last, 3113, "epsg", 3113, + "GDA94 / BCSG02"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-28 +lon_0=153 +k=0.99999 +x_0=50000 "); + add_proj4text (p, 1, + "+y_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / BCSG02\",GEOGCS[\"GDA94\",DATUM[\"Geoce"); + add_srs_wkt (p, 1, + "ntric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",-28],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",153],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "99],PARAMETER[\"false_easting\",50000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",100000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"3113\"]]"); + p = add_epsg_def (filter, first, last, 3114, "epsg", 3114, + "MAGNA-SIRGAS / Colombia Far West zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-80.07750791"); + add_proj4text (p, 1, + "666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towg"); + add_proj4text (p, 2, + "s84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MAGNA-SIRGAS / Colombia Far West zone\",GEOGCS["); + add_srs_wkt (p, 1, + "\"MAGNA-SIRGAS\",DATUM[\"Marco_Geocentrico_Nacional_de_R"); + add_srs_wkt (p, 2, + "eferencia\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6686\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); + add_srs_wkt (p, 7, + "86\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",4.596200416666666],PARAMETER[\"centr"); + add_srs_wkt (p, 9, + "al_meridian\",-80.07750791666666],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 10, + "or\",1],PARAMETER[\"false_easting\",1000000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3114\"]]"); + p = add_epsg_def (filter, first, last, 3115, "epsg", 3115, + "MAGNA-SIRGAS / Colombia West zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-77.07750791"); + add_proj4text (p, 1, + "666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towg"); + add_proj4text (p, 2, + "s84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MAGNA-SIRGAS / Colombia West zone\",GEOGCS[\"MA"); + add_srs_wkt (p, 1, + "GNA-SIRGAS\",DATUM[\"Marco_Geocentrico_Nacional_de_Refer"); + add_srs_wkt (p, 2, + "encia\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6686\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4686\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",4.596200416666666],PARAMETER[\"central_m"); + add_srs_wkt (p, 9, + "eridian\",-77.07750791666666],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 10, + ",1],PARAMETER[\"false_easting\",1000000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"3115\"]]"); + p = add_epsg_def (filter, first, last, 3116, "epsg", 3116, + "MAGNA-SIRGAS / Colombia Bogota zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-74.07750791"); + add_proj4text (p, 1, + "666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towg"); + add_proj4text (p, 2, + "s84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MAGNA-SIRGAS / Colombia Bogota zone\",GEOGCS[\""); + add_srs_wkt (p, 1, + "MAGNA-SIRGAS\",DATUM[\"Marco_Geocentrico_Nacional_de_Ref"); + add_srs_wkt (p, 2, + "erencia\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6686\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4686"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",4.596200416666666],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",-74.07750791666666],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 10, + "\",1],PARAMETER[\"false_easting\",1000000],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3116\"]]"); + p = add_epsg_def (filter, first, last, 3117, "epsg", 3117, + "MAGNA-SIRGAS / Colombia East Central zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-71.07750791"); + add_proj4text (p, 1, + "666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towg"); + add_proj4text (p, 2, + "s84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MAGNA-SIRGAS / Colombia East Central zone\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"MAGNA-SIRGAS\",DATUM[\"Marco_Geocentrico_Nacional_"); + add_srs_wkt (p, 2, + "de_Referencia\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6686\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4686\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",4.596200416666666],PARAMETER[\"c"); + add_srs_wkt (p, 9, + "entral_meridian\",-71.07750791666666],PARAMETER[\"scale_"); + add_srs_wkt (p, 10, + "factor\",1],PARAMETER[\"false_easting\",1000000],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3117\"]]"); + p = add_epsg_def (filter, first, last, 3118, "epsg", 3118, + "MAGNA-SIRGAS / Colombia East zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4.596200416666666 +lon_0=-68.07750791"); + add_proj4text (p, 1, + "666666 +k=1 +x_0=1000000 +y_0=1000000 +ellps=GRS80 +towg"); + add_proj4text (p, 2, + "s84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MAGNA-SIRGAS / Colombia East zone\",GEOGCS[\"MA"); + add_srs_wkt (p, 1, + "GNA-SIRGAS\",DATUM[\"Marco_Geocentrico_Nacional_de_Refer"); + add_srs_wkt (p, 2, + "encia\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6686\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4686\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",4.596200416666666],PARAMETER[\"central_m"); + add_srs_wkt (p, 9, + "eridian\",-68.07750791666666],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 10, + ",1],PARAMETER[\"false_easting\",1000000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"3118\"]]"); + p = add_epsg_def (filter, first, last, 3119, "epsg", 3119, + "Douala 1948 / AEF west"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=10.5 +k=0.999 +x_0=1000000 +"); + add_proj4text (p, 1, + "y_0=1000000 +ellps=intl +towgs84=-206.1,-174.7,-87.7,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Douala 1948 / AEF west\",GEOGCS[\"Douala 1948\""); + add_srs_wkt (p, 1, + ",DATUM[\"Douala_1948\",SPHEROID[\"International 1924\",6"); + add_srs_wkt (p, 2, + "378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-206.1,"); + add_srs_wkt (p, 3, + "-174.7,-87.7,0,0,0,0],AUTHORITY[\"EPSG\",\"6192\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4192\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",10.5],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.999],PARAMETER[\"false_easting\",1000000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"3119\"]]"); + p = add_epsg_def (filter, first, last, 3120, "epsg", 3120, + "Pulkovo 1942(58) / Poland zone I"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=50.625 +lon_0=21.08333333333333 +k=0"); + add_proj4text (p, 1, + ".9998 +x_0=4637000 +y_0=5467000 +ellps=krass +towgs84=33"); + add_proj4text (p, 2, + ".4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +units=m +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / Poland zone I\",GEOGCS[\"Pul"); + add_srs_wkt (p, 1, + "kovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID[\"Kra"); + add_srs_wkt (p, 2, + "ssowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); + add_srs_wkt (p, 3, + "]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4179\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",50.625],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",21.08333333333333],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 10, + "998],PARAMETER[\"false_easting\",4637000],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_northing\",5467000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"9001\"]],AUTHORITY[\"EPSG\",\"3120\"]]"); + p = add_epsg_def (filter, first, last, 3121, "epsg", 3121, + "PRS92 / Philippines zone 1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +"); + add_proj4text (p, 1, + "y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.06"); + add_proj4text (p, 2, + "8,4.903,1.578,-1.06 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PRS92 / Philippines zone 1\",GEOGCS[\"PRS92\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Philippine_Reference_System_1992\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],TOWGS84[-127.62,-67.24,-47.04,-3.068,4.903,1"); + add_srs_wkt (p, 4, + ".578,-1.06],AUTHORITY[\"EPSG\",\"6683\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4683\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",117],PARAMETER[\"scale_factor\",0.99995],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3121\"]]"); + p = add_epsg_def (filter, first, last, 3122, "epsg", 3122, + "PRS92 / Philippines zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +"); + add_proj4text (p, 1, + "y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.06"); + add_proj4text (p, 2, + "8,4.903,1.578,-1.06 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PRS92 / Philippines zone 2\",GEOGCS[\"PRS92\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Philippine_Reference_System_1992\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],TOWGS84[-127.62,-67.24,-47.04,-3.068,4.903,1"); + add_srs_wkt (p, 4, + ".578,-1.06],AUTHORITY[\"EPSG\",\"6683\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4683\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",119],PARAMETER[\"scale_factor\",0.99995],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3122\"]]"); + p = add_epsg_def (filter, first, last, 3123, "epsg", 3123, + "PRS92 / Philippines zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +"); + add_proj4text (p, 1, + "y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.06"); + add_proj4text (p, 2, + "8,4.903,1.578,-1.06 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PRS92 / Philippines zone 3\",GEOGCS[\"PRS92\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Philippine_Reference_System_1992\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],TOWGS84[-127.62,-67.24,-47.04,-3.068,4.903,1"); + add_srs_wkt (p, 4, + ".578,-1.06],AUTHORITY[\"EPSG\",\"6683\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4683\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",121],PARAMETER[\"scale_factor\",0.99995],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3123\"]]"); + p = add_epsg_def (filter, first, last, 3124, "epsg", 3124, + "PRS92 / Philippines zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +"); + add_proj4text (p, 1, + "y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.06"); + add_proj4text (p, 2, + "8,4.903,1.578,-1.06 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PRS92 / Philippines zone 4\",GEOGCS[\"PRS92\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Philippine_Reference_System_1992\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],TOWGS84[-127.62,-67.24,-47.04,-3.068,4.903,1"); + add_srs_wkt (p, 4, + ".578,-1.06],AUTHORITY[\"EPSG\",\"6683\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4683\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",123],PARAMETER[\"scale_factor\",0.99995],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3124\"]]"); + p = add_epsg_def (filter, first, last, 3125, "epsg", 3125, + "PRS92 / Philippines zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +"); + add_proj4text (p, 1, + "y_0=0 +ellps=clrk66 +towgs84=-127.62,-67.24,-47.04,-3.06"); + add_proj4text (p, 2, + "8,4.903,1.578,-1.06 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PRS92 / Philippines zone 5\",GEOGCS[\"PRS92\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Philippine_Reference_System_1992\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],TOWGS84[-127.62,-67.24,-47.04,-3.068,4.903,1"); + add_srs_wkt (p, 4, + ".578,-1.06],AUTHORITY[\"EPSG\",\"6683\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4683\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",125],PARAMETER[\"scale_factor\",0.99995],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3125\"]]"); + p = add_epsg_def (filter, first, last, 3126, "epsg", 3126, + "ETRS89 / ETRS-GK19FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / ETRS-GK19FIN\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",19],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"3126\"]]"); + p = add_epsg_def (filter, first, last, 3127, "epsg", 3127, + "ETRS89 / ETRS-GK20FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / ETRS-GK20FIN\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",20],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"3127\"]]"); + p = add_epsg_def (filter, first, last, 3128, "epsg", 3128, + "ETRS89 / ETRS-GK21FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / ETRS-GK21FIN\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",21],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"3128\"]]"); + p = add_epsg_def (filter, first, last, 3129, "epsg", 3129, + "ETRS89 / ETRS-GK22FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / ETRS-GK22FIN\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",22],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"3129\"]]"); + p = add_epsg_def (filter, first, last, 3130, "epsg", 3130, + "ETRS89 / ETRS-GK23FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / ETRS-GK23FIN\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",23],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"3130\"]]"); + p = add_epsg_def (filter, first, last, 3131, "epsg", 3131, + "ETRS89 / ETRS-GK24FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / ETRS-GK24FIN\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",24],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"3131\"]]"); + p = add_epsg_def (filter, first, last, 3132, "epsg", 3132, + "ETRS89 / ETRS-GK25FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / ETRS-GK25FIN\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",25],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"3132\"]]"); + p = add_epsg_def (filter, first, last, 3133, "epsg", 3133, + "ETRS89 / ETRS-GK26FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / ETRS-GK26FIN\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",26],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"3133\"]]"); + p = add_epsg_def (filter, first, last, 3134, "epsg", 3134, + "ETRS89 / ETRS-GK27FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / ETRS-GK27FIN\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",27],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"3134\"]]"); + p = add_epsg_def (filter, first, last, 3135, "epsg", 3135, + "ETRS89 / ETRS-GK28FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / ETRS-GK28FIN\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",28],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"3135\"]]"); + p = add_epsg_def (filter, first, last, 3136, "epsg", 3136, + "ETRS89 / ETRS-GK29FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / ETRS-GK29FIN\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",29],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"3136\"]]"); + p = add_epsg_def (filter, first, last, 3137, "epsg", 3137, + "ETRS89 / ETRS-GK30FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / ETRS-GK30FIN\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",30],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"3137\"]]"); + p = add_epsg_def (filter, first, last, 3138, "epsg", 3138, + "ETRS89 / ETRS-GK31FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / ETRS-GK31FIN\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",31],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"3138\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_11.c b/src/spatialite/src/srsinit/epsg_inlined_11.c new file mode 100644 index 0000000..c3ed588 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_11.c @@ -0,0 +1,3552 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_11 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 3140, "epsg", 3140, + "Viti Levu 1912 / Viti Levu Grid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=-18 +lon_0=178 +x_0=109435.392 +y_0=14"); + add_proj4text (p, 1, + "1622.272 +a=6378306.3696 +b=6356571.996 +towgs84=51,391,"); + add_proj4text (p, 2, + "-36,0,0,0,0 +to_meter=0.201168 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Viti Levu 1912 / Viti Levu Grid\",GEOGCS[\"Viti"); + add_srs_wkt (p, 1, + " Levu 1912\",DATUM[\"Viti_Levu_1912\",SPHEROID[\"Clarke "); + add_srs_wkt (p, 2, + "1880 (international foot)\",6378306.3696,293.46630765563"); + add_srs_wkt (p, 3, + "49,AUTHORITY[\"EPSG\",\"7055\"]],TOWGS84[51,391,-36,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6752\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4752\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",-18],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 9, + "n\",178],PARAMETER[\"false_easting\",544000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",704000],UNIT[\"link\",0.201168,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9098\"]],AUTHORITY[\"EPSG\",\"3140\"]]"); + p = add_epsg_def (filter, first, last, 3141, "epsg", 3141, + "Fiji 1956 / UTM zone 60S"); + add_proj4text (p, 0, + "+proj=utm +zone=60 +south +ellps=intl +towgs84=265.025,3"); + add_proj4text (p, 1, + "84.929,-194.046,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Fiji 1956 / UTM zone 60S\",GEOGCS[\"Fiji 1956\""); + add_srs_wkt (p, 1, + ",DATUM[\"Fiji_1956\",SPHEROID[\"International 1924\",637"); + add_srs_wkt (p, 2, + "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[265.025,3"); + add_srs_wkt (p, 3, + "84.929,-194.046,0,0,0,0],AUTHORITY[\"EPSG\",\"6721\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4721\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",177],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"3141\"]]"); + p = add_epsg_def (filter, first, last, 3142, "epsg", 3142, + "Fiji 1956 / UTM zone 1S"); + add_proj4text (p, 0, + "+proj=utm +zone=1 +south +ellps=intl +towgs84=265.025,38"); + add_proj4text (p, 1, + "4.929,-194.046,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Fiji 1956 / UTM zone 1S\",GEOGCS[\"Fiji 1956\","); + add_srs_wkt (p, 1, + "DATUM[\"Fiji_1956\",SPHEROID[\"International 1924\",6378"); + add_srs_wkt (p, 2, + "388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[265.025,38"); + add_srs_wkt (p, 3, + "4.929,-194.046,0,0,0,0],AUTHORITY[\"EPSG\",\"6721\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4721\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-177],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"3142\"]]"); + p = add_epsg_def (filter, first, last, 3143, "epsg", 3143, + "Fiji 1986 / Fiji Map Grid (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=200"); + add_proj4text (p, 1, + "0000 +y_0=4000000 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); + add_proj4text (p, 2, + "4,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Fiji 1986 / Fiji Map Grid (deprecated)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Fiji 1986\",DATUM[\"Fiji_Geodetic_Datum_1986\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6720\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4720\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",-17],PARAMETER[\"central_meridian\",178.75],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",0.99985],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "2000000],PARAMETER[\"false_northing\",4000000],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3143\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 3146, "epsg", 3146, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 6 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 6 (de"); + add_srs_wkt (p, 1, + "precated)\",GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,"); + add_srs_wkt (p, 4, + "0.82,-0.12],AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4284\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",18],PARAMETER[\"scale_factor\",1],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",6500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"3146\"]]"); + p = add_epsg_def (filter, first, last, 3147, "epsg", 3147, + "Pulkovo 1942 / 3-degree Gauss-Kruger CM 18E (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger CM 18E (de"); + add_srs_wkt (p, 1, + "precated)\",GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,"); + add_srs_wkt (p, 4, + "0.82,-0.12],AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4284\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",18],PARAMETER[\"scale_factor\",1],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"3147\"]]"); + p = add_epsg_def (filter, first, last, 3148, "epsg", 3148, + "Indian 1960 / UTM zone 48N"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +t"); + add_proj4text (p, 1, + "owgs84=198,881,317,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Indian 1960 / UTM zone 48N\",GEOGCS[\"Indian 19"); + add_srs_wkt (p, 1, + "60\",DATUM[\"Indian_1960\",SPHEROID[\"Everest 1830 (1937"); + add_srs_wkt (p, 2, + " Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7015\"]],TOWGS84[198,881,317,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6131\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4131\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",105],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3148\"]]"); + p = add_epsg_def (filter, first, last, 3149, "epsg", 3149, + "Indian 1960 / UTM zone 49N"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +a=6377276.345 +b=6356075.41314024 +t"); + add_proj4text (p, 1, + "owgs84=198,881,317,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Indian 1960 / UTM zone 49N\",GEOGCS[\"Indian 19"); + add_srs_wkt (p, 1, + "60\",DATUM[\"Indian_1960\",SPHEROID[\"Everest 1830 (1937"); + add_srs_wkt (p, 2, + " Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7015\"]],TOWGS84[198,881,317,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6131\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4131\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",111],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3149\"]]"); + p = add_epsg_def (filter, first, last, 3150, "epsg", 3150, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 6 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 6 (de"); + add_srs_wkt (p, 1, + "precated)\",GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0"); + add_srs_wkt (p, 4, + ".13,-0.22],AUTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4200\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",18],PARAMETER[\"scale_factor\",1],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",6500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"3150\"]]"); + p = add_epsg_def (filter, first, last, 3151, "epsg", 3151, + "Pulkovo 1995 / 3-degree Gauss-Kruger CM 18E (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger CM 18E (de"); + add_srs_wkt (p, 1, + "precated)\",GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0"); + add_srs_wkt (p, 4, + ".13,-0.22],AUTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4200\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",18],PARAMETER[\"scale_factor\",1],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",500000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 11, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"3151\"]]"); + p = add_epsg_def (filter, first, last, 3152, "epsg", 3152, + "ST74"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18.05779 +k=0.99999425 +x_0="); + add_proj4text (p, 1, + "100178.1808 +y_0=-6500614.7836 +ellps=GRS80 +towgs84=0,0"); + add_proj4text (p, 2, + ",0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ST74\",GEOGCS[\"SWEREF99\",DATUM[\"SWEREF99\",S"); + add_srs_wkt (p, 1, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 2, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\"]],PROJEC"); + add_srs_wkt (p, 6, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 7, + "igin\",0],PARAMETER[\"central_meridian\",18.05779],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"scale_factor\",0.99999425],PARAMETER[\"false_east"); + add_srs_wkt (p, 9, + "ing\",100178.1808],PARAMETER[\"false_northing\",-6500614"); + add_srs_wkt (p, 10, + ".7836],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"3152\"]]"); + p = add_epsg_def (filter, first, last, 3153, "epsg", 3153, + "NAD83(CSRS) / BC Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=50 +lat_2=58.5 +lat_0=45 +lon_0=-126 +x"); + add_proj4text (p, 1, + "_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / BC Albers\",GEOGCS[\"NAD83(CSRS)\""); + add_srs_wkt (p, 1, + ",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Albers_Conic_Equal_Area\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",50],PARAMETER[\"standard_parallel_2\",58.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"latitude_of_center\",45],PARAMETER[\"longitude_of"); + add_srs_wkt (p, 10, + "_center\",-126],PARAMETER[\"false_easting\",1000000],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 13, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"3153\"]]"); + p = add_epsg_def (filter, first, last, 3154, "epsg", 3154, + "NAD83(CSRS) / UTM zone 7N"); + add_proj4text (p, 0, + "+proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 1, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 7N\",GEOGCS[\"NAD83(CSRS"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-141],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3154\"]]"); + p = add_epsg_def (filter, first, last, 3155, "epsg", 3155, + "NAD83(CSRS) / UTM zone 8N"); + add_proj4text (p, 0, + "+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 1, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 8N\",GEOGCS[\"NAD83(CSRS"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-135],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3155\"]]"); + p = add_epsg_def (filter, first, last, 3156, "epsg", 3156, + "NAD83(CSRS) / UTM zone 9N"); + add_proj4text (p, 0, + "+proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 1, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 9N\",GEOGCS[\"NAD83(CSRS"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-129],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3156\"]]"); + p = add_epsg_def (filter, first, last, 3157, "epsg", 3157, + "NAD83(CSRS) / UTM zone 10N"); + add_proj4text (p, 0, + "+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 10N\",GEOGCS[\"NAD83(CSR"); + add_srs_wkt (p, 1, + "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",-123],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3157\"]]"); + p = add_epsg_def (filter, first, last, 3158, "epsg", 3158, + "NAD83(CSRS) / UTM zone 14N"); + add_proj4text (p, 0, + "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 14N\",GEOGCS[\"NAD83(CSR"); + add_srs_wkt (p, 1, + "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",-99],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3158\"]]"); + p = add_epsg_def (filter, first, last, 3159, "epsg", 3159, + "NAD83(CSRS) / UTM zone 15N"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 15N\",GEOGCS[\"NAD83(CSR"); + add_srs_wkt (p, 1, + "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",-93],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3159\"]]"); + p = add_epsg_def (filter, first, last, 3160, "epsg", 3160, + "NAD83(CSRS) / UTM zone 16N"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 16N\",GEOGCS[\"NAD83(CSR"); + add_srs_wkt (p, 1, + "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",-87],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3160\"]]"); + p = add_epsg_def (filter, first, last, 3161, "epsg", 3161, + "NAD83 / Ontario MNR Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x"); + add_proj4text (p, 1, + "_0=930000 +y_0=6430000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Ontario MNR Lambert\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",44.5"); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_2\",53.5],PARAMETER[\"la"); + add_srs_wkt (p, 9, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",-85"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_easting\",930000],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",6430000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 13, + "H],AUTHORITY[\"EPSG\",\"3161\"]]"); + p = add_epsg_def (filter, first, last, 3162, "epsg", 3162, + "NAD83(CSRS) / Ontario MNR Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.5 +lat_2=53.5 +lat_0=0 +lon_0=-85 +x"); + add_proj4text (p, 1, + "_0=930000 +y_0=6430000 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / Ontario MNR Lambert\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",44.5],PARAMETER[\"standard_paralle"); + add_srs_wkt (p, 9, + "l_2\",53.5],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-85],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 11, + "930000],PARAMETER[\"false_northing\",6430000],UNIT[\"met"); + add_srs_wkt (p, 12, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3162\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 3163, "epsg", 3163, + "RGNC91-93 / Lambert New Caledonia"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-20.66666666666667 +lat_2=-22.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-21.5 +lon_0=166 +x_0=400000 +y_0=300000 +e"); + add_proj4text (p, 2, + "llps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGNC91-93 / Lambert New Caledonia\",GEOGCS[\"RG"); + add_srs_wkt (p, 1, + "NC91-93\",DATUM[\"Reseau_Geodesique_de_Nouvelle_Caledoni"); + add_srs_wkt (p, 2, + "e_91_93\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6749\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4749"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_1\",-20.66666666666667],PARAMETER"); + add_srs_wkt (p, 9, + "[\"standard_parallel_2\",-22.33333333333333],PARAMETER[\""); + add_srs_wkt (p, 10, + "latitude_of_origin\",-21.5],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 11, + "\",166],PARAMETER[\"false_easting\",400000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",300000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 14, + "RITY[\"EPSG\",\"3163\"]]"); + p = add_epsg_def (filter, first, last, 3164, "epsg", 3164, + "ST87 Ouvea / UTM zone 58S"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=WGS84 +towgs84=-56.263,"); + add_proj4text (p, 1, + "16.136,-22.856,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ST87 Ouvea / UTM zone 58S\",GEOGCS[\"ST87 Ouvea"); + add_srs_wkt (p, 1, + "\",DATUM[\"ST87_Ouvea\",SPHEROID[\"WGS 84\",6378137,298."); + add_srs_wkt (p, 2, + "257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[-56.263,"); + add_srs_wkt (p, 3, + "16.136,-22.856,0,0,0,0],AUTHORITY[\"EPSG\",\"6750\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4750\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",165],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"3164\"]]"); + p = add_epsg_def (filter, first, last, 3165, "epsg", 3165, + "NEA74 Noumea / Noumea Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-22.24469175 +lat_2=-22.29469175 +lat_0"); + add_proj4text (p, 1, + "=-22.26969175 +lon_0=166.44242575 +x_0=0.66 +y_0=1.02 +e"); + add_proj4text (p, 2, + "llps=intl +towgs84=-10.18,-350.43,291.37,0,0,0,0 +units="); + add_proj4text (p, 3, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NEA74 Noumea / Noumea Lambert\",GEOGCS[\"NEA74 "); + add_srs_wkt (p, 1, + "Noumea\",DATUM[\"NEA74_Noumea\",SPHEROID[\"International"); + add_srs_wkt (p, 2, + " 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[-10.18,-350.43,291.37,0,0,0,0],AUTHORITY[\"EPSG\",\"66"); + add_srs_wkt (p, 4, + "44\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4644\"]],PROJECTION[\"L"); + add_srs_wkt (p, 7, + "ambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 8, + "lel_1\",-22.24469175],PARAMETER[\"standard_parallel_2\","); + add_srs_wkt (p, 9, + "-22.29469175],PARAMETER[\"latitude_of_origin\",-22.26969"); + add_srs_wkt (p, 10, + "175],PARAMETER[\"central_meridian\",166.44242575],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",0.66],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",1.02],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 13, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"31"); + add_srs_wkt (p, 14, + "65\"]]"); + p = add_epsg_def (filter, first, last, 3166, "epsg", 3166, + "NEA74 Noumea / Noumea Lambert 2"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-22.24472222222222 +lat_2=-22.294722222"); + add_proj4text (p, 1, + "22222 +lat_0=-22.26972222222222 +lon_0=166.4425 +x_0=8.3"); + add_proj4text (p, 2, + "13000000000001 +y_0=-2.354 +ellps=intl +towgs84=-10.18,-"); + add_proj4text (p, 3, + "350.43,291.37,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NEA74 Noumea / Noumea Lambert 2\",GEOGCS[\"NEA7"); + add_srs_wkt (p, 1, + "4 Noumea\",DATUM[\"NEA74_Noumea\",SPHEROID[\"Internation"); + add_srs_wkt (p, 2, + "al 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[-10.18,-350.43,291.37,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6644\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4644\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",-22.24472222222222],PARAMETER[\"standard_para"); + add_srs_wkt (p, 9, + "llel_2\",-22.29472222222222],PARAMETER[\"latitude_of_ori"); + add_srs_wkt (p, 10, + "gin\",-22.26972222222222],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 11, + ",166.4425],PARAMETER[\"false_easting\",8.313],PARAMETER["); + add_srs_wkt (p, 12, + "\"false_northing\",-2.354],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 14, + "HORITY[\"EPSG\",\"3166\"]]"); + p = add_epsg_def (filter, first, last, 3167, "epsg", 3167, + "Kertau (RSO) / RSO Malaya (ch)"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k="); + add_proj4text (p, 1, + "0.99984 +x_0=40000 +y_0=0 +no_uoff +gamma=323.1301023611"); + add_proj4text (p, 2, + "111 +a=6377295.664 +b=6356094.667915204 +to_meter=20.116"); + add_proj4text (p, 3, + "756 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kertau (RSO) / RSO Malaya (ch)\",GEOGCS[\"Kerta"); + add_srs_wkt (p, 1, + "u (RSO)\",DATUM[\"Kertau_RSO\",SPHEROID[\"Everest 1830 ("); + add_srs_wkt (p, 2, + "RSO 1969)\",6377295.664,300.8017,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "56\"]],AUTHORITY[\"EPSG\",\"6751\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4751\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"latitude_of_center\",4],PARAMETER[\"longitud"); + add_srs_wkt (p, 8, + "e_of_center\",102.25],PARAMETER[\"azimuth\",323.0257905]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"rectified_grid_angle\",323.1301023611111],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"scale_factor\",0.99984],PARAMETER[\"false_eas"); + add_srs_wkt (p, 11, + "ting\",1988.392164223695],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 12, + "],UNIT[\"British chain (Sears 1922 truncated)\",20.11675"); + add_srs_wkt (p, 13, + "6,AUTHORITY[\"EPSG\",\"9301\"]],AXIS[\"Easting\",EAST],A"); + add_srs_wkt (p, 14, + "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3167\"]]"); + p = add_epsg_def (filter, first, last, 3168, "epsg", 3168, + "Kertau (RSO) / RSO Malaya (m)"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k="); + add_proj4text (p, 1, + "0.99984 +x_0=804670.24 +y_0=0 +no_uoff +gamma=323.130102"); + add_proj4text (p, 2, + "3611111 +a=6377295.664 +b=6356094.667915204 +units=m +no"); + add_proj4text (p, 3, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kertau (RSO) / RSO Malaya (m)\",GEOGCS[\"Kertau"); + add_srs_wkt (p, 1, + " (RSO)\",DATUM[\"Kertau_RSO\",SPHEROID[\"Everest 1830 (R"); + add_srs_wkt (p, 2, + "SO 1969)\",6377295.664,300.8017,AUTHORITY[\"EPSG\",\"705"); + add_srs_wkt (p, 3, + "6\"]],AUTHORITY[\"EPSG\",\"6751\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4751\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"latitude_of_center\",4],PARAMETER[\"longitud"); + add_srs_wkt (p, 8, + "e_of_center\",102.25],PARAMETER[\"azimuth\",323.0257905]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"rectified_grid_angle\",323.1301023611111],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"scale_factor\",0.99984],PARAMETER[\"false_eas"); + add_srs_wkt (p, 11, + "ting\",804670.24],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 12, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"316"); + add_srs_wkt (p, 14, + "8\"]]"); + p = add_epsg_def (filter, first, last, 3169, "epsg", 3169, + "RGNC91-93 / UTM zone 57S"); + add_proj4text (p, 0, + "+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGNC91-93 / UTM zone 57S\",GEOGCS[\"RGNC91-93\""); + add_srs_wkt (p, 1, + ",DATUM[\"Reseau_Geodesique_de_Nouvelle_Caledonie_91_93\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6749\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4749\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",159],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",10000000],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAS"); + add_srs_wkt (p, 12, + "T],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3169\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 3170, "epsg", 3170, + "RGNC91-93 / UTM zone 58S"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGNC91-93 / UTM zone 58S\",GEOGCS[\"RGNC91-93\""); + add_srs_wkt (p, 1, + ",DATUM[\"Reseau_Geodesique_de_Nouvelle_Caledonie_91_93\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6749\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4749\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",165],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",10000000],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAS"); + add_srs_wkt (p, 12, + "T],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3170\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 3171, "epsg", 3171, + "RGNC91-93 / UTM zone 59S"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGNC91-93 / UTM zone 59S\",GEOGCS[\"RGNC91-93\""); + add_srs_wkt (p, 1, + ",DATUM[\"Reseau_Geodesique_de_Nouvelle_Caledonie_91_93\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6749\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4749\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",171],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",10000000],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAS"); + add_srs_wkt (p, 12, + "T],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3171\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 3172, "epsg", 3172, + "IGN53 Mare / UTM zone 59S"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +south +ellps=intl +towgs84=287.58,17"); + add_proj4text (p, 1, + "7.78,-135.41,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGN53 Mare / UTM zone 59S\",GEOGCS[\"IGN53 Mare"); + add_srs_wkt (p, 1, + "\",DATUM[\"IGN53_Mare\",SPHEROID[\"International 1924\","); + add_srs_wkt (p, 2, + "6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[287.58"); + add_srs_wkt (p, 3, + ",177.78,-135.41,0,0,0,0],AUTHORITY[\"EPSG\",\"6641\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4641\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",171],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"3172\"]]"); + p = add_epsg_def (filter, first, last, 3174, "epsg", 3174, + "NAD83 / Great Lakes Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568"); + add_proj4text (p, 1, + "977 +lon_0=-84.455955 +x_0=1000000 +y_0=1000000 +datum=N"); + add_proj4text (p, 2, + "AD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Great Lakes Albers\",GEOGCS[\"NAD83\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Albers_Conic_"); + add_srs_wkt (p, 7, + "Equal_Area\"],PARAMETER[\"standard_parallel_1\",42.12277"); + add_srs_wkt (p, 8, + "4],PARAMETER[\"standard_parallel_2\",49.01518],PARAMETER"); + add_srs_wkt (p, 9, + "[\"latitude_of_center\",45.568977],PARAMETER[\"longitude"); + add_srs_wkt (p, 10, + "_of_center\",-84.455955],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 11, + "0000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre"); + add_srs_wkt (p, 12, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 13, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3174\"]]"); + p = add_epsg_def (filter, first, last, 3175, "epsg", 3175, + "NAD83 / Great Lakes and St Lawrence Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=42.122774 +lat_2=49.01518 +lat_0=45.568"); + add_proj4text (p, 1, + "977 +lon_0=-83.248627 +x_0=1000000 +y_0=1000000 +datum=N"); + add_proj4text (p, 2, + "AD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Great Lakes and St Lawrence Albers\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Albers_Conic_Equal_Area\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",42.122774],PARAMETER[\"standard_parallel_2\",49.0"); + add_srs_wkt (p, 9, + "1518],PARAMETER[\"latitude_of_center\",45.568977],PARAME"); + add_srs_wkt (p, 10, + "TER[\"longitude_of_center\",-83.248627],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_easting\",1000000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 12, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3175\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 3176, "epsg", 3176, + "Indian 1960 / TM 106 NE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=106 +k=0.9996 +x_0=500000 +y"); + add_proj4text (p, 1, + "_0=0 +a=6377276.345 +b=6356075.41314024 +towgs84=198,881"); + add_proj4text (p, 2, + ",317,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Indian 1960 / TM 106 NE\",GEOGCS[\"Indian 1960\""); + add_srs_wkt (p, 1, + ",DATUM[\"Indian_1960\",SPHEROID[\"Everest 1830 (1937 Adj"); + add_srs_wkt (p, 2, + "ustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "5\"]],TOWGS84[198,881,317,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6131\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4131\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",106],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 12, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"3176\"]]"); + p = add_epsg_def (filter, first, last, 3177, "epsg", 3177, + "LGD2006 / Libya TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.9965000000000001 +x_"); + add_proj4text (p, 1, + "0=1000000 +y_0=0 +ellps=intl +towgs84=-208.406,-109.878,"); + add_proj4text (p, 2, + "-2.5764,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"LGD2006 / Libya TM\",GEOGCS[\"LGD2006\",DATUM[\""); + add_srs_wkt (p, 1, + "Libyan_Geodetic_Datum_2006\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",17],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9965],PARAMETER[\"false_easting\",1000000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"3177\"]]"); + p = add_epsg_def (filter, first, last, 3178, "epsg", 3178, + "GR96 / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / UTM zone 18N\",GEOGCS[\"GR96\",DATUM[\"G"); + add_srs_wkt (p, 1, + "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 2, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3178\"]]"); + p = add_epsg_def (filter, first, last, 3179, "epsg", 3179, + "GR96 / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / UTM zone 19N\",GEOGCS[\"GR96\",DATUM[\"G"); + add_srs_wkt (p, 1, + "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 2, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3179\"]]"); + p = add_epsg_def (filter, first, last, 3180, "epsg", 3180, + "GR96 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / UTM zone 20N\",GEOGCS[\"GR96\",DATUM[\"G"); + add_srs_wkt (p, 1, + "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 2, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3180\"]]"); + p = add_epsg_def (filter, first, last, 3181, "epsg", 3181, + "GR96 / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / UTM zone 21N\",GEOGCS[\"GR96\",DATUM[\"G"); + add_srs_wkt (p, 1, + "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 2, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3181\"]]"); + p = add_epsg_def (filter, first, last, 3182, "epsg", 3182, + "GR96 / UTM zone 22N"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / UTM zone 22N\",GEOGCS[\"GR96\",DATUM[\"G"); + add_srs_wkt (p, 1, + "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 2, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3182\"]]"); + p = add_epsg_def (filter, first, last, 3183, "epsg", 3183, + "GR96 / UTM zone 23N"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / UTM zone 23N\",GEOGCS[\"GR96\",DATUM[\"G"); + add_srs_wkt (p, 1, + "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 2, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3183\"]]"); + p = add_epsg_def (filter, first, last, 3184, "epsg", 3184, + "GR96 / UTM zone 24N"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / UTM zone 24N\",GEOGCS[\"GR96\",DATUM[\"G"); + add_srs_wkt (p, 1, + "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 2, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3184\"]]"); + p = add_epsg_def (filter, first, last, 3185, "epsg", 3185, + "GR96 / UTM zone 25N"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / UTM zone 25N\",GEOGCS[\"GR96\",DATUM[\"G"); + add_srs_wkt (p, 1, + "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 2, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3185\"]]"); + p = add_epsg_def (filter, first, last, 3186, "epsg", 3186, + "GR96 / UTM zone 26N"); + add_proj4text (p, 0, + "+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / UTM zone 26N\",GEOGCS[\"GR96\",DATUM[\"G"); + add_srs_wkt (p, 1, + "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 2, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-27],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3186\"]]"); + p = add_epsg_def (filter, first, last, 3187, "epsg", 3187, + "GR96 / UTM zone 27N"); + add_proj4text (p, 0, + "+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / UTM zone 27N\",GEOGCS[\"GR96\",DATUM[\"G"); + add_srs_wkt (p, 1, + "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 2, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-21],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3187\"]]"); + p = add_epsg_def (filter, first, last, 3188, "epsg", 3188, + "GR96 / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / UTM zone 28N\",GEOGCS[\"GR96\",DATUM[\"G"); + add_srs_wkt (p, 1, + "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 2, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3188\"]]"); + p = add_epsg_def (filter, first, last, 3189, "epsg", 3189, + "GR96 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / UTM zone 29N\",GEOGCS[\"GR96\",DATUM[\"G"); + add_srs_wkt (p, 1, + "reenland_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 2, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4747\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3189\"]]"); + p = add_epsg_def (filter, first, last, 3190, "epsg", 3190, + "LGD2006 / Libya TM zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.99995 +x_0=200000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"LGD2006 / Libya TM zone 5\",GEOGCS[\"LGD2006\","); + add_srs_wkt (p, 1, + "DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 4, + "SG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.99995],PARAMETER[\"false_easting\",2000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"3190\"]]"); + p = add_epsg_def (filter, first, last, 3191, "epsg", 3191, + "LGD2006 / Libya TM zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=11 +k=0.99995 +x_0=200000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"LGD2006 / Libya TM zone 6\",GEOGCS[\"LGD2006\","); + add_srs_wkt (p, 1, + "DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 4, + "SG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",11],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.99995],PARAMETER[\"false_easting\",20"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"3191\"]]"); + p = add_epsg_def (filter, first, last, 3192, "epsg", 3192, + "LGD2006 / Libya TM zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=13 +k=0.99995 +x_0=200000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"LGD2006 / Libya TM zone 7\",GEOGCS[\"LGD2006\","); + add_srs_wkt (p, 1, + "DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 4, + "SG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",13],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.99995],PARAMETER[\"false_easting\",20"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"3192\"]]"); + p = add_epsg_def (filter, first, last, 3193, "epsg", 3193, + "LGD2006 / Libya TM zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.99995 +x_0=200000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"LGD2006 / Libya TM zone 8\",GEOGCS[\"LGD2006\","); + add_srs_wkt (p, 1, + "DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 4, + "SG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",15],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.99995],PARAMETER[\"false_easting\",20"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"3193\"]]"); + p = add_epsg_def (filter, first, last, 3194, "epsg", 3194, + "LGD2006 / Libya TM zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=17 +k=0.99995 +x_0=200000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"LGD2006 / Libya TM zone 9\",GEOGCS[\"LGD2006\","); + add_srs_wkt (p, 1, + "DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 4, + "SG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",17],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.99995],PARAMETER[\"false_easting\",20"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"3194\"]]"); + p = add_epsg_def (filter, first, last, 3195, "epsg", 3195, + "LGD2006 / Libya TM zone 10"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=19 +k=0.99995 +x_0=200000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"LGD2006 / Libya TM zone 10\",GEOGCS[\"LGD2006\""); + add_srs_wkt (p, 1, + ",DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",19],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",0.99995],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "200000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"3195\"]]"); + p = add_epsg_def (filter, first, last, 3196, "epsg", 3196, + "LGD2006 / Libya TM zone 11"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.99995 +x_0=200000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"LGD2006 / Libya TM zone 11\",GEOGCS[\"LGD2006\""); + add_srs_wkt (p, 1, + ",DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",21],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",0.99995],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "200000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"3196\"]]"); + p = add_epsg_def (filter, first, last, 3197, "epsg", 3197, + "LGD2006 / Libya TM zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=23 +k=0.99995 +x_0=200000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"LGD2006 / Libya TM zone 12\",GEOGCS[\"LGD2006\""); + add_srs_wkt (p, 1, + ",DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",23],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",0.99995],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "200000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"3197\"]]"); + p = add_epsg_def (filter, first, last, 3198, "epsg", 3198, + "LGD2006 / Libya TM zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=25 +k=0.99995 +x_0=200000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=intl +towgs84=-208.406,-109.878,-2.5764,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"LGD2006 / Libya TM zone 13\",GEOGCS[\"LGD2006\""); + add_srs_wkt (p, 1, + ",DATUM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",25],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",0.99995],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "200000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"3198\"]]"); + p = add_epsg_def (filter, first, last, 3199, "epsg", 3199, + "LGD2006 / UTM zone 32N"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +ellps=intl +towgs84=-208.406,-109.87"); + add_proj4text (p, 1, + "8,-2.5764,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"LGD2006 / UTM zone 32N\",GEOGCS[\"LGD2006\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internation"); + add_srs_wkt (p, 2, + "al 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9996],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"3199\"]]"); + p = add_epsg_def (filter, first, last, 3200, "epsg", 3200, + "FD58 / Iraq zone"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.99878"); + add_proj4text (p, 1, + "64078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +tow"); + add_proj4text (p, 2, + "gs84=-241.54,-163.64,396.06,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"FD58 / Iraq zone\",GEOGCS[\"FD58\",DATUM[\"Fina"); + add_srs_wkt (p, 1, + "l_Datum_1958\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 2, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-241.54,"); + add_srs_wkt (p, 3, + "-163.64,396.06,0,0,0,0],AUTHORITY[\"EPSG\",\"6132\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4132\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",32"); + add_srs_wkt (p, 8, + ".5],PARAMETER[\"central_meridian\",45],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9987864078],PARAMETER[\"false_easting\",1500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1166200],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3200\"]]"); + p = add_epsg_def (filter, first, last, 3201, "epsg", 3201, + "LGD2006 / UTM zone 33N"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +ellps=intl +towgs84=-208.406,-109.87"); + add_proj4text (p, 1, + "8,-2.5764,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"LGD2006 / UTM zone 33N\",GEOGCS[\"LGD2006\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internation"); + add_srs_wkt (p, 2, + "al 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"3201\"]]"); + p = add_epsg_def (filter, first, last, 3202, "epsg", 3202, + "LGD2006 / UTM zone 34N"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +ellps=intl +towgs84=-208.406,-109.87"); + add_proj4text (p, 1, + "8,-2.5764,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"LGD2006 / UTM zone 34N\",GEOGCS[\"LGD2006\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internation"); + add_srs_wkt (p, 2, + "al 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",21],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"3202\"]]"); + p = add_epsg_def (filter, first, last, 3203, "epsg", 3203, + "LGD2006 / UTM zone 35N"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +ellps=intl +towgs84=-208.406,-109.87"); + add_proj4text (p, 1, + "8,-2.5764,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"LGD2006 / UTM zone 35N\",GEOGCS[\"LGD2006\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Libyan_Geodetic_Datum_2006\",SPHEROID[\"Internation"); + add_srs_wkt (p, 2, + "al 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[-208.406,-109.878,-2.5764,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6754\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4754\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",27],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"3203\"]]"); + p = add_epsg_def (filter, first, last, 3204, "epsg", 3204, + "WGS 84 / SCAR IMW SP19-20"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.333333333"); + add_proj4text (p, 1, + "33334 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SP19-20\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-60.66666666666666],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-63.33333333333334],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-66],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "204\"]]"); + p = add_epsg_def (filter, first, last, 3205, "epsg", 3205, + "WGS 84 / SCAR IMW SP21-22"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.333333333"); + add_proj4text (p, 1, + "33334 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SP21-22\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-60.66666666666666],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-63.33333333333334],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-54],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "205\"]]"); + p = add_epsg_def (filter, first, last, 3206, "epsg", 3206, + "WGS 84 / SCAR IMW SP23-24"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-60.66666666666666 +lat_2=-63.333333333"); + add_proj4text (p, 1, + "33334 +lat_0=-90 +lon_0=-42 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SP23-24\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-60.66666666666666],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-63.33333333333334],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-42],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "206\"]]"); + p = add_epsg_def (filter, first, last, 3207, "epsg", 3207, + "WGS 84 / SCAR IMW SQ01-02"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-174 +x_0=0 +y_0=0 +datum=WGS84 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SQ01-02\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-174],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3207\"]]"); + p = add_epsg_def (filter, first, last, 3208, "epsg", 3208, + "WGS 84 / SCAR IMW SQ19-20"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SQ19-20\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-66],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "208\"]]"); + p = add_epsg_def (filter, first, last, 3209, "epsg", 3209, + "WGS 84 / SCAR IMW SQ21-22"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-54 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SQ21-22\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-54],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "209\"]]"); + p = add_epsg_def (filter, first, last, 3210, "epsg", 3210, + "WGS 84 / SCAR IMW SQ37-38"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SQ37-38\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",42],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "210\"]]"); + p = add_epsg_def (filter, first, last, 3211, "epsg", 3211, + "WGS 84 / SCAR IMW SQ39-40"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SQ39-40\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",54],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "211\"]]"); + p = add_epsg_def (filter, first, last, 3212, "epsg", 3212, + "WGS 84 / SCAR IMW SQ41-42"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SQ41-42\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",66],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "212\"]]"); + p = add_epsg_def (filter, first, last, 3213, "epsg", 3213, + "WGS 84 / SCAR IMW SQ43-44"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SQ43-44\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",78],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "213\"]]"); + p = add_epsg_def (filter, first, last, 3214, "epsg", 3214, + "WGS 84 / SCAR IMW SQ45-46"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SQ45-46\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",90],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "214\"]]"); + p = add_epsg_def (filter, first, last, 3215, "epsg", 3215, + "WGS 84 / SCAR IMW SQ47-48"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SQ47-48\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",102],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "215\"]]"); + p = add_epsg_def (filter, first, last, 3216, "epsg", 3216, + "WGS 84 / SCAR IMW SQ49-50"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SQ49-50\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",114],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "216\"]]"); + p = add_epsg_def (filter, first, last, 3217, "epsg", 3217, + "WGS 84 / SCAR IMW SQ51-52"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SQ51-52\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",126],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "217\"]]"); + p = add_epsg_def (filter, first, last, 3218, "epsg", 3218, + "WGS 84 / SCAR IMW SQ53-54"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SQ53-54\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",138],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "218\"]]"); + p = add_epsg_def (filter, first, last, 3219, "epsg", 3219, + "WGS 84 / SCAR IMW SQ55-56"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SQ55-56\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",150],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "219\"]]"); + p = add_epsg_def (filter, first, last, 3220, "epsg", 3220, + "WGS 84 / SCAR IMW SQ57-58"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-64.66666666666667 +lat_2=-67.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SQ57-58\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-64.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-67.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",162],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "220\"]]"); + p = add_epsg_def (filter, first, last, 3221, "epsg", 3221, + "WGS 84 / SCAR IMW SR13-14"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-102 +x_0=0 +y_0=0 +datum=WGS84 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR13-14\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-102],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3221\"]]"); + p = add_epsg_def (filter, first, last, 3222, "epsg", 3222, + "WGS 84 / SCAR IMW SR15-16"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-90 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR15-16\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-90],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "222\"]]"); + p = add_epsg_def (filter, first, last, 3223, "epsg", 3223, + "WGS 84 / SCAR IMW SR17-18"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-78 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR17-18\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-78],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "223\"]]"); + p = add_epsg_def (filter, first, last, 3224, "epsg", 3224, + "WGS 84 / SCAR IMW SR19-20"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-66 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR19-20\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-66],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "224\"]]"); + p = add_epsg_def (filter, first, last, 3225, "epsg", 3225, + "WGS 84 / SCAR IMW SR27-28"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-18 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR27-28\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-18],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "225\"]]"); + p = add_epsg_def (filter, first, last, 3226, "epsg", 3226, + "WGS 84 / SCAR IMW SR29-30"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-6 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR29-30\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-6],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "226\"]]"); + p = add_epsg_def (filter, first, last, 3227, "epsg", 3227, + "WGS 84 / SCAR IMW SR31-32"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=6 +x_0=0 +y_0=0 +datum=WGS84 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR31-32\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",6],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"322"); + add_srs_wkt (p, 13, + "7\"]]"); + p = add_epsg_def (filter, first, last, 3228, "epsg", 3228, + "WGS 84 / SCAR IMW SR33-34"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=18 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR33-34\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",18],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "228\"]]"); + p = add_epsg_def (filter, first, last, 3229, "epsg", 3229, + "WGS 84 / SCAR IMW SR35-36"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=30 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR35-36\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",30],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "229\"]]"); + p = add_epsg_def (filter, first, last, 3230, "epsg", 3230, + "WGS 84 / SCAR IMW SR37-38"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=42 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR37-38\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",42],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "230\"]]"); + p = add_epsg_def (filter, first, last, 3231, "epsg", 3231, + "WGS 84 / SCAR IMW SR39-40"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=54 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR39-40\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",54],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "231\"]]"); + p = add_epsg_def (filter, first, last, 3232, "epsg", 3232, + "WGS 84 / SCAR IMW SR41-42"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=66 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR41-42\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",66],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "232\"]]"); + p = add_epsg_def (filter, first, last, 3233, "epsg", 3233, + "WGS 84 / SCAR IMW SR43-44"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=78 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR43-44\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",78],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "233\"]]"); + p = add_epsg_def (filter, first, last, 3234, "epsg", 3234, + "WGS 84 / SCAR IMW SR45-46"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=90 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR45-46\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",90],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "234\"]]"); + p = add_epsg_def (filter, first, last, 3235, "epsg", 3235, + "WGS 84 / SCAR IMW SR47-48"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=102 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR47-48\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",102],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "235\"]]"); + p = add_epsg_def (filter, first, last, 3236, "epsg", 3236, + "WGS 84 / SCAR IMW SR49-50"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=114 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR49-50\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",114],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "236\"]]"); + p = add_epsg_def (filter, first, last, 3237, "epsg", 3237, + "WGS 84 / SCAR IMW SR51-52"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=126 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR51-52\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",126],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "237\"]]"); + p = add_epsg_def (filter, first, last, 3238, "epsg", 3238, + "WGS 84 / SCAR IMW SR53-54"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=138 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR53-54\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",138],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "238\"]]"); + p = add_epsg_def (filter, first, last, 3239, "epsg", 3239, + "WGS 84 / SCAR IMW SR55-56"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=150 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR55-56\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",150],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "239\"]]"); + p = add_epsg_def (filter, first, last, 3240, "epsg", 3240, + "WGS 84 / SCAR IMW SR57-58"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=162 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR57-58\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",162],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "240\"]]"); + p = add_epsg_def (filter, first, last, 3241, "epsg", 3241, + "WGS 84 / SCAR IMW SR59-60"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-68.66666666666667 +lat_2=-71.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=174 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SR59-60\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-68.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-71.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",174],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "241\"]]"); + p = add_epsg_def (filter, first, last, 3242, "epsg", 3242, + "WGS 84 / SCAR IMW SS04-06"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-153 +x_0=0 +y_0=0 +datum=WGS84 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS04-06\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-153],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3242\"]]"); + p = add_epsg_def (filter, first, last, 3243, "epsg", 3243, + "WGS 84 / SCAR IMW SS07-09"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-135 +x_0=0 +y_0=0 +datum=WGS84 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS07-09\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-135],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3243\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_12.c b/src/spatialite/src/srsinit/epsg_inlined_12.c new file mode 100644 index 0000000..cc08825 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_12.c @@ -0,0 +1,3480 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_12 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 3244, "epsg", 3244, + "WGS 84 / SCAR IMW SS10-12"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-117 +x_0=0 +y_0=0 +datum=WGS84 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS10-12\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-117],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3244\"]]"); + p = add_epsg_def (filter, first, last, 3245, "epsg", 3245, + "WGS 84 / SCAR IMW SS13-15"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-99 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS13-15\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-99],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "245\"]]"); + p = add_epsg_def (filter, first, last, 3246, "epsg", 3246, + "WGS 84 / SCAR IMW SS16-18"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-81 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS16-18\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-81],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "246\"]]"); + p = add_epsg_def (filter, first, last, 3247, "epsg", 3247, + "WGS 84 / SCAR IMW SS19-21"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-63 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS19-21\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-63],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "247\"]]"); + p = add_epsg_def (filter, first, last, 3248, "epsg", 3248, + "WGS 84 / SCAR IMW SS25-27"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-27 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS25-27\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-27],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "248\"]]"); + p = add_epsg_def (filter, first, last, 3249, "epsg", 3249, + "WGS 84 / SCAR IMW SS28-30"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-9 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS28-30\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-9],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "249\"]]"); + p = add_epsg_def (filter, first, last, 3250, "epsg", 3250, + "WGS 84 / SCAR IMW SS31-33"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=9 +x_0=0 +y_0=0 +datum=WGS84 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS31-33\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",9],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"325"); + add_srs_wkt (p, 13, + "0\"]]"); + p = add_epsg_def (filter, first, last, 3251, "epsg", 3251, + "WGS 84 / SCAR IMW SS34-36"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=27 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS34-36\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",27],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "251\"]]"); + p = add_epsg_def (filter, first, last, 3252, "epsg", 3252, + "WGS 84 / SCAR IMW SS37-39"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=45 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS37-39\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",45],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "252\"]]"); + p = add_epsg_def (filter, first, last, 3253, "epsg", 3253, + "WGS 84 / SCAR IMW SS40-42"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=63 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS40-42\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",63],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "253\"]]"); + p = add_epsg_def (filter, first, last, 3254, "epsg", 3254, + "WGS 84 / SCAR IMW SS43-45"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=81 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS43-45\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",81],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "254\"]]"); + p = add_epsg_def (filter, first, last, 3255, "epsg", 3255, + "WGS 84 / SCAR IMW SS46-48"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=99 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS46-48\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",99],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "255\"]]"); + p = add_epsg_def (filter, first, last, 3256, "epsg", 3256, + "WGS 84 / SCAR IMW SS49-51"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=117 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS49-51\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",117],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "256\"]]"); + p = add_epsg_def (filter, first, last, 3257, "epsg", 3257, + "WGS 84 / SCAR IMW SS52-54"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=135 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS52-54\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",135],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "257\"]]"); + p = add_epsg_def (filter, first, last, 3258, "epsg", 3258, + "WGS 84 / SCAR IMW SS55-57"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=153 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS55-57\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",153],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "258\"]]"); + p = add_epsg_def (filter, first, last, 3259, "epsg", 3259, + "WGS 84 / SCAR IMW SS58-60"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-72.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=171 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SS58-60\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-72.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-75.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",171],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "259\"]]"); + p = add_epsg_def (filter, first, last, 3260, "epsg", 3260, + "WGS 84 / SCAR IMW ST01-04"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-168 +x_0=0 +y_0=0 +datum=WGS84 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW ST01-04\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-168],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3260\"]]"); + p = add_epsg_def (filter, first, last, 3261, "epsg", 3261, + "WGS 84 / SCAR IMW ST05-08"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-144 +x_0=0 +y_0=0 +datum=WGS84 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW ST05-08\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-144],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3261\"]]"); + p = add_epsg_def (filter, first, last, 3262, "epsg", 3262, + "WGS 84 / SCAR IMW ST09-12"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-120 +x_0=0 +y_0=0 +datum=WGS84 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW ST09-12\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-120],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3262\"]]"); + p = add_epsg_def (filter, first, last, 3263, "epsg", 3263, + "WGS 84 / SCAR IMW ST13-16"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-96 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW ST13-16\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-96],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "263\"]]"); + p = add_epsg_def (filter, first, last, 3264, "epsg", 3264, + "WGS 84 / SCAR IMW ST17-20"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-72 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW ST17-20\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-72],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "264\"]]"); + p = add_epsg_def (filter, first, last, 3265, "epsg", 3265, + "WGS 84 / SCAR IMW ST21-24"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-48 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW ST21-24\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-48],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "265\"]]"); + p = add_epsg_def (filter, first, last, 3266, "epsg", 3266, + "WGS 84 / SCAR IMW ST25-28"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=-24 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW ST25-28\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",-24],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "266\"]]"); + p = add_epsg_def (filter, first, last, 3267, "epsg", 3267, + "WGS 84 / SCAR IMW ST29-32"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW ST29-32\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",0],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"326"); + add_srs_wkt (p, 13, + "7\"]]"); + p = add_epsg_def (filter, first, last, 3268, "epsg", 3268, + "WGS 84 / SCAR IMW ST33-36"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=24 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW ST33-36\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",24],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "268\"]]"); + p = add_epsg_def (filter, first, last, 3269, "epsg", 3269, + "WGS 84 / SCAR IMW ST37-40"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=48 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW ST37-40\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",48],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "269\"]]"); + p = add_epsg_def (filter, first, last, 3270, "epsg", 3270, + "WGS 84 / SCAR IMW ST41-44"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=72 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW ST41-44\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",72],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "270\"]]"); + p = add_epsg_def (filter, first, last, 3271, "epsg", 3271, + "WGS 84 / SCAR IMW ST45-48"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=96 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW ST45-48\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",96],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "271\"]]"); + p = add_epsg_def (filter, first, last, 3272, "epsg", 3272, + "WGS 84 / SCAR IMW ST49-52"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=120 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW ST49-52\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",120],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "272\"]]"); + p = add_epsg_def (filter, first, last, 3273, "epsg", 3273, + "WGS 84 / SCAR IMW ST53-56"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=144 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW ST53-56\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",144],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "273\"]]"); + p = add_epsg_def (filter, first, last, 3274, "epsg", 3274, + "WGS 84 / SCAR IMW ST57-60"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=168 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW ST57-60\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 7, + "llel_1\",-76.66666666666667],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_2\",-79.33333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",-90],PARAMETER[\"central_meridian\",168],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "274\"]]"); + p = add_epsg_def (filter, first, last, 3275, "epsg", 3275, + "WGS 84 / SCAR IMW SU01-05"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=-165 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SU01-05\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",-165]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 10, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 11, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3275\"]]"); + p = add_epsg_def (filter, first, last, 3276, "epsg", 3276, + "WGS 84 / SCAR IMW SU06-10"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=-135 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SU06-10\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",-135]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 10, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 11, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3276\"]]"); + p = add_epsg_def (filter, first, last, 3277, "epsg", 3277, + "WGS 84 / SCAR IMW SU11-15"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=-105 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SU11-15\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",-105]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 10, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 11, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3277\"]]"); + p = add_epsg_def (filter, first, last, 3278, "epsg", 3278, + "WGS 84 / SCAR IMW SU16-20"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=-75 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SU16-20\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",-75],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3278\"]]"); + p = add_epsg_def (filter, first, last, 3279, "epsg", 3279, + "WGS 84 / SCAR IMW SU21-25"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=-45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SU21-25\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",-45],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3279\"]]"); + p = add_epsg_def (filter, first, last, 3280, "epsg", 3280, + "WGS 84 / SCAR IMW SU26-30"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=-15 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SU26-30\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",-15],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3280\"]]"); + p = add_epsg_def (filter, first, last, 3281, "epsg", 3281, + "WGS 84 / SCAR IMW SU31-35"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=15 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SU31-35\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",15],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3281\"]]"); + p = add_epsg_def (filter, first, last, 3282, "epsg", 3282, + "WGS 84 / SCAR IMW SU36-40"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=45 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SU36-40\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",45],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3282\"]]"); + p = add_epsg_def (filter, first, last, 3283, "epsg", 3283, + "WGS 84 / SCAR IMW SU41-45"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=75 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SU41-45\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",75],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3283\"]]"); + p = add_epsg_def (filter, first, last, 3284, "epsg", 3284, + "WGS 84 / SCAR IMW SU46-50"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=105 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SU46-50\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",105],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3284\"]]"); + p = add_epsg_def (filter, first, last, 3285, "epsg", 3285, + "WGS 84 / SCAR IMW SU51-55"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=135 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SU51-55\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",135],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3285\"]]"); + p = add_epsg_def (filter, first, last, 3286, "epsg", 3286, + "WGS 84 / SCAR IMW SU56-60"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=165 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SU56-60\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",165],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3286\"]]"); + p = add_epsg_def (filter, first, last, 3287, "epsg", 3287, + "WGS 84 / SCAR IMW SV01-10"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=-150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SV01-10\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",-150]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 10, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 11, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3287\"]]"); + p = add_epsg_def (filter, first, last, 3288, "epsg", 3288, + "WGS 84 / SCAR IMW SV11-20"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=-90 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SV11-20\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",-90],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3288\"]]"); + p = add_epsg_def (filter, first, last, 3289, "epsg", 3289, + "WGS 84 / SCAR IMW SV21-30"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=-30 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SV21-30\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",-30],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3289\"]]"); + p = add_epsg_def (filter, first, last, 3290, "epsg", 3290, + "WGS 84 / SCAR IMW SV31-40"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=30 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SV31-40\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",30],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3290\"]]"); + p = add_epsg_def (filter, first, last, 3291, "epsg", 3291, + "WGS 84 / SCAR IMW SV41-50"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=90 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SV41-50\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",90],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3291\"]]"); + p = add_epsg_def (filter, first, last, 3292, "epsg", 3292, + "WGS 84 / SCAR IMW SV51-60"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SV51-60\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",150],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3292\"]]"); + p = add_epsg_def (filter, first, last, 3293, "epsg", 3293, + "WGS 84 / SCAR IMW SW01-60"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-80.23861111111111 +lon_0"); + add_proj4text (p, 1, + "=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / SCAR IMW SW01-60\",GEOGCS[\"WGS 84\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223"); + add_srs_wkt (p, 2, + "563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\""); + add_srs_wkt (p, 6, + "Polar_Stereographic\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 7, + "-80.23861111111111],PARAMETER[\"central_meridian\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 9, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 10, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3293\"]]"); + p = add_epsg_def (filter, first, last, 3294, "epsg", 3294, + "WGS 84 / USGS Transantarctic Mountains"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-78 +lon_0=162 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / USGS Transantarctic Mountains\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",63781"); + add_srs_wkt (p, 2, + "37,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]"); + add_srs_wkt (p, 6, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",-76.66666666666667],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_2\",-79.33333333333333],PARAMETER[\"lati"); + add_srs_wkt (p, 9, + "tude_of_origin\",-78],PARAMETER[\"central_meridian\",162"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_easting\",0],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 12, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 13, + "Y[\"EPSG\",\"3294\"]]"); + p = add_epsg_def (filter, first, last, 3296, "epsg", 3296, + "RGPF / UTM zone 5S"); + add_proj4text (p, 0, + "+proj=utm +zone=5 +south +ellps=GRS80 +towgs84=0.072,-0."); + add_proj4text (p, 1, + "507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGPF / UTM zone 5S\",GEOGCS[\"RGPF\",DATUM[\"Re"); + add_srs_wkt (p, 1, + "seau_Geodesique_de_la_Polynesie_Francaise\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,"); + add_srs_wkt (p, 4, + "-0.0093],AUTHORITY[\"EPSG\",\"6687\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4687\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); + add_srs_wkt (p, 9, + "ridian\",-153],PARAMETER[\"scale_factor\",0.9996],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"3296\"]]"); + p = add_epsg_def (filter, first, last, 3297, "epsg", 3297, + "RGPF / UTM zone 6S"); + add_proj4text (p, 0, + "+proj=utm +zone=6 +south +ellps=GRS80 +towgs84=0.072,-0."); + add_proj4text (p, 1, + "507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGPF / UTM zone 6S\",GEOGCS[\"RGPF\",DATUM[\"Re"); + add_srs_wkt (p, 1, + "seau_Geodesique_de_la_Polynesie_Francaise\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,"); + add_srs_wkt (p, 4, + "-0.0093],AUTHORITY[\"EPSG\",\"6687\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4687\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); + add_srs_wkt (p, 9, + "ridian\",-147],PARAMETER[\"scale_factor\",0.9996],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"3297\"]]"); + p = add_epsg_def (filter, first, last, 3298, "epsg", 3298, + "RGPF / UTM zone 7S"); + add_proj4text (p, 0, + "+proj=utm +zone=7 +south +ellps=GRS80 +towgs84=0.072,-0."); + add_proj4text (p, 1, + "507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGPF / UTM zone 7S\",GEOGCS[\"RGPF\",DATUM[\"Re"); + add_srs_wkt (p, 1, + "seau_Geodesique_de_la_Polynesie_Francaise\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,"); + add_srs_wkt (p, 4, + "-0.0093],AUTHORITY[\"EPSG\",\"6687\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4687\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); + add_srs_wkt (p, 9, + "ridian\",-141],PARAMETER[\"scale_factor\",0.9996],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"3298\"]]"); + p = add_epsg_def (filter, first, last, 3299, "epsg", 3299, + "RGPF / UTM zone 8S"); + add_proj4text (p, 0, + "+proj=utm +zone=8 +south +ellps=GRS80 +towgs84=0.072,-0."); + add_proj4text (p, 1, + "507,-0.245,-0.0183,0.0003,-0.007,-0.0093 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGPF / UTM zone 8S\",GEOGCS[\"RGPF\",DATUM[\"Re"); + add_srs_wkt (p, 1, + "seau_Geodesique_de_la_Polynesie_Francaise\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0.072,-0.507,-0.245,-0.0183,0.0003,-0.007,"); + add_srs_wkt (p, 4, + "-0.0093],AUTHORITY[\"EPSG\",\"6687\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4687\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); + add_srs_wkt (p, 9, + "ridian\",-135],PARAMETER[\"scale_factor\",0.9996],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"3299\"]]"); + p = add_epsg_def (filter, first, last, 3300, "epsg", 3300, + "Estonian Coordinate System of 1992"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.5"); + add_proj4text (p, 1, + "1755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps="); + add_proj4text (p, 2, + "GRS80 +towgs84=0.055,-0.541,-0.185,0.0183,-0.0003,-0.007"); + add_proj4text (p, 3, + ",-0.014 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Estonian Coordinate System of 1992\",GEOGCS[\"E"); + add_srs_wkt (p, 1, + "ST92\",DATUM[\"Estonia_1992\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.014],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6133\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4133\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",59.33333333333334],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",58],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 10, + "\",57.51755393055556],PARAMETER[\"central_meridian\",24]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 12, + "orthing\",6375000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9001\"]],AUTHORITY[\"EPSG\",\"3300\"]]"); + p = add_epsg_def (filter, first, last, 3301, "epsg", 3301, + "Estonian Coordinate System of 1997"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=59.33333333333334 +lat_2=58 +lat_0=57.5"); + add_proj4text (p, 1, + "1755393055556 +lon_0=24 +x_0=500000 +y_0=6375000 +ellps="); + add_proj4text (p, 2, + "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Estonian Coordinate System of 1997\",GEOGCS[\"E"); + add_srs_wkt (p, 1, + "ST97\",DATUM[\"Estonia_1997\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6180\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4180\"]],PROJECTION[\"Lambert_Conformal_C"); + add_srs_wkt (p, 7, + "onic_2SP\"],PARAMETER[\"standard_parallel_1\",59.3333333"); + add_srs_wkt (p, 8, + "3333334],PARAMETER[\"standard_parallel_2\",58],PARAMETER"); + add_srs_wkt (p, 9, + "[\"latitude_of_origin\",57.51755393055556],PARAMETER[\"c"); + add_srs_wkt (p, 10, + "entral_meridian\",24],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_northing\",6375000],UNIT[\"metre\",1"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3301"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 3302, "epsg", 3302, + "IGN63 Hiva Oa / UTM zone 7S"); + add_proj4text (p, 0, + "+proj=utm +zone=7 +south +ellps=intl +towgs84=410.721,55"); + add_proj4text (p, 1, + ".049,80.746,2.5779,2.3514,0.6664,17.3311 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGN63 Hiva Oa / UTM zone 7S\",GEOGCS[\"IGN63 Hi"); + add_srs_wkt (p, 1, + "va Oa\",DATUM[\"IGN63_Hiva_Oa\",SPHEROID[\"International"); + add_srs_wkt (p, 2, + " 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[410.721,55.049,80.746,2.5779,2.3514,0.6664,17.3311],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6689\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "689\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "141],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"3302\"]]"); + p = add_epsg_def (filter, first, last, 3303, "epsg", 3303, + "Fatu Iva 72 / UTM zone 7S"); + add_proj4text (p, 0, + "+proj=utm +zone=7 +south +ellps=intl +towgs84=347.103,10"); + add_proj4text (p, 1, + "78.12,2623.92,-33.8875,70.6773,-9.3943,186.074 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Fatu Iva 72 / UTM zone 7S\",GEOGCS[\"Fatu Iva 7"); + add_srs_wkt (p, 1, + "2\",DATUM[\"Fatu_Iva_72\",SPHEROID[\"International 1924\""); + add_srs_wkt (p, 2, + ",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[347.1"); + add_srs_wkt (p, 3, + "03,1078.12,2623.92,-33.8875,70.6773,-9.3943,186.074],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6688\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); + add_srs_wkt (p, 7, + "88\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-1"); + add_srs_wkt (p, 9, + "41],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",500000],PARAMETER[\"false_northing\",10000000"); + add_srs_wkt (p, 11, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"3303\"]]"); + p = add_epsg_def (filter, first, last, 3304, "epsg", 3304, + "Tahiti 79 / UTM zone 6S"); + add_proj4text (p, 0, + "+proj=utm +zone=6 +south +ellps=intl +towgs84=221.525,15"); + add_proj4text (p, 1, + "2.948,176.768,-2.3847,-1.3896,-0.877,11.4741 +units=m +n"); + add_proj4text (p, 2, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tahiti 79 / UTM zone 6S\",GEOGCS[\"Tahiti 79\","); + add_srs_wkt (p, 1, + "DATUM[\"Tahiti_79\",SPHEROID[\"International 1924\",6378"); + add_srs_wkt (p, 2, + "388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[221.525,15"); + add_srs_wkt (p, 3, + "2.948,176.768,-2.3847,-1.3896,-0.877,11.4741],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6690\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4690\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",-147],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",10000000],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "304\"]]"); + p = add_epsg_def (filter, first, last, 3305, "epsg", 3305, + "Moorea 87 / UTM zone 6S"); + add_proj4text (p, 0, + "+proj=utm +zone=6 +south +ellps=intl +towgs84=215.525,14"); + add_proj4text (p, 1, + "9.593,176.229,-3.2624,-1.692,-1.1571,10.4773 +units=m +n"); + add_proj4text (p, 2, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Moorea 87 / UTM zone 6S\",GEOGCS[\"Moorea 87\","); + add_srs_wkt (p, 1, + "DATUM[\"Moorea_87\",SPHEROID[\"International 1924\",6378"); + add_srs_wkt (p, 2, + "388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[215.525,14"); + add_srs_wkt (p, 3, + "9.593,176.229,-3.2624,-1.692,-1.1571,10.4773],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6691\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4691\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",-147],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",10000000],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "305\"]]"); + p = add_epsg_def (filter, first, last, 3306, "epsg", 3306, + "Maupiti 83 / UTM zone 5S"); + add_proj4text (p, 0, + "+proj=utm +zone=5 +south +ellps=intl +towgs84=217.037,86"); + add_proj4text (p, 1, + ".959,23.956,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Maupiti 83 / UTM zone 5S\",GEOGCS[\"Maupiti 83\""); + add_srs_wkt (p, 1, + ",DATUM[\"Maupiti_83\",SPHEROID[\"International 1924\",63"); + add_srs_wkt (p, 2, + "78388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[217.037,"); + add_srs_wkt (p, 3, + "86.959,23.956,0,0,0,0],AUTHORITY[\"EPSG\",\"6692\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4692\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-153],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"3306\"]]"); + p = add_epsg_def (filter, first, last, 3307, "epsg", 3307, + "Nakhl-e Ghanem / UTM zone 39N"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=WGS84 +towgs84=0,-0.15,0.68,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Nakhl-e Ghanem / UTM zone 39N\",GEOGCS[\"Nakhl-"); + add_srs_wkt (p, 1, + "e Ghanem\",DATUM[\"Nakhl_e_Ghanem\",SPHEROID[\"WGS 84\","); + add_srs_wkt (p, 2, + "6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,-0.15,0.68,0,0,0,0],AUTHORITY[\"EPSG\",\"6693\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4693\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",51],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"3307\"]]"); + p = add_epsg_def (filter, first, last, 3308, "epsg", 3308, + "GDA94 / NSW Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-30.75 +lat_2=-35.75 +lat_0=-33.25 +lon"); + add_proj4text (p, 1, + "_0=147 +x_0=9300000 +y_0=4500000 +ellps=GRS80 +towgs84=0"); + add_proj4text (p, 2, + ",0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / NSW Lambert\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",-3"); + add_srs_wkt (p, 8, + "0.75],PARAMETER[\"standard_parallel_2\",-35.75],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"latitude_of_origin\",-33.25],PARAMETER[\"central_mer"); + add_srs_wkt (p, 10, + "idian\",147],PARAMETER[\"false_easting\",9300000],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_northing\",4500000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 13, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"3308\"]]"); + p = add_epsg_def (filter, first, last, 3309, "epsg", 3309, + "NAD27 / California Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_"); + add_proj4text (p, 1, + "0=0 +y_0=-4000000 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / California Albers\",GEOGCS[\"NAD27\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866"); + add_srs_wkt (p, 2, + "\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4267\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"standard_parallel_1\",34],PARAMETER[\"standar"); + add_srs_wkt (p, 8, + "d_parallel_2\",40.5],PARAMETER[\"latitude_of_center\",0]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"longitude_of_center\",-120],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",0],PARAMETER[\"false_northing\",-4000000],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3309\"]]"); + p = add_epsg_def (filter, first, last, 3310, "epsg", 3310, + "NAD83 / California Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_"); + add_proj4text (p, 1, + "0=0 +y_0=-4000000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / California Albers\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Albers_Conic_E"); + add_srs_wkt (p, 7, + "qual_Area\"],PARAMETER[\"standard_parallel_1\",34],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_2\",40.5],PARAMETER[\"latitude_"); + add_srs_wkt (p, 9, + "of_center\",0],PARAMETER[\"longitude_of_center\",-120],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_easting\",0],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",-4000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"3310\"]]"); + p = add_epsg_def (filter, first, last, 3311, "epsg", 3311, + "NAD83(HARN) / California Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_"); + add_proj4text (p, 1, + "0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / California Albers\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Albers_Conic_Equal_Area\"],PARAMETER[\"standard_"); + add_srs_wkt (p, 8, + "parallel_1\",34],PARAMETER[\"standard_parallel_2\",40.5]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"latitude_of_center\",0],PARAMETER[\"longitu"); + add_srs_wkt (p, 10, + "de_of_center\",-120],PARAMETER[\"false_easting\",0],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",-4000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 13, + "RTH],AUTHORITY[\"EPSG\",\"3311\"]]"); + p = add_epsg_def (filter, first, last, 3312, "epsg", 3312, + "CSG67 / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=intl +towgs84=-186,230,110,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CSG67 / UTM zone 21N\",GEOGCS[\"CSG67\",DATUM[\""); + add_srs_wkt (p, 1, + "Centre_Spatial_Guyanais_1967\",SPHEROID[\"International "); + add_srs_wkt (p, 2, + "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-186,230,110,0,0,0,0],AUTHORITY[\"EPSG\",\"6623\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4623\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-57],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"3312\"]]"); + p = add_epsg_def (filter, first, last, 3313, "epsg", 3313, + "RGFG95 / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGFG95 / UTM zone 21N\",GEOGCS[\"RGFG95\",DATUM"); + add_srs_wkt (p, 1, + "[\"Reseau_Geodesique_Francais_Guyane_1995\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6624\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4624\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"3313\"]]"); + p = add_epsg_def (filter, first, last, 3314, "epsg", 3314, + "Katanga 1955 / Katanga Lambert (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=0 +lon_0=26 +x"); + add_proj4text (p, 1, + "_0=0 +y_0=0 +ellps=clrk66 +towgs84=-103.746,-9.614,-255."); + add_proj4text (p, 2, + "95,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Katanga 1955 / Katanga Lambert (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4695\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_1\",-6.5],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",-11.5],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",0],PARAMETER[\"central_meridian\",26],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 12, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3314\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 3315, "epsg", 3315, + "Katanga 1955 / Katanga TM (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-9 +lon_0=26 +k=0.9998 +x_0=0 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,0,0 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Katanga 1955 / Katanga TM (deprecated)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\"Clar"); + add_srs_wkt (p, 2, + "ke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); + add_srs_wkt (p, 7, + "95\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",-9],PARAMETER[\"central_meridian\",2"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"scale_factor\",0.9998],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAS"); + add_srs_wkt (p, 12, + "T],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3315\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 3316, "epsg", 3316, + "Kasai 1953 / Congo TM zone 22"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kasai 1953 / Congo TM zone 22\",GEOGCS[\"Kasai "); + add_srs_wkt (p, 1, + "1953\",DATUM[\"Kasai_1953\",SPHEROID[\"Clarke 1880 (RGS)"); + add_srs_wkt (p, 2, + "\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"6696\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); + add_srs_wkt (p, 6, + "96\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 7, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",22"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",500000],PARAMETER[\"false_northing\",10000000],"); + add_srs_wkt (p, 10, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 11, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"3316\"]]"); + p = add_epsg_def (filter, first, last, 3317, "epsg", 3317, + "Kasai 1953 / Congo TM zone 24"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kasai 1953 / Congo TM zone 24\",GEOGCS[\"Kasai "); + add_srs_wkt (p, 1, + "1953\",DATUM[\"Kasai_1953\",SPHEROID[\"Clarke 1880 (RGS)"); + add_srs_wkt (p, 2, + "\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"6696\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); + add_srs_wkt (p, 6, + "96\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 7, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",24"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",500000],PARAMETER[\"false_northing\",10000000],"); + add_srs_wkt (p, 10, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 11, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"3317\"]]"); + p = add_epsg_def (filter, first, last, 3318, "epsg", 3318, + "IGC 1962 / Congo TM zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGC 1962 / Congo TM zone 12\",GEOGCS[\"IGC 1962"); + add_srs_wkt (p, 1, + " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); + add_srs_wkt (p, 2, + "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 3, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",12],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3318\"]]"); + p = add_epsg_def (filter, first, last, 3319, "epsg", 3319, + "IGC 1962 / Congo TM zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGC 1962 / Congo TM zone 14\",GEOGCS[\"IGC 1962"); + add_srs_wkt (p, 1, + " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); + add_srs_wkt (p, 2, + "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 3, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",14],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3319\"]]"); + p = add_epsg_def (filter, first, last, 3320, "epsg", 3320, + "IGC 1962 / Congo TM zone 16"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGC 1962 / Congo TM zone 16\",GEOGCS[\"IGC 1962"); + add_srs_wkt (p, 1, + " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); + add_srs_wkt (p, 2, + "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 3, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",16],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3320\"]]"); + p = add_epsg_def (filter, first, last, 3321, "epsg", 3321, + "IGC 1962 / Congo TM zone 18"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGC 1962 / Congo TM zone 18\",GEOGCS[\"IGC 1962"); + add_srs_wkt (p, 1, + " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); + add_srs_wkt (p, 2, + "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 3, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",18],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3321\"]]"); + p = add_epsg_def (filter, first, last, 3322, "epsg", 3322, + "IGC 1962 / Congo TM zone 20"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGC 1962 / Congo TM zone 20\",GEOGCS[\"IGC 1962"); + add_srs_wkt (p, 1, + " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); + add_srs_wkt (p, 2, + "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 3, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",20],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3322\"]]"); + p = add_epsg_def (filter, first, last, 3323, "epsg", 3323, + "IGC 1962 / Congo TM zone 22"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGC 1962 / Congo TM zone 22\",GEOGCS[\"IGC 1962"); + add_srs_wkt (p, 1, + " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); + add_srs_wkt (p, 2, + "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 3, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",22],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3323\"]]"); + p = add_epsg_def (filter, first, last, 3324, "epsg", 3324, + "IGC 1962 / Congo TM zone 24"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGC 1962 / Congo TM zone 24\",GEOGCS[\"IGC 1962"); + add_srs_wkt (p, 1, + " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); + add_srs_wkt (p, 2, + "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 3, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",24],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3324\"]]"); + p = add_epsg_def (filter, first, last, 3325, "epsg", 3325, + "IGC 1962 / Congo TM zone 26"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGC 1962 / Congo TM zone 26\",GEOGCS[\"IGC 1962"); + add_srs_wkt (p, 1, + " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); + add_srs_wkt (p, 2, + "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 3, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",26],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3325\"]]"); + p = add_epsg_def (filter, first, last, 3326, "epsg", 3326, + "IGC 1962 / Congo TM zone 28"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGC 1962 / Congo TM zone 28\",GEOGCS[\"IGC 1962"); + add_srs_wkt (p, 1, + " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); + add_srs_wkt (p, 2, + "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 3, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",28],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3326\"]]"); + p = add_epsg_def (filter, first, last, 3327, "epsg", 3327, + "IGC 1962 / Congo TM zone 30"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGC 1962 / Congo TM zone 30\",GEOGCS[\"IGC 1962"); + add_srs_wkt (p, 1, + " 6th Parallel South\",DATUM[\"IGC_1962_Arc_of_the_6th_Pa"); + add_srs_wkt (p, 2, + "rallel_South\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 3, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6697\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4697\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",30],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3327\"]]"); + p = add_epsg_def (filter, first, last, 3328, "epsg", 3328, + "Pulkovo 1942(58) / GUGiK-80"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=52.16666666666666 +lon_0=19.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999714 +x_0=500000 +y_0=500000 +ellps=krass "); + add_proj4text (p, 2, + "+towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84 +un"); + add_proj4text (p, 3, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / GUGiK-80\",GEOGCS[\"Pulkovo "); + add_srs_wkt (p, 1, + "1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4179"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",52.16666666666666],PARAMETER[\"centr"); + add_srs_wkt (p, 9, + "al_meridian\",19.16666666666667],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 10, + "r\",0.999714],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_northing\",500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3328\"]]"); + p = add_epsg_def (filter, first, last, 3329, "epsg", 3329, + "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); + add_proj4text (p, 2, + "844,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); + add_srs_wkt (p, 4, + "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 5, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",15],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",5500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"3329\"]]"); + p = add_epsg_def (filter, first, last, 3330, "epsg", 3330, + "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); + add_proj4text (p, 2, + "844,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 6"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); + add_srs_wkt (p, 4, + "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 5, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",18],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",6500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"3330\"]]"); + p = add_epsg_def (filter, first, last, 3331, "epsg", 3331, + "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); + add_proj4text (p, 2, + "844,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 7"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); + add_srs_wkt (p, 4, + "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 5, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",21],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",7500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"3331\"]]"); + p = add_epsg_def (filter, first, last, 3332, "epsg", 3332, + "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); + add_proj4text (p, 2, + "844,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 8"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); + add_srs_wkt (p, 4, + "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 5, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",24],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",8500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"3332\"]]"); + p = add_epsg_def (filter, first, last, 3333, "epsg", 3333, + "Pulkovo 1942(58) / Gauss-Kruger zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); + add_proj4text (p, 2, + "844,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / Gauss-Kruger zone 3\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-"); + add_srs_wkt (p, 4, + "0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4179\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",15],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",3500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"3333\"]]"); + p = add_epsg_def (filter, first, last, 3334, "epsg", 3334, + "Pulkovo 1942(58) / Gauss-Kruger zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); + add_proj4text (p, 2, + "844,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / Gauss-Kruger zone 4\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-"); + add_srs_wkt (p, 4, + "0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4179\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",21],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",4500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"3334\"]]"); + p = add_epsg_def (filter, first, last, 3335, "epsg", 3335, + "Pulkovo 1942(58) / Gauss-Kruger zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); + add_proj4text (p, 2, + "844,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / Gauss-Kruger zone 5\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-"); + add_srs_wkt (p, 4, + "0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4179\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",27],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",5500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"3335\"]]"); + p = add_epsg_def (filter, first, last, 3336, "epsg", 3336, + "IGN 1962 Kerguelen / UTM zone 42S"); + add_proj4text (p, 0, + "+proj=utm +zone=42 +south +ellps=intl +towgs84=145,-187,"); + add_proj4text (p, 1, + "103,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGN 1962 Kerguelen / UTM zone 42S\",GEOGCS[\"IG"); + add_srs_wkt (p, 1, + "N 1962 Kerguelen\",DATUM[\"IGN_1962_Kerguelen\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7022\"]],TOWGS84[145,-187,103,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6698\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4698\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",69],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); + add_srs_wkt (p, 12, + "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3336\"]]"); + p = add_epsg_def (filter, first, last, 3337, "epsg", 3337, + "Le Pouce 1934 / Mauritius Grid"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-20.19506944444445 +lat_0=-20.195069444"); + add_proj4text (p, 1, + "44445 +lon_0=57.52182777777778 +k_0=1 +x_0=1000000 +y_0="); + add_proj4text (p, 2, + "1000000 +ellps=clrk80 +towgs84=-770.1,158.4,-498.2,0,0,0"); + add_proj4text (p, 3, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Le Pouce 1934 / Mauritius Grid\",GEOGCS[\"Le Po"); + add_srs_wkt (p, 1, + "uce 1934\",DATUM[\"Le_Pouce_1934\",SPHEROID[\"Clarke 188"); + add_srs_wkt (p, 2, + "0 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-770.1,158.4,-498.2,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6699\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4699\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\"latitu"); + add_srs_wkt (p, 8, + "de_of_origin\",-20.19506944444445],PARAMETER[\"central_m"); + add_srs_wkt (p, 9, + "eridian\",57.52182777777778],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 10, + "1],PARAMETER[\"false_easting\",1000000],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 13, + "TH],AUTHORITY[\"EPSG\",\"3337\"]]"); + p = add_epsg_def (filter, first, last, 3338, "epsg", 3338, + "NAD83 / Alaska Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0"); + add_proj4text (p, 1, + "=0 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alaska Albers\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Albers_Conic_Equal_"); + add_srs_wkt (p, 7, + "Area\"],PARAMETER[\"standard_parallel_1\",55],PARAMETER["); + add_srs_wkt (p, 8, + "\"standard_parallel_2\",65],PARAMETER[\"latitude_of_cent"); + add_srs_wkt (p, 9, + "er\",50],PARAMETER[\"longitude_of_center\",-154],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3338\"]]"); + p = add_epsg_def (filter, first, last, 3339, "epsg", 3339, + "IGCB 1955 / Congo TM zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGCB 1955 / Congo TM zone 12\",GEOGCS[\"IGCB 19"); + add_srs_wkt (p, 1, + "55\",DATUM[\"Institut_Geographique_du_Congo_Belge_1955\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7012\"]],TOWGS84[-79.9,-158,-168.9,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6701\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4701\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 9, + "ian\",12],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 11, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"3339\"]]"); + p = add_epsg_def (filter, first, last, 3340, "epsg", 3340, + "IGCB 1955 / Congo TM zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGCB 1955 / Congo TM zone 14\",GEOGCS[\"IGCB 19"); + add_srs_wkt (p, 1, + "55\",DATUM[\"Institut_Geographique_du_Congo_Belge_1955\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7012\"]],TOWGS84[-79.9,-158,-168.9,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6701\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4701\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 9, + "ian\",14],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 11, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"3340\"]]"); + p = add_epsg_def (filter, first, last, 3341, "epsg", 3341, + "IGCB 1955 / Congo TM zone 16"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGCB 1955 / Congo TM zone 16\",GEOGCS[\"IGCB 19"); + add_srs_wkt (p, 1, + "55\",DATUM[\"Institut_Geographique_du_Congo_Belge_1955\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7012\"]],TOWGS84[-79.9,-158,-168.9,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6701\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4701\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 9, + "ian\",16],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 11, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"3341\"]]"); + p = add_epsg_def (filter, first, last, 3342, "epsg", 3342, + "IGCB 1955 / UTM zone 33S"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-79.9,-"); + add_proj4text (p, 1, + "158,-168.9,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGCB 1955 / UTM zone 33S\",GEOGCS[\"IGCB 1955\""); + add_srs_wkt (p, 1, + ",DATUM[\"Institut_Geographique_du_Congo_Belge_1955\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7012\"]],TOWGS84[-79.9,-158,-168.9,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6701\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4701\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"3342\"]]"); + p = add_epsg_def (filter, first, last, 3343, "epsg", 3343, + "Mauritania 1999 / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mauritania 1999 / UTM zone 28N\",GEOGCS[\"Mauri"); + add_srs_wkt (p, 1, + "tania 1999\",DATUM[\"Mauritania_1999\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6702\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4702\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-15],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"3343\"]]"); + p = add_epsg_def (filter, first, last, 3344, "epsg", 3344, + "Mauritania 1999 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mauritania 1999 / UTM zone 29N\",GEOGCS[\"Mauri"); + add_srs_wkt (p, 1, + "tania 1999\",DATUM[\"Mauritania_1999\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6702\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4702\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-9],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"3344\"]]"); + p = add_epsg_def (filter, first, last, 3345, "epsg", 3345, + "Mauritania 1999 / UTM zone 30N"); + add_proj4text (p, 0, + "+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mauritania 1999 / UTM zone 30N\",GEOGCS[\"Mauri"); + add_srs_wkt (p, 1, + "tania 1999\",DATUM[\"Mauritania_1999\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6702\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4702\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-3],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"3345\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_13.c b/src/spatialite/src/srsinit/epsg_inlined_13.c new file mode 100644 index 0000000..7bd32ce --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_13.c @@ -0,0 +1,3556 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_13 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 3346, "epsg", 3346, + "LKS94 / Lithuania TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9998 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"LKS94 / Lithuania TM\",GEOGCS[\"LKS94\",DATUM[\""); + add_srs_wkt (p, 1, + "Lithuania_1994_ETRS89\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 2, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 3, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6126\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4669\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); + add_srs_wkt (p, 8, + "ridian\",24],PARAMETER[\"scale_factor\",0.9998],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"false_easting\",500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"3346\"]]"); + p = add_epsg_def (filter, first, last, 3347, "epsg", 3347, + "NAD83 / Statistics Canada Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-9"); + add_proj4text (p, 1, + "1.86666666666666 +x_0=6200000 +y_0=3000000 +datum=NAD83 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Statistics Canada Lambert\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",49],PARAMETER[\"standard_parallel_2\",77],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_origin\",63.390675],PARAMETER[\"central_merid"); + add_srs_wkt (p, 10, + "ian\",-91.86666666666666],PARAMETER[\"false_easting\",62"); + add_srs_wkt (p, 11, + "00000],PARAMETER[\"false_northing\",3000000],UNIT[\"metr"); + add_srs_wkt (p, 12, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAS"); + add_srs_wkt (p, 13, + "T],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3347\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 3348, "epsg", 3348, + "NAD83(CSRS) / Statistics Canada Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=63.390675 +lon_0=-9"); + add_proj4text (p, 1, + "1.86666666666666 +x_0=6200000 +y_0=3000000 +ellps=GRS80 "); + add_proj4text (p, 2, + "+towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / Statistics Canada Lambert\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); + add_srs_wkt (p, 7, + "17\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_1\",49],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 9, + "rallel_2\",77],PARAMETER[\"latitude_of_origin\",63.39067"); + add_srs_wkt (p, 10, + "5],PARAMETER[\"central_meridian\",-91.86666666666666],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_easting\",6200000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 12, + "thing\",3000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 13, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 14, + "AUTHORITY[\"EPSG\",\"3348\"]]"); + p = add_epsg_def (filter, first, last, 3349, "epsg", 3349, + "WGS 84 / PDC Mercator (deprecated)"); + add_proj4text (p, 0, + "+proj=merc +lon_0=-150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / PDC Mercator (deprecated)\",GEOGCS[\"W"); + add_srs_wkt (p, 1, + "GS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,2"); + add_srs_wkt (p, 2, + "98.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PRO"); + add_srs_wkt (p, 6, + "JECTION[\"Mercator_1SP\"],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 7, + ",-150],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 8, + "asting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 9, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST"); + add_srs_wkt (p, 10, + "],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3349\"]]"); + p = add_epsg_def (filter, first, last, 3350, "epsg", 3350, + "Pulkovo 1942 / CS63 zone C0"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0.1 +lon_0=21.95 +k=1 +x_0=250000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0."); + add_proj4text (p, 2, + "82,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / CS63 zone C0\",GEOGCS[\"Pulkovo "); + add_srs_wkt (p, 1, + "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); + add_srs_wkt (p, 2, + "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); + add_srs_wkt (p, 3, + "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0.1],PARAMETER[\"central_meridian\",21.95],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",250000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3350\"]]"); + p = add_epsg_def (filter, first, last, 3351, "epsg", 3351, + "Pulkovo 1942 / CS63 zone C1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0.1 +lon_0=24.95 +k=1 +x_0=1250000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0"); + add_proj4text (p, 2, + ".82,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / CS63 zone C1\",GEOGCS[\"Pulkovo "); + add_srs_wkt (p, 1, + "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); + add_srs_wkt (p, 2, + "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); + add_srs_wkt (p, 3, + "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0.1],PARAMETER[\"central_meridian\",24.95],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",125000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3351\"]]"); + p = add_epsg_def (filter, first, last, 3352, "epsg", 3352, + "Pulkovo 1942 / CS63 zone C2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0.1 +lon_0=27.95 +k=1 +x_0=2250000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0"); + add_proj4text (p, 2, + ".82,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / CS63 zone C2\",GEOGCS[\"Pulkovo "); + add_srs_wkt (p, 1, + "1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassowsky 1940"); + add_srs_wkt (p, 2, + "\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[2"); + add_srs_wkt (p, 3, + "3.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0.1],PARAMETER[\"central_meridian\",27.95],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",225000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3352\"]]"); + p = add_epsg_def (filter, first, last, 3353, "epsg", 3353, + "Mhast (onshore) / UTM zone 32S"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mhast (onshore) / UTM zone 32S\",GEOGCS[\"Mhast"); + add_srs_wkt (p, 1, + " (onshore)\",DATUM[\"Mhast_onshore\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6704\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4704\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",500000],PARAMETER[\"false_northing\",10000000],"); + add_srs_wkt (p, 10, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 11, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"3353\"]]"); + p = add_epsg_def (filter, first, last, 3354, "epsg", 3354, + "Mhast (offshore) / UTM zone 32S"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +south +ellps=intl +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mhast (offshore) / UTM zone 32S\",GEOGCS[\"Mhas"); + add_srs_wkt (p, 1, + "t (offshore)\",DATUM[\"Mhast_offshore\",SPHEROID[\"Inter"); + add_srs_wkt (p, 2, + "national 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6705\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4705\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"3354\"]]"); + p = add_epsg_def (filter, first, last, 3355, "epsg", 3355, + "Egypt Gulf of Suez S-650 TL / Red Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=81"); + add_proj4text (p, 1, + "0000 +ellps=helmert +towgs84=-146.21,112.63,4.05,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Egypt Gulf of Suez S-650 TL / Red Belt\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Egypt Gulf of Suez S-650 TL\",DATUM[\"Egypt_Gulf_of_S"); + add_srs_wkt (p, 2, + "uez_S_650_TL\",SPHEROID[\"Helmert 1906\",6378200,298.3,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7020\"]],TOWGS84[-146.21,112.63,4.05"); + add_srs_wkt (p, 4, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6706\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4706\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_origin\",30],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",31],PARAMETER[\"scale_factor\",1],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",615000],PARAMETER[\"false_northing\",8"); + add_srs_wkt (p, 11, + "10000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"3355\"]]"); + p = add_epsg_def (filter, first, last, 3356, "epsg", 3356, + "Grand Cayman 1959 / UTM zone 17N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=clrk66 +towgs84=-179.483,-69.3"); + add_proj4text (p, 1, + "79,-27.584,-7.862,8.163,6.042,-13.925 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Grand Cayman 1959 / UTM zone 17N (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"GCGD59\",DATUM[\"Grand_Cayman_Geodetic_Datum_1"); + add_srs_wkt (p, 2, + "959\",SPHEROID[\"Clarke 1866\",6378206.4,294.97869821390"); + add_srs_wkt (p, 3, + "06,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[-179.483,-69.37"); + add_srs_wkt (p, 4, + "9,-27.584,-7.862,8.163,6.042,-13.925],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"6723\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4723\"]],PROJECTI"); + add_srs_wkt (p, 8, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 9, + "in\",0],PARAMETER[\"central_meridian\",-81],PARAMETER[\""); + add_srs_wkt (p, 10, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 11, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3356\"]]"); + p = add_epsg_def (filter, first, last, 3357, "epsg", 3357, + "Little Cayman 1961 / UTM zone 17N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=clrk66 +towgs84=8.853,-52.644,"); + add_proj4text (p, 1, + "180.304,-0.393,-2.323,2.96,-24.081 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Little Cayman 1961 / UTM zone 17N (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"SIGD61\",DATUM[\"Sister_Islands_Geodetic_Datum"); + add_srs_wkt (p, 2, + "_1961\",SPHEROID[\"Clarke 1866\",6378206.4,294.978698213"); + add_srs_wkt (p, 3, + "9006,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[8.853,-52.644"); + add_srs_wkt (p, 4, + ",180.304,-0.393,-2.323,2.96,-24.081],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"6726\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 6, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 7, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4726\"]],PROJECTIO"); + add_srs_wkt (p, 8, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",0],PARAMETER[\"central_meridian\",-81],PARAMETER[\"s"); + add_srs_wkt (p, 10, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 13, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"3357\"]]"); + p = add_epsg_def (filter, first, last, 3358, "epsg", 3358, + "NAD83(HARN) / North Carolina"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps"); + add_proj4text (p, 2, + "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / North Carolina\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",36.16666666666666],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",34.33333333333334],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 10, + "origin\",33.75],PARAMETER[\"central_meridian\",-79],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",609601.22],PARAMETER[\"false_nor"); + add_srs_wkt (p, 12, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 13, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"3358\"]]"); + p = add_epsg_def (filter, first, last, 3359, "epsg", 3359, + "NAD83(HARN) / North Carolina (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024385 +y_0="); + add_proj4text (p, 2, + "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / North Carolina (ftUS) (deprecated"); + add_srs_wkt (p, 1, + ")\",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_R"); + add_srs_wkt (p, 2, + "eference_Network\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",36.16666666666666],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"standard_parallel_2\",34.33333333333334],PARA"); + add_srs_wkt (p, 10, + "METER[\"latitude_of_origin\",33.75],PARAMETER[\"central_"); + add_srs_wkt (p, 11, + "meridian\",-79],PARAMETER[\"false_easting\",2000004.0000"); + add_srs_wkt (p, 12, + "08],PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 14, + "\",NORTH],AUTHORITY[\"EPSG\",\"3359\"]]"); + p = add_epsg_def (filter, first, last, 3360, "epsg", 3360, + "NAD83(HARN) / South Carolina"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31"); + add_proj4text (p, 1, + ".83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / South Carolina\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_1\",34.83333333333334],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",32.5],PARAMETER[\"latitude_of_origin\",31.8"); + add_srs_wkt (p, 10, + "3333333333333],PARAMETER[\"central_meridian\",-81],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_easting\",609600],PARAMETER[\"false_northin"); + add_srs_wkt (p, 12, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 13, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"33"); + add_srs_wkt (p, 14, + "60\"]]"); + p = add_epsg_def (filter, first, last, 3361, "epsg", 3361, + "NAD83(HARN) / South Carolina (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31"); + add_proj4text (p, 1, + ".83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / South Carolina (ft)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",34.83333333333334],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",32.5],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "31.83333333333333],PARAMETER[\"central_meridian\",-81],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",2000000],PARAMETER[\"false_no"); + add_srs_wkt (p, 12, + "rthing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 13, + "02\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 14, + "SG\",\"3361\"]]"); + p = add_epsg_def (filter, first, last, 3362, "epsg", 3362, + "NAD83(HARN) / Pennsylvania North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=4"); + add_proj4text (p, 1, + "0.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps"); + add_proj4text (p, 2, + "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Pennsylvania North\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",41.95],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 9, + "_2\",40.88333333333333],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",40.16666666666666],PARAMETER[\"central_meridian\",-77.7"); + add_srs_wkt (p, 11, + "5],PARAMETER[\"false_easting\",600000],PARAMETER[\"false"); + add_srs_wkt (p, 12, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 13, + "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 14, + "G\",\"3362\"]]"); + p = add_epsg_def (filter, first, last, 3363, "epsg", 3363, + "NAD83(HARN) / Pennsylvania North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=4"); + add_proj4text (p, 1, + "0.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps"); + add_proj4text (p, 2, + "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Pennsylvania North (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_"); + add_srs_wkt (p, 2, + "Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_1\",41.95],PARAMETER[\"standard_p"); + add_srs_wkt (p, 9, + "arallel_2\",40.88333333333333],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 10, + "rigin\",40.16666666666666],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 11, + ",-77.75],PARAMETER[\"false_easting\",1968500],PARAMETER["); + add_srs_wkt (p, 12, + "\"false_northing\",0],UNIT[\"US survey foot\",0.30480060"); + add_srs_wkt (p, 13, + "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); + add_srs_wkt (p, 14, + "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3363\"]]"); + p = add_epsg_def (filter, first, last, 3364, "epsg", 3364, + "NAD83(HARN) / Pennsylvania South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +"); + add_proj4text (p, 2, + "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Pennsylvania South\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",40.96666666666667],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",39.93333333333333],PARAMETER[\"latitude"); + add_srs_wkt (p, 10, + "_of_origin\",39.33333333333334],PARAMETER[\"central_meri"); + add_srs_wkt (p, 11, + "dian\",-77.75],PARAMETER[\"false_easting\",600000],PARAM"); + add_srs_wkt (p, 12, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 14, + "HORITY[\"EPSG\",\"3364\"]]"); + p = add_epsg_def (filter, first, last, 3365, "epsg", 3365, + "NAD83(HARN) / Pennsylvania South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +"); + add_proj4text (p, 2, + "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Pennsylvania South (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_"); + add_srs_wkt (p, 2, + "Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_1\",40.96666666666667],PARAMETER["); + add_srs_wkt (p, 9, + "\"standard_parallel_2\",39.93333333333333],PARAMETER[\"l"); + add_srs_wkt (p, 10, + "atitude_of_origin\",39.33333333333334],PARAMETER[\"centr"); + add_srs_wkt (p, 11, + "al_meridian\",-77.75],PARAMETER[\"false_easting\",196850"); + add_srs_wkt (p, 12, + "0],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot"); + add_srs_wkt (p, 13, + "\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS"); + add_srs_wkt (p, 14, + "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3365"); + add_srs_wkt (p, 15, + "\"]]"); + p = add_epsg_def (filter, first, last, 3366, "epsg", 3366, + "Hong Kong 1963 Grid System (deprecated)"); + add_proj4text (p, 0, + "+proj=cass +lat_0=22.31213333333334 +lon_0=114.178555555"); + add_proj4text (p, 1, + "5556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=63"); + add_proj4text (p, 2, + "78293.645208759 +b=6356617.987679838 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Hong Kong 1963 Grid System (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"Hong Kong 1963\",DATUM[\"Hong_Kong_1963\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Clarke 1858\",6378293.645208759,294.2606763692569,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7007\"]],AUTHORITY[\"EPSG\",\"6738\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4738\"]],PROJECTION[\"Cassini_So"); + add_srs_wkt (p, 7, + "ldner\"],PARAMETER[\"latitude_of_origin\",22.31213333333"); + add_srs_wkt (p, 8, + "334],PARAMETER[\"central_meridian\",114.1785555555556],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",40243.57775604237],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",19069.93351512578],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3366\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 3367, "epsg", 3367, + "IGN Astro 1960 / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGN Astro 1960 / UTM zone 28N\",GEOGCS[\"IGN As"); + add_srs_wkt (p, 1, + "tro 1960\",DATUM[\"IGN_Astro_1960\",SPHEROID[\"Clarke 18"); + add_srs_wkt (p, 2, + "80 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"6700\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4700\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",-15],PARAMETER[\"scale_factor\",0.9996],PARAMETER["); + add_srs_wkt (p, 9, + "\"false_easting\",500000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"3367\"]]"); + p = add_epsg_def (filter, first, last, 3368, "epsg", 3368, + "IGN Astro 1960 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGN Astro 1960 / UTM zone 29N\",GEOGCS[\"IGN As"); + add_srs_wkt (p, 1, + "tro 1960\",DATUM[\"IGN_Astro_1960\",SPHEROID[\"Clarke 18"); + add_srs_wkt (p, 2, + "80 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"6700\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4700\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",-9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 11, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"3368\"]]"); + p = add_epsg_def (filter, first, last, 3369, "epsg", 3369, + "IGN Astro 1960 / UTM zone 30N"); + add_proj4text (p, 0, + "+proj=utm +zone=30 +ellps=clrk80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGN Astro 1960 / UTM zone 30N\",GEOGCS[\"IGN As"); + add_srs_wkt (p, 1, + "tro 1960\",DATUM[\"IGN_Astro_1960\",SPHEROID[\"Clarke 18"); + add_srs_wkt (p, 2, + "80 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"6700\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4700\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",-3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 11, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"3369\"]]"); + p = add_epsg_def (filter, first, last, 3370, "epsg", 3370, + "NAD27 / UTM zone 59N"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 59N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 8, + "71],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 12, + "370\"]]"); + p = add_epsg_def (filter, first, last, 3371, "epsg", 3371, + "NAD27 / UTM zone 60N"); + add_proj4text (p, 0, + "+proj=utm +zone=60 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 60N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 8, + "77],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 12, + "371\"]]"); + p = add_epsg_def (filter, first, last, 3372, "epsg", 3372, + "NAD83 / UTM zone 59N"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 59N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",171],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"3372\"]]"); + p = add_epsg_def (filter, first, last, 3373, "epsg", 3373, + "NAD83 / UTM zone 60N"); + add_proj4text (p, 0, + "+proj=utm +zone=60 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 60N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",177],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"3373\"]]"); + p = add_epsg_def (filter, first, last, 3374, "epsg", 3374, + "FD54 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=intl +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"FD54 / UTM zone 29N\",GEOGCS[\"FD54\",DATUM[\"F"); + add_srs_wkt (p, 1, + "aroe_Datum_1954\",SPHEROID[\"International 1924\",637838"); + add_srs_wkt (p, 2, + "8,297,AUTHORITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "6741\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 4, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4741\"]],PROJECTION["); + add_srs_wkt (p, 6, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 7, + ",0],PARAMETER[\"central_meridian\",-9],PARAMETER[\"scale"); + add_srs_wkt (p, 8, + "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 10, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 11, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"3374\"]]"); + p = add_epsg_def (filter, first, last, 3375, "epsg", 3375, + "GDM2000 / Peninsula RSO"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.02579646666"); + add_proj4text (p, 1, + "66 +k=0.99984 +x_0=804671 +y_0=0 +no_uoff +gamma=323.130"); + add_proj4text (p, 2, + "1023611111 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDM2000 / Peninsula RSO\",GEOGCS[\"GDM2000\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4742\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"latitude_of_center\",4],PARAMETER[\"longitude_of"); + add_srs_wkt (p, 8, + "_center\",102.25],PARAMETER[\"azimuth\",323.025796466666"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"rectified_grid_angle\",323.1301023611111]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"scale_factor\",0.99984],PARAMETER[\"false_e"); + add_srs_wkt (p, 11, + "asting\",804671],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 12, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"337"); + add_srs_wkt (p, 14, + "5\"]]"); + p = add_epsg_def (filter, first, last, 3376, "epsg", 3376, + "GDM2000 / East Malaysia BRSO"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.9"); + add_proj4text (p, 1, + "9984 +x_0=0 +y_0=0 +no_uoff +gamma=53.13010236111111 +el"); + add_proj4text (p, 2, + "lps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDM2000 / East Malaysia BRSO\",GEOGCS[\"GDM2000"); + add_srs_wkt (p, 1, + "\",DATUM[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4742\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"latitude_of_center\",4],PARAMETER[\"longitud"); + add_srs_wkt (p, 8, + "e_of_center\",115],PARAMETER[\"azimuth\",53.31580995],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"rectified_grid_angle\",53.13010236111111],PARA"); + add_srs_wkt (p, 10, + "METER[\"scale_factor\",0.99984],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 11, + "g\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3376\"]]"); + p = add_epsg_def (filter, first, last, 3377, "epsg", 3377, + "GDM2000 / Johor Grid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=2.121679744444445 +lon_0=103.427936236"); + add_proj4text (p, 1, + "1111 +x_0=-14810.562 +y_0=8758.32 +ellps=GRS80 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDM2000 / Johor Grid\",GEOGCS[\"GDM2000\",DATUM"); + add_srs_wkt (p, 1, + "[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\"lat"); + add_srs_wkt (p, 7, + "itude_of_origin\",2.121679744444445],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",103.4279362361111],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",-14810.562],PARAMETER[\"false_northing\",8758.32],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3377\"]]"); + p = add_epsg_def (filter, first, last, 3378, "epsg", 3378, + "GDM2000 / Sembilan and Melaka Grid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=2.682347636111111 +lon_0=101.974905041"); + add_proj4text (p, 1, + "6667 +x_0=3673.785 +y_0=-4240.573 +ellps=GRS80 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDM2000 / Sembilan and Melaka Grid\",GEOGCS[\"G"); + add_srs_wkt (p, 1, + "DM2000\",DATUM[\"Geodetic_Datum_of_Malaysia_2000\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4742\"]],PROJECTION[\"Cassini_Soldner\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",2.682347636111111],PARAME"); + add_srs_wkt (p, 8, + "TER[\"central_meridian\",101.9749050416667],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",3673.785],PARAMETER[\"false_northing\",-"); + add_srs_wkt (p, 10, + "4240.573],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"3378\"]]"); + p = add_epsg_def (filter, first, last, 3379, "epsg", 3379, + "GDM2000 / PahangGrid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=3.769388088888889 +lon_0=102.368298983"); + add_proj4text (p, 1, + "3333 +x_0=-7368.228 +y_0=6485.858 +ellps=GRS80 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDM2000 / PahangGrid\",GEOGCS[\"GDM2000\",DATUM"); + add_srs_wkt (p, 1, + "[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\"lat"); + add_srs_wkt (p, 7, + "itude_of_origin\",3.769388088888889],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",102.3682989833333],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",-7368.228],PARAMETER[\"false_northing\",6485.858],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3379\"]]"); + p = add_epsg_def (filter, first, last, 3380, "epsg", 3380, + "GDM2000 / Selangor Grid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=3.68464905 +lon_0=101.3891079138889 +x"); + add_proj4text (p, 1, + "_0=-34836.161 +y_0=56464.049 +ellps=GRS80 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDM2000 / Selangor Grid\",GEOGCS[\"GDM2000\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",3.68464905],PARAMETER[\"central_mer"); + add_srs_wkt (p, 8, + "idian\",101.3891079138889],PARAMETER[\"false_easting\",-"); + add_srs_wkt (p, 9, + "34836.161],PARAMETER[\"false_northing\",56464.049],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 12, + "380\"]]"); + p = add_epsg_def (filter, first, last, 3381, "epsg", 3381, + "GDM2000 / Terengganu Grid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=4.9762852 +lon_0=103.070275625 +x_0=19"); + add_proj4text (p, 1, + "594.245 +y_0=3371.895 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDM2000 / Terengganu Grid\",GEOGCS[\"GDM2000\","); + add_srs_wkt (p, 1, + "DATUM[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",4.9762852],PARAMETER[\"central_meri"); + add_srs_wkt (p, 8, + "dian\",103.070275625],PARAMETER[\"false_easting\",19594."); + add_srs_wkt (p, 9, + "245],PARAMETER[\"false_northing\",3371.895],UNIT[\"metre"); + add_srs_wkt (p, 10, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST"); + add_srs_wkt (p, 11, + "],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3381\"]]"); + p = add_epsg_def (filter, first, last, 3382, "epsg", 3382, + "GDM2000 / Pinang Grid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=5.421517541666667 +lon_0=100.344376963"); + add_proj4text (p, 1, + "8889 +x_0=-23.414 +y_0=62.283 +ellps=GRS80 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDM2000 / Pinang Grid\",GEOGCS[\"GDM2000\",DATU"); + add_srs_wkt (p, 1, + "M[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS 198"); + add_srs_wkt (p, 2, + "0\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\"lat"); + add_srs_wkt (p, 7, + "itude_of_origin\",5.421517541666667],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",100.3443769638889],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",-23.414],PARAMETER[\"false_northing\",62.283],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 11, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"338"); + add_srs_wkt (p, 12, + "2\"]]"); + p = add_epsg_def (filter, first, last, 3383, "epsg", 3383, + "GDM2000 / Kedah and Perlis Grid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=5.964672713888889 +lon_0=100.636371111"); + add_proj4text (p, 1, + "1111 +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDM2000 / Kedah and Perlis Grid\",GEOGCS[\"GDM2"); + add_srs_wkt (p, 1, + "000\",DATUM[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAME"); + add_srs_wkt (p, 7, + "TER[\"latitude_of_origin\",5.964672713888889],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",100.6363711111111],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 10, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 11, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3383\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 3384, "epsg", 3384, + "GDM2000 / Perak Grid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=4.859063022222222 +lon_0=100.815410586"); + add_proj4text (p, 1, + "1111 +x_0=-1.769 +y_0=133454.779 +ellps=GRS80 +units=m +"); + add_proj4text (p, 2, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDM2000 / Perak Grid\",GEOGCS[\"GDM2000\",DATUM"); + add_srs_wkt (p, 1, + "[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\"lat"); + add_srs_wkt (p, 7, + "itude_of_origin\",4.859063022222222],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",100.8154105861111],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",-1.769],PARAMETER[\"false_northing\",133454.779],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3384\"]]"); + p = add_epsg_def (filter, first, last, 3385, "epsg", 3385, + "GDM2000 / Kelantan Grid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=5.972543658333334 +lon_0=102.295241669"); + add_proj4text (p, 1, + "4444 +x_0=13227.851 +y_0=8739.894 +ellps=GRS80 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDM2000 / Kelantan Grid\",GEOGCS[\"GDM2000\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Geodetic_Datum_of_Malaysia_2000\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6742\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4742\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",5.972543658333334],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",102.2952416694444],PARAMETER[\"false_east"); + add_srs_wkt (p, 9, + "ing\",13227.851],PARAMETER[\"false_northing\",8739.894],"); + add_srs_wkt (p, 10, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 11, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"3385\"]]"); + p = add_epsg_def (filter, first, last, 3386, "epsg", 3386, + "KKJ / Finland zone 0"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.345"); + add_proj4text (p, 2, + ",-1.376,1.496 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"KKJ / Finland zone 0\",GEOGCS[\"KKJ\",DATUM[\"K"); + add_srs_wkt (p, 1, + "artastokoordinaattijarjestelma_1966\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.49"); + add_srs_wkt (p, 4, + "6],AUTHORITY[\"EPSG\",\"6123\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 6, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4123\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",18],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"3386\"]]"); + p = add_epsg_def (filter, first, last, 3387, "epsg", 3387, + "KKJ / Finland zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=intl +towgs84=-96.062,-82.428,-121.753,4.801,0.34"); + add_proj4text (p, 2, + "5,-1.376,1.496 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"KKJ / Finland zone 5\",GEOGCS[\"KKJ\",DATUM[\"K"); + add_srs_wkt (p, 1, + "artastokoordinaattijarjestelma_1966\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-96.062,-82.428,-121.753,4.801,0.345,-1.376,1.49"); + add_srs_wkt (p, 4, + "6],AUTHORITY[\"EPSG\",\"6123\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 6, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4123\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",33],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",5500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"3387\"]]"); + p = add_epsg_def (filter, first, last, 3388, "epsg", 3388, + "Pulkovo 1942 / Caspian Sea Mercator"); + add_proj4text (p, 0, + "+proj=merc +lon_0=51 +lat_ts=42 +x_0=0 +y_0=0 +ellps=kra"); + add_proj4text (p, 1, + "ss +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0.12 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Caspian Sea Mercator\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Mercator_2SP\"],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 8, + "lel_1\",42],PARAMETER[\"central_meridian\",51],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_easting\",0],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"3388\"]]"); + p = add_epsg_def (filter, first, last, 3389, "epsg", 3389, + "Pulkovo 1942 / 3-degree Gauss-Kruger zone 60"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / 3-degree Gauss-Kruger zone 60\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "80],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",60500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"3389\"]]"); + p = add_epsg_def (filter, first, last, 3390, "epsg", 3390, + "Pulkovo 1995 / 3-degree Gauss-Kruger zone 60"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=180 +k=1 +x_0=60500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / 3-degree Gauss-Kruger zone 60\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "80],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",60500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"3390\"]]"); + p = add_epsg_def (filter, first, last, 3391, "epsg", 3391, + "Karbala 1979 / UTM zone 37N"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +ellps=clrk80 +towgs84=70.995,-335.91"); + add_proj4text (p, 1, + "6,262.898,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Karbala 1979 / UTM zone 37N\",GEOGCS[\"Karbala "); + add_srs_wkt (p, 1, + "1979\",DATUM[\"Karbala_1979\",SPHEROID[\"Clarke 1880 (RG"); + add_srs_wkt (p, 2, + "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[70.995,-335.916,262.898,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6743\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4743\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",39],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3391\"]]"); + p = add_epsg_def (filter, first, last, 3392, "epsg", 3392, + "Karbala 1979 / UTM zone 38N"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +ellps=clrk80 +towgs84=70.995,-335.91"); + add_proj4text (p, 1, + "6,262.898,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Karbala 1979 / UTM zone 38N\",GEOGCS[\"Karbala "); + add_srs_wkt (p, 1, + "1979\",DATUM[\"Karbala_1979\",SPHEROID[\"Clarke 1880 (RG"); + add_srs_wkt (p, 2, + "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[70.995,-335.916,262.898,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6743\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4743\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",45],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3392\"]]"); + p = add_epsg_def (filter, first, last, 3393, "epsg", 3393, + "Karbala 1979 / UTM zone 39N"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=clrk80 +towgs84=70.995,-335.91"); + add_proj4text (p, 1, + "6,262.898,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Karbala 1979 / UTM zone 39N\",GEOGCS[\"Karbala "); + add_srs_wkt (p, 1, + "1979\",DATUM[\"Karbala_1979\",SPHEROID[\"Clarke 1880 (RG"); + add_srs_wkt (p, 2, + "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[70.995,-335.916,262.898,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6743\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4743\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",51],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3393\"]]"); + p = add_epsg_def (filter, first, last, 3394, "epsg", 3394, + "Nahrwan 1934 / Iraq zone"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.99878"); + add_proj4text (p, 1, + "64078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Nahrwan 1934 / Iraq zone\",GEOGCS[\"Nahrwan 193"); + add_srs_wkt (p, 1, + "4\",DATUM[\"Nahrwan_1934\",SPHEROID[\"Clarke 1880 (RGS)\""); + add_srs_wkt (p, 2, + ",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"6744\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4744"); + add_srs_wkt (p, 6, + "\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMET"); + add_srs_wkt (p, 7, + "ER[\"latitude_of_origin\",32.5],PARAMETER[\"central_meri"); + add_srs_wkt (p, 8, + "dian\",45],PARAMETER[\"scale_factor\",0.9987864078],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",1500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",1166200],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"3394\"]]"); + p = add_epsg_def (filter, first, last, 3395, "epsg", 3395, + "WGS 84 / World Mercator"); + add_proj4text (p, 0, + "+proj=merc +lon_0=0 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +uni"); + add_proj4text (p, 1, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / World Mercator\",GEOGCS[\"WGS 84\",DAT"); + add_srs_wkt (p, 1, + "UM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.25722356"); + add_srs_wkt (p, 2, + "3,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"632"); + add_srs_wkt (p, 3, + "6\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"M"); + add_srs_wkt (p, 6, + "ercator_1SP\"],PARAMETER[\"central_meridian\",0],PARAMET"); + add_srs_wkt (p, 7, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 9, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 10, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"3395\"]]"); + p = add_epsg_def (filter, first, last, 3396, "epsg", 3396, + "PD/83 / 3-degree Gauss-Kruger zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PD/83 / 3-degree Gauss-Kruger zone 3\",GEOGCS[\""); + add_srs_wkt (p, 1, + "PD/83\",DATUM[\"Potsdam_Datum_83\",SPHEROID[\"Bessel 184"); + add_srs_wkt (p, 2, + "1\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6746\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4746\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); + add_srs_wkt (p, 9, + "sting\",3500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"3396\"]]"); + p = add_epsg_def (filter, first, last, 3397, "epsg", 3397, + "PD/83 / 3-degree Gauss-Kruger zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PD/83 / 3-degree Gauss-Kruger zone 4\",GEOGCS[\""); + add_srs_wkt (p, 1, + "PD/83\",DATUM[\"Potsdam_Datum_83\",SPHEROID[\"Bessel 184"); + add_srs_wkt (p, 2, + "1\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6746\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4746\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",12],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",4500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"3397\"]]"); + p = add_epsg_def (filter, first, last, 3398, "epsg", 3398, + "RD/83 / 3-degree Gauss-Kruger zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RD/83 / 3-degree Gauss-Kruger zone 4\",GEOGCS[\""); + add_srs_wkt (p, 1, + "RD/83\",DATUM[\"Rauenberg_Datum_83\",SPHEROID[\"Bessel 1"); + add_srs_wkt (p, 2, + "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6745\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4745\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",12],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",4500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"3398\"]]"); + p = add_epsg_def (filter, first, last, 3399, "epsg", 3399, + "RD/83 / 3-degree Gauss-Kruger zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RD/83 / 3-degree Gauss-Kruger zone 5\",GEOGCS[\""); + add_srs_wkt (p, 1, + "RD/83\",DATUM[\"Rauenberg_Datum_83\",SPHEROID[\"Bessel 1"); + add_srs_wkt (p, 2, + "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6745\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4745\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",15],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",5500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"3399\"]]"); + p = add_epsg_def (filter, first, last, 3400, "epsg", 3400, + "NAD83 / Alberta 10-TM (Forest)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +"); + add_proj4text (p, 1, + "y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alberta 10-TM (Forest)\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-115],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9992],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"3400\"]]"); + p = add_epsg_def (filter, first, last, 3401, "epsg", 3401, + "NAD83 / Alberta 10-TM (Resource)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alberta 10-TM (Resource)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",-115],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.9992],PARAMETER[\"false_easting\",0],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"3401\"]]"); + p = add_epsg_def (filter, first, last, 3402, "epsg", 3402, + "NAD83(CSRS) / Alberta 10-TM (Forest)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=500000 +"); + add_proj4text (p, 1, + "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / Alberta 10-TM (Forest)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",-115],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.9992],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3402\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 3403, "epsg", 3403, + "NAD83(CSRS) / Alberta 10-TM (Resource)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-115 +k=0.9992 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / Alberta 10-TM (Resource)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"461"); + add_srs_wkt (p, 7, + "7\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",-11"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",0.9992],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAS"); + add_srs_wkt (p, 12, + "T],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3403\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 3404, "epsg", 3404, + "NAD83(HARN) / North Carolina (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0="); + add_proj4text (p, 2, + "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / North Carolina (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",36.16666666666666],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",34.33333333333334],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",33.75],PARAMETER[\"central_meridian\",-79"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_easting\",2000000],PARAMETER[\"false"); + add_srs_wkt (p, 12, + "_northing\",0],UNIT[\"US survey foot\",0.304800609601219"); + add_srs_wkt (p, 13, + "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"3404\"]]"); + p = add_epsg_def (filter, first, last, 3405, "epsg", 3405, + "VN-2000 / UTM zone 48N"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +ellps=WGS84 +towgs84=-192.873,-39.38"); + add_proj4text (p, 1, + "2,-111.202,-0.00205,-0.0005,0.00335,0.0188 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"VN-2000 / UTM zone 48N\",GEOGCS[\"VN-2000\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Vietnam_2000\",SPHEROID[\"WGS 84\",6378137,298.2572"); + add_srs_wkt (p, 2, + "23563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[-192.873,-39"); + add_srs_wkt (p, 3, + ".382,-111.202,-0.00205,-0.0005,0.00335,0.0188],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6756\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4756\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",105],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST"); + add_srs_wkt (p, 12, + "],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3405\"]]"); + p = add_epsg_def (filter, first, last, 3406, "epsg", 3406, + "VN-2000 / UTM zone 49N"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +ellps=WGS84 +towgs84=-192.873,-39.38"); + add_proj4text (p, 1, + "2,-111.202,-0.00205,-0.0005,0.00335,0.0188 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"VN-2000 / UTM zone 49N\",GEOGCS[\"VN-2000\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Vietnam_2000\",SPHEROID[\"WGS 84\",6378137,298.2572"); + add_srs_wkt (p, 2, + "23563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[-192.873,-39"); + add_srs_wkt (p, 3, + ".382,-111.202,-0.00205,-0.0005,0.00335,0.0188],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6756\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4756\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",111],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST"); + add_srs_wkt (p, 12, + "],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3406\"]]"); + p = add_epsg_def (filter, first, last, 3407, "epsg", 3407, + "Hong Kong 1963 Grid System"); + add_proj4text (p, 0, + "+proj=cass +lat_0=22.31213333333334 +lon_0=114.178555555"); + add_proj4text (p, 1, + "5556 +x_0=40243.57775604237 +y_0=19069.93351512578 +a=63"); + add_proj4text (p, 2, + "78293.645208759 +b=6356617.987679838 +to_meter=0.3047972"); + add_proj4text (p, 3, + "654 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Hong Kong 1963 Grid System\",GEOGCS[\"Hong Kong"); + add_srs_wkt (p, 1, + " 1963\",DATUM[\"Hong_Kong_1963\",SPHEROID[\"Clarke 1858\""); + add_srs_wkt (p, 2, + ",6378293.645208759,294.2606763692569,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7007\"]],AUTHORITY[\"EPSG\",\"6738\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4738\"]],PROJECTION[\"Cassini_Soldner\"],PAR"); + add_srs_wkt (p, 7, + "AMETER[\"latitude_of_origin\",22.31213333333334],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",114.1785555555556],PARAMETER[\"f"); + add_srs_wkt (p, 9, + "alse_easting\",132033.92],PARAMETER[\"false_northing\",6"); + add_srs_wkt (p, 10, + "2565.96],UNIT[\"Clarke's foot\",0.3047972654,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9005\"]],AUTHORITY[\"EPSG\",\"3407\"]]"); + p = add_epsg_def (filter, first, last, 3408, "epsg", 3408, + "NSIDC EASE-Grid North"); + add_proj4text (p, 0, + "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 +"); + add_proj4text (p, 1, + "b=6371228 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NSIDC EASE-Grid North\",GEOGCS[\"Unspecified da"); + add_srs_wkt (p, 1, + "tum based upon the International 1924 Authalic Sphere\","); + add_srs_wkt (p, 2, + "DATUM[\"Not_specified_based_on_International_1924_Authal"); + add_srs_wkt (p, 3, + "ic_Sphere\",SPHEROID[\"International 1924 Authalic Spher"); + add_srs_wkt (p, 4, + "e\",6371228,0,AUTHORITY[\"EPSG\",\"7057\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"6053\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4053\"]],PR"); + add_srs_wkt (p, 8, + "OJECTION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_center\",90],PARAMETER[\"longitude_of_center\""); + add_srs_wkt (p, 10, + ",0],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 12, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"3408\"]]"); + p = add_epsg_def (filter, first, last, 3409, "epsg", 3409, + "NSIDC EASE-Grid South"); + add_proj4text (p, 0, + "+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +a=6371228 "); + add_proj4text (p, 1, + "+b=6371228 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NSIDC EASE-Grid South\",GEOGCS[\"Unspecified da"); + add_srs_wkt (p, 1, + "tum based upon the International 1924 Authalic Sphere\","); + add_srs_wkt (p, 2, + "DATUM[\"Not_specified_based_on_International_1924_Authal"); + add_srs_wkt (p, 3, + "ic_Sphere\",SPHEROID[\"International 1924 Authalic Spher"); + add_srs_wkt (p, 4, + "e\",6371228,0,AUTHORITY[\"EPSG\",\"7057\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"6053\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4053\"]],PR"); + add_srs_wkt (p, 8, + "OJECTION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_center\",-90],PARAMETER[\"longitude_of_center"); + add_srs_wkt (p, 10, + "\",0],PARAMETER[\"false_easting\",0],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"3409\"]]"); + p = add_epsg_def (filter, first, last, 3410, "epsg", 3410, + "NSIDC EASE-Grid Global"); + add_proj4text (p, 0, + "+proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +a=6371228 +"); + add_proj4text (p, 1, + "b=6371228 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NSIDC EASE-Grid Global\",GEOGCS[\"Unspecified d"); + add_srs_wkt (p, 1, + "atum based upon the International 1924 Authalic Sphere\""); + add_srs_wkt (p, 2, + ",DATUM[\"Not_specified_based_on_International_1924_Autha"); + add_srs_wkt (p, 3, + "lic_Sphere\",SPHEROID[\"International 1924 Authalic Sphe"); + add_srs_wkt (p, 4, + "re\",6371228,0,AUTHORITY[\"EPSG\",\"7057\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"6053\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4053\"]],PR"); + add_srs_wkt (p, 8, + "OJECTION[\"Cylindrical_Equal_Area\"],PARAMETER[\"standar"); + add_srs_wkt (p, 9, + "d_parallel_1\",30],PARAMETER[\"central_meridian\",0],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3410\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 3411, "epsg", 3411, + "NSIDC Sea Ice Polar Stereographic North"); + add_proj4text (p, 0, + "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 "); + add_proj4text (p, 1, + "+y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NSIDC Sea Ice Polar Stereographic North\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"Unspecified datum based upon the Hughes 1980 ellipso"); + add_srs_wkt (p, 2, + "id\",DATUM[\"Not_specified_based_on_Hughes_1980_ellipsoi"); + add_srs_wkt (p, 3, + "d\",SPHEROID[\"Hughes 1980\",6378273,298.279411123061,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"7058\"]],AUTHORITY[\"EPSG\",\"6054\"]"); + add_srs_wkt (p, 5, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 6, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 7, + "122\"]],AUTHORITY[\"EPSG\",\"4054\"]],PROJECTION[\"Polar"); + add_srs_wkt (p, 8, + "_Stereographic\"],PARAMETER[\"latitude_of_origin\",70],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"central_meridian\",-45],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 10, + "tor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 12, + "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"3411\"]]"); + p = add_epsg_def (filter, first, last, 3412, "epsg", 3412, + "NSIDC Sea Ice Polar Stereographic South"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 "); + add_proj4text (p, 1, + "+y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NSIDC Sea Ice Polar Stereographic South\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"Unspecified datum based upon the Hughes 1980 ellipso"); + add_srs_wkt (p, 2, + "id\",DATUM[\"Not_specified_based_on_Hughes_1980_ellipsoi"); + add_srs_wkt (p, 3, + "d\",SPHEROID[\"Hughes 1980\",6378273,298.279411123061,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"7058\"]],AUTHORITY[\"EPSG\",\"6054\"]"); + add_srs_wkt (p, 5, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 6, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 7, + "122\"]],AUTHORITY[\"EPSG\",\"4054\"]],PROJECTION[\"Polar"); + add_srs_wkt (p, 8, + "_Stereographic\"],PARAMETER[\"latitude_of_origin\",-70],"); + add_srs_wkt (p, 9, + "PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 10, + "or\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 12, + "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"3412\"]]"); + p = add_epsg_def (filter, first, last, 3413, "epsg", 3413, + "WGS 84 / NSIDC Sea Ice Polar Stereographic North"); + add_proj4text (p, 0, + "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 "); + add_proj4text (p, 1, + "+y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / NSIDC Sea Ice Polar Stereographic Nort"); + add_srs_wkt (p, 1, + "h\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS "); + add_srs_wkt (p, 2, + "84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4326\"]],PROJECTION[\"Polar_Stereographic\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",70],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-45],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_"); + add_srs_wkt (p, 9, + "easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 10, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 11, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3413\"]]"); + p = add_epsg_def (filter, first, last, 3414, "epsg", 3414, + "SVY21 / Singapore TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=1.366666666666667 +lon_0=103.83333333"); + add_proj4text (p, 1, + "33333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SVY21 / Singapore TM\",GEOGCS[\"SVY21\",DATUM[\""); + add_srs_wkt (p, 1, + "SVY21\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6757\"]],PR"); + add_srs_wkt (p, 3, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 4, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 5, + "]],AUTHORITY[\"EPSG\",\"4757\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 6, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",1.36666666"); + add_srs_wkt (p, 7, + "6666667],PARAMETER[\"central_meridian\",103.833333333333"); + add_srs_wkt (p, 8, + "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 9, + "ng\",28001.642],PARAMETER[\"false_northing\",38744.572],"); + add_srs_wkt (p, 10, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"3414\"]]"); + p = add_epsg_def (filter, first, last, 3415, "epsg", 3415, + "WGS 72BE / South China Sea Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=18 +lat_2=24 +lat_0=21 +lon_0=114 +x_0="); + add_proj4text (p, 1, + "500000 +y_0=500000 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 2, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / South China Sea Lambert\",GEOGCS[\"W"); + add_srs_wkt (p, 1, + "GS 72BE\",DATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7043\"]],TOWGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EP"); + add_srs_wkt (p, 4, + "SG\",\"6324\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",18],PARAMETER[\"standard_parallel_2\",2"); + add_srs_wkt (p, 9, + "4],PARAMETER[\"latitude_of_origin\",21],PARAMETER[\"cent"); + add_srs_wkt (p, 10, + "ral_meridian\",114],PARAMETER[\"false_easting\",500000],"); + add_srs_wkt (p, 11, + "PARAMETER[\"false_northing\",500000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 13, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3415\"]]"); + p = add_epsg_def (filter, first, last, 3416, "epsg", 3416, + "ETRS89 / Austria Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.3333"); + add_proj4text (p, 1, + "3333333333 +x_0=400000 +y_0=400000 +ellps=GRS80 +towgs84"); + add_proj4text (p, 2, + "=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Austria Lambert\",GEOGCS[\"ETRS89\",DA"); + add_srs_wkt (p, 1, + "TUM[\"European_Terrestrial_Reference_System_1989\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",49],PARAMETER[\"standard_parallel_2\",46],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"latitude_of_origin\",47.5],PARAMETER[\"central_"); + add_srs_wkt (p, 10, + "meridian\",13.33333333333333],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",400000],PARAMETER[\"false_northing\",400000],UNIT[\"met"); + add_srs_wkt (p, 12, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"3416\"]]"); + p = add_epsg_def (filter, first, last, 3417, "epsg", 3417, + "NAD83 / Iowa North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.99"); + add_proj4text (p, 2, + "99898402 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Iowa North (ftUS)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",43.26"); + add_srs_wkt (p, 8, + "666666666667],PARAMETER[\"standard_parallel_2\",42.06666"); + add_srs_wkt (p, 9, + "666666667],PARAMETER[\"latitude_of_origin\",41.5],PARAME"); + add_srs_wkt (p, 10, + "TER[\"central_meridian\",-93.5],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 11, + "g\",4921250],PARAMETER[\"false_northing\",3280833.333300"); + add_srs_wkt (p, 12, + "001],UNIT[\"US survey foot\",0.3048006096012192,AUTHORIT"); + add_srs_wkt (p, 13, + "Y[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 14, + ",AUTHORITY[\"EPSG\",\"3417\"]]"); + p = add_epsg_def (filter, first, last, 3418, "epsg", 3418, + "NAD83 / Iowa South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); + add_proj4text (p, 1, + "667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +"); + add_proj4text (p, 2, + "datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Iowa South (ftUS)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.78"); + add_srs_wkt (p, 8, + "333333333333],PARAMETER[\"standard_parallel_2\",40.61666"); + add_srs_wkt (p, 9, + "666666667],PARAMETER[\"latitude_of_origin\",40],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-93.5],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",1640416.6667],PARAMETER[\"false_northing\",0],UNIT[\"US"); + add_srs_wkt (p, 12, + " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 13, + "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 14, + "PSG\",\"3418\"]]"); + p = add_epsg_def (filter, first, last, 3419, "epsg", 3419, + "NAD83 / Kansas North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.9999"); + add_proj4text (p, 2, + "8984 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Kansas North (ftUS)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39.7"); + add_srs_wkt (p, 8, + "8333333333333],PARAMETER[\"standard_parallel_2\",38.7166"); + add_srs_wkt (p, 9, + "6666666667],PARAMETER[\"latitude_of_origin\",38.33333333"); + add_srs_wkt (p, 10, + "333334],PARAMETER[\"central_meridian\",-98],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",1312333.3333],PARAMETER[\"false_northing"); + add_srs_wkt (p, 12, + "\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 14, + "],AUTHORITY[\"EPSG\",\"3419\"]]"); + p = add_epsg_def (filter, first, last, 3420, "epsg", 3420, + "NAD83 / Kansas South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99"); + add_proj4text (p, 2, + "998984 +y_0=399999.99998984 +datum=NAD83 +units=us-ft +n"); + add_proj4text (p, 3, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Kansas South (ftUS)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38.5"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"standard_parallel_2\",37.2666"); + add_srs_wkt (p, 9, + "6666666667],PARAMETER[\"latitude_of_origin\",36.66666666"); + add_srs_wkt (p, 10, + "666666],PARAMETER[\"central_meridian\",-98.5],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",1312333.3333],PARAMETER[\"false_northi"); + add_srs_wkt (p, 12, + "ng\",1312333.3333],UNIT[\"US survey foot\",0.30480060960"); + add_srs_wkt (p, 13, + "12192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 14, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3420\"]]"); + p = add_epsg_def (filter, first, last, 3421, "epsg", 3421, + "NAD83 / Nevada East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=200000.00001016 +y_0=8000000.000010163 +datum="); + add_proj4text (p, 2, + "NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Nevada East (ftUS)\",GEOGCS[\"NAD83\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",34.75],PARAME"); + add_srs_wkt (p, 8, + "TER[\"central_meridian\",-115.5833333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",65616"); + add_srs_wkt (p, 10, + "6.6667],PARAMETER[\"false_northing\",26246666.66670001],"); + add_srs_wkt (p, 11, + "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"3421\"]]"); + p = add_epsg_def (filter, first, last, 3422, "epsg", 3422, + "NAD83 / Nevada Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=500000.00001016 +y_0=6000000 +datum=NAD83 +uni"); + add_proj4text (p, 2, + "ts=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Nevada Central (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",34.75],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",-116.6666666666667],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",16"); + add_srs_wkt (p, 10, + "40416.6667],PARAMETER[\"false_northing\",19685000],UNIT["); + add_srs_wkt (p, 11, + "\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"3422\"]]"); + p = add_epsg_def (filter, first, last, 3423, "epsg", 3423, + "NAD83 / Nevada West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +datum"); + add_proj4text (p, 2, + "=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Nevada West (ftUS)\",GEOGCS[\"NAD83\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",34.75],PARAME"); + add_srs_wkt (p, 8, + "TER[\"central_meridian\",-118.5833333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",26246"); + add_srs_wkt (p, 10, + "66.6667],PARAMETER[\"false_northing\",13123333.3333],UNI"); + add_srs_wkt (p, 11, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"3423\"]]"); + p = add_epsg_def (filter, first, last, 3424, "epsg", 3424, + "NAD83 / New Jersey (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +datum=NAD83 +units=us-ft +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New Jersey (ftUS)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",38.83333333333"); + add_srs_wkt (p, 8, + "334],PARAMETER[\"central_meridian\",-74.5],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9999],PARAMETER[\"false_easting\",492125"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 11, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3424\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 3425, "epsg", 3425, + "NAD83(HARN) / Iowa North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.99"); + add_proj4text (p, 2, + "99898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-f"); + add_proj4text (p, 3, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Iowa North (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",43.26666666666667],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",42.06666666666667],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",41.5],PARAMETER[\"central_meridian\",-93.5],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_easting\",4921250],PARAMETER[\"false_nor"); + add_srs_wkt (p, 12, + "thing\",3280833.333300001],UNIT[\"US survey foot\",0.304"); + add_srs_wkt (p, 13, + "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 14, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3425\"]]"); + p = add_epsg_def (filter, first, last, 3426, "epsg", 3426, + "NAD83(HARN) / Iowa South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); + add_proj4text (p, 1, + "667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +"); + add_proj4text (p, 2, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Iowa South (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",41.78333333333333],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",40.61666666666667],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",40],PARAMETER[\"central_meridian\",-93.5],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",1640416.6667],PARAMETER[\"false_"); + add_srs_wkt (p, 12, + "northing\",0],UNIT[\"US survey foot\",0.3048006096012192"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 14, + "\",NORTH],AUTHORITY[\"EPSG\",\"3426\"]]"); + p = add_epsg_def (filter, first, last, 3427, "epsg", 3427, + "NAD83(HARN) / Kansas North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.9999"); + add_proj4text (p, 2, + "8984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=u"); + add_proj4text (p, 3, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Kansas North (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",39.78333333333333],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",38.71666666666667],PARAMETER[\"latitude"); + add_srs_wkt (p, 10, + "_of_origin\",38.33333333333334],PARAMETER[\"central_meri"); + add_srs_wkt (p, 11, + "dian\",-98],PARAMETER[\"false_easting\",1312333.3333],PA"); + add_srs_wkt (p, 12, + "RAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0."); + add_srs_wkt (p, 13, + "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 14, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3427\"]]"); + p = add_epsg_def (filter, first, last, 3428, "epsg", 3428, + "NAD83(HARN) / Kansas South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99"); + add_proj4text (p, 2, + "998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,"); + add_proj4text (p, 3, + "0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Kansas South (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",38.56666666666667],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",37.26666666666667],PARAMETER[\"latitude"); + add_srs_wkt (p, 10, + "_of_origin\",36.66666666666666],PARAMETER[\"central_meri"); + add_srs_wkt (p, 11, + "dian\",-98.5],PARAMETER[\"false_easting\",1312333.3333],"); + add_srs_wkt (p, 12, + "PARAMETER[\"false_northing\",1312333.3333],UNIT[\"US sur"); + add_srs_wkt (p, 13, + "vey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 14, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 15, + ",\"3428\"]]"); + p = add_epsg_def (filter, first, last, 3429, "epsg", 3429, + "NAD83(HARN) / Nevada East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps="); + add_proj4text (p, 2, + "GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Nevada East (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",34.75],PARAMETER[\"central_meridian\",-115.58"); + add_srs_wkt (p, 9, + "33333333333],PARAMETER[\"scale_factor\",0.9999],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",656166.6667],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",26246666.66670001],UNIT[\"US survey foot\",0.30480"); + add_srs_wkt (p, 12, + "06096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 13, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3429\"]]"); + p = add_epsg_def (filter, first, last, 3430, "epsg", 3430, + "NAD83(HARN) / Nevada Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +tow"); + add_proj4text (p, 2, + "gs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Nevada Central (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",34.75],PARAMETER[\"central_meridian\",-116"); + add_srs_wkt (p, 9, + ".6666666666667],PARAMETER[\"scale_factor\",0.9999],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",1640416.6667],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",19685000],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 12, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3430\"]]"); + p = add_epsg_def (filter, first, last, 3431, "epsg", 3431, + "NAD83(HARN) / Nevada West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps"); + add_proj4text (p, 2, + "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Nevada West (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",34.75],PARAMETER[\"central_meridian\",-118.58"); + add_srs_wkt (p, 9, + "33333333333],PARAMETER[\"scale_factor\",0.9999],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",2624666.6667],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",13123333.3333],UNIT[\"US survey foot\",0.30480060"); + add_srs_wkt (p, 12, + "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); + add_srs_wkt (p, 13, + "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3431\"]]"); + p = add_epsg_def (filter, first, last, 3432, "epsg", 3432, + "NAD83(HARN) / New Jersey (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New Jersey (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",38.83333333333334],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-74.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",492125],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 11, + "NIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"3432\"]]"); + p = add_epsg_def (filter, first, last, 3433, "epsg", 3433, + "NAD83 / Arkansas North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.9999"); + add_proj4text (p, 2, + "8984 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Arkansas North (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36"); + add_srs_wkt (p, 8, + ".23333333333333],PARAMETER[\"standard_parallel_2\",34.93"); + add_srs_wkt (p, 9, + "333333333333],PARAMETER[\"latitude_of_origin\",34.333333"); + add_srs_wkt (p, 10, + "33333334],PARAMETER[\"central_meridian\",-92],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",1312333.3333],PARAMETER[\"false_northi"); + add_srs_wkt (p, 12, + "ng\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 14, + "TH],AUTHORITY[\"EPSG\",\"3433\"]]"); + p = add_epsg_def (filter, first, last, 3434, "epsg", 3434, + "NAD83 / Arkansas South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399"); + add_proj4text (p, 2, + "999.99998984 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Arkansas South (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",34"); + add_srs_wkt (p, 8, + ".76666666666667],PARAMETER[\"standard_parallel_2\",33.3]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"latitude_of_origin\",32.66666666666666],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"central_meridian\",-92],PARAMETER[\"false_easti"); + add_srs_wkt (p, 11, + "ng\",1312333.3333],PARAMETER[\"false_northing\",1312333."); + add_srs_wkt (p, 12, + "3333],UNIT[\"US survey foot\",0.3048006096012192,AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 14, + "],AUTHORITY[\"EPSG\",\"3434\"]]"); + p = add_epsg_def (filter, first, last, 3435, "epsg", 3435, + "NAD83 / Illinois East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); + add_proj4text (p, 1, + "333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Illinois East (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",36.66666666"); + add_srs_wkt (p, 8, + "666666],PARAMETER[\"central_meridian\",-88.3333333333333"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",0.999975],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",984250.0000000002],PARAMETER[\"false_northin"); + add_srs_wkt (p, 11, + "g\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 13, + "H],AUTHORITY[\"EPSG\",\"3435\"]]"); + p = add_epsg_def (filter, first, last, 3436, "epsg", 3436, + "NAD83 / Illinois West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +dat"); + add_proj4text (p, 2, + "um=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Illinois West (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",36.66666666"); + add_srs_wkt (p, 8, + "666666],PARAMETER[\"central_meridian\",-90.1666666666666"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",0.999941177],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",2296583.333300001],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 13, + "ORTH],AUTHORITY[\"EPSG\",\"3436\"]]"); + p = add_epsg_def (filter, first, last, 3437, "epsg", 3437, + "NAD83 / New Hampshire (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=300000.0000000001 +y_0=0 +datum=NAD83 +uni"); + add_proj4text (p, 2, + "ts=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New Hampshire (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",42.5],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-71.66666666666667],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.999966667],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",984250.0000000002],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 11, + "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"3437\"]]"); + p = add_epsg_def (filter, first, last, 3438, "epsg", 3438, + "NAD83 / Rhode Island (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); + add_proj4text (p, 1, + "9999375 +x_0=99999.99998983997 +y_0=0 +datum=NAD83 +unit"); + add_proj4text (p, 2, + "s=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Rhode Island (ftUS)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",41.0833333333"); + add_srs_wkt (p, 8, + "3334],PARAMETER[\"central_meridian\",-71.5],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.99999375],PARAMETER[\"false_easting\",3"); + add_srs_wkt (p, 10, + "28083.3333],PARAMETER[\"false_northing\",0],UNIT[\"US su"); + add_srs_wkt (p, 11, + "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"3438\"]]"); + p = add_epsg_def (filter, first, last, 3439, "epsg", 3439, + "PSD93 / UTM zone 39N"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=clrk80 +towgs84=-180.624,-225."); + add_proj4text (p, 1, + "516,173.919,-0.81,-1.898,8.336,16.7101 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSD93 / UTM zone 39N\",GEOGCS[\"PSD93\",DATUM[\""); + add_srs_wkt (p, 1, + "PDO_Survey_Datum_1993\",SPHEROID[\"Clarke 1880 (RGS)\",6"); + add_srs_wkt (p, 2, + "378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.7101],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6134\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4134\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"343"); + add_srs_wkt (p, 13, + "9\"]]"); + p = add_epsg_def (filter, first, last, 3440, "epsg", 3440, + "PSD93 / UTM zone 40N"); + add_proj4text (p, 0, + "+proj=utm +zone=40 +ellps=clrk80 +towgs84=-180.624,-225."); + add_proj4text (p, 1, + "516,173.919,-0.81,-1.898,8.336,16.7101 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSD93 / UTM zone 40N\",GEOGCS[\"PSD93\",DATUM[\""); + add_srs_wkt (p, 1, + "PDO_Survey_Datum_1993\",SPHEROID[\"Clarke 1880 (RGS)\",6"); + add_srs_wkt (p, 2, + "378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-180.624,-225.516,173.919,-0.81,-1.898,8.336,16.7101],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6134\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4134\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"344"); + add_srs_wkt (p, 13, + "0\"]]"); + p = add_epsg_def (filter, first, last, 3441, "epsg", 3441, + "NAD83(HARN) / Arkansas North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.9999"); + add_proj4text (p, 2, + "8984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=u"); + add_proj4text (p, 3, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Arkansas North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",36.23333333333333],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",34.93333333333333],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",34.33333333333334],PARAMETER[\"central_me"); + add_srs_wkt (p, 11, + "ridian\",-92],PARAMETER[\"false_easting\",1312333.3333],"); + add_srs_wkt (p, 12, + "PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\","); + add_srs_wkt (p, 13, + "0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 14, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3441\"]"); + add_srs_wkt (p, 15, + "]"); + p = add_epsg_def (filter, first, last, 3442, "epsg", 3442, + "NAD83(HARN) / Arkansas South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399"); + add_proj4text (p, 2, + "999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 3, + "us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Arkansas South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",34.76666666666667],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",33.3],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",32.66666666666666],PARAMETER[\"central_meridian\",-92],"); + add_srs_wkt (p, 11, + "PARAMETER[\"false_easting\",1312333.3333],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",1312333.3333],UNIT[\"US survey foot\",0.3"); + add_srs_wkt (p, 13, + "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 14, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3442\"]]"); + p = add_epsg_def (filter, first, last, 3443, "epsg", 3443, + "NAD83(HARN) / Illinois East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); + add_proj4text (p, 1, + "333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); + add_proj4text (p, 3, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Illinois East (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",36.66666666666666],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",-88.33333333333333],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 10, + "999975],PARAMETER[\"false_easting\",984250.0000000002],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); + add_srs_wkt (p, 12, + ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); + add_srs_wkt (p, 13, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3443\"]]"); + p = add_epsg_def (filter, first, last, 3444, "epsg", 3444, + "NAD83(HARN) / Illinois West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Illinois West (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",36.66666666666666],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",-90.16666666666667],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 10, + "999941177],PARAMETER[\"false_easting\",2296583.333300001"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 12, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3444\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 3445, "epsg", 3445, + "NAD83(HARN) / New Hampshire (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +tow"); + add_proj4text (p, 2, + "gs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / New Hampshire (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",42.5],PARAMETER[\"central_meridian\",-71.66"); + add_srs_wkt (p, 9, + "666666666667],PARAMETER[\"scale_factor\",0.999966667],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",984250.0000000002],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 12, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3445\"]]"); + p = add_epsg_def (filter, first, last, 3446, "epsg", 3446, + "NAD83(HARN) / Rhode Island (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); + add_proj4text (p, 1, + "9999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towg"); + add_proj4text (p, 2, + "s84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Rhode Island (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",41.08333333333334],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-71.5],PARAMETER[\"scale_factor\",0.99999375],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",328083.3333],PARAMETER[\"false_no"); + add_srs_wkt (p, 11, + "rthing\",0],UNIT[\"US survey foot\",0.3048006096012192,A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"3446\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_14.c b/src/spatialite/src/srsinit/epsg_inlined_14.c new file mode 100644 index 0000000..25bbd15 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_14.c @@ -0,0 +1,3862 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_14 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 3447, "epsg", 3447, + "ETRS89 / Belgian Lambert 2005"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666"); + add_proj4text (p, 1, + "666 +lat_0=50.797815 +lon_0=4.359215833333333 +x_0=15032"); + add_proj4text (p, 2, + "8 +y_0=166262 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); + add_proj4text (p, 3, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Belgian Lambert 2005\",GEOGCS[\"ETRS89"); + add_srs_wkt (p, 1, + "\",DATUM[\"European_Terrestrial_Reference_System_1989\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",49.83333333333334],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",51.16666666666666],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",50.797815],PARAMETER[\"central_meridian\",4.35"); + add_srs_wkt (p, 11, + "9215833333333],PARAMETER[\"false_easting\",150328],PARAM"); + add_srs_wkt (p, 12, + "ETER[\"false_northing\",166262],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 14, + "],AUTHORITY[\"EPSG\",\"3447\"]]"); + p = add_epsg_def (filter, first, last, 3448, "epsg", 3448, + "JAD2001 / Jamaica Metric Grid"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=750"); + add_proj4text (p, 1, + "000 +y_0=650000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JAD2001 / Jamaica Metric Grid\",GEOGCS[\"JAD200"); + add_srs_wkt (p, 1, + "1\",DATUM[\"Jamaica_2001\",SPHEROID[\"WGS 84\",6378137,2"); + add_srs_wkt (p, 2, + "98.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6758\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4758\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_1SP\"],PARAMETER[\"latitude_of_origin\",18],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-77],PARAMETER[\"scale_factor\",1],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",750000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",650000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"3448\"]]"); + p = add_epsg_def (filter, first, last, 3449, "epsg", 3449, + "JAD2001 / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JAD2001 / UTM zone 17N\",GEOGCS[\"JAD2001\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Jamaica_2001\",SPHEROID[\"WGS 84\",6378137,298.2572"); + add_srs_wkt (p, 2, + "23563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6758\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4758\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); + add_srs_wkt (p, 9, + "alse_easting\",500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 11, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"3449\"]]"); + p = add_epsg_def (filter, first, last, 3450, "epsg", 3450, + "JAD2001 / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JAD2001 / UTM zone 18N\",GEOGCS[\"JAD2001\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Jamaica_2001\",SPHEROID[\"WGS 84\",6378137,298.2572"); + add_srs_wkt (p, 2, + "23563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6758\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4758\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); + add_srs_wkt (p, 9, + "alse_easting\",500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 11, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"3450\"]]"); + p = add_epsg_def (filter, first, last, 3451, "epsg", 3451, + "NAD83 / Louisiana North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Louisiana North (ftUS)\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); + add_srs_wkt (p, 8, + "2.66666666666666],PARAMETER[\"standard_parallel_2\",31.1"); + add_srs_wkt (p, 9, + "6666666666667],PARAMETER[\"latitude_of_origin\",30.5],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-92.5],PARAMETER[\"false_ea"); + add_srs_wkt (p, 11, + "sting\",3280833.333300001],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 12, + "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 14, + "UTHORITY[\"EPSG\",\"3451\"]]"); + p = add_epsg_def (filter, first, last, 3452, "epsg", 3452, + "NAD83 / Louisiana South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91"); + add_proj4text (p, 1, + ".33333333333333 +x_0=999999.9999898402 +y_0=0 +datum=NAD"); + add_proj4text (p, 2, + "83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Louisiana South (ftUS)\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); + add_srs_wkt (p, 8, + "0.7],PARAMETER[\"standard_parallel_2\",29.3],PARAMETER[\""); + add_srs_wkt (p, 9, + "latitude_of_origin\",28.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",-91.33333333333333],PARAMETER[\"false_easting\",3280833"); + add_srs_wkt (p, 11, + ".333300001],PARAMETER[\"false_northing\",0],UNIT[\"US su"); + add_srs_wkt (p, 12, + "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); + add_srs_wkt (p, 13, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 14, + "\",\"3452\"]]"); + p = add_epsg_def (filter, first, last, 3453, "epsg", 3453, + "NAD83 / Louisiana Offshore (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=999999.99"); + add_proj4text (p, 2, + "99898402 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Louisiana Offshore (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",27.83333333333333],PARAMETER[\"standard_parallel_2\",26"); + add_srs_wkt (p, 9, + ".16666666666667],PARAMETER[\"latitude_of_origin\",25.5],"); + add_srs_wkt (p, 10, + "PARAMETER[\"central_meridian\",-91.33333333333333],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_easting\",3280833.333300001],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); + add_srs_wkt (p, 13, + "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 14, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3453\"]]"); + p = add_epsg_def (filter, first, last, 3454, "epsg", 3454, + "NAD83 / South Dakota North (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); + add_proj4text (p, 1, + ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / South Dakota North (ftUS) (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",44.4],PARAMETER[\"standard_parallel_2\",42"); + add_srs_wkt (p, 9, + ".83333333333334],PARAMETER[\"latitude_of_origin\",42.333"); + add_srs_wkt (p, 10, + "33333333334],PARAMETER[\"central_meridian\",-100.3333333"); + add_srs_wkt (p, 11, + "333333],PARAMETER[\"false_easting\",1968500],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 13, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 14, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3454\"]]"); + p = add_epsg_def (filter, first, last, 3455, "epsg", 3455, + "NAD83 / South Dakota South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); + add_proj4text (p, 1, + ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / South Dakota South (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",44.4],PARAMETER[\"standard_parallel_2\",42.833333333333"); + add_srs_wkt (p, 9, + "34],PARAMETER[\"latitude_of_origin\",42.33333333333334],"); + add_srs_wkt (p, 10, + "PARAMETER[\"central_meridian\",-100.3333333333333],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_easting\",1968500],PARAMETER[\"false_northi"); + add_srs_wkt (p, 12, + "ng\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 14, + "TH],AUTHORITY[\"EPSG\",\"3455\"]]"); + p = add_epsg_def (filter, first, last, 3456, "epsg", 3456, + "NAD83(HARN) / Louisiana North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); + add_proj4text (p, 3, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Louisiana North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",32.66666666666666],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",31.16666666666667],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",30.5],PARAMETER[\"central_meridian\",-92."); + add_srs_wkt (p, 11, + "5],PARAMETER[\"false_easting\",3280833.333300001],PARAME"); + add_srs_wkt (p, 12, + "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); + add_srs_wkt (p, 13, + "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 14, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3456\"]]"); + p = add_epsg_def (filter, first, last, 3457, "epsg", 3457, + "NAD83(HARN) / Louisiana South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91"); + add_proj4text (p, 1, + ".33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Louisiana South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",30.7],PARAMETER[\"standard_paralle"); + add_srs_wkt (p, 9, + "l_2\",29.3],PARAMETER[\"latitude_of_origin\",28.5],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"central_meridian\",-91.33333333333333],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",3280833.333300001],PARAMETER[\"false_n"); + add_srs_wkt (p, 12, + "orthing\",0],UNIT[\"US survey foot\",0.3048006096012192,"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"3457\"]]"); + p = add_epsg_def (filter, first, last, 3458, "epsg", 3458, + "NAD83(HARN) / South Dakota North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666"); + add_proj4text (p, 1, + "666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_"); + add_proj4text (p, 2, + "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no"); + add_proj4text (p, 3, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / South Dakota North (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_"); + add_srs_wkt (p, 2, + "Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_1\",45.68333333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"standard_parallel_2\",44.41666666666666],PARAMETER[\"l"); + add_srs_wkt (p, 10, + "atitude_of_origin\",43.83333333333334],PARAMETER[\"centr"); + add_srs_wkt (p, 11, + "al_meridian\",-100],PARAMETER[\"false_easting\",1968500]"); + add_srs_wkt (p, 12, + ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 13, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 14, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3458\"]"); + add_srs_wkt (p, 15, + "]"); + p = add_epsg_def (filter, first, last, 3459, "epsg", 3459, + "NAD83(HARN) / South Dakota South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); + add_proj4text (p, 1, + ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +n"); + add_proj4text (p, 3, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / South Dakota South (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_"); + add_srs_wkt (p, 2, + "Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_1\",44.4],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 9, + "rallel_2\",42.83333333333334],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 10, + "igin\",42.33333333333334],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 11, + ",-100.3333333333333],PARAMETER[\"false_easting\",1968500"); + add_srs_wkt (p, 12, + "],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 13, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 14, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3459\"]"); + add_srs_wkt (p, 15, + "]"); + p = add_epsg_def (filter, first, last, 3460, "epsg", 3460, + "Fiji 1986 / Fiji Map Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-17 +lon_0=178.75 +k=0.99985 +x_0=200"); + add_proj4text (p, 1, + "0000 +y_0=4000000 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); + add_proj4text (p, 2, + "4,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Fiji 1986 / Fiji Map Grid\",GEOGCS[\"Fiji 1986\""); + add_srs_wkt (p, 1, + ",DATUM[\"Fiji_Geodetic_Datum_1986\",SPHEROID[\"WGS 72\","); + add_srs_wkt (p, 2, + "6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",4.5,0,0,0.554,0.2263],AUTHORITY[\"EPSG\",\"6720\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4720\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",-17],PARAME"); + add_srs_wkt (p, 8, + "TER[\"central_meridian\",178.75],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.99985],PARAMETER[\"false_easting\",2000000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",4000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 12, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"3460\"]]"); + p = add_epsg_def (filter, first, last, 3461, "epsg", 3461, + "Dabola 1981 / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-83,"); + add_proj4text (p, 1, + "37,124,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Dabola 1981 / UTM zone 28N\",GEOGCS[\"Dabola 19"); + add_srs_wkt (p, 1, + "81\",DATUM[\"Dabola_1981\",SPHEROID[\"Clarke 1880 (IGN)\""); + add_srs_wkt (p, 2, + ",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-83,37,124,0,0,0,0],AUTHORITY[\"EPSG\",\"6155"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4155\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-15],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"3461\"]]"); + p = add_epsg_def (filter, first, last, 3462, "epsg", 3462, + "Dabola 1981 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-83,"); + add_proj4text (p, 1, + "37,124,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Dabola 1981 / UTM zone 29N\",GEOGCS[\"Dabola 19"); + add_srs_wkt (p, 1, + "81\",DATUM[\"Dabola_1981\",SPHEROID[\"Clarke 1880 (IGN)\""); + add_srs_wkt (p, 2, + ",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-83,37,124,0,0,0,0],AUTHORITY[\"EPSG\",\"6155"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4155\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-9],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"3462\"]]"); + p = add_epsg_def (filter, first, last, 3463, "epsg", 3463, + "NAD83 / Maine CS2000 Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=5"); + add_proj4text (p, 1, + "00000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Maine CS2000 Central\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",43.5],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-69.125],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.99998],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"3463\"]]"); + p = add_epsg_def (filter, first, last, 3464, "epsg", 3464, + "NAD83(HARN) / Maine CS2000 Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=5"); + add_proj4text (p, 1, + "00000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Maine CS2000 Central\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",43.5],PARAMETER[\"central_meridian\",-69.12"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",0.99998],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 12, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3464\"]]"); + p = add_epsg_def (filter, first, last, 3465, "epsg", 3465, + "NAD83(NSRS2007) / Alabama East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.9"); + add_proj4text (p, 1, + "9996 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Alabama East\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",30.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-85.83333333333333],PARAMETER[\"scale_factor\",0.99996]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_easting\",200000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"3465\"]]"); + p = add_epsg_def (filter, first, last, 3466, "epsg", 3466, + "NAD83(NSRS2007) / Alabama West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=6"); + add_proj4text (p, 1, + "00000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Alabama West\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",30],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "87.5],PARAMETER[\"scale_factor\",0.999933333],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",600000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 11, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3466\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 3467, "epsg", 3467, + "NAD83(NSRS2007) / Alaska Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0"); + add_proj4text (p, 1, + "=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 2, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Alaska Albers\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"standard_parallel_1\",55],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 9, + "lel_2\",65],PARAMETER[\"latitude_of_center\",50],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"longitude_of_center\",-154],PARAMETER[\"false_easti"); + add_srs_wkt (p, 11, + "ng\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 13, + "\",NORTH],AUTHORITY[\"EPSG\",\"3467\"]]"); + p = add_epsg_def (filter, first, last, 3468, "epsg", 3468, + "NAD83(NSRS2007) / Alaska zone 1"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=32"); + add_proj4text (p, 1, + "3.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +no"); + add_proj4text (p, 2, + "_uoff +gamma=323.1301023611111 +ellps=GRS80 +towgs84=0,0"); + add_proj4text (p, 3, + ",0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Alaska zone 1\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_center\",57],PARAMETER[\"longitude_of_ce"); + add_srs_wkt (p, 9, + "nter\",-133.6666666666667],PARAMETER[\"azimuth\",323.130"); + add_srs_wkt (p, 10, + "1023611111],PARAMETER[\"rectified_grid_angle\",323.13010"); + add_srs_wkt (p, 11, + "23611111],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_easting\",5000000],PARAMETER[\"false_northing\",-5"); + add_srs_wkt (p, 13, + "000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 14, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 15, + "468\"]]"); + p = add_epsg_def (filter, first, last, 3469, "epsg", 3469, + "NAD83(NSRS2007) / Alaska zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Alaska zone 2\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "-142],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3469\"]]"); + p = add_epsg_def (filter, first, last, 3470, "epsg", 3470, + "NAD83(NSRS2007) / Alaska zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Alaska zone 3\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "-146],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3470\"]]"); + p = add_epsg_def (filter, first, last, 3471, "epsg", 3471, + "NAD83(NSRS2007) / Alaska zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Alaska zone 4\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "-150],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3471\"]]"); + p = add_epsg_def (filter, first, last, 3472, "epsg", 3472, + "NAD83(NSRS2007) / Alaska zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Alaska zone 5\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "-154],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3472\"]]"); + p = add_epsg_def (filter, first, last, 3473, "epsg", 3473, + "NAD83(NSRS2007) / Alaska zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Alaska zone 6\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "-158],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3473\"]]"); + p = add_epsg_def (filter, first, last, 3474, "epsg", 3474, + "NAD83(NSRS2007) / Alaska zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Alaska zone 7\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "-162],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3474\"]]"); + p = add_epsg_def (filter, first, last, 3475, "epsg", 3475, + "NAD83(NSRS2007) / Alaska zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Alaska zone 8\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "-166],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3475\"]]"); + p = add_epsg_def (filter, first, last, 3476, "epsg", 3476, + "NAD83(NSRS2007) / Alaska zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Alaska zone 9\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",54],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "-170],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3476\"]]"); + p = add_epsg_def (filter, first, last, 3477, "epsg", 3477, + "NAD83(NSRS2007) / Alaska zone 10"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333"); + add_proj4text (p, 1, + "334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Alaska zone 10\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",53.83333333333334],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",51.83333333333334],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",51],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 11, + "\",-176],PARAMETER[\"false_easting\",1000000],PARAMETER["); + add_srs_wkt (p, 12, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"3477\"]]"); + p = add_epsg_def (filter, first, last, 3478, "epsg", 3478, + "NAD83(NSRS2007) / Arizona Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Arizona Central\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",31],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "-111.9166666666667],PARAMETER[\"scale_factor\",0.9999],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_easting\",213360],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 12, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"3478\"]]"); + p = add_epsg_def (filter, first, last, 3479, "epsg", 3479, + "NAD83(NSRS2007) / Arizona Central (ft)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Arizona Central (ft)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",31],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",-111.9166666666667],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 10, + "9999],PARAMETER[\"false_easting\",700000],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"3479\"]]"); + p = add_epsg_def (filter, first, last, 3480, "epsg", 3480, + "NAD83(NSRS2007) / Arizona East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Arizona East\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",31],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "110.1666666666667],PARAMETER[\"scale_factor\",0.9999],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",213360],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3480\"]]"); + p = add_epsg_def (filter, first, last, 3481, "epsg", 3481, + "NAD83(NSRS2007) / Arizona East (ft)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Arizona East (ft)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",31],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 9, + "n\",-110.1666666666667],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 10, + "9],PARAMETER[\"false_easting\",700000],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"3481\"]]"); + p = add_epsg_def (filter, first, last, 3482, "epsg", 3482, + "NAD83(NSRS2007) / Arizona West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); + add_proj4text (p, 1, + "=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Arizona West\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",31],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "113.75],PARAMETER[\"scale_factor\",0.999933333],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",213360],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3482\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 3483, "epsg", 3483, + "NAD83(NSRS2007) / Arizona West (ft)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); + add_proj4text (p, 1, + "=213360 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Arizona West (ft)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",31],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 9, + "n\",-113.75],PARAMETER[\"scale_factor\",0.999933333],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_easting\",700000],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"3483\"]]"); + p = add_epsg_def (filter, first, last, 3484, "epsg", 3484, + "NAD83(NSRS2007) / Arkansas North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Arkansas North\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",36.23333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",34.93333333333333],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",34.33333333333334],PARAMETER[\"c"); + add_srs_wkt (p, 11, + "entral_meridian\",-92],PARAMETER[\"false_easting\",40000"); + add_srs_wkt (p, 12, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 14, + "RTH],AUTHORITY[\"EPSG\",\"3484\"]]"); + p = add_epsg_def (filter, first, last, 3485, "epsg", 3485, + "NAD83(NSRS2007) / Arkansas North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.9999"); + add_proj4text (p, 2, + "8984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=u"); + add_proj4text (p, 3, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Arkansas North (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",36.23333333333333]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",34.93333333333333],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",34.33333333333334],PARAME"); + add_srs_wkt (p, 11, + "TER[\"central_meridian\",-92],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 12, + ",1312333.3333],PARAMETER[\"false_northing\",0],UNIT[\"US"); + add_srs_wkt (p, 13, + " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 14, + "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 15, + "PSG\",\"3485\"]]"); + p = add_epsg_def (filter, first, last, 3486, "epsg", 3486, + "NAD83(NSRS2007) / Arkansas South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellp"); + add_proj4text (p, 2, + "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Arkansas South\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",34.76666666666667],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",33.3],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 10, + "f_origin\",32.66666666666666],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 11, + "an\",-92],PARAMETER[\"false_easting\",400000],PARAMETER["); + add_srs_wkt (p, 12, + "\"false_northing\",400000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 14, + "HORITY[\"EPSG\",\"3486\"]]"); + p = add_epsg_def (filter, first, last, 3487, "epsg", 3487, + "NAD83(NSRS2007) / Arkansas South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399"); + add_proj4text (p, 2, + "999.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 3, + "us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Arkansas South (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",34.76666666666667]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",33.3],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",32.66666666666666],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-92],PARAMETER[\"false_easting\",1312333.333"); + add_srs_wkt (p, 12, + "3],PARAMETER[\"false_northing\",1312333.3333],UNIT[\"US "); + add_srs_wkt (p, 13, + "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 14, + "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 15, + "SG\",\"3487\"]]"); + p = add_epsg_def (filter, first, last, 3488, "epsg", 3488, + "NAD83(NSRS2007) / California Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_"); + add_proj4text (p, 1, + "0=0 +y_0=-4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / California Albers\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"standard_parallel_1\",34],PARAMETER[\"standard_p"); + add_srs_wkt (p, 9, + "arallel_2\",40.5],PARAMETER[\"latitude_of_center\",0],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"longitude_of_center\",-120],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "easting\",0],PARAMETER[\"false_northing\",-4000000],UNIT"); + add_srs_wkt (p, 12, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3488\"]]"); + p = add_epsg_def (filter, first, last, 3489, "epsg", 3489, + "NAD83(NSRS2007) / California zone 1"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); + add_proj4text (p, 1, + "3333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellp"); + add_proj4text (p, 2, + "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / California zone 1\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",41.66666666666666],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",40],PARAMETER[\"latitude_"); + add_srs_wkt (p, 10, + "of_origin\",39.33333333333334],PARAMETER[\"central_merid"); + add_srs_wkt (p, 11, + "ian\",-122],PARAMETER[\"false_easting\",2000000],PARAMET"); + add_srs_wkt (p, 12, + "ER[\"false_northing\",500000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 14, + "AUTHORITY[\"EPSG\",\"3489\"]]"); + p = add_epsg_def (filter, first, last, 3490, "epsg", 3490, + "NAD83(NSRS2007) / California zone 1 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); + add_proj4text (p, 1, + "3333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=5000"); + add_proj4text (p, 2, + "00.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); + add_proj4text (p, 3, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / California zone 1 (ftUS)\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); + add_srs_wkt (p, 2, + "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 3, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",41.6666666666666"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"standard_parallel_2\",40],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",39.33333333333334],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-122],PARAMETER[\"false_easting\",6561666.66"); + add_srs_wkt (p, 12, + "7],PARAMETER[\"false_northing\",1640416.667],UNIT[\"US s"); + add_srs_wkt (p, 13, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 14, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 15, + "G\",\"3490\"]]"); + p = add_epsg_def (filter, first, last, 3491, "epsg", 3491, + "NAD83(NSRS2007) / California zone 2"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y"); + add_proj4text (p, 2, + "_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / California zone 2\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",39.83333333333334],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",38.33333333333334],PARAME"); + add_srs_wkt (p, 10, + "TER[\"latitude_of_origin\",37.66666666666666],PARAMETER["); + add_srs_wkt (p, 11, + "\"central_meridian\",-122],PARAMETER[\"false_easting\",2"); + add_srs_wkt (p, 12, + "000000],PARAMETER[\"false_northing\",500000],UNIT[\"metr"); + add_srs_wkt (p, 13, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 14, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3491\"]]"); + p = add_epsg_def (filter, first, last, 3492, "epsg", 3492, + "NAD83(NSRS2007) / California zone 2 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.00"); + add_proj4text (p, 2, + "01016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,0,0"); + add_proj4text (p, 3, + ",0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / California zone 2 (ftUS)\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); + add_srs_wkt (p, 2, + "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 3, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",39.8333333333333"); + add_srs_wkt (p, 9, + "4],PARAMETER[\"standard_parallel_2\",38.33333333333334],"); + add_srs_wkt (p, 10, + "PARAMETER[\"latitude_of_origin\",37.66666666666666],PARA"); + add_srs_wkt (p, 11, + "METER[\"central_meridian\",-122],PARAMETER[\"false_easti"); + add_srs_wkt (p, 12, + "ng\",6561666.667],PARAMETER[\"false_northing\",1640416.6"); + add_srs_wkt (p, 13, + "67],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 15, + "AUTHORITY[\"EPSG\",\"3492\"]]"); + p = add_epsg_def (filter, first, last, 3493, "epsg", 3493, + "NAD83(NSRS2007) / California zone 3"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +"); + add_proj4text (p, 2, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / California zone 3\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",38.43333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",37.06666666666667],PARAME"); + add_srs_wkt (p, 10, + "TER[\"latitude_of_origin\",36.5],PARAMETER[\"central_mer"); + add_srs_wkt (p, 11, + "idian\",-120.5],PARAMETER[\"false_easting\",2000000],PAR"); + add_srs_wkt (p, 12, + "AMETER[\"false_northing\",500000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 14, + "TH],AUTHORITY[\"EPSG\",\"3493\"]]"); + p = add_epsg_def (filter, first, last, 3494, "epsg", 3494, + "NAD83(NSRS2007) / California zone 3 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0="); + add_proj4text (p, 2, + "500000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 3, + "nits=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / California zone 3 (ftUS)\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); + add_srs_wkt (p, 2, + "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 3, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",38.4333333333333"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"standard_parallel_2\",37.06666666666667],"); + add_srs_wkt (p, 10, + "PARAMETER[\"latitude_of_origin\",36.5],PARAMETER[\"centr"); + add_srs_wkt (p, 11, + "al_meridian\",-120.5],PARAMETER[\"false_easting\",656166"); + add_srs_wkt (p, 12, + "6.667],PARAMETER[\"false_northing\",1640416.667],UNIT[\""); + add_srs_wkt (p, 13, + "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 15, + "EPSG\",\"3494\"]]"); + p = add_epsg_def (filter, first, last, 3495, "epsg", 3495, + "NAD83(NSRS2007) / California zone 4"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); + add_proj4text (p, 1, + "4 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +tow"); + add_proj4text (p, 2, + "gs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / California zone 4\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",37.25],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",36],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "35.33333333333334],PARAMETER[\"central_meridian\",-119],"); + add_srs_wkt (p, 11, + "PARAMETER[\"false_easting\",2000000],PARAMETER[\"false_n"); + add_srs_wkt (p, 12, + "orthing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"3495\"]]"); + p = add_epsg_def (filter, first, last, 3496, "epsg", 3496, + "NAD83(NSRS2007) / California zone 4 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); + add_proj4text (p, 1, + "4 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.000101600"); + add_proj4text (p, 2, + "1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / California zone 4 (ftUS)\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); + add_srs_wkt (p, 2, + "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 3, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",37.25],PARAMETER"); + add_srs_wkt (p, 9, + "[\"standard_parallel_2\",36],PARAMETER[\"latitude_of_ori"); + add_srs_wkt (p, 10, + "gin\",35.33333333333334],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 11, + "-119],PARAMETER[\"false_easting\",6561666.667],PARAMETER"); + add_srs_wkt (p, 12, + "[\"false_northing\",1640416.667],UNIT[\"US survey foot\""); + add_srs_wkt (p, 13, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 14, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3496\"]"); + add_srs_wkt (p, 15, + "]"); + p = add_epsg_def (filter, first, last, 3497, "epsg", 3497, + "NAD83(NSRS2007) / California zone 5"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +el"); + add_proj4text (p, 2, + "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / California zone 5\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",35.46666666666667],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",34.03333333333333],PARAME"); + add_srs_wkt (p, 10, + "TER[\"latitude_of_origin\",33.5],PARAMETER[\"central_mer"); + add_srs_wkt (p, 11, + "idian\",-118],PARAMETER[\"false_easting\",2000000],PARAM"); + add_srs_wkt (p, 12, + "ETER[\"false_northing\",500000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 14, + "],AUTHORITY[\"EPSG\",\"3497\"]]"); + p = add_epsg_def (filter, first, last, 3498, "epsg", 3498, + "NAD83(NSRS2007) / California zone 5 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=50"); + add_proj4text (p, 2, + "0000.0001016001 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +uni"); + add_proj4text (p, 3, + "ts=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / California zone 5 (ftUS)\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); + add_srs_wkt (p, 2, + "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 3, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",35.4666666666666"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"standard_parallel_2\",34.03333333333333],"); + add_srs_wkt (p, 10, + "PARAMETER[\"latitude_of_origin\",33.5],PARAMETER[\"centr"); + add_srs_wkt (p, 11, + "al_meridian\",-118],PARAMETER[\"false_easting\",6561666."); + add_srs_wkt (p, 12, + "667],PARAMETER[\"false_northing\",1640416.667],UNIT[\"US"); + add_srs_wkt (p, 13, + " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 14, + "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 15, + "PSG\",\"3498\"]]"); + p = add_epsg_def (filter, first, last, 3499, "epsg", 3499, + "NAD83(NSRS2007) / California zone 6"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000"); + add_proj4text (p, 2, + " +y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 3, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / California zone 6\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",33.88333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",32.78333333333333],PARAME"); + add_srs_wkt (p, 10, + "TER[\"latitude_of_origin\",32.16666666666666],PARAMETER["); + add_srs_wkt (p, 11, + "\"central_meridian\",-116.25],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 12, + ",2000000],PARAMETER[\"false_northing\",500000],UNIT[\"me"); + add_srs_wkt (p, 13, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 14, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3499\"]]"); + p = add_epsg_def (filter, first, last, 3500, "epsg", 3500, + "NAD83(NSRS2007) / California zone 6 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000"); + add_proj4text (p, 2, + ".0001016 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0,"); + add_proj4text (p, 3, + "0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / California zone 6 (ftUS)\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); + add_srs_wkt (p, 2, + "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 3, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",33.8833333333333"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"standard_parallel_2\",32.78333333333333],"); + add_srs_wkt (p, 10, + "PARAMETER[\"latitude_of_origin\",32.16666666666666],PARA"); + add_srs_wkt (p, 11, + "METER[\"central_meridian\",-116.25],PARAMETER[\"false_ea"); + add_srs_wkt (p, 12, + "sting\",6561666.667],PARAMETER[\"false_northing\",164041"); + add_srs_wkt (p, 13, + "6.667],UNIT[\"US survey foot\",0.3048006096012192,AUTHOR"); + add_srs_wkt (p, 14, + "ITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 15, + "H],AUTHORITY[\"EPSG\",\"3500\"]]"); + p = add_epsg_def (filter, first, last, 3501, "epsg", 3501, + "NAD83(NSRS2007) / Colorado Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); + add_proj4text (p, 1, + "3334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +el"); + add_proj4text (p, 2, + "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Colorado Central\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_1\",39.75],PARAMETER[\"stan"); + add_srs_wkt (p, 9, + "dard_parallel_2\",38.45],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",37.83333333333334],PARAMETER[\"central_meridian\",-105."); + add_srs_wkt (p, 11, + "5],PARAMETER[\"false_easting\",914401.8289],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",304800.6096],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 14, + "AUTHORITY[\"EPSG\",\"3501\"]]"); + p = add_epsg_def (filter, first, last, 3502, "epsg", 3502, + "NAD83(NSRS2007) / Colorado Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); + add_proj4text (p, 1, + "3334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.60"); + add_proj4text (p, 2, + "96012192 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-f"); + add_proj4text (p, 3, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Colorado Central (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); + add_srs_wkt (p, 2, + "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); + add_srs_wkt (p, 3, + ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 5, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 6, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",39.75],PARAMETER"); + add_srs_wkt (p, 9, + "[\"standard_parallel_2\",38.45],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 10, + "origin\",37.83333333333334],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 11, + "\",-105.5],PARAMETER[\"false_easting\",3000000],PARAMETE"); + add_srs_wkt (p, 12, + "R[\"false_northing\",1000000],UNIT[\"US survey foot\",0."); + add_srs_wkt (p, 13, + "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 14, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3502\"]]"); + p = add_epsg_def (filter, first, last, 3503, "epsg", 3503, + "NAD83(NSRS2007) / Colorado North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 3, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Colorado North\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",40.78333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",39.71666666666667],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",39.33333333333334],PARAMETER[\"c"); + add_srs_wkt (p, 11, + "entral_meridian\",-105.5],PARAMETER[\"false_easting\",91"); + add_srs_wkt (p, 12, + "4401.8289],PARAMETER[\"false_northing\",304800.6096],UNI"); + add_srs_wkt (p, 13, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 14, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3503\"]]"); + p = add_epsg_def (filter, first, last, 3504, "epsg", 3504, + "NAD83(NSRS2007) / Colorado North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0"); + add_proj4text (p, 3, + ",0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Colorado North (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",40.78333333333333]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",39.71666666666667],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",39.33333333333334],PARAME"); + add_srs_wkt (p, 11, + "TER[\"central_meridian\",-105.5],PARAMETER[\"false_easti"); + add_srs_wkt (p, 12, + "ng\",3000000],PARAMETER[\"false_northing\",1000000],UNIT"); + add_srs_wkt (p, 13, + "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 15, + "[\"EPSG\",\"3504\"]]"); + p = add_epsg_def (filter, first, last, 3505, "epsg", 3505, + "NAD83(NSRS2007) / Colorado South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "289 +y_0=304800.6096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 3, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Colorado South\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",38.43333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",37.23333333333333],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",36.66666666666666],PARAMETER[\"c"); + add_srs_wkt (p, 11, + "entral_meridian\",-105.5],PARAMETER[\"false_easting\",91"); + add_srs_wkt (p, 12, + "4401.8289],PARAMETER[\"false_northing\",304800.6096],UNI"); + add_srs_wkt (p, 13, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 14, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3505\"]]"); + p = add_epsg_def (filter, first, last, 3506, "epsg", 3506, + "NAD83(NSRS2007) / Colorado South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "288036576 +y_0=304800.6096012192 +ellps=GRS80 +towgs84=0"); + add_proj4text (p, 3, + ",0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Colorado South (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",38.43333333333333]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",37.23333333333333],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",36.66666666666666],PARAME"); + add_srs_wkt (p, 11, + "TER[\"central_meridian\",-105.5],PARAMETER[\"false_easti"); + add_srs_wkt (p, 12, + "ng\",3000000],PARAMETER[\"false_northing\",1000000],UNIT"); + add_srs_wkt (p, 13, + "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 15, + "[\"EPSG\",\"3506\"]]"); + p = add_epsg_def (filter, first, last, 3507, "epsg", 3507, + "NAD83(NSRS2007) / Connecticut"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); + add_proj4text (p, 1, + ".83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=1524"); + add_proj4text (p, 2, + "00.3048 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 3, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Connecticut\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_1\",41.86666666666667],PARAMETER"); + add_srs_wkt (p, 9, + "[\"standard_parallel_2\",41.2],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 10, + "rigin\",40.83333333333334],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 11, + ",-72.75],PARAMETER[\"false_easting\",304800.6096],PARAME"); + add_srs_wkt (p, 12, + "TER[\"false_northing\",152400.3048],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 14, + "ORTH],AUTHORITY[\"EPSG\",\"3507\"]]"); + p = add_epsg_def (filter, first, last, 3508, "epsg", 3508, + "NAD83(NSRS2007) / Connecticut (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); + add_proj4text (p, 1, + ".83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_"); + add_proj4text (p, 2, + "0=152400.3048006096 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 3, + "+units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Connecticut (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",41.86666666666667],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",41.2],PARAMETER[\"latitud"); + add_srs_wkt (p, 10, + "e_of_origin\",40.83333333333334],PARAMETER[\"central_mer"); + add_srs_wkt (p, 11, + "idian\",-72.75],PARAMETER[\"false_easting\",1000000],PAR"); + add_srs_wkt (p, 12, + "AMETER[\"false_northing\",500000],UNIT[\"US survey foot\""); + add_srs_wkt (p, 13, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 14, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3508\"]"); + add_srs_wkt (p, 15, + "]"); + p = add_epsg_def (filter, first, last, 3509, "epsg", 3509, + "NAD83(NSRS2007) / Delaware"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); + add_proj4text (p, 1, + "995 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Delaware\",GEOGCS[\"NAD83(NSR"); + add_srs_wkt (p, 1, + "S2007)\",DATUM[\"NAD83_National_Spatial_Reference_System"); + add_srs_wkt (p, 2, + "_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",38],PARAMETER[\"central_meridian\",-75.4"); + add_srs_wkt (p, 9, + "1666666666667],PARAMETER[\"scale_factor\",0.999995],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",200000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 12, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "509\"]]"); + p = add_epsg_def (filter, first, last, 3510, "epsg", 3510, + "NAD83(NSRS2007) / Delaware (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); + add_proj4text (p, 1, + "995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Delaware (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",38],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "-75.41666666666667],PARAMETER[\"scale_factor\",0.999995]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_easting\",656166.667],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 12, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 13, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3510\"]]"); + p = add_epsg_def (filter, first, last, 3511, "epsg", 3511, + "NAD83(NSRS2007) / Florida East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Florida East\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",24.33333333333333],PARAMETER[\"centr"); + add_srs_wkt (p, 9, + "al_meridian\",-81],PARAMETER[\"scale_factor\",0.99994117"); + add_srs_wkt (p, 10, + "7],PARAMETER[\"false_easting\",200000],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 12, + "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"3511\"]]"); + p = add_epsg_def (filter, first, last, 3512, "epsg", 3512, + "NAD83(NSRS2007) / Florida East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs"); + add_proj4text (p, 2, + "84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Florida East (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",24.33333333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"central_meridian\",-81],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 10, + "99941177],PARAMETER[\"false_easting\",656166.667],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); + add_srs_wkt (p, 12, + "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3512\"]]"); + p = add_epsg_def (filter, first, last, 3513, "epsg", 3513, + "NAD83(NSRS2007) / Florida GDL Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_"); + add_proj4text (p, 1, + "0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Florida GDL Albers\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"standard_parallel_1\",24],PARAMETER[\"standard_p"); + add_srs_wkt (p, 9, + "arallel_2\",31.5],PARAMETER[\"latitude_of_center\",24],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"longitude_of_center\",-84],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "easting\",400000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 12, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 13, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3513\"]]"); + p = add_epsg_def (filter, first, last, 3514, "epsg", 3514, + "NAD83(NSRS2007) / Florida North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); + add_proj4text (p, 1, + "9 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Florida North\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"standard_parallel_1\",30.75],PARAMETER[\"standar"); + add_srs_wkt (p, 9, + "d_parallel_2\",29.58333333333333],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 10, + "f_origin\",29],PARAMETER[\"central_meridian\",-84.5],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",600000],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 13, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "3514\"]]"); + p = add_epsg_def (filter, first, last, 3515, "epsg", 3515, + "NAD83(NSRS2007) / Florida North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); + add_proj4text (p, 1, + "9 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Florida North (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",30.75],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "tandard_parallel_2\",29.58333333333333],PARAMETER[\"lati"); + add_srs_wkt (p, 10, + "tude_of_origin\",29],PARAMETER[\"central_meridian\",-84."); + add_srs_wkt (p, 11, + "5],PARAMETER[\"false_easting\",1968500],PARAMETER[\"fals"); + add_srs_wkt (p, 12, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 13, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"3515\"]]"); + p = add_epsg_def (filter, first, last, 3516, "epsg", 3516, + "NAD83(NSRS2007) / Florida West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Florida West\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",24.33333333333333],PARAMETER[\"centr"); + add_srs_wkt (p, 9, + "al_meridian\",-82],PARAMETER[\"scale_factor\",0.99994117"); + add_srs_wkt (p, 10, + "7],PARAMETER[\"false_easting\",200000],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 12, + "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"3516\"]]"); + p = add_epsg_def (filter, first, last, 3517, "epsg", 3517, + "NAD83(NSRS2007) / Florida West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs"); + add_proj4text (p, 2, + "84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Florida West (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",24.33333333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"central_meridian\",-82],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 10, + "99941177],PARAMETER[\"false_easting\",656166.667],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); + add_srs_wkt (p, 12, + "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3517\"]]"); + p = add_epsg_def (filter, first, last, 3518, "epsg", 3518, + "NAD83(NSRS2007) / Georgia East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Georgia East\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",30],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "82.16666666666667],PARAMETER[\"scale_factor\",0.9999],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",200000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3518\"]]"); + p = add_epsg_def (filter, first, last, 3519, "epsg", 3519, + "NAD83(NSRS2007) / Georgia East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +towgs84=0,"); + add_proj4text (p, 2, + "0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Georgia East (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",30],PARAMETER[\"central_merid"); + add_srs_wkt (p, 9, + "ian\",-82.16666666666667],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 10, + "999],PARAMETER[\"false_easting\",656166.667],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 12, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3519\"]]"); + p = add_epsg_def (filter, first, last, 3520, "epsg", 3520, + "NAD83(NSRS2007) / Georgia West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Georgia West\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",30],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "84.16666666666667],PARAMETER[\"scale_factor\",0.9999],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",700000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3520\"]]"); + p = add_epsg_def (filter, first, last, 3521, "epsg", 3521, + "NAD83(NSRS2007) / Georgia West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84=0,"); + add_proj4text (p, 2, + "0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Georgia West (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",30],PARAMETER[\"central_merid"); + add_srs_wkt (p, 9, + "ian\",-84.16666666666667],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 10, + "999],PARAMETER[\"false_easting\",2296583.333],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_northing\",0],UNIT[\"US survey foot\",0.30480060"); + add_srs_wkt (p, 12, + "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); + add_srs_wkt (p, 13, + "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3521\"]]"); + p = add_epsg_def (filter, first, last, 3522, "epsg", 3522, + "NAD83(NSRS2007) / Idaho Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); + add_proj4text (p, 1, + "99473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Idaho Central\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",41.66666666666666],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",-114],PARAMETER[\"scale_factor\",0.999947"); + add_srs_wkt (p, 10, + "368],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 12, + "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"3522\"]]"); + p = add_epsg_def (filter, first, last, 3523, "epsg", 3523, + "NAD83(NSRS2007) / Idaho Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); + add_proj4text (p, 1, + "99473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS8"); + add_proj4text (p, 2, + "0 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Idaho Central (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",41.66666666666666],PARAMETER"); + add_srs_wkt (p, 9, + "[\"central_meridian\",-114],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 10, + ".999947368],PARAMETER[\"false_easting\",1640416.667],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); + add_srs_wkt (p, 12, + "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3523\"]]"); + p = add_epsg_def (filter, first, last, 3524, "epsg", 3524, + "NAD83(NSRS2007) / Idaho East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); + add_proj4text (p, 1, + "666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Idaho East\",GEOGCS[\"NAD83(N"); + add_srs_wkt (p, 1, + "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",41.66666666666666],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",-112.1666666666667],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 10, + "\",0.999947368],PARAMETER[\"false_easting\",200000],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"3524\"]]"); + p = add_epsg_def (filter, first, last, 3525, "epsg", 3525, + "NAD83(NSRS2007) / Idaho East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); + add_proj4text (p, 1, + "666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); + add_proj4text (p, 3, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Idaho East (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",41.66666666666666],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",-112.1666666666667],PARAMETER[\"scale"); + add_srs_wkt (p, 10, + "_factor\",0.999947368],PARAMETER[\"false_easting\",65616"); + add_srs_wkt (p, 11, + "6.667],PARAMETER[\"false_northing\",0],UNIT[\"US survey "); + add_srs_wkt (p, 12, + "foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],"); + add_srs_wkt (p, 13, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "3525\"]]"); + p = add_epsg_def (filter, first, last, 3526, "epsg", 3526, + "NAD83(NSRS2007) / Idaho West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); + add_proj4text (p, 1, + ".999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 2, + "0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Idaho West\",GEOGCS[\"NAD83(N"); + add_srs_wkt (p, 1, + "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",41.66666666666666],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",-115.75],PARAMETER[\"scale_factor\",0.999933"); + add_srs_wkt (p, 10, + "333],PARAMETER[\"false_easting\",800000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 12, + "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"3526\"]]"); + p = add_epsg_def (filter, first, last, 3527, "epsg", 3527, + "NAD83(NSRS2007) / Idaho West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); + add_proj4text (p, 1, + ".999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Idaho West (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",41.66666666666666],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",-115.75],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 10, + ".999933333],PARAMETER[\"false_easting\",2624666.667],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); + add_srs_wkt (p, 12, + "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3527\"]]"); + p = add_epsg_def (filter, first, last, 3528, "epsg", 3528, + "NAD83(NSRS2007) / Illinois East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); + add_proj4text (p, 1, + "333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Illinois East\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",36.66666666666666],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",-88.33333333333333],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 10, + "tor\",0.999975],PARAMETER[\"false_easting\",300000],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"3528\"]]"); + p = add_epsg_def (filter, first, last, 3529, "epsg", 3529, + "NAD83(NSRS2007) / Illinois East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); + add_proj4text (p, 1, + "333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); + add_proj4text (p, 3, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Illinois East (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",36.66666666666666],PARAMETER"); + add_srs_wkt (p, 9, + "[\"central_meridian\",-88.33333333333333],PARAMETER[\"sc"); + add_srs_wkt (p, 10, + "ale_factor\",0.999975],PARAMETER[\"false_easting\",98425"); + add_srs_wkt (p, 11, + "0.0000000002],PARAMETER[\"false_northing\",0],UNIT[\"US "); + add_srs_wkt (p, 12, + "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 13, + "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 14, + "SG\",\"3529\"]]"); + p = add_epsg_def (filter, first, last, 3530, "epsg", 3530, + "NAD83(NSRS2007) / Illinois West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Illinois West\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",36.66666666666666],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",-90.16666666666667],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 10, + "tor\",0.999941177],PARAMETER[\"false_easting\",700000],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"3530\"]]"); + p = add_epsg_def (filter, first, last, 3531, "epsg", 3531, + "NAD83(NSRS2007) / Illinois West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Illinois West (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",36.66666666666666],PARAMETER"); + add_srs_wkt (p, 9, + "[\"central_meridian\",-90.16666666666667],PARAMETER[\"sc"); + add_srs_wkt (p, 10, + "ale_factor\",0.999941177],PARAMETER[\"false_easting\",22"); + add_srs_wkt (p, 11, + "96583.333300001],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 12, + "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"3531\"]]"); + p = add_epsg_def (filter, first, last, 3532, "epsg", 3532, + "NAD83(NSRS2007) / Indiana East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +towgs84=0"); + add_proj4text (p, 2, + ",0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Indiana East\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",37.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-85.66666666666667],PARAMETER[\"scale_factor\",0.999966"); + add_srs_wkt (p, 10, + "667],PARAMETER[\"false_easting\",100000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",250000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"3532\"]]"); + p = add_epsg_def (filter, first, last, 3533, "epsg", 3533, + "NAD83(NSRS2007) / Indiana East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +"); + add_proj4text (p, 2, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Indiana East (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",37.5],PARAMETER[\"central_mer"); + add_srs_wkt (p, 9, + "idian\",-85.66666666666667],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 10, + ".999966667],PARAMETER[\"false_easting\",328083.333],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",820208.3330000002],UNIT[\"US su"); + add_srs_wkt (p, 12, + "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); + add_srs_wkt (p, 13, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 14, + "\",\"3533\"]]"); + p = add_epsg_def (filter, first, last, 3534, "epsg", 3534, + "NAD83(NSRS2007) / Indiana West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +towgs84=0"); + add_proj4text (p, 2, + ",0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Indiana West\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",37.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-87.08333333333333],PARAMETER[\"scale_factor\",0.999966"); + add_srs_wkt (p, 10, + "667],PARAMETER[\"false_easting\",900000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",250000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"3534\"]]"); + p = add_epsg_def (filter, first, last, 3535, "epsg", 3535, + "NAD83(NSRS2007) / Indiana West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80"); + add_proj4text (p, 2, + " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Indiana West (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",37.5],PARAMETER[\"central_mer"); + add_srs_wkt (p, 9, + "idian\",-87.08333333333333],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 10, + ".999966667],PARAMETER[\"false_easting\",2952750],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_northing\",820208.3330000002],UNIT[\"US surve"); + add_srs_wkt (p, 12, + "y foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]"); + add_srs_wkt (p, 13, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"3535\"]]"); + p = add_epsg_def (filter, first, last, 3536, "epsg", 3536, + "NAD83(NSRS2007) / Iowa North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +"); + add_proj4text (p, 2, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Iowa North\",GEOGCS[\"NAD83(N"); + add_srs_wkt (p, 1, + "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_1\",43.26666666666667],PARAMETER["); + add_srs_wkt (p, 9, + "\"standard_parallel_2\",42.06666666666667],PARAMETER[\"l"); + add_srs_wkt (p, 10, + "atitude_of_origin\",41.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 11, + ",-93.5],PARAMETER[\"false_easting\",1500000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 14, + "ORITY[\"EPSG\",\"3536\"]]"); + p = add_epsg_def (filter, first, last, 3537, "epsg", 3537, + "NAD83(NSRS2007) / Iowa North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.99"); + add_proj4text (p, 2, + "99898402 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-f"); + add_proj4text (p, 3, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Iowa North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",43.26666666666667],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",42.06666666666667],PARAME"); + add_srs_wkt (p, 10, + "TER[\"latitude_of_origin\",41.5],PARAMETER[\"central_mer"); + add_srs_wkt (p, 11, + "idian\",-93.5],PARAMETER[\"false_easting\",4921250],PARA"); + add_srs_wkt (p, 12, + "METER[\"false_northing\",3280833.333300001],UNIT[\"US su"); + add_srs_wkt (p, 13, + "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); + add_srs_wkt (p, 14, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 15, + "\",\"3537\"]]"); + p = add_epsg_def (filter, first, last, 3538, "epsg", 3538, + "NAD83(NSRS2007) / Iowa South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); + add_proj4text (p, 1, + "667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Iowa South\",GEOGCS[\"NAD83(N"); + add_srs_wkt (p, 1, + "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_1\",41.78333333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"standard_parallel_2\",40.61666666666667],PARAMETER[\"l"); + add_srs_wkt (p, 10, + "atitude_of_origin\",40],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 11, + "93.5],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"3538\"]]"); + p = add_epsg_def (filter, first, last, 3539, "epsg", 3539, + "NAD83(NSRS2007) / Iowa South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); + add_proj4text (p, 1, + "667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +"); + add_proj4text (p, 2, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Iowa South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",41.78333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",40.61666666666667],PARAME"); + add_srs_wkt (p, 10, + "TER[\"latitude_of_origin\",40],PARAMETER[\"central_merid"); + add_srs_wkt (p, 11, + "ian\",-93.5],PARAMETER[\"false_easting\",1640416.6667],P"); + add_srs_wkt (p, 12, + "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); + add_srs_wkt (p, 13, + ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); + add_srs_wkt (p, 14, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3539\"]]"); + p = add_epsg_def (filter, first, last, 3540, "epsg", 3540, + "NAD83(NSRS2007) / Kansas North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Kansas North\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_1\",39.78333333333333],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"standard_parallel_2\",38.71666666666667],PARAMETER[\""); + add_srs_wkt (p, 10, + "latitude_of_origin\",38.33333333333334],PARAMETER[\"cent"); + add_srs_wkt (p, 11, + "ral_meridian\",-98],PARAMETER[\"false_easting\",400000],"); + add_srs_wkt (p, 12, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 14, + "],AUTHORITY[\"EPSG\",\"3540\"]]"); + p = add_epsg_def (filter, first, last, 3541, "epsg", 3541, + "NAD83(NSRS2007) / Kansas North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.9999"); + add_proj4text (p, 2, + "8984 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=u"); + add_proj4text (p, 3, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Kansas North (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",39.78333333333333],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"standard_parallel_2\",38.71666666666667],PARA"); + add_srs_wkt (p, 10, + "METER[\"latitude_of_origin\",38.33333333333334],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"central_meridian\",-98],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 12, + "1312333.3333],PARAMETER[\"false_northing\",0],UNIT[\"US "); + add_srs_wkt (p, 13, + "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 14, + "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 15, + "SG\",\"3541\"]]"); + p = add_epsg_def (filter, first, last, 3542, "epsg", 3542, + "NAD83(NSRS2007) / Kansas South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y"); + add_proj4text (p, 2, + "_0=400000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Kansas South\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_1\",38.56666666666667],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"standard_parallel_2\",37.26666666666667],PARAMETER[\""); + add_srs_wkt (p, 10, + "latitude_of_origin\",36.66666666666666],PARAMETER[\"cent"); + add_srs_wkt (p, 11, + "ral_meridian\",-98.5],PARAMETER[\"false_easting\",400000"); + add_srs_wkt (p, 12, + "],PARAMETER[\"false_northing\",400000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"3542\"]]"); + p = add_epsg_def (filter, first, last, 3543, "epsg", 3543, + "NAD83(NSRS2007) / Kansas South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99"); + add_proj4text (p, 2, + "998984 +y_0=399999.99998984 +ellps=GRS80 +towgs84=0,0,0,"); + add_proj4text (p, 3, + "0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Kansas South (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",38.56666666666667],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"standard_parallel_2\",37.26666666666667],PARA"); + add_srs_wkt (p, 10, + "METER[\"latitude_of_origin\",36.66666666666666],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"central_meridian\",-98.5],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 12, + ",1312333.3333],PARAMETER[\"false_northing\",1312333.3333"); + add_srs_wkt (p, 13, + "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 15, + "HORITY[\"EPSG\",\"3543\"]]"); + p = add_epsg_def (filter, first, last, 3544, "epsg", 3544, + "NAD83(NSRS2007) / Kentucky North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); + add_proj4text (p, 1, + "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps="); + add_proj4text (p, 2, + "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Kentucky North\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",37.96666666666667],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",38.96666666666667],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",37.5],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 11, + "an\",-84.25],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 12, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 14, + "RITY[\"EPSG\",\"3544\"]]"); + p = add_epsg_def (filter, first, last, 3545, "epsg", 3545, + "NAD83(NSRS2007) / Kentucky North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); + add_proj4text (p, 1, + "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_"); + add_proj4text (p, 2, + "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no"); + add_proj4text (p, 3, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Kentucky North (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",37.96666666666667]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",38.96666666666667],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",37.5],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-84.25],PARAMETER[\"false_easting\",1640416."); + add_srs_wkt (p, 12, + "667],PARAMETER[\"false_northing\",0],UNIT[\"US survey fo"); + add_srs_wkt (p, 13, + "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); + add_srs_wkt (p, 14, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"35"); + add_srs_wkt (p, 15, + "45\"]]"); + p = add_epsg_def (filter, first, last, 3546, "epsg", 3546, + "NAD83(NSRS2007) / Kentucky Single Zone"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 "); + add_proj4text (p, 2, + "+y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 3, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Kentucky Single Zone\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",37.08333333333334],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"standard_parallel_2\",38.66666666666666],PARA"); + add_srs_wkt (p, 10, + "METER[\"latitude_of_origin\",36.33333333333334],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"central_meridian\",-85.75],PARAMETER[\"false_easting"); + add_srs_wkt (p, 12, + "\",1500000],PARAMETER[\"false_northing\",1000000],UNIT[\""); + add_srs_wkt (p, 13, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 14, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3546\"]]"); + p = add_epsg_def (filter, first, last, 3547, "epsg", 3547, + "NAD83(NSRS2007) / Kentucky Single Zone (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 "); + add_proj4text (p, 2, + "+y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 3, + ",0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Kentucky Single Zone (ftUS)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spati"); + add_srs_wkt (p, 2, + "al_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 3, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 4, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 8, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",37.083333333"); + add_srs_wkt (p, 9, + "33334],PARAMETER[\"standard_parallel_2\",38.666666666666"); + add_srs_wkt (p, 10, + "66],PARAMETER[\"latitude_of_origin\",36.33333333333334],"); + add_srs_wkt (p, 11, + "PARAMETER[\"central_meridian\",-85.75],PARAMETER[\"false"); + add_srs_wkt (p, 12, + "_easting\",4921250],PARAMETER[\"false_northing\",3280833"); + add_srs_wkt (p, 13, + ".333],UNIT[\"US survey foot\",0.3048006096012192,AUTHORI"); + add_srs_wkt (p, 14, + "TY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 15, + "],AUTHORITY[\"EPSG\",\"3547\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_15.c b/src/spatialite/src/srsinit/epsg_inlined_15.c new file mode 100644 index 0000000..93c9ea9 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_15.c @@ -0,0 +1,3828 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_15 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 3548, "epsg", 3548, + "NAD83(NSRS2007) / Kentucky South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +"); + add_proj4text (p, 2, + "y_0=500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Kentucky South\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",37.93333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",36.73333333333333],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",36.33333333333334],PARAMETER[\"c"); + add_srs_wkt (p, 11, + "entral_meridian\",-85.75],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 12, + "0000],PARAMETER[\"false_northing\",500000],UNIT[\"metre\""); + add_srs_wkt (p, 13, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"3548\"]]"); + p = add_epsg_def (filter, first, last, 3549, "epsg", 3549, + "NAD83(NSRS2007) / Kentucky South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0"); + add_proj4text (p, 2, + "001016001 +y_0=500000.0001016001 +ellps=GRS80 +towgs84=0"); + add_proj4text (p, 3, + ",0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Kentucky South (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",37.93333333333333]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",36.73333333333333],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",36.33333333333334],PARAME"); + add_srs_wkt (p, 11, + "TER[\"central_meridian\",-85.75],PARAMETER[\"false_easti"); + add_srs_wkt (p, 12, + "ng\",1640416.667],PARAMETER[\"false_northing\",1640416.6"); + add_srs_wkt (p, 13, + "67],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 15, + "AUTHORITY[\"EPSG\",\"3549\"]]"); + p = add_epsg_def (filter, first, last, 3550, "epsg", 3550, + "NAD83(NSRS2007) / Louisiana North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps="); + add_proj4text (p, 2, + "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Louisiana North\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",32.66666666666666],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",31.16666666666667],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",30.5],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 11, + "an\",-92.5],PARAMETER[\"false_easting\",1000000],PARAMET"); + add_srs_wkt (p, 12, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 14, + "RITY[\"EPSG\",\"3550\"]]"); + p = add_epsg_def (filter, first, last, 3551, "epsg", 3551, + "NAD83(NSRS2007) / Louisiana North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); + add_proj4text (p, 3, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Louisiana North (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); + add_srs_wkt (p, 2, + "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); + add_srs_wkt (p, 3, + "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",32.66666666666666]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",31.16666666666667],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",30.5],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-92.5],PARAMETER[\"false_easting\",3280833.3"); + add_srs_wkt (p, 12, + "33300001],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); + add_srs_wkt (p, 13, + "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 14, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 15, + ",\"3551\"]]"); + p = add_epsg_def (filter, first, last, 3552, "epsg", 3552, + "NAD83(NSRS2007) / Louisiana South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91"); + add_proj4text (p, 1, + ".33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +towgs8"); + add_proj4text (p, 2, + "4=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Louisiana South\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",30.7],PARAMETER[\"standar"); + add_srs_wkt (p, 9, + "d_parallel_2\",29.3],PARAMETER[\"latitude_of_origin\",28"); + add_srs_wkt (p, 10, + ".5],PARAMETER[\"central_meridian\",-91.33333333333333],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",1000000],PARAMETER[\"false_no"); + add_srs_wkt (p, 12, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"3552\"]]"); + p = add_epsg_def (filter, first, last, 3553, "epsg", 3553, + "NAD83(NSRS2007) / Louisiana South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91"); + add_proj4text (p, 1, + ".33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Louisiana South (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); + add_srs_wkt (p, 2, + "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); + add_srs_wkt (p, 3, + "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",30.7],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",29.3],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 10, + "in\",28.5],PARAMETER[\"central_meridian\",-91.3333333333"); + add_srs_wkt (p, 11, + "3333],PARAMETER[\"false_easting\",3280833.333300001],PAR"); + add_srs_wkt (p, 12, + "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); + add_srs_wkt (p, 13, + "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 14, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3553\"]]"); + p = add_epsg_def (filter, first, last, 3554, "epsg", 3554, + "NAD83(NSRS2007) / Maine CS2000 Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=5"); + add_proj4text (p, 1, + "00000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Maine CS2000 Central\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",43.5],PARAMETER[\"central_me"); + add_srs_wkt (p, 9, + "ridian\",-69.125],PARAMETER[\"scale_factor\",0.99998],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3554\"]]"); + p = add_epsg_def (filter, first, last, 3555, "epsg", 3555, + "NAD83(NSRS2007) / Maine CS2000 East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0"); + add_proj4text (p, 1, + ".99998 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Maine CS2000 East\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",43.83333333333334],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",-67.875],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 10, + ".99998],PARAMETER[\"false_easting\",700000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"3555\"]]"); + p = add_epsg_def (filter, first, last, 3556, "epsg", 3556, + "NAD83(NSRS2007) / Maine CS2000 West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0"); + add_proj4text (p, 1, + ".99998 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Maine CS2000 West\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",42.83333333333334],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",-70.375],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 10, + ".99998],PARAMETER[\"false_easting\",300000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"3556\"]]"); + p = add_epsg_def (filter, first, last, 3557, "epsg", 3557, + "NAD83(NSRS2007) / Maine East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Maine East\",GEOGCS[\"NAD83(N"); + add_srs_wkt (p, 1, + "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",43.66666666666666],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",-68.5],PARAMETER[\"scale_factor\",0.9999],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",300000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3557\"]]"); + p = add_epsg_def (filter, first, last, 3558, "epsg", 3558, + "NAD83(NSRS2007) / Maine West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Maine West\",GEOGCS[\"NAD83(N"); + add_srs_wkt (p, 1, + "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",42.83333333333334],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",-70.16666666666667],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 10, + "\",0.999966667],PARAMETER[\"false_easting\",900000],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"3558\"]]"); + p = add_epsg_def (filter, first, last, 3559, "epsg", 3559, + "NAD83(NSRS2007) / Maryland"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666"); + add_proj4text (p, 1, + "666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Maryland\",GEOGCS[\"NAD83(NSR"); + add_srs_wkt (p, 1, + "S2007)\",DATUM[\"NAD83_National_Spatial_Reference_System"); + add_srs_wkt (p, 2, + "_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",39.45],PARAMETER[\"standard_par"); + add_srs_wkt (p, 9, + "allel_2\",38.3],PARAMETER[\"latitude_of_origin\",37.6666"); + add_srs_wkt (p, 10, + "6666666666],PARAMETER[\"central_meridian\",-77],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_easting\",400000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 13, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3559\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 3560, "epsg", 3560, + "NAD83 / Utah North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0"); + add_proj4text (p, 2, + "0001016 +y_0=999999.9999898402 +datum=NAD83 +units=us-ft"); + add_proj4text (p, 3, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Utah North (ftUS)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.78"); + add_srs_wkt (p, 8, + "333333333333],PARAMETER[\"standard_parallel_2\",40.71666"); + add_srs_wkt (p, 9, + "666666667],PARAMETER[\"latitude_of_origin\",40.333333333"); + add_srs_wkt (p, 10, + "33334],PARAMETER[\"central_meridian\",-111.5],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",1640416.6667],PARAMETER[\"false_northi"); + add_srs_wkt (p, 12, + "ng\",3280833.333300001],UNIT[\"US survey foot\",0.304800"); + add_srs_wkt (p, 13, + "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); + add_srs_wkt (p, 14, + "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3560\"]]"); + p = add_epsg_def (filter, first, last, 3561, "epsg", 3561, + "Old Hawaiian / Hawaii zone 1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0."); + add_proj4text (p, 1, + "999966667 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +t"); + add_proj4text (p, 2, + "owgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Old Hawaiian / Hawaii zone 1\",GEOGCS[\"Old Haw"); + add_srs_wkt (p, 1, + "aiian\",DATUM[\"Old_Hawaiian\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[61,-285,-181,0,0,0,0],AUTHORITY[\"EPSG\",\"613"); + add_srs_wkt (p, 4, + "5\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4135\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",1"); + add_srs_wkt (p, 8, + "8.83333333333333],PARAMETER[\"central_meridian\",-155.5]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.999966667],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"3561\"]]"); + p = add_epsg_def (filter, first, last, 3562, "epsg", 3562, + "Old Hawaiian / Hawaii zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +ell"); + add_proj4text (p, 2, + "ps=clrk66 +towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no"); + add_proj4text (p, 3, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Old Hawaiian / Hawaii zone 2\",GEOGCS[\"Old Haw"); + add_srs_wkt (p, 1, + "aiian\",DATUM[\"Old_Hawaiian\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[61,-285,-181,0,0,0,0],AUTHORITY[\"EPSG\",\"613"); + add_srs_wkt (p, 4, + "5\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4135\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",2"); + add_srs_wkt (p, 8, + "0.33333333333333],PARAMETER[\"central_meridian\",-156.66"); + add_srs_wkt (p, 9, + "66666666667],PARAMETER[\"scale_factor\",0.999966667],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 13, + "RTH],AUTHORITY[\"EPSG\",\"3562\"]]"); + p = add_epsg_def (filter, first, last, 3563, "epsg", 3563, + "Old Hawaiian / Hawaii zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99"); + add_proj4text (p, 1, + "999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84"); + add_proj4text (p, 2, + "=61,-285,-181,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Old Hawaiian / Hawaii zone 3\",GEOGCS[\"Old Haw"); + add_srs_wkt (p, 1, + "aiian\",DATUM[\"Old_Hawaiian\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[61,-285,-181,0,0,0,0],AUTHORITY[\"EPSG\",\"613"); + add_srs_wkt (p, 4, + "5\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4135\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",2"); + add_srs_wkt (p, 8, + "1.16666666666667],PARAMETER[\"central_meridian\",-158],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",0.99999],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"US"); + add_srs_wkt (p, 11, + " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 12, + "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"3563\"]]"); + p = add_epsg_def (filter, first, last, 3564, "epsg", 3564, + "Old Hawaiian / Hawaii zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0."); + add_proj4text (p, 1, + "99999 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs"); + add_proj4text (p, 2, + "84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Old Hawaiian / Hawaii zone 4\",GEOGCS[\"Old Haw"); + add_srs_wkt (p, 1, + "aiian\",DATUM[\"Old_Hawaiian\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[61,-285,-181,0,0,0,0],AUTHORITY[\"EPSG\",\"613"); + add_srs_wkt (p, 4, + "5\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4135\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",2"); + add_srs_wkt (p, 8, + "1.83333333333333],PARAMETER[\"central_meridian\",-159.5]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.99999],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"3564\"]]"); + p = add_epsg_def (filter, first, last, 3565, "epsg", 3565, + "Old Hawaiian / Hawaii zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=152400.3048006096 +y_0=0 +ellps=clrk66 "); + add_proj4text (p, 2, + "+towgs84=61,-285,-181,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Old Hawaiian / Hawaii zone 5\",GEOGCS[\"Old Haw"); + add_srs_wkt (p, 1, + "aiian\",DATUM[\"Old_Hawaiian\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[61,-285,-181,0,0,0,0],AUTHORITY[\"EPSG\",\"613"); + add_srs_wkt (p, 4, + "5\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4135\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",2"); + add_srs_wkt (p, 8, + "1.66666666666667],PARAMETER[\"central_meridian\",-160.16"); + add_srs_wkt (p, 9, + "66666666667],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 11, + "NIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"3565\"]]"); + p = add_epsg_def (filter, first, last, 3566, "epsg", 3566, + "NAD83 / Utah Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); + add_proj4text (p, 1, + "8.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0"); + add_proj4text (p, 2, + "=2000000.00001016 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Utah Central (ftUS)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40.6"); + add_srs_wkt (p, 8, + "5],PARAMETER[\"standard_parallel_2\",39.01666666666667],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",38.33333333333334],PARA"); + add_srs_wkt (p, 10, + "METER[\"central_meridian\",-111.5],PARAMETER[\"false_eas"); + add_srs_wkt (p, 11, + "ting\",1640416.6667],PARAMETER[\"false_northing\",656166"); + add_srs_wkt (p, 12, + "6.666700001],UNIT[\"US survey foot\",0.3048006096012192,"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"3566\"]]"); + p = add_epsg_def (filter, first, last, 3567, "epsg", 3567, + "NAD83 / Utah South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); + add_proj4text (p, 1, + "6.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0"); + add_proj4text (p, 2, + "=3000000 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Utah South (ftUS)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38.35"); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_2\",37.21666666666667],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"latitude_of_origin\",36.66666666666666],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"central_meridian\",-111.5],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",1640416.6667],PARAMETER[\"false_northing\",9842500"); + add_srs_wkt (p, 12, + ".000000002],UNIT[\"US survey foot\",0.3048006096012192,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"3567\"]]"); + p = add_epsg_def (filter, first, last, 3568, "epsg", 3568, + "NAD83(HARN) / Utah North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0"); + add_proj4text (p, 2, + "0001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0"); + add_proj4text (p, 3, + ",0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Utah North (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",41.78333333333333],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",40.71666666666667],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",40.33333333333334],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 11, + "n\",-111.5],PARAMETER[\"false_easting\",1640416.6667],PA"); + add_srs_wkt (p, 12, + "RAMETER[\"false_northing\",3280833.333300001],UNIT[\"US "); + add_srs_wkt (p, 13, + "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 14, + "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 15, + "SG\",\"3568\"]]"); + p = add_epsg_def (filter, first, last, 3569, "epsg", 3569, + "NAD83(HARN) / Utah Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); + add_proj4text (p, 1, + "8.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0"); + add_proj4text (p, 2, + "=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 3, + "nits=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Utah Central (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",40.65],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 9, + "_2\",39.01666666666667],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",38.33333333333334],PARAMETER[\"central_meridian\",-111."); + add_srs_wkt (p, 11, + "5],PARAMETER[\"false_easting\",1640416.6667],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",6561666.666700001],UNIT[\"US survey foo"); + add_srs_wkt (p, 13, + "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); + add_srs_wkt (p, 14, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"356"); + add_srs_wkt (p, 15, + "9\"]]"); + p = add_epsg_def (filter, first, last, 3570, "epsg", 3570, + "NAD83(HARN) / Utah South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); + add_proj4text (p, 1, + "6.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0"); + add_proj4text (p, 2, + "=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-f"); + add_proj4text (p, 3, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Utah South (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",38.35],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",37.21666666666667],PARAMETER[\"latitude_of_origin\",36."); + add_srs_wkt (p, 10, + "66666666666666],PARAMETER[\"central_meridian\",-111.5],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",1640416.6667],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_northing\",9842500.000000002],UNIT[\"US survey foot\""); + add_srs_wkt (p, 13, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 14, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3570\"]"); + add_srs_wkt (p, 15, + "]"); + p = add_epsg_def (filter, first, last, 3571, "epsg", 3571, + "WGS 84 / North Pole LAEA Bering Sea"); + add_proj4text (p, 0, + "+proj=laea +lat_0=90 +lon_0=180 +x_0=0 +y_0=0 +datum=WGS"); + add_proj4text (p, 1, + "84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / North Pole LAEA Bering Sea\",GEOGCS[\""); + add_srs_wkt (p, 1, + "WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,"); + add_srs_wkt (p, 2, + "298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PR"); + add_srs_wkt (p, 6, + "OJECTION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"l"); + add_srs_wkt (p, 7, + "atitude_of_center\",90],PARAMETER[\"longitude_of_center\""); + add_srs_wkt (p, 8, + ",180],PARAMETER[\"false_easting\",0],PARAMETER[\"false_n"); + add_srs_wkt (p, 9, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 10, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"3571\"]]"); + p = add_epsg_def (filter, first, last, 3572, "epsg", 3572, + "WGS 84 / North Pole LAEA Alaska"); + add_proj4text (p, 0, + "+proj=laea +lat_0=90 +lon_0=-150 +x_0=0 +y_0=0 +datum=WG"); + add_proj4text (p, 1, + "S84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / North Pole LAEA Alaska\",GEOGCS[\"WGS "); + add_srs_wkt (p, 1, + "84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298."); + add_srs_wkt (p, 2, + "257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJEC"); + add_srs_wkt (p, 6, + "TION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_center\",90],PARAMETER[\"longitude_of_center\",-1"); + add_srs_wkt (p, 8, + "50],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nor"); + add_srs_wkt (p, 9, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 10, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"3572\"]]"); + p = add_epsg_def (filter, first, last, 3573, "epsg", 3573, + "WGS 84 / North Pole LAEA Canada"); + add_proj4text (p, 0, + "+proj=laea +lat_0=90 +lon_0=-100 +x_0=0 +y_0=0 +datum=WG"); + add_proj4text (p, 1, + "S84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / North Pole LAEA Canada\",GEOGCS[\"WGS "); + add_srs_wkt (p, 1, + "84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298."); + add_srs_wkt (p, 2, + "257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJEC"); + add_srs_wkt (p, 6, + "TION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_center\",90],PARAMETER[\"longitude_of_center\",-1"); + add_srs_wkt (p, 8, + "00],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nor"); + add_srs_wkt (p, 9, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 10, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"3573\"]]"); + p = add_epsg_def (filter, first, last, 3574, "epsg", 3574, + "WGS 84 / North Pole LAEA Atlantic"); + add_proj4text (p, 0, + "+proj=laea +lat_0=90 +lon_0=-40 +x_0=0 +y_0=0 +datum=WGS"); + add_proj4text (p, 1, + "84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / North Pole LAEA Atlantic\",GEOGCS[\"WG"); + add_srs_wkt (p, 1, + "S 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,29"); + add_srs_wkt (p, 2, + "8.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"lati"); + add_srs_wkt (p, 7, + "tude_of_center\",90],PARAMETER[\"longitude_of_center\",-"); + add_srs_wkt (p, 8, + "40],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nor"); + add_srs_wkt (p, 9, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 10, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"3574\"]]"); + p = add_epsg_def (filter, first, last, 3575, "epsg", 3575, + "WGS 84 / North Pole LAEA Europe"); + add_proj4text (p, 0, + "+proj=laea +lat_0=90 +lon_0=10 +x_0=0 +y_0=0 +datum=WGS8"); + add_proj4text (p, 1, + "4 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / North Pole LAEA Europe\",GEOGCS[\"WGS "); + add_srs_wkt (p, 1, + "84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298."); + add_srs_wkt (p, 2, + "257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJEC"); + add_srs_wkt (p, 6, + "TION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_center\",90],PARAMETER[\"longitude_of_center\",10"); + add_srs_wkt (p, 8, + "],PARAMETER[\"false_easting\",0],PARAMETER[\"false_north"); + add_srs_wkt (p, 9, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 10, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "3575\"]]"); + p = add_epsg_def (filter, first, last, 3576, "epsg", 3576, + "WGS 84 / North Pole LAEA Russia"); + add_proj4text (p, 0, + "+proj=laea +lat_0=90 +lon_0=90 +x_0=0 +y_0=0 +datum=WGS8"); + add_proj4text (p, 1, + "4 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / North Pole LAEA Russia\",GEOGCS[\"WGS "); + add_srs_wkt (p, 1, + "84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298."); + add_srs_wkt (p, 2, + "257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJEC"); + add_srs_wkt (p, 6, + "TION[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_center\",90],PARAMETER[\"longitude_of_center\",90"); + add_srs_wkt (p, 8, + "],PARAMETER[\"false_easting\",0],PARAMETER[\"false_north"); + add_srs_wkt (p, 9, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 10, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "3576\"]]"); + p = add_epsg_def (filter, first, last, 3577, "epsg", 3577, + "GDA94 / Australian Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=-18 +lat_2=-36 +lat_0=0 +lon_0=132 +x_0"); + add_proj4text (p, 1, + "=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 2, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / Australian Albers\",GEOGCS[\"GDA94\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Alber"); + add_srs_wkt (p, 7, + "s_Conic_Equal_Area\"],PARAMETER[\"standard_parallel_1\","); + add_srs_wkt (p, 8, + "-18],PARAMETER[\"standard_parallel_2\",-36],PARAMETER[\""); + add_srs_wkt (p, 9, + "latitude_of_center\",0],PARAMETER[\"longitude_of_center\""); + add_srs_wkt (p, 10, + ",132],PARAMETER[\"false_easting\",0],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"3577\"]]"); + p = add_epsg_def (filter, first, last, 3578, "epsg", 3578, + "NAD83 / Yukon Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +"); + add_proj4text (p, 1, + "lon_0=-132.5 +x_0=500000 +y_0=500000 +datum=NAD83 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Yukon Albers\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Albers_Conic_Equal_A"); + add_srs_wkt (p, 7, + "rea\"],PARAMETER[\"standard_parallel_1\",61.666666666666"); + add_srs_wkt (p, 8, + "66],PARAMETER[\"standard_parallel_2\",68],PARAMETER[\"la"); + add_srs_wkt (p, 9, + "titude_of_center\",59],PARAMETER[\"longitude_of_center\""); + add_srs_wkt (p, 10, + ",-132.5],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"3578\"]]"); + p = add_epsg_def (filter, first, last, 3579, "epsg", 3579, + "NAD83(CSRS) / Yukon Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=61.66666666666666 +lat_2=68 +lat_0=59 +"); + add_proj4text (p, 1, + "lon_0=-132.5 +x_0=500000 +y_0=500000 +ellps=GRS80 +towgs"); + add_proj4text (p, 2, + "84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / Yukon Albers\",GEOGCS[\"NAD83(CSR"); + add_srs_wkt (p, 1, + "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Albers_Conic_Equal_Area\"],PARAMETER[\"standard_p"); + add_srs_wkt (p, 8, + "arallel_1\",61.66666666666666],PARAMETER[\"standard_para"); + add_srs_wkt (p, 9, + "llel_2\",68],PARAMETER[\"latitude_of_center\",59],PARAME"); + add_srs_wkt (p, 10, + "TER[\"longitude_of_center\",-132.5],PARAMETER[\"false_ea"); + add_srs_wkt (p, 11, + "sting\",500000],PARAMETER[\"false_northing\",500000],UNI"); + add_srs_wkt (p, 12, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 13, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "3579\"]]"); + p = add_epsg_def (filter, first, last, 3580, "epsg", 3580, + "NAD83 / NWT Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0="); + add_proj4text (p, 1, + "0 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / NWT Lambert\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); + add_srs_wkt (p, 7, + "nic_2SP\"],PARAMETER[\"standard_parallel_1\",62],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_2\",70],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 9, + "rigin\",0],PARAMETER[\"central_meridian\",-112],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",0],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 12, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"3580\"]]"); + p = add_epsg_def (filter, first, last, 3581, "epsg", 3581, + "NAD83(CSRS) / NWT Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=62 +lat_2=70 +lat_0=0 +lon_0=-112 +x_0="); + add_proj4text (p, 1, + "0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); + add_proj4text (p, 2, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / NWT Lambert\",GEOGCS[\"NAD83(CSRS"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",62],PARAMETER[\"standard_parallel_2\",70],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 10, + "meridian\",-112],PARAMETER[\"false_easting\",0],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); + add_srs_wkt (p, 13, + "NORTH],AUTHORITY[\"EPSG\",\"3581\"]]"); + p = add_epsg_def (filter, first, last, 3582, "epsg", 3582, + "NAD83(NSRS2007) / Maryland (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666"); + add_proj4text (p, 1, + "666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS8"); + add_proj4text (p, 2, + "0 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Maryland (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",39.45],PARAMETER[\"standa"); + add_srs_wkt (p, 9, + "rd_parallel_2\",38.3],PARAMETER[\"latitude_of_origin\",3"); + add_srs_wkt (p, 10, + "7.66666666666666],PARAMETER[\"central_meridian\",-77],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_easting\",1312333.333],PARAMETER[\"false"); + add_srs_wkt (p, 12, + "_northing\",0],UNIT[\"US survey foot\",0.304800609601219"); + add_srs_wkt (p, 13, + "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"3582\"]]"); + p = add_epsg_def (filter, first, last, 3583, "epsg", 3583, + "NAD83(NSRS2007) / Massachusetts Island"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333"); + add_proj4text (p, 1, + "333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Massachusetts Island\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",41.48333333333333],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"standard_parallel_2\",41.28333333333333],PARA"); + add_srs_wkt (p, 10, + "METER[\"latitude_of_origin\",41],PARAMETER[\"central_mer"); + add_srs_wkt (p, 11, + "idian\",-70.5],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 12, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 14, + "HORITY[\"EPSG\",\"3583\"]]"); + p = add_epsg_def (filter, first, last, 3584, "epsg", 3584, + "NAD83(NSRS2007) / Massachusetts Island (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333"); + add_proj4text (p, 1, + "333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0"); + add_proj4text (p, 2, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_de"); + add_proj4text (p, 3, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Massachusetts Island (ftUS)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spati"); + add_srs_wkt (p, 2, + "al_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 3, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 4, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 8, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",41.483333333"); + add_srs_wkt (p, 9, + "33333],PARAMETER[\"standard_parallel_2\",41.283333333333"); + add_srs_wkt (p, 10, + "33],PARAMETER[\"latitude_of_origin\",41],PARAMETER[\"cen"); + add_srs_wkt (p, 11, + "tral_meridian\",-70.5],PARAMETER[\"false_easting\",16404"); + add_srs_wkt (p, 12, + "16.667],PARAMETER[\"false_northing\",0],UNIT[\"US survey"); + add_srs_wkt (p, 13, + " foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]]"); + add_srs_wkt (p, 14, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 15, + "3584\"]]"); + p = add_epsg_def (filter, first, last, 3585, "epsg", 3585, + "NAD83(NSRS2007) / Massachusetts Mainland"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellp"); + add_proj4text (p, 2, + "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Massachusetts Mainland\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); + add_srs_wkt (p, 2, + "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); + add_srs_wkt (p, 3, + "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",42.68333333333333]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",41.71666666666667],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",41],PARAMETER[\"central_m"); + add_srs_wkt (p, 11, + "eridian\",-71.5],PARAMETER[\"false_easting\",200000],PAR"); + add_srs_wkt (p, 12, + "AMETER[\"false_northing\",750000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 14, + "TH],AUTHORITY[\"EPSG\",\"3585\"]]"); + p = add_epsg_def (filter, first, last, 3586, "epsg", 3586, + "NAD83(NSRS2007) / Massachusetts Mainland (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=7"); + add_proj4text (p, 2, + "50000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Massachusetts Mainland (ftUS)"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spa"); + add_srs_wkt (p, 2, + "tial_Reference_System_2007\",SPHEROID[\"GRS 1980\",63781"); + add_srs_wkt (p, 3, + "37,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0"); + add_srs_wkt (p, 4, + ",0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 5, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_C"); + add_srs_wkt (p, 8, + "onic_2SP\"],PARAMETER[\"standard_parallel_1\",42.6833333"); + add_srs_wkt (p, 9, + "3333333],PARAMETER[\"standard_parallel_2\",41.7166666666"); + add_srs_wkt (p, 10, + "6667],PARAMETER[\"latitude_of_origin\",41],PARAMETER[\"c"); + add_srs_wkt (p, 11, + "entral_meridian\",-71.5],PARAMETER[\"false_easting\",656"); + add_srs_wkt (p, 12, + "166.667],PARAMETER[\"false_northing\",2460625],UNIT[\"US"); + add_srs_wkt (p, 13, + " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 14, + "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 15, + "PSG\",\"3586\"]]"); + p = add_epsg_def (filter, first, last, 3587, "epsg", 3587, + "NAD83(NSRS2007) / Michigan Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43"); + add_proj4text (p, 1, + ".31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +"); + add_proj4text (p, 2, + "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Michigan Central\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_1\",45.7],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",44.18333333333333],PARAMETER[\"latitude"); + add_srs_wkt (p, 10, + "_of_origin\",43.31666666666667],PARAMETER[\"central_meri"); + add_srs_wkt (p, 11, + "dian\",-84.36666666666666],PARAMETER[\"false_easting\",6"); + add_srs_wkt (p, 12, + "000000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 14, + "\",NORTH],AUTHORITY[\"EPSG\",\"3587\"]]"); + p = add_epsg_def (filter, first, last, 3588, "epsg", 3588, + "NAD83(NSRS2007) / Michigan Central (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43"); + add_proj4text (p, 1, + ".31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.9"); + add_proj4text (p, 2, + "99976001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +uni"); + add_proj4text (p, 3, + "ts=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Michigan Central (ft)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",45.7],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",44.18333333333333],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",43.31666666666667],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-84.36666666666666],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 12, + "g\",19685039.37],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 13, + "foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 14, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3588\"]]"); + p = add_epsg_def (filter, first, last, 3589, "epsg", 3589, + "NAD83(NSRS2007) / Michigan North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_"); + add_proj4text (p, 2, + "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 3, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Michigan North\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",47.08333333333334],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",45.48333333333333],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",44.78333333333333],PARAMETER[\"c"); + add_srs_wkt (p, 11, + "entral_meridian\",-87],PARAMETER[\"false_easting\",80000"); + add_srs_wkt (p, 12, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 14, + "ORTH],AUTHORITY[\"EPSG\",\"3589\"]]"); + p = add_epsg_def (filter, first, last, 3590, "epsg", 3590, + "NAD83(NSRS2007) / Michigan North (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999"); + add_proj4text (p, 2, + "968001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); + add_proj4text (p, 3, + "=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Michigan North (ft)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",47.08333333333334],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"standard_parallel_2\",45.48333333333333],PARA"); + add_srs_wkt (p, 10, + "METER[\"latitude_of_origin\",44.78333333333333],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"central_meridian\",-87],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 12, + "26246719.16],PARAMETER[\"false_northing\",0],UNIT[\"foot"); + add_srs_wkt (p, 13, + "\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 14, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3590\"]]"); + p = add_epsg_def (filter, first, last, 3591, "epsg", 3591, + "NAD83(NSRS2007) / Michigan Oblique Mercator"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=33"); + add_proj4text (p, 1, + "7.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +no"); + add_proj4text (p, 2, + "_uoff +gamma=337.25556 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 3, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Michigan Oblique Mercator\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial"); + add_srs_wkt (p, 2, + "_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 3, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 4, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4759\"]],PROJECTION[\"Hotine_Oblique_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_center\",45.30916666666666],"); + add_srs_wkt (p, 9, + "PARAMETER[\"longitude_of_center\",-86],PARAMETER[\"azimu"); + add_srs_wkt (p, 10, + "th\",337.25556],PARAMETER[\"rectified_grid_angle\",337.2"); + add_srs_wkt (p, 11, + "5556],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_easting\",2546731.496],PARAMETER[\"false_northing\",-"); + add_srs_wkt (p, 13, + "4354009.816],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 14, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 15, + ",\"3591\"]]"); + p = add_epsg_def (filter, first, last, 3592, "epsg", 3592, + "NAD83(NSRS2007) / Michigan South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41"); + add_proj4text (p, 1, + ".5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps="); + add_proj4text (p, 2, + "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Michigan South\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",43.66666666666666],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",42.1],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 10, + "f_origin\",41.5],PARAMETER[\"central_meridian\",-84.3666"); + add_srs_wkt (p, 11, + "6666666666],PARAMETER[\"false_easting\",4000000],PARAMET"); + add_srs_wkt (p, 12, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 14, + "RITY[\"EPSG\",\"3592\"]]"); + p = add_epsg_def (filter, first, last, 3593, "epsg", 3593, + "NAD83(NSRS2007) / Michigan South (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41"); + add_proj4text (p, 1, + ".5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 "); + add_proj4text (p, 2, + "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Michigan South (ft)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",43.66666666666666],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"standard_parallel_2\",42.1],PARAMETER[\"latit"); + add_srs_wkt (p, 10, + "ude_of_origin\",41.5],PARAMETER[\"central_meridian\",-84"); + add_srs_wkt (p, 11, + ".36666666666666],PARAMETER[\"false_easting\",13123359.58"); + add_srs_wkt (p, 12, + "],PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"3593\"]]"); + p = add_epsg_def (filter, first, last, 3594, "epsg", 3594, + "NAD83(NSRS2007) / Minnesota Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); + add_proj4text (p, 1, + "5 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +to"); + add_proj4text (p, 2, + "wgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Minnesota Central\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",47.05],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",45.61666666666667],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",45],PARAMETER[\"central_meridian\",-94.25"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_easting\",800000],PARAMETER[\"false_"); + add_srs_wkt (p, 12, + "northing\",100000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"3594\"]]"); + p = add_epsg_def (filter, first, last, 3595, "epsg", 3595, + "NAD83(NSRS2007) / Minnesota North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y"); + add_proj4text (p, 2, + "_0=100000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Minnesota North\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",48.63333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",47.03333333333333],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",46.5],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 11, + "an\",-93.1],PARAMETER[\"false_easting\",800000],PARAMETE"); + add_srs_wkt (p, 12, + "R[\"false_northing\",100000],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 14, + "UTHORITY[\"EPSG\",\"3595\"]]"); + p = add_epsg_def (filter, first, last, 3596, "epsg", 3596, + "NAD83(NSRS2007) / Minnesota South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps="); + add_proj4text (p, 2, + "GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Minnesota South\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",45.21666666666667],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",43.78333333333333],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",43],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 11, + "\",-94],PARAMETER[\"false_easting\",800000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",100000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 14, + "RITY[\"EPSG\",\"3596\"]]"); + p = add_epsg_def (filter, first, last, 3597, "epsg", 3597, + "NAD83(NSRS2007) / Mississippi East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Mississippi East\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",29.5],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-88.83333333333333],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 10, + "995],PARAMETER[\"false_easting\",300000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 12, + "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"3597\"]]"); + p = add_epsg_def (filter, first, last, 3598, "epsg", 3598, + "NAD83(NSRS2007) / Mississippi East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84"); + add_proj4text (p, 2, + "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Mississippi East (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); + add_srs_wkt (p, 2, + "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); + add_srs_wkt (p, 3, + ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 5, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 6, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",29.5],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",-88.83333333333333],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 10, + "\",0.99995],PARAMETER[\"false_easting\",984250.000000000"); + add_srs_wkt (p, 11, + "2],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot"); + add_srs_wkt (p, 12, + "\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS"); + add_srs_wkt (p, 13, + "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3598"); + add_srs_wkt (p, 14, + "\"]]"); + p = add_epsg_def (filter, first, last, 3599, "epsg", 3599, + "NAD83(NSRS2007) / Mississippi West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=700000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Mississippi West\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",29.5],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-90.33333333333333],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 10, + "995],PARAMETER[\"false_easting\",700000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 12, + "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"3599\"]]"); + p = add_epsg_def (filter, first, last, 3600, "epsg", 3600, + "NAD83(NSRS2007) / Mississippi West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +towgs84"); + add_proj4text (p, 2, + "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Mississippi West (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); + add_srs_wkt (p, 2, + "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); + add_srs_wkt (p, 3, + ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 5, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 6, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",29.5],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",-90.33333333333333],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 10, + "\",0.99995],PARAMETER[\"false_easting\",2296583.333],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); + add_srs_wkt (p, 12, + "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3600\"]]"); + p = add_epsg_def (filter, first, last, 3601, "epsg", 3601, + "NAD83(NSRS2007) / Missouri Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9"); + add_proj4text (p, 1, + "99933333 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); + add_proj4text (p, 2, + "0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Missouri Central\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",35.83333333333334],PARAMETER[\"c"); + add_srs_wkt (p, 9, + "entral_meridian\",-92.5],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 10, + "9933333],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"3601\"]]"); + p = add_epsg_def (filter, first, last, 3602, "epsg", 3602, + "NAD83(NSRS2007) / Missouri East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9"); + add_proj4text (p, 1, + "99933333 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); + add_proj4text (p, 2, + "0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Missouri East\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",35.83333333333334],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",-90.5],PARAMETER[\"scale_factor\",0.99993"); + add_srs_wkt (p, 10, + "3333],PARAMETER[\"false_easting\",250000],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"3602\"]]"); + p = add_epsg_def (filter, first, last, 3603, "epsg", 3603, + "NAD83(NSRS2007) / Missouri West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9"); + add_proj4text (p, 1, + "99941177 +x_0=850000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); + add_proj4text (p, 2, + "0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Missouri West\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",36.16666666666666],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",-94.5],PARAMETER[\"scale_factor\",0.99994"); + add_srs_wkt (p, 10, + "1177],PARAMETER[\"false_easting\",850000],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"3603\"]]"); + p = add_epsg_def (filter, first, last, 3604, "epsg", 3604, + "NAD83(NSRS2007) / Montana"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5"); + add_proj4text (p, 1, + " +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Montana\",GEOGCS[\"NAD83(NSRS"); + add_srs_wkt (p, 1, + "2007)\",DATUM[\"NAD83_National_Spatial_Reference_System_"); + add_srs_wkt (p, 2, + "2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",49],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",45],PARAMETER[\"latitude_of_origin\",44.25],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-109.5],PARAMETER[\"false_easting"); + add_srs_wkt (p, 11, + "\",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 12, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"3604\"]]"); + p = add_epsg_def (filter, first, last, 3605, "epsg", 3605, + "NAD83(NSRS2007) / Montana (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5"); + add_proj4text (p, 1, + " +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); + add_proj4text (p, 2, + "0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Montana (ft)\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_1\",49],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 9, + "rallel_2\",45],PARAMETER[\"latitude_of_origin\",44.25],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"central_meridian\",-109.5],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "easting\",1968503.937],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 12, + "NIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3605\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 3606, "epsg", 3606, + "NAD83(NSRS2007) / Nebraska"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); + add_proj4text (p, 1, + "lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 2, + "0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Nebraska\",GEOGCS[\"NAD83(NSR"); + add_srs_wkt (p, 1, + "S2007)\",DATUM[\"NAD83_National_Spatial_Reference_System"); + add_srs_wkt (p, 2, + "_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",43],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 9, + "el_2\",40],PARAMETER[\"latitude_of_origin\",39.833333333"); + add_srs_wkt (p, 10, + "33334],PARAMETER[\"central_meridian\",-100],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 12, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3606\"]]"); + p = add_epsg_def (filter, first, last, 3607, "epsg", 3607, + "NAD83(NSRS2007) / Nevada Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 2, + "0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Nevada Central\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",34.75],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",-116.6666666666667],PARAMETER[\"scale_factor\",0.9999"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",6000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"3607\"]]"); + p = add_epsg_def (filter, first, last, 3608, "epsg", 3608, + "NAD83(NSRS2007) / Nevada Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +tow"); + add_proj4text (p, 2, + "gs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Nevada Central (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"latitude_of_origin\",34.75],PARAMETER[\"central_"); + add_srs_wkt (p, 9, + "meridian\",-116.6666666666667],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 10, + ",0.9999],PARAMETER[\"false_easting\",1640416.6667],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_northing\",19685000],UNIT[\"US survey foot\""); + add_srs_wkt (p, 12, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3608\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 3609, "epsg", 3609, + "NAD83(NSRS2007) / Nevada East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 2, + "0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Nevada East\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",34.75],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-115.5833333333333],PARAMETER[\"scale_factor\",0.9999],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",200000],PARAMETER[\"false_no"); + add_srs_wkt (p, 11, + "rthing\",8000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"3609\"]]"); + p = add_epsg_def (filter, first, last, 3610, "epsg", 3610, + "NAD83(NSRS2007) / Nevada East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps="); + add_proj4text (p, 2, + "GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Nevada East (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",34.75],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",-115.5833333333333],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 10, + "9999],PARAMETER[\"false_easting\",656166.6667],PARAMETER"); + add_srs_wkt (p, 11, + "[\"false_northing\",26246666.66670001],UNIT[\"US survey "); + add_srs_wkt (p, 12, + "foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],"); + add_srs_wkt (p, 13, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "3610\"]]"); + p = add_epsg_def (filter, first, last, 3611, "epsg", 3611, + "NAD83(NSRS2007) / Nevada West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 2, + "0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Nevada West\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",34.75],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-118.5833333333333],PARAMETER[\"scale_factor\",0.9999],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",800000],PARAMETER[\"false_no"); + add_srs_wkt (p, 11, + "rthing\",4000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"3611\"]]"); + p = add_epsg_def (filter, first, last, 3612, "epsg", 3612, + "NAD83(NSRS2007) / Nevada West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps"); + add_proj4text (p, 2, + "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Nevada West (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",34.75],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",-118.5833333333333],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 10, + "9999],PARAMETER[\"false_easting\",2624666.6667],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",13123333.3333],UNIT[\"US survey foo"); + add_srs_wkt (p, 12, + "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); + add_srs_wkt (p, 13, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"361"); + add_srs_wkt (p, 14, + "2\"]]"); + p = add_epsg_def (filter, first, last, 3613, "epsg", 3613, + "NAD83(NSRS2007) / New Hampshire"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,"); + add_proj4text (p, 2, + "0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New Hampshire\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",42.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-71.66666666666667],PARAMETER[\"scale_factor\",0.999966"); + add_srs_wkt (p, 10, + "667],PARAMETER[\"false_easting\",300000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 12, + "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"3613\"]]"); + p = add_epsg_def (filter, first, last, 3614, "epsg", 3614, + "NAD83(NSRS2007) / New Hampshire (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +tow"); + add_proj4text (p, 2, + "gs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New Hampshire (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",42.5],PARAMETER[\"central_me"); + add_srs_wkt (p, 9, + "ridian\",-71.66666666666667],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 10, + "0.999966667],PARAMETER[\"false_easting\",984250.00000000"); + add_srs_wkt (p, 11, + "02],PARAMETER[\"false_northing\",0],UNIT[\"US survey foo"); + add_srs_wkt (p, 12, + "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); + add_srs_wkt (p, 13, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"361"); + add_srs_wkt (p, 14, + "4\"]]"); + p = add_epsg_def (filter, first, last, 3615, "epsg", 3615, + "NAD83(NSRS2007) / New Jersey"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New Jersey\",GEOGCS[\"NAD83(N"); + add_srs_wkt (p, 1, + "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",38.83333333333334],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",-74.5],PARAMETER[\"scale_factor\",0.9999],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",150000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3615\"]]"); + p = add_epsg_def (filter, first, last, 3616, "epsg", 3616, + "NAD83(NSRS2007) / New Jersey (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New Jersey (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",38.83333333333334],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",-74.5],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 10, + "999],PARAMETER[\"false_easting\",492125],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 12, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 13, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3616\"]]"); + p = add_epsg_def (filter, first, last, 3617, "epsg", 3617, + "NAD83(NSRS2007) / New Mexico Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=5000"); + add_proj4text (p, 1, + "00 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 2, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New Mexico Central\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",31],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 9, + "n\",-106.25],PARAMETER[\"scale_factor\",0.9999],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3617\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 3618, "epsg", 3618, + "NAD83(NSRS2007) / New Mexico Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=5000"); + add_proj4text (p, 1, + "00.0001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New Mexico Central (ftUS)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial"); + add_srs_wkt (p, 2, + "_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 3, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 4, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_origin\",31],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",-106.25],PARAMETER[\"scale_factor\",0.9999],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",1640416.667],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 12, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 13, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3618\"]]"); + p = add_epsg_def (filter, first, last, 3619, "epsg", 3619, + "NAD83(NSRS2007) / New Mexico East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); + add_proj4text (p, 1, + "909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New Mexico East\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",31],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "-104.3333333333333],PARAMETER[\"scale_factor\",0.9999090"); + add_srs_wkt (p, 10, + "91],PARAMETER[\"false_easting\",165000],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 12, + "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"3619\"]]"); + p = add_epsg_def (filter, first, last, 3620, "epsg", 3620, + "NAD83(NSRS2007) / New Mexico East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); + add_proj4text (p, 1, + "909091 +x_0=165000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New Mexico East (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); + add_srs_wkt (p, 2, + "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); + add_srs_wkt (p, 3, + "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"latitude_of_origin\",31],PARAMETER[\"central_mer"); + add_srs_wkt (p, 9, + "idian\",-104.3333333333333],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 10, + ".999909091],PARAMETER[\"false_easting\",541337.5],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); + add_srs_wkt (p, 12, + "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3620\"]]"); + p = add_epsg_def (filter, first, last, 3621, "epsg", 3621, + "NAD83(NSRS2007) / New Mexico West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); + add_proj4text (p, 1, + "916667 +x_0=830000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New Mexico West\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",31],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "-107.8333333333333],PARAMETER[\"scale_factor\",0.9999166"); + add_srs_wkt (p, 10, + "67],PARAMETER[\"false_easting\",830000],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 12, + "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"3621\"]]"); + p = add_epsg_def (filter, first, last, 3622, "epsg", 3622, + "NAD83(NSRS2007) / New Mexico West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); + add_proj4text (p, 1, + "916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +towgs"); + add_proj4text (p, 2, + "84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New Mexico West (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); + add_srs_wkt (p, 2, + "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); + add_srs_wkt (p, 3, + "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"latitude_of_origin\",31],PARAMETER[\"central_mer"); + add_srs_wkt (p, 9, + "idian\",-107.8333333333333],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 10, + ".999916667],PARAMETER[\"false_easting\",2723091.667],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); + add_srs_wkt (p, 12, + "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3622\"]]"); + p = add_epsg_def (filter, first, last, 3623, "epsg", 3623, + "NAD83(NSRS2007) / New York Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=250000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New York Central\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",40],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",-76.58333333333333],PARAMETER[\"scale_factor\",0.9999"); + add_srs_wkt (p, 10, + "375],PARAMETER[\"false_easting\",250000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 12, + "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"3623\"]]"); + p = add_epsg_def (filter, first, last, 3624, "epsg", 3624, + "NAD83(NSRS2007) / New York Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +towgs84"); + add_proj4text (p, 2, + "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New York Central (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); + add_srs_wkt (p, 2, + "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); + add_srs_wkt (p, 3, + ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 5, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 6, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",40],PARAMETER[\"central_m"); + add_srs_wkt (p, 9, + "eridian\",-76.58333333333333],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 10, + ",0.9999375],PARAMETER[\"false_easting\",820208.333000000"); + add_srs_wkt (p, 11, + "2],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot"); + add_srs_wkt (p, 12, + "\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS"); + add_srs_wkt (p, 13, + "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3624"); + add_srs_wkt (p, 14, + "\"]]"); + p = add_epsg_def (filter, first, last, 3625, "epsg", 3625, + "NAD83(NSRS2007) / New York East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New York East\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",38.83333333333334],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",-74.5],PARAMETER[\"scale_factor\",0.9999]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_easting\",150000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"3625\"]]"); + p = add_epsg_def (filter, first, last, 3626, "epsg", 3626, + "NAD83(NSRS2007) / New York East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New York East (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",38.83333333333334],PARAMETER"); + add_srs_wkt (p, 9, + "[\"central_meridian\",-74.5],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 10, + "0.9999],PARAMETER[\"false_easting\",492125],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 12, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3626\"]]"); + p = add_epsg_def (filter, first, last, 3627, "epsg", 3627, + "NAD83(NSRS2007) / New York Long Island"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New York Long Island\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",41.03333333333333],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"standard_parallel_2\",40.66666666666666],PARA"); + add_srs_wkt (p, 10, + "METER[\"latitude_of_origin\",40.16666666666666],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"central_meridian\",-74],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 12, + "300000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 14, + "\",NORTH],AUTHORITY[\"EPSG\",\"3627\"]]"); + p = add_epsg_def (filter, first, last, 3628, "epsg", 3628, + "NAD83(NSRS2007) / New York Long Island (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000"); + add_proj4text (p, 2, + "000001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); + add_proj4text (p, 3, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New York Long Island (ftUS)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spati"); + add_srs_wkt (p, 2, + "al_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 3, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 4, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 8, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",41.033333333"); + add_srs_wkt (p, 9, + "33333],PARAMETER[\"standard_parallel_2\",40.666666666666"); + add_srs_wkt (p, 10, + "66],PARAMETER[\"latitude_of_origin\",40.16666666666666],"); + add_srs_wkt (p, 11, + "PARAMETER[\"central_meridian\",-74],PARAMETER[\"false_ea"); + add_srs_wkt (p, 12, + "sting\",984250.0000000002],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 13, + "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 14, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 15, + "UTHORITY[\"EPSG\",\"3628\"]]"); + p = add_epsg_def (filter, first, last, 3629, "epsg", 3629, + "NAD83(NSRS2007) / New York West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=350000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New York West\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",40],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "-78.58333333333333],PARAMETER[\"scale_factor\",0.9999375"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_easting\",350000],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"3629\"]]"); + p = add_epsg_def (filter, first, last, 3630, "epsg", 3630, + "NAD83(NSRS2007) / New York West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +towgs84"); + add_proj4text (p, 2, + "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / New York West (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",40],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",-78.58333333333333],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 10, + "9999375],PARAMETER[\"false_easting\",1148291.667],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); + add_srs_wkt (p, 12, + "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3630\"]]"); + p = add_epsg_def (filter, first, last, 3631, "epsg", 3631, + "NAD83(NSRS2007) / North Carolina"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps"); + add_proj4text (p, 2, + "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / North Carolina\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",36.16666666666666],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",34.33333333333334],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",33.75],PARAMETER[\"central_merid"); + add_srs_wkt (p, 11, + "ian\",-79],PARAMETER[\"false_easting\",609601.22],PARAME"); + add_srs_wkt (p, 12, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 14, + "ORITY[\"EPSG\",\"3631\"]]"); + p = add_epsg_def (filter, first, last, 3632, "epsg", 3632, + "NAD83(NSRS2007) / North Carolina (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0="); + add_proj4text (p, 2, + "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / North Carolina (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",36.16666666666666]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",34.33333333333334],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",33.75],PARAMETER[\"centra"); + add_srs_wkt (p, 11, + "l_meridian\",-79],PARAMETER[\"false_easting\",2000000],P"); + add_srs_wkt (p, 12, + "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); + add_srs_wkt (p, 13, + ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); + add_srs_wkt (p, 14, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3632\"]]"); + p = add_epsg_def (filter, first, last, 3633, "epsg", 3633, + "NAD83(NSRS2007) / North Dakota North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333"); + add_proj4text (p, 1, + "333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GR"); + add_proj4text (p, 2, + "S80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / North Dakota North\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",48.73333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",47.43333333333333],PARAME"); + add_srs_wkt (p, 10, + "TER[\"latitude_of_origin\",47],PARAMETER[\"central_merid"); + add_srs_wkt (p, 11, + "ian\",-100.5],PARAMETER[\"false_easting\",600000],PARAME"); + add_srs_wkt (p, 12, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 14, + "ORITY[\"EPSG\",\"3633\"]]"); + p = add_epsg_def (filter, first, last, 3634, "epsg", 3634, + "NAD83(NSRS2007) / North Dakota North (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333"); + add_proj4text (p, 1, + "333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +"); + add_proj4text (p, 2, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / North Dakota North (ft)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); + add_srs_wkt (p, 2, + "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); + add_srs_wkt (p, 3, + ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 5, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 6, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",48.7333333333333"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"standard_parallel_2\",47.43333333333333],"); + add_srs_wkt (p, 10, + "PARAMETER[\"latitude_of_origin\",47],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-100.5],PARAMETER[\"false_easting\",1968503."); + add_srs_wkt (p, 12, + "937],PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.304"); + add_srs_wkt (p, 13, + "8,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"3634\"]]"); + p = add_epsg_def (filter, first, last, 3635, "epsg", 3635, + "NAD83(NSRS2007) / North Dakota South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333"); + add_proj4text (p, 1, + "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +"); + add_proj4text (p, 2, + "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / North Dakota South\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",47.48333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",46.18333333333333],PARAME"); + add_srs_wkt (p, 10, + "TER[\"latitude_of_origin\",45.66666666666666],PARAMETER["); + add_srs_wkt (p, 11, + "\"central_meridian\",-100.5],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 12, + ",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 13, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"3635\"]]"); + p = add_epsg_def (filter, first, last, 3636, "epsg", 3636, + "NAD83(NSRS2007) / North Dakota South (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333"); + add_proj4text (p, 1, + "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9"); + add_proj4text (p, 2, + "999976 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); + add_proj4text (p, 3, + "=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / North Dakota South (ft)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); + add_srs_wkt (p, 2, + "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); + add_srs_wkt (p, 3, + ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 5, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 6, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",47.4833333333333"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"standard_parallel_2\",46.18333333333333],"); + add_srs_wkt (p, 10, + "PARAMETER[\"latitude_of_origin\",45.66666666666666],PARA"); + add_srs_wkt (p, 11, + "METER[\"central_meridian\",-100.5],PARAMETER[\"false_eas"); + add_srs_wkt (p, 12, + "ting\",1968503.937],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 13, + "[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\""); + add_srs_wkt (p, 14, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3636\"]]"); + p = add_epsg_def (filter, first, last, 3637, "epsg", 3637, + "NAD83(NSRS2007) / Ohio North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Ohio North\",GEOGCS[\"NAD83(N"); + add_srs_wkt (p, 1, + "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_1\",41.7],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 9, + "rallel_2\",40.43333333333333],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 10, + "igin\",39.66666666666666],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 11, + ",-82.5],PARAMETER[\"false_easting\",600000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 14, + "\"EPSG\",\"3637\"]]"); + p = add_epsg_def (filter, first, last, 3638, "epsg", 3638, + "NAD83(NSRS2007) / Ohio South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Ohio South\",GEOGCS[\"NAD83(N"); + add_srs_wkt (p, 1, + "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_1\",40.03333333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"standard_parallel_2\",38.73333333333333],PARAMETER[\"l"); + add_srs_wkt (p, 10, + "atitude_of_origin\",38],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 11, + "82.5],PARAMETER[\"false_easting\",600000],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"3638\"]]"); + p = add_epsg_def (filter, first, last, 3639, "epsg", 3639, + "NAD83(NSRS2007) / Oklahoma North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Oklahoma North\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",36.76666666666667],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",35.56666666666667],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",35],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 11, + "\",-98],PARAMETER[\"false_easting\",600000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 14, + "\"EPSG\",\"3639\"]]"); + p = add_epsg_def (filter, first, last, 3640, "epsg", 3640, + "NAD83(NSRS2007) / Oklahoma North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Oklahoma North (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",36.76666666666667]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",35.56666666666667],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",35],PARAMETER[\"central_m"); + add_srs_wkt (p, 11, + "eridian\",-98],PARAMETER[\"false_easting\",1968500],PARA"); + add_srs_wkt (p, 12, + "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 13, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 14, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3640\"]]"); + p = add_epsg_def (filter, first, last, 3641, "epsg", 3641, + "NAD83(NSRS2007) / Oklahoma South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Oklahoma South\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",35.23333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",33.93333333333333],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",33.33333333333334],PARAMETER[\"c"); + add_srs_wkt (p, 11, + "entral_meridian\",-98],PARAMETER[\"false_easting\",60000"); + add_srs_wkt (p, 12, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 14, + "RTH],AUTHORITY[\"EPSG\",\"3641\"]]"); + p = add_epsg_def (filter, first, last, 3642, "epsg", 3642, + "NAD83(NSRS2007) / Oklahoma South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); + add_proj4text (p, 3, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Oklahoma South (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",35.23333333333333]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",33.93333333333333],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",33.33333333333334],PARAME"); + add_srs_wkt (p, 11, + "TER[\"central_meridian\",-98],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 12, + ",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); + add_srs_wkt (p, 13, + "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 14, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 15, + ",\"3642\"]]"); + p = add_epsg_def (filter, first, last, 3643, "epsg", 3643, + "NAD83(NSRS2007) / Oregon Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120"); + add_proj4text (p, 1, + ".5 +x_0=400000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,"); + add_proj4text (p, 2, + "0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Oregon Lambert\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",43],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",45.5],PARAMETER[\"latitude_of_origin\",41.7"); + add_srs_wkt (p, 10, + "5],PARAMETER[\"central_meridian\",-120.5],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_easting\",400000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 12, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); + add_srs_wkt (p, 13, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3643\"]]"); + p = add_epsg_def (filter, first, last, 3644, "epsg", 3644, + "NAD83(NSRS2007) / Oregon Lambert (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120"); + add_proj4text (p, 1, + ".5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 2, + "0,0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Oregon Lambert (ft)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",43],PARAMETER[\"stan"); + add_srs_wkt (p, 9, + "dard_parallel_2\",45.5],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",41.75],PARAMETER[\"central_meridian\",-120.5],PARAMETER"); + add_srs_wkt (p, 11, + "[\"false_easting\",1312335.958],PARAMETER[\"false_northi"); + add_srs_wkt (p, 12, + "ng\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"3644\"]]"); + p = add_epsg_def (filter, first, last, 3645, "epsg", 3645, + "NAD83(NSRS2007) / Oregon North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Oregon North\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_1\",46],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 9, + "rallel_2\",44.33333333333334],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 10, + "igin\",43.66666666666666],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 11, + ",-120.5],PARAMETER[\"false_easting\",2500000],PARAMETER["); + add_srs_wkt (p, 12, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"3645\"]]"); + p = add_epsg_def (filter, first, last, 3646, "epsg", 3646, + "NAD83(NSRS2007) / Oregon North (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 "); + add_proj4text (p, 2, + "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Oregon North (ft)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",46],PARAMETER[\"standa"); + add_srs_wkt (p, 9, + "rd_parallel_2\",44.33333333333334],PARAMETER[\"latitude_"); + add_srs_wkt (p, 10, + "of_origin\",43.66666666666666],PARAMETER[\"central_merid"); + add_srs_wkt (p, 11, + "ian\",-120.5],PARAMETER[\"false_easting\",8202099.738],P"); + add_srs_wkt (p, 12, + "ARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 14, + "RTH],AUTHORITY[\"EPSG\",\"3646\"]]"); + p = add_epsg_def (filter, first, last, 3647, "epsg", 3647, + "NAD83(NSRS2007) / Oregon South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Oregon South\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_1\",44],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 9, + "rallel_2\",42.33333333333334],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 10, + "igin\",41.66666666666666],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 11, + ",-120.5],PARAMETER[\"false_easting\",1500000],PARAMETER["); + add_srs_wkt (p, 12, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"3647\"]]"); + p = add_epsg_def (filter, first, last, 3648, "epsg", 3648, + "NAD83(NSRS2007) / Oregon South (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 "); + add_proj4text (p, 2, + "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Oregon South (ft)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",44],PARAMETER[\"standa"); + add_srs_wkt (p, 9, + "rd_parallel_2\",42.33333333333334],PARAMETER[\"latitude_"); + add_srs_wkt (p, 10, + "of_origin\",41.66666666666666],PARAMETER[\"central_merid"); + add_srs_wkt (p, 11, + "ian\",-120.5],PARAMETER[\"false_easting\",4921259.843],P"); + add_srs_wkt (p, 12, + "ARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 14, + "RTH],AUTHORITY[\"EPSG\",\"3648\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_16.c b/src/spatialite/src/srsinit/epsg_inlined_16.c new file mode 100644 index 0000000..8a85c37 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_16.c @@ -0,0 +1,3804 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_16 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 3649, "epsg", 3649, + "NAD83(NSRS2007) / Pennsylvania North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=4"); + add_proj4text (p, 1, + "0.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps"); + add_proj4text (p, 2, + "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Pennsylvania North\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",41.95],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",40.88333333333333],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",40.16666666666666],PARAMETER[\"central_me"); + add_srs_wkt (p, 11, + "ridian\",-77.75],PARAMETER[\"false_easting\",600000],PAR"); + add_srs_wkt (p, 12, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 14, + "UTHORITY[\"EPSG\",\"3649\"]]"); + p = add_epsg_def (filter, first, last, 3650, "epsg", 3650, + "NAD83(NSRS2007) / Pennsylvania North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=4"); + add_proj4text (p, 1, + "0.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps"); + add_proj4text (p, 2, + "=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Pennsylvania North (ftUS)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial"); + add_srs_wkt (p, 2, + "_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 3, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 4, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 8, + "_2SP\"],PARAMETER[\"standard_parallel_1\",41.95],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"standard_parallel_2\",40.88333333333333],PARAMETER["); + add_srs_wkt (p, 10, + "\"latitude_of_origin\",40.16666666666666],PARAMETER[\"ce"); + add_srs_wkt (p, 11, + "ntral_meridian\",-77.75],PARAMETER[\"false_easting\",196"); + add_srs_wkt (p, 12, + "8500],PARAMETER[\"false_northing\",0],UNIT[\"US survey f"); + add_srs_wkt (p, 13, + "oot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],A"); + add_srs_wkt (p, 14, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 15, + "650\"]]"); + p = add_epsg_def (filter, first, last, 3651, "epsg", 3651, + "NAD83(NSRS2007) / Pennsylvania South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +"); + add_proj4text (p, 2, + "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Pennsylvania South\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",40.96666666666667],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",39.93333333333333],PARAME"); + add_srs_wkt (p, 10, + "TER[\"latitude_of_origin\",39.33333333333334],PARAMETER["); + add_srs_wkt (p, 11, + "\"central_meridian\",-77.75],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 12, + ",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 13, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"3651\"]]"); + p = add_epsg_def (filter, first, last, 3652, "epsg", 3652, + "NAD83(NSRS2007) / Pennsylvania South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +"); + add_proj4text (p, 2, + "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Pennsylvania South (ftUS)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial"); + add_srs_wkt (p, 2, + "_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 3, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 4, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 8, + "_2SP\"],PARAMETER[\"standard_parallel_1\",40.96666666666"); + add_srs_wkt (p, 9, + "667],PARAMETER[\"standard_parallel_2\",39.93333333333333"); + add_srs_wkt (p, 10, + "],PARAMETER[\"latitude_of_origin\",39.33333333333334],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"central_meridian\",-77.75],PARAMETER[\"false_e"); + add_srs_wkt (p, 12, + "asting\",1968500],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 13, + "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 15, + "EPSG\",\"3652\"]]"); + p = add_epsg_def (filter, first, last, 3653, "epsg", 3653, + "NAD83(NSRS2007) / Rhode Island"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); + add_proj4text (p, 1, + "9999375 +x_0=100000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0"); + add_proj4text (p, 2, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Rhode Island\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",41.08333333333334],PARAMETER[\"centr"); + add_srs_wkt (p, 9, + "al_meridian\",-71.5],PARAMETER[\"scale_factor\",0.999993"); + add_srs_wkt (p, 10, + "75],PARAMETER[\"false_easting\",100000],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 12, + "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"3653\"]]"); + p = add_epsg_def (filter, first, last, 3654, "epsg", 3654, + "NAD83(NSRS2007) / Rhode Island (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); + add_proj4text (p, 1, + "9999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +towg"); + add_proj4text (p, 2, + "s84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Rhode Island (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",41.08333333333334],PARAMETER["); + add_srs_wkt (p, 9, + "\"central_meridian\",-71.5],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 10, + ".99999375],PARAMETER[\"false_easting\",328083.3333],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 12, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 13, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3654\"]]"); + p = add_epsg_def (filter, first, last, 3655, "epsg", 3655, + "NAD83(NSRS2007) / South Carolina"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31"); + add_proj4text (p, 1, + ".83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / South Carolina\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",34.83333333333334],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",32.5],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 10, + "f_origin\",31.83333333333333],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 11, + "an\",-81],PARAMETER[\"false_easting\",609600],PARAMETER["); + add_srs_wkt (p, 12, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"3655\"]]"); + p = add_epsg_def (filter, first, last, 3656, "epsg", 3656, + "NAD83(NSRS2007) / South Carolina (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31"); + add_proj4text (p, 1, + ".83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / South Carolina (ft)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",34.83333333333334],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"standard_parallel_2\",32.5],PARAMETER[\"latit"); + add_srs_wkt (p, 10, + "ude_of_origin\",31.83333333333333],PARAMETER[\"central_m"); + add_srs_wkt (p, 11, + "eridian\",-81],PARAMETER[\"false_easting\",2000000],PARA"); + add_srs_wkt (p, 12, + "METER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 14, + "],AUTHORITY[\"EPSG\",\"3656\"]]"); + p = add_epsg_def (filter, first, last, 3657, "epsg", 3657, + "NAD83(NSRS2007) / South Dakota North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666"); + add_proj4text (p, 1, + "666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_"); + add_proj4text (p, 2, + "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 3, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / South Dakota North\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",45.68333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",44.41666666666666],PARAME"); + add_srs_wkt (p, 10, + "TER[\"latitude_of_origin\",43.83333333333334],PARAMETER["); + add_srs_wkt (p, 11, + "\"central_meridian\",-100],PARAMETER[\"false_easting\",6"); + add_srs_wkt (p, 12, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"3657\"]]"); + p = add_epsg_def (filter, first, last, 3658, "epsg", 3658, + "NAD83(NSRS2007) / South Dakota North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666"); + add_proj4text (p, 1, + "666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_"); + add_proj4text (p, 2, + "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no"); + add_proj4text (p, 3, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / South Dakota North (ftUS)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial"); + add_srs_wkt (p, 2, + "_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 3, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 4, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 8, + "_2SP\"],PARAMETER[\"standard_parallel_1\",45.68333333333"); + add_srs_wkt (p, 9, + "333],PARAMETER[\"standard_parallel_2\",44.41666666666666"); + add_srs_wkt (p, 10, + "],PARAMETER[\"latitude_of_origin\",43.83333333333334],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"central_meridian\",-100],PARAMETER[\"false_eas"); + add_srs_wkt (p, 12, + "ting\",1968500],PARAMETER[\"false_northing\",0],UNIT[\"U"); + add_srs_wkt (p, 13, + "S survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 15, + "EPSG\",\"3658\"]]"); + p = add_epsg_def (filter, first, last, 3659, "epsg", 3659, + "NAD83(NSRS2007) / South Dakota South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); + add_proj4text (p, 1, + ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 3, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / South Dakota South\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",44.4],PARAMETER[\"stan"); + add_srs_wkt (p, 9, + "dard_parallel_2\",42.83333333333334],PARAMETER[\"latitud"); + add_srs_wkt (p, 10, + "e_of_origin\",42.33333333333334],PARAMETER[\"central_mer"); + add_srs_wkt (p, 11, + "idian\",-100.3333333333333],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 12, + "600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 14, + "\",NORTH],AUTHORITY[\"EPSG\",\"3659\"]]"); + p = add_epsg_def (filter, first, last, 3660, "epsg", 3660, + "NAD83(NSRS2007) / South Dakota South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); + add_proj4text (p, 1, + ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +n"); + add_proj4text (p, 3, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / South Dakota South (ftUS)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial"); + add_srs_wkt (p, 2, + "_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 3, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 4, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 8, + "_2SP\"],PARAMETER[\"standard_parallel_1\",44.4],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"standard_parallel_2\",42.83333333333334],PARAMETER[\""); + add_srs_wkt (p, 10, + "latitude_of_origin\",42.33333333333334],PARAMETER[\"cent"); + add_srs_wkt (p, 11, + "ral_meridian\",-100.3333333333333],PARAMETER[\"false_eas"); + add_srs_wkt (p, 12, + "ting\",1968500],PARAMETER[\"false_northing\",0],UNIT[\"U"); + add_srs_wkt (p, 13, + "S survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 15, + "EPSG\",\"3660\"]]"); + p = add_epsg_def (filter, first, last, 3661, "epsg", 3661, + "NAD83(NSRS2007) / Tennessee"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=3"); + add_proj4text (p, 1, + "4.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GR"); + add_proj4text (p, 2, + "S80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Tennessee\",GEOGCS[\"NAD83(NS"); + add_srs_wkt (p, 1, + "RS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",36.41666666666666],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",35.25],PARAMETER[\"latitude_of_ori"); + add_srs_wkt (p, 10, + "gin\",34.33333333333334],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 11, + "-86],PARAMETER[\"false_easting\",600000],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 13, + "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 14, + "PSG\",\"3661\"]]"); + p = add_epsg_def (filter, first, last, 3662, "epsg", 3662, + "NAD83(NSRS2007) / Tennessee (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=3"); + add_proj4text (p, 1, + "4.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GR"); + add_proj4text (p, 2, + "S80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Tennessee (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_1\",36.41666666666666],PARA"); + add_srs_wkt (p, 9, + "METER[\"standard_parallel_2\",35.25],PARAMETER[\"latitud"); + add_srs_wkt (p, 10, + "e_of_origin\",34.33333333333334],PARAMETER[\"central_mer"); + add_srs_wkt (p, 11, + "idian\",-86],PARAMETER[\"false_easting\",1968500],PARAME"); + add_srs_wkt (p, 12, + "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); + add_srs_wkt (p, 13, + "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 14, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3662\"]]"); + p = add_epsg_def (filter, first, last, 3663, "epsg", 3663, + "NAD83(NSRS2007) / Texas Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666"); + add_proj4text (p, 1, + "667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); + add_proj4text (p, 2, + "x_0=700000 +y_0=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 3, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Texas Central\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"standard_parallel_1\",31.88333333333333],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"standard_parallel_2\",30.11666666666667],PARAMETER["); + add_srs_wkt (p, 10, + "\"latitude_of_origin\",29.66666666666667],PARAMETER[\"ce"); + add_srs_wkt (p, 11, + "ntral_meridian\",-100.3333333333333],PARAMETER[\"false_e"); + add_srs_wkt (p, 12, + "asting\",700000],PARAMETER[\"false_northing\",3000000],U"); + add_srs_wkt (p, 13, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 14, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3663\"]]"); + p = add_epsg_def (filter, first, last, 3664, "epsg", 3664, + "NAD83(NSRS2007) / Texas Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666"); + add_proj4text (p, 1, + "667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); + add_proj4text (p, 2, + "x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +towgs84"); + add_proj4text (p, 3, + "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Texas Central (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",31.88333333333333],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"standard_parallel_2\",30.11666666666667],PARA"); + add_srs_wkt (p, 10, + "METER[\"latitude_of_origin\",29.66666666666667],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"central_meridian\",-100.3333333333333],PARAMETER[\"f"); + add_srs_wkt (p, 12, + "alse_easting\",2296583.333],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 13, + ",9842500.000000002],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 14, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 15, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3664\"]]"); + p = add_epsg_def (filter, first, last, 3665, "epsg", 3665, + "NAD83(NSRS2007) / Texas Centric Albers Equal Area"); + add_proj4text (p, 0, + "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x"); + add_proj4text (p, 1, + "_0=1500000 +y_0=6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Texas Centric Albers Equal Ar"); + add_srs_wkt (p, 1, + "ea\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_S"); + add_srs_wkt (p, 2, + "patial_Reference_System_2007\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 3, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 4, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"G"); + add_srs_wkt (p, 5, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 6, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 7, + "ORITY[\"EPSG\",\"4759\"]],PROJECTION[\"Albers_Conic_Equa"); + add_srs_wkt (p, 8, + "l_Area\"],PARAMETER[\"standard_parallel_1\",27.5],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",35],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 10, + "center\",18],PARAMETER[\"longitude_of_center\",-100],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",1500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 12, + "hing\",6000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 13, + "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 14, + "SG\",\"3665\"]]"); + p = add_epsg_def (filter, first, last, 3666, "epsg", 3666, + "NAD83(NSRS2007) / Texas Centric Lambert Conformal"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x"); + add_proj4text (p, 1, + "_0=1500000 +y_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Texas Centric Lambert Conform"); + add_srs_wkt (p, 1, + "al\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_S"); + add_srs_wkt (p, 2, + "patial_Reference_System_2007\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 3, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 4, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"G"); + add_srs_wkt (p, 5, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 6, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 7, + "ORITY[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 8, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",27.5],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"standard_parallel_2\",35],PARAMETER[\"latitude"); + add_srs_wkt (p, 10, + "_of_origin\",18],PARAMETER[\"central_meridian\",-100],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_easting\",1500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 12, + "thing\",5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 13, + "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 14, + "PSG\",\"3666\"]]"); + p = add_epsg_def (filter, first, last, 3667, "epsg", 3667, + "NAD83(NSRS2007) / Texas North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=3"); + add_proj4text (p, 1, + "4 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Texas North\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_1\",36.18333333333333],PARAMETER"); + add_srs_wkt (p, 9, + "[\"standard_parallel_2\",34.65],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 10, + "origin\",34],PARAMETER[\"central_meridian\",-101.5],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",200000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 12, + "ng\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 13, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 14, + "\",\"3667\"]]"); + p = add_epsg_def (filter, first, last, 3668, "epsg", 3668, + "NAD83(NSRS2007) / Texas North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=3"); + add_proj4text (p, 1, + "4 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.99989"); + add_proj4text (p, 2, + "83998 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Texas North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",36.18333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",34.65],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",34],PARAMETER[\"central_meridian\",-101.5"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_easting\",656166.667],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",3280833.333],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 13, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 14, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3668\"]]"); + p = add_epsg_def (filter, first, last, 3669, "epsg", 3669, + "NAD83(NSRS2007) / Texas North Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333"); + add_proj4text (p, 1, + "333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Texas North Central\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",33.96666666666667],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"standard_parallel_2\",32.13333333333333],PARA"); + add_srs_wkt (p, 10, + "METER[\"latitude_of_origin\",31.66666666666667],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"central_meridian\",-98.5],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 12, + ",600000],PARAMETER[\"false_northing\",2000000],UNIT[\"me"); + add_srs_wkt (p, 13, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 14, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3669\"]]"); + p = add_epsg_def (filter, first, last, 3670, "epsg", 3670, + "NAD83(NSRS2007) / Texas North Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333"); + add_proj4text (p, 1, + "333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=2000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 3, + "units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Texas North Central (ftUS)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatia"); + add_srs_wkt (p, 2, + "l_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,"); + add_srs_wkt (p, 3, + "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Coni"); + add_srs_wkt (p, 8, + "c_2SP\"],PARAMETER[\"standard_parallel_1\",33.9666666666"); + add_srs_wkt (p, 9, + "6667],PARAMETER[\"standard_parallel_2\",32.1333333333333"); + add_srs_wkt (p, 10, + "3],PARAMETER[\"latitude_of_origin\",31.66666666666667],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"central_meridian\",-98.5],PARAMETER[\"false_e"); + add_srs_wkt (p, 12, + "asting\",1968500],PARAMETER[\"false_northing\",6561666.6"); + add_srs_wkt (p, 13, + "67],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 15, + "AUTHORITY[\"EPSG\",\"3670\"]]"); + p = add_epsg_def (filter, first, last, 3671, "epsg", 3671, + "NAD83(NSRS2007) / Texas South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y"); + add_proj4text (p, 2, + "_0=5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Texas South\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_1\",27.83333333333333],PARAMETER"); + add_srs_wkt (p, 9, + "[\"standard_parallel_2\",26.16666666666667],PARAMETER[\""); + add_srs_wkt (p, 10, + "latitude_of_origin\",25.66666666666667],PARAMETER[\"cent"); + add_srs_wkt (p, 11, + "ral_meridian\",-98.5],PARAMETER[\"false_easting\",300000"); + add_srs_wkt (p, 12, + "],PARAMETER[\"false_northing\",5000000],UNIT[\"metre\",1"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 14, + "\",NORTH],AUTHORITY[\"EPSG\",\"3671\"]]"); + p = add_epsg_def (filter, first, last, 3672, "epsg", 3672, + "NAD83(NSRS2007) / Texas South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.00"); + add_proj4text (p, 2, + "00000001 +y_0=5000000.0001016 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 3, + "0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Texas South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",27.83333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",26.16666666666667],PARAME"); + add_srs_wkt (p, 10, + "TER[\"latitude_of_origin\",25.66666666666667],PARAMETER["); + add_srs_wkt (p, 11, + "\"central_meridian\",-98.5],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 12, + "984250.0000000002],PARAMETER[\"false_northing\",16404166"); + add_srs_wkt (p, 13, + ".667],UNIT[\"US survey foot\",0.3048006096012192,AUTHORI"); + add_srs_wkt (p, 14, + "TY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 15, + "],AUTHORITY[\"EPSG\",\"3672\"]]"); + p = add_epsg_def (filter, first, last, 3673, "epsg", 3673, + "NAD83(NSRS2007) / Texas South Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333"); + add_proj4text (p, 1, + "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=4000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); + add_proj4text (p, 3, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Texas South Central\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",30.28333333333333],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"standard_parallel_2\",28.38333333333333],PARA"); + add_srs_wkt (p, 10, + "METER[\"latitude_of_origin\",27.83333333333333],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"central_meridian\",-99],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 12, + "600000],PARAMETER[\"false_northing\",4000000],UNIT[\"met"); + add_srs_wkt (p, 13, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 14, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3673\"]]"); + p = add_epsg_def (filter, first, last, 3674, "epsg", 3674, + "NAD83(NSRS2007) / Texas South Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333"); + add_proj4text (p, 1, + "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=3999999.9998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +un"); + add_proj4text (p, 3, + "its=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Texas South Central (ftUS)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatia"); + add_srs_wkt (p, 2, + "l_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,"); + add_srs_wkt (p, 3, + "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Coni"); + add_srs_wkt (p, 8, + "c_2SP\"],PARAMETER[\"standard_parallel_1\",30.2833333333"); + add_srs_wkt (p, 9, + "3333],PARAMETER[\"standard_parallel_2\",28.3833333333333"); + add_srs_wkt (p, 10, + "3],PARAMETER[\"latitude_of_origin\",27.83333333333333],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"central_meridian\",-99],PARAMETER[\"false_eas"); + add_srs_wkt (p, 12, + "ting\",1968500],PARAMETER[\"false_northing\",13123333.33"); + add_srs_wkt (p, 13, + "3],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 14, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 15, + "UTHORITY[\"EPSG\",\"3674\"]]"); + p = add_epsg_def (filter, first, last, 3675, "epsg", 3675, + "NAD83(NSRS2007) / Utah Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); + add_proj4text (p, 1, + "8.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 "); + add_proj4text (p, 2, + "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Utah Central\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_1\",40.65],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",39.01666666666667],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",38.33333333333334],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 11, + "n\",-111.5],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 12, + "R[\"false_northing\",2000000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 14, + "AUTHORITY[\"EPSG\",\"3675\"]]"); + p = add_epsg_def (filter, first, last, 3676, "epsg", 3676, + "NAD83(NSRS2007) / Utah Central (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); + add_proj4text (p, 1, + "8.33333333333334 +lon_0=-111.5 +x_0=500000.0001504 +y_0="); + add_proj4text (p, 2, + "1999999.999992 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 3, + "s=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Utah Central (ft)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",40.65],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",39.01666666666667],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",38.33333333333334],PARAMETER[\"central_me"); + add_srs_wkt (p, 11, + "ridian\",-111.5],PARAMETER[\"false_easting\",1640419.948"); + add_srs_wkt (p, 12, + "],PARAMETER[\"false_northing\",6561679.79],UNIT[\"foot\""); + add_srs_wkt (p, 13, + ",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 14, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3676\"]]"); + p = add_epsg_def (filter, first, last, 3677, "epsg", 3677, + "NAD83(NSRS2007) / Utah Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); + add_proj4text (p, 1, + "8.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0"); + add_proj4text (p, 2, + "=2000000.00001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 3, + "nits=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Utah Central (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",40.65],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "tandard_parallel_2\",39.01666666666667],PARAMETER[\"lati"); + add_srs_wkt (p, 10, + "tude_of_origin\",38.33333333333334],PARAMETER[\"central_"); + add_srs_wkt (p, 11, + "meridian\",-111.5],PARAMETER[\"false_easting\",1640416.6"); + add_srs_wkt (p, 12, + "667],PARAMETER[\"false_northing\",6561666.666700001],UNI"); + add_srs_wkt (p, 13, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 14, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 15, + "TY[\"EPSG\",\"3677\"]]"); + p = add_epsg_def (filter, first, last, 3678, "epsg", 3678, + "NAD83(NSRS2007) / Utah North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +"); + add_proj4text (p, 2, + "y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 3, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Utah North\",GEOGCS[\"NAD83(N"); + add_srs_wkt (p, 1, + "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_1\",41.78333333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"standard_parallel_2\",40.71666666666667],PARAMETER[\"l"); + add_srs_wkt (p, 10, + "atitude_of_origin\",40.33333333333334],PARAMETER[\"centr"); + add_srs_wkt (p, 11, + "al_meridian\",-111.5],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 12, + "],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\",1"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 14, + "\",NORTH],AUTHORITY[\"EPSG\",\"3678\"]]"); + p = add_epsg_def (filter, first, last, 3679, "epsg", 3679, + "NAD83(NSRS2007) / Utah North (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0"); + add_proj4text (p, 2, + "001504 +y_0=999999.9999960001 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 3, + "0,0,0,0,0 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Utah North (ft)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",41.78333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",40.71666666666667],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",40.33333333333334],PARAMETER[\"c"); + add_srs_wkt (p, 11, + "entral_meridian\",-111.5],PARAMETER[\"false_easting\",16"); + add_srs_wkt (p, 12, + "40419.948],PARAMETER[\"false_northing\",3280839.895],UNI"); + add_srs_wkt (p, 13, + "T[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X"); + add_srs_wkt (p, 14, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3679\"]]"); + p = add_epsg_def (filter, first, last, 3680, "epsg", 3680, + "NAD83(NSRS2007) / Utah North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0"); + add_proj4text (p, 2, + "0001016 +y_0=999999.9999898402 +ellps=GRS80 +towgs84=0,0"); + add_proj4text (p, 3, + ",0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Utah North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",41.78333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",40.71666666666667],PARAME"); + add_srs_wkt (p, 10, + "TER[\"latitude_of_origin\",40.33333333333334],PARAMETER["); + add_srs_wkt (p, 11, + "\"central_meridian\",-111.5],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 12, + ",1640416.6667],PARAMETER[\"false_northing\",3280833.3333"); + add_srs_wkt (p, 13, + "00001],UNIT[\"US survey foot\",0.3048006096012192,AUTHOR"); + add_srs_wkt (p, 14, + "ITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 15, + "H],AUTHORITY[\"EPSG\",\"3680\"]]"); + p = add_epsg_def (filter, first, last, 3681, "epsg", 3681, + "NAD83(NSRS2007) / Utah South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); + add_proj4text (p, 1, + "6.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 "); + add_proj4text (p, 2, + "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Utah South\",GEOGCS[\"NAD83(N"); + add_srs_wkt (p, 1, + "SRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_1\",38.35],PARAMETER[\"standard_p"); + add_srs_wkt (p, 9, + "arallel_2\",37.21666666666667],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 10, + "rigin\",36.66666666666666],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 11, + ",-111.5],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",3000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 14, + "ORITY[\"EPSG\",\"3681\"]]"); + p = add_epsg_def (filter, first, last, 3682, "epsg", 3682, + "NAD83(NSRS2007) / Utah South (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); + add_proj4text (p, 1, + "6.66666666666666 +lon_0=-111.5 +x_0=500000.0001504 +y_0="); + add_proj4text (p, 2, + "2999999.999988 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 3, + "s=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Utah South (ft)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",38.35],PARAMETER[\"standa"); + add_srs_wkt (p, 9, + "rd_parallel_2\",37.21666666666667],PARAMETER[\"latitude_"); + add_srs_wkt (p, 10, + "of_origin\",36.66666666666666],PARAMETER[\"central_merid"); + add_srs_wkt (p, 11, + "ian\",-111.5],PARAMETER[\"false_easting\",1640419.948],P"); + add_srs_wkt (p, 12, + "ARAMETER[\"false_northing\",9842519.685],UNIT[\"foot\",0"); + add_srs_wkt (p, 13, + ".3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 14, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3682\"]]"); + p = add_epsg_def (filter, first, last, 3683, "epsg", 3683, + "NAD83(NSRS2007) / Utah South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); + add_proj4text (p, 1, + "6.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0"); + add_proj4text (p, 2, + "=3000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-f"); + add_proj4text (p, 3, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Utah South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",38.35],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",37.21666666666667],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",36.66666666666666],PARAMETER[\"central_me"); + add_srs_wkt (p, 11, + "ridian\",-111.5],PARAMETER[\"false_easting\",1640416.666"); + add_srs_wkt (p, 12, + "7],PARAMETER[\"false_northing\",9842500.000000002],UNIT["); + add_srs_wkt (p, 13, + "\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 15, + "[\"EPSG\",\"3683\"]]"); + p = add_epsg_def (filter, first, last, 3684, "epsg", 3684, + "NAD83(NSRS2007) / Vermont"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0"); + add_proj4text (p, 1, + "=500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Vermont\",GEOGCS[\"NAD83(NSRS"); + add_srs_wkt (p, 1, + "2007)\",DATUM[\"NAD83_National_Spatial_Reference_System_"); + add_srs_wkt (p, 2, + "2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4759\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",42.5],PARAMETER[\"central_meridian\",-72.5"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",0.999964286],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); + add_srs_wkt (p, 12, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3684\"]]"); + p = add_epsg_def (filter, first, last, 3685, "epsg", 3685, + "NAD83(NSRS2007) / Virginia North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +"); + add_proj4text (p, 2, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Virginia North\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",39.2],PARAMETER[\"standar"); + add_srs_wkt (p, 9, + "d_parallel_2\",38.03333333333333],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 10, + "f_origin\",37.66666666666666],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 11, + "an\",-78.5],PARAMETER[\"false_easting\",3500000],PARAMET"); + add_srs_wkt (p, 12, + "ER[\"false_northing\",2000000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 13, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 14, + ",AUTHORITY[\"EPSG\",\"3685\"]]"); + p = add_epsg_def (filter, first, last, 3686, "epsg", 3686, + "NAD83(NSRS2007) / Virginia North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2"); + add_proj4text (p, 2, + "000000.0001016 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 3, + "s=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Virginia North (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",39.2],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",38.03333333333333],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",37.66666666666666],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-78.5],PARAMETER[\"false_easting\",11482916."); + add_srs_wkt (p, 12, + "667],PARAMETER[\"false_northing\",6561666.667],UNIT[\"US"); + add_srs_wkt (p, 13, + " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 14, + "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 15, + "PSG\",\"3686\"]]"); + p = add_epsg_def (filter, first, last, 3687, "epsg", 3687, + "NAD83(NSRS2007) / Virginia South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +"); + add_proj4text (p, 2, + "y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 3, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Virginia South\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",37.96666666666667],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",36.76666666666667],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",36.33333333333334],PARAMETER[\"c"); + add_srs_wkt (p, 11, + "entral_meridian\",-78.5],PARAMETER[\"false_easting\",350"); + add_srs_wkt (p, 12, + "0000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre"); + add_srs_wkt (p, 13, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 14, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3687\"]]"); + p = add_epsg_def (filter, first, last, 3688, "epsg", 3688, + "NAD83(NSRS2007) / Virginia South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0"); + add_proj4text (p, 2, + "001016 +y_0=999999.9998983998 +ellps=GRS80 +towgs84=0,0,"); + add_proj4text (p, 3, + "0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Virginia South (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",37.96666666666667]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",36.76666666666667],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",36.33333333333334],PARAME"); + add_srs_wkt (p, 11, + "TER[\"central_meridian\",-78.5],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 12, + "g\",11482916.667],PARAMETER[\"false_northing\",3280833.3"); + add_srs_wkt (p, 13, + "33],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 15, + "AUTHORITY[\"EPSG\",\"3688\"]]"); + p = add_epsg_def (filter, first, last, 3689, "epsg", 3689, + "NAD83(NSRS2007) / Washington North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47"); + add_proj4text (p, 1, + " +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Washington North\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_1\",48.73333333333333],PARA"); + add_srs_wkt (p, 9, + "METER[\"standard_parallel_2\",47.5],PARAMETER[\"latitude"); + add_srs_wkt (p, 10, + "_of_origin\",47],PARAMETER[\"central_meridian\",-120.833"); + add_srs_wkt (p, 11, + "3333333333],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 12, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); + add_srs_wkt (p, 14, + "ITY[\"EPSG\",\"3689\"]]"); + p = add_epsg_def (filter, first, last, 3690, "epsg", 3690, + "NAD83(NSRS2007) / Washington North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47"); + add_proj4text (p, 1, + " +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0"); + add_proj4text (p, 2, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_de"); + add_proj4text (p, 3, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Washington North (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); + add_srs_wkt (p, 2, + "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); + add_srs_wkt (p, 3, + ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 5, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 6, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",48.7333333333333"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"standard_parallel_2\",47.5],PARAMETER[\"l"); + add_srs_wkt (p, 10, + "atitude_of_origin\",47],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 11, + "120.8333333333333],PARAMETER[\"false_easting\",1640416.6"); + add_srs_wkt (p, 12, + "67],PARAMETER[\"false_northing\",0],UNIT[\"US survey foo"); + add_srs_wkt (p, 13, + "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); + add_srs_wkt (p, 14, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"369"); + add_srs_wkt (p, 15, + "0\"]]"); + p = add_epsg_def (filter, first, last, 3691, "epsg", 3691, + "NAD83(NSRS2007) / Washington South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333"); + add_proj4text (p, 1, + "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +"); + add_proj4text (p, 2, + "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Washington South\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_1\",47.33333333333334],PARA"); + add_srs_wkt (p, 9, + "METER[\"standard_parallel_2\",45.83333333333334],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"latitude_of_origin\",45.33333333333334],PARAMETER[\""); + add_srs_wkt (p, 11, + "central_meridian\",-120.5],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 12, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"3691\"]]"); + p = add_epsg_def (filter, first, last, 3692, "epsg", 3692, + "NAD83(NSRS2007) / Washington South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333"); + add_proj4text (p, 1, + "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0"); + add_proj4text (p, 2, + "001016001 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +un"); + add_proj4text (p, 3, + "its=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Washington South (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_R"); + add_srs_wkt (p, 2, + "eference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298"); + add_srs_wkt (p, 3, + ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 5, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 6, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",47.3333333333333"); + add_srs_wkt (p, 9, + "4],PARAMETER[\"standard_parallel_2\",45.83333333333334],"); + add_srs_wkt (p, 10, + "PARAMETER[\"latitude_of_origin\",45.33333333333334],PARA"); + add_srs_wkt (p, 11, + "METER[\"central_meridian\",-120.5],PARAMETER[\"false_eas"); + add_srs_wkt (p, 12, + "ting\",1640416.667],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 13, + "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 15, + "[\"EPSG\",\"3692\"]]"); + p = add_epsg_def (filter, first, last, 3693, "epsg", 3693, + "NAD83(NSRS2007) / West Virginia North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); + add_proj4text (p, 1, + "5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / West Virginia North\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",40.25],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "tandard_parallel_2\",39],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",38.5],PARAMETER[\"central_meridian\",-79.5],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",600000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 12, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3693\"]]"); + p = add_epsg_def (filter, first, last, 3694, "epsg", 3694, + "NAD83(NSRS2007) / West Virginia South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / West Virginia South\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",38.88333333333333],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"standard_parallel_2\",37.48333333333333],PARA"); + add_srs_wkt (p, 10, + "METER[\"latitude_of_origin\",37],PARAMETER[\"central_mer"); + add_srs_wkt (p, 11, + "idian\",-81],PARAMETER[\"false_easting\",600000],PARAMET"); + add_srs_wkt (p, 12, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 14, + "RITY[\"EPSG\",\"3694\"]]"); + p = add_epsg_def (filter, first, last, 3695, "epsg", 3695, + "NAD83(NSRS2007) / Wisconsin Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333"); + add_proj4text (p, 1, + "334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Wisconsin Central\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",45.5],PARAMETER[\"stan"); + add_srs_wkt (p, 9, + "dard_parallel_2\",44.25],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",43.83333333333334],PARAMETER[\"central_meridian\",-90],"); + add_srs_wkt (p, 11, + "PARAMETER[\"false_easting\",600000],PARAMETER[\"false_no"); + add_srs_wkt (p, 12, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"3695\"]]"); + p = add_epsg_def (filter, first, last, 3696, "epsg", 3696, + "NAD83(NSRS2007) / Wisconsin Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333"); + add_proj4text (p, 1, + "334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Wisconsin Central (ftUS)\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); + add_srs_wkt (p, 2, + "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 3, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",45.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"standard_parallel_2\",44.25],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 10, + "rigin\",43.83333333333334],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 11, + ",-90],PARAMETER[\"false_easting\",1968500],PARAMETER[\"f"); + add_srs_wkt (p, 12, + "alse_northing\",0],UNIT[\"US survey foot\",0.30480060960"); + add_srs_wkt (p, 13, + "12192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 14, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3696\"]]"); + p = add_epsg_def (filter, first, last, 3697, "epsg", 3697, + "NAD83(NSRS2007) / Wisconsin North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Wisconsin North\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",46.76666666666667],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",45.56666666666667],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",45.16666666666666],PARAMETER[\"c"); + add_srs_wkt (p, 11, + "entral_meridian\",-90],PARAMETER[\"false_easting\",60000"); + add_srs_wkt (p, 12, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 14, + "RTH],AUTHORITY[\"EPSG\",\"3697\"]]"); + p = add_epsg_def (filter, first, last, 3698, "epsg", 3698, + "NAD83(NSRS2007) / Wisconsin North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_"); + add_proj4text (p, 3, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Wisconsin North (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); + add_srs_wkt (p, 2, + "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); + add_srs_wkt (p, 3, + "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",46.76666666666667]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",45.56666666666667],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",45.16666666666666],PARAME"); + add_srs_wkt (p, 11, + "TER[\"central_meridian\",-90],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 12, + ",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); + add_srs_wkt (p, 13, + "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 14, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 15, + ",\"3698\"]]"); + p = add_epsg_def (filter, first, last, 3699, "epsg", 3699, + "NAD83(NSRS2007) / Wisconsin South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Wisconsin South\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",44.06666666666667],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",42.73333333333333],PARAMETER"); + add_srs_wkt (p, 10, + "[\"latitude_of_origin\",42],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 11, + "\",-90],PARAMETER[\"false_easting\",600000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 14, + "\"EPSG\",\"3699\"]]"); + p = add_epsg_def (filter, first, last, 3700, "epsg", 3700, + "NAD83(NSRS2007) / Wisconsin South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Wisconsin South (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); + add_srs_wkt (p, 2, + "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); + add_srs_wkt (p, 3, + "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",44.06666666666667]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",42.73333333333333],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",42],PARAMETER[\"central_m"); + add_srs_wkt (p, 11, + "eridian\",-90],PARAMETER[\"false_easting\",1968500],PARA"); + add_srs_wkt (p, 12, + "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 13, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 14, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3700\"]]"); + p = add_epsg_def (filter, first, last, 3701, "epsg", 3701, + "NAD83(NSRS2007) / Wisconsin Transverse Mercator"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y"); + add_proj4text (p, 1, + "_0=-4480000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Wisconsin Transverse Mercator"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spa"); + add_srs_wkt (p, 2, + "tial_Reference_System_2007\",SPHEROID[\"GRS 1980\",63781"); + add_srs_wkt (p, 3, + "37,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0"); + add_srs_wkt (p, 4, + ",0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 5, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",-90],PARAMETER[\"scale_factor\",0.9996],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_easting\",520000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",-4480000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"3701\"]]"); + p = add_epsg_def (filter, first, last, 3702, "epsg", 3702, + "NAD83(NSRS2007) / Wyoming East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=200000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Wyoming East\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",40.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-105.1666666666667],PARAMETER[\"scale_factor\",0.999937"); + add_srs_wkt (p, 10, + "5],PARAMETER[\"false_easting\",200000],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 12, + "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"3702\"]]"); + p = add_epsg_def (filter, first, last, 3703, "epsg", 3703, + "NAD83(NSRS2007) / Wyoming East Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +towgs84=0,0"); + add_proj4text (p, 2, + ",0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Wyoming East Central\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",40.5],PARAMETER[\"central_me"); + add_srs_wkt (p, 9, + "ridian\",-107.3333333333333],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 10, + "0.9999375],PARAMETER[\"false_easting\",400000],PARAMETER"); + add_srs_wkt (p, 11, + "[\"false_northing\",100000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"3703\"]]"); + p = add_epsg_def (filter, first, last, 3704, "epsg", 3704, + "NAD83(NSRS2007) / Wyoming West Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0"); + add_proj4text (p, 1, + "=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Wyoming West Central\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refe"); + add_srs_wkt (p, 2, + "rence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",40.5],PARAMETER[\"central_me"); + add_srs_wkt (p, 9, + "ridian\",-108.75],PARAMETER[\"scale_factor\",0.9999375],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",600000],PARAMETER[\"false_no"); + add_srs_wkt (p, 11, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"3704\"]]"); + p = add_epsg_def (filter, first, last, 3705, "epsg", 3705, + "NAD83(NSRS2007) / Wyoming West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +towgs84=0,0"); + add_proj4text (p, 2, + ",0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Wyoming West\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",40.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-110.0833333333333],PARAMETER[\"scale_factor\",0.999937"); + add_srs_wkt (p, 10, + "5],PARAMETER[\"false_easting\",800000],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_northing\",100000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"3705\"]]"); + p = add_epsg_def (filter, first, last, 3706, "epsg", 3706, + "NAD83(NSRS2007) / UTM zone 59N"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 59N\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",17"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"370"); + add_srs_wkt (p, 13, + "6\"]]"); + p = add_epsg_def (filter, first, last, 3707, "epsg", 3707, + "NAD83(NSRS2007) / UTM zone 60N"); + add_proj4text (p, 0, + "+proj=utm +zone=60 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 60N\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",17"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"370"); + add_srs_wkt (p, 13, + "7\"]]"); + p = add_epsg_def (filter, first, last, 3708, "epsg", 3708, + "NAD83(NSRS2007) / UTM zone 1N"); + add_proj4text (p, 0, + "+proj=utm +zone=1 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 1, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 1N\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",-17"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"370"); + add_srs_wkt (p, 13, + "8\"]]"); + p = add_epsg_def (filter, first, last, 3709, "epsg", 3709, + "NAD83(NSRS2007) / UTM zone 2N"); + add_proj4text (p, 0, + "+proj=utm +zone=2 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 1, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 2N\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",-17"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"370"); + add_srs_wkt (p, 13, + "9\"]]"); + p = add_epsg_def (filter, first, last, 3710, "epsg", 3710, + "NAD83(NSRS2007) / UTM zone 3N"); + add_proj4text (p, 0, + "+proj=utm +zone=3 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 1, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 3N\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",-16"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"371"); + add_srs_wkt (p, 13, + "0\"]]"); + p = add_epsg_def (filter, first, last, 3711, "epsg", 3711, + "NAD83(NSRS2007) / UTM zone 4N"); + add_proj4text (p, 0, + "+proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 1, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 4N\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",-15"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"371"); + add_srs_wkt (p, 13, + "1\"]]"); + p = add_epsg_def (filter, first, last, 3712, "epsg", 3712, + "NAD83(NSRS2007) / UTM zone 5N"); + add_proj4text (p, 0, + "+proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 1, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 5N\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",-15"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"371"); + add_srs_wkt (p, 13, + "2\"]]"); + p = add_epsg_def (filter, first, last, 3713, "epsg", 3713, + "NAD83(NSRS2007) / UTM zone 6N"); + add_proj4text (p, 0, + "+proj=utm +zone=6 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 1, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 6N\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",-14"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"371"); + add_srs_wkt (p, 13, + "3\"]]"); + p = add_epsg_def (filter, first, last, 3714, "epsg", 3714, + "NAD83(NSRS2007) / UTM zone 7N"); + add_proj4text (p, 0, + "+proj=utm +zone=7 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 1, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 7N\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",-14"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"371"); + add_srs_wkt (p, 13, + "4\"]]"); + p = add_epsg_def (filter, first, last, 3715, "epsg", 3715, + "NAD83(NSRS2007) / UTM zone 8N"); + add_proj4text (p, 0, + "+proj=utm +zone=8 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 1, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 8N\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",-13"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"371"); + add_srs_wkt (p, 13, + "5\"]]"); + p = add_epsg_def (filter, first, last, 3716, "epsg", 3716, + "NAD83(NSRS2007) / UTM zone 9N"); + add_proj4text (p, 0, + "+proj=utm +zone=9 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 1, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 9N\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",-12"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"371"); + add_srs_wkt (p, 13, + "6\"]]"); + p = add_epsg_def (filter, first, last, 3717, "epsg", 3717, + "NAD83(NSRS2007) / UTM zone 10N"); + add_proj4text (p, 0, + "+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 10N\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-1"); + add_srs_wkt (p, 9, + "23],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "717\"]]"); + p = add_epsg_def (filter, first, last, 3718, "epsg", 3718, + "NAD83(NSRS2007) / UTM zone 11N"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 11N\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-1"); + add_srs_wkt (p, 9, + "17],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "718\"]]"); + p = add_epsg_def (filter, first, last, 3719, "epsg", 3719, + "NAD83(NSRS2007) / UTM zone 12N"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 12N\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-1"); + add_srs_wkt (p, 9, + "11],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "719\"]]"); + p = add_epsg_def (filter, first, last, 3720, "epsg", 3720, + "NAD83(NSRS2007) / UTM zone 13N"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 13N\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-1"); + add_srs_wkt (p, 9, + "05],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "720\"]]"); + p = add_epsg_def (filter, first, last, 3721, "epsg", 3721, + "NAD83(NSRS2007) / UTM zone 14N"); + add_proj4text (p, 0, + "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 14N\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-9"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"372"); + add_srs_wkt (p, 13, + "1\"]]"); + p = add_epsg_def (filter, first, last, 3722, "epsg", 3722, + "NAD83(NSRS2007) / UTM zone 15N"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 15N\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-9"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"372"); + add_srs_wkt (p, 13, + "2\"]]"); + p = add_epsg_def (filter, first, last, 3723, "epsg", 3723, + "NAD83(NSRS2007) / UTM zone 16N"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 16N\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-8"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"372"); + add_srs_wkt (p, 13, + "3\"]]"); + p = add_epsg_def (filter, first, last, 3724, "epsg", 3724, + "NAD83(NSRS2007) / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 17N\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-8"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"372"); + add_srs_wkt (p, 13, + "4\"]]"); + p = add_epsg_def (filter, first, last, 3725, "epsg", 3725, + "NAD83(NSRS2007) / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 18N\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-7"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"372"); + add_srs_wkt (p, 13, + "5\"]]"); + p = add_epsg_def (filter, first, last, 3726, "epsg", 3726, + "NAD83(NSRS2007) / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / UTM zone 19N\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-6"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"372"); + add_srs_wkt (p, 13, + "6\"]]"); + p = add_epsg_def (filter, first, last, 3727, "epsg", 3727, + "Reunion 1947 / TM Reunion"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-21.11666666666667 +lon_0=55.53333333"); + add_proj4text (p, 1, + "333333 +k=1 +x_0=160000 +y_0=50000 +ellps=intl +towgs84="); + add_proj4text (p, 2, + "94,-948,-1262,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Reunion 1947 / TM Reunion\",GEOGCS[\"Reunion 19"); + add_srs_wkt (p, 1, + "47\",DATUM[\"Reunion_1947\",SPHEROID[\"International 192"); + add_srs_wkt (p, 2, + "4\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[94"); + add_srs_wkt (p, 3, + ",-948,-1262,0,0,0,0],AUTHORITY[\"EPSG\",\"6626\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4626\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",-21.11666666"); + add_srs_wkt (p, 8, + "666667],PARAMETER[\"central_meridian\",55.53333333333333"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",160000],PARAMETER[\"false_northing\",50000],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3727\"]]"); + p = add_epsg_def (filter, first, last, 3728, "epsg", 3728, + "NAD83(NSRS2007) / Ohio North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Ohio North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",41.7],PARAMETER[\"stan"); + add_srs_wkt (p, 9, + "dard_parallel_2\",40.43333333333333],PARAMETER[\"latitud"); + add_srs_wkt (p, 10, + "e_of_origin\",39.66666666666666],PARAMETER[\"central_mer"); + add_srs_wkt (p, 11, + "idian\",-82.5],PARAMETER[\"false_easting\",1968500],PARA"); + add_srs_wkt (p, 12, + "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 13, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 14, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3728\"]]"); + p = add_epsg_def (filter, first, last, 3729, "epsg", 3729, + "NAD83(NSRS2007) / Ohio South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Ohio South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",40.03333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"standard_parallel_2\",38.73333333333333],PARAME"); + add_srs_wkt (p, 10, + "TER[\"latitude_of_origin\",38],PARAMETER[\"central_merid"); + add_srs_wkt (p, 11, + "ian\",-82.5],PARAMETER[\"false_easting\",1968500],PARAME"); + add_srs_wkt (p, 12, + "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); + add_srs_wkt (p, 13, + "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 14, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3729\"]]"); + p = add_epsg_def (filter, first, last, 3730, "epsg", 3730, + "NAD83(NSRS2007) / Wyoming East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84"); + add_proj4text (p, 2, + "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Wyoming East (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",40.5],PARAMETER[\"central_mer"); + add_srs_wkt (p, 9, + "idian\",-105.1666666666667],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 10, + ".9999375],PARAMETER[\"false_easting\",656166.6667],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); + add_srs_wkt (p, 12, + "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 13, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3730\"]]"); + p = add_epsg_def (filter, first, last, 3731, "epsg", 3731, + "NAD83(NSRS2007) / Wyoming East Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellp"); + add_proj4text (p, 2, + "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Wyoming East Central (ftUS)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spati"); + add_srs_wkt (p, 2, + "al_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 3, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 4, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",40.5],PARAMETER[\"cen"); + add_srs_wkt (p, 9, + "tral_meridian\",-107.3333333333333],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 10, + "ctor\",0.9999375],PARAMETER[\"false_easting\",1312333.33"); + add_srs_wkt (p, 11, + "33],PARAMETER[\"false_northing\",328083.3333],UNIT[\"US "); + add_srs_wkt (p, 12, + "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 13, + "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 14, + "SG\",\"3731\"]]"); + p = add_epsg_def (filter, first, last, 3732, "epsg", 3732, + "NAD83(NSRS2007) / Wyoming West Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0"); + add_proj4text (p, 1, + "=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Wyoming West Central (ftUS)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spati"); + add_srs_wkt (p, 2, + "al_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 3, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 4, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",40.5],PARAMETER[\"cen"); + add_srs_wkt (p, 9, + "tral_meridian\",-108.75],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 10, + "99375],PARAMETER[\"false_easting\",1968500],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 12, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3732\"]]"); + p = add_epsg_def (filter, first, last, 3733, "epsg", 3733, + "NAD83(NSRS2007) / Wyoming West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +el"); + add_proj4text (p, 2, + "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Wyoming West (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",40.5],PARAMETER[\"central_mer"); + add_srs_wkt (p, 9, + "idian\",-110.0833333333333],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 10, + ".9999375],PARAMETER[\"false_easting\",2624666.6667],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",328083.3333],UNIT[\"US survey f"); + add_srs_wkt (p, 12, + "oot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],A"); + add_srs_wkt (p, 13, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 14, + "733\"]]"); + p = add_epsg_def (filter, first, last, 3734, "epsg", 3734, + "NAD83 / Ohio North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +datum=N"); + add_proj4text (p, 2, + "AD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Ohio North (ftUS)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.7]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",40.43333333333333],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"latitude_of_origin\",39.66666666666666],PARAME"); + add_srs_wkt (p, 10, + "TER[\"central_meridian\",-82.5],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 11, + "g\",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US s"); + add_srs_wkt (p, 12, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 13, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 14, + "G\",\"3734\"]]"); + p = add_epsg_def (filter, first, last, 3735, "epsg", 3735, + "NAD83 / Ohio South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +datum=NAD"); + add_proj4text (p, 2, + "83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Ohio South (ftUS)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40.03"); + add_srs_wkt (p, 8, + "333333333333],PARAMETER[\"standard_parallel_2\",38.73333"); + add_srs_wkt (p, 9, + "333333333],PARAMETER[\"latitude_of_origin\",38],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-82.5],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); + add_srs_wkt (p, 12, + "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"3735\"]]"); + p = add_epsg_def (filter, first, last, 3736, "epsg", 3736, + "NAD83 / Wyoming East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=200000.00001016 +y_0=0 +datum=NAD83 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Wyoming East (ftUS)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",40.5],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-105.1666666666667],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999375],PARAMETER[\"false_easting\",65"); + add_srs_wkt (p, 10, + "6166.6667],PARAMETER[\"false_northing\",0],UNIT[\"US sur"); + add_srs_wkt (p, 11, + "vey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"3736\"]]"); + p = add_epsg_def (filter, first, last, 3737, "epsg", 3737, + "NAD83 / Wyoming East Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=399999.99998984 +y_0=99999.99998983997 +datu"); + add_proj4text (p, 2, + "m=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Wyoming East Central (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",40.5"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-107.3333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.9999375],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",1312333.3333],PARAMETER[\"false_northing\",328083"); + add_srs_wkt (p, 11, + ".3333],UNIT[\"US survey foot\",0.3048006096012192,AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 13, + "H],AUTHORITY[\"EPSG\",\"3737\"]]"); + p = add_epsg_def (filter, first, last, 3738, "epsg", 3738, + "NAD83 / Wyoming West Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0"); + add_proj4text (p, 1, + "=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Wyoming West Central (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",40.5"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-108.75],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9999375],PARAMETER[\"false_easting\",1968"); + add_srs_wkt (p, 10, + "500],PARAMETER[\"false_northing\",0],UNIT[\"US survey fo"); + add_srs_wkt (p, 11, + "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"37"); + add_srs_wkt (p, 13, + "38\"]]"); + p = add_epsg_def (filter, first, last, 3739, "epsg", 3739, + "NAD83 / Wyoming West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +da"); + add_proj4text (p, 2, + "tum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Wyoming West (ftUS)\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",40.5],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-110.0833333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999375],PARAMETER[\"false_easting\",26"); + add_srs_wkt (p, 10, + "24666.6667],PARAMETER[\"false_northing\",328083.3333],UN"); + add_srs_wkt (p, 11, + "IT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); + add_srs_wkt (p, 13, + "ITY[\"EPSG\",\"3739\"]]"); + p = add_epsg_def (filter, first, last, 3740, "epsg", 3740, + "NAD83(HARN) / UTM zone 10N"); + add_proj4text (p, 0, + "+proj=utm +zone=10 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / UTM zone 10N\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-123],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3740\"]]"); + p = add_epsg_def (filter, first, last, 3741, "epsg", 3741, + "NAD83(HARN) / UTM zone 11N"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / UTM zone 11N\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-117],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3741\"]]"); + p = add_epsg_def (filter, first, last, 3742, "epsg", 3742, + "NAD83(HARN) / UTM zone 12N"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / UTM zone 12N\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-111],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3742\"]]"); + p = add_epsg_def (filter, first, last, 3743, "epsg", 3743, + "NAD83(HARN) / UTM zone 13N"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / UTM zone 13N\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-105],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3743\"]]"); + p = add_epsg_def (filter, first, last, 3744, "epsg", 3744, + "NAD83(HARN) / UTM zone 14N"); + add_proj4text (p, 0, + "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / UTM zone 14N\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-99],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3744\"]]"); + p = add_epsg_def (filter, first, last, 3745, "epsg", 3745, + "NAD83(HARN) / UTM zone 15N"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / UTM zone 15N\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-93],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3745\"]]"); + p = add_epsg_def (filter, first, last, 3746, "epsg", 3746, + "NAD83(HARN) / UTM zone 16N"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / UTM zone 16N\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-87],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3746\"]]"); + p = add_epsg_def (filter, first, last, 3747, "epsg", 3747, + "NAD83(HARN) / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / UTM zone 17N\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-81],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3747\"]]"); + p = add_epsg_def (filter, first, last, 3748, "epsg", 3748, + "NAD83(HARN) / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / UTM zone 18N\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-75],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3748\"]]"); + p = add_epsg_def (filter, first, last, 3749, "epsg", 3749, + "NAD83(HARN) / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / UTM zone 19N\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-69],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3749\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_17.c b/src/spatialite/src/srsinit/epsg_inlined_17.c new file mode 100644 index 0000000..893b968 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_17.c @@ -0,0 +1,3344 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_17 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 3750, "epsg", 3750, + "NAD83(HARN) / UTM zone 4N"); + add_proj4text (p, 0, + "+proj=utm +zone=4 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 1, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / UTM zone 4N\",GEOGCS[\"NAD83(HARN"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"central_meridian\",-159],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3750\"]]"); + p = add_epsg_def (filter, first, last, 3751, "epsg", 3751, + "NAD83(HARN) / UTM zone 5N"); + add_proj4text (p, 0, + "+proj=utm +zone=5 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 1, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / UTM zone 5N\",GEOGCS[\"NAD83(HARN"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"central_meridian\",-153],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"3751\"]]"); + p = add_epsg_def (filter, first, last, 3752, "epsg", 3752, + "WGS 84 / Mercator 41 (deprecated)"); + add_proj4text (p, 0, + "+proj=merc +lon_0=100 +lat_ts=-41 +x_0=0 +y_0=0 +datum=W"); + add_proj4text (p, 1, + "GS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / Mercator 41 (deprecated)\",GEOGCS[\"WG"); + add_srs_wkt (p, 1, + "S 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,29"); + add_srs_wkt (p, 2, + "8.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Mercator_1SP\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 7, + ",-41],PARAMETER[\"central_meridian\",100],PARAMETER[\"sc"); + add_srs_wkt (p, 8, + "ale_factor\",1],PARAMETER[\"false_easting\",0],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 10, + "\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"3752\"]]"); + p = add_epsg_def (filter, first, last, 3753, "epsg", 3753, + "NAD83(HARN) / Ohio North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Ohio North (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",41.7],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",40.43333333333333],PARAMETER[\"latitude_of_origin\",39."); + add_srs_wkt (p, 10, + "66666666666666],PARAMETER[\"central_meridian\",-82.5],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_easting\",1968500],PARAMETER[\"false_nor"); + add_srs_wkt (p, 12, + "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); + add_srs_wkt (p, 13, + "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 14, + "NORTH],AUTHORITY[\"EPSG\",\"3753\"]]"); + p = add_epsg_def (filter, first, last, 3754, "epsg", 3754, + "NAD83(HARN) / Ohio South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Ohio South (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",40.03333333333333],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",38.73333333333333],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",38],PARAMETER[\"central_meridian\",-82.5],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",1968500],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 14, + "RTH],AUTHORITY[\"EPSG\",\"3754\"]]"); + p = add_epsg_def (filter, first, last, 3755, "epsg", 3755, + "NAD83(HARN) / Wyoming East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +towgs84"); + add_proj4text (p, 2, + "=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Wyoming East (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",40.5],PARAMETER[\"central_meridian\",-105.166"); + add_srs_wkt (p, 9, + "6666666667],PARAMETER[\"scale_factor\",0.9999375],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",656166.6667],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 13, + "NORTH],AUTHORITY[\"EPSG\",\"3755\"]]"); + p = add_epsg_def (filter, first, last, 3756, "epsg", 3756, + "NAD83(HARN) / Wyoming East Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellp"); + add_proj4text (p, 2, + "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Wyoming East Central (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Referenc"); + add_srs_wkt (p, 2, + "e_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 7, + "52\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",40.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-107.3333333333333],PARAMETER[\"scale_factor\",0.999937"); + add_srs_wkt (p, 10, + "5],PARAMETER[\"false_easting\",1312333.3333],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",328083.3333],UNIT[\"US survey foot\",0."); + add_srs_wkt (p, 12, + "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3756\"]]"); + p = add_epsg_def (filter, first, last, 3757, "epsg", 3757, + "NAD83(HARN) / Wyoming West Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0"); + add_proj4text (p, 1, + "=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Wyoming West Central (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Referenc"); + add_srs_wkt (p, 2, + "e_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 7, + "52\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",40.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-108.75],PARAMETER[\"scale_factor\",0.9999375],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",1968500],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"3757\"]]"); + p = add_epsg_def (filter, first, last, 3758, "epsg", 3758, + "NAD83(HARN) / Wyoming West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +el"); + add_proj4text (p, 2, + "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Wyoming West (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Networ"); + add_srs_wkt (p, 2, + "k\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",40.5],PARAMETER[\"central_meridian\",-110.083"); + add_srs_wkt (p, 9, + "3333333333],PARAMETER[\"scale_factor\",0.9999375],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",2624666.6667],PARAMETER[\"false_no"); + add_srs_wkt (p, 11, + "rthing\",328083.3333],UNIT[\"US survey foot\",0.30480060"); + add_srs_wkt (p, 12, + "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); + add_srs_wkt (p, 13, + "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3758\"]]"); + p = add_epsg_def (filter, first, last, 3759, "epsg", 3759, + "NAD83 / Hawaii zone 3 (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99"); + add_proj4text (p, 1, + "999 +x_0=500000.00001016 +y_0=0 +datum=NAD83 +units=us-f"); + add_proj4text (p, 2, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Hawaii zone 3 (ftUS)\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",21.16666666"); + add_srs_wkt (p, 8, + "666667],PARAMETER[\"central_meridian\",-158],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.99999],PARAMETER[\"false_easting\",1640"); + add_srs_wkt (p, 10, + "416.6667],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); + add_srs_wkt (p, 11, + "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"3759\"]]"); + p = add_epsg_def (filter, first, last, 3760, "epsg", 3760, + "NAD83(HARN) / Hawaii zone 3 (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99"); + add_proj4text (p, 1, + "999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,"); + add_proj4text (p, 2, + "0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Hawaii zone 3 (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netwo"); + add_srs_wkt (p, 2, + "rk\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",21.16666666666667],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",-158],PARAMETER[\"scale_factor\",0.99999],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",1640416.6667],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 13, + "NORTH],AUTHORITY[\"EPSG\",\"3760\"]]"); + p = add_epsg_def (filter, first, last, 3761, "epsg", 3761, + "NAD83(CSRS) / UTM zone 22N"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / UTM zone 22N\",GEOGCS[\"NAD83(CSR"); + add_srs_wkt (p, 1, + "S)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",0],PARAMETER[\"central_meridian\",-51],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3761\"]]"); + p = add_epsg_def (filter, first, last, 3762, "epsg", 3762, + "WGS 84 / South Georgia Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-54 +lat_2=-54.75 +lat_0=-55 +lon_0=-37"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / South Georgia Lambert\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",-54],PARAMETER[\"standard_parallel_2\",-54"); + add_srs_wkt (p, 8, + ".75],PARAMETER[\"latitude_of_origin\",-55],PARAMETER[\"c"); + add_srs_wkt (p, 9, + "entral_meridian\",-37],PARAMETER[\"false_easting\",0],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"3762\"]]"); + p = add_epsg_def (filter, first, last, 3763, "epsg", 3763, + "ETRS89 / Portugal TM06"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=39.66825833333333 +lon_0=-8.133108333"); + add_proj4text (p, 1, + "333334 +k=1 +x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Portugal TM06\",GEOGCS[\"ETRS89\",DATU"); + add_srs_wkt (p, 1, + "M[\"European_Terrestrial_Reference_System_1989\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "39.66825833333333],PARAMETER[\"central_meridian\",-8.133"); + add_srs_wkt (p, 9, + "108333333334],PARAMETER[\"scale_factor\",1],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 12, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3763\"]]"); + p = add_epsg_def (filter, first, last, 3764, "epsg", 3764, + "NZGD2000 / Chatham Island Circuit 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=400000 +y"); + add_proj4text (p, 1, + "_0=800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 2, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Chatham Island Circuit 2000\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NZGD2000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",-44],PARAMETER[\"central_meridian\",-176.5],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",40"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",800000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"37"); + add_srs_wkt (p, 12, + "64\"]]"); + p = add_epsg_def (filter, first, last, 3765, "epsg", 3765, + "HTRS96 / Croatia TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=16.5 +k=0.9999 +x_0=500000 +"); + add_proj4text (p, 1, + "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"HTRS96 / Croatia TM\",GEOGCS[\"HTRS96\",DATUM[\""); + add_srs_wkt (p, 1, + "Croatian_Terrestrial_Reference_System\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6761\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4761\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",16.5],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9999],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"3765\"]]"); + p = add_epsg_def (filter, first, last, 3766, "epsg", 3766, + "HTRS96 / Croatia LCC"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.91666666666666 +lat_2=43.08333333333"); + add_proj4text (p, 1, + "334 +lat_0=0 +lon_0=16.5 +x_0=0 +y_0=0 +ellps=GRS80 +tow"); + add_proj4text (p, 2, + "gs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"HTRS96 / Croatia LCC\",GEOGCS[\"HTRS96\",DATUM["); + add_srs_wkt (p, 1, + "\"Croatian_Terrestrial_Reference_System\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6761\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4761\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",45.91666666666666],PARAMETER[\"standard_parallel_2\",43"); + add_srs_wkt (p, 9, + ".08333333333334],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"central_meridian\",16.5],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 12, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); + add_srs_wkt (p, 13, + "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3766\"]]"); + p = add_epsg_def (filter, first, last, 3767, "epsg", 3767, + "HTRS96 / UTM zone 33N"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"HTRS96 / UTM zone 33N\",GEOGCS[\"HTRS96\",DATUM"); + add_srs_wkt (p, 1, + "[\"Croatian_Terrestrial_Reference_System\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6761\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4761\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",15],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"3767\"]]"); + p = add_epsg_def (filter, first, last, 3768, "epsg", 3768, + "HTRS96 / UTM zone 34N"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"HTRS96 / UTM zone 34N\",GEOGCS[\"HTRS96\",DATUM"); + add_srs_wkt (p, 1, + "[\"Croatian_Terrestrial_Reference_System\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6761\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4761\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",21],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"3768\"]]"); + p = add_epsg_def (filter, first, last, 3769, "epsg", 3769, + "Bermuda 1957 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=clrk66 +towgs84=-73,213,296,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Bermuda 1957 / UTM zone 20N\",GEOGCS[\"Bermuda "); + add_srs_wkt (p, 1, + "1957\",DATUM[\"Bermuda_1957\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[-73,213,296,0,0,0,0],AUTHORITY[\"EPSG\",\"6216\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4216\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"3769\"]]"); + p = add_epsg_def (filter, first, last, 3770, "epsg", 3770, + "BDA2000 / Bermuda 2000 National Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=32 +lon_0=-64.75 +k=1 +x_0=550000 +y_"); + add_proj4text (p, 1, + "0=100000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +n"); + add_proj4text (p, 2, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"BDA2000 / Bermuda 2000 National Grid\",GEOGCS[\""); + add_srs_wkt (p, 1, + "BDA2000\",DATUM[\"Bermuda_2000\",SPHEROID[\"WGS 84\",637"); + add_srs_wkt (p, 2, + "8137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6762\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4762\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",32],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-64.75],PARAMETER[\"scale_factor\",1],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",550000],PARAMETER[\"false_no"); + add_srs_wkt (p, 10, + "rthing\",100000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"3770\"]]"); + p = add_epsg_def (filter, first, last, 3771, "epsg", 3771, + "NAD27 / Alberta 3TM ref merid 111 W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alberta 3TM ref merid 111 W\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); + add_srs_wkt (p, 2, + "larke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-111],PARAMETER[\"scale_factor\",0.9999],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 11, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"3771\"]]"); + p = add_epsg_def (filter, first, last, 3772, "epsg", 3772, + "NAD27 / Alberta 3TM ref merid 114 W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alberta 3TM ref merid 114 W\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); + add_srs_wkt (p, 2, + "larke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-114],PARAMETER[\"scale_factor\",0.9999],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 11, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"3772\"]]"); + p = add_epsg_def (filter, first, last, 3773, "epsg", 3773, + "NAD27 / Alberta 3TM ref merid 117 W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alberta 3TM ref merid 117 W\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); + add_srs_wkt (p, 2, + "larke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-117],PARAMETER[\"scale_factor\",0.9999],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 11, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"3773\"]]"); + p = add_epsg_def (filter, first, last, 3774, "epsg", 3774, + "NAD27 / Alberta 3TM ref merid 120 W (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alberta 3TM ref merid 120 W (deprecated"); + add_srs_wkt (p, 1, + ")\",GEOGCS[\"NAD27\",DATUM[\"North_American_Datum_1927\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Clarke 1866\",6378206.4,294.9786982139006,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4267\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-120],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"3774\"]]"); + p = add_epsg_def (filter, first, last, 3775, "epsg", 3775, + "NAD83 / Alberta 3TM ref merid 111 W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alberta 3TM ref merid 111 W\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-111],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"3775\"]]"); + p = add_epsg_def (filter, first, last, 3776, "epsg", 3776, + "NAD83 / Alberta 3TM ref merid 114 W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alberta 3TM ref merid 114 W\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-114],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"3776\"]]"); + p = add_epsg_def (filter, first, last, 3777, "epsg", 3777, + "NAD83 / Alberta 3TM ref merid 117 W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alberta 3TM ref merid 117 W\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"3777\"]]"); + p = add_epsg_def (filter, first, last, 3778, "epsg", 3778, + "NAD83 / Alberta 3TM ref merid 120 W (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alberta 3TM ref merid 120 W (deprecated"); + add_srs_wkt (p, 1, + ")\",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",-120],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"3778\"]]"); + p = add_epsg_def (filter, first, last, 3779, "epsg", 3779, + "NAD83(CSRS) / Alberta 3TM ref merid 111 W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / Alberta 3TM ref merid 111 W\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4617\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "111],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3779\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 3780, "epsg", 3780, + "NAD83(CSRS) / Alberta 3TM ref merid 114 W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-114 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / Alberta 3TM ref merid 114 W\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4617\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "114],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3780\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 3781, "epsg", 3781, + "NAD83(CSRS) / Alberta 3TM ref merid 117 W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / Alberta 3TM ref merid 117 W\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4617\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "117],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3781\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 3782, "epsg", 3782, + "NAD83(CSRS) / Alberta 3TM ref merid 120 W (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / Alberta 3TM ref merid 120 W (depr"); + add_srs_wkt (p, 1, + "ecated)\",GEOGCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_"); + add_srs_wkt (p, 2, + "Spatial_Reference_System\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 3, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 4, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4617\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",-120],PARAMETER[\"scale_factor\",0.9999],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"3782\"]]"); + p = add_epsg_def (filter, first, last, 3783, "epsg", 3783, + "Pitcairn 2006 / Pitcairn TM 2006"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-25.06855261111111 +lon_0=-130.112967"); + add_proj4text (p, 1, + "1111111 +k=1 +x_0=14200 +y_0=15500 +ellps=WGS84 +towgs84"); + add_proj4text (p, 2, + "=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pitcairn 2006 / Pitcairn TM 2006\",GEOGCS[\"Pit"); + add_srs_wkt (p, 1, + "cairn 2006\",DATUM[\"Pitcairn_2006\",SPHEROID[\"WGS 84\""); + add_srs_wkt (p, 2, + ",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6763\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4763\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",-25.068552611"); + add_srs_wkt (p, 8, + "11111],PARAMETER[\"central_meridian\",-130.1129671111111"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",14200],PARAMETER[\"false_northing\",15500],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3783\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 3784, "epsg", 3784, + "Pitcairn 1967 / UTM zone 9S"); + add_proj4text (p, 0, + "+proj=utm +zone=9 +south +ellps=intl +towgs84=185,165,42"); + add_proj4text (p, 1, + ",0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pitcairn 1967 / UTM zone 9S\",GEOGCS[\"Pitcairn"); + add_srs_wkt (p, 1, + " 1967\",DATUM[\"Pitcairn_1967\",SPHEROID[\"International"); + add_srs_wkt (p, 2, + " 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[185,165,42,0,0,0,0],AUTHORITY[\"EPSG\",\"6729\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4729\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-129],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"3784\"]]"); + p = add_epsg_def (filter, first, last, 3785, "epsg", 3785, + "Popular Visualisation CRS / Mercator (deprecated)"); + add_proj4text (p, 0, + "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 "); + add_proj4text (p, 1, + "+x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext "); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Popular Visualisation CRS / Mercator (deprecate"); + add_srs_wkt (p, 1, + "d)\",GEOGCS[\"Popular Visualisation CRS\",DATUM[\"Popula"); + add_srs_wkt (p, 2, + "r_Visualisation_Datum\",SPHEROID[\"Popular Visualisation"); + add_srs_wkt (p, 3, + " Sphere\",6378137,0,AUTHORITY[\"EPSG\",\"7059\"]],TOWGS8"); + add_srs_wkt (p, 4, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6055\"]],PRIMEM[\""); + add_srs_wkt (p, 5, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 6, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 7, + "HORITY[\"EPSG\",\"4055\"]],PROJECTION[\"Mercator_1SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],EXTENSION[\"PRO"); + add_srs_wkt (p, 12, + "J4\",\"+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon"); + add_srs_wkt (p, 13, + "_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +"); + add_srs_wkt (p, 14, + "wktext +no_defs\"],AUTHORITY[\"EPSG\",\"3785\"]]"); + p = add_epsg_def (filter, first, last, 3786, "epsg", 3786, + "World Equidistant Cylindrical (Sphere) (deprecated)"); + add_proj4text (p, 0, + "+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6"); + add_proj4text (p, 1, + "371007 +b=6371007 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"World Equidistant Cylindrical (Sphere) (depreca"); + add_srs_wkt (p, 1, + "ted)\",GEOGCS[\"Unspecified datum based upon the GRS 198"); + add_srs_wkt (p, 2, + "0 Authalic Sphere\",DATUM[\"Not_specified_based_on_GRS_1"); + add_srs_wkt (p, 3, + "980_Authalic_Sphere\",SPHEROID[\"GRS 1980 Authalic Spher"); + add_srs_wkt (p, 4, + "e\",6371007,0,AUTHORITY[\"EPSG\",\"7048\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"6047\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4047\"]],PR"); + add_srs_wkt (p, 8, + "OJECTION[\"Equirectangular\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 9, + "igin\",0],PARAMETER[\"central_meridian\",0],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 12, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3786\"]]"); + p = add_epsg_def (filter, first, last, 3787, "epsg", 3787, + "MGI / Slovene National Grid (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=-5000000 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Slovene National Grid (deprecated)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"MGI\",DATUM[\"Militar_Geographische_Institute\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137"); + add_srs_wkt (p, 4, + ",1.474,5.297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIME"); + add_srs_wkt (p, 5, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 6, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 7, + ",AUTHORITY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 8, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 9, + "[\"central_meridian\",15],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 10, + "999],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"9001\"]],AXIS[\"Y\",EAST],AXIS[\"X\",NORTH],AUTHOR"); + add_srs_wkt (p, 13, + "ITY[\"EPSG\",\"3787\"]]"); + p = add_epsg_def (filter, first, last, 3788, "epsg", 3788, + "NZGD2000 / Auckland Islands TM 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=166 +k=1 +x_0=3500000 +y_0=1"); + add_proj4text (p, 1, + "0000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Auckland Islands TM 2000\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NZGD2000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",166],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",1],PARAMETER[\"false_easting\",3500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3788\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 3789, "epsg", 3789, + "NZGD2000 / Campbell Island TM 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=169 +k=1 +x_0=3500000 +y_0=1"); + add_proj4text (p, 1, + "0000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Campbell Island TM 2000\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ZGD2000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"central_meridian\",169],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",1],PARAMETER[\"false_easting\",3500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3789\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 3790, "epsg", 3790, + "NZGD2000 / Antipodes Islands TM 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=179 +k=1 +x_0=3500000 +y_0=1"); + add_proj4text (p, 1, + "0000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Antipodes Islands TM 2000\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NZGD2000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",179],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",1],PARAMETER[\"false_easting\",3500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3790\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 3791, "epsg", 3791, + "NZGD2000 / Raoul Island TM 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-178 +k=1 +x_0=3500000 +y_0="); + add_proj4text (p, 1, + "10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); + add_proj4text (p, 2, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Raoul Island TM 2000\",GEOGCS[\"NZGD"); + add_srs_wkt (p, 1, + "2000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",-178],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",3500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3791\"]]"); + p = add_epsg_def (filter, first, last, 3793, "epsg", 3793, + "NZGD2000 / Chatham Islands TM 2000"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-176.5 +k=1 +x_0=3500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / Chatham Islands TM 2000\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ZGD2000\",DATUM[\"New_Zealand_Geodetic_Datum_2000\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"central_meridian\",-176.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",3500000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3793"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 3794, "epsg", 3794, + "Slovenia 1996 / Slovene National Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Slovenia 1996 / Slovene National Grid\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Slovenia 1996\",DATUM[\"Slovenia_Geodetic_Datum_1996\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6765\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4765\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",15],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",-5000000],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST"); + add_srs_wkt (p, 12, + "],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3794\"]]"); + p = add_epsg_def (filter, first, last, 3795, "epsg", 3795, + "NAD27 / Cuba Norte"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=23 +lat_2=21.7 +lat_0=22.35 +lon_0=-81 "); + add_proj4text (p, 1, + "+x_0=500000 +y_0=280296.016 +datum=NAD27 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Cuba Norte\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"standard_parallel_1\",23],PARAMETER[\"standard_p"); + add_srs_wkt (p, 8, + "arallel_2\",21.7],PARAMETER[\"latitude_of_origin\",22.35"); + add_srs_wkt (p, 9, + "],PARAMETER[\"central_meridian\",-81],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",280296.01"); + add_srs_wkt (p, 11, + "6],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"3795\"]]"); + p = add_epsg_def (filter, first, last, 3796, "epsg", 3796, + "NAD27 / Cuba Sur"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=21.3 +lat_2=20.13333333333333 +lat_0=20"); + add_proj4text (p, 1, + ".71666666666667 +lon_0=-76.83333333333333 +x_0=500000 +y"); + add_proj4text (p, 2, + "_0=229126.939 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Cuba Sur\",GEOGCS[\"NAD27\",DATUM[\"Nor"); + add_srs_wkt (p, 1, + "th_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637820"); + add_srs_wkt (p, 2, + "6.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"426"); + add_srs_wkt (p, 6, + "7\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); + add_srs_wkt (p, 7, + "TER[\"standard_parallel_1\",21.3],PARAMETER[\"standard_p"); + add_srs_wkt (p, 8, + "arallel_2\",20.13333333333333],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 9, + "rigin\",20.71666666666667],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",-76.83333333333333],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",229126.939],UNIT[\"metre\""); + add_srs_wkt (p, 12, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"37"); + add_srs_wkt (p, 13, + "96\"]]"); + p = add_epsg_def (filter, first, last, 3797, "epsg", 3797, + "NAD27 / MTQ Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0="); + add_proj4text (p, 1, + "800000 +y_0=0 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / MTQ Lambert\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 7, + "AMETER[\"standard_parallel_1\",50],PARAMETER[\"standard_"); + add_srs_wkt (p, 8, + "parallel_2\",46],PARAMETER[\"latitude_of_origin\",44],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"central_meridian\",-70],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",800000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3797\"]]"); + p = add_epsg_def (filter, first, last, 3798, "epsg", 3798, + "NAD83 / MTQ Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0="); + add_proj4text (p, 1, + "800000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTQ Lambert\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); + add_srs_wkt (p, 7, + "nic_2SP\"],PARAMETER[\"standard_parallel_1\",50],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_2\",46],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 9, + "rigin\",44],PARAMETER[\"central_meridian\",-70],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",800000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3798\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 3799, "epsg", 3799, + "NAD83(CSRS) / MTQ Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=50 +lat_2=46 +lat_0=44 +lon_0=-70 +x_0="); + add_proj4text (p, 1, + "800000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTQ Lambert\",GEOGCS[\"NAD83(CSRS"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",50],PARAMETER[\"standard_parallel_2\",46],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",44],PARAMETER[\"central"); + add_srs_wkt (p, 10, + "_meridian\",-70],PARAMETER[\"false_easting\",800000],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"3799\"]]"); + p = add_epsg_def (filter, first, last, 3800, "epsg", 3800, + "NAD27 / Alberta 3TM ref merid 120 W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alberta 3TM ref merid 120 W\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); + add_srs_wkt (p, 2, + "larke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-120],PARAMETER[\"scale_factor\",0.9999],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 11, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"3800\"]]"); + p = add_epsg_def (filter, first, last, 3801, "epsg", 3801, + "NAD83 / Alberta 3TM ref merid 120 W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alberta 3TM ref merid 120 W\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-120],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"3801\"]]"); + p = add_epsg_def (filter, first, last, 3802, "epsg", 3802, + "NAD83(CSRS) / Alberta 3TM ref merid 120 W"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-120 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / Alberta 3TM ref merid 120 W\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4617\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "120],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3802\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 3812, "epsg", 3812, + "ETRS89 / Belgian Lambert 2008"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666"); + add_proj4text (p, 1, + "666 +lat_0=50.797815 +lon_0=4.359215833333333 +x_0=64932"); + add_proj4text (p, 2, + "8 +y_0=665262 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units"); + add_proj4text (p, 3, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Belgian Lambert 2008\",GEOGCS[\"ETRS89"); + add_srs_wkt (p, 1, + "\",DATUM[\"European_Terrestrial_Reference_System_1989\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",49.83333333333334],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",51.16666666666666],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",50.797815],PARAMETER[\"central_meridian\",4.35"); + add_srs_wkt (p, 11, + "9215833333333],PARAMETER[\"false_easting\",649328],PARAM"); + add_srs_wkt (p, 12, + "ETER[\"false_northing\",665262],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 14, + "],AUTHORITY[\"EPSG\",\"3812\"]]"); + p = add_epsg_def (filter, first, last, 3814, "epsg", 3814, + "NAD83 / Mississippi TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0="); + add_proj4text (p, 1, + "500000 +y_0=1300000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Mississippi TM\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",32.5],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-89.75],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9998335],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",1300000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"3814\"]]"); + p = add_epsg_def (filter, first, last, 3815, "epsg", 3815, + "NAD83(HARN) / Mississippi TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0="); + add_proj4text (p, 1, + "500000 +y_0=1300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Mississippi TM\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",32.5],PARAMETER[\"central_meridian\",-89.75],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",0.9998335],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",1300000],UNIT"); + add_srs_wkt (p, 11, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 12, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3815\"]]"); + p = add_epsg_def (filter, first, last, 3816, "epsg", 3816, + "NAD83(NSRS2007) / Mississippi TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0="); + add_proj4text (p, 1, + "500000 +y_0=1300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Mississippi TM\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",32.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-89.75],PARAMETER[\"scale_factor\",0.9998335],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "1300000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 12, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3816\"]]"); + p = add_epsg_def (filter, first, last, 3819, "epsg", 3819, + "HD1909"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=595.48,121.69,515.3"); + add_proj4text (p, 1, + "5,4.115,-2.9383,0.853,-3.408 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"HD1909\",DATUM[\"Hungarian_Datum_1909\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EP"); + add_srs_wkt (p, 2, + "SG\",\"7004\"]],TOWGS84[595.48,121.69,515.35,4.115,-2.93"); + add_srs_wkt (p, 3, + "83,0.853,-3.408],AUTHORITY[\"EPSG\",\"1024\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"3819\"]]"); + p = add_epsg_def (filter, first, last, 3821, "epsg", 3821, + "TWD67"); + add_proj4text (p, 0, + "+proj=longlat +ellps=aust_SA +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"TWD67\",DATUM[\"Taiwan_Datum_1967\",SPHEROID[\""); + add_srs_wkt (p, 1, + "GRS 1967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7050\"]],AUTHORITY[\"EPSG\",\"1025\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 3, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 4, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"3821\"]]"); + p = add_epsg_def (filter, first, last, 3824, "epsg", 3824, + "TWD97"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"TWD97\",DATUM[\"Taiwan_Datum_1997\",SPHEROID[\""); + add_srs_wkt (p, 1, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1026\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"3824\"]]"); + p = add_epsg_def (filter, first, last, 3825, "epsg", 3825, + "TWD97 / TM2 zone 119"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.9999 +x_0=250000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"TWD97 / TM2 zone 119\",GEOGCS[\"TWD97\",DATUM[\""); + add_srs_wkt (p, 1, + "Taiwan_Datum_1997\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 2, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"1026\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"3824\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",119],PARAMETER[\"scale_factor\",0.9999],PARAMETER["); + add_srs_wkt (p, 9, + "\"false_easting\",250000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3825\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 3826, "epsg", 3826, + "TWD97 / TM2 zone 121"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"TWD97 / TM2 zone 121\",GEOGCS[\"TWD97\",DATUM[\""); + add_srs_wkt (p, 1, + "Taiwan_Datum_1997\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 2, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"1026\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"3824\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",121],PARAMETER[\"scale_factor\",0.9999],PARAMETER["); + add_srs_wkt (p, 9, + "\"false_easting\",250000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3826\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 3827, "epsg", 3827, + "TWD67 / TM2 zone 119"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.9999 +x_0=250000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=aust_SA +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TWD67 / TM2 zone 119\",GEOGCS[\"TWD67\",DATUM[\""); + add_srs_wkt (p, 1, + "Taiwan_Datum_1967\",SPHEROID[\"GRS 1967 Modified\",63781"); + add_srs_wkt (p, 2, + "60,298.25,AUTHORITY[\"EPSG\",\"7050\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"1025\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"3821\"]],PROJEC"); + add_srs_wkt (p, 6, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 7, + "igin\",0],PARAMETER[\"central_meridian\",119],PARAMETER["); + add_srs_wkt (p, 8, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",250"); + add_srs_wkt (p, 9, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 10, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 11, + "NORTH],AUTHORITY[\"EPSG\",\"3827\"]]"); + p = add_epsg_def (filter, first, last, 3828, "epsg", 3828, + "TWD67 / TM2 zone 121"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.9999 +x_0=250000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=aust_SA +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TWD67 / TM2 zone 121\",GEOGCS[\"TWD67\",DATUM[\""); + add_srs_wkt (p, 1, + "Taiwan_Datum_1967\",SPHEROID[\"GRS 1967 Modified\",63781"); + add_srs_wkt (p, 2, + "60,298.25,AUTHORITY[\"EPSG\",\"7050\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"1025\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"3821\"]],PROJEC"); + add_srs_wkt (p, 6, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 7, + "igin\",0],PARAMETER[\"central_meridian\",121],PARAMETER["); + add_srs_wkt (p, 8, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",250"); + add_srs_wkt (p, 9, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 10, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 11, + "NORTH],AUTHORITY[\"EPSG\",\"3828\"]]"); + p = add_epsg_def (filter, first, last, 3829, "epsg", 3829, + "Hu Tzu Shan 1950 / UTM zone 51N"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +ellps=intl +towgs84=-637,-549,-203,0"); + add_proj4text (p, 1, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Hu Tzu Shan 1950 / UTM zone 51N\",GEOGCS[\"Hu T"); + add_srs_wkt (p, 1, + "zu Shan 1950\",DATUM[\"Hu_Tzu_Shan_1950\",SPHEROID[\"Int"); + add_srs_wkt (p, 2, + "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-637,-549,-203,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6236\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4236\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",123],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 12, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"3829\"]]"); + p = add_epsg_def (filter, first, last, 3832, "epsg", 3832, + "WGS 84 / PDC Mercator"); + add_proj4text (p, 0, + "+proj=merc +lon_0=150 +k=1 +x_0=0 +y_0=0 +datum=WGS84 +u"); + add_proj4text (p, 1, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / PDC Mercator\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Merc"); + add_srs_wkt (p, 6, + "ator_1SP\"],PARAMETER[\"central_meridian\",150],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 9, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 10, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"3832\"]]"); + p = add_epsg_def (filter, first, last, 3833, "epsg", 3833, + "Pulkovo 1942(58) / Gauss-Kruger zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.8"); + add_proj4text (p, 2, + "44,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / Gauss-Kruger zone 2\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-"); + add_srs_wkt (p, 4, + "0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4179\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",9],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",2500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"3833\"]]"); + p = add_epsg_def (filter, first, last, 3834, "epsg", 3834, + "Pulkovo 1942(83) / Gauss-Kruger zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / Gauss-Kruger zone 2\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",1],PARAMETER[\"false_easting\",2500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3834\"]]"); + p = add_epsg_def (filter, first, last, 3835, "epsg", 3835, + "Pulkovo 1942(83) / Gauss-Kruger zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / Gauss-Kruger zone 3\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",1],PARAMETER[\"false_easting\",3500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3835\"]]"); + p = add_epsg_def (filter, first, last, 3836, "epsg", 3836, + "Pulkovo 1942(83) / Gauss-Kruger zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / Gauss-Kruger zone 4\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",21],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",1],PARAMETER[\"false_easting\",4500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3836\"]]"); + p = add_epsg_def (filter, first, last, 3837, "epsg", 3837, + "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.8"); + add_proj4text (p, 2, + "44,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 3"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); + add_srs_wkt (p, 4, + "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 5, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",9],PARAMETER[\"scale_factor\",1],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",3500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"3837\"]]"); + p = add_epsg_def (filter, first, last, 3838, "epsg", 3838, + "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); + add_proj4text (p, 2, + "844,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 4"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); + add_srs_wkt (p, 4, + "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 5, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",12],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",4500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"3838\"]]"); + p = add_epsg_def (filter, first, last, 3839, "epsg", 3839, + "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); + add_proj4text (p, 2, + "844,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 9"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); + add_srs_wkt (p, 4, + "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 5, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",27],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",9500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"3839\"]]"); + p = add_epsg_def (filter, first, last, 3840, "epsg", 3840, + "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 10"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0"); + add_proj4text (p, 2, + ".844,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 1"); + add_srs_wkt (p, 1, + "0\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.05"); + add_srs_wkt (p, 4, + "3,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 5, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",30],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",10500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 11, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"3840\"]]"); + p = add_epsg_def (filter, first, last, 3841, "epsg", 3841, + "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 6"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",18],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",65"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3841\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 3842, "epsg", 3842, + "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7"); + add_srs_wkt (p, 1, + " (deprecated)\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulk"); + add_srs_wkt (p, 2, + "ovo_1942_83\",SPHEROID[\"Krassowsky 1940\",6378245,298.3"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4178\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",18],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",6500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 11, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"3842\"]]"); + p = add_epsg_def (filter, first, last, 3843, "epsg", 3843, + "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8"); + add_srs_wkt (p, 1, + " (deprecated)\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulk"); + add_srs_wkt (p, 2, + "ovo_1942_83\",SPHEROID[\"Krassowsky 1940\",6378245,298.3"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4178\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",18],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",6500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 11, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"3843\"]]"); + p = add_epsg_def (filter, first, last, 3844, "epsg", 3844, + "Pulkovo 1942(58) / Stereo70"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=500000 +ellps=krass +towgs84=33.4,-146.6,-76.3,-0.3"); + add_proj4text (p, 2, + "59,-0.053,0.844,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / Stereo70\",GEOGCS[\"Pulkovo "); + add_srs_wkt (p, 1, + "1942(58)\",DATUM[\"Pulkovo_1942_58\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[33.4,-146.6,-76.3,-0.359,-0.053,0.844,-0.84],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6179\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4179"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",46],PARAMETER[\"central_meridian\",2"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",0.99975],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",500000],PARAMETER[\"false_northing\",500000],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"3844\"]]"); + p = add_epsg_def (filter, first, last, 3845, "epsg", 3845, + "SWEREF99 / RT90 7.5 gon V emulation"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=11.30625 +k=1.000006 +x_0=15"); + add_proj4text (p, 1, + "00025.141 +y_0=-667.282 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 / RT90 7.5 gon V emulation\",GEOGCS[\""); + add_srs_wkt (p, 1, + "SWEREF99\",DATUM[\"SWEREF99\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6619\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4619\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",11.30625],PARAMETER[\"scale_factor\",1.00"); + add_srs_wkt (p, 9, + "0006],PARAMETER[\"false_easting\",1500025.141],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",-667.282],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3845\"]]"); + p = add_epsg_def (filter, first, last, 3846, "epsg", 3846, + "SWEREF99 / RT90 5 gon V emulation"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=13.55626666666667 +k=1.00000"); + add_proj4text (p, 1, + "58 +x_0=1500044.695 +y_0=-667.13 +ellps=GRS80 +towgs84=0"); + add_proj4text (p, 2, + ",0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 / RT90 5 gon V emulation\",GEOGCS[\"SW"); + add_srs_wkt (p, 1, + "EREF99\",DATUM[\"SWEREF99\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6619\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4619\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",13.55626666666667],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",1.0000058],PARAMETER[\"false_easting\",1500044.695],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",-667.13],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3846\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 3847, "epsg", 3847, + "SWEREF99 / RT90 2.5 gon V emulation"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15.80628452944445 +k=1.00000"); + add_proj4text (p, 1, + "561024 +x_0=1500064.274 +y_0=-667.711 +ellps=GRS80 +towg"); + add_proj4text (p, 2, + "s84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 / RT90 2.5 gon V emulation\",GEOGCS[\""); + add_srs_wkt (p, 1, + "SWEREF99\",DATUM[\"SWEREF99\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6619\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4619\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",15.80628452944445],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1.00000561024],PARAMETER[\"false_easting\",1500064."); + add_srs_wkt (p, 10, + "274],PARAMETER[\"false_northing\",-667.711],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "3847\"]]"); + p = add_epsg_def (filter, first, last, 3848, "epsg", 3848, + "SWEREF99 / RT90 0 gon emulation"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18.0563 +k=1.0000054 +x_0=15"); + add_proj4text (p, 1, + "00083.521 +y_0=-668.8440000000001 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 / RT90 0 gon emulation\",GEOGCS[\"SWER"); + add_srs_wkt (p, 1, + "EF99\",DATUM[\"SWEREF99\",SPHEROID[\"GRS 1980\",6378137,"); + add_srs_wkt (p, 2, + "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6619\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4619\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 7, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",18.0563],PARAMETER[\"scale_factor\",1.000005"); + add_srs_wkt (p, 9, + "4],PARAMETER[\"false_easting\",1500083.521],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",-668.844],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3848\"]]"); + p = add_epsg_def (filter, first, last, 3849, "epsg", 3849, + "SWEREF99 / RT90 2.5 gon O emulation"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=20.30631666666667 +k=1.00000"); + add_proj4text (p, 1, + "52 +x_0=1500102.765 +y_0=-670.706 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 / RT90 2.5 gon O emulation\",GEOGCS[\""); + add_srs_wkt (p, 1, + "SWEREF99\",DATUM[\"SWEREF99\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6619\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4619\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",20.30631666666667],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1.0000052],PARAMETER[\"false_easting\",1500102.765]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",-670.706],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3849"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 3850, "epsg", 3850, + "SWEREF99 / RT90 5 gon O emulation"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=22.55633333333333 +k=1.00000"); + add_proj4text (p, 1, + "49 +x_0=1500121.846 +y_0=-672.557 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SWEREF99 / RT90 5 gon O emulation\",GEOGCS[\"SW"); + add_srs_wkt (p, 1, + "EREF99\",DATUM[\"SWEREF99\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6619\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4619\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",22.55633333333333],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",1.0000049],PARAMETER[\"false_easting\",1500121.846],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",-672.557],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3850\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 3851, "epsg", 3851, + "NZGD2000 / NZCS2000"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-37.5 +lat_2=-44.5 +lat_0=-41 +lon_0=17"); + add_proj4text (p, 1, + "3 +x_0=3000000 +y_0=7000000 +ellps=GRS80 +towgs84=0,0,0,"); + add_proj4text (p, 2, + "0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / NZCS2000\",GEOGCS[\"NZGD2000\",DATUM"); + add_srs_wkt (p, 1, + "[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",-3"); + add_srs_wkt (p, 8, + "7.5],PARAMETER[\"standard_parallel_2\",-44.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"latitude_of_origin\",-41],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 10, + "\",173],PARAMETER[\"false_easting\",3000000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",7000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"3851\"]]"); + p = add_epsg_def (filter, first, last, 3852, "epsg", 3852, + "RSRGD2000 / DGLC2000"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-90 +lon_0=157 +x_0=500000 +y_0=0 +ellps=GR"); + add_proj4text (p, 2, + "S80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RSRGD2000 / DGLC2000\",GEOGCS[\"RSRGD2000\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Ross_Sea_Region_Geodetic_Datum_2000\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6764\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4764\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",-76.66666666666667],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",-79.33333333333333],PARAMETER[\"latitude_of_origin\",-9"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"central_meridian\",157],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 12, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"3852\"]]"); + p = add_epsg_def (filter, first, last, 3854, "epsg", 3854, + "County ST74"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18.05787 +k=0.99999506 +x_0="); + add_proj4text (p, 1, + "100182.7406 +y_0=-6500620.1207 +ellps=GRS80 +towgs84=0,0"); + add_proj4text (p, 2, + ",0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"County ST74\",GEOGCS[\"SWEREF99\",DATUM[\"SWERE"); + add_srs_wkt (p, 1, + "F99\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"6619\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4619\"]]"); + add_srs_wkt (p, 6, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 7, + "e_of_origin\",0],PARAMETER[\"central_meridian\",18.05787"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",0.99999506],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",100182.7406],PARAMETER[\"false_northing\",-"); + add_srs_wkt (p, 10, + "6500620.1207],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AUTHORITY[\"EPSG\",\"3854\"]]"); + p = add_epsg_def (filter, first, last, 3857, "epsg", 3857, + "WGS 84 / Pseudo-Mercator"); + add_proj4text (p, 0, + "+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 "); + add_proj4text (p, 1, + "+x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext "); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / Pseudo-Mercator\",GEOGCS[\"WGS 84\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2572235"); + add_srs_wkt (p, 2, + "63,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"63"); + add_srs_wkt (p, 3, + "26\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"M"); + add_srs_wkt (p, 6, + "ercator_1SP\"],PARAMETER[\"central_meridian\",0],PARAMET"); + add_srs_wkt (p, 7, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 9, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 10, + "EXTENSION[\"PROJ4\",\"+proj=merc +a=6378137 +b=6378137 +"); + add_srs_wkt (p, 11, + "lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +n"); + add_srs_wkt (p, 12, + "adgrids=@null +wktext +no_defs\"],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "3857\"]]"); + p = add_epsg_def (filter, first, last, 3873, "epsg", 3873, + "ETRS89 / GK19FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=19500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / GK19FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); + add_srs_wkt (p, 1, + "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",19],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",19500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"3873\"]]"); + p = add_epsg_def (filter, first, last, 3874, "epsg", 3874, + "ETRS89 / GK20FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=20500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / GK20FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); + add_srs_wkt (p, 1, + "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",20],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",20500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"3874\"]]"); + p = add_epsg_def (filter, first, last, 3875, "epsg", 3875, + "ETRS89 / GK21FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=21500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / GK21FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); + add_srs_wkt (p, 1, + "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",21],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",21500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"3875\"]]"); + p = add_epsg_def (filter, first, last, 3876, "epsg", 3876, + "ETRS89 / GK22FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=22 +k=1 +x_0=22500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / GK22FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); + add_srs_wkt (p, 1, + "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",22],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",22500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"3876\"]]"); + p = add_epsg_def (filter, first, last, 3877, "epsg", 3877, + "ETRS89 / GK23FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=23500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / GK23FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); + add_srs_wkt (p, 1, + "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",23],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",23500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"3877\"]]"); + p = add_epsg_def (filter, first, last, 3878, "epsg", 3878, + "ETRS89 / GK24FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=24500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / GK24FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); + add_srs_wkt (p, 1, + "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",24],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",24500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"3878\"]]"); + p = add_epsg_def (filter, first, last, 3879, "epsg", 3879, + "ETRS89 / GK25FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=25500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / GK25FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); + add_srs_wkt (p, 1, + "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",25],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",25500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"3879\"]]"); + p = add_epsg_def (filter, first, last, 3880, "epsg", 3880, + "ETRS89 / GK26FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=26 +k=1 +x_0=26500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / GK26FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); + add_srs_wkt (p, 1, + "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",26],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",26500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"3880\"]]"); + p = add_epsg_def (filter, first, last, 3881, "epsg", 3881, + "ETRS89 / GK27FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=27500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / GK27FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); + add_srs_wkt (p, 1, + "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",27],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",27500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"3881\"]]"); + p = add_epsg_def (filter, first, last, 3882, "epsg", 3882, + "ETRS89 / GK28FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=28500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / GK28FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); + add_srs_wkt (p, 1, + "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",28],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",28500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"3882\"]]"); + p = add_epsg_def (filter, first, last, 3883, "epsg", 3883, + "ETRS89 / GK29FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=29500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / GK29FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); + add_srs_wkt (p, 1, + "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",29],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",29500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"3883\"]]"); + p = add_epsg_def (filter, first, last, 3884, "epsg", 3884, + "ETRS89 / GK30FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=30500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / GK30FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); + add_srs_wkt (p, 1, + "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",30],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",30500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"3884\"]]"); + p = add_epsg_def (filter, first, last, 3885, "epsg", 3885, + "ETRS89 / GK31FIN"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=31500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / GK31FIN\",GEOGCS[\"ETRS89\",DATUM[\"Eu"); + add_srs_wkt (p, 1, + "ropean_Terrestrial_Reference_System_1989\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",31],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",31500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"3885\"]]"); + p = add_epsg_def (filter, first, last, 3889, "epsg", 3889, + "IGRS"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"IGRS\",DATUM[\"Iraqi_Geospatial_Reference_Syste"); + add_srs_wkt (p, 1, + "m\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1029\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"3889\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_18.c b/src/spatialite/src/srsinit/epsg_inlined_18.c new file mode 100644 index 0000000..ddfffa7 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_18.c @@ -0,0 +1,2770 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_18 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 3890, "epsg", 3890, + "IGRS / UTM zone 37N"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGRS / UTM zone 37N\",GEOGCS[\"IGRS\",DATUM[\"I"); + add_srs_wkt (p, 1, + "raqi_Geospatial_Reference_System\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1029\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"3889\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",39],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"3890\"]]"); + p = add_epsg_def (filter, first, last, 3891, "epsg", 3891, + "IGRS / UTM zone 38N"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGRS / UTM zone 38N\",GEOGCS[\"IGRS\",DATUM[\"I"); + add_srs_wkt (p, 1, + "raqi_Geospatial_Reference_System\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1029\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"3889\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",45],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"3891\"]]"); + p = add_epsg_def (filter, first, last, 3892, "epsg", 3892, + "IGRS / UTM zone 39N"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"IGRS / UTM zone 39N\",GEOGCS[\"IGRS\",DATUM[\"I"); + add_srs_wkt (p, 1, + "raqi_Geospatial_Reference_System\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1029\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"3889\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",51],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"3892\"]]"); + p = add_epsg_def (filter, first, last, 3893, "epsg", 3893, + "ED50 / Iraq National Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.02626833333333 +lon_0=46.5 +k=0.99"); + add_proj4text (p, 1, + "94 +x_0=800000 +y_0=0 +ellps=intl +towgs84=-87,-98,-121,"); + add_proj4text (p, 2, + "0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / Iraq National Grid\",GEOGCS[\"ED50\",DAT"); + add_srs_wkt (p, 1, + "UM[\"European_Datum_1950\",SPHEROID[\"International 1924"); + add_srs_wkt (p, 2, + "\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87"); + add_srs_wkt (p, 3, + ",-98,-121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",29.02626833333"); + add_srs_wkt (p, 8, + "333],PARAMETER[\"central_meridian\",46.5],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9994],PARAMETER[\"false_easting\",800000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"3893\"]]"); + p = add_epsg_def (filter, first, last, 3906, "epsg", 3906, + "MGI 1901"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=682,-203,480,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"MGI 1901\",DATUM[\"MGI_1901\",SPHEROID[\"Bessel"); + add_srs_wkt (p, 1, + " 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 2, + "4\"]],TOWGS84[682,-203,480,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "1031\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 4, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"3906\"]]"); + p = add_epsg_def (filter, first, last, 3907, "epsg", 3907, + "MGI 1901 / Balkans zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI 1901 / Balkans zone 5\",GEOGCS[\"MGI 1901\""); + add_srs_wkt (p, 1, + ",DATUM[\"MGI_1901\",SPHEROID[\"Bessel 1841\",6377397.155"); + add_srs_wkt (p, 2, + ",299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-"); + add_srs_wkt (p, 3, + "203,480,0,0,0,0],AUTHORITY[\"EPSG\",\"1031\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"3906\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",15],PARAMETER[\"scale_factor\",0.9999]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",5500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AUTHORITY[\"EPSG\",\"3907\"]]"); + p = add_epsg_def (filter, first, last, 3908, "epsg", 3908, + "MGI 1901 / Balkans zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI 1901 / Balkans zone 6\",GEOGCS[\"MGI 1901\""); + add_srs_wkt (p, 1, + ",DATUM[\"MGI_1901\",SPHEROID[\"Bessel 1841\",6377397.155"); + add_srs_wkt (p, 2, + ",299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-"); + add_srs_wkt (p, 3, + "203,480,0,0,0,0],AUTHORITY[\"EPSG\",\"1031\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"3906\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",18],PARAMETER[\"scale_factor\",0.9999]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",6500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AUTHORITY[\"EPSG\",\"3908\"]]"); + p = add_epsg_def (filter, first, last, 3909, "epsg", 3909, + "MGI 1901 / Balkans zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI 1901 / Balkans zone 7\",GEOGCS[\"MGI 1901\""); + add_srs_wkt (p, 1, + ",DATUM[\"MGI_1901\",SPHEROID[\"Bessel 1841\",6377397.155"); + add_srs_wkt (p, 2, + ",299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-"); + add_srs_wkt (p, 3, + "203,480,0,0,0,0],AUTHORITY[\"EPSG\",\"1031\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"3906\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",21],PARAMETER[\"scale_factor\",0.9999]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",7500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AUTHORITY[\"EPSG\",\"3909\"]]"); + p = add_epsg_def (filter, first, last, 3910, "epsg", 3910, + "MGI 1901 / Balkans zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI 1901 / Balkans zone 8\",GEOGCS[\"MGI 1901\""); + add_srs_wkt (p, 1, + ",DATUM[\"MGI_1901\",SPHEROID[\"Bessel 1841\",6377397.155"); + add_srs_wkt (p, 2, + ",299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-"); + add_srs_wkt (p, 3, + "203,480,0,0,0,0],AUTHORITY[\"EPSG\",\"1031\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"3906\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",24],PARAMETER[\"scale_factor\",0.9999]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",8500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AUTHORITY[\"EPSG\",\"3910\"]]"); + p = add_epsg_def (filter, first, last, 3911, "epsg", 3911, + "MGI 1901 / Slovenia Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI 1901 / Slovenia Grid\",GEOGCS[\"MGI 1901\","); + add_srs_wkt (p, 1, + "DATUM[\"MGI_1901\",SPHEROID[\"Bessel 1841\",6377397.155,"); + add_srs_wkt (p, 2, + "299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-2"); + add_srs_wkt (p, 3, + "03,480,0,0,0,0],AUTHORITY[\"EPSG\",\"1031\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"3906\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",15],PARAMETER[\"scale_factor\",0.9999],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",500000],PARAMETER[\"false_no"); + add_srs_wkt (p, 10, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AUTHORITY[\"EPSG\",\"3911\"]]"); + p = add_epsg_def (filter, first, last, 3912, "epsg", 3912, + "MGI 1901 / Slovene National Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=-5000000 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI 1901 / Slovene National Grid\",GEOGCS[\"MGI"); + add_srs_wkt (p, 1, + " 1901\",DATUM[\"MGI_1901\",SPHEROID[\"Bessel 1841\",6377"); + add_srs_wkt (p, 2, + "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[682,-203,480,0,0,0,0],AUTHORITY[\"EPSG\",\"1031\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"3906\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",15],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9999],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",-5000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Y\",EAST],AXIS[\"X\",NORTH],AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"3912\"]]"); + p = add_epsg_def (filter, first, last, 3920, "epsg", 3920, + "Puerto Rico / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=clrk66 +towgs84=11,72,-101,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Puerto Rico / UTM zone 20N\",GEOGCS[\"Puerto Ri"); + add_srs_wkt (p, 1, + "co\",DATUM[\"Puerto_Rico\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[11,72,-101,0,0,0,0],AUTHORITY[\"EPSG\",\"6139\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4139\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",-63],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"3920\"]]"); + p = add_epsg_def (filter, first, last, 3942, "epsg", 3942, + "RGF93 / CC42"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.25 +lat_2=42.75 +lat_0=42 +lon_0=3 +"); + add_proj4text (p, 1, + "x_0=1700000 +y_0=1200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGF93 / CC42\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); + add_srs_wkt (p, 1, + "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",41.25],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_2\",42.75],PARAMETER[\"latitude"); + add_srs_wkt (p, 9, + "_of_origin\",42],PARAMETER[\"central_meridian\",3],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",1200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"3942\"]]"); + p = add_epsg_def (filter, first, last, 3943, "epsg", 3943, + "RGF93 / CC43"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.25 +lat_2=43.75 +lat_0=43 +lon_0=3 +"); + add_proj4text (p, 1, + "x_0=1700000 +y_0=2200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGF93 / CC43\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); + add_srs_wkt (p, 1, + "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",42.25],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_2\",43.75],PARAMETER[\"latitude"); + add_srs_wkt (p, 9, + "_of_origin\",43],PARAMETER[\"central_meridian\",3],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",2200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"3943\"]]"); + p = add_epsg_def (filter, first, last, 3944, "epsg", 3944, + "RGF93 / CC44"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.25 +lat_2=44.75 +lat_0=44 +lon_0=3 +"); + add_proj4text (p, 1, + "x_0=1700000 +y_0=3200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGF93 / CC44\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); + add_srs_wkt (p, 1, + "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",43.25],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_2\",44.75],PARAMETER[\"latitude"); + add_srs_wkt (p, 9, + "_of_origin\",44],PARAMETER[\"central_meridian\",3],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",3200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"3944\"]]"); + p = add_epsg_def (filter, first, last, 3945, "epsg", 3945, + "RGF93 / CC45"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.25 +lat_2=45.75 +lat_0=45 +lon_0=3 +"); + add_proj4text (p, 1, + "x_0=1700000 +y_0=4200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGF93 / CC45\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); + add_srs_wkt (p, 1, + "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",44.25],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_2\",45.75],PARAMETER[\"latitude"); + add_srs_wkt (p, 9, + "_of_origin\",45],PARAMETER[\"central_meridian\",3],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",4200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"3945\"]]"); + p = add_epsg_def (filter, first, last, 3946, "epsg", 3946, + "RGF93 / CC46"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.25 +lat_2=46.75 +lat_0=46 +lon_0=3 +"); + add_proj4text (p, 1, + "x_0=1700000 +y_0=5200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGF93 / CC46\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); + add_srs_wkt (p, 1, + "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",45.25],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_2\",46.75],PARAMETER[\"latitude"); + add_srs_wkt (p, 9, + "_of_origin\",46],PARAMETER[\"central_meridian\",3],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",5200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"3946\"]]"); + p = add_epsg_def (filter, first, last, 3947, "epsg", 3947, + "RGF93 / CC47"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.25 +lat_2=47.75 +lat_0=47 +lon_0=3 +"); + add_proj4text (p, 1, + "x_0=1700000 +y_0=6200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGF93 / CC47\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); + add_srs_wkt (p, 1, + "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",46.25],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_2\",47.75],PARAMETER[\"latitude"); + add_srs_wkt (p, 9, + "_of_origin\",47],PARAMETER[\"central_meridian\",3],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",6200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"3947\"]]"); + p = add_epsg_def (filter, first, last, 3948, "epsg", 3948, + "RGF93 / CC48"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.25 +lat_2=48.75 +lat_0=48 +lon_0=3 +"); + add_proj4text (p, 1, + "x_0=1700000 +y_0=7200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGF93 / CC48\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); + add_srs_wkt (p, 1, + "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",47.25],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_2\",48.75],PARAMETER[\"latitude"); + add_srs_wkt (p, 9, + "_of_origin\",48],PARAMETER[\"central_meridian\",3],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",7200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"3948\"]]"); + p = add_epsg_def (filter, first, last, 3949, "epsg", 3949, + "RGF93 / CC49"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.25 +lat_2=49.75 +lat_0=49 +lon_0=3 +"); + add_proj4text (p, 1, + "x_0=1700000 +y_0=8200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGF93 / CC49\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); + add_srs_wkt (p, 1, + "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",48.25],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_2\",49.75],PARAMETER[\"latitude"); + add_srs_wkt (p, 9, + "_of_origin\",49],PARAMETER[\"central_meridian\",3],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",8200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"3949\"]]"); + p = add_epsg_def (filter, first, last, 3950, "epsg", 3950, + "RGF93 / CC50"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49.25 +lat_2=50.75 +lat_0=50 +lon_0=3 +"); + add_proj4text (p, 1, + "x_0=1700000 +y_0=9200000 +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGF93 / CC50\",GEOGCS[\"RGF93\",DATUM[\"Reseau_"); + add_srs_wkt (p, 1, + "Geodesique_Francais_1993\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6171\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4171\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",49.25],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_2\",50.75],PARAMETER[\"latitude"); + add_srs_wkt (p, 9, + "_of_origin\",50],PARAMETER[\"central_meridian\",3],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",1700000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",9200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"3950\"]]"); + p = add_epsg_def (filter, first, last, 3968, "epsg", 3968, + "NAD83 / Virginia Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +"); + add_proj4text (p, 1, + "x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Virginia Lambert\",GEOGCS[\"NAD83\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",39.5],PARAMETER[\"latitud"); + add_srs_wkt (p, 9, + "e_of_origin\",36],PARAMETER[\"central_meridian\",-79.5],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); + add_srs_wkt (p, 11, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"39"); + add_srs_wkt (p, 13, + "68\"]]"); + p = add_epsg_def (filter, first, last, 3969, "epsg", 3969, + "NAD83(HARN) / Virginia Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +"); + add_proj4text (p, 1, + "x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Virginia Lambert\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",37],PARAMETER[\"standard_parallel_2\",3"); + add_srs_wkt (p, 9, + "9.5],PARAMETER[\"latitude_of_origin\",36],PARAMETER[\"ce"); + add_srs_wkt (p, 10, + "ntral_meridian\",-79.5],PARAMETER[\"false_easting\",0],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"3969\"]]"); + p = add_epsg_def (filter, first, last, 3970, "epsg", 3970, + "NAD83(NSRS2007) / Virginia Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +"); + add_proj4text (p, 1, + "x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Virginia Lambert\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_1\",37],PARAMETER[\"standar"); + add_srs_wkt (p, 9, + "d_parallel_2\",39.5],PARAMETER[\"latitude_of_origin\",36"); + add_srs_wkt (p, 10, + "],PARAMETER[\"central_meridian\",-79.5],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 12, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 13, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3970\"]]"); + p = add_epsg_def (filter, first, last, 3973, "epsg", 3973, + "WGS 84 / NSIDC EASE-Grid North"); + add_proj4text (p, 0, + "+proj=laea +lat_0=90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS84"); + add_proj4text (p, 1, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / NSIDC EASE-Grid North\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 7, + "e_of_center\",90],PARAMETER[\"longitude_of_center\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"false_easting\",0],PARAMETER[\"false_northing"); + add_srs_wkt (p, 9, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); + add_srs_wkt (p, 10, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"397"); + add_srs_wkt (p, 11, + "3\"]]"); + p = add_epsg_def (filter, first, last, 3974, "epsg", 3974, + "WGS 84 / NSIDC EASE-Grid South"); + add_proj4text (p, 0, + "+proj=laea +lat_0=-90 +lon_0=0 +x_0=0 +y_0=0 +datum=WGS8"); + add_proj4text (p, 1, + "4 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / NSIDC EASE-Grid South\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Azimuthal_Equal_Area\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 7, + "e_of_center\",-90],PARAMETER[\"longitude_of_center\",0],"); + add_srs_wkt (p, 8, + "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); + add_srs_wkt (p, 9, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 10, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"39"); + add_srs_wkt (p, 11, + "74\"]]"); + p = add_epsg_def (filter, first, last, 3975, "epsg", 3975, + "WGS 84 / NSIDC EASE-Grid Global"); + add_proj4text (p, 0, + "+proj=cea +lon_0=0 +lat_ts=30 +x_0=0 +y_0=0 +datum=WGS84"); + add_proj4text (p, 1, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / NSIDC EASE-Grid Global\",GEOGCS[\"WGS "); + add_srs_wkt (p, 1, + "84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298."); + add_srs_wkt (p, 2, + "257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJEC"); + add_srs_wkt (p, 6, + "TION[\"Cylindrical_Equal_Area\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 7, + "rallel_1\",30],PARAMETER[\"central_meridian\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 9, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 10, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3975\"]]"); + p = add_epsg_def (filter, first, last, 3976, "epsg", 3976, + "WGS 84 / NSIDC Sea Ice Polar Stereographic South"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-70 +lon_0=0 +k=1 +x_0=0 "); + add_proj4text (p, 1, + "+y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / NSIDC Sea Ice Polar Stereographic Sout"); + add_srs_wkt (p, 1, + "h\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS "); + add_srs_wkt (p, 2, + "84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4326\"]],PROJECTION[\"Polar_Stereographic\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",-70],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 10, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 11, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3976\"]]"); + p = add_epsg_def (filter, first, last, 3978, "epsg", 3978, + "NAD83 / Canada Atlas Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0="); + add_proj4text (p, 1, + "0 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Canada Atlas Lambert\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",49"); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_2\",77],PARAMETER[\"lati"); + add_srs_wkt (p, 9, + "tude_of_origin\",49],PARAMETER[\"central_meridian\",-95]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_easting\",0],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 12, + "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"3978\"]]"); + p = add_epsg_def (filter, first, last, 3979, "epsg", 3979, + "NAD83(CSRS) / Canada Atlas Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=77 +lat_0=49 +lon_0=-95 +x_0="); + add_proj4text (p, 1, + "0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); + add_proj4text (p, 2, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / Canada Atlas Lambert\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",49],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",77],PARAMETER[\"latitude_of_origin\",49],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-95],PARAMETER[\"false_easting\",0],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 13, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"3979\"]]"); + p = add_epsg_def (filter, first, last, 3985, "epsg", 3985, + "Katanga 1955 / Katanga Lambert (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=9 +lon_0=26 +x"); + add_proj4text (p, 1, + "_0=500000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-9"); + add_proj4text (p, 2, + ".614,-255.95,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Katanga 1955 / Katanga Lambert (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4695\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_1\",-6.5],PARAMETER[\"stand"); + add_srs_wkt (p, 9, + "ard_parallel_2\",-11.5],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",9],PARAMETER[\"central_meridian\",26],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",500000],PARAMETER[\"false_northing\",500000],"); + add_srs_wkt (p, 12, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3985\"]]"); + p = add_epsg_def (filter, first, last, 3986, "epsg", 3986, + "Katanga 1955 / Katanga Gauss zone A"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-9 +lon_0=30 +k=1 +x_0=200000 +y_0=50"); + add_proj4text (p, 1, + "0000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Katanga 1955 / Katanga Gauss zone A\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\"Clarke "); + add_srs_wkt (p, 2, + "1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4695\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",-9],PARAMETER[\"central_meridian\",30],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",200000],PARAMETER[\"false_northing\",500000],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3986\"]]"); + p = add_epsg_def (filter, first, last, 3987, "epsg", 3987, + "Katanga 1955 / Katanga Gauss zone B"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-9 +lon_0=28 +k=1 +x_0=200000 +y_0=50"); + add_proj4text (p, 1, + "0000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Katanga 1955 / Katanga Gauss zone B\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\"Clarke "); + add_srs_wkt (p, 2, + "1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4695\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",-9],PARAMETER[\"central_meridian\",28],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",200000],PARAMETER[\"false_northing\",500000],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3987\"]]"); + p = add_epsg_def (filter, first, last, 3988, "epsg", 3988, + "Katanga 1955 / Katanga Gauss zone C"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-9 +lon_0=26 +k=1 +x_0=200000 +y_0=50"); + add_proj4text (p, 1, + "0000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Katanga 1955 / Katanga Gauss zone C\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\"Clarke "); + add_srs_wkt (p, 2, + "1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4695\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",-9],PARAMETER[\"central_meridian\",26],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",200000],PARAMETER[\"false_northing\",500000],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3988\"]]"); + p = add_epsg_def (filter, first, last, 3989, "epsg", 3989, + "Katanga 1955 / Katanga Gauss zone D"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-9 +lon_0=24 +k=1 +x_0=200000 +y_0=50"); + add_proj4text (p, 1, + "0000 +ellps=clrk66 +towgs84=-103.746,-9.614,-255.95,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Katanga 1955 / Katanga Gauss zone D\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\"Clarke "); + add_srs_wkt (p, 2, + "1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4695\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",-9],PARAMETER[\"central_meridian\",24],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",200000],PARAMETER[\"false_northing\",500000],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3989\"]]"); + p = add_epsg_def (filter, first, last, 3991, "epsg", 3991, + "Puerto Rico State Plane CS of 1927"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +"); + add_proj4text (p, 2, + "x_0=152400.3048006096 +y_0=0 +ellps=clrk66 +towgs84=11,7"); + add_proj4text (p, 3, + "2,-101,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Puerto Rico State Plane CS of 1927\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "uerto Rico\",DATUM[\"Puerto_Rico\",SPHEROID[\"Clarke 186"); + add_srs_wkt (p, 2, + "6\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "8\"]],TOWGS84[11,72,-101,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "139\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4139\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 8, + "llel_1\",18.43333333333333],PARAMETER[\"standard_paralle"); + add_srs_wkt (p, 9, + "l_2\",18.03333333333333],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",17.83333333333333],PARAMETER[\"central_meridian\",-66.4"); + add_srs_wkt (p, 11, + "3333333333334],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 12, + "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); + add_srs_wkt (p, 13, + "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 14, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3991\"]]"); + p = add_epsg_def (filter, first, last, 3992, "epsg", 3992, + "Puerto Rico / St. Croix"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +"); + add_proj4text (p, 2, + "x_0=152400.3048006096 +y_0=30480.06096012192 +ellps=clrk"); + add_proj4text (p, 3, + "66 +towgs84=11,72,-101,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Puerto Rico / St. Croix\",GEOGCS[\"Puerto Rico\""); + add_srs_wkt (p, 1, + ",DATUM[\"Puerto_Rico\",SPHEROID[\"Clarke 1866\",6378206."); + add_srs_wkt (p, 2, + "4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[11,72,-101,0,0,0,0],AUTHORITY[\"EPSG\",\"6139\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4139\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",18"); + add_srs_wkt (p, 8, + ".43333333333333],PARAMETER[\"standard_parallel_2\",18.03"); + add_srs_wkt (p, 9, + "333333333333],PARAMETER[\"latitude_of_origin\",17.833333"); + add_srs_wkt (p, 10, + "33333333],PARAMETER[\"central_meridian\",-66.43333333333"); + add_srs_wkt (p, 11, + "334],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_northing\",100000],UNIT[\"US survey foot\",0.30480060"); + add_srs_wkt (p, 13, + "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); + add_srs_wkt (p, 14, + "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3992\"]]"); + p = add_epsg_def (filter, first, last, 3994, "epsg", 3994, + "WGS 84 / Mercator 41"); + add_proj4text (p, 0, + "+proj=merc +lon_0=100 +lat_ts=-41 +x_0=0 +y_0=0 +datum=W"); + add_proj4text (p, 1, + "GS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / Mercator 41\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Merc"); + add_srs_wkt (p, 6, + "ator_2SP\"],PARAMETER[\"standard_parallel_1\",-41],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"central_meridian\",100],PARAMETER[\"false_easting"); + add_srs_wkt (p, 8, + "\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 9, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 10, + ",NORTH],AUTHORITY[\"EPSG\",\"3994\"]]"); + p = add_epsg_def (filter, first, last, 3995, "epsg", 3995, + "WGS 84 / Arctic Polar Stereographic"); + add_proj4text (p, 0, + "+proj=stere +lat_0=90 +lat_ts=71 +lon_0=0 +k=1 +x_0=0 +y"); + add_proj4text (p, 1, + "_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / Arctic Polar Stereographic\",GEOGCS[\""); + add_srs_wkt (p, 1, + "WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,"); + add_srs_wkt (p, 2, + "298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PR"); + add_srs_wkt (p, 6, + "OJECTION[\"Polar_Stereographic\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 7, + "f_origin\",71],PARAMETER[\"central_meridian\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 10, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"3995\"]]"); + p = add_epsg_def (filter, first, last, 3996, "epsg", 3996, + "WGS 84 / IBCAO Polar Stereographic"); + add_proj4text (p, 0, + "+proj=stere +lat_0=90 +lat_ts=75 +lon_0=0 +k=1 +x_0=0 +y"); + add_proj4text (p, 1, + "_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / IBCAO Polar Stereographic\",GEOGCS[\"W"); + add_srs_wkt (p, 1, + "GS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,2"); + add_srs_wkt (p, 2, + "98.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PRO"); + add_srs_wkt (p, 6, + "JECTION[\"Polar_Stereographic\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 7, + "_origin\",75],PARAMETER[\"central_meridian\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",0],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 10, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"3996\"]]"); + p = add_epsg_def (filter, first, last, 3997, "epsg", 3997, + "WGS 84 / Dubai Local TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=55.33333333333334 +k=1 +x_0="); + add_proj4text (p, 1, + "500000 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / Dubai Local TM\",GEOGCS[\"WGS 84\",DAT"); + add_srs_wkt (p, 1, + "UM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.25722356"); + add_srs_wkt (p, 2, + "3,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"632"); + add_srs_wkt (p, 3, + "6\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"T"); + add_srs_wkt (p, 6, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 7, + "],PARAMETER[\"central_meridian\",55.33333333333334],PARA"); + add_srs_wkt (p, 8, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 9, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 10, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 11, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3997\"]]"); + p = add_epsg_def (filter, first, last, 4001, "epsg", 4001, + "Unknown datum based upon the Airy 1830 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=airy +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Airy 1830 ellipsoi"); + add_srs_wkt (p, 1, + "d\",DATUM[\"Not_specified_based_on_Airy_1830_ellipsoid\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Airy 1830\",6377563.396,299.3249646,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7001\"]],AUTHORITY[\"EPSG\",\"6001\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4001\"]]"); + p = add_epsg_def (filter, first, last, 4002, "epsg", 4002, + "Unknown datum based upon the Airy Modified 1849 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=mod_airy +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Airy Modified 1849"); + add_srs_wkt (p, 1, + " ellipsoid\",DATUM[\"Not_specified_based_on_Airy_Modifie"); + add_srs_wkt (p, 2, + "d_1849_ellipsoid\",SPHEROID[\"Airy Modified 1849\",63773"); + add_srs_wkt (p, 3, + "40.189,299.3249646,AUTHORITY[\"EPSG\",\"7002\"]],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6002\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4002\""); + add_srs_wkt (p, 7, + "]]"); + p = add_epsg_def (filter, first, last, 4003, "epsg", 4003, + "Unknown datum based upon the Australian National Spheroid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=aust_SA +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Australian Nationa"); + add_srs_wkt (p, 1, + "l Spheroid\",DATUM[\"Not_specified_based_on_Australian_N"); + add_srs_wkt (p, 2, + "ational_Spheroid\",SPHEROID[\"Australian National Sphero"); + add_srs_wkt (p, 3, + "id\",6378160,298.25,AUTHORITY[\"EPSG\",\"7003\"]],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6003\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4003\""); + add_srs_wkt (p, 7, + "]]"); + p = add_epsg_def (filter, first, last, 4004, "epsg", 4004, + "Unknown datum based upon the Bessel 1841 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Bessel 1841 ellips"); + add_srs_wkt (p, 1, + "oid\",DATUM[\"Not_specified_based_on_Bessel_1841_ellipso"); + add_srs_wkt (p, 2, + "id\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6004\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4004\"]]"); + p = add_epsg_def (filter, first, last, 4005, "epsg", 4005, + "Unknown datum based upon the Bessel Modified ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6377492.018 +b=6356173.508712696 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Bessel Modified el"); + add_srs_wkt (p, 1, + "lipsoid\",DATUM[\"Not_specified_based_on_Bessel_Modified"); + add_srs_wkt (p, 2, + "_ellipsoid\",SPHEROID[\"Bessel Modified\",6377492.018,29"); + add_srs_wkt (p, 3, + "9.1528128,AUTHORITY[\"EPSG\",\"7005\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6005\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4005\"]]"); + p = add_epsg_def (filter, first, last, 4006, "epsg", 4006, + "Unknown datum based upon the Bessel Namibia ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bess_nam +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Bessel Namibia ell"); + add_srs_wkt (p, 1, + "ipsoid\",DATUM[\"Not_specified_based_on_Bessel_Namibia_e"); + add_srs_wkt (p, 2, + "llipsoid\",SPHEROID[\"Bessel Namibia (GLM)\",6377483.865"); + add_srs_wkt (p, 3, + "280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6006\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4006\""); + add_srs_wkt (p, 7, + "]]"); + p = add_epsg_def (filter, first, last, 4007, "epsg", 4007, + "Unknown datum based upon the Clarke 1858 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Clarke 1858 ellips"); + add_srs_wkt (p, 1, + "oid\",DATUM[\"Not_specified_based_on_Clarke_1858_ellipso"); + add_srs_wkt (p, 2, + "id\",SPHEROID[\"Clarke 1858\",6378293.645208759,294.2606"); + add_srs_wkt (p, 3, + "763692569,AUTHORITY[\"EPSG\",\"7007\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6007\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4007\"]]"); + p = add_epsg_def (filter, first, last, 4008, "epsg", 4008, + "Unknown datum based upon the Clarke 1866 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Clarke 1866 ellips"); + add_srs_wkt (p, 1, + "oid\",DATUM[\"Not_specified_based_on_Clarke_1866_ellipso"); + add_srs_wkt (p, 2, + "id\",SPHEROID[\"Clarke 1866\",6378206.4,294.978698213900"); + add_srs_wkt (p, 3, + "6,AUTHORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"600"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4008\"]]"); + p = add_epsg_def (filter, first, last, 4009, "epsg", 4009, + "Unknown datum based upon the Clarke 1866 Michigan ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6378450.047548896 +b=6356826.621488444 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Clarke 1866 Michig"); + add_srs_wkt (p, 1, + "an ellipsoid\",DATUM[\"Not_specified_based_on_Clarke_186"); + add_srs_wkt (p, 2, + "6_Michigan_ellipsoid\",SPHEROID[\"Clarke 1866 Michigan\""); + add_srs_wkt (p, 3, + ",6378450.047548896,294.9786971646739,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"7009\"]],AUTHORITY[\"EPSG\",\"6009\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4009\"]]"); + p = add_epsg_def (filter, first, last, 4010, "epsg", 4010, + "Unknown datum based upon the Clarke 1880 (Benoit) ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6378300.789 +b=6356566.435 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Clarke 1880 (Benoi"); + add_srs_wkt (p, 1, + "t) ellipsoid\",DATUM[\"Not_specified_based_on_Clarke_188"); + add_srs_wkt (p, 2, + "0_Benoit_ellipsoid\",SPHEROID[\"Clarke 1880 (Benoit)\",6"); + add_srs_wkt (p, 3, + "378300.789,293.4663155389802,AUTHORITY[\"EPSG\",\"7010\""); + add_srs_wkt (p, 4, + "]],AUTHORITY[\"EPSG\",\"6010\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 6, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4010\"]]"); + p = add_epsg_def (filter, first, last, 4011, "epsg", 4011, + "Unknown datum based upon the Clarke 1880 (IGN) ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Clarke 1880 (IGN) "); + add_srs_wkt (p, 1, + "ellipsoid\",DATUM[\"Not_specified_based_on_Clarke_1880_I"); + add_srs_wkt (p, 2, + "GN_ellipsoid\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,"); + add_srs_wkt (p, 3, + "293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]],AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"6011\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4011\"]]"); + p = add_epsg_def (filter, first, last, 4012, "epsg", 4012, + "Unknown datum based upon the Clarke 1880 (RGS) ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Clarke 1880 (RGS) "); + add_srs_wkt (p, 1, + "ellipsoid\",DATUM[\"Not_specified_based_on_Clarke_1880_R"); + add_srs_wkt (p, 2, + "GS_ellipsoid\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 3, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6012\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4012\"]]"); + p = add_epsg_def (filter, first, last, 4013, "epsg", 4013, + "Unknown datum based upon the Clarke 1880 (Arc) ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.145 +b=6356514.966398753 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Clarke 1880 (Arc) "); + add_srs_wkt (p, 1, + "ellipsoid\",DATUM[\"Not_specified_based_on_Clarke_1880_A"); + add_srs_wkt (p, 2, + "rc_ellipsoid\",SPHEROID[\"Clarke 1880 (Arc)\",6378249.14"); + add_srs_wkt (p, 3, + "5,293.4663077,AUTHORITY[\"EPSG\",\"7013\"]],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6013\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4013\"]]"); + p = add_epsg_def (filter, first, last, 4014, "epsg", 4014, + "Unknown datum based upon the Clarke 1880 (SGA 1922) ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356514.996941779 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Clarke 1880 (SGA 1"); + add_srs_wkt (p, 1, + "922) ellipsoid\",DATUM[\"Not_specified_based_on_Clarke_1"); + add_srs_wkt (p, 2, + "880_SGA_1922_ellipsoid\",SPHEROID[\"Clarke 1880 (SGA 192"); + add_srs_wkt (p, 3, + "2)\",6378249.2,293.46598,AUTHORITY[\"EPSG\",\"7014\"]],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6014\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4014\"]]"); + p = add_epsg_def (filter, first, last, 4015, "epsg", 4015, + "Unknown datum based upon the Everest 1830 (1937 Adjustment) ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6377276.345 +b=6356075.41314024 +no_def"); + add_proj4text (p, 1, + "s"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Everest 1830 (1937"); + add_srs_wkt (p, 1, + " Adjustment) ellipsoid\",DATUM[\"Not_specified_based_on_"); + add_srs_wkt (p, 2, + "Everest_1830_1937_Adjustment_ellipsoid\",SPHEROID[\"Ever"); + add_srs_wkt (p, 3, + "est 1830 (1937 Adjustment)\",6377276.345,300.8017,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"7015\"]],AUTHORITY[\"EPSG\",\"6015\"]],PR"); + add_srs_wkt (p, 5, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 6, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 7, + "]],AUTHORITY[\"EPSG\",\"4015\"]]"); + p = add_epsg_def (filter, first, last, 4016, "epsg", 4016, + "Unknown datum based upon the Everest 1830 (1967 Definition) ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=evrstSS +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Everest 1830 (1967"); + add_srs_wkt (p, 1, + " Definition) ellipsoid\",DATUM[\"Not_specified_based_on_"); + add_srs_wkt (p, 2, + "Everest_1830_1967_Definition_ellipsoid\",SPHEROID[\"Ever"); + add_srs_wkt (p, 3, + "est 1830 (1967 Definition)\",6377298.556,300.8017,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"7016\"]],AUTHORITY[\"EPSG\",\"6016\"]],PR"); + add_srs_wkt (p, 5, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 6, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 7, + "]],AUTHORITY[\"EPSG\",\"4016\"]]"); + p = add_epsg_def (filter, first, last, 4018, "epsg", 4018, + "Unknown datum based upon the Everest 1830 Modified ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6377304.063 +b=6356103.038993155 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Everest 1830 Modif"); + add_srs_wkt (p, 1, + "ied ellipsoid\",DATUM[\"Not_specified_based_on_Everest_1"); + add_srs_wkt (p, 2, + "830_Modified_ellipsoid\",SPHEROID[\"Everest 1830 Modifie"); + add_srs_wkt (p, 3, + "d\",6377304.063,300.8017,AUTHORITY[\"EPSG\",\"7018\"]],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6018\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4018\"]]"); + p = add_epsg_def (filter, first, last, 4019, "epsg", 4019, + "Unknown datum based upon the GRS 1980 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the GRS 1980 ellipsoid"); + add_srs_wkt (p, 1, + "\",DATUM[\"Not_specified_based_on_GRS_1980_ellipsoid\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6019\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4019\"]]"); + p = add_epsg_def (filter, first, last, 4020, "epsg", 4020, + "Unknown datum based upon the Helmert 1906 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=helmert +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Helmert 1906 ellip"); + add_srs_wkt (p, 1, + "soid\",DATUM[\"Not_specified_based_on_Helmert_1906_ellip"); + add_srs_wkt (p, 2, + "soid\",SPHEROID[\"Helmert 1906\",6378200,298.3,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7020\"]],AUTHORITY[\"EPSG\",\"6020\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4020\"]]"); + p = add_epsg_def (filter, first, last, 4021, "epsg", 4021, + "Unknown datum based upon the Indonesian National Spheroid"); + add_proj4text (p, 0, + "+proj=longlat +a=6378160 +b=6356774.50408554 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Indonesian Nationa"); + add_srs_wkt (p, 1, + "l Spheroid\",DATUM[\"Not_specified_based_on_Indonesian_N"); + add_srs_wkt (p, 2, + "ational_Spheroid\",SPHEROID[\"Indonesian National Sphero"); + add_srs_wkt (p, 3, + "id\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6021\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4021"); + add_srs_wkt (p, 7, + "\"]]"); + p = add_epsg_def (filter, first, last, 4022, "epsg", 4022, + "Unknown datum based upon the International 1924 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the International 1924"); + add_srs_wkt (p, 1, + " ellipsoid\",DATUM[\"Not_specified_based_on_Internationa"); + add_srs_wkt (p, 2, + "l_1924_ellipsoid\",SPHEROID[\"International 1924\",63783"); + add_srs_wkt (p, 3, + "88,297,AUTHORITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6022\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4022\"]]"); + p = add_epsg_def (filter, first, last, 4023, "epsg", 4023, + "MOLDREF99"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"MOLDREF99\",DATUM[\"MOLDREF99\",SPHEROID[\"GRS "); + add_srs_wkt (p, 1, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 2, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1032\"]],"); + add_srs_wkt (p, 3, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 4, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 5, + "2\"]],AUTHORITY[\"EPSG\",\"4023\"]]"); + p = add_epsg_def (filter, first, last, 4024, "epsg", 4024, + "Unknown datum based upon the Krassowsky 1940 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Krassowsky 1940 el"); + add_srs_wkt (p, 1, + "lipsoid\",DATUM[\"Not_specified_based_on_Krassowsky_1940"); + add_srs_wkt (p, 2, + "_ellipsoid\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7024\"]],AUTHORITY[\"EPSG\",\"6024\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4024\"]]"); + p = add_epsg_def (filter, first, last, 4025, "epsg", 4025, + "Unknown datum based upon the NWL 9D ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS66 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the NWL 9D ellipsoid\""); + add_srs_wkt (p, 1, + ",DATUM[\"Not_specified_based_on_NWL_9D_ellipsoid\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"NWL 9D\",6378145,298.25,AUTHORITY[\"EPSG\",\"7025\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6025\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4025\"]]"); + p = add_epsg_def (filter, first, last, 4026, "epsg", 4026, + "MOLDREF99 / Moldova TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=28.4 +k=0.9999400000000001 +"); + add_proj4text (p, 1, + "x_0=200000 +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MOLDREF99 / Moldova TM\",GEOGCS[\"MOLDREF99\",D"); + add_srs_wkt (p, 1, + "ATUM[\"MOLDREF99\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 2, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 3, + ",0],AUTHORITY[\"EPSG\",\"1032\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"4023\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 7, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 8, + "an\",28.4],PARAMETER[\"scale_factor\",0.99994],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_easting\",200000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"4026\"]]"); + p = add_epsg_def (filter, first, last, 4027, "epsg", 4027, + "Unknown datum based upon the Plessis 1817 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6376523 +b=6355862.933255573 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Plessis 1817 ellip"); + add_srs_wkt (p, 1, + "soid\",DATUM[\"Not_specified_based_on_Plessis_1817_ellip"); + add_srs_wkt (p, 2, + "soid\",SPHEROID[\"Plessis 1817\",6376523,308.64,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7027\"]],AUTHORITY[\"EPSG\",\"6027\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4027\"]]"); + p = add_epsg_def (filter, first, last, 4028, "epsg", 4028, + "Unknown datum based upon the Struve 1860 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6378298.3 +b=6356657.142669561 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Struve 1860 ellips"); + add_srs_wkt (p, 1, + "oid\",DATUM[\"Not_specified_based_on_Struve_1860_ellipso"); + add_srs_wkt (p, 2, + "id\",SPHEROID[\"Struve 1860\",6378298.3,294.73,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7028\"]],AUTHORITY[\"EPSG\",\"6028\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4028\"]]"); + p = add_epsg_def (filter, first, last, 4029, "epsg", 4029, + "Unknown datum based upon the War Office ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the War Office ellipso"); + add_srs_wkt (p, 1, + "id\",DATUM[\"Not_specified_based_on_War_Office_ellipsoid"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"War Office\",6378300,296,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7029\"]],AUTHORITY[\"EPSG\",\"6029\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4029\"]]"); + p = add_epsg_def (filter, first, last, 4030, "epsg", 4030, + "Unknown datum based upon the WGS 84 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the WGS 84 ellipsoid\""); + add_srs_wkt (p, 1, + ",DATUM[\"Not_specified_based_on_WGS_84_ellipsoid\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7030\"]],AUTHORITY[\"EPSG\",\"6030\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4030\"]]"); + p = add_epsg_def (filter, first, last, 4031, "epsg", 4031, + "Unknown datum based upon the GEM 10C ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the GEM 10C ellipsoid\""); + add_srs_wkt (p, 1, + ",DATUM[\"Not_specified_based_on_GEM_10C_ellipsoid\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GEM 10C\",6378137,298.257223563,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7031\"]],AUTHORITY[\"EPSG\",\"6031\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4031\"]]"); + p = add_epsg_def (filter, first, last, 4032, "epsg", 4032, + "Unknown datum based upon the OSU86F ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6378136.2 +b=6356751.516927429 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the OSU86F ellipsoid\""); + add_srs_wkt (p, 1, + ",DATUM[\"Not_specified_based_on_OSU86F_ellipsoid\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"OSU86F\",6378136.2,298.257223563,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7032\"]],AUTHORITY[\"EPSG\",\"6032\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4032\"]]"); + p = add_epsg_def (filter, first, last, 4033, "epsg", 4033, + "Unknown datum based upon the OSU91A ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6378136.3 +b=6356751.616592146 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the OSU91A ellipsoid\""); + add_srs_wkt (p, 1, + ",DATUM[\"Not_specified_based_on_OSU91A_ellipsoid\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"OSU91A\",6378136.3,298.257223563,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7033\"]],AUTHORITY[\"EPSG\",\"6033\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4033\"]]"); + p = add_epsg_def (filter, first, last, 4034, "epsg", 4034, + "Unknown datum based upon the Clarke 1880 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.144808011 +b=6356514.966204134 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Clarke 1880 ellips"); + add_srs_wkt (p, 1, + "oid\",DATUM[\"Not_specified_based_on_Clarke_1880_ellipso"); + add_srs_wkt (p, 2, + "id\",SPHEROID[\"Clarke 1880\",6378249.144808011,293.4663"); + add_srs_wkt (p, 3, + "076556349,AUTHORITY[\"EPSG\",\"7034\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6034\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4034\"]]"); + p = add_epsg_def (filter, first, last, 4035, "epsg", 4035, + "Unknown datum based upon the Authalic Sphere"); + add_proj4text (p, 0, + "+proj=longlat +a=6371000 +b=6371000 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Authalic Sphere\","); + add_srs_wkt (p, 1, + "DATUM[\"Not_specified_based_on_Authalic_Sphere\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Sphere\",6371000,0,AUTHORITY[\"EPSG\",\"7035\"]],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"6035\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\"40"); + add_srs_wkt (p, 6, + "35\"]]"); + p = add_epsg_def (filter, first, last, 4036, "epsg", 4036, + "Unknown datum based upon the GRS 1967 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS67 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the GRS 1967 ellipsoid"); + add_srs_wkt (p, 1, + "\",DATUM[\"Not_specified_based_on_GRS_1967_ellipsoid\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1967\",6378160,298.247167427,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7036\"]],AUTHORITY[\"EPSG\",\"6036\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4036\"]]"); + p = add_epsg_def (filter, first, last, 4037, "epsg", 4037, + "WGS 84 / TMzn35N"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / TMzn35N\",GEOGCS[\"WGS 84\",DATUM[\"WG"); + add_srs_wkt (p, 1, + "S_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHO"); + add_srs_wkt (p, 2, + "RITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],P"); + add_srs_wkt (p, 3, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 4, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 5, + "\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 6, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"central_meridian\",27],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 8, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 10, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4037\"]]"); + p = add_epsg_def (filter, first, last, 4038, "epsg", 4038, + "WGS 84 / TMzn36N"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / TMzn36N\",GEOGCS[\"WGS 84\",DATUM[\"WG"); + add_srs_wkt (p, 1, + "S_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHO"); + add_srs_wkt (p, 2, + "RITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],P"); + add_srs_wkt (p, 3, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 4, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 5, + "\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 6, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"central_meridian\",33],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 8, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 10, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4038\"]]"); + p = add_epsg_def (filter, first, last, 4041, "epsg", 4041, + "Unknown datum based upon the Average Terrestrial System 1977 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Average Terrestria"); + add_srs_wkt (p, 1, + "l System 1977 ellipsoid\",DATUM[\"Not_specified_based_on"); + add_srs_wkt (p, 2, + "_Average_Terrestrial_System_1977_ellipsoid\",SPHEROID[\""); + add_srs_wkt (p, 3, + "Average Terrestrial System 1977\",6378135,298.257,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"7041\"]],AUTHORITY[\"EPSG\",\"6041\"]],PR"); + add_srs_wkt (p, 5, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 6, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 7, + "]],AUTHORITY[\"EPSG\",\"4041\"]]"); + p = add_epsg_def (filter, first, last, 4042, "epsg", 4042, + "Unknown datum based upon the Everest (1830 Definition) ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6377299.36559538 +b=6356098.359005156 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Everest (1830 Defi"); + add_srs_wkt (p, 1, + "nition) ellipsoid\",DATUM[\"Not_specified_based_on_Evere"); + add_srs_wkt (p, 2, + "st_1830_Definition_ellipsoid\",SPHEROID[\"Everest (1830 "); + add_srs_wkt (p, 3, + "Definition)\",6377299.36559538,300.8017255433552,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"7042\"]],AUTHORITY[\"EPSG\",\"6042\"]],PRI"); + add_srs_wkt (p, 5, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 6, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 7, + "],AUTHORITY[\"EPSG\",\"4042\"]]"); + p = add_epsg_def (filter, first, last, 4043, "epsg", 4043, + "Unknown datum based upon the WGS 72 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS72 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the WGS 72 ellipsoid\""); + add_srs_wkt (p, 1, + ",DATUM[\"Not_specified_based_on_WGS_72_ellipsoid\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6043\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4043\"]]"); + p = add_epsg_def (filter, first, last, 4044, "epsg", 4044, + "Unknown datum based upon the Everest 1830 (1962 Definition) ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6377301.243 +b=6356100.230165384 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Everest 1830 (1962"); + add_srs_wkt (p, 1, + " Definition) ellipsoid\",DATUM[\"Not_specified_based_on_"); + add_srs_wkt (p, 2, + "Everest_1830_1962_Definition_ellipsoid\",SPHEROID[\"Ever"); + add_srs_wkt (p, 3, + "est 1830 (1962 Definition)\",6377301.243,300.8017255,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"7044\"]],AUTHORITY[\"EPSG\",\"6044\"]]"); + add_srs_wkt (p, 5, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 6, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 7, + "22\"]],AUTHORITY[\"EPSG\",\"4044\"]]"); + p = add_epsg_def (filter, first, last, 4045, "epsg", 4045, + "Unknown datum based upon the Everest 1830 (1975 Definition) ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6377299.151 +b=6356098.145120132 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unknown datum based upon the Everest 1830 (1975"); + add_srs_wkt (p, 1, + " Definition) ellipsoid\",DATUM[\"Not_specified_based_on_"); + add_srs_wkt (p, 2, + "Everest_1830_1975_Definition_ellipsoid\",SPHEROID[\"Ever"); + add_srs_wkt (p, 3, + "est 1830 (1975 Definition)\",6377299.151,300.8017255,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"7045\"]],AUTHORITY[\"EPSG\",\"6045\"]]"); + add_srs_wkt (p, 5, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 6, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 7, + "22\"]],AUTHORITY[\"EPSG\",\"4045\"]]"); + p = add_epsg_def (filter, first, last, 4046, "epsg", 4046, + "RGRDC 2005"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RGRDC 2005\",DATUM[\"Reseau_Geodesique_de_la_RD"); + add_srs_wkt (p, 1, + "C_2005\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\""); + add_srs_wkt (p, 6, + "]]"); + p = add_epsg_def (filter, first, last, 4047, "epsg", 4047, + "Unspecified datum based upon the GRS 1980 Authalic Sphere"); + add_proj4text (p, 0, + "+proj=longlat +a=6371007 +b=6371007 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unspecified datum based upon the GRS 1980 Autha"); + add_srs_wkt (p, 1, + "lic Sphere\",DATUM[\"Not_specified_based_on_GRS_1980_Aut"); + add_srs_wkt (p, 2, + "halic_Sphere\",SPHEROID[\"GRS 1980 Authalic Sphere\",637"); + add_srs_wkt (p, 3, + "1007,0,AUTHORITY[\"EPSG\",\"7048\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6047\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4047\"]]"); + p = add_epsg_def (filter, first, last, 4048, "epsg", 4048, + "RGRDC 2005 / Congo TM zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGRDC 2005 / Congo TM zone 12\",GEOGCS[\"RGRDC "); + add_srs_wkt (p, 1, + "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",12],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"4048\"]]"); + p = add_epsg_def (filter, first, last, 4049, "epsg", 4049, + "RGRDC 2005 / Congo TM zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=14 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGRDC 2005 / Congo TM zone 14\",GEOGCS[\"RGRDC "); + add_srs_wkt (p, 1, + "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",14],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"4049\"]]"); + p = add_epsg_def (filter, first, last, 4050, "epsg", 4050, + "RGRDC 2005 / Congo TM zone 16"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=16 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGRDC 2005 / Congo TM zone 16\",GEOGCS[\"RGRDC "); + add_srs_wkt (p, 1, + "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",16],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"4050\"]]"); + p = add_epsg_def (filter, first, last, 4051, "epsg", 4051, + "RGRDC 2005 / Congo TM zone 18"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGRDC 2005 / Congo TM zone 18\",GEOGCS[\"RGRDC "); + add_srs_wkt (p, 1, + "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",18],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"4051\"]]"); + p = add_epsg_def (filter, first, last, 4052, "epsg", 4052, + "Unspecified datum based upon the Clarke 1866 Authalic Sphere"); + add_proj4text (p, 0, + "+proj=longlat +a=6370997 +b=6370997 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unspecified datum based upon the Clarke 1866 Au"); + add_srs_wkt (p, 1, + "thalic Sphere\",DATUM[\"Not_specified_based_on_Clarke_18"); + add_srs_wkt (p, 2, + "66_Authalic_Sphere\",SPHEROID[\"Clarke 1866 Authalic Sph"); + add_srs_wkt (p, 3, + "ere\",6370997,0,AUTHORITY[\"EPSG\",\"7052\"]],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6052\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4052\"]]"); + p = add_epsg_def (filter, first, last, 4053, "epsg", 4053, + "Unspecified datum based upon the International 1924 Authalic Sphere"); + add_proj4text (p, 0, + "+proj=longlat +a=6371228 +b=6371228 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unspecified datum based upon the International "); + add_srs_wkt (p, 1, + "1924 Authalic Sphere\",DATUM[\"Not_specified_based_on_In"); + add_srs_wkt (p, 2, + "ternational_1924_Authalic_Sphere\",SPHEROID[\"Internatio"); + add_srs_wkt (p, 3, + "nal 1924 Authalic Sphere\",6371228,0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"7057\"]],AUTHORITY[\"EPSG\",\"6053\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4053\"]]"); + p = add_epsg_def (filter, first, last, 4054, "epsg", 4054, + "Unspecified datum based upon the Hughes 1980 ellipsoid"); + add_proj4text (p, 0, + "+proj=longlat +a=6378273 +b=6356889.449 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Unspecified datum based upon the Hughes 1980 el"); + add_srs_wkt (p, 1, + "lipsoid\",DATUM[\"Not_specified_based_on_Hughes_1980_ell"); + add_srs_wkt (p, 2, + "ipsoid\",SPHEROID[\"Hughes 1980\",6378273,298.2794111230"); + add_srs_wkt (p, 3, + "61,AUTHORITY[\"EPSG\",\"7058\"]],AUTHORITY[\"EPSG\",\"60"); + add_srs_wkt (p, 4, + "54\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4054\"]]"); + p = add_epsg_def (filter, first, last, 4055, "epsg", 4055, + "Popular Visualisation CRS"); + add_proj4text (p, 0, + "+proj=longlat +a=6378137 +b=6378137 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 1, + ",0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Popular Visualisation CRS\",DATUM[\"Popular_Vis"); + add_srs_wkt (p, 1, + "ualisation_Datum\",SPHEROID[\"Popular Visualisation Sphe"); + add_srs_wkt (p, 2, + "re\",6378137,0,AUTHORITY[\"EPSG\",\"7059\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6055\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4055\"]]"); + p = add_epsg_def (filter, first, last, 4056, "epsg", 4056, + "RGRDC 2005 / Congo TM zone 20"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=20 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGRDC 2005 / Congo TM zone 20\",GEOGCS[\"RGRDC "); + add_srs_wkt (p, 1, + "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",20],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"4056\"]]"); + p = add_epsg_def (filter, first, last, 4057, "epsg", 4057, + "RGRDC 2005 / Congo TM zone 22"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=22 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGRDC 2005 / Congo TM zone 22\",GEOGCS[\"RGRDC "); + add_srs_wkt (p, 1, + "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",22],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"4057\"]]"); + p = add_epsg_def (filter, first, last, 4058, "epsg", 4058, + "RGRDC 2005 / Congo TM zone 24"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGRDC 2005 / Congo TM zone 24\",GEOGCS[\"RGRDC "); + add_srs_wkt (p, 1, + "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",24],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"4058\"]]"); + p = add_epsg_def (filter, first, last, 4059, "epsg", 4059, + "RGRDC 2005 / Congo TM zone 26"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=26 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGRDC 2005 / Congo TM zone 26\",GEOGCS[\"RGRDC "); + add_srs_wkt (p, 1, + "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",26],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"4059\"]]"); + p = add_epsg_def (filter, first, last, 4060, "epsg", 4060, + "RGRDC 2005 / Congo TM zone 28"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=28 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGRDC 2005 / Congo TM zone 28\",GEOGCS[\"RGRDC "); + add_srs_wkt (p, 1, + "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",28],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"4060\"]]"); + p = add_epsg_def (filter, first, last, 4061, "epsg", 4061, + "RGRDC 2005 / UTM zone 33S"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGRDC 2005 / UTM zone 33S\",GEOGCS[\"RGRDC 2005"); + add_srs_wkt (p, 1, + "\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1033\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",15],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 12, + "],AUTHORITY[\"EPSG\",\"4061\"]]"); + p = add_epsg_def (filter, first, last, 4062, "epsg", 4062, + "RGRDC 2005 / UTM zone 34S"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGRDC 2005 / UTM zone 34S\",GEOGCS[\"RGRDC 2005"); + add_srs_wkt (p, 1, + "\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1033\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",21],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 12, + "],AUTHORITY[\"EPSG\",\"4062\"]]"); + p = add_epsg_def (filter, first, last, 4063, "epsg", 4063, + "RGRDC 2005 / UTM zone 35S"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGRDC 2005 / UTM zone 35S\",GEOGCS[\"RGRDC 2005"); + add_srs_wkt (p, 1, + "\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1033\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",27],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 12, + "],AUTHORITY[\"EPSG\",\"4063\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_19.c b/src/spatialite/src/srsinit/epsg_inlined_19.c new file mode 100644 index 0000000..260e4b4 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_19.c @@ -0,0 +1,2050 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_19 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 4071, "epsg", 4071, + "Chua / UTM zone 23S"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +south +ellps=intl +towgs84=-134,229,"); + add_proj4text (p, 1, + "-29,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Chua / UTM zone 23S\",GEOGCS[\"Chua\",DATUM[\"C"); + add_srs_wkt (p, 1, + "hua\",SPHEROID[\"International 1924\",6378388,297,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7022\"]],TOWGS84[-134,229,-29,0,0,0,0],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6224\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "224\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",10000000"); + add_srs_wkt (p, 10, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"4071\"]]"); + p = add_epsg_def (filter, first, last, 4075, "epsg", 4075, + "SREF98"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"SREF98\",DATUM[\"Serbian_Reference_Network_1998"); + add_srs_wkt (p, 1, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 2, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1034\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4075\"]]"); + p = add_epsg_def (filter, first, last, 4081, "epsg", 4081, + "REGCAN95"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"REGCAN95\",DATUM[\"Red_Geodesica_de_Canarias_19"); + add_srs_wkt (p, 1, + "95\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"1035\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4081\"]]"); + p = add_epsg_def (filter, first, last, 4082, "epsg", 4082, + "REGCAN95 / UTM zone 27N"); + add_proj4text (p, 0, + "+proj=utm +zone=27 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"REGCAN95 / UTM zone 27N\",GEOGCS[\"REGCAN95\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Red_Geodesica_de_Canarias_1995\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1035\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4081\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-21],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"4082\"]]"); + p = add_epsg_def (filter, first, last, 4083, "epsg", 4083, + "REGCAN95 / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"REGCAN95 / UTM zone 28N\",GEOGCS[\"REGCAN95\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Red_Geodesica_de_Canarias_1995\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1035\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4081\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-15],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"4083\"]]"); + p = add_epsg_def (filter, first, last, 4087, "epsg", 4087, + "WGS 84 / World Equidistant Cylindrical"); + add_proj4text (p, 0, + "+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +dat"); + add_proj4text (p, 1, + "um=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / World Equidistant Cylindrical\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",63781"); + add_srs_wkt (p, 2, + "37,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]"); + add_srs_wkt (p, 6, + ",PROJECTION[\"Equirectangular\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 7, + "_origin\",0],PARAMETER[\"central_meridian\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"false_easting\",0],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 9, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); + add_srs_wkt (p, 10, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4087\"]]"); + p = add_epsg_def (filter, first, last, 4088, "epsg", 4088, + "World Equidistant Cylindrical (Sphere)"); + add_proj4text (p, 0, + "+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +a=6"); + add_proj4text (p, 1, + "371007 +b=6371007 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"World Equidistant Cylindrical (Sphere)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Unspecified datum based upon the GRS 1980 Authalic Sp"); + add_srs_wkt (p, 2, + "here\",DATUM[\"Not_specified_based_on_GRS_1980_Authalic_"); + add_srs_wkt (p, 3, + "Sphere\",SPHEROID[\"GRS 1980 Authalic Sphere\",6371007,0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"7048\"]],AUTHORITY[\"EPSG\",\"6047"); + add_srs_wkt (p, 5, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 6, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4047\"]],PROJECTION[\"Eq"); + add_srs_wkt (p, 8, + "uirectangular\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"central_meridian\",0],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"4088\"]]"); + p = add_epsg_def (filter, first, last, 4093, "epsg", 4093, + "ETRS89 / DKTM1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.99998 +x_0=200000 +y_"); + add_proj4text (p, 1, + "0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / DKTM1\",GEOGCS[\"ETRS89\",DATUM[\"Euro"); + add_srs_wkt (p, 1, + "pean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",9],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.99998],PARAMETER[\"false_easting\",200000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",-5000000],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"4093\"]]"); + p = add_epsg_def (filter, first, last, 4094, "epsg", 4094, + "ETRS89 / DKTM2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=10 +k=0.99998 +x_0=400000 +y"); + add_proj4text (p, 1, + "_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / DKTM2\",GEOGCS[\"ETRS89\",DATUM[\"Euro"); + add_srs_wkt (p, 1, + "pean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",10],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.99998],PARAMETER[\"false_easting\",400000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",-5000000],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"4094\"]]"); + p = add_epsg_def (filter, first, last, 4095, "epsg", 4095, + "ETRS89 / DKTM3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=11.75 +k=0.99998 +x_0=600000"); + add_proj4text (p, 1, + " +y_0=-5000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / DKTM3\",GEOGCS[\"ETRS89\",DATUM[\"Euro"); + add_srs_wkt (p, 1, + "pean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",11.75],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.99998],PARAMETER[\"false_easting\",600000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",-5000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"4095\"]]"); + p = add_epsg_def (filter, first, last, 4096, "epsg", 4096, + "ETRS89 / DKTM4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=800000 +y_0=-50"); + add_proj4text (p, 1, + "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / DKTM4\",GEOGCS[\"ETRS89\",DATUM[\"Euro"); + add_srs_wkt (p, 1, + "pean_Terrestrial_Reference_System_1989\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",15],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",1],PARAMETER[\"false_easting\",800000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"4096\"]]"); + p = add_epsg_def (filter, first, last, 4120, "epsg", 4120, + "Greek"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Greek\",DATUM[\"Greek\",SPHEROID[\"Bessel 1841\""); + add_srs_wkt (p, 1, + ",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"6120\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 4, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "4120\"]]"); + p = add_epsg_def (filter, first, last, 4121, "epsg", 4121, + "GGRS87"); + add_proj4text (p, 0, + "+proj=longlat +datum=GGRS87 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"GGRS87\",DATUM[\"Greek_Geodetic_Reference_Syste"); + add_srs_wkt (p, 1, + "m_1987\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[-199.87,74.79,246.62,"); + add_srs_wkt (p, 3, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6121\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4121\"]]"); + p = add_epsg_def (filter, first, last, 4122, "epsg", 4122, + "ATS77"); + add_proj4text (p, 0, + "+proj=longlat +a=6378135 +b=6356750.304921594 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"ATS77\",DATUM[\"Average_Terrestrial_System_1977"); + add_srs_wkt (p, 1, + "\",SPHEROID[\"Average Terrestrial System 1977\",6378135,"); + add_srs_wkt (p, 2, + "298.257,AUTHORITY[\"EPSG\",\"7041\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6122\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4122\"]]"); + p = add_epsg_def (filter, first, last, 4123, "epsg", 4123, + "KKJ"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-96.062,-82.428,-121."); + add_proj4text (p, 1, + "753,4.801,0.345,-1.376,1.496 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"KKJ\",DATUM[\"Kartastokoordinaattijarjestelma_1"); + add_srs_wkt (p, 1, + "966\",SPHEROID[\"International 1924\",6378388,297,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7022\"]],TOWGS84[-96.062,-82.428,-121.753"); + add_srs_wkt (p, 3, + ",4.801,0.345,-1.376,1.496],AUTHORITY[\"EPSG\",\"6123\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"4123\"]]"); + p = add_epsg_def (filter, first, last, 4124, "epsg", 4124, + "RT90"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=414.1,41.3,603.1,-0"); + add_proj4text (p, 1, + ".855,2.141,-7.023,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RT90\",DATUM[\"Rikets_koordinatsystem_1990\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY"); + add_srs_wkt (p, 2, + "[\"EPSG\",\"7004\"]],TOWGS84[414.1,41.3,603.1,-0.855,2.1"); + add_srs_wkt (p, 3, + "41,-7.023,0],AUTHORITY[\"EPSG\",\"6124\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4124\"]]"); + p = add_epsg_def (filter, first, last, 4125, "epsg", 4125, + "Samboja"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=-404.78,685.68,45.4"); + add_proj4text (p, 1, + "7,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Samboja\",DATUM[\"Samboja\",SPHEROID[\"Bessel 1"); + add_srs_wkt (p, 1, + "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); + add_srs_wkt (p, 2, + "]],TOWGS84[-404.78,685.68,45.47,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6125\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\"4125\"]]"); + p = add_epsg_def (filter, first, last, 4126, "epsg", 4126, + "LKS94 (ETRS89)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"LKS94 (ETRS89)\",DATUM[\"Lithuania_1994_ETRS89\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6126\"]],PRIMEM[\""); + add_srs_wkt (p, 3, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 4, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"4126\"]]"); + p = add_epsg_def (filter, first, last, 4127, "epsg", 4127, + "Tete"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +towgs84=-73.472,-51.66,-112"); + add_proj4text (p, 1, + ".482,0.953,4.6,-2.368,0.586 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Tete\",DATUM[\"Tete\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 1, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 2, + "],TOWGS84[-73.472,-51.66,-112.482,0.953,4.6,-2.368,0.586"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6127\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4127\"]]"); + p = add_epsg_def (filter, first, last, 4128, "epsg", 4128, + "Madzansua"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Madzansua\",DATUM[\"Madzansua\",SPHEROID[\"Clar"); + add_srs_wkt (p, 1, + "ke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7008\"]],AUTHORITY[\"EPSG\",\"6128\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 3, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 4, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"4128\"]]"); + p = add_epsg_def (filter, first, last, 4129, "epsg", 4129, + "Observatario"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Observatario\",DATUM[\"Observatario\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6129\"]],PRIMEM[\""); + add_srs_wkt (p, 3, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 4, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"4129\"]]"); + p = add_epsg_def (filter, first, last, 4130, "epsg", 4130, + "Moznet"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,-0,-0,-0,0 +no"); + add_proj4text (p, 1, + "_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Moznet\",DATUM[\"Moznet_ITRF94\",SPHEROID[\"WGS"); + add_srs_wkt (p, 1, + " 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]"); + add_srs_wkt (p, 2, + "],TOWGS84[0,0,0,-0,-0,-0,0],AUTHORITY[\"EPSG\",\"6130\"]"); + add_srs_wkt (p, 3, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 4, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 5, + "122\"]],AUTHORITY[\"EPSG\",\"4130\"]]"); + p = add_epsg_def (filter, first, last, 4131, "epsg", 4131, + "Indian 1960"); + add_proj4text (p, 0, + "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs8"); + add_proj4text (p, 1, + "4=198,881,317,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Indian 1960\",DATUM[\"Indian_1960\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Everest 1830 (1937 Adjustment)\",6377276.345,300.8017,AU"); + add_srs_wkt (p, 2, + "THORITY[\"EPSG\",\"7015\"]],TOWGS84[198,881,317,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6131\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4131\"]]"); + p = add_epsg_def (filter, first, last, 4132, "epsg", 4132, + "FD58"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-241.54,-163.64,396"); + add_proj4text (p, 1, + ".06,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"FD58\",DATUM[\"Final_Datum_1958\",SPHEROID[\"Cl"); + add_srs_wkt (p, 1, + "arke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7012\"]],TOWGS84[-241.54,-163.64,396.06,0,0,0,0],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6132\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"413"); + add_srs_wkt (p, 6, + "2\"]]"); + p = add_epsg_def (filter, first, last, 4133, "epsg", 4133, + "EST92"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0.055,-0.541,-0.185,"); + add_proj4text (p, 1, + "0.0183,-0.0003,-0.007,-0.014 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"EST92\",DATUM[\"Estonia_1992\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 1, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 2, + "],TOWGS84[0.055,-0.541,-0.185,0.0183,-0.0003,-0.007,-0.0"); + add_srs_wkt (p, 3, + "14],AUTHORITY[\"EPSG\",\"6133\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"4133\"]]"); + p = add_epsg_def (filter, first, last, 4134, "epsg", 4134, + "PSD93"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-180.624,-225.516,1"); + add_proj4text (p, 1, + "73.919,-0.81,-1.898,8.336,16.7101 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"PSD93\",DATUM[\"PDO_Survey_Datum_1993\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7012\"]],TOWGS84[-180.624,-225.516,173.919,-0.8"); + add_srs_wkt (p, 3, + "1,-1.898,8.336,16.7101],AUTHORITY[\"EPSG\",\"6134\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4134\"]]"); + p = add_epsg_def (filter, first, last, 4135, "epsg", 4135, + "Old Hawaiian"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +towgs84=61,-285,-181,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Old Hawaiian\",DATUM[\"Old_Hawaiian\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7008\"]],TOWGS84[61,-285,-181,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"6135\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4135\"]]"); + p = add_epsg_def (filter, first, last, 4136, "epsg", 4136, + "St. Lawrence Island"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"St. Lawrence Island\",DATUM[\"St_Lawrence_Islan"); + add_srs_wkt (p, 1, + "d\",SPHEROID[\"Clarke 1866\",6378206.4,294.9786982139006"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6136"); + add_srs_wkt (p, 3, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 4, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4136\"]]"); + p = add_epsg_def (filter, first, last, 4137, "epsg", 4137, + "St. Paul Island"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"St. Paul Island\",DATUM[\"St_Paul_Island\",SPHE"); + add_srs_wkt (p, 1, + "ROID[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6137\"]],PRI"); + add_srs_wkt (p, 3, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 4, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 5, + "],AUTHORITY[\"EPSG\",\"4137\"]]"); + p = add_epsg_def (filter, first, last, 4138, "epsg", 4138, + "St. George Island"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"St. George Island\",DATUM[\"St_George_Island\","); + add_srs_wkt (p, 1, + "SPHEROID[\"Clarke 1866\",6378206.4,294.9786982139006,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6138\"]]"); + add_srs_wkt (p, 3, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 4, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 5, + "22\"]],AUTHORITY[\"EPSG\",\"4138\"]]"); + p = add_epsg_def (filter, first, last, 4139, "epsg", 4139, + "Puerto Rico"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +towgs84=11,72,-101,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Puerto Rico\",DATUM[\"Puerto_Rico\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EP"); + add_srs_wkt (p, 2, + "SG\",\"7008\"]],TOWGS84[11,72,-101,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6139\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4139\"]]"); + p = add_epsg_def (filter, first, last, 4140, "epsg", 4140, + "NAD83(CSRS98)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NAD83(CSRS98)\",DATUM[\"NAD83_Canadian_Spatial_"); + add_srs_wkt (p, 1, + "Reference_System\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 2, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 3, + ",0],AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"4140\"]]"); + p = add_epsg_def (filter, first, last, 4141, "epsg", 4141, + "Israel"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=-48,55,52,0,0,0,0 +n"); + add_proj4text (p, 1, + "o_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Israel\",DATUM[\"Israel\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 1, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 2, + "GS84[-48,55,52,0,0,0,0],AUTHORITY[\"EPSG\",\"6141\"]],PR"); + add_srs_wkt (p, 3, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 4, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 5, + "]],AUTHORITY[\"EPSG\",\"4141\"]]"); + p = add_epsg_def (filter, first, last, 4142, "epsg", 4142, + "Locodjo 1965"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-125,53,467,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Locodjo 1965\",DATUM[\"Locodjo_1965\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); + add_srs_wkt (p, 2, + "SG\",\"7012\"]],TOWGS84[-125,53,467,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6142\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4142\"]]"); + p = add_epsg_def (filter, first, last, 4143, "epsg", 4143, + "Abidjan 1987"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-124.76,53,466.79,0"); + add_proj4text (p, 1, + ",0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Abidjan 1987\",DATUM[\"Abidjan_1987\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); + add_srs_wkt (p, 2, + "SG\",\"7012\"]],TOWGS84[-124.76,53,466.79,0,0,0,0],AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"6143\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4143"); + add_srs_wkt (p, 6, + "\"]]"); + p = add_epsg_def (filter, first, last, 4144, "epsg", 4144, + "Kalianpur 1937"); + add_proj4text (p, 0, + "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs8"); + add_proj4text (p, 1, + "4=214,804,268,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Kalianpur 1937\",DATUM[\"Kalianpur_1937\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"Everest 1830 (1937 Adjustment)\",6377276.345,300.8"); + add_srs_wkt (p, 2, + "017,AUTHORITY[\"EPSG\",\"7015\"]],TOWGS84[214,804,268,0,"); + add_srs_wkt (p, 3, + "0,0,0],AUTHORITY[\"EPSG\",\"6144\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4144\"]]"); + p = add_epsg_def (filter, first, last, 4145, "epsg", 4145, + "Kalianpur 1962"); + add_proj4text (p, 0, + "+proj=longlat +a=6377301.243 +b=6356100.230165384 +towgs"); + add_proj4text (p, 1, + "84=283,682,231,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Kalianpur 1962\",DATUM[\"Kalianpur_1962\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"Everest 1830 (1962 Definition)\",6377301.243,300.8"); + add_srs_wkt (p, 2, + "017255,AUTHORITY[\"EPSG\",\"7044\"]],TOWGS84[283,682,231"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6145\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4145\"]]"); + p = add_epsg_def (filter, first, last, 4146, "epsg", 4146, + "Kalianpur 1975"); + add_proj4text (p, 0, + "+proj=longlat +a=6377299.151 +b=6356098.145120132 +towgs"); + add_proj4text (p, 1, + "84=295,736,257,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Kalianpur 1975\",DATUM[\"Kalianpur_1975\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"Everest 1830 (1975 Definition)\",6377299.151,300.8"); + add_srs_wkt (p, 2, + "017255,AUTHORITY[\"EPSG\",\"7045\"]],TOWGS84[295,736,257"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4146\"]]"); + p = add_epsg_def (filter, first, last, 4147, "epsg", 4147, + "Hanoi 1972"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +towgs84=-17.51,-108.32,-62.3"); + add_proj4text (p, 1, + "9,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Hanoi 1972\",DATUM[\"Hanoi_1972\",SPHEROID[\"Kr"); + add_srs_wkt (p, 1, + "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); + add_srs_wkt (p, 2, + "]],TOWGS84[-17.51,-108.32,-62.39,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"6147\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4147\"]]"); + p = add_epsg_def (filter, first, last, 4148, "epsg", 4148, + "Hartebeesthoek94"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Hartebeesthoek94\",DATUM[\"Hartebeesthoek94\",S"); + add_srs_wkt (p, 1, + "PHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6148\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4148\"]]"); + p = add_epsg_def (filter, first, last, 4149, "epsg", 4149, + "CH1903"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=674.4,15.1,405.3,0,"); + add_proj4text (p, 1, + "0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"CH1903\",DATUM[\"CH1903\",SPHEROID[\"Bessel 184"); + add_srs_wkt (p, 1, + "1\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]"); + add_srs_wkt (p, 2, + "],TOWGS84[674.4,15.1,405.3,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "6149\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 4, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4149\"]]"); + p = add_epsg_def (filter, first, last, 4150, "epsg", 4150, + "CH1903+"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=674.374,15.056,405."); + add_proj4text (p, 1, + "346,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"CH1903+\",DATUM[\"CH1903+\",SPHEROID[\"Bessel 1"); + add_srs_wkt (p, 1, + "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); + add_srs_wkt (p, 2, + "]],TOWGS84[674.374,15.056,405.346,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6150\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4150\"]]"); + p = add_epsg_def (filter, first, last, 4151, "epsg", 4151, + "CHTRF95"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"CHTRF95\",DATUM[\"Swiss_Terrestrial_Reference_F"); + add_srs_wkt (p, 1, + "rame_1995\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"6151\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 6, + "51\"]]"); + p = add_epsg_def (filter, first, last, 4152, "epsg", 4152, + "NAD83(HARN)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refer"); + add_srs_wkt (p, 1, + "ence_Network\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 2, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4152\"]]"); + p = add_epsg_def (filter, first, last, 4153, "epsg", 4153, + "Rassadiran"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-133.63,-157.5,-158.6"); + add_proj4text (p, 1, + "2,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Rassadiran\",DATUM[\"Rassadiran\",SPHEROID[\"In"); + add_srs_wkt (p, 1, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 2, + "\"]],TOWGS84[-133.63,-157.5,-158.62,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6153\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4153\"]]"); + p = add_epsg_def (filter, first, last, 4154, "epsg", 4154, + "ED50(ED77)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-117,-132,-164,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"ED50(ED77)\",DATUM[\"European_Datum_1950_1977\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7022\"]],TOWGS84[-117,-132,-164,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6154\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4154\""); + add_srs_wkt (p, 6, + "]]"); + p = add_epsg_def (filter, first, last, 4155, "epsg", 4155, + "Dabola 1981"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-83,37,12"); + add_proj4text (p, 1, + "4,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Dabola 1981\",DATUM[\"Dabola_1981\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Clarke 1880 (IGN)\",6378249.2,293.4660212936265,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7011\"]],TOWGS84[-83,37,124,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6155\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4155\""); + add_srs_wkt (p, 6, + "]]"); + p = add_epsg_def (filter, first, last, 4156, "epsg", 4156, + "S-JTSK"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=589,76,480,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"S-JTSK\",DATUM[\"System_Jednotne_Trigonometrick"); + add_srs_wkt (p, 1, + "e_Site_Katastralni\",SPHEROID[\"Bessel 1841\",6377397.15"); + add_srs_wkt (p, 2, + "5,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[589,"); + add_srs_wkt (p, 3, + "76,480,0,0,0,0],AUTHORITY[\"EPSG\",\"6156\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4156\"]]"); + p = add_epsg_def (filter, first, last, 4157, "epsg", 4157, + "Mount Dillon"); + add_proj4text (p, 0, + "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Mount Dillon\",DATUM[\"Mount_Dillon\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Clarke 1858\",6378293.645208759,294.2606763692569,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7007\"]],AUTHORITY[\"EPSG\",\"6157\"]],"); + add_srs_wkt (p, 3, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 4, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 5, + "2\"]],AUTHORITY[\"EPSG\",\"4157\"]]"); + p = add_epsg_def (filter, first, last, 4158, "epsg", 4158, + "Naparima 1955"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-0.465,372.095,171.73"); + add_proj4text (p, 1, + "6,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Naparima 1955\",DATUM[\"Naparima_1955\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 2, + "\"7022\"]],TOWGS84[-0.465,372.095,171.736,0,0,0,0],AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"6158\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4158"); + add_srs_wkt (p, 6, + "\"]]"); + p = add_epsg_def (filter, first, last, 4159, "epsg", 4159, + "ELD79"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-115.854,-99.0583,-15"); + add_proj4text (p, 1, + "2.462,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"ELD79\",DATUM[\"European_Libyan_Datum_1979\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"International 1924\",6378388,297,AUTHORITY[\"EP"); + add_srs_wkt (p, 2, + "SG\",\"7022\"]],TOWGS84[-115.854,-99.0583,-152.462,0,0,0"); + add_srs_wkt (p, 3, + ",0],AUTHORITY[\"EPSG\",\"6159\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"4159\"]]"); + p = add_epsg_def (filter, first, last, 4160, "epsg", 4160, + "Chos Malal 1914"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Chos Malal 1914\",DATUM[\"Chos_Malal_1914\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7022\"]],AUTHORITY[\"EPSG\",\"6160\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 3, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 4, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"4160\"]]"); + p = add_epsg_def (filter, first, last, 4161, "epsg", 4161, + "Pampa del Castillo"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=27.5,14,186.4,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Pampa del Castillo\",DATUM[\"Pampa_del_Castillo"); + add_srs_wkt (p, 1, + "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); + add_srs_wkt (p, 2, + "[\"EPSG\",\"7022\"]],TOWGS84[27.5,14,186.4,0,0,0,0],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6161\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"416"); + add_srs_wkt (p, 6, + "1\"]]"); + p = add_epsg_def (filter, first, last, 4162, "epsg", 4162, + "Korean 1985"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Korean 1985\",DATUM[\"Korean_Datum_1985\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\""); + add_srs_wkt (p, 3, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 4, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"4162\"]]"); + p = add_epsg_def (filter, first, last, 4163, "epsg", 4163, + "Yemen NGN96"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Yemen NGN96\",DATUM[\"Yemen_National_Geodetic_N"); + add_srs_wkt (p, 1, + "etwork_1996\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"6163\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 6, + "63\"]]"); + p = add_epsg_def (filter, first, last, 4164, "epsg", 4164, + "South Yemen"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +towgs84=-76,-138,67,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"South Yemen\",DATUM[\"South_Yemen\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 2, + "4\"]],TOWGS84[-76,-138,67,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "6164\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 4, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4164\"]]"); + p = add_epsg_def (filter, first, last, 4165, "epsg", 4165, + "Bissau"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-173,253,27,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Bissau\",DATUM[\"Bissau\",SPHEROID[\"Internatio"); + add_srs_wkt (p, 1, + "nal 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOW"); + add_srs_wkt (p, 2, + "GS84[-173,253,27,0,0,0,0],AUTHORITY[\"EPSG\",\"6165\"]],"); + add_srs_wkt (p, 3, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 4, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 5, + "2\"]],AUTHORITY[\"EPSG\",\"4165\"]]"); + p = add_epsg_def (filter, first, last, 4166, "epsg", 4166, + "Korean 1995"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Korean 1995\",DATUM[\"Korean_Datum_1995\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 2, + "\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "166\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4166\"]]"); + p = add_epsg_def (filter, first, last, 4167, "epsg", 4167, + "NZGD2000"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NZGD2000\",DATUM[\"New_Zealand_Geodetic_Datum_2"); + add_srs_wkt (p, 1, + "000\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"6167\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4167\"]]"); + p = add_epsg_def (filter, first, last, 4168, "epsg", 4168, + "Accra"); + add_proj4text (p, 0, + "+proj=longlat +a=6378300 +b=6356751.689189189 +towgs84=-"); + add_proj4text (p, 1, + "199,32,322,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Accra\",DATUM[\"Accra\",SPHEROID[\"War Office\""); + add_srs_wkt (p, 1, + ",6378300,296,AUTHORITY[\"EPSG\",\"7029\"]],TOWGS84[-199,"); + add_srs_wkt (p, 2, + "32,322,0,0,0,0],AUTHORITY[\"EPSG\",\"6168\"]],PRIMEM[\"G"); + add_srs_wkt (p, 3, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 4, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"4168\"]]"); + p = add_epsg_def (filter, first, last, 4169, "epsg", 4169, + "American Samoa 1962"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +towgs84=-115,118,426,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"American Samoa 1962\",DATUM[\"American_Samoa_19"); + add_srs_wkt (p, 1, + "62\",SPHEROID[\"Clarke 1866\",6378206.4,294.978698213900"); + add_srs_wkt (p, 2, + "6,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[-115,118,426,0,0"); + add_srs_wkt (p, 3, + ",0,0],AUTHORITY[\"EPSG\",\"6169\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4169\"]]"); + p = add_epsg_def (filter, first, last, 4170, "epsg", 4170, + "SIRGAS 1995"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"SIRGAS 1995\",DATUM[\"Sistema_de_Referencia_Geo"); + add_srs_wkt (p, 1, + "centrico_para_America_del_Sur_1995\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6170\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4170\"]]"); + p = add_epsg_def (filter, first, last, 4171, "epsg", 4171, + "RGF93"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RGF93\",DATUM[\"Reseau_Geodesique_Francais_1993"); + add_srs_wkt (p, 1, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 2, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6171\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4171\"]]"); + p = add_epsg_def (filter, first, last, 4172, "epsg", 4172, + "POSGAR"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"POSGAR\",DATUM[\"Posiciones_Geodesicas_Argentin"); + add_srs_wkt (p, 1, + "as\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6172\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\"4172\"]]"); + p = add_epsg_def (filter, first, last, 4173, "epsg", 4173, + "IRENET95"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"IRENET95\",DATUM[\"IRENET95\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 1, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 2, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6173\"]],PR"); + add_srs_wkt (p, 3, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 4, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 5, + "]],AUTHORITY[\"EPSG\",\"4173\"]]"); + p = add_epsg_def (filter, first, last, 4174, "epsg", 4174, + "Sierra Leone 1924"); + add_proj4text (p, 0, + "+proj=longlat +a=6378300 +b=6356751.689189189 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Sierra Leone 1924\",DATUM[\"Sierra_Leone_Colony"); + add_srs_wkt (p, 1, + "_1924\",SPHEROID[\"War Office\",6378300,296,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7029\"]],AUTHORITY[\"EPSG\",\"6174\"]],PRIMEM[\""); + add_srs_wkt (p, 3, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 4, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"4174\"]]"); + p = add_epsg_def (filter, first, last, 4175, "epsg", 4175, + "Sierra Leone 1968"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-88,4,101,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Sierra Leone 1968\",DATUM[\"Sierra_Leone_1968\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7012\"]],TOWGS84[-88,4,101,0,0,0,0],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"6175\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 6, + "75\"]]"); + p = add_epsg_def (filter, first, last, 4176, "epsg", 4176, + "Australian Antarctic"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Australian Antarctic\",DATUM[\"Australian_Antar"); + add_srs_wkt (p, 1, + "ctic_Datum_1998\",SPHEROID[\"GRS 1980\",6378137,298.2572"); + add_srs_wkt (p, 2, + "22101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6176\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4176\"]]"); + p = add_epsg_def (filter, first, last, 4178, "epsg", 4178, + "Pulkovo 1942(83)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +towgs84=26,-121,-78,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]]"); + p = add_epsg_def (filter, first, last, 4179, "epsg", 4179, + "Pulkovo 1942(58)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +towgs84=33.4,-146.6,-76.3,-0"); + add_proj4text (p, 1, + ".359,-0.053,0.844,-0.84 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0"); + add_srs_wkt (p, 3, + ".844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4179\"]]"); + p = add_epsg_def (filter, first, last, 4180, "epsg", 4180, + "EST97"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"EST97\",DATUM[\"Estonia_1997\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 1, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 2, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6180\"]],P"); + add_srs_wkt (p, 3, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 4, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 5, + "\"]],AUTHORITY[\"EPSG\",\"4180\"]]"); + p = add_epsg_def (filter, first, last, 4181, "epsg", 4181, + "Luxembourg 1930"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-189.681,18.3463,-42."); + add_proj4text (p, 1, + "7695,-0.33746,-3.09264,2.53861,0.4598 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Luxembourg 1930\",DATUM[\"Luxembourg_1930\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7022\"]],TOWGS84[-189.681,18.3463,-42.7695,-0.3374"); + add_srs_wkt (p, 3, + "6,-3.09264,2.53861,0.4598],AUTHORITY[\"EPSG\",\"6181\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"4181\"]]"); + p = add_epsg_def (filter, first, last, 4182, "epsg", 4182, + "Azores Occidental 1939"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-425,-169,81,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Azores Occidental 1939\",DATUM[\"Azores_Occiden"); + add_srs_wkt (p, 1, + "tal_Islands_1939\",SPHEROID[\"International 1924\",63783"); + add_srs_wkt (p, 2, + "88,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-425,-169,8"); + add_srs_wkt (p, 3, + "1,0,0,0,0],AUTHORITY[\"EPSG\",\"6182\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4182\"]]"); + p = add_epsg_def (filter, first, last, 4183, "epsg", 4183, + "Azores Central 1948"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-104,167,-38,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Azores Central 1948\",DATUM[\"Azores_Central_Is"); + add_srs_wkt (p, 1, + "lands_1948\",SPHEROID[\"International 1924\",6378388,297"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-104,167,-38,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6183\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4183\"]]"); + p = add_epsg_def (filter, first, last, 4184, "epsg", 4184, + "Azores Oriental 1940"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-203,141,53,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Azores Oriental 1940\",DATUM[\"Azores_Oriental_"); + add_srs_wkt (p, 1, + "Islands_1940\",SPHEROID[\"International 1924\",6378388,2"); + add_srs_wkt (p, 2, + "97,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-203,141,53,0,0"); + add_srs_wkt (p, 3, + ",0,0],AUTHORITY[\"EPSG\",\"6184\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4184\"]]"); + p = add_epsg_def (filter, first, last, 4185, "epsg", 4185, + "Madeira 1936"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Madeira 1936\",DATUM[\"Madeira_1936\",SPHEROID["); + add_srs_wkt (p, 1, + "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7022\"]],AUTHORITY[\"EPSG\",\"6185\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 3, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 4, + "74532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"4185\"]]"); + p = add_epsg_def (filter, first, last, 4188, "epsg", 4188, + "OSNI 1952"); + add_proj4text (p, 0, + "+proj=longlat +ellps=airy +towgs84=482.5,-130.6,564.6,-1"); + add_proj4text (p, 1, + ".042,-0.214,-0.631,8.15 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"OSNI 1952\",DATUM[\"OSNI_1952\",SPHEROID[\"Airy"); + add_srs_wkt (p, 1, + " 1830\",6377563.396,299.3249646,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 2, + "1\"]],TOWGS84[482.5,-130.6,564.6,-1.042,-0.214,-0.631,8."); + add_srs_wkt (p, 3, + "15],AUTHORITY[\"EPSG\",\"6188\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"4188\"]]"); + p = add_epsg_def (filter, first, last, 4189, "epsg", 4189, + "REGVEN"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"REGVEN\",DATUM[\"Red_Geodesica_Venezolana\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6189\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4189\"]]"); + p = add_epsg_def (filter, first, last, 4190, "epsg", 4190, + "POSGAR 98"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"POSGAR 98\",DATUM[\"Posiciones_Geodesicas_Argen"); + add_srs_wkt (p, 1, + "tinas_1998\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6190\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "190\"]]"); + p = add_epsg_def (filter, first, last, 4191, "epsg", 4191, + "Albanian 1987"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Albanian 1987\",DATUM[\"Albanian_1987\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7024\"]],AUTHORITY[\"EPSG\",\"6191\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 3, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 4, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"4191\"]]"); + p = add_epsg_def (filter, first, last, 4192, "epsg", 4192, + "Douala 1948"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-206.1,-174.7,-87.7,0"); + add_proj4text (p, 1, + ",0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Douala 1948\",DATUM[\"Douala_1948\",SPHEROID[\""); + add_srs_wkt (p, 1, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "22\"]],TOWGS84[-206.1,-174.7,-87.7,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6192\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4192\"]]"); + p = add_epsg_def (filter, first, last, 4193, "epsg", 4193, + "Manoca 1962"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-70.9,-15"); + add_proj4text (p, 1, + "1.8,-41.4,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Manoca 1962\",DATUM[\"Manoca_1962\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Clarke 1880 (IGN)\",6378249.2,293.4660212936265,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7011\"]],TOWGS84[-70.9,-151.8,-41.4,0,0,0,0"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6193\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4193\"]]"); + p = add_epsg_def (filter, first, last, 4194, "epsg", 4194, + "Qornoq 1927"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Qornoq 1927\",DATUM[\"Qornoq_1927\",SPHEROID[\""); + add_srs_wkt (p, 1, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "22\"]],TOWGS84[164,138,-189,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"6194\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 4, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4194\"]]"); + p = add_epsg_def (filter, first, last, 4195, "epsg", 4195, + "Scoresbysund 1952"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=105,326,-102.5,0,0,0."); + add_proj4text (p, 1, + "814,-0.6 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Scoresbysund 1952\",DATUM[\"Scoresbysund_1952\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7022\"]],TOWGS84[105,326,-102.5,0,0,0.814,-0.6]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6195\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4195\"]]"); + p = add_epsg_def (filter, first, last, 4196, "epsg", 4196, + "Ammassalik 1958"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-45,417,-3.5,0,0,0.81"); + add_proj4text (p, 1, + "4,-0.6 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Ammassalik 1958\",DATUM[\"Ammassalik_1958\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7022\"]],TOWGS84[-45,417,-3.5,0,0,0.814,-0.6],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6196\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"419"); + add_srs_wkt (p, 6, + "6\"]]"); + p = add_epsg_def (filter, first, last, 4197, "epsg", 4197, + "Garoua"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Garoua\",DATUM[\"Garoua\",SPHEROID[\"Clarke 188"); + add_srs_wkt (p, 1, + "0 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\""); + add_srs_wkt (p, 2, + "]],AUTHORITY[\"EPSG\",\"6197\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 4, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"4197\"]]"); + p = add_epsg_def (filter, first, last, 4198, "epsg", 4198, + "Kousseri"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Kousseri\",DATUM[\"Kousseri\",SPHEROID[\"Clarke"); + add_srs_wkt (p, 1, + " 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 2, + "012\"]],AUTHORITY[\"EPSG\",\"6198\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 3, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 4, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"4198\"]]"); + p = add_epsg_def (filter, first, last, 4199, "epsg", 4199, + "Egypt 1930"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Egypt 1930\",DATUM[\"Egypt_1930\",SPHEROID[\"In"); + add_srs_wkt (p, 1, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 2, + "\"]],AUTHORITY[\"EPSG\",\"6199\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 3, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 4, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"4199\"]]"); + p = add_epsg_def (filter, first, last, 4200, "epsg", 4200, + "Pulkovo 1995"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +towgs84=24.47,-130.89,-81.56"); + add_proj4text (p, 1, + ",-0,-0,0.13,-0.22 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 2, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4200\"]]"); + p = add_epsg_def (filter, first, last, 4201, "epsg", 4201, + "Adindan"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-166,-15,204,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Adindan\",DATUM[\"Adindan\",SPHEROID[\"Clarke 1"); + add_srs_wkt (p, 1, + "880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 2, + "2\"]],TOWGS84[-166,-15,204,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "6201\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 4, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4201\"]]"); + p = add_epsg_def (filter, first, last, 4202, "epsg", 4202, + "AGD66"); + add_proj4text (p, 0, + "+proj=longlat +ellps=aust_SA +towgs84=-117.808,-51.536,1"); + add_proj4text (p, 1, + "37.784,0.303,0.446,0.234,-0.29 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"AGD66\",DATUM[\"Australian_Geodetic_Datum_1966\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"Australian National Spheroid\",6378160,298.2"); + add_srs_wkt (p, 2, + "5,AUTHORITY[\"EPSG\",\"7003\"]],TOWGS84[-117.808,-51.536"); + add_srs_wkt (p, 3, + ",137.784,0.303,0.446,0.234,-0.29],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "202\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4202\"]]"); + p = add_epsg_def (filter, first, last, 4203, "epsg", 4203, + "AGD84"); + add_proj4text (p, 0, + "+proj=longlat +ellps=aust_SA +towgs84=-134,-48,149,0,0,0"); + add_proj4text (p, 1, + ",0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"AGD84\",DATUM[\"Australian_Geodetic_Datum_1984\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"Australian National Spheroid\",6378160,298.2"); + add_srs_wkt (p, 2, + "5,AUTHORITY[\"EPSG\",\"7003\"]],TOWGS84[-134,-48,149,0,0"); + add_srs_wkt (p, 3, + ",0,0],AUTHORITY[\"EPSG\",\"6203\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4203\"]]"); + p = add_epsg_def (filter, first, last, 4204, "epsg", 4204, + "Ain el Abd"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-143,-236,7,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Ain el Abd\",DATUM[\"Ain_el_Abd_1970\",SPHEROID"); + add_srs_wkt (p, 1, + "[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7022\"]],TOWGS84[-143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6204\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4204\"]]"); + p = add_epsg_def (filter, first, last, 4205, "epsg", 4205, + "Afgooye"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +towgs84=-43,-163,45,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Afgooye\",DATUM[\"Afgooye\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 1, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 2, + "WGS84[-43,-163,45,0,0,0,0],AUTHORITY[\"EPSG\",\"6205\"]]"); + add_srs_wkt (p, 3, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 4, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 5, + "22\"]],AUTHORITY[\"EPSG\",\"4205\"]]"); + p = add_epsg_def (filter, first, last, 4206, "epsg", 4206, + "Agadez"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Agadez\",DATUM[\"Agadez\",SPHEROID[\"Clarke 188"); + add_srs_wkt (p, 1, + "0 (IGN)\",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7011\"]],AUTHORITY[\"EPSG\",\"6206\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 3, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 4, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"4206\"]]"); + p = add_epsg_def (filter, first, last, 4207, "epsg", 4207, + "Lisbon"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-304.046,-60.576,103."); + add_proj4text (p, 1, + "64,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Lisbon\",DATUM[\"Lisbon_1937\",SPHEROID[\"Inter"); + add_srs_wkt (p, 1, + "national 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]"); + add_srs_wkt (p, 2, + "],TOWGS84[-304.046,-60.576,103.64,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6207\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4207\"]]"); + p = add_epsg_def (filter, first, last, 4208, "epsg", 4208, + "Aratu"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-151.99,287.04,-147.4"); + add_proj4text (p, 1, + "5,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Aratu\",DATUM[\"Aratu\",SPHEROID[\"Internationa"); + add_srs_wkt (p, 1, + "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); + add_srs_wkt (p, 2, + "84[-151.99,287.04,-147.45,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "6208\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 4, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4208\"]]"); + p = add_epsg_def (filter, first, last, 4209, "epsg", 4209, + "Arc 1950"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.145 +b=6356514.966398753 +towgs"); + add_proj4text (p, 1, + "84=-143,-90,-294,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Arc 1950\",DATUM[\"Arc_1950\",SPHEROID[\"Clarke"); + add_srs_wkt (p, 1, + " 1880 (Arc)\",6378249.145,293.4663077,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7013\"]],TOWGS84[-143,-90,-294,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6209\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4209\"]]"); + p = add_epsg_def (filter, first, last, 4210, "epsg", 4210, + "Arc 1960"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-160,-6,-302,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Arc 1960\",DATUM[\"Arc_1960\",SPHEROID[\"Clarke"); + add_srs_wkt (p, 1, + " 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 2, + "012\"]],TOWGS84[-160,-6,-302,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6210\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4210\"]]"); + p = add_epsg_def (filter, first, last, 4211, "epsg", 4211, + "Batavia"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=-377,681,-50,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Batavia\",DATUM[\"Batavia\",SPHEROID[\"Bessel 1"); + add_srs_wkt (p, 1, + "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); + add_srs_wkt (p, 2, + "]],TOWGS84[-377,681,-50,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); + add_srs_wkt (p, 3, + "11\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4211\"]]"); + p = add_epsg_def (filter, first, last, 4212, "epsg", 4212, + "Barbados 1938"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=31.95,300.99,419.19"); + add_proj4text (p, 1, + ",0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Barbados 1938\",DATUM[\"Barbados_1938\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7012\"]],TOWGS84[31.95,300.99,419.19,0,0,0,0],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6212\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4212\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_20.c b/src/spatialite/src/srsinit/epsg_inlined_20.c new file mode 100644 index 0000000..25b7b47 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_20.c @@ -0,0 +1,1902 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_20 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 4213, "epsg", 4213, + "Beduaram"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-106,-87,"); + add_proj4text (p, 1, + "188,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Beduaram\",DATUM[\"Beduaram\",SPHEROID[\"Clarke"); + add_srs_wkt (p, 1, + " 1880 (IGN)\",6378249.2,293.4660212936265,AUTHORITY[\"EP"); + add_srs_wkt (p, 2, + "SG\",\"7011\"]],TOWGS84[-106,-87,188,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6213\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4213\"]]"); + p = add_epsg_def (filter, first, last, 4214, "epsg", 4214, + "Beijing 1954"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +towgs84=15.8,-154.4,-82.3,0,"); + add_proj4text (p, 1, + "0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 2, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]]"); + p = add_epsg_def (filter, first, last, 4215, "epsg", 4215, + "Belge 1950"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Belge 1950\",DATUM[\"Reseau_National_Belge_1950"); + add_srs_wkt (p, 1, + "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); + add_srs_wkt (p, 2, + "[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\",\"6215\"]],PRIME"); + add_srs_wkt (p, 3, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 4, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"4215\"]]"); + p = add_epsg_def (filter, first, last, 4216, "epsg", 4216, + "Bermuda 1957"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +towgs84=-73,213,296,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Bermuda 1957\",DATUM[\"Bermuda_1957\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7008\"]],TOWGS84[-73,213,296,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"6216\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4216\"]]"); + p = add_epsg_def (filter, first, last, 4217, "epsg", 4217, + "NAD83 / BLM 59N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=171 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 59N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",171],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 11, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4217\"]]"); + p = add_epsg_def (filter, first, last, 4218, "epsg", 4218, + "Bogota 1975"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Bogota 1975\",DATUM[\"Bogota_1975\",SPHEROID[\""); + add_srs_wkt (p, 1, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "22\"]],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"6218\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 4, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4218\"]]"); + p = add_epsg_def (filter, first, last, 4219, "epsg", 4219, + "Bukit Rimpah"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=-384,664,-48,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Bukit Rimpah\",DATUM[\"Bukit_Rimpah\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 2, + "\",\"7004\"]],TOWGS84[-384,664,-48,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6219\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4219\"]]"); + p = add_epsg_def (filter, first, last, 4220, "epsg", 4220, + "Camacupa"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0"); + add_proj4text (p, 1, + ",0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Camacupa\",DATUM[\"Camacupa\",SPHEROID[\"Clarke"); + add_srs_wkt (p, 1, + " 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 2, + "012\"]],TOWGS84[-50.9,-347.6,-231,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6220\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4220\"]]"); + p = add_epsg_def (filter, first, last, 4221, "epsg", 4221, + "Campo Inchauspe"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-148,136,90,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Campo Inchauspe\",DATUM[\"Campo_Inchauspe\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7022\"]],TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6221\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4221\"]]"); + p = add_epsg_def (filter, first, last, 4222, "epsg", 4222, + "Cape"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.145 +b=6356514.966398753 +towgs"); + add_proj4text (p, 1, + "84=-136,-108,-292,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Cape\",DATUM[\"Cape\",SPHEROID[\"Clarke 1880 (A"); + add_srs_wkt (p, 1, + "rc)\",6378249.145,293.4663077,AUTHORITY[\"EPSG\",\"7013\""); + add_srs_wkt (p, 2, + "]],TOWGS84[-136,-108,-292,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "6222\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 4, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4222\"]]"); + p = add_epsg_def (filter, first, last, 4223, "epsg", 4223, + "Carthage"); + add_proj4text (p, 0, + "+proj=longlat +datum=carthage +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Carthage\",DATUM[\"Carthage\",SPHEROID[\"Clarke"); + add_srs_wkt (p, 1, + " 1880 (IGN)\",6378249.2,293.4660212936265,AUTHORITY[\"EP"); + add_srs_wkt (p, 2, + "SG\",\"7011\"]],TOWGS84[-263,6,431,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6223\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4223\"]]"); + p = add_epsg_def (filter, first, last, 4224, "epsg", 4224, + "Chua"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-134,229,-29,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Chua\",DATUM[\"Chua\",SPHEROID[\"International "); + add_srs_wkt (p, 1, + "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); + add_srs_wkt (p, 2, + "[-134,229,-29,0,0,0,0],AUTHORITY[\"EPSG\",\"6224\"]],PRI"); + add_srs_wkt (p, 3, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 4, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 5, + "],AUTHORITY[\"EPSG\",\"4224\"]]"); + p = add_epsg_def (filter, first, last, 4225, "epsg", 4225, + "Corrego Alegre 1970-72"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-206,172,-6,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Corrego Alegre 1970-72\",DATUM[\"Corrego_Alegre"); + add_srs_wkt (p, 1, + "_1970_72\",SPHEROID[\"International 1924\",6378388,297,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-206,172,-6,0,0,0,0"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6225\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4225\"]]"); + p = add_epsg_def (filter, first, last, 4226, "epsg", 4226, + "Cote d'Ivoire"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Cote d'Ivoire\",DATUM[\"Cote_d_Ivoire\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936265,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7011\"]],AUTHORITY[\"EPSG\",\"6226\"]],"); + add_srs_wkt (p, 3, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 4, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"910"); + add_srs_wkt (p, 5, + "8\"]],AUTHORITY[\"EPSG\",\"4226\"]]"); + p = add_epsg_def (filter, first, last, 4227, "epsg", 4227, + "Deir ez Zor"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-190.421,"); + add_proj4text (p, 1, + "8.532,238.69,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Deir ez Zor\",DATUM[\"Deir_ez_Zor\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Clarke 1880 (IGN)\",6378249.2,293.4660212936265,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7011\"]],TOWGS84[-190.421,8.532,238.69,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6227\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4227\"]]"); + p = add_epsg_def (filter, first, last, 4228, "epsg", 4228, + "Douala"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Douala\",DATUM[\"Douala\",SPHEROID[\"Clarke 188"); + add_srs_wkt (p, 1, + "0 (IGN)\",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7011\"]],AUTHORITY[\"EPSG\",\"6228\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 3, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 4, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"4228\"]]"); + p = add_epsg_def (filter, first, last, 4229, "epsg", 4229, + "Egypt 1907"); + add_proj4text (p, 0, + "+proj=longlat +ellps=helmert +towgs84=-130,110,-13,0,0,0"); + add_proj4text (p, 1, + ",0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Egypt 1907\",DATUM[\"Egypt_1907\",SPHEROID[\"He"); + add_srs_wkt (p, 1, + "lmert 1906\",6378200,298.3,AUTHORITY[\"EPSG\",\"7020\"]]"); + add_srs_wkt (p, 2, + ",TOWGS84[-130,110,-13,0,0,0,0],AUTHORITY[\"EPSG\",\"6229"); + add_srs_wkt (p, 3, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 4, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4229\"]]"); + p = add_epsg_def (filter, first, last, 4230, "epsg", 4230, + "ED50"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"ED50\",DATUM[\"European_Datum_1950\",SPHEROID[\""); + add_srs_wkt (p, 1, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "22\"]],TOWGS84[-87,-98,-121,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"6230\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 4, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4230\"]]"); + p = add_epsg_def (filter, first, last, 4231, "epsg", 4231, + "ED87"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-83.11,-97.38,-117.22"); + add_proj4text (p, 1, + ",0.00569291,-0.0446976,0.0442851,0.1218 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"ED87\",DATUM[\"European_Datum_1987\",SPHEROID[\""); + add_srs_wkt (p, 1, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "22\"]],TOWGS84[-83.11,-97.38,-117.22,0.00569291,-0.04469"); + add_srs_wkt (p, 3, + "76,0.0442851,0.1218],AUTHORITY[\"EPSG\",\"6231\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4231\"]]"); + p = add_epsg_def (filter, first, last, 4232, "epsg", 4232, + "Fahud"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-346,-1,224,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Fahud\",DATUM[\"Fahud\",SPHEROID[\"Clarke 1880 "); + add_srs_wkt (p, 1, + "(RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]"); + add_srs_wkt (p, 2, + "],TOWGS84[-346,-1,224,0,0,0,0],AUTHORITY[\"EPSG\",\"6232"); + add_srs_wkt (p, 3, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 4, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4232\"]]"); + p = add_epsg_def (filter, first, last, 4233, "epsg", 4233, + "Gandajika 1970"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Gandajika 1970\",DATUM[\"Gandajika_1970\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7022\"]],TOWGS84[-133,-321,50,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"6233\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4233\"]]"); + p = add_epsg_def (filter, first, last, 4234, "epsg", 4234, + "Garoua"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Garoua\",DATUM[\"Garoua\",SPHEROID[\"Clarke 188"); + add_srs_wkt (p, 1, + "0 (IGN)\",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7011\"]],AUTHORITY[\"EPSG\",\"6234\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 3, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 4, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"4234\"]]"); + p = add_epsg_def (filter, first, last, 4235, "epsg", 4235, + "Guyane Francaise"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Guyane Francaise\",DATUM[\"Guyane_Francaise\",S"); + add_srs_wkt (p, 1, + "PHEROID[\"International 1924\",6378388,297,AUTHORITY[\"E"); + add_srs_wkt (p, 2, + "PSG\",\"7022\"]],AUTHORITY[\"EPSG\",\"6235\"]],PRIMEM[\""); + add_srs_wkt (p, 3, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 4, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"4235\"]]"); + p = add_epsg_def (filter, first, last, 4236, "epsg", 4236, + "Hu Tzu Shan 1950"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-637,-549,-203,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Hu Tzu Shan 1950\",DATUM[\"Hu_Tzu_Shan_1950\",S"); + add_srs_wkt (p, 1, + "PHEROID[\"International 1924\",6378388,297,AUTHORITY[\"E"); + add_srs_wkt (p, 2, + "PSG\",\"7022\"]],TOWGS84[-637,-549,-203,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6236\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4236\""); + add_srs_wkt (p, 6, + "]]"); + p = add_epsg_def (filter, first, last, 4237, "epsg", 4237, + "HD72"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS67 +towgs84=52.17,-71.82,-14.9,0"); + add_proj4text (p, 1, + ",0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"HD72\",DATUM[\"Hungarian_Datum_1972\",SPHEROID["); + add_srs_wkt (p, 1, + "\"GRS 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7036\"]],TOWGS84[52.17,-71.82,-14.9,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6237\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4237\"]]"); + p = add_epsg_def (filter, first, last, 4238, "epsg", 4238, + "ID74"); + add_proj4text (p, 0, + "+proj=longlat +a=6378160 +b=6356774.50408554 +towgs84=-2"); + add_proj4text (p, 1, + "4,-15,5,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"ID74\",DATUM[\"Indonesian_Datum_1974\",SPHEROID"); + add_srs_wkt (p, 1, + "[\"Indonesian National Spheroid\",6378160,298.247,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7021\"]],TOWGS84[-24,-15,5,0,0,0,0],AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"6238\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4238"); + add_srs_wkt (p, 6, + "\"]]"); + p = add_epsg_def (filter, first, last, 4239, "epsg", 4239, + "Indian 1954"); + add_proj4text (p, 0, + "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs8"); + add_proj4text (p, 1, + "4=217,823,299,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Indian 1954\",DATUM[\"Indian_1954\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Everest 1830 (1937 Adjustment)\",6377276.345,300.8017,AU"); + add_srs_wkt (p, 2, + "THORITY[\"EPSG\",\"7015\"]],TOWGS84[217,823,299,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6239\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4239\"]]"); + p = add_epsg_def (filter, first, last, 4240, "epsg", 4240, + "Indian 1975"); + add_proj4text (p, 0, + "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs8"); + add_proj4text (p, 1, + "4=210,814,289,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Indian 1975\",DATUM[\"Indian_1975\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Everest 1830 (1937 Adjustment)\",6377276.345,300.8017,AU"); + add_srs_wkt (p, 2, + "THORITY[\"EPSG\",\"7015\"]],TOWGS84[210,814,289,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6240\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4240\"]]"); + p = add_epsg_def (filter, first, last, 4241, "epsg", 4241, + "Jamaica 1875"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.144808011 +b=6356514.966204134 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Jamaica 1875\",DATUM[\"Jamaica_1875\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Clarke 1880\",6378249.144808011,293.4663076556349,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7034\"]],AUTHORITY[\"EPSG\",\"6241\"]],"); + add_srs_wkt (p, 3, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 4, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 5, + "2\"]],AUTHORITY[\"EPSG\",\"4241\"]]"); + p = add_epsg_def (filter, first, last, 4242, "epsg", 4242, + "JAD69"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +towgs84=70,207,389.5,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"JAD69\",DATUM[\"Jamaica_1969\",SPHEROID[\"Clark"); + add_srs_wkt (p, 1, + "e 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 2, + "\"7008\"]],TOWGS84[70,207,389.5,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6242\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4242\"]]"); + p = add_epsg_def (filter, first, last, 4243, "epsg", 4243, + "Kalianpur 1880"); + add_proj4text (p, 0, + "+proj=longlat +a=6377299.36559538 +b=6356098.359005156 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Kalianpur 1880\",DATUM[\"Kalianpur_1880\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"Everest (1830 Definition)\",6377299.36559538,300.8"); + add_srs_wkt (p, 2, + "017255433552,AUTHORITY[\"EPSG\",\"7042\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6243\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4243\"]]"); + p = add_epsg_def (filter, first, last, 4244, "epsg", 4244, + "Kandawala"); + add_proj4text (p, 0, + "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs8"); + add_proj4text (p, 1, + "4=-97,787,86,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Kandawala\",DATUM[\"Kandawala\",SPHEROID[\"Ever"); + add_srs_wkt (p, 1, + "est 1830 (1937 Adjustment)\",6377276.345,300.8017,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7015\"]],TOWGS84[-97,787,86,0,0,0,0],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6244\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"424"); + add_srs_wkt (p, 6, + "4\"]]"); + p = add_epsg_def (filter, first, last, 4245, "epsg", 4245, + "Kertau 1968"); + add_proj4text (p, 0, + "+proj=longlat +a=6377304.063 +b=6356103.038993155 +towgs"); + add_proj4text (p, 1, + "84=-11,851,5,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Kertau 1968\",DATUM[\"Kertau_1968\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Everest 1830 Modified\",6377304.063,300.8017,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7018\"]],TOWGS84[-11,851,5,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6245\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4245\"]]"); + p = add_epsg_def (filter, first, last, 4246, "epsg", 4246, + "KOC"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-294.7,-200.1,525.5"); + add_proj4text (p, 1, + ",0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"KOC\",DATUM[\"Kuwait_Oil_Company\",SPHEROID[\"C"); + add_srs_wkt (p, 1, + "larke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7012\"]],TOWGS84[-294.7,-200.1,525.5,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6246\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4246\""); + add_srs_wkt (p, 6, + "]]"); + p = add_epsg_def (filter, first, last, 4247, "epsg", 4247, + "La Canoa"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-273.5,110.6,-357.9,0"); + add_proj4text (p, 1, + ",0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"La Canoa\",DATUM[\"La_Canoa\",SPHEROID[\"Intern"); + add_srs_wkt (p, 1, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 2, + ",TOWGS84[-273.5,110.6,-357.9,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6247\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4247\"]]"); + p = add_epsg_def (filter, first, last, 4248, "epsg", 4248, + "PSAD56"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-288,175,-376,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"PSAD56\",DATUM[\"Provisional_South_American_Dat"); + add_srs_wkt (p, 1, + "um_1956\",SPHEROID[\"International 1924\",6378388,297,AU"); + add_srs_wkt (p, 2, + "THORITY[\"EPSG\",\"7022\"]],TOWGS84[-288,175,-376,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6248\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4248\"]]"); + p = add_epsg_def (filter, first, last, 4249, "epsg", 4249, + "Lake"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Lake\",DATUM[\"Lake\",SPHEROID[\"International "); + add_srs_wkt (p, 1, + "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"6249\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4249\""); + add_srs_wkt (p, 5, + "]]"); + p = add_epsg_def (filter, first, last, 4250, "epsg", 4250, + "Leigon"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-130,29,364,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Leigon\",DATUM[\"Leigon\",SPHEROID[\"Clarke 188"); + add_srs_wkt (p, 1, + "0 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\""); + add_srs_wkt (p, 2, + "]],TOWGS84[-130,29,364,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 3, + "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4250\"]]"); + p = add_epsg_def (filter, first, last, 4251, "epsg", 4251, + "Liberia 1964"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-90,40,88,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Liberia 1964\",DATUM[\"Liberia_1964\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); + add_srs_wkt (p, 2, + "SG\",\"7012\"]],TOWGS84[-90,40,88,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6251\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4251\"]]"); + p = add_epsg_def (filter, first, last, 4252, "epsg", 4252, + "Lome"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Lome\",DATUM[\"Lome\",SPHEROID[\"Clarke 1880 (I"); + add_srs_wkt (p, 1, + "GN)\",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 2, + "011\"]],AUTHORITY[\"EPSG\",\"6252\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 3, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 4, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"4252\"]]"); + p = add_epsg_def (filter, first, last, 4253, "epsg", 4253, + "Luzon 1911"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Luzon 1911\",DATUM[\"Luzon_1911\",SPHEROID[\"Cl"); + add_srs_wkt (p, 1, + "arke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 2, + "\",\"7008\"]],TOWGS84[-133,-77,-51,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6253\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4253\"]]"); + p = add_epsg_def (filter, first, last, 4254, "epsg", 4254, + "Hito XVIII 1963"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=16,196,93,0,0,0,0 +no"); + add_proj4text (p, 1, + "_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Hito XVIII 1963\",DATUM[\"Hito_XVIII_1963\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7022\"]],TOWGS84[16,196,93,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"6254\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4254\"]]"); + p = add_epsg_def (filter, first, last, 4255, "epsg", 4255, + "Herat North"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-333,-222,114,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Herat North\",DATUM[\"Herat_North\",SPHEROID[\""); + add_srs_wkt (p, 1, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "22\"]],TOWGS84[-333,-222,114,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6255\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4255\"]]"); + p = add_epsg_def (filter, first, last, 4256, "epsg", 4256, + "Mahe 1971"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=41,-220,-134,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Mahe 1971\",DATUM[\"Mahe_1971\",SPHEROID[\"Clar"); + add_srs_wkt (p, 1, + "ke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7012\"]],TOWGS84[41,-220,-134,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6256\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4256\"]]"); + p = add_epsg_def (filter, first, last, 4257, "epsg", 4257, + "Makassar"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.7"); + add_proj4text (p, 1, + "6,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Makassar\",DATUM[\"Makassar\",SPHEROID[\"Bessel"); + add_srs_wkt (p, 1, + " 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 2, + "4\"]],TOWGS84[-587.8,519.75,145.76,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6257\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4257\"]]"); + p = add_epsg_def (filter, first, last, 4258, "epsg", 4258, + "ETRS89"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"ETRS89\",DATUM[\"European_Terrestrial_Reference"); + add_srs_wkt (p, 1, + "_System_1989\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 2, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4258\"]]"); + p = add_epsg_def (filter, first, last, 4259, "epsg", 4259, + "Malongo 1987"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-254.1,-5.36,-100.29,"); + add_proj4text (p, 1, + "0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Malongo 1987\",DATUM[\"Malongo_1987\",SPHEROID["); + add_srs_wkt (p, 1, + "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7022\"]],TOWGS84[-254.1,-5.36,-100.29,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"6259\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4259\"]]"); + p = add_epsg_def (filter, first, last, 4260, "epsg", 4260, + "Manoca"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-70.9,-151.8,-41.4,"); + add_proj4text (p, 1, + "0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Manoca\",DATUM[\"Manoca\",SPHEROID[\"Clarke 188"); + add_srs_wkt (p, 1, + "0 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\""); + add_srs_wkt (p, 2, + "]],TOWGS84[-70.9,-151.8,-41.4,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6260\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\"4260\"]]"); + p = add_epsg_def (filter, first, last, 4261, "epsg", 4261, + "Merchich"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=31,146,47"); + add_proj4text (p, 1, + ",0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Merchich\",DATUM[\"Merchich\",SPHEROID[\"Clarke"); + add_srs_wkt (p, 1, + " 1880 (IGN)\",6378249.2,293.4660212936265,AUTHORITY[\"EP"); + add_srs_wkt (p, 2, + "SG\",\"7011\"]],TOWGS84[31,146,47,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6261\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4261\"]]"); + p = add_epsg_def (filter, first, last, 4262, "epsg", 4262, + "Massawa"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=639,405,60,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Massawa\",DATUM[\"Massawa\",SPHEROID[\"Bessel 1"); + add_srs_wkt (p, 1, + "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); + add_srs_wkt (p, 2, + "]],TOWGS84[639,405,60,0,0,0,0],AUTHORITY[\"EPSG\",\"6262"); + add_srs_wkt (p, 3, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 4, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4262\"]]"); + p = add_epsg_def (filter, first, last, 4263, "epsg", 4263, + "Minna"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Minna\",DATUM[\"Minna\",SPHEROID[\"Clarke 1880 "); + add_srs_wkt (p, 1, + "(RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]"); + add_srs_wkt (p, 2, + "],TOWGS84[-92,-93,122,0,0,0,0],AUTHORITY[\"EPSG\",\"6263"); + add_srs_wkt (p, 3, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 4, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4263\"]]"); + p = add_epsg_def (filter, first, last, 4264, "epsg", 4264, + "Mhast"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-252.95,-4.11,-96.38,"); + add_proj4text (p, 1, + "0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Mhast\",DATUM[\"Mhast\",SPHEROID[\"Internationa"); + add_srs_wkt (p, 1, + "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); + add_srs_wkt (p, 2, + "84[-252.95,-4.11,-96.38,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); + add_srs_wkt (p, 3, + "64\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4264\"]]"); + p = add_epsg_def (filter, first, last, 4265, "epsg", 4265, + "Monte Mario"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.9"); + add_proj4text (p, 1, + "71,-2.917,0.714,-11.68 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Monte Mario\",DATUM[\"Monte_Mario\",SPHEROID[\""); + add_srs_wkt (p, 1, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "22\"]],TOWGS84[-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11."); + add_srs_wkt (p, 3, + "68],AUTHORITY[\"EPSG\",\"6265\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"4265\"]]"); + p = add_epsg_def (filter, first, last, 4266, "epsg", 4266, + "M'poraloko"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-74,-130,"); + add_proj4text (p, 1, + "42,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"M'poraloko\",DATUM[\"M_poraloko\",SPHEROID[\"Cl"); + add_srs_wkt (p, 1, + "arke 1880 (IGN)\",6378249.2,293.4660212936265,AUTHORITY["); + add_srs_wkt (p, 2, + "\"EPSG\",\"7011\"]],TOWGS84[-74,-130,42,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6266\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4266\""); + add_srs_wkt (p, 6, + "]]"); + p = add_epsg_def (filter, first, last, 4267, "epsg", 4267, + "NAD27"); + add_proj4text (p, 0, + "+proj=longlat +datum=NAD27 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NAD27\",DATUM[\"North_American_Datum_1927\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PR"); + add_srs_wkt (p, 3, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 4, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 5, + "]],AUTHORITY[\"EPSG\",\"4267\"]]"); + p = add_epsg_def (filter, first, last, 4268, "epsg", 4268, + "NAD27 Michigan"); + add_proj4text (p, 0, + "+proj=longlat +a=6378450.047548896 +b=6356826.621488444 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NAD27 Michigan\",DATUM[\"NAD27_Michigan\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"Clarke 1866 Michigan\",6378450.047548896,294.97869"); + add_srs_wkt (p, 2, + "71646739,AUTHORITY[\"EPSG\",\"7009\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6268\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4268\"]]"); + p = add_epsg_def (filter, first, last, 4269, "epsg", 4269, + "NAD83"); + add_proj4text (p, 0, + "+proj=longlat +datum=NAD83 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]]"); + p = add_epsg_def (filter, first, last, 4270, "epsg", 4270, + "Nahrwan 1967"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-242.2,-144.9,370.3"); + add_proj4text (p, 1, + ",0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Nahrwan 1967\",DATUM[\"Nahrwan_1967\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); + add_srs_wkt (p, 2, + "SG\",\"7012\"]],TOWGS84[-242.2,-144.9,370.3,0,0,0,0],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"6270\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 6, + "70\"]]"); + p = add_epsg_def (filter, first, last, 4271, "epsg", 4271, + "Naparima 1972"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-10,375,165,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Naparima 1972\",DATUM[\"Naparima_1972\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 2, + "\"7022\"]],TOWGS84[-10,375,165,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6271\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4271\"]]"); + p = add_epsg_def (filter, first, last, 4272, "epsg", 4272, + "NZGD49"); + add_proj4text (p, 0, + "+proj=longlat +datum=nzgd49 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NZGD49\",DATUM[\"New_Zealand_Geodetic_Datum_194"); + add_srs_wkt (p, 1, + "9\",SPHEROID[\"International 1924\",6378388,297,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7022\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0"); + add_srs_wkt (p, 3, + ".1,1.024,-4.5993],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4272\"]]"); + p = add_epsg_def (filter, first, last, 4273, "epsg", 4273, + "NGO 1948"); + add_proj4text (p, 0, + "+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs"); + add_proj4text (p, 1, + "84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NGO 1948\",DATUM[\"NGO_1948\",SPHEROID[\"Bessel"); + add_srs_wkt (p, 1, + " Modified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7005\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6273\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4273\"]]"); + p = add_epsg_def (filter, first, last, 4274, "epsg", 4274, + "Datum 73"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-223.237,110.193,36.6"); + add_proj4text (p, 1, + "49,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Datum 73\",DATUM[\"Datum_73\",SPHEROID[\"Intern"); + add_srs_wkt (p, 1, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 2, + ",TOWGS84[-223.237,110.193,36.649,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"6274\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4274\"]]"); + p = add_epsg_def (filter, first, last, 4275, "epsg", 4275, + "NTF"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,"); + add_proj4text (p, 1, + "320,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NTF\",DATUM[\"Nouvelle_Triangulation_Francaise\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936"); + add_srs_wkt (p, 2, + "265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,320,0"); + add_srs_wkt (p, 3, + ",0,0,0],AUTHORITY[\"EPSG\",\"6275\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4275\"]]"); + p = add_epsg_def (filter, first, last, 4276, "epsg", 4276, + "NSWC 9Z-2"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS66 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NSWC 9Z-2\",DATUM[\"NSWC_9Z_2\",SPHEROID[\"NWL "); + add_srs_wkt (p, 1, + "9D\",6378145,298.25,AUTHORITY[\"EPSG\",\"7025\"]],AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"6276\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4276\""); + add_srs_wkt (p, 5, + "]]"); + p = add_epsg_def (filter, first, last, 4277, "epsg", 4277, + "OSGB 1936"); + add_proj4text (p, 0, + "+proj=longlat +datum=OSGB36 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"OSGB 1936\",DATUM[\"OSGB_1936\",SPHEROID[\"Airy"); + add_srs_wkt (p, 1, + " 1830\",6377563.396,299.3249646,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 2, + "1\"]],TOWGS84[446.448,-125.157,542.06,0.15,0.247,0.842,-"); + add_srs_wkt (p, 3, + "20.489],AUTHORITY[\"EPSG\",\"6277\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4277\"]]"); + p = add_epsg_def (filter, first, last, 4278, "epsg", 4278, + "OSGB70"); + add_proj4text (p, 0, + "+proj=longlat +ellps=airy +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"OSGB70\",DATUM[\"OSGB_1970_SN\",SPHEROID[\"Airy"); + add_srs_wkt (p, 1, + " 1830\",6377563.396,299.3249646,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 2, + "1\"]],AUTHORITY[\"EPSG\",\"6278\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 3, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 4, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 5, + "SG\",\"4278\"]]"); + p = add_epsg_def (filter, first, last, 4279, "epsg", 4279, + "OS(SN)80"); + add_proj4text (p, 0, + "+proj=longlat +ellps=airy +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"OS(SN)80\",DATUM[\"OS_SN_1980\",SPHEROID[\"Airy"); + add_srs_wkt (p, 1, + " 1830\",6377563.396,299.3249646,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 2, + "1\"]],AUTHORITY[\"EPSG\",\"6279\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 3, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 4, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 5, + "SG\",\"4279\"]]"); + p = add_epsg_def (filter, first, last, 4280, "epsg", 4280, + "Padang"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Padang\",DATUM[\"Padang_1884\",SPHEROID[\"Besse"); + add_srs_wkt (p, 1, + "l 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "04\"]],AUTHORITY[\"EPSG\",\"6280\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 3, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 4, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 5, + "SG\",\"4280\"]]"); + p = add_epsg_def (filter, first, last, 4281, "epsg", 4281, + "Palestine 1923"); + add_proj4text (p, 0, + "+proj=longlat +a=6378300.789 +b=6356566.435 +towgs84=-27"); + add_proj4text (p, 1, + "5.722,94.7824,340.894,-8.001,-4.42,-11.821,1 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Palestine 1923\",DATUM[\"Palestine_1923\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"Clarke 1880 (Benoit)\",6378300.789,293.46631553898"); + add_srs_wkt (p, 2, + "02,AUTHORITY[\"EPSG\",\"7010\"]],TOWGS84[-275.722,94.782"); + add_srs_wkt (p, 3, + "4,340.894,-8.001,-4.42,-11.821,1],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "281\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4281\"]]"); + p = add_epsg_def (filter, first, last, 4282, "epsg", 4282, + "Pointe Noire"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-148,51,-"); + add_proj4text (p, 1, + "291,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Pointe Noire\",DATUM[\"Congo_1960_Pointe_Noire\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936"); + add_srs_wkt (p, 2, + "265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-148,51,-291,0"); + add_srs_wkt (p, 3, + ",0,0,0],AUTHORITY[\"EPSG\",\"6282\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4282\"]]"); + p = add_epsg_def (filter, first, last, 4283, "epsg", 4283, + "GDA94"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"GDA94\",DATUM[\"Geocentric_Datum_of_Australia_1"); + add_srs_wkt (p, 1, + "994\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"6283\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4283\"]]"); + p = add_epsg_def (filter, first, last, 4284, "epsg", 4284, + "Pulkovo 1942"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +towgs84=23.92,-141.27,-80.9,"); + add_proj4text (p, 1, + "-0,0.35,0.82,-0.12 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 2, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4284\"]]"); + p = add_epsg_def (filter, first, last, 4285, "epsg", 4285, + "Qatar 1974"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-128.16,-282.42,21.93"); + add_proj4text (p, 1, + ",0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Qatar 1974\",DATUM[\"Qatar_1974\",SPHEROID[\"In"); + add_srs_wkt (p, 1, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 2, + "\"]],TOWGS84[-128.16,-282.42,21.93,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6285\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4285\"]]"); + p = add_epsg_def (filter, first, last, 4286, "epsg", 4286, + "Qatar 1948"); + add_proj4text (p, 0, + "+proj=longlat +ellps=helmert +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Qatar 1948\",DATUM[\"Qatar_1948\",SPHEROID[\"He"); + add_srs_wkt (p, 1, + "lmert 1906\",6378200,298.3,AUTHORITY[\"EPSG\",\"7020\"]]"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"6286\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 4, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"4286\"]]"); + p = add_epsg_def (filter, first, last, 4287, "epsg", 4287, + "Qornoq"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=164,138,-189,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Qornoq\",DATUM[\"Qornoq\",SPHEROID[\"Internatio"); + add_srs_wkt (p, 1, + "nal 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOW"); + add_srs_wkt (p, 2, + "GS84[164,138,-189,0,0,0,0],AUTHORITY[\"EPSG\",\"6287\"]]"); + add_srs_wkt (p, 3, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 4, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 5, + "08\"]],AUTHORITY[\"EPSG\",\"4287\"]]"); + p = add_epsg_def (filter, first, last, 4288, "epsg", 4288, + "Loma Quintana"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Loma Quintana\",DATUM[\"Loma_Quintana\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 2, + "\"7022\"]],AUTHORITY[\"EPSG\",\"6288\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 3, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 4, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"4288\"]]"); + p = add_epsg_def (filter, first, last, 4289, "epsg", 4289, + "Amersfoort"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=565.417,50.3319,465"); + add_proj4text (p, 1, + ".552,-0.398957,0.343988,-1.8774,4.0725 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Amersfoort\",DATUM[\"Amersfoort\",SPHEROID[\"Be"); + add_srs_wkt (p, 1, + "ssel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7004\"]],TOWGS84[565.417,50.3319,465.552,-0.398957,0.343"); + add_srs_wkt (p, 3, + "988,-1.8774,4.0725],AUTHORITY[\"EPSG\",\"6289\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4289\"]]"); + p = add_epsg_def (filter, first, last, 4291, "epsg", 4291, + "SAD69"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +n"); + add_proj4text (p, 1, + "o_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"SAD69\",DATUM[\"South_American_Datum_1969\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"GRS 1967\",6378160,298.247167427,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7036\"]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"6291\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\"4291\"]]"); + p = add_epsg_def (filter, first, last, 4292, "epsg", 4292, + "Sapper Hill 1943"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-355,21,72,0,0,0,0 +n"); + add_proj4text (p, 1, + "o_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Sapper Hill 1943\",DATUM[\"Sapper_Hill_1943\",S"); + add_srs_wkt (p, 1, + "PHEROID[\"International 1924\",6378388,297,AUTHORITY[\"E"); + add_srs_wkt (p, 2, + "PSG\",\"7022\"]],TOWGS84[-355,21,72,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6292\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4292\"]]"); + p = add_epsg_def (filter, first, last, 4293, "epsg", 4293, + "Schwarzeck"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bess_nam +towgs84=616,97,-251,0,0,0"); + add_proj4text (p, 1, + ",0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Schwarzeck\",DATUM[\"Schwarzeck\",SPHEROID[\"Be"); + add_srs_wkt (p, 1, + "ssel Namibia (GLM)\",6377483.865280419,299.1528128,AUTHO"); + add_srs_wkt (p, 2, + "RITY[\"EPSG\",\"7046\"]],TOWGS84[616,97,-251,0,0,0,0],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6293\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "293\"]]"); + p = add_epsg_def (filter, first, last, 4294, "epsg", 4294, + "Segora"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Segora\",DATUM[\"Segora\",SPHEROID[\"Bessel 184"); + add_srs_wkt (p, 1, + "1\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]"); + add_srs_wkt (p, 2, + "],TOWGS84[-403,684,41,0,0,0,0],AUTHORITY[\"EPSG\",\"6294"); + add_srs_wkt (p, 3, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 4, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"9108\"]],AUTHORITY[\"EPSG\",\"4294\"]]"); + p = add_epsg_def (filter, first, last, 4295, "epsg", 4295, + "Serindung"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Serindung\",DATUM[\"Serindung\",SPHEROID[\"Bess"); + add_srs_wkt (p, 1, + "el 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 2, + "004\"]],AUTHORITY[\"EPSG\",\"6295\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 3, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 4, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"4295\"]]"); + p = add_epsg_def (filter, first, last, 4296, "epsg", 4296, + "Sudan"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Sudan\",DATUM[\"Sudan\",SPHEROID[\"Clarke 1880 "); + add_srs_wkt (p, 1, + "(IGN)\",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7011\"]],AUTHORITY[\"EPSG\",\"6296\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 3, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 4, + "74532925199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"4296\"]]"); + p = add_epsg_def (filter, first, last, 4297, "epsg", 4297, + "Tananarive"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Tananarive\",DATUM[\"Tananarive_1925\",SPHEROID"); + add_srs_wkt (p, 1, + "[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7022\"]],TOWGS84[-189,-242,-91,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6297\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4297\"]]"); + p = add_epsg_def (filter, first, last, 4298, "epsg", 4298, + "Timbalai 1948"); + add_proj4text (p, 0, + "+proj=longlat +ellps=evrstSS +towgs84=-679,669,-48,0,0,0"); + add_proj4text (p, 1, + ",0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Timbalai 1948\",DATUM[\"Timbalai_1948\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"Everest 1830 (1967 Definition)\",6377298.556,300.801"); + add_srs_wkt (p, 2, + "7,AUTHORITY[\"EPSG\",\"7016\"]],TOWGS84[-679,669,-48,0,0"); + add_srs_wkt (p, 3, + ",0,0],AUTHORITY[\"EPSG\",\"6298\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4298\"]]"); + p = add_epsg_def (filter, first, last, 4299, "epsg", 4299, + "TM65"); + add_proj4text (p, 0, + "+proj=longlat +datum=ire65 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"TM65\",DATUM[\"TM65\",SPHEROID[\"Airy Modified "); + add_srs_wkt (p, 1, + "1849\",6377340.189,299.3249646,AUTHORITY[\"EPSG\",\"7002"); + add_srs_wkt (p, 2, + "\"]],TOWGS84[482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.1"); + add_srs_wkt (p, 3, + "5],AUTHORITY[\"EPSG\",\"6299\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4299\"]]"); + p = add_epsg_def (filter, first, last, 4300, "epsg", 4300, + "TM75"); + add_proj4text (p, 0, + "+proj=longlat +ellps=mod_airy +towgs84=482.5,-130.6,564."); + add_proj4text (p, 1, + "6,-1.042,-0.214,-0.631,8.15 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"TM75\",DATUM[\"Geodetic_Datum_of_1965\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"Airy Modified 1849\",6377340.189,299.3249646,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7002\"]],TOWGS84[482.5,-130.6,564.6,-1.042"); + add_srs_wkt (p, 3, + ",-0.214,-0.631,8.15],AUTHORITY[\"EPSG\",\"6300\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4300\"]]"); + p = add_epsg_def (filter, first, last, 4301, "epsg", 4301, + "Tokyo"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=-146.414,507.337,68"); + add_proj4text (p, 1, + "0.507,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\""); + add_srs_wkt (p, 1, + ",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],T"); + add_srs_wkt (p, 2, + "OWGS84[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]]"); + p = add_epsg_def (filter, first, last, 4302, "epsg", 4302, + "Trinidad 1903"); + add_proj4text (p, 0, + "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 "); + add_proj4text (p, 1, + "+towgs84=-61.702,284.488,472.052,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Trinidad 1903\",DATUM[\"Trinidad_1903\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"Clarke 1858\",6378293.645208759,294.2606763692569,AU"); + add_srs_wkt (p, 2, + "THORITY[\"EPSG\",\"7007\"]],TOWGS84[-61.702,284.488,472."); + add_srs_wkt (p, 3, + "052,0,0,0,0],AUTHORITY[\"EPSG\",\"6302\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4302\"]]"); + p = add_epsg_def (filter, first, last, 4303, "epsg", 4303, + "TC(1948)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=helmert +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"TC(1948)\",DATUM[\"Trucial_Coast_1948\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"Helmert 1906\",6378200,298.3,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "20\"]],AUTHORITY[\"EPSG\",\"6303\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 3, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 4, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 5, + "SG\",\"4303\"]]"); + p = add_epsg_def (filter, first, last, 4304, "epsg", 4304, + "Voirol 1875"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,"); + add_proj4text (p, 1, + "227,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Voirol 1875\",DATUM[\"Voirol_1875\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Clarke 1880 (IGN)\",6378249.2,293.4660212936265,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7011\"]],TOWGS84[-73,-247,227,0,0,0,0],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6304\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"430"); + add_srs_wkt (p, 6, + "4\"]]"); + p = add_epsg_def (filter, first, last, 4306, "epsg", 4306, + "Bern 1938"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Bern 1938\",DATUM[\"Bern_1938\",SPHEROID[\"Bess"); + add_srs_wkt (p, 1, + "el 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 2, + "004\"]],AUTHORITY[\"EPSG\",\"6306\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 3, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 4, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"4306\"]]"); + p = add_epsg_def (filter, first, last, 4307, "epsg", 4307, + "Nord Sahara 1959"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-209.362,-87.8162,4"); + add_proj4text (p, 1, + "04.62,0.0046,3.4784,0.5805,-1.4547 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Nord Sahara 1959\",DATUM[\"Nord_Sahara_1959\",S"); + add_srs_wkt (p, 1, + "PHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7012\"]],TOWGS84[-209.362,-87.8162,404.62"); + add_srs_wkt (p, 3, + ",0.0046,3.4784,0.5805,-1.4547],AUTHORITY[\"EPSG\",\"6307"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4307\"]]"); + p = add_epsg_def (filter, first, last, 4308, "epsg", 4308, + "RT38"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RT38\",DATUM[\"Stockholm_1938\",SPHEROID[\"Bess"); + add_srs_wkt (p, 1, + "el 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 2, + "004\"]],AUTHORITY[\"EPSG\",\"6308\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 3, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 4, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"4308\"]]"); + p = add_epsg_def (filter, first, last, 4309, "epsg", 4309, + "Yacare"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-155,171,37,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Yacare\",DATUM[\"Yacare\",SPHEROID[\"Internatio"); + add_srs_wkt (p, 1, + "nal 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOW"); + add_srs_wkt (p, 2, + "GS84[-155,171,37,0,0,0,0],AUTHORITY[\"EPSG\",\"6309\"]],"); + add_srs_wkt (p, 3, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 4, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 5, + "2\"]],AUTHORITY[\"EPSG\",\"4309\"]]"); + p = add_epsg_def (filter, first, last, 4310, "epsg", 4310, + "Yoff"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Yoff\",DATUM[\"Yoff\",SPHEROID[\"Clarke 1880 (I"); + add_srs_wkt (p, 1, + "GN)\",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 2, + "011\"]],AUTHORITY[\"EPSG\",\"6310\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 3, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 4, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"4310\"]]"); + p = add_epsg_def (filter, first, last, 4311, "epsg", 4311, + "Zanderij"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-265,120,-358,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Zanderij\",DATUM[\"Zanderij\",SPHEROID[\"Intern"); + add_srs_wkt (p, 1, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 2, + ",TOWGS84[-265,120,-358,0,0,0,0],AUTHORITY[\"EPSG\",\"631"); + add_srs_wkt (p, 3, + "1\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4311\"]]"); + p = add_epsg_def (filter, first, last, 4312, "epsg", 4312, + "MGI"); + add_proj4text (p, 0, + "+proj=longlat +datum=hermannskogel +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"MGI\",DATUM[\"Militar_Geographische_Institute\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7004\"]],TOWGS84[577.326,90.129,463.919,5"); + add_srs_wkt (p, 3, + ".137,1.474,5.297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4312\"]]"); + p = add_epsg_def (filter, first, last, 4313, "epsg", 4313, + "Belge 1972"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-106.869,52.2978,-103"); + add_proj4text (p, 1, + ".724,0.3366,-0.457,1.8422,-1.2747 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Belge 1972\",DATUM[\"Reseau_National_Belge_1972"); + add_srs_wkt (p, 1, + "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); + add_srs_wkt (p, 2, + "[\"EPSG\",\"7022\"]],TOWGS84[-106.869,52.2978,-103.724,0"); + add_srs_wkt (p, 3, + ".3366,-0.457,1.8422,-1.2747],AUTHORITY[\"EPSG\",\"6313\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4313\"]]"); + p = add_epsg_def (filter, first, last, 4314, "epsg", 4314, + "DHDN"); + add_proj4text (p, 0, + "+proj=longlat +datum=potsdam +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY"); + add_srs_wkt (p, 2, + "[\"EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.04"); + add_srs_wkt (p, 3, + "5,-2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4314\"]]"); + p = add_epsg_def (filter, first, last, 4315, "epsg", 4315, + "Conakry 1905"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-23,259,-"); + add_proj4text (p, 1, + "9,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Conakry 1905\",DATUM[\"Conakry_1905\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Clarke 1880 (IGN)\",6378249.2,293.4660212936265,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7011\"]],TOWGS84[-23,259,-9,0,0,0,0],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6315\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"431"); + add_srs_wkt (p, 6, + "5\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_21.c b/src/spatialite/src/srsinit/epsg_inlined_21.c new file mode 100644 index 0000000..67291cb --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_21.c @@ -0,0 +1,3106 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_21 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 4316, "epsg", 4316, + "Dealul Piscului 1930"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=103.25,-100.4,-307.19"); + add_proj4text (p, 1, + ",0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Dealul Piscului 1930\",DATUM[\"Dealul_Piscului_"); + add_srs_wkt (p, 1, + "1930\",SPHEROID[\"International 1924\",6378388,297,AUTHO"); + add_srs_wkt (p, 2, + "RITY[\"EPSG\",\"7022\"]],TOWGS84[103.25,-100.4,-307.19,0"); + add_srs_wkt (p, 3, + ",0,0,0],AUTHORITY[\"EPSG\",\"6316\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4316\"]]"); + p = add_epsg_def (filter, first, last, 4317, "epsg", 4317, + "Dealul Piscului 1970"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +towgs84=28,-121,-77,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Dealul Piscului 1970\",DATUM[\"Dealul_Piscului_"); + add_srs_wkt (p, 1, + "1970\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7024\"]],TOWGS84[28,-121,-77,0,0,0,0],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"6317\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"43"); + add_srs_wkt (p, 6, + "17\"]]"); + p = add_epsg_def (filter, first, last, 4318, "epsg", 4318, + "NGN"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NGN\",DATUM[\"National_Geodetic_Network\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 2, + "\"7030\"]],TOWGS84[-3.2,-5.7,2.8,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"6318\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4318\"]]"); + p = add_epsg_def (filter, first, last, 4319, "epsg", 4319, + "KUDAMS"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=-20.8,11.3,2.4,0,0,0"); + add_proj4text (p, 1, + ",0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"KUDAMS\",DATUM[\"Kuwait_Utility\",SPHEROID[\"GR"); + add_srs_wkt (p, 1, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 2, + "\"]],TOWGS84[-20.8,11.3,2.4,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"6319\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 4, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4319\"]]"); + p = add_epsg_def (filter, first, last, 4322, "epsg", 4322, + "WGS 72"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0."); + add_proj4text (p, 1, + "2263 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"WGS 72\",DATUM[\"WGS_1972\",SPHEROID[\"WGS 72\""); + add_srs_wkt (p, 1, + ",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TOWGS84[0,"); + add_srs_wkt (p, 2, + "0,4.5,0,0,0.554,0.2263],AUTHORITY[\"EPSG\",\"6322\"]],PR"); + add_srs_wkt (p, 3, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 4, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 5, + "]],AUTHORITY[\"EPSG\",\"4322\"]]"); + p = add_epsg_def (filter, first, last, 4324, "epsg", 4324, + "WGS 72BE"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.814,-0"); + add_proj4text (p, 1, + ".38 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"WGS 72BE\",DATUM[\"WGS_1972_Transit_Broadcast_E"); + add_srs_wkt (p, 1, + "phemeris\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORITY["); + add_srs_wkt (p, 2, + "\"EPSG\",\"7043\"]],TOWGS84[0,0,1.9,0,0,0.814,-0.38],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"6324\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"43"); + add_srs_wkt (p, 6, + "24\"]]"); + p = add_epsg_def (filter, first, last, 4399, "epsg", 4399, + "NAD27 / BLM 59N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=171 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 59N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",171],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); + add_srs_wkt (p, 9, + "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"4399\"]]"); + p = add_epsg_def (filter, first, last, 4400, "epsg", 4400, + "NAD27 / BLM 60N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=177 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 60N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); + add_srs_wkt (p, 9, + "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"4400\"]]"); + p = add_epsg_def (filter, first, last, 4401, "epsg", 4401, + "NAD27 / BLM 1N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-177 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 1N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"4401\"]]"); + p = add_epsg_def (filter, first, last, 4402, "epsg", 4402, + "NAD27 / BLM 2N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-171 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 2N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-171],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"4402\"]]"); + p = add_epsg_def (filter, first, last, 4403, "epsg", 4403, + "NAD27 / BLM 3N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-165 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 3N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-165],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"4403\"]]"); + p = add_epsg_def (filter, first, last, 4404, "epsg", 4404, + "NAD27 / BLM 4N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-159 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 4N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-159],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"4404\"]]"); + p = add_epsg_def (filter, first, last, 4405, "epsg", 4405, + "NAD27 / BLM 5N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-153 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 5N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-153],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"4405\"]]"); + p = add_epsg_def (filter, first, last, 4406, "epsg", 4406, + "NAD27 / BLM 6N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-147 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 6N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-147],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"4406\"]]"); + p = add_epsg_def (filter, first, last, 4407, "epsg", 4407, + "NAD27 / BLM 7N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-141 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 7N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-141],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"4407\"]]"); + p = add_epsg_def (filter, first, last, 4408, "epsg", 4408, + "NAD27 / BLM 8N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-135 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 8N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-135],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"4408\"]]"); + p = add_epsg_def (filter, first, last, 4409, "epsg", 4409, + "NAD27 / BLM 9N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-129 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 9N (ftUS)\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-129],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",1640416.67],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"4409\"]]"); + p = add_epsg_def (filter, first, last, 4410, "epsg", 4410, + "NAD27 / BLM 10N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-123 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 10N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-123],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",1640416.67],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"4410\"]]"); + p = add_epsg_def (filter, first, last, 4411, "epsg", 4411, + "NAD27 / BLM 11N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 11N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",1640416.67],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"4411\"]]"); + p = add_epsg_def (filter, first, last, 4412, "epsg", 4412, + "NAD27 / BLM 12N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 12N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",1640416.67],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"4412\"]]"); + p = add_epsg_def (filter, first, last, 4413, "epsg", 4413, + "NAD27 / BLM 13N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-105 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 13N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",1640416.67],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"4413\"]]"); + p = add_epsg_def (filter, first, last, 4414, "epsg", 4414, + "NAD83(HARN) / Guam Map Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=13.5 +lon_0=144.75 +k=1 +x_0=100000 +"); + add_proj4text (p, 1, + "y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Guam Map Grid\",GEOGCS[\"NAD83(HA"); + add_srs_wkt (p, 1, + "RN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",13.5],PARAMETER[\"central_meridian\",144.75],PARAME"); + add_srs_wkt (p, 9, + "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",1000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",200000],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"4414\"]]"); + p = add_epsg_def (filter, first, last, 4415, "epsg", 4415, + "Katanga 1955 / Katanga Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-6.5 +lat_2=-11.5 +lat_0=-9 +lon_0=26 +"); + add_proj4text (p, 1, + "x_0=500000 +y_0=500000 +ellps=clrk66 +towgs84=-103.746,-"); + add_proj4text (p, 2, + "9.614,-255.95,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Katanga 1955 / Katanga Lambert\",GEOGCS[\"Katan"); + add_srs_wkt (p, 1, + "ga 1955\",DATUM[\"Katanga_1955\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4695\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_1\",-6.5],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",-11.5],PARAMETER[\"latitude_of_origin\",-9],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",26],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 11, + "00000],PARAMETER[\"false_northing\",500000],UNIT[\"metre"); + add_srs_wkt (p, 12, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 13, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4415\"]]"); + p = add_epsg_def (filter, first, last, 4417, "epsg", 4417, + "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 7"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",21],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",75"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"4417\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 4418, "epsg", 4418, + "NAD27 / BLM 18N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-75 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 18N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); + add_srs_wkt (p, 9, + "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"4418\"]]"); + p = add_epsg_def (filter, first, last, 4419, "epsg", 4419, + "NAD27 / BLM 19N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-69 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 19N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); + add_srs_wkt (p, 9, + "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"4419\"]]"); + p = add_epsg_def (filter, first, last, 4420, "epsg", 4420, + "NAD83 / BLM 60N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=177 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 60N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",177],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 11, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4420\"]]"); + p = add_epsg_def (filter, first, last, 4421, "epsg", 4421, + "NAD83 / BLM 1N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-177 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 1N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-177],PARAMETER[\"scale_factor\",0.9996],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 11, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"4421\"]]"); + p = add_epsg_def (filter, first, last, 4422, "epsg", 4422, + "NAD83 / BLM 2N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-171 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 2N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-171],PARAMETER[\"scale_factor\",0.9996],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 11, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"4422\"]]"); + p = add_epsg_def (filter, first, last, 4423, "epsg", 4423, + "NAD83 / BLM 3N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-165 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 3N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-165],PARAMETER[\"scale_factor\",0.9996],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 11, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"4423\"]]"); + p = add_epsg_def (filter, first, last, 4424, "epsg", 4424, + "NAD83 / BLM 4N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-159 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 4N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-159],PARAMETER[\"scale_factor\",0.9996],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 11, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"4424\"]]"); + p = add_epsg_def (filter, first, last, 4425, "epsg", 4425, + "NAD83 / BLM 5N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-153 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 5N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-153],PARAMETER[\"scale_factor\",0.9996],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 11, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"4425\"]]"); + p = add_epsg_def (filter, first, last, 4426, "epsg", 4426, + "NAD83 / BLM 6N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-147 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 6N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-147],PARAMETER[\"scale_factor\",0.9996],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 11, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"4426\"]]"); + p = add_epsg_def (filter, first, last, 4427, "epsg", 4427, + "NAD83 / BLM 7N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-141 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 7N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-141],PARAMETER[\"scale_factor\",0.9996],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 11, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"4427\"]]"); + p = add_epsg_def (filter, first, last, 4428, "epsg", 4428, + "NAD83 / BLM 8N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-135 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 8N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-135],PARAMETER[\"scale_factor\",0.9996],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 11, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"4428\"]]"); + p = add_epsg_def (filter, first, last, 4429, "epsg", 4429, + "NAD83 / BLM 9N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-129 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 9N (ftUS)\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-129],PARAMETER[\"scale_factor\",0.9996],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 11, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"4429\"]]"); + p = add_epsg_def (filter, first, last, 4430, "epsg", 4430, + "NAD83 / BLM 10N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-123 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 10N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",-123],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); + add_srs_wkt (p, 11, + "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4430\"]]"); + p = add_epsg_def (filter, first, last, 4431, "epsg", 4431, + "NAD83 / BLM 11N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-117 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 11N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",-117],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); + add_srs_wkt (p, 11, + "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4431\"]]"); + p = add_epsg_def (filter, first, last, 4432, "epsg", 4432, + "NAD83 / BLM 12N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-111 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 12N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",-111],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); + add_srs_wkt (p, 11, + "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4432\"]]"); + p = add_epsg_def (filter, first, last, 4433, "epsg", 4433, + "NAD83 / BLM 13N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-105 +k=0.9996 +x_0=500000.0"); + add_proj4text (p, 1, + "01016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 13N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",-105],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); + add_srs_wkt (p, 11, + "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4433\"]]"); + p = add_epsg_def (filter, first, last, 4434, "epsg", 4434, + "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 8"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",24],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",85"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"4434\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 4437, "epsg", 4437, + "NAD83(NSRS2007) / Puerto Rico and Virgin Is."); + add_proj4text (p, 0, + "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +"); + add_proj4text (p, 2, + "x_0=200000 +y_0=200000 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 3, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Puerto Rico and Virgin Is.\","); + add_srs_wkt (p, 1, + "GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatia"); + add_srs_wkt (p, 2, + "l_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,"); + add_srs_wkt (p, 3, + "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Coni"); + add_srs_wkt (p, 8, + "c_2SP\"],PARAMETER[\"standard_parallel_1\",18.4333333333"); + add_srs_wkt (p, 9, + "3333],PARAMETER[\"standard_parallel_2\",18.0333333333333"); + add_srs_wkt (p, 10, + "3],PARAMETER[\"latitude_of_origin\",17.83333333333333],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"central_meridian\",-66.43333333333334],PARAME"); + add_srs_wkt (p, 12, + "TER[\"false_easting\",200000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 13, + "\",200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 14, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 15, + "\"4437\"]]"); + p = add_epsg_def (filter, first, last, 4438, "epsg", 4438, + "NAD83 / BLM 18N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-75 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 18N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",-75],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 11, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4438\"]]"); + p = add_epsg_def (filter, first, last, 4439, "epsg", 4439, + "NAD83 / BLM 19N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-69 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 19N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",-69],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 11, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"4439\"]]"); + p = add_epsg_def (filter, first, last, 4455, "epsg", 4455, + "NAD27 / Pennsylvania South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=609601.2"); + add_proj4text (p, 2, + "192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Pennsylvania South\",GEOGCS[\"NAD27\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); + add_srs_wkt (p, 2, + "6\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",40.96666666666667]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",39.93333333333333],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"latitude_of_origin\",39.33333333333334],PARAME"); + add_srs_wkt (p, 10, + "TER[\"central_meridian\",-77.75],PARAMETER[\"false_easti"); + add_srs_wkt (p, 11, + "ng\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US "); + add_srs_wkt (p, 12, + "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 13, + "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 14, + "SG\",\"4455\"]]"); + p = add_epsg_def (filter, first, last, 4456, "epsg", 4456, + "NAD27 / New York Long Island"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=40.5 +lon_0=-74 +x_0=609601.2192024384 +y_0=3"); + add_proj4text (p, 2, + "0480.06096012192 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / New York Long Island\",GEOGCS[\"NAD27\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1"); + add_srs_wkt (p, 2, + "866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 7, + "SP\"],PARAMETER[\"standard_parallel_1\",41.0333333333333"); + add_srs_wkt (p, 8, + "3],PARAMETER[\"standard_parallel_2\",40.66666666666666],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",40.5],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-74],PARAMETER[\"false_easting\",2000000],"); + add_srs_wkt (p, 11, + "PARAMETER[\"false_northing\",100000],UNIT[\"US survey fo"); + add_srs_wkt (p, 12, + "ot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AX"); + add_srs_wkt (p, 13, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"44"); + add_srs_wkt (p, 14, + "56\"]]"); + p = add_epsg_def (filter, first, last, 4457, "epsg", 4457, + "NAD83 / South Dakota North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666"); + add_proj4text (p, 1, + "666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_"); + add_proj4text (p, 2, + "0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / South Dakota North (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",45.68333333333333],PARAMETER[\"standard_parallel_2\",44"); + add_srs_wkt (p, 9, + ".41666666666666],PARAMETER[\"latitude_of_origin\",43.833"); + add_srs_wkt (p, 10, + "33333333334],PARAMETER[\"central_meridian\",-100],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",1968500],PARAMETER[\"false_northin"); + add_srs_wkt (p, 12, + "g\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHOR"); + add_srs_wkt (p, 13, + "ITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 14, + "H],AUTHORITY[\"EPSG\",\"4457\"]]"); + p = add_epsg_def (filter, first, last, 4462, "epsg", 4462, + "WGS 84 / Australian Centre for Remote Sensing Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-18 +lat_2=-36 +lat_0=-27 +lon_0=132 +x"); + add_proj4text (p, 1, + "_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / Australian Centre for Remote Sensing L"); + add_srs_wkt (p, 1, + "ambert\",GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4326\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"standard_parallel_1\",-18],PARAMETER[\"sta"); + add_srs_wkt (p, 8, + "ndard_parallel_2\",-36],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 9, + ",-27],PARAMETER[\"central_meridian\",132],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"446"); + add_srs_wkt (p, 13, + "2\"]]"); + p = add_epsg_def (filter, first, last, 4463, "epsg", 4463, + "RGSPM06"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RGSPM06\",DATUM[\"Reseau_Geodesique_de_Saint_Pi"); + add_srs_wkt (p, 1, + "erre_et_Miquelon_2006\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 2, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 3, + "0,0,0,0],AUTHORITY[\"EPSG\",\"1038\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4463\"]]"); + p = add_epsg_def (filter, first, last, 4467, "epsg", 4467, + "RGSPM06 / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGSPM06 / UTM zone 21N\",GEOGCS[\"RGSPM06\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Reseau_Geodesique_de_Saint_Pierre_et_Miquelon_2006\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"1038\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4463\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",0],PARAMETER[\"central_meridian\",-57],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",50"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"4467\"]]"); + p = add_epsg_def (filter, first, last, 4470, "epsg", 4470, + "RGM04"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RGM04\",DATUM[\"Reseau_Geodesique_de_Mayotte_20"); + add_srs_wkt (p, 1, + "04\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"1036\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4470\"]]"); + p = add_epsg_def (filter, first, last, 4471, "epsg", 4471, + "RGM04 / UTM zone 38S"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGM04 / UTM zone 38S\",GEOGCS[\"RGM04\",DATUM[\""); + add_srs_wkt (p, 1, + "Reseau_Geodesique_de_Mayotte_2004\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1036\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4470\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",45],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"4471\"]]"); + p = add_epsg_def (filter, first, last, 4474, "epsg", 4474, + "Cadastre 1997 / UTM zone 38S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +south +ellps=intl +towgs84=-382,-59,"); + add_proj4text (p, 1, + "-262,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cadastre 1997 / UTM zone 38S (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Combani 1950\",DATUM[\"Combani_1950\",SPHEROID[\"I"); + add_srs_wkt (p, 2, + "nternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "2\"]],TOWGS84[-382,-59,-262,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6632\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4632\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"central_meridian\",45],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9996],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"4474\"]]"); + p = add_epsg_def (filter, first, last, 4475, "epsg", 4475, + "Cadastre 1997"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-381.788,-57.501,-256"); + add_proj4text (p, 1, + ".673,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Cadastre 1997\",DATUM[\"Cadastre_1997\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 2, + "\"7022\"]],TOWGS84[-381.788,-57.501,-256.673,0,0,0,0],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1037\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "475\"]]"); + p = add_epsg_def (filter, first, last, 4483, "epsg", 4483, + "Mexico ITRF92"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Mexico ITRF92\",DATUM[\"Mexico_ITRF92\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 2, + "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1"); + add_srs_wkt (p, 3, + "042\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4483\"]]"); + p = add_epsg_def (filter, first, last, 4484, "epsg", 4484, + "Mexico ITRF92 / UTM zone 11N"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mexico ITRF92 / UTM zone 11N\",GEOGCS[\"Mexico "); + add_srs_wkt (p, 1, + "ITRF92\",DATUM[\"Mexico_ITRF92\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1042\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4483\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-117],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"4484\"]]"); + p = add_epsg_def (filter, first, last, 4485, "epsg", 4485, + "Mexico ITRF92 / UTM zone 12N"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mexico ITRF92 / UTM zone 12N\",GEOGCS[\"Mexico "); + add_srs_wkt (p, 1, + "ITRF92\",DATUM[\"Mexico_ITRF92\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1042\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4483\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-111],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"4485\"]]"); + p = add_epsg_def (filter, first, last, 4486, "epsg", 4486, + "Mexico ITRF92 / UTM zone 13N"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mexico ITRF92 / UTM zone 13N\",GEOGCS[\"Mexico "); + add_srs_wkt (p, 1, + "ITRF92\",DATUM[\"Mexico_ITRF92\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1042\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4483\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-105],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"4486\"]]"); + p = add_epsg_def (filter, first, last, 4487, "epsg", 4487, + "Mexico ITRF92 / UTM zone 14N"); + add_proj4text (p, 0, + "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mexico ITRF92 / UTM zone 14N\",GEOGCS[\"Mexico "); + add_srs_wkt (p, 1, + "ITRF92\",DATUM[\"Mexico_ITRF92\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1042\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4483\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-99],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"4487\"]]"); + p = add_epsg_def (filter, first, last, 4488, "epsg", 4488, + "Mexico ITRF92 / UTM zone 15N"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mexico ITRF92 / UTM zone 15N\",GEOGCS[\"Mexico "); + add_srs_wkt (p, 1, + "ITRF92\",DATUM[\"Mexico_ITRF92\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1042\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4483\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-93],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"4488\"]]"); + p = add_epsg_def (filter, first, last, 4489, "epsg", 4489, + "Mexico ITRF92 / UTM zone 16N"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mexico ITRF92 / UTM zone 16N\",GEOGCS[\"Mexico "); + add_srs_wkt (p, 1, + "ITRF92\",DATUM[\"Mexico_ITRF92\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1042\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4483\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-87],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"4489\"]]"); + p = add_epsg_def (filter, first, last, 4490, "epsg", 4490, + "China Geodetic Coordinate System 2000"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"China Geodetic Coordinate System 2000\",DATUM[\""); + add_srs_wkt (p, 1, + "China_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043"); + add_srs_wkt (p, 3, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 4, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4490\"]]"); + p = add_epsg_def (filter, first, last, 4491, "epsg", 4491, + "CGCS2000 / Gauss-Kruger zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger zone 13\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",75],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",13500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"4491\"]]"); + p = add_epsg_def (filter, first, last, 4492, "epsg", 4492, + "CGCS2000 / Gauss-Kruger zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger zone 14\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",81],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",14500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"4492\"]]"); + p = add_epsg_def (filter, first, last, 4493, "epsg", 4493, + "CGCS2000 / Gauss-Kruger zone 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger zone 15\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",87],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",15500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"4493\"]]"); + p = add_epsg_def (filter, first, last, 4494, "epsg", 4494, + "CGCS2000 / Gauss-Kruger zone 16"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger zone 16\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",93],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",16500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"4494\"]]"); + p = add_epsg_def (filter, first, last, 4495, "epsg", 4495, + "CGCS2000 / Gauss-Kruger zone 17"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger zone 17\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",99],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",17500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"4495\"]]"); + p = add_epsg_def (filter, first, last, 4496, "epsg", 4496, + "CGCS2000 / Gauss-Kruger zone 18"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger zone 18\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",105],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",18500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AUTHORITY[\"EPSG\",\"4496\"]]"); + p = add_epsg_def (filter, first, last, 4497, "epsg", 4497, + "CGCS2000 / Gauss-Kruger zone 19"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger zone 19\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",111],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",19500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AUTHORITY[\"EPSG\",\"4497\"]]"); + p = add_epsg_def (filter, first, last, 4498, "epsg", 4498, + "CGCS2000 / Gauss-Kruger zone 20"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger zone 20\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",117],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",20500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AUTHORITY[\"EPSG\",\"4498\"]]"); + p = add_epsg_def (filter, first, last, 4499, "epsg", 4499, + "CGCS2000 / Gauss-Kruger zone 21"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger zone 21\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",123],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",21500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AUTHORITY[\"EPSG\",\"4499\"]]"); + p = add_epsg_def (filter, first, last, 4500, "epsg", 4500, + "CGCS2000 / Gauss-Kruger zone 22"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger zone 22\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",129],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",22500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AUTHORITY[\"EPSG\",\"4500\"]]"); + p = add_epsg_def (filter, first, last, 4501, "epsg", 4501, + "CGCS2000 / Gauss-Kruger zone 23"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger zone 23\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",135],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",23500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AUTHORITY[\"EPSG\",\"4501\"]]"); + p = add_epsg_def (filter, first, last, 4502, "epsg", 4502, + "CGCS2000 / Gauss-Kruger CM 75E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger CM 75E\",GEOGCS[\"China"); + add_srs_wkt (p, 1, + " Geodetic Coordinate System 2000\",DATUM[\"China_2000\","); + add_srs_wkt (p, 2, + "SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",75],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"4502\"]]"); + p = add_epsg_def (filter, first, last, 4503, "epsg", 4503, + "CGCS2000 / Gauss-Kruger CM 81E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger CM 81E\",GEOGCS[\"China"); + add_srs_wkt (p, 1, + " Geodetic Coordinate System 2000\",DATUM[\"China_2000\","); + add_srs_wkt (p, 2, + "SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",81],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"4503\"]]"); + p = add_epsg_def (filter, first, last, 4504, "epsg", 4504, + "CGCS2000 / Gauss-Kruger CM 87E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger CM 87E\",GEOGCS[\"China"); + add_srs_wkt (p, 1, + " Geodetic Coordinate System 2000\",DATUM[\"China_2000\","); + add_srs_wkt (p, 2, + "SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",87],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"4504\"]]"); + p = add_epsg_def (filter, first, last, 4505, "epsg", 4505, + "CGCS2000 / Gauss-Kruger CM 93E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger CM 93E\",GEOGCS[\"China"); + add_srs_wkt (p, 1, + " Geodetic Coordinate System 2000\",DATUM[\"China_2000\","); + add_srs_wkt (p, 2, + "SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",93],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"4505\"]]"); + p = add_epsg_def (filter, first, last, 4506, "epsg", 4506, + "CGCS2000 / Gauss-Kruger CM 99E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger CM 99E\",GEOGCS[\"China"); + add_srs_wkt (p, 1, + " Geodetic Coordinate System 2000\",DATUM[\"China_2000\","); + add_srs_wkt (p, 2, + "SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",99],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"4506\"]]"); + p = add_epsg_def (filter, first, last, 4507, "epsg", 4507, + "CGCS2000 / Gauss-Kruger CM 105E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger CM 105E\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",105],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"4507\"]]"); + p = add_epsg_def (filter, first, last, 4508, "epsg", 4508, + "CGCS2000 / Gauss-Kruger CM 111E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger CM 111E\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",111],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"4508\"]]"); + p = add_epsg_def (filter, first, last, 4509, "epsg", 4509, + "CGCS2000 / Gauss-Kruger CM 117E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger CM 117E\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",117],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"4509\"]]"); + p = add_epsg_def (filter, first, last, 4510, "epsg", 4510, + "CGCS2000 / Gauss-Kruger CM 123E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger CM 123E\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",123],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"4510\"]]"); + p = add_epsg_def (filter, first, last, 4511, "epsg", 4511, + "CGCS2000 / Gauss-Kruger CM 129E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger CM 129E\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",129],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"4511\"]]"); + p = add_epsg_def (filter, first, last, 4512, "epsg", 4512, + "CGCS2000 / Gauss-Kruger CM 135E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / Gauss-Kruger CM 135E\",GEOGCS[\"Chin"); + add_srs_wkt (p, 1, + "a Geodetic Coordinate System 2000\",DATUM[\"China_2000\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",135],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"4512\"]]"); + p = add_epsg_def (filter, first, last, 4513, "epsg", 4513, + "CGCS2000 / 3-degree Gauss-Kruger zone 25"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 25\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",75],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",25500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4513\"]]"); + p = add_epsg_def (filter, first, last, 4514, "epsg", 4514, + "CGCS2000 / 3-degree Gauss-Kruger zone 26"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 26\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",78],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",26500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4514\"]]"); + p = add_epsg_def (filter, first, last, 4515, "epsg", 4515, + "CGCS2000 / 3-degree Gauss-Kruger zone 27"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 27\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",81],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",27500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4515\"]]"); + p = add_epsg_def (filter, first, last, 4516, "epsg", 4516, + "CGCS2000 / 3-degree Gauss-Kruger zone 28"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 28\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",84],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",28500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4516\"]]"); + p = add_epsg_def (filter, first, last, 4517, "epsg", 4517, + "CGCS2000 / 3-degree Gauss-Kruger zone 29"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 29\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",87],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",29500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4517\"]]"); + p = add_epsg_def (filter, first, last, 4518, "epsg", 4518, + "CGCS2000 / 3-degree Gauss-Kruger zone 30"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 30\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",90],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",30500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4518\"]]"); + p = add_epsg_def (filter, first, last, 4519, "epsg", 4519, + "CGCS2000 / 3-degree Gauss-Kruger zone 31"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 31\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",93],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",31500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4519\"]]"); + p = add_epsg_def (filter, first, last, 4520, "epsg", 4520, + "CGCS2000 / 3-degree Gauss-Kruger zone 32"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 32\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",96],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",32500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4520\"]]"); + p = add_epsg_def (filter, first, last, 4521, "epsg", 4521, + "CGCS2000 / 3-degree Gauss-Kruger zone 33"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 33\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",99],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",33500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4521\"]]"); + p = add_epsg_def (filter, first, last, 4522, "epsg", 4522, + "CGCS2000 / 3-degree Gauss-Kruger zone 34"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 34\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",102],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",34500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"4522\"]]"); + p = add_epsg_def (filter, first, last, 4523, "epsg", 4523, + "CGCS2000 / 3-degree Gauss-Kruger zone 35"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 35\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",105],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",35500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"4523\"]]"); + p = add_epsg_def (filter, first, last, 4524, "epsg", 4524, + "CGCS2000 / 3-degree Gauss-Kruger zone 36"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 36\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",108],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",36500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"4524\"]]"); + p = add_epsg_def (filter, first, last, 4525, "epsg", 4525, + "CGCS2000 / 3-degree Gauss-Kruger zone 37"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 37\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",111],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",37500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"4525\"]]"); + p = add_epsg_def (filter, first, last, 4526, "epsg", 4526, + "CGCS2000 / 3-degree Gauss-Kruger zone 38"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 38\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",114],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",38500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"4526\"]]"); + p = add_epsg_def (filter, first, last, 4527, "epsg", 4527, + "CGCS2000 / 3-degree Gauss-Kruger zone 39"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 39\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",117],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",39500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"4527\"]]"); + p = add_epsg_def (filter, first, last, 4528, "epsg", 4528, + "CGCS2000 / 3-degree Gauss-Kruger zone 40"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 40\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",120],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",40500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"4528\"]]"); + p = add_epsg_def (filter, first, last, 4529, "epsg", 4529, + "CGCS2000 / 3-degree Gauss-Kruger zone 41"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 41\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",123],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",41500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"4529\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_22.c b/src/spatialite/src/srsinit/epsg_inlined_22.c new file mode 100644 index 0000000..d6c4fac --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_22.c @@ -0,0 +1,2526 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_22 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 4530, "epsg", 4530, + "CGCS2000 / 3-degree Gauss-Kruger zone 42"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 42\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",126],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",42500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"4530\"]]"); + p = add_epsg_def (filter, first, last, 4531, "epsg", 4531, + "CGCS2000 / 3-degree Gauss-Kruger zone 43"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 43\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",129],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",43500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"4531\"]]"); + p = add_epsg_def (filter, first, last, 4532, "epsg", 4532, + "CGCS2000 / 3-degree Gauss-Kruger zone 44"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 44\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",132],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",44500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"4532\"]]"); + p = add_epsg_def (filter, first, last, 4533, "epsg", 4533, + "CGCS2000 / 3-degree Gauss-Kruger zone 45"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger zone 45\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",135],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",45500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"4533\"]]"); + p = add_epsg_def (filter, first, last, 4534, "epsg", 4534, + "CGCS2000 / 3-degree Gauss-Kruger CM 75E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 75E\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); + add_srs_wkt (p, 2, + "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",75],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"4534\"]]"); + p = add_epsg_def (filter, first, last, 4535, "epsg", 4535, + "CGCS2000 / 3-degree Gauss-Kruger CM 78E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 78E\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); + add_srs_wkt (p, 2, + "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",78],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"4535\"]]"); + p = add_epsg_def (filter, first, last, 4536, "epsg", 4536, + "CGCS2000 / 3-degree Gauss-Kruger CM 81E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 81E\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); + add_srs_wkt (p, 2, + "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",81],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"4536\"]]"); + p = add_epsg_def (filter, first, last, 4537, "epsg", 4537, + "CGCS2000 / 3-degree Gauss-Kruger CM 84E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 84E\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); + add_srs_wkt (p, 2, + "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",84],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"4537\"]]"); + p = add_epsg_def (filter, first, last, 4538, "epsg", 4538, + "CGCS2000 / 3-degree Gauss-Kruger CM 87E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 87E\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); + add_srs_wkt (p, 2, + "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",87],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"4538\"]]"); + p = add_epsg_def (filter, first, last, 4539, "epsg", 4539, + "CGCS2000 / 3-degree Gauss-Kruger CM 90E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 90E\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); + add_srs_wkt (p, 2, + "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",90],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"4539\"]]"); + p = add_epsg_def (filter, first, last, 4540, "epsg", 4540, + "CGCS2000 / 3-degree Gauss-Kruger CM 93E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 93E\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); + add_srs_wkt (p, 2, + "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",93],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"4540\"]]"); + p = add_epsg_def (filter, first, last, 4541, "epsg", 4541, + "CGCS2000 / 3-degree Gauss-Kruger CM 96E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 96E\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); + add_srs_wkt (p, 2, + "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",96],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"4541\"]]"); + p = add_epsg_def (filter, first, last, 4542, "epsg", 4542, + "CGCS2000 / 3-degree Gauss-Kruger CM 99E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 99E\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"China Geodetic Coordinate System 2000\",DATUM[\"Chin"); + add_srs_wkt (p, 2, + "a_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",99],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"4542\"]]"); + p = add_epsg_def (filter, first, last, 4543, "epsg", 4543, + "CGCS2000 / 3-degree Gauss-Kruger CM 102E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 102E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",102],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4543\"]]"); + p = add_epsg_def (filter, first, last, 4544, "epsg", 4544, + "CGCS2000 / 3-degree Gauss-Kruger CM 105E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 105E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",105],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4544\"]]"); + p = add_epsg_def (filter, first, last, 4545, "epsg", 4545, + "CGCS2000 / 3-degree Gauss-Kruger CM 108E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 108E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",108],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4545\"]]"); + p = add_epsg_def (filter, first, last, 4546, "epsg", 4546, + "CGCS2000 / 3-degree Gauss-Kruger CM 111E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 111E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",111],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4546\"]]"); + p = add_epsg_def (filter, first, last, 4547, "epsg", 4547, + "CGCS2000 / 3-degree Gauss-Kruger CM 114E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 114E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",114],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4547\"]]"); + p = add_epsg_def (filter, first, last, 4548, "epsg", 4548, + "CGCS2000 / 3-degree Gauss-Kruger CM 117E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 117E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",117],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4548\"]]"); + p = add_epsg_def (filter, first, last, 4549, "epsg", 4549, + "CGCS2000 / 3-degree Gauss-Kruger CM 120E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 120E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",120],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4549\"]]"); + p = add_epsg_def (filter, first, last, 4550, "epsg", 4550, + "CGCS2000 / 3-degree Gauss-Kruger CM 123E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 123E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",123],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4550\"]]"); + p = add_epsg_def (filter, first, last, 4551, "epsg", 4551, + "CGCS2000 / 3-degree Gauss-Kruger CM 126E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 126E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",126],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4551\"]]"); + p = add_epsg_def (filter, first, last, 4552, "epsg", 4552, + "CGCS2000 / 3-degree Gauss-Kruger CM 129E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 129E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",129],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4552\"]]"); + p = add_epsg_def (filter, first, last, 4553, "epsg", 4553, + "CGCS2000 / 3-degree Gauss-Kruger CM 132E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 132E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",132],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4553\"]]"); + p = add_epsg_def (filter, first, last, 4554, "epsg", 4554, + "CGCS2000 / 3-degree Gauss-Kruger CM 135E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CGCS2000 / 3-degree Gauss-Kruger CM 135E\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"China Geodetic Coordinate System 2000\",DATUM[\"Chi"); + add_srs_wkt (p, 2, + "na_2000\",SPHEROID[\"CGCS2000\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1024\"]],AUTHORITY[\"EPSG\",\"1043\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4490\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",135],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"4554\"]]"); + p = add_epsg_def (filter, first, last, 4555, "epsg", 4555, + "New Beijing"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 2, + "4\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 3, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 4, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 5, + "SG\",\"4555\"]]"); + p = add_epsg_def (filter, first, last, 4558, "epsg", 4558, + "RRAF 1991"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RRAF 1991\",DATUM[\"Reseau_de_Reference_des_Ant"); + add_srs_wkt (p, 1, + "illes_Francaises_1991\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 2, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 3, + "0,0,0,0],AUTHORITY[\"EPSG\",\"1047\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4558\"]]"); + p = add_epsg_def (filter, first, last, 4559, "epsg", 4559, + "RRAF 1991 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RRAF 1991 / UTM zone 20N\",GEOGCS[\"RRAF 1991\""); + add_srs_wkt (p, 1, + ",DATUM[\"Reseau_de_Reference_des_Antilles_Francaises_199"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"1047\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4558\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",-63],PARAME"); + add_srs_wkt (p, 9, + "TER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); + add_srs_wkt (p, 12, + "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"4559\"]]"); + p = add_epsg_def (filter, first, last, 4568, "epsg", 4568, + "New Beijing / Gauss-Kruger zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger zone 13\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",75]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",13500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 10, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "4568\"]]"); + p = add_epsg_def (filter, first, last, 4569, "epsg", 4569, + "New Beijing / Gauss-Kruger zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger zone 14\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",81]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",14500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 10, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "4569\"]]"); + p = add_epsg_def (filter, first, last, 4570, "epsg", 4570, + "New Beijing / Gauss-Kruger zone 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger zone 15\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",87]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",15500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 10, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "4570\"]]"); + p = add_epsg_def (filter, first, last, 4571, "epsg", 4571, + "New Beijing / Gauss-Kruger zone 16"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger zone 16\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",93]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",16500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 10, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "4571\"]]"); + p = add_epsg_def (filter, first, last, 4572, "epsg", 4572, + "New Beijing / Gauss-Kruger zone 17"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger zone 17\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",99]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 9, + "\",17500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 10, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "4572\"]]"); + p = add_epsg_def (filter, first, last, 4573, "epsg", 4573, + "New Beijing / Gauss-Kruger zone 18"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger zone 18\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",105"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 9, + "g\",18500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 10, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"4573\"]]"); + p = add_epsg_def (filter, first, last, 4574, "epsg", 4574, + "New Beijing / Gauss-Kruger zone 19"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger zone 19\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",111"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 9, + "g\",19500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 10, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"4574\"]]"); + p = add_epsg_def (filter, first, last, 4575, "epsg", 4575, + "New Beijing / Gauss-Kruger zone 20"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger zone 20\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",117"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 9, + "g\",20500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 10, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"4575\"]]"); + p = add_epsg_def (filter, first, last, 4576, "epsg", 4576, + "New Beijing / Gauss-Kruger zone 21"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger zone 21\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",123"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 9, + "g\",21500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 10, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"4576\"]]"); + p = add_epsg_def (filter, first, last, 4577, "epsg", 4577, + "New Beijing / Gauss-Kruger zone 22"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger zone 22\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",129"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 9, + "g\",22500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 10, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"4577\"]]"); + p = add_epsg_def (filter, first, last, 4578, "epsg", 4578, + "New Beijing / Gauss-Kruger zone 23"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger zone 23\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",135"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 9, + "g\",23500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 10, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"4578\"]]"); + p = add_epsg_def (filter, first, last, 4579, "epsg", 4579, + "New Beijing / Gauss-Kruger CM 75E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger CM 75E\",GEOGCS[\"Ne"); + add_srs_wkt (p, 1, + "w Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky "); + add_srs_wkt (p, 2, + "1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4555"); + add_srs_wkt (p, 6, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 7, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",75],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"457"); + add_srs_wkt (p, 11, + "9\"]]"); + p = add_epsg_def (filter, first, last, 4580, "epsg", 4580, + "New Beijing / Gauss-Kruger CM 81E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger CM 81E\",GEOGCS[\"Ne"); + add_srs_wkt (p, 1, + "w Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky "); + add_srs_wkt (p, 2, + "1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4555"); + add_srs_wkt (p, 6, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 7, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",81],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"458"); + add_srs_wkt (p, 11, + "0\"]]"); + p = add_epsg_def (filter, first, last, 4581, "epsg", 4581, + "New Beijing / Gauss-Kruger CM 87E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger CM 87E\",GEOGCS[\"Ne"); + add_srs_wkt (p, 1, + "w Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky "); + add_srs_wkt (p, 2, + "1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4555"); + add_srs_wkt (p, 6, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 7, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",87],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"458"); + add_srs_wkt (p, 11, + "1\"]]"); + p = add_epsg_def (filter, first, last, 4582, "epsg", 4582, + "New Beijing / Gauss-Kruger CM 93E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger CM 93E\",GEOGCS[\"Ne"); + add_srs_wkt (p, 1, + "w Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky "); + add_srs_wkt (p, 2, + "1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4555"); + add_srs_wkt (p, 6, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 7, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",93],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"458"); + add_srs_wkt (p, 11, + "2\"]]"); + p = add_epsg_def (filter, first, last, 4583, "epsg", 4583, + "New Beijing / Gauss-Kruger CM 99E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger CM 99E\",GEOGCS[\"Ne"); + add_srs_wkt (p, 1, + "w Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky "); + add_srs_wkt (p, 2, + "1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4555"); + add_srs_wkt (p, 6, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 7, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",99],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 10, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"458"); + add_srs_wkt (p, 11, + "3\"]]"); + p = add_epsg_def (filter, first, last, 4584, "epsg", 4584, + "New Beijing / Gauss-Kruger CM 105E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger CM 105E\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",105"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 9, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 10, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "4584\"]]"); + p = add_epsg_def (filter, first, last, 4585, "epsg", 4585, + "New Beijing / Gauss-Kruger CM 111E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger CM 111E\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",111"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 9, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 10, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "4585\"]]"); + p = add_epsg_def (filter, first, last, 4586, "epsg", 4586, + "New Beijing / Gauss-Kruger CM 117E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger CM 117E\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",117"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 9, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 10, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "4586\"]]"); + p = add_epsg_def (filter, first, last, 4587, "epsg", 4587, + "New Beijing / Gauss-Kruger CM 123E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger CM 123E\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",123"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 9, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 10, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "4587\"]]"); + p = add_epsg_def (filter, first, last, 4588, "epsg", 4588, + "New Beijing / Gauss-Kruger CM 129E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger CM 129E\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",129"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 9, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 10, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "4588\"]]"); + p = add_epsg_def (filter, first, last, 4589, "epsg", 4589, + "New Beijing / Gauss-Kruger CM 135E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / Gauss-Kruger CM 135E\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ew Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Krassowsky"); + add_srs_wkt (p, 2, + " 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"455"); + add_srs_wkt (p, 6, + "5\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",0],PARAMETER[\"central_meridian\",135"); + add_srs_wkt (p, 8, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 9, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 10, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "4589\"]]"); + p = add_epsg_def (filter, first, last, 4600, "epsg", 4600, + "Anguilla 1957"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Anguilla 1957\",DATUM[\"Anguilla_1957\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7012\"]],AUTHORITY[\"EPSG\",\"6600\"]],PRIMEM[\""); + add_srs_wkt (p, 3, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 4, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"4600\"]]"); + p = add_epsg_def (filter, first, last, 4601, "epsg", 4601, + "Antigua 1943"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-255,-15,71,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Antigua 1943\",DATUM[\"Antigua_1943\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); + add_srs_wkt (p, 2, + "SG\",\"7012\"]],TOWGS84[-255,-15,71,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6601\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4601\"]]"); + p = add_epsg_def (filter, first, last, 4602, "epsg", 4602, + "Dominica 1945"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=725,685,536,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Dominica 1945\",DATUM[\"Dominica_1945\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7012\"]],TOWGS84[725,685,536,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"6602\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4602\"]]"); + p = add_epsg_def (filter, first, last, 4603, "epsg", 4603, + "Grenada 1953"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=72,213.7,93,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Grenada 1953\",DATUM[\"Grenada_1953\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); + add_srs_wkt (p, 2, + "SG\",\"7012\"]],TOWGS84[72,213.7,93,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6603\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4603\"]]"); + p = add_epsg_def (filter, first, last, 4604, "epsg", 4604, + "Montserrat 1958"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=174,359,365,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Montserrat 1958\",DATUM[\"Montserrat_1958\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7012\"]],TOWGS84[174,359,365,0,0,0,0],AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"6604\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4604"); + add_srs_wkt (p, 6, + "\"]]"); + p = add_epsg_def (filter, first, last, 4605, "epsg", 4605, + "St. Kitts 1955"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=9,183,236,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"St. Kitts 1955\",DATUM[\"St_Kitts_1955\",SPHERO"); + add_srs_wkt (p, 1, + "ID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7012\"]],TOWGS84[9,183,236,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6605\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4605\"]]"); + p = add_epsg_def (filter, first, last, 4606, "epsg", 4606, + "St. Lucia 1955"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-149,128,296,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"St. Lucia 1955\",DATUM[\"St_Lucia_1955\",SPHERO"); + add_srs_wkt (p, 1, + "ID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7012\"]],TOWGS84[-149,128,296,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"6606\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4606\"]]"); + p = add_epsg_def (filter, first, last, 4607, "epsg", 4607, + "St. Vincent 1945"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=195.671,332.517,274"); + add_proj4text (p, 1, + ".607,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"St. Vincent 1945\",DATUM[\"St_Vincent_1945\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7012\"]],TOWGS84[195.671,332.517,274.607,0"); + add_srs_wkt (p, 3, + ",0,0,0],AUTHORITY[\"EPSG\",\"6607\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4607\"]]"); + p = add_epsg_def (filter, first, last, 4608, "epsg", 4608, + "NAD27(76)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NAD27(76)\",DATUM[\"North_American_Datum_1927_1"); + add_srs_wkt (p, 1, + "976\",SPHEROID[\"Clarke 1866\",6378206.4,294.97869821390"); + add_srs_wkt (p, 2, + "06,AUTHORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"66"); + add_srs_wkt (p, 3, + "08\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4608\"]]"); + p = add_epsg_def (filter, first, last, 4609, "epsg", 4609, + "NAD27(CGQ77)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NAD27(CGQ77)\",DATUM[\"North_American_Datum_192"); + add_srs_wkt (p, 1, + "7_CGQ77\",SPHEROID[\"Clarke 1866\",6378206.4,294.9786982"); + add_srs_wkt (p, 2, + "139006,AUTHORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"6609\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 4, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4609\"]]"); + p = add_epsg_def (filter, first, last, 4610, "epsg", 4610, + "Xian 1980"); + add_proj4text (p, 0, + "+proj=longlat +a=6378140 +b=6356755.288157528 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Xian 1980\",DATUM[\"Xian_1980\",SPHEROID[\"IAG "); + add_srs_wkt (p, 1, + "1975\",6378140,298.257,AUTHORITY[\"EPSG\",\"7049\"]],AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"6610\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 4, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"46"); + add_srs_wkt (p, 5, + "10\"]]"); + p = add_epsg_def (filter, first, last, 4611, "epsg", 4611, + "Hong Kong 1980"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-162.619,-276.959,-16"); + add_proj4text (p, 1, + "1.764,0.067753,-2.24365,-1.15883,-1.09425 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Hong Kong 1980\",DATUM[\"Hong_Kong_1980\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7022\"]],TOWGS84[-162.619,-276.959,-161.764,0.067753,"); + add_srs_wkt (p, 3, + "-2.24365,-1.15883,-1.09425],AUTHORITY[\"EPSG\",\"6611\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4611\"]]"); + p = add_epsg_def (filter, first, last, 4612, "epsg", 4612, + "JGD2000"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"JGD2000\",DATUM[\"Japanese_Geodetic_Datum_2000\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6612\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4612\"]]"); + p = add_epsg_def (filter, first, last, 4613, "epsg", 4613, + "Segara"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Segara\",DATUM[\"Gunung_Segara\",SPHEROID[\"Bes"); + add_srs_wkt (p, 1, + "sel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7004\"]],TOWGS84[-403,684,41,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6613\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4613\"]]"); + p = add_epsg_def (filter, first, last, 4614, "epsg", 4614, + "QND95"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-119.425,-303.659,-11"); + add_proj4text (p, 1, + ".0006,1.1643,0.174458,1.09626,3.65706 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"QND95\",DATUM[\"Qatar_National_Datum_1995\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7022\"]],TOWGS84[-119.425,-303.659,-11.0006,1.1643"); + add_srs_wkt (p, 3, + ",0.174458,1.09626,3.65706],AUTHORITY[\"EPSG\",\"6614\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"4614\"]]"); + p = add_epsg_def (filter, first, last, 4615, "epsg", 4615, + "Porto Santo"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-499,-249,314,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Porto Santo\",DATUM[\"Porto_Santo_1936\",SPHERO"); + add_srs_wkt (p, 1, + "ID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7022\"]],TOWGS84[-499,-249,314,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6615\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4615\"]]"); + p = add_epsg_def (filter, first, last, 4616, "epsg", 4616, + "Selvagem Grande"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-289,-124,60,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Selvagem Grande\",DATUM[\"Selvagem_Grande\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7022\"]],TOWGS84[-289,-124,60,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6616\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4616\"]]"); + p = add_epsg_def (filter, first, last, 4617, "epsg", 4617, + "NAD83(CSRS)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Re"); + add_srs_wkt (p, 1, + "ference_System\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 2, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4617\"]]"); + p = add_epsg_def (filter, first, last, 4618, "epsg", 4618, + "SAD69"); + add_proj4text (p, 0, + "+proj=longlat +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"SAD69\",DATUM[\"South_American_Datum_1969\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"GRS 1967 Modified\",6378160,298.25,AUTHORITY[\"E"); + add_srs_wkt (p, 2, + "PSG\",\"7050\"]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6618\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4618\"]]"); + p = add_epsg_def (filter, first, last, 4619, "epsg", 4619, + "SWEREF99"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"SWEREF99\",DATUM[\"SWEREF99\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 1, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 2, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6619\"]],PR"); + add_srs_wkt (p, 3, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 4, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 5, + "]],AUTHORITY[\"EPSG\",\"4619\"]]"); + p = add_epsg_def (filter, first, last, 4620, "epsg", 4620, + "Point 58"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-106,-129,165,0,0,0"); + add_proj4text (p, 1, + ",0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Point 58\",DATUM[\"Point_58\",SPHEROID[\"Clarke"); + add_srs_wkt (p, 1, + " 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 2, + "012\"]],TOWGS84[-106,-129,165,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6620\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4620\"]]"); + p = add_epsg_def (filter, first, last, 4621, "epsg", 4621, + "Fort Marigot"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=137,248,-430,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Fort Marigot\",DATUM[\"Fort_Marigot\",SPHEROID["); + add_srs_wkt (p, 1, + "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7022\"]],TOWGS84[137,248,-430,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6621\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4621\"]]"); + p = add_epsg_def (filter, first, last, 4622, "epsg", 4622, + "Guadeloupe 1948"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-467,-16,-300,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Guadeloupe 1948\",DATUM[\"Guadeloupe_1948\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7022\"]],TOWGS84[-467,-16,-300,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6622\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4622\"]]"); + p = add_epsg_def (filter, first, last, 4623, "epsg", 4623, + "CSG67"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-186,230,110,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"CSG67\",DATUM[\"Centre_Spatial_Guyanais_1967\","); + add_srs_wkt (p, 1, + "SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7022\"]],TOWGS84[-186,230,110,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"6623\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4623\"]]"); + p = add_epsg_def (filter, first, last, 4624, "epsg", 4624, + "RGFG95"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RGFG95\",DATUM[\"Reseau_Geodesique_Francais_Guy"); + add_srs_wkt (p, 1, + "ane_1995\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6624\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"462"); + add_srs_wkt (p, 6, + "4\"]]"); + p = add_epsg_def (filter, first, last, 4625, "epsg", 4625, + "Martinique 1938"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=186,482,151,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Martinique 1938\",DATUM[\"Martinique_1938\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7022\"]],TOWGS84[186,482,151,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6625\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4625\"]]"); + p = add_epsg_def (filter, first, last, 4626, "epsg", 4626, + "Reunion 1947"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=94,-948,-1262,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Reunion 1947\",DATUM[\"Reunion_1947\",SPHEROID["); + add_srs_wkt (p, 1, + "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7022\"]],TOWGS84[94,-948,-1262,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6626\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4626\"]]"); + p = add_epsg_def (filter, first, last, 4627, "epsg", 4627, + "RGR92"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RGR92\",DATUM[\"Reseau_Geodesique_de_la_Reunion"); + add_srs_wkt (p, 1, + "_1992\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6627\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4627\""); + add_srs_wkt (p, 6, + "]]"); + p = add_epsg_def (filter, first, last, 4628, "epsg", 4628, + "Tahiti 52"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=162,117,154,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Tahiti 52\",DATUM[\"Tahiti_52\",SPHEROID[\"Inte"); + add_srs_wkt (p, 1, + "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 2, + "]],TOWGS84[162,117,154,0,0,0,0],AUTHORITY[\"EPSG\",\"662"); + add_srs_wkt (p, 3, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4628\"]]"); + p = add_epsg_def (filter, first, last, 4629, "epsg", 4629, + "Tahaa 54"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=72.438,345.918,79.486"); + add_proj4text (p, 1, + ",1.6045,0.8823,0.5565,1.3746 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Tahaa 54\",DATUM[\"Tahaa_54\",SPHEROID[\"Intern"); + add_srs_wkt (p, 1, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 2, + ",TOWGS84[72.438,345.918,79.486,1.6045,0.8823,0.5565,1.37"); + add_srs_wkt (p, 3, + "46],AUTHORITY[\"EPSG\",\"6629\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"4629\"]]"); + p = add_epsg_def (filter, first, last, 4630, "epsg", 4630, + "IGN72 Nuku Hiva"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=84,274,65,0,0,0,0 +no"); + add_proj4text (p, 1, + "_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"IGN72 Nuku Hiva\",DATUM[\"IGN72_Nuku_Hiva\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7022\"]],TOWGS84[84,274,65,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"6630\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4630\"]]"); + p = add_epsg_def (filter, first, last, 4631, "epsg", 4631, + "K0 1949"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"K0 1949\",DATUM[\"K0_1949\",SPHEROID[\"Internat"); + add_srs_wkt (p, 1, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 2, + "OWGS84[145,-187,103,0,0,0,0],AUTHORITY[\"EPSG\",\"6631\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4631\"]]"); + p = add_epsg_def (filter, first, last, 4632, "epsg", 4632, + "Combani 1950"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-382,-59,-262,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Combani 1950\",DATUM[\"Combani_1950\",SPHEROID["); + add_srs_wkt (p, 1, + "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7022\"]],TOWGS84[-382,-59,-262,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6632\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4632\"]]"); + p = add_epsg_def (filter, first, last, 4633, "epsg", 4633, + "IGN56 Lifou"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=335.47,222.58,-230.94"); + add_proj4text (p, 1, + ",0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"IGN56 Lifou\",DATUM[\"IGN56_Lifou\",SPHEROID[\""); + add_srs_wkt (p, 1, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "22\"]],TOWGS84[335.47,222.58,-230.94,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6633\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4633\"]]"); + p = add_epsg_def (filter, first, last, 4634, "epsg", 4634, + "IGN72 Grand Terre"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-13,-348,292,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"IGN72 Grand Terre\",DATUM[\"IGN72_Grande_Terre\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7022\"]],TOWGS84[-13,-348,292,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"6634\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\"4634\"]]"); + p = add_epsg_def (filter, first, last, 4635, "epsg", 4635, + "ST87 Ouvea"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-122.383,-188.696,103"); + add_proj4text (p, 1, + ".344,3.5107,-4.9668,-5.7047,4.4798 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"ST87 Ouvea\",DATUM[\"ST87_Ouvea\",SPHEROID[\"In"); + add_srs_wkt (p, 1, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 2, + "\"]],TOWGS84[-122.383,-188.696,103.344,3.5107,-4.9668,-5"); + add_srs_wkt (p, 3, + ".7047,4.4798],AUTHORITY[\"EPSG\",\"6635\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4635\"]]"); + p = add_epsg_def (filter, first, last, 4636, "epsg", 4636, + "Petrels 1972"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=365,194,166,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Petrels 1972\",DATUM[\"Petrels_1972\",SPHEROID["); + add_srs_wkt (p, 1, + "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7022\"]],TOWGS84[365,194,166,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6636\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4636\"]]"); + p = add_epsg_def (filter, first, last, 4637, "epsg", 4637, + "Perroud 1950"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=325,154,172,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Perroud 1950\",DATUM[\"Pointe_Geologie_Perroud_"); + add_srs_wkt (p, 1, + "1950\",SPHEROID[\"International 1924\",6378388,297,AUTHO"); + add_srs_wkt (p, 2, + "RITY[\"EPSG\",\"7022\"]],TOWGS84[325,154,172,0,0,0,0],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6637\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "637\"]]"); + p = add_epsg_def (filter, first, last, 4638, "epsg", 4638, + "Saint Pierre et Miquelon 1950"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +towgs84=30,430,368,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Saint Pierre et Miquelon 1950\",DATUM[\"Saint_P"); + add_srs_wkt (p, 1, + "ierre_et_Miquelon_1950\",SPHEROID[\"Clarke 1866\",637820"); + add_srs_wkt (p, 2, + "6.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[30,430,368,0,0,0,0],AUTHORITY[\"EPSG\",\"6638\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4638\"]]"); + p = add_epsg_def (filter, first, last, 4639, "epsg", 4639, + "MOP78"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=253,-132,-127,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"MOP78\",DATUM[\"MOP78\",SPHEROID[\"Internationa"); + add_srs_wkt (p, 1, + "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); + add_srs_wkt (p, 2, + "84[253,-132,-127,0,0,0,0],AUTHORITY[\"EPSG\",\"6639\"]],"); + add_srs_wkt (p, 3, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 4, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 5, + "2\"]],AUTHORITY[\"EPSG\",\"4639\"]]"); + p = add_epsg_def (filter, first, last, 4640, "epsg", 4640, + "RRAF 1991"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RRAF 1991\",DATUM[\"Reseau_de_Reference_des_Ant"); + add_srs_wkt (p, 1, + "illes_Francaises_1991\",SPHEROID[\"WGS 84\",6378137,298."); + add_srs_wkt (p, 2, + "257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,"); + add_srs_wkt (p, 3, + "0,0,0],AUTHORITY[\"EPSG\",\"6640\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4640\"]]"); + p = add_epsg_def (filter, first, last, 4641, "epsg", 4641, + "IGN53 Mare"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=287.58,177.78,-135.41"); + add_proj4text (p, 1, + ",0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"IGN53 Mare\",DATUM[\"IGN53_Mare\",SPHEROID[\"In"); + add_srs_wkt (p, 1, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 2, + "\"]],TOWGS84[287.58,177.78,-135.41,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6641\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4641\"]]"); + p = add_epsg_def (filter, first, last, 4642, "epsg", 4642, + "ST84 Ile des Pins"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-13,-348,292,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"ST84 Ile des Pins\",DATUM[\"ST84_Ile_des_Pins\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7022\"]],TOWGS84[-13,-348,292,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"6642\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4642\"]]"); + p = add_epsg_def (filter, first, last, 4643, "epsg", 4643, + "ST71 Belep"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-480.26,-438.32,-643."); + add_proj4text (p, 1, + "429,16.3119,20.1721,-4.0349,-111.7 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"ST71 Belep\",DATUM[\"ST71_Belep\",SPHEROID[\"In"); + add_srs_wkt (p, 1, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 2, + "\"]],TOWGS84[-480.26,-438.32,-643.429,16.3119,20.1721,-4"); + add_srs_wkt (p, 3, + ".0349,-111.7],AUTHORITY[\"EPSG\",\"6643\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4643\"]]"); + p = add_epsg_def (filter, first, last, 4644, "epsg", 4644, + "NEA74 Noumea"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-10.18,-350.43,291.37"); + add_proj4text (p, 1, + ",0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NEA74 Noumea\",DATUM[\"NEA74_Noumea\",SPHEROID["); + add_srs_wkt (p, 1, + "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7022\"]],TOWGS84[-10.18,-350.43,291.37,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"6644\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4644\"]]"); + p = add_epsg_def (filter, first, last, 4645, "epsg", 4645, + "RGNC 1991"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=0,0,0,0,0,0,0 +no_def"); + add_proj4text (p, 1, + "s"); + add_srs_wkt (p, 0, + "GEOGCS[\"RGNC 1991\",DATUM[\"Reseau_Geodesique_Nouvelle_"); + add_srs_wkt (p, 1, + "Caledonie_1991\",SPHEROID[\"International 1924\",6378388"); + add_srs_wkt (p, 2, + ",297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6645\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4645\"]]"); + p = add_epsg_def (filter, first, last, 4646, "epsg", 4646, + "Grand Comoros"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-963,510,-359,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Grand Comoros\",DATUM[\"Grand_Comoros\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 2, + "\"7022\"]],TOWGS84[-963,510,-359,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"6646\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4646\"]]"); + p = add_epsg_def (filter, first, last, 4647, "epsg", 4647, + "ETRS89 / UTM zone 32N (zE-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=32500000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 32N (zE-N)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9996],PARAMETER[\"false_easting\",3250000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"4647\"]]"); + p = add_epsg_def (filter, first, last, 4652, "epsg", 4652, + "New Beijing / 3-degree Gauss-Kruger zone 25"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=25500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 25\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",75],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",25500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4652\"]]"); + p = add_epsg_def (filter, first, last, 4653, "epsg", 4653, + "New Beijing / 3-degree Gauss-Kruger zone 26"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=26500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 26\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",78],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",26500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4653\"]]"); + p = add_epsg_def (filter, first, last, 4654, "epsg", 4654, + "New Beijing / 3-degree Gauss-Kruger zone 27"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=27500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 27\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",81],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",27500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4654\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_23.c b/src/spatialite/src/srsinit/epsg_inlined_23.c new file mode 100644 index 0000000..fd248e3 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_23.c @@ -0,0 +1,1960 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_23 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 4655, "epsg", 4655, + "New Beijing / 3-degree Gauss-Kruger zone 28"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=28500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 28\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",84],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",28500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4655\"]]"); + p = add_epsg_def (filter, first, last, 4656, "epsg", 4656, + "New Beijing / 3-degree Gauss-Kruger zone 29"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=29500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 29\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",87],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",29500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4656\"]]"); + p = add_epsg_def (filter, first, last, 4657, "epsg", 4657, + "Reykjavik 1900"); + add_proj4text (p, 0, + "+proj=longlat +a=6377019.27 +b=6355762.5391 +towgs84=-28"); + add_proj4text (p, 1, + ",199,5,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Reykjavik 1900\",DATUM[\"Reykjavik_1900\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"Danish 1876\",6377019.27,300,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7051\"]],TOWGS84[-28,199,5,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "6657\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 4, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4657\"]]"); + p = add_epsg_def (filter, first, last, 4658, "epsg", 4658, + "Hjorsey 1955"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-73,46,-86,0,0,0,0 +n"); + add_proj4text (p, 1, + "o_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Hjorsey 1955\",DATUM[\"Hjorsey_1955\",SPHEROID["); + add_srs_wkt (p, 1, + "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7022\"]],TOWGS84[-73,46,-86,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"6658\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 4, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4658\"]]"); + p = add_epsg_def (filter, first, last, 4659, "epsg", 4659, + "ISN93"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"ISN93\",DATUM[\"Islands_Net_1993\",SPHEROID[\"G"); + add_srs_wkt (p, 1, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 2, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6659\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4659\"]]"); + p = add_epsg_def (filter, first, last, 4660, "epsg", 4660, + "Helle 1954"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=982.609,552.753,-540."); + add_proj4text (p, 1, + "873,6.68163,-31.6115,-19.8482,16.805 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Helle 1954\",DATUM[\"Helle_1954\",SPHEROID[\"In"); + add_srs_wkt (p, 1, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 2, + "\"]],TOWGS84[982.609,552.753,-540.873,6.68163,-31.6115,-"); + add_srs_wkt (p, 3, + "19.8482,16.805],AUTHORITY[\"EPSG\",\"6660\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4660\"]]"); + p = add_epsg_def (filter, first, last, 4661, "epsg", 4661, + "LKS92"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"LKS92\",DATUM[\"Latvia_1992\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 1, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 2, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6661\"]],PR"); + add_srs_wkt (p, 3, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 4, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 5, + "]],AUTHORITY[\"EPSG\",\"4661\"]]"); + p = add_epsg_def (filter, first, last, 4662, "epsg", 4662, + "IGN72 Grande Terre"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-11.64,-348.6,291.98,"); + add_proj4text (p, 1, + "0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"IGN72 Grande Terre\",DATUM[\"IGN72_Grande_Terre"); + add_srs_wkt (p, 1, + "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); + add_srs_wkt (p, 2, + "[\"EPSG\",\"7022\"]],TOWGS84[-11.64,-348.6,291.98,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6634\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4662\"]]"); + p = add_epsg_def (filter, first, last, 4663, "epsg", 4663, + "Porto Santo 1995"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-502.862,-247.438,312"); + add_proj4text (p, 1, + ".724,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Porto Santo 1995\",DATUM[\"Porto_Santo_1995\",S"); + add_srs_wkt (p, 1, + "PHEROID[\"International 1924\",6378388,297,AUTHORITY[\"E"); + add_srs_wkt (p, 2, + "PSG\",\"7022\"]],TOWGS84[-502.862,-247.438,312.724,0,0,0"); + add_srs_wkt (p, 3, + ",0],AUTHORITY[\"EPSG\",\"6663\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"4663\"]]"); + p = add_epsg_def (filter, first, last, 4664, "epsg", 4664, + "Azores Oriental 1995"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-204.619,140.176,55.2"); + add_proj4text (p, 1, + "26,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Azores Oriental 1995\",DATUM[\"Azores_Oriental_"); + add_srs_wkt (p, 1, + "Islands_1995\",SPHEROID[\"International 1924\",6378388,2"); + add_srs_wkt (p, 2, + "97,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-204.619,140.17"); + add_srs_wkt (p, 3, + "6,55.226,0,0,0,0],AUTHORITY[\"EPSG\",\"6664\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4664\"]]"); + p = add_epsg_def (filter, first, last, 4665, "epsg", 4665, + "Azores Central 1995"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-106.226,166.366,-37."); + add_proj4text (p, 1, + "893,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Azores Central 1995\",DATUM[\"Azores_Central_Is"); + add_srs_wkt (p, 1, + "lands_1995\",SPHEROID[\"International 1924\",6378388,297"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-106.226,166.366,"); + add_srs_wkt (p, 3, + "-37.893,0,0,0,0],AUTHORITY[\"EPSG\",\"6665\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4665\"]]"); + p = add_epsg_def (filter, first, last, 4666, "epsg", 4666, + "Lisbon 1890"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=508.088,-191.042,56"); + add_proj4text (p, 1, + "5.223,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Lisbon 1890\",DATUM[\"Lisbon_1890\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7004\"]],TOWGS84[508.088,-191.042,565.223,0,0,0,0],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6666\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "666\"]]"); + p = add_epsg_def (filter, first, last, 4667, "epsg", 4667, + "IKBD-92"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"IKBD-92\",DATUM[\"Iraq_Kuwait_Boundary_Datum_19"); + add_srs_wkt (p, 1, + "92\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY"); + add_srs_wkt (p, 2, + "[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6667\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4667\"]]"); + p = add_epsg_def (filter, first, last, 4668, "epsg", 4668, + "ED79"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-86,-98,-119,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"ED79\",DATUM[\"European_Datum_1979\",SPHEROID[\""); + add_srs_wkt (p, 1, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "22\"]],TOWGS84[-86,-98,-119,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"6668\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 4, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4668\"]]"); + p = add_epsg_def (filter, first, last, 4669, "epsg", 4669, + "LKS94"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"LKS94\",DATUM[\"Lithuania_1994_ETRS89\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 2, + "\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 3, + "126\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4669\"]]"); + p = add_epsg_def (filter, first, last, 4670, "epsg", 4670, + "IGM95"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"IGM95\",DATUM[\"Istituto_Geografico_Militaire_1"); + add_srs_wkt (p, 1, + "995\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6670\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4670\"]]"); + p = add_epsg_def (filter, first, last, 4671, "epsg", 4671, + "Voirol 1879"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Voirol 1879\",DATUM[\"Voirol_1879\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Clarke 1880 (IGN)\",6378249.2,293.4660212936265,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7011\"]],AUTHORITY[\"EPSG\",\"6671\"]],PRIM"); + add_srs_wkt (p, 3, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 4, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 5, + "],AUTHORITY[\"EPSG\",\"4671\"]]"); + p = add_epsg_def (filter, first, last, 4672, "epsg", 4672, + "Chatham Islands 1971"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=175,-38,113,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Chatham Islands 1971\",DATUM[\"Chatham_Islands_"); + add_srs_wkt (p, 1, + "Datum_1971\",SPHEROID[\"International 1924\",6378388,297"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[175,-38,113,0,0,0"); + add_srs_wkt (p, 3, + ",0],AUTHORITY[\"EPSG\",\"6672\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"4672\"]]"); + p = add_epsg_def (filter, first, last, 4673, "epsg", 4673, + "Chatham Islands 1979"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=174.05,-25.49,112.57,"); + add_proj4text (p, 1, + "-0,-0,0.554,0.2263 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Chatham Islands 1979\",DATUM[\"Chatham_Islands_"); + add_srs_wkt (p, 1, + "Datum_1979\",SPHEROID[\"International 1924\",6378388,297"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[174.05,-25.49,112"); + add_srs_wkt (p, 3, + ".57,-0,-0,0.554,0.2263],AUTHORITY[\"EPSG\",\"6673\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4673\"]]"); + p = add_epsg_def (filter, first, last, 4674, "epsg", 4674, + "SIRGAS 2000"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"SIRGAS 2000\",DATUM[\"Sistema_de_Referencia_Geo"); + add_srs_wkt (p, 1, + "centrico_para_las_AmericaS_2000\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4674\"]]"); + p = add_epsg_def (filter, first, last, 4675, "epsg", 4675, + "Guam 1963"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +towgs84=-100,-248,259,0,0,0"); + add_proj4text (p, 1, + ",0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Guam 1963\",DATUM[\"Guam_1963\",SPHEROID[\"Clar"); + add_srs_wkt (p, 1, + "ke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7008\"]],TOWGS84[-100,-248,259,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6675\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4675\"]]"); + p = add_epsg_def (filter, first, last, 4676, "epsg", 4676, + "Vientiane 1982"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Vientiane 1982\",DATUM[\"Vientiane_1982\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7024\"]],AUTHORITY[\"EPSG\",\"6676\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 3, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 4, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"4676\"]]"); + p = add_epsg_def (filter, first, last, 4677, "epsg", 4677, + "Lao 1993"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Lao 1993\",DATUM[\"Lao_1993\",SPHEROID[\"Krasso"); + add_srs_wkt (p, 1, + "wsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"6677\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 4, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "4677\"]]"); + p = add_epsg_def (filter, first, last, 4678, "epsg", 4678, + "Lao 1997"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +towgs84=44.585,-131.212,-39."); + add_proj4text (p, 1, + "544,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Lao 1997\",DATUM[\"Lao_National_Datum_1997\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7024\"]],TOWGS84[44.585,-131.212,-39.544,0,0,0,0],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6678\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4678\"]]"); + p = add_epsg_def (filter, first, last, 4679, "epsg", 4679, + "Jouik 1961"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-80.01,253.26,291.1"); + add_proj4text (p, 1, + "9,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Jouik 1961\",DATUM[\"Jouik_1961\",SPHEROID[\"Cl"); + add_srs_wkt (p, 1, + "arke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7012\"]],TOWGS84[-80.01,253.26,291.19,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6679\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4679\""); + add_srs_wkt (p, 6, + "]]"); + p = add_epsg_def (filter, first, last, 4680, "epsg", 4680, + "Nouakchott 1965"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=124.5,-63.5,-281,0,"); + add_proj4text (p, 1, + "0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Nouakchott 1965\",DATUM[\"Nouakchott_1965\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7012\"]],TOWGS84[124.5,-63.5,-281,0,0,0,0],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6680\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4680\"]]"); + p = add_epsg_def (filter, first, last, 4681, "epsg", 4681, + "Mauritania 1999"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Mauritania 1999\",DATUM[\"Mauritania_1999\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG\",\"6681\"]],PRIM"); + add_srs_wkt (p, 3, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 4, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 5, + "],AUTHORITY[\"EPSG\",\"4681\"]]"); + p = add_epsg_def (filter, first, last, 4682, "epsg", 4682, + "Gulshan 303"); + add_proj4text (p, 0, + "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs8"); + add_proj4text (p, 1, + "4=283.7,735.9,261.1,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Gulshan 303\",DATUM[\"Gulshan_303\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Everest 1830 (1937 Adjustment)\",6377276.345,300.8017,AU"); + add_srs_wkt (p, 2, + "THORITY[\"EPSG\",\"7015\"]],TOWGS84[283.7,735.9,261.1,0,"); + add_srs_wkt (p, 3, + "0,0,0],AUTHORITY[\"EPSG\",\"6682\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4682\"]]"); + p = add_epsg_def (filter, first, last, 4683, "epsg", 4683, + "PRS92"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +towgs84=-127.62,-67.24,-47."); + add_proj4text (p, 1, + "04,-3.068,4.903,1.578,-1.06 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"PRS92\",DATUM[\"Philippine_Reference_System_199"); + add_srs_wkt (p, 1, + "2\",SPHEROID[\"Clarke 1866\",6378206.4,294.9786982139006"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[-127.62,-67.24,-4"); + add_srs_wkt (p, 3, + "7.04,-3.068,4.903,1.578,-1.06],AUTHORITY[\"EPSG\",\"6683"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4683\"]]"); + p = add_epsg_def (filter, first, last, 4684, "epsg", 4684, + "Gan 1970"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-133,-321,50,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Gan 1970\",DATUM[\"Gan_1970\",SPHEROID[\"Intern"); + add_srs_wkt (p, 1, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 2, + ",TOWGS84[-133,-321,50,0,0,0,0],AUTHORITY[\"EPSG\",\"6684"); + add_srs_wkt (p, 3, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 4, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4684\"]]"); + p = add_epsg_def (filter, first, last, 4685, "epsg", 4685, + "Gandajika"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Gandajika\",DATUM[\"Gandajika\",SPHEROID[\"Inte"); + add_srs_wkt (p, 1, + "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 2, + "]],AUTHORITY[\"EPSG\",\"6685\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 4, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"4685\"]]"); + p = add_epsg_def (filter, first, last, 4686, "epsg", 4686, + "MAGNA-SIRGAS"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"MAGNA-SIRGAS\",DATUM[\"Marco_Geocentrico_Nacion"); + add_srs_wkt (p, 1, + "al_de_Referencia\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 2, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 3, + ",0],AUTHORITY[\"EPSG\",\"6686\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"4686\"]]"); + p = add_epsg_def (filter, first, last, 4687, "epsg", 4687, + "RGPF"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0.072,-0.507,-0.245,"); + add_proj4text (p, 1, + "-0.0183,0.0003,-0.007,-0.0093 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RGPF\",DATUM[\"Reseau_Geodesique_de_la_Polynesi"); + add_srs_wkt (p, 1, + "e_Francaise\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 2, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0.072,-0.507,-0."); + add_srs_wkt (p, 3, + "245,-0.0183,0.0003,-0.007,-0.0093],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6687\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4687\"]]"); + p = add_epsg_def (filter, first, last, 4688, "epsg", 4688, + "Fatu Iva 72"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=347.103,1078.12,2623."); + add_proj4text (p, 1, + "92,-33.8875,70.6773,-9.3943,186.074 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Fatu Iva 72\",DATUM[\"Fatu_Iva_72\",SPHEROID[\""); + add_srs_wkt (p, 1, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "22\"]],TOWGS84[347.103,1078.12,2623.92,-33.8875,70.6773,"); + add_srs_wkt (p, 3, + "-9.3943,186.074],AUTHORITY[\"EPSG\",\"6688\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4688\"]]"); + p = add_epsg_def (filter, first, last, 4689, "epsg", 4689, + "IGN63 Hiva Oa"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=410.721,55.049,80.746"); + add_proj4text (p, 1, + ",2.5779,2.3514,0.6664,17.3311 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"IGN63 Hiva Oa\",DATUM[\"IGN63_Hiva_Oa\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 2, + "\"7022\"]],TOWGS84[410.721,55.049,80.746,2.5779,2.3514,0"); + add_srs_wkt (p, 3, + ".6664,17.3311],AUTHORITY[\"EPSG\",\"6689\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4689\"]]"); + p = add_epsg_def (filter, first, last, 4690, "epsg", 4690, + "Tahiti 79"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=221.525,152.948,176.7"); + add_proj4text (p, 1, + "68,-2.3847,-1.3896,-0.877,11.4741 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Tahiti 79\",DATUM[\"Tahiti_79\",SPHEROID[\"Inte"); + add_srs_wkt (p, 1, + "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 2, + "]],TOWGS84[221.525,152.948,176.768,-2.3847,-1.3896,-0.87"); + add_srs_wkt (p, 3, + "7,11.4741],AUTHORITY[\"EPSG\",\"6690\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4690\"]]"); + p = add_epsg_def (filter, first, last, 4691, "epsg", 4691, + "Moorea 87"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=215.525,149.593,176.2"); + add_proj4text (p, 1, + "29,-3.2624,-1.692,-1.1571,10.4773 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Moorea 87\",DATUM[\"Moorea_87\",SPHEROID[\"Inte"); + add_srs_wkt (p, 1, + "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 2, + "]],TOWGS84[215.525,149.593,176.229,-3.2624,-1.692,-1.157"); + add_srs_wkt (p, 3, + "1,10.4773],AUTHORITY[\"EPSG\",\"6691\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4691\"]]"); + p = add_epsg_def (filter, first, last, 4692, "epsg", 4692, + "Maupiti 83"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=217.037,86.959,23.956"); + add_proj4text (p, 1, + ",0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Maupiti 83\",DATUM[\"Maupiti_83\",SPHEROID[\"In"); + add_srs_wkt (p, 1, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 2, + "\"]],TOWGS84[217.037,86.959,23.956,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6692\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4692\"]]"); + p = add_epsg_def (filter, first, last, 4693, "epsg", 4693, + "Nakhl-e Ghanem"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=0,-0.15,0.68,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Nakhl-e Ghanem\",DATUM[\"Nakhl_e_Ghanem\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 2, + "\"7030\"]],TOWGS84[0,-0.15,0.68,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6693\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4693\"]]"); + p = add_epsg_def (filter, first, last, 4694, "epsg", 4694, + "POSGAR 94"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"POSGAR 94\",DATUM[\"Posiciones_Geodesicas_Argen"); + add_srs_wkt (p, 1, + "tinas_1994\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6694\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"469"); + add_srs_wkt (p, 6, + "4\"]]"); + p = add_epsg_def (filter, first, last, 4695, "epsg", 4695, + "Katanga 1955"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +towgs84=-103.746,-9.614,-25"); + add_proj4text (p, 1, + "5.95,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Katanga 1955\",DATUM[\"Katanga_1955\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7008\"]],TOWGS84[-103.746,-9.614,-255.95,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6695\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4695\"]]"); + p = add_epsg_def (filter, first, last, 4696, "epsg", 4696, + "Kasai 1953"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Kasai 1953\",DATUM[\"Kasai_1953\",SPHEROID[\"Cl"); + add_srs_wkt (p, 1, + "arke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7012\"]],AUTHORITY[\"EPSG\",\"6696\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 3, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 4, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"4696\"]]"); + p = add_epsg_def (filter, first, last, 4697, "epsg", 4697, + "IGC 1962 6th Parallel South"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"IGC 1962 6th Parallel South\",DATUM[\"IGC_1962_"); + add_srs_wkt (p, 1, + "Arc_of_the_6th_Parallel_South\",SPHEROID[\"Clarke 1880 ("); + add_srs_wkt (p, 2, + "RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6697\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4697\"]]"); + p = add_epsg_def (filter, first, last, 4698, "epsg", 4698, + "IGN 1962 Kerguelen"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=145,-187,103,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"IGN 1962 Kerguelen\",DATUM[\"IGN_1962_Kerguelen"); + add_srs_wkt (p, 1, + "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); + add_srs_wkt (p, 2, + "[\"EPSG\",\"7022\"]],TOWGS84[145,-187,103,0,0,0,0],AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"6698\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4698"); + add_srs_wkt (p, 6, + "\"]]"); + p = add_epsg_def (filter, first, last, 4699, "epsg", 4699, + "Le Pouce 1934"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-770.1,158.4,-498.2"); + add_proj4text (p, 1, + ",0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Le Pouce 1934\",DATUM[\"Le_Pouce_1934\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7012\"]],TOWGS84[-770.1,158.4,-498.2,0,0,0,0],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6699\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4699\"]]"); + p = add_epsg_def (filter, first, last, 4700, "epsg", 4700, + "IGN Astro 1960"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"IGN Astro 1960\",DATUM[\"IGN_Astro_1960\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY["); + add_srs_wkt (p, 2, + "\"EPSG\",\"7012\"]],AUTHORITY[\"EPSG\",\"6700\"]],PRIMEM"); + add_srs_wkt (p, 3, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 4, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"4700\"]]"); + p = add_epsg_def (filter, first, last, 4701, "epsg", 4701, + "IGCB 1955"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-79.9,-158,-168.9,0"); + add_proj4text (p, 1, + ",0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"IGCB 1955\",DATUM[\"Institut_Geographique_du_Co"); + add_srs_wkt (p, 1, + "ngo_Belge_1955\",SPHEROID[\"Clarke 1880 (RGS)\",6378249."); + add_srs_wkt (p, 2, + "145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-79.9,"); + add_srs_wkt (p, 3, + "-158,-168.9,0,0,0,0],AUTHORITY[\"EPSG\",\"6701\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4701\"]]"); + p = add_epsg_def (filter, first, last, 4702, "epsg", 4702, + "Mauritania 1999"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Mauritania 1999\",DATUM[\"Mauritania_1999\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6702\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4702\"]]"); + p = add_epsg_def (filter, first, last, 4703, "epsg", 4703, + "Mhast 1951"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Mhast 1951\",DATUM[\"Missao_Hidrografico_Angola"); + add_srs_wkt (p, 1, + "_y_Sao_Tome_1951\",SPHEROID[\"Clarke 1880 (RGS)\",637824"); + add_srs_wkt (p, 2, + "9.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6703\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4703\"]]"); + p = add_epsg_def (filter, first, last, 4704, "epsg", 4704, + "Mhast (onshore)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Mhast (onshore)\",DATUM[\"Mhast_onshore\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7022\"]],AUTHORITY[\"EPSG\",\"6704\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 3, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 4, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"4704\"]]"); + p = add_epsg_def (filter, first, last, 4705, "epsg", 4705, + "Mhast (offshore)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Mhast (offshore)\",DATUM[\"Mhast_offshore\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7022\"]],AUTHORITY[\"EPSG\",\"6705\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 3, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 4, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"4705\"]]"); + p = add_epsg_def (filter, first, last, 4706, "epsg", 4706, + "Egypt Gulf of Suez S-650 TL"); + add_proj4text (p, 0, + "+proj=longlat +ellps=helmert +towgs84=-146.21,112.63,4.0"); + add_proj4text (p, 1, + "5,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Egypt Gulf of Suez S-650 TL\",DATUM[\"Egypt_Gul"); + add_srs_wkt (p, 1, + "f_of_Suez_S_650_TL\",SPHEROID[\"Helmert 1906\",6378200,2"); + add_srs_wkt (p, 2, + "98.3,AUTHORITY[\"EPSG\",\"7020\"]],TOWGS84[-146.21,112.6"); + add_srs_wkt (p, 3, + "3,4.05,0,0,0,0],AUTHORITY[\"EPSG\",\"6706\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4706\"]]"); + p = add_epsg_def (filter, first, last, 4707, "epsg", 4707, + "Tern Island 1961"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=114,-116,-333,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Tern Island 1961\",DATUM[\"Tern_Island_1961\",S"); + add_srs_wkt (p, 1, + "PHEROID[\"International 1924\",6378388,297,AUTHORITY[\"E"); + add_srs_wkt (p, 2, + "PSG\",\"7022\"]],TOWGS84[114,-116,-333,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"6707\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4707\"]]"); + p = add_epsg_def (filter, first, last, 4708, "epsg", 4708, + "Cocos Islands 1965"); + add_proj4text (p, 0, + "+proj=longlat +ellps=aust_SA +towgs84=-491,-22,435,0,0,0"); + add_proj4text (p, 1, + ",0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Cocos Islands 1965\",DATUM[\"Cocos_Islands_1965"); + add_srs_wkt (p, 1, + "\",SPHEROID[\"Australian National Spheroid\",6378160,298"); + add_srs_wkt (p, 2, + ".25,AUTHORITY[\"EPSG\",\"7003\"]],TOWGS84[-491,-22,435,0"); + add_srs_wkt (p, 3, + ",0,0,0],AUTHORITY[\"EPSG\",\"6708\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4708\"]]"); + p = add_epsg_def (filter, first, last, 4709, "epsg", 4709, + "Iwo Jima 1945"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=145,75,-272,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Iwo Jima 1945\",DATUM[\"Iwo_Jima_1945\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 2, + "\"7022\"]],TOWGS84[145,75,-272,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6709\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4709\"]]"); + p = add_epsg_def (filter, first, last, 4710, "epsg", 4710, + "St. Helena 1971"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-320,550,-494,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"St. Helena 1971\",DATUM[\"St_Helena_1971\",SPHE"); + add_srs_wkt (p, 1, + "ROID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 2, + "\",\"7022\"]],TOWGS84[-320,550,-494,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6710\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4710\"]]"); + p = add_epsg_def (filter, first, last, 4711, "epsg", 4711, + "Marcus Island 1952"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=124,-234,-25,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Marcus Island 1952\",DATUM[\"Marcus_Island_1952"); + add_srs_wkt (p, 1, + "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); + add_srs_wkt (p, 2, + "[\"EPSG\",\"7022\"]],TOWGS84[124,-234,-25,0,0,0,0],AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"6711\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4711"); + add_srs_wkt (p, 6, + "\"]]"); + p = add_epsg_def (filter, first, last, 4712, "epsg", 4712, + "Ascension Island 1958"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-205,107,53,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Ascension Island 1958\",DATUM[\"Ascension_Islan"); + add_srs_wkt (p, 1, + "d_1958\",SPHEROID[\"International 1924\",6378388,297,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7022\"]],TOWGS84[-205,107,53,0,0,0,0],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6712\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4712\"]]"); + p = add_epsg_def (filter, first, last, 4713, "epsg", 4713, + "Ayabelle Lighthouse"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-79,-129,145,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Ayabelle Lighthouse\",DATUM[\"Ayabelle_Lighthou"); + add_srs_wkt (p, 1, + "se\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-79,-129,145,0,0,0"); + add_srs_wkt (p, 3, + ",0],AUTHORITY[\"EPSG\",\"6713\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"4713\"]]"); + p = add_epsg_def (filter, first, last, 4714, "epsg", 4714, + "Bellevue"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-127,-769,472,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Bellevue\",DATUM[\"Bellevue\",SPHEROID[\"Intern"); + add_srs_wkt (p, 1, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 2, + ",TOWGS84[-127,-769,472,0,0,0,0],AUTHORITY[\"EPSG\",\"671"); + add_srs_wkt (p, 3, + "4\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4714\"]]"); + p = add_epsg_def (filter, first, last, 4715, "epsg", 4715, + "Camp Area Astro"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-104,-129,239,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Camp Area Astro\",DATUM[\"Camp_Area_Astro\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"International 1924\",6378388,297,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7022\"]],TOWGS84[-104,-129,239,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6715\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4715\"]]"); + p = add_epsg_def (filter, first, last, 4716, "epsg", 4716, + "Phoenix Islands 1966"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=298,-304,-375,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Phoenix Islands 1966\",DATUM[\"Phoenix_Islands_"); + add_srs_wkt (p, 1, + "1966\",SPHEROID[\"International 1924\",6378388,297,AUTHO"); + add_srs_wkt (p, 2, + "RITY[\"EPSG\",\"7022\"]],TOWGS84[298,-304,-375,0,0,0,0],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6716\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4716\"]]"); + p = add_epsg_def (filter, first, last, 4717, "epsg", 4717, + "Cape Canaveral"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +towgs84=-2,151,181,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Cape Canaveral\",DATUM[\"Cape_Canaveral\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7008\"]],TOWGS84[-2,151,181,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6717\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4717\""); + add_srs_wkt (p, 6, + "]]"); + p = add_epsg_def (filter, first, last, 4718, "epsg", 4718, + "Solomon 1968"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=230,-199,-752,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Solomon 1968\",DATUM[\"Solomon_1968\",SPHEROID["); + add_srs_wkt (p, 1, + "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7022\"]],TOWGS84[230,-199,-752,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6718\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4718\"]]"); + p = add_epsg_def (filter, first, last, 4719, "epsg", 4719, + "Easter Island 1967"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=211,147,111,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Easter Island 1967\",DATUM[\"Easter_Island_1967"); + add_srs_wkt (p, 1, + "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); + add_srs_wkt (p, 2, + "[\"EPSG\",\"7022\"]],TOWGS84[211,147,111,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6719\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4719\""); + add_srs_wkt (p, 6, + "]]"); + p = add_epsg_def (filter, first, last, 4720, "epsg", 4720, + "Fiji 1986"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.554,0."); + add_proj4text (p, 1, + "2263 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Fiji 1986\",DATUM[\"Fiji_Geodetic_Datum_1986\","); + add_srs_wkt (p, 1, + "SPHEROID[\"WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6720\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4720\"]]"); + p = add_epsg_def (filter, first, last, 4721, "epsg", 4721, + "Fiji 1956"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=265.025,384.929,-194."); + add_proj4text (p, 1, + "046,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Fiji 1956\",DATUM[\"Fiji_1956\",SPHEROID[\"Inte"); + add_srs_wkt (p, 1, + "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 2, + "]],TOWGS84[265.025,384.929,-194.046,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"6721\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4721\"]]"); + p = add_epsg_def (filter, first, last, 4722, "epsg", 4722, + "South Georgia 1968"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-794,119,-298,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"South Georgia 1968\",DATUM[\"South_Georgia_1968"); + add_srs_wkt (p, 1, + "\",SPHEROID[\"International 1924\",6378388,297,AUTHORITY"); + add_srs_wkt (p, 2, + "[\"EPSG\",\"7022\"]],TOWGS84[-794,119,-298,0,0,0,0],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6722\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"472"); + add_srs_wkt (p, 6, + "2\"]]"); + p = add_epsg_def (filter, first, last, 4723, "epsg", 4723, + "GCGD59"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +towgs84=-179.483,-69.379,-2"); + add_proj4text (p, 1, + "7.584,-7.862,8.163,6.042,-13.925 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"GCGD59\",DATUM[\"Grand_Cayman_Geodetic_Datum_19"); + add_srs_wkt (p, 1, + "59\",SPHEROID[\"Clarke 1866\",6378206.4,294.978698213900"); + add_srs_wkt (p, 2, + "6,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[-179.483,-69.379"); + add_srs_wkt (p, 3, + ",-27.584,-7.862,8.163,6.042,-13.925],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6723\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4723\"]]"); + p = add_epsg_def (filter, first, last, 4724, "epsg", 4724, + "Diego Garcia 1969"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=208,-435,-229,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Diego Garcia 1969\",DATUM[\"Diego_Garcia_1969\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7022\"]],TOWGS84[208,-435,-229,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6724\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4724\""); + add_srs_wkt (p, 6, + "]]"); + p = add_epsg_def (filter, first, last, 4725, "epsg", 4725, + "Johnston Island 1961"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=189,-79,-202,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Johnston Island 1961\",DATUM[\"Johnston_Island_"); + add_srs_wkt (p, 1, + "1961\",SPHEROID[\"International 1924\",6378388,297,AUTHO"); + add_srs_wkt (p, 2, + "RITY[\"EPSG\",\"7022\"]],TOWGS84[189,-79,-202,0,0,0,0],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6725\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4725\"]]"); + p = add_epsg_def (filter, first, last, 4726, "epsg", 4726, + "SIGD61"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +towgs84=8.853,-52.644,180.3"); + add_proj4text (p, 1, + "04,-0.393,-2.323,2.96,-24.081 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"SIGD61\",DATUM[\"Sister_Islands_Geodetic_Datum_"); + add_srs_wkt (p, 1, + "1961\",SPHEROID[\"Clarke 1866\",6378206.4,294.9786982139"); + add_srs_wkt (p, 2, + "006,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS84[8.853,-52.644,"); + add_srs_wkt (p, 3, + "180.304,-0.393,-2.323,2.96,-24.081],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6726\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4726\"]]"); + p = add_epsg_def (filter, first, last, 4727, "epsg", 4727, + "Midway 1961"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=403,-81,277,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Midway 1961\",DATUM[\"Midway_1961\",SPHEROID[\""); + add_srs_wkt (p, 1, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "22\"]],TOWGS84[403,-81,277,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "6727\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 4, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4727\"]]"); + p = add_epsg_def (filter, first, last, 4728, "epsg", 4728, + "Pico de las Nieves 1984"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-307,-92,127,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Pico de las Nieves 1984\",DATUM[\"Pico_de_las_N"); + add_srs_wkt (p, 1, + "ieves_1984\",SPHEROID[\"International 1924\",6378388,297"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-307,-92,127,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6728\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4728\"]]"); + p = add_epsg_def (filter, first, last, 4729, "epsg", 4729, + "Pitcairn 1967"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=185,165,42,0,0,0,0 +n"); + add_proj4text (p, 1, + "o_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Pitcairn 1967\",DATUM[\"Pitcairn_1967\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 2, + "\"7022\"]],TOWGS84[185,165,42,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6729\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4729\"]]"); + p = add_epsg_def (filter, first, last, 4730, "epsg", 4730, + "Santo 1965"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=170,42,84,0,0,0,0 +no"); + add_proj4text (p, 1, + "_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Santo 1965\",DATUM[\"Santo_1965\",SPHEROID[\"In"); + add_srs_wkt (p, 1, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 2, + "\"]],TOWGS84[170,42,84,0,0,0,0],AUTHORITY[\"EPSG\",\"673"); + add_srs_wkt (p, 3, + "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4730\"]]"); + p = add_epsg_def (filter, first, last, 4731, "epsg", 4731, + "Viti Levu 1916"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=51,391,-36,0,0,0,0 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Viti Levu 1916\",DATUM[\"Viti_Levu_1916\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY["); + add_srs_wkt (p, 2, + "\"EPSG\",\"7012\"]],TOWGS84[51,391,-36,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"6731\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4731\"]]"); + p = add_epsg_def (filter, first, last, 4732, "epsg", 4732, + "Marshall Islands 1960"); + add_proj4text (p, 0, + "+proj=longlat +a=6378270 +b=6356794.343434343 +towgs84=1"); + add_proj4text (p, 1, + "02,52,-38,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Marshall Islands 1960\",DATUM[\"Marshall_Island"); + add_srs_wkt (p, 1, + "s_1960\",SPHEROID[\"Hough 1960\",6378270,297,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7053\"]],TOWGS84[102,52,-38,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6732\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4732\"]]"); + p = add_epsg_def (filter, first, last, 4733, "epsg", 4733, + "Wake Island 1952"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=276,-57,149,0,0,0,0 +"); + add_proj4text (p, 1, + "no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Wake Island 1952\",DATUM[\"Wake_Island_1952\",S"); + add_srs_wkt (p, 1, + "PHEROID[\"International 1924\",6378388,297,AUTHORITY[\"E"); + add_srs_wkt (p, 2, + "PSG\",\"7022\"]],TOWGS84[276,-57,149,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6733\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4733\"]]"); + p = add_epsg_def (filter, first, last, 4734, "epsg", 4734, + "Tristan 1968"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-632,438,-609,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Tristan 1968\",DATUM[\"Tristan_1968\",SPHEROID["); + add_srs_wkt (p, 1, + "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7022\"]],TOWGS84[-632,438,-609,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"6734\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4734\"]]"); + p = add_epsg_def (filter, first, last, 4735, "epsg", 4735, + "Kusaie 1951"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=647,1777,-1124,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Kusaie 1951\",DATUM[\"Kusaie_1951\",SPHEROID[\""); + add_srs_wkt (p, 1, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "22\"]],TOWGS84[647,1777,-1124,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6735\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4735\"]]"); + p = add_epsg_def (filter, first, last, 4736, "epsg", 4736, + "Deception Island"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=260,12,-147,0,0,0,0"); + add_proj4text (p, 1, + " +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Deception Island\",DATUM[\"Deception_Island\",S"); + add_srs_wkt (p, 1, + "PHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7012\"]],TOWGS84[260,12,-147,0,0,0,0],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"6736\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 6, + "36\"]]"); + p = add_epsg_def (filter, first, last, 4737, "epsg", 4737, + "Korea 2000"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Korea 2000\",DATUM[\"Geocentric_datum_of_Korea\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6737\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4737\"]]"); + p = add_epsg_def (filter, first, last, 4738, "epsg", 4738, + "Hong Kong 1963"); + add_proj4text (p, 0, + "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Hong Kong 1963\",DATUM[\"Hong_Kong_1963\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"Clarke 1858\",6378293.645208759,294.2606763692569,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7007\"]],AUTHORITY[\"EPSG\",\"6738\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4738\"]]"); + p = add_epsg_def (filter, first, last, 4739, "epsg", 4739, + "Hong Kong 1963(67)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-156,-271,-189,0,0,0,"); + add_proj4text (p, 1, + "0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Hong Kong 1963(67)\",DATUM[\"Hong_Kong_1963_67\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7022\"]],TOWGS84[-156,-271,-189,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"6739\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4739\""); + add_srs_wkt (p, 6, + "]]"); + p = add_epsg_def (filter, first, last, 4740, "epsg", 4740, + "PZ-90"); + add_proj4text (p, 0, + "+proj=longlat +a=6378136 +b=6356751.361745712 +towgs84=0"); + add_proj4text (p, 1, + ",0,1.5,-0,-0,0.076,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"PZ-90\",DATUM[\"Parametrop_Zemp_1990\",SPHEROID"); + add_srs_wkt (p, 1, + "[\"PZ-90\",6378136,298.257839303,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "54\"]],TOWGS84[0,0,1.5,-0,-0,0.076,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6740\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4740\"]]"); + p = add_epsg_def (filter, first, last, 4741, "epsg", 4741, + "FD54"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"FD54\",DATUM[\"Faroe_Datum_1954\",SPHEROID[\"In"); + add_srs_wkt (p, 1, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 2, + "\"]],AUTHORITY[\"EPSG\",\"6741\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 3, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 4, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"4741\"]]"); + p = add_epsg_def (filter, first, last, 4742, "epsg", 4742, + "GDM2000"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"GDM2000\",DATUM[\"Geodetic_Datum_of_Malaysia_20"); + add_srs_wkt (p, 1, + "00\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6742\"]],PRI"); + add_srs_wkt (p, 3, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 4, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 5, + "],AUTHORITY[\"EPSG\",\"4742\"]]"); + p = add_epsg_def (filter, first, last, 4743, "epsg", 4743, + "Karbala 1979"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=70.995,-335.916,262"); + add_proj4text (p, 1, + ".898,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Karbala 1979\",DATUM[\"Karbala_1979\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); + add_srs_wkt (p, 2, + "SG\",\"7012\"]],TOWGS84[70.995,-335.916,262.898,0,0,0,0]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6743\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4743\"]]"); + p = add_epsg_def (filter, first, last, 4744, "epsg", 4744, + "Nahrwan 1934"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Nahrwan 1934\",DATUM[\"Nahrwan_1934\",SPHEROID["); + add_srs_wkt (p, 1, + "\"Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EP"); + add_srs_wkt (p, 2, + "SG\",\"7012\"]],AUTHORITY[\"EPSG\",\"6744\"]],PRIMEM[\"G"); + add_srs_wkt (p, 3, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 4, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"4744\"]]"); + p = add_epsg_def (filter, first, last, 4745, "epsg", 4745, + "RD/83"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RD/83\",DATUM[\"Rauenberg_Datum_83\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7004\"]],AUTHORITY[\"EPSG\",\"6745\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 3, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 4, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"4745\"]]"); + p = add_epsg_def (filter, first, last, 4746, "epsg", 4746, + "PD/83"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"PD/83\",DATUM[\"Potsdam_Datum_83\",SPHEROID[\"B"); + add_srs_wkt (p, 1, + "essel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 2, + "\"7004\"]],AUTHORITY[\"EPSG\",\"6746\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 3, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 4, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"4746\"]]"); + p = add_epsg_def (filter, first, last, 4747, "epsg", 4747, + "GR96"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"GR96\",DATUM[\"Greenland_1996\",SPHEROID[\"GRS "); + add_srs_wkt (p, 1, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 2, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],"); + add_srs_wkt (p, 3, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 4, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 5, + "2\"]],AUTHORITY[\"EPSG\",\"4747\"]]"); + p = add_epsg_def (filter, first, last, 4748, "epsg", 4748, + "Vanua Levu 1915"); + add_proj4text (p, 0, + "+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51"); + add_proj4text (p, 1, + ",391,-36,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Vanua Levu 1915\",DATUM[\"Vanua_Levu_1915\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"Clarke 1880 (international foot)\",6378306.3696,"); + add_srs_wkt (p, 2, + "293.4663076556349,AUTHORITY[\"EPSG\",\"7055\"]],TOWGS84["); + add_srs_wkt (p, 3, + "51,391,-36,0,0,0,0],AUTHORITY[\"EPSG\",\"6748\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4748\"]]"); + p = add_epsg_def (filter, first, last, 4749, "epsg", 4749, + "RGNC91-93"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RGNC91-93\",DATUM[\"Reseau_Geodesique_de_Nouvel"); + add_srs_wkt (p, 1, + "le_Caledonie_91_93\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 2, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 3, + ",0,0],AUTHORITY[\"EPSG\",\"6749\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4749\"]]"); + p = add_epsg_def (filter, first, last, 4750, "epsg", 4750, + "ST87 Ouvea"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=-56.263,16.136,-22.8"); + add_proj4text (p, 1, + "56,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"ST87 Ouvea\",DATUM[\"ST87_Ouvea\",SPHEROID[\"WG"); + add_srs_wkt (p, 1, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 2, + "]],TOWGS84[-56.263,16.136,-22.856,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6750\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4750\"]]"); + p = add_epsg_def (filter, first, last, 4751, "epsg", 4751, + "Kertau (RSO)"); + add_proj4text (p, 0, + "+proj=longlat +a=6377295.664 +b=6356094.667915204 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Kertau (RSO)\",DATUM[\"Kertau_RSO\",SPHEROID[\""); + add_srs_wkt (p, 1, + "Everest 1830 (RSO 1969)\",6377295.664,300.8017,AUTHORITY"); + add_srs_wkt (p, 2, + "[\"EPSG\",\"7056\"]],AUTHORITY[\"EPSG\",\"6751\"]],PRIME"); + add_srs_wkt (p, 3, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 4, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"4751\"]]"); + p = add_epsg_def (filter, first, last, 4752, "epsg", 4752, + "Viti Levu 1912"); + add_proj4text (p, 0, + "+proj=longlat +a=6378306.3696 +b=6356571.996 +towgs84=51"); + add_proj4text (p, 1, + ",391,-36,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Viti Levu 1912\",DATUM[\"Viti_Levu_1912\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"Clarke 1880 (international foot)\",6378306.3696,29"); + add_srs_wkt (p, 2, + "3.4663076556349,AUTHORITY[\"EPSG\",\"7055\"]],TOWGS84[51"); + add_srs_wkt (p, 3, + ",391,-36,0,0,0,0],AUTHORITY[\"EPSG\",\"6752\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4752\"]]"); + p = add_epsg_def (filter, first, last, 4753, "epsg", 4753, + "fk89"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"fk89\",DATUM[\"fk89\",SPHEROID[\"International "); + add_srs_wkt (p, 1, + "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"6753\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4753\""); + add_srs_wkt (p, 5, + "]]"); + p = add_epsg_def (filter, first, last, 4754, "epsg", 4754, + "LGD2006"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-208.406,-109.878,-2."); + add_proj4text (p, 1, + "5764,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"LGD2006\",DATUM[\"Libyan_Geodetic_Datum_2006\","); + add_srs_wkt (p, 1, + "SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7022\"]],TOWGS84[-208.406,-109.878,-2.5764,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6754\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4754\"]]"); + p = add_epsg_def (filter, first, last, 4755, "epsg", 4755, + "DGN95"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"DGN95\",DATUM[\"Datum_Geodesi_Nasional_1995\",S"); + add_srs_wkt (p, 1, + "PHEROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6755\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4755\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_24.c b/src/spatialite/src/srsinit/epsg_inlined_24.c new file mode 100644 index 0000000..900347f --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_24.c @@ -0,0 +1,2800 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_24 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 4756, "epsg", 4756, + "VN-2000"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=-192.873,-39.382,-11"); + add_proj4text (p, 1, + "1.202,-0.00205,-0.0005,0.00335,0.0188 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"VN-2000\",DATUM[\"Vietnam_2000\",SPHEROID[\"WGS"); + add_srs_wkt (p, 1, + " 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]"); + add_srs_wkt (p, 2, + "],TOWGS84[-192.873,-39.382,-111.202,-0.00205,-0.0005,0.0"); + add_srs_wkt (p, 3, + "0335,0.0188],AUTHORITY[\"EPSG\",\"6756\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4756\"]]"); + p = add_epsg_def (filter, first, last, 4757, "epsg", 4757, + "SVY21"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"SVY21\",DATUM[\"SVY21\",SPHEROID[\"WGS 84\",637"); + add_srs_wkt (p, 1, + "8137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"6757\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4757\""); + add_srs_wkt (p, 5, + "]]"); + p = add_epsg_def (filter, first, last, 4758, "epsg", 4758, + "JAD2001"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"JAD2001\",DATUM[\"Jamaica_2001\",SPHEROID[\"WGS"); + add_srs_wkt (p, 1, + " 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]"); + add_srs_wkt (p, 2, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6758\"]],P"); + add_srs_wkt (p, 3, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 4, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 5, + "\"]],AUTHORITY[\"EPSG\",\"4758\"]]"); + p = add_epsg_def (filter, first, last, 4759, "epsg", 4759, + "NAD83(NSRS2007)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatia"); + add_srs_wkt (p, 1, + "l_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,"); + add_srs_wkt (p, 2, + "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4759\"]]"); + p = add_epsg_def (filter, first, last, 4760, "epsg", 4760, + "WGS 66"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS66 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"WGS 66\",DATUM[\"World_Geodetic_System_1966\",S"); + add_srs_wkt (p, 1, + "PHEROID[\"NWL 9D\",6378145,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 2, + "025\"]],AUTHORITY[\"EPSG\",\"6760\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 3, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 4, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"4760\"]]"); + p = add_epsg_def (filter, first, last, 4761, "epsg", 4761, + "HTRS96"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"HTRS96\",DATUM[\"Croatian_Terrestrial_Reference"); + add_srs_wkt (p, 1, + "_System\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 2, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"6761\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4761"); + add_srs_wkt (p, 6, + "\"]]"); + p = add_epsg_def (filter, first, last, 4762, "epsg", 4762, + "BDA2000"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"BDA2000\",DATUM[\"Bermuda_2000\",SPHEROID[\"WGS"); + add_srs_wkt (p, 1, + " 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]"); + add_srs_wkt (p, 2, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6762\"]],P"); + add_srs_wkt (p, 3, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 4, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 5, + "\"]],AUTHORITY[\"EPSG\",\"4762\"]]"); + p = add_epsg_def (filter, first, last, 4763, "epsg", 4763, + "Pitcairn 2006"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Pitcairn 2006\",DATUM[\"Pitcairn_2006\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"676"); + add_srs_wkt (p, 3, + "3\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4763\"]]"); + p = add_epsg_def (filter, first, last, 4764, "epsg", 4764, + "RSRGD2000"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RSRGD2000\",DATUM[\"Ross_Sea_Region_Geodetic_Da"); + add_srs_wkt (p, 1, + "tum_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6764\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"476"); + add_srs_wkt (p, 6, + "4\"]]"); + p = add_epsg_def (filter, first, last, 4765, "epsg", 4765, + "Slovenia 1996"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Slovenia 1996\",DATUM[\"Slovenia_Geodetic_Datum"); + add_srs_wkt (p, 1, + "_1996\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6765\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4765\""); + add_srs_wkt (p, 6, + "]]"); + p = add_epsg_def (filter, first, last, 4766, "epsg", 4766, + "New Beijing / 3-degree Gauss-Kruger zone 30"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=30500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 30\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",90],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",30500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4766\"]]"); + p = add_epsg_def (filter, first, last, 4767, "epsg", 4767, + "New Beijing / 3-degree Gauss-Kruger zone 31"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=31500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 31\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",93],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",31500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4767\"]]"); + p = add_epsg_def (filter, first, last, 4768, "epsg", 4768, + "New Beijing / 3-degree Gauss-Kruger zone 32"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=32500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 32\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",96],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",32500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4768\"]]"); + p = add_epsg_def (filter, first, last, 4769, "epsg", 4769, + "New Beijing / 3-degree Gauss-Kruger zone 33"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=33500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 33\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",99],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",33500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4769\"]]"); + p = add_epsg_def (filter, first, last, 4770, "epsg", 4770, + "New Beijing / 3-degree Gauss-Kruger zone 34"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=34500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 34\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",102],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",34500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"4770\"]]"); + p = add_epsg_def (filter, first, last, 4771, "epsg", 4771, + "New Beijing / 3-degree Gauss-Kruger zone 35"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=35500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 35\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",105],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",35500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"4771\"]]"); + p = add_epsg_def (filter, first, last, 4772, "epsg", 4772, + "New Beijing / 3-degree Gauss-Kruger zone 36"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=36500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 36\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",108],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",36500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"4772\"]]"); + p = add_epsg_def (filter, first, last, 4773, "epsg", 4773, + "New Beijing / 3-degree Gauss-Kruger zone 37"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=37500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 37\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",111],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",37500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"4773\"]]"); + p = add_epsg_def (filter, first, last, 4774, "epsg", 4774, + "New Beijing / 3-degree Gauss-Kruger zone 38"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=38500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 38\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",114],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",38500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"4774\"]]"); + p = add_epsg_def (filter, first, last, 4775, "epsg", 4775, + "New Beijing / 3-degree Gauss-Kruger zone 39"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=39500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 39\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",117],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",39500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"4775\"]]"); + p = add_epsg_def (filter, first, last, 4776, "epsg", 4776, + "New Beijing / 3-degree Gauss-Kruger zone 40"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=40500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 40\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",120],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",40500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"4776\"]]"); + p = add_epsg_def (filter, first, last, 4777, "epsg", 4777, + "New Beijing / 3-degree Gauss-Kruger zone 41"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=41500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 41\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",123],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",41500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"4777\"]]"); + p = add_epsg_def (filter, first, last, 4778, "epsg", 4778, + "New Beijing / 3-degree Gauss-Kruger zone 42"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=42500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 42\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",126],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",42500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"4778\"]]"); + p = add_epsg_def (filter, first, last, 4779, "epsg", 4779, + "New Beijing / 3-degree Gauss-Kruger zone 43"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=43500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 43\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",129],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",43500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"4779\"]]"); + p = add_epsg_def (filter, first, last, 4780, "epsg", 4780, + "New Beijing / 3-degree Gauss-Kruger zone 44"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=44500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 44\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",132],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",44500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"4780\"]]"); + p = add_epsg_def (filter, first, last, 4781, "epsg", 4781, + "New Beijing / 3-degree Gauss-Kruger zone 45"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=45500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger zone 45\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",135],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",45500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"4781\"]]"); + p = add_epsg_def (filter, first, last, 4782, "epsg", 4782, + "New Beijing / 3-degree Gauss-Kruger CM 75E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 75E\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); + add_srs_wkt (p, 2, + "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",75],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"4782\"]]"); + p = add_epsg_def (filter, first, last, 4783, "epsg", 4783, + "New Beijing / 3-degree Gauss-Kruger CM 78E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=78 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 78E\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); + add_srs_wkt (p, 2, + "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",78],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"4783\"]]"); + p = add_epsg_def (filter, first, last, 4784, "epsg", 4784, + "New Beijing / 3-degree Gauss-Kruger CM 81E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 81E\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); + add_srs_wkt (p, 2, + "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",81],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"4784\"]]"); + p = add_epsg_def (filter, first, last, 4785, "epsg", 4785, + "New Beijing / 3-degree Gauss-Kruger CM 84E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=84 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 84E\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); + add_srs_wkt (p, 2, + "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",84],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"4785\"]]"); + p = add_epsg_def (filter, first, last, 4786, "epsg", 4786, + "New Beijing / 3-degree Gauss-Kruger CM 87E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 87E\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); + add_srs_wkt (p, 2, + "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",87],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"4786\"]]"); + p = add_epsg_def (filter, first, last, 4787, "epsg", 4787, + "New Beijing / 3-degree Gauss-Kruger CM 90E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 90E\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); + add_srs_wkt (p, 2, + "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",90],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"4787\"]]"); + p = add_epsg_def (filter, first, last, 4788, "epsg", 4788, + "New Beijing / 3-degree Gauss-Kruger CM 93E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 93E\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); + add_srs_wkt (p, 2, + "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",93],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"4788\"]]"); + p = add_epsg_def (filter, first, last, 4789, "epsg", 4789, + "New Beijing / 3-degree Gauss-Kruger CM 96E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=96 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 96E\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); + add_srs_wkt (p, 2, + "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",96],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"4789\"]]"); + p = add_epsg_def (filter, first, last, 4790, "epsg", 4790, + "New Beijing / 3-degree Gauss-Kruger CM 99E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 99E\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"Kr"); + add_srs_wkt (p, 2, + "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",99],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"4790\"]]"); + p = add_epsg_def (filter, first, last, 4791, "epsg", 4791, + "New Beijing / 3-degree Gauss-Kruger CM 102E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=102 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 102E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",102],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4791\"]]"); + p = add_epsg_def (filter, first, last, 4792, "epsg", 4792, + "New Beijing / 3-degree Gauss-Kruger CM 105E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 105E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",105],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4792\"]]"); + p = add_epsg_def (filter, first, last, 4793, "epsg", 4793, + "New Beijing / 3-degree Gauss-Kruger CM 108E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=108 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 108E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",108],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4793\"]]"); + p = add_epsg_def (filter, first, last, 4794, "epsg", 4794, + "New Beijing / 3-degree Gauss-Kruger CM 111E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 111E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",111],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4794\"]]"); + p = add_epsg_def (filter, first, last, 4795, "epsg", 4795, + "New Beijing / 3-degree Gauss-Kruger CM 114E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=114 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 114E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",114],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4795\"]]"); + p = add_epsg_def (filter, first, last, 4796, "epsg", 4796, + "New Beijing / 3-degree Gauss-Kruger CM 117E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 117E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",117],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4796\"]]"); + p = add_epsg_def (filter, first, last, 4797, "epsg", 4797, + "New Beijing / 3-degree Gauss-Kruger CM 120E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=120 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 120E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",120],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4797\"]]"); + p = add_epsg_def (filter, first, last, 4798, "epsg", 4798, + "New Beijing / 3-degree Gauss-Kruger CM 123E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 123E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",123],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4798\"]]"); + p = add_epsg_def (filter, first, last, 4799, "epsg", 4799, + "New Beijing / 3-degree Gauss-Kruger CM 126E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=126 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 126E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",126],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4799\"]]"); + p = add_epsg_def (filter, first, last, 4800, "epsg", 4800, + "New Beijing / 3-degree Gauss-Kruger CM 129E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 129E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",129],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4800\"]]"); + p = add_epsg_def (filter, first, last, 4801, "epsg", 4801, + "Bern 1898 (Bern)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=674.4,15.1,405.3,0,"); + add_proj4text (p, 1, + "0,0,0 +pm=bern +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Bern 1898 (Bern)\",DATUM[\"CH1903_Bern\",SPHERO"); + add_srs_wkt (p, 1, + "ID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"E"); + add_srs_wkt (p, 2, + "PSG\",\"7004\"]],TOWGS84[674.4,15.1,405.3,0,0,0,0],AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"6801\"]],PRIMEM[\"Bern\",7.4395833333333"); + add_srs_wkt (p, 4, + "33,AUTHORITY[\"EPSG\",\"8907\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4801\"]]"); + p = add_epsg_def (filter, first, last, 4802, "epsg", 4802, + "Bogota 1975 (Bogota)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=307,304,-318,0,0,0,0 "); + add_proj4text (p, 1, + "+pm=bogota +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Bogota 1975 (Bogota)\",DATUM[\"Bogota_1975_Bogo"); + add_srs_wkt (p, 1, + "ta\",SPHEROID[\"International 1924\",6378388,297,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7022\"]],TOWGS84[307,304,-318,0,0,0,0],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"6802\"]],PRIMEM[\"Bogota\",-74.0809166"); + add_srs_wkt (p, 4, + "6666667,AUTHORITY[\"EPSG\",\"8904\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4802\"]]"); + p = add_epsg_def (filter, first, last, 4803, "epsg", 4803, + "Lisbon (Lisbon)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-304.046,-60.576,103."); + add_proj4text (p, 1, + "64,0,0,0,0 +pm=lisbon +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Lisbon (Lisbon)\",DATUM[\"Lisbon_1937_Lisbon\","); + add_srs_wkt (p, 1, + "SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7022\"]],TOWGS84[-304.046,-60.576,103.64,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6803\"]],PRIMEM[\"Lisbon\",-9.13"); + add_srs_wkt (p, 4, + "1906111111112,AUTHORITY[\"EPSG\",\"8902\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4803\"]]"); + p = add_epsg_def (filter, first, last, 4804, "epsg", 4804, + "Makassar (Jakarta)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=-587.8,519.75,145.7"); + add_proj4text (p, 1, + "6,0,0,0,0 +pm=jakarta +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Makassar (Jakarta)\",DATUM[\"Makassar_Jakarta\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7004\"]],TOWGS84[-587.8,519.75,145.76,0,0"); + add_srs_wkt (p, 3, + ",0,0],AUTHORITY[\"EPSG\",\"6804\"]],PRIMEM[\"Jakarta\",1"); + add_srs_wkt (p, 4, + "06.8077194444444,AUTHORITY[\"EPSG\",\"8908\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4804\"]]"); + p = add_epsg_def (filter, first, last, 4805, "epsg", 4805, + "MGI (Ferro)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=682,-203,480,0,0,0,"); + add_proj4text (p, 1, + "0 +pm=ferro +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"MGI (Ferro)\",DATUM[\"Militar_Geographische_Ins"); + add_srs_wkt (p, 1, + "titut_Ferro\",SPHEROID[\"Bessel 1841\",6377397.155,299.1"); + add_srs_wkt (p, 2, + "528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,48"); + add_srs_wkt (p, 3, + "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\""); + add_srs_wkt (p, 4, + ",-17.66666666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4805\"]]"); + p = add_epsg_def (filter, first, last, 4806, "epsg", 4806, + "Monte Mario (Rome)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.9"); + add_proj4text (p, 1, + "71,-2.917,0.714,-11.68 +pm=rome +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Monte Mario (Rome)\",DATUM[\"Monte_Mario_Rome\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7022\"]],TOWGS84[-104.1,-49.1,-9.9,0.971,-2.917"); + add_srs_wkt (p, 3, + ",0.714,-11.68],AUTHORITY[\"EPSG\",\"6806\"]],PRIMEM[\"Ro"); + add_srs_wkt (p, 4, + "me\",12.45233333333333,AUTHORITY[\"EPSG\",\"8906\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4806\"]]"); + p = add_epsg_def (filter, first, last, 4807, "epsg", 4807, + "NTF (Paris)"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-168,-60,"); + add_proj4text (p, 1, + "320,0,0,0,0 +pm=paris +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Fr"); + add_srs_wkt (p, 1, + "ancaise_Paris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2"); + add_srs_wkt (p, 2, + ",293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-168,-60,320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Paris\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"grad\",0.01570796326794897,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "05\"]],AUTHORITY[\"EPSG\",\"4807\"]]"); + p = add_epsg_def (filter, first, last, 4808, "epsg", 4808, + "Padang (Jakarta)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +pm=jakarta +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Padang (Jakarta)\",DATUM[\"Padang_1884_Jakarta\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6808\"]],PR"); + add_srs_wkt (p, 3, + "IMEM[\"Jakarta\",106.8077194444444,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8908\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4808\"]]"); + p = add_epsg_def (filter, first, last, 4809, "epsg", 4809, + "Belge 1950 (Brussels)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +pm=brussels +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Belge 1950 (Brussels)\",DATUM[\"Reseau_National"); + add_srs_wkt (p, 1, + "_Belge_1950_Brussels\",SPHEROID[\"International 1924\",6"); + add_srs_wkt (p, 2, + "378388,297,AUTHORITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"6809\"]],PRIMEM[\"Brussels\",4.367975,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8910\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4809\"]]"); + p = add_epsg_def (filter, first, last, 4810, "epsg", 4810, + "Tananarive (Paris)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +towgs84=-189,-242,-91,0,0,0,0"); + add_proj4text (p, 1, + " +pm=paris +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Tananarive (Paris)\",DATUM[\"Tananarive_1925_Pa"); + add_srs_wkt (p, 1, + "ris\",SPHEROID[\"International 1924\",6378388,297,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7022\"]],TOWGS84[-189,-242,-91,0,0,0,0],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6810\"]],PRIMEM[\"Paris\",2.33722917"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0.015707963"); + add_srs_wkt (p, 5, + "26794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4810\"]]"); + p = add_epsg_def (filter, first, last, 4811, "epsg", 4811, + "Voirol 1875 (Paris)"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-73,-247,"); + add_proj4text (p, 1, + "227,0,0,0,0 +pm=paris +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Voirol 1875 (Paris)\",DATUM[\"Voirol_1875_Paris"); + add_srs_wkt (p, 1, + "\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.46602129"); + add_srs_wkt (p, 2, + "36265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-73,-247,227"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6811\"]],PRIMEM[\"Paris\""); + add_srs_wkt (p, 4, + ",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\","); + add_srs_wkt (p, 5, + "0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4811\"]]"); + p = add_epsg_def (filter, first, last, 4812, "epsg", 4812, + "New Beijing / 3-degree Gauss-Kruger CM 132E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=132 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 132E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",132],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4812\"]]"); + p = add_epsg_def (filter, first, last, 4813, "epsg", 4813, + "Batavia (Jakarta)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=-377,681,-50,0,0,0,"); + add_proj4text (p, 1, + "0 +pm=jakarta +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Batavia (Jakarta)\",DATUM[\"Batavia_Jakarta\",S"); + add_srs_wkt (p, 1, + "PHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7004\"]],TOWGS84[-377,681,-50,0,0,0,0],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6813\"]],PRIMEM[\"Jakarta\",106.8077194"); + add_srs_wkt (p, 4, + "444444,AUTHORITY[\"EPSG\",\"8908\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4813\"]]"); + p = add_epsg_def (filter, first, last, 4814, "epsg", 4814, + "RT38 (Stockholm)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +pm=stockholm +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RT38 (Stockholm)\",DATUM[\"Stockholm_1938_Stock"); + add_srs_wkt (p, 1, + "holm\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6814\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Stockholm\",18.05827777777778,AUTHORITY[\"EP"); + add_srs_wkt (p, 4, + "SG\",\"8911\"]],UNIT[\"degree\",0.0174532925199433,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4814\"]]"); + p = add_epsg_def (filter, first, last, 4815, "epsg", 4815, + "Greek (Athens)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +pm=athens +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Greek (Athens)\",DATUM[\"Greek_Athens\",SPHEROI"); + add_srs_wkt (p, 1, + "D[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EP"); + add_srs_wkt (p, 2, + "SG\",\"7004\"]],AUTHORITY[\"EPSG\",\"6815\"]],PRIMEM[\"A"); + add_srs_wkt (p, 3, + "thens\",23.7163375,AUTHORITY[\"EPSG\",\"8912\"]],UNIT[\""); + add_srs_wkt (p, 4, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 5, + "],AUTHORITY[\"EPSG\",\"4815\"]]"); + p = add_epsg_def (filter, first, last, 4816, "epsg", 4816, + "Carthage (Paris)"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +towgs84=-263,6,43"); + add_proj4text (p, 1, + "1,0,0,0,0 +pm=paris +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Carthage (Paris)\",DATUM[\"Carthage_Paris\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936265,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-263,6,431,0,0,0,0"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6816\"]],PRIMEM[\"Paris\",2.33722"); + add_srs_wkt (p, 4, + "917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0.015707"); + add_srs_wkt (p, 5, + "96326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4816\"]]"); + p = add_epsg_def (filter, first, last, 4817, "epsg", 4817, + "NGO 1948 (Oslo)"); + add_proj4text (p, 0, + "+proj=longlat +a=6377492.018 +b=6356173.508712696 +towgs"); + add_proj4text (p, 1, + "84=278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "GEOGCS[\"NGO 1948 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHER"); + add_srs_wkt (p, 1, + "OID[\"Bessel Modified\",6377492.018,299.1528128,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7005\"]],TOWGS84[278.3,93,474.5,7.889,0.05,"); + add_srs_wkt (p, 3, + "-6.61,6.21],AUTHORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\""); + add_srs_wkt (p, 4, + ",10.72291666666667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4817\"]]"); + p = add_epsg_def (filter, first, last, 4818, "epsg", 4818, + "S-JTSK (Ferro)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=589,76,480,0,0,0,0 "); + add_proj4text (p, 1, + "+pm=ferro +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"S-JTSK (Ferro)\",DATUM[\"System_Jednotne_Trigon"); + add_srs_wkt (p, 1, + "ometricke_Site_Katastralni_Ferro\",SPHEROID[\"Bessel 184"); + add_srs_wkt (p, 2, + "1\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[589,76,480,0,0,0,0],AUTHORITY[\"EPSG\",\"6818\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Ferro\",-17.66666666666667,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8909\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4818\"]]"); + p = add_epsg_def (filter, first, last, 4819, "epsg", 4819, + "Nord Sahara 1959 (Paris)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk80 +towgs84=-209.362,-87.8162,4"); + add_proj4text (p, 1, + "04.62,0.0046,3.4784,0.5805,-1.4547 +pm=paris +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Nord Sahara 1959 (Paris)\",DATUM[\"Nord_Sahara_"); + add_srs_wkt (p, 1, + "1959_Paris\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,"); + add_srs_wkt (p, 2, + "293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-209.362,-"); + add_srs_wkt (p, 3, + "87.8162,404.62,0.0046,3.4784,0.5805,-1.4547],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6819\"]],PRIMEM[\"Paris\",2.33722917,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8903\"]],UNIT[\"grad\",0.01570796326794897,AU"); + add_srs_wkt (p, 6, + "THORITY[\"EPSG\",\"9105\"]],AUTHORITY[\"EPSG\",\"4819\"]"); + add_srs_wkt (p, 7, + "]"); + p = add_epsg_def (filter, first, last, 4820, "epsg", 4820, + "Segara (Jakarta)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=-403,684,41,0,0,0,0"); + add_proj4text (p, 1, + " +pm=jakarta +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Segara (Jakarta)\",DATUM[\"Gunung_Segara_Jakart"); + add_srs_wkt (p, 1, + "a\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7004\"]],TOWGS84[-403,684,41,0,0,0,0],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6820\"]],PRIMEM[\"Jakarta\",106.807"); + add_srs_wkt (p, 4, + "7194444444,AUTHORITY[\"EPSG\",\"8908\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4820\"]]"); + p = add_epsg_def (filter, first, last, 4821, "epsg", 4821, + "Voirol 1879 (Paris)"); + add_proj4text (p, 0, + "+proj=longlat +a=6378249.2 +b=6356515 +pm=paris +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Voirol 1879 (Paris)\",DATUM[\"Voirol_1879_Paris"); + add_srs_wkt (p, 1, + "\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.46602129"); + add_srs_wkt (p, 2, + "36265,AUTHORITY[\"EPSG\",\"7011\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "6821\"]],PRIMEM[\"Paris\",2.33722917,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8903\"]],UNIT[\"grad\",0.01570796326794897,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9105\"]],AUTHORITY[\"EPSG\",\"4821\"]]"); + p = add_epsg_def (filter, first, last, 4822, "epsg", 4822, + "New Beijing / 3-degree Gauss-Kruger CM 135E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"New Beijing / 3-degree Gauss-Kruger CM 135E\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"New Beijing\",DATUM[\"New_Beijing\",SPHEROID[\"K"); + add_srs_wkt (p, 2, + "rassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"1045\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4555\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",135],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"4822\"]]"); + p = add_epsg_def (filter, first, last, 4823, "epsg", 4823, + "Sao Tome"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Sao Tome\",DATUM[\"Sao_Tome\",SPHEROID[\"Intern"); + add_srs_wkt (p, 1, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"1044\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 4, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"4823\"]]"); + p = add_epsg_def (filter, first, last, 4824, "epsg", 4824, + "Principe"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Principe\",DATUM[\"Principe\",SPHEROID[\"Intern"); + add_srs_wkt (p, 1, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"1046\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 4, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"4824\"]]"); + p = add_epsg_def (filter, first, last, 4826, "epsg", 4826, + "WGS 84 / Cape Verde National"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=15 +lat_2=16.66666666666667 +lat_0=15.8"); + add_proj4text (p, 1, + "3333333333333 +lon_0=-24 +x_0=161587.83 +y_0=128511.202 "); + add_proj4text (p, 2, + "+datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / Cape Verde National\",GEOGCS[\"WGS 84\""); + add_srs_wkt (p, 1, + ",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2572"); + add_srs_wkt (p, 2, + "23563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 4, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION["); + add_srs_wkt (p, 6, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 7, + "rallel_1\",15],PARAMETER[\"standard_parallel_2\",16.6666"); + add_srs_wkt (p, 8, + "6666666667],PARAMETER[\"latitude_of_origin\",15.83333333"); + add_srs_wkt (p, 9, + "333333],PARAMETER[\"central_meridian\",-24],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",161587.83],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "128511.202],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"M\",EAST],AXIS[\"P\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"4826\"]]"); + p = add_epsg_def (filter, first, last, 4839, "epsg", 4839, + "ETRS89 / LCC Germany (N-E)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.66666666666666 +lat_2=53.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=51 +lon_0=10.5 +x_0=0 +y_0=0 +ellps=GRS80 +to"); + add_proj4text (p, 2, + "wgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / LCC Germany (N-E)\",GEOGCS[\"ETRS89\","); + add_srs_wkt (p, 1, + "DATUM[\"European_Terrestrial_Reference_System_1989\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",48.66666666666666],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 9, + "rallel_2\",53.66666666666666],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 10, + "igin\",51],PARAMETER[\"central_meridian\",10.5],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_easting\",0],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 12, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"4839\"]]"); + p = add_epsg_def (filter, first, last, 4855, "epsg", 4855, + "ETRS89 / NTM zone 5 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=5.5 +k=1 +x_0=100000 +y_0=10"); + add_proj4text (p, 1, + "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 5 (deprecated)\",GEOGCS[\"ETR"); + add_srs_wkt (p, 1, + "S89\",DATUM[\"European_Terrestrial_Reference_System_1989"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",5.5],PARAME"); + add_srs_wkt (p, 9, + "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",1000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "55\"]]"); + p = add_epsg_def (filter, first, last, 4856, "epsg", 4856, + "ETRS89 / NTM zone 6 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=6.5 +k=1 +x_0=100000 +y_0=10"); + add_proj4text (p, 1, + "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 6 (deprecated)\",GEOGCS[\"ETR"); + add_srs_wkt (p, 1, + "S89\",DATUM[\"European_Terrestrial_Reference_System_1989"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",6.5],PARAME"); + add_srs_wkt (p, 9, + "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",1000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "56\"]]"); + p = add_epsg_def (filter, first, last, 4857, "epsg", 4857, + "ETRS89 / NTM zone 7 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=7.5 +k=1 +x_0=100000 +y_0=10"); + add_proj4text (p, 1, + "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 7 (deprecated)\",GEOGCS[\"ETR"); + add_srs_wkt (p, 1, + "S89\",DATUM[\"European_Terrestrial_Reference_System_1989"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",7.5],PARAME"); + add_srs_wkt (p, 9, + "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",1000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "57\"]]"); + p = add_epsg_def (filter, first, last, 4858, "epsg", 4858, + "ETRS89 / NTM zone 8 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=8.5 +k=1 +x_0=100000 +y_0=10"); + add_proj4text (p, 1, + "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 8 (deprecated)\",GEOGCS[\"ETR"); + add_srs_wkt (p, 1, + "S89\",DATUM[\"European_Terrestrial_Reference_System_1989"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",8.5],PARAME"); + add_srs_wkt (p, 9, + "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",1000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "58\"]]"); + p = add_epsg_def (filter, first, last, 4859, "epsg", 4859, + "ETRS89 / NTM zone 9 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9.5 +k=1 +x_0=100000 +y_0=10"); + add_proj4text (p, 1, + "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 9 (deprecated)\",GEOGCS[\"ETR"); + add_srs_wkt (p, 1, + "S89\",DATUM[\"European_Terrestrial_Reference_System_1989"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",9.5],PARAME"); + add_srs_wkt (p, 9, + "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",1000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "59\"]]"); + p = add_epsg_def (filter, first, last, 4860, "epsg", 4860, + "ETRS89 / NTM zone 10 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=10.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 10 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",10.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "60\"]]"); + p = add_epsg_def (filter, first, last, 4861, "epsg", 4861, + "ETRS89 / NTM zone 11 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=11.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 11 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",11.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "61\"]]"); + p = add_epsg_def (filter, first, last, 4862, "epsg", 4862, + "ETRS89 / NTM zone 12 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 12 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",12.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "62\"]]"); + p = add_epsg_def (filter, first, last, 4863, "epsg", 4863, + "ETRS89 / NTM zone 13 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=13.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 13 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",13.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "63\"]]"); + p = add_epsg_def (filter, first, last, 4864, "epsg", 4864, + "ETRS89 / NTM zone 14 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=14.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 14 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",14.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "64\"]]"); + p = add_epsg_def (filter, first, last, 4865, "epsg", 4865, + "ETRS89 / NTM zone 15 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 15 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",15.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "65\"]]"); + p = add_epsg_def (filter, first, last, 4866, "epsg", 4866, + "ETRS89 / NTM zone 16 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=16.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 16 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",16.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "66\"]]"); + p = add_epsg_def (filter, first, last, 4867, "epsg", 4867, + "ETRS89 / NTM zone 17 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=17.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 17 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",17.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "67\"]]"); + p = add_epsg_def (filter, first, last, 4868, "epsg", 4868, + "ETRS89 / NTM zone 18 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 18 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",18.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "68\"]]"); + p = add_epsg_def (filter, first, last, 4869, "epsg", 4869, + "ETRS89 / NTM zone 19 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=19.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 19 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",19.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "69\"]]"); + p = add_epsg_def (filter, first, last, 4870, "epsg", 4870, + "ETRS89 / NTM zone 20 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=20.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 20 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",20.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "70\"]]"); + p = add_epsg_def (filter, first, last, 4871, "epsg", 4871, + "ETRS89 / NTM zone 21 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 21 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",21.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "71\"]]"); + p = add_epsg_def (filter, first, last, 4872, "epsg", 4872, + "ETRS89 / NTM zone 22 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=22.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 22 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",22.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "72\"]]"); + p = add_epsg_def (filter, first, last, 4873, "epsg", 4873, + "ETRS89 / NTM zone 23 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=23.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 23 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",23.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "73\"]]"); + p = add_epsg_def (filter, first, last, 4874, "epsg", 4874, + "ETRS89 / NTM zone 24 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 24 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",24.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "74\"]]"); + p = add_epsg_def (filter, first, last, 4875, "epsg", 4875, + "ETRS89 / NTM zone 25 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=25.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 25 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",25.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "75\"]]"); + p = add_epsg_def (filter, first, last, 4876, "epsg", 4876, + "ETRS89 / NTM zone 26 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=26.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 26 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",26.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "76\"]]"); + p = add_epsg_def (filter, first, last, 4877, "epsg", 4877, + "ETRS89 / NTM zone 27 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 27 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",27.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "77\"]]"); + p = add_epsg_def (filter, first, last, 4878, "epsg", 4878, + "ETRS89 / NTM zone 28 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=28.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 28 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",28.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "78\"]]"); + p = add_epsg_def (filter, first, last, 4879, "epsg", 4879, + "ETRS89 / NTM zone 29 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=29.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 29 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",29.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "79\"]]"); + p = add_epsg_def (filter, first, last, 4880, "epsg", 4880, + "ETRS89 / NTM zone 30 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 30 (deprecated)\",GEOGCS[\"ET"); + add_srs_wkt (p, 1, + "RS89\",DATUM[\"European_Terrestrial_Reference_System_198"); + add_srs_wkt (p, 2, + "9\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",30.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"48"); + add_srs_wkt (p, 12, + "80\"]]"); + p = add_epsg_def (filter, first, last, 4901, "epsg", 4901, + "ATF (Paris)"); + add_proj4text (p, 0, + "+proj=longlat +a=6376523 +b=6355862.933255573 +pm=2.3372"); + add_proj4text (p, 1, + "08333333333 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"ATF (Paris)\",DATUM[\"Ancienne_Triangulation_Fr"); + add_srs_wkt (p, 1, + "ancaise_Paris\",SPHEROID[\"Plessis 1817\",6376523,308.64"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7027\"]],AUTHORITY[\"EPSG\",\"6901"); + add_srs_wkt (p, 3, + "\"]],PRIMEM[\"Paris RGS\",2.337208333333333,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8914\"]],UNIT[\"grad\",0.01570796326794897,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9105\"]],AUTHORITY[\"EPSG\",\"4901\"]]"); + p = add_epsg_def (filter, first, last, 4902, "epsg", 4902, + "NDG (Paris)"); + add_proj4text (p, 0, + "+proj=longlat +a=6376523 +b=6355862.933255573 +pm=paris "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NDG (Paris)\",DATUM[\"Nord_de_Guerre_Paris\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Plessis 1817\",6376523,308.64,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 2, + ",\"7027\"]],AUTHORITY[\"EPSG\",\"6902\"]],PRIMEM[\"Paris"); + add_srs_wkt (p, 3, + "\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\""); + add_srs_wkt (p, 4, + ",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"4902\"]]"); + p = add_epsg_def (filter, first, last, 4903, "epsg", 4903, + "Madrid 1870 (Madrid)"); + add_proj4text (p, 0, + "+proj=longlat +a=6378298.3 +b=6356657.142669561 +pm=madr"); + add_proj4text (p, 1, + "id +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Madrid 1870 (Madrid)\",DATUM[\"Madrid_1870_Madr"); + add_srs_wkt (p, 1, + "id\",SPHEROID[\"Struve 1860\",6378298.3,294.73,AUTHORITY"); + add_srs_wkt (p, 2, + "[\"EPSG\",\"7028\"]],AUTHORITY[\"EPSG\",\"6903\"]],PRIME"); + add_srs_wkt (p, 3, + "M[\"Madrid\",-3.687938888888889,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 4, + "5\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4903\"]]"); + p = add_epsg_def (filter, first, last, 4904, "epsg", 4904, + "Lisbon 1890 (Lisbon)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=508.088,-191.042,56"); + add_proj4text (p, 1, + "5.223,0,0,0,0 +pm=lisbon +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Lisbon 1890 (Lisbon)\",DATUM[\"Lisbon_1890_Lisb"); + add_srs_wkt (p, 1, + "on\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AU"); + add_srs_wkt (p, 2, + "THORITY[\"EPSG\",\"7004\"]],TOWGS84[508.088,-191.042,565"); + add_srs_wkt (p, 3, + ".223,0,0,0,0],AUTHORITY[\"EPSG\",\"6904\"]],PRIMEM[\"Lis"); + add_srs_wkt (p, 4, + "bon\",-9.131906111111112,AUTHORITY[\"EPSG\",\"8902\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4904\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_25.c b/src/spatialite/src/srsinit/epsg_inlined_25.c new file mode 100644 index 0000000..de9cfd8 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_25.c @@ -0,0 +1,3204 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_25 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 5013, "epsg", 5013, + "PTRA08"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"PTRA08\",DATUM[\"Autonomous_Regions_of_Portugal"); + add_srs_wkt (p, 1, + "_2008\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"1041\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5013\""); + add_srs_wkt (p, 6, + "]]"); + p = add_epsg_def (filter, first, last, 5014, "epsg", 5014, + "PTRA08 / UTM zone 25N"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PTRA08 / UTM zone 25N\",GEOGCS[\"PTRA08\",DATUM"); + add_srs_wkt (p, 1, + "[\"Autonomous_Regions_of_Portugal_2008\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1041\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5013\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",-33],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"5014\"]]"); + p = add_epsg_def (filter, first, last, 5015, "epsg", 5015, + "PTRA08 / UTM zone 26N"); + add_proj4text (p, 0, + "+proj=utm +zone=26 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PTRA08 / UTM zone 26N\",GEOGCS[\"PTRA08\",DATUM"); + add_srs_wkt (p, 1, + "[\"Autonomous_Regions_of_Portugal_2008\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1041\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5013\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",-27],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"5015\"]]"); + p = add_epsg_def (filter, first, last, 5016, "epsg", 5016, + "PTRA08 / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PTRA08 / UTM zone 28N\",GEOGCS[\"PTRA08\",DATUM"); + add_srs_wkt (p, 1, + "[\"Autonomous_Regions_of_Portugal_2008\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1041\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5013\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",-15],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"5016\"]]"); + p = add_epsg_def (filter, first, last, 5018, "epsg", 5018, + "Lisbon / Portuguese Grid New"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111"); + add_proj4text (p, 1, + "111112 +k=1 +x_0=0 +y_0=0 +ellps=intl +towgs84=-304.046,"); + add_proj4text (p, 2, + "-60.576,103.64,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Lisbon / Portuguese Grid New\",GEOGCS[\"Lisbon\""); + add_srs_wkt (p, 1, + ",DATUM[\"Lisbon_1937\",SPHEROID[\"International 1924\",6"); + add_srs_wkt (p, 2, + "378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-304.04"); + add_srs_wkt (p, 3, + "6,-60.576,103.64,0,0,0,0],AUTHORITY[\"EPSG\",\"6207\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4207\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",39.6666"); + add_srs_wkt (p, 8, + "6666666666],PARAMETER[\"central_meridian\",-8.1319061111"); + add_srs_wkt (p, 9, + "11112],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5018\"]]"); + p = add_epsg_def (filter, first, last, 5041, "epsg", 5041, + "WGS 84 / UPS North (E,N)"); + add_proj4text (p, 0, + "+proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0="); + add_proj4text (p, 1, + "2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UPS North (E,N)\",GEOGCS[\"WGS 84\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2572235"); + add_srs_wkt (p, 2, + "63,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"63"); + add_srs_wkt (p, 3, + "26\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"P"); + add_srs_wkt (p, 6, + "olar_Stereographic\"],PARAMETER[\"latitude_of_origin\",9"); + add_srs_wkt (p, 7, + "0],PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_f"); + add_srs_wkt (p, 8, + "actor\",0.994],PARAMETER[\"false_easting\",2000000],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_northing\",2000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 11, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"5041\"]]"); + p = add_epsg_def (filter, first, last, 5042, "epsg", 5042, + "WGS 84 / UPS South (E,N)"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_"); + add_proj4text (p, 1, + "0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UPS South (E,N)\",GEOGCS[\"WGS 84\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2572235"); + add_srs_wkt (p, 2, + "63,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"63"); + add_srs_wkt (p, 3, + "26\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"P"); + add_srs_wkt (p, 6, + "olar_Stereographic\"],PARAMETER[\"latitude_of_origin\",-"); + add_srs_wkt (p, 7, + "90],PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_"); + add_srs_wkt (p, 8, + "factor\",0.994],PARAMETER[\"false_easting\",2000000],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_northing\",2000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 10, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"5042\"]]"); + p = add_epsg_def (filter, first, last, 5048, "epsg", 5048, + "ETRS89 / TM35FIN(N,E)"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / TM35FIN(N,E)\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",27],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5048\"]]"); + p = add_epsg_def (filter, first, last, 5069, "epsg", 5069, + "NAD27 / Conus Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +"); + add_proj4text (p, 1, + "x_0=0 +y_0=0 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Conus Albers\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],PARAMET"); + add_srs_wkt (p, 7, + "ER[\"standard_parallel_1\",29.5],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",45.5],PARAMETER[\"latitude_of_center\",23],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"longitude_of_center\",-96],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5069\"]]"); + p = add_epsg_def (filter, first, last, 5070, "epsg", 5070, + "NAD83 / Conus Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +"); + add_proj4text (p, 1, + "x_0=0 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Conus Albers\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Albers_Conic_Equal_A"); + add_srs_wkt (p, 7, + "rea\"],PARAMETER[\"standard_parallel_1\",29.5],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_2\",45.5],PARAMETER[\"latitude_of_c"); + add_srs_wkt (p, 9, + "enter\",23],PARAMETER[\"longitude_of_center\",-96],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",0],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 11, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5070\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 5071, "epsg", 5071, + "NAD83(HARN) / Conus Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +"); + add_proj4text (p, 1, + "x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Conus Albers\",GEOGCS[\"NAD83(HAR"); + add_srs_wkt (p, 1, + "N)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Albers_Conic_Equal_Area\"],PARAMETER[\"standard_par"); + add_srs_wkt (p, 8, + "allel_1\",29.5],PARAMETER[\"standard_parallel_2\",45.5],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_center\",23],PARAMETER[\"longitu"); + add_srs_wkt (p, 10, + "de_of_center\",-96],PARAMETER[\"false_easting\",0],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"5071\"]]"); + p = add_epsg_def (filter, first, last, 5072, "epsg", 5072, + "NAD83(NSRS2007) / Conus Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +"); + add_proj4text (p, 1, + "x_0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Conus Albers\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"47"); + add_srs_wkt (p, 7, + "59\"]],PROJECTION[\"Albers_Conic_Equal_Area\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",29.5],PARAMETER[\"standard_para"); + add_srs_wkt (p, 9, + "llel_2\",45.5],PARAMETER[\"latitude_of_center\",23],PARA"); + add_srs_wkt (p, 10, + "METER[\"longitude_of_center\",-96],PARAMETER[\"false_eas"); + add_srs_wkt (p, 11, + "ting\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 12, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"5072\"]]"); + p = add_epsg_def (filter, first, last, 5105, "epsg", 5105, + "ETRS89 / NTM zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=5.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 5\",GEOGCS[\"ETRS89\",DATUM[\""); + add_srs_wkt (p, 1, + "European_Terrestrial_Reference_System_1989\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",58],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",5.5],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",1],PARAMETER[\"false_easting\",100000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5105\"]]"); + p = add_epsg_def (filter, first, last, 5106, "epsg", 5106, + "ETRS89 / NTM zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=6.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 6\",GEOGCS[\"ETRS89\",DATUM[\""); + add_srs_wkt (p, 1, + "European_Terrestrial_Reference_System_1989\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",58],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",6.5],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",1],PARAMETER[\"false_easting\",100000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5106\"]]"); + p = add_epsg_def (filter, first, last, 5107, "epsg", 5107, + "ETRS89 / NTM zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=7.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 7\",GEOGCS[\"ETRS89\",DATUM[\""); + add_srs_wkt (p, 1, + "European_Terrestrial_Reference_System_1989\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",58],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",7.5],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",1],PARAMETER[\"false_easting\",100000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5107\"]]"); + p = add_epsg_def (filter, first, last, 5108, "epsg", 5108, + "ETRS89 / NTM zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=8.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 8\",GEOGCS[\"ETRS89\",DATUM[\""); + add_srs_wkt (p, 1, + "European_Terrestrial_Reference_System_1989\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",58],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",8.5],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",1],PARAMETER[\"false_easting\",100000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5108\"]]"); + p = add_epsg_def (filter, first, last, 5109, "epsg", 5109, + "ETRS89 / NTM zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=9.5 +k=1 +x_0=100000 +y_0=1"); + add_proj4text (p, 1, + "000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 9\",GEOGCS[\"ETRS89\",DATUM[\""); + add_srs_wkt (p, 1, + "European_Terrestrial_Reference_System_1989\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",58],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",9.5],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",1],PARAMETER[\"false_easting\",100000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5109\"]]"); + p = add_epsg_def (filter, first, last, 5110, "epsg", 5110, + "ETRS89 / NTM zone 10"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=10.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 10\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",10.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5110\"]]"); + p = add_epsg_def (filter, first, last, 5111, "epsg", 5111, + "ETRS89 / NTM zone 11"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=11.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 11\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",11.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5111\"]]"); + p = add_epsg_def (filter, first, last, 5112, "epsg", 5112, + "ETRS89 / NTM zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=12.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 12\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",12.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5112\"]]"); + p = add_epsg_def (filter, first, last, 5113, "epsg", 5113, + "ETRS89 / NTM zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=13.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 13\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",13.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5113\"]]"); + p = add_epsg_def (filter, first, last, 5114, "epsg", 5114, + "ETRS89 / NTM zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=14.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 14\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",14.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5114\"]]"); + p = add_epsg_def (filter, first, last, 5115, "epsg", 5115, + "ETRS89 / NTM zone 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=15.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 15\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",15.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5115\"]]"); + p = add_epsg_def (filter, first, last, 5116, "epsg", 5116, + "ETRS89 / NTM zone 16"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=16.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 16\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",16.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5116\"]]"); + p = add_epsg_def (filter, first, last, 5117, "epsg", 5117, + "ETRS89 / NTM zone 17"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=17.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 17\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",17.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5117\"]]"); + p = add_epsg_def (filter, first, last, 5118, "epsg", 5118, + "ETRS89 / NTM zone 18"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=18.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 18\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",18.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5118\"]]"); + p = add_epsg_def (filter, first, last, 5119, "epsg", 5119, + "ETRS89 / NTM zone 19"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=19.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 19\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",19.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5119\"]]"); + p = add_epsg_def (filter, first, last, 5120, "epsg", 5120, + "ETRS89 / NTM zone 20"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=20.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 20\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",20.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5120\"]]"); + p = add_epsg_def (filter, first, last, 5121, "epsg", 5121, + "ETRS89 / NTM zone 21"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=21.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 21\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",21.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5121\"]]"); + p = add_epsg_def (filter, first, last, 5122, "epsg", 5122, + "ETRS89 / NTM zone 22"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=22.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 22\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",22.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5122\"]]"); + p = add_epsg_def (filter, first, last, 5123, "epsg", 5123, + "ETRS89 / NTM zone 23"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=23.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 23\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",23.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5123\"]]"); + p = add_epsg_def (filter, first, last, 5124, "epsg", 5124, + "ETRS89 / NTM zone 24"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=24.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 24\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",24.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5124\"]]"); + p = add_epsg_def (filter, first, last, 5125, "epsg", 5125, + "ETRS89 / NTM zone 25"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=25.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 25\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",25.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5125\"]]"); + p = add_epsg_def (filter, first, last, 5126, "epsg", 5126, + "ETRS89 / NTM zone 26"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=26.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 26\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",26.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5126\"]]"); + p = add_epsg_def (filter, first, last, 5127, "epsg", 5127, + "ETRS89 / NTM zone 27"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=27.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 27\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",27.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5127\"]]"); + p = add_epsg_def (filter, first, last, 5128, "epsg", 5128, + "ETRS89 / NTM zone 28"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=28.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 28\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",28.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5128\"]]"); + p = add_epsg_def (filter, first, last, 5129, "epsg", 5129, + "ETRS89 / NTM zone 29"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=29.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 29\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",29.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5129\"]]"); + p = add_epsg_def (filter, first, last, 5130, "epsg", 5130, + "ETRS89 / NTM zone 30"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=30.5 +k=1 +x_0=100000 +y_0="); + add_proj4text (p, 1, + "1000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / NTM zone 30\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "8],PARAMETER[\"central_meridian\",30.5],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",100000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5130\"]]"); + p = add_epsg_def (filter, first, last, 5132, "epsg", 5132, + "Tokyo 1892"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Tokyo 1892\",DATUM[\"Tokyo_1892\",SPHEROID[\"Be"); + add_srs_wkt (p, 1, + "ssel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7004\"]],AUTHORITY[\"EPSG\",\"1048\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 3, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 4, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"5132\"]]"); + p = add_epsg_def (filter, first, last, 5167, "epsg", 5167, + "Korean 1985 / East Sea Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=5"); + add_proj4text (p, 1, + "00000 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korean 1985 / East Sea Belt\",GEOGCS[\"Korean 1"); + add_srs_wkt (p, 1, + "985\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel 1841"); + add_srs_wkt (p, 2, + "\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4162\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",38],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",131],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_"); + add_srs_wkt (p, 9, + "easting\",200000],PARAMETER[\"false_northing\",500000],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"5167\"]]"); + p = add_epsg_def (filter, first, last, 5168, "epsg", 5168, + "Korean 1985 / Central Belt Jeju"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=5"); + add_proj4text (p, 1, + "50000 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korean 1985 / Central Belt Jeju\",GEOGCS[\"Kore"); + add_srs_wkt (p, 1, + "an 1985\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel "); + add_srs_wkt (p, 2, + "1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4162\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",38],PARAMETER[\"central_meri"); + add_srs_wkt (p, 8, + "dian\",127],PARAMETER[\"scale_factor\",1],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",200000],PARAMETER[\"false_northing\",55000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"5168\"]]"); + p = add_epsg_def (filter, first, last, 5169, "epsg", 5169, + "Tokyo 1892 / Korea West Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=5"); + add_proj4text (p, 1, + "00000 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo 1892 / Korea West Belt\",GEOGCS[\"Tokyo 1"); + add_srs_wkt (p, 1, + "892\",DATUM[\"Tokyo_1892\",SPHEROID[\"Bessel 1841\",6377"); + add_srs_wkt (p, 2, + "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"1048\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5132\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",38],PARAMETER[\"central_meridian\",125],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",200000],PARAMETER[\"false_northing\",500000],UNIT[\"met"); + add_srs_wkt (p, 10, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"5169\"]]"); + p = add_epsg_def (filter, first, last, 5170, "epsg", 5170, + "Tokyo 1892 / Korea Central Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=5"); + add_proj4text (p, 1, + "00000 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo 1892 / Korea Central Belt\",GEOGCS[\"Toky"); + add_srs_wkt (p, 1, + "o 1892\",DATUM[\"Tokyo_1892\",SPHEROID[\"Bessel 1841\",6"); + add_srs_wkt (p, 2, + "377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1048\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"51"); + add_srs_wkt (p, 6, + "32\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 7, + "atitude_of_origin\",38],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 8, + "27],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 9, + "ing\",200000],PARAMETER[\"false_northing\",500000],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"5170\"]]"); + p = add_epsg_def (filter, first, last, 5171, "epsg", 5171, + "Tokyo 1892 / Korea East Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=5"); + add_proj4text (p, 1, + "00000 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo 1892 / Korea East Belt\",GEOGCS[\"Tokyo 1"); + add_srs_wkt (p, 1, + "892\",DATUM[\"Tokyo_1892\",SPHEROID[\"Bessel 1841\",6377"); + add_srs_wkt (p, 2, + "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"1048\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5132\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",38],PARAMETER[\"central_meridian\",129],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",200000],PARAMETER[\"false_northing\",500000],UNIT[\"met"); + add_srs_wkt (p, 10, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"5171\"]]"); + p = add_epsg_def (filter, first, last, 5172, "epsg", 5172, + "Tokyo 1892 / Korea East Sea Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=5"); + add_proj4text (p, 1, + "00000 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo 1892 / Korea East Sea Belt\",GEOGCS[\"Tok"); + add_srs_wkt (p, 1, + "yo 1892\",DATUM[\"Tokyo_1892\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt (p, 2, + "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"1048\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5"); + add_srs_wkt (p, 6, + "132\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",38],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 8, + "131],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 9, + "ting\",200000],PARAMETER[\"false_northing\",500000],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"5172\"]]"); + p = add_epsg_def (filter, first, last, 5173, "epsg", 5173, + "Korean 1985 / Modified West Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=125.0028902777778 +k=1 +x_0"); + add_proj4text (p, 1, + "=200000 +y_0=500000 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korean 1985 / Modified West Belt\",GEOGCS[\"Kor"); + add_srs_wkt (p, 1, + "ean 1985\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel"); + add_srs_wkt (p, 2, + " 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "4\"]],AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4162\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"latitude_of_origin\",38],PARAMETER[\"central_mer"); + add_srs_wkt (p, 8, + "idian\",125.0028902777778],PARAMETER[\"scale_factor\",1]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",200000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"5173\"]]"); + p = add_epsg_def (filter, first, last, 5174, "epsg", 5174, + "Korean 1985 / Modified Central Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0"); + add_proj4text (p, 1, + "=200000 +y_0=500000 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korean 1985 / Modified Central Belt\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Korean 1985\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bes"); + add_srs_wkt (p, 2, + "sel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7004\"]],AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4162\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",38],PARAMETER[\"central_m"); + add_srs_wkt (p, 8, + "eridian\",127.0028902777778],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "1],PARAMETER[\"false_easting\",200000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"5174\"]]"); + p = add_epsg_def (filter, first, last, 5175, "epsg", 5175, + "Korean 1985 / Modified Central Belt Jeju"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=127.0028902777778 +k=1 +x_0"); + add_proj4text (p, 1, + "=200000 +y_0=550000 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korean 1985 / Modified Central Belt Jeju\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Korean 1985\",DATUM[\"Korean_Datum_1985\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7004\"]],AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4162\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",38],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",127.0028902777778],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",1],PARAMETER[\"false_easting\",200000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",550000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5175\"]]"); + p = add_epsg_def (filter, first, last, 5176, "epsg", 5176, + "Korean 1985 / Modified East Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=129.0028902777778 +k=1 +x_0"); + add_proj4text (p, 1, + "=200000 +y_0=500000 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korean 1985 / Modified East Belt\",GEOGCS[\"Kor"); + add_srs_wkt (p, 1, + "ean 1985\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel"); + add_srs_wkt (p, 2, + " 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "4\"]],AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4162\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"latitude_of_origin\",38],PARAMETER[\"central_mer"); + add_srs_wkt (p, 8, + "idian\",129.0028902777778],PARAMETER[\"scale_factor\",1]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",200000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"5176\"]]"); + p = add_epsg_def (filter, first, last, 5177, "epsg", 5177, + "Korean 1985 / Modified East Sea Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=131.0028902777778 +k=1 +x_0"); + add_proj4text (p, 1, + "=200000 +y_0=500000 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korean 1985 / Modified East Sea Belt\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Korean 1985\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bes"); + add_srs_wkt (p, 2, + "sel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7004\"]],AUTHORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4162\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",38],PARAMETER[\"central_m"); + add_srs_wkt (p, 8, + "eridian\",131.0028902777778],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "1],PARAMETER[\"false_easting\",200000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"5177\"]]"); + p = add_epsg_def (filter, first, last, 5178, "epsg", 5178, + "Korean 1985 / Unified CS"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=100000"); + add_proj4text (p, 1, + "0 +y_0=2000000 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korean 1985 / Unified CS\",GEOGCS[\"Korean 1985"); + add_srs_wkt (p, 1, + "\",DATUM[\"Korean_Datum_1985\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt (p, 2, + "6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6162\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "162\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",38],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 8, + "127.5],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",1000000],PARAMETER[\"false_northing\",2000"); + add_srs_wkt (p, 10, + "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"5178\"]]"); + p = add_epsg_def (filter, first, last, 5179, "epsg", 5179, + "Korea 2000 / Unified CS"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=127.5 +k=0.9996 +x_0=100000"); + add_proj4text (p, 1, + "0 +y_0=2000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korea 2000 / Unified CS\",GEOGCS[\"Korea 2000\""); + add_srs_wkt (p, 1, + ",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",38],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",127.5],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",1000000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",2000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5179\"]]"); + p = add_epsg_def (filter, first, last, 5180, "epsg", 5180, + "Korea 2000 / West Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=5"); + add_proj4text (p, 1, + "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korea 2000 / West Belt\",GEOGCS[\"Korea 2000\","); + add_srs_wkt (p, 1, + "DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",38],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",125],PARAMETER[\"scale_factor\",1]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",200000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"5180\"]]"); + p = add_epsg_def (filter, first, last, 5181, "epsg", 5181, + "Korea 2000 / Central Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=5"); + add_proj4text (p, 1, + "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korea 2000 / Central Belt\",GEOGCS[\"Korea 2000"); + add_srs_wkt (p, 1, + "\",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",38],PARAME"); + add_srs_wkt (p, 8, + "TER[\"central_meridian\",127],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",1],PARAMETER[\"false_easting\",200000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"5181\"]]"); + p = add_epsg_def (filter, first, last, 5182, "epsg", 5182, + "Korea 2000 / Central Belt Jeju"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=5"); + add_proj4text (p, 1, + "50000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korea 2000 / Central Belt Jeju\",GEOGCS[\"Korea"); + add_srs_wkt (p, 1, + " 2000\",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",38],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",127],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",1],PARAMETER[\"false_easting\",200000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",550000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5182\"]]"); + p = add_epsg_def (filter, first, last, 5183, "epsg", 5183, + "Korea 2000 / East Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=5"); + add_proj4text (p, 1, + "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korea 2000 / East Belt\",GEOGCS[\"Korea 2000\","); + add_srs_wkt (p, 1, + "DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",38],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",129],PARAMETER[\"scale_factor\",1]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",200000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"5183\"]]"); + p = add_epsg_def (filter, first, last, 5184, "epsg", 5184, + "Korea 2000 / East Sea Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=5"); + add_proj4text (p, 1, + "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korea 2000 / East Sea Belt\",GEOGCS[\"Korea 200"); + add_srs_wkt (p, 1, + "0\",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",38],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",131],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",1],PARAMETER[\"false_easting\",200000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"5184\"]]"); + p = add_epsg_def (filter, first, last, 5185, "epsg", 5185, + "Korea 2000 / West Belt 2010"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=125 +k=1 +x_0=200000 +y_0=6"); + add_proj4text (p, 1, + "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korea 2000 / West Belt 2010\",GEOGCS[\"Korea 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",38],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",125],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",200000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",600000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AUTHORITY[\"EPSG\",\"5185\"]]"); + p = add_epsg_def (filter, first, last, 5186, "epsg", 5186, + "Korea 2000 / Central Belt 2010"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=127 +k=1 +x_0=200000 +y_0=6"); + add_proj4text (p, 1, + "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korea 2000 / Central Belt 2010\",GEOGCS[\"Korea"); + add_srs_wkt (p, 1, + " 2000\",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",38],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",127],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",1],PARAMETER[\"false_easting\",200000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",600000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5186\"]]"); + p = add_epsg_def (filter, first, last, 5187, "epsg", 5187, + "Korea 2000 / East Belt 2010"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=129 +k=1 +x_0=200000 +y_0=6"); + add_proj4text (p, 1, + "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korea 2000 / East Belt 2010\",GEOGCS[\"Korea 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",38],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",129],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",200000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",600000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AUTHORITY[\"EPSG\",\"5187\"]]"); + p = add_epsg_def (filter, first, last, 5188, "epsg", 5188, + "Korea 2000 / East Sea Belt 2010"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=131 +k=1 +x_0=200000 +y_0=6"); + add_proj4text (p, 1, + "00000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Korea 2000 / East Sea Belt 2010\",GEOGCS[\"Kore"); + add_srs_wkt (p, 1, + "a 2000\",DATUM[\"Geocentric_datum_of_Korea\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6737\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4737\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",38],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",131],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",1],PARAMETER[\"false_easting\",200000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",600000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5188\"]]"); + p = add_epsg_def (filter, first, last, 5221, "epsg", 5221, + "S-JTSK (Ferro) / Krovak East North"); + add_proj4text (p, 0, + "+proj=krovak +lat_0=49.5 +lon_0=42.5 +alpha=30.288139722"); + add_proj4text (p, 1, + "22222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=589"); + add_proj4text (p, 2, + ",76,480,0,0,0,0 +pm=ferro +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"S-JTSK (Ferro) / Krovak East North\",GEOGCS[\"S"); + add_srs_wkt (p, 1, + "-JTSK (Ferro)\",DATUM[\"System_Jednotne_Trigonometricke_"); + add_srs_wkt (p, 2, + "Site_Katastralni_Ferro\",SPHEROID[\"Bessel 1841\",637739"); + add_srs_wkt (p, 3, + "7.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84["); + add_srs_wkt (p, 4, + "589,76,480,0,0,0,0],AUTHORITY[\"EPSG\",\"6818\"]],PRIMEM"); + add_srs_wkt (p, 5, + "[\"Ferro\",-17.66666666666667,AUTHORITY[\"EPSG\",\"8909\""); + add_srs_wkt (p, 6, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4818\"]],PROJECTION[\"K"); + add_srs_wkt (p, 8, + "rovak\"],PARAMETER[\"latitude_of_center\",49.5],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"longitude_of_center\",42.5],PARAMETER[\"azimuth\",30"); + add_srs_wkt (p, 10, + ".28813972222222],PARAMETER[\"pseudo_standard_parallel_1\""); + add_srs_wkt (p, 11, + ",78.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 13, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 14, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5221\"]]"); + p = add_epsg_def (filter, first, last, 5223, "epsg", 5223, + "WGS 84 / Gabon TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=500000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / Gabon TM\",GEOGCS[\"WGS 84\",DATUM[\"W"); + add_srs_wkt (p, 1, + "GS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],"); + add_srs_wkt (p, 3, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 4, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 5, + "2\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 6, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 7, + "METER[\"central_meridian\",12],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 8, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_northing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"5223\"]]"); + p = add_epsg_def (filter, first, last, 5228, "epsg", 5228, + "S-JTSK/05"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=572.213,85.334,461."); + add_proj4text (p, 1, + "94,4.9732,1.529,5.2484,3.5378 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"S-JTSK/05\",DATUM[\"System_Jednotne_Trigonometr"); + add_srs_wkt (p, 1, + "icke_Site_Katastralni_05\",SPHEROID[\"Bessel 1841\",6377"); + add_srs_wkt (p, 2, + "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[572.213,85.334,461.94,4.9732,1.529,5.2484,3.5378],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"1052\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"522"); + add_srs_wkt (p, 7, + "8\"]]"); + p = add_epsg_def (filter, first, last, 5229, "epsg", 5229, + "S-JTSK/05 (Ferro)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +towgs84=572.213,85.334,461."); + add_proj4text (p, 1, + "94,4.9732,1.529,5.2484,3.5378 +pm=ferro +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"S-JTSK/05 (Ferro)\",DATUM[\"System_Jednotne_Tri"); + add_srs_wkt (p, 1, + "gonometricke_Site_Katastralni_05_Ferro\",SPHEROID[\"Bess"); + add_srs_wkt (p, 2, + "el 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "004\"]],TOWGS84[572.213,85.334,461.94,4.9732,1.529,5.248"); + add_srs_wkt (p, 4, + "4,3.5378],AUTHORITY[\"EPSG\",\"1055\"]],PRIMEM[\"Ferro\""); + add_srs_wkt (p, 5, + ",-17.66666666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\""); + add_srs_wkt (p, 6, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 7, + "],AUTHORITY[\"EPSG\",\"5229\"]]"); + p = add_epsg_def (filter, first, last, 5233, "epsg", 5233, + "SLD99"); + add_proj4text (p, 0, + "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs8"); + add_proj4text (p, 1, + "4=-0.293,766.95,87.713,0.195704,1.69507,3.47302,-0.03933"); + add_proj4text (p, 2, + "8 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"SLD99\",DATUM[\"Sri_Lanka_Datum_1999\",SPHEROID"); + add_srs_wkt (p, 1, + "[\"Everest 1830 (1937 Adjustment)\",6377276.345,300.8017"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7015\"]],TOWGS84[-0.293,766.95,87."); + add_srs_wkt (p, 3, + "713,0.195704,1.69507,3.47302,-0.039338],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"1053\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5233\"]]"); + p = add_epsg_def (filter, first, last, 5234, "epsg", 5234, + "Kandawala / Sri Lanka Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=7.000480277777778 +lon_0=80.771711111"); + add_proj4text (p, 1, + "11112 +k=0.9999238418 +x_0=200000 +y_0=200000 +a=6377276"); + add_proj4text (p, 2, + ".345 +b=6356075.41314024 +towgs84=-97,787,86,0,0,0,0 +un"); + add_proj4text (p, 3, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kandawala / Sri Lanka Grid\",GEOGCS[\"Kandawala"); + add_srs_wkt (p, 1, + "\",DATUM[\"Kandawala\",SPHEROID[\"Everest 1830 (1937 Adj"); + add_srs_wkt (p, 2, + "ustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "5\"]],TOWGS84[-97,787,86,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "244\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4244\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "7.000480277777778],PARAMETER[\"central_meridian\",80.771"); + add_srs_wkt (p, 9, + "71111111112],PARAMETER[\"scale_factor\",0.9999238418],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",200000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 12, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 13, + "THORITY[\"EPSG\",\"5234\"]]"); + p = add_epsg_def (filter, first, last, 5235, "epsg", 5235, + "SLD99 / Sri Lanka Grid 1999"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=7.000471527777778 +lon_0=80.771713083"); + add_proj4text (p, 1, + "33334 +k=0.9999238418 +x_0=500000 +y_0=500000 +a=6377276"); + add_proj4text (p, 2, + ".345 +b=6356075.41314024 +towgs84=-0.293,766.95,87.713,0"); + add_proj4text (p, 3, + ".195704,1.69507,3.47302,-0.039338 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SLD99 / Sri Lanka Grid 1999\",GEOGCS[\"SLD99\","); + add_srs_wkt (p, 1, + "DATUM[\"Sri_Lanka_Datum_1999\",SPHEROID[\"Everest 1830 ("); + add_srs_wkt (p, 2, + "1937 Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7015\"]],TOWGS84[-0.293,766.95,87.713,0.195704,1.69"); + add_srs_wkt (p, 4, + "507,3.47302,-0.039338],AUTHORITY[\"EPSG\",\"1053\"]],PRI"); + add_srs_wkt (p, 5, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 6, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 7, + "],AUTHORITY[\"EPSG\",\"5233\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 8, + "Mercator\"],PARAMETER[\"latitude_of_origin\",7.000471527"); + add_srs_wkt (p, 9, + "777778],PARAMETER[\"central_meridian\",80.77171308333334"); + add_srs_wkt (p, 10, + "],PARAMETER[\"scale_factor\",0.9999238418],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_easting\",500000],PARAMETER[\"false_northing\",5000"); + add_srs_wkt (p, 12, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 13, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 14, + "PSG\",\"5235\"]]"); + p = add_epsg_def (filter, first, last, 5243, "epsg", 5243, + "ETRS89 / LCC Germany (E-N)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.66666666666666 +lat_2=53.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=51 +lon_0=10.5 +x_0=0 +y_0=0 +ellps=GRS80 +to"); + add_proj4text (p, 2, + "wgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / LCC Germany (E-N)\",GEOGCS[\"ETRS89\","); + add_srs_wkt (p, 1, + "DATUM[\"European_Terrestrial_Reference_System_1989\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",48.66666666666666],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 9, + "rallel_2\",53.66666666666666],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 10, + "igin\",51],PARAMETER[\"central_meridian\",10.5],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_easting\",0],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 12, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 13, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"5243\"]]"); + p = add_epsg_def (filter, first, last, 5246, "epsg", 5246, + "GDBD2009"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"GDBD2009\",DATUM[\"Geocentric_Datum_Brunei_Daru"); + add_srs_wkt (p, 1, + "ssalam_2009\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 2, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"1056\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "5246\"]]"); + p = add_epsg_def (filter, first, last, 5247, "epsg", 5247, + "GDBD2009 / Brunei BRSO"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31580995 +k=0.9"); + add_proj4text (p, 1, + "9984 +x_0=0 +y_0=0 +no_uoff +gamma=53.13010236111111 +el"); + add_proj4text (p, 2, + "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDBD2009 / Brunei BRSO\",GEOGCS[\"GDBD2009\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Geocentric_Datum_Brunei_Darussalam_2009\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"105"); + add_srs_wkt (p, 4, + "6\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"5246\"]],PROJECTION[\"H"); + add_srs_wkt (p, 7, + "otine_Oblique_Mercator\"],PARAMETER[\"latitude_of_center"); + add_srs_wkt (p, 8, + "\",4],PARAMETER[\"longitude_of_center\",115],PARAMETER[\""); + add_srs_wkt (p, 9, + "azimuth\",53.31580995],PARAMETER[\"rectified_grid_angle\""); + add_srs_wkt (p, 10, + ",53.13010236111111],PARAMETER[\"scale_factor\",0.99984],"); + add_srs_wkt (p, 11, + "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); + add_srs_wkt (p, 12, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 13, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 14, + "\"EPSG\",\"5247\"]]"); + p = add_epsg_def (filter, first, last, 5252, "epsg", 5252, + "TUREF"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"TUREF\",DATUM[\"Turkish_National_Reference_Fram"); + add_srs_wkt (p, 1, + "e\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]]"); + p = add_epsg_def (filter, first, last, 5253, "epsg", 5253, + "TUREF / TM27"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / TM27\",GEOGCS[\"TUREF\",DATUM[\"Turkish"); + add_srs_wkt (p, 1, + "_National_Reference_Frame\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"5252\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",27],PARAMETER[\"scale_factor\",1],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_easting\",500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"5253\"]]"); + p = add_epsg_def (filter, first, last, 5254, "epsg", 5254, + "TUREF / TM30"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / TM30\",GEOGCS[\"TUREF\",DATUM[\"Turkish"); + add_srs_wkt (p, 1, + "_National_Reference_Frame\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"5252\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",30],PARAMETER[\"scale_factor\",1],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_easting\",500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"5254\"]]"); + p = add_epsg_def (filter, first, last, 5255, "epsg", 5255, + "TUREF / TM33"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / TM33\",GEOGCS[\"TUREF\",DATUM[\"Turkish"); + add_srs_wkt (p, 1, + "_National_Reference_Frame\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"5252\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",33],PARAMETER[\"scale_factor\",1],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_easting\",500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"5255\"]]"); + p = add_epsg_def (filter, first, last, 5256, "epsg", 5256, + "TUREF / TM36"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / TM36\",GEOGCS[\"TUREF\",DATUM[\"Turkish"); + add_srs_wkt (p, 1, + "_National_Reference_Frame\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"5252\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",36],PARAMETER[\"scale_factor\",1],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_easting\",500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"5256\"]]"); + p = add_epsg_def (filter, first, last, 5257, "epsg", 5257, + "TUREF / TM39"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / TM39\",GEOGCS[\"TUREF\",DATUM[\"Turkish"); + add_srs_wkt (p, 1, + "_National_Reference_Frame\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"5252\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",39],PARAMETER[\"scale_factor\",1],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_easting\",500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"5257\"]]"); + p = add_epsg_def (filter, first, last, 5258, "epsg", 5258, + "TUREF / TM42"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / TM42\",GEOGCS[\"TUREF\",DATUM[\"Turkish"); + add_srs_wkt (p, 1, + "_National_Reference_Frame\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"5252\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",42],PARAMETER[\"scale_factor\",1],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_easting\",500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"5258\"]]"); + p = add_epsg_def (filter, first, last, 5259, "epsg", 5259, + "TUREF / TM45"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / TM45\",GEOGCS[\"TUREF\",DATUM[\"Turkish"); + add_srs_wkt (p, 1, + "_National_Reference_Frame\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"5252\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",45],PARAMETER[\"scale_factor\",1],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_easting\",500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"5259\"]]"); + p = add_epsg_def (filter, first, last, 5264, "epsg", 5264, + "DRUKREF 03"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"DRUKREF 03\",DATUM[\"Bhutan_National_Geodetic_D"); + add_srs_wkt (p, 1, + "atum\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 2, + "RITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"1058\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5264\"]]"); + p = add_epsg_def (filter, first, last, 5266, "epsg", 5266, + "DRUKREF 03 / Bhutan National Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90 +k=1 +x_0=250000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Bhutan National Grid\",GEOGCS[\"DR"); + add_srs_wkt (p, 1, + "UKREF 03\",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"1058\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"central_meridian\",90],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",1],PARAMETER[\"false_easting\",250000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"5266\"]]"); + p = add_epsg_def (filter, first, last, 5269, "epsg", 5269, + "TUREF / 3-degree Gauss-Kruger zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / 3-degree Gauss-Kruger zone 9\",GEOGCS[\""); + add_srs_wkt (p, 1, + "TUREF\",DATUM[\"Turkish_National_Reference_Frame\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",27],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",9500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5269\"]]"); + p = add_epsg_def (filter, first, last, 5270, "epsg", 5270, + "TUREF / 3-degree Gauss-Kruger zone 10"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / 3-degree Gauss-Kruger zone 10\",GEOGCS["); + add_srs_wkt (p, 1, + "\"TUREF\",DATUM[\"Turkish_National_Reference_Frame\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",30],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",1],PARAMETER[\"false_easting\",10500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5270\"]]"); + p = add_epsg_def (filter, first, last, 5271, "epsg", 5271, + "TUREF / 3-degree Gauss-Kruger zone 11"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / 3-degree Gauss-Kruger zone 11\",GEOGCS["); + add_srs_wkt (p, 1, + "\"TUREF\",DATUM[\"Turkish_National_Reference_Frame\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",33],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",1],PARAMETER[\"false_easting\",11500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5271\"]]"); + p = add_epsg_def (filter, first, last, 5272, "epsg", 5272, + "TUREF / 3-degree Gauss-Kruger zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / 3-degree Gauss-Kruger zone 12\",GEOGCS["); + add_srs_wkt (p, 1, + "\"TUREF\",DATUM[\"Turkish_National_Reference_Frame\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",36],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",1],PARAMETER[\"false_easting\",12500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5272\"]]"); + p = add_epsg_def (filter, first, last, 5273, "epsg", 5273, + "TUREF / 3-degree Gauss-Kruger zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / 3-degree Gauss-Kruger zone 13\",GEOGCS["); + add_srs_wkt (p, 1, + "\"TUREF\",DATUM[\"Turkish_National_Reference_Frame\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",39],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",1],PARAMETER[\"false_easting\",13500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5273\"]]"); + p = add_epsg_def (filter, first, last, 5274, "epsg", 5274, + "TUREF / 3-degree Gauss-Kruger zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=42 +k=1 +x_0=14500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / 3-degree Gauss-Kruger zone 14\",GEOGCS["); + add_srs_wkt (p, 1, + "\"TUREF\",DATUM[\"Turkish_National_Reference_Frame\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",42],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",1],PARAMETER[\"false_easting\",14500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5274\"]]"); + p = add_epsg_def (filter, first, last, 5275, "epsg", 5275, + "TUREF / 3-degree Gauss-Kruger zone 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=15500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / 3-degree Gauss-Kruger zone 15\",GEOGCS["); + add_srs_wkt (p, 1, + "\"TUREF\",DATUM[\"Turkish_National_Reference_Frame\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1057\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5252\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",45],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",1],PARAMETER[\"false_easting\",15500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5275\"]]"); + p = add_epsg_def (filter, first, last, 5292, "epsg", 5292, + "DRUKREF 03 / Bumthang TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90.73333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Bumthang TM\",GEOGCS[\"DRUKREF 03\""); + add_srs_wkt (p, 1, + ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",90.73333333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5292\"]]"); + p = add_epsg_def (filter, first, last, 5293, "epsg", 5293, + "DRUKREF 03 / Chhukha TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=89.55 +k=1 +x_0=250000 +y_0="); + add_proj4text (p, 1, + "-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); + add_proj4text (p, 2, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Chhukha TM\",GEOGCS[\"DRUKREF 03\""); + add_srs_wkt (p, 1, + ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",89.55],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",250000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"5293\"]]"); + p = add_epsg_def (filter, first, last, 5294, "epsg", 5294, + "DRUKREF 03 / Dagana TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=89.84999999999999 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Dagana TM\",GEOGCS[\"DRUKREF 03\","); + add_srs_wkt (p, 1, + "DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",89.85],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",250000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"5294\"]]"); + p = add_epsg_def (filter, first, last, 5295, "epsg", 5295, + "DRUKREF 03 / Gasa TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90.03333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Gasa TM\",GEOGCS[\"DRUKREF 03\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",90.03333333333333],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",1],PARAMETER[\"false_easting\",250000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"5295\"]]"); + p = add_epsg_def (filter, first, last, 5296, "epsg", 5296, + "DRUKREF 03 / Ha TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90.15000000000001 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Ha TM\",GEOGCS[\"DRUKREF 03\",DATU"); + add_srs_wkt (p, 1, + "M[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",90.15],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",1],PARAMETER[\"false_easting\",250000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"5296\"]]"); + p = add_epsg_def (filter, first, last, 5297, "epsg", 5297, + "DRUKREF 03 / Lhuentse TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=91.13333333333334 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Lhuentse TM\",GEOGCS[\"DRUKREF 03\""); + add_srs_wkt (p, 1, + ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",91.13333333333334],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5297\"]]"); + p = add_epsg_def (filter, first, last, 5298, "epsg", 5298, + "DRUKREF 03 / Mongar TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=91.23333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Mongar TM\",GEOGCS[\"DRUKREF 03\","); + add_srs_wkt (p, 1, + "DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",91.23333333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5298\"]]"); + p = add_epsg_def (filter, first, last, 5299, "epsg", 5299, + "DRUKREF 03 / Paro TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=89.34999999999999 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Paro TM\",GEOGCS[\"DRUKREF 03\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",89.35],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",1],PARAMETER[\"false_easting\",250000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"5299\"]]"); + p = add_epsg_def (filter, first, last, 5300, "epsg", 5300, + "DRUKREF 03 / Pemagatshel TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=91.34999999999999 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Pemagatshel TM\",GEOGCS[\"DRUKREF "); + add_srs_wkt (p, 1, + "03\",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",91.35],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",250000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"5300\"]]"); + p = add_epsg_def (filter, first, last, 5301, "epsg", 5301, + "DRUKREF 03 / Punakha TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=89.84999999999999 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Punakha TM\",GEOGCS[\"DRUKREF 03\""); + add_srs_wkt (p, 1, + ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",89.85],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",250000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"5301\"]]"); + p = add_epsg_def (filter, first, last, 5302, "epsg", 5302, + "DRUKREF 03 / Samdrup Jongkhar TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=91.56666666666666 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Samdrup Jongkhar TM\",GEOGCS[\"DRU"); + add_srs_wkt (p, 1, + "KREF 03\",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1058\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",91.56666666666666],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "250000],PARAMETER[\"false_northing\",-2500000],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5302\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 5303, "epsg", 5303, + "DRUKREF 03 / Samtse TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=89.06666666666666 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Samtse TM\",GEOGCS[\"DRUKREF 03\","); + add_srs_wkt (p, 1, + "DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",89.06666666666666],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5303\"]]"); + p = add_epsg_def (filter, first, last, 5304, "epsg", 5304, + "DRUKREF 03 / Sarpang TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90.26666666666667 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Sarpang TM\",GEOGCS[\"DRUKREF 03\""); + add_srs_wkt (p, 1, + ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",90.26666666666667],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5304\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_26.c b/src/spatialite/src/srsinit/epsg_inlined_26.c new file mode 100644 index 0000000..9fe42d9 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_26.c @@ -0,0 +1,3166 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_26 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 5305, "epsg", 5305, + "DRUKREF 03 / Thimphu TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=89.55 +k=1 +x_0=250000 +y_0="); + add_proj4text (p, 1, + "-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); + add_proj4text (p, 2, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Thimphu TM\",GEOGCS[\"DRUKREF 03\""); + add_srs_wkt (p, 1, + ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",89.55],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",250000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"5305\"]]"); + p = add_epsg_def (filter, first, last, 5306, "epsg", 5306, + "DRUKREF 03 / Trashigang TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=91.75 +k=1 +x_0=250000 +y_0="); + add_proj4text (p, 1, + "-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +n"); + add_proj4text (p, 2, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Trashigang TM\",GEOGCS[\"DRUKREF 0"); + add_srs_wkt (p, 1, + "3\",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",91.75],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",250000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"5306\"]]"); + p = add_epsg_def (filter, first, last, 5307, "epsg", 5307, + "DRUKREF 03 / Trongsa TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90.5 +k=1 +x_0=250000 +y_0=-"); + add_proj4text (p, 1, + "2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Trongsa TM\",GEOGCS[\"DRUKREF 03\""); + add_srs_wkt (p, 1, + ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",90.5],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",250000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",-2500000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"5307\"]]"); + p = add_epsg_def (filter, first, last, 5308, "epsg", 5308, + "DRUKREF 03 / Tsirang TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90.16666666666667 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Tsirang TM\",GEOGCS[\"DRUKREF 03\""); + add_srs_wkt (p, 1, + ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",90.16666666666667],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5308\"]]"); + p = add_epsg_def (filter, first, last, 5309, "epsg", 5309, + "DRUKREF 03 / Wangdue Phodrang TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90.11666666666666 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Wangdue Phodrang TM\",GEOGCS[\"DRU"); + add_srs_wkt (p, 1, + "KREF 03\",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1058\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",90.11666666666666],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "250000],PARAMETER[\"false_northing\",-2500000],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5309\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 5310, "epsg", 5310, + "DRUKREF 03 / Yangtse TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=91.56666666666666 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Yangtse TM\",GEOGCS[\"DRUKREF 03\""); + add_srs_wkt (p, 1, + ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",91.56666666666666],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5310\"]]"); + p = add_epsg_def (filter, first, last, 5311, "epsg", 5311, + "DRUKREF 03 / Zhemgang TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=90.86666666666666 +k=1 +x_0="); + add_proj4text (p, 1, + "250000 +y_0=-2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DRUKREF 03 / Zhemgang TM\",GEOGCS[\"DRUKREF 03\""); + add_srs_wkt (p, 1, + ",DATUM[\"Bhutan_National_Geodetic_Datum\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1058\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"5264\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",90.86666666666666],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",1],PARAMETER[\"false_easting\",250000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",-2500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5311\"]]"); + p = add_epsg_def (filter, first, last, 5316, "epsg", 5316, + "ETRS89 / Faroe TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-7 +k=0.999997 +x_0=200000 +"); + add_proj4text (p, 1, + "y_0=-6000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Faroe TM\",GEOGCS[\"ETRS89\",DATUM[\"E"); + add_srs_wkt (p, 1, + "uropean_Terrestrial_Reference_System_1989\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6258\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-7],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.999997],PARAMETER[\"false_easting\",200000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",-6000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"5316\"]]"); + p = add_epsg_def (filter, first, last, 5320, "epsg", 5320, + "NAD83 / Teranet Ontario Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.5 +lat_2=54.5 +lat_0=0 +lon_0=-84 +x"); + add_proj4text (p, 1, + "_0=1000000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Teranet Ontario Lambert\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",44.5],PARAMETER[\"standard_parallel_2\",54.5],PARAMETER"); + add_srs_wkt (p, 9, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",-84],PARAMETER[\"false_easting\",1000000],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"5320\"]]"); + p = add_epsg_def (filter, first, last, 5321, "epsg", 5321, + "NAD83(CSRS) / Teranet Ontario Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.5 +lat_2=54.5 +lat_0=0 +lon_0=-84 +x"); + add_proj4text (p, 1, + "_0=1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / Teranet Ontario Lambert\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_1\",44.5],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 9, + "rallel_2\",54.5],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"central_meridian\",-84],PARAMETER[\"false_easti"); + add_srs_wkt (p, 11, + "ng\",1000000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 12, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5321\"]]"); + p = add_epsg_def (filter, first, last, 5324, "epsg", 5324, + "ISN2004"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"ISN2004\",DATUM[\"Islands_Net_2004\",SPHEROID[\""); + add_srs_wkt (p, 1, + "GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "19\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1060\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"5324\"]]"); + p = add_epsg_def (filter, first, last, 5325, "epsg", 5325, + "ISN2004 / Lambert 2004"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=64.25 +lat_2=65.75 +lat_0=65 +lon_0=-19"); + add_proj4text (p, 1, + " +x_0=1700000 +y_0=300000 +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ISN2004 / Lambert 2004\",GEOGCS[\"ISN2004\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Islands_Net_2004\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 2, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 3, + "0,0,0,0],AUTHORITY[\"EPSG\",\"1060\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"5324\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 7, + "SP\"],PARAMETER[\"standard_parallel_1\",64.25],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_2\",65.75],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 9, + "origin\",65],PARAMETER[\"central_meridian\",-19],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",1700000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",300000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 12, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"5325\"]]"); + p = add_epsg_def (filter, first, last, 5329, "epsg", 5329, + "Segara (Jakarta) / NEIEZ"); + add_proj4text (p, 0, + "+proj=merc +lon_0=3.192280555555556 +k=0.997 +x_0=390000"); + add_proj4text (p, 1, + "0 +y_0=900000 +ellps=bessel +towgs84=-403,684,41,0,0,0,0"); + add_proj4text (p, 2, + " +pm=jakarta +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Segara (Jakarta) / NEIEZ\",GEOGCS[\"Segara (Jak"); + add_srs_wkt (p, 1, + "arta)\",DATUM[\"Gunung_Segara_Jakarta\",SPHEROID[\"Besse"); + add_srs_wkt (p, 2, + "l 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "04\"]],TOWGS84[-403,684,41,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6820\"]],PRIMEM[\"Jakarta\",106.8077194444444,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8908\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4820\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Mercator_1SP\"],PARAMETER[\"central_meri"); + add_srs_wkt (p, 8, + "dian\",3.192280555555556],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "97],PARAMETER[\"false_easting\",3900000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",900000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"5329\"]]"); + p = add_epsg_def (filter, first, last, 5330, "epsg", 5330, + "Batavia (Jakarta) / NEIEZ"); + add_proj4text (p, 0, + "+proj=merc +lon_0=3.192280555555556 +k=0.997 +x_0=390000"); + add_proj4text (p, 1, + "0 +y_0=900000 +ellps=bessel +towgs84=-377,681,-50,0,0,0,"); + add_proj4text (p, 2, + "0 +pm=jakarta +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Batavia (Jakarta) / NEIEZ\",GEOGCS[\"Batavia (J"); + add_srs_wkt (p, 1, + "akarta)\",DATUM[\"Batavia_Jakarta\",SPHEROID[\"Bessel 18"); + add_srs_wkt (p, 2, + "41\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-377,681,-50,0,0,0,0],AUTHORITY[\"EPSG\",\"68"); + add_srs_wkt (p, 4, + "13\"]],PRIMEM[\"Jakarta\",106.8077194444444,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8908\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4813\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Mercator_1SP\"],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 8, + "an\",3.192280555555556],PARAMETER[\"scale_factor\",0.997"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",3900000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",900000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"5330\"]]"); + p = add_epsg_def (filter, first, last, 5331, "epsg", 5331, + "Makassar (Jakarta) / NEIEZ"); + add_proj4text (p, 0, + "+proj=merc +lon_0=3.192280555555556 +k=0.997 +x_0=390000"); + add_proj4text (p, 1, + "0 +y_0=900000 +ellps=bessel +towgs84=-587.8,519.75,145.7"); + add_proj4text (p, 2, + "6,0,0,0,0 +pm=jakarta +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Makassar (Jakarta) / NEIEZ\",GEOGCS[\"Makassar "); + add_srs_wkt (p, 1, + "(Jakarta)\",DATUM[\"Makassar_Jakarta\",SPHEROID[\"Bessel"); + add_srs_wkt (p, 2, + " 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[-587.8,519.75,145.76,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6804\"]],PRIMEM[\"Jakarta\",106.8077194444444,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8908\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4804\"]],PROJECTION[\"Mercator_1SP\"],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",3.192280555555556],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.997],PARAMETER[\"false_easting\",3900000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",900000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"5331\"]]"); + p = add_epsg_def (filter, first, last, 5337, "epsg", 5337, + "Aratu / UTM zone 25S"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +south +ellps=intl +towgs84=-151.99,2"); + add_proj4text (p, 1, + "87.04,-147.45,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Aratu / UTM zone 25S\",GEOGCS[\"Aratu\",DATUM[\""); + add_srs_wkt (p, 1, + "Aratu\",SPHEROID[\"International 1924\",6378388,297,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7022\"]],TOWGS84[-151.99,287.04,-147.45"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6208\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4208\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 8, + "meridian\",-33],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"5337\"]]"); + p = add_epsg_def (filter, first, last, 5340, "epsg", 5340, + "POSGAR 2007"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"POSGAR 2007\",DATUM[\"Posiciones_Geodesicas_Arg"); + add_srs_wkt (p, 1, + "entinas_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 2, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"1062\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "5340\"]]"); + p = add_epsg_def (filter, first, last, 5343, "epsg", 5343, + "POSGAR 2007 / Argentina 1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 2007 / Argentina 1\",GEOGCS[\"POSGAR 200"); + add_srs_wkt (p, 1, + "7\",DATUM[\"Posiciones_Geodesicas_Argentinas_2007\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"1062\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5340\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",-90],PARAMETER[\"central_meridian\",-72],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",1],PARAMETER[\"false_easting\",1500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5343\"]]"); + p = add_epsg_def (filter, first, last, 5344, "epsg", 5344, + "POSGAR 2007 / Argentina 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 2007 / Argentina 2\",GEOGCS[\"POSGAR 200"); + add_srs_wkt (p, 1, + "7\",DATUM[\"Posiciones_Geodesicas_Argentinas_2007\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"1062\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5340\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",-90],PARAMETER[\"central_meridian\",-69],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",1],PARAMETER[\"false_easting\",2500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5344\"]]"); + p = add_epsg_def (filter, first, last, 5345, "epsg", 5345, + "POSGAR 2007 / Argentina 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 2007 / Argentina 3\",GEOGCS[\"POSGAR 200"); + add_srs_wkt (p, 1, + "7\",DATUM[\"Posiciones_Geodesicas_Argentinas_2007\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"1062\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5340\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",-90],PARAMETER[\"central_meridian\",-66],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",1],PARAMETER[\"false_easting\",3500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5345\"]]"); + p = add_epsg_def (filter, first, last, 5346, "epsg", 5346, + "POSGAR 2007 / Argentina 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 2007 / Argentina 4\",GEOGCS[\"POSGAR 200"); + add_srs_wkt (p, 1, + "7\",DATUM[\"Posiciones_Geodesicas_Argentinas_2007\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"1062\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5340\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",-90],PARAMETER[\"central_meridian\",-63],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",1],PARAMETER[\"false_easting\",4500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5346\"]]"); + p = add_epsg_def (filter, first, last, 5347, "epsg", 5347, + "POSGAR 2007 / Argentina 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 2007 / Argentina 5\",GEOGCS[\"POSGAR 200"); + add_srs_wkt (p, 1, + "7\",DATUM[\"Posiciones_Geodesicas_Argentinas_2007\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"1062\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5340\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",-90],PARAMETER[\"central_meridian\",-60],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",1],PARAMETER[\"false_easting\",5500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5347\"]]"); + p = add_epsg_def (filter, first, last, 5348, "epsg", 5348, + "POSGAR 2007 / Argentina 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 2007 / Argentina 6\",GEOGCS[\"POSGAR 200"); + add_srs_wkt (p, 1, + "7\",DATUM[\"Posiciones_Geodesicas_Argentinas_2007\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"1062\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5340\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",-90],PARAMETER[\"central_meridian\",-57],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",1],PARAMETER[\"false_easting\",6500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5348\"]]"); + p = add_epsg_def (filter, first, last, 5349, "epsg", 5349, + "POSGAR 2007 / Argentina 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 2007 / Argentina 7\",GEOGCS[\"POSGAR 200"); + add_srs_wkt (p, 1, + "7\",DATUM[\"Posiciones_Geodesicas_Argentinas_2007\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"1062\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5340\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",-90],PARAMETER[\"central_meridian\",-54],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",1],PARAMETER[\"false_easting\",7500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5349\"]]"); + p = add_epsg_def (filter, first, last, 5354, "epsg", 5354, + "MARGEN"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"MARGEN\",DATUM[\"Marco_Geodesico_Nacional\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"1063\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5354\"]]"); + p = add_epsg_def (filter, first, last, 5355, "epsg", 5355, + "MARGEN / UTM zone 20S"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MARGEN / UTM zone 20S\",GEOGCS[\"MARGEN\",DATUM"); + add_srs_wkt (p, 1, + "[\"Marco_Geodesico_Nacional\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1063\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"5354\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-63],PARAMETER[\"scale_factor\",0.9996],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"5355\"]]"); + p = add_epsg_def (filter, first, last, 5356, "epsg", 5356, + "MARGEN / UTM zone 19S"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MARGEN / UTM zone 19S\",GEOGCS[\"MARGEN\",DATUM"); + add_srs_wkt (p, 1, + "[\"Marco_Geodesico_Nacional\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1063\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"5354\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-69],PARAMETER[\"scale_factor\",0.9996],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"5356\"]]"); + p = add_epsg_def (filter, first, last, 5357, "epsg", 5357, + "MARGEN / UTM zone 21S"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MARGEN / UTM zone 21S\",GEOGCS[\"MARGEN\",DATUM"); + add_srs_wkt (p, 1, + "[\"Marco_Geodesico_Nacional\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1063\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"5354\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-57],PARAMETER[\"scale_factor\",0.9996],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"5357\"]]"); + p = add_epsg_def (filter, first, last, 5360, "epsg", 5360, + "SIRGAS-Chile"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"SIRGAS-Chile\",DATUM[\"SIRGAS_Chile\",SPHEROID["); + add_srs_wkt (p, 1, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 2, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"106"); + add_srs_wkt (p, 3, + "4\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"5360\"]]"); + p = add_epsg_def (filter, first, last, 5361, "epsg", 5361, + "SIRGAS-Chile / UTM zone 19S"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS-Chile / UTM zone 19S\",GEOGCS[\"SIRGAS-C"); + add_srs_wkt (p, 1, + "hile\",DATUM[\"SIRGAS_Chile\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1064\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"5360\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-69],PARAMETER[\"scale_factor\",0.9996],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"5361\"]]"); + p = add_epsg_def (filter, first, last, 5362, "epsg", 5362, + "SIRGAS-Chile / UTM zone 18S"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS-Chile / UTM zone 18S\",GEOGCS[\"SIRGAS-C"); + add_srs_wkt (p, 1, + "hile\",DATUM[\"SIRGAS_Chile\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1064\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"5360\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-75],PARAMETER[\"scale_factor\",0.9996],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"5362\"]]"); + p = add_epsg_def (filter, first, last, 5365, "epsg", 5365, + "CR05"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"CR05\",DATUM[\"Costa_Rica_2005\",SPHEROID[\"WGS"); + add_srs_wkt (p, 1, + " 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]"); + add_srs_wkt (p, 2, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1065\"]],P"); + add_srs_wkt (p, 3, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 4, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 5, + "\"]],AUTHORITY[\"EPSG\",\"5365\"]]"); + p = add_epsg_def (filter, first, last, 5367, "epsg", 5367, + "CR05 / CRTM05"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=500000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"CR05 / CRTM05\",GEOGCS[\"CR05\",DATUM[\"Costa_R"); + add_srs_wkt (p, 1, + "ica_2005\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"1065\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5365\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",-84],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_east"); + add_srs_wkt (p, 9, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 10, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"5367\"]]"); + p = add_epsg_def (filter, first, last, 5371, "epsg", 5371, + "MACARIO SOLIS"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"MACARIO SOLIS\",DATUM[\"Sistema_Geodesico_Nacio"); + add_srs_wkt (p, 1, + "nal_de_Panama_MACARIO_SOLIS\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1066\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"5371\"]]"); + p = add_epsg_def (filter, first, last, 5373, "epsg", 5373, + "Peru96"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Peru96\",DATUM[\"Peru96\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 1, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 2, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1067\"]],PRIMEM"); + add_srs_wkt (p, 3, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 4, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"5373\"]]"); + p = add_epsg_def (filter, first, last, 5381, "epsg", 5381, + "SIRGAS-ROU98"); + add_proj4text (p, 0, + "+proj=longlat +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"SIRGAS-ROU98\",DATUM[\"SIRGAS_ROU98\",SPHEROID["); + add_srs_wkt (p, 1, + "\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 2, + "30\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1068\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"5381\"]]"); + p = add_epsg_def (filter, first, last, 5382, "epsg", 5382, + "SIRGAS-ROU98 / UTM zone 21S"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +south +ellps=WGS84 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS-ROU98 / UTM zone 21S\",GEOGCS[\"SIRGAS-R"); + add_srs_wkt (p, 1, + "OU98\",DATUM[\"SIRGAS_ROU98\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1068\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"5381\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-57],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"5382\"]]"); + p = add_epsg_def (filter, first, last, 5383, "epsg", 5383, + "SIRGAS-ROU98 / UTM zone 22S"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +south +ellps=WGS84 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS-ROU98 / UTM zone 22S\",GEOGCS[\"SIRGAS-R"); + add_srs_wkt (p, 1, + "OU98\",DATUM[\"SIRGAS_ROU98\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1068\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"5381\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-51],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"5383\"]]"); + p = add_epsg_def (filter, first, last, 5387, "epsg", 5387, + "Peru96 / UTM zone 18S"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Peru96 / UTM zone 18S\",GEOGCS[\"Peru96\",DATUM"); + add_srs_wkt (p, 1, + "[\"Peru96\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1067\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"53"); + add_srs_wkt (p, 6, + "73\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 7, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-7"); + add_srs_wkt (p, 8, + "5],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 9, + "easting\",500000],PARAMETER[\"false_northing\",10000000]"); + add_srs_wkt (p, 10, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E"); + add_srs_wkt (p, 11, + "asting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"5387\"]]"); + p = add_epsg_def (filter, first, last, 5388, "epsg", 5388, + "Peru96 / UTM zone 17S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Peru96 / UTM zone 17S (deprecated)\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "eru96\",DATUM[\"Peru96\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"1067\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"5373\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 8, + "meridian\",-81],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 11, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"5388\"]]"); + p = add_epsg_def (filter, first, last, 5389, "epsg", 5389, + "Peru96 / UTM zone 19S"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Peru96 / UTM zone 19S\",GEOGCS[\"Peru96\",DATUM"); + add_srs_wkt (p, 1, + "[\"Peru96\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1067\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"53"); + add_srs_wkt (p, 6, + "73\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 7, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-6"); + add_srs_wkt (p, 8, + "9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 9, + "easting\",500000],PARAMETER[\"false_northing\",10000000]"); + add_srs_wkt (p, 10, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E"); + add_srs_wkt (p, 11, + "asting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"5389\"]]"); + p = add_epsg_def (filter, first, last, 5393, "epsg", 5393, + "SIRGAS_ES2007.8"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"SIRGAS_ES2007.8\",DATUM[\"SIRGAS_ES2007_8\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"1069\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5393\"]]"); + p = add_epsg_def (filter, first, last, 5396, "epsg", 5396, + "SIRGAS 2000 / UTM zone 26S"); + add_proj4text (p, 0, + "+proj=utm +zone=26 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 26S\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-27],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"5396\"]]"); + p = add_epsg_def (filter, first, last, 5451, "epsg", 5451, + "Ocotepeque 1935"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +towgs84=213.11,9.37,-74.95,"); + add_proj4text (p, 1, + "0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Ocotepeque 1935\",DATUM[\"Ocotepeque_1935\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0"); + add_srs_wkt (p, 3, + ",0],AUTHORITY[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"5451\"]]"); + p = add_epsg_def (filter, first, last, 5456, "epsg", 5456, + "Ocotepeque 1935 / Costa Rica Norte"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=10.46666666666667 +lat_0=10.46666666666"); + add_proj4text (p, 1, + "667 +lon_0=-84.33333333333333 +k_0=0.99995696 +x_0=50000"); + add_proj4text (p, 2, + "0 +y_0=271820.522 +ellps=clrk66 +towgs84=213.11,9.37,-74"); + add_proj4text (p, 3, + ".95,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Ocotepeque 1935 / Costa Rica Norte\",GEOGCS[\"O"); + add_srs_wkt (p, 1, + "cotepeque 1935\",DATUM[\"Ocotepeque_1935\",SPHEROID[\"Cl"); + add_srs_wkt (p, 2, + "arke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5451\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",10.46666666666667],PARAMETER[\"c"); + add_srs_wkt (p, 9, + "entral_meridian\",-84.33333333333333],PARAMETER[\"scale_"); + add_srs_wkt (p, 10, + "factor\",0.99995696],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",271820.522],UNIT[\"metre\""); + add_srs_wkt (p, 12, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"5456\"]]"); + p = add_epsg_def (filter, first, last, 5457, "epsg", 5457, + "Ocotepeque 1935 / Costa Rica Sur"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=9 +lat_0=9 +lon_0=-83.66666666666667 +k"); + add_proj4text (p, 1, + "_0=0.99995696 +x_0=500000 +y_0=327987.436 +ellps=clrk66 "); + add_proj4text (p, 2, + "+towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Ocotepeque 1935 / Costa Rica Sur\",GEOGCS[\"Oco"); + add_srs_wkt (p, 1, + "tepeque 1935\",DATUM[\"Ocotepeque_1935\",SPHEROID[\"Clar"); + add_srs_wkt (p, 2, + "ke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5451\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",9],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "83.66666666666667],PARAMETER[\"scale_factor\",0.99995696"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",327987.436],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"5457\"]]"); + p = add_epsg_def (filter, first, last, 5458, "epsg", 5458, + "Ocotepeque 1935 / Guatemala Norte (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666"); + add_proj4text (p, 1, + "667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=50000"); + add_proj4text (p, 2, + "0 +y_0=292209.579 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Ocotepeque 1935 / Guatemala Norte (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"NAD27\",DATUM[\"North_American_Datum_1927\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4267\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "16.81666666666667],PARAMETER[\"central_meridian\",-90.33"); + add_srs_wkt (p, 9, + "333333333333],PARAMETER[\"scale_factor\",0.99992226],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",292209.579],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"5458\"]]"); + p = add_epsg_def (filter, first, last, 5459, "epsg", 5459, + "Ocotepeque 1935 / Guatemala Sur"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333"); + add_proj4text (p, 1, + "333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +ellps=c"); + add_proj4text (p, 2, + "lrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Ocotepeque 1935 / Guatemala Sur\",GEOGCS[\"Ocot"); + add_srs_wkt (p, 1, + "epeque 1935\",DATUM[\"Ocotepeque_1935\",SPHEROID[\"Clark"); + add_srs_wkt (p, 2, + "e 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5451\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",14.9],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-90.33333333333333],PARAMETER[\"scale_factor\",0.999899"); + add_srs_wkt (p, 10, + "06],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_northing\",325992.681],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"5459\"]]"); + p = add_epsg_def (filter, first, last, 5460, "epsg", 5460, + "Ocotepeque 1935 / El Salvador Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=13.78333333333333 +lat_0=13.78333333333"); + add_proj4text (p, 1, + "333 +lon_0=-89 +k_0=0.99996704 +x_0=500000 +y_0=295809.1"); + add_proj4text (p, 2, + "84 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +un"); + add_proj4text (p, 3, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Ocotepeque 1935 / El Salvador Lambert\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Ocotepeque 1935\",DATUM[\"Ocotepeque_1935\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"545"); + add_srs_wkt (p, 7, + "1\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",13.78333333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"central_meridian\",-89],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 10, + "9996704],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",295809.184],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"5460\"]]"); + p = add_epsg_def (filter, first, last, 5461, "epsg", 5461, + "Ocotepeque 1935 / Nicaragua Norte"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=13.86666666666667 +lat_0=13.86666666666"); + add_proj4text (p, 1, + "667 +lon_0=-85.5 +k_0=0.99990314 +x_0=500000 +y_0=359891"); + add_proj4text (p, 2, + ".816 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0,0,0,0 +"); + add_proj4text (p, 3, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Ocotepeque 1935 / Nicaragua Norte\",GEOGCS[\"Oc"); + add_srs_wkt (p, 1, + "otepeque 1935\",DATUM[\"Ocotepeque_1935\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5451\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",13.86666666666667],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",-85.5],PARAMETER[\"scale_factor\",0.99990"); + add_srs_wkt (p, 10, + "314],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",359891.816],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"5461\"]]"); + p = add_epsg_def (filter, first, last, 5462, "epsg", 5462, + "Ocotepeque 1935 / Nicaragua Sur"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=11.73333333333333 +lat_0=11.73333333333"); + add_proj4text (p, 1, + "333 +lon_0=-85.5 +k_0=0.9999222800000001 +x_0=500000 +y_"); + add_proj4text (p, 2, + "0=288876.327 +ellps=clrk66 +towgs84=213.11,9.37,-74.95,0"); + add_proj4text (p, 3, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Ocotepeque 1935 / Nicaragua Sur\",GEOGCS[\"Ocot"); + add_srs_wkt (p, 1, + "epeque 1935\",DATUM[\"Ocotepeque_1935\",SPHEROID[\"Clark"); + add_srs_wkt (p, 2, + "e 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5451\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",11.73333333333333],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",-85.5],PARAMETER[\"scale_factor\",0.99992"); + add_srs_wkt (p, 10, + "228],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",288876.327],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"5462\"]]"); + p = add_epsg_def (filter, first, last, 5463, "epsg", 5463, + "SAD69 / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=aust_SA +towgs84=-57,1,-41,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 17N\",GEOGCS[\"SAD69\",DATUM[\""); + add_srs_wkt (p, 1, + "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); + add_srs_wkt (p, 2, + "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-81],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"5463\"]]"); + p = add_epsg_def (filter, first, last, 5464, "epsg", 5464, + "Sibun Gorge 1922"); + add_proj4text (p, 0, + "+proj=longlat +a=6378293.645208759 +b=6356617.987679838 "); + add_proj4text (p, 1, + "+no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Sibun Gorge 1922\",DATUM[\"Sibun_Gorge_1922\",S"); + add_srs_wkt (p, 1, + "PHEROID[\"Clarke 1858\",6378293.645208759,294.2606763692"); + add_srs_wkt (p, 2, + "569,AUTHORITY[\"EPSG\",\"7007\"]],AUTHORITY[\"EPSG\",\"1"); + add_srs_wkt (p, 3, + "071\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 4, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"5464\"]]"); + p = add_epsg_def (filter, first, last, 5466, "epsg", 5466, + "Sibun Gorge 1922 / Colony Grid (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=17.06124194444444 +lon_0=-88.6318575 "); + add_proj4text (p, 1, + "+k=1 +x_0=66220.02833082761 +y_0=135779.5099885299 +a=63"); + add_proj4text (p, 2, + "78293.645208759 +b=6356617.987679838 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Sibun Gorge 1922 / Colony Grid (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Sibun Gorge 1922\",DATUM[\"Sibun_Gorge_1922\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"Clarke 1858\",6378293.645208759,294.26067636925"); + add_srs_wkt (p, 3, + "69,AUTHORITY[\"EPSG\",\"7007\"]],AUTHORITY[\"EPSG\",\"10"); + add_srs_wkt (p, 4, + "71\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"5464\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",1"); + add_srs_wkt (p, 8, + "7.06124194444444],PARAMETER[\"central_meridian\",-88.631"); + add_srs_wkt (p, 9, + "8575],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",66220.02833082761],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "135779.5099885299],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"5466\"]]"); + p = add_epsg_def (filter, first, last, 5467, "epsg", 5467, + "Panama-Colon 1911"); + add_proj4text (p, 0, + "+proj=longlat +ellps=clrk66 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Panama-Colon 1911\",DATUM[\"Panama_Colon_1911\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"Clarke 1866\",6378206.4,294.9786982139006,AU"); + add_srs_wkt (p, 2, + "THORITY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"1072\"]"); + add_srs_wkt (p, 3, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 4, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 5, + "122\"]],AUTHORITY[\"EPSG\",\"5467\"]]"); + p = add_epsg_def (filter, first, last, 5469, "epsg", 5469, + "Panama-Colon 1911 / Panama Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=8.416666666666666 +lat_0=8.416666666666"); + add_proj4text (p, 1, + "666 +lon_0=-80 +k_0=0.99989909 +x_0=500000 +y_0=294865.3"); + add_proj4text (p, 2, + "03 +ellps=clrk66 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Panama-Colon 1911 / Panama Lambert\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "anama-Colon 1911\",DATUM[\"Panama_Colon_1911\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"1072\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"5467\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",8.416666"); + add_srs_wkt (p, 8, + "666666666],PARAMETER[\"central_meridian\",-80],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.99989909],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",500000],PARAMETER[\"false_northing\",294865.303],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 12, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5469\"]]"); + p = add_epsg_def (filter, first, last, 5472, "epsg", 5472, + "Panama-Colon 1911 / Panama Polyconic"); + add_proj4text (p, 0, + "+proj=poly +lat_0=8.25 +lon_0=-81 +x_0=914391.7962 +y_0="); + add_proj4text (p, 1, + "999404.7217154861 +ellps=clrk66 +to_meter=0.9143917962 +"); + add_proj4text (p, 2, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Panama-Colon 1911 / Panama Polyconic\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Panama-Colon 1911\",DATUM[\"Panama_Colon_1911\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"1072\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"5467\"]],PROJECTION[\"Polyconic\"],PAR"); + add_srs_wkt (p, 7, + "AMETER[\"latitude_of_origin\",8.25],PARAMETER[\"central_"); + add_srs_wkt (p, 8, + "meridian\",-81],PARAMETER[\"false_easting\",1000000],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_northing\",1092972.1],UNIT[\"Clarke's yar"); + add_srs_wkt (p, 10, + "d\",0.9143917962,AUTHORITY[\"EPSG\",\"9037\"]],AXIS[\"Ea"); + add_srs_wkt (p, 11, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"5472\"]]"); + p = add_epsg_def (filter, first, last, 5479, "epsg", 5479, + "RSRGD2000 / MSLC2000"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-76.66666666666667 +lat_2=-79.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-78 +lon_0=163 +x_0=7000000 +y_0=5000000 +e"); + add_proj4text (p, 2, + "llps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RSRGD2000 / MSLC2000\",GEOGCS[\"RSRGD2000\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Ross_Sea_Region_Geodetic_Datum_2000\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6764\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4764\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",-76.66666666666667],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",-79.33333333333333],PARAMETER[\"latitude_of_origin\",-7"); + add_srs_wkt (p, 10, + "8],PARAMETER[\"central_meridian\",163],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",7000000],PARAMETER[\"false_northing\",5000000"); + add_srs_wkt (p, 12, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"5479\"]]"); + p = add_epsg_def (filter, first, last, 5480, "epsg", 5480, + "RSRGD2000 / BCLC2000"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-73.66666666666667 +lat_2=-75.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-74.5 +lon_0=165 +x_0=5000000 +y_0=3000000 "); + add_proj4text (p, 2, + "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RSRGD2000 / BCLC2000\",GEOGCS[\"RSRGD2000\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Ross_Sea_Region_Geodetic_Datum_2000\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6764\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4764\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",-73.66666666666667],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",-75.33333333333333],PARAMETER[\"latitude_of_origin\",-7"); + add_srs_wkt (p, 10, + "4.5],PARAMETER[\"central_meridian\",165],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_easting\",5000000],PARAMETER[\"false_northing\",30000"); + add_srs_wkt (p, 12, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"5480\"]]"); + p = add_epsg_def (filter, first, last, 5481, "epsg", 5481, + "RSRGD2000 / PCLC2000"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=-70.66666666666667 +lat_2=-72.333333333"); + add_proj4text (p, 1, + "33333 +lat_0=-71.5 +lon_0=166 +x_0=3000000 +y_0=1000000 "); + add_proj4text (p, 2, + "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RSRGD2000 / PCLC2000\",GEOGCS[\"RSRGD2000\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Ross_Sea_Region_Geodetic_Datum_2000\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6764\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4764\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",-70.66666666666667],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",-72.33333333333333],PARAMETER[\"latitude_of_origin\",-7"); + add_srs_wkt (p, 10, + "1.5],PARAMETER[\"central_meridian\",166],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_easting\",3000000],PARAMETER[\"false_northing\",10000"); + add_srs_wkt (p, 12, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"5481\"]]"); + p = add_epsg_def (filter, first, last, 5482, "epsg", 5482, + "RSRGD2000 / RSPS2000"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=180 +k=0.994 +"); + add_proj4text (p, 1, + "x_0=5000000 +y_0=1000000 +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 2, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RSRGD2000 / RSPS2000\",GEOGCS[\"RSRGD2000\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Ross_Sea_Region_Geodetic_Datum_2000\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6764\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4764\"]],PROJECTION[\"Polar"); + add_srs_wkt (p, 7, + "_Stereographic\"],PARAMETER[\"latitude_of_origin\",-90],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",180],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.994],PARAMETER[\"false_easting\",5000000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5482\"]]"); + p = add_epsg_def (filter, first, last, 5489, "epsg", 5489, + "RGAF09"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RGAF09\",DATUM[\"Reseau_Geodesique_des_Antilles"); + add_srs_wkt (p, 1, + "_Francaises_2009\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 2, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 3, + ",0],AUTHORITY[\"EPSG\",\"1073\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"5489\"]]"); + p = add_epsg_def (filter, first, last, 5490, "epsg", 5490, + "RGAF09 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGAF09 / UTM zone 20N\",GEOGCS[\"RGAF09\",DATUM"); + add_srs_wkt (p, 1, + "[\"Reseau_Geodesique_des_Antilles_Francaises_2009\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"1073\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5489\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",0],PARAMETER[\"central_meridian\",-63],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"5490\"]]"); + p = add_epsg_def (filter, first, last, 5513, "epsg", 5513, + "S-JTSK / Krovak"); + add_proj4text (p, 0, + "+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha"); + add_proj4text (p, 1, + "=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel"); + add_proj4text (p, 2, + " +towgs84=589,76,480,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"S-JTSK / Krovak\",GEOGCS[\"S-JTSK\",DATUM[\"Sys"); + add_srs_wkt (p, 1, + "tem_Jednotne_Trigonometricke_Site_Katastralni\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7004\"]],TOWGS84[589,76,480,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6156\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4156\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Krovak\"],PARAMETER[\"latitude_of_center\",49."); + add_srs_wkt (p, 8, + "5],PARAMETER[\"longitude_of_center\",24.83333333333333],"); + add_srs_wkt (p, 9, + "PARAMETER[\"azimuth\",30.28813972222222],PARAMETER[\"pse"); + add_srs_wkt (p, 10, + "udo_standard_parallel_1\",78.5],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 11, + "\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9001\"]],AXIS[\"X\",SOUTH],AXIS[\"Y\",WEST],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"5513\"]]"); + p = add_epsg_def (filter, first, last, 5514, "epsg", 5514, + "S-JTSK / Krovak East North"); + add_proj4text (p, 0, + "+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha"); + add_proj4text (p, 1, + "=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel"); + add_proj4text (p, 2, + " +towgs84=589,76,480,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"S-JTSK / Krovak East North\",GEOGCS[\"S-JTSK\","); + add_srs_wkt (p, 1, + "DATUM[\"System_Jednotne_Trigonometricke_Site_Katastralni"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7004\"]],TOWGS84[589,76,480,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6156\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "156\"]],PROJECTION[\"Krovak\"],PARAMETER[\"latitude_of_c"); + add_srs_wkt (p, 8, + "enter\",49.5],PARAMETER[\"longitude_of_center\",24.83333"); + add_srs_wkt (p, 9, + "333333333],PARAMETER[\"azimuth\",30.28813972222222],PARA"); + add_srs_wkt (p, 10, + "METER[\"pseudo_standard_parallel_1\",78.5],PARAMETER[\"s"); + add_srs_wkt (p, 11, + "cale_factor\",0.9999],PARAMETER[\"false_easting\",0],PAR"); + add_srs_wkt (p, 12, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 14, + "UTHORITY[\"EPSG\",\"5514\"]]"); + p = add_epsg_def (filter, first, last, 5518, "epsg", 5518, + "CI1971 / Chatham Islands Map Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=350000 +y"); + add_proj4text (p, 1, + "_0=650000 +ellps=intl +towgs84=175,-38,113,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CI1971 / Chatham Islands Map Grid\",GEOGCS[\"Ch"); + add_srs_wkt (p, 1, + "atham Islands 1971\",DATUM[\"Chatham_Islands_Datum_1971\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7022\"]],TOWGS84[175,-38,113,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6672\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4672\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",-44],PARAMETER[\"central_meridian\",-176.5"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",350000],PARAMETER[\"false_northing\",650000],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"5518\"]]"); + p = add_epsg_def (filter, first, last, 5519, "epsg", 5519, + "CI1979 / Chatham Islands Map Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-44 +lon_0=-176.5 +k=1 +x_0=350000 +y"); + add_proj4text (p, 1, + "_0=650000 +ellps=intl +towgs84=174.05,-25.49,112.57,-0,-"); + add_proj4text (p, 2, + "0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CI1979 / Chatham Islands Map Grid\",GEOGCS[\"Ch"); + add_srs_wkt (p, 1, + "atham Islands 1979\",DATUM[\"Chatham_Islands_Datum_1979\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7022\"]],TOWGS84[174.05,-25.49,112.57,-0,-0,0.5"); + add_srs_wkt (p, 4, + "54,0.2263],AUTHORITY[\"EPSG\",\"6673\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4673\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",-44],PARAMETER[\"centr"); + add_srs_wkt (p, 9, + "al_meridian\",-176.5],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",350000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",650000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AUTHORITY[\"EPSG\",\"5519\"]]"); + p = add_epsg_def (filter, first, last, 5520, "epsg", 5520, + "DHDN / 3-degree Gauss-Kruger zone 1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +"); + add_proj4text (p, 1, + "datum=potsdam +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / 3-degree Gauss-Kruger zone 1\",GEOGCS[\""); + add_srs_wkt (p, 1, + "DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,"); + add_srs_wkt (p, 4, + "6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 9, + "ian\",3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",1500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 11, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"5520\"]]"); + p = add_epsg_def (filter, first, last, 5523, "epsg", 5523, + "WGS 84 / Gabon TM 2011"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=1500000 "); + add_proj4text (p, 1, + "+y_0=5500000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / Gabon TM 2011\",GEOGCS[\"WGS 84\",DATU"); + add_srs_wkt (p, 1, + "M[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326"); + add_srs_wkt (p, 3, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 4, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 6, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 7, + ",PARAMETER[\"central_meridian\",11.5],PARAMETER[\"scale_"); + add_srs_wkt (p, 8, + "factor\",0.9996],PARAMETER[\"false_easting\",1500000],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_northing\",5500000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 10, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 11, + "ORTH],AUTHORITY[\"EPSG\",\"5523\"]]"); + p = add_epsg_def (filter, first, last, 5524, "epsg", 5524, + "Corrego Alegre 1961"); + add_proj4text (p, 0, + "+proj=longlat +ellps=intl +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Corrego Alegre 1961\",DATUM[\"Corrego_Alegre_19"); + add_srs_wkt (p, 1, + "61\",SPHEROID[\"International 1924\",6378388,297,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\",\"1074\"]],PRI"); + add_srs_wkt (p, 3, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 4, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 5, + "],AUTHORITY[\"EPSG\",\"5524\"]]"); + p = add_epsg_def (filter, first, last, 5527, "epsg", 5527, + "SAD69(96)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=aust_SA +towgs84=-67.35,3.88,-38.22"); + add_proj4text (p, 1, + ",0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"SAD69(96)\",DATUM[\"South_American_Datum_1969_9"); + add_srs_wkt (p, 1, + "6\",SPHEROID[\"GRS 1967 Modified\",6378160,298.25,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7050\"]],TOWGS84[-67.35,3.88,-38.22,0,0,0"); + add_srs_wkt (p, 3, + ",0],AUTHORITY[\"EPSG\",\"1075\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 5, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"5527\"]]"); + p = add_epsg_def (filter, first, last, 5530, "epsg", 5530, + "SAD69(96) / Brazil Polyconic"); + add_proj4text (p, 0, + "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=1000000"); + add_proj4text (p, 1, + "0 +ellps=aust_SA +towgs84=-67.35,3.88,-38.22,0,0,0,0 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69(96) / Brazil Polyconic\",GEOGCS[\"SAD69(9"); + add_srs_wkt (p, 1, + "6)\",DATUM[\"South_American_Datum_1969_96\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "050\"]],TOWGS84[-67.35,3.88,-38.22,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"1075\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5527\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Polyconic\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-54],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",5000000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5530\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 5531, "epsg", 5531, + "SAD69(96) / UTM zone 21S"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +south +ellps=aust_SA +towgs84=-67.35"); + add_proj4text (p, 1, + ",3.88,-38.22,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69(96) / UTM zone 21S\",GEOGCS[\"SAD69(96)\""); + add_srs_wkt (p, 1, + ",DATUM[\"South_American_Datum_1969_96\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-67.35,3.88,-38.22,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1075\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5527\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-57],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5531\"]]"); + p = add_epsg_def (filter, first, last, 5532, "epsg", 5532, + "SAD69(96) / UTM zone 22S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-57,1,"); + add_proj4text (p, 1, + "-41,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69(96) / UTM zone 22S (deprecated)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"SAD69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7050\"]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6618\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4618\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-51],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5532\"]]"); + p = add_epsg_def (filter, first, last, 5533, "epsg", 5533, + "SAD69(96) / UTM zone 23S"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +south +ellps=aust_SA +towgs84=-67.35"); + add_proj4text (p, 1, + ",3.88,-38.22,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69(96) / UTM zone 23S\",GEOGCS[\"SAD69(96)\""); + add_srs_wkt (p, 1, + ",DATUM[\"South_American_Datum_1969_96\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-67.35,3.88,-38.22,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1075\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5527\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-45],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5533\"]]"); + p = add_epsg_def (filter, first, last, 5534, "epsg", 5534, + "SAD69(96) / UTM zone 24S"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +south +ellps=aust_SA +towgs84=-67.35"); + add_proj4text (p, 1, + ",3.88,-38.22,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69(96) / UTM zone 24S\",GEOGCS[\"SAD69(96)\""); + add_srs_wkt (p, 1, + ",DATUM[\"South_American_Datum_1969_96\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-67.35,3.88,-38.22,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1075\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5527\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-39],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5534\"]]"); + p = add_epsg_def (filter, first, last, 5535, "epsg", 5535, + "SAD69(96) / UTM zone 25S"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +south +ellps=aust_SA +towgs84=-67.35"); + add_proj4text (p, 1, + ",3.88,-38.22,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69(96) / UTM zone 25S\",GEOGCS[\"SAD69(96)\""); + add_srs_wkt (p, 1, + ",DATUM[\"South_American_Datum_1969_96\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-67.35,3.88,-38.22,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1075\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5527\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-33],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5535\"]]"); + p = add_epsg_def (filter, first, last, 5536, "epsg", 5536, + "Corrego Alegre 1961 / UTM zone 21S"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +south +ellps=intl +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Corrego Alegre 1961 / UTM zone 21S\",GEOGCS[\"C"); + add_srs_wkt (p, 1, + "orrego Alegre 1961\",DATUM[\"Corrego_Alegre_1961\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7022\"]],AUTHORITY[\"EPSG\",\"1074\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"5524\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-57],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"5536\"]]"); + p = add_epsg_def (filter, first, last, 5537, "epsg", 5537, + "Corrego Alegre 1961 / UTM zone 22S"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +south +ellps=intl +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Corrego Alegre 1961 / UTM zone 22S\",GEOGCS[\"C"); + add_srs_wkt (p, 1, + "orrego Alegre 1961\",DATUM[\"Corrego_Alegre_1961\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7022\"]],AUTHORITY[\"EPSG\",\"1074\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"5524\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-51],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"5537\"]]"); + p = add_epsg_def (filter, first, last, 5538, "epsg", 5538, + "Corrego Alegre 1961 / UTM zone 23S"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +south +ellps=intl +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Corrego Alegre 1961 / UTM zone 23S\",GEOGCS[\"C"); + add_srs_wkt (p, 1, + "orrego Alegre 1961\",DATUM[\"Corrego_Alegre_1961\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7022\"]],AUTHORITY[\"EPSG\",\"1074\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"5524\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-45],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"5538\"]]"); + p = add_epsg_def (filter, first, last, 5539, "epsg", 5539, + "Corrego Alegre 1961 / UTM zone 24S"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +south +ellps=intl +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Corrego Alegre 1961 / UTM zone 24S\",GEOGCS[\"C"); + add_srs_wkt (p, 1, + "orrego Alegre 1961\",DATUM[\"Corrego_Alegre_1961\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7022\"]],AUTHORITY[\"EPSG\",\"1074\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"5524\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-39],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"5539\"]]"); + p = add_epsg_def (filter, first, last, 5546, "epsg", 5546, + "PNG94"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"PNG94\",DATUM[\"Papua_New_Guinea_Geodetic_Datum"); + add_srs_wkt (p, 1, + "_1994\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"1076\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5546\""); + add_srs_wkt (p, 6, + "]]"); + p = add_epsg_def (filter, first, last, 5550, "epsg", 5550, + "PNG94 / PNGMG94 zone 54"); + add_proj4text (p, 0, + "+proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PNG94 / PNGMG94 zone 54\",GEOGCS[\"PNG94\",DATU"); + add_srs_wkt (p, 1, + "M[\"Papua_New_Guinea_Geodetic_Datum_1994\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1076\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"5546\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",141],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 12, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"5550\"]]"); + p = add_epsg_def (filter, first, last, 5551, "epsg", 5551, + "PNG94 / PNGMG94 zone 55"); + add_proj4text (p, 0, + "+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PNG94 / PNGMG94 zone 55\",GEOGCS[\"PNG94\",DATU"); + add_srs_wkt (p, 1, + "M[\"Papua_New_Guinea_Geodetic_Datum_1994\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1076\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"5546\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",147],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 12, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"5551\"]]"); + p = add_epsg_def (filter, first, last, 5552, "epsg", 5552, + "PNG94 / PNGMG94 zone 56"); + add_proj4text (p, 0, + "+proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PNG94 / PNGMG94 zone 56\",GEOGCS[\"PNG94\",DATU"); + add_srs_wkt (p, 1, + "M[\"Papua_New_Guinea_Geodetic_Datum_1994\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1076\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"5546\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",153],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 12, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"5552\"]]"); + p = add_epsg_def (filter, first, last, 5559, "epsg", 5559, + "Ocotepeque 1935 / Guatemala Norte"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666"); + add_proj4text (p, 1, + "667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=50000"); + add_proj4text (p, 2, + "0 +y_0=292209.579 +ellps=clrk66 +towgs84=213.11,9.37,-74"); + add_proj4text (p, 3, + ".95,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Ocotepeque 1935 / Guatemala Norte\",GEOGCS[\"Oc"); + add_srs_wkt (p, 1, + "otepeque 1935\",DATUM[\"Ocotepeque_1935\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7008\"]],TOWGS84[213.11,9.37,-74.95,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"1070\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5451\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",16.81666666666667],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",-90.33333333333333],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 10, + "tor\",0.99992226],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_northing\",292209.579],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"5559\"]]"); + p = add_epsg_def (filter, first, last, 5561, "epsg", 5561, + "UCS-2000"); + add_proj4text (p, 0, + "+proj=longlat +ellps=krass +towgs84=25,-141,-78.5,-0,0.3"); + add_proj4text (p, 1, + "5,0.736,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"UCS-2000\",DATUM[\"Ukraine_2000\",SPHEROID[\"Kr"); + add_srs_wkt (p, 1, + "assowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\""); + add_srs_wkt (p, 2, + "]],TOWGS84[25,-141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"1077\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5561\"]]"); + p = add_epsg_def (filter, first, last, 5562, "epsg", 5562, + "UCS-2000 / Gauss-Kruger zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / Gauss-Kruger zone 4\",GEOGCS[\"UCS-2"); + add_srs_wkt (p, 1, + "000\",DATUM[\"Ukraine_2000\",SPHEROID[\"Krassowsky 1940\""); + add_srs_wkt (p, 2, + ",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[25,"); + add_srs_wkt (p, 3, + "-141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EPSG\",\"1077\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"5561\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",21],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",4500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"5562\"]]"); + p = add_epsg_def (filter, first, last, 5563, "epsg", 5563, + "UCS-2000 / Gauss-Kruger zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / Gauss-Kruger zone 5\",GEOGCS[\"UCS-2"); + add_srs_wkt (p, 1, + "000\",DATUM[\"Ukraine_2000\",SPHEROID[\"Krassowsky 1940\""); + add_srs_wkt (p, 2, + ",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[25,"); + add_srs_wkt (p, 3, + "-141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EPSG\",\"1077\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"5561\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",27],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",5500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"5563\"]]"); + p = add_epsg_def (filter, first, last, 5564, "epsg", 5564, + "UCS-2000 / Gauss-Kruger zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / Gauss-Kruger zone 6\",GEOGCS[\"UCS-2"); + add_srs_wkt (p, 1, + "000\",DATUM[\"Ukraine_2000\",SPHEROID[\"Krassowsky 1940\""); + add_srs_wkt (p, 2, + ",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[25,"); + add_srs_wkt (p, 3, + "-141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EPSG\",\"1077\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"5561\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",33],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",6500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"5564\"]]"); + p = add_epsg_def (filter, first, last, 5565, "epsg", 5565, + "UCS-2000 / Gauss-Kruger zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / Gauss-Kruger zone 7\",GEOGCS[\"UCS-2"); + add_srs_wkt (p, 1, + "000\",DATUM[\"Ukraine_2000\",SPHEROID[\"Krassowsky 1940\""); + add_srs_wkt (p, 2, + ",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[25,"); + add_srs_wkt (p, 3, + "-141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EPSG\",\"1077\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"5561\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",39],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",7500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"5565\"]]"); + p = add_epsg_def (filter, first, last, 5566, "epsg", 5566, + "UCS-2000 / Gauss-Kruger CM 21E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / Gauss-Kruger CM 21E\",GEOGCS[\"UCS-2"); + add_srs_wkt (p, 1, + "000\",DATUM[\"Ukraine_2000\",SPHEROID[\"Krassowsky 1940\""); + add_srs_wkt (p, 2, + ",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[25,"); + add_srs_wkt (p, 3, + "-141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EPSG\",\"1077\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"5561\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",21],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"5566\"]]"); + p = add_epsg_def (filter, first, last, 5567, "epsg", 5567, + "UCS-2000 / Gauss-Kruger CM 27E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / Gauss-Kruger CM 27E\",GEOGCS[\"UCS-2"); + add_srs_wkt (p, 1, + "000\",DATUM[\"Ukraine_2000\",SPHEROID[\"Krassowsky 1940\""); + add_srs_wkt (p, 2, + ",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[25,"); + add_srs_wkt (p, 3, + "-141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EPSG\",\"1077\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"5561\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",27],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"5567\"]]"); + p = add_epsg_def (filter, first, last, 5568, "epsg", 5568, + "UCS-2000 / Gauss-Kruger CM 33E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / Gauss-Kruger CM 33E\",GEOGCS[\"UCS-2"); + add_srs_wkt (p, 1, + "000\",DATUM[\"Ukraine_2000\",SPHEROID[\"Krassowsky 1940\""); + add_srs_wkt (p, 2, + ",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[25,"); + add_srs_wkt (p, 3, + "-141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EPSG\",\"1077\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"5561\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",33],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"5568\"]]"); + p = add_epsg_def (filter, first, last, 5569, "epsg", 5569, + "UCS-2000 / Gauss-Kruger CM 39E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / Gauss-Kruger CM 39E\",GEOGCS[\"UCS-2"); + add_srs_wkt (p, 1, + "000\",DATUM[\"Ukraine_2000\",SPHEROID[\"Krassowsky 1940\""); + add_srs_wkt (p, 2, + ",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[25,"); + add_srs_wkt (p, 3, + "-141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EPSG\",\"1077\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"5561\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",39],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"5569\"]]"); + p = add_epsg_def (filter, first, last, 5570, "epsg", 5570, + "UCS-2000 / 3-degree Gauss-Kruger zone 7 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / 3-degree Gauss-Kruger zone 7 (deprec"); + add_srs_wkt (p, 1, + "ated)\",GEOGCS[\"UCS-2000\",DATUM[\"Ukraine_2000\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7024\"]],TOWGS84[25,-141,-78.5,-0,0.35,0.736,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"1077\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5561"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",21],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",7500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"55"); + add_srs_wkt (p, 12, + "70\"]]"); + p = add_epsg_def (filter, first, last, 5571, "epsg", 5571, + "UCS-2000 / 3-degree Gauss-Kruger zone 8 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / 3-degree Gauss-Kruger zone 8 (deprec"); + add_srs_wkt (p, 1, + "ated)\",GEOGCS[\"UCS-2000\",DATUM[\"Ukraine_2000\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7024\"]],TOWGS84[25,-141,-78.5,-0,0.35,0.736,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"1077\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5561"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",24],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",8500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"55"); + add_srs_wkt (p, 12, + "71\"]]"); + p = add_epsg_def (filter, first, last, 5572, "epsg", 5572, + "UCS-2000 / 3-degree Gauss-Kruger zone 9 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=9500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / 3-degree Gauss-Kruger zone 9 (deprec"); + add_srs_wkt (p, 1, + "ated)\",GEOGCS[\"UCS-2000\",DATUM[\"Ukraine_2000\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7024\"]],TOWGS84[25,-141,-78.5,-0,0.35,0.736,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"1077\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5561"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",27],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",9500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"55"); + add_srs_wkt (p, 12, + "72\"]]"); + p = add_epsg_def (filter, first, last, 5573, "epsg", 5573, + "UCS-2000 / 3-degree Gauss-Kruger zone 10 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=10500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / 3-degree Gauss-Kruger zone 10 (depre"); + add_srs_wkt (p, 1, + "cated)\",GEOGCS[\"UCS-2000\",DATUM[\"Ukraine_2000\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7024\"]],TOWGS84[25,-141,-78.5,-0,0.35,0.736,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"1077\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5561"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",30],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",10500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"55"); + add_srs_wkt (p, 12, + "73\"]]"); + p = add_epsg_def (filter, first, last, 5574, "epsg", 5574, + "UCS-2000 / 3-degree Gauss-Kruger zone 11 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=11500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / 3-degree Gauss-Kruger zone 11 (depre"); + add_srs_wkt (p, 1, + "cated)\",GEOGCS[\"UCS-2000\",DATUM[\"Ukraine_2000\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7024\"]],TOWGS84[25,-141,-78.5,-0,0.35,0.736,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"1077\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5561"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",33],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",11500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"55"); + add_srs_wkt (p, 12, + "74\"]]"); + p = add_epsg_def (filter, first, last, 5575, "epsg", 5575, + "UCS-2000 / 3-degree Gauss-Kruger zone 12 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=12500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / 3-degree Gauss-Kruger zone 12 (depre"); + add_srs_wkt (p, 1, + "cated)\",GEOGCS[\"UCS-2000\",DATUM[\"Ukraine_2000\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7024\"]],TOWGS84[25,-141,-78.5,-0,0.35,0.736,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"1077\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5561"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",36],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",12500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"55"); + add_srs_wkt (p, 12, + "75\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_27.c b/src/spatialite/src/srsinit/epsg_inlined_27.c new file mode 100644 index 0000000..864c2a4 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_27.c @@ -0,0 +1,3386 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_27 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 5576, "epsg", 5576, + "UCS-2000 / 3-degree Gauss-Kruger zone 13 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=13500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / 3-degree Gauss-Kruger zone 13 (depre"); + add_srs_wkt (p, 1, + "cated)\",GEOGCS[\"UCS-2000\",DATUM[\"Ukraine_2000\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7024\"]],TOWGS84[25,-141,-78.5,-0,0.35,0.736,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"1077\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5561"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",39],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",13500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"55"); + add_srs_wkt (p, 12, + "76\"]]"); + p = add_epsg_def (filter, first, last, 5577, "epsg", 5577, + "UCS-2000 / 3-degree Gauss-Kruger CM 21E (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / 3-degree Gauss-Kruger CM 21E (deprec"); + add_srs_wkt (p, 1, + "ated)\",GEOGCS[\"UCS-2000\",DATUM[\"Ukraine_2000\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7024\"]],TOWGS84[25,-141,-78.5,-0,0.35,0.736,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"1077\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5561"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",21],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"557"); + add_srs_wkt (p, 12, + "7\"]]"); + p = add_epsg_def (filter, first, last, 5578, "epsg", 5578, + "UCS-2000 / 3-degree Gauss-Kruger CM 24E (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / 3-degree Gauss-Kruger CM 24E (deprec"); + add_srs_wkt (p, 1, + "ated)\",GEOGCS[\"UCS-2000\",DATUM[\"Ukraine_2000\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7024\"]],TOWGS84[25,-141,-78.5,-0,0.35,0.736,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"1077\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5561"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",24],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"557"); + add_srs_wkt (p, 12, + "8\"]]"); + p = add_epsg_def (filter, first, last, 5579, "epsg", 5579, + "UCS-2000 / 3-degree Gauss-Kruger CM 27E (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / 3-degree Gauss-Kruger CM 27E (deprec"); + add_srs_wkt (p, 1, + "ated)\",GEOGCS[\"UCS-2000\",DATUM[\"Ukraine_2000\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7024\"]],TOWGS84[25,-141,-78.5,-0,0.35,0.736,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"1077\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5561"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",27],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"557"); + add_srs_wkt (p, 12, + "9\"]]"); + p = add_epsg_def (filter, first, last, 5580, "epsg", 5580, + "UCS-2000 / 3-degree Gauss-Kruger CM 30E (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / 3-degree Gauss-Kruger CM 30E (deprec"); + add_srs_wkt (p, 1, + "ated)\",GEOGCS[\"UCS-2000\",DATUM[\"Ukraine_2000\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7024\"]],TOWGS84[25,-141,-78.5,-0,0.35,0.736,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"1077\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5561"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",30],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"558"); + add_srs_wkt (p, 12, + "0\"]]"); + p = add_epsg_def (filter, first, last, 5581, "epsg", 5581, + "UCS-2000 / 3-degree Gauss-Kruger CM 33E (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / 3-degree Gauss-Kruger CM 33E (deprec"); + add_srs_wkt (p, 1, + "ated)\",GEOGCS[\"UCS-2000\",DATUM[\"Ukraine_2000\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7024\"]],TOWGS84[25,-141,-78.5,-0,0.35,0.736,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"1077\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5561"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",33],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"558"); + add_srs_wkt (p, 12, + "1\"]]"); + p = add_epsg_def (filter, first, last, 5582, "epsg", 5582, + "UCS-2000 / 3-degree Gauss-Kruger CM 36E (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / 3-degree Gauss-Kruger CM 36E (deprec"); + add_srs_wkt (p, 1, + "ated)\",GEOGCS[\"UCS-2000\",DATUM[\"Ukraine_2000\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7024\"]],TOWGS84[25,-141,-78.5,-0,0.35,0.736,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"1077\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5561"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",36],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"558"); + add_srs_wkt (p, 12, + "2\"]]"); + p = add_epsg_def (filter, first, last, 5583, "epsg", 5583, + "UCS-2000 / 3-degree Gauss-Kruger CM 39E (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / 3-degree Gauss-Kruger CM 39E (deprec"); + add_srs_wkt (p, 1, + "ated)\",GEOGCS[\"UCS-2000\",DATUM[\"Ukraine_2000\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7024\"]],TOWGS84[25,-141,-78.5,-0,0.35,0.736,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"1077\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5561"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",39],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"558"); + add_srs_wkt (p, 12, + "3\"]]"); + p = add_epsg_def (filter, first, last, 5588, "epsg", 5588, + "NAD27 / New Brunswick Stereographic (NAD27)"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=46.5 +lon_0=-66.5 +k=0.999912 +x_0=3"); + add_proj4text (p, 1, + "04800 +y_0=304800 +datum=NAD27 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / New Brunswick Stereographic (NAD27)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"NAD27\",DATUM[\"North_American_Datum_1927\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4267\"]],PROJECTION[\"Oblique_Ste"); + add_srs_wkt (p, 7, + "reographic\"],PARAMETER[\"latitude_of_origin\",46.5],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",-66.5],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.999912],PARAMETER[\"false_easting\",1000000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",1000000],UNIT[\"foot\",0.3048,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9002\"]],AUTHORITY[\"EPSG\",\"5588\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 5589, "epsg", 5589, + "Sibun Gorge 1922 / Colony Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=17.06124194444444 +lon_0=-88.6318575 "); + add_proj4text (p, 1, + "+k=1 +x_0=66220.02833082761 +y_0=135779.5099885299 +a=63"); + add_proj4text (p, 2, + "78293.645208759 +b=6356617.987679838 +to_meter=0.3047972"); + add_proj4text (p, 3, + "654 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Sibun Gorge 1922 / Colony Grid\",GEOGCS[\"Sibun"); + add_srs_wkt (p, 1, + " Gorge 1922\",DATUM[\"Sibun_Gorge_1922\",SPHEROID[\"Clar"); + add_srs_wkt (p, 2, + "ke 1858\",6378293.645208759,294.2606763692569,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7007\"]],AUTHORITY[\"EPSG\",\"1071\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"5464\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",17.0612419444"); + add_srs_wkt (p, 8, + "4444],PARAMETER[\"central_meridian\",-88.6318575],PARAME"); + add_srs_wkt (p, 9, + "TER[\"scale_factor\",1],PARAMETER[\"false_easting\",2172"); + add_srs_wkt (p, 10, + "59.26],PARAMETER[\"false_northing\",445474.83],UNIT[\"Cl"); + add_srs_wkt (p, 11, + "arke's foot\",0.3047972654,AUTHORITY[\"EPSG\",\"9005\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"5589\"]]"); + p = add_epsg_def (filter, first, last, 5593, "epsg", 5593, + "FEH2010"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"FEH2010\",DATUM[\"Fehmarnbelt_Datum_2010\",SPHE"); + add_srs_wkt (p, 1, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 2, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"1078\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 4, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5593\"]]"); + p = add_epsg_def (filter, first, last, 5596, "epsg", 5596, + "FEH2010 / Fehmarnbelt TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=11.33333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "1000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"FEH2010 / Fehmarnbelt TM\",GEOGCS[\"FEH2010\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Fehmarnbelt_Datum_2010\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1078\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"5593\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",11.33333333333333],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",1000000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"5596\"]]"); + p = add_epsg_def (filter, first, last, 5623, "epsg", 5623, + "NAD27 / Michigan East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99942857 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +uni"); + add_proj4text (p, 2, + "ts=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Michigan East\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",41.5],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 8, + "an\",-83.66666666666667],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "9942857],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 11, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5623\"]]"); + p = add_epsg_def (filter, first, last, 5624, "epsg", 5624, + "NAD27 / Michigan Old Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909091 +x_"); + add_proj4text (p, 1, + "0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Michigan Old Central\",GEOGCS[\"NAD27\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1"); + add_srs_wkt (p, 2, + "866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",41.5],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",-85.75],PARAMETER[\"scale_factor\",0.9999090"); + add_srs_wkt (p, 9, + "91],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 11, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"5624\"]]"); + p = add_epsg_def (filter, first, last, 5625, "epsg", 5625, + "NAD27 / Michigan West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909091 +x_"); + add_proj4text (p, 1, + "0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Michigan West\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",41.5],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 8, + "an\",-88.75],PARAMETER[\"scale_factor\",0.999909091],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 12, + "RTH],AUTHORITY[\"EPSG\",\"5625\"]]"); + p = add_epsg_def (filter, first, last, 5627, "epsg", 5627, + "ED50 / TM 6 NE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=6 +k=0.9996 +x_0=500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +n"); + add_proj4text (p, 2, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / TM 6 NE\",GEOGCS[\"ED50\",DATUM[\"Europe"); + add_srs_wkt (p, 1, + "an_Datum_1950\",SPHEROID[\"International 1924\",6378388,"); + add_srs_wkt (p, 2, + "297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0"); + add_srs_wkt (p, 3, + ",0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); + add_srs_wkt (p, 8, + "ridian\",6],PARAMETER[\"scale_factor\",0.9996],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_easting\",500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"5627\"]]"); + p = add_epsg_def (filter, first, last, 5629, "epsg", 5629, + "Moznet / UTM zone 38S"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +south +ellps=WGS84 +towgs84=0,0,0,-0"); + add_proj4text (p, 1, + ",-0,-0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Moznet / UTM zone 38S\",GEOGCS[\"Moznet\",DATUM"); + add_srs_wkt (p, 1, + "[\"Moznet_ITRF94\",SPHEROID[\"WGS 84\",6378137,298.25722"); + add_srs_wkt (p, 2, + "3563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,0,0,-0,-0,-"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6130\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4130\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 10, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 11, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"5629\"]]"); + p = add_epsg_def (filter, first, last, 5631, "epsg", 5631, + "Pulkovo 1942(58) / Gauss-Kruger zone 2 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.8"); + add_proj4text (p, 2, + "44,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / Gauss-Kruger zone 2 (E-N)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0"); + add_srs_wkt (p, 4, + ".844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",9],PARAMETER[\"scale_factor\",1],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",2500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"5631\"]]"); + p = add_epsg_def (filter, first, last, 5632, "epsg", 5632, + "PTRA08 / LCC Europe"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4"); + add_proj4text (p, 1, + "000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PTRA08 / LCC Europe\",GEOGCS[\"PTRA08\",DATUM[\""); + add_srs_wkt (p, 1, + "Autonomous_Regions_of_Portugal_2008\",SPHEROID[\"GRS 198"); + add_srs_wkt (p, 2, + "0\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1041\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"5013\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",35"); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_2\",65],PARAMETER[\"lati"); + add_srs_wkt (p, 9, + "tude_of_origin\",52],PARAMETER[\"central_meridian\",10],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",4000000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",2800000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9001\"]],AUTHORITY[\"EPSG\",\"5632\"]]"); + p = add_epsg_def (filter, first, last, 5633, "epsg", 5633, + "PTRA08 / LAEA Europe"); + add_proj4text (p, 0, + "+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PTRA08 / LAEA Europe\",GEOGCS[\"PTRA08\",DATUM["); + add_srs_wkt (p, 1, + "\"Autonomous_Regions_of_Portugal_2008\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1041\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"5013\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Azimuthal_Equal_Area\"],PARAMETER[\"latitude_of_center\""); + add_srs_wkt (p, 8, + ",52],PARAMETER[\"longitude_of_center\",10],PARAMETER[\"f"); + add_srs_wkt (p, 9, + "alse_easting\",4321000],PARAMETER[\"false_northing\",321"); + add_srs_wkt (p, 10, + "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"5633\"]]"); + p = add_epsg_def (filter, first, last, 5634, "epsg", 5634, + "REGCAN95 / LCC Europe"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4"); + add_proj4text (p, 1, + "000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"REGCAN95 / LCC Europe\",GEOGCS[\"REGCAN95\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Red_Geodesica_de_Canarias_1995\",SPHEROID[\"GRS 198"); + add_srs_wkt (p, 2, + "0\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1035\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4081\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",35"); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_2\",65],PARAMETER[\"lati"); + add_srs_wkt (p, 9, + "tude_of_origin\",52],PARAMETER[\"central_meridian\",10],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",4000000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",2800000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9001\"]],AUTHORITY[\"EPSG\",\"5634\"]]"); + p = add_epsg_def (filter, first, last, 5635, "epsg", 5635, + "REGCAN95 / LAEA Europe"); + add_proj4text (p, 0, + "+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"REGCAN95 / LAEA Europe\",GEOGCS[\"REGCAN95\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Red_Geodesica_de_Canarias_1995\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1035\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4081\"]],PROJECTION[\"Lambert_Az"); + add_srs_wkt (p, 7, + "imuthal_Equal_Area\"],PARAMETER[\"latitude_of_center\",5"); + add_srs_wkt (p, 8, + "2],PARAMETER[\"longitude_of_center\",10],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",4321000],PARAMETER[\"false_northing\",32100"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"5635\"]]"); + p = add_epsg_def (filter, first, last, 5636, "epsg", 5636, + "TUREF / LAEA Europe"); + add_proj4text (p, 0, + "+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / LAEA Europe\",GEOGCS[\"TUREF\",DATUM[\""); + add_srs_wkt (p, 1, + "Turkish_National_Reference_Frame\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"5252\"]],PROJECTION[\"Lambert_Azimu"); + add_srs_wkt (p, 7, + "thal_Equal_Area\"],PARAMETER[\"latitude_of_center\",52],"); + add_srs_wkt (p, 8, + "PARAMETER[\"longitude_of_center\",10],PARAMETER[\"false_"); + add_srs_wkt (p, 9, + "easting\",4321000],PARAMETER[\"false_northing\",3210000]"); + add_srs_wkt (p, 10, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"5636\"]]"); + p = add_epsg_def (filter, first, last, 5637, "epsg", 5637, + "TUREF / LCC Europe"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4"); + add_proj4text (p, 1, + "000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TUREF / LCC Europe\",GEOGCS[\"TUREF\",DATUM[\"T"); + add_srs_wkt (p, 1, + "urkish_National_Reference_Frame\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1057\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"5252\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",35],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_2\",65],PARAMETER[\"latitud"); + add_srs_wkt (p, 9, + "e_of_origin\",52],PARAMETER[\"central_meridian\",10],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_easting\",4000000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",2800000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 12, + "01\"]],AUTHORITY[\"EPSG\",\"5637\"]]"); + p = add_epsg_def (filter, first, last, 5638, "epsg", 5638, + "ISN2004 / LAEA Europe"); + add_proj4text (p, 0, + "+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000"); + add_proj4text (p, 1, + " +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ISN2004 / LAEA Europe\",GEOGCS[\"ISN2004\",DATU"); + add_srs_wkt (p, 1, + "M[\"Islands_Net_2004\",SPHEROID[\"GRS 1980\",6378137,298"); + add_srs_wkt (p, 2, + ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0],AUTHORITY[\"EPSG\",\"1060\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"5324\"]],PROJECTION[\"Lambert_Azimuthal_Equal_A"); + add_srs_wkt (p, 7, + "rea\"],PARAMETER[\"latitude_of_center\",52],PARAMETER[\""); + add_srs_wkt (p, 8, + "longitude_of_center\",10],PARAMETER[\"false_easting\",43"); + add_srs_wkt (p, 9, + "21000],PARAMETER[\"false_northing\",3210000],UNIT[\"metr"); + add_srs_wkt (p, 10, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "5638\"]]"); + p = add_epsg_def (filter, first, last, 5639, "epsg", 5639, + "ISN2004 / LCC Europe"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35 +lat_2=65 +lat_0=52 +lon_0=10 +x_0=4"); + add_proj4text (p, 1, + "000000 +y_0=2800000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ISN2004 / LCC Europe\",GEOGCS[\"ISN2004\",DATUM"); + add_srs_wkt (p, 1, + "[\"Islands_Net_2004\",SPHEROID[\"GRS 1980\",6378137,298."); + add_srs_wkt (p, 2, + "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); + add_srs_wkt (p, 3, + "0,0,0],AUTHORITY[\"EPSG\",\"1060\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"5324\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",35],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_2\",65],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 9, + ",52],PARAMETER[\"central_meridian\",10],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",4000000],PARAMETER[\"false_northing\",280000"); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"5639\"]]"); + p = add_epsg_def (filter, first, last, 5641, "epsg", 5641, + "SIRGAS 2000 / Brazil Mercator"); + add_proj4text (p, 0, + "+proj=merc +lon_0=-43 +lat_ts=-2 +x_0=5000000 +y_0=10000"); + add_proj4text (p, 1, + "000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / Brazil Mercator\",GEOGCS[\"SIRGAS"); + add_srs_wkt (p, 1, + " 2000\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_l"); + add_srs_wkt (p, 2, + "as_AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4674\"]],PROJECTION[\"Mercator_2SP\"],PARAMETER[\"s"); + add_srs_wkt (p, 8, + "tandard_parallel_1\",-2],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "-43],PARAMETER[\"false_easting\",5000000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"5641\"]]"); + p = add_epsg_def (filter, first, last, 5643, "epsg", 5643, + "ED50 / SPBA LCC"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=52.66666666666666 +lat_2=54.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=48 +lon_0=10 +x_0=815000 +y_0=0 +ellps=intl +"); + add_proj4text (p, 2, + "towgs84=-87,-98,-121,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / SPBA LCC\",GEOGCS[\"ED50\",DATUM[\"Europ"); + add_srs_wkt (p, 1, + "ean_Datum_1950\",SPHEROID[\"International 1924\",6378388"); + add_srs_wkt (p, 2, + ",297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,"); + add_srs_wkt (p, 3, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4230\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 7, + "SP\"],PARAMETER[\"standard_parallel_1\",52.6666666666666"); + add_srs_wkt (p, 8, + "6],PARAMETER[\"standard_parallel_2\",54.33333333333334],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",48],PARAMETER[\"central"); + add_srs_wkt (p, 10, + "_meridian\",10],PARAMETER[\"false_easting\",815000],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 13, + "\",NORTH],AUTHORITY[\"EPSG\",\"5643\"]]"); + p = add_epsg_def (filter, first, last, 5644, "epsg", 5644, + "RGR92 / UTM zone 39S"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGR92 / UTM zone 39S\",GEOGCS[\"RGR92\",DATUM[\""); + add_srs_wkt (p, 1, + "Reseau_Geodesique_de_la_Reunion_1992\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6627\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4627\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",51],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"5644\"]]"); + p = add_epsg_def (filter, first, last, 5646, "epsg", 5646, + "NAD83 / Vermont (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0"); + add_proj4text (p, 1, + "=500000.00001016 +y_0=0 +datum=NAD83 +units=us-ft +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Vermont (ftUS)\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",42.5],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-72.5],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "99964286],PARAMETER[\"false_easting\",1640416.6667],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 11, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 12, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5646\"]]"); + p = add_epsg_def (filter, first, last, 5649, "epsg", 5649, + "ETRS89 / UTM zone 31N (zE-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=3 +k=0.9996 +x_0=31500000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 31N (zE-N)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",3],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9996],PARAMETER[\"false_easting\",3150000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"5649\"]]"); + p = add_epsg_def (filter, first, last, 5650, "epsg", 5650, + "ETRS89 / UTM zone 33N (zE-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=33500000 +"); + add_proj4text (p, 1, + "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 33N (zE-N)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",335000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"5650\"]]"); + p = add_epsg_def (filter, first, last, 5651, "epsg", 5651, + "ETRS89 / UTM zone 31N (N-zE)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=3 +k=0.9996 +x_0=31500000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 31N (N-zE)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",3],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9996],PARAMETER[\"false_easting\",3150000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5651\"]]"); + p = add_epsg_def (filter, first, last, 5652, "epsg", 5652, + "ETRS89 / UTM zone 32N (N-zE)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=32500000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 32N (N-zE)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",9],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9996],PARAMETER[\"false_easting\",3250000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5652\"]]"); + p = add_epsg_def (filter, first, last, 5653, "epsg", 5653, + "ETRS89 / UTM zone 33N (N-zE)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=33500000 +"); + add_proj4text (p, 1, + "y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 33N (N-zE)\",GEOGCS[\"ETRS89\""); + add_srs_wkt (p, 1, + ",DATUM[\"European_Terrestrial_Reference_System_1989\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",15],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",335000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"5653\"]]"); + p = add_epsg_def (filter, first, last, 5654, "epsg", 5654, + "NAD83(HARN) / Vermont (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0"); + add_proj4text (p, 1, + "=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Vermont (ftUS)\",GEOGCS[\"NAD83(H"); + add_srs_wkt (p, 1, + "ARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",42.5],PARAMETER[\"central_meridian\",-72.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.999964286],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",1640416.6667],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"5654\"]]"); + p = add_epsg_def (filter, first, last, 5655, "epsg", 5655, + "NAD83(NSRS2007) / Vermont (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0"); + add_proj4text (p, 1, + "=500000.00001016 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,"); + add_proj4text (p, 2, + "0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Vermont (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_"); + add_srs_wkt (p, 2, + "System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722210"); + add_srs_wkt (p, 3, + "1,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",42.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-72.5],PARAMETER[\"scale_factor\",0.999964286],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",1640416.6667],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 13, + "ORTH],AUTHORITY[\"EPSG\",\"5655\"]]"); + p = add_epsg_def (filter, first, last, 5659, "epsg", 5659, + "Monte Mario / TM Emilia-Romagna"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=500053 +y_0"); + add_proj4text (p, 1, + "=-3999820 +ellps=intl +towgs84=-104.1,-49.1,-9.9,0.971,-"); + add_proj4text (p, 2, + "2.917,0.714,-11.68 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Monte Mario / TM Emilia-Romagna\",GEOGCS[\"Mont"); + add_srs_wkt (p, 1, + "e Mario\",DATUM[\"Monte_Mario\",SPHEROID[\"International"); + add_srs_wkt (p, 2, + " 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[-104.1,-49.1,-9.9,0.971,-2.917,0.714,-11.68],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6265\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4265\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",9],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",500053],PARAMETER[\"false_northing\",-3999820],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5659\"]]"); + p = add_epsg_def (filter, first, last, 5663, "epsg", 5663, + "Pulkovo 1942(58) / Gauss-Kruger zone 3 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); + add_proj4text (p, 2, + "844,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / Gauss-Kruger zone 3 (E-N)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_1942_58\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359,-0.053,0"); + add_srs_wkt (p, 4, + ".844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",15],PARAMETER[\"scale_factor\",1],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",3500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"5663\"]]"); + p = add_epsg_def (filter, first, last, 5664, "epsg", 5664, + "Pulkovo 1942(83) / Gauss-Kruger zone 2 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / Gauss-Kruger zone 2 (E-N)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",9],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",250000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"5664\"]]"); + p = add_epsg_def (filter, first, last, 5665, "epsg", 5665, + "Pulkovo 1942(83) / Gauss-Kruger zone 3 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / Gauss-Kruger zone 3 (E-N)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_1942_83\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4178\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",15],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",35000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"5665\"]]"); + p = add_epsg_def (filter, first, last, 5666, "epsg", 5666, + "PD/83 / 3-degree Gauss-Kruger zone 3 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PD/83 / 3-degree Gauss-Kruger zone 3 (E-N)\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"PD/83\",DATUM[\"Potsdam_Datum_83\",SPHEROID[\"Bes"); + add_srs_wkt (p, 2, + "sel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7004\"]],AUTHORITY[\"EPSG\",\"6746\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4746\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); + add_srs_wkt (p, 8, + "ridian\",9],PARAMETER[\"scale_factor\",1],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",3500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 10, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 11, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"5666\"]]"); + p = add_epsg_def (filter, first, last, 5667, "epsg", 5667, + "PD/83 / 3-degree Gauss-Kruger zone 4 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PD/83 / 3-degree Gauss-Kruger zone 4 (E-N)\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"PD/83\",DATUM[\"Potsdam_Datum_83\",SPHEROID[\"Bes"); + add_srs_wkt (p, 2, + "sel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7004\"]],AUTHORITY[\"EPSG\",\"6746\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4746\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); + add_srs_wkt (p, 8, + "ridian\",12],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); + add_srs_wkt (p, 9, + "alse_easting\",4500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 11, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"5667\"]]"); + p = add_epsg_def (filter, first, last, 5668, "epsg", 5668, + "RD/83 / 3-degree Gauss-Kruger zone 4 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RD/83 / 3-degree Gauss-Kruger zone 4 (E-N)\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"RD/83\",DATUM[\"Rauenberg_Datum_83\",SPHEROID[\"B"); + add_srs_wkt (p, 2, + "essel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7004\"]],AUTHORITY[\"EPSG\",\"6745\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4745\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 7, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",12],PARAMETER[\"scale_factor\",1],PARAMETER["); + add_srs_wkt (p, 9, + "\"false_easting\",4500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"5668\"]]"); + p = add_epsg_def (filter, first, last, 5669, "epsg", 5669, + "RD/83 / 3-degree Gauss-Kruger zone 5 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RD/83 / 3-degree Gauss-Kruger zone 5 (E-N)\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"RD/83\",DATUM[\"Rauenberg_Datum_83\",SPHEROID[\"B"); + add_srs_wkt (p, 2, + "essel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7004\"]],AUTHORITY[\"EPSG\",\"6745\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4745\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 7, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",15],PARAMETER[\"scale_factor\",1],PARAMETER["); + add_srs_wkt (p, 9, + "\"false_easting\",5500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"5669\"]]"); + p = add_epsg_def (filter, first, last, 5670, "epsg", 5670, + "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 3 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0.8"); + add_proj4text (p, 2, + "44,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 3"); + add_srs_wkt (p, 1, + " (E-N)\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_194"); + add_srs_wkt (p, 2, + "2_58\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359"); + add_srs_wkt (p, 4, + ",-0.053,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIME"); + add_srs_wkt (p, 5, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 6, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 7, + ",AUTHORITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 8, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 9, + "[\"central_meridian\",9],PARAMETER[\"scale_factor\",1],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_easting\",3500000],PARAMETER[\"false_no"); + add_srs_wkt (p, 11, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"5670\"]]"); + p = add_epsg_def (filter, first, last, 5671, "epsg", 5671, + "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 4 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); + add_proj4text (p, 2, + "844,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 4"); + add_srs_wkt (p, 1, + " (E-N)\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_194"); + add_srs_wkt (p, 2, + "2_58\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359"); + add_srs_wkt (p, 4, + ",-0.053,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIME"); + add_srs_wkt (p, 5, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 6, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 7, + ",AUTHORITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 8, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 9, + "[\"central_meridian\",12],PARAMETER[\"scale_factor\",1],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",4500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"5671\"]]"); + p = add_epsg_def (filter, first, last, 5672, "epsg", 5672, + "Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=33.4,-146.6,-76.3,-0.359,-0.053,0."); + add_proj4text (p, 2, + "844,-0.84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(58) / 3-degree Gauss-Kruger zone 5"); + add_srs_wkt (p, 1, + " (E-N)\",GEOGCS[\"Pulkovo 1942(58)\",DATUM[\"Pulkovo_194"); + add_srs_wkt (p, 2, + "2_58\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7024\"]],TOWGS84[33.4,-146.6,-76.3,-0.359"); + add_srs_wkt (p, 4, + ",-0.053,0.844,-0.84],AUTHORITY[\"EPSG\",\"6179\"]],PRIME"); + add_srs_wkt (p, 5, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 6, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 7, + ",AUTHORITY[\"EPSG\",\"4179\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 8, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 9, + "[\"central_meridian\",15],PARAMETER[\"scale_factor\",1],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",5500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"5672\"]]"); + p = add_epsg_def (filter, first, last, 5673, "epsg", 5673, + "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 3"); + add_srs_wkt (p, 1, + " (E-N)\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_194"); + add_srs_wkt (p, 2, + "2_83\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 7, + "78\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",9]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",3500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST"); + add_srs_wkt (p, 12, + "],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5673\"]]"); + p = add_epsg_def (filter, first, last, 5674, "epsg", 5674, + "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 4"); + add_srs_wkt (p, 1, + " (E-N)\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_194"); + add_srs_wkt (p, 2, + "2_83\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 7, + "78\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",12"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",4500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAS"); + add_srs_wkt (p, 12, + "T],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5674\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 5675, "epsg", 5675, + "Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 5 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=26,-121,-78,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942(83) / 3-degree Gauss-Kruger zone 5"); + add_srs_wkt (p, 1, + " (E-N)\",GEOGCS[\"Pulkovo 1942(83)\",DATUM[\"Pulkovo_194"); + add_srs_wkt (p, 2, + "2_83\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7024\"]],TOWGS84[26,-121,-78,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6178\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 7, + "78\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",15"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",5500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAS"); + add_srs_wkt (p, 12, + "T],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5675\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 5676, "epsg", 5676, + "DHDN / 3-degree Gauss-Kruger zone 2 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +"); + add_proj4text (p, 1, + "datum=potsdam +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / 3-degree Gauss-Kruger zone 2 (E-N)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-"); + add_srs_wkt (p, 4, + "2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",6],PARAMETER[\"scale_factor\",1],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",2500000],PARAMETER[\"false_northing\",0]"); + add_srs_wkt (p, 11, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E"); + add_srs_wkt (p, 12, + "asting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"5676\"]]"); + p = add_epsg_def (filter, first, last, 5677, "epsg", 5677, + "DHDN / 3-degree Gauss-Kruger zone 3 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); + add_proj4text (p, 1, + "datum=potsdam +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / 3-degree Gauss-Kruger zone 3 (E-N)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-"); + add_srs_wkt (p, 4, + "2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",9],PARAMETER[\"scale_factor\",1],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",3500000],PARAMETER[\"false_northing\",0]"); + add_srs_wkt (p, 11, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E"); + add_srs_wkt (p, 12, + "asting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"5677\"]]"); + p = add_epsg_def (filter, first, last, 5678, "epsg", 5678, + "DHDN / 3-degree Gauss-Kruger zone 4 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+datum=potsdam +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / 3-degree Gauss-Kruger zone 4 (E-N)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-"); + add_srs_wkt (p, 4, + "2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",12],PARAMETER[\"scale_factor\",1],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",4500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"5678\"]]"); + p = add_epsg_def (filter, first, last, 5679, "epsg", 5679, + "DHDN / 3-degree Gauss-Kruger zone 5 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+datum=potsdam +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / 3-degree Gauss-Kruger zone 5 (E-N)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-"); + add_srs_wkt (p, 4, + "2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",15],PARAMETER[\"scale_factor\",1],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",5500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"5679\"]]"); + p = add_epsg_def (filter, first, last, 5680, "epsg", 5680, + "DHDN / 3-degree Gauss-Kruger zone 1 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +"); + add_proj4text (p, 1, + "datum=potsdam +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / 3-degree Gauss-Kruger zone 1 (E-N)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-"); + add_srs_wkt (p, 4, + "2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",3],PARAMETER[\"scale_factor\",1],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",1500000],PARAMETER[\"false_northing\",0]"); + add_srs_wkt (p, 11, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E"); + add_srs_wkt (p, 12, + "asting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"5680\"]]"); + p = add_epsg_def (filter, first, last, 5681, "epsg", 5681, + "DB_REF"); + add_proj4text (p, 0, + "+proj=longlat +ellps=bessel +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"DB_REF\",DATUM[\"Deutsche_Bahn_Reference_System"); + add_srs_wkt (p, 1, + "\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"1081\"]],"); + add_srs_wkt (p, 3, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 4, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 5, + "2\"]],AUTHORITY[\"EPSG\",\"5681\"]]"); + p = add_epsg_def (filter, first, last, 5682, "epsg", 5682, + "DB_REF / 3-degree Gauss-Kruger zone 2 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DB_REF / 3-degree Gauss-Kruger zone 2 (E-N)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"DB_REF\",DATUM[\"Deutsche_Bahn_Reference_System\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"1081\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"5681\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",6],PARAMETER[\"scale_factor\",1]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",2500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"5682\"]]"); + p = add_epsg_def (filter, first, last, 5683, "epsg", 5683, + "DB_REF / 3-degree Gauss-Kruger zone 3 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DB_REF / 3-degree Gauss-Kruger zone 3 (E-N)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"DB_REF\",DATUM[\"Deutsche_Bahn_Reference_System\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"1081\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"5681\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",9],PARAMETER[\"scale_factor\",1]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",3500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"5683\"]]"); + p = add_epsg_def (filter, first, last, 5684, "epsg", 5684, + "DB_REF / 3-degree Gauss-Kruger zone 4 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DB_REF / 3-degree Gauss-Kruger zone 4 (E-N)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"DB_REF\",DATUM[\"Deutsche_Bahn_Reference_System\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"1081\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"5681\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",12],PARAMETER[\"scale_factor\",1"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",4500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"5684\"]]"); + p = add_epsg_def (filter, first, last, 5685, "epsg", 5685, + "DB_REF / 3-degree Gauss-Kruger zone 5 (E-N)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DB_REF / 3-degree Gauss-Kruger zone 5 (E-N)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"DB_REF\",DATUM[\"Deutsche_Bahn_Reference_System\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7004\"]],AUTHORITY[\"EPSG\",\"1081\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"5681\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",15],PARAMETER[\"scale_factor\",1"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",5500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"5685\"]]"); + p = add_epsg_def (filter, first, last, 5700, "epsg", 5700, + "NZGD2000 / UTM zone 1S"); + add_proj4text (p, 0, + "+proj=utm +zone=1 +south +ellps=GRS80 +towgs84=0,0,0,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD2000 / UTM zone 1S\",GEOGCS[\"NZGD2000\",DA"); + add_srs_wkt (p, 1, + "TUM[\"New_Zealand_Geodetic_Datum_2000\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6167\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4167\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-177],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"5700\"]]"); + p = add_epsg_def (filter, first, last, 5825, "epsg", 5825, + "AGD66 / ACT Standard Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-35.31773627777778 +lon_0=149.0092948"); + add_proj4text (p, 1, + "305555 +k=1.000086 +x_0=200000 +y_0=600000 +ellps=aust_S"); + add_proj4text (p, 2, + "A +towgs84=-117.808,-51.536,137.784,0.303,0.446,0.234,-0"); + add_proj4text (p, 3, + ".29 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD66 / ACT Standard Grid\",GEOGCS[\"AGD66\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Australian_Geodetic_Datum_1966\",SPHEROID[\"Austra"); + add_srs_wkt (p, 2, + "lian National Spheroid\",6378160,298.25,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.4"); + add_srs_wkt (p, 4, + "46,0.234,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"G"); + add_srs_wkt (p, 5, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 6, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 7, + "ORITY[\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 8, + "or\"],PARAMETER[\"latitude_of_origin\",-35.3177362777777"); + add_srs_wkt (p, 9, + "8],PARAMETER[\"central_meridian\",149.0092948305555],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"scale_factor\",1.000086],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",200000],PARAMETER[\"false_northing\",600000],UNIT["); + add_srs_wkt (p, 12, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 13, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5"); + add_srs_wkt (p, 14, + "825\"]]"); + p = add_epsg_def (filter, first, last, 5836, "epsg", 5836, + "Yemen NGN96 / UTM zone 37N"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Yemen NGN96 / UTM zone 37N\",GEOGCS[\"Yemen NGN"); + add_srs_wkt (p, 1, + "96\",DATUM[\"Yemen_National_Geodetic_Network_1996\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6163\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4163\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",39],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"5836\"]]"); + p = add_epsg_def (filter, first, last, 5837, "epsg", 5837, + "Yemen NGN96 / UTM zone 40N"); + add_proj4text (p, 0, + "+proj=utm +zone=40 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Yemen NGN96 / UTM zone 40N\",GEOGCS[\"Yemen NGN"); + add_srs_wkt (p, 1, + "96\",DATUM[\"Yemen_National_Geodetic_Network_1996\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6163\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4163\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",57],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"5837\"]]"); + p = add_epsg_def (filter, first, last, 5839, "epsg", 5839, + "Peru96 / UTM zone 17S"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Peru96 / UTM zone 17S\",GEOGCS[\"Peru96\",DATUM"); + add_srs_wkt (p, 1, + "[\"Peru96\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1067\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"53"); + add_srs_wkt (p, 6, + "73\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 7, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-8"); + add_srs_wkt (p, 8, + "1],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 9, + "easting\",500000],PARAMETER[\"false_northing\",10000000]"); + add_srs_wkt (p, 10, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E"); + add_srs_wkt (p, 11, + "asting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"5839\"]]"); + p = add_epsg_def (filter, first, last, 5842, "epsg", 5842, + "WGS 84 / TM 12 SE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / TM 12 SE\",GEOGCS[\"WGS 84\",DATUM[\"W"); + add_srs_wkt (p, 1, + "GS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],"); + add_srs_wkt (p, 3, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 4, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 5, + "2\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 6, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 7, + "METER[\"central_meridian\",12],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 8, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"5842\"]]"); + p = add_epsg_def (filter, first, last, 5844, "epsg", 5844, + "RGRDC 2005 / Congo TM zone 30"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RGRDC 2005 / Congo TM zone 30\",GEOGCS[\"RGRDC "); + add_srs_wkt (p, 1, + "2005\",DATUM[\"Reseau_Geodesique_de_la_RDC_2005\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1033\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4046\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",30],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"5844\"]]"); + p = add_epsg_def (filter, first, last, 5858, "epsg", 5858, + "SAD69(96) / UTM zone 22S"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-67.35"); + add_proj4text (p, 1, + ",3.88,-38.22,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69(96) / UTM zone 22S\",GEOGCS[\"SAD69(96)\""); + add_srs_wkt (p, 1, + ",DATUM[\"South_American_Datum_1969_96\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-67.35,3.88,-38.22,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1075\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5527\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-51],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5858\"]]"); + p = add_epsg_def (filter, first, last, 5875, "epsg", 5875, + "SAD69(96) / UTM zone 18S"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +south +ellps=aust_SA +towgs84=-67.35"); + add_proj4text (p, 1, + ",3.88,-38.22,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69(96) / UTM zone 18S\",GEOGCS[\"SAD69(96)\""); + add_srs_wkt (p, 1, + ",DATUM[\"South_American_Datum_1969_96\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-67.35,3.88,-38.22,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1075\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5527\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-75],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5875\"]]"); + p = add_epsg_def (filter, first, last, 5876, "epsg", 5876, + "SAD69(96) / UTM zone 19S"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +south +ellps=aust_SA +towgs84=-67.35"); + add_proj4text (p, 1, + ",3.88,-38.22,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69(96) / UTM zone 19S\",GEOGCS[\"SAD69(96)\""); + add_srs_wkt (p, 1, + ",DATUM[\"South_American_Datum_1969_96\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-67.35,3.88,-38.22,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1075\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5527\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-69],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5876\"]]"); + p = add_epsg_def (filter, first, last, 5877, "epsg", 5877, + "SAD69(96) / UTM zone 20S"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +south +ellps=aust_SA +towgs84=-67.35"); + add_proj4text (p, 1, + ",3.88,-38.22,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69(96) / UTM zone 20S\",GEOGCS[\"SAD69(96)\""); + add_srs_wkt (p, 1, + ",DATUM[\"South_American_Datum_1969_96\",SPHEROID[\"GRS 1"); + add_srs_wkt (p, 2, + "967 Modified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-67.35,3.88,-38.22,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1075\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"5527\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-63],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5877\"]]"); + p = add_epsg_def (filter, first, last, 5879, "epsg", 5879, + "Cadastre 1997 / UTM zone 38S"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +south +ellps=intl +towgs84=-381.788,"); + add_proj4text (p, 1, + "-57.501,-256.673,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cadastre 1997 / UTM zone 38S\",GEOGCS[\"Cadastr"); + add_srs_wkt (p, 1, + "e 1997\",DATUM[\"Cadastre_1997\",SPHEROID[\"Internationa"); + add_srs_wkt (p, 2, + "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[-381.788,-57.501,-256.673,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1037\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4475\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",45],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); + add_srs_wkt (p, 12, + "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5879\"]]"); + p = add_epsg_def (filter, first, last, 5880, "epsg", 5880, + "SIRGAS 2000 / Brazil Polyconic"); + add_proj4text (p, 0, + "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=1000000"); + add_proj4text (p, 1, + "0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / Brazil Polyconic\",GEOGCS[\"SIRGA"); + add_srs_wkt (p, 1, + "S 2000\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_"); + add_srs_wkt (p, 2, + "las_AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4674\"]],PROJECTION[\"Polyconic\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",-54]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",5000000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"5880\"]]"); + p = add_epsg_def (filter, first, last, 5886, "epsg", 5886, + "TGD2005"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"TGD2005\",DATUM[\"Tonga_Geodetic_Datum_2005\",S"); + add_srs_wkt (p, 1, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 2, + "PSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1095\"]],PRIMEM[\""); + add_srs_wkt (p, 3, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 4, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"5886\"]]"); + p = add_epsg_def (filter, first, last, 5887, "epsg", 5887, + "TGD2005 / Tonga Map Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-177 +k=0.9996 +x_0=1500000 "); + add_proj4text (p, 1, + "+y_0=5000000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TGD2005 / Tonga Map Grid\",GEOGCS[\"TGD2005\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Tonga_Geodetic_Datum_2005\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1095\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"58"); + add_srs_wkt (p, 6, + "86\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 7, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",-1"); + add_srs_wkt (p, 8, + "77],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",1500000],PARAMETER[\"false_northing\",5000000"); + add_srs_wkt (p, 10, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"5887\"]]"); + p = add_epsg_def (filter, first, last, 5890, "epsg", 5890, + "JAXA Snow Depth Polar Stereographic North"); + add_proj4text (p, 0, + "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=90 +k=1 +x_0=0 +"); + add_proj4text (p, 1, + "y_0=0 +a=6378273 +b=6356889.449 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JAXA Snow Depth Polar Stereographic North\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"Unspecified datum based upon the Hughes 1980 ellip"); + add_srs_wkt (p, 2, + "soid\",DATUM[\"Not_specified_based_on_Hughes_1980_ellips"); + add_srs_wkt (p, 3, + "oid\",SPHEROID[\"Hughes 1980\",6378273,298.279411123061,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"7058\"]],AUTHORITY[\"EPSG\",\"6054\""); + add_srs_wkt (p, 5, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 6, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "9122\"]],AUTHORITY[\"EPSG\",\"4054\"]],PROJECTION[\"Pola"); + add_srs_wkt (p, 8, + "r_Stereographic\"],PARAMETER[\"latitude_of_origin\",70],"); + add_srs_wkt (p, 9, + "PARAMETER[\"central_meridian\",90],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 10, + "tor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 12, + "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"5890\"]]"); + p = add_epsg_def (filter, first, last, 5921, "epsg", 5921, + "WGS 84 / EPSG Arctic Regional zone A1"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +"); + add_proj4text (p, 1, + "lon_0=-111 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic Regional zone A1\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",85],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "2\",77],PARAMETER[\"latitude_of_origin\",81.317226],PARA"); + add_srs_wkt (p, 9, + "METER[\"central_meridian\",-111],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5921\"]]"); + p = add_epsg_def (filter, first, last, 5922, "epsg", 5922, + "WGS 84 / EPSG Arctic Regional zone A2"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +"); + add_proj4text (p, 1, + "lon_0=-39 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic Regional zone A2\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",85],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "2\",77],PARAMETER[\"latitude_of_origin\",81.317226],PARA"); + add_srs_wkt (p, 9, + "METER[\"central_meridian\",-39],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5922\"]]"); + p = add_epsg_def (filter, first, last, 5923, "epsg", 5923, + "WGS 84 / EPSG Arctic Regional zone A3"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +"); + add_proj4text (p, 1, + "lon_0=33 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic Regional zone A3\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",85],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "2\",77],PARAMETER[\"latitude_of_origin\",81.317226],PARA"); + add_srs_wkt (p, 9, + "METER[\"central_meridian\",33],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5923\"]]"); + p = add_epsg_def (filter, first, last, 5924, "epsg", 5924, + "WGS 84 / EPSG Arctic Regional zone A4"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +"); + add_proj4text (p, 1, + "lon_0=105 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic Regional zone A4\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",85],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "2\",77],PARAMETER[\"latitude_of_origin\",81.317226],PARA"); + add_srs_wkt (p, 9, + "METER[\"central_meridian\",105],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5924\"]]"); + p = add_epsg_def (filter, first, last, 5925, "epsg", 5925, + "WGS 84 / EPSG Arctic Regional zone A5"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=85 +lat_2=77 +lat_0=81.31722600000001 +"); + add_proj4text (p, 1, + "lon_0=177 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic Regional zone A5\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",85],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "2\",77],PARAMETER[\"latitude_of_origin\",81.317226],PARA"); + add_srs_wkt (p, 9, + "METER[\"central_meridian\",177],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5925\"]]"); + p = add_epsg_def (filter, first, last, 5926, "epsg", 5926, + "WGS 84 / EPSG Arctic Regional zone B1"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +"); + add_proj4text (p, 1, + "lon_0=-111 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic Regional zone B1\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",77],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "2\",69],PARAMETER[\"latitude_of_origin\",73.155740861111"); + add_srs_wkt (p, 9, + "11],PARAMETER[\"central_meridian\",-111],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\","); + add_srs_wkt (p, 12, + "EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5926"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 5927, "epsg", 5927, + "WGS 84 / EPSG Arctic Regional zone B2"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +"); + add_proj4text (p, 1, + "lon_0=-39 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic Regional zone B2\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",77],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "2\",69],PARAMETER[\"latitude_of_origin\",73.155740861111"); + add_srs_wkt (p, 9, + "11],PARAMETER[\"central_meridian\",-39],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5927\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 5928, "epsg", 5928, + "WGS 84 / EPSG Arctic Regional zone B3"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +"); + add_proj4text (p, 1, + "lon_0=33 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic Regional zone B3\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",77],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "2\",69],PARAMETER[\"latitude_of_origin\",73.155740861111"); + add_srs_wkt (p, 9, + "11],PARAMETER[\"central_meridian\",33],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EA"); + add_srs_wkt (p, 12, + "ST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5928\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 5929, "epsg", 5929, + "WGS 84 / EPSG Arctic Regional zone B4"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +"); + add_proj4text (p, 1, + "lon_0=105 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic Regional zone B4\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",77],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "2\",69],PARAMETER[\"latitude_of_origin\",73.155740861111"); + add_srs_wkt (p, 9, + "11],PARAMETER[\"central_meridian\",105],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5929\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 5930, "epsg", 5930, + "WGS 84 / EPSG Arctic Regional zone B5"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=69 +lat_0=73.15574086111111 +"); + add_proj4text (p, 1, + "lon_0=177 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic Regional zone B5\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",77],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "2\",69],PARAMETER[\"latitude_of_origin\",73.155740861111"); + add_srs_wkt (p, 9, + "11],PARAMETER[\"central_meridian\",177],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5930\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 5931, "epsg", 5931, + "WGS 84 / EPSG Arctic Regional zone C1"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +"); + add_proj4text (p, 1, + "lon_0=-111 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic Regional zone C1\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",69],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "2\",61],PARAMETER[\"latitude_of_origin\",65.101270888888"); + add_srs_wkt (p, 9, + "88],PARAMETER[\"central_meridian\",-111],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\","); + add_srs_wkt (p, 12, + "EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5931"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 5932, "epsg", 5932, + "WGS 84 / EPSG Arctic Regional zone C2"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +"); + add_proj4text (p, 1, + "lon_0=-39 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic Regional zone C2\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",69],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "2\",61],PARAMETER[\"latitude_of_origin\",65.101270888888"); + add_srs_wkt (p, 9, + "88],PARAMETER[\"central_meridian\",-39],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5932\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 5933, "epsg", 5933, + "WGS 84 / EPSG Arctic Regional zone C3"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +"); + add_proj4text (p, 1, + "lon_0=33 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic Regional zone C3\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",69],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "2\",61],PARAMETER[\"latitude_of_origin\",65.101270888888"); + add_srs_wkt (p, 9, + "88],PARAMETER[\"central_meridian\",33],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EA"); + add_srs_wkt (p, 12, + "ST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5933\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 5934, "epsg", 5934, + "WGS 84 / EPSG Arctic Regional zone C4"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +"); + add_proj4text (p, 1, + "lon_0=105 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic Regional zone C4\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",69],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "2\",61],PARAMETER[\"latitude_of_origin\",65.101270888888"); + add_srs_wkt (p, 9, + "88],PARAMETER[\"central_meridian\",105],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5934\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 5935, "epsg", 5935, + "WGS 84 / EPSG Arctic Regional zone C5"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=69 +lat_2=61 +lat_0=65.10127088888888 +"); + add_proj4text (p, 1, + "lon_0=177 +x_0=0 +y_0=0 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic Regional zone C5\",GEOGCS["); + add_srs_wkt (p, 1, + "\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],"); + add_srs_wkt (p, 6, + "PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "standard_parallel_1\",69],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "2\",61],PARAMETER[\"latitude_of_origin\",65.101270888888"); + add_srs_wkt (p, 9, + "88],PARAMETER[\"central_meridian\",177],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"5935\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 5936, "epsg", 5936, + "WGS 84 / EPSG Alaska Polar Stereographic"); + add_proj4text (p, 0, + "+proj=stere +lat_0=90 +lat_ts=90 +lon_0=-150 +k=0.994 +x"); + add_proj4text (p, 1, + "_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Alaska Polar Stereographic\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637"); + add_srs_wkt (p, 2, + "8137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Polar_Stereographic\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",90],PARAMETER[\"central_meridian\",-150]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",0.994],PARAMETER[\"false_eas"); + add_srs_wkt (p, 9, + "ting\",2000000],PARAMETER[\"false_northing\",2000000],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); + add_srs_wkt (p, 11, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5936\"]]"); + p = add_epsg_def (filter, first, last, 5937, "epsg", 5937, + "WGS 84 / EPSG Canada Polar Stereographic"); + add_proj4text (p, 0, + "+proj=stere +lat_0=90 +lat_ts=90 +lon_0=-100 +k=0.994 +x"); + add_proj4text (p, 1, + "_0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Canada Polar Stereographic\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637"); + add_srs_wkt (p, 2, + "8137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Polar_Stereographic\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",90],PARAMETER[\"central_meridian\",-100]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"scale_factor\",0.994],PARAMETER[\"false_eas"); + add_srs_wkt (p, 9, + "ting\",2000000],PARAMETER[\"false_northing\",2000000],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); + add_srs_wkt (p, 11, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5937\"]]"); + p = add_epsg_def (filter, first, last, 5938, "epsg", 5938, + "WGS 84 / EPSG Greenland Polar Stereographic"); + add_proj4text (p, 0, + "+proj=stere +lat_0=90 +lat_ts=90 +lon_0=-33 +k=0.994 +x_"); + add_proj4text (p, 1, + "0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Greenland Polar Stereographic\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\","); + add_srs_wkt (p, 2, + "6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"432"); + add_srs_wkt (p, 6, + "6\"]],PROJECTION[\"Polar_Stereographic\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",90],PARAMETER[\"central_meridian\",-3"); + add_srs_wkt (p, 8, + "3],PARAMETER[\"scale_factor\",0.994],PARAMETER[\"false_e"); + add_srs_wkt (p, 9, + "asting\",2000000],PARAMETER[\"false_northing\",2000000],"); + add_srs_wkt (p, 10, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 11, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5938\"]]"); + p = add_epsg_def (filter, first, last, 5939, "epsg", 5939, + "WGS 84 / EPSG Norway Polar Stereographic"); + add_proj4text (p, 0, + "+proj=stere +lat_0=90 +lat_ts=90 +lon_0=18 +k=0.994 +x_0"); + add_proj4text (p, 1, + "=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Norway Polar Stereographic\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637"); + add_srs_wkt (p, 2, + "8137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Polar_Stereographic\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",90],PARAMETER[\"central_meridian\",18],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"scale_factor\",0.994],PARAMETER[\"false_easti"); + add_srs_wkt (p, 9, + "ng\",2000000],PARAMETER[\"false_northing\",2000000],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 11, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5939\"]]"); + p = add_epsg_def (filter, first, last, 5940, "epsg", 5940, + "WGS 84 / EPSG Russia Polar Stereographic"); + add_proj4text (p, 0, + "+proj=stere +lat_0=90 +lat_ts=90 +lon_0=105 +k=0.994 +x_"); + add_proj4text (p, 1, + "0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Russia Polar Stereographic\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",637"); + add_srs_wkt (p, 2, + "8137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\""); + add_srs_wkt (p, 6, + "]],PROJECTION[\"Polar_Stereographic\"],PARAMETER[\"latit"); + add_srs_wkt (p, 7, + "ude_of_origin\",90],PARAMETER[\"central_meridian\",105],"); + add_srs_wkt (p, 8, + "PARAMETER[\"scale_factor\",0.994],PARAMETER[\"false_east"); + add_srs_wkt (p, 9, + "ing\",2000000],PARAMETER[\"false_northing\",2000000],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 11, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"5940\"]]"); + p = add_epsg_def (filter, first, last, 6050, "epsg", 6050, + "GR96 / EPSG Arctic zone 1-25"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.4"); + add_proj4text (p, 1, + "3711833333333 +lon_0=-30 +x_0=25500000 +y_0=1500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 1-25\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",87],PARAMETER["); + add_srs_wkt (p, 8, + "\"standard_parallel_2\",83.66666666666667],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_origin\",85.43711833333333],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-30],PARAMETER[\"false_easting\",25500000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",1500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6050\"]]"); + p = add_epsg_def (filter, first, last, 6051, "epsg", 6051, + "GR96 / EPSG Arctic zone 2-18"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=82.05842488888888 +lon_0=-52 +x_0=18500000 +y"); + add_proj4text (p, 2, + "_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 2-18\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",83.66666666666"); + add_srs_wkt (p, 8, + "667],PARAMETER[\"standard_parallel_2\",80.33333333333333"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",82.05842488888888],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-52],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",18500000],PARAMETER[\"false_northing\",2500000],UN"); + add_srs_wkt (p, 12, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 13, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"6051\"]]"); + p = add_epsg_def (filter, first, last, 6052, "epsg", 6052, + "GR96 / EPSG Arctic zone 2-20"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=82.05842488888888 +lon_0=-12 +x_0=20500000 +y"); + add_proj4text (p, 2, + "_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 2-20\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",83.66666666666"); + add_srs_wkt (p, 8, + "667],PARAMETER[\"standard_parallel_2\",80.33333333333333"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",82.05842488888888],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-12],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",20500000],PARAMETER[\"false_northing\",2500000],UN"); + add_srs_wkt (p, 12, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 13, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"6052\"]]"); + p = add_epsg_def (filter, first, last, 6053, "epsg", 6053, + "GR96 / EPSG Arctic zone 3-29"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.7"); + add_proj4text (p, 1, + "0733752777778 +lon_0=-69 +x_0=29500000 +y_0=3500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 3-29\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",80.33333333333"); + add_srs_wkt (p, 8, + "333],PARAMETER[\"standard_parallel_2\",77],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_origin\",78.70733752777778],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-69],PARAMETER[\"false_easting\",29500000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",3500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6053\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_28.c b/src/spatialite/src/srsinit/epsg_inlined_28.c new file mode 100644 index 0000000..fb6b23a --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_28.c @@ -0,0 +1,3594 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_28 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 6054, "epsg", 6054, + "GR96 / EPSG Arctic zone 3-31"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.7"); + add_proj4text (p, 1, + "0733752777778 +lon_0=-39 +x_0=31500000 +y_0=3500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 3-31\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",80.33333333333"); + add_srs_wkt (p, 8, + "333],PARAMETER[\"standard_parallel_2\",77],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_origin\",78.70733752777778],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-39],PARAMETER[\"false_easting\",31500000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",3500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6054\"]]"); + p = add_epsg_def (filter, first, last, 6055, "epsg", 6055, + "GR96 / EPSG Arctic zone 3-33"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.7"); + add_proj4text (p, 1, + "0733752777778 +lon_0=-10 +x_0=33500000 +y_0=3500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 3-33\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",80.33333333333"); + add_srs_wkt (p, 8, + "333],PARAMETER[\"standard_parallel_2\",77],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_origin\",78.70733752777778],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-10],PARAMETER[\"false_easting\",33500000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",3500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6055\"]]"); + p = add_epsg_def (filter, first, last, 6056, "epsg", 6056, + "GR96 / EPSG Arctic zone 4-20"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.3"); + add_proj4text (p, 1, + "6440330555556 +lon_0=-64 +x_0=20500000 +y_0=4500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 4-20\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",77],PARAMETER["); + add_srs_wkt (p, 8, + "\"standard_parallel_2\",73.66666666666667],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_origin\",75.36440330555556],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-64],PARAMETER[\"false_easting\",20500000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",4500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6056\"]]"); + p = add_epsg_def (filter, first, last, 6057, "epsg", 6057, + "GR96 / EPSG Arctic zone 4-22"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.3"); + add_proj4text (p, 1, + "6440330555556 +lon_0=-39 +x_0=22500000 +y_0=4500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 4-22\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",77],PARAMETER["); + add_srs_wkt (p, 8, + "\"standard_parallel_2\",73.66666666666667],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_origin\",75.36440330555556],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-39],PARAMETER[\"false_easting\",22500000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",4500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6057\"]]"); + p = add_epsg_def (filter, first, last, 6058, "epsg", 6058, + "GR96 / EPSG Arctic zone 4-24"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.3"); + add_proj4text (p, 1, + "6440330555556 +lon_0=-14 +x_0=24500000 +y_0=4500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 4-24\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",77],PARAMETER["); + add_srs_wkt (p, 8, + "\"standard_parallel_2\",73.66666666666667],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_origin\",75.36440330555556],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-14],PARAMETER[\"false_easting\",24500000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",4500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6058\"]]"); + p = add_epsg_def (filter, first, last, 6059, "epsg", 6059, + "GR96 / EPSG Arctic zone 5-41"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=-62 +x_0=41500000 +y"); + add_proj4text (p, 2, + "_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 5-41\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",73.66666666666"); + add_srs_wkt (p, 8, + "667],PARAMETER[\"standard_parallel_2\",70.33333333333333"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",72.02500919444445],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-62],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",41500000],PARAMETER[\"false_northing\",5500000],UN"); + add_srs_wkt (p, 12, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 13, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"6059\"]]"); + p = add_epsg_def (filter, first, last, 6060, "epsg", 6060, + "GR96 / EPSG Arctic zone 5-43"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=-42 +x_0=43500000 +y"); + add_proj4text (p, 2, + "_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 5-43\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",73.66666666666"); + add_srs_wkt (p, 8, + "667],PARAMETER[\"standard_parallel_2\",70.33333333333333"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",72.02500919444445],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-42],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",43500000],PARAMETER[\"false_northing\",5500000],UN"); + add_srs_wkt (p, 12, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 13, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"6060\"]]"); + p = add_epsg_def (filter, first, last, 6061, "epsg", 6061, + "GR96 / EPSG Arctic zone 5-45"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=-22 +x_0=45500000 +y"); + add_proj4text (p, 2, + "_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 5-45\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",73.66666666666"); + add_srs_wkt (p, 8, + "667],PARAMETER[\"standard_parallel_2\",70.33333333333333"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",72.02500919444445],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-22],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",45500000],PARAMETER[\"false_northing\",5500000],UN"); + add_srs_wkt (p, 12, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 13, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"6061\"]]"); + p = add_epsg_def (filter, first, last, 6062, "epsg", 6062, + "GR96 / EPSG Arctic zone 6-26"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.6"); + add_proj4text (p, 1, + "8747555555557 +lon_0=-56 +x_0=26500000 +y_0=6500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 6-26\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",70.33333333333"); + add_srs_wkt (p, 8, + "333],PARAMETER[\"standard_parallel_2\",67],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_origin\",68.68747555555557],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-56],PARAMETER[\"false_easting\",26500000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",6500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6062\"]]"); + p = add_epsg_def (filter, first, last, 6063, "epsg", 6063, + "GR96 / EPSG Arctic zone 6-28"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.6"); + add_proj4text (p, 1, + "8747555555557 +lon_0=-38 +x_0=28500000 +y_0=6500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 6-28\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",70.33333333333"); + add_srs_wkt (p, 8, + "333],PARAMETER[\"standard_parallel_2\",67],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_origin\",68.68747555555557],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-38],PARAMETER[\"false_easting\",28500000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",6500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6063\"]]"); + p = add_epsg_def (filter, first, last, 6064, "epsg", 6064, + "GR96 / EPSG Arctic zone 6-30"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.6"); + add_proj4text (p, 1, + "8747555555557 +lon_0=-20 +x_0=30500000 +y_0=6500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 6-30\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",70.33333333333"); + add_srs_wkt (p, 8, + "333],PARAMETER[\"standard_parallel_2\",67],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_origin\",68.68747555555557],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-20],PARAMETER[\"false_easting\",30500000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",6500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6064\"]]"); + p = add_epsg_def (filter, first, last, 6065, "epsg", 6065, + "GR96 / EPSG Arctic zone 7-11"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=67 +lat_2=63.66666666666666 +lat_0=65.3"); + add_proj4text (p, 1, + "5103930555555 +lon_0=-51 +x_0=11500000 +y_0=7500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 7-11\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",67],PARAMETER["); + add_srs_wkt (p, 8, + "\"standard_parallel_2\",63.66666666666666],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_origin\",65.35103930555555],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-51],PARAMETER[\"false_easting\",11500000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",7500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6065\"]]"); + p = add_epsg_def (filter, first, last, 6066, "epsg", 6066, + "GR96 / EPSG Arctic zone 7-13"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=67 +lat_2=63.66666666666666 +lat_0=65.3"); + add_proj4text (p, 1, + "5103930555555 +lon_0=-34 +x_0=13500000 +y_0=7500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 7-13\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",67],PARAMETER["); + add_srs_wkt (p, 8, + "\"standard_parallel_2\",63.66666666666666],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_origin\",65.35103930555555],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-34],PARAMETER[\"false_easting\",13500000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",7500000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6066\"]]"); + p = add_epsg_def (filter, first, last, 6067, "epsg", 6067, + "GR96 / EPSG Arctic zone 8-20"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=63.66666666666666 +lat_2=60.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=62.01530688888889 +lon_0=-52 +x_0=20500000 +y"); + add_proj4text (p, 2, + "_0=8500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 8-20\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",63.66666666666"); + add_srs_wkt (p, 8, + "666],PARAMETER[\"standard_parallel_2\",60.33333333333334"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",62.01530688888889],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-52],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",20500000],PARAMETER[\"false_northing\",8500000],UN"); + add_srs_wkt (p, 12, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 13, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"6067\"]]"); + p = add_epsg_def (filter, first, last, 6068, "epsg", 6068, + "GR96 / EPSG Arctic zone 8-22"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=63.66666666666666 +lat_2=60.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=62.01530688888889 +lon_0=-37 +x_0=22500000 +y"); + add_proj4text (p, 2, + "_0=8500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GR96 / EPSG Arctic zone 8-22\",GEOGCS[\"GR96\","); + add_srs_wkt (p, 1, + "DATUM[\"Greenland_1996\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6747\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4747\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",63.66666666666"); + add_srs_wkt (p, 8, + "666],PARAMETER[\"standard_parallel_2\",60.33333333333334"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",62.01530688888889],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-37],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",22500000],PARAMETER[\"false_northing\",8500000],UN"); + add_srs_wkt (p, 12, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 13, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"6068\"]]"); + p = add_epsg_def (filter, first, last, 6069, "epsg", 6069, + "ETRS89 / EPSG Arctic zone 2-22"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=82.05842488888888 +lon_0=16 +x_0=22500000 +y_"); + add_proj4text (p, 2, + "0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / EPSG Arctic zone 2-22\",GEOGCS[\"ETRS8"); + add_srs_wkt (p, 1, + "9\",DATUM[\"European_Terrestrial_Reference_System_1989\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",83.66666666666667],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",80.33333333333333],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",82.05842488888888],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 11, + "n\",16],PARAMETER[\"false_easting\",22500000],PARAMETER["); + add_srs_wkt (p, 12, + "\"false_northing\",2500000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 14, + "\",NORTH],AUTHORITY[\"EPSG\",\"6069\"]]"); + p = add_epsg_def (filter, first, last, 6070, "epsg", 6070, + "ETRS89 / EPSG Arctic zone 3-11"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.7"); + add_proj4text (p, 1, + "0733752777778 +lon_0=21 +x_0=11500000 +y_0=3500000 +ellp"); + add_proj4text (p, 2, + "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / EPSG Arctic zone 3-11\",GEOGCS[\"ETRS8"); + add_srs_wkt (p, 1, + "9\",DATUM[\"European_Terrestrial_Reference_System_1989\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",80.33333333333333],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",77],PARAMETER[\"latitude_of_origin\",78.70"); + add_srs_wkt (p, 10, + "733752777778],PARAMETER[\"central_meridian\",21],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_easting\",11500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 12, + "g\",3500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 13, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 14, + "RITY[\"EPSG\",\"6070\"]]"); + p = add_epsg_def (filter, first, last, 6071, "epsg", 6071, + "ETRS89 / EPSG Arctic zone 4-26"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.3"); + add_proj4text (p, 1, + "6440330555556 +lon_0=10 +x_0=26500000 +y_0=4500000 +ellp"); + add_proj4text (p, 2, + "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / EPSG Arctic zone 4-26\",GEOGCS[\"ETRS8"); + add_srs_wkt (p, 1, + "9\",DATUM[\"European_Terrestrial_Reference_System_1989\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",77],PARAMETER[\"standard_parallel_2\",7"); + add_srs_wkt (p, 9, + "3.66666666666667],PARAMETER[\"latitude_of_origin\",75.36"); + add_srs_wkt (p, 10, + "440330555556],PARAMETER[\"central_meridian\",10],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_easting\",26500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 12, + "g\",4500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 13, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 14, + "RITY[\"EPSG\",\"6071\"]]"); + p = add_epsg_def (filter, first, last, 6072, "epsg", 6072, + "ETRS89 / EPSG Arctic zone 4-28"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.3"); + add_proj4text (p, 1, + "6440330555556 +lon_0=34 +x_0=28500000 +y_0=4500000 +ellp"); + add_proj4text (p, 2, + "s=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / EPSG Arctic zone 4-28\",GEOGCS[\"ETRS8"); + add_srs_wkt (p, 1, + "9\",DATUM[\"European_Terrestrial_Reference_System_1989\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",77],PARAMETER[\"standard_parallel_2\",7"); + add_srs_wkt (p, 9, + "3.66666666666667],PARAMETER[\"latitude_of_origin\",75.36"); + add_srs_wkt (p, 10, + "440330555556],PARAMETER[\"central_meridian\",34],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_easting\",28500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 12, + "g\",4500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 13, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 14, + "RITY[\"EPSG\",\"6072\"]]"); + p = add_epsg_def (filter, first, last, 6073, "epsg", 6073, + "ETRS89 / EPSG Arctic zone 5-11"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=14 +x_0=11500000 +y_"); + add_proj4text (p, 2, + "0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / EPSG Arctic zone 5-11\",GEOGCS[\"ETRS8"); + add_srs_wkt (p, 1, + "9\",DATUM[\"European_Terrestrial_Reference_System_1989\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",73.66666666666667],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",70.33333333333333],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",72.02500919444445],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 11, + "n\",14],PARAMETER[\"false_easting\",11500000],PARAMETER["); + add_srs_wkt (p, 12, + "\"false_northing\",5500000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 14, + "\",NORTH],AUTHORITY[\"EPSG\",\"6073\"]]"); + p = add_epsg_def (filter, first, last, 6074, "epsg", 6074, + "ETRS89 / EPSG Arctic zone 5-13"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=34 +x_0=13500000 +y_"); + add_proj4text (p, 2, + "0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / EPSG Arctic zone 5-13\",GEOGCS[\"ETRS8"); + add_srs_wkt (p, 1, + "9\",DATUM[\"European_Terrestrial_Reference_System_1989\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",73.66666666666667],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",70.33333333333333],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",72.02500919444445],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 11, + "n\",34],PARAMETER[\"false_easting\",13500000],PARAMETER["); + add_srs_wkt (p, 12, + "\"false_northing\",5500000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 14, + "\",NORTH],AUTHORITY[\"EPSG\",\"6074\"]]"); + p = add_epsg_def (filter, first, last, 6075, "epsg", 6075, + "WGS 84 / EPSG Arctic zone 2-24"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=82.05842488888888 +lon_0=53 +x_0=24500000 +y_"); + add_proj4text (p, 2, + "0=2500000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 2-24\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",83.66666666666667],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",80.33333333333333],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 9, + "igin\",82.05842488888888],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",53],PARAMETER[\"false_easting\",24500000],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_northing\",2500000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"6075\"]]"); + p = add_epsg_def (filter, first, last, 6076, "epsg", 6076, + "WGS 84 / EPSG Arctic zone 2-26"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=82.05842488888888 +lon_0=93 +x_0=26500000 +y_"); + add_proj4text (p, 2, + "0=2500000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 2-26\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",83.66666666666667],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",80.33333333333333],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 9, + "igin\",82.05842488888888],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",93],PARAMETER[\"false_easting\",26500000],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_northing\",2500000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"6076\"]]"); + p = add_epsg_def (filter, first, last, 6077, "epsg", 6077, + "WGS 84 / EPSG Arctic zone 3-13"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.7"); + add_proj4text (p, 1, + "0733752777778 +lon_0=52 +x_0=13500000 +y_0=3500000 +datu"); + add_proj4text (p, 2, + "m=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 3-13\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",80.33333333333333],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",77],PARAMETER[\"latitude_of_origin\",78.70733"); + add_srs_wkt (p, 9, + "752777778],PARAMETER[\"central_meridian\",52],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",13500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",3500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6077\"]]"); + p = add_epsg_def (filter, first, last, 6078, "epsg", 6078, + "WGS 84 / EPSG Arctic zone 3-15"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.7"); + add_proj4text (p, 1, + "0733752777778 +lon_0=83 +x_0=15500000 +y_0=3500000 +datu"); + add_proj4text (p, 2, + "m=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 3-15\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",80.33333333333333],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",77],PARAMETER[\"latitude_of_origin\",78.70733"); + add_srs_wkt (p, 9, + "752777778],PARAMETER[\"central_meridian\",83],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",15500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",3500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6078\"]]"); + p = add_epsg_def (filter, first, last, 6079, "epsg", 6079, + "WGS 84 / EPSG Arctic zone 3-17"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.7"); + add_proj4text (p, 1, + "0733752777778 +lon_0=114 +x_0=17500000 +y_0=3500000 +dat"); + add_proj4text (p, 2, + "um=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 3-17\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",80.33333333333333],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",77],PARAMETER[\"latitude_of_origin\",78.70733"); + add_srs_wkt (p, 9, + "752777778],PARAMETER[\"central_meridian\",114],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",17500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",3500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6079\"]]"); + p = add_epsg_def (filter, first, last, 6080, "epsg", 6080, + "WGS 84 / EPSG Arctic zone 3-19"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.7"); + add_proj4text (p, 1, + "0733752777778 +lon_0=145 +x_0=19500000 +y_0=3500000 +dat"); + add_proj4text (p, 2, + "um=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 3-19\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",80.33333333333333],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",77],PARAMETER[\"latitude_of_origin\",78.70733"); + add_srs_wkt (p, 9, + "752777778],PARAMETER[\"central_meridian\",145],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",19500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",3500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6080\"]]"); + p = add_epsg_def (filter, first, last, 6081, "epsg", 6081, + "WGS 84 / EPSG Arctic zone 4-30"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.3"); + add_proj4text (p, 1, + "6440330555556 +lon_0=58 +x_0=30500000 +y_0=4500000 +datu"); + add_proj4text (p, 2, + "m=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 4-30\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",77],PARAMETER[\"standard_parallel_2\",73.6"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"latitude_of_origin\",75.36440"); + add_srs_wkt (p, 9, + "330555556],PARAMETER[\"central_meridian\",58],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",30500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",4500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6081\"]]"); + p = add_epsg_def (filter, first, last, 6082, "epsg", 6082, + "WGS 84 / EPSG Arctic zone 4-32"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.3"); + add_proj4text (p, 1, + "6440330555556 +lon_0=82 +x_0=32500000 +y_0=4500000 +datu"); + add_proj4text (p, 2, + "m=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 4-32\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",77],PARAMETER[\"standard_parallel_2\",73.6"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"latitude_of_origin\",75.36440"); + add_srs_wkt (p, 9, + "330555556],PARAMETER[\"central_meridian\",82],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",32500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",4500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6082\"]]"); + p = add_epsg_def (filter, first, last, 6083, "epsg", 6083, + "WGS 84 / EPSG Arctic zone 4-34"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.3"); + add_proj4text (p, 1, + "6440330555556 +lon_0=106 +x_0=34500000 +y_0=4500000 +dat"); + add_proj4text (p, 2, + "um=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 4-34\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",77],PARAMETER[\"standard_parallel_2\",73.6"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"latitude_of_origin\",75.36440"); + add_srs_wkt (p, 9, + "330555556],PARAMETER[\"central_meridian\",106],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",34500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",4500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6083\"]]"); + p = add_epsg_def (filter, first, last, 6084, "epsg", 6084, + "WGS 84 / EPSG Arctic zone 4-36"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.3"); + add_proj4text (p, 1, + "6440330555556 +lon_0=130 +x_0=36500000 +y_0=4500000 +dat"); + add_proj4text (p, 2, + "um=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 4-36\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",77],PARAMETER[\"standard_parallel_2\",73.6"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"latitude_of_origin\",75.36440"); + add_srs_wkt (p, 9, + "330555556],PARAMETER[\"central_meridian\",130],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",36500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",4500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6084\"]]"); + p = add_epsg_def (filter, first, last, 6085, "epsg", 6085, + "WGS 84 / EPSG Arctic zone 4-38"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.3"); + add_proj4text (p, 1, + "6440330555556 +lon_0=154 +x_0=38500000 +y_0=4500000 +dat"); + add_proj4text (p, 2, + "um=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 4-38\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",77],PARAMETER[\"standard_parallel_2\",73.6"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"latitude_of_origin\",75.36440"); + add_srs_wkt (p, 9, + "330555556],PARAMETER[\"central_meridian\",154],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",38500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",4500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6085\"]]"); + p = add_epsg_def (filter, first, last, 6086, "epsg", 6086, + "WGS 84 / EPSG Arctic zone 4-40"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.3"); + add_proj4text (p, 1, + "6440330555556 +lon_0=179 +x_0=40500000 +y_0=4500000 +dat"); + add_proj4text (p, 2, + "um=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 4-40\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",77],PARAMETER[\"standard_parallel_2\",73.6"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"latitude_of_origin\",75.36440"); + add_srs_wkt (p, 9, + "330555556],PARAMETER[\"central_meridian\",179],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",40500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",4500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6086\"]]"); + p = add_epsg_def (filter, first, last, 6087, "epsg", 6087, + "WGS 84 / EPSG Arctic zone 5-15"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=54 +x_0=15500000 +y_"); + add_proj4text (p, 2, + "0=5500000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 5-15\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",73.66666666666667],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",70.33333333333333],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 9, + "igin\",72.02500919444445],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",54],PARAMETER[\"false_easting\",15500000],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_northing\",5500000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"6087\"]]"); + p = add_epsg_def (filter, first, last, 6088, "epsg", 6088, + "WGS 84 / EPSG Arctic zone 5-17"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=74 +x_0=17500000 +y_"); + add_proj4text (p, 2, + "0=5500000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 5-17\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",73.66666666666667],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",70.33333333333333],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 9, + "igin\",72.02500919444445],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",74],PARAMETER[\"false_easting\",17500000],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_northing\",5500000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"6088\"]]"); + p = add_epsg_def (filter, first, last, 6089, "epsg", 6089, + "WGS 84 / EPSG Arctic zone 5-19"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=95 +x_0=19500000 +y_"); + add_proj4text (p, 2, + "0=5500000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 5-19\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",73.66666666666667],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",70.33333333333333],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 9, + "igin\",72.02500919444445],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",95],PARAMETER[\"false_easting\",19500000],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_northing\",5500000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"6089\"]]"); + p = add_epsg_def (filter, first, last, 6090, "epsg", 6090, + "WGS 84 / EPSG Arctic zone 5-21"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=116 +x_0=21500000 +y"); + add_proj4text (p, 2, + "_0=5500000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 5-21\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",73.66666666666667],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",70.33333333333333],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 9, + "igin\",72.02500919444445],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",116],PARAMETER[\"false_easting\",21500000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",5500000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"6090\"]]"); + p = add_epsg_def (filter, first, last, 6091, "epsg", 6091, + "WGS 84 / EPSG Arctic zone 5-23"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=137 +x_0=23500000 +y"); + add_proj4text (p, 2, + "_0=5500000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 5-23\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",73.66666666666667],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",70.33333333333333],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 9, + "igin\",72.02500919444445],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",137],PARAMETER[\"false_easting\",23500000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",5500000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"6091\"]]"); + p = add_epsg_def (filter, first, last, 6092, "epsg", 6092, + "WGS 84 / EPSG Arctic zone 5-25"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=158 +x_0=25500000 +y"); + add_proj4text (p, 2, + "_0=5500000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 5-25\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",73.66666666666667],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",70.33333333333333],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 9, + "igin\",72.02500919444445],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",158],PARAMETER[\"false_easting\",25500000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",5500000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"6092\"]]"); + p = add_epsg_def (filter, first, last, 6093, "epsg", 6093, + "WGS 84 / EPSG Arctic zone 5-27"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=179 +x_0=27500000 +y"); + add_proj4text (p, 2, + "_0=5500000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 5-27\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",73.66666666666667],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",70.33333333333333],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 9, + "igin\",72.02500919444445],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",179],PARAMETER[\"false_easting\",27500000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",5500000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"6093\"]]"); + p = add_epsg_def (filter, first, last, 6094, "epsg", 6094, + "NAD83(NSRS2007) / EPSG Arctic zone 5-29"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=-163 +x_0=29500000 +"); + add_proj4text (p, 2, + "y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 3, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / EPSG Arctic zone 5-29\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",73.66666666666667]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",70.33333333333333],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",72.02500919444445],PARAME"); + add_srs_wkt (p, 11, + "TER[\"central_meridian\",-163],PARAMETER[\"false_easting"); + add_srs_wkt (p, 12, + "\",29500000],PARAMETER[\"false_northing\",5500000],UNIT["); + add_srs_wkt (p, 13, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 14, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 15, + "094\"]]"); + p = add_epsg_def (filter, first, last, 6095, "epsg", 6095, + "NAD83(NSRS2007) / EPSG Arctic zone 5-31"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=-147 +x_0=31500000 +"); + add_proj4text (p, 2, + "y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 3, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / EPSG Arctic zone 5-31\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",73.66666666666667]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",70.33333333333333],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",72.02500919444445],PARAME"); + add_srs_wkt (p, 11, + "TER[\"central_meridian\",-147],PARAMETER[\"false_easting"); + add_srs_wkt (p, 12, + "\",31500000],PARAMETER[\"false_northing\",5500000],UNIT["); + add_srs_wkt (p, 13, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 14, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 15, + "095\"]]"); + p = add_epsg_def (filter, first, last, 6096, "epsg", 6096, + "NAD83(NSRS2007) / EPSG Arctic zone 6-14"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.6"); + add_proj4text (p, 1, + "8747555555557 +lon_0=-165 +x_0=14500000 +y_0=6500000 +el"); + add_proj4text (p, 2, + "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / EPSG Arctic zone 6-14\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",70.33333333333333]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",67],PARAMETER[\"latit"); + add_srs_wkt (p, 10, + "ude_of_origin\",68.68747555555557],PARAMETER[\"central_m"); + add_srs_wkt (p, 11, + "eridian\",-165],PARAMETER[\"false_easting\",14500000],PA"); + add_srs_wkt (p, 12, + "RAMETER[\"false_northing\",6500000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"6096\"]]"); + p = add_epsg_def (filter, first, last, 6097, "epsg", 6097, + "NAD83(NSRS2007) / EPSG Arctic zone 6-16"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.6"); + add_proj4text (p, 1, + "8747555555557 +lon_0=-147 +x_0=16500000 +y_0=6500000 +el"); + add_proj4text (p, 2, + "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / EPSG Arctic zone 6-16\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",70.33333333333333]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",67],PARAMETER[\"latit"); + add_srs_wkt (p, 10, + "ude_of_origin\",68.68747555555557],PARAMETER[\"central_m"); + add_srs_wkt (p, 11, + "eridian\",-147],PARAMETER[\"false_easting\",16500000],PA"); + add_srs_wkt (p, 12, + "RAMETER[\"false_northing\",6500000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"6097\"]]"); + p = add_epsg_def (filter, first, last, 6098, "epsg", 6098, + "NAD83(CSRS) / EPSG Arctic zone 1-23"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.4"); + add_proj4text (p, 1, + "3711833333333 +lon_0=-90 +x_0=23500000 +y_0=1500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 1-23\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",87],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 9, + "el_2\",83.66666666666667],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 10, + "\",85.43711833333333],PARAMETER[\"central_meridian\",-90"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_easting\",23500000],PARAMETER[\"fals"); + add_srs_wkt (p, 12, + "e_northing\",1500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 14, + "TH],AUTHORITY[\"EPSG\",\"6098\"]]"); + p = add_epsg_def (filter, first, last, 6099, "epsg", 6099, + "NAD83(CSRS) / EPSG Arctic zone 2-14"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=82.05842488888888 +lon_0=-115 +x_0=14500000 +"); + add_proj4text (p, 2, + "y_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 3, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 2-14\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",83.66666666666667],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",80.33333333333333],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",82.05842488888888],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-115],PARAMETER[\"false_easting\",14500000],"); + add_srs_wkt (p, 12, + "PARAMETER[\"false_northing\",2500000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 14, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6099\"]]"); + p = add_epsg_def (filter, first, last, 6100, "epsg", 6100, + "NAD83(CSRS) / EPSG Arctic zone 2-16"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=82.05842488888888 +lon_0=-75 +x_0=16500000 +y"); + add_proj4text (p, 2, + "_0=2500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 2-16\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",83.66666666666667],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",80.33333333333333],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",82.05842488888888],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-75],PARAMETER[\"false_easting\",16500000],P"); + add_srs_wkt (p, 12, + "ARAMETER[\"false_northing\",2500000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 13, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 14, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6100\"]]"); + p = add_epsg_def (filter, first, last, 6101, "epsg", 6101, + "NAD83(CSRS) / EPSG Arctic zone 3-25"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.7"); + add_proj4text (p, 1, + "0733752777778 +lon_0=-129 +x_0=25500000 +y_0=3500000 +el"); + add_proj4text (p, 2, + "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 3-25\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",80.33333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",77],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 10, + "\",78.70733752777778],PARAMETER[\"central_meridian\",-12"); + add_srs_wkt (p, 11, + "9],PARAMETER[\"false_easting\",25500000],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_northing\",3500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 14, + "ORTH],AUTHORITY[\"EPSG\",\"6101\"]]"); + p = add_epsg_def (filter, first, last, 6102, "epsg", 6102, + "NAD83(CSRS) / EPSG Arctic zone 3-27"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.7"); + add_proj4text (p, 1, + "0733752777778 +lon_0=-99 +x_0=27500000 +y_0=3500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 3-27\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",80.33333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",77],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 10, + "\",78.70733752777778],PARAMETER[\"central_meridian\",-99"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_easting\",27500000],PARAMETER[\"fals"); + add_srs_wkt (p, 12, + "e_northing\",3500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 14, + "TH],AUTHORITY[\"EPSG\",\"6102\"]]"); + p = add_epsg_def (filter, first, last, 6103, "epsg", 6103, + "NAD83(CSRS) / EPSG Arctic zone 3-29"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.7"); + add_proj4text (p, 1, + "0733752777778 +lon_0=-69 +x_0=29500000 +y_0=3500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 3-29\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",80.33333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",77],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 10, + "\",78.70733752777778],PARAMETER[\"central_meridian\",-69"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_easting\",29500000],PARAMETER[\"fals"); + add_srs_wkt (p, 12, + "e_northing\",3500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 14, + "TH],AUTHORITY[\"EPSG\",\"6103\"]]"); + p = add_epsg_def (filter, first, last, 6104, "epsg", 6104, + "NAD83(CSRS) / EPSG Arctic zone 4-14"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.3"); + add_proj4text (p, 1, + "6440330555556 +lon_0=-129 +x_0=14500000 +y_0=4500000 +el"); + add_proj4text (p, 2, + "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 4-14\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",77],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 9, + "el_2\",73.66666666666667],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 10, + "\",75.36440330555556],PARAMETER[\"central_meridian\",-12"); + add_srs_wkt (p, 11, + "9],PARAMETER[\"false_easting\",14500000],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_northing\",4500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 14, + "ORTH],AUTHORITY[\"EPSG\",\"6104\"]]"); + p = add_epsg_def (filter, first, last, 6105, "epsg", 6105, + "NAD83(CSRS) / EPSG Arctic zone 4-16"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.3"); + add_proj4text (p, 1, + "6440330555556 +lon_0=-104 +x_0=16500000 +y_0=4500000 +el"); + add_proj4text (p, 2, + "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 4-16\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",77],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 9, + "el_2\",73.66666666666667],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 10, + "\",75.36440330555556],PARAMETER[\"central_meridian\",-10"); + add_srs_wkt (p, 11, + "4],PARAMETER[\"false_easting\",16500000],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_northing\",4500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 14, + "ORTH],AUTHORITY[\"EPSG\",\"6105\"]]"); + p = add_epsg_def (filter, first, last, 6106, "epsg", 6106, + "NAD83(CSRS) / EPSG Arctic zone 4-18"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.3"); + add_proj4text (p, 1, + "6440330555556 +lon_0=-79 +x_0=18500000 +y_0=4500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 4-18\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",77],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 9, + "el_2\",73.66666666666667],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 10, + "\",75.36440330555556],PARAMETER[\"central_meridian\",-79"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_easting\",18500000],PARAMETER[\"fals"); + add_srs_wkt (p, 12, + "e_northing\",4500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 14, + "TH],AUTHORITY[\"EPSG\",\"6106\"]]"); + p = add_epsg_def (filter, first, last, 6107, "epsg", 6107, + "NAD83(CSRS) / EPSG Arctic zone 5-33"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=-131 +x_0=33500000 +"); + add_proj4text (p, 2, + "y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 3, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 5-33\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",73.66666666666667],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",70.33333333333333],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",72.02500919444445],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-131],PARAMETER[\"false_easting\",33500000],"); + add_srs_wkt (p, 12, + "PARAMETER[\"false_northing\",5500000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 14, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6107\"]]"); + p = add_epsg_def (filter, first, last, 6108, "epsg", 6108, + "NAD83(CSRS) / EPSG Arctic zone 5-35"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=-111 +x_0=35500000 +"); + add_proj4text (p, 2, + "y_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 3, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 5-35\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",73.66666666666667],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",70.33333333333333],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",72.02500919444445],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-111],PARAMETER[\"false_easting\",35500000],"); + add_srs_wkt (p, 12, + "PARAMETER[\"false_northing\",5500000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 14, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6108\"]]"); + p = add_epsg_def (filter, first, last, 6109, "epsg", 6109, + "NAD83(CSRS) / EPSG Arctic zone 5-37"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=-91 +x_0=37500000 +y"); + add_proj4text (p, 2, + "_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 5-37\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",73.66666666666667],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",70.33333333333333],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",72.02500919444445],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-91],PARAMETER[\"false_easting\",37500000],P"); + add_srs_wkt (p, 12, + "ARAMETER[\"false_northing\",5500000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 13, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 14, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6109\"]]"); + p = add_epsg_def (filter, first, last, 6110, "epsg", 6110, + "NAD83(CSRS) / EPSG Arctic zone 5-39"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=-71 +x_0=39500000 +y"); + add_proj4text (p, 2, + "_0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 5-39\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",73.66666666666667],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",70.33333333333333],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",72.02500919444445],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-71],PARAMETER[\"false_easting\",39500000],P"); + add_srs_wkt (p, 12, + "ARAMETER[\"false_northing\",5500000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 13, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 14, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6110\"]]"); + p = add_epsg_def (filter, first, last, 6111, "epsg", 6111, + "NAD83(CSRS) / EPSG Arctic zone 6-18"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.6"); + add_proj4text (p, 1, + "8747555555557 +lon_0=-132 +x_0=18500000 +y_0=6500000 +el"); + add_proj4text (p, 2, + "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 6-18\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",70.33333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",67],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 10, + "\",68.68747555555557],PARAMETER[\"central_meridian\",-13"); + add_srs_wkt (p, 11, + "2],PARAMETER[\"false_easting\",18500000],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_northing\",6500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 14, + "ORTH],AUTHORITY[\"EPSG\",\"6111\"]]"); + p = add_epsg_def (filter, first, last, 6112, "epsg", 6112, + "NAD83(CSRS) / EPSG Arctic zone 6-20"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.6"); + add_proj4text (p, 1, + "8747555555557 +lon_0=-113 +x_0=20500000 +y_0=6500000 +el"); + add_proj4text (p, 2, + "lps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 6-20\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",70.33333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",67],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 10, + "\",68.68747555555557],PARAMETER[\"central_meridian\",-11"); + add_srs_wkt (p, 11, + "3],PARAMETER[\"false_easting\",20500000],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_northing\",6500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 14, + "ORTH],AUTHORITY[\"EPSG\",\"6112\"]]"); + p = add_epsg_def (filter, first, last, 6113, "epsg", 6113, + "NAD83(CSRS) / EPSG Arctic zone 6-22"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.6"); + add_proj4text (p, 1, + "8747555555557 +lon_0=-94 +x_0=22500000 +y_0=6500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 6-22\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",70.33333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",67],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 10, + "\",68.68747555555557],PARAMETER[\"central_meridian\",-94"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_easting\",22500000],PARAMETER[\"fals"); + add_srs_wkt (p, 12, + "e_northing\",6500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 14, + "TH],AUTHORITY[\"EPSG\",\"6113\"]]"); + p = add_epsg_def (filter, first, last, 6114, "epsg", 6114, + "NAD83(CSRS) / EPSG Arctic zone 6-24"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.6"); + add_proj4text (p, 1, + "8747555555557 +lon_0=-75 +x_0=24500000 +y_0=6500000 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / EPSG Arctic zone 6-24\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(CSRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",70.33333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",67],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 10, + "\",68.68747555555557],PARAMETER[\"central_meridian\",-75"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_easting\",24500000],PARAMETER[\"fals"); + add_srs_wkt (p, 12, + "e_northing\",6500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 14, + "TH],AUTHORITY[\"EPSG\",\"6114\"]]"); + p = add_epsg_def (filter, first, last, 6115, "epsg", 6115, + "WGS 84 / EPSG Arctic zone 1-27"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.4"); + add_proj4text (p, 1, + "3711833333333 +lon_0=30 +x_0=27500000 +y_0=1500000 +datu"); + add_proj4text (p, 2, + "m=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 1-27\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",87],PARAMETER[\"standard_parallel_2\",83.6"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"latitude_of_origin\",85.43711"); + add_srs_wkt (p, 9, + "833333333],PARAMETER[\"central_meridian\",30],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",27500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",1500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6115\"]]"); + p = add_epsg_def (filter, first, last, 6116, "epsg", 6116, + "WGS 84 / EPSG Arctic zone 1-29"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.4"); + add_proj4text (p, 1, + "3711833333333 +lon_0=90 +x_0=29500000 +y_0=1500000 +datu"); + add_proj4text (p, 2, + "m=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 1-29\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",87],PARAMETER[\"standard_parallel_2\",83.6"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"latitude_of_origin\",85.43711"); + add_srs_wkt (p, 9, + "833333333],PARAMETER[\"central_meridian\",90],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",29500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",1500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6116\"]]"); + p = add_epsg_def (filter, first, last, 6117, "epsg", 6117, + "WGS 84 / EPSG Arctic zone 1-31"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.4"); + add_proj4text (p, 1, + "3711833333333 +lon_0=150 +x_0=31500000 +y_0=1500000 +dat"); + add_proj4text (p, 2, + "um=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 1-31\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",87],PARAMETER[\"standard_parallel_2\",83.6"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"latitude_of_origin\",85.43711"); + add_srs_wkt (p, 9, + "833333333],PARAMETER[\"central_meridian\",150],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",31500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",1500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6117\"]]"); + p = add_epsg_def (filter, first, last, 6118, "epsg", 6118, + "WGS 84 / EPSG Arctic zone 1-21"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=87 +lat_2=83.66666666666667 +lat_0=85.4"); + add_proj4text (p, 1, + "3711833333333 +lon_0=-150 +x_0=21500000 +y_0=1500000 +da"); + add_proj4text (p, 2, + "tum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 1-21\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",87],PARAMETER[\"standard_parallel_2\",83.6"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"latitude_of_origin\",85.43711"); + add_srs_wkt (p, 9, + "833333333],PARAMETER[\"central_meridian\",-150],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",21500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",1500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"6118\"]]"); + p = add_epsg_def (filter, first, last, 6119, "epsg", 6119, + "WGS 84 / EPSG Arctic zone 2-28"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=82.05842488888888 +lon_0=133 +x_0=28500000 +y"); + add_proj4text (p, 2, + "_0=2500000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 2-28\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",83.66666666666667],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",80.33333333333333],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 9, + "igin\",82.05842488888888],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",133],PARAMETER[\"false_easting\",28500000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",2500000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"6119\"]]"); + p = add_epsg_def (filter, first, last, 6120, "epsg", 6120, + "WGS 84 / EPSG Arctic zone 2-10"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=82.05842488888888 +lon_0=166 +x_0=10500000 +y"); + add_proj4text (p, 2, + "_0=2500000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 2-10\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",83.66666666666667],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",80.33333333333333],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 9, + "igin\",82.05842488888888],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",166],PARAMETER[\"false_easting\",10500000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",2500000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"6120\"]]"); + p = add_epsg_def (filter, first, last, 6121, "epsg", 6121, + "WGS 84 / EPSG Arctic zone 2-12"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=83.66666666666667 +lat_2=80.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=82.05842488888888 +lon_0=-154 +x_0=12500000 +"); + add_proj4text (p, 2, + "y_0=2500000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 2-12\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",83.66666666666667],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",80.33333333333333],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 9, + "igin\",82.05842488888888],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",-154],PARAMETER[\"false_easting\",12500000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",2500000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"6121\"]]"); + p = add_epsg_def (filter, first, last, 6122, "epsg", 6122, + "WGS 84 / EPSG Arctic zone 3-21"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.7"); + add_proj4text (p, 1, + "0733752777778 +lon_0=176 +x_0=21500000 +y_0=3500000 +dat"); + add_proj4text (p, 2, + "um=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 3-21\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",80.33333333333333],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",77],PARAMETER[\"latitude_of_origin\",78.70733"); + add_srs_wkt (p, 9, + "752777778],PARAMETER[\"central_meridian\",176],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",21500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",3500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6122\"]]"); + p = add_epsg_def (filter, first, last, 6123, "epsg", 6123, + "WGS 84 / EPSG Arctic zone 3-23"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=80.33333333333333 +lat_2=77 +lat_0=78.7"); + add_proj4text (p, 1, + "0733752777778 +lon_0=-153 +x_0=23500000 +y_0=3500000 +da"); + add_proj4text (p, 2, + "tum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 3-23\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",80.33333333333333],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_2\",77],PARAMETER[\"latitude_of_origin\",78.70733"); + add_srs_wkt (p, 9, + "752777778],PARAMETER[\"central_meridian\",-153],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",23500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",3500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"6123\"]]"); + p = add_epsg_def (filter, first, last, 6124, "epsg", 6124, + "WGS 84 / EPSG Arctic zone 4-12"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=77 +lat_2=73.66666666666667 +lat_0=75.3"); + add_proj4text (p, 1, + "6440330555556 +lon_0=-155 +x_0=12500000 +y_0=4500000 +da"); + add_proj4text (p, 2, + "tum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / EPSG Arctic zone 4-12\",GEOGCS[\"WGS 8"); + add_srs_wkt (p, 1, + "4\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2"); + add_srs_wkt (p, 2, + "57223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 7, + "_parallel_1\",77],PARAMETER[\"standard_parallel_2\",73.6"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"latitude_of_origin\",75.36440"); + add_srs_wkt (p, 9, + "330555556],PARAMETER[\"central_meridian\",-155],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",12500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",4500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"6124\"]]"); + p = add_epsg_def (filter, first, last, 6125, "epsg", 6125, + "ETRS89 / EPSG Arctic zone 5-47"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=-5 +x_0=47500000 +y_"); + add_proj4text (p, 2, + "0=5500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / EPSG Arctic zone 5-47\",GEOGCS[\"ETRS8"); + add_srs_wkt (p, 1, + "9\",DATUM[\"European_Terrestrial_Reference_System_1989\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",73.66666666666667],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",70.33333333333333],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",72.02500919444445],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 11, + "n\",-5],PARAMETER[\"false_easting\",47500000],PARAMETER["); + add_srs_wkt (p, 12, + "\"false_northing\",5500000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 14, + "\",NORTH],AUTHORITY[\"EPSG\",\"6125\"]]"); + p = add_epsg_def (filter, first, last, 6128, "epsg", 6128, + "Grand Cayman National Grid 1959"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=clrk66 +towgs84=-179.483,-69.3"); + add_proj4text (p, 1, + "79,-27.584,-7.862,8.163,6.042,-13.925 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Grand Cayman National Grid 1959\",GEOGCS[\"GCGD"); + add_srs_wkt (p, 1, + "59\",DATUM[\"Grand_Cayman_Geodetic_Datum_1959\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7008\"]],TOWGS84[-179.483,-69.379,-27.584,-7.86"); + add_srs_wkt (p, 4, + "2,8.163,6.042,-13.925],AUTHORITY[\"EPSG\",\"6723\"]],PRI"); + add_srs_wkt (p, 5, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 6, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 7, + "],AUTHORITY[\"EPSG\",\"4723\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 8, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"central_meridian\",-81],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 10, + ".9996],PARAMETER[\"false_easting\",1640419.9475],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9002\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 13, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"6128\"]]"); + p = add_epsg_def (filter, first, last, 6129, "epsg", 6129, + "Sister Islands National Grid 1961"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=clrk66 +towgs84=8.853,-52.644,"); + add_proj4text (p, 1, + "180.304,-0.393,-2.323,2.96,-24.081 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Sister Islands National Grid 1961\",GEOGCS[\"SI"); + add_srs_wkt (p, 1, + "GD61\",DATUM[\"Sister_Islands_Geodetic_Datum_1961\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7008\"]],TOWGS84[8.853,-52.644,180.304,-0."); + add_srs_wkt (p, 4, + "393,-2.323,2.96,-24.081],AUTHORITY[\"EPSG\",\"6726\"]],P"); + add_srs_wkt (p, 5, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 6, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 7, + "\"]],AUTHORITY[\"EPSG\",\"4726\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 8, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"central_meridian\",-81],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 10, + ",0.9996],PARAMETER[\"false_easting\",1640419.9475],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_northing\",0],UNIT[\"foot\",0.3048,AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"9002\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 13, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"6129\"]]"); + p = add_epsg_def (filter, first, last, 6135, "epsg", 6135, + "CIGD11"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"CIGD11\",DATUM[\"Cayman_Islands_Geodetic_Datum_"); + add_srs_wkt (p, 1, + "2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 2, + "RITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"1100\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6135\"]]"); + p = add_epsg_def (filter, first, last, 6141, "epsg", 6141, + "Cayman Islands National Grid 2011 (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=19.33333333333333 +lat_2=19.7 +lat_0=19"); + add_proj4text (p, 1, + ".33333333333333 +lon_0=80.56666666666666 +x_0=899160 +y_"); + add_proj4text (p, 2, + "0=579120 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cayman Islands National Grid 2011 (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"CIGD11\",DATUM[\"Cayman_Islands_Geodetic_Datum"); + add_srs_wkt (p, 2, + "_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"1100\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6135\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",19.33333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",19.7],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 10, + "in\",19.33333333333333],PARAMETER[\"central_meridian\",8"); + add_srs_wkt (p, 11, + "0.56666666666666],PARAMETER[\"false_easting\",2950000],P"); + add_srs_wkt (p, 12, + "ARAMETER[\"false_northing\",1900000],UNIT[\"foot\",0.304"); + add_srs_wkt (p, 13, + "8,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"Easting\",EAST],A"); + add_srs_wkt (p, 14, + "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"6141\"]]"); + p = add_epsg_def (filter, first, last, 6204, "epsg", 6204, + "Macedonian State Coordinate System"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Macedonian State Coordinate System\",GEOGCS[\"M"); + add_srs_wkt (p, 1, + "GI 1901\",DATUM[\"MGI_1901\",SPHEROID[\"Bessel 1841\",63"); + add_srs_wkt (p, 2, + "77397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[682,-203,480,0,0,0,0],AUTHORITY[\"EPSG\",\"1031\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"3906\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",21],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9999],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Y\",EAST],AXIS[\"X\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"6204\"]]"); + p = add_epsg_def (filter, first, last, 6207, "epsg", 6207, + "Nepal 1981"); + add_proj4text (p, 0, + "+proj=longlat +a=6377276.345 +b=6356075.41314024 +towgs8"); + add_proj4text (p, 1, + "4=293.17,726.18,245.36,0,0,0,0 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Nepal 1981\",DATUM[\"Nepal_1981\",SPHEROID[\"Ev"); + add_srs_wkt (p, 1, + "erest 1830 (1937 Adjustment)\",6377276.345,300.8017,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7015\"]],TOWGS84[293.17,726.18,245.36,0"); + add_srs_wkt (p, 3, + ",0,0,0],AUTHORITY[\"EPSG\",\"1111\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"6207\"]]"); + p = add_epsg_def (filter, first, last, 6210, "epsg", 6210, + "SIRGAS 2000 / UTM zone 23N"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 23N\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "6210\"]]"); + p = add_epsg_def (filter, first, last, 6211, "epsg", 6211, + "SIRGAS 2000 / UTM zone 24N"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 24N\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "6211\"]]"); + p = add_epsg_def (filter, first, last, 6316, "epsg", 6316, + "Macedonia State Coordinate System zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Macedonia State Coordinate System zone 7\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"MGI 1901\",DATUM[\"MGI_1901\",SPHEROID[\"Bessel 184"); + add_srs_wkt (p, 2, + "1\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[682,-203,480,0,0,0,0],AUTHORITY[\"EPSG\",\"103"); + add_srs_wkt (p, 4, + "1\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"3906\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",21],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9999],PARAMETER[\"false_easting\",7500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Y\",EAST],AXIS[\"X\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"6316\"]]"); + p = add_epsg_def (filter, first, last, 6318, "epsg", 6318, + "NAD83(2011)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Re"); + add_srs_wkt (p, 1, + "ference_System_2011\",SPHEROID[\"GRS 1980\",6378137,298."); + add_srs_wkt (p, 2, + "257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]]"); + p = add_epsg_def (filter, first, last, 6322, "epsg", 6322, + "NAD83(PA11)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NAD83(PA11)\",DATUM[\"NAD83_National_Spatial_Re"); + add_srs_wkt (p, 1, + "ference_System_PA11\",SPHEROID[\"GRS 1980\",6378137,298."); + add_srs_wkt (p, 2, + "257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"1117\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6322\"]]"); + p = add_epsg_def (filter, first, last, 6325, "epsg", 6325, + "NAD83(MA11)"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"NAD83(MA11)\",DATUM[\"NAD83_National_Spatial_Re"); + add_srs_wkt (p, 1, + "ference_System_MA11\",SPHEROID[\"GRS 1980\",6378137,298."); + add_srs_wkt (p, 2, + "257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"1118\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6325\"]]"); + p = add_epsg_def (filter, first, last, 6328, "epsg", 6328, + "NAD83(2011) / UTM zone 59N"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 59N\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",171],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6328\"]]"); + p = add_epsg_def (filter, first, last, 6329, "epsg", 6329, + "NAD83(2011) / UTM zone 60N"); + add_proj4text (p, 0, + "+proj=utm +zone=60 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 60N\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",177],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6329\"]]"); + p = add_epsg_def (filter, first, last, 6330, "epsg", 6330, + "NAD83(2011) / UTM zone 1N"); + add_proj4text (p, 0, + "+proj=utm +zone=1 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 1N\",GEOGCS[\"NAD83(2011"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_2011"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-177],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6330\"]]"); + p = add_epsg_def (filter, first, last, 6331, "epsg", 6331, + "NAD83(2011) / UTM zone 2N"); + add_proj4text (p, 0, + "+proj=utm +zone=2 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 2N\",GEOGCS[\"NAD83(2011"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_2011"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-171],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6331\"]]"); + p = add_epsg_def (filter, first, last, 6332, "epsg", 6332, + "NAD83(2011) / UTM zone 3N"); + add_proj4text (p, 0, + "+proj=utm +zone=3 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 3N\",GEOGCS[\"NAD83(2011"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_2011"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-165],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6332\"]]"); + p = add_epsg_def (filter, first, last, 6333, "epsg", 6333, + "NAD83(2011) / UTM zone 4N"); + add_proj4text (p, 0, + "+proj=utm +zone=4 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 4N\",GEOGCS[\"NAD83(2011"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_2011"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-159],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6333\"]]"); + p = add_epsg_def (filter, first, last, 6334, "epsg", 6334, + "NAD83(2011) / UTM zone 5N"); + add_proj4text (p, 0, + "+proj=utm +zone=5 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 5N\",GEOGCS[\"NAD83(2011"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_2011"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-153],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6334\"]]"); + p = add_epsg_def (filter, first, last, 6335, "epsg", 6335, + "NAD83(2011) / UTM zone 6N"); + add_proj4text (p, 0, + "+proj=utm +zone=6 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 6N\",GEOGCS[\"NAD83(2011"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_2011"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-147],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6335\"]]"); + p = add_epsg_def (filter, first, last, 6336, "epsg", 6336, + "NAD83(2011) / UTM zone 7N"); + add_proj4text (p, 0, + "+proj=utm +zone=7 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 7N\",GEOGCS[\"NAD83(2011"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_2011"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-141],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6336\"]]"); + p = add_epsg_def (filter, first, last, 6337, "epsg", 6337, + "NAD83(2011) / UTM zone 8N"); + add_proj4text (p, 0, + "+proj=utm +zone=8 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 8N\",GEOGCS[\"NAD83(2011"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_2011"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-135],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6337\"]]"); + p = add_epsg_def (filter, first, last, 6338, "epsg", 6338, + "NAD83(2011) / UTM zone 9N"); + add_proj4text (p, 0, + "+proj=utm +zone=9 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 9N\",GEOGCS[\"NAD83(2011"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_2011"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-129],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6338\"]]"); + p = add_epsg_def (filter, first, last, 6339, "epsg", 6339, + "NAD83(2011) / UTM zone 10N"); + add_proj4text (p, 0, + "+proj=utm +zone=10 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 10N\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-123],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"6339\"]]"); + p = add_epsg_def (filter, first, last, 6340, "epsg", 6340, + "NAD83(2011) / UTM zone 11N"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 11N\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-117],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"6340\"]]"); + p = add_epsg_def (filter, first, last, 6341, "epsg", 6341, + "NAD83(2011) / UTM zone 12N"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 12N\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-111],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"6341\"]]"); + p = add_epsg_def (filter, first, last, 6342, "epsg", 6342, + "NAD83(2011) / UTM zone 13N"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 13N\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-105],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"6342\"]]"); + p = add_epsg_def (filter, first, last, 6343, "epsg", 6343, + "NAD83(2011) / UTM zone 14N"); + add_proj4text (p, 0, + "+proj=utm +zone=14 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 14N\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-99],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6343\"]]"); + p = add_epsg_def (filter, first, last, 6344, "epsg", 6344, + "NAD83(2011) / UTM zone 15N"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 15N\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-93],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6344\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_29.c b/src/spatialite/src/srsinit/epsg_inlined_29.c new file mode 100644 index 0000000..d34c2cf --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_29.c @@ -0,0 +1,3558 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_29 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 6345, "epsg", 6345, + "NAD83(2011) / UTM zone 16N"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 16N\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-87],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6345\"]]"); + p = add_epsg_def (filter, first, last, 6346, "epsg", 6346, + "NAD83(2011) / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 17N\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-81],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6346\"]]"); + p = add_epsg_def (filter, first, last, 6347, "epsg", 6347, + "NAD83(2011) / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 18N\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-75],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6347\"]]"); + p = add_epsg_def (filter, first, last, 6348, "epsg", 6348, + "NAD83(2011) / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / UTM zone 19N\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",-69],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6348\"]]"); + p = add_epsg_def (filter, first, last, 6350, "epsg", 6350, + "NAD83(2011) / Conus Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=29.5 +lat_2=45.5 +lat_0=23 +lon_0=-96 +"); + add_proj4text (p, 1, + "x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Conus Albers\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Albers_Coni"); + add_srs_wkt (p, 7, + "c_Equal_Area\"],PARAMETER[\"standard_parallel_1\",29.5],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_2\",45.5],PARAMETER[\"lati"); + add_srs_wkt (p, 9, + "tude_of_center\",23],PARAMETER[\"longitude_of_center\",-"); + add_srs_wkt (p, 10, + "96],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 12, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"6350\"]]"); + p = add_epsg_def (filter, first, last, 6351, "epsg", 6351, + "NAD83(2011) / EPSG Arctic zone 5-29"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=-163 +x_0=29500000 +"); + add_proj4text (p, 2, + "y_0=5500000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / EPSG Arctic zone 5-29\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",73.66666666666667],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",70.33333333333333],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "72.02500919444445],PARAMETER[\"central_meridian\",-163],"); + add_srs_wkt (p, 11, + "PARAMETER[\"false_easting\",29500000],PARAMETER[\"false_"); + add_srs_wkt (p, 12, + "northing\",5500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 14, + "H],AUTHORITY[\"EPSG\",\"6351\"]]"); + p = add_epsg_def (filter, first, last, 6352, "epsg", 6352, + "NAD83(2011) / EPSG Arctic zone 5-31"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=73.66666666666667 +lat_2=70.33333333333"); + add_proj4text (p, 1, + "333 +lat_0=72.02500919444445 +lon_0=-147 +x_0=31500000 +"); + add_proj4text (p, 2, + "y_0=5500000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / EPSG Arctic zone 5-31\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",73.66666666666667],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",70.33333333333333],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "72.02500919444445],PARAMETER[\"central_meridian\",-147],"); + add_srs_wkt (p, 11, + "PARAMETER[\"false_easting\",31500000],PARAMETER[\"false_"); + add_srs_wkt (p, 12, + "northing\",5500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 14, + "H],AUTHORITY[\"EPSG\",\"6352\"]]"); + p = add_epsg_def (filter, first, last, 6353, "epsg", 6353, + "NAD83(2011) / EPSG Arctic zone 6-14"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.6"); + add_proj4text (p, 1, + "8747555555557 +lon_0=-165 +x_0=14500000 +y_0=6500000 +el"); + add_proj4text (p, 2, + "lps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / EPSG Arctic zone 6-14\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",70.33333333333333],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",67],PARAMETER[\"latitude_of_origin\",68.687475555555"); + add_srs_wkt (p, 10, + "57],PARAMETER[\"central_meridian\",-165],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_easting\",14500000],PARAMETER[\"false_northing\",6500"); + add_srs_wkt (p, 12, + "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); + add_srs_wkt (p, 13, + "[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"6353\"]]"); + p = add_epsg_def (filter, first, last, 6354, "epsg", 6354, + "NAD83(2011) / EPSG Arctic zone 6-16"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=70.33333333333333 +lat_2=67 +lat_0=68.6"); + add_proj4text (p, 1, + "8747555555557 +lon_0=-147 +x_0=16500000 +y_0=6500000 +el"); + add_proj4text (p, 2, + "lps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / EPSG Arctic zone 6-16\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",70.33333333333333],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",67],PARAMETER[\"latitude_of_origin\",68.687475555555"); + add_srs_wkt (p, 10, + "57],PARAMETER[\"central_meridian\",-147],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_easting\",16500000],PARAMETER[\"false_northing\",6500"); + add_srs_wkt (p, 12, + "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); + add_srs_wkt (p, 13, + "[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"6354\"]]"); + p = add_epsg_def (filter, first, last, 6355, "epsg", 6355, + "NAD83(2011) / Alabama East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.9"); + add_proj4text (p, 1, + "9996 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Alabama East\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",30.5],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-85.83333333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.99996],PARAMETER[\"false_easting\",20"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6355\"]]"); + p = add_epsg_def (filter, first, last, 6356, "epsg", 6356, + "NAD83(2011) / Alabama West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=6"); + add_proj4text (p, 1, + "00000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Alabama West\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",30],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-87.5],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.999933333],PARAMETER[\"false_easting\",600000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"6356\"]]"); + p = add_epsg_def (filter, first, last, 6362, "epsg", 6362, + "Mexico ITRF92 / LCC"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=17.5 +lat_2=29.5 +lat_0=12 +lon_0=-102 "); + add_proj4text (p, 1, + "+x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mexico ITRF92 / LCC\",GEOGCS[\"Mexico ITRF92\","); + add_srs_wkt (p, 1, + "DATUM[\"Mexico_ITRF92\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 2, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 3, + "0,0,0,0],AUTHORITY[\"EPSG\",\"1042\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4483\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 7, + "SP\"],PARAMETER[\"standard_parallel_1\",17.5],PARAMETER["); + add_srs_wkt (p, 8, + "\"standard_parallel_2\",29.5],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 9, + "igin\",12],PARAMETER[\"central_meridian\",-102],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",2500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"6362\"]]"); + p = add_epsg_def (filter, first, last, 6365, "epsg", 6365, + "Mexico ITRF2008"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"Mexico ITRF2008\",DATUM[\"Mexico_ITRF2008\",SPH"); + add_srs_wkt (p, 1, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 2, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"1120\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6365\"]]"); + p = add_epsg_def (filter, first, last, 6366, "epsg", 6366, + "Mexico ITRF2008 / UTM zone 11N"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mexico ITRF2008 / UTM zone 11N\",GEOGCS[\"Mexic"); + add_srs_wkt (p, 1, + "o ITRF2008\",DATUM[\"Mexico_ITRF2008\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1120\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6365\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-117],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"6366\"]]"); + p = add_epsg_def (filter, first, last, 6367, "epsg", 6367, + "Mexico ITRF2008 / UTM zone 12N"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mexico ITRF2008 / UTM zone 12N\",GEOGCS[\"Mexic"); + add_srs_wkt (p, 1, + "o ITRF2008\",DATUM[\"Mexico_ITRF2008\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1120\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6365\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-111],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"6367\"]]"); + p = add_epsg_def (filter, first, last, 6368, "epsg", 6368, + "Mexico ITRF2008 / UTM zone 13N"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mexico ITRF2008 / UTM zone 13N\",GEOGCS[\"Mexic"); + add_srs_wkt (p, 1, + "o ITRF2008\",DATUM[\"Mexico_ITRF2008\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1120\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6365\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-105],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"6368\"]]"); + p = add_epsg_def (filter, first, last, 6369, "epsg", 6369, + "Mexico ITRF2008 / UTM zone 14N"); + add_proj4text (p, 0, + "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mexico ITRF2008 / UTM zone 14N\",GEOGCS[\"Mexic"); + add_srs_wkt (p, 1, + "o ITRF2008\",DATUM[\"Mexico_ITRF2008\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1120\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6365\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-99],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"6369\"]]"); + p = add_epsg_def (filter, first, last, 6370, "epsg", 6370, + "Mexico ITRF2008 / UTM zone 15N"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mexico ITRF2008 / UTM zone 15N\",GEOGCS[\"Mexic"); + add_srs_wkt (p, 1, + "o ITRF2008\",DATUM[\"Mexico_ITRF2008\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1120\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6365\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-93],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"6370\"]]"); + p = add_epsg_def (filter, first, last, 6371, "epsg", 6371, + "Mexico ITRF2008 / UTM zone 16N"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mexico ITRF2008 / UTM zone 16N\",GEOGCS[\"Mexic"); + add_srs_wkt (p, 1, + "o ITRF2008\",DATUM[\"Mexico_ITRF2008\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1120\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6365\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-87],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"6371\"]]"); + p = add_epsg_def (filter, first, last, 6372, "epsg", 6372, + "Mexico ITRF2008 / LCC"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=17.5 +lat_2=29.5 +lat_0=12 +lon_0=-102 "); + add_proj4text (p, 1, + "+x_0=2500000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mexico ITRF2008 / LCC\",GEOGCS[\"Mexico ITRF200"); + add_srs_wkt (p, 1, + "8\",DATUM[\"Mexico_ITRF2008\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1120\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"6365\"]],PROJECTION[\"Lambert_Conformal_C"); + add_srs_wkt (p, 7, + "onic_2SP\"],PARAMETER[\"standard_parallel_1\",17.5],PARA"); + add_srs_wkt (p, 8, + "METER[\"standard_parallel_2\",29.5],PARAMETER[\"latitude"); + add_srs_wkt (p, 9, + "_of_origin\",12],PARAMETER[\"central_meridian\",-102],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",2500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 12, + "],AUTHORITY[\"EPSG\",\"6372\"]]"); + p = add_epsg_def (filter, first, last, 6381, "epsg", 6381, + "UCS-2000 / Ukraine TM zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=300000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / Ukraine TM zone 7\",GEOGCS[\"UCS-200"); + add_srs_wkt (p, 1, + "0\",DATUM[\"Ukraine_2000\",SPHEROID[\"Krassowsky 1940\","); + add_srs_wkt (p, 2, + "6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[25,-"); + add_srs_wkt (p, 3, + "141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EPSG\",\"1077\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"5561\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",21],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"6381\"]]"); + p = add_epsg_def (filter, first, last, 6382, "epsg", 6382, + "UCS-2000 / Ukraine TM zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=300000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / Ukraine TM zone 8\",GEOGCS[\"UCS-200"); + add_srs_wkt (p, 1, + "0\",DATUM[\"Ukraine_2000\",SPHEROID[\"Krassowsky 1940\","); + add_srs_wkt (p, 2, + "6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[25,-"); + add_srs_wkt (p, 3, + "141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EPSG\",\"1077\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"5561\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",24],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"6382\"]]"); + p = add_epsg_def (filter, first, last, 6383, "epsg", 6383, + "UCS-2000 / Ukraine TM zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=300000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / Ukraine TM zone 9\",GEOGCS[\"UCS-200"); + add_srs_wkt (p, 1, + "0\",DATUM[\"Ukraine_2000\",SPHEROID[\"Krassowsky 1940\","); + add_srs_wkt (p, 2, + "6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[25,-"); + add_srs_wkt (p, 3, + "141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EPSG\",\"1077\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"5561\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",27],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"6383\"]]"); + p = add_epsg_def (filter, first, last, 6384, "epsg", 6384, + "UCS-2000 / Ukraine TM zone 10"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=30 +k=1 +x_0=300000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / Ukraine TM zone 10\",GEOGCS[\"UCS-20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Ukraine_2000\",SPHEROID[\"Krassowsky 1940\""); + add_srs_wkt (p, 2, + ",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[25,"); + add_srs_wkt (p, 3, + "-141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EPSG\",\"1077\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"5561\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",30],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"6384\"]]"); + p = add_epsg_def (filter, first, last, 6385, "epsg", 6385, + "UCS-2000 / Ukraine TM zone 11"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=300000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / Ukraine TM zone 11\",GEOGCS[\"UCS-20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Ukraine_2000\",SPHEROID[\"Krassowsky 1940\""); + add_srs_wkt (p, 2, + ",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[25,"); + add_srs_wkt (p, 3, + "-141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EPSG\",\"1077\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"5561\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",33],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"6385\"]]"); + p = add_epsg_def (filter, first, last, 6386, "epsg", 6386, + "UCS-2000 / Ukraine TM zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=36 +k=1 +x_0=300000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / Ukraine TM zone 12\",GEOGCS[\"UCS-20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Ukraine_2000\",SPHEROID[\"Krassowsky 1940\""); + add_srs_wkt (p, 2, + ",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[25,"); + add_srs_wkt (p, 3, + "-141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EPSG\",\"1077\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"5561\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",36],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"6386\"]]"); + p = add_epsg_def (filter, first, last, 6387, "epsg", 6387, + "UCS-2000 / Ukraine TM zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=300000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=25,-141,-78.5,-0,0.35,0.736,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"UCS-2000 / Ukraine TM zone 13\",GEOGCS[\"UCS-20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Ukraine_2000\",SPHEROID[\"Krassowsky 1940\""); + add_srs_wkt (p, 2, + ",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[25,"); + add_srs_wkt (p, 3, + "-141,-78.5,-0,0.35,0.736,0],AUTHORITY[\"EPSG\",\"1077\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"5561\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",39],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AUTHORITY[\"EPSG\",\"6387\"]]"); + p = add_epsg_def (filter, first, last, 6391, "epsg", 6391, + "Cayman Islands National Grid 2011"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=19.33333333333333 +lat_2=19.7 +lat_0=19"); + add_proj4text (p, 1, + ".33333333333333 +lon_0=-80.56666666666666 +x_0=899160 +y"); + add_proj4text (p, 2, + "_0=579120 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=ft "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cayman Islands National Grid 2011\",GEOGCS[\"CI"); + add_srs_wkt (p, 1, + "GD11\",DATUM[\"Cayman_Islands_Geodetic_Datum_2011\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"1100\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6135\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); + add_srs_wkt (p, 8, + "parallel_1\",19.33333333333333],PARAMETER[\"standard_par"); + add_srs_wkt (p, 9, + "allel_2\",19.7],PARAMETER[\"latitude_of_origin\",19.3333"); + add_srs_wkt (p, 10, + "3333333333],PARAMETER[\"central_meridian\",-80.566666666"); + add_srs_wkt (p, 11, + "66666],PARAMETER[\"false_easting\",2950000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",1900000],UNIT[\"foot\",0.3048,AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"9002\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 14, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"6391\"]]"); + p = add_epsg_def (filter, first, last, 6393, "epsg", 6393, + "NAD83(2011) / Alaska Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=55 +lat_2=65 +lat_0=50 +lon_0=-154 +x_0"); + add_proj4text (p, 1, + "=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Alaska Albers\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Albers_Coni"); + add_srs_wkt (p, 7, + "c_Equal_Area\"],PARAMETER[\"standard_parallel_1\",55],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"standard_parallel_2\",65],PARAMETER[\"latitude"); + add_srs_wkt (p, 9, + "_of_center\",50],PARAMETER[\"longitude_of_center\",-154]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_easting\",0],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 12, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 13, + "393\"]]"); + p = add_epsg_def (filter, first, last, 6394, "epsg", 6394, + "NAD83(2011) / Alaska zone 1"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=32"); + add_proj4text (p, 1, + "3.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +no"); + add_proj4text (p, 2, + "_uoff +gamma=323.1301023611111 +ellps=GRS80 +units=m +no"); + add_proj4text (p, 3, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Alaska zone 1\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Hotine_Obli"); + add_srs_wkt (p, 7, + "que_Mercator\"],PARAMETER[\"latitude_of_center\",57],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"longitude_of_center\",-133.6666666666667],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"azimuth\",323.1301023611111],PARAMETER[\"rectifie"); + add_srs_wkt (p, 10, + "d_grid_angle\",323.1301023611111],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 11, + "or\",0.9999],PARAMETER[\"false_easting\",5000000],PARAME"); + add_srs_wkt (p, 12, + "TER[\"false_northing\",-5000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 13, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 14, + "H],AUTHORITY[\"EPSG\",\"6394\"]]"); + p = add_epsg_def (filter, first, last, 6395, "epsg", 6395, + "NAD83(2011) / Alaska zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Alaska zone 2\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",54],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-142],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9999],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"6395\"]]"); + p = add_epsg_def (filter, first, last, 6396, "epsg", 6396, + "NAD83(2011) / Alaska zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Alaska zone 3\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",54],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-146],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9999],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"6396\"]]"); + p = add_epsg_def (filter, first, last, 6397, "epsg", 6397, + "NAD83(2011) / Alaska zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Alaska zone 4\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",54],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-150],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9999],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"6397\"]]"); + p = add_epsg_def (filter, first, last, 6398, "epsg", 6398, + "NAD83(2011) / Alaska zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Alaska zone 5\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",54],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-154],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9999],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"6398\"]]"); + p = add_epsg_def (filter, first, last, 6399, "epsg", 6399, + "NAD83(2011) / Alaska zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Alaska zone 6\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",54],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-158],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9999],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"6399\"]]"); + p = add_epsg_def (filter, first, last, 6400, "epsg", 6400, + "NAD83(2011) / Alaska zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Alaska zone 7\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",54],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-162],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9999],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"6400\"]]"); + p = add_epsg_def (filter, first, last, 6401, "epsg", 6401, + "NAD83(2011) / Alaska zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Alaska zone 8\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",54],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-166],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9999],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"6401\"]]"); + p = add_epsg_def (filter, first, last, 6402, "epsg", 6402, + "NAD83(2011) / Alaska zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Alaska zone 9\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",54],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-170],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9999],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"6402\"]]"); + p = add_epsg_def (filter, first, last, 6403, "epsg", 6403, + "NAD83(2011) / Alaska zone 10"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333"); + add_proj4text (p, 1, + "334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Alaska zone 10\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",5"); + add_srs_wkt (p, 8, + "3.83333333333334],PARAMETER[\"standard_parallel_2\",51.8"); + add_srs_wkt (p, 9, + "3333333333334],PARAMETER[\"latitude_of_origin\",51],PARA"); + add_srs_wkt (p, 10, + "METER[\"central_meridian\",-176],PARAMETER[\"false_easti"); + add_srs_wkt (p, 11, + "ng\",1000000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 12, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6403\"]]"); + p = add_epsg_def (filter, first, last, 6404, "epsg", 6404, + "NAD83(2011) / Arizona Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Arizona Central\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "2011)\",DATUM[\"NAD83_National_Spatial_Reference_System_"); + add_srs_wkt (p, 2, + "2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",31],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",-111.9166666666667],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",21"); + add_srs_wkt (p, 10, + "3360],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6404\"]]"); + p = add_epsg_def (filter, first, last, 6405, "epsg", 6405, + "NAD83(2011) / Arizona Central (ft)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +ellps=GRS80 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Arizona Central (ft)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",31],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-111.9166666666667],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.9999],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",700000],PARAMETER[\"false_northing\",0],UNIT[\"foot\",0"); + add_srs_wkt (p, 11, + ".3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6405\"]]"); + p = add_epsg_def (filter, first, last, 6406, "epsg", 6406, + "NAD83(2011) / Arizona East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Arizona East\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",31],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-110.1666666666667],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",21336"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 12, + "RTH],AUTHORITY[\"EPSG\",\"6406\"]]"); + p = add_epsg_def (filter, first, last, 6407, "epsg", 6407, + "NAD83(2011) / Arizona East (ft)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +ellps=GRS80 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Arizona East (ft)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",31],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-110.1666666666667],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",0.9999],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "700000],PARAMETER[\"false_northing\",0],UNIT[\"foot\",0."); + add_srs_wkt (p, 11, + "3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6407\"]]"); + p = add_epsg_def (filter, first, last, 6408, "epsg", 6408, + "NAD83(2011) / Arizona West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); + add_proj4text (p, 1, + "=213360 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Arizona West\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",31],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-113.75],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.999933333],PARAMETER[\"false_easting\",213360],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"6408\"]]"); + p = add_epsg_def (filter, first, last, 6409, "epsg", 6409, + "NAD83(2011) / Arizona West (ft)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); + add_proj4text (p, 1, + "=213360 +y_0=0 +ellps=GRS80 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Arizona West (ft)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",31],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-113.75],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.999933333],PARAMETER[\"false_easting\",700000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6409\"]]"); + p = add_epsg_def (filter, first, last, 6410, "epsg", 6410, + "NAD83(2011) / Arkansas North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Arkansas North\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); + add_srs_wkt (p, 8, + "6.23333333333333],PARAMETER[\"standard_parallel_2\",34.9"); + add_srs_wkt (p, 9, + "3333333333333],PARAMETER[\"latitude_of_origin\",34.33333"); + add_srs_wkt (p, 10, + "333333334],PARAMETER[\"central_meridian\",-92],PARAMETER"); + add_srs_wkt (p, 11, + "[\"false_easting\",400000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 12, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6410\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 6411, "epsg", 6411, + "NAD83(2011) / Arkansas North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=399999.9999"); + add_proj4text (p, 2, + "8984 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Arkansas North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",36.23333333333333],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",34.93333333333333],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "34.33333333333334],PARAMETER[\"central_meridian\",-92],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",1312333.3333],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 13, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 14, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6411\"]]"); + p = add_epsg_def (filter, first, last, 6412, "epsg", 6412, + "NAD83(2011) / Arkansas South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +ellp"); + add_proj4text (p, 2, + "s=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Arkansas South\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); + add_srs_wkt (p, 8, + "4.76666666666667],PARAMETER[\"standard_parallel_2\",33.3"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",32.66666666666666],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-92],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",400000],PARAMETER[\"false_northing\",400000],UNIT["); + add_srs_wkt (p, 12, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 13, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6412\"]]"); + p = add_epsg_def (filter, first, last, 6413, "epsg", 6413, + "NAD83(2011) / Arkansas South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-92 +x_0=399999.99998984 +y_0=399"); + add_proj4text (p, 2, + "999.99998984 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Arkansas South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",34.76666666666667],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",33.3],PARAMETER[\"latitude_of_origin\",32.6666666666"); + add_srs_wkt (p, 10, + "6666],PARAMETER[\"central_meridian\",-92],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_easting\",1312333.3333],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",1312333.3333],UNIT[\"US survey foot\",0.304800609601219"); + add_srs_wkt (p, 13, + "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6413\"]]"); + p = add_epsg_def (filter, first, last, 6414, "epsg", 6414, + "NAD83(2011) / California Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=34 +lat_2=40.5 +lat_0=0 +lon_0=-120 +x_"); + add_proj4text (p, 1, + "0=0 +y_0=-4000000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / California Albers\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Albers"); + add_srs_wkt (p, 7, + "_Conic_Equal_Area\"],PARAMETER[\"standard_parallel_1\",3"); + add_srs_wkt (p, 8, + "4],PARAMETER[\"standard_parallel_2\",40.5],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_center\",0],PARAMETER[\"longitude_of_center\""); + add_srs_wkt (p, 10, + ",-120],PARAMETER[\"false_easting\",0],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",-4000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"6414\"]]"); + p = add_epsg_def (filter, first, last, 6415, "epsg", 6415, + "NAD83(2011) / California zone 1"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); + add_proj4text (p, 1, + "3333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +ellp"); + add_proj4text (p, 2, + "s=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / California zone 1\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamber"); + add_srs_wkt (p, 7, + "t_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1"); + add_srs_wkt (p, 8, + "\",41.66666666666666],PARAMETER[\"standard_parallel_2\","); + add_srs_wkt (p, 9, + "40],PARAMETER[\"latitude_of_origin\",39.33333333333334],"); + add_srs_wkt (p, 10, + "PARAMETER[\"central_meridian\",-122],PARAMETER[\"false_e"); + add_srs_wkt (p, 11, + "asting\",2000000],PARAMETER[\"false_northing\",500000],U"); + add_srs_wkt (p, 12, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6415\"]]"); + p = add_epsg_def (filter, first, last, 6416, "epsg", 6416, + "NAD83(2011) / California zone 1 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); + add_proj4text (p, 1, + "3333333333334 +lon_0=-122 +x_0=2000000.0001016 +y_0=5000"); + add_proj4text (p, 2, + "00.0001016001 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / California zone 1 (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1"); + add_srs_wkt (p, 4, + "116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 8, + "llel_1\",41.66666666666666],PARAMETER[\"standard_paralle"); + add_srs_wkt (p, 9, + "l_2\",40],PARAMETER[\"latitude_of_origin\",39.3333333333"); + add_srs_wkt (p, 10, + "3334],PARAMETER[\"central_meridian\",-122],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_easting\",6561666.667],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",1640416.667],UNIT[\"US survey foot\",0.3048006096012192"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 14, + "\",NORTH],AUTHORITY[\"EPSG\",\"6416\"]]"); + p = add_epsg_def (filter, first, last, 6417, "epsg", 6417, + "NAD83(2011) / California zone 2"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y"); + add_proj4text (p, 2, + "_0=500000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / California zone 2\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamber"); + add_srs_wkt (p, 7, + "t_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1"); + add_srs_wkt (p, 8, + "\",39.83333333333334],PARAMETER[\"standard_parallel_2\","); + add_srs_wkt (p, 9, + "38.33333333333334],PARAMETER[\"latitude_of_origin\",37.6"); + add_srs_wkt (p, 10, + "6666666666666],PARAMETER[\"central_meridian\",-122],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",2000000],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 13, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 14, + "\",\"6417\"]]"); + p = add_epsg_def (filter, first, last, 6418, "epsg", 6418, + "NAD83(2011) / California zone 2 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000.00"); + add_proj4text (p, 2, + "01016 +y_0=500000.0001016001 +ellps=GRS80 +units=us-ft +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / California zone 2 (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1"); + add_srs_wkt (p, 4, + "116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 8, + "llel_1\",39.83333333333334],PARAMETER[\"standard_paralle"); + add_srs_wkt (p, 9, + "l_2\",38.33333333333334],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",37.66666666666666],PARAMETER[\"central_meridian\",-122]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_easting\",6561666.667],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",1640416.667],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 13, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 14, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6418\"]]"); + p = add_epsg_def (filter, first, last, 6419, "epsg", 6419, + "NAD83(2011) / California zone 3"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +"); + add_proj4text (p, 2, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / California zone 3\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamber"); + add_srs_wkt (p, 7, + "t_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1"); + add_srs_wkt (p, 8, + "\",38.43333333333333],PARAMETER[\"standard_parallel_2\","); + add_srs_wkt (p, 9, + "37.06666666666667],PARAMETER[\"latitude_of_origin\",36.5"); + add_srs_wkt (p, 10, + "],PARAMETER[\"central_meridian\",-120.5],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_easting\",2000000],PARAMETER[\"false_northing\",50000"); + add_srs_wkt (p, 12, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6419\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 6420, "epsg", 6420, + "NAD83(2011) / California zone 3 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000.0001016 +y_0="); + add_proj4text (p, 2, + "500000.0001016001 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / California zone 3 (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1"); + add_srs_wkt (p, 4, + "116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 8, + "llel_1\",38.43333333333333],PARAMETER[\"standard_paralle"); + add_srs_wkt (p, 9, + "l_2\",37.06666666666667],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",36.5],PARAMETER[\"central_meridian\",-120.5],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",6561666.667],PARAMETER[\"false_northin"); + add_srs_wkt (p, 12, + "g\",1640416.667],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 13, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 14, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6420\"]]"); + p = add_epsg_def (filter, first, last, 6421, "epsg", 6421, + "NAD83(2011) / California zone 4"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); + add_proj4text (p, 1, + "4 +lon_0=-119 +x_0=2000000 +y_0=500000 +ellps=GRS80 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / California zone 4\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamber"); + add_srs_wkt (p, 7, + "t_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1"); + add_srs_wkt (p, 8, + "\",37.25],PARAMETER[\"standard_parallel_2\",36],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"latitude_of_origin\",35.33333333333334],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-119],PARAMETER[\"false_easting\",200"); + add_srs_wkt (p, 11, + "0000],PARAMETER[\"false_northing\",500000],UNIT[\"metre\""); + add_srs_wkt (p, 12, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6421\"]]"); + p = add_epsg_def (filter, first, last, 6422, "epsg", 6422, + "NAD83(2011) / California zone 4 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); + add_proj4text (p, 1, + "4 +lon_0=-119 +x_0=2000000.0001016 +y_0=500000.000101600"); + add_proj4text (p, 2, + "1 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / California zone 4 (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1"); + add_srs_wkt (p, 4, + "116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 8, + "llel_1\",37.25],PARAMETER[\"standard_parallel_2\",36],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"latitude_of_origin\",35.33333333333334],PARAME"); + add_srs_wkt (p, 10, + "TER[\"central_meridian\",-119],PARAMETER[\"false_easting"); + add_srs_wkt (p, 11, + "\",6561666.667],PARAMETER[\"false_northing\",1640416.667"); + add_srs_wkt (p, 12, + "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 14, + "HORITY[\"EPSG\",\"6422\"]]"); + p = add_epsg_def (filter, first, last, 6423, "epsg", 6423, + "NAD83(2011) / California zone 5"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +el"); + add_proj4text (p, 2, + "lps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / California zone 5\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamber"); + add_srs_wkt (p, 7, + "t_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1"); + add_srs_wkt (p, 8, + "\",35.46666666666667],PARAMETER[\"standard_parallel_2\","); + add_srs_wkt (p, 9, + "34.03333333333333],PARAMETER[\"latitude_of_origin\",33.5"); + add_srs_wkt (p, 10, + "],PARAMETER[\"central_meridian\",-118],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",2000000],PARAMETER[\"false_northing\",500000]"); + add_srs_wkt (p, 12, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); + add_srs_wkt (p, 13, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6423\"]]"); + p = add_epsg_def (filter, first, last, 6424, "epsg", 6424, + "NAD83(2011) / California zone 5 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.5 +lon_0=-118 +x_0=2000000.0001016 +y_0=50"); + add_proj4text (p, 2, + "0000.0001016001 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / California zone 5 (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1"); + add_srs_wkt (p, 4, + "116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 8, + "llel_1\",35.46666666666667],PARAMETER[\"standard_paralle"); + add_srs_wkt (p, 9, + "l_2\",34.03333333333333],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",33.5],PARAMETER[\"central_meridian\",-118],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",6561666.667],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",1640416.667],UNIT[\"US survey foot\",0.3048006096012192"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 14, + "\",NORTH],AUTHORITY[\"EPSG\",\"6424\"]]"); + p = add_epsg_def (filter, first, last, 6425, "epsg", 6425, + "NAD83(2011) / California zone 6"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000"); + add_proj4text (p, 2, + " +y_0=500000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / California zone 6\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamber"); + add_srs_wkt (p, 7, + "t_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1"); + add_srs_wkt (p, 8, + "\",33.88333333333333],PARAMETER[\"standard_parallel_2\","); + add_srs_wkt (p, 9, + "32.78333333333333],PARAMETER[\"latitude_of_origin\",32.1"); + add_srs_wkt (p, 10, + "6666666666666],PARAMETER[\"central_meridian\",-116.25],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",2000000],PARAMETER[\"false_no"); + add_srs_wkt (p, 12, + "rthing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 13, + "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 14, + "PSG\",\"6425\"]]"); + p = add_epsg_def (filter, first, last, 6426, "epsg", 6426, + "NAD83(2011) / California zone 6 (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000"); + add_proj4text (p, 2, + ".0001016 +y_0=500000.0001016001 +ellps=GRS80 +units=us-f"); + add_proj4text (p, 3, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / California zone 6 (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1"); + add_srs_wkt (p, 4, + "116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 8, + "llel_1\",33.88333333333333],PARAMETER[\"standard_paralle"); + add_srs_wkt (p, 9, + "l_2\",32.78333333333333],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",32.16666666666666],PARAMETER[\"central_meridian\",-116."); + add_srs_wkt (p, 11, + "25],PARAMETER[\"false_easting\",6561666.667],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",1640416.667],UNIT[\"US survey foot\",0."); + add_srs_wkt (p, 13, + "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 14, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6426\"]]"); + p = add_epsg_def (filter, first, last, 6427, "epsg", 6427, + "NAD83(2011) / Colorado Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); + add_proj4text (p, 1, + "3334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +el"); + add_proj4text (p, 2, + "lps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Colorado Central\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(2011)\",DATUM[\"NAD83_National_Spatial_Reference_System"); + add_srs_wkt (p, 2, + "_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",39.75],PARAMETER[\"standard_parallel_2\",38.45],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"latitude_of_origin\",37.83333333333334],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-105.5],PARAMETER[\"false_easting\",9"); + add_srs_wkt (p, 11, + "14401.8289],PARAMETER[\"false_northing\",304800.6096],UN"); + add_srs_wkt (p, 12, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); + add_srs_wkt (p, 13, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6427\"]]"); + p = add_epsg_def (filter, first, last, 6428, "epsg", 6428, + "NAD83(2011) / Colorado Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); + add_proj4text (p, 1, + "3334 +lon_0=-105.5 +x_0=914401.8288036576 +y_0=304800.60"); + add_proj4text (p, 2, + "96012192 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Colorado Central (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"11"); + add_srs_wkt (p, 4, + "16\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"L"); + add_srs_wkt (p, 7, + "ambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 8, + "lel_1\",39.75],PARAMETER[\"standard_parallel_2\",38.45],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",37.83333333333334],PARA"); + add_srs_wkt (p, 10, + "METER[\"central_meridian\",-105.5],PARAMETER[\"false_eas"); + add_srs_wkt (p, 11, + "ting\",3000000],PARAMETER[\"false_northing\",1000000],UN"); + add_srs_wkt (p, 12, + "IT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); + add_srs_wkt (p, 14, + "ITY[\"EPSG\",\"6428\"]]"); + p = add_epsg_def (filter, first, last, 6429, "epsg", 6429, + "NAD83(2011) / Colorado North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Colorado North\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); + add_srs_wkt (p, 8, + "0.78333333333333],PARAMETER[\"standard_parallel_2\",39.7"); + add_srs_wkt (p, 9, + "1666666666667],PARAMETER[\"latitude_of_origin\",39.33333"); + add_srs_wkt (p, 10, + "333333334],PARAMETER[\"central_meridian\",-105.5],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",914401.8289],PARAMETER[\"false_nor"); + add_srs_wkt (p, 12, + "thing\",304800.6096],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"6429\"]]"); + p = add_epsg_def (filter, first, last, 6430, "epsg", 6430, + "NAD83(2011) / Colorado North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "288036576 +y_0=304800.6096012192 +ellps=GRS80 +units=us-"); + add_proj4text (p, 3, + "ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Colorado North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",40.78333333333333],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",39.71666666666667],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "39.33333333333334],PARAMETER[\"central_meridian\",-105.5"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_easting\",3000000],PARAMETER[\"false"); + add_srs_wkt (p, 12, + "_northing\",1000000],UNIT[\"US survey foot\",0.304800609"); + add_srs_wkt (p, 13, + "6012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 14, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6430\"]]"); + p = add_epsg_def (filter, first, last, 6431, "epsg", 6431, + "NAD83(2011) / Colorado South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "289 +y_0=304800.6096 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Colorado South\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); + add_srs_wkt (p, 8, + "8.43333333333333],PARAMETER[\"standard_parallel_2\",37.2"); + add_srs_wkt (p, 9, + "3333333333333],PARAMETER[\"latitude_of_origin\",36.66666"); + add_srs_wkt (p, 10, + "666666666],PARAMETER[\"central_meridian\",-105.5],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",914401.8289],PARAMETER[\"false_nor"); + add_srs_wkt (p, 12, + "thing\",304800.6096],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"6431\"]]"); + p = add_epsg_def (filter, first, last, 6432, "epsg", 6432, + "NAD83(2011) / Colorado South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "288036576 +y_0=304800.6096012192 +ellps=GRS80 +units=us-"); + add_proj4text (p, 3, + "ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Colorado South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",38.43333333333333],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",37.23333333333333],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "36.66666666666666],PARAMETER[\"central_meridian\",-105.5"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_easting\",3000000],PARAMETER[\"false"); + add_srs_wkt (p, 12, + "_northing\",1000000],UNIT[\"US survey foot\",0.304800609"); + add_srs_wkt (p, 13, + "6012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 14, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6432\"]]"); + p = add_epsg_def (filter, first, last, 6433, "epsg", 6433, + "NAD83(2011) / Connecticut"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); + add_proj4text (p, 1, + ".83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=1524"); + add_proj4text (p, 2, + "00.3048 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Connecticut\",GEOGCS[\"NAD83(2011"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_2011"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Conf"); + add_srs_wkt (p, 7, + "ormal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41."); + add_srs_wkt (p, 8, + "86666666666667],PARAMETER[\"standard_parallel_2\",41.2],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",40.83333333333334],PARA"); + add_srs_wkt (p, 10, + "METER[\"central_meridian\",-72.75],PARAMETER[\"false_eas"); + add_srs_wkt (p, 11, + "ting\",304800.6096],PARAMETER[\"false_northing\",152400."); + add_srs_wkt (p, 12, + "3048],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); + add_srs_wkt (p, 13, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"643"); + add_srs_wkt (p, 14, + "3\"]]"); + p = add_epsg_def (filter, first, last, 6434, "epsg", 6434, + "NAD83(2011) / Connecticut (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); + add_proj4text (p, 1, + ".83333333333334 +lon_0=-72.75 +x_0=304800.6096012192 +y_"); + add_proj4text (p, 2, + "0=152400.3048006096 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Connecticut (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",41.86666666666667],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",41.2],PARAMETER[\"latitude_of_origin\",40.8333333333333"); + add_srs_wkt (p, 10, + "4],PARAMETER[\"central_meridian\",-72.75],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_easting\",1000000],PARAMETER[\"false_northing\",5000"); + add_srs_wkt (p, 12, + "00],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 14, + "AUTHORITY[\"EPSG\",\"6434\"]]"); + p = add_epsg_def (filter, first, last, 6435, "epsg", 6435, + "NAD83(2011) / Delaware"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); + add_proj4text (p, 1, + "995 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Delaware\",GEOGCS[\"NAD83(2011)\""); + add_srs_wkt (p, 1, + ",DATUM[\"NAD83_National_Spatial_Reference_System_2011\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",38],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-75.41666666666667],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.999995],PARAMETER[\"false_easting\",200000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 12, + "],AUTHORITY[\"EPSG\",\"6435\"]]"); + p = add_epsg_def (filter, first, last, 6436, "epsg", 6436, + "NAD83(2011) / Delaware (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); + add_proj4text (p, 1, + "995 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +units=us"); + add_proj4text (p, 2, + "-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Delaware (ftUS)\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "2011)\",DATUM[\"NAD83_National_Spatial_Reference_System_"); + add_srs_wkt (p, 2, + "2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",38],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",-75.41666666666667],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.999995],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "656166.667],PARAMETER[\"false_northing\",0],UNIT[\"US su"); + add_srs_wkt (p, 11, + "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"6436\"]]"); + p = add_epsg_def (filter, first, last, 6437, "epsg", 6437, + "NAD83(2011) / Florida East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Florida East\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",24.33333333"); + add_srs_wkt (p, 8, + "333333],PARAMETER[\"central_meridian\",-81],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.999941177],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "200000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"6437\"]]"); + p = add_epsg_def (filter, first, last, 6438, "epsg", 6438, + "NAD83(2011) / Florida East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +units"); + add_proj4text (p, 2, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Florida East (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",24.3"); + add_srs_wkt (p, 8, + "3333333333333],PARAMETER[\"central_meridian\",-81],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.999941177],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",656166.667],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"6438\"]]"); + p = add_epsg_def (filter, first, last, 6439, "epsg", 6439, + "NAD83(2011) / Florida GDL Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=24 +lat_2=31.5 +lat_0=24 +lon_0=-84 +x_"); + add_proj4text (p, 1, + "0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Florida GDL Albers\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Alber"); + add_srs_wkt (p, 7, + "s_Conic_Equal_Area\"],PARAMETER[\"standard_parallel_1\","); + add_srs_wkt (p, 8, + "24],PARAMETER[\"standard_parallel_2\",31.5],PARAMETER[\""); + add_srs_wkt (p, 9, + "latitude_of_center\",24],PARAMETER[\"longitude_of_center"); + add_srs_wkt (p, 10, + "\",-84],PARAMETER[\"false_easting\",400000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"6439\"]]"); + p = add_epsg_def (filter, first, last, 6440, "epsg", 6440, + "NAD83(2011) / Florida North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); + add_proj4text (p, 1, + "9 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Florida North\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",30"); + add_srs_wkt (p, 8, + ".75],PARAMETER[\"standard_parallel_2\",29.58333333333333"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",29],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-84.5],PARAMETER[\"false_easting\",600000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 13, + "H],AUTHORITY[\"EPSG\",\"6440\"]]"); + p = add_epsg_def (filter, first, last, 6441, "epsg", 6441, + "NAD83(2011) / Florida North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); + add_proj4text (p, 1, + "9 +lon_0=-84.5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us"); + add_proj4text (p, 2, + "-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Florida North (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",30.75],PARAMETER[\"standard_parallel_2\",29.5833333"); + add_srs_wkt (p, 9, + "3333333],PARAMETER[\"latitude_of_origin\",29],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-84.5],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 11, + "1968500],PARAMETER[\"false_northing\",0],UNIT[\"US surve"); + add_srs_wkt (p, 12, + "y foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]"); + add_srs_wkt (p, 13, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"6441\"]]"); + p = add_epsg_def (filter, first, last, 6442, "epsg", 6442, + "NAD83(2011) / Florida West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Florida West\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",24.33333333"); + add_srs_wkt (p, 8, + "333333],PARAMETER[\"central_meridian\",-82],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.999941177],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "200000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"6442\"]]"); + p = add_epsg_def (filter, first, last, 6443, "epsg", 6443, + "NAD83(2011) / Florida West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +units"); + add_proj4text (p, 2, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Florida West (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",24.3"); + add_srs_wkt (p, 8, + "3333333333333],PARAMETER[\"central_meridian\",-82],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.999941177],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",656166.667],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"6443\"]]"); + p = add_epsg_def (filter, first, last, 6444, "epsg", 6444, + "NAD83(2011) / Georgia East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Georgia East\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",30],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-82.16666666666667],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",20000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 12, + "RTH],AUTHORITY[\"EPSG\",\"6444\"]]"); + p = add_epsg_def (filter, first, last, 6445, "epsg", 6445, + "NAD83(2011) / Georgia East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=200000.0001016002 +y_0=0 +ellps=GRS80 +units=us-f"); + add_proj4text (p, 2, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Georgia East (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",30],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-82.16666666666667],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.9999],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",656166.667],PARAMETER[\"false_northing\",0],UNIT[\"US s"); + add_srs_wkt (p, 11, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 12, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"6445\"]]"); + p = add_epsg_def (filter, first, last, 6446, "epsg", 6446, + "NAD83(2011) / Georgia West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Georgia West\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",30],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-84.16666666666667],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",70000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 12, + "RTH],AUTHORITY[\"EPSG\",\"6446\"]]"); + p = add_epsg_def (filter, first, last, 6447, "epsg", 6447, + "NAD83(2011) / Georgia West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +units=us-f"); + add_proj4text (p, 2, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Georgia West (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",30],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-84.16666666666667],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.9999],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",2296583.333],PARAMETER[\"false_northing\",0],UNIT[\"US "); + add_srs_wkt (p, 11, + "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 12, + "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"6447\"]]"); + p = add_epsg_def (filter, first, last, 6448, "epsg", 6448, + "NAD83(2011) / Idaho Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); + add_proj4text (p, 1, + "99473679999999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Idaho Central\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",41.66666666"); + add_srs_wkt (p, 8, + "666666],PARAMETER[\"central_meridian\",-114],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.999947368],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"6448\"]]"); + p = add_epsg_def (filter, first, last, 6449, "epsg", 6449, + "NAD83(2011) / Idaho Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); + add_proj4text (p, 1, + "99473679999999 +x_0=500000.0001016001 +y_0=0 +ellps=GRS8"); + add_proj4text (p, 2, + "0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Idaho Central (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",41.6"); + add_srs_wkt (p, 8, + "6666666666666],PARAMETER[\"central_meridian\",-114],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",0.999947368],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",1640416.667],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6449\"]]"); + p = add_epsg_def (filter, first, last, 6450, "epsg", 6450, + "NAD83(2011) / Idaho East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); + add_proj4text (p, 1, + "666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Idaho East\",GEOGCS[\"NAD83(2011)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_National_Spatial_Reference_System_2011\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",41.6666666666666"); + add_srs_wkt (p, 8, + "6],PARAMETER[\"central_meridian\",-112.1666666666667],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"scale_factor\",0.999947368],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",200000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 12, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6450\"]]"); + p = add_epsg_def (filter, first, last, 6451, "epsg", 6451, + "NAD83(2011) / Idaho East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); + add_proj4text (p, 1, + "666667 +k=0.9999473679999999 +x_0=200000.0001016002 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Idaho East (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",41.666"); + add_srs_wkt (p, 8, + "66666666666],PARAMETER[\"central_meridian\",-112.1666666"); + add_srs_wkt (p, 9, + "666667],PARAMETER[\"scale_factor\",0.999947368],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",656166.667],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 13, + "TH],AUTHORITY[\"EPSG\",\"6451\"]]"); + p = add_epsg_def (filter, first, last, 6452, "epsg", 6452, + "NAD83(2011) / Idaho West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); + add_proj4text (p, 1, + ".999933333 +x_0=800000 +y_0=0 +ellps=GRS80 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Idaho West\",GEOGCS[\"NAD83(2011)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_National_Spatial_Reference_System_2011\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",41.6666666666666"); + add_srs_wkt (p, 8, + "6],PARAMETER[\"central_meridian\",-115.75],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.999933333],PARAMETER[\"false_easting\",8"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6452\"]]"); + p = add_epsg_def (filter, first, last, 6453, "epsg", 6453, + "NAD83(2011) / Idaho West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); + add_proj4text (p, 1, + ".999933333 +x_0=800000.0001016001 +y_0=0 +ellps=GRS80 +u"); + add_proj4text (p, 2, + "nits=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Idaho West (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",41.666"); + add_srs_wkt (p, 8, + "66666666666],PARAMETER[\"central_meridian\",-115.75],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.999933333],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",2624666.667],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); + add_srs_wkt (p, 13, + "ITY[\"EPSG\",\"6453\"]]"); + p = add_epsg_def (filter, first, last, 6454, "epsg", 6454, + "NAD83(2011) / Illinois East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); + add_proj4text (p, 1, + "333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Illinois East\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",36.66666666"); + add_srs_wkt (p, 8, + "666666],PARAMETER[\"central_meridian\",-88.3333333333333"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",0.999975],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",300000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 11, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 12, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6454\"]]"); + p = add_epsg_def (filter, first, last, 6455, "epsg", 6455, + "NAD83(2011) / Illinois East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); + add_proj4text (p, 1, + "333333 +k=0.9999749999999999 +x_0=300000.0000000001 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Illinois East (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",36.6"); + add_srs_wkt (p, 8, + "6666666666666],PARAMETER[\"central_meridian\",-88.333333"); + add_srs_wkt (p, 9, + "33333333],PARAMETER[\"scale_factor\",0.999975],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_easting\",984250.0000000002],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",0],UNIT[\"US survey foot\",0.3048006096012192"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 13, + "\",NORTH],AUTHORITY[\"EPSG\",\"6455\"]]"); + p = add_epsg_def (filter, first, last, 6456, "epsg", 6456, + "NAD83(2011) / Illinois West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999941177 +x_0=700000 +y_0=0 +ellps=GRS80 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Illinois West\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",36.66666666"); + add_srs_wkt (p, 8, + "666666],PARAMETER[\"central_meridian\",-90.1666666666666"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",0.999941177],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",700000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6456\"]]"); + p = add_epsg_def (filter, first, last, 6457, "epsg", 6457, + "NAD83(2011) / Illinois West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999941177 +x_0=699999.9999898402 +y_0=0 +ell"); + add_proj4text (p, 2, + "ps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Illinois West (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",36.6"); + add_srs_wkt (p, 8, + "6666666666666],PARAMETER[\"central_meridian\",-90.166666"); + add_srs_wkt (p, 9, + "66666667],PARAMETER[\"scale_factor\",0.999941177],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",2296583.333300001],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 12, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 13, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6457\"]]"); + p = add_epsg_def (filter, first, last, 6458, "epsg", 6458, + "NAD83(2011) / Indiana East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=100000 +y_0=250000 +ellps=GRS80 +units=m +"); + add_proj4text (p, 2, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Indiana East\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",37.5],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-85.66666666666667],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.999966667],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",100000],PARAMETER[\"false_northing\",250000],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6458\"]]"); + p = add_epsg_def (filter, first, last, 6459, "epsg", 6459, + "NAD83(2011) / Indiana East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=99999.99989839978 +y_0=249999.9998983998 +"); + add_proj4text (p, 2, + "ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Indiana East (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",37.5"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-85.66666666666667],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.999966667],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",328083.333],PARAMETER[\"false_northing\",820208"); + add_srs_wkt (p, 11, + ".3330000002],UNIT[\"US survey foot\",0.3048006096012192,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"6459\"]]"); + p = add_epsg_def (filter, first, last, 6460, "epsg", 6460, + "NAD83(2011) / Indiana West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=900000 +y_0=250000 +ellps=GRS80 +units=m +"); + add_proj4text (p, 2, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Indiana West\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",37.5],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-87.08333333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.999966667],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",900000],PARAMETER[\"false_northing\",250000],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6460\"]]"); + p = add_epsg_def (filter, first, last, 6461, "epsg", 6461, + "NAD83(2011) / Indiana West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=900000 +y_0=249999.9998983998 +ellps=GRS80"); + add_proj4text (p, 2, + " +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Indiana West (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",37.5"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-87.08333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.999966667],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",2952750],PARAMETER[\"false_northing\",820208.33"); + add_srs_wkt (p, 11, + "30000002],UNIT[\"US survey foot\",0.3048006096012192,AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 13, + "ORTH],AUTHORITY[\"EPSG\",\"6461\"]]"); + p = add_epsg_def (filter, first, last, 6462, "epsg", 6462, + "NAD83(2011) / Iowa North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +"); + add_proj4text (p, 2, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Iowa North\",GEOGCS[\"NAD83(2011)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_National_Spatial_Reference_System_2011\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",43.2666"); + add_srs_wkt (p, 8, + "6666666667],PARAMETER[\"standard_parallel_2\",42.0666666"); + add_srs_wkt (p, 9, + "6666667],PARAMETER[\"latitude_of_origin\",41.5],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-93.5],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",1500000],PARAMETER[\"false_northing\",1000000],UNIT[\"m"); + add_srs_wkt (p, 12, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],"); + add_srs_wkt (p, 13, + "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6462\"]]"); + p = add_epsg_def (filter, first, last, 6463, "epsg", 6463, + "NAD83(2011) / Iowa North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=999999.99"); + add_proj4text (p, 2, + "99898402 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Iowa North (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamber"); + add_srs_wkt (p, 7, + "t_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1"); + add_srs_wkt (p, 8, + "\",43.26666666666667],PARAMETER[\"standard_parallel_2\","); + add_srs_wkt (p, 9, + "42.06666666666667],PARAMETER[\"latitude_of_origin\",41.5"); + add_srs_wkt (p, 10, + "],PARAMETER[\"central_meridian\",-93.5],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_easting\",4921250],PARAMETER[\"false_northing\",328083"); + add_srs_wkt (p, 12, + "3.333300001],UNIT[\"US survey foot\",0.3048006096012192,"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"6463\"]]"); + p = add_epsg_def (filter, first, last, 6464, "epsg", 6464, + "NAD83(2011) / Iowa South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); + add_proj4text (p, 1, + "667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Iowa South\",GEOGCS[\"NAD83(2011)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_National_Spatial_Reference_System_2011\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.7833"); + add_srs_wkt (p, 8, + "3333333333],PARAMETER[\"standard_parallel_2\",40.6166666"); + add_srs_wkt (p, 9, + "6666667],PARAMETER[\"latitude_of_origin\",40],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-93.5],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 11, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 13, + "\",NORTH],AUTHORITY[\"EPSG\",\"6464\"]]"); + p = add_epsg_def (filter, first, last, 6465, "epsg", 6465, + "NAD83(2011) / Iowa South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); + add_proj4text (p, 1, + "667 +lat_0=40 +lon_0=-93.5 +x_0=500000.00001016 +y_0=0 +"); + add_proj4text (p, 2, + "ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Iowa South (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamber"); + add_srs_wkt (p, 7, + "t_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1"); + add_srs_wkt (p, 8, + "\",41.78333333333333],PARAMETER[\"standard_parallel_2\","); + add_srs_wkt (p, 9, + "40.61666666666667],PARAMETER[\"latitude_of_origin\",40],"); + add_srs_wkt (p, 10, + "PARAMETER[\"central_meridian\",-93.5],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "easting\",1640416.6667],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 12, + "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 14, + "ORITY[\"EPSG\",\"6465\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_30.c b/src/spatialite/src/srsinit/epsg_inlined_30.c new file mode 100644 index 0000000..90ed4b0 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_30.c @@ -0,0 +1,3708 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:29 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_30 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 6466, "epsg", 6466, + "NAD83(2011) / Kansas North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Kansas North\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39"); + add_srs_wkt (p, 8, + ".78333333333333],PARAMETER[\"standard_parallel_2\",38.71"); + add_srs_wkt (p, 9, + "666666666667],PARAMETER[\"latitude_of_origin\",38.333333"); + add_srs_wkt (p, 10, + "33333334],PARAMETER[\"central_meridian\",-98],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",400000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 12, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6466\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 6467, "epsg", 6467, + "NAD83(2011) / Kansas North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=399999.9999"); + add_proj4text (p, 2, + "8984 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Kansas North (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",39.78333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",38.71666666666667],PARAMETER[\"latitude_of_origin\",38."); + add_srs_wkt (p, 10, + "33333333333334],PARAMETER[\"central_meridian\",-98],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",1312333.3333],PARAMETER[\"false_"); + add_srs_wkt (p, 12, + "northing\",0],UNIT[\"US survey foot\",0.3048006096012192"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 14, + "\",NORTH],AUTHORITY[\"EPSG\",\"6467\"]]"); + p = add_epsg_def (filter, first, last, 6468, "epsg", 6468, + "NAD83(2011) / Kansas South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y"); + add_proj4text (p, 2, + "_0=400000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Kansas South\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38"); + add_srs_wkt (p, 8, + ".56666666666667],PARAMETER[\"standard_parallel_2\",37.26"); + add_srs_wkt (p, 9, + "666666666667],PARAMETER[\"latitude_of_origin\",36.666666"); + add_srs_wkt (p, 10, + "66666666],PARAMETER[\"central_meridian\",-98.5],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_easting\",400000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",400000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 13, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "6468\"]]"); + p = add_epsg_def (filter, first, last, 6469, "epsg", 6469, + "NAD83(2011) / Kansas South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=399999.99"); + add_proj4text (p, 2, + "998984 +y_0=399999.99998984 +ellps=GRS80 +units=us-ft +n"); + add_proj4text (p, 3, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Kansas South (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",38.56666666666667],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",37.26666666666667],PARAMETER[\"latitude_of_origin\",36."); + add_srs_wkt (p, 10, + "66666666666666],PARAMETER[\"central_meridian\",-98.5],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_easting\",1312333.3333],PARAMETER[\"fals"); + add_srs_wkt (p, 12, + "e_northing\",1312333.3333],UNIT[\"US survey foot\",0.304"); + add_srs_wkt (p, 13, + "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 14, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6469\"]]"); + p = add_epsg_def (filter, first, last, 6470, "epsg", 6470, + "NAD83(2011) / Kentucky North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); + add_proj4text (p, 1, + "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +ellps="); + add_proj4text (p, 2, + "GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Kentucky North\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); + add_srs_wkt (p, 8, + "7.96666666666667],PARAMETER[\"standard_parallel_2\",38.9"); + add_srs_wkt (p, 9, + "6666666666667],PARAMETER[\"latitude_of_origin\",37.5],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-84.25],PARAMETER[\"false_e"); + add_srs_wkt (p, 11, + "asting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 12, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 13, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6470\"]]"); + p = add_epsg_def (filter, first, last, 6471, "epsg", 6471, + "NAD83(2011) / Kentucky North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); + add_proj4text (p, 1, + "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000.0001016001 +y_"); + add_proj4text (p, 2, + "0=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Kentucky North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",37.96666666666667],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",38.96666666666667],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "37.5],PARAMETER[\"central_meridian\",-84.25],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",1640416.667],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 14, + "AUTHORITY[\"EPSG\",\"6471\"]]"); + p = add_epsg_def (filter, first, last, 6472, "epsg", 6472, + "NAD83(2011) / Kentucky Single Zone"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 "); + add_proj4text (p, 2, + "+y_0=1000000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Kentucky Single Zone\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",37.08333333333334],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",38.66666666666666],PARAMETER[\"latitude_of_origin\",36."); + add_srs_wkt (p, 10, + "33333333333334],PARAMETER[\"central_meridian\",-85.75],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",1500000],PARAMETER[\"false_no"); + add_srs_wkt (p, 12, + "rthing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"6472\"]]"); + p = add_epsg_def (filter, first, last, 6473, "epsg", 6473, + "NAD83(2011) / Kentucky Single Zone (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.08333333333334 +lat_2=38.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=1500000 "); + add_proj4text (p, 2, + "+y_0=999999.9998983998 +ellps=GRS80 +units=us-ft +no_def"); + add_proj4text (p, 3, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Kentucky Single Zone (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); + add_srs_wkt (p, 8, + "parallel_1\",37.08333333333334],PARAMETER[\"standard_par"); + add_srs_wkt (p, 9, + "allel_2\",38.66666666666666],PARAMETER[\"latitude_of_ori"); + add_srs_wkt (p, 10, + "gin\",36.33333333333334],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 11, + "-85.75],PARAMETER[\"false_easting\",4921250],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",3280833.333],UNIT[\"US survey foot\",0."); + add_srs_wkt (p, 13, + "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 14, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6473\"]]"); + p = add_epsg_def (filter, first, last, 6474, "epsg", 6474, + "NAD83(2011) / Kentucky South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +"); + add_proj4text (p, 2, + "y_0=500000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Kentucky South\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); + add_srs_wkt (p, 8, + "7.93333333333333],PARAMETER[\"standard_parallel_2\",36.7"); + add_srs_wkt (p, 9, + "3333333333333],PARAMETER[\"latitude_of_origin\",36.33333"); + add_srs_wkt (p, 10, + "333333334],PARAMETER[\"central_meridian\",-85.75],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 12, + "\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 13, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"6474\"]]"); + p = add_epsg_def (filter, first, last, 6475, "epsg", 6475, + "NAD83(2011) / Kentucky South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000.0"); + add_proj4text (p, 2, + "001016001 +y_0=500000.0001016001 +ellps=GRS80 +units=us-"); + add_proj4text (p, 3, + "ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Kentucky South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",37.93333333333333],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",36.73333333333333],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "36.33333333333334],PARAMETER[\"central_meridian\",-85.75"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_easting\",1640416.667],PARAMETER[\"f"); + add_srs_wkt (p, 12, + "alse_northing\",1640416.667],UNIT[\"US survey foot\",0.3"); + add_srs_wkt (p, 13, + "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 14, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6475\"]]"); + p = add_epsg_def (filter, first, last, 6476, "epsg", 6476, + "NAD83(2011) / Louisiana North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +ellps="); + add_proj4text (p, 2, + "GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Louisiana North\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "2011)\",DATUM[\"NAD83_National_Spatial_Reference_System_"); + add_srs_wkt (p, 2, + "2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",32.66666666666666],PARAMETER[\"standard_parallel_2\",31"); + add_srs_wkt (p, 9, + ".16666666666667],PARAMETER[\"latitude_of_origin\",30.5],"); + add_srs_wkt (p, 10, + "PARAMETER[\"central_meridian\",-92.5],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "easting\",1000000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 12, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 13, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6476\"]]"); + p = add_epsg_def (filter, first, last, 6477, "epsg", 6477, + "NAD83(2011) / Louisiana North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=30.5 +lon_0=-92.5 +x_0=999999.9999898402 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Louisiana North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",32.66666666666666],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",31.16666666666667],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "30.5],PARAMETER[\"central_meridian\",-92.5],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",3280833.333300001],PARAMETER[\"false_nor"); + add_srs_wkt (p, 12, + "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); + add_srs_wkt (p, 13, + "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 14, + "NORTH],AUTHORITY[\"EPSG\",\"6477\"]]"); + p = add_epsg_def (filter, first, last, 6478, "epsg", 6478, + "NAD83(2011) / Louisiana South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91"); + add_proj4text (p, 1, + ".33333333333333 +x_0=1000000 +y_0=0 +ellps=GRS80 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Louisiana South\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "2011)\",DATUM[\"NAD83_National_Spatial_Reference_System_"); + add_srs_wkt (p, 2, + "2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",30.7],PARAMETER[\"standard_parallel_2\",29.3],PARAMETER"); + add_srs_wkt (p, 9, + "[\"latitude_of_origin\",28.5],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 10, + "an\",-91.33333333333333],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 11, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"6478\"]]"); + p = add_epsg_def (filter, first, last, 6479, "epsg", 6479, + "NAD83(2011) / Louisiana South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91"); + add_proj4text (p, 1, + ".33333333333333 +x_0=999999.9999898402 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Louisiana South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",30.7],PARAMETER[\"standard_parallel_2\",29.3],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"latitude_of_origin\",28.5],PARAMETER[\"central_"); + add_srs_wkt (p, 10, + "meridian\",-91.33333333333333],PARAMETER[\"false_easting"); + add_srs_wkt (p, 11, + "\",3280833.333300001],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 12, + "IT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); + add_srs_wkt (p, 14, + "ITY[\"EPSG\",\"6479\"]]"); + p = add_epsg_def (filter, first, last, 6480, "epsg", 6480, + "NAD83(2011) / Maine CS2000 Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.5 +lon_0=-69.125 +k=0.99998 +x_0=5"); + add_proj4text (p, 1, + "00000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Maine CS2000 Central\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",43.5"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-69.125],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.99998],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"6480\"]]"); + p = add_epsg_def (filter, first, last, 6481, "epsg", 6481, + "NAD83(2011) / Maine CS2000 East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-67.875 +k=0"); + add_proj4text (p, 1, + ".99998 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Maine CS2000 East\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",43.833"); + add_srs_wkt (p, 8, + "33333333334],PARAMETER[\"central_meridian\",-67.875],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.99998],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",700000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6481\"]]"); + p = add_epsg_def (filter, first, last, 6482, "epsg", 6482, + "NAD83(2011) / Maine CS2000 West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.375 +k=0"); + add_proj4text (p, 1, + ".99998 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Maine CS2000 West\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",42.833"); + add_srs_wkt (p, 8, + "33333333334],PARAMETER[\"central_meridian\",-70.375],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.99998],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",300000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6482\"]]"); + p = add_epsg_def (filter, first, last, 6483, "epsg", 6483, + "NAD83(2011) / Maine East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Maine East\",GEOGCS[\"NAD83(2011)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_National_Spatial_Reference_System_2011\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",43.6666666666666"); + add_srs_wkt (p, 8, + "6],PARAMETER[\"central_meridian\",-68.5],PARAMETER[\"sca"); + add_srs_wkt (p, 9, + "le_factor\",0.9999],PARAMETER[\"false_easting\",300000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 12, + "],AUTHORITY[\"EPSG\",\"6483\"]]"); + p = add_epsg_def (filter, first, last, 6484, "epsg", 6484, + "NAD83(2011) / Maine East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +units=us"); + add_proj4text (p, 2, + "-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Maine East (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",43.666"); + add_srs_wkt (p, 8, + "66666666666],PARAMETER[\"central_meridian\",-68.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.9999],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",984250.0000000002],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 11, + "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"6484\"]]"); + p = add_epsg_def (filter, first, last, 6485, "epsg", 6485, + "NAD83(2011) / Maine West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Maine West\",GEOGCS[\"NAD83(2011)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_National_Spatial_Reference_System_2011\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",42.8333333333333"); + add_srs_wkt (p, 8, + "4],PARAMETER[\"central_meridian\",-70.16666666666667],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"scale_factor\",0.999966667],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",900000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 12, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6485\"]]"); + p = add_epsg_def (filter, first, last, 6486, "epsg", 6486, + "NAD83(2011) / Maine West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +u"); + add_proj4text (p, 2, + "nits=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Maine West (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",42.833"); + add_srs_wkt (p, 8, + "33333333334],PARAMETER[\"central_meridian\",-70.16666666"); + add_srs_wkt (p, 9, + "666667],PARAMETER[\"scale_factor\",0.999966667],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",2952750],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"6486\"]]"); + p = add_epsg_def (filter, first, last, 6487, "epsg", 6487, + "NAD83(2011) / Maryland"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666"); + add_proj4text (p, 1, + "666 +lon_0=-77 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Maryland\",GEOGCS[\"NAD83(2011)\""); + add_srs_wkt (p, 1, + ",DATUM[\"NAD83_National_Spatial_Reference_System_2011\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39.45],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_2\",38.3],PARAMETER[\"lati"); + add_srs_wkt (p, 9, + "tude_of_origin\",37.66666666666666],PARAMETER[\"central_"); + add_srs_wkt (p, 10, + "meridian\",-77],PARAMETER[\"false_easting\",400000],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"6487\"]]"); + p = add_epsg_def (filter, first, last, 6488, "epsg", 6488, + "NAD83(2011) / Maryland (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666"); + add_proj4text (p, 1, + "666 +lon_0=-77 +x_0=399999.9998983998 +y_0=0 +ellps=GRS8"); + add_proj4text (p, 2, + "0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Maryland (ftUS)\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "2011)\",DATUM[\"NAD83_National_Spatial_Reference_System_"); + add_srs_wkt (p, 2, + "2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",39.45],PARAMETER[\"standard_parallel_2\",38.3],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"latitude_of_origin\",37.66666666666666],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-77],PARAMETER[\"false_easting\",1312"); + add_srs_wkt (p, 11, + "333.333],PARAMETER[\"false_northing\",0],UNIT[\"US surve"); + add_srs_wkt (p, 12, + "y foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]"); + add_srs_wkt (p, 13, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"6488\"]]"); + p = add_epsg_def (filter, first, last, 6489, "epsg", 6489, + "NAD83(2011) / Massachusetts Island"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333"); + add_proj4text (p, 1, + "333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Massachusetts Island\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",41.48333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",41.28333333333333],PARAMETER[\"latitude_of_origin\",41]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"central_meridian\",-70.5],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 12, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 13, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6489\"]]"); + p = add_epsg_def (filter, first, last, 6490, "epsg", 6490, + "NAD83(2011) / Massachusetts Island (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333"); + add_proj4text (p, 1, + "333 +lat_0=41 +lon_0=-70.5 +x_0=500000.0001016001 +y_0=0"); + add_proj4text (p, 2, + " +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Massachusetts Island (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); + add_srs_wkt (p, 8, + "parallel_1\",41.48333333333333],PARAMETER[\"standard_par"); + add_srs_wkt (p, 9, + "allel_2\",41.28333333333333],PARAMETER[\"latitude_of_ori"); + add_srs_wkt (p, 10, + "gin\",41],PARAMETER[\"central_meridian\",-70.5],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_easting\",1640416.667],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 14, + "RTH],AUTHORITY[\"EPSG\",\"6490\"]]"); + p = add_epsg_def (filter, first, last, 6491, "epsg", 6491, + "NAD83(2011) / Massachusetts Mainland"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +ellp"); + add_proj4text (p, 2, + "s=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Massachusetts Mainland\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",42.68333333333333],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",41.71666666666667],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "41],PARAMETER[\"central_meridian\",-71.5],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_easting\",200000],PARAMETER[\"false_northing\",75000"); + add_srs_wkt (p, 12, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6491\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 6492, "epsg", 6492, + "NAD83(2011) / Massachusetts Mainland (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=41 +lon_0=-71.5 +x_0=200000.0001016002 +y_0=7"); + add_proj4text (p, 2, + "50000 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Massachusetts Mainland (ftUS)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",42.68333333333333],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 9, + "rallel_2\",41.71666666666667],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 10, + "igin\",41],PARAMETER[\"central_meridian\",-71.5],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_easting\",656166.667],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",2460625],UNIT[\"US survey foot\",0.304800609601219"); + add_srs_wkt (p, 13, + "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6492\"]]"); + p = add_epsg_def (filter, first, last, 6493, "epsg", 6493, + "NAD83(2011) / Michigan Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43"); + add_proj4text (p, 1, + ".31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +"); + add_proj4text (p, 2, + "y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Michigan Central\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(2011)\",DATUM[\"NAD83_National_Spatial_Reference_System"); + add_srs_wkt (p, 2, + "_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",45.7],PARAMETER[\"standard_parallel_2\",44.183333333333"); + add_srs_wkt (p, 9, + "33],PARAMETER[\"latitude_of_origin\",43.31666666666667],"); + add_srs_wkt (p, 10, + "PARAMETER[\"central_meridian\",-84.36666666666666],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_easting\",6000000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 12, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 13, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 14, + "493\"]]"); + p = add_epsg_def (filter, first, last, 6494, "epsg", 6494, + "NAD83(2011) / Michigan Central (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43"); + add_proj4text (p, 1, + ".31666666666667 +lon_0=-84.36666666666666 +x_0=5999999.9"); + add_proj4text (p, 2, + "99976001 +y_0=0 +ellps=GRS80 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Michigan Central (ft)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",45.7],PARAMETER[\"standard_parallel_2\",44.183333"); + add_srs_wkt (p, 9, + "33333333],PARAMETER[\"latitude_of_origin\",43.3166666666"); + add_srs_wkt (p, 10, + "6667],PARAMETER[\"central_meridian\",-84.36666666666666]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_easting\",19685039.37],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"6494\"]]"); + p = add_epsg_def (filter, first, last, 6495, "epsg", 6495, + "NAD83(2011) / Michigan North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_"); + add_proj4text (p, 2, + "0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Michigan North\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); + add_srs_wkt (p, 8, + "7.08333333333334],PARAMETER[\"standard_parallel_2\",45.4"); + add_srs_wkt (p, 9, + "8333333333333],PARAMETER[\"latitude_of_origin\",44.78333"); + add_srs_wkt (p, 10, + "333333333],PARAMETER[\"central_meridian\",-87],PARAMETER"); + add_srs_wkt (p, 11, + "[\"false_easting\",8000000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 13, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6495\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 6496, "epsg", 6496, + "NAD83(2011) / Michigan North (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=7999999.999"); + add_proj4text (p, 2, + "968001 +y_0=0 +ellps=GRS80 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Michigan North (ft)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",47.08333333333334],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",45.48333333333333],PARAMETER[\"latitude_of_origin\",44."); + add_srs_wkt (p, 10, + "78333333333333],PARAMETER[\"central_meridian\",-87],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",26246719.16],PARAMETER[\"false_n"); + add_srs_wkt (p, 12, + "orthing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 13, + "002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 14, + "PSG\",\"6496\"]]"); + p = add_epsg_def (filter, first, last, 6497, "epsg", 6497, + "NAD83(2011) / Michigan Oblique Mercator"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=45.30916666666666 +lonc=-86 +alpha=33"); + add_proj4text (p, 1, + "7.25556 +k=0.9996 +x_0=2546731.496 +y_0=-4354009.816 +no"); + add_proj4text (p, 2, + "_uoff +gamma=337.25556 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Michigan Oblique Mercator\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Hotine_Oblique_Mercator\"],PARAMETER[\"latitude_of_cen"); + add_srs_wkt (p, 8, + "ter\",45.30916666666666],PARAMETER[\"longitude_of_center"); + add_srs_wkt (p, 9, + "\",-86],PARAMETER[\"azimuth\",337.25556],PARAMETER[\"rec"); + add_srs_wkt (p, 10, + "tified_grid_angle\",337.25556],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 11, + ",0.9996],PARAMETER[\"false_easting\",2546731.496],PARAME"); + add_srs_wkt (p, 12, + "TER[\"false_northing\",-4354009.816],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 13, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 14, + "NORTH],AUTHORITY[\"EPSG\",\"6497\"]]"); + p = add_epsg_def (filter, first, last, 6498, "epsg", 6498, + "NAD83(2011) / Michigan South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41"); + add_proj4text (p, 1, + ".5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +ellps="); + add_proj4text (p, 2, + "GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Michigan South\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); + add_srs_wkt (p, 8, + "3.66666666666666],PARAMETER[\"standard_parallel_2\",42.1"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",41.5],PARAMETER[\"cen"); + add_srs_wkt (p, 10, + "tral_meridian\",-84.36666666666666],PARAMETER[\"false_ea"); + add_srs_wkt (p, 11, + "sting\",4000000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 12, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 13, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6498\"]]"); + p = add_epsg_def (filter, first, last, 6499, "epsg", 6499, + "NAD83(2011) / Michigan South (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41"); + add_proj4text (p, 1, + ".5 +lon_0=-84.36666666666666 +x_0=3999999.999984 +y_0=0 "); + add_proj4text (p, 2, + "+ellps=GRS80 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Michigan South (ft)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",43.66666666666666],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",42.1],PARAMETER[\"latitude_of_origin\",41.5],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-84.36666666666666],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_easting\",13123359.58],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 12, + "],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXI"); + add_srs_wkt (p, 13, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"649"); + add_srs_wkt (p, 14, + "9\"]]"); + p = add_epsg_def (filter, first, last, 6500, "epsg", 6500, + "NAD83(2011) / Minnesota Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); + add_proj4text (p, 1, + "5 +lon_0=-94.25 +x_0=800000 +y_0=100000 +ellps=GRS80 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Minnesota Central\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamber"); + add_srs_wkt (p, 7, + "t_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1"); + add_srs_wkt (p, 8, + "\",47.05],PARAMETER[\"standard_parallel_2\",45.616666666"); + add_srs_wkt (p, 9, + "66667],PARAMETER[\"latitude_of_origin\",45],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-94.25],PARAMETER[\"false_easting\",8"); + add_srs_wkt (p, 11, + "00000],PARAMETER[\"false_northing\",100000],UNIT[\"metre"); + add_srs_wkt (p, 12, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 13, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6500\"]]"); + p = add_epsg_def (filter, first, last, 6501, "epsg", 6501, + "NAD83(2011) / Minnesota Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); + add_proj4text (p, 1, + "5 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.999989"); + add_proj4text (p, 2, + "83997 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Minnesota Central (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1"); + add_srs_wkt (p, 4, + "116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 8, + "llel_1\",47.05],PARAMETER[\"standard_parallel_2\",45.616"); + add_srs_wkt (p, 9, + "66666666667],PARAMETER[\"latitude_of_origin\",45],PARAME"); + add_srs_wkt (p, 10, + "TER[\"central_meridian\",-94.25],PARAMETER[\"false_easti"); + add_srs_wkt (p, 11, + "ng\",2624666.6667],PARAMETER[\"false_northing\",328083.3"); + add_srs_wkt (p, 12, + "333],UNIT[\"US survey foot\",0.3048006096012192,AUTHORIT"); + add_srs_wkt (p, 13, + "Y[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 14, + ",AUTHORITY[\"EPSG\",\"6501\"]]"); + p = add_epsg_def (filter, first, last, 6502, "epsg", 6502, + "NAD83(2011) / Minnesota North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y"); + add_proj4text (p, 2, + "_0=100000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Minnesota North\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "2011)\",DATUM[\"NAD83_National_Spatial_Reference_System_"); + add_srs_wkt (p, 2, + "2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",48.63333333333333],PARAMETER[\"standard_parallel_2\",47"); + add_srs_wkt (p, 9, + ".03333333333333],PARAMETER[\"latitude_of_origin\",46.5],"); + add_srs_wkt (p, 10, + "PARAMETER[\"central_meridian\",-93.1],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "easting\",800000],PARAMETER[\"false_northing\",100000],U"); + add_srs_wkt (p, 12, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6502\"]]"); + p = add_epsg_def (filter, first, last, 6503, "epsg", 6503, + "NAD83(2011) / Minnesota North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.00"); + add_proj4text (p, 2, + "00101599 +y_0=99999.99998983997 +ellps=GRS80 +units=us-f"); + add_proj4text (p, 3, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Minnesota North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",48.63333333333333],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",47.03333333333333],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "46.5],PARAMETER[\"central_meridian\",-93.1],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",2624666.6667],PARAMETER[\"false_northing"); + add_srs_wkt (p, 12, + "\",328083.3333],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 13, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6503\"]]"); + p = add_epsg_def (filter, first, last, 6504, "epsg", 6504, + "NAD83(2011) / Minnesota South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +ellps="); + add_proj4text (p, 2, + "GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Minnesota South\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "2011)\",DATUM[\"NAD83_National_Spatial_Reference_System_"); + add_srs_wkt (p, 2, + "2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",45.21666666666667],PARAMETER[\"standard_parallel_2\",43"); + add_srs_wkt (p, 9, + ".78333333333333],PARAMETER[\"latitude_of_origin\",43],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-94],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",800000],PARAMETER[\"false_northing\",100000],UNIT["); + add_srs_wkt (p, 12, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 13, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6504\"]]"); + p = add_epsg_def (filter, first, last, 6505, "epsg", 6505, + "NAD83(2011) / Minnesota South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=999"); + add_proj4text (p, 2, + "99.99998983997 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Minnesota South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",45.21666666666667],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",43.78333333333333],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "43],PARAMETER[\"central_meridian\",-94],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_easting\",2624666.6667],PARAMETER[\"false_northing\",3"); + add_srs_wkt (p, 12, + "28083.3333],UNIT[\"US survey foot\",0.3048006096012192,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"6505\"]]"); + p = add_epsg_def (filter, first, last, 6506, "epsg", 6506, + "NAD83(2011) / Mississippi East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Mississippi East\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(2011)\",DATUM[\"NAD83_National_Spatial_Reference_System"); + add_srs_wkt (p, 2, + "_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",29.5],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-88.83333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"scale_factor\",0.99995],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",300000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6506\"]]"); + p = add_epsg_def (filter, first, last, 6507, "epsg", 6507, + "NAD83(2011) / Mississippi East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Mississippi East (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"11"); + add_srs_wkt (p, 4, + "16\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",2"); + add_srs_wkt (p, 8, + "9.5],PARAMETER[\"central_meridian\",-88.83333333333333],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.99995],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",984250.0000000002],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"6507\"]]"); + p = add_epsg_def (filter, first, last, 6508, "epsg", 6508, + "NAD83(2011) / Mississippi TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=32.5 +lon_0=-89.75 +k=0.9998335 +x_0="); + add_proj4text (p, 1, + "500000 +y_0=1300000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Mississippi TM\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",32.5],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",-89.75],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9998335],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",1300000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 12, + "RTH],AUTHORITY[\"EPSG\",\"6508\"]]"); + p = add_epsg_def (filter, first, last, 6509, "epsg", 6509, + "NAD83(2011) / Mississippi West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=700000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Mississippi West\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(2011)\",DATUM[\"NAD83_National_Spatial_Reference_System"); + add_srs_wkt (p, 2, + "_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",29.5],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-90.33333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"scale_factor\",0.99995],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",700000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6509\"]]"); + p = add_epsg_def (filter, first, last, 6510, "epsg", 6510, + "NAD83(2011) / Mississippi West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=699999.9998983998 +y_0=0 +ellps=GRS80 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Mississippi West (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"11"); + add_srs_wkt (p, 4, + "16\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",2"); + add_srs_wkt (p, 8, + "9.5],PARAMETER[\"central_meridian\",-90.33333333333333],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.99995],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",2296583.333],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6510\"]]"); + p = add_epsg_def (filter, first, last, 6511, "epsg", 6511, + "NAD83(2011) / Missouri Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9"); + add_proj4text (p, 1, + "99933333 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Missouri Central\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(2011)\",DATUM[\"NAD83_National_Spatial_Reference_System"); + add_srs_wkt (p, 2, + "_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",35.8333"); + add_srs_wkt (p, 8, + "3333333334],PARAMETER[\"central_meridian\",-92.5],PARAME"); + add_srs_wkt (p, 9, + "TER[\"scale_factor\",0.999933333],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6511\"]]"); + p = add_epsg_def (filter, first, last, 6512, "epsg", 6512, + "NAD83(2011) / Missouri East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9"); + add_proj4text (p, 1, + "99933333 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Missouri East\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",35.83333333"); + add_srs_wkt (p, 8, + "333334],PARAMETER[\"central_meridian\",-90.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.999933333],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",250000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6512\"]]"); + p = add_epsg_def (filter, first, last, 6513, "epsg", 6513, + "NAD83(2011) / Missouri West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9"); + add_proj4text (p, 1, + "99941177 +x_0=850000 +y_0=0 +ellps=GRS80 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Missouri West\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",36.16666666"); + add_srs_wkt (p, 8, + "666666],PARAMETER[\"central_meridian\",-94.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.999941177],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",850000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6513\"]]"); + p = add_epsg_def (filter, first, last, 6514, "epsg", 6514, + "NAD83(2011) / Montana"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5"); + add_proj4text (p, 1, + " +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Montana\",GEOGCS[\"NAD83(2011)\","); + add_srs_wkt (p, 1, + "DATUM[\"NAD83_National_Spatial_Reference_System_2011\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",49],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",45],PARAMETER[\"latitude_"); + add_srs_wkt (p, 9, + "of_origin\",44.25],PARAMETER[\"central_meridian\",-109.5"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_easting\",600000],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"6514\"]]"); + p = add_epsg_def (filter, first, last, 6515, "epsg", 6515, + "NAD83(2011) / Montana (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5"); + add_proj4text (p, 1, + " +x_0=599999.9999976 +y_0=0 +ellps=GRS80 +units=ft +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Montana (ft)\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",49"); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_2\",45],PARAMETER[\"lati"); + add_srs_wkt (p, 9, + "tude_of_origin\",44.25],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 10, + "109.5],PARAMETER[\"false_easting\",1968503.937],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"6515\"]]"); + p = add_epsg_def (filter, first, last, 6516, "epsg", 6516, + "NAD83(2011) / Nebraska"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); + add_proj4text (p, 1, + "lon_0=-100 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Nebraska\",GEOGCS[\"NAD83(2011)\""); + add_srs_wkt (p, 1, + ",DATUM[\"NAD83_National_Spatial_Reference_System_2011\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",43],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",40],PARAMETER[\"latitude_"); + add_srs_wkt (p, 9, + "of_origin\",39.83333333333334],PARAMETER[\"central_merid"); + add_srs_wkt (p, 10, + "ian\",-100],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); + add_srs_wkt (p, 13, + "ITY[\"EPSG\",\"6516\"]]"); + p = add_epsg_def (filter, first, last, 6517, "epsg", 6517, + "NAD83(2011) / Nebraska (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); + add_proj4text (p, 1, + "lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +tow"); + add_proj4text (p, 2, + "gs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Nebraska (ftUS)\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"475"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_1\",43],PARAMETER[\"standard_par"); + add_srs_wkt (p, 9, + "allel_2\",40],PARAMETER[\"latitude_of_origin\",39.833333"); + add_srs_wkt (p, 10, + "33333334],PARAMETER[\"central_meridian\",-100],PARAMETER"); + add_srs_wkt (p, 11, + "[\"false_easting\",1640416.6667],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 14, + "RTH],AUTHORITY[\"EPSG\",\"6517\"]]"); + p = add_epsg_def (filter, first, last, 6518, "epsg", 6518, + "NAD83(2011) / Nevada Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=500000 +y_0=6000000 +ellps=GRS80 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Nevada Central\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",34.75],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",-116.6666666666667],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",6000000],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6518\"]]"); + p = add_epsg_def (filter, first, last, 6519, "epsg", 6519, + "NAD83(2011) / Nevada Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=500000.00001016 +y_0=6000000 +ellps=GRS80 +uni"); + add_proj4text (p, 2, + "ts=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Nevada Central (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",34"); + add_srs_wkt (p, 8, + ".75],PARAMETER[\"central_meridian\",-116.6666666666667],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",1640416.6667],PARAMETER[\"false_northing\",196850"); + add_srs_wkt (p, 11, + "00],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"6519\"]]"); + p = add_epsg_def (filter, first, last, 6520, "epsg", 6520, + "NAD83(2011) / Nevada East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=200000 +y_0=8000000 +ellps=GRS80 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Nevada East\",GEOGCS[\"NAD83(2011"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_2011"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",34.75],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-115.5833333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",200"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",8000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6520\"]]"); + p = add_epsg_def (filter, first, last, 6521, "epsg", 6521, + "NAD83(2011) / Nevada East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=200000.00001016 +y_0=8000000.000010163 +ellps="); + add_proj4text (p, 2, + "GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Nevada East (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",34.75"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-115.5833333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.9999],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",656166.6667],PARAMETER[\"false_northing\",26246666.6"); + add_srs_wkt (p, 11, + "6670001],UNIT[\"US survey foot\",0.3048006096012192,AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 13, + "RTH],AUTHORITY[\"EPSG\",\"6521\"]]"); + p = add_epsg_def (filter, first, last, 6522, "epsg", 6522, + "NAD83(2011) / Nevada West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=800000 +y_0=4000000 +ellps=GRS80 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Nevada West\",GEOGCS[\"NAD83(2011"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_2011"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",34.75],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-118.5833333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",800"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",4000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6522\"]]"); + p = add_epsg_def (filter, first, last, 6523, "epsg", 6523, + "NAD83(2011) / Nevada West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=800000.0000101599 +y_0=3999999.99998984 +ellps"); + add_proj4text (p, 2, + "=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Nevada West (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",34.75"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-118.5833333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.9999],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",2624666.6667],PARAMETER[\"false_northing\",13123333."); + add_srs_wkt (p, 11, + "3333],UNIT[\"US survey foot\",0.3048006096012192,AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 13, + "],AUTHORITY[\"EPSG\",\"6523\"]]"); + p = add_epsg_def (filter, first, last, 6524, "epsg", 6524, + "NAD83(2011) / New Hampshire"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=300000 +y_0=0 +ellps=GRS80 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New Hampshire\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",42.5],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-71.66666666666667],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.999966667],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",300000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6524\"]]"); + p = add_epsg_def (filter, first, last, 6525, "epsg", 6525, + "NAD83(2011) / New Hampshire (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +uni"); + add_proj4text (p, 2, + "ts=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New Hampshire (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",42.5"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-71.66666666666667],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.999966667],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",984250.0000000002],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"6525\"]]"); + p = add_epsg_def (filter, first, last, 6526, "epsg", 6526, + "NAD83(2011) / New Jersey"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New Jersey\",GEOGCS[\"NAD83(2011)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_National_Spatial_Reference_System_2011\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",38.8333333333333"); + add_srs_wkt (p, 8, + "4],PARAMETER[\"central_meridian\",-74.5],PARAMETER[\"sca"); + add_srs_wkt (p, 9, + "le_factor\",0.9999],PARAMETER[\"false_easting\",150000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 12, + "],AUTHORITY[\"EPSG\",\"6526\"]]"); + p = add_epsg_def (filter, first, last, 6527, "epsg", 6527, + "NAD83(2011) / New Jersey (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=us-ft +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New Jersey (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",38.833"); + add_srs_wkt (p, 8, + "33333333334],PARAMETER[\"central_meridian\",-74.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.9999],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",492125],PARAMETER[\"false_northing\",0],UNIT[\"US surve"); + add_srs_wkt (p, 11, + "y foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]"); + add_srs_wkt (p, 12, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"6527\"]]"); + p = add_epsg_def (filter, first, last, 6528, "epsg", 6528, + "NAD83(2011) / New Mexico Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=5000"); + add_proj4text (p, 1, + "00 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New Mexico Central\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",31],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-106.25],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"6528\"]]"); + p = add_epsg_def (filter, first, last, 6529, "epsg", 6529, + "NAD83(2011) / New Mexico Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=5000"); + add_proj4text (p, 1, + "00.0001016001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New Mexico Central (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",31],PARAMETER[\"central_meridian\",-106.25],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",16404"); + add_srs_wkt (p, 10, + "16.667],PARAMETER[\"false_northing\",0],UNIT[\"US survey"); + add_srs_wkt (p, 11, + " foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "6529\"]]"); + p = add_epsg_def (filter, first, last, 6530, "epsg", 6530, + "NAD83(2011) / New Mexico East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); + add_proj4text (p, 1, + "909091 +x_0=165000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New Mexico East\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "2011)\",DATUM[\"NAD83_National_Spatial_Reference_System_"); + add_srs_wkt (p, 2, + "2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",31],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",-104.3333333333333],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.999909091],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",165000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6530\"]]"); + p = add_epsg_def (filter, first, last, 6531, "epsg", 6531, + "NAD83(2011) / New Mexico East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); + add_proj4text (p, 1, + "909091 +x_0=165000 +y_0=0 +ellps=GRS80 +units=us-ft +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New Mexico East (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",31"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-104.3333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.999909091],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",541337.5],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"6531\"]]"); + p = add_epsg_def (filter, first, last, 6532, "epsg", 6532, + "NAD83(2011) / New Mexico West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); + add_proj4text (p, 1, + "916667 +x_0=830000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New Mexico West\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "2011)\",DATUM[\"NAD83_National_Spatial_Reference_System_"); + add_srs_wkt (p, 2, + "2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",31],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",-107.8333333333333],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.999916667],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",830000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6532\"]]"); + p = add_epsg_def (filter, first, last, 6533, "epsg", 6533, + "NAD83(2011) / New Mexico West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); + add_proj4text (p, 1, + "916667 +x_0=830000.0001016001 +y_0=0 +ellps=GRS80 +units"); + add_proj4text (p, 2, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New Mexico West (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",31"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-107.8333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.999916667],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",2723091.667],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); + add_srs_wkt (p, 13, + "ITY[\"EPSG\",\"6533\"]]"); + p = add_epsg_def (filter, first, last, 6534, "epsg", 6534, + "NAD83(2011) / New York Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=250000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New York Central\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(2011)\",DATUM[\"NAD83_National_Spatial_Reference_System"); + add_srs_wkt (p, 2, + "_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",40],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",-76.58333333333333],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",0.9999375],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",250000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6534\"]]"); + p = add_epsg_def (filter, first, last, 6535, "epsg", 6535, + "NAD83(2011) / New York Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=249999.9998983998 +y_0=0 +ellps=GRS80 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New York Central (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"11"); + add_srs_wkt (p, 4, + "16\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",4"); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",-76.58333333333333],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"scale_factor\",0.9999375],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",820208.3330000002],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"6535\"]]"); + p = add_epsg_def (filter, first, last, 6536, "epsg", 6536, + "NAD83(2011) / New York East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New York East\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",38.83333333"); + add_srs_wkt (p, 8, + "333334],PARAMETER[\"central_meridian\",-74.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",150"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"6536\"]]"); + p = add_epsg_def (filter, first, last, 6537, "epsg", 6537, + "NAD83(2011) / New York East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +ellps=GRS80 +units=us-ft +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New York East (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",38.8"); + add_srs_wkt (p, 8, + "3333333333334],PARAMETER[\"central_meridian\",-74.5],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.9999],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",492125],PARAMETER[\"false_northing\",0],UNIT[\"US su"); + add_srs_wkt (p, 11, + "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"6537\"]]"); + p = add_epsg_def (filter, first, last, 6538, "epsg", 6538, + "NAD83(2011) / New York Long Island"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New York Long Island\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",41.03333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",40.66666666666666],PARAMETER[\"latitude_of_origin\",40."); + add_srs_wkt (p, 10, + "16666666666666],PARAMETER[\"central_meridian\",-74],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",300000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 12, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 13, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 14, + "538\"]]"); + p = add_epsg_def (filter, first, last, 6539, "epsg", 6539, + "NAD83(2011) / New York Long Island (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000.0000"); + add_proj4text (p, 2, + "000001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New York Long Island (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); + add_srs_wkt (p, 8, + "parallel_1\",41.03333333333333],PARAMETER[\"standard_par"); + add_srs_wkt (p, 9, + "allel_2\",40.66666666666666],PARAMETER[\"latitude_of_ori"); + add_srs_wkt (p, 10, + "gin\",40.16666666666666],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 11, + "-74],PARAMETER[\"false_easting\",984250.0000000002],PARA"); + add_srs_wkt (p, 12, + "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 13, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 14, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6539\"]]"); + p = add_epsg_def (filter, first, last, 6540, "epsg", 6540, + "NAD83(2011) / New York West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=350000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New York West\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",40],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-78.58333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999375],PARAMETER[\"false_easting\",35"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6540\"]]"); + p = add_epsg_def (filter, first, last, 6541, "epsg", 6541, + "NAD83(2011) / New York West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=350000.0001016001 +y_0=0 +ellps=GRS80 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / New York West (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",40],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-78.58333333333333],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.9999375],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",1148291.667],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"6541\"]]"); + p = add_epsg_def (filter, first, last, 6542, "epsg", 6542, + "NAD83(2011) / North Carolina"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +ellps"); + add_proj4text (p, 2, + "=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / North Carolina\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); + add_srs_wkt (p, 8, + "6.16666666666666],PARAMETER[\"standard_parallel_2\",34.3"); + add_srs_wkt (p, 9, + "3333333333334],PARAMETER[\"latitude_of_origin\",33.75],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"central_meridian\",-79],PARAMETER[\"false_eas"); + add_srs_wkt (p, 11, + "ting\",609601.22],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 12, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 13, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6542\"]]"); + p = add_epsg_def (filter, first, last, 6543, "epsg", 6543, + "NAD83(2011) / North Carolina (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0="); + add_proj4text (p, 2, + "0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / North Carolina (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",36.16666666666666],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",34.33333333333334],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "33.75],PARAMETER[\"central_meridian\",-79],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_easting\",2000000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 12, + "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 14, + "ORITY[\"EPSG\",\"6543\"]]"); + p = add_epsg_def (filter, first, last, 6544, "epsg", 6544, + "NAD83(2011) / North Dakota North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333"); + add_proj4text (p, 1, + "333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +ellps=GR"); + add_proj4text (p, 2, + "S80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / North Dakota North\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",48.73333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",47.43333333333333],PARAMETER[\"latitude_of_origin\",47]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"central_meridian\",-100.5],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_easting\",600000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 12, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6544\"]]"); + p = add_epsg_def (filter, first, last, 6545, "epsg", 6545, + "NAD83(2011) / North Dakota North (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333"); + add_proj4text (p, 1, + "333 +lat_0=47 +lon_0=-100.5 +x_0=599999.9999976 +y_0=0 +"); + add_proj4text (p, 2, + "ellps=GRS80 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / North Dakota North (ft)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"11"); + add_srs_wkt (p, 4, + "16\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"L"); + add_srs_wkt (p, 7, + "ambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 8, + "lel_1\",48.73333333333333],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 9, + "_2\",47.43333333333333],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",47],PARAMETER[\"central_meridian\",-100.5],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",1968503.937],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],A"); + add_srs_wkt (p, 13, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 14, + "545\"]]"); + p = add_epsg_def (filter, first, last, 6546, "epsg", 6546, + "NAD83(2011) / North Dakota South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333"); + add_proj4text (p, 1, + "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +"); + add_proj4text (p, 2, + "y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / North Dakota South\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",47.48333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",46.18333333333333],PARAMETER[\"latitude_of_origin\",45."); + add_srs_wkt (p, 10, + "66666666666666],PARAMETER[\"central_meridian\",-100.5],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",600000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 12, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 13, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"6546\"]]"); + p = add_epsg_def (filter, first, last, 6547, "epsg", 6547, + "NAD83(2011) / North Dakota South (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333"); + add_proj4text (p, 1, + "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=599999.9"); + add_proj4text (p, 2, + "999976 +y_0=0 +ellps=GRS80 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / North Dakota South (ft)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"11"); + add_srs_wkt (p, 4, + "16\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"L"); + add_srs_wkt (p, 7, + "ambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 8, + "lel_1\",47.48333333333333],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 9, + "_2\",46.18333333333333],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",45.66666666666666],PARAMETER[\"central_meridian\",-100."); + add_srs_wkt (p, 11, + "5],PARAMETER[\"false_easting\",1968503.937],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",0],UNIT[\"foot\",0.3048,AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); + add_srs_wkt (p, 14, + "ITY[\"EPSG\",\"6547\"]]"); + p = add_epsg_def (filter, first, last, 6548, "epsg", 6548, + "NAD83(2011) / Ohio North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Ohio North\",GEOGCS[\"NAD83(2011)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_National_Spatial_Reference_System_2011\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.7],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_2\",40.43333333333333],PARA"); + add_srs_wkt (p, 9, + "METER[\"latitude_of_origin\",39.66666666666666],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-82.5],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 12, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6548\"]]"); + p = add_epsg_def (filter, first, last, 6549, "epsg", 6549, + "NAD83(2011) / Ohio North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Ohio North (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamber"); + add_srs_wkt (p, 7, + "t_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1"); + add_srs_wkt (p, 8, + "\",41.7],PARAMETER[\"standard_parallel_2\",40.4333333333"); + add_srs_wkt (p, 9, + "3333],PARAMETER[\"latitude_of_origin\",39.66666666666666"); + add_srs_wkt (p, 10, + "],PARAMETER[\"central_meridian\",-82.5],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_easting\",1968500],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 12, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 14, + "TY[\"EPSG\",\"6549\"]]"); + p = add_epsg_def (filter, first, last, 6550, "epsg", 6550, + "NAD83(2011) / Ohio South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Ohio South\",GEOGCS[\"NAD83(2011)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_National_Spatial_Reference_System_2011\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40.0333"); + add_srs_wkt (p, 8, + "3333333333],PARAMETER[\"standard_parallel_2\",38.7333333"); + add_srs_wkt (p, 9, + "3333333],PARAMETER[\"latitude_of_origin\",38],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-82.5],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 11, + "600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 13, + "\",NORTH],AUTHORITY[\"EPSG\",\"6550\"]]"); + p = add_epsg_def (filter, first, last, 6551, "epsg", 6551, + "NAD83(2011) / Ohio South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Ohio South (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamber"); + add_srs_wkt (p, 7, + "t_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1"); + add_srs_wkt (p, 8, + "\",40.03333333333333],PARAMETER[\"standard_parallel_2\","); + add_srs_wkt (p, 9, + "38.73333333333333],PARAMETER[\"latitude_of_origin\",38],"); + add_srs_wkt (p, 10, + "PARAMETER[\"central_meridian\",-82.5],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "easting\",1968500],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 12, + "\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"6551\"]]"); + p = add_epsg_def (filter, first, last, 6552, "epsg", 6552, + "NAD83(2011) / Oklahoma North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Oklahoma North\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); + add_srs_wkt (p, 8, + "6.76666666666667],PARAMETER[\"standard_parallel_2\",35.5"); + add_srs_wkt (p, 9, + "6666666666667],PARAMETER[\"latitude_of_origin\",35],PARA"); + add_srs_wkt (p, 10, + "METER[\"central_meridian\",-98],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 11, + "g\",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 12, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 13, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6552\"]]"); + p = add_epsg_def (filter, first, last, 6553, "epsg", 6553, + "NAD83(2011) / Oklahoma North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Oklahoma North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",36.76666666666667],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",35.56666666666667],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "35],PARAMETER[\"central_meridian\",-98],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_easting\",1968500],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 12, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 14, + "TY[\"EPSG\",\"6553\"]]"); + p = add_epsg_def (filter, first, last, 6554, "epsg", 6554, + "NAD83(2011) / Oklahoma South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Oklahoma South\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); + add_srs_wkt (p, 8, + "5.23333333333333],PARAMETER[\"standard_parallel_2\",33.9"); + add_srs_wkt (p, 9, + "3333333333333],PARAMETER[\"latitude_of_origin\",33.33333"); + add_srs_wkt (p, 10, + "333333334],PARAMETER[\"central_meridian\",-98],PARAMETER"); + add_srs_wkt (p, 11, + "[\"false_easting\",600000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 12, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6554\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 6555, "epsg", 6555, + "NAD83(2011) / Oklahoma South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Oklahoma South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",35.23333333333333],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",33.93333333333333],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "33.33333333333334],PARAMETER[\"central_meridian\",-98],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",1968500],PARAMETER[\"false_no"); + add_srs_wkt (p, 12, + "rthing\",0],UNIT[\"US survey foot\",0.3048006096012192,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"6555\"]]"); + p = add_epsg_def (filter, first, last, 6556, "epsg", 6556, + "NAD83(2011) / Oregon Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120"); + add_proj4text (p, 1, + ".5 +x_0=400000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Oregon Lambert\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); + add_srs_wkt (p, 8, + "3],PARAMETER[\"standard_parallel_2\",45.5],PARAMETER[\"l"); + add_srs_wkt (p, 9, + "atitude_of_origin\",41.75],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",-120.5],PARAMETER[\"false_easting\",400000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"6556\"]]"); + p = add_epsg_def (filter, first, last, 6557, "epsg", 6557, + "NAD83(2011) / Oregon Lambert (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=45.5 +lat_0=41.75 +lon_0=-120"); + add_proj4text (p, 1, + ".5 +x_0=399999.9999984 +y_0=0 +ellps=GRS80 +units=ft +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Oregon Lambert (ft)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",43],PARAMETER[\"standard_parallel_2\",45.5],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"latitude_of_origin\",41.75],PARAMETER[\"central_mer"); + add_srs_wkt (p, 10, + "idian\",-120.5],PARAMETER[\"false_easting\",1312335.958]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",0],UNIT[\"foot\",0.3048,AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"9002\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 13, + "NORTH],AUTHORITY[\"EPSG\",\"6557\"]]"); + p = add_epsg_def (filter, first, last, 6558, "epsg", 6558, + "NAD83(2011) / Oregon North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Oregon North\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",46"); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_2\",44.33333333333334],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"latitude_of_origin\",43.66666666666666],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"central_meridian\",-120.5],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",2500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 12, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 13, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6558\"]]"); + p = add_epsg_def (filter, first, last, 6559, "epsg", 6559, + "NAD83(2011) / Oregon North (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=2500000.0001424 +y_0=0 "); + add_proj4text (p, 2, + "+ellps=GRS80 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Oregon North (ft)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamber"); + add_srs_wkt (p, 7, + "t_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1"); + add_srs_wkt (p, 8, + "\",46],PARAMETER[\"standard_parallel_2\",44.333333333333"); + add_srs_wkt (p, 9, + "34],PARAMETER[\"latitude_of_origin\",43.66666666666666],"); + add_srs_wkt (p, 10, + "PARAMETER[\"central_meridian\",-120.5],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",8202099.738],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 12, + "UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS["); + add_srs_wkt (p, 13, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6559\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 6560, "epsg", 6560, + "NAD83(2011) / Oregon South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +ellps=G"); + add_proj4text (p, 2, + "RS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Oregon South\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",44"); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_2\",42.33333333333334],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"latitude_of_origin\",41.66666666666666],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"central_meridian\",-120.5],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",1500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 12, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 13, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6560\"]]"); + p = add_epsg_def (filter, first, last, 6561, "epsg", 6561, + "NAD83(2011) / Oregon South (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=1500000.0001464 +y_0=0 "); + add_proj4text (p, 2, + "+ellps=GRS80 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Oregon South (ft)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamber"); + add_srs_wkt (p, 7, + "t_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1"); + add_srs_wkt (p, 8, + "\",44],PARAMETER[\"standard_parallel_2\",42.333333333333"); + add_srs_wkt (p, 9, + "34],PARAMETER[\"latitude_of_origin\",41.66666666666666],"); + add_srs_wkt (p, 10, + "PARAMETER[\"central_meridian\",-120.5],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",4921259.843],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 12, + "UNIT[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS["); + add_srs_wkt (p, 13, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6561\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 6562, "epsg", 6562, + "NAD83(2011) / Pennsylvania North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=4"); + add_proj4text (p, 1, + "0.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps"); + add_proj4text (p, 2, + "=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Pennsylvania North\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",41.95],PARAMETER[\"standard_parallel_2\",40.88333333"); + add_srs_wkt (p, 9, + "333333],PARAMETER[\"latitude_of_origin\",40.166666666666"); + add_srs_wkt (p, 10, + "66],PARAMETER[\"central_meridian\",-77.75],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_easting\",600000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 12, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6562\"]]"); + p = add_epsg_def (filter, first, last, 6563, "epsg", 6563, + "NAD83(2011) / Pennsylvania North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=4"); + add_proj4text (p, 1, + "0.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +ellps"); + add_proj4text (p, 2, + "=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Pennsylvania North (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",41.95],PARAMETER[\"standard_parallel_2\",40.8"); + add_srs_wkt (p, 9, + "8333333333333],PARAMETER[\"latitude_of_origin\",40.16666"); + add_srs_wkt (p, 10, + "666666666],PARAMETER[\"central_meridian\",-77.75],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",1968500],PARAMETER[\"false_northin"); + add_srs_wkt (p, 12, + "g\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHOR"); + add_srs_wkt (p, 13, + "ITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 14, + "H],AUTHORITY[\"EPSG\",\"6563\"]]"); + p = add_epsg_def (filter, first, last, 6564, "epsg", 6564, + "NAD83(2011) / Pennsylvania South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +"); + add_proj4text (p, 2, + "y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Pennsylvania South\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",40.96666666666667],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",39.93333333333333],PARAMETER[\"latitude_of_origin\",39."); + add_srs_wkt (p, 10, + "33333333333334],PARAMETER[\"central_meridian\",-77.75],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",600000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 12, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 13, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"6564\"]]"); + p = add_epsg_def (filter, first, last, 6565, "epsg", 6565, + "NAD83(2011) / Pennsylvania South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +"); + add_proj4text (p, 2, + "y_0=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Pennsylvania South (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",40.96666666666667],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 9, + "lel_2\",39.93333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 10, + "n\",39.33333333333334],PARAMETER[\"central_meridian\",-7"); + add_srs_wkt (p, 11, + "7.75],PARAMETER[\"false_easting\",1968500],PARAMETER[\"f"); + add_srs_wkt (p, 12, + "alse_northing\",0],UNIT[\"US survey foot\",0.30480060960"); + add_srs_wkt (p, 13, + "12192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 14, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6565\"]]"); + p = add_epsg_def (filter, first, last, 6566, "epsg", 6566, + "NAD83(2011) / Puerto Rico and Virgin Is."); + add_proj4text (p, 0, + "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +"); + add_proj4text (p, 2, + "x_0=200000 +y_0=200000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Puerto Rico and Virgin Is.\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Refere"); + add_srs_wkt (p, 2, + "nce_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.2572"); + add_srs_wkt (p, 3, + "22101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",18.43333333333333],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 9, + "lel_2\",18.03333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 10, + "n\",17.83333333333333],PARAMETER[\"central_meridian\",-6"); + add_srs_wkt (p, 11, + "6.43333333333334],PARAMETER[\"false_easting\",200000],PA"); + add_srs_wkt (p, 12, + "RAMETER[\"false_northing\",200000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 14, + "RTH],AUTHORITY[\"EPSG\",\"6566\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_31.c b/src/spatialite/src/srsinit/epsg_inlined_31.c new file mode 100644 index 0000000..9646f99 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_31.c @@ -0,0 +1,3494 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_31 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 6567, "epsg", 6567, + "NAD83(2011) / Rhode Island"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); + add_proj4text (p, 1, + "9999375 +x_0=100000 +y_0=0 +ellps=GRS80 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Rhode Island\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",41.08333333"); + add_srs_wkt (p, 8, + "333334],PARAMETER[\"central_meridian\",-71.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.99999375],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",100000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6567\"]]"); + p = add_epsg_def (filter, first, last, 6568, "epsg", 6568, + "NAD83(2011) / Rhode Island (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); + add_proj4text (p, 1, + "9999375 +x_0=99999.99998983997 +y_0=0 +ellps=GRS80 +unit"); + add_proj4text (p, 2, + "s=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Rhode Island (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",41.0"); + add_srs_wkt (p, 8, + "8333333333334],PARAMETER[\"central_meridian\",-71.5],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.99999375],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",328083.3333],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"6568\"]]"); + p = add_epsg_def (filter, first, last, 6569, "epsg", 6569, + "NAD83(2011) / South Carolina"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31"); + add_proj4text (p, 1, + ".83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / South Carolina\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); + add_srs_wkt (p, 8, + "4.83333333333334],PARAMETER[\"standard_parallel_2\",32.5"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",31.83333333333333],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-81],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",609600],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 12, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6569\"]]"); + p = add_epsg_def (filter, first, last, 6570, "epsg", 6570, + "NAD83(2011) / South Carolina (ft)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31"); + add_proj4text (p, 1, + ".83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +units=ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / South Carolina (ft)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",34.83333333333334],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",32.5],PARAMETER[\"latitude_of_origin\",31.8333333333333"); + add_srs_wkt (p, 10, + "3],PARAMETER[\"central_meridian\",-81],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",2000000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 12, + "[\"foot\",0.3048,AUTHORITY[\"EPSG\",\"9002\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6570\"]]"); + p = add_epsg_def (filter, first, last, 6571, "epsg", 6571, + "NAD83(2011) / South Dakota North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666"); + add_proj4text (p, 1, + "666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_"); + add_proj4text (p, 2, + "0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / South Dakota North\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",45.68333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",44.41666666666666],PARAMETER[\"latitude_of_origin\",43."); + add_srs_wkt (p, 10, + "83333333333334],PARAMETER[\"central_meridian\",-100],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",600000],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 13, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "6571\"]]"); + p = add_epsg_def (filter, first, last, 6572, "epsg", 6572, + "NAD83(2011) / South Dakota North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666"); + add_proj4text (p, 1, + "666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_"); + add_proj4text (p, 2, + "0=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / South Dakota North (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",45.68333333333333],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 9, + "lel_2\",44.41666666666666],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 10, + "n\",43.83333333333334],PARAMETER[\"central_meridian\",-1"); + add_srs_wkt (p, 11, + "00],PARAMETER[\"false_easting\",1968500],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 13, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 14, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6572\"]]"); + p = add_epsg_def (filter, first, last, 6573, "epsg", 6573, + "NAD83(2011) / South Dakota South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); + add_proj4text (p, 1, + ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / South Dakota South\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",44.4],PARAMETER[\"standard_parallel_2\",42.833333333"); + add_srs_wkt (p, 9, + "33334],PARAMETER[\"latitude_of_origin\",42.3333333333333"); + add_srs_wkt (p, 10, + "4],PARAMETER[\"central_meridian\",-100.3333333333333],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_easting\",600000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 12, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 13, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "6573\"]]"); + p = add_epsg_def (filter, first, last, 6574, "epsg", 6574, + "NAD83(2011) / South Dakota South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); + add_proj4text (p, 1, + ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / South Dakota South (ftUS)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",44.4],PARAMETER[\"standard_parallel_2\",42.83"); + add_srs_wkt (p, 9, + "333333333334],PARAMETER[\"latitude_of_origin\",42.333333"); + add_srs_wkt (p, 10, + "33333334],PARAMETER[\"central_meridian\",-100.3333333333"); + add_srs_wkt (p, 11, + "333],PARAMETER[\"false_easting\",1968500],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); + add_srs_wkt (p, 13, + "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 14, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6574\"]]"); + p = add_epsg_def (filter, first, last, 6575, "epsg", 6575, + "NAD83(2011) / Tennessee"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=3"); + add_proj4text (p, 1, + "4.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GR"); + add_proj4text (p, 2, + "S80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Tennessee\",GEOGCS[\"NAD83(2011)\""); + add_srs_wkt (p, 1, + ",DATUM[\"NAD83_National_Spatial_Reference_System_2011\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36.4166"); + add_srs_wkt (p, 8, + "6666666666],PARAMETER[\"standard_parallel_2\",35.25],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"latitude_of_origin\",34.33333333333334],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"central_meridian\",-86],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 12, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6575\"]]"); + p = add_epsg_def (filter, first, last, 6576, "epsg", 6576, + "NAD83(2011) / Tennessee (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=3"); + add_proj4text (p, 1, + "4.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +ellps=GR"); + add_proj4text (p, 2, + "S80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Tennessee (ftUS)\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(2011)\",DATUM[\"NAD83_National_Spatial_Reference_System"); + add_srs_wkt (p, 2, + "_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",36.41666666666666],PARAMETER[\"standard_parallel_2\",35"); + add_srs_wkt (p, 9, + ".25],PARAMETER[\"latitude_of_origin\",34.33333333333334]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"central_meridian\",-86],PARAMETER[\"false_e"); + add_srs_wkt (p, 11, + "asting\",1968500],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 12, + "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"6576\"]]"); + p = add_epsg_def (filter, first, last, 6577, "epsg", 6577, + "NAD83(2011) / Texas Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666"); + add_proj4text (p, 1, + "667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); + add_proj4text (p, 2, + "x_0=700000 +y_0=3000000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Texas Central\",GEOGCS[\"NAD83(20"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_20"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",31"); + add_srs_wkt (p, 8, + ".88333333333333],PARAMETER[\"standard_parallel_2\",30.11"); + add_srs_wkt (p, 9, + "666666666667],PARAMETER[\"latitude_of_origin\",29.666666"); + add_srs_wkt (p, 10, + "66666667],PARAMETER[\"central_meridian\",-100.3333333333"); + add_srs_wkt (p, 11, + "333],PARAMETER[\"false_easting\",700000],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_northing\",3000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 14, + "TY[\"EPSG\",\"6577\"]]"); + p = add_epsg_def (filter, first, last, 6578, "epsg", 6578, + "NAD83(2011) / Texas Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666"); + add_proj4text (p, 1, + "667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); + add_proj4text (p, 2, + "x_0=699999.9998983998 +y_0=3000000 +ellps=GRS80 +units=u"); + add_proj4text (p, 3, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Texas Central (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",31.88333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",30.11666666666667],PARAMETER[\"latitude_of_origin\",29."); + add_srs_wkt (p, 10, + "66666666666667],PARAMETER[\"central_meridian\",-100.3333"); + add_srs_wkt (p, 11, + "333333333],PARAMETER[\"false_easting\",2296583.333],PARA"); + add_srs_wkt (p, 12, + "METER[\"false_northing\",9842500.000000002],UNIT[\"US su"); + add_srs_wkt (p, 13, + "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); + add_srs_wkt (p, 14, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 15, + "\",\"6578\"]]"); + p = add_epsg_def (filter, first, last, 6579, "epsg", 6579, + "NAD83(2011) / Texas Centric Albers Equal Area"); + add_proj4text (p, 0, + "+proj=aea +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x"); + add_proj4text (p, 1, + "_0=1500000 +y_0=6000000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Texas Centric Albers Equal Area\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_R"); + add_srs_wkt (p, 2, + "eference_System_2011\",SPHEROID[\"GRS 1980\",6378137,298"); + add_srs_wkt (p, 3, + ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Albers_Conic_Equal_Area\"],PARAMETER[\"standard_"); + add_srs_wkt (p, 8, + "parallel_1\",27.5],PARAMETER[\"standard_parallel_2\",35]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"latitude_of_center\",18],PARAMETER[\"longit"); + add_srs_wkt (p, 10, + "ude_of_center\",-100],PARAMETER[\"false_easting\",150000"); + add_srs_wkt (p, 11, + "0],PARAMETER[\"false_northing\",6000000],UNIT[\"metre\","); + add_srs_wkt (p, 12, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6579\"]]"); + p = add_epsg_def (filter, first, last, 6580, "epsg", 6580, + "NAD83(2011) / Texas Centric Lambert Conformal"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.5 +lat_2=35 +lat_0=18 +lon_0=-100 +x"); + add_proj4text (p, 1, + "_0=1500000 +y_0=5000000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Texas Centric Lambert Conformal\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_R"); + add_srs_wkt (p, 2, + "eference_System_2011\",SPHEROID[\"GRS 1980\",6378137,298"); + add_srs_wkt (p, 3, + ".257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",27.5],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",35],PARAMETER[\"latitude_of_origin\",18],PARAMETER[\"ce"); + add_srs_wkt (p, 10, + "ntral_meridian\",-100],PARAMETER[\"false_easting\",15000"); + add_srs_wkt (p, 11, + "00],PARAMETER[\"false_northing\",5000000],UNIT[\"metre\""); + add_srs_wkt (p, 12, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6580\"]]"); + p = add_epsg_def (filter, first, last, 6581, "epsg", 6581, + "NAD83(2011) / Texas North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=3"); + add_proj4text (p, 1, + "4 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +ellps=GRS80 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Texas North\",GEOGCS[\"NAD83(2011"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_2011"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Conf"); + add_srs_wkt (p, 7, + "ormal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36."); + add_srs_wkt (p, 8, + "18333333333333],PARAMETER[\"standard_parallel_2\",34.65]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"latitude_of_origin\",34],PARAMETER[\"centra"); + add_srs_wkt (p, 10, + "l_meridian\",-101.5],PARAMETER[\"false_easting\",200000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",1000000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"6581\"]]"); + p = add_epsg_def (filter, first, last, 6582, "epsg", 6582, + "NAD83(2011) / Texas North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=3"); + add_proj4text (p, 1, + "4 +lon_0=-101.5 +x_0=200000.0001016002 +y_0=999999.99989"); + add_proj4text (p, 2, + "83998 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Texas North (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",36.18333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",34.65],PARAMETER[\"latitude_of_origin\",34],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-101.5],PARAMETER[\"false_easting\",6"); + add_srs_wkt (p, 11, + "56166.667],PARAMETER[\"false_northing\",3280833.333],UNI"); + add_srs_wkt (p, 12, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 14, + "TY[\"EPSG\",\"6582\"]]"); + p = add_epsg_def (filter, first, last, 6583, "epsg", 6583, + "NAD83(2011) / Texas North Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333"); + add_proj4text (p, 1, + "333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=2000000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Texas North Central\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",33.96666666666667],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",32.13333333333333],PARAMETER[\"latitude_of_origin\",31."); + add_srs_wkt (p, 10, + "66666666666667],PARAMETER[\"central_meridian\",-98.5],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_easting\",600000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 12, + "hing\",2000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 13, + "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 14, + "SG\",\"6583\"]]"); + p = add_epsg_def (filter, first, last, 6584, "epsg", 6584, + "NAD83(2011) / Texas North Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333"); + add_proj4text (p, 1, + "333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=2000000.0001016 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Texas North Central (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Refere"); + add_srs_wkt (p, 2, + "nce_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.2572"); + add_srs_wkt (p, 3, + "22101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",33.96666666666667],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 9, + "lel_2\",32.13333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 10, + "n\",31.66666666666667],PARAMETER[\"central_meridian\",-9"); + add_srs_wkt (p, 11, + "8.5],PARAMETER[\"false_easting\",1968500],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",6561666.667],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 13, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 14, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6584\"]]"); + p = add_epsg_def (filter, first, last, 6585, "epsg", 6585, + "NAD83(2011) / Texas South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y"); + add_proj4text (p, 2, + "_0=5000000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Texas South\",GEOGCS[\"NAD83(2011"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_2011"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Conf"); + add_srs_wkt (p, 7, + "ormal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",27."); + add_srs_wkt (p, 8, + "83333333333333],PARAMETER[\"standard_parallel_2\",26.166"); + add_srs_wkt (p, 9, + "66666666667],PARAMETER[\"latitude_of_origin\",25.6666666"); + add_srs_wkt (p, 10, + "6666667],PARAMETER[\"central_meridian\",-98.5],PARAMETER"); + add_srs_wkt (p, 11, + "[\"false_easting\",300000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 12, + "5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 13, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "6585\"]]"); + p = add_epsg_def (filter, first, last, 6586, "epsg", 6586, + "NAD83(2011) / Texas South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000.00"); + add_proj4text (p, 2, + "00000001 +y_0=5000000.0001016 +ellps=GRS80 +units=us-ft "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Texas South (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syst"); + add_srs_wkt (p, 2, + "em_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",27.83333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",26.16666666666667],PARAMETER[\"latitude_of_origin\",25."); + add_srs_wkt (p, 10, + "66666666666667],PARAMETER[\"central_meridian\",-98.5],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_easting\",984250.0000000002],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",16404166.667],UNIT[\"US survey foot\",0"); + add_srs_wkt (p, 13, + ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); + add_srs_wkt (p, 14, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6586\"]]"); + p = add_epsg_def (filter, first, last, 6587, "epsg", 6587, + "NAD83(2011) / Texas South Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333"); + add_proj4text (p, 1, + "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=4000000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Texas South Central\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",30.28333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",28.38333333333333],PARAMETER[\"latitude_of_origin\",27."); + add_srs_wkt (p, 10, + "83333333333333],PARAMETER[\"central_meridian\",-99],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",600000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 12, + "ng\",4000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 13, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 14, + "\",\"6587\"]]"); + p = add_epsg_def (filter, first, last, 6588, "epsg", 6588, + "NAD83(2011) / Texas South Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333"); + add_proj4text (p, 1, + "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=3999999.9998984 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Texas South Central (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Refere"); + add_srs_wkt (p, 2, + "nce_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.2572"); + add_srs_wkt (p, 3, + "22101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",30.28333333333333],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 9, + "lel_2\",28.38333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 10, + "n\",27.83333333333333],PARAMETER[\"central_meridian\",-9"); + add_srs_wkt (p, 11, + "9],PARAMETER[\"false_easting\",1968500],PARAMETER[\"fals"); + add_srs_wkt (p, 12, + "e_northing\",13123333.333],UNIT[\"US survey foot\",0.304"); + add_srs_wkt (p, 13, + "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 14, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6588\"]]"); + p = add_epsg_def (filter, first, last, 6589, "epsg", 6589, + "NAD83(2011) / Vermont"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0"); + add_proj4text (p, 1, + "=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Vermont\",GEOGCS[\"NAD83(2011)\","); + add_srs_wkt (p, 1, + "DATUM[\"NAD83_National_Spatial_Reference_System_2011\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",42.5],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-72.5],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".999964286],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"6589\"]]"); + p = add_epsg_def (filter, first, last, 6590, "epsg", 6590, + "NAD83(2011) / Vermont (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0"); + add_proj4text (p, 1, + "=500000.00001016 +y_0=0 +ellps=GRS80 +units=us-ft +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Vermont (ftUS)\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",42.5],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",-72.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.999964286],PARAMETER[\"false_easting\",1640416.66"); + add_srs_wkt (p, 10, + "67],PARAMETER[\"false_northing\",0],UNIT[\"US survey foo"); + add_srs_wkt (p, 11, + "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); + add_srs_wkt (p, 12, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"659"); + add_srs_wkt (p, 13, + "0\"]]"); + p = add_epsg_def (filter, first, last, 6591, "epsg", 6591, + "NAD83(2011) / Virginia Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37 +lat_2=39.5 +lat_0=36 +lon_0=-79.5 +"); + add_proj4text (p, 1, + "x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Virginia Lambert\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(2011)\",DATUM[\"NAD83_National_Spatial_Reference_System"); + add_srs_wkt (p, 2, + "_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",37],PARAMETER[\"standard_parallel_2\",39.5],PARAMETER[\""); + add_srs_wkt (p, 9, + "latitude_of_origin\",36],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 10, + "-79.5],PARAMETER[\"false_easting\",0],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"6591\"]]"); + p = add_epsg_def (filter, first, last, 6592, "epsg", 6592, + "NAD83(2011) / Virginia North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +"); + add_proj4text (p, 2, + "ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Virginia North\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); + add_srs_wkt (p, 8, + "9.2],PARAMETER[\"standard_parallel_2\",38.03333333333333"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",37.66666666666666],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-78.5],PARAMETER[\"false_ea"); + add_srs_wkt (p, 11, + "sting\",3500000],PARAMETER[\"false_northing\",2000000],U"); + add_srs_wkt (p, 12, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6592\"]]"); + p = add_epsg_def (filter, first, last, 6593, "epsg", 6593, + "NAD83(2011) / Virginia North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-78.5 +x_0=3500000.0001016 +y_0=2"); + add_proj4text (p, 2, + "000000.0001016 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Virginia North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",39.2],PARAMETER[\"standard_parallel_2\",38.033333"); + add_srs_wkt (p, 9, + "33333333],PARAMETER[\"latitude_of_origin\",37.6666666666"); + add_srs_wkt (p, 10, + "6666],PARAMETER[\"central_meridian\",-78.5],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",11482916.667],PARAMETER[\"false_northing"); + add_srs_wkt (p, 12, + "\",6561666.667],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 13, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6593\"]]"); + p = add_epsg_def (filter, first, last, 6594, "epsg", 6594, + "NAD83(2011) / Virginia South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +"); + add_proj4text (p, 2, + "y_0=1000000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Virginia South\",GEOGCS[\"NAD83(2"); + add_srs_wkt (p, 1, + "011)\",DATUM[\"NAD83_National_Spatial_Reference_System_2"); + add_srs_wkt (p, 2, + "011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); + add_srs_wkt (p, 8, + "7.96666666666667],PARAMETER[\"standard_parallel_2\",36.7"); + add_srs_wkt (p, 9, + "6666666666667],PARAMETER[\"latitude_of_origin\",36.33333"); + add_srs_wkt (p, 10, + "333333334],PARAMETER[\"central_meridian\",-78.5],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_easting\",3500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 12, + "\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"6594\"]]"); + p = add_epsg_def (filter, first, last, 6595, "epsg", 6595, + "NAD83(2011) / Virginia South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000.0"); + add_proj4text (p, 2, + "001016 +y_0=999999.9998983998 +ellps=GRS80 +units=us-ft "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Virginia South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",37.96666666666667],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",36.76666666666667],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "36.33333333333334],PARAMETER[\"central_meridian\",-78.5]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_easting\",11482916.667],PARAMETER[\"f"); + add_srs_wkt (p, 12, + "alse_northing\",3280833.333],UNIT[\"US survey foot\",0.3"); + add_srs_wkt (p, 13, + "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 14, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6595\"]]"); + p = add_epsg_def (filter, first, last, 6596, "epsg", 6596, + "NAD83(2011) / Washington North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47"); + add_proj4text (p, 1, + " +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +ellps=GRS"); + add_proj4text (p, 2, + "80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Washington North\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(2011)\",DATUM[\"NAD83_National_Spatial_Reference_System"); + add_srs_wkt (p, 2, + "_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",48.73333333333333],PARAMETER[\"standard_parallel_2\",47"); + add_srs_wkt (p, 9, + ".5],PARAMETER[\"latitude_of_origin\",47],PARAMETER[\"cen"); + add_srs_wkt (p, 10, + "tral_meridian\",-120.8333333333333],PARAMETER[\"false_ea"); + add_srs_wkt (p, 11, + "sting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 12, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],"); + add_srs_wkt (p, 13, + "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6596\"]]"); + p = add_epsg_def (filter, first, last, 6597, "epsg", 6597, + "NAD83(2011) / Washington North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47"); + add_proj4text (p, 1, + " +lon_0=-120.8333333333333 +x_0=500000.0001016001 +y_0=0"); + add_proj4text (p, 2, + " +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Washington North (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"11"); + add_srs_wkt (p, 4, + "16\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"L"); + add_srs_wkt (p, 7, + "ambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 8, + "lel_1\",48.73333333333333],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 9, + "_2\",47.5],PARAMETER[\"latitude_of_origin\",47],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-120.8333333333333],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_easting\",1640416.667],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 14, + "AUTHORITY[\"EPSG\",\"6597\"]]"); + p = add_epsg_def (filter, first, last, 6598, "epsg", 6598, + "NAD83(2011) / Washington South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333"); + add_proj4text (p, 1, + "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +"); + add_proj4text (p, 2, + "y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Washington South\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "(2011)\",DATUM[\"NAD83_National_Spatial_Reference_System"); + add_srs_wkt (p, 2, + "_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",47.33333333333334],PARAMETER[\"standard_parallel_2\",45"); + add_srs_wkt (p, 9, + ".83333333333334],PARAMETER[\"latitude_of_origin\",45.333"); + add_srs_wkt (p, 10, + "33333333334],PARAMETER[\"central_meridian\",-120.5],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 12, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 13, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 14, + "598\"]]"); + p = add_epsg_def (filter, first, last, 6599, "epsg", 6599, + "NAD83(2011) / Washington South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333"); + add_proj4text (p, 1, + "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000.0"); + add_proj4text (p, 2, + "001016001 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Washington South (ftUS)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"11"); + add_srs_wkt (p, 4, + "16\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"L"); + add_srs_wkt (p, 7, + "ambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 8, + "lel_1\",47.33333333333334],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 9, + "_2\",45.83333333333334],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 10, + ",45.33333333333334],PARAMETER[\"central_meridian\",-120."); + add_srs_wkt (p, 11, + "5],PARAMETER[\"false_easting\",1640416.667],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 13, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 14, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6599\"]]"); + p = add_epsg_def (filter, first, last, 6600, "epsg", 6600, + "NAD83(2011) / West Virginia North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); + add_proj4text (p, 1, + "5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / West Virginia North\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",40.25],PARAMETER[\"standard_parallel_2\",39],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",38.5],PARAMETER[\"central_mer"); + add_srs_wkt (p, 10, + "idian\",-79.5],PARAMETER[\"false_easting\",600000],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"6600\"]]"); + p = add_epsg_def (filter, first, last, 6601, "epsg", 6601, + "NAD83(2011) / West Virginia North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); + add_proj4text (p, 1, + "5 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / West Virginia North (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Refere"); + add_srs_wkt (p, 2, + "nce_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.2572"); + add_srs_wkt (p, 3, + "22101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",40.25],PARAMETER[\"standard_parallel_2\",39],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",38.5],PARAMETER[\"centr"); + add_srs_wkt (p, 10, + "al_meridian\",-79.5],PARAMETER[\"false_easting\",1968500"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 12, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6601\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 6602, "epsg", 6602, + "NAD83(2011) / West Virginia South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / West Virginia South\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",38.88333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",37.48333333333333],PARAMETER[\"latitude_of_origin\",37]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"central_meridian\",-81],PARAMETER[\"false_e"); + add_srs_wkt (p, 11, + "asting\",600000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 12, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 13, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6602\"]]"); + p = add_epsg_def (filter, first, last, 6603, "epsg", 6603, + "NAD83(2011) / West Virginia South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / West Virginia South (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Refere"); + add_srs_wkt (p, 2, + "nce_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.2572"); + add_srs_wkt (p, 3, + "22101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 8, + "rallel_1\",38.88333333333333],PARAMETER[\"standard_paral"); + add_srs_wkt (p, 9, + "lel_2\",37.48333333333333],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 10, + "n\",37],PARAMETER[\"central_meridian\",-81],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",1968500],PARAMETER[\"false_northing\",0]"); + add_srs_wkt (p, 12, + ",UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 14, + "HORITY[\"EPSG\",\"6603\"]]"); + p = add_epsg_def (filter, first, last, 6604, "epsg", 6604, + "NAD83(2011) / Wisconsin Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333"); + add_proj4text (p, 1, + "334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Wisconsin Central\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2007\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"standard_parallel_1\",45.5],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",44.25],PARAMETER[\"latitude_of_origin\",43"); + add_srs_wkt (p, 10, + ".83333333333334],PARAMETER[\"central_meridian\",-90],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",600000],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 13, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "6604\"]]"); + p = add_epsg_def (filter, first, last, 6605, "epsg", 6605, + "NAD83(2011) / Wisconsin Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333"); + add_proj4text (p, 1, + "334 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80 +units=us"); + add_proj4text (p, 2, + "-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Wisconsin Central (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Referenc"); + add_srs_wkt (p, 2, + "e_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1"); + add_srs_wkt (p, 4, + "116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_para"); + add_srs_wkt (p, 8, + "llel_1\",45.5],PARAMETER[\"standard_parallel_2\",44.25],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",43.83333333333334],PARA"); + add_srs_wkt (p, 10, + "METER[\"central_meridian\",-90],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 11, + "g\",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US s"); + add_srs_wkt (p, 12, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 13, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 14, + "G\",\"6605\"]]"); + p = add_epsg_def (filter, first, last, 6606, "epsg", 6606, + "NAD83(2011) / Wisconsin North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Wisconsin North\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "2011)\",DATUM[\"NAD83_National_Spatial_Reference_System_"); + add_srs_wkt (p, 2, + "2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",46.76666666666667],PARAMETER[\"standard_parallel_2\",45"); + add_srs_wkt (p, 9, + ".56666666666667],PARAMETER[\"latitude_of_origin\",45.166"); + add_srs_wkt (p, 10, + "66666666666],PARAMETER[\"central_meridian\",-90],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_easting\",600000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 13, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6606\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 6607, "epsg", 6607, + "NAD83(2011) / Wisconsin North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Wisconsin North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",46.76666666666667],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",45.56666666666667],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "45.16666666666666],PARAMETER[\"central_meridian\",-90],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",1968500],PARAMETER[\"false_no"); + add_srs_wkt (p, 12, + "rthing\",0],UNIT[\"US survey foot\",0.3048006096012192,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"6607\"]]"); + p = add_epsg_def (filter, first, last, 6608, "epsg", 6608, + "NAD83(2011) / Wisconsin South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Wisconsin South\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "2011)\",DATUM[\"NAD83_National_Spatial_Reference_System_"); + add_srs_wkt (p, 2, + "2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",44.06666666666667],PARAMETER[\"standard_parallel_2\",42"); + add_srs_wkt (p, 9, + ".73333333333333],PARAMETER[\"latitude_of_origin\",42],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-90],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",600000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 12, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6608\"]]"); + p = add_epsg_def (filter, first, last, 6609, "epsg", 6609, + "NAD83(2011) / Wisconsin South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Wisconsin South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_S"); + add_srs_wkt (p, 2, + "ystem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parall"); + add_srs_wkt (p, 8, + "el_1\",44.06666666666667],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 9, + "2\",42.73333333333333],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 10, + "42],PARAMETER[\"central_meridian\",-90],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_easting\",1968500],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 12, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 14, + "TY[\"EPSG\",\"6609\"]]"); + p = add_epsg_def (filter, first, last, 6610, "epsg", 6610, + "NAD83(2011) / Wisconsin Transverse Mercator"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9996 +x_0=520000 +y"); + add_proj4text (p, 1, + "_0=-4480000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Wisconsin Transverse Mercator\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Ref"); + add_srs_wkt (p, 2, + "erence_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.2"); + add_srs_wkt (p, 3, + "57222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-90],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",52000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",-4480000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6610\"]]"); + p = add_epsg_def (filter, first, last, 6611, "epsg", 6611, + "NAD83(2011) / Wyoming East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=200000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Wyoming East\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",40.5],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-105.1666666666667],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999375],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "200000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"6611\"]]"); + p = add_epsg_def (filter, first, last, 6612, "epsg", 6612, + "NAD83(2011) / Wyoming East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=200000.00001016 +y_0=0 +ellps=GRS80 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Wyoming East (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",40.5"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-105.1666666666667],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.9999375],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",656166.6667],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 11, + "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"6612\"]]"); + p = add_epsg_def (filter, first, last, 6613, "epsg", 6613, + "NAD83(2011) / Wyoming East Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=400000 +y_0=100000 +ellps=GRS80 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Wyoming East Central\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",40.5"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-107.3333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.9999375],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",400000],PARAMETER[\"false_northing\",100000],UNIT"); + add_srs_wkt (p, 11, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 12, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6613\"]]"); + p = add_epsg_def (filter, first, last, 6614, "epsg", 6614, + "NAD83(2011) / Wyoming East Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=399999.99998984 +y_0=99999.99998983997 +ellp"); + add_proj4text (p, 2, + "s=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Wyoming East Central (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",40.5],PARAMETER[\"central_meridian\",-107.3333333333"); + add_srs_wkt (p, 9, + "333],PARAMETER[\"scale_factor\",0.9999375],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",1312333.3333],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",328083.3333],UNIT[\"US survey foot\",0.3048006096012192"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 13, + "\",NORTH],AUTHORITY[\"EPSG\",\"6614\"]]"); + p = add_epsg_def (filter, first, last, 6615, "epsg", 6615, + "NAD83(2011) / Wyoming West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=800000 +y_0=100000 +ellps=GRS80 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Wyoming West\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",40.5],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-110.0833333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999375],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "800000],PARAMETER[\"false_northing\",100000],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6615\"]]"); + p = add_epsg_def (filter, first, last, 6616, "epsg", 6616, + "NAD83(2011) / Wyoming West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=800000.0000101599 +y_0=99999.99998983997 +el"); + add_proj4text (p, 2, + "lps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Wyoming West (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",40.5"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-110.0833333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.9999375],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",2624666.6667],PARAMETER[\"false_northing\",328083"); + add_srs_wkt (p, 11, + ".3333],UNIT[\"US survey foot\",0.3048006096012192,AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 13, + "H],AUTHORITY[\"EPSG\",\"6616\"]]"); + p = add_epsg_def (filter, first, last, 6617, "epsg", 6617, + "NAD83(2011) / Wyoming West Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0"); + add_proj4text (p, 1, + "=600000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Wyoming West Central\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",40.5"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-108.75],PARAMETER[\"sc"); + add_srs_wkt (p, 9, + "ale_factor\",0.9999375],PARAMETER[\"false_easting\",6000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"6617\"]]"); + p = add_epsg_def (filter, first, last, 6618, "epsg", 6618, + "NAD83(2011) / Wyoming West Central (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0"); + add_proj4text (p, 1, + "=600000 +y_0=0 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Wyoming West Central (ftUS)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD83(2011)\",DATUM[\"NAD83_National_Spatial_Refer"); + add_srs_wkt (p, 2, + "ence_System_2011\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"1116\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",40.5],PARAMETER[\"central_meridian\",-108.75],PARAME"); + add_srs_wkt (p, 9, + "TER[\"scale_factor\",0.9999375],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",1968500],PARAMETER[\"false_northing\",0],UNIT[\"US s"); + add_srs_wkt (p, 11, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 12, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"6618\"]]"); + p = add_epsg_def (filter, first, last, 6619, "epsg", 6619, + "NAD83(2011) / Utah Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); + add_proj4text (p, 1, + "8.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 "); + add_proj4text (p, 2, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Utah Central\",GEOGCS[\"NAD83(201"); + add_srs_wkt (p, 1, + "1)\",DATUM[\"NAD83_National_Spatial_Reference_System_201"); + add_srs_wkt (p, 2, + "1\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40"); + add_srs_wkt (p, 8, + ".65],PARAMETER[\"standard_parallel_2\",39.01666666666667"); + add_srs_wkt (p, 9, + "],PARAMETER[\"latitude_of_origin\",38.33333333333334],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-111.5],PARAMETER[\"false_e"); + add_srs_wkt (p, 11, + "asting\",500000],PARAMETER[\"false_northing\",2000000],U"); + add_srs_wkt (p, 12, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6619\"]]"); + p = add_epsg_def (filter, first, last, 6620, "epsg", 6620, + "NAD83(2011) / Utah North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +"); + add_proj4text (p, 2, + "y_0=1000000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Utah North\",GEOGCS[\"NAD83(2011)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_National_Spatial_Reference_System_2011\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.7833"); + add_srs_wkt (p, 8, + "3333333333],PARAMETER[\"standard_parallel_2\",40.7166666"); + add_srs_wkt (p, 9, + "6666667],PARAMETER[\"latitude_of_origin\",40.33333333333"); + add_srs_wkt (p, 10, + "334],PARAMETER[\"central_meridian\",-111.5],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 12, + "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); + add_srs_wkt (p, 13, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"662"); + add_srs_wkt (p, 14, + "0\"]]"); + p = add_epsg_def (filter, first, last, 6621, "epsg", 6621, + "NAD83(2011) / Utah South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); + add_proj4text (p, 1, + "6.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 "); + add_proj4text (p, 2, + "+ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Utah South\",GEOGCS[\"NAD83(2011)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_National_Spatial_Reference_System_2011\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38.35],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_2\",37.21666666666667],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"latitude_of_origin\",36.66666666666666],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"central_meridian\",-111.5],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 11, + "g\",500000],PARAMETER[\"false_northing\",3000000],UNIT[\""); + add_srs_wkt (p, 12, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 13, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6621\"]]"); + p = add_epsg_def (filter, first, last, 6622, "epsg", 6622, + "NAD83(CSRS) / Quebec Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_"); + add_proj4text (p, 1, + "0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / Quebec Lambert\",GEOGCS[\"NAD83(C"); + add_srs_wkt (p, 1, + "SRS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",60],PARAMETER[\"standard_parallel_2\",4"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"latitude_of_origin\",44],PARAMETER[\"cent"); + add_srs_wkt (p, 10, + "ral_meridian\",-68.5],PARAMETER[\"false_easting\",0],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"6622\"]]"); + p = add_epsg_def (filter, first, last, 6623, "epsg", 6623, + "NAD83 / Quebec Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_"); + add_proj4text (p, 1, + "0=0 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Quebec Albers\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Albers_Conic_Equal_"); + add_srs_wkt (p, 7, + "Area\"],PARAMETER[\"standard_parallel_1\",60],PARAMETER["); + add_srs_wkt (p, 8, + "\"standard_parallel_2\",46],PARAMETER[\"latitude_of_cent"); + add_srs_wkt (p, 9, + "er\",44],PARAMETER[\"longitude_of_center\",-68.5],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",0],PARAMETER[\"false_northing\",0]"); + add_srs_wkt (p, 11, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6623\"]]"); + p = add_epsg_def (filter, first, last, 6624, "epsg", 6624, + "NAD83(CSRS) / Quebec Albers"); + add_proj4text (p, 0, + "+proj=aea +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_"); + add_proj4text (p, 1, + "0=0 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / Quebec Albers\",GEOGCS[\"NAD83(CS"); + add_srs_wkt (p, 1, + "RS)\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Albers_Conic_Equal_Area\"],PARAMETER[\"standard_"); + add_srs_wkt (p, 8, + "parallel_1\",60],PARAMETER[\"standard_parallel_2\",46],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"latitude_of_center\",44],PARAMETER[\"longitud"); + add_srs_wkt (p, 10, + "e_of_center\",-68.5],PARAMETER[\"false_easting\",0],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"6624\"]]"); + p = add_epsg_def (filter, first, last, 6625, "epsg", 6625, + "NAD83(2011) / Utah Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); + add_proj4text (p, 1, + "8.33333333333334 +lon_0=-111.5 +x_0=500000.00001016 +y_0"); + add_proj4text (p, 2, + "=2000000.00001016 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Utah Central (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Sys"); + add_srs_wkt (p, 2, + "tem_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",40.65],PARAMETER[\"standard_parallel_2\",39.0166666"); + add_srs_wkt (p, 9, + "6666667],PARAMETER[\"latitude_of_origin\",38.33333333333"); + add_srs_wkt (p, 10, + "334],PARAMETER[\"central_meridian\",-111.5],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",1640416.6667],PARAMETER[\"false_northing"); + add_srs_wkt (p, 12, + "\",6561666.666700001],UNIT[\"US survey foot\",0.30480060"); + add_srs_wkt (p, 13, + "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); + add_srs_wkt (p, 14, + "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6625\"]]"); + p = add_epsg_def (filter, first, last, 6626, "epsg", 6626, + "NAD83(2011) / Utah North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000.0"); + add_proj4text (p, 2, + "0001016 +y_0=999999.9999898402 +ellps=GRS80 +units=us-ft"); + add_proj4text (p, 3, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Utah North (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamber"); + add_srs_wkt (p, 7, + "t_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1"); + add_srs_wkt (p, 8, + "\",41.78333333333333],PARAMETER[\"standard_parallel_2\","); + add_srs_wkt (p, 9, + "40.71666666666667],PARAMETER[\"latitude_of_origin\",40.3"); + add_srs_wkt (p, 10, + "3333333333334],PARAMETER[\"central_meridian\",-111.5],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_easting\",1640416.6667],PARAMETER[\"fals"); + add_srs_wkt (p, 12, + "e_northing\",3280833.333300001],UNIT[\"US survey foot\","); + add_srs_wkt (p, 13, + "0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 14, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6626\"]"); + add_srs_wkt (p, 15, + "]"); + p = add_epsg_def (filter, first, last, 6627, "epsg", 6627, + "NAD83(2011) / Utah South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); + add_proj4text (p, 1, + "6.66666666666666 +lon_0=-111.5 +x_0=500000.00001016 +y_0"); + add_proj4text (p, 2, + "=3000000 +ellps=GRS80 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(2011) / Utah South (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(2011)\",DATUM[\"NAD83_National_Spatial_Reference_Syste"); + add_srs_wkt (p, 2, + "m_2011\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1116\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"6318\"]],PROJECTION[\"Lamber"); + add_srs_wkt (p, 7, + "t_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1"); + add_srs_wkt (p, 8, + "\",38.35],PARAMETER[\"standard_parallel_2\",37.216666666"); + add_srs_wkt (p, 9, + "66667],PARAMETER[\"latitude_of_origin\",36.6666666666666"); + add_srs_wkt (p, 10, + "6],PARAMETER[\"central_meridian\",-111.5],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_easting\",1640416.6667],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",9842500.000000002],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 13, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 14, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6627\"]]"); + p = add_epsg_def (filter, first, last, 6628, "epsg", 6628, + "NAD83(PA11) / Hawaii zone 1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0."); + add_proj4text (p, 1, + "999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(PA11) / Hawaii zone 1\",GEOGCS[\"NAD83(PA"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_PA"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1117\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6322\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",18.83333333"); + add_srs_wkt (p, 8, + "333333],PARAMETER[\"central_meridian\",-155.5],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.999966667],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"6628\"]]"); + p = add_epsg_def (filter, first, last, 6629, "epsg", 6629, + "NAD83(PA11) / Hawaii zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=500000 +y_0=0 +ellps=GRS80 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(PA11) / Hawaii zone 2\",GEOGCS[\"NAD83(PA"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_PA"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1117\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6322\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",20.33333333"); + add_srs_wkt (p, 8, + "333333],PARAMETER[\"central_meridian\",-156.666666666666"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",0.999966667],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",500000],PARAMETER[\"false_northing\",0],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6629\"]]"); + p = add_epsg_def (filter, first, last, 6630, "epsg", 6630, + "NAD83(PA11) / Hawaii zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99"); + add_proj4text (p, 1, + "999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(PA11) / Hawaii zone 3\",GEOGCS[\"NAD83(PA"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_PA"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1117\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6322\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",21.16666666"); + add_srs_wkt (p, 8, + "666667],PARAMETER[\"central_meridian\",-158],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.99999],PARAMETER[\"false_easting\",5000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"6630\"]]"); + p = add_epsg_def (filter, first, last, 6631, "epsg", 6631, + "NAD83(PA11) / Hawaii zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0."); + add_proj4text (p, 1, + "99999 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(PA11) / Hawaii zone 4\",GEOGCS[\"NAD83(PA"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_PA"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1117\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6322\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",21.83333333"); + add_srs_wkt (p, 8, + "333333],PARAMETER[\"central_meridian\",-159.5],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.99999],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6631\"]]"); + p = add_epsg_def (filter, first, last, 6632, "epsg", 6632, + "NAD83(PA11) / Hawaii zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=500000 +y_0=0 +ellps=GRS80 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(PA11) / Hawaii zone 5\",GEOGCS[\"NAD83(PA"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_PA"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1117\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6322\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",21.66666666"); + add_srs_wkt (p, 8, + "666667],PARAMETER[\"central_meridian\",-160.166666666666"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"6632\"]]"); + p = add_epsg_def (filter, first, last, 6633, "epsg", 6633, + "NAD83(PA11) / Hawaii zone 3 (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99"); + add_proj4text (p, 1, + "999 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +units=us-f"); + add_proj4text (p, 2, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(PA11) / Hawaii zone 3 (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83(PA11)\",DATUM[\"NAD83_National_Spatial_Reference_Sy"); + add_srs_wkt (p, 2, + "stem_PA11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1117\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"6322\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",21.1"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"central_meridian\",-158],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",0.99999],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",1640416.6667],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"6633\"]]"); + p = add_epsg_def (filter, first, last, 6634, "epsg", 6634, + "NAD83(PA11) / UTM zone 4N"); + add_proj4text (p, 0, + "+proj=utm +zone=4 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(PA11) / UTM zone 4N\",GEOGCS[\"NAD83(PA11"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_PA11"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1117\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6322\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-159],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6634\"]]"); + p = add_epsg_def (filter, first, last, 6635, "epsg", 6635, + "NAD83(PA11) / UTM zone 5N"); + add_proj4text (p, 0, + "+proj=utm +zone=5 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(PA11) / UTM zone 5N\",GEOGCS[\"NAD83(PA11"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_PA11"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1117\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6322\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-153],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"6635\"]]"); + p = add_epsg_def (filter, first, last, 6636, "epsg", 6636, + "NAD83(PA11) / UTM zone 2S"); + add_proj4text (p, 0, + "+proj=utm +zone=2 +south +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(PA11) / UTM zone 2S\",GEOGCS[\"NAD83(PA11"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_National_Spatial_Reference_System_PA11"); + add_srs_wkt (p, 2, + "\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1117\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"6322\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-171],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6636\"]]"); + p = add_epsg_def (filter, first, last, 6637, "epsg", 6637, + "NAD83(MA11) / Guam Map Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=13.5 +lon_0=144.75 +k=1 +x_0=100000 +"); + add_proj4text (p, 1, + "y_0=200000 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(MA11) / Guam Map Grid\",GEOGCS[\"NAD83(MA"); + add_srs_wkt (p, 1, + "11)\",DATUM[\"NAD83_National_Spatial_Reference_System_MA"); + add_srs_wkt (p, 2, + "11\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1118\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"6325\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",13.5],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",144.75],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",1],PARAMETER[\"false_easting\",100000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",200000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"6637\"]]"); + p = add_epsg_def (filter, first, last, 6646, "epsg", 6646, + "Karbala 1979 / Iraq National Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.02626833333333 +lon_0=46.5 +k=0.99"); + add_proj4text (p, 1, + "94 +x_0=800000 +y_0=0 +ellps=clrk80 +towgs84=70.995,-335"); + add_proj4text (p, 2, + ".916,262.898,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Karbala 1979 / Iraq National Grid\",GEOGCS[\"Ka"); + add_srs_wkt (p, 1, + "rbala 1979\",DATUM[\"Karbala_1979\",SPHEROID[\"Clarke 18"); + add_srs_wkt (p, 2, + "80 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[70.995,-335.916,262.898,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6743\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4743\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",29.02626833333333],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",46.5],PARAMETER[\"scale_factor\",0.9994],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",800000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"6646\"]]"); + p = add_epsg_def (filter, first, last, 6668, "epsg", 6668, + "JGD2011"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\""); + add_srs_wkt (p, 3, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 4, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"6668\"]]"); + p = add_epsg_def (filter, first, last, 6669, "epsg", 6669, + "JGD2011 / Japan Plane Rectangular CS I"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS I\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",33],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",129.5],PARAMETER[\"scale_factor\",0.9999"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",0],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"6669\"]]"); + p = add_epsg_def (filter, first, last, 6670, "epsg", 6670, + "JGD2011 / Japan Plane Rectangular CS II"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS II\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",33],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",131],PARAMETER[\"scale_factor\",0.9999],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"6670\"]]"); + p = add_epsg_def (filter, first, last, 6671, "epsg", 6671, + "JGD2011 / Japan Plane Rectangular CS III"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS III\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",36],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",132.1666666666667],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"6671\"]]"); + p = add_epsg_def (filter, first, last, 6672, "epsg", 6672, + "JGD2011 / Japan Plane Rectangular CS IV"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS IV\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",33],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",133.5],PARAMETER[\"scale_factor\",0.9999"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",0],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"6672\"]]"); + p = add_epsg_def (filter, first, last, 6673, "epsg", 6673, + "JGD2011 / Japan Plane Rectangular CS V"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS V\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",36],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",134.3333333333333],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"6673\"]]"); + p = add_epsg_def (filter, first, last, 6674, "epsg", 6674, + "JGD2011 / Japan Plane Rectangular CS VI"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS VI\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",36],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",136],PARAMETER[\"scale_factor\",0.9999],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"6674\"]]"); + p = add_epsg_def (filter, first, last, 6675, "epsg", 6675, + "JGD2011 / Japan Plane Rectangular CS VII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS VII\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",36],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",137.1666666666667],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"6675\"]]"); + p = add_epsg_def (filter, first, last, 6676, "epsg", 6676, + "JGD2011 / Japan Plane Rectangular CS VIII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS VIII\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",36],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",138.5],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "999],PARAMETER[\"false_easting\",0],PARAMETER[\"false_no"); + add_srs_wkt (p, 10, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AUTHORITY[\"EPSG\",\"6676\"]]"); + p = add_epsg_def (filter, first, last, 6677, "epsg", 6677, + "JGD2011 / Japan Plane Rectangular CS IX"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS IX\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",36],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",139.8333333333333],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"6677\"]]"); + p = add_epsg_def (filter, first, last, 6678, "epsg", 6678, + "JGD2011 / Japan Plane Rectangular CS X"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS X\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",40],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",140.8333333333333],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9999],PARAMETER[\"false_easting\",0],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AUTHORITY[\"EPSG\",\"6678\"]]"); + p = add_epsg_def (filter, first, last, 6679, "epsg", 6679, + "JGD2011 / Japan Plane Rectangular CS XI"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS XI\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",44],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",140.25],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"6679\"]]"); + p = add_epsg_def (filter, first, last, 6680, "epsg", 6680, + "JGD2011 / Japan Plane Rectangular CS XII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS XII\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",44],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",142.25],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "999],PARAMETER[\"false_easting\",0],PARAMETER[\"false_no"); + add_srs_wkt (p, 10, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AUTHORITY[\"EPSG\",\"6680\"]]"); + p = add_epsg_def (filter, first, last, 6681, "epsg", 6681, + "JGD2011 / Japan Plane Rectangular CS XIII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS XIII\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",44],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",144.25],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9999],PARAMETER[\"false_easting\",0],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AUTHORITY[\"EPSG\",\"6681\"]]"); + p = add_epsg_def (filter, first, last, 6682, "epsg", 6682, + "JGD2011 / Japan Plane Rectangular CS XIV"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS XIV\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",26],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",142],PARAMETER[\"scale_factor\",0.9999"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",0],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"6682\"]]"); + p = add_epsg_def (filter, first, last, 6683, "epsg", 6683, + "JGD2011 / Japan Plane Rectangular CS XV"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS XV\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",26],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",127.5],PARAMETER[\"scale_factor\",0.9999"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",0],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"6683\"]]"); + p = add_epsg_def (filter, first, last, 6684, "epsg", 6684, + "JGD2011 / Japan Plane Rectangular CS XVI"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS XVI\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",26],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",124],PARAMETER[\"scale_factor\",0.9999"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",0],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"6684\"]]"); + p = add_epsg_def (filter, first, last, 6685, "epsg", 6685, + "JGD2011 / Japan Plane Rectangular CS XVII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS XVII\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",26],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",131],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"6685\"]]"); + p = add_epsg_def (filter, first, last, 6686, "epsg", 6686, + "JGD2011 / Japan Plane Rectangular CS XVIII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS XVIII\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",20],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",136],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"6686\"]]"); + p = add_epsg_def (filter, first, last, 6687, "epsg", 6687, + "JGD2011 / Japan Plane Rectangular CS XIX"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / Japan Plane Rectangular CS XIX\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"JGD2011\",DATUM[\"Japanese_Geodetic_Datum_2011\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],AUTHORITY[\"EPSG\",\"1128\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"6668\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",26],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",154],PARAMETER[\"scale_factor\",0.9999"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",0],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"6687\"]]"); + p = add_epsg_def (filter, first, last, 6688, "epsg", 6688, + "JGD2011 / UTM zone 51N"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / UTM zone 51N\",GEOGCS[\"JGD2011\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Japanese_Geodetic_Datum_2011\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1128\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"66"); + add_srs_wkt (p, 6, + "68\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 7, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",12"); + add_srs_wkt (p, 8, + "3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 9, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 11, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"668"); + add_srs_wkt (p, 12, + "8\"]]"); + p = add_epsg_def (filter, first, last, 6689, "epsg", 6689, + "JGD2011 / UTM zone 52N"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / UTM zone 52N\",GEOGCS[\"JGD2011\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Japanese_Geodetic_Datum_2011\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1128\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"66"); + add_srs_wkt (p, 6, + "68\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 7, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",12"); + add_srs_wkt (p, 8, + "9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 9, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 11, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"668"); + add_srs_wkt (p, 12, + "9\"]]"); + p = add_epsg_def (filter, first, last, 6690, "epsg", 6690, + "JGD2011 / UTM zone 53N"); + add_proj4text (p, 0, + "+proj=utm +zone=53 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / UTM zone 53N\",GEOGCS[\"JGD2011\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Japanese_Geodetic_Datum_2011\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1128\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"66"); + add_srs_wkt (p, 6, + "68\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 7, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",13"); + add_srs_wkt (p, 8, + "5],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 9, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 11, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"669"); + add_srs_wkt (p, 12, + "0\"]]"); + p = add_epsg_def (filter, first, last, 6691, "epsg", 6691, + "JGD2011 / UTM zone 54N"); + add_proj4text (p, 0, + "+proj=utm +zone=54 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / UTM zone 54N\",GEOGCS[\"JGD2011\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Japanese_Geodetic_Datum_2011\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1128\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"66"); + add_srs_wkt (p, 6, + "68\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 7, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",14"); + add_srs_wkt (p, 8, + "1],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 9, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 11, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"669"); + add_srs_wkt (p, 12, + "1\"]]"); + p = add_epsg_def (filter, first, last, 6692, "epsg", 6692, + "JGD2011 / UTM zone 55N"); + add_proj4text (p, 0, + "+proj=utm +zone=55 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JGD2011 / UTM zone 55N\",GEOGCS[\"JGD2011\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Japanese_Geodetic_Datum_2011\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"1128\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 5, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"66"); + add_srs_wkt (p, 6, + "68\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 7, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",14"); + add_srs_wkt (p, 8, + "7],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 9, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 11, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"669"); + add_srs_wkt (p, 12, + "2\"]]"); + p = add_epsg_def (filter, first, last, 6703, "epsg", 6703, + "WGS 84 / TM 60 SW"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-60 +k=0.9996 +x_0=500000 +y"); + add_proj4text (p, 1, + "_0=10000000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / TM 60 SW\",GEOGCS[\"WGS 84\",DATUM[\"W"); + add_srs_wkt (p, 1, + "GS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],"); + add_srs_wkt (p, 3, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 4, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 5, + "2\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 6, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 7, + "METER[\"central_meridian\",-60],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 8, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 10, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 11, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"6703\"]]"); + p = add_epsg_def (filter, first, last, 6706, "epsg", 6706, + "RDN2008"); + add_proj4text (p, 0, + "+proj=longlat +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +no_de"); + add_proj4text (p, 1, + "fs"); + add_srs_wkt (p, 0, + "GEOGCS[\"RDN2008\",DATUM[\"Rete_Dinamica_Nazionale_2008\""); + add_srs_wkt (p, 1, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 2, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"1132\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"6706\"]]"); + p = add_epsg_def (filter, first, last, 6707, "epsg", 6707, + "RDN2008 / TM32"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RDN2008 / TM32\",GEOGCS[\"RDN2008\",DATUM[\"Ret"); + add_srs_wkt (p, 1, + "e_Dinamica_Nazionale_2008\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1132\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"6706\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",9],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"6707\"]]"); + p = add_epsg_def (filter, first, last, 6708, "epsg", 6708, + "RDN2008 / TM33"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RDN2008 / TM33\",GEOGCS[\"RDN2008\",DATUM[\"Ret"); + add_srs_wkt (p, 1, + "e_Dinamica_Nazionale_2008\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1132\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"6706\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",15],PARAMETER[\"scale_factor\",0.9996],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"6708\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_32.c b/src/spatialite/src/srsinit/epsg_inlined_32.c new file mode 100644 index 0000000..7bade69 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_32.c @@ -0,0 +1,3450 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_32 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 6709, "epsg", 6709, + "RDN2008 / TM34"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RDN2008 / TM34\",GEOGCS[\"RDN2008\",DATUM[\"Ret"); + add_srs_wkt (p, 1, + "e_Dinamica_Nazionale_2008\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1132\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"6706\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",21],PARAMETER[\"scale_factor\",0.9996],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"6709\"]]"); + p = add_epsg_def (filter, first, last, 6720, "epsg", 6720, + "WGS 84 / CIG92"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105.625 +k=1.000024 +x_0=500"); + add_proj4text (p, 1, + "00 +y_0=1300000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / CIG92\",GEOGCS[\"WGS 84\",DATUM[\"WGS_"); + add_srs_wkt (p, 1, + "1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PRI"); + add_srs_wkt (p, 3, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 4, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 5, + "],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 6, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"central_meridian\",105.625],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 8, + "\",1.000024],PARAMETER[\"false_easting\",50000],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"false_northing\",1300000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 10, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 11, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"6720\"]]"); + p = add_epsg_def (filter, first, last, 6721, "epsg", 6721, + "GDA94 / CIG94"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105.625 +k=1.00002514 +x_0=5"); + add_proj4text (p, 1, + "0000 +y_0=1300000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / CIG94\",GEOGCS[\"GDA94\",DATUM[\"Geocen"); + add_srs_wkt (p, 1, + "tric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",105.625],PARAMETER[\"scale_factor\",1.0"); + add_srs_wkt (p, 9, + "0002514],PARAMETER[\"false_easting\",50000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",1300000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6721\"]]"); + p = add_epsg_def (filter, first, last, 6722, "epsg", 6722, + "WGS 84 / CKIG92"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=96.875 +k=1 +x_0=50000 +y_0="); + add_proj4text (p, 1, + "1400000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / CKIG92\",GEOGCS[\"WGS 84\",DATUM[\"WGS"); + add_srs_wkt (p, 1, + "_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTHOR"); + add_srs_wkt (p, 2, + "ITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],PR"); + add_srs_wkt (p, 3, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 4, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 5, + "]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 6, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 7, + "ER[\"central_meridian\",96.875],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 8, + "\",1],PARAMETER[\"false_easting\",50000],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_northing\",1400000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 10, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 11, + "ORTH],AUTHORITY[\"EPSG\",\"6722\"]]"); + p = add_epsg_def (filter, first, last, 6723, "epsg", 6723, + "GDA94 / CKIG94"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=96.875 +k=0.99999387 +x_0=50"); + add_proj4text (p, 1, + "000 +y_0=1500000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / CKIG94\",GEOGCS[\"GDA94\",DATUM[\"Geoce"); + add_srs_wkt (p, 1, + "ntric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",96.875],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "9999387],PARAMETER[\"false_easting\",50000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",1500000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6723\"]]"); + p = add_epsg_def (filter, first, last, 6732, "epsg", 6732, + "GDA94 / MGA zone 41"); + add_proj4text (p, 0, + "+proj=utm +zone=41 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 41\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",63],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6732\"]]"); + p = add_epsg_def (filter, first, last, 6733, "epsg", 6733, + "GDA94 / MGA zone 42"); + add_proj4text (p, 0, + "+proj=utm +zone=42 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 42\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",69],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6733\"]]"); + p = add_epsg_def (filter, first, last, 6734, "epsg", 6734, + "GDA94 / MGA zone 43"); + add_proj4text (p, 0, + "+proj=utm +zone=43 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 43\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",75],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6734\"]]"); + p = add_epsg_def (filter, first, last, 6735, "epsg", 6735, + "GDA94 / MGA zone 44"); + add_proj4text (p, 0, + "+proj=utm +zone=44 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 44\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",81],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6735\"]]"); + p = add_epsg_def (filter, first, last, 6736, "epsg", 6736, + "GDA94 / MGA zone 46"); + add_proj4text (p, 0, + "+proj=utm +zone=46 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 46\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",93],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6736\"]]"); + p = add_epsg_def (filter, first, last, 6737, "epsg", 6737, + "GDA94 / MGA zone 47"); + add_proj4text (p, 0, + "+proj=utm +zone=47 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 47\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",99],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6737\"]]"); + p = add_epsg_def (filter, first, last, 6738, "epsg", 6738, + "GDA94 / MGA zone 59"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 59\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",171],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"6738\"]]"); + p = add_epsg_def (filter, first, last, 6870, "epsg", 6870, + "ETRS89 / Albania 2010"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=20 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / Albania 2010\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",20],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"6870\"]]"); + p = add_epsg_def (filter, first, last, 6875, "epsg", 6875, + "RDN2008 / Italy zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9985000000000001 +x_"); + add_proj4text (p, 1, + "0=7000000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RDN2008 / Italy zone\",GEOGCS[\"RDN2008\",DATUM"); + add_srs_wkt (p, 1, + "[\"Rete_Dinamica_Nazionale_2008\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1132\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"6706\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",12],PARAMETER[\"scale_factor\",0.9985"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",7000000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AUTHORITY[\"EPSG\",\"6875\"]]"); + p = add_epsg_def (filter, first, last, 6876, "epsg", 6876, + "RDN2008 / Zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=3000000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RDN2008 / Zone 12\",GEOGCS[\"RDN2008\",DATUM[\""); + add_srs_wkt (p, 1, + "Rete_Dinamica_Nazionale_2008\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"1132\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"6706\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",12],PARAMETER[\"scale_factor\",1],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_easting\",3000000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"6876\"]]"); + p = add_epsg_def (filter, first, last, 20004, "epsg", 20004, + "Pulkovo 1995 / Gauss-Kruger zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 4\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",21],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",45000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"20004\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 20005, "epsg", 20005, + "Pulkovo 1995 / Gauss-Kruger zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 5\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",27],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",55000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"20005\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 20006, "epsg", 20006, + "Pulkovo 1995 / Gauss-Kruger zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 6\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",33],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",65000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"20006\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 20007, "epsg", 20007, + "Pulkovo 1995 / Gauss-Kruger zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 7\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",39],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",75000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"20007\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 20008, "epsg", 20008, + "Pulkovo 1995 / Gauss-Kruger zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 8\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",45],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",85000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"20008\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 20009, "epsg", 20009, + "Pulkovo 1995 / Gauss-Kruger zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 9\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 8, + "f_origin\",0],PARAMETER[\"central_meridian\",51],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",95000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"20009\"]"); + add_srs_wkt (p, 12, + "]"); + p = add_epsg_def (filter, first, last, 20010, "epsg", 20010, + "Pulkovo 1995 / Gauss-Kruger zone 10"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 10\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",57],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",105"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"20010"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 20011, "epsg", 20011, + "Pulkovo 1995 / Gauss-Kruger zone 11"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 11\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",63],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",115"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"20011"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 20012, "epsg", 20012, + "Pulkovo 1995 / Gauss-Kruger zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 12\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",69],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",125"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"20012"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 20013, "epsg", 20013, + "Pulkovo 1995 / Gauss-Kruger zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 13\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",75],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",135"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"20013"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 20014, "epsg", 20014, + "Pulkovo 1995 / Gauss-Kruger zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 14\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",81],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",145"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"20014"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 20015, "epsg", 20015, + "Pulkovo 1995 / Gauss-Kruger zone 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 15\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",87],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",155"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"20015"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 20016, "epsg", 20016, + "Pulkovo 1995 / Gauss-Kruger zone 16"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 16\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",93],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",165"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"20016"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 20017, "epsg", 20017, + "Pulkovo 1995 / Gauss-Kruger zone 17"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 17\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",99],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",175"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"20017"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 20018, "epsg", 20018, + "Pulkovo 1995 / Gauss-Kruger zone 18"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 18\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",105],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",18"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2001"); + add_srs_wkt (p, 12, + "8\"]]"); + p = add_epsg_def (filter, first, last, 20019, "epsg", 20019, + "Pulkovo 1995 / Gauss-Kruger zone 19"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 19\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",111],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",19"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2001"); + add_srs_wkt (p, 12, + "9\"]]"); + p = add_epsg_def (filter, first, last, 20020, "epsg", 20020, + "Pulkovo 1995 / Gauss-Kruger zone 20"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 20\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",117],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",20"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2002"); + add_srs_wkt (p, 12, + "0\"]]"); + p = add_epsg_def (filter, first, last, 20021, "epsg", 20021, + "Pulkovo 1995 / Gauss-Kruger zone 21"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 21\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",123],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",21"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2002"); + add_srs_wkt (p, 12, + "1\"]]"); + p = add_epsg_def (filter, first, last, 20022, "epsg", 20022, + "Pulkovo 1995 / Gauss-Kruger zone 22"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 22\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",129],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",22"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2002"); + add_srs_wkt (p, 12, + "2\"]]"); + p = add_epsg_def (filter, first, last, 20023, "epsg", 20023, + "Pulkovo 1995 / Gauss-Kruger zone 23"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 23\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",135],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",23"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2002"); + add_srs_wkt (p, 12, + "3\"]]"); + p = add_epsg_def (filter, first, last, 20024, "epsg", 20024, + "Pulkovo 1995 / Gauss-Kruger zone 24"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 24\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",141],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",24"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2002"); + add_srs_wkt (p, 12, + "4\"]]"); + p = add_epsg_def (filter, first, last, 20025, "epsg", 20025, + "Pulkovo 1995 / Gauss-Kruger zone 25"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 25\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",147],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",25"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2002"); + add_srs_wkt (p, 12, + "5\"]]"); + p = add_epsg_def (filter, first, last, 20026, "epsg", 20026, + "Pulkovo 1995 / Gauss-Kruger zone 26"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 26\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",153],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",26"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2002"); + add_srs_wkt (p, 12, + "6\"]]"); + p = add_epsg_def (filter, first, last, 20027, "epsg", 20027, + "Pulkovo 1995 / Gauss-Kruger zone 27"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 27\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",159],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",27"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2002"); + add_srs_wkt (p, 12, + "7\"]]"); + p = add_epsg_def (filter, first, last, 20028, "epsg", 20028, + "Pulkovo 1995 / Gauss-Kruger zone 28"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 28\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",165],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",28"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2002"); + add_srs_wkt (p, 12, + "8\"]]"); + p = add_epsg_def (filter, first, last, 20029, "epsg", 20029, + "Pulkovo 1995 / Gauss-Kruger zone 29"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 29\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",171],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",29"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2002"); + add_srs_wkt (p, 12, + "9\"]]"); + p = add_epsg_def (filter, first, last, 20030, "epsg", 20030, + "Pulkovo 1995 / Gauss-Kruger zone 30"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,"); + add_proj4text (p, 2, + "-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 30\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",177],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",30"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2003"); + add_srs_wkt (p, 12, + "0\"]]"); + p = add_epsg_def (filter, first, last, 20031, "epsg", 20031, + "Pulkovo 1995 / Gauss-Kruger zone 31"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13"); + add_proj4text (p, 2, + ",-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 31\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",-177],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",3"); + add_srs_wkt (p, 10, + "1500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"200"); + add_srs_wkt (p, 12, + "31\"]]"); + p = add_epsg_def (filter, first, last, 20032, "epsg", 20032, + "Pulkovo 1995 / Gauss-Kruger zone 32"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13"); + add_proj4text (p, 2, + ",-0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger zone 32\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4200\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",-171],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",3"); + add_srs_wkt (p, 10, + "2500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"200"); + add_srs_wkt (p, 12, + "32\"]]"); + p = add_epsg_def (filter, first, last, 20064, "epsg", 20064, + "Pulkovo 1995 / Gauss-Kruger 4N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 4N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",21"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "20064\"]]"); + p = add_epsg_def (filter, first, last, 20065, "epsg", 20065, + "Pulkovo 1995 / Gauss-Kruger 5N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 5N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",27"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "20065\"]]"); + p = add_epsg_def (filter, first, last, 20066, "epsg", 20066, + "Pulkovo 1995 / Gauss-Kruger 6N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 6N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",33"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "20066\"]]"); + p = add_epsg_def (filter, first, last, 20067, "epsg", 20067, + "Pulkovo 1995 / Gauss-Kruger 7N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 7N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",39"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "20067\"]]"); + p = add_epsg_def (filter, first, last, 20068, "epsg", 20068, + "Pulkovo 1995 / Gauss-Kruger 8N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 8N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",45"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "20068\"]]"); + p = add_epsg_def (filter, first, last, 20069, "epsg", 20069, + "Pulkovo 1995 / Gauss-Kruger 9N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 9N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "00\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",0],PARAMETER[\"central_meridian\",51"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "20069\"]]"); + p = add_epsg_def (filter, first, last, 20070, "epsg", 20070, + "Pulkovo 1995 / Gauss-Kruger 10N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 10N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "20070\"]]"); + p = add_epsg_def (filter, first, last, 20071, "epsg", 20071, + "Pulkovo 1995 / Gauss-Kruger 11N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 11N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "20071\"]]"); + p = add_epsg_def (filter, first, last, 20072, "epsg", 20072, + "Pulkovo 1995 / Gauss-Kruger 12N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 12N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "20072\"]]"); + p = add_epsg_def (filter, first, last, 20073, "epsg", 20073, + "Pulkovo 1995 / Gauss-Kruger 13N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 13N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "20073\"]]"); + p = add_epsg_def (filter, first, last, 20074, "epsg", 20074, + "Pulkovo 1995 / Gauss-Kruger 14N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 14N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "20074\"]]"); + p = add_epsg_def (filter, first, last, 20075, "epsg", 20075, + "Pulkovo 1995 / Gauss-Kruger 15N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 15N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "20075\"]]"); + p = add_epsg_def (filter, first, last, 20076, "epsg", 20076, + "Pulkovo 1995 / Gauss-Kruger 16N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 16N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "20076\"]]"); + p = add_epsg_def (filter, first, last, 20077, "epsg", 20077, + "Pulkovo 1995 / Gauss-Kruger 17N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0."); + add_proj4text (p, 2, + "22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 17N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "20077\"]]"); + p = add_epsg_def (filter, first, last, 20078, "epsg", 20078, + "Pulkovo 1995 / Gauss-Kruger 18N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 18N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "05],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"20078\"]]"); + p = add_epsg_def (filter, first, last, 20079, "epsg", 20079, + "Pulkovo 1995 / Gauss-Kruger 19N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 19N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "11],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"20079\"]]"); + p = add_epsg_def (filter, first, last, 20080, "epsg", 20080, + "Pulkovo 1995 / Gauss-Kruger 20N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 20N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "17],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"20080\"]]"); + p = add_epsg_def (filter, first, last, 20081, "epsg", 20081, + "Pulkovo 1995 / Gauss-Kruger 21N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 21N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "23],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"20081\"]]"); + p = add_epsg_def (filter, first, last, 20082, "epsg", 20082, + "Pulkovo 1995 / Gauss-Kruger 22N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 22N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "29],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"20082\"]]"); + p = add_epsg_def (filter, first, last, 20083, "epsg", 20083, + "Pulkovo 1995 / Gauss-Kruger 23N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 23N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "35],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"20083\"]]"); + p = add_epsg_def (filter, first, last, 20084, "epsg", 20084, + "Pulkovo 1995 / Gauss-Kruger 24N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 24N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "41],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"20084\"]]"); + p = add_epsg_def (filter, first, last, 20085, "epsg", 20085, + "Pulkovo 1995 / Gauss-Kruger 25N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 25N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "47],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"20085\"]]"); + p = add_epsg_def (filter, first, last, 20086, "epsg", 20086, + "Pulkovo 1995 / Gauss-Kruger 26N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 26N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "53],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"20086\"]]"); + p = add_epsg_def (filter, first, last, 20087, "epsg", 20087, + "Pulkovo 1995 / Gauss-Kruger 27N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 27N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "59],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"20087\"]]"); + p = add_epsg_def (filter, first, last, 20088, "epsg", 20088, + "Pulkovo 1995 / Gauss-Kruger 28N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 28N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "65],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"20088\"]]"); + p = add_epsg_def (filter, first, last, 20089, "epsg", 20089, + "Pulkovo 1995 / Gauss-Kruger 29N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 29N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "71],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"20089\"]]"); + p = add_epsg_def (filter, first, last, 20090, "epsg", 20090, + "Pulkovo 1995 / Gauss-Kruger 30N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-0"); + add_proj4text (p, 2, + ".22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 30N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "77],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"20090\"]]"); + p = add_epsg_def (filter, first, last, 20091, "epsg", 20091, + "Pulkovo 1995 / Gauss-Kruger 31N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 31N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "177],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"20091\"]]"); + p = add_epsg_def (filter, first, last, 20092, "epsg", 20092, + "Pulkovo 1995 / Gauss-Kruger 32N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=24.47,-130.89,-81.56,-0,-0,0.13,-"); + add_proj4text (p, 2, + "0.22 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1995 / Gauss-Kruger 32N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1995\",DATUM[\"Pulkovo_1995\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[24.47,-130.89,-81.56,-0,-0,0.13,-0.22],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6200\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4200\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "171],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"20092\"]]"); + p = add_epsg_def (filter, first, last, 20135, "epsg", 20135, + "Adindan / UTM zone 35N"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +ellps=clrk80 +towgs84=-166,-15,204,0"); + add_proj4text (p, 1, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Adindan / UTM zone 35N\",GEOGCS[\"Adindan\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Adindan\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 2, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-166,-15"); + add_srs_wkt (p, 3, + ",204,0,0,0,0],AUTHORITY[\"EPSG\",\"6201\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4201\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",27],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"20135\"]]"); + p = add_epsg_def (filter, first, last, 20136, "epsg", 20136, + "Adindan / UTM zone 36N"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +ellps=clrk80 +towgs84=-166,-15,204,0"); + add_proj4text (p, 1, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Adindan / UTM zone 36N\",GEOGCS[\"Adindan\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Adindan\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 2, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-166,-15"); + add_srs_wkt (p, 3, + ",204,0,0,0,0],AUTHORITY[\"EPSG\",\"6201\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4201\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",33],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"20136\"]]"); + p = add_epsg_def (filter, first, last, 20137, "epsg", 20137, + "Adindan / UTM zone 37N"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +ellps=clrk80 +towgs84=-166,-15,204,0"); + add_proj4text (p, 1, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Adindan / UTM zone 37N\",GEOGCS[\"Adindan\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Adindan\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 2, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-166,-15"); + add_srs_wkt (p, 3, + ",204,0,0,0,0],AUTHORITY[\"EPSG\",\"6201\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4201\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",39],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"20137\"]]"); + p = add_epsg_def (filter, first, last, 20138, "epsg", 20138, + "Adindan / UTM zone 38N"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +ellps=clrk80 +towgs84=-166,-15,204,0"); + add_proj4text (p, 1, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Adindan / UTM zone 38N\",GEOGCS[\"Adindan\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Adindan\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.14"); + add_srs_wkt (p, 2, + "5,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-166,-15"); + add_srs_wkt (p, 3, + ",204,0,0,0,0],AUTHORITY[\"EPSG\",\"6201\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4201\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",45],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"20138\"]]"); + p = add_epsg_def (filter, first, last, 20248, "epsg", 20248, + "AGD66 / AMG zone 48 (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +south +ellps=aust_SA +towgs84=-117.8"); + add_proj4text (p, 1, + "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD66 / AMG zone 48 (deprecated)\",GEOGCS[\"AGD"); + add_srs_wkt (p, 1, + "66\",DATUM[\"Australian_Geodetic_Datum_1966\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Australian National Spheroid\",6378160,298.25,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7003\"]],TOWGS84[-117.808,-51.536,137.784,0.3"); + add_srs_wkt (p, 4, + "03,0.446,0.234,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIM"); + add_srs_wkt (p, 5, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 6, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 7, + "],AUTHORITY[\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 8, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"central_meridian\",105],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 10, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"20248\"]]"); + p = add_epsg_def (filter, first, last, 20249, "epsg", 20249, + "AGD66 / AMG zone 49"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +south +ellps=aust_SA +towgs84=-117.8"); + add_proj4text (p, 1, + "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD66 / AMG zone 49\",GEOGCS[\"AGD66\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); + add_srs_wkt (p, 4, + "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 9, + "meridian\",111],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 11, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"20249\"]]"); + p = add_epsg_def (filter, first, last, 20250, "epsg", 20250, + "AGD66 / AMG zone 50"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +south +ellps=aust_SA +towgs84=-117.8"); + add_proj4text (p, 1, + "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD66 / AMG zone 50\",GEOGCS[\"AGD66\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); + add_srs_wkt (p, 4, + "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 9, + "meridian\",117],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 11, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"20250\"]]"); + p = add_epsg_def (filter, first, last, 20251, "epsg", 20251, + "AGD66 / AMG zone 51"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +south +ellps=aust_SA +towgs84=-117.8"); + add_proj4text (p, 1, + "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD66 / AMG zone 51\",GEOGCS[\"AGD66\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); + add_srs_wkt (p, 4, + "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 9, + "meridian\",123],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 11, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"20251\"]]"); + p = add_epsg_def (filter, first, last, 20252, "epsg", 20252, + "AGD66 / AMG zone 52"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +south +ellps=aust_SA +towgs84=-117.8"); + add_proj4text (p, 1, + "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD66 / AMG zone 52\",GEOGCS[\"AGD66\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); + add_srs_wkt (p, 4, + "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 9, + "meridian\",129],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 11, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"20252\"]]"); + p = add_epsg_def (filter, first, last, 20253, "epsg", 20253, + "AGD66 / AMG zone 53"); + add_proj4text (p, 0, + "+proj=utm +zone=53 +south +ellps=aust_SA +towgs84=-117.8"); + add_proj4text (p, 1, + "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD66 / AMG zone 53\",GEOGCS[\"AGD66\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); + add_srs_wkt (p, 4, + "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 9, + "meridian\",135],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 11, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"20253\"]]"); + p = add_epsg_def (filter, first, last, 20254, "epsg", 20254, + "AGD66 / AMG zone 54"); + add_proj4text (p, 0, + "+proj=utm +zone=54 +south +ellps=aust_SA +towgs84=-117.8"); + add_proj4text (p, 1, + "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD66 / AMG zone 54\",GEOGCS[\"AGD66\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); + add_srs_wkt (p, 4, + "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 9, + "meridian\",141],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 11, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"20254\"]]"); + p = add_epsg_def (filter, first, last, 20255, "epsg", 20255, + "AGD66 / AMG zone 55"); + add_proj4text (p, 0, + "+proj=utm +zone=55 +south +ellps=aust_SA +towgs84=-117.8"); + add_proj4text (p, 1, + "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD66 / AMG zone 55\",GEOGCS[\"AGD66\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); + add_srs_wkt (p, 4, + "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 9, + "meridian\",147],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 11, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"20255\"]]"); + p = add_epsg_def (filter, first, last, 20256, "epsg", 20256, + "AGD66 / AMG zone 56"); + add_proj4text (p, 0, + "+proj=utm +zone=56 +south +ellps=aust_SA +towgs84=-117.8"); + add_proj4text (p, 1, + "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD66 / AMG zone 56\",GEOGCS[\"AGD66\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); + add_srs_wkt (p, 4, + "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 9, + "meridian\",153],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 11, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"20256\"]]"); + p = add_epsg_def (filter, first, last, 20257, "epsg", 20257, + "AGD66 / AMG zone 57"); + add_proj4text (p, 0, + "+proj=utm +zone=57 +south +ellps=aust_SA +towgs84=-117.8"); + add_proj4text (p, 1, + "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD66 / AMG zone 57\",GEOGCS[\"AGD66\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); + add_srs_wkt (p, 4, + "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 9, + "meridian\",159],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 11, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"20257\"]]"); + p = add_epsg_def (filter, first, last, 20258, "epsg", 20258, + "AGD66 / AMG zone 58"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=aust_SA +towgs84=-117.8"); + add_proj4text (p, 1, + "08,-51.536,137.784,0.303,0.446,0.234,-0.29 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD66 / AMG zone 58\",GEOGCS[\"AGD66\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1966\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-117.808,-51.536,137.784,0.303,0.446,0.2"); + add_srs_wkt (p, 4, + "34,-0.29],AUTHORITY[\"EPSG\",\"6202\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 5, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4202\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 9, + "meridian\",165],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 11, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"20258\"]]"); + p = add_epsg_def (filter, first, last, 20348, "epsg", 20348, + "AGD84 / AMG zone 48 (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +south +ellps=aust_SA +towgs84=-134,-"); + add_proj4text (p, 1, + "48,149,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD84 / AMG zone 48 (deprecated)\",GEOGCS[\"AGD"); + add_srs_wkt (p, 1, + "84\",DATUM[\"Australian_Geodetic_Datum_1984\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Australian National Spheroid\",6378160,298.25,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",105],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",10000000],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "20348\"]]"); + p = add_epsg_def (filter, first, last, 20349, "epsg", 20349, + "AGD84 / AMG zone 49"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +south +ellps=aust_SA +towgs84=-134,-"); + add_proj4text (p, 1, + "48,149,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD84 / AMG zone 49\",GEOGCS[\"AGD84\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",111],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20349\"]]"); + p = add_epsg_def (filter, first, last, 20350, "epsg", 20350, + "AGD84 / AMG zone 50"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +south +ellps=aust_SA +towgs84=-134,-"); + add_proj4text (p, 1, + "48,149,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD84 / AMG zone 50\",GEOGCS[\"AGD84\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",117],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20350\"]]"); + p = add_epsg_def (filter, first, last, 20351, "epsg", 20351, + "AGD84 / AMG zone 51"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +south +ellps=aust_SA +towgs84=-134,-"); + add_proj4text (p, 1, + "48,149,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD84 / AMG zone 51\",GEOGCS[\"AGD84\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",123],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20351\"]]"); + p = add_epsg_def (filter, first, last, 20352, "epsg", 20352, + "AGD84 / AMG zone 52"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +south +ellps=aust_SA +towgs84=-134,-"); + add_proj4text (p, 1, + "48,149,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD84 / AMG zone 52\",GEOGCS[\"AGD84\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",129],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20352\"]]"); + p = add_epsg_def (filter, first, last, 20353, "epsg", 20353, + "AGD84 / AMG zone 53"); + add_proj4text (p, 0, + "+proj=utm +zone=53 +south +ellps=aust_SA +towgs84=-134,-"); + add_proj4text (p, 1, + "48,149,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD84 / AMG zone 53\",GEOGCS[\"AGD84\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",135],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20353\"]]"); + p = add_epsg_def (filter, first, last, 20354, "epsg", 20354, + "AGD84 / AMG zone 54"); + add_proj4text (p, 0, + "+proj=utm +zone=54 +south +ellps=aust_SA +towgs84=-134,-"); + add_proj4text (p, 1, + "48,149,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD84 / AMG zone 54\",GEOGCS[\"AGD84\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",141],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20354\"]]"); + p = add_epsg_def (filter, first, last, 20355, "epsg", 20355, + "AGD84 / AMG zone 55"); + add_proj4text (p, 0, + "+proj=utm +zone=55 +south +ellps=aust_SA +towgs84=-134,-"); + add_proj4text (p, 1, + "48,149,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD84 / AMG zone 55\",GEOGCS[\"AGD84\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",147],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20355\"]]"); + p = add_epsg_def (filter, first, last, 20356, "epsg", 20356, + "AGD84 / AMG zone 56"); + add_proj4text (p, 0, + "+proj=utm +zone=56 +south +ellps=aust_SA +towgs84=-134,-"); + add_proj4text (p, 1, + "48,149,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD84 / AMG zone 56\",GEOGCS[\"AGD84\",DATUM[\""); + add_srs_wkt (p, 1, + "Australian_Geodetic_Datum_1984\",SPHEROID[\"Australian N"); + add_srs_wkt (p, 2, + "ational Spheroid\",6378160,298.25,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",153],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"20356\"]]"); + p = add_epsg_def (filter, first, last, 20357, "epsg", 20357, + "AGD84 / AMG zone 57 (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=57 +south +ellps=aust_SA +towgs84=-134,-"); + add_proj4text (p, 1, + "48,149,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD84 / AMG zone 57 (deprecated)\",GEOGCS[\"AGD"); + add_srs_wkt (p, 1, + "84\",DATUM[\"Australian_Geodetic_Datum_1984\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Australian National Spheroid\",6378160,298.25,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",159],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",10000000],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "20357\"]]"); + p = add_epsg_def (filter, first, last, 20358, "epsg", 20358, + "AGD84 / AMG zone 58 (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=aust_SA +towgs84=-134,-"); + add_proj4text (p, 1, + "48,149,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"AGD84 / AMG zone 58 (deprecated)\",GEOGCS[\"AGD"); + add_srs_wkt (p, 1, + "84\",DATUM[\"Australian_Geodetic_Datum_1984\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Australian National Spheroid\",6378160,298.25,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7003\"]],TOWGS84[-134,-48,149,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6203\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4203\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",0],PARAMETER[\"central_meridian\",165],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",10000000],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "20358\"]]"); + p = add_epsg_def (filter, first, last, 20436, "epsg", 20436, + "Ain el Abd / UTM zone 36N"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +ellps=intl +towgs84=-143,-236,7,0,0,"); + add_proj4text (p, 1, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Ain el Abd / UTM zone 36N\",GEOGCS[\"Ain el Abd"); + add_srs_wkt (p, 1, + "\",DATUM[\"Ain_el_Abd_1970\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\",\"6204\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4204\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",33],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"20436\"]]"); + p = add_epsg_def (filter, first, last, 20437, "epsg", 20437, + "Ain el Abd / UTM zone 37N"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +ellps=intl +towgs84=-143,-236,7,0,0,"); + add_proj4text (p, 1, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Ain el Abd / UTM zone 37N\",GEOGCS[\"Ain el Abd"); + add_srs_wkt (p, 1, + "\",DATUM[\"Ain_el_Abd_1970\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\",\"6204\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4204\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",39],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"20437\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_33.c b/src/spatialite/src/srsinit/epsg_inlined_33.c new file mode 100644 index 0000000..320ccf8 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_33.c @@ -0,0 +1,3330 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_33 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 20438, "epsg", 20438, + "Ain el Abd / UTM zone 38N"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +ellps=intl +towgs84=-143,-236,7,0,0,"); + add_proj4text (p, 1, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Ain el Abd / UTM zone 38N\",GEOGCS[\"Ain el Abd"); + add_srs_wkt (p, 1, + "\",DATUM[\"Ain_el_Abd_1970\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\",\"6204\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4204\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",45],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"20438\"]]"); + p = add_epsg_def (filter, first, last, 20439, "epsg", 20439, + "Ain el Abd / UTM zone 39N"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=intl +towgs84=-143,-236,7,0,0,"); + add_proj4text (p, 1, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Ain el Abd / UTM zone 39N\",GEOGCS[\"Ain el Abd"); + add_srs_wkt (p, 1, + "\",DATUM[\"Ain_el_Abd_1970\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\",\"6204\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4204\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",51],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"20439\"]]"); + p = add_epsg_def (filter, first, last, 20440, "epsg", 20440, + "Ain el Abd / UTM zone 40N"); + add_proj4text (p, 0, + "+proj=utm +zone=40 +ellps=intl +towgs84=-143,-236,7,0,0,"); + add_proj4text (p, 1, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Ain el Abd / UTM zone 40N\",GEOGCS[\"Ain el Abd"); + add_srs_wkt (p, 1, + "\",DATUM[\"Ain_el_Abd_1970\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\",\"6204\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4204\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",57],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"20440\"]]"); + p = add_epsg_def (filter, first, last, 20499, "epsg", 20499, + "Ain el Abd / Bahrain Grid"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=intl +towgs84=-143,-236,7,0,0,"); + add_proj4text (p, 1, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Ain el Abd / Bahrain Grid\",GEOGCS[\"Ain el Abd"); + add_srs_wkt (p, 1, + "\",DATUM[\"Ain_el_Abd_1970\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "143,-236,7,0,0,0,0],AUTHORITY[\"EPSG\",\"6204\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4204\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",51],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "96],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"20499\"]]"); + p = add_epsg_def (filter, first, last, 20538, "epsg", 20538, + "Afgooye / UTM zone 38N"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +ellps=krass +towgs84=-43,-163,45,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Afgooye / UTM zone 38N\",GEOGCS[\"Afgooye\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Afgooye\",SPHEROID[\"Krassowsky 1940\",6378245,298."); + add_srs_wkt (p, 2, + "3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[-43,-163,45,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6205\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4205\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 11, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"20538\"]]"); + p = add_epsg_def (filter, first, last, 20539, "epsg", 20539, + "Afgooye / UTM zone 39N"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=krass +towgs84=-43,-163,45,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Afgooye / UTM zone 39N\",GEOGCS[\"Afgooye\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Afgooye\",SPHEROID[\"Krassowsky 1940\",6378245,298."); + add_srs_wkt (p, 2, + "3,AUTHORITY[\"EPSG\",\"7024\"]],TOWGS84[-43,-163,45,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6205\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4205\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 11, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"20539\"]]"); + p = add_epsg_def (filter, first, last, 20790, "epsg", 20790, + "Lisbon (Lisbon) / Portuguese National Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0="); + add_proj4text (p, 1, + "200000 +y_0=300000 +ellps=intl +towgs84=-304.046,-60.576"); + add_proj4text (p, 2, + ",103.64,0,0,0,0 +pm=lisbon +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Lisbon (Lisbon) / Portuguese National Grid\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"Lisbon (Lisbon)\",DATUM[\"Lisbon_1937_Lisbon\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"International 1924\",6378388,297,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7022\"]],TOWGS84[-304.046,-60.576,103.64,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6803\"]],PRIMEM[\"Lisbon\",-9.1319"); + add_srs_wkt (p, 5, + "06111111112,AUTHORITY[\"EPSG\",\"8902\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4803\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",39.66666666666666],"); + add_srs_wkt (p, 9, + "PARAMETER[\"central_meridian\",1],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 10, + "or\",1],PARAMETER[\"false_easting\",200000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",300000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"20790\"]]"); + p = add_epsg_def (filter, first, last, 20791, "epsg", 20791, + "Lisbon (Lisbon) / Portuguese Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=39.66666666666666 +lon_0=1 +k=1 +x_0="); + add_proj4text (p, 1, + "0 +y_0=0 +ellps=intl +towgs84=-304.046,-60.576,103.64,0,"); + add_proj4text (p, 2, + "0,0,0 +pm=lisbon +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Lisbon (Lisbon) / Portuguese Grid\",GEOGCS[\"Li"); + add_srs_wkt (p, 1, + "sbon (Lisbon)\",DATUM[\"Lisbon_1937_Lisbon\",SPHEROID[\""); + add_srs_wkt (p, 2, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "22\"]],TOWGS84[-304.046,-60.576,103.64,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"6803\"]],PRIMEM[\"Lisbon\",-9.1319061111111"); + add_srs_wkt (p, 5, + "12,AUTHORITY[\"EPSG\",\"8902\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4803\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"latitude_of_origin\",39.66666666666666],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"central_meridian\",1],PARAMETER[\"scale_factor\",1],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",0],PARAMETER[\"false_northin"); + add_srs_wkt (p, 11, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"20"); + add_srs_wkt (p, 13, + "791\"]]"); + p = add_epsg_def (filter, first, last, 20822, "epsg", 20822, + "Aratu / UTM zone 22S"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +south +ellps=intl +towgs84=-151.99,2"); + add_proj4text (p, 1, + "87.04,-147.45,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Aratu / UTM zone 22S\",GEOGCS[\"Aratu\",DATUM[\""); + add_srs_wkt (p, 1, + "Aratu\",SPHEROID[\"International 1924\",6378388,297,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7022\"]],TOWGS84[-151.99,287.04,-147.45"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6208\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4208\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 8, + "meridian\",-51],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"20822\"]]"); + p = add_epsg_def (filter, first, last, 20823, "epsg", 20823, + "Aratu / UTM zone 23S"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +south +ellps=intl +towgs84=-151.99,2"); + add_proj4text (p, 1, + "87.04,-147.45,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Aratu / UTM zone 23S\",GEOGCS[\"Aratu\",DATUM[\""); + add_srs_wkt (p, 1, + "Aratu\",SPHEROID[\"International 1924\",6378388,297,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7022\"]],TOWGS84[-151.99,287.04,-147.45"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6208\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4208\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 8, + "meridian\",-45],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"20823\"]]"); + p = add_epsg_def (filter, first, last, 20824, "epsg", 20824, + "Aratu / UTM zone 24S"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +south +ellps=intl +towgs84=-151.99,2"); + add_proj4text (p, 1, + "87.04,-147.45,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Aratu / UTM zone 24S\",GEOGCS[\"Aratu\",DATUM[\""); + add_srs_wkt (p, 1, + "Aratu\",SPHEROID[\"International 1924\",6378388,297,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7022\"]],TOWGS84[-151.99,287.04,-147.45"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6208\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4208\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 8, + "meridian\",-39],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"20824\"]]"); + p = add_epsg_def (filter, first, last, 20934, "epsg", 20934, + "Arc 1950 / UTM zone 34S"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.9663"); + add_proj4text (p, 1, + "98753 +towgs84=-143,-90,-294,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Arc 1950 / UTM zone 34S\",GEOGCS[\"Arc 1950\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Arc_1950\",SPHEROID[\"Clarke 1880 (Arc)\",6378249"); + add_srs_wkt (p, 2, + ".145,293.4663077,AUTHORITY[\"EPSG\",\"7013\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "143,-90,-294,0,0,0,0],AUTHORITY[\"EPSG\",\"6209\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4209\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",21],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"20934\"]]"); + p = add_epsg_def (filter, first, last, 20935, "epsg", 20935, + "Arc 1950 / UTM zone 35S"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.9663"); + add_proj4text (p, 1, + "98753 +towgs84=-143,-90,-294,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Arc 1950 / UTM zone 35S\",GEOGCS[\"Arc 1950\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Arc_1950\",SPHEROID[\"Clarke 1880 (Arc)\",6378249"); + add_srs_wkt (p, 2, + ".145,293.4663077,AUTHORITY[\"EPSG\",\"7013\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "143,-90,-294,0,0,0,0],AUTHORITY[\"EPSG\",\"6209\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4209\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",27],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"20935\"]]"); + p = add_epsg_def (filter, first, last, 20936, "epsg", 20936, + "Arc 1950 / UTM zone 36S"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.9663"); + add_proj4text (p, 1, + "98753 +towgs84=-143,-90,-294,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Arc 1950 / UTM zone 36S\",GEOGCS[\"Arc 1950\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Arc_1950\",SPHEROID[\"Clarke 1880 (Arc)\",6378249"); + add_srs_wkt (p, 2, + ".145,293.4663077,AUTHORITY[\"EPSG\",\"7013\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "143,-90,-294,0,0,0,0],AUTHORITY[\"EPSG\",\"6209\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4209\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",33],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"20936\"]]"); + p = add_epsg_def (filter, first, last, 21035, "epsg", 21035, + "Arc 1960 / UTM zone 35S"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +south +ellps=clrk80 +towgs84=-160,-6"); + add_proj4text (p, 1, + ",-302,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Arc 1960 / UTM zone 35S\",GEOGCS[\"Arc 1960\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Arc_1960\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); + add_srs_wkt (p, 2, + ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-160,"); + add_srs_wkt (p, 3, + "-6,-302,0,0,0,0],AUTHORITY[\"EPSG\",\"6210\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4210\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",27],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"21035\"]]"); + p = add_epsg_def (filter, first, last, 21036, "epsg", 21036, + "Arc 1960 / UTM zone 36S"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +south +ellps=clrk80 +towgs84=-160,-6"); + add_proj4text (p, 1, + ",-302,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Arc 1960 / UTM zone 36S\",GEOGCS[\"Arc 1960\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Arc_1960\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); + add_srs_wkt (p, 2, + ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-160,"); + add_srs_wkt (p, 3, + "-6,-302,0,0,0,0],AUTHORITY[\"EPSG\",\"6210\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4210\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",33],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"21036\"]]"); + p = add_epsg_def (filter, first, last, 21037, "epsg", 21037, + "Arc 1960 / UTM zone 37S"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +south +ellps=clrk80 +towgs84=-160,-6"); + add_proj4text (p, 1, + ",-302,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Arc 1960 / UTM zone 37S\",GEOGCS[\"Arc 1960\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Arc_1960\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); + add_srs_wkt (p, 2, + ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-160,"); + add_srs_wkt (p, 3, + "-6,-302,0,0,0,0],AUTHORITY[\"EPSG\",\"6210\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4210\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",39],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"21037\"]]"); + p = add_epsg_def (filter, first, last, 21095, "epsg", 21095, + "Arc 1960 / UTM zone 35N"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +ellps=clrk80 +towgs84=-160,-6,-302,0"); + add_proj4text (p, 1, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Arc 1960 / UTM zone 35N\",GEOGCS[\"Arc 1960\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Arc_1960\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); + add_srs_wkt (p, 2, + ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-160,"); + add_srs_wkt (p, 3, + "-6,-302,0,0,0,0],AUTHORITY[\"EPSG\",\"6210\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4210\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",27],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"21095\"]]"); + p = add_epsg_def (filter, first, last, 21096, "epsg", 21096, + "Arc 1960 / UTM zone 36N"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +ellps=clrk80 +towgs84=-160,-6,-302,0"); + add_proj4text (p, 1, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Arc 1960 / UTM zone 36N\",GEOGCS[\"Arc 1960\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Arc_1960\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); + add_srs_wkt (p, 2, + ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-160,"); + add_srs_wkt (p, 3, + "-6,-302,0,0,0,0],AUTHORITY[\"EPSG\",\"6210\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4210\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",33],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"21096\"]]"); + p = add_epsg_def (filter, first, last, 21097, "epsg", 21097, + "Arc 1960 / UTM zone 37N"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +ellps=clrk80 +towgs84=-160,-6,-302,0"); + add_proj4text (p, 1, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Arc 1960 / UTM zone 37N\",GEOGCS[\"Arc 1960\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Arc_1960\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); + add_srs_wkt (p, 2, + ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-160,"); + add_srs_wkt (p, 3, + "-6,-302,0,0,0,0],AUTHORITY[\"EPSG\",\"6210\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4210\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",39],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"21097\"]]"); + p = add_epsg_def (filter, first, last, 21100, "epsg", 21100, + "Batavia (Jakarta) / NEIEZ (deprecated)"); + add_proj4text (p, 0, + "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 "); + add_proj4text (p, 1, + "+ellps=bessel +towgs84=-377,681,-50,0,0,0,0 +pm=jakarta "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Batavia (Jakarta) / NEIEZ (deprecated)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Batavia (Jakarta)\",DATUM[\"Batavia_Jakarta\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7004\"]],TOWGS84[-377,681,-50,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6813\"]],PRIMEM[\"Jakarta\",106.8077194444444"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8908\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4813\"]],PROJECTION[\"Mercator_1SP\"],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",110],PARAMETER[\"scale_factor\",0.997]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",3900000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",900000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"21100\"]]"); + p = add_epsg_def (filter, first, last, 21148, "epsg", 21148, + "Batavia / UTM zone 48S"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +south +ellps=bessel +towgs84=-377,68"); + add_proj4text (p, 1, + "1,-50,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Batavia / UTM zone 48S\",GEOGCS[\"Batavia\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Batavia\",SPHEROID[\"Bessel 1841\",6377397.155,299."); + add_srs_wkt (p, 2, + "1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-377,681,-"); + add_srs_wkt (p, 3, + "50,0,0,0,0],AUTHORITY[\"EPSG\",\"6211\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4211\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",105],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"21148\"]]"); + p = add_epsg_def (filter, first, last, 21149, "epsg", 21149, + "Batavia / UTM zone 49S"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +south +ellps=bessel +towgs84=-377,68"); + add_proj4text (p, 1, + "1,-50,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Batavia / UTM zone 49S\",GEOGCS[\"Batavia\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Batavia\",SPHEROID[\"Bessel 1841\",6377397.155,299."); + add_srs_wkt (p, 2, + "1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-377,681,-"); + add_srs_wkt (p, 3, + "50,0,0,0,0],AUTHORITY[\"EPSG\",\"6211\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4211\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",111],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"21149\"]]"); + p = add_epsg_def (filter, first, last, 21150, "epsg", 21150, + "Batavia / UTM zone 50S"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +south +ellps=bessel +towgs84=-377,68"); + add_proj4text (p, 1, + "1,-50,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Batavia / UTM zone 50S\",GEOGCS[\"Batavia\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Batavia\",SPHEROID[\"Bessel 1841\",6377397.155,299."); + add_srs_wkt (p, 2, + "1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-377,681,-"); + add_srs_wkt (p, 3, + "50,0,0,0,0],AUTHORITY[\"EPSG\",\"6211\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4211\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",117],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"21150\"]]"); + p = add_epsg_def (filter, first, last, 21291, "epsg", 21291, + "Barbados 1938 / British West Indies Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-62 +k=0.9995000000000001 +x"); + add_proj4text (p, 1, + "_0=400000 +y_0=0 +ellps=clrk80 +towgs84=31.95,300.99,419"); + add_proj4text (p, 2, + ".19,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Barbados 1938 / British West Indies Grid\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Barbados 1938\",DATUM[\"Barbados_1938\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Clarke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7012\"]],TOWGS84[31.95,300.99,419.19,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6212\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4212"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",-62]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.9995],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",400000],PARAMETER[\"false_northing\",0],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\","); + add_srs_wkt (p, 12, + "EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2129"); + add_srs_wkt (p, 13, + "1\"]]"); + p = add_epsg_def (filter, first, last, 21292, "epsg", 21292, + "Barbados 1938 / Barbados National Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=13.17638888888889 +lon_0=-59.55972222"); + add_proj4text (p, 1, + "222222 +k=0.9999986 +x_0=30000 +y_0=75000 +ellps=clrk80 "); + add_proj4text (p, 2, + "+towgs84=31.95,300.99,419.19,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Barbados 1938 / Barbados National Grid\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Barbados 1938\",DATUM[\"Barbados_1938\",SPHEROID[\"Cl"); + add_srs_wkt (p, 2, + "arke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7012\"]],TOWGS84[31.95,300.99,419.19,0,0,0,0],AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"6212\"]],PRIMEM[\"Greenwich\",0,AUTHORITY["); + add_srs_wkt (p, 5, + "\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4212\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",13.17638888888889],PARAMETER[\"central_m"); + add_srs_wkt (p, 9, + "eridian\",-59.55972222222222],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 10, + ",0.9999986],PARAMETER[\"false_easting\",30000],PARAMETER"); + add_srs_wkt (p, 11, + "[\"false_northing\",75000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 13, + "\",NORTH],AUTHORITY[\"EPSG\",\"21292\"]]"); + p = add_epsg_def (filter, first, last, 21413, "epsg", 21413, + "Beijing 1954 / Gauss-Kruger zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 13\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",75],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",1],PARAMETER[\"false_easting\",13500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21413\"]]"); + p = add_epsg_def (filter, first, last, 21414, "epsg", 21414, + "Beijing 1954 / Gauss-Kruger zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 14\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",81],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",1],PARAMETER[\"false_easting\",14500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21414\"]]"); + p = add_epsg_def (filter, first, last, 21415, "epsg", 21415, + "Beijing 1954 / Gauss-Kruger zone 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 15\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",87],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",1],PARAMETER[\"false_easting\",15500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21415\"]]"); + p = add_epsg_def (filter, first, last, 21416, "epsg", 21416, + "Beijing 1954 / Gauss-Kruger zone 16"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 16\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",93],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",1],PARAMETER[\"false_easting\",16500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21416\"]]"); + p = add_epsg_def (filter, first, last, 21417, "epsg", 21417, + "Beijing 1954 / Gauss-Kruger zone 17"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 17\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",99],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",1],PARAMETER[\"false_easting\",17500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21417\"]]"); + p = add_epsg_def (filter, first, last, 21418, "epsg", 21418, + "Beijing 1954 / Gauss-Kruger zone 18"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 18\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",105],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",18500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21418\"]]"); + p = add_epsg_def (filter, first, last, 21419, "epsg", 21419, + "Beijing 1954 / Gauss-Kruger zone 19"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 19\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",111],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",19500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21419\"]]"); + p = add_epsg_def (filter, first, last, 21420, "epsg", 21420, + "Beijing 1954 / Gauss-Kruger zone 20"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 20\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",117],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",20500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21420\"]]"); + p = add_epsg_def (filter, first, last, 21421, "epsg", 21421, + "Beijing 1954 / Gauss-Kruger zone 21"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 21\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",123],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",21500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21421\"]]"); + p = add_epsg_def (filter, first, last, 21422, "epsg", 21422, + "Beijing 1954 / Gauss-Kruger zone 22"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 22\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",129],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",22500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21422\"]]"); + p = add_epsg_def (filter, first, last, 21423, "epsg", 21423, + "Beijing 1954 / Gauss-Kruger zone 23"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger zone 23\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",135],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",23500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21423\"]]"); + p = add_epsg_def (filter, first, last, 21453, "epsg", 21453, + "Beijing 1954 / Gauss-Kruger CM 75E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 75E\",GEOGCS[\"B"); + add_srs_wkt (p, 1, + "eijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); + add_srs_wkt (p, 4, + "14\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",75],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"21453\"]]"); + p = add_epsg_def (filter, first, last, 21454, "epsg", 21454, + "Beijing 1954 / Gauss-Kruger CM 81E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 81E\",GEOGCS[\"B"); + add_srs_wkt (p, 1, + "eijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); + add_srs_wkt (p, 4, + "14\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",81],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"21454\"]]"); + p = add_epsg_def (filter, first, last, 21455, "epsg", 21455, + "Beijing 1954 / Gauss-Kruger CM 87E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 87E\",GEOGCS[\"B"); + add_srs_wkt (p, 1, + "eijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); + add_srs_wkt (p, 4, + "14\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",87],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"21455\"]]"); + p = add_epsg_def (filter, first, last, 21456, "epsg", 21456, + "Beijing 1954 / Gauss-Kruger CM 93E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 93E\",GEOGCS[\"B"); + add_srs_wkt (p, 1, + "eijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); + add_srs_wkt (p, 4, + "14\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",93],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"21456\"]]"); + p = add_epsg_def (filter, first, last, 21457, "epsg", 21457, + "Beijing 1954 / Gauss-Kruger CM 99E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 99E\",GEOGCS[\"B"); + add_srs_wkt (p, 1, + "eijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); + add_srs_wkt (p, 4, + "14\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",99],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"21457\"]]"); + p = add_epsg_def (filter, first, last, 21458, "epsg", 21458, + "Beijing 1954 / Gauss-Kruger CM 105E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 105E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",105],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21458\"]]"); + p = add_epsg_def (filter, first, last, 21459, "epsg", 21459, + "Beijing 1954 / Gauss-Kruger CM 111E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 111E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",111],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21459\"]]"); + p = add_epsg_def (filter, first, last, 21460, "epsg", 21460, + "Beijing 1954 / Gauss-Kruger CM 117E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 117E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",117],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21460\"]]"); + p = add_epsg_def (filter, first, last, 21461, "epsg", 21461, + "Beijing 1954 / Gauss-Kruger CM 123E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 123E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",123],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21461\"]]"); + p = add_epsg_def (filter, first, last, 21462, "epsg", 21462, + "Beijing 1954 / Gauss-Kruger CM 129E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 129E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",129],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21462\"]]"); + p = add_epsg_def (filter, first, last, 21463, "epsg", 21463, + "Beijing 1954 / Gauss-Kruger CM 135E"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger CM 135E\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",135],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21463\"]]"); + p = add_epsg_def (filter, first, last, 21473, "epsg", 21473, + "Beijing 1954 / Gauss-Kruger 13N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger 13N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",75],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21473\"]]"); + p = add_epsg_def (filter, first, last, 21474, "epsg", 21474, + "Beijing 1954 / Gauss-Kruger 14N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger 14N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",81],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21474\"]]"); + p = add_epsg_def (filter, first, last, 21475, "epsg", 21475, + "Beijing 1954 / Gauss-Kruger 15N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger 15N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",87],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21475\"]]"); + p = add_epsg_def (filter, first, last, 21476, "epsg", 21476, + "Beijing 1954 / Gauss-Kruger 16N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger 16N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",93],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21476\"]]"); + p = add_epsg_def (filter, first, last, 21477, "epsg", 21477, + "Beijing 1954 / Gauss-Kruger 17N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger 17N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",99],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"scale_factor\",1],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21477\"]]"); + p = add_epsg_def (filter, first, last, 21478, "epsg", 21478, + "Beijing 1954 / Gauss-Kruger 18N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger 18N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",105],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21478\"]]"); + p = add_epsg_def (filter, first, last, 21479, "epsg", 21479, + "Beijing 1954 / Gauss-Kruger 19N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger 19N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",111],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21479\"]]"); + p = add_epsg_def (filter, first, last, 21480, "epsg", 21480, + "Beijing 1954 / Gauss-Kruger 20N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger 20N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",117],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21480\"]]"); + p = add_epsg_def (filter, first, last, 21481, "epsg", 21481, + "Beijing 1954 / Gauss-Kruger 21N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger 21N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",123],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21481\"]]"); + p = add_epsg_def (filter, first, last, 21482, "epsg", 21482, + "Beijing 1954 / Gauss-Kruger 22N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger 22N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",129],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21482\"]]"); + p = add_epsg_def (filter, first, last, 21483, "epsg", 21483, + "Beijing 1954 / Gauss-Kruger 23N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=15.8,-154.4,-82.3,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Beijing 1954 / Gauss-Kruger 23N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Beijing 1954\",DATUM[\"Beijing_1954\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[15.8,-154.4,-82.3,0,0,0,0],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6214\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4214\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",0],PARAMETER[\"central_meridian\",135],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",1],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"21483\"]]"); + p = add_epsg_def (filter, first, last, 21500, "epsg", 21500, + "Belge 1950 (Brussels) / Belge Lambert 50"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666"); + add_proj4text (p, 1, + "666 +lat_0=90 +lon_0=0 +x_0=150000 +y_0=5400000 +ellps=i"); + add_proj4text (p, 2, + "ntl +pm=brussels +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Belge 1950 (Brussels) / Belge Lambert 50\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Belge 1950 (Brussels)\",DATUM[\"Reseau_National_Bel"); + add_srs_wkt (p, 2, + "ge_1950_Brussels\",SPHEROID[\"International 1924\",63783"); + add_srs_wkt (p, 3, + "88,297,AUTHORITY[\"EPSG\",\"7022\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6809\"]],PRIMEM[\"Brussels\",4.367975,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8910\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4809\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"sta"); + add_srs_wkt (p, 8, + "ndard_parallel_1\",49.83333333333334],PARAMETER[\"standa"); + add_srs_wkt (p, 9, + "rd_parallel_2\",51.16666666666666],PARAMETER[\"latitude_"); + add_srs_wkt (p, 10, + "of_origin\",90],PARAMETER[\"central_meridian\",0],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",150000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 12, + "\",5400000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"21500\"]]"); + p = add_epsg_def (filter, first, last, 21780, "epsg", 21780, + "Bern 1898 (Bern) / LV03C"); + add_proj4text (p, 0, + "+proj=somerc +lat_0=46.95240555555556 +lon_0=0 +k_0=1 +x"); + add_proj4text (p, 1, + "_0=0 +y_0=0 +ellps=bessel +towgs84=674.4,15.1,405.3,0,0,"); + add_proj4text (p, 2, + "0,0 +pm=bern +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Bern 1898 (Bern) / LV03C\",GEOGCS[\"Bern 1898 ("); + add_srs_wkt (p, 1, + "Bern)\",DATUM[\"CH1903_Bern\",SPHEROID[\"Bessel 1841\",6"); + add_srs_wkt (p, 2, + "377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[674.4,15.1,405.3,0,0,0,0],AUTHORITY[\"EPSG\",\"6801"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Bern\",7.439583333333333,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8907\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4801\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Hotine_Oblique_Mercator_Azimuth_Center\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_center\",46.95240555555556],PARAMETER["); + add_srs_wkt (p, 9, + "\"longitude_of_center\",0],PARAMETER[\"azimuth\",90],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"rectified_grid_angle\",90],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 11, + "ctor\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 13, + "001\"]],AXIS[\"Y\",EAST],AXIS[\"X\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 14, + "PSG\",\"21780\"]]"); + p = add_epsg_def (filter, first, last, 21781, "epsg", 21781, + "CH1903 / LV03"); + add_proj4text (p, 0, + "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333"); + add_proj4text (p, 1, + "333333 +k_0=1 +x_0=600000 +y_0=200000 +ellps=bessel +tow"); + add_proj4text (p, 2, + "gs84=674.4,15.1,405.3,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CH1903 / LV03\",GEOGCS[\"CH1903\",DATUM[\"CH190"); + add_srs_wkt (p, 1, + "3\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7004\"]],TOWGS84[674.4,15.1,405.3,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6149\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4149\"]],PROJECTION[\"Hotine_Oblique_Mercator_Azim"); + add_srs_wkt (p, 7, + "uth_Center\"],PARAMETER[\"latitude_of_center\",46.952405"); + add_srs_wkt (p, 8, + "55555556],PARAMETER[\"longitude_of_center\",7.4395833333"); + add_srs_wkt (p, 9, + "33333],PARAMETER[\"azimuth\",90],PARAMETER[\"rectified_g"); + add_srs_wkt (p, 10, + "rid_angle\",90],PARAMETER[\"scale_factor\",1],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",600000],PARAMETER[\"false_northing\",2"); + add_srs_wkt (p, 12, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",EAST],AXIS[\"X\",NORTH],AUTHORITY[\"EPSG\",\"21"); + add_srs_wkt (p, 14, + "781\"]]"); + p = add_epsg_def (filter, first, last, 21782, "epsg", 21782, + "CH1903 / LV03C-G"); + add_proj4text (p, 0, + "+proj=somerc +lat_0=46.95240555555556 +lon_0=7.439583333"); + add_proj4text (p, 1, + "333333 +k_0=1 +x_0=0 +y_0=0 +ellps=bessel +towgs84=674.4"); + add_proj4text (p, 2, + ",15.1,405.3,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"CH1903 / LV03C-G\",GEOGCS[\"CH1903\",DATUM[\"CH"); + add_srs_wkt (p, 1, + "1903\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[674.4,15.1,405.3,0"); + add_srs_wkt (p, 3, + ",0,0,0],AUTHORITY[\"EPSG\",\"6149\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4149\"]],PROJECTION[\"Hotine_Oblique_Mercator_A"); + add_srs_wkt (p, 7, + "zimuth_Center\"],PARAMETER[\"latitude_of_center\",46.952"); + add_srs_wkt (p, 8, + "40555555556],PARAMETER[\"longitude_of_center\",7.4395833"); + add_srs_wkt (p, 9, + "33333333],PARAMETER[\"azimuth\",90],PARAMETER[\"rectifie"); + add_srs_wkt (p, 10, + "d_grid_angle\",90],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 12, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"X\",NORTH],AUTHORITY[\"EPSG\",\"21782\"]]"); + p = add_epsg_def (filter, first, last, 21817, "epsg", 21817, + "Bogota 1975 / UTM zone 17N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=intl +towgs84=307,304,-318,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Bogota 1975 / UTM zone 17N (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"Bogota 1975\",DATUM[\"Bogota_1975\",SPHEROID[\"Inter"); + add_srs_wkt (p, 2, + "national 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\",\"621"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4218\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-81],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"21817\"]]"); + p = add_epsg_def (filter, first, last, 21818, "epsg", 21818, + "Bogota 1975 / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=intl +towgs84=307,304,-318,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Bogota 1975 / UTM zone 18N\",GEOGCS[\"Bogota 19"); + add_srs_wkt (p, 1, + "75\",DATUM[\"Bogota_1975\",SPHEROID[\"International 1924"); + add_srs_wkt (p, 2, + "\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[307"); + add_srs_wkt (p, 3, + ",304,-318,0,0,0,0],AUTHORITY[\"EPSG\",\"6218\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4218\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-75],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"21818\"]]"); + p = add_epsg_def (filter, first, last, 21891, "epsg", 21891, + "Bogota 1975 / Colombia West zone (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); + add_proj4text (p, 2, + "84=307,304,-318,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Bogota 1975 / Colombia West zone (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"Bogota 1975\",DATUM[\"Bogota_1975\",SPHEROID[\""); + add_srs_wkt (p, 2, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "22\"]],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6218\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4218\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",4.599047222222222],PARAMETER[\"central_meridian\",-7"); + add_srs_wkt (p, 9, + "7.08091666666667],PARAMETER[\"scale_factor\",1],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",1000000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "21891\"]]"); + p = add_epsg_def (filter, first, last, 21892, "epsg", 21892, + "Bogota 1975 / Colombia Bogota zone (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); + add_proj4text (p, 2, + "84=307,304,-318,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Bogota 1975 / Colombia Bogota zone (deprecated)"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Bogota 1975\",DATUM[\"Bogota_1975\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7022\"]],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6218\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4218\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",4.599047222222222],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "74.08091666666667],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",1000000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"21892\"]]"); + p = add_epsg_def (filter, first, last, 21893, "epsg", 21893, + "Bogota 1975 / Colombia East Central zone (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); + add_proj4text (p, 2, + "84=307,304,-318,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Bogota 1975 / Colombia East Central zone (depre"); + add_srs_wkt (p, 1, + "cated)\",GEOGCS[\"Bogota 1975\",DATUM[\"Bogota_1975\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"International 1924\",6378388,297,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7022\"]],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6218\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4218\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",4.599047222222222],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",-71.08091666666667],PARAMETER[\"scale_factor\",1]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_easting\",1000000],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",1000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"21893\"]]"); + p = add_epsg_def (filter, first, last, 21894, "epsg", 21894, + "Bogota 1975 / Colombia East (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); + add_proj4text (p, 2, + "84=307,304,-318,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Bogota 1975 / Colombia East (deprecated)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Bogota 1975\",DATUM[\"Bogota_1975\",SPHEROID[\"Inte"); + add_srs_wkt (p, 2, + "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 3, + "]],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); + add_srs_wkt (p, 4, + "18\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4218\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",4"); + add_srs_wkt (p, 8, + ".599047222222222],PARAMETER[\"central_meridian\",-68.080"); + add_srs_wkt (p, 9, + "91666666667],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",1000000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 11, + "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); + add_srs_wkt (p, 12, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"218"); + add_srs_wkt (p, 13, + "94\"]]"); + p = add_epsg_def (filter, first, last, 21896, "epsg", 21896, + "Bogota 1975 / Colombia West zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-77.08091666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); + add_proj4text (p, 2, + "84=307,304,-318,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Bogota 1975 / Colombia West zone\",GEOGCS[\"Bog"); + add_srs_wkt (p, 1, + "ota 1975\",DATUM[\"Bogota_1975\",SPHEROID[\"Internationa"); + add_srs_wkt (p, 2, + "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\",\"6218\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4218\"]],PROJECTION[\"Transver"); + add_srs_wkt (p, 7, + "se_Mercator\"],PARAMETER[\"latitude_of_origin\",4.599047"); + add_srs_wkt (p, 8, + "222222222],PARAMETER[\"central_meridian\",-77.0809166666"); + add_srs_wkt (p, 9, + "6667],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",1000000],PARAMETER[\"false_northing\",1000000],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"21896\"]]"); + p = add_epsg_def (filter, first, last, 21897, "epsg", 21897, + "Bogota 1975 / Colombia Bogota zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-74.08091666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); + add_proj4text (p, 2, + "84=307,304,-318,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Bogota 1975 / Colombia Bogota zone\",GEOGCS[\"B"); + add_srs_wkt (p, 1, + "ogota 1975\",DATUM[\"Bogota_1975\",SPHEROID[\"Internatio"); + add_srs_wkt (p, 2, + "nal 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\",\"6218\"]]"); + add_srs_wkt (p, 4, + ",PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UN"); + add_srs_wkt (p, 5, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 6, + "22\"]],AUTHORITY[\"EPSG\",\"4218\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 7, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",4.5990"); + add_srs_wkt (p, 8, + "47222222222],PARAMETER[\"central_meridian\",-74.08091666"); + add_srs_wkt (p, 9, + "666667],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",1000000],PARAMETER[\"false_northing\",1000000]"); + add_srs_wkt (p, 11, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"21897\"]]"); + p = add_epsg_def (filter, first, last, 21898, "epsg", 21898, + "Bogota 1975 / Colombia East Central zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-71.08091666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); + add_proj4text (p, 2, + "84=307,304,-318,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Bogota 1975 / Colombia East Central zone\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Bogota 1975\",DATUM[\"Bogota_1975\",SPHEROID[\"Inte"); + add_srs_wkt (p, 2, + "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 3, + "]],TOWGS84[307,304,-318,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); + add_srs_wkt (p, 4, + "18\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4218\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",4"); + add_srs_wkt (p, 8, + ".599047222222222],PARAMETER[\"central_meridian\",-71.080"); + add_srs_wkt (p, 9, + "91666666667],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",1000000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 11, + "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"21898\"]]"); + p = add_epsg_def (filter, first, last, 21899, "epsg", 21899, + "Bogota 1975 / Colombia East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4.599047222222222 +lon_0=-68.08091666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=1000000 +y_0=1000000 +ellps=intl +towgs"); + add_proj4text (p, 2, + "84=307,304,-318,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Bogota 1975 / Colombia East\",GEOGCS[\"Bogota 1"); + add_srs_wkt (p, 1, + "975\",DATUM[\"Bogota_1975\",SPHEROID[\"International 192"); + add_srs_wkt (p, 2, + "4\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[30"); + add_srs_wkt (p, 3, + "7,304,-318,0,0,0,0],AUTHORITY[\"EPSG\",\"6218\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4218\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",4.59904722222"); + add_srs_wkt (p, 8, + "2222],PARAMETER[\"central_meridian\",-68.08091666666667]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",1000000],PARAMETER[\"false_northing\",1000000],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"21899\"]]"); + p = add_epsg_def (filter, first, last, 22032, "epsg", 22032, + "Camacupa / UTM zone 32S"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +south +ellps=clrk80 +towgs84=-50.9,-"); + add_proj4text (p, 1, + "347.6,-231,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Camacupa / UTM zone 32S\",GEOGCS[\"Camacupa\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Camacupa\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); + add_srs_wkt (p, 2, + ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-50.9"); + add_srs_wkt (p, 3, + ",-347.6,-231,0,0,0,0],AUTHORITY[\"EPSG\",\"6220\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4220\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",9],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"22032\"]]"); + p = add_epsg_def (filter, first, last, 22033, "epsg", 22033, + "Camacupa / UTM zone 33S"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +south +ellps=clrk80 +towgs84=-50.9,-"); + add_proj4text (p, 1, + "347.6,-231,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Camacupa / UTM zone 33S\",GEOGCS[\"Camacupa\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Camacupa\",SPHEROID[\"Clarke 1880 (RGS)\",6378249"); + add_srs_wkt (p, 2, + ".145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-50.9"); + add_srs_wkt (p, 3, + ",-347.6,-231,0,0,0,0],AUTHORITY[\"EPSG\",\"6220\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4220\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",15],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"22033\"]]"); + p = add_epsg_def (filter, first, last, 22091, "epsg", 22091, + "Camacupa / TM 11.30 SE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=11.5 +k=0.9996 +x_0=500000 +"); + add_proj4text (p, 1, + "y_0=10000000 +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,"); + add_proj4text (p, 2, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Camacupa / TM 11.30 SE\",GEOGCS[\"Camacupa\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Camacupa\",SPHEROID[\"Clarke 1880 (RGS)\",6378249."); + add_srs_wkt (p, 2, + "145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-50.9,"); + add_srs_wkt (p, 3, + "-347.6,-231,0,0,0,0],AUTHORITY[\"EPSG\",\"6220\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4220\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",11.5],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"22091\"]]"); + p = add_epsg_def (filter, first, last, 22092, "epsg", 22092, + "Camacupa / TM 12 SE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +ellps=clrk80 +towgs84=-50.9,-347.6,-231,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Camacupa / TM 12 SE\",GEOGCS[\"Camacupa\",DATUM"); + add_srs_wkt (p, 1, + "[\"Camacupa\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145"); + add_srs_wkt (p, 2, + ",293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-50.9,-34"); + add_srs_wkt (p, 3, + "7.6,-231,0,0,0,0],AUTHORITY[\"EPSG\",\"6220\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4220\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",12],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"22092\"]]"); + p = add_epsg_def (filter, first, last, 22171, "epsg", 22171, + "POSGAR 98 / Argentina 1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 98 / Argentina 1\",GEOGCS[\"POSGAR 98\","); + add_srs_wkt (p, 1, + "DATUM[\"Posiciones_Geodesicas_Argentinas_1998\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"619"); + add_srs_wkt (p, 4, + "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4190\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); + add_srs_wkt (p, 8, + "90],PARAMETER[\"central_meridian\",-72],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",1500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"22171\"]]"); + p = add_epsg_def (filter, first, last, 22172, "epsg", 22172, + "POSGAR 98 / Argentina 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 98 / Argentina 2\",GEOGCS[\"POSGAR 98\","); + add_srs_wkt (p, 1, + "DATUM[\"Posiciones_Geodesicas_Argentinas_1998\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"619"); + add_srs_wkt (p, 4, + "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4190\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); + add_srs_wkt (p, 8, + "90],PARAMETER[\"central_meridian\",-69],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",2500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"22172\"]]"); + p = add_epsg_def (filter, first, last, 22173, "epsg", 22173, + "POSGAR 98 / Argentina 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 98 / Argentina 3\",GEOGCS[\"POSGAR 98\","); + add_srs_wkt (p, 1, + "DATUM[\"Posiciones_Geodesicas_Argentinas_1998\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"619"); + add_srs_wkt (p, 4, + "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4190\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); + add_srs_wkt (p, 8, + "90],PARAMETER[\"central_meridian\",-66],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",3500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"22173\"]]"); + p = add_epsg_def (filter, first, last, 22174, "epsg", 22174, + "POSGAR 98 / Argentina 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 98 / Argentina 4\",GEOGCS[\"POSGAR 98\","); + add_srs_wkt (p, 1, + "DATUM[\"Posiciones_Geodesicas_Argentinas_1998\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"619"); + add_srs_wkt (p, 4, + "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4190\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); + add_srs_wkt (p, 8, + "90],PARAMETER[\"central_meridian\",-63],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",4500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"22174\"]]"); + p = add_epsg_def (filter, first, last, 22175, "epsg", 22175, + "POSGAR 98 / Argentina 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 98 / Argentina 5\",GEOGCS[\"POSGAR 98\","); + add_srs_wkt (p, 1, + "DATUM[\"Posiciones_Geodesicas_Argentinas_1998\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"619"); + add_srs_wkt (p, 4, + "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4190\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); + add_srs_wkt (p, 8, + "90],PARAMETER[\"central_meridian\",-60],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",5500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"22175\"]]"); + p = add_epsg_def (filter, first, last, 22176, "epsg", 22176, + "POSGAR 98 / Argentina 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 98 / Argentina 6\",GEOGCS[\"POSGAR 98\","); + add_srs_wkt (p, 1, + "DATUM[\"Posiciones_Geodesicas_Argentinas_1998\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"619"); + add_srs_wkt (p, 4, + "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4190\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); + add_srs_wkt (p, 8, + "90],PARAMETER[\"central_meridian\",-57],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",6500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"22176\"]]"); + p = add_epsg_def (filter, first, last, 22177, "epsg", 22177, + "POSGAR 98 / Argentina 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 98 / Argentina 7\",GEOGCS[\"POSGAR 98\","); + add_srs_wkt (p, 1, + "DATUM[\"Posiciones_Geodesicas_Argentinas_1998\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"619"); + add_srs_wkt (p, 4, + "0\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4190\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-"); + add_srs_wkt (p, 8, + "90],PARAMETER[\"central_meridian\",-54],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",7500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"22177\"]]"); + p = add_epsg_def (filter, first, last, 22181, "epsg", 22181, + "POSGAR 94 / Argentina 1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 94 / Argentina 1\",GEOGCS[\"POSGAR 94\","); + add_srs_wkt (p, 1, + "DATUM[\"Posiciones_Geodesicas_Argentinas_1994\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6694"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4694\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-9"); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",-72],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",1500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"22181\"]]"); + p = add_epsg_def (filter, first, last, 22182, "epsg", 22182, + "POSGAR 94 / Argentina 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 94 / Argentina 2\",GEOGCS[\"POSGAR 94\","); + add_srs_wkt (p, 1, + "DATUM[\"Posiciones_Geodesicas_Argentinas_1994\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6694"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4694\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-9"); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",-69],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",2500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"22182\"]]"); + p = add_epsg_def (filter, first, last, 22183, "epsg", 22183, + "POSGAR 94 / Argentina 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 94 / Argentina 3\",GEOGCS[\"POSGAR 94\","); + add_srs_wkt (p, 1, + "DATUM[\"Posiciones_Geodesicas_Argentinas_1994\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6694"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4694\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-9"); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",-66],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",3500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"22183\"]]"); + p = add_epsg_def (filter, first, last, 22184, "epsg", 22184, + "POSGAR 94 / Argentina 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 94 / Argentina 4\",GEOGCS[\"POSGAR 94\","); + add_srs_wkt (p, 1, + "DATUM[\"Posiciones_Geodesicas_Argentinas_1994\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6694"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4694\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-9"); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",-63],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",4500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"22184\"]]"); + p = add_epsg_def (filter, first, last, 22185, "epsg", 22185, + "POSGAR 94 / Argentina 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 94 / Argentina 5\",GEOGCS[\"POSGAR 94\","); + add_srs_wkt (p, 1, + "DATUM[\"Posiciones_Geodesicas_Argentinas_1994\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6694"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4694\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-9"); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",-60],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",5500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"22185\"]]"); + p = add_epsg_def (filter, first, last, 22186, "epsg", 22186, + "POSGAR 94 / Argentina 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 94 / Argentina 6\",GEOGCS[\"POSGAR 94\","); + add_srs_wkt (p, 1, + "DATUM[\"Posiciones_Geodesicas_Argentinas_1994\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6694"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4694\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-9"); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",-57],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",6500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"22186\"]]"); + p = add_epsg_def (filter, first, last, 22187, "epsg", 22187, + "POSGAR 94 / Argentina 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"POSGAR 94 / Argentina 7\",GEOGCS[\"POSGAR 94\","); + add_srs_wkt (p, 1, + "DATUM[\"Posiciones_Geodesicas_Argentinas_1994\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"WGS 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "030\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6694"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4694\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-9"); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",-54],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",1],PARAMETER[\"false_easting\",7500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"22187\"]]"); + p = add_epsg_def (filter, first, last, 22191, "epsg", 22191, + "Campo Inchauspe / Argentina 1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-72 +k=1 +x_0=1500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Campo Inchauspe / Argentina 1\",GEOGCS[\"Campo "); + add_srs_wkt (p, 1, + "Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-72],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",1500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AUTHORITY[\"EPSG\",\"22191\"]]"); + p = add_epsg_def (filter, first, last, 22192, "epsg", 22192, + "Campo Inchauspe / Argentina 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-69 +k=1 +x_0=2500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Campo Inchauspe / Argentina 2\",GEOGCS[\"Campo "); + add_srs_wkt (p, 1, + "Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",2500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AUTHORITY[\"EPSG\",\"22192\"]]"); + p = add_epsg_def (filter, first, last, 22193, "epsg", 22193, + "Campo Inchauspe / Argentina 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-66 +k=1 +x_0=3500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Campo Inchauspe / Argentina 3\",GEOGCS[\"Campo "); + add_srs_wkt (p, 1, + "Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-66],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",3500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AUTHORITY[\"EPSG\",\"22193\"]]"); + p = add_epsg_def (filter, first, last, 22194, "epsg", 22194, + "Campo Inchauspe / Argentina 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-63 +k=1 +x_0=4500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Campo Inchauspe / Argentina 4\",GEOGCS[\"Campo "); + add_srs_wkt (p, 1, + "Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",4500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AUTHORITY[\"EPSG\",\"22194\"]]"); + p = add_epsg_def (filter, first, last, 22195, "epsg", 22195, + "Campo Inchauspe / Argentina 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-60 +k=1 +x_0=5500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Campo Inchauspe / Argentina 5\",GEOGCS[\"Campo "); + add_srs_wkt (p, 1, + "Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-60],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",5500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AUTHORITY[\"EPSG\",\"22195\"]]"); + p = add_epsg_def (filter, first, last, 22196, "epsg", 22196, + "Campo Inchauspe / Argentina 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-57 +k=1 +x_0=6500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Campo Inchauspe / Argentina 6\",GEOGCS[\"Campo "); + add_srs_wkt (p, 1, + "Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",6500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AUTHORITY[\"EPSG\",\"22196\"]]"); + p = add_epsg_def (filter, first, last, 22197, "epsg", 22197, + "Campo Inchauspe / Argentina 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-90 +lon_0=-54 +k=1 +x_0=7500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=intl +towgs84=-148,136,90,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Campo Inchauspe / Argentina 7\",GEOGCS[\"Campo "); + add_srs_wkt (p, 1, + "Inchauspe\",DATUM[\"Campo_Inchauspe\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[-148,136,90,0,0,0,0],AUTHORITY[\"EPSG\",\"6221\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4221\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",-90]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-54],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",1],PARAMETER[\"false_easting\",7500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AUTHORITY[\"EPSG\",\"22197\"]]"); + p = add_epsg_def (filter, first, last, 22234, "epsg", 22234, + "Cape / UTM zone 34S"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +south +a=6378249.145 +b=6356514.9663"); + add_proj4text (p, 1, + "98753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cape / UTM zone 34S\",GEOGCS[\"Cape\",DATUM[\"C"); + add_srs_wkt (p, 1, + "ape\",SPHEROID[\"Clarke 1880 (Arc)\",6378249.145,293.466"); + add_srs_wkt (p, 2, + "3077,AUTHORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-29"); + add_srs_wkt (p, 3, + "2,0,0,0,0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4222\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 7, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",21],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"22234\"]]"); + p = add_epsg_def (filter, first, last, 22235, "epsg", 22235, + "Cape / UTM zone 35S"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +south +a=6378249.145 +b=6356514.9663"); + add_proj4text (p, 1, + "98753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cape / UTM zone 35S\",GEOGCS[\"Cape\",DATUM[\"C"); + add_srs_wkt (p, 1, + "ape\",SPHEROID[\"Clarke 1880 (Arc)\",6378249.145,293.466"); + add_srs_wkt (p, 2, + "3077,AUTHORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-29"); + add_srs_wkt (p, 3, + "2,0,0,0,0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4222\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 7, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",27],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"22235\"]]"); + p = add_epsg_def (filter, first, last, 22236, "epsg", 22236, + "Cape / UTM zone 36S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +south +a=6378249.145 +b=6356514.9663"); + add_proj4text (p, 1, + "98753 +towgs84=-136,-108,-292,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cape / UTM zone 36S (deprecated)\",GEOGCS[\"Cap"); + add_srs_wkt (p, 1, + "e\",DATUM[\"Cape\",SPHEROID[\"Clarke 1880 (Arc)\",637824"); + add_srs_wkt (p, 2, + "9.145,293.4663077,AUTHORITY[\"EPSG\",\"7013\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-136,-108,-292,0,0,0,0],AUTHORITY[\"EPSG\",\"6222\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4222\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",33],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"22236\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_34.c b/src/spatialite/src/srsinit/epsg_inlined_34.c new file mode 100644 index 0000000..acf6211 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_34.c @@ -0,0 +1,3388 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_34 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 22275, "epsg", 22275, + "Cape / Lo15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); + add_proj4text (p, 2, + "08,-292,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cape / Lo15\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); + add_srs_wkt (p, 7, + "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",15],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22275"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 22277, "epsg", 22277, + "Cape / Lo17"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=17 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); + add_proj4text (p, 2, + "08,-292,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cape / Lo17\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); + add_srs_wkt (p, 7, + "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",17],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22277"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 22279, "epsg", 22279, + "Cape / Lo19"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=19 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); + add_proj4text (p, 2, + "08,-292,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cape / Lo19\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); + add_srs_wkt (p, 7, + "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",19],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22279"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 22281, "epsg", 22281, + "Cape / Lo21"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); + add_proj4text (p, 2, + "08,-292,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cape / Lo21\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); + add_srs_wkt (p, 7, + "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",21],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22281"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 22283, "epsg", 22283, + "Cape / Lo23"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=23 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); + add_proj4text (p, 2, + "08,-292,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cape / Lo23\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); + add_srs_wkt (p, 7, + "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",23],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22283"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 22285, "epsg", 22285, + "Cape / Lo25"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=25 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); + add_proj4text (p, 2, + "08,-292,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cape / Lo25\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); + add_srs_wkt (p, 7, + "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",25],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22285"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 22287, "epsg", 22287, + "Cape / Lo27"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); + add_proj4text (p, 2, + "08,-292,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cape / Lo27\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); + add_srs_wkt (p, 7, + "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",27],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22287"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 22289, "epsg", 22289, + "Cape / Lo29"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=29 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); + add_proj4text (p, 2, + "08,-292,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cape / Lo29\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); + add_srs_wkt (p, 7, + "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",29],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22289"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 22291, "epsg", 22291, + "Cape / Lo31"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); + add_proj4text (p, 2, + "08,-292,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cape / Lo31\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); + add_srs_wkt (p, 7, + "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",31],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22291"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 22293, "epsg", 22293, + "Cape / Lo33"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=0 +y_0=0 +axis="); + add_proj4text (p, 1, + "wsu +a=6378249.145 +b=6356514.966398753 +towgs84=-136,-1"); + add_proj4text (p, 2, + "08,-292,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Cape / Lo33\",GEOGCS[\"Cape\",DATUM[\"Cape\",SP"); + add_srs_wkt (p, 1, + "HEROID[\"Clarke 1880 (Arc)\",6378249.145,293.4663077,AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"7013\"]],TOWGS84[-136,-108,-292,0,0,0,"); + add_srs_wkt (p, 3, + "0],AUTHORITY[\"EPSG\",\"6222\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4222\"]],PROJECTION[\"Transverse_Mercator_South_Orien"); + add_srs_wkt (p, 7, + "tated\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",33],PARAMETER[\"scale_factor\",1],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"22293"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 22332, "epsg", 22332, + "Carthage / UTM zone 32N"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +datum=carthage +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Carthage / UTM zone 32N\",GEOGCS[\"Carthage\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Carthage\",SPHEROID[\"Clarke 1880 (IGN)\",6378249"); + add_srs_wkt (p, 2, + ".2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[-263,6,431,0,0,0,0],AUTHORITY[\"EPSG\",\"6223\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4223\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",9],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"22332\"]]"); + p = add_epsg_def (filter, first, last, 22391, "epsg", 22391, + "Carthage / Nord Tunisie"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=9.9 +k_0=0.99962554"); + add_proj4text (p, 1, + "4 +x_0=500000 +y_0=300000 +datum=carthage +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Carthage / Nord Tunisie\",GEOGCS[\"Carthage\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Carthage\",SPHEROID[\"Clarke 1880 (IGN)\",6378249"); + add_srs_wkt (p, 2, + ".2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[-263,6,431,0,0,0,0],AUTHORITY[\"EPSG\",\"6223\"]],PRI"); + add_srs_wkt (p, 4, + "MEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4223\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",36]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",9.9],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.999625544],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",300000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"22391\"]]"); + p = add_epsg_def (filter, first, last, 22392, "epsg", 22392, + "Carthage / Sud Tunisie"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=9.9 +k_0=0.9996"); + add_proj4text (p, 1, + "25769 +x_0=500000 +y_0=300000 +datum=carthage +units=m +"); + add_proj4text (p, 2, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Carthage / Sud Tunisie\",GEOGCS[\"Carthage\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Carthage\",SPHEROID[\"Clarke 1880 (IGN)\",6378249."); + add_srs_wkt (p, 2, + "2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[-263,6,431,0,0,0,0],AUTHORITY[\"EPSG\",\"6223\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4223\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",33."); + add_srs_wkt (p, 8, + "3],PARAMETER[\"central_meridian\",9.9],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.999625769],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",300000],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"22392\"]]"); + p = add_epsg_def (filter, first, last, 22521, "epsg", 22521, + "Corrego Alegre 1970-72 / UTM zone 21S"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +south +ellps=intl +towgs84=-206,172,"); + add_proj4text (p, 1, + "-6,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Corrego Alegre 1970-72 / UTM zone 21S\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Corrego Alegre 1970-72\",DATUM[\"Corrego_Alegre_1970_7"); + add_srs_wkt (p, 2, + "2\",SPHEROID[\"International 1924\",6378388,297,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7022\"]],TOWGS84[-206,172,-6,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6225\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4225"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",-57]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 12, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"22521\"]]"); + p = add_epsg_def (filter, first, last, 22522, "epsg", 22522, + "Corrego Alegre 1970-72 / UTM zone 22S"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +south +ellps=intl +towgs84=-206,172,"); + add_proj4text (p, 1, + "-6,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Corrego Alegre 1970-72 / UTM zone 22S\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Corrego Alegre 1970-72\",DATUM[\"Corrego_Alegre_1970_7"); + add_srs_wkt (p, 2, + "2\",SPHEROID[\"International 1924\",6378388,297,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7022\"]],TOWGS84[-206,172,-6,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6225\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4225"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",-51]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 12, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"22522\"]]"); + p = add_epsg_def (filter, first, last, 22523, "epsg", 22523, + "Corrego Alegre 1970-72 / UTM zone 23S"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +south +ellps=intl +towgs84=-206,172,"); + add_proj4text (p, 1, + "-6,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Corrego Alegre 1970-72 / UTM zone 23S\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Corrego Alegre 1970-72\",DATUM[\"Corrego_Alegre_1970_7"); + add_srs_wkt (p, 2, + "2\",SPHEROID[\"International 1924\",6378388,297,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7022\"]],TOWGS84[-206,172,-6,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6225\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4225"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",-45]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 12, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"22523\"]]"); + p = add_epsg_def (filter, first, last, 22524, "epsg", 22524, + "Corrego Alegre 1970-72 / UTM zone 24S"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +south +ellps=intl +towgs84=-206,172,"); + add_proj4text (p, 1, + "-6,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Corrego Alegre 1970-72 / UTM zone 24S\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Corrego Alegre 1970-72\",DATUM[\"Corrego_Alegre_1970_7"); + add_srs_wkt (p, 2, + "2\",SPHEROID[\"International 1924\",6378388,297,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7022\"]],TOWGS84[-206,172,-6,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6225\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4225"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",-39]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 12, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"22524\"]]"); + p = add_epsg_def (filter, first, last, 22525, "epsg", 22525, + "Corrego Alegre 1970-72 / UTM zone 25S"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +south +ellps=intl +towgs84=-206,172,"); + add_proj4text (p, 1, + "-6,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Corrego Alegre 1970-72 / UTM zone 25S\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Corrego Alegre 1970-72\",DATUM[\"Corrego_Alegre_1970_7"); + add_srs_wkt (p, 2, + "2\",SPHEROID[\"International 1924\",6378388,297,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7022\"]],TOWGS84[-206,172,-6,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6225\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4225"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",-33]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 12, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"22525\"]]"); + p = add_epsg_def (filter, first, last, 22700, "epsg", 22700, + "Deir ez Zor / Levant Zone"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0."); + add_proj4text (p, 1, + "9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 "); + add_proj4text (p, 2, + "+towgs84=-190.421,8.532,238.69,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Deir ez Zor / Levant Zone\",GEOGCS[\"Deir ez Zo"); + add_srs_wkt (p, 1, + "r\",DATUM[\"Deir_ez_Zor\",SPHEROID[\"Clarke 1880 (IGN)\""); + add_srs_wkt (p, 2, + ",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-190.421,8.532,238.69,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 4, + "SG\",\"6227\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4227\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",34.65],PARAMETER[\"central_meridian\",37"); + add_srs_wkt (p, 9, + ".35],PARAMETER[\"scale_factor\",0.9996256],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",300000],PARAMETER[\"false_northing\",3000"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"22700"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 22770, "epsg", 22770, + "Deir ez Zor / Syria Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.65 +lat_0=34.65 +lon_0=37.35 +k_0=0."); + add_proj4text (p, 1, + "9996256 +x_0=300000 +y_0=300000 +a=6378249.2 +b=6356515 "); + add_proj4text (p, 2, + "+towgs84=-190.421,8.532,238.69,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Deir ez Zor / Syria Lambert\",GEOGCS[\"Deir ez "); + add_srs_wkt (p, 1, + "Zor\",DATUM[\"Deir_ez_Zor\",SPHEROID[\"Clarke 1880 (IGN)"); + add_srs_wkt (p, 2, + "\",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[-190.421,8.532,238.69,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6227\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4227\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",34.65],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",37.35],PARAMETER[\"scale_factor\",0.9996256],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",300000],PARAMETER[\"false_northing\",3"); + add_srs_wkt (p, 11, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"22"); + add_srs_wkt (p, 13, + "770\"]]"); + p = add_epsg_def (filter, first, last, 22780, "epsg", 22780, + "Deir ez Zor / Levant Stereographic"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=34.2 +lon_0=39.15 +k=0.9995341 +x_0="); + add_proj4text (p, 1, + "0 +y_0=0 +a=6378249.2 +b=6356515 +towgs84=-190.421,8.532"); + add_proj4text (p, 2, + ",238.69,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Deir ez Zor / Levant Stereographic\",GEOGCS[\"D"); + add_srs_wkt (p, 1, + "eir ez Zor\",DATUM[\"Deir_ez_Zor\",SPHEROID[\"Clarke 188"); + add_srs_wkt (p, 2, + "0 (IGN)\",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7011\"]],TOWGS84[-190.421,8.532,238.69,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6227\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4227"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",34.2],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",39.15],PARAMETER[\"scale_factor\",0.9995341],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"22780\"]]"); + p = add_epsg_def (filter, first, last, 22832, "epsg", 22832, + "Douala / UTM zone 32N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +units=m +no_"); + add_proj4text (p, 1, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Douala / UTM zone 32N (deprecated)\",GEOGCS[\"D"); + add_srs_wkt (p, 1, + "ouala\",DATUM[\"Douala\",SPHEROID[\"Clarke 1880 (IGN)\","); + add_srs_wkt (p, 2, + "6378249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6228\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4228\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "22832\"]]"); + p = add_epsg_def (filter, first, last, 22991, "epsg", 22991, + "Egypt 1907 / Blue Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=35 +k=1 +x_0=300000 +y_0=11"); + add_proj4text (p, 1, + "00000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Egypt 1907 / Blue Belt\",GEOGCS[\"Egypt 1907\","); + add_srs_wkt (p, 1, + "DATUM[\"Egypt_1907\",SPHEROID[\"Helmert 1906\",6378200,2"); + add_srs_wkt (p, 2, + "98.3,AUTHORITY[\"EPSG\",\"7020\"]],TOWGS84[-130,110,-13,"); + add_srs_wkt (p, 3, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6229\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4229\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",30],PARAMETER[\"central_m"); + add_srs_wkt (p, 8, + "eridian\",35],PARAMETER[\"scale_factor\",1],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",300000],PARAMETER[\"false_northing\",110"); + add_srs_wkt (p, 10, + "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); + add_srs_wkt (p, 11, + "S[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"22991\"]]"); + p = add_epsg_def (filter, first, last, 22992, "epsg", 22992, + "Egypt 1907 / Red Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=31 +k=1 +x_0=615000 +y_0=81"); + add_proj4text (p, 1, + "0000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Egypt 1907 / Red Belt\",GEOGCS[\"Egypt 1907\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Egypt_1907\",SPHEROID[\"Helmert 1906\",6378200,29"); + add_srs_wkt (p, 2, + "8.3,AUTHORITY[\"EPSG\",\"7020\"]],TOWGS84[-130,110,-13,0"); + add_srs_wkt (p, 3, + ",0,0,0],AUTHORITY[\"EPSG\",\"6229\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4229\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",30],PARAMETER[\"central_m"); + add_srs_wkt (p, 8, + "eridian\",31],PARAMETER[\"scale_factor\",1],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",615000],PARAMETER[\"false_northing\",810"); + add_srs_wkt (p, 10, + "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); + add_srs_wkt (p, 11, + "[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"22992\"]]"); + p = add_epsg_def (filter, first, last, 22993, "epsg", 22993, + "Egypt 1907 / Purple Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=20"); + add_proj4text (p, 1, + "0000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Egypt 1907 / Purple Belt\",GEOGCS[\"Egypt 1907\""); + add_srs_wkt (p, 1, + ",DATUM[\"Egypt_1907\",SPHEROID[\"Helmert 1906\",6378200,"); + add_srs_wkt (p, 2, + "298.3,AUTHORITY[\"EPSG\",\"7020\"]],TOWGS84[-130,110,-13"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6229\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4229\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"latitude_of_origin\",30],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",27],PARAMETER[\"scale_factor\",1],PARAMETER["); + add_srs_wkt (p, 9, + "\"false_easting\",700000],PARAMETER[\"false_northing\",2"); + add_srs_wkt (p, 10, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 11, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"22993\"]]"); + p = add_epsg_def (filter, first, last, 22994, "epsg", 22994, + "Egypt 1907 / Extended Purple Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=27 +k=1 +x_0=700000 +y_0=12"); + add_proj4text (p, 1, + "00000 +ellps=helmert +towgs84=-130,110,-13,0,0,0,0 +unit"); + add_proj4text (p, 2, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Egypt 1907 / Extended Purple Belt\",GEOGCS[\"Eg"); + add_srs_wkt (p, 1, + "ypt 1907\",DATUM[\"Egypt_1907\",SPHEROID[\"Helmert 1906\""); + add_srs_wkt (p, 2, + ",6378200,298.3,AUTHORITY[\"EPSG\",\"7020\"]],TOWGS84[-13"); + add_srs_wkt (p, 3, + "0,110,-13,0,0,0,0],AUTHORITY[\"EPSG\",\"6229\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4229\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",30],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",27],PARAMETER[\"scale_factor\",1],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",700000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",1200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"22994\"]]"); + p = add_epsg_def (filter, first, last, 23028, "epsg", 23028, + "ED50 / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=intl +towgs84=-87,-98,-121,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / UTM zone 28N\",GEOGCS[\"ED50\",DATUM[\"E"); + add_srs_wkt (p, 1, + "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); + add_srs_wkt (p, 2, + "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); + add_srs_wkt (p, 3, + "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-15],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"23028\"]]"); + p = add_epsg_def (filter, first, last, 23029, "epsg", 23029, + "ED50 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=intl +towgs84=-87,-98,-121,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / UTM zone 29N\",GEOGCS[\"ED50\",DATUM[\"E"); + add_srs_wkt (p, 1, + "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); + add_srs_wkt (p, 2, + "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); + add_srs_wkt (p, 3, + "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-9],PARAMETER[\"scale_factor\",0.9996],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"23029\"]]"); + p = add_epsg_def (filter, first, last, 23030, "epsg", 23030, + "ED50 / UTM zone 30N"); + add_proj4text (p, 0, + "+proj=utm +zone=30 +ellps=intl +towgs84=-87,-98,-121,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / UTM zone 30N\",GEOGCS[\"ED50\",DATUM[\"E"); + add_srs_wkt (p, 1, + "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); + add_srs_wkt (p, 2, + "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); + add_srs_wkt (p, 3, + "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-3],PARAMETER[\"scale_factor\",0.9996],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"23030\"]]"); + p = add_epsg_def (filter, first, last, 23031, "epsg", 23031, + "ED50 / UTM zone 31N"); + add_proj4text (p, 0, + "+proj=utm +zone=31 +ellps=intl +towgs84=-87,-98,-121,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / UTM zone 31N\",GEOGCS[\"ED50\",DATUM[\"E"); + add_srs_wkt (p, 1, + "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); + add_srs_wkt (p, 2, + "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); + add_srs_wkt (p, 3, + "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",3],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 11, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"23031\"]]"); + p = add_epsg_def (filter, first, last, 23032, "epsg", 23032, + "ED50 / UTM zone 32N"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +ellps=intl +towgs84=-87,-98,-121,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / UTM zone 32N\",GEOGCS[\"ED50\",DATUM[\"E"); + add_srs_wkt (p, 1, + "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); + add_srs_wkt (p, 2, + "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); + add_srs_wkt (p, 3, + "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",9],PARAMETER[\"scale_factor\",0.9996],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_easting\",500000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 10, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 11, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"23032\"]]"); + p = add_epsg_def (filter, first, last, 23033, "epsg", 23033, + "ED50 / UTM zone 33N"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +ellps=intl +towgs84=-87,-98,-121,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / UTM zone 33N\",GEOGCS[\"ED50\",DATUM[\"E"); + add_srs_wkt (p, 1, + "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); + add_srs_wkt (p, 2, + "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); + add_srs_wkt (p, 3, + "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",15],PARAMETER[\"scale_factor\",0.9996],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"23033\"]]"); + p = add_epsg_def (filter, first, last, 23034, "epsg", 23034, + "ED50 / UTM zone 34N"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +ellps=intl +towgs84=-87,-98,-121,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / UTM zone 34N\",GEOGCS[\"ED50\",DATUM[\"E"); + add_srs_wkt (p, 1, + "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); + add_srs_wkt (p, 2, + "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); + add_srs_wkt (p, 3, + "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",21],PARAMETER[\"scale_factor\",0.9996],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"23034\"]]"); + p = add_epsg_def (filter, first, last, 23035, "epsg", 23035, + "ED50 / UTM zone 35N"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +ellps=intl +towgs84=-87,-98,-121,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / UTM zone 35N\",GEOGCS[\"ED50\",DATUM[\"E"); + add_srs_wkt (p, 1, + "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); + add_srs_wkt (p, 2, + "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); + add_srs_wkt (p, 3, + "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",27],PARAMETER[\"scale_factor\",0.9996],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"23035\"]]"); + p = add_epsg_def (filter, first, last, 23036, "epsg", 23036, + "ED50 / UTM zone 36N"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +ellps=intl +towgs84=-87,-98,-121,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / UTM zone 36N\",GEOGCS[\"ED50\",DATUM[\"E"); + add_srs_wkt (p, 1, + "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); + add_srs_wkt (p, 2, + "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); + add_srs_wkt (p, 3, + "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",33],PARAMETER[\"scale_factor\",0.9996],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"23036\"]]"); + p = add_epsg_def (filter, first, last, 23037, "epsg", 23037, + "ED50 / UTM zone 37N"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +ellps=intl +towgs84=-87,-98,-121,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / UTM zone 37N\",GEOGCS[\"ED50\",DATUM[\"E"); + add_srs_wkt (p, 1, + "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); + add_srs_wkt (p, 2, + "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); + add_srs_wkt (p, 3, + "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",39],PARAMETER[\"scale_factor\",0.9996],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"23037\"]]"); + p = add_epsg_def (filter, first, last, 23038, "epsg", 23038, + "ED50 / UTM zone 38N"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +ellps=intl +towgs84=-87,-98,-121,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / UTM zone 38N\",GEOGCS[\"ED50\",DATUM[\"E"); + add_srs_wkt (p, 1, + "uropean_Datum_1950\",SPHEROID[\"International 1924\",637"); + add_srs_wkt (p, 2, + "8388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-"); + add_srs_wkt (p, 3, + "121,0,0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",45],PARAMETER[\"scale_factor\",0.9996],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"23038\"]]"); + p = add_epsg_def (filter, first, last, 23090, "epsg", 23090, + "ED50 / TM 0 N"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=0 +k=0.9996 +x_0=500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +n"); + add_proj4text (p, 2, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / TM 0 N\",GEOGCS[\"ED50\",DATUM[\"Europea"); + add_srs_wkt (p, 1, + "n_Datum_1950\",SPHEROID[\"International 1924\",6378388,2"); + add_srs_wkt (p, 2, + "97,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0,"); + add_srs_wkt (p, 3, + "0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); + add_srs_wkt (p, 8, + "dian\",0],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 11, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"23090\"]]"); + p = add_epsg_def (filter, first, last, 23095, "epsg", 23095, + "ED50 / TM 5 NE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=5 +k=0.9996 +x_0=500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=intl +towgs84=-87,-98,-121,0,0,0,0 +units=m +n"); + add_proj4text (p, 2, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ED50 / TM 5 NE\",GEOGCS[\"ED50\",DATUM[\"Europe"); + add_srs_wkt (p, 1, + "an_Datum_1950\",SPHEROID[\"International 1924\",6378388,"); + add_srs_wkt (p, 2, + "297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-87,-98,-121,0"); + add_srs_wkt (p, 3, + ",0,0,0],AUTHORITY[\"EPSG\",\"6230\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4230\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_me"); + add_srs_wkt (p, 8, + "ridian\",5],PARAMETER[\"scale_factor\",0.9996],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_easting\",500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"23095\"]]"); + p = add_epsg_def (filter, first, last, 23239, "epsg", 23239, + "Fahud / UTM zone 39N"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=clrk80 +towgs84=-346,-1,224,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Fahud / UTM zone 39N\",GEOGCS[\"Fahud\",DATUM[\""); + add_srs_wkt (p, 1, + "Fahud\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.4"); + add_srs_wkt (p, 2, + "65,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-346,-1,224,0,0"); + add_srs_wkt (p, 3, + ",0,0],AUTHORITY[\"EPSG\",\"6232\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4232\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); + add_srs_wkt (p, 8, + "dian\",51],PARAMETER[\"scale_factor\",0.9996],PARAMETER["); + add_srs_wkt (p, 9, + "\"false_easting\",500000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"23239\"]]"); + p = add_epsg_def (filter, first, last, 23240, "epsg", 23240, + "Fahud / UTM zone 40N"); + add_proj4text (p, 0, + "+proj=utm +zone=40 +ellps=clrk80 +towgs84=-346,-1,224,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Fahud / UTM zone 40N\",GEOGCS[\"Fahud\",DATUM[\""); + add_srs_wkt (p, 1, + "Fahud\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.4"); + add_srs_wkt (p, 2, + "65,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-346,-1,224,0,0"); + add_srs_wkt (p, 3, + ",0,0],AUTHORITY[\"EPSG\",\"6232\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4232\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); + add_srs_wkt (p, 8, + "dian\",57],PARAMETER[\"scale_factor\",0.9996],PARAMETER["); + add_srs_wkt (p, 9, + "\"false_easting\",500000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"23240\"]]"); + p = add_epsg_def (filter, first, last, 23433, "epsg", 23433, + "Garoua / UTM zone 33N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +a=6378249.2 +b=6356515 +units=m +no_"); + add_proj4text (p, 1, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Garoua / UTM zone 33N (deprecated)\",GEOGCS[\"G"); + add_srs_wkt (p, 1, + "aroua\",DATUM[\"Garoua\",SPHEROID[\"Clarke 1880 (IGN)\","); + add_srs_wkt (p, 2, + "6378249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6234\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4234\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 11, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"23433\"]]"); + p = add_epsg_def (filter, first, last, 23700, "epsg", 23700, + "HD72 / EOV"); + add_proj4text (p, 0, + "+proj=somerc +lat_0=47.14439372222222 +lon_0=19.04857177"); + add_proj4text (p, 1, + "777778 +k_0=0.99993 +x_0=650000 +y_0=200000 +ellps=GRS67"); + add_proj4text (p, 2, + " +towgs84=52.17,-71.82,-14.9,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"HD72 / EOV\",GEOGCS[\"HD72\",DATUM[\"Hungarian_"); + add_srs_wkt (p, 1, + "Datum_1972\",SPHEROID[\"GRS 1967\",6378160,298.247167427"); + add_srs_wkt (p, 2, + ",AUTHORITY[\"EPSG\",\"7036\"]],TOWGS84[52.17,-71.82,-14."); + add_srs_wkt (p, 3, + "9,0,0,0,0],AUTHORITY[\"EPSG\",\"6237\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4237\"]],PROJECTION[\"Hotine_Oblique_Mercato"); + add_srs_wkt (p, 7, + "r_Azimuth_Center\"],PARAMETER[\"latitude_of_center\",47."); + add_srs_wkt (p, 8, + "14439372222222],PARAMETER[\"longitude_of_center\",19.048"); + add_srs_wkt (p, 9, + "57177777778],PARAMETER[\"azimuth\",90],PARAMETER[\"recti"); + add_srs_wkt (p, 10, + "fied_grid_angle\",90],PARAMETER[\"scale_factor\",0.99993"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_easting\",650000],PARAMETER[\"false_"); + add_srs_wkt (p, 12, + "northing\",200000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9001\"]],AXIS[\"Y\",EAST],AXIS[\"X\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"23700\"]]"); + p = add_epsg_def (filter, first, last, 23830, "epsg", 23830, + "DGN95 / Indonesia TM-3 zone 46.2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=94.5 +k=0.9999 +x_0=200000 +"); + add_proj4text (p, 1, + "y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 46.2\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",94.5],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.9999],PARAMETER[\"false_easting\",200000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"23830\"]]"); + p = add_epsg_def (filter, first, last, 23831, "epsg", 23831, + "DGN95 / Indonesia TM-3 zone 47.1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=97.5 +k=0.9999 +x_0=200000 +"); + add_proj4text (p, 1, + "y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 47.1\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",97.5],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.9999],PARAMETER[\"false_easting\",200000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"23831\"]]"); + p = add_epsg_def (filter, first, last, 23832, "epsg", 23832, + "DGN95 / Indonesia TM-3 zone 47.2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=100.5 +k=0.9999 +x_0=200000 "); + add_proj4text (p, 1, + "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 47.2\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",100.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"23832\"]]"); + p = add_epsg_def (filter, first, last, 23833, "epsg", 23833, + "DGN95 / Indonesia TM-3 zone 48.1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=103.5 +k=0.9999 +x_0=200000 "); + add_proj4text (p, 1, + "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 48.1\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",103.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"23833\"]]"); + p = add_epsg_def (filter, first, last, 23834, "epsg", 23834, + "DGN95 / Indonesia TM-3 zone 48.2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=106.5 +k=0.9999 +x_0=200000 "); + add_proj4text (p, 1, + "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 48.2\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",106.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"23834\"]]"); + p = add_epsg_def (filter, first, last, 23835, "epsg", 23835, + "DGN95 / Indonesia TM-3 zone 49.1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=109.5 +k=0.9999 +x_0=200000 "); + add_proj4text (p, 1, + "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 49.1\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",109.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"23835\"]]"); + p = add_epsg_def (filter, first, last, 23836, "epsg", 23836, + "DGN95 / Indonesia TM-3 zone 49.2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=112.5 +k=0.9999 +x_0=200000 "); + add_proj4text (p, 1, + "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 49.2\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",112.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"23836\"]]"); + p = add_epsg_def (filter, first, last, 23837, "epsg", 23837, + "DGN95 / Indonesia TM-3 zone 50.1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=115.5 +k=0.9999 +x_0=200000 "); + add_proj4text (p, 1, + "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 50.1\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",115.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"23837\"]]"); + p = add_epsg_def (filter, first, last, 23838, "epsg", 23838, + "DGN95 / Indonesia TM-3 zone 50.2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=118.5 +k=0.9999 +x_0=200000 "); + add_proj4text (p, 1, + "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 50.2\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",118.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"23838\"]]"); + p = add_epsg_def (filter, first, last, 23839, "epsg", 23839, + "DGN95 / Indonesia TM-3 zone 51.1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=121.5 +k=0.9999 +x_0=200000 "); + add_proj4text (p, 1, + "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 51.1\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",121.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"23839\"]]"); + p = add_epsg_def (filter, first, last, 23840, "epsg", 23840, + "DGN95 / Indonesia TM-3 zone 51.2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=124.5 +k=0.9999 +x_0=200000 "); + add_proj4text (p, 1, + "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 51.2\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",124.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"23840\"]]"); + p = add_epsg_def (filter, first, last, 23841, "epsg", 23841, + "DGN95 / Indonesia TM-3 zone 52.1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=127.5 +k=0.9999 +x_0=200000 "); + add_proj4text (p, 1, + "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 52.1\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",127.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"23841\"]]"); + p = add_epsg_def (filter, first, last, 23842, "epsg", 23842, + "DGN95 / Indonesia TM-3 zone 52.2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=130.5 +k=0.9999 +x_0=200000 "); + add_proj4text (p, 1, + "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 52.2\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",130.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"23842\"]]"); + p = add_epsg_def (filter, first, last, 23843, "epsg", 23843, + "DGN95 / Indonesia TM-3 zone 53.1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=133.5 +k=0.9999 +x_0=200000 "); + add_proj4text (p, 1, + "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 53.1\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",133.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"23843\"]]"); + p = add_epsg_def (filter, first, last, 23844, "epsg", 23844, + "DGN95 / Indonesia TM-3 zone 53.2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=136.5 +k=0.9999 +x_0=200000 "); + add_proj4text (p, 1, + "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 53.2\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",136.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"23844\"]]"); + p = add_epsg_def (filter, first, last, 23845, "epsg", 23845, + "DGN95 / Indonesia TM-3 zone 54.1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=139.5 +k=0.9999 +x_0=200000 "); + add_proj4text (p, 1, + "+y_0=1500000 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / Indonesia TM-3 zone 54.1\",GEOGCS[\"DGN"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Datum_Geodesi_Nasional_1995\",SPHEROID[\"WG"); + add_srs_wkt (p, 2, + "S 84\",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4755\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",139.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",1500000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"23845\"]]"); + p = add_epsg_def (filter, first, last, 23846, "epsg", 23846, + "ID74 / UTM zone 46N"); + add_proj4text (p, 0, + "+proj=utm +zone=46 +a=6378160 +b=6356774.50408554 +towgs"); + add_proj4text (p, 1, + "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 46N\",GEOGCS[\"ID74\",DATUM[\"I"); + add_srs_wkt (p, 1, + "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); + add_srs_wkt (p, 2, + "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",93],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"23846\"]]"); + p = add_epsg_def (filter, first, last, 23847, "epsg", 23847, + "ID74 / UTM zone 47N"); + add_proj4text (p, 0, + "+proj=utm +zone=47 +a=6378160 +b=6356774.50408554 +towgs"); + add_proj4text (p, 1, + "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 47N\",GEOGCS[\"ID74\",DATUM[\"I"); + add_srs_wkt (p, 1, + "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); + add_srs_wkt (p, 2, + "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",99],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"23847\"]]"); + p = add_epsg_def (filter, first, last, 23848, "epsg", 23848, + "ID74 / UTM zone 48N"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +a=6378160 +b=6356774.50408554 +towgs"); + add_proj4text (p, 1, + "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 48N\",GEOGCS[\"ID74\",DATUM[\"I"); + add_srs_wkt (p, 1, + "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); + add_srs_wkt (p, 2, + "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",105],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"23848\"]]"); + p = add_epsg_def (filter, first, last, 23849, "epsg", 23849, + "ID74 / UTM zone 49N"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +a=6378160 +b=6356774.50408554 +towgs"); + add_proj4text (p, 1, + "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 49N\",GEOGCS[\"ID74\",DATUM[\"I"); + add_srs_wkt (p, 1, + "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); + add_srs_wkt (p, 2, + "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",111],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"23849\"]]"); + p = add_epsg_def (filter, first, last, 23850, "epsg", 23850, + "ID74 / UTM zone 50N"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +a=6378160 +b=6356774.50408554 +towgs"); + add_proj4text (p, 1, + "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 50N\",GEOGCS[\"ID74\",DATUM[\"I"); + add_srs_wkt (p, 1, + "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); + add_srs_wkt (p, 2, + "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",117],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"23850\"]]"); + p = add_epsg_def (filter, first, last, 23851, "epsg", 23851, + "ID74 / UTM zone 51N"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +a=6378160 +b=6356774.50408554 +towgs"); + add_proj4text (p, 1, + "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 51N\",GEOGCS[\"ID74\",DATUM[\"I"); + add_srs_wkt (p, 1, + "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); + add_srs_wkt (p, 2, + "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",123],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"23851\"]]"); + p = add_epsg_def (filter, first, last, 23852, "epsg", 23852, + "ID74 / UTM zone 52N"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +a=6378160 +b=6356774.50408554 +towgs"); + add_proj4text (p, 1, + "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 52N\",GEOGCS[\"ID74\",DATUM[\"I"); + add_srs_wkt (p, 1, + "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); + add_srs_wkt (p, 2, + "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",129],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 11, + "\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",N"); + add_srs_wkt (p, 12, + "ORTH],AUTHORITY[\"EPSG\",\"23852\"]]"); + p = add_epsg_def (filter, first, last, 23853, "epsg", 23853, + "ID74 / UTM zone 53N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=53 +a=6378160 +b=6356774.50408554 +towgs"); + add_proj4text (p, 1, + "84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 53N (deprecated)\",GEOGCS[\"ID7"); + add_srs_wkt (p, 1, + "4\",DATUM[\"Indonesian_Datum_1974\",SPHEROID[\"Indonesia"); + add_srs_wkt (p, 2, + "n National Spheroid\",6378160,298.247,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7021\"]],TOWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6238\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",135],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"23853\"]]"); + p = add_epsg_def (filter, first, last, 23866, "epsg", 23866, + "DGN95 / UTM zone 46N"); + add_proj4text (p, 0, + "+proj=utm +zone=46 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / UTM zone 46N\",GEOGCS[\"DGN95\",DATUM[\""); + add_srs_wkt (p, 1, + "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",93],PARAMETER[\"scale_factor\",0.9996],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"23866\"]]"); + p = add_epsg_def (filter, first, last, 23867, "epsg", 23867, + "DGN95 / UTM zone 47N"); + add_proj4text (p, 0, + "+proj=utm +zone=47 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / UTM zone 47N\",GEOGCS[\"DGN95\",DATUM[\""); + add_srs_wkt (p, 1, + "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",99],PARAMETER[\"scale_factor\",0.9996],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"23867\"]]"); + p = add_epsg_def (filter, first, last, 23868, "epsg", 23868, + "DGN95 / UTM zone 48N"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / UTM zone 48N\",GEOGCS[\"DGN95\",DATUM[\""); + add_srs_wkt (p, 1, + "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",105],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"23868\"]]"); + p = add_epsg_def (filter, first, last, 23869, "epsg", 23869, + "DGN95 / UTM zone 49N"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / UTM zone 49N\",GEOGCS[\"DGN95\",DATUM[\""); + add_srs_wkt (p, 1, + "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",111],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"23869\"]]"); + p = add_epsg_def (filter, first, last, 23870, "epsg", 23870, + "DGN95 / UTM zone 50N"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / UTM zone 50N\",GEOGCS[\"DGN95\",DATUM[\""); + add_srs_wkt (p, 1, + "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",117],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"23870\"]]"); + p = add_epsg_def (filter, first, last, 23871, "epsg", 23871, + "DGN95 / UTM zone 51N"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / UTM zone 51N\",GEOGCS[\"DGN95\",DATUM[\""); + add_srs_wkt (p, 1, + "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",123],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"23871\"]]"); + p = add_epsg_def (filter, first, last, 23872, "epsg", 23872, + "DGN95 / UTM zone 52N"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +ellps=WGS84 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / UTM zone 52N\",GEOGCS[\"DGN95\",DATUM[\""); + add_srs_wkt (p, 1, + "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",129],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"23872\"]]"); + p = add_epsg_def (filter, first, last, 23877, "epsg", 23877, + "DGN95 / UTM zone 47S"); + add_proj4text (p, 0, + "+proj=utm +zone=47 +south +ellps=WGS84 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / UTM zone 47S\",GEOGCS[\"DGN95\",DATUM[\""); + add_srs_wkt (p, 1, + "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",99],PARAMETER[\"scale_factor\",0.9996],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"23877\"]]"); + p = add_epsg_def (filter, first, last, 23878, "epsg", 23878, + "DGN95 / UTM zone 48S"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +south +ellps=WGS84 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / UTM zone 48S\",GEOGCS[\"DGN95\",DATUM[\""); + add_srs_wkt (p, 1, + "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",105],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"23878\"]]"); + p = add_epsg_def (filter, first, last, 23879, "epsg", 23879, + "DGN95 / UTM zone 49S"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +south +ellps=WGS84 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / UTM zone 49S\",GEOGCS[\"DGN95\",DATUM[\""); + add_srs_wkt (p, 1, + "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",111],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"23879\"]]"); + p = add_epsg_def (filter, first, last, 23880, "epsg", 23880, + "DGN95 / UTM zone 50S"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +south +ellps=WGS84 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / UTM zone 50S\",GEOGCS[\"DGN95\",DATUM[\""); + add_srs_wkt (p, 1, + "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",117],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"23880\"]]"); + p = add_epsg_def (filter, first, last, 23881, "epsg", 23881, + "DGN95 / UTM zone 51S"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +south +ellps=WGS84 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / UTM zone 51S\",GEOGCS[\"DGN95\",DATUM[\""); + add_srs_wkt (p, 1, + "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",123],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"23881\"]]"); + p = add_epsg_def (filter, first, last, 23882, "epsg", 23882, + "DGN95 / UTM zone 52S"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +south +ellps=WGS84 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / UTM zone 52S\",GEOGCS[\"DGN95\",DATUM[\""); + add_srs_wkt (p, 1, + "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",129],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"23882\"]]"); + p = add_epsg_def (filter, first, last, 23883, "epsg", 23883, + "DGN95 / UTM zone 53S"); + add_proj4text (p, 0, + "+proj=utm +zone=53 +south +ellps=WGS84 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / UTM zone 53S\",GEOGCS[\"DGN95\",DATUM[\""); + add_srs_wkt (p, 1, + "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",135],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"23883\"]]"); + p = add_epsg_def (filter, first, last, 23884, "epsg", 23884, + "DGN95 / UTM zone 54S"); + add_proj4text (p, 0, + "+proj=utm +zone=54 +south +ellps=WGS84 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DGN95 / UTM zone 54S\",GEOGCS[\"DGN95\",DATUM[\""); + add_srs_wkt (p, 1, + "Datum_Geodesi_Nasional_1995\",SPHEROID[\"WGS 84\",637813"); + add_srs_wkt (p, 2, + "7,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6755\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4755\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",141],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 11, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"23884\"]]"); + p = add_epsg_def (filter, first, last, 23886, "epsg", 23886, + "ID74 / UTM zone 46S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=46 +south +a=6378160 +b=6356774.50408554"); + add_proj4text (p, 1, + " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 46S (deprecated)\",GEOGCS[\"ID7"); + add_srs_wkt (p, 1, + "4\",DATUM[\"Indonesian_Datum_1974\",SPHEROID[\"Indonesia"); + add_srs_wkt (p, 2, + "n National Spheroid\",6378160,298.247,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7021\"]],TOWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6238\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",93],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",10000000],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); + add_srs_wkt (p, 12, + "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"23886\"]]"); + p = add_epsg_def (filter, first, last, 23887, "epsg", 23887, + "ID74 / UTM zone 47S"); + add_proj4text (p, 0, + "+proj=utm +zone=47 +south +a=6378160 +b=6356774.50408554"); + add_proj4text (p, 1, + " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 47S\",GEOGCS[\"ID74\",DATUM[\"I"); + add_srs_wkt (p, 1, + "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); + add_srs_wkt (p, 2, + "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",99],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"23887\"]]"); + p = add_epsg_def (filter, first, last, 23888, "epsg", 23888, + "ID74 / UTM zone 48S"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +south +a=6378160 +b=6356774.50408554"); + add_proj4text (p, 1, + " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 48S\",GEOGCS[\"ID74\",DATUM[\"I"); + add_srs_wkt (p, 1, + "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); + add_srs_wkt (p, 2, + "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",105],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"23888\"]]"); + p = add_epsg_def (filter, first, last, 23889, "epsg", 23889, + "ID74 / UTM zone 49S"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +south +a=6378160 +b=6356774.50408554"); + add_proj4text (p, 1, + " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 49S\",GEOGCS[\"ID74\",DATUM[\"I"); + add_srs_wkt (p, 1, + "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); + add_srs_wkt (p, 2, + "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",111],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"23889\"]]"); + p = add_epsg_def (filter, first, last, 23890, "epsg", 23890, + "ID74 / UTM zone 50S"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +south +a=6378160 +b=6356774.50408554"); + add_proj4text (p, 1, + " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 50S\",GEOGCS[\"ID74\",DATUM[\"I"); + add_srs_wkt (p, 1, + "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); + add_srs_wkt (p, 2, + "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",117],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"23890\"]]"); + p = add_epsg_def (filter, first, last, 23891, "epsg", 23891, + "ID74 / UTM zone 51S"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +south +a=6378160 +b=6356774.50408554"); + add_proj4text (p, 1, + " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 51S\",GEOGCS[\"ID74\",DATUM[\"I"); + add_srs_wkt (p, 1, + "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); + add_srs_wkt (p, 2, + "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",123],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"23891\"]]"); + p = add_epsg_def (filter, first, last, 23892, "epsg", 23892, + "ID74 / UTM zone 52S"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +south +a=6378160 +b=6356774.50408554"); + add_proj4text (p, 1, + " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 52S\",GEOGCS[\"ID74\",DATUM[\"I"); + add_srs_wkt (p, 1, + "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); + add_srs_wkt (p, 2, + "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",129],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"23892\"]]"); + p = add_epsg_def (filter, first, last, 23893, "epsg", 23893, + "ID74 / UTM zone 53S"); + add_proj4text (p, 0, + "+proj=utm +zone=53 +south +a=6378160 +b=6356774.50408554"); + add_proj4text (p, 1, + " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 53S\",GEOGCS[\"ID74\",DATUM[\"I"); + add_srs_wkt (p, 1, + "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); + add_srs_wkt (p, 2, + "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",135],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"23893\"]]"); + p = add_epsg_def (filter, first, last, 23894, "epsg", 23894, + "ID74 / UTM zone 54S"); + add_proj4text (p, 0, + "+proj=utm +zone=54 +south +a=6378160 +b=6356774.50408554"); + add_proj4text (p, 1, + " +towgs84=-24,-15,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ID74 / UTM zone 54S\",GEOGCS[\"ID74\",DATUM[\"I"); + add_srs_wkt (p, 1, + "ndonesian_Datum_1974\",SPHEROID[\"Indonesian National Sp"); + add_srs_wkt (p, 2, + "heroid\",6378160,298.247,AUTHORITY[\"EPSG\",\"7021\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-24,-15,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6238\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4238\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",141],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER"); + add_srs_wkt (p, 10, + "[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"23894\"]]"); + p = add_epsg_def (filter, first, last, 23946, "epsg", 23946, + "Indian 1954 / UTM zone 46N"); + add_proj4text (p, 0, + "+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +t"); + add_proj4text (p, 1, + "owgs84=217,823,299,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Indian 1954 / UTM zone 46N\",GEOGCS[\"Indian 19"); + add_srs_wkt (p, 1, + "54\",DATUM[\"Indian_1954\",SPHEROID[\"Everest 1830 (1937"); + add_srs_wkt (p, 2, + " Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7015\"]],TOWGS84[217,823,299,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6239\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4239\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",93],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"23946\"]]"); + p = add_epsg_def (filter, first, last, 23947, "epsg", 23947, + "Indian 1954 / UTM zone 47N"); + add_proj4text (p, 0, + "+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +t"); + add_proj4text (p, 1, + "owgs84=217,823,299,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Indian 1954 / UTM zone 47N\",GEOGCS[\"Indian 19"); + add_srs_wkt (p, 1, + "54\",DATUM[\"Indian_1954\",SPHEROID[\"Everest 1830 (1937"); + add_srs_wkt (p, 2, + " Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7015\"]],TOWGS84[217,823,299,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6239\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4239\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",99],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"23947\"]]"); + p = add_epsg_def (filter, first, last, 23948, "epsg", 23948, + "Indian 1954 / UTM zone 48N"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +t"); + add_proj4text (p, 1, + "owgs84=217,823,299,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Indian 1954 / UTM zone 48N\",GEOGCS[\"Indian 19"); + add_srs_wkt (p, 1, + "54\",DATUM[\"Indian_1954\",SPHEROID[\"Everest 1830 (1937"); + add_srs_wkt (p, 2, + " Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7015\"]],TOWGS84[217,823,299,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6239\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4239\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",105],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"23948\"]]"); + p = add_epsg_def (filter, first, last, 24047, "epsg", 24047, + "Indian 1975 / UTM zone 47N"); + add_proj4text (p, 0, + "+proj=utm +zone=47 +a=6377276.345 +b=6356075.41314024 +t"); + add_proj4text (p, 1, + "owgs84=210,814,289,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Indian 1975 / UTM zone 47N\",GEOGCS[\"Indian 19"); + add_srs_wkt (p, 1, + "75\",DATUM[\"Indian_1975\",SPHEROID[\"Everest 1830 (1937"); + add_srs_wkt (p, 2, + " Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7015\"]],TOWGS84[210,814,289,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6240\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4240\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",99],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9996],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"24047\"]]"); + p = add_epsg_def (filter, first, last, 24048, "epsg", 24048, + "Indian 1975 / UTM zone 48N"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +a=6377276.345 +b=6356075.41314024 +t"); + add_proj4text (p, 1, + "owgs84=210,814,289,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Indian 1975 / UTM zone 48N\",GEOGCS[\"Indian 19"); + add_srs_wkt (p, 1, + "75\",DATUM[\"Indian_1975\",SPHEROID[\"Everest 1830 (1937"); + add_srs_wkt (p, 2, + " Adjustment)\",6377276.345,300.8017,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7015\"]],TOWGS84[210,814,289,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6240\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4240\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",105],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"24048\"]]"); + p = add_epsg_def (filter, first, last, 24100, "epsg", 24100, + "Jamaica 1875 / Jamaica (Old Grid)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=167"); + add_proj4text (p, 1, + "638.49597 +y_0=121918.90616 +a=6378249.144808011 +b=6356"); + add_proj4text (p, 2, + "514.966204134 +to_meter=0.3047972654 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Jamaica 1875 / Jamaica (Old Grid)\",GEOGCS[\"Ja"); + add_srs_wkt (p, 1, + "maica 1875\",DATUM[\"Jamaica_1875\",SPHEROID[\"Clarke 18"); + add_srs_wkt (p, 2, + "80\",6378249.144808011,293.4663076556349,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7034\"]],AUTHORITY[\"EPSG\",\"6241\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4241\"]],PROJECTION[\"Lambert_Conformal_C"); + add_srs_wkt (p, 7, + "onic_1SP\"],PARAMETER[\"latitude_of_origin\",18],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-77],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "1],PARAMETER[\"false_easting\",550000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",400000],UNIT[\"Clarke's foot\",0.3047972654,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9005\"]],AXIS[\"Easting\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24100\"]]"); + p = add_epsg_def (filter, first, last, 24200, "epsg", 24200, + "JAD69 / Jamaica National Grid"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=18 +lat_0=18 +lon_0=-77 +k_0=1 +x_0=250"); + add_proj4text (p, 1, + "000 +y_0=150000 +ellps=clrk66 +towgs84=70,207,389.5,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"JAD69 / Jamaica National Grid\",GEOGCS[\"JAD69\""); + add_srs_wkt (p, 1, + ",DATUM[\"Jamaica_1969\",SPHEROID[\"Clarke 1866\",6378206"); + add_srs_wkt (p, 2, + ".4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[70,207,389.5,0,0,0,0],AUTHORITY[\"EPSG\",\"6242\"]],P"); + add_srs_wkt (p, 4, + "RIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT"); + add_srs_wkt (p, 5, + "[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122"); + add_srs_wkt (p, 6, + "\"]],AUTHORITY[\"EPSG\",\"4242\"]],PROJECTION[\"Lambert_"); + add_srs_wkt (p, 7, + "Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "18],PARAMETER[\"central_meridian\",-77],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1],PARAMETER[\"false_easting\",250000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",150000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 12, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"24200\"]]"); + p = add_epsg_def (filter, first, last, 24305, "epsg", 24305, + "Kalianpur 1937 / UTM zone 45N"); + add_proj4text (p, 0, + "+proj=utm +zone=45 +a=6377276.345 +b=6356075.41314024 +t"); + add_proj4text (p, 1, + "owgs84=214,804,268,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1937 / UTM zone 45N\",GEOGCS[\"Kalian"); + add_srs_wkt (p, 1, + "pur 1937\",DATUM[\"Kalianpur_1937\",SPHEROID[\"Everest 1"); + add_srs_wkt (p, 2, + "830 (1937 Adjustment)\",6377276.345,300.8017,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7015\"]],TOWGS84[214,804,268,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6144\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4144\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",87],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",0.9996],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24305\"]]"); + p = add_epsg_def (filter, first, last, 24306, "epsg", 24306, + "Kalianpur 1937 / UTM zone 46N"); + add_proj4text (p, 0, + "+proj=utm +zone=46 +a=6377276.345 +b=6356075.41314024 +t"); + add_proj4text (p, 1, + "owgs84=214,804,268,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1937 / UTM zone 46N\",GEOGCS[\"Kalian"); + add_srs_wkt (p, 1, + "pur 1937\",DATUM[\"Kalianpur_1937\",SPHEROID[\"Everest 1"); + add_srs_wkt (p, 2, + "830 (1937 Adjustment)\",6377276.345,300.8017,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7015\"]],TOWGS84[214,804,268,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6144\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4144\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",93],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",0.9996],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24306\"]]"); + p = add_epsg_def (filter, first, last, 24311, "epsg", 24311, + "Kalianpur 1962 / UTM zone 41N"); + add_proj4text (p, 0, + "+proj=utm +zone=41 +a=6377301.243 +b=6356100.230165384 +"); + add_proj4text (p, 1, + "towgs84=283,682,231,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1962 / UTM zone 41N\",GEOGCS[\"Kalian"); + add_srs_wkt (p, 1, + "pur 1962\",DATUM[\"Kalianpur_1962\",SPHEROID[\"Everest 1"); + add_srs_wkt (p, 2, + "830 (1962 Definition)\",6377301.243,300.8017255,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7044\"]],TOWGS84[283,682,231,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6145\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4145"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",63],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24311"); + add_srs_wkt (p, 13, + "\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_35.c b/src/spatialite/src/srsinit/epsg_inlined_35.c new file mode 100644 index 0000000..0ced151 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_35.c @@ -0,0 +1,3396 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_35 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 24312, "epsg", 24312, + "Kalianpur 1962 / UTM zone 42N"); + add_proj4text (p, 0, + "+proj=utm +zone=42 +a=6377301.243 +b=6356100.230165384 +"); + add_proj4text (p, 1, + "towgs84=283,682,231,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1962 / UTM zone 42N\",GEOGCS[\"Kalian"); + add_srs_wkt (p, 1, + "pur 1962\",DATUM[\"Kalianpur_1962\",SPHEROID[\"Everest 1"); + add_srs_wkt (p, 2, + "830 (1962 Definition)\",6377301.243,300.8017255,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7044\"]],TOWGS84[283,682,231,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6145\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4145"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",69],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24312"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 24313, "epsg", 24313, + "Kalianpur 1962 / UTM zone 43N"); + add_proj4text (p, 0, + "+proj=utm +zone=43 +a=6377301.243 +b=6356100.230165384 +"); + add_proj4text (p, 1, + "towgs84=283,682,231,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1962 / UTM zone 43N\",GEOGCS[\"Kalian"); + add_srs_wkt (p, 1, + "pur 1962\",DATUM[\"Kalianpur_1962\",SPHEROID[\"Everest 1"); + add_srs_wkt (p, 2, + "830 (1962 Definition)\",6377301.243,300.8017255,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7044\"]],TOWGS84[283,682,231,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6145\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4145"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",75],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24313"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 24342, "epsg", 24342, + "Kalianpur 1975 / UTM zone 42N"); + add_proj4text (p, 0, + "+proj=utm +zone=42 +a=6377299.151 +b=6356098.145120132 +"); + add_proj4text (p, 1, + "towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1975 / UTM zone 42N\",GEOGCS[\"Kalian"); + add_srs_wkt (p, 1, + "pur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest 1"); + add_srs_wkt (p, 2, + "830 (1975 Definition)\",6377299.151,300.8017255,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4146"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",69],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24342"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 24343, "epsg", 24343, + "Kalianpur 1975 / UTM zone 43N"); + add_proj4text (p, 0, + "+proj=utm +zone=43 +a=6377299.151 +b=6356098.145120132 +"); + add_proj4text (p, 1, + "towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1975 / UTM zone 43N\",GEOGCS[\"Kalian"); + add_srs_wkt (p, 1, + "pur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest 1"); + add_srs_wkt (p, 2, + "830 (1975 Definition)\",6377299.151,300.8017255,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4146"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",75],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24343"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 24344, "epsg", 24344, + "Kalianpur 1975 / UTM zone 44N"); + add_proj4text (p, 0, + "+proj=utm +zone=44 +a=6377299.151 +b=6356098.145120132 +"); + add_proj4text (p, 1, + "towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1975 / UTM zone 44N\",GEOGCS[\"Kalian"); + add_srs_wkt (p, 1, + "pur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest 1"); + add_srs_wkt (p, 2, + "830 (1975 Definition)\",6377299.151,300.8017255,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4146"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",81],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24344"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 24345, "epsg", 24345, + "Kalianpur 1975 / UTM zone 45N"); + add_proj4text (p, 0, + "+proj=utm +zone=45 +a=6377299.151 +b=6356098.145120132 +"); + add_proj4text (p, 1, + "towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1975 / UTM zone 45N\",GEOGCS[\"Kalian"); + add_srs_wkt (p, 1, + "pur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest 1"); + add_srs_wkt (p, 2, + "830 (1975 Definition)\",6377299.151,300.8017255,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4146"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",87],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24345"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 24346, "epsg", 24346, + "Kalianpur 1975 / UTM zone 46N"); + add_proj4text (p, 0, + "+proj=utm +zone=46 +a=6377299.151 +b=6356098.145120132 +"); + add_proj4text (p, 1, + "towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1975 / UTM zone 46N\",GEOGCS[\"Kalian"); + add_srs_wkt (p, 1, + "pur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest 1"); + add_srs_wkt (p, 2, + "830 (1975 Definition)\",6377299.151,300.8017255,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4146"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",93],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24346"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 24347, "epsg", 24347, + "Kalianpur 1975 / UTM zone 47N"); + add_proj4text (p, 0, + "+proj=utm +zone=47 +a=6377299.151 +b=6356098.145120132 +"); + add_proj4text (p, 1, + "towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1975 / UTM zone 47N\",GEOGCS[\"Kalian"); + add_srs_wkt (p, 1, + "pur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest 1"); + add_srs_wkt (p, 2, + "830 (1975 Definition)\",6377299.151,300.8017255,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4146"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",99],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",E"); + add_srs_wkt (p, 12, + "AST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24347"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 24370, "epsg", 24370, + "Kalianpur 1880 / India zone 0"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.5 +lat_0=39.5 +lon_0=68 +k_0=0.99846"); + add_proj4text (p, 1, + "154 +x_0=2153865.73916853 +y_0=2368292.194628102 +a=6377"); + add_proj4text (p, 2, + "299.36559538 +b=6356098.359005156 +to_meter=0.9143985307"); + add_proj4text (p, 3, + "444408 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1880 / India zone 0\",GEOGCS[\"Kalian"); + add_srs_wkt (p, 1, + "pur 1880\",DATUM[\"Kalianpur_1880\",SPHEROID[\"Everest ("); + add_srs_wkt (p, 2, + "1830 Definition)\",6377299.36559538,300.8017255433552,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7042\"]],AUTHORITY[\"EPSG\",\"6243\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4243\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 8, + "\",39.5],PARAMETER[\"central_meridian\",68],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.99846154],PARAMETER[\"false_easting\",2"); + add_srs_wkt (p, 10, + "355500],PARAMETER[\"false_northing\",2590000],UNIT[\"Ind"); + add_srs_wkt (p, 11, + "ian yard\",0.9143985307444408,AUTHORITY[\"EPSG\",\"9084\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"24370\"]]"); + p = add_epsg_def (filter, first, last, 24371, "epsg", 24371, + "Kalianpur 1880 / India zone I"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878"); + add_proj4text (p, 1, + "641 +x_0=2743195.592233322 +y_0=914398.5307444407 +a=637"); + add_proj4text (p, 2, + "7299.36559538 +b=6356098.359005156 +to_meter=0.914398530"); + add_proj4text (p, 3, + "7444408 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1880 / India zone I\",GEOGCS[\"Kalian"); + add_srs_wkt (p, 1, + "pur 1880\",DATUM[\"Kalianpur_1880\",SPHEROID[\"Everest ("); + add_srs_wkt (p, 2, + "1830 Definition)\",6377299.36559538,300.8017255433552,AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"7042\"]],AUTHORITY[\"EPSG\",\"6243\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4243\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 8, + "\",32.5],PARAMETER[\"central_meridian\",68],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.99878641],PARAMETER[\"false_easting\",3"); + add_srs_wkt (p, 10, + "000000],PARAMETER[\"false_northing\",1000000],UNIT[\"Ind"); + add_srs_wkt (p, 11, + "ian yard\",0.9143985307444408,AUTHORITY[\"EPSG\",\"9084\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"24371\"]]"); + p = add_epsg_def (filter, first, last, 24372, "epsg", 24372, + "Kalianpur 1880 / India zone IIa"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 "); + add_proj4text (p, 1, + "+x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299"); + add_proj4text (p, 2, + ".36559538 +b=6356098.359005156 +to_meter=0.9143985307444"); + add_proj4text (p, 3, + "408 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1880 / India zone IIa\",GEOGCS[\"Kali"); + add_srs_wkt (p, 1, + "anpur 1880\",DATUM[\"Kalianpur_1880\",SPHEROID[\"Everest"); + add_srs_wkt (p, 2, + " (1830 Definition)\",6377299.36559538,300.8017255433552,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7042\"]],AUTHORITY[\"EPSG\",\"6243\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4243\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",26],PARAMETER[\"central_meridian\",74],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.99878641],PARAMETER[\"false_easting\",30"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",1000000],UNIT[\"Indi"); + add_srs_wkt (p, 11, + "an yard\",0.9143985307444408,AUTHORITY[\"EPSG\",\"9084\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"24372\"]]"); + p = add_epsg_def (filter, first, last, 24373, "epsg", 24373, + "Kalianpur 1880 / India zone IIIa"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 "); + add_proj4text (p, 1, + "+x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299"); + add_proj4text (p, 2, + ".36559538 +b=6356098.359005156 +to_meter=0.9143985307444"); + add_proj4text (p, 3, + "408 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1880 / India zone IIIa\",GEOGCS[\"Kal"); + add_srs_wkt (p, 1, + "ianpur 1880\",DATUM[\"Kalianpur_1880\",SPHEROID[\"Everes"); + add_srs_wkt (p, 2, + "t (1830 Definition)\",6377299.36559538,300.8017255433552"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7042\"]],AUTHORITY[\"EPSG\",\"6243"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4243\"]],PROJECTION[\"La"); + add_srs_wkt (p, 7, + "mbert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_ori"); + add_srs_wkt (p, 8, + "gin\",19],PARAMETER[\"central_meridian\",80],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.99878641],PARAMETER[\"false_easting\",3"); + add_srs_wkt (p, 10, + "000000],PARAMETER[\"false_northing\",1000000],UNIT[\"Ind"); + add_srs_wkt (p, 11, + "ian yard\",0.9143985307444408,AUTHORITY[\"EPSG\",\"9084\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"24373\"]]"); + p = add_epsg_def (filter, first, last, 24374, "epsg", 24374, + "Kalianpur 1880 / India zone IVa"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 "); + add_proj4text (p, 1, + "+x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299"); + add_proj4text (p, 2, + ".36559538 +b=6356098.359005156 +to_meter=0.9143985307444"); + add_proj4text (p, 3, + "408 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1880 / India zone IVa\",GEOGCS[\"Kali"); + add_srs_wkt (p, 1, + "anpur 1880\",DATUM[\"Kalianpur_1880\",SPHEROID[\"Everest"); + add_srs_wkt (p, 2, + " (1830 Definition)\",6377299.36559538,300.8017255433552,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7042\"]],AUTHORITY[\"EPSG\",\"6243\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4243\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",12],PARAMETER[\"central_meridian\",80],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.99878641],PARAMETER[\"false_easting\",30"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",1000000],UNIT[\"Indi"); + add_srs_wkt (p, 11, + "an yard\",0.9143985307444408,AUTHORITY[\"EPSG\",\"9084\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"24374\"]]"); + p = add_epsg_def (filter, first, last, 24375, "epsg", 24375, + "Kalianpur 1937 / India zone IIb"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 "); + add_proj4text (p, 1, + "+x_0=2743185.69 +y_0=914395.23 +a=6377276.345 +b=6356075"); + add_proj4text (p, 2, + ".41314024 +towgs84=214,804,268,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1937 / India zone IIb\",GEOGCS[\"Kali"); + add_srs_wkt (p, 1, + "anpur 1937\",DATUM[\"Kalianpur_1937\",SPHEROID[\"Everest"); + add_srs_wkt (p, 2, + " 1830 (1937 Adjustment)\",6377276.345,300.8017,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7015\"]],TOWGS84[214,804,268,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6144\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4144\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",26],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",90],PARAMETER[\"scale_factor\",0.99878641],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",2743185.69],PARAMETER[\"false_northing"); + add_srs_wkt (p, 11, + "\",914395.23],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 12, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"24375\"]]"); + p = add_epsg_def (filter, first, last, 24376, "epsg", 24376, + "Kalianpur 1962 / India zone I"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878"); + add_proj4text (p, 1, + "641 +x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=63561"); + add_proj4text (p, 2, + "00.230165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1962 / India zone I\",GEOGCS[\"Kalian"); + add_srs_wkt (p, 1, + "pur 1962\",DATUM[\"Kalianpur_1962\",SPHEROID[\"Everest 1"); + add_srs_wkt (p, 2, + "830 (1962 Definition)\",6377301.243,300.8017255,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7044\"]],TOWGS84[283,682,231,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6145\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4145"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"latitude_of_origin\",32.5],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",68],PARAMETER[\"scale_factor\",0.99878641],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",2743196.4],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",914398.8],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 12, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"24376\"]]"); + p = add_epsg_def (filter, first, last, 24377, "epsg", 24377, + "Kalianpur 1962 / India zone IIa"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 "); + add_proj4text (p, 1, + "+x_0=2743196.4 +y_0=914398.8 +a=6377301.243 +b=6356100.2"); + add_proj4text (p, 2, + "30165384 +towgs84=283,682,231,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1962 / India zone IIa\",GEOGCS[\"Kali"); + add_srs_wkt (p, 1, + "anpur 1962\",DATUM[\"Kalianpur_1962\",SPHEROID[\"Everest"); + add_srs_wkt (p, 2, + " 1830 (1962 Definition)\",6377301.243,300.8017255,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7044\"]],TOWGS84[283,682,231,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6145\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 7, + "45\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",26],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",74],PARAMETER[\"scale_factor\",0.99878641],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",2743196.4],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",914398.8],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 12, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"24377\"]]"); + p = add_epsg_def (filter, first, last, 24378, "epsg", 24378, + "Kalianpur 1975 / India zone I"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=68 +k_0=0.99878"); + add_proj4text (p, 1, + "641 +x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=63560"); + add_proj4text (p, 2, + "98.145120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1975 / India zone I\",GEOGCS[\"Kalian"); + add_srs_wkt (p, 1, + "pur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest 1"); + add_srs_wkt (p, 2, + "830 (1975 Definition)\",6377299.151,300.8017255,AUTHORIT"); + add_srs_wkt (p, 3, + "Y[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4146"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"latitude_of_origin\",32.5],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",68],PARAMETER[\"scale_factor\",0.99878641],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",2743195.5],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",914398.5],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 12, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"24378\"]]"); + p = add_epsg_def (filter, first, last, 24379, "epsg", 24379, + "Kalianpur 1975 / India zone IIa"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=74 +k_0=0.99878641 "); + add_proj4text (p, 1, + "+x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.1"); + add_proj4text (p, 2, + "45120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1975 / India zone IIa\",GEOGCS[\"Kali"); + add_srs_wkt (p, 1, + "anpur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest"); + add_srs_wkt (p, 2, + " 1830 (1975 Definition)\",6377299.151,300.8017255,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 7, + "46\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",26],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",74],PARAMETER[\"scale_factor\",0.99878641],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",2743195.5],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",914398.5],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 12, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"24379\"]]"); + p = add_epsg_def (filter, first, last, 24380, "epsg", 24380, + "Kalianpur 1975 / India zone IIb"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 "); + add_proj4text (p, 1, + "+x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.1"); + add_proj4text (p, 2, + "45120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1975 / India zone IIb\",GEOGCS[\"Kali"); + add_srs_wkt (p, 1, + "anpur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest"); + add_srs_wkt (p, 2, + " 1830 (1975 Definition)\",6377299.151,300.8017255,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 7, + "46\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",26],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",90],PARAMETER[\"scale_factor\",0.99878641],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",2743195.5],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",914398.5],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 12, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"24380\"]]"); + p = add_epsg_def (filter, first, last, 24381, "epsg", 24381, + "Kalianpur 1975 / India zone IIIa"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=19 +lat_0=19 +lon_0=80 +k_0=0.99878641 "); + add_proj4text (p, 1, + "+x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.1"); + add_proj4text (p, 2, + "45120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1975 / India zone IIIa\",GEOGCS[\"Kal"); + add_srs_wkt (p, 1, + "ianpur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everes"); + add_srs_wkt (p, 2, + "t 1830 (1975 Definition)\",6377299.151,300.8017255,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "146\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"latitude_of_origin\",19],PARAMETER[\"central_mer"); + add_srs_wkt (p, 9, + "idian\",80],PARAMETER[\"scale_factor\",0.99878641],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",2743195.5],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",914398.5],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 12, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"24381\"]]"); + p = add_epsg_def (filter, first, last, 24382, "epsg", 24382, + "Kalianpur 1880 / India zone IIb"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=26 +lat_0=26 +lon_0=90 +k_0=0.99878641 "); + add_proj4text (p, 1, + "+x_0=2743195.592233322 +y_0=914398.5307444407 +a=6377299"); + add_proj4text (p, 2, + ".36559538 +b=6356098.359005156 +to_meter=0.9143985307444"); + add_proj4text (p, 3, + "408 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1880 / India zone IIb\",GEOGCS[\"Kali"); + add_srs_wkt (p, 1, + "anpur 1880\",DATUM[\"Kalianpur_1880\",SPHEROID[\"Everest"); + add_srs_wkt (p, 2, + " (1830 Definition)\",6377299.36559538,300.8017255433552,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7042\"]],AUTHORITY[\"EPSG\",\"6243\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4243\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",26],PARAMETER[\"central_meridian\",90],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.99878641],PARAMETER[\"false_easting\",30"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",1000000],UNIT[\"Indi"); + add_srs_wkt (p, 11, + "an yard\",0.9143985307444408,AUTHORITY[\"EPSG\",\"9084\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"24382\"]]"); + p = add_epsg_def (filter, first, last, 24383, "epsg", 24383, + "Kalianpur 1975 / India zone IVa"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=12 +lat_0=12 +lon_0=80 +k_0=0.99878641 "); + add_proj4text (p, 1, + "+x_0=2743195.5 +y_0=914398.5 +a=6377299.151 +b=6356098.1"); + add_proj4text (p, 2, + "45120132 +towgs84=295,736,257,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kalianpur 1975 / India zone IVa\",GEOGCS[\"Kali"); + add_srs_wkt (p, 1, + "anpur 1975\",DATUM[\"Kalianpur_1975\",SPHEROID[\"Everest"); + add_srs_wkt (p, 2, + " 1830 (1975 Definition)\",6377299.151,300.8017255,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7045\"]],TOWGS84[295,736,257,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6146\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"41"); + add_srs_wkt (p, 7, + "46\"]],PROJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",12],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",80],PARAMETER[\"scale_factor\",0.99878641],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_easting\",2743195.5],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",914398.5],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 12, + "01\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"24383\"]]"); + p = add_epsg_def (filter, first, last, 24500, "epsg", 24500, + "Kertau 1968 / Singapore Grid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=1.287646666666667 +lon_0=103.853002222"); + add_proj4text (p, 1, + "2222 +x_0=30000 +y_0=30000 +a=6377304.063 +b=6356103.038"); + add_proj4text (p, 2, + "993155 +towgs84=-11,851,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kertau 1968 / Singapore Grid\",GEOGCS[\"Kertau "); + add_srs_wkt (p, 1, + "1968\",DATUM[\"Kertau_1968\",SPHEROID[\"Everest 1830 Mod"); + add_srs_wkt (p, 2, + "ified\",6377304.063,300.8017,AUTHORITY[\"EPSG\",\"7018\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-11,851,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6245\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4245\"]],PROJECTION[\"Cass"); + add_srs_wkt (p, 7, + "ini_Soldner\"],PARAMETER[\"latitude_of_origin\",1.287646"); + add_srs_wkt (p, 8, + "666666667],PARAMETER[\"central_meridian\",103.8530022222"); + add_srs_wkt (p, 9, + "222],PARAMETER[\"false_easting\",30000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",30000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"24500\"]]"); + p = add_epsg_def (filter, first, last, 24547, "epsg", 24547, + "Kertau 1968 / UTM zone 47N"); + add_proj4text (p, 0, + "+proj=utm +zone=47 +a=6377304.063 +b=6356103.038993155 +"); + add_proj4text (p, 1, + "towgs84=-11,851,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kertau 1968 / UTM zone 47N\",GEOGCS[\"Kertau 19"); + add_srs_wkt (p, 1, + "68\",DATUM[\"Kertau_1968\",SPHEROID[\"Everest 1830 Modif"); + add_srs_wkt (p, 2, + "ied\",6377304.063,300.8017,AUTHORITY[\"EPSG\",\"7018\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[-11,851,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6245\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4245\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",99],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"24547\"]]"); + p = add_epsg_def (filter, first, last, 24548, "epsg", 24548, + "Kertau 1968 / UTM zone 48N"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +a=6377304.063 +b=6356103.038993155 +"); + add_proj4text (p, 1, + "towgs84=-11,851,5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kertau 1968 / UTM zone 48N\",GEOGCS[\"Kertau 19"); + add_srs_wkt (p, 1, + "68\",DATUM[\"Kertau_1968\",SPHEROID[\"Everest 1830 Modif"); + add_srs_wkt (p, 2, + "ied\",6377304.063,300.8017,AUTHORITY[\"EPSG\",\"7018\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[-11,851,5,0,0,0,0],AUTHORITY[\"EPSG\",\"6245\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4245\"]],PROJECTION[\"Trans"); + add_srs_wkt (p, 7, + "verse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",105],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"24548\"]]"); + p = add_epsg_def (filter, first, last, 24571, "epsg", 24571, + "Kertau / R.S.O. Malaya (ch) (deprecated)"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=4 +lonc=102.25 +alpha=323.0257905 +k="); + add_proj4text (p, 1, + "0.99984 +x_0=804671.2997750348 +y_0=0 +no_uoff +gamma=32"); + add_proj4text (p, 2, + "3.1301023611111 +a=6377304.063 +b=6356103.038993155 +tow"); + add_proj4text (p, 3, + "gs84=-11,851,5,0,0,0,0 +to_meter=20.11678249437587 +no_d"); + add_proj4text (p, 4, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"Kertau / R.S.O. Malaya (ch) (deprecated)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Kertau 1968\",DATUM[\"Kertau_1968\",SPHEROID[\"Ever"); + add_srs_wkt (p, 2, + "est 1830 Modified\",6377304.063,300.8017,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7018\"]],TOWGS84[-11,851,5,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 4, + "SG\",\"6245\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4245\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Hotine_Oblique_Mercator\"],PARAMETER[\"latitude_"); + add_srs_wkt (p, 8, + "of_center\",4],PARAMETER[\"longitude_of_center\",102.25]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"azimuth\",323.0257905],PARAMETER[\"rectifie"); + add_srs_wkt (p, 10, + "d_grid_angle\",323.1301023611111],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 11, + "or\",0.99984],PARAMETER[\"false_easting\",40000],PARAMET"); + add_srs_wkt (p, 12, + "ER[\"false_northing\",0],UNIT[\"British chain (Benoit 18"); + add_srs_wkt (p, 13, + "95 B)\",20.11678249437587,AUTHORITY[\"EPSG\",\"9062\"]],"); + add_srs_wkt (p, 14, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 15, + "Y[\"EPSG\",\"24571\"]]"); + p = add_epsg_def (filter, first, last, 24600, "epsg", 24600, + "KOC Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.5 +lat_0=32.5 +lon_0=45 +k_0=0.99878"); + add_proj4text (p, 1, + "64078000001 +x_0=1500000 +y_0=1166200 +ellps=clrk80 +tow"); + add_proj4text (p, 2, + "gs84=-294.7,-200.1,525.5,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"KOC Lambert\",GEOGCS[\"KOC\",DATUM[\"Kuwait_Oil"); + add_srs_wkt (p, 1, + "_Company\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,29"); + add_srs_wkt (p, 2, + "3.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-294.7,-200."); + add_srs_wkt (p, 3, + "1,525.5,0,0,0,0],AUTHORITY[\"EPSG\",\"6246\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4246\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",32.5],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",45],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.9987864078],PARAMETER[\"false_easting\",1500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",1166200],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24600\"]]"); + p = add_epsg_def (filter, first, last, 24718, "epsg", 24718, + "La Canoa / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=intl +towgs84=-273.5,110.6,-35"); + add_proj4text (p, 1, + "7.9,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"La Canoa / UTM zone 18N\",GEOGCS[\"La Canoa\",D"); + add_srs_wkt (p, 1, + "ATUM[\"La_Canoa\",SPHEROID[\"International 1924\",637838"); + add_srs_wkt (p, 2, + "8,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-273.5,110.6"); + add_srs_wkt (p, 3, + ",-357.9,0,0,0,0],AUTHORITY[\"EPSG\",\"6247\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4247\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-75],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"24718\"]]"); + p = add_epsg_def (filter, first, last, 24719, "epsg", 24719, + "La Canoa / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=intl +towgs84=-273.5,110.6,-35"); + add_proj4text (p, 1, + "7.9,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"La Canoa / UTM zone 19N\",GEOGCS[\"La Canoa\",D"); + add_srs_wkt (p, 1, + "ATUM[\"La_Canoa\",SPHEROID[\"International 1924\",637838"); + add_srs_wkt (p, 2, + "8,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-273.5,110.6"); + add_srs_wkt (p, 3, + ",-357.9,0,0,0,0],AUTHORITY[\"EPSG\",\"6247\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4247\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-69],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"24719\"]]"); + p = add_epsg_def (filter, first, last, 24720, "epsg", 24720, + "La Canoa / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=intl +towgs84=-273.5,110.6,-35"); + add_proj4text (p, 1, + "7.9,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"La Canoa / UTM zone 20N\",GEOGCS[\"La Canoa\",D"); + add_srs_wkt (p, 1, + "ATUM[\"La_Canoa\",SPHEROID[\"International 1924\",637838"); + add_srs_wkt (p, 2, + "8,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-273.5,110.6"); + add_srs_wkt (p, 3, + ",-357.9,0,0,0,0],AUTHORITY[\"EPSG\",\"6247\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4247\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-63],PARAMETER[\"scale_factor\",0.9996"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"24720\"]]"); + p = add_epsg_def (filter, first, last, 24817, "epsg", 24817, + "PSAD56 / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=intl +towgs84=-288,175,-376,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSAD56 / UTM zone 17N\",GEOGCS[\"PSAD56\",DATUM"); + add_srs_wkt (p, 1, + "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-81],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 12, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"24817\"]]"); + p = add_epsg_def (filter, first, last, 24818, "epsg", 24818, + "PSAD56 / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=intl +towgs84=-288,175,-376,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSAD56 / UTM zone 18N\",GEOGCS[\"PSAD56\",DATUM"); + add_srs_wkt (p, 1, + "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-75],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 12, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"24818\"]]"); + p = add_epsg_def (filter, first, last, 24819, "epsg", 24819, + "PSAD56 / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=intl +towgs84=-288,175,-376,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSAD56 / UTM zone 19N\",GEOGCS[\"PSAD56\",DATUM"); + add_srs_wkt (p, 1, + "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-69],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 12, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"24819\"]]"); + p = add_epsg_def (filter, first, last, 24820, "epsg", 24820, + "PSAD56 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=intl +towgs84=-288,175,-376,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSAD56 / UTM zone 20N\",GEOGCS[\"PSAD56\",DATUM"); + add_srs_wkt (p, 1, + "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-63],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 12, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"24820\"]]"); + p = add_epsg_def (filter, first, last, 24821, "epsg", 24821, + "PSAD56 / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=intl +towgs84=-288,175,-376,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSAD56 / UTM zone 21N\",GEOGCS[\"PSAD56\",DATUM"); + add_srs_wkt (p, 1, + "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-57],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 12, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"24821\"]]"); + p = add_epsg_def (filter, first, last, 24877, "epsg", 24877, + "PSAD56 / UTM zone 17S"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +south +ellps=intl +towgs84=-288,175,"); + add_proj4text (p, 1, + "-376,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSAD56 / UTM zone 17S\",GEOGCS[\"PSAD56\",DATUM"); + add_srs_wkt (p, 1, + "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-81],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24877\"]]"); + p = add_epsg_def (filter, first, last, 24878, "epsg", 24878, + "PSAD56 / UTM zone 18S"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +south +ellps=intl +towgs84=-288,175,"); + add_proj4text (p, 1, + "-376,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSAD56 / UTM zone 18S\",GEOGCS[\"PSAD56\",DATUM"); + add_srs_wkt (p, 1, + "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-75],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24878\"]]"); + p = add_epsg_def (filter, first, last, 24879, "epsg", 24879, + "PSAD56 / UTM zone 19S"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +south +ellps=intl +towgs84=-288,175,"); + add_proj4text (p, 1, + "-376,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSAD56 / UTM zone 19S\",GEOGCS[\"PSAD56\",DATUM"); + add_srs_wkt (p, 1, + "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-69],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24879\"]]"); + p = add_epsg_def (filter, first, last, 24880, "epsg", 24880, + "PSAD56 / UTM zone 20S"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +south +ellps=intl +towgs84=-288,175,"); + add_proj4text (p, 1, + "-376,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSAD56 / UTM zone 20S\",GEOGCS[\"PSAD56\",DATUM"); + add_srs_wkt (p, 1, + "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-63],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24880\"]]"); + p = add_epsg_def (filter, first, last, 24881, "epsg", 24881, + "PSAD56 / UTM zone 21S"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +south +ellps=intl +towgs84=-288,175,"); + add_proj4text (p, 1, + "-376,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSAD56 / UTM zone 21S\",GEOGCS[\"PSAD56\",DATUM"); + add_srs_wkt (p, 1, + "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-57],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24881\"]]"); + p = add_epsg_def (filter, first, last, 24882, "epsg", 24882, + "PSAD56 / UTM zone 22S"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +south +ellps=intl +towgs84=-288,175,"); + add_proj4text (p, 1, + "-376,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSAD56 / UTM zone 22S\",GEOGCS[\"PSAD56\",DATUM"); + add_srs_wkt (p, 1, + "[\"Provisional_South_American_Datum_1956\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-51],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"24882\"]]"); + p = add_epsg_def (filter, first, last, 24891, "epsg", 24891, + "PSAD56 / Peru west zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-6 +lon_0=-80.5 +k=0.99983008 +x_0=22"); + add_proj4text (p, 1, + "2000 +y_0=1426834.743 +ellps=intl +towgs84=-288,175,-376"); + add_proj4text (p, 2, + ",0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSAD56 / Peru west zone\",GEOGCS[\"PSAD56\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Provisional_South_American_Datum_1956\",SPHEROID[\""); + add_srs_wkt (p, 2, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "22\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",-6],PARAMETER[\"central_meridian\",-80.5],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.99983008],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",222000],PARAMETER[\"false_northing\",1426834.743],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 12, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"24891\"]]"); + p = add_epsg_def (filter, first, last, 24892, "epsg", 24892, + "PSAD56 / Peru central zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-9.5 +lon_0=-76 +k=0.99932994 +x_0=72"); + add_proj4text (p, 1, + "0000 +y_0=1039979.159 +ellps=intl +towgs84=-288,175,-376"); + add_proj4text (p, 2, + ",0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSAD56 / Peru central zone\",GEOGCS[\"PSAD56\","); + add_srs_wkt (p, 1, + "DATUM[\"Provisional_South_American_Datum_1956\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7022\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 5, + "\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJEC"); + add_srs_wkt (p, 7, + "TION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 8, + "igin\",-9.5],PARAMETER[\"central_meridian\",-76],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",0.99932994],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",720000],PARAMETER[\"false_northing\",1039979.159],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); + add_srs_wkt (p, 12, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"24892\"]]"); + p = add_epsg_def (filter, first, last, 24893, "epsg", 24893, + "PSAD56 / Peru east zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-9.5 +lon_0=-70.5 +k=0.99952992 +x_0="); + add_proj4text (p, 1, + "1324000 +y_0=1040084.558 +ellps=intl +towgs84=-288,175,-"); + add_proj4text (p, 2, + "376,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"PSAD56 / Peru east zone\",GEOGCS[\"PSAD56\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Provisional_South_American_Datum_1956\",SPHEROID[\""); + add_srs_wkt (p, 2, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "22\"]],TOWGS84[-288,175,-376,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6248\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4248\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",-9.5],PARAMETER[\"central_meridian\",-70.5],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",0.99952992],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",1324000],PARAMETER[\"false_northing\",1040084.558],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"24893\"]]"); + p = add_epsg_def (filter, first, last, 25000, "epsg", 25000, + "Leigon / Ghana Metre Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4.666666666666667 +lon_0=-1 +k=0.9997"); + add_proj4text (p, 1, + "5 +x_0=274319.51 +y_0=0 +ellps=clrk80 +towgs84=-130,29,3"); + add_proj4text (p, 2, + "64,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Leigon / Ghana Metre Grid\",GEOGCS[\"Leigon\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Leigon\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.1"); + add_srs_wkt (p, 2, + "45,293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-130,29"); + add_srs_wkt (p, 3, + ",364,0,0,0,0],AUTHORITY[\"EPSG\",\"6250\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4250\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",4.666666666666667],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-1],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.99975],PARAMETER[\"false_easting\",274319.51],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"25000\"]]"); + p = add_epsg_def (filter, first, last, 25231, "epsg", 25231, + "Lome / UTM zone 31N"); + add_proj4text (p, 0, + "+proj=utm +zone=31 +a=6378249.2 +b=6356515 +units=m +no_"); + add_proj4text (p, 1, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Lome / UTM zone 31N\",GEOGCS[\"Lome\",DATUM[\"L"); + add_srs_wkt (p, 1, + "ome\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.46602"); + add_srs_wkt (p, 2, + "12936265,AUTHORITY[\"EPSG\",\"7011\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6252\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4252\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 7, + "in\",0],PARAMETER[\"central_meridian\",3],PARAMETER[\"sc"); + add_srs_wkt (p, 8, + "ale_factor\",0.9996],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"25231\"]]"); + p = add_epsg_def (filter, first, last, 25391, "epsg", 25391, + "Luzon 1911 / Philippines zone I"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=0.99995 +x_0=500000 +"); + add_proj4text (p, 1, + "y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Luzon 1911 / Philippines zone I\",GEOGCS[\"Luzo"); + add_srs_wkt (p, 1, + "n 1911\",DATUM[\"Luzon_1911\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[-133,-77,-51,0,0,0,0],AUTHORITY[\"EPSG\",\"6253"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4253\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",117],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.99995],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"25391\"]]"); + p = add_epsg_def (filter, first, last, 25392, "epsg", 25392, + "Luzon 1911 / Philippines zone II"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=119 +k=0.99995 +x_0=500000 +"); + add_proj4text (p, 1, + "y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Luzon 1911 / Philippines zone II\",GEOGCS[\"Luz"); + add_srs_wkt (p, 1, + "on 1911\",DATUM[\"Luzon_1911\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[-133,-77,-51,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "3\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4253\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",119],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.99995],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"25392\"]]"); + p = add_epsg_def (filter, first, last, 25393, "epsg", 25393, + "Luzon 1911 / Philippines zone III"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=121 +k=0.99995 +x_0=500000 +"); + add_proj4text (p, 1, + "y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Luzon 1911 / Philippines zone III\",GEOGCS[\"Lu"); + add_srs_wkt (p, 1, + "zon 1911\",DATUM[\"Luzon_1911\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-133,-77,-51,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); + add_srs_wkt (p, 4, + "53\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4253\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",121],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.99995],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"25393\"]]"); + p = add_epsg_def (filter, first, last, 25394, "epsg", 25394, + "Luzon 1911 / Philippines zone IV"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=0.99995 +x_0=500000 +"); + add_proj4text (p, 1, + "y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Luzon 1911 / Philippines zone IV\",GEOGCS[\"Luz"); + add_srs_wkt (p, 1, + "on 1911\",DATUM[\"Luzon_1911\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[-133,-77,-51,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "3\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4253\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",123],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.99995],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"25394\"]]"); + p = add_epsg_def (filter, first, last, 25395, "epsg", 25395, + "Luzon 1911 / Philippines zone V"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=125 +k=0.99995 +x_0=500000 +"); + add_proj4text (p, 1, + "y_0=0 +ellps=clrk66 +towgs84=-133,-77,-51,0,0,0,0 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Luzon 1911 / Philippines zone V\",GEOGCS[\"Luzo"); + add_srs_wkt (p, 1, + "n 1911\",DATUM[\"Luzon_1911\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[-133,-77,-51,0,0,0,0],AUTHORITY[\"EPSG\",\"6253"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4253\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",125],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.99995],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"25395\"]]"); + p = add_epsg_def (filter, first, last, 25700, "epsg", 25700, + "Makassar (Jakarta) / NEIEZ (deprecated)"); + add_proj4text (p, 0, + "+proj=merc +lon_0=110 +k=0.997 +x_0=3900000 +y_0=900000 "); + add_proj4text (p, 1, + "+ellps=bessel +towgs84=-587.8,519.75,145.76,0,0,0,0 +pm="); + add_proj4text (p, 2, + "jakarta +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Makassar (Jakarta) / NEIEZ (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"Makassar (Jakarta)\",DATUM[\"Makassar_Jakarta\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7004\"]],TOWGS84[-587.8,519.75,145.76,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6804\"]],PRIMEM[\"Jakarta\",106.807"); + add_srs_wkt (p, 5, + "7194444444,AUTHORITY[\"EPSG\",\"8908\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4804\"]],PROJECTION[\"Mercator_1SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"central_meridian\",110],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.997],PARAMETER[\"false_easting\",3900000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",900000],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"25700\"]]"); + p = add_epsg_def (filter, first, last, 25828, "epsg", 25828, + "ETRS89 / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 28N\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-15],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"25828\"]]"); + p = add_epsg_def (filter, first, last, 25829, "epsg", 25829, + "ETRS89 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 29N\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-9],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"25829\"]]"); + p = add_epsg_def (filter, first, last, 25830, "epsg", 25830, + "ETRS89 / UTM zone 30N"); + add_proj4text (p, 0, + "+proj=utm +zone=30 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 30N\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-3],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"25830\"]]"); + p = add_epsg_def (filter, first, last, 25831, "epsg", 25831, + "ETRS89 / UTM zone 31N"); + add_proj4text (p, 0, + "+proj=utm +zone=31 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 31N\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",3],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"25831\"]]"); + p = add_epsg_def (filter, first, last, 25832, "epsg", 25832, + "ETRS89 / UTM zone 32N"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 32N\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",9],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"25832\"]]"); + p = add_epsg_def (filter, first, last, 25833, "epsg", 25833, + "ETRS89 / UTM zone 33N"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 33N\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",15],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"25833\"]]"); + p = add_epsg_def (filter, first, last, 25834, "epsg", 25834, + "ETRS89 / UTM zone 34N"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 34N\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",21],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"25834\"]]"); + p = add_epsg_def (filter, first, last, 25835, "epsg", 25835, + "ETRS89 / UTM zone 35N"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 35N\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",27],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"25835\"]]"); + p = add_epsg_def (filter, first, last, 25836, "epsg", 25836, + "ETRS89 / UTM zone 36N"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 36N\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",33],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"25836\"]]"); + p = add_epsg_def (filter, first, last, 25837, "epsg", 25837, + "ETRS89 / UTM zone 37N"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 37N\",GEOGCS[\"ETRS89\",DATUM"); + add_srs_wkt (p, 1, + "[\"European_Terrestrial_Reference_System_1989\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",39],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"25837\"]]"); + p = add_epsg_def (filter, first, last, 25838, "epsg", 25838, + "ETRS89 / UTM zone 38N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / UTM zone 38N (deprecated)\",GEOGCS[\"E"); + add_srs_wkt (p, 1, + "TRS89\",DATUM[\"European_Terrestrial_Reference_System_19"); + add_srs_wkt (p, 2, + "89\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORI"); + add_srs_wkt (p, 3, + "TY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6258\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",45],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],A"); + add_srs_wkt (p, 12, + "XIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"25838\"]]"); + p = add_epsg_def (filter, first, last, 25884, "epsg", 25884, + "ETRS89 / TM Baltic93"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"ETRS89 / TM Baltic93\",GEOGCS[\"ETRS89\",DATUM["); + add_srs_wkt (p, 1, + "\"European_Terrestrial_Reference_System_1989\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"625"); + add_srs_wkt (p, 4, + "8\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4258\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",24],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"25884\"]]"); + p = add_epsg_def (filter, first, last, 25932, "epsg", 25932, + "Malongo 1987 / UTM zone 32S"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +south +ellps=intl +towgs84=-254.1,-5"); + add_proj4text (p, 1, + ".36,-100.29,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Malongo 1987 / UTM zone 32S\",GEOGCS[\"Malongo "); + add_srs_wkt (p, 1, + "1987\",DATUM[\"Malongo_1987\",SPHEROID[\"International 1"); + add_srs_wkt (p, 2, + "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-254.1,-5.36,-100.29,0,0,0,0],AUTHORITY[\"EPSG\",\"6259\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4259\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",9],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 12, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"25932\"]]"); + p = add_epsg_def (filter, first, last, 26191, "epsg", 26191, + "Merchich / Nord Maroc"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=-5.4 +k_0=0.999"); + add_proj4text (p, 1, + "625769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +"); + add_proj4text (p, 2, + "towgs84=31,146,47,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Merchich / Nord Maroc\",GEOGCS[\"Merchich\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Merchich\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2"); + add_srs_wkt (p, 2, + ",293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[31,146,47,0,0,0,0],AUTHORITY[\"EPSG\",\"6261\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4261\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",33.3]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-5.4],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.999625769],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",300000],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"26191\"]]"); + p = add_epsg_def (filter, first, last, 26192, "epsg", 26192, + "Merchich / Sud Maroc"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=29.7 +lat_0=29.7 +lon_0=-5.4 +k_0=0.999"); + add_proj4text (p, 1, + "6155960000001 +x_0=500000 +y_0=300000 +a=6378249.2 +b=63"); + add_proj4text (p, 2, + "56515 +towgs84=31,146,47,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Merchich / Sud Maroc\",GEOGCS[\"Merchich\",DATU"); + add_srs_wkt (p, 1, + "M[\"Merchich\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,"); + add_srs_wkt (p, 2, + "293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84["); + add_srs_wkt (p, 3, + "31,146,47,0,0,0,0],AUTHORITY[\"EPSG\",\"6261\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4261\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",29.7],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-5.4],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.999615596],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",300000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"26192\"]]"); + p = add_epsg_def (filter, first, last, 26193, "epsg", 26193, + "Merchich / Sahara (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.999"); + add_proj4text (p, 1, + "6 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 +towg"); + add_proj4text (p, 2, + "s84=31,146,47,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Merchich / Sahara (deprecated)\",GEOGCS[\"Merch"); + add_srs_wkt (p, 1, + "ich\",DATUM[\"Merchich\",SPHEROID[\"Clarke 1880 (IGN)\","); + add_srs_wkt (p, 2, + "6378249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[31,146,47,0,0,0,0],AUTHORITY[\"EPSG\",\"6261\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4261\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",26.1],PARAMETER[\"central_meridian\",-5.4],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9996],PARAMETER[\"false_easting\",12"); + add_srs_wkt (p, 10, + "00000],PARAMETER[\"false_northing\",400000],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26193\"]]"); + p = add_epsg_def (filter, first, last, 26194, "epsg", 26194, + "Merchich / Sahara Nord"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=26.1 +lat_0=26.1 +lon_0=-5.4 +k_0=0.999"); + add_proj4text (p, 1, + "616304 +x_0=1200000 +y_0=400000 +a=6378249.2 +b=6356515 "); + add_proj4text (p, 2, + "+towgs84=31,146,47,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Merchich / Sahara Nord\",GEOGCS[\"Merchich\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Merchich\",SPHEROID[\"Clarke 1880 (IGN)\",6378249."); + add_srs_wkt (p, 2, + "2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[31,146,47,0,0,0,0],AUTHORITY[\"EPSG\",\"6261\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4261\"]],PROJECTION[\"Lambert_Conf"); + add_srs_wkt (p, 7, + "ormal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",26.1"); + add_srs_wkt (p, 8, + "],PARAMETER[\"central_meridian\",-5.4],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.999616304],PARAMETER[\"false_easting\",12000"); + add_srs_wkt (p, 10, + "00],PARAMETER[\"false_northing\",400000],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"26194\"]]"); + p = add_epsg_def (filter, first, last, 26195, "epsg", 26195, + "Merchich / Sahara Sud"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=22.5 +lat_0=22.5 +lon_0=-5.4 +k_0=0.999"); + add_proj4text (p, 1, + "616437 +x_0=1500000 +y_0=400000 +a=6378249.2 +b=6356515 "); + add_proj4text (p, 2, + "+towgs84=31,146,47,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Merchich / Sahara Sud\",GEOGCS[\"Merchich\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Merchich\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2"); + add_srs_wkt (p, 2, + ",293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[31,146,47,0,0,0,0],AUTHORITY[\"EPSG\",\"6261\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4261\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",22.5]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-5.4],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.999616437],PARAMETER[\"false_easting\",150000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",400000],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"26195\"]]"); + p = add_epsg_def (filter, first, last, 26237, "epsg", 26237, + "Massawa / UTM zone 37N"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +ellps=bessel +towgs84=639,405,60,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Massawa / UTM zone 37N\",GEOGCS[\"Massawa\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Massawa\",SPHEROID[\"Bessel 1841\",6377397.155,299."); + add_srs_wkt (p, 2, + "1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[639,405,60"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6262\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4262\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 8, + "meridian\",39],PARAMETER[\"scale_factor\",0.9996],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_easting\",500000],PARAMETER[\"false_northing"); + add_srs_wkt (p, 10, + "\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); + add_srs_wkt (p, 11, + "S[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"26237\"]]"); + p = add_epsg_def (filter, first, last, 26331, "epsg", 26331, + "Minna / UTM zone 31N"); + add_proj4text (p, 0, + "+proj=utm +zone=31 +ellps=clrk80 +towgs84=-92,-93,122,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Minna / UTM zone 31N\",GEOGCS[\"Minna\",DATUM[\""); + add_srs_wkt (p, 1, + "Minna\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.4"); + add_srs_wkt (p, 2, + "65,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-92,-93,122,0,0"); + add_srs_wkt (p, 3, + ",0,0],AUTHORITY[\"EPSG\",\"6263\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4263\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); + add_srs_wkt (p, 8, + "dian\",3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 11, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"26331\"]]"); + p = add_epsg_def (filter, first, last, 26332, "epsg", 26332, + "Minna / UTM zone 32N"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +ellps=clrk80 +towgs84=-92,-93,122,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Minna / UTM zone 32N\",GEOGCS[\"Minna\",DATUM[\""); + add_srs_wkt (p, 1, + "Minna\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,293.4"); + add_srs_wkt (p, 2, + "65,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-92,-93,122,0,0"); + add_srs_wkt (p, 3, + ",0,0],AUTHORITY[\"EPSG\",\"6263\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4263\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); + add_srs_wkt (p, 8, + "dian\",9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 11, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"26332\"]]"); + p = add_epsg_def (filter, first, last, 26391, "epsg", 26391, + "Minna / Nigeria West Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4 +lon_0=4.5 +k=0.99975 +x_0=230738.2"); + add_proj4text (p, 1, + "6 +y_0=0 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Minna / Nigeria West Belt\",GEOGCS[\"Minna\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Minna\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145"); + add_srs_wkt (p, 2, + ",293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-92,-93,1"); + add_srs_wkt (p, 3, + "22,0,0,0,0],AUTHORITY[\"EPSG\",\"6263\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4263\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",4],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",4.5],PARAMETER[\"scale_factor\",0.99975],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",230738.26],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"26391\"]]"); + p = add_epsg_def (filter, first, last, 26392, "epsg", 26392, + "Minna / Nigeria Mid Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4 +lon_0=8.5 +k=0.99975 +x_0=670553.9"); + add_proj4text (p, 1, + "8 +y_0=0 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Minna / Nigeria Mid Belt\",GEOGCS[\"Minna\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Minna\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145,"); + add_srs_wkt (p, 2, + "293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-92,-93,12"); + add_srs_wkt (p, 3, + "2,0,0,0,0],AUTHORITY[\"EPSG\",\"6263\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4263\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 7, + ",PARAMETER[\"latitude_of_origin\",4],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",8.5],PARAMETER[\"scale_factor\",0.99975],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",670553.98],PARAMETER[\"false_no"); + add_srs_wkt (p, 10, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"26392\"]]"); + p = add_epsg_def (filter, first, last, 26393, "epsg", 26393, + "Minna / Nigeria East Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=4 +lon_0=12.5 +k=0.99975 +x_0=1110369"); + add_proj4text (p, 1, + ".7 +y_0=0 +ellps=clrk80 +towgs84=-92,-93,122,0,0,0,0 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Minna / Nigeria East Belt\",GEOGCS[\"Minna\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Minna\",SPHEROID[\"Clarke 1880 (RGS)\",6378249.145"); + add_srs_wkt (p, 2, + ",293.465,AUTHORITY[\"EPSG\",\"7012\"]],TOWGS84[-92,-93,1"); + add_srs_wkt (p, 3, + "22,0,0,0,0],AUTHORITY[\"EPSG\",\"6263\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4263\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",4],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",12.5],PARAMETER[\"scale_factor\",0.99975],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",1110369.7],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 11, + "\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"26393\"]]"); + p = add_epsg_def (filter, first, last, 26432, "epsg", 26432, + "Mhast / UTM zone 32S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +south +ellps=intl +towgs84=-252.95,-"); + add_proj4text (p, 1, + "4.11,-96.38,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Mhast / UTM zone 32S (deprecated)\",GEOGCS[\"Mh"); + add_srs_wkt (p, 1, + "ast\",DATUM[\"Mhast\",SPHEROID[\"International 1924\",63"); + add_srs_wkt (p, 2, + "78388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-252.95,"); + add_srs_wkt (p, 3, + "-4.11,-96.38,0,0,0,0],AUTHORITY[\"EPSG\",\"6264\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4264\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",9],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"26432\"]]"); + p = add_epsg_def (filter, first, last, 26591, "epsg", 26591, + "Monte Mario (Rome) / Italy zone 1 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-3.45233333333333 +k=0.9996 "); + add_proj4text (p, 1, + "+x_0=1500000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9"); + add_proj4text (p, 2, + ".9,0.971,-2.917,0.714,-11.68 +pm=rome +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Monte Mario (Rome) / Italy zone 1 (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"Monte Mario (Rome)\",DATUM[\"Monte_Mario_Rome\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7022\"]],TOWGS84[-104.1,-49.1,-9.9,0.971,-2.917"); + add_srs_wkt (p, 4, + ",0.714,-11.68],AUTHORITY[\"EPSG\",\"6806\"]],PRIMEM[\"Ro"); + add_srs_wkt (p, 5, + "me\",12.45233333333333,AUTHORITY[\"EPSG\",\"8906\"]],UNI"); + add_srs_wkt (p, 6, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 7, + "2\"]],AUTHORITY[\"EPSG\",\"4806\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 8, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 9, + "METER[\"central_meridian\",-3.45233333333333],PARAMETER["); + add_srs_wkt (p, 10, + "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",150"); + add_srs_wkt (p, 11, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"26591\"]]"); + p = add_epsg_def (filter, first, last, 26592, "epsg", 26592, + "Monte Mario (Rome) / Italy zone 2 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=2.54766666666666 +k=0.9996 +"); + add_proj4text (p, 1, + "x_0=2520000 +y_0=0 +ellps=intl +towgs84=-104.1,-49.1,-9."); + add_proj4text (p, 2, + "9,0.971,-2.917,0.714,-11.68 +pm=rome +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Monte Mario (Rome) / Italy zone 2 (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"Monte Mario (Rome)\",DATUM[\"Monte_Mario_Rome\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"International 1924\",6378388,297,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7022\"]],TOWGS84[-104.1,-49.1,-9.9,0.971,-2.917"); + add_srs_wkt (p, 4, + ",0.714,-11.68],AUTHORITY[\"EPSG\",\"6806\"]],PRIMEM[\"Ro"); + add_srs_wkt (p, 5, + "me\",12.45233333333333,AUTHORITY[\"EPSG\",\"8906\"]],UNI"); + add_srs_wkt (p, 6, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 7, + "2\"]],AUTHORITY[\"EPSG\",\"4806\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 8, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 9, + "METER[\"central_meridian\",2.54766666666666],PARAMETER[\""); + add_srs_wkt (p, 10, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",25200"); + add_srs_wkt (p, 11, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 13, + "ORTH],AUTHORITY[\"EPSG\",\"26592\"]]"); + p = add_epsg_def (filter, first, last, 26632, "epsg", 26632, + "M'poraloko / UTM zone 32N"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +a=6378249.2 +b=6356515 +towgs84=-74,"); + add_proj4text (p, 1, + "-130,42,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"M'poraloko / UTM zone 32N\",GEOGCS[\"M'poraloko"); + add_srs_wkt (p, 1, + "\",DATUM[\"M_poraloko\",SPHEROID[\"Clarke 1880 (IGN)\",6"); + add_srs_wkt (p, 2, + "378249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[-74,-130,42,0,0,0,0],AUTHORITY[\"EPSG\",\"6266\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4266\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",9],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"26632\"]]"); + p = add_epsg_def (filter, first, last, 26692, "epsg", 26692, + "M'poraloko / UTM zone 32S"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +towgs"); + add_proj4text (p, 1, + "84=-74,-130,42,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"M'poraloko / UTM zone 32S\",GEOGCS[\"M'poraloko"); + add_srs_wkt (p, 1, + "\",DATUM[\"M_poraloko\",SPHEROID[\"Clarke 1880 (IGN)\",6"); + add_srs_wkt (p, 2, + "378249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[-74,-130,42,0,0,0,0],AUTHORITY[\"EPSG\",\"6266\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4266\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",9],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 12, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"26692\"]]"); + p = add_epsg_def (filter, first, last, 26701, "epsg", 26701, + "NAD27 / UTM zone 1N"); + add_proj4text (p, 0, + "+proj=utm +zone=1 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 1N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "26701\"]]"); + p = add_epsg_def (filter, first, last, 26702, "epsg", 26702, + "NAD27 / UTM zone 2N"); + add_proj4text (p, 0, + "+proj=utm +zone=2 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 2N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "171],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "26702\"]]"); + p = add_epsg_def (filter, first, last, 26703, "epsg", 26703, + "NAD27 / UTM zone 3N"); + add_proj4text (p, 0, + "+proj=utm +zone=3 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 3N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "165],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "26703\"]]"); + p = add_epsg_def (filter, first, last, 26704, "epsg", 26704, + "NAD27 / UTM zone 4N"); + add_proj4text (p, 0, + "+proj=utm +zone=4 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 4N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "159],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "26704\"]]"); + p = add_epsg_def (filter, first, last, 26705, "epsg", 26705, + "NAD27 / UTM zone 5N"); + add_proj4text (p, 0, + "+proj=utm +zone=5 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 5N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "153],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "26705\"]]"); + p = add_epsg_def (filter, first, last, 26706, "epsg", 26706, + "NAD27 / UTM zone 6N"); + add_proj4text (p, 0, + "+proj=utm +zone=6 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 6N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "147],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "26706\"]]"); + p = add_epsg_def (filter, first, last, 26707, "epsg", 26707, + "NAD27 / UTM zone 7N"); + add_proj4text (p, 0, + "+proj=utm +zone=7 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 7N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "141],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "26707\"]]"); + p = add_epsg_def (filter, first, last, 26708, "epsg", 26708, + "NAD27 / UTM zone 8N"); + add_proj4text (p, 0, + "+proj=utm +zone=8 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 8N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "135],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "26708\"]]"); + p = add_epsg_def (filter, first, last, 26709, "epsg", 26709, + "NAD27 / UTM zone 9N"); + add_proj4text (p, 0, + "+proj=utm +zone=9 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 9N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "129],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "26709\"]]"); + p = add_epsg_def (filter, first, last, 26710, "epsg", 26710, + "NAD27 / UTM zone 10N"); + add_proj4text (p, 0, + "+proj=utm +zone=10 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 10N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "123],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "26710\"]]"); + p = add_epsg_def (filter, first, last, 26711, "epsg", 26711, + "NAD27 / UTM zone 11N"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 11N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "26711\"]]"); + p = add_epsg_def (filter, first, last, 26712, "epsg", 26712, + "NAD27 / UTM zone 12N"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 12N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "26712\"]]"); + p = add_epsg_def (filter, first, last, 26713, "epsg", 26713, + "NAD27 / UTM zone 13N"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 13N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "26713\"]]"); + p = add_epsg_def (filter, first, last, 26714, "epsg", 26714, + "NAD27 / UTM zone 14N"); + add_proj4text (p, 0, + "+proj=utm +zone=14 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 14N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "99],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 12, + "6714\"]]"); + p = add_epsg_def (filter, first, last, 26715, "epsg", 26715, + "NAD27 / UTM zone 15N"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 15N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "93],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 12, + "6715\"]]"); + p = add_epsg_def (filter, first, last, 26716, "epsg", 26716, + "NAD27 / UTM zone 16N"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 16N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "87],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 12, + "6716\"]]"); + p = add_epsg_def (filter, first, last, 26717, "epsg", 26717, + "NAD27 / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 17N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 12, + "6717\"]]"); + p = add_epsg_def (filter, first, last, 26718, "epsg", 26718, + "NAD27 / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 18N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 12, + "6718\"]]"); + p = add_epsg_def (filter, first, last, 26719, "epsg", 26719, + "NAD27 / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 19N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 12, + "6719\"]]"); + p = add_epsg_def (filter, first, last, 26720, "epsg", 26720, + "NAD27 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 20N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 12, + "6720\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_36.c b/src/spatialite/src/srsinit/epsg_inlined_36.c new file mode 100644 index 0000000..ff68c40 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_36.c @@ -0,0 +1,3710 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_36 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 26721, "epsg", 26721, + "NAD27 / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 21N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 12, + "6721\"]]"); + p = add_epsg_def (filter, first, last, 26722, "epsg", 26722, + "NAD27 / UTM zone 22N"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / UTM zone 22N\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 12, + "6722\"]]"); + p = add_epsg_def (filter, first, last, 26729, "epsg", 26729, + "NAD27 / Alabama East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.9"); + add_proj4text (p, 1, + "9996 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alabama East\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",30.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-85.83333333333333],PARAMETER[\"scale_factor\",0.99996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"US survey foot\",0.3048006096012192,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"26729\"]]"); + p = add_epsg_def (filter, first, last, 26730, "epsg", 26730, + "NAD27 / Alabama West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=1"); + add_proj4text (p, 1, + "52400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alabama West\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",30],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 8, + "-87.5],PARAMETER[\"scale_factor\",0.999933333],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_easting\",500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"26730\"]]"); + p = add_epsg_def (filter, first, last, 26731, "epsg", 26731, + "NAD27 / Alaska zone 1"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=32"); + add_proj4text (p, 1, + "3.1301023611111 +k=0.9999 +x_0=5000000.001016002 +y_0=-5"); + add_proj4text (p, 2, + "000000.001016002 +no_uoff +gamma=323.1301023611111 +datu"); + add_proj4text (p, 3, + "m=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alaska zone 1\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Hotine_Oblique_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_center\",57],PARAMETER[\"longitude_of"); + add_srs_wkt (p, 8, + "_center\",-133.6666666666667],PARAMETER[\"azimuth\",323."); + add_srs_wkt (p, 9, + "1301023611111],PARAMETER[\"rectified_grid_angle\",323.13"); + add_srs_wkt (p, 10, + "01023611111],PARAMETER[\"scale_factor\",0.9999],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_easting\",16404166.67],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",-16404166.67],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 13, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 14, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26731\"]]"); + p = add_epsg_def (filter, first, last, 26732, "epsg", 26732, + "NAD27 / Alaska zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=152400."); + add_proj4text (p, 1, + "3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alaska zone 2\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-142],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"26732\"]]"); + p = add_epsg_def (filter, first, last, 26733, "epsg", 26733, + "NAD27 / Alaska zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=152400."); + add_proj4text (p, 1, + "3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alaska zone 3\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-146],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"26733\"]]"); + p = add_epsg_def (filter, first, last, 26734, "epsg", 26734, + "NAD27 / Alaska zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=152400."); + add_proj4text (p, 1, + "3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alaska zone 4\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-150],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"26734\"]]"); + p = add_epsg_def (filter, first, last, 26735, "epsg", 26735, + "NAD27 / Alaska zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=152400."); + add_proj4text (p, 1, + "3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alaska zone 5\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-154],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"26735\"]]"); + p = add_epsg_def (filter, first, last, 26736, "epsg", 26736, + "NAD27 / Alaska zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=152400."); + add_proj4text (p, 1, + "3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alaska zone 6\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-158],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"26736\"]]"); + p = add_epsg_def (filter, first, last, 26737, "epsg", 26737, + "NAD27 / Alaska zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=213360."); + add_proj4text (p, 1, + "4267208534 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alaska zone 7\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-162],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",700000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"26737\"]]"); + p = add_epsg_def (filter, first, last, 26738, "epsg", 26738, + "NAD27 / Alaska zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=152400."); + add_proj4text (p, 1, + "3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alaska zone 8\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-166],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"26738\"]]"); + p = add_epsg_def (filter, first, last, 26739, "epsg", 26739, + "NAD27 / Alaska zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=182880."); + add_proj4text (p, 1, + "3657607315 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alaska zone 9\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",54],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-170],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_easting\",600000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 10, + "UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"26739\"]]"); + p = add_epsg_def (filter, first, last, 26740, "epsg", 26740, + "NAD27 / Alaska zone 10"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333"); + add_proj4text (p, 1, + "334 +lat_0=51 +lon_0=-176 +x_0=914401.8288036576 +y_0=0 "); + add_proj4text (p, 2, + "+datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Alaska zone 10\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",53.83333333333334],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",51.83333333333334],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",51],PARAMETER[\"central_merid"); + add_srs_wkt (p, 10, + "ian\",-176],PARAMETER[\"false_easting\",3000000],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_northing\",0],UNIT[\"US survey foot\",0.30480"); + add_srs_wkt (p, 12, + "06096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 13, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26740\"]]"); + p = add_epsg_def (filter, first, last, 26741, "epsg", 26741, + "NAD27 / California zone I"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); + add_proj4text (p, 1, + "3333333333334 +lon_0=-122 +x_0=609601.2192024384 +y_0=0 "); + add_proj4text (p, 2, + "+datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / California zone I\",GEOGCS[\"NAD27\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866"); + add_srs_wkt (p, 2, + "\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"standard_parallel_1\",41.66666666666666],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_2\",40],PARAMETER[\"latitud"); + add_srs_wkt (p, 9, + "e_of_origin\",39.33333333333334],PARAMETER[\"central_mer"); + add_srs_wkt (p, 10, + "idian\",-122],PARAMETER[\"false_easting\",2000000],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); + add_srs_wkt (p, 12, + "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 13, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26741\"]]"); + p = add_epsg_def (filter, first, last, 26742, "epsg", 26742, + "NAD27 / California zone II"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=609601.219"); + add_proj4text (p, 2, + "2024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / California zone II\",GEOGCS[\"NAD27\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); + add_srs_wkt (p, 2, + "6\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",39.83333333333334]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",38.33333333333334],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"latitude_of_origin\",37.66666666666666],PARAME"); + add_srs_wkt (p, 10, + "TER[\"central_meridian\",-122],PARAMETER[\"false_easting"); + add_srs_wkt (p, 11, + "\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US su"); + add_srs_wkt (p, 12, + "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); + add_srs_wkt (p, 13, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 14, + "\",\"26742\"]]"); + p = add_epsg_def (filter, first, last, 26743, "epsg", 26743, + "NAD27 / California zone III"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.5 +lon_0=-120.5 +x_0=609601.2192024384 +y_"); + add_proj4text (p, 2, + "0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / California zone III\",GEOGCS[\"NAD27\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 18"); + add_srs_wkt (p, 2, + "66\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "08\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",38.43333333333333]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",37.06666666666667],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"latitude_of_origin\",36.5],PARAMETER[\"central"); + add_srs_wkt (p, 10, + "_meridian\",-120.5],PARAMETER[\"false_easting\",2000000]"); + add_srs_wkt (p, 11, + ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 12, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26743\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 26744, "epsg", 26744, + "NAD27 / California zone IV"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); + add_proj4text (p, 1, + "4 +lon_0=-119 +x_0=609601.2192024384 +y_0=0 +datum=NAD27"); + add_proj4text (p, 2, + " +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / California zone IV\",GEOGCS[\"NAD27\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); + add_srs_wkt (p, 2, + "6\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",37.25],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_2\",36],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 9, + "\",35.33333333333334],PARAMETER[\"central_meridian\",-11"); + add_srs_wkt (p, 10, + "9],PARAMETER[\"false_easting\",2000000],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 12, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"26744\"]]"); + p = add_epsg_def (filter, first, last, 26745, "epsg", 26745, + "NAD27 / California zone V"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.5 +lon_0=-118 +x_0=609601.2192024384 +y_0="); + add_proj4text (p, 2, + "0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / California zone V\",GEOGCS[\"NAD27\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866"); + add_srs_wkt (p, 2, + "\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"standard_parallel_1\",35.46666666666667],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_2\",34.03333333333333],PARA"); + add_srs_wkt (p, 9, + "METER[\"latitude_of_origin\",33.5],PARAMETER[\"central_m"); + add_srs_wkt (p, 10, + "eridian\",-118],PARAMETER[\"false_easting\",2000000],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); + add_srs_wkt (p, 12, + "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26745\"]]"); + p = add_epsg_def (filter, first, last, 26746, "epsg", 26746, + "NAD27 / California zone VI"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=609601."); + add_proj4text (p, 2, + "2192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / California zone VI\",GEOGCS[\"NAD27\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); + add_srs_wkt (p, 2, + "6\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",33.88333333333333]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",32.78333333333333],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"latitude_of_origin\",32.16666666666666],PARAME"); + add_srs_wkt (p, 10, + "TER[\"central_meridian\",-116.25],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US"); + add_srs_wkt (p, 12, + " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 13, + "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 14, + "PSG\",\"26746\"]]"); + p = add_epsg_def (filter, first, last, 26747, "epsg", 26747, + "NAD27 / California zone VII (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666"); + add_proj4text (p, 1, + "667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +"); + add_proj4text (p, 2, + "x_0=1276106.450596901 +y_0=127079.524511049 +datum=NAD27"); + add_proj4text (p, 3, + " +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / California zone VII (deprecated)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4267\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",34.4"); + add_srs_wkt (p, 8, + "1666666666666],PARAMETER[\"standard_parallel_2\",33.8666"); + add_srs_wkt (p, 9, + "6666666667],PARAMETER[\"latitude_of_origin\",34.13333333"); + add_srs_wkt (p, 10, + "333333],PARAMETER[\"central_meridian\",-118.333333333333"); + add_srs_wkt (p, 11, + "3],PARAMETER[\"false_easting\",4186692.58],PARAMETER[\"f"); + add_srs_wkt (p, 12, + "alse_northing\",416926.74],UNIT[\"US survey foot\",0.304"); + add_srs_wkt (p, 13, + "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 14, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26747\"]]"); + p = add_epsg_def (filter, first, last, 26748, "epsg", 26748, + "NAD27 / Arizona East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-f"); + add_proj4text (p, 2, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Arizona East\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",31],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 8, + "-110.1666666666667],PARAMETER[\"scale_factor\",0.9999],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"26748\"]]"); + p = add_epsg_def (filter, first, last, 26749, "epsg", 26749, + "NAD27 / Arizona Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-f"); + add_proj4text (p, 2, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Arizona Central\",GEOGCS[\"NAD27\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",31],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 8, + "n\",-111.9166666666667],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"US survey foot\",0.304800609601219"); + add_srs_wkt (p, 11, + "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"26749\"]]"); + p = add_epsg_def (filter, first, last, 26750, "epsg", 26750, + "NAD27 / Arizona West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); + add_proj4text (p, 1, + "=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Arizona West\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",31],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 8, + "-113.75],PARAMETER[\"scale_factor\",0.999933333],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_easting\",500000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 10, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"26750\"]]"); + p = add_epsg_def (filter, first, last, 26751, "epsg", 26751, + "NAD27 / Arkansas North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=609601.2192"); + add_proj4text (p, 2, + "024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Arkansas North\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",36.23333333333333],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",34.93333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",34.33333333333334],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-92],PARAMETER[\"false_easting\",20"); + add_srs_wkt (p, 11, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"US survey "); + add_srs_wkt (p, 12, + "foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],"); + add_srs_wkt (p, 13, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "26751\"]]"); + p = add_epsg_def (filter, first, last, 26752, "epsg", 26752, + "NAD27 / Arkansas South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-92 +x_0=609601.2192024384 +y_0=0"); + add_proj4text (p, 2, + " +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Arkansas South\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",34.76666666666667],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",33.3],PARAMETER[\"latitud"); + add_srs_wkt (p, 9, + "e_of_origin\",32.66666666666666],PARAMETER[\"central_mer"); + add_srs_wkt (p, 10, + "idian\",-92],PARAMETER[\"false_easting\",2000000],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); + add_srs_wkt (p, 12, + "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26752\"]]"); + p = add_epsg_def (filter, first, last, 26753, "epsg", 26753, + "NAD27 / Colorado North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.71666666666667 +lat_2=40.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=609601.2"); + add_proj4text (p, 2, + "192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Colorado North\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",39.71666666666667],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",40.78333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",39.33333333333334],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-105.5],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); + add_srs_wkt (p, 12, + "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"26753\"]]"); + p = add_epsg_def (filter, first, last, 26754, "epsg", 26754, + "NAD27 / Colorado Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); + add_proj4text (p, 1, + "3334 +lon_0=-105.5 +x_0=609601.2192024384 +y_0=0 +datum="); + add_proj4text (p, 2, + "NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Colorado Central\",GEOGCS[\"NAD27\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",39.75],PARAMETER[\"sta"); + add_srs_wkt (p, 8, + "ndard_parallel_2\",38.45],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 9, + "\",37.83333333333334],PARAMETER[\"central_meridian\",-10"); + add_srs_wkt (p, 10, + "5.5],PARAMETER[\"false_easting\",2000000],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); + add_srs_wkt (p, 12, + "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 13, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26754\"]]"); + p = add_epsg_def (filter, first, last, 26755, "epsg", 26755, + "NAD27 / Colorado South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=609601.2"); + add_proj4text (p, 2, + "192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Colorado South\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",38.43333333333333],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",37.23333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",36.66666666666666],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-105.5],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); + add_srs_wkt (p, 12, + "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"26755\"]]"); + p = add_epsg_def (filter, first, last, 26756, "epsg", 26756, + "NAD27 / Connecticut"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); + add_proj4text (p, 1, + ".83333333333334 +lon_0=-72.75 +x_0=182880.3657607315 +y_"); + add_proj4text (p, 2, + "0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Connecticut\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 7, + "AMETER[\"standard_parallel_1\",41.86666666666667],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_2\",41.2],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 9, + "f_origin\",40.83333333333334],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 10, + "an\",-72.75],PARAMETER[\"false_easting\",600000],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_northing\",0],UNIT[\"US survey foot\",0.30480"); + add_srs_wkt (p, 12, + "06096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 13, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26756\"]]"); + p = add_epsg_def (filter, first, last, 26757, "epsg", 26757, + "NAD27 / Delaware"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); + add_proj4text (p, 1, + "995 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us"); + add_proj4text (p, 2, + "-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Delaware\",GEOGCS[\"NAD27\",DATUM[\"Nor"); + add_srs_wkt (p, 1, + "th_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637820"); + add_srs_wkt (p, 2, + "6.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"426"); + add_srs_wkt (p, 6, + "7\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 7, + "titude_of_origin\",38],PARAMETER[\"central_meridian\",-7"); + add_srs_wkt (p, 8, + "5.41666666666667],PARAMETER[\"scale_factor\",0.999995],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"26757\"]]"); + p = add_epsg_def (filter, first, last, 26758, "epsg", 26758, + "NAD27 / Florida East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units"); + add_proj4text (p, 2, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Florida East\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",24.33333333333333],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-81],PARAMETER[\"scale_factor\",0.9999411"); + add_srs_wkt (p, 9, + "77],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 11, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"26758\"]]"); + p = add_epsg_def (filter, first, last, 26759, "epsg", 26759, + "NAD27 / Florida West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units"); + add_proj4text (p, 2, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Florida West\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",24.33333333333333],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-82],PARAMETER[\"scale_factor\",0.9999411"); + add_srs_wkt (p, 9, + "77],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 11, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"26759\"]]"); + p = add_epsg_def (filter, first, last, 26760, "epsg", 26760, + "NAD27 / Florida North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); + add_proj4text (p, 1, + "9 +lon_0=-84.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD2"); + add_proj4text (p, 2, + "7 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Florida North\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"standard_parallel_1\",30.75],PARAMETER[\"stan"); + add_srs_wkt (p, 8, + "dard_parallel_2\",29.58333333333333],PARAMETER[\"latitud"); + add_srs_wkt (p, 9, + "e_of_origin\",29],PARAMETER[\"central_meridian\",-84.5],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",2000000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"US survey foot\",0.3048006096012192,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"26760\"]]"); + p = add_epsg_def (filter, first, last, 26766, "epsg", 26766, + "NAD27 / Georgia East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-f"); + add_proj4text (p, 2, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Georgia East\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",30],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 8, + "-82.16666666666667],PARAMETER[\"scale_factor\",0.9999],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"26766\"]]"); + p = add_epsg_def (filter, first, last, 26767, "epsg", 26767, + "NAD27 / Georgia West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-f"); + add_proj4text (p, 2, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Georgia West\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",30],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 8, + "-84.16666666666667],PARAMETER[\"scale_factor\",0.9999],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",500000],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"US survey foot\",0.3048006096012192,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"26767\"]]"); + p = add_epsg_def (filter, first, last, 26768, "epsg", 26768, + "NAD27 / Idaho East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); + add_proj4text (p, 1, + "666667 +k=0.9999473679999999 +x_0=152400.3048006096 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Idaho East\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",41.66666666666666],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-112.1666666666667],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.999947368],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); + add_srs_wkt (p, 11, + ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26768\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 26769, "epsg", 26769, + "NAD27 / Idaho Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); + add_proj4text (p, 1, + "99473679999999 +x_0=152400.3048006096 +y_0=0 +datum=NAD2"); + add_proj4text (p, 2, + "7 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Idaho Central\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",41.66666666666666],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-114],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "947368],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 11, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26769\"]]"); + p = add_epsg_def (filter, first, last, 26770, "epsg", 26770, + "NAD27 / Idaho West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); + add_proj4text (p, 1, + ".999933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +u"); + add_proj4text (p, 2, + "nits=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Idaho West\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",41.66666666666666],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-115.75],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "933333],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 11, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26770\"]]"); + p = add_epsg_def (filter, first, last, 26771, "epsg", 26771, + "NAD27 / Illinois East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); + add_proj4text (p, 1, + "333333 +k=0.9999749999999999 +x_0=152400.3048006096 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Illinois East\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",36.66666666666666],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-88.33333333333333],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.999975],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); + add_srs_wkt (p, 11, + ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26771\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 26772, "epsg", 26772, + "NAD27 / Illinois West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +dat"); + add_proj4text (p, 2, + "um=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Illinois West\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",36.66666666666666],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-90.16666666666667],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.999941177],PARAMETER[\"false_easting\",500000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 11, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26772\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 26773, "epsg", 26773, + "NAD27 / Indiana East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +uni"); + add_proj4text (p, 2, + "ts=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Indiana East\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",37.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-85.66666666666667],PARAMETER[\"scale_factor\",0.999966"); + add_srs_wkt (p, 9, + "667],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 11, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26773\"]]"); + p = add_epsg_def (filter, first, last, 26774, "epsg", 26774, + "NAD27 / Indiana West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +uni"); + add_proj4text (p, 2, + "ts=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Indiana West\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",37.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-87.08333333333333],PARAMETER[\"scale_factor\",0.999966"); + add_srs_wkt (p, 9, + "667],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 11, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26774\"]]"); + p = add_epsg_def (filter, first, last, 26775, "epsg", 26775, + "NAD27 / Iowa North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=41.5 +lon_0=-93.5 +x_0=609601.2192024384 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Iowa North\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"standard_parallel_1\",43.26666666666667],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_2\",42.06666666666667],PARAMETER["); + add_srs_wkt (p, 9, + "\"latitude_of_origin\",41.5],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 10, + "n\",-93.5],PARAMETER[\"false_easting\",2000000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); + add_srs_wkt (p, 12, + "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); + add_srs_wkt (p, 13, + "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26775\"]]"); + p = add_epsg_def (filter, first, last, 26776, "epsg", 26776, + "NAD27 / Iowa South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); + add_proj4text (p, 1, + "667 +lat_0=40 +lon_0=-93.5 +x_0=609601.2192024384 +y_0=0"); + add_proj4text (p, 2, + " +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Iowa South\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"standard_parallel_1\",41.78333333333333],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_2\",40.61666666666667],PARAMETER["); + add_srs_wkt (p, 9, + "\"latitude_of_origin\",40],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",-93.5],PARAMETER[\"false_easting\",2000000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 12, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26776\"]]"); + p = add_epsg_def (filter, first, last, 26777, "epsg", 26777, + "NAD27 / Kansas North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=609601.2192"); + add_proj4text (p, 2, + "024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Kansas North\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 7, + "AMETER[\"standard_parallel_1\",39.78333333333333],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_2\",38.71666666666667],PARAMETER"); + add_srs_wkt (p, 9, + "[\"latitude_of_origin\",38.33333333333334],PARAMETER[\"c"); + add_srs_wkt (p, 10, + "entral_meridian\",-98],PARAMETER[\"false_easting\",20000"); + add_srs_wkt (p, 11, + "00],PARAMETER[\"false_northing\",0],UNIT[\"US survey foo"); + add_srs_wkt (p, 12, + "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); + add_srs_wkt (p, 13, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"267"); + add_srs_wkt (p, 14, + "77\"]]"); + p = add_epsg_def (filter, first, last, 26778, "epsg", 26778, + "NAD27 / Kansas South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=609601.21"); + add_proj4text (p, 2, + "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Kansas South\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 7, + "AMETER[\"standard_parallel_1\",38.56666666666667],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_2\",37.26666666666667],PARAMETER"); + add_srs_wkt (p, 9, + "[\"latitude_of_origin\",36.66666666666666],PARAMETER[\"c"); + add_srs_wkt (p, 10, + "entral_meridian\",-98.5],PARAMETER[\"false_easting\",200"); + add_srs_wkt (p, 11, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"US survey f"); + add_srs_wkt (p, 12, + "oot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],A"); + add_srs_wkt (p, 13, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2"); + add_srs_wkt (p, 14, + "6778\"]]"); + p = add_epsg_def (filter, first, last, 26779, "epsg", 26779, + "NAD27 / Kentucky North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=38.96666666666"); + add_proj4text (p, 1, + "667 +lat_0=37.5 +lon_0=-84.25 +x_0=609601.2192024384 +y_"); + add_proj4text (p, 2, + "0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Kentucky North\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",37.96666666666667],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",38.96666666666667],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",37.5],PARAMETER[\"central_mer"); + add_srs_wkt (p, 10, + "idian\",-84.25],PARAMETER[\"false_easting\",2000000],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); + add_srs_wkt (p, 12, + "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26779\"]]"); + p = add_epsg_def (filter, first, last, 26780, "epsg", 26780, + "NAD27 / Kentucky South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.73333333333333 +lat_2=37.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=609601.2"); + add_proj4text (p, 2, + "192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Kentucky South\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",36.73333333333333],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",37.93333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",36.33333333333334],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-85.75],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); + add_srs_wkt (p, 12, + "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"26780\"]]"); + p = add_epsg_def (filter, first, last, 26781, "epsg", 26781, + "NAD27 / Louisiana North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=31.16666666666667 +lat_2=32.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=30.66666666666667 +lon_0=-92.5 +x_0=609601.21"); + add_proj4text (p, 2, + "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Louisiana North\",GEOGCS[\"NAD27\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",31.16666666666667],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",32.66666666666666],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",30.66666666666667],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-92.5],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 11, + "2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surve"); + add_srs_wkt (p, 12, + "y foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]"); + add_srs_wkt (p, 13, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"26781\"]]"); + p = add_epsg_def (filter, first, last, 26782, "epsg", 26782, + "NAD27 / Louisiana South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=29.3 +lat_2=30.7 +lat_0=28.666666666666"); + add_proj4text (p, 1, + "67 +lon_0=-91.33333333333333 +x_0=609601.2192024384 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Louisiana South\",GEOGCS[\"NAD27\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",29.3],PARAMETER[\"stan"); + add_srs_wkt (p, 8, + "dard_parallel_2\",30.7],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 9, + ",28.66666666666667],PARAMETER[\"central_meridian\",-91.3"); + add_srs_wkt (p, 10, + "3333333333333],PARAMETER[\"false_easting\",2000000],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 12, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 13, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26782\"]]"); + p = add_epsg_def (filter, first, last, 26783, "epsg", 26783, + "NAD27 / Maine East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.83333333333334 +lon_0=-68.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=us"); + add_proj4text (p, 2, + "-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Maine East\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",43.83333333333334],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-68.5],PARAMETER[\"scale_factor\",0.9999]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"US survey foot\",0.3048006096012192,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"26783\"]]"); + p = add_epsg_def (filter, first, last, 26784, "epsg", 26784, + "NAD27 / Maine West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=152400.3048006096 +y_0=0 +dat"); + add_proj4text (p, 2, + "um=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Maine West\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",42.83333333333334],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-70.16666666666667],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.999966667],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); + add_srs_wkt (p, 11, + ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26784\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 26785, "epsg", 26785, + "NAD27 / Maryland"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.3 +lat_2=39.45 +lat_0=37.83333333333"); + add_proj4text (p, 1, + "334 +lon_0=-77 +x_0=243840.4876809754 +y_0=0 +datum=NAD2"); + add_proj4text (p, 2, + "7 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Maryland\",GEOGCS[\"NAD27\",DATUM[\"Nor"); + add_srs_wkt (p, 1, + "th_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637820"); + add_srs_wkt (p, 2, + "6.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AUTH"); + add_srs_wkt (p, 3, + "ORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 4, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 5, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"426"); + add_srs_wkt (p, 6, + "7\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); + add_srs_wkt (p, 7, + "TER[\"standard_parallel_1\",38.3],PARAMETER[\"standard_p"); + add_srs_wkt (p, 8, + "arallel_2\",39.45],PARAMETER[\"latitude_of_origin\",37.8"); + add_srs_wkt (p, 9, + "3333333333334],PARAMETER[\"central_meridian\",-77],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_easting\",800000.0000000002],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); + add_srs_wkt (p, 12, + "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 13, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26785\"]]"); + p = add_epsg_def (filter, first, last, 26786, "epsg", 26786, + "NAD27 / Massachusetts Mainland"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.71666666666667 +lat_2=42.68333333333"); + add_proj4text (p, 1, + "333 +lat_0=41 +lon_0=-71.5 +x_0=182880.3657607315 +y_0=0"); + add_proj4text (p, 2, + " +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Massachusetts Mainland\",GEOGCS[\"NAD27"); + add_srs_wkt (p, 1, + "\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke"); + add_srs_wkt (p, 2, + " 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 7, + "SP\"],PARAMETER[\"standard_parallel_1\",41.7166666666666"); + add_srs_wkt (p, 8, + "7],PARAMETER[\"standard_parallel_2\",42.68333333333333],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",41],PARAMETER[\"central"); + add_srs_wkt (p, 10, + "_meridian\",-71.5],PARAMETER[\"false_easting\",600000],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); + add_srs_wkt (p, 12, + ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); + add_srs_wkt (p, 13, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26786\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 26787, "epsg", 26787, + "NAD27 / Massachusetts Island"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.28333333333333 +lat_2=41.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=41 +lon_0=-70.5 +x_0=60960.12192024384 +y_0=0"); + add_proj4text (p, 2, + " +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Massachusetts Island\",GEOGCS[\"NAD27\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1"); + add_srs_wkt (p, 2, + "866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 7, + "SP\"],PARAMETER[\"standard_parallel_1\",41.2833333333333"); + add_srs_wkt (p, 8, + "3],PARAMETER[\"standard_parallel_2\",41.48333333333333],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",41],PARAMETER[\"central"); + add_srs_wkt (p, 10, + "_meridian\",-70.5],PARAMETER[\"false_easting\",200000],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); + add_srs_wkt (p, 12, + ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); + add_srs_wkt (p, 13, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26787\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 26791, "epsg", 26791, + "NAD27 / Minnesota North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.03333333333333 +lat_2=48.63333333333"); + add_proj4text (p, 1, + "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=609601.21"); + add_proj4text (p, 2, + "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Minnesota North\",GEOGCS[\"NAD27\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",47.03333333333333],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",48.63333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",46.5],PARAMETER[\"central_mer"); + add_srs_wkt (p, 10, + "idian\",-93.1],PARAMETER[\"false_easting\",2000000],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 12, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 13, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26791\"]]"); + p = add_epsg_def (filter, first, last, 26792, "epsg", 26792, + "NAD27 / Minnesota Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.61666666666667 +lat_2=47.05 +lat_0=4"); + add_proj4text (p, 1, + "5 +lon_0=-94.25 +x_0=609601.2192024384 +y_0=0 +datum=NAD"); + add_proj4text (p, 2, + "27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Minnesota Central\",GEOGCS[\"NAD27\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866"); + add_srs_wkt (p, 2, + "\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"standard_parallel_1\",45.61666666666667],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_2\",47.05],PARAMETER[\"lati"); + add_srs_wkt (p, 9, + "tude_of_origin\",45],PARAMETER[\"central_meridian\",-94."); + add_srs_wkt (p, 10, + "25],PARAMETER[\"false_easting\",2000000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 12, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 13, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26792\"]]"); + p = add_epsg_def (filter, first, last, 26793, "epsg", 26793, + "NAD27 / Minnesota South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.78333333333333 +lat_2=45.21666666666"); + add_proj4text (p, 1, + "667 +lat_0=43 +lon_0=-94 +x_0=609601.2192024384 +y_0=0 +"); + add_proj4text (p, 2, + "datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Minnesota South\",GEOGCS[\"NAD27\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",43.78333333333333],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",45.21666666666667],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",43],PARAMETER[\"central_merid"); + add_srs_wkt (p, 10, + "ian\",-94],PARAMETER[\"false_easting\",2000000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); + add_srs_wkt (p, 12, + "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); + add_srs_wkt (p, 13, + "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26793\"]]"); + p = add_epsg_def (filter, first, last, 26794, "epsg", 26794, + "NAD27 / Mississippi East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.66666666666667 +lon_0=-88.83333333"); + add_proj4text (p, 1, + "333333 +k=0.99996 +x_0=152400.3048006096 +y_0=0 +datum=N"); + add_proj4text (p, 2, + "AD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Mississippi East\",GEOGCS[\"NAD27\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",29.66666666666667],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-88.83333333333333],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.99996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); + add_srs_wkt (p, 11, + ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26794\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 26795, "epsg", 26795, + "NAD27 / Mississippi West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30.5 +lon_0=-90.33333333333333 +k=0.9"); + add_proj4text (p, 1, + "99941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +uni"); + add_proj4text (p, 2, + "ts=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Mississippi West\",GEOGCS[\"NAD27\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",30.5],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",-90.33333333333333],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "99941177],PARAMETER[\"false_easting\",500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"US survey foot\",0.30480060"); + add_srs_wkt (p, 11, + "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26795\"]]"); + p = add_epsg_def (filter, first, last, 26796, "epsg", 26796, + "NAD27 / Missouri East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9"); + add_proj4text (p, 1, + "99933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +uni"); + add_proj4text (p, 2, + "ts=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Missouri East\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",35.83333333333334],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-90.5],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "9933333],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 11, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26796\"]]"); + p = add_epsg_def (filter, first, last, 26797, "epsg", 26797, + "NAD27 / Missouri Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9"); + add_proj4text (p, 1, + "99933333 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +uni"); + add_proj4text (p, 2, + "ts=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Missouri Central\",GEOGCS[\"NAD27\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",35.83333333333334],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-92.5],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "99933333],PARAMETER[\"false_easting\",500000],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_northing\",0],UNIT[\"US survey foot\",0.30480060"); + add_srs_wkt (p, 11, + "96012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26797\"]]"); + p = add_epsg_def (filter, first, last, 26798, "epsg", 26798, + "NAD27 / Missouri West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9"); + add_proj4text (p, 1, + "99941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +uni"); + add_proj4text (p, 2, + "ts=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Missouri West\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",36.16666666666666],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-94.5],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "9941177],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 11, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26798\"]]"); + p = add_epsg_def (filter, first, last, 26799, "epsg", 26799, + "NAD27 / California zone VII"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.41666666666666 +lat_2=33.86666666666"); + add_proj4text (p, 1, + "667 +lat_0=34.13333333333333 +lon_0=-118.3333333333333 +"); + add_proj4text (p, 2, + "x_0=1276106.450596901 +y_0=1268253.006858014 +datum=NAD2"); + add_proj4text (p, 3, + "7 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / California zone VII\",GEOGCS[\"NAD27\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 18"); + add_srs_wkt (p, 2, + "66\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "08\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",34.41666666666666]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",33.86666666666667],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"latitude_of_origin\",34.13333333333333],PARAME"); + add_srs_wkt (p, 10, + "TER[\"central_meridian\",-118.3333333333333],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",4186692.58],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",4160926.74],UNIT[\"US survey foot\",0.3048006096012192,"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"26799\"]]"); + p = add_epsg_def (filter, first, last, 26801, "epsg", 26801, + "NAD Michigan / Michigan East (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.5 +lon_0=-83.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99942857 +x_0=152400.3048006096 +y_0=0 +a=6378450.047548"); + add_proj4text (p, 2, + "896 +b=6356826.621488444 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD Michigan / Michigan East (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD27 Michigan\",DATUM[\"NAD27_Michigan\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"Clarke 1866 Michigan\",6378450.047548896,294.97869716"); + add_srs_wkt (p, 3, + "46739,AUTHORITY[\"EPSG\",\"7009\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6268\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4268\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",41.5],PARAMETER[\"central_meridian\",-83.66666666666667"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",0.999942857],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); + add_srs_wkt (p, 13, + "ITY[\"EPSG\",\"26801\"]]"); + p = add_epsg_def (filter, first, last, 26802, "epsg", 26802, + "NAD Michigan / Michigan Old Central (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.5 +lon_0=-85.75 +k=0.999909091 +x_"); + add_proj4text (p, 1, + "0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=63568"); + add_proj4text (p, 2, + "26.621488444 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD Michigan / Michigan Old Central (deprecated"); + add_srs_wkt (p, 1, + ")\",GEOGCS[\"NAD27 Michigan\",DATUM[\"NAD27_Michigan\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"Clarke 1866 Michigan\",6378450.047548896,294.9"); + add_srs_wkt (p, 3, + "786971646739,AUTHORITY[\"EPSG\",\"7009\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 4, + "PSG\",\"6268\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 5, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4268\"]],PRO"); + add_srs_wkt (p, 7, + "JECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 8, + "_origin\",41.5],PARAMETER[\"central_meridian\",-85.75],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",0.999909091],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"26802\"]]"); + p = add_epsg_def (filter, first, last, 26803, "epsg", 26803, + "NAD Michigan / Michigan West (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.5 +lon_0=-88.75 +k=0.999909091 +x_"); + add_proj4text (p, 1, + "0=152400.3048006096 +y_0=0 +a=6378450.047548896 +b=63568"); + add_proj4text (p, 2, + "26.621488444 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD Michigan / Michigan West (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD27 Michigan\",DATUM[\"NAD27_Michigan\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"Clarke 1866 Michigan\",6378450.047548896,294.97869716"); + add_srs_wkt (p, 3, + "46739,AUTHORITY[\"EPSG\",\"7009\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6268\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4268\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",41.5],PARAMETER[\"central_meridian\",-88.75],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.999909091],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",500000],PARAMETER[\"false_northing\",0],UNIT[\"US surve"); + add_srs_wkt (p, 11, + "y foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]"); + add_srs_wkt (p, 12, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"26803\"]]"); + p = add_epsg_def (filter, first, last, 26811, "epsg", 26811, + "NAD Michigan / Michigan North (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.48333333333333 +lat_2=47.08333333333"); + add_proj4text (p, 1, + "334 +lat_0=44.78333333333333 +lon_0=-87 +x_0=609601.2192"); + add_proj4text (p, 2, + "024384 +y_0=0 +a=6378450.047548896 +b=6356826.621488444 "); + add_proj4text (p, 3, + "+units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD Michigan / Michigan North (deprecated)\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"NAD27 Michigan\",DATUM[\"NAD27_Michigan\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Clarke 1866 Michigan\",6378450.047548896,294.9786971"); + add_srs_wkt (p, 3, + "646739,AUTHORITY[\"EPSG\",\"7009\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6268\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4268\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); + add_srs_wkt (p, 8, + "parallel_1\",45.48333333333333],PARAMETER[\"standard_par"); + add_srs_wkt (p, 9, + "allel_2\",47.08333333333334],PARAMETER[\"latitude_of_ori"); + add_srs_wkt (p, 10, + "gin\",44.78333333333333],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 11, + "-87],PARAMETER[\"false_easting\",2000000],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); + add_srs_wkt (p, 13, + "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 14, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26811\"]]"); + p = add_epsg_def (filter, first, last, 26812, "epsg", 26812, + "NAD Michigan / Michigan Central (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.18333333333333 +lat_2=45.7 +lat_0=43"); + add_proj4text (p, 1, + ".31666666666667 +lon_0=-84.33333333333333 +x_0=609601.21"); + add_proj4text (p, 2, + "92024384 +y_0=0 +a=6378450.047548896 +b=6356826.62148844"); + add_proj4text (p, 3, + "4 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD Michigan / Michigan Central (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"NAD27 Michigan\",DATUM[\"NAD27_Michigan\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Clarke 1866 Michigan\",6378450.047548896,294.97869"); + add_srs_wkt (p, 3, + "71646739,AUTHORITY[\"EPSG\",\"7009\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6268\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4268\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",44.18333333333333],PARAMETER[\"standard_pa"); + add_srs_wkt (p, 9, + "rallel_2\",45.7],PARAMETER[\"latitude_of_origin\",43.316"); + add_srs_wkt (p, 10, + "66666666667],PARAMETER[\"central_meridian\",-84.33333333"); + add_srs_wkt (p, 11, + "333333],PARAMETER[\"false_easting\",2000000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 13, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 14, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26812\"]]"); + p = add_epsg_def (filter, first, last, 26813, "epsg", 26813, + "NAD Michigan / Michigan South (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.1 +lat_2=43.66666666666666 +lat_0=41"); + add_proj4text (p, 1, + ".5 +lon_0=-84.33333333333333 +x_0=609601.2192024384 +y_0"); + add_proj4text (p, 2, + "=0 +a=6378450.047548896 +b=6356826.621488444 +units=us-f"); + add_proj4text (p, 3, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD Michigan / Michigan South (deprecated)\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"NAD27 Michigan\",DATUM[\"NAD27_Michigan\",SPHEROI"); + add_srs_wkt (p, 2, + "D[\"Clarke 1866 Michigan\",6378450.047548896,294.9786971"); + add_srs_wkt (p, 3, + "646739,AUTHORITY[\"EPSG\",\"7009\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6268\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4268\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); + add_srs_wkt (p, 8, + "parallel_1\",42.1],PARAMETER[\"standard_parallel_2\",43."); + add_srs_wkt (p, 9, + "66666666666666],PARAMETER[\"latitude_of_origin\",41.5],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"central_meridian\",-84.33333333333333],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",2000000],PARAMETER[\"false_northin"); + add_srs_wkt (p, 12, + "g\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHOR"); + add_srs_wkt (p, 13, + "ITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 14, + "H],AUTHORITY[\"EPSG\",\"26813\"]]"); + p = add_epsg_def (filter, first, last, 26814, "epsg", 26814, + "NAD83 / Maine East (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Maine East (ftUS) (deprecated)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"626"); + add_srs_wkt (p, 4, + "9\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",4"); + add_srs_wkt (p, 8, + "3.66666666666666],PARAMETER[\"central_meridian\",-68.5],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",300000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 12, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26814\"]]"); + p = add_epsg_def (filter, first, last, 26815, "epsg", 26815, + "NAD83 / Maine West (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=900000 +y_0=0 +datum=NAD83 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Maine West (ftUS) (deprecated)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID["); + add_srs_wkt (p, 2, + "\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"626"); + add_srs_wkt (p, 4, + "9\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",4"); + add_srs_wkt (p, 8, + "2.83333333333334],PARAMETER[\"central_meridian\",-70.166"); + add_srs_wkt (p, 9, + "66666666667],PARAMETER[\"scale_factor\",0.999966667],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_easting\",900000],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 12, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "26815\"]]"); + p = add_epsg_def (filter, first, last, 26819, "epsg", 26819, + "NAD83 / Minnesota North (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.00"); + add_proj4text (p, 2, + "00101601 +y_0=99999.99998984 +datum=NAD83 +units=m +no_d"); + add_proj4text (p, 3, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Minnesota North (ftUS) (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); + add_srs_wkt (p, 8, + "parallel_1\",48.63333333333333],PARAMETER[\"standard_par"); + add_srs_wkt (p, 9, + "allel_2\",47.03333333333333],PARAMETER[\"latitude_of_ori"); + add_srs_wkt (p, 10, + "gin\",46.5],PARAMETER[\"central_meridian\",-93.1],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",800000.0000101601],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_northing\",99999.99998984],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 14, + "AUTHORITY[\"EPSG\",\"26819\"]]"); + p = add_epsg_def (filter, first, last, 26820, "epsg", 26820, + "NAD83 / Minnesota Central (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); + add_proj4text (p, 1, + "5 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.999989"); + add_proj4text (p, 2, + "84 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Minnesota Central (ftUS) (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard"); + add_srs_wkt (p, 8, + "_parallel_1\",47.05],PARAMETER[\"standard_parallel_2\",4"); + add_srs_wkt (p, 9, + "5.61666666666667],PARAMETER[\"latitude_of_origin\",45],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"central_meridian\",-94.25],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "easting\",800000.0000101601],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",99999.99998984],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 13, + "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 14, + "PSG\",\"26820\"]]"); + p = add_epsg_def (filter, first, last, 26821, "epsg", 26821, + "NAD83 / Minnesota South (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=999"); + add_proj4text (p, 2, + "99.99998984 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Minnesota South (ftUS) (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\",SPHE"); + add_srs_wkt (p, 2, + "ROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"standard_"); + add_srs_wkt (p, 8, + "parallel_1\",45.21666666666667],PARAMETER[\"standard_par"); + add_srs_wkt (p, 9, + "allel_2\",43.78333333333333],PARAMETER[\"latitude_of_ori"); + add_srs_wkt (p, 10, + "gin\",43],PARAMETER[\"central_meridian\",-94],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",800000.0000101601],PARAMETER[\"false_n"); + add_srs_wkt (p, 12, + "orthing\",99999.99998984],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 14, + "ORITY[\"EPSG\",\"26821\"]]"); + p = add_epsg_def (filter, first, last, 26822, "epsg", 26822, + "NAD83 / Nebraska (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); + add_proj4text (p, 1, + "lon_0=-100 +x_0=500000.0000101601 +y_0=0 +datum=NAD83 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Nebraska (ftUS) (deprecated)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",43],PARAMETER[\"standard_parallel_2\",40],PARAMETER"); + add_srs_wkt (p, 9, + "[\"latitude_of_origin\",39.83333333333334],PARAMETER[\"c"); + add_srs_wkt (p, 10, + "entral_meridian\",-100],PARAMETER[\"false_easting\",5000"); + add_srs_wkt (p, 11, + "00.0000101601],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 12, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 13, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26822\"]]"); + p = add_epsg_def (filter, first, last, 26823, "epsg", 26823, + "NAD83 / West Virginia North (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); + add_proj4text (p, 1, + "5 +x_0=1968500 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / West Virginia North (ftUS) (deprecated)"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",40.25],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",39],PARAMETER[\"latitude_of_origin\",38.5],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-79.5],PARAMETER[\"false_easting\",19"); + add_srs_wkt (p, 11, + "68500],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"26823\"]]"); + p = add_epsg_def (filter, first, last, 26824, "epsg", 26824, + "NAD83 / West Virginia South (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +datum=NAD8"); + add_proj4text (p, 2, + "3 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / West Virginia South (ftUS) (deprecated)"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"NAD83\",DATUM[\"North_American_Datum_1983\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6269\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",38.88333333333333],PARAMETER[\"standard"); + add_srs_wkt (p, 9, + "_parallel_2\",37.48333333333333],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 10, + "_origin\",37],PARAMETER[\"central_meridian\",-81],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",1968500],PARAMETER[\"false_northin"); + add_srs_wkt (p, 12, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 13, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26"); + add_srs_wkt (p, 14, + "824\"]]"); + p = add_epsg_def (filter, first, last, 26825, "epsg", 26825, + "NAD83(HARN) / Maine East (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Maine East (ftUS) (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refer"); + add_srs_wkt (p, 2, + "ence_Network\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4152\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",43.66666666666666],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",-68.5],PARAMETER[\"scale_factor\",0.9999]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_easting\",300000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"26825\"]]"); + p = add_epsg_def (filter, first, last, 26826, "epsg", 26826, + "NAD83(HARN) / Maine West (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Maine West (ftUS) (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Refer"); + add_srs_wkt (p, 2, + "ence_Network\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4152\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",42.83333333333334],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",-70.16666666666667],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 10, + "tor\",0.999966667],PARAMETER[\"false_easting\",900000],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"26826\"]]"); + p = add_epsg_def (filter, first, last, 26830, "epsg", 26830, + "NAD83(HARN) / Minnesota North (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.00"); + add_proj4text (p, 2, + "00101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0"); + add_proj4text (p, 3, + ",0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Minnesota North (ftUS) (deprecate"); + add_srs_wkt (p, 1, + "d)\",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_"); + add_srs_wkt (p, 2, + "Reference_Network\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",48.63333333333333],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"standard_parallel_2\",47.03333333333333],PARA"); + add_srs_wkt (p, 10, + "METER[\"latitude_of_origin\",46.5],PARAMETER[\"central_m"); + add_srs_wkt (p, 11, + "eridian\",-93.1],PARAMETER[\"false_easting\",800000.0000"); + add_srs_wkt (p, 12, + "101601],PARAMETER[\"false_northing\",99999.99998984],UNI"); + add_srs_wkt (p, 13, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 14, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26830\"]]"); + p = add_epsg_def (filter, first, last, 26831, "epsg", 26831, + "NAD83(HARN) / Minnesota Central (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); + add_proj4text (p, 1, + "5 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.999989"); + add_proj4text (p, 2, + "84 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Minnesota Central (ftUS) (depreca"); + add_srs_wkt (p, 1, + "ted)\",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accurac"); + add_srs_wkt (p, 2, + "y_Reference_Network\",SPHEROID[\"GRS 1980\",6378137,298."); + add_srs_wkt (p, 3, + "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0],AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",47.05],PARAMETER[\""); + add_srs_wkt (p, 9, + "standard_parallel_2\",45.61666666666667],PARAMETER[\"lat"); + add_srs_wkt (p, 10, + "itude_of_origin\",45],PARAMETER[\"central_meridian\",-94"); + add_srs_wkt (p, 11, + ".25],PARAMETER[\"false_easting\",800000.0000101601],PARA"); + add_srs_wkt (p, 12, + "METER[\"false_northing\",99999.99998984],UNIT[\"metre\","); + add_srs_wkt (p, 13, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 14, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"26831\"]]"); + p = add_epsg_def (filter, first, last, 26832, "epsg", 26832, + "NAD83(HARN) / Minnesota South (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=999"); + add_proj4text (p, 2, + "99.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 3, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Minnesota South (ftUS) (deprecate"); + add_srs_wkt (p, 1, + "d)\",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_"); + add_srs_wkt (p, 2, + "Reference_Network\",SPHEROID[\"GRS 1980\",6378137,298.25"); + add_srs_wkt (p, 3, + "7222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0],AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_1\",45.21666666666667],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"standard_parallel_2\",43.78333333333333],PARA"); + add_srs_wkt (p, 10, + "METER[\"latitude_of_origin\",43],PARAMETER[\"central_mer"); + add_srs_wkt (p, 11, + "idian\",-94],PARAMETER[\"false_easting\",800000.00001016"); + add_srs_wkt (p, 12, + "01],PARAMETER[\"false_northing\",99999.99998984],UNIT[\""); + add_srs_wkt (p, 13, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 14, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26832\"]]"); + p = add_epsg_def (filter, first, last, 26833, "epsg", 26833, + "NAD83(HARN) / Nebraska (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); + add_proj4text (p, 1, + "lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Nebraska (ftUS) (deprecated)\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Referen"); + add_srs_wkt (p, 2, + "ce_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "152\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); + add_srs_wkt (p, 8, + "METER[\"standard_parallel_1\",43],PARAMETER[\"standard_p"); + add_srs_wkt (p, 9, + "arallel_2\",40],PARAMETER[\"latitude_of_origin\",39.8333"); + add_srs_wkt (p, 10, + "3333333334],PARAMETER[\"central_meridian\",-100],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_easting\",500000.0000101601],PARAMETER[\"fals"); + add_srs_wkt (p, 12, + "e_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 13, + "01\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 14, + "SG\",\"26833\"]]"); + p = add_epsg_def (filter, first, last, 26834, "epsg", 26834, + "NAD83(HARN) / West Virginia North (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); + add_proj4text (p, 1, + "5 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,"); + add_proj4text (p, 2, + "0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / West Virginia North (ftUS) (depre"); + add_srs_wkt (p, 1, + "cated)\",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accur"); + add_srs_wkt (p, 2, + "acy_Reference_Network\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 3, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",40.25],PARAMETER"); + add_srs_wkt (p, 9, + "[\"standard_parallel_2\",39],PARAMETER[\"latitude_of_ori"); + add_srs_wkt (p, 10, + "gin\",38.5],PARAMETER[\"central_meridian\",-79.5],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",1968500],PARAMETER[\"false_northin"); + add_srs_wkt (p, 12, + "g\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 13, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26"); + add_srs_wkt (p, 14, + "834\"]]"); + p = add_epsg_def (filter, first, last, 26835, "epsg", 26835, + "NAD83(HARN) / West Virginia South (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS8"); + add_proj4text (p, 2, + "0 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / West Virginia South (ftUS) (depre"); + add_srs_wkt (p, 1, + "cated)\",GEOGCS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accur"); + add_srs_wkt (p, 2, + "acy_Reference_Network\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 3, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4152\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",38.8833333333333"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"standard_parallel_2\",37.48333333333333],"); + add_srs_wkt (p, 10, + "PARAMETER[\"latitude_of_origin\",37],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-81],PARAMETER[\"false_easting\",1968500],PA"); + add_srs_wkt (p, 12, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 14, + "AUTHORITY[\"EPSG\",\"26835\"]]"); + p = add_epsg_def (filter, first, last, 26836, "epsg", 26836, + "NAD83(NSRS2007) / Maine East (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=300000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Maine East (ftUS) (deprecated"); + add_srs_wkt (p, 1, + ")\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Sp"); + add_srs_wkt (p, 2, + "atial_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 3, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 4, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 5, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",43.66666666666666],"); + add_srs_wkt (p, 9, + "PARAMETER[\"central_meridian\",-68.5],PARAMETER[\"scale_"); + add_srs_wkt (p, 10, + "factor\",0.9999],PARAMETER[\"false_easting\",300000],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"26836\"]]"); + p = add_epsg_def (filter, first, last, 26837, "epsg", 26837, + "NAD83(NSRS2007) / Maine West (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Maine West (ftUS) (deprecated"); + add_srs_wkt (p, 1, + ")\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Sp"); + add_srs_wkt (p, 2, + "atial_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 3, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 4, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 5, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4759\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",42.83333333333334],"); + add_srs_wkt (p, 9, + "PARAMETER[\"central_meridian\",-70.16666666666667],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"scale_factor\",0.999966667],PARAMETER[\"false_eas"); + add_srs_wkt (p, 11, + "ting\",900000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 12, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 13, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26837\"]]"); + p = add_epsg_def (filter, first, last, 26841, "epsg", 26841, + "NAD83(NSRS2007) / Minnesota North (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.00"); + add_proj4text (p, 2, + "00101601 +y_0=99999.99998984 +ellps=GRS80 +towgs84=0,0,0"); + add_proj4text (p, 3, + ",0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Minnesota North (ftUS) (depre"); + add_srs_wkt (p, 1, + "cated)\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_Nation"); + add_srs_wkt (p, 2, + "al_Spatial_Reference_System_2007\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 3, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 4, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM"); + add_srs_wkt (p, 5, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 6, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 7, + "AUTHORITY[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 8, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",48.6"); + add_srs_wkt (p, 9, + "3333333333333],PARAMETER[\"standard_parallel_2\",47.0333"); + add_srs_wkt (p, 10, + "3333333333],PARAMETER[\"latitude_of_origin\",46.5],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"central_meridian\",-93.1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 12, + "ng\",800000.0000101601],PARAMETER[\"false_northing\",999"); + add_srs_wkt (p, 13, + "99.99998984],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 14, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 15, + ",\"26841\"]]"); + p = add_epsg_def (filter, first, last, 26842, "epsg", 26842, + "NAD83(NSRS2007) / Minnesota Central (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); + add_proj4text (p, 1, + "5 +lon_0=-94.25 +x_0=800000.0000101601 +y_0=99999.999989"); + add_proj4text (p, 2, + "84 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Minnesota Central (ftUS) (dep"); + add_srs_wkt (p, 1, + "recated)\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_Nati"); + add_srs_wkt (p, 2, + "onal_Spatial_Reference_System_2007\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 3, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 4, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIM"); + add_srs_wkt (p, 5, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 6, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 7, + "],AUTHORITY[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 8, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",47"); + add_srs_wkt (p, 9, + ".05],PARAMETER[\"standard_parallel_2\",45.61666666666667"); + add_srs_wkt (p, 10, + "],PARAMETER[\"latitude_of_origin\",45],PARAMETER[\"centr"); + add_srs_wkt (p, 11, + "al_meridian\",-94.25],PARAMETER[\"false_easting\",800000"); + add_srs_wkt (p, 12, + ".0000101601],PARAMETER[\"false_northing\",99999.99998984"); + add_srs_wkt (p, 13, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 14, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26842\""); + add_srs_wkt (p, 15, + "]]"); + p = add_epsg_def (filter, first, last, 26843, "epsg", 26843, + "NAD83(NSRS2007) / Minnesota South (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101601 +y_0=999"); + add_proj4text (p, 2, + "99.99998984 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m"); + add_proj4text (p, 3, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Minnesota South (ftUS) (depre"); + add_srs_wkt (p, 1, + "cated)\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_Nation"); + add_srs_wkt (p, 2, + "al_Spatial_Reference_System_2007\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 3, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 4, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM"); + add_srs_wkt (p, 5, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 6, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 7, + "AUTHORITY[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 8, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",45.2"); + add_srs_wkt (p, 9, + "1666666666667],PARAMETER[\"standard_parallel_2\",43.7833"); + add_srs_wkt (p, 10, + "3333333333],PARAMETER[\"latitude_of_origin\",43],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"central_meridian\",-94],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 12, + ",800000.0000101601],PARAMETER[\"false_northing\",99999.9"); + add_srs_wkt (p, 13, + "9998984],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 14, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 15, + "26843\"]]"); + p = add_epsg_def (filter, first, last, 26844, "epsg", 26844, + "NAD83(NSRS2007) / Nebraska (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); + add_proj4text (p, 1, + "lon_0=-100 +x_0=500000.0000101601 +y_0=0 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Nebraska (ftUS) (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spati"); + add_srs_wkt (p, 2, + "al_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 3, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 4, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 5, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 6, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 8, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",43],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"standard_parallel_2\",40],PARAMETER[\"latitude_of_or"); + add_srs_wkt (p, 10, + "igin\",39.83333333333334],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 11, + ",-100],PARAMETER[\"false_easting\",500000.0000101601],PA"); + add_srs_wkt (p, 12, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 14, + "AUTHORITY[\"EPSG\",\"26844\"]]"); + p = add_epsg_def (filter, first, last, 26845, "epsg", 26845, + "NAD83(NSRS2007) / West Virginia North (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); + add_proj4text (p, 1, + "5 +x_0=1968500 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,"); + add_proj4text (p, 2, + "0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / West Virginia North (ftUS) (d"); + add_srs_wkt (p, 1, + "eprecated)\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_Na"); + add_srs_wkt (p, 2, + "tional_Spatial_Reference_System_2007\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 3, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 4, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PR"); + add_srs_wkt (p, 5, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 6, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 7, + "]],AUTHORITY[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 8, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); + add_srs_wkt (p, 9, + "0.25],PARAMETER[\"standard_parallel_2\",39],PARAMETER[\""); + add_srs_wkt (p, 10, + "latitude_of_origin\",38.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 11, + ",-79.5],PARAMETER[\"false_easting\",1968500],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 14, + "\"EPSG\",\"26845\"]]"); + p = add_epsg_def (filter, first, last, 26846, "epsg", 26846, + "NAD83(NSRS2007) / West Virginia South (ftUS) (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=37 +lon_0=-81 +x_0=1968500 +y_0=0 +ellps=GRS8"); + add_proj4text (p, 2, + "0 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / West Virginia South (ftUS) (d"); + add_srs_wkt (p, 1, + "eprecated)\",GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_Na"); + add_srs_wkt (p, 2, + "tional_Spatial_Reference_System_2007\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 3, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 4, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PR"); + add_srs_wkt (p, 5, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 6, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 7, + "]],AUTHORITY[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 8, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",3"); + add_srs_wkt (p, 9, + "8.88333333333333],PARAMETER[\"standard_parallel_2\",37.4"); + add_srs_wkt (p, 10, + "8333333333333],PARAMETER[\"latitude_of_origin\",37],PARA"); + add_srs_wkt (p, 11, + "METER[\"central_meridian\",-81],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 12, + "g\",1968500],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 13, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 14, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26846\"]]"); + p = add_epsg_def (filter, first, last, 26847, "epsg", 26847, + "NAD83 / Maine East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=300000.0000000001 +y_0=0 +datum=NAD83 +units=us"); + add_proj4text (p, 2, + "-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Maine East (ftUS)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",43.66666666666"); + add_srs_wkt (p, 8, + "666],PARAMETER[\"central_meridian\",-68.5],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9999],PARAMETER[\"false_easting\",984250"); + add_srs_wkt (p, 10, + ".0000000002],PARAMETER[\"false_northing\",0],UNIT[\"US s"); + add_srs_wkt (p, 11, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 12, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"26847\"]]"); + p = add_epsg_def (filter, first, last, 26848, "epsg", 26848, + "NAD83 / Maine West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=900000 +y_0=0 +datum=NAD83 +u"); + add_proj4text (p, 2, + "nits=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Maine West (ftUS)\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",42.83333333333"); + add_srs_wkt (p, 8, + "334],PARAMETER[\"central_meridian\",-70.16666666666667],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.999966667],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",2952750],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 13, + "TY[\"EPSG\",\"26848\"]]"); + p = add_epsg_def (filter, first, last, 26849, "epsg", 26849, + "NAD83 / Minnesota North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.00"); + add_proj4text (p, 2, + "00101599 +y_0=99999.99998983997 +datum=NAD83 +units=us-f"); + add_proj4text (p, 3, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Minnesota North (ftUS)\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); + add_srs_wkt (p, 8, + "8.63333333333333],PARAMETER[\"standard_parallel_2\",47.0"); + add_srs_wkt (p, 9, + "3333333333333],PARAMETER[\"latitude_of_origin\",46.5],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"central_meridian\",-93.1],PARAMETER[\"false_ea"); + add_srs_wkt (p, 11, + "sting\",2624666.6667],PARAMETER[\"false_northing\",32808"); + add_srs_wkt (p, 12, + "3.3333],UNIT[\"US survey foot\",0.3048006096012192,AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 14, + "TH],AUTHORITY[\"EPSG\",\"26849\"]]"); + p = add_epsg_def (filter, first, last, 26850, "epsg", 26850, + "NAD83 / Minnesota Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); + add_proj4text (p, 1, + "5 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.999989"); + add_proj4text (p, 2, + "83997 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Minnesota Central (ftUS)\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",47.05],PARAMETER[\"standard_parallel_2\",45.61666666666"); + add_srs_wkt (p, 9, + "667],PARAMETER[\"latitude_of_origin\",45],PARAMETER[\"ce"); + add_srs_wkt (p, 10, + "ntral_meridian\",-94.25],PARAMETER[\"false_easting\",262"); + add_srs_wkt (p, 11, + "4666.6667],PARAMETER[\"false_northing\",328083.3333],UNI"); + add_srs_wkt (p, 12, + "T[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 13, + "\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORI"); + add_srs_wkt (p, 14, + "TY[\"EPSG\",\"26850\"]]"); + p = add_epsg_def (filter, first, last, 26851, "epsg", 26851, + "NAD83 / Minnesota South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=999"); + add_proj4text (p, 2, + "99.99998983997 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Minnesota South (ftUS)\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); + add_srs_wkt (p, 8, + "5.21666666666667],PARAMETER[\"standard_parallel_2\",43.7"); + add_srs_wkt (p, 9, + "8333333333333],PARAMETER[\"latitude_of_origin\",43],PARA"); + add_srs_wkt (p, 10, + "METER[\"central_meridian\",-94],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 11, + "g\",2624666.6667],PARAMETER[\"false_northing\",328083.33"); + add_srs_wkt (p, 12, + "33],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 14, + "AUTHORITY[\"EPSG\",\"26851\"]]"); + p = add_epsg_def (filter, first, last, 26852, "epsg", 26852, + "NAD83 / Nebraska (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); + add_proj4text (p, 1, + "lon_0=-100 +x_0=500000.00001016 +y_0=0 +datum=NAD83 +uni"); + add_proj4text (p, 2, + "ts=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Nebraska (ftUS)\",GEOGCS[\"NAD83\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",43],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",40],PARAMETER[\"latitude_"); + add_srs_wkt (p, 9, + "of_origin\",39.83333333333334],PARAMETER[\"central_merid"); + add_srs_wkt (p, 10, + "ian\",-100],PARAMETER[\"false_easting\",1640416.6667],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0."); + add_srs_wkt (p, 12, + "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26852\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_37.c b/src/spatialite/src/srsinit/epsg_inlined_37.c new file mode 100644 index 0000000..e5b52b3 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_37.c @@ -0,0 +1,3498 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_37 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 26853, "epsg", 26853, + "NAD83 / West Virginia North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); + add_proj4text (p, 1, + "5 +x_0=600000 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / West Virginia North (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",40.25],PARAMETER[\"standard_parallel_2\",39],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"latitude_of_origin\",38.5],PARAMETER[\"central_meri"); + add_srs_wkt (p, 10, + "dian\",-79.5],PARAMETER[\"false_easting\",1968500],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); + add_srs_wkt (p, 12, + "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 13, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26853\"]]"); + p = add_epsg_def (filter, first, last, 26854, "epsg", 26854, + "NAD83 / West Virginia South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +datum=NAD83"); + add_proj4text (p, 2, + " +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / West Virginia South (ftUS)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GR"); + add_srs_wkt (p, 2, + "S 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]"); + add_srs_wkt (p, 4, + "],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],U"); + add_srs_wkt (p, 5, + "NIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 6, + "122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambe"); + add_srs_wkt (p, 7, + "rt_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_"); + add_srs_wkt (p, 8, + "1\",38.88333333333333],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",37.48333333333333],PARAMETER[\"latitude_of_origin\",37]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"central_meridian\",-81],PARAMETER[\"false_e"); + add_srs_wkt (p, 11, + "asting\",1968500],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 12, + "US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 14, + "EPSG\",\"26854\"]]"); + p = add_epsg_def (filter, first, last, 26855, "epsg", 26855, + "NAD83(HARN) / Maine East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Maine East (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",43.66666666666666],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-68.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",984250.0000000002],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 13, + "ORTH],AUTHORITY[\"EPSG\",\"26855\"]]"); + p = add_epsg_def (filter, first, last, 26856, "epsg", 26856, + "NAD83(HARN) / Maine West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Maine West (ftUS)\",GEOGCS[\"NAD8"); + add_srs_wkt (p, 1, + "3(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 8, + "rigin\",42.83333333333334],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-70.16666666666667],PARAMETER[\"scale_factor\",0.999966"); + add_srs_wkt (p, 10, + "667],PARAMETER[\"false_easting\",2952750],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); + add_srs_wkt (p, 12, + "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 13, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26856\"]]"); + p = add_epsg_def (filter, first, last, 26857, "epsg", 26857, + "NAD83(HARN) / Minnesota North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.00"); + add_proj4text (p, 2, + "00101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,"); + add_proj4text (p, 3, + "0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Minnesota North (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",48.63333333333333],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",47.03333333333333],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",46.5],PARAMETER[\"central_meridian\",-93."); + add_srs_wkt (p, 11, + "1],PARAMETER[\"false_easting\",2624666.6667],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",328083.3333],UNIT[\"US survey foot\",0."); + add_srs_wkt (p, 13, + "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 14, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26857\"]]"); + p = add_epsg_def (filter, first, last, 26858, "epsg", 26858, + "NAD83(HARN) / Minnesota Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); + add_proj4text (p, 1, + "5 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.999989"); + add_proj4text (p, 2, + "83997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Minnesota Central (ftUS)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_N"); + add_srs_wkt (p, 2, + "etwork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_1\",47.05],PARAMETER[\"standard_par"); + add_srs_wkt (p, 9, + "allel_2\",45.61666666666667],PARAMETER[\"latitude_of_ori"); + add_srs_wkt (p, 10, + "gin\",45],PARAMETER[\"central_meridian\",-94.25],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_easting\",2624666.6667],PARAMETER[\"false_nor"); + add_srs_wkt (p, 12, + "thing\",328083.3333],UNIT[\"US survey foot\",0.304800609"); + add_srs_wkt (p, 13, + "6012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 14, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26858\"]]"); + p = add_epsg_def (filter, first, last, 26859, "epsg", 26859, + "NAD83(HARN) / Minnesota South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=999"); + add_proj4text (p, 2, + "99.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 3, + "s=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Minnesota South (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Netw"); + add_srs_wkt (p, 2, + "ork\",SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_1\",45.21666666666667],PARAMETER[\"sta"); + add_srs_wkt (p, 9, + "ndard_parallel_2\",43.78333333333333],PARAMETER[\"latitu"); + add_srs_wkt (p, 10, + "de_of_origin\",43],PARAMETER[\"central_meridian\",-94],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_easting\",2624666.6667],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_northing\",328083.3333],UNIT[\"US survey foot\",0.304"); + add_srs_wkt (p, 13, + "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 14, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26859\"]]"); + p = add_epsg_def (filter, first, last, 26860, "epsg", 26860, + "NAD83(HARN) / Nebraska (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); + add_proj4text (p, 1, + "lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +tow"); + add_proj4text (p, 2, + "gs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / Nebraska (ftUS)\",GEOGCS[\"NAD83("); + add_srs_wkt (p, 1, + "HARN)\",DATUM[\"NAD83_High_Accuracy_Reference_Network\","); + add_srs_wkt (p, 2, + "SPHEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPS"); + add_srs_wkt (p, 4, + "G\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4152\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_2SP\"],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_1\",43],PARAMETER[\"standard_parallel_2\",4"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"latitude_of_origin\",39.83333333333334],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"central_meridian\",-100],PARAMETER[\"false_ea"); + add_srs_wkt (p, 11, + "sting\",1640416.6667],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 12, + "IT[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); + add_srs_wkt (p, 14, + "ITY[\"EPSG\",\"26860\"]]"); + p = add_epsg_def (filter, first, last, 26861, "epsg", 26861, + "NAD83(HARN) / West Virginia North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); + add_proj4text (p, 1, + "5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / West Virginia North (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference"); + add_srs_wkt (p, 2, + "_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"415"); + add_srs_wkt (p, 7, + "2\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_1\",40.25],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",39],PARAMETER[\"latitude_of_origin\",38.5],"); + add_srs_wkt (p, 10, + "PARAMETER[\"central_meridian\",-79.5],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "easting\",1968500],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 12, + "\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"26861\"]]"); + p = add_epsg_def (filter, first, last, 26862, "epsg", 26862, + "NAD83(HARN) / West Virginia South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(HARN) / West Virginia South (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(HARN)\",DATUM[\"NAD83_High_Accuracy_Reference"); + add_srs_wkt (p, 2, + "_Network\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6152\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"415"); + add_srs_wkt (p, 7, + "2\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_1\",38.88333333333333],PARAMETER"); + add_srs_wkt (p, 9, + "[\"standard_parallel_2\",37.48333333333333],PARAMETER[\""); + add_srs_wkt (p, 10, + "latitude_of_origin\",37],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 11, + "-81],PARAMETER[\"false_easting\",1968500],PARAMETER[\"fa"); + add_srs_wkt (p, 12, + "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); + add_srs_wkt (p, 13, + "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 14, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26862\"]]"); + p = add_epsg_def (filter, first, last, 26863, "epsg", 26863, + "NAD83(NSRS2007) / Maine East (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=300000.0000000001 +y_0=0 +ellps=GRS80 +towgs84="); + add_proj4text (p, 2, + "0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Maine East (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",43.66666666666666],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",-68.5],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 10, + "999],PARAMETER[\"false_easting\",984250.0000000002],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 12, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 13, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26863\"]]"); + p = add_epsg_def (filter, first, last, 26864, "epsg", 26864, + "NAD83(NSRS2007) / Maine West (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=900000 +y_0=0 +ellps=GRS80 +t"); + add_proj4text (p, 2, + "owgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Maine West (ftUS)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Referen"); + add_srs_wkt (p, 2, + "ce_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.25722"); + add_srs_wkt (p, 3, + "2101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4759\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",42.83333333333334],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",-70.16666666666667],PARAMETER[\"scale"); + add_srs_wkt (p, 10, + "_factor\",0.999966667],PARAMETER[\"false_easting\",29527"); + add_srs_wkt (p, 11, + "50],PARAMETER[\"false_northing\",0],UNIT[\"US survey foo"); + add_srs_wkt (p, 12, + "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); + add_srs_wkt (p, 13, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"268"); + add_srs_wkt (p, 14, + "64\"]]"); + p = add_epsg_def (filter, first, last, 26865, "epsg", 26865, + "NAD83(NSRS2007) / Minnesota North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000.00"); + add_proj4text (p, 2, + "00101599 +y_0=99999.99998983997 +ellps=GRS80 +towgs84=0,"); + add_proj4text (p, 3, + "0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Minnesota North (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); + add_srs_wkt (p, 2, + "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); + add_srs_wkt (p, 3, + "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",48.63333333333333]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",47.03333333333333],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",46.5],PARAMETER[\"central"); + add_srs_wkt (p, 11, + "_meridian\",-93.1],PARAMETER[\"false_easting\",2624666.6"); + add_srs_wkt (p, 12, + "667],PARAMETER[\"false_northing\",328083.3333],UNIT[\"US"); + add_srs_wkt (p, 13, + " survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 14, + "003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 15, + "PSG\",\"26865\"]]"); + p = add_epsg_def (filter, first, last, 26866, "epsg", 26866, + "NAD83(NSRS2007) / Minnesota Central (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); + add_proj4text (p, 1, + "5 +lon_0=-94.25 +x_0=800000.0000101599 +y_0=99999.999989"); + add_proj4text (p, 2, + "83997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=us-ft +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Minnesota Central (ftUS)\",GE"); + add_srs_wkt (p, 1, + "OGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_"); + add_srs_wkt (p, 2, + "Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 3, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 5, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 8, + "SP\"],PARAMETER[\"standard_parallel_1\",47.05],PARAMETER"); + add_srs_wkt (p, 9, + "[\"standard_parallel_2\",45.61666666666667],PARAMETER[\""); + add_srs_wkt (p, 10, + "latitude_of_origin\",45],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 11, + "-94.25],PARAMETER[\"false_easting\",2624666.6667],PARAME"); + add_srs_wkt (p, 12, + "TER[\"false_northing\",328083.3333],UNIT[\"US survey foo"); + add_srs_wkt (p, 13, + "t\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXI"); + add_srs_wkt (p, 14, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"268"); + add_srs_wkt (p, 15, + "66\"]]"); + p = add_epsg_def (filter, first, last, 26867, "epsg", 26867, + "NAD83(NSRS2007) / Minnesota South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=43 +lon_0=-94 +x_0=800000.0000101599 +y_0=999"); + add_proj4text (p, 2, + "99.99998983997 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +unit"); + add_proj4text (p, 3, + "s=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Minnesota South (ftUS)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Re"); + add_srs_wkt (p, 2, + "ference_System_2007\",SPHEROID[\"GRS 1980\",6378137,298."); + add_srs_wkt (p, 3, + "257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,"); + add_srs_wkt (p, 4, + "0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 5, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 6, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"standard_parallel_1\",45.21666666666667]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"standard_parallel_2\",43.78333333333333],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"latitude_of_origin\",43],PARAMETER[\"central_m"); + add_srs_wkt (p, 11, + "eridian\",-94],PARAMETER[\"false_easting\",2624666.6667]"); + add_srs_wkt (p, 12, + ",PARAMETER[\"false_northing\",328083.3333],UNIT[\"US sur"); + add_srs_wkt (p, 13, + "vey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 14, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 15, + ",\"26867\"]]"); + p = add_epsg_def (filter, first, last, 26868, "epsg", 26868, + "NAD83(NSRS2007) / Nebraska (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); + add_proj4text (p, 1, + "lon_0=-100 +x_0=500000.00001016 +y_0=0 +ellps=GRS80 +tow"); + add_proj4text (p, 2, + "gs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / Nebraska (ftUS)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83(NSRS2007)\",DATUM[\"NAD83_National_Spatial_Reference"); + add_srs_wkt (p, 2, + "_System_2007\",SPHEROID[\"GRS 1980\",6378137,298.2572221"); + add_srs_wkt (p, 3, + "01,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4759\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_1\",43],PARAMETER[\"standard_"); + add_srs_wkt (p, 9, + "parallel_2\",40],PARAMETER[\"latitude_of_origin\",39.833"); + add_srs_wkt (p, 10, + "33333333334],PARAMETER[\"central_meridian\",-100],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_easting\",1640416.6667],PARAMETER[\"false_no"); + add_srs_wkt (p, 12, + "rthing\",0],UNIT[\"US survey foot\",0.3048006096012192,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"26868\"]]"); + p = add_epsg_def (filter, first, last, 26869, "epsg", 26869, + "NAD83(NSRS2007) / West Virginia North (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); + add_proj4text (p, 1, + "5 +x_0=600000 +y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0"); + add_proj4text (p, 2, + " +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / West Virginia North (ftUS)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatia"); + add_srs_wkt (p, 2, + "l_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,"); + add_srs_wkt (p, 3, + "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Coni"); + add_srs_wkt (p, 8, + "c_2SP\"],PARAMETER[\"standard_parallel_1\",40.25],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",39],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 10, + "origin\",38.5],PARAMETER[\"central_meridian\",-79.5],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",1968500],PARAMETER[\"false_nort"); + add_srs_wkt (p, 12, + "hing\",0],UNIT[\"US survey foot\",0.3048006096012192,AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 14, + "ORTH],AUTHORITY[\"EPSG\",\"26869\"]]"); + p = add_epsg_def (filter, first, last, 26870, "epsg", 26870, + "NAD83(NSRS2007) / West Virginia South (ftUS)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +ellps=GRS80"); + add_proj4text (p, 2, + " +towgs84=0,0,0,0,0,0,0 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(NSRS2007) / West Virginia South (ftUS)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"NAD83(NSRS2007)\",DATUM[\"NAD83_National_Spatia"); + add_srs_wkt (p, 2, + "l_Reference_System_2007\",SPHEROID[\"GRS 1980\",6378137,"); + add_srs_wkt (p, 3, + "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); + add_srs_wkt (p, 4, + "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6759\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4759\"]],PROJECTION[\"Lambert_Conformal_Coni"); + add_srs_wkt (p, 8, + "c_2SP\"],PARAMETER[\"standard_parallel_1\",38.8833333333"); + add_srs_wkt (p, 9, + "3333],PARAMETER[\"standard_parallel_2\",37.4833333333333"); + add_srs_wkt (p, 10, + "3],PARAMETER[\"latitude_of_origin\",37],PARAMETER[\"cent"); + add_srs_wkt (p, 11, + "ral_meridian\",-81],PARAMETER[\"false_easting\",1968500]"); + add_srs_wkt (p, 12, + ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 13, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 14, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26870\""); + add_srs_wkt (p, 15, + "]]"); + p = add_epsg_def (filter, first, last, 26891, "epsg", 26891, + "NAD83(CSRS) / MTM zone 11"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 11\",GEOGCS[\"NAD83(CSRS"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-82.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",304"); + add_srs_wkt (p, 10, + "800],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"26891\"]]"); + p = add_epsg_def (filter, first, last, 26892, "epsg", 26892, + "NAD83(CSRS) / MTM zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 12\",GEOGCS[\"NAD83(CSRS"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-81],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"26892\"]]"); + p = add_epsg_def (filter, first, last, 26893, "epsg", 26893, + "NAD83(CSRS) / MTM zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 13\",GEOGCS[\"NAD83(CSRS"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-84],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"26893\"]]"); + p = add_epsg_def (filter, first, last, 26894, "epsg", 26894, + "NAD83(CSRS) / MTM zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 14\",GEOGCS[\"NAD83(CSRS"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-87],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"26894\"]]"); + p = add_epsg_def (filter, first, last, 26895, "epsg", 26895, + "NAD83(CSRS) / MTM zone 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 15\",GEOGCS[\"NAD83(CSRS"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-90],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"26895\"]]"); + p = add_epsg_def (filter, first, last, 26896, "epsg", 26896, + "NAD83(CSRS) / MTM zone 16"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 16\",GEOGCS[\"NAD83(CSRS"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-93],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"26896\"]]"); + p = add_epsg_def (filter, first, last, 26897, "epsg", 26897, + "NAD83(CSRS) / MTM zone 17"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 17\",GEOGCS[\"NAD83(CSRS"); + add_srs_wkt (p, 1, + ")\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SP"); + add_srs_wkt (p, 2, + "HEROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-96],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"26897\"]]"); + p = add_epsg_def (filter, first, last, 26898, "epsg", 26898, + "NAD83(CSRS) / MTM zone 1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 1\",GEOGCS[\"NAD83(CSRS)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-53],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N(Y"); + add_srs_wkt (p, 12, + ")\",NORTH],AUTHORITY[\"EPSG\",\"26898\"]]"); + p = add_epsg_def (filter, first, last, 26899, "epsg", 26899, + "NAD83(CSRS) / MTM zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83(CSRS) / MTM zone 2\",GEOGCS[\"NAD83(CSRS)"); + add_srs_wkt (p, 1, + "\",DATUM[\"NAD83_Canadian_Spatial_Reference_System\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"GRS 1980\",6378137,298.257222101,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6140\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4617\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",0],PARAMETER[\"central_meridian\",-56],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",30480"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"E(X)\",EAST],AXIS[\"N(Y"); + add_srs_wkt (p, 12, + ")\",NORTH],AUTHORITY[\"EPSG\",\"26899\"]]"); + p = add_epsg_def (filter, first, last, 26901, "epsg", 26901, + "NAD83 / UTM zone 1N"); + add_proj4text (p, 0, + "+proj=utm +zone=1 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 1N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-177],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"26901\"]]"); + p = add_epsg_def (filter, first, last, 26902, "epsg", 26902, + "NAD83 / UTM zone 2N"); + add_proj4text (p, 0, + "+proj=utm +zone=2 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 2N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-171],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"26902\"]]"); + p = add_epsg_def (filter, first, last, 26903, "epsg", 26903, + "NAD83 / UTM zone 3N"); + add_proj4text (p, 0, + "+proj=utm +zone=3 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 3N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-165],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"26903\"]]"); + p = add_epsg_def (filter, first, last, 26904, "epsg", 26904, + "NAD83 / UTM zone 4N"); + add_proj4text (p, 0, + "+proj=utm +zone=4 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 4N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-159],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"26904\"]]"); + p = add_epsg_def (filter, first, last, 26905, "epsg", 26905, + "NAD83 / UTM zone 5N"); + add_proj4text (p, 0, + "+proj=utm +zone=5 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 5N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-153],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"26905\"]]"); + p = add_epsg_def (filter, first, last, 26906, "epsg", 26906, + "NAD83 / UTM zone 6N"); + add_proj4text (p, 0, + "+proj=utm +zone=6 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 6N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-147],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"26906\"]]"); + p = add_epsg_def (filter, first, last, 26907, "epsg", 26907, + "NAD83 / UTM zone 7N"); + add_proj4text (p, 0, + "+proj=utm +zone=7 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 7N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-141],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"26907\"]]"); + p = add_epsg_def (filter, first, last, 26908, "epsg", 26908, + "NAD83 / UTM zone 8N"); + add_proj4text (p, 0, + "+proj=utm +zone=8 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 8N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-135],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"26908\"]]"); + p = add_epsg_def (filter, first, last, 26909, "epsg", 26909, + "NAD83 / UTM zone 9N"); + add_proj4text (p, 0, + "+proj=utm +zone=9 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 9N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-129],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"26909\"]]"); + p = add_epsg_def (filter, first, last, 26910, "epsg", 26910, + "NAD83 / UTM zone 10N"); + add_proj4text (p, 0, + "+proj=utm +zone=10 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 10N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-123],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"26910\"]]"); + p = add_epsg_def (filter, first, last, 26911, "epsg", 26911, + "NAD83 / UTM zone 11N"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 11N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-117],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"26911\"]]"); + p = add_epsg_def (filter, first, last, 26912, "epsg", 26912, + "NAD83 / UTM zone 12N"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 12N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-111],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"26912\"]]"); + p = add_epsg_def (filter, first, last, 26913, "epsg", 26913, + "NAD83 / UTM zone 13N"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 13N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-105],PARAMETER[\"scale_factor\",0.9996],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"false_easting\",500000],PARAMETER[\"false_nort"); + add_srs_wkt (p, 10, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 11, + ",AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"26913\"]]"); + p = add_epsg_def (filter, first, last, 26914, "epsg", 26914, + "NAD83 / UTM zone 14N"); + add_proj4text (p, 0, + "+proj=utm +zone=14 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 14N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-99],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"26914\"]]"); + p = add_epsg_def (filter, first, last, 26915, "epsg", 26915, + "NAD83 / UTM zone 15N"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 15N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-93],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"26915\"]]"); + p = add_epsg_def (filter, first, last, 26916, "epsg", 26916, + "NAD83 / UTM zone 16N"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 16N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-87],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"26916\"]]"); + p = add_epsg_def (filter, first, last, 26917, "epsg", 26917, + "NAD83 / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 17N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-81],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"26917\"]]"); + p = add_epsg_def (filter, first, last, 26918, "epsg", 26918, + "NAD83 / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 18N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-75],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"26918\"]]"); + p = add_epsg_def (filter, first, last, 26919, "epsg", 26919, + "NAD83 / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 19N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-69],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"26919\"]]"); + p = add_epsg_def (filter, first, last, 26920, "epsg", 26920, + "NAD83 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 20N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-63],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"26920\"]]"); + p = add_epsg_def (filter, first, last, 26921, "epsg", 26921, + "NAD83 / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 21N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-57],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"26921\"]]"); + p = add_epsg_def (filter, first, last, 26922, "epsg", 26922, + "NAD83 / UTM zone 22N"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 22N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-51],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"26922\"]]"); + p = add_epsg_def (filter, first, last, 26923, "epsg", 26923, + "NAD83 / UTM zone 23N"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / UTM zone 23N\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-45],PARAMETER[\"scale_factor\",0.9996],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"26923\"]]"); + p = add_epsg_def (filter, first, last, 26929, "epsg", 26929, + "NAD83 / Alabama East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30.5 +lon_0=-85.83333333333333 +k=0.9"); + add_proj4text (p, 1, + "9996 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alabama East\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",30.5],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",-85.83333333333333],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.99996],PARAMETER[\"false_easting\",200000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"26929\"]]"); + p = add_epsg_def (filter, first, last, 26930, "epsg", 26930, + "NAD83 / Alabama West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-87.5 +k=0.999933333 +x_0=6"); + add_proj4text (p, 1, + "00000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alabama West\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",30],PARAMETER[\"centr"); + add_srs_wkt (p, 8, + "al_meridian\",-87.5],PARAMETER[\"scale_factor\",0.999933"); + add_srs_wkt (p, 9, + "333],PARAMETER[\"false_easting\",600000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"26930\"]]"); + p = add_epsg_def (filter, first, last, 26931, "epsg", 26931, + "NAD83 / Alaska zone 1"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=57 +lonc=-133.6666666666667 +alpha=32"); + add_proj4text (p, 1, + "3.1301023611111 +k=0.9999 +x_0=5000000 +y_0=-5000000 +no"); + add_proj4text (p, 2, + "_uoff +gamma=323.1301023611111 +datum=NAD83 +units=m +no"); + add_proj4text (p, 3, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alaska zone 1\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Hotine_Oblique_Merc"); + add_srs_wkt (p, 7, + "ator\"],PARAMETER[\"latitude_of_center\",57],PARAMETER[\""); + add_srs_wkt (p, 8, + "longitude_of_center\",-133.6666666666667],PARAMETER[\"az"); + add_srs_wkt (p, 9, + "imuth\",323.1301023611111],PARAMETER[\"rectified_grid_an"); + add_srs_wkt (p, 10, + "gle\",323.1301023611111],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 11, + "99],PARAMETER[\"false_easting\",5000000],PARAMETER[\"fal"); + add_srs_wkt (p, 12, + "se_northing\",-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHOR"); + add_srs_wkt (p, 14, + "ITY[\"EPSG\",\"26931\"]]"); + p = add_epsg_def (filter, first, last, 26932, "epsg", 26932, + "NAD83 / Alaska zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-142 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alaska zone 2\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",-142],PARAMETER[\"scale_factor\",0.9999]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"26932\"]]"); + p = add_epsg_def (filter, first, last, 26933, "epsg", 26933, + "NAD83 / Alaska zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-146 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alaska zone 3\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",-146],PARAMETER[\"scale_factor\",0.9999]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"26933\"]]"); + p = add_epsg_def (filter, first, last, 26934, "epsg", 26934, + "NAD83 / Alaska zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-150 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alaska zone 4\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",-150],PARAMETER[\"scale_factor\",0.9999]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"26934\"]]"); + p = add_epsg_def (filter, first, last, 26935, "epsg", 26935, + "NAD83 / Alaska zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-154 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alaska zone 5\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",-154],PARAMETER[\"scale_factor\",0.9999]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"26935\"]]"); + p = add_epsg_def (filter, first, last, 26936, "epsg", 26936, + "NAD83 / Alaska zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-158 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alaska zone 6\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",-158],PARAMETER[\"scale_factor\",0.9999]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"26936\"]]"); + p = add_epsg_def (filter, first, last, 26937, "epsg", 26937, + "NAD83 / Alaska zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-162 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alaska zone 7\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",-162],PARAMETER[\"scale_factor\",0.9999]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"26937\"]]"); + p = add_epsg_def (filter, first, last, 26938, "epsg", 26938, + "NAD83 / Alaska zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-166 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alaska zone 8\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",-166],PARAMETER[\"scale_factor\",0.9999]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"26938\"]]"); + p = add_epsg_def (filter, first, last, 26939, "epsg", 26939, + "NAD83 / Alaska zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=54 +lon_0=-170 +k=0.9999 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alaska zone 9\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",54],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",-170],PARAMETER[\"scale_factor\",0.9999]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"26939\"]]"); + p = add_epsg_def (filter, first, last, 26940, "epsg", 26940, + "NAD83 / Alaska zone 10"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=53.83333333333334 +lat_2=51.83333333333"); + add_proj4text (p, 1, + "334 +lat_0=51 +lon_0=-176 +x_0=1000000 +y_0=0 +datum=NAD"); + add_proj4text (p, 2, + "83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Alaska zone 10\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",53.83333"); + add_srs_wkt (p, 8, + "333333334],PARAMETER[\"standard_parallel_2\",51.83333333"); + add_srs_wkt (p, 9, + "333334],PARAMETER[\"latitude_of_origin\",51],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-176],PARAMETER[\"false_easting\",100"); + add_srs_wkt (p, 11, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"26940\"]]"); + p = add_epsg_def (filter, first, last, 26941, "epsg", 26941, + "NAD83 / California zone 1"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.66666666666666 +lat_2=40 +lat_0=39.3"); + add_proj4text (p, 1, + "3333333333334 +lon_0=-122 +x_0=2000000 +y_0=500000 +datu"); + add_proj4text (p, 2, + "m=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / California zone 1\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.66"); + add_srs_wkt (p, 8, + "666666666666],PARAMETER[\"standard_parallel_2\",40],PARA"); + add_srs_wkt (p, 9, + "METER[\"latitude_of_origin\",39.33333333333334],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-122],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",2000000],PARAMETER[\"false_northing\",500000],UNIT[\"me"); + add_srs_wkt (p, 12, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 13, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26941\"]]"); + p = add_epsg_def (filter, first, last, 26942, "epsg", 26942, + "NAD83 / California zone 2"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.83333333333334 +lat_2=38.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=37.66666666666666 +lon_0=-122 +x_0=2000000 +y"); + add_proj4text (p, 2, + "_0=500000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / California zone 2\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39.83"); + add_srs_wkt (p, 8, + "333333333334],PARAMETER[\"standard_parallel_2\",38.33333"); + add_srs_wkt (p, 9, + "333333334],PARAMETER[\"latitude_of_origin\",37.666666666"); + add_srs_wkt (p, 10, + "66666],PARAMETER[\"central_meridian\",-122],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",2000000],PARAMETER[\"false_northing\",50"); + add_srs_wkt (p, 12, + "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); + add_srs_wkt (p, 13, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"269"); + add_srs_wkt (p, 14, + "42\"]]"); + p = add_epsg_def (filter, first, last, 26943, "epsg", 26943, + "NAD83 / California zone 3"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.5 +lon_0=-120.5 +x_0=2000000 +y_0=500000 +"); + add_proj4text (p, 2, + "datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / California zone 3\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38.43"); + add_srs_wkt (p, 8, + "333333333333],PARAMETER[\"standard_parallel_2\",37.06666"); + add_srs_wkt (p, 9, + "666666667],PARAMETER[\"latitude_of_origin\",36.5],PARAME"); + add_srs_wkt (p, 10, + "TER[\"central_meridian\",-120.5],PARAMETER[\"false_easti"); + add_srs_wkt (p, 11, + "ng\",2000000],PARAMETER[\"false_northing\",500000],UNIT["); + add_srs_wkt (p, 12, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 13, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26943\"]]"); + p = add_epsg_def (filter, first, last, 26944, "epsg", 26944, + "NAD83 / California zone 4"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.25 +lat_2=36 +lat_0=35.3333333333333"); + add_proj4text (p, 1, + "4 +lon_0=-119 +x_0=2000000 +y_0=500000 +datum=NAD83 +uni"); + add_proj4text (p, 2, + "ts=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / California zone 4\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37.25"); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_2\",36],PARAMETER[\"lati"); + add_srs_wkt (p, 9, + "tude_of_origin\",35.33333333333334],PARAMETER[\"central_"); + add_srs_wkt (p, 10, + "meridian\",-119],PARAMETER[\"false_easting\",2000000],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_northing\",500000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 13, + "RTH],AUTHORITY[\"EPSG\",\"26944\"]]"); + p = add_epsg_def (filter, first, last, 26945, "epsg", 26945, + "NAD83 / California zone 5"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.46666666666667 +lat_2=34.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.5 +lon_0=-118 +x_0=2000000 +y_0=500000 +da"); + add_proj4text (p, 2, + "tum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / California zone 5\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",35.46"); + add_srs_wkt (p, 8, + "666666666667],PARAMETER[\"standard_parallel_2\",34.03333"); + add_srs_wkt (p, 9, + "333333333],PARAMETER[\"latitude_of_origin\",33.5],PARAME"); + add_srs_wkt (p, 10, + "TER[\"central_meridian\",-118],PARAMETER[\"false_easting"); + add_srs_wkt (p, 11, + "\",2000000],PARAMETER[\"false_northing\",500000],UNIT[\""); + add_srs_wkt (p, 12, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 13, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26945\"]]"); + p = add_epsg_def (filter, first, last, 26946, "epsg", 26946, + "NAD83 / California zone 6"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.88333333333333 +lat_2=32.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=32.16666666666666 +lon_0=-116.25 +x_0=2000000"); + add_proj4text (p, 2, + " +y_0=500000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / California zone 6\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",33.88"); + add_srs_wkt (p, 8, + "333333333333],PARAMETER[\"standard_parallel_2\",32.78333"); + add_srs_wkt (p, 9, + "333333333],PARAMETER[\"latitude_of_origin\",32.166666666"); + add_srs_wkt (p, 10, + "66666],PARAMETER[\"central_meridian\",-116.25],PARAMETER"); + add_srs_wkt (p, 11, + "[\"false_easting\",2000000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 13, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "26946\"]]"); + p = add_epsg_def (filter, first, last, 26948, "epsg", 26948, + "NAD83 / Arizona East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-110.1666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Arizona East\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",31],PARAMETER[\"centr"); + add_srs_wkt (p, 8, + "al_meridian\",-110.1666666666667],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",213360],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"26948\"]]"); + p = add_epsg_def (filter, first, last, 26949, "epsg", 26949, + "NAD83 / Arizona Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-111.9166666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=213360 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Arizona Central\",GEOGCS[\"NAD83\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",31],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-111.9166666666667],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999],PARAMETER[\"false_easting\",213360],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"26949\"]]"); + p = add_epsg_def (filter, first, last, 26950, "epsg", 26950, + "NAD83 / Arizona West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-113.75 +k=0.999933333 +x_0"); + add_proj4text (p, 1, + "=213360 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Arizona West\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",31],PARAMETER[\"centr"); + add_srs_wkt (p, 8, + "al_meridian\",-113.75],PARAMETER[\"scale_factor\",0.9999"); + add_srs_wkt (p, 9, + "33333],PARAMETER[\"false_easting\",213360],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 11, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"26950\"]]"); + p = add_epsg_def (filter, first, last, 26951, "epsg", 26951, + "NAD83 / Arkansas North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.23333333333333 +lat_2=34.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=34.33333333333334 +lon_0=-92 +x_0=400000 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Arkansas North\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36.23333"); + add_srs_wkt (p, 8, + "333333333],PARAMETER[\"standard_parallel_2\",34.93333333"); + add_srs_wkt (p, 9, + "333333],PARAMETER[\"latitude_of_origin\",34.333333333333"); + add_srs_wkt (p, 10, + "34],PARAMETER[\"central_meridian\",-92],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_easting\",400000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 12, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26951\"]]"); + p = add_epsg_def (filter, first, last, 26952, "epsg", 26952, + "NAD83 / Arkansas South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.76666666666667 +lat_2=33.3 +lat_0=32"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-92 +x_0=400000 +y_0=400000 +datu"); + add_proj4text (p, 2, + "m=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Arkansas South\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",34.76666"); + add_srs_wkt (p, 8, + "666666667],PARAMETER[\"standard_parallel_2\",33.3],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"latitude_of_origin\",32.66666666666666],PARAMETER"); + add_srs_wkt (p, 10, + "[\"central_meridian\",-92],PARAMETER[\"false_easting\",4"); + add_srs_wkt (p, 11, + "00000],PARAMETER[\"false_northing\",400000],UNIT[\"metre"); + add_srs_wkt (p, 12, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 13, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26952\"]]"); + p = add_epsg_def (filter, first, last, 26953, "epsg", 26953, + "NAD83 / Colorado North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.78333333333333 +lat_2=39.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=39.33333333333334 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "289 +y_0=304800.6096 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Colorado North\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40.78333"); + add_srs_wkt (p, 8, + "333333333],PARAMETER[\"standard_parallel_2\",39.71666666"); + add_srs_wkt (p, 9, + "666667],PARAMETER[\"latitude_of_origin\",39.333333333333"); + add_srs_wkt (p, 10, + "34],PARAMETER[\"central_meridian\",-105.5],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_easting\",914401.8289],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",304800.6096],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 13, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 14, + "\",\"26953\"]]"); + p = add_epsg_def (filter, first, last, 26954, "epsg", 26954, + "NAD83 / Colorado Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.75 +lat_2=38.45 +lat_0=37.8333333333"); + add_proj4text (p, 1, + "3334 +lon_0=-105.5 +x_0=914401.8289 +y_0=304800.6096 +da"); + add_proj4text (p, 2, + "tum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Colorado Central\",GEOGCS[\"NAD83\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39.75],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_2\",38.45],PARAMETER[\"lat"); + add_srs_wkt (p, 9, + "itude_of_origin\",37.83333333333334],PARAMETER[\"central"); + add_srs_wkt (p, 10, + "_meridian\",-105.5],PARAMETER[\"false_easting\",914401.8"); + add_srs_wkt (p, 11, + "289],PARAMETER[\"false_northing\",304800.6096],UNIT[\"me"); + add_srs_wkt (p, 12, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 13, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26954\"]]"); + p = add_epsg_def (filter, first, last, 26955, "epsg", 26955, + "NAD83 / Colorado South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.43333333333333 +lat_2=37.23333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.66666666666666 +lon_0=-105.5 +x_0=914401.8"); + add_proj4text (p, 2, + "289 +y_0=304800.6096 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Colorado South\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38.43333"); + add_srs_wkt (p, 8, + "333333333],PARAMETER[\"standard_parallel_2\",37.23333333"); + add_srs_wkt (p, 9, + "333333],PARAMETER[\"latitude_of_origin\",36.666666666666"); + add_srs_wkt (p, 10, + "66],PARAMETER[\"central_meridian\",-105.5],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_easting\",914401.8289],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 12, + ",304800.6096],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 13, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 14, + "\",\"26955\"]]"); + p = add_epsg_def (filter, first, last, 26956, "epsg", 26956, + "NAD83 / Connecticut"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.86666666666667 +lat_2=41.2 +lat_0=40"); + add_proj4text (p, 1, + ".83333333333334 +lon_0=-72.75 +x_0=304800.6096 +y_0=1524"); + add_proj4text (p, 2, + "00.3048 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Connecticut\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); + add_srs_wkt (p, 7, + "nic_2SP\"],PARAMETER[\"standard_parallel_1\",41.86666666"); + add_srs_wkt (p, 8, + "666667],PARAMETER[\"standard_parallel_2\",41.2],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"latitude_of_origin\",40.83333333333334],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-72.75],PARAMETER[\"false_easting\",3"); + add_srs_wkt (p, 11, + "04800.6096],PARAMETER[\"false_northing\",152400.3048],UN"); + add_srs_wkt (p, 12, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); + add_srs_wkt (p, 13, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26956\"]]"); + p = add_epsg_def (filter, first, last, 26957, "epsg", 26957, + "NAD83 / Delaware"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38 +lon_0=-75.41666666666667 +k=0.999"); + add_proj4text (p, 1, + "995 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Delaware\",GEOGCS[\"NAD83\",DATUM[\"Nor"); + add_srs_wkt (p, 1, + "th_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"latitude_of_origin\",38],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",-75.41666666666667],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 9, + "\",0.999995],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"26957\"]]"); + p = add_epsg_def (filter, first, last, 26958, "epsg", 26958, + "NAD83 / Florida East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-81 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Florida East\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",24.33333333333333],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-81],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.999941177],PARAMETER[\"false_easting\",200000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"26958\"]]"); + p = add_epsg_def (filter, first, last, 26959, "epsg", 26959, + "NAD83 / Florida West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.33333333333333 +lon_0=-82 +k=0.999"); + add_proj4text (p, 1, + "941177 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Florida West\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",24.33333333333333],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-82],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.999941177],PARAMETER[\"false_easting\",200000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"26959\"]]"); + p = add_epsg_def (filter, first, last, 26960, "epsg", 26960, + "NAD83 / Florida North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.75 +lat_2=29.58333333333333 +lat_0=2"); + add_proj4text (p, 1, + "9 +lon_0=-84.5 +x_0=600000 +y_0=0 +datum=NAD83 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Florida North\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_C"); + add_srs_wkt (p, 7, + "onic_2SP\"],PARAMETER[\"standard_parallel_1\",30.75],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",29.58333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",29],PARAMETER[\"central_merid"); + add_srs_wkt (p, 10, + "ian\",-84.5],PARAMETER[\"false_easting\",600000],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"26960\"]]"); + p = add_epsg_def (filter, first, last, 26961, "epsg", 26961, + "NAD83 / Hawaii zone 1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=18.83333333333333 +lon_0=-155.5 +k=0."); + add_proj4text (p, 1, + "999966667 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Hawaii zone 1\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",18.83333333333333],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-155.5],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.999966667],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 12, + "RTH],AUTHORITY[\"EPSG\",\"26961\"]]"); + p = add_epsg_def (filter, first, last, 26962, "epsg", 26962, + "NAD83 / Hawaii zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=20.33333333333333 +lon_0=-156.6666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=500000 +y_0=0 +datum=NAD83 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Hawaii zone 2\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",20.33333333333333],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-156.6666666666667],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.999966667],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 12, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26962\"]]"); + p = add_epsg_def (filter, first, last, 26963, "epsg", 26963, + "NAD83 / Hawaii zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=21.16666666666667 +lon_0=-158 +k=0.99"); + add_proj4text (p, 1, + "999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Hawaii zone 3\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",21.16666666666667],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-158],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.99999],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"26963\"]]"); + p = add_epsg_def (filter, first, last, 26964, "epsg", 26964, + "NAD83 / Hawaii zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=21.83333333333333 +lon_0=-159.5 +k=0."); + add_proj4text (p, 1, + "99999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Hawaii zone 4\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",21.83333333333333],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-159.5],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.99999],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"26964\"]]"); + p = add_epsg_def (filter, first, last, 26965, "epsg", 26965, + "NAD83 / Hawaii zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=21.66666666666667 +lon_0=-160.1666666"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Hawaii zone 5\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",21.66666666666667],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-160.1666666666667],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"26965\"]]"); + p = add_epsg_def (filter, first, last, 26966, "epsg", 26966, + "NAD83 / Georgia East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-82.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Georgia East\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",30],PARAMETER[\"centr"); + add_srs_wkt (p, 8, + "al_meridian\",-82.16666666666667],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"26966\"]]"); + p = add_epsg_def (filter, first, last, 26967, "epsg", 26967, + "NAD83 / Georgia West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=30 +lon_0=-84.16666666666667 +k=0.999"); + add_proj4text (p, 1, + "9 +x_0=700000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Georgia West\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",30],PARAMETER[\"centr"); + add_srs_wkt (p, 8, + "al_meridian\",-84.16666666666667],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",700000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"26967\"]]"); + p = add_epsg_def (filter, first, last, 26968, "epsg", 26968, + "NAD83 / Idaho East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-112.1666666"); + add_proj4text (p, 1, + "666667 +k=0.9999473679999999 +x_0=200000 +y_0=0 +datum=N"); + add_proj4text (p, 2, + "AD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Idaho East\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",41.66666666666666],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-112.1666666666667],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",0.999947368],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",200000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26968\"]]"); + p = add_epsg_def (filter, first, last, 26969, "epsg", 26969, + "NAD83 / Idaho Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-114 +k=0.99"); + add_proj4text (p, 1, + "99473679999999 +x_0=500000 +y_0=0 +datum=NAD83 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Idaho Central\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",41.66666666666666],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-114],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.999947368],PARAMETER[\"false_easting\",500000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"26969\"]]"); + p = add_epsg_def (filter, first, last, 26970, "epsg", 26970, + "NAD83 / Idaho West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.66666666666666 +lon_0=-115.75 +k=0"); + add_proj4text (p, 1, + ".999933333 +x_0=800000 +y_0=0 +datum=NAD83 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Idaho West\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",41.66666666666666],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-115.75],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.999933333],PARAMETER[\"false_easting\",800000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"26970\"]]"); + p = add_epsg_def (filter, first, last, 26971, "epsg", 26971, + "NAD83 / Illinois East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-88.33333333"); + add_proj4text (p, 1, + "333333 +k=0.9999749999999999 +x_0=300000 +y_0=0 +datum=N"); + add_proj4text (p, 2, + "AD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Illinois East\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",36.66666666666666],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-88.33333333333333],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.999975],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",300000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26971\"]]"); + p = add_epsg_def (filter, first, last, 26972, "epsg", 26972, + "NAD83 / Illinois West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.66666666666666 +lon_0=-90.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999941177 +x_0=700000 +y_0=0 +datum=NAD83 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Illinois West\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",36.66666666666666],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-90.16666666666667],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.999941177],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",700000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 12, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26972\"]]"); + p = add_epsg_def (filter, first, last, 26973, "epsg", 26973, + "NAD83 / Indiana East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-85.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=100000 +y_0=250000 +datum=NAD83 +units=m +"); + add_proj4text (p, 2, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Indiana East\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",37.5],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",-85.66666666666667],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.999966667],PARAMETER[\"false_easting\",100000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",250000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"26973\"]]"); + p = add_epsg_def (filter, first, last, 26974, "epsg", 26974, + "NAD83 / Indiana West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=37.5 +lon_0=-87.08333333333333 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=900000 +y_0=250000 +datum=NAD83 +units=m +"); + add_proj4text (p, 2, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Indiana West\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",37.5],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",-87.08333333333333],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.999966667],PARAMETER[\"false_easting\",900000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",250000],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"26974\"]]"); + p = add_epsg_def (filter, first, last, 26975, "epsg", 26975, + "NAD83 / Iowa North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.26666666666667 +lat_2=42.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=41.5 +lon_0=-93.5 +x_0=1500000 +y_0=1000000 +"); + add_proj4text (p, 2, + "datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Iowa North\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",43.266666666"); + add_srs_wkt (p, 8, + "66667],PARAMETER[\"standard_parallel_2\",42.066666666666"); + add_srs_wkt (p, 9, + "67],PARAMETER[\"latitude_of_origin\",41.5],PARAMETER[\"c"); + add_srs_wkt (p, 10, + "entral_meridian\",-93.5],PARAMETER[\"false_easting\",150"); + add_srs_wkt (p, 11, + "0000],PARAMETER[\"false_northing\",1000000],UNIT[\"metre"); + add_srs_wkt (p, 12, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 13, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26975\"]]"); + p = add_epsg_def (filter, first, last, 26976, "epsg", 26976, + "NAD83 / Iowa South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.61666666666"); + add_proj4text (p, 1, + "667 +lat_0=40 +lon_0=-93.5 +x_0=500000 +y_0=0 +datum=NAD"); + add_proj4text (p, 2, + "83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Iowa South\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",41.783333333"); + add_srs_wkt (p, 8, + "33333],PARAMETER[\"standard_parallel_2\",40.616666666666"); + add_srs_wkt (p, 9, + "67],PARAMETER[\"latitude_of_origin\",40],PARAMETER[\"cen"); + add_srs_wkt (p, 10, + "tral_meridian\",-93.5],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 11, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 13, + "RTH],AUTHORITY[\"EPSG\",\"26976\"]]"); + p = add_epsg_def (filter, first, last, 26977, "epsg", 26977, + "NAD83 / Kansas North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.78333333333333 +lat_2=38.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=38.33333333333334 +lon_0=-98 +x_0=400000 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Kansas North\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); + add_srs_wkt (p, 7, + "nic_2SP\"],PARAMETER[\"standard_parallel_1\",39.78333333"); + add_srs_wkt (p, 8, + "333333],PARAMETER[\"standard_parallel_2\",38.71666666666"); + add_srs_wkt (p, 9, + "667],PARAMETER[\"latitude_of_origin\",38.33333333333334]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"central_meridian\",-98],PARAMETER[\"false_e"); + add_srs_wkt (p, 11, + "asting\",400000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 12, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 13, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26977\"]]"); + p = add_epsg_def (filter, first, last, 26978, "epsg", 26978, + "NAD83 / Kansas South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.56666666666667 +lat_2=37.26666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.66666666666666 +lon_0=-98.5 +x_0=400000 +y"); + add_proj4text (p, 2, + "_0=400000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Kansas South\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); + add_srs_wkt (p, 7, + "nic_2SP\"],PARAMETER[\"standard_parallel_1\",38.56666666"); + add_srs_wkt (p, 8, + "666667],PARAMETER[\"standard_parallel_2\",37.26666666666"); + add_srs_wkt (p, 9, + "667],PARAMETER[\"latitude_of_origin\",36.66666666666666]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"central_meridian\",-98.5],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",400000],PARAMETER[\"false_northing\",400000],"); + add_srs_wkt (p, 12, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26978\"]]"); + p = add_epsg_def (filter, first, last, 26979, "epsg", 26979, + "NAD83 / Kentucky North (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=37.96666666666"); + add_proj4text (p, 1, + "667 +lat_0=37.5 +lon_0=-84.25 +x_0=500000 +y_0=0 +datum="); + add_proj4text (p, 2, + "NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Kentucky North (deprecated)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"G"); + add_srs_wkt (p, 2, + "RS 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"701"); + add_srs_wkt (p, 3, + "9\"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel"); + add_srs_wkt (p, 8, + "_1\",37.96666666666667],PARAMETER[\"standard_parallel_2\""); + add_srs_wkt (p, 9, + ",37.96666666666667],PARAMETER[\"latitude_of_origin\",37."); + add_srs_wkt (p, 10, + "5],PARAMETER[\"central_meridian\",-84.25],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 12, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\","); + add_srs_wkt (p, 13, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26979\"]]"); + p = add_epsg_def (filter, first, last, 26980, "epsg", 26980, + "NAD83 / Kentucky South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.93333333333333 +lat_2=36.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=36.33333333333334 +lon_0=-85.75 +x_0=500000 +"); + add_proj4text (p, 2, + "y_0=500000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Kentucky South\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37.93333"); + add_srs_wkt (p, 8, + "333333333],PARAMETER[\"standard_parallel_2\",36.73333333"); + add_srs_wkt (p, 9, + "333333],PARAMETER[\"latitude_of_origin\",36.333333333333"); + add_srs_wkt (p, 10, + "34],PARAMETER[\"central_meridian\",-85.75],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_easting\",500000],PARAMETER[\"false_northing\",5000"); + add_srs_wkt (p, 12, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 13, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26980"); + add_srs_wkt (p, 14, + "\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_38.c b/src/spatialite/src/srsinit/epsg_inlined_38.c new file mode 100644 index 0000000..431a1b4 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_38.c @@ -0,0 +1,3568 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_38 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 26981, "epsg", 26981, + "NAD83 / Louisiana North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.66666666666666 +lat_2=31.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=30.5 +lon_0=-92.5 +x_0=1000000 +y_0=0 +datum="); + add_proj4text (p, 2, + "NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Louisiana North\",GEOGCS[\"NAD83\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",32.6666"); + add_srs_wkt (p, 8, + "6666666666],PARAMETER[\"standard_parallel_2\",31.1666666"); + add_srs_wkt (p, 9, + "6666667],PARAMETER[\"latitude_of_origin\",30.5],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-92.5],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",1000000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 12, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"26981\"]]"); + p = add_epsg_def (filter, first, last, 26982, "epsg", 26982, + "NAD83 / Louisiana South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.7 +lat_2=29.3 +lat_0=28.5 +lon_0=-91"); + add_proj4text (p, 1, + ".33333333333333 +x_0=1000000 +y_0=0 +datum=NAD83 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Louisiana South\",GEOGCS[\"NAD83\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",30.7],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_2\",29.3],PARAMETER[\"latit"); + add_srs_wkt (p, 9, + "ude_of_origin\",28.5],PARAMETER[\"central_meridian\",-91"); + add_srs_wkt (p, 10, + ".33333333333333],PARAMETER[\"false_easting\",1000000],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"26982\"]]"); + p = add_epsg_def (filter, first, last, 26983, "epsg", 26983, + "NAD83 / Maine East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=43.66666666666666 +lon_0=-68.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Maine East\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",43.66666666666666],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-68.5],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9999],PARAMETER[\"false_easting\",300000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"26983\"]]"); + p = add_epsg_def (filter, first, last, 26984, "epsg", 26984, + "NAD83 / Maine West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.83333333333334 +lon_0=-70.16666666"); + add_proj4text (p, 1, + "666667 +k=0.999966667 +x_0=900000 +y_0=0 +datum=NAD83 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Maine West\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",42.83333333333334],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-70.16666666666667],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"scale_factor\",0.999966667],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",900000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26984\"]]"); + p = add_epsg_def (filter, first, last, 26985, "epsg", 26985, + "NAD83 / Maryland"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.45 +lat_2=38.3 +lat_0=37.66666666666"); + add_proj4text (p, 1, + "666 +lon_0=-77 +x_0=400000 +y_0=0 +datum=NAD83 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Maryland\",GEOGCS[\"NAD83\",DATUM[\"Nor"); + add_srs_wkt (p, 1, + "th_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",39.45],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_2\",38.3],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 9, + "_origin\",37.66666666666666],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 10, + "n\",-77],PARAMETER[\"false_easting\",400000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"26985\"]]"); + p = add_epsg_def (filter, first, last, 26986, "epsg", 26986, + "NAD83 / Massachusetts Mainland"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.68333333333333 +lat_2=41.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=41 +lon_0=-71.5 +x_0=200000 +y_0=750000 +datu"); + add_proj4text (p, 2, + "m=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Massachusetts Mainland\",GEOGCS[\"NAD83"); + add_srs_wkt (p, 1, + "\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 19"); + add_srs_wkt (p, 2, + "80\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 7, + "nformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",4"); + add_srs_wkt (p, 8, + "2.68333333333333],PARAMETER[\"standard_parallel_2\",41.7"); + add_srs_wkt (p, 9, + "1666666666667],PARAMETER[\"latitude_of_origin\",41],PARA"); + add_srs_wkt (p, 10, + "METER[\"central_meridian\",-71.5],PARAMETER[\"false_east"); + add_srs_wkt (p, 11, + "ing\",200000],PARAMETER[\"false_northing\",750000],UNIT["); + add_srs_wkt (p, 12, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAS"); + add_srs_wkt (p, 13, + "T],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26986\"]]"); + p = add_epsg_def (filter, first, last, 26987, "epsg", 26987, + "NAD83 / Massachusetts Island"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.48333333333333 +lat_2=41.28333333333"); + add_proj4text (p, 1, + "333 +lat_0=41 +lon_0=-70.5 +x_0=500000 +y_0=0 +datum=NAD"); + add_proj4text (p, 2, + "83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Massachusetts Island\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41"); + add_srs_wkt (p, 8, + ".48333333333333],PARAMETER[\"standard_parallel_2\",41.28"); + add_srs_wkt (p, 9, + "333333333333],PARAMETER[\"latitude_of_origin\",41],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"central_meridian\",-70.5],PARAMETER[\"false_easti"); + add_srs_wkt (p, 11, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 12, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26987\"]]"); + p = add_epsg_def (filter, first, last, 26988, "epsg", 26988, + "NAD83 / Michigan North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.08333333333334 +lat_2=45.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=44.78333333333333 +lon_0=-87 +x_0=8000000 +y_"); + add_proj4text (p, 2, + "0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Michigan North\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",47.08333"); + add_srs_wkt (p, 8, + "333333334],PARAMETER[\"standard_parallel_2\",45.48333333"); + add_srs_wkt (p, 9, + "333333],PARAMETER[\"latitude_of_origin\",44.783333333333"); + add_srs_wkt (p, 10, + "33],PARAMETER[\"central_meridian\",-87],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_easting\",8000000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 12, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 13, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26988\"]]"); + p = add_epsg_def (filter, first, last, 26989, "epsg", 26989, + "NAD83 / Michigan Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.7 +lat_2=44.18333333333333 +lat_0=43"); + add_proj4text (p, 1, + ".31666666666667 +lon_0=-84.36666666666666 +x_0=6000000 +"); + add_proj4text (p, 2, + "y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Michigan Central\",GEOGCS[\"NAD83\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",45.7],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"standard_parallel_2\",44.18333333333333],PARA"); + add_srs_wkt (p, 9, + "METER[\"latitude_of_origin\",43.31666666666667],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-84.36666666666666],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_easting\",6000000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 12, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26989\"]]"); + p = add_epsg_def (filter, first, last, 26990, "epsg", 26990, + "NAD83 / Michigan South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43.66666666666666 +lat_2=42.1 +lat_0=41"); + add_proj4text (p, 1, + ".5 +lon_0=-84.36666666666666 +x_0=4000000 +y_0=0 +datum="); + add_proj4text (p, 2, + "NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Michigan South\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",43.66666"); + add_srs_wkt (p, 8, + "666666666],PARAMETER[\"standard_parallel_2\",42.1],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"latitude_of_origin\",41.5],PARAMETER[\"central_me"); + add_srs_wkt (p, 10, + "ridian\",-84.36666666666666],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",4000000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 12, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"26990\"]]"); + p = add_epsg_def (filter, first, last, 26991, "epsg", 26991, + "NAD83 / Minnesota North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.63333333333333 +lat_2=47.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=46.5 +lon_0=-93.09999999999999 +x_0=800000 +y"); + add_proj4text (p, 2, + "_0=100000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Minnesota North\",GEOGCS[\"NAD83\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",48.6333"); + add_srs_wkt (p, 8, + "3333333333],PARAMETER[\"standard_parallel_2\",47.0333333"); + add_srs_wkt (p, 9, + "3333333],PARAMETER[\"latitude_of_origin\",46.5],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-93.1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",800000],PARAMETER[\"false_northing\",100000],UNIT[\"met"); + add_srs_wkt (p, 12, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"26991\"]]"); + p = add_epsg_def (filter, first, last, 26992, "epsg", 26992, + "NAD83 / Minnesota Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.05 +lat_2=45.61666666666667 +lat_0=4"); + add_proj4text (p, 1, + "5 +lon_0=-94.25 +x_0=800000 +y_0=100000 +datum=NAD83 +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Minnesota Central\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",47.05"); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_2\",45.61666666666667],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"latitude_of_origin\",45],PARAMETER[\"central_"); + add_srs_wkt (p, 10, + "meridian\",-94.25],PARAMETER[\"false_easting\",800000],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_northing\",100000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 13, + "ORTH],AUTHORITY[\"EPSG\",\"26992\"]]"); + p = add_epsg_def (filter, first, last, 26993, "epsg", 26993, + "NAD83 / Minnesota South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.21666666666667 +lat_2=43.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=43 +lon_0=-94 +x_0=800000 +y_0=100000 +datum="); + add_proj4text (p, 2, + "NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Minnesota South\",GEOGCS[\"NAD83\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",45.2166"); + add_srs_wkt (p, 8, + "6666666667],PARAMETER[\"standard_parallel_2\",43.7833333"); + add_srs_wkt (p, 9, + "3333333],PARAMETER[\"latitude_of_origin\",43],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-94],PARAMETER[\"false_easting\",80"); + add_srs_wkt (p, 11, + "0000],PARAMETER[\"false_northing\",100000],UNIT[\"metre\""); + add_srs_wkt (p, 12, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"26993\"]]"); + p = add_epsg_def (filter, first, last, 26994, "epsg", 26994, + "NAD83 / Mississippi East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-88.83333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Mississippi East\",GEOGCS[\"NAD83\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",29.5],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-88.83333333333333],PARAMETER[\"sca"); + add_srs_wkt (p, 9, + "le_factor\",0.99995],PARAMETER[\"false_easting\",300000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"26994\"]]"); + p = add_epsg_def (filter, first, last, 26995, "epsg", 26995, + "NAD83 / Mississippi West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=29.5 +lon_0=-90.33333333333333 +k=0.9"); + add_proj4text (p, 1, + "9995 +x_0=700000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Mississippi West\",GEOGCS[\"NAD83\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",29.5],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-90.33333333333333],PARAMETER[\"sca"); + add_srs_wkt (p, 9, + "le_factor\",0.99995],PARAMETER[\"false_easting\",700000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"26995\"]]"); + p = add_epsg_def (filter, first, last, 26996, "epsg", 26996, + "NAD83 / Missouri East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-90.5 +k=0.9"); + add_proj4text (p, 1, + "99933333 +x_0=250000 +y_0=0 +datum=NAD83 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Missouri East\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",35.83333333333334],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-90.5],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.999933333],PARAMETER[\"false_easting\",250000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"26996\"]]"); + p = add_epsg_def (filter, first, last, 26997, "epsg", 26997, + "NAD83 / Missouri Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=35.83333333333334 +lon_0=-92.5 +k=0.9"); + add_proj4text (p, 1, + "99933333 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Missouri Central\",GEOGCS[\"NAD83\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",35.8333333333333"); + add_srs_wkt (p, 8, + "4],PARAMETER[\"central_meridian\",-92.5],PARAMETER[\"sca"); + add_srs_wkt (p, 9, + "le_factor\",0.999933333],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 10, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 11, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"26997\"]]"); + p = add_epsg_def (filter, first, last, 26998, "epsg", 26998, + "NAD83 / Missouri West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36.16666666666666 +lon_0=-94.5 +k=0.9"); + add_proj4text (p, 1, + "99941177 +x_0=850000 +y_0=0 +datum=NAD83 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Missouri West\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",36.16666666666666],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-94.5],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.999941177],PARAMETER[\"false_easting\",850000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"26998\"]]"); + p = add_epsg_def (filter, first, last, 27037, "epsg", 27037, + "Nahrwan 1967 / UTM zone 37N"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +ellps=clrk80 +towgs84=-242.2,-144.9,"); + add_proj4text (p, 1, + "370.3,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Nahrwan 1967 / UTM zone 37N\",GEOGCS[\"Nahrwan "); + add_srs_wkt (p, 1, + "1967\",DATUM[\"Nahrwan_1967\",SPHEROID[\"Clarke 1880 (RG"); + add_srs_wkt (p, 2, + "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-242.2,-144.9,370.3,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6270\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4270\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",39],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"27037\"]]"); + p = add_epsg_def (filter, first, last, 27038, "epsg", 27038, + "Nahrwan 1967 / UTM zone 38N"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +ellps=clrk80 +towgs84=-242.2,-144.9,"); + add_proj4text (p, 1, + "370.3,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Nahrwan 1967 / UTM zone 38N\",GEOGCS[\"Nahrwan "); + add_srs_wkt (p, 1, + "1967\",DATUM[\"Nahrwan_1967\",SPHEROID[\"Clarke 1880 (RG"); + add_srs_wkt (p, 2, + "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-242.2,-144.9,370.3,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6270\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4270\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",45],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"27038\"]]"); + p = add_epsg_def (filter, first, last, 27039, "epsg", 27039, + "Nahrwan 1967 / UTM zone 39N"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=clrk80 +towgs84=-242.2,-144.9,"); + add_proj4text (p, 1, + "370.3,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Nahrwan 1967 / UTM zone 39N\",GEOGCS[\"Nahrwan "); + add_srs_wkt (p, 1, + "1967\",DATUM[\"Nahrwan_1967\",SPHEROID[\"Clarke 1880 (RG"); + add_srs_wkt (p, 2, + "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-242.2,-144.9,370.3,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6270\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4270\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",51],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"27039\"]]"); + p = add_epsg_def (filter, first, last, 27040, "epsg", 27040, + "Nahrwan 1967 / UTM zone 40N"); + add_proj4text (p, 0, + "+proj=utm +zone=40 +ellps=clrk80 +towgs84=-242.2,-144.9,"); + add_proj4text (p, 1, + "370.3,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Nahrwan 1967 / UTM zone 40N\",GEOGCS[\"Nahrwan "); + add_srs_wkt (p, 1, + "1967\",DATUM[\"Nahrwan_1967\",SPHEROID[\"Clarke 1880 (RG"); + add_srs_wkt (p, 2, + "S)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\"7012\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[-242.2,-144.9,370.3,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6270\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4270\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",57],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"27040\"]]"); + p = add_epsg_def (filter, first, last, 27120, "epsg", 27120, + "Naparima 1972 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=intl +towgs84=-10,375,165,0,0,"); + add_proj4text (p, 1, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Naparima 1972 / UTM zone 20N\",GEOGCS[\"Naparim"); + add_srs_wkt (p, 1, + "a 1972\",DATUM[\"Naparima_1972\",SPHEROID[\"Internationa"); + add_srs_wkt (p, 2, + "l 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[-10,375,165,0,0,0,0],AUTHORITY[\"EPSG\",\"6271\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4271\"]],PROJECTION[\"Transverse"); + add_srs_wkt (p, 7, + "_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-63],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"27120\"]]"); + p = add_epsg_def (filter, first, last, 27200, "epsg", 27200, + "NZGD49 / New Zealand Map Grid"); + add_proj4text (p, 0, + "+proj=nzmg +lat_0=-41 +lon_0=173 +x_0=2510000 +y_0=60231"); + add_proj4text (p, 1, + "50 +datum=nzgd49 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / New Zealand Map Grid\",GEOGCS[\"NZGD49"); + add_srs_wkt (p, 1, + "\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\""); + add_srs_wkt (p, 2, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "22\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.599"); + add_srs_wkt (p, 4, + "3],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 6, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4272\"]],PROJECTION[\"New_Zealand_Map_Grid\"],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"latitude_of_origin\",-41],PARAMETER[\"central_merid"); + add_srs_wkt (p, 9, + "ian\",173],PARAMETER[\"false_easting\",2510000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",6023150],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"27200\"]]"); + p = add_epsg_def (filter, first, last, 27205, "epsg", 27205, + "NZGD49 / Mount Eden Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-36.87986527777778 +lon_0=174.7643393"); + add_proj4text (p, 1, + "611111 +k=0.9999 +x_0=300000 +y_0=700000 +datum=nzgd49 +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Mount Eden Circuit\",GEOGCS[\"NZGD49\""); + add_srs_wkt (p, 1, + ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",-36.87986527777778],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",174.7643393611111],PARAMETER[\"scale_"); + add_srs_wkt (p, 10, + "factor\",0.9999],PARAMETER[\"false_easting\",300000],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",700000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27205\"]]"); + p = add_epsg_def (filter, first, last, 27206, "epsg", 27206, + "NZGD49 / Bay of Plenty Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-37.76124980555556 +lon_0=176.4661972"); + add_proj4text (p, 1, + "5 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +n"); + add_proj4text (p, 2, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Bay of Plenty Circuit\",GEOGCS[\"NZGD4"); + add_srs_wkt (p, 1, + "9\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\""); + add_srs_wkt (p, 2, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "22\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.599"); + add_srs_wkt (p, 4, + "3],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 6, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",-37.76124980555556],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",176.46619725],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 10, + "r\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"9001\"]],AUTHORITY[\"EPSG\",\"27206\"]]"); + p = add_epsg_def (filter, first, last, 27207, "epsg", 27207, + "NZGD49 / Poverty Bay Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-38.62470277777778 +lon_0=177.8856362"); + add_proj4text (p, 1, + "777778 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Poverty Bay Circuit\",GEOGCS[\"NZGD49\""); + add_srs_wkt (p, 1, + ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",-38.62470277777778],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",177.8856362777778],PARAMETER[\"scale_"); + add_srs_wkt (p, 10, + "factor\",1],PARAMETER[\"false_easting\",300000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",700000],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27207\"]]"); + p = add_epsg_def (filter, first, last, 27208, "epsg", 27208, + "NZGD49 / Hawkes Bay Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-39.65092930555556 +lon_0=176.6736805"); + add_proj4text (p, 1, + "277778 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Hawkes Bay Circuit\",GEOGCS[\"NZGD49\""); + add_srs_wkt (p, 1, + ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",-39.65092930555556],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",176.6736805277778],PARAMETER[\"scale_"); + add_srs_wkt (p, 10, + "factor\",1],PARAMETER[\"false_easting\",300000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",700000],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27208\"]]"); + p = add_epsg_def (filter, first, last, 27209, "epsg", 27209, + "NZGD49 / Taranaki Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-39.13575830555556 +lon_0=174.2280117"); + add_proj4text (p, 1, + "5 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +n"); + add_proj4text (p, 2, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Taranaki Circuit\",GEOGCS[\"NZGD49\",D"); + add_srs_wkt (p, 1, + "ATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Inte"); + add_srs_wkt (p, 2, + "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 3, + "]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",-39.13575830555556],PARAMETER[\"cen"); + add_srs_wkt (p, 9, + "tral_meridian\",174.22801175],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 10, + ",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"27209\"]]"); + p = add_epsg_def (filter, first, last, 27210, "epsg", 27210, + "NZGD49 / Tuhirangi Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-39.51247038888889 +lon_0=175.6400368"); + add_proj4text (p, 1, + "055556 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Tuhirangi Circuit\",GEOGCS[\"NZGD49\","); + add_srs_wkt (p, 1, + "DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Int"); + add_srs_wkt (p, 2, + "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 3, + "]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",-39.51247038888889],PARAMETER[\"cen"); + add_srs_wkt (p, 9, + "tral_meridian\",175.6400368055556],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 10, + "tor\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27210\"]]"); + p = add_epsg_def (filter, first, last, 27211, "epsg", 27211, + "NZGD49 / Wanganui Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-40.24194713888889 +lon_0=175.4880996"); + add_proj4text (p, 1, + "111111 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Wanganui Circuit\",GEOGCS[\"NZGD49\",D"); + add_srs_wkt (p, 1, + "ATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Inte"); + add_srs_wkt (p, 2, + "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 3, + "]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",-40.24194713888889],PARAMETER[\"cen"); + add_srs_wkt (p, 9, + "tral_meridian\",175.4880996111111],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 10, + "tor\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27211\"]]"); + p = add_epsg_def (filter, first, last, 27212, "epsg", 27212, + "NZGD49 / Wairarapa Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-40.92553263888889 +lon_0=175.6473496"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Wairarapa Circuit\",GEOGCS[\"NZGD49\","); + add_srs_wkt (p, 1, + "DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Int"); + add_srs_wkt (p, 2, + "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 3, + "]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",-40.92553263888889],PARAMETER[\"cen"); + add_srs_wkt (p, 9, + "tral_meridian\",175.6473496666667],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 10, + "tor\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27212\"]]"); + p = add_epsg_def (filter, first, last, 27213, "epsg", 27213, + "NZGD49 / Wellington Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-41.30131963888888 +lon_0=174.7766231"); + add_proj4text (p, 1, + "111111 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Wellington Circuit\",GEOGCS[\"NZGD49\""); + add_srs_wkt (p, 1, + ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",-41.30131963888888],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",174.7766231111111],PARAMETER[\"scale_"); + add_srs_wkt (p, 10, + "factor\",1],PARAMETER[\"false_easting\",300000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",700000],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27213\"]]"); + p = add_epsg_def (filter, first, last, 27214, "epsg", 27214, + "NZGD49 / Collingwood Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-40.71475905555556 +lon_0=172.6720465"); + add_proj4text (p, 1, + " +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Collingwood Circuit\",GEOGCS[\"NZGD49\""); + add_srs_wkt (p, 1, + ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",-40.71475905555556],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",172.6720465],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 10, + "\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"27214\"]]"); + p = add_epsg_def (filter, first, last, 27215, "epsg", 27215, + "NZGD49 / Nelson Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-41.27454472222222 +lon_0=173.2993168"); + add_proj4text (p, 1, + "055555 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Nelson Circuit\",GEOGCS[\"NZGD49\",DAT"); + add_srs_wkt (p, 1, + "UM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Intern"); + add_srs_wkt (p, 2, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "72\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",-41.27454472222222],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",173.2993168055555],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 10, + "or\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27215\"]]"); + p = add_epsg_def (filter, first, last, 27216, "epsg", 27216, + "NZGD49 / Karamea Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-41.28991152777778 +lon_0=172.1090281"); + add_proj4text (p, 1, + "944444 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Karamea Circuit\",GEOGCS[\"NZGD49\",DA"); + add_srs_wkt (p, 1, + "TUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Inter"); + add_srs_wkt (p, 2, + "national 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",-41.28991152777778],PARAMETER[\"cen"); + add_srs_wkt (p, 9, + "tral_meridian\",172.1090281944444],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 10, + "tor\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27216\"]]"); + p = add_epsg_def (filter, first, last, 27217, "epsg", 27217, + "NZGD49 / Buller Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-41.81080286111111 +lon_0=171.5812600"); + add_proj4text (p, 1, + "555556 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Buller Circuit\",GEOGCS[\"NZGD49\",DAT"); + add_srs_wkt (p, 1, + "UM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Intern"); + add_srs_wkt (p, 2, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "72\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",-41.81080286111111],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",171.5812600555556],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 10, + "or\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27217\"]]"); + p = add_epsg_def (filter, first, last, 27218, "epsg", 27218, + "NZGD49 / Grey Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-42.33369427777778 +lon_0=171.5497713"); + add_proj4text (p, 1, + "055556 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Grey Circuit\",GEOGCS[\"NZGD49\",DATUM"); + add_srs_wkt (p, 1, + "[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4272"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",-42.33369427777778],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",171.5497713055556],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 10, + "\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"27218\"]]"); + p = add_epsg_def (filter, first, last, 27219, "epsg", 27219, + "NZGD49 / Amuri Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-42.68911658333333 +lon_0=173.0101333"); + add_proj4text (p, 1, + "888889 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Amuri Circuit\",GEOGCS[\"NZGD49\",DATU"); + add_srs_wkt (p, 1, + "M[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"427"); + add_srs_wkt (p, 7, + "2\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",-42.68911658333333],PARAMETER[\"centr"); + add_srs_wkt (p, 9, + "al_meridian\",173.0101333888889],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 10, + "r\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"f"); + add_srs_wkt (p, 11, + "alse_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"9001\"]],AUTHORITY[\"EPSG\",\"27219\"]]"); + p = add_epsg_def (filter, first, last, 27220, "epsg", 27220, + "NZGD49 / Marlborough Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-41.54448666666666 +lon_0=173.8020741"); + add_proj4text (p, 1, + "111111 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Marlborough Circuit\",GEOGCS[\"NZGD49\""); + add_srs_wkt (p, 1, + ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",-41.54448666666666],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",173.8020741111111],PARAMETER[\"scale_"); + add_srs_wkt (p, 10, + "factor\",1],PARAMETER[\"false_easting\",300000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",700000],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27220\"]]"); + p = add_epsg_def (filter, first, last, 27221, "epsg", 27221, + "NZGD49 / Hokitika Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-42.88632236111111 +lon_0=170.9799935"); + add_proj4text (p, 1, + " +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Hokitika Circuit\",GEOGCS[\"NZGD49\",D"); + add_srs_wkt (p, 1, + "ATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Inte"); + add_srs_wkt (p, 2, + "rnational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 3, + "]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",-42.88632236111111],PARAMETER[\"cen"); + add_srs_wkt (p, 9, + "tral_meridian\",170.9799935],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 10, + "1],PARAMETER[\"false_easting\",300000],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"9001\"]],AUTHORITY[\"EPSG\",\"27221\"]]"); + p = add_epsg_def (filter, first, last, 27222, "epsg", 27222, + "NZGD49 / Okarito Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-43.11012813888889 +lon_0=170.2609258"); + add_proj4text (p, 1, + "333333 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Okarito Circuit\",GEOGCS[\"NZGD49\",DA"); + add_srs_wkt (p, 1, + "TUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Inter"); + add_srs_wkt (p, 2, + "national 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]"); + add_srs_wkt (p, 3, + "],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",-43.11012813888889],PARAMETER[\"cen"); + add_srs_wkt (p, 9, + "tral_meridian\",170.2609258333333],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 10, + "tor\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27222\"]]"); + p = add_epsg_def (filter, first, last, 27223, "epsg", 27223, + "NZGD49 / Jacksons Bay Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-43.97780288888889 +lon_0=168.606267 "); + add_proj4text (p, 1, + "+k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Jacksons Bay Circuit\",GEOGCS[\"NZGD49"); + add_srs_wkt (p, 1, + "\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\""); + add_srs_wkt (p, 2, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "22\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.599"); + add_srs_wkt (p, 4, + "3],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 6, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",-43.97780288888889],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",168.606267],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 10, + ",1],PARAMETER[\"false_easting\",300000],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9001\"]],AUTHORITY[\"EPSG\",\"27223\"]]"); + p = add_epsg_def (filter, first, last, 27224, "epsg", 27224, + "NZGD49 / Mount Pleasant Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-43.59063758333333 +lon_0=172.7271935"); + add_proj4text (p, 1, + "833333 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Mount Pleasant Circuit\",GEOGCS[\"NZGD"); + add_srs_wkt (p, 1, + "49\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID["); + add_srs_wkt (p, 2, + "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7022\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5"); + add_srs_wkt (p, 4, + "993],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",-43.59063758333333],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"central_meridian\",172.7271935833333],PARAMETER[\"sc"); + add_srs_wkt (p, 10, + "ale_factor\",1],PARAMETER[\"false_easting\",300000],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",700000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27224\"]]"); + p = add_epsg_def (filter, first, last, 27225, "epsg", 27225, + "NZGD49 / Gawler Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-43.74871155555556 +lon_0=171.3607484"); + add_proj4text (p, 1, + "722222 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Gawler Circuit\",GEOGCS[\"NZGD49\",DAT"); + add_srs_wkt (p, 1, + "UM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Intern"); + add_srs_wkt (p, 2, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "72\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",-43.74871155555556],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",171.3607484722222],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 10, + "or\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27225\"]]"); + p = add_epsg_def (filter, first, last, 27226, "epsg", 27226, + "NZGD49 / Timaru Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-44.40222036111111 +lon_0=171.0572508"); + add_proj4text (p, 1, + "333333 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Timaru Circuit\",GEOGCS[\"NZGD49\",DAT"); + add_srs_wkt (p, 1, + "UM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Intern"); + add_srs_wkt (p, 2, + "ational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "72\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",-44.40222036111111],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",171.0572508333333],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 10, + "or\",1],PARAMETER[\"false_easting\",300000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",700000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27226\"]]"); + p = add_epsg_def (filter, first, last, 27227, "epsg", 27227, + "NZGD49 / Lindis Peak Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-44.73526797222222 +lon_0=169.4677550"); + add_proj4text (p, 1, + "833333 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Lindis Peak Circuit\",GEOGCS[\"NZGD49\""); + add_srs_wkt (p, 1, + ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",-44.73526797222222],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",169.4677550833333],PARAMETER[\"scale_"); + add_srs_wkt (p, 10, + "factor\",1],PARAMETER[\"false_easting\",300000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",700000],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27227\"]]"); + p = add_epsg_def (filter, first, last, 27228, "epsg", 27228, + "NZGD49 / Mount Nicholas Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-45.13290258333333 +lon_0=168.3986411"); + add_proj4text (p, 1, + "944444 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Mount Nicholas Circuit\",GEOGCS[\"NZGD"); + add_srs_wkt (p, 1, + "49\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID["); + add_srs_wkt (p, 2, + "\"International 1924\",6378388,297,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7022\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5"); + add_srs_wkt (p, 4, + "993],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",-45.13290258333333],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"central_meridian\",168.3986411944444],PARAMETER[\"sc"); + add_srs_wkt (p, 10, + "ale_factor\",1],PARAMETER[\"false_easting\",300000],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",700000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27228\"]]"); + p = add_epsg_def (filter, first, last, 27229, "epsg", 27229, + "NZGD49 / Mount York Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-45.56372616666666 +lon_0=167.7388617"); + add_proj4text (p, 1, + "777778 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Mount York Circuit\",GEOGCS[\"NZGD49\""); + add_srs_wkt (p, 1, + ",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",-45.56372616666666],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",167.7388617777778],PARAMETER[\"scale_"); + add_srs_wkt (p, 10, + "factor\",1],PARAMETER[\"false_easting\",300000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",700000],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27229\"]]"); + p = add_epsg_def (filter, first, last, 27230, "epsg", 27230, + "NZGD49 / Observation Point Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-45.81619661111111 +lon_0=170.6285951"); + add_proj4text (p, 1, + "666667 +k=1 +x_0=300000 +y_0=700000 +datum=nzgd49 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Observation Point Circuit\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "ZGD49\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7022\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-"); + add_srs_wkt (p, 4, + "4.5993],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 5, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 6, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",-45.81619661111111],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"central_meridian\",170.6285951666667],PARAMETER[\""); + add_srs_wkt (p, 10, + "scale_factor\",1],PARAMETER[\"false_easting\",300000],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_northing\",700000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27230\"]]"); + p = add_epsg_def (filter, first, last, 27231, "epsg", 27231, + "NZGD49 / North Taieri Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-45.86151336111111 +lon_0=170.2825891"); + add_proj4text (p, 1, + "111111 +k=0.99996 +x_0=300000 +y_0=700000 +datum=nzgd49 "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / North Taieri Circuit\",GEOGCS[\"NZGD49"); + add_srs_wkt (p, 1, + "\",DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\""); + add_srs_wkt (p, 2, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "22\"]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.599"); + add_srs_wkt (p, 4, + "3],AUTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 6, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",-45.86151336111111],PARAMETER[\""); + add_srs_wkt (p, 9, + "central_meridian\",170.2825891111111],PARAMETER[\"scale_"); + add_srs_wkt (p, 10, + "factor\",0.99996],PARAMETER[\"false_easting\",300000],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_northing\",700000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"27231\"]]"); + p = add_epsg_def (filter, first, last, 27232, "epsg", 27232, + "NZGD49 / Bluff Circuit"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-46.60000961111111 +lon_0=168.342872 "); + add_proj4text (p, 1, + "+k=1 +x_0=300002.66 +y_0=699999.58 +datum=nzgd49 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / Bluff Circuit\",GEOGCS[\"NZGD49\",DATU"); + add_srs_wkt (p, 1, + "M[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Interna"); + add_srs_wkt (p, 2, + "tional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],"); + add_srs_wkt (p, 3, + "TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"427"); + add_srs_wkt (p, 7, + "2\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",-46.60000961111111],PARAMETER[\"centr"); + add_srs_wkt (p, 9, + "al_meridian\",168.342872],PARAMETER[\"scale_factor\",1],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",300002.66],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_northing\",699999.58],UNIT[\"metre\",1,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"9001\"]],AUTHORITY[\"EPSG\",\"27232\"]]"); + p = add_epsg_def (filter, first, last, 27258, "epsg", 27258, + "NZGD49 / UTM zone 58S"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +datum=nzgd49 +units=m +no_def"); + add_proj4text (p, 1, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / UTM zone 58S\",GEOGCS[\"NZGD49\",DATUM"); + add_srs_wkt (p, 1, + "[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4272"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",165]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 12, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"27258\"]]"); + p = add_epsg_def (filter, first, last, 27259, "epsg", 27259, + "NZGD49 / UTM zone 59S"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +south +datum=nzgd49 +units=m +no_def"); + add_proj4text (p, 1, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / UTM zone 59S\",GEOGCS[\"NZGD49\",DATUM"); + add_srs_wkt (p, 1, + "[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4272"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",171]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 12, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"27259\"]]"); + p = add_epsg_def (filter, first, last, 27260, "epsg", 27260, + "NZGD49 / UTM zone 60S"); + add_proj4text (p, 0, + "+proj=utm +zone=60 +south +datum=nzgd49 +units=m +no_def"); + add_proj4text (p, 1, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / UTM zone 60S\",GEOGCS[\"NZGD49\",DATUM"); + add_srs_wkt (p, 1, + "[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Internat"); + add_srs_wkt (p, 2, + "ional 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4272"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",177]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",500000],PARAMETER[\"false_northing\",10000000],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 12, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"27260\"]]"); + p = add_epsg_def (filter, first, last, 27291, "epsg", 27291, + "NZGD49 / North Island Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-39 +lon_0=175.5 +k=1 +x_0=274319.524"); + add_proj4text (p, 1, + "3848086 +y_0=365759.3658464114 +datum=nzgd49 +to_meter=0"); + add_proj4text (p, 2, + ".9143984146160287 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / North Island Grid\",GEOGCS[\"NZGD49\","); + add_srs_wkt (p, 1, + "DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Int"); + add_srs_wkt (p, 2, + "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 3, + "]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",-39],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",175.5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",300000],PARAMETER[\"false_northing\",400000],U"); + add_srs_wkt (p, 11, + "NIT[\"British yard (Sears 1922)\",0.9143984146160287,AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"9040\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"27291\"]]"); + p = add_epsg_def (filter, first, last, 27292, "epsg", 27292, + "NZGD49 / South Island Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-44 +lon_0=171.5 +k=1 +x_0=457199.207"); + add_proj4text (p, 1, + "3080143 +y_0=457199.2073080143 +datum=nzgd49 +to_meter=0"); + add_proj4text (p, 2, + ".9143984146160287 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NZGD49 / South Island Grid\",GEOGCS[\"NZGD49\","); + add_srs_wkt (p, 1, + "DATUM[\"New_Zealand_Geodetic_Datum_1949\",SPHEROID[\"Int"); + add_srs_wkt (p, 2, + "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 3, + "]],TOWGS84[59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6272\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 5, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 6, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4272\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",-44],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",171.5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",500000],PARAMETER[\"false_northing\",500000],U"); + add_srs_wkt (p, 11, + "NIT[\"British yard (Sears 1922)\",0.9143984146160287,AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"9040\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"27292\"]]"); + p = add_epsg_def (filter, first, last, 27391, "epsg", 27391, + "NGO 1948 (Oslo) / NGO zone I"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=-4.666666666666667 +k=1 +x_"); + add_proj4text (p, 1, + "0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84="); + add_proj4text (p, 2, + "278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NGO 1948 (Oslo) / NGO zone I\",GEOGCS[\"NGO 194"); + add_srs_wkt (p, 1, + "8 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel Mod"); + add_srs_wkt (p, 2, + "ified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "5\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.72291666666"); + add_srs_wkt (p, 5, + "667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.0174"); + add_srs_wkt (p, 6, + "532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 7, + "PSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"latitude_of_origin\",58],PARAMETER[\"central_me"); + add_srs_wkt (p, 9, + "ridian\",-4.666666666666667],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 10, + "1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"27391\"]]"); + p = add_epsg_def (filter, first, last, 27392, "epsg", 27392, + "NGO 1948 (Oslo) / NGO zone II"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=-2.333333333333333 +k=1 +x_"); + add_proj4text (p, 1, + "0=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84="); + add_proj4text (p, 2, + "278.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NGO 1948 (Oslo) / NGO zone II\",GEOGCS[\"NGO 19"); + add_srs_wkt (p, 1, + "48 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel Mo"); + add_srs_wkt (p, 2, + "dified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "05\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.7229166666"); + add_srs_wkt (p, 5, + "6667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 6, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",58],PARAMETER[\"central_m"); + add_srs_wkt (p, 9, + "eridian\",-2.333333333333333],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 10, + ",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 12, + "],AUTHORITY[\"EPSG\",\"27392\"]]"); + p = add_epsg_def (filter, first, last, 27393, "epsg", 27393, + "NGO 1948 (Oslo) / NGO zone III"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=0 +k=1 +x_0=0 +y_0=0 +a=637"); + add_proj4text (p, 1, + "7492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,7."); + add_proj4text (p, 2, + "889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NGO 1948 (Oslo) / NGO zone III\",GEOGCS[\"NGO 1"); + add_srs_wkt (p, 1, + "948 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel M"); + add_srs_wkt (p, 2, + "odified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "005\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.722916666"); + add_srs_wkt (p, 5, + "66667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",58],PARAMETER[\"central_m"); + add_srs_wkt (p, 9, + "eridian\",0],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"27393\"]]"); + p = add_epsg_def (filter, first, last, 27394, "epsg", 27394, + "NGO 1948 (Oslo) / NGO zone IV"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=2.5 +k=1 +x_0=0 +y_0=0 +a=6"); + add_proj4text (p, 1, + "377492.018 +b=6356173.508712696 +towgs84=278.3,93,474.5,"); + add_proj4text (p, 2, + "7.889,0.05,-6.61,6.21 +pm=oslo +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NGO 1948 (Oslo) / NGO zone IV\",GEOGCS[\"NGO 19"); + add_srs_wkt (p, 1, + "48 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel Mo"); + add_srs_wkt (p, 2, + "dified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "05\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.7229166666"); + add_srs_wkt (p, 5, + "6667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 6, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",58],PARAMETER[\"central_m"); + add_srs_wkt (p, 9, + "eridian\",2.5],PARAMETER[\"scale_factor\",1],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",0],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 11, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 12, + "SG\",\"27394\"]]"); + p = add_epsg_def (filter, first, last, 27395, "epsg", 27395, + "NGO 1948 (Oslo) / NGO zone V"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=6.166666666666667 +k=1 +x_0"); + add_proj4text (p, 1, + "=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=2"); + add_proj4text (p, 2, + "78.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +n"); + add_proj4text (p, 3, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NGO 1948 (Oslo) / NGO zone V\",GEOGCS[\"NGO 194"); + add_srs_wkt (p, 1, + "8 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel Mod"); + add_srs_wkt (p, 2, + "ified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "5\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.72291666666"); + add_srs_wkt (p, 5, + "667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.0174"); + add_srs_wkt (p, 6, + "532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 7, + "PSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"latitude_of_origin\",58],PARAMETER[\"central_me"); + add_srs_wkt (p, 9, + "ridian\",6.166666666666667],PARAMETER[\"scale_factor\",1"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_easting\",0],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"27395\"]]"); + p = add_epsg_def (filter, first, last, 27396, "epsg", 27396, + "NGO 1948 (Oslo) / NGO zone VI"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=10.16666666666667 +k=1 +x_0"); + add_proj4text (p, 1, + "=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=2"); + add_proj4text (p, 2, + "78.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +n"); + add_proj4text (p, 3, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NGO 1948 (Oslo) / NGO zone VI\",GEOGCS[\"NGO 19"); + add_srs_wkt (p, 1, + "48 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel Mo"); + add_srs_wkt (p, 2, + "dified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "05\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.7229166666"); + add_srs_wkt (p, 5, + "6667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 6, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",58],PARAMETER[\"central_m"); + add_srs_wkt (p, 9, + "eridian\",10.16666666666667],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 10, + "1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"27396\"]]"); + p = add_epsg_def (filter, first, last, 27397, "epsg", 27397, + "NGO 1948 (Oslo) / NGO zone VII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=14.16666666666667 +k=1 +x_0"); + add_proj4text (p, 1, + "=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=2"); + add_proj4text (p, 2, + "78.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +n"); + add_proj4text (p, 3, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NGO 1948 (Oslo) / NGO zone VII\",GEOGCS[\"NGO 1"); + add_srs_wkt (p, 1, + "948 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel M"); + add_srs_wkt (p, 2, + "odified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "005\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.722916666"); + add_srs_wkt (p, 5, + "66667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 6, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 7, + "EPSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"latitude_of_origin\",58],PARAMETER[\"central_m"); + add_srs_wkt (p, 9, + "eridian\",14.16666666666667],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 10, + "1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nort"); + add_srs_wkt (p, 11, + "hing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"27397\"]]"); + p = add_epsg_def (filter, first, last, 27398, "epsg", 27398, + "NGO 1948 (Oslo) / NGO zone VIII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=58 +lon_0=18.33333333333333 +k=1 +x_0"); + add_proj4text (p, 1, + "=0 +y_0=0 +a=6377492.018 +b=6356173.508712696 +towgs84=2"); + add_proj4text (p, 2, + "78.3,93,474.5,7.889,0.05,-6.61,6.21 +pm=oslo +units=m +n"); + add_proj4text (p, 3, + "o_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NGO 1948 (Oslo) / NGO zone VIII\",GEOGCS[\"NGO "); + add_srs_wkt (p, 1, + "1948 (Oslo)\",DATUM[\"NGO_1948_Oslo\",SPHEROID[\"Bessel "); + add_srs_wkt (p, 2, + "Modified\",6377492.018,299.1528128,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7005\"]],TOWGS84[278.3,93,474.5,7.889,0.05,-6.61,6.21],A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"6817\"]],PRIMEM[\"Oslo\",10.72291666"); + add_srs_wkt (p, 5, + "666667,AUTHORITY[\"EPSG\",\"8913\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 6, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4817\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_origin\",58],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",18.33333333333333],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 10, + ",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_nor"); + add_srs_wkt (p, 11, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 12, + "],AUTHORITY[\"EPSG\",\"27398\"]]"); + p = add_epsg_def (filter, first, last, 27429, "epsg", 27429, + "Datum 73 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=intl +towgs84=-223.237,110.193"); + add_proj4text (p, 1, + ",36.649,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Datum 73 / UTM zone 29N\",GEOGCS[\"Datum 73\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Datum_73\",SPHEROID[\"International 1924\",637838"); + add_srs_wkt (p, 2, + "8,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-223.237,110"); + add_srs_wkt (p, 3, + ".193,36.649,0,0,0,0],AUTHORITY[\"EPSG\",\"6274\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4274\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 7, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-9],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 9, + "996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 11, + "001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"27429\"]]"); + p = add_epsg_def (filter, first, last, 27492, "epsg", 27492, + "Datum 73 / Modified Portuguese Grid (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111"); + add_proj4text (p, 1, + "111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps="); + add_proj4text (p, 2, + "intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Datum 73 / Modified Portuguese Grid (deprecated"); + add_srs_wkt (p, 1, + ")\",GEOGCS[\"Datum 73\",DATUM[\"Datum_73\",SPHEROID[\"In"); + add_srs_wkt (p, 2, + "ternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[-223.237,110.193,36.649,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6274\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4274\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",39.66666666666666],PARAMETER[\"central_meri"); + add_srs_wkt (p, 9, + "dian\",-8.131906111111112],PARAMETER[\"scale_factor\",1]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_easting\",180.598],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",-86.99],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9001\"]],AUTHORITY[\"EPSG\",\"27492\"]]"); + p = add_epsg_def (filter, first, last, 27493, "epsg", 27493, + "Datum 73 / Modified Portuguese Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=39.66666666666666 +lon_0=-8.131906111"); + add_proj4text (p, 1, + "111112 +k=1 +x_0=180.598 +y_0=-86.98999999999999 +ellps="); + add_proj4text (p, 2, + "intl +towgs84=-223.237,110.193,36.649,0,0,0,0 +units=m +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Datum 73 / Modified Portuguese Grid\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Datum 73\",DATUM[\"Datum_73\",SPHEROID[\"International 1"); + add_srs_wkt (p, 2, + "924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-223.237,110.193,36.649,0,0,0,0],AUTHORITY[\"EPSG\",\"62"); + add_srs_wkt (p, 4, + "74\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4274\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",3"); + add_srs_wkt (p, 8, + "9.66666666666666],PARAMETER[\"central_meridian\",-8.1319"); + add_srs_wkt (p, 9, + "06111111112],PARAMETER[\"scale_factor\",1],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",180.598],PARAMETER[\"false_northing\",-86"); + add_srs_wkt (p, 11, + ".99],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); + add_srs_wkt (p, 12, + "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"2749"); + add_srs_wkt (p, 13, + "3\"]]"); + p = add_epsg_def (filter, first, last, 27500, "epsg", 27500, + "ATF (Paris) / Nord de Guerre"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000"); + add_proj4text (p, 1, + "001 +lon_0=5.399999999999999 +k_0=0.99950908 +x_0=500000"); + add_proj4text (p, 2, + " +y_0=300000 +a=6376523 +b=6355862.933255573 +pm=2.33720"); + add_proj4text (p, 3, + "8333333333 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"ATF (Paris) / Nord de Guerre\",GEOGCS[\"ATF (Pa"); + add_srs_wkt (p, 1, + "ris)\",DATUM[\"Ancienne_Triangulation_Francaise_Paris\","); + add_srs_wkt (p, 2, + "SPHEROID[\"Plessis 1817\",6376523,308.64,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7027\"]],AUTHORITY[\"EPSG\",\"6901\"]],PRIMEM[\"Pa"); + add_srs_wkt (p, 4, + "ris RGS\",2.337208333333333,AUTHORITY[\"EPSG\",\"8914\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"grad\",0.01570796326794897,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9105\"]],AUTHORITY[\"EPSG\",\"4901\"]],PROJECTION[\"Lamb"); + add_srs_wkt (p, 7, + "ert_Conformal_Conic_1SP\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",55],PARAMETER[\"central_meridian\",5.999999999999998"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",0.99950908],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",300000"); + add_srs_wkt (p, 11, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"27500\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 27561, "epsg", 27561, + "NTF (Paris) / Lambert Nord France"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000"); + add_proj4text (p, 1, + "001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a"); + add_proj4text (p, 2, + "=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm="); + add_proj4text (p, 3, + "paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / Lambert Nord France\",GEOGCS[\"NT"); + add_srs_wkt (p, 1, + "F (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_Par"); + add_srs_wkt (p, 2, + "is\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.466021"); + add_srs_wkt (p, 3, + "2936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,3"); + add_srs_wkt (p, 4, + "20,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris"); + add_srs_wkt (p, 5, + "\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\""); + add_srs_wkt (p, 6, + ",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHO"); + add_srs_wkt (p, 7, + "RITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_"); + add_srs_wkt (p, 8, + "Conic_1SP\"],PARAMETER[\"latitude_of_origin\",55],PARAME"); + add_srs_wkt (p, 9, + "TER[\"central_meridian\",0],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 10, + ".999877341],PARAMETER[\"false_easting\",600000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",200000],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"27561\"]]"); + p = add_epsg_def (filter, first, last, 27562, "epsg", 27562, + "NTF (Paris) / Lambert Centre France"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.999877"); + add_proj4text (p, 1, + "42 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towg"); + add_proj4text (p, 2, + "s84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / Lambert Centre France\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_P"); + add_srs_wkt (p, 2, + "aris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660"); + add_srs_wkt (p, 3, + "212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60"); + add_srs_wkt (p, 4, + ",320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Par"); + add_srs_wkt (p, 5, + "is\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"gra"); + add_srs_wkt (p, 6, + "d\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AU"); + add_srs_wkt (p, 7, + "THORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conform"); + add_srs_wkt (p, 8, + "al_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",52],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"central_meridian\",0],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 10, + ",0.99987742],PARAMETER[\"false_easting\",600000],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_northing\",200000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"27562\"]]"); + p = add_epsg_def (filter, first, last, 27563, "epsg", 27563, + "NTF (Paris) / Lambert Sud France"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000"); + add_proj4text (p, 1, + "001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a"); + add_proj4text (p, 2, + "=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm="); + add_proj4text (p, 3, + "paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / Lambert Sud France\",GEOGCS[\"NTF"); + add_srs_wkt (p, 1, + " (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_Pari"); + add_srs_wkt (p, 2, + "s\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212"); + add_srs_wkt (p, 3, + "936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,32"); + add_srs_wkt (p, 4, + "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris\""); + add_srs_wkt (p, 5, + ",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\","); + add_srs_wkt (p, 6, + "0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_C"); + add_srs_wkt (p, 8, + "onic_1SP\"],PARAMETER[\"latitude_of_origin\",49],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"central_meridian\",0],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 10, + "999877499],PARAMETER[\"false_easting\",600000],PARAMETER"); + add_srs_wkt (p, 11, + "[\"false_northing\",200000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 13, + "HORITY[\"EPSG\",\"27563\"]]"); + p = add_epsg_def (filter, first, last, 27564, "epsg", 27564, + "NTF (Paris) / Lambert Corse"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000"); + add_proj4text (p, 1, + "001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.36"); + add_proj4text (p, 2, + "9 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 "); + add_proj4text (p, 3, + "+pm=paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / Lambert Corse\",GEOGCS[\"NTF (Par"); + add_srs_wkt (p, 1, + "is)\",DATUM[\"Nouvelle_Triangulation_Francaise_Paris\",S"); + add_srs_wkt (p, 2, + "PHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.466021293626"); + add_srs_wkt (p, 3, + "5,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,320,0,0"); + add_srs_wkt (p, 4, + ",0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris\",2.3"); + add_srs_wkt (p, 5, + "3722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0.01"); + add_srs_wkt (p, 6, + "570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORITY["); + add_srs_wkt (p, 7, + "\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 8, + "_1SP\"],PARAMETER[\"latitude_of_origin\",46.85],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"central_meridian\",0],PARAMETER[\"scale_factor\",0.9"); + add_srs_wkt (p, 10, + "9994471],PARAMETER[\"false_easting\",234.358],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_northing\",185861.369],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"27564\"]]"); + p = add_epsg_def (filter, first, last, 27571, "epsg", 27571, + "NTF (Paris) / Lambert zone I"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000"); + add_proj4text (p, 1, + "001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +"); + add_proj4text (p, 2, + "a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm"); + add_proj4text (p, 3, + "=paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / Lambert zone I\",GEOGCS[\"NTF (Pa"); + add_srs_wkt (p, 1, + "ris)\",DATUM[\"Nouvelle_Triangulation_Francaise_Paris\","); + add_srs_wkt (p, 2, + "SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.46602129362"); + add_srs_wkt (p, 3, + "65,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,320,0,"); + add_srs_wkt (p, 4, + "0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris\",2."); + add_srs_wkt (p, 5, + "33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0.0"); + add_srs_wkt (p, 6, + "1570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_Coni"); + add_srs_wkt (p, 8, + "c_1SP\"],PARAMETER[\"latitude_of_origin\",55],PARAMETER["); + add_srs_wkt (p, 9, + "\"central_meridian\",0],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 10, + "877341],PARAMETER[\"false_easting\",600000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",1200000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"27571\"]]"); + p = add_epsg_def (filter, first, last, 27572, "epsg", 27572, + "NTF (Paris) / Lambert zone II"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.999877"); + add_proj4text (p, 1, + "42 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +tow"); + add_proj4text (p, 2, + "gs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / Lambert zone II\",GEOGCS[\"NTF (P"); + add_srs_wkt (p, 1, + "aris)\",DATUM[\"Nouvelle_Triangulation_Francaise_Paris\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936"); + add_srs_wkt (p, 3, + "265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,320,0"); + add_srs_wkt (p, 4, + ",0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris\",2"); + add_srs_wkt (p, 5, + ".33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0."); + add_srs_wkt (p, 6, + "01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 8, + "ic_1SP\"],PARAMETER[\"latitude_of_origin\",52],PARAMETER"); + add_srs_wkt (p, 9, + "[\"central_meridian\",0],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 10, + "987742],PARAMETER[\"false_easting\",600000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",2200000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"27572\"]]"); + p = add_epsg_def (filter, first, last, 27573, "epsg", 27573, + "NTF (Paris) / Lambert zone III"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000"); + add_proj4text (p, 1, + "001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +"); + add_proj4text (p, 2, + "a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm"); + add_proj4text (p, 3, + "=paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / Lambert zone III\",GEOGCS[\"NTF ("); + add_srs_wkt (p, 1, + "Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_Paris\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936"); + add_srs_wkt (p, 3, + "265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,320,0"); + add_srs_wkt (p, 4, + ",0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris\",2"); + add_srs_wkt (p, 5, + ".33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0."); + add_srs_wkt (p, 6, + "01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 8, + "ic_1SP\"],PARAMETER[\"latitude_of_origin\",49],PARAMETER"); + add_srs_wkt (p, 9, + "[\"central_meridian\",0],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 10, + "9877499],PARAMETER[\"false_easting\",600000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",3200000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTH"); + add_srs_wkt (p, 13, + "ORITY[\"EPSG\",\"27573\"]]"); + p = add_epsg_def (filter, first, last, 27574, "epsg", 27574, + "NTF (Paris) / Lambert zone IV"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000"); + add_proj4text (p, 1, + "001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.3"); + add_proj4text (p, 2, + "69 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0"); + add_proj4text (p, 3, + " +pm=paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / Lambert zone IV\",GEOGCS[\"NTF (P"); + add_srs_wkt (p, 1, + "aris)\",DATUM[\"Nouvelle_Triangulation_Francaise_Paris\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212936"); + add_srs_wkt (p, 3, + "265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,320,0"); + add_srs_wkt (p, 4, + ",0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris\",2"); + add_srs_wkt (p, 5, + ".33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0."); + add_srs_wkt (p, 6, + "01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORIT"); + add_srs_wkt (p, 7, + "Y[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 8, + "ic_1SP\"],PARAMETER[\"latitude_of_origin\",46.85],PARAME"); + add_srs_wkt (p, 9, + "TER[\"central_meridian\",0],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 10, + ".99994471],PARAMETER[\"false_easting\",234.358],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",4185861.369],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 13, + "TH],AUTHORITY[\"EPSG\",\"27574\"]]"); + p = add_epsg_def (filter, first, last, 27581, "epsg", 27581, + "NTF (Paris) / France I (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000"); + add_proj4text (p, 1, + "001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=1200000 +"); + add_proj4text (p, 2, + "a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm"); + add_proj4text (p, 3, + "=paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / France I (deprecated)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_P"); + add_srs_wkt (p, 2, + "aris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660"); + add_srs_wkt (p, 3, + "212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60"); + add_srs_wkt (p, 4, + ",320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Par"); + add_srs_wkt (p, 5, + "is\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"gra"); + add_srs_wkt (p, 6, + "d\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AU"); + add_srs_wkt (p, 7, + "THORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conform"); + add_srs_wkt (p, 8, + "al_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",55],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"central_meridian\",0],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 10, + ",0.999877341],PARAMETER[\"false_easting\",600000],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_northing\",1200000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 13, + "],AUTHORITY[\"EPSG\",\"27581\"]]"); + p = add_epsg_def (filter, first, last, 27582, "epsg", 27582, + "NTF (Paris) / France II (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.999877"); + add_proj4text (p, 1, + "42 +x_0=600000 +y_0=2200000 +a=6378249.2 +b=6356515 +tow"); + add_proj4text (p, 2, + "gs84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / France II (deprecated)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_P"); + add_srs_wkt (p, 2, + "aris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660"); + add_srs_wkt (p, 3, + "212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60"); + add_srs_wkt (p, 4, + ",320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Par"); + add_srs_wkt (p, 5, + "is\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"gra"); + add_srs_wkt (p, 6, + "d\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AU"); + add_srs_wkt (p, 7, + "THORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conform"); + add_srs_wkt (p, 8, + "al_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",52],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"central_meridian\",0],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 10, + ",0.99987742],PARAMETER[\"false_easting\",600000],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_northing\",2200000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"27582\"]]"); + p = add_epsg_def (filter, first, last, 27583, "epsg", 27583, + "NTF (Paris) / France III (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000"); + add_proj4text (p, 1, + "001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=3200000 +"); + add_proj4text (p, 2, + "a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm"); + add_proj4text (p, 3, + "=paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / France III (deprecated)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise"); + add_srs_wkt (p, 2, + "_Paris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.46"); + add_srs_wkt (p, 3, + "60212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-"); + add_srs_wkt (p, 4, + "60,320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"P"); + add_srs_wkt (p, 5, + "aris\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"g"); + add_srs_wkt (p, 6, + "rad\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],"); + add_srs_wkt (p, 7, + "AUTHORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 8, + "rmal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",49],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"central_meridian\",0],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 10, + "r\",0.999877499],PARAMETER[\"false_easting\",600000],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",3200000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 13, + "RTH],AUTHORITY[\"EPSG\",\"27583\"]]"); + p = add_epsg_def (filter, first, last, 27584, "epsg", 27584, + "NTF (Paris) / France IV (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000"); + add_proj4text (p, 1, + "001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=4185861.3"); + add_proj4text (p, 2, + "69 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0"); + add_proj4text (p, 3, + " +pm=paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / France IV (deprecated)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_P"); + add_srs_wkt (p, 2, + "aris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660"); + add_srs_wkt (p, 3, + "212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60"); + add_srs_wkt (p, 4, + ",320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Par"); + add_srs_wkt (p, 5, + "is\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"gra"); + add_srs_wkt (p, 6, + "d\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AU"); + add_srs_wkt (p, 7, + "THORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conform"); + add_srs_wkt (p, 8, + "al_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",46.85],"); + add_srs_wkt (p, 9, + "PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 10, + "or\",0.99994471],PARAMETER[\"false_easting\",234.358],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_northing\",4185861.369],UNIT[\"metre\",1"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 13, + "\",NORTH],AUTHORITY[\"EPSG\",\"27584\"]]"); + p = add_epsg_def (filter, first, last, 27591, "epsg", 27591, + "NTF (Paris) / Nord France (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49.50000000000001 +lat_0=49.50000000000"); + add_proj4text (p, 1, + "001 +lon_0=0 +k_0=0.999877341 +x_0=600000 +y_0=200000 +a"); + add_proj4text (p, 2, + "=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm="); + add_proj4text (p, 3, + "paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / Nord France (deprecated)\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Francais"); + add_srs_wkt (p, 2, + "e_Paris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4"); + add_srs_wkt (p, 3, + "660212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,"); + add_srs_wkt (p, 4, + "-60,320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\""); + add_srs_wkt (p, 5, + "Paris\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\""); + add_srs_wkt (p, 6, + "grad\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]]"); + add_srs_wkt (p, 7, + ",AUTHORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conf"); + add_srs_wkt (p, 8, + "ormal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",55],"); + add_srs_wkt (p, 9, + "PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 10, + "or\",0.999877341],PARAMETER[\"false_easting\",600000],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_northing\",200000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 13, + "RTH],AUTHORITY[\"EPSG\",\"27591\"]]"); + p = add_epsg_def (filter, first, last, 27592, "epsg", 27592, + "NTF (Paris) / Centre France (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.8 +lat_0=46.8 +lon_0=0 +k_0=0.999877"); + add_proj4text (p, 1, + "42 +x_0=600000 +y_0=200000 +a=6378249.2 +b=6356515 +towg"); + add_proj4text (p, 2, + "s84=-168,-60,320,0,0,0,0 +pm=paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / Centre France (deprecated)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Franca"); + add_srs_wkt (p, 2, + "ise_Paris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293"); + add_srs_wkt (p, 3, + ".4660212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-16"); + add_srs_wkt (p, 4, + "8,-60,320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM["); + add_srs_wkt (p, 5, + "\"Paris\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT["); + add_srs_wkt (p, 6, + "\"grad\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\""); + add_srs_wkt (p, 7, + "]],AUTHORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Co"); + add_srs_wkt (p, 8, + "nformal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",52"); + add_srs_wkt (p, 9, + "],PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 10, + "ctor\",0.99987742],PARAMETER[\"false_easting\",600000],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_northing\",200000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 13, + "ORTH],AUTHORITY[\"EPSG\",\"27592\"]]"); + p = add_epsg_def (filter, first, last, 27593, "epsg", 27593, + "NTF (Paris) / Sud France (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.10000000000001 +lat_0=44.10000000000"); + add_proj4text (p, 1, + "001 +lon_0=0 +k_0=0.999877499 +x_0=600000 +y_0=200000 +a"); + add_proj4text (p, 2, + "=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 +pm="); + add_proj4text (p, 3, + "paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / Sud France (deprecated)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"NTF (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise"); + add_srs_wkt (p, 2, + "_Paris\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.46"); + add_srs_wkt (p, 3, + "60212936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-"); + add_srs_wkt (p, 4, + "60,320,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"P"); + add_srs_wkt (p, 5, + "aris\",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"g"); + add_srs_wkt (p, 6, + "rad\",0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],"); + add_srs_wkt (p, 7, + "AUTHORITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 8, + "rmal_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",49],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"central_meridian\",0],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 10, + "r\",0.999877499],PARAMETER[\"false_easting\",600000],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",200000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 13, + "TH],AUTHORITY[\"EPSG\",\"27593\"]]"); + p = add_epsg_def (filter, first, last, 27594, "epsg", 27594, + "NTF (Paris) / Corse (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.16500000000001 +lat_0=42.16500000000"); + add_proj4text (p, 1, + "001 +lon_0=0 +k_0=0.99994471 +x_0=234.358 +y_0=185861.36"); + add_proj4text (p, 2, + "9 +a=6378249.2 +b=6356515 +towgs84=-168,-60,320,0,0,0,0 "); + add_proj4text (p, 3, + "+pm=paris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NTF (Paris) / Corse (deprecated)\",GEOGCS[\"NTF"); + add_srs_wkt (p, 1, + " (Paris)\",DATUM[\"Nouvelle_Triangulation_Francaise_Pari"); + add_srs_wkt (p, 2, + "s\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.4660212"); + add_srs_wkt (p, 3, + "936265,AUTHORITY[\"EPSG\",\"7011\"]],TOWGS84[-168,-60,32"); + add_srs_wkt (p, 4, + "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6807\"]],PRIMEM[\"Paris\""); + add_srs_wkt (p, 5, + ",2.33722917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\","); + add_srs_wkt (p, 6, + "0.01570796326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4807\"]],PROJECTION[\"Lambert_Conformal_C"); + add_srs_wkt (p, 8, + "onic_1SP\"],PARAMETER[\"latitude_of_origin\",46.85],PARA"); + add_srs_wkt (p, 9, + "METER[\"central_meridian\",0],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 10, + ",0.99994471],PARAMETER[\"false_easting\",234.358],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_northing\",185861.369],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 13, + "RTH],AUTHORITY[\"EPSG\",\"27594\"]]"); + p = add_epsg_def (filter, first, last, 27700, "epsg", 27700, + "OSGB 1936 / British National Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400"); + add_proj4text (p, 1, + "000 +y_0=-100000 +datum=OSGB36 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"OSGB 1936 / British National Grid\",GEOGCS[\"OS"); + add_srs_wkt (p, 1, + "GB 1936\",DATUM[\"OSGB_1936\",SPHEROID[\"Airy 1830\",637"); + add_srs_wkt (p, 2, + "7563.396,299.3249646,AUTHORITY[\"EPSG\",\"7001\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[446.448,-125.157,542.06,0.15,0.247,0.842,-20.489],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6277\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "77\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",49],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "2],PARAMETER[\"scale_factor\",0.9996012717],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",400000],PARAMETER[\"false_northing\",-10"); + add_srs_wkt (p, 11, + "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); + add_srs_wkt (p, 12, + "S[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"27700\"]]"); + p = add_epsg_def (filter, first, last, 28191, "epsg", 28191, + "Palestine 1923 / Palestine Grid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=31.73409694444445 +lon_0=35.2120805555"); + add_proj4text (p, 1, + "5556 +x_0=170251.555 +y_0=126867.909 +a=6378300.789 +b=6"); + add_proj4text (p, 2, + "356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4.4"); + add_proj4text (p, 3, + "2,-11.821,1 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Palestine 1923 / Palestine Grid\",GEOGCS[\"Pale"); + add_srs_wkt (p, 1, + "stine 1923\",DATUM[\"Palestine_1923\",SPHEROID[\"Clarke "); + add_srs_wkt (p, 2, + "1880 (Benoit)\",6378300.789,293.4663155389802,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7010\"]],TOWGS84[-275.722,94.7824,340.894,-8."); + add_srs_wkt (p, 4, + "001,-4.42,-11.821,1],AUTHORITY[\"EPSG\",\"6281\"]],PRIME"); + add_srs_wkt (p, 5, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 6, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 7, + ",AUTHORITY[\"EPSG\",\"4281\"]],PROJECTION[\"Cassini_Sold"); + add_srs_wkt (p, 8, + "ner\"],PARAMETER[\"latitude_of_origin\",31.7340969444444"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"central_meridian\",35.21208055555556],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_easting\",170251.555],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",126867.909],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 13, + "TH],AUTHORITY[\"EPSG\",\"28191\"]]"); + p = add_epsg_def (filter, first, last, 28192, "epsg", 28192, + "Palestine 1923 / Palestine Belt"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31.73409694444445 +lon_0=35.212080555"); + add_proj4text (p, 1, + "55556 +k=1 +x_0=170251.555 +y_0=1126867.909 +a=6378300.7"); + add_proj4text (p, 2, + "89 +b=6356566.435 +towgs84=-275.722,94.7824,340.894,-8.0"); + add_proj4text (p, 3, + "01,-4.42,-11.821,1 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Palestine 1923 / Palestine Belt\",GEOGCS[\"Pale"); + add_srs_wkt (p, 1, + "stine 1923\",DATUM[\"Palestine_1923\",SPHEROID[\"Clarke "); + add_srs_wkt (p, 2, + "1880 (Benoit)\",6378300.789,293.4663155389802,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7010\"]],TOWGS84[-275.722,94.7824,340.894,-8."); + add_srs_wkt (p, 4, + "001,-4.42,-11.821,1],AUTHORITY[\"EPSG\",\"6281\"]],PRIME"); + add_srs_wkt (p, 5, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 6, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 7, + ",AUTHORITY[\"EPSG\",\"4281\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 8, + "ercator\"],PARAMETER[\"latitude_of_origin\",31.734096944"); + add_srs_wkt (p, 9, + "44445],PARAMETER[\"central_meridian\",35.21208055555556]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting"); + add_srs_wkt (p, 11, + "\",170251.555],PARAMETER[\"false_northing\",1126867.909]"); + add_srs_wkt (p, 12, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"E"); + add_srs_wkt (p, 13, + "asting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 14, + "\",\"28192\"]]"); + p = add_epsg_def (filter, first, last, 28193, "epsg", 28193, + "Palestine 1923 / Israeli CS Grid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=31.73409694444445 +lon_0=35.2120805555"); + add_proj4text (p, 1, + "5556 +x_0=170251.555 +y_0=1126867.909 +a=6378300.789 +b="); + add_proj4text (p, 2, + "6356566.435 +towgs84=-275.722,94.7824,340.894,-8.001,-4."); + add_proj4text (p, 3, + "42,-11.821,1 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Palestine 1923 / Israeli CS Grid\",GEOGCS[\"Pal"); + add_srs_wkt (p, 1, + "estine 1923\",DATUM[\"Palestine_1923\",SPHEROID[\"Clarke"); + add_srs_wkt (p, 2, + " 1880 (Benoit)\",6378300.789,293.4663155389802,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7010\"]],TOWGS84[-275.722,94.7824,340.894,-8"); + add_srs_wkt (p, 4, + ".001,-4.42,-11.821,1],AUTHORITY[\"EPSG\",\"6281\"]],PRIM"); + add_srs_wkt (p, 5, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 6, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 7, + "],AUTHORITY[\"EPSG\",\"4281\"]],PROJECTION[\"Cassini_Sol"); + add_srs_wkt (p, 8, + "dner\"],PARAMETER[\"latitude_of_origin\",31.734096944444"); + add_srs_wkt (p, 9, + "45],PARAMETER[\"central_meridian\",35.21208055555556],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",170251.555],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",1126867.909],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); + add_srs_wkt (p, 13, + "NORTH],AUTHORITY[\"EPSG\",\"28193\"]]"); + p = add_epsg_def (filter, first, last, 28232, "epsg", 28232, + "Pointe Noire / UTM zone 32S"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +south +a=6378249.2 +b=6356515 +towgs"); + add_proj4text (p, 1, + "84=-148,51,-291,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pointe Noire / UTM zone 32S\",GEOGCS[\"Pointe N"); + add_srs_wkt (p, 1, + "oire\",DATUM[\"Congo_1960_Pointe_Noire\",SPHEROID[\"Clar"); + add_srs_wkt (p, 2, + "ke 1880 (IGN)\",6378249.2,293.4660212936265,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7011\"]],TOWGS84[-148,51,-291,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"6282\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4282\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",9],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",0.9996],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",500000],PARAMETER[\"false_northing\",10000000],UNIT[\"m"); + add_srs_wkt (p, 11, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\","); + add_srs_wkt (p, 12, + "EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"2823"); + add_srs_wkt (p, 13, + "2\"]]"); + p = add_epsg_def (filter, first, last, 28348, "epsg", 28348, + "GDA94 / MGA zone 48"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 48\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",105],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"28348\"]]"); + p = add_epsg_def (filter, first, last, 28349, "epsg", 28349, + "GDA94 / MGA zone 49"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 49\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",111],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"28349\"]]"); + p = add_epsg_def (filter, first, last, 28350, "epsg", 28350, + "GDA94 / MGA zone 50"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 50\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",117],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"28350\"]]"); + p = add_epsg_def (filter, first, last, 28351, "epsg", 28351, + "GDA94 / MGA zone 51"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 51\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",123],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"28351\"]]"); + p = add_epsg_def (filter, first, last, 28352, "epsg", 28352, + "GDA94 / MGA zone 52"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 52\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",129],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"28352\"]]"); + p = add_epsg_def (filter, first, last, 28353, "epsg", 28353, + "GDA94 / MGA zone 53"); + add_proj4text (p, 0, + "+proj=utm +zone=53 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 53\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",135],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"28353\"]]"); + p = add_epsg_def (filter, first, last, 28354, "epsg", 28354, + "GDA94 / MGA zone 54"); + add_proj4text (p, 0, + "+proj=utm +zone=54 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 54\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",141],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"28354\"]]"); + p = add_epsg_def (filter, first, last, 28355, "epsg", 28355, + "GDA94 / MGA zone 55"); + add_proj4text (p, 0, + "+proj=utm +zone=55 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 55\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",147],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"28355\"]]"); + p = add_epsg_def (filter, first, last, 28356, "epsg", 28356, + "GDA94 / MGA zone 56"); + add_proj4text (p, 0, + "+proj=utm +zone=56 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 56\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",153],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"28356\"]]"); + p = add_epsg_def (filter, first, last, 28357, "epsg", 28357, + "GDA94 / MGA zone 57"); + add_proj4text (p, 0, + "+proj=utm +zone=57 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 57\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",159],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"28357\"]]"); + p = add_epsg_def (filter, first, last, 28358, "epsg", 28358, + "GDA94 / MGA zone 58"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"GDA94 / MGA zone 58\",GEOGCS[\"GDA94\",DATUM[\""); + add_srs_wkt (p, 1, + "Geocentric_Datum_of_Australia_1994\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6283\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4283\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",165],PARAMETER[\"scale_factor\",0"); + add_srs_wkt (p, 9, + ".9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"28358\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_39.c b/src/spatialite/src/srsinit/epsg_inlined_39.c new file mode 100644 index 0000000..ee0c11c --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_39.c @@ -0,0 +1,3442 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_39 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 28402, "epsg", 28402, + "Pulkovo 1942 / Gauss-Kruger zone 2 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=2500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 2 (deprecated)"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.1"); + add_srs_wkt (p, 4, + "2],AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 6, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",2500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"28402\"]]"); + p = add_epsg_def (filter, first, last, 28403, "epsg", 28403, + "Pulkovo 1942 / Gauss-Kruger zone 3 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=3500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 3 (deprecated)"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.1"); + add_srs_wkt (p, 4, + "2],AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 5, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 6, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",15],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_e"); + add_srs_wkt (p, 10, + "asting\",3500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 12, + "\",\"28403\"]]"); + p = add_epsg_def (filter, first, last, 28404, "epsg", 28404, + "Pulkovo 1942 / Gauss-Kruger zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 4\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",21],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",450"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"28404\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 28405, "epsg", 28405, + "Pulkovo 1942 / Gauss-Kruger zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 5\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",27],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",550"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"28405\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 28406, "epsg", 28406, + "Pulkovo 1942 / Gauss-Kruger zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=6500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 6\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",33],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",650"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"28406\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 28407, "epsg", 28407, + "Pulkovo 1942 / Gauss-Kruger zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=7500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 7\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",39],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",750"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"28407\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 28408, "epsg", 28408, + "Pulkovo 1942 / Gauss-Kruger zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=8500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 8\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",45],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",850"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"28408\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 28409, "epsg", 28409, + "Pulkovo 1942 / Gauss-Kruger zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=9500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 9\",GEOGCS[\"P"); + add_srs_wkt (p, 1, + "ulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassows"); + add_srs_wkt (p, 2, + "ky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",51],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"scale_factor\",1],PARAMETER[\"false_easting\",950"); + add_srs_wkt (p, 10, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"28409\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 28410, "epsg", 28410, + "Pulkovo 1942 / Gauss-Kruger zone 10"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=10500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 10\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",57],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",10"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2841"); + add_srs_wkt (p, 12, + "0\"]]"); + p = add_epsg_def (filter, first, last, 28411, "epsg", 28411, + "Pulkovo 1942 / Gauss-Kruger zone 11"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=11500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 11\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",63],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",11"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2841"); + add_srs_wkt (p, 12, + "1\"]]"); + p = add_epsg_def (filter, first, last, 28412, "epsg", 28412, + "Pulkovo 1942 / Gauss-Kruger zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=12500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 12\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",69],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",12"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2841"); + add_srs_wkt (p, 12, + "2\"]]"); + p = add_epsg_def (filter, first, last, 28413, "epsg", 28413, + "Pulkovo 1942 / Gauss-Kruger zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=13500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 13\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",75],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",13"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2841"); + add_srs_wkt (p, 12, + "3\"]]"); + p = add_epsg_def (filter, first, last, 28414, "epsg", 28414, + "Pulkovo 1942 / Gauss-Kruger zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=14500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 14\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",81],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",14"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2841"); + add_srs_wkt (p, 12, + "4\"]]"); + p = add_epsg_def (filter, first, last, 28415, "epsg", 28415, + "Pulkovo 1942 / Gauss-Kruger zone 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=15500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 15\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",87],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",15"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2841"); + add_srs_wkt (p, 12, + "5\"]]"); + p = add_epsg_def (filter, first, last, 28416, "epsg", 28416, + "Pulkovo 1942 / Gauss-Kruger zone 16"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=16500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 16\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",93],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",16"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2841"); + add_srs_wkt (p, 12, + "6\"]]"); + p = add_epsg_def (filter, first, last, 28417, "epsg", 28417, + "Pulkovo 1942 / Gauss-Kruger zone 17"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=17500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 17\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",99],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",1],PARAMETER[\"false_easting\",17"); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2841"); + add_srs_wkt (p, 12, + "7\"]]"); + p = add_epsg_def (filter, first, last, 28418, "epsg", 28418, + "Pulkovo 1942 / Gauss-Kruger zone 18"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=18500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 18\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",105],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",1"); + add_srs_wkt (p, 10, + "8500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"284"); + add_srs_wkt (p, 12, + "18\"]]"); + p = add_epsg_def (filter, first, last, 28419, "epsg", 28419, + "Pulkovo 1942 / Gauss-Kruger zone 19"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=19500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 19\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",111],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",1"); + add_srs_wkt (p, 10, + "9500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"284"); + add_srs_wkt (p, 12, + "19\"]]"); + p = add_epsg_def (filter, first, last, 28420, "epsg", 28420, + "Pulkovo 1942 / Gauss-Kruger zone 20"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=20500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 20\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",117],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); + add_srs_wkt (p, 10, + "0500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"284"); + add_srs_wkt (p, 12, + "20\"]]"); + p = add_epsg_def (filter, first, last, 28421, "epsg", 28421, + "Pulkovo 1942 / Gauss-Kruger zone 21"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=21500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 21\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",123],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); + add_srs_wkt (p, 10, + "1500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"284"); + add_srs_wkt (p, 12, + "21\"]]"); + p = add_epsg_def (filter, first, last, 28422, "epsg", 28422, + "Pulkovo 1942 / Gauss-Kruger zone 22"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=22500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 22\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",129],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); + add_srs_wkt (p, 10, + "2500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"284"); + add_srs_wkt (p, 12, + "22\"]]"); + p = add_epsg_def (filter, first, last, 28423, "epsg", 28423, + "Pulkovo 1942 / Gauss-Kruger zone 23"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=23500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 23\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",135],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); + add_srs_wkt (p, 10, + "3500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"284"); + add_srs_wkt (p, 12, + "23\"]]"); + p = add_epsg_def (filter, first, last, 28424, "epsg", 28424, + "Pulkovo 1942 / Gauss-Kruger zone 24"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=24500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 24\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",141],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); + add_srs_wkt (p, 10, + "4500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"284"); + add_srs_wkt (p, 12, + "24\"]]"); + p = add_epsg_def (filter, first, last, 28425, "epsg", 28425, + "Pulkovo 1942 / Gauss-Kruger zone 25"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=25500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 25\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",147],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); + add_srs_wkt (p, 10, + "5500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"284"); + add_srs_wkt (p, 12, + "25\"]]"); + p = add_epsg_def (filter, first, last, 28426, "epsg", 28426, + "Pulkovo 1942 / Gauss-Kruger zone 26"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=26500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 26\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",153],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); + add_srs_wkt (p, 10, + "6500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"284"); + add_srs_wkt (p, 12, + "26\"]]"); + p = add_epsg_def (filter, first, last, 28427, "epsg", 28427, + "Pulkovo 1942 / Gauss-Kruger zone 27"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=27500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 27\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",159],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); + add_srs_wkt (p, 10, + "7500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"284"); + add_srs_wkt (p, 12, + "27\"]]"); + p = add_epsg_def (filter, first, last, 28428, "epsg", 28428, + "Pulkovo 1942 / Gauss-Kruger zone 28"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=28500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 28\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",165],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); + add_srs_wkt (p, 10, + "8500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"284"); + add_srs_wkt (p, 12, + "28\"]]"); + p = add_epsg_def (filter, first, last, 28429, "epsg", 28429, + "Pulkovo 1942 / Gauss-Kruger zone 29"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=29500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 29\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",171],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",2"); + add_srs_wkt (p, 10, + "9500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"284"); + add_srs_wkt (p, 12, + "29\"]]"); + p = add_epsg_def (filter, first, last, 28430, "epsg", 28430, + "Pulkovo 1942 / Gauss-Kruger zone 30"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=30500000 +y_0="); + add_proj4text (p, 1, + "0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82"); + add_proj4text (p, 2, + ",-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 30\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",177],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",3"); + add_srs_wkt (p, 10, + "0500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"284"); + add_srs_wkt (p, 12, + "30\"]]"); + p = add_epsg_def (filter, first, last, 28431, "epsg", 28431, + "Pulkovo 1942 / Gauss-Kruger zone 31"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=31500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.8"); + add_proj4text (p, 2, + "2,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 31\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",-177],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "31500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"28"); + add_srs_wkt (p, 12, + "431\"]]"); + p = add_epsg_def (filter, first, last, 28432, "epsg", 28432, + "Pulkovo 1942 / Gauss-Kruger zone 32"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=32500000 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.8"); + add_proj4text (p, 2, + "2,-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger zone 32\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\"Krassow"); + add_srs_wkt (p, 2, + "sky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7024\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4284\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",0],PARAMETER[\"central_meridian\",-171],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "32500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"28"); + add_srs_wkt (p, 12, + "432\"]]"); + p = add_epsg_def (filter, first, last, 28462, "epsg", 28462, + "Pulkovo 1942 / Gauss-Kruger 2N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=500000 +y_0=0 +e"); + add_proj4text (p, 1, + "llps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0."); + add_proj4text (p, 2, + "12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 2N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 11, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28462\"]]"); + p = add_epsg_def (filter, first, last, 28463, "epsg", 28463, + "Pulkovo 1942 / Gauss-Kruger 3N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 3N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28463\"]]"); + p = add_epsg_def (filter, first, last, 28464, "epsg", 28464, + "Pulkovo 1942 / Gauss-Kruger 4N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 4N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28464\"]]"); + p = add_epsg_def (filter, first, last, 28465, "epsg", 28465, + "Pulkovo 1942 / Gauss-Kruger 5N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=27 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 5N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28465\"]]"); + p = add_epsg_def (filter, first, last, 28466, "epsg", 28466, + "Pulkovo 1942 / Gauss-Kruger 6N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=33 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 6N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28466\"]]"); + p = add_epsg_def (filter, first, last, 28467, "epsg", 28467, + "Pulkovo 1942 / Gauss-Kruger 7N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=39 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 7N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28467\"]]"); + p = add_epsg_def (filter, first, last, 28468, "epsg", 28468, + "Pulkovo 1942 / Gauss-Kruger 8N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=45 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 8N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",4"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28468\"]]"); + p = add_epsg_def (filter, first, last, 28469, "epsg", 28469, + "Pulkovo 1942 / Gauss-Kruger 9N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=51 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 9N (deprecated)\",G"); + add_srs_wkt (p, 1, + "EOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "4\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28469\"]]"); + p = add_epsg_def (filter, first, last, 28470, "epsg", 28470, + "Pulkovo 1942 / Gauss-Kruger 10N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=57 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 10N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",5"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28470\"]]"); + p = add_epsg_def (filter, first, last, 28471, "epsg", 28471, + "Pulkovo 1942 / Gauss-Kruger 11N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=63 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 11N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28471\"]]"); + p = add_epsg_def (filter, first, last, 28472, "epsg", 28472, + "Pulkovo 1942 / Gauss-Kruger 12N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=69 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 12N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",6"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28472\"]]"); + p = add_epsg_def (filter, first, last, 28473, "epsg", 28473, + "Pulkovo 1942 / Gauss-Kruger 13N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=75 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 13N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",7"); + add_srs_wkt (p, 9, + "5],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28473\"]]"); + p = add_epsg_def (filter, first, last, 28474, "epsg", 28474, + "Pulkovo 1942 / Gauss-Kruger 14N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=81 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 14N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); + add_srs_wkt (p, 9, + "1],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28474\"]]"); + p = add_epsg_def (filter, first, last, 28475, "epsg", 28475, + "Pulkovo 1942 / Gauss-Kruger 15N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=87 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 15N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",8"); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28475\"]]"); + p = add_epsg_def (filter, first, last, 28476, "epsg", 28476, + "Pulkovo 1942 / Gauss-Kruger 16N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=93 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 16N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28476\"]]"); + p = add_epsg_def (filter, first, last, 28477, "epsg", 28477, + "Pulkovo 1942 / Gauss-Kruger 17N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=99 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-0"); + add_proj4text (p, 2, + ".12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 17N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",9"); + add_srs_wkt (p, 9, + "9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easti"); + add_srs_wkt (p, 10, + "ng\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "28477\"]]"); + p = add_epsg_def (filter, first, last, 28478, "epsg", 28478, + "Pulkovo 1942 / Gauss-Kruger 18N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=105 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 18N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "05],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"28478\"]]"); + p = add_epsg_def (filter, first, last, 28479, "epsg", 28479, + "Pulkovo 1942 / Gauss-Kruger 19N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=111 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 19N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "11],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"28479\"]]"); + p = add_epsg_def (filter, first, last, 28480, "epsg", 28480, + "Pulkovo 1942 / Gauss-Kruger 20N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=117 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 20N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "17],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"28480\"]]"); + p = add_epsg_def (filter, first, last, 28481, "epsg", 28481, + "Pulkovo 1942 / Gauss-Kruger 21N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=123 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 21N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "23],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"28481\"]]"); + p = add_epsg_def (filter, first, last, 28482, "epsg", 28482, + "Pulkovo 1942 / Gauss-Kruger 22N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=129 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 22N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "29],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"28482\"]]"); + p = add_epsg_def (filter, first, last, 28483, "epsg", 28483, + "Pulkovo 1942 / Gauss-Kruger 23N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=135 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 23N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "35],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"28483\"]]"); + p = add_epsg_def (filter, first, last, 28484, "epsg", 28484, + "Pulkovo 1942 / Gauss-Kruger 24N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=141 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 24N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "41],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"28484\"]]"); + p = add_epsg_def (filter, first, last, 28485, "epsg", 28485, + "Pulkovo 1942 / Gauss-Kruger 25N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=147 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 25N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "47],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"28485\"]]"); + p = add_epsg_def (filter, first, last, 28486, "epsg", 28486, + "Pulkovo 1942 / Gauss-Kruger 26N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=153 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 26N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "53],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"28486\"]]"); + p = add_epsg_def (filter, first, last, 28487, "epsg", 28487, + "Pulkovo 1942 / Gauss-Kruger 27N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=159 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 27N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "59],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"28487\"]]"); + p = add_epsg_def (filter, first, last, 28488, "epsg", 28488, + "Pulkovo 1942 / Gauss-Kruger 28N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=165 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 28N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "65],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"28488\"]]"); + p = add_epsg_def (filter, first, last, 28489, "epsg", 28489, + "Pulkovo 1942 / Gauss-Kruger 29N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=171 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 29N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "71],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"28489\"]]"); + p = add_epsg_def (filter, first, last, 28490, "epsg", 28490, + "Pulkovo 1942 / Gauss-Kruger 30N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=177 +k=1 +x_0=500000 +y_0=0 "); + add_proj4text (p, 1, + "+ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,-"); + add_proj4text (p, 2, + "0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 30N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "77],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",500000],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"28490\"]]"); + p = add_epsg_def (filter, first, last, 28491, "epsg", 28491, + "Pulkovo 1942 / Gauss-Kruger 31N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-177 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 31N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "177],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"28491\"]]"); + p = add_epsg_def (filter, first, last, 28492, "epsg", 28492, + "Pulkovo 1942 / Gauss-Kruger 32N (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-171 +k=1 +x_0=500000 +y_0=0"); + add_proj4text (p, 1, + " +ellps=krass +towgs84=23.92,-141.27,-80.9,-0,0.35,0.82,"); + add_proj4text (p, 2, + "-0.12 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Pulkovo 1942 / Gauss-Kruger 32N (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Pulkovo 1942\",DATUM[\"Pulkovo_1942\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Krassowsky 1940\",6378245,298.3,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "024\"]],TOWGS84[23.92,-141.27,-80.9,-0,0.35,0.82,-0.12],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6284\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4284\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 9, + "171],PARAMETER[\"scale_factor\",1],PARAMETER[\"false_eas"); + add_srs_wkt (p, 10, + "ting\",500000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 11, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"28492\"]]"); + p = add_epsg_def (filter, first, last, 28600, "epsg", 28600, + "Qatar 1974 / Qatar National Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=24.45 +lon_0=51.21666666666667 +k=0.9"); + add_proj4text (p, 1, + "9999 +x_0=200000 +y_0=300000 +ellps=intl +towgs84=-128.1"); + add_proj4text (p, 2, + "6,-282.42,21.93,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Qatar 1974 / Qatar National Grid\",GEOGCS[\"Qat"); + add_srs_wkt (p, 1, + "ar 1974\",DATUM[\"Qatar_1974\",SPHEROID[\"International "); + add_srs_wkt (p, 2, + "1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-128.16,-282.42,21.93,0,0,0,0],AUTHORITY[\"EPSG\",\"628"); + add_srs_wkt (p, 4, + "5\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4285\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",2"); + add_srs_wkt (p, 8, + "4.45],PARAMETER[\"central_meridian\",51.21666666666667],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",0.99999],PARAMETER[\"false_ea"); + add_srs_wkt (p, 10, + "sting\",200000],PARAMETER[\"false_northing\",300000],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "28600\"]]"); + p = add_epsg_def (filter, first, last, 28991, "epsg", 28991, + "Amersfoort / RD Old"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.387638888"); + add_proj4text (p, 1, + "88889 +k=0.9999079 +x_0=0 +y_0=0 +ellps=bessel +towgs84="); + add_proj4text (p, 2, + "565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.072"); + add_proj4text (p, 3, + "5 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Amersfoort / RD Old\",GEOGCS[\"Amersfoort\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Amersfoort\",SPHEROID[\"Bessel 1841\",6377397.155,2"); + add_srs_wkt (p, 2, + "99.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[565.417"); + add_srs_wkt (p, 3, + ",50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6289\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"428"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",52.15616055555555],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",5.38763888888889],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 10, + "r\",0.9999079],PARAMETER[\"false_easting\",0],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 12, + ",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 13, + "[\"EPSG\",\"28991\"]]"); + p = add_epsg_def (filter, first, last, 28992, "epsg", 28992, + "Amersfoort / RD New"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=52.15616055555555 +lon_0=5.387638888"); + add_proj4text (p, 1, + "88889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel"); + add_proj4text (p, 2, + " +towgs84=565.417,50.3319,465.552,-0.398957,0.343988,-1."); + add_proj4text (p, 3, + "8774,4.0725 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Amersfoort / RD New\",GEOGCS[\"Amersfoort\",DAT"); + add_srs_wkt (p, 1, + "UM[\"Amersfoort\",SPHEROID[\"Bessel 1841\",6377397.155,2"); + add_srs_wkt (p, 2, + "99.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[565.417"); + add_srs_wkt (p, 3, + ",50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725],AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"6289\"]],PRIMEM[\"Greenwich\",0,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519943"); + add_srs_wkt (p, 6, + "3,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"428"); + add_srs_wkt (p, 7, + "9\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",52.15616055555555],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",5.38763888888889],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 10, + "r\",0.9999079],PARAMETER[\"false_easting\",155000],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_northing\",463000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 12, + "TY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH"); + add_srs_wkt (p, 13, + "],AUTHORITY[\"EPSG\",\"28992\"]]"); + p = add_epsg_def (filter, first, last, 29100, "epsg", 29100, + "SAD69 / Brazil Polyconic (deprecated)"); + add_proj4text (p, 0, + "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=1000000"); + add_proj4text (p, 1, + "0 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0,0 +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / Brazil Polyconic (deprecated)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"SAD69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\""); + add_srs_wkt (p, 2, + "GRS 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "36\"]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "291\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Polyconic\"],PARAMETER[\"latitude_of_origin\",0],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",-54],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 9, + ",5000000],PARAMETER[\"false_northing\",10000000],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 11, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"29100\"]]"); + p = add_epsg_def (filter, first, last, 29101, "epsg", 29101, + "SAD69 / Brazil Polyconic"); + add_proj4text (p, 0, + "+proj=poly +lat_0=0 +lon_0=-54 +x_0=5000000 +y_0=1000000"); + add_proj4text (p, 1, + "0 +ellps=aust_SA +towgs84=-57,1,-41,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / Brazil Polyconic\",GEOGCS[\"SAD69\",DAT"); + add_srs_wkt (p, 1, + "UM[\"South_American_Datum_1969\",SPHEROID[\"GRS 1967 Mod"); + add_srs_wkt (p, 2, + "ified\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PR"); + add_srs_wkt (p, 4, + "IMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT["); + add_srs_wkt (p, 5, + "\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\""); + add_srs_wkt (p, 6, + "]],AUTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Polyconic\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-54],PARAMETER[\"false_easting\",5000000],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_northing\",10000000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 10, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"29101\"]]"); + p = add_epsg_def (filter, first, last, 29118, "epsg", 29118, + "SAD69 / UTM zone 18N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0"); + add_proj4text (p, 1, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 18N (deprecated)\",GEOGCS[\"SA"); + add_srs_wkt (p, 1, + "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-75],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"29118\"]]"); + p = add_epsg_def (filter, first, last, 29119, "epsg", 29119, + "SAD69 / UTM zone 19N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0"); + add_proj4text (p, 1, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 19N (deprecated)\",GEOGCS[\"SA"); + add_srs_wkt (p, 1, + "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"29119\"]]"); + p = add_epsg_def (filter, first, last, 29120, "epsg", 29120, + "SAD69 / UTM zone 20N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0"); + add_proj4text (p, 1, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 20N (deprecated)\",GEOGCS[\"SA"); + add_srs_wkt (p, 1, + "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"29120\"]]"); + p = add_epsg_def (filter, first, last, 29121, "epsg", 29121, + "SAD69 / UTM zone 21N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0"); + add_proj4text (p, 1, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 21N (deprecated)\",GEOGCS[\"SA"); + add_srs_wkt (p, 1, + "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"29121\"]]"); + p = add_epsg_def (filter, first, last, 29122, "epsg", 29122, + "SAD69 / UTM zone 22N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +ellps=GRS67 +towgs84=-57,1,-41,0,0,0"); + add_proj4text (p, 1, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 22N (deprecated)\",GEOGCS[\"SA"); + add_srs_wkt (p, 1, + "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-51],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"29122\"]]"); + p = add_epsg_def (filter, first, last, 29168, "epsg", 29168, + "SAD69 / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=aust_SA +towgs84=-57,1,-41,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 18N\",GEOGCS[\"SAD69\",DATUM[\""); + add_srs_wkt (p, 1, + "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); + add_srs_wkt (p, 2, + "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-75],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"29168\"]]"); + p = add_epsg_def (filter, first, last, 29169, "epsg", 29169, + "SAD69 / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=aust_SA +towgs84=-57,1,-41,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 19N\",GEOGCS[\"SAD69\",DATUM[\""); + add_srs_wkt (p, 1, + "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); + add_srs_wkt (p, 2, + "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-69],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"29169\"]]"); + p = add_epsg_def (filter, first, last, 29170, "epsg", 29170, + "SAD69 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=aust_SA +towgs84=-57,1,-41,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 20N\",GEOGCS[\"SAD69\",DATUM[\""); + add_srs_wkt (p, 1, + "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); + add_srs_wkt (p, 2, + "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-63],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"29170\"]]"); + p = add_epsg_def (filter, first, last, 29171, "epsg", 29171, + "SAD69 / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=aust_SA +towgs84=-57,1,-41,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 21N\",GEOGCS[\"SAD69\",DATUM[\""); + add_srs_wkt (p, 1, + "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); + add_srs_wkt (p, 2, + "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-57],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"29171\"]]"); + p = add_epsg_def (filter, first, last, 29172, "epsg", 29172, + "SAD69 / UTM zone 22N"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +ellps=aust_SA +towgs84=-57,1,-41,0,0"); + add_proj4text (p, 1, + ",0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 22N\",GEOGCS[\"SAD69\",DATUM[\""); + add_srs_wkt (p, 1, + "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); + add_srs_wkt (p, 2, + "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-51],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"29172\"]]"); + p = add_epsg_def (filter, first, last, 29177, "epsg", 29177, + "SAD69 / UTM zone 17S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +south +ellps=GRS67 +towgs84=-57,1,-4"); + add_proj4text (p, 1, + "1,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 17S (deprecated)\",GEOGCS[\"SA"); + add_srs_wkt (p, 1, + "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-81],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29177\"]]"); + p = add_epsg_def (filter, first, last, 29178, "epsg", 29178, + "SAD69 / UTM zone 18S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +south +ellps=GRS67 +towgs84=-57,1,-4"); + add_proj4text (p, 1, + "1,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 18S (deprecated)\",GEOGCS[\"SA"); + add_srs_wkt (p, 1, + "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-75],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29178\"]]"); + p = add_epsg_def (filter, first, last, 29179, "epsg", 29179, + "SAD69 / UTM zone 19S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +south +ellps=GRS67 +towgs84=-57,1,-4"); + add_proj4text (p, 1, + "1,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 19S (deprecated)\",GEOGCS[\"SA"); + add_srs_wkt (p, 1, + "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29179\"]]"); + p = add_epsg_def (filter, first, last, 29180, "epsg", 29180, + "SAD69 / UTM zone 20S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +south +ellps=GRS67 +towgs84=-57,1,-4"); + add_proj4text (p, 1, + "1,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 20S (deprecated)\",GEOGCS[\"SA"); + add_srs_wkt (p, 1, + "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29180\"]]"); + p = add_epsg_def (filter, first, last, 29181, "epsg", 29181, + "SAD69 / UTM zone 21S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +south +ellps=GRS67 +towgs84=-57,1,-4"); + add_proj4text (p, 1, + "1,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 21S (deprecated)\",GEOGCS[\"SA"); + add_srs_wkt (p, 1, + "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29181\"]]"); + p = add_epsg_def (filter, first, last, 29182, "epsg", 29182, + "SAD69 / UTM zone 22S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +south +ellps=GRS67 +towgs84=-57,1,-4"); + add_proj4text (p, 1, + "1,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 22S (deprecated)\",GEOGCS[\"SA"); + add_srs_wkt (p, 1, + "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-51],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29182\"]]"); + p = add_epsg_def (filter, first, last, 29183, "epsg", 29183, + "SAD69 / UTM zone 23S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +south +ellps=GRS67 +towgs84=-57,1,-4"); + add_proj4text (p, 1, + "1,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 23S (deprecated)\",GEOGCS[\"SA"); + add_srs_wkt (p, 1, + "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-45],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29183\"]]"); + p = add_epsg_def (filter, first, last, 29184, "epsg", 29184, + "SAD69 / UTM zone 24S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +south +ellps=GRS67 +towgs84=-57,1,-4"); + add_proj4text (p, 1, + "1,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 24S (deprecated)\",GEOGCS[\"SA"); + add_srs_wkt (p, 1, + "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-39],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29184\"]]"); + p = add_epsg_def (filter, first, last, 29185, "epsg", 29185, + "SAD69 / UTM zone 25S (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +south +ellps=GRS67 +towgs84=-57,1,-4"); + add_proj4text (p, 1, + "1,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 25S (deprecated)\",GEOGCS[\"SA"); + add_srs_wkt (p, 1, + "D69\",DATUM[\"South_American_Datum_1969\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1967\",6378160,298.247167427,AUTHORITY[\"EPSG\",\"7036\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6291\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9108\"]],AUTHORITY[\"EPSG\",\"4291\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 8, + "ARAMETER[\"central_meridian\",-33],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"29185\"]]"); + p = add_epsg_def (filter, first, last, 29187, "epsg", 29187, + "SAD69 / UTM zone 17S"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +south +ellps=aust_SA +towgs84=-57,1,"); + add_proj4text (p, 1, + "-41,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 17S\",GEOGCS[\"SAD69\",DATUM[\""); + add_srs_wkt (p, 1, + "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); + add_srs_wkt (p, 2, + "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-81],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"29187\"]]"); + p = add_epsg_def (filter, first, last, 29188, "epsg", 29188, + "SAD69 / UTM zone 18S"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +south +ellps=aust_SA +towgs84=-57,1,"); + add_proj4text (p, 1, + "-41,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 18S\",GEOGCS[\"SAD69\",DATUM[\""); + add_srs_wkt (p, 1, + "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); + add_srs_wkt (p, 2, + "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-75],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"29188\"]]"); + p = add_epsg_def (filter, first, last, 29189, "epsg", 29189, + "SAD69 / UTM zone 19S"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +south +ellps=aust_SA +towgs84=-57,1,"); + add_proj4text (p, 1, + "-41,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 19S\",GEOGCS[\"SAD69\",DATUM[\""); + add_srs_wkt (p, 1, + "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); + add_srs_wkt (p, 2, + "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-69],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"29189\"]]"); + p = add_epsg_def (filter, first, last, 29190, "epsg", 29190, + "SAD69 / UTM zone 20S"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +south +ellps=aust_SA +towgs84=-57,1,"); + add_proj4text (p, 1, + "-41,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 20S\",GEOGCS[\"SAD69\",DATUM[\""); + add_srs_wkt (p, 1, + "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); + add_srs_wkt (p, 2, + "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-63],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"29190\"]]"); + p = add_epsg_def (filter, first, last, 29191, "epsg", 29191, + "SAD69 / UTM zone 21S"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +south +ellps=aust_SA +towgs84=-57,1,"); + add_proj4text (p, 1, + "-41,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 21S\",GEOGCS[\"SAD69\",DATUM[\""); + add_srs_wkt (p, 1, + "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); + add_srs_wkt (p, 2, + "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-57],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"29191\"]]"); + p = add_epsg_def (filter, first, last, 29192, "epsg", 29192, + "SAD69 / UTM zone 22S"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +south +ellps=aust_SA +towgs84=-57,1,"); + add_proj4text (p, 1, + "-41,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 22S\",GEOGCS[\"SAD69\",DATUM[\""); + add_srs_wkt (p, 1, + "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); + add_srs_wkt (p, 2, + "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-51],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"29192\"]]"); + p = add_epsg_def (filter, first, last, 29193, "epsg", 29193, + "SAD69 / UTM zone 23S"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +south +ellps=aust_SA +towgs84=-57,1,"); + add_proj4text (p, 1, + "-41,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 23S\",GEOGCS[\"SAD69\",DATUM[\""); + add_srs_wkt (p, 1, + "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); + add_srs_wkt (p, 2, + "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-45],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"29193\"]]"); + p = add_epsg_def (filter, first, last, 29194, "epsg", 29194, + "SAD69 / UTM zone 24S"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +south +ellps=aust_SA +towgs84=-57,1,"); + add_proj4text (p, 1, + "-41,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 24S\",GEOGCS[\"SAD69\",DATUM[\""); + add_srs_wkt (p, 1, + "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); + add_srs_wkt (p, 2, + "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-39],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"29194\"]]"); + p = add_epsg_def (filter, first, last, 29195, "epsg", 29195, + "SAD69 / UTM zone 25S"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +south +ellps=aust_SA +towgs84=-57,1,"); + add_proj4text (p, 1, + "-41,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SAD69 / UTM zone 25S\",GEOGCS[\"SAD69\",DATUM[\""); + add_srs_wkt (p, 1, + "South_American_Datum_1969\",SPHEROID[\"GRS 1967 Modified"); + add_srs_wkt (p, 2, + "\",6378160,298.25,AUTHORITY[\"EPSG\",\"7050\"]],TOWGS84["); + add_srs_wkt (p, 3, + "-57,1,-41,0,0,0,0],AUTHORITY[\"EPSG\",\"6618\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4618\"]],PROJECTION[\"Transverse_Mer"); + add_srs_wkt (p, 7, + "cator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-33],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 11, + ",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"29195\"]]"); + p = add_epsg_def (filter, first, last, 29220, "epsg", 29220, + "Sapper Hill 1943 / UTM zone 20S"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +south +ellps=intl +towgs84=-355,21,7"); + add_proj4text (p, 1, + "2,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Sapper Hill 1943 / UTM zone 20S\",GEOGCS[\"Sapp"); + add_srs_wkt (p, 1, + "er Hill 1943\",DATUM[\"Sapper_Hill_1943\",SPHEROID[\"Int"); + add_srs_wkt (p, 2, + "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-355,21,72,0,0,0,0],AUTHORITY[\"EPSG\",\"6292"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4292\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"29220\"]]"); + p = add_epsg_def (filter, first, last, 29221, "epsg", 29221, + "Sapper Hill 1943 / UTM zone 21S"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +south +ellps=intl +towgs84=-355,21,7"); + add_proj4text (p, 1, + "2,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Sapper Hill 1943 / UTM zone 21S\",GEOGCS[\"Sapp"); + add_srs_wkt (p, 1, + "er Hill 1943\",DATUM[\"Sapper_Hill_1943\",SPHEROID[\"Int"); + add_srs_wkt (p, 2, + "ernational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"7022\""); + add_srs_wkt (p, 3, + "]],TOWGS84[-355,21,72,0,0,0,0],AUTHORITY[\"EPSG\",\"6292"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4292\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"29221\"]]"); + p = add_epsg_def (filter, first, last, 29333, "epsg", 29333, + "Schwarzeck / UTM zone 33S"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +south +ellps=bess_nam +towgs84=616,9"); + add_proj4text (p, 1, + "7,-251,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Schwarzeck / UTM zone 33S\",GEOGCS[\"Schwarzeck"); + add_srs_wkt (p, 1, + "\",DATUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\""); + add_srs_wkt (p, 2, + ",6377483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046"); + add_srs_wkt (p, 3, + "\"]],TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6"); + add_srs_wkt (p, 4, + "293\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901"); + add_srs_wkt (p, 5, + "\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 6, + "\",\"9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\""); + add_srs_wkt (p, 7, + "Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\","); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",15],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"29333\"]]"); + p = add_epsg_def (filter, first, last, 29371, "epsg", 29371, + "Schwarzeck / Lo22/11"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-22 +lon_0=11 +k=1 +x_0=0 +y_0=0 +axi"); + add_proj4text (p, 1, + "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); + add_proj4text (p, 2, + "eter=1.0000135965 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Schwarzeck / Lo22/11\",GEOGCS[\"Schwarzeck\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); + add_srs_wkt (p, 2, + "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",-22],PARAMETER[\"central_meridian\",11],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); + add_srs_wkt (p, 11, + "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29371\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 29373, "epsg", 29373, + "Schwarzeck / Lo22/13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-22 +lon_0=13 +k=1 +x_0=0 +y_0=0 +axi"); + add_proj4text (p, 1, + "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); + add_proj4text (p, 2, + "eter=1.0000135965 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Schwarzeck / Lo22/13\",GEOGCS[\"Schwarzeck\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); + add_srs_wkt (p, 2, + "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",-22],PARAMETER[\"central_meridian\",13],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); + add_srs_wkt (p, 11, + "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29373\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 29375, "epsg", 29375, + "Schwarzeck / Lo22/15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-22 +lon_0=15 +k=1 +x_0=0 +y_0=0 +axi"); + add_proj4text (p, 1, + "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); + add_proj4text (p, 2, + "eter=1.0000135965 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Schwarzeck / Lo22/15\",GEOGCS[\"Schwarzeck\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); + add_srs_wkt (p, 2, + "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",-22],PARAMETER[\"central_meridian\",15],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); + add_srs_wkt (p, 11, + "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29375\""); + add_srs_wkt (p, 13, + "]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_40.c b/src/spatialite/src/srsinit/epsg_inlined_40.c new file mode 100644 index 0000000..b3b41fc --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_40.c @@ -0,0 +1,3508 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_40 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 29377, "epsg", 29377, + "Schwarzeck / Lo22/17"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-22 +lon_0=17 +k=1 +x_0=0 +y_0=0 +axi"); + add_proj4text (p, 1, + "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); + add_proj4text (p, 2, + "eter=1.0000135965 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Schwarzeck / Lo22/17\",GEOGCS[\"Schwarzeck\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); + add_srs_wkt (p, 2, + "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",-22],PARAMETER[\"central_meridian\",17],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); + add_srs_wkt (p, 11, + "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29377\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 29379, "epsg", 29379, + "Schwarzeck / Lo22/19"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-22 +lon_0=19 +k=1 +x_0=0 +y_0=0 +axi"); + add_proj4text (p, 1, + "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); + add_proj4text (p, 2, + "eter=1.0000135965 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Schwarzeck / Lo22/19\",GEOGCS[\"Schwarzeck\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); + add_srs_wkt (p, 2, + "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",-22],PARAMETER[\"central_meridian\",19],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); + add_srs_wkt (p, 11, + "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29379\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 29381, "epsg", 29381, + "Schwarzeck / Lo22/21"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-22 +lon_0=21 +k=1 +x_0=0 +y_0=0 +axi"); + add_proj4text (p, 1, + "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); + add_proj4text (p, 2, + "eter=1.0000135965 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Schwarzeck / Lo22/21\",GEOGCS[\"Schwarzeck\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); + add_srs_wkt (p, 2, + "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",-22],PARAMETER[\"central_meridian\",21],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); + add_srs_wkt (p, 11, + "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29381\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 29383, "epsg", 29383, + "Schwarzeck / Lo22/23"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-22 +lon_0=23 +k=1 +x_0=0 +y_0=0 +axi"); + add_proj4text (p, 1, + "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); + add_proj4text (p, 2, + "eter=1.0000135965 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Schwarzeck / Lo22/23\",GEOGCS[\"Schwarzeck\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); + add_srs_wkt (p, 2, + "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",-22],PARAMETER[\"central_meridian\",23],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); + add_srs_wkt (p, 11, + "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29383\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 29385, "epsg", 29385, + "Schwarzeck / Lo22/25"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=-22 +lon_0=25 +k=1 +x_0=0 +y_0=0 +axi"); + add_proj4text (p, 1, + "s=wsu +ellps=bess_nam +towgs84=616,97,-251,0,0,0,0 +to_m"); + add_proj4text (p, 2, + "eter=1.0000135965 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Schwarzeck / Lo22/25\",GEOGCS[\"Schwarzeck\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Schwarzeck\",SPHEROID[\"Bessel Namibia (GLM)\",637"); + add_srs_wkt (p, 2, + "7483.865280419,299.1528128,AUTHORITY[\"EPSG\",\"7046\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[616,97,-251,0,0,0,0],AUTHORITY[\"EPSG\",\"6293\""); + add_srs_wkt (p, 4, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 5, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "9122\"]],AUTHORITY[\"EPSG\",\"4293\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 7, + "sverse_Mercator_South_Orientated\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",-22],PARAMETER[\"central_meridian\",25],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",1],PARAMETER[\"false_easting\",0"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"German legal me"); + add_srs_wkt (p, 11, + "tre\",1.0000135965,AUTHORITY[\"EPSG\",\"9031\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",WEST],AXIS[\"X\",SOUTH],AUTHORITY[\"EPSG\",\"29385\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 29635, "epsg", 29635, + "Sudan / UTM zone 35N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +a=6378249.2 +b=6356515 +units=m +no_"); + add_proj4text (p, 1, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Sudan / UTM zone 35N (deprecated)\",GEOGCS[\"Su"); + add_srs_wkt (p, 1, + "dan\",DATUM[\"Sudan\",SPHEROID[\"Clarke 1880 (IGN)\",637"); + add_srs_wkt (p, 2, + "8249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6296\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4296\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",2"); + add_srs_wkt (p, 8, + "7],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 9, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 11, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"296"); + add_srs_wkt (p, 12, + "35\"]]"); + p = add_epsg_def (filter, first, last, 29636, "epsg", 29636, + "Sudan / UTM zone 36N (deprecated)"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +a=6378249.2 +b=6356515 +units=m +no_"); + add_proj4text (p, 1, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Sudan / UTM zone 36N (deprecated)\",GEOGCS[\"Su"); + add_srs_wkt (p, 1, + "dan\",DATUM[\"Sudan\",SPHEROID[\"Clarke 1880 (IGN)\",637"); + add_srs_wkt (p, 2, + "8249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"7011\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6296\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9108\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4296\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",3"); + add_srs_wkt (p, 8, + "3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false_"); + add_srs_wkt (p, 9, + "easting\",500000],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 10, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\""); + add_srs_wkt (p, 11, + ",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"296"); + add_srs_wkt (p, 12, + "36\"]]"); + p = add_epsg_def (filter, first, last, 29700, "epsg", 29700, + "Tananarive (Paris) / Laborde Grid (deprecated)"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha="); + add_proj4text (p, 1, + "18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +gamm"); + add_proj4text (p, 2, + "a=18.9 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=pa"); + add_proj4text (p, 3, + "ris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tananarive (Paris) / Laborde Grid (deprecated)\""); + add_srs_wkt (p, 1, + ",GEOGCS[\"Tananarive (Paris)\",DATUM[\"Tananarive_1925_P"); + add_srs_wkt (p, 2, + "aris\",SPHEROID[\"International 1924\",6378388,297,AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"7022\"]],TOWGS84[-189,-242,-91,0,0,0,0],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6810\"]],PRIMEM[\"Paris\",2.3372291"); + add_srs_wkt (p, 5, + "7,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0.01570796"); + add_srs_wkt (p, 6, + "326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4810\"]],PROJECTION[\"Hotine_Oblique_Mercator_Azimu"); + add_srs_wkt (p, 8, + "th_Center\"],PARAMETER[\"latitude_of_center\",-21],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"longitude_of_center\",49],PARAMETER[\"azimuth\",2"); + add_srs_wkt (p, 10, + "1],PARAMETER[\"rectified_grid_angle\",21],PARAMETER[\"sc"); + add_srs_wkt (p, 11, + "ale_factor\",0.9995],PARAMETER[\"false_easting\",400000]"); + add_srs_wkt (p, 12, + ",PARAMETER[\"false_northing\",800000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 13, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 14, + ",NORTH],AUTHORITY[\"EPSG\",\"29700\"]]"); + p = add_epsg_def (filter, first, last, 29702, "epsg", 29702, + "Tananarive (Paris) / Laborde Grid approximation"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=-18.9 +lonc=44.10000000000001 +alpha="); + add_proj4text (p, 1, + "18.9 +k=0.9995000000000001 +x_0=400000 +y_0=800000 +gamm"); + add_proj4text (p, 2, + "a=18.9 +ellps=intl +towgs84=-189,-242,-91,0,0,0,0 +pm=pa"); + add_proj4text (p, 3, + "ris +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tananarive (Paris) / Laborde Grid approximation"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"Tananarive (Paris)\",DATUM[\"Tananarive_1925"); + add_srs_wkt (p, 2, + "_Paris\",SPHEROID[\"International 1924\",6378388,297,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7022\"]],TOWGS84[-189,-242,-91,0,0,0,0"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6810\"]],PRIMEM[\"Paris\",2.33722"); + add_srs_wkt (p, 5, + "917,AUTHORITY[\"EPSG\",\"8903\"]],UNIT[\"grad\",0.015707"); + add_srs_wkt (p, 6, + "96326794897,AUTHORITY[\"EPSG\",\"9105\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 7, + "SG\",\"4810\"]],PROJECTION[\"Hotine_Oblique_Mercator_Azi"); + add_srs_wkt (p, 8, + "muth_Center\"],PARAMETER[\"latitude_of_center\",-21],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"longitude_of_center\",49],PARAMETER[\"azimuth\""); + add_srs_wkt (p, 10, + ",21],PARAMETER[\"rectified_grid_angle\",21],PARAMETER[\""); + add_srs_wkt (p, 11, + "scale_factor\",0.9995],PARAMETER[\"false_easting\",40000"); + add_srs_wkt (p, 12, + "0],PARAMETER[\"false_northing\",800000],UNIT[\"metre\",1"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"2970"); + add_srs_wkt (p, 14, + "2\"]]"); + p = add_epsg_def (filter, first, last, 29738, "epsg", 29738, + "Tananarive / UTM zone 38S"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +south +ellps=intl +towgs84=-189,-242"); + add_proj4text (p, 1, + ",-91,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tananarive / UTM zone 38S\",GEOGCS[\"Tananarive"); + add_srs_wkt (p, 1, + "\",DATUM[\"Tananarive_1925\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "189,-242,-91,0,0,0,0],AUTHORITY[\"EPSG\",\"6297\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4297\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",45],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"29738\"]]"); + p = add_epsg_def (filter, first, last, 29739, "epsg", 29739, + "Tananarive / UTM zone 39S"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +south +ellps=intl +towgs84=-189,-242"); + add_proj4text (p, 1, + ",-91,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tananarive / UTM zone 39S\",GEOGCS[\"Tananarive"); + add_srs_wkt (p, 1, + "\",DATUM[\"Tananarive_1925\",SPHEROID[\"International 19"); + add_srs_wkt (p, 2, + "24\",6378388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "189,-242,-91,0,0,0,0],AUTHORITY[\"EPSG\",\"6297\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4297\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"central_meridian\",51],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9996],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"29739\"]]"); + p = add_epsg_def (filter, first, last, 29849, "epsg", 29849, + "Timbalai 1948 / UTM zone 49N"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +ellps=evrstSS +towgs84=-679,669,-48,"); + add_proj4text (p, 1, + "0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Timbalai 1948 / UTM zone 49N\",GEOGCS[\"Timbala"); + add_srs_wkt (p, 1, + "i 1948\",DATUM[\"Timbalai_1948\",SPHEROID[\"Everest 1830"); + add_srs_wkt (p, 2, + " (1967 Definition)\",6377298.556,300.8017,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7016\"]],TOWGS84[-679,669,-48,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6298\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4298\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",111],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",0.9996],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"29849\"]]"); + p = add_epsg_def (filter, first, last, 29850, "epsg", 29850, + "Timbalai 1948 / UTM zone 50N"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +ellps=evrstSS +towgs84=-679,669,-48,"); + add_proj4text (p, 1, + "0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Timbalai 1948 / UTM zone 50N\",GEOGCS[\"Timbala"); + add_srs_wkt (p, 1, + "i 1948\",DATUM[\"Timbalai_1948\",SPHEROID[\"Everest 1830"); + add_srs_wkt (p, 2, + " (1967 Definition)\",6377298.556,300.8017,AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"7016\"]],TOWGS84[-679,669,-48,0,0,0,0],AUTHORITY["); + add_srs_wkt (p, 4, + "\"EPSG\",\"6298\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"E"); + add_srs_wkt (p, 5, + "PSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4298\"]],"); + add_srs_wkt (p, 7, + "PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitude"); + add_srs_wkt (p, 8, + "_of_origin\",0],PARAMETER[\"central_meridian\",117],PARA"); + add_srs_wkt (p, 9, + "METER[\"scale_factor\",0.9996],PARAMETER[\"false_easting"); + add_srs_wkt (p, 10, + "\",500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 11, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],"); + add_srs_wkt (p, 12, + "AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"29850\"]]"); + p = add_epsg_def (filter, first, last, 29871, "epsg", 29871, + "Timbalai 1948 / RSO Borneo (ch)"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 "); + add_proj4text (p, 1, + "+k=0.99984 +x_0=590476.8714630401 +y_0=442857.653094361 "); + add_proj4text (p, 2, + "+gamma=53.13010236111111 +ellps=evrstSS +towgs84=-679,66"); + add_proj4text (p, 3, + "9,-48,0,0,0,0 +to_meter=20.11676512155263 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Timbalai 1948 / RSO Borneo (ch)\",GEOGCS[\"Timb"); + add_srs_wkt (p, 1, + "alai 1948\",DATUM[\"Timbalai_1948\",SPHEROID[\"Everest 1"); + add_srs_wkt (p, 2, + "830 (1967 Definition)\",6377298.556,300.8017,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7016\"]],TOWGS84[-679,669,-48,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"6298\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4298\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Hotine_Oblique_Mercator_Azimuth_Center\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_center\",4],PARAMETER[\"longitud"); + add_srs_wkt (p, 9, + "e_of_center\",115],PARAMETER[\"azimuth\",53.315820472222"); + add_srs_wkt (p, 10, + "22],PARAMETER[\"rectified_grid_angle\",53.13010236111111"); + add_srs_wkt (p, 11, + "],PARAMETER[\"scale_factor\",0.99984],PARAMETER[\"false_"); + add_srs_wkt (p, 12, + "easting\",29352.4763],PARAMETER[\"false_northing\",22014"); + add_srs_wkt (p, 13, + ".3572],UNIT[\"British chain (Sears 1922)\",20.1167651215"); + add_srs_wkt (p, 14, + "5263,AUTHORITY[\"EPSG\",\"9042\"]],AXIS[\"Easting\",EAST"); + add_srs_wkt (p, 15, + "],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"29871\"]"); + add_srs_wkt (p, 16, + "]"); + p = add_epsg_def (filter, first, last, 29872, "epsg", 29872, + "Timbalai 1948 / RSO Borneo (ft)"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 "); + add_proj4text (p, 1, + "+k=0.99984 +x_0=590476.8727431979 +y_0=442857.6545573985"); + add_proj4text (p, 2, + " +gamma=53.13010236111111 +ellps=evrstSS +towgs84=-679,6"); + add_proj4text (p, 3, + "69,-48,0,0,0,0 +to_meter=0.3047994715386762 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Timbalai 1948 / RSO Borneo (ft)\",GEOGCS[\"Timb"); + add_srs_wkt (p, 1, + "alai 1948\",DATUM[\"Timbalai_1948\",SPHEROID[\"Everest 1"); + add_srs_wkt (p, 2, + "830 (1967 Definition)\",6377298.556,300.8017,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7016\"]],TOWGS84[-679,669,-48,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"6298\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4298\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Hotine_Oblique_Mercator_Azimuth_Center\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_center\",4],PARAMETER[\"longitud"); + add_srs_wkt (p, 9, + "e_of_center\",115],PARAMETER[\"azimuth\",53.315820472222"); + add_srs_wkt (p, 10, + "22],PARAMETER[\"rectified_grid_angle\",53.13010236111111"); + add_srs_wkt (p, 11, + "],PARAMETER[\"scale_factor\",0.99984],PARAMETER[\"false_"); + add_srs_wkt (p, 12, + "easting\",1937263.44],PARAMETER[\"false_northing\",14529"); + add_srs_wkt (p, 13, + "47.58],UNIT[\"British foot (Sears 1922)\",0.304799471538"); + add_srs_wkt (p, 14, + "6762,AUTHORITY[\"EPSG\",\"9041\"]],AXIS[\"Easting\",EAST"); + add_srs_wkt (p, 15, + "],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"29872\"]"); + add_srs_wkt (p, 16, + "]"); + p = add_epsg_def (filter, first, last, 29873, "epsg", 29873, + "Timbalai 1948 / RSO Borneo (m)"); + add_proj4text (p, 0, + "+proj=omerc +lat_0=4 +lonc=115 +alpha=53.31582047222222 "); + add_proj4text (p, 1, + "+k=0.99984 +x_0=590476.87 +y_0=442857.65 +gamma=53.13010"); + add_proj4text (p, 2, + "236111111 +ellps=evrstSS +towgs84=-679,669,-48,0,0,0,0 +"); + add_proj4text (p, 3, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Timbalai 1948 / RSO Borneo (m)\",GEOGCS[\"Timba"); + add_srs_wkt (p, 1, + "lai 1948\",DATUM[\"Timbalai_1948\",SPHEROID[\"Everest 18"); + add_srs_wkt (p, 2, + "30 (1967 Definition)\",6377298.556,300.8017,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7016\"]],TOWGS84[-679,669,-48,0,0,0,0],AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"6298\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4298\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Hotine_Oblique_Mercator_Azimuth_Center\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"latitude_of_center\",4],PARAMETER[\"longitud"); + add_srs_wkt (p, 9, + "e_of_center\",115],PARAMETER[\"azimuth\",53.315820472222"); + add_srs_wkt (p, 10, + "22],PARAMETER[\"rectified_grid_angle\",53.13010236111111"); + add_srs_wkt (p, 11, + "],PARAMETER[\"scale_factor\",0.99984],PARAMETER[\"false_"); + add_srs_wkt (p, 12, + "easting\",590476.87],PARAMETER[\"false_northing\",442857"); + add_srs_wkt (p, 13, + ".65],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); + add_srs_wkt (p, 14, + "[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 15, + "EPSG\",\"29873\"]]"); + p = add_epsg_def (filter, first, last, 29900, "epsg", 29900, + "TM65 / Irish National Grid (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=20000"); + add_proj4text (p, 1, + "0 +y_0=250000 +datum=ire65 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TM65 / Irish National Grid (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"TM65\",DATUM[\"TM65\",SPHEROID[\"Airy Modified 1849\""); + add_srs_wkt (p, 2, + ",6377340.189,299.3249646,AUTHORITY[\"EPSG\",\"7002\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6299\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"42"); + add_srs_wkt (p, 7, + "99\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",53.5],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-8],PARAMETER[\"scale_factor\",1.000035],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",200000],PARAMETER[\"false_northing\",25000"); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 13, + "G\",\"29900\"]]"); + p = add_epsg_def (filter, first, last, 29901, "epsg", 29901, + "OSNI 1952 / Irish National Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1 +x_0=200000 +y_0="); + add_proj4text (p, 1, + "250000 +ellps=airy +towgs84=482.5,-130.6,564.6,-1.042,-0"); + add_proj4text (p, 2, + ".214,-0.631,8.15 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"OSNI 1952 / Irish National Grid\",GEOGCS[\"OSNI"); + add_srs_wkt (p, 1, + " 1952\",DATUM[\"OSNI_1952\",SPHEROID[\"Airy 1830\",63775"); + add_srs_wkt (p, 2, + "63.396,299.3249646,AUTHORITY[\"EPSG\",\"7001\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15],AUTHORITY"); + add_srs_wkt (p, 4, + "[\"EPSG\",\"6188\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4188\"]]"); + add_srs_wkt (p, 7, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 8, + "e_of_origin\",53.5],PARAMETER[\"central_meridian\",-8],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",200000],PARAMETER[\"false_northing\",250000],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EA"); + add_srs_wkt (p, 12, + "ST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"29901\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 29902, "epsg", 29902, + "TM65 / Irish Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=20000"); + add_proj4text (p, 1, + "0 +y_0=250000 +datum=ire65 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TM65 / Irish Grid\",GEOGCS[\"TM65\",DATUM[\"TM6"); + add_srs_wkt (p, 1, + "5\",SPHEROID[\"Airy Modified 1849\",6377340.189,299.3249"); + add_srs_wkt (p, 2, + "646,AUTHORITY[\"EPSG\",\"7002\"]],TOWGS84[482.5,-130.6,5"); + add_srs_wkt (p, 3, + "64.6,-1.042,-0.214,-0.631,8.15],AUTHORITY[\"EPSG\",\"629"); + add_srs_wkt (p, 4, + "9\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4299\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",5"); + add_srs_wkt (p, 8, + "3.5],PARAMETER[\"central_meridian\",-8],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",1.000035],PARAMETER[\"false_easting\",200000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",250000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"29902\"]]"); + p = add_epsg_def (filter, first, last, 29903, "epsg", 29903, + "TM75 / Irish Grid"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=53.5 +lon_0=-8 +k=1.000035 +x_0=20000"); + add_proj4text (p, 1, + "0 +y_0=250000 +ellps=mod_airy +towgs84=482.5,-130.6,564."); + add_proj4text (p, 2, + "6,-1.042,-0.214,-0.631,8.15 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TM75 / Irish Grid\",GEOGCS[\"TM75\",DATUM[\"Geo"); + add_srs_wkt (p, 1, + "detic_Datum_of_1965\",SPHEROID[\"Airy Modified 1849\",63"); + add_srs_wkt (p, 2, + "77340.189,299.3249646,AUTHORITY[\"EPSG\",\"7002\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[482.5,-130.6,564.6,-1.042,-0.214,-0.631,8.15],AUTHOR"); + add_srs_wkt (p, 4, + "ITY[\"EPSG\",\"6300\"]],PRIMEM[\"Greenwich\",0,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4300\""); + add_srs_wkt (p, 7, + "]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",53.5],PARAMETER[\"central_meridian\",-8]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"scale_factor\",1.000035],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "easting\",200000],PARAMETER[\"false_northing\",250000],U"); + add_srs_wkt (p, 11, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eas"); + add_srs_wkt (p, 12, + "ting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"29903\"]]"); + p = add_epsg_def (filter, first, last, 30161, "epsg", 30161, + "Tokyo / Japan Plane Rectangular CS I"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=33 +lon_0=129.5 +k=0.9999 +x_0=0 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS I\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377397"); + add_srs_wkt (p, 2, + ".155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"63"); + add_srs_wkt (p, 4, + "01\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",3"); + add_srs_wkt (p, 8, + "3],PARAMETER[\"central_meridian\",129.5],PARAMETER[\"sca"); + add_srs_wkt (p, 9, + "le_factor\",0.9999],PARAMETER[\"false_easting\",0],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30161\"]]"); + p = add_epsg_def (filter, first, last, 30162, "epsg", 30162, + "Tokyo / Japan Plane Rectangular CS II"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=33 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS II\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",63773"); + add_srs_wkt (p, 2, + "97.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",33],PARAMETER[\"central_meridian\",131],PARAMETER[\"sca"); + add_srs_wkt (p, 9, + "le_factor\",0.9999],PARAMETER[\"false_easting\",0],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30162\"]]"); + p = add_epsg_def (filter, first, last, 30163, "epsg", 30163, + "Tokyo / Japan Plane Rectangular CS III"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=132.1666666666667 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,6"); + add_proj4text (p, 2, + "80.507,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS III\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377"); + add_srs_wkt (p, 2, + "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",36],PARAMETER[\"central_meridian\",132.1666666666667],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"301"); + add_srs_wkt (p, 12, + "63\"]]"); + p = add_epsg_def (filter, first, last, 30164, "epsg", 30164, + "Tokyo / Japan Plane Rectangular CS IV"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=33 +lon_0=133.5 +k=0.9999 +x_0=0 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS IV\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",63773"); + add_srs_wkt (p, 2, + "97.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",33],PARAMETER[\"central_meridian\",133.5],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9999],PARAMETER[\"false_easting\",0],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30164\"]]"); + p = add_epsg_def (filter, first, last, 30165, "epsg", 30165, + "Tokyo / Japan Plane Rectangular CS V"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=134.3333333333333 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,6"); + add_proj4text (p, 2, + "80.507,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS V\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377397"); + add_srs_wkt (p, 2, + ".155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"63"); + add_srs_wkt (p, 4, + "01\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",3"); + add_srs_wkt (p, 8, + "6],PARAMETER[\"central_meridian\",134.3333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.9999],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30165"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 30166, "epsg", 30166, + "Tokyo / Japan Plane Rectangular CS VI"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS VI\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",63773"); + add_srs_wkt (p, 2, + "97.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",36],PARAMETER[\"central_meridian\",136],PARAMETER[\"sca"); + add_srs_wkt (p, 9, + "le_factor\",0.9999],PARAMETER[\"false_easting\",0],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30166\"]]"); + p = add_epsg_def (filter, first, last, 30167, "epsg", 30167, + "Tokyo / Japan Plane Rectangular CS VII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=137.1666666666667 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,6"); + add_proj4text (p, 2, + "80.507,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS VII\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377"); + add_srs_wkt (p, 2, + "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",36],PARAMETER[\"central_meridian\",137.1666666666667],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"301"); + add_srs_wkt (p, 12, + "67\"]]"); + p = add_epsg_def (filter, first, last, 30168, "epsg", 30168, + "Tokyo / Japan Plane Rectangular CS VIII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=138.5 +k=0.9999 +x_0=0 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS VIII\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",637"); + add_srs_wkt (p, 2, + "7397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",36],PARAMETER[\"central_meridian\",138.5],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 11, + "TY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30168\"]]"); + p = add_epsg_def (filter, first, last, 30169, "epsg", 30169, + "Tokyo / Japan Plane Rectangular CS IX"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=36 +lon_0=139.8333333333333 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,6"); + add_proj4text (p, 2, + "80.507,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS IX\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",63773"); + add_srs_wkt (p, 2, + "97.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",36],PARAMETER[\"central_meridian\",139.8333333333333],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false_east"); + add_srs_wkt (p, 10, + "ing\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"301"); + add_srs_wkt (p, 12, + "69\"]]"); + p = add_epsg_def (filter, first, last, 30170, "epsg", 30170, + "Tokyo / Japan Plane Rectangular CS X"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=140.8333333333333 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=0 +y_0=0 +ellps=bessel +towgs84=-146.414,507.337,6"); + add_proj4text (p, 2, + "80.507,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS X\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377397"); + add_srs_wkt (p, 2, + ".155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[-"); + add_srs_wkt (p, 3, + "146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\"63"); + add_srs_wkt (p, 4, + "01\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 5, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION[\"T"); + add_srs_wkt (p, 7, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",4"); + add_srs_wkt (p, 8, + "0],PARAMETER[\"central_meridian\",140.8333333333333],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"scale_factor\",0.9999],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 10, + "g\",0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 11, + "AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30170"); + add_srs_wkt (p, 12, + "\"]]"); + p = add_epsg_def (filter, first, last, 30171, "epsg", 30171, + "Tokyo / Japan Plane Rectangular CS XI"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=44 +lon_0=140.25 +k=0.9999 +x_0=0 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS XI\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",63773"); + add_srs_wkt (p, 2, + "97.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",44],PARAMETER[\"central_meridian\",140.25],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30171\"]]"); + p = add_epsg_def (filter, first, last, 30172, "epsg", 30172, + "Tokyo / Japan Plane Rectangular CS XII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=44 +lon_0=142.25 +k=0.9999 +x_0=0 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS XII\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377"); + add_srs_wkt (p, 2, + "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",44],PARAMETER[\"central_meridian\",142.25],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30172\"]]"); + p = add_epsg_def (filter, first, last, 30173, "epsg", 30173, + "Tokyo / Japan Plane Rectangular CS XIII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=44 +lon_0=144.25 +k=0.9999 +x_0=0 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,"); + add_proj4text (p, 2, + "0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS XIII\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",637"); + add_srs_wkt (p, 2, + "7397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",44],PARAMETER[\"central_meridian\",144.25],PARAMETER"); + add_srs_wkt (p, 9, + "[\"scale_factor\",0.9999],PARAMETER[\"false_easting\",0]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30173\"]]"); + p = add_epsg_def (filter, first, last, 30174, "epsg", 30174, + "Tokyo / Japan Plane Rectangular CS XIV"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=26 +lon_0=142 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS XIV\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377"); + add_srs_wkt (p, 2, + "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",26],PARAMETER[\"central_meridian\",142],PARAMETER[\"sca"); + add_srs_wkt (p, 9, + "le_factor\",0.9999],PARAMETER[\"false_easting\",0],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30174\"]]"); + p = add_epsg_def (filter, first, last, 30175, "epsg", 30175, + "Tokyo / Japan Plane Rectangular CS XV"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=26 +lon_0=127.5 +k=0.9999 +x_0=0 +y_0"); + add_proj4text (p, 1, + "=0 +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0"); + add_proj4text (p, 2, + ",0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS XV\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",63773"); + add_srs_wkt (p, 2, + "97.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",26],PARAMETER[\"central_meridian\",127.5],PARAMETER[\"s"); + add_srs_wkt (p, 9, + "cale_factor\",0.9999],PARAMETER[\"false_easting\",0],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30175\"]]"); + p = add_epsg_def (filter, first, last, 30176, "epsg", 30176, + "Tokyo / Japan Plane Rectangular CS XVI"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=26 +lon_0=124 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS XVI\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377"); + add_srs_wkt (p, 2, + "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",26],PARAMETER[\"central_meridian\",124],PARAMETER[\"sca"); + add_srs_wkt (p, 9, + "le_factor\",0.9999],PARAMETER[\"false_easting\",0],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30176\"]]"); + p = add_epsg_def (filter, first, last, 30177, "epsg", 30177, + "Tokyo / Japan Plane Rectangular CS XVII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=26 +lon_0=131 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS XVII\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",637"); + add_srs_wkt (p, 2, + "7397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 4, + "\"6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8"); + add_srs_wkt (p, 5, + "901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"E"); + add_srs_wkt (p, 6, + "PSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTIO"); + add_srs_wkt (p, 7, + "N[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 8, + "n\",26],PARAMETER[\"central_meridian\",131],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30177\"]]"); + p = add_epsg_def (filter, first, last, 30178, "epsg", 30178, + "Tokyo / Japan Plane Rectangular CS XVIII"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=20 +lon_0=136 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS XVIII\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",63"); + add_srs_wkt (p, 2, + "77397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTI"); + add_srs_wkt (p, 7, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 8, + "in\",20],PARAMETER[\"central_meridian\",136],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.9999],PARAMETER[\"false_easting\",0],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30178\"]]"); + p = add_epsg_def (filter, first, last, 30179, "epsg", 30179, + "Tokyo / Japan Plane Rectangular CS XIX"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=26 +lon_0=154 +k=0.9999 +x_0=0 +y_0=0"); + add_proj4text (p, 1, + " +ellps=bessel +towgs84=-146.414,507.337,680.507,0,0,0,0"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Tokyo / Japan Plane Rectangular CS XIX\",GEOGCS"); + add_srs_wkt (p, 1, + "[\"Tokyo\",DATUM[\"Tokyo\",SPHEROID[\"Bessel 1841\",6377"); + add_srs_wkt (p, 2, + "397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[-146.414,507.337,680.507,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6301\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4301\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",26],PARAMETER[\"central_meridian\",154],PARAMETER[\"sca"); + add_srs_wkt (p, 9, + "le_factor\",0.9999],PARAMETER[\"false_easting\",0],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"30179\"]]"); + p = add_epsg_def (filter, first, last, 30200, "epsg", 30200, + "Trinidad 1903 / Trinidad Grid"); + add_proj4text (p, 0, + "+proj=cass +lat_0=10.44166666666667 +lon_0=-61.333333333"); + add_proj4text (p, 1, + "33334 +x_0=86501.46392051999 +y_0=65379.0134283 +a=63782"); + add_proj4text (p, 2, + "93.645208759 +b=6356617.987679838 +towgs84=-61.702,284.4"); + add_proj4text (p, 3, + "88,472.052,0,0,0,0 +to_meter=0.201166195164 +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Trinidad 1903 / Trinidad Grid\",GEOGCS[\"Trinid"); + add_srs_wkt (p, 1, + "ad 1903\",DATUM[\"Trinidad_1903\",SPHEROID[\"Clarke 1858"); + add_srs_wkt (p, 2, + "\",6378293.645208759,294.2606763692569,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7007\"]],TOWGS84[-61.702,284.488,472.052,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6302\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"43"); + add_srs_wkt (p, 7, + "02\"]],PROJECTION[\"Cassini_Soldner\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",10.44166666666667],PARAMETER[\"central_m"); + add_srs_wkt (p, 9, + "eridian\",-61.33333333333334],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",430000],PARAMETER[\"false_northing\",325000],UNIT[\"Cla"); + add_srs_wkt (p, 11, + "rke's link\",0.201166195164,AUTHORITY[\"EPSG\",\"9039\"]"); + add_srs_wkt (p, 12, + "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); + add_srs_wkt (p, 13, + "ITY[\"EPSG\",\"30200\"]]"); + p = add_epsg_def (filter, first, last, 30339, "epsg", 30339, + "TC(1948) / UTM zone 39N"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=helmert +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TC(1948) / UTM zone 39N\",GEOGCS[\"TC(1948)\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Trucial_Coast_1948\",SPHEROID[\"Helmert 1906\",63"); + add_srs_wkt (p, 2, + "78200,298.3,AUTHORITY[\"EPSG\",\"7020\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"6303\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4303\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",51],PARAMETER["); + add_srs_wkt (p, 8, + "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 9, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 10, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 11, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"30339\"]]"); + p = add_epsg_def (filter, first, last, 30340, "epsg", 30340, + "TC(1948) / UTM zone 40N"); + add_proj4text (p, 0, + "+proj=utm +zone=40 +ellps=helmert +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"TC(1948) / UTM zone 40N\",GEOGCS[\"TC(1948)\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Trucial_Coast_1948\",SPHEROID[\"Helmert 1906\",63"); + add_srs_wkt (p, 2, + "78200,298.3,AUTHORITY[\"EPSG\",\"7020\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 3, + "SG\",\"6303\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 5, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4303\"]],PROJE"); + add_srs_wkt (p, 6, + "CTION[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_o"); + add_srs_wkt (p, 7, + "rigin\",0],PARAMETER[\"central_meridian\",57],PARAMETER["); + add_srs_wkt (p, 8, + "\"scale_factor\",0.9996],PARAMETER[\"false_easting\",500"); + add_srs_wkt (p, 9, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 10, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS["); + add_srs_wkt (p, 11, + "\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"30340\"]]"); + p = add_epsg_def (filter, first, last, 30491, "epsg", 30491, + "Voirol 1875 / Nord Algerie (ancienne)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.99962554"); + add_proj4text (p, 1, + "4 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +towgs"); + add_proj4text (p, 2, + "84=-73,-247,227,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Voirol 1875 / Nord Algerie (ancienne)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Voirol 1875\",DATUM[\"Voirol_1875\",SPHEROID[\"Clarke "); + add_srs_wkt (p, 2, + "1880 (IGN)\",6378249.2,293.4660212936265,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7011\"]],TOWGS84[-73,-247,227,0,0,0,0],AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"6304\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPS"); + add_srs_wkt (p, 5, + "G\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4304\"]],PR"); + add_srs_wkt (p, 7, + "OJECTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\"la"); + add_srs_wkt (p, 8, + "titude_of_origin\",36],PARAMETER[\"central_meridian\",2."); + add_srs_wkt (p, 9, + "7],PARAMETER[\"scale_factor\",0.999625544],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_easting\",500000],PARAMETER[\"false_northing\",3000"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"30491"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 30492, "epsg", 30492, + "Voirol 1875 / Sud Algerie (ancienne)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.9996"); + add_proj4text (p, 1, + "25769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +t"); + add_proj4text (p, 2, + "owgs84=-73,-247,227,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Voirol 1875 / Sud Algerie (ancienne)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Voirol 1875\",DATUM[\"Voirol_1875\",SPHEROID[\"Clarke 18"); + add_srs_wkt (p, 2, + "80 (IGN)\",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7011\"]],TOWGS84[-73,-247,227,0,0,0,0],AUTHORITY[\"EP"); + add_srs_wkt (p, 4, + "SG\",\"6304\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4304\"]],PROJE"); + add_srs_wkt (p, 7, + "CTION[\"Lambert_Conformal_Conic_1SP\"],PARAMETER[\"latit"); + add_srs_wkt (p, 8, + "ude_of_origin\",33.3],PARAMETER[\"central_meridian\",2.7"); + add_srs_wkt (p, 9, + "],PARAMETER[\"scale_factor\",0.999625769],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",500000],PARAMETER[\"false_northing\",30000"); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"30492\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 30493, "epsg", 30493, + "Voirol 1879 / Nord Algerie (ancienne)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.99962554"); + add_proj4text (p, 1, + "4 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +units"); + add_proj4text (p, 2, + "=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Voirol 1879 / Nord Algerie (ancienne)\",GEOGCS["); + add_srs_wkt (p, 1, + "\"Voirol 1879\",DATUM[\"Voirol_1879\",SPHEROID[\"Clarke "); + add_srs_wkt (p, 2, + "1880 (IGN)\",6378249.2,293.4660212936265,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7011\"]],AUTHORITY[\"EPSG\",\"6671\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4671\"]],PROJECTION[\"Lambert_Conformal_C"); + add_srs_wkt (p, 7, + "onic_1SP\"],PARAMETER[\"latitude_of_origin\",36],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",2.7],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.999625544],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",300000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"30493\"]]"); + p = add_epsg_def (filter, first, last, 30494, "epsg", 30494, + "Voirol 1879 / Sud Algerie (ancienne)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.9996"); + add_proj4text (p, 1, + "25769 +x_0=500000 +y_0=300000 +a=6378249.2 +b=6356515 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Voirol 1879 / Sud Algerie (ancienne)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "Voirol 1879\",DATUM[\"Voirol_1879\",SPHEROID[\"Clarke 18"); + add_srs_wkt (p, 2, + "80 (IGN)\",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7011\"]],AUTHORITY[\"EPSG\",\"6671\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4671\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_1SP\"],PARAMETER[\"latitude_of_origin\",33.3],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"central_meridian\",2.7],PARAMETER[\"scale_factor\","); + add_srs_wkt (p, 9, + "0.999625769],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",300000],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"30494\"]]"); + p = add_epsg_def (filter, first, last, 30729, "epsg", 30729, + "Nord Sahara 1959 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=clrk80 +towgs84=-209.362,-87.8"); + add_proj4text (p, 1, + "162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Nord Sahara 1959 / UTM zone 29N\",GEOGCS[\"Nord"); + add_srs_wkt (p, 1, + " Sahara 1959\",DATUM[\"Nord_Sahara_1959\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7012\"]],TOWGS84[-209.362,-87.8162,404.62,0.0046,3.478"); + add_srs_wkt (p, 4, + "4,0.5805,-1.4547],AUTHORITY[\"EPSG\",\"6307\"]],PRIMEM[\""); + add_srs_wkt (p, 5, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 6, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 7, + "HORITY[\"EPSG\",\"4307\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 8, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 9, + "entral_meridian\",-9],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"30729\"]]"); + p = add_epsg_def (filter, first, last, 30730, "epsg", 30730, + "Nord Sahara 1959 / UTM zone 30N"); + add_proj4text (p, 0, + "+proj=utm +zone=30 +ellps=clrk80 +towgs84=-209.362,-87.8"); + add_proj4text (p, 1, + "162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Nord Sahara 1959 / UTM zone 30N\",GEOGCS[\"Nord"); + add_srs_wkt (p, 1, + " Sahara 1959\",DATUM[\"Nord_Sahara_1959\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7012\"]],TOWGS84[-209.362,-87.8162,404.62,0.0046,3.478"); + add_srs_wkt (p, 4, + "4,0.5805,-1.4547],AUTHORITY[\"EPSG\",\"6307\"]],PRIMEM[\""); + add_srs_wkt (p, 5, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 6, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 7, + "HORITY[\"EPSG\",\"4307\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 8, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 9, + "entral_meridian\",-3],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"30730\"]]"); + p = add_epsg_def (filter, first, last, 30731, "epsg", 30731, + "Nord Sahara 1959 / UTM zone 31N"); + add_proj4text (p, 0, + "+proj=utm +zone=31 +ellps=clrk80 +towgs84=-209.362,-87.8"); + add_proj4text (p, 1, + "162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Nord Sahara 1959 / UTM zone 31N\",GEOGCS[\"Nord"); + add_srs_wkt (p, 1, + " Sahara 1959\",DATUM[\"Nord_Sahara_1959\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7012\"]],TOWGS84[-209.362,-87.8162,404.62,0.0046,3.478"); + add_srs_wkt (p, 4, + "4,0.5805,-1.4547],AUTHORITY[\"EPSG\",\"6307\"]],PRIMEM[\""); + add_srs_wkt (p, 5, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 6, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 7, + "HORITY[\"EPSG\",\"4307\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 8, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 9, + "entral_meridian\",3],PARAMETER[\"scale_factor\",0.9996],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",500000],PARAMETER[\"false_no"); + add_srs_wkt (p, 11, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"30731\"]]"); + p = add_epsg_def (filter, first, last, 30732, "epsg", 30732, + "Nord Sahara 1959 / UTM zone 32N"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +ellps=clrk80 +towgs84=-209.362,-87.8"); + add_proj4text (p, 1, + "162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"Nord Sahara 1959 / UTM zone 32N\",GEOGCS[\"Nord"); + add_srs_wkt (p, 1, + " Sahara 1959\",DATUM[\"Nord_Sahara_1959\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7012\"]],TOWGS84[-209.362,-87.8162,404.62,0.0046,3.478"); + add_srs_wkt (p, 4, + "4,0.5805,-1.4547],AUTHORITY[\"EPSG\",\"6307\"]],PRIMEM[\""); + add_srs_wkt (p, 5, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 6, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 7, + "HORITY[\"EPSG\",\"4307\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 8, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 9, + "entral_meridian\",9],PARAMETER[\"scale_factor\",0.9996],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",500000],PARAMETER[\"false_no"); + add_srs_wkt (p, 11, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 13, + "RITY[\"EPSG\",\"30732\"]]"); + p = add_epsg_def (filter, first, last, 30791, "epsg", 30791, + "Nord Sahara 1959 / Nord Algerie"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36 +lat_0=36 +lon_0=2.7 +k_0=0.99962554"); + add_proj4text (p, 1, + "4 +x_0=500135 +y_0=300090 +ellps=clrk80 +towgs84=-209.36"); + add_proj4text (p, 2, + "2,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +units=m "); + add_proj4text (p, 3, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Nord Sahara 1959 / Nord Algerie\",GEOGCS[\"Nord"); + add_srs_wkt (p, 1, + " Sahara 1959\",DATUM[\"Nord_Sahara_1959\",SPHEROID[\"Cla"); + add_srs_wkt (p, 2, + "rke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 3, + "\"7012\"]],TOWGS84[-209.362,-87.8162,404.62,0.0046,3.478"); + add_srs_wkt (p, 4, + "4,0.5805,-1.4547],AUTHORITY[\"EPSG\",\"6307\"]],PRIMEM[\""); + add_srs_wkt (p, 5, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 6, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 7, + "HORITY[\"EPSG\",\"4307\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 8, + "l_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",36],PARA"); + add_srs_wkt (p, 9, + "METER[\"central_meridian\",2.7],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 10, + "\",0.999625544],PARAMETER[\"false_easting\",500135],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",300090],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 13, + "H],AUTHORITY[\"EPSG\",\"30791\"]]"); + p = add_epsg_def (filter, first, last, 30792, "epsg", 30792, + "Nord Sahara 1959 / Sud Algerie"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.3 +lat_0=33.3 +lon_0=2.7 +k_0=0.9996"); + add_proj4text (p, 1, + "25769 +x_0=500135 +y_0=300090 +ellps=clrk80 +towgs84=-20"); + add_proj4text (p, 2, + "9.362,-87.8162,404.62,0.0046,3.4784,0.5805,-1.4547 +unit"); + add_proj4text (p, 3, + "s=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Nord Sahara 1959 / Sud Algerie\",GEOGCS[\"Nord "); + add_srs_wkt (p, 1, + "Sahara 1959\",DATUM[\"Nord_Sahara_1959\",SPHEROID[\"Clar"); + add_srs_wkt (p, 2, + "ke 1880 (RGS)\",6378249.145,293.465,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7012\"]],TOWGS84[-209.362,-87.8162,404.62,0.0046,3.4784,"); + add_srs_wkt (p, 4, + "0.5805,-1.4547],AUTHORITY[\"EPSG\",\"6307\"]],PRIMEM[\"G"); + add_srs_wkt (p, 5, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 6, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 7, + "ORITY[\"EPSG\",\"4307\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 8, + "_Conic_1SP\"],PARAMETER[\"latitude_of_origin\",33.3],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"central_meridian\",2.7],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 10, + "r\",0.999625769],PARAMETER[\"false_easting\",500135],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_northing\",300090],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 13, + "TH],AUTHORITY[\"EPSG\",\"30792\"]]"); + p = add_epsg_def (filter, first, last, 30800, "epsg", 30800, + "RT38 2.5 gon W (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15.80827777777778 +k=1 +x_0="); + add_proj4text (p, 1, + "1500000 +y_0=0 +ellps=bessel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"RT38 2.5 gon W (deprecated)\",GEOGCS[\"RT38\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Stockholm_1938\",SPHEROID[\"Bessel 1841\",6377397"); + add_srs_wkt (p, 2, + ".155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"6308\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\""); + add_srs_wkt (p, 4, + "EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4308\"]]"); + add_srs_wkt (p, 6, + ",PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"latitud"); + add_srs_wkt (p, 7, + "e_of_origin\",0],PARAMETER[\"central_meridian\",15.80827"); + add_srs_wkt (p, 8, + "777777778],PARAMETER[\"scale_factor\",1],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",1500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"30800\"]]"); + p = add_epsg_def (filter, first, last, 31028, "epsg", 31028, + "Yoff / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +units=m +no_"); + add_proj4text (p, 1, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Yoff / UTM zone 28N\",GEOGCS[\"Yoff\",DATUM[\"Y"); + add_srs_wkt (p, 1, + "off\",SPHEROID[\"Clarke 1880 (IGN)\",6378249.2,293.46602"); + add_srs_wkt (p, 2, + "12936265,AUTHORITY[\"EPSG\",\"7011\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"6310\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\""); + add_srs_wkt (p, 5, + "EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4310\"]],PROJECTI"); + add_srs_wkt (p, 6, + "ON[\"Transverse_Mercator\"],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 7, + "in\",0],PARAMETER[\"central_meridian\",-15],PARAMETER[\""); + add_srs_wkt (p, 8, + "scale_factor\",0.9996],PARAMETER[\"false_easting\",50000"); + add_srs_wkt (p, 9, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 10, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 11, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"31028\"]]"); + p = add_epsg_def (filter, first, last, 31121, "epsg", 31121, + "Zanderij / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=intl +towgs84=-265,120,-358,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Zanderij / UTM zone 21N\",GEOGCS[\"Zanderij\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Zanderij\",SPHEROID[\"International 1924\",637838"); + add_srs_wkt (p, 2, + "8,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-265,120,-35"); + add_srs_wkt (p, 3, + "8,0,0,0,0],AUTHORITY[\"EPSG\",\"6311\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4311\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 7, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",-57],PARAMETER[\"scale_factor\",0.9996],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 11, + "XIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"31121\"]]"); + p = add_epsg_def (filter, first, last, 31154, "epsg", 31154, + "Zanderij / TM 54 NW"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-54 +k=0.9996 +x_0=500000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=intl +towgs84=-265,120,-358,0,0,0,0 +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Zanderij / TM 54 NW\",GEOGCS[\"Zanderij\",DATUM"); + add_srs_wkt (p, 1, + "[\"Zanderij\",SPHEROID[\"International 1924\",6378388,29"); + add_srs_wkt (p, 2, + "7,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-265,120,-358,0,"); + add_srs_wkt (p, 3, + "0,0,0],AUTHORITY[\"EPSG\",\"6311\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4311\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"latitude_of_origin\",0],PARAMETER[\"central_meri"); + add_srs_wkt (p, 8, + "dian\",-54],PARAMETER[\"scale_factor\",0.9996],PARAMETER"); + add_srs_wkt (p, 9, + "[\"false_easting\",500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"31154\"]]"); + p = add_epsg_def (filter, first, last, 31170, "epsg", 31170, + "Zanderij / Suriname Old TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9996"); + add_proj4text (p, 1, + " +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0"); + add_proj4text (p, 2, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Zanderij / Suriname Old TM\",GEOGCS[\"Zanderij\""); + add_srs_wkt (p, 1, + ",DATUM[\"Zanderij\",SPHEROID[\"International 1924\",6378"); + add_srs_wkt (p, 2, + "388,297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-265,120,-"); + add_srs_wkt (p, 3, + "358,0,0,0,0],AUTHORITY[\"EPSG\",\"6311\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4311\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-55.68333333333333],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 9, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 11, + "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); + add_srs_wkt (p, 12, + "NORTH],AUTHORITY[\"EPSG\",\"31170\"]]"); + p = add_epsg_def (filter, first, last, 31171, "epsg", 31171, + "Zanderij / Suriname TM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-55.68333333333333 +k=0.9999"); + add_proj4text (p, 1, + " +x_0=500000 +y_0=0 +ellps=intl +towgs84=-265,120,-358,0"); + add_proj4text (p, 2, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Zanderij / Suriname TM\",GEOGCS[\"Zanderij\",DA"); + add_srs_wkt (p, 1, + "TUM[\"Zanderij\",SPHEROID[\"International 1924\",6378388"); + add_srs_wkt (p, 2, + ",297,AUTHORITY[\"EPSG\",\"7022\"]],TOWGS84[-265,120,-358"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6311\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4311\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central_"); + add_srs_wkt (p, 8, + "meridian\",-55.68333333333333],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9999],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"31171\"]]"); + p = add_epsg_def (filter, first, last, 31251, "epsg", 31251, + "MGI (Ferro) / Austria GK West Zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=-5000000"); + add_proj4text (p, 1, + " +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI (Ferro) / Austria GK West Zone\",GEOGCS[\"M"); + add_srs_wkt (p, 1, + "GI (Ferro)\",DATUM[\"Militar_Geographische_Institut_Ferr"); + add_srs_wkt (p, 2, + "o\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,480,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\",-17.6666"); + add_srs_wkt (p, 5, + "6666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",28],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",0],PARAMETER[\"false_northing\",-50"); + add_srs_wkt (p, 11, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"31251\"]]"); + p = add_epsg_def (filter, first, last, 31252, "epsg", 31252, + "MGI (Ferro) / Austria GK Central Zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=-5000000"); + add_proj4text (p, 1, + " +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI (Ferro) / Austria GK Central Zone\",GEOGCS["); + add_srs_wkt (p, 1, + "\"MGI (Ferro)\",DATUM[\"Militar_Geographische_Institut_F"); + add_srs_wkt (p, 2, + "erro\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,480,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\",-17.6"); + add_srs_wkt (p, 5, + "6666666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\"degre"); + add_srs_wkt (p, 6, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 7, + "HORITY[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 8, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 9, + "entral_meridian\",31],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",0],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"31252\"]]"); + p = add_epsg_def (filter, first, last, 31253, "epsg", 31253, + "MGI (Ferro) / Austria GK East Zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=-5000000"); + add_proj4text (p, 1, + " +ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +"); + add_proj4text (p, 2, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI (Ferro) / Austria GK East Zone\",GEOGCS[\"M"); + add_srs_wkt (p, 1, + "GI (Ferro)\",DATUM[\"Militar_Geographische_Institut_Ferr"); + add_srs_wkt (p, 2, + "o\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,480,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\",-17.6666"); + add_srs_wkt (p, 5, + "6666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",34],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",0],PARAMETER[\"false_northing\",-50"); + add_srs_wkt (p, 11, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"31253\"]]"); + p = add_epsg_def (filter, first, last, 31254, "epsg", 31254, + "MGI / Austria GK West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "0 +y_0=-5000000 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Austria GK West\",GEOGCS[\"MGI\",DATUM[\""); + add_srs_wkt (p, 1, + "Militar_Geographische_Institute\",SPHEROID[\"Bessel 1841"); + add_srs_wkt (p, 2, + "\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",10.33333333333333],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",0],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"31254\"]]"); + p = add_epsg_def (filter, first, last, 31255, "epsg", 31255, + "MGI / Austria GK Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "0 +y_0=-5000000 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Austria GK Central\",GEOGCS[\"MGI\",DATUM"); + add_srs_wkt (p, 1, + "[\"Militar_Geographische_Institute\",SPHEROID[\"Bessel 1"); + add_srs_wkt (p, 2, + "841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\""); + add_srs_wkt (p, 3, + "]],TOWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.42"); + add_srs_wkt (p, 4, + "32],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",13.33333333333333],PARAMETER[\"scale_factor\",1],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 12, + "],AUTHORITY[\"EPSG\",\"31255\"]]"); + p = add_epsg_def (filter, first, last, 31256, "epsg", 31256, + "MGI / Austria GK East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "0 +y_0=-5000000 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Austria GK East\",GEOGCS[\"MGI\",DATUM[\""); + add_srs_wkt (p, 1, + "Militar_Geographische_Institute\",SPHEROID[\"Bessel 1841"); + add_srs_wkt (p, 2, + "\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",16.33333333333333],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",0],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"31256\"]]"); + p = add_epsg_def (filter, first, last, 31257, "epsg", 31257, + "MGI / Austria GK M28"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "150000 +y_0=-5000000 +datum=hermannskogel +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Austria GK M28\",GEOGCS[\"MGI\",DATUM[\"M"); + add_srs_wkt (p, 1, + "ilitar_Geographische_Institute\",SPHEROID[\"Bessel 1841\""); + add_srs_wkt (p, 2, + ",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "0.33333333333333],PARAMETER[\"scale_factor\",1],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",150000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 12, + "],AUTHORITY[\"EPSG\",\"31257\"]]"); + p = add_epsg_def (filter, first, last, 31258, "epsg", 31258, + "MGI / Austria GK M31"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "450000 +y_0=-5000000 +datum=hermannskogel +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Austria GK M31\",GEOGCS[\"MGI\",DATUM[\"M"); + add_srs_wkt (p, 1, + "ilitar_Geographische_Institute\",SPHEROID[\"Bessel 1841\""); + add_srs_wkt (p, 2, + ",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "3.33333333333333],PARAMETER[\"scale_factor\",1],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",450000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 12, + "],AUTHORITY[\"EPSG\",\"31258\"]]"); + p = add_epsg_def (filter, first, last, 31259, "epsg", 31259, + "MGI / Austria GK M34"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "750000 +y_0=-5000000 +datum=hermannskogel +units=m +no_d"); + add_proj4text (p, 2, + "efs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Austria GK M34\",GEOGCS[\"MGI\",DATUM[\"M"); + add_srs_wkt (p, 1, + "ilitar_Geographische_Institute\",SPHEROID[\"Bessel 1841\""); + add_srs_wkt (p, 2, + ",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232],"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 5, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 6, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 7, + "4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "6.33333333333333],PARAMETER[\"scale_factor\",1],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",750000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",-5000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 12, + "],AUTHORITY[\"EPSG\",\"31259\"]]"); + p = add_epsg_def (filter, first, last, 31265, "epsg", 31265, + "MGI / 3-degree Gauss zone 5 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / 3-degree Gauss zone 5 (deprecated)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"MGI\",DATUM[\"Militar_Geographische_Institute\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137"); + add_srs_wkt (p, 4, + ",1.474,5.297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIME"); + add_srs_wkt (p, 5, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 6, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 7, + ",AUTHORITY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 8, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 9, + "[\"central_meridian\",15],PARAMETER[\"scale_factor\",1],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",5500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"31265\"]]"); + p = add_epsg_def (filter, first, last, 31266, "epsg", 31266, + "MGI / 3-degree Gauss zone 6 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=1 +x_0=6500000 +y_0=0 "); + add_proj4text (p, 1, + "+datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / 3-degree Gauss zone 6 (deprecated)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"MGI\",DATUM[\"Militar_Geographische_Institute\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137"); + add_srs_wkt (p, 4, + ",1.474,5.297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIME"); + add_srs_wkt (p, 5, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 6, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 7, + ",AUTHORITY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 8, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 9, + "[\"central_meridian\",18],PARAMETER[\"scale_factor\",1],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",6500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"31266\"]]"); + p = add_epsg_def (filter, first, last, 31267, "epsg", 31267, + "MGI / 3-degree Gauss zone 7 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=1 +x_0=7500000 +y_0=0 "); + add_proj4text (p, 1, + "+datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / 3-degree Gauss zone 7 (deprecated)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"MGI\",DATUM[\"Militar_Geographische_Institute\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137"); + add_srs_wkt (p, 4, + ",1.474,5.297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIME"); + add_srs_wkt (p, 5, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 6, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 7, + ",AUTHORITY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 8, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 9, + "[\"central_meridian\",21],PARAMETER[\"scale_factor\",1],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",7500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"31267\"]]"); + p = add_epsg_def (filter, first, last, 31268, "epsg", 31268, + "MGI / 3-degree Gauss zone 8 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=1 +x_0=8500000 +y_0=0 "); + add_proj4text (p, 1, + "+datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / 3-degree Gauss zone 8 (deprecated)\",GEOG"); + add_srs_wkt (p, 1, + "CS[\"MGI\",DATUM[\"Militar_Geographische_Institute\",SPH"); + add_srs_wkt (p, 2, + "EROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY["); + add_srs_wkt (p, 3, + "\"EPSG\",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137"); + add_srs_wkt (p, 4, + ",1.474,5.297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIME"); + add_srs_wkt (p, 5, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 6, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 7, + ",AUTHORITY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_M"); + add_srs_wkt (p, 8, + "ercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER"); + add_srs_wkt (p, 9, + "[\"central_meridian\",24],PARAMETER[\"scale_factor\",1],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",8500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"31268\"]]"); + p = add_epsg_def (filter, first, last, 31275, "epsg", 31275, + "MGI / Balkans zone 5 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9999 +x_0=5500000 +y"); + add_proj4text (p, 1, + "_0=0 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Balkans zone 5 (deprecated)\",GEOGCS[\"MG"); + add_srs_wkt (p, 1, + "I\",DATUM[\"Militar_Geographische_Institute\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137,1.474,5"); + add_srs_wkt (p, 4, + ".297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 5, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 6, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 7, + "TY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",15],PARAMETER[\"scale_factor\",0.9999],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",5500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"31275\"]]"); + p = add_epsg_def (filter, first, last, 31276, "epsg", 31276, + "MGI / Balkans zone 6 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=18 +k=0.9999 +x_0=6500000 +y"); + add_proj4text (p, 1, + "_0=0 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Balkans zone 6 (deprecated)\",GEOGCS[\"MG"); + add_srs_wkt (p, 1, + "I\",DATUM[\"Militar_Geographische_Institute\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137,1.474,5"); + add_srs_wkt (p, 4, + ".297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 5, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 6, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 7, + "TY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",18],PARAMETER[\"scale_factor\",0.9999],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",6500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"31276\"]]"); + p = add_epsg_def (filter, first, last, 31277, "epsg", 31277, + "MGI / Balkans zone 7 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y"); + add_proj4text (p, 1, + "_0=0 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Balkans zone 7 (deprecated)\",GEOGCS[\"MG"); + add_srs_wkt (p, 1, + "I\",DATUM[\"Militar_Geographische_Institute\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137,1.474,5"); + add_srs_wkt (p, 4, + ".297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 5, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 6, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 7, + "TY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",21],PARAMETER[\"scale_factor\",0.9999],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",7500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"31277\"]]"); + p = add_epsg_def (filter, first, last, 31278, "epsg", 31278, + "MGI / Balkans zone 8 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=21 +k=0.9999 +x_0=7500000 +y"); + add_proj4text (p, 1, + "_0=0 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Balkans zone 8 (deprecated)\",GEOGCS[\"MG"); + add_srs_wkt (p, 1, + "I\",DATUM[\"Militar_Geographische_Institute\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137,1.474,5"); + add_srs_wkt (p, 4, + ".297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 5, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 6, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 7, + "TY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",21],PARAMETER[\"scale_factor\",0.9999],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",7500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"31278\"]]"); + p = add_epsg_def (filter, first, last, 31279, "epsg", 31279, + "MGI / Balkans zone 8 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=24 +k=0.9999 +x_0=8500000 +y"); + add_proj4text (p, 1, + "_0=0 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Balkans zone 8 (deprecated)\",GEOGCS[\"MG"); + add_srs_wkt (p, 1, + "I\",DATUM[\"Militar_Geographische_Institute\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137,1.474,5"); + add_srs_wkt (p, 4, + ".297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 5, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 6, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 7, + "TY[\"EPSG\",\"4312\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 8, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 9, + "l_meridian\",24],PARAMETER[\"scale_factor\",0.9999],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",8500000],PARAMETER[\"false_north"); + add_srs_wkt (p, 11, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"31279\"]]"); + p = add_epsg_def (filter, first, last, 31281, "epsg", 31281, + "MGI (Ferro) / Austria West Zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps"); + add_proj4text (p, 1, + "=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI (Ferro) / Austria West Zone\",GEOGCS[\"MGI "); + add_srs_wkt (p, 1, + "(Ferro)\",DATUM[\"Militar_Geographische_Institut_Ferro\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,480,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\",-17.6666666"); + add_srs_wkt (p, 5, + "6666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",28],PARAMETER[\"scale_factor\",1],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"31281\"]]"); + p = add_epsg_def (filter, first, last, 31282, "epsg", 31282, + "MGI (Ferro) / Austria Central Zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps"); + add_proj4text (p, 1, + "=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI (Ferro) / Austria Central Zone\",GEOGCS[\"M"); + add_srs_wkt (p, 1, + "GI (Ferro)\",DATUM[\"Militar_Geographische_Institut_Ferr"); + add_srs_wkt (p, 2, + "o\",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUT"); + add_srs_wkt (p, 3, + "HORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,480,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\",-17.6666"); + add_srs_wkt (p, 5, + "6666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 8, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 9, + "ral_meridian\",31],PARAMETER[\"scale_factor\",1],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"31282\"]]"); + p = add_epsg_def (filter, first, last, 31283, "epsg", 31283, + "MGI (Ferro) / Austria East Zone"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps"); + add_proj4text (p, 1, + "=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI (Ferro) / Austria East Zone\",GEOGCS[\"MGI "); + add_srs_wkt (p, 1, + "(Ferro)\",DATUM[\"Militar_Geographische_Institut_Ferro\""); + add_srs_wkt (p, 2, + ",SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,480,0,0,0,0],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\",-17.6666666"); + add_srs_wkt (p, 5, + "6666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",34],PARAMETER[\"scale_factor\",1],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",0],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"31283\"]]"); + p = add_epsg_def (filter, first, last, 31284, "epsg", 31284, + "MGI / Austria M28"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "150000 +y_0=0 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Austria M28\",GEOGCS[\"MGI\",DATUM[\"Mili"); + add_srs_wkt (p, 1, + "tar_Geographische_Institute\",SPHEROID[\"Bessel 1841\",6"); + add_srs_wkt (p, 2, + "377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "0.33333333333333],PARAMETER[\"scale_factor\",1],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",150000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"31284\"]]"); + p = add_epsg_def (filter, first, last, 31285, "epsg", 31285, + "MGI / Austria M31"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "450000 +y_0=0 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Austria M31\",GEOGCS[\"MGI\",DATUM[\"Mili"); + add_srs_wkt (p, 1, + "tar_Geographische_Institute\",SPHEROID[\"Bessel 1841\",6"); + add_srs_wkt (p, 2, + "377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "3.33333333333333],PARAMETER[\"scale_factor\",1],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",450000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"31285\"]]"); + p = add_epsg_def (filter, first, last, 31286, "epsg", 31286, + "MGI / Austria M34"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "750000 +y_0=0 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Austria M34\",GEOGCS[\"MGI\",DATUM[\"Mili"); + add_srs_wkt (p, 1, + "tar_Geographische_Institute\",SPHEROID[\"Bessel 1841\",6"); + add_srs_wkt (p, 2, + "377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232],AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 5, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 6, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 7, + "312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",1"); + add_srs_wkt (p, 9, + "6.33333333333333],PARAMETER[\"scale_factor\",1],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",750000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"31286\"]]"); + p = add_epsg_def (filter, first, last, 31287, "epsg", 31287, + "MGI / Austria Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.3333"); + add_proj4text (p, 1, + "3333333333 +x_0=400000 +y_0=400000 +datum=hermannskogel "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Austria Lambert\",GEOGCS[\"MGI\",DATUM[\""); + add_srs_wkt (p, 1, + "Militar_Geographische_Institute\",SPHEROID[\"Bessel 1841"); + add_srs_wkt (p, 2, + "\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4312\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 8, + "PARAMETER[\"standard_parallel_1\",49],PARAMETER[\"standa"); + add_srs_wkt (p, 9, + "rd_parallel_2\",46],PARAMETER[\"latitude_of_origin\",47."); + add_srs_wkt (p, 10, + "5],PARAMETER[\"central_meridian\",13.33333333333333],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",400000],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",400000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001"); + add_srs_wkt (p, 13, + "\"]],AUTHORITY[\"EPSG\",\"31287\"]]"); + p = add_epsg_def (filter, first, last, 31288, "epsg", 31288, + "MGI (Ferro) / M28"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=150000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI (Ferro) / M28\",GEOGCS[\"MGI (Ferro)\",DATU"); + add_srs_wkt (p, 1, + "M[\"Militar_Geographische_Institut_Ferro\",SPHEROID[\"Be"); + add_srs_wkt (p, 2, + "ssel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7004\"]],TOWGS84[682,-203,480,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6805\"]],PRIMEM[\"Ferro\",-17.66666666666667,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8909\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4805"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",28],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",150000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"312"); + add_srs_wkt (p, 12, + "88\"]]"); + p = add_epsg_def (filter, first, last, 31289, "epsg", 31289, + "MGI (Ferro) / M31"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=450000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI (Ferro) / M31\",GEOGCS[\"MGI (Ferro)\",DATU"); + add_srs_wkt (p, 1, + "M[\"Militar_Geographische_Institut_Ferro\",SPHEROID[\"Be"); + add_srs_wkt (p, 2, + "ssel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7004\"]],TOWGS84[682,-203,480,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6805\"]],PRIMEM[\"Ferro\",-17.66666666666667,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8909\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4805"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",31],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",450000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"312"); + add_srs_wkt (p, 12, + "89\"]]"); + p = add_epsg_def (filter, first, last, 31290, "epsg", 31290, + "MGI (Ferro) / M34"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=750000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +un"); + add_proj4text (p, 2, + "its=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI (Ferro) / M34\",GEOGCS[\"MGI (Ferro)\",DATU"); + add_srs_wkt (p, 1, + "M[\"Militar_Geographische_Institut_Ferro\",SPHEROID[\"Be"); + add_srs_wkt (p, 2, + "ssel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7004\"]],TOWGS84[682,-203,480,0,0,0,0],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 4, + ",\"6805\"]],PRIMEM[\"Ferro\",-17.66666666666667,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8909\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4805"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 8, + "itude_of_origin\",0],PARAMETER[\"central_meridian\",34],"); + add_srs_wkt (p, 9, + "PARAMETER[\"scale_factor\",1],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",750000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 11, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"312"); + add_srs_wkt (p, 12, + "90\"]]"); + p = add_epsg_def (filter, first, last, 31291, "epsg", 31291, + "MGI (Ferro) / Austria West Zone (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=28 +k=1 +x_0=0 +y_0=0 +ellps"); + add_proj4text (p, 1, + "=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI (Ferro) / Austria West Zone (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"MGI (Ferro)\",DATUM[\"Militar_Geographische_Ins"); + add_srs_wkt (p, 2, + "titut_Ferro\",SPHEROID[\"Bessel 1841\",6377397.155,299.1"); + add_srs_wkt (p, 3, + "528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,48"); + add_srs_wkt (p, 4, + "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\""); + add_srs_wkt (p, 5, + ",-17.66666666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\""); + add_srs_wkt (p, 6, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 7, + "],AUTHORITY[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 8, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"central_meridian\",28],PARAMETER[\"scale_factor\",1]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_easting\",0],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 12, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "1291\"]]"); + p = add_epsg_def (filter, first, last, 31292, "epsg", 31292, + "MGI (Ferro) / Austria Central Zone (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=31 +k=1 +x_0=0 +y_0=0 +ellps"); + add_proj4text (p, 1, + "=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI (Ferro) / Austria Central Zone (deprecated)"); + add_srs_wkt (p, 1, + "\",GEOGCS[\"MGI (Ferro)\",DATUM[\"Militar_Geographische_"); + add_srs_wkt (p, 2, + "Institut_Ferro\",SPHEROID[\"Bessel 1841\",6377397.155,29"); + add_srs_wkt (p, 3, + "9.1528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203"); + add_srs_wkt (p, 4, + ",480,0,0,0,0],AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Fer"); + add_srs_wkt (p, 5, + "ro\",-17.66666666666667,AUTHORITY[\"EPSG\",\"8909\"]],UN"); + add_srs_wkt (p, 6, + "IT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"91"); + add_srs_wkt (p, 7, + "22\"]],AUTHORITY[\"EPSG\",\"4805\"]],PROJECTION[\"Transv"); + add_srs_wkt (p, 8, + "erse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"central_meridian\",31],PARAMETER[\"scale_factor"); + add_srs_wkt (p, 10, + "\",1],PARAMETER[\"false_easting\",0],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 12, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"31292\"]]"); + p = add_epsg_def (filter, first, last, 31293, "epsg", 31293, + "MGI (Ferro) / Austria East Zone (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=34 +k=1 +x_0=0 +y_0=0 +ellps"); + add_proj4text (p, 1, + "=bessel +towgs84=682,-203,480,0,0,0,0 +pm=ferro +units=m"); + add_proj4text (p, 2, + " +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI (Ferro) / Austria East Zone (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"MGI (Ferro)\",DATUM[\"Militar_Geographische_Ins"); + add_srs_wkt (p, 2, + "titut_Ferro\",SPHEROID[\"Bessel 1841\",6377397.155,299.1"); + add_srs_wkt (p, 3, + "528128,AUTHORITY[\"EPSG\",\"7004\"]],TOWGS84[682,-203,48"); + add_srs_wkt (p, 4, + "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6805\"]],PRIMEM[\"Ferro\""); + add_srs_wkt (p, 5, + ",-17.66666666666667,AUTHORITY[\"EPSG\",\"8909\"]],UNIT[\""); + add_srs_wkt (p, 6, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 7, + "],AUTHORITY[\"EPSG\",\"4805\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 8, + "Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"central_meridian\",34],PARAMETER[\"scale_factor\",1]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_easting\",0],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 12, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "1293\"]]"); + p = add_epsg_def (filter, first, last, 31294, "epsg", 31294, + "MGI / M28 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=10.33333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "150000 +y_0=0 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / M28 (deprecated)\",GEOGCS[\"MGI\",DATUM[\""); + add_srs_wkt (p, 1, + "Militar_Geographische_Institute\",SPHEROID[\"Bessel 1841"); + add_srs_wkt (p, 2, + "\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",10.33333333333333],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",150000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 12, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "1294\"]]"); + p = add_epsg_def (filter, first, last, 31295, "epsg", 31295, + "MGI / M31 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=13.33333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "450000 +y_0=0 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / M31 (deprecated)\",GEOGCS[\"MGI\",DATUM[\""); + add_srs_wkt (p, 1, + "Militar_Geographische_Institute\",SPHEROID[\"Bessel 1841"); + add_srs_wkt (p, 2, + "\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",13.33333333333333],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",450000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 12, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "1295\"]]"); + p = add_epsg_def (filter, first, last, 31296, "epsg", 31296, + "MGI / M34 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=16.33333333333333 +k=1 +x_0="); + add_proj4text (p, 1, + "750000 +y_0=0 +datum=hermannskogel +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / M34 (deprecated)\",GEOGCS[\"MGI\",DATUM[\""); + add_srs_wkt (p, 1, + "Militar_Geographische_Institute\",SPHEROID[\"Bessel 1841"); + add_srs_wkt (p, 2, + "\",6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]]"); + add_srs_wkt (p, 3, + ",TOWGS84[577.326,90.129,463.919,5.137,1.474,5.297,2.4232"); + add_srs_wkt (p, 4, + "],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 5, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 6, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 7, + ",\"4312\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 8, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 9, + "\",16.33333333333333],PARAMETER[\"scale_factor\",1],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_easting\",750000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 11, + "ng\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 12, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 13, + "1296\"]]"); + p = add_epsg_def (filter, first, last, 31297, "epsg", 31297, + "MGI / Austria Lambert (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=46 +lat_0=47.5 +lon_0=13.3333"); + add_proj4text (p, 1, + "3333333333 +x_0=400000 +y_0=400000 +datum=hermannskogel "); + add_proj4text (p, 2, + "+units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"MGI / Austria Lambert (deprecated)\",GEOGCS[\"M"); + add_srs_wkt (p, 1, + "GI\",DATUM[\"Militar_Geographische_Institute\",SPHEROID["); + add_srs_wkt (p, 2, + "\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7004\"]],TOWGS84[577.326,90.129,463.919,5.137,1.474"); + add_srs_wkt (p, 4, + ",5.297,2.4232],AUTHORITY[\"EPSG\",\"6312\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 5, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4312\"]],PROJECTION[\"Lambert_Conformal_C"); + add_srs_wkt (p, 8, + "onic_2SP\"],PARAMETER[\"standard_parallel_1\",49],PARAME"); + add_srs_wkt (p, 9, + "TER[\"standard_parallel_2\",46],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 10, + "origin\",47.5],PARAMETER[\"central_meridian\",13.3333333"); + add_srs_wkt (p, 11, + "3333333],PARAMETER[\"false_easting\",400000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",400000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 14, + "RITY[\"EPSG\",\"31297\"]]"); + p = add_epsg_def (filter, first, last, 31300, "epsg", 31300, + "Belge 1972 / Belge Lambert 72"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49.83333333333334 +lat_2=51.16666666666"); + add_proj4text (p, 1, + "666 +lat_0=90 +lon_0=4.356939722222222 +x_0=150000.01256"); + add_proj4text (p, 2, + " +y_0=5400088.4378 +ellps=intl +towgs84=-106.869,52.2978"); + add_proj4text (p, 3, + ",-103.724,0.3366,-0.457,1.8422,-1.2747 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Belge 1972 / Belge Lambert 72\",GEOGCS[\"Belge "); + add_srs_wkt (p, 1, + "1972\",DATUM[\"Reseau_National_Belge_1972\",SPHEROID[\"I"); + add_srs_wkt (p, 2, + "nternational 1924\",6378388,297,AUTHORITY[\"EPSG\",\"702"); + add_srs_wkt (p, 3, + "2\"]],TOWGS84[-106.869,52.2978,-103.724,0.3366,-0.457,1."); + add_srs_wkt (p, 4, + "8422,-1.2747],AUTHORITY[\"EPSG\",\"6313\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 5, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4313\"]],PROJECTION[\"Lambert_Conformal_C"); + add_srs_wkt (p, 8, + "onic_2SP_Belgium\"],PARAMETER[\"standard_parallel_1\",49"); + add_srs_wkt (p, 9, + ".83333333333334],PARAMETER[\"standard_parallel_2\",51.16"); + add_srs_wkt (p, 10, + "666666666666],PARAMETER[\"latitude_of_origin\",90],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"central_meridian\",4.356939722222222],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_easting\",150000.01256],PARAMETER[\"false_northing"); + add_srs_wkt (p, 13, + "\",5400088.4378],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 14, + "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 15, + "PSG\",\"31300\"]]"); + p = add_epsg_def (filter, first, last, 31370, "epsg", 31370, + "Belge 1972 / Belgian Lambert 72"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=51.16666723333333 +lat_2=49.8333339 +la"); + add_proj4text (p, 1, + "t_0=90 +lon_0=4.367486666666666 +x_0=150000.013 +y_0=540"); + add_proj4text (p, 2, + "0088.438 +ellps=intl +towgs84=-106.869,52.2978,-103.724,"); + add_proj4text (p, 3, + "0.3366,-0.457,1.8422,-1.2747 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Belge 1972 / Belgian Lambert 72\",GEOGCS[\"Belg"); + add_srs_wkt (p, 1, + "e 1972\",DATUM[\"Reseau_National_Belge_1972\",SPHEROID[\""); + add_srs_wkt (p, 2, + "International 1924\",6378388,297,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "22\"]],TOWGS84[-106.869,52.2978,-103.724,0.3366,-0.457,1"); + add_srs_wkt (p, 4, + ".8422,-1.2747],AUTHORITY[\"EPSG\",\"6313\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 5, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 6, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 7, + "ITY[\"EPSG\",\"4313\"]],PROJECTION[\"Lambert_Conformal_C"); + add_srs_wkt (p, 8, + "onic_2SP\"],PARAMETER[\"standard_parallel_1\",51.1666672"); + add_srs_wkt (p, 9, + "3333333],PARAMETER[\"standard_parallel_2\",49.8333339],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"latitude_of_origin\",90],PARAMETER[\"central_"); + add_srs_wkt (p, 11, + "meridian\",4.367486666666666],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 12, + ",150000.013],PARAMETER[\"false_northing\",5400088.438],U"); + add_srs_wkt (p, 13, + "NIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 14, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"31370\"]]"); + p = add_epsg_def (filter, first, last, 31461, "epsg", 31461, + "DHDN / 3-degree Gauss zone 1 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=3 +k=1 +x_0=1500000 +y_0=0 +"); + add_proj4text (p, 1, + "datum=potsdam +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / 3-degree Gauss zone 1 (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-"); + add_srs_wkt (p, 4, + "2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",3],PARAMETER[\"scale_factor\",1],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",1500000],PARAMETER[\"false_northing\",0]"); + add_srs_wkt (p, 11, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"31461\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 31462, "epsg", 31462, + "DHDN / 3-degree Gauss zone 2 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +"); + add_proj4text (p, 1, + "datum=potsdam +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / 3-degree Gauss zone 2 (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-"); + add_srs_wkt (p, 4, + "2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",6],PARAMETER[\"scale_factor\",1],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",2500000],PARAMETER[\"false_northing\",0]"); + add_srs_wkt (p, 11, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"31462\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 31463, "epsg", 31463, + "DHDN / 3-degree Gauss zone 3 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); + add_proj4text (p, 1, + "datum=potsdam +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / 3-degree Gauss zone 3 (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-"); + add_srs_wkt (p, 4, + "2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",9],PARAMETER[\"scale_factor\",1],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",3500000],PARAMETER[\"false_northing\",0]"); + add_srs_wkt (p, 11, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"31463\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 31464, "epsg", 31464, + "DHDN / 3-degree Gauss zone 4 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+datum=potsdam +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / 3-degree Gauss zone 4 (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-"); + add_srs_wkt (p, 4, + "2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",12],PARAMETER[\"scale_factor\",1],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",4500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"31464\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 31465, "epsg", 31465, + "DHDN / 3-degree Gauss zone 5 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+datum=potsdam +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / 3-degree Gauss zone 5 (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-"); + add_srs_wkt (p, 4, + "2.455,6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 5, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 6, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 7, + "[\"EPSG\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"central"); + add_srs_wkt (p, 9, + "_meridian\",15],PARAMETER[\"scale_factor\",1],PARAMETER["); + add_srs_wkt (p, 10, + "\"false_easting\",5500000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 11, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 12, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"31465\""); + add_srs_wkt (p, 13, + "]]"); + p = add_epsg_def (filter, first, last, 31466, "epsg", 31466, + "DHDN / 3-degree Gauss-Kruger zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=6 +k=1 +x_0=2500000 +y_0=0 +"); + add_proj4text (p, 1, + "datum=potsdam +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / 3-degree Gauss-Kruger zone 2\",GEOGCS[\""); + add_srs_wkt (p, 1, + "DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,"); + add_srs_wkt (p, 4, + "6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 9, + "ian\",6],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",2500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 11, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"31466\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_41.c b/src/spatialite/src/srsinit/epsg_inlined_41.c new file mode 100644 index 0000000..8d66ab2 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_41.c @@ -0,0 +1,3600 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_41 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 31467, "epsg", 31467, + "DHDN / 3-degree Gauss-Kruger zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=1 +x_0=3500000 +y_0=0 +"); + add_proj4text (p, 1, + "datum=potsdam +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / 3-degree Gauss-Kruger zone 3\",GEOGCS[\""); + add_srs_wkt (p, 1, + "DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,"); + add_srs_wkt (p, 4, + "6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 9, + "ian\",9],PARAMETER[\"scale_factor\",1],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",3500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 11, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"31467\"]]"); + p = add_epsg_def (filter, first, last, 31468, "epsg", 31468, + "DHDN / 3-degree Gauss-Kruger zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=12 +k=1 +x_0=4500000 +y_0=0 "); + add_proj4text (p, 1, + "+datum=potsdam +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / 3-degree Gauss-Kruger zone 4\",GEOGCS[\""); + add_srs_wkt (p, 1, + "DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,"); + add_srs_wkt (p, 4, + "6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 9, + "ian\",12],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",4500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"31468\"]]"); + p = add_epsg_def (filter, first, last, 31469, "epsg", 31469, + "DHDN / 3-degree Gauss-Kruger zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=1 +x_0=5500000 +y_0=0 "); + add_proj4text (p, 1, + "+datum=potsdam +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"DHDN / 3-degree Gauss-Kruger zone 5\",GEOGCS[\""); + add_srs_wkt (p, 1, + "DHDN\",DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\""); + add_srs_wkt (p, 2, + "Bessel 1841\",6377397.155,299.1528128,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7004\"]],TOWGS84[598.1,73.7,418.2,0.202,0.045,-2.455,"); + add_srs_wkt (p, 4, + "6.7],AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 5, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 6, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 7, + "G\",\"4314\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 9, + "ian\",15],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",5500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"31469\"]]"); + p = add_epsg_def (filter, first, last, 31528, "epsg", 31528, + "Conakry 1905 / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +a=6378249.2 +b=6356515 +towgs84=-23,"); + add_proj4text (p, 1, + "259,-9,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Conakry 1905 / UTM zone 28N\",GEOGCS[\"Conakry "); + add_srs_wkt (p, 1, + "1905\",DATUM[\"Conakry_1905\",SPHEROID[\"Clarke 1880 (IG"); + add_srs_wkt (p, 2, + "N)\",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "11\"]],TOWGS84[-23,259,-9,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6315\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4315\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-15],PARAMETER[\"scal"); + add_srs_wkt (p, 9, + "e_factor\",0.9996],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 12, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"31528\"]]"); + p = add_epsg_def (filter, first, last, 31529, "epsg", 31529, + "Conakry 1905 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +a=6378249.2 +b=6356515 +towgs84=-23,"); + add_proj4text (p, 1, + "259,-9,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Conakry 1905 / UTM zone 29N\",GEOGCS[\"Conakry "); + add_srs_wkt (p, 1, + "1905\",DATUM[\"Conakry_1905\",SPHEROID[\"Clarke 1880 (IG"); + add_srs_wkt (p, 2, + "N)\",6378249.2,293.4660212936265,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "11\"]],TOWGS84[-23,259,-9,0,0,0,0],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 4, + "6315\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"890"); + add_srs_wkt (p, 5, + "1\"]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"9122\"]],AUTHORITY[\"EPSG\",\"4315\"]],PROJECTION["); + add_srs_wkt (p, 7, + "\"Transverse_Mercator\"],PARAMETER[\"latitude_of_origin\""); + add_srs_wkt (p, 8, + ",0],PARAMETER[\"central_meridian\",-9],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9996],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"North"); + add_srs_wkt (p, 12, + "ing\",NORTH],AUTHORITY[\"EPSG\",\"31529\"]]"); + p = add_epsg_def (filter, first, last, 31600, "epsg", 31600, + "Dealul Piscului 1930 / Stereo 33"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=45.9 +lon_0=25.39246588888889 +k=0.9"); + add_proj4text (p, 1, + "996667 +x_0=500000 +y_0=500000 +ellps=intl +towgs84=103."); + add_proj4text (p, 2, + "25,-100.4,-307.19,0,0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Dealul Piscului 1930 / Stereo 33\",GEOGCS[\"Dea"); + add_srs_wkt (p, 1, + "lul Piscului 1930\",DATUM[\"Dealul_Piscului_1930\",SPHER"); + add_srs_wkt (p, 2, + "OID[\"International 1924\",6378388,297,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 3, + ",\"7022\"]],TOWGS84[103.25,-100.4,-307.19,0,0,0,0],AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"6316\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 5, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4316"); + add_srs_wkt (p, 7, + "\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER[\"l"); + add_srs_wkt (p, 8, + "atitude_of_origin\",45.9],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",25.39246588888889],PARAMETER[\"scale_factor\",0.9996667"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",500000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"31600\"]]"); + p = add_epsg_def (filter, first, last, 31700, "epsg", 31700, + "Dealul Piscului 1970/ Stereo 70 (deprecated)"); + add_proj4text (p, 0, + "+proj=sterea +lat_0=46 +lon_0=25 +k=0.99975 +x_0=500000 "); + add_proj4text (p, 1, + "+y_0=500000 +ellps=krass +towgs84=28,-121,-77,0,0,0,0 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"Dealul Piscului 1970/ Stereo 70 (deprecated)\","); + add_srs_wkt (p, 1, + "GEOGCS[\"Dealul Piscului 1970\",DATUM[\"Dealul_Piscului_"); + add_srs_wkt (p, 2, + "1970\",SPHEROID[\"Krassowsky 1940\",6378245,298.3,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"7024\"]],TOWGS84[28,-121,-77,0,0,0,0],AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"6317\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 5, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 6, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"43"); + add_srs_wkt (p, 7, + "17\"]],PROJECTION[\"Oblique_Stereographic\"],PARAMETER[\""); + add_srs_wkt (p, 8, + "latitude_of_origin\",46],PARAMETER[\"central_meridian\","); + add_srs_wkt (p, 9, + "25],PARAMETER[\"scale_factor\",0.99975],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_easting\",500000],PARAMETER[\"false_northing\",500000]"); + add_srs_wkt (p, 11, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"31700\"]]"); + p = add_epsg_def (filter, first, last, 31838, "epsg", 31838, + "NGN / UTM zone 38N"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0"); + add_proj4text (p, 1, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NGN / UTM zone 38N\",GEOGCS[\"NGN\",DATUM[\"Nat"); + add_srs_wkt (p, 1, + "ional_Geodetic_Network\",SPHEROID[\"WGS 84\",6378137,298"); + add_srs_wkt (p, 2, + ".257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[-3.2,-5"); + add_srs_wkt (p, 3, + ".7,2.8,0,0,0,0],AUTHORITY[\"EPSG\",\"6318\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4318\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",45],PARAMETER[\"scale_factor\",0.9996],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",500000],PARAMETER[\"false_no"); + add_srs_wkt (p, 10, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"31838\"]]"); + p = add_epsg_def (filter, first, last, 31839, "epsg", 31839, + "NGN / UTM zone 39N"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=WGS84 +towgs84=-3.2,-5.7,2.8,0"); + add_proj4text (p, 1, + ",0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NGN / UTM zone 39N\",GEOGCS[\"NGN\",DATUM[\"Nat"); + add_srs_wkt (p, 1, + "ional_Geodetic_Network\",SPHEROID[\"WGS 84\",6378137,298"); + add_srs_wkt (p, 2, + ".257223563,AUTHORITY[\"EPSG\",\"7030\"]],TOWGS84[-3.2,-5"); + add_srs_wkt (p, 3, + ".7,2.8,0,0,0,0],AUTHORITY[\"EPSG\",\"6318\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4318\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",51],PARAMETER[\"scale_factor\",0.9996],"); + add_srs_wkt (p, 9, + "PARAMETER[\"false_easting\",500000],PARAMETER[\"false_no"); + add_srs_wkt (p, 10, + "rthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"31839\"]]"); + p = add_epsg_def (filter, first, last, 31900, "epsg", 31900, + "KUDAMS / KTM (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=48 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=GRS80 +towgs84=-20.8,11.3,2.4,0,0,0,0 +units="); + add_proj4text (p, 2, + "m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"KUDAMS / KTM (deprecated)\",GEOGCS[\"KUDAMS\",D"); + add_srs_wkt (p, 1, + "ATUM[\"Kuwait_Utility\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 2, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[-20.8,"); + add_srs_wkt (p, 3, + "11.3,2.4,0,0,0,0],AUTHORITY[\"EPSG\",\"6319\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4319\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",48],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",500000],PARAMETER[\"false_n"); + add_srs_wkt (p, 10, + "orthing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\""); + add_srs_wkt (p, 11, + "]],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"31900\"]]"); + p = add_epsg_def (filter, first, last, 31901, "epsg", 31901, + "KUDAMS / KTM"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=48 +k=1 +x_0=500000 +y_0=0 +"); + add_proj4text (p, 1, + "ellps=GRS80 +towgs84=-20.8,11.3,2.4,0,0,0,0 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"KUDAMS / KTM\",GEOGCS[\"KUDAMS\",DATUM[\"Kuwait"); + add_srs_wkt (p, 1, + "_Utility\",SPHEROID[\"GRS 1980\",6378137,298.257222101,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7019\"]],TOWGS84[-20.8,11.3,2.4,0,0,"); + add_srs_wkt (p, 3, + "0,0],AUTHORITY[\"EPSG\",\"6319\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4319\"]],PROJECTION[\"Transverse_Mercator\"],PARAM"); + add_srs_wkt (p, 7, + "ETER[\"latitude_of_origin\",0],PARAMETER[\"central_merid"); + add_srs_wkt (p, 8, + "ian\",48],PARAMETER[\"scale_factor\",1],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "31901\"]]"); + p = add_epsg_def (filter, first, last, 31965, "epsg", 31965, + "SIRGAS 2000 / UTM zone 11N"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 11N\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 12, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"31965\"]]"); + p = add_epsg_def (filter, first, last, 31966, "epsg", 31966, + "SIRGAS 2000 / UTM zone 12N"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 12N\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 12, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"31966\"]]"); + p = add_epsg_def (filter, first, last, 31967, "epsg", 31967, + "SIRGAS 2000 / UTM zone 13N"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 13N\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 11, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 12, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 13, + "\"31967\"]]"); + p = add_epsg_def (filter, first, last, 31968, "epsg", 31968, + "SIRGAS 2000 / UTM zone 14N"); + add_proj4text (p, 0, + "+proj=utm +zone=14 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 14N\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-99],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "31968\"]]"); + p = add_epsg_def (filter, first, last, 31969, "epsg", 31969, + "SIRGAS 2000 / UTM zone 15N"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 15N\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-93],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "31969\"]]"); + p = add_epsg_def (filter, first, last, 31970, "epsg", 31970, + "SIRGAS 2000 / UTM zone 16N"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 16N\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-87],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "31970\"]]"); + p = add_epsg_def (filter, first, last, 31971, "epsg", 31971, + "SIRGAS 2000 / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 17N\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "31971\"]]"); + p = add_epsg_def (filter, first, last, 31972, "epsg", 31972, + "SIRGAS 2000 / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 18N\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "31972\"]]"); + p = add_epsg_def (filter, first, last, 31973, "epsg", 31973, + "SIRGAS 2000 / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 19N\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "31973\"]]"); + p = add_epsg_def (filter, first, last, 31974, "epsg", 31974, + "SIRGAS 2000 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 20N\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "31974\"]]"); + p = add_epsg_def (filter, first, last, 31975, "epsg", 31975, + "SIRGAS 2000 / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 21N\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "31975\"]]"); + p = add_epsg_def (filter, first, last, 31976, "epsg", 31976, + "SIRGAS 2000 / UTM zone 22N"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 22N\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 11, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 12, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "31976\"]]"); + p = add_epsg_def (filter, first, last, 31977, "epsg", 31977, + "SIRGAS 2000 / UTM zone 17S"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 17S\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"31977\"]]"); + p = add_epsg_def (filter, first, last, 31978, "epsg", 31978, + "SIRGAS 2000 / UTM zone 18S"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 18S\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"31978\"]]"); + p = add_epsg_def (filter, first, last, 31979, "epsg", 31979, + "SIRGAS 2000 / UTM zone 19S"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 19S\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"31979\"]]"); + p = add_epsg_def (filter, first, last, 31980, "epsg", 31980, + "SIRGAS 2000 / UTM zone 20S"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 20S\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"31980\"]]"); + p = add_epsg_def (filter, first, last, 31981, "epsg", 31981, + "SIRGAS 2000 / UTM zone 21S"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 21S\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"31981\"]]"); + p = add_epsg_def (filter, first, last, 31982, "epsg", 31982, + "SIRGAS 2000 / UTM zone 22S"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 22S\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"31982\"]]"); + p = add_epsg_def (filter, first, last, 31983, "epsg", 31983, + "SIRGAS 2000 / UTM zone 23S"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 23S\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"31983\"]]"); + p = add_epsg_def (filter, first, last, 31984, "epsg", 31984, + "SIRGAS 2000 / UTM zone 24S"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 24S\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"31984\"]]"); + p = add_epsg_def (filter, first, last, 31985, "epsg", 31985, + "SIRGAS 2000 / UTM zone 25S"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 2000 / UTM zone 25S\",GEOGCS[\"SIRGAS 20"); + add_srs_wkt (p, 1, + "00\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_las_"); + add_srs_wkt (p, 2, + "AmericaS_2000\",SPHEROID[\"GRS 1980\",6378137,298.257222"); + add_srs_wkt (p, 3, + "101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0,0]"); + add_srs_wkt (p, 4, + ",AUTHORITY[\"EPSG\",\"6674\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 5, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 6, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 7, + "\"4674\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 8, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 9, + ",-33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 11, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"31985\"]]"); + p = add_epsg_def (filter, first, last, 31986, "epsg", 31986, + "SIRGAS 1995 / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 1995 / UTM zone 17N\",GEOGCS[\"SIRGAS 19"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); + add_srs_wkt (p, 2, + "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 12, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"31986\"]]"); + p = add_epsg_def (filter, first, last, 31987, "epsg", 31987, + "SIRGAS 1995 / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 1995 / UTM zone 18N\",GEOGCS[\"SIRGAS 19"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); + add_srs_wkt (p, 2, + "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 12, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"31987\"]]"); + p = add_epsg_def (filter, first, last, 31988, "epsg", 31988, + "SIRGAS 1995 / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 1995 / UTM zone 19N\",GEOGCS[\"SIRGAS 19"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); + add_srs_wkt (p, 2, + "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 12, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"31988\"]]"); + p = add_epsg_def (filter, first, last, 31989, "epsg", 31989, + "SIRGAS 1995 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 1995 / UTM zone 20N\",GEOGCS[\"SIRGAS 19"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); + add_srs_wkt (p, 2, + "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 12, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"31989\"]]"); + p = add_epsg_def (filter, first, last, 31990, "epsg", 31990, + "SIRGAS 1995 / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 1995 / UTM zone 21N\",GEOGCS[\"SIRGAS 19"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); + add_srs_wkt (p, 2, + "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 12, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"31990\"]]"); + p = add_epsg_def (filter, first, last, 31991, "epsg", 31991, + "SIRGAS 1995 / UTM zone 22N"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +"); + add_proj4text (p, 1, + "units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 1995 / UTM zone 22N\",GEOGCS[\"SIRGAS 19"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); + add_srs_wkt (p, 2, + "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 11, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Ea"); + add_srs_wkt (p, 12, + "sting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"31991\"]]"); + p = add_epsg_def (filter, first, last, 31992, "epsg", 31992, + "SIRGAS 1995 / UTM zone 17S"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 1995 / UTM zone 17S\",GEOGCS[\"SIRGAS 19"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); + add_srs_wkt (p, 2, + "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 11, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"31992\"]]"); + p = add_epsg_def (filter, first, last, 31993, "epsg", 31993, + "SIRGAS 1995 / UTM zone 18S"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 1995 / UTM zone 18S\",GEOGCS[\"SIRGAS 19"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); + add_srs_wkt (p, 2, + "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 11, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"31993\"]]"); + p = add_epsg_def (filter, first, last, 31994, "epsg", 31994, + "SIRGAS 1995 / UTM zone 19S"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 1995 / UTM zone 19S\",GEOGCS[\"SIRGAS 19"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); + add_srs_wkt (p, 2, + "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 11, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"31994\"]]"); + p = add_epsg_def (filter, first, last, 31995, "epsg", 31995, + "SIRGAS 1995 / UTM zone 20S"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 1995 / UTM zone 20S\",GEOGCS[\"SIRGAS 19"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); + add_srs_wkt (p, 2, + "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 11, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"31995\"]]"); + p = add_epsg_def (filter, first, last, 31996, "epsg", 31996, + "SIRGAS 1995 / UTM zone 21S"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 1995 / UTM zone 21S\",GEOGCS[\"SIRGAS 19"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); + add_srs_wkt (p, 2, + "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 11, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"31996\"]]"); + p = add_epsg_def (filter, first, last, 31997, "epsg", 31997, + "SIRGAS 1995 / UTM zone 22S"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 1995 / UTM zone 22S\",GEOGCS[\"SIRGAS 19"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); + add_srs_wkt (p, 2, + "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 11, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"31997\"]]"); + p = add_epsg_def (filter, first, last, 31998, "epsg", 31998, + "SIRGAS 1995 / UTM zone 23S"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 1995 / UTM zone 23S\",GEOGCS[\"SIRGAS 19"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); + add_srs_wkt (p, 2, + "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 11, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"31998\"]]"); + p = add_epsg_def (filter, first, last, 31999, "epsg", 31999, + "SIRGAS 1995 / UTM zone 24S"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 1995 / UTM zone 24S\",GEOGCS[\"SIRGAS 19"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); + add_srs_wkt (p, 2, + "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 11, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"31999\"]]"); + p = add_epsg_def (filter, first, last, 32000, "epsg", 32000, + "SIRGAS 1995 / UTM zone 25S"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +south +ellps=GRS80 +towgs84=0,0,0,0,"); + add_proj4text (p, 1, + "0,0,0 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"SIRGAS 1995 / UTM zone 25S\",GEOGCS[\"SIRGAS 19"); + add_srs_wkt (p, 1, + "95\",DATUM[\"Sistema_de_Referencia_Geocentrico_para_Amer"); + add_srs_wkt (p, 2, + "ica_del_Sur_1995\",SPHEROID[\"GRS 1980\",6378137,298.257"); + add_srs_wkt (p, 3, + "222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,0,0,0"); + add_srs_wkt (p, 4, + ",0],AUTHORITY[\"EPSG\",\"6170\"]],PRIMEM[\"Greenwich\",0"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532"); + add_srs_wkt (p, 6, + "925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 7, + "\",\"4170\"]],PROJECTION[\"Transverse_Mercator\"],PARAME"); + add_srs_wkt (p, 8, + "TER[\"latitude_of_origin\",0],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 9, + "an\",-33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_easting\",500000],PARAMETER[\"false_northing\",100"); + add_srs_wkt (p, 11, + "00000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY["); + add_srs_wkt (p, 13, + "\"EPSG\",\"32000\"]]"); + p = add_epsg_def (filter, first, last, 32001, "epsg", 32001, + "NAD27 / Montana North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.71666666666667 +lat_2=47.85 +lat_0=4"); + add_proj4text (p, 1, + "7 +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD"); + add_proj4text (p, 2, + "27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Montana North\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"standard_parallel_1\",48.71666666666667],PARA"); + add_srs_wkt (p, 8, + "METER[\"standard_parallel_2\",47.85],PARAMETER[\"latitud"); + add_srs_wkt (p, 9, + "e_of_origin\",47],PARAMETER[\"central_meridian\",-109.5]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_easting\",2000000],PARAMETER[\"false_"); + add_srs_wkt (p, 11, + "northing\",0],UNIT[\"US survey foot\",0.3048006096012192"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 13, + "\",NORTH],AUTHORITY[\"EPSG\",\"32001\"]]"); + p = add_epsg_def (filter, first, last, 32002, "epsg", 32002, + "NAD27 / Montana Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.88333333333333 +lat_2=46.45 +lat_0=4"); + add_proj4text (p, 1, + "5.83333333333334 +lon_0=-109.5 +x_0=609601.2192024384 +y"); + add_proj4text (p, 2, + "_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Montana Central\",GEOGCS[\"NAD27\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",47.88333333333333],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",46.45],PARAMETER[\"latitu"); + add_srs_wkt (p, 9, + "de_of_origin\",45.83333333333334],PARAMETER[\"central_me"); + add_srs_wkt (p, 10, + "ridian\",-109.5],PARAMETER[\"false_easting\",2000000],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0."); + add_srs_wkt (p, 12, + "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32002\"]]"); + p = add_epsg_def (filter, first, last, 32003, "epsg", 32003, + "NAD27 / Montana South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.4 +lat_2=44.86666666666667 +lat_0=44"); + add_proj4text (p, 1, + " +lon_0=-109.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD2"); + add_proj4text (p, 2, + "7 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Montana South\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"standard_parallel_1\",46.4],PARAMETER[\"stand"); + add_srs_wkt (p, 8, + "ard_parallel_2\",44.86666666666667],PARAMETER[\"latitude"); + add_srs_wkt (p, 9, + "_of_origin\",44],PARAMETER[\"central_meridian\",-109.5],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_easting\",2000000],PARAMETER[\"false_n"); + add_srs_wkt (p, 11, + "orthing\",0],UNIT[\"US survey foot\",0.3048006096012192,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"32003\"]]"); + p = add_epsg_def (filter, first, last, 32005, "epsg", 32005, + "NAD27 / Nebraska North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.85 +lat_2=42.81666666666667 +lat_0=4"); + add_proj4text (p, 1, + "1.33333333333334 +lon_0=-100 +x_0=609601.2192024384 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Nebraska North\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",41.85],PARAMETER[\"sta"); + add_srs_wkt (p, 8, + "ndard_parallel_2\",42.81666666666667],PARAMETER[\"latitu"); + add_srs_wkt (p, 9, + "de_of_origin\",41.33333333333334],PARAMETER[\"central_me"); + add_srs_wkt (p, 10, + "ridian\",-100],PARAMETER[\"false_easting\",2000000],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 12, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 13, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32005\"]]"); + p = add_epsg_def (filter, first, last, 32006, "epsg", 32006, + "NAD27 / Nebraska South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.28333333333333 +lat_2=41.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=39.66666666666666 +lon_0=-99.5 +x_0=609601.21"); + add_proj4text (p, 2, + "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Nebraska South\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",40.28333333333333],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",41.71666666666667],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",39.66666666666666],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-99.5],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 11, + "2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surve"); + add_srs_wkt (p, 12, + "y foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]"); + add_srs_wkt (p, 13, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"32006\"]]"); + p = add_epsg_def (filter, first, last, 32007, "epsg", 32007, + "NAD27 / Nevada East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Nevada East\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",34.75],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-115.5833333333333],PARAMETER[\"scale_factor\",0.9999"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"US survey foot\",0.3048006096012192"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32007\"]]"); + p = add_epsg_def (filter, first, last, 32008, "epsg", 32008, + "NAD27 / Nevada Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Nevada Central\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",34.75],PARAMETER[\"central_meri"); + add_srs_wkt (p, 8, + "dian\",-116.6666666666667],PARAMETER[\"scale_factor\",0."); + add_srs_wkt (p, 9, + "9999],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); + add_srs_wkt (p, 11, + "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32008\"]]"); + p = add_epsg_def (filter, first, last, 32009, "epsg", 32009, + "NAD27 / Nevada West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Nevada West\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",34.75],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-118.5833333333333],PARAMETER[\"scale_factor\",0.9999"); + add_srs_wkt (p, 9, + "],PARAMETER[\"false_easting\",500000],PARAMETER[\"false_"); + add_srs_wkt (p, 10, + "northing\",0],UNIT[\"US survey foot\",0.3048006096012192"); + add_srs_wkt (p, 11, + ",AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32009\"]]"); + p = add_epsg_def (filter, first, last, 32010, "epsg", 32010, + "NAD27 / New Hampshire"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +uni"); + add_proj4text (p, 2, + "ts=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / New Hampshire\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",42.5],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 8, + "an\",-71.66666666666667],PARAMETER[\"scale_factor\",0.99"); + add_srs_wkt (p, 9, + "9966667],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 11, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32010\"]]"); + p = add_epsg_def (filter, first, last, 32011, "epsg", 32011, + "NAD27 / New Jersey"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.66666666"); + add_proj4text (p, 1, + "666667 +k=0.9999749999999999 +x_0=609601.2192024384 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / New Jersey\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",38.83333333333334],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-74.66666666666667],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.999975],PARAMETER[\"false_easting\",2000000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"US survey foot\",0.3"); + add_srs_wkt (p, 11, + "048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32011\"]]"); + p = add_epsg_def (filter, first, last, 32012, "epsg", 32012, + "NAD27 / New Mexico East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); + add_proj4text (p, 1, + "909091 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units"); + add_proj4text (p, 2, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / New Mexico East\",GEOGCS[\"NAD27\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",31],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 8, + "n\",-104.3333333333333],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "909091],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 11, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32012\"]]"); + p = add_epsg_def (filter, first, last, 32013, "epsg", 32013, + "NAD27 / New Mexico Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=1524"); + add_proj4text (p, 1, + "00.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / New Mexico Central\",GEOGCS[\"NAD27\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); + add_srs_wkt (p, 2, + "6\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"latitude_of_origin\",31],PARAMETER[\"central_mer"); + add_srs_wkt (p, 8, + "idian\",-106.25],PARAMETER[\"scale_factor\",0.9999],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_easting\",500000],PARAMETER[\"false_northi"); + add_srs_wkt (p, 10, + "ng\",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"32013\"]]"); + p = add_epsg_def (filter, first, last, 32014, "epsg", 32014, + "NAD27 / New Mexico West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); + add_proj4text (p, 1, + "916667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units"); + add_proj4text (p, 2, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / New Mexico West\",GEOGCS[\"NAD27\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",31],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 8, + "n\",-107.8333333333333],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "916667],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 11, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32014\"]]"); + p = add_epsg_def (filter, first, last, 32015, "epsg", 32015, + "NAD27 / New York East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-74.33333333333333 +k=0.999"); + add_proj4text (p, 1, + "966667 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units"); + add_proj4text (p, 2, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / New York East\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",40],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-74.33333333333333],PARAMETER[\"scale_factor\",0.9999"); + add_srs_wkt (p, 9, + "66667],PARAMETER[\"false_easting\",500000],PARAMETER[\"f"); + add_srs_wkt (p, 10, + "alse_northing\",0],UNIT[\"US survey foot\",0.30480060960"); + add_srs_wkt (p, 11, + "12192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32015\"]]"); + p = add_epsg_def (filter, first, last, 32016, "epsg", 32016, + "NAD27 / New York Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / New York Central\",GEOGCS[\"NAD27\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",40],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 8, + "n\",-76.58333333333333],PARAMETER[\"scale_factor\",0.999"); + add_srs_wkt (p, 9, + "9375],PARAMETER[\"false_easting\",500000],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_northing\",0],UNIT[\"US survey foot\",0.304800609601"); + add_srs_wkt (p, 11, + "2192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 12, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32016\"]]"); + p = add_epsg_def (filter, first, last, 32017, "epsg", 32017, + "NAD27 / New York West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units=u"); + add_proj4text (p, 2, + "s-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / New York West\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",40],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-78.58333333333333],PARAMETER[\"scale_factor\",0.9999"); + add_srs_wkt (p, 9, + "375],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 11, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32017\"]]"); + p = add_epsg_def (filter, first, last, 32018, "epsg", 32018, + "NAD27 / New York Long Island (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=40.5 +lon_0=-74 +x_0=304800.6096012192 +y_0=0"); + add_proj4text (p, 2, + " +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / New York Long Island (deprecated)\",GEO"); + add_srs_wkt (p, 1, + "GCS[\"NAD27\",DATUM[\"North_American_Datum_1927\",SPHERO"); + add_srs_wkt (p, 2, + "ID[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY"); + add_srs_wkt (p, 3, + "[\"EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIME"); + add_srs_wkt (p, 4, + "M[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"d"); + add_srs_wkt (p, 5, + "egree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]]"); + add_srs_wkt (p, 6, + ",AUTHORITY[\"EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conf"); + add_srs_wkt (p, 7, + "ormal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41."); + add_srs_wkt (p, 8, + "03333333333333],PARAMETER[\"standard_parallel_2\",40.666"); + add_srs_wkt (p, 9, + "66666666666],PARAMETER[\"latitude_of_origin\",40.5],PARA"); + add_srs_wkt (p, 10, + "METER[\"central_meridian\",-74],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 11, + "g\",1000000],PARAMETER[\"false_northing\",0],UNIT[\"US s"); + add_srs_wkt (p, 12, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 13, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 14, + "G\",\"32018\"]]"); + p = add_epsg_def (filter, first, last, 32019, "epsg", 32019, + "NAD27 / North Carolina"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.33333333333334 +lat_2=36.16666666666"); + add_proj4text (p, 1, + "666 +lat_0=33.75 +lon_0=-79 +x_0=609601.2192024384 +y_0="); + add_proj4text (p, 2, + "0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / North Carolina\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",34.33333333333334],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",36.16666666666666],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",33.75],PARAMETER[\"central_me"); + add_srs_wkt (p, 10, + "ridian\",-79],PARAMETER[\"false_easting\",2000000],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); + add_srs_wkt (p, 12, + "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 13, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32019\"]]"); + p = add_epsg_def (filter, first, last, 32020, "epsg", 32020, + "NAD27 / North Dakota North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.43333333333333 +lat_2=48.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=47 +lon_0=-100.5 +x_0=609601.2192024384 +y_0="); + add_proj4text (p, 2, + "0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / North Dakota North\",GEOGCS[\"NAD27\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); + add_srs_wkt (p, 2, + "6\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",47.43333333333333]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",48.73333333333333],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"latitude_of_origin\",47],PARAMETER[\"central_m"); + add_srs_wkt (p, 10, + "eridian\",-100.5],PARAMETER[\"false_easting\",2000000],P"); + add_srs_wkt (p, 11, + "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); + add_srs_wkt (p, 12, + ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); + add_srs_wkt (p, 13, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32020\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 32021, "epsg", 32021, + "NAD27 / North Dakota South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.18333333333333 +lat_2=47.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=609601.2"); + add_proj4text (p, 2, + "192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / North Dakota South\",GEOGCS[\"NAD27\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); + add_srs_wkt (p, 2, + "6\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",46.18333333333333]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",47.48333333333333],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"latitude_of_origin\",45.66666666666666],PARAME"); + add_srs_wkt (p, 10, + "TER[\"central_meridian\",-100.5],PARAMETER[\"false_easti"); + add_srs_wkt (p, 11, + "ng\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US "); + add_srs_wkt (p, 12, + "survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"90"); + add_srs_wkt (p, 13, + "03\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EP"); + add_srs_wkt (p, 14, + "SG\",\"32021\"]]"); + p = add_epsg_def (filter, first, last, 32022, "epsg", 32022, + "NAD27 / Ohio North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.43333333333333 +lat_2=41.7 +lat_0=39"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-82.5 +x_0=609601.2192024384 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Ohio North\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"standard_parallel_1\",40.43333333333333],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_2\",41.7],PARAMETER[\"latitude_of"); + add_srs_wkt (p, 9, + "_origin\",39.66666666666666],PARAMETER[\"central_meridia"); + add_srs_wkt (p, 10, + "n\",-82.5],PARAMETER[\"false_easting\",2000000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); + add_srs_wkt (p, 12, + "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); + add_srs_wkt (p, 13, + "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32022\"]]"); + p = add_epsg_def (filter, first, last, 32023, "epsg", 32023, + "NAD27 / Ohio South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.73333333333333 +lat_2=40.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=38 +lon_0=-82.5 +x_0=609601.2192024384 +y_0=0"); + add_proj4text (p, 2, + " +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Ohio South\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"standard_parallel_1\",38.73333333333333],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_2\",40.03333333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"latitude_of_origin\",38],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 10, + ",-82.5],PARAMETER[\"false_easting\",2000000],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_northing\",0],UNIT[\"US survey foot\",0.3048006096"); + add_srs_wkt (p, 12, + "012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 13, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32023\"]]"); + p = add_epsg_def (filter, first, last, 32024, "epsg", 32024, + "NAD27 / Oklahoma North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.56666666666667 +lat_2=36.76666666666"); + add_proj4text (p, 1, + "667 +lat_0=35 +lon_0=-98 +x_0=609601.2192024384 +y_0=0 +"); + add_proj4text (p, 2, + "datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Oklahoma North\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",35.56666666666667],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",36.76666666666667],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",35],PARAMETER[\"central_merid"); + add_srs_wkt (p, 10, + "ian\",-98],PARAMETER[\"false_easting\",2000000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); + add_srs_wkt (p, 12, + "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); + add_srs_wkt (p, 13, + "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32024\"]]"); + p = add_epsg_def (filter, first, last, 32025, "epsg", 32025, + "NAD27 / Oklahoma South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.93333333333333 +lat_2=35.23333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=609601.2192"); + add_proj4text (p, 2, + "024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Oklahoma South\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",33.93333333333333],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",35.23333333333333],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",33.33333333333334],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-98],PARAMETER[\"false_easting\",20"); + add_srs_wkt (p, 11, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"US survey "); + add_srs_wkt (p, 12, + "foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],"); + add_srs_wkt (p, 13, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "32025\"]]"); + p = add_epsg_def (filter, first, last, 32026, "epsg", 32026, + "NAD27 / Oregon North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.33333333333334 +lat_2=46 +lat_0=43.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0="); + add_proj4text (p, 2, + "0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Oregon North\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 7, + "AMETER[\"standard_parallel_1\",44.33333333333334],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_2\",46],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 9, + "origin\",43.66666666666666],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 10, + "\",-120.5],PARAMETER[\"false_easting\",2000000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); + add_srs_wkt (p, 12, + "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); + add_srs_wkt (p, 13, + "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32026\"]]"); + p = add_epsg_def (filter, first, last, 32027, "epsg", 32027, + "NAD27 / Oregon South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.33333333333334 +lat_2=44 +lat_0=41.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=609601.2192024384 +y_0="); + add_proj4text (p, 2, + "0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Oregon South\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 7, + "AMETER[\"standard_parallel_1\",42.33333333333334],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_2\",44],PARAMETER[\"latitude_of_"); + add_srs_wkt (p, 9, + "origin\",41.66666666666666],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 10, + "\",-120.5],PARAMETER[\"false_easting\",2000000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); + add_srs_wkt (p, 12, + "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); + add_srs_wkt (p, 13, + "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32027\"]]"); + p = add_epsg_def (filter, first, last, 32028, "epsg", 32028, + "NAD27 / Pennsylvania North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.88333333333333 +lat_2=41.95 +lat_0=4"); + add_proj4text (p, 1, + "0.16666666666666 +lon_0=-77.75 +x_0=609601.2192024384 +y"); + add_proj4text (p, 2, + "_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Pennsylvania North\",GEOGCS[\"NAD27\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); + add_srs_wkt (p, 2, + "6\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",40.88333333333333]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",41.95],PARAMETER[\"la"); + add_srs_wkt (p, 9, + "titude_of_origin\",40.16666666666666],PARAMETER[\"centra"); + add_srs_wkt (p, 10, + "l_meridian\",-77.75],PARAMETER[\"false_easting\",2000000"); + add_srs_wkt (p, 11, + "],PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 12, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32028\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 32029, "epsg", 32029, + "NAD27 / Pennsylvania South (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.93333333333333 +lat_2=40.8 +lat_0=39"); + add_proj4text (p, 1, + ".33333333333334 +lon_0=-77.75 +x_0=609601.2192024384 +y_"); + add_proj4text (p, 2, + "0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Pennsylvania South (deprecated)\",GEOGC"); + add_srs_wkt (p, 1, + "S[\"NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID"); + add_srs_wkt (p, 2, + "[\"Clarke 1866\",6378206.4,294.9786982139006,AUTHORITY[\""); + add_srs_wkt (p, 3, + "EPSG\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39.9333"); + add_srs_wkt (p, 8, + "3333333333],PARAMETER[\"standard_parallel_2\",40.8],PARA"); + add_srs_wkt (p, 9, + "METER[\"latitude_of_origin\",39.33333333333334],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-77.75],PARAMETER[\"false_easting"); + add_srs_wkt (p, 11, + "\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US su"); + add_srs_wkt (p, 12, + "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); + add_srs_wkt (p, 13, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 14, + "\",\"32029\"]]"); + p = add_epsg_def (filter, first, last, 32030, "epsg", 32030, + "NAD27 / Rhode Island"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); + add_proj4text (p, 1, + "999938 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +units"); + add_proj4text (p, 2, + "=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Rhode Island\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",41.08333333333334],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-71.5],PARAMETER[\"scale_factor\",0.99999"); + add_srs_wkt (p, 9, + "38],PARAMETER[\"false_easting\",500000],PARAMETER[\"fals"); + add_srs_wkt (p, 10, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 11, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"32030\"]]"); + p = add_epsg_def (filter, first, last, 32031, "epsg", 32031, + "NAD27 / South Carolina North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.76666666666667 +lat_2=34.96666666666"); + add_proj4text (p, 1, + "667 +lat_0=33 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +"); + add_proj4text (p, 2, + "datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / South Carolina North\",GEOGCS[\"NAD27\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1"); + add_srs_wkt (p, 2, + "866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 7, + "SP\"],PARAMETER[\"standard_parallel_1\",33.7666666666666"); + add_srs_wkt (p, 8, + "7],PARAMETER[\"standard_parallel_2\",34.96666666666667],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",33],PARAMETER[\"central"); + add_srs_wkt (p, 10, + "_meridian\",-81],PARAMETER[\"false_easting\",2000000],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0."); + add_srs_wkt (p, 12, + "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32031\"]]"); + p = add_epsg_def (filter, first, last, 32033, "epsg", 32033, + "NAD27 / South Carolina South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.33333333333334 +lat_2=33.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=31.83333333333333 +lon_0=-81 +x_0=609601.2192"); + add_proj4text (p, 2, + "024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / South Carolina South\",GEOGCS[\"NAD27\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1"); + add_srs_wkt (p, 2, + "866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 7, + "SP\"],PARAMETER[\"standard_parallel_1\",32.3333333333333"); + add_srs_wkt (p, 8, + "4],PARAMETER[\"standard_parallel_2\",33.66666666666666],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",31.83333333333333],PARA"); + add_srs_wkt (p, 10, + "METER[\"central_meridian\",-81],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 11, + "g\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US s"); + add_srs_wkt (p, 12, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 13, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 14, + "G\",\"32033\"]]"); + p = add_epsg_def (filter, first, last, 32034, "epsg", 32034, + "NAD27 / South Dakota North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.41666666666666 +lat_2=45.68333333333"); + add_proj4text (p, 1, + "333 +lat_0=43.83333333333334 +lon_0=-100 +x_0=609601.219"); + add_proj4text (p, 2, + "2024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / South Dakota North\",GEOGCS[\"NAD27\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); + add_srs_wkt (p, 2, + "6\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",44.41666666666666]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",45.68333333333333],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"latitude_of_origin\",43.83333333333334],PARAME"); + add_srs_wkt (p, 10, + "TER[\"central_meridian\",-100],PARAMETER[\"false_easting"); + add_srs_wkt (p, 11, + "\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US su"); + add_srs_wkt (p, 12, + "rvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003"); + add_srs_wkt (p, 13, + "\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG"); + add_srs_wkt (p, 14, + "\",\"32034\"]]"); + p = add_epsg_def (filter, first, last, 32035, "epsg", 32035, + "NAD27 / South Dakota South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.83333333333334 +lat_2=44.4 +lat_0=42"); + add_proj4text (p, 1, + ".33333333333334 +lon_0=-100.3333333333333 +x_0=609601.21"); + add_proj4text (p, 2, + "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / South Dakota South\",GEOGCS[\"NAD27\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); + add_srs_wkt (p, 2, + "6\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",42.83333333333334]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",44.4],PARAMETER[\"lat"); + add_srs_wkt (p, 9, + "itude_of_origin\",42.33333333333334],PARAMETER[\"central"); + add_srs_wkt (p, 10, + "_meridian\",-100.3333333333333],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 11, + "g\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US s"); + add_srs_wkt (p, 12, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 13, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 14, + "G\",\"32035\"]]"); + p = add_epsg_def (filter, first, last, 32036, "epsg", 32036, + "NAD27 / Tennessee (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.25 +lat_2=36.41666666666666 +lat_0=3"); + add_proj4text (p, 1, + "4.66666666666666 +lon_0=-86 +x_0=30480.06096012192 +y_0="); + add_proj4text (p, 2, + "0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Tennessee (deprecated)\",GEOGCS[\"NAD27"); + add_srs_wkt (p, 1, + "\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke"); + add_srs_wkt (p, 2, + " 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 3, + "7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 7, + "SP\"],PARAMETER[\"standard_parallel_1\",35.25],PARAMETER"); + add_srs_wkt (p, 8, + "[\"standard_parallel_2\",36.41666666666666],PARAMETER[\""); + add_srs_wkt (p, 9, + "latitude_of_origin\",34.66666666666666],PARAMETER[\"cent"); + add_srs_wkt (p, 10, + "ral_meridian\",-86],PARAMETER[\"false_easting\",100000],"); + add_srs_wkt (p, 11, + "PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\","); + add_srs_wkt (p, 12, + "0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32036\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 32037, "epsg", 32037, + "NAD27 / Texas North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.65 +lat_2=36.18333333333333 +lat_0=3"); + add_proj4text (p, 1, + "4 +lon_0=-101.5 +x_0=609601.2192024384 +y_0=0 +datum=NAD"); + add_proj4text (p, 2, + "27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Texas North\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 7, + "AMETER[\"standard_parallel_1\",34.65],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_2\",36.18333333333333],PARAMETER[\"latitude_"); + add_srs_wkt (p, 9, + "of_origin\",34],PARAMETER[\"central_meridian\",-101.5],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_easting\",2000000],PARAMETER[\"false_no"); + add_srs_wkt (p, 11, + "rthing\",0],UNIT[\"US survey foot\",0.3048006096012192,A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"32037\"]]"); + p = add_epsg_def (filter, first, last, 32038, "epsg", 32038, + "NAD27 / Texas North Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=32.13333333333333 +lat_2=33.96666666666"); + add_proj4text (p, 1, + "667 +lat_0=31.66666666666667 +lon_0=-97.5 +x_0=609601.21"); + add_proj4text (p, 2, + "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Texas North Central\",GEOGCS[\"NAD27\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 18"); + add_srs_wkt (p, 2, + "66\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "08\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",32.13333333333333]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",33.96666666666667],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"latitude_of_origin\",31.66666666666667],PARAME"); + add_srs_wkt (p, 10, + "TER[\"central_meridian\",-97.5],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 11, + "g\",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US s"); + add_srs_wkt (p, 12, + "urvey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 13, + "3\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 14, + "G\",\"32038\"]]"); + p = add_epsg_def (filter, first, last, 32039, "epsg", 32039, + "NAD27 / Texas Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.11666666666667 +lat_2=31.88333333333"); + add_proj4text (p, 1, + "333 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); + add_proj4text (p, 2, + "x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Texas Central\",GEOGCS[\"NAD27\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6"); + add_srs_wkt (p, 2, + "378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"standard_parallel_1\",30.11666666666667],PARA"); + add_srs_wkt (p, 8, + "METER[\"standard_parallel_2\",31.88333333333333],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"latitude_of_origin\",29.66666666666667],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-100.3333333333333],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",2000000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 12, + "[\"US survey foot\",0.3048006096012192,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 13, + ",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY"); + add_srs_wkt (p, 14, + "[\"EPSG\",\"32039\"]]"); + p = add_epsg_def (filter, first, last, 32040, "epsg", 32040, + "NAD27 / Texas South Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=28.38333333333333 +lat_2=30.28333333333"); + add_proj4text (p, 1, + "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=609601.2192"); + add_proj4text (p, 2, + "024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Texas South Central\",GEOGCS[\"NAD27\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 18"); + add_srs_wkt (p, 2, + "66\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "08\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",28.38333333333333]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",30.28333333333333],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"latitude_of_origin\",27.83333333333333],PARAME"); + add_srs_wkt (p, 10, + "TER[\"central_meridian\",-99],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); + add_srs_wkt (p, 12, + "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"32040\"]]"); + p = add_epsg_def (filter, first, last, 32041, "epsg", 32041, + "NAD27 / Texas South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=26.16666666666667 +lat_2=27.83333333333"); + add_proj4text (p, 1, + "333 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=609601.21"); + add_proj4text (p, 2, + "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Texas South\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 7, + "AMETER[\"standard_parallel_1\",26.16666666666667],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_2\",27.83333333333333],PARAMETER"); + add_srs_wkt (p, 9, + "[\"latitude_of_origin\",25.66666666666667],PARAMETER[\"c"); + add_srs_wkt (p, 10, + "entral_meridian\",-98.5],PARAMETER[\"false_easting\",200"); + add_srs_wkt (p, 11, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"US survey f"); + add_srs_wkt (p, 12, + "oot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],A"); + add_srs_wkt (p, 13, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 14, + "2041\"]]"); + p = add_epsg_def (filter, first, last, 32042, "epsg", 32042, + "NAD27 / Utah North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.71666666666667 +lat_2=41.78333333333"); + add_proj4text (p, 1, + "333 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=609601.2"); + add_proj4text (p, 2, + "192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Utah North\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"standard_parallel_1\",40.71666666666667],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_2\",41.78333333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"latitude_of_origin\",40.33333333333334],PARAMETER[\"ce"); + add_srs_wkt (p, 10, + "ntral_meridian\",-111.5],PARAMETER[\"false_easting\",200"); + add_srs_wkt (p, 11, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"US survey f"); + add_srs_wkt (p, 12, + "oot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],A"); + add_srs_wkt (p, 13, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 14, + "2042\"]]"); + p = add_epsg_def (filter, first, last, 32043, "epsg", 32043, + "NAD27 / Utah Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.01666666666667 +lat_2=40.65 +lat_0=3"); + add_proj4text (p, 1, + "8.33333333333334 +lon_0=-111.5 +x_0=609601.2192024384 +y"); + add_proj4text (p, 2, + "_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Utah Central\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PAR"); + add_srs_wkt (p, 7, + "AMETER[\"standard_parallel_1\",39.01666666666667],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_2\",40.65],PARAMETER[\"latitude_"); + add_srs_wkt (p, 9, + "of_origin\",38.33333333333334],PARAMETER[\"central_merid"); + add_srs_wkt (p, 10, + "ian\",-111.5],PARAMETER[\"false_easting\",2000000],PARAM"); + add_srs_wkt (p, 11, + "ETER[\"false_northing\",0],UNIT[\"US survey foot\",0.304"); + add_srs_wkt (p, 12, + "8006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 13, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32043\"]]"); + p = add_epsg_def (filter, first, last, 32044, "epsg", 32044, + "NAD27 / Utah South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.21666666666667 +lat_2=38.35 +lat_0=3"); + add_proj4text (p, 1, + "6.66666666666666 +lon_0=-111.5 +x_0=609601.2192024384 +y"); + add_proj4text (p, 2, + "_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Utah South\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],PARA"); + add_srs_wkt (p, 7, + "METER[\"standard_parallel_1\",37.21666666666667],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_2\",38.35],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 9, + "f_origin\",36.66666666666666],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 10, + "an\",-111.5],PARAMETER[\"false_easting\",2000000],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); + add_srs_wkt (p, 12, + "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32044\"]]"); + p = add_epsg_def (filter, first, last, 32045, "epsg", 32045, + "NAD27 / Vermont"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0"); + add_proj4text (p, 1, + "=152400.3048006096 +y_0=0 +datum=NAD27 +units=us-ft +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Vermont\",GEOGCS[\"NAD27\",DATUM[\"Nort"); + add_srs_wkt (p, 1, + "h_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378206"); + add_srs_wkt (p, 2, + ".4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AUTHO"); + add_srs_wkt (p, 3, + "RITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHORIT"); + add_srs_wkt (p, 4, + "Y[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199433"); + add_srs_wkt (p, 5, + ",AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4267"); + add_srs_wkt (p, 6, + "\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\"lat"); + add_srs_wkt (p, 7, + "itude_of_origin\",42.5],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "72.5],PARAMETER[\"scale_factor\",0.999964286],PARAMETER["); + add_srs_wkt (p, 9, + "\"false_easting\",500000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 10, + "],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"32045\"]]"); + p = add_epsg_def (filter, first, last, 32046, "epsg", 32046, + "NAD27 / Virginia North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.03333333333333 +lat_2=39.2 +lat_0=37"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-78.5 +x_0=609601.2192024384 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Virginia North\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",38.03333333333333],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",39.2],PARAMETER[\"latitud"); + add_srs_wkt (p, 9, + "e_of_origin\",37.66666666666666],PARAMETER[\"central_mer"); + add_srs_wkt (p, 10, + "idian\",-78.5],PARAMETER[\"false_easting\",2000000],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 12, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 13, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32046\"]]"); + p = add_epsg_def (filter, first, last, 32047, "epsg", 32047, + "NAD27 / Virginia South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.76666666666667 +lat_2=37.96666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=609601.21"); + add_proj4text (p, 2, + "92024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Virginia South\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",36.76666666666667],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",37.96666666666667],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",36.33333333333334],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-78.5],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 11, + "2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surve"); + add_srs_wkt (p, 12, + "y foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]"); + add_srs_wkt (p, 13, + "],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 14, + "\"32047\"]]"); + p = add_epsg_def (filter, first, last, 32048, "epsg", 32048, + "NAD27 / Washington North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.5 +lat_2=48.73333333333333 +lat_0=47"); + add_proj4text (p, 1, + " +lon_0=-120.8333333333333 +x_0=609601.2192024384 +y_0=0"); + add_proj4text (p, 2, + " +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Washington North\",GEOGCS[\"NAD27\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",47.5],PARAMETER[\"stan"); + add_srs_wkt (p, 8, + "dard_parallel_2\",48.73333333333333],PARAMETER[\"latitud"); + add_srs_wkt (p, 9, + "e_of_origin\",47],PARAMETER[\"central_meridian\",-120.83"); + add_srs_wkt (p, 10, + "33333333333],PARAMETER[\"false_easting\",2000000],PARAME"); + add_srs_wkt (p, 11, + "TER[\"false_northing\",0],UNIT[\"US survey foot\",0.3048"); + add_srs_wkt (p, 12, + "006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32048\"]]"); + p = add_epsg_def (filter, first, last, 32049, "epsg", 32049, + "NAD27 / Washington South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.83333333333334 +lat_2=47.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=609601.2"); + add_proj4text (p, 2, + "192024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Washington South\",GEOGCS[\"NAD27\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",45.83333333333334],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",47.33333333333334],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",45.33333333333334],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-120.5],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",2000000],PARAMETER[\"false_northing\",0],UNIT[\"US surv"); + add_srs_wkt (p, 12, + "ey foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\""); + add_srs_wkt (p, 13, + "]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 14, + ",\"32049\"]]"); + p = add_epsg_def (filter, first, last, 32050, "epsg", 32050, + "NAD27 / West Virginia North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39 +lat_2=40.25 +lat_0=38.5 +lon_0=-79."); + add_proj4text (p, 1, + "5 +x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-f"); + add_proj4text (p, 2, + "t +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / West Virginia North\",GEOGCS[\"NAD27\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 18"); + add_srs_wkt (p, 2, + "66\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "08\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",39],PARAMETER[\"st"); + add_srs_wkt (p, 8, + "andard_parallel_2\",40.25],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",38.5],PARAMETER[\"central_meridian\",-79.5],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"false_easting\",2000000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"32050\"]]"); + p = add_epsg_def (filter, first, last, 32051, "epsg", 32051, + "NAD27 / West Virginia South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.48333333333333 +lat_2=38.88333333333"); + add_proj4text (p, 1, + "333 +lat_0=37 +lon_0=-81 +x_0=609601.2192024384 +y_0=0 +"); + add_proj4text (p, 2, + "datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / West Virginia South\",GEOGCS[\"NAD27\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 18"); + add_srs_wkt (p, 2, + "66\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"70"); + add_srs_wkt (p, 3, + "08\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",37.48333333333333]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",38.88333333333333],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"latitude_of_origin\",37],PARAMETER[\"central_m"); + add_srs_wkt (p, 10, + "eridian\",-81],PARAMETER[\"false_easting\",2000000],PARA"); + add_srs_wkt (p, 11, + "METER[\"false_northing\",0],UNIT[\"US survey foot\",0.30"); + add_srs_wkt (p, 12, + "48006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\","); + add_srs_wkt (p, 13, + "EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32051\"]]"); + p = add_epsg_def (filter, first, last, 32052, "epsg", 32052, + "NAD27 / Wisconsin North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.56666666666667 +lat_2=46.76666666666"); + add_proj4text (p, 1, + "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=609601.2192"); + add_proj4text (p, 2, + "024384 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Wisconsin North\",GEOGCS[\"NAD27\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",45.56666666666667],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",46.76666666666667],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",45.16666666666666],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-90],PARAMETER[\"false_easting\",20"); + add_srs_wkt (p, 11, + "00000],PARAMETER[\"false_northing\",0],UNIT[\"US survey "); + add_srs_wkt (p, 12, + "foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],"); + add_srs_wkt (p, 13, + "AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 14, + "32052\"]]"); + p = add_epsg_def (filter, first, last, 32053, "epsg", 32053, + "NAD27 / Wisconsin Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.25 +lat_2=45.5 +lat_0=43.83333333333"); + add_proj4text (p, 1, + "334 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +datum=NAD2"); + add_proj4text (p, 2, + "7 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Wisconsin Central\",GEOGCS[\"NAD27\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866"); + add_srs_wkt (p, 2, + "\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008"); + add_srs_wkt (p, 3, + "\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\","); + add_srs_wkt (p, 4, + "0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453"); + add_srs_wkt (p, 5, + "2925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPS"); + add_srs_wkt (p, 6, + "G\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"standard_parallel_1\",44.25],PARAMETER[\"s"); + add_srs_wkt (p, 8, + "tandard_parallel_2\",45.5],PARAMETER[\"latitude_of_origi"); + add_srs_wkt (p, 9, + "n\",43.83333333333334],PARAMETER[\"central_meridian\",-9"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_easting\",2000000],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_northing\",0],UNIT[\"US survey foot\",0.30480060960121"); + add_srs_wkt (p, 12, + "92,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"32053\"]]"); + p = add_epsg_def (filter, first, last, 32054, "epsg", 32054, + "NAD27 / Wisconsin South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=42.73333333333333 +lat_2=44.06666666666"); + add_proj4text (p, 1, + "667 +lat_0=42 +lon_0=-90 +x_0=609601.2192024384 +y_0=0 +"); + add_proj4text (p, 2, + "datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Wisconsin South\",GEOGCS[\"NAD27\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\""); + add_srs_wkt (p, 2, + ",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\""); + add_srs_wkt (p, 3, + "]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt (p, 4, + "AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329"); + add_srs_wkt (p, 5, + "25199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",42.73333333333333],PAR"); + add_srs_wkt (p, 8, + "AMETER[\"standard_parallel_2\",44.06666666666667],PARAME"); + add_srs_wkt (p, 9, + "TER[\"latitude_of_origin\",42],PARAMETER[\"central_merid"); + add_srs_wkt (p, 10, + "ian\",-90],PARAMETER[\"false_easting\",2000000],PARAMETE"); + add_srs_wkt (p, 11, + "R[\"false_northing\",0],UNIT[\"US survey foot\",0.304800"); + add_srs_wkt (p, 12, + "6096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST"); + add_srs_wkt (p, 13, + "],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32054\"]]"); + p = add_epsg_def (filter, first, last, 32055, "epsg", 32055, + "NAD27 / Wyoming East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-105.1666666"); + add_proj4text (p, 1, + "666667 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +dat"); + add_proj4text (p, 2, + "um=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Wyoming East\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",40.66666666666666],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-105.1666666666667],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.999941177],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); + add_srs_wkt (p, 11, + ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32055\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 32056, "epsg", 32056, + "NAD27 / Wyoming East Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-107.3333333"); + add_proj4text (p, 1, + "333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +dat"); + add_proj4text (p, 2, + "um=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Wyoming East Central\",GEOGCS[\"NAD27\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1"); + add_srs_wkt (p, 2, + "866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",40.66666666666666],PARAME"); + add_srs_wkt (p, 8, + "TER[\"central_meridian\",-107.3333333333333],PARAMETER[\""); + add_srs_wkt (p, 9, + "scale_factor\",0.999941177],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"US survey"); + add_srs_wkt (p, 11, + " foot\",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]]"); + add_srs_wkt (p, 12, + ",AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 13, + "32056\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_42.c b/src/spatialite/src/srsinit/epsg_inlined_42.c new file mode 100644 index 0000000..e79cc68 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_42.c @@ -0,0 +1,3494 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_42 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 32057, "epsg", 32057, + "NAD27 / Wyoming West Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-108.75 +k=0"); + add_proj4text (p, 1, + ".999941177 +x_0=152400.3048006096 +y_0=0 +datum=NAD27 +u"); + add_proj4text (p, 2, + "nits=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Wyoming West Central\",GEOGCS[\"NAD27\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1"); + add_srs_wkt (p, 2, + "866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7"); + add_srs_wkt (p, 3, + "008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich"); + add_srs_wkt (p, 4, + "\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017"); + add_srs_wkt (p, 5, + "4532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",40.66666666666666],PARAME"); + add_srs_wkt (p, 8, + "TER[\"central_meridian\",-108.75],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.999941177],PARAMETER[\"false_easting\",500000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0."); + add_srs_wkt (p, 11, + "3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\""); + add_srs_wkt (p, 12, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32057\"]]"); + p = add_epsg_def (filter, first, last, 32058, "epsg", 32058, + "NAD27 / Wyoming West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.66666666666666 +lon_0=-110.0833333"); + add_proj4text (p, 1, + "333333 +k=0.999941177 +x_0=152400.3048006096 +y_0=0 +dat"); + add_proj4text (p, 2, + "um=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Wyoming West\",GEOGCS[\"NAD27\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1927\",SPHEROID[\"Clarke 1866\",637"); + add_srs_wkt (p, 2, + "8206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],A"); + add_srs_wkt (p, 3, + "UTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTH"); + add_srs_wkt (p, 4, + "ORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292519"); + add_srs_wkt (p, 5, + "9433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",40.66666666666666],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-110.0833333333333],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.999941177],PARAMETER[\"false_easting\",500000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"US survey foot\",0"); + add_srs_wkt (p, 11, + ".3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X"); + add_srs_wkt (p, 12, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32058\"]"); + add_srs_wkt (p, 13, + "]"); + p = add_epsg_def (filter, first, last, 32061, "epsg", 32061, + "NAD27 / Guatemala Norte (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=16.81666666666667 +lat_0=16.81666666666"); + add_proj4text (p, 1, + "667 +lon_0=-90.33333333333333 +k_0=0.99992226 +x_0=50000"); + add_proj4text (p, 2, + "0 +y_0=292209.579 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Guatemala Norte (deprecated)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); + add_srs_wkt (p, 2, + "larke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_C"); + add_srs_wkt (p, 7, + "onic_1SP\"],PARAMETER[\"latitude_of_origin\",16.81666666"); + add_srs_wkt (p, 8, + "666667],PARAMETER[\"central_meridian\",-90.3333333333333"); + add_srs_wkt (p, 9, + "3],PARAMETER[\"scale_factor\",0.99992226],PARAMETER[\"fa"); + add_srs_wkt (p, 10, + "lse_easting\",500000],PARAMETER[\"false_northing\",29220"); + add_srs_wkt (p, 11, + "9.579],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AX"); + add_srs_wkt (p, 12, + "IS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32"); + add_srs_wkt (p, 13, + "061\"]]"); + p = add_epsg_def (filter, first, last, 32062, "epsg", 32062, + "NAD27 / Guatemala Sur (deprecated)"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=14.9 +lat_0=14.9 +lon_0=-90.33333333333"); + add_proj4text (p, 1, + "333 +k_0=0.99989906 +x_0=500000 +y_0=325992.681 +datum=N"); + add_proj4text (p, 2, + "AD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Guatemala Sur (deprecated)\",GEOGCS[\"N"); + add_srs_wkt (p, 1, + "AD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"Cl"); + add_srs_wkt (p, 2, + "arke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 3, + "\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gre"); + add_srs_wkt (p, 4, + "enwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_C"); + add_srs_wkt (p, 7, + "onic_1SP\"],PARAMETER[\"latitude_of_origin\",14.9],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-90.33333333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.99989906],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 10, + ",500000],PARAMETER[\"false_northing\",325992.681],UNIT[\""); + add_srs_wkt (p, 11, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 12, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32062\"]]"); + p = add_epsg_def (filter, first, last, 32064, "epsg", 32064, + "NAD27 / BLM 14N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 14N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-99],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); + add_srs_wkt (p, 9, + "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"32064\"]]"); + p = add_epsg_def (filter, first, last, 32065, "epsg", 32065, + "NAD27 / BLM 15N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 15N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-93],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); + add_srs_wkt (p, 9, + "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"32065\"]]"); + p = add_epsg_def (filter, first, last, 32066, "epsg", 32066, + "NAD27 / BLM 16N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 16N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-87],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); + add_srs_wkt (p, 9, + "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"32066\"]]"); + p = add_epsg_def (filter, first, last, 32067, "epsg", 32067, + "NAD27 / BLM 17N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 17N (ftUS)\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETE"); + add_srs_wkt (p, 7, + "R[\"latitude_of_origin\",0],PARAMETER[\"central_meridian"); + add_srs_wkt (p, 8, + "\",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"f"); + add_srs_wkt (p, 9, + "alse_easting\",1640416.67],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 10, + "0],UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"32067\"]]"); + p = add_epsg_def (filter, first, last, 32074, "epsg", 32074, + "NAD27 / BLM 14N (feet) (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 14N (feet) (deprecated)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); + add_srs_wkt (p, 2, + "larke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-99],PARAMETER[\"scale_factor\",0.9996],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",1640416.67],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"US survey foot\",0.304800609601219"); + add_srs_wkt (p, 11, + "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"32074\"]]"); + p = add_epsg_def (filter, first, last, 32075, "epsg", 32075, + "NAD27 / BLM 15N (feet) (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 15N (feet) (deprecated)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); + add_srs_wkt (p, 2, + "larke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-93],PARAMETER[\"scale_factor\",0.9996],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",1640416.67],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"US survey foot\",0.304800609601219"); + add_srs_wkt (p, 11, + "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"32075\"]]"); + p = add_epsg_def (filter, first, last, 32076, "epsg", 32076, + "NAD27 / BLM 16N (feet) (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 16N (feet) (deprecated)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); + add_srs_wkt (p, 2, + "larke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-87],PARAMETER[\"scale_factor\",0.9996],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",1640416.67],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"US survey foot\",0.304800609601219"); + add_srs_wkt (p, 11, + "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"32076\"]]"); + p = add_epsg_def (filter, first, last, 32077, "epsg", 32077, + "NAD27 / BLM 17N (feet) (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD27 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / BLM 17N (feet) (deprecated)\",GEOGCS[\""); + add_srs_wkt (p, 1, + "NAD27\",DATUM[\"North_American_Datum_1927\",SPHEROID[\"C"); + add_srs_wkt (p, 2, + "larke 1866\",6378206.4,294.9786982139006,AUTHORITY[\"EPS"); + add_srs_wkt (p, 3, + "G\",\"7008\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4267\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"cent"); + add_srs_wkt (p, 8, + "ral_meridian\",-81],PARAMETER[\"scale_factor\",0.9996],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",1640416.67],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"US survey foot\",0.304800609601219"); + add_srs_wkt (p, 11, + "2,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"32077\"]]"); + p = add_epsg_def (filter, first, last, 32081, "epsg", 32081, + "NAD27 / MTM zone 1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / MTM zone 1\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "53],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",304800],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 12, + "2081\"]]"); + p = add_epsg_def (filter, first, last, 32082, "epsg", 32082, + "NAD27 / MTM zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / MTM zone 2\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "56],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",304800],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 12, + "2082\"]]"); + p = add_epsg_def (filter, first, last, 32083, "epsg", 32083, + "NAD27 / MTM zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / MTM zone 3\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "58.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32083\"]]"); + p = add_epsg_def (filter, first, last, 32084, "epsg", 32084, + "NAD27 / MTM zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / MTM zone 4\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "61.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32084\"]]"); + p = add_epsg_def (filter, first, last, 32085, "epsg", 32085, + "NAD27 / MTM zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / MTM zone 5\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "64.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32085\"]]"); + p = add_epsg_def (filter, first, last, 32086, "epsg", 32086, + "NAD27 / MTM zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / MTM zone 6\",GEOGCS[\"NAD27\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1927\",SPHEROID[\"Clarke 1866\",6378"); + add_srs_wkt (p, 2, + "206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]],AU"); + add_srs_wkt (p, 3, + "THORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,AUTHO"); + add_srs_wkt (p, 4, + "RITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925199"); + add_srs_wkt (p, 5, + "433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4"); + add_srs_wkt (p, 6, + "267\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "67.5],PARAMETER[\"scale_factor\",0.9999],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",304800],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32086\"]]"); + p = add_epsg_def (filter, first, last, 32098, "epsg", 32098, + "NAD27 / Quebec Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_"); + add_proj4text (p, 1, + "0=0 +y_0=0 +datum=NAD27 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Quebec Lambert\",GEOGCS[\"NAD27\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1927\",SPHEROID[\"Clarke 1866\","); + add_srs_wkt (p, 2, + "6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"7008\"]"); + add_srs_wkt (p, 3, + "],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\",0,A"); + add_srs_wkt (p, 4, + "UTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.017453292"); + add_srs_wkt (p, 5, + "5199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 6, + ",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP\"],"); + add_srs_wkt (p, 7, + "PARAMETER[\"standard_parallel_1\",60],PARAMETER[\"standa"); + add_srs_wkt (p, 8, + "rd_parallel_2\",46],PARAMETER[\"latitude_of_origin\",44]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"central_meridian\",-68.5],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\"met"); + add_srs_wkt (p, 11, + "re\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AX"); + add_srs_wkt (p, 12, + "IS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32098\"]]"); + p = add_epsg_def (filter, first, last, 32099, "epsg", 32099, + "NAD27 / Louisiana Offshore"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=25.66666666666667 +lon_0=-91.33333333333333 +"); + add_proj4text (p, 2, + "x_0=609601.2192024384 +y_0=0 +datum=NAD27 +units=us-ft +"); + add_proj4text (p, 3, + "no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD27 / Louisiana Offshore\",GEOGCS[\"NAD27\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1927\",SPHEROID[\"Clarke 186"); + add_srs_wkt (p, 2, + "6\",6378206.4,294.9786982139006,AUTHORITY[\"EPSG\",\"700"); + add_srs_wkt (p, 3, + "8\"]],AUTHORITY[\"EPSG\",\"6267\"]],PRIMEM[\"Greenwich\""); + add_srs_wkt (p, 4, + ",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745"); + add_srs_wkt (p, 5, + "32925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EP"); + add_srs_wkt (p, 6, + "SG\",\"4267\"]],PROJECTION[\"Lambert_Conformal_Conic_2SP"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"standard_parallel_1\",27.83333333333333]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",26.16666666666667],PA"); + add_srs_wkt (p, 9, + "RAMETER[\"latitude_of_origin\",25.66666666666667],PARAME"); + add_srs_wkt (p, 10, + "TER[\"central_meridian\",-91.33333333333333],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",2000000],PARAMETER[\"false_northing\",0]"); + add_srs_wkt (p, 12, + ",UNIT[\"US survey foot\",0.3048006096012192,AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 14, + "HORITY[\"EPSG\",\"32099\"]]"); + p = add_epsg_def (filter, first, last, 32100, "epsg", 32100, + "NAD83 / Montana"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=49 +lat_2=45 +lat_0=44.25 +lon_0=-109.5"); + add_proj4text (p, 1, + " +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Montana\",GEOGCS[\"NAD83\",DATUM[\"Nort"); + add_srs_wkt (p, 1, + "h_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 2, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 3, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Conic_2"); + add_srs_wkt (p, 7, + "SP\"],PARAMETER[\"standard_parallel_1\",49],PARAMETER[\""); + add_srs_wkt (p, 8, + "standard_parallel_2\",45],PARAMETER[\"latitude_of_origin"); + add_srs_wkt (p, 9, + "\",44.25],PARAMETER[\"central_meridian\",-109.5],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_easting\",600000],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32100"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 32104, "epsg", 32104, + "NAD83 / Nebraska"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=43 +lat_2=40 +lat_0=39.83333333333334 +"); + add_proj4text (p, 1, + "lon_0=-100 +x_0=500000 +y_0=0 +datum=NAD83 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Nebraska\",GEOGCS[\"NAD83\",DATUM[\"Nor"); + add_srs_wkt (p, 1, + "th_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,2"); + add_srs_wkt (p, 2, + "98.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenwi"); + add_srs_wkt (p, 4, + "ch\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0"); + add_srs_wkt (p, 5, + "174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY["); + add_srs_wkt (p, 6, + "\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Conic"); + add_srs_wkt (p, 7, + "_2SP\"],PARAMETER[\"standard_parallel_1\",43],PARAMETER["); + add_srs_wkt (p, 8, + "\"standard_parallel_2\",40],PARAMETER[\"latitude_of_orig"); + add_srs_wkt (p, 9, + "in\",39.83333333333334],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 10, + "100],PARAMETER[\"false_easting\",500000],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9"); + add_srs_wkt (p, 12, + "001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 13, + "PSG\",\"32104\"]]"); + p = add_epsg_def (filter, first, last, 32107, "epsg", 32107, + "NAD83 / Nevada East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-115.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=200000 +y_0=8000000 +datum=NAD83 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Nevada East\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",34.75],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",-115.5833333333333],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9999],PARAMETER[\"false_easting\",200000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",8000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"32107\"]]"); + p = add_epsg_def (filter, first, last, 32108, "epsg", 32108, + "NAD83 / Nevada Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-116.6666666666667 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=500000 +y_0=6000000 +datum=NAD83 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Nevada Central\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",34.75],PARAMETER["); + add_srs_wkt (p, 8, + "\"central_meridian\",-116.6666666666667],PARAMETER[\"sca"); + add_srs_wkt (p, 9, + "le_factor\",0.9999],PARAMETER[\"false_easting\",500000],"); + add_srs_wkt (p, 10, + "PARAMETER[\"false_northing\",6000000],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 11, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"32108\"]]"); + p = add_epsg_def (filter, first, last, 32109, "epsg", 32109, + "NAD83 / Nevada West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=34.75 +lon_0=-118.5833333333333 +k=0."); + add_proj4text (p, 1, + "9999 +x_0=800000 +y_0=4000000 +datum=NAD83 +units=m +no_"); + add_proj4text (p, 2, + "defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Nevada West\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",34.75],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",-118.5833333333333],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9999],PARAMETER[\"false_easting\",800000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",4000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"32109\"]]"); + p = add_epsg_def (filter, first, last, 32110, "epsg", 32110, + "NAD83 / New Hampshire"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-71.66666666666667 +k=0.9"); + add_proj4text (p, 1, + "99966667 +x_0=300000 +y_0=0 +datum=NAD83 +units=m +no_de"); + add_proj4text (p, 2, + "fs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New Hampshire\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",42.5],PARAMETER[\"c"); + add_srs_wkt (p, 8, + "entral_meridian\",-71.66666666666667],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.999966667],PARAMETER[\"false_easting\",300000"); + add_srs_wkt (p, 10, + "],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NOR"); + add_srs_wkt (p, 12, + "TH],AUTHORITY[\"EPSG\",\"32110\"]]"); + p = add_epsg_def (filter, first, last, 32111, "epsg", 32111, + "NAD83 / New Jersey"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New Jersey\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",38.83333333333334],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-74.5],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9999],PARAMETER[\"false_easting\",150000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"32111\"]]"); + p = add_epsg_def (filter, first, last, 32112, "epsg", 32112, + "NAD83 / New Mexico East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-104.3333333333333 +k=0.999"); + add_proj4text (p, 1, + "909091 +x_0=165000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New Mexico East\",GEOGCS[\"NAD83\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",31],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-104.3333333333333],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.999909091],PARAMETER[\"false_easting\",16500"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 12, + "RTH],AUTHORITY[\"EPSG\",\"32112\"]]"); + p = add_epsg_def (filter, first, last, 32113, "epsg", 32113, + "NAD83 / New Mexico Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-106.25 +k=0.9999 +x_0=5000"); + add_proj4text (p, 1, + "00 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New Mexico Central\",GEOGCS[\"NAD83\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Me"); + add_srs_wkt (p, 7, + "rcator\"],PARAMETER[\"latitude_of_origin\",31],PARAMETER"); + add_srs_wkt (p, 8, + "[\"central_meridian\",-106.25],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 9, + ",0.9999],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 10, + "false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 11, + "\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY["); + add_srs_wkt (p, 12, + "\"EPSG\",\"32113\"]]"); + p = add_epsg_def (filter, first, last, 32114, "epsg", 32114, + "NAD83 / New Mexico West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=31 +lon_0=-107.8333333333333 +k=0.999"); + add_proj4text (p, 1, + "916667 +x_0=830000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New Mexico West\",GEOGCS[\"NAD83\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",31],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-107.8333333333333],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.999916667],PARAMETER[\"false_easting\",83000"); + add_srs_wkt (p, 10, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 12, + "RTH],AUTHORITY[\"EPSG\",\"32114\"]]"); + p = add_epsg_def (filter, first, last, 32115, "epsg", 32115, + "NAD83 / New York East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=38.83333333333334 +lon_0=-74.5 +k=0.9"); + add_proj4text (p, 1, + "999 +x_0=150000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New York East\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",38.83333333333334],"); + add_srs_wkt (p, 8, + "PARAMETER[\"central_meridian\",-74.5],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9999],PARAMETER[\"false_easting\",150000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"32115\"]]"); + p = add_epsg_def (filter, first, last, 32116, "epsg", 32116, + "NAD83 / New York Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-76.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=250000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New York Central\",GEOGCS[\"NAD83\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Merca"); + add_srs_wkt (p, 7, + "tor\"],PARAMETER[\"latitude_of_origin\",40],PARAMETER[\""); + add_srs_wkt (p, 8, + "central_meridian\",-76.58333333333333],PARAMETER[\"scale"); + add_srs_wkt (p, 9, + "_factor\",0.9999375],PARAMETER[\"false_easting\",250000]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORT"); + add_srs_wkt (p, 12, + "H],AUTHORITY[\"EPSG\",\"32116\"]]"); + p = add_epsg_def (filter, first, last, 32117, "epsg", 32117, + "NAD83 / New York West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40 +lon_0=-78.58333333333333 +k=0.999"); + add_proj4text (p, 1, + "9375 +x_0=350000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New York West\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator"); + add_srs_wkt (p, 7, + "\"],PARAMETER[\"latitude_of_origin\",40],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",-78.58333333333333],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9999375],PARAMETER[\"false_easting\",350000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"32117\"]]"); + p = add_epsg_def (filter, first, last, 32118, "epsg", 32118, + "NAD83 / New York Long Island"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.03333333333333 +lat_2=40.66666666666"); + add_proj4text (p, 1, + "666 +lat_0=40.16666666666666 +lon_0=-74 +x_0=300000 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / New York Long Island\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Con"); + add_srs_wkt (p, 7, + "formal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41"); + add_srs_wkt (p, 8, + ".03333333333333],PARAMETER[\"standard_parallel_2\",40.66"); + add_srs_wkt (p, 9, + "666666666666],PARAMETER[\"latitude_of_origin\",40.166666"); + add_srs_wkt (p, 10, + "66666666],PARAMETER[\"central_meridian\",-74],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",300000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 12, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32118\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 32119, "epsg", 32119, + "NAD83 / North Carolina"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.16666666666666 +lat_2=34.33333333333"); + add_proj4text (p, 1, + "334 +lat_0=33.75 +lon_0=-79 +x_0=609601.22 +y_0=0 +datum"); + add_proj4text (p, 2, + "=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / North Carolina\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36.16666"); + add_srs_wkt (p, 8, + "666666666],PARAMETER[\"standard_parallel_2\",34.33333333"); + add_srs_wkt (p, 9, + "333334],PARAMETER[\"latitude_of_origin\",33.75],PARAMETE"); + add_srs_wkt (p, 10, + "R[\"central_meridian\",-79],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 11, + "609601.22],PARAMETER[\"false_northing\",0],UNIT[\"metre\""); + add_srs_wkt (p, 12, + ",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"32119\"]]"); + p = add_epsg_def (filter, first, last, 32120, "epsg", 32120, + "NAD83 / North Dakota North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.43333333333"); + add_proj4text (p, 1, + "333 +lat_0=47 +lon_0=-100.5 +x_0=600000 +y_0=0 +datum=NA"); + add_proj4text (p, 2, + "D83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / North Dakota North\",GEOGCS[\"NAD83\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",48.7"); + add_srs_wkt (p, 8, + "3333333333333],PARAMETER[\"standard_parallel_2\",47.4333"); + add_srs_wkt (p, 9, + "3333333333],PARAMETER[\"latitude_of_origin\",47],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"central_meridian\",-100.5],PARAMETER[\"false_eastin"); + add_srs_wkt (p, 11, + "g\",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre"); + add_srs_wkt (p, 12, + "\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS"); + add_srs_wkt (p, 13, + "[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32120\"]]"); + p = add_epsg_def (filter, first, last, 32121, "epsg", 32121, + "NAD83 / North Dakota South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.48333333333333 +lat_2=46.18333333333"); + add_proj4text (p, 1, + "333 +lat_0=45.66666666666666 +lon_0=-100.5 +x_0=600000 +"); + add_proj4text (p, 2, + "y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / North Dakota South\",GEOGCS[\"NAD83\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",47.4"); + add_srs_wkt (p, 8, + "8333333333333],PARAMETER[\"standard_parallel_2\",46.1833"); + add_srs_wkt (p, 9, + "3333333333],PARAMETER[\"latitude_of_origin\",45.66666666"); + add_srs_wkt (p, 10, + "666666],PARAMETER[\"central_meridian\",-100.5],PARAMETER"); + add_srs_wkt (p, 11, + "[\"false_easting\",600000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 12, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32121\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 32122, "epsg", 32122, + "NAD83 / Ohio North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.7 +lat_2=40.43333333333333 +lat_0=39"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-82.5 +x_0=600000 +y_0=0 +datum=N"); + add_proj4text (p, 2, + "AD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Ohio North\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",41.7],PARAME"); + add_srs_wkt (p, 8, + "TER[\"standard_parallel_2\",40.43333333333333],PARAMETER"); + add_srs_wkt (p, 9, + "[\"latitude_of_origin\",39.66666666666666],PARAMETER[\"c"); + add_srs_wkt (p, 10, + "entral_meridian\",-82.5],PARAMETER[\"false_easting\",600"); + add_srs_wkt (p, 11, + "000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AU"); + add_srs_wkt (p, 12, + "THORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\","); + add_srs_wkt (p, 13, + "NORTH],AUTHORITY[\"EPSG\",\"32122\"]]"); + p = add_epsg_def (filter, first, last, 32123, "epsg", 32123, + "NAD83 / Ohio South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.03333333333333 +lat_2=38.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=38 +lon_0=-82.5 +x_0=600000 +y_0=0 +datum=NAD"); + add_proj4text (p, 2, + "83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Ohio South\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",40.033333333"); + add_srs_wkt (p, 8, + "33333],PARAMETER[\"standard_parallel_2\",38.733333333333"); + add_srs_wkt (p, 9, + "33],PARAMETER[\"latitude_of_origin\",38],PARAMETER[\"cen"); + add_srs_wkt (p, 10, + "tral_meridian\",-82.5],PARAMETER[\"false_easting\",60000"); + add_srs_wkt (p, 11, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 13, + "RTH],AUTHORITY[\"EPSG\",\"32123\"]]"); + p = add_epsg_def (filter, first, last, 32124, "epsg", 32124, + "NAD83 / Oklahoma North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.76666666666667 +lat_2=35.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=35 +lon_0=-98 +x_0=600000 +y_0=0 +datum=NAD83"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Oklahoma North\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",36.76666"); + add_srs_wkt (p, 8, + "666666667],PARAMETER[\"standard_parallel_2\",35.56666666"); + add_srs_wkt (p, 9, + "666667],PARAMETER[\"latitude_of_origin\",35],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-98],PARAMETER[\"false_easting\",6000"); + add_srs_wkt (p, 11, + "00],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 12, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",N"); + add_srs_wkt (p, 13, + "ORTH],AUTHORITY[\"EPSG\",\"32124\"]]"); + p = add_epsg_def (filter, first, last, 32125, "epsg", 32125, + "NAD83 / Oklahoma South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=35.23333333333333 +lat_2=33.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=33.33333333333334 +lon_0=-98 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Oklahoma South\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",35.23333"); + add_srs_wkt (p, 8, + "333333333],PARAMETER[\"standard_parallel_2\",33.93333333"); + add_srs_wkt (p, 9, + "333333],PARAMETER[\"latitude_of_origin\",33.333333333333"); + add_srs_wkt (p, 10, + "34],PARAMETER[\"central_meridian\",-98],PARAMETER[\"fals"); + add_srs_wkt (p, 11, + "e_easting\",600000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 12, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EA"); + add_srs_wkt (p, 13, + "ST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32125\"]]"); + p = add_epsg_def (filter, first, last, 32126, "epsg", 32126, + "NAD83 / Oregon North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46 +lat_2=44.33333333333334 +lat_0=43.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=2500000 +y_0=0 +datum=N"); + add_proj4text (p, 2, + "AD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Oregon North\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); + add_srs_wkt (p, 7, + "nic_2SP\"],PARAMETER[\"standard_parallel_1\",46],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_2\",44.33333333333334],PARAMETER["); + add_srs_wkt (p, 9, + "\"latitude_of_origin\",43.66666666666666],PARAMETER[\"ce"); + add_srs_wkt (p, 10, + "ntral_meridian\",-120.5],PARAMETER[\"false_easting\",250"); + add_srs_wkt (p, 11, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"32126\"]]"); + p = add_epsg_def (filter, first, last, 32127, "epsg", 32127, + "NAD83 / Oregon South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44 +lat_2=42.33333333333334 +lat_0=41.6"); + add_proj4text (p, 1, + "6666666666666 +lon_0=-120.5 +x_0=1500000 +y_0=0 +datum=N"); + add_proj4text (p, 2, + "AD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Oregon South\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); + add_srs_wkt (p, 7, + "nic_2SP\"],PARAMETER[\"standard_parallel_1\",44],PARAMET"); + add_srs_wkt (p, 8, + "ER[\"standard_parallel_2\",42.33333333333334],PARAMETER["); + add_srs_wkt (p, 9, + "\"latitude_of_origin\",41.66666666666666],PARAMETER[\"ce"); + add_srs_wkt (p, 10, + "ntral_meridian\",-120.5],PARAMETER[\"false_easting\",150"); + add_srs_wkt (p, 11, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"32127\"]]"); + p = add_epsg_def (filter, first, last, 32128, "epsg", 32128, + "NAD83 / Pennsylvania North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.95 +lat_2=40.88333333333333 +lat_0=4"); + add_proj4text (p, 1, + "0.16666666666666 +lon_0=-77.75 +x_0=600000 +y_0=0 +datum"); + add_proj4text (p, 2, + "=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Pennsylvania North\",GEOGCS[\"NAD83\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",41.9"); + add_srs_wkt (p, 8, + "5],PARAMETER[\"standard_parallel_2\",40.88333333333333],"); + add_srs_wkt (p, 9, + "PARAMETER[\"latitude_of_origin\",40.16666666666666],PARA"); + add_srs_wkt (p, 10, + "METER[\"central_meridian\",-77.75],PARAMETER[\"false_eas"); + add_srs_wkt (p, 11, + "ting\",600000],PARAMETER[\"false_northing\",0],UNIT[\"me"); + add_srs_wkt (p, 12, + "tre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],A"); + add_srs_wkt (p, 13, + "XIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32128\"]]"); + p = add_epsg_def (filter, first, last, 32129, "epsg", 32129, + "NAD83 / Pennsylvania South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.96666666666667 +lat_2=39.93333333333"); + add_proj4text (p, 1, + "333 +lat_0=39.33333333333334 +lon_0=-77.75 +x_0=600000 +"); + add_proj4text (p, 2, + "y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Pennsylvania South\",GEOGCS[\"NAD83\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40.9"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"standard_parallel_2\",39.9333"); + add_srs_wkt (p, 9, + "3333333333],PARAMETER[\"latitude_of_origin\",39.33333333"); + add_srs_wkt (p, 10, + "333334],PARAMETER[\"central_meridian\",-77.75],PARAMETER"); + add_srs_wkt (p, 11, + "[\"false_easting\",600000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 12, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32129\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 32130, "epsg", 32130, + "NAD83 / Rhode Island"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=41.08333333333334 +lon_0=-71.5 +k=0.9"); + add_proj4text (p, 1, + "9999375 +x_0=100000 +y_0=0 +datum=NAD83 +units=m +no_def"); + add_proj4text (p, 2, + "s"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Rhode Island\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",41.08333333333334],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"central_meridian\",-71.5],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.99999375],PARAMETER[\"false_easting\",100000],P"); + add_srs_wkt (p, 10, + "ARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 11, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"32130\"]]"); + p = add_epsg_def (filter, first, last, 32133, "epsg", 32133, + "NAD83 / South Carolina"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=34.83333333333334 +lat_2=32.5 +lat_0=31"); + add_proj4text (p, 1, + ".83333333333333 +lon_0=-81 +x_0=609600 +y_0=0 +datum=NAD"); + add_proj4text (p, 2, + "83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / South Carolina\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",34.83333"); + add_srs_wkt (p, 8, + "333333334],PARAMETER[\"standard_parallel_2\",32.5],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"latitude_of_origin\",31.83333333333333],PARAMETER"); + add_srs_wkt (p, 10, + "[\"central_meridian\",-81],PARAMETER[\"false_easting\",6"); + add_srs_wkt (p, 11, + "09600],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"32133\"]]"); + p = add_epsg_def (filter, first, last, 32134, "epsg", 32134, + "NAD83 / South Dakota North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.68333333333333 +lat_2=44.41666666666"); + add_proj4text (p, 1, + "666 +lat_0=43.83333333333334 +lon_0=-100 +x_0=600000 +y_"); + add_proj4text (p, 2, + "0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / South Dakota North\",GEOGCS[\"NAD83\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",45.6"); + add_srs_wkt (p, 8, + "8333333333333],PARAMETER[\"standard_parallel_2\",44.4166"); + add_srs_wkt (p, 9, + "6666666666],PARAMETER[\"latitude_of_origin\",43.83333333"); + add_srs_wkt (p, 10, + "333334],PARAMETER[\"central_meridian\",-100],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",600000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 12, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32134\"]]"); + p = add_epsg_def (filter, first, last, 32135, "epsg", 32135, + "NAD83 / South Dakota South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.4 +lat_2=42.83333333333334 +lat_0=42"); + add_proj4text (p, 1, + ".33333333333334 +lon_0=-100.3333333333333 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / South Dakota South\",GEOGCS[\"NAD83\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",44.4"); + add_srs_wkt (p, 8, + "],PARAMETER[\"standard_parallel_2\",42.83333333333334],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"latitude_of_origin\",42.33333333333334],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"central_meridian\",-100.3333333333333],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",600000],PARAMETER[\"false_northing\",0"); + add_srs_wkt (p, 12, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32135\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 32136, "epsg", 32136, + "NAD83 / Tennessee"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.41666666666666 +lat_2=35.25 +lat_0=3"); + add_proj4text (p, 1, + "4.33333333333334 +lon_0=-86 +x_0=600000 +y_0=0 +datum=NA"); + add_proj4text (p, 2, + "D83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Tennessee\",GEOGCS[\"NAD83\",DATUM[\"No"); + add_srs_wkt (p, 1, + "rth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,"); + add_srs_wkt (p, 2, + "298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenw"); + add_srs_wkt (p, 4, + "ich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0."); + add_srs_wkt (p, 5, + "0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY"); + add_srs_wkt (p, 6, + "[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Coni"); + add_srs_wkt (p, 7, + "c_2SP\"],PARAMETER[\"standard_parallel_1\",36.4166666666"); + add_srs_wkt (p, 8, + "6666],PARAMETER[\"standard_parallel_2\",35.25],PARAMETER"); + add_srs_wkt (p, 9, + "[\"latitude_of_origin\",34.33333333333334],PARAMETER[\"c"); + add_srs_wkt (p, 10, + "entral_meridian\",-86],PARAMETER[\"false_easting\",60000"); + add_srs_wkt (p, 11, + "0],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 12, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 13, + "RTH],AUTHORITY[\"EPSG\",\"32136\"]]"); + p = add_epsg_def (filter, first, last, 32137, "epsg", 32137, + "NAD83 / Texas North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=36.18333333333333 +lat_2=34.65 +lat_0=3"); + add_proj4text (p, 1, + "4 +lon_0=-101.5 +x_0=200000 +y_0=1000000 +datum=NAD83 +u"); + add_proj4text (p, 2, + "nits=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Texas North\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); + add_srs_wkt (p, 7, + "nic_2SP\"],PARAMETER[\"standard_parallel_1\",36.18333333"); + add_srs_wkt (p, 8, + "333333],PARAMETER[\"standard_parallel_2\",34.65],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"latitude_of_origin\",34],PARAMETER[\"central_meridi"); + add_srs_wkt (p, 10, + "an\",-101.5],PARAMETER[\"false_easting\",200000],PARAMET"); + add_srs_wkt (p, 11, + "ER[\"false_northing\",1000000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH]"); + add_srs_wkt (p, 13, + ",AUTHORITY[\"EPSG\",\"32137\"]]"); + p = add_epsg_def (filter, first, last, 32138, "epsg", 32138, + "NAD83 / Texas North Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=33.96666666666667 +lat_2=32.13333333333"); + add_proj4text (p, 1, + "333 +lat_0=31.66666666666667 +lon_0=-98.5 +x_0=600000 +y"); + add_proj4text (p, 2, + "_0=2000000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Texas North Central\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",33.9"); + add_srs_wkt (p, 8, + "6666666666667],PARAMETER[\"standard_parallel_2\",32.1333"); + add_srs_wkt (p, 9, + "3333333333],PARAMETER[\"latitude_of_origin\",31.66666666"); + add_srs_wkt (p, 10, + "666667],PARAMETER[\"central_meridian\",-98.5],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",600000],PARAMETER[\"false_northing\",2"); + add_srs_wkt (p, 12, + "000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],A"); + add_srs_wkt (p, 13, + "XIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 14, + "2138\"]]"); + p = add_epsg_def (filter, first, last, 32139, "epsg", 32139, + "NAD83 / Texas Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=31.88333333333333 +lat_2=30.11666666666"); + add_proj4text (p, 1, + "667 +lat_0=29.66666666666667 +lon_0=-100.3333333333333 +"); + add_proj4text (p, 2, + "x_0=700000 +y_0=3000000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Texas Central\",GEOGCS[\"NAD83\",DATUM["); + add_srs_wkt (p, 1, + "\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378"); + add_srs_wkt (p, 2, + "137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84["); + add_srs_wkt (p, 3, + "0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gr"); + add_srs_wkt (p, 4, + "eenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\""); + add_srs_wkt (p, 5, + ",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHOR"); + add_srs_wkt (p, 6, + "ITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_C"); + add_srs_wkt (p, 7, + "onic_2SP\"],PARAMETER[\"standard_parallel_1\",31.8833333"); + add_srs_wkt (p, 8, + "3333333],PARAMETER[\"standard_parallel_2\",30.1166666666"); + add_srs_wkt (p, 9, + "6667],PARAMETER[\"latitude_of_origin\",29.66666666666667"); + add_srs_wkt (p, 10, + "],PARAMETER[\"central_meridian\",-100.3333333333333],PAR"); + add_srs_wkt (p, 11, + "AMETER[\"false_easting\",700000],PARAMETER[\"false_north"); + add_srs_wkt (p, 12, + "ing\",3000000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 13, + "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 14, + "G\",\"32139\"]]"); + p = add_epsg_def (filter, first, last, 32140, "epsg", 32140, + "NAD83 / Texas South Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=30.28333333333333 +lat_2=28.38333333333"); + add_proj4text (p, 1, + "333 +lat_0=27.83333333333333 +lon_0=-99 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=4000000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Texas South Central\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",30.2"); + add_srs_wkt (p, 8, + "8333333333333],PARAMETER[\"standard_parallel_2\",28.3833"); + add_srs_wkt (p, 9, + "3333333333],PARAMETER[\"latitude_of_origin\",27.83333333"); + add_srs_wkt (p, 10, + "333333],PARAMETER[\"central_meridian\",-99],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",600000],PARAMETER[\"false_northing\",400"); + add_srs_wkt (p, 12, + "0000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXI"); + add_srs_wkt (p, 13, + "S[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"321"); + add_srs_wkt (p, 14, + "40\"]]"); + p = add_epsg_def (filter, first, last, 32141, "epsg", 32141, + "NAD83 / Texas South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=25.66666666666667 +lon_0=-98.5 +x_0=300000 +y"); + add_proj4text (p, 2, + "_0=5000000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Texas South\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); + add_srs_wkt (p, 7, + "nic_2SP\"],PARAMETER[\"standard_parallel_1\",27.83333333"); + add_srs_wkt (p, 8, + "333333],PARAMETER[\"standard_parallel_2\",26.16666666666"); + add_srs_wkt (p, 9, + "667],PARAMETER[\"latitude_of_origin\",25.66666666666667]"); + add_srs_wkt (p, 10, + ",PARAMETER[\"central_meridian\",-98.5],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",300000],PARAMETER[\"false_northing\",5000000]"); + add_srs_wkt (p, 12, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); + add_srs_wkt (p, 13, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32141\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 32142, "epsg", 32142, + "NAD83 / Utah North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=41.78333333333333 +lat_2=40.71666666666"); + add_proj4text (p, 1, + "667 +lat_0=40.33333333333334 +lon_0=-111.5 +x_0=500000 +"); + add_proj4text (p, 2, + "y_0=1000000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Utah North\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",41.783333333"); + add_srs_wkt (p, 8, + "33333],PARAMETER[\"standard_parallel_2\",40.716666666666"); + add_srs_wkt (p, 9, + "67],PARAMETER[\"latitude_of_origin\",40.33333333333334],"); + add_srs_wkt (p, 10, + "PARAMETER[\"central_meridian\",-111.5],PARAMETER[\"false"); + add_srs_wkt (p, 11, + "_easting\",500000],PARAMETER[\"false_northing\",1000000]"); + add_srs_wkt (p, 12, + ",UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X"); + add_srs_wkt (p, 13, + "\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32142\"]"); + add_srs_wkt (p, 14, + "]"); + p = add_epsg_def (filter, first, last, 32143, "epsg", 32143, + "NAD83 / Utah Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.65 +lat_2=39.01666666666667 +lat_0=3"); + add_proj4text (p, 1, + "8.33333333333334 +lon_0=-111.5 +x_0=500000 +y_0=2000000 "); + add_proj4text (p, 2, + "+datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Utah Central\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Co"); + add_srs_wkt (p, 7, + "nic_2SP\"],PARAMETER[\"standard_parallel_1\",40.65],PARA"); + add_srs_wkt (p, 8, + "METER[\"standard_parallel_2\",39.01666666666667],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"latitude_of_origin\",38.33333333333334],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-111.5],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 11, + "00000],PARAMETER[\"false_northing\",2000000],UNIT[\"metr"); + add_srs_wkt (p, 12, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32143\"]]"); + p = add_epsg_def (filter, first, last, 32144, "epsg", 32144, + "NAD83 / Utah South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.35 +lat_2=37.21666666666667 +lat_0=3"); + add_proj4text (p, 1, + "6.66666666666666 +lon_0=-111.5 +x_0=500000 +y_0=3000000 "); + add_proj4text (p, 2, + "+datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Utah South\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal_Con"); + add_srs_wkt (p, 7, + "ic_2SP\"],PARAMETER[\"standard_parallel_1\",38.35],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"standard_parallel_2\",37.21666666666667],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"latitude_of_origin\",36.66666666666666],PARAMETER[\""); + add_srs_wkt (p, 10, + "central_meridian\",-111.5],PARAMETER[\"false_easting\",5"); + add_srs_wkt (p, 11, + "00000],PARAMETER[\"false_northing\",3000000],UNIT[\"metr"); + add_srs_wkt (p, 12, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 13, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32144\"]]"); + p = add_epsg_def (filter, first, last, 32145, "epsg", 32145, + "NAD83 / Vermont"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=42.5 +lon_0=-72.5 +k=0.999964286 +x_0"); + add_proj4text (p, 1, + "=500000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Vermont\",GEOGCS[\"NAD83\",DATUM[\"Nort"); + add_srs_wkt (p, 1, + "h_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137,29"); + add_srs_wkt (p, 2, + "8.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0,0,"); + add_srs_wkt (p, 3, + "0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Greenwic"); + add_srs_wkt (p, 4, + "h\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01"); + add_srs_wkt (p, 5, + "74532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\""); + add_srs_wkt (p, 6, + "EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\"],PA"); + add_srs_wkt (p, 7, + "RAMETER[\"latitude_of_origin\",42.5],PARAMETER[\"central"); + add_srs_wkt (p, 8, + "_meridian\",-72.5],PARAMETER[\"scale_factor\",0.99996428"); + add_srs_wkt (p, 9, + "6],PARAMETER[\"false_easting\",500000],PARAMETER[\"false"); + add_srs_wkt (p, 10, + "_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"900"); + add_srs_wkt (p, 11, + "1\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32145\"]]"); + p = add_epsg_def (filter, first, last, 32146, "epsg", 32146, + "NAD83 / Virginia North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=39.2 +lat_2=38.03333333333333 +lat_0=37"); + add_proj4text (p, 1, + ".66666666666666 +lon_0=-78.5 +x_0=3500000 +y_0=2000000 +"); + add_proj4text (p, 2, + "datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Virginia North\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",39.2],PA"); + add_srs_wkt (p, 8, + "RAMETER[\"standard_parallel_2\",38.03333333333333],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"latitude_of_origin\",37.66666666666666],PARAMETER"); + add_srs_wkt (p, 10, + "[\"central_meridian\",-78.5],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",3500000],PARAMETER[\"false_northing\",2000000],UNIT[\"m"); + add_srs_wkt (p, 12, + "etre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],"); + add_srs_wkt (p, 13, + "AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32146\"]]"); + p = add_epsg_def (filter, first, last, 32147, "epsg", 32147, + "NAD83 / Virginia South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=37.96666666666667 +lat_2=36.76666666666"); + add_proj4text (p, 1, + "667 +lat_0=36.33333333333334 +lon_0=-78.5 +x_0=3500000 +"); + add_proj4text (p, 2, + "y_0=1000000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Virginia South\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",37.96666"); + add_srs_wkt (p, 8, + "666666667],PARAMETER[\"standard_parallel_2\",36.76666666"); + add_srs_wkt (p, 9, + "666667],PARAMETER[\"latitude_of_origin\",36.333333333333"); + add_srs_wkt (p, 10, + "34],PARAMETER[\"central_meridian\",-78.5],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_easting\",3500000],PARAMETER[\"false_northing\",1000"); + add_srs_wkt (p, 12, + "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); + add_srs_wkt (p, 13, + "[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"3214"); + add_srs_wkt (p, 14, + "7\"]]"); + p = add_epsg_def (filter, first, last, 32148, "epsg", 32148, + "NAD83 / Washington North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=48.73333333333333 +lat_2=47.5 +lat_0=47"); + add_proj4text (p, 1, + " +lon_0=-120.8333333333333 +x_0=500000 +y_0=0 +datum=NAD"); + add_proj4text (p, 2, + "83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Washington North\",GEOGCS[\"NAD83\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",48.7333"); + add_srs_wkt (p, 8, + "3333333333],PARAMETER[\"standard_parallel_2\",47.5],PARA"); + add_srs_wkt (p, 9, + "METER[\"latitude_of_origin\",47],PARAMETER[\"central_mer"); + add_srs_wkt (p, 10, + "idian\",-120.8333333333333],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 11, + "500000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1"); + add_srs_wkt (p, 12, + ",AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y"); + add_srs_wkt (p, 13, + "\",NORTH],AUTHORITY[\"EPSG\",\"32148\"]]"); + p = add_epsg_def (filter, first, last, 32149, "epsg", 32149, + "NAD83 / Washington South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=47.33333333333334 +lat_2=45.83333333333"); + add_proj4text (p, 1, + "334 +lat_0=45.33333333333334 +lon_0=-120.5 +x_0=500000 +"); + add_proj4text (p, 2, + "y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Washington South\",GEOGCS[\"NAD83\",DAT"); + add_srs_wkt (p, 1, + "UM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",6"); + add_srs_wkt (p, 2, + "378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS"); + add_srs_wkt (p, 3, + "84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",47.3333"); + add_srs_wkt (p, 8, + "3333333334],PARAMETER[\"standard_parallel_2\",45.8333333"); + add_srs_wkt (p, 9, + "3333334],PARAMETER[\"latitude_of_origin\",45.33333333333"); + add_srs_wkt (p, 10, + "334],PARAMETER[\"central_meridian\",-120.5],PARAMETER[\""); + add_srs_wkt (p, 11, + "false_easting\",500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt (p, 12, + "UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\""); + add_srs_wkt (p, 13, + ",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32149\"]]"); + p = add_epsg_def (filter, first, last, 32150, "epsg", 32150, + "NAD83 / West Virginia North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=40.25 +lat_2=39 +lat_0=38.5 +lon_0=-79."); + add_proj4text (p, 1, + "5 +x_0=600000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / West Virginia North\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",40.2"); + add_srs_wkt (p, 8, + "5],PARAMETER[\"standard_parallel_2\",39],PARAMETER[\"lat"); + add_srs_wkt (p, 9, + "itude_of_origin\",38.5],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 10, + "79.5],PARAMETER[\"false_easting\",600000],PARAMETER[\"fa"); + add_srs_wkt (p, 11, + "lse_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 13, + "EPSG\",\"32150\"]]"); + p = add_epsg_def (filter, first, last, 32151, "epsg", 32151, + "NAD83 / West Virginia South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=38.88333333333333 +lat_2=37.48333333333"); + add_proj4text (p, 1, + "333 +lat_0=37 +lon_0=-81 +x_0=600000 +y_0=0 +datum=NAD83"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / West Virginia South\",GEOGCS[\"NAD83\","); + add_srs_wkt (p, 1, + "DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",38.8"); + add_srs_wkt (p, 8, + "8333333333333],PARAMETER[\"standard_parallel_2\",37.4833"); + add_srs_wkt (p, 9, + "3333333333],PARAMETER[\"latitude_of_origin\",37],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"central_meridian\",-81],PARAMETER[\"false_easting\""); + add_srs_wkt (p, 11, + ",600000],PARAMETER[\"false_northing\",0],UNIT[\"metre\","); + add_srs_wkt (p, 12, + "1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\""); + add_srs_wkt (p, 13, + "Y\",NORTH],AUTHORITY[\"EPSG\",\"32151\"]]"); + p = add_epsg_def (filter, first, last, 32152, "epsg", 32152, + "NAD83 / Wisconsin North"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=46.76666666666667 +lat_2=45.56666666666"); + add_proj4text (p, 1, + "667 +lat_0=45.16666666666666 +lon_0=-90 +x_0=600000 +y_0"); + add_proj4text (p, 2, + "=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Wisconsin North\",GEOGCS[\"NAD83\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",46.7666"); + add_srs_wkt (p, 8, + "6666666667],PARAMETER[\"standard_parallel_2\",45.5666666"); + add_srs_wkt (p, 9, + "6666667],PARAMETER[\"latitude_of_origin\",45.16666666666"); + add_srs_wkt (p, 10, + "666],PARAMETER[\"central_meridian\",-90],PARAMETER[\"fal"); + add_srs_wkt (p, 11, + "se_easting\",600000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 12, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",E"); + add_srs_wkt (p, 13, + "AST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32152\"]]"); + p = add_epsg_def (filter, first, last, 32153, "epsg", 32153, + "NAD83 / Wisconsin Central"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=45.5 +lat_2=44.25 +lat_0=43.83333333333"); + add_proj4text (p, 1, + "334 +lon_0=-90 +x_0=600000 +y_0=0 +datum=NAD83 +units=m "); + add_proj4text (p, 2, + "+no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Wisconsin Central\",GEOGCS[\"NAD83\",DA"); + add_srs_wkt (p, 1, + "TUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\","); + add_srs_wkt (p, 2, + "6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWG"); + add_srs_wkt (p, 3, + "S84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM["); + add_srs_wkt (p, 4, + "\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"deg"); + add_srs_wkt (p, 5, + "ree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],A"); + add_srs_wkt (p, 6, + "UTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confor"); + add_srs_wkt (p, 7, + "mal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",45.5]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"standard_parallel_2\",44.25],PARAMETER[\"la"); + add_srs_wkt (p, 9, + "titude_of_origin\",43.83333333333334],PARAMETER[\"centra"); + add_srs_wkt (p, 10, + "l_meridian\",-90],PARAMETER[\"false_easting\",600000],PA"); + add_srs_wkt (p, 11, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 12, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 13, + "AUTHORITY[\"EPSG\",\"32153\"]]"); + p = add_epsg_def (filter, first, last, 32154, "epsg", 32154, + "NAD83 / Wisconsin South"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=44.06666666666667 +lat_2=42.73333333333"); + add_proj4text (p, 1, + "333 +lat_0=42 +lon_0=-90 +x_0=600000 +y_0=0 +datum=NAD83"); + add_proj4text (p, 2, + " +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Wisconsin South\",GEOGCS[\"NAD83\",DATU"); + add_srs_wkt (p, 1, + "M[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",63"); + add_srs_wkt (p, 2, + "78137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS8"); + add_srs_wkt (p, 3, + "4[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\""); + add_srs_wkt (p, 4, + "Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degre"); + add_srs_wkt (p, 5, + "e\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUT"); + add_srs_wkt (p, 6, + "HORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conforma"); + add_srs_wkt (p, 7, + "l_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",44.0666"); + add_srs_wkt (p, 8, + "6666666667],PARAMETER[\"standard_parallel_2\",42.7333333"); + add_srs_wkt (p, 9, + "3333333],PARAMETER[\"latitude_of_origin\",42],PARAMETER["); + add_srs_wkt (p, 10, + "\"central_meridian\",-90],PARAMETER[\"false_easting\",60"); + add_srs_wkt (p, 11, + "0000],PARAMETER[\"false_northing\",0],UNIT[\"metre\",1,A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\""); + add_srs_wkt (p, 13, + ",NORTH],AUTHORITY[\"EPSG\",\"32154\"]]"); + p = add_epsg_def (filter, first, last, 32155, "epsg", 32155, + "NAD83 / Wyoming East"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-105.1666666666667 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=200000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Wyoming East\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",40.5],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",-105.1666666666667],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9999375],PARAMETER[\"false_easting\",200000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY"); + add_srs_wkt (p, 11, + "[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],"); + add_srs_wkt (p, 12, + "AUTHORITY[\"EPSG\",\"32155\"]]"); + p = add_epsg_def (filter, first, last, 32156, "epsg", 32156, + "NAD83 / Wyoming East Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-107.3333333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=400000 +y_0=100000 +datum=NAD83 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Wyoming East Central\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",40.5],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-107.3333333333333],PARAMETER["); + add_srs_wkt (p, 9, + "\"scale_factor\",0.9999375],PARAMETER[\"false_easting\","); + add_srs_wkt (p, 10, + "400000],PARAMETER[\"false_northing\",100000],UNIT[\"metr"); + add_srs_wkt (p, 11, + "e\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXI"); + add_srs_wkt (p, 12, + "S[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32156\"]]"); + p = add_epsg_def (filter, first, last, 32157, "epsg", 32157, + "NAD83 / Wyoming West Central"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-108.75 +k=0.9999375 +x_0"); + add_proj4text (p, 1, + "=600000 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Wyoming West Central\",GEOGCS[\"NAD83\""); + add_srs_wkt (p, 1, + ",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980"); + add_srs_wkt (p, 2, + "\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],T"); + add_srs_wkt (p, 3, + "OWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIM"); + add_srs_wkt (p, 4, + "EM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\""); + add_srs_wkt (p, 5, + "degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]"); + add_srs_wkt (p, 6, + "],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_"); + add_srs_wkt (p, 7, + "Mercator\"],PARAMETER[\"latitude_of_origin\",40.5],PARAM"); + add_srs_wkt (p, 8, + "ETER[\"central_meridian\",-108.75],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9999375],PARAMETER[\"false_easting\",600000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],A"); + add_srs_wkt (p, 12, + "UTHORITY[\"EPSG\",\"32157\"]]"); + p = add_epsg_def (filter, first, last, 32158, "epsg", 32158, + "NAD83 / Wyoming West"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=40.5 +lon_0=-110.0833333333333 +k=0.9"); + add_proj4text (p, 1, + "999375 +x_0=800000 +y_0=100000 +datum=NAD83 +units=m +no"); + add_proj4text (p, 2, + "_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Wyoming West\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",40.5],PARAMETER[\"cen"); + add_srs_wkt (p, 8, + "tral_meridian\",-110.0833333333333],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9999375],PARAMETER[\"false_easting\",800000],PA"); + add_srs_wkt (p, 10, + "RAMETER[\"false_northing\",100000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NO"); + add_srs_wkt (p, 12, + "RTH],AUTHORITY[\"EPSG\",\"32158\"]]"); + p = add_epsg_def (filter, first, last, 32161, "epsg", 32161, + "NAD83 / Puerto Rico & Virgin Is."); + add_proj4text (p, 0, + "+proj=lcc +lat_1=18.43333333333333 +lat_2=18.03333333333"); + add_proj4text (p, 1, + "333 +lat_0=17.83333333333333 +lon_0=-66.43333333333334 +"); + add_proj4text (p, 2, + "x_0=200000 +y_0=200000 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Puerto Rico & Virgin Is.\",GEOGCS[\"NAD"); + add_srs_wkt (p, 1, + "83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS "); + add_srs_wkt (p, 2, + "1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert"); + add_srs_wkt (p, 7, + "_Conformal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\""); + add_srs_wkt (p, 8, + ",18.43333333333333],PARAMETER[\"standard_parallel_2\",18"); + add_srs_wkt (p, 9, + ".03333333333333],PARAMETER[\"latitude_of_origin\",17.833"); + add_srs_wkt (p, 10, + "33333333333],PARAMETER[\"central_meridian\",-66.43333333"); + add_srs_wkt (p, 11, + "333334],PARAMETER[\"false_easting\",200000],PARAMETER[\""); + add_srs_wkt (p, 12, + "false_northing\",200000],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 13, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 14, + "RITY[\"EPSG\",\"32161\"]]"); + p = add_epsg_def (filter, first, last, 32164, "epsg", 32164, + "NAD83 / BLM 14N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 14N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",-99],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 11, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32164\"]]"); + p = add_epsg_def (filter, first, last, 32165, "epsg", 32165, + "NAD83 / BLM 15N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 15N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",-93],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 11, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32165\"]]"); + p = add_epsg_def (filter, first, last, 32166, "epsg", 32166, + "NAD83 / BLM 16N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 16N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",-87],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 11, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32166\"]]"); + p = add_epsg_def (filter, first, last, 32167, "epsg", 32167, + "NAD83 / BLM 17N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=NAD83 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / BLM 17N (ftUS)\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercat"); + add_srs_wkt (p, 7, + "or\"],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"ce"); + add_srs_wkt (p, 8, + "ntral_meridian\",-81],PARAMETER[\"scale_factor\",0.9996]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_easting\",1640416.67],PARAMETER[\"fal"); + add_srs_wkt (p, 10, + "se_northing\",0],UNIT[\"US survey foot\",0.3048006096012"); + add_srs_wkt (p, 11, + "192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\"X\",EAST],AXIS["); + add_srs_wkt (p, 12, + "\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32167\"]]"); + p = add_epsg_def (filter, first, last, 32180, "epsg", 32180, + "NAD83 / SCoPQ zone 2 (deprecated)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-55.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / SCoPQ zone 2 (deprecated)\",GEOGCS[\"NA"); + add_srs_wkt (p, 1, + "D83\",DATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS"); + add_srs_wkt (p, 2, + " 1980\",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\""); + add_srs_wkt (p, 3, + "]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],"); + add_srs_wkt (p, 4, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 5, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 6, + "2\"]],AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 7, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 8, + "METER[\"central_meridian\",-55.5],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 9, + "or\",0.9999],PARAMETER[\"false_easting\",304800],PARAMET"); + add_srs_wkt (p, 10, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 11, + "SG\",\"9001\"]],AXIS[\"X\",EAST],AXIS[\"Y\",NORTH],AUTHO"); + add_srs_wkt (p, 12, + "RITY[\"EPSG\",\"32180\"]]"); + p = add_epsg_def (filter, first, last, 32181, "epsg", 32181, + "NAD83 / MTM zone 1"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-53 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 1\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-53],PARAMETER[\"scale_factor\",0.9999],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32181\"]]"); + p = add_epsg_def (filter, first, last, 32182, "epsg", 32182, + "NAD83 / MTM zone 2"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-56 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 2\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-56],PARAMETER[\"scale_factor\",0.9999],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32182\"]]"); + p = add_epsg_def (filter, first, last, 32183, "epsg", 32183, + "NAD83 / MTM zone 3"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-58.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 3\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-58.5],PARAMETER[\"scale_factor\",0.9999],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32183\"]]"); + p = add_epsg_def (filter, first, last, 32184, "epsg", 32184, + "NAD83 / MTM zone 4"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-61.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 4\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-61.5],PARAMETER[\"scale_factor\",0.9999],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32184\"]]"); + p = add_epsg_def (filter, first, last, 32185, "epsg", 32185, + "NAD83 / MTM zone 5"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-64.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 5\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-64.5],PARAMETER[\"scale_factor\",0.9999],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32185\"]]"); + p = add_epsg_def (filter, first, last, 32186, "epsg", 32186, + "NAD83 / MTM zone 6"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-67.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 6\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-67.5],PARAMETER[\"scale_factor\",0.9999],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32186\"]]"); + p = add_epsg_def (filter, first, last, 32187, "epsg", 32187, + "NAD83 / MTM zone 7"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-70.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 7\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-70.5],PARAMETER[\"scale_factor\",0.9999],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32187\"]]"); + p = add_epsg_def (filter, first, last, 32188, "epsg", 32188, + "NAD83 / MTM zone 8"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-73.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 8\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-73.5],PARAMETER[\"scale_factor\",0.9999],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32188\"]]"); + p = add_epsg_def (filter, first, last, 32189, "epsg", 32189, + "NAD83 / MTM zone 9"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-76.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 9\",GEOGCS[\"NAD83\",DATUM[\"N"); + add_srs_wkt (p, 1, + "orth_American_Datum_1983\",SPHEROID[\"GRS 1980\",6378137"); + add_srs_wkt (p, 2, + ",298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,0"); + add_srs_wkt (p, 3, + ",0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Green"); + add_srs_wkt (p, 4, + "wich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0"); + add_srs_wkt (p, 5, + ".0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORIT"); + add_srs_wkt (p, 6, + "Y[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-76.5],PARAMETER[\"scale_factor\",0.9999],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32189\"]]"); + p = add_epsg_def (filter, first, last, 32190, "epsg", 32190, + "NAD83 / MTM zone 10"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-79.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 10\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-79.5],PARAMETER[\"scale_factor\",0.9999],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"E(X)\",EAST],AXIS[\"N(Y)\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32190\"]]"); + p = add_epsg_def (filter, first, last, 32191, "epsg", 32191, + "NAD83 / MTM zone 11"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-82.5 +k=0.9999 +x_0=304800 "); + add_proj4text (p, 1, + "+y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 11\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-82.5],PARAMETER[\"scale_factor\",0.9999],P"); + add_srs_wkt (p, 9, + "ARAMETER[\"false_easting\",304800],PARAMETER[\"false_nor"); + add_srs_wkt (p, 10, + "thing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]"); + add_srs_wkt (p, 11, + "],AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHOR"); + add_srs_wkt (p, 12, + "ITY[\"EPSG\",\"32191\"]]"); + p = add_epsg_def (filter, first, last, 32192, "epsg", 32192, + "NAD83 / MTM zone 12"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 12\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-81],PARAMETER[\"scale_factor\",0.9999],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"32192\"]]"); + p = add_epsg_def (filter, first, last, 32193, "epsg", 32193, + "NAD83 / MTM zone 13"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-84 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 13\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-84],PARAMETER[\"scale_factor\",0.9999],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"32193\"]]"); + p = add_epsg_def (filter, first, last, 32194, "epsg", 32194, + "NAD83 / MTM zone 14"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 14\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-87],PARAMETER[\"scale_factor\",0.9999],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"32194\"]]"); + p = add_epsg_def (filter, first, last, 32195, "epsg", 32195, + "NAD83 / MTM zone 15"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-90 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 15\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-90],PARAMETER[\"scale_factor\",0.9999],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"32195\"]]"); + p = add_epsg_def (filter, first, last, 32196, "epsg", 32196, + "NAD83 / MTM zone 16"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 16\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-93],PARAMETER[\"scale_factor\",0.9999],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"32196\"]]"); + p = add_epsg_def (filter, first, last, 32197, "epsg", 32197, + "NAD83 / MTM zone 17"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-96 +k=0.9999 +x_0=304800 +y"); + add_proj4text (p, 1, + "_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / MTM zone 17\",GEOGCS[\"NAD83\",DATUM[\""); + add_srs_wkt (p, 1, + "North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637813"); + add_srs_wkt (p, 2, + "7,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84[0,"); + add_srs_wkt (p, 3, + "0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"Gree"); + add_srs_wkt (p, 4, + "nwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\","); + add_srs_wkt (p, 5, + "0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORI"); + add_srs_wkt (p, 6, + "TY[\"EPSG\",\"4269\"]],PROJECTION[\"Transverse_Mercator\""); + add_srs_wkt (p, 7, + "],PARAMETER[\"latitude_of_origin\",0],PARAMETER[\"centra"); + add_srs_wkt (p, 8, + "l_meridian\",-96],PARAMETER[\"scale_factor\",0.9999],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_easting\",304800],PARAMETER[\"false_north"); + add_srs_wkt (p, 10, + "ing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt (p, 11, + "AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORIT"); + add_srs_wkt (p, 12, + "Y[\"EPSG\",\"32197\"]]"); + p = add_epsg_def (filter, first, last, 32198, "epsg", 32198, + "NAD83 / Quebec Lambert"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=60 +lat_2=46 +lat_0=44 +lon_0=-68.5 +x_"); + add_proj4text (p, 1, + "0=0 +y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Quebec Lambert\",GEOGCS[\"NAD83\",DATUM"); + add_srs_wkt (p, 1, + "[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\",637"); + add_srs_wkt (p, 2, + "8137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOWGS84"); + add_srs_wkt (p, 3, + "[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM[\"G"); + add_srs_wkt (p, 4, + "reenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree"); + add_srs_wkt (p, 5, + "\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTH"); + add_srs_wkt (p, 6, + "ORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Conformal"); + add_srs_wkt (p, 7, + "_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",60],PARA"); + add_srs_wkt (p, 8, + "METER[\"standard_parallel_2\",46],PARAMETER[\"latitude_o"); + add_srs_wkt (p, 9, + "f_origin\",44],PARAMETER[\"central_meridian\",-68.5],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_easting\",0],PARAMETER[\"false_northing\""); + add_srs_wkt (p, 11, + ",0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 12, + "\"X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32198"); + add_srs_wkt (p, 13, + "\"]]"); + p = add_epsg_def (filter, first, last, 32199, "epsg", 32199, + "NAD83 / Louisiana Offshore"); + add_proj4text (p, 0, + "+proj=lcc +lat_1=27.83333333333333 +lat_2=26.16666666666"); + add_proj4text (p, 1, + "667 +lat_0=25.5 +lon_0=-91.33333333333333 +x_0=1000000 +"); + add_proj4text (p, 2, + "y_0=0 +datum=NAD83 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"NAD83 / Louisiana Offshore\",GEOGCS[\"NAD83\",D"); + add_srs_wkt (p, 1, + "ATUM[\"North_American_Datum_1983\",SPHEROID[\"GRS 1980\""); + add_srs_wkt (p, 2, + ",6378137,298.257222101,AUTHORITY[\"EPSG\",\"7019\"]],TOW"); + add_srs_wkt (p, 3, + "GS84[0,0,0,0,0,0,0],AUTHORITY[\"EPSG\",\"6269\"]],PRIMEM"); + add_srs_wkt (p, 4, + "[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"de"); + add_srs_wkt (p, 5, + "gree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt (p, 6, + "AUTHORITY[\"EPSG\",\"4269\"]],PROJECTION[\"Lambert_Confo"); + add_srs_wkt (p, 7, + "rmal_Conic_2SP\"],PARAMETER[\"standard_parallel_1\",27.8"); + add_srs_wkt (p, 8, + "3333333333333],PARAMETER[\"standard_parallel_2\",26.1666"); + add_srs_wkt (p, 9, + "6666666667],PARAMETER[\"latitude_of_origin\",25.5],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"central_meridian\",-91.33333333333333],PARAMETER["); + add_srs_wkt (p, 11, + "\"false_easting\",1000000],PARAMETER[\"false_northing\","); + add_srs_wkt (p, 12, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 13, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32199\""); + add_srs_wkt (p, 14, + "]]"); + p = add_epsg_def (filter, first, last, 32201, "epsg", 32201, + "WGS 72 / UTM zone 1N"); + add_proj4text (p, 0, + "+proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); + add_proj4text (p, 1, + "4,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 1N\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32201\"]]"); + p = add_epsg_def (filter, first, last, 32202, "epsg", 32202, + "WGS 72 / UTM zone 2N"); + add_proj4text (p, 0, + "+proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); + add_proj4text (p, 1, + "4,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 2N\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "171],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32202\"]]"); + p = add_epsg_def (filter, first, last, 32203, "epsg", 32203, + "WGS 72 / UTM zone 3N"); + add_proj4text (p, 0, + "+proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); + add_proj4text (p, 1, + "4,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 3N\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "165],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32203\"]]"); + p = add_epsg_def (filter, first, last, 32204, "epsg", 32204, + "WGS 72 / UTM zone 4N"); + add_proj4text (p, 0, + "+proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); + add_proj4text (p, 1, + "4,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 4N\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "159],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32204\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_43.c b/src/spatialite/src/srsinit/epsg_inlined_43.c new file mode 100644 index 0000000..2e263a2 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_43.c @@ -0,0 +1,3290 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_43 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 32205, "epsg", 32205, + "WGS 72 / UTM zone 5N"); + add_proj4text (p, 0, + "+proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); + add_proj4text (p, 1, + "4,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 5N\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "153],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32205\"]]"); + p = add_epsg_def (filter, first, last, 32206, "epsg", 32206, + "WGS 72 / UTM zone 6N"); + add_proj4text (p, 0, + "+proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); + add_proj4text (p, 1, + "4,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 6N\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "147],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32206\"]]"); + p = add_epsg_def (filter, first, last, 32207, "epsg", 32207, + "WGS 72 / UTM zone 7N"); + add_proj4text (p, 0, + "+proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); + add_proj4text (p, 1, + "4,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 7N\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "141],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32207\"]]"); + p = add_epsg_def (filter, first, last, 32208, "epsg", 32208, + "WGS 72 / UTM zone 8N"); + add_proj4text (p, 0, + "+proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); + add_proj4text (p, 1, + "4,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 8N\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "135],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32208\"]]"); + p = add_epsg_def (filter, first, last, 32209, "epsg", 32209, + "WGS 72 / UTM zone 9N"); + add_proj4text (p, 0, + "+proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.55"); + add_proj4text (p, 1, + "4,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 9N\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "129],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32209\"]]"); + p = add_epsg_def (filter, first, last, 32210, "epsg", 32210, + "WGS 72 / UTM zone 10N"); + add_proj4text (p, 0, + "+proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 10N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-123],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 11, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"32210\"]]"); + p = add_epsg_def (filter, first, last, 32211, "epsg", 32211, + "WGS 72 / UTM zone 11N"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 11N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 11, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"32211\"]]"); + p = add_epsg_def (filter, first, last, 32212, "epsg", 32212, + "WGS 72 / UTM zone 12N"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 12N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 11, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"32212\"]]"); + p = add_epsg_def (filter, first, last, 32213, "epsg", 32213, + "WGS 72 / UTM zone 13N"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 13N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",500000],PARAMETER[\"false_northing\",0],UN"); + add_srs_wkt (p, 10, + "IT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"East"); + add_srs_wkt (p, 11, + "ing\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 12, + "\"32213\"]]"); + p = add_epsg_def (filter, first, last, 32214, "epsg", 32214, + "WGS 72 / UTM zone 14N"); + add_proj4text (p, 0, + "+proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 14N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-99],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32214\"]]"); + p = add_epsg_def (filter, first, last, 32215, "epsg", 32215, + "WGS 72 / UTM zone 15N"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 15N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-93],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32215\"]]"); + p = add_epsg_def (filter, first, last, 32216, "epsg", 32216, + "WGS 72 / UTM zone 16N"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 16N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-87],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32216\"]]"); + p = add_epsg_def (filter, first, last, 32217, "epsg", 32217, + "WGS 72 / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 17N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32217\"]]"); + p = add_epsg_def (filter, first, last, 32218, "epsg", 32218, + "WGS 72 / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 18N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32218\"]]"); + p = add_epsg_def (filter, first, last, 32219, "epsg", 32219, + "WGS 72 / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 19N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32219\"]]"); + p = add_epsg_def (filter, first, last, 32220, "epsg", 32220, + "WGS 72 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 20N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32220\"]]"); + p = add_epsg_def (filter, first, last, 32221, "epsg", 32221, + "WGS 72 / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 21N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32221\"]]"); + p = add_epsg_def (filter, first, last, 32222, "epsg", 32222, + "WGS 72 / UTM zone 22N"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 22N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32222\"]]"); + p = add_epsg_def (filter, first, last, 32223, "epsg", 32223, + "WGS 72 / UTM zone 23N"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 23N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32223\"]]"); + p = add_epsg_def (filter, first, last, 32224, "epsg", 32224, + "WGS 72 / UTM zone 24N"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 24N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32224\"]]"); + p = add_epsg_def (filter, first, last, 32225, "epsg", 32225, + "WGS 72 / UTM zone 25N"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 25N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32225\"]]"); + p = add_epsg_def (filter, first, last, 32226, "epsg", 32226, + "WGS 72 / UTM zone 26N"); + add_proj4text (p, 0, + "+proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 26N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-27],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32226\"]]"); + p = add_epsg_def (filter, first, last, 32227, "epsg", 32227, + "WGS 72 / UTM zone 27N"); + add_proj4text (p, 0, + "+proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 27N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-21],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32227\"]]"); + p = add_epsg_def (filter, first, last, 32228, "epsg", 32228, + "WGS 72 / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 28N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32228\"]]"); + p = add_epsg_def (filter, first, last, 32229, "epsg", 32229, + "WGS 72 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 29N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32229\"]]"); + p = add_epsg_def (filter, first, last, 32230, "epsg", 32230, + "WGS 72 / UTM zone 30N"); + add_proj4text (p, 0, + "+proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 30N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32230\"]]"); + p = add_epsg_def (filter, first, last, 32231, "epsg", 32231, + "WGS 72 / UTM zone 31N"); + add_proj4text (p, 0, + "+proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 31N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 12, + "2231\"]]"); + p = add_epsg_def (filter, first, last, 32232, "epsg", 32232, + "WGS 72 / UTM zone 32N"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 32N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",0],UNIT["); + add_srs_wkt (p, 10, + "\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting"); + add_srs_wkt (p, 11, + "\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\"3"); + add_srs_wkt (p, 12, + "2232\"]]"); + p = add_epsg_def (filter, first, last, 32233, "epsg", 32233, + "WGS 72 / UTM zone 33N"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 33N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32233\"]]"); + p = add_epsg_def (filter, first, last, 32234, "epsg", 32234, + "WGS 72 / UTM zone 34N"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 34N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",21],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32234\"]]"); + p = add_epsg_def (filter, first, last, 32235, "epsg", 32235, + "WGS 72 / UTM zone 35N"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 35N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",27],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32235\"]]"); + p = add_epsg_def (filter, first, last, 32236, "epsg", 32236, + "WGS 72 / UTM zone 36N"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 36N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32236\"]]"); + p = add_epsg_def (filter, first, last, 32237, "epsg", 32237, + "WGS 72 / UTM zone 37N"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 37N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32237\"]]"); + p = add_epsg_def (filter, first, last, 32238, "epsg", 32238, + "WGS 72 / UTM zone 38N"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 38N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32238\"]]"); + p = add_epsg_def (filter, first, last, 32239, "epsg", 32239, + "WGS 72 / UTM zone 39N"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 39N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32239\"]]"); + p = add_epsg_def (filter, first, last, 32240, "epsg", 32240, + "WGS 72 / UTM zone 40N"); + add_proj4text (p, 0, + "+proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 40N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32240\"]]"); + p = add_epsg_def (filter, first, last, 32241, "epsg", 32241, + "WGS 72 / UTM zone 41N"); + add_proj4text (p, 0, + "+proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 41N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32241\"]]"); + p = add_epsg_def (filter, first, last, 32242, "epsg", 32242, + "WGS 72 / UTM zone 42N"); + add_proj4text (p, 0, + "+proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 42N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32242\"]]"); + p = add_epsg_def (filter, first, last, 32243, "epsg", 32243, + "WGS 72 / UTM zone 43N"); + add_proj4text (p, 0, + "+proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 43N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32243\"]]"); + p = add_epsg_def (filter, first, last, 32244, "epsg", 32244, + "WGS 72 / UTM zone 44N"); + add_proj4text (p, 0, + "+proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 44N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32244\"]]"); + p = add_epsg_def (filter, first, last, 32245, "epsg", 32245, + "WGS 72 / UTM zone 45N"); + add_proj4text (p, 0, + "+proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 45N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",87],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32245\"]]"); + p = add_epsg_def (filter, first, last, 32246, "epsg", 32246, + "WGS 72 / UTM zone 46N"); + add_proj4text (p, 0, + "+proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 46N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",93],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32246\"]]"); + p = add_epsg_def (filter, first, last, 32247, "epsg", 32247, + "WGS 72 / UTM zone 47N"); + add_proj4text (p, 0, + "+proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 47N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",99],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",0],UNIT"); + add_srs_wkt (p, 10, + "[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Eastin"); + add_srs_wkt (p, 11, + "g\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32247\"]]"); + p = add_epsg_def (filter, first, last, 32248, "epsg", 32248, + "WGS 72 / UTM zone 48N"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 48N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32248\"]]"); + p = add_epsg_def (filter, first, last, 32249, "epsg", 32249, + "WGS 72 / UTM zone 49N"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 49N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32249\"]]"); + p = add_epsg_def (filter, first, last, 32250, "epsg", 32250, + "WGS 72 / UTM zone 50N"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 50N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32250\"]]"); + p = add_epsg_def (filter, first, last, 32251, "epsg", 32251, + "WGS 72 / UTM zone 51N"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 51N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",123],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32251\"]]"); + p = add_epsg_def (filter, first, last, 32252, "epsg", 32252, + "WGS 72 / UTM zone 52N"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 52N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",129],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32252\"]]"); + p = add_epsg_def (filter, first, last, 32253, "epsg", 32253, + "WGS 72 / UTM zone 53N"); + add_proj4text (p, 0, + "+proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 53N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",135],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32253\"]]"); + p = add_epsg_def (filter, first, last, 32254, "epsg", 32254, + "WGS 72 / UTM zone 54N"); + add_proj4text (p, 0, + "+proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 54N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",141],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32254\"]]"); + p = add_epsg_def (filter, first, last, 32255, "epsg", 32255, + "WGS 72 / UTM zone 55N"); + add_proj4text (p, 0, + "+proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 55N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",147],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32255\"]]"); + p = add_epsg_def (filter, first, last, 32256, "epsg", 32256, + "WGS 72 / UTM zone 56N"); + add_proj4text (p, 0, + "+proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 56N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",153],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32256\"]]"); + p = add_epsg_def (filter, first, last, 32257, "epsg", 32257, + "WGS 72 / UTM zone 57N"); + add_proj4text (p, 0, + "+proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 57N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",159],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32257\"]]"); + p = add_epsg_def (filter, first, last, 32258, "epsg", 32258, + "WGS 72 / UTM zone 58N"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 58N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",165],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32258\"]]"); + p = add_epsg_def (filter, first, last, 32259, "epsg", 32259, + "WGS 72 / UTM zone 59N"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 59N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",171],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32259\"]]"); + p = add_epsg_def (filter, first, last, 32260, "epsg", 32260, + "WGS 72 / UTM zone 60N"); + add_proj4text (p, 0, + "+proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,4.5,0,0,0.5"); + add_proj4text (p, 1, + "54,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 60N\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",0],UNI"); + add_srs_wkt (p, 10, + "T[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"Easti"); + add_srs_wkt (p, 11, + "ng\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 12, + "32260\"]]"); + p = add_epsg_def (filter, first, last, 32301, "epsg", 32301, + "WGS 72 / UTM zone 1S"); + add_proj4text (p, 0, + "+proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); + add_proj4text (p, 1, + ",0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 1S\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32301\"]]"); + p = add_epsg_def (filter, first, last, 32302, "epsg", 32302, + "WGS 72 / UTM zone 2S"); + add_proj4text (p, 0, + "+proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); + add_proj4text (p, 1, + ",0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 2S\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "171],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32302\"]]"); + p = add_epsg_def (filter, first, last, 32303, "epsg", 32303, + "WGS 72 / UTM zone 3S"); + add_proj4text (p, 0, + "+proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); + add_proj4text (p, 1, + ",0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 3S\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "165],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32303\"]]"); + p = add_epsg_def (filter, first, last, 32304, "epsg", 32304, + "WGS 72 / UTM zone 4S"); + add_proj4text (p, 0, + "+proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); + add_proj4text (p, 1, + ",0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 4S\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "159],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32304\"]]"); + p = add_epsg_def (filter, first, last, 32305, "epsg", 32305, + "WGS 72 / UTM zone 5S"); + add_proj4text (p, 0, + "+proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); + add_proj4text (p, 1, + ",0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 5S\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "153],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32305\"]]"); + p = add_epsg_def (filter, first, last, 32306, "epsg", 32306, + "WGS 72 / UTM zone 6S"); + add_proj4text (p, 0, + "+proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); + add_proj4text (p, 1, + ",0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 6S\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "147],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32306\"]]"); + p = add_epsg_def (filter, first, last, 32307, "epsg", 32307, + "WGS 72 / UTM zone 7S"); + add_proj4text (p, 0, + "+proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); + add_proj4text (p, 1, + ",0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 7S\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "141],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32307\"]]"); + p = add_epsg_def (filter, first, last, 32308, "epsg", 32308, + "WGS 72 / UTM zone 8S"); + add_proj4text (p, 0, + "+proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); + add_proj4text (p, 1, + ",0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 8S\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "135],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32308\"]]"); + p = add_epsg_def (filter, first, last, 32309, "epsg", 32309, + "WGS 72 / UTM zone 9S"); + add_proj4text (p, 0, + "+proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,4.5,0"); + add_proj4text (p, 1, + ",0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 9S\",GEOGCS[\"WGS 72\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORIT"); + add_srs_wkt (p, 2, + "Y[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263],"); + add_srs_wkt (p, 3, + "AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AUT"); + add_srs_wkt (p, 4, + "HORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251"); + add_srs_wkt (p, 5, + "99433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 6, + "4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER[\""); + add_srs_wkt (p, 7, + "latitude_of_origin\",0],PARAMETER[\"central_meridian\",-"); + add_srs_wkt (p, 8, + "129],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32309\"]]"); + p = add_epsg_def (filter, first, last, 32310, "epsg", 32310, + "WGS 72 / UTM zone 10S"); + add_proj4text (p, 0, + "+proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 10S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-123],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",500000],PARAMETER[\"false_northing\",10000"); + add_srs_wkt (p, 10, + "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); + add_srs_wkt (p, 11, + "[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"32310\"]]"); + p = add_epsg_def (filter, first, last, 32311, "epsg", 32311, + "WGS 72 / UTM zone 11S"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 11S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",500000],PARAMETER[\"false_northing\",10000"); + add_srs_wkt (p, 10, + "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); + add_srs_wkt (p, 11, + "[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"32311\"]]"); + p = add_epsg_def (filter, first, last, 32312, "epsg", 32312, + "WGS 72 / UTM zone 12S"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 12S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",500000],PARAMETER[\"false_northing\",10000"); + add_srs_wkt (p, 10, + "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); + add_srs_wkt (p, 11, + "[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"32312\"]]"); + p = add_epsg_def (filter, first, last, 32313, "epsg", 32313, + "WGS 72 / UTM zone 13S"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 13S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fa"); + add_srs_wkt (p, 9, + "lse_easting\",500000],PARAMETER[\"false_northing\",10000"); + add_srs_wkt (p, 10, + "000],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS"); + add_srs_wkt (p, 11, + "[\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\""); + add_srs_wkt (p, 12, + "EPSG\",\"32313\"]]"); + p = add_epsg_def (filter, first, last, 32314, "epsg", 32314, + "WGS 72 / UTM zone 14S"); + add_proj4text (p, 0, + "+proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 14S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-99],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32314\"]]"); + p = add_epsg_def (filter, first, last, 32315, "epsg", 32315, + "WGS 72 / UTM zone 15S"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 15S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-93],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32315\"]]"); + p = add_epsg_def (filter, first, last, 32316, "epsg", 32316, + "WGS 72 / UTM zone 16S"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 16S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-87],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32316\"]]"); + p = add_epsg_def (filter, first, last, 32317, "epsg", 32317, + "WGS 72 / UTM zone 17S"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 17S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32317\"]]"); + p = add_epsg_def (filter, first, last, 32318, "epsg", 32318, + "WGS 72 / UTM zone 18S"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 18S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32318\"]]"); + p = add_epsg_def (filter, first, last, 32319, "epsg", 32319, + "WGS 72 / UTM zone 19S"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 19S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32319\"]]"); + p = add_epsg_def (filter, first, last, 32320, "epsg", 32320, + "WGS 72 / UTM zone 20S"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 20S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32320\"]]"); + p = add_epsg_def (filter, first, last, 32321, "epsg", 32321, + "WGS 72 / UTM zone 21S"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 21S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32321\"]]"); + p = add_epsg_def (filter, first, last, 32322, "epsg", 32322, + "WGS 72 / UTM zone 22S"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 22S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32322\"]]"); + p = add_epsg_def (filter, first, last, 32323, "epsg", 32323, + "WGS 72 / UTM zone 23S"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 23S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32323\"]]"); + p = add_epsg_def (filter, first, last, 32324, "epsg", 32324, + "WGS 72 / UTM zone 24S"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 24S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32324\"]]"); + p = add_epsg_def (filter, first, last, 32325, "epsg", 32325, + "WGS 72 / UTM zone 25S"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 25S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32325\"]]"); + p = add_epsg_def (filter, first, last, 32326, "epsg", 32326, + "WGS 72 / UTM zone 26S"); + add_proj4text (p, 0, + "+proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 26S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-27],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32326\"]]"); + p = add_epsg_def (filter, first, last, 32327, "epsg", 32327, + "WGS 72 / UTM zone 27S"); + add_proj4text (p, 0, + "+proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 27S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-21],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32327\"]]"); + p = add_epsg_def (filter, first, last, 32328, "epsg", 32328, + "WGS 72 / UTM zone 28S"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 28S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32328\"]]"); + p = add_epsg_def (filter, first, last, 32329, "epsg", 32329, + "WGS 72 / UTM zone 29S"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 29S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32329\"]]"); + p = add_epsg_def (filter, first, last, 32330, "epsg", 32330, + "WGS 72 / UTM zone 30S"); + add_proj4text (p, 0, + "+proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 30S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",-3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32330\"]]"); + p = add_epsg_def (filter, first, last, 32331, "epsg", 32331, + "WGS 72 / UTM zone 31S"); + add_proj4text (p, 0, + "+proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 31S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",3],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",10000000"); + add_srs_wkt (p, 10, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32331\"]]"); + p = add_epsg_def (filter, first, last, 32332, "epsg", 32332, + "WGS 72 / UTM zone 32S"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 32S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",9],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"false"); + add_srs_wkt (p, 9, + "_easting\",500000],PARAMETER[\"false_northing\",10000000"); + add_srs_wkt (p, 10, + "],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32332\"]]"); + p = add_epsg_def (filter, first, last, 32333, "epsg", 32333, + "WGS 72 / UTM zone 33S"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 33S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",15],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32333\"]]"); + p = add_epsg_def (filter, first, last, 32334, "epsg", 32334, + "WGS 72 / UTM zone 34S"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 34S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",21],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32334\"]]"); + p = add_epsg_def (filter, first, last, 32335, "epsg", 32335, + "WGS 72 / UTM zone 35S"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 35S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",27],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32335\"]]"); + p = add_epsg_def (filter, first, last, 32336, "epsg", 32336, + "WGS 72 / UTM zone 36S"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 36S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",33],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32336\"]]"); + p = add_epsg_def (filter, first, last, 32337, "epsg", 32337, + "WGS 72 / UTM zone 37S"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 37S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",39],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32337\"]]"); + p = add_epsg_def (filter, first, last, 32338, "epsg", 32338, + "WGS 72 / UTM zone 38S"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 38S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",45],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32338\"]]"); + p = add_epsg_def (filter, first, last, 32339, "epsg", 32339, + "WGS 72 / UTM zone 39S"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 39S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",51],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32339\"]]"); + p = add_epsg_def (filter, first, last, 32340, "epsg", 32340, + "WGS 72 / UTM zone 40S"); + add_proj4text (p, 0, + "+proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 40S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",57],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32340\"]]"); + p = add_epsg_def (filter, first, last, 32341, "epsg", 32341, + "WGS 72 / UTM zone 41S"); + add_proj4text (p, 0, + "+proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 41S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",63],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32341\"]]"); + p = add_epsg_def (filter, first, last, 32342, "epsg", 32342, + "WGS 72 / UTM zone 42S"); + add_proj4text (p, 0, + "+proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 42S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",69],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32342\"]]"); + p = add_epsg_def (filter, first, last, 32343, "epsg", 32343, + "WGS 72 / UTM zone 43S"); + add_proj4text (p, 0, + "+proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 43S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",75],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32343\"]]"); + p = add_epsg_def (filter, first, last, 32344, "epsg", 32344, + "WGS 72 / UTM zone 44S"); + add_proj4text (p, 0, + "+proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 44S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",81],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32344\"]]"); + p = add_epsg_def (filter, first, last, 32345, "epsg", 32345, + "WGS 72 / UTM zone 45S"); + add_proj4text (p, 0, + "+proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 45S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",87],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32345\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_44.c b/src/spatialite/src/srsinit/epsg_inlined_44.c new file mode 100644 index 0000000..be3c099 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_44.c @@ -0,0 +1,3290 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_44 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 32346, "epsg", 32346, + "WGS 72 / UTM zone 46S"); + add_proj4text (p, 0, + "+proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 46S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",93],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32346\"]]"); + p = add_epsg_def (filter, first, last, 32347, "epsg", 32347, + "WGS 72 / UTM zone 47S"); + add_proj4text (p, 0, + "+proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 47S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",99],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fals"); + add_srs_wkt (p, 9, + "e_easting\",500000],PARAMETER[\"false_northing\",1000000"); + add_srs_wkt (p, 10, + "0],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\""); + add_srs_wkt (p, 11, + "Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"EPS"); + add_srs_wkt (p, 12, + "G\",\"32347\"]]"); + p = add_epsg_def (filter, first, last, 32348, "epsg", 32348, + "WGS 72 / UTM zone 48S"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 48S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",105],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32348\"]]"); + p = add_epsg_def (filter, first, last, 32349, "epsg", 32349, + "WGS 72 / UTM zone 49S"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 49S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",111],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32349\"]]"); + p = add_epsg_def (filter, first, last, 32350, "epsg", 32350, + "WGS 72 / UTM zone 50S"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 50S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",117],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32350\"]]"); + p = add_epsg_def (filter, first, last, 32351, "epsg", 32351, + "WGS 72 / UTM zone 51S"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 51S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",123],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32351\"]]"); + p = add_epsg_def (filter, first, last, 32352, "epsg", 32352, + "WGS 72 / UTM zone 52S"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 52S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",129],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32352\"]]"); + p = add_epsg_def (filter, first, last, 32353, "epsg", 32353, + "WGS 72 / UTM zone 53S"); + add_proj4text (p, 0, + "+proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 53S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",135],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32353\"]]"); + p = add_epsg_def (filter, first, last, 32354, "epsg", 32354, + "WGS 72 / UTM zone 54S"); + add_proj4text (p, 0, + "+proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 54S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",141],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32354\"]]"); + p = add_epsg_def (filter, first, last, 32355, "epsg", 32355, + "WGS 72 / UTM zone 55S"); + add_proj4text (p, 0, + "+proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 55S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",147],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32355\"]]"); + p = add_epsg_def (filter, first, last, 32356, "epsg", 32356, + "WGS 72 / UTM zone 56S"); + add_proj4text (p, 0, + "+proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 56S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",153],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32356\"]]"); + p = add_epsg_def (filter, first, last, 32357, "epsg", 32357, + "WGS 72 / UTM zone 57S"); + add_proj4text (p, 0, + "+proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 57S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",159],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32357\"]]"); + p = add_epsg_def (filter, first, last, 32358, "epsg", 32358, + "WGS 72 / UTM zone 58S"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 58S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",165],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32358\"]]"); + p = add_epsg_def (filter, first, last, 32359, "epsg", 32359, + "WGS 72 / UTM zone 59S"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 59S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",171],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32359\"]]"); + p = add_epsg_def (filter, first, last, 32360, "epsg", 32360, + "WGS 72 / UTM zone 60S"); + add_proj4text (p, 0, + "+proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,4.5,"); + add_proj4text (p, 1, + "0,0,0.554,0.2263 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72 / UTM zone 60S\",GEOGCS[\"WGS 72\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1972\",SPHEROID[\"WGS 72\",6378135,298.26,AUTHORI"); + add_srs_wkt (p, 2, + "TY[\"EPSG\",\"7043\"]],TOWGS84[0,0,4.5,0,0,0.554,0.2263]"); + add_srs_wkt (p, 3, + ",AUTHORITY[\"EPSG\",\"6322\"]],PRIMEM[\"Greenwich\",0,AU"); + add_srs_wkt (p, 4, + "THORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.0174532925"); + add_srs_wkt (p, 5, + "199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"4322\"]],PROJECTION[\"Transverse_Mercator\"],PARAMETER"); + add_srs_wkt (p, 7, + "[\"latitude_of_origin\",0],PARAMETER[\"central_meridian\""); + add_srs_wkt (p, 8, + ",177],PARAMETER[\"scale_factor\",0.9996],PARAMETER[\"fal"); + add_srs_wkt (p, 9, + "se_easting\",500000],PARAMETER[\"false_northing\",100000"); + add_srs_wkt (p, 10, + "00],UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS["); + add_srs_wkt (p, 11, + "\"Easting\",EAST],AXIS[\"Northing\",NORTH],AUTHORITY[\"E"); + add_srs_wkt (p, 12, + "PSG\",\"32360\"]]"); + p = add_epsg_def (filter, first, last, 32401, "epsg", 32401, + "WGS 72BE / UTM zone 1N"); + add_proj4text (p, 0, + "+proj=utm +zone=1 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); + add_proj4text (p, 1, + "4,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 1N\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-177],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"32401\"]]"); + p = add_epsg_def (filter, first, last, 32402, "epsg", 32402, + "WGS 72BE / UTM zone 2N"); + add_proj4text (p, 0, + "+proj=utm +zone=2 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); + add_proj4text (p, 1, + "4,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 2N\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-171],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"32402\"]]"); + p = add_epsg_def (filter, first, last, 32403, "epsg", 32403, + "WGS 72BE / UTM zone 3N"); + add_proj4text (p, 0, + "+proj=utm +zone=3 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); + add_proj4text (p, 1, + "4,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 3N\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-165],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"32403\"]]"); + p = add_epsg_def (filter, first, last, 32404, "epsg", 32404, + "WGS 72BE / UTM zone 4N"); + add_proj4text (p, 0, + "+proj=utm +zone=4 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); + add_proj4text (p, 1, + "4,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 4N\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-159],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"32404\"]]"); + p = add_epsg_def (filter, first, last, 32405, "epsg", 32405, + "WGS 72BE / UTM zone 5N"); + add_proj4text (p, 0, + "+proj=utm +zone=5 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); + add_proj4text (p, 1, + "4,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 5N\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-153],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"32405\"]]"); + p = add_epsg_def (filter, first, last, 32406, "epsg", 32406, + "WGS 72BE / UTM zone 6N"); + add_proj4text (p, 0, + "+proj=utm +zone=6 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); + add_proj4text (p, 1, + "4,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 6N\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-147],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"32406\"]]"); + p = add_epsg_def (filter, first, last, 32407, "epsg", 32407, + "WGS 72BE / UTM zone 7N"); + add_proj4text (p, 0, + "+proj=utm +zone=7 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); + add_proj4text (p, 1, + "4,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 7N\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-141],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"32407\"]]"); + p = add_epsg_def (filter, first, last, 32408, "epsg", 32408, + "WGS 72BE / UTM zone 8N"); + add_proj4text (p, 0, + "+proj=utm +zone=8 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); + add_proj4text (p, 1, + "4,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 8N\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-135],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"32408\"]]"); + p = add_epsg_def (filter, first, last, 32409, "epsg", 32409, + "WGS 72BE / UTM zone 9N"); + add_proj4text (p, 0, + "+proj=utm +zone=9 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.81"); + add_proj4text (p, 1, + "4,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 9N\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-129],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"32409\"]]"); + p = add_epsg_def (filter, first, last, 32410, "epsg", 32410, + "WGS 72BE / UTM zone 10N"); + add_proj4text (p, 0, + "+proj=utm +zone=10 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 10N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-123],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"32410\"]]"); + p = add_epsg_def (filter, first, last, 32411, "epsg", 32411, + "WGS 72BE / UTM zone 11N"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 11N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"32411\"]]"); + p = add_epsg_def (filter, first, last, 32412, "epsg", 32412, + "WGS 72BE / UTM zone 12N"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 12N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-111],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"32412\"]]"); + p = add_epsg_def (filter, first, last, 32413, "epsg", 32413, + "WGS 72BE / UTM zone 13N"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 13N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-105],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY["); + add_srs_wkt (p, 11, + "\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northi"); + add_srs_wkt (p, 12, + "ng\",NORTH],AUTHORITY[\"EPSG\",\"32413\"]]"); + p = add_epsg_def (filter, first, last, 32414, "epsg", 32414, + "WGS 72BE / UTM zone 14N"); + add_proj4text (p, 0, + "+proj=utm +zone=14 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 14N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-99],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32414\"]]"); + p = add_epsg_def (filter, first, last, 32415, "epsg", 32415, + "WGS 72BE / UTM zone 15N"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 15N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-93],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32415\"]]"); + p = add_epsg_def (filter, first, last, 32416, "epsg", 32416, + "WGS 72BE / UTM zone 16N"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 16N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-87],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32416\"]]"); + p = add_epsg_def (filter, first, last, 32417, "epsg", 32417, + "WGS 72BE / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 17N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-81],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32417\"]]"); + p = add_epsg_def (filter, first, last, 32418, "epsg", 32418, + "WGS 72BE / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 18N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-75],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32418\"]]"); + p = add_epsg_def (filter, first, last, 32419, "epsg", 32419, + "WGS 72BE / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 19N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32419\"]]"); + p = add_epsg_def (filter, first, last, 32420, "epsg", 32420, + "WGS 72BE / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 20N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32420\"]]"); + p = add_epsg_def (filter, first, last, 32421, "epsg", 32421, + "WGS 72BE / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 21N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32421\"]]"); + p = add_epsg_def (filter, first, last, 32422, "epsg", 32422, + "WGS 72BE / UTM zone 22N"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 22N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-51],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32422\"]]"); + p = add_epsg_def (filter, first, last, 32423, "epsg", 32423, + "WGS 72BE / UTM zone 23N"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 23N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-45],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32423\"]]"); + p = add_epsg_def (filter, first, last, 32424, "epsg", 32424, + "WGS 72BE / UTM zone 24N"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 24N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-39],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32424\"]]"); + p = add_epsg_def (filter, first, last, 32425, "epsg", 32425, + "WGS 72BE / UTM zone 25N"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 25N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-33],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32425\"]]"); + p = add_epsg_def (filter, first, last, 32426, "epsg", 32426, + "WGS 72BE / UTM zone 26N"); + add_proj4text (p, 0, + "+proj=utm +zone=26 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 26N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-27],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32426\"]]"); + p = add_epsg_def (filter, first, last, 32427, "epsg", 32427, + "WGS 72BE / UTM zone 27N"); + add_proj4text (p, 0, + "+proj=utm +zone=27 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 27N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-21],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32427\"]]"); + p = add_epsg_def (filter, first, last, 32428, "epsg", 32428, + "WGS 72BE / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 28N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-15],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32428\"]]"); + p = add_epsg_def (filter, first, last, 32429, "epsg", 32429, + "WGS 72BE / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 29N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-9],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32429\"]]"); + p = add_epsg_def (filter, first, last, 32430, "epsg", 32430, + "WGS 72BE / UTM zone 30N"); + add_proj4text (p, 0, + "+proj=utm +zone=30 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 30N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-3],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32430\"]]"); + p = add_epsg_def (filter, first, last, 32431, "epsg", 32431, + "WGS 72BE / UTM zone 31N"); + add_proj4text (p, 0, + "+proj=utm +zone=31 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 31N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",3],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"32431\"]]"); + p = add_epsg_def (filter, first, last, 32432, "epsg", 32432, + "WGS 72BE / UTM zone 32N"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 32N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",9],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 11, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 12, + ",NORTH],AUTHORITY[\"EPSG\",\"32432\"]]"); + p = add_epsg_def (filter, first, last, 32433, "epsg", 32433, + "WGS 72BE / UTM zone 33N"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 33N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",15],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32433\"]]"); + p = add_epsg_def (filter, first, last, 32434, "epsg", 32434, + "WGS 72BE / UTM zone 34N"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 34N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",21],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32434\"]]"); + p = add_epsg_def (filter, first, last, 32435, "epsg", 32435, + "WGS 72BE / UTM zone 35N"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 35N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",27],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32435\"]]"); + p = add_epsg_def (filter, first, last, 32436, "epsg", 32436, + "WGS 72BE / UTM zone 36N"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 36N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",33],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32436\"]]"); + p = add_epsg_def (filter, first, last, 32437, "epsg", 32437, + "WGS 72BE / UTM zone 37N"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 37N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",39],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32437\"]]"); + p = add_epsg_def (filter, first, last, 32438, "epsg", 32438, + "WGS 72BE / UTM zone 38N"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 38N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",45],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32438\"]]"); + p = add_epsg_def (filter, first, last, 32439, "epsg", 32439, + "WGS 72BE / UTM zone 39N"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 39N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",51],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32439\"]]"); + p = add_epsg_def (filter, first, last, 32440, "epsg", 32440, + "WGS 72BE / UTM zone 40N"); + add_proj4text (p, 0, + "+proj=utm +zone=40 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 40N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",57],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32440\"]]"); + p = add_epsg_def (filter, first, last, 32441, "epsg", 32441, + "WGS 72BE / UTM zone 41N"); + add_proj4text (p, 0, + "+proj=utm +zone=41 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 41N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",63],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32441\"]]"); + p = add_epsg_def (filter, first, last, 32442, "epsg", 32442, + "WGS 72BE / UTM zone 42N"); + add_proj4text (p, 0, + "+proj=utm +zone=42 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 42N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",69],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32442\"]]"); + p = add_epsg_def (filter, first, last, 32443, "epsg", 32443, + "WGS 72BE / UTM zone 43N"); + add_proj4text (p, 0, + "+proj=utm +zone=43 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 43N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",75],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32443\"]]"); + p = add_epsg_def (filter, first, last, 32444, "epsg", 32444, + "WGS 72BE / UTM zone 44N"); + add_proj4text (p, 0, + "+proj=utm +zone=44 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 44N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",81],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32444\"]]"); + p = add_epsg_def (filter, first, last, 32445, "epsg", 32445, + "WGS 72BE / UTM zone 45N"); + add_proj4text (p, 0, + "+proj=utm +zone=45 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 45N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",87],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32445\"]]"); + p = add_epsg_def (filter, first, last, 32446, "epsg", 32446, + "WGS 72BE / UTM zone 46N"); + add_proj4text (p, 0, + "+proj=utm +zone=46 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 46N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",93],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32446\"]]"); + p = add_epsg_def (filter, first, last, 32447, "epsg", 32447, + "WGS 72BE / UTM zone 47N"); + add_proj4text (p, 0, + "+proj=utm +zone=47 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 47N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",99],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32447\"]]"); + p = add_epsg_def (filter, first, last, 32448, "epsg", 32448, + "WGS 72BE / UTM zone 48N"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 48N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",105],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32448\"]]"); + p = add_epsg_def (filter, first, last, 32449, "epsg", 32449, + "WGS 72BE / UTM zone 49N"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 49N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",111],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32449\"]]"); + p = add_epsg_def (filter, first, last, 32450, "epsg", 32450, + "WGS 72BE / UTM zone 50N"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 50N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",117],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32450\"]]"); + p = add_epsg_def (filter, first, last, 32451, "epsg", 32451, + "WGS 72BE / UTM zone 51N"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 51N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",123],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32451\"]]"); + p = add_epsg_def (filter, first, last, 32452, "epsg", 32452, + "WGS 72BE / UTM zone 52N"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 52N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",129],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32452\"]]"); + p = add_epsg_def (filter, first, last, 32453, "epsg", 32453, + "WGS 72BE / UTM zone 53N"); + add_proj4text (p, 0, + "+proj=utm +zone=53 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 53N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",135],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32453\"]]"); + p = add_epsg_def (filter, first, last, 32454, "epsg", 32454, + "WGS 72BE / UTM zone 54N"); + add_proj4text (p, 0, + "+proj=utm +zone=54 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 54N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",141],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32454\"]]"); + p = add_epsg_def (filter, first, last, 32455, "epsg", 32455, + "WGS 72BE / UTM zone 55N"); + add_proj4text (p, 0, + "+proj=utm +zone=55 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 55N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",147],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32455\"]]"); + p = add_epsg_def (filter, first, last, 32456, "epsg", 32456, + "WGS 72BE / UTM zone 56N"); + add_proj4text (p, 0, + "+proj=utm +zone=56 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 56N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",153],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32456\"]]"); + p = add_epsg_def (filter, first, last, 32457, "epsg", 32457, + "WGS 72BE / UTM zone 57N"); + add_proj4text (p, 0, + "+proj=utm +zone=57 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 57N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",159],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32457\"]]"); + p = add_epsg_def (filter, first, last, 32458, "epsg", 32458, + "WGS 72BE / UTM zone 58N"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 58N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",165],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32458\"]]"); + p = add_epsg_def (filter, first, last, 32459, "epsg", 32459, + "WGS 72BE / UTM zone 59N"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 59N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",171],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32459\"]]"); + p = add_epsg_def (filter, first, last, 32460, "epsg", 32460, + "WGS 72BE / UTM zone 60N"); + add_proj4text (p, 0, + "+proj=utm +zone=60 +ellps=WGS72 +towgs84=0,0,1.9,0,0,0.8"); + add_proj4text (p, 1, + "14,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 60N\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",177],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 11, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 12, + "\",NORTH],AUTHORITY[\"EPSG\",\"32460\"]]"); + p = add_epsg_def (filter, first, last, 32501, "epsg", 32501, + "WGS 72BE / UTM zone 1S"); + add_proj4text (p, 0, + "+proj=utm +zone=1 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); + add_proj4text (p, 1, + ",0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 1S\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-177],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32501\"]]"); + p = add_epsg_def (filter, first, last, 32502, "epsg", 32502, + "WGS 72BE / UTM zone 2S"); + add_proj4text (p, 0, + "+proj=utm +zone=2 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); + add_proj4text (p, 1, + ",0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 2S\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-171],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32502\"]]"); + p = add_epsg_def (filter, first, last, 32503, "epsg", 32503, + "WGS 72BE / UTM zone 3S"); + add_proj4text (p, 0, + "+proj=utm +zone=3 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); + add_proj4text (p, 1, + ",0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 3S\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-165],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32503\"]]"); + p = add_epsg_def (filter, first, last, 32504, "epsg", 32504, + "WGS 72BE / UTM zone 4S"); + add_proj4text (p, 0, + "+proj=utm +zone=4 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); + add_proj4text (p, 1, + ",0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 4S\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-159],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32504\"]]"); + p = add_epsg_def (filter, first, last, 32505, "epsg", 32505, + "WGS 72BE / UTM zone 5S"); + add_proj4text (p, 0, + "+proj=utm +zone=5 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); + add_proj4text (p, 1, + ",0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 5S\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-153],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32505\"]]"); + p = add_epsg_def (filter, first, last, 32506, "epsg", 32506, + "WGS 72BE / UTM zone 6S"); + add_proj4text (p, 0, + "+proj=utm +zone=6 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); + add_proj4text (p, 1, + ",0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 6S\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-147],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32506\"]]"); + p = add_epsg_def (filter, first, last, 32507, "epsg", 32507, + "WGS 72BE / UTM zone 7S"); + add_proj4text (p, 0, + "+proj=utm +zone=7 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); + add_proj4text (p, 1, + ",0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 7S\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-141],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32507\"]]"); + p = add_epsg_def (filter, first, last, 32508, "epsg", 32508, + "WGS 72BE / UTM zone 8S"); + add_proj4text (p, 0, + "+proj=utm +zone=8 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); + add_proj4text (p, 1, + ",0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 8S\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-135],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32508\"]]"); + p = add_epsg_def (filter, first, last, 32509, "epsg", 32509, + "WGS 72BE / UTM zone 9S"); + add_proj4text (p, 0, + "+proj=utm +zone=9 +south +ellps=WGS72 +towgs84=0,0,1.9,0"); + add_proj4text (p, 1, + ",0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 9S\",GEOGCS[\"WGS 72BE\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-129],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32509\"]]"); + p = add_epsg_def (filter, first, last, 32510, "epsg", 32510, + "WGS 72BE / UTM zone 10S"); + add_proj4text (p, 0, + "+proj=utm +zone=10 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 10S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-123],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32510\"]]"); + p = add_epsg_def (filter, first, last, 32511, "epsg", 32511, + "WGS 72BE / UTM zone 11S"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 11S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32511\"]]"); + p = add_epsg_def (filter, first, last, 32512, "epsg", 32512, + "WGS 72BE / UTM zone 12S"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 12S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-111],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32512\"]]"); + p = add_epsg_def (filter, first, last, 32513, "epsg", 32513, + "WGS 72BE / UTM zone 13S"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 13S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-105],PARAMETER[\"scale_"); + add_srs_wkt (p, 9, + "factor\",0.9996],PARAMETER[\"false_easting\",500000],PAR"); + add_srs_wkt (p, 10, + "AMETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUT"); + add_srs_wkt (p, 11, + "HORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32513\"]]"); + p = add_epsg_def (filter, first, last, 32514, "epsg", 32514, + "WGS 72BE / UTM zone 14S"); + add_proj4text (p, 0, + "+proj=utm +zone=14 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 14S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-99],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32514\"]]"); + p = add_epsg_def (filter, first, last, 32515, "epsg", 32515, + "WGS 72BE / UTM zone 15S"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 15S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-93],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32515\"]]"); + p = add_epsg_def (filter, first, last, 32516, "epsg", 32516, + "WGS 72BE / UTM zone 16S"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 16S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-87],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32516\"]]"); + p = add_epsg_def (filter, first, last, 32517, "epsg", 32517, + "WGS 72BE / UTM zone 17S"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 17S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-81],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32517\"]]"); + p = add_epsg_def (filter, first, last, 32518, "epsg", 32518, + "WGS 72BE / UTM zone 18S"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 18S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-75],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32518\"]]"); + p = add_epsg_def (filter, first, last, 32519, "epsg", 32519, + "WGS 72BE / UTM zone 19S"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 19S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32519\"]]"); + p = add_epsg_def (filter, first, last, 32520, "epsg", 32520, + "WGS 72BE / UTM zone 20S"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 20S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32520\"]]"); + p = add_epsg_def (filter, first, last, 32521, "epsg", 32521, + "WGS 72BE / UTM zone 21S"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 21S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32521\"]]"); + p = add_epsg_def (filter, first, last, 32522, "epsg", 32522, + "WGS 72BE / UTM zone 22S"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 22S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-51],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32522\"]]"); + p = add_epsg_def (filter, first, last, 32523, "epsg", 32523, + "WGS 72BE / UTM zone 23S"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 23S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-45],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32523\"]]"); + p = add_epsg_def (filter, first, last, 32524, "epsg", 32524, + "WGS 72BE / UTM zone 24S"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 24S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-39],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32524\"]]"); + p = add_epsg_def (filter, first, last, 32525, "epsg", 32525, + "WGS 72BE / UTM zone 25S"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 25S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-33],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32525\"]]"); + p = add_epsg_def (filter, first, last, 32526, "epsg", 32526, + "WGS 72BE / UTM zone 26S"); + add_proj4text (p, 0, + "+proj=utm +zone=26 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 26S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-27],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32526\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_45.c b/src/spatialite/src/srsinit/epsg_inlined_45.c new file mode 100644 index 0000000..7775252 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_45.c @@ -0,0 +1,1146 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_45 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 32527, "epsg", 32527, + "WGS 72BE / UTM zone 27S"); + add_proj4text (p, 0, + "+proj=utm +zone=27 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 27S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-21],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32527\"]]"); + p = add_epsg_def (filter, first, last, 32528, "epsg", 32528, + "WGS 72BE / UTM zone 28S"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 28S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-15],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32528\"]]"); + p = add_epsg_def (filter, first, last, 32529, "epsg", 32529, + "WGS 72BE / UTM zone 29S"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 29S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-9],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32529\"]]"); + p = add_epsg_def (filter, first, last, 32530, "epsg", 32530, + "WGS 72BE / UTM zone 30S"); + add_proj4text (p, 0, + "+proj=utm +zone=30 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 30S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",-3],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32530\"]]"); + p = add_epsg_def (filter, first, last, 32531, "epsg", 32531, + "WGS 72BE / UTM zone 31S"); + add_proj4text (p, 0, + "+proj=utm +zone=31 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 31S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",3],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32531\"]]"); + p = add_epsg_def (filter, first, last, 32532, "epsg", 32532, + "WGS 72BE / UTM zone 32S"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 32S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",9],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 9, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 10, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 11, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 12, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32532\"]]"); + p = add_epsg_def (filter, first, last, 32533, "epsg", 32533, + "WGS 72BE / UTM zone 33S"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 33S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",15],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32533\"]]"); + p = add_epsg_def (filter, first, last, 32534, "epsg", 32534, + "WGS 72BE / UTM zone 34S"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 34S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",21],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32534\"]]"); + p = add_epsg_def (filter, first, last, 32535, "epsg", 32535, + "WGS 72BE / UTM zone 35S"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 35S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",27],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32535\"]]"); + p = add_epsg_def (filter, first, last, 32536, "epsg", 32536, + "WGS 72BE / UTM zone 36S"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 36S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",33],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32536\"]]"); + p = add_epsg_def (filter, first, last, 32537, "epsg", 32537, + "WGS 72BE / UTM zone 37S"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 37S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",39],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32537\"]]"); + p = add_epsg_def (filter, first, last, 32538, "epsg", 32538, + "WGS 72BE / UTM zone 38S"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 38S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",45],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32538\"]]"); + p = add_epsg_def (filter, first, last, 32539, "epsg", 32539, + "WGS 72BE / UTM zone 39S"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 39S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",51],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32539\"]]"); + p = add_epsg_def (filter, first, last, 32540, "epsg", 32540, + "WGS 72BE / UTM zone 40S"); + add_proj4text (p, 0, + "+proj=utm +zone=40 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 40S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",57],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32540\"]]"); + p = add_epsg_def (filter, first, last, 32541, "epsg", 32541, + "WGS 72BE / UTM zone 41S"); + add_proj4text (p, 0, + "+proj=utm +zone=41 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 41S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",63],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32541\"]]"); + p = add_epsg_def (filter, first, last, 32542, "epsg", 32542, + "WGS 72BE / UTM zone 42S"); + add_proj4text (p, 0, + "+proj=utm +zone=42 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 42S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",69],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32542\"]]"); + p = add_epsg_def (filter, first, last, 32543, "epsg", 32543, + "WGS 72BE / UTM zone 43S"); + add_proj4text (p, 0, + "+proj=utm +zone=43 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 43S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",75],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32543\"]]"); + p = add_epsg_def (filter, first, last, 32544, "epsg", 32544, + "WGS 72BE / UTM zone 44S"); + add_proj4text (p, 0, + "+proj=utm +zone=44 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 44S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",81],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32544\"]]"); + p = add_epsg_def (filter, first, last, 32545, "epsg", 32545, + "WGS 72BE / UTM zone 45S"); + add_proj4text (p, 0, + "+proj=utm +zone=45 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 45S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",87],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32545\"]]"); + p = add_epsg_def (filter, first, last, 32546, "epsg", 32546, + "WGS 72BE / UTM zone 46S"); + add_proj4text (p, 0, + "+proj=utm +zone=46 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 46S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",93],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32546\"]]"); + p = add_epsg_def (filter, first, last, 32547, "epsg", 32547, + "WGS 72BE / UTM zone 47S"); + add_proj4text (p, 0, + "+proj=utm +zone=47 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 47S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",99],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 9, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 10, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 11, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 12, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32547\"]]"); + p = add_epsg_def (filter, first, last, 32548, "epsg", 32548, + "WGS 72BE / UTM zone 48S"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 48S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",105],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32548\"]]"); + p = add_epsg_def (filter, first, last, 32549, "epsg", 32549, + "WGS 72BE / UTM zone 49S"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 49S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",111],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32549\"]]"); + p = add_epsg_def (filter, first, last, 32550, "epsg", 32550, + "WGS 72BE / UTM zone 50S"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 50S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",117],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32550\"]]"); + p = add_epsg_def (filter, first, last, 32551, "epsg", 32551, + "WGS 72BE / UTM zone 51S"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 51S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",123],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32551\"]]"); + p = add_epsg_def (filter, first, last, 32552, "epsg", 32552, + "WGS 72BE / UTM zone 52S"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 52S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",129],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32552\"]]"); + p = add_epsg_def (filter, first, last, 32553, "epsg", 32553, + "WGS 72BE / UTM zone 53S"); + add_proj4text (p, 0, + "+proj=utm +zone=53 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 53S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",135],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32553\"]]"); + p = add_epsg_def (filter, first, last, 32554, "epsg", 32554, + "WGS 72BE / UTM zone 54S"); + add_proj4text (p, 0, + "+proj=utm +zone=54 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 54S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",141],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32554\"]]"); + p = add_epsg_def (filter, first, last, 32555, "epsg", 32555, + "WGS 72BE / UTM zone 55S"); + add_proj4text (p, 0, + "+proj=utm +zone=55 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 55S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",147],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32555\"]]"); + p = add_epsg_def (filter, first, last, 32556, "epsg", 32556, + "WGS 72BE / UTM zone 56S"); + add_proj4text (p, 0, + "+proj=utm +zone=56 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 56S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",153],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32556\"]]"); + p = add_epsg_def (filter, first, last, 32557, "epsg", 32557, + "WGS 72BE / UTM zone 57S"); + add_proj4text (p, 0, + "+proj=utm +zone=57 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 57S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",159],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32557\"]]"); + p = add_epsg_def (filter, first, last, 32558, "epsg", 32558, + "WGS 72BE / UTM zone 58S"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 58S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",165],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32558\"]]"); + p = add_epsg_def (filter, first, last, 32559, "epsg", 32559, + "WGS 72BE / UTM zone 59S"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 59S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",171],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32559\"]]"); + p = add_epsg_def (filter, first, last, 32560, "epsg", 32560, + "WGS 72BE / UTM zone 60S"); + add_proj4text (p, 0, + "+proj=utm +zone=60 +south +ellps=WGS72 +towgs84=0,0,1.9,"); + add_proj4text (p, 1, + "0,0,0.814,-0.38 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 72BE / UTM zone 60S\",GEOGCS[\"WGS 72BE\",D"); + add_srs_wkt (p, 1, + "ATUM[\"WGS_1972_Transit_Broadcast_Ephemeris\",SPHEROID[\""); + add_srs_wkt (p, 2, + "WGS 72\",6378135,298.26,AUTHORITY[\"EPSG\",\"7043\"]],TO"); + add_srs_wkt (p, 3, + "WGS84[0,0,1.9,0,0,0.814,-0.38],AUTHORITY[\"EPSG\",\"6324"); + add_srs_wkt (p, 4, + "\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]"); + add_srs_wkt (p, 5, + "],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\","); + add_srs_wkt (p, 6, + "\"9122\"]],AUTHORITY[\"EPSG\",\"4324\"]],PROJECTION[\"Tr"); + add_srs_wkt (p, 7, + "ansverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0]"); + add_srs_wkt (p, 8, + ",PARAMETER[\"central_meridian\",177],PARAMETER[\"scale_f"); + add_srs_wkt (p, 9, + "actor\",0.9996],PARAMETER[\"false_easting\",500000],PARA"); + add_srs_wkt (p, 10, + "METER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 11, + "ORITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\""); + add_srs_wkt (p, 12, + "Northing\",NORTH],AUTHORITY[\"EPSG\",\"32560\"]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_extra.c b/src/spatialite/src/srsinit/epsg_inlined_extra.c new file mode 100644 index 0000000..cda02b2 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_extra.c @@ -0,0 +1,258 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +/* declaring prototypes */ +SPATIALITE_PRIVATE void initialize_epsg_00 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_01 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_02 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_03 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_04 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_05 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_06 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_07 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_08 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_09 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_10 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_11 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_12 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_13 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_14 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_15 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_16 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_17 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_18 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_19 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_20 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_21 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_22 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_23 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_24 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_25 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_26 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_27 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_28 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_29 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_30 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_31 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_32 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_33 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_34 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_35 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_36 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_37 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_38 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_39 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_40 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_41 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_42 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_43 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_44 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_45 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_wgs84_00 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_wgs84_01 ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_prussian ( + int filter, struct epsg_defs **first, struct epsg_defs **last); +SPATIALITE_PRIVATE void initialize_epsg_extra ( + int filter, struct epsg_defs **first, struct epsg_defs **last); + +SPATIALITE_PRIVATE void +initialize_epsg_extra (int filter, struct epsg_defs **first, struct epsg_defs **last) + +{ +/* initializing the EPSG defs list [EXTRA] */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 40000, "gfoss.it", 1, + "Italy mainland zone 1 GB Roma40"); + add_proj4text (p, 0, + "+proj=tmerc+lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_"); + add_proj4text (p, 1, + "0=0 +ellps=intl +units=m +towgs84=-104.1,-49.1,-9.9,0.97"); + add_proj4text (p, 2, "1,-2.917,0.714,-11.68 +no_defs"); + add_srs_wkt (p, 0, ""); + p = add_epsg_def (filter, first, last, 40001, "gfoss.it", 2, + "Italy mainland zone 2 GB Roma40"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=intl +units=m +towgs84=-104.1,-49.1,-9.9,0.9"); + add_proj4text (p, 2, "71,-2.917,0.714,-11.68 +no_defs"); + add_srs_wkt (p, 0, ""); + p = add_epsg_def (filter, first, last, 40002, "gfoss.it", 3, + "Italy Sardinia GB Roma40"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=intl +units=m +towgs84=-168.6,-34.0,38.6,-0."); + add_proj4text (p, 2, "374,-0.679,-1.379,-9.48 +no_defs"); + add_srs_wkt (p, 0, ""); + p = add_epsg_def (filter, first, last, 40003, "gfoss.it", 4, + "Italy Sicily GB Roma40"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y"); + add_proj4text (p, 1, + "_0=0 +ellps=intl +units=m +towgs84=-50.2,-50.4,84.8,-0.6"); + add_proj4text (p, 2, "90,-2.012,0.459,-28.08 +no_defs"); + add_srs_wkt (p, 0, ""); +} + +SPATIALITE_PRIVATE void +initialize_epsg (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list */ + struct epsg_defs *p; + /* initializing the EPSG UNKNOWN def [-1] */ + p = add_epsg_def (filter, first, last, -1, "NONE", -1, "Undefined - Cartesian"); + add_proj4text (p, 0, ""); + add_srs_wkt (p, 0, ""); + p = add_epsg_def (filter, first, last, 0, "NONE", 0, "Undefined - Geographic Long/Lat"); + add_proj4text (p, 0, ""); + add_srs_wkt (p, 0, ""); + + if (filter != GAIA_EPSG_WGS84_ONLY) + { +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + initialize_epsg_00 (filter, first, last); + initialize_epsg_01 (filter, first, last); + initialize_epsg_02 (filter, first, last); + initialize_epsg_03 (filter, first, last); + initialize_epsg_04 (filter, first, last); + initialize_epsg_05 (filter, first, last); + initialize_epsg_06 (filter, first, last); + initialize_epsg_07 (filter, first, last); + initialize_epsg_08 (filter, first, last); + initialize_epsg_09 (filter, first, last); + initialize_epsg_10 (filter, first, last); + initialize_epsg_11 (filter, first, last); + initialize_epsg_12 (filter, first, last); + initialize_epsg_13 (filter, first, last); + initialize_epsg_14 (filter, first, last); + initialize_epsg_15 (filter, first, last); + initialize_epsg_16 (filter, first, last); + initialize_epsg_17 (filter, first, last); + initialize_epsg_18 (filter, first, last); + initialize_epsg_19 (filter, first, last); + initialize_epsg_20 (filter, first, last); + initialize_epsg_21 (filter, first, last); + initialize_epsg_22 (filter, first, last); + initialize_epsg_23 (filter, first, last); + initialize_epsg_24 (filter, first, last); + initialize_epsg_25 (filter, first, last); + initialize_epsg_26 (filter, first, last); + initialize_epsg_27 (filter, first, last); + initialize_epsg_28 (filter, first, last); + initialize_epsg_29 (filter, first, last); + initialize_epsg_30 (filter, first, last); + initialize_epsg_31 (filter, first, last); + initialize_epsg_32 (filter, first, last); + initialize_epsg_33 (filter, first, last); + initialize_epsg_34 (filter, first, last); + initialize_epsg_35 (filter, first, last); + initialize_epsg_36 (filter, first, last); + initialize_epsg_37 (filter, first, last); + initialize_epsg_38 (filter, first, last); + initialize_epsg_39 (filter, first, last); + initialize_epsg_40 (filter, first, last); + initialize_epsg_41 (filter, first, last); + initialize_epsg_42 (filter, first, last); + initialize_epsg_43 (filter, first, last); + initialize_epsg_44 (filter, first, last); + initialize_epsg_45 (filter, first, last); + initialize_epsg_prussian (filter, first, last); + initialize_epsg_extra (filter, first, last); +#endif /* full EPSG initialization enabled/disabled */ + } + initialize_epsg_wgs84_00 (filter, first, last); + initialize_epsg_wgs84_01 (filter, first, last); +} diff --git a/src/spatialite/src/srsinit/epsg_inlined_prussian.c b/src/spatialite/src/srsinit/epsg_inlined_prussian.c new file mode 100644 index 0000000..5067ec0 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_prussian.c @@ -0,0 +1,771 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +#ifndef OMIT_EPSG /* full EPSG initialization enabled */ + +SPATIALITE_PRIVATE void +initialize_epsg_prussian(int filter,struct epsg_defs **first, struct epsg_defs **last) +{ +/* old Prussian based on Cassini-Soldner - kindly contributed by Mark Johnson */ + struct epsg_defs *p; + p = add_epsg_def(filter,first,last,187900,"mj10777.de",187900,"DHDN / Soldner Rathausnetz 660"); + add_proj4text(p,0,"+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 "); + add_proj4text(p,1,"+x_0=14741.77 +y_0=-11288.28 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner Rathausnetz 660\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",52.41864827777778],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",13.62720366666667],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",14741.77],PARAMETER[\"false_northing\",-11288.28],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187900\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187901,"mj10777.de",187901,"DHDN / Soldner 1 Kucklinsberg"); + add_proj4text(p,0,"+proj=cass +lat_0=54.46022375 +lon_0=21.95509736 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 1 Kucklinsberg\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",54.46022375],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",21.95509736],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187901\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187902,"mj10777.de",187902,"DHDN / Soldner 2 Paulinen"); + add_proj4text(p,0,"+proj=cass +lat_0=54.28921067 +lon_0=20.73315431 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 2 Paulinen\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",54.28921067],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",20.73315431],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187902\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187903,"mj10777.de",187903,"DHDN / Soldner 3 Markushof I"); + add_proj4text(p,0,"+proj=cass +lat_0=54.05881333 +lon_0=19.37343583 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 3 Markushof I\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",54.05881333],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",19.37343583],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187903\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187904,"mj10777.de",187904,"DHDN / Soldner 4 Thurmberg"); + add_proj4text(p,0,"+proj=cass +lat_0=54.22552092 +lon_0=18.12569375 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 4 Thurmberg\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",54.22552092],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",18.12569375],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187904\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187905,"mj10777.de",187905,"DHDN / Soldner 5 Kauernick I"); + add_proj4text(p,0,"+proj=cass +lat_0=53.38933197 +lon_0=19.59810438 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 5 Kauernick I\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",53.38933197],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",19.59810438],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187905\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187906,"mj10777.de",187906,"DHDN / Soldner 6 Thorn, Rathausturm"); + add_proj4text(p,0,"+proj=cass +lat_0=53.01181586 +lon_0=18.60725428 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 6 Thorn, Rathausturm\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",53.01181586],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",18.60725428],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187906\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187907,"mj10777.de",187907,"DHDN / Soldner 7 Heinrichsthal"); + add_proj4text(p,0,"+proj=cass +lat_0=53.71289217 +lon_0=17.49676781 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 7 Heinrichsthal\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",53.71289217],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",17.49676781],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187907\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187908,"mj10777.de",187908,"DHDN / Soldner 8 Gollenberg, Denkmal"); + add_proj4text(p,0,"+proj=cass +lat_0=54.20857178 +lon_0=16.22956781 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 8 Gollenberg, Denkmal\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",54.20857178],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",16.22956781],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187908\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187909,"mj10777.de",187909,"DHDN / Soldner 9 Gnesen"); + add_proj4text(p,0,"+proj=cass +lat_0=52.53820406 +lon_0=17.59450500 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 9 Gnesen\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",52.53820406],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",17.59450500],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187909\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187910,"mj10777.de",187910,"DHDN / Soldner 10 Josefsberg"); + add_proj4text(p,0,"+proj=cass +lat_0=51.98768806 +lon_0=16.20044389 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 10 Josefsberg\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",51.98768806],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",16.20044389],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187910\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187911,"mj10777.de",187911,"DHDN / Soldner 11 Schroda"); + add_proj4text(p,0,"+proj=cass +lat_0=52.23137372 +lon_0=17.27795372 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 11 Schroda\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",52.23137372],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",17.27795372],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187911\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187912,"mj10777.de",187912,"DHDN / Soldner 12 Pschow"); + add_proj4text(p,0,"+proj=cass +lat_0=50.04206544 +lon_0=18.39610692 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 12 Pschow\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",50.04206544],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",18.39610692],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187912\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187913,"mj10777.de",187913,"DHDN / Soldner 13 Rummelsberg"); + add_proj4text(p,0,"+proj=cass +lat_0=50.70352314 +lon_0=17.11233917 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 13 Rummelsberg\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",50.70352314],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",17.11233917],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187913\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187914,"mj10777.de",187914,"DHDN / Soldner 14 Gröditzberg I"); + add_proj4text(p,0,"+proj=cass +lat_0=51.17819342 +lon_0=15.76127086 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 14 Gröditzberg I\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",51.17819342],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",15.76127086],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187914\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187915,"mj10777.de",187915,"DHDN / Soldner 15 Kaltenborn"); + add_proj4text(p,0,"+proj=cass +lat_0=51.92903708 +lon_0=14.66212942 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 15 Kaltenborn\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",51.92903708],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",14.66212942],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187915\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187917,"mj10777.de",187917,"DHDN / Soldner 17 Greifswald, Nikolaikirche"); + add_proj4text(p,0,"+proj=cass +lat_0=54.09698872 +lon_0=13.37880703 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 17 Greifswald, Nikolaikirche\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",54.09698872],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",13.37880703],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187917\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187916,"mj10777.de",187916,"DHDN / Soldner 16 Bahn I"); + add_proj4text(p,0,"+proj=cass +lat_0=53.10184583 +lon_0=14.70144539 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 16 Bahn I\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",53.10184583],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",14.70144539],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187916\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187918,"mj10777.de",187918,"DHDN / Soldner 18 Müggelberg 600"); + add_proj4text(p,0,"+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 18 Müggelberg 600\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",52.41864827777778],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",13.62720366666667],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187918\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187919,"mj10777.de",187919,"DHDN / Soldner 19 Götzer Berg 650"); + add_proj4text(p,0,"+proj=cass +lat_0=52.43725961111112 +lon_0=12.72882972222223 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 19 Götzer Berg 650\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",52.43725961111112],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",12.72882972222223],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187919\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187920,"mj10777.de",187920,"DHDN / Soldner 20 Torgau, Stadtkirche"); + add_proj4text(p,0,"+proj=cass +lat_0=51.56136217 +lon_0=13.00760264 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 20 Torgau, Stadtkirche\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",51.56136217],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",13.00760264],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187920\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187921,"mj10777.de",187921,"DHDN / Soldner 21 Burkersroda, Kirchturm"); + add_proj4text(p,0,"+proj=cass +lat_0=51.17656322 +lon_0=11.64139367 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 21 Burkersroda, Kirchturm\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",51.17656322],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",11.64139367],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187921\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187922,"mj10777.de",187922,"DHDN / Soldner 22 Inselsberg"); + add_proj4text(p,0,"+proj=cass +lat_0=50.85237983 +lon_0=10.46776506 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 22 Inselsberg\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",50.85237983],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",10.46776506],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187922\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187923,"mj10777.de",187923,"DHDN / Soldner 23 Magdeburg"); + add_proj4text(p,0,"+proj=cass +lat_0=52.12625311 +lon_0=11.63550325 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 23 Magdeburg\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",52.12625311],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",11.63550325],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187923\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187924,"mj10777.de",187924,"DHDN / Soldner 24 Ostenfeld I"); + add_proj4text(p,0,"+proj=cass +lat_0=54.47018733 +lon_0=9.23411097 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 24 Ostenfeld I\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",54.47018733],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",9.23411097],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187924\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187925,"mj10777.de",187925,"DHDN / Soldner 25 Rathkrügen"); + add_proj4text(p,0,"+proj=cass +lat_0=53.81839364 +lon_0=10.04220189 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 25 Rathkrügen\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",53.81839364],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",10.04220189],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187925\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187926,"mj10777.de",187926,"DHDN / Soldner 26 Bungsberg, Aussichtsturm"); + add_proj4text(p,0,"+proj=cass +lat_0=54.21110653 +lon_0=10.72636431 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 26 Bungsberg, Aussichtsturm\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",54.21110653],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",10.72636431],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187926\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187927,"mj10777.de",187927,"DHDN / Soldner 27 Celle, Stadtkirche"); + add_proj4text(p,0,"+proj=cass +lat_0=52.62574192 +lon_0=10.08190214 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 27 Celle, Stadtkirche\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",52.62574192],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",10.08190214],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187927\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187928,"mj10777.de",187928,"DHDN / Soldner 28 Kaltenborn"); + add_proj4text(p,0,"+proj=cass +lat_0=51.79646722 +lon_0=10.27322494 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 28 Kaltenborn\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",51.79646722],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",10.27322494],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187928\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187929,"mj10777.de",187929,"DHDN / Soldner 29 Silberberg"); + add_proj4text(p,0,"+proj=cass +lat_0=53.73123461 +lon_0=9.05774925 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 29 Silberberg\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",53.73123461],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",9.05774925],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187929\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187930,"mj10777.de",187930,"DHDN / Soldner 30 Windberg"); + add_proj4text(p,0,"+proj=cass +lat_0=52.88088372 +lon_0=7.53062114 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 30 Windberg\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",52.88088372],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",7.53062114],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187930\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187931,"mj10777.de",187931,"DHDN / Soldner 31 Hermannsdenkmal"); + add_proj4text(p,0,"+proj=cass +lat_0=51.91301647 +lon_0=8.84051853 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 31 Hermannsdenkmal\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",51.91301647],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",8.84051853],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187931\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187932,"mj10777.de",187932,"DHDN / Soldner 32 Münster"); + add_proj4text(p,0,"+proj=cass +lat_0=51.96547642 +lon_0=7.62334994 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 32 Münster\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",51.96547642],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",7.62334994],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187932\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187933,"mj10777.de",187933,"DHDN / Soldner 33 Bochum, Peter-Paul-Kirche"); + add_proj4text(p,0,"+proj=cass +lat_0=51.48373533 +lon_0=7.22115822 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 33 Bochum, Peter-Paul-Kirche\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",51.48373533],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",7.22115822],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187933\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187934,"mj10777.de",187934,"DHDN / Soldner 34 Homert"); + add_proj4text(p,0,"+proj=cass +lat_0=51.26480147 +lon_0=8.10687050 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 34 Homert\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",51.26480147],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",8.10687050],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187934\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187935,"mj10777.de",187935,"DHDN / Soldner 35 Kassel, Martinskirche"); + add_proj4text(p,0,"+proj=cass +lat_0=51.31846489 +lon_0=9.50203072 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 35 Kassel, Martinskirche\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",51.31846489],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",9.50203072],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187935\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187936,"mj10777.de",187936,"DHDN / Soldner 36 Schaumburg, Schloßturm"); + add_proj4text(p,0,"+proj=cass +lat_0=50.34048964 +lon_0=7.97808156 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 36 Schaumburg, Schloßturm\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",50.34048964],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",7.97808156],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187936\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187937,"mj10777.de",187937,"DHDN / Soldner 37 Fleckert"); + add_proj4text(p,0,"+proj=cass +lat_0=50.18762544 +lon_0=7.60594289 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 37 Fleckert\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",50.18762544],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",7.60594289],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187937\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187938,"mj10777.de",187938,"DHDN / Soldner 38 Cöln, Dom"); + add_proj4text(p,0,"+proj=cass +lat_0=50.94257242 +lon_0=6.95897600 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 38 Cöln, Dom\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",50.94257242],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",6.95897600],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187938\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187939,"mj10777.de",187939,"DHDN / Soldner 39 Langschoß"); + add_proj4text(p,0,"+proj=cass +lat_0=50.66738711 +lon_0=6.28935703 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 39 Langschoß\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",50.66738711],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",6.28935703],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187939\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187940,"mj10777.de",187940,"DHDN / Soldner 40 Rissenthal"); + add_proj4text(p,0,"+proj=cass +lat_0=49.47801819 +lon_0=6.75864339 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner 40 Rissenthal\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",49.47801819],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",6.75864339],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187940\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def(filter,first,last,187941,"mj10777.de",187941,"DHDN / Soldner Bayern"); + add_proj4text(p,0,"+proj=cass +lat_0=48.13959111 +lon_0=11.57437083 "); + add_proj4text(p,1,"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner Bayern\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",48.13959111],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",11.57437083],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",0],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187941\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def (filter,first, last, 187998, "mj10777.de", 187998,"DHDN / Ferro / Deutsches_Hauptdreiecksnetz"); + add_proj4text(p,0,"+proj=longlat +ellps=bessel +datum=potsdam +pm=ferro +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Ferro / Deutsches_Hauptdreiecksnetz\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\","); + add_srs_wkt(p,3,"SPHEROID[\"Bessel 1841\",6377397.155,299.1528128,"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"7004\"]], AUTHORITY[\"EPSG\",\"6314\"]],"); + add_srs_wkt(p,5,"PRIMEM[\"ferro\",-17.66666666666667],UNIT[\"Degree\",0.017453292519943295,"); + add_srs_wkt(p,6,"AUTHORITY[\"mj10777.de\",\"187998\"]],AUTHORITY[\"EPSG\",\"4314\"]]"); +/* mj10777: Not exsiting System, used for testing purposes. */ + p = add_epsg_def(filter,first,last,187999,"mj10777.de",187999,"DHDN / Brandenburger Tor"); + add_proj4text(p,0,"+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 "); + add_proj4text(p,1,"+x_0=16819.76033675660074 +y_0=-11046.08218553455117 +ellps=bessel +datum=potsdam +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"DHDN / Soldner Brandenburger Tor\","); + add_srs_wkt(p,1,"GEOGCS[\"DHDN\","); + add_srs_wkt(p,2,"DATUM[\"Deutsches_Hauptdreiecksnetz\",SPHEROID[\"Bessel 1841\","); + add_srs_wkt(p,3,"6377397.155,299.1528128,AUTHORITY[\"EPSG\",\"7004\"]],"); + add_srs_wkt(p,4,"AUTHORITY[\"EPSG\",\"6314\"]],PRIMEM[\"Greenwich\",0,"); + add_srs_wkt(p,5,"AUTHORITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994328,"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4314\"]],"); + add_srs_wkt(p,7,"UNIT[\"metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],"); + add_srs_wkt(p,8,"PROJECTION[\"Cassini_Soldner\"],"); + add_srs_wkt(p,9,"PARAMETER[\"latitude_of_origin\",52.41864827777778],"); + add_srs_wkt(p,10,"PARAMETER[\"central_meridian\",13.62720366666667],"); + add_srs_wkt(p,11,"PARAMETER[\"false_easting\",16819.76033675660074],PARAMETER[\"false_northing\",-11046.08218553455117],"); + add_srs_wkt(p,12,"AUTHORITY[\"mj10777.de\",\"187999\"],AXIS[\"x\",NORTH],AXIS[\"y\",EAST]]"); + p = add_epsg_def (filter,first, last, 325833, "mj10777.de", 325833,"ETRS89 / UTM zone 33N (Brandenburg)"); + add_proj4text(p,0,"+proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs"); + add_srs_wkt(p,0,"PROJCS[\"ETRS89 / UTM zone 33N (Brandenburg)\",GEOGCS[\"ETRS89\","); + add_srs_wkt(p,1,"DATUM[\"European_Terrestrial_Reference_System_1989\","); + add_srs_wkt(p,2,"SPHEROID[\"GRS 1980\",6378137,298.257222101,"); + add_srs_wkt(p,3,"AUTHORITY[\"EPSG\",\"7019\"]],AUTHORITY[\"EPSG\",\"6258\"]],"); + add_srs_wkt(p,4,"PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt(p,5,"UNIT[\"degree\",0.01745329251994328,AUTHORITY[\"EPSG\",\"9122\"]],"); + add_srs_wkt(p,6,"AUTHORITY[\"EPSG\",\"4258\"]],UNIT[\"metre\",1,"); + add_srs_wkt(p,7,"AUTHORITY[\"EPSG\",\"9001\"]],PROJECTION[\"Transverse_Mercator\"],"); + add_srs_wkt(p,8,"PARAMETER[\"latitude_of_origin\",0],"); + add_srs_wkt(p,9,"PARAMETER[\"central_meridian\",15],PARAMETER[\"scale_factor\",0.9996],"); + add_srs_wkt(p,10,"PARAMETER[\"false_easting\",3500000],PARAMETER[\"false_northing\",0],"); + add_srs_wkt(p,11,"AUTHORITY[\"EPSG\",\"325833\"],"); + add_srs_wkt(p,12,"AXIS[\"Easting\",EAST],AXIS[\"Northing\",NORTH]]"); +} + +#endif /* full EPSG initialization enabled/disabled */ + diff --git a/src/spatialite/src/srsinit/epsg_inlined_wgs84_00.c b/src/spatialite/src/srsinit/epsg_inlined_wgs84_00.c new file mode 100644 index 0000000..9c98ce6 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_wgs84_00.c @@ -0,0 +1,2886 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +SPATIALITE_PRIVATE void +initialize_epsg_wgs84_00 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list [WGS84] */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 4326, "epsg", 4326, + "WGS 84"); + add_proj4text (p, 0, + "+proj=longlat +datum=WGS84 +no_defs"); + add_srs_wkt (p, 0, + "GEOGCS[\"WGS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\""); + add_srs_wkt (p, 1, + ",6378137,298.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUT"); + add_srs_wkt (p, 2, + "HORITY[\"EPSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHOR"); + add_srs_wkt (p, 3, + "ITY[\"EPSG\",\"8901\"]],UNIT[\"degree\",0.01745329251994"); + add_srs_wkt (p, 4, + "33,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"43"); + add_srs_wkt (p, 5, + "26\"]]"); + p = add_epsg_def (filter, first, last, 32601, "epsg", 32601, + "WGS 84 / UTM zone 1N"); + add_proj4text (p, 0, + "+proj=utm +zone=1 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 1N\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-177],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"32601\"]]"); + p = add_epsg_def (filter, first, last, 32602, "epsg", 32602, + "WGS 84 / UTM zone 2N"); + add_proj4text (p, 0, + "+proj=utm +zone=2 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 2N\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-171],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"32602\"]]"); + p = add_epsg_def (filter, first, last, 32603, "epsg", 32603, + "WGS 84 / UTM zone 3N"); + add_proj4text (p, 0, + "+proj=utm +zone=3 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 3N\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-165],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"32603\"]]"); + p = add_epsg_def (filter, first, last, 32604, "epsg", 32604, + "WGS 84 / UTM zone 4N"); + add_proj4text (p, 0, + "+proj=utm +zone=4 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 4N\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-159],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"32604\"]]"); + p = add_epsg_def (filter, first, last, 32605, "epsg", 32605, + "WGS 84 / UTM zone 5N"); + add_proj4text (p, 0, + "+proj=utm +zone=5 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 5N\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-153],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"32605\"]]"); + p = add_epsg_def (filter, first, last, 32606, "epsg", 32606, + "WGS 84 / UTM zone 6N"); + add_proj4text (p, 0, + "+proj=utm +zone=6 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 6N\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-147],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"32606\"]]"); + p = add_epsg_def (filter, first, last, 32607, "epsg", 32607, + "WGS 84 / UTM zone 7N"); + add_proj4text (p, 0, + "+proj=utm +zone=7 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 7N\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-141],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"32607\"]]"); + p = add_epsg_def (filter, first, last, 32608, "epsg", 32608, + "WGS 84 / UTM zone 8N"); + add_proj4text (p, 0, + "+proj=utm +zone=8 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 8N\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-135],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"32608\"]]"); + p = add_epsg_def (filter, first, last, 32609, "epsg", 32609, + "WGS 84 / UTM zone 9N"); + add_proj4text (p, 0, + "+proj=utm +zone=9 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 9N\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-129],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"32609\"]]"); + p = add_epsg_def (filter, first, last, 32610, "epsg", 32610, + "WGS 84 / UTM zone 10N"); + add_proj4text (p, 0, + "+proj=utm +zone=10 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 10N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-123],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"32610\"]]"); + p = add_epsg_def (filter, first, last, 32611, "epsg", 32611, + "WGS 84 / UTM zone 11N"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 11N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"32611\"]]"); + p = add_epsg_def (filter, first, last, 32612, "epsg", 32612, + "WGS 84 / UTM zone 12N"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 12N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-111],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"32612\"]]"); + p = add_epsg_def (filter, first, last, 32613, "epsg", 32613, + "WGS 84 / UTM zone 13N"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 13N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-105],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"32613\"]]"); + p = add_epsg_def (filter, first, last, 32614, "epsg", 32614, + "WGS 84 / UTM zone 14N"); + add_proj4text (p, 0, + "+proj=utm +zone=14 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 14N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-99],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32614\"]]"); + p = add_epsg_def (filter, first, last, 32615, "epsg", 32615, + "WGS 84 / UTM zone 15N"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 15N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-93],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32615\"]]"); + p = add_epsg_def (filter, first, last, 32616, "epsg", 32616, + "WGS 84 / UTM zone 16N"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 16N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-87],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32616\"]]"); + p = add_epsg_def (filter, first, last, 32617, "epsg", 32617, + "WGS 84 / UTM zone 17N"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 17N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-81],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32617\"]]"); + p = add_epsg_def (filter, first, last, 32618, "epsg", 32618, + "WGS 84 / UTM zone 18N"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 18N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-75],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32618\"]]"); + p = add_epsg_def (filter, first, last, 32619, "epsg", 32619, + "WGS 84 / UTM zone 19N"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 19N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32619\"]]"); + p = add_epsg_def (filter, first, last, 32620, "epsg", 32620, + "WGS 84 / UTM zone 20N"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 20N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32620\"]]"); + p = add_epsg_def (filter, first, last, 32621, "epsg", 32621, + "WGS 84 / UTM zone 21N"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 21N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32621\"]]"); + p = add_epsg_def (filter, first, last, 32622, "epsg", 32622, + "WGS 84 / UTM zone 22N"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 22N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-51],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32622\"]]"); + p = add_epsg_def (filter, first, last, 32623, "epsg", 32623, + "WGS 84 / UTM zone 23N"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 23N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-45],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32623\"]]"); + p = add_epsg_def (filter, first, last, 32624, "epsg", 32624, + "WGS 84 / UTM zone 24N"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 24N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-39],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32624\"]]"); + p = add_epsg_def (filter, first, last, 32625, "epsg", 32625, + "WGS 84 / UTM zone 25N"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 25N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-33],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32625\"]]"); + p = add_epsg_def (filter, first, last, 32626, "epsg", 32626, + "WGS 84 / UTM zone 26N"); + add_proj4text (p, 0, + "+proj=utm +zone=26 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 26N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-27],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32626\"]]"); + p = add_epsg_def (filter, first, last, 32627, "epsg", 32627, + "WGS 84 / UTM zone 27N"); + add_proj4text (p, 0, + "+proj=utm +zone=27 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 27N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-21],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32627\"]]"); + p = add_epsg_def (filter, first, last, 32628, "epsg", 32628, + "WGS 84 / UTM zone 28N"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 28N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-15],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32628\"]]"); + p = add_epsg_def (filter, first, last, 32629, "epsg", 32629, + "WGS 84 / UTM zone 29N"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 29N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-9],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32629\"]]"); + p = add_epsg_def (filter, first, last, 32630, "epsg", 32630, + "WGS 84 / UTM zone 30N"); + add_proj4text (p, 0, + "+proj=utm +zone=30 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 30N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-3],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32630\"]]"); + p = add_epsg_def (filter, first, last, 32631, "epsg", 32631, + "WGS 84 / UTM zone 31N"); + add_proj4text (p, 0, + "+proj=utm +zone=31 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 31N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",3],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 8, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 10, + "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); + add_srs_wkt (p, 11, + "NORTH],AUTHORITY[\"EPSG\",\"32631\"]]"); + p = add_epsg_def (filter, first, last, 32632, "epsg", 32632, + "WGS 84 / UTM zone 32N"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 32N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",9],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 8, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EPS"); + add_srs_wkt (p, 10, + "G\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\","); + add_srs_wkt (p, 11, + "NORTH],AUTHORITY[\"EPSG\",\"32632\"]]"); + p = add_epsg_def (filter, first, last, 32633, "epsg", 32633, + "WGS 84 / UTM zone 33N"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 33N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",15],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32633\"]]"); + p = add_epsg_def (filter, first, last, 32634, "epsg", 32634, + "WGS 84 / UTM zone 34N"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 34N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",21],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32634\"]]"); + p = add_epsg_def (filter, first, last, 32635, "epsg", 32635, + "WGS 84 / UTM zone 35N"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 35N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",27],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32635\"]]"); + p = add_epsg_def (filter, first, last, 32636, "epsg", 32636, + "WGS 84 / UTM zone 36N"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 36N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",33],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32636\"]]"); + p = add_epsg_def (filter, first, last, 32637, "epsg", 32637, + "WGS 84 / UTM zone 37N"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 37N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",39],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32637\"]]"); + p = add_epsg_def (filter, first, last, 32638, "epsg", 32638, + "WGS 84 / UTM zone 38N"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 38N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",45],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32638\"]]"); + p = add_epsg_def (filter, first, last, 32639, "epsg", 32639, + "WGS 84 / UTM zone 39N"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 39N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",51],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32639\"]]"); + p = add_epsg_def (filter, first, last, 32640, "epsg", 32640, + "WGS 84 / UTM zone 40N"); + add_proj4text (p, 0, + "+proj=utm +zone=40 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 40N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",57],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32640\"]]"); + p = add_epsg_def (filter, first, last, 32641, "epsg", 32641, + "WGS 84 / UTM zone 41N"); + add_proj4text (p, 0, + "+proj=utm +zone=41 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 41N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",63],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32641\"]]"); + p = add_epsg_def (filter, first, last, 32642, "epsg", 32642, + "WGS 84 / UTM zone 42N"); + add_proj4text (p, 0, + "+proj=utm +zone=42 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 42N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",69],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32642\"]]"); + p = add_epsg_def (filter, first, last, 32643, "epsg", 32643, + "WGS 84 / UTM zone 43N"); + add_proj4text (p, 0, + "+proj=utm +zone=43 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 43N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",75],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32643\"]]"); + p = add_epsg_def (filter, first, last, 32644, "epsg", 32644, + "WGS 84 / UTM zone 44N"); + add_proj4text (p, 0, + "+proj=utm +zone=44 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 44N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",81],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32644\"]]"); + p = add_epsg_def (filter, first, last, 32645, "epsg", 32645, + "WGS 84 / UTM zone 45N"); + add_proj4text (p, 0, + "+proj=utm +zone=45 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 45N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",87],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32645\"]]"); + p = add_epsg_def (filter, first, last, 32646, "epsg", 32646, + "WGS 84 / UTM zone 46N"); + add_proj4text (p, 0, + "+proj=utm +zone=46 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 46N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",93],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32646\"]]"); + p = add_epsg_def (filter, first, last, 32647, "epsg", 32647, + "WGS 84 / UTM zone 47N"); + add_proj4text (p, 0, + "+proj=utm +zone=47 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 47N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",99],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"EP"); + add_srs_wkt (p, 10, + "SG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32647\"]]"); + p = add_epsg_def (filter, first, last, 32648, "epsg", 32648, + "WGS 84 / UTM zone 48N"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 48N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",105],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32648\"]]"); + p = add_epsg_def (filter, first, last, 32649, "epsg", 32649, + "WGS 84 / UTM zone 49N"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 49N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",111],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32649\"]]"); + p = add_epsg_def (filter, first, last, 32650, "epsg", 32650, + "WGS 84 / UTM zone 50N"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 50N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",117],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32650\"]]"); + p = add_epsg_def (filter, first, last, 32651, "epsg", 32651, + "WGS 84 / UTM zone 51N"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 51N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",123],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32651\"]]"); + p = add_epsg_def (filter, first, last, 32652, "epsg", 32652, + "WGS 84 / UTM zone 52N"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 52N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",129],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32652\"]]"); + p = add_epsg_def (filter, first, last, 32653, "epsg", 32653, + "WGS 84 / UTM zone 53N"); + add_proj4text (p, 0, + "+proj=utm +zone=53 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 53N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",135],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32653\"]]"); + p = add_epsg_def (filter, first, last, 32654, "epsg", 32654, + "WGS 84 / UTM zone 54N"); + add_proj4text (p, 0, + "+proj=utm +zone=54 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 54N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",141],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32654\"]]"); + p = add_epsg_def (filter, first, last, 32655, "epsg", 32655, + "WGS 84 / UTM zone 55N"); + add_proj4text (p, 0, + "+proj=utm +zone=55 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 55N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",147],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32655\"]]"); + p = add_epsg_def (filter, first, last, 32656, "epsg", 32656, + "WGS 84 / UTM zone 56N"); + add_proj4text (p, 0, + "+proj=utm +zone=56 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 56N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",153],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32656\"]]"); + p = add_epsg_def (filter, first, last, 32657, "epsg", 32657, + "WGS 84 / UTM zone 57N"); + add_proj4text (p, 0, + "+proj=utm +zone=57 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 57N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",159],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32657\"]]"); + p = add_epsg_def (filter, first, last, 32658, "epsg", 32658, + "WGS 84 / UTM zone 58N"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 58N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",165],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32658\"]]"); + p = add_epsg_def (filter, first, last, 32659, "epsg", 32659, + "WGS 84 / UTM zone 59N"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 59N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",171],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32659\"]]"); + p = add_epsg_def (filter, first, last, 32660, "epsg", 32660, + "WGS 84 / UTM zone 60N"); + add_proj4text (p, 0, + "+proj=utm +zone=60 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 60N\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",177],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",0],UNIT[\"metre\",1,AUTHORITY[\"E"); + add_srs_wkt (p, 10, + "PSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing\""); + add_srs_wkt (p, 11, + ",NORTH],AUTHORITY[\"EPSG\",\"32660\"]]"); + p = add_epsg_def (filter, first, last, 32661, "epsg", 32661, + "WGS 84 / UPS North (N,E)"); + add_proj4text (p, 0, + "+proj=stere +lat_0=90 +lat_ts=90 +lon_0=0 +k=0.994 +x_0="); + add_proj4text (p, 1, + "2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UPS North (N,E)\",GEOGCS[\"WGS 84\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2572235"); + add_srs_wkt (p, 2, + "63,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"63"); + add_srs_wkt (p, 3, + "26\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"P"); + add_srs_wkt (p, 6, + "olar_Stereographic\"],PARAMETER[\"latitude_of_origin\",9"); + add_srs_wkt (p, 7, + "0],PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_f"); + add_srs_wkt (p, 8, + "actor\",0.994],PARAMETER[\"false_easting\",2000000],PARA"); + add_srs_wkt (p, 9, + "METER[\"false_northing\",2000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"32661\"]]"); + p = add_epsg_def (filter, first, last, 32662, "epsg", 32662, + "WGS 84 / Plate Carree (deprecated)"); + add_proj4text (p, 0, + "+proj=eqc +lat_ts=0 +lat_0=0 +lon_0=0 +x_0=0 +y_0=0 +dat"); + add_proj4text (p, 1, + "um=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / Plate Carree (deprecated)\",GEOGCS[\"W"); + add_srs_wkt (p, 1, + "GS 84\",DATUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,2"); + add_srs_wkt (p, 2, + "98.257223563,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"E"); + add_srs_wkt (p, 3, + "PSG\",\"6326\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG"); + add_srs_wkt (p, 4, + "\",\"8901\"]],UNIT[\"degree\",0.0174532925199433,AUTHORI"); + add_srs_wkt (p, 5, + "TY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PRO"); + add_srs_wkt (p, 6, + "JECTION[\"Equirectangular\"],PARAMETER[\"latitude_of_ori"); + add_srs_wkt (p, 7, + "gin\",0],PARAMETER[\"central_meridian\",0],PARAMETER[\"f"); + add_srs_wkt (p, 8, + "alse_easting\",0],PARAMETER[\"false_northing\",0],UNIT[\""); + add_srs_wkt (p, 9, + "metre\",1,AUTHORITY[\"EPSG\",\"9001\"]],AXIS[\"X\",EAST]"); + add_srs_wkt (p, 10, + ",AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32662\"]]"); + p = add_epsg_def (filter, first, last, 32664, "epsg", 32664, + "WGS 84 / BLM 14N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-99 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / BLM 14N (ftUS)\",GEOGCS[\"WGS 84\",DAT"); + add_srs_wkt (p, 1, + "UM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.25722356"); + add_srs_wkt (p, 2, + "3,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"632"); + add_srs_wkt (p, 3, + "6\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"T"); + add_srs_wkt (p, 6, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 7, + "],PARAMETER[\"central_meridian\",-99],PARAMETER[\"scale_"); + add_srs_wkt (p, 8, + "factor\",0.9996],PARAMETER[\"false_easting\",1640416.67]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 10, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 11, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32664\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 32665, "epsg", 32665, + "WGS 84 / BLM 15N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-93 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / BLM 15N (ftUS)\",GEOGCS[\"WGS 84\",DAT"); + add_srs_wkt (p, 1, + "UM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.25722356"); + add_srs_wkt (p, 2, + "3,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"632"); + add_srs_wkt (p, 3, + "6\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"T"); + add_srs_wkt (p, 6, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 7, + "],PARAMETER[\"central_meridian\",-93],PARAMETER[\"scale_"); + add_srs_wkt (p, 8, + "factor\",0.9996],PARAMETER[\"false_easting\",1640416.67]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 10, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 11, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32665\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 32666, "epsg", 32666, + "WGS 84 / BLM 16N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-87 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / BLM 16N (ftUS)\",GEOGCS[\"WGS 84\",DAT"); + add_srs_wkt (p, 1, + "UM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.25722356"); + add_srs_wkt (p, 2, + "3,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"632"); + add_srs_wkt (p, 3, + "6\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"T"); + add_srs_wkt (p, 6, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 7, + "],PARAMETER[\"central_meridian\",-87],PARAMETER[\"scale_"); + add_srs_wkt (p, 8, + "factor\",0.9996],PARAMETER[\"false_easting\",1640416.67]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 10, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 11, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32666\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 32667, "epsg", 32667, + "WGS 84 / BLM 17N (ftUS)"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=-81 +k=0.9996 +x_0=500000.00"); + add_proj4text (p, 1, + "1016002 +y_0=0 +datum=WGS84 +units=us-ft +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / BLM 17N (ftUS)\",GEOGCS[\"WGS 84\",DAT"); + add_srs_wkt (p, 1, + "UM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.25722356"); + add_srs_wkt (p, 2, + "3,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"632"); + add_srs_wkt (p, 3, + "6\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"T"); + add_srs_wkt (p, 6, + "ransverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0"); + add_srs_wkt (p, 7, + "],PARAMETER[\"central_meridian\",-81],PARAMETER[\"scale_"); + add_srs_wkt (p, 8, + "factor\",0.9996],PARAMETER[\"false_easting\",1640416.67]"); + add_srs_wkt (p, 9, + ",PARAMETER[\"false_northing\",0],UNIT[\"US survey foot\""); + add_srs_wkt (p, 10, + ",0.3048006096012192,AUTHORITY[\"EPSG\",\"9003\"]],AXIS[\""); + add_srs_wkt (p, 11, + "X\",EAST],AXIS[\"Y\",NORTH],AUTHORITY[\"EPSG\",\"32667\""); + add_srs_wkt (p, 12, + "]]"); + p = add_epsg_def (filter, first, last, 32701, "epsg", 32701, + "WGS 84 / UTM zone 1S"); + add_proj4text (p, 0, + "+proj=utm +zone=1 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 1S\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-177],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 11, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32701\"]]"); + p = add_epsg_def (filter, first, last, 32702, "epsg", 32702, + "WGS 84 / UTM zone 2S"); + add_proj4text (p, 0, + "+proj=utm +zone=2 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 2S\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-171],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 11, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32702\"]]"); + p = add_epsg_def (filter, first, last, 32703, "epsg", 32703, + "WGS 84 / UTM zone 3S"); + add_proj4text (p, 0, + "+proj=utm +zone=3 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 3S\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-165],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 11, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32703\"]]"); + p = add_epsg_def (filter, first, last, 32704, "epsg", 32704, + "WGS 84 / UTM zone 4S"); + add_proj4text (p, 0, + "+proj=utm +zone=4 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 4S\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-159],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 11, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32704\"]]"); + p = add_epsg_def (filter, first, last, 32705, "epsg", 32705, + "WGS 84 / UTM zone 5S"); + add_proj4text (p, 0, + "+proj=utm +zone=5 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 5S\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-153],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 11, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32705\"]]"); + p = add_epsg_def (filter, first, last, 32706, "epsg", 32706, + "WGS 84 / UTM zone 6S"); + add_proj4text (p, 0, + "+proj=utm +zone=6 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 6S\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-147],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 11, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32706\"]]"); + p = add_epsg_def (filter, first, last, 32707, "epsg", 32707, + "WGS 84 / UTM zone 7S"); + add_proj4text (p, 0, + "+proj=utm +zone=7 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 7S\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-141],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 11, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32707\"]]"); + p = add_epsg_def (filter, first, last, 32708, "epsg", 32708, + "WGS 84 / UTM zone 8S"); + add_proj4text (p, 0, + "+proj=utm +zone=8 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 8S\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-135],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 11, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32708\"]]"); + p = add_epsg_def (filter, first, last, 32709, "epsg", 32709, + "WGS 84 / UTM zone 9S"); + add_proj4text (p, 0, + "+proj=utm +zone=9 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 9S\",GEOGCS[\"WGS 84\",DATUM["); + add_srs_wkt (p, 1, + "\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,A"); + add_srs_wkt (p, 2, + "UTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-129],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 11, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32709\"]]"); + p = add_epsg_def (filter, first, last, 32710, "epsg", 32710, + "WGS 84 / UTM zone 10S"); + add_proj4text (p, 0, + "+proj=utm +zone=10 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 10S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-123],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 11, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32710\"]]"); + p = add_epsg_def (filter, first, last, 32711, "epsg", 32711, + "WGS 84 / UTM zone 11S"); + add_proj4text (p, 0, + "+proj=utm +zone=11 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 11S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-117],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 11, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32711\"]]"); + p = add_epsg_def (filter, first, last, 32712, "epsg", 32712, + "WGS 84 / UTM zone 12S"); + add_proj4text (p, 0, + "+proj=utm +zone=12 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 12S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-111],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 11, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32712\"]]"); + p = add_epsg_def (filter, first, last, 32713, "epsg", 32713, + "WGS 84 / UTM zone 13S"); + add_proj4text (p, 0, + "+proj=utm +zone=13 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 13S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-105],PARAMETER[\"scale_fa"); + add_srs_wkt (p, 8, + "ctor\",0.9996],PARAMETER[\"false_easting\",500000],PARAM"); + add_srs_wkt (p, 9, + "ETER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHO"); + add_srs_wkt (p, 10, + "RITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"N"); + add_srs_wkt (p, 11, + "orthing\",NORTH],AUTHORITY[\"EPSG\",\"32713\"]]"); + p = add_epsg_def (filter, first, last, 32714, "epsg", 32714, + "WGS 84 / UTM zone 14S"); + add_proj4text (p, 0, + "+proj=utm +zone=14 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 14S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-99],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32714\"]]"); + p = add_epsg_def (filter, first, last, 32715, "epsg", 32715, + "WGS 84 / UTM zone 15S"); + add_proj4text (p, 0, + "+proj=utm +zone=15 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 15S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-93],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32715\"]]"); + p = add_epsg_def (filter, first, last, 32716, "epsg", 32716, + "WGS 84 / UTM zone 16S"); + add_proj4text (p, 0, + "+proj=utm +zone=16 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 16S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-87],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32716\"]]"); + p = add_epsg_def (filter, first, last, 32717, "epsg", 32717, + "WGS 84 / UTM zone 17S"); + add_proj4text (p, 0, + "+proj=utm +zone=17 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 17S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-81],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32717\"]]"); + p = add_epsg_def (filter, first, last, 32718, "epsg", 32718, + "WGS 84 / UTM zone 18S"); + add_proj4text (p, 0, + "+proj=utm +zone=18 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 18S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-75],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32718\"]]"); + p = add_epsg_def (filter, first, last, 32719, "epsg", 32719, + "WGS 84 / UTM zone 19S"); + add_proj4text (p, 0, + "+proj=utm +zone=19 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 19S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-69],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32719\"]]"); + p = add_epsg_def (filter, first, last, 32720, "epsg", 32720, + "WGS 84 / UTM zone 20S"); + add_proj4text (p, 0, + "+proj=utm +zone=20 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 20S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-63],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32720\"]]"); + p = add_epsg_def (filter, first, last, 32721, "epsg", 32721, + "WGS 84 / UTM zone 21S"); + add_proj4text (p, 0, + "+proj=utm +zone=21 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 21S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-57],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32721\"]]"); + p = add_epsg_def (filter, first, last, 32722, "epsg", 32722, + "WGS 84 / UTM zone 22S"); + add_proj4text (p, 0, + "+proj=utm +zone=22 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 22S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-51],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32722\"]]"); + p = add_epsg_def (filter, first, last, 32723, "epsg", 32723, + "WGS 84 / UTM zone 23S"); + add_proj4text (p, 0, + "+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 23S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-45],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32723\"]]"); + p = add_epsg_def (filter, first, last, 32724, "epsg", 32724, + "WGS 84 / UTM zone 24S"); + add_proj4text (p, 0, + "+proj=utm +zone=24 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 24S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-39],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32724\"]]"); + p = add_epsg_def (filter, first, last, 32725, "epsg", 32725, + "WGS 84 / UTM zone 25S"); + add_proj4text (p, 0, + "+proj=utm +zone=25 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 25S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-33],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32725\"]]"); + p = add_epsg_def (filter, first, last, 32726, "epsg", 32726, + "WGS 84 / UTM zone 26S"); + add_proj4text (p, 0, + "+proj=utm +zone=26 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 26S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-27],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32726\"]]"); + p = add_epsg_def (filter, first, last, 32727, "epsg", 32727, + "WGS 84 / UTM zone 27S"); + add_proj4text (p, 0, + "+proj=utm +zone=27 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 27S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-21],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32727\"]]"); + p = add_epsg_def (filter, first, last, 32728, "epsg", 32728, + "WGS 84 / UTM zone 28S"); + add_proj4text (p, 0, + "+proj=utm +zone=28 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 28S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-15],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32728\"]]"); + p = add_epsg_def (filter, first, last, 32729, "epsg", 32729, + "WGS 84 / UTM zone 29S"); + add_proj4text (p, 0, + "+proj=utm +zone=29 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 29S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-9],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32729\"]]"); + p = add_epsg_def (filter, first, last, 32730, "epsg", 32730, + "WGS 84 / UTM zone 30S"); + add_proj4text (p, 0, + "+proj=utm +zone=30 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 30S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",-3],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32730\"]]"); + p = add_epsg_def (filter, first, last, 32731, "epsg", 32731, + "WGS 84 / UTM zone 31S"); + add_proj4text (p, 0, + "+proj=utm +zone=31 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 31S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",3],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 8, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 10, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 11, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"32731\"]]"); + p = add_epsg_def (filter, first, last, 32732, "epsg", 32732, + "WGS 84 / UTM zone 32S"); + add_proj4text (p, 0, + "+proj=utm +zone=32 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 32S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",9],PARAMETER[\"scale_facto"); + add_srs_wkt (p, 8, + "r\",0.9996],PARAMETER[\"false_easting\",500000],PARAMETE"); + add_srs_wkt (p, 9, + "R[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORIT"); + add_srs_wkt (p, 10, + "Y[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nort"); + add_srs_wkt (p, 11, + "hing\",NORTH],AUTHORITY[\"EPSG\",\"32732\"]]"); + p = add_epsg_def (filter, first, last, 32733, "epsg", 32733, + "WGS 84 / UTM zone 33S"); + add_proj4text (p, 0, + "+proj=utm +zone=33 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 33S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",15],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32733\"]]"); + p = add_epsg_def (filter, first, last, 32734, "epsg", 32734, + "WGS 84 / UTM zone 34S"); + add_proj4text (p, 0, + "+proj=utm +zone=34 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 34S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",21],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32734\"]]"); +} + diff --git a/src/spatialite/src/srsinit/epsg_inlined_wgs84_01.c b/src/spatialite/src/srsinit/epsg_inlined_wgs84_01.c new file mode 100644 index 0000000..ddc9f0e --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_inlined_wgs84_01.c @@ -0,0 +1,840 @@ +/* + + helper function for srs_init.c -- populating the SPATIAL_REF_SYS table + + this code was autogenerated by "auto_epsg" on Fri May 16 09:57:30 2014 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include + +SPATIALITE_PRIVATE void +initialize_epsg_wgs84_01 (int filter, struct epsg_defs **first, struct epsg_defs **last) +{ +/* initializing the EPSG defs list [WGS84] */ + struct epsg_defs *p; + p = add_epsg_def (filter, first, last, 32735, "epsg", 32735, + "WGS 84 / UTM zone 35S"); + add_proj4text (p, 0, + "+proj=utm +zone=35 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 35S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",27],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32735\"]]"); + p = add_epsg_def (filter, first, last, 32736, "epsg", 32736, + "WGS 84 / UTM zone 36S"); + add_proj4text (p, 0, + "+proj=utm +zone=36 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 36S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",33],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32736\"]]"); + p = add_epsg_def (filter, first, last, 32737, "epsg", 32737, + "WGS 84 / UTM zone 37S"); + add_proj4text (p, 0, + "+proj=utm +zone=37 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 37S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",39],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32737\"]]"); + p = add_epsg_def (filter, first, last, 32738, "epsg", 32738, + "WGS 84 / UTM zone 38S"); + add_proj4text (p, 0, + "+proj=utm +zone=38 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 38S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",45],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32738\"]]"); + p = add_epsg_def (filter, first, last, 32739, "epsg", 32739, + "WGS 84 / UTM zone 39S"); + add_proj4text (p, 0, + "+proj=utm +zone=39 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 39S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",51],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32739\"]]"); + p = add_epsg_def (filter, first, last, 32740, "epsg", 32740, + "WGS 84 / UTM zone 40S"); + add_proj4text (p, 0, + "+proj=utm +zone=40 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 40S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",57],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32740\"]]"); + p = add_epsg_def (filter, first, last, 32741, "epsg", 32741, + "WGS 84 / UTM zone 41S"); + add_proj4text (p, 0, + "+proj=utm +zone=41 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 41S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",63],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32741\"]]"); + p = add_epsg_def (filter, first, last, 32742, "epsg", 32742, + "WGS 84 / UTM zone 42S"); + add_proj4text (p, 0, + "+proj=utm +zone=42 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 42S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",69],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32742\"]]"); + p = add_epsg_def (filter, first, last, 32743, "epsg", 32743, + "WGS 84 / UTM zone 43S"); + add_proj4text (p, 0, + "+proj=utm +zone=43 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 43S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",75],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32743\"]]"); + p = add_epsg_def (filter, first, last, 32744, "epsg", 32744, + "WGS 84 / UTM zone 44S"); + add_proj4text (p, 0, + "+proj=utm +zone=44 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 44S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",81],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32744\"]]"); + p = add_epsg_def (filter, first, last, 32745, "epsg", 32745, + "WGS 84 / UTM zone 45S"); + add_proj4text (p, 0, + "+proj=utm +zone=45 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 45S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",87],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32745\"]]"); + p = add_epsg_def (filter, first, last, 32746, "epsg", 32746, + "WGS 84 / UTM zone 46S"); + add_proj4text (p, 0, + "+proj=utm +zone=46 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 46S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",93],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32746\"]]"); + p = add_epsg_def (filter, first, last, 32747, "epsg", 32747, + "WGS 84 / UTM zone 47S"); + add_proj4text (p, 0, + "+proj=utm +zone=47 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 47S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",99],PARAMETER[\"scale_fact"); + add_srs_wkt (p, 8, + "or\",0.9996],PARAMETER[\"false_easting\",500000],PARAMET"); + add_srs_wkt (p, 9, + "ER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHORI"); + add_srs_wkt (p, 10, + "TY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Nor"); + add_srs_wkt (p, 11, + "thing\",NORTH],AUTHORITY[\"EPSG\",\"32747\"]]"); + p = add_epsg_def (filter, first, last, 32748, "epsg", 32748, + "WGS 84 / UTM zone 48S"); + add_proj4text (p, 0, + "+proj=utm +zone=48 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 48S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",105],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32748\"]]"); + p = add_epsg_def (filter, first, last, 32749, "epsg", 32749, + "WGS 84 / UTM zone 49S"); + add_proj4text (p, 0, + "+proj=utm +zone=49 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 49S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",111],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32749\"]]"); + p = add_epsg_def (filter, first, last, 32750, "epsg", 32750, + "WGS 84 / UTM zone 50S"); + add_proj4text (p, 0, + "+proj=utm +zone=50 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 50S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",117],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32750\"]]"); + p = add_epsg_def (filter, first, last, 32751, "epsg", 32751, + "WGS 84 / UTM zone 51S"); + add_proj4text (p, 0, + "+proj=utm +zone=51 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 51S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",123],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32751\"]]"); + p = add_epsg_def (filter, first, last, 32752, "epsg", 32752, + "WGS 84 / UTM zone 52S"); + add_proj4text (p, 0, + "+proj=utm +zone=52 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 52S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",129],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32752\"]]"); + p = add_epsg_def (filter, first, last, 32753, "epsg", 32753, + "WGS 84 / UTM zone 53S"); + add_proj4text (p, 0, + "+proj=utm +zone=53 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 53S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",135],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32753\"]]"); + p = add_epsg_def (filter, first, last, 32754, "epsg", 32754, + "WGS 84 / UTM zone 54S"); + add_proj4text (p, 0, + "+proj=utm +zone=54 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 54S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",141],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32754\"]]"); + p = add_epsg_def (filter, first, last, 32755, "epsg", 32755, + "WGS 84 / UTM zone 55S"); + add_proj4text (p, 0, + "+proj=utm +zone=55 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 55S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",147],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32755\"]]"); + p = add_epsg_def (filter, first, last, 32756, "epsg", 32756, + "WGS 84 / UTM zone 56S"); + add_proj4text (p, 0, + "+proj=utm +zone=56 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 56S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",153],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32756\"]]"); + p = add_epsg_def (filter, first, last, 32757, "epsg", 32757, + "WGS 84 / UTM zone 57S"); + add_proj4text (p, 0, + "+proj=utm +zone=57 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 57S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",159],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32757\"]]"); + p = add_epsg_def (filter, first, last, 32758, "epsg", 32758, + "WGS 84 / UTM zone 58S"); + add_proj4text (p, 0, + "+proj=utm +zone=58 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 58S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",165],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32758\"]]"); + p = add_epsg_def (filter, first, last, 32759, "epsg", 32759, + "WGS 84 / UTM zone 59S"); + add_proj4text (p, 0, + "+proj=utm +zone=59 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 59S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",171],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32759\"]]"); + p = add_epsg_def (filter, first, last, 32760, "epsg", 32760, + "WGS 84 / UTM zone 60S"); + add_proj4text (p, 0, + "+proj=utm +zone=60 +south +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UTM zone 60S\",GEOGCS[\"WGS 84\",DATUM"); + add_srs_wkt (p, 1, + "[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,"); + add_srs_wkt (p, 2, + "AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\""); + add_srs_wkt (p, 3, + "]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],"); + add_srs_wkt (p, 4, + "UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\""); + add_srs_wkt (p, 5, + "9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Tran"); + add_srs_wkt (p, 6, + "sverse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],P"); + add_srs_wkt (p, 7, + "ARAMETER[\"central_meridian\",177],PARAMETER[\"scale_fac"); + add_srs_wkt (p, 8, + "tor\",0.9996],PARAMETER[\"false_easting\",500000],PARAME"); + add_srs_wkt (p, 9, + "TER[\"false_northing\",10000000],UNIT[\"metre\",1,AUTHOR"); + add_srs_wkt (p, 10, + "ITY[\"EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"No"); + add_srs_wkt (p, 11, + "rthing\",NORTH],AUTHORITY[\"EPSG\",\"32760\"]]"); + p = add_epsg_def (filter, first, last, 32761, "epsg", 32761, + "WGS 84 / UPS South (N,E)"); + add_proj4text (p, 0, + "+proj=stere +lat_0=-90 +lat_ts=-90 +lon_0=0 +k=0.994 +x_"); + add_proj4text (p, 1, + "0=2000000 +y_0=2000000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / UPS South (N,E)\",GEOGCS[\"WGS 84\",DA"); + add_srs_wkt (p, 1, + "TUM[\"WGS_1984\",SPHEROID[\"WGS 84\",6378137,298.2572235"); + add_srs_wkt (p, 2, + "63,AUTHORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"63"); + add_srs_wkt (p, 3, + "26\"]],PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\""); + add_srs_wkt (p, 4, + "]],UNIT[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\""); + add_srs_wkt (p, 5, + ",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"P"); + add_srs_wkt (p, 6, + "olar_Stereographic\"],PARAMETER[\"latitude_of_origin\",-"); + add_srs_wkt (p, 7, + "90],PARAMETER[\"central_meridian\",0],PARAMETER[\"scale_"); + add_srs_wkt (p, 8, + "factor\",0.994],PARAMETER[\"false_easting\",2000000],PAR"); + add_srs_wkt (p, 9, + "AMETER[\"false_northing\",2000000],UNIT[\"metre\",1,AUTH"); + add_srs_wkt (p, 10, + "ORITY[\"EPSG\",\"9001\"]],AUTHORITY[\"EPSG\",\"32761\"]]"); + p = add_epsg_def (filter, first, last, 32766, "epsg", 32766, + "WGS 84 / TM 36 SE"); + add_proj4text (p, 0, + "+proj=tmerc +lat_0=0 +lon_0=36 +k=0.9996 +x_0=500000 +y_"); + add_proj4text (p, 1, + "0=10000000 +datum=WGS84 +units=m +no_defs"); + add_srs_wkt (p, 0, + "PROJCS[\"WGS 84 / TM 36 SE\",GEOGCS[\"WGS 84\",DATUM[\"W"); + add_srs_wkt (p, 1, + "GS_1984\",SPHEROID[\"WGS 84\",6378137,298.257223563,AUTH"); + add_srs_wkt (p, 2, + "ORITY[\"EPSG\",\"7030\"]],AUTHORITY[\"EPSG\",\"6326\"]],"); + add_srs_wkt (p, 3, + "PRIMEM[\"Greenwich\",0,AUTHORITY[\"EPSG\",\"8901\"]],UNI"); + add_srs_wkt (p, 4, + "T[\"degree\",0.0174532925199433,AUTHORITY[\"EPSG\",\"912"); + add_srs_wkt (p, 5, + "2\"]],AUTHORITY[\"EPSG\",\"4326\"]],PROJECTION[\"Transve"); + add_srs_wkt (p, 6, + "rse_Mercator\"],PARAMETER[\"latitude_of_origin\",0],PARA"); + add_srs_wkt (p, 7, + "METER[\"central_meridian\",36],PARAMETER[\"scale_factor\""); + add_srs_wkt (p, 8, + ",0.9996],PARAMETER[\"false_easting\",500000],PARAMETER[\""); + add_srs_wkt (p, 9, + "false_northing\",10000000],UNIT[\"metre\",1,AUTHORITY[\""); + add_srs_wkt (p, 10, + "EPSG\",\"9001\"]],AXIS[\"Easting\",EAST],AXIS[\"Northing"); + add_srs_wkt (p, 11, + "\",NORTH],AUTHORITY[\"EPSG\",\"32766\"]]"); +} + diff --git a/src/spatialite/src/srsinit/epsg_update/Makefile.am b/src/spatialite/src/srsinit/epsg_update/Makefile.am new file mode 100644 index 0000000..384cbc3 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_update/Makefile.am @@ -0,0 +1,3 @@ + +EXTRA_DIST = README.txt auto_epsg.c + diff --git a/src/spatialite/src/srsinit/epsg_update/Makefile.in b/src/spatialite/src/srsinit/epsg_update/Makefile.in new file mode 100644 index 0000000..d9390fd --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_update/Makefile.in @@ -0,0 +1,437 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/srsinit/epsg_update +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = README.txt auto_epsg.c +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/srsinit/epsg_update/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/srsinit/epsg_update/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/srsinit/epsg_update/README.txt b/src/spatialite/src/srsinit/epsg_update/README.txt new file mode 100644 index 0000000..b07d746 --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_update/README.txt @@ -0,0 +1,57 @@ +HOW-TO: UPDATE spatial_ref_sys SELF-INITIALIZING C CODE +============================================================================ +When updating is required: each time a new GDAL version will be released. +============================================================================ + +STEP #1: getting the basic EPSG files +-------- +- download the latest GDAL sources +- build and install + be sure to set: ./configure --with-python=yes + +# cd {gdal-sources}/data +# rm epsg +# epsg_tr.py --config OVERRIDE_PROJ_DATUM_WITH_TOWGS84 FALSE \ +# -proj4 -skip -list gcs.csv > epsg +# epsg_tr.py --config OVERRIDE_PROJ_DATUM_WITH_TOWGS84 FALSE \ +# -proj4 -skip -list pcs.csv >> epsg +# rm wkt +# epsg_tr.py -wkt -skip -list gcs.csv > wkt +# epsg_tr.py -wkt -skip -list pcs.csv >> wkt + +all right: these "epsg" and "wkt" files will be used as "seeds" into the +next step: +- copy both "epsg" and "wkt" files into: + {libspatialite-source}/src/srcinit/epsg_update + + + +STEP #2: compiling the C generator tool +-------- +# cd {libspatialite-source}/src/srsinit/epsg_update + +Linux: +# gcc auto_epsg.c -o auto_epsg + +Windows [MinGW]: +# gcc auto_epsg.c -o auto_epsg.exe + + + +STEP #3: generating the C code [inlined EPSG dataset] +-------- +# rm epsg_inlined_*.c +# ./auto_epsg + +at the end of this step several "epsg_inlined_*.c" files will be generated + + + +STEP #4: final setup +-------- +- copy the generated file into the parent dir: + rm ../epsg_inlined*.c + cp epsg_inlined*.c .. +- be sure to update as required the repository (ADD/DEL) +- be sure to update as required Makefile.am +- and finally commit into the repository diff --git a/src/spatialite/src/srsinit/epsg_update/auto_epsg.c b/src/spatialite/src/srsinit/epsg_update/auto_epsg.c new file mode 100644 index 0000000..ad4ce8e --- /dev/null +++ b/src/spatialite/src/srsinit/epsg_update/auto_epsg.c @@ -0,0 +1,2301 @@ +/* +/ auto_epsg +/ +/ a tool autogenerating C code for SpatiaLite +/ [spatial_ref_sys self-initialization routines] +/ +/ version 1.0, 2012 January 18 +/ +/ Author: Sandro Furieri a.furieri@lqt.it +/ +/ Copyright (C) 2011 Alessandro Furieri +/ +/ This program is free software: you can redistribute it and/or modify +/ it under the terms of the GNU General Public License as published by +/ the Free Software Foundation, either version 3 of the License, or +/ (at your option) any later version. +/ +/ This program is distributed in the hope that it will be useful, +/ but WITHOUT ANY WARRANTY; without even the implied warranty of +/ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +/ GNU General Public License for more details. +/ +/ You should have received a copy of the GNU General Public License +/ along with this program. If not, see . +/ +*/ + +#include +#include +#include +#include + +struct epsg_entry +{ +/* a struct wrapping an EPSG entry */ + int srid; + char *ref_sys_name; + char *proj4text; + char *srs_wkt; + struct epsg_entry *next; +}; + +struct epsg_dict +{ +/* the EPSG dictionary */ + struct epsg_entry *first; + struct epsg_entry *last; + struct epsg_entry **sorted; + int count; +}; + +static void +free_epsg_entry (struct epsg_entry *p) +{ +/* destroying an epsg_entry */ + if (p->ref_sys_name) + free (p->ref_sys_name); + if (p->proj4text) + free (p->proj4text); + if (p->srs_wkt) + free (p->srs_wkt); + free (p); +} + +static void +free_epsg (struct epsg_dict *epsg) +{ +/* destroying the EPSG dictionary */ + struct epsg_entry *pE; + struct epsg_entry *pEn; + pE = epsg->first; + while (pE) + { + pEn = pE->next; + free_epsg_entry (pE); + pE = pEn; + } + if (epsg->sorted) + free (epsg->sorted); +} + +static void +epsg_insert (struct epsg_dict *epsg, int srid, const char *name, + const char *proj4text) +{ +/* inserting an entry into the EPSG dictionary */ + int len; + struct epsg_entry *p = malloc (sizeof (struct epsg_entry)); + p->srid = srid; + len = strlen (name); + p->ref_sys_name = malloc (len + 1); + strcpy (p->ref_sys_name, name); + len = strlen (proj4text); + p->proj4text = malloc (len + 1); + strcpy (p->proj4text, proj4text); + p->srs_wkt = NULL; + p->next = NULL; + +/* updating the linked list */ + if (epsg->first == NULL) + epsg->first = p; + if (epsg->last != NULL) + epsg->last->next = p; + epsg->last = p; +} + +static void +add_wkt (struct epsg_dict *epsg, int srid, const char *wkt) +{ +/* adding the WKT def to some EPSG entry */ + struct epsg_entry *p = epsg->first; + while (p) + { + if (p->srid == srid) + { + int len = strlen (wkt); + if (p->srs_wkt) + free (p->srs_wkt); + p->srs_wkt = malloc (len + 1); + strcpy (p->srs_wkt, wkt); + return; + } + p = p->next; + } +} + +static int +parse_epsg (FILE * fl_epsg, struct epsg_dict *epsg) +{ +/* parsing the EPSG input file */ + char line[1024]; + char name[512]; + char *out = line; + int odd_even = 0; + int c; + + while ((c = getc (fl_epsg)) != EOF) + { + if (c == '\r') + continue; + if (c == '\n') + { + *out = '\0'; + if (odd_even) + { + int i; + int len = strlen (line); + char srid[16]; + char *p = srid; + const char *proj4text = NULL; + if (odd_even == 2) + { + if (*line == '#') + { + /* closing a pending invalid EPSG def */ + odd_even = 0; + *name = '\0'; + out = line; + continue; + } + return 0; + } + if (*name == '\0') + return 0; + if (strncmp (line, "# ", 2) == 0) + { + /* probably an invalid EPSG def: skipping */ + odd_even = 2; + *name = '\0'; + out = line; + continue; + } + if (*line != '<') + return 0; + if (strcmp (line + len - 2, "<>") != 0) + return 0; + line[len - 2] = '\0'; + for (i = 1; i < 10; i++) + { + if (line[i] == '>') + { + *p = '\0'; + proj4text = line + i + 2; + } + *p++ = line[i]; + } + if (!proj4text) + return 0; + len = strlen (line); + for (i = len - 1; i > 1; i--) + { + if (line[i] == ' ') + line[i] = '\0'; + else + break; + } + epsg_insert (epsg, atoi (srid), name, proj4text); + odd_even = 0; + *name = '\0'; + } + else + { + if (strncmp (line, "# ", 2) != 0) + return 0; + strcpy (name, line + 2); + odd_even = 1; + } + out = line; + continue; + } + *out++ = c; + } + return 1; +} + +static int +fetch_srid (const char *line) +{ +/* attempting to retrieve the WKT own SRID */ + int len = strlen (line); + int i; + int cnt = 0; + for (i = len - 1; i > 1; i--) + { + if (line[i] == ']') + cnt++; + if (cnt == 3) + { + if (strncmp (line + i, "],AUTHORITY[\"EPSG\",\"", 20) == 0) + return atoi (line + i + 20); + return -1; + } + } + return -1; +} + +static int +parse_wkt (FILE * fl_wkt, struct epsg_dict *epsg) +{ +/* parsing the WKT input file */ + char line[8192]; + int srid; + char *out = line; + int c; + + while ((c = getc (fl_wkt)) != EOF) + { + if (c == '\r') + continue; + if (c == '\n') + { + *out = '\0'; + srid = fetch_srid (line); + if (srid >= 0) + add_wkt (epsg, srid, line); + out = line; + continue; + } + *out++ = c; + } + return 1; +} + +static int +cmp_sort (const void *p1, const void *p2) +{ +/* comparison function for QSORT */ + struct epsg_entry *e1 = *(struct epsg_entry **) p1; + struct epsg_entry *e2 = *(struct epsg_entry **) p2; + if (e1->srid == e2->srid) + return 0; + if (e1->srid < e2->srid) + return -1; + return 1; +} + +static int +sort_epsg (struct epsg_dict *epsg) +{ +/* sorting the EPSG defs by ascending SRID */ + int count = 0; + int i; + struct epsg_entry *p = epsg->first; + while (p) + { + /* counting how many entries are there */ + count++; + p = p->next; + } + if (count == 0) + return 0; + if (epsg->sorted) + free (epsg->sorted); + epsg->sorted = malloc (sizeof (struct epsg_dict *) * count); + epsg->count = count; + i = 0; + p = epsg->first; + while (p) + { + /* feeding the pointer array */ + *(epsg->sorted + i) = p; + i++; + p = p->next; + } +/* sorting the pointer array by ascending SRID */ + qsort (epsg->sorted, count, sizeof (struct epsg_dict *), cmp_sort); + return 1; +} + +static FILE * +open_file (int file_no) +{ +/* opening an output file */ + char path[1024]; + FILE *out = NULL; + + sprintf (path, "epsg_inlined_%02d.c", file_no); + out = fopen (path, "wb"); + if (out == NULL) + { + fprintf (stderr, + "ERROR: unable to open the \"%s\" output file\n", path); + return NULL; + } + return out; +} + +static FILE * +open_file2 () +{ +/* opening the "extra" output file */ + FILE *out = NULL; + + out = fopen ("epsg_inlined_extra.c", "wb"); + if (out == NULL) + { + fprintf (stderr, + "ERROR: unable to open the \"epsg_inlined_extra.c\" output file\n"); + return NULL; + } + return out; +} + +static FILE * +open_file3 () +{ +/* opening the "prussian" output file */ + FILE *out = NULL; + + out = fopen ("epsg_inlined_prussian.c", "wb"); + if (out == NULL) + { + fprintf (stderr, + "ERROR: unable to open the \"epsg_inlined_prussian.c\" output file\n"); + return NULL; + } + return out; +} + +static FILE * +open_file_wgs84 (int file_no) +{ +/* opening an output file "wgs84" */ + char path[1024]; + FILE *out = NULL; + + sprintf (path, "epsg_inlined_wgs84_%02d.c", file_no); + out = fopen (path, "wb"); + if (out == NULL) + { + fprintf (stderr, + "ERROR: unable to open the \"%s\" output file\n", path); + return NULL; + } + return out; +} + +static void +do_prussian (FILE * out) +{ +/* writing the "prussian" body */ + fprintf (out, + "SPATIALITE_PRIVATE void\ninitialize_epsg_prussian(int filter,struct epsg_defs **first, struct epsg_defs **last)\n"); + fprintf (out, + "{\n/* old Prussian based on Cassini-Soldner - kindly contributed by Mark Johnson */\n"); + fprintf (out, " struct epsg_defs *p;\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187900,\"mj10777.de\",187900,\"DHDN / Soldner Rathausnetz 660\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=14741.77 +y_0=-11288.28 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner Rathausnetz 660\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.41864827777778],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",13.62720366666667],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",14741.77],PARAMETER[\\\"false_northing\\\",-11288.28],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187900\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187901,\"mj10777.de\",187901,\"DHDN / Soldner 1 Kucklinsberg\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=54.46022375 +lon_0=21.95509736 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 1 Kucklinsberg\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.46022375],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",21.95509736],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187901\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187902,\"mj10777.de\",187902,\"DHDN / Soldner 2 Paulinen\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=54.28921067 +lon_0=20.73315431 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 2 Paulinen\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.28921067],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",20.73315431],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187902\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187903,\"mj10777.de\",187903,\"DHDN / Soldner 3 Markushof I\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=54.05881333 +lon_0=19.37343583 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 3 Markushof I\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.05881333],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",19.37343583],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187903\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187904,\"mj10777.de\",187904,\"DHDN / Soldner 4 Thurmberg\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=54.22552092 +lon_0=18.12569375 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 4 Thurmberg\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.22552092],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",18.12569375],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187904\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187905,\"mj10777.de\",187905,\"DHDN / Soldner 5 Kauernick I\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=53.38933197 +lon_0=19.59810438 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 5 Kauernick I\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",53.38933197],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",19.59810438],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187905\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187906,\"mj10777.de\",187906,\"DHDN / Soldner 6 Thorn, Rathausturm\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=53.01181586 +lon_0=18.60725428 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 6 Thorn, Rathausturm\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",53.01181586],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",18.60725428],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187906\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187907,\"mj10777.de\",187907,\"DHDN / Soldner 7 Heinrichsthal\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=53.71289217 +lon_0=17.49676781 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 7 Heinrichsthal\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",53.71289217],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",17.49676781],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187907\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187908,\"mj10777.de\",187908,\"DHDN / Soldner 8 Gollenberg, Denkmal\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=54.20857178 +lon_0=16.22956781 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 8 Gollenberg, Denkmal\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.20857178],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",16.22956781],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187908\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187909,\"mj10777.de\",187909,\"DHDN / Soldner 9 Gnesen\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=52.53820406 +lon_0=17.59450500 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 9 Gnesen\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.53820406],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",17.59450500],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187909\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187910,\"mj10777.de\",187910,\"DHDN / Soldner 10 Josefsberg\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=51.98768806 +lon_0=16.20044389 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 10 Josefsberg\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.98768806],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",16.20044389],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187910\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187911,\"mj10777.de\",187911,\"DHDN / Soldner 11 Schroda\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=52.23137372 +lon_0=17.27795372 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 11 Schroda\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.23137372],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",17.27795372],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187911\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187912,\"mj10777.de\",187912,\"DHDN / Soldner 12 Pschow\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=50.04206544 +lon_0=18.39610692 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 12 Pschow\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",50.04206544],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",18.39610692],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187912\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187913,\"mj10777.de\",187913,\"DHDN / Soldner 13 Rummelsberg\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=50.70352314 +lon_0=17.11233917 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 13 Rummelsberg\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",50.70352314],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",17.11233917],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187913\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187914,\"mj10777.de\",187914,\"DHDN / Soldner 14 Gröditzberg I\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=51.17819342 +lon_0=15.76127086 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 14 Gröditzberg I\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.17819342],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",15.76127086],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187914\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187915,\"mj10777.de\",187915,\"DHDN / Soldner 15 Kaltenborn\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=51.92903708 +lon_0=14.66212942 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 15 Kaltenborn\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.92903708],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",14.66212942],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187915\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187917,\"mj10777.de\",187917,\"DHDN / Soldner 17 Greifswald, Nikolaikirche\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=54.09698872 +lon_0=13.37880703 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 17 Greifswald, Nikolaikirche\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.09698872],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",13.37880703],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187917\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187916,\"mj10777.de\",187916,\"DHDN / Soldner 16 Bahn I\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=53.10184583 +lon_0=14.70144539 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 16 Bahn I\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",53.10184583],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",14.70144539],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187916\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187918,\"mj10777.de\",187918,\"DHDN / Soldner 18 Müggelberg 600\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 18 Müggelberg 600\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.41864827777778],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",13.62720366666667],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187918\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187919,\"mj10777.de\",187919,\"DHDN / Soldner 19 Götzer Berg 650\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=52.43725961111112 +lon_0=12.72882972222223 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 19 Götzer Berg 650\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.43725961111112],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",12.72882972222223],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187919\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187920,\"mj10777.de\",187920,\"DHDN / Soldner 20 Torgau, Stadtkirche\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=51.56136217 +lon_0=13.00760264 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 20 Torgau, Stadtkirche\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.56136217],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",13.00760264],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187920\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187921,\"mj10777.de\",187921,\"DHDN / Soldner 21 Burkersroda, Kirchturm\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=51.17656322 +lon_0=11.64139367 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 21 Burkersroda, Kirchturm\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.17656322],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",11.64139367],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187921\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187922,\"mj10777.de\",187922,\"DHDN / Soldner 22 Inselsberg\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=50.85237983 +lon_0=10.46776506 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 22 Inselsberg\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",50.85237983],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",10.46776506],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187922\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187923,\"mj10777.de\",187923,\"DHDN / Soldner 23 Magdeburg\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=52.12625311 +lon_0=11.63550325 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 23 Magdeburg\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.12625311],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",11.63550325],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187923\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187924,\"mj10777.de\",187924,\"DHDN / Soldner 24 Ostenfeld I\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=54.47018733 +lon_0=9.23411097 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 24 Ostenfeld I\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.47018733],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",9.23411097],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187924\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187925,\"mj10777.de\",187925,\"DHDN / Soldner 25 Rathkrügen\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=53.81839364 +lon_0=10.04220189 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 25 Rathkrügen\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",53.81839364],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",10.04220189],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187925\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187926,\"mj10777.de\",187926,\"DHDN / Soldner 26 Bungsberg, Aussichtsturm\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=54.21110653 +lon_0=10.72636431 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 26 Bungsberg, Aussichtsturm\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",54.21110653],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",10.72636431],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187926\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187927,\"mj10777.de\",187927,\"DHDN / Soldner 27 Celle, Stadtkirche\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=52.62574192 +lon_0=10.08190214 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 27 Celle, Stadtkirche\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.62574192],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",10.08190214],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187927\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187928,\"mj10777.de\",187928,\"DHDN / Soldner 28 Kaltenborn\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=51.79646722 +lon_0=10.27322494 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 28 Kaltenborn\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.79646722],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",10.27322494],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187928\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187929,\"mj10777.de\",187929,\"DHDN / Soldner 29 Silberberg\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=53.73123461 +lon_0=9.05774925 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 29 Silberberg\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",53.73123461],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",9.05774925],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187929\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187930,\"mj10777.de\",187930,\"DHDN / Soldner 30 Windberg\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=52.88088372 +lon_0=7.53062114 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 30 Windberg\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.88088372],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",7.53062114],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187930\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187931,\"mj10777.de\",187931,\"DHDN / Soldner 31 Hermannsdenkmal\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=51.91301647 +lon_0=8.84051853 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 31 Hermannsdenkmal\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.91301647],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",8.84051853],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187931\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187932,\"mj10777.de\",187932,\"DHDN / Soldner 32 Münster\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=51.96547642 +lon_0=7.62334994 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 32 Münster\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.96547642],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",7.62334994],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187932\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187933,\"mj10777.de\",187933,\"DHDN / Soldner 33 Bochum, Peter-Paul-Kirche\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=51.48373533 +lon_0=7.22115822 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 33 Bochum, Peter-Paul-Kirche\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.48373533],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",7.22115822],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187933\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187934,\"mj10777.de\",187934,\"DHDN / Soldner 34 Homert\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=51.26480147 +lon_0=8.10687050 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 34 Homert\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.26480147],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",8.10687050],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187934\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187935,\"mj10777.de\",187935,\"DHDN / Soldner 35 Kassel, Martinskirche\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=51.31846489 +lon_0=9.50203072 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 35 Kassel, Martinskirche\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",51.31846489],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",9.50203072],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187935\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187936,\"mj10777.de\",187936,\"DHDN / Soldner 36 Schaumburg, Schloßturm\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=50.34048964 +lon_0=7.97808156 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 36 Schaumburg, Schloßturm\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",50.34048964],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",7.97808156],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187936\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187937,\"mj10777.de\",187937,\"DHDN / Soldner 37 Fleckert\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=50.18762544 +lon_0=7.60594289 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 37 Fleckert\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",50.18762544],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",7.60594289],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187937\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187938,\"mj10777.de\",187938,\"DHDN / Soldner 38 Cöln, Dom\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=50.94257242 +lon_0=6.95897600 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 38 Cöln, Dom\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",50.94257242],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",6.95897600],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187938\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187939,\"mj10777.de\",187939,\"DHDN / Soldner 39 Langschoß\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=50.66738711 +lon_0=6.28935703 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 39 Langschoß\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",50.66738711],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",6.28935703],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187939\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187940,\"mj10777.de\",187940,\"DHDN / Soldner 40 Rissenthal\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=49.47801819 +lon_0=6.75864339 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner 40 Rissenthal\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",49.47801819],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",6.75864339],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187940\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187941,\"mj10777.de\",187941,\"DHDN / Soldner Bayern\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=48.13959111 +lon_0=11.57437083 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=0 +y_0=0 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner Bayern\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",48.13959111],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",11.57437083],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",0],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187941\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def (filter,first, last, 187998, \"mj10777.de\", 187998,\"DHDN / Ferro / Deutsches_Hauptdreiecksnetz\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=longlat +ellps=bessel +datum=potsdam +pm=ferro +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Ferro / Deutsches_Hauptdreiecksnetz\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"SPHEROID[\\\"Bessel 1841\\\",6377397.155,299.1528128,\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]], AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"PRIMEM[\\\"ferro\\\",-17.66666666666667],UNIT[\\\"Degree\\\",0.017453292519943295,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187998\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]]\");\n"); + fprintf (out, + "/* mj10777: Not exsiting System, used for testing purposes. */\n"); + fprintf (out, + " p = add_epsg_def(filter,first,last,187999,\"mj10777.de\",187999,\"DHDN / Brandenburger Tor\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=cass +lat_0=52.41864827777778 +lon_0=13.62720366666667 \");\n"); + fprintf (out, + " add_proj4text(p,1,\"+x_0=16819.76033675660074 +y_0=-11046.08218553455117 +ellps=bessel +datum=potsdam +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"DHDN / Soldner Brandenburger Tor\\\",\");\n"); + fprintf (out, " add_srs_wkt(p,1,\"GEOGCS[\\\"DHDN\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"DATUM[\\\"Deutsches_Hauptdreiecksnetz\\\",SPHEROID[\\\"Bessel 1841\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"6377397.155,299.1528128,AUTHORITY[\\\"EPSG\\\",\\\"7004\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"AUTHORITY[\\\"EPSG\\\",\\\"6314\\\"]],PRIMEM[\\\"Greenwich\\\",0,\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],UNIT[\\\"degree\\\",0.01745329251994328,\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"4314\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"UNIT[\\\"metre\\\",1,AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PROJECTION[\\\"Cassini_Soldner\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"latitude_of_origin\\\",52.41864827777778],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"central_meridian\\\",13.62720366666667],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"PARAMETER[\\\"false_easting\\\",16819.76033675660074],PARAMETER[\\\"false_northing\\\",-11046.08218553455117],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AUTHORITY[\\\"mj10777.de\\\",\\\"187999\\\"],AXIS[\\\"x\\\",NORTH],AXIS[\\\"y\\\",EAST]]\");\n"); + fprintf (out, + " p = add_epsg_def (filter,first, last, 325833, \"mj10777.de\", 325833,\"ETRS89 / UTM zone 33N (Brandenburg)\");\n"); + fprintf (out, + " add_proj4text(p,0,\"+proj=utm +zone=33 +ellps=GRS80 +units=m +no_defs\");\n"); + fprintf (out, + " add_srs_wkt(p,0,\"PROJCS[\\\"ETRS89 / UTM zone 33N (Brandenburg)\\\",GEOGCS[\\\"ETRS89\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,1,\"DATUM[\\\"European_Terrestrial_Reference_System_1989\\\",\");\n"); + fprintf (out, + " add_srs_wkt(p,2,\"SPHEROID[\\\"GRS 1980\\\",6378137,298.257222101,\");\n"); + fprintf (out, + " add_srs_wkt(p,3,\"AUTHORITY[\\\"EPSG\\\",\\\"7019\\\"]],AUTHORITY[\\\"EPSG\\\",\\\"6258\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,4,\"PRIMEM[\\\"Greenwich\\\",0,AUTHORITY[\\\"EPSG\\\",\\\"8901\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,5,\"UNIT[\\\"degree\\\",0.01745329251994328,AUTHORITY[\\\"EPSG\\\",\\\"9122\\\"]],\");\n"); + fprintf (out, + " add_srs_wkt(p,6,\"AUTHORITY[\\\"EPSG\\\",\\\"4258\\\"]],UNIT[\\\"metre\\\",1,\");\n"); + fprintf (out, + " add_srs_wkt(p,7,\"AUTHORITY[\\\"EPSG\\\",\\\"9001\\\"]],PROJECTION[\\\"Transverse_Mercator\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,8,\"PARAMETER[\\\"latitude_of_origin\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,9,\"PARAMETER[\\\"central_meridian\\\",15],PARAMETER[\\\"scale_factor\\\",0.9996],\");\n"); + fprintf (out, + " add_srs_wkt(p,10,\"PARAMETER[\\\"false_easting\\\",3500000],PARAMETER[\\\"false_northing\\\",0],\");\n"); + fprintf (out, + " add_srs_wkt(p,11,\"AUTHORITY[\\\"EPSG\\\",\\\"325833\\\"],\");\n"); + fprintf (out, + " add_srs_wkt(p,12,\"AXIS[\\\"Easting\\\",EAST],AXIS[\\\"Northing\\\",NORTH]]\");\n"); +} + +static void +do_header (FILE * out, int macro) +{ +/* writing a file header */ + time_t tm; + time (&tm); + fprintf (out, "/*\n\n"); + fprintf (out, + " helper function for srs_init.c -- populating the SPATIAL_REF_SYS table\n\n"); + fprintf (out, " this code was autogenerated by \"auto_epsg\" on %s\n", + ctime (&tm)); + fprintf (out, " Author: Sandro Furieri a.furieri@lqt.it\n\n"); + fprintf (out, + " -----------------------------------------------------------------------------\n\n"); + fprintf (out, " Version: MPL 1.1/GPL 2.0/LGPL 2.1\n\n"); + fprintf (out, + " The contents of this file are subject to the Mozilla Public License Version\n"); + fprintf (out, + " 1.1 (the \"License\"); you may not use this file except in compliance with\n"); + fprintf (out, " the License. You may obtain a copy of the License at\n"); + fprintf (out, " http://www.mozilla.org/MPL/\n\n"); + fprintf (out, + "Software distributed under the License is distributed on an \"AS IS\" basis,\n"); + fprintf (out, + "WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License\n"); + fprintf (out, + "for the specific language governing rights and limitations under the\n"); + fprintf (out, + "License.\n\nThe Original Code is the SpatiaLite library\n\n"); + fprintf (out, + "The Initial Developer of the Original Code is Alessandro Furieri\n\n"); + fprintf (out, + "Portions created by the Initial Developer are Copyright (C) 2008\n"); + fprintf (out, + "the Initial Developer. All Rights Reserved.\n\nContributor(s):\n\n"); + fprintf (out, + "Alternatively, the contents of this file may be used under the terms of\n"); + fprintf (out, + "either the GNU General Public License Version 2 or later (the \"GPL\"), or\n"); + fprintf (out, + "the GNU Lesser General Public License Version 2.1 or later (the \"LGPL\"),\n"); + fprintf (out, + "in which case the provisions of the GPL or the LGPL are applicable instead\n"); + fprintf (out, + "of those above. If you wish to allow use of your version of this file only\n"); + fprintf (out, + "under the terms of either the GPL or the LGPL, and not to allow others to\n"); + fprintf (out, + "use your version of this file under the terms of the MPL, indicate your\n"); + fprintf (out, + "decision by deleting the provisions above and replace them with the notice\n"); + fprintf (out, + "and other provisions required by the GPL or the LGPL. If you do not delete\n"); + fprintf (out, + "the provisions above, a recipient may use your version of this file under\n"); + fprintf (out, + "the terms of any one of the MPL, the GPL or the LGPL.\n\n*/\n\n"); + fprintf (out, "#include \n\n"); + + if (macro) + fprintf (out, + "#ifndef OMIT_EPSG /* full EPSG initialization enabled */\n\n"); +} + + +static void +do_footer (FILE * out, int macro) +{ +/* writing a file footer */ + fprintf (out, "}\n\n"); + if (macro) + fprintf (out, + "#endif /* full EPSG initialization enabled/disabled */\n\n"); +} + +static void +output_c_code (FILE * out, struct epsg_dict *epsg) +{ +/* generating the C code supporting spatial_ref_sys self-initialization */ + struct epsg_entry *p = epsg->first; + int n; + int sect = 0; + int wgs84_sect = 0; + int def_cnt = 1000; + int out_cnt; + const char *in; + int i; + int pending_footer = 0; + + for (i = 0; i < epsg->count; i++) + { + p = *(epsg->sorted + i); + if (p->srid == 4326 || (p->srid >= 32601 && p->srid <= 32766)) + { + /* skipping WGS84 defs */ + continue; + } + + if (def_cnt > 100) + { + if (out != NULL) + { + if (pending_footer) + { + do_footer (out, 1); + pending_footer = 0; + } + + /* closing the output file */ + fclose (out); + out = NULL; + } + + /* opening the next output file */ + out = open_file (sect); + if (out == NULL) + return; + + /* function header */ + do_header (out, 1); + fprintf (out, "SPATIALITE_PRIVATE void\n"); + fprintf (out, + "initialize_epsg_%02d (int filter, struct epsg_defs **first, struct epsg_defs **last)\n", + sect++); + fprintf (out, "{\n/* initializing the EPSG defs list */\n"); + fprintf (out, " struct epsg_defs *p;\n"); + def_cnt = 0; + } + pending_footer = 1; + + /* inserting the main EPSG def */ + def_cnt++; + fprintf (out, + " p = add_epsg_def (filter, first, last, %d, \"epsg\", %d,\n", + p->srid, p->srid); + fprintf (out, " \"%s\");\n", p->ref_sys_name); + + /* inserting the proj4text string */ + n = 0; + in = p->proj4text; + while (*in != '\0') + { + fprintf (out, " add_proj4text (p, %d,\n \"", n); + out_cnt = 0; + while (*in != '\0') + { + if (*in == '"') + { + fprintf (out, "\\%c", *in++); + out_cnt += 2; + } + else + { + fprintf (out, "%c", *in++); + out_cnt++; + } + if (out_cnt >= 56) + break; + } + fprintf (out, "\");\n"); + n++; + } + + if (p->srs_wkt != NULL) + { + /* inserting the srs_wkt string */ n = 0; + n = 0; + in = p->srs_wkt; + while (*in != '\0') + { + fprintf (out, " add_srs_wkt (p, %d,\n \"", n); + out_cnt = 0; + while (*in != '\0') + { + if (*in == '"') + { + fprintf (out, "\\%c", *in++); + out_cnt += 2; + } + else + { + fprintf (out, "%c", *in++); + out_cnt++; + } + if (out_cnt >= 56) + break; + } + fprintf (out, "\");\n"); + n++; + } + } + else + fprintf (out, " add_srs_wkt (p, 0, \"\");\n"); + } + if (out != NULL) + { + /* closing the output file */ + if (pending_footer) + { + do_footer (out, 1); + pending_footer = 0; + } + + /* closing the output file */ + fclose (out); + out = NULL; + } + + def_cnt = 1000; + pending_footer = 0; + for (i = 0; i < epsg->count; i++) + { + p = *(epsg->sorted + i); + if (p->srid == 4326 || (p->srid >= 32601 && p->srid <= 32766)) + ; + else + { + /* skipping not-WGS84 defs */ + continue; + } + + if (def_cnt > 100) + { + if (out != NULL) + { + if (pending_footer) + { + do_footer (out, 0); + pending_footer = 0; + } + + /* closing the output file */ + fclose (out); + out = NULL; + } + + /* opening the next output file */ + out = open_file_wgs84 (wgs84_sect); + if (out == NULL) + return; + + /* function header */ + do_header (out, 0); + fprintf (out, "SPATIALITE_PRIVATE void\n"); + fprintf (out, + "initialize_epsg_wgs84_%02d (int filter, struct epsg_defs **first, struct epsg_defs **last)\n", + wgs84_sect++); + fprintf (out, + "{\n/* initializing the EPSG defs list [WGS84] */\n"); + fprintf (out, " struct epsg_defs *p;\n"); + def_cnt = 0; + } + pending_footer = 1; + + /* inserting the main EPSG def */ + def_cnt++; + fprintf (out, + " p = add_epsg_def (filter, first, last, %d, \"epsg\", %d,\n", + p->srid, p->srid); + fprintf (out, " \"%s\");\n", p->ref_sys_name); + + /* inserting the proj4text string */ + n = 0; + in = p->proj4text; + while (*in != '\0') + { + fprintf (out, " add_proj4text (p, %d,\n \"", n); + out_cnt = 0; + while (*in != '\0') + { + if (*in == '"') + { + fprintf (out, "\\%c", *in++); + out_cnt += 2; + } + else + { + fprintf (out, "%c", *in++); + out_cnt++; + } + if (out_cnt >= 56) + break; + } + fprintf (out, "\");\n"); + n++; + } + + if (p->srs_wkt != NULL) + { + /* inserting the srs_wkt string */ + n = 0; + in = p->srs_wkt; + while (*in != '\0') + { + fprintf (out, " add_srs_wkt (p, %d,\n \"", n); + out_cnt = 0; + while (*in != '\0') + { + if (*in == '"') + { + fprintf (out, "\\%c", *in++); + out_cnt += 2; + } + else + { + fprintf (out, "%c", *in++); + out_cnt++; + } + if (out_cnt >= 56) + break; + } + fprintf (out, "\");\n"); + n++; + } + } + else + fprintf (out, " add_srs_wkt (p, 0, \"\");\n"); + } + if (out != NULL) + { + /* closing the output file */ + if (pending_footer) + { + do_footer (out, 0); + pending_footer = 0; + } + + /* closing the output file */ + fclose (out); + out = NULL; + } + +/* opening the "prussian" output file */ + out = open_file3 (); + if (out == NULL) + return; + +/* function header */ + do_header (out, 1); + do_prussian (out); + +/* function footer */ + do_footer (out, 1); + +/* closing the "prussian" output file */ + fclose (out); + out = NULL; + +/* opening the "extra" output file */ + out = open_file2 (); + if (out == NULL) + return; + +/* function header */ + do_header (out, 0); + fprintf (out, "/* declaring prototypes */\n"); + for (i = 0; i < sect; i++) + fprintf (out, + "SPATIALITE_PRIVATE void initialize_epsg_%02d (\n\tint filter, struct epsg_defs **first, struct epsg_defs **last);\n", + i); + for (i = 0; i < wgs84_sect; i++) + fprintf (out, + "SPATIALITE_PRIVATE void initialize_epsg_wgs84_%02d (\n\tint filter, struct epsg_defs **first, struct epsg_defs **last);\n", + i); + fprintf (out, + "SPATIALITE_PRIVATE void initialize_epsg_prussian (\n\tint filter, struct epsg_defs **first, struct epsg_defs **last);\n"); + fprintf (out, + "SPATIALITE_PRIVATE void initialize_epsg_extra (\n\tint filter, struct epsg_defs **first, struct epsg_defs **last);\n\n"); + + fprintf (out, "SPATIALITE_PRIVATE void\n"); + fprintf (out, + "initialize_epsg_extra (int filter, struct epsg_defs **first, struct epsg_defs **last)\n\n"); + fprintf (out, "{\n/* initializing the EPSG defs list [EXTRA] */\n"); + fprintf (out, " struct epsg_defs *p;\n"); + + fprintf (out, + " p = add_epsg_def (filter, first, last, 40000, \"gfoss.it\", 1,\n"); + fprintf (out, " \"Italy mainland zone 1 GB Roma40\");\n"); + fprintf (out, " add_proj4text (p, 0,\n"); + fprintf (out, + " \"+proj=tmerc+lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y_\");\n"); + fprintf (out, " add_proj4text (p, 1,\n"); + fprintf (out, + " \"0=0 +ellps=intl +units=m +towgs84=-104.1,-49.1,-9.9,0.97\");\n"); + fprintf (out, + " add_proj4text (p, 2, \"1,-2.917,0.714,-11.68 +no_defs\");\n"); + fprintf (out, " add_srs_wkt (p, 0, \"\");\n"); + fprintf (out, + " p = add_epsg_def (filter, first, last, 40001, \"gfoss.it\", 2,\n"); + fprintf (out, " \"Italy mainland zone 2 GB Roma40\");\n"); + fprintf (out, " add_proj4text (p, 0,\n"); + fprintf (out, + " \"+proj=tmerc +lat_0=0 +lon_0=15 +k=0.9996 +x_0=2520000 +y\");\n"); + fprintf (out, " add_proj4text (p, 1,\n"); + fprintf (out, + " \"_0=0 +ellps=intl +units=m +towgs84=-104.1,-49.1,-9.9,0.9\");\n"); + fprintf (out, + " add_proj4text (p, 2, \"71,-2.917,0.714,-11.68 +no_defs\");\n"); + fprintf (out, " add_srs_wkt (p, 0, \"\");\n"); + fprintf (out, + " p = add_epsg_def (filter, first, last, 40002, \"gfoss.it\", 3,\n"); + fprintf (out, " \"Italy Sardinia GB Roma40\");\n"); + fprintf (out, " add_proj4text (p, 0,\n"); + fprintf (out, + " \"+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y\");\n"); + fprintf (out, " add_proj4text (p, 1,\n"); + fprintf (out, + " \"_0=0 +ellps=intl +units=m +towgs84=-168.6,-34.0,38.6,-0.\");\n"); + fprintf (out, + " add_proj4text (p, 2, \"374,-0.679,-1.379,-9.48 +no_defs\");\n"); + fprintf (out, " add_srs_wkt (p, 0, \"\");\n"); + fprintf (out, + " p = add_epsg_def (filter, first, last, 40003, \"gfoss.it\", 4,\n"); + fprintf (out, " \"Italy Sicily GB Roma40\");\n"); + fprintf (out, " add_proj4text (p, 0,\n"); + fprintf (out, + " \"+proj=tmerc +lat_0=0 +lon_0=9 +k=0.9996 +x_0=1500000 +y\");\n"); + fprintf (out, " add_proj4text (p, 1,\n"); + fprintf (out, + " \"_0=0 +ellps=intl +units=m +towgs84=-50.2,-50.4,84.8,-0.6\");\n"); + fprintf (out, + " add_proj4text (p, 2, \"90,-2.012,0.459,-28.08 +no_defs\");\n"); + fprintf (out, " add_srs_wkt (p, 0, \"\");\n"); + +/* function footer */ + do_footer (out, 0); + +/* inserting the pilot function */ + fprintf (out, "SPATIALITE_PRIVATE void\n"); + fprintf (out, + "initialize_epsg (int filter, struct epsg_defs **first, struct epsg_defs **last)\n"); + fprintf (out, "{\n/* initializing the EPSG defs list */\n"); + fprintf (out, " struct epsg_defs *p;\n "); + fprintf (out, "/* initializing the EPSG UNKNOWN def [-1] */\n"); + fprintf (out, + " p = add_epsg_def (filter, first, last, -1, \"NONE\", -1, \"Undefined - Cartesian\");\n"); + fprintf (out, " add_proj4text (p, 0, \"\");\n"); + fprintf (out, " add_srs_wkt (p, 0, \"\");\n"); + fprintf (out, + " p = add_epsg_def (filter, first, last, 0, \"NONE\", 0, \"Undefined - Geographic Long/Lat\");\n"); + fprintf (out, " add_proj4text (p, 0, \"\");\n"); + fprintf (out, " add_srs_wkt (p, 0, \"\");\n\n"); + fprintf (out, " if (filter != GAIA_EPSG_WGS84_ONLY)\n {\n"); + fprintf (out, + "#ifndef OMIT_EPSG /* full EPSG initialization enabled */\n"); + for (i = 0; i < sect; i++) + fprintf (out, + " initialize_epsg_%02d (filter, first, last);\n", i); + fprintf (out, " initialize_epsg_prussian (filter, first, last);\n"); + fprintf (out, " initialize_epsg_extra (filter, first, last);\n"); + fprintf (out, "#endif /* full EPSG initialization enabled/disabled */\n"); + + fprintf (out, " }\n"); + for (i = 0; i < wgs84_sect; i++) + fprintf (out, + " initialize_epsg_wgs84_%02d (filter, first, last);\n", i); + fprintf (out, "}\n"); + +/* closing the "extra" output file */ + fclose (out); + out = NULL; +} + +int +main (int argc, char *argv[]) +{ +/* +/ +/ Please note: no args are supported !!! +/ +/ we'll expect to find two input files respectively named: +/ - epsg +/ - wkt +/ +/ the C code will be generated into: epsg_inlined.c +/ +*/ + FILE *fl_epsg = NULL; + FILE *fl_wkt = NULL; + FILE *fl_out = NULL; + struct epsg_dict epsg; +/* initializing the EPSG dictionary */ + epsg.first = NULL; + epsg.last = NULL; + epsg.sorted = NULL; + epsg.count = 0; +/* opening the EPSG input file */ + fl_epsg = fopen ("epsg", "rb"); + if (fl_epsg == NULL) + { + fprintf (stderr, "ERROR: unable to open the \"epsg\" input file\n"); + goto stop; + } + +/* opening the WKT input file */ + fl_wkt = fopen ("wkt", "rb"); + if (fl_wkt == NULL) + { + fprintf (stderr, "ERROR: unable to open the \"wkt\" input file\n"); + goto stop; + } + + if (!parse_epsg (fl_epsg, &epsg)) + { + fprintf (stderr, "ERROR: malformed EPSG input file\n"); + goto stop; + } + + if (!parse_wkt (fl_wkt, &epsg)) + { + fprintf (stderr, "ERROR: malformed WKT input file\n"); + goto stop; + } + + if (!sort_epsg (&epsg)) + { + fprintf (stderr, "ERROR: unable to sort EPSG entries\n"); + goto stop; + } + + output_c_code (fl_out, &epsg); + stop: + free_epsg (&epsg); + if (fl_epsg) + fclose (fl_epsg); + if (fl_wkt) + fclose (fl_wkt); + if (fl_out) + fclose (fl_out); + return 0; +} diff --git a/src/spatialite/src/srsinit/srs_init.c b/src/spatialite/src/srsinit/srs_init.c new file mode 100644 index 0000000..59111ad --- /dev/null +++ b/src/spatialite/src/srsinit/srs_init.c @@ -0,0 +1,525 @@ +/* + + srs_init.c -- populating the SPATIAL_REF_SYS table + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#ifdef _WIN32 +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +#include +#include + +static void +free_epsg_def (struct epsg_defs *ptr) +{ +/* memory cleanup - destroying an EPSG def item */ + if (ptr->auth_name) + free (ptr->auth_name); + if (ptr->ref_sys_name) + free (ptr->ref_sys_name); + if (ptr->proj4text) + free (ptr->proj4text); + if (ptr->srs_wkt) + free (ptr->srs_wkt); + free (ptr); +} + +SPATIALITE_PRIVATE struct epsg_defs * +add_epsg_def (int filter_srid, struct epsg_defs **first, + struct epsg_defs **last, int srid, const char *auth_name, + int auth_srid, const char *ref_sys_name) +{ +/* appending an EPSG def to the list */ + int len; + struct epsg_defs *p; + if (filter_srid == GAIA_EPSG_NONE) + return NULL; + if (filter_srid == GAIA_EPSG_ANY || filter_srid == GAIA_EPSG_WGS84_ONLY) + ; + else if (srid != filter_srid) + return NULL; + p = malloc (sizeof (struct epsg_defs)); + if (!p) + return NULL; + p->srid = srid; + p->auth_name = NULL; + p->auth_srid = auth_srid; + p->ref_sys_name = NULL; + p->proj4text = NULL; + p->srs_wkt = NULL; + p->next = NULL; + if (auth_name) + { + len = strlen (auth_name); + if (len > 0) + { + p->auth_name = malloc (len + 1); + if (p->auth_name == NULL) + goto error; + strcpy (p->auth_name, auth_name); + } + } + if (ref_sys_name) + { + len = strlen (ref_sys_name); + if (len > 0) + { + p->ref_sys_name = malloc (len + 1); + if (p->ref_sys_name == NULL) + goto error; + strcpy (p->ref_sys_name, ref_sys_name); + } + } + if (*first == NULL) + *first = p; + if (*last != NULL) + (*last)->next = p; + *last = p; + return p; + error: + free_epsg_def (p); + return NULL; +} + +SPATIALITE_PRIVATE void +add_proj4text (struct epsg_defs *p, int count, const char *text) +{ +/* creating the PROJ4TEXT string */ + int len; + int olen; + char *string; + if (p == NULL || text == NULL) + return; + len = strlen (text); + if (!count) + { + p->proj4text = malloc (len + 1); + if (p->proj4text == NULL) + return; + strcpy (p->proj4text, text); + return; + } + if (p->proj4text == NULL) + return; + olen = strlen (p->proj4text); + string = malloc (len + olen + 1); + if (string == NULL) + return; + strcpy (string, p->proj4text); + free (p->proj4text); + p->proj4text = string; + strcat (p->proj4text, text); +} + +SPATIALITE_PRIVATE void +add_srs_wkt (struct epsg_defs *p, int count, const char *text) +{ +/* creating the SRS_WKT string */ + int len; + int olen; + char *string; + if (p == NULL || text == NULL) + return; + len = strlen (text); + if (!count) + { + p->srs_wkt = malloc (len + 1); + if (p->srs_wkt == NULL) + return; + strcpy (p->srs_wkt, text); + return; + } + if (p->srs_wkt == NULL) + return; + olen = strlen (p->srs_wkt); + string = malloc (len + olen + 1); + if (string == NULL) + return; + strcpy (string, p->srs_wkt); + free (p->srs_wkt); + p->srs_wkt = string; + strcat (p->srs_wkt, text); +} + +SPATIALITE_PRIVATE void +free_epsg (struct epsg_defs *first) +{ +/* memory cleanup - destroying the EPSG list */ + struct epsg_defs *p = first; + struct epsg_defs *pn; + while (p) + { + pn = p->next; + free_epsg_def (p); + p = pn; + } +} + +static int +populate_spatial_ref_sys (sqlite3 * handle, int mode) +{ +/* populating the EPSG dataset into the SPATIAL_REF_SYS table */ + struct epsg_defs *first = NULL; + struct epsg_defs *last = NULL; + struct epsg_defs *p; + char sql[1024]; + int ret; + sqlite3_stmt *stmt; + +/* initializing the EPSG defs list */ + initialize_epsg (mode, &first, &last); + +/* preparing the SQL parameterized statement */ + strcpy (sql, "INSERT INTO spatial_ref_sys "); + strcat (sql, + "(srid, auth_name, auth_srid, ref_sys_name, proj4text, srtext) "); + strcat (sql, "VALUES (?, ?, ?, ?, ?, ?)"); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("%s\n", sqlite3_errmsg (handle)); + goto error; + } + p = first; + while (p) + { + if (p->auth_name == NULL) + break; + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_int (stmt, 1, p->srid); + sqlite3_bind_text (stmt, 2, p->auth_name, strlen (p->auth_name), + SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, p->auth_srid); + sqlite3_bind_text (stmt, 4, p->ref_sys_name, strlen (p->ref_sys_name), + SQLITE_STATIC); + sqlite3_bind_text (stmt, 5, p->proj4text, strlen (p->proj4text), + SQLITE_STATIC); + if (strlen (p->srs_wkt) == 0) + sqlite3_bind_text (stmt, 6, "Undefined", 9, SQLITE_STATIC); + else + sqlite3_bind_text (stmt, 6, p->srs_wkt, strlen (p->srs_wkt), + SQLITE_STATIC); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("%s\n", sqlite3_errmsg (handle)); + sqlite3_finalize (stmt); + goto error; + } + p = p->next; + } + sqlite3_finalize (stmt); + +/* freeing the EPSG defs list */ + free_epsg (first); + + return 1; + error: + +/* freeing the EPSG defs list */ + free_epsg (first); + + return 0; +} + +static int +exists_spatial_ref_sys (sqlite3 * handle) +{ +/* checking if the SPATIAL_REF_SYS table exists */ + int ret; + int ok = 0; + char sql[1024]; + char **results; + int n_rows; + int n_columns; + char *err_msg = NULL; + + strcpy (sql, + "SELECT name FROM sqlite_master WHERE type = 'table' AND name LIKE 'spatial_ref_sys'"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + &err_msg); + if (ret != SQLITE_OK) + { +/* some error occurred */ + spatialite_e ("XX %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + if (n_rows > 0) + ok = 1; + sqlite3_free_table (results); + return ok; +} + +static int +check_spatial_ref_sys (sqlite3 * handle) +{ +/* checking if the SPATIAL_REF_SYS table has an appropriate layout */ + int ret; + int i; + const char *name; + char sql[1024]; + char **results; + int n_rows; + int n_columns; + char *err_msg = NULL; + int rs_srid = 0; + int auth_name = 0; + int auth_srid = 0; + int ref_sys_name = 0; + int proj4text = 0; + int srtext = 0; + + strcpy (sql, "PRAGMA table_info(spatial_ref_sys)"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + &err_msg); + if (ret != SQLITE_OK) + { +/* some error occurred */ + spatialite_e ("%s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + name = results[(i * n_columns) + 1]; + if (strcasecmp (name, "srid") == 0) + rs_srid = 1; + if (strcasecmp (name, "auth_name") == 0) + auth_name = 1; + if (strcasecmp (name, "auth_srid") == 0) + auth_srid = 1; + if (strcasecmp (name, "ref_sys_name") == 0) + ref_sys_name = 1; + if (strcasecmp (name, "proj4text") == 0) + proj4text = 1; + if (strcasecmp (name, "srtext") == 0) + srtext = 1; + } + } + sqlite3_free_table (results); + if (rs_srid && auth_name && auth_srid && ref_sys_name && proj4text + && srtext) + ret = 1; + else + ret = 0; + return ret; +} + +static int +spatial_ref_sys_count (sqlite3 * handle) +{ +/* checking if the SPATIAL_REF_SYS table is empty */ + int ret; + int i; + int count = 0; + char sql[1024]; + char **results; + int n_rows; + int n_columns; + char *err_msg = NULL; + + strcpy (sql, "SELECT Count(*) FROM spatial_ref_sys"); + ret = + sqlite3_get_table (handle, sql, &results, &n_rows, &n_columns, + &err_msg); + if (ret != SQLITE_OK) + { +/* some error occurred */ + spatialite_e ("%s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + if (n_rows > 0) + { + for (i = 1; i <= n_rows; i++) + { + count = atoi (results[(i * n_columns) + 0]); + } + } + sqlite3_free_table (results); + return count; +} + +SPATIALITE_DECLARE int +spatial_ref_sys_init (sqlite3 * handle, int verbose) +{ +/* +/ deprecated function +/ [still supported simply not to break API-level back-compatibility] +*/ + return spatial_ref_sys_init2 (handle, GAIA_EPSG_ANY, verbose); +} + +SPATIALITE_DECLARE int +spatial_ref_sys_init2 (sqlite3 * handle, int mode, int verbose) +{ +/* populating the EPSG dataset into the SPATIAL_REF_SYS table */ + if (!exists_spatial_ref_sys (handle)) + { + if (verbose) + spatialite_e ("the SPATIAL_REF_SYS table doesn't exists\n"); + return 0; + } + if (!check_spatial_ref_sys (handle)) + { + if (verbose) + spatialite_e + ("the SPATIAL_REF_SYS table has an unsupported layout\n"); + return 0; + } + if (spatial_ref_sys_count (handle)) + { + if (verbose) + spatialite_e + ("the SPATIAL_REF_SYS table already contains some row(s)\n"); + return 0; + } + if (mode == GAIA_EPSG_ANY || mode == GAIA_EPSG_NONE + || mode == GAIA_EPSG_WGS84_ONLY) + ; + else + mode = GAIA_EPSG_ANY; + if (populate_spatial_ref_sys (handle, mode)) + { + if (verbose && mode != GAIA_EPSG_NONE) + spatialite_e + ("OK: the SPATIAL_REF_SYS table was successfully populated\n"); + return 1; + } + return 0; +} + +SPATIALITE_DECLARE int +insert_epsg_srid (sqlite3 * handle, int srid) +{ +/* inserting a single EPSG definition into the SPATIAL_REF_SYS table */ + struct epsg_defs *first = NULL; + struct epsg_defs *last = NULL; + char sql[1024]; + int ret; + int error = 0; + sqlite3_stmt *stmt; + + if (!exists_spatial_ref_sys (handle)) + { + spatialite_e ("the SPATIAL_REF_SYS table doesn't exists\n"); + return 0; + } + if (!check_spatial_ref_sys (handle)) + { + spatialite_e + ("the SPATIAL_REF_SYS table has an unsupported layout\n"); + return 0; + } + +/* initializing the EPSG defs list */ + initialize_epsg (srid, &first, &last); + if (first == NULL) + { + spatialite_e ("SRID=%d isn't defined in the EPSG inlined dataset\n", + srid); + return 0; + } + +/* preparing the SQL parameterized statement */ + strcpy (sql, "INSERT INTO spatial_ref_sys "); + strcat (sql, + "(srid, auth_name, auth_srid, ref_sys_name, proj4text, srtext) "); + strcat (sql, "VALUES (?, ?, ?, ?, ?, ?)"); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + if (ret != SQLITE_OK) + { + spatialite_e ("%s\n", sqlite3_errmsg (handle)); + error = 1; + goto stop; + } + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_int (stmt, 1, first->srid); + sqlite3_bind_text (stmt, 2, first->auth_name, strlen (first->auth_name), + SQLITE_STATIC); + sqlite3_bind_int (stmt, 3, first->auth_srid); + sqlite3_bind_text (stmt, 4, first->ref_sys_name, + strlen (first->ref_sys_name), SQLITE_STATIC); + sqlite3_bind_text (stmt, 5, first->proj4text, strlen (first->proj4text), + SQLITE_STATIC); + if (strlen (first->srs_wkt) == 0) + sqlite3_bind_text (stmt, 6, "Undefined", 9, SQLITE_STATIC); + else + sqlite3_bind_text (stmt, 6, first->srs_wkt, strlen (first->srs_wkt), + SQLITE_STATIC); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + ; + else + { + spatialite_e ("%s\n", sqlite3_errmsg (handle)); + error = 1; + goto stop; + } + stop: + if (stmt != NULL) + sqlite3_finalize (stmt); + +/* freeing the EPSG defs list */ + free_epsg (first); + if (error) + return 0; + return 1; +} diff --git a/src/spatialite/src/versioninfo/version.c b/src/spatialite/src/versioninfo/version.c new file mode 100644 index 0000000..71ba154 --- /dev/null +++ b/src/spatialite/src/versioninfo/version.c @@ -0,0 +1,68 @@ +/* + version.c -- Gaia spatial support for SQLite + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include + +#include + +const char spatialiteversion[] = VERSION; +const char spatialitetargetcpu[] = TARGET_CPU; + +SPATIALITE_DECLARE const char * +spatialite_version (void) +{ + return spatialiteversion; +} + +SPATIALITE_DECLARE const char * +spatialite_target_cpu (void) +{ + return spatialitetargetcpu; +} diff --git a/src/spatialite/src/virtualtext/Makefile.am b/src/spatialite/src/virtualtext/Makefile.am new file mode 100644 index 0000000..938c81f --- /dev/null +++ b/src/spatialite/src/virtualtext/Makefile.am @@ -0,0 +1,17 @@ + +AM_CPPFLAGS = @CFLAGS@ +AM_CPPFLAGS += -I$(top_srcdir)/src/headers + +noinst_LTLIBRARIES = libvirtualtext.la virtualtext.la + +libvirtualtext_la_SOURCES = virtualtext.c + +virtualtext_la_SOURCES = virtualtext.c + +virtualtext_la_CPPFLAGS = @CFLAGS@ +virtualtext_la_CPPFLAGS += -I$(top_srcdir)/src/headers -I. +virtualtext_la_CPPFLAGS += -DLOADABLE_EXTENSION +virtualtext_la_LDFLAGS = -module +virtualtext_la_LIBTOOLFLAGS = --tag=disable-static + +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda diff --git a/src/spatialite/src/virtualtext/Makefile.in b/src/spatialite/src/virtualtext/Makefile.in new file mode 100644 index 0000000..3967fa1 --- /dev/null +++ b/src/spatialite/src/virtualtext/Makefile.in @@ -0,0 +1,611 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/virtualtext +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libvirtualtext_la_LIBADD = +am_libvirtualtext_la_OBJECTS = virtualtext.lo +libvirtualtext_la_OBJECTS = $(am_libvirtualtext_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +virtualtext_la_LIBADD = +am_virtualtext_la_OBJECTS = virtualtext_la-virtualtext.lo +virtualtext_la_OBJECTS = $(am_virtualtext_la_OBJECTS) +virtualtext_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ + $(virtualtext_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link \ + $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(virtualtext_la_LDFLAGS) \ + $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libvirtualtext_la_SOURCES) $(virtualtext_la_SOURCES) +DIST_SOURCES = $(libvirtualtext_la_SOURCES) $(virtualtext_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers +noinst_LTLIBRARIES = libvirtualtext.la virtualtext.la +libvirtualtext_la_SOURCES = virtualtext.c +virtualtext_la_SOURCES = virtualtext.c +virtualtext_la_CPPFLAGS = @CFLAGS@ -I$(top_srcdir)/src/headers -I. \ + -DLOADABLE_EXTENSION +virtualtext_la_LDFLAGS = -module +virtualtext_la_LIBTOOLFLAGS = --tag=disable-static +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/virtualtext/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/virtualtext/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libvirtualtext.la: $(libvirtualtext_la_OBJECTS) $(libvirtualtext_la_DEPENDENCIES) $(EXTRA_libvirtualtext_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libvirtualtext_la_OBJECTS) $(libvirtualtext_la_LIBADD) $(LIBS) + +virtualtext.la: $(virtualtext_la_OBJECTS) $(virtualtext_la_DEPENDENCIES) $(EXTRA_virtualtext_la_DEPENDENCIES) + $(AM_V_CCLD)$(virtualtext_la_LINK) $(virtualtext_la_OBJECTS) $(virtualtext_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/virtualtext.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/virtualtext_la-virtualtext.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +virtualtext_la-virtualtext.lo: virtualtext.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(virtualtext_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(virtualtext_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT virtualtext_la-virtualtext.lo -MD -MP -MF $(DEPDIR)/virtualtext_la-virtualtext.Tpo -c -o virtualtext_la-virtualtext.lo `test -f 'virtualtext.c' || echo '$(srcdir)/'`virtualtext.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/virtualtext_la-virtualtext.Tpo $(DEPDIR)/virtualtext_la-virtualtext.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='virtualtext.c' object='virtualtext_la-virtualtext.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(virtualtext_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(virtualtext_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o virtualtext_la-virtualtext.lo `test -f 'virtualtext.c' || echo '$(srcdir)/'`virtualtext.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/virtualtext/virtualtext.c b/src/spatialite/src/virtualtext/virtualtext.c new file mode 100644 index 0000000..c5f05ee --- /dev/null +++ b/src/spatialite/src/virtualtext/virtualtext.c @@ -0,0 +1,1804 @@ +/* + + virtualtext.c -- SQLite3 extension [VIRTUAL TABLE accessing CSV/TXT] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#if defined(_WIN32) && !defined(__MINGW32__) +/* MSVC strictly requires this include [off_t] */ +#include +#endif + +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include +#include +#include + +#ifdef _WIN32 +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +#if OMIT_ICONV == 0 /* if ICONV is disabled no TXT support is available */ + +struct sqlite3_module virtualtext_module; + +typedef struct VirtualTextStruct +{ +/* extends the sqlite3_vtab struct */ + const sqlite3_module *pModule; /* ptr to sqlite module: USED INTERNALLY BY SQLITE */ + int nRef; /* # references: USED INTERNALLY BY SQLITE */ + char *zErrMsg; /* error message: USED INTERNALLY BY SQLITE */ + sqlite3 *db; /* the sqlite db holding the virtual table */ + gaiaTextReaderPtr reader; /* the TextReader object */ +} VirtualText; +typedef VirtualText *VirtualTextPtr; + +typedef struct VirtualTextConstraintStruct +{ +/* a constraint to be verified for xFilter */ + int iColumn; /* Column on left-hand side of constraint */ + int op; /* Constraint operator */ + char valueType; /* value Type ('I'=int,'D'=double,'T'=text) */ + sqlite3_int64 intValue; /* Int64 comparison value */ + double dblValue; /* Double comparison value */ + char *txtValue; /* Text comparison value */ + struct VirtualTextConstraintStruct *next; +} VirtualTextConstraint; +typedef VirtualTextConstraint *VirtualTextConstraintPtr; + +typedef struct VirtualTextCursortStruct +{ +/* extends the sqlite3_vtab_cursor struct */ + VirtualTextPtr pVtab; /* Virtual table of this cursor */ + long current_row; /* the current row ID */ + int eof; /* the EOF marker */ + VirtualTextConstraintPtr firstConstraint; + VirtualTextConstraintPtr lastConstraint; +} VirtualTextCursor; +typedef VirtualTextCursor *VirtualTextCursorPtr; + +static void +text_clean_integer (char *value) +{ +/* cleaning an integer value */ + char last; + char buffer[35536]; + int len = strlen (value); + last = value[len - 1]; + if (last == '-' || last == '+') + { + /* trailing sign; transforming into a leading sign */ + *buffer = last; + strcpy (buffer + 1, value); + buffer[len - 1] = '\0'; + strcpy (value, buffer); + } +} + +static void +text_clean_double (char *value) +{ +/* cleaning an integer value */ + char *p; + char last; + char buffer[35536]; + int len = strlen (value); + last = value[len - 1]; + if (last == '-' || last == '+') + { + /* trailing sign; transforming into a leading sign */ + *buffer = last; + strcpy (buffer + 1, value); + buffer[len - 1] = '\0'; + strcpy (value, buffer); + } + p = value; + while (*p != '\0') + { + /* transforming COMMAs into POINTs */ + if (*p == ',') + *p = '.'; + p++; + } +} + +static int +vtxt_create (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* creates the virtual table connected to some TEXT file */ + char path[2048]; + char encoding[128]; + const char *vtable; + const char *pEncoding = NULL; + int len; + gaiaTextReaderPtr text = NULL; + const char *pPath = NULL; + char field_separator = '\t'; + char text_separator = '"'; + char decimal_separator = '.'; + char first_line_titles = 1; + int i; + char sql[65535]; + int seed; + int dup; + int idup; + char dummyName[4096]; + char **col_name = NULL; + VirtualTextPtr p_vt; + if (pAux) + pAux = pAux; /* unused arg warning suppression */ +/* checking for TEXTfile PATH */ + if (argc >= 5 && argc <= 9) + { + vtable = argv[1]; + pPath = argv[3]; + len = strlen (pPath); + if ((*(pPath + 0) == '\'' || *(pPath + 0) == '"') + && (*(pPath + len - 1) == '\'' || *(pPath + len - 1) == '"')) + { + /* the path is enclosed between quotes - we need to dequote it */ + strcpy (path, pPath + 1); + len = strlen (path); + *(path + len - 1) = '\0'; + } + else + strcpy (path, pPath); + pEncoding = argv[4]; + len = strlen (pEncoding); + if ((*(pEncoding + 0) == '\'' || *(pEncoding + 0) == '"') + && (*(pEncoding + len - 1) == '\'' + || *(pEncoding + len - 1) == '"')) + { + /* the charset-name is enclosed between quotes - we need to dequote it */ + strcpy (encoding, pEncoding + 1); + len = strlen (encoding); + *(encoding + len - 1) = '\0'; + } + else + strcpy (encoding, pEncoding); + if (argc >= 6) + { + if (*(argv[5]) == '0' || *(argv[5]) == 'n' || *(argv[5]) == 'N') + first_line_titles = 0; + } + if (argc >= 7) + { + if (strcasecmp (argv[6], "COMMA") == 0) + decimal_separator = ','; + if (strcasecmp (argv[6], "POINT") == 0) + decimal_separator = '.'; + } + if (argc >= 8) + { + if (strcasecmp (argv[7], "SINGLEQUOTE") == 0) + text_separator = '\''; + if (strcasecmp (argv[7], "DOUBLEQUOTE") == 0) + text_separator = '"'; + if (strcasecmp (argv[7], "NONE") == 0) + text_separator = '\0'; + } + if (argc == 9) + { + if (strlen (argv[8]) == 3) + { + if (strcasecmp (argv[8], "TAB") == 0) + field_separator = '\t'; + if (*(argv[8] + 0) == '\'' && *(argv[8] + 2) == '\'') + field_separator = *(argv[8] + 1); + } + } + } + else + { + *pzErr = + sqlite3_mprintf + ("[VirtualText module] CREATE VIRTUAL: illegal arg list\n" + "\t\t{ text_path, encoding [, first_row_as_titles [, [decimal_separator [, text_separator, [field_separator] ] ] ] }\n"); + return SQLITE_ERROR; + } + p_vt = (VirtualTextPtr) sqlite3_malloc (sizeof (VirtualText)); + if (!p_vt) + return SQLITE_NOMEM; + p_vt->pModule = &virtualtext_module; + p_vt->nRef = 0; + p_vt->zErrMsg = NULL; + p_vt->db = db; + text = gaiaTextReaderAlloc (path, field_separator, + text_separator, decimal_separator, + first_line_titles, encoding); + if (text) + { + if (gaiaTextReaderParse (text) == 0) + { + gaiaTextReaderDestroy (text); + text = NULL; + } + } + if (!text) + { + /* something is going the wrong way; creating a stupid default table */ + spatialite_e ("VirtualText: invalid data source\n"); + sprintf (sql, "CREATE TABLE %s (ROWNO INTEGER)", vtable); + if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) + { + *pzErr = + sqlite3_mprintf + ("[VirtualText module] cannot build a table from TEXT file\n"); + return SQLITE_ERROR; + } + p_vt->reader = NULL; + *ppVTab = (sqlite3_vtab *) p_vt; + return SQLITE_OK; + } + p_vt->reader = text; +/* preparing the COLUMNs for this VIRTUAL TABLE */ + sprintf (sql, "CREATE TABLE %s (ROWNO INTEGER", vtable); + col_name = malloc (sizeof (char *) * text->max_fields); + seed = 0; + for (i = 0; i < text->max_fields; i++) + { + strcat (sql, ", "); + sprintf (dummyName, "\"%s\"", text->columns[i].name); + dup = 0; + for (idup = 0; idup < i; idup++) + { + if (strcasecmp (dummyName, *(col_name + idup)) == 0) + dup = 1; + } + if (strcasecmp (dummyName, "ROWNO") == 0) + dup = 1; + if (dup) + sprintf (dummyName, "DUPCOL_%d", seed++); + len = strlen (dummyName); + *(col_name + i) = malloc (len + 1); + strcpy (*(col_name + i), dummyName); + strcat (sql, dummyName); + if (text->columns[i].type == VRTTXT_INTEGER) + strcat (sql, " INTEGER"); + else if (text->columns[i].type == VRTTXT_DOUBLE) + strcat (sql, " DOUBLE"); + else + strcat (sql, " TEXT"); + } + strcat (sql, ")"); + if (col_name) + { + /* releasing memory allocation for column names */ + for (i = 0; i < text->max_fields; i++) + free (*(col_name + i)); + free (col_name); + } + if (sqlite3_declare_vtab (db, sql) != SQLITE_OK) + { + *pzErr = + sqlite3_mprintf + ("[VirtualText module] CREATE VIRTUAL: invalid SQL statement \"%s\"", + sql); + return SQLITE_ERROR; + } + *ppVTab = (sqlite3_vtab *) p_vt; + return SQLITE_OK; +} + +static int +vtxt_connect (sqlite3 * db, void *pAux, int argc, const char *const *argv, + sqlite3_vtab ** ppVTab, char **pzErr) +{ +/* connects the virtual table to some shapefile - simply aliases vshp_create() */ + return vtxt_create (db, pAux, argc, argv, ppVTab, pzErr); +} + +static int +vtxt_best_index (sqlite3_vtab * pVTab, sqlite3_index_info * pIndex) +{ +/* best index selection */ + int i; + int iArg = 0; + char str[2048]; + char buf[64]; + + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + + *str = '\0'; + for (i = 0; i < pIndex->nConstraint; i++) + { + if (pIndex->aConstraint[i].usable) + { + iArg++; + pIndex->aConstraintUsage[i].argvIndex = iArg; + pIndex->aConstraintUsage[i].omit = 1; + sprintf (buf, "%d:%d,", pIndex->aConstraint[i].iColumn, + pIndex->aConstraint[i].op); + strcat (str, buf); + } + } + if (*str != '\0') + { + pIndex->idxStr = sqlite3_mprintf ("%s", str); + pIndex->needToFreeIdxStr = 1; + } + + return SQLITE_OK; +} + +static int +vtxt_disconnect (sqlite3_vtab * pVTab) +{ +/* disconnects the virtual table */ + VirtualTextPtr p_vt = (VirtualTextPtr) pVTab; + if (p_vt->reader) + gaiaTextReaderDestroy (p_vt->reader); + sqlite3_free (p_vt); + return SQLITE_OK; +} + +static int +vtxt_destroy (sqlite3_vtab * pVTab) +{ +/* destroys the virtual table - simply aliases vtxt_disconnect() */ + return vtxt_disconnect (pVTab); +} + +static int +vtxt_open (sqlite3_vtab * pVTab, sqlite3_vtab_cursor ** ppCursor) +{ +/* opening a new cursor */ + gaiaTextReaderPtr text; + VirtualTextCursorPtr cursor = + (VirtualTextCursorPtr) sqlite3_malloc (sizeof (VirtualTextCursor)); + if (cursor == NULL) + return SQLITE_NOMEM; + cursor->pVtab = (VirtualTextPtr) pVTab; + cursor->current_row = 0; + cursor->eof = 0; + cursor->firstConstraint = NULL; + cursor->lastConstraint = NULL; + *ppCursor = (sqlite3_vtab_cursor *) cursor; + text = cursor->pVtab->reader; + if (!text) + cursor->eof = 1; + else + { + if (!gaiaTextReaderGetRow (text, cursor->current_row)) + cursor->eof = 1; + } + return SQLITE_OK; +} + + +static void +vtxt_free_constraints (VirtualTextCursorPtr cursor) +{ +/* memory cleanup - cursor constraints */ + VirtualTextConstraintPtr pC; + VirtualTextConstraintPtr pCn; + pC = cursor->firstConstraint; + while (pC) + { + pCn = pC->next; + if (pC->txtValue) + sqlite3_free (pC->txtValue); + sqlite3_free (pC); + pC = pCn; + } + cursor->firstConstraint = NULL; + cursor->lastConstraint = NULL; +} + +static int +vtxt_close (sqlite3_vtab_cursor * pCursor) +{ +/* closing the cursor */ + VirtualTextCursorPtr cursor = (VirtualTextCursorPtr) pCursor; + vtxt_free_constraints (cursor); + sqlite3_free (cursor); + return SQLITE_OK; +} + + +static int +vtxt_parse_constraint (const char *str, int index, int *iColumn, int *op) +{ +/* parsing a constraint string */ + char buf[64]; + const char *in = str; + char *out = buf; + int i = 0; + int found = 0; + + *out = '\0'; + while (*in != '\0') + { + if (*in == ',') + { + if (index == i) + { + *out = '\0'; + found = 1; + break; + } + i++; + in++; + continue; + } + if (index == i) + *out++ = *in; + in++; + } + if (!found) + return 0; + in = buf; + for (i = 0; i < (int) strlen (buf); i++) + { + if (buf[i] == ':') + { + buf[i] = '\0'; + *iColumn = atoi (buf); + *op = atoi (buf + i + 1); + return 1; + } + in++; + } + return 0; +} + +static int +vtxt_eval_constraints (VirtualTextCursorPtr cursor) +{ +/* evaluating Filter constraints */ + int nCol; + int i; + char buf[4096]; + int type; + const char *value = NULL; + sqlite3_int64 int_value; + double dbl_value; + char *txt_value = NULL; + int is_int = 0; + int is_dbl = 0; + int is_txt = 0; + gaiaTextReaderPtr text = cursor->pVtab->reader; + VirtualTextConstraintPtr pC; + if (text->current_line_ready == 0) + return SQLITE_ERROR; + pC = cursor->firstConstraint; + while (pC) + { + int ok = 0; + if (pC->iColumn == 0) + { + /* the ROWNO column */ + int_value = cursor->current_row; + is_int = 1; + goto eval; + } + nCol = 1; + for (i = 0; i < text->max_fields; i++) + { + is_int = 0; + is_dbl = 0; + is_txt = 0; + if (nCol == pC->iColumn) + { + + if (!gaiaTextReaderFetchField (text, i, &type, &value)) + ; + else + { + if (type == VRTTXT_INTEGER) + { + strcpy (buf, value); + text_clean_integer (buf); +#if defined(_WIN32) || defined(__MINGW32__) +/* CAVEAT - M$ runtime has non-standard functions for 64 bits */ + int_value = _atoi64 (buf); +#else + int_value = atoll (buf); +#endif + is_int = 1; + } + else if (type == VRTTXT_DOUBLE) + { + strcpy (buf, value); + text_clean_double (buf); + dbl_value = atof (buf); + is_dbl = 1; + } + else if (type == VRTTXT_TEXT) + { + txt_value = (char *) value; + is_txt = 1; + } + } + goto eval; + } + nCol++; + } + return 0; + eval: + ok = 0; + if (pC->valueType == 'I') + { + if (is_int) + { + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (int_value == pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (int_value > pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (int_value <= pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (int_value < pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (int_value >= pC->intValue) + ok = 1; + break; + }; + } + if (is_dbl) + { + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (dbl_value == pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (dbl_value > pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (dbl_value <= pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (dbl_value < pC->intValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (dbl_value >= pC->intValue) + ok = 1; + break; + }; + } + } + if (pC->valueType == 'D') + { + if (is_int) + { + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (int_value == pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (int_value > pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (int_value <= pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (int_value < pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (int_value >= pC->dblValue) + ok = 1; + break; + }; + } + if (is_dbl) + { + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (dbl_value == pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (dbl_value > pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (dbl_value <= pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (dbl_value < pC->dblValue) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (dbl_value >= pC->dblValue) + ok = 1; + break; + }; + } + } + if (pC->valueType == 'T') + { + if (is_txt) + { + int ret = strcmp (txt_value, pC->txtValue); + switch (pC->op) + { + case SQLITE_INDEX_CONSTRAINT_EQ: + if (ret == 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GT: + if (ret > 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LE: + if (ret <= 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_LT: + if (ret < 0) + ok = 1; + break; + case SQLITE_INDEX_CONSTRAINT_GE: + if (ret >= 0) + ok = 1; + break; + }; + } + } + if (txt_value) + { + free (txt_value); + txt_value = NULL; + } + if (!ok) + return 0; + pC = pC->next; + } + if (txt_value) + free (txt_value); + return 1; +} + +static int +vtxt_filter (sqlite3_vtab_cursor * pCursor, int idxNum, const char *idxStr, + int argc, sqlite3_value ** argv) +{ +/* setting up a cursor filter */ + int i; + int iColumn; + int op; + int len; + VirtualTextConstraintPtr pC; + VirtualTextCursorPtr cursor = (VirtualTextCursorPtr) pCursor; + gaiaTextReaderPtr text = cursor->pVtab->reader; + if (idxNum) + idxNum = idxNum; /* unused arg warning suppression */ + +/* resetting any previously set filter constraint */ + vtxt_free_constraints (cursor); + + for (i = 0; i < argc; i++) + { + if (!vtxt_parse_constraint (idxStr, i, &iColumn, &op)) + continue; + pC = sqlite3_malloc (sizeof (VirtualTextConstraint)); + if (!pC) + continue; + pC->iColumn = iColumn; + pC->op = op; + pC->valueType = '\0'; + pC->txtValue = NULL; + pC->next = NULL; + + if (sqlite3_value_type (argv[i]) == SQLITE_INTEGER) + { + pC->valueType = 'I'; + pC->intValue = sqlite3_value_int64 (argv[i]); + } + if (sqlite3_value_type (argv[i]) == SQLITE_FLOAT) + { + pC->valueType = 'D'; + pC->dblValue = sqlite3_value_double (argv[i]); + } + if (sqlite3_value_type (argv[i]) == SQLITE_TEXT) + { + pC->valueType = 'T'; + len = sqlite3_value_bytes (argv[i]) + 1; + pC->txtValue = (char *) sqlite3_malloc (len); + if (pC->txtValue) + strcpy (pC->txtValue, + (char *) sqlite3_value_text (argv[i])); + } + if (cursor->firstConstraint == NULL) + cursor->firstConstraint = pC; + if (cursor->lastConstraint != NULL) + cursor->lastConstraint->next = pC; + cursor->lastConstraint = pC; + } + + cursor->current_row = 0; + cursor->eof = 0; + while (1) + { + if (!gaiaTextReaderGetRow (text, cursor->current_row)) + { + cursor->eof = 1; + break; + } + if (vtxt_eval_constraints (cursor)) + break; + cursor->current_row++; + } + return SQLITE_OK; +} + +static int +vtxt_next (sqlite3_vtab_cursor * pCursor) +{ +/* fetching next row from cursor */ + VirtualTextCursorPtr cursor = (VirtualTextCursorPtr) pCursor; + gaiaTextReaderPtr text = cursor->pVtab->reader; + if (!text) + cursor->eof = 1; + else + { + while (1) + { + cursor->current_row++; + if (!gaiaTextReaderGetRow (text, cursor->current_row)) + { + cursor->eof = 1; + break; + } + if (vtxt_eval_constraints (cursor)) + break; + } + } + return SQLITE_OK; +} + +static int +vtxt_eof (sqlite3_vtab_cursor * pCursor) +{ +/* cursor EOF */ + VirtualTextCursorPtr cursor = (VirtualTextCursorPtr) pCursor; + return cursor->eof; +} + +static int +vtxt_column (sqlite3_vtab_cursor * pCursor, sqlite3_context * pContext, + int column) +{ +/* fetching value for the Nth column */ + int nCol = 1; + int i; + char buf[4096]; + int type; + const char *value; + VirtualTextCursorPtr cursor = (VirtualTextCursorPtr) pCursor; + gaiaTextReaderPtr text = cursor->pVtab->reader; + if (column == 0) + { + /* the ROWNO column */ + sqlite3_result_int (pContext, cursor->current_row); + return SQLITE_OK; + } + if (text->current_line_ready == 0) + return SQLITE_ERROR; + for (i = 0; i < text->max_fields; i++) + { + if (nCol == column) + { + if (!gaiaTextReaderFetchField (text, i, &type, &value)) + sqlite3_result_null (pContext); + else + { + if (type == VRTTXT_INTEGER) + { + strcpy (buf, value); + text_clean_integer (buf); +#if defined(_WIN32) || defined(__MINGW32__) +/* CAVEAT - M$ runtime has non-standard functions for 64 bits */ + sqlite3_result_int64 (pContext, _atoi64 (buf)); +#else + sqlite3_result_int64 (pContext, atoll (buf)); +#endif + } + else if (type == VRTTXT_DOUBLE) + { + strcpy (buf, value); + text_clean_double (buf); + sqlite3_result_double (pContext, atof (buf)); + } + else if (type == VRTTXT_TEXT) + sqlite3_result_text (pContext, value, strlen (value), + free); + else + sqlite3_result_null (pContext); + } + } + nCol++; + } + return SQLITE_OK; +} + +static int +vtxt_rowid (sqlite3_vtab_cursor * pCursor, sqlite_int64 * pRowid) +{ +/* fetching the ROWID */ + VirtualTextCursorPtr cursor = (VirtualTextCursorPtr) pCursor; + *pRowid = cursor->current_row; + return SQLITE_OK; +} + +static int +vtxt_update (sqlite3_vtab * pVTab, int argc, sqlite3_value ** argv, + sqlite_int64 * pRowid) +{ +/* generic update [INSERT / UPDATE / DELETE */ + if (pVTab || argc || argv || pRowid) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_READONLY; +} + +static int +vtxt_begin (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vtxt_sync (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vtxt_commit (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +vtxt_rollback (sqlite3_vtab * pVTab) +{ +/* BEGIN TRANSACTION */ + if (pVTab) + pVTab = pVTab; /* unused arg warning suppression */ + return SQLITE_OK; +} + +static int +sqlite3VirtualTextInit (sqlite3 * db) +{ + int rc = SQLITE_OK; + virtualtext_module.iVersion = 1; + virtualtext_module.xCreate = &vtxt_create; + virtualtext_module.xConnect = &vtxt_connect; + virtualtext_module.xBestIndex = &vtxt_best_index; + virtualtext_module.xDisconnect = &vtxt_disconnect; + virtualtext_module.xDestroy = &vtxt_destroy; + virtualtext_module.xOpen = &vtxt_open; + virtualtext_module.xClose = &vtxt_close; + virtualtext_module.xFilter = &vtxt_filter; + virtualtext_module.xNext = &vtxt_next; + virtualtext_module.xEof = &vtxt_eof; + virtualtext_module.xColumn = &vtxt_column; + virtualtext_module.xRowid = &vtxt_rowid; + virtualtext_module.xUpdate = &vtxt_update; + virtualtext_module.xBegin = &vtxt_begin; + virtualtext_module.xSync = &vtxt_sync; + virtualtext_module.xCommit = &vtxt_commit; + virtualtext_module.xRollback = &vtxt_rollback; + virtualtext_module.xFindFunction = NULL; + sqlite3_create_module_v2 (db, "VirtualText", &virtualtext_module, NULL, 0); + return rc; +} + +SPATIALITE_PRIVATE int +virtualtext_extension_init (void *xdb) +{ + sqlite3 *db = (sqlite3 *) xdb; + return sqlite3VirtualTextInit (db); +} + +/* +** +** TextReader implementation +** +*/ + +static struct vrttxt_row_block * +vrttxt_block_alloc () +{ +/* allocating a rows Block */ + struct vrttxt_row_block *p = malloc (sizeof (struct vrttxt_row_block)); + if (!p) + return NULL; + p->num_rows = 0; + p->min_line_no = -1; + p->max_line_no = -1; + p->next = NULL; + return p; +} + +static void +vrttxt_block_destroy (struct vrttxt_row_block *p) +{ +/* destroying a rows Block */ + if (p) + free (p); +} + +GAIAGEO_DECLARE void +gaiaTextReaderDestroy (gaiaTextReaderPtr reader) +{ +/* destroying the main TXT-Reader */ + int col; + struct vrttxt_row_block *blk; + struct vrttxt_row_block *blkN; + if (reader) + { + blk = reader->first; + while (blk) + { + /* destroying the row offset Blocks */ + blkN = blk->next; + vrttxt_block_destroy (blk); + blk = blkN; + } + /* freeing the input buffers */ + if (reader->line_buffer) + free (reader->line_buffer); + if (reader->field_buffer) + free (reader->field_buffer); + /* freeing the row offsets array */ + if (reader->rows) + free (reader->rows); + /* closing the input file */ + fclose (reader->text_file); + for (col = 0; col < VRTTXT_FIELDS_MAX; col++) + { + /* destroying column headers */ + if (reader->columns[col].name != NULL) + free (reader->columns[col].name); + } + gaiaFreeUTF8Converter (reader->toUtf8); + free (reader); + } +} + +GAIAGEO_DECLARE gaiaTextReaderPtr +gaiaTextReaderAlloc (const char *path, char field_separator, + char text_separator, char decimal_separator, + int first_line_titles, const char *encoding) +{ +/* allocating the main TXT-Reader */ + int col; + gaiaTextReaderPtr reader; + FILE *in = fopen (path, "rb"); /* opening the input file */ + if (in == NULL) + return NULL; + +/* allocating and initializing the struct */ + reader = malloc (sizeof (gaiaTextReader)); + if (!reader) + { + fclose (in); + return NULL; + } + reader->text_file = in; + reader->field_separator = field_separator; + reader->text_separator = text_separator; + reader->decimal_separator = decimal_separator; + reader->first_line_titles = first_line_titles; + reader->toUtf8 = gaiaCreateUTF8Converter (encoding); + if (reader->toUtf8 == (void *) 0) + { + fclose (in); + return NULL; + } + reader->error = 0; + reader->first = NULL; + reader->last = NULL; + reader->rows = NULL; + reader->num_rows = 0; + reader->line_no = 0; + reader->max_fields = 0; + reader->max_current_field = 0; + reader->current_line_ready = 0; + reader->current_buf_sz = 1024; + reader->line_buffer = malloc (1024); + reader->field_buffer = malloc (1024); + if (reader->line_buffer == NULL || reader->field_buffer == NULL) + { + /* insufficient memory: no input buffers */ + gaiaTextReaderDestroy (reader); + return NULL; + } + for (col = 0; col < VRTTXT_FIELDS_MAX; col++) + { + /* initializing column headers */ + reader->columns[col].name = NULL; + reader->columns[col].type = VRTTXT_NULL; + } + return reader; +} + +static void +vrttxt_line_init (struct vrttxt_line *line, off_t offset) +{ +/* initializing a LINE struct */ + line->offset = offset; + line->len = 0; + line->num_fields = 0; + line->error = 0; +} + +static void +vrttxt_line_end (struct vrttxt_line *line, off_t offset) +{ +/* completing a Line struct (EndOfLine encountered) */ + line->len = offset - line->offset; +} + +static void +vrttxt_add_field (struct vrttxt_line *line, off_t offset) +{ +/* adding a Field offset to the current Line */ + if (line->num_fields >= VRTTXT_FIELDS_MAX) + { + line->error = 1; + return; + } + line->field_offsets[line->num_fields] = offset - line->offset; + line->num_fields++; +} + +static int +vrttxt_is_integer (const char *value) +{ +/* checking if this value can be an INTEGER */ + int invalids = 0; + int digits = 0; + int signs = 0; + char last = '\0'; + const char *p = value; + while (*p != '\0') + { + last = *p; + if (*p >= '0' && *p <= '9') + digits++; + else if (*p == '+' || *p == '-') + signs++; + else + invalids++; + p++; + } + if (invalids) + return 0; /* invalid chars where found */ + if (signs > 1) + return 0; /* more than a single sign */ + if (signs) + { + if (*value == '+' || *value == '-' || last == '+' || last == '-') + ; + else + return 0; /* sign is not the first/last string char */ + } + return 1; /* ok, can be a valid INTEGER value */ +} + +static int +vrttxt_is_double (const char *value, char decimal_separator) +{ +/* checking if this value can be a DOUBLE */ + int invalids = 0; + int digits = 0; + int signs = 0; + int points = 0; + char last = '\0'; + const char *p = value; + while (*p != '\0') + { + last = *p; + if (*p >= '0' && *p <= '9') + digits++; + else if (*p == '+' || *p == '-') + signs++; + else + { + if (decimal_separator == ',') + { + if (*p == ',') + points++; + else + invalids++; + } + else + { + if (*p == '.') + points++; + else + invalids++; + } + } + p++; + } + if (invalids) + return 0; /* invalid chars where found */ + if (points > 1) + return 0; /* more than a single decimal separator */ + if (signs > 1) + return 0; /* more than a single sign */ + if (signs) + { + if (*value == '+' || *value == '-' || last == '+' || last == '-') + ; + else + return 0; /* sign is not the first/last string char */ + } + return 1; /* ok, can be a valid DOUBLE value */ +} + +static int +vrttxt_check_type (const char *value, char decimal_separator) +{ +/* checking the Field type */ + if (*value == '\0') + return VRTTXT_NULL; + if (vrttxt_is_integer (value)) + return VRTTXT_INTEGER; + if (vrttxt_is_double (value, decimal_separator)) + return VRTTXT_DOUBLE; + return VRTTXT_TEXT; +} + +static int +vrttxt_set_column_title (gaiaTextReaderPtr txt, int col_no, const char *name) +{ +/* setting a Column header name */ + int err; + int ind; + char *utf8text; + char *str = (char *) name; + int len = strlen (str); + if (str[0] == txt->text_separator && str[len - 1] == txt->text_separator) + { + /* cleaning the enclosing quotes */ + str[len - 1] = '\0'; + str = (char *) (name + 1); + len -= 2; + if (len <= 0) + return 0; + } + utf8text = gaiaConvertToUTF8 (txt->toUtf8, str, len, &err); + if (err) + { + if (utf8text) + free (utf8text); + return 0; + } + else + str = utf8text; + len = strlen (str); + for (ind = 0; ind < len; ind++) + { + /* masking spaces and so on within the column name */ + switch (str[ind]) + { + case ' ': + case '\t': + case '-': + case '+': + case '*': + case '/': + case '(': + case ')': + case '[': + case ']': + case '{': + case '}': + str[ind] = '_'; + break; + } + } + if (txt->columns[col_no].name) + free (txt->columns[col_no].name); + txt->columns[col_no].name = malloc (len + 1); + if (txt->columns[col_no].name == NULL) + return 0; + strcpy (txt->columns[col_no].name, utf8text); + free (utf8text); + return 1; +} + +static void +vrttxt_add_line (gaiaTextReaderPtr txt, struct vrttxt_line *line) +{ +/* appending a Line offset to the main TXT-Reader */ + struct vrttxt_row_block *p_block; + struct vrttxt_row *p_row; + int ind; + int off; + int len; + int value_type; + int column_type; + int first_line = 0; + if (txt->line_no == 0) + first_line = 1; + if (line->error) + { + txt->error = 1; + txt->line_no++; + return; + } + if (line->num_fields == 0) + { + txt->line_no++; + return; + } + p_block = txt->last; + if (p_block == NULL) + { + /* the offset Blocks list is empty: allocating the first Block */ + p_block = vrttxt_block_alloc (); + if (!p_block) + { + txt->error = 1; + txt->line_no++; + return; + } + if (txt->first == NULL) + txt->first = p_block; + if (txt->last != NULL) + txt->last->next = p_block; + txt->last = p_block; + } + else if (p_block->num_rows >= VRTTXT_BLOCK_MAX) + { + /* the current offset Block is full: expanding the list */ + p_block = vrttxt_block_alloc (); + if (!p_block) + { + txt->error = 1; + txt->line_no++; + return; + } + if (txt->first == NULL) + txt->first = p_block; + if (txt->last != NULL) + txt->last->next = p_block; + txt->last = p_block; + } +/* inserting the Row offset into the offset Block */ + p_row = p_block->rows + p_block->num_rows; + p_block->num_rows++; + p_row->line_no = txt->line_no; + if (p_block->min_line_no < 0) + p_block->min_line_no = p_row->line_no; + if (p_block->max_line_no < p_row->line_no) + p_block->max_line_no = p_row->line_no; + txt->line_no++; + p_row->offset = line->offset; + p_row->len = line->len; + p_row->num_fields = line->num_fields; + if (line->num_fields > txt->max_fields) + txt->max_fields = line->num_fields; + off = 0; + for (ind = 0; ind < p_row->num_fields; ind++) + { + /* setting the corresponding Column (aka Field) header */ + len = line->field_offsets[ind] - off; + if (len == 0) + *(txt->field_buffer) = '\0'; + else + { + /* retrieving the current Field Value */ + memcpy (txt->field_buffer, txt->line_buffer + off, len); + *(txt->field_buffer + len) = '\0'; + } + if (txt->first_line_titles && first_line) + { + /* first line: the current value is the Column Name */ + if (!vrttxt_set_column_title (txt, ind, txt->field_buffer)) + txt->error = 1; + } + else + { + /* plain Field Value */ + value_type = + vrttxt_check_type (txt->field_buffer, + txt->decimal_separator); + column_type = txt->columns[ind].type; + switch (value_type) + { + /* checking the Column type */ + case VRTTXT_INTEGER: + if (column_type == VRTTXT_NULL) + txt->columns[ind].type = VRTTXT_INTEGER; + break; + case VRTTXT_DOUBLE: + if (column_type == VRTTXT_NULL + || column_type == VRTTXT_INTEGER) + txt->columns[ind].type = VRTTXT_DOUBLE; + break; + case VRTTXT_TEXT: + txt->columns[ind].type = VRTTXT_TEXT; + break; + default: + break; + }; + } + off = line->field_offsets[ind] + 1; + } +} + +static void +vrttxt_line_push (gaiaTextReaderPtr txt, char c) +{ +/* inserting a single char into the dynamically growing buffer */ + if (txt->error) + return; + if ((txt->current_buf_off + 1) >= txt->current_buf_sz) + { + /* expanding the input buffer */ + int new_sz; + char *new_buf; + /* + / allocation strategy: + / - the input buffer has an initial size of 1024 bytes + / (good for short lines) + / - the second step allocates 4196 bytes + / - the third step allocates 65536 bytes + / (good for medium sized lines) + / - after this the buffer allocation will be increased + / be 1MB at each step (good for huge sized lines) + */ + if (txt->current_buf_sz < 4196) + new_sz = 4196; + else if (txt->current_buf_sz < 65536) + new_sz = 65536; + else + new_sz = txt->current_buf_sz + (1024 * 1024); + new_buf = malloc (new_sz); + if (!new_buf) + { + txt->error = 1; + return; + } + txt->current_buf_sz = new_sz; + memcpy (new_buf, txt->line_buffer, txt->current_buf_off); + free (txt->line_buffer); + txt->line_buffer = new_buf; + free (txt->field_buffer); + txt->field_buffer = malloc (new_sz); + if (txt->field_buffer == NULL) + { + txt->error = 1; + return; + } + } + *(txt->line_buffer + txt->current_buf_off) = c; + txt->current_buf_off++; +/* ensuring that input buffer will be null terminated anyway */ + *(txt->line_buffer + txt->current_buf_off) = '\0'; +} + +static void +vrttxt_build_line_array (gaiaTextReaderPtr txt) +{ +/* creating the final Line offsets array */ + struct vrttxt_row_block *p_block; + int i; + int cnt = 0; + int first_line = 1; + if (txt->rows) + free (txt->rows); + txt->rows = NULL; + txt->num_rows = 0; + p_block = txt->first; + while (p_block) + { + /* counting how many lines are there */ + if (p_block == txt->first && txt->first_line_titles) + txt->num_rows += p_block->num_rows - 1; + else + txt->num_rows += p_block->num_rows; + p_block = p_block->next; + } + txt->rows = malloc (sizeof (struct vrttxt_row *) * txt->num_rows); + if (txt->rows == NULL) + { + /* insufficient memory */ + txt->error = 1; + return; + } + p_block = txt->first; + while (p_block) + { + for (i = 0; i < p_block->num_rows; i++) + { + /* setting Line references into the array */ + if (first_line && txt->first_line_titles) + { + first_line = 0; + continue; /* skipping the first line (column names) */ + } + *(txt->rows + cnt++) = p_block->rows + i; + } + p_block = p_block->next; + } +} + +GAIAGEO_DECLARE int +gaiaTextReaderParse (gaiaTextReaderPtr txt) +{ +/* +/ preliminary parsing +/ - reading the input file until EOF +/ - then feeding the Row offsets structs +/ to be used for any subsequent access +*/ + char name[64]; + int ind; + int i2; + int c; + int masked = 0; + int token_start = 1; + int row_offset = 0; + off_t offset = 0; + struct vrttxt_line line; + vrttxt_line_init (&line, 0); + txt->current_buf_off = 0; + + while ((c = getc (txt->text_file)) != EOF) + { + if (c == txt->text_separator) + { + if (masked) + masked = 0; + else + { + if (token_start) + masked = 1; + } + vrttxt_line_push (txt, c); + if (txt->error) + return 0; + row_offset++; + offset++; + continue; + } + token_start = 0; + if (c == '\r') + { + if (masked) + { + vrttxt_line_push (txt, c); + if (txt->error) + return 0; + row_offset++; + } + offset++; + continue; + } + if (c == '\n') + { + if (masked) + { + vrttxt_line_push (txt, c); + if (txt->error) + return 0; + row_offset++; + offset++; + continue; + } + vrttxt_add_field (&line, offset); + vrttxt_line_end (&line, offset); + vrttxt_add_line (txt, &line); + if (txt->error) + return 0; + vrttxt_line_init (&line, offset + 1); + txt->current_buf_off = 0; + token_start = 1; + row_offset = 0; + offset++; + continue; + } + if (c == txt->field_separator) + { + if (masked) + { + vrttxt_line_push (txt, c); + if (txt->error) + return 0; + row_offset++; + offset++; + continue; + } + vrttxt_line_push (txt, c); + if (txt->error) + return 0; + row_offset++; + vrttxt_add_field (&line, offset); + token_start = 1; + offset++; + continue; + } + vrttxt_line_push (txt, c); + if (txt->error) + return 0; + row_offset++; + offset++; + } + if (txt->error) + return 0; + if (txt->first_line_titles) + { + /* checking for duplicate column names */ + for (ind = 0; ind < txt->max_fields; ind++) + { + for (i2 = 0; i2 < ind; i2++) + { + if (strcasecmp + (txt->columns[i2].name, txt->columns[ind].name) == 0) + { + sprintf (name, "COL%03d", ind + 1); + if (!vrttxt_set_column_title (txt, ind, name)) + { + txt->error = 1; + return 0; + } + } + } + } + } + else + { + /* setting convenience column names */ + for (ind = 0; ind < txt->max_fields; ind++) + { + sprintf (name, "COL%03d", ind + 1); + if (!vrttxt_set_column_title (txt, ind, name)) + { + txt->error = 1; + return 0; + } + } + } + if (txt->error) + return 0; + vrttxt_build_line_array (txt); + if (txt->error) + return 0; + return 1; +} + +GAIAGEO_DECLARE int +gaiaTextReaderGetRow (gaiaTextReaderPtr txt, int line_no) +{ +/* reading a Line (identified by relative number */ + int i; + char c; + int masked = 0; + int token_start = 1; + int fld = 0; + int offset = 0; + struct vrttxt_row *p_row; + txt->current_line_ready = 0; + txt->max_current_field = 0; + if (line_no < 0 || line_no >= txt->num_rows || txt->rows == NULL) + return 0; + p_row = *(txt->rows + line_no); + if (fseek (txt->text_file, p_row->offset, SEEK_SET) != 0) + return 0; + if (fread (txt->line_buffer, 1, p_row->len, txt->text_file) != + (unsigned int) (p_row->len)) + return 0; + txt->field_offsets[0] = 0; + for (i = 0; i < p_row->len; i++) + { + /* parsing Fields */ + c = *(txt->line_buffer + i); + if (c == txt->text_separator) + { + if (masked) + masked = 0; + else + { + if (token_start) + masked = 1; + } + offset++; + continue; + } + token_start = 0; + if (c == '\r') + { + offset++; + continue; + } + if (c == txt->field_separator) + { + if (masked) + { + offset++; + continue; + } + txt->field_offsets[fld + 1] = offset + 1; + txt->field_lens[fld] = -1; + txt->field_lens[fld] = offset - txt->field_offsets[fld]; + fld++; + txt->max_current_field = fld; + token_start = 1; + offset++; + continue; + } + offset++; + } + if (offset > 0) + { + txt->field_lens[fld] = offset - txt->field_offsets[fld]; + fld++; + txt->max_current_field = fld; + } + txt->current_line_ready = 1; + return 1; +} + +GAIAGEO_DECLARE int +gaiaTextReaderFetchField (gaiaTextReaderPtr txt, int field_idx, int *type, + const char **value) +{ +/* fetching a field value */ + char *utf8text = NULL; + int err; + int len; + char *str; + if (txt->current_line_ready == 0) + { + *type = VRTTXT_NULL; + *value = NULL; + return 0; + } + if (field_idx < 0 || field_idx >= txt->max_fields) + { + *type = VRTTXT_NULL; + *value = NULL; + return 0; + } + if (field_idx < 0 || field_idx >= txt->max_current_field) + { + *type = VRTTXT_NULL; + *value = NULL; + return 0; + } + *type = txt->columns[field_idx].type; + if (txt->field_lens[field_idx] == 0) + *(txt->field_buffer) = '\0'; + memcpy (txt->field_buffer, txt->line_buffer + txt->field_offsets[field_idx], + txt->field_lens[field_idx]); + *(txt->field_buffer + txt->field_lens[field_idx]) = '\0'; + *value = txt->field_buffer; +/* sandro 2012-02-01: fixing CR handling for last column [windows] */ + if (*(txt->field_buffer) == '\r' && txt->field_lens[field_idx] == 1 + && (field_idx + 1) == txt->max_fields) + *(txt->field_buffer) = '\0'; + if (*(txt->field_buffer) == '\0') + *type = VRTTXT_NULL; + else if (*type == VRTTXT_TEXT) + { + /* converting to UTF-8 */ + str = (char *) *value; + len = strlen (str); + if (str[len - 1] == '\r') + { + /* skipping trailing CR, if any */ + str[len - 1] = '\0'; + len--; + } + if (str[0] == txt->text_separator + && str[len - 1] == txt->text_separator) + { + /* cleaning the enclosing quotes */ + str[len - 1] = '\0'; + str = (char *) (*value + 1); + len -= 2; + if (len <= 0) + { + *type = VRTTXT_NULL; + *value = NULL; + return 1; + } + } + utf8text = gaiaConvertToUTF8 (txt->toUtf8, str, len, &err); + if (err) + { + /* memory cleanup: Kashif Rasul 14 Jan 2010 */ + if (utf8text) + free (utf8text); + *type = VRTTXT_NULL; + *value = NULL; + return 0; + } + *value = utf8text; + } + return 1; +} + +#endif /* ICONV enabled/disabled */ diff --git a/src/spatialite/src/wfs/Makefile.am b/src/spatialite/src/wfs/Makefile.am new file mode 100644 index 0000000..c793e99 --- /dev/null +++ b/src/spatialite/src/wfs/Makefile.am @@ -0,0 +1,17 @@ + +AM_CPPFLAGS= @CFLAGS@ @LIBXML2_CFLAGS@ +AM_CPPFLAGS += -I$(top_srcdir)/src/headers + +noinst_LTLIBRARIES = libwfs.la wfs.la + +libwfs_la_SOURCES = wfs_in.c + +wfs_la_SOURCES = wfs_in.c + +wfs_la_CPPFLAGS = @CFLAGS@ @LIBXML2_CFLAGS@ +wfs_la_CPPFLAGS += -I$(top_srcdir)/src/headers -I. +wfs_la_CPPFLAGS += -DLOADABLE_EXTENSION +wfs_la_LDFLAGS = -module +wfs_la_LIBTOOLFLAGS = --tag=disable-static + +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda diff --git a/src/spatialite/src/wfs/Makefile.in b/src/spatialite/src/wfs/Makefile.in new file mode 100644 index 0000000..7349796 --- /dev/null +++ b/src/spatialite/src/wfs/Makefile.in @@ -0,0 +1,610 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = src/wfs +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +LTLIBRARIES = $(noinst_LTLIBRARIES) +libwfs_la_LIBADD = +am_libwfs_la_OBJECTS = wfs_in.lo +libwfs_la_OBJECTS = $(am_libwfs_la_OBJECTS) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +wfs_la_LIBADD = +am_wfs_la_OBJECTS = wfs_la-wfs_in.lo +wfs_la_OBJECTS = $(am_wfs_la_OBJECTS) +wfs_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(wfs_la_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(wfs_la_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(libwfs_la_SOURCES) $(wfs_la_SOURCES) +DIST_SOURCES = $(libwfs_la_SOURCES) $(wfs_la_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = @CFLAGS@ @LIBXML2_CFLAGS@ -I$(top_srcdir)/src/headers +noinst_LTLIBRARIES = libwfs.la wfs.la +libwfs_la_SOURCES = wfs_in.c +wfs_la_SOURCES = wfs_in.c +wfs_la_CPPFLAGS = @CFLAGS@ @LIBXML2_CFLAGS@ \ + -I$(top_srcdir)/src/headers -I. -DLOADABLE_EXTENSION +wfs_la_LDFLAGS = -module +wfs_la_LIBTOOLFLAGS = --tag=disable-static +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .lo .o .obj +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/wfs/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign src/wfs/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-noinstLTLIBRARIES: + -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES) + @list='$(noinst_LTLIBRARIES)'; \ + locs=`for p in $$list; do echo $$p; done | \ + sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ + sort -u`; \ + test -z "$$locs" || { \ + echo rm -f $${locs}; \ + rm -f $${locs}; \ + } + +libwfs.la: $(libwfs_la_OBJECTS) $(libwfs_la_DEPENDENCIES) $(EXTRA_libwfs_la_DEPENDENCIES) + $(AM_V_CCLD)$(LINK) $(libwfs_la_OBJECTS) $(libwfs_la_LIBADD) $(LIBS) + +wfs.la: $(wfs_la_OBJECTS) $(wfs_la_DEPENDENCIES) $(EXTRA_wfs_la_DEPENDENCIES) + $(AM_V_CCLD)$(wfs_la_LINK) $(wfs_la_OBJECTS) $(wfs_la_LIBADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wfs_in.Plo@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wfs_la-wfs_in.Plo@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +wfs_la-wfs_in.lo: wfs_in.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(wfs_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(wfs_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT wfs_la-wfs_in.lo -MD -MP -MF $(DEPDIR)/wfs_la-wfs_in.Tpo -c -o wfs_la-wfs_in.lo `test -f 'wfs_in.c' || echo '$(srcdir)/'`wfs_in.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/wfs_la-wfs_in.Tpo $(DEPDIR)/wfs_la-wfs_in.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='wfs_in.c' object='wfs_la-wfs_in.lo' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(wfs_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(wfs_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o wfs_la-wfs_in.lo `test -f 'wfs_in.c' || echo '$(srcdir)/'`wfs_in.c + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(LTLIBRARIES) +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool clean-noinstLTLIBRARIES \ + mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean clean-generic \ + clean-libtool clean-noinstLTLIBRARIES cscopelist-am ctags \ + ctags-am distclean distclean-compile distclean-generic \ + distclean-libtool distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-data \ + install-data-am install-dvi install-dvi-am install-exec \ + install-exec-am install-html install-html-am install-info \ + install-info-am install-man install-pdf install-pdf-am \ + install-ps install-ps-am install-strip installcheck \ + installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/src/wfs/wfs_in.c b/src/spatialite/src/wfs/wfs_in.c new file mode 100644 index 0000000..34116c7 --- /dev/null +++ b/src/spatialite/src/wfs/wfs_in.c @@ -0,0 +1,4587 @@ +/* + + wfs_in.c -- implements WFS support [import] + + version 4.2, 2014 July 25 + + Author: Sandro Furieri a.furieri@lqt.it + + ----------------------------------------------------------------------------- + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2008-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +/* + +CREDITS: + +this module has been completely funded by: +Regione Toscana - Settore Sistema Informativo Territoriale ed Ambientale +(WFS data import) + +*/ + +#include +#include +#include +#include + +#if defined(_WIN32) && !defined(__MINGW32__) +#include "config-msvc.h" +#else +#include "config.h" +#endif + +#include +#include + +#include +#include +#include +#include +#include + +#ifdef ENABLE_LIBXML2 /* LIBXML2 enabled: supporting XML documents */ + +#include +#include + +#define MAX_GTYPES 28 + +#ifdef _WIN32 +#define atoll _atoi64 +#endif /* not WIN32 */ + +#ifdef _WIN32 +#define strcasecmp _stricmp +#endif /* not WIN32 */ + +struct wfs_srid_def +{ +/* a WFS supported SRID */ + int srid; + char *srs_name; + struct wfs_srid_def *next; +}; + +struct wfs_keyword +{ +/* a WFS keyword */ + char *keyword; + struct wfs_keyword *next; +}; + +struct wfs_layer_def +{ +/* a WFS layer */ + char *name; + char *title; + char *abstract; + struct wfs_srid_def *first_srid; + struct wfs_srid_def *last_srid; + struct wfs_keyword *first_key; + struct wfs_keyword *last_key; + struct wfs_layer_def *next; +}; + +struct wfs_catalog +{ +/* a list of WFS layers */ + char *request_url; + char *describe_url; + struct wfs_layer_def *first; + struct wfs_layer_def *last; +}; + +struct wfs_column_def +{ +/* a WFS attribute / column */ + char *name; + int type; + int is_nullable; + const char *pValue; + struct wfs_column_def *next; +}; + +struct wfs_geom_type +{ +/* Geometry Type statistics */ + int type; + int count; +}; + +struct wfs_layer_schema +{ +/* a WFS table / layer schema */ + int error; + int swap_axes; + char *layer_name; + struct wfs_column_def *first; + struct wfs_column_def *last; + char *geometry_name; + int geometry_type; + int srid; + int dims; + int is_nullable; + struct wfs_geom_type *types; + char *geometry_value; + sqlite3_stmt *stmt; + sqlite3 *sqlite; +}; + +struct wfs_attribute +{ +/* a WFS attribute value */ + struct wfs_column_def *column; + char *value; + struct wfs_attribute *next; +}; + +struct wfs_feature +{ +/* a WFS feature */ + struct wfs_attribute *first; + struct wfs_attribute *last; + char *geometry_value; +}; + +static struct wfs_column_def * +alloc_wfs_column (const char *name, int type, int is_nullable) +{ +/* allocating a WFS attribute / column definition */ + int len; + struct wfs_column_def *col = malloc (sizeof (struct wfs_column_def)); + len = strlen (name); + col->name = malloc (len + 1); + strcpy (col->name, name); + col->type = type; + col->is_nullable = is_nullable; + col->pValue = NULL; + col->next = NULL; + return col; +} + +static void +free_wfs_column (struct wfs_column_def *col) +{ +/* memory cleanup: destroying a WFS column definition */ + if (col == NULL) + return; + if (col->name != NULL) + free (col->name); + free (col); +} + +static struct wfs_layer_schema * +alloc_wfs_layer_schema (const char *layer_name, int swap_axes) +{ +/* allocating an empty WFS schema descriptor */ + int len; + struct wfs_layer_schema *ptr = malloc (sizeof (struct wfs_layer_schema)); + ptr->error = 0; + ptr->swap_axes = swap_axes; + len = strlen (layer_name); + ptr->layer_name = malloc (len + 1); + strcpy (ptr->layer_name, layer_name); + ptr->first = NULL; + ptr->last = NULL; + ptr->geometry_name = NULL; + ptr->geometry_type = GAIA_UNKNOWN; + ptr->srid = -1; + ptr->dims = 2; + ptr->types = malloc (sizeof (struct wfs_geom_type) * MAX_GTYPES); + ptr->types[0].type = GAIA_POINT; + ptr->types[0].count = 0; + ptr->types[1].type = GAIA_LINESTRING; + ptr->types[1].count = 0; + ptr->types[2].type = GAIA_POLYGON; + ptr->types[2].count = 0; + ptr->types[3].type = GAIA_MULTIPOINT; + ptr->types[3].count = 0; + ptr->types[4].type = GAIA_MULTILINESTRING; + ptr->types[4].count = 0; + ptr->types[5].type = GAIA_MULTIPOLYGON; + ptr->types[5].count = 0; + ptr->types[6].type = GAIA_GEOMETRYCOLLECTION; + ptr->types[6].count = 0; + ptr->types[7].type = GAIA_POINTZ; + ptr->types[7].count = 0; + ptr->types[8].type = GAIA_LINESTRINGZ; + ptr->types[8].count = 0; + ptr->types[9].type = GAIA_POLYGONZ; + ptr->types[9].count = 0; + ptr->types[10].type = GAIA_MULTIPOINTZ; + ptr->types[10].count = 0; + ptr->types[11].type = GAIA_MULTILINESTRINGZ; + ptr->types[11].count = 0; + ptr->types[12].type = GAIA_MULTIPOLYGONZ; + ptr->types[12].count = 0; + ptr->types[13].type = GAIA_GEOMETRYCOLLECTIONZ; + ptr->types[13].count = 0; + ptr->types[14].type = GAIA_POINTM; + ptr->types[14].count = 0; + ptr->types[15].type = GAIA_LINESTRINGM; + ptr->types[15].count = 0; + ptr->types[16].type = GAIA_POLYGONM; + ptr->types[16].count = 0; + ptr->types[17].type = GAIA_MULTIPOINTM; + ptr->types[17].count = 0; + ptr->types[18].type = GAIA_MULTILINESTRINGM; + ptr->types[18].count = 0; + ptr->types[19].type = GAIA_MULTIPOLYGONM; + ptr->types[19].count = 0; + ptr->types[20].type = GAIA_GEOMETRYCOLLECTIONM; + ptr->types[20].count = 0; + ptr->types[21].type = GAIA_POINTZM; + ptr->types[21].count = 0; + ptr->types[22].type = GAIA_LINESTRINGZM; + ptr->types[22].count = 0; + ptr->types[23].type = GAIA_POLYGONZM; + ptr->types[23].count = 0; + ptr->types[24].type = GAIA_MULTIPOINTZM; + ptr->types[24].count = 0; + ptr->types[25].type = GAIA_MULTILINESTRINGZM; + ptr->types[25].count = 0; + ptr->types[26].type = GAIA_MULTIPOLYGONZM; + ptr->types[26].count = 0; + ptr->types[27].type = GAIA_GEOMETRYCOLLECTIONZM; + ptr->types[27].count = 0; + ptr->geometry_value = NULL; + ptr->stmt = NULL; + return ptr; +} + +static void +free_wfs_layer_schema (struct wfs_layer_schema *ptr) +{ +/* memory cleanup: destroying a WFS schema */ + struct wfs_column_def *col; + struct wfs_column_def *n_col; + if (ptr == NULL) + return; + if (ptr->layer_name != NULL) + free (ptr->layer_name); + col = ptr->first; + while (col != NULL) + { + n_col = col->next; + free_wfs_column (col); + col = n_col; + } + if (ptr->geometry_name != NULL) + free (ptr->geometry_name); + if (ptr->types != NULL) + free (ptr->types); + if (ptr->geometry_value != NULL) + free (ptr->geometry_value); + if (ptr->stmt != NULL) + sqlite3_finalize (ptr->stmt); + free (ptr); +} + +static void +reset_wfs_values (struct wfs_layer_schema *ptr) +{ +/* memory cleanup: resetting attribute values */ + struct wfs_column_def *col; + if (ptr == NULL) + return; + col = ptr->first; + while (col != NULL) + { + col->pValue = NULL; + col = col->next; + } + if (ptr->geometry_value != NULL) + { + free (ptr->geometry_value); + ptr->geometry_value = NULL; + } +} + +static int +count_wfs_values (struct wfs_layer_schema *ptr) +{ +/* counting how many valid values */ + int count = 0; + struct wfs_column_def *col; + if (ptr == NULL) + return 0; + col = ptr->first; + while (col != NULL) + { + if (col->pValue != NULL) + count++; + col = col->next; + } + if (ptr->geometry_value != NULL) + count++; + return count; +} + +static void +add_wfs_column_to_schema (struct wfs_layer_schema *ptr, const char *name, + int type, int is_nullable) +{ +/* adding an attribute / column into a WFS table / schema */ + struct wfs_column_def *col; + if (ptr == NULL) + return; + col = alloc_wfs_column (name, type, is_nullable); + if (ptr->first == NULL) + ptr->first = col; + if (ptr->last != NULL) + ptr->last->next = col; + ptr->last = col; +} + +static void +set_wfs_geometry (struct wfs_layer_schema *ptr, const char *name, int type, + int is_nullable) +{ +/* setting the Geometry for a WFS schema */ + int len; + if (ptr == NULL) + return; + if (ptr->geometry_name != NULL) + free (ptr->geometry_name); + len = strlen (name); + ptr->geometry_name = malloc (len + 1); + strcpy (ptr->geometry_name, name); + ptr->geometry_type = type; + ptr->is_nullable = is_nullable; +} + +static struct wfs_srid_def * +alloc_wfs_srid (int srid, const char *srs_name) +{ +/* allocating a WFS SRID definition */ + int len; + struct wfs_srid_def *ptr = malloc (sizeof (struct wfs_srid_def)); + ptr->srid = srid; + len = strlen (srs_name); + ptr->srs_name = malloc (len + 1); + strcpy (ptr->srs_name, srs_name); + ptr->next = NULL; + return ptr; +} + +static struct wfs_keyword * +alloc_wfs_keyword (const char *keyword) +{ +/* allocating a WFS Keyword */ + int len; + struct wfs_keyword *ptr = malloc (sizeof (struct wfs_keyword)); + len = strlen (keyword); + ptr->keyword = malloc (len + 1); + strcpy (ptr->keyword, keyword); + ptr->next = NULL; + return ptr; +} + +static struct wfs_layer_def * +alloc_wfs_layer (const char *name, const char *title, const char *abstract) +{ +/* allocating a WFS catalog item / layer definition */ + int len; + struct wfs_layer_def *lyr = malloc (sizeof (struct wfs_layer_def)); + len = strlen (name); + lyr->name = malloc (len + 1); + strcpy (lyr->name, name); + if (title == NULL) + lyr->title = NULL; + else + { + len = strlen (title); + lyr->title = malloc (len + 1); + strcpy (lyr->title, title); + } + if (abstract == NULL) + lyr->abstract = NULL; + else + { + len = strlen (abstract); + lyr->abstract = malloc (len + 1); + strcpy (lyr->abstract, abstract); + } + lyr->first_srid = NULL; + lyr->last_srid = NULL; + lyr->first_key = NULL; + lyr->last_key = NULL; + lyr->next = NULL; + return lyr; +} + +static void +free_wfs_layer (struct wfs_layer_def *lyr) +{ +/* memory cleanup: destroying a WFS catalog item definition */ + struct wfs_srid_def *srid; + struct wfs_srid_def *n_srid; + struct wfs_keyword *key; + struct wfs_keyword *n_key; + if (lyr == NULL) + return; + if (lyr->name != NULL) + free (lyr->name); + if (lyr->title != NULL) + free (lyr->title); + if (lyr->abstract != NULL) + free (lyr->abstract); + srid = lyr->first_srid; + while (srid != NULL) + { + n_srid = srid->next; + if (srid->srs_name != NULL) + free (srid->srs_name); + free (srid); + srid = n_srid; + } + key = lyr->first_key; + while (key != NULL) + { + n_key = key->next; + free (key->keyword); + free (key); + key = n_key; + } + free (lyr); +} + +static struct wfs_catalog * +alloc_wfs_catalog () +{ +/* allocating an empty WFS catalog object */ + struct wfs_catalog *ptr = malloc (sizeof (struct wfs_catalog)); + ptr->first = NULL; + ptr->last = NULL; + ptr->request_url = NULL; + ptr->describe_url = NULL; + return ptr; +} + +static void +free_wfs_catalog (struct wfs_catalog *ptr) +{ +/* memory cleanup: destroying a WFS catalog object */ + struct wfs_layer_def *lyr; + struct wfs_layer_def *n_lyr; + if (ptr == NULL) + return; + lyr = ptr->first; + while (lyr != NULL) + { + n_lyr = lyr->next; + free_wfs_layer (lyr); + lyr = n_lyr; + } + if (ptr->request_url != NULL) + free (ptr->request_url); + if (ptr->describe_url != NULL) + free (ptr->describe_url); + free (ptr); +} + +static void +add_wfs_layer_to_catalog (struct wfs_catalog *ptr, const char *name, + const char *title, const char *abstract) +{ +/* adding an item (aka Layer) into a WFS Catalog */ + struct wfs_layer_def *lyr; + if (ptr == NULL) + return; + lyr = alloc_wfs_layer (name, title, abstract); + if (ptr->first == NULL) + ptr->first = lyr; + if (ptr->last != NULL) + ptr->last->next = lyr; + ptr->last = lyr; +} + +static struct wfs_feature * +create_feature (struct wfs_layer_schema *schema) +{ +/* creating an empty WFS feature object */ + struct wfs_column_def *col; + struct wfs_feature *feature = malloc (sizeof (struct wfs_feature)); + feature->first = NULL; + feature->last = NULL; + feature->geometry_value = NULL; + col = schema->first; + while (col != NULL) + { + struct wfs_attribute *attr = malloc (sizeof (struct wfs_attribute)); + attr->column = col; + attr->value = NULL; + attr->next = NULL; + if (feature->first == NULL) + feature->first = attr; + if (feature->last != NULL) + feature->last->next = attr; + feature->last = attr; + col = col->next; + } + return feature; +} + +static void +reset_feature (struct wfs_feature *feature) +{ +/* resetting a WFS feature object to its initial empty state */ + struct wfs_attribute *attr = feature->first; + while (attr != NULL) + { + if (attr->value != NULL) + free (attr->value); + attr->value = NULL; + attr = attr->next; + } + if (feature->geometry_value != NULL) + free (feature->geometry_value); + feature->geometry_value = NULL; +} + +static void +free_feature (struct wfs_feature *feature) +{ +/* memory cleanup - freeing a WFS feature object */ + struct wfs_attribute *attr; + struct wfs_attribute *n_attr; + reset_feature (feature); + attr = feature->first; + while (attr != NULL) + { + n_attr = attr->next; + free (attr); + attr = n_attr; + } + free (feature); +} + +static int +compare_features (struct wfs_feature *f1, struct wfs_feature *f2) +{ +/* testing if two WFS features are identical */ + struct wfs_attribute *attr1; + struct wfs_attribute *attr2; + int cnt1 = 0; + int cnt2 = 0; +/* counting how many attributes for each feature */ + attr1 = f1->first; + while (attr1 != NULL) + { + cnt1++; + attr1 = attr1->next; + } + attr2 = f2->first; + while (attr2 != NULL) + { + cnt2++; + attr2 = attr2->next; + } + if (cnt1 != cnt2) + { + /* surely different - mismatching attributes count */ + return 0; + } + if (f1->geometry_value == NULL && f2->geometry_value == NULL) + ; + else if (f1->geometry_value != NULL && f2->geometry_value != NULL) + { + if (strcmp (f1->geometry_value, f2->geometry_value) != 0) + { + /* surely different - mismatching geometry values */ + return 0; + } + } + else + { + /* surely different - mismatching geometries */ + return 0; + } + attr1 = f1->first; + attr2 = f2->first; + while (attr1 != NULL && attr2 != NULL) + { + if (strcmp (attr1->column->name, attr1->column->name) != 0) + { + /* mismatching attribute name */ + return 0; + } + if (attr1->value == NULL && attr2->value == NULL) + ; + else if (attr1->value != NULL && attr2->value != NULL) + { + if (strcmp (attr1->value, attr2->value) != 0) + { + /* mismatching values */ + return 0; + } + } + else + { + /* mismatching values */ + } + attr1 = attr1->next; + attr2 = attr2->next; + } + return 1; +} + +static void +clean_copy (char *dest, const char *orig) +{ +/* copying an URI fragment attempting to clean invalid sequences */ + char last = '\0'; + const char *pi = orig; + char *po = dest; + while (*pi != '\0') + { + if (last == '&' && *pi == '?') + { + last = *pi; + po--; + *po++ = *pi++; + continue; + } + last = *pi; + *po++ = *pi++; + } + *po = '\0'; +} + +static void +set_wfs_catalog_base_request_url (struct wfs_catalog *ptr, const char *url) +{ +/* setting the request-URL for a WFS catalog */ + int len; + int i; + int force_marker = 1; + if (ptr == NULL) + return; + if (ptr->request_url != NULL) + free (ptr->request_url); + len = strlen (url); + ptr->request_url = malloc (len + 2); + clean_copy (ptr->request_url, url); + for (i = 0; i < (int) strlen (ptr->request_url); i++) + { + if (*(ptr->request_url + i) == '?') + force_marker = 0; + } + if (force_marker) + strcat (ptr->request_url, "?"); +} + +static void +set_wfs_catalog_base_describe_url (struct wfs_catalog *ptr, const char *url) +{ +/* setting the describe-URL for a WFS catalog */ + int len; + int i; + int force_marker = 1; + if (ptr == NULL) + return; + if (ptr->describe_url != NULL) + free (ptr->describe_url); + len = strlen (url); + ptr->describe_url = malloc (len + 2); + clean_copy (ptr->describe_url, url); + for (i = 0; i < (int) strlen (ptr->describe_url); i++) + { + if (*(ptr->describe_url + i) == '?') + force_marker = 0; + } + if (force_marker) + strcat (ptr->describe_url, "?"); +} + +static void +add_wfs_srid_to_layer (struct wfs_layer_def *ptr, int srid, + const char *srs_name) +{ +/* adding a SRID supported by a WFS Layer */ + struct wfs_srid_def *p_srid; + if (ptr == NULL) + return; + p_srid = alloc_wfs_srid (srid, srs_name); + if (ptr->first_srid == NULL) + ptr->first_srid = p_srid; + if (ptr->last_srid != NULL) + ptr->last_srid->next = p_srid; + ptr->last_srid = p_srid; +} + +static void +add_wfs_keyword_to_layer (struct wfs_layer_def *ptr, const char *keyword) +{ +/* adding a Keyword to a WFS Layer */ + struct wfs_keyword *key; + if (ptr == NULL) + return; + if (keyword == NULL) + return; + key = alloc_wfs_keyword (keyword); + if (ptr->first_key == NULL) + ptr->first_key = key; + if (ptr->last_key != NULL) + ptr->last_key->next = key; + ptr->last_key = key; +} + +static void +wfsParsingError (void *ctx, const char *msg, ...) +{ +/* appending to the current Parsing Error buffer */ + gaiaOutBufferPtr buf = ctx; + char out[65536]; + va_list args; + + if (ctx != NULL) + ctx = NULL; /* suppressing stupid compiler warnings (unused args) */ + + va_start (args, msg); + vsnprintf (out, 65536, msg, args); + gaiaAppendToOutBuffer (buf, out); + va_end (args); +} + +static int +find_describe_uri (xmlNodePtr node, char **describe_uri) +{ +/* parsing the "schemaLocation" string */ + if (node != NULL) + { + if (node->type == XML_TEXT_NODE) + { + char *p_base; + int len = strlen ((const char *) (node->content)); + char *string = malloc (len + 1); + strcpy (string, (char *) (node->content)); + p_base = string; + while (1) + { + char *p = p_base; + while (1) + { + if (*p == ' ' || *p == '\0') + { + int next = 1; + if (*p == '\0') + next = 0; + *p = '\0'; + if (strstr (p_base, "DescribeFeatureType") != + NULL) + { + len = strlen (p_base); + *describe_uri = malloc (len + 1); + strcpy (*describe_uri, p_base); + free (string); + return 1; + } + if (next) + p_base = p + 1; + else + p_base = p; + break; + } + p++; + } + if (*p_base == '\0') + break; + } + free (string); + } + } + return 0; +} + +static int +get_DescribeFeatureType_uri (xmlDocPtr xml_doc, char **describe_uri) +{ +/* +/ attempting to retrieve the URI identifying the DescribeFeatureType service +*/ + const char *name; + xmlNodePtr root = xmlDocGetRootElement (xml_doc); + struct _xmlAttr *attr; + if (root == NULL) + return 0; + + name = (const char *) (root->name); + if (name != NULL) + { + if (strcmp (name, "FeatureCollection") != 0) + return 0; /* for sure, it's not a WFS answer */ + } + + attr = root->properties; + while (attr != NULL) + { + if (attr->name != NULL) + { + if (strcmp ((const char *) (attr->name), "schemaLocation") == 0) + return find_describe_uri (attr->children, describe_uri); + } + attr = attr->next; + } + + return 0; +} + +static const char * +parse_attribute_name (xmlNodePtr node) +{ +/* parsing the element/name string */ + if (node != NULL) + { + if (node->type == XML_TEXT_NODE) + return (const char *) (node->content); + } + return NULL; +} + +static int +parse_attribute_nillable (xmlNodePtr node) +{ +/* parsing the element/nillable string */ + if (node != NULL) + { + if (node->type == XML_TEXT_NODE) + if (strcmp ((const char *) (node->content), "false") == 0) + return 0; + } + return 1; +} + +static const char * +clean_xml_prefix (const char *value) +{ +/* skipping an eventual XML prefix */ + const char *ptr = value; + while (1) + { + if (*ptr == '\0') + break; + if (*ptr == ':') + return ptr + 1; + ptr++; + } + return value; +} + +static int +parse_attribute_type (xmlNodePtr node, int *is_geom) +{ +/* parsing the element/nillable string */ + *is_geom = 0; + if (node != NULL) + { + if (node->type == XML_TEXT_NODE) + { + const char *clean = + clean_xml_prefix ((const char *) (node->content)); + if (strstr (clean, "Geometry") != NULL) + { + *is_geom = 1; + return GAIA_GEOMETRYCOLLECTION; + } + if (strstr (clean, "MultiPoint") != NULL) + { + *is_geom = 1; + return GAIA_MULTIPOINT; + } + if (strstr (clean, "MultiLineString") != NULL) + { + *is_geom = 1; + return GAIA_MULTILINESTRING; + } + if (strstr (clean, "MultiCurve") != NULL) + { + *is_geom = 1; + return GAIA_MULTILINESTRING; + } + if (strstr (clean, "MultiPolygon") != NULL) + { + *is_geom = 1; + return GAIA_MULTIPOLYGON; + } + if (strstr (clean, "MultiSurface") != NULL) + { + *is_geom = 1; + return GAIA_MULTIPOLYGON; + } + if (strstr (clean, "Point") != NULL) + { + *is_geom = 1; + return GAIA_POINT; + } + if (strstr (clean, "LineString") != NULL) + { + *is_geom = 1; + return GAIA_LINESTRING; + } + if (strstr (clean, "Curve") != NULL) + { + *is_geom = 1; + return GAIA_LINESTRING; + } + if (strstr (clean, "Polygon") != NULL) + { + *is_geom = 1; + return GAIA_POLYGON; + } + if (strstr (clean, "Surface") != NULL) + { + *is_geom = 1; + return GAIA_POLYGON; + } + if (strcmp (clean, "unsignedInt") == 0) + return SQLITE_INTEGER; + if (strcmp (clean, "nonNegativeInteger") == 0) + return SQLITE_INTEGER; + if (strcmp (clean, "negativeInteger") == 0) + return SQLITE_INTEGER; + if (strcmp (clean, "nonPositiveInteger") == 0) + return SQLITE_INTEGER; + if (strcmp (clean, "positiveInteger") == 0) + return SQLITE_INTEGER; + if (strcmp (clean, "integer") == 0) + return SQLITE_INTEGER; + if (strcmp (clean, "int") == 0) + return SQLITE_INTEGER; + if (strcmp (clean, "unsignedShort") == 0) + return SQLITE_INTEGER; + if (strcmp (clean, "short") == 0) + return SQLITE_INTEGER; + if (strcmp (clean, "unsignedLong") == 0) + return SQLITE_INTEGER; + if (strcmp (clean, "long") == 0) + return SQLITE_INTEGER; + if (strcmp (clean, "boolean") == 0) + return SQLITE_INTEGER; + if (strcmp (clean, "unsignedByte") == 0) + return SQLITE_INTEGER; + if (strcmp (clean, "byte") == 0) + return SQLITE_INTEGER; + if (strcmp (clean, "decimal") == 0) + return SQLITE_FLOAT; + if (strcmp (clean, "float") == 0) + return SQLITE_FLOAT; + if (strcmp (clean, "double") == 0) + return SQLITE_FLOAT; + } + } + return SQLITE_TEXT; +} + +static int +parse_attribute_inner_node (struct _xmlAttr *attr, int *type, int *is_geom) +{ +/* attempting to retrieve the data-type from a complex attribute */ + while (attr != NULL) + { + if (attr->name != NULL) + { + if (strcmp ((const char *) (attr->name), "base") == 0) + { + *type = parse_attribute_type (attr->children, is_geom); + return 1; + } + } + attr = attr->next; + } + return 0; +} + +static void +parse_attribute_inner_type (xmlNodePtr node, int *type, int *is_geom) +{ +/* recursively parsing a complex attribute declaration */ + xmlNodePtr cur_node = NULL; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + const char *name = (const char *) (cur_node->name); + if (name != NULL) + { + if (strcmp (name, "restriction") == 0) + { + if (parse_attribute_inner_node + (cur_node->properties, type, is_geom)) + return; + } + } + parse_attribute_inner_type (cur_node->children, type, is_geom); + } + } +} + +static void +parse_wfs_schema_element (xmlNodePtr node, struct wfs_layer_schema *schema) +{ +/* parsing a WFS attribute / column definition */ + struct _xmlAttr *attr = node->properties; + const char *name = NULL; + int type = SQLITE_NULL; + int is_nullable = 1; + int is_geom = 0; + int type_declared = 0; + + while (attr != NULL) + { + if (attr->name != NULL) + { + if (strcmp ((const char *) (attr->name), "name") == 0) + name = parse_attribute_name (attr->children); + if (strcmp ((const char *) (attr->name), "nillable") == 0) + is_nullable = parse_attribute_nillable (attr->children); + if (strcmp ((const char *) (attr->name), "type") == 0) + { + type_declared = 1; + type = parse_attribute_type (attr->children, &is_geom); + } + } + attr = attr->next; + } + if (!type_declared) + parse_attribute_inner_type (node->children, &type, &is_geom); + + if (name == NULL || (is_geom == 0 && type == SQLITE_NULL) + || (is_geom != 0 && type == GAIA_UNKNOWN)) + return; + + if (is_geom) + set_wfs_geometry (schema, name, type, is_nullable); + else + add_wfs_column_to_schema (schema, name, type, is_nullable); +} + +static void +parse_wfs_schema (xmlNodePtr node, struct wfs_layer_schema *schema, + int *sequence) +{ +/* recursively parsing the WFS layer schema */ + xmlNodePtr cur_node = NULL; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + const char *name = (const char *) (cur_node->name); + if (name != NULL) + { + if (strcmp (name, "element") == 0 && *sequence) + parse_wfs_schema_element (cur_node, schema); + else + { + if (strcmp (name, "sequence") == 0) + *sequence = 1; + parse_wfs_schema (cur_node->children, schema, + sequence); + if (strcmp (name, "sequence") == 0) + *sequence = 0; + } + } + } + } +} + +static struct wfs_layer_schema * +load_wfs_schema (const char *path_or_url, const char *layer_name, int swap_axes, + char **err_msg) +{ +/* attempting to retrieve the WFS layer schema */ + xmlDocPtr xml_doc = NULL; + xmlNodePtr root; + int len; + int sequence = 0; + struct wfs_layer_schema *schema = NULL; + gaiaOutBuffer errBuf; + xmlGenericErrorFunc parsingError = (xmlGenericErrorFunc) wfsParsingError; + + gaiaOutBufferInitialize (&errBuf); + xmlSetGenericErrorFunc (&errBuf, parsingError); + if (path_or_url == NULL) + goto end; + if (layer_name == NULL) + goto end; + + xml_doc = xmlReadFile (path_or_url, NULL, 0); + if (xml_doc == NULL) + { + /* parsing error; not a well-formed XML */ + if (errBuf.Buffer != NULL && err_msg != NULL) + { + len = strlen (errBuf.Buffer); + *err_msg = malloc (len + 1); + strcpy (*err_msg, errBuf.Buffer); + } + goto end; + } + + schema = alloc_wfs_layer_schema (layer_name, swap_axes); + root = xmlDocGetRootElement (xml_doc); + parse_wfs_schema (root, schema, &sequence); + if (schema->first == NULL && schema->geometry_name == NULL) + { + if (err_msg != NULL) + { + const char *msg = "Unable to identify a valid WFS layer schema"; + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + } + free_wfs_layer_schema (schema); + schema = NULL; + } + + end: + gaiaOutBufferReset (&errBuf); + xmlSetGenericErrorFunc ((void *) stderr, NULL); + if (xml_doc != NULL) + xmlFreeDoc (xml_doc); + if (schema != NULL) + { + if (schema->first == NULL && schema->geometry_name == NULL) + { + /* empty schema */ + free_wfs_layer_schema (schema); + schema = NULL; + } + } + return schema; +} + +static void +gml_out (gaiaOutBufferPtr buf, const xmlChar * str) +{ +/* clean GML output */ + const xmlChar *p = str; + while (*p != '\0') + { + if (*p == '>') + gaiaAppendToOutBuffer (buf, ">"); + else if (*p == '<') + gaiaAppendToOutBuffer (buf, "<"); + else if (*p == '&') + gaiaAppendToOutBuffer (buf, "&"); + else if (*p == '"') + gaiaAppendToOutBuffer (buf, """); + else if (*p == '\'') + gaiaAppendToOutBuffer (buf, "'"); + else + { + char xx[2]; + xx[0] = *p; + xx[1] = '\0'; + gaiaAppendToOutBuffer (buf, xx); + } + p++; + } +} + +static void +reassemble_gml (xmlNodePtr node, gaiaOutBufferPtr buf) +{ +/* recursively printing the XML-DOM nodes */ + struct _xmlAttr *attr; + xmlNodePtr child; + xmlNs *ns; + const xmlChar *namespace; + int has_children; + int has_text; + + while (node) + { + if (node->type == XML_ELEMENT_NODE) + { + gaiaAppendToOutBuffer (buf, "<"); + ns = node->ns; + namespace = NULL; + if (ns != NULL) + namespace = ns->prefix; + if (namespace) + { + gml_out (buf, namespace); + gaiaAppendToOutBuffer (buf, ":"); + } + gml_out (buf, node->name); + attr = node->properties; + while (attr != NULL) + { + /* attributes */ + if (attr->type == XML_ATTRIBUTE_NODE) + { + xmlNodePtr text = attr->children; + gaiaAppendToOutBuffer (buf, " "); + ns = attr->ns; + namespace = NULL; + if (ns != NULL) + namespace = ns->prefix; + if (namespace) + { + gml_out (buf, namespace); + gaiaAppendToOutBuffer (buf, ":"); + } + gml_out (buf, attr->name); + gaiaAppendToOutBuffer (buf, "=\""); + if (text != NULL) + { + if (text->type == XML_TEXT_NODE) + gml_out (buf, text->content); + } + gaiaAppendToOutBuffer (buf, "\""); + } + attr = attr->next; + } + has_children = 0; + has_text = 0; + child = node->children; + while (child) + { + if (child->type == XML_ELEMENT_NODE) + has_children = 1; + if (child->type == XML_TEXT_NODE) + has_text++; + child = child->next; + } + if (has_children) + has_text = 0; + + if (!has_text && !has_children) + gaiaAppendToOutBuffer (buf, " />"); + + if (has_text) + { + child = node->children; + if (child->type == XML_TEXT_NODE) + { + /* text node */ + gaiaAppendToOutBuffer (buf, ">"); + gml_out (buf, child->content); + gaiaAppendToOutBuffer (buf, "ns; + namespace = NULL; + if (ns != NULL) + namespace = ns->prefix; + if (namespace) + { + gml_out (buf, namespace); + gaiaAppendToOutBuffer (buf, ":"); + } + gml_out (buf, node->name); + gaiaAppendToOutBuffer (buf, ">"); + } + } + if (has_children) + { + /* recursively expanding all children */ + gaiaAppendToOutBuffer (buf, ">"); + reassemble_gml (node->children, buf); + gaiaAppendToOutBuffer (buf, "ns; + namespace = NULL; + if (ns != NULL) + namespace = ns->prefix; + if (namespace) + { + gml_out (buf, namespace); + gaiaAppendToOutBuffer (buf, ":"); + } + gml_out (buf, node->name); + gaiaAppendToOutBuffer (buf, ">"); + } + } + node = node->next; + } +} + +static void +set_feature_geom (xmlNodePtr node, struct wfs_layer_schema *schema) +{ +/* saving the feature's geometry value */ + gaiaOutBuffer gml; + gaiaOutBufferInitialize (&gml); + + /* reassembling the GML expression */ + reassemble_gml (node, &gml); + if (gml.Buffer != NULL) + { + if (schema->geometry_value != NULL) + free (schema->geometry_value); + schema->geometry_value = gml.Buffer; + } +} + +static void +set_feature_value (xmlNodePtr node, struct wfs_column_def *col) +{ +/* saving an attribute value */ + if (node == NULL) + return; + if (node->type == XML_TEXT_NODE) + col->pValue = (const char *) (node->content); +} + +static void +check_feature_value (xmlNodePtr node, struct wfs_layer_schema *schema) +{ +/* attempting to extract an attribute value */ + struct wfs_column_def *col; + if (strcmp ((const char *) (node->name), schema->geometry_name) == 0) + { + set_feature_geom (node->children, schema); + return; + } + col = schema->first; + while (col != NULL) + { + if (strcmp ((const char *) (node->name), col->name) == 0) + { + set_feature_value (node->children, col); + return; + } + col = col->next; + } +} + +static int +test_effective_geom (struct wfs_layer_schema *schema, int *type, int *cast_type, + int *cast_dims) +{ +/* testing the effective GeometryType and dims */ + int pts = 0; + int lns = 0; + int pgs = 0; + int mpts = 0; + int mlns = 0; + int mpgs = 0; + int colls = 0; + int dims_xy = 0; + int dims_xyz = 0; + int dims_xym = 0; + int dims_xyzm = 0; + int dims = GAIA_XY; + int i; + for (i = 0; i < MAX_GTYPES; i++) + { + struct wfs_geom_type *p = schema->types + i; + switch (p->type) + { + case GAIA_POINT: + case GAIA_POINTZ: + case GAIA_POINTM: + case GAIA_POINTZM: + pts += p->count; + break; + case GAIA_LINESTRING: + case GAIA_LINESTRINGZ: + case GAIA_LINESTRINGM: + case GAIA_LINESTRINGZM: + lns += p->count; + break; + case GAIA_POLYGON: + case GAIA_POLYGONZ: + case GAIA_POLYGONM: + case GAIA_POLYGONZM: + pgs += p->count; + break; + case GAIA_MULTIPOINT: + case GAIA_MULTIPOINTZ: + case GAIA_MULTIPOINTM: + case GAIA_MULTIPOINTZM: + mpts += p->count; + break; + case GAIA_MULTILINESTRING: + case GAIA_MULTILINESTRINGZ: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTILINESTRINGZM: + mlns += p->count; + break; + case GAIA_MULTIPOLYGON: + case GAIA_MULTIPOLYGONZ: + case GAIA_MULTIPOLYGONM: + case GAIA_MULTIPOLYGONZM: + mpgs += p->count; + break; + case GAIA_GEOMETRYCOLLECTION: + case GAIA_GEOMETRYCOLLECTIONZ: + case GAIA_GEOMETRYCOLLECTIONM: + case GAIA_GEOMETRYCOLLECTIONZM: + colls += p->count; + break; + }; + if (p->count > 0) + { + switch (p->type) + { + case GAIA_POINT: + case GAIA_LINESTRING: + case GAIA_POLYGON: + case GAIA_MULTIPOINT: + case GAIA_MULTILINESTRING: + case GAIA_MULTIPOLYGON: + case GAIA_GEOMETRYCOLLECTION: + dims_xy++; + break; + case GAIA_POINTZ: + case GAIA_LINESTRINGZ: + case GAIA_POLYGONZ: + case GAIA_MULTIPOINTZ: + case GAIA_MULTILINESTRINGZ: + case GAIA_MULTIPOLYGONZ: + case GAIA_GEOMETRYCOLLECTIONZ: + dims_xyz++; + break; + case GAIA_POINTM: + case GAIA_LINESTRINGM: + case GAIA_POLYGONM: + case GAIA_MULTIPOINTM: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTIPOLYGONM: + case GAIA_GEOMETRYCOLLECTIONM: + dims_xym++; + break; + case GAIA_POINTZM: + case GAIA_LINESTRINGZM: + case GAIA_POLYGONZM: + case GAIA_MULTIPOINTZM: + case GAIA_MULTILINESTRINGZM: + case GAIA_MULTIPOLYGONZM: + case GAIA_GEOMETRYCOLLECTIONZM: + dims_xyzm++; + break; + }; + } + } + if (dims_xy > 0 && dims_xyz == 0 && dims_xym == 0 && dims_xyzm == 0) + dims = GAIA_XY; + if (dims_xyz > 0 && dims_xym == 0 && dims_xyzm == 0) + dims = GAIA_XY_Z; + if (dims_xyz == 0 && dims_xym > 0 && dims_xyzm == 0) + dims = GAIA_XY_M; + if (dims_xyzm > 0) + dims = GAIA_XY_Z_M; + *cast_dims = 0; + if (dims_xy > 0 && dims == GAIA_XY_Z) + *cast_dims = 1; + if (dims_xy > 0 && dims == GAIA_XY_M) + *cast_dims = 1; + if ((dims_xy > 0 || dims_xyz > 0 || dims_xym > 0) && dims == GAIA_XY_Z_M) + *cast_dims = 1; + if (pts > 0 && lns == 0 && pgs == 0 && mpts == 0 && mlns == 0 && mpgs == 0 + && colls == 0) + { + if (dims == GAIA_XY_Z_M) + *type = GAIA_POINTZM; + else if (dims == GAIA_XY_Z) + *type = GAIA_POINTZ; + else if (dims == GAIA_XY_M) + *type = GAIA_POINTM; + else + *type = GAIA_POINT; + *cast_type = 0; + return 1; + } + if (pts == 0 && lns > 0 && pgs == 0 && mpts == 0 && mlns == 0 && mpgs == 0 + && colls == 0) + { + if (dims == GAIA_XY_Z_M) + *type = GAIA_LINESTRINGZM; + else if (dims == GAIA_XY_Z) + *type = GAIA_LINESTRINGZ; + else if (dims == GAIA_XY_M) + *type = GAIA_LINESTRINGM; + else + *type = GAIA_LINESTRING; + *cast_type = 0; + return 1; + } + if (pts == 0 && lns == 0 && pgs > 0 && mpts == 0 && mlns == 0 && mpgs == 0 + && colls == 0) + { + if (dims == GAIA_XY_Z_M) + *type = GAIA_POLYGONZM; + else if (dims == GAIA_XY_Z) + *type = GAIA_POLYGONZ; + else if (dims == GAIA_XY_M) + *type = GAIA_POLYGONM; + else + *type = GAIA_POLYGON; + *cast_type = 0; + return 1; + } + if ((pts > 0 || mpts > 0) && lns == 0 && pgs == 0 && mlns == 0 && mpgs == 0 + && colls == 0) + { + if (dims == GAIA_XY_Z_M) + *type = GAIA_MULTIPOINTZM; + else if (dims == GAIA_XY_Z) + *type = GAIA_MULTIPOINTZ; + else if (dims == GAIA_XY_M) + *type = GAIA_MULTIPOINTM; + else + *type = GAIA_MULTIPOINT; + if (pts > 0) + *cast_type = 1; + else + *cast_type = 0; + return 1; + } + if (pts == 0 && (lns > 0 || mlns > 0) && pgs == 0 && mpts == 0 && mpgs == 0 + && colls == 0) + { + if (dims == GAIA_XY_Z_M) + *type = GAIA_MULTILINESTRINGZM; + else if (dims == GAIA_XY_Z) + *type = GAIA_MULTILINESTRINGZ; + else if (dims == GAIA_XY_M) + *type = GAIA_MULTILINESTRINGM; + else + *type = GAIA_MULTILINESTRING; + if (lns > 0) + *cast_type = 1; + else + *cast_type = 0; + return 1; + } + if (pts == 0 && lns == 0 && (pgs > 0 || mpgs > 0) && mpts == 0 && mlns == 0 + && colls == 0) + { + if (dims == GAIA_XY_Z_M) + *type = GAIA_MULTIPOLYGONZM; + else if (dims == GAIA_XY_Z) + *type = GAIA_MULTIPOLYGONZ; + else if (dims == GAIA_XY_M) + *type = GAIA_MULTIPOLYGONM; + else + *type = GAIA_MULTIPOLYGON; + if (pgs > 0) + *cast_type = 1; + else + *cast_type = 0; + return 1; + } + if (dims == GAIA_XY_Z_M) + *type = GAIA_GEOMETRYCOLLECTIONZM; + else if (dims == GAIA_XY_Z) + *type = GAIA_GEOMETRYCOLLECTIONZ; + else if (dims == GAIA_XY_M) + *type = GAIA_GEOMETRYCOLLECTIONM; + else + *type = GAIA_GEOMETRYCOLLECTION; + if (pts > 0 || lns > 0 || pgs > 0 || mpts > 0 || mlns > 0 || mpgs > 0) + *cast_type = 1; + else + *cast_type = 0; + return 1; +} + +static int +parse_wfs_single_feature (xmlNodePtr node, struct wfs_layer_schema *schema) +{ +/* attempting to extract data corresponding to a single feature */ + xmlNodePtr cur_node = NULL; + int cnt = 0; + + reset_wfs_values (schema); + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + check_feature_value (cur_node, schema); + } + cnt = count_wfs_values (schema); + return cnt; +} + +static int +check_real_type (struct wfs_layer_schema *schema, int *type, int *cast_type, + int *cast_dims) +{ +/* attempting to assign a more precise GeometryType */ + int xtype; + if (test_effective_geom (schema, &xtype, cast_type, cast_dims)) + { + *type = xtype; + return 1; + } + return 0; +} + +static void +update_geom_stats (struct wfs_layer_schema *schema, int type) +{ +/* updating the type statistics */ + int i; + if (schema->geometry_type != GAIA_GEOMETRYCOLLECTION) + return; + for (i = 0; i < MAX_GTYPES; i++) + { + struct wfs_geom_type *p = schema->types + i; + if (p->type == type) + { + p->count += 1; + return; + } + } +} + +static int +do_insert (struct wfs_layer_schema *schema, char **err_msg) +{ +/* inserting a row into the target table */ + int ret; + int ind = 1; + sqlite3_stmt *stmt = schema->stmt; + struct wfs_column_def *col; + + if (stmt == NULL || schema->error) + { + schema->error = 1; + return 0; + } + +/* binding */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + col = schema->first; + while (col != NULL) + { + if (col->pValue == NULL) + sqlite3_bind_null (stmt, ind); + else + { + if (col->type == SQLITE_INTEGER) + { + sqlite3_int64 val = atoll (col->pValue); + sqlite3_bind_int64 (stmt, ind, val); + } + else if (col->type == SQLITE_FLOAT) + { + double val = atof (col->pValue); + sqlite3_bind_double (stmt, ind, val); + } + else + sqlite3_bind_text (stmt, ind, col->pValue, + strlen (col->pValue), SQLITE_STATIC); + } + ind++; + col = col->next; + } + if (schema->geometry_name != NULL) + { + /* we have a Geometry column */ + if (schema->geometry_value != NULL) + { + /* preparing the Geometry value */ + gaiaGeomCollPtr geom = + gaiaParseGml ((unsigned char *) (schema->geometry_value), + schema->sqlite); + if (geom == NULL) + sqlite3_bind_null (stmt, ind); + else + { + unsigned char *blob; + int blob_size; + int type = gaiaGeometryType (geom); + if (type == GAIA_POINT + && schema->geometry_type == GAIA_MULTIPOINT) + { + /* promoting to MultiPoint */ + geom->DeclaredType = GAIA_MULTIPOINT; + } + if (type == GAIA_LINESTRING + && schema->geometry_type == GAIA_MULTILINESTRING) + { + /* promoting to MultiLinestring */ + geom->DeclaredType = GAIA_MULTILINESTRING; + } + if (type == GAIA_POLYGON + && schema->geometry_type == GAIA_MULTIPOLYGON) + { + /* promoting to MultiPolygon */ + geom->DeclaredType = GAIA_MULTIPOLYGON; + } + geom->Srid = schema->srid; + if (schema->swap_axes != 0) + gaiaSwapCoords (geom); + gaiaToSpatiaLiteBlobWkb (geom, &blob, &blob_size); + sqlite3_bind_blob (stmt, ind, blob, blob_size, free); + gaiaFreeGeomColl (geom); + update_geom_stats (schema, type); + } + } + else + sqlite3_bind_null (stmt, ind); + } + +/* inserting */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + return 1; + spatialite_e ("loadwfs INSERT error: <%s>\n", + sqlite3_errmsg (schema->sqlite)); + schema->error = 1; + if (err_msg == NULL) + ; + else + { + int len; + const char *err = sqlite3_errmsg (schema->sqlite); + if (*err_msg != NULL) + free (*err_msg); + len = strlen (err); + *err_msg = malloc (len + 1); + strcpy (*err_msg, err); + } + return 0; +} + +static void +save_attribute (struct wfs_feature *feature, struct wfs_column_def *col) +{ +/* saving an attribute value */ + struct wfs_attribute *attr = feature->first; + while (attr != NULL) + { + if (attr->column == col) + { + if (attr->value != NULL) + free (attr->value); + attr->value = NULL; + if (col->pValue != NULL) + { + int len = strlen (col->pValue); + attr->value = malloc (len + 1); + strcpy (attr->value, col->pValue); + } + return; + } + attr = attr->next; + } +} + +static int +do_save_feature (struct wfs_layer_schema *schema, struct wfs_feature *feature) +{ +/* saving the current feature data */ + struct wfs_column_def *col; + + if (schema->error) + { + schema->error = 1; + return 0; + } + + reset_feature (feature); + col = schema->first; + while (col != NULL) + { + save_attribute (feature, col); + col = col->next; + } + if (schema->geometry_name != NULL) + { + /* we have a Geometry column */ + if (schema->geometry_value != NULL) + { + int len = strlen (schema->geometry_value); + feature->geometry_value = malloc (len + 1); + strcpy (feature->geometry_value, schema->geometry_value); + } + } + return 1; +} + +static void +parse_wfs_features (xmlNodePtr node, struct wfs_layer_schema *schema, int *rows, + char **err_msg) +{ +/* recursively parsing the GML payload */ + xmlNodePtr cur_node = NULL; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + char *entity_name; + if (cur_node->ns != NULL) + entity_name = + sqlite3_mprintf ("%s:%s", cur_node->ns->prefix, + cur_node->name); + else + entity_name = sqlite3_mprintf ("%s", cur_node->name); + if (strcmp (schema->layer_name, entity_name) == 0 + || strcmp (schema->layer_name, + (const char *) (cur_node->name)) == 0) + { + if (parse_wfs_single_feature (cur_node->children, schema)) + { + if (schema->error == 0) + { + if (do_insert (schema, err_msg)) + *rows += 1; + } + } + } + else + parse_wfs_features (cur_node->children, schema, rows, + err_msg); + sqlite3_free (entity_name); + } + } +} + +static void +parse_wfs_last_feature (xmlNodePtr node, struct wfs_layer_schema *schema, + struct wfs_feature *feature, int *rows) +{ +/* recursively parsing the GML payload */ + xmlNodePtr cur_node = NULL; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (parse_wfs_single_feature (cur_node, schema)) + { + if (schema->error == 0) + { + if (do_save_feature (schema, feature)) + *rows += 1; + } + return; + } + else + parse_wfs_last_feature (cur_node->children, schema, feature, + rows); + } + } +} + +static int +sniff_feature_value (xmlNodePtr node, struct wfs_layer_schema *schema, + xmlNodePtr * geom) +{ +/* sniffing attribute values */ + struct wfs_column_def *col; + if (strcmp ((const char *) (node->name), schema->geometry_name) == 0) + { + *geom = node->children; + return 1; + } + col = schema->first; + while (col != NULL) + { + if (strcmp ((const char *) (node->name), col->name) == 0) + return 1; + col = col->next; + } + return 0; +} + +static int +parse_srsname (xmlNodePtr node) +{ +/* parsing the srsName string */ + if (node != NULL) + { + if (node->type == XML_TEXT_NODE) + { + int len = strlen ((const char *) (node->content)); + const char *end = (const char *) (node->content) + len; + const char *p = end; + if (len > 0) + { + p--; + while (p >= (char *) (node->content)) + { + if (*p >= '0' && *p <= '9') + { + p--; + continue; + } + if (p + 1 < end) + return atoi (p + 1); + } + } + } + } + return -1; +} + +static int +parse_dimension (xmlNodePtr node) +{ +/* parsing the dimension string */ + if (node != NULL) + { + if (node->type == XML_TEXT_NODE) + return atoi ((const char *) (node->content)); + } + return 2; +} + +static void +sniff_gml_geometry (xmlNodePtr node, struct wfs_layer_schema *schema) +{ +/* attempting to identify the Srid and dimension from a GML geometry */ + xmlNodePtr cur_node = NULL; + if (node == NULL) + return; + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + struct _xmlAttr *attr; + attr = cur_node->properties; + while (attr != NULL) + { + if (attr->name != NULL) + { + if (strcmp ((const char *) (attr->name), "srsName") + == 0) + schema->srid = parse_srsname (attr->children); + if (strcmp + ((const char *) (attr->name), "dimension") == 0) + schema->dims = parse_dimension (attr->children); + } + attr = attr->next; + } + sniff_gml_geometry (cur_node->children, schema); + } + } +} + +static int +sniff_wfs_single_feature (xmlNodePtr node, struct wfs_layer_schema *schema) +{ +/* attempting to sniff data corresponding to a single feature */ + xmlNodePtr cur_node = NULL; + int cnt = 0; + xmlNodePtr geom = NULL; + + reset_wfs_values (schema); + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + cnt += sniff_feature_value (cur_node, schema, &geom); + } + if (cnt > 0 && geom != NULL) + { + sniff_gml_geometry (geom, schema); + return 1; + } + return 0; +} + +static void +sniff_geometries (xmlNodePtr node, struct wfs_layer_schema *schema, + int *sniffed) +{ +/* recursively parsing the GML payload so to sniff the first geometry */ + xmlNodePtr cur_node = NULL; + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (*sniffed) + return; + if (sniff_wfs_single_feature (cur_node, schema)) + { + *sniffed = 1; + return; + } + else + sniff_geometries (cur_node->children, schema, sniffed); + } + } +} + +static int +check_pk_name (struct wfs_layer_schema *schema, const char *pk_column_name, + char *auto_pk_name) +{ +/* handling the PK name */ + int num = 0; + char pk_candidate[1024]; + struct wfs_column_def *col; + if (pk_column_name == NULL) + goto check_auto; + col = schema->first; + while (col != NULL) + { + /* checking if the required PK does really exists */ + if (strcasecmp (col->name, pk_column_name) == 0) + return 1; + col = col->next; + } + check_auto: + strcpy (pk_candidate, auto_pk_name); + while (1) + { + /* ensuring to return a not ambiguous PK name */ + int ok = 1; + col = schema->first; + while (col != NULL) + { + /* checking if the PK candidate isn't already defined */ + if (strcasecmp (col->name, pk_candidate) == 0) + { + ok = 0; + break; + } + col = col->next; + } + if (ok) + { + strcpy (auto_pk_name, pk_candidate); + break; + } + sprintf (pk_candidate, "%s_%d", auto_pk_name, num); + num++; + } + return 0; +} + +static int +prepare_sql (sqlite3 * sqlite, struct wfs_layer_schema *schema, + const char *table, const char *pk_column_name, int spatial_index, + char **err_msg) +{ +/* creating the output table and preparing the insert statement */ + int len; + int ret; + char *errMsg = NULL; + gaiaOutBuffer sql; + char *sql2; + char *quoted; + struct wfs_column_def *col; + char auto_pk_name[1024]; + int is_auto_pk = 0; + int comma = 0; + sqlite3_stmt *stmt = NULL; + +/* attempting to create the SQL Table */ + gaiaOutBufferInitialize (&sql); + quoted = gaiaDoubleQuotedSql (table); + sql2 = sqlite3_mprintf ("CREATE TABLE \"%s\" (\n", quoted); + free (quoted); + gaiaAppendToOutBuffer (&sql, sql2); + sqlite3_free (sql2); + if (pk_column_name == NULL) + strcpy (auto_pk_name, "pk_uid"); + else + { + /* Even Rouault 2013-06-02 - avoiding a potential buffer overflow */ + if (strlen (pk_column_name) >= sizeof (auto_pk_name) - 1) + return 0; + /* END - Even Rouault 2013-06-02 */ + strcpy (auto_pk_name, pk_column_name); + } + if (!check_pk_name (schema, pk_column_name, auto_pk_name)) + { + /* defining a default Primary Key */ + is_auto_pk = 1; + quoted = gaiaDoubleQuotedSql (auto_pk_name); + sql2 = + sqlite3_mprintf ("\t\"%s\" INTEGER PRIMARY KEY AUTOINCREMENT", + quoted); + comma = 1; + free (quoted); + gaiaAppendToOutBuffer (&sql, sql2); + sqlite3_free (sql2); + } + col = schema->first; + while (col != NULL) + { + const char *type = "TEXT"; + if (comma) + { + gaiaAppendToOutBuffer (&sql, ",\n"); + comma = 0; + } + if (col->type == SQLITE_INTEGER) + type = "INTEGER"; + if (col->type == SQLITE_FLOAT) + type = "DOUBLE"; + quoted = gaiaDoubleQuotedSql (col->name); + if (!is_auto_pk) + { + /* there is an explicitly defined PK */ + if (strcasecmp (col->name, pk_column_name) == 0) + { + /* ok, we've found the PK column */ + if (col == schema->last) + sql2 = + sqlite3_mprintf ("\t\"%s\" %s PRIMARY KEY", + quoted, type); + else + sql2 = + sqlite3_mprintf ("\t\"%s\" %s PRIMARY KEY,\n", + quoted, type); + free (quoted); + gaiaAppendToOutBuffer (&sql, sql2); + sqlite3_free (sql2); + col = col->next; + continue; + } + } + if (col == schema->last) + { + if (col->is_nullable) + sql2 = sqlite3_mprintf ("\t\"%s\" %s", quoted, type); + else + sql2 = + sqlite3_mprintf ("\t\"%s\" %s NOT NULL", quoted, type); + } + else + { + if (col->is_nullable) + sql2 = sqlite3_mprintf ("\t\"%s\" %s,\n", quoted, type); + else + sql2 = + sqlite3_mprintf ("\t\"%s\" %s NOT NULL,\n", quoted, + type); + } + free (quoted); + gaiaAppendToOutBuffer (&sql, sql2); + sqlite3_free (sql2); + col = col->next; + } + gaiaAppendToOutBuffer (&sql, ")"); + ret = sqlite3_exec (sqlite, sql.Buffer, NULL, NULL, &errMsg); + gaiaOutBufferReset (&sql); + if (ret != SQLITE_OK) + { + spatialite_e ("loadwfs: CREATE TABLE '%s' error: %s\n", table, + errMsg); + schema->error = 1; + if (err_msg == NULL) + { + sqlite3_free (errMsg); + return 0; + } + len = strlen (errMsg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, errMsg); + sqlite3_free (errMsg); + return 0; + } + + if (schema->geometry_name != NULL) + { + /* creating the Geometry column */ + const char *gType = "GEOMETRY"; + const char *gDims = "XY"; + switch (schema->geometry_type) + { + case GAIA_POINT: + gType = "POINT"; + break; + case GAIA_LINESTRING: + gType = "LINESTRING"; + break; + case GAIA_POLYGON: + gType = "POLYGON"; + break; + case GAIA_MULTIPOINT: + gType = "MULTIPOINT"; + break; + case GAIA_MULTILINESTRING: + gType = "MULTILINESTRING"; + break; + case GAIA_MULTIPOLYGON: + gType = "MULTIPOLYGON"; + break; + }; + if (schema->dims == 3) + gDims = "XYZ"; + sql2 = + sqlite3_mprintf ("SELECT AddGeometryColumn(%Q, %Q, %d, %Q, %Q)", + table, schema->geometry_name, schema->srid, + gType, gDims); + gaiaAppendToOutBuffer (&sql, sql2); + sqlite3_free (sql2); + ret = sqlite3_exec (sqlite, sql.Buffer, NULL, NULL, &errMsg); + gaiaOutBufferReset (&sql); + if (ret != SQLITE_OK) + { + spatialite_e ("loadwfs: AddGeometryColumn error: %s\n", errMsg); + schema->error = 1; + if (err_msg == NULL) + { + sqlite3_free (errMsg); + return 0; + } + len = strlen (errMsg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, errMsg); + return 0; + } + if (spatial_index) + { + /* creating the Spatial Index */ + sql2 = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, %Q)", + table, schema->geometry_name); + gaiaAppendToOutBuffer (&sql, sql2); + sqlite3_free (sql2); + ret = sqlite3_exec (sqlite, sql.Buffer, NULL, NULL, &errMsg); + gaiaOutBufferReset (&sql); + if (ret != SQLITE_OK) + { + spatialite_e ("loadwfs: CreateSpatialIndex error: %s\n", + errMsg); + schema->error = 1; + if (err_msg == NULL) + { + sqlite3_free (errMsg); + return 0; + } + len = strlen (errMsg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, errMsg); + return 0; + } + } + } + +/* creating the INSERT statement */ + quoted = gaiaDoubleQuotedSql (table); + sql2 = sqlite3_mprintf ("INSERT INTO \"%s\" (\n", quoted); + free (quoted); + gaiaAppendToOutBuffer (&sql, sql2); + sqlite3_free (sql2); + if (is_auto_pk) + { + /* the auto-generated PK column */ + quoted = gaiaDoubleQuotedSql (auto_pk_name); + sql2 = sqlite3_mprintf ("\"%s\", ", quoted); + free (quoted); + gaiaAppendToOutBuffer (&sql, sql2); + sqlite3_free (sql2); + } + col = schema->first; + while (col != NULL) + { + /* column names */ + quoted = gaiaDoubleQuotedSql (col->name); + if (col == schema->last && schema->geometry_name == NULL) + sql2 = sqlite3_mprintf ("\"%s\") VALUES (", quoted); + else + sql2 = sqlite3_mprintf ("\"%s\", ", quoted); + free (quoted); + gaiaAppendToOutBuffer (&sql, sql2); + sqlite3_free (sql2); + col = col->next; + } + if (schema->geometry_name != NULL) + { + /* the geometry column name */ + quoted = gaiaDoubleQuotedSql (schema->geometry_name); + sql2 = sqlite3_mprintf ("\"%s\") VALUES (", quoted); + free (quoted); + gaiaAppendToOutBuffer (&sql, sql2); + sqlite3_free (sql2); + } + if (is_auto_pk) + { + /* there is an AUTOINCREMENT PK */ + gaiaAppendToOutBuffer (&sql, "NULL, "); + } + col = schema->first; + while (col != NULL) + { + if (col == schema->last && schema->geometry_name == NULL) + gaiaAppendToOutBuffer (&sql, "?)"); + else + gaiaAppendToOutBuffer (&sql, "?, "); + col = col->next; + } + if (schema->geometry_name != NULL) + gaiaAppendToOutBuffer (&sql, "?)"); + ret = + sqlite3_prepare_v2 (sqlite, sql.Buffer, strlen (sql.Buffer), &stmt, + NULL); + gaiaOutBufferReset (&sql); + if (ret != SQLITE_OK) + { + errMsg = (char *) sqlite3_errmsg (sqlite); + spatialite_e ("loadwfs: \"%s\"\n", errMsg); + schema->error = 1; + if (err_msg == NULL) + return 0; + len = strlen (errMsg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, errMsg); + return 0; + } + schema->stmt = stmt; + schema->sqlite = sqlite; + +/* starting an SQL Transaction */ + if (sqlite3_exec (sqlite, "BEGIN", NULL, NULL, &errMsg) != SQLITE_OK) + { + spatialite_e ("loadwfs: BEGIN error:\"%s\"\n", errMsg); + schema->error = 1; + if (err_msg == NULL) + { + sqlite3_free (errMsg); + return 0; + } + len = strlen (errMsg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, errMsg); + sqlite3_free (errMsg); + } + if (schema->error) + return 0; + return 1; +} + +static void +restart_transaction (sqlite3 * sqlite) +{ +/* confirming the still pendenting SQL transaction */ + char *errMsg = NULL; + if (sqlite3_exec (sqlite, "COMMIT", NULL, NULL, &errMsg) != SQLITE_OK) + { + spatialite_e ("loadwfs: COMMIT error:\"%s\"\n", errMsg); + sqlite3_free (errMsg); + } +/* restarting a further transaction */ + if (sqlite3_exec (sqlite, "BEGIN", NULL, NULL, &errMsg) != SQLITE_OK) + { + spatialite_e ("loadwfs: BEGIN error:\"%s\"\n", errMsg); + sqlite3_free (errMsg); + } +} + +static void +do_commit (sqlite3 * sqlite, struct wfs_layer_schema *schema) +{ +/* confirming the still pendenting SQL transaction */ + char *errMsg = NULL; + sqlite3_finalize (schema->stmt); + schema->stmt = NULL; + if (sqlite3_exec (sqlite, "COMMIT", NULL, NULL, &errMsg) != SQLITE_OK) + { + spatialite_e ("loadwfs: COMMIT error:\"%s\"\n", errMsg); + sqlite3_free (errMsg); + schema->error = 1; + } +} + +static void +do_rollback (sqlite3 * sqlite, struct wfs_layer_schema *schema) +{ +/* invalidating the still pending SQL transaction */ + char *errMsg = NULL; + sqlite3_finalize (schema->stmt); + schema->stmt = NULL; + if (sqlite3_exec (sqlite, "ROLLBACK", NULL, NULL, &errMsg) != SQLITE_OK) + { + spatialite_e ("loadwfs: ROLLBACK error:\"%s\"\n", errMsg); + sqlite3_free (errMsg); + schema->error = 1; + } +} + +SPATIALITE_DECLARE int +load_from_wfs (sqlite3 * sqlite, const char *path_or_url, + const char *alt_describe_uri, const char *layer_name, + int swap_axes, const char *table, const char *pk_column_name, + int spatial_index, int *rows, char **err_msg, + void (*progress_callback) (int, void *), void *callback_ptr) +{ +/* attempting to load data from some WFS source [not-paged] */ + return load_from_wfs_paged (sqlite, path_or_url, alt_describe_uri, + layer_name, swap_axes, table, pk_column_name, + spatial_index, -1, rows, err_msg, + progress_callback, callback_ptr); +} + +static int +test_wfs_paging (const char *path_or_url, int page_size, xmlNodePtr node, + struct wfs_layer_schema *schema, int *shift_index) +{ +/* testing if the server does actually supports STARTINDEX */ + xmlDocPtr xml_doc = NULL; + xmlNodePtr root; + char *page_url; + int nRows = 0; + struct wfs_feature *feature_1 = create_feature (schema); + struct wfs_feature *feature_2 = create_feature (schema); + *shift_index = 0; + parse_wfs_last_feature (node, schema, feature_1, &nRows); + if (nRows < page_size) + { + /* a single page is required: this means no-paging at all */ + free_feature (feature_1); + return 1; + } + +/* loading the feature to be tested */ + page_url = sqlite3_mprintf ("%s&maxFeatures=1&startIndex=%d", + path_or_url, page_size - 1); + xml_doc = xmlReadFile (page_url, NULL, 0); + sqlite3_free (page_url); + if (xml_doc == NULL) + goto error; + /* parsing the WFS payload */ + root = xmlDocGetRootElement (xml_doc); + nRows = 0; + parse_wfs_last_feature (root, schema, feature_2, &nRows); + if (!compare_features (feature_1, feature_2)) + { + reset_feature (feature_2); + if (xml_doc != NULL) + xmlFreeDoc (xml_doc); + goto second_chance; + } + free_feature (feature_1); + free_feature (feature_2); + if (xml_doc != NULL) + xmlFreeDoc (xml_doc); + return 1; + +/* for some MapServer version the first Index is 1, not 0 */ + second_chance: + page_url = sqlite3_mprintf ("%s&maxFeatures=1&startIndex=%d", + path_or_url, page_size); + xml_doc = xmlReadFile (page_url, NULL, 0); + sqlite3_free (page_url); + if (xml_doc == NULL) + goto error; + /* parsing the WFS payload */ + root = xmlDocGetRootElement (xml_doc); + nRows = 0; + parse_wfs_last_feature (root, schema, feature_2, &nRows); + if (!compare_features (feature_1, feature_2)) + goto error; + free_feature (feature_1); + free_feature (feature_2); + if (xml_doc != NULL) + xmlFreeDoc (xml_doc); + *shift_index = 1; + return 1; + error: + free_feature (feature_1); + free_feature (feature_2); + if (xml_doc != NULL) + xmlFreeDoc (xml_doc); + return 0; +} + +static void +do_adjust_geoms (sqlite3 * sqlite, const char *table, const char *geometry, + int type, int cast_type, int cast_dims) +{ +/* final adjustement for GeometryType and dims */ + char *errMsg = NULL; + char *xtable; + char *xgeom; + char *xopen; + char *xclose; + char *sql; + int ret; + int dims; + int metadata_version = checkSpatialMetaData (sqlite); + +/* starting a transaction */ + if (sqlite3_exec (sqlite, "BEGIN", NULL, NULL, &errMsg) != SQLITE_OK) + { + spatialite_e ("loadwfs: BEGIN error:\"%s\"\n", errMsg); + sqlite3_free (errMsg); + } + + if (cast_type || cast_dims) + { + xtable = gaiaDoubleQuotedSql (table); + xgeom = gaiaDoubleQuotedSql (geometry); + /* settting the dimension model */ + switch (type) + { + case GAIA_POINT: + case GAIA_LINESTRING: + case GAIA_POLYGON: + case GAIA_MULTIPOINT: + case GAIA_MULTILINESTRING: + case GAIA_MULTIPOLYGON: + case GAIA_GEOMETRYCOLLECTION: + dims = GAIA_XY; + break; + case GAIA_POINTZ: + case GAIA_LINESTRINGZ: + case GAIA_POLYGONZ: + case GAIA_MULTIPOINTZ: + case GAIA_MULTILINESTRINGZ: + case GAIA_MULTIPOLYGONZ: + case GAIA_GEOMETRYCOLLECTIONZ: + dims = GAIA_XY_Z; + break; + case GAIA_POINTM: + case GAIA_LINESTRINGM: + case GAIA_POLYGONM: + case GAIA_MULTIPOINTM: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTIPOLYGONM: + case GAIA_GEOMETRYCOLLECTIONM: + dims = GAIA_XY_M; + break; + case GAIA_POINTZM: + case GAIA_LINESTRINGZM: + case GAIA_POLYGONZM: + case GAIA_MULTIPOINTZM: + case GAIA_MULTILINESTRINGZM: + case GAIA_MULTIPOLYGONZM: + case GAIA_GEOMETRYCOLLECTIONZM: + dims = GAIA_XY_Z_M; + break; + }; + /*preparing the SQL UPDATE statement */ + switch (type) + { + case GAIA_POINT: + case GAIA_POINTZ: + case GAIA_POINTM: + case GAIA_POINTZM: + if (cast_type && !cast_dims) + { + xopen = "CastToPoint("; + xclose = ")"; + } + else if (!cast_type && cast_dims) + { + switch (dims) + { + case GAIA_XY: + xopen = "CastToXY("; + xclose = ")"; + break; + case GAIA_XY_Z: + xopen = "CastToXYZ("; + xclose = ")"; + break; + case GAIA_XY_M: + xopen = "CastToXYM("; + xclose = ")"; + break; + case GAIA_XY_Z_M: + xopen = "CastToXYZM("; + xclose = ")"; + break; + }; + } + else + { + switch (dims) + { + case GAIA_XY: + xopen = "CastToPoint(CastToXY("; + xclose = "))"; + break; + case GAIA_XY_Z: + xopen = "CastToPoint(CastToXYZ("; + xclose = "))"; + break; + case GAIA_XY_M: + xopen = "CastToPoint(CastToXYM("; + xclose = "))"; + break; + case GAIA_XY_Z_M: + xopen = "CastToPoint(CastToXYZM("; + xclose = "))"; + break; + }; + } + break; + case GAIA_LINESTRING: + case GAIA_LINESTRINGZ: + case GAIA_LINESTRINGM: + case GAIA_LINESTRINGZM: + if (cast_type && !cast_dims) + { + xopen = "CastToLinestring("; + xclose = ")"; + } + else if (!cast_type && cast_dims) + { + switch (dims) + { + case GAIA_XY: + xopen = "CastToXY("; + xclose = ")"; + break; + case GAIA_XY_Z: + xopen = "CastToXYZ("; + xclose = ")"; + break; + case GAIA_XY_M: + xopen = "CastToXYM("; + xclose = ")"; + break; + case GAIA_XY_Z_M: + xopen = "CastToXYZM("; + xclose = ")"; + break; + }; + } + else + { + switch (dims) + { + case GAIA_XY: + xopen = "CastToLinestring(CastToXY("; + xclose = "))"; + break; + case GAIA_XY_Z: + xopen = "CastToLinestring(CastToXYZ("; + xclose = "))"; + break; + case GAIA_XY_M: + xopen = "CastToLinestring(CastToXYM("; + xclose = "))"; + break; + case GAIA_XY_Z_M: + xopen = "CastToLinestring(CastToXYZM("; + xclose = "))"; + break; + }; + } + break; + case GAIA_POLYGON: + case GAIA_POLYGONZ: + case GAIA_POLYGONM: + case GAIA_POLYGONZM: + if (cast_type && !cast_dims) + { + xopen = "CastToPolygon("; + xclose = ")"; + } + else if (!cast_type && cast_dims) + { + switch (dims) + { + case GAIA_XY: + xopen = "CastToXY("; + xclose = ")"; + break; + case GAIA_XY_Z: + xopen = "CastToXYZ("; + xclose = ")"; + break; + case GAIA_XY_M: + xopen = "CastToXYM("; + xclose = ")"; + break; + case GAIA_XY_Z_M: + xopen = "CastToXYZM("; + xclose = ")"; + break; + }; + } + else + { + switch (dims) + { + case GAIA_XY: + xopen = "CastToPolygon(CastToXY("; + xclose = "))"; + break; + case GAIA_XY_Z: + xopen = "CastToPolygon(CastToXYZ("; + xclose = "))"; + break; + case GAIA_XY_M: + xopen = "CastToPolygon(CastToXYM("; + xclose = "))"; + break; + case GAIA_XY_Z_M: + xopen = "CastToPolygon(CastToXYZM("; + xclose = "))"; + break; + }; + } + break; + case GAIA_MULTIPOINT: + case GAIA_MULTIPOINTZ: + case GAIA_MULTIPOINTM: + case GAIA_MULTIPOINTZM: + if (cast_type && !cast_dims) + { + xopen = "CastToMultiPoint("; + xclose = ")"; + } + else if (!cast_type && cast_dims) + { + switch (dims) + { + case GAIA_XY: + xopen = "CastToXY("; + xclose = ")"; + break; + case GAIA_XY_Z: + xopen = "CastToXYZ("; + xclose = ")"; + break; + case GAIA_XY_M: + xopen = "CastToXYM("; + xclose = ")"; + break; + case GAIA_XY_Z_M: + xopen = "CastToXYZM("; + xclose = ")"; + break; + }; + } + else + { + switch (dims) + { + case GAIA_XY: + xopen = "CastToMultiPoint(CastToXY("; + xclose = "))"; + break; + case GAIA_XY_Z: + xopen = "CastToMultiPoint(CastToXYZ("; + xclose = "))"; + break; + case GAIA_XY_M: + xopen = "CastToMultiPoint(CastToXYM("; + xclose = "))"; + break; + case GAIA_XY_Z_M: + xopen = "CastToMultiPoint(CastToXYZM("; + xclose = "))"; + break; + }; + } + break; + case GAIA_MULTILINESTRING: + case GAIA_MULTILINESTRINGZ: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTILINESTRINGZM: + if (cast_type && !cast_dims) + { + xopen = "CastToMultiLinestring("; + xclose = ")"; + } + else if (!cast_type && cast_dims) + { + switch (dims) + { + case GAIA_XY: + xopen = "CastToXY("; + xclose = ")"; + break; + case GAIA_XY_Z: + xopen = "CastToXYZ("; + xclose = ")"; + break; + case GAIA_XY_M: + xopen = "CastToXYM("; + xclose = ")"; + break; + case GAIA_XY_Z_M: + xopen = "CastToXYZM("; + xclose = ")"; + break; + }; + } + else + { + switch (dims) + { + case GAIA_XY: + xopen = "CastToMultiLinestring(CastToXY("; + xclose = "))"; + break; + case GAIA_XY_Z: + xopen = "CastToMultiLinestring(CastToXYZ("; + xclose = "))"; + break; + case GAIA_XY_M: + xopen = "CastToMultiLinestring(CastToXYM("; + xclose = "))"; + break; + case GAIA_XY_Z_M: + xopen = "CastToMultiLinestring(CastToXYZM("; + xclose = "))"; + break; + }; + } + break; + case GAIA_MULTIPOLYGON: + case GAIA_MULTIPOLYGONZ: + case GAIA_MULTIPOLYGONM: + case GAIA_MULTIPOLYGONZM: + if (cast_type && !cast_dims) + { + xopen = "CastToMultiPolygon("; + xclose = ")"; + } + else if (!cast_type && cast_dims) + { + switch (dims) + { + case GAIA_XY: + xopen = "CastToXY("; + xclose = ")"; + break; + case GAIA_XY_Z: + xopen = "CastToXYZ("; + xclose = ")"; + break; + case GAIA_XY_M: + xopen = "CastToXYM("; + xclose = ")"; + break; + case GAIA_XY_Z_M: + xopen = "CastToXYZM("; + xclose = ")"; + break; + }; + } + else + { + switch (dims) + { + case GAIA_XY: + xopen = "CastToMultiPolygon(CastToXY("; + xclose = "))"; + break; + case GAIA_XY_Z: + xopen = "CastToMultiPolygon(CastToXYZ("; + xclose = "))"; + break; + case GAIA_XY_M: + xopen = "CastToMultiPolygon(CastToXYM("; + xclose = "))"; + break; + case GAIA_XY_Z_M: + xopen = "CastToMultiPolygon(CastToXYZM("; + xclose = "))"; + break; + }; + } + break; + case GAIA_GEOMETRYCOLLECTION: + case GAIA_GEOMETRYCOLLECTIONZ: + case GAIA_GEOMETRYCOLLECTIONM: + case GAIA_GEOMETRYCOLLECTIONZM: + if (cast_type && !cast_dims) + { + xopen = "CastToGeometryCollection("; + xclose = ")"; + } + else if (!cast_type && cast_dims) + { + switch (dims) + { + case GAIA_XY: + xopen = "CastToXY("; + xclose = ")"; + break; + case GAIA_XY_Z: + xopen = "CastToXYZ("; + xclose = ")"; + break; + case GAIA_XY_M: + xopen = "CastToXYM("; + xclose = ")"; + break; + case GAIA_XY_Z_M: + xopen = "CastToXYZM("; + xclose = ")"; + break; + }; + } + else + { + switch (dims) + { + case GAIA_XY: + xopen = "CastToGeometryCollection(CastToXY("; + xclose = "))"; + break; + case GAIA_XY_Z: + xopen = "CastToGeometryCollection(CastToXYZ("; + xclose = "))"; + break; + case GAIA_XY_M: + xopen = "CastToGeometryCollection(CastToXYM("; + xclose = "))"; + break; + case GAIA_XY_Z_M: + xopen = "CastToGeometryCollection(CastToXYZM("; + xclose = "))"; + break; + }; + } + break; + }; + sql = sqlite3_mprintf ("UPDATE \"%s\" SET \"%s\" = %s\"%s\"%s", + xtable, xgeom, xopen, xgeom, xclose); + free (xtable); + free (xgeom); + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("loadwfs: UPDATE-GEOMS error:\"%s\"\n", errMsg); + sqlite3_free (errMsg); + } + } + +/* adjusting GeometryColumns */ + if (metadata_version == 1) + { + /* legacy metadata style <= v.3.1.0 */ + const char *pType; + const char *pDims; + switch (type) + { + case GAIA_POINT: + case GAIA_POINTZ: + case GAIA_POINTM: + case GAIA_POINTZM: + pType = "POINT"; + break; + case GAIA_LINESTRING: + case GAIA_LINESTRINGZ: + case GAIA_LINESTRINGM: + case GAIA_LINESTRINGZM: + pType = "LINESTRING"; + break; + case GAIA_POLYGON: + case GAIA_POLYGONZ: + case GAIA_POLYGONM: + case GAIA_POLYGONZM: + pType = "POLYGON"; + break; + case GAIA_MULTIPOINT: + case GAIA_MULTIPOINTZ: + case GAIA_MULTIPOINTM: + case GAIA_MULTIPOINTZM: + pType = "MULTIPOINT"; + break; + case GAIA_MULTILINESTRING: + case GAIA_MULTILINESTRINGZ: + case GAIA_MULTILINESTRINGM: + case GAIA_MULTILINESTRINGZM: + pType = "MULTILINESTRING"; + break; + case GAIA_MULTIPOLYGON: + case GAIA_MULTIPOLYGONZ: + case GAIA_MULTIPOLYGONM: + case GAIA_MULTIPOLYGONZM: + pType = "MULTIPOLYGON"; + break; + case GAIA_GEOMETRYCOLLECTION: + case GAIA_GEOMETRYCOLLECTIONZ: + case GAIA_GEOMETRYCOLLECTIONM: + case GAIA_GEOMETRYCOLLECTIONZM: + pType = "GEOMETRYCOLLECTION"; + break; + }; + switch (dims) + { + case GAIA_XY: + pDims = "XY"; + break; + case GAIA_XY_Z: + pDims = "XYZ"; + break; + case GAIA_XY_M: + pDims = "XYM"; + break; + case GAIA_XY_Z_M: + pDims = "XYZM"; + break; + }; + sql = sqlite3_mprintf ("UPDATE geometry_columns SET type = %Q, " + "coord_dimension = %Q WHERE Lower(f_table_name) = Lower(%Q) " + "AND Lower(f_geometry_column) = Lower(%Q)", + pType, pDims, table, geometry); + } + else + { + /* current metadata style >= v.4.0.0 */ + int nType = 0; + int nDims = 2; + switch (type) + { + case GAIA_POINT: + nType = 1; + break; + case GAIA_POINTZ: + nType = 1001; + break; + case GAIA_POINTM: + nType = 2001; + break; + case GAIA_POINTZM: + nType = 3001; + break; + case GAIA_LINESTRING: + nType = 2; + break; + case GAIA_LINESTRINGZ: + nType = 1002; + break; + case GAIA_LINESTRINGM: + nType = 2002; + break; + case GAIA_LINESTRINGZM: + nType = 3002; + break; + case GAIA_POLYGON: + nType = 3; + break; + case GAIA_POLYGONZ: + nType = 1003; + break; + case GAIA_POLYGONM: + nType = 2003; + break; + case GAIA_POLYGONZM: + nType = 3003; + break; + case GAIA_MULTIPOINT: + nType = 4; + break; + case GAIA_MULTIPOINTZ: + nType = 1004; + break; + case GAIA_MULTIPOINTM: + nType = 2004; + case GAIA_MULTIPOINTZM: + nType = 3004; + break; + case GAIA_MULTILINESTRING: + nType = 5; + break; + case GAIA_MULTILINESTRINGZ: + nType = 1005; + break; + case GAIA_MULTILINESTRINGM: + nType = 2005; + case GAIA_MULTILINESTRINGZM: + nType = 3005; + break; + case GAIA_MULTIPOLYGON: + nType = 6; + break; + case GAIA_MULTIPOLYGONZ: + nType = 1006; + break; + case GAIA_MULTIPOLYGONM: + nType = 2006; + break; + case GAIA_MULTIPOLYGONZM: + nType = 3006; + break; + case GAIA_GEOMETRYCOLLECTION: + nType = 7; + break; + case GAIA_GEOMETRYCOLLECTIONZ: + nType = 1007; + break; + case GAIA_GEOMETRYCOLLECTIONM: + nType = 2007; + break; + case GAIA_GEOMETRYCOLLECTIONZM: + nType = 3007; + break; + }; + switch (dims) + { + case GAIA_XY: + nDims = 2; + break; + case GAIA_XY_Z: + case GAIA_XY_M: + nDims = 3; + break; + case GAIA_XY_Z_M: + nDims = 4; + break; + }; + sql = + sqlite3_mprintf + ("UPDATE geometry_columns SET geometry_type = %d, " + "coord_dimension = %d WHERE Lower(f_table_name) = Lower(%Q) " + "AND Lower(f_geometry_column) = Lower(%Q)", nType, nDims, table, + geometry); + } + ret = sqlite3_exec (sqlite, sql, NULL, NULL, &errMsg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + spatialite_e ("loadwfs: UPDATE-GEOMS error:\"%s\"\n", errMsg); + sqlite3_free (errMsg); + } + +/* confirming the still pendenting SQL transaction */ + if (sqlite3_exec (sqlite, "COMMIT", NULL, NULL, &errMsg) != SQLITE_OK) + { + spatialite_e ("loadwfs: COMMIT error:\"%s\"\n", errMsg); + sqlite3_free (errMsg); + } +} + +SPATIALITE_DECLARE int +load_from_wfs_paged (sqlite3 * sqlite, const char *path_or_url, + const char *alt_describe_uri, const char *layer_name, + int swap_axes, const char *table, + const char *pk_column_name, int spatial_index, + int page_size, int *rows, char **err_msg, + void (*progress_callback) (int, void *), + void *callback_ptr) +{ +/* attempting to load data from some WFS source [paged]*/ + xmlDocPtr xml_doc = NULL; + xmlNodePtr root; + struct wfs_layer_schema *schema = NULL; + int len; + int ret; + char *describe_uri = NULL; + gaiaOutBuffer errBuf; + int ok = 0; + int sniffed = 0; + int pageNo = 0; + int startIdx = 0; + int nRows; + char *page_url = NULL; + const char *p_page_url; + int shift_index; + xmlGenericErrorFunc parsingError = (xmlGenericErrorFunc) wfsParsingError; + *rows = 0; + if (err_msg != NULL) + *err_msg = NULL; + if (path_or_url == NULL) + return 0; + + while (1) + { + if (page_size <= 0) + p_page_url = path_or_url; + else + { + page_url = + sqlite3_mprintf ("%s&maxFeatures=%d&startIndex=%d", + path_or_url, page_size, startIdx); + p_page_url = page_url; + } + + /* loading the WFS payload from URL (or file) */ + gaiaOutBufferInitialize (&errBuf); + xmlSetGenericErrorFunc (&errBuf, parsingError); + xml_doc = xmlReadFile (p_page_url, NULL, 0); + if (page_url != NULL) + sqlite3_free (page_url); + if (xml_doc == NULL) + { + /* parsing error; not a well-formed XML */ + if (errBuf.Buffer != NULL && err_msg != NULL) + { + len = strlen (errBuf.Buffer); + *err_msg = malloc (len + 1); + strcpy (*err_msg, errBuf.Buffer); + } + goto end; + } + + if (pageNo == 0) + { + if (alt_describe_uri != NULL) + { + /* using the DescribetFeatureType URI from GetCapabilities */ + len = strlen (alt_describe_uri); + describe_uri = malloc (len + 1); + strcpy (describe_uri, alt_describe_uri); + ret = 1; + } + else + { + /* attempting to extract the DescribeFeatureType from the GetFeature document */ + ret = + get_DescribeFeatureType_uri (xml_doc, &describe_uri); + } + if (ret == 0) + { + const char *msg = + "Unable to retrieve the DescribeFeatureType URI"; + if (err_msg != NULL) + { + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + } + goto end; + } + + /* loading and parsing the WFS schema */ + schema = + load_wfs_schema (describe_uri, layer_name, swap_axes, + err_msg); + if (schema == NULL) + goto end; + + /* creating the output table */ + root = xmlDocGetRootElement (xml_doc); + sniffed = 0; + sniff_geometries (root, schema, &sniffed); + + if (page_size > 0) + { + /* testing if the server does actually support STARTINDEX */ + root = xmlDocGetRootElement (xml_doc); + if (!test_wfs_paging + (path_or_url, page_size, root, schema, &shift_index)) + { + const char *err = + "loawfs: the WFS server doesn't seem to support STARTINDEX\n" + "and consequently WFS paging is not available"; + if (err_msg != NULL) + { + len = strlen (err); + *err_msg = malloc (len + 1); + strcpy (*err_msg, err); + } + goto end; + } + startIdx += shift_index; + } + + if (!prepare_sql + (sqlite, schema, table, pk_column_name, spatial_index, + err_msg)) + goto end; + } + + /* parsing the WFS payload */ + root = xmlDocGetRootElement (xml_doc); + nRows = 0; + parse_wfs_features (root, schema, &nRows, err_msg); + *rows += nRows; + if (progress_callback != NULL) + { + /* invoking the progress callback */ + int ext_rows = *rows; + progress_callback (ext_rows, callback_ptr); + } + + if (schema->error) + { + *rows = 0; + do_rollback (sqlite, schema); + } + else + { + if (page_size > 0 && nRows >= page_size) + restart_transaction (sqlite); + else + do_commit (sqlite, schema); + } + if (schema->error) + { + *rows = 0; + goto end; + } + if (page_size <= 0) + break; + if (nRows < page_size) + break; + + if (xml_doc != NULL) + xmlFreeDoc (xml_doc); + xml_doc = NULL; + pageNo++; + startIdx += nRows; + } + + if (schema->geometry_type == GAIA_GEOMETRYCOLLECTION) + { + /* attempting to set a more precise GeometryType */ + int type; + int cast_type; + int cast_dims; + if (check_real_type (schema, &type, &cast_type, &cast_dims)) + { + do_adjust_geoms (sqlite, table, schema->geometry_name, type, + cast_type, cast_dims); + } + } + ok = 1; + end: + if (schema != NULL) + free_wfs_layer_schema (schema); + if (describe_uri != NULL) + free (describe_uri); + gaiaOutBufferReset (&errBuf); + xmlSetGenericErrorFunc ((void *) stderr, NULL); + if (xml_doc != NULL) + xmlFreeDoc (xml_doc); + return ok; +} + +static void +parse_keyword (xmlNodePtr node, struct wfs_catalog *catalog) +{ +/* parsing WFS values */ + xmlNodePtr cur_node = NULL; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (strcmp ((const char *) cur_node->name, "Keyword") == 0) + { + xmlNodePtr child_node = cur_node->children; + if (child_node != NULL) + { + if (child_node->type == XML_TEXT_NODE) + { + struct wfs_layer_def *lyr = catalog->last; + add_wfs_keyword_to_layer (lyr, + (const char + *) + (child_node-> + content)); + } + } + } + } + } +} + +static void +parse_keyword_string (char *in, struct wfs_catalog *catalog) +{ +/* parsing WFS from within a comma delimited string */ + struct wfs_layer_def *lyr = catalog->last; + int len = strlen (in); + char *end = in + len; + char *base = in; + while (base < end) + { + char *p = base; + while (p <= end) + { + if (*p == ',' || *p == '\0') + { + const char *start; + *p = '\0'; + start = base; + while (*start == ' ' || *start == '\t' || *start == '\n' + || *start == '\r') + start++; + add_wfs_keyword_to_layer (lyr, start); + p++; + base = p; + break; + } + p++; + } + } +} + +static void +parse_keywords (xmlNodePtr node, struct wfs_catalog *catalog) +{ +/* parsing the WFS Keywords */ + if (node != NULL) + { + parse_keyword (node, catalog); + if (node->type == XML_TEXT_NODE) + { + int len = strlen ((const char *) (node->content)); + char *string = malloc (len + 1); + strcpy (string, (const char *) (node->content)); + parse_keyword_string (string, catalog); + free (string); + } + } +} + +static void +parse_wfs_layer (xmlNodePtr node, struct wfs_catalog *catalog) +{ +/* parsing a WFS layer definition (GetCapabilities/FeatureType) */ + xmlNodePtr cur_node = NULL; + xmlNodePtr child_node = NULL; + const char *name = NULL; + const char *title = NULL; + const char *abstract = NULL; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (strcmp ((const char *) (cur_node->name), "Name") == 0) + { + child_node = cur_node->children; + if (child_node != NULL) + { + if (child_node->type == XML_TEXT_NODE) + name = (const char *) (child_node->content); + } + } + if (strcmp ((const char *) (cur_node->name), "Title") == 0) + { + child_node = cur_node->children; + if (child_node != NULL) + { + if (child_node->type == XML_TEXT_NODE) + title = (const char *) (child_node->content); + } + } + if (strcmp ((const char *) (cur_node->name), "Abstract") == 0) + { + child_node = cur_node->children; + if (child_node != NULL) + { + if (child_node->type == XML_TEXT_NODE) + abstract = (const char *) (child_node->content); + } + } + } + } + + if (name != NULL) + { + add_wfs_layer_to_catalog (catalog, name, title, abstract); + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (strcmp ((const char *) (cur_node->name), "SRS") == 0 + || strcmp ((const char *) (cur_node->name), + "DefaultSRS") == 0 + || strcmp ((const char *) (cur_node->name), + "OtherSRS") == 0) + { + int srid = parse_srsname (cur_node->children); + if (srid > 0) + { + struct wfs_layer_def *lyr = catalog->last; + add_wfs_srid_to_layer (lyr, srid, + (const char + *) + (cur_node->children-> + content)); + } + } + if (strcmp ((const char *) (cur_node->name), "Keywords") + == 0) + parse_keywords (cur_node->children, catalog); + } + } + } +} + +static void +parse_wfs_get_100 (xmlNodePtr node, struct wfs_catalog *catalog, int mode) +{ +/* attempting to find the GetFeature base-URL (WFS 1.0.0) */ + struct _xmlAttr *attr = node->properties; + while (attr != NULL) + { + if (attr->name != NULL) + { + if (strcmp ((const char *) (attr->name), "onlineResource") == 0) + { + xmlNodePtr text = attr->children; + if (text != NULL) + { + if (text->type == XML_TEXT_NODE) + { + if (mode) + set_wfs_catalog_base_request_url (catalog, + (const + char + *) + (text-> + content)); + else + set_wfs_catalog_base_describe_url + (catalog, + (const char *) (text->content)); + } + } + } + } + attr = attr->next; + } +} + +static void +parse_wfs_http_100 (xmlNodePtr node, struct wfs_catalog *catalog, int mode) +{ +/* attempting to find the GetFeature base-URL (WFS 1.0.0) */ + xmlNodePtr cur_node = NULL; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (strcmp ((const char *) (cur_node->name), "Get") == 0) + parse_wfs_get_100 (cur_node, catalog, mode); + } + } +} + +static void +parse_wfs_dcptype_100 (xmlNodePtr node, struct wfs_catalog *catalog, int mode) +{ +/* attempting to find the GetFeature base-URL (WFS 1.0.0) */ + xmlNodePtr cur_node = NULL; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (strcmp ((const char *) (cur_node->name), "HTTP") == 0) + parse_wfs_http_100 (cur_node->children, catalog, mode); + } + } +} + +static void +parse_wfs_getfeature_100 (xmlNodePtr node, struct wfs_catalog *catalog, + int mode) +{ +/* attempting to find the GetFeature base-URL (WFS 1.0.0) */ + xmlNodePtr cur_node = NULL; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (strcmp ((const char *) (cur_node->name), "DCPType") == 0) + parse_wfs_dcptype_100 (cur_node->children, catalog, mode); + } + } +} + +static void +parse_wfs_request_100 (xmlNodePtr node, struct wfs_catalog *catalog) +{ +/* attempting to find the GetFeature base-URL (WFS 1.0.0) */ + xmlNodePtr cur_node = NULL; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (strcmp ((const char *) (cur_node->name), "GetFeature") == 0) + parse_wfs_getfeature_100 (cur_node->children, catalog, 1); + if (strcmp + ((const char *) (cur_node->name), + "DescribeFeatureType") == 0) + parse_wfs_getfeature_100 (cur_node->children, catalog, 0); + } + } +} + +static void +parse_wfs_base_url_100 (xmlNodePtr node, struct wfs_catalog *catalog) +{ +/* attempting to find the GetFeature base-URL (WFS 1.0.0) */ + xmlNodePtr cur_node = NULL; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (strcmp ((const char *) (cur_node->name), "Request") == 0) + parse_wfs_request_100 (cur_node->children, catalog); + } + } +} + +static void +parse_wfs_get_110 (xmlNodePtr node, struct wfs_catalog *catalog, int mode) +{ +/* attempting to find the GetFeature base-URL (WFS 1.1.0) */ + struct _xmlAttr *attr = node->properties; + while (attr != NULL) + { + if (attr->name != NULL) + { + if (strcmp ((const char *) (attr->name), "href") == 0) + { + xmlNodePtr text = attr->children; + if (text != NULL) + { + if (text->type == XML_TEXT_NODE) + { + if (mode) + set_wfs_catalog_base_request_url (catalog, + (const + char + *) + (text-> + content)); + else + set_wfs_catalog_base_describe_url + (catalog, + (const char *) (text->content)); + } + } + } + } + attr = attr->next; + } +} + +static void +parse_wfs_http_110 (xmlNodePtr node, struct wfs_catalog *catalog, int mode) +{ +/* attempting to find the GetFeature base-URL (WFS 1.1.0) */ + xmlNodePtr cur_node = NULL; + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (strcmp ((const char *) (cur_node->name), "Get") == 0) + parse_wfs_get_110 (cur_node, catalog, mode); + } + } +} + +static void +parse_wfs_dcp_110 (xmlNodePtr node, struct wfs_catalog *catalog, int mode) +{ +/* attempting to find the GetFeature base-URL (WFS 1.1.0) */ + xmlNodePtr cur_node = NULL; + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (strcmp ((const char *) (cur_node->name), "HTTP") == 0) + parse_wfs_http_110 (cur_node->children, catalog, mode); + } + } +} + +static void +parse_wfs_getfeature_110 (xmlNodePtr node, struct wfs_catalog *catalog, + int mode) +{ +/* attempting to find the GetFeature base-URL (WFS 1.1.0) */ + xmlNodePtr cur_node = NULL; + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (strcmp ((const char *) (cur_node->name), "DCP") == 0) + parse_wfs_dcp_110 (cur_node->children, catalog, mode); + } + } +} + +static void +parse_wfs_operation_110 (xmlNodePtr node, struct wfs_catalog *catalog) +{ +/* attempting to find the GetFeature base-URL (WFS 1.1.0) */ + struct _xmlAttr *attr = node->properties; + while (attr != NULL) + { + if (attr->name != NULL) + { + if (strcmp ((const char *) (attr->name), "name") == 0) + { + xmlNodePtr text = attr->children; + if (text != NULL) + { + if (text->type == XML_TEXT_NODE) + { + if (strcmp + ((const char *) (text->content), + "GetFeature") == 0) + parse_wfs_getfeature_110 (node->children, + catalog, 1); + if (strcmp + ((const char *) (text->content), + "DescribeFeatureType") == 0) + parse_wfs_getfeature_110 (node->children, + catalog, 0); + } + } + } + } + attr = attr->next; + } +} + +static void +parse_wfs_base_url_110 (xmlNodePtr node, struct wfs_catalog *catalog) +{ +/* attempting to find the GetFeature base-URL (WFS 1.1.0) */ + xmlNodePtr cur_node = NULL; + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (strcmp ((const char *) (cur_node->name), "Operation") == 0) + parse_wfs_operation_110 (cur_node, catalog); + } + } +} + +static void +parse_wfs_catalog (xmlNodePtr node, struct wfs_catalog *catalog, + int *capabilities, int *list) +{ +/* recursively parsing the GetCapabilities payload */ + xmlNodePtr cur_node = NULL; + + for (cur_node = node; cur_node; cur_node = cur_node->next) + { + if (cur_node->type == XML_ELEMENT_NODE) + { + if (strcmp ((const char *) (cur_node->name), "WFS_Capabilities") + == 0) + *capabilities = 1; + if (*capabilities != 0 + && strcmp ((const char *) (cur_node->name), + "FeatureTypeList") == 0) + *list = 1; + if (*capabilities != 0 && *list == 0 + && strcmp ((const char *) (cur_node->name), + "Capability") == 0) + parse_wfs_base_url_100 (cur_node->children, catalog); + if (*capabilities != 0 && *list == 0 + && strcmp ((const char *) (cur_node->name), + "OperationsMetadata") == 0) + parse_wfs_base_url_110 (cur_node->children, catalog); + if (*list != 0 + && strcmp ((const char *) (cur_node->name), + "FeatureType") == 0) + parse_wfs_layer (cur_node->children, catalog); + else + parse_wfs_catalog (cur_node->children, catalog, + capabilities, list); + if (*capabilities != 0 + && strcmp ((const char *) (cur_node->name), + "FeatureTypeList") == 0) + *list = 0; + if (strcmp ((const char *) (cur_node->name), "WFS_Capabilities") + == 0) + *capabilities = 0; + } + } +} + +SPATIALITE_DECLARE gaiaWFScatalogPtr +create_wfs_catalog (const char *path_or_url, char **err_msg) +{ +/* attempting to get and parse a WFS GetCapabilities request */ + xmlDocPtr xml_doc = NULL; + xmlNodePtr root; + struct wfs_catalog *catalog = NULL; + int len; + int capabilities = 0; + int list = 0; + gaiaOutBuffer errBuf; + xmlGenericErrorFunc parsingError = (xmlGenericErrorFunc) wfsParsingError; + if (err_msg != NULL) + *err_msg = NULL; + if (path_or_url == NULL) + return 0; + +/* loading the WFS GetCapabilities from URL (or file) */ + gaiaOutBufferInitialize (&errBuf); + xmlSetGenericErrorFunc (&errBuf, parsingError); + xml_doc = xmlReadFile (path_or_url, NULL, 0); + if (xml_doc == NULL) + { + /* parsing error; not a well-formed XML */ + if (errBuf.Buffer != NULL && err_msg != NULL) + { + len = strlen (errBuf.Buffer); + *err_msg = malloc (len + 1); + strcpy (*err_msg, errBuf.Buffer); + } + goto end; + } + +/* parsing the WFS payload */ + catalog = alloc_wfs_catalog (); + root = xmlDocGetRootElement (xml_doc); + parse_wfs_catalog (root, catalog, &capabilities, &list); + if (get_wfs_catalog_count ((gaiaWFScatalogPtr) catalog) <= 0) + { + free_wfs_catalog (catalog); + catalog = NULL; + goto end; + } + + end: + gaiaOutBufferReset (&errBuf); + xmlSetGenericErrorFunc ((void *) stderr, NULL); + if (xml_doc != NULL) + xmlFreeDoc (xml_doc); + return (gaiaWFScatalogPtr) catalog; +} + +SPATIALITE_DECLARE void +destroy_wfs_catalog (gaiaWFScatalogPtr handle) +{ +/* memory cleanup: freeing a WFS-Catalog object */ + struct wfs_catalog *ptr = (struct wfs_catalog *) handle; + if (ptr == NULL) + return; + free_wfs_catalog (ptr); +} + +SPATIALITE_DECLARE const char * +get_wfs_base_request_url (gaiaWFScatalogPtr handle) +{ +/* return the base URL for any WFS-GetFeature call */ + struct wfs_catalog *ptr = (struct wfs_catalog *) handle; + if (ptr == NULL) + return NULL; + return ptr->request_url; +} + +SPATIALITE_DECLARE const char * +get_wfs_base_describe_url (gaiaWFScatalogPtr handle) +{ +/* return the base URL for any WFS-DescribeFeatureType call */ + struct wfs_catalog *ptr = (struct wfs_catalog *) handle; + if (ptr == NULL) + return NULL; + return ptr->describe_url; +} + +SPATIALITE_DECLARE int +get_wfs_catalog_count (gaiaWFScatalogPtr handle) +{ +/* counting how many layers are defined within a WFS-Catalog */ + int count = 0; + struct wfs_layer_def *lyr; + struct wfs_catalog *ptr = (struct wfs_catalog *) handle; + if (ptr == NULL) + return -1; + + lyr = ptr->first; + while (lyr != NULL) + { + count++; + lyr = lyr->next; + } + return count; +} + +SPATIALITE_DECLARE gaiaWFSitemPtr +get_wfs_catalog_item (gaiaWFScatalogPtr handle, int index) +{ +/* attempting to get a reference to some WFS-Layer object */ + int count = 0; + struct wfs_layer_def *lyr; + struct wfs_catalog *ptr = (struct wfs_catalog *) handle; + if (ptr == NULL) + return NULL; + + lyr = ptr->first; + while (lyr != NULL) + { + if (count == index) + return (gaiaWFSitemPtr) lyr; + count++; + lyr = lyr->next; + } + return NULL; +} + +SPATIALITE_DECLARE const char * +get_wfs_item_name (gaiaWFSitemPtr handle) +{ +/* return the name corresponding to a WFS-Layer object */ + struct wfs_layer_def *ptr = (struct wfs_layer_def *) handle; + if (ptr == NULL) + return NULL; + return ptr->name; +} + +SPATIALITE_DECLARE const char * +get_wfs_item_title (gaiaWFSitemPtr handle) +{ +/* return the title corresponding to a WFS-Layer object */ + struct wfs_layer_def *ptr = (struct wfs_layer_def *) handle; + if (ptr == NULL) + return NULL; + return ptr->title; +} + +SPATIALITE_DECLARE const char * +get_wfs_item_abstract (gaiaWFSitemPtr handle) +{ +/* return the abstract corresponding to a WFS-Layer object */ + struct wfs_layer_def *ptr = (struct wfs_layer_def *) handle; + if (ptr == NULL) + return NULL; + return ptr->abstract; +} + +SPATIALITE_DECLARE int +get_wfs_layer_srid_count (gaiaWFSitemPtr handle) +{ +/* counting how many SRIDs are supported by a WFS-Layer */ + int count = 0; + struct wfs_srid_def *srid; + struct wfs_layer_def *ptr = (struct wfs_layer_def *) handle; + if (ptr == NULL) + return -1; + + srid = ptr->first_srid; + while (srid != NULL) + { + count++; + srid = srid->next; + } + return count; +} + +SPATIALITE_DECLARE int +get_wfs_layer_srid (gaiaWFSitemPtr handle, int index) +{ +/* attempting to get the Nth SRID supported by some WFS-Layer object */ + int count = 0; + struct wfs_srid_def *srid; + struct wfs_layer_def *ptr = (struct wfs_layer_def *) handle; + if (ptr == NULL) + return -1; + + srid = ptr->first_srid; + while (srid != NULL) + { + if (count == index) + return srid->srid; + count++; + srid = srid->next; + } + return -1; +} + +SPATIALITE_DECLARE int +get_wfs_keyword_count (gaiaWFSitemPtr handle) +{ +/* counting how many Keywords are supported by a WFS-Layer */ + int count = 0; + struct wfs_keyword *key; + struct wfs_layer_def *ptr = (struct wfs_layer_def *) handle; + if (ptr == NULL) + return -1; + + key = ptr->first_key; + while (key != NULL) + { + count++; + key = key->next; + } + return count; +} + +SPATIALITE_DECLARE const char * +get_wfs_keyword (gaiaWFSitemPtr handle, int index) +{ +/* attempting to get the Nth Keyword supported by some WFS-Layer object */ + int count = 0; + struct wfs_keyword *key; + struct wfs_layer_def *ptr = (struct wfs_layer_def *) handle; + if (ptr == NULL) + return NULL; + + key = ptr->first_key; + while (key != NULL) + { + if (count == index) + return key->keyword; + count++; + key = key->next; + } + return NULL; +} + +static char * +build_request_url (struct wfs_catalog *ptr, struct wfs_layer_def *lyr, + const char *version, int srid, int max_features) +{ +/* creating the request URL */ + char *url; + char *url2; + const char *srs_name = NULL; + int len; + const char *ver = "1.1.0"; + if (ptr->request_url == NULL) + return NULL; + if (version != NULL) + { + if (strcmp (version, "1.0.0") == 0) + ver = "1.0.0"; + } + if (srid > 0) + { + struct wfs_srid_def *srs = lyr->first_srid; + while (srs != NULL) + { + if (srs->srid == srid) + { + /* found the required SRS definition */ + srs_name = srs->srs_name; + break; + } + srs = srs->next; + } + } + if (max_features <= 0) + { + if (srs_name == NULL) + url = + sqlite3_mprintf + ("%sservice=WFS&version=%s&request=GetFeature&typeName=%s", + ptr->request_url, ver, lyr->name); + else + url = + sqlite3_mprintf + ("%sservice=WFS&version=%s&request=GetFeature&typeName=%s&srsName=%s", + ptr->request_url, ver, lyr->name, srs_name); + } + else + { + if (srs_name == NULL) + url = + sqlite3_mprintf + ("%sservice=WFS&version=%s&request=GetFeature&typeName=%s&maxFeatures=%d", + ptr->request_url, ver, lyr->name, max_features); + else + url = + sqlite3_mprintf + ("%sservice=WFS&version=%s&request=GetFeature&typeName=%s&srsName=%s&maxFeatures=%d", + ptr->request_url, ver, lyr->name, srs_name, max_features); + } + len = strlen (url); + url2 = malloc (len + 1); + strcpy (url2, url); + sqlite3_free (url); + return url2; +} + +SPATIALITE_DECLARE char * +get_wfs_request_url (gaiaWFScatalogPtr handle, const char *name, + const char *version, int srid, int max_features) +{ +/* attempting to format a GetFeature (GET) URL */ + struct wfs_layer_def *lyr; + struct wfs_catalog *ptr = (struct wfs_catalog *) handle; + if (ptr == NULL) + return NULL; + if (name == NULL) + return NULL; + + lyr = ptr->first; + while (lyr != NULL) + { + if (strcmp (lyr->name, name) == 0) + return build_request_url (ptr, lyr, version, srid, max_features); + lyr = lyr->next; + } + return NULL; +} + +static char * +build_describe_url (struct wfs_catalog *ptr, struct wfs_layer_def *lyr, + const char *version) +{ +/* creating the DescribeFeatureType URL */ + char *url; + char *url2; + int len; + const char *ver = "1.1.0"; + if (ptr->describe_url == NULL) + return NULL; + if (version != NULL) + { + if (strcmp (version, "1.0.0") == 0) + ver = "1.0.0"; + } + url = + sqlite3_mprintf + ("%sservice=WFS&version=%s&request=DescribeFeatureType&typeName=%s", + ptr->describe_url, ver, lyr->name); + len = strlen (url); + url2 = malloc (len + 1); + strcpy (url2, url); + sqlite3_free (url); + return url2; +} + +SPATIALITE_DECLARE char * +get_wfs_describe_url (gaiaWFScatalogPtr handle, const char *name, + const char *version) +{ +/* attempting to format a DescribeFeatureType (GET) URL */ + struct wfs_layer_def *lyr; + struct wfs_catalog *ptr = (struct wfs_catalog *) handle; + if (ptr == NULL) + return NULL; + if (name == NULL) + return NULL; + + lyr = ptr->first; + while (lyr != NULL) + { + if (strcmp (lyr->name, name) == 0) + return build_describe_url (ptr, lyr, version); + lyr = lyr->next; + } + return NULL; +} + +SPATIALITE_DECLARE gaiaWFSschemaPtr +create_wfs_schema (const char *path_or_url, const char *layer_name, + char **err_msg) +{ +/* public method: creating a WFS-Schema object */ + return (gaiaWFSschemaPtr) load_wfs_schema (path_or_url, layer_name, 0, + err_msg); +} + +SPATIALITE_DECLARE void +destroy_wfs_schema (gaiaWFSschemaPtr handle) +{ +/* public metod: destroying a WFS-Schema object */ + struct wfs_layer_schema *ptr = (struct wfs_layer_schema *) handle; + if (ptr == NULL) + return; + free_wfs_layer_schema (ptr); +} + +SPATIALITE_DECLARE int +get_wfs_schema_column_count (gaiaWFSschemaPtr handle) +{ +/* counting how many layers are defined within a WFS-Schema */ + int count = 0; + struct wfs_column_def *col; + struct wfs_layer_schema *ptr = (struct wfs_layer_schema *) handle; + if (ptr == NULL) + return -1; + + col = ptr->first; + while (col != NULL) + { + count++; + col = col->next; + } + return count; +} + +SPATIALITE_DECLARE gaiaWFScolumnPtr +get_wfs_schema_column (gaiaWFSschemaPtr handle, int index) +{ +/* attempting to get a reference to some WFS-Column object */ + int count = 0; + struct wfs_column_def *col; + struct wfs_layer_schema *ptr = (struct wfs_layer_schema *) handle; + if (ptr == NULL) + return NULL; + + col = ptr->first; + while (col != NULL) + { + if (count == index) + return (gaiaWFScolumnPtr) col; + count++; + col = col->next; + } + return NULL; +} + +SPATIALITE_DECLARE int +get_wfs_schema_geometry_info (gaiaWFSschemaPtr handle, const char **name, + int *type, int *srid, int *dims, int *nullable) +{ +/* Return the infos describing a WFS-GeometryColumn object */ + struct wfs_layer_schema *ptr = (struct wfs_layer_schema *) handle; + if (ptr == NULL) + return 0; + if (ptr->geometry_name == NULL) + return 0; + *name = ptr->geometry_name; + *type = ptr->geometry_type; + *srid = ptr->srid; + *dims = ptr->dims; + *nullable = ptr->is_nullable; + return 1; +} + +SPATIALITE_DECLARE int +get_wfs_schema_column_info (gaiaWFScolumnPtr handle, const char **name, + int *type, int *nullable) +{ +/* Return the infos describing a WFS-Column object */ + struct wfs_column_def *ptr = (struct wfs_column_def *) handle; + if (ptr == NULL) + return 0; + *name = ptr->name; + *type = ptr->type; + *nullable = ptr->is_nullable; + return 1; +} + +SPATIALITE_DECLARE void +reset_wfs_http_connection (void) +{ +/* Resets the libxml2 "nano HTTP": useful when changing the HTTP_PROXY settings */ + xmlNanoHTTPCleanup (); +} + +#else /* LIBXML2 isn't enabled */ + +SPATIALITE_DECLARE int +load_from_wfs (sqlite3 * sqlite, const char *path_or_url, + const char *alt_describe_uri, const char *layer_name, + int swap_axes, const char *table, const char *pk_column_name, + int spatial_index, int *rows, char **err_msg, + void (*progress_callback) (int, void *), void *callback_ptr) +{ +/* LIBXML2 isn't enabled: always returning an error */ + return load_from_wfs_paged (sqlite, path_or_url, alt_describe_uri, + layer_name, swap_axes, table, pk_column_name, + spatial_index, -1, rows, err_msg, + progress_callback, callback_ptr); +} + +SPATIALITE_DECLARE int +load_from_wfs_paged (sqlite3 * sqlite, const char *path_or_url, + const char *alt_describe_uri, const char *layer_name, + int swap_axes, const char *table, + const char *pk_column_name, int spatial_index, + int page_size, int *rows, char **err_msg, + void (*progress_callback) (int, void *), + void *callback_ptr) +{ +/* LIBXML2 isn't enabled: always returning an error */ + int len; + const char *msg = "Sorry ... libspatialite was built disabling LIBXML2\n" + "and is thus unable to support LOADWFS"; + +/* silencing stupid compiler warnings */ + if (sqlite == NULL || path_or_url == NULL || layer_name == NULL + || alt_describe_uri == NULL || swap_axes == 0 || table == NULL + || pk_column_name == NULL || spatial_index == 0 || page_size == 0 + || rows == NULL || progress_callback == NULL + || progress_callback == NULL || callback_ptr == NULL) + path_or_url = NULL; + + if (err_msg == NULL) + return 0; + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + return 0; +} + +SPATIALITE_DECLARE gaiaWFScatalogPtr +create_wfs_catalog (const char *path_or_url, char **err_msg) +{ +/* LIBXML2 isn't enabled: always returning an error */ + int len; + const char *msg = "Sorry ... libspatialite was built disabling LIBXML2\n" + "and is thus unable to support WFS-CATALOG"; + +/* silencing stupid compiler warnings */ + if (path_or_url != NULL) + path_or_url = NULL; + + if (err_msg == NULL) + return 0; + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + return NULL; +} + +SPATIALITE_DECLARE void +destroy_wfs_catalog (gaiaWFScatalogPtr handle) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL) + handle = NULL; + return; +} + +SPATIALITE_DECLARE const char * +get_wfs_base_request_url (gaiaWFScatalogPtr handle) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL) + handle = NULL; + return NULL; +} + +SPATIALITE_DECLARE const char * +get_wfs_base_describe_url (gaiaWFScatalogPtr handle) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL) + handle = NULL; + return NULL; +} + +SPATIALITE_DECLARE int +get_wfs_catalog_count (gaiaWFScatalogPtr handle) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL) + handle = NULL; + return -1; +} + +SPATIALITE_DECLARE gaiaWFSitemPtr +get_wfs_catalog_item (gaiaWFScatalogPtr handle, int index) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL || index < 0) + handle = NULL; + return NULL; +} + +SPATIALITE_DECLARE const char * +get_wfs_item_name (gaiaWFSitemPtr handle) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL) + handle = NULL; + return NULL; +} + +SPATIALITE_DECLARE const char * +get_wfs_item_title (gaiaWFSitemPtr handle) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL) + handle = NULL; + return NULL; +} + +SPATIALITE_DECLARE const char * +get_wfs_item_abstract (gaiaWFSitemPtr handle) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL) + handle = NULL; + return NULL; +} + +SPATIALITE_DECLARE int +get_wfs_layer_srid_count (gaiaWFSitemPtr handle) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL) + handle = NULL; + return -1; +} + +SPATIALITE_DECLARE int +get_wfs_layer_srid (gaiaWFSitemPtr handle, int index) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL || index < 0) + handle = NULL; + return -1; +} + +SPATIALITE_DECLARE int +get_wfs_keyword_count (gaiaWFSitemPtr handle) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL) + handle = NULL; + return -1; +} + +SPATIALITE_DECLARE const char * +get_wfs_keyword (gaiaWFSitemPtr handle, int index) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL || index < 0) + handle = NULL; + return NULL; +} + +SPATIALITE_DECLARE char * +get_wfs_request_url (gaiaWFScatalogPtr handle, const char *name, + const char *version, int srid, int max_features) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL || name == NULL || version == NULL || srid == 0 + || max_features == 0) + handle = NULL; + return NULL; +} + +SPATIALITE_DECLARE char * +get_wfs_describe_url (gaiaWFScatalogPtr handle, const char *name, + const char *version) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL || name == NULL || version == NULL) + handle = NULL; + return NULL; +} + +SPATIALITE_DECLARE gaiaWFSschemaPtr +create_wfs_schema (const char *path_or_url, const char *layer_name, + char **err_msg) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + int len; + const char *msg = "Sorry ... libspatialite was built disabling LIBXML2\n" + "and is thus unable to support WFS-SCHEMA"; + +/* silencing stupid compiler warnings */ + if (path_or_url != NULL || layer_name == NULL) + path_or_url = NULL; + + if (err_msg == NULL) + return 0; + len = strlen (msg); + *err_msg = malloc (len + 1); + strcpy (*err_msg, msg); + return NULL; +} + +SPATIALITE_DECLARE void +destroy_wfs_schema (gaiaWFSschemaPtr handle) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL) + handle = NULL; +} + +SPATIALITE_DECLARE int +get_wfs_schema_column_count (gaiaWFSschemaPtr handle) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL) + handle = NULL; + return -1; +} + +SPATIALITE_DECLARE gaiaWFScolumnPtr +get_wfs_schema_column (gaiaWFSschemaPtr handle, int index) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL || index == 0) + handle = NULL; + return NULL; +} + +SPATIALITE_DECLARE int +get_wfs_schema_geometry_info (gaiaWFSschemaPtr handle, const char **name, + int *type, int *srid, int *dims, int *nullable) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL || name == NULL || type == NULL || srid == NULL + || dims == NULL || nullable == NULL) + handle = NULL; + return 0; +} + +SPATIALITE_DECLARE int +get_wfs_schema_column_info (gaiaWFScolumnPtr handle, const char **name, + int *type, int *nullable) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + +/* silencing stupid compiler warnings */ + if (handle != NULL || name == NULL || type == NULL || nullable == NULL) + handle = NULL; + return 0; +} + +SPATIALITE_DECLARE void +reset_wfs_http_connection (void) +{ +/* LIBXML2 isn't enabled: does absolutely nothing */ + return; +} + +#endif /* end LIBXML2 conditionals */ diff --git a/src/spatialite/test-driver b/src/spatialite/test-driver new file mode 100755 index 0000000..32bf39e --- /dev/null +++ b/src/spatialite/test-driver @@ -0,0 +1,127 @@ +#! /bin/sh +# test-driver - basic testsuite driver script. + +scriptversion=2012-06-27.10; # UTC + +# Copyright (C) 2011-2013 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +# Make unconditional expansion of undefined variables an error. This +# helps a lot in preventing typo-related bugs. +set -u + +usage_error () +{ + echo "$0: $*" >&2 + print_usage >&2 + exit 2 +} + +print_usage () +{ + cat <$log_file 2>&1 +estatus=$? +if test $enable_hard_errors = no && test $estatus -eq 99; then + estatus=1 +fi + +case $estatus:$expect_failure in + 0:yes) col=$red res=XPASS recheck=yes gcopy=yes;; + 0:*) col=$grn res=PASS recheck=no gcopy=no;; + 77:*) col=$blu res=SKIP recheck=no gcopy=yes;; + 99:*) col=$mgn res=ERROR recheck=yes gcopy=yes;; + *:yes) col=$lgn res=XFAIL recheck=no gcopy=yes;; + *:*) col=$red res=FAIL recheck=yes gcopy=yes;; +esac + +# Report outcome to console. +echo "${col}${res}${std}: $test_name" + +# Register the test result, and other relevant metadata. +echo ":test-result: $res" > $trs_file +echo ":global-test-result: $res" >> $trs_file +echo ":recheck: $recheck" >> $trs_file +echo ":copy-in-global-log: $gcopy" >> $trs_file + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/src/spatialite/test/22.dxf b/src/spatialite/test/22.dxf new file mode 100644 index 0000000..951bc3f --- /dev/null +++ b/src/spatialite/test/22.dxf @@ -0,0 +1,2988 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1015 + 9 +$ACADMAINTVER + 70 + 20 + 9 +$DWGCODEPAGE + 3 +ANSI_1252 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +602115.796875 + 20 +961637.7187500001 + 30 +0.0 + 9 +$EXTMAX + 10 +605457.53125 + 20 +964469.4531250001 + 30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +12.0 + 20 +9.0 + 9 +$ORTHOMODE + 70 + 1 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 0 + 9 +$LTSCALE + 40 +1.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +0.2 + 9 +$TRACEWID + 40 +0.05 + 9 +$TEXTSTYLE + 7 +Standard + 9 +$CLAYER + 8 +0 + 9 +$CELTYPE + 6 +Continuous + 9 +$CECOLOR + 62 + 256 + 9 +$CELTSCALE + 40 +1.0 + 9 +$DISPSILH + 70 + 0 + 9 +$DIMSCALE + 40 +1.0 + 9 +$DIMASZ + 40 +0.18 + 9 +$DIMEXO + 40 +0.0625 + 9 +$DIMDLI + 40 +0.38 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +0.18 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +0.18 + 9 +$DIMCEN + 40 +0.09 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 1 + 9 +$DIMTOH + 70 + 1 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 0 + 9 +$DIMZIN + 70 + 0 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 2 + 9 +$DIMALTF + 40 +25.4 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 0 + 9 +$DIMTVP + 40 +0.0 + 9 +$DIMTIX + 70 + 0 + 9 +$DIMSOXD + 70 + 0 + 9 +$DIMSAH + 70 + 0 + 9 +$DIMBLK1 + 1 + + 9 +$DIMBLK2 + 1 + + 9 +$DIMSTYLE + 2 +Standard + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.09 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 1 + 9 +$DIMTZIN + 70 + 0 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 4 + 9 +$DIMTDEC + 70 + 4 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 2 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 46 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +0.1 + 9 +$FILLETRAD + 40 +0.0 + 9 +$AUNITS + 70 + 0 + 9 +$AUPREC + 70 + 0 + 9 +$MENU + 1 +. + 9 +$ELEVATION + 40 +0.0 + 9 +$PELEVATION + 40 +0.0 + 9 +$THICKNESS + 40 +0.0 + 9 +$LIMCHECK + 70 + 0 + 9 +$CHAMFERA + 40 +0.0 + 9 +$CHAMFERB + 40 +0.0 + 9 +$CHAMFERC + 40 +0.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2454957.424852315 + 9 +$TDUCREATE + 40 +2454957.383185649 + 9 +$TDUPDATE + 40 +2456297.477353959 + 9 +$TDUUPDATE + 40 +2456297.435687292 + 9 +$TDINDWG + 40 +0.4710542014 + 9 +$TDUSRTIMER + 40 +0.4710542014 + 9 +$USRTIMER + 70 + 1 + 9 +$ANGBASE + 50 +0.0 + 9 +$ANGDIR + 70 + 0 + 9 +$PDMODE + 70 + 0 + 9 +$PDSIZE + 40 +0.0 + 9 +$PLINEWID + 40 +0.0 + 9 +$SPLFRAME + 70 + 0 + 9 +$SPLINETYPE + 70 + 6 + 9 +$SPLINESEGS + 70 + 8 + 9 +$HANDSEED + 5 +B1CE + 9 +$SURFTAB1 + 70 + 6 + 9 +$SURFTAB2 + 70 + 6 + 9 +$SURFTYPE + 70 + 6 + 9 +$SURFU + 70 + 6 + 9 +$SURFV + 70 + 6 + 9 +$UCSBASE + 2 + + 9 +$UCSNAME + 2 + + 9 +$UCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$UCSORTHOREF + 2 + + 9 +$UCSORTHOVIEW + 70 + 0 + 9 +$UCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSBASE + 2 + + 9 +$PUCSNAME + 2 + + 9 +$PUCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$PUCSORTHOREF + 2 + + 9 +$PUCSORTHOVIEW + 70 + 0 + 9 +$PUCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$USERI1 + 70 + 0 + 9 +$USERI2 + 70 + 0 + 9 +$USERI3 + 70 + 0 + 9 +$USERI4 + 70 + 0 + 9 +$USERI5 + 70 + 0 + 9 +$USERR1 + 40 +0.0 + 9 +$USERR2 + 40 +0.0 + 9 +$USERR3 + 40 +0.0 + 9 +$USERR4 + 40 +0.0 + 9 +$USERR5 + 40 +0.0 + 9 +$WORLDVIEW + 70 + 1 + 9 +$SHADEDGE + 70 + 3 + 9 +$SHADEDIF + 70 + 70 + 9 +$TILEMODE + 70 + 1 + 9 +$MAXACTVP + 70 + 64 + 9 +$PINSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMCHECK + 70 + 0 + 9 +$PEXTMIN + 10 +1.000000000000000E+20 + 20 +1.000000000000000E+20 + 30 +1.000000000000000E+20 + 9 +$PEXTMAX + 10 +-1.000000000000000E+20 + 20 +-1.000000000000000E+20 + 30 +-1.000000000000000E+20 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$PLIMMAX + 10 +12.0 + 20 +9.0 + 9 +$UNITMODE + 70 + 0 + 9 +$VISRETAIN + 70 + 1 + 9 +$PLINEGEN + 70 + 0 + 9 +$PSLTSCALE + 70 + 1 + 9 +$TREEDEPTH + 70 + 3020 + 9 +$CMLSTYLE + 2 +Standard + 9 +$CMLJUST + 70 + 0 + 9 +$CMLSCALE + 40 +1.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 0 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 6 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{E4D93A1D-E743-440C-AF20-08095301FC97} + 9 +$VERSIONGUID + 2 +{4ABEB1F0-D49C-4879-85A9-6A4C0FB530C9} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +TABLESTYLE + 2 +AcDbTableStyle + 3 +ObjectDBX Classes + 90 + 2047 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +1F +330 +0 +100 +AcDbSymbolTable + 70 + 6 + 0 +VPORT + 5 +B1C7 +330 +1F +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +603786.6640625001 + 22 +963053.5859375001 + 13 +0.0 + 23 +0.0 + 14 +1.0 + 24 +1.0 + 15 +0.0 + 25 +0.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +2854.418495493941 + 41 +1.635026737967914 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 100 + 73 + 1 + 74 + 1 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +1A +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LTYPE + 5 +1B +330 +1A +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +1C +330 +1A +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +A +330 +1A +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +12 +102 +{ACAD_XDICTIONARY +360 +13 +102 +} +330 +0 +100 +AcDbSymbolTable + 70 + 21 + 0 +LAYER + 5 +6 +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +247 +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +FERR_LIN + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +B161 +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +GRIGLIA + 70 + 0 + 62 + 150 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +B16B +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +GRIGLIA_TESTI + 70 + 0 + 62 + 150 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +2CD +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +QUARTIERI + 70 + 0 + 62 + 30 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +2D6 +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +QUARTIERI_TESTI + 70 + 0 + 62 + 30 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +2DA +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +SCARPATE + 70 + 0 + 62 + 253 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +33D +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +TOPONIMI + 70 + 0 + 62 + 253 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +376 +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +TORRENTIRID + 70 + 0 + 62 + 140 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +B15E +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +TUSCS + 70 + 0 + 62 + 50 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +388 +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +VESPOL + 70 + 0 + 62 + 253 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +3C0 +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +VESPUN + 70 + 0 + 62 + 253 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +437 +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +VIAB02NOMI + 70 + 0 + 62 + 254 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +1245 +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +VIAB04 + 70 + 0 + 62 + 3 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +3C0C +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +VIAB04_TESTI + 70 + 0 + 62 + 3 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +2E +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +VUOVIA + 70 + 0 + 62 + 253 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +B50 +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +VIAB02NOMI_TESTI + 70 + 0 + 62 + 1 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +65DB +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +FABBRI + 70 + 0 + 62 + 31 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +A609 +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +VIAB01 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +7 + 0 +LAYER + 5 +7F4B +330 +12 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +VESLIN + 70 + 0 + 62 + 253 + 6 +Continuous +370 + -3 +390 +7 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +17 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +STYLE + 5 +18 +330 +17 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +0.2 + 3 +txt + 4 + + 0 +STYLE + 5 +B51 +330 +17 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Arial + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +0.2 + 3 +ARIAL.TTF + 4 + +1001 +ACAD +1000 +Arial +1071 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +1D +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +1E +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +21 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +16 +330 +21 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +22 +330 +0 +100 +AcDbSymbolTable + 70 + 2 +100 +AcDbDimStyleTable + 71 + 0 + 0 +DIMSTYLE +105 +2C +330 +22 +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +340 +18 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +BLOCK_RECORD + 5 +2 +102 +{ACAD_XDICTIONARY +360 +3 +102 +} +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +C + 0 +BLOCK_RECORD + 5 +E +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +11 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +5 +330 +2 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +B +330 +2 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +F +330 +E +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +10 +330 +E +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LWPOLYLINE + 5 +2D +330 +2 +100 +AcDbEntity + 8 +VUOVIA +100 +AcDbPolyline + 90 + 33 + 70 + 0 + 43 +0.0 + 10 +605067.461566588 + 20 +964463.8900049555 + 10 +605066.1518000001 + 20 +964456.5304000005 + 10 +605063.7647000002 + 20 +964450.0256000032 + 10 +605062.2284000013 + 20 +964446.8836000022 + 10 +605060.9081000006 + 20 +964444.3896999993 + 10 +605059.7345000003 + 20 +964441.822400002 + 10 +605058.2675000019 + 20 +964439.0351000019 + 10 +605056.7272000005 + 20 +964436.614600001 + 10 +605054.8201000011 + 20 +964434.5607999992 + 10 +605053.8715000023 + 20 +964433.7307999991 + 10 +605053.0597000011 + 20 +964433.0204000027 + 10 +605051.8126999996 + 20 +964432.2869000006 + 10 +605050.1256999997 + 20 +964431.4801000003 + 10 +605048.9832999995 + 20 +964431.1649000012 + 10 +605047.9984999998 + 20 +964430.8933000006 + 10 +605046.7014000006 + 20 +964430.8231000024 + 10 +605045.2846000009 + 20 +964430.7466000022 + 10 +605042.0571999997 + 20 +964430.4531999994 + 10 +605035.9438000005 + 20 +964430.1807000005 + 10 +605034.2199999998 + 20 +964429.9991999995 + 10 +605029.2704999996 + 20 +964429.9230000022 + 10 +605023.8299000003 + 20 +964430.5518999994 + 10 +605019.5698000006 + 20 +964431.2432000004 + 10 +605014.9455999993 + 20 +964432.5893000011 + 10 +605010.626600001 + 20 +964434.2849000024 + 10 +605005.5176000008 + 20 +964436.2206999995 + 10 +605001.8887000018 + 20 +964438.1926000008 + 10 +604998.1287000012 + 20 +964441.2343000025 + 10 +604994.8519000011 + 20 +964445.0837999993 + 10 +604992.1574000009 + 20 +964449.1583000013 + 10 +604990.3370000003 + 20 +964452.9418000002 + 10 +604988.7713000011 + 20 +964458.1443000008 + 10 +604986.9848936607 + 20 +964462.5783273287 + 0 +LWPOLYLINE + 5 +36 +330 +2 +100 +AcDbEntity + 8 +VUOVIA +100 +AcDbPolyline + 90 + 8 + 70 + 1 + 43 +0.0 + 10 +605038.3097 + 20 +964417.4635000043 + 10 +605036.2088000001 + 20 +964411.8126999979 + 10 +605032.9289000007 + 20 +964414.1215000004 + 10 +605030.8686000016 + 20 +964415.2428000012 + 10 +605030.6259000013 + 20 +964415.3749000039 + 10 +605028.6983000003 + 20 +964417.4445000011 + 10 +605031.4258000013 + 20 +964417.258899998 + 10 +605034.9945999998 + 20 +964417.0161000026 + 0 +LWPOLYLINE + 5 +C4 +330 +2 +100 +AcDbEntity + 8 +VUOVIA +100 +AcDbPolyline + 90 + 26 + 70 + 1 + 43 +0.0 + 10 +603445.1815999998 + 20 +963097.616200002 + 10 +603444.025200001 + 20 +963097.5636000037 + 10 +603442.7571000001 + 20 +963097.7266000007 + 10 +603441.3175999997 + 20 +963098.3131000029 + 10 +603440.2007000009 + 20 +963099.2204999998 + 10 +603439.3112000013 + 20 +963100.4066000024 + 10 +603438.7155999998 + 20 +963101.7378000002 + 10 +603438.5389 + 20 +963103.4700000007 + 10 +603438.9316999996 + 20 +963105.3219000008 + 10 +603439.4432000016 + 20 +963106.3120000046 + 10 +603439.6689999997 + 20 +963106.5830000025 + 10 +603440.104700001 + 20 +963107.105800003 + 10 +603441.4987999992 + 20 +963108.1560999994 + 10 +603442.9342999999 + 20 +963108.7232000009 + 10 +603444.4706000016 + 20 +963108.8629000002 + 10 +603446.0024000006 + 20 +963108.5491000023 + 10 +603447.1664000005 + 20 +963108.0453000013 + 10 +603448.1980999997 + 20 +963107.2027000023 + 10 +603449.1846000012 + 20 +963105.8812000027 + 10 +603449.6464 + 20 +963104.7010000031 + 10 +603449.8492 + 20 +963103.2444999982 + 10 +603449.7118999995 + 20 +963101.8539000024 + 10 +603449.3681000014 + 20 +963101.0634000004 + 10 +603448.9886000017 + 20 +963100.1905000024 + 10 +603447.8212000011 + 20 +963098.8406000007 + 10 +603446.6119 + 20 +963098.0631000028 + 0 +TEXT + 5 +53E1 +330 +2 +100 +AcDbEntity + 8 +VIAB04_TESTI +100 +AcDbText + 10 +605403.3043343842 + 20 +962381.2785594415 + 30 +0.0 + 40 +1.016002032004063 + 1 +24 A + 7 +Arial + 72 + 1 + 11 +605404.7652704576 + 21 +962380.9777784853 + 31 +0.0 +100 +AcDbText + 73 + 1 + 0 +TEXT + 5 +53E2 +330 +2 +100 +AcDbEntity + 8 +VIAB04_TESTI +100 +AcDbText + 10 +605167.4293343854 + 20 +962423.9035594415 + 30 +0.0 + 40 +1.016002032004063 + 1 +49 A + 7 +Arial + 72 + 1 + 11 +605168.8902704587 + 21 +962423.6027784853 + 31 +0.0 +100 +AcDbText + 73 + 1 + 0 +LWPOLYLINE + 5 +AE8E +330 +2 +100 +AcDbEntity + 8 +VIAB01 +100 +AcDbPolyline + 90 + 117 + 70 + 1 + 43 +0.0 + 10 +605234.4713000003 + 20 +964005.9986000006 + 10 +605228.7942000003 + 20 +964007.4591000006 + 10 +605253.3174999999 + 20 +964096.7792000008 + 10 +605253.3578000003 + 20 +964096.9129000009 + 10 +605253.7092000005 + 20 +964097.9879000001 + 10 +605253.7198999999 + 20 +964098.0200999994 + 10 +605253.7890999997 + 20 +964098.2039 + 10 +605253.8044999996 + 20 +964098.2404999995 + 10 +605254.2511 + 20 +964099.2795000002 + 10 +605254.3167000003 + 20 +964099.4217000008 + 10 +605254.3685999997 + 20 +964099.5220999997 + 10 +605254.9067000001 + 20 +964100.5168999994 + 10 +605254.9473000001 + 20 +964100.5896000006 + 10 +605255.0456999997 + 20 +964100.7484000009 + 10 +605255.6710000001 + 20 +964101.6907000002 + 10 +605255.6763000004 + 20 +964101.6985999998 + 10 +605255.7906 + 20 +964101.8582000008 + 10 +605255.8300000001 + 20 +964101.9083999992 + 10 +605256.5373999998 + 20 +964102.7907999998 + 10 +605256.6226000004 + 20 +964102.8923000005 + 10 +605256.7156999996 + 20 +964102.9936999997 + 10 +605257.4995999997 + 20 +964103.8089000005 + 10 +605257.5406999999 + 20 +964103.8508000001 + 10 +605257.6840000003 + 20 +964103.9849999994 + 10 +605257.6948999996 + 20 +964103.9945000002 + 10 +605258.5488 + 20 +964104.7360999994 + 10 +605258.6896000001 + 20 +964104.8511999995 + 10 +605258.7604000001 + 20 +964104.9037999996 + 10 +605259.6775000003 + 20 +964105.5656000004 + 10 +605259.7663000003 + 20 +964105.6272999998 + 10 +605259.9033000004 + 20 +964105.7136000004 + 10 +605260.8761999998 + 20 +964106.2903000005 + 10 +605260.9058999997 + 20 +964106.3077000007 + 10 +605261.0789999999 + 20 +964106.4002 + 10 +605261.1140000001 + 20 +964106.4171999992 + 10 +605262.1347000003 + 20 +964106.9042000008 + 10 +605262.2785 + 20 +964106.9682000001 + 10 +605262.3833999997 + 20 +964107.0094000008 + 10 +605263.4437999995 + 20 +964107.4026999996 + 10 +605263.5226999997 + 20 +964107.4307000003 + 10 +605263.7007 + 20 +964107.4849999995 + 10 +605264.7921000001 + 20 +964107.7814000007 + 10 +605264.8019000003 + 20 +964107.7840999999 + 10 +605264.9930999996 + 20 +964107.8287000006 + 10 +605265.0553000002 + 20 +964107.8402999994 + 10 +605266.1688999999 + 20 +964108.0374999997 + 10 +605266.3004000001 + 20 +964108.0578000007 + 10 +605266.4365999997 + 20 +964108.0725999998 + 10 +605267.5635000002 + 20 +964108.1688999999 + 10 +605267.6227000002 + 20 +964108.1733999998 + 10 +605267.8189000003 + 20 +964108.1798000001 + 10 +605267.8329999997 + 20 +964108.1798000001 + 10 +605268.9638999999 + 20 +964108.1744999999 + 10 +605269.1459999998 + 20 +964108.1680999995 + 10 +605269.2334000003 + 20 +964108.1611000002 + 10 +605270.3592999996 + 20 +964108.0541999992 + 10 +605270.4672999997 + 20 +964108.0418999997 + 10 +605270.6264000004 + 20 +964108.0165999998 + 10 +605271.7381999996 + 20 +964107.8090000004 + 10 +605271.7728000004 + 20 +964107.8024000005 + 10 +605271.9639999997 + 20 +964107.7577999999 + 10 +605272.0011 + 20 +964107.7476000004 + 10 +605273.0895999996 + 20 +964107.4408999998 + 10 +605273.2402999997 + 20 +964107.3940999993 + 10 +605273.3454999998 + 20 +964107.3562000002 + 10 +605274.4022000004 + 20 +964106.9529999999 + 10 +605274.4808 + 20 +964106.9217000008 + 10 +605274.6497999998 + 20 +964106.8454999999 + 10 +605275.6659000004 + 20 +964106.3489999995 + 10 +605275.6756999996 + 20 +964106.3442000003 + 10 +605275.7857999997 + 20 +964106.2871000004 + 10 +605296.5012999997 + 20 +964094.9835 + 10 +605298.1973000001 + 20 +964094.1017000006 + 10 +605299.8998999996 + 20 +964093.3014000003 + 10 +605301.6333999997 + 20 +964092.5700000003 + 10 +605303.3947999999 + 20 +964091.9087000007 + 10 +605305.1812000004 + 20 +964091.3186000009 + 10 +605307.0477 + 20 +964090.7839000002 + 10 +605306.2215999998 + 20 +964087.8999000006 + 10 +605305.4451000001 + 20 +964085.0021000002 + 10 +605305.3954999996 + 20 +964085.0159000009 + 10 +605303.4711999996 + 20 +964085.5670999997 + 10 +605303.3563000001 + 20 +964085.602499999 + 10 +605301.4556 + 20 +964086.2303999998 + 10 +605301.4323000005 + 20 +964086.2381999996 + 10 +605301.3421000001 + 20 +964086.2704000008 + 10 +605299.4681000002 + 20 +964086.9739999995 + 10 +605299.3744999999 + 20 +964087.0110000001 + 10 +605299.3564999997 + 20 +964087.0185000004 + 10 +605297.5121999998 + 20 +964087.796599999 + 10 +605297.4022000004 + 20 +964087.8456999995 + 10 +605295.5905999998 + 20 +964088.6972000004 + 10 +605295.5398000004 + 20 +964088.7215999999 + 10 +605295.4828000004 + 20 +964088.7504999993 + 10 +605293.7067999998 + 20 +964089.6739000009 + 10 +605293.6536999997 + 20 +964089.7020999995 + 10 +605272.9710999997 + 20 +964100.9878000003 + 10 +605272.1370000001 + 20 +964101.3954000008 + 10 +605271.3324999995 + 20 +964101.702299999 + 10 +605270.5039999997 + 20 +964101.9357999994 + 10 +605269.6577000004 + 20 +964102.0938000009 + 10 +605268.8006999996 + 20 +964102.1752000005 + 10 +605267.9397999998 + 20 +964102.1791999992 + 10 +605267.0821000003 + 20 +964102.1059000008 + 10 +605266.2344000005 + 20 +964101.9558000007 + 10 +605265.4035999998 + 20 +964101.7302000001 + 10 +605264.5964999999 + 20 +964101.4308000002 + 10 +605263.8196000001 + 20 +964101.0601000004 + 10 +605263.0789999999 + 20 +964100.6210999993 + 10 +605262.381 + 20 +964100.1174999999 + 10 +605261.7309999997 + 20 +964099.5528999996 + 10 +605261.1342000002 + 20 +964098.9322999995 + 10 +605260.5958000003 + 20 +964098.2607000005 + 10 +605260.1198000004 + 20 +964097.5434000008 + 10 +605259.7101999996 + 20 +964096.7862000001 + 10 +605259.3701999998 + 20 +964095.9952000008 + 10 +605259.0824999995 + 20 +964095.1151000002 + 0 +LWPOLYLINE + 5 +B1B9 +330 +2 +100 +AcDbEntity + 8 +FABBRI +100 +AcDbPolyline + 90 + 12 + 70 + 0 + 43 +0.0 + 10 +605432.0055819957 + 20 +963146.2840280269 + 10 +605430.7353971335 + 20 +963140.603414833 + 10 +605425.809581031 + 20 +963141.9281802715 + 10 +605423.9687499774 + 20 +963136.4999999805 + 10 +605341.1515153713 + 20 +963156.8659114115 + 10 +605348.750000009 + 20 +963185.6249999753 + 10 +605363.8437500146 + 20 +963181.7656249964 + 10 +605370.2031249767 + 20 +963205.9375000064 + 10 +605402.7812500186 + 20 +963197.562499975 + 10 +605406.3682850699 + 20 +963210.9199146306 + 10 +605430.7495699418 + 20 +963203.524590796 + 10 +605431.0016530944 + 20 +963203.4812683187 + 0 +POINT + 5 +3C0A +330 +2 +100 +AcDbEntity + 8 +VIAB04 +100 +AcDbPoint + 10 +602685.9717 + 20 +964122.329500001 + 30 +0.0 + 0 +POINT + 5 +3CA +330 +2 +100 +AcDbEntity + 8 +VESPUN +100 +AcDbPoint + 10 +602499.40625 + 20 +962249.5781250002 + 30 +0.0 + 0 +POINT + 5 +3CB +330 +2 +100 +AcDbEntity + 8 +VESPUN +100 +AcDbPoint + 10 +602378.4531250001 + 20 +962051.515625 + 30 +0.0 + 0 +POINT + 5 +3CA +330 +2 +100 +AcDbEntity + 8 +VESPUN +100 +AcDbPoint + 10 +602499.40625 + 20 +962249.5781250002 + 30 +0.0 + 0 +ENDSEC + 0 +EOF diff --git a/src/spatialite/test/Apple-iPhone-4.jpg b/src/spatialite/test/Apple-iPhone-4.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d4a76cb3a26b0db43d44811ddea7c7bd6d5ad4e4 GIT binary patch literal 338025 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 _~D-BuK_{*C8?w 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 Rh{R41jk=t)pr&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +check_PROGRAMS = check_endian$(EXEEXT) check_version$(EXEEXT) \ + check_init$(EXEEXT) check_init2$(EXEEXT) \ + check_geom_aux$(EXEEXT) check_geometry_cols$(EXEEXT) \ + check_create$(EXEEXT) check_bufovflw$(EXEEXT) \ + check_fdo1$(EXEEXT) check_fdo2$(EXEEXT) check_fdo3$(EXEEXT) \ + check_fdo_bufovflw$(EXEEXT) check_md5$(EXEEXT) \ + check_dbf_load$(EXEEXT) check_shp_load$(EXEEXT) \ + check_shp_load_3d$(EXEEXT) shape_cp1252$(EXEEXT) \ + shape_primitives$(EXEEXT) shape_utf8_1$(EXEEXT) \ + shape_utf8_1ex$(EXEEXT) shape_utf8_2$(EXEEXT) \ + shape_3d$(EXEEXT) check_xls_load$(EXEEXT) \ + check_math_funcs$(EXEEXT) check_gaia_util$(EXEEXT) \ + check_gaia_utf8$(EXEEXT) check_extension$(EXEEXT) \ + check_recover_geom$(EXEEXT) check_sql_stmt$(EXEEXT) \ + check_multithread$(EXEEXT) check_virtualtable1$(EXEEXT) \ + check_virtualtable2$(EXEEXT) check_virtualtable3$(EXEEXT) \ + check_virtualtable4$(EXEEXT) check_virtualtable5$(EXEEXT) \ + check_virtualtable6$(EXEEXT) check_virtual_ovflw$(EXEEXT) \ + check_mbrcache$(EXEEXT) check_spatialindex$(EXEEXT) \ + check_exif$(EXEEXT) check_exif2$(EXEEXT) \ + check_relations_fncts$(EXEEXT) \ + check_extra_relations_fncts$(EXEEXT) \ + check_geoscvt_fncts$(EXEEXT) check_libxml2$(EXEEXT) \ + check_styling$(EXEEXT) check_virtualxpath$(EXEEXT) \ + check_virtualbbox$(EXEEXT) check_wfsin$(EXEEXT) \ + check_dxf$(EXEEXT) check_metacatalog$(EXEEXT) $(am__EXEEXT_1) +@ENABLE_GEOPACKAGE_TRUE@am__append_1 = \ +@ENABLE_GEOPACKAGE_TRUE@ check_createBaseTables \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgCreateTilesTable \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgCreateTilesTableMissingSRID \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgCreateTilesZoomLevel \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgInsertEpsgSRID \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgCreateFeaturesTable \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkg_base_core_container_data_file_format_application_id \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkg_base_core_spatial_ref_sys_data_table_def \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkg_base_core_spatial_ref_sys_data_values_default \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkg_base_core_contents_data_table_def \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkg_opt_extension_mechanism_extensions_data_table_def \ +@ENABLE_GEOPACKAGE_TRUE@ check_add_tile_triggers \ +@ENABLE_GEOPACKAGE_TRUE@ check_add_tile_triggers_bad_table_name \ +@ENABLE_GEOPACKAGE_TRUE@ check_get_normal_row \ +@ENABLE_GEOPACKAGE_TRUE@ check_get_normal_row_bad_geopackage \ +@ENABLE_GEOPACKAGE_TRUE@ check_get_normal_row_bad_geopackage2 \ +@ENABLE_GEOPACKAGE_TRUE@ check_get_normal_zoom \ +@ENABLE_GEOPACKAGE_TRUE@ check_get_normal_zoom_extension_load \ +@ENABLE_GEOPACKAGE_TRUE@ check_get_normal_zoom_bad_geopackage \ +@ENABLE_GEOPACKAGE_TRUE@ check_get_normal_zoom_bad_geopackage2 \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgGetImageFormat \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgGetImageFormat_nonimage \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgGetImageFormat_nonblob \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgGetImageFormat_png \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgGetImageFormat_tiff \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgGetImageFormat_webp \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgConvert \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgVirtual + +subdir = test +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/depcomp $(top_srcdir)/test-driver +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +@ENABLE_GEOPACKAGE_TRUE@am__EXEEXT_1 = \ +@ENABLE_GEOPACKAGE_TRUE@ check_createBaseTables$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgCreateTilesTable$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgCreateTilesTableMissingSRID$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgCreateTilesZoomLevel$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgInsertEpsgSRID$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgCreateFeaturesTable$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkg_base_core_container_data_file_format_application_id$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkg_base_core_spatial_ref_sys_data_table_def$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkg_base_core_spatial_ref_sys_data_values_default$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkg_base_core_contents_data_table_def$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkg_opt_extension_mechanism_extensions_data_table_def$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_add_tile_triggers$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_add_tile_triggers_bad_table_name$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_get_normal_row$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_get_normal_row_bad_geopackage$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_get_normal_row_bad_geopackage2$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_get_normal_zoom$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_get_normal_zoom_extension_load$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_get_normal_zoom_bad_geopackage$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_get_normal_zoom_bad_geopackage2$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgGetImageFormat$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgGetImageFormat_nonimage$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgGetImageFormat_nonblob$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgGetImageFormat_png$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgGetImageFormat_tiff$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgGetImageFormat_webp$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgConvert$(EXEEXT) \ +@ENABLE_GEOPACKAGE_TRUE@ check_gpkgVirtual$(EXEEXT) +check_add_tile_triggers_SOURCES = check_add_tile_triggers.c +check_add_tile_triggers_OBJECTS = check_add_tile_triggers.$(OBJEXT) +check_add_tile_triggers_LDADD = $(LDADD) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +check_add_tile_triggers_bad_table_name_SOURCES = \ + check_add_tile_triggers_bad_table_name.c +check_add_tile_triggers_bad_table_name_OBJECTS = \ + check_add_tile_triggers_bad_table_name.$(OBJEXT) +check_add_tile_triggers_bad_table_name_LDADD = $(LDADD) +check_bufovflw_SOURCES = check_bufovflw.c +check_bufovflw_OBJECTS = check_bufovflw.$(OBJEXT) +check_bufovflw_LDADD = $(LDADD) +check_create_SOURCES = check_create.c +check_create_OBJECTS = check_create.$(OBJEXT) +check_create_LDADD = $(LDADD) +check_createBaseTables_SOURCES = check_createBaseTables.c +check_createBaseTables_OBJECTS = check_createBaseTables.$(OBJEXT) +check_createBaseTables_LDADD = $(LDADD) +check_dbf_load_SOURCES = check_dbf_load.c +check_dbf_load_OBJECTS = check_dbf_load.$(OBJEXT) +check_dbf_load_LDADD = $(LDADD) +check_dxf_SOURCES = check_dxf.c +check_dxf_OBJECTS = check_dxf.$(OBJEXT) +check_dxf_LDADD = $(LDADD) +check_endian_SOURCES = check_endian.c +check_endian_OBJECTS = check_endian.$(OBJEXT) +check_endian_LDADD = $(LDADD) +check_exif_SOURCES = check_exif.c +check_exif_OBJECTS = check_exif.$(OBJEXT) +check_exif_LDADD = $(LDADD) +check_exif2_SOURCES = check_exif2.c +check_exif2_OBJECTS = check_exif2.$(OBJEXT) +check_exif2_LDADD = $(LDADD) +check_extension_SOURCES = check_extension.c +check_extension_OBJECTS = check_extension.$(OBJEXT) +check_extension_LDADD = $(LDADD) +check_extra_relations_fncts_SOURCES = check_extra_relations_fncts.c +check_extra_relations_fncts_OBJECTS = \ + check_extra_relations_fncts.$(OBJEXT) +check_extra_relations_fncts_LDADD = $(LDADD) +check_fdo1_SOURCES = check_fdo1.c +check_fdo1_OBJECTS = check_fdo1.$(OBJEXT) +check_fdo1_LDADD = $(LDADD) +check_fdo2_SOURCES = check_fdo2.c +check_fdo2_OBJECTS = check_fdo2.$(OBJEXT) +check_fdo2_LDADD = $(LDADD) +check_fdo3_SOURCES = check_fdo3.c +check_fdo3_OBJECTS = check_fdo3.$(OBJEXT) +check_fdo3_LDADD = $(LDADD) +check_fdo_bufovflw_SOURCES = check_fdo_bufovflw.c +check_fdo_bufovflw_OBJECTS = check_fdo_bufovflw.$(OBJEXT) +check_fdo_bufovflw_LDADD = $(LDADD) +check_gaia_utf8_SOURCES = check_gaia_utf8.c +check_gaia_utf8_OBJECTS = check_gaia_utf8.$(OBJEXT) +check_gaia_utf8_LDADD = $(LDADD) +check_gaia_util_SOURCES = check_gaia_util.c +check_gaia_util_OBJECTS = check_gaia_util.$(OBJEXT) +check_gaia_util_LDADD = $(LDADD) +check_geom_aux_SOURCES = check_geom_aux.c +check_geom_aux_OBJECTS = check_geom_aux.$(OBJEXT) +check_geom_aux_LDADD = $(LDADD) +check_geometry_cols_SOURCES = check_geometry_cols.c +check_geometry_cols_OBJECTS = check_geometry_cols.$(OBJEXT) +check_geometry_cols_LDADD = $(LDADD) +check_geoscvt_fncts_SOURCES = check_geoscvt_fncts.c +check_geoscvt_fncts_OBJECTS = check_geoscvt_fncts.$(OBJEXT) +check_geoscvt_fncts_LDADD = $(LDADD) +check_get_normal_row_SOURCES = check_get_normal_row.c +check_get_normal_row_OBJECTS = check_get_normal_row.$(OBJEXT) +check_get_normal_row_LDADD = $(LDADD) +check_get_normal_row_bad_geopackage_SOURCES = \ + check_get_normal_row_bad_geopackage.c +check_get_normal_row_bad_geopackage_OBJECTS = \ + check_get_normal_row_bad_geopackage.$(OBJEXT) +check_get_normal_row_bad_geopackage_LDADD = $(LDADD) +check_get_normal_row_bad_geopackage2_SOURCES = \ + check_get_normal_row_bad_geopackage2.c +check_get_normal_row_bad_geopackage2_OBJECTS = \ + check_get_normal_row_bad_geopackage2.$(OBJEXT) +check_get_normal_row_bad_geopackage2_LDADD = $(LDADD) +check_get_normal_zoom_SOURCES = check_get_normal_zoom.c +check_get_normal_zoom_OBJECTS = check_get_normal_zoom.$(OBJEXT) +check_get_normal_zoom_LDADD = $(LDADD) +check_get_normal_zoom_bad_geopackage_SOURCES = \ + check_get_normal_zoom_bad_geopackage.c +check_get_normal_zoom_bad_geopackage_OBJECTS = \ + check_get_normal_zoom_bad_geopackage.$(OBJEXT) +check_get_normal_zoom_bad_geopackage_LDADD = $(LDADD) +check_get_normal_zoom_bad_geopackage2_SOURCES = \ + check_get_normal_zoom_bad_geopackage2.c +check_get_normal_zoom_bad_geopackage2_OBJECTS = \ + check_get_normal_zoom_bad_geopackage2.$(OBJEXT) +check_get_normal_zoom_bad_geopackage2_LDADD = $(LDADD) +check_get_normal_zoom_extension_load_SOURCES = \ + check_get_normal_zoom_extension_load.c +check_get_normal_zoom_extension_load_OBJECTS = \ + check_get_normal_zoom_extension_load.$(OBJEXT) +check_get_normal_zoom_extension_load_LDADD = $(LDADD) +check_gpkgConvert_SOURCES = check_gpkgConvert.c +check_gpkgConvert_OBJECTS = check_gpkgConvert.$(OBJEXT) +check_gpkgConvert_LDADD = $(LDADD) +check_gpkgCreateFeaturesTable_SOURCES = \ + check_gpkgCreateFeaturesTable.c +check_gpkgCreateFeaturesTable_OBJECTS = \ + check_gpkgCreateFeaturesTable.$(OBJEXT) +check_gpkgCreateFeaturesTable_LDADD = $(LDADD) +check_gpkgCreateTilesTable_SOURCES = check_gpkgCreateTilesTable.c +check_gpkgCreateTilesTable_OBJECTS = \ + check_gpkgCreateTilesTable.$(OBJEXT) +check_gpkgCreateTilesTable_LDADD = $(LDADD) +check_gpkgCreateTilesTableMissingSRID_SOURCES = \ + check_gpkgCreateTilesTableMissingSRID.c +check_gpkgCreateTilesTableMissingSRID_OBJECTS = \ + check_gpkgCreateTilesTableMissingSRID.$(OBJEXT) +check_gpkgCreateTilesTableMissingSRID_LDADD = $(LDADD) +check_gpkgCreateTilesZoomLevel_SOURCES = \ + check_gpkgCreateTilesZoomLevel.c +check_gpkgCreateTilesZoomLevel_OBJECTS = \ + check_gpkgCreateTilesZoomLevel.$(OBJEXT) +check_gpkgCreateTilesZoomLevel_LDADD = $(LDADD) +check_gpkgGetImageFormat_SOURCES = check_gpkgGetImageFormat.c +check_gpkgGetImageFormat_OBJECTS = check_gpkgGetImageFormat.$(OBJEXT) +check_gpkgGetImageFormat_LDADD = $(LDADD) +check_gpkgGetImageFormat_nonblob_SOURCES = \ + check_gpkgGetImageFormat_nonblob.c +check_gpkgGetImageFormat_nonblob_OBJECTS = \ + check_gpkgGetImageFormat_nonblob.$(OBJEXT) +check_gpkgGetImageFormat_nonblob_LDADD = $(LDADD) +check_gpkgGetImageFormat_nonimage_SOURCES = \ + check_gpkgGetImageFormat_nonimage.c +check_gpkgGetImageFormat_nonimage_OBJECTS = \ + check_gpkgGetImageFormat_nonimage.$(OBJEXT) +check_gpkgGetImageFormat_nonimage_LDADD = $(LDADD) +check_gpkgGetImageFormat_png_SOURCES = check_gpkgGetImageFormat_png.c +check_gpkgGetImageFormat_png_OBJECTS = \ + check_gpkgGetImageFormat_png.$(OBJEXT) +check_gpkgGetImageFormat_png_LDADD = $(LDADD) +check_gpkgGetImageFormat_tiff_SOURCES = \ + check_gpkgGetImageFormat_tiff.c +check_gpkgGetImageFormat_tiff_OBJECTS = \ + check_gpkgGetImageFormat_tiff.$(OBJEXT) +check_gpkgGetImageFormat_tiff_LDADD = $(LDADD) +check_gpkgGetImageFormat_webp_SOURCES = \ + check_gpkgGetImageFormat_webp.c +check_gpkgGetImageFormat_webp_OBJECTS = \ + check_gpkgGetImageFormat_webp.$(OBJEXT) +check_gpkgGetImageFormat_webp_LDADD = $(LDADD) +check_gpkgInsertEpsgSRID_SOURCES = check_gpkgInsertEpsgSRID.c +check_gpkgInsertEpsgSRID_OBJECTS = check_gpkgInsertEpsgSRID.$(OBJEXT) +check_gpkgInsertEpsgSRID_LDADD = $(LDADD) +check_gpkgVirtual_SOURCES = check_gpkgVirtual.c +check_gpkgVirtual_OBJECTS = check_gpkgVirtual.$(OBJEXT) +check_gpkgVirtual_LDADD = $(LDADD) +check_gpkg_base_core_container_data_file_format_application_id_SOURCES = check_gpkg_base_core_container_data_file_format_application_id.c +check_gpkg_base_core_container_data_file_format_application_id_OBJECTS = check_gpkg_base_core_container_data_file_format_application_id.$(OBJEXT) +check_gpkg_base_core_container_data_file_format_application_id_LDADD = \ + $(LDADD) +check_gpkg_base_core_contents_data_table_def_SOURCES = \ + check_gpkg_base_core_contents_data_table_def.c +check_gpkg_base_core_contents_data_table_def_OBJECTS = \ + check_gpkg_base_core_contents_data_table_def.$(OBJEXT) +check_gpkg_base_core_contents_data_table_def_LDADD = $(LDADD) +check_gpkg_base_core_spatial_ref_sys_data_table_def_SOURCES = \ + check_gpkg_base_core_spatial_ref_sys_data_table_def.c +check_gpkg_base_core_spatial_ref_sys_data_table_def_OBJECTS = \ + check_gpkg_base_core_spatial_ref_sys_data_table_def.$(OBJEXT) +check_gpkg_base_core_spatial_ref_sys_data_table_def_LDADD = $(LDADD) +check_gpkg_base_core_spatial_ref_sys_data_values_default_SOURCES = \ + check_gpkg_base_core_spatial_ref_sys_data_values_default.c +check_gpkg_base_core_spatial_ref_sys_data_values_default_OBJECTS = check_gpkg_base_core_spatial_ref_sys_data_values_default.$(OBJEXT) +check_gpkg_base_core_spatial_ref_sys_data_values_default_LDADD = \ + $(LDADD) +check_gpkg_opt_extension_mechanism_extensions_data_table_def_SOURCES = check_gpkg_opt_extension_mechanism_extensions_data_table_def.c +check_gpkg_opt_extension_mechanism_extensions_data_table_def_OBJECTS = check_gpkg_opt_extension_mechanism_extensions_data_table_def.$(OBJEXT) +check_gpkg_opt_extension_mechanism_extensions_data_table_def_LDADD = \ + $(LDADD) +check_init_SOURCES = check_init.c +check_init_OBJECTS = check_init.$(OBJEXT) +check_init_LDADD = $(LDADD) +check_init2_SOURCES = check_init2.c +check_init2_OBJECTS = check_init2.$(OBJEXT) +check_init2_LDADD = $(LDADD) +check_libxml2_SOURCES = check_libxml2.c +check_libxml2_OBJECTS = check_libxml2.$(OBJEXT) +check_libxml2_LDADD = $(LDADD) +check_math_funcs_SOURCES = check_math_funcs.c +check_math_funcs_OBJECTS = check_math_funcs.$(OBJEXT) +check_math_funcs_LDADD = $(LDADD) +check_mbrcache_SOURCES = check_mbrcache.c +check_mbrcache_OBJECTS = check_mbrcache.$(OBJEXT) +check_mbrcache_LDADD = $(LDADD) +check_md5_SOURCES = check_md5.c +check_md5_OBJECTS = check_md5.$(OBJEXT) +check_md5_LDADD = $(LDADD) +check_metacatalog_SOURCES = check_metacatalog.c +check_metacatalog_OBJECTS = check_metacatalog.$(OBJEXT) +check_metacatalog_LDADD = $(LDADD) +check_multithread_SOURCES = check_multithread.c +check_multithread_OBJECTS = check_multithread.$(OBJEXT) +check_multithread_LDADD = $(LDADD) +check_recover_geom_SOURCES = check_recover_geom.c +check_recover_geom_OBJECTS = check_recover_geom.$(OBJEXT) +check_recover_geom_LDADD = $(LDADD) +check_relations_fncts_SOURCES = check_relations_fncts.c +check_relations_fncts_OBJECTS = check_relations_fncts.$(OBJEXT) +check_relations_fncts_LDADD = $(LDADD) +check_shp_load_SOURCES = check_shp_load.c +check_shp_load_OBJECTS = check_shp_load.$(OBJEXT) +check_shp_load_LDADD = $(LDADD) +check_shp_load_3d_SOURCES = check_shp_load_3d.c +check_shp_load_3d_OBJECTS = check_shp_load_3d.$(OBJEXT) +check_shp_load_3d_LDADD = $(LDADD) +check_spatialindex_SOURCES = check_spatialindex.c +check_spatialindex_OBJECTS = check_spatialindex.$(OBJEXT) +check_spatialindex_LDADD = $(LDADD) +check_sql_stmt_SOURCES = check_sql_stmt.c +check_sql_stmt_OBJECTS = check_sql_stmt.$(OBJEXT) +check_sql_stmt_LDADD = $(LDADD) +check_styling_SOURCES = check_styling.c +check_styling_OBJECTS = check_styling.$(OBJEXT) +check_styling_LDADD = $(LDADD) +check_version_SOURCES = check_version.c +check_version_OBJECTS = check_version.$(OBJEXT) +check_version_LDADD = $(LDADD) +check_virtual_ovflw_SOURCES = check_virtual_ovflw.c +check_virtual_ovflw_OBJECTS = check_virtual_ovflw.$(OBJEXT) +check_virtual_ovflw_LDADD = $(LDADD) +check_virtualbbox_SOURCES = check_virtualbbox.c +check_virtualbbox_OBJECTS = check_virtualbbox.$(OBJEXT) +check_virtualbbox_LDADD = $(LDADD) +check_virtualtable1_SOURCES = check_virtualtable1.c +check_virtualtable1_OBJECTS = check_virtualtable1.$(OBJEXT) +check_virtualtable1_LDADD = $(LDADD) +check_virtualtable2_SOURCES = check_virtualtable2.c +check_virtualtable2_OBJECTS = check_virtualtable2.$(OBJEXT) +check_virtualtable2_LDADD = $(LDADD) +check_virtualtable3_SOURCES = check_virtualtable3.c +check_virtualtable3_OBJECTS = check_virtualtable3.$(OBJEXT) +check_virtualtable3_LDADD = $(LDADD) +check_virtualtable4_SOURCES = check_virtualtable4.c +check_virtualtable4_OBJECTS = check_virtualtable4.$(OBJEXT) +check_virtualtable4_LDADD = $(LDADD) +check_virtualtable5_SOURCES = check_virtualtable5.c +check_virtualtable5_OBJECTS = check_virtualtable5.$(OBJEXT) +check_virtualtable5_LDADD = $(LDADD) +check_virtualtable6_SOURCES = check_virtualtable6.c +check_virtualtable6_OBJECTS = check_virtualtable6.$(OBJEXT) +check_virtualtable6_LDADD = $(LDADD) +check_virtualxpath_SOURCES = check_virtualxpath.c +check_virtualxpath_OBJECTS = check_virtualxpath.$(OBJEXT) +check_virtualxpath_LDADD = $(LDADD) +check_wfsin_SOURCES = check_wfsin.c +check_wfsin_OBJECTS = check_wfsin.$(OBJEXT) +check_wfsin_LDADD = $(LDADD) +check_xls_load_SOURCES = check_xls_load.c +check_xls_load_OBJECTS = check_xls_load.$(OBJEXT) +check_xls_load_LDADD = $(LDADD) +shape_3d_SOURCES = shape_3d.c +shape_3d_OBJECTS = shape_3d.$(OBJEXT) +shape_3d_LDADD = $(LDADD) +shape_cp1252_SOURCES = shape_cp1252.c +shape_cp1252_OBJECTS = shape_cp1252.$(OBJEXT) +shape_cp1252_LDADD = $(LDADD) +shape_primitives_SOURCES = shape_primitives.c +shape_primitives_OBJECTS = shape_primitives.$(OBJEXT) +shape_primitives_LDADD = $(LDADD) +shape_utf8_1_SOURCES = shape_utf8_1.c +shape_utf8_1_OBJECTS = shape_utf8_1.$(OBJEXT) +shape_utf8_1_LDADD = $(LDADD) +shape_utf8_1ex_SOURCES = shape_utf8_1ex.c +shape_utf8_1ex_OBJECTS = shape_utf8_1ex.$(OBJEXT) +shape_utf8_1ex_LDADD = $(LDADD) +shape_utf8_2_SOURCES = shape_utf8_2.c +shape_utf8_2_OBJECTS = shape_utf8_2.$(OBJEXT) +shape_utf8_2_LDADD = $(LDADD) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir) +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ + $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ + $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ + $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = check_add_tile_triggers.c \ + check_add_tile_triggers_bad_table_name.c check_bufovflw.c \ + check_create.c check_createBaseTables.c check_dbf_load.c \ + check_dxf.c check_endian.c check_exif.c check_exif2.c \ + check_extension.c check_extra_relations_fncts.c check_fdo1.c \ + check_fdo2.c check_fdo3.c check_fdo_bufovflw.c \ + check_gaia_utf8.c check_gaia_util.c check_geom_aux.c \ + check_geometry_cols.c check_geoscvt_fncts.c \ + check_get_normal_row.c check_get_normal_row_bad_geopackage.c \ + check_get_normal_row_bad_geopackage2.c check_get_normal_zoom.c \ + check_get_normal_zoom_bad_geopackage.c \ + check_get_normal_zoom_bad_geopackage2.c \ + check_get_normal_zoom_extension_load.c check_gpkgConvert.c \ + check_gpkgCreateFeaturesTable.c check_gpkgCreateTilesTable.c \ + check_gpkgCreateTilesTableMissingSRID.c \ + check_gpkgCreateTilesZoomLevel.c check_gpkgGetImageFormat.c \ + check_gpkgGetImageFormat_nonblob.c \ + check_gpkgGetImageFormat_nonimage.c \ + check_gpkgGetImageFormat_png.c check_gpkgGetImageFormat_tiff.c \ + check_gpkgGetImageFormat_webp.c check_gpkgInsertEpsgSRID.c \ + check_gpkgVirtual.c \ + check_gpkg_base_core_container_data_file_format_application_id.c \ + check_gpkg_base_core_contents_data_table_def.c \ + check_gpkg_base_core_spatial_ref_sys_data_table_def.c \ + check_gpkg_base_core_spatial_ref_sys_data_values_default.c \ + check_gpkg_opt_extension_mechanism_extensions_data_table_def.c \ + check_init.c check_init2.c check_libxml2.c check_math_funcs.c \ + check_mbrcache.c check_md5.c check_metacatalog.c \ + check_multithread.c check_recover_geom.c \ + check_relations_fncts.c check_shp_load.c check_shp_load_3d.c \ + check_spatialindex.c check_sql_stmt.c check_styling.c \ + check_version.c check_virtual_ovflw.c check_virtualbbox.c \ + check_virtualtable1.c check_virtualtable2.c \ + check_virtualtable3.c check_virtualtable4.c \ + check_virtualtable5.c check_virtualtable6.c \ + check_virtualxpath.c check_wfsin.c check_xls_load.c shape_3d.c \ + shape_cp1252.c shape_primitives.c shape_utf8_1.c \ + shape_utf8_1ex.c shape_utf8_2.c +DIST_SOURCES = check_add_tile_triggers.c \ + check_add_tile_triggers_bad_table_name.c check_bufovflw.c \ + check_create.c check_createBaseTables.c check_dbf_load.c \ + check_dxf.c check_endian.c check_exif.c check_exif2.c \ + check_extension.c check_extra_relations_fncts.c check_fdo1.c \ + check_fdo2.c check_fdo3.c check_fdo_bufovflw.c \ + check_gaia_utf8.c check_gaia_util.c check_geom_aux.c \ + check_geometry_cols.c check_geoscvt_fncts.c \ + check_get_normal_row.c check_get_normal_row_bad_geopackage.c \ + check_get_normal_row_bad_geopackage2.c check_get_normal_zoom.c \ + check_get_normal_zoom_bad_geopackage.c \ + check_get_normal_zoom_bad_geopackage2.c \ + check_get_normal_zoom_extension_load.c check_gpkgConvert.c \ + check_gpkgCreateFeaturesTable.c check_gpkgCreateTilesTable.c \ + check_gpkgCreateTilesTableMissingSRID.c \ + check_gpkgCreateTilesZoomLevel.c check_gpkgGetImageFormat.c \ + check_gpkgGetImageFormat_nonblob.c \ + check_gpkgGetImageFormat_nonimage.c \ + check_gpkgGetImageFormat_png.c check_gpkgGetImageFormat_tiff.c \ + check_gpkgGetImageFormat_webp.c check_gpkgInsertEpsgSRID.c \ + check_gpkgVirtual.c \ + check_gpkg_base_core_container_data_file_format_application_id.c \ + check_gpkg_base_core_contents_data_table_def.c \ + check_gpkg_base_core_spatial_ref_sys_data_table_def.c \ + check_gpkg_base_core_spatial_ref_sys_data_values_default.c \ + check_gpkg_opt_extension_mechanism_extensions_data_table_def.c \ + check_init.c check_init2.c check_libxml2.c check_math_funcs.c \ + check_mbrcache.c check_md5.c check_metacatalog.c \ + check_multithread.c check_recover_geom.c \ + check_relations_fncts.c check_shp_load.c check_shp_load_3d.c \ + check_spatialindex.c check_sql_stmt.c check_styling.c \ + check_version.c check_virtual_ovflw.c check_virtualbbox.c \ + check_virtualtable1.c check_virtualtable2.c \ + check_virtualtable3.c check_virtualtable4.c \ + check_virtualtable5.c check_virtualtable6.c \ + check_virtualxpath.c check_wfsin.c check_xls_load.c shape_3d.c \ + shape_cp1252.c shape_primitives.c shape_utf8_1.c \ + shape_utf8_1ex.c shape_utf8_2.c +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + check recheck distdir +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__tty_colors_dummy = \ + mgn= red= grn= lgn= blu= brg= std=; \ + am__color_tests=no +am__tty_colors = { \ + $(am__tty_colors_dummy); \ + if test "X$(AM_COLOR_TESTS)" = Xno; then \ + am__color_tests=no; \ + elif test "X$(AM_COLOR_TESTS)" = Xalways; then \ + am__color_tests=yes; \ + elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \ + am__color_tests=yes; \ + fi; \ + if test $$am__color_tests = yes; then \ + red=''; \ + grn=''; \ + lgn=''; \ + blu=''; \ + mgn=''; \ + brg=''; \ + std=''; \ + fi; \ +} +am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +am__vpath_adj = case $$p in \ + $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ + *) f=$$p;; \ + esac; +am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +am__install_max = 40 +am__nobase_strip_setup = \ + srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +am__nobase_strip = \ + for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +am__nobase_list = $(am__nobase_strip_setup); \ + for p in $$list; do echo "$$p $$p"; done | \ + sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ + $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ + if (++n[$$2] == $(am__install_max)) \ + { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ + END { for (dir in files) print dir, files[dir] }' +am__base_list = \ + sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ + sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } +am__recheck_rx = ^[ ]*:recheck:[ ]* +am__global_test_result_rx = ^[ ]*:global-test-result:[ ]* +am__copy_in_global_log_rx = ^[ ]*:copy-in-global-log:[ ]* +# A command that, given a newline-separated list of test names on the +# standard input, print the name of the tests that are to be re-run +# upon "make recheck". +am__list_recheck_tests = $(AWK) '{ \ + recheck = 1; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + { \ + if ((getline line2 < ($$0 ".log")) < 0) \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \ + { \ + recheck = 0; \ + break; \ + } \ + else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \ + { \ + break; \ + } \ + }; \ + if (recheck) \ + print $$0; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# A command that, given a newline-separated list of test names on the +# standard input, create the global log from their .trs and .log files. +am__create_global_log = $(AWK) ' \ +function fatal(msg) \ +{ \ + print "fatal: making $@: " msg | "cat >&2"; \ + exit 1; \ +} \ +function rst_section(header) \ +{ \ + print header; \ + len = length(header); \ + for (i = 1; i <= len; i = i + 1) \ + printf "="; \ + printf "\n\n"; \ +} \ +{ \ + copy_in_global_log = 1; \ + global_test_result = "RUN"; \ + while ((rc = (getline line < ($$0 ".trs"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".trs"); \ + if (line ~ /$(am__global_test_result_rx)/) \ + { \ + sub("$(am__global_test_result_rx)", "", line); \ + sub("[ ]*$$", "", line); \ + global_test_result = line; \ + } \ + else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \ + copy_in_global_log = 0; \ + }; \ + if (copy_in_global_log) \ + { \ + rst_section(global_test_result ": " $$0); \ + while ((rc = (getline line < ($$0 ".log"))) != 0) \ + { \ + if (rc < 0) \ + fatal("failed to read from " $$0 ".log"); \ + print line; \ + }; \ + printf "\n"; \ + }; \ + close ($$0 ".trs"); \ + close ($$0 ".log"); \ +}' +# Restructured Text title. +am__rst_title = { sed 's/.*/ & /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; } +# Solaris 10 'make', and several other traditional 'make' implementations, +# pass "-e" to $(SHELL), and POSIX 2008 even requires this. Work around it +# by disabling -e (using the XSI extension "set +e") if it's set. +am__sh_e_setup = case $$- in *e*) set +e;; esac +# Default flags passed to test drivers. +am__common_driver_flags = \ + --color-tests "$$am__color_tests" \ + --enable-hard-errors "$$am__enable_hard_errors" \ + --expect-failure "$$am__expect_failure" +# To be inserted before the command running the test. Creates the +# directory for the log if needed. Stores in $dir the directory +# containing $f, in $tst the test, in $log the log. Executes the +# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and +# passes TESTS_ENVIRONMENT. Set up options for the wrapper that +# will run the test scripts (or their associated LOG_COMPILER, if +# thy have one). +am__check_pre = \ +$(am__sh_e_setup); \ +$(am__vpath_adj_setup) $(am__vpath_adj) \ +$(am__tty_colors); \ +srcdir=$(srcdir); export srcdir; \ +case "$@" in \ + */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;; \ + *) am__odir=.;; \ +esac; \ +test "x$$am__odir" = x"." || test -d "$$am__odir" \ + || $(MKDIR_P) "$$am__odir" || exit $$?; \ +if test -f "./$$f"; then dir=./; \ +elif test -f "$$f"; then dir=; \ +else dir="$(srcdir)/"; fi; \ +tst=$$dir$$f; log='$@'; \ +if test -n '$(DISABLE_HARD_ERRORS)'; then \ + am__enable_hard_errors=no; \ +else \ + am__enable_hard_errors=yes; \ +fi; \ +case " $(XFAIL_TESTS) " in \ + *[\ \ ]$$f[\ \ ]* | *[\ \ ]$$dir$$f[\ \ ]*) \ + am__expect_failure=yes;; \ + *) \ + am__expect_failure=no;; \ +esac; \ +$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT) +# A shell command to get the names of the tests scripts with any registered +# extension removed (i.e., equivalently, the names of the test logs, with +# the '.log' extension removed). The result is saved in the shell variable +# '$bases'. This honors runtime overriding of TESTS and TEST_LOGS. Sadly, +# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)", +# since that might cause problem with VPATH rewrites for suffix-less tests. +# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'. +am__set_TESTS_bases = \ + bases='$(TEST_LOGS)'; \ + bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \ + bases=`echo $$bases` +RECHECK_LOGS = $(TEST_LOGS) +TEST_SUITE_LOG = test-suite.log +TEST_EXTENSIONS = @EXEEXT@ .test +LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS) +am__set_b = \ + case '$@' in \ + */*) \ + case '$*' in \ + */*) b='$*';; \ + *) b=`echo '$@' | sed 's/\.log$$//'`; \ + esac;; \ + *) \ + b='$*';; \ + esac +am__test_logs1 = $(TESTS:=.log) +am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log) +TEST_LOGS = $(am__test_logs2:.test.log=.log) +TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/test-driver +TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \ + $(TEST_LOG_FLAGS) +DIST_SUBDIRS = $(SUBDIRS) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +AM_CPPFLAGS = @CFLAGS@ @GEOS_CFLAGS@ @LIBXML2_CFLAGS@ +AM_CFLAGS = -I@srcdir@/../src/headers -I@srcdir@ +AM_LDFLAGS = -L../src -lspatialite -lm $(GCOV_FLAGS) +TESTS = $(check_PROGRAMS) +MOSTLYCLEANFILES = *.gcna *.gcno *.gcda +EXTRA_DIST = asprintf4win.h \ + fnmatch_impl4win.h \ + fnmatch4win.h \ + scandir4win.h \ + test_helpers.h \ + shapetest1.dbf \ + shapetest1.prj \ + shapetest1.qpj \ + shapetest1.shp \ + shapetest1.shx \ + test_under_valgrind.sh \ + WritingSQLTestCase.txt \ + test-legacy-2.3.1.sqlite \ + test-legacy-3.0.1.sqlite \ + test-invalid.sqlite \ + test_geos.sqlite \ + shp/new-caledonia/buildings.dbf \ + shp/new-caledonia/buildings.prj \ + shp/new-caledonia/buildings.shp \ + shp/new-caledonia/buildings.shx \ + shp/new-caledonia/points.dbf \ + shp/new-caledonia/points.prj \ + shp/new-caledonia/points.shp \ + shp/new-caledonia/points.shx \ + shp/new-caledonia/railways.dbf \ + shp/new-caledonia/railways.shp \ + shp/new-caledonia/railways.shx \ + shp/gaza/aeroway.dbf \ + shp/gaza/aeroway.prj \ + shp/gaza/aeroway.shp \ + shp/gaza/aeroway.shx \ + shp/gaza/barrier.dbf \ + shp/gaza/barrier.prj \ + shp/gaza/barrier.shp \ + shp/gaza/barrier.shx \ + shp/gaza/route.dbf \ + shp/gaza/route.prj \ + shp/gaza/route.shp \ + shp/gaza/route.shx \ + shp/taiwan/hystoric.dbf \ + shp/taiwan/hystoric.prj \ + shp/taiwan/hystoric.shp \ + shp/taiwan/hystoric.shx \ + shp/taiwan/leisure.dbf \ + shp/taiwan/leisure.prj \ + shp/taiwan/leisure.shp \ + shp/taiwan/leisure.shx \ + shp/taiwan/route.dbf \ + shp/taiwan/route.prj \ + shp/taiwan/route.shp \ + shp/taiwan/route.shx \ + shp/merano-3d/points.dbf \ + shp/merano-3d/points.prj \ + shp/merano-3d/points.shp \ + shp/merano-3d/points.shx \ + shp/merano-3d/polygons.dbf \ + shp/merano-3d/polygons.prj \ + shp/merano-3d/polygons.shp \ + shp/merano-3d/polygons.shx \ + shp/merano-3d/roads.dbf \ + shp/merano-3d/roads.prj \ + shp/merano-3d/roads.shp \ + shp/merano-3d/roads.shx \ + shp/foggia/local_councils.dbf \ + shp/foggia/local_councils.prj \ + shp/foggia/local_councils.shp \ + shp/foggia/local_councils.shx \ + testcase1.xls \ + testcase1.csv \ + books.xml books.xsd opera.xml opera.xsd \ + movies.xml movies.xsd books-bad.xml books-bad.xsd \ + inspire-data-example.xml stazioni_se.xml \ + raster_se.xml sld_sample.xml thunderstorm_mild.svg \ + tile000.jpeg tile101.jpeg tile111.jpeg \ + test.webp tile100.jpeg tile110.jpeg \ + Apple-iPhone-4.jpg empty.png empty.tif \ + test.wfs testDescribeFeatureType.wfs \ + getcapabilities-1.0.0.wfs \ + getcapabilities-1.1.0.wfs \ + describefeaturetype.wfs \ + 22.dxf f06.dxf l02.dxf p05.dxf \ + archaic.dxf linked.dxf hatch.dxf \ + symbol.dxf gpkg_test.sqlite gpkg_test.gpkg + +SUBDIRS = sql_stmt_geosadvanced_tests sql_stmt_geos_tests \ + sql_stmt_libxml2_tests sql_stmt_lwgeom_tests \ + sql_stmt_mathsql_tests sql_stmt_proj_tests \ + sql_stmt_security_tests sql_stmt_tests \ + sql_stmt_xmlsec_tests sql_stmt_geopackage_tests + +all: all-recursive + +.SUFFIXES: +.SUFFIXES: .c .lo .log .o .obj .test .test$(EXEEXT) .trs +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +clean-checkPROGRAMS: + @list='$(check_PROGRAMS)'; test -n "$$list" || exit 0; \ + echo " rm -f" $$list; \ + rm -f $$list || exit $$?; \ + test -n "$(EXEEXT)" || exit 0; \ + list=`for p in $$list; do echo "$$p"; done | sed 's/$(EXEEXT)$$//'`; \ + echo " rm -f" $$list; \ + rm -f $$list + +check_add_tile_triggers$(EXEEXT): $(check_add_tile_triggers_OBJECTS) $(check_add_tile_triggers_DEPENDENCIES) $(EXTRA_check_add_tile_triggers_DEPENDENCIES) + @rm -f check_add_tile_triggers$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_add_tile_triggers_OBJECTS) $(check_add_tile_triggers_LDADD) $(LIBS) + +check_add_tile_triggers_bad_table_name$(EXEEXT): $(check_add_tile_triggers_bad_table_name_OBJECTS) $(check_add_tile_triggers_bad_table_name_DEPENDENCIES) $(EXTRA_check_add_tile_triggers_bad_table_name_DEPENDENCIES) + @rm -f check_add_tile_triggers_bad_table_name$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_add_tile_triggers_bad_table_name_OBJECTS) $(check_add_tile_triggers_bad_table_name_LDADD) $(LIBS) + +check_bufovflw$(EXEEXT): $(check_bufovflw_OBJECTS) $(check_bufovflw_DEPENDENCIES) $(EXTRA_check_bufovflw_DEPENDENCIES) + @rm -f check_bufovflw$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_bufovflw_OBJECTS) $(check_bufovflw_LDADD) $(LIBS) + +check_create$(EXEEXT): $(check_create_OBJECTS) $(check_create_DEPENDENCIES) $(EXTRA_check_create_DEPENDENCIES) + @rm -f check_create$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_create_OBJECTS) $(check_create_LDADD) $(LIBS) + +check_createBaseTables$(EXEEXT): $(check_createBaseTables_OBJECTS) $(check_createBaseTables_DEPENDENCIES) $(EXTRA_check_createBaseTables_DEPENDENCIES) + @rm -f check_createBaseTables$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_createBaseTables_OBJECTS) $(check_createBaseTables_LDADD) $(LIBS) + +check_dbf_load$(EXEEXT): $(check_dbf_load_OBJECTS) $(check_dbf_load_DEPENDENCIES) $(EXTRA_check_dbf_load_DEPENDENCIES) + @rm -f check_dbf_load$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_dbf_load_OBJECTS) $(check_dbf_load_LDADD) $(LIBS) + +check_dxf$(EXEEXT): $(check_dxf_OBJECTS) $(check_dxf_DEPENDENCIES) $(EXTRA_check_dxf_DEPENDENCIES) + @rm -f check_dxf$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_dxf_OBJECTS) $(check_dxf_LDADD) $(LIBS) + +check_endian$(EXEEXT): $(check_endian_OBJECTS) $(check_endian_DEPENDENCIES) $(EXTRA_check_endian_DEPENDENCIES) + @rm -f check_endian$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_endian_OBJECTS) $(check_endian_LDADD) $(LIBS) + +check_exif$(EXEEXT): $(check_exif_OBJECTS) $(check_exif_DEPENDENCIES) $(EXTRA_check_exif_DEPENDENCIES) + @rm -f check_exif$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_exif_OBJECTS) $(check_exif_LDADD) $(LIBS) + +check_exif2$(EXEEXT): $(check_exif2_OBJECTS) $(check_exif2_DEPENDENCIES) $(EXTRA_check_exif2_DEPENDENCIES) + @rm -f check_exif2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_exif2_OBJECTS) $(check_exif2_LDADD) $(LIBS) + +check_extension$(EXEEXT): $(check_extension_OBJECTS) $(check_extension_DEPENDENCIES) $(EXTRA_check_extension_DEPENDENCIES) + @rm -f check_extension$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_extension_OBJECTS) $(check_extension_LDADD) $(LIBS) + +check_extra_relations_fncts$(EXEEXT): $(check_extra_relations_fncts_OBJECTS) $(check_extra_relations_fncts_DEPENDENCIES) $(EXTRA_check_extra_relations_fncts_DEPENDENCIES) + @rm -f check_extra_relations_fncts$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_extra_relations_fncts_OBJECTS) $(check_extra_relations_fncts_LDADD) $(LIBS) + +check_fdo1$(EXEEXT): $(check_fdo1_OBJECTS) $(check_fdo1_DEPENDENCIES) $(EXTRA_check_fdo1_DEPENDENCIES) + @rm -f check_fdo1$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_fdo1_OBJECTS) $(check_fdo1_LDADD) $(LIBS) + +check_fdo2$(EXEEXT): $(check_fdo2_OBJECTS) $(check_fdo2_DEPENDENCIES) $(EXTRA_check_fdo2_DEPENDENCIES) + @rm -f check_fdo2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_fdo2_OBJECTS) $(check_fdo2_LDADD) $(LIBS) + +check_fdo3$(EXEEXT): $(check_fdo3_OBJECTS) $(check_fdo3_DEPENDENCIES) $(EXTRA_check_fdo3_DEPENDENCIES) + @rm -f check_fdo3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_fdo3_OBJECTS) $(check_fdo3_LDADD) $(LIBS) + +check_fdo_bufovflw$(EXEEXT): $(check_fdo_bufovflw_OBJECTS) $(check_fdo_bufovflw_DEPENDENCIES) $(EXTRA_check_fdo_bufovflw_DEPENDENCIES) + @rm -f check_fdo_bufovflw$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_fdo_bufovflw_OBJECTS) $(check_fdo_bufovflw_LDADD) $(LIBS) + +check_gaia_utf8$(EXEEXT): $(check_gaia_utf8_OBJECTS) $(check_gaia_utf8_DEPENDENCIES) $(EXTRA_check_gaia_utf8_DEPENDENCIES) + @rm -f check_gaia_utf8$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gaia_utf8_OBJECTS) $(check_gaia_utf8_LDADD) $(LIBS) + +check_gaia_util$(EXEEXT): $(check_gaia_util_OBJECTS) $(check_gaia_util_DEPENDENCIES) $(EXTRA_check_gaia_util_DEPENDENCIES) + @rm -f check_gaia_util$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gaia_util_OBJECTS) $(check_gaia_util_LDADD) $(LIBS) + +check_geom_aux$(EXEEXT): $(check_geom_aux_OBJECTS) $(check_geom_aux_DEPENDENCIES) $(EXTRA_check_geom_aux_DEPENDENCIES) + @rm -f check_geom_aux$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_geom_aux_OBJECTS) $(check_geom_aux_LDADD) $(LIBS) + +check_geometry_cols$(EXEEXT): $(check_geometry_cols_OBJECTS) $(check_geometry_cols_DEPENDENCIES) $(EXTRA_check_geometry_cols_DEPENDENCIES) + @rm -f check_geometry_cols$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_geometry_cols_OBJECTS) $(check_geometry_cols_LDADD) $(LIBS) + +check_geoscvt_fncts$(EXEEXT): $(check_geoscvt_fncts_OBJECTS) $(check_geoscvt_fncts_DEPENDENCIES) $(EXTRA_check_geoscvt_fncts_DEPENDENCIES) + @rm -f check_geoscvt_fncts$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_geoscvt_fncts_OBJECTS) $(check_geoscvt_fncts_LDADD) $(LIBS) + +check_get_normal_row$(EXEEXT): $(check_get_normal_row_OBJECTS) $(check_get_normal_row_DEPENDENCIES) $(EXTRA_check_get_normal_row_DEPENDENCIES) + @rm -f check_get_normal_row$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_get_normal_row_OBJECTS) $(check_get_normal_row_LDADD) $(LIBS) + +check_get_normal_row_bad_geopackage$(EXEEXT): $(check_get_normal_row_bad_geopackage_OBJECTS) $(check_get_normal_row_bad_geopackage_DEPENDENCIES) $(EXTRA_check_get_normal_row_bad_geopackage_DEPENDENCIES) + @rm -f check_get_normal_row_bad_geopackage$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_get_normal_row_bad_geopackage_OBJECTS) $(check_get_normal_row_bad_geopackage_LDADD) $(LIBS) + +check_get_normal_row_bad_geopackage2$(EXEEXT): $(check_get_normal_row_bad_geopackage2_OBJECTS) $(check_get_normal_row_bad_geopackage2_DEPENDENCIES) $(EXTRA_check_get_normal_row_bad_geopackage2_DEPENDENCIES) + @rm -f check_get_normal_row_bad_geopackage2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_get_normal_row_bad_geopackage2_OBJECTS) $(check_get_normal_row_bad_geopackage2_LDADD) $(LIBS) + +check_get_normal_zoom$(EXEEXT): $(check_get_normal_zoom_OBJECTS) $(check_get_normal_zoom_DEPENDENCIES) $(EXTRA_check_get_normal_zoom_DEPENDENCIES) + @rm -f check_get_normal_zoom$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_get_normal_zoom_OBJECTS) $(check_get_normal_zoom_LDADD) $(LIBS) + +check_get_normal_zoom_bad_geopackage$(EXEEXT): $(check_get_normal_zoom_bad_geopackage_OBJECTS) $(check_get_normal_zoom_bad_geopackage_DEPENDENCIES) $(EXTRA_check_get_normal_zoom_bad_geopackage_DEPENDENCIES) + @rm -f check_get_normal_zoom_bad_geopackage$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_get_normal_zoom_bad_geopackage_OBJECTS) $(check_get_normal_zoom_bad_geopackage_LDADD) $(LIBS) + +check_get_normal_zoom_bad_geopackage2$(EXEEXT): $(check_get_normal_zoom_bad_geopackage2_OBJECTS) $(check_get_normal_zoom_bad_geopackage2_DEPENDENCIES) $(EXTRA_check_get_normal_zoom_bad_geopackage2_DEPENDENCIES) + @rm -f check_get_normal_zoom_bad_geopackage2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_get_normal_zoom_bad_geopackage2_OBJECTS) $(check_get_normal_zoom_bad_geopackage2_LDADD) $(LIBS) + +check_get_normal_zoom_extension_load$(EXEEXT): $(check_get_normal_zoom_extension_load_OBJECTS) $(check_get_normal_zoom_extension_load_DEPENDENCIES) $(EXTRA_check_get_normal_zoom_extension_load_DEPENDENCIES) + @rm -f check_get_normal_zoom_extension_load$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_get_normal_zoom_extension_load_OBJECTS) $(check_get_normal_zoom_extension_load_LDADD) $(LIBS) + +check_gpkgConvert$(EXEEXT): $(check_gpkgConvert_OBJECTS) $(check_gpkgConvert_DEPENDENCIES) $(EXTRA_check_gpkgConvert_DEPENDENCIES) + @rm -f check_gpkgConvert$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkgConvert_OBJECTS) $(check_gpkgConvert_LDADD) $(LIBS) + +check_gpkgCreateFeaturesTable$(EXEEXT): $(check_gpkgCreateFeaturesTable_OBJECTS) $(check_gpkgCreateFeaturesTable_DEPENDENCIES) $(EXTRA_check_gpkgCreateFeaturesTable_DEPENDENCIES) + @rm -f check_gpkgCreateFeaturesTable$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkgCreateFeaturesTable_OBJECTS) $(check_gpkgCreateFeaturesTable_LDADD) $(LIBS) + +check_gpkgCreateTilesTable$(EXEEXT): $(check_gpkgCreateTilesTable_OBJECTS) $(check_gpkgCreateTilesTable_DEPENDENCIES) $(EXTRA_check_gpkgCreateTilesTable_DEPENDENCIES) + @rm -f check_gpkgCreateTilesTable$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkgCreateTilesTable_OBJECTS) $(check_gpkgCreateTilesTable_LDADD) $(LIBS) + +check_gpkgCreateTilesTableMissingSRID$(EXEEXT): $(check_gpkgCreateTilesTableMissingSRID_OBJECTS) $(check_gpkgCreateTilesTableMissingSRID_DEPENDENCIES) $(EXTRA_check_gpkgCreateTilesTableMissingSRID_DEPENDENCIES) + @rm -f check_gpkgCreateTilesTableMissingSRID$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkgCreateTilesTableMissingSRID_OBJECTS) $(check_gpkgCreateTilesTableMissingSRID_LDADD) $(LIBS) + +check_gpkgCreateTilesZoomLevel$(EXEEXT): $(check_gpkgCreateTilesZoomLevel_OBJECTS) $(check_gpkgCreateTilesZoomLevel_DEPENDENCIES) $(EXTRA_check_gpkgCreateTilesZoomLevel_DEPENDENCIES) + @rm -f check_gpkgCreateTilesZoomLevel$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkgCreateTilesZoomLevel_OBJECTS) $(check_gpkgCreateTilesZoomLevel_LDADD) $(LIBS) + +check_gpkgGetImageFormat$(EXEEXT): $(check_gpkgGetImageFormat_OBJECTS) $(check_gpkgGetImageFormat_DEPENDENCIES) $(EXTRA_check_gpkgGetImageFormat_DEPENDENCIES) + @rm -f check_gpkgGetImageFormat$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkgGetImageFormat_OBJECTS) $(check_gpkgGetImageFormat_LDADD) $(LIBS) + +check_gpkgGetImageFormat_nonblob$(EXEEXT): $(check_gpkgGetImageFormat_nonblob_OBJECTS) $(check_gpkgGetImageFormat_nonblob_DEPENDENCIES) $(EXTRA_check_gpkgGetImageFormat_nonblob_DEPENDENCIES) + @rm -f check_gpkgGetImageFormat_nonblob$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkgGetImageFormat_nonblob_OBJECTS) $(check_gpkgGetImageFormat_nonblob_LDADD) $(LIBS) + +check_gpkgGetImageFormat_nonimage$(EXEEXT): $(check_gpkgGetImageFormat_nonimage_OBJECTS) $(check_gpkgGetImageFormat_nonimage_DEPENDENCIES) $(EXTRA_check_gpkgGetImageFormat_nonimage_DEPENDENCIES) + @rm -f check_gpkgGetImageFormat_nonimage$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkgGetImageFormat_nonimage_OBJECTS) $(check_gpkgGetImageFormat_nonimage_LDADD) $(LIBS) + +check_gpkgGetImageFormat_png$(EXEEXT): $(check_gpkgGetImageFormat_png_OBJECTS) $(check_gpkgGetImageFormat_png_DEPENDENCIES) $(EXTRA_check_gpkgGetImageFormat_png_DEPENDENCIES) + @rm -f check_gpkgGetImageFormat_png$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkgGetImageFormat_png_OBJECTS) $(check_gpkgGetImageFormat_png_LDADD) $(LIBS) + +check_gpkgGetImageFormat_tiff$(EXEEXT): $(check_gpkgGetImageFormat_tiff_OBJECTS) $(check_gpkgGetImageFormat_tiff_DEPENDENCIES) $(EXTRA_check_gpkgGetImageFormat_tiff_DEPENDENCIES) + @rm -f check_gpkgGetImageFormat_tiff$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkgGetImageFormat_tiff_OBJECTS) $(check_gpkgGetImageFormat_tiff_LDADD) $(LIBS) + +check_gpkgGetImageFormat_webp$(EXEEXT): $(check_gpkgGetImageFormat_webp_OBJECTS) $(check_gpkgGetImageFormat_webp_DEPENDENCIES) $(EXTRA_check_gpkgGetImageFormat_webp_DEPENDENCIES) + @rm -f check_gpkgGetImageFormat_webp$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkgGetImageFormat_webp_OBJECTS) $(check_gpkgGetImageFormat_webp_LDADD) $(LIBS) + +check_gpkgInsertEpsgSRID$(EXEEXT): $(check_gpkgInsertEpsgSRID_OBJECTS) $(check_gpkgInsertEpsgSRID_DEPENDENCIES) $(EXTRA_check_gpkgInsertEpsgSRID_DEPENDENCIES) + @rm -f check_gpkgInsertEpsgSRID$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkgInsertEpsgSRID_OBJECTS) $(check_gpkgInsertEpsgSRID_LDADD) $(LIBS) + +check_gpkgVirtual$(EXEEXT): $(check_gpkgVirtual_OBJECTS) $(check_gpkgVirtual_DEPENDENCIES) $(EXTRA_check_gpkgVirtual_DEPENDENCIES) + @rm -f check_gpkgVirtual$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkgVirtual_OBJECTS) $(check_gpkgVirtual_LDADD) $(LIBS) + +check_gpkg_base_core_container_data_file_format_application_id$(EXEEXT): $(check_gpkg_base_core_container_data_file_format_application_id_OBJECTS) $(check_gpkg_base_core_container_data_file_format_application_id_DEPENDENCIES) $(EXTRA_check_gpkg_base_core_container_data_file_format_application_id_DEPENDENCIES) + @rm -f check_gpkg_base_core_container_data_file_format_application_id$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkg_base_core_container_data_file_format_application_id_OBJECTS) $(check_gpkg_base_core_container_data_file_format_application_id_LDADD) $(LIBS) + +check_gpkg_base_core_contents_data_table_def$(EXEEXT): $(check_gpkg_base_core_contents_data_table_def_OBJECTS) $(check_gpkg_base_core_contents_data_table_def_DEPENDENCIES) $(EXTRA_check_gpkg_base_core_contents_data_table_def_DEPENDENCIES) + @rm -f check_gpkg_base_core_contents_data_table_def$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkg_base_core_contents_data_table_def_OBJECTS) $(check_gpkg_base_core_contents_data_table_def_LDADD) $(LIBS) + +check_gpkg_base_core_spatial_ref_sys_data_table_def$(EXEEXT): $(check_gpkg_base_core_spatial_ref_sys_data_table_def_OBJECTS) $(check_gpkg_base_core_spatial_ref_sys_data_table_def_DEPENDENCIES) $(EXTRA_check_gpkg_base_core_spatial_ref_sys_data_table_def_DEPENDENCIES) + @rm -f check_gpkg_base_core_spatial_ref_sys_data_table_def$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkg_base_core_spatial_ref_sys_data_table_def_OBJECTS) $(check_gpkg_base_core_spatial_ref_sys_data_table_def_LDADD) $(LIBS) + +check_gpkg_base_core_spatial_ref_sys_data_values_default$(EXEEXT): $(check_gpkg_base_core_spatial_ref_sys_data_values_default_OBJECTS) $(check_gpkg_base_core_spatial_ref_sys_data_values_default_DEPENDENCIES) $(EXTRA_check_gpkg_base_core_spatial_ref_sys_data_values_default_DEPENDENCIES) + @rm -f check_gpkg_base_core_spatial_ref_sys_data_values_default$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkg_base_core_spatial_ref_sys_data_values_default_OBJECTS) $(check_gpkg_base_core_spatial_ref_sys_data_values_default_LDADD) $(LIBS) + +check_gpkg_opt_extension_mechanism_extensions_data_table_def$(EXEEXT): $(check_gpkg_opt_extension_mechanism_extensions_data_table_def_OBJECTS) $(check_gpkg_opt_extension_mechanism_extensions_data_table_def_DEPENDENCIES) $(EXTRA_check_gpkg_opt_extension_mechanism_extensions_data_table_def_DEPENDENCIES) + @rm -f check_gpkg_opt_extension_mechanism_extensions_data_table_def$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_gpkg_opt_extension_mechanism_extensions_data_table_def_OBJECTS) $(check_gpkg_opt_extension_mechanism_extensions_data_table_def_LDADD) $(LIBS) + +check_init$(EXEEXT): $(check_init_OBJECTS) $(check_init_DEPENDENCIES) $(EXTRA_check_init_DEPENDENCIES) + @rm -f check_init$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_init_OBJECTS) $(check_init_LDADD) $(LIBS) + +check_init2$(EXEEXT): $(check_init2_OBJECTS) $(check_init2_DEPENDENCIES) $(EXTRA_check_init2_DEPENDENCIES) + @rm -f check_init2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_init2_OBJECTS) $(check_init2_LDADD) $(LIBS) + +check_libxml2$(EXEEXT): $(check_libxml2_OBJECTS) $(check_libxml2_DEPENDENCIES) $(EXTRA_check_libxml2_DEPENDENCIES) + @rm -f check_libxml2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_libxml2_OBJECTS) $(check_libxml2_LDADD) $(LIBS) + +check_math_funcs$(EXEEXT): $(check_math_funcs_OBJECTS) $(check_math_funcs_DEPENDENCIES) $(EXTRA_check_math_funcs_DEPENDENCIES) + @rm -f check_math_funcs$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_math_funcs_OBJECTS) $(check_math_funcs_LDADD) $(LIBS) + +check_mbrcache$(EXEEXT): $(check_mbrcache_OBJECTS) $(check_mbrcache_DEPENDENCIES) $(EXTRA_check_mbrcache_DEPENDENCIES) + @rm -f check_mbrcache$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_mbrcache_OBJECTS) $(check_mbrcache_LDADD) $(LIBS) + +check_md5$(EXEEXT): $(check_md5_OBJECTS) $(check_md5_DEPENDENCIES) $(EXTRA_check_md5_DEPENDENCIES) + @rm -f check_md5$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_md5_OBJECTS) $(check_md5_LDADD) $(LIBS) + +check_metacatalog$(EXEEXT): $(check_metacatalog_OBJECTS) $(check_metacatalog_DEPENDENCIES) $(EXTRA_check_metacatalog_DEPENDENCIES) + @rm -f check_metacatalog$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_metacatalog_OBJECTS) $(check_metacatalog_LDADD) $(LIBS) + +check_multithread$(EXEEXT): $(check_multithread_OBJECTS) $(check_multithread_DEPENDENCIES) $(EXTRA_check_multithread_DEPENDENCIES) + @rm -f check_multithread$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_multithread_OBJECTS) $(check_multithread_LDADD) $(LIBS) + +check_recover_geom$(EXEEXT): $(check_recover_geom_OBJECTS) $(check_recover_geom_DEPENDENCIES) $(EXTRA_check_recover_geom_DEPENDENCIES) + @rm -f check_recover_geom$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_recover_geom_OBJECTS) $(check_recover_geom_LDADD) $(LIBS) + +check_relations_fncts$(EXEEXT): $(check_relations_fncts_OBJECTS) $(check_relations_fncts_DEPENDENCIES) $(EXTRA_check_relations_fncts_DEPENDENCIES) + @rm -f check_relations_fncts$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_relations_fncts_OBJECTS) $(check_relations_fncts_LDADD) $(LIBS) + +check_shp_load$(EXEEXT): $(check_shp_load_OBJECTS) $(check_shp_load_DEPENDENCIES) $(EXTRA_check_shp_load_DEPENDENCIES) + @rm -f check_shp_load$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_shp_load_OBJECTS) $(check_shp_load_LDADD) $(LIBS) + +check_shp_load_3d$(EXEEXT): $(check_shp_load_3d_OBJECTS) $(check_shp_load_3d_DEPENDENCIES) $(EXTRA_check_shp_load_3d_DEPENDENCIES) + @rm -f check_shp_load_3d$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_shp_load_3d_OBJECTS) $(check_shp_load_3d_LDADD) $(LIBS) + +check_spatialindex$(EXEEXT): $(check_spatialindex_OBJECTS) $(check_spatialindex_DEPENDENCIES) $(EXTRA_check_spatialindex_DEPENDENCIES) + @rm -f check_spatialindex$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_spatialindex_OBJECTS) $(check_spatialindex_LDADD) $(LIBS) + +check_sql_stmt$(EXEEXT): $(check_sql_stmt_OBJECTS) $(check_sql_stmt_DEPENDENCIES) $(EXTRA_check_sql_stmt_DEPENDENCIES) + @rm -f check_sql_stmt$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_sql_stmt_OBJECTS) $(check_sql_stmt_LDADD) $(LIBS) + +check_styling$(EXEEXT): $(check_styling_OBJECTS) $(check_styling_DEPENDENCIES) $(EXTRA_check_styling_DEPENDENCIES) + @rm -f check_styling$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_styling_OBJECTS) $(check_styling_LDADD) $(LIBS) + +check_version$(EXEEXT): $(check_version_OBJECTS) $(check_version_DEPENDENCIES) $(EXTRA_check_version_DEPENDENCIES) + @rm -f check_version$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_version_OBJECTS) $(check_version_LDADD) $(LIBS) + +check_virtual_ovflw$(EXEEXT): $(check_virtual_ovflw_OBJECTS) $(check_virtual_ovflw_DEPENDENCIES) $(EXTRA_check_virtual_ovflw_DEPENDENCIES) + @rm -f check_virtual_ovflw$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_virtual_ovflw_OBJECTS) $(check_virtual_ovflw_LDADD) $(LIBS) + +check_virtualbbox$(EXEEXT): $(check_virtualbbox_OBJECTS) $(check_virtualbbox_DEPENDENCIES) $(EXTRA_check_virtualbbox_DEPENDENCIES) + @rm -f check_virtualbbox$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_virtualbbox_OBJECTS) $(check_virtualbbox_LDADD) $(LIBS) + +check_virtualtable1$(EXEEXT): $(check_virtualtable1_OBJECTS) $(check_virtualtable1_DEPENDENCIES) $(EXTRA_check_virtualtable1_DEPENDENCIES) + @rm -f check_virtualtable1$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_virtualtable1_OBJECTS) $(check_virtualtable1_LDADD) $(LIBS) + +check_virtualtable2$(EXEEXT): $(check_virtualtable2_OBJECTS) $(check_virtualtable2_DEPENDENCIES) $(EXTRA_check_virtualtable2_DEPENDENCIES) + @rm -f check_virtualtable2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_virtualtable2_OBJECTS) $(check_virtualtable2_LDADD) $(LIBS) + +check_virtualtable3$(EXEEXT): $(check_virtualtable3_OBJECTS) $(check_virtualtable3_DEPENDENCIES) $(EXTRA_check_virtualtable3_DEPENDENCIES) + @rm -f check_virtualtable3$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_virtualtable3_OBJECTS) $(check_virtualtable3_LDADD) $(LIBS) + +check_virtualtable4$(EXEEXT): $(check_virtualtable4_OBJECTS) $(check_virtualtable4_DEPENDENCIES) $(EXTRA_check_virtualtable4_DEPENDENCIES) + @rm -f check_virtualtable4$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_virtualtable4_OBJECTS) $(check_virtualtable4_LDADD) $(LIBS) + +check_virtualtable5$(EXEEXT): $(check_virtualtable5_OBJECTS) $(check_virtualtable5_DEPENDENCIES) $(EXTRA_check_virtualtable5_DEPENDENCIES) + @rm -f check_virtualtable5$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_virtualtable5_OBJECTS) $(check_virtualtable5_LDADD) $(LIBS) + +check_virtualtable6$(EXEEXT): $(check_virtualtable6_OBJECTS) $(check_virtualtable6_DEPENDENCIES) $(EXTRA_check_virtualtable6_DEPENDENCIES) + @rm -f check_virtualtable6$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_virtualtable6_OBJECTS) $(check_virtualtable6_LDADD) $(LIBS) + +check_virtualxpath$(EXEEXT): $(check_virtualxpath_OBJECTS) $(check_virtualxpath_DEPENDENCIES) $(EXTRA_check_virtualxpath_DEPENDENCIES) + @rm -f check_virtualxpath$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_virtualxpath_OBJECTS) $(check_virtualxpath_LDADD) $(LIBS) + +check_wfsin$(EXEEXT): $(check_wfsin_OBJECTS) $(check_wfsin_DEPENDENCIES) $(EXTRA_check_wfsin_DEPENDENCIES) + @rm -f check_wfsin$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_wfsin_OBJECTS) $(check_wfsin_LDADD) $(LIBS) + +check_xls_load$(EXEEXT): $(check_xls_load_OBJECTS) $(check_xls_load_DEPENDENCIES) $(EXTRA_check_xls_load_DEPENDENCIES) + @rm -f check_xls_load$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(check_xls_load_OBJECTS) $(check_xls_load_LDADD) $(LIBS) + +shape_3d$(EXEEXT): $(shape_3d_OBJECTS) $(shape_3d_DEPENDENCIES) $(EXTRA_shape_3d_DEPENDENCIES) + @rm -f shape_3d$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shape_3d_OBJECTS) $(shape_3d_LDADD) $(LIBS) + +shape_cp1252$(EXEEXT): $(shape_cp1252_OBJECTS) $(shape_cp1252_DEPENDENCIES) $(EXTRA_shape_cp1252_DEPENDENCIES) + @rm -f shape_cp1252$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shape_cp1252_OBJECTS) $(shape_cp1252_LDADD) $(LIBS) + +shape_primitives$(EXEEXT): $(shape_primitives_OBJECTS) $(shape_primitives_DEPENDENCIES) $(EXTRA_shape_primitives_DEPENDENCIES) + @rm -f shape_primitives$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shape_primitives_OBJECTS) $(shape_primitives_LDADD) $(LIBS) + +shape_utf8_1$(EXEEXT): $(shape_utf8_1_OBJECTS) $(shape_utf8_1_DEPENDENCIES) $(EXTRA_shape_utf8_1_DEPENDENCIES) + @rm -f shape_utf8_1$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shape_utf8_1_OBJECTS) $(shape_utf8_1_LDADD) $(LIBS) + +shape_utf8_1ex$(EXEEXT): $(shape_utf8_1ex_OBJECTS) $(shape_utf8_1ex_DEPENDENCIES) $(EXTRA_shape_utf8_1ex_DEPENDENCIES) + @rm -f shape_utf8_1ex$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shape_utf8_1ex_OBJECTS) $(shape_utf8_1ex_LDADD) $(LIBS) + +shape_utf8_2$(EXEEXT): $(shape_utf8_2_OBJECTS) $(shape_utf8_2_DEPENDENCIES) $(EXTRA_shape_utf8_2_DEPENDENCIES) + @rm -f shape_utf8_2$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(shape_utf8_2_OBJECTS) $(shape_utf8_2_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_add_tile_triggers.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_add_tile_triggers_bad_table_name.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_bufovflw.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_create.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_createBaseTables.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_dbf_load.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_dxf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_endian.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_exif.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_exif2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_extension.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_extra_relations_fncts.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_fdo1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_fdo2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_fdo3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_fdo_bufovflw.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gaia_utf8.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gaia_util.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_geom_aux.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_geometry_cols.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_geoscvt_fncts.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_get_normal_row.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_get_normal_row_bad_geopackage.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_get_normal_row_bad_geopackage2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_get_normal_zoom.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_get_normal_zoom_bad_geopackage.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_get_normal_zoom_bad_geopackage2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_get_normal_zoom_extension_load.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkgConvert.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkgCreateFeaturesTable.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkgCreateTilesTable.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkgCreateTilesTableMissingSRID.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkgCreateTilesZoomLevel.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkgGetImageFormat.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkgGetImageFormat_nonblob.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkgGetImageFormat_nonimage.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkgGetImageFormat_png.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkgGetImageFormat_tiff.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkgGetImageFormat_webp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkgInsertEpsgSRID.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkgVirtual.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkg_base_core_container_data_file_format_application_id.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkg_base_core_contents_data_table_def.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkg_base_core_spatial_ref_sys_data_table_def.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkg_base_core_spatial_ref_sys_data_values_default.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_gpkg_opt_extension_mechanism_extensions_data_table_def.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_init.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_init2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_libxml2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_math_funcs.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_mbrcache.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_md5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_metacatalog.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_multithread.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_recover_geom.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_relations_fncts.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_shp_load.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_shp_load_3d.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_spatialindex.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_sql_stmt.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_styling.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_version.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtual_ovflw.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtualbbox.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtualtable1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtualtable2.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtualtable3.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtualtable4.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtualtable5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtualtable6.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_virtualxpath.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_wfsin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/check_xls_load.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shape_3d.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shape_cp1252.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shape_primitives.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shape_utf8_1.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shape_utf8_1ex.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/shape_utf8_2.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c `$(CYGPATH_W) '$<'` + +.c.lo: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +# Recover from deleted '.trs' file; this should ensure that +# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create +# both 'foo.log' and 'foo.trs'. Break the recipe in two subshells +# to avoid problems with "make -n". +.log.trs: + rm -f $< $@ + $(MAKE) $(AM_MAKEFLAGS) $< + +# Leading 'am--fnord' is there to ensure the list of targets does not +# expand to empty, as could happen e.g. with make check TESTS=''. +am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck) +am--force-recheck: + @: + +$(TEST_SUITE_LOG): $(TEST_LOGS) + @$(am__set_TESTS_bases); \ + am__f_ok () { test -f "$$1" && test -r "$$1"; }; \ + redo_bases=`for i in $$bases; do \ + am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \ + done`; \ + if test -n "$$redo_bases"; then \ + redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \ + redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \ + if $(am__make_dryrun); then :; else \ + rm -f $$redo_logs && rm -f $$redo_results || exit 1; \ + fi; \ + fi; \ + if test -n "$$am__remaking_logs"; then \ + echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \ + "recursion detected" >&2; \ + else \ + am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \ + fi; \ + if $(am__make_dryrun); then :; else \ + st=0; \ + errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \ + for i in $$redo_bases; do \ + test -f $$i.trs && test -r $$i.trs \ + || { echo "$$errmsg $$i.trs" >&2; st=1; }; \ + test -f $$i.log && test -r $$i.log \ + || { echo "$$errmsg $$i.log" >&2; st=1; }; \ + done; \ + test $$st -eq 0 || exit 1; \ + fi + @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \ + ws='[ ]'; \ + results=`for b in $$bases; do echo $$b.trs; done`; \ + test -n "$$results" || results=/dev/null; \ + all=` grep "^$$ws*:test-result:" $$results | wc -l`; \ + pass=` grep "^$$ws*:test-result:$$ws*PASS" $$results | wc -l`; \ + fail=` grep "^$$ws*:test-result:$$ws*FAIL" $$results | wc -l`; \ + skip=` grep "^$$ws*:test-result:$$ws*SKIP" $$results | wc -l`; \ + xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \ + xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \ + error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \ + if test `expr $$fail + $$xpass + $$error` -eq 0; then \ + success=true; \ + else \ + success=false; \ + fi; \ + br='==================='; br=$$br$$br$$br$$br; \ + result_count () \ + { \ + if test x"$$1" = x"--maybe-color"; then \ + maybe_colorize=yes; \ + elif test x"$$1" = x"--no-color"; then \ + maybe_colorize=no; \ + else \ + echo "$@: invalid 'result_count' usage" >&2; exit 4; \ + fi; \ + shift; \ + desc=$$1 count=$$2; \ + if test $$maybe_colorize = yes && test $$count -gt 0; then \ + color_start=$$3 color_end=$$std; \ + else \ + color_start= color_end=; \ + fi; \ + echo "$${color_start}# $$desc $$count$${color_end}"; \ + }; \ + create_testsuite_report () \ + { \ + result_count $$1 "TOTAL:" $$all "$$brg"; \ + result_count $$1 "PASS: " $$pass "$$grn"; \ + result_count $$1 "SKIP: " $$skip "$$blu"; \ + result_count $$1 "XFAIL:" $$xfail "$$lgn"; \ + result_count $$1 "FAIL: " $$fail "$$red"; \ + result_count $$1 "XPASS:" $$xpass "$$red"; \ + result_count $$1 "ERROR:" $$error "$$mgn"; \ + }; \ + { \ + echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" | \ + $(am__rst_title); \ + create_testsuite_report --no-color; \ + echo; \ + echo ".. contents:: :depth: 2"; \ + echo; \ + for b in $$bases; do echo $$b; done \ + | $(am__create_global_log); \ + } >$(TEST_SUITE_LOG).tmp || exit 1; \ + mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG); \ + if $$success; then \ + col="$$grn"; \ + else \ + col="$$red"; \ + test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG); \ + fi; \ + echo "$${col}$$br$${std}"; \ + echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}"; \ + echo "$${col}$$br$${std}"; \ + create_testsuite_report --maybe-color; \ + echo "$$col$$br$$std"; \ + if $$success; then :; else \ + echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}"; \ + if test -n "$(PACKAGE_BUGREPORT)"; then \ + echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \ + fi; \ + echo "$$col$$br$$std"; \ + fi; \ + $$success || exit 1 + +check-TESTS: + @list='$(RECHECK_LOGS)'; test -z "$$list" || rm -f $$list + @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + trs_list=`for i in $$bases; do echo $$i.trs; done`; \ + log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \ + exit $$?; +recheck: all $(check_PROGRAMS) + @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + @set +e; $(am__set_TESTS_bases); \ + bases=`for i in $$bases; do echo $$i; done \ + | $(am__list_recheck_tests)` || exit 1; \ + log_list=`for i in $$bases; do echo $$i.log; done`; \ + log_list=`echo $$log_list`; \ + $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \ + am__force_recheck=am--force-recheck \ + TEST_LOGS="$$log_list"; \ + exit $$? +check_endian.log: check_endian$(EXEEXT) + @p='check_endian$(EXEEXT)'; \ + b='check_endian'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_version.log: check_version$(EXEEXT) + @p='check_version$(EXEEXT)'; \ + b='check_version'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_init.log: check_init$(EXEEXT) + @p='check_init$(EXEEXT)'; \ + b='check_init'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_init2.log: check_init2$(EXEEXT) + @p='check_init2$(EXEEXT)'; \ + b='check_init2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_geom_aux.log: check_geom_aux$(EXEEXT) + @p='check_geom_aux$(EXEEXT)'; \ + b='check_geom_aux'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_geometry_cols.log: check_geometry_cols$(EXEEXT) + @p='check_geometry_cols$(EXEEXT)'; \ + b='check_geometry_cols'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_create.log: check_create$(EXEEXT) + @p='check_create$(EXEEXT)'; \ + b='check_create'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_bufovflw.log: check_bufovflw$(EXEEXT) + @p='check_bufovflw$(EXEEXT)'; \ + b='check_bufovflw'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_fdo1.log: check_fdo1$(EXEEXT) + @p='check_fdo1$(EXEEXT)'; \ + b='check_fdo1'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_fdo2.log: check_fdo2$(EXEEXT) + @p='check_fdo2$(EXEEXT)'; \ + b='check_fdo2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_fdo3.log: check_fdo3$(EXEEXT) + @p='check_fdo3$(EXEEXT)'; \ + b='check_fdo3'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_fdo_bufovflw.log: check_fdo_bufovflw$(EXEEXT) + @p='check_fdo_bufovflw$(EXEEXT)'; \ + b='check_fdo_bufovflw'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_md5.log: check_md5$(EXEEXT) + @p='check_md5$(EXEEXT)'; \ + b='check_md5'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_dbf_load.log: check_dbf_load$(EXEEXT) + @p='check_dbf_load$(EXEEXT)'; \ + b='check_dbf_load'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_shp_load.log: check_shp_load$(EXEEXT) + @p='check_shp_load$(EXEEXT)'; \ + b='check_shp_load'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_shp_load_3d.log: check_shp_load_3d$(EXEEXT) + @p='check_shp_load_3d$(EXEEXT)'; \ + b='check_shp_load_3d'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +shape_cp1252.log: shape_cp1252$(EXEEXT) + @p='shape_cp1252$(EXEEXT)'; \ + b='shape_cp1252'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +shape_primitives.log: shape_primitives$(EXEEXT) + @p='shape_primitives$(EXEEXT)'; \ + b='shape_primitives'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +shape_utf8_1.log: shape_utf8_1$(EXEEXT) + @p='shape_utf8_1$(EXEEXT)'; \ + b='shape_utf8_1'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +shape_utf8_1ex.log: shape_utf8_1ex$(EXEEXT) + @p='shape_utf8_1ex$(EXEEXT)'; \ + b='shape_utf8_1ex'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +shape_utf8_2.log: shape_utf8_2$(EXEEXT) + @p='shape_utf8_2$(EXEEXT)'; \ + b='shape_utf8_2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +shape_3d.log: shape_3d$(EXEEXT) + @p='shape_3d$(EXEEXT)'; \ + b='shape_3d'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_xls_load.log: check_xls_load$(EXEEXT) + @p='check_xls_load$(EXEEXT)'; \ + b='check_xls_load'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_math_funcs.log: check_math_funcs$(EXEEXT) + @p='check_math_funcs$(EXEEXT)'; \ + b='check_math_funcs'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gaia_util.log: check_gaia_util$(EXEEXT) + @p='check_gaia_util$(EXEEXT)'; \ + b='check_gaia_util'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gaia_utf8.log: check_gaia_utf8$(EXEEXT) + @p='check_gaia_utf8$(EXEEXT)'; \ + b='check_gaia_utf8'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_extension.log: check_extension$(EXEEXT) + @p='check_extension$(EXEEXT)'; \ + b='check_extension'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_recover_geom.log: check_recover_geom$(EXEEXT) + @p='check_recover_geom$(EXEEXT)'; \ + b='check_recover_geom'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_sql_stmt.log: check_sql_stmt$(EXEEXT) + @p='check_sql_stmt$(EXEEXT)'; \ + b='check_sql_stmt'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_multithread.log: check_multithread$(EXEEXT) + @p='check_multithread$(EXEEXT)'; \ + b='check_multithread'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_virtualtable1.log: check_virtualtable1$(EXEEXT) + @p='check_virtualtable1$(EXEEXT)'; \ + b='check_virtualtable1'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_virtualtable2.log: check_virtualtable2$(EXEEXT) + @p='check_virtualtable2$(EXEEXT)'; \ + b='check_virtualtable2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_virtualtable3.log: check_virtualtable3$(EXEEXT) + @p='check_virtualtable3$(EXEEXT)'; \ + b='check_virtualtable3'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_virtualtable4.log: check_virtualtable4$(EXEEXT) + @p='check_virtualtable4$(EXEEXT)'; \ + b='check_virtualtable4'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_virtualtable5.log: check_virtualtable5$(EXEEXT) + @p='check_virtualtable5$(EXEEXT)'; \ + b='check_virtualtable5'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_virtualtable6.log: check_virtualtable6$(EXEEXT) + @p='check_virtualtable6$(EXEEXT)'; \ + b='check_virtualtable6'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_virtual_ovflw.log: check_virtual_ovflw$(EXEEXT) + @p='check_virtual_ovflw$(EXEEXT)'; \ + b='check_virtual_ovflw'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_mbrcache.log: check_mbrcache$(EXEEXT) + @p='check_mbrcache$(EXEEXT)'; \ + b='check_mbrcache'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_spatialindex.log: check_spatialindex$(EXEEXT) + @p='check_spatialindex$(EXEEXT)'; \ + b='check_spatialindex'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_exif.log: check_exif$(EXEEXT) + @p='check_exif$(EXEEXT)'; \ + b='check_exif'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_exif2.log: check_exif2$(EXEEXT) + @p='check_exif2$(EXEEXT)'; \ + b='check_exif2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_relations_fncts.log: check_relations_fncts$(EXEEXT) + @p='check_relations_fncts$(EXEEXT)'; \ + b='check_relations_fncts'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_extra_relations_fncts.log: check_extra_relations_fncts$(EXEEXT) + @p='check_extra_relations_fncts$(EXEEXT)'; \ + b='check_extra_relations_fncts'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_geoscvt_fncts.log: check_geoscvt_fncts$(EXEEXT) + @p='check_geoscvt_fncts$(EXEEXT)'; \ + b='check_geoscvt_fncts'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_libxml2.log: check_libxml2$(EXEEXT) + @p='check_libxml2$(EXEEXT)'; \ + b='check_libxml2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_styling.log: check_styling$(EXEEXT) + @p='check_styling$(EXEEXT)'; \ + b='check_styling'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_virtualxpath.log: check_virtualxpath$(EXEEXT) + @p='check_virtualxpath$(EXEEXT)'; \ + b='check_virtualxpath'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_virtualbbox.log: check_virtualbbox$(EXEEXT) + @p='check_virtualbbox$(EXEEXT)'; \ + b='check_virtualbbox'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_wfsin.log: check_wfsin$(EXEEXT) + @p='check_wfsin$(EXEEXT)'; \ + b='check_wfsin'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_dxf.log: check_dxf$(EXEEXT) + @p='check_dxf$(EXEEXT)'; \ + b='check_dxf'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_metacatalog.log: check_metacatalog$(EXEEXT) + @p='check_metacatalog$(EXEEXT)'; \ + b='check_metacatalog'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_createBaseTables.log: check_createBaseTables$(EXEEXT) + @p='check_createBaseTables$(EXEEXT)'; \ + b='check_createBaseTables'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkgCreateTilesTable.log: check_gpkgCreateTilesTable$(EXEEXT) + @p='check_gpkgCreateTilesTable$(EXEEXT)'; \ + b='check_gpkgCreateTilesTable'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkgCreateTilesTableMissingSRID.log: check_gpkgCreateTilesTableMissingSRID$(EXEEXT) + @p='check_gpkgCreateTilesTableMissingSRID$(EXEEXT)'; \ + b='check_gpkgCreateTilesTableMissingSRID'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkgCreateTilesZoomLevel.log: check_gpkgCreateTilesZoomLevel$(EXEEXT) + @p='check_gpkgCreateTilesZoomLevel$(EXEEXT)'; \ + b='check_gpkgCreateTilesZoomLevel'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkgInsertEpsgSRID.log: check_gpkgInsertEpsgSRID$(EXEEXT) + @p='check_gpkgInsertEpsgSRID$(EXEEXT)'; \ + b='check_gpkgInsertEpsgSRID'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkgCreateFeaturesTable.log: check_gpkgCreateFeaturesTable$(EXEEXT) + @p='check_gpkgCreateFeaturesTable$(EXEEXT)'; \ + b='check_gpkgCreateFeaturesTable'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkg_base_core_container_data_file_format_application_id.log: check_gpkg_base_core_container_data_file_format_application_id$(EXEEXT) + @p='check_gpkg_base_core_container_data_file_format_application_id$(EXEEXT)'; \ + b='check_gpkg_base_core_container_data_file_format_application_id'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkg_base_core_spatial_ref_sys_data_table_def.log: check_gpkg_base_core_spatial_ref_sys_data_table_def$(EXEEXT) + @p='check_gpkg_base_core_spatial_ref_sys_data_table_def$(EXEEXT)'; \ + b='check_gpkg_base_core_spatial_ref_sys_data_table_def'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkg_base_core_spatial_ref_sys_data_values_default.log: check_gpkg_base_core_spatial_ref_sys_data_values_default$(EXEEXT) + @p='check_gpkg_base_core_spatial_ref_sys_data_values_default$(EXEEXT)'; \ + b='check_gpkg_base_core_spatial_ref_sys_data_values_default'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkg_base_core_contents_data_table_def.log: check_gpkg_base_core_contents_data_table_def$(EXEEXT) + @p='check_gpkg_base_core_contents_data_table_def$(EXEEXT)'; \ + b='check_gpkg_base_core_contents_data_table_def'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkg_opt_extension_mechanism_extensions_data_table_def.log: check_gpkg_opt_extension_mechanism_extensions_data_table_def$(EXEEXT) + @p='check_gpkg_opt_extension_mechanism_extensions_data_table_def$(EXEEXT)'; \ + b='check_gpkg_opt_extension_mechanism_extensions_data_table_def'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_add_tile_triggers.log: check_add_tile_triggers$(EXEEXT) + @p='check_add_tile_triggers$(EXEEXT)'; \ + b='check_add_tile_triggers'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_add_tile_triggers_bad_table_name.log: check_add_tile_triggers_bad_table_name$(EXEEXT) + @p='check_add_tile_triggers_bad_table_name$(EXEEXT)'; \ + b='check_add_tile_triggers_bad_table_name'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_get_normal_row.log: check_get_normal_row$(EXEEXT) + @p='check_get_normal_row$(EXEEXT)'; \ + b='check_get_normal_row'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_get_normal_row_bad_geopackage.log: check_get_normal_row_bad_geopackage$(EXEEXT) + @p='check_get_normal_row_bad_geopackage$(EXEEXT)'; \ + b='check_get_normal_row_bad_geopackage'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_get_normal_row_bad_geopackage2.log: check_get_normal_row_bad_geopackage2$(EXEEXT) + @p='check_get_normal_row_bad_geopackage2$(EXEEXT)'; \ + b='check_get_normal_row_bad_geopackage2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_get_normal_zoom.log: check_get_normal_zoom$(EXEEXT) + @p='check_get_normal_zoom$(EXEEXT)'; \ + b='check_get_normal_zoom'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_get_normal_zoom_extension_load.log: check_get_normal_zoom_extension_load$(EXEEXT) + @p='check_get_normal_zoom_extension_load$(EXEEXT)'; \ + b='check_get_normal_zoom_extension_load'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_get_normal_zoom_bad_geopackage.log: check_get_normal_zoom_bad_geopackage$(EXEEXT) + @p='check_get_normal_zoom_bad_geopackage$(EXEEXT)'; \ + b='check_get_normal_zoom_bad_geopackage'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_get_normal_zoom_bad_geopackage2.log: check_get_normal_zoom_bad_geopackage2$(EXEEXT) + @p='check_get_normal_zoom_bad_geopackage2$(EXEEXT)'; \ + b='check_get_normal_zoom_bad_geopackage2'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkgGetImageFormat.log: check_gpkgGetImageFormat$(EXEEXT) + @p='check_gpkgGetImageFormat$(EXEEXT)'; \ + b='check_gpkgGetImageFormat'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkgGetImageFormat_nonimage.log: check_gpkgGetImageFormat_nonimage$(EXEEXT) + @p='check_gpkgGetImageFormat_nonimage$(EXEEXT)'; \ + b='check_gpkgGetImageFormat_nonimage'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkgGetImageFormat_nonblob.log: check_gpkgGetImageFormat_nonblob$(EXEEXT) + @p='check_gpkgGetImageFormat_nonblob$(EXEEXT)'; \ + b='check_gpkgGetImageFormat_nonblob'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkgGetImageFormat_png.log: check_gpkgGetImageFormat_png$(EXEEXT) + @p='check_gpkgGetImageFormat_png$(EXEEXT)'; \ + b='check_gpkgGetImageFormat_png'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkgGetImageFormat_tiff.log: check_gpkgGetImageFormat_tiff$(EXEEXT) + @p='check_gpkgGetImageFormat_tiff$(EXEEXT)'; \ + b='check_gpkgGetImageFormat_tiff'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkgGetImageFormat_webp.log: check_gpkgGetImageFormat_webp$(EXEEXT) + @p='check_gpkgGetImageFormat_webp$(EXEEXT)'; \ + b='check_gpkgGetImageFormat_webp'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkgConvert.log: check_gpkgConvert$(EXEEXT) + @p='check_gpkgConvert$(EXEEXT)'; \ + b='check_gpkgConvert'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +check_gpkgVirtual.log: check_gpkgVirtual$(EXEEXT) + @p='check_gpkgVirtual$(EXEEXT)'; \ + b='check_gpkgVirtual'; \ + $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +.test.log: + @p='$<'; \ + $(am__set_b); \ + $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ + --log-file $$b.log --trs-file $$b.trs \ + $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ + "$$tst" $(AM_TESTS_FD_REDIRECT) +@am__EXEEXT_TRUE@.test$(EXEEXT).log: +@am__EXEEXT_TRUE@ @p='$<'; \ +@am__EXEEXT_TRUE@ $(am__set_b); \ +@am__EXEEXT_TRUE@ $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \ +@am__EXEEXT_TRUE@ --log-file $$b.log --trs-file $$b.trs \ +@am__EXEEXT_TRUE@ $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \ +@am__EXEEXT_TRUE@ "$$tst" $(AM_TESTS_FD_REDIRECT) + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done +check-am: all-am + $(MAKE) $(AM_MAKEFLAGS) $(check_PROGRAMS) + $(MAKE) $(AM_MAKEFLAGS) check-TESTS +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + -test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) + -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS) + -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs) + -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG) + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-checkPROGRAMS clean-generic clean-libtool \ + mostlyclean-am + +distclean: distclean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) check-am install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \ + check-TESTS check-am clean clean-checkPROGRAMS clean-generic \ + clean-libtool cscopelist-am ctags ctags-am distclean \ + distclean-compile distclean-generic distclean-libtool \ + distclean-tags distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + installdirs-am maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic \ + mostlyclean-libtool pdf pdf-am ps ps-am recheck tags tags-am \ + uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/test/WritingSQLTestCase.txt b/src/spatialite/test/WritingSQLTestCase.txt new file mode 100644 index 0000000..63b337d --- /dev/null +++ b/src/spatialite/test/WritingSQLTestCase.txt @@ -0,0 +1,195 @@ +Building a SQL statement test case + +This probably requires that you're using the "autoconf" build system at the +moment. This is the case if you're running on Linux or some other Unix variant, +including Mac OS X. It is the case for some kinds of Windows builds too (using +MinGW / MSYS). + +I assume that you're mostly OK with building from subversion. If not, start +at http://www.gaia-gis.it/spatialite/sources.html. Make sure you read +Sandro's "short note" - it is at +http://www.gaia-gis.it/spatialite/how_to_build_libspatialite.html +if you missed it. + +Make sure you have all the dependencies. It is a bit of work but it will pay off +in the long run. + +Once you've got that far, its time to start with the testing. + +Step 1. Just get the tests building. +If you're in the build directory (i.e. where you ran the "./configure" and +"make" steps), you should be able to run "make check" and have the tests +build and run. Towards the end, it should report something like: +=================== +All 15 tests passed +=================== + +If any of them fail, please let us know ASAP. + +Step 2. After that works, its time to set up the coverage testing. Obviously we +want to understand which code isn't being tested, then write a test to check +that code, and finally make sure that the code is being tested. Fortunately, +there are nice tools to check which code is being run. On Unix / Linux, you +should have no problem obtaining "gcov" and "lcov" - they're probably available +using your package / build system. + +Clean up the build: +make distclean +and then run configure with the --enable-gcov=yes option: +./configure --enable-gcov=yes +You can add in any other options for configure at the same time (just as you +did for the initial build). Then build as normal: +make check + +You don't need to install (and probably don't want to install this version). + +Then zero out the coverage numbers: +make coverage-init + +and build the tests: +make check + +and finally do the coverage summary: +make coverage + +At the end, you should see something like: +Writing directory view page. +Overall coverage rate: + lines......: 64.9% (64946 of 100079 lines) + functions..: 16.4% (218 of 1329 functions) + branches...: 8.2% (1929 of 23468 branches) + +Step 3. Find some untested code. +The results of the testing are converted into nice HTML, which is in the +covresults/ directory. Point your web browser at covresults/index.html. +Untested functions are the most important, then untested branches. Don't worry +too much about untested lines. The colour coding should help. + +Step 4. Decide to do something about it. +This is really the only hard part. + +Step 5. Think about how to test the code using SQL. +Lets say you notice that the fnct_math_floor() function isn't being tested. +[It is in src/spatialite/spatialite.c if you're looking for it]. Now further +inspection shows its being mapped to the SQL floor function using: +sqlite3_create_function (db, "floor", 1, SQLITE_ANY, 0, fnct_math_floor, 0, 0); +So something like "SELECT floor(3.2);" would give us a test case. However +libspatialite doesn't include the command line tools, so we have a simple test +harness in the test directory called "check_sql_stmt". It basically loads test +cases from a directory (test/sql_stmt_tests/). Any file ending with .testcase +will be checked. + +A quick overview of the format: +* anything after a # character is a comment. +Line 1: the name of the test +Line 2: the database file to use. ":memory:" is usually the best option, but +you can load a pre-existing database if you need source data. +Line 3: the SQL to run. +Line 4: the number of rows of results you're expecting (not including the +header row) +Line 5: the number of columns of results you're expecting. +remaining lines: the results, one line per cell. + +So lets write such a file: +floor(3.2) # you can use the SQL if you're not feeling imaginative. +:memory: +SELECT floor(3.2); +1 # rows +1 # columns +floor(3.2) # this is the header row +3.0 # this is really the result + +and save it (in test/sql_stmt_tests/ - I called mine floor32.testcase, but you +can use anything that doesn't already exist and ends with .testcase). + +Now when you run "make check" you should see your new test being run, marked by +an entry just above the PASS: check_sql_stmt that looks like: +Test case: floor(3.2) + +[It won't change the total number of test cases reported by "make check" because +that is just the number of unique programs that were run, and this is an extra +test file within an existing program] + +Step 6. Re-run the coverage programs: +make coverage-init && make check && make coverage +and check the results with the browser. You should now see some green lines in +fnct_math_floor. However you might notice that there are still some red lines +(and red - and # marks on the left side, which indicate branches not taken). We +can see that we're testing the case where we have SQLITE_FLOAT input, but not +integer or some other inputs. + +Step 7. Write another test file: + +floor(integer) # integer input - this is just the name remember +:memory: +SELECT floor(3); # the SQL to run +1 # rows +1 # columns +floor(3) # this is the header row +3.0 # this is really the result + +Save it, again in test/sql_stmt_tests/ - I called mine floorint.testcase, but +anything will do. +Then run the tests again: +make check +and you should see your new test case as well: +Test case: floor(3.2) +Test case: floor(integer) + +Step 8. Repeat the coverage program runs: +make coverage-init && make check && make coverage +and check the results with the browser. You should now see even more green lines +in fnct_math_floor. However there is still the case for what happens if the +input is neither integer nor float. For example, what happens if we put in a +test entry. + +Step 9. Write another test file. +floor(null) # text input, expecting null output +:memory: +SELECT floor("some text"); # the SQL to run +1 # rows +1 # columns +floor("some text") # this is the header row +(NULL) # this is really the result - special case for null value + +and do the save / check / check coverage things again. + +You should see pretty much all of that function is now being tested. + +Step 10. Send the results to be added to libspatialite! +You can make a svn diff output if you're familiar with SVN, but you can just +send the new files that you're written (e.g. as a tar.gz or zip file) to me +(bradh@frogmouth.net) or to the spatialite-users mailing list. + + +Hints: +1. If your test results in a null value, use "(NULL)" as the expected cell +value. + +2. If your test result is a floating point value, and it might vary at the least +significant values, then you can make the test more reliable by limiting how +close things need to be. You do this by adding a : character, then the number +of characters to compare. So if you're looking for 2.7182818, but the result +could vary a bit, then write the result as 2.7182818:8. If you need to put a +colon (:) character in the value, you can use :0 at the end, to indicate that +the precision should be "absolute match". + +3. If you want to run the tests under valgrind, change into the test/ directory +and use: +libtool --mode=execute valgrind --track-origins=yes --tool=memcheck --num-callers=20 --leak-check=full --show-reachable=yes ./check_sql_stmt + +4. Don't worry about the not-taken branch for GAIA_UNUSED(). This is just to +avoid a warning, and isn't a problem. + +5. Don't worry about not being able to write a test for every possible scenario. +Even a little extra coverage helps. + +6. If your test shows a problem, think twice before fixing the test to match +the code. It could be that you've just found a bug, and that is really important +news - we have a reliable way to reproduce the problem, and a way to make sure +it doesn't sneak back in later. Please raise these issues separately. + +7. You can "hold" failing test cases by renaming the file (I usually add +".on-hold", so pow00.testcase becomes pow00.testcase.on-hold). This allows you +to keep testing without loosing the problem test cases. You can use that to +"remove" the test cases for fnct_math_floor() if you want to reproduce this. diff --git a/src/spatialite/test/archaic.dxf b/src/spatialite/test/archaic.dxf new file mode 100644 index 0000000..2b4ffe6 --- /dev/null +++ b/src/spatialite/test/archaic.dxf @@ -0,0 +1,628 @@ + 0 +SECTION + 2 +ENTITIES + 0 +POLYLINE + 8 +0708 + 66 + 1 + 70 + 136 + 0 +VERTEX + 8 +0708 + 70 + 32 + 10 + 1640917.36 + 20 + 4862170.21 + 30 + 72.73 + 0 +VERTEX + 8 +0708 + 70 + 32 + 10 + 1640911.27 + 20 + 4862198.25 + 30 + 72.70 + 0 +SEQEND + 8 +0708 + 0 +POLYLINE + 8 +0906 + 66 + 1 + 70 + 136 + 0 +VERTEX + 8 +0906 + 70 + 32 + 10 + 1647065.00 + 20 + 4867860.00 + 30 + 556.52 + 0 +VERTEX + 8 +0906 + 70 + 32 + 10 + 1647188.00 + 20 + 4862307.00 + 30 + 591.63 + 0 +VERTEX + 8 +0906 + 70 + 32 + 10 + 1640495.00 + 20 + 4862161.00 + 30 + 633.96 + 0 +VERTEX + 8 +0906 + 70 + 32 + 10 + 1640377.00 + 20 + 4867715.00 + 30 + 669.08 + 0 +VERTEX + 8 +0906 + 70 + 32 + 10 + 1647065.00 + 20 + 4867860.00 + 30 + 556.52 + 0 +SEQEND + 8 +0906 + 0 +POLYLINE + 8 +0906 + 66 + 1 + 70 + 136 + 0 +VERTEX + 8 +0201 + 70 + 32 + 10 + 1646450.28 + 20 + 4862772.46 + 30 + 54.29 + 0 +VERTEX + 8 +0201 + 70 + 32 + 10 + 1646457.94 + 20 + 4862771.33 + 30 + 54.11 + 0 +VERTEX + 8 +0201 + 70 + 32 + 10 + 1646455.68 + 20 + 4862761.50 + 30 + 54.49 + 0 +SEQEND + 8 +0201 + 0 +POLYLINE + 8 +0714 + 66 + 1 + 70 + 136 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641969.01 + 20 + 4865226.08 + 30 + 518.87 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641972.82 + 20 + 4865242.18 + 30 + 519.69 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641975.04 + 20 + 4865250.21 + 30 + 520.89 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641976.45 + 20 + 4865256.96 + 30 + 520.73 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641981.46 + 20 + 4865273.74 + 30 + 518.06 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641983.69 + 20 + 4865275.16 + 30 + 517.08 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641987.97 + 20 + 4865277.87 + 30 + 515.20 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641996.91 + 20 + 4865277.48 + 30 + 512.35 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1642004.36 + 20 + 4865276.13 + 30 + 509.62 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1642006.15 + 20 + 4865269.78 + 30 + 505.74 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1642004.58 + 20 + 4865257.76 + 30 + 502.83 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1642000.05 + 20 + 4865250.78 + 30 + 503.03 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641996.31 + 20 + 4865243.13 + 30 + 503.32 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641994.92 + 20 + 4865233.87 + 30 + 503.97 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641994.58 + 20 + 4865229.88 + 30 + 504.11 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641995.36 + 20 + 4865221.81 + 30 + 504.33 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641997.57 + 20 + 4865207.30 + 30 + 505.28 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1642001.17 + 20 + 4865185.76 + 30 + 506.86 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1642005.45 + 20 + 4865159.45 + 30 + 506.90 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1642005.70 + 20 + 4865157.77 + 30 + 506.77 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1642000.11 + 20 + 4865158.99 + 30 + 510.70 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641996.97 + 20 + 4865160.79 + 30 + 512.04 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641993.70 + 20 + 4865165.58 + 30 + 513.18 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641992.25 + 20 + 4865169.70 + 30 + 513.39 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641988.16 + 20 + 4865187.15 + 30 + 513.18 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641984.13 + 20 + 4865194.87 + 30 + 514.36 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641975.01 + 20 + 4865209.96 + 30 + 517.48 + 0 +VERTEX + 8 +0714 + 70 + 32 + 10 + 1641969.01 + 20 + 4865226.08 + 30 + 518.87 + 0 +SEQEND + 8 +0714 + 0 +POINT + 8 +0907 + 10 + 1645244.54 + 20 + 4866102.58 + 30 + 567.93 + 0 +POINT + 8 +0231 + 10 + 1647000.63 + 20 + 4867829.22 + 30 + 272.16 + 0 +POINT + 8 +0231 + 10 + 1646343.31 + 20 + 4867805.90 + 30 + 397.27 + 0 +POINT + 8 +0231 + 10 + 1642506.09 + 20 + 4866841.75 + 30 + 381.54 + 0 +POINT + 8 +0231 + 10 + 1642112.33 + 20 + 4864688.20 + 30 + 433.96 + 0 +POINT + 8 +0231 + 10 + 1641734.62 + 20 + 4865794.25 + 30 + 603.60 + 0 +POINT + 8 +0231 + 10 + 1640659.45 + 20 + 4862849.61 + 30 + 97.58 + 0 +POINT + 8 +0231 + 10 + 1646492.89 + 20 + 4862739.77 + 30 + 52.88 + 0 +TEXT + 8 +1014 + 10 + 1642628.16 + 20 + 4864868.39 + 30 + 299.30 + 40 + 15.00 + 50 + .00 + 51 + .00 + 1 +299.3 + 0 +TEXT + 8 +1016 + 10 + 1647132.59 + 20 + 4862749.38 + 30 + 34.00 + 40 + 15.00 + 50 + 26.00 + 51 + .00 + 1 +34 + 0 +ENDSEC + 0 +EOF diff --git a/src/spatialite/test/asprintf4win.h b/src/spatialite/test/asprintf4win.h new file mode 100644 index 0000000..3725072 --- /dev/null +++ b/src/spatialite/test/asprintf4win.h @@ -0,0 +1,83 @@ +/* + * Copyright (C) 2001 Federico Di Gregorio + * Copyright (C) 1991, 1994-1999, 2000, 2001 Free Software Foundation, Inc. + * + * This code has been derived from an example in the glibc2 documentation. + * This file is part of the psycopg module. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2, + * or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + */ + +/* + * asprintf.c -- asprintf() implementation for braindamaged operating systems + * $Id: asprintf.c 554 2004-10-30 00:19:27Z fog $ + */ + +#ifndef _WIN32 +#include +#endif +#include +#include +#ifndef _WIN32 +#include +#endif +#include + +#ifdef _WIN32 +#define vsnprintf _vsnprintf +#endif + +int +asprintf (char **buffer, char *fmt, ...) +{ + /* Guess we need no more than 200 chars of space. */ + int size = 200; + int nchars; + va_list ap; + + *buffer = (char *) malloc (size); + if (*buffer == NULL) + return -1; + + /* Try to print in the allocated space. */ + va_start (ap, fmt); + nchars = vsnprintf (*buffer, size, fmt, ap); + va_end (ap); + + if (nchars >= size) + { + char *tmpbuff; + /* Reallocate buffer now that we know how much space is needed. */ + size = nchars + 1; + tmpbuff = (char *) realloc (*buffer, size); + + + if (tmpbuff == NULL) + { /* we need to free it */ + free (*buffer); + return -1; + } + + *buffer = tmpbuff; + /* Try again. */ + va_start (ap, fmt); + nchars = vsnprintf (*buffer, size, fmt, ap); + va_end (ap); + } + + if (nchars < 0) + return nchars; + return size; +} diff --git a/src/spatialite/test/books-bad.xml b/src/spatialite/test/books-bad.xml new file mode 100644 index 0000000..390b187 --- /dev/null +++ b/src/spatialite/test/books-bad.xml @@ -0,0 +1,9 @@ + +The Pickwick PapersOliver TwistDavid Copperfield +A Christmas CarolHard Times +The Scarlet Letter +Vanity Fair +The Luck of Barry Lyndon +Lord JimThe Secret AgentHeart of Darkness + diff --git a/src/spatialite/test/books-bad.xsd b/src/spatialite/test/books-bad.xsd new file mode 100644 index 0000000..697cd6c --- /dev/null +++ b/src/spatialite/test/books-bad.xsd @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + diff --git a/src/spatialite/test/books.xml b/src/spatialite/test/books.xml new file mode 100644 index 0000000..1dc8ea5 --- /dev/null +++ b/src/spatialite/test/books.xml @@ -0,0 +1,9 @@ + +The Pickwick PapersOliver TwistDavid Copperfield +A Christmas CarolHard Times +The Scarlet Letter +Vanity Fair +The Luck of Barry Lyndon +Lord JimThe Secret AgentHeart of Darkness + diff --git a/src/spatialite/test/books.xsd b/src/spatialite/test/books.xsd new file mode 100644 index 0000000..970518c --- /dev/null +++ b/src/spatialite/test/books.xsd @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/spatialite/test/check_add_tile_triggers.c b/src/spatialite/test/check_add_tile_triggers.c new file mode 100644 index 0000000..1c8819b --- /dev/null +++ b/src/spatialite/test/check_add_tile_triggers.c @@ -0,0 +1,492 @@ +/* + + check_add_tile_triggers.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + void *cache = spatialite_alloc_connection (); + char *old_SPATIALITE_SECURITY_ENV = NULL; +#ifdef _WIN32 + char *env; +#endif /* not WIN32 */ + + old_SPATIALITE_SECURITY_ENV = getenv ("SPATIALITE_SECURITY"); +#ifdef _WIN32 + putenv ("SPATIALITE_SECURITY=relaxed"); +#else /* not WIN32 */ + setenv ("SPATIALITE_SECURITY", "relaxed", 1); +#endif + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_add_tile_triggers.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + + if (old_SPATIALITE_SECURITY_ENV) + { +#ifdef _WIN32 + env = + sqlite3_mprintf ("SPATIALITE_SECURITY=%s", + old_SPATIALITE_SECURITY_ENV); + putenv (env); + sqlite3_free (env); +#else /* not WIN32 */ + setenv ("SPATIALITE_SECURITY", old_SPATIALITE_SECURITY_ENV, 1); +#endif + } + else + { +#ifdef _WIN32 + putenv ("SPATIALITE_SECURITY="); +#else /* not WIN32 */ + unsetenv ("SPATIALITE_SECURITY"); +#endif + } + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -2; + } + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"test1_matrix_tiles\", 4326, -180.0, -90.0, 180.0, 90.0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesTable() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -3; + } + + /* test the trigger works - several different cases here */ + ret = + sqlite3_exec (db_handle, + "INSERT INTO test1_matrix_tiles VALUES ( 0, 0, 0, 0, BlobFromFile('empty.png'))", + NULL, NULL, &err_msg); + if (ret != SQLITE_CONSTRAINT) + { + fprintf (stderr, "unexpected INSERT INTO 4 result: %i (%s)\n", ret, + err_msg); + return -4; + } + if (strcmp + (err_msg, + "insert on table 'test1_matrix_tiles' violates constraint: zoom_level not specified for table in gpkg_tile_matrix") + != 0) + { + fprintf (stderr, "unexpected INSERT INTO error message 5: %s\n", + err_msg); + sqlite3_free (err_msg); + return -5; + } + sqlite3_free (err_msg); + + /* create matrix level 0 and 4 */ + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 0, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesZoomLevel(0) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -6; + } + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 4, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesZoomLevel(4) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -7; + } + + ret = + sqlite3_exec (db_handle, + "INSERT INTO test1_matrix_tiles VALUES ( 0, 0, 1, 0, BlobFromFile('empty.png'))", + NULL, NULL, &err_msg); + if (ret != SQLITE_CONSTRAINT) + { + fprintf (stderr, "unexpected INSERT INTO 8 result: %i\n", ret); + return -8; + } + if (strcmp + (err_msg, + "insert on table 'test1_matrix_tiles' violates constraint: tile_column must be < matrix_width specified for table and zoom level in gpkg_tile_matrix") + != 0) + { + fprintf (stderr, "unexpected INSERT INTO error message 9: %s\n", + err_msg); + sqlite3_free (err_msg); + return -9; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "INSERT INTO test1_matrix_tiles (zoom_level, tile_column, tile_row, tile_data) VALUES ( 0, 0, 1, BlobFromFile('empty.png'))", + NULL, NULL, &err_msg); + if (ret != SQLITE_CONSTRAINT) + { + fprintf (stderr, "unexpected INSERT INTO 10 result: %i\n", ret); + return -10; + } + if (strcmp + (err_msg, + "insert on table 'test1_matrix_tiles' violates constraint: tile_row must be < matrix_height specified for table and zoom level in gpkg_tile_matrix") + != 0) + { + fprintf (stderr, "unexpected INSERT INTO error message 11: %s\n", + err_msg); + sqlite3_free (err_msg); + return -11; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "INSERT INTO test1_matrix_tiles (zoom_level, tile_column, tile_row, tile_data) VALUES ( 4, 16, 3, BlobFromFile('empty.png'))", + NULL, NULL, &err_msg); + if (ret != SQLITE_CONSTRAINT) + { + fprintf (stderr, "unexpected INSERT INTO 12 result: %i\n", ret); + return -12; + } + if (strcmp + (err_msg, + "insert on table 'test1_matrix_tiles' violates constraint: tile_column must be < matrix_width specified for table and zoom level in gpkg_tile_matrix") + != 0) + { + fprintf (stderr, "unexpected INSERT INTO error message 13: %s\n", + err_msg); + sqlite3_free (err_msg); + return -13; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "INSERT INTO test1_matrix_tiles (zoom_level, tile_column, tile_row, tile_data) VALUES ( 4, 6, 16, BlobFromFile('empty.png'))", + NULL, NULL, &err_msg); + if (ret != SQLITE_CONSTRAINT) + { + fprintf (stderr, "unexpected INSERT INTO 14 result: %i\n", ret); + return -14; + } + if (strcmp + (err_msg, + "insert on table 'test1_matrix_tiles' violates constraint: tile_row must be < matrix_height specified for table and zoom level in gpkg_tile_matrix") + != 0) + { + fprintf (stderr, "unexpected INSERT INTO error message 15: %s\n", + err_msg); + sqlite3_free (err_msg); + return -15; + } + sqlite3_free (err_msg); + + /* Check a proper INSERT */ + ret = + sqlite3_exec (db_handle, + "INSERT INTO test1_matrix_tiles (zoom_level, tile_column, tile_row, tile_data) VALUES (0, 0 ,0, BlobFromFile('empty.png'))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT error 21: %s\n", err_msg); + sqlite3_free (err_msg); + return -21; + } + ret = + sqlite3_exec (db_handle, + "INSERT INTO test1_matrix_tiles (zoom_level, tile_column, tile_row, tile_data) VALUES (4, 15 , 15, BlobFromFile('empty.png'))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT error 22: %s\n", err_msg); + sqlite3_free (err_msg); + return -22; + } + + /* check negative row / column numbers */ + ret = + sqlite3_exec (db_handle, + "INSERT INTO test1_matrix_tiles (zoom_level, tile_column, tile_row, tile_data) VALUES ( 4, -1, 15, BlobFromFile('empty.png'))", + NULL, NULL, &err_msg); + if (ret != SQLITE_CONSTRAINT) + { + fprintf (stderr, "unexpected INSERT INTO 23 result: %i\n", ret); + return -23; + } + if (strcmp + (err_msg, + "insert on table 'test1_matrix_tiles' violates constraint: tile_column cannot be < 0") + != 0) + { + fprintf (stderr, "unexpected INSERT INTO error message 24: %s\n", + err_msg); + sqlite3_free (err_msg); + return -24; + } + sqlite3_free (err_msg); + ret = + sqlite3_exec (db_handle, + "INSERT INTO test1_matrix_tiles (zoom_level, tile_column, tile_row, tile_data) VALUES ( 4, 15, -1, BlobFromFile('empty.png'))", + NULL, NULL, &err_msg); + if (ret != SQLITE_CONSTRAINT) + { + fprintf (stderr, "unexpected INSERT INTO 25 result: %i\n", ret); + return -25; + } + if (strcmp + (err_msg, + "insert on table 'test1_matrix_tiles' violates constraint: tile_row cannot be < 0") + != 0) + { + fprintf (stderr, "unexpected INSERT INTO error message 26: %s\n", + err_msg); + sqlite3_free (err_msg); + return -26; + } + sqlite3_free (err_msg); + + /* try some update checks */ + ret = + sqlite3_exec (db_handle, + "UPDATE test1_matrix_tiles SET zoom_level = 1 WHERE id = 1", + NULL, NULL, &err_msg); + if (ret != SQLITE_CONSTRAINT) + { + fprintf (stderr, "unexpected UPDATE 27 result: %i\n", ret); + return -27; + } + if (strcmp + (err_msg, + "update on table 'test1_matrix_tiles' violates constraint: zoom_level not specified for table in gpkg_tile_matrix") + != 0) + { + fprintf (stderr, "unexpected UPDATE error message 28: %s\n", err_msg); + sqlite3_free (err_msg); + return -28; + } + sqlite3_free (err_msg); + + + ret = + sqlite3_exec (db_handle, + "UPDATE test1_matrix_tiles SET zoom_level = -1 WHERE id = 1", + NULL, NULL, &err_msg); + if (ret != SQLITE_CONSTRAINT) + { + fprintf (stderr, "unexpected UPDATE 29 result: %i\n", ret); + return -29; + } + if (strcmp + (err_msg, + "update on table 'test1_matrix_tiles' violates constraint: zoom_level not specified for table in gpkg_tile_matrix") + != 0) + { + fprintf (stderr, "unexpected UPDATE error message 30: %s\n", err_msg); + sqlite3_free (err_msg); + return -30; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "UPDATE test1_matrix_tiles SET tile_column = -1 WHERE id = 1", + NULL, NULL, &err_msg); + if (ret != SQLITE_CONSTRAINT) + { + fprintf (stderr, "unexpected UPDATE 31 result: %i\n", ret); + return -31; + } + if (strcmp + (err_msg, + "update on table 'test1_matrix_tiles' violates constraint: tile_column cannot be < 0") + != 0) + { + fprintf (stderr, "unexpected UPDATE error message 32: %s\n", err_msg); + sqlite3_free (err_msg); + return -32; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "UPDATE test1_matrix_tiles SET tile_row = -1 WHERE id = 1", + NULL, NULL, &err_msg); + if (ret != SQLITE_CONSTRAINT) + { + fprintf (stderr, "unexpected UPDATE 33 result: %i\n", ret); + return -33; + } + if (strcmp + (err_msg, + "update on table 'test1_matrix_tiles' violates constraint: tile_row cannot be < 0") + != 0) + { + fprintf (stderr, "unexpected UPDATE error message 34: %s\n", err_msg); + sqlite3_free (err_msg); + return -34; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "UPDATE test1_matrix_tiles SET tile_row = 1 WHERE id = 1", + NULL, NULL, &err_msg); + if (ret != SQLITE_CONSTRAINT) + { + fprintf (stderr, "unexpected UPDATE 35 result: %i\n", ret); + return -35; + } + if (strcmp + (err_msg, + "update on table 'test1_matrix_tiles' violates constraint: tile_row must be < matrix_height specified for table and zoom level in gpkg_tile_matrix") + != 0) + { + fprintf (stderr, "unexpected UPDATE error message 36: %s\n", err_msg); + sqlite3_free (err_msg); + return -36; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "UPDATE test1_matrix_tiles SET tile_column = 1 WHERE id = 1", + NULL, NULL, &err_msg); + if (ret != SQLITE_CONSTRAINT) + { + fprintf (stderr, "unexpected UPDATE 37 result: %i\n", ret); + return -37; + } + if (strcmp + (err_msg, + "update on table 'test1_matrix_tiles' violates constraint: tile_column must be < matrix_width specified for table and zoom level in gpkg_tile_matrix") + != 0) + { + fprintf (stderr, "unexpected UPDATE error message 38: %s\n", err_msg); + sqlite3_free (err_msg); + return -38; + } + sqlite3_free (err_msg); + + /* test trigger setup, bad table type */ + ret = + sqlite3_exec (db_handle, "SELECT gpkgAddTileTriggers(0)", NULL, NULL, + &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "unexpected SELECT gpkgAddTileTriggers(0) result: %i\n", + ret); + return -100; + } + if (strcmp + (err_msg, + "gpkgAddTileTriggers() error: argument 1 [table] is not of the String type") + != 0) + { + fprintf (stderr, + "unexpected SELECT gpkgAddTileTriggers(0) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -101; + } + + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_add_tile_triggers_bad_table_name.c b/src/spatialite/test/check_add_tile_triggers_bad_table_name.c new file mode 100644 index 0000000..13df038 --- /dev/null +++ b/src/spatialite/test/check_add_tile_triggers_bad_table_name.c @@ -0,0 +1,199 @@ +/* + + check_add_tile_triggers_bad_table_name.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + void *cache = spatialite_alloc_connection (); + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_add_tile_triggers_bad_table_name.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + /* create a minimal raster_format_metadata table (not spec compliant) */ + ret = + sqlite3_exec (db_handle, "DROP TABLE IF EXISTS raster_format_metadata", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP raster_format_metadata error: %s\n", err_msg); + sqlite3_free (err_msg); + return -4; + } + ret = + sqlite3_exec (db_handle, + "CREATE TABLE raster_format_metadata (r_table_name TEXT NOT NULL, r_raster_column TEXT NOT NULL, mime_type TEXT NOT NULL DEFAULT 'image/jpeg', bit_depth INTEGER NOT NULL DEFAULT 24)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE raster_format_metadata error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -5; + } + + /* add in a test entry */ + ret = + sqlite3_exec (db_handle, + "INSERT INTO raster_format_metadata VALUES (\"mytable_tiles\", \"tile_data\", \"image/png\", 24)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT raster_format_metadata error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -6; + } + + /* create a minimal tile_matrix_metadata table (not spec compliant) */ + ret = + sqlite3_exec (db_handle, "DROP TABLE IF EXISTS tile_matrix_metadata", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP tile_matrix_metadata error: %s\n", err_msg); + sqlite3_free (err_msg); + return -7; + } + ret = + sqlite3_exec (db_handle, + "CREATE TABLE tile_matrix_metadata (t_table_name TEXT NOT NULL, zoom_level INTEGER NOT NULL, matrix_width INTEGER NOT NULL, matrix_height INTEGER NOT NULL)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE tile_matrix_metadata error: %s\n", err_msg); + sqlite3_free (err_msg); + return -8; + } + /* add in a test entry */ + ret = + sqlite3_exec (db_handle, + "INSERT INTO tile_matrix_metadata VALUES (\"mytable_tiles\", 0, 1, 1)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT tile_matrix_metadata error: %s\n", err_msg); + sqlite3_free (err_msg); + return -9; + } + + /* create a target table */ + ret = + sqlite3_exec (db_handle, "DROP TABLE IF EXISTS mytable_tiles", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP mytable_tiles error: %s\n", err_msg); + sqlite3_free (err_msg); + return -10; + } + ret = + sqlite3_exec (db_handle, + "CREATE TABLE mytable_tiles (id INTEGER PRIMARY KEY AUTOINCREMENT, zoom_level INTEGER NOT NULL DEFAULT 0, tile_column INTEGER NOT NULL DEFAULT 0, tile_row INTEGER NOT NULL DEFAULT 0, tile_data BLOB NOT NULL DEFAULT (zeroblob(4)))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE mytable_tiles error: %s\n", err_msg); + sqlite3_free (err_msg); + return -11; + } + + /* test trigger setup */ + ret = + sqlite3_exec (db_handle, + "SELECT gpkgAddTileTriggers(\"no_such_table\")", NULL, + NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Unexpected gpkgAddTileTriggers result: %i\n", ret); + return -12; + } + if (strcmp (err_msg, "no such table: main.no_such_table") != 0) + { + fprintf (stderr, + "SELECT gpkgAddTileTriggers unexpected error message: %s\n", + err_msg); + sqlite3_free (err_msg); + return -13; + } + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_bufovflw.c b/src/spatialite/test/check_bufovflw.c new file mode 100644 index 0000000..9f519e6 --- /dev/null +++ b/src/spatialite/test/check_bufovflw.c @@ -0,0 +1,1945 @@ +/* + + check_bufovflw.c -- SpatiaLite Test Case - buffer overflows + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" +#include + +void +cleanup_shapefile (const char *filename) +{ + char nam[1000]; + + if (!filename) + { + return; + } + + snprintf (nam, 1000, "%s.dbf", filename); + unlink (nam); + snprintf (nam, 1000, "%s.prj", filename); + unlink (nam); + snprintf (nam, 1000, "%s.shp", filename); + unlink (nam); + snprintf (nam, 1000, "%s.shx", filename); + unlink (nam); +} + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + sqlite3_stmt *stmt; + char *err_msg = NULL; + int suffix_len = 16 * 1024; /* 16 KB suffix */ + char *suffix; + char *xtable; + char *shape; + char *shape2; + char *shape2geom; + char *dbf; + char *table_a; + char *table_b; + char *topology; + char *auth; +#ifndef OMIT_PROJ /* including PROJ.4 */ + char *kml1; + char *kml2; +#endif /* end including PROJ.4 */ + char *resvalue; + char *pk; + char *name; + char *geom; + char *sql; + char **results; + const char *value; + int rows; + int columns; + char *string; + int len; + char frmt[2048]; + int row_count; + char *dumpname = __FILE__ "dump"; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + +/* setting up very long table and column names */ + suffix = malloc (suffix_len); + memset (suffix, 'z', suffix_len); + suffix[suffix_len - 1] = '\0'; + + table_a = sqlite3_mprintf ("table_a_%s", suffix); + table_b = sqlite3_mprintf ("table_b_%s", suffix); + shape2 = sqlite3_mprintf ("shape_table_2_%s", suffix); + shape2geom = sqlite3_mprintf ("shape_table_2_geom_%s", suffix); + shape = sqlite3_mprintf ("shape_table_%s", suffix); + dbf = sqlite3_mprintf ("dbf_tbale_%s", suffix); + pk = sqlite3_mprintf ("id_%s", suffix); + name = sqlite3_mprintf ("name_%s", suffix); + geom = sqlite3_mprintf ("geom_%s", suffix); + topology = sqlite3_mprintf ("topology_%s_", suffix); + +/* creating table "A" */ + sql = sqlite3_mprintf ("CREATE TABLE %s (\n" + "%s INTEGER NOT NULL PRIMARY KEY,\n" + "%s TEXT NOT NULL)", table_a, pk, name); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE-A error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -3; + } + +/* adding a POINT Geometry to table "A" */ + sql = sqlite3_mprintf ("SELECT AddGeometryColumn(%Q, %Q, " + "4326, 'POINT', 'XY')", table_a, geom); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -4; + } + +/* creating a Spatial Index on table "A" */ + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, %Q)", table_a, geom); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CreateSpatialIndex (TABLE-A) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -5; + } + +/* inserting few valid rows on table "A" */ + sql = sqlite3_mprintf ("INSERT INTO %s (%s, %s, %s) VALUES " + "(1, 'alpha', MakePoint(1, 10, 4326))", table_a, pk, + name, geom); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT INTO error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -6; + } + sql = sqlite3_mprintf ("INSERT INTO %s (%s, %s, %s) VALUES " + "(2, 'beta', MakePoint(2, 20, 4326))", table_a, pk, + name, geom); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT INTO error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -106; + } + sql = sqlite3_mprintf ("INSERT INTO %s (%s, %s, %s) VALUES " + "(3, 'gamma', MakePoint(3, 30, 4326))", table_a, pk, + name, geom); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT INTO error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -206; + } + sql = sqlite3_mprintf ("INSERT INTO %s (%s, %s, %s) VALUES " + "(4, 'delta', MakePoint(4, 40, 4326))", table_a, pk, + name, geom); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT INTO error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -306; + } + sql = sqlite3_mprintf ("INSERT INTO %s (%s, %s, %s) VALUES " + "(5, 'epsilon', MakePoint(5, 50, 4326))", table_a, + pk, name, geom); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT INTO error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -406; + } + +/* inserting few invalid geometries on table "A" */ + sql = sqlite3_mprintf ("INSERT INTO %s (%s, %s, %s) VALUES " + "(6, 'zeta', MakePoint(10, 10))", table_a, pk, name, + geom); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + sql = sqlite3_mprintf ("%s.%s violates Geometry constraint " + "[geom-type or SRID not allowed]", table_a, + geom); + ret = strcmp (sql, err_msg); + sqlite3_free (err_msg); + sqlite3_free (sql); + if (ret == 0) + goto test2; + sqlite3_close (handle); + return -7; + } + test2: + sql = sqlite3_mprintf ("INSERT INTO %s (%s, %s, %s) VALUES " + "(7, 'eta', MakePointZ(20, 20, 20, 4326))", table_a, + pk, name, geom); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + sql = sqlite3_mprintf ("%s.%s violates Geometry constraint " + "[geom-type or SRID not allowed]", table_a, + geom); + ret = strcmp (sql, err_msg); + sqlite3_free (err_msg); + sqlite3_free (sql); + if (ret == 0) + goto test3; + sqlite3_close (handle); + return -8; + } + test3: + sql = sqlite3_mprintf ("INSERT INTO %s (%s, %s, %s) VALUES " + "(8, 'theta', GeomFromText('LINESTRING(0 0, 1 1)', 4326))", + table_a, pk, name, geom); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + sql = sqlite3_mprintf ("%s.%s violates Geometry constraint " + "[geom-type or SRID not allowed]", table_a, + geom); + ret = strcmp (sql, err_msg); + sqlite3_free (err_msg); + sqlite3_free (sql); + if (ret == 0) + goto test4; + sqlite3_close (handle); + return -9; + } + test4: + +/* checking for validity (table A) */ + sql = sqlite3_mprintf ("SELECT Count(*) FROM %s WHERE ROWID IN (" + "SELECT ROWID FROM SpatialIndex WHERE " + "f_table_name = %Q AND f_geometry_column = %Q " + "AND search_frame = BuildCircleMbr(3, 30, 1))", + table_a, table_a, geom); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Test TABLE-A error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -10; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, "Unexpected rows/columns (TABLE-A): r=%d c=%d\n", + rows, columns); + return -11; + } + value = results[1]; + if (strcmp ("1", value) != 0) + { + fprintf (stderr, "Unexpected result (TABLE-A): %s\n", results[1]); + return -12; + } + sqlite3_free_table (results); + +/* creating table "B" */ + sql = sqlite3_mprintf ("CREATE TABLE %s AS " + "SELECT * FROM %s", table_b, table_a); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE-B error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -13; + } + +/* recovering Geometry for table "B" */ + sql = sqlite3_mprintf ("SELECT RecoverGeometryColumn(%Q, %Q, " + "4326, 'POINT', 'XY')", table_b, geom); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverGeometryColumn error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -14; + } + +/* creating a Spatial Index on table "B" */ + sql = sqlite3_mprintf ("SELECT CreateSpatialIndex(%Q, %Q)", table_b, geom); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CreateSpatialIndex (TABLE-B) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -15; + } + +/* checking for validity (table B) */ + sql = sqlite3_mprintf ("SELECT Count(*) FROM %s WHERE ROWID IN (" + "SELECT ROWID FROM SpatialIndex WHERE " + "f_table_name = %Q AND f_geometry_column = %Q " + "AND search_frame = BuildCircleMbr(2, 20, 1))", + table_b, table_b, geom); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Test TABLE-B error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -16; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, "Unexpected rows/columns (TABLE-B): r=%d c=%d\n", + rows, columns); + return -17; + } + value = results[1]; + if (strcmp ("1", value) != 0) + { + fprintf (stderr, "Unexpected result (TABLE-B): %s\n", results[1]); + return -18; + } + sqlite3_free_table (results); + +/* deleting one row from Table B */ + sql = sqlite3_mprintf ("DELETE FROM %s WHERE %s = 2", table_b, pk); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE (TABLE-B) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -19; + } + +/* updating one row into Table B */ + sql = sqlite3_mprintf ("UPDATE %s SET %s = MakePoint(-3, -30, 4326) " + "WHERE %s = 4", table_b, geom, pk); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UPDATE (TABLE-B) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -20; + } + +/* invalid updates table "B" */ + sql = sqlite3_mprintf ("UPDATE %s SET %s = MakePoint(-2, -20) " + "WHERE %s = 2", table_b, geom, pk); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + sql = sqlite3_mprintf ("%s.%s violates Geometry constraint " + "[geom-type or SRID not allowed]", table_b, + geom); + ret = strcmp (sql, err_msg); + sqlite3_free (sql); + if (ret == 0) + goto test5; + sqlite3_free (sql); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -21; + } + test5: + sql = sqlite3_mprintf ("UPDATE %s SET %s = MakePointZ(-2, -20, 20, 4326) " + "WHERE %s = 2", table_b, geom, pk); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + sql = sqlite3_mprintf ("%s.%s violates Geometry constraint " + "[geom-type or SRID not allowed]", table_b, + geom); + ret = strcmp (sql, err_msg); + sqlite3_free (sql); + if (ret == 0) + goto test6; + sqlite3_free (sql); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -22; + } + test6: + sql = + sqlite3_mprintf + ("UPDATE %s SET %s = GeomFromText('LINESTRING(0 0, 1 1)', 4326) " + "WHERE %s = 2", table_b, geom, pk); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + sql = sqlite3_mprintf ("%s.%s violates Geometry constraint " + "[geom-type or SRID not allowed]", table_b, + geom); + ret = strcmp (sql, err_msg); + sqlite3_free (sql); + if (ret == 0) + goto test7; + sqlite3_free (sql); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -23; + } + test7: + +/* VACUUM - thus invalidating TABLE-B Spatial Index */ + ret = sqlite3_exec (handle, "VACUUM", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VACUUM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -24; + } + +/* checking the Spatial Index on table "B" */ + sql = sqlite3_mprintf ("SELECT CheckSpatialIndex(%Q, %Q)", table_b, geom); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CheckSpatialIndex TABLE-B error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -25; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, + "Unexpected rows/columns (check RTree TABLE-B): r=%d c=%d\n", + rows, columns); + return -26; + } + value = results[1]; + if (strcmp ("0", value) != 0) + { + fprintf (stderr, "Unexpected result (check RTree TABLE-B): %s\n", + results[1]); + return -27; + } + sqlite3_free_table (results); + +/* checking the Spatial Index all table */ + ret = + sqlite3_get_table (handle, "SELECT CheckSpatialIndex()", &results, + &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CheckSpatialIndex ALL error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -28; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, + "Unexpected rows/columns (check RTree ALL): r=%d c=%d\n", + rows, columns); + return -29; + } + value = results[1]; + if (strcmp ("0", value) != 0) + { + fprintf (stderr, "Unexpected result (check RTree ALL): %s\n", + results[1]); + return -30; + } + sqlite3_free_table (results); + +/* recovering the Spatial Index all table */ + ret = + sqlite3_get_table (handle, "SELECT RecoverSpatialIndex()", &results, + &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverSpatialIndex ALL error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -34; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, + "Unexpected rows/columns (recover RTree ALL): r=%d c=%d\n", + rows, columns); + return -35; + } + value = results[1]; + if (strcmp ("1", value) != 0) + { + fprintf (stderr, "Unexpected result (recover RTree ALL): %s\n", + results[1]); + return -36; + } + sqlite3_free_table (results); + +/* recovering the Spatial Index on table "B" */ + sql = sqlite3_mprintf ("SELECT RecoverSpatialIndex(%Q, %Q)", table_b, geom); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverSpatialIndex TABLE-B error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -37; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, + "Unexpected rows/columns (recover RTree TABLE-B): r=%d c=%d\n", + rows, columns); + return -38; + } + value = results[1]; + if (strcmp ("1", value) != 0) + { + fprintf (stderr, "Unexpected result (recover RTree TABLE-B): %s\n", + results[1]); + return -39; + } + sqlite3_free_table (results); + +/* updating layer statistics for table "B" */ + sql = + sqlite3_mprintf ("SELECT UpdateLayerStatistics(%Q, %Q)", table_b, geom); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UpdateLayerStatistics TABLE-B error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -40; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, + "Unexpected rows/columns (statistics TABLE-B): r=%d c=%d\n", + rows, columns); + return -41; + } + value = results[1]; + if (strcmp ("1", value) != 0) + { + fprintf (stderr, "Unexpected result (statistics TABLE-B): %s\n", + results[1]); + return -42; + } + sqlite3_free_table (results); + +/* retieving the LayerExtent for table "B" */ + sql = + sqlite3_mprintf ("SELECT ST_AsText(GetLayerExtent(%Q, %Q))", table_b, + geom); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "GetLayerExtent TABLE-B error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -140; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, + "Unexpected rows/columns (GetLayerExtent TABLE-B): r=%d c=%d\n", + rows, columns); + return -141; + } + value = results[1]; + if (strcmp ("POLYGON((-3 -30, 5 -30, 5 50, -3 50, -3 -30))", value) != 0) + { + fprintf (stderr, "Unexpected result (GetLayerExtent TABLE-B): %s\n", + results[1]); + return -142; + } + sqlite3_free_table (results); + +/* updating layer statistics ALL */ + ret = + sqlite3_get_table (handle, "SELECT UpdateLayerStatistics()", &results, + &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UpdateLayerStatistics ALL error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -43; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, + "Unexpected rows/columns (statistics ALL): r=%d c=%d\n", + rows, columns); + return -44; + } + value = results[1]; + if (strcmp ("1", value) != 0) + { + fprintf (stderr, "Unexpected result (statistics ALL): %s\n", + results[1]); + return -45; + } + sqlite3_free_table (results); + +/* disabling the Spatial Index on table "B" */ + sql = sqlite3_mprintf ("SELECT DisableSpatialIndex(%Q, %Q)", table_b, geom); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DisableSpatialIndex TABLE-B error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -46; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, + "Unexpected rows/columns (disable TABLE-B): r=%d c=%d\n", + rows, columns); + return -47; + } + value = results[1]; + if (strcmp ("1", value) != 0) + { + fprintf (stderr, "Unexpected result (disable TABLE-B): %s\n", + results[1]); + return -48; + } + sqlite3_free_table (results); + +/* creating an MbrCache on table "B" */ + sql = sqlite3_mprintf ("SELECT CreateMbrCache(%Q, %Q)", table_b, geom); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CreateMbrCache TABLE-B error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -49; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, + "Unexpected rows/columns (disable TABLE-B): r=%d c=%d\n", + rows, columns); + return -50; + } + value = results[1]; + if (strcmp ("1", value) != 0) + { + fprintf (stderr, "Unexpected result (disable TABLE-B): %s\n", + results[1]); + return -51; + } + sqlite3_free_table (results); + +/* checking the MbrCache on table "B" */ + sql = sqlite3_mprintf ("SELECT Count(*) FROM %s WHERE ROWID IN (" + "SELECT ROWID FROM cache_%s_%s WHERE " + "mbr = FilterMbrIntersects(0, 0, 11, 11))", table_b, + table_b, geom); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Test MbrCache error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -52; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, "Unexpected rows/columns (MbrCache): r=%d c=%d\n", + rows, columns); + return -53; + } + value = results[1]; + if (strcmp ("1", value) != 0) + { + fprintf (stderr, "Unexpected result (MbrCache): %s\n", results[1]); + return -54; + } + sqlite3_free_table (results); + +/* disabling the Spatial Index [MbrCache] on table "B" */ + sql = sqlite3_mprintf ("SELECT DisableSpatialIndex(%Q, %Q)", table_b, geom); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DisableSpatialIndex TABLE-B error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -55; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, + "Unexpected rows/columns (disable TABLE-B): r=%d c=%d\n", + rows, columns); + return -56; + } + value = results[1]; + if (strcmp ("1", value) != 0) + { + fprintf (stderr, "Unexpected result (disable TABLE-B): %s\n", + results[1]); + return -57; + } + sqlite3_free_table (results); + +/* discarding geometry from table "B" */ + sql = + sqlite3_mprintf ("SELECT DiscardGeometryColumn(%Q, %Q)", table_b, geom); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DiscardGeometryColumn TABLE-B error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -58; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, + "Unexpected rows/columns (discard TABLE-B): r=%d c=%d\n", + rows, columns); + return -59; + } + value = results[1]; + if (strcmp ("1", value) != 0) + { + fprintf (stderr, "Unexpected result (discard TABLE-B): %s\n", + results[1]); + return -60; + } + sqlite3_free_table (results); + +/* creating a topology */ + sql = + sqlite3_mprintf ("SELECT CreateTopologyTables(%Q, 4326, 'XY')", + topology); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CreateTopologyTables error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -61; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, + "Unexpected rows/columns (CreateTopologyTables): r=%d c=%d\n", + rows, columns); + return -62; + } + value = results[1]; + if (strcmp ("1", value) != 0) + { + fprintf (stderr, "Unexpected result (CreateTopologyTables): %s\n", + results[1]); + return -63; + } + sqlite3_free_table (results); + + sqlite3_free (table_a); + sqlite3_free (table_b); + sqlite3_free (pk); + sqlite3_free (name); + sqlite3_free (geom); + sqlite3_free (topology); + +/* inserting a CRS (very long auth) */ + auth = sqlite3_mprintf ("authority_%s", suffix); + sql = + sqlite3_mprintf + ("INSERT INTO spatial_ref_sys (srid, auth_name, auth_srid, " + "ref_sys_name, proj4text, srtext) VALUES (NULL, %Q, 1122, " + "'silly CRS', 'silly proj def', 'silly wkt def')", auth); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT CRS error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -64; + } + +/* checking for validity (SRID from Auth) */ + sql = sqlite3_mprintf ("SELECT SridFromAuthCrs(%Q, %d)", auth, 1122); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Test TABLE-A error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -65; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, + "Unexpected rows/columns (SRID from Auth): r=%d c=%d\n", + rows, columns); + return -66; + } + value = results[1]; + if (strcmp ("325834", value) != 0) + { + fprintf (stderr, "Unexpected result (SRID from Auth): %s\n", + results[1]); + return -67; + } + sqlite3_free_table (results); + +/* deleting the odd CRS */ + sql = "DELETE FROM spatial_ref_sys WHERE srid = 325834"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE (CRS) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -68; + } + + sqlite3_free (auth); + +#ifndef OMIT_PROJ /* only if PROJ is supported */ + +/* checking AsKML (1) */ + kml1 = sqlite3_mprintf ("kml_name_%s", suffix); + kml2 = sqlite3_mprintf ("kml_description_%s", suffix); + strcpy (frmt, "%s%s" + "%1.0f,%1.0f" + "0,0 " + "%1.0f,%1.0f"); + strcat (frmt, "" + "0,0 0,%1.0f %1.0f,%1.0f %1.0f,0 0,0" + "" + "5,5 5,%1.0f %1.0f,%1.0f " + "%1.0f,5 5,5" + ""); + resvalue = + sqlite3_mprintf (frmt, kml1, kml2, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); + sql = + sqlite3_mprintf + ("SELECT AsKml(%Q, %Q, GeomFromText('GEOMETRYCOLLECTION(" + "POINT(%1.0f %1.0f), LINESTRING(0 0, %1.0f %1.0f), " + "POLYGON((0 0, 0 %1.0f, %1.0f %1.0f, %1.0f 0, 0 0), " + "(5 5, 5 %1.0f, %1.0f %1.0f, %1.0f 5, 5 5)))'" ", 4326), 300)", kml1, + kml2, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Test AsKML#1 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -69; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, "Unexpected rows/columns (AsKML#1): r=%d c=%d\n", + rows, columns); + return -70; + } + value = results[1]; + if (strcmp (resvalue, value) != 0) + { + fprintf (stderr, "Unexpected result (AsKML#1): %s\n", results[1]); + return -71; + } + sqlite3_free_table (results); + sqlite3_free (kml1); + sqlite3_free (kml2); + sqlite3_free (resvalue); + +/* checking AsKML (2) */ + kml1 = sqlite3_mprintf ("%1.0f", 1e128); + kml2 = sqlite3_mprintf ("%2.0f", 2e128); + strcpy (frmt, "%s%s" + "%1.0f,%1.0f,%1.0f" + "0,0,0 " + "%1.0f,%1.0f,%1.0f"); + strcat (frmt, "" + "0,0,0 0,%1.0f,0 %1.0f,%1.0f,%1.0f %1.0f,0,0 0,0,0" + "" + "5,5,0 5,%1.0f,0 %1.0f,%1.0f,%1.0f " + "%1.0f,5,0 5,5,0" + ""); + resvalue = + sqlite3_mprintf (frmt, kml1, kml2, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128); + sql = + sqlite3_mprintf + ("SELECT AsKml(%Q, %Q, GeomFromText('GEOMETRYCOLLECTIONZ(" + "POINTZ(%1.0f %1.0f %1.0f), LINESTRINGZ(0 0 0, %1.0f %1.0f %1.0f), " + "POLYGONZ((0 0 0, 0 %1.0f 0, %1.0f %1.0f %1.0f, %1.0f 0 0, 0 0 0), " + "(5 5 0, 5 %1.0f 0, %1.0f %1.0f %1.0f, %1.0f 5 0, 5 5 0)))'" + ", 4326), 300)", kml1, kml2, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Test AsKML#2 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -72; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, "Unexpected rows/columns (AsKML#2): r=%d c=%d\n", + rows, columns); + return -73; + } + value = results[1]; + if (strcmp (resvalue, value) != 0) + { + fprintf (stderr, "Unexpected result (AsKML#2): %s\n", results[1]); + return -74; + } + sqlite3_free_table (results); + sqlite3_free (kml1); + sqlite3_free (kml2); + sqlite3_free (resvalue); + +#endif /* end including PROJ.4 */ + +/* checking AsGML (1) */ + strcpy (frmt, + "" + "%1.0f,%1.0f" + "" + "0,0 %1.0f,%1.0f" + ""); + strcat (frmt, + "" + "0,0 0,%1.0f %1.0f,%1.0f %1.0f,0 0,0" + "" + "5,5 5,%1.0f %1.0f,%1.0f %1.0f,5 5,5" + ""); + resvalue = + sqlite3_mprintf (frmt, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128); + sql = + sqlite3_mprintf ("SELECT AsGml(GeomFromText('GEOMETRYCOLLECTION(" + "POINT(%1.0f %1.0f), LINESTRING(0 0, %1.0f %1.0f), " + "POLYGON((0 0, 0 %1.0f, %1.0f %1.0f, %1.0f 0, 0 0), " + "(5 5, 5 %1.0f, %1.0f %1.0f, %1.0f 5, 5 5)))'" + ", 4326), 300)", 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Test AsGML#1 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -75; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, "Unexpected rows/columns (AsGML#1): r=%d c=%d\n", + rows, columns); + return -76; + } + value = results[1]; + if (strcmp (resvalue, value) != 0) + { + fprintf (stderr, "Unexpected result (AsGML#1): %s\n", results[1]); + return -77; + } + sqlite3_free_table (results); + sqlite3_free (resvalue); + +/* checking AsGML (2) */ + strcpy (frmt, + "" + "%1.0f %1.0f %1.0f" + "" + "0 0 0 " + "%1.0f %1.0f %1.0f" + ""); + strcat (frmt, + "" + "0 0 0 0 %1.0f 0 %1.0f %1.0f %1.0f %1.0f 0 0 0 0 0" + "" + "5 5 0 5 %1.0f 0 %1.0f %1.0f %1.0f " + "%1.0f 5 0 5 5 0" + ""); + resvalue = + sqlite3_mprintf (frmt, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128); + sql = + sqlite3_mprintf ("SELECT AsGml(3, GeomFromText('GEOMETRYCOLLECTIONZ(" + "POINTZ(%1.0f %1.0f %1.0f), LINESTRINGZ(0 0 0, %1.0f %1.0f %1.0f), " + "POLYGONZ((0 0 0, 0 %1.0f 0, %1.0f %1.0f %1.0f, %1.0f 0 0, 0 0 0), " + "(5 5 0, 5 %1.0f 0, %1.0f %1.0f %1.0f, %1.0f 5 0, 5 5 0)))'" + ", 4326), 300)", 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Test AsGML#2 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -78; + } + if (rows != 1 || columns != 1) + { + fprintf (stderr, "Unexpected rows/columns (AsGML#2): r=%d c=%d\n", + rows, columns); + return -79; + } + value = results[1]; + if (strcmp (resvalue, value) != 0) + { + fprintf (stderr, "Unexpected result (AsGML#2): %s\n", results[1]); + return -80; + } + sqlite3_free_table (results); + sqlite3_free (resvalue); + +/* checking WKT 2D */ + resvalue = sqlite3_mprintf ("GEOMETRYCOLLECTION(POINT(%1.0f %1.0f), " + "LINESTRING(0 0, %1.0f %1.0f), " + "POLYGON((0 0, %1.0f 0, %1.0f %1.0f, 0 %1.0f, 0 0), " + "(5 5, %1.0f 5, %1.0f %1.0f, 5 %1.0f, 5 5)))", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128); + sql = + sqlite3_mprintf ("SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(" + "POINT(%1.0f %1.0f), LINESTRING(0 0, %1.0f %1.0f), " + "POLYGON((0 0, %1.0f 0, %1.0f %1.0f, 0 %1.0f, 0 0), " + "(5 5, %1.0f 5, %1.0f %1.0f, 5 %1.0f, 5 5)))'))", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "WKT 2D: error \"%s\"\n", sqlite3_errmsg (handle)); + return -81; + } + string = NULL; + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) + { + value = (const char *) sqlite3_column_text (stmt, 0); + len = sqlite3_column_bytes (stmt, 0); + string = malloc (len + 1); + strcpy (string, value); + } + } + } + ret = sqlite3_finalize (stmt); + if (string == NULL) + { + fprintf (stderr, "Unexpected NULL result (WKT 2D)\n"); + return -82; + } + if (strcmp (resvalue, string) != 0) + { + fprintf (stderr, "Unexpected result (WKT 2D): %s\n", string); + return -83; + } + free (string); + sqlite3_free (resvalue); + +/* checking WKT 3D */ + resvalue = + sqlite3_mprintf ("GEOMETRYCOLLECTION Z(POINT Z(%1.0f %1.0f %1.0f), " + "LINESTRING Z(0 0 0, %1.0f %1.0f %1.0f), " + "POLYGON Z((0 0 0, %1.0f 0 0, %1.0f %1.0f %1.0f, 0 %1.0f 0, 0 0 0), " + "(5 5 0, %1.0f 5 0, %1.0f %1.0f %1.0f, 5 %1.0f 0, 5 5 0)))", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128); + sql = + sqlite3_mprintf ("SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(" + "POINTZ(%1.0f %1.0f %1.0f), LINESTRINGZ(0 0 0, %1.0f %1.0f %1.0f), " + "POLYGONZ((0 0 0, %1.0f 0 0, %1.0f %1.0f %1.0f, 0 %1.0f 0, 0 0 0), " + "(5 5 0, %1.0f 5 0, %1.0f %1.0f %1.0f, 5 %1.0f 0, 5 5 0)))'))", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "WKT 3D: error \"%s\"\n", sqlite3_errmsg (handle)); + return -84; + } + string = NULL; + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) + { + value = (const char *) sqlite3_column_text (stmt, 0); + len = sqlite3_column_bytes (stmt, 0); + string = malloc (len + 1); + strcpy (string, value); + } + } + } + ret = sqlite3_finalize (stmt); + if (string == NULL) + { + fprintf (stderr, "Unexpected NULL result (WKT 3D)\n"); + return -85; + } + if (strcmp (resvalue, string) != 0) + { + fprintf (stderr, "Unexpected result (WKT 3D): %s\n", string); + return -86; + } + free (string); + sqlite3_free (resvalue); + +/* checking WKT M */ + resvalue = + sqlite3_mprintf ("GEOMETRYCOLLECTION M(POINT M(%1.0f %1.0f %1.0f), " + "LINESTRING M(0 0 0, %1.0f %1.0f %1.0f), " + "POLYGON M((0 0 0, %1.0f 0 0, %1.0f %1.0f %1.0f, 0 %1.0f 0, 0 0 0), " + "(5 5 0, %1.0f 5 0, %1.0f %1.0f %1.0f, 5 %1.0f 0, 5 5 0)))", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128); + sql = + sqlite3_mprintf ("SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(" + "POINTM(%1.0f %1.0f %1.0f), LINESTRINGM(0 0 0, %1.0f %1.0f %1.0f), " + "POLYGONM((0 0 0, %1.0f 0 0, %1.0f %1.0f %1.0f, 0 %1.0f 0, 0 0 0), " + "(5 5 0, %1.0f 5 0, %1.0f %1.0f %1.0f, 5 %1.0f 0, 5 5 0)))'))", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "WKT M: error \"%s\"\n", sqlite3_errmsg (handle)); + return -87; + } + string = NULL; + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) + { + value = (const char *) sqlite3_column_text (stmt, 0); + len = sqlite3_column_bytes (stmt, 0); + string = malloc (len + 1); + strcpy (string, value); + } + } + } + ret = sqlite3_finalize (stmt); + if (string == NULL) + { + fprintf (stderr, "Unexpected NULL result (WKT M)\n"); + return -88; + } + if (strcmp (resvalue, string) != 0) + { + fprintf (stderr, "Unexpected result (WKT M): %s\n", string); + return -89; + } + free (string); + sqlite3_free (resvalue); + +/* checking WKT 3D M */ + resvalue = + sqlite3_mprintf + ("GEOMETRYCOLLECTION ZM(POINT ZM(%1.0f %1.0f %1.0f %1.0f), " + "LINESTRING ZM(0 0 0 0, %1.0f %1.0f %1.0f %1.0f), " + "POLYGON ZM((0 0 0 0, %1.0f 0 0 0, %1.0f %1.0f %1.0f %1.0f, 0 %1.0f 0 0, 0 0 0 0), " + "(5 5 0 0, %1.0f 5 0 0, %1.0f %1.0f %1.0f %1.0f, 5 %1.0f 0 0, 5 5 0 0)))", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); + sql = + sqlite3_mprintf ("SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(" + "POINTZM(%1.0f %1.0f %1.0f %1.0f), LINESTRINGZM(0 0 0 0, %1.0f %1.0f %1.0f %1.0f), " + "POLYGONZM((0 0 0 0, %1.0f 0 0 0, %1.0f %1.0f %1.0f %1.0f, 0 %1.0f 0 0, 0 0 0 0), " + "(5 5 0 0, %1.0f 5 0 0, %1.0f %1.0f %1.0f %1.0f, 5 %1.0f 0 0, 5 5 0 0)))'))", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "WKT 3D M: error \"%s\"\n", sqlite3_errmsg (handle)); + return -90; + } + string = NULL; + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) + { + value = (const char *) sqlite3_column_text (stmt, 0); + len = sqlite3_column_bytes (stmt, 0); + string = malloc (len + 1); + strcpy (string, value); + } + } + } + ret = sqlite3_finalize (stmt); + if (string == NULL) + { + fprintf (stderr, "Unexpected NULL result (WKT 3D M)\n"); + return -91; + } + if (strcmp (resvalue, string) != 0) + { + fprintf (stderr, "Unexpected result (WKT 3D M): %s\n", string); + return -92; + } + free (string); + sqlite3_free (resvalue); + +/* checking EWKT 2D */ + resvalue = + sqlite3_mprintf ("SRID=4326;GEOMETRYCOLLECTION(POINT(%1.0f %1.0f)," + "LINESTRING(0 0,%1.0f %1.0f)," + "POLYGON((0 0,%1.0f 0,%1.0f %1.0f,0 %1.0f,0 0)," + "(5 5,%1.0f 5,%1.0f %1.0f,5 %1.0f,5 5)))", 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128); + sql = + sqlite3_mprintf ("SELECT AsEWKT(GeomFromText('GEOMETRYCOLLECTION(" + "POINT(%1.0f %1.0f), LINESTRING(0 0, %1.0f %1.0f), " + "POLYGON((0 0, %1.0f 0, %1.0f %1.0f, 0 %1.0f, 0 0), " + "(5 5, %1.0f 5, %1.0f %1.0f, 5 %1.0f, 5 5)))', 4326))", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "EWKT 2D: error \"%s\"\n", sqlite3_errmsg (handle)); + return -93; + } + string = NULL; + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) + { + value = (const char *) sqlite3_column_text (stmt, 0); + len = sqlite3_column_bytes (stmt, 0); + string = malloc (len + 1); + strcpy (string, value); + } + } + } + ret = sqlite3_finalize (stmt); + if (string == NULL) + { + fprintf (stderr, "Unexpected NULL result (EWKT 2D)\n"); + return -94; + } + if (strcmp (resvalue, string) != 0) + { + fprintf (stderr, "Unexpected result (EWKT 2D): %s\n", string); + return -95; + } + free (string); + sqlite3_free (resvalue); + +/* checking EWKT 3D */ + resvalue = + sqlite3_mprintf + ("SRID=4326;GEOMETRYCOLLECTION(POINT(%1.0f %1.0f %1.0f)," + "LINESTRING(0 0 0,%1.0f %1.0f %1.0f)," + "POLYGON((0 0 0,%1.0f 0 0,%1.0f %1.0f %1.0f,0 %1.0f 0,0 0 0)," + "(5 5 0,%1.0f 5 0,%1.0f %1.0f %1.0f,5 %1.0f 0,5 5 0)))", 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128); + sql = + sqlite3_mprintf ("SELECT AsEWKT(GeomFromText('GEOMETRYCOLLECTIONZ(" + "POINTZ(%1.0f %1.0f %1.0f), LINESTRINGZ(0 0 0, %1.0f %1.0f %1.0f), " + "POLYGONZ((0 0 0, %1.0f 0 0, %1.0f %1.0f %1.0f, 0 %1.0f 0, 0 0 0), " + "(5 5 0, %1.0f 5 0, %1.0f %1.0f %1.0f, 5 %1.0f 0, 5 5 0)))', 4326))", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "EWKT 3D: error \"%s\"\n", sqlite3_errmsg (handle)); + return -96; + } + string = NULL; + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) + { + value = (const char *) sqlite3_column_text (stmt, 0); + len = sqlite3_column_bytes (stmt, 0); + string = malloc (len + 1); + strcpy (string, value); + } + } + } + ret = sqlite3_finalize (stmt); + if (string == NULL) + { + fprintf (stderr, "Unexpected NULL result (EWKT 3D)\n"); + return -97; + } + if (strcmp (resvalue, string) != 0) + { + fprintf (stderr, "Unexpected result (EWKT 3D): %s\n", string); + return -98; + } + free (string); + sqlite3_free (resvalue); + +/* checking EWKT M */ + resvalue = + sqlite3_mprintf + ("SRID=4326;GEOMETRYCOLLECTIONM(POINTM(%1.0f %1.0f %1.0f)," + "LINESTRINGM(0 0 0,%1.0f %1.0f %1.0f)," + "POLYGONM((0 0 0,%1.0f 0 0,%1.0f %1.0f %1.0f,0 %1.0f 0,0 0 0)," + "(5 5 0,%1.0f 5 0,%1.0f %1.0f %1.0f,5 %1.0f 0,5 5 0)))", 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128); + sql = + sqlite3_mprintf ("SELECT AsEWKT(GeomFromText('GEOMETRYCOLLECTIONM(" + "POINTM(%1.0f %1.0f %1.0f), LINESTRINGM(0 0 0, %1.0f %1.0f %1.0f), " + "POLYGONM((0 0 0, %1.0f 0 0, %1.0f %1.0f %1.0f, 0 %1.0f 0, 0 0 0), " + "(5 5 0, %1.0f 5 0, %1.0f %1.0f %1.0f, 5 %1.0f 0, 5 5 0)))', 4326))", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "EWKT M: error \"%s\"\n", sqlite3_errmsg (handle)); + return -99; + } + string = NULL; + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) + { + value = (const char *) sqlite3_column_text (stmt, 0); + len = sqlite3_column_bytes (stmt, 0); + string = malloc (len + 1); + strcpy (string, value); + } + } + } + ret = sqlite3_finalize (stmt); + if (string == NULL) + { + fprintf (stderr, "Unexpected NULL result (EWKT M)\n"); + return -100; + } + if (strcmp (resvalue, string) != 0) + { + fprintf (stderr, "Unexpected result (EWKT M): %s\n", string); + return -101; + } + free (string); + sqlite3_free (resvalue); + +/* checking EWKT 3D M */ + resvalue = + sqlite3_mprintf + ("SRID=4326;GEOMETRYCOLLECTION(POINT(%1.0f %1.0f %1.0f %1.0f)," + "LINESTRING(0 0 0 0,%1.0f %1.0f %1.0f %1.0f)," + "POLYGON((0 0 0 0,%1.0f 0 0 0,%1.0f %1.0f %1.0f %1.0f,0 %1.0f 0 0,0 0 0 0)," + "(5 5 0 0,%1.0f 5 0 0,%1.0f %1.0f %1.0f %1.0f,5 %1.0f 0 0,5 5 0 0)))", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); + sql = + sqlite3_mprintf ("SELECT AsEWKT(GeomFromText('GEOMETRYCOLLECTIONZM(" + "POINTZM(%1.0f %1.0f %1.0f %1.0f), LINESTRINGZM(0 0 0 0, %1.0f %1.0f %1.0f %1.0f), " + "POLYGONZM((0 0 0 0, %1.0f 0 0 0, %1.0f %1.0f %1.0f %1.0f, 0 %1.0f 0 0, 0 0 0 0), " + "(5 5 0 0, %1.0f 5 0 0, %1.0f %1.0f %1.0f %1.0f, 5 %1.0f 0 0, 5 5 0 0)))', 4326))", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "EWKT 3D M: error \"%s\"\n", + sqlite3_errmsg (handle)); + return -102; + } + string = NULL; + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) + { + value = (const char *) sqlite3_column_text (stmt, 0); + len = sqlite3_column_bytes (stmt, 0); + string = malloc (len + 1); + strcpy (string, value); + } + } + } + ret = sqlite3_finalize (stmt); + if (string == NULL) + { + fprintf (stderr, "Unexpected NULL result (EWKT 3D M)\n"); + return -103; + } + if (strcmp (resvalue, string) != 0) + { + fprintf (stderr, "Unexpected result (EWKT 3D M): %s\n", string); + return -104; + } + free (string); + sqlite3_free (resvalue); + +/* checking WKT Strict */ + resvalue = sqlite3_mprintf ("GEOMETRYCOLLECTION(POINT(%1.0f %1.0f)," + "LINESTRING(0 0,%1.0f %1.0f)," + "POLYGON((0 0,%1.0f 0,%1.0f %1.0f,0 %1.0f,0 0)," + "(5 5,%1.0f 5,%1.0f %1.0f,5 %1.0f,5 5)))", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128); + sql = + sqlite3_mprintf ("SELECT AsWKT(GeomFromText('GEOMETRYCOLLECTIONZM(" + "POINTZM(%1.0f %1.0f %1.0f %1.0f), LINESTRINGZM(0 0 0 0, %1.0f %1.0f %1.0f %1.0f), " + "POLYGONZM((0 0 0 0, %1.0f 0 0 0, %1.0f %1.0f %1.0f %1.0f, 0 %1.0f 0 0, 0 0 0 0), " + "(5 5 0 0, %1.0f 5 0 0, %1.0f %1.0f %1.0f %1.0f, 5 %1.0f 0 0, 5 5 0 0)))', 4326))", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "WKT Strict: error \"%s\"\n", + sqlite3_errmsg (handle)); + return -105; + } + string = NULL; + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) + { + value = (const char *) sqlite3_column_text (stmt, 0); + len = sqlite3_column_bytes (stmt, 0); + string = malloc (len + 1); + strcpy (string, value); + } + } + } + ret = sqlite3_finalize (stmt); + if (string == NULL) + { + fprintf (stderr, "Unexpected NULL result (WKT Strict)\n"); + return -106; + } + if (strcmp (resvalue, string) != 0) + { + fprintf (stderr, "Unexpected result (WKT Strict): %s\n", string); + return -107; + } + free (string); + sqlite3_free (resvalue); + +/* checking GeoJSON 2D */ + resvalue = + sqlite3_mprintf + ("{\"type\":\"GeometryCollection\",\"crs\":{\"type\":\"name\",\"properties\":" + "{\"name\":\"urn:ogc:def:crs:EPSG:4326\"}},\"bbox\":[0,0,%1.0f,%1.0f]," + "\"geometries\":[{\"type\":\"Point\",\"coordinates\":[%1.0f,%1.0f]}," + "{\"type\":\"LineString\",\"coordinates\":[[0,0],[%1.0f,%1.0f]]}," + "{\"type\":\"Polygon\",\"coordinates\":" + "[[[0,0],[%1.0f,0],[%1.0f,%1.0f],[0,%1.0f],[0,0]]," + "[[5,5],[%1.0f,5],[%1.0f,%1.0f],[5,%1.0f],[5,5]]]}]}", 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128); + sql = + sqlite3_mprintf ("SELECT AsGeoJSON(GeomFromText('GEOMETRYCOLLECTION(" + "POINT(%1.0f %1.0f), LINESTRING(0 0, %1.0f %1.0f), " + "POLYGON((0 0, %1.0f 0, %1.0f %1.0f, 0 %1.0f, 0 0), " + "(5 5, %1.0f 5, %1.0f %1.0f, 5 %1.0f, 5 5)))', 4326), 2, 5)", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "GeoJSON 2D: error \"%s\"\n", + sqlite3_errmsg (handle)); + return -108; + } + string = NULL; + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) + { + value = (const char *) sqlite3_column_text (stmt, 0); + len = sqlite3_column_bytes (stmt, 0); + string = malloc (len + 1); + strcpy (string, value); + } + } + } + ret = sqlite3_finalize (stmt); + if (string == NULL) + { + fprintf (stderr, "Unexpected NULL result (GeoJSON 2D)\n"); + return -109; + } + if (strcmp (resvalue, string) != 0) + { + fprintf (stderr, "Unexpected result (GeoJSON 2D): %s\n", string); + return -110; + } + free (string); + sqlite3_free (resvalue); + +/* checking GeoJSON 3D */ + resvalue = + sqlite3_mprintf + ("{\"type\":\"GeometryCollection\",\"crs\":{\"type\":\"name\",\"properties\":" + "{\"name\":\"urn:ogc:def:crs:EPSG:4326\"}},\"bbox\":[0,0,%1.0f,%1.0f]," + "\"geometries\":[{\"type\":\"Point\",\"coordinates\":[%1.0f,%1.0f,%1.0f]}," + "{\"type\":\"LineString\",\"coordinates\":[[0,0,0],[%1.0f,%1.0f,%1.0f]]}," + "{\"type\":\"Polygon\",\"coordinates\":" + "[[[0,0,0],[%1.0f,0,0],[%1.0f,%1.0f,%1.0f],[0,%1.0f,0],[0,0,0]]," + "[[5,5,0],[%1.0f,5,0],[%1.0f,%1.0f,%1.0f],[5,%1.0f,0],[5,5,0]]]}]}", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128); + sql = + sqlite3_mprintf ("SELECT AsGeoJSON(GeomFromText('GEOMETRYCOLLECTIONZ(" + "POINTZ(%1.0f %1.0f %1.0f), LINESTRINGZ(0 0 0, %1.0f %1.0f %1.0f), " + "POLYGONZ((0 0 0, %1.0f 0 0, %1.0f %1.0f %1.0f, 0 %1.0f 0, 0 0 0), " + "(5 5 0, %1.0f 5 0, %1.0f %1.0f %1.0f, 5 %1.0f 0, 5 5 0)))', 4326), 2, 5)", + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, 1e128, + 1e128); + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "GeoJSON 3D: error \"%s\"\n", + sqlite3_errmsg (handle)); + return -111; + } + string = NULL; + while (1) + { + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; + if (ret == SQLITE_ROW) + { + if (sqlite3_column_type (stmt, 0) == SQLITE_TEXT) + { + value = (const char *) sqlite3_column_text (stmt, 0); + len = sqlite3_column_bytes (stmt, 0); + string = malloc (len + 1); + strcpy (string, value); + } + } + } + ret = sqlite3_finalize (stmt); + if (string == NULL) + { + fprintf (stderr, "Unexpected NULL result (GeoJSON 3D)\n"); + return -112; + } + if (strcmp (resvalue, string) != 0) + { + fprintf (stderr, "Unexpected result (GeoJSON 3D): %s\n", string); + return -113; + } + free (string); + sqlite3_free (resvalue); + +/* checking gaiaDequotedSql */ + resvalue = gaiaDequotedSql ("'a''b''c''d''e''f''ghiklmnopqrst''u''vwy''z'"); + if (strcmp (resvalue, "a'b'c'd'e'f'ghiklmnopqrst'u'vwy'z") != 0) + { + fprintf (stderr, "Unexpected result (Dequote 1): %s\n", resvalue); + return -114; + } + free (resvalue); + + resvalue = gaiaDequotedSql ("\"abcdef\"\"ghijkmlmnopqsrt\"\"uvwy\"\"z\""); + if (strcmp (resvalue, "abcdef\"ghijkmlmnopqsrt\"uvwy\"z") != 0) + { + fprintf (stderr, "Unexpected result (Dequote 2): %s\n", resvalue); + return -115; + } + free (resvalue); + + resvalue = gaiaDequotedSql ("abcdefghijkmlnopqrtsuvwyz"); + if (strcmp (resvalue, "abcdefghijkmlnopqrtsuvwyz") != 0) + { + fprintf (stderr, "Unexpected result (Dequote 3): %s\n", resvalue); + return -116; + } + free (resvalue); + + resvalue = gaiaDequotedSql ("'a''b''c''d''e''f''ghiklmnopqrst''u'vwy''z'"); + if (resvalue != NULL) + { + fprintf (stderr, "Unexpected result (Dequote 4): %s\n", resvalue); + return -117; + } + +/* checking load_shapefile */ + ret = load_shapefile (handle, "./shp/gaza/route", shape, "UTF-8", 4326, + NULL, 1, 0, 1, 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "load_shapefile() error: %s\n", err_msg); + sqlite3_close (handle); + return -118; + } + if (row_count != 2) + { + fprintf (stderr, "unexpected row count for load_shapefile: %i\n", + row_count); + sqlite3_close (handle); + return -119; + } +/* checking dump_shapefile */ + ret = + dump_shapefile (handle, shape, "Geometry", dumpname, "UTF-8", "", 1, + &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error: %s\n", err_msg); + sqlite3_close (handle); + return -120; + } + cleanup_shapefile (dumpname); + if (row_count != 2) + { + fprintf (stderr, "unexpected dump row count for shapefile: %i\n", + row_count); + sqlite3_close (handle); + return -121; + } + +#ifndef OMIT_PROJ /* including PROJ.4 */ +/* checking dump_kml */ + ret = + dump_kml (handle, shape, "geometry", dumpname, "sub_type", "name", 10); + if (!ret) + { + fprintf (stderr, "dump_kml() error: %s\n", err_msg); + sqlite3_close (handle); + return -122; + } + unlink (dumpname); +#endif /* end including PROJ.4 */ + +/* checking dump_geojson */ + ret = dump_geojson (handle, shape, "col1", dumpname, 10, 5); + if (!ret) + { + fprintf (stderr, "dump_geojson() error: %s\n", err_msg); + sqlite3_close (handle); + return -123; + } + unlink (dumpname); +/* dropping virtual geometry */ + sql = sqlite3_mprintf ("SELECT DropVirtualGeometry(%Q)", shape); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "DROP VIRTUAL GEOMETRT /shp/gaza/barrier error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -124; + } + sqlite3_free (shape); + +/* checking load_dbf */ + ret = + load_dbf (handle, "./shapetest1.dbf", dbf, "UTF-8", 1, &row_count, + err_msg); + if (!ret) + { + fprintf (stderr, "load_dbf() error: %s\n", err_msg); + sqlite3_close (handle); + return -125; + } + if (row_count != 2) + { + fprintf (stderr, "unexpected row count for load_dbf: %i\n", + row_count); + sqlite3_close (handle); + return -126; + } +/* checking dump_dbf */ + ret = dump_dbf (handle, dbf, dumpname, "CP1252", err_msg); + if (!ret) + { + fprintf (stderr, "dump_dbf() error for points: %s\n", err_msg); + sqlite3_close (handle); + return -127; + } + unlink (dumpname); + sqlite3_free (dbf); + +/* checking load_shapefile (2) */ + ret = + load_shapefile (handle, "./shp/merano-3d/polygons", shape2, "CP1252", + 25832, shape2geom, 0, 1, 1, 0, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "load_shapefile() #2 error: %s\n", err_msg); + sqlite3_close (handle); + return -128; + } + if (row_count != 10) + { + fprintf (stderr, "unexpected row count for load_shapefile #2: %i\n", + row_count); + sqlite3_close (handle); + return -129; + } + xtable = gaiaDoubleQuotedSql (shape2); + sql = sqlite3_mprintf ("INSERT INTO \"%s\" (FEATURE_ID, DATUM, HAUSNR) " + "VALUES (1250000, 0.1, 'alpha')", xtable); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT polygons (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -130; + } + sql = sqlite3_mprintf ("INSERT INTO \"%s\" (FEATURE_ID, DATUM, HAUSNR) " + "VALUES (1250000, 0.1, 'alpha')", xtable); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT polygons (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -131; + } + sql = sqlite3_mprintf ("INSERT INTO \"%s\" (FEATURE_ID, DATUM, TEXT_I) " + "VALUES (1250000, 0.1, 'alpha')", xtable); + free (xtable); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT polygons (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -132; + } + + remove_duplicated_rows (handle, shape2); + elementary_geometries (handle, shape2, shape2geom, "elem_poly", "pk_elem", + "mul_id"); + sqlite3_free (shape2); + sqlite3_free (shape2geom); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -133; + } + + spatialite_cleanup_ex (cache); + free (suffix); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_create.c b/src/spatialite/test/check_create.c new file mode 100644 index 0000000..602eca5 --- /dev/null +++ b/src/spatialite/test/check_create.c @@ -0,0 +1,283 @@ +/* + + check_create.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" +#include "spatialite/gaiaaux.h" + +static int +checkCache (void) +{ + int i; + int max = 1024; + void *cache[1024]; + char msg[64]; + const char *m; + + for (i = 0; i < max; i++) + { + cache[i] = spatialite_alloc_connection (); + } + + for (i = 0; i < max; i++) + { + if (cache[i] != NULL) + { + sprintf (msg, "Err%d", i); + gaiaSetGeosErrorMsg_r (cache[i], msg); + sprintf (msg, "Warn%d", i); + gaiaSetGeosWarningMsg_r (cache[i], msg); + sprintf (msg, "Aux%d", i); + gaiaSetGeosAuxErrorMsg_r (cache[i], msg); + } + } + + for (i = 0; i < max; i++) + { + if (cache[i] != NULL) + { + sprintf (msg, "Err%d", i); + m = gaiaGetGeosErrorMsg_r (cache[i]); + if (m == NULL) + { + fprintf (stderr, "unexpected NULL: GeosErrorMsg %d\n", i); + return -200 + i; + } + if (strcmp (m, msg) != 0) + { + fprintf (stderr, "unexpected GeosErrorMsg %d \"%s\"\n", i, + m); + return -300 + i; + } + sprintf (msg, "Warn%d", i); + m = gaiaGetGeosWarningMsg_r (cache[i]); + if (m == NULL) + { + fprintf (stderr, "unexpected NULL: GeosWarningMsg %d\n", + i); + return -400 + i; + } + if (strcmp (m, msg) != 0) + { + fprintf (stderr, + "unexpected GeosWarningErrorMsg %d \"%s\"\n", i, + m); + return -500 + i; + } + sprintf (msg, "Aux%d", i); + m = gaiaGetGeosAuxErrorMsg_r (cache[i]); + if (m == NULL) + { + fprintf (stderr, "unexpected NULL: GeosAuxErrorMsg %d\n", + i); + return -600 + i; + } + if (strcmp (m, msg) != 0) + { + fprintf (stderr, "unexpected GeosAuxErrorMsg %d \"%s\"\n", + i, m); + return -700 + i; + } + } + } + + for (i = 0; i < max; i++) + { + if (cache[i] != NULL) + spatialite_cleanup_ex (cache[i]); + } + return 0; +} + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + sqlite3_int64 log_pk; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + ret = sqlite3_exec (handle, "SELECT HasProj()", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "HasProj() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -3; + } + ret = sqlite3_exec (handle, "SELECT HasGeos()", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "HasGeos() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -4; + } + ret = + sqlite3_exec (handle, "SELECT HasGeosAdvanced()", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "HasGeosAdvanced() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -5; + } + ret = sqlite3_exec (handle, "SELECT HasIconv()", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "HasIconv() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -6; + } + ret = sqlite3_exec (handle, "SELECT HasMathSql()", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "HasMathSql() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -7; + } + ret = + sqlite3_exec (handle, "SELECT HasGeoCallbacks()", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "HasGeoCallbacks() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -8; + } + ret = sqlite3_exec (handle, "SELECT HasFreeXL()", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "HasFreeXL() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -9; + } + ret = sqlite3_exec (handle, "SELECT HasEpsg()", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "HasEpsg() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -10; + } + ret = sqlite3_exec (handle, "SELECT HasGeosTrunk()", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "HasGeoTrunk() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -11; + } + ret = sqlite3_exec (handle, "SELECT HasLwGeom()", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "HasLwGeom() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -12; + } + ret = sqlite3_exec (handle, "SELECT HasLibXml2()", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "HasLibXml2() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -13; + } + + gaiaInsertIntoSqlLog (handle, "test", "sql_statement_ok", &log_pk); + gaiaUpdateSqlLog (handle, log_pk, 1, NULL); + gaiaInsertIntoSqlLog (handle, "test", "sql_statement_no", &log_pk); + gaiaUpdateSqlLog (handle, log_pk, 0, "some error message"); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -11; + } + + spatialite_cleanup_ex (cache); + + ret = checkCache (); + if (ret != 0) + return ret; + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_createBaseTables.c b/src/spatialite/test/check_createBaseTables.c new file mode 100644 index 0000000..6dc3615 --- /dev/null +++ b/src/spatialite/test/check_createBaseTables.c @@ -0,0 +1,173 @@ +/* + + check_createBaseTables.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + sqlite3_stmt *stmt; + void *cache = spatialite_alloc_connection (); + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_createBaseTables.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + ret = + sqlite3_exec (db_handle, "SELECT InitSpatialMetadata(1, 'WGS84')", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Unexpected InitSpatialMetadata result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -2; + } + + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -100; + } + + /* check application ID is OK */ + ret = + sqlite3_prepare_v2 (db_handle, "PRAGMA application_id", + strlen ("PRAGMA application_id"), &stmt, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "failed to prepare SQL PRAGMA statement: %i (%s)\n", + ret, sqlite3_errmsg (db_handle)); + return -101; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_ROW) + { + fprintf (stderr, "unexpected return value for first step: %i (%s)\n", + ret, sqlite3_errmsg (db_handle)); + return -31; + } + if (sqlite3_column_type (stmt, 0) != SQLITE_INTEGER) + { + fprintf (stderr, "bad type for column 0: %i\n", + sqlite3_column_type (stmt, 0)); + return -32; + } + if (sqlite3_column_int (stmt, 0) != 0x47503130) + { + fprintf (stderr, "wrong application_id: %i\n", + sqlite3_column_int (stmt, 0)); + return -33; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_DONE) + { + fprintf (stderr, "unexpected return value for second step: %i\n", + ret); + return -36; + } + ret = sqlite3_finalize (stmt); + + /* check creation when the tables already exist */ + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Unexpected duplicate gpkgCreateBaseTables() result: %i, (%s)\n", + ret, err_msg); + return -110; + } + if (strcmp ("table gpkg_spatial_ref_sys already exists", err_msg) != 0) + { + fprintf (stderr, + "Unexpected duplicate gpkgCreateBaseTables() error message: %s\n", + err_msg); + return -111; + } + + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_dbf_load.c b/src/spatialite/test/check_dbf_load.c new file mode 100644 index 0000000..569dd07 --- /dev/null +++ b/src/spatialite/test/check_dbf_load.c @@ -0,0 +1,121 @@ +/* + + check_dbf_load.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + int row_count; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory databse: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + ret = + load_dbf (handle, "./shapetest1.dbf", "test1", "UTF-8", 1, &row_count, + err_msg); + if (!ret) + { + fprintf (stderr, "load_dbf() error: %s\n", err_msg); + sqlite3_close (handle); + return -3; + } + if (row_count != 2) + { + fprintf (stderr, "unexpected row count for load_dbf: %i\n", + row_count); + sqlite3_close (handle); + return -4; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -5; + } + + spatialite_cleanup_ex (cache); + +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_dxf.c b/src/spatialite/test/check_dxf.c new file mode 100644 index 0000000..468507c --- /dev/null +++ b/src/spatialite/test/check_dxf.c @@ -0,0 +1,1449 @@ +/* + + check_dxf.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" +#include "spatialite/gg_dxf.h" + +#ifndef OMIT_GEOS /* only if GEOS is enabled */ + +static int +check_22_auto (int cache_mode) +{ +/* testing 22.dxf - pass #1 autoDims */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + gaiaDxfParserPtr dxf; + void *cache; + if (cache_mode) + cache = spatialite_alloc_connection (); + else + spatialite_init (0); + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + if (cache_mode) + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + dxf = + gaiaCreateDxfParser (-2, GAIA_DXF_AUTO_2D_3D, NULL, NULL, + GAIA_DXF_RING_NONE); + if (dxf == NULL) + { + fprintf (stderr, + "CREATE DXF PARSER: unexpected NULL \"22.dx\" auto)\n"); + return -3; + } + + if (cache_mode) + ret = gaiaParseDxfFile_r (cache, dxf, "./22.dxf"); + else + ret = gaiaParseDxfFile (dxf, "./22.dxf"); + if (ret == 0) + { + fprintf (stderr, "Unable to parse \"22.dxf\" byLayers auto\n"); + return -4; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"22.dxf\" auto byLayer\n"); + return -5; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"22.dxf\" auto append byLayer\n"); + return -6; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"22.dxf\" auto mixed\n"); + return -7; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"22.dxf\" auto append mixed\n"); + return -8; + } + gaiaDestroyDxfParser (dxf); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -9; + } + + if (cache_mode) + spatialite_cleanup_ex (cache); + else + spatialite_cleanup (); + return 0; +} + +static int +check_22_2d (int cache_mode) +{ +/* testing 22.dxf - pass #2 force 2D */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + gaiaDxfParserPtr dxf; + void *cache; + if (cache_mode) + cache = spatialite_alloc_connection (); + else + spatialite_init (0); + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + if (cache_mode) + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + dxf = + gaiaCreateDxfParser (3003, GAIA_DXF_FORCE_2D, "abdc_", NULL, + GAIA_DXF_RING_NONE); + if (dxf == NULL) + { + fprintf (stderr, + "CREATE DXF PARSER: unexpected NULL \"22.dx\" 2D)\n"); + return -3; + } + + if (cache_mode) + ret = gaiaParseDxfFile_r (cache, dxf, "./22.dxf"); + else + ret = gaiaParseDxfFile (dxf, "./22.dxf"); + if (ret == 0) + { + fprintf (stderr, "Unable to parse \"22.dxf\" byLayers 2D\n"); + return -4; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"22.dxf\" 2D byLayer\n"); + return -5; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"22.dxf\" 2D append byLayer\n"); + return -6; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"22.dxf\" 2D mixed\n"); + return -7; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"22.dxf\" 2D append mixed\n"); + return -8; + } + gaiaDestroyDxfParser (dxf); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -9; + } + + if (cache_mode) + spatialite_cleanup_ex (cache); + else + spatialite_cleanup (); + return 0; +} + +static int +check_22_3d (int cache_mode) +{ +/* testing 22.dxf - pass #3 force 3D */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + gaiaDxfParserPtr dxf; + void *cache; + if (cache_mode) + cache = spatialite_alloc_connection (); + else + spatialite_init (0); + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + if (cache_mode) + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + dxf = + gaiaCreateDxfParser (3003, GAIA_DXF_FORCE_3D, "abdc_", NULL, + GAIA_DXF_RING_NONE); + if (dxf == NULL) + { + fprintf (stderr, + "CREATE DXF PARSER: unexpected NULL \"22.dx\" 3D)\n"); + return -3; + } + + if (cache_mode) + ret = gaiaParseDxfFile_r (cache, dxf, "./22.dxf"); + else + ret = gaiaParseDxfFile (dxf, "./22.dxf"); + if (ret == 0) + { + fprintf (stderr, "Unable to parse \"22.dxf\" byLayers 3D\n"); + return -4; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"22.dxf\" 3D byLayer\n"); + return -5; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"22.dxf\" 3D append byLayer\n"); + return -6; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"22.dxf\" 3D mixed\n"); + return -7; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"22.dxf\" 3D append mixed\n"); + return -8; + } + gaiaDestroyDxfParser (dxf); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -9; + } + + if (cache_mode) + spatialite_cleanup_ex (cache); + else + spatialite_cleanup (); + return 0; +} + +static int +check_22_single (int cache_mode) +{ +/* testing 22.dxf - pass #4 single layer */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + gaiaDxfParserPtr dxf; + void *cache; + if (cache_mode) + cache = spatialite_alloc_connection (); + else + spatialite_init (0); + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + if (cache_mode) + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + dxf = + gaiaCreateDxfParser (-2, GAIA_DXF_AUTO_2D_3D, NULL, "VUOVIA", + GAIA_DXF_RING_NONE); + if (dxf == NULL) + { + fprintf (stderr, + "CREATE DXF PARSER: unexpected NULL \"22.dx\" single)\n"); + return -3; + } + + if (cache_mode) + ret = gaiaParseDxfFile_r (cache, dxf, "./22.dxf"); + else + ret = gaiaParseDxfFile (dxf, "./22.dxf"); + if (ret == 0) + { + fprintf (stderr, "Unable to parse \"22.dxf\" byLayers single\n"); + return -4; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"22.dxf\" single byLayer\n"); + return -5; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, + "Unable to load \"22.dxf\" single append byLayer\n"); + return -6; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"22.dxf\" single mixed\n"); + return -7; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"22.dxf\" single append mixed\n"); + return -8; + } + gaiaDestroyDxfParser (dxf); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -9; + } + + if (cache_mode) + spatialite_cleanup_ex (cache); + else + spatialite_cleanup (); + return 0; +} + +static int +check_merano (int cache_mode) +{ +/* testing f06.dxf / l02.dxf / p02.dxf [merano samples] */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + gaiaDxfParserPtr dxf; + void *cache; + if (cache_mode) + cache = spatialite_alloc_connection (); + else + spatialite_init (0); + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + if (cache_mode) + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + dxf = + gaiaCreateDxfParser (25832, GAIA_DXF_AUTO_2D_3D, NULL, NULL, + GAIA_DXF_RING_UNLINKED); + if (dxf == NULL) + { + fprintf (stderr, "CREATE DXF PARSER: unexpected NULL \"f06.dx\")\n"); + return -3; + } + + if (cache_mode) + ret = gaiaParseDxfFile_r (cache, dxf, "./f06.dxf"); + else + ret = gaiaParseDxfFile (dxf, "./f06.dxf"); + if (ret == 0) + { + fprintf (stderr, "Unable to parse \"f06.dxf\" byLayer\n"); + return -4; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"f06.dxf\" byLayer\n"); + return -5; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"f06.dxf\" append byLayer\n"); + return -6; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"f06.dxf\" mixed\n"); + return -7; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"f06.dxf\" append mixed\n"); + return -8; + } + gaiaDestroyDxfParser (dxf); + + dxf = + gaiaCreateDxfParser (25832, GAIA_DXF_AUTO_2D_3D, NULL, NULL, + GAIA_DXF_RING_NONE); + if (dxf == NULL) + { + fprintf (stderr, "CREATE DXF PARSER: unexpected NULL \"l02.dx\")\n"); + return -9; + } + + if (cache_mode) + ret = gaiaParseDxfFile_r (cache, dxf, "./l02.dxf"); + else + ret = gaiaParseDxfFile (dxf, "./l02.dxf"); + if (ret == 0) + { + fprintf (stderr, "Unable to parse \"l02.dxf\" byLayer\n"); + return -10; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"l02.dxf\" byLayer\n"); + return -11; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"l02.dxf\" append byLayer\n"); + return -12; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"l02.dxf\" append mixed\n"); + return -13; + } + gaiaDestroyDxfParser (dxf); + + dxf = + gaiaCreateDxfParser (25832, GAIA_DXF_AUTO_2D_3D, NULL, NULL, + GAIA_DXF_RING_UNLINKED); + if (dxf == NULL) + { + fprintf (stderr, "CREATE DXF PARSER: unexpected NULL \"f06.dx\")\n"); + return -14; + } + + if (cache_mode) + ret = gaiaParseDxfFile_r (cache, dxf, "./p05.dxf"); + else + ret = gaiaParseDxfFile (dxf, "./p05.dxf"); + if (ret == 0) + { + fprintf (stderr, "Unable to parse \"p05.dxf\" byLayer\n"); + return -15; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"p05.dxf\" byLayer\n"); + return -16; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"p05.dxf\" append byLayer\n"); + return -17; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"p05.dxf\" mixed\n"); + return -18; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"p05.dxf\" append mixed\n"); + return -19; + } + gaiaDestroyDxfParser (dxf); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -20; + } + + if (cache_mode) + spatialite_cleanup_ex (cache); + else + spatialite_cleanup (); + return 0; +} + +static int +check_archaic (int cache_mode) +{ +/* testing archaic.dxf */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + gaiaDxfParserPtr dxf; + void *cache; + if (cache_mode) + cache = spatialite_alloc_connection (); + else + spatialite_init (0); + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + if (cache_mode) + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + dxf = + gaiaCreateDxfParser (3003, GAIA_DXF_AUTO_2D_3D, NULL, NULL, + GAIA_DXF_RING_NONE); + if (dxf == NULL) + { + fprintf (stderr, + "CREATE DXF PARSER: unexpected NULL \"archaic.dx\" auto)\n"); + return -3; + } + + if (cache_mode) + ret = gaiaParseDxfFile_r (cache, dxf, "./archaic.dxf"); + else + ret = gaiaParseDxfFile (dxf, "./archaic.dxf"); + if (ret == 0) + { + fprintf (stderr, "Unable to parse \"archaic.dxf\" byLayers auto\n"); + return -4; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"archaic.dxf\" auto byLayer\n"); + return -5; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, + "Unable to load \"archaic.dxf\" auto append byLayer\n"); + return -6; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"archaic.dxf\" auto mixed\n"); + return -7; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, + "Unable to load \"archaic.dxf\" auto append mixed\n"); + return -8; + } + gaiaDestroyDxfParser (dxf); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -9; + } + + if (cache_mode) + spatialite_cleanup_ex (cache); + else + spatialite_cleanup (); + return 0; +} + +static int +check_linked (int cache_mode) +{ +/* testing linked.dxf */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + gaiaDxfParserPtr dxf; + void *cache; + if (cache_mode) + cache = spatialite_alloc_connection (); + else + spatialite_init (0); + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + if (cache_mode) + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + dxf = + gaiaCreateDxfParser (3003, GAIA_DXF_AUTO_2D_3D, "lnk_", NULL, + GAIA_DXF_RING_LINKED); + if (dxf == NULL) + { + fprintf (stderr, + "CREATE DXF PARSER: unexpected NULL \"linked.dx\" auto)\n"); + return -3; + } + + if (cache_mode) + ret = gaiaParseDxfFile_r (cache, dxf, "./linked.dxf"); + else + ret = gaiaParseDxfFile (dxf, "./linked.dxf"); + if (ret == 0) + { + fprintf (stderr, "Unable to parse \"linked.dxf\" byLayers auto\n"); + return -4; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"linked.dxf\" auto byLayer\n"); + return -5; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, + "Unable to load \"linked.dxf\" auto append byLayer\n"); + return -6; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"linked.dxf\" auto mixed\n"); + return -7; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"linked.dxf\" auto append mixed\n"); + return -8; + } + gaiaDestroyDxfParser (dxf); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -9; + } + + if (cache_mode) + spatialite_cleanup_ex (cache); + else + spatialite_cleanup (); + return 0; +} + +static int +check_linked_legacy (int cache_mode) +{ +/* testing linked.dxf - legacy DB */ + int ret; + sqlite3 *handle; + gaiaDxfParserPtr dxf; + void *cache; + if (cache_mode) + cache = spatialite_alloc_connection (); + else + spatialite_init (0); + + ret = system ("cp test-legacy-3.0.1.sqlite copy-dxf-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy legacy v.3.0.1 database\n"); + return -1; + } + ret = + sqlite3_open_v2 ("copy-dxf-legacy-3.0.1.sqlite", &handle, + SQLITE_OPEN_READWRITE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open legacy v.3.0.1 database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -2; + } + + if (cache_mode) + spatialite_init_ex (handle, cache, 0); + + dxf = + gaiaCreateDxfParser (3003, GAIA_DXF_AUTO_2D_3D, "lnk_", NULL, + GAIA_DXF_RING_LINKED); + if (dxf == NULL) + { + fprintf (stderr, + "CREATE DXF PARSER: unexpected NULL \"linked.dx\" auto)\n"); + return -3; + } + + if (cache_mode) + ret = gaiaParseDxfFile_r (cache, dxf, "./linked.dxf"); + else + ret = gaiaParseDxfFile (dxf, "./linked.dxf"); + if (ret == 0) + { + fprintf (stderr, + "Unable to parse \"linked.dxf\" byLayers auto legacy\n"); + return -4; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 0); + if (ret == 0) + { + fprintf (stderr, + "Unable to load \"linked.dxf\" auto byLayer legacy\n"); + return -5; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, + "Unable to load \"linked.dxf\" auto append byLayer legacy\n"); + return -6; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"linked.dxf\" auto mixed legacy\n"); + return -7; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, + "Unable to load \"linked.dxf\" auto append mixed legacy\n"); + return -8; + } + gaiaDestroyDxfParser (dxf); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -9; + } + + if (cache_mode) + spatialite_cleanup_ex (cache); + else + spatialite_cleanup (); + ret = unlink ("copy-dxf-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove legacy v.3.0.1 database\n"); + return -10; + } + return 0; +} + +static int +check_hatch (int cache_mode) +{ +/* testing hatch.dxf */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + gaiaDxfParserPtr dxf; + void *cache; + if (cache_mode) + cache = spatialite_alloc_connection (); + else + spatialite_init (0); + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + if (cache_mode) + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + dxf = + gaiaCreateDxfParser (3003, GAIA_DXF_AUTO_2D_3D, "lnk_", NULL, + GAIA_DXF_RING_LINKED); + if (dxf == NULL) + { + fprintf (stderr, + "CREATE DXF PARSER: unexpected NULL \"hatch.dx\" auto)\n"); + return -3; + } + + if (cache_mode) + ret = gaiaParseDxfFile_r (cache, dxf, "./hatch.dxf"); + else + ret = gaiaParseDxfFile (dxf, "./hatch.dxf"); + if (ret == 0) + { + fprintf (stderr, "Unable to parse \"hatch.dxf\" byLayers auto\n"); + return -4; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"hatch.dxf\" auto byLayer\n"); + return -5; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, + "Unable to load \"hatch.dxf\" auto append byLayer\n"); + return -6; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"hatch.dxf\" auto mixed\n"); + return -7; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"hatch.dxf\" auto append mixed\n"); + return -8; + } + gaiaDestroyDxfParser (dxf); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -9; + } + + if (cache_mode) + spatialite_cleanup_ex (cache); + else + spatialite_cleanup (); + return 0; +} + +static int +check_hatch_legacy (int cache_mode) +{ +/* testing hatch.dxf - legacy DB */ + int ret; + sqlite3 *handle; + gaiaDxfParserPtr dxf; + void *cache; + if (cache_mode) + cache = spatialite_alloc_connection (); + else + spatialite_init (0); + + ret = system ("cp test-legacy-3.0.1.sqlite copy-dxf-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy legacy v.3.0.1 database\n"); + return -1; + } + ret = + sqlite3_open_v2 ("copy-dxf-legacy-3.0.1.sqlite", &handle, + SQLITE_OPEN_READWRITE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open legacy v.3.0.1 database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -2; + } + + if (cache_mode) + spatialite_init_ex (handle, cache, 0); + + dxf = + gaiaCreateDxfParser (3003, GAIA_DXF_AUTO_2D_3D, "lnk_", NULL, + GAIA_DXF_RING_LINKED); + if (dxf == NULL) + { + fprintf (stderr, + "CREATE DXF PARSER: unexpected NULL \"hatch.dx\" auto)\n"); + return -3; + } + + if (cache_mode) + ret = gaiaParseDxfFile_r (cache, dxf, "./hatch.dxf"); + else + ret = gaiaParseDxfFile (dxf, "./hatch.dxf"); + if (ret == 0) + { + fprintf (stderr, "Unable to parse \"hatch.dxf\" byLayers auto\n"); + return -4; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"hatch.dxf\" auto byLayer\n"); + return -5; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, + "Unable to load \"hatch.dxf\" auto append byLayer\n"); + return -6; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 0); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"hatch.dxf\" auto mixed\n"); + return -7; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"hatch.dxf\" auto append mixed\n"); + return -8; + } + gaiaDestroyDxfParser (dxf); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -9; + } + + if (cache_mode) + spatialite_cleanup_ex (cache); + else + spatialite_cleanup (); + ret = unlink ("copy-dxf-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove legacy v.3.0.1 database\n"); + return -10; + } + return 0; +} + +static int +check_symbol (int cache_mode) +{ +/* testing symbol.dxf */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + gaiaDxfParserPtr dxf; + void *cache; + if (cache_mode) + cache = spatialite_alloc_connection (); + else + spatialite_init (0); + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + if (cache_mode) + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + dxf = + gaiaCreateDxfParser (3003, GAIA_DXF_AUTO_2D_3D, "lnk_", NULL, + GAIA_DXF_RING_LINKED); + if (dxf == NULL) + { + fprintf (stderr, + "CREATE DXF PARSER: unexpected NULL \"symbol.dx\" auto)\n"); + return -3; + } + + if (cache_mode) + ret = gaiaParseDxfFile_r (cache, dxf, "./symbol.dxf"); + else + ret = gaiaParseDxfFile (dxf, "./symbol.dxf"); + if (ret == 0) + { + fprintf (stderr, "Unable to parse \"symbol.dxf\" byLayers auto\n"); + return -4; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"symbol.dxf\" auto byLayer\n"); + return -5; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, + "Unable to load \"symbol.dxf\" auto append byLayer\n"); + return -6; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"symbol.dxf\" auto mixed\n"); + return -7; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"symbol.dxf\" auto append mixed\n"); + return -8; + } + gaiaDestroyDxfParser (dxf); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -9; + } + + if (cache_mode) + spatialite_cleanup_ex (cache); + else + spatialite_cleanup (); + return 0; +} + +static int +check_symbol_legacy (int cache_mode) +{ +/* testing symbol.dxf - legacy DB */ + int ret; + sqlite3 *handle; + gaiaDxfParserPtr dxf; + void *cache; + if (cache_mode) + cache = spatialite_alloc_connection (); + else + spatialite_init (0); + + ret = system ("cp test-legacy-3.0.1.sqlite copy-dxf-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy legacy v.3.0.1 database\n"); + return -1; + } + ret = + sqlite3_open_v2 ("copy-dxf-legacy-3.0.1.sqlite", &handle, + SQLITE_OPEN_READWRITE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open legacy v.3.0.1 database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -2; + } + + if (cache_mode) + spatialite_init_ex (handle, cache, 0); + + dxf = + gaiaCreateDxfParser (3003, GAIA_DXF_AUTO_2D_3D, "lnk_", NULL, + GAIA_DXF_RING_LINKED); + if (dxf == NULL) + { + fprintf (stderr, + "CREATE DXF PARSER: unexpected NULL \"symbol.dx\" auto)\n"); + return -3; + } + + if (cache_mode) + ret = gaiaParseDxfFile_r (cache, dxf, "./symbol.dxf"); + else + ret = gaiaParseDxfFile (dxf, "./symbol.dxf"); + if (ret == 0) + { + fprintf (stderr, "Unable to parse \"symbol.dxf\" byLayers auto\n"); + return -4; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"symbol.dxf\" auto byLayer\n"); + return -5; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_BY_LAYER, 1); + if (ret == 0) + { + fprintf (stderr, + "Unable to load \"symbol.dxf\" auto append byLayer\n"); + return -6; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"symbol.dxf\" auto mixed\n"); + return -7; + } + + ret = gaiaLoadFromDxfParser (handle, dxf, GAIA_DXF_IMPORT_MIXED, 1); + if (ret == 0) + { + fprintf (stderr, "Unable to load \"symbol.dxf\" auto append mixed\n"); + return -8; + } + gaiaDestroyDxfParser (dxf); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -9; + } + + if (cache_mode) + spatialite_cleanup_ex (cache); + else + spatialite_cleanup (); + ret = unlink ("copy-dxf-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove legacy v.3.0.1 database\n"); + return -10; + } + return 0; +} + +#endif /* GEOS enabled */ + +int +main (int argc, char *argv[]) +{ + int cache_mode; + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + +#ifndef OMIT_GEOS /* only if GEOS is enabled */ + + for (cache_mode = 0; cache_mode <= 1; cache_mode++) + { + fprintf (stderr, "\n******* Testing DXF in %s cache-mode\n\n", + cache_mode ? "current" : "legacy"); + + if (check_22_auto (cache_mode) != 0) + return -1; + + if (check_22_2d (cache_mode) != 0) + return -2; + + if (check_22_3d (cache_mode) != 0) + return -3; + + if (check_22_single (cache_mode) != 0) + return 4; + + if (check_merano (cache_mode) != 0) + return -5; + + if (check_archaic (cache_mode) != 0) + return -6; + + if (check_linked (cache_mode) != 0) + return -7; + + if (check_linked_legacy (cache_mode) != 0) + return -8; + + if (check_hatch (cache_mode) != 0) + return -9; + + if (check_hatch_legacy (cache_mode) != 0) + return -10; + + if (check_symbol (cache_mode) != 0) + return -11; + + if (check_symbol_legacy (cache_mode) != 0) + return -12; + } + +#endif /* GEOS enabled */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_endian.c b/src/spatialite/test/check_endian.c new file mode 100644 index 0000000..cf40e0e --- /dev/null +++ b/src/spatialite/test/check_endian.c @@ -0,0 +1,427 @@ +/* + + check_endian.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" +#include + +#define LITTLE_ENDIAN_ENCODED 1 +#define BIG_ENDIAN_ENCODED 0 +#define LITTLE_ENDIAN_ARCH 1 +#define BIG_ENDIAN_ARCH 0 + +int +main (int argc, char *argv[]) +{ + unsigned char buf_in[8]; + unsigned char buf_out[8]; + short shrt_val; + int int_val; + sqlite3_int64 i64_val; + float flt_val; + double dbl_val; + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + +/* testing short values [16 bit] */ + buf_in[0] = 0xdf; + buf_in[1] = 0xfd; + shrt_val = gaiaImport16 (buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + gaiaExport16 (buf_out, shrt_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + if (buf_out[0] != 0xdf || buf_out[1] != 0xfd) + { + fprintf (stderr, + "endian INT16 (1): got 0x%02x%02x, expected 0xdffd\n", + buf_out[0], buf_out[1]); + return -1; + } + shrt_val = gaiaImport16 (buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + gaiaExport16 (buf_out, shrt_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + if (buf_out[0] != 0xdf || buf_out[1] != 0xfd) + { + fprintf (stderr, + "endian INT16 (2): got 0x%02x%02x, expected 0xdffd\n", + buf_out[0], buf_out[1]); + return -2; + } + shrt_val = gaiaImport16 (buf_in, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + gaiaExport16 (buf_out, shrt_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xdf) + { + fprintf (stderr, + "endian INT16 (3): got 0x%02x%02x, expected 0xfddf\n", + buf_out[0], buf_out[1]); + return -3; + } + shrt_val = gaiaImport16 (buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + gaiaExport16 (buf_out, shrt_val, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xdf) + { + fprintf (stderr, + "endian INT16 (4): got 0x%02x%02x, expected 0xfddf\n", + buf_out[0], buf_out[1]); + return -4; + } + shrt_val = gaiaImport16 (buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + gaiaExport16 (buf_out, shrt_val, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + if (buf_out[0] != 0xdf || buf_out[1] != 0xfd) + { + fprintf (stderr, + "endian 16 bit (5): got 0x%02x%02x, expected 0xdffd\n", + buf_out[0], buf_out[1]); + return -5; + } + shrt_val = gaiaImport16 (buf_in, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + gaiaExport16 (buf_out, shrt_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xdf) + { + fprintf (stderr, + "endian INT16 (6): got 0x%02x%02x, expected 0xfddf\n", + buf_out[0], buf_out[1]); + return -6; + } + +/* testing int values [32 bit] */ + buf_in[0] = 0xdf; + buf_in[1] = 0xec; + buf_in[2] = 0xce; + buf_in[3] = 0xfd; + int_val = gaiaImport32 (buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + gaiaExport32 (buf_out, int_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xce + || buf_out[3] != 0xfd) + { + fprintf (stderr, + "endian INT32 (1): got 0x%02x%02x%02x%02x, expected 0xdfeccefd\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3]); + return -7; + } + int_val = gaiaImport32 (buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + gaiaExport32 (buf_out, int_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xce + || buf_out[3] != 0xfd) + { + fprintf (stderr, + "endian INT32 (2): got 0x%02x%02x%02x%02x, expected 0xdfeccefd\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3]); + return -8; + } + int_val = gaiaImport32 (buf_in, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + gaiaExport32 (buf_out, int_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec + || buf_out[3] != 0xdf) + { + fprintf (stderr, + "endian INT32 (3): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3]); + return -9; + } + int_val = gaiaImport32 (buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + gaiaExport32 (buf_out, int_val, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec + || buf_out[3] != 0xdf) + { + fprintf (stderr, + "endian INT32 (4): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3]); + return -10; + } + int_val = gaiaImport32 (buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + gaiaExport32 (buf_out, int_val, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec + || buf_out[3] != 0xdf) + { + fprintf (stderr, + "endian INT32 (5): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3]); + return -11; + } + int_val = gaiaImport32 (buf_in, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + gaiaExport32 (buf_out, int_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec + || buf_out[3] != 0xdf) + { + fprintf (stderr, + "endian INT32 (6): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3]); + return -12; + } + +/* testing long values [64 bit] */ + buf_in[0] = 0xdf; + buf_in[1] = 0xec; + buf_in[2] = 0xa8; + buf_in[3] = 0x63; + buf_in[4] = 0x36; + buf_in[5] = 0x8a; + buf_in[6] = 0xce; + buf_in[7] = 0xfd; + i64_val = gaiaImportI64 (buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + gaiaExportI64 (buf_out, i64_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xa8 + || buf_out[3] != 0x63 || buf_out[4] != 0x36 || buf_out[5] != 0x8a + || buf_out[6] != 0xce || buf_out[7] != 0xfd) + { + fprintf (stderr, + "endian INT64 (1): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xdfeca863368acefd\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], + buf_out[5], buf_out[6], buf_out[7]); + return -13; + } + i64_val = gaiaImportI64 (buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + gaiaExportI64 (buf_out, i64_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xa8 + || buf_out[3] != 0x63 || buf_out[4] != 0x36 || buf_out[5] != 0x8a + || buf_out[6] != 0xce || buf_out[7] != 0xfd) + { + fprintf (stderr, + "endian INT64 (2): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xdfeca863368acefd\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], + buf_out[5], buf_out[6], buf_out[7]); + return -14; + } + i64_val = gaiaImportI64 (buf_in, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + gaiaExportI64 (buf_out, i64_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a + || buf_out[3] != 0x36 || buf_out[4] != 0x63 || buf_out[5] != 0xa8 + || buf_out[6] != 0xec || buf_out[7] != 0xdf) + { + fprintf (stderr, + "endian INT64 (3): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], + buf_out[5], buf_out[6], buf_out[7]); + return -15; + } + i64_val = gaiaImportI64 (buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + gaiaExportI64 (buf_out, i64_val, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a + || buf_out[3] != 0x36 || buf_out[4] != 0x63 || buf_out[5] != 0xa8 + || buf_out[6] != 0xec || buf_out[7] != 0xdf) + { + fprintf (stderr, + "endian INT64 (4): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], + buf_out[5], buf_out[6], buf_out[7]); + return -16; + } + i64_val = gaiaImportI64 (buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + gaiaExportI64 (buf_out, i64_val, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a + || buf_out[3] != 0x36 || buf_out[4] != 0x63 || buf_out[5] != 0xa8 + || buf_out[6] != 0xec || buf_out[7] != 0xdf) + { + fprintf (stderr, + "endian INT64 (5): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], + buf_out[5], buf_out[6], buf_out[7]); + return -17; + } + i64_val = gaiaImportI64 (buf_in, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + gaiaExportI64 (buf_out, i64_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a + || buf_out[3] != 0x36 || buf_out[4] != 0x63 || buf_out[5] != 0xa8 + || buf_out[6] != 0xec || buf_out[7] != 0xdf) + { + fprintf (stderr, + "endian INT64 (6): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], + buf_out[5], buf_out[6], buf_out[7]); + return -18; + } + +/* testing float values */ + buf_in[0] = 0xdf; + buf_in[1] = 0xec; + buf_in[2] = 0xce; + buf_in[3] = 0xfd; + flt_val = gaiaImportF32 (buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + gaiaExportF32 (buf_out, flt_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xce + || buf_out[3] != 0xfd) + { + fprintf (stderr, + "endian FLOAT (1): got 0x%02x%02x%02x%02x, expected 0xdfeccefd\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3]); + return -19; + } + flt_val = gaiaImportF32 (buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + gaiaExportF32 (buf_out, flt_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xce + || buf_out[3] != 0xfd) + { + fprintf (stderr, + "endian FLOAT (2): got 0x%02x%02x%02x%02x, expected 0xdfeccefd\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3]); + return -20; + } + flt_val = gaiaImportF32 (buf_in, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + gaiaExportF32 (buf_out, flt_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec + || buf_out[3] != 0xdf) + { + fprintf (stderr, + "endian FLOAT (3): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3]); + return -21; + } + flt_val = gaiaImportF32 (buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + gaiaExportF32 (buf_out, flt_val, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec + || buf_out[3] != 0xdf) + { + fprintf (stderr, + "endian FLOAT (4): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3]); + return -22; + } + flt_val = gaiaImportF32 (buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + gaiaExportF32 (buf_out, flt_val, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec + || buf_out[3] != 0xdf) + { + fprintf (stderr, + "endian FLOAT (5): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3]); + return -23; + } + flt_val = gaiaImportF32 (buf_in, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + gaiaExportF32 (buf_out, flt_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0xec + || buf_out[3] != 0xdf) + { + fprintf (stderr, + "endian FLOAT (6): got 0x%02x%02x%02x%02x, expected 0xfdceecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3]); + return -24; + } + +/* testing double values */ + buf_in[0] = 0xdf; + buf_in[1] = 0xec; + buf_in[2] = 0xa8; + buf_in[3] = 0x63; + buf_in[4] = 0x36; + buf_in[5] = 0x8a; + buf_in[6] = 0xce; + buf_in[7] = 0xfd; + dbl_val = gaiaImport64 (buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + gaiaExport64 (buf_out, dbl_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xa8 + || buf_out[3] != 0x63 || buf_out[4] != 0x36 || buf_out[5] != 0x8a + || buf_out[6] != 0xce || buf_out[7] != 0xfd) + { + fprintf (stderr, + "endian DOUBLE (1): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xdfeca863368acefd\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], + buf_out[5], buf_out[6], buf_out[7]); + return -25; + } + dbl_val = gaiaImport64 (buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + gaiaExport64 (buf_out, dbl_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + if (buf_out[0] != 0xdf || buf_out[1] != 0xec || buf_out[2] != 0xa8 + || buf_out[3] != 0x63 || buf_out[4] != 0x36 || buf_out[5] != 0x8a + || buf_out[6] != 0xce || buf_out[7] != 0xfd) + { + fprintf (stderr, + "endian DOUBLE (2): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xdfeca863368acefd\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], + buf_out[5], buf_out[6], buf_out[7]); + return -26; + } + dbl_val = gaiaImport64 (buf_in, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + gaiaExport64 (buf_out, dbl_val, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a + || buf_out[3] != 0x36 || buf_out[4] != 0x63 || buf_out[5] != 0xa8 + || buf_out[6] != 0xec || buf_out[7] != 0xdf) + { + fprintf (stderr, + "endian DOUBLE (3): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], + buf_out[5], buf_out[6], buf_out[7]); + return -27; + } + dbl_val = gaiaImport64 (buf_in, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + gaiaExport64 (buf_out, dbl_val, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a + || buf_out[3] != 0x36 || buf_out[4] != 0x63 || buf_out[5] != 0xa8 + || buf_out[6] != 0xec || buf_out[7] != 0xdf) + { + fprintf (stderr, + "endian DOUBLE (4): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], + buf_out[5], buf_out[6], buf_out[7]); + return -28; + } + dbl_val = gaiaImport64 (buf_in, LITTLE_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + gaiaExport64 (buf_out, dbl_val, BIG_ENDIAN_ENCODED, LITTLE_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a + || buf_out[3] != 0x36 || buf_out[4] != 0x63 || buf_out[5] != 0xa8 + || buf_out[6] != 0xec || buf_out[7] != 0xdf) + { + fprintf (stderr, + "endian DOUBLE (5): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], + buf_out[5], buf_out[6], buf_out[7]); + return -29; + } + dbl_val = gaiaImport64 (buf_in, LITTLE_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + gaiaExport64 (buf_out, dbl_val, BIG_ENDIAN_ENCODED, BIG_ENDIAN_ARCH); + if (buf_out[0] != 0xfd || buf_out[1] != 0xce || buf_out[2] != 0x8a + || buf_out[3] != 0x36 || buf_out[4] != 0x63 || buf_out[5] != 0xa8 + || buf_out[6] != 0xec || buf_out[7] != 0xdf) + { + fprintf (stderr, + "endian DOUBLE (6): got 0x%02x%02x%02x%02x%02x%02x%02x%02x, expected 0xfdce8a3663a8ecdf\n", + buf_out[0], buf_out[1], buf_out[2], buf_out[3], buf_out[4], + buf_out[5], buf_out[6], buf_out[7]); + return -30; + } + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_exif.c b/src/spatialite/test/check_exif.c new file mode 100644 index 0000000..74d1b13 --- /dev/null +++ b/src/spatialite/test/check_exif.c @@ -0,0 +1,688 @@ + +/* + + check_exif.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +#include + +static sqlite3_int64 +get_pixel_x (gaiaExifTagListPtr tag_list, int *ok) +{ +/* trying to retrieve the ExifImageWidth */ + gaiaExifTagPtr tag = tag_list->First; + *ok = 0; + + while (tag) + { + if (tag->TagId == 0xA002) + { + /* ok, this one is the ExifImageWidth tag */ + if (tag->Type == 3 && tag->Count == 1) + { + *ok = 1; + return *(tag->ShortValues + 0); + } + else if (tag->Type == 4 && tag->Count == 1) + { + *ok = 1; + return *(tag->LongValues + 0); + } + } + tag = tag->Next; + } + return 0; +} + +static sqlite3_int64 +get_pixel_y (gaiaExifTagListPtr tag_list, int *ok) +{ +/* trying to retrieve the ExifImageLength */ + gaiaExifTagPtr tag = tag_list->First; + *ok = 0; + + while (tag) + { + if (tag->TagId == 0xA003) + { + /* ok, this one is the ExifImageLength tag */ + if (tag->Type == 3 && tag->Count == 1) + { + *ok = 1; + return *(tag->ShortValues + 0); + } + else if (tag->Type == 4 && tag->Count == 1) + { + *ok = 1; + return *(tag->LongValues + 0); + } + } + tag = tag->Next; + } + return 0; +} + +static void +get_make (gaiaExifTagListPtr tag_list, const char **str, int *ok) +{ +/* trying to retrieve the Make */ + gaiaExifTagPtr tag = tag_list->First; + *ok = 0; + + while (tag) + { + if (tag->TagId == 0x010F) + { + /* ok, this one is the Make tag */ + if (tag->Type == 2) + { + *ok = 1; + *str = tag->StringValue; + return; + } + } + tag = tag->Next; + } + return; +} + +static void +get_model (gaiaExifTagListPtr tag_list, const char **str, int *ok) +{ +/* trying to retrieve the Model */ + gaiaExifTagPtr tag = tag_list->First; + *ok = 0; + + while (tag) + { + if (tag->TagId == 0x0110) + { + /* ok, this one is the Model tag */ + if (tag->Type == 2) + { + *ok = 1; + *str = tag->StringValue; + return; + } + } + tag = tag->Next; + } + return; +} + +static void +get_date (gaiaExifTagListPtr tag_list, const char **str, int *ok) +{ +/* trying to retrieve the Date */ + gaiaExifTagPtr tag = tag_list->First; + *ok = 0; + + while (tag) + { + if (tag->TagId == 0x9003) + { + /* ok, this one is the Make tag */ + if (tag->Type == 2) + { + *ok = 1; + *str = tag->StringValue; + return; + } + } + tag = tag->Next; + } + return; +} + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + FILE *fl; + int sz = 0; + int rd; + int ok; + int i; + char tag_name[128]; + char human[8192]; + gaiaExifTagPtr pT; + sqlite3_int64 val64; + const char *result; + unsigned char *blob = NULL; + gaiaExifTagListPtr tag_list = NULL; + double longitude; + double latitude; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -100; + } + + spatialite_init_ex (handle, cache, 0); + + fl = fopen ("sql_stmt_tests/DSC_1467.JPG", "rb"); + if (!fl) + { + fprintf (stderr, "cannot open EXIF-JPEG image: DSC_1467.JPG\n"); + return -1; + } + if (fseek (fl, 0, SEEK_END) == 0) + sz = ftell (fl); + if (sz <= 14) + { + fprintf (stderr, "invalid size EXIF-JPEG image: DSC_1467.JPG\n"); + return -2; + } + + blob = (unsigned char *) malloc (sz); + rewind (fl); + rd = fread (blob, 1, sz, fl); + if (rd != sz) + { + fprintf (stderr, "read error EXIF-JPEG image: DSC_1467.JPG\n"); + return -3; + } + + tag_list = gaiaGetExifTags (blob, sz); + if (tag_list == NULL) + { + fprintf (stderr, + "cannot extract EXIF tags from JPEG image: DSC_1467.JPG\n"); + return -4; + } + + val64 = get_pixel_x (tag_list, &ok); + if (!ok) + { + fprintf (stderr, "DSC_1467.JPG: PixelX tag not found\n"); + return -5; + } + if (val64 != 2128) + { + fprintf (stderr, "DSC_1467.JPG: PixelX unexpected value: %d\n", + (int) val64); + return -6; + } + + val64 = get_pixel_y (tag_list, &ok); + if (!ok) + { + fprintf (stderr, "DSC_1467.JPG: PixelY tag not found\n"); + return -7; + } + if (val64 != 1416) + { + fprintf (stderr, "DSC_1467.JPG: PixelY unexpected value: %d\n", + (int) val64); + return -8; + } + + get_make (tag_list, &result, &ok); + if (!ok) + { + fprintf (stderr, "DSC_1467.JPG: Make tag not found\n"); + return -9; + } + if (strcmp (result, "NIKON CORPORATION") != 0) + { + fprintf (stderr, "DSC_1467.JPG: Make unexpected value: %s|\n", + result); + return -10; + }; + + get_model (tag_list, &result, &ok); + if (!ok) + { + fprintf (stderr, "DSC_1467.JPG: Model tag not found\n"); + return -11; + } + if (strcmp (result, "NIKON D700") != 0) + { + fprintf (stderr, "DSC_1467.JPG: Model unexpected value: %s|\n", + result); + return -12; + }; + + get_date (tag_list, &result, &ok); + if (!ok) + { + fprintf (stderr, "DSC_1467.JPG: Date tag not found\n"); + return -13; + } + if (strcmp (result, "2011:03:26 11:01:13") != 0) + { + fprintf (stderr, "DSC_1467.JPG: Date unexpected value: %s|\n", + result); + return -14; + }; + + for (i = 0; i < gaiaGetExifTagsCount (tag_list); i++) + { + pT = gaiaGetExifTagByPos (tag_list, i); + if (pT) + { + gaiaExifTagGetName (pT, tag_name, 128); + gaiaExifTagGetValueType (pT); + gaiaIsExifGpsTag (pT); + gaiaExifTagGetValueType (pT); + gaiaExifTagGetNumValues (pT); + gaiaExifTagGetHumanReadable (pT, human, 8190, &ok); + } + } + + pT = gaiaGetExifTagById (tag_list, 0x0112); + if (pT == NULL) + { + fprintf (stderr, "DSC_1467.JPG: tag Orientation not found: %s|\n", + result); + return -15; + }; + + pT = gaiaGetExifTagByName (tag_list, "YCbCrPositioning"); + if (pT == NULL) + { + fprintf (stderr, + "DSC_1467.JPG: tag YCbCrPositioning not found: %s|\n", + result); + return -16; + }; + + for (i = 0x0000; i < 0xffff; i++) + { + gaiaExifTag tag; + tag.Gps = 0; + tag.TagId = i; + gaiaExifTagGetName (&tag, tag_name, 128); + } + for (i = 0x0000; i < 0xffff; i++) + { + gaiaExifTag tag; + tag.Gps = 1; + tag.TagId = i; + gaiaExifTagGetName (&tag, tag_name, 128); + } + + if (blob) + free (blob); + if (tag_list) + gaiaExifTagsFree (tag_list); + fclose (fl); + + fl = fopen ("sql_stmt_tests/DSCN0042.JPG", "rb"); + if (!fl) + { + fprintf (stderr, "cannot open EXIF-JPEG image: DSCN0042.JPG\n"); + return -100; + } + if (fseek (fl, 0, SEEK_END) == 0) + sz = ftell (fl); + if (sz <= 14) + { + fprintf (stderr, "invalid size EXIF-JPEG image: DSCN0042.JPG\n"); + return -17; + } + + blob = (unsigned char *) malloc (sz); + rewind (fl); + rd = fread (blob, 1, sz, fl); + if (rd != sz) + { + fprintf (stderr, "read error EXIF-JPEG image: DSCN0042.JPG\n"); + return -18; + } + + tag_list = gaiaGetExifTags (blob, sz); + if (tag_list == NULL) + { + fprintf (stderr, + "cannot extract EXIF tags from JPEG image: DSCN0042.JPG\n"); + return -19; + } + + val64 = get_pixel_x (tag_list, &ok); + if (!ok) + { + fprintf (stderr, "DSCN0042.JPG: PixelX tag not found\n"); + return -20; + } + if (val64 != 640) + { + fprintf (stderr, "DSCN0042.JPG: PixelX unexpected value: %d\n", + (int) val64); + return -21; + } + + val64 = get_pixel_y (tag_list, &ok); + if (!ok) + { + fprintf (stderr, "DSCN0042.JPG: PixelY tag not found\n"); + return -22; + } + if (val64 != 480) + { + fprintf (stderr, "DSCN0042.JPG: PixelY unexpected value: %d\n", + (int) val64); + return -23; + } + + get_make (tag_list, &result, &ok); + if (!ok) + { + fprintf (stderr, "DSCN0042.JPG: Make tag not found\n"); + return -24; + } + if (strcmp (result, "NIKON") != 0) + { + fprintf (stderr, "DSCN0042.JPG: Make unexpected value: %s|\n", + result); + return -25; + }; + + get_model (tag_list, &result, &ok); + if (!ok) + { + fprintf (stderr, "DSCN0042.JPG: Model tag not found\n"); + return -26; + } + if (strcmp (result, "COOLPIX P6000") != 0) + { + fprintf (stderr, "DSCN0042.JPG: Model unexpected value: %s|\n", + result); + return -27; + }; + + get_date (tag_list, &result, &ok); + if (!ok) + { + fprintf (stderr, "DSCN0042.JPG: Date tag not found\n"); + return -28; + } + if (strcmp (result, "2008:10:22 17:00:07") != 0) + { + fprintf (stderr, "DSCN0042.JPG: Date unexpected value: %s|\n", + result); + return -29; + }; + + for (i = 0; i < gaiaGetExifTagsCount (tag_list); i++) + { + pT = gaiaGetExifTagByPos (tag_list, i); + if (pT) + { + gaiaExifTagGetName (pT, tag_name, 128); + gaiaExifTagGetValueType (pT); + gaiaIsExifGpsTag (pT); + gaiaExifTagGetValueType (pT); + gaiaExifTagGetNumValues (pT); + gaiaExifTagGetHumanReadable (pT, human, 8190, &ok); + } + } + + pT = gaiaGetExifTagById (tag_list, 0x0112); + if (pT == NULL) + { + fprintf (stderr, "DSCN0042.JPG: tag Orientation not found: %s|\n", + result); + return -30; + }; + + pT = gaiaGetExifTagByName (tag_list, "YCbCrPositioning"); + if (pT == NULL) + { + fprintf (stderr, + "DSCN0042.JPG: tag YCbCrPositioning not found: %s|\n", + result); + return -31; + }; + + for (i = 0x0000; i < 0xffff; i++) + { + gaiaExifTag tag; + tag.Gps = 0; + tag.TagId = i; + gaiaExifTagGetName (&tag, tag_name, 128); + } + for (i = 0x0000; i < 0xffff; i++) + { + gaiaExifTag tag; + tag.Gps = 1; + tag.TagId = i; + gaiaExifTagGetName (&tag, tag_name, 128); + } + + if (!gaiaGetGpsLatLong (blob, sz, human, 8192)) + { + fprintf (stderr, + "cannot extract GPS coords from JPEG image: DSCN0042.JPG\n"); + return -32; + } + if (strcmp (human, "N 43.00 27.00 52.04 / E 11.00 52.00 53.32") != 0) + { + fprintf (stderr, "DSCN0042.JPG: GPS coords unexpected value: %s|\n", + human); + return -33; + }; + if (!gaiaGetGpsLatLong (blob, sz, human, 20)) + { + fprintf (stderr, + "cannot extract GPS coords(20) from JPEG image: DSCN0042.JPG\n"); + return -34; + } + if (strcmp (human, "N 43.00 27.00 52.04 ") != 0) + { + fprintf (stderr, + "DSCN0042.JPG: GPS coords(20) unexpected value: %s|\n", + human); + return -35; + }; + if (!gaiaGetGpsCoords (blob, sz, &longitude, &latitude)) + { + fprintf (stderr, + "cannot extract GPS long/lat from JPEG image: DSCN0042.JPG\n"); + return -36; + } + if (longitude != 11.881478 || latitude != 43.464455) + { + fprintf (stderr, + "DSCN0042.JPG: GPS long/lat unexpected values: %1.9f %1.9f|\n", + longitude, latitude); + return -37; + }; + + if (blob) + free (blob); + if (tag_list) + gaiaExifTagsFree (tag_list); + fclose (fl); + + fl = fopen ("sql_stmt_tests/La_folla_durante_il_Palio.jpg", "rb"); + if (!fl) + { + fprintf (stderr, + "cannot open EXIF-JPEG image: La_folla_durante_il_Palio.jpg\n"); + return -50; + } + if (fseek (fl, 0, SEEK_END) == 0) + sz = ftell (fl); + if (sz <= 14) + { + fprintf (stderr, + "invalid size EXIF-JPEG image: La_folla_durante_il_Palio.jpg\n"); + return -51; + } + + blob = (unsigned char *) malloc (sz); + rewind (fl); + rd = fread (blob, 1, sz, fl); + if (rd != sz) + { + fprintf (stderr, + "read error EXIF-JPEG image: La_folla_durante_il_Palio.jpg\n"); + return -52; + } + + tag_list = gaiaGetExifTags (blob, sz); + if (tag_list == NULL) + { + fprintf (stderr, + "cannot extract EXIF tags from JPEG image: La_folla_durante_il_Palio.jpg\n"); + return -53; + } + + val64 = get_pixel_x (tag_list, &ok); + if (!ok) + { + fprintf (stderr, + "La_folla_durante_il_Palio.jpg: PixelX tag not found\n"); + return -54; + } + if (val64 != 1280) + { + fprintf (stderr, + "La_folla_durante_il_Palio.jpg: PixelX unexpected value: %d\n", + (int) val64); + return -55; + } + + val64 = get_pixel_y (tag_list, &ok); + if (!ok) + { + fprintf (stderr, + "La_folla_durante_il_Palio.jpg: PixelY tag not found\n"); + return -56; + } + if (val64 != 960) + { + fprintf (stderr, + "La_folla_durante_il_Palio.jpg: PixelY unexpected value: %d\n", + (int) val64); + return -57; + } + + get_make (tag_list, &result, &ok); + if (!ok) + { + fprintf (stderr, + "La_folla_durante_il_Palio.jpg: Make tag not found\n"); + return -58; + } + if (strcmp (result, "Nokia") != 0) + { + fprintf (stderr, + "La_folla_durante_il_Palio.jpg: Make unexpected value: %s|\n", + result); + return -59; + }; + + get_model (tag_list, &result, &ok); + if (!ok) + { + fprintf (stderr, + "La_folla_durante_il_Palio.jpg: Model tag not found\n"); + return -60; + } + if (strcmp (result, "6630") != 0) + { + fprintf (stderr, + "La_folla_durante_il_Palio.jpg: Model unexpected value: %s|\n", + result); + return -61; + }; + + for (i = 0; i < gaiaGetExifTagsCount (tag_list); i++) + { + pT = gaiaGetExifTagByPos (tag_list, i); + if (pT) + { + gaiaExifTagGetName (pT, tag_name, 128); + gaiaExifTagGetValueType (pT); + gaiaIsExifGpsTag (pT); + gaiaExifTagGetValueType (pT); + gaiaExifTagGetNumValues (pT); + gaiaExifTagGetHumanReadable (pT, human, 8190, &ok); + } + } + + for (i = 0x0000; i < 0xffff; i++) + { + gaiaExifTag tag; + tag.Gps = 0; + tag.TagId = i; + gaiaExifTagGetName (&tag, tag_name, 128); + } + + if (blob) + free (blob); + if (tag_list) + gaiaExifTagsFree (tag_list); + fclose (fl); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -133; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_exif2.c b/src/spatialite/test/check_exif2.c new file mode 100644 index 0000000..fb1f039 --- /dev/null +++ b/src/spatialite/test/check_exif2.c @@ -0,0 +1,411 @@ +/* + + check_exif.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +#include + +static sqlite3_int64 +get_pixel_x (gaiaExifTagListPtr tag_list, int *ok) +{ +/* trying to retrieve the ExifImageWidth */ + gaiaExifTagPtr tag = tag_list->First; + *ok = 0; + + while (tag) + { + if (tag->TagId == 0xA002) + { + /* ok, this one is the ExifImageWidth tag */ + if (tag->Type == 3 && tag->Count == 1) + { + *ok = 1; + return *(tag->ShortValues + 0); + } + else if (tag->Type == 4 && tag->Count == 1) + { + *ok = 1; + return *(tag->LongValues + 0); + } + } + tag = tag->Next; + } + return 0; +} + +static sqlite3_int64 +get_pixel_y (gaiaExifTagListPtr tag_list, int *ok) +{ +/* trying to retrieve the ExifImageLength */ + gaiaExifTagPtr tag = tag_list->First; + *ok = 0; + + while (tag) + { + if (tag->TagId == 0xA003) + { + /* ok, this one is the ExifImageLength tag */ + if (tag->Type == 3 && tag->Count == 1) + { + *ok = 1; + return *(tag->ShortValues + 0); + } + else if (tag->Type == 4 && tag->Count == 1) + { + *ok = 1; + return *(tag->LongValues + 0); + } + } + tag = tag->Next; + } + return 0; +} + +static void +get_make (gaiaExifTagListPtr tag_list, const char **str, int *ok) +{ +/* trying to retrieve the Make */ + gaiaExifTagPtr tag = tag_list->First; + *ok = 0; + + while (tag) + { + if (tag->TagId == 0x010F) + { + /* ok, this one is the Make tag */ + if (tag->Type == 2) + { + *ok = 1; + *str = tag->StringValue; + return; + } + } + tag = tag->Next; + } + return; +} + +static void +get_model (gaiaExifTagListPtr tag_list, const char **str, int *ok) +{ +/* trying to retrieve the Model */ + gaiaExifTagPtr tag = tag_list->First; + *ok = 0; + + while (tag) + { + if (tag->TagId == 0x0110) + { + /* ok, this one is the Model tag */ + if (tag->Type == 2) + { + *ok = 1; + *str = tag->StringValue; + return; + } + } + tag = tag->Next; + } + return; +} + +static void +get_date (gaiaExifTagListPtr tag_list, const char **str, int *ok) +{ +/* trying to retrieve the Date */ + gaiaExifTagPtr tag = tag_list->First; + *ok = 0; + + while (tag) + { + if (tag->TagId == 0x9003) + { + /* ok, this one is the Make tag */ + if (tag->Type == 2) + { + *ok = 1; + *str = tag->StringValue; + return; + } + } + tag = tag->Next; + } + return; +} + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + FILE *fl; + int sz = 0; + int rd; + int ok; + int i; + char tag_name[128]; + char human[8192]; + gaiaExifTagPtr pT; + sqlite3_int64 val64; + const char *result; + unsigned char *blob = NULL; + gaiaExifTagListPtr tag_list = NULL; + double longitude; + double latitude; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -100; + } + + spatialite_init_ex (handle, cache, 0); + + fl = fopen ("Apple-iPhone-4.jpg", "rb"); + if (!fl) + { + fprintf (stderr, "cannot open EXIF-JPEG image: Apple-iPhone-4.jpg\n"); + return -100; + } + if (fseek (fl, 0, SEEK_END) == 0) + sz = ftell (fl); + if (sz <= 14) + { + fprintf (stderr, + "invalid size EXIF-JPEG image: Apple-iPhone-4.jpg\n"); + return -17; + } + + blob = (unsigned char *) malloc (sz); + rewind (fl); + rd = fread (blob, 1, sz, fl); + if (rd != sz) + { + fprintf (stderr, "read error EXIF-JPEG image: Apple-iPhone-4.jpg\n"); + return -18; + } + + tag_list = gaiaGetExifTags (blob, sz); + if (tag_list == NULL) + { + fprintf (stderr, + "cannot extract EXIF tags from JPEG image: Apple-iPhone-4.jpg\n"); + return -19; + } + + val64 = get_pixel_x (tag_list, &ok); + if (!ok) + { + fprintf (stderr, "Apple-iPhone-4.jpg: PixelX tag not found\n"); + return -20; + } + if (val64 != 1296) + { + fprintf (stderr, "Apple-iPhone-4.jpg: PixelX unexpected value: %d\n", + (int) val64); + return -21; + } + + val64 = get_pixel_y (tag_list, &ok); + if (!ok) + { + fprintf (stderr, "Apple-iPhone-4.jpg: PixelY tag not found\n"); + return -22; + } + if (val64 != 968) + { + fprintf (stderr, "Apple-iPhone-4.jpg: PixelY unexpected value: %d\n", + (int) val64); + return -23; + } + + get_make (tag_list, &result, &ok); + if (!ok) + { + fprintf (stderr, "Apple-iPhone-4.jpg: Make tag not found\n"); + return -24; + } + if (strcmp (result, "Apple") != 0) + { + fprintf (stderr, "Apple-iPhone-4.jpg: Make unexpected value: %s|\n", + result); + return -25; + }; + + get_model (tag_list, &result, &ok); + if (!ok) + { + fprintf (stderr, "Apple-iPhone-4.jpg: Model tag not found\n"); + return -26; + } + if (strcmp (result, "iPhone 4") != 0) + { + fprintf (stderr, "Apple-iPhone-4.jpg: Model unexpected value: %s|\n", + result); + return -27; + }; + + get_date (tag_list, &result, &ok); + if (!ok) + { + fprintf (stderr, "Apple-iPhone-4.jpg: Date tag not found\n"); + return -28; + } + if (strcmp (result, "2011:01:13 14:33:39") != 0) + { + fprintf (stderr, "Apple-iPhone-4.jpg: Date unexpected value: %s|\n", + result); + return -29; + }; + + for (i = 0; i < gaiaGetExifTagsCount (tag_list); i++) + { + pT = gaiaGetExifTagByPos (tag_list, i); + if (pT) + { + gaiaExifTagGetName (pT, tag_name, 128); + gaiaExifTagGetValueType (pT); + gaiaIsExifGpsTag (pT); + gaiaExifTagGetValueType (pT); + gaiaExifTagGetNumValues (pT); + gaiaExifTagGetHumanReadable (pT, human, 8190, &ok); + } + } + + pT = gaiaGetExifTagById (tag_list, 0x0112); + if (pT == NULL) + { + fprintf (stderr, + "Apple-iPhone-4.jpg: tag Orientation not found: %s|\n", + result); + return -30; + }; + + for (i = 0x0000; i < 0xffff; i++) + { + gaiaExifTag tag; + tag.Gps = 0; + tag.TagId = i; + gaiaExifTagGetName (&tag, tag_name, 128); + } + for (i = 0x0000; i < 0xffff; i++) + { + gaiaExifTag tag; + tag.Gps = 1; + tag.TagId = i; + gaiaExifTagGetName (&tag, tag_name, 128); + } + + if (!gaiaGetGpsLatLong (blob, sz, human, 8192)) + { + fprintf (stderr, + "cannot extract GPS coords from JPEG image: Apple-iPhone-4.jpg\n"); + return -32; + } + if (strcmp (human, "N 41.00 51.18 0.00 / E 12.00 29.33 0.00") != 0) + { + fprintf (stderr, + "Apple-iPhone-4.jpg: GPS coords unexpected value: %s|\n", + human); + return -33; + }; + if (!gaiaGetGpsLatLong (blob, sz, human, 18)) + { + fprintf (stderr, + "cannot extract GPS coords(18) from JPEG image: Apple-iPhone-4.jpg\n"); + return -34; + } + if (strcmp (human, "N 41.00 51.18 0.00") != 0) + { + fprintf (stderr, + "Apple-iPhone-4.jpg: GPS coords(18) unexpected value: %s|\n", + human); + return -35; + }; + if (!gaiaGetGpsCoords (blob, sz, &longitude, &latitude)) + { + fprintf (stderr, + "cannot extract GPS long/lat from JPEG image: Apple-iPhone-4.jpg\n"); + return -36; + } + if (longitude != 12.488833000 || latitude != 41.853000000) + { + fprintf (stderr, + "Apple-iPhone-4.jpg: GPS long/lat unexpected values: %1.9f %1.9f|\n", + longitude, latitude); + return -37; + }; + + if (blob) + free (blob); + if (tag_list) + gaiaExifTagsFree (tag_list); + fclose (fl); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -133; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_extension.c b/src/spatialite/test/check_extension.c new file mode 100644 index 0000000..05769a3 --- /dev/null +++ b/src/spatialite/test/check_extension.c @@ -0,0 +1,293 @@ +/* + + check_extension.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define _GNU_SOURCE +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +#ifdef _WIN32 +#include "asprintf4win.h" +#endif + +int +main (int argc, char *argv[]) +{ + sqlite3 *db_handle = NULL; + char *sql_statement; + int ret; + char *err_msg = NULL; + char **results; + int rows; + int columns; + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + sqlite3_enable_load_extension (db_handle, 1); + + asprintf (&sql_statement, "SELECT load_extension('mod_spatialite')"); + + ret = sqlite3_exec (db_handle, sql_statement, NULL, NULL, &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "load_extension() error: %s\n", err_msg); + sqlite3_free (err_msg); + return -2; + } + + asprintf (&sql_statement, "SELECT spatialite_version()"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -10; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: spatialite_version() bad result: %i/%i.\n", + rows, columns); + return -11; + } + if (strcmp (results[1], VERSION) != 0) + { + fprintf (stderr, + "Unexpected error: spatialite_version() bad result: %s.\n", + results[1]); + return -12; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, "SELECT geos_version()"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error2: %s\n", err_msg); + sqlite3_free (err_msg); + return -13; + } + +#ifndef OMIT_GEOS /* only if GEOS is supported */ + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: geos_version() bad result: %i/%i.\n", + rows, columns); + return -14; + } + /* we tolerate any string here, because versions always change */ + if (strlen (results[1]) == 0) + { + fprintf (stderr, "Unexpected error: geos_version() bad result.\n"); + return -15; + } +#else /* GEOS is not supported */ + /* in this case we expect a NULL */ + if (results[1] != NULL) + { + fprintf (stderr, "Unexpected error: geos_version() bad result.\n"); + return -15; + } +#endif /* end GEOS conditional */ + sqlite3_free_table (results); + + asprintf (&sql_statement, "SELECT proj4_version()"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error3: %s\n", err_msg); + sqlite3_free (err_msg); + return -16; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: proj4_version() bad result: %i/%i.\n", + rows, columns); + return -17; + } + +#ifndef OMIT_PROJ /* only if PROJ is supported */ + /* we tolerate any string here, because versions always change */ + if (strlen (results[1]) == 0) + { + fprintf (stderr, "Unexpected error: proj4_version() bad result.\n"); + return -18; + } +#else /* PROJ is not supported */ + /* in this case we expect a NULL */ + if (results[1] != NULL) + { + fprintf (stderr, "Unexpected error: proj4_version() bad result.\n"); + return -19; + } +#endif /* end PROJ conditional */ + sqlite3_free_table (results); + + asprintf (&sql_statement, "SELECT spatialite_target_cpu()"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error4: %s\n", err_msg); + sqlite3_free (err_msg); + return -20; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: spatialite_target_cpu() bad result: %i/%i.\n", + rows, columns); + return -21; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, "SELECT lwgeom_version()"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error5: %s\n", err_msg); + sqlite3_free (err_msg); + return -22; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: lwgeom_version() bad result: %i/%i.\n", + rows, columns); + return -23; + } + +#ifdef ENABLE_LWGEOM /* only if LWGEOM is supported */ + /* we tolerate any string here, because versions always change */ + if (strlen (results[1]) == 0) + { + fprintf (stderr, "Unexpected error: lwgeom_version() bad result.\n"); + return -24; + } +#else /* LWGEOM is not supported */ + /* in this case we expect a NULL */ + if (results[1] != NULL) + { + fprintf (stderr, "Unexpected error: lwgeom_version() bad result.\n"); + return -25; + } +#endif /* end LWGEOM conditional */ + sqlite3_free_table (results); + + asprintf (&sql_statement, "SELECT libxml2_version()"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error6: %s\n", err_msg); + sqlite3_free (err_msg); + return -26; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: libxml2_version() bad result: %i/%i.\n", + rows, columns); + return -27; + } + +#ifdef ENABLE_LIBXML2 /* only if LIBXML2 is supported */ + /* we tolerate any string here, because versions always change */ + if (strlen (results[1]) == 0) + { + fprintf (stderr, "Unexpected error: libxml2_version() bad result.\n"); + return -28; + } +#else /* LIBXML2 is not supported */ + /* in this case we expect a NULL */ + if (results[1] != NULL) + { + fprintf (stderr, "Unexpected error: libxml2_version() bad result.\n"); + return -29; + } +#endif /* end LIBXML2 conditional */ + sqlite3_free_table (results); + + sqlite3_close (db_handle); + spatialite_cleanup (); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_extra_relations_fncts.c b/src/spatialite/test/check_extra_relations_fncts.c new file mode 100644 index 0000000..ee5c59a --- /dev/null +++ b/src/spatialite/test/check_extra_relations_fncts.c @@ -0,0 +1,265 @@ +/* + + check_extra_relations_fncts.c -- SpatiaLite Test Case + + This tests a couple of functions in gg_relations.c that aren't used in + spatialite, but are provided for backwards compatibility. + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" +#include "spatialite/gaiageo.h" + +static const double double_eps = 0.00000001; + +int +main (int argc, char *argv[]) +{ + int result; + int returnValue = 0; + gaiaRingPtr interior; + + /* Common setup */ + gaiaLinestringPtr linestr1 = gaiaAllocLinestring (0); + gaiaLinestringPtr linestr2 = gaiaAllocLinestring (0); + gaiaPolygonPtr poly1 = gaiaAllocPolygon (0, 0); + gaiaPolygonPtr poly2 = gaiaAllocPolygon (0, 0); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + /* Tests start here */ + + /* zero length linestring */ + result = gaiaLinestringEquals (linestr1, linestr2); + if (result != 1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -1; + goto exit; + } + + /* non-matching linestring lengths */ + gaiaFreeLinestring (linestr1); + gaiaFreeLinestring (linestr2); + linestr1 = gaiaAllocLinestring (2); + linestr2 = gaiaAllocLinestring (3); + gaiaSetPoint (linestr1->Coords, 0, 1, 3); /* line1, first point */ + gaiaSetPoint (linestr1->Coords, 1, 2, 4); /* line1, second point */ + gaiaSetPoint (linestr2->Coords, 0, 4, -2); /* line2, first point */ + gaiaSetPoint (linestr2->Coords, 1, 1, 5); /* line2, second point */ + gaiaSetPoint (linestr2->Coords, 2, 3, 4); /* line2, third point */ + result = gaiaLinestringEquals (linestr1, linestr2); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -2; + goto exit; + } + + /* identical lines */ + gaiaFreeLinestring (linestr2); + linestr2 = gaiaCloneLinestring (linestr1); + result = gaiaLinestringEquals (linestr1, linestr2); + if (result != 1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -3; + goto exit; + } + + /* not quite identical lines */ + gaiaSetPoint (linestr2->Coords, 1, 2, -4); + result = gaiaLinestringEquals (linestr1, linestr2); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -4; + goto exit; + } + + /* zero length polygon */ + result = gaiaPolygonEquals (poly1, poly2); + if (result != 1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -5; + goto exit; + } + + /* matching polygons */ + gaiaFreePolygon (poly1); + gaiaFreePolygon (poly2); + poly1 = gaiaAllocPolygon (5, 0); + gaiaSetPoint (poly1->Exterior->Coords, 0, 0, 0); + gaiaSetPoint (poly1->Exterior->Coords, 1, 10, 0); + gaiaSetPoint (poly1->Exterior->Coords, 2, 10, 10); + gaiaSetPoint (poly1->Exterior->Coords, 3, 0, 10); + gaiaSetPoint (poly1->Exterior->Coords, 4, 0, 0); + poly2 = gaiaClonePolygon (poly1); + result = gaiaPolygonEquals (poly1, poly2); + if (result != 1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -6; + goto exit; + } + + /* not quite matching polygons */ + gaiaSetPoint (poly2->Exterior->Coords, 2, 10, -10); + result = gaiaPolygonEquals (poly1, poly2); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -7; + goto exit; + } + + /* polygons with different numbers of interiors */ + gaiaFreePolygon (poly2); + poly2 = gaiaAllocPolygon (5, 1); + gaiaSetPoint (poly2->Exterior->Coords, 0, 0, 0); + gaiaSetPoint (poly2->Exterior->Coords, 1, 10, 0); + gaiaSetPoint (poly2->Exterior->Coords, 2, 10, 10); + gaiaSetPoint (poly2->Exterior->Coords, 3, 0, 10); + gaiaSetPoint (poly2->Exterior->Coords, 4, 0, 0); + interior = gaiaAddInteriorRing (poly2, 0, 4); + gaiaSetPoint (interior->Coords, 0, 1, 1); + gaiaSetPoint (interior->Coords, 1, 3, 2); + gaiaSetPoint (interior->Coords, 2, 3, 1); + gaiaSetPoint (interior->Coords, 3, 1, 1); + result = gaiaPolygonEquals (poly1, poly2); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -8; + goto exit; + } + + /* same exteriors and interiors */ + gaiaFreePolygon (poly1); + poly1 = gaiaClonePolygon (poly2); + result = gaiaPolygonEquals (poly1, poly2); + if (result != 1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -9; + goto exit; + } + + /* slightly different interiors */ + gaiaSetPoint (interior->Coords, 2, 3, 3); + result = gaiaPolygonEquals (poly1, poly2); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -10; + goto exit; + } + + /* different number of exterior points */ + gaiaFreePolygon (poly2); + poly2 = gaiaAllocPolygon (4, 1); + gaiaSetPoint (poly2->Exterior->Coords, 0, 0, 0); + gaiaSetPoint (poly2->Exterior->Coords, 1, 10, 0); + gaiaSetPoint (poly2->Exterior->Coords, 2, 10, 10); + gaiaSetPoint (poly2->Exterior->Coords, 3, 0, 0); + interior = gaiaAddInteriorRing (poly2, 0, 4); + gaiaSetPoint (interior->Coords, 0, 1, 1); + gaiaSetPoint (interior->Coords, 1, 3, 2); + gaiaSetPoint (interior->Coords, 2, 3, 1); + gaiaSetPoint (interior->Coords, 3, 1, 1); + result = gaiaPolygonEquals (poly1, poly2); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -11; + goto exit; + } + + /* same exterior points, but different number of points on first interior */ + gaiaFreePolygon (poly2); + poly2 = gaiaAllocPolygon (5, 1); + gaiaSetPoint (poly2->Exterior->Coords, 0, 0, 0); + gaiaSetPoint (poly2->Exterior->Coords, 1, 10, 0); + gaiaSetPoint (poly2->Exterior->Coords, 2, 10, 10); + gaiaSetPoint (poly2->Exterior->Coords, 3, 0, 10); + gaiaSetPoint (poly2->Exterior->Coords, 4, 0, 0); + interior = gaiaAddInteriorRing (poly2, 0, 5); + gaiaSetPoint (interior->Coords, 0, 1, 1); + gaiaSetPoint (interior->Coords, 1, 3, 2); + gaiaSetPoint (interior->Coords, 2, 3, 3); + gaiaSetPoint (interior->Coords, 3, 1, 3); + gaiaSetPoint (interior->Coords, 4, 1, 1); + result = gaiaPolygonEquals (poly1, poly2); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -12; + goto exit; + } + + /* Cleanup and exit */ + exit: + gaiaFreeLinestring (linestr1); + gaiaFreeLinestring (linestr2); + gaiaFreePolygon (poly1); + gaiaFreePolygon (poly2); + + spatialite_shutdown (); + return returnValue; +} diff --git a/src/spatialite/test/check_fdo1.c b/src/spatialite/test/check_fdo1.c new file mode 100644 index 0000000..9e7c0e8 --- /dev/null +++ b/src/spatialite/test/check_fdo1.c @@ -0,0 +1,587 @@ +/* + + check_fdo1.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +#include "spatialite/gaiageo.h" + +#ifndef OMIT_GEOS /* including GEOS */ +#include +#endif + +static int +do_test (int legacy_mode) +{ +#ifndef OMIT_GEOS /* only if GEOS is supported */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + const char *sql; + int i; + char **results; + int rows; + int columns; + void *cache = NULL; + if (!legacy_mode) + cache = spatialite_alloc_connection (); + else + spatialite_init (0); + + ret = system ("cp sql_stmt_tests/testFDO.sqlite testFDO.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy testFDO.sqlite database\n"); + return -1001; + } + + ret = + sqlite3_open_v2 ("testFDO.sqlite", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open testFDO.sqlite db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1000; + } + + if (!legacy_mode) + spatialite_init_ex (handle, cache, 0); + +/* FDO start-up */ + sql = "SELECT AutoFDOStart()"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -1; + } + +/* testing aggregate Union() PointZ WKT "p02" */ + sql = "SELECT AsText(ST_Union(WKT_GEOMETRY)) FROM fdo_p02"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -2; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -3; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -4; + } + if (strcmp + (results[1], + "MULTIPOINT Z(664350.17954 5171957.915655 314.52, 664642.363686 5169415.339218 294.37, 664964.447225 5170571.245732 318.25)") + != 0) + { + fprintf (stderr, "Unexpected error: invalid result %s\n", results[1]); + return -5; + } + sqlite3_free_table (results); + +/* testing aggregate Union() PointZ WKB "p03" */ + sql = + "SELECT AsText(ST_Union(GEOMETRY)) FROM fdo_p03 WHERE text_dil IS NULL AND OGC_FID < 3"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -6; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -7; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -8; + } + if (strcmp + (results[1], + "MULTIPOINT Z(665216.306643 5169825.707161 296.06, 665224.506512 5169827.907054 296.16)") + != 0) + { + fprintf (stderr, "Unexpected error: invalid result |%s|\n", + results[1]); + return -9; + } + sqlite3_free_table (results); + +/* testing aggregate Union() PointZ SpatiaLite "p05" */ + sql = + "SELECT AsText(ST_Union(GEOMETRY)) FROM fdo_p05 WHERE text_dil IS NULL AND OGC_FID < 3"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -10; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -11; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result %s\n", results[1]); + return -12; + } + if (strcmp + (results[1], + "MULTIPOINT Z(667687.978175 5169352.045712 583.140015, 667710.008189 5169402.894615 589.849976)") + != 0) + { + fprintf (stderr, "Unexpected error: invalid result b|%s|\n", + results[1]); + return -13; + } + sqlite3_free_table (results); + +/* testing Sum(GLength()) LinestringZ WKT "l05" */ + sql = "SELECT Sum(GLength(WKT_GEOMETRY)) FROM fdo_l05"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -14; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -15; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -16; + } + if (strncmp (results[1], "59.417763", 9) != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -17; + } + sqlite3_free_table (results); + +/* testing Sum(GLength()) LinestringZ WKB "l06" */ + sql = "SELECT Sum(GLength(GEOMETRY)) FROM fdo_l06"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -18; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -19; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -20; + } + if (strncmp (results[1], "273.076064", 10) != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -21; + } + sqlite3_free_table (results); + +/* testing Sum(GLength()) LinestringZ SpatiaLite "l07" */ + sql = "SELECT Sum(GLength(GEOMETRY)) FROM fdo_l07"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -22; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -23; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -24; + } + if (strncmp (results[1], "219.459808", 10) != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -25; + } + sqlite3_free_table (results); + +/* testing Sum(Area()) PolygonZ WKT "f04" */ + sql = "SELECT Sum(Area(WKT_GEOMETRY)) FROM fdo_f04"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -26; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -27; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -28; + } + if (strncmp (results[1], "9960.931239", 11) != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -29; + } + sqlite3_free_table (results); + +/* testing Sum(Area()) PolygonZ WKB "f05" */ + sql = "SELECT Sum(Area(GEOMETRY)) FROM fdo_f05"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -30; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -31; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -32; + } + if (strncmp (results[1], "69972.113393", 12) != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -33; + } + sqlite3_free_table (results); + +/* testing Sum(Area()) PolygonZ SpatiaLite "f06" */ + sql = "SELECT Sum(Area(GEOMETRY)) FROM fdo_f06"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -34; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -35; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -36; + } + if (strncmp (results[1], "1125.064396", 11) != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -37; + } + sqlite3_free_table (results); + +/* testing IsValid() LinestringZ WKB "l06" */ + sql = "SELECT IsValid(GEOMETRY) FROM fdo_l06"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -38; + } + if ((rows != 12) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -39; + } + for (i = 1; i <= rows; i++) + { + if (results[i] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -40; + } + if (strcmp (results[i], "0") == 0) + { + const char *geos_msg; + if (legacy_mode) + geos_msg = gaiaGetGeosErrorMsg (); + else + geos_msg = gaiaGetGeosErrorMsg_r (cache); + if (geos_msg == NULL) + { + if (legacy_mode) + geos_msg = gaiaGetGeosWarningMsg (); + else + geos_msg = gaiaGetGeosWarningMsg_r (cache); + } + if (geos_msg == NULL) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -41; + } + } + } + sqlite3_free_table (results); + +/* testing IsValid() PolygonZ WKT "f04" */ + sql = "SELECT IsValid(WKT_GEOMETRY) FROM fdo_f04"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -42; + } + if ((rows != 16) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -43; + } + for (i = 1; i <= rows; i++) + { + if (results[i] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -44; + } + if (strcmp (results[i], "0") == 0) + { + const char *geos_msg; + if (legacy_mode) + geos_msg = gaiaGetGeosErrorMsg (); + else + geos_msg = gaiaGetGeosErrorMsg_r (cache); + if (geos_msg == NULL) + { + if (legacy_mode) + geos_msg = gaiaGetGeosWarningMsg (); + else + geos_msg = gaiaGetGeosWarningMsg_r (cache); + } + if (geos_msg == NULL) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -45; + } + } + } + sqlite3_free_table (results); + +/* testing IsValid() PolygonZ WKB "f05" */ + sql = "SELECT IsValid(GEOMETRY) FROM fdo_f05"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -46; + } + if ((rows != 13) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -47; + } + for (i = 1; i <= rows; i++) + { + if (results[i] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -48; + } + if (strcmp (results[i], "0") == 0) + { + const char *geos_msg; + if (legacy_mode) + geos_msg = gaiaGetGeosErrorMsg (); + else + geos_msg = gaiaGetGeosErrorMsg_r (cache); + if (geos_msg == NULL) + { + if (legacy_mode) + geos_msg = gaiaGetGeosWarningMsg (); + else + geos_msg = gaiaGetGeosWarningMsg_r (cache); + } + if (geos_msg == NULL) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -49; + } + } + } + sqlite3_free_table (results); + +/* testing DOUBLE and TEXT columns */ + sql = "SELECT datum, hoehe FROM fdo_p05 WHERE OGC_FID = 5"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -50; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -51; + } + if (results[2] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -52; + } + if (strcmp (results[2], "1997/03/07") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -53; + } + if (results[3] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -54; + } + if (strcmp (results[3], "277.55") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -54; + } + sqlite3_free_table (results); + +/* FDO shut-down */ + sql = "SELECT AutoFDOStop()"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -55; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -56; + } + + spatialite_cleanup_ex (cache); + ret = unlink ("testFDO.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove testFDO database\n"); + return -57; + } +#endif /* end GEOS conditional */ + + return 0; +} + +int +main (int argc, char *argv[]) +{ + int ret; + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + fprintf (stderr, "********* testing in current mode\n"); + ret = do_test (0); + if (ret != 0) + return ret; + + fprintf (stderr, "********* testing in legacy mode\n"); + ret = do_test (1); + if (ret != 0) + return ret; + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_fdo2.c b/src/spatialite/test/check_fdo2.c new file mode 100644 index 0000000..219975c --- /dev/null +++ b/src/spatialite/test/check_fdo2.c @@ -0,0 +1,1038 @@ +/* + + check_fdo2.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + const char *sql; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + +/* FDO initialization */ + sql = "SELECT InitFDOSpatialMetadata()"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -2; + } + +/* creating a Point 2D WKT table */ + sql = "CREATE TABLE pt_2d_wkt (id INTEGER, name TEXT, value DOUBLE)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -3; + } + sql = "SELECT AddFDOGeometryColumn('pt_2d_wkt', 'g', -1, 1, 2, 'WKT')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -4; + } + +/* creating a Point 3D WKT table */ + sql = "CREATE TABLE pt_3d_wkt (id INTEGER, pic1 BLOB, pic2 BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -5; + } + sql = "SELECT AddFDOGeometryColumn('pt_3d_wkt', 'g', -1, 1, 3, 'WKT')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -6; + } + +/* creating a Point 2D WKB table */ + sql = "CREATE TABLE pt_2d_wkb (id INTEGER)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -6; + } + sql = "SELECT AddFDOGeometryColumn('pt_2d_wkb', 'g', -1, 1, 2, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -7; + } + +/* creating a Point 3D WKB table */ + sql = "CREATE TABLE pt_3d_wkb (id INTEGER)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -8; + } + sql = "SELECT AddFDOGeometryColumn('pt_3d_wkb', 'g', -1, 1, 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -9; + } + +/* creating a Point 3D WKB table */ + sql = "CREATE TABLE pt_3d_spl (id INTEGER)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -10; + } + sql = + "SELECT AddFDOGeometryColumn('pt_3d_spl', 'g', -1, 1, 3, 'SPATIALITE')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -11; + } + +/* creating a Linestring 3D WKT table */ + sql = "CREATE TABLE ln_3d_wkt (id INTEGER)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -12; + } + sql = "SELECT AddFDOGeometryColumn('ln_3d_wkt', 'g', -1, 2, 3, 'WKT')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -13; + } + +/* creating a Linestring 3D WKB table */ + sql = "CREATE TABLE ln_3d_wkb (id INTEGER)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -14; + } + sql = "SELECT AddFDOGeometryColumn('ln_3d_wkb', 'g', -1, 2, 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -15; + } + +/* creating a Polygon 3D WKT table */ + sql = "CREATE TABLE pg_3d_wkt (id INTEGER)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -16; + } + sql = "SELECT AddFDOGeometryColumn('pg_3d_wkt', 'g', -1, 3, 3, 'WKT')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -17; + } + +/* creating a Polygon 3D WKB table */ + sql = "CREATE TABLE pg_3d_wkb (id INTEGER)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -18; + } + sql = "SELECT AddFDOGeometryColumn('pg_3d_wkb', 'g', -1, 3, 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -19; + } + +/* creating a MultiPoint 3D WKT table */ + sql = "CREATE TABLE mpt_3d_wkt (id INTEGER)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -20; + } + sql = "SELECT AddFDOGeometryColumn('mpt_3d_wkt', 'g', -1, 4, 3, 'WKT')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -21; + } + +/* creating a MultiPoint 3D WKB table */ + sql = "CREATE TABLE mpt_3d_wkb (id INTEGER)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -22; + } + sql = "SELECT AddFDOGeometryColumn('mpt_3d_wkb', 'g', -1, 4, 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -23; + } + +/* creating a MultiLinestring 3D WKT table */ + sql = "CREATE TABLE mln_3d_wkt (id INTEGER)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -24; + } + sql = "SELECT AddFDOGeometryColumn('mln_3d_wkt', 'g', -1, 5, 3, 'WKT')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -25; + } + +/* creating a MultiLinestring 3D WKB table */ + sql = "CREATE TABLE mln_3d_wkb (id INTEGER)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -26; + } + sql = "SELECT AddFDOGeometryColumn('mln_3d_wkb', 'g', -1, 5, 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -27; + } + +/* creating a MultiPolygon 3D WKT table */ + sql = "CREATE TABLE mpg_3d_wkt (id INTEGER)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -28; + } + sql = "SELECT AddFDOGeometryColumn('mpg_3d_wkt', 'g', -1, 6, 3, 'WKT')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -29; + } + +/* creating a MultiPolygon 3D WKB table */ + sql = "CREATE TABLE mpg_3d_wkb (id INTEGER)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -30; + } + sql = "SELECT AddFDOGeometryColumn('mpg_3d_wkb', 'g', -1, 6, 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -31; + } + +/* creating a GeometryCollection 3D WKT table */ + sql = "CREATE TABLE gcoll_3d_wkt (id INTEGER)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -32; + } + sql = "SELECT AddFDOGeometryColumn('gcoll_3d_wkt', 'g', -1, 7, 3, 'WKT')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -33; + } + +/* creating a GeometryCollection 3D WKB table */ + sql = "CREATE TABLE gcoll_3d_wkb (id INTEGER)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -34; + } + sql = "SELECT AddFDOGeometryColumn('gcoll_3d_wkb', 'g', -1, 7, 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -35; + } + +/* FDO start-up */ + sql = "SELECT AutoFDOStart()"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -36; + } + +/* Inserting into pt_2d_wkt */ + sql = + "INSERT INTO fdo_pt_2d_wkt (id, name, value, g) VALUES (1, 'alpha', 0.1, GeomFromText('POINT(1 2)', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -37; + } + +/* Updating pt_2d_wkt */ + sql = + "UPDATE fdo_pt_2d_wkt SET name = 'beta', value = 0.2, g = GeomFromText('POINT(10 20)', -1) WHERE id = 1"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -38; + } + +/* Deleting form pt_2d_wkt */ + sql = "DELETE FROM fdo_pt_2d_wkt"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -39; + } + +/* Inserting into pt_3d_wkt */ + sql = + "INSERT INTO fdo_pt_3d_wkt (id, pic1, pic2, g) VALUES (1, zeroblob(16), NULL, GeomFromText('POINTZ(1 2 3)', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -40; + } + +/* Updating pt_3d_wkt */ + sql = + "UPDATE fdo_pt_3d_wkt SET pic1 = NULL, pic2 = zeroblob(8), g = GeomFromText('POINTZ(10 20 30)', -1) WHERE id = 1"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -41; + } + +/* Inserting into pt_2d_wkb */ + sql = + "INSERT INTO fdo_pt_2d_wkb (id, g) VALUES (1, GeomFromText('POINT(1 2)', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -42; + } + +/* Updating pt_2d_wkb */ + sql = + "UPDATE fdo_pt_2d_wkb SET g = GeomFromText('POINT(10 20)', -1) WHERE id = 1"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -43; + } + +/* Inserting into pt_3d_wkb */ + sql = + "INSERT INTO fdo_pt_3d_wkb (id, g) VALUES (1, GeomFromText('POINTZ(1 2 3)', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -44; + } + +/* Updating pt_3d_wkb */ + sql = + "UPDATE fdo_pt_3d_wkb SET g = GeomFromText('POINTZ(10 20 30)', -1) WHERE id = 1"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -45; + } + +/* Inserting into pt_3d_spl */ + sql = + "INSERT INTO fdo_pt_3d_spl (id, g) VALUES (1, GeomFromText('POINTZ(1 2 3)', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -46; + } + +/* Updating pt_3d_spl */ + sql = + "UPDATE fdo_pt_3d_spl SET g = GeomFromText('POINTZ(10 20 30)', -1) WHERE id = 1"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -47; + } + +/* Inserting into ln_3d_wkt */ + sql = + "INSERT INTO fdo_ln_3d_wkt (id, g) VALUES (1, GeomFromText('LINESTRINGZ(1 2 3, 4 5 6)', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -48; + } + +/* Inserting into ln_3d_wkb */ + sql = + "INSERT INTO fdo_ln_3d_wkb (id, g) VALUES (1, GeomFromText('LINESTRINGZ(1 2 3, 4 5 6)', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -49; + } + +/* Inserting into ln_3d_wkb */ + sql = + "INSERT INTO fdo_ln_3d_wkb (id, g) VALUES (2, GeomFromText('LINESTRINGM(1 2 10, 4 5 11)', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -50; + } + +/* Inserting into ln_3d_wkb */ + sql = + "INSERT INTO fdo_ln_3d_wkb (id, g) VALUES (3, GeomFromText('LINESTRINGZM(1 2 3 10, 4 5 6 11)', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -51; + } + +/* Inserting into ln_3d_wkb */ + sql = + "INSERT INTO fdo_ln_3d_wkb (id, g) VALUES (4, GeomFromText('LINESTRING(1 2, 4 5)', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -52; + } + +/* Inserting into pg_3d_wkt */ + sql = + "INSERT INTO fdo_pg_3d_wkt (id, g) VALUES (1, GeomFromText('POLYGONZ((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 1 12 102, 11 12 103, 11 11 100))', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -53; + } + +/* Inserting into pg_3d_wkb */ + sql = + "INSERT INTO fdo_pg_3d_wkb (id, g) VALUES (1, GeomFromText('POLYGONZ((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 1 12 102, 11 12 103, 11 11 100))', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -54; + } + +/* Inserting into pg_3d_wkb */ + sql = + "INSERT INTO fdo_pg_3d_wkb (id, g) VALUES (2, GeomFromText('POLYGONZM((10 10 100 10, 15 10 101 11, 15 15 102 12, 10 15 103 13, 10 10 100 10), (11 11 100 10, 12 11 101 11, 1 12 102 12, 11 12 103 13, 11 11 100 10))', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -55; + } + +/* Inserting into pg_3d_wkb */ + sql = + "INSERT INTO fdo_pg_3d_wkb (id, g) VALUES (3, GeomFromText('POLYGONM((10 10 10, 15 10 11, 15 15 12, 10 15 13, 10 10 10), (11 11 10, 12 11 11, 1 12 12, 11 12 13, 11 11 10))', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -56; + } + +/* Inserting into pg_3d_wkb */ + sql = + "INSERT INTO fdo_pg_3d_wkb (id, g) VALUES (4, GeomFromText('POLYGON((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 1 12, 11 12, 11 11))', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -57; + } + +/* Inserting into mpt_3d_wkt */ + sql = + "INSERT INTO fdo_mpt_3d_wkt (id, g) VALUES (1, GeomFromText('MULTIPOINTZ(1 2 3, 4 5 6)', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -58; + } + +/* Inserting into mpt_3d_wkb */ + sql = + "INSERT INTO fdo_mpt_3d_wkb (id, g) VALUES (1, GeomFromText('MULTIPOINTZ(1 2 3, 4 5 6)', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -59; + } + +/* Inserting into mln_3d_wkt */ + sql = + "INSERT INTO fdo_mln_3d_wkt (id, g) VALUES (1, GeomFromText('MULTILINESTRINGZ((1 2 3, 4 5 6), (7 8 9, 10 11 12))', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -60; + } + +/* Inserting into mln_3d_wkb */ + sql = + "INSERT INTO fdo_mln_3d_wkb (id, g) VALUES (1, GeomFromText('MULTILINESTRINGZ((1 2 3, 4 5 6), (7 8 9, 10 11 12))', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -61; + } + +/* Inserting into mpg_3d_wkt */ + sql = + "INSERT INTO fdo_mpg_3d_wkt (id, g) VALUES (1, GeomFromText('MULTIPOLYGONZ(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 1 12 102, 11 12 103, 11 11 100)), ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -62; + } + +/* Inserting into mpg_3d_wkb */ + sql = + "INSERT INTO fdo_mpg_3d_wkb (id, g) VALUES (1, GeomFromText('MULTIPOLYGONZ(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 1 12 102, 11 12 103, 11 11 100)), ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -63; + } + +/* Inserting into gcoll_3d_wkt */ + sql = + "INSERT INTO fdo_gcoll_3d_wkt (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(10 10 100), LINESTRINGZ(5 5 10, 6 6 11), POLYGONZ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -64; + } + +/* Inserting into gcoll_3d_wkb */ + sql = + "INSERT INTO fdo_gcoll_3d_wkb (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONZ(POINZ(10 10 100), LINESTRINGZ(5 5 10, 6 6 11), POLYGONZ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', -1))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -65; + } + +/* checking MultiPoint 3D WKT */ + sql = "SELECT AsText(g) FROM fdo_mpt_3d_wkt"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -66; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -67; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -68; + } + if (strcmp (results[1], "MULTIPOINT Z(1 2 3, 4 5 6)") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -69; + } + sqlite3_free_table (results); + +/* checking MultiLinestring 3D WKT */ + sql = "SELECT AsText(g) FROM fdo_mln_3d_wkt"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -70; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -71; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -72; + } + if (strcmp + (results[1], + "MULTILINESTRING Z((1 2 3, 4 5 6), (7 8 9, 10 11 12))") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -73; + } + sqlite3_free_table (results); + +/* checking MultiPolygon 3D WKT */ + sql = "SELECT AsText(g) FROM fdo_mpg_3d_wkt"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -74; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -75; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -76; + } + if (strcmp + (results[1], + "MULTIPOLYGON Z(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 1 12 102, 11 12 103, 11 11 100)), ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))") + != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -77; + } + sqlite3_free_table (results); + +/* checking GeometryCollection 3D WKT */ + sql = "SELECT AsText(g) FROM fdo_gcoll_3d_wkt"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -78; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -79; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -80; + } + if (strcmp + (results[1], + "GEOMETRYCOLLECTION Z(POINT Z(10 10 100), LINESTRING Z(5 5 10, 6 6 11), POLYGON Z((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))") + != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -81; + } + sqlite3_free_table (results); + +/* dropping an FDO virtual table */ + sql = "DROP TABLE fdo_mpt_3d_wkt"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -82; + } + +/* discarding an FDO Geometry column */ + sql = "SELECT DiscardFDOGeometryColumn('fdo_mpt_3d_wkt', 'g')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -83; + } + sql = "SELECT DiscardFDOGeometryColumn(1, 'g')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -84; + } + sql = "SELECT DiscardFDOGeometryColumn('mpt_3d_wkt', 2)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -85; + } + +/* recovering an FDO Geometry column */ + sql = "SELECT RecoverFDOGeometryColumn('mpt_3d_wkt', 'g', -1, 4, 3, 'WKT')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -86; + } + +/* FDO shut-down */ + sql = "SELECT AutoFDOStop()"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -66; + } + + sql = "SELECT AddFDOGeometryColumn(1, 'g', -1, 7, 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -67; + } + sql = "SELECT AddFDOGeometryColumn('a', 2, -1, 7, 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -68; + } + sql = "SELECT AddFDOGeometryColumn('a', 'g', -1.5, 7, 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -69; + } + sql = "SELECT AddFDOGeometryColumn('a', 'g', -1, 'a', 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -70; + } + sql = "SELECT AddFDOGeometryColumn('a', 'g', -1, 7, 'a', 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -71; + } + sql = "SELECT AddFDOGeometryColumn('a', 'g', -1, 17, 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -72; + } + sql = "SELECT AddFDOGeometryColumn('a', 'g', -1, 7, 13, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -73; + } + sql = "SELECT AddFDOGeometryColumn('a', 'g', -1, 7, 3, 'DUMMY')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -74; + } + + sql = "SELECT RecoverFDOGeometryColumn(1, 'g', -1, 7, 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -75; + } + sql = "SELECT RecoverFDOGeometryColumn('a', 2, -1, 7, 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -76; + } + sql = "SELECT RecoverFDOGeometryColumn('a', 'g', -1.5, 7, 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -77; + } + sql = "SELECT RecoverFDOGeometryColumn('a', 'g', -1, 'a', 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -78; + } + sql = "SELECT RecoverFDOGeometryColumn('a', 'g', -1, 7, 'a', 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -79; + } + sql = "SELECT RecoverFDOGeometryColumn('a', 'g', -1, 17, 3, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -80; + } + sql = "SELECT RecoverFDOGeometryColumn('a', 'g', -1, 7, 13, 'WKB')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -81; + } + sql = "SELECT RecoverFDOGeometryColumn('a', 'g', -1, 7, 3, 'DUMMY')"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -82; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -83; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_fdo3.c b/src/spatialite/test/check_fdo3.c new file mode 100644 index 0000000..a85c30e --- /dev/null +++ b/src/spatialite/test/check_fdo3.c @@ -0,0 +1,218 @@ +/* + + check_fdo3.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +#include "spatialite/gaiageo.h" + +#ifndef OMIT_GEOS /* including GEOS */ +#include +#endif + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_GEOS /* only if GEOS is supported */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + const char *sql; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = system ("cp sql_stmt_tests/testFGF.sqlite testFGF.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy testFGF.sqlite database\n"); + return -1001; + } + ret = + sqlite3_open_v2 ("testFGF.sqlite", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open testFGF.sqlite db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1000; + } + + spatialite_init_ex (handle, cache, 0); + +/* FDO start-up */ + sql = "SELECT AutoFDOStart()"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -1; + } + +/* testing aggregate Union() Point FGF "HouseNumbers" */ + sql = + "SELECT AsText(ST_Union(Geometry)) FROM fdo_HouseNumbers WHERE TEXT_LABEL LIKE '11%'"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -2; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -3; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -4; + } + if (strcmp + (results[1], "MULTIPOINT(430417.1 5448290.9, 430666.6 5448125.4)") != 0) + { + fprintf (stderr, "Unexpected error: invalid result |%s|\n", + results[1]); + return -5; + } + sqlite3_free_table (results); + +/* testing Sum(GLength()) Linestring FGF "Centrerlines" */ + sql = "SELECT Sum(GLength(Geometry)) FROM fdo_Centerlines"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -6; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -7; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -8; + } + if (strncmp (results[1], "895.3351", 7) != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -9; + } + sqlite3_free_table (results); + +/* testing Sum(Area()) Polygon FGF "AssessmentParcels" */ + sql = "SELECT Sum(Area(Geometry)) FROM fdo_AssessmentParcels"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -10; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -11; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -12; + } + if (strncmp (results[1], "9022.1792", 9) != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -13; + } + sqlite3_free_table (results); + +/* FDO shut-down */ + sql = "SELECT AutoFDOStop()"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -14; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -15; + } + + spatialite_cleanup_ex (cache); + ret = unlink ("testFGF.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove testFGF database\n"); + return -16; + } +#endif /* end GEOS conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_fdo_bufovflw.c b/src/spatialite/test/check_fdo_bufovflw.c new file mode 100644 index 0000000..5eb9624 --- /dev/null +++ b/src/spatialite/test/check_fdo_bufovflw.c @@ -0,0 +1,345 @@ +/* + + check_fdo2.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + int suffix_len = 16 * 1024; /* 16 KB suffix */ + char *suffix; + char *pt_2d_wkt; + char *pt_3d_wkt; + char *geometry; + char *sql; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + +/* FDO initialization */ + sql = "SELECT InitFDOSpatialMetadata()"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -2; + } + +/* setting up very long table and column names */ + suffix = malloc (suffix_len); + memset (suffix, 'z', suffix_len); + suffix[suffix_len - 1] = '\0'; + + pt_2d_wkt = sqlite3_mprintf ("pt_2d_wkt_%s", suffix); + pt_3d_wkt = sqlite3_mprintf ("pt_3d_wkt_%s", suffix); + geometry = sqlite3_mprintf ("geometry_%s", suffix); + +/* creating a Point 2D WKT table */ + sql = + sqlite3_mprintf + ("CREATE TABLE %s (id INTEGER, name TEXT, value DOUBLE)", pt_2d_wkt); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -3; + } + sql = + sqlite3_mprintf ("SELECT AddFDOGeometryColumn(%Q, %Q, -1, 1, 2, 'WKT')", + pt_2d_wkt, geometry); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -4; + } + +/* creating a Point 3D WKT table */ + sql = + sqlite3_mprintf ("CREATE TABLE %s (id INTEGER, pic1 BLOB, pic2 BLOB)", + pt_3d_wkt); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -5; + } + sql = + sqlite3_mprintf ("SELECT AddFDOGeometryColumn(%Q, %Q, -1, 1, 3, 'WKT')", + pt_3d_wkt, geometry); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -6; + } + +/* FDO start-up */ + sql = "SELECT AutoFDOStart()"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -7; + } + +/* Inserting into pt_2d_wkt */ + sql = sqlite3_mprintf ("INSERT INTO %s (id, name, value, %s) VALUES " + "(1, 'alpha', 0.1, GeomFromText('POINT(1 2)', -1))", + pt_2d_wkt, geometry); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -8; + } + +/* Inserting (take two) into pt_2d_wkt */ + sql = sqlite3_mprintf ("INSERT INTO %s (id, name, value, %s) VALUES " + "(2, 'beta', 0.2, GeomFromText('POINT(2 3)', -1))", + pt_2d_wkt, geometry); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -9; + } + +/* Updating pt_2d_wkt */ + sql = sqlite3_mprintf ("UPDATE %s SET name = 'beta', value = 0.2, " + "%s = GeomFromText('POINT(10 20)', -1) WHERE id = 1", + pt_2d_wkt, geometry); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -10; + } + +/* Deleting form pt_2d_wkt */ + sql = sqlite3_mprintf ("DELETE FROM %s WHERE id = 1", pt_2d_wkt); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -11; + } + +/* Inserting into pt_3d_wkt */ + sql = sqlite3_mprintf ("INSERT INTO %s (id, pic1, pic2, %s) VALUES " + "(1, zeroblob(16), NULL, GeomFromText('POINTZ(1 2 3)', -1))", + pt_3d_wkt, geometry); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -12; + } + +/* checking pt_2d_wkt */ + sql = sqlite3_mprintf ("SELECT AsText(%s) FROM %s", geometry, pt_2d_wkt); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -13; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -14; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -15; + } + if (strcmp (results[1], "POINT(2 3)") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -16; + } + sqlite3_free_table (results); + +/* checking pt_3d_wkt */ + sql = sqlite3_mprintf ("SELECT AsText(%s) FROM %s", geometry, pt_3d_wkt); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -17; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -18; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -19; + } + if (strcmp (results[1], "POINT Z(1 2 3)") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -20; + } + sqlite3_free_table (results); + +/* dropping an FDO virtual table */ + sql = sqlite3_mprintf ("DROP TABLE %s", pt_2d_wkt); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -21; + } + +/* discarding an FDO Geometry column */ + sql = + sqlite3_mprintf ("SELECT DiscardFDOGeometryColumn(%Q, %Q)", pt_3d_wkt, + geometry); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -22; + } + +/* recovering an FDO Geometry column */ + sql = + sqlite3_mprintf + ("SELECT RecoverFDOGeometryColumn(%Q, %Q, -1, 1, 3, 'WKT')", pt_3d_wkt, + geometry); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -23; + } + +/* FDO shut-down */ + sql = "SELECT AutoFDOStop()"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -24; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -25; + } + + spatialite_cleanup_ex (cache); + + sqlite3_free (pt_2d_wkt); + sqlite3_free (pt_3d_wkt); + sqlite3_free (geometry); + free (suffix); + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_gaia_utf8.c b/src/spatialite/test/check_gaia_utf8.c new file mode 100644 index 0000000..5fda3b9 --- /dev/null +++ b/src/spatialite/test/check_gaia_utf8.c @@ -0,0 +1,132 @@ +/* + + check_gaia_utf8.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define _GNU_SOURCE +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" +#include "spatialite/gaiaaux.h" + +#ifdef _WIN32 +#include "asprintf4win.h" +#endif + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + void *converter; + char *test_str1; + int err; + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + asprintf (&test_str1, "Hello World"); + gaiaConvertCharset (&test_str1, "ASCII", "UTF-8"); + if (strcmp (test_str1, "Hello World") != 0) + { + fprintf (stderr, "bad ASCII to UTF-8 conversion: %s\n", test_str1); + free (test_str1); + return -1; + } + free (test_str1); + +#if 0 + /* TODO: this will cause a buffer overflow */ + asprintf (&test_str1, "Hello World"); + gaiaConvertCharset (&test_str1, "ASCII", "UTF-16LE"); + if (memcmp (test_str1, "H\0e\0l\0l\0o\0 \0W\0o\0r\0l\0d\0\0\0", 24) != 0) + { + fprintf (stderr, "bad ASCII to UTF-16LE conversion\n"); + free (test_str1); + return -2; + } + free (test_str1); +#endif + + converter = gaiaCreateUTF8Converter ("CP1252"); + if (!converter) + { + fprintf (stderr, "null UTF8 converter\n"); + return -3; + } + + test_str1 = + gaiaConvertToUTF8 (converter, "Hello world", strlen ("Hello world"), + &err); + if (memcmp ("Hello world", test_str1, strlen ("Hello world") + 1) != 0) + { + fprintf (stderr, "bad conversion to UTF8: %s\n", test_str1); + free (test_str1); + return -4; + } + free (test_str1); + + gaiaFreeUTF8Converter (converter); + converter = NULL; + /* test null converter */ + gaiaFreeUTF8Converter (converter); + + test_str1 = + gaiaConvertToUTF8 (converter, "Hello world", strlen ("Hello world"), + &err); + if ((test_str1 != NULL) || (err != 1)) + { + fprintf (stderr, "unexpected null converter result: %s, %i\n", + test_str1, err); + return -5; + } + + /* there is no sane way to test this automatically */ + printf ("Local codeset: %s\n", gaiaGetLocaleCharset ()); +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_gaia_util.c b/src/spatialite/test/check_gaia_util.c new file mode 100644 index 0000000..0609a74 --- /dev/null +++ b/src/spatialite/test/check_gaia_util.c @@ -0,0 +1,489 @@ +/* + + check_gaia_util.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define _GNU_SOURCE +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" +#include "spatialite/gaiaaux.h" + +#ifdef _WIN32 +#include "asprintf4win.h" +#endif + +int +main (int argc, char *argv[]) +{ + int result; + char *test_str1; + char *quoted_str; + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + result = gaiaIsReservedSqliteName ("AUTOINCREMENT"); + if (!result) + { + fprintf (stderr, + "gaiaIsReservedSqliteName() fail for AUTOINCREMENT: %i\n", + result); + return -1; + } + + result = gaiaIsReservedSqliteName ("AUTOINCREMEN"); + if (result) + { + fprintf (stderr, + "gaiaIsReservedSqliteName() fail for AUTOINCREMEN: %i\n", + result); + return -2; + } + + result = gaiaIsReservedSqliteName ("AUTOINCREMENTED"); + if (result) + { + fprintf (stderr, + "gaiaIsReservedSqliteName() fail for AUTOINCREMENT: %i\n", + result); + return -3; + } + + result = gaiaIsReservedSqliteName ("foo"); + if (result) + { + fprintf (stderr, "gaiaIsReservedSqliteName() fail for foo: %i\n", + result); + return -4; + } + + result = gaiaIsReservedSqliteName ("ALL"); /* first item */ + if (!result) + { + fprintf (stderr, "gaiaIsReservedSqliteName() fail for ALL: %i\n", + result); + return -5; + } + + result = gaiaIsReservedSqliteName ("WHERE"); /* last item */ + if (!result) + { + fprintf (stderr, "gaiaIsReservedSqliteName() fail for WHERE: %i\n", + result); + return -6; + } + + result = gaiaIsReservedSqliteName ("autoincrement"); + if (!result) + { + fprintf (stderr, + "gaiaIsReservedSqliteName() fail for autoincrement: %i\n", + result); + return -7; + } + + result = gaiaIsReservedSqlName ("SELECT"); + if (!result) + { + fprintf (stderr, "gaiaIsReservedSqlName() fail for SELECT: %i\n", + result); + return -8; + } + + result = gaiaIsReservedSqlName ("select"); + if (!result) + { + fprintf (stderr, "gaiaIsReservedSqlName() fail for select: %i\n", + result); + return -9; + } + + result = gaiaIsReservedSqlName ("foo"); + if (result) + { + fprintf (stderr, "gaiaIsReservedSqlName() fail for foo: %i\n", + result); + return -10; + } + + result = gaiaIsReservedSqlName ("ABSOLUTE"); + if (!result) + { + fprintf (stderr, "gaiaIsReservedSqlName() fail for ABSOLUTE: %i\n", + result); + return -11; + } + + result = gaiaIsReservedSqlName ("ZONE"); + if (!result) + { + fprintf (stderr, "gaiaIsReservedSqlName() fail for ZONE: %i\n", + result); + return -12; + } + + result = gaiaIsReservedSqlName ("SELECTED"); + if (result) + { + fprintf (stderr, "gaiaIsReservedSqlName() fail for SELECTED: %i\n", + result); + return -13; + } + + result = gaiaIsReservedSqlName ("SELEC"); + if (result) + { + fprintf (stderr, "gaiaIsReservedSqlName() fail for SELEC: %i\n", + result); + return -14; + } + + result = gaiaIllegalSqlName (NULL); + if (!result) + { + fprintf (stderr, "gaiaIllegalSqlName() fail for (NULL): %i\n", + result); + return -15; + } + + result = gaiaIllegalSqlName ("a"); + if (result) + { + fprintf (stderr, "gaiaIllegalSqlName() fail for a: %i\n", result); + return -16; + } + result = gaiaIllegalSqlName ("-"); + if (!result) + { + fprintf (stderr, "gaiaIllegalSqlName() fail for -: %i\n", result); + return -17; + } + result = gaiaIllegalSqlName ("AbbcdE0187r"); + if (result) + { + fprintf (stderr, "gaiaIllegalSqlName() fail for AbbcdE0187r: %i\n", + result); + return -18; + } + result = gaiaIllegalSqlName ("AbbcdE0187+"); + if (!result) + { + fprintf (stderr, "gaiaIllegalSqlName() fail for AbbcdE0187r+: %i\n", + result); + return -19; + } + result = gaiaIllegalSqlName (""); + if (!result) + { + fprintf (stderr, "gaiaIllegalSqlName() fail for (empty): %i\n", + result); + return -20; + } + result = gaiaIllegalSqlName ("_ABCedFg"); + if (!result) + { + fprintf (stderr, "gaiaIllegalSqlName() fail for (empty): %i\n", + result); + return -21; + } + + asprintf (&test_str1, "SELECT %s from %s;", "Foo", "Bar"); + gaiaCleanSqlString (test_str1); + if (strcmp (test_str1, "SELECT Foo from Bar;") != 0) + { + fprintf (stderr, "gaiaCleanSqlString failure: %s\n", test_str1); + free (test_str1); + return -22; + } + free (test_str1); + + asprintf (&test_str1, "SELECT %s from %s; ", "Foo", "Bar"); + gaiaCleanSqlString (test_str1); + if (strcmp (test_str1, "SELECT Foo from Bar;") != 0) + { + fprintf (stderr, "gaiaCleanSqlString failure: %s\n", test_str1); + free (test_str1); + return -23; + } + free (test_str1); + + asprintf (&test_str1, "SELECT %s from %s; ", "Foo", "'"); + gaiaCleanSqlString (test_str1); + if (strcmp (test_str1, "SELECT Foo from '';") != 0) + { + fprintf (stderr, "gaiaCleanSqlString failure: %s\n", test_str1); + free (test_str1); + return -24; + } + free (test_str1); + +#if 0 + /* TODO: This will cause a buffer overflow */ + asprintf (&test_str1, "SELECT %s from %s;", "Foo", "'"); + gaiaCleanSqlString (test_str1); + if (strcmp (test_str1, "SELECT Foo from '';") != 0) + { + fprintf (stderr, "gaiaCleanSqlString failure: %s\n", test_str1); + free (test_str1); + return -25; + } + free (test_str1); +#endif + + asprintf (&test_str1, " "); + gaiaCleanSqlString (test_str1); + if (strcmp (test_str1, "") != 0) + { + fprintf (stderr, "gaiaCleanSqlString failure: %s\n", test_str1); + free (test_str1); + return -26; + } + free (test_str1); + + asprintf (&test_str1, "SELECT %s from %s;", "Foo", "Bar"); + quoted_str = gaiaSingleQuotedSql (test_str1); + if (strcmp (quoted_str, "SELECT Foo from Bar;") != 0) + { + fprintf (stderr, "gaiaSingleQuotedSql failure: %s\n", quoted_str); + free (test_str1); + free (quoted_str); + return -27; + } + free (test_str1); + free (quoted_str); + + asprintf (&test_str1, "SELECT %s from %s; ", "Foo", "Bar"); + quoted_str = gaiaSingleQuotedSql (test_str1); + if (strcmp (quoted_str, "SELECT Foo from Bar;") != 0) + { + fprintf (stderr, "gaiaSingleQuotedSql failure: %s\n", quoted_str); + free (test_str1); + free (quoted_str); + return -28; + } + free (test_str1); + free (quoted_str); + + asprintf (&test_str1, "SELECT %s from %s;", "Foo", "'"); + quoted_str = gaiaSingleQuotedSql (test_str1); + if (strcmp (quoted_str, "SELECT Foo from '';") != 0) + { + fprintf (stderr, "gaiaSingleQuotedSql failure: %s\n", quoted_str); + free (test_str1); + free (quoted_str); + return -29; + } + free (test_str1); + free (quoted_str); + + asprintf (&test_str1, "SELECT %s from %s ; ", "Foo", "Bar"); + quoted_str = gaiaSingleQuotedSql (test_str1); + if (strcmp (quoted_str, "SELECT Foo from Bar ;") != 0) + { + fprintf (stderr, "gaiaSingleQuotedSql failure: %s\n", quoted_str); + free (test_str1); + free (quoted_str); + return -30; + } + free (test_str1); + free (quoted_str); + + asprintf (&test_str1, "SELECT %s from %s;", "'", "Bar"); + quoted_str = gaiaSingleQuotedSql (test_str1); + if (strcmp (quoted_str, "SELECT '' from Bar;") != 0) + { + fprintf (stderr, "gaiaSingleQuotedSql failure: %s\n", quoted_str); + free (test_str1); + free (quoted_str); + return -31; + } + free (test_str1); + free (quoted_str); + + asprintf (&test_str1, "My Name"); + quoted_str = gaiaDoubleQuotedSql (test_str1); + if (strcmp (quoted_str, "My Name") != 0) + { + fprintf (stderr, "gaiaDoubleQuotedSql failure: %s\n", quoted_str); + free (test_str1); + free (quoted_str); + return -32; + } + free (test_str1); + free (quoted_str); + + quoted_str = gaiaDoubleQuotedSql (NULL); + if (quoted_str != NULL) + { + fprintf (stderr, "gaiaDoubleQuotedSql NULL failure: %s\n", + quoted_str); + free (quoted_str); + return -33; + } + + quoted_str = gaiaSingleQuotedSql (NULL); + if (quoted_str != NULL) + { + fprintf (stderr, "gaiaSingleQuotedSql NULL failure: %s\n", + quoted_str); + free (quoted_str); + return -34; + } + + quoted_str = gaiaQuotedSql ("foo", GAIA_SQL_SINGLE_QUOTE); + if (strcmp (quoted_str, "foo") != 0) + { + fprintf (stderr, "gaiaQuotedSql failure SINGLE_QUOTE: %s\n", + quoted_str); + free (quoted_str); + return -35; + } + free (quoted_str); + + quoted_str = gaiaQuotedSql ("foo", GAIA_SQL_DOUBLE_QUOTE); + if (strcmp (quoted_str, "foo") != 0) + { + fprintf (stderr, "gaiaQuotedSql failure DOUBLE_QUOTE: %s\n", + quoted_str); + free (quoted_str); + return -36; + } + free (quoted_str); + + quoted_str = gaiaQuotedSql ("foo", 1000); + if (quoted_str != NULL) + { + fprintf (stderr, "gaiaQuotedSql failure 1000: %s\n", quoted_str); + free (quoted_str); + return -37; + } + + asprintf (&test_str1, "My \"Name"); + quoted_str = gaiaDoubleQuotedSql (test_str1); + if (strcmp (quoted_str, "My \"\"Name") != 0) + { + fprintf (stderr, "gaiaDoubleQuotedSql failure: %s\n", quoted_str); + free (test_str1); + free (quoted_str); + return -38; + } + free (test_str1); + free (quoted_str); + + asprintf (&test_str1, "My \"Name "); + quoted_str = gaiaDoubleQuotedSql (test_str1); + if (strcmp (quoted_str, "My \"\"Name") != 0) + { + fprintf (stderr, "gaiaDoubleQuotedSql failure: %s\n", quoted_str); + free (test_str1); + free (quoted_str); + return -39; + } + free (test_str1); + free (quoted_str); + + asprintf (&test_str1, "%s", ""); + quoted_str = gaiaDoubleQuotedSql (test_str1); + if (strcmp (quoted_str, "") != 0) + { + fprintf (stderr, "gaiaDoubleQuotedSql failure: %s\n", quoted_str); + free (test_str1); + free (quoted_str); + return -40; + } + free (test_str1); + free (quoted_str); + + asprintf (&test_str1, " "); + quoted_str = gaiaDoubleQuotedSql (test_str1); + if (strcmp (quoted_str, "") != 0) + { + fprintf (stderr, "gaiaDoubleQuotedSql failure: |%s|\n", quoted_str); + free (test_str1); + free (quoted_str); + return -41; + } + free (test_str1); + free (quoted_str); + + asprintf (&test_str1, "' "); + quoted_str = gaiaDoubleQuotedSql (test_str1); + if (strcmp (quoted_str, "'") != 0) + { + fprintf (stderr, "gaiaDoubleQuotedSql failure: %s\n", quoted_str); + free (test_str1); + free (quoted_str); + return -42; + } + free (test_str1); + free (quoted_str); + + asprintf (&test_str1, "'"); + quoted_str = gaiaDoubleQuotedSql (test_str1); + if (strcmp (quoted_str, "'") != 0) + { + fprintf (stderr, "gaiaDoubleQuotedSql failure: %s\n", quoted_str); + free (test_str1); + free (quoted_str); + return -43; + } + free (test_str1); + free (quoted_str); + + asprintf (&test_str1, "\""); + quoted_str = gaiaSingleQuotedSql (test_str1); + if (strcmp (quoted_str, "\"") != 0) + { + fprintf (stderr, "gaiaSingleQuotedSql failure: %s\n", quoted_str); + free (test_str1); + free (quoted_str); + return -44; + } + free (test_str1); + free (quoted_str); + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_geom_aux.c b/src/spatialite/test/check_geom_aux.c new file mode 100644 index 0000000..8829fa7 --- /dev/null +++ b/src/spatialite/test/check_geom_aux.c @@ -0,0 +1,1064 @@ +/* + + check_geoms.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +#include + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + gaiaDynamicLinePtr dyn; + gaiaDynamicLinePtr dyn2; + gaiaDynamicLinePtr dyn3; + gaiaPointPtr pt; + gaiaPointPtr pt1; + gaiaPointPtr pt2; + gaiaGeomCollPtr geom_pt; + gaiaGeomCollPtr geom1; + gaiaGeomCollPtr geom2; + gaiaGeomCollPtr geom3; + gaiaLinestringPtr ln; + gaiaLinestringPtr line1; + gaiaLinestringPtr line2; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + gaiaRingPtr ring1; + gaiaRingPtr ring2; + gaiaPolygonPtr polyg1; + gaiaPolygonPtr polyg2; + double xy[6]; + unsigned char *blob; + int size; + double min; + double max; + int cnt; + gaiaOutBuffer wkt; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1000; + } + + spatialite_init_ex (handle, cache, 0); + + gaiaOutBufferInitialize (&wkt); + +/* testing Dynamic Line */ + dyn = gaiaAllocDynamicLine (); + pt1 = gaiaAppendPointToDynamicLine (dyn, 1.0, 2.0); + pt2 = gaiaAppendPointToDynamicLine (dyn, 10.0, 11.0); + gaiaDynamicLineInsertAfter (dyn, pt1, 2.0, 3.0); + gaiaDynamicLineInsertBefore (dyn, pt2, 9.0, 10.0); + gaiaAppendPointToDynamicLine (dyn, 11.0, 12.0); + gaiaDynamicLineDeletePoint (dyn, pt2); + dyn2 = gaiaCloneDynamicLine (dyn); + dyn3 = gaiaReverseDynamicLine (dyn2); + + pt = dyn3->First; + cnt = 0; + while (pt) + { + /* testing result */ + switch (cnt) + { + case 0: + if (pt->X != 11.0 || pt->Y != 12.0) + { + fprintf (stderr, + "ReverseDynamicLine: unexpected result (0)\n"); + return -1; + } + break; + case 1: + if (pt->X != 9.0 || pt->Y != 10.0) + { + fprintf (stderr, + "ReverseDynamicLine: unexpected result (1)\n"); + return -3; + } + break; + case 2: + if (pt->X != 2.0 || pt->Y != 3.0) + { + fprintf (stderr, + "ReverseDynamicLine: unexpected result (2)\n"); + return -4; + } + break; + case 3: + if (pt->X != 1.0 || pt->Y != 2.0) + { + fprintf (stderr, + "ReverseDynamicLine: unexpected result (3)\n"); + return -5; + } + break; + default: + fprintf (stderr, "ReverseDynamicLine: Point count > 4\n"); + return -6; + }; + cnt++; + pt = pt->Next; + } + + gaiaFreeDynamicLine (dyn3); + gaiaFreeDynamicLine (dyn2); + xy[0] = 10.0; + xy[1] = 20.0; + xy[2] = 11.0; + xy[3] = 21.0; + xy[4] = 12.0; + xy[5] = 22.0; + dyn3 = gaiaCreateDynamicLine (xy, 3); + dyn2 = gaiaDynamicLineJoinAfter (dyn, pt1, dyn3); + + pt = dyn2->First; + cnt = 0; + while (pt) + { + /* testing result */ + switch (cnt) + { + case 0: + if (pt->X != 1.0 || pt->Y != 2.0) + { + fprintf (stderr, + "DynamicLineJoinAfter: unexpected result (0)\n"); + return -7; + } + break; + case 1: + if (pt->X != 10.0 || pt->Y != 20.0) + { + fprintf (stderr, + "DynamicLineJoinAfter: unexpected result (1)\n"); + return -8; + } + break; + case 2: + if (pt->X != 11.0 || pt->Y != 21.0) + { + fprintf (stderr, + "DynamicLineJoinAfter: unexpected result (2)\n"); + return -9; + } + break; + case 3: + if (pt->X != 12.0 || pt->Y != 22.0) + { + fprintf (stderr, + "DynamicLineJoinAfter: unexpected result (3)\n"); + return -10; + } + break; + case 4: + if (pt->X != 2.0 || pt->Y != 3.0) + { + fprintf (stderr, + "DynamicLineJoinAfter: unexpected result (4)\n"); + return -11; + } + break; + case 5: + if (pt->X != 9.0 || pt->Y != 10.0) + { + fprintf (stderr, + "DynamicLineJoinAfter: unexpected result (5)\n"); + return -12; + } + break; + case 6: + if (pt->X != 11.0 || pt->Y != 12.0) + { + fprintf (stderr, + "DynamicLineJoinAfter: unexpected result (6)\n"); + return -13; + } + break; + default: + fprintf (stderr, "DynamicLineJoinAfter: Point count > 7\n"); + return -14; + }; + cnt++; + pt = pt->Next; + } + + gaiaFreeDynamicLine (dyn2); + dyn2 = gaiaDynamicLineJoinBefore (dyn, pt1, dyn3); + + pt = dyn2->First; + cnt = 0; + while (pt) + { + /* testing result */ + switch (cnt) + { + case 0: + if (pt->X != 10.0 || pt->Y != 20.0) + { + fprintf (stderr, + "DynamicLineJoinBefore: unexpected result (0)\n"); + return -15; + } + break; + case 1: + if (pt->X != 11.0 || pt->Y != 21.0) + { + fprintf (stderr, + "DynamicLineJoinBefore: unexpected result (1)\n"); + return -16; + } + break; + case 2: + if (pt->X != 12.0 || pt->Y != 22.0) + { + fprintf (stderr, + "DynamicLineJoinBefore: unexpected result (2)\n"); + return -17; + } + break; + case 3: + if (pt->X != 1.0 || pt->Y != 2.0) + { + fprintf (stderr, + "DynamicLineJoinBefore: unexpected result (3)\n"); + return -18; + } + break; + case 4: + if (pt->X != 2.0 || pt->Y != 3.0) + { + fprintf (stderr, + "DynamicLineJoinBefore: unexpected result (4)\n"); + return -19; + } + break; + case 5: + if (pt->X != 9.0 || pt->Y != 10.0) + { + fprintf (stderr, + "DynamicLineJoinBefore: unexpected result (5)\n"); + return -20; + } + break; + case 6: + if (pt->X != 11.0 || pt->Y != 12.0) + { + fprintf (stderr, + "DynamicLineJoinBefore: unexpected result (6)\n"); + return -21; + } + break; + default: + fprintf (stderr, "DynamicLineJoinBefore: Point count > 7\n"); + return -22; + }; + cnt++; + pt = pt->Next; + } + + gaiaFreeDynamicLine (dyn3); + gaiaFreeDynamicLine (dyn2); + dyn3 = gaiaCloneDynamicLine (dyn); + pt1 = gaiaDynamicLineFindByCoords (dyn, 9.0, 10.0); + dyn2 = gaiaDynamicLineSplitBefore (dyn, pt1); + + pt = dyn2->First; + cnt = 0; + while (pt) + { + /* testing result */ + switch (cnt) + { + case 0: + if (pt->X != 1.0 || pt->Y != 2.0) + { + fprintf (stderr, + "DynamicLineSplitBefore: unexpected result (0)\n"); + return -23; + } + break; + case 1: + if (pt->X != 2.0 || pt->Y != 3.0) + { + fprintf (stderr, + "DynamicLineSplitBefore: unexpected result (1)\n"); + return -24; + } + break; + default: + fprintf (stderr, "DynamicLineSplitBefore: Point count > 2\n"); + return -25; + }; + cnt++; + pt = pt->Next; + } + + gaiaFreeDynamicLine (dyn2); + gaiaFreeDynamicLine (dyn); + pt1 = gaiaDynamicLineFindByPos (dyn3, 1); + + dyn2 = gaiaDynamicLineSplitAfter (dyn3, pt1); + + pt = dyn2->First; + cnt = 0; + while (pt) + { + /* testing result */ + switch (cnt) + { + case 0: + if (pt->X != 9.0 || pt->Y != 10.0) + { + fprintf (stderr, + "DynamicLineSplitAfter: unexpected result (0)\n"); + return -26; + } + break; + case 1: + if (pt->X != 11.0 || pt->Y != 12.0) + { + fprintf (stderr, + "DynamicLineSplitAfter: unexpected result (1)\n"); + return -27; + } + break; + default: + fprintf (stderr, "DynamicLineSplitAfter: Point count > 2\n"); + return -28; + }; + cnt++; + pt = pt->Next; + } + + gaiaFreeDynamicLine (dyn2); + gaiaFreeDynamicLine (dyn3); + +/* testing Geometry */ + geom_pt = gaiaAllocGeomColl (); + gaiaAddPointToGeomColl (geom_pt, 5.0, 5.0); + geom1 = gaiaAllocGeomColl (); + gaiaAddPointToGeomColl (geom1, 15.0, 15.0); + ln = gaiaAddLinestringToGeomColl (geom1, 2); + gaiaLineSetPoint (ln, 0, 1.0, 1.0, 0.0, 0.0); + gaiaLineSetPoint (ln, 1, 2.0, 2.0, 0.0, 0.0); + pg = gaiaAddPolygonToGeomColl (geom1, 5, 0); + rng = pg->Exterior; + gaiaRingSetPoint (rng, 0, 1.0, 1.0, 0.0, 0.0); + gaiaRingSetPoint (rng, 1, 5.0, 1.0, 0.0, 0.0); + gaiaRingSetPoint (rng, 2, 5.0, 5.0, 0.0, 0.0); + gaiaRingSetPoint (rng, 3, 1.0, 5.0, 0.0, 0.0); + gaiaRingSetPoint (rng, 4, 1.0, 1.0, 0.0, 0.0); + rng = gaiaAllocRing (5); + gaiaRingSetPoint (rng, 0, 2.0, 2.0, 0.0, 0.0); + gaiaRingSetPoint (rng, 1, 3.0, 2.0, 0.0, 0.0); + gaiaRingSetPoint (rng, 2, 3.0, 3.0, 0.0, 0.0); + gaiaRingSetPoint (rng, 3, 2.0, 3.0, 0.0, 0.0); + gaiaRingSetPoint (rng, 4, 2.0, 2.0, 0.0, 0.0); + gaiaInsertInteriorRing (pg, rng); + gaiaFreeRing (rng); + rng = gaiaAllocRing (5); + gaiaRingSetPoint (rng, 0, 3.5, 3.5, 0.0, 0.0); + gaiaRingSetPoint (rng, 1, 4.0, 3.5, 0.0, 0.0); + gaiaRingSetPoint (rng, 2, 4.0, 4.0, 0.0, 0.0); + gaiaRingSetPoint (rng, 3, 3.5, 4.0, 0.0, 0.0); + gaiaRingSetPoint (rng, 4, 3.5, 3.5, 0.0, 0.0); + gaiaInsertInteriorRing (pg, rng); + gaiaFreeRing (rng); + geom2 = gaiaCloneGeomColl (geom1); + + gaiaOutWkt (&wkt, geom2); + if (wkt.Error || wkt.Buffer == NULL) + { + fprintf (stderr, "Geom2D: unable to get WKT\n"); + return -29; + } + else + { + /* testing WKT result */ + if (strcmp + (wkt.Buffer, + "GEOMETRYCOLLECTION(POINT(15 15), LINESTRING(1 1, 2 2), POLYGON((1 1, 5 1, 5 5, 1 5, 1 1), (2 2, 3 2, 3 3, 2 3, 2 2), (3.5 3.5, 4 3.5, 4 4, 3.5 4, 3.5 3.5)))") + != 0) + { + /* unexpected result */ + fprintf (stderr, "Geom2D: unexpected result %s|\n", wkt.Buffer); + return -30; + } + gaiaOutBufferReset (&wkt); + } + + gaiaMakeLine (NULL, geom2, &blob, &size); + if (blob) + free (blob); + gaiaMakeLine (geom_pt, NULL, &blob, &size); + if (blob) + free (blob); + gaiaMakeLine (geom_pt, geom2, &blob, &size); + if (blob) + free (blob); + gaiaMakeLine (geom1, geom2, &blob, &size); + if (blob) + free (blob); + gaiaFreeGeomColl (geom2); + geom2 = gaiaCloneGeomCollPoints (geom1); + + gaiaOutWkt (&wkt, geom2); + if (wkt.Error || wkt.Buffer == NULL) + { + fprintf (stderr, "Geom2D Points: unable to get WKT\n"); + return -30; + } + else + { + /* testing WKT result */ + if (strcmp (wkt.Buffer, "MULTIPOINT(15 15)") != 0) + { + /* unexpected result */ + fprintf (stderr, "Geom2D Points: unexpected result %s|\n", + wkt.Buffer); + return -31; + } + gaiaOutBufferReset (&wkt); + } + + gaiaFreeGeomColl (geom2); + geom2 = gaiaCloneGeomCollLinestrings (geom1); + + gaiaOutWkt (&wkt, geom2); + if (wkt.Error || wkt.Buffer == NULL) + { + fprintf (stderr, "Geom2D Lines: unable to get WKT\n"); + return -32; + } + else + { + /* testing WKT result */ + if (strcmp (wkt.Buffer, "MULTILINESTRING((1 1, 2 2))") != 0) + { + /* unexpected result */ + fprintf (stderr, "Geom2D Lines: unexpected result %s|\n", + wkt.Buffer); + return -33; + } + gaiaOutBufferReset (&wkt); + } + + gaiaFreeGeomColl (geom2); + geom2 = gaiaCloneGeomCollPolygons (geom1); + + gaiaOutWkt (&wkt, geom2); + if (wkt.Error || wkt.Buffer == NULL) + { + fprintf (stderr, "Geom2D Polygons: unable to get WKT\n"); + return -34; + } + else + { + /* testing WKT result */ + if (strcmp + (wkt.Buffer, + "MULTIPOLYGON(((1 1, 5 1, 5 5, 1 5, 1 1), (2 2, 3 2, 3 3, 2 3, 2 2), (3.5 3.5, 4 3.5, 4 4, 3.5 4, 3.5 3.5)))") + != 0) + { + /* unexpected result */ + fprintf (stderr, "Geom2D Polygons: unexpected result %s|\n", + wkt.Buffer); + return -35; + } + gaiaOutBufferReset (&wkt); + } + + gaiaFreeGeomColl (geom2); + min = gaiaMeasureLength (geom1->FirstLinestring->DimensionModel, + geom1->FirstLinestring->Coords, + geom1->FirstLinestring->Points); + rng = geom1->FirstPolygon->Exterior; + min = gaiaMeasureArea (rng); + gaiaRingCentroid (rng, &min, &max); + gaiaIsPointOnPolygonSurface (geom1->FirstPolygon, 17.0, 22.0); + min = gaiaMinDistance (1.0, 2.0, geom1->FirstLinestring->DimensionModel, + geom1->FirstLinestring->Coords, + geom1->FirstLinestring->Points); + +/* cast XYZ */ + geom2 = gaiaCastGeomCollToXY (geom1); + gaiaFreeGeomColl (geom2); + geom2 = gaiaCastGeomCollToXYZ (geom1); + geom3 = gaiaCloneGeomColl (geom2); + gaiaFreeGeomColl (geom3); + geom3 = gaiaCloneGeomCollPoints (geom2); + gaiaFreeGeomColl (geom3); + geom3 = gaiaCloneGeomCollLinestrings (geom2); + gaiaFreeGeomColl (geom3); + geom3 = gaiaCloneGeomCollPolygons (geom2); + gaiaFreeGeomColl (geom3); + rng = geom2->FirstPolygon->Exterior; + + min = gaiaMeasureLength (geom2->FirstLinestring->DimensionModel, + geom2->FirstLinestring->Coords, + geom2->FirstLinestring->Points); + if (min < 1.41421 || min > 1.41422) + { + /* unexpected result */ + fprintf (stderr, "Geom3D Length: unexpected result %1.6f|\n", min); + return -36; + } + + min = gaiaMeasureArea (rng); + if (min != 16.0) + { + /* unexpected result */ + fprintf (stderr, "Geom3D Area: unexpected result %1.6f|\n", min); + return -37; + } + + gaiaRingCentroid (rng, &min, &max); + if (min != 3.0 || max != 3.0) + { + /* unexpected result */ + fprintf (stderr, "Geom3D Centroid: unexpected result %1.6f %1.6f|\n", + min, max); + return -38; + } + + cnt = gaiaIsPointOnPolygonSurface (geom2->FirstPolygon, 17.0, 22.0); + if (cnt) + { + /* unexpected result */ + fprintf (stderr, + "Geom3D IsPointOnPolygonSurface: unexpected result %d|\n", + cnt); + return -39; + } + + min = gaiaMinDistance (1.0, 2.0, geom2->FirstLinestring->DimensionModel, + geom2->FirstLinestring->Coords, + geom2->FirstLinestring->Points); + if (min < 0.70710 || min > 0.70711) + { + /* unexpected result */ + fprintf (stderr, "Geom3D MinDistance: unexpected result %1.6f|\n", + min); + return -40; + } + + gaiaFreeGeomColl (geom2); + +/* cast to XYM */ + geom2 = gaiaCastGeomCollToXYM (geom1); + geom3 = gaiaCloneGeomColl (geom2); + gaiaFreeGeomColl (geom3); + geom3 = gaiaCloneGeomCollPoints (geom2); + gaiaFreeGeomColl (geom3); + geom3 = gaiaCloneGeomCollLinestrings (geom2); + gaiaFreeGeomColl (geom3); + geom3 = gaiaCloneGeomCollPolygons (geom2); + gaiaFreeGeomColl (geom3); + min = gaiaMeasureLength (geom2->FirstLinestring->DimensionModel, + geom2->FirstLinestring->Coords, + geom2->FirstLinestring->Points); + if (min < 1.41421 || min > 1.41422) + { + /* unexpected result */ + fprintf (stderr, "GeomM Length: unexpected result %1.6f|\n", min); + return -41; + } + + rng = geom2->FirstPolygon->Exterior; + min = gaiaMeasureArea (rng); + if (min != 16.0) + { + /* unexpected result */ + fprintf (stderr, "GeomM Area: unexpected result %1.6f|\n", min); + return -42; + } + + gaiaRingCentroid (rng, &min, &max); + if (min != 3.0 || max != 3.0) + { + /* unexpected result */ + fprintf (stderr, "GeomM Centroid: unexpected result %1.6f %1.6f|\n", + min, max); + return -43; + } + + gaiaIsPointOnPolygonSurface (geom2->FirstPolygon, 17.0, 22.0); + if (cnt) + { + /* unexpected result */ + fprintf (stderr, + "GeomM IsPointOnPolygonSurface: unexpected result %d|\n", + cnt); + return -44; + } + + min = gaiaMinDistance (1.0, 2.0, geom2->FirstLinestring->DimensionModel, + geom2->FirstLinestring->Coords, + geom2->FirstLinestring->Points); + if (min < 0.70710 || min > 0.70711) + { + /* unexpected result */ + fprintf (stderr, "GeomM MinDistance: unexpected result %1.6f|\n", + min); + return -45; + } + + gaiaFreeGeomColl (geom2); + +/* cast to XYZM */ + geom2 = gaiaCastGeomCollToXYZM (geom1); + geom3 = gaiaCloneGeomColl (geom2); + gaiaFreeGeomColl (geom3); + gaiaMRangeGeometry (geom2, &min, &max); + gaiaZRangeGeometry (geom2, &min, &max); + geom3 = gaiaCloneGeomCollPoints (geom2); + gaiaFreeGeomColl (geom3); + geom3 = gaiaCloneGeomCollLinestrings (geom2); + gaiaFreeGeomColl (geom3); + geom3 = gaiaCloneGeomCollPolygons (geom2); + gaiaFreeGeomColl (geom3); + min = gaiaMeasureLength (geom2->FirstLinestring->DimensionModel, + geom2->FirstLinestring->Coords, + geom2->FirstLinestring->Points); + if (min < 1.41421 || min > 1.41422) + { + /* unexpected result */ + fprintf (stderr, "GeomZM Length: unexpected result %1.6f|\n", min); + return -46; + } + + rng = geom2->FirstPolygon->Exterior; + min = gaiaMeasureArea (rng); + if (min != 16.0) + { + /* unexpected result */ + fprintf (stderr, "GeomZM Area: unexpected result %1.6f|\n", min); + return -47; + } + + gaiaRingCentroid (rng, &min, &max); + if (min != 3.0 || max != 3.0) + { + /* unexpected result */ + fprintf (stderr, "GeomZM Centroid: unexpected result %1.6f %1.6f|\n", + min, max); + return -48; + } + + gaiaIsPointOnPolygonSurface (geom2->FirstPolygon, 17.0, 22.0); + if (cnt) + { + /* unexpected result */ + fprintf (stderr, + "GeomZM IsPointOnPolygonSurface: unexpected result %d|\n", + cnt); + return -49; + } + + min = gaiaMinDistance (1.0, 2.0, geom2->FirstLinestring->DimensionModel, + geom2->FirstLinestring->Coords, + geom2->FirstLinestring->Points); + if (min < 0.70710 || min > 0.70711) + { + /* unexpected result */ + fprintf (stderr, "GeomZM MinDistance: unexpected result %1.6f|\n", + min); + return -50; + } + + gaiaFreeGeomColl (geom2); + + + gaiaFreeGeomColl (geom_pt); + gaiaFreeGeomColl (geom1); + + gaiaIntersect (&min, &max, 0.0, 10.0, 20.0, 10.0, 5.0, 0.0, 5.0, 20.0); + if (min != 5.0 || max != 10.0) + { + /* unexpected result */ + fprintf (stderr, "gaiaIntersect: unexpected result %1.6f %1.6f|\n", + min, max); + return -51; + } + +/* same, reversed line direction */ + gaiaIntersect (&min, &max, 20.0, 10.0, 0.0, 10.0, 5.0, 20.0, 5.0, 0.0); + if (min != 5.0 || max != 10.0) + { + /* unexpected result */ + fprintf (stderr, "gaiaIntersect: unexpected result %1.6f %1.6f|\n", + min, max); + return -52; + } + +/* non-intersecting MBRs*/ + min = -20; + max = -20; + gaiaIntersect (&min, &max, 20.0, 12.0, 0.0, 10.0, 25.0, 40.0, 45.0, 40.0); + if (min != -20 || max != -20) + { + /* unexpected result */ + fprintf (stderr, "gaiaIntersect: unexpected result %1.6f %1.6f|\n", + min, max); + return -53; + } + +/* Just intersecting */ + min = 0; + max = 0; + gaiaIntersect (&min, &max, 0.0, 10.0, 20.0, 10.0, 5.0, 0.0, 5.0, 10.0); + if (min != 5.0 || max != 10.0) + { + /* unexpected result */ + fprintf (stderr, "gaiaIntersect: unexpected result %1.6f %1.6f|\n", + min, max); + return -54; + } + +/* cloning a Linestring XY */ + line1 = gaiaAllocLinestring (4); + gaiaLineSetPoint (line1, 0, 1.1, 1.2, 100.1, 10.1); + gaiaLineSetPoint (line1, 1, 1.3, 1.4, 100.2, 10.2); + gaiaLineSetPoint (line1, 2, 1.5, 1.6, 100.3, 10.3); + gaiaLineSetPoint (line1, 3, 1.7, 1.8, 100.4, 10.4); + line2 = gaiaCloneLinestringSpecial (line1, GAIA_SAME_ORDER); + gaiaFreeLinestring (line2); + line2 = gaiaCloneLinestringSpecial (line1, GAIA_REVERSE_ORDER); + gaiaFreeLinestring (line2); + gaiaFreeLinestring (line1); + +/* cloning a Linestring XYZ */ + line1 = gaiaAllocLinestringXYZ (4); + gaiaLineSetPoint (line1, 0, 1.1, 1.2, 100.1, 10.1); + gaiaLineSetPoint (line1, 1, 1.3, 1.4, 100.2, 10.2); + gaiaLineSetPoint (line1, 2, 1.5, 1.6, 100.3, 10.3); + gaiaLineSetPoint (line1, 3, 1.7, 1.8, 100.4, 10.4); + line2 = gaiaCloneLinestringSpecial (line1, GAIA_SAME_ORDER); + gaiaFreeLinestring (line2); + line2 = gaiaCloneLinestringSpecial (line1, GAIA_REVERSE_ORDER); + gaiaFreeLinestring (line2); + gaiaFreeLinestring (line1); + +/* cloning a Linestring XYM */ + line1 = gaiaAllocLinestringXYM (4); + gaiaLineSetPoint (line1, 0, 1.1, 1.2, 100.1, 10.1); + gaiaLineSetPoint (line1, 1, 1.3, 1.4, 100.2, 10.2); + gaiaLineSetPoint (line1, 2, 1.5, 1.6, 100.3, 10.3); + gaiaLineSetPoint (line1, 3, 1.7, 1.8, 100.4, 10.4); + line2 = gaiaCloneLinestringSpecial (line1, GAIA_SAME_ORDER); + gaiaFreeLinestring (line2); + line2 = gaiaCloneLinestringSpecial (line1, GAIA_REVERSE_ORDER); + gaiaFreeLinestring (line2); + gaiaFreeLinestring (line1); + +/* cloning a Linestring XYZM */ + line1 = gaiaAllocLinestringXYZM (4); + gaiaLineSetPoint (line1, 0, 1.1, 1.2, 100.1, 10.1); + gaiaLineSetPoint (line1, 1, 1.3, 1.4, 100.2, 10.2); + gaiaLineSetPoint (line1, 2, 1.5, 1.6, 100.3, 10.3); + gaiaLineSetPoint (line1, 3, 1.7, 1.8, 100.4, 10.4); + line2 = gaiaCloneLinestringSpecial (line1, GAIA_SAME_ORDER); + gaiaFreeLinestring (line2); + line2 = gaiaCloneLinestringSpecial (line1, GAIA_REVERSE_ORDER); + gaiaFreeLinestring (line2); + gaiaFreeLinestring (line1); + +/* cloning a Ring XY */ + ring1 = gaiaAllocRing (5); + gaiaRingSetPoint (ring1, 0, 1.1, 1.1, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.2, 1.1, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 1.2, 1.2, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.1, 1.2, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.1, 1.1, 100.1, 10.1); + ring2 = gaiaCloneRingSpecial (ring1, GAIA_SAME_ORDER); + gaiaFreeRing (ring2); + ring2 = gaiaCloneRingSpecial (ring1, GAIA_REVERSE_ORDER); + gaiaFreeRing (ring2); + gaiaFreeRing (ring1); + +/* cloning a Ring XYZ */ + ring1 = gaiaAllocRingXYZ (5); + gaiaRingSetPoint (ring1, 0, 1.1, 1.1, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.2, 1.1, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 1.2, 1.2, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.1, 1.2, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.1, 1.1, 100.1, 10.1); + ring2 = gaiaCloneRingSpecial (ring1, GAIA_SAME_ORDER); + gaiaFreeRing (ring2); + ring2 = gaiaCloneRingSpecial (ring1, GAIA_REVERSE_ORDER); + gaiaFreeRing (ring2); + gaiaFreeRing (ring1); + +/* cloning a Ring XYM */ + ring1 = gaiaAllocRingXYM (5); + gaiaRingSetPoint (ring1, 0, 1.1, 1.1, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.2, 1.1, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 1.2, 1.2, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.1, 1.2, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.1, 1.1, 100.1, 10.1); + ring2 = gaiaCloneRingSpecial (ring1, GAIA_SAME_ORDER); + gaiaFreeRing (ring2); + ring2 = gaiaCloneRingSpecial (ring1, GAIA_REVERSE_ORDER); + gaiaFreeRing (ring2); + gaiaFreeRing (ring1); + +/* cloning a Ring XYZM */ + ring1 = gaiaAllocRingXYZM (4); + gaiaRingSetPoint (ring1, 0, 1.1, 1.1, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.2, 1.1, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 1.2, 1.2, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.1, 1.2, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.1, 1.1, 100.1, 10.1); + ring2 = gaiaCloneRingSpecial (ring1, GAIA_SAME_ORDER); + gaiaFreeRing (ring2); + ring2 = gaiaCloneRingSpecial (ring1, GAIA_REVERSE_ORDER); + gaiaFreeRing (ring2); + gaiaFreeRing (ring1); + +/* cloning a Polygon XY (1) */ + polyg1 = gaiaAllocPolygon (5, 1); + ring1 = polyg1->Exterior; + gaiaRingSetPoint (ring1, 0, 1.0, 1.0, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 2.0, 1.0, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 2.0, 2.0, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.0, 2.0, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.0, 1.0, 100.1, 10.1); + ring1 = gaiaAddInteriorRing (polyg1, 0, 5); + gaiaRingSetPoint (ring1, 0, 1.1, 1.1, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.2, 1.1, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 1.2, 1.2, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.1, 1.2, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.1, 1.1, 100.1, 10.1); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_SAME_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_REVERSE_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_LHR_ORDER); + gaiaFreePolygon (polyg2); + gaiaFreePolygon (polyg1); + +/* cloning a Polygon XY (2) */ + polyg1 = gaiaAllocPolygon (5, 1); + ring1 = polyg1->Exterior; + gaiaRingSetPoint (ring1, 0, 1.0, 1.0, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.0, 2.0, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 2.0, 2.0, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 2.0, 1.0, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.0, 1.0, 100.1, 10.1); + ring1 = gaiaAddInteriorRing (polyg1, 0, 5); + gaiaRingSetPoint (ring1, 0, 1.1, 1.1, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.1, 1.2, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 1.2, 1.2, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.2, 1.1, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.1, 1.1, 100.1, 10.1); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_SAME_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_REVERSE_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_LHR_ORDER); + gaiaFreePolygon (polyg2); + gaiaFreePolygon (polyg1); + +/* cloning a Polygon XYZ (1) */ + polyg1 = gaiaAllocPolygonXYZ (5, 1); + ring1 = polyg1->Exterior; + gaiaRingSetPoint (ring1, 0, 1.0, 1.0, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 2.0, 1.0, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 2.0, 2.0, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.0, 2.0, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.0, 1.0, 100.1, 10.1); + ring1 = gaiaAddInteriorRing (polyg1, 0, 5); + gaiaRingSetPoint (ring1, 0, 1.1, 1.1, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.2, 1.1, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 1.2, 1.2, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.1, 1.2, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.1, 1.1, 100.1, 10.1); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_SAME_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_REVERSE_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_LHR_ORDER); + gaiaFreePolygon (polyg2); + gaiaFreePolygon (polyg1); + +/* cloning a Polygon XYZ (2) */ + polyg1 = gaiaAllocPolygonXYZ (5, 1); + ring1 = polyg1->Exterior; + gaiaRingSetPoint (ring1, 0, 1.0, 1.0, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.0, 2.0, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 2.0, 2.0, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 2.0, 1.0, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.0, 1.0, 100.1, 10.1); + ring1 = gaiaAddInteriorRing (polyg1, 0, 5); + gaiaRingSetPoint (ring1, 0, 1.1, 1.1, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.1, 1.2, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 1.2, 1.2, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.2, 1.1, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.1, 1.1, 100.1, 10.1); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_SAME_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_REVERSE_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_LHR_ORDER); + gaiaFreePolygon (polyg2); + gaiaFreePolygon (polyg1); + +/* cloning a Polygon XYM (1) */ + polyg1 = gaiaAllocPolygonXYM (5, 1); + ring1 = polyg1->Exterior; + gaiaRingSetPoint (ring1, 0, 1.0, 1.0, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 2.0, 1.0, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 2.0, 2.0, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.0, 2.0, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.0, 1.0, 100.1, 10.1); + ring1 = gaiaAddInteriorRing (polyg1, 0, 5); + gaiaRingSetPoint (ring1, 0, 1.1, 1.1, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.2, 1.1, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 1.2, 1.2, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.1, 1.2, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.1, 1.1, 100.1, 10.1); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_SAME_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_REVERSE_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_LHR_ORDER); + gaiaFreePolygon (polyg2); + gaiaFreePolygon (polyg1); + +/* cloning a Polygon XYM (2) */ + polyg1 = gaiaAllocPolygonXYM (5, 1); + ring1 = polyg1->Exterior; + gaiaRingSetPoint (ring1, 0, 1.0, 1.0, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.0, 2.0, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 2.0, 2.0, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 2.0, 1.0, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.0, 1.0, 100.1, 10.1); + ring1 = gaiaAddInteriorRing (polyg1, 0, 5); + gaiaRingSetPoint (ring1, 0, 1.1, 1.1, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.1, 1.2, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 1.2, 1.2, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.2, 1.1, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.1, 1.1, 100.1, 10.1); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_SAME_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_REVERSE_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_LHR_ORDER); + gaiaFreePolygon (polyg2); + gaiaFreePolygon (polyg1); + +/* cloning a Polygon XYZM (1) */ + polyg1 = gaiaAllocPolygonXYZM (5, 1); + ring1 = polyg1->Exterior; + gaiaRingSetPoint (ring1, 0, 1.0, 1.0, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 2.0, 1.0, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 2.0, 2.0, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.0, 2.0, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.0, 1.0, 100.1, 10.1); + ring1 = gaiaAddInteriorRing (polyg1, 0, 5); + gaiaRingSetPoint (ring1, 0, 1.1, 1.1, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.2, 1.1, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 1.2, 1.2, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.1, 1.2, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.1, 1.1, 100.1, 10.1); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_SAME_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_REVERSE_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_LHR_ORDER); + gaiaFreePolygon (polyg2); + gaiaFreePolygon (polyg1); + +/* cloning a Polygon XYZM (2) */ + polyg1 = gaiaAllocPolygonXYZM (5, 1); + ring1 = polyg1->Exterior; + gaiaRingSetPoint (ring1, 0, 1.0, 1.0, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.0, 2.0, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 2.0, 2.0, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 2.0, 1.0, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.0, 1.0, 100.1, 10.1); + ring1 = gaiaAddInteriorRing (polyg1, 0, 5); + gaiaRingSetPoint (ring1, 0, 1.1, 1.1, 100.1, 10.1); + gaiaRingSetPoint (ring1, 1, 1.1, 1.2, 100.2, 10.2); + gaiaRingSetPoint (ring1, 2, 1.2, 1.2, 100.3, 10.3); + gaiaRingSetPoint (ring1, 3, 1.2, 1.1, 100.4, 10.4); + gaiaRingSetPoint (ring1, 4, 1.1, 1.1, 100.1, 10.1); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_SAME_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_REVERSE_ORDER); + gaiaFreePolygon (polyg2); + polyg2 = gaiaClonePolygonSpecial (polyg1, GAIA_LHR_ORDER); + gaiaFreePolygon (polyg2); + gaiaFreePolygon (polyg1); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -1001; + } + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_geometry_cols.c b/src/spatialite/test/check_geometry_cols.c new file mode 100644 index 0000000..ca6e4e7 --- /dev/null +++ b/src/spatialite/test/check_geometry_cols.c @@ -0,0 +1,280 @@ +/* + + check_create.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + ret = + sqlite3_exec (handle, + "CREATE TABLE Point_Test (Name TEXT, Description TEXT)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -3; + } + + ret = + sqlite3_get_table (handle, + "SELECT AddGeometryColumn(26, 'geomZ', 4326, 'POINT', 'XYZ', 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -4; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected result AddGeometryColumn int arg1 bad result: %i/%i.\n", + rows, columns); + return -5; + } + if (strcmp (results[1], "0") != 0) + { + fprintf (stderr, + "Unexpected result: AddGeometryColumn with non-text arg1 passed: %s.\n", + results[1]); + return -6; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, + "SELECT AddGeometryColumn('Point_Test', 8, 4326, 'POINT', 'XYZ', 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -7; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected result AddGeometryColumn int arg2 bad result: %i/%i.\n", + rows, columns); + return -8; + } + if (strcmp (results[1], "0") != 0) + { + fprintf (stderr, + "Unexpected result: AddGeometryColumn with non-text arg2 passed: %s.\n", + results[1]); + return -9; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, + "SELECT AddGeometryColumn('Point_Test', 'geomZ', 'sometext', 'POINT', 'XYZ', 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -10; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected result AddGeometryColumn text arg3 bad result: %i/%i.\n", + rows, columns); + return -11; + } + if (strcmp (results[1], "0") != 0) + { + fprintf (stderr, + "Unexpected result: AddGeometryColumn with non-int arg3 passed: %s.\n", + results[1]); + return -12; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, + "SELECT AddGeometryColumn('Point_Test', 'geomZ', 4326, 'POINT', 'XYZ', 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -13; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected result AddGeometryColumn bad result: %i/%i.\n", + rows, columns); + return -14; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "Unexpected error: AddGeometryColumn with good args failed: %s.\n", + results[1]); + return -15; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (handle, + "INSERT INTO Point_Test (Name, Description, geomZ) VALUES ('Point 1', 'Some point', GeomFromText('POINTZ(136 -33 365)', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT POINT XYZ error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -16; + } + + ret = + sqlite3_get_table (handle, + "SELECT DiscardGeometryColumn('Point_Test', 'geomZ')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -17; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected result DiscardGeometryColumn bad result: %i/%i.\n", + rows, columns); + return -18; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "Unexpected error: DiscardGeometryColumn failed: %s.\n", + results[1]); + return -19; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, + "SELECT RecoverGeometryColumn('Point_Test', 'geomZ', 4326, 'POINT', 'XYZ')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -20; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected result RecoverGeometryColumn bad result: %i/%i.\n", + rows, columns); + return -21; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "Unexpected error: RecoverGeometryColumn failed: %s.\n", + results[1]); + return -22; + } + sqlite3_free_table (results); + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -23; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_geoscvt_fncts.c b/src/spatialite/test/check_geoscvt_fncts.c new file mode 100644 index 0000000..cb423d0 --- /dev/null +++ b/src/spatialite/test/check_geoscvt_fncts.c @@ -0,0 +1,109 @@ +/* + + check_geoscvt_fncts.c -- SpatiaLite Test Case + + This does "boundary conditions" and error checks for gg_geoscvt + functions that are hard to test with SQL. + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" +#include "spatialite/gaiageo.h" + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_GEOS /* only if GEOS is supported */ + gaiaGeomCollPtr result; + void *resultVoid; + int returnValue = 0; + + /* Common setup */ + gaiaGeomCollPtr emptyGeometry = gaiaAllocGeomColl (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + /* Tests start here */ + + /* null input test */ + result = gaiaFromGeos_XY ((const void *) NULL); + if (result != NULL) + { + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -1; + goto exit; + } + + resultVoid = gaiaToGeos ((gaiaGeomCollPtr) NULL); + if (resultVoid != NULL) + { + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -2; + goto exit; + } + + /* unknown type geometry collection */ + resultVoid = gaiaToGeos (emptyGeometry); + if (resultVoid != NULL) + { + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -3; + goto exit; + } + + /* Cleanup and exit */ + exit: + gaiaFreeGeomColl (emptyGeometry); + spatialite_shutdown (); + return returnValue; + +#endif /* end GEOS conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_get_normal_row.c b/src/spatialite/test/check_get_normal_row.c new file mode 100644 index 0000000..b25e828 --- /dev/null +++ b/src/spatialite/test/check_get_normal_row.c @@ -0,0 +1,450 @@ +/* + + check_get_normal_row.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2011, 2014 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + char *old_SPATIALITE_SECURITY_ENV = NULL; +#ifdef _WIN32 + char *env; +#endif /* not WIN32 */ + + old_SPATIALITE_SECURITY_ENV = getenv ("SPATIALITE_SECURITY"); +#ifdef _WIN32 + putenv ("SPATIALITE_SECURITY=relaxed"); +#else /* not WIN32 */ + setenv ("SPATIALITE_SECURITY", "relaxed", 1); +#endif + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_get_normal_row.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (old_SPATIALITE_SECURITY_ENV) + { +#ifdef _WIN32 + env = + sqlite3_mprintf ("SPATIALITE_SECURITY=%s", + old_SPATIALITE_SECURITY_ENV); + putenv (env); + sqlite3_free (env); +#else /* not WIN32 */ + setenv ("SPATIALITE_SECURITY", old_SPATIALITE_SECURITY_ENV, 1); +#endif + } + else + { +#ifdef _WIN32 + putenv ("SPATIALITE_SECURITY="); +#else /* not WIN32 */ + unsetenv ("SPATIALITE_SECURITY"); +#endif + } + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + /* create tables to support future testing */ + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -2; + } + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"test1_matrix_tiles\", 4326, -180.0, -90.0, 180.0, 90.0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesTable() float bounds result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -3; + } + + /* create matrix levels 0, 1, 2 and 4 */ + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 0, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesZoomLevel(0) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -4; + } + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 1, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesZoomLevel(1) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -5; + } + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 2, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesZoomLevel(2) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -6; + } + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 4, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesZoomLevel(4) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -7; + } + + /* Check a proper INSERT */ + ret = + sqlite3_exec (db_handle, + "INSERT INTO test1_matrix_tiles VALUES (6, 0, 0 ,0, BlobFromFile('empty.png'))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT error 11: %s\n", err_msg); + sqlite3_free (err_msg); + return -11; + } + + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalRow(\"test1_matrix_tiles\", 0, 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error12: %s\n", err_msg); + sqlite3_free (err_msg); + return -12; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -13; + } + if (strcmp (results[1 * columns + 0], "0") != 0) + { + fprintf (stderr, "Unexpected result (got %s, expected 0)", + results[rows * columns + 0]); + sqlite3_free_table (results); + return -14; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalRow(\"test1_matrix_tiles\", 2, 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error 2: %s\n", err_msg); + sqlite3_free (err_msg); + return -15; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -16; + } + if (strcmp (results[1 * columns + 0], "3") != 0) + { + fprintf (stderr, "Unexpected result (got %s, expected 3)", + results[rows * columns + 0]); + sqlite3_free_table (results); + return -17; + } + sqlite3_free_table (results); + + /* test an out-of-range zoom number - expect exception */ + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalRow(\"test1_matrix_tiles\", 5, 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for overrange zoom level, got %i\n", + ret); + sqlite3_free (err_msg); + return -18; + } + if (strcmp (err_msg, "gpkgGetNormalRow: tile table or zoom level not found") + != 0) + { + fprintf (stderr, + "Unexpected error message for overrange zoom level: %s\n", + err_msg); + sqlite3_free (err_msg); + return -19; + } + sqlite3_free (err_msg); + + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalRow(\"test1_matrix_tiles\", -1, 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for underrange zoom level, got %i\n", + ret); + sqlite3_free (err_msg); + return -20; + } + if (strcmp (err_msg, "gpkgGetNormalRow: tile table or zoom level not found") + != 0) + { + fprintf (stderr, + "Unexpected error message for underrange zoom level: %s\n", + err_msg); + sqlite3_free (err_msg); + return -21; + } + sqlite3_free (err_msg); + + /* test bad table name */ + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalRow(\"no_such_table\", 0, 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for bad table name level, got %i\n", + ret); + sqlite3_free (err_msg); + return -22; + } + if (strcmp (err_msg, "gpkgGetNormalRow: tile table or zoom level not found") + != 0) + { + fprintf (stderr, "Unexpected error message for bad table name: %s\n", + err_msg); + sqlite3_free (err_msg); + return -23; + } + sqlite3_free (err_msg); + + /* test bad argument types */ + ret = + sqlite3_get_table (db_handle, "SELECT gpkgGetNormalRow(3, 0, 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for bad arg1 type, got %i\n", ret); + sqlite3_free (err_msg); + return -26; + } + if (strcmp + (err_msg, + "gpkgGetNormalRow() error: argument 1 [tile_table_name] is not of the String type") + != 0) + { + fprintf (stderr, "Unexpected error message for bad arg1 type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -27; + } + sqlite3_free (err_msg); + + /* test bad argument types */ + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalRow(\"test1_matrix_tiles\", 3.2, 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for bad arg2 type, got %i\n", ret); + sqlite3_free (err_msg); + return -28; + } + if (strcmp + (err_msg, + "gpkgGetNormalRow() error: argument 2 [normal zoom level] is not of the integer type") + != 0) + { + fprintf (stderr, "Unexpected error message for bad arg2 type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -29; + } + sqlite3_free (err_msg); + + /* test bad argument types */ + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalRow(\"test1_matrix_tiles\", 2, 1.6)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for bad arg3 type, got %i\n", ret); + sqlite3_free (err_msg); + return -30; + } + if (strcmp + (err_msg, + "gpkgGetNormalRow() error: argument 3 [inverted_row_number] is not of the integer type") + != 0) + { + fprintf (stderr, "Unexpected error message for bad arg3 type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -31; + } + sqlite3_free (err_msg); + + /* test overrange row number */ + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalRow(\"test1_matrix_tiles\", 2, 4)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for overrange row number level, got %i\n", + ret); + sqlite3_free (err_msg); + return -32; + } + if (strcmp + (err_msg, + "gpkgGetNormalRow: row number outside of matrix height range") != 0) + { + fprintf (stderr, + "Unexpected error message for overrange zoom level: %s\n", + err_msg); + sqlite3_free (err_msg); + return -33; + } + sqlite3_free (err_msg); + + /* test underrange row number */ + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalRow(\"test1_matrix_tiles\", 2, -1)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for underrange row number level, got %i\n", + ret); + sqlite3_free (err_msg); + return -34; + } + if (strcmp + (err_msg, + "gpkgGetNormalRow: row number outside of matrix height range") != 0) + { + fprintf (stderr, + "Unexpected error message for underrange zoom level: %s\n", + err_msg); + sqlite3_free (err_msg); + return -35; + } + sqlite3_free (err_msg); + + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -100; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_get_normal_row_bad_geopackage.c b/src/spatialite/test/check_get_normal_row_bad_geopackage.c new file mode 100644 index 0000000..5c7f24e --- /dev/null +++ b/src/spatialite/test/check_get_normal_row_bad_geopackage.c @@ -0,0 +1,182 @@ +/* + + check_get_normal_row_bad_geopackage.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2011, 2014 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_get_normal_row_bad_geopackage.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + /* create a corrupt tile_matrix_metadata table (not spec compliant) */ + ret = + sqlite3_exec (db_handle, "DROP TABLE IF EXISTS gpkg_tile_matrix", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP gpkg_tile_matrix error: %s\n", err_msg); + sqlite3_free (err_msg); + return -4; + } + ret = + sqlite3_exec (db_handle, + "CREATE TABLE gpkg_tile_matrix (table_name TEXT NOT NULL, zoom_level INTEGER NOT NULL, matrix_width INTEGER NOT NULL, matrix_height TEXT NOT NULL)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE gpkg_tile_matrix error: %s\n", err_msg); + sqlite3_free (err_msg); + return -5; + } + ret = + sqlite3_exec (db_handle, + "INSERT INTO gpkg_tile_matrix VALUES (\"test1_matrix_tiles\", 0, 0, \"foo\")", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT tile_matrix_metadata zoom 0 error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -6; + } + ret = + sqlite3_exec (db_handle, + "INSERT INTO gpkg_tile_matrix VALUES (\"test1_matrix_tiles\", 1, 0, \"4000000000\")", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT tile_matrix_metadata zoom 1 error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -7; + } + + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalRow(\"test1_matrix_tiles\", 0, 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for broken geopackage, got %i\n", + ret); + sqlite3_free (err_msg); + return -9; + } + if (strcmp + (err_msg, + "gpkgGetNormalRow: could not parse result (corrupt GeoPackage?)") != 0) + { + fprintf (stderr, + "Unexpected error message for broken geopackage: %s\n", + err_msg); + sqlite3_free (err_msg); + return -10; + } + sqlite3_free (err_msg); + + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalRow(\"test1_matrix_tiles\", 1, 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for broken geopackage zoom1, got %i\n", ret); + sqlite3_free (err_msg); + return -11; + } + if (strcmp + (err_msg, + "gpkgGetNormalRow: could not parse result (corrupt GeoPackage?)") != 0) + { + fprintf (stderr, + "Unexpected error message for broken geopackage zoom1: %s\n", + err_msg); + sqlite3_free (err_msg); + return -12; + } + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -100; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_get_normal_row_bad_geopackage2.c b/src/spatialite/test/check_get_normal_row_bad_geopackage2.c new file mode 100644 index 0000000..7597d03 --- /dev/null +++ b/src/spatialite/test/check_get_normal_row_bad_geopackage2.c @@ -0,0 +1,125 @@ +/* + + check_get_normal_row_bad_geopackage2 - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2011, 2014 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_get_normal_row_bad_geopackage2.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + /* delete the gpkg_tile_matrix table (deliberately broken) */ + ret = + sqlite3_exec (db_handle, "DROP TABLE IF EXISTS gpkg_tile_matrix", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP gpkg_tile_matrix error: %s\n", err_msg); + sqlite3_free (err_msg); + return -4; + } + /* now do the query */ + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalRow(\"test1_matrix_tiles\", 0, 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for broken geopackage, got %i\n", + ret); + sqlite3_free (err_msg); + return -5; + } + if (strcmp (err_msg, "no such table: gpkg_tile_matrix") != 0) + { + fprintf (stderr, + "Unexpected error message for broken geopackage: %s\n", + err_msg); + sqlite3_free (err_msg); + return -6; + } + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -100; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_get_normal_zoom.c b/src/spatialite/test/check_get_normal_zoom.c new file mode 100644 index 0000000..e9da61b --- /dev/null +++ b/src/spatialite/test/check_get_normal_zoom.c @@ -0,0 +1,350 @@ +/* + + check_get_normal_zoom.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_get_normal_zoom.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + /* create tables to support future testing */ + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -2; + } + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"test1_matrix_tiles\", 4326, -180.0, -90.0, 180.0, 90.0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesTable() float bounds result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -3; + } + + /* create matrix levels 0, 1 and 4 */ + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 0, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesZoomLevel(0) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -4; + } + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 1, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesZoomLevel(1) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -5; + } + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 4, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesZoomLevel(4) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -6; + } + + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"test1_matrix_tiles\", 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error1: %s\n", err_msg); + sqlite3_free (err_msg); + return -9; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + sqlite3_free_table (results); + return -10; + } + if (strcmp (results[1 * columns + 0], "4") != 0) + { + fprintf (stderr, "Unexpected result 0 (got %s, expected 4)", + results[rows * columns + 0]); + sqlite3_free_table (results); + return -11; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"test1_matrix_tiles\", 1)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error 2: %s\n", err_msg); + sqlite3_free (err_msg); + return -12; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -13; + } + if (strcmp (results[1 * columns + 0], "3") != 0) + { + fprintf (stderr, "Unexpected result 1 (got %s, expected 3)", + results[rows * columns + 0]); + return -14; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"test1_matrix_tiles\", 4)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error 3: %s\n", err_msg); + sqlite3_free (err_msg); + return -15; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + sqlite3_free_table (results); + return -16; + } + if (strcmp (results[1 * columns + 0], "0") != 0) + { + fprintf (stderr, "Unexpected result 4(got %s, expected 0)", + results[rows * columns + 0]); + sqlite3_free_table (results); + return -17; + } + sqlite3_free_table (results); + + /* test an out-of-range zoom number - expect exception */ + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"test1_matrix_tiles\", 5)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for overrange zoom level, got %i\n", + ret); + sqlite3_free (err_msg); + return -18; + } + if (strcmp + (err_msg, + "gpkgGetNormalZoom: input zoom level number outside of valid zoom levels") + != 0) + { + fprintf (stderr, + "Unexpected error message for overrange zoom level: %s\n", + err_msg); + sqlite3_free (err_msg); + return -19; + } + sqlite3_free (err_msg); + + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"test1_matrix_tiles\", -1)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for underrange zoom level, got %i\n", + ret); + sqlite3_free (err_msg); + return -20; + } + if (strcmp + (err_msg, + "gpkgGetNormalZoom: input zoom level number outside of valid zoom levels") + != 0) + { + fprintf (stderr, + "Unexpected error message for underrange zoom level: %s\n", + err_msg); + sqlite3_free (err_msg); + return -21; + } + sqlite3_free (err_msg); + + /* test bad table name */ + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"no_such_table\", 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for bad table name level, got %i\n", + ret); + sqlite3_free (err_msg); + return -22; + } + if (strcmp + (err_msg, + "gpkgGetNormalZoom: tile table not found in gpkg_tile_matrix") != 0) + { + fprintf (stderr, "Unexpected error message for bad table name: %s\n", + err_msg); + sqlite3_free (err_msg); + return -23; + } + sqlite3_free (err_msg); + + /* test bad argument types */ + ret = + sqlite3_get_table (db_handle, "SELECT gpkgGetNormalZoom(3, 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for bad arg1 type, got %i\n", ret); + sqlite3_free (err_msg); + return -26; + } + if (strcmp + (err_msg, + "gpkgGetNormalZoom() error: argument 1 [tile_table_name] is not of the String type") + != 0) + { + fprintf (stderr, "Unexpected error message for bad arg1 type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -27; + } + sqlite3_free (err_msg); + + /* test bad argument types */ + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"test1_matrix_tiles\", 0.2)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for bad arg2 type, got %i\n", ret); + sqlite3_free (err_msg); + return -28; + } + if (strcmp + (err_msg, + "gpkgGetNormalZoom() error: argument 2 [inverted zoom level] is not of the integer type") + != 0) + { + fprintf (stderr, "Unexpected error message for bad arg2 type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -29; + } + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -100; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_get_normal_zoom_bad_geopackage.c b/src/spatialite/test/check_get_normal_zoom_bad_geopackage.c new file mode 100644 index 0000000..8825d1c --- /dev/null +++ b/src/spatialite/test/check_get_normal_zoom_bad_geopackage.c @@ -0,0 +1,149 @@ +/* + + check_get_normal_zoom_bad_geopackage.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_get_normal_zoom_bad_geopackage.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + /* create a corrupt gpkg_tile_matrix table (not spec compliant) */ + ret = + sqlite3_exec (db_handle, "DROP TABLE IF EXISTS gpkg_tile_matrix", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP gpkg_tile_matrix error: %s\n", err_msg); + sqlite3_free (err_msg); + return -4; + } + ret = + sqlite3_exec (db_handle, + "CREATE TABLE gpkg_tile_matrix (table_name TEXT NOT NULL, zoom_level TEXT NOT NULL, matrix_width INTEGER NOT NULL, matrix_height INTEGER NOT NULL)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE gpkg_tile_matrix error: %s\n", err_msg); + sqlite3_free (err_msg); + return -5; + } + ret = + sqlite3_exec (db_handle, + "INSERT INTO gpkg_tile_matrix VALUES (\"test1_matrix_tiles\", \"foo\", 1, 1)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT gpkg_tile_matrix zoom 0 error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -6; + } + + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"test1_matrix_tiles\", 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for broken geopackage, got %i\n", + ret); + sqlite3_free (err_msg); + return -7; + } + if (strcmp + (err_msg, + "gpkgGetNormalZoom: could not parse result (corrupt GeoPackage?)") != + 0) + { + fprintf (stderr, + "Unexpected error message for broken geopackage: %s\n", + err_msg); + sqlite3_free (err_msg); + return -8; + } + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -100; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_get_normal_zoom_bad_geopackage2.c b/src/spatialite/test/check_get_normal_zoom_bad_geopackage2.c new file mode 100644 index 0000000..2ada23b --- /dev/null +++ b/src/spatialite/test/check_get_normal_zoom_bad_geopackage2.c @@ -0,0 +1,166 @@ +/* + + check_get_normal_zoom_bad_geopackage2 - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_get_normal_zoom_bad_geopackage2.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + /* create tables to support future testing */ + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -2; + } + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"test1_matrix_tiles\", 4326, -180.0, -90.0, 180.0, 90.0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesTable() float bounds result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -3; + } + + /* create matrix levels 0, 1 and 4 */ + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 0, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesZoomLevel(0) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -4; + } + + /* delete the tile_matrix_metadata table (deliberately broken) */ + ret = + sqlite3_exec (db_handle, "DROP TABLE IF EXISTS gpkg_tile_matrix", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP gpkg_tile_matrix error: %s\n", err_msg); + sqlite3_free (err_msg); + return -5; + } + + /* now do the query */ + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"test1_matrix_tiles\", 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for broken geopackage, got %i\n", + ret); + sqlite3_free (err_msg); + return -6; + } + if (strcmp (err_msg, "no such table: gpkg_tile_matrix") != 0) + { + fprintf (stderr, + "Unexpected error message for broken geopackage: %s\n", + err_msg); + sqlite3_free (err_msg); + return -7; + } + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -100; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_get_normal_zoom_extension_load.c b/src/spatialite/test/check_get_normal_zoom_extension_load.c new file mode 100644 index 0000000..5812533 --- /dev/null +++ b/src/spatialite/test/check_get_normal_zoom_extension_load.c @@ -0,0 +1,362 @@ +/* + + check_get_normal_zoom_extension_load.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + char **results; + int rows; + int columns; + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_get_normal_zoom_extension_load.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + sqlite3_enable_load_extension (db_handle, 1); + + ret = + sqlite3_exec (db_handle, "SELECT load_extension('mod_spatialite')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "load_extension(mod_spatialite) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -2; + } + + /* create tables to support future testing */ + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -2; + } + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"test1_matrix_tiles\", 4326, -180.0, -90.0, 180.0, 90.0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesTable() float bounds result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -3; + } + + /* create matrix levels 0, 1 and 4 */ + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 0, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesZoomLevel(0) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -4; + } + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 1, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesZoomLevel(1) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -5; + } + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 4, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesZoomLevel(4) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -6; + } + + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"test1_matrix_tiles\", 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error1: %s\n", err_msg); + sqlite3_free (err_msg); + return -9; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + sqlite3_free_table (results); + return -10; + } + if (strcmp (results[1 * columns + 0], "4") != 0) + { + fprintf (stderr, "Unexpected result 0 (got %s, expected 4)", + results[rows * columns + 0]); + sqlite3_free_table (results); + return -11; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"test1_matrix_tiles\", 1)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error 2: %s\n", err_msg); + sqlite3_free (err_msg); + return -12; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -13; + } + if (strcmp (results[1 * columns + 0], "3") != 0) + { + fprintf (stderr, "Unexpected result 1 (got %s, expected 3)", + results[rows * columns + 0]); + return -14; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"test1_matrix_tiles\", 4)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error 3: %s\n", err_msg); + sqlite3_free (err_msg); + return -15; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + sqlite3_free_table (results); + return -16; + } + if (strcmp (results[1 * columns + 0], "0") != 0) + { + fprintf (stderr, "Unexpected result 4(got %s, expected 0)", + results[rows * columns + 0]); + sqlite3_free_table (results); + return -17; + } + sqlite3_free_table (results); + + /* test an out-of-range zoom number - expect exception */ + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"test1_matrix_tiles\", 5)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for overrange zoom level, got %i\n", + ret); + sqlite3_free (err_msg); + return -18; + } + if (strcmp + (err_msg, + "gpkgGetNormalZoom: input zoom level number outside of valid zoom levels") + != 0) + { + fprintf (stderr, + "Unexpected error message for overrange zoom level: %s\n", + err_msg); + sqlite3_free (err_msg); + return -19; + } + sqlite3_free (err_msg); + + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"test1_matrix_tiles\", -1)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for underrange zoom level, got %i\n", + ret); + sqlite3_free (err_msg); + return -20; + } + if (strcmp + (err_msg, + "gpkgGetNormalZoom: input zoom level number outside of valid zoom levels") + != 0) + { + fprintf (stderr, + "Unexpected error message for underrange zoom level: %s\n", + err_msg); + sqlite3_free (err_msg); + return -21; + } + sqlite3_free (err_msg); + + /* test bad table name */ + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"no_such_table\", 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for bad table name level, got %i\n", + ret); + sqlite3_free (err_msg); + return -22; + } + if (strcmp + (err_msg, + "gpkgGetNormalZoom: tile table not found in gpkg_tile_matrix") != 0) + { + fprintf (stderr, "Unexpected error message for bad table name: %s\n", + err_msg); + sqlite3_free (err_msg); + return -23; + } + sqlite3_free (err_msg); + + /* test bad argument types */ + ret = + sqlite3_get_table (db_handle, "SELECT gpkgGetNormalZoom(3, 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for bad arg1 type, got %i\n", ret); + sqlite3_free (err_msg); + return -26; + } + if (strcmp + (err_msg, + "gpkgGetNormalZoom() error: argument 1 [tile_table_name] is not of the String type") + != 0) + { + fprintf (stderr, "Unexpected error message for bad arg1 type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -27; + } + sqlite3_free (err_msg); + + /* test bad argument types */ + ret = + sqlite3_get_table (db_handle, + "SELECT gpkgGetNormalZoom(\"test1_matrix_tiles\", 0.2)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for bad arg2 type, got %i\n", ret); + sqlite3_free (err_msg); + return -28; + } + if (strcmp + (err_msg, + "gpkgGetNormalZoom() error: argument 2 [inverted zoom level] is not of the integer type") + != 0) + { + fprintf (stderr, "Unexpected error message for bad arg2 type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -29; + } + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -100; + } + + /* this is a hack to avoid excess valgrind noise */ + spatialite_cleanup (); + + return 0; +} diff --git a/src/spatialite/test/check_gpkgConvert.c b/src/spatialite/test/check_gpkgConvert.c new file mode 100644 index 0000000..f605589 --- /dev/null +++ b/src/spatialite/test/check_gpkgConvert.c @@ -0,0 +1,307 @@ +/* + + check_gpkgConvert.c - Test case for GeoPackage Extensions + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Sandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2014 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include +#include + +#include "config.h" + +#ifdef ENABLE_GEOPACKAGE /* only if GEOPACKAGE is enabled */ + +#include "sqlite3.h" +#include "spatialite.h" + +static void +do_unlink_all () +{ +/* deleting all temporary files */ + unlink ("./copy-gpkg_test.sqlite"); + unlink ("./copy-test-legacy-3.0.1.sqlite"); + unlink ("./out1.gpkg"); + unlink ("./out2.gpkg"); + unlink ("./out1.sqlite"); + unlink ("./out2.sqlite"); +} + +static int +do_load_legacy (const char *path) +{ +/* loading the Legacy Test DB */ + sqlite3 *db_handle; + int ret; + void *cache = NULL; + const char *sql; + char *sql_err = NULL; + + cache = spatialite_alloc_connection (); + ret = sqlite3_open_v2 (path, &db_handle, SQLITE_OPEN_READWRITE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open '%s': %s\n", path, + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + return 0; + } + spatialite_init_ex (db_handle, cache, 0); + +/* creating a table */ + sql = "CREATE TABLE test0 (id INTEGER NOT NULL PRIMARY KEY)"; + ret = sqlite3_exec (db_handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + +/* adding a geometry */ + sql = "SELECT AddGeometryColumn('test0', 'geom', 4326, 'POINT', 'XY')"; + ret = sqlite3_exec (db_handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + +/* inserting one row */ + sql = "INSERT INTO test0 (id, geom) VALUES(1, MakePoint(1, 2, 4326))"; + ret = sqlite3_exec (db_handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT INTO error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + return 1; +} + +static sqlite3 * +connect_db (const char *path, int flags, void *cache) +{ +/* attempting to connect a SQLite DB file */ + sqlite3 *db_handle; + int ret; + + ret = sqlite3_open_v2 (path, &db_handle, flags, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open '%s': %s\n", path, + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + return NULL; + } + spatialite_init_ex (db_handle, cache, 0); + return db_handle; +} + +static int +already_existing (const char *path) +{ +/* check if a file already exists */ + FILE *in = fopen (path, "rb"); + if (in != NULL) + { + /* already existing and accessible */ + fclose (in); + return 1; + } + if (errno == ENOENT) + return 0; + return 1; +} + +static int +open_connections (const char *path_origin, const char *path_destination, + void *cache_in, void *cache_out, sqlite3 ** xhandle_in, + sqlite3 ** xhandle_out) +{ +/* establishing IN and OUT DB connections */ + sqlite3 *handle_in = NULL; + sqlite3 *handle_out = NULL; + + if (already_existing (path_destination)) + { + fprintf (stderr, "Already existing output destination:\n\"%s\"\n", + path_destination); + return 0; + } + +/* attempting to connect the IN DB */ + handle_in = connect_db (path_origin, SQLITE_OPEN_READONLY, cache_in); + if (handle_in == NULL) + goto error; + +/* attempting to connect the OUT DB */ + handle_out = + connect_db (path_destination, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, cache_out); + if (handle_out == NULL) + goto error; + *xhandle_in = handle_in; + *xhandle_out = handle_out; + return 1; + + error: + if (handle_in != NULL) + sqlite3_close (handle_in); + if (handle_out != NULL) + sqlite3_close (handle_out); + return 0; +} + +int +main (int argc, char *argv[]) +{ + sqlite3 *handle_in = NULL; + sqlite3 *handle_out = NULL; + void *cache_in = NULL; + void *cache_out = NULL; + const char *path_origin; + const char *path_destination; + int ret; + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + do_unlink_all (); + +/* converting from SpatiaLite v4 to GPKG */ + ret = system ("cp ./gpkg_test.sqlite copy-gpkg_test.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy gpkg_test.sqlite database\n"); + return -1; + } + path_origin = "./copy-gpkg_test.sqlite"; + path_destination = "./out1.gpkg"; + cache_in = spatialite_alloc_connection (); + cache_out = spatialite_alloc_connection (); + if (!open_connections + (path_origin, path_destination, cache_in, cache_out, &handle_in, + &handle_out)) + { + do_unlink_all (); + return -1; + } + if (!gaiaSpatialite2GPKG + (handle_in, path_origin, handle_out, path_destination)) + { + do_unlink_all (); + return -1; + } + sqlite3_close (handle_in); + sqlite3_close (handle_out); + spatialite_cleanup_ex (cache_in); + spatialite_cleanup_ex (cache_out); + +/* converting from GPKG to SpatiaLite */ + path_origin = "./out1.gpkg"; + path_destination = "./out1.sqlite"; + cache_in = spatialite_alloc_connection (); + cache_out = spatialite_alloc_connection (); + if (!open_connections + (path_origin, path_destination, cache_in, cache_out, &handle_in, + &handle_out)) + { + do_unlink_all (); + return -1; + } + if (!gaiaGPKG2Spatialite + (handle_in, path_origin, handle_out, path_destination)) + { + do_unlink_all (); + return -1; + } + sqlite3_close (handle_in); + sqlite3_close (handle_out); + spatialite_cleanup_ex (cache_in); + spatialite_cleanup_ex (cache_out); + +/* converting from SpatiaLite v3 to GPKG */ + ret = + system ("cp ./test-legacy-3.0.1.sqlite copy-test-legacy-3.0.1.sqlite"); + if (ret != 0) + { + do_unlink_all (); + fprintf (stderr, "cannot copy test-legacy-3.0.1.sqlite database\n"); + return -1; + } + if (!do_load_legacy ("./copy-test-legacy-3.0.1.sqlite")) + { + do_unlink_all (); + return -1; + } + path_origin = "./copy-test-legacy-3.0.1.sqlite"; + path_destination = "./out2.sqlite"; + cache_in = spatialite_alloc_connection (); + cache_out = spatialite_alloc_connection (); + if (!open_connections + (path_origin, path_destination, cache_in, cache_out, &handle_in, + &handle_out)) + { + do_unlink_all (); + return -1; + } + if (!gaiaSpatialite2GPKG + (handle_in, path_origin, handle_out, path_destination)) + { + do_unlink_all (); + return -1; + } + sqlite3_close (handle_in); + sqlite3_close (handle_out); + spatialite_cleanup_ex (cache_in); + spatialite_cleanup_ex (cache_out); + + do_unlink_all (); + return 0; +} + +#endif /* endif GEOPACKAGE enabled */ diff --git a/src/spatialite/test/check_gpkgCreateFeaturesTable.c b/src/spatialite/test/check_gpkgCreateFeaturesTable.c new file mode 100644 index 0000000..9a771a5 --- /dev/null +++ b/src/spatialite/test/check_gpkgCreateFeaturesTable.c @@ -0,0 +1,534 @@ +/* + + check_gkpgCreateFeaturesTable.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2012-2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + void *cache = spatialite_alloc_connection (); + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gkpgCreateFeaturesTable.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -100; + } + + ret = + sqlite3_exec (db_handle, + "CREATE TABLE \"testfeats1\" (id INTEGER PRIMARY KEY AUTOINCREMENT, text_attribute TEXT, real_attribute REAL, boolean_attribute BOOLEAN, raster_or_photo BLOB)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected create testfeats1 table result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -101; + } + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgAddGeometryColumn(\"testfeats1\", \"thegeom\", \"POINT\", 0, 0, 4326)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgAddGeometryColumn() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -102; + } + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgAddGeometryColumn(\"testfeats1\", \"thegeom\", \"POINT\", 0, 0, 4326)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add geometry column duplicate column name, got %i\n", + ret); + sqlite3_free (err_msg); + return -103; + } + +#if 0 + /* check gpkg_contents table entry is OK */ + ret = + sqlite3_get_table (db_handle, + "SELECT data_type, identifier, description, last_change, min_x, min_y, max_x, max_y, srs_id FROM gpkg_contents WHERE table_name = 'testtiles1'", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error1: %s\n", err_msg); + sqlite3_free (err_msg); + return -104; + } + if ((rows != 1) || (columns != 9)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -105; + } + if (strcmp (results[1 * columns + 0], "tiles") != 0) + { + fprintf (stderr, + "Unexpected data_type result (got %s, expected tiles)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -106; + } + if (results[1 * columns + 1] != NULL) + { + fprintf (stderr, + "Unexpected identifier result (got %s, expected NULL)", + results[1 * columns + 1]); + sqlite3_free_table (results); + return -107; + } + if (strcmp (results[1 * columns + 2], "") != 0) + { + fprintf (stderr, + "Unexpected description result (got %s, expected an empty string)", + results[1 * columns + 2]); + sqlite3_free_table (results); + return -108; + } + /* TODO: this test should be more rigorous */ + if (results[1 * columns + 3] == NULL) + { + fprintf (stderr, "Unexpected last_change result - null)", + results[1 * columns + 3]); + sqlite3_free_table (results); + return -109; + } + if ((results[1 * columns + 4] == NULL) + || (strcmp (results[1 * columns + 4], "-180.0") != 0)) + { + fprintf (stderr, "Unexpected min_x result (got %s, expected -180.0)", + results[1 * columns + 4]); + sqlite3_free_table (results); + return -110; + } + if ((results[1 * columns + 5] == NULL) + || (strcmp (results[1 * columns + 5], "-90.0") != 0)) + { + fprintf (stderr, "Unexpected min_y result (got %s, expected -90.0)", + results[1 * columns + 5]); + sqlite3_free_table (results); + return -111; + } + if ((results[1 * columns + 6] == NULL) + || (strcmp (results[1 * columns + 6], "180.0") != 0)) + { + fprintf (stderr, "Unexpected max_x result (got %s, expected 180.0)", + results[1 * columns + 6]); + sqlite3_free_table (results); + return -112; + } + if ((results[1 * columns + 7] == NULL) + || (strcmp (results[1 * columns + 7], "90.0") != 0)) + { + fprintf (stderr, "Unexpected max_y result (got %s, expected 90.0)", + results[1 * columns + 7]); + sqlite3_free_table (results); + return -113; + } + if ((results[1 * columns + 8] == NULL) + || (strcmp (results[1 * columns + 8], "4326") != 0)) + { + fprintf (stderr, "Unexpected srid result (got %s, expected 4326)", + results[1 * columns + 8]); + sqlite3_free_table (results); + return -114; + } + sqlite3_free_table (results); + + /* check gpkg_tile_matrix_set table entry is OK */ + ret = + sqlite3_get_table (db_handle, + "SELECT min_x, min_y, max_x, max_y, srs_id FROM gpkg_tile_matrix_set WHERE table_name = 'testtiles1'", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error1: %s\n", err_msg); + sqlite3_free (err_msg); + return -140; + } + if ((rows != 1) || (columns != 5)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -141; + } + if ((results[1 * columns + 0] == NULL) + || (strcmp (results[1 * columns + 0], "-180.0") != 0)) + { + fprintf (stderr, "Unexpected min_x result (got %s, expected -180.0)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -142; + } + if ((results[1 * columns + 1] == NULL) + || (strcmp (results[1 * columns + 1], "-90.0") != 0)) + { + fprintf (stderr, "Unexpected min_y result (got %s, expected -90.0)", + results[1 * columns + 1]); + sqlite3_free_table (results); + return -143; + } + if ((results[1 * columns + 2] == NULL) + || (strcmp (results[1 * columns + 2], "180.0") != 0)) + { + fprintf (stderr, "Unexpected max_x result (got %s, expected 180.0)", + results[1 * columns + 2]); + sqlite3_free_table (results); + return -144; + } + if ((results[1 * columns + 3] == NULL) + || (strcmp (results[1 * columns + 3], "90.0") != 0)) + { + fprintf (stderr, "Unexpected max_y result (got %s, expected 90.0)", + results[1 * columns + 3]); + sqlite3_free_table (results); + return -145; + } + if ((results[1 * columns + 4] == NULL) + || (strcmp (results[1 * columns + 4], "4326") != 0)) + { + fprintf (stderr, "Unexpected srid result (got %s, expected 4326)", + results[1 * columns + 4]); + sqlite3_free_table (results); + return -146; + } + sqlite3_free_table (results); +#endif + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "CREATE TABLE \"ctd\" (id INTEGER PRIMARY KEY AUTOINCREMENT, text_attribute TEXT, real_attribute REAL, boolean_attribute BOOLEAN, raster_or_photo BLOB)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Unexpected create ctd table result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -200; + } + ret = + sqlite3_exec (db_handle, + "SELECT gpkgAddGeometryColumn(\"ctd\", 2.4, \"POINT\", 0, 0, 4326)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add geometry column bad column type, got %i\n", + ret); + sqlite3_free (err_msg); + return -201; + } + if (strcmp + (err_msg, + "gpkgAddGeometryColumn() error: argument 2 [geometry_column_name] is not of the string type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgAddGeometryColumn arg 2: %s\n", + err_msg); + sqlite3_free (err_msg); + return -202; + } + sqlite3_free (err_msg); + + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgAddGeometryColumn(\"ctd\", \"the_geom\", 4, 0, 0, 4326)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add geometry column bad geom type, got %i\n", + ret); + sqlite3_free (err_msg); + return -203; + } + if (strcmp + (err_msg, + "gpkgAddGeometryColumn() error: argument 3 [geometry_type] is not of the string type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgAddGeometryColumn arg 3: %s\n", + err_msg); + sqlite3_free (err_msg); + return -204; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgAddGeometryColumn(8.3, \"the_geom\", \"POINT\", 0, 0, 4326)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add geometry column bad table type, got %i\n", + ret); + sqlite3_free (err_msg); + return -205; + } + if (strcmp + (err_msg, + "gpkgAddGeometryColumn() error: argument 1 [table] is not of the string type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgAddGeometryColumn arg 1: %s\n", + err_msg); + sqlite3_free (err_msg); + return -206; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgAddGeometryColumn(\"ctd\", \"the_geom\", \"POINT\", \"z\", 0, 4326)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add geometry column bad z type, got %i\n", + ret); + sqlite3_free (err_msg); + return -207; + } + if (strcmp + (err_msg, + "gpkgAddGeometryColumn() error: argument 4 [with_z] is not of the integer type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgAddGeometryColumn arg 4: %s\n", + err_msg); + sqlite3_free (err_msg); + return -208; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgAddGeometryColumn(\"ctd\", \"the_geom\", \"POINT\", 0, \"m\", 4326)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add geometry column bad m type, got %i\n", + ret); + sqlite3_free (err_msg); + return -209; + } + if (strcmp + (err_msg, + "gpkgAddGeometryColumn() error: argument 5 [with_m] is not of the integer type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgAddGeometryColumn arg 5: %s\n", + err_msg); + sqlite3_free (err_msg); + return -210; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgAddGeometryColumn(\"ctd\", \"the_geom\", \"POINT\", 3, 0, 4326)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add geometry column bad z value, got %i\n", + ret); + sqlite3_free (err_msg); + return -211; + } + if (strcmp + (err_msg, + "gpkgAddGeometryColumn() error: argument 4 [with_z] is not a known value (expected 0, 1 or 2)") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgAddGeometryColumn arg 4: %s\n", + err_msg); + sqlite3_free (err_msg); + return -212; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgAddGeometryColumn(\"ctd\", \"the_geom\", \"POINT\", 0, 3, 4326)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add geometry column bad m value, got %i\n", + ret); + sqlite3_free (err_msg); + return -213; + } + if (strcmp + (err_msg, + "gpkgAddGeometryColumn() error: argument 5 [with_m] is not a known value (expected 0, 1 or 2)") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgAddGeometryColumn arg 5: %s\n", + err_msg); + sqlite3_free (err_msg); + return -214; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgAddGeometryColumn(\"ctd\", \"the_geom\", \"POINT\", 0, 2, \"srid\")", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add geometry column bad srid type, got %i\n", + ret); + sqlite3_free (err_msg); + return -215; + } + if (strcmp + (err_msg, + "gpkgAddGeometryColumn() error: argument 6 [srid] is not of the integer type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgAddGeometryColumn arg 6: %s\n", + err_msg); + sqlite3_free (err_msg); + return -216; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgAddGeometryColumn(\"ctd\", \"the_geom\", \"blah\", 0, 1, 4326)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add geometry column bad geom type value, got %i\n", + ret); + sqlite3_free (err_msg); + return -217; + } + if (strcmp + (err_msg, + "gpkgAddGeometryColumn() error: argument 3 [geometry_type] not a recognised geometry type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgAddGeometryColumn arg 3: %s\n", + err_msg); + sqlite3_free (err_msg); + return -218; + } + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -300; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_gpkgCreateTilesTable.c b/src/spatialite/test/check_gpkgCreateTilesTable.c new file mode 100644 index 0000000..fcee473 --- /dev/null +++ b/src/spatialite/test/check_gpkgCreateTilesTable.c @@ -0,0 +1,487 @@ +/* + + check_gpkgCreateTilesTable.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gpkgCreateTilesTable.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -100; + } + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"testtiles1\", 4326, -180.0, -90.0, 180.0, 90.0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesTable() float bounds result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -101; + } + + /* same, but using integer bounds */ + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"testtiles2\", 4326, -180, -90, 180, 90)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesTable() integer bounds result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -102; + } + + /* check gpkg_contents table entry is OK */ + ret = + sqlite3_get_table (db_handle, + "SELECT data_type, identifier, description, last_change, min_x, min_y, max_x, max_y, srs_id FROM gpkg_contents WHERE table_name = 'testtiles1'", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error1: %s\n", err_msg); + sqlite3_free (err_msg); + return -104; + } + if ((rows != 1) || (columns != 9)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -105; + } + if (strcmp (results[1 * columns + 0], "tiles") != 0) + { + fprintf (stderr, + "Unexpected data_type result (got %s, expected tiles)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -106; + } + if (results[1 * columns + 1] != NULL) + { + fprintf (stderr, + "Unexpected identifier result (got %s, expected NULL)", + results[1 * columns + 1]); + sqlite3_free_table (results); + return -107; + } + if (strcmp (results[1 * columns + 2], "") != 0) + { + fprintf (stderr, + "Unexpected description result (got %s, expected an empty string)", + results[1 * columns + 2]); + sqlite3_free_table (results); + return -108; + } + /* TODO: this test should be more rigorous */ + if (results[1 * columns + 3] == NULL) + { + fprintf (stderr, "Unexpected last_change result - null)"); + sqlite3_free_table (results); + return -109; + } + if ((results[1 * columns + 4] == NULL) + || (strcmp (results[1 * columns + 4], "-180.0") != 0)) + { + fprintf (stderr, "Unexpected min_x result (got %s, expected -180.0)", + results[1 * columns + 4]); + sqlite3_free_table (results); + return -110; + } + if ((results[1 * columns + 5] == NULL) + || (strcmp (results[1 * columns + 5], "-90.0") != 0)) + { + fprintf (stderr, "Unexpected min_y result (got %s, expected -90.0)", + results[1 * columns + 5]); + sqlite3_free_table (results); + return -111; + } + if ((results[1 * columns + 6] == NULL) + || (strcmp (results[1 * columns + 6], "180.0") != 0)) + { + fprintf (stderr, "Unexpected max_x result (got %s, expected 180.0)", + results[1 * columns + 6]); + sqlite3_free_table (results); + return -112; + } + if ((results[1 * columns + 7] == NULL) + || (strcmp (results[1 * columns + 7], "90.0") != 0)) + { + fprintf (stderr, "Unexpected max_y result (got %s, expected 90.0)", + results[1 * columns + 7]); + sqlite3_free_table (results); + return -113; + } + if ((results[1 * columns + 8] == NULL) + || (strcmp (results[1 * columns + 8], "4326") != 0)) + { + fprintf (stderr, "Unexpected srid result (got %s, expected 4326)", + results[1 * columns + 8]); + sqlite3_free_table (results); + return -114; + } + sqlite3_free_table (results); + + /* check gpkg_tile_matrix_set table entry is OK */ + ret = + sqlite3_get_table (db_handle, + "SELECT min_x, min_y, max_x, max_y, srs_id FROM gpkg_tile_matrix_set WHERE table_name = 'testtiles1'", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error1: %s\n", err_msg); + sqlite3_free (err_msg); + return -140; + } + if ((rows != 1) || (columns != 5)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -141; + } + if ((results[1 * columns + 0] == NULL) + || (strcmp (results[1 * columns + 0], "-180.0") != 0)) + { + fprintf (stderr, "Unexpected min_x result (got %s, expected -180.0)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -142; + } + if ((results[1 * columns + 1] == NULL) + || (strcmp (results[1 * columns + 1], "-90.0") != 0)) + { + fprintf (stderr, "Unexpected min_y result (got %s, expected -90.0)", + results[1 * columns + 1]); + sqlite3_free_table (results); + return -143; + } + if ((results[1 * columns + 2] == NULL) + || (strcmp (results[1 * columns + 2], "180.0") != 0)) + { + fprintf (stderr, "Unexpected max_x result (got %s, expected 180.0)", + results[1 * columns + 2]); + sqlite3_free_table (results); + return -144; + } + if ((results[1 * columns + 3] == NULL) + || (strcmp (results[1 * columns + 3], "90.0") != 0)) + { + fprintf (stderr, "Unexpected max_y result (got %s, expected 90.0)", + results[1 * columns + 3]); + sqlite3_free_table (results); + return -145; + } + if ((results[1 * columns + 4] == NULL) + || (strcmp (results[1 * columns + 4], "4326") != 0)) + { + fprintf (stderr, "Unexpected srid result (got %s, expected 4326)", + results[1 * columns + 4]); + sqlite3_free_table (results); + return -146; + } + sqlite3_free_table (results); + + sqlite3_free (err_msg); + + /* try some bad arguments */ + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(3, 4326, -180, -90, 180, 90)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add tiles table, non-string table name, got %i\n", + ret); + sqlite3_free (err_msg); + return -150; + } + if (strcmp + (err_msg, + "gpkgCreateTilesTable() error: argument 1 [table] is not of the String type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgCreateTilesTable arg 1 bad type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -151; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"test2\", \"srid\", -180, -90, 180, 90)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add tiles table, non-integer SRID value, got %i\n", + ret); + sqlite3_free (err_msg); + return -152; + } + if (strcmp + (err_msg, + "gpkgCreateTilesTable() error: argument 2 [srid] is not of the integer type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgCreateTilesTable arg 2 bad type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -153; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"test2\", 0, \"minx\", -90, 180, 90)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add tiles table, non-numeric min_x, got %i\n", + ret); + sqlite3_free (err_msg); + return -154; + } + if (strcmp + (err_msg, + "gpkgCreateTilesTable() error: argument 3 [min_x] is not a numeric type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgCreateTilesTable arg 3 bad type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -155; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"test2\", 0, -180, \"min_y\", 180, 90)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add tiles table, non-numeric min_y, got %i\n", + ret); + sqlite3_free (err_msg); + return -156; + } + if (strcmp + (err_msg, + "gpkgCreateTilesTable() error: argument 4 [min_y] is not a numeric type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgCreateTilesTable arg 4 bad type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -157; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"test2\", 0, -180, -90, \"max_x\", 90)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add tiles table, non-numeric max_x, got %i\n", + ret); + sqlite3_free (err_msg); + return -158; + } + if (strcmp + (err_msg, + "gpkgCreateTilesTable() error: argument 5 [max_x] is not a numeric type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgCreateTilesTable arg 5 bad type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -159; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"test2\", 0, -180, -90, 180, \"max_y\")", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add tiles table, non-numeric max_y, got %i\n", + ret); + sqlite3_free (err_msg); + return -160; + } + if (strcmp + (err_msg, + "gpkgCreateTilesTable() error: argument 6 [max_y] is not a numeric type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgCreateTilesTable arg 6 bad type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -161; + } + sqlite3_free (err_msg); + + /* try duplicate entry */ + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"testtiles2\", 0, -180, -85, 180, 85)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add tiles table, duplicate table, got %i\n", + ret); + sqlite3_free (err_msg); + return -162; + } + sqlite3_free (err_msg); + + /* try duplicate entry */ + ret = + sqlite3_exec (db_handle, + "CREATE TABLE alreadythere (id INTEGER PRIMARY KEY AUTOINCREMENT)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected error for add tiles table, existing table setup %i (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -164; + } + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"alreadythere\", 0, -180, -85, 180, 85)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add tiles table, duplicate table manual, got %i\n", + ret); + sqlite3_free (err_msg); + return -165; + } + if (strcmp (err_msg, "table alreadythere already exists") != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgCreateTilesTable dupe manual table: %s\n", + err_msg); + sqlite3_free (err_msg); + return -163; + } + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_gpkgCreateTilesTableMissingSRID.c b/src/spatialite/test/check_gpkgCreateTilesTableMissingSRID.c new file mode 100644 index 0000000..075357c --- /dev/null +++ b/src/spatialite/test/check_gpkgCreateTilesTableMissingSRID.c @@ -0,0 +1,115 @@ +/* + + check_gpkgCreateTilesTableMissingSRID.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + void *cache = spatialite_alloc_connection (); + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gpkgCreateTilesTableMissingSRID.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -100; + } + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"testtile1\", 3.14, 10.1, 20.2, 30.3, 40.4)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "Expected error for bad SRID, got %i\n", ret); + sqlite3_free (err_msg); + return -102; + } + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_gpkgCreateTilesZoomLevel.c b/src/spatialite/test/check_gpkgCreateTilesZoomLevel.c new file mode 100644 index 0000000..c56452c --- /dev/null +++ b/src/spatialite/test/check_gpkgCreateTilesZoomLevel.c @@ -0,0 +1,317 @@ +/* + + check_gpkgCreateTilesZoomLevel.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2011,2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + void *cache = spatialite_alloc_connection (); + char *old_SPATIALITE_SECURITY_ENV = NULL; +#ifdef _WIN32 + char *env; +#endif /* not WIN32 */ + + old_SPATIALITE_SECURITY_ENV = getenv ("SPATIALITE_SECURITY"); +#ifdef _WIN32 + putenv ("SPATIALITE_SECURITY=relaxed"); +#else /* not WIN32 */ + setenv ("SPATIALITE_SECURITY", "relaxed", 1); +#endif + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gpkgCreateTilesZoomLevel.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + + if (old_SPATIALITE_SECURITY_ENV) + { +#ifdef _WIN32 + env = + sqlite3_mprintf ("SPATIALITE_SECURITY=%s", + old_SPATIALITE_SECURITY_ENV); + putenv (env); + sqlite3_free (env); +#else /* not WIN32 */ + setenv ("SPATIALITE_SECURITY", old_SPATIALITE_SECURITY_ENV, 1); +#endif + } + else + { +#ifdef _WIN32 + putenv ("SPATIALITE_SECURITY="); +#else /* not WIN32 */ + unsetenv ("SPATIALITE_SECURITY"); +#endif + } + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -2; + } + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesTable(\"test1_matrix_tiles\", 4326, -180.0, -90.0, 180.0, 90.0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesTable() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -3; + } + + /* create matrix level 0 */ + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 0, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesZoomLevel(0) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -6; + } + + /* try duplicate entry */ + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 0, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add zoom level, duplicate entry, got %i\n", + ret); + sqlite3_free (err_msg); + return -10; + } + sqlite3_free (err_msg); + + /* try some bad arguments */ + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(9.4, 4, 360, 180)", NULL, + NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add zoom level, non-string table name, got %i\n", + ret); + sqlite3_free (err_msg); + return -18; + } + if (strcmp + (err_msg, + "gpkgCreateTilesZoomLevel() error: argument 1 [table] is not of the String type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgAddGeometryColumn arg 1 bad type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -21; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 4.2, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add zoom level, non-integer zoom, got %i\n", + ret); + sqlite3_free (err_msg); + return -20; + } + if (strcmp + (err_msg, + "gpkgCreateTilesZoomLevel() error: argument 2 [zoom level] is not of the integer type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgAddGeometryColumn arg 2 bad type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -21; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 4, \"x\", 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add zoom level, non-numeric extent, got %i\n", + ret); + sqlite3_free (err_msg); + return -22; + } + if (strcmp + (err_msg, + "gpkgCreateTilesZoomLevel() error: argument 3 [extent_width] is not of a numerical type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgAddGeometryColumn arg 3 bad type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -23; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 4, 360, \"y\")", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add zoom level, non-numeric height extent, got %i\n", + ret); + sqlite3_free (err_msg); + return -24; + } + if (strcmp + (err_msg, + "gpkgCreateTilesZoomLevel() error: argument 4 [extent_height] is not of a numerical type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgAddGeometryColumn arg 4 bad type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -25; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", -1, 360, 180)", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for add zoom level, negative zoom, got %i\n", + ret); + sqlite3_free (err_msg); + return -26; + } + if (strcmp + (err_msg, + "gpkgCreateTilesZoomLevel() error: argument 2 [zoom level] must be >= 0") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgAddGeometryColumn arg 2 bad value: %s\n", + err_msg); + sqlite3_free (err_msg); + return -27; + } + sqlite3_free (err_msg); + + /* Try float extent */ + ret = + sqlite3_exec (db_handle, + "SELECT gpkgCreateTilesZoomLevel(\"test1_matrix_tiles\", 1, 360.0, 180.0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateTilesZoomLevel(1) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -30; + } + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_gpkgGetImageFormat.c b/src/spatialite/test/check_gpkgGetImageFormat.c new file mode 100644 index 0000000..5c269f7 --- /dev/null +++ b/src/spatialite/test/check_gpkgGetImageFormat.c @@ -0,0 +1,159 @@ +/* + + check_gpkgGetImageFormat.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + char *sql_statement; + sqlite3_stmt *stmt; + int ret; + char *old_SPATIALITE_SECURITY_ENV = NULL; +#ifdef _WIN32 + char *env; +#endif /* not WIN32 */ + void *cache = spatialite_alloc_connection (); + + old_SPATIALITE_SECURITY_ENV = getenv ("SPATIALITE_SECURITY"); +#ifdef _WIN32 + putenv ("SPATIALITE_SECURITY=relaxed"); +#else /* not WIN32 */ + setenv ("SPATIALITE_SECURITY", "relaxed", 1); +#endif + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gpkgGetImageFormat.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (old_SPATIALITE_SECURITY_ENV) + { +#ifdef _WIN32 + env = + sqlite3_mprintf ("SPATIALITE_SECURITY=%s", + old_SPATIALITE_SECURITY_ENV); + putenv (env); + sqlite3_free (env); +#else /* not WIN32 */ + setenv ("SPATIALITE_SECURITY", old_SPATIALITE_SECURITY_ENV, 1); +#endif + } + else + { +#ifdef _WIN32 + putenv ("SPATIALITE_SECURITY="); +#else /* not WIN32 */ + unsetenv ("SPATIALITE_SECURITY"); +#endif + } + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + sql_statement = "SELECT gpkgGetImageType(BlobFromFile(\"tile111.jpeg\"))"; + ret = + sqlite3_prepare_v2 (db_handle, sql_statement, strlen (sql_statement), + &stmt, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "failed to prepare SQL statement: %i (%s)\n", ret, + sqlite3_errmsg (db_handle)); + return -30; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_ROW) + { + fprintf (stderr, "unexpected return value for first step: %i\n", ret); + return -31; + } + if (sqlite3_column_type (stmt, 0) != SQLITE_TEXT) + { + fprintf (stderr, "bad type for column 0: %i\n", + sqlite3_column_type (stmt, 0)); + return -32; + } + if (strcmp ((const char *) sqlite3_column_text (stmt, 0), "jpeg") != 0) + { + fprintf (stderr, "wrong image type: %s\n", + sqlite3_column_text (stmt, 0)); + return -33; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_DONE) + { + fprintf (stderr, "unexpected return value for second step: %i\n", + ret); + return -34; + } + ret = sqlite3_finalize (stmt); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_gpkgGetImageFormat_nonblob.c b/src/spatialite/test/check_gpkgGetImageFormat_nonblob.c new file mode 100644 index 0000000..cde0dda --- /dev/null +++ b/src/spatialite/test/check_gpkgGetImageFormat_nonblob.c @@ -0,0 +1,110 @@ +/* + + check_gpkgGetImageFormat_nonblob.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + char *sql_statement; + sqlite3_stmt *stmt; + int ret; + void *cache = spatialite_alloc_connection (); + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gpkgGetImageFormat_nonblobsqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + sql_statement = "SELECT gpkgGetImageType(1000)"; + ret = + sqlite3_prepare_v2 (db_handle, sql_statement, strlen (sql_statement), + &stmt, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "failed to prepare SQL statement: %i (%s)\n", ret, + sqlite3_errmsg (db_handle)); + return -30; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "unexpected return value for first step: %i\n", ret); + return -31; + } + /* TODO: check the error string */ + ret = sqlite3_finalize (stmt); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_gpkgGetImageFormat_nonimage.c b/src/spatialite/test/check_gpkgGetImageFormat_nonimage.c new file mode 100644 index 0000000..5aeb41b --- /dev/null +++ b/src/spatialite/test/check_gpkgGetImageFormat_nonimage.c @@ -0,0 +1,129 @@ +/* + + check_gpkgGetImageFormat_nonimage.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + char *sql_statement; + sqlite3_stmt *stmt; + int ret; + void *cache = spatialite_alloc_connection (); + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gpkgGetImageFormat_nonimage.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + sql_statement = "SELECT gpkgGetImageType(zeroblob(1000))"; + ret = + sqlite3_prepare_v2 (db_handle, sql_statement, strlen (sql_statement), + &stmt, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "failed to prepare SQL statement: %i (%s)\n", ret, + sqlite3_errmsg (db_handle)); + return -30; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_ROW) + { + fprintf (stderr, "unexpected return value for first step: %i\n", ret); + return -31; + } + if (sqlite3_column_type (stmt, 0) != SQLITE_TEXT) + { + fprintf (stderr, "bad type for column 0: %i\n", + sqlite3_column_type (stmt, 0)); + return -32; + } + if (strcmp ((const char *) sqlite3_column_text (stmt, 0), "unknown") != 0) + { + fprintf (stderr, "wrong image type: %s\n", + sqlite3_column_text (stmt, 0)); + return -33; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_DONE) + { + fprintf (stderr, "unexpected return value for second step: %i\n", + ret); + return -34; + } + ret = sqlite3_finalize (stmt); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_gpkgGetImageFormat_png.c b/src/spatialite/test/check_gpkgGetImageFormat_png.c new file mode 100644 index 0000000..8ea4263 --- /dev/null +++ b/src/spatialite/test/check_gpkgGetImageFormat_png.c @@ -0,0 +1,159 @@ +/* + + check_gpkgGetImageFormat_png.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + char *sql_statement; + sqlite3_stmt *stmt; + int ret; + void *cache = spatialite_alloc_connection (); + char *old_SPATIALITE_SECURITY_ENV = NULL; +#ifdef _WIN32 + char *env; +#endif /* not WIN32 */ + + old_SPATIALITE_SECURITY_ENV = getenv ("SPATIALITE_SECURITY"); +#ifdef _WIN32 + putenv ("SPATIALITE_SECURITY=relaxed"); +#else /* not WIN32 */ + setenv ("SPATIALITE_SECURITY", "relaxed", 1); +#endif + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gpkgGetImageFormat_png.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (old_SPATIALITE_SECURITY_ENV) + { +#ifdef _WIN32 + env = + sqlite3_mprintf ("SPATIALITE_SECURITY=%s", + old_SPATIALITE_SECURITY_ENV); + putenv (env); + sqlite3_free (env); +#else /* not WIN32 */ + setenv ("SPATIALITE_SECURITY", old_SPATIALITE_SECURITY_ENV, 1); +#endif + } + else + { +#ifdef _WIN32 + putenv ("SPATIALITE_SECURITY="); +#else /* not WIN32 */ + unsetenv ("SPATIALITE_SECURITY"); +#endif + } + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + sql_statement = "SELECT gpkgGetImageType(BlobFromFile(\"empty.png\"))"; + ret = + sqlite3_prepare_v2 (db_handle, sql_statement, strlen (sql_statement), + &stmt, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "failed to prepare SQL statement: %i (%s)\n", ret, + sqlite3_errmsg (db_handle)); + return -30; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_ROW) + { + fprintf (stderr, "unexpected return value for first step: %i\n", ret); + return -31; + } + if (sqlite3_column_type (stmt, 0) != SQLITE_TEXT) + { + fprintf (stderr, "bad type for column 0: %i\n", + sqlite3_column_type (stmt, 0)); + return -32; + } + if (strcmp ((const char *) sqlite3_column_text (stmt, 0), "png") != 0) + { + fprintf (stderr, "wrong image type: %s\n", + sqlite3_column_text (stmt, 0)); + return -33; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_DONE) + { + fprintf (stderr, "unexpected return value for second step: %i\n", + ret); + return -34; + } + ret = sqlite3_finalize (stmt); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_gpkgGetImageFormat_tiff.c b/src/spatialite/test/check_gpkgGetImageFormat_tiff.c new file mode 100644 index 0000000..c8bb404 --- /dev/null +++ b/src/spatialite/test/check_gpkgGetImageFormat_tiff.c @@ -0,0 +1,159 @@ +/* + + check_gpkgGetImageFormat_tiff.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + char *sql_statement; + sqlite3_stmt *stmt; + int ret; + void *cache = spatialite_alloc_connection (); + char *old_SPATIALITE_SECURITY_ENV = NULL; +#ifdef _WIN32 + char *env; +#endif /* not WIN32 */ + + old_SPATIALITE_SECURITY_ENV = getenv ("SPATIALITE_SECURITY"); +#ifdef _WIN32 + putenv ("SPATIALITE_SECURITY=relaxed"); +#else /* not WIN32 */ + setenv ("SPATIALITE_SECURITY", "relaxed", 1); +#endif + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gpkgGetImageFormat_tiff.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (old_SPATIALITE_SECURITY_ENV) + { +#ifdef _WIN32 + env = + sqlite3_mprintf ("SPATIALITE_SECURITY=%s", + old_SPATIALITE_SECURITY_ENV); + putenv (env); + sqlite3_free (env); +#else /* not WIN32 */ + setenv ("SPATIALITE_SECURITY", old_SPATIALITE_SECURITY_ENV, 1); +#endif + } + else + { +#ifdef _WIN32 + putenv ("SPATIALITE_SECURITY="); +#else /* not WIN32 */ + unsetenv ("SPATIALITE_SECURITY"); +#endif + } + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + sql_statement = "SELECT gpkgGetImageType(BlobFromFile(\"empty.tif\"))"; + ret = + sqlite3_prepare_v2 (db_handle, sql_statement, strlen (sql_statement), + &stmt, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "failed to prepare SQL statement: %i (%s)\n", ret, + sqlite3_errmsg (db_handle)); + return -30; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_ROW) + { + fprintf (stderr, "unexpected return value for first step: %i\n", ret); + return -31; + } + if (sqlite3_column_type (stmt, 0) != SQLITE_TEXT) + { + fprintf (stderr, "bad type for column 0: %i\n", + sqlite3_column_type (stmt, 0)); + return -32; + } + if (strcmp ((const char *) sqlite3_column_text (stmt, 0), "tiff") != 0) + { + fprintf (stderr, "wrong image type: %s\n", + sqlite3_column_text (stmt, 0)); + return -33; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_DONE) + { + fprintf (stderr, "unexpected return value for second step: %i\n", + ret); + return -34; + } + ret = sqlite3_finalize (stmt); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_gpkgGetImageFormat_webp.c b/src/spatialite/test/check_gpkgGetImageFormat_webp.c new file mode 100644 index 0000000..1136e42 --- /dev/null +++ b/src/spatialite/test/check_gpkgGetImageFormat_webp.c @@ -0,0 +1,159 @@ +/* + + check_gpkgGetImageFormat_webp.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include +#include + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + char *sql_statement; + sqlite3_stmt *stmt; + int ret; + void *cache = spatialite_alloc_connection (); + char *old_SPATIALITE_SECURITY_ENV = NULL; +#ifdef _WIN32 + char *env; +#endif /* not WIN32 */ + + old_SPATIALITE_SECURITY_ENV = getenv ("SPATIALITE_SECURITY"); +#ifdef _WIN32 + putenv ("SPATIALITE_SECURITY=relaxed"); +#else /* not WIN32 */ + setenv ("SPATIALITE_SECURITY", "relaxed", 1); +#endif + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gpkgGetImageFormat_webp.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (old_SPATIALITE_SECURITY_ENV) + { +#ifdef _WIN32 + env = + sqlite3_mprintf ("SPATIALITE_SECURITY=%s", + old_SPATIALITE_SECURITY_ENV); + putenv (env); + sqlite3_free (env); +#else /* not WIN32 */ + setenv ("SPATIALITE_SECURITY", old_SPATIALITE_SECURITY_ENV, 1); +#endif + } + else + { +#ifdef _WIN32 + putenv ("SPATIALITE_SECURITY="); +#else /* not WIN32 */ + unsetenv ("SPATIALITE_SECURITY"); +#endif + } + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + sql_statement = "SELECT gpkgGetImageType(BlobFromFile(\"test.webp\"))"; + ret = + sqlite3_prepare_v2 (db_handle, sql_statement, strlen (sql_statement), + &stmt, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "failed to prepare SQL statement: %i (%s)\n", ret, + sqlite3_errmsg (db_handle)); + return -30; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_ROW) + { + fprintf (stderr, "unexpected return value for first step: %i\n", ret); + return -31; + } + if (sqlite3_column_type (stmt, 0) != SQLITE_TEXT) + { + fprintf (stderr, "bad type for column 0: %i\n", + sqlite3_column_type (stmt, 0)); + return -32; + } + if (strcmp ((const char *) sqlite3_column_text (stmt, 0), "x-webp") != 0) + { + fprintf (stderr, "wrong image type: %s\n", + sqlite3_column_text (stmt, 0)); + return -33; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_DONE) + { + fprintf (stderr, "unexpected return value for second step: %i\n", + ret); + return -34; + } + ret = sqlite3_finalize (stmt); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_gpkgInsertEpsgSRID.c b/src/spatialite/test/check_gpkgInsertEpsgSRID.c new file mode 100644 index 0000000..9848ff9 --- /dev/null +++ b/src/spatialite/test/check_gpkgInsertEpsgSRID.c @@ -0,0 +1,260 @@ +/* + + check_gpkgInsertEpsgSRID.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + char *sql_statement; + sqlite3_stmt *stmt; + void *cache = spatialite_alloc_connection (); + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gpkgInsertEpsgSRID.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -100; + } + + ret = + sqlite3_exec (db_handle, "SELECT gpkgInsertEpsgSRID(3857)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Unexpected gpkgInsertEpsgSRID() result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -101; + } + + /* check insert is OK */ + sql_statement = + "SELECT srs_name, organization, organization_coordsys_id FROM gpkg_spatial_ref_sys WHERE srs_id=3857"; + ret = + sqlite3_prepare_v2 (db_handle, sql_statement, strlen (sql_statement), + &stmt, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "failed to prepare SELECT ... FROM gpkg_spatial_ref_sys: %i (%s)\n", + ret, sqlite3_errmsg (db_handle)); + return -102; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_ROW) + { + fprintf (stderr, "unexpected return value for first step: %i (%s)\n", + ret, sqlite3_errmsg (db_handle)); + return -103; + } + if (sqlite3_column_type (stmt, 0) != SQLITE_TEXT) + { + fprintf (stderr, "bad type for column 0: %i\n", + sqlite3_column_type (stmt, 0)); + return -104; + } + if (strcasecmp + ((const char *) sqlite3_column_text (stmt, 0), + "WGS 84 / Pseudo-Mercator") != 0) + { + fprintf (stderr, "wrong srs_name: %s\n", + sqlite3_column_text (stmt, 0)); + return -105; + } + if (sqlite3_column_type (stmt, 1) != SQLITE_TEXT) + { + fprintf (stderr, "bad type for column 1: %i\n", + sqlite3_column_type (stmt, 1)); + return -106; + } + if (strcasecmp ((const char *) sqlite3_column_text (stmt, 1), "epsg") != 0) + { + fprintf (stderr, "wrong organization: %s\n", + sqlite3_column_text (stmt, 1)); + return -107; + } + if (sqlite3_column_type (stmt, 2) != SQLITE_INTEGER) + { + fprintf (stderr, "bad type for column 2: %i\n", + sqlite3_column_type (stmt, 2)); + return -108; + } + if (sqlite3_column_int (stmt, 2) != 3857) + { + fprintf (stderr, "wrong organization coordinate system ID: %i\n", + sqlite3_column_int (stmt, 2)); + return -109; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_DONE) + { + fprintf (stderr, "unexpected return value for second step: %i\n", + ret); + return -129; + } + ret = sqlite3_finalize (stmt); + + sqlite3_free (err_msg); + + /* try no WKT, something of a hack here */ + ret = + sqlite3_exec (db_handle, "SELECT gpkgInsertEpsgSRID(40001)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgInsertEpsgSRID(40001) result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -130; + } + + /* try some bad arguments */ + ret = + sqlite3_exec (db_handle, "SELECT gpkgInsertEpsgSRID(34.4)", NULL, NULL, + &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for insert value, non-integer id, got %i\n", + ret); + sqlite3_free (err_msg); + return -200; + } + if (strcmp + (err_msg, + "gpkgInsertEpsgSRID() error: argument 1 [srid] is not of the integer type") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgInsertEpsgSRID arg 1 bad type: %s\n", + err_msg); + sqlite3_free (err_msg); + return -201; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, "SELECT gpkgInsertEpsgSRID(9999999)", NULL, + NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for insert value, invalid id, got %i\n", + ret); + sqlite3_free (err_msg); + return -202; + } + if (strcmp + (err_msg, + "gpkgInsertEpsgSRID() error: srid is not defined in the EPSG inlined dataset") + != 0) + { + fprintf (stderr, + "Unexpected error message for gpkgInsertEpsgSRID arg 1 bad value: %s\n", + err_msg); + sqlite3_free (err_msg); + return -203; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, "SELECT gpkgInsertEpsgSRID(3857)", NULL, NULL, + &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, + "Expected error for insert value, duplicate entry, got %i\n", + ret); + sqlite3_free (err_msg); + return -204; + } + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -400; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_gpkgVirtual.c b/src/spatialite/test/check_gpkgVirtual.c new file mode 100644 index 0000000..bfc5ab9 --- /dev/null +++ b/src/spatialite/test/check_gpkgVirtual.c @@ -0,0 +1,686 @@ +/* + + check_gpkgVirtual.c - Test case for GeoPackage Extensions + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Sandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2014 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#include "config.h" + +#ifdef ENABLE_GEOPACKAGE /* only if GEOPACKAGE is enabled */ + +#include "sqlite3.h" +#include "spatialite.h" + +static void +do_unlink_all () +{ +/* deleting all temporary files */ + unlink ("./copy-gpkg_test.gpkg"); +} + +static int +test_table (sqlite3 * handle, const char *table) +{ +/* testing a 'raw' GPKG table */ + char *sql; + int ret; + sqlite3_stmt *stmt = NULL; + + sql = sqlite3_mprintf ("SELECT geom, IsValidGPB(geom), ST_Srid(geom), " + "ST_MinX(geom), ST_MaxX(geom), ST_MinY(geom), ST_MaxY(geom), " + "ST_Is3D(geom), ST_IsMeasured(geom), ST_MinZ(geom), ST_MaxZ(geom), " + "ST_MinM(geom), ST_MaxM(geom), ST_GeometryType(geom) FROM %s", + table); + + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free(sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "SELECT FROM \"%s\" error: %s\n", table, + sqlite3_errmsg (handle)); + goto stop; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + int is_null = 0; + int has_z; + int has_m; + if (sqlite3_column_type (stmt, 0) == SQLITE_NULL) + is_null = 1; + if (sqlite3_column_type (stmt, 1) != SQLITE_INTEGER) + { + fprintf (stderr, + "Unexpected ST_IsValidGPB: not an Integer\n"); + goto stop; + } + if (is_null) + { + if (sqlite3_column_int (stmt, 1) != 0) + { + fprintf (stderr, + "Unexpected result (NULL) ST_IsValidGPB=%d\n", + sqlite3_column_int (stmt, 1)); + goto stop; + } + continue; + } + else + { + if (sqlite3_column_int (stmt, 1) != 1) + { + fprintf (stderr, + "Unexpected result ST_IsValidGPB=%d\n", + sqlite3_column_int (stmt, 1)); + goto stop; + } + } + if (sqlite3_column_type (stmt, 2) != SQLITE_INTEGER) + { + fprintf (stderr, "Unexpected ST_SRID: not an Integer\n"); + goto stop; + } + if (sqlite3_column_int (stmt, 2) != 4326) + { + fprintf (stderr, "Unexpected result ST_SRID=%d\n", + sqlite3_column_int (stmt, 2)); + goto stop; + } + if (sqlite3_column_type (stmt, 3) != SQLITE_FLOAT) + { + fprintf (stderr, "Unexpected ST_MinX: not a Double\n"); + goto stop; + } + if (sqlite3_column_type (stmt, 4) != SQLITE_FLOAT) + { + fprintf (stderr, "Unexpected ST_MaxX: not a Double\n"); + goto stop; + } + if (sqlite3_column_type (stmt, 5) != SQLITE_FLOAT) + { + fprintf (stderr, "Unexpected ST_MinY: not a Double\n"); + goto stop; + } + if (sqlite3_column_type (stmt, 6) != SQLITE_FLOAT) + { + fprintf (stderr, "Unexpected ST_MaxY: not a Double\n"); + goto stop; + } + if (sqlite3_column_type (stmt, 7) != SQLITE_INTEGER) + { + fprintf (stderr, "Unexpected ST_Is3D: not an Integer\n"); + goto stop; + } + has_z = sqlite3_column_int (stmt, 7); + if (sqlite3_column_type (stmt, 8) != SQLITE_INTEGER) + { + fprintf (stderr, + "Unexpected ST_IsMeasured: not an Integer\n"); + goto stop; + } + has_m = sqlite3_column_int (stmt, 8); + if (has_z) + { + if (sqlite3_column_type (stmt, 9) != SQLITE_FLOAT) + { + fprintf (stderr, + "Unexpected ST_MinZ: not a Double\n"); + goto stop; + } + if (sqlite3_column_type (stmt, 10) != SQLITE_FLOAT) + { + fprintf (stderr, + "Unexpected ST_MaxZ: not a Double\n"); + goto stop; + } + } + else + { + if (sqlite3_column_type (stmt, 9) != SQLITE_NULL) + { + fprintf (stderr, "Unexpected ST_MinZ: not NULL\n"); + goto stop; + } + if (sqlite3_column_type (stmt, 10) != SQLITE_NULL) + { + fprintf (stderr, "Unexpected ST_MaxZ: not NULL\n"); + goto stop; + } + } + if (has_m) + { + if (sqlite3_column_type (stmt, 11) != SQLITE_FLOAT) + { + fprintf (stderr, + "Unexpected ST_MinM: not a Double\n"); + goto stop; + } + if (sqlite3_column_type (stmt, 12) != SQLITE_FLOAT) + { + fprintf (stderr, + "Unexpected ST_MaxM: not a Double\n"); + goto stop; + } + } + else + { + if (sqlite3_column_type (stmt, 11) != SQLITE_NULL) + { + fprintf (stderr, "Unexpected ST_MinM: not NULL\n"); + goto stop; + } + if (sqlite3_column_type (stmt, 12) != SQLITE_NULL) + { + fprintf (stderr, "Unexpected ST_MaxM: not NULL\n"); + goto stop; + } + } + if (sqlite3_column_type (stmt, 13) != SQLITE_TEXT) + { + fprintf (stderr, + "Unexpected ST_GeometryType: not TEXT\n"); + goto stop; + } + } + else + { + /* an unexpected error occurred */ + fprintf (stderr, "Error while querying from \"%s\": %s\n", + table, sqlite3_errmsg (handle)); + goto stop; + } + } + sqlite3_finalize (stmt); + return 1; + + stop: + if (stmt != NULL) + sqlite3_finalize (stmt); + return 0; +} + +static int +test_vtable (sqlite3 * handle, const char *table, int mode) +{ +/* testing a VirtualGPKG table */ + char *sql; + int ret; + sqlite3_stmt *stmt = NULL; + + if (mode) + { + sql = sqlite3_mprintf ("SELECT ROWID, first_name, " + "last_name, value1, value2 FROM vgpkg_%s", + table); + } + else + { + sql = sqlite3_mprintf ("SELECT geom, ST_AsText(geom), id, name " + "FROM vgpkg_%s", table); + } + + ret = sqlite3_prepare_v2 (handle, sql, strlen (sql), &stmt, NULL); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "SELECT FROM \"vgpkg_%s\" error: %s\n", table, + sqlite3_errmsg (handle)); + goto stop; + } + while (1) + { + /* scrolling the result set rows */ + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE) + break; /* end of result set */ + if (ret == SQLITE_ROW) + { + if (mode) + { + if (sqlite3_column_type (stmt, 0) != SQLITE_INTEGER) + { + fprintf (stderr, + "Unexpected ROWID: not an INTEGER\n"); + goto stop; + } + if (sqlite3_column_type (stmt, 1) != SQLITE_TEXT) + { + fprintf (stderr, + "Unexpected \"first_name\": not a TEXT string\n"); + goto stop; + } + if (sqlite3_column_type (stmt, 2) != SQLITE_TEXT) + { + fprintf (stderr, + "Unexpected \"first_name\": not a TEXT string\n"); + goto stop; + } + if (sqlite3_column_type (stmt, 3) != SQLITE_FLOAT) + { + fprintf (stderr, + "Unexpected \"first_name\": not a DOUBLE\n"); + goto stop; + } + if (sqlite3_column_type (stmt, 4) != SQLITE_FLOAT) + { + fprintf (stderr, + "Unexpected \"first_name\": not a DOUBLE\n"); + goto stop; + } + } + else + { + if (sqlite3_column_type (stmt, 0) == SQLITE_NULL) + continue; + if (sqlite3_column_type (stmt, 1) != SQLITE_TEXT) + { + fprintf (stderr, + "Unexpected ST_AsText: not a TEXT string\n"); + goto stop; + } + if (sqlite3_column_type (stmt, 2) != SQLITE_INTEGER) + { + fprintf (stderr, + "Unexpected \"id\": not an INTEGER\n"); + goto stop; + } + if (sqlite3_column_type (stmt, 3) != SQLITE_TEXT) + { + fprintf (stderr, + "Unexpected \"name\": not a TEXT string\n"); + goto stop; + } + } + } + else + { + /* an unexpected error occurred */ + fprintf (stderr, "Error while querying from \"vgpkg_%s\": %s\n", + table, sqlite3_errmsg (handle)); + goto stop; + } + } + sqlite3_finalize (stmt); + return 1; + + stop: + if (stmt != NULL) + sqlite3_finalize (stmt); + return 0; +} + +static int +test_vtable_out (sqlite3 * handle) +{ +/* testing VirtualGPKG insert/update/delete */ + const char *sql; + int ret; + char *sql_err = NULL; + + sql = "BEGIN"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + fprintf (stderr, "BEGIN error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + + sql = + "INSERT INTO vgpkg_test_pk (first_name, last_name, value1, value2, geom) " + "VALUES ('z1', 'charlie', 1, 2, MakePoint(3, 3, 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT #1 error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + + sql = + "INSERT INTO vgpkg_test_pk (first_name, last_name, value1, value2, geom) " + "VALUES ('z2', 'annie', 1.1, 2.2, MakePoint(4, 4, 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT #2 error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + + sql = "INSERT INTO vgpkg_test_pk (first_name, last_name, value1, value2) " + "VALUES ('z3', 'peter', 2.2, 3.3)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT #3 error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + + sql = "UPDATE vgpkg_test_pk SET geom = MakePoint(14, 14, 4326) " + "WHERE first_name = 'z1'"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UPDATE #1 error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + + sql = "UPDATE vgpkg_test_pk SET value1 = 13.4 " "WHERE ROWID = 3"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UPDATE #2 error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + + sql = "UPDATE vgpkg_test_pk SET geom = NULL, value2 = 51 " + "WHERE ROWID = 2"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UPDATE #3 error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + + sql = "DELETE FROM vgpkg_test_pk WHERE ROWID = 1"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE #1 error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + + sql = "DELETE FROM vgpkg_test_pk WHERE first_name > 'z'"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE #2 error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + + sql = "ROLLBACK"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + fprintf (stderr, "ROLLBACK error: %s\n", sql_err); + sqlite3_free (sql_err); + return 0; + } + + return 1; +} + +int +main (int argc, char *argv[]) +{ + sqlite3 *db_handle; + int ret; + const char *sql; + void *cache = NULL; + char *sql_err = NULL; + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + do_unlink_all (); + +/* directly testing GPKG */ + ret = system ("cp ./gpkg_test.gpkg copy-gpkg_test.gpkg"); + if (ret != 0) + { + fprintf (stderr, "cannot copy gpkg_test.gpkg database\n"); + return -1; + } + + cache = spatialite_alloc_connection (); + ret = + sqlite3_open_v2 ("./copy-gpkg_test.gpkg", &db_handle, + SQLITE_OPEN_READWRITE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open '%s': %s\n", "copy-gpkg_test.gpkg", + sqlite3_errmsg (db_handle)); + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + spatialite_init_ex (db_handle, cache, 0); + + if (!test_table (db_handle, "pt2d")) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + + if (!test_table (db_handle, "ln3dz")) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + + if (!test_table (db_handle, "pg2dm")) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + + if (!test_table (db_handle, "mpt3dzm")) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + + if (!test_table (db_handle, "mln2dm")) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + + if (!test_table (db_handle, "mpg3dz")) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + + if (!test_table (db_handle, "gc3dz")) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + +/* activating Auto GPKG Wrapping */ + sql = "SELECT AutoGPKGStart()"; + ret = sqlite3_exec (db_handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AutoGPKGStart error: %s\n", sql_err); + sqlite3_free (sql_err); + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + +/* testing the Virtual Tables */ + if (!test_vtable (db_handle, "pt2d", 0)) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + + if (!test_vtable (db_handle, "ln3dz", 0)) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + + if (!test_vtable (db_handle, "pg2dm", 0)) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + + if (!test_vtable (db_handle, "mpt3dzm", 0)) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + + if (!test_vtable (db_handle, "mln2dm", 0)) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + + if (!test_vtable (db_handle, "mpg3dz", 0)) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + + if (!test_vtable (db_handle, "gc3dz", 0)) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + + if (!test_vtable (db_handle, "test_pk", 1)) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + + if (!test_vtable_out (db_handle)) + { + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + +/* quitting Auto GPKG Wrapping */ + sql = "SELECT AutoGPKGStop()"; + ret = sqlite3_exec (db_handle, sql, NULL, NULL, &sql_err); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AutoGPKGStop error: %s\n", sql_err); + sqlite3_free (sql_err); + do_unlink_all (); + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + return -1; + } + + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + do_unlink_all (); + return 0; +} + +#endif /* endif GEOPACKAGE enabled */ diff --git a/src/spatialite/test/check_gpkg_base_core_container_data_file_format_application_id.c b/src/spatialite/test/check_gpkg_base_core_container_data_file_format_application_id.c new file mode 100644 index 0000000..84d831a --- /dev/null +++ b/src/spatialite/test/check_gpkg_base_core_container_data_file_format_application_id.c @@ -0,0 +1,150 @@ +/* + + check_gpkg_base_core_container_data_file_format_application_id.c - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2012 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + sqlite3_stmt *stmt; + void *cache = spatialite_alloc_connection (); + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gpkg_base_core_container_data_file_format_application_id.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -2; + } + + /* + / Test Case ID: /base/core/container/data/file_format/application_id + / Test Purpose: Verify that the SQLite database header application id field indicates GeoPackage version 1.0 + / Test Method: Pass if the application id field of the SQLite database header contains “GP10” in ASCII. + / Reference: Clause 1.1.1.1.1 Req 2: + / Test Type: Basic + */ + ret = + sqlite3_prepare_v2 (db_handle, "PRAGMA application_id", + strlen ("PRAGMA application_id"), &stmt, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "failed to prepare SQL PRAGMA statement: %i (%s)\n", + ret, sqlite3_errmsg (db_handle)); + return -30; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_ROW) + { + fprintf (stderr, "unexpected return value for first step: %i (%s)\n", + ret, sqlite3_errmsg (db_handle)); + return -31; + } + if (sqlite3_column_type (stmt, 0) != SQLITE_INTEGER) + { + fprintf (stderr, "bad type for column 0: %i\n", + sqlite3_column_type (stmt, 0)); + return -32; + } + if (sqlite3_column_int (stmt, 0) != 0x47503130) + { + fprintf (stderr, "wrong application_id: %i\n", + sqlite3_column_int (stmt, 0)); + return -33; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_DONE) + { + fprintf (stderr, "unexpected return value for second step: %i\n", + ret); + return -34; + } + ret = sqlite3_finalize (stmt); + + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_gpkg_base_core_contents_data_table_def.c b/src/spatialite/test/check_gpkg_base_core_contents_data_table_def.c new file mode 100644 index 0000000..b8c228e --- /dev/null +++ b/src/spatialite/test/check_gpkg_base_core_contents_data_table_def.c @@ -0,0 +1,356 @@ +/* + + check_gpkg_base_core_contents_data_table_def - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#define __USE_GNU +#include + +#include "sqlite3.h" +#include "spatialite.h" + +#include "test_helpers.h" + +struct tableDefinitionElement +{ + const char *column_name; + const char *column_type; + bool mayBeNull; + const char *defaultValue; + const char *keySignature; + bool wasFound; +}; + +struct tableDefinitionElement tableValues[] = { + {"table_name", "TEXT", false, NULL, "PRIMARY KEY", false}, + {"data_type", "TEXT", false, NULL, NULL, false}, + {"identifier", "TEXT", true, NULL, NULL, false}, + {"description", "TEXT", true, "''", NULL, false}, + {"min_x", "DOUBLE", true, NULL, NULL, false}, + {"min_y", "DOUBLE", true, NULL, NULL, false}, + {"max_x", "DOUBLE", true, NULL, NULL, false}, + {"max_y", "DOUBLE", true, NULL, NULL, false}, + {"srs_id", "INTEGER", true, NULL, NULL, false}, + {NULL, NULL, false, NULL, NULL, false} +}; + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + char *sql_statement; + sqlite3_stmt *stmt; + void *cache = spatialite_alloc_connection (); + int i, j; + char *sql; + char *str; + char *token; + char *saveptr; + bool valid_last_change = false; + bool valid_fk_constraint = false; + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gpkg_base_core_spatial_ref_sys_data_table_def.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -2; + } + + /* + / Test Case ID /base/core/contents/data/table_def + / Test Purpose Verify that the gpkg_contents table exists and has the correct definition. + / Test Method + / SELECT sql FROM sqlite_master WHERE type = table AND tbl_name = gpkg_contents + / Fail if returns an empty result set. + / Pass if the column names and column definitions in the returned CREATE TABLE statement, + / including data type, nullability, default values and primary, foreign and unique key + / constraints match all of those in the contents of C.2 Table 18. Column order, check + / constraint and trigger definitions, and other column definitions in the returned sql + / are irrelevant. + / Fail Otherwise + / Reference Clause 1.1.3.1.1 Req 13: + / Test Type Basic + */ + sql_statement = + "SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'gpkg_contents'"; + ret = + sqlite3_prepare_v2 (db_handle, sql_statement, strlen (sql_statement), + &stmt, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "failed to prepare SQL SELECT statement: %i (%s)\n", + ret, sqlite3_errmsg (db_handle)); + return -10; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_ROW) + { + fprintf (stderr, "unexpected return value for first step: %i (%s)\n", + ret, sqlite3_errmsg (db_handle)); + return -11; + } + if (sqlite3_column_type (stmt, 0) != SQLITE_TEXT) + { + fprintf (stderr, "bad type for column 0: %i\n", + sqlite3_column_type (stmt, 0)); + return -12; + } + sql = + strdup (strstr ((const char *) sqlite3_column_text (stmt, 0), "(") + + strlen ("(")); + if (!sql) + { + fprintf (stderr, "unrecognised format for SQL\n"); + return -13; + } + + for (j = 1, str = sql;; j++, str = NULL) + { + token = strtok_r (str, ",", &saveptr); + if (token == NULL) + { + break; + } + for (i = 0; tableValues[i].column_name != NULL; ++i) + { + while (isspace (*token)) + { + token++; + } + if (strncasecmp (token, "CONSTRAINT", strlen ("CONSTRAINT")) == + 0) + { + if (strcasestr + (token, + "FOREIGN KEY (srs_id) REFERENCES gpkg_spatial_ref_sys(srs_id)")) + { + valid_fk_constraint = true; + } + continue; + } + if (strcasestr (token, tableValues[i].column_name)) + { + if (!strcasestr (token, tableValues[i].column_type)) + { + fprintf (stderr, + "missing COLUMN TYPE %s for %s: %s\n", + tableValues[i].column_type, + tableValues[i].column_name, token); + return -20; + } + if (tableValues[i].mayBeNull + && strcasestr (token, "NOT NULL")) + { + fprintf (stderr, + "Unexpected NOT NULL constraint for %s: %s\n", + tableValues[i].column_name, token); + return -21; + } + if ((!tableValues[i].mayBeNull) + && (!strcasestr (token, "NOT NULL"))) + { + fprintf (stderr, + "Missing NOT NULL constraint for %s: %s\n", + tableValues[i].column_name, token); + return -22; + } + if ((tableValues[i].keySignature != NULL) + && (!strcasestr (token, tableValues[i].keySignature))) + { + fprintf (stderr, + "Missing %s constraint for %s: %s\n", + tableValues[i].keySignature, + tableValues[i].column_name, token); + return -23; + } + if ((tableValues[i].keySignature == NULL) + && (strcasestr (token, "KEY"))) + { + fprintf (stderr, + "Unexpected key constraint for %s: %s\n", + tableValues[i].column_name, token); + return -24; + } + if ((tableValues[i].defaultValue == NULL) + && (strcasestr (token, "DEFAULT"))) + { + fprintf (stderr, + "Unexpected default value for %s: %s\n", + tableValues[i].column_name, token); + return -25; + } + if ((tableValues[i].defaultValue != NULL) + && (!strcasestr (token, tableValues[i].defaultValue))) + { + fprintf (stderr, + "Missing default value for %s: %s\n", + tableValues[i].column_name, token); + return -26; + } + tableValues[i].wasFound = true; + } + } + if (strcasestr (token, "last_change ")) + { + /* last_change default has an embedded ',' so we need to grab the next token too. */ + char *nexttoken = strtok_r (str, ",", &saveptr); + char *fulltoken = + malloc (strlen (token) + strlen (",") + strlen (nexttoken) + + 1); + strcpy (fulltoken, token); + strcat (fulltoken, ","); + strcat (fulltoken, nexttoken); + if (!strcasestr (fulltoken, "TEXT")) + { + fprintf (stderr, + "missing COLUMN TYPE TEXT for last_change: %s\n", + fulltoken); + free (fulltoken); + return -40; + } + if (!strcasestr (fulltoken, "NOT NULL")) + { + fprintf (stderr, + "Missing NOT NULL constraint for last_change: %s\n", + fulltoken); + free (fulltoken); + return -41; + } + if (strcasestr (fulltoken, "KEY")) + { + fprintf (stderr, + "Unexpected KEY constraint for last_change: %s\n", + token); + free (fulltoken); + return -42; + } + if (!strcasestr + (fulltoken, + "DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ',CURRENT_TIMESTAMP))")) + { + fprintf (stderr, + "Missing default value for last_change: %s\n", + fulltoken); + free (fulltoken); + return -43; + } + free (fulltoken); + valid_last_change = true; + } + } + free (sql); + + for (i = 0; tableValues[i].column_name != NULL; ++i) + { + if (tableValues[i].wasFound == false) + { + fprintf (stderr, "did not find expected %s column\n", + tableValues[i].column_name); + return -50; + } + } + if (!valid_last_change) + { + fprintf (stderr, + "did not find expected last_change column, or required properties were not found\n"); + return -51; + } + if (!valid_fk_constraint) + { + fprintf (stderr, "did not find expected FK constraint\n"); + return -52; + } + + + ret = sqlite3_step (stmt); + if (ret != SQLITE_DONE) + { + fprintf (stderr, "unexpected return value for second step: %i\n", + ret); + return -199; + } + ret = sqlite3_finalize (stmt); + + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_gpkg_base_core_spatial_ref_sys_data_table_def.c b/src/spatialite/test/check_gpkg_base_core_spatial_ref_sys_data_table_def.c new file mode 100644 index 0000000..90351e6 --- /dev/null +++ b/src/spatialite/test/check_gpkg_base_core_spatial_ref_sys_data_table_def.c @@ -0,0 +1,384 @@ +/* + + check_gpkg_base_core_spatial_ref_sys_data_table_def - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include + +#define __USE_GNU +#include + +#include "sqlite3.h" +#include "spatialite.h" + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + char *sql_statement; + sqlite3_stmt *stmt; + void *cache = spatialite_alloc_connection (); + int j; + char *sql; + char *str; + char *token; + char *saveptr; + bool valid_srs_name = false; + bool valid_srs_id = false; + bool valid_organization = false; + bool valid_organization_coordsys_id = false; + bool valid_definition = false; + bool valid_description = false; + + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gpkg_base_core_spatial_ref_sys_data_table_def.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -2; + } + + /* + / Test Case ID: /base/core/spatial_ref_sys/data/table_def + / Test Purpose: Verify that the gpkg_spatial_ref_sys table exists and has the correct definition. + / Test Method: + / 1) SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'gpkg_spatial_ref_sys' + / 2) Fail if returns an empty result set + / 3) Pass if column names and column definitions in the returned CREATE TABLE statement in the sql column value, including data type, nullability, and primary key + / constraints match all of those in the contents of C.1 Table 18. Column order, check constraint and trigger definitions, and other column definitions in the returned sql are + / irrelevant. + / 4) Fail otherwise. + / Reference: Clause 1.1.2.1.1 Req 10: + / Test Type: Basic + */ + + sql_statement = + "SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'gpkg_spatial_ref_sys'"; + ret = + sqlite3_prepare_v2 (db_handle, sql_statement, strlen (sql_statement), + &stmt, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "failed to prepare SQL SELECT statement: %i (%s)\n", + ret, sqlite3_errmsg (db_handle)); + return -30; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_ROW) + { + fprintf (stderr, "unexpected return value for first step: %i (%s)\n", + ret, sqlite3_errmsg (db_handle)); + return -31; + } + if (sqlite3_column_type (stmt, 0) != SQLITE_TEXT) + { + fprintf (stderr, "bad type for column 0: %i\n", + sqlite3_column_type (stmt, 0)); + return -32; + } + sql = + strdup (strstr ((const char *) sqlite3_column_text (stmt, 0), "(") + + strlen ("(")); + if (!sql) + { + fprintf (stderr, "unrecognised format for SQL\n"); + return -33; + } + /* + / Column Name Column Type Column Description Null Key + / srs_name TEXT Human readable name of this SRS no + / srs_id INTEGER Unique identifier for each Spatial Reference System within a GeoPackage no PK + / organization TEXT Case-insensitive name of the defining organization e.g. EPSG or epsg no + / organization_coordsys_id INTEGER Numeric ID of the Spatial Reference System assigned by the organization no + / definition TEXT Well-known Text Representation of the Spatial Reference System no + / description TEXT Human readable description of this SRS yes + */ + + for (j = 1, str = sql;; j++, str = NULL) + { + token = strtok_r (str, ",", &saveptr); + if (token == NULL) + { + break; + } + if (strstr (token, "srs_name ")) + { + if (!strstr (token, "TEXT")) + { + fprintf (stderr, + "missing COLUMN TYPE TEXT for srs_name: %s\n", + token); + return -34; + } + if (!strstr (token, "NOT NULL")) + { + fprintf (stderr, + "Missing NOT NULL constraint for srs_name: %s\n", + token); + return -35; + } + if (strstr (token, "KEY")) + { + fprintf (stderr, + "Unexpected KEY constraint for srs_name: %s\n", + token); + return -36; + } + valid_srs_name = true; + } + if (strstr (token, "srs_id ")) + { + if (!strstr (token, "INTEGER")) + { + fprintf (stderr, + "missing COLUMN TYPE INTEGER for srs_id: %s\n", + token); + return -37; + } + if (!strstr (token, "NOT NULL")) + { + fprintf (stderr, + "Missing NOT NULL constraint for srs_id: %s\n", + token); + return -38; + } + if (!strstr (token, "PRIMARY KEY")) + { + fprintf (stderr, + "Missing PRIMARY KEY constraint for srs_id: %s\n", + token); + return -39; + } + valid_srs_id = true; + } + if (strstr (token, "organization ")) + { + if (!strstr (token, "TEXT")) + { + fprintf (stderr, + "missing COLUMN TYPE TEXT for organization: %s\n", + token); + return -40; + } + if (!strstr (token, "NOT NULL")) + { + fprintf (stderr, + "Missing NOT NULL constraint for organization: %s\n", + token); + return -41; + } + if (strstr (token, "KEY")) + { + fprintf (stderr, + "Unexpected KEY constraint for organization: %s\n", + token); + return -42; + } + valid_organization = true; + } + if (strstr (token, "organization_coordsys_id ")) + { + if (!strstr (token, "INTEGER")) + { + fprintf (stderr, + "missing COLUMN TYPE INTEGER for organization_coordsys_id: %s\n", + token); + return -43; + } + if (!strstr (token, "NOT NULL")) + { + fprintf (stderr, + "Missing NOT NULL constraint for organization_coordsys_id: %s\n", + token); + return -44; + } + if (strstr (token, "KEY")) + { + fprintf (stderr, + "Unexpected PRIMARY KEY constraint for organization_coordsys_id: %s\n", + token); + return -45; + } + valid_organization_coordsys_id = true; + } + if (strstr (token, "definition ")) + { + if (!strstr (token, "TEXT")) + { + fprintf (stderr, + "missing COLUMN TYPE TEXT for definition: %s\n", + token); + return -46; + } + if (!strstr (token, "NOT NULL")) + { + fprintf (stderr, + "Missing NOT NULL constraint for definition: %s\n", + token); + return -47; + } + if (strstr (token, "KEY")) + { + fprintf (stderr, + "Unexpected KEY constraint for definition: %s\n", + token); + return -48; + } + valid_definition = true; + } + if (strstr (token, "description ")) + { + if (!strstr (token, "TEXT")) + { + fprintf (stderr, + "missing COLUMN TYPE TEXT for description: %s\n", + token); + return -49; + } + if (strstr (token, "NOT NULL")) + { + fprintf (stderr, + "Unexpected NOT NULL constraint for description: %s\n", + token); + return -50; + } + if (strstr (token, "KEY")) + { + fprintf (stderr, + "Unexpected KEY constraint for description: %s\n", + token); + return -51; + } + valid_description = true; + } + } + free (sql); + + if (!valid_srs_name) + { + fprintf (stderr, + "did not find expected srs_name column, or required properties were not found\n"); + return -99; + } + if (!valid_srs_id) + { + fprintf (stderr, + "did not find expected srs_id column, or required properties were not found\n"); + return -100; + } + if (!valid_organization) + { + fprintf (stderr, + "did not find expected organization column, or required properties were not found\n"); + return -101; + } + if (!valid_organization_coordsys_id) + { + fprintf (stderr, + "did not find expected organization_coordsys_id column, or required properties were not found\n"); + return -102; + } + if (!valid_definition) + { + fprintf (stderr, + "did not find expected definition column, or required properties were not found\n"); + return -103; + } + if (!valid_description) + { + fprintf (stderr, + "did not find expected description column, or required properties were not found\n"); + return -104; + } + + ret = sqlite3_step (stmt); + if (ret != SQLITE_DONE) + { + fprintf (stderr, "unexpected return value for second step: %i\n", + ret); + return -199; + } + ret = sqlite3_finalize (stmt); + + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_gpkg_base_core_spatial_ref_sys_data_values_default.c b/src/spatialite/test/check_gpkg_base_core_spatial_ref_sys_data_values_default.c new file mode 100644 index 0000000..cb4657a --- /dev/null +++ b/src/spatialite/test/check_gpkg_base_core_spatial_ref_sys_data_values_default.c @@ -0,0 +1,279 @@ +/* + + check_gpkg_base_core_spatial_ref_sys_data_values_default - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +#include "test_helpers.h" + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + char **results; + void *cache = spatialite_alloc_connection (); + int rows; + int columns; + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gpkg_base_core_spatial_ref_sys_data_values_default.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -2; + } + + /* + / Test Case ID: /base/core/spatial_ref_sys/data_values_default + / Test Purpose: Verify that the spatial_ref_sys table contains the required default contents. + / Test Method: + / 1) SELECT srid, auth_name, auth_srid, srtext FROM spatial_ref_sys WHERE srid = -1 returns -1 “NONE” -1 “Undefined”, AND + / 2) SELECT srid, auth_name, auth_srid, srtext FROM spatial_ref_sys WHERE srid = 0 returns 0 “NONE” 0 “Undefined”, AND + / 3) SELECT srid, auth_name, auth_srid, srtext FROM spatial_ref_sys WHERE srid = 4326 returns + / 4326 epsg 4326 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.0174532925199433,AUTHORITY["EPSG","9122"]], AUTHORITY["EPSG","4326"]] + / (whitespace irrelevant) + / Pass if tests 1-3 are met + / Fail otherwise + / Reference: Clause 1.1.2.1.2 Req 11: + / Test Type: Capability + */ + + ret = + sqlite3_get_table (db_handle, + "SELECT srs_id, organization, organization_coordsys_id, definition FROM gpkg_spatial_ref_sys WHERE srs_id = -1", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "get table error, srs_id = -1: %s\n", err_msg); + sqlite3_free (err_msg); + return -9; + } + if ((rows != 1) || (columns != 4)) + { + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + sqlite3_free_table (results); + return -10; + } + if (strcmp (results[1 * columns + 0], "-1") != 0) + { + fprintf (stderr, "Unexpected srs_id result (got %s, expected -1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -11; + } + if (strcmp (results[1 * columns + 1], "NONE") != 0) + { + fprintf (stderr, + "Unexpected organization result (got %s, expected NONE)", + results[1 * columns + 1]); + sqlite3_free_table (results); + return -12; + } + if (strcmp (results[1 * columns + 2], "-1") != 0) + { + fprintf (stderr, + "Unexpected organization_coordsys_id result (got %s, expected -1)", + results[1 * columns + 2]); + sqlite3_free_table (results); + return -13; + } + if (strcmp (results[1 * columns + 3], "Undefined") != 0) + { + fprintf (stderr, + "Unexpected definition result (got %s, expected Undefined)", + results[1 * columns + 3]); + sqlite3_free_table (results); + return -14; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT srs_id, organization, organization_coordsys_id, definition FROM gpkg_spatial_ref_sys WHERE srs_id = 0", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "get table error, srs_id = 0: %s\n", err_msg); + sqlite3_free (err_msg); + return -20; + } + if ((rows != 1) || (columns != 4)) + { + fprintf (stderr, "Unexpected row / column count (srs_id0): %i x %i\n", + rows, columns); + sqlite3_free_table (results); + return -21; + } + if (strcmp (results[1 * columns + 0], "0") != 0) + { + fprintf (stderr, "Unexpected srs_id result (got %s, expected 0)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -22; + } + if (strcmp (results[1 * columns + 1], "NONE") != 0) + { + fprintf (stderr, + "Unexpected organization result (got %s, expected NONE)", + results[1 * columns + 1]); + sqlite3_free_table (results); + return -23; + } + if (strcmp (results[1 * columns + 2], "0") != 0) + { + fprintf (stderr, + "Unexpected organization_coordsys_id result (got %s, expected 0)", + results[1 * columns + 2]); + sqlite3_free_table (results); + return -24; + } + if (strcmp (results[1 * columns + 3], "Undefined") != 0) + { + fprintf (stderr, + "Unexpected definition result (got %s, expected Undefined)", + results[1 * columns + 3]); + sqlite3_free_table (results); + return -25; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT srs_id, organization, organization_coordsys_id, definition FROM gpkg_spatial_ref_sys WHERE srs_id = 4326", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "get table error, srs_id = 4326: %s\n", err_msg); + sqlite3_free (err_msg); + return -30; + } + if ((rows != 1) || (columns != 4)) + { + fprintf (stderr, + "Unexpected row / column count (srs_id4326): %i x %i\n", + rows, columns); + sqlite3_free_table (results); + return -31; + } + if (strcmp (results[1 * columns + 0], "4326") != 0) + { + fprintf (stderr, "Unexpected srs_id result (got %s, expected 4326)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -32; + } + if (strcasecmp (results[1 * columns + 1], "epsg") != 0) + { + fprintf (stderr, + "Unexpected organization result (got %s, expected epsg)", + results[1 * columns + 1]); + sqlite3_free_table (results); + return -33; + } + if (strcmp (results[1 * columns + 2], "4326") != 0) + { + fprintf (stderr, + "Unexpected organization_coordsys_id result (got %s, expected 4326)", + results[1 * columns + 2]); + sqlite3_free_table (results); + return -34; + } + if (strcmp + (results[1 * columns + 3], + "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.0174532925199433,AUTHORITY[\"EPSG\",\"9122\"]],AUTHORITY[\"EPSG\",\"4326\"]]") + != 0) + { + fprintf (stderr, + "Unexpected definition result (got %s, expected GEOGCS[...])", + results[1 * columns + 3]); + sqlite3_free_table (results); + return -35; + } + sqlite3_free_table (results); + + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_gpkg_opt_extension_mechanism_extensions_data_table_def.c b/src/spatialite/test/check_gpkg_opt_extension_mechanism_extensions_data_table_def.c new file mode 100644 index 0000000..4a057fb --- /dev/null +++ b/src/spatialite/test/check_gpkg_opt_extension_mechanism_extensions_data_table_def.c @@ -0,0 +1,311 @@ +/* + + check_gpkg_opt_extension_mechanism_extensions_data_table_def - Test case for GeoPackage Extensions + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is GeoPackage extensions + +The Initial Developer of the Original Code is Brad Hards + +Portions created by the Initial Developer are Copyright (C) 2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#include +#include +#include +#include + +#define __USE_GNU +#include + +#include "sqlite3.h" +#include "spatialite.h" + +#include "test_helpers.h" + +struct tableDefinitionElement +{ + const char *column_name; + const char *column_type; + bool mayBeNull; + const char *defaultValue; + const char *keySignature; + bool wasFound; +}; + +struct tableDefinitionElement tableValues[] = { + {"table_name", "TEXT", true, NULL, NULL, false}, + {"column_name", "TEXT", true, NULL, NULL, false}, + {"extension_name", "TEXT", false, NULL, NULL, false}, + {"definition", "TEXT", false, NULL, NULL, false}, + {"scope", "TEXT", false, NULL, NULL, false}, + {NULL, NULL, false, NULL, NULL, false} +}; + +int +main (int argc UNUSED, char *argv[]UNUSED) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + char *sql_statement; + sqlite3_stmt *stmt; + void *cache = spatialite_alloc_connection (); + int i, j; + char *sql; + char *str; + char *token; + char *saveptr; + bool valid_fk_constraint = false; + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + /* For debugging / testing if required */ + /* + ret = sqlite3_open_v2 ("check_gpkg_opt_extension_mechanism_extensions_data_table_def.sqlite", &db_handle, SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + */ + spatialite_init_ex (db_handle, cache, 0); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + ret = + sqlite3_exec (db_handle, "SELECT gpkgCreateBaseTables()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Unexpected gpkgCreateBaseTables() result: %i, (%s)\n", ret, + err_msg); + sqlite3_free (err_msg); + return -2; + } + + /* + / Test Case ID /opt/extension_mechanism/extensions/data/table_def + / Test Purpose Verify that a gpkg_extensions table exists and has the correct definition. + / Test Method: + / 1) SELECT sql FROM sqlite_master WHERE type = table AND tbl_name = gpkg_extensions + / 2) Fail if returns an empty result set. + / 3) Pass if the column names and column definitions in the returned Create TABLE statement + / in the sql column value, including data type, nullability, default values and primary, + / foreign and unique key constraints match all of those in the contents of Table 36. + / Column order, check constraint and trigger definitions, and other column definitions + / in the returned sql are irrelevant. + / 4) Fail otherwise. + / Reference Clause 2.5.2.1.1 Req 78: + / Test Type Basic + */ + + sql_statement = + "SELECT sql FROM sqlite_master WHERE type = 'table' AND tbl_name = 'gpkg_extensions'"; + ret = + sqlite3_prepare_v2 (db_handle, sql_statement, strlen (sql_statement), + &stmt, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "failed to prepare SQL SELECT statement: %i (%s)\n", + ret, sqlite3_errmsg (db_handle)); + return -10; + } + ret = sqlite3_step (stmt); + if (ret != SQLITE_ROW) + { + fprintf (stderr, "unexpected return value for first step: %i (%s)\n", + ret, sqlite3_errmsg (db_handle)); + return -11; + } + if (sqlite3_column_type (stmt, 0) != SQLITE_TEXT) + { + fprintf (stderr, "bad type for column 0: %i\n", + sqlite3_column_type (stmt, 0)); + return -12; + } + sql = + strdup (strstr ((const char *) sqlite3_column_text (stmt, 0), "(") + + strlen ("(")); + if (!sql) + { + fprintf (stderr, "unrecognised format for SQL\n"); + return -13; + } + + for (j = 1, str = sql;; j++, str = NULL) + { + token = strtok_r (str, ",", &saveptr); + if (token == NULL) + { + break; + } + while (isspace (*token)) + { + token++; + } + if (strncasecmp (token, "CONSTRAINT", strlen ("CONSTRAINT")) == 0) + { + /* unique constraint has embedded ','s so we need to grab the next two tokens */ + char *nexttoken1 = strtok_r (str, ",", &saveptr); + char *nexttoken2 = strtok_r (str, ",", &saveptr); + char *fulltoken = + malloc (strlen (token) + strlen (",") + + strlen (nexttoken1) + strlen (",") + + strlen (nexttoken2) + 1); + strcpy (fulltoken, token); + strcat (fulltoken, ","); + strcat (fulltoken, nexttoken1); + strcat (fulltoken, ","); + strcat (fulltoken, nexttoken2); + if (strcasestr + (fulltoken, + "UNIQUE (table_name, column_name, extension_name)")) + { + valid_fk_constraint = true; + } + continue; + } + for (i = 0; tableValues[i].column_name != NULL; ++i) + { + + if (strcasestr (token, tableValues[i].column_name)) + { + if (!strcasestr (token, tableValues[i].column_type)) + { + fprintf (stderr, + "missing COLUMN TYPE %s for %s: %s\n", + tableValues[i].column_type, + tableValues[i].column_name, token); + return -20; + } + if (tableValues[i].mayBeNull + && strcasestr (token, "NOT NULL")) + { + fprintf (stderr, + "Unexpected NOT NULL constraint for %s: %s\n", + tableValues[i].column_name, token); + return -21; + } + if ((!tableValues[i].mayBeNull) + && (!strcasestr (token, "NOT NULL"))) + { + fprintf (stderr, + "Missing NOT NULL constraint for %s: %s\n", + tableValues[i].column_name, token); + return -22; + } + if ((tableValues[i].keySignature != NULL) + && (!strcasestr (token, tableValues[i].keySignature))) + { + fprintf (stderr, + "Missing %s constraint for %s: %s\n", + tableValues[i].keySignature, + tableValues[i].column_name, token); + return -23; + } + if ((tableValues[i].keySignature == NULL) + && (strcasestr (token, "KEY"))) + { + fprintf (stderr, + "Unexpected key constraint for %s: %s\n", + tableValues[i].column_name, token); + return -24; + } + if ((tableValues[i].defaultValue == NULL) + && (strcasestr (token, "DEFAULT"))) + { + fprintf (stderr, + "Unexpected default value for %s: %s\n", + tableValues[i].column_name, token); + return -25; + } + if ((tableValues[i].defaultValue != NULL) + && (!strcasestr (token, tableValues[i].defaultValue))) + { + fprintf (stderr, + "Missing default value for %s: %s\n", + tableValues[i].column_name, token); + return -26; + } + tableValues[i].wasFound = true; + } + } + } + free (sql); + + for (i = 0; tableValues[i].column_name != NULL; ++i) + { + if (tableValues[i].wasFound == false) + { + fprintf (stderr, "did not find expected %s column\n", + tableValues[i].column_name); + return -50; + } + } + if (!valid_fk_constraint) + { + fprintf (stderr, "did not find expected FK constraint\n"); + return -52; + } + + + ret = sqlite3_step (stmt); + if (ret != SQLITE_DONE) + { + fprintf (stderr, "unexpected return value for second step: %i\n", + ret); + return -199; + } + ret = sqlite3_finalize (stmt); + + sqlite3_free (err_msg); + + ret = sqlite3_close (db_handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (db_handle)); + return -200; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_init.c b/src/spatialite/test/check_init.c new file mode 100644 index 0000000..97e425e --- /dev/null +++ b/src/spatialite/test/check_init.c @@ -0,0 +1,103 @@ +/* + + check_init.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + spatialite_init_ex (handle, cache, 0); + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -2; + } + spatialite_cleanup_ex (cache); + + cache = spatialite_alloc_connection (); + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -3; + } + spatialite_init_ex (handle, cache, 1); + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -4; + } + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_init2.c b/src/spatialite/test/check_init2.c new file mode 100644 index 0000000..fc59094 --- /dev/null +++ b/src/spatialite/test/check_init2.c @@ -0,0 +1,417 @@ +/* + + check_init2.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(\"NONE\")", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata(\"NONE\") error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + ret = + sqlite3_exec (handle, "SELECT InsertEpsgSrid(4326)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Insert SRID 4326 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -3; + } + + ret = + sqlite3_exec (handle, "SELECT InsertEpsgSrid(2998)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Insert SRID 2998 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -4; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -5; + } + + spatialite_cleanup_ex (cache); + + cache = spatialite_alloc_connection (); + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -6; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_get_table (handle, "SELECT InitSpatialMetadata(3.4)", &results, + &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -7; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected result InitSpatialMetadata() bad result: %i/%i.\n", + rows, columns); + return -8; + } + if (strcmp (results[1], "0") != 0) + { + fprintf (stderr, + "Unexpected result: InitSpatialMetadata() with non-text passed: %s.\n", + results[1]); + return -9; + } + sqlite3_free_table (results); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -10; + } + + spatialite_cleanup_ex (cache); + + cache = spatialite_alloc_connection (); + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -11; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_get_table (handle, "SELECT InitSpatialMetadata(\"EMPTY\")", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -12; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected result InitSpatialMetadata(\"EMPTY\") bad result: %i/%i.\n", + rows, columns); + return -13; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "Unexpected error: InitSpatialMetadata(\"EMPTY\"): %s.\n", + results[1]); + return -14; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, "SELECT InsertEpsgSrid(4326)", &results, + &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -15; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected result InsertEpsgSrid(4326) bad result: %i/%i.\n", + rows, columns); + return -16; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: InsertEpsgSrid(4326): %s.\n", + results[1]); + return -17; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, "SELECT InsertEpsgSrid(\"Non-integer\")", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -18; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected result InsertEpsgSrid(\"Non-integer\") bad result: %i/%i.\n", + rows, columns); + return -19; + } + if (strcmp (results[1], "0") != 0) + { + fprintf (stderr, + "Unexpected result: InsertEpsgSrid() with non-integer passed: %s.\n", + results[1]); + return -20; + } + sqlite3_free_table (results); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -21; + } + + spatialite_cleanup_ex (cache); + + cache = spatialite_alloc_connection (); + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -22; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_get_table (handle, "SELECT InitSpatialMetadata(\"WGS84\")", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -23; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected result InitSpatialMetadata(\"WGS84\") bad result: %i/%i.\n", + rows, columns); + return -24; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "Unexpected error: InitSpatialMetadata(\"WGS84\"): %s.\n", + results[1]); + return -25; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, "SELECT InsertEpsgSrid(3003)", &results, + &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -26; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected result InsertEpsgSrid(3003) bad result: %i/%i.\n", + rows, columns); + return -27; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: InsertEpsgSrid(3003): %s.\n", + results[1]); + return -28; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, "SELECT InsertEpsgSrid(4326)", &results, + &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -29; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected result InsertEpsgSrid(4326) (dupe) bad result: %i/%i.\n", + rows, columns); + return -30; + } + if (strcmp (results[1], "0") != 0) + { + fprintf (stderr, + "Unexpected result: InsertEpsgSrid(4326) duplicate passed: %s.\n", + results[1]); + return -31; + } + sqlite3_free_table (results); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -32; + } + + spatialite_cleanup_ex (cache); + + cache = spatialite_alloc_connection (); + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -33; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_get_table (handle, "SELECT InitSpatialMetadata(\"WGS84_only\")", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -34; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected result InitSpatialMetadata(\"WGS84_ONLY\") bad result: %i/%i.\n", + rows, columns); + return -35; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "Unexpected error: InitSpatialMetadata(\"WGS84_ONLY\"): %s.\n", + results[1]); + return -36; + } + sqlite3_free_table (results); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -32; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_libxml2.c b/src/spatialite/test/check_libxml2.c new file mode 100644 index 0000000..bc2d6b0 --- /dev/null +++ b/src/spatialite/test/check_libxml2.c @@ -0,0 +1,746 @@ + +/* + + check_libxml2.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +#ifdef ENABLE_LIBXML2 /* only if LIBXML2 is supported */ + +#define ISO_METADATA 1 +#define SLD_SE_STYLE 2 +#define SVG 3 + +static int +check_bad_xml (void *cache) +{ +/* parsing a not-well-formed XML Sample */ + FILE *fl; + int sz = 0; + int rd; + unsigned char *xml = NULL; + unsigned char *p_result = NULL; + int len; + char *err1; + char *err2; + char *version = gaia_libxml2_version (); + + if (version == NULL) + { + fprintf (stderr, "unable to get the library version\n"); + return 0; + } + free (version); + +/* loading the XMLDocument */ + fl = fopen ("books-bad.xml", "rb"); + if (!fl) + { + fprintf (stderr, "cannot open \"books-bad.xml\"\n"); + return 0; + } + if (fseek (fl, 0, SEEK_END) == 0) + sz = ftell (fl); + xml = malloc (sz); + rewind (fl); + rd = fread (xml, 1, sz, fl); + if (rd != sz) + { + fprintf (stderr, "read error \"books-bad.xml\"\n"); + return 0; + } + fclose (fl); + +/* parsing the XMLDocument */ + gaiaXmlToBlob (cache, xml, rd, 1, NULL, &p_result, &len, &err1, &err2); + if (p_result != NULL) + { + fprintf (stderr, "this is not a well-formed XML !!!\n"); + return 0; + } + + free (xml); + return 1; +} + +static int +check_bad_schema (void *cache) +{ +/* validating by invalid Schema */ + FILE *fl; + int sz = 0; + int rd; + unsigned char *xml = NULL; + unsigned char *p_result = NULL; + int len; + char *err1; + char *err2; + +/* loading the XMLDocument */ + fl = fopen ("books.xml", "rb"); + if (!fl) + { + fprintf (stderr, "cannot open \"books.xml\"\n"); + return 0; + } + if (fseek (fl, 0, SEEK_END) == 0) + sz = ftell (fl); + xml = malloc (sz); + rewind (fl); + rd = fread (xml, 1, sz, fl); + if (rd != sz) + { + fprintf (stderr, "read error \"books.xml\"\n"); + return 0; + } + fclose (fl); + +/* validating the XMLDocument */ + gaiaXmlToBlob (cache, xml, rd, 1, "books-bad.xsd", &p_result, &len, &err1, + &err2); + if (p_result != NULL) + { + fprintf (stderr, "this is not a valid XML !!!\n"); + return 0; + } + + free (xml); + return 1; +} + +static int +check_validate (void *cache, const char *path) +{ +/* validating an XML Sample */ + FILE *fl; + int sz = 0; + int rd; + unsigned char *xml = NULL; + char *schema_uri = NULL; + char *schema_uri2 = NULL; + unsigned char *p_result = NULL; + int len; + +/* loading the XMLDocument */ + fl = fopen (path, "rb"); + if (!fl) + { + fprintf (stderr, "cannot open \"%s\"\n", path); + return 0; + } + if (fseek (fl, 0, SEEK_END) == 0) + sz = ftell (fl); + xml = malloc (sz); + rewind (fl); + rd = fread (xml, 1, sz, fl); + if (rd != sz) + { + fprintf (stderr, "read error \"%s\"\n", path); + return 0; + } + fclose (fl); + +/* extracting the Internal SchemaURI */ + schema_uri = gaiaXmlGetInternalSchemaURI (cache, xml, rd); + if (schema_uri == NULL) + { + fprintf (stderr, "unable to identify the Schema for \"%s\"\n", path); + return 0; + } +/* validating the XMLDocument */ + gaiaXmlToBlob (cache, xml, rd, 1, schema_uri, &p_result, &len, NULL, NULL); + if (p_result == NULL) + { + fprintf (stderr, "unable to validate \"%s\"\n", path); + return 0; + } + if (!gaiaIsSchemaValidatedXmlBlob (p_result, len)) + { + fprintf (stderr, "validation failed: \"%s\"\n", path); + return 0; + } + schema_uri2 = gaiaXmlBlobGetSchemaURI (p_result, len); + if (schema_uri2 == NULL) + { + fprintf (stderr, + "unable to retrieve the ValidationSchemaURI for \"%s\"\n", + path); + return 0; + } + if (strcmp (schema_uri, schema_uri2) != 0) + { + fprintf (stderr, + "%s: mismatching SchemaURI \"%s\" (expected \"%s\")\n", path, + schema_uri2, schema_uri); + return 0; + } + + free (schema_uri); + free (schema_uri2); + free (p_result); + free (xml); + + return 1; +} + +static int +check_extended (void *cache, const char *path, int mode) +{ +/* validating an XML Sample */ + FILE *fl; + int sz = 0; + int rd; + unsigned char *xml = NULL; + int iso; + int style; + int svg; + unsigned char *p_result = NULL; + int len; + char *file_id = NULL; + char *parent_id = NULL; + char *title = NULL; + char *abstract = NULL; + unsigned char *geom_blob; + int geom_size; + gaiaGeomCollPtr geom; + +/* loading the XMLDocument */ + fl = fopen (path, "rb"); + if (!fl) + { + fprintf (stderr, "cannot open \"%s\"\n", path); + return 0; + } + if (fseek (fl, 0, SEEK_END) == 0) + sz = ftell (fl); + xml = malloc (sz); + rewind (fl); + rd = fread (xml, 1, sz, fl); + if (rd != sz) + { + fprintf (stderr, "read error \"%s\"\n", path); + return 0; + } + fclose (fl); + +/* simple parsing without validation */ + gaiaXmlToBlob (cache, xml, rd, 1, NULL, &p_result, &len, NULL, NULL); + if (p_result == NULL) + { + fprintf (stderr, "unable to parse \"%s\"\n", path); + return 0; + } + +/* checking the payload type */ + iso = gaiaIsIsoMetadataXmlBlob (p_result, len); + style = gaiaIsSldSeRasterStyleXmlBlob (p_result, len); + style = gaiaIsSldSeVectorStyleXmlBlob (p_result, len); + svg = gaiaIsSvgXmlBlob (p_result, len); + if (mode == ISO_METADATA && iso && !style && !svg) + ; + else if (mode == SLD_SE_STYLE && !iso && style && !svg) + ; + else if (mode == SVG && !iso && !style && svg) + ; + else + { + fprintf (stderr, "mismatching type: \"%s\" iso=%d style=%d svg=%d\n", + path, iso, style, svg); + return 0; + } + +/* testing ISO Metadata attributes */ + file_id = gaiaXmlBlobGetFileId (p_result, len); + parent_id = gaiaXmlBlobGetParentId (p_result, len); + title = gaiaXmlBlobGetTitle (p_result, len); + abstract = gaiaXmlBlobGetAbstract (p_result, len); + gaiaXmlBlobGetGeometry (p_result, len, &geom_blob, &geom_size); + if (mode == ISO_METADATA) + { + /* verifying ISO Metadata attributes */ + if (file_id == NULL) + { + fprintf (stderr, "unexpected NULL FileIdentifier in \"%s\"\n", + path); + return 0; + } + if (strcmp (file_id, "029097fd-2ef2-487c-a5ca-6ec7a3dbac53") != 0) + { + fprintf (stderr, "unexpected FileIdentifier in \"%s\" [%s]\n", + path, file_id); + return 0; + } + if (parent_id == NULL) + { + fprintf (stderr, "unexpected NULL ParentIdentifier in \"%s\"\n", + path); + return 0; + } + if (strcmp (parent_id, "024027fd-3ef2-487c-a8ca-6ec8a3dfac57") != 0) + { + fprintf (stderr, "unexpected ParentIdentifier in \"%s\" [%s]\n", + path, parent_id); + return 0; + } + if (title == NULL) + { + fprintf (stderr, "unexpected NULL Title in \"%s\"\n", path); + return 0; + } + if (strcmp (title, "Image2000 Product 1 (nl2) Multispectral") != 0) + { + fprintf (stderr, "unexpected Title in \"%s\" [%s]\n", path, + title); + return 0; + } + if (abstract == NULL) + { + fprintf (stderr, "unexpected NULL Abstract in \"%s\"\n", path); + return 0; + } + if (strcmp + (abstract, + "IMAGE2000 product 1 individual orthorectified scenes.") != 0) + { + fprintf (stderr, "unexpected Abstract in \"%s\" [%s]\n", path, + abstract); + return 0; + } + if (geom_blob == NULL) + { + fprintf (stderr, "unexpected NULL Geometry in \"%s\"\n", path); + return 0; + } + geom = gaiaFromSpatiaLiteBlobWkb (geom_blob, geom_size); + if (geom == NULL) + { + fprintf (stderr, "unexpected invalid Geometry in \"%s\"\n", + path); + return 0; + } + if (geom->Srid != 4326) + { + fprintf (stderr, "unexpected Geometry SRID in \"%s\" [%d]\n", + path, geom->Srid); + return 0; + } + if (geom->DeclaredType != GAIA_MULTIPOLYGON) + { + fprintf (stderr, "unexpected Geometry Type in \"%s\" [%d]\n", + path, geom->DeclaredType); + return 0; + } + if (geom->MinX != 3.93000000) + { + fprintf (stderr, "unexpected Geometry MinX in \"%s\" [%1.8f]\n", + path, geom->MinX); + return 0; + } + if (geom->MinY != 52.10000000) + { + fprintf (stderr, "unexpected Geometry MinY in \"%s\" [%1.8f]\n", + path, geom->MinY); + return 0; + } + if (geom->MaxX != 7.57000000) + { + fprintf (stderr, "unexpected Geometry MaxX in \"%s\" [%1.8f]\n", + path, geom->MaxX); + return 0; + } + if (geom->MaxY != 54.10000000) + { + fprintf (stderr, "unexpected Geometry MaxY in \"%s\" [%1.8f]\n", + path, geom->MaxY); + return 0; + } + gaiaFreeGeomColl (geom); + } + else + { + /* not ISO Metadata */ + if (strcmp (path, "stazioni_se.xml") == 0) + { + if (strcmp (title, "SLD test - Point [Railway Stations]") != 0) + { + fprintf (stderr, "unexpected Title in \"%s\"\n", path); + return 0; + } + if (strcmp + (abstract, + "an SLD complex variable style [depending on actual scale]") + != 0) + { + fprintf (stderr, "unexpected Abstract in \"%s\"\n", path); + return 0; + } + } + else + { + if (title != NULL) + { + fprintf (stderr, "unexpected Title in \"%s\"\n", path); + return 0; + } + if (abstract != NULL) + { + fprintf (stderr, "unexpected Abstract in \"%s\"\n", path); + return 0; + } + } + } + + free (p_result); + free (xml); + if (file_id) + free (file_id); + if (parent_id) + free (parent_id); + if (title) + free (title); + if (abstract) + free (abstract); + if (geom_blob) + free (geom_blob); + + return 1; +} + +static int +check_parse (void *cache, const char *path) +{ +/* parsing an XML Sample */ + FILE *fl; + int sz = 0; + int rd; + unsigned char *xml = NULL; + int compressed_sz; + int uncompressed_sz; + int doc_sz; + int formatted_sz; + int formatted_txt_sz; + unsigned char *p_result = NULL; + unsigned char *out; + char *txt; + +/* loading the XMLDocument */ + fl = fopen (path, "rb"); + if (!fl) + { + fprintf (stderr, "cannot open \"%s\"\n", path); + return 0; + } + if (fseek (fl, 0, SEEK_END) == 0) + sz = ftell (fl); + xml = malloc (sz); + rewind (fl); + rd = fread (xml, 1, sz, fl); + if (rd != sz) + { + fprintf (stderr, "read error \"%s\"\n", path); + return 0; + } + fclose (fl); + +/* parsing the XMLDocument (no validation / compressed) */ + gaiaXmlToBlob (cache, xml, rd, 1, NULL, &p_result, &compressed_sz, NULL, + NULL); + if (p_result == NULL) + { + fprintf (stderr, "unable to parse(1) \"%s\"\n", path); + return 0; + } + doc_sz = gaiaXmlBlobGetDocumentSize (p_result, compressed_sz); + gaiaXmlFromBlob (p_result, compressed_sz, 4, &out, &formatted_sz); + if (out == NULL) + { + fprintf (stderr, "unable to format(1) \"%s\"\n", path); + return 0; + } + free (out); + txt = gaiaXmlTextFromBlob (p_result, compressed_sz, 2); + if (txt == NULL) + { + fprintf (stderr, "unable to format-text(1) \"%s\"\n", path); + return 0; + } + formatted_txt_sz = strlen (txt); + free (txt); + free (p_result); + +/* parsing the XMLDocument (no validation / not compressed) */ + gaiaXmlToBlob (cache, xml, rd, 0, NULL, &p_result, &uncompressed_sz, NULL, + NULL); + if (p_result == NULL) + { + fprintf (stderr, "unable to parse(2) \"%s\"\n", path); + return 0; + } + free (p_result); + + if (strcmp (path, "books.xml") == 0) + { + if (compressed_sz != 432) + { + fprintf (stderr, + "books.xml: unexpected compressed size %d (expected 432)\n", + compressed_sz); + return 0; + } + if (uncompressed_sz != 780) + { + fprintf (stderr, + "books.xml: unexpected compressed size %d (expected 780)\n", + uncompressed_sz); + return 0; + } + if (doc_sz != 741) + { + fprintf (stderr, + "books.xml: unexpected document size %d (expected 741)\n", + doc_sz); + return 0; + } + if (formatted_sz != 864) + { + fprintf (stderr, + "books.xml: unexpected formatted size %d (expected 864)\n", + formatted_sz); + return 0; + } + if (formatted_txt_sz != 803) + { + fprintf (stderr, + "books.xml: unexpected formatted-text size %d (expected 803)\n", + formatted_txt_sz); + return 0; + } + } + if (strcmp (path, "opera.xml") == 0) + { + if (compressed_sz != 425) + { + fprintf (stderr, + "opera.xml: unexpected compressed size %d (expected 425)\n", + compressed_sz); + return 0; + } + if (uncompressed_sz != 951) + { + fprintf (stderr, + "opera.xml: unexpected compressed size %d (expected 951)\n", + uncompressed_sz); + return 0; + } + if (doc_sz != 912) + { + fprintf (stderr, + "opera.xml: unexpected document size %d (expected 912)\n", + doc_sz); + return 0; + } + if (formatted_sz != 970) + { + fprintf (stderr, + "opera.xml: unexpected formatted size %d (expected 970)\n", + formatted_sz); + return 0; + } + if (formatted_txt_sz != 909) + { + fprintf (stderr, + "opera.xml: unexpected formatted-text size %d (expected 909)\n", + formatted_txt_sz); + return 0; + } + } + if (strcmp (path, "movies.xml") == 0) + { + if (compressed_sz != 577) + { + fprintf (stderr, + "movies.xml: unexpected compressed size %d (expected 577)\n", + compressed_sz); + return 0; + } + if (uncompressed_sz != 1809) + { + fprintf (stderr, + "movies.xml: unexpected compressed size %d (expected 1809)\n", + uncompressed_sz); + return 0; + } + if (doc_sz != 1770) + { + fprintf (stderr, + "movies.xml: unexpected document size %d (expected 1770)\n", + doc_sz); + return 0; + } + if (formatted_sz != 945) + { + fprintf (stderr, + "movies.xml: unexpected formatted size %d (expected 945)\n", + formatted_sz); + return 0; + } + if (formatted_txt_sz != 884) + { + fprintf (stderr, + "movies.xml: unexpected formatted-text size %d (expected 884)\n", + formatted_txt_sz); + return 0; + } + } + free (xml); + + return 1; +} + +#endif + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + +#ifdef ENABLE_LIBXML2 /* only if LIBXML2 is supported */ + + if (!check_parse (cache, "books.xml")) + { + fprintf (stderr, "unable to parse \"books.xml\"\n"); + return -2; + } + if (!check_parse (cache, "opera.xml")) + { + fprintf (stderr, "unable to parse \"opera.xml\"\n"); + return -3; + } + if (!check_parse (cache, "movies.xml")) + { + fprintf (stderr, "unable to parse \"movies.xml\"\n"); + return -4; + } + + if (!check_validate (cache, "books.xml")) + { + fprintf (stderr, "unable to validate \"books.xml\"\n"); + return -5; + } + if (!check_validate (cache, "opera.xml")) + { + fprintf (stderr, "unable to validate \"opera.xml\"\n"); + return -6; + } + if (!check_validate (cache, "movies.xml")) + { + fprintf (stderr, "unable to validate \"movies.xml\"\n"); + return -7; + } + if (!check_extended (cache, "inspire-data-example.xml", ISO_METADATA)) + { + fprintf (stderr, "unable to parse \"inspire-data-example.xml\"\n"); + return -8; + } + if (!check_extended (cache, "stazioni_se.xml", SLD_SE_STYLE)) + { + fprintf (stderr, "unable to parse \"stazioni_se.xml\"\n"); + return -9; + } + if (!check_extended (cache, "thunderstorm_mild.svg", SVG)) + { + fprintf (stderr, "unable to parse \"thunderstorm_mild.svg\"\n"); + return -10; + } + + if (!check_bad_xml (cache)) + { + fprintf (stderr, "unable to test not well-formed XML\n"); + return -11; + } + if (!check_bad_schema (cache)) + { + fprintf (stderr, "unable to test invalid Schema\n"); + return -12; + } + +#endif + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -10; + } + + spatialite_cleanup_ex (cache); + + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_math_funcs.c b/src/spatialite/test/check_math_funcs.c new file mode 100644 index 0000000..df39d29 --- /dev/null +++ b/src/spatialite/test/check_math_funcs.c @@ -0,0 +1,105 @@ +/* + + check_math_funcs.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +static const double double_eps = 0.00000001; + +int +main (int argc, char *argv[]) +{ + double result; + sqlite3_int64 result64; + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + result = math_round (3.4); + if (abs (result - 3) > double_eps) + { + fprintf (stderr, "bad math_round() result for 3.4: %f\n", result); + return -1; + } + + result = math_round (3.6); + if (abs (result - 4) > double_eps) + { + fprintf (stderr, "bad math_round() result for 3.6: %f\n", result); + return -2; + } + + result = math_round (-3.4); + if (abs (result + 3) > double_eps) + { + fprintf (stderr, "bad math_round() result for -3.4: %f\n", result); + return -3; + } + + result = math_round (-3.6); + if (abs (result + 4) > double_eps) + { + fprintf (stderr, "bad math_round() result for -3.6: %f\n", result); + return -4; + } + + result64 = math_llabs ((sqlite3_int64) 26); + if (result64 != 26) + { + fprintf (stderr, "bad math_llabs() result for 26"); + return -5; + } + + result64 = math_llabs ((sqlite3_int64) - 26); + if (result64 != 26) + { + fprintf (stderr, "bad math_llabs() result for -26"); + return -6; + } + + return 0; +} diff --git a/src/spatialite/test/check_mbrcache.c b/src/spatialite/test/check_mbrcache.c new file mode 100644 index 0000000..7f078ff --- /dev/null +++ b/src/spatialite/test/check_mbrcache.c @@ -0,0 +1,624 @@ +/* + + check_mbrcache.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + int row_count; + char **results; + int rows; + int columns; + int pt; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + ret = load_shapefile (handle, "shp/foggia/local_councils", "Councils", + "CP1252", 23032, "geom", 1, 0, 1, 0, &row_count, + err_msg); + if (!ret) + { + fprintf (stderr, "load_shapefile() error: %s\n", err_msg); + sqlite3_close (handle); + return -3; + } + if (row_count != 61) + { + fprintf (stderr, "unexpected number of rows loaded: %i\n", row_count); + sqlite3_close (handle); + return -4; + } + + ret = + sqlite3_get_table (handle, + "SELECT lc_name FROM Councils WHERE MbrWithin(geom, BuildMbr(1040523, 4010000, 1140523, 4850000)) ORDER BY lc_name;", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -5; + } + if ((rows != 22) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select lc_name bad result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -6; + } + if (strcmp (results[1], "Ascoli Satriano") != 0) + { + fprintf (stderr, "unexpected result at 1: %s\n", results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -7; + } + if (strcmp (results[22], "Zapponeta") != 0) + { + fprintf (stderr, "unexpected result at 22: %s\n", results[22]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -8; + } + sqlite3_free_table (results); + + ret = sqlite3_exec (handle, "SELECT CreateMbrCache('Councils', 'geom');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CreateMbrCache error: %s\n", err_msg); + sqlite3_free (err_msg); + return -9; + } + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT rowid FROM cache_Councils_geom WHERE mbr = FilterMbrWithin(1040523, 4010000, 1140523, 4850000)) ORDER BY lc_name;", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error in Mbr SELECT: %s\n", err_msg); + sqlite3_free (err_msg); + return -14; + } + if ((rows != 22) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select lc_name bad cache result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -15; + } + if (strcmp (results[1], "Ascoli Satriano") != 0) + { + fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -16; + } + if (strcmp (results[22], "Zapponeta") != 0) + { + fprintf (stderr, "unexpected mbr result at 22: %s\n", results[22]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -17; + } + sqlite3_free_table (results); + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT rowid FROM cache_Councils_geom WHERE mbr = FilterMbrContains(997226.750031, 4627372.000018, 997226.750031, 4627372.000018)) ORDER BY lc_name;", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error in Mbr SELECT Contains: %s\n", err_msg); + sqlite3_free (err_msg); + return -18; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select lc_name bad cache result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -19; + } + if (strcmp (results[1], "Carlantino") != 0) + { + fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -20; + } + sqlite3_free_table (results); + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT rowid FROM cache_Councils_geom WHERE mbr = FilterMbrIntersects(1040523, 4010000, 1140523, 4850000)) ORDER BY lc_name;", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error in Mbr SELECT: %s\n", err_msg); + sqlite3_free (err_msg); + return -21; + } + if ((rows != 35) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select lc_name bad cache result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -22; + } + if (strcmp (results[1], "Apricena") != 0) + { + fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -23; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (handle, + "DELETE FROM Councils WHERE lc_name = 'Zapponeta';", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -24; + } + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT rowid FROM cache_Councils_geom WHERE mbr = FilterMbrWithin(1040523, 4010000, 1140523, 4850000)) ORDER BY lc_name;", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error in Mbr SELECT: %s\n", err_msg); + sqlite3_free (err_msg); + return -25; + } + if ((rows != 21) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select lc_name bad cache result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -26; + } + if (strcmp (results[1], "Ascoli Satriano") != 0) + { + fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -27; + } + if (strcmp (results[21], "Vieste") != 0) + { + fprintf (stderr, "unexpected mbr result at 21: %s\n", results[21]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -28; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (handle, + "INSERT INTO Councils (lc_name, geom) VALUES ('Quairading', GeomFromText('MULTIPOLYGON(((997226.750031 4627372.000018, 997301.750031 4627332.000018, 997402.500031 4627344.000018, 997541.500031 4627326.500018,997226.750031 4627372.000018)))', 23032));", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT error: %s\n", err_msg); + sqlite3_free (err_msg); + return -29; + } + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT rowid FROM cache_Councils_geom WHERE mbr = FilterMbrWithin(1040523, 4010000, 1140523, 4850000)) ORDER BY lc_name;", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error in Mbr SELECT2: %s\n", err_msg); + sqlite3_free (err_msg); + return -30; + } + if ((rows != 21) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select lc_name bad cache result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -31; + } + if (strcmp (results[1], "Ascoli Satriano") != 0) + { + fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -32; + } + if (strcmp (results[21], "Vieste") != 0) + { + fprintf (stderr, "unexpected mbr result at 21: %s\n", results[21]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -33; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (handle, + "UPDATE Councils SET geom = GeomFromText('MULTIPOLYGON(((987226.750031 4627372.000018, 997301.750031 4627331.000018, 997402.500032 4627344.000018, 997541.500031 4627326.500018, 987226.750031 4627372.000018)))', 23032) WHERE lc_name = \"Quairading\";", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UPDATE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -34; + } + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT rowid FROM cache_Councils_geom WHERE mbr = FilterMbrWithin(1040523, 4010000, 1140523, 4850000)) ORDER BY lc_name;", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error in Mbr SELECT3: %s\n", err_msg); + sqlite3_free (err_msg); + return -35; + } + if ((rows != 21) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select lc_name bad cache result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -36; + } + if (strcmp (results[1], "Ascoli Satriano") != 0) + { + fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -37; + } + if (strcmp (results[21], "Vieste") != 0) + { + fprintf (stderr, "unexpected mbr result at 21: %s\n", results[21]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -38; + } + sqlite3_free_table (results); + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT rowid, mbr FROM cache_Councils_geom;", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error in Mbr SELECT: %s\n", err_msg); + sqlite3_free (err_msg); + return -39; + } + if ((rows != 61) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select lc_name bad cache2 result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -40; + } + if (strcmp (results[2], "1") != 0) + { + fprintf (stderr, "unexpected mbr result at 1: %s\n", results[2]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -41; + } + if (strcmp (results[12], "6") != 0) + { + fprintf (stderr, "unexpected mbr result at 6: %s\n", results[12]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -42; + } + sqlite3_free_table (results); + + ret = sqlite3_exec (handle, "DROP TABLE Councils;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE Councils error: %s\n", err_msg); + sqlite3_free (err_msg); + return -44; + } + +/* creating and feeding a Point table */ + ret = + sqlite3_exec (handle, "CREATE TABLE pt (id INTEGER);", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE pt error: %s\n", err_msg); + sqlite3_free (err_msg); + return -45; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('pt', 'g', 4326, 1, 'XY');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn pt error: %s\n", err_msg); + sqlite3_free (err_msg); + return -46; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('pt', 'g', 4326, 'POINT', 2.5);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn pt error: %s\n", err_msg); + sqlite3_free (err_msg); + return -47; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('pt', 'g', 4326, 'POINT', 'XY', 0.5);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn pt error: %s\n", err_msg); + sqlite3_free (err_msg); + return -48; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('pt', 'g', 4326, 'DUMMY', 'XY');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn pt error: %s\n", err_msg); + sqlite3_free (err_msg); + return -49; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('pt', 'g', 4326, 'POINT', 'DUMMY');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn pt error: %s\n", err_msg); + sqlite3_free (err_msg); + return -50; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('pt', 'g', 4326, 'POINT', 2);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn pt error: %s\n", err_msg); + sqlite3_free (err_msg); + return -51; + } + ret = + sqlite3_exec (handle, "SELECT CreateMbrCache('pt', 'g');", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CreateMbrCache pt.g error: %s\n", err_msg); + sqlite3_free (err_msg); + return -52; + } + for (pt = 0; pt < 10000; pt++) + { + /* inserting Points */ + char sql[1024]; + sprintf (sql, + "INSERT INTO pt (id, g) VALUES (%d, GeomFromText('POINT(%1.2f %1.2f)', 4326));", + pt, 11.0 + (pt / 10000.0), 43.0 + (pt / 10000.0)); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT INTO pt error: %s\n", err_msg); + sqlite3_free (err_msg); + return -53; + } + } + for (pt = 5000; pt < 6000; pt++) + { + /* updating Points */ + char sql[1024]; + sprintf (sql, + "UPDATE pt SET g = GeomFromText('POINT(%1.2f %1.2f)', 4326) WHERE id = %d;", + 12.0 + (pt / 10000.0), 42.0 + (pt / 10000.0), pt); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UPDATE pt error: %s\n", err_msg); + sqlite3_free (err_msg); + return -54; + } + } + for (pt = 7000; pt < 8000; pt++) + { + /* deleting Points */ + char sql[1024]; + sprintf (sql, "DELETE FROM pt WHERE id = %d;", pt); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UPDATE pt error: %s\n", err_msg); + sqlite3_free (err_msg); + return -55; + } + } + + ret = sqlite3_exec (handle, "SELECT CreateMbrCache(1, 'geom');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid CreateMbrCache error: %s\n", err_msg); + sqlite3_free (err_msg); + return -56; + } + ret = sqlite3_exec (handle, "SELECT CreateMbrCache('Councils', 2);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid CreateMbrCache error: %s\n", err_msg); + sqlite3_free (err_msg); + return -57; + } + ret = sqlite3_exec (handle, "SELECT FilterMbrWithin('a', 2, 3, 4);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid FilterMbrWithin error: %s\n", err_msg); + sqlite3_free (err_msg); + return -58; + } + ret = sqlite3_exec (handle, "SELECT FilterMbrWithin(1, 'a', 3, 4);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid FilterMbrWithin error: %s\n", err_msg); + sqlite3_free (err_msg); + return -59; + } + ret = sqlite3_exec (handle, "SELECT FilterMbrWithin(1, 2, 'a', 4);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid FilterMbrWithin error: %s\n", err_msg); + sqlite3_free (err_msg); + return -60; + } + ret = sqlite3_exec (handle, "SELECT FilterMbrWithin(1, 2, 3, 'a');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid FilterMbrWithin error: %s\n", err_msg); + sqlite3_free (err_msg); + return -61; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -62; + } + + spatialite_cleanup_ex (cache); +#endif /* end ICONV conditional */ + + return 0; +} diff --git a/src/spatialite/test/check_md5.c b/src/spatialite/test/check_md5.c new file mode 100644 index 0000000..a53d10f --- /dev/null +++ b/src/spatialite/test/check_md5.c @@ -0,0 +1,274 @@ +/* + + check_md5.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" +#include "spatialite/gaiaaux.h" + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + int i; + double x = 0.0; + double y = 0.0; + char sql[256]; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + ret = + sqlite3_exec (handle, + "CREATE TABLE test (id INTEGER PRIMARY KEY NOT NULL, name TEXT NOT NULL)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -3; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('test', 'geom', 4326, 'POINT', 'XY')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -4; + } + + for (i = 0; i < 1000; i++) + { + /* inserting thousand points */ + sprintf (sql, "INSERT INTO test (id, name, geom) VALUES " + "(%d, 'qwertyUOIOP%d', MakePoint(%1.2f, %1.2f, 4326))", i, i, + x, y); + x += 0.01; + y += 0.25; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Insert Point(%d) error: %s\n", i, err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -5; + } + } + +/* testing MD5Checksum() - BLOB */ + strcpy (sql, + "SELECT MD5Checksum(geom) FROM test WHERE id IN (10, 100, 750)"); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -6; + } + if ((rows != 3) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: MD5Checksum (blob) bad result: %i/%i.\n", + rows, columns); + return -7; + } + if (strcmp (results[1], "66db2227f970c7881b57247a28e2f893") != 0) + { + fprintf (stderr, + "Unexpected error: MD5Checksum blob-#1 bad result: %s.\n", + results[1]); + return -8; + } + if (strcmp (results[2], "6fc5f82a0f9093c5287617cac908b557") != 0) + { + fprintf (stderr, + "Unexpected error: MD5Checksum blob-#2 bad result: %s.\n", + results[2]); + return -9; + } + if (strcmp (results[3], "5f92e335d709c85f5858772a5072f0e3") != 0) + { + fprintf (stderr, + "Unexpected error: MD5Checksum blob-#3 bad result: %s.\n", + results[3]); + return -10; + } + sqlite3_free_table (results); + +/* testing the aggregate function: MD5TotalChecksum() - BLOB */ + strcpy (sql, "SELECT MD5TotalChecksum(geom) FROM test"); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -11; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: MD5TotalChecksum (blob) bad result: %i/%i.\n", + rows, columns); + return -12; + } + if (strcmp (results[1], "480b0dd7524a3bb4a75e01123a3eedf0") != 0) + { + fprintf (stderr, + "Unexpected error: MD5TotalChecksum() (blob) bad result: %s.\n", + results[1]); + return -13; + } + sqlite3_free_table (results); + +/* testing MD5Checksum() - TEXT */ + strcpy (sql, + "SELECT MD5Checksum(name) FROM test WHERE id IN (10, 100, 750)"); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -14; + } + if ((rows != 3) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: MD5Checksum (text) bad result: %i/%i.\n", + rows, columns); + return -15; + } + if (strcmp (results[1], "05bc33eb92fb4a319da50825571358ad") != 0) + { + fprintf (stderr, + "Unexpected error: MD5Checksum text-#1 bad result: %s.\n", + results[1]); + return -16; + } + if (strcmp (results[2], "bbf88f3dfa445ea7a37feca8959b08ed") != 0) + { + fprintf (stderr, + "Unexpected error: MD5Checksum text-#2 bad result: %s.\n", + results[2]); + return -17; + } + if (strcmp (results[3], "97805a371d30b02f7a4ee611ff027664") != 0) + { + fprintf (stderr, + "Unexpected error: MD5Checksum text-#3 bad result: %s.\n", + results[3]); + return -18; + } + sqlite3_free_table (results); + +/* testing the aggregate function: MD5TotalChecksum() - TEXT */ + strcpy (sql, "SELECT MD5TotalChecksum(name) FROM test"); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -19; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: MD5TotalChecksum (text) bad result: %i/%i.\n", + rows, columns); + return -20; + } + if (strcmp (results[1], "b775beceb3ef0ee9d9c16d4ddfe81879") != 0) + { + fprintf (stderr, + "Unexpected error: MD5TotalChecksum() (text) bad result: %s.\n", + results[1]); + return -21; + } + sqlite3_free_table (results); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -22; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_metacatalog.c b/src/spatialite/test/check_metacatalog.c new file mode 100644 index 0000000..1896d5e --- /dev/null +++ b/src/spatialite/test/check_metacatalog.c @@ -0,0 +1,623 @@ +/* + + check_metacatalog.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + +/* testing current style metadata layout >= v.4.0.0 */ + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + ret = + sqlite3_exec (handle, + "CREATE TABLE abc (def VARCHAR(10), ghi TEXT NOT NULL)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -3; + } + ret = + sqlite3_exec (handle, + "INSERT INTO abc (def, ghi) VALUES (NULL, 'alpha')", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT-1 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -4; + } + ret = + sqlite3_exec (handle, + "INSERT INTO abc (def, ghi) VALUES (NULL, 'gamma')", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT-2 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -4; + } + ret = + sqlite3_exec (handle, + "INSERT INTO abc (def, ghi) VALUES ('one', 'beta')", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT-3 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -5; + } + ret = + sqlite3_exec (handle, + "INSERT INTO abc (def, ghi) VALUES ('two', 'gamma')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT-4 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -6; + } + ret = + sqlite3_exec (handle, + "INSERT INTO abc (def, ghi) VALUES ('one', 'alpha')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT-5 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -7; + } + + ret = + sqlite3_exec (handle, "SELECT CreateMetaCatalogTables(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CreateMetaCatalogTables error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -8; + } + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT table_name, column_name, type, not_null " + "FROM splite_metacatalog " + "WHERE table_name = 'abc'", &results, &rows, + &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error SELECT splite_metacatalog: %s\n", err_msg); + sqlite3_free (err_msg); + return -9; + } + if ((rows != 2) || (columns != 4)) + { + fprintf (stderr, + "Unexpected error: SELECT splite_metacatalog result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -10; + } + if (strcmp (results[4], "abc") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[4]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -11; + } + if (strcmp (results[5], "def") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[5]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -12; + } + if (strcmp (results[6], "VARCHAR(10)") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[6]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -13; + } + if (strcmp (results[7], "0") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[7]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -14; + } + if (strcmp (results[8], "abc") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[8]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -15; + } + if (strcmp (results[9], "ghi") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[9]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -14; + } + if (strcmp (results[10], "TEXT") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[10]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -13; + } + if (strcmp (results[11], "1") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[11]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -14; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (handle, + "SELECT UpdateMetaCatalogStatistics(1, 'abc', 'def')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UpdateMetaCatalogStatistics error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -15; + } + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT value, count FROM splite_metacatalog_statistics", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Error SELECT splite_metacatalog_statistics(1): %s\n", + err_msg); + sqlite3_free (err_msg); + return -16; + } + if ((rows != 3) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: SELECT splite_metacatalog_statistics result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -17; + } + if (results[2] != NULL) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[2]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -18; + } + if (strcmp (results[3], "2") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[3]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -19; + } + if (strcmp (results[4], "one") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[4]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -20; + } + if (strcmp (results[5], "2") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[5]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -21; + } + if (strcmp (results[6], "two") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[6]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -22; + } + if (strcmp (results[7], "1") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[7]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -23; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (handle, + "SELECT UpdateMetaCatalogStatistics(1, 'abc_bad_table', 'def')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "UpdateMetaCatalogStatistics (bad table) error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -24; + } + ret = + sqlite3_exec (handle, + "SELECT UpdateMetaCatalogStatistics(1, 'abc', 'def_bad_column')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "UpdateMetaCatalogStatistics (bad column) error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -25; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO abc (def, ghi) VALUES ('two', 'alpha')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT-6 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -26; + } + ret = + sqlite3_exec (handle, "DELETE FROM abc WHERE def IS NULL", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -27; + } + + ret = + sqlite3_exec (handle, + "CREATE TABLE my_master (tbl TEXT NOT NULL, col TEXT NOT NULL)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -28; + } + ret = + sqlite3_exec (handle, + "INSERT INTO my_master (tbl, col) VALUES ('abc', 'def')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT-master-1 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -29; + } + ret = + sqlite3_exec (handle, + "INSERT INTO my_master (tbl, col) VALUES ('abc', 'ghi')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT-master-2 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -30; + } + ret = + sqlite3_exec (handle, + "INSERT INTO my_master (tbl, col) VALUES ('abc_bad', 'def')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT-master-3 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -31; + } + ret = + sqlite3_exec (handle, + "INSERT INTO my_master (tbl, col) VALUES ('abc', 'ghi_bad')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT-master-4 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -32; + } + + ret = + sqlite3_exec (handle, + "SELECT UpdateMetaCatalogStatistics(1, 'my_master', 'tbl', 'col')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UpdateMetaCatalogStatistics error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -33; + } + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT column_name, value, count FROM splite_metacatalog_statistics", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "Error SELECT splite_metacatalog_statistics(2): %s\n", + err_msg); + sqlite3_free (err_msg); + return -34; + } + if ((rows != 5) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: SELECT splite_metacatalog_statistics result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -35; + } + if (strcmp (results[3], "def") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[3]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -36; + } + if (strcmp (results[4], "one") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[4]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -37; + } + if (strcmp (results[5], "2") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[5]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -38; + } + if (strcmp (results[6], "def") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[6]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -39; + } + if (strcmp (results[7], "two") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[7]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -40; + } + if (strcmp (results[8], "2") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[8]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -41; + } + if (strcmp (results[9], "ghi") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[9]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -42; + } + if (strcmp (results[10], "alpha") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[10]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -43; + } + if (strcmp (results[11], "2") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[11]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -44; + } + if (strcmp (results[12], "ghi") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[12]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -45; + } + if (strcmp (results[13], "beta") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[13]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -46; + } + if (strcmp (results[14], "1") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[14]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -47; + } + if (strcmp (results[15], "ghi") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[15]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -48; + } + if (strcmp (results[16], "gamma") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[16]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -49; + } + if (strcmp (results[17], "1") != 0) + { + fprintf (stderr, "unexpected splite_metacatalog: %s\n", results[17]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -50; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (handle, + "SELECT UpdateMetaCatalogStatistics(1, 'my_master_bad', 'tbl', 'col')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UpdateMetaCatalogStatistics error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -51; + } + ret = + sqlite3_exec (handle, + "SELECT UpdateMetaCatalogStatistics(1, 'my_master', 'tbl_bad', 'col')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UpdateMetaCatalogStatistics error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -52; + } + ret = + sqlite3_exec (handle, + "SELECT UpdateMetaCatalogStatistics(1, 'my_master', 'tbl', 'col_bad')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UpdateMetaCatalogStatistics error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -53; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -101; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_multithread.c b/src/spatialite/test/check_multithread.c new file mode 100644 index 0000000..cfa2b68 --- /dev/null +++ b/src/spatialite/test/check_multithread.c @@ -0,0 +1,967 @@ +/* + + check_multithread.c -- SpatiaLite Test Case + + Author: Alessandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ + +#ifdef _WIN32 +#define _CRT_RAND_S +#endif + +#include +#include +#include +#include + +#ifdef _WIN32 +#include +#include +#include +#else +#include +#include +#endif + +#ifndef _WIN32 +#include +#include +#endif + +#include "config.h" + +#include +#include + +#ifdef _WIN32 +#include "fnmatch4win.h" +#include "scandir4win.h" +#include "asprintf4win.h" +#include "fnmatch_impl4win.h" +#endif + +struct test_data +{ + char *test_case_name; + char *database_name; + char *sql_statement; + int expected_rows; + int expected_columns; + char **expected_results; + int *expected_precision; + struct test_data *next; +}; + +struct test_list +{ + struct test_data *first; + struct test_data *last; + int count; + struct test_data **array; +}; + +struct db_conn +{ + sqlite3 *db_handle; + void *cache; +}; + +struct thread_params +{ + int id; + struct test_list *list; + struct db_conn *conn; + int done; + int count; + int errors; +#ifndef _WIN32 + int started; + pthread_t thread_id; + pthread_attr_t attr; +#endif +} mt_params[64]; + +static struct db_conn * +alloc_connection (void) +{ + struct db_conn *conn = malloc (sizeof (struct db_conn)); + conn->db_handle = NULL; + conn->cache = spatialite_alloc_connection (); + return conn; +} + +static void +close_connection (struct db_conn *conn, int final) +{ + if (conn->db_handle != NULL) + sqlite3_close (conn->db_handle); + conn->db_handle = NULL; + if (final) + { + if (conn->cache != NULL) + spatialite_cleanup_ex (conn->cache); + conn->cache = NULL; + } +} + +static void +open_connection (struct db_conn *conn) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open %s db: %s\n", ":memory:", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return; + } + + spatialite_init_ex (db_handle, conn->cache, 0); + + ret = + sqlite3_exec (db_handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return; + } + + conn->db_handle = db_handle; +} + +static void +init_thread_params (int id, struct test_list *list) +{ + struct thread_params *p = &(mt_params[id]); + p->id = id; + p->conn = alloc_connection (); + p->list = list; + p->done = 0; + p->count = 0; + p->errors = 0; +#ifndef _WIN32 + p->started = 0; +#endif +} + +static void +free_thread_params (int id, int *total_sql, int *failures) +{ + struct thread_params *p = &(mt_params[id]); + if (p->conn != NULL) + { + close_connection (p->conn, 1); + free (p->conn); + p->conn = NULL; + } +#ifndef _WIN32 + if (p->started) + { + void *ptr; + pthread_join (p->thread_id, &ptr); + pthread_attr_destroy (&(p->attr)); + } +#endif + *total_sql += p->count; + *failures += p->errors; +} + +int +get_clean_line (FILE * f, char **line) +{ + size_t len = 0; + ssize_t num_read = 0; + ssize_t end = 0; + char *tmp_line = NULL; + +#if !defined(_WIN32) &&!defined(__APPLE__) +/* expecting to be on a sane minded platform [linux-like] */ + num_read = getline (&(tmp_line), &len, f); +#else +/* neither Windows nor MacOsX support getline() */ + len = 1024 * 1024; + tmp_line = malloc (len); + if (fgets (tmp_line, len, f) == NULL) + { + free (tmp_line); + num_read = -1; + } + else + num_read = strlen (tmp_line); +#endif + + if (num_read < 1) + { + fprintf (stderr, "failed to read at %li: %li\n", ftell (f), num_read); + return -1; + } + /* trim the trailing new line and any comments */ + for (end = 0; end < num_read; ++end) + { + if (*(tmp_line + end) == '\n') + break; + if (*(tmp_line + end) == '#') + break; + } + /* trim any trailing spaces */ + while (end > 0) + { + if (*(tmp_line + end - 1) != ' ') + { + break; + } + *(tmp_line + end - 1) = '\0'; + end--; + } + *line = malloc (end + 1); + memcpy (*line, tmp_line, end); + (*line)[end] = '\0'; + free (tmp_line); + return 0; +} + +void +handle_precision (char *expected_result, int *precision) +{ + int i; + int prcsn; + int result_len = strlen (expected_result); + *precision = 0; + for (i = result_len - 1; i >= 0; --i) + { + if (expected_result[i] == ':') + { + prcsn = atoi (&(expected_result[i + 1])); + if (prcsn > 0) + { + expected_result[i] = '\0'; + *precision = prcsn; + } + break; + } + } +} + +struct test_data * +read_one_case (const char *filepath) +{ + int num_results; + int i; + char *tmp; + FILE *f; + struct test_data *data; + + f = fopen (filepath, "r"); + + data = malloc (sizeof (struct test_data)); + data->next = NULL; + get_clean_line (f, &(data->test_case_name)); + get_clean_line (f, &(data->database_name)); + get_clean_line (f, &(data->sql_statement)); + get_clean_line (f, &(tmp)); + data->expected_rows = atoi (tmp); + free (tmp); + get_clean_line (f, &(tmp)); + data->expected_columns = atoi (tmp); + free (tmp); + num_results = (data->expected_rows + 1) * data->expected_columns; + data->expected_results = malloc (num_results * sizeof (char *)); + data->expected_precision = malloc (num_results * sizeof (int)); + for (i = 0; i < num_results; ++i) + { + get_clean_line (f, &(data->expected_results[i])); + handle_precision (data->expected_results[i], + &(data->expected_precision[i])); + } + fclose (f); + return data; +} + +void +cleanup_test_data (struct test_data *data) +{ + int i; + int num_results = (data->expected_rows + 1) * (data->expected_columns); + + for (i = 0; i < num_results; ++i) + { + free (data->expected_results[i]); + } + free (data->expected_results); + free (data->expected_precision); + free (data->test_case_name); + free (data->database_name); + free (data->sql_statement); + free (data); +} + +static void +add_test (struct test_list *list, struct test_data *data) +{ + if (list->first == NULL) + list->first = data; + if (list->last != NULL) + list->last->next = data; + list->last = data; +} + +static void +list_cleanup (struct test_list *list) +{ + struct test_data *p; + struct test_data *pn; + p = list->first; + while (p != NULL) + { + pn = p->next; + cleanup_test_data (p); + p = pn; + } + if (list->array != NULL) + free (list->array); +} + +static int +build_test_array (struct test_list *list) +{ + struct test_data *p; + struct test_data **pn; + list->count = 0; + if (list->array != NULL) + free (list->array); + list->array = NULL; + p = list->first; + while (p != NULL) + { + list->count++; + p = p->next; + } + if (list->count <= 0) + return 0; + list->array = malloc (sizeof (struct test_data *) * list->count); + pn = list->array; + p = list->first; + while (p != NULL) + { + *pn = p; + pn++; + p = p->next; + } + return 1; +} + +int +test_case_filter (const struct dirent *entry) +{ + return (fnmatch ("*.testcase", entry->d_name, FNM_PERIOD) == 0); +} + +static int +load_testcases (struct test_list *list) +{ + struct dirent **namelist; + int n; + int i; + const char *security_level; + const char *current_dir; + char *path; + +/* plain SQL testcases */ + current_dir = "sql_stmt_tests"; + path = sqlite3_mprintf ("%s", current_dir); + n = scandir (path, &namelist, test_case_filter, alphasort); + if (n < 0) + { + perror ("scandir"); + return 0; + } + sqlite3_free (path); + for (i = 0; i < n; ++i) + { + struct test_data *data; + char *path; + path = sqlite3_mprintf ("%s/%s", current_dir, namelist[i]->d_name); + data = read_one_case (path); + if (strcmp (data->database_name, ":memory:") == 0) + add_test (list, data); + else + cleanup_test_data (data); + sqlite3_free (path); + free (namelist[i]); + } + free (namelist); + +/* security related testcases */ + security_level = getenv ("SPATIALITE_SECURITY"); + if (security_level == NULL) + ; + else if (strcasecmp (security_level, "relaxed") == 0) + { + current_dir = "sql_stmt_security_tests"; + path = sqlite3_mprintf ("%s", current_dir); + n = scandir (path, &namelist, test_case_filter, alphasort); + if (n < 0) + { + perror ("scandir"); + return 0; + } + sqlite3_free (path); + for (i = 0; i < n; ++i) + { + struct test_data *data; + char *path; + path = sqlite3_mprintf ("%s/%s", current_dir, + namelist[i]->d_name); + data = read_one_case (path); + if (strcmp (data->database_name, ":memory:") == 0) + add_test (list, data); + else + cleanup_test_data (data); + sqlite3_free (path); + free (namelist[i]); + } + free (namelist); + } + +#ifndef OMIT_MATHSQL /* only if MATHSQL is supported */ +/* Math SQL testcases */ + current_dir = "sql_stmt_mathsql_tests"; + path = sqlite3_mprintf ("%s", current_dir); + n = scandir (path, &namelist, test_case_filter, alphasort); + if (n < 0) + { + perror ("scandir"); + return 0; + } + sqlite3_free (path); + for (i = 0; i < n; ++i) + { + struct test_data *data; + char *path; + path = sqlite3_mprintf ("%s/%s", current_dir, namelist[i]->d_name); + data = read_one_case (path); + if (strcmp (data->database_name, ":memory:") == 0) + add_test (list, data); + else + cleanup_test_data (data); + sqlite3_free (path); + free (namelist[i]); + } + free (namelist); +#endif /* end MATHSQL conditional */ + +#ifndef OMIT_PROJ /* only if PROJ is supported */ +/* PROJ.4 SQL testcases */ + current_dir = "sql_stmt_proj_tests"; + path = sqlite3_mprintf ("%s", current_dir); + n = scandir (path, &namelist, test_case_filter, alphasort); + if (n < 0) + { + perror ("scandir"); + return 0; + } + sqlite3_free (path); + for (i = 0; i < n; ++i) + { + struct test_data *data; + char *path; + path = sqlite3_mprintf ("%s/%s", current_dir, namelist[i]->d_name); + data = read_one_case (path); + if (strcmp (data->database_name, ":memory:") == 0) + add_test (list, data); + else + cleanup_test_data (data); + sqlite3_free (path); + free (namelist[i]); + } + free (namelist); +#endif /* end PROJ conditional */ + +#ifndef OMIT_GEOS /* only if GEOS is supported */ +/* GEOS SQL testcases */ + current_dir = "sql_stmt_geos_tests"; + path = sqlite3_mprintf ("%s", current_dir); + n = scandir (path, &namelist, test_case_filter, alphasort); + if (n < 0) + { + perror ("scandir"); + return 0; + } + sqlite3_free (path); + for (i = 0; i < n; ++i) + { + struct test_data *data; + char *path; + path = sqlite3_mprintf ("%s/%s", current_dir, namelist[i]->d_name); + data = read_one_case (path); + if (strcmp (data->database_name, ":memory:") == 0) + add_test (list, data); + else + cleanup_test_data (data); + sqlite3_free (path); + free (namelist[i]); + } + free (namelist); +#endif /* end GEOS conditional */ + +#ifdef GEOS_ADVANCED /* only if GEOS_ADVANCED is supported - 3.4.0 */ +/* GEOS ADVANCED SQL testcases */ + current_dir = "sql_stmt_geosadvanced_tests"; + path = sqlite3_mprintf ("%s", current_dir); + n = scandir (path, &namelist, test_case_filter, alphasort); + if (n < 0) + { + perror ("scandir"); + return 0; + } + sqlite3_free (path); + for (i = 0; i < n; ++i) + { + struct test_data *data; + char *path; + path = sqlite3_mprintf ("%s/%s", current_dir, namelist[i]->d_name); + data = read_one_case (path); + if (strcmp (data->database_name, ":memory:") == 0) + add_test (list, data); + else + cleanup_test_data (data); + sqlite3_free (path); + free (namelist[i]); + } + free (namelist); +#endif /* end GEOS_ADVANCED conditional */ + +#ifdef ENABLE_LWGEOM /* only if LWGEOM is supported */ +/* LWGEOM SQL testcases */ + current_dir = "sql_stmt_lwgeom_tests"; + path = sqlite3_mprintf ("%s", current_dir); + n = scandir (path, &namelist, test_case_filter, alphasort); + if (n < 0) + { + perror ("scandir"); + return 0; + } + sqlite3_free (path); + for (i = 0; i < n; ++i) + { + struct test_data *data; + char *path; + path = sqlite3_mprintf ("%s/%s", current_dir, namelist[i]->d_name); + data = read_one_case (path); + if (strcmp (data->database_name, ":memory:") == 0) + add_test (list, data); + else + cleanup_test_data (data); + sqlite3_free (path); + free (namelist[i]); + } + free (namelist); +#endif /* end LWGEOM conditional */ + +#ifdef ENABLE_LIBXML2 /* only if LIBXML2 is supported */ +/* LIBXML2 SQL testcases */ + current_dir = "sql_stmt_libxml2_tests"; + path = sqlite3_mprintf ("%s", current_dir); + n = scandir (path, &namelist, test_case_filter, alphasort); + if (n < 0) + { + perror ("scandir"); + return 0; + } + sqlite3_free (path); + for (i = 0; i < n; ++i) + { + struct test_data *data; + char *path; + path = sqlite3_mprintf ("%s/%s", current_dir, namelist[i]->d_name); + data = read_one_case (path); + if (strcmp (data->database_name, ":memory:") == 0) + add_test (list, data); + else + cleanup_test_data (data); + sqlite3_free (path); + free (namelist[i]); + } + free (namelist); +/* security related testcases */ + security_level = getenv ("SPATIALITE_SECURITY"); + if (security_level == NULL) + ; + else if (strcasecmp (security_level, "relaxed") == 0) + { + current_dir = "sql_stmt_xmlsec_tests"; + path = sqlite3_mprintf ("%s", current_dir); + n = scandir (path, &namelist, test_case_filter, alphasort); + if (n < 0) + { + perror ("scandir"); + return 0; + } + sqlite3_free (path); + for (i = 0; i < n; ++i) + { + struct test_data *data; + char *path; + path = sqlite3_mprintf ("%s/%s", current_dir, + namelist[i]->d_name); + data = read_one_case (path); + if (strcmp (data->database_name, ":memory:") == 0 + || strcmp (data->database_name, "NEW:memory:") == 0) + add_test (list, data); + else + cleanup_test_data (data); + sqlite3_free (path); + free (namelist[i]); + } + free (namelist); + } +#endif /* end LIBXML2 conditional */ + + return 1; +} + +int +do_one_case (const struct test_data *data, struct db_conn *conn, int thread_id) +{ + int ret; + char *err_msg = NULL; + int i; + char **results; + int rows; + int columns; + + if (strcmp (data->database_name, "NEW:memory:") == 0) + close_connection (conn, 0); + if (conn->db_handle == NULL) + open_connection (conn); + if (conn->db_handle == NULL) + return -9; + + ret = + sqlite3_get_table (conn->db_handle, data->sql_statement, &results, + &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + printf ("\nFAILED TEST: Thread #%d %s\n", thread_id, + data->test_case_name); + printf ("Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -10; + } + if ((rows != data->expected_rows) || (columns != data->expected_columns)) + { + printf ("\nFAILED TEST: Thread #%d %s\n", thread_id, + data->test_case_name); + printf ("Unexpected error: bad result: %i/%i.\n", rows, columns); + return -11; + } + for (i = 0; i < (data->expected_rows + 1) * data->expected_columns; ++i) + { + if (results[i] != NULL && data->expected_precision[i] == 0) + { + data->expected_precision[i] = strlen (results[i]); + } + if (results[i] == NULL) + { + if (strcmp ("(NULL)", data->expected_results[i]) == 0) + { + /* we expected this */ + continue; + } + else + { + printf ("\nFAILED TEST: Thread #%d %s\n", thread_id, + data->test_case_name); + printf ("Null value at %i.\n", i); + printf ("Expected value was: %s\n", + data->expected_results[i]); + return -12; + } + } + else if (strlen (results[i]) == 0) + { + printf ("\nFAILED TEST: Thread #%d %s\n", thread_id, + data->test_case_name); + printf ("zero length result at %i\n", i); + printf ("Expected value was : %s|\n", + data->expected_results[i]); + return -13; + } + else if (strncmp + (results[i], data->expected_results[i], + data->expected_precision[i]) != 0) + { + printf ("\nFAILED TEST: Thread #%d %s\n", thread_id, + data->test_case_name); + printf ("Unexpected value at %i: %s|\n", i, results[i]); + printf ("Expected value was : %s|\n", + data->expected_results[i]); + return -14; + } + } + sqlite3_free_table (results); + return 0; +} + +static void +do_tests (struct thread_params *param) +{ + int i; + int j; + struct test_list *list = param->list; + struct db_conn *conn = param->conn; + + for (i = list->count - 1; i >= 0; i--) + { + /* tests in backward order */ + struct test_data *px = *(list->array + i); + for (j = 0; j < 32; j++) + { + int ret = do_one_case (px, conn, param->id); + if (ret < 0) + param->errors += 1; + param->count++; + } + } + for (i = 0; i < list->count; i++) + { + /* tests in forward order */ + struct test_data *px = *(list->array + i); + for (j = 0; j < 32; j++) + { + int ret = do_one_case (px, conn, param->id); + if (ret < 0) + param->errors += 1; + param->count++; + } + } + for (i = 0; i < 131072; i++) + { + /* tests in random order */ + struct test_data *px; + int ret; + int x; +#ifdef _WIN32 + x = rand () % list->count; +#else + x = random () % list->count; +#endif + px = *(list->array + x); + ret = do_one_case (px, conn, param->id); + if (ret < 0) + param->errors += 1; + param->count++; + } +} + +#ifdef _WIN32 +DWORD WINAPI +exec_thread (void *arg) +#else +void * +exec_thread (void *arg) +#endif +{ +/* thread implementation */ + struct thread_params *param = (struct thread_params *) arg; + do_tests (param); +/* thread termination */ + if (param->errors) + printf ("\nThread %d reports %d error%c\n", param->id, param->errors, + (param->errors > 1) ? 's' : ' '); + param->done = 1; +#ifdef _WIN32 + return 0; +#else + pthread_exit (NULL); +#endif +} + +static void +run_thread (int i) +{ + struct thread_params *param = &(mt_params[i]); +#ifdef _WIN32 + HANDLE thread_handle; + DWORD dw_thread_id; + thread_handle = + CreateThread (NULL, 0, exec_thread, param, 0, &dw_thread_id); + SetThreadPriority (thread_handle, THREAD_PRIORITY_IDLE); +#else + int ok_prior = 0; + int policy; + int min_prio; + struct sched_param sp; + pthread_attr_init (&(param->attr)); + param->started = 1; + if (pthread_attr_setschedpolicy (&(param->attr), SCHED_RR) == 0) + { + /* attempting to set the lowest priority */ + if (pthread_attr_getschedpolicy (&(param->attr), &policy) == 0) + { + min_prio = sched_get_priority_min (policy); + sp.sched_priority = min_prio; + if (pthread_attr_setschedparam (&(param->attr), &sp) == 0) + { + /* ok, setting the lowest priority */ + ok_prior = 1; + pthread_create (&(param->thread_id), &(param->attr), + exec_thread, param); + } + } + } + if (!ok_prior) + { + /* failure: using standard priority */ + pthread_create (&(param->thread_id), NULL, exec_thread, param); + } +#endif +} + +int +main (int argc, char *argv[]) +{ + int i; + int failures = 0; + int total_sql = 0; + int num_threads = 4; + int mt_enabled = 0; + struct test_list list; + const char *env_var; + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + env_var = getenv ("SPATIALITE_MULTITHREAD_TEST"); + if (env_var == NULL) + ; + else if (strcasecmp (env_var, "yes") == 0) + mt_enabled = 1; + if (!mt_enabled) + { + printf + ("check_multithread: SPATIALITE_MULTITHREAD_TEST non enabled .... skipping ...\n"); + return 0; + } + env_var = getenv ("SPATIALITE_NUM_THREADS"); + if (env_var == NULL) + ; + else + { + num_threads = atoi (env_var); + if (num_threads < 1) + num_threads = 1; + if (num_threads > 64) + num_threads = 64; + } + printf ("Testing %d concurrent threads\n", num_threads); + +/* seeding the pseudo-random generator */ +#ifdef _WIN32 + srand (getpid ()); +#else + srandom (getpid ()); +#endif + + list.first = NULL; + list.last = NULL; + list.count = 0; + list.array = NULL; + if (!load_testcases (&list)) + { + fprintf (stderr, "Unable to load testcases !!!\n"); + return -1; + } + if (!build_test_array (&list)) + { + fprintf (stderr, "No valid testcases found !!!\n"); + return -1; + } + + spatialite_initialize (); + + for (i = 0; i < num_threads; i++) + init_thread_params (i, &list); + + for (i = 0; i < num_threads; i++) + run_thread (i); + + while (1) + { + int cnt; +#ifdef _WIN32 + Sleep (5 * 1000); +#else + sleep (5); +#endif + cnt = 0; + for (i = 0; i < num_threads; i++) + { + struct thread_params *p = &(mt_params[i]); + if (p->done != 1) + cnt++; + } + if (cnt == 0) + break; + } + + + for (i = 0; i < num_threads; i++) + free_thread_params (i, &total_sql, &failures); + printf + ("\n\nALL MULTITHREAD TEST PASSED\n\t[%d SQL tests: %d failures]\n\n", + total_sql, failures); + + list_cleanup (&list); + + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_recover_geom.c b/src/spatialite/test/check_recover_geom.c new file mode 100644 index 0000000..ea767ad --- /dev/null +++ b/src/spatialite/test/check_recover_geom.c @@ -0,0 +1,1701 @@ +/* + + check_recover_geom.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "sqlite3.h" +#include "spatialite.h" + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + const char *sql; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } +/* creating a Point XY table */ + sql = "CREATE TABLE pt_xy (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -3; + } + +/* creating a Point XYZ table */ + sql = "CREATE TABLE pt_xyz (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -4; + } + +/* creating a Point XYM table */ + sql = "CREATE TABLE pt_xym (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -5; + } + +/* creating a Point XYZM table */ + sql = "CREATE TABLE pt_xyzm (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -6; + } + +/* creating a Linestring XY table */ + sql = "CREATE TABLE ln_xy (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -7; + } + +/* creating a Linestring XYZ table */ + sql = "CREATE TABLE ln_xyz (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -8; + } + +/* creating a Linestring XYM table */ + sql = "CREATE TABLE ln_xym (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -9; + } + +/* creating a Linestring XYZM table */ + sql = "CREATE TABLE ln_xyzm (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -10; + } + +/* creating a Polygon XY table */ + sql = "CREATE TABLE pg_xy (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -11; + } + +/* creating a Polygon XYZ table */ + sql = "CREATE TABLE pg_xyz (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -12; + } + +/* creating a Polygon XYM table */ + sql = "CREATE TABLE pg_xym (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -13; + } + +/* creating a Polygon XYZM table */ + sql = "CREATE TABLE pg_xyzm (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -14; + } + +/* creating a MultiPoint XY table */ + sql = "CREATE TABLE mpt_xy (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -15; + } + +/* creating a MultiPoint XYZ table */ + sql = "CREATE TABLE mpt_XYZ (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -16; + } + +/* creating a MultiPoint XYM table */ + sql = "CREATE TABLE mpt_xym (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -17; + } + +/* creating a MultiPoint XYZM table */ + sql = "CREATE TABLE mpt_xyzm (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -18; + } + +/* creating a MultiLinestring XY table */ + sql = "CREATE TABLE mln_xy (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -19; + } + +/* creating a MultiLinestring XYZ table */ + sql = "CREATE TABLE mln_xyz (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -20; + } + +/* creating a MultiLinestring XYM table */ + sql = "CREATE TABLE mln_xym (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -21; + } + +/* creating a MultiLinestring XYZM table */ + sql = "CREATE TABLE mln_xyzm (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -22; + } + +/* creating a MultiPolygon XY table */ + sql = "CREATE TABLE mpg_xy (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -23; + } + +/* creating a MultiPolygon XYZ table */ + sql = "CREATE TABLE mpg_xyz (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -24; + } + +/* creating a MultiPolygon XYM table */ + sql = "CREATE TABLE mpg_xym (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -25; + } + +/* creating a MultiPolygon XYZM table */ + sql = "CREATE TABLE mpg_xyzm (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -26; + } + +/* creating a GeometryCollection XY table */ + sql = "CREATE TABLE gcoll_xy (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -27; + } + +/* creating a GeometryCollection XYZ table */ + sql = "CREATE TABLE gcoll_xyz (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -28; + } + +/* creating a GeometryCollection XYM table */ + sql = "CREATE TABLE gcoll_xym (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -29; + } + +/* creating a GeometryCollection XYZM table */ + sql = "CREATE TABLE gcoll_xyzm (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -30; + } + + +/* creating a Geometry XY table */ + sql = "CREATE TABLE geom_xy (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -31; + } + +/* creating a Geometry XYZ table */ + sql = "CREATE TABLE geom_xyz (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -32; + } + +/* creating a Geometry XYM table */ + sql = "CREATE TABLE geom_xym (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -33; + } + +/* creating a Geometry XYZM table */ + sql = "CREATE TABLE geom_xyzm (id INTEGER, g BLOB)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -34; + } + +/* Inserting into pt_xy */ + sql = + "INSERT INTO pt_xy (id, g) VALUES (1, GeomFromText('POINT(1 2)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -35; + } + +/* Inserting into pt_xyz */ + sql = + "INSERT INTO pt_xyz (id, g) VALUES (1, GeomFromText('POINTZ(1 2 3)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -36; + } + +/* Inserting into pt_xym */ + sql = + "INSERT INTO pt_xym (id, g) VALUES (1, GeomFromText('POINTM(1 2 10)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -37; + } + +/* Inserting into pt_xyzm */ + sql = + "INSERT INTO pt_xyzm (id, g) VALUES (1, GeomFromText('POINTZM(1 2 3 10)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -38; + } + +/* Inserting into ln_xy */ + sql = + "INSERT INTO ln_xy (id, g) VALUES (1, GeomFromText('LINESTRING(1 2, 4 5)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -39; + } + +/* Inserting into ln_xyz */ + sql = + "INSERT INTO ln_xyz (id, g) VALUES (1, GeomFromText('LINESTRINGZ(1 2 3, 4 5 6)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -40; + } + +/* Inserting into ln_xym */ + sql = + "INSERT INTO ln_xym (id, g) VALUES (1, GeomFromText('LINESTRINGM(1 2 10, 4 5 11)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -41; + } + +/* Inserting into ln_xyzm */ + sql = + "INSERT INTO ln_xyzm (id, g) VALUES (2, GeomFromText('LINESTRINGZM(1 2 3 10, 4 5 6 11)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -42; + } + +/* Inserting into pg_xy */ + sql = + "INSERT INTO pg_xy (id, g) VALUES (1, GeomFromText('POLYGON((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 1 12, 11 12, 11 11))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -43; + } + +/* Inserting into pg_xyz */ + sql = + "INSERT INTO pg_xyz (id, g) VALUES (1, GeomFromText('POLYGONZ((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 1 12 102, 11 12 103, 11 11 100))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -44; + } + +/* Inserting into pg_xym */ + sql = + "INSERT INTO pg_xym (id, g) VALUES (1, GeomFromText('POLYGONM((10 10 10, 15 10 11, 15 15 12, 10 15 13, 10 10 10), (11 11 10, 12 11 11, 1 12 12, 11 12 13, 11 11 10))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -45; + } + +/* Inserting into pg_xyzm */ + sql = + "INSERT INTO pg_xyzm (id, g) VALUES (1, GeomFromText('POLYGONZM((10 10 100 10, 15 10 101 11, 15 15 102 12, 10 15 103 13, 10 10 100 10), (11 11 100 10, 12 11 101 11, 1 12 102 12, 11 12 103 13, 11 11 100 10))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -46; + } + +/* Inserting into mpt_xy */ + sql = + "INSERT INTO mpt_xy (id, g) VALUES (1, GeomFromText('MULTIPOINT(1 2, 4 5)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -47; + } + +/* Inserting into mpt_xyz */ + sql = + "INSERT INTO mpt_xyz (id, g) VALUES (1, GeomFromText('MULTIPOINTZ(1 2 3, 4 5 6)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -48; + } + +/* Inserting into mpt_xym */ + sql = + "INSERT INTO mpt_xym (id, g) VALUES (1, GeomFromText('MULTIPOINTM(1 2 10, 4 5 11)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -49; + } + +/* Inserting into mpt_xyzm */ + sql = + "INSERT INTO mpt_xyzm (id, g) VALUES (1, GeomFromText('MULTIPOINTZM(1 2 3 10, 4 5 6 10)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -50; + } + +/* Inserting into mln_xy */ + sql = + "INSERT INTO mln_xy (id, g) VALUES (1, GeomFromText('MULTILINESTRING((1 2, 4 5), (7 8, 10 11))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -51; + } + +/* Inserting into mln_xyz */ + sql = + "INSERT INTO mln_xyz (id, g) VALUES (1, GeomFromText('MULTILINESTRINGZ((1 2 3, 4 5 6), (7 8 9, 10 11 12))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -52; + } + +/* Inserting into mln_xym */ + sql = + "INSERT INTO mln_xym (id, g) VALUES (1, GeomFromText('MULTILINESTRINGM((1 2 10, 4 5 11), (7 8 12, 10 11 13))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -53; + } + +/* Inserting into mln_xyzm */ + sql = + "INSERT INTO mln_xyzm (id, g) VALUES (1, GeomFromText('MULTILINESTRINGZM((1 2 3 10, 4 5 6 11), (7 8 9 12, 10 11 12 13))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -54; + } + +/* Inserting into mpg_xy */ + sql = + "INSERT INTO mpg_xy (id, g) VALUES (1, GeomFromText('MULTIPOLYGON(((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 1 12, 11 12, 11 11)), ((0 0, 1 0, 1 1, 0 1, 0 0)))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -55; + } + +/* Inserting into mpg_xyz */ + sql = + "INSERT INTO mpg_xyz (id, g) VALUES (1, GeomFromText('MULTIPOLYGONZ(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 1 12 102, 11 12 103, 11 11 100)), ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -56; + } + +/* Inserting into mpg_xym */ + sql = + "INSERT INTO mpg_xym (id, g) VALUES (1, GeomFromText('MULTIPOLYGONM(((10 10 11, 15 10 12, 15 15 13, 10 15 14, 10 10 11), (11 11 5, 12 11 6, 12 12 7, 11 12 8, 11 11 5)), ((0 0 11, 1 0 12, 1 1 13, 0 1 14, 0 0 11)))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -57; + } + +/* Inserting into mpg_xyzm */ + sql = + "INSERT INTO mpg_xyzm (id, g) VALUES (1, GeomFromText('MULTIPOLYGONZM(((10 10 100 11, 15 10 101 12, 15 15 102 13, 10 15 103 14, 10 10 100 11), (11 11 100 5, 12 11 101 6, 1 12 102 7, 11 12 103 8, 11 11 100 5)), ((0 0 1 11, 1 0 2 12, 1 1 3 13, 0 1 4 14, 0 0 1 11)))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -58; + } + +/* Inserting into gcoll_xy */ + sql = + "INSERT INTO gcoll_xy (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(5 5, 6 6), POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -59; + } + +/* Inserting into gcoll_xyz */ + sql = + "INSERT INTO gcoll_xyz (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(10 10 100), LINESTRINGZ(5 5 10, 6 6 11), POLYGONZ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -60; + } + +/* Inserting into gcoll_xym */ + sql = + "INSERT INTO gcoll_xym (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONM(POINTM(10 10 100), LINESTRINGM(5 5 10, 6 6 11), POLYGONM((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -61; + } + +/* Inserting into gcoll_xyzm */ + sql = + "INSERT INTO gcoll_xyzm (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(10 10 100 11), LINESTRINGZM(5 5 10 11, 6 6 11 12), POLYGONZM((0 0 1 10, 1 0 2 11, 1 1 3 12, 0 1 4 13, 0 0 1 10)))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -62; + } + +/* Inserting into geom_xy */ + sql = + "INSERT INTO geom_xy (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTION(POINT(10 10), LINESTRING(5 5, 6 6), POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -63; + } + sql = + "INSERT INTO geom_xy (id, g) VALUES (2, GeomFromText('POINT(10 10)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -64; + } + +/* Inserting into geom_xyz */ + sql = + "INSERT INTO geom_xyz (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(10 10 100), LINESTRINGZ(5 5 10, 6 6 11), POLYGONZ((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -65; + } + sql = + "INSERT INTO geom_xyz (id, g) VALUES (2, GeomFromText('POINTZ(10 10 100)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -66; + } + +/* Inserting into geom_xym */ + sql = + "INSERT INTO geom_xym (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONM(POINTM(10 10 100), LINESTRINGM(5 5 10, 6 6 11), POLYGONM((0 0 1, 1 0 2, 1 1 3, 0 1 4, 0 0 1)))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -67; + } + sql = + "INSERT INTO geom_xym (id, g) VALUES (2, GeomFromText('POINTM(10 10 100)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -68; + } + +/* Inserting into geom_xyzm */ + sql = + "INSERT INTO geom_xyzm (id, g) VALUES (1, GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(10 10 100 11), LINESTRINGZM(5 5 10 11, 6 6 11 12), POLYGONZM((0 0 1 10, 1 0 2 11, 1 1 3 12, 0 1 4 13, 0 0 1 10)))', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -69; + } + sql = + "INSERT INTO geom_xyzm (id, g) VALUES (2, GeomFromText('POINTZM(10 10 100 11)', 4326))"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -70; + } + +/* recovering pt_xy */ + sql = "SELECT RecoverGeometryColumn('pt_xy', 'g', 4326, 'POINT', 2);"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -71; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -72; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -73; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -74; + } + sqlite3_free_table (results); + +/* recovering pt_xyz */ + sql = "SELECT RecoverGeometryColumn('pt_xyz', 'g', 4326, 'POINT', 3);"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -75; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -76; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -77; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -78; + } + sqlite3_free_table (results); + +/* recovering pt_xym */ + sql = "SELECT RecoverGeometryColumn('pt_xym', 'g', 4326, 'POINT', 'XYM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -79; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -80; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -81; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -82; + } + sqlite3_free_table (results); + +/* recovering pt_xyzm */ + sql = + "SELECT RecoverGeometryColumn('pt_xyzm', 'g', 4326, 'POINT', 'XYZM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -83; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -84; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -85; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -86; + } + sqlite3_free_table (results); + +/* recovering ln_xy */ + sql = + "SELECT RecoverGeometryColumn('ln_xy', 'g', 4326, 'LINESTRING', 'XY');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -87; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -88; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -89; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -90; + } + sqlite3_free_table (results); + +/* recovering ln_xyz */ + sql = + "SELECT RecoverGeometryColumn('ln_xyz', 'g', 4326, 'LINESTRING', 'XYZ');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -91; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -92; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -93; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -94; + } + sqlite3_free_table (results); + +/* recovering ln_xym */ + sql = + "SELECT RecoverGeometryColumn('ln_xym', 'g', 4326, 'LINESTRING', 'XYM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -95; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -96; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -97; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -98; + } + sqlite3_free_table (results); + +/* recovering ln_xyzm */ + sql = + "SELECT RecoverGeometryColumn('ln_xyzm', 'g', 4326, 'LINESTRING', 'XYZM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -99; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -100; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -101; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -102; + } + sqlite3_free_table (results); + +/* recovering pg_xy */ + sql = "SELECT RecoverGeometryColumn('pg_xy', 'g', 4326, 'POLYGON', 'XY');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -103; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -104; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -105; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -106; + } + sqlite3_free_table (results); + +/* recovering pg_xyz */ + sql = + "SELECT RecoverGeometryColumn('pg_xyz', 'g', 4326, 'POLYGON', 'XYZ');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -107; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -108; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -109; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -110; + } + sqlite3_free_table (results); + +/* recovering pg_xym */ + sql = + "SELECT RecoverGeometryColumn('pg_xym', 'g', 4326, 'POLYGON', 'XYM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -111; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -112; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -113; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -114; + } + sqlite3_free_table (results); + +/* recovering pg_xyzm */ + sql = + "SELECT RecoverGeometryColumn('pg_xyzm', 'g', 4326, 'POLYGON', 'XYZM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -115; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -116; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -117; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -118; + } + sqlite3_free_table (results); + +/* recovering mpt_xy */ + sql = + "SELECT RecoverGeometryColumn('mpt_xy', 'g', 4326, 'MULTIPOINT', 'XY');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -119; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -120; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -121; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -122; + } + sqlite3_free_table (results); + +/* recovering mpt_xyz */ + sql = + "SELECT RecoverGeometryColumn('mpt_xyz', 'g', 4326, 'MULTIPOINT', 'XYZ');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -123; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -124; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -125; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -126; + } + sqlite3_free_table (results); + +/* recovering mpt_xym */ + sql = + "SELECT RecoverGeometryColumn('mpt_xym', 'g', 4326, 'MULTIPOINT', 'XYM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -127; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -128; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -129; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -130; + } + sqlite3_free_table (results); + +/* recovering mpt_xyzm */ + sql = + "SELECT RecoverGeometryColumn('mpt_xyzm', 'g', 4326, 'MULTIPOINT', 'XYZM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -131; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -132; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -133; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -134; + } + sqlite3_free_table (results); + +/* recovering mln_xy */ + sql = + "SELECT RecoverGeometryColumn('mln_xy', 'g', 4326, 'MULTILINESTRING', 'XY');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -135; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -136; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -137; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -138; + } + sqlite3_free_table (results); + +/* recovering mln_xyz */ + sql = + "SELECT RecoverGeometryColumn('mln_xyz', 'g', 4326, 'MULTILINESTRING', 'XYZ');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -139; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -140; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -141; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -142; + } + sqlite3_free_table (results); + +/* recovering mln_xym */ + sql = + "SELECT RecoverGeometryColumn('mln_xym', 'g', 4326, 'MULTILINESTRING', 'XYM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -143; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -144; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -145; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -146; + } + sqlite3_free_table (results); + +/* recovering mln_xyzm */ + sql = + "SELECT RecoverGeometryColumn('mln_xyzm', 'g', 4326, 'MULTILINESTRING', 'XYZM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -147; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -148; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -149; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -150; + } + sqlite3_free_table (results); + +/* recovering mpg_xy */ + sql = + "SELECT RecoverGeometryColumn('mpg_xy', 'g', 4326, 'MULTIPOLYGON', 'XY');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -151; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -152; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -153; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -154; + } + sqlite3_free_table (results); + +/* recovering mpg_xyz */ + sql = + "SELECT RecoverGeometryColumn('mpg_xyz', 'g', 4326, 'MULTIPOLYGON', 'XYZ');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -155; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -156; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -157; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -158; + } + sqlite3_free_table (results); + +/* recovering mpg_xym */ + sql = + "SELECT RecoverGeometryColumn('mpg_xym', 'g', 4326, 'MULTIPOLYGON', 'XYM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -159; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -160; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -161; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -162; + } + sqlite3_free_table (results); + +/* recovering mpg_xyzm */ + sql = + "SELECT RecoverGeometryColumn('mpg_xyzm', 'g', 4326, 'MULTIPOLYGON', 'XYZM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -163; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -164; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -165; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -166; + } + sqlite3_free_table (results); + +/* recovering gcoll_xy */ + sql = + "SELECT RecoverGeometryColumn('gcoll_xy', 'g', 4326, 'GEOMETRYCOLLECTION', 'XY');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -167; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -168; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -169; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -170; + } + sqlite3_free_table (results); + +/* recovering gcoll_xyz */ + sql = + "SELECT RecoverGeometryColumn('gcoll_xyz', 'g', 4326, 'GEOMETRYCOLLECTION', 'XYZ');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -171; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -172; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -173; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -174; + } + sqlite3_free_table (results); + +/* recovering gcoll_xym */ + sql = + "SELECT RecoverGeometryColumn('gcoll_xym', 'g', 4326, 'GEOMETRYCOLLECTION', 'XYM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -175; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -176; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -177; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -178; + } + sqlite3_free_table (results); + +/* recovering gcoll_xyzm */ + sql = + "SELECT RecoverGeometryColumn('gcoll_xyzm', 'g', 4326, 'GEOMETRYCOLLECTION', 'XYZM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -179; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -180; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -181; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -182; + } + sqlite3_free_table (results); + +/* recovering geom_xy */ + sql = + "SELECT RecoverGeometryColumn('geom_xy', 'g', 4326, 'GEOMETRY', 'XY');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -183; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -184; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -185; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -186; + } + sqlite3_free_table (results); + +/* recovering geom_xyz */ + sql = + "SELECT RecoverGeometryColumn('geom_xyz', 'g', 4326, 'GEOMETRY', 'XYZ');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -187; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -188; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -189; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -190; + } + sqlite3_free_table (results); + +/* recovering geom_xym */ + sql = + "SELECT RecoverGeometryColumn('geom_xym', 'g', 4326, 'GEOMETRY', 'XYM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -191; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -192; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -193; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -194; + } + sqlite3_free_table (results); + +/* recovering geom_xyzm */ + sql = + "SELECT RecoverGeometryColumn('geom_xyzm', 'g', 4326, 'GEOMETRY', 'XYZM');"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -195; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -196; + } + if (results[1] == NULL) + { + fprintf (stderr, "Unexpected error: NULL result\n"); + return -197; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "Unexpected error: invalid result\n"); + return -198; + } + sqlite3_free_table (results); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -199; + } + + spatialite_cleanup_ex (cache); + + return 0; +} diff --git a/src/spatialite/test/check_relations_fncts.c b/src/spatialite/test/check_relations_fncts.c new file mode 100644 index 0000000..90f1fde --- /dev/null +++ b/src/spatialite/test/check_relations_fncts.c @@ -0,0 +1,2181 @@ +/* + + check_relations_fncts.c -- SpatiaLite Test Case + + This does "boundary conditions" and error checks for gg_relations + functions that are hard to test with SQL. + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" +#include "spatialite/gaiageo.h" + +static const double double_eps = 0.00000001; + +int +test_extra_mode () +{ +#ifndef OMIT_GEOS /* only if GEOS is supported */ + int ret; + sqlite3 *handle; + int result; + int returnValue = 0; + gaiaGeomCollPtr geom_pt1; + gaiaGeomCollPtr geom_pt2; + gaiaGeomCollPtr geom_ln1; + gaiaGeomCollPtr geom_ln2; + gaiaGeomCollPtr geom_pg; + gaiaGeomCollPtr g; + gaiaLinestringPtr ln; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + void *cache = spatialite_alloc_connection (); + + /* Tests start here */ + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -101; + } + + spatialite_init_ex (handle, cache, 0); + + /* preparing a Point */ + geom_pt1 = gaiaAllocGeomColl (); + gaiaAddPointToGeomColl (geom_pt1, 30.0, 30.0); + gaiaMbrGeometry (geom_pt1); + + /* preparing another Point */ + geom_pt2 = gaiaAllocGeomColl (); + gaiaAddPointToGeomColl (geom_pt2, 10.5, 1.5); + gaiaMbrGeometry (geom_pt2); + + /* preparing a Linestring */ + geom_ln1 = gaiaAllocGeomColl (); + ln = gaiaAddLinestringToGeomColl (geom_ln1, 3); + gaiaSetPoint (ln->Coords, 0, 5.0, 0.0); + gaiaSetPoint (ln->Coords, 1, 5.0, 20.0); + gaiaSetPoint (ln->Coords, 2, 0.0, 20.0); + gaiaMbrGeometry (geom_ln1); + + /* preparing another Linestring */ + geom_ln2 = gaiaAllocGeomColl (); + ln = gaiaAddLinestringToGeomColl (geom_ln2, 4); + gaiaSetPoint (ln->Coords, 0, 0.0, 20.0); + gaiaSetPoint (ln->Coords, 1, 5.0, 20.0); + gaiaSetPoint (ln->Coords, 2, 5.0, 0.0); + gaiaSetPoint (ln->Coords, 3, 0.0, 0.0); + gaiaMbrGeometry (geom_ln2); + + /* preparing a Polygon */ + geom_pg = gaiaAllocGeomColl (); + pg = gaiaAddPolygonToGeomColl (geom_pg, 5, 1); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, 1.5, 1.5); + gaiaSetPoint (rng->Coords, 1, 10.5, 1.5); + gaiaSetPoint (rng->Coords, 2, 10.5, 10.5); + gaiaSetPoint (rng->Coords, 3, 1.5, 10.5); + gaiaSetPoint (rng->Coords, 4, 1.5, 1.5); + rng = gaiaAddInteriorRing (pg, 0, 5); + gaiaSetPoint (rng->Coords, 0, 5.5, 5.5); + gaiaSetPoint (rng->Coords, 1, 6.5, 1.5); + gaiaSetPoint (rng->Coords, 2, 6.5, 6.5); + gaiaSetPoint (rng->Coords, 3, 5.5, 6.5); + gaiaSetPoint (rng->Coords, 4, 5.5, 5.5); + gaiaMbrGeometry (geom_pg); + + result = gaiaGeomCollDisjoint_r (cache, geom_pt1, geom_ln1); + if (result != 1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -102; + goto exit; + } + result = gaiaGeomCollDisjoint_r (cache, geom_pt2, geom_pg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -103; + goto exit; + } + result = gaiaGeomCollDisjoint_r (cache, geom_pg, geom_ln1); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -104; + goto exit; + } + + result = gaiaGeomCollOverlaps_r (cache, geom_pt2, geom_ln1); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -105; + goto exit; + } + result = gaiaGeomCollOverlaps_r (cache, geom_pt2, geom_pg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -106; + goto exit; + } + result = gaiaGeomCollOverlaps_r (cache, geom_pg, geom_ln1); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -107; + goto exit; + } + + result = gaiaGeomCollCrosses_r (cache, geom_pt2, geom_ln1); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -108; + goto exit; + } + result = gaiaGeomCollCrosses_r (cache, geom_pt2, geom_pg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -109; + goto exit; + } + result = gaiaGeomCollCrosses_r (cache, geom_pg, geom_ln1); + if (result != 1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -110; + goto exit; + } + + result = gaiaGeomCollTouches_r (cache, geom_pt2, geom_ln1); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -111; + goto exit; + } + result = gaiaGeomCollTouches_r (cache, geom_pt2, geom_pg); + if (result != 1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -112; + goto exit; + } + result = gaiaGeomCollTouches_r (cache, geom_pg, geom_ln1); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -113; + goto exit; + } + + result = gaiaGeomCollWithin_r (cache, geom_pt2, geom_ln1); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -114; + goto exit; + } + result = gaiaGeomCollWithin_r (cache, geom_pt2, geom_pg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -115; + goto exit; + } + result = gaiaGeomCollWithin_r (cache, geom_pg, geom_ln1); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -116; + goto exit; + } + + result = gaiaGeomCollContains_r (cache, geom_pt2, geom_ln1); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -117; + goto exit; + } + result = gaiaGeomCollContains_r (cache, geom_pg, geom_pt2); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -118; + goto exit; + } + result = gaiaGeomCollContains_r (cache, geom_pg, geom_ln1); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -119; + goto exit; + } + + result = gaiaGeomCollCovers_r (cache, geom_pt1, geom_ln1); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -120; + goto exit; + } + result = gaiaGeomCollCovers_r (cache, geom_pg, geom_pt2); + if (result != 1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -121; + goto exit; + } + result = gaiaGeomCollCovers_r (cache, geom_pg, geom_ln1); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -122; + goto exit; + } + + result = gaiaGeomCollCoveredBy_r (cache, geom_pt2, geom_ln1); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -120; + goto exit; + } + result = gaiaGeomCollCoveredBy_r (cache, geom_pt2, geom_pg); + if (result != 1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -121; + goto exit; + } + result = gaiaGeomCollCoveredBy_r (cache, geom_pg, geom_ln1); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -122; + goto exit; + } + + g = gaiaSharedPaths_r (cache, geom_ln1, geom_ln2); + if (g == NULL) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -123; + goto exit; + } + gaiaFreeGeomColl (g); + g = gaiaSharedPaths_r (cache, geom_ln1, geom_ln2); + if (g == NULL) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -124; + goto exit; + } + gaiaFreeGeomColl (g); + + /* Cleanup and exit */ + exit: + gaiaFreeGeomColl (geom_pt1); + gaiaFreeGeomColl (geom_pt2); + gaiaFreeGeomColl (geom_ln1); + gaiaFreeGeomColl (geom_ln2); + gaiaFreeGeomColl (geom_pg); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -133; + } + + spatialite_cleanup_ex (cache); + return returnValue; + +#endif /* end GEOS conditional */ + return 0; +} + +int +test_current_mode () +{ +#ifndef OMIT_GEOS /* only if GEOS is supported */ + int ret; + sqlite3 *handle; + int result; + double resultDouble; + int returnValue = 0; + gaiaGeomCollPtr geom; + gaiaGeomCollPtr g; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + void *cache = spatialite_alloc_connection (); + + /* Common setup */ + gaiaGeomCollPtr validGeometry = gaiaAllocGeomColl (); + double dummyResultArg = 0.0; + double dummyResultArg2 = 0.0; + + /* Tests start here */ + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + /* null inputs for a range of geometry functions */ + result = gaiaGeomCollEquals_r (cache, 0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -1; + goto exit; + } + + result = gaiaGeomCollEquals_r (cache, validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -2; + goto exit; + } + + result = gaiaGeomCollEquals_r (cache, 0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -3; + goto exit; + } + + result = gaiaGeomCollIntersects_r (cache, 0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -4; + goto exit; + } + + result = gaiaGeomCollIntersects_r (cache, validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -5; + goto exit; + } + + result = gaiaGeomCollIntersects_r (cache, 0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -6; + goto exit; + } + + result = gaiaGeomCollOverlaps_r (cache, 0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -7; + goto exit; + } + + result = gaiaGeomCollOverlaps_r (cache, validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -8; + goto exit; + } + + result = gaiaGeomCollOverlaps_r (cache, 0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -9; + goto exit; + } + + result = gaiaGeomCollCrosses_r (cache, 0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -10; + goto exit; + } + + result = gaiaGeomCollCrosses_r (cache, validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -11; + goto exit; + } + + result = gaiaGeomCollCrosses_r (cache, 0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -12; + goto exit; + } + + result = gaiaGeomCollTouches_r (cache, 0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -13; + goto exit; + } + + result = gaiaGeomCollTouches_r (cache, validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -14; + goto exit; + } + + result = gaiaGeomCollTouches_r (cache, 0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -15; + goto exit; + } + + result = gaiaGeomCollDisjoint_r (cache, 0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -16; + goto exit; + } + + result = gaiaGeomCollDisjoint_r (cache, validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -17; + goto exit; + } + + result = gaiaGeomCollDisjoint_r (cache, 0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -18; + goto exit; + } + + result = gaiaGeomCollWithin_r (cache, 0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -19; + goto exit; + } + + result = gaiaGeomCollWithin_r (cache, validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -20; + goto exit; + } + + result = gaiaGeomCollWithin_r (cache, 0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -21; + goto exit; + } + + result = gaiaGeomCollContains_r (cache, 0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -22; + goto exit; + } + + result = gaiaGeomCollContains_r (cache, validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -23; + goto exit; + } + + result = gaiaGeomCollContains_r (cache, 0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -24; + goto exit; + } + + result = gaiaGeomCollRelate_r (cache, 0, validGeometry, "T********"); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -25; + goto exit; + } + + result = gaiaGeomCollRelate_r (cache, validGeometry, 0, "T********"); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -26; + goto exit; + } + + result = gaiaGeomCollRelate_r (cache, 0, 0, "T********"); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -27; + goto exit; + } + + result = gaiaHausdorffDistance_r (cache, 0, validGeometry, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -34; + goto exit; + } + + result = gaiaHausdorffDistance_r (cache, validGeometry, 0, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -35; + goto exit; + } + + result = gaiaHausdorffDistance_r (cache, 0, 0, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -36; + goto exit; + } + + result = gaiaGeomCollCovers_r (cache, 0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -37; + goto exit; + } + + result = gaiaGeomCollCovers_r (cache, validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -38; + goto exit; + } + + result = gaiaGeomCollCovers_r (cache, 0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -39; + goto exit; + } + + result = gaiaGeomCollCoveredBy_r (cache, 0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -40; + goto exit; + } + + result = gaiaGeomCollCoveredBy_r (cache, validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -41; + goto exit; + } + + result = gaiaGeomCollCoveredBy_r (cache, 0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -42; + goto exit; + } + + result = gaiaGeomCollDistance_r (cache, 0, validGeometry, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -43; + goto exit; + } + + result = gaiaGeomCollDistance_r (cache, validGeometry, 0, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -44; + goto exit; + } + + result = gaiaGeomCollDistance_r (cache, 0, 0, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -45; + goto exit; + } + /* Check some of the single geometry analysis routines */ + + result = gaiaGeomCollLength_r (cache, 0, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -46; + goto exit; + } + + result = gaiaGeomCollArea_r (cache, 0, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -47; + goto exit; + } + + result = + gaiaGeomCollCentroid_r (cache, 0, &dummyResultArg, &dummyResultArg2); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -48; + goto exit; + } + + result = + gaiaGetPointOnSurface_r (cache, 0, &dummyResultArg, &dummyResultArg2); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -49; + goto exit; + } + + result = gaiaIsSimple_r (cache, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -32; + goto exit; + } + + result = gaiaIsValid_r (cache, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -33; + goto exit; + } + + resultDouble = gaiaLineLocatePoint_r (cache, 0, validGeometry); + if (abs (resultDouble - -1.0) > double_eps) + { + fprintf (stderr, "bad result at %s:%i: %f\n", __FILE__, __LINE__, + resultDouble); + returnValue = -62; + goto exit; + } + + resultDouble = gaiaLineLocatePoint_r (cache, validGeometry, 0); + if (abs (resultDouble - -1.0) > double_eps) + { + fprintf (stderr, "bad result at %s:%i: %f\n", __FILE__, __LINE__, + resultDouble); + returnValue = -63; + goto exit; + } + + resultDouble = gaiaLineLocatePoint_r (cache, 0, 0); + if (abs (resultDouble - -1.0) > double_eps) + { + fprintf (stderr, "bad result at %s:%i: %f\n", __FILE__, __LINE__, + resultDouble); + returnValue = -64; + goto exit; + } + + /* geometry generating functionality */ + geom = NULL; + geom = gaiaLinesCutAtNodes (0, validGeometry); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -50; + goto exit; + } + + geom = gaiaLinesCutAtNodes (validGeometry, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -51; + goto exit; + } + + geom = gaiaLinesCutAtNodes (0, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -52; + goto exit; + } + + geom = gaiaUnaryUnion_r (cache, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -53; + goto exit; + } + + geom = gaiaLineMerge (0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -54; + goto exit; + } + + geom = gaiaSnap_r (cache, 0, validGeometry, 4); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -55; + goto exit; + } + + geom = gaiaSnap_r (cache, validGeometry, 0, 4); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -56; + goto exit; + } + + geom = gaiaSnap_r (cache, 0, 0, 4); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -57; + goto exit; + } + + geom = gaiaShortestLine_r (cache, 0, validGeometry); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -58; + goto exit; + } + + geom = gaiaShortestLine_r (cache, validGeometry, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -59; + goto exit; + } + + geom = gaiaShortestLine_r (cache, 0, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -60; + goto exit; + } + + geom = gaiaLineSubstring_r (cache, 0, 0, 1); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -61; + goto exit; + } + + geom = gaiaGeometryIntersection_r (cache, 0, validGeometry); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -65; + goto exit; + } + + geom = gaiaGeometryIntersection_r (cache, validGeometry, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -66; + goto exit; + } + + geom = gaiaGeometryIntersection_r (cache, 0, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -67; + goto exit; + } + + geom = gaiaGeometryUnion_r (cache, 0, validGeometry); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -68; + goto exit; + } + + geom = gaiaGeometryUnion_r (cache, validGeometry, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -69; + goto exit; + } + + geom = gaiaGeometryUnion_r (cache, 0, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -70; + goto exit; + } + + geom = gaiaGeometryDifference_r (cache, 0, validGeometry); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -71; + goto exit; + } + + geom = gaiaGeometryDifference_r (cache, validGeometry, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -72; + goto exit; + } + + geom = gaiaGeometryDifference_r (cache, 0, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -73; + goto exit; + } + + geom = gaiaGeometrySymDifference_r (cache, 0, validGeometry); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -74; + goto exit; + } + + geom = gaiaGeometrySymDifference_r (cache, validGeometry, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -75; + goto exit; + } + + geom = gaiaGeometrySymDifference_r (cache, 0, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -76; + goto exit; + } + + geom = gaiaBoundary_r (cache, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -77; + goto exit; + } + + geom = gaiaGeomCollSimplify_r (cache, 0, 1.0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -78; + goto exit; + } + + geom = gaiaGeomCollSimplifyPreserveTopology_r (cache, 0, 1.0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -79; + goto exit; + } + + geom = gaiaConvexHull_r (cache, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -80; + goto exit; + } + + geom = gaiaGeomCollBuffer_r (cache, 0, 0.1, 10); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -81; + goto exit; + } + + geom = gaiaOffsetCurve_r (cache, 0, 1.5, 10, 1); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -82; + goto exit; + } + + geom = gaiaSingleSidedBuffer_r (cache, 0, 1.5, 10, 1); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -83; + goto exit; + } + + geom = gaiaSharedPaths_r (cache, 0, validGeometry); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -84; + goto exit; + } + + geom = gaiaSharedPaths_r (cache, validGeometry, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -85; + goto exit; + } + + geom = gaiaSharedPaths_r (cache, 0, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -86; + goto exit; + } + + geom = gaiaLineInterpolatePoint_r (cache, 0, 0.6); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -87; + goto exit; + } + + /* Test some strange conditions */ + result = gaiaGeomCollLength_r (cache, validGeometry, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -88; + goto exit; + } + + /* preparing a collection of Polygons */ + geom = gaiaAllocGeomColl (); + pg = gaiaAddPolygonToGeomColl (geom, 5, 1); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, 1.5, 1.5); + gaiaSetPoint (rng->Coords, 1, 10.5, 1.5); + gaiaSetPoint (rng->Coords, 2, 10.5, 10.5); + gaiaSetPoint (rng->Coords, 3, 1.5, 10.5); + gaiaSetPoint (rng->Coords, 4, 1.5, 1.5); + rng = gaiaAddInteriorRing (pg, 0, 5); + gaiaSetPoint (rng->Coords, 0, 5.5, 5.5); + gaiaSetPoint (rng->Coords, 1, 6.5, 1.5); + gaiaSetPoint (rng->Coords, 2, 6.5, 6.5); + gaiaSetPoint (rng->Coords, 3, 5.5, 6.5); + gaiaSetPoint (rng->Coords, 4, 5.5, 5.5); + pg = gaiaAddPolygonToGeomColl (geom, 5, 1); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, 8.5, 8.5); + gaiaSetPoint (rng->Coords, 1, 18.5, 8.5); + gaiaSetPoint (rng->Coords, 2, 18.5, 18.5); + gaiaSetPoint (rng->Coords, 3, 8.5, 18.5); + gaiaSetPoint (rng->Coords, 4, 8.5, 8.5); + rng = gaiaAddInteriorRing (pg, 0, 5); + gaiaSetPoint (rng->Coords, 0, 11.5, 11.5); + gaiaSetPoint (rng->Coords, 1, 12.5, 11.5); + gaiaSetPoint (rng->Coords, 2, 12.5, 12.5); + gaiaSetPoint (rng->Coords, 3, 11.5, 12.5); + gaiaSetPoint (rng->Coords, 4, 11.5, 11.5); + pg = gaiaAddPolygonToGeomColl (geom, 5, 0); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, 4.5, 4.5); + gaiaSetPoint (rng->Coords, 1, 30.5, 4.5); + gaiaSetPoint (rng->Coords, 2, 30.5, 30.5); + gaiaSetPoint (rng->Coords, 3, 4.5, 30.5); + gaiaSetPoint (rng->Coords, 4, 4.5, 4.5); + + /* Tests Polygons UnaryUnion [as in aggregate ST_Union] */ + g = gaiaUnaryUnion_r (cache, geom); + if (g == NULL) + { + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -89; + goto exit; + } + result = gaiaGeomCollLength_r (cache, g, &dummyResultArg); + if (result == 1 + && (dummyResultArg >= 122.84232 && dummyResultArg <= 122.84233)) + ; + else + { + fprintf (stderr, "bad result at %s:%i: %i %f\n", __FILE__, __LINE__, + result, dummyResultArg); + returnValue = -90; + goto exit; + } + gaiaFreeGeomColl (g); + + /* Tests Polygons UnionCascaded [as in aggregate ST_Union] */ + g = gaiaUnionCascaded_r (cache, geom); + if (g == NULL) + { + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -91; + goto exit; + } + result = gaiaGeomCollLength_r (cache, g, &dummyResultArg); + if (result == 1 + && (dummyResultArg >= 122.84232 && dummyResultArg <= 122.84233)) + ; + else + { + fprintf (stderr, "bad result at %s:%i: %i %f\n", __FILE__, __LINE__, + result, dummyResultArg); + returnValue = -92; + goto exit; + } + gaiaFreeGeomColl (g); + gaiaFreeGeomColl (geom); + + /* Cleanup and exit */ + exit: + gaiaFreeGeomColl (validGeometry); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -133; + } + + spatialite_cleanup_ex (cache); + return returnValue; + +#endif /* end GEOS conditional */ + return 0; +} + +int +test_legacy_mode () +{ +#ifndef OMIT_GEOS /* only if GEOS is supported */ + int ret; + sqlite3 *handle; + int result; + double resultDouble; + int returnValue = 0; + gaiaGeomCollPtr geom; + gaiaGeomCollPtr g; + gaiaPolygonPtr pg; + gaiaRingPtr rng; + + /* Common setup */ + gaiaGeomCollPtr validGeometry = gaiaAllocGeomColl (); + double dummyResultArg = 0.0; + double dummyResultArg2 = 0.0; + + spatialite_init (0); + + /* Tests start here */ + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + /* null inputs for a range of geometry functions */ + result = gaiaGeomCollEquals (0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -1; + goto exit; + } + + result = gaiaGeomCollEquals (validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -2; + goto exit; + } + + result = gaiaGeomCollEquals (0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -3; + goto exit; + } + + result = gaiaGeomCollIntersects (0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -4; + goto exit; + } + + result = gaiaGeomCollIntersects (validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -5; + goto exit; + } + + result = gaiaGeomCollIntersects (0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -6; + goto exit; + } + + result = gaiaGeomCollOverlaps (0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -7; + goto exit; + } + + result = gaiaGeomCollOverlaps (validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -8; + goto exit; + } + + result = gaiaGeomCollOverlaps (0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -9; + goto exit; + } + + result = gaiaGeomCollCrosses (0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -10; + goto exit; + } + + result = gaiaGeomCollCrosses (validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -11; + goto exit; + } + + result = gaiaGeomCollCrosses (0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -12; + goto exit; + } + + result = gaiaGeomCollTouches (0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -13; + goto exit; + } + + result = gaiaGeomCollTouches (validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -14; + goto exit; + } + + result = gaiaGeomCollTouches (0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -15; + goto exit; + } + + result = gaiaGeomCollDisjoint (0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -16; + goto exit; + } + + result = gaiaGeomCollDisjoint (validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -17; + goto exit; + } + + result = gaiaGeomCollDisjoint (0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -18; + goto exit; + } + + result = gaiaGeomCollWithin (0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -19; + goto exit; + } + + result = gaiaGeomCollWithin (validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -20; + goto exit; + } + + result = gaiaGeomCollWithin (0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -21; + goto exit; + } + + result = gaiaGeomCollContains (0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -22; + goto exit; + } + + result = gaiaGeomCollContains (validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -23; + goto exit; + } + + result = gaiaGeomCollContains (0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -24; + goto exit; + } + + result = gaiaGeomCollRelate (0, validGeometry, "T********"); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -25; + goto exit; + } + + result = gaiaGeomCollRelate (validGeometry, 0, "T********"); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -26; + goto exit; + } + + result = gaiaGeomCollRelate (0, 0, "T********"); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -27; + goto exit; + } + + result = gaiaHausdorffDistance (0, validGeometry, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -34; + goto exit; + } + + result = gaiaHausdorffDistance (validGeometry, 0, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -35; + goto exit; + } + + result = gaiaHausdorffDistance (0, 0, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -36; + goto exit; + } + + result = gaiaGeomCollCovers (0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -37; + goto exit; + } + + result = gaiaGeomCollCovers (validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -38; + goto exit; + } + + result = gaiaGeomCollCovers (0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -39; + goto exit; + } + + result = gaiaGeomCollCoveredBy (0, validGeometry); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -40; + goto exit; + } + + result = gaiaGeomCollCoveredBy (validGeometry, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -41; + goto exit; + } + + result = gaiaGeomCollCoveredBy (0, 0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -42; + goto exit; + } + + result = gaiaGeomCollDistance (0, validGeometry, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -43; + goto exit; + } + + result = gaiaGeomCollDistance (validGeometry, 0, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -44; + goto exit; + } + + result = gaiaGeomCollDistance (0, 0, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -45; + goto exit; + } + /* Check some of the single geometry analysis routines */ + + result = gaiaGeomCollLength (0, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -46; + goto exit; + } + + result = gaiaGeomCollArea (0, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -47; + goto exit; + } + + result = gaiaGeomCollCentroid (0, &dummyResultArg, &dummyResultArg2); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -48; + goto exit; + } + + result = gaiaGetPointOnSurface (0, &dummyResultArg, &dummyResultArg2); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -49; + goto exit; + } + + result = gaiaIsSimple (0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -32; + goto exit; + } + + result = gaiaIsValid (0); + if (result != -1) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -33; + goto exit; + } + + resultDouble = gaiaLineLocatePoint (0, validGeometry); + if (abs (resultDouble - -1.0) > double_eps) + { + fprintf (stderr, "bad result at %s:%i: %f\n", __FILE__, __LINE__, + resultDouble); + returnValue = -62; + goto exit; + } + + resultDouble = gaiaLineLocatePoint (validGeometry, 0); + if (abs (resultDouble - -1.0) > double_eps) + { + fprintf (stderr, "bad result at %s:%i: %f\n", __FILE__, __LINE__, + resultDouble); + returnValue = -63; + goto exit; + } + + resultDouble = gaiaLineLocatePoint (0, 0); + if (abs (resultDouble - -1.0) > double_eps) + { + fprintf (stderr, "bad result at %s:%i: %f\n", __FILE__, __LINE__, + resultDouble); + returnValue = -64; + goto exit; + } + + /* geometry generating functionality */ + geom = NULL; + geom = gaiaLinesCutAtNodes (0, validGeometry); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -50; + goto exit; + } + + geom = gaiaLinesCutAtNodes (validGeometry, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -51; + goto exit; + } + + geom = gaiaLinesCutAtNodes (0, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -52; + goto exit; + } + + geom = gaiaUnaryUnion (0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -53; + goto exit; + } + + geom = gaiaLineMerge (0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -54; + goto exit; + } + + geom = gaiaSnap (0, validGeometry, 4); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -55; + goto exit; + } + + geom = gaiaSnap (validGeometry, 0, 4); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -56; + goto exit; + } + + geom = gaiaSnap (0, 0, 4); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -57; + goto exit; + } + + geom = gaiaShortestLine (0, validGeometry); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -58; + goto exit; + } + + geom = gaiaShortestLine (validGeometry, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -59; + goto exit; + } + + geom = gaiaShortestLine (0, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -60; + goto exit; + } + + geom = gaiaLineSubstring (0, 0, 1); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -61; + goto exit; + } + + geom = gaiaGeometryIntersection (0, validGeometry); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -65; + goto exit; + } + + geom = gaiaGeometryIntersection (validGeometry, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -66; + goto exit; + } + + geom = gaiaGeometryIntersection (0, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -67; + goto exit; + } + + geom = gaiaGeometryUnion (0, validGeometry); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -68; + goto exit; + } + + geom = gaiaGeometryUnion (validGeometry, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -69; + goto exit; + } + + geom = gaiaGeometryUnion (0, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -70; + goto exit; + } + + geom = gaiaGeometryDifference (0, validGeometry); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -71; + goto exit; + } + + geom = gaiaGeometryDifference (validGeometry, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -72; + goto exit; + } + + geom = gaiaGeometryDifference (0, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -73; + goto exit; + } + + geom = gaiaGeometrySymDifference (0, validGeometry); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -74; + goto exit; + } + + geom = gaiaGeometrySymDifference (validGeometry, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -75; + goto exit; + } + + geom = gaiaGeometrySymDifference (0, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -76; + goto exit; + } + + geom = gaiaBoundary (0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -77; + goto exit; + } + + geom = gaiaGeomCollSimplify (0, 1.0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -78; + goto exit; + } + + geom = gaiaGeomCollSimplifyPreserveTopology (0, 1.0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -79; + goto exit; + } + + geom = gaiaConvexHull (0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -80; + goto exit; + } + + geom = gaiaGeomCollBuffer (0, 0.1, 10); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -81; + goto exit; + } + + geom = gaiaOffsetCurve (0, 1.5, 10, 1); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -82; + goto exit; + } + + geom = gaiaSingleSidedBuffer (0, 1.5, 10, 1); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -83; + goto exit; + } + + geom = gaiaSharedPaths (0, validGeometry); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -84; + goto exit; + } + + geom = gaiaSharedPaths (validGeometry, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -85; + goto exit; + } + + geom = gaiaSharedPaths (0, 0); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -86; + goto exit; + } + + geom = gaiaLineInterpolatePoint (0, 0.6); + if (geom != NULL) + { + gaiaFree (geom); + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -87; + goto exit; + } + + /* Test some strange conditions */ + result = gaiaGeomCollLength (validGeometry, &dummyResultArg); + if (result != 0) + { + fprintf (stderr, "bad result at %s:%i: %i\n", __FILE__, __LINE__, + result); + returnValue = -88; + goto exit; + } + + /* preparing a collection of Polygons */ + geom = gaiaAllocGeomColl (); + pg = gaiaAddPolygonToGeomColl (geom, 5, 1); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, 1.5, 1.5); + gaiaSetPoint (rng->Coords, 1, 10.5, 1.5); + gaiaSetPoint (rng->Coords, 2, 10.5, 10.5); + gaiaSetPoint (rng->Coords, 3, 1.5, 10.5); + gaiaSetPoint (rng->Coords, 4, 1.5, 1.5); + rng = gaiaAddInteriorRing (pg, 0, 5); + gaiaSetPoint (rng->Coords, 0, 5.5, 5.5); + gaiaSetPoint (rng->Coords, 1, 6.5, 1.5); + gaiaSetPoint (rng->Coords, 2, 6.5, 6.5); + gaiaSetPoint (rng->Coords, 3, 5.5, 6.5); + gaiaSetPoint (rng->Coords, 4, 5.5, 5.5); + pg = gaiaAddPolygonToGeomColl (geom, 5, 1); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, 8.5, 8.5); + gaiaSetPoint (rng->Coords, 1, 18.5, 8.5); + gaiaSetPoint (rng->Coords, 2, 18.5, 18.5); + gaiaSetPoint (rng->Coords, 3, 8.5, 18.5); + gaiaSetPoint (rng->Coords, 4, 8.5, 8.5); + rng = gaiaAddInteriorRing (pg, 0, 5); + gaiaSetPoint (rng->Coords, 0, 11.5, 11.5); + gaiaSetPoint (rng->Coords, 1, 12.5, 11.5); + gaiaSetPoint (rng->Coords, 2, 12.5, 12.5); + gaiaSetPoint (rng->Coords, 3, 11.5, 12.5); + gaiaSetPoint (rng->Coords, 4, 11.5, 11.5); + pg = gaiaAddPolygonToGeomColl (geom, 5, 0); + rng = pg->Exterior; + gaiaSetPoint (rng->Coords, 0, 4.5, 4.5); + gaiaSetPoint (rng->Coords, 1, 30.5, 4.5); + gaiaSetPoint (rng->Coords, 2, 30.5, 30.5); + gaiaSetPoint (rng->Coords, 3, 4.5, 30.5); + gaiaSetPoint (rng->Coords, 4, 4.5, 4.5); + + /* Tests Polygons UnaryUnion [as in aggregate ST_Union] */ + g = gaiaUnaryUnion (geom); + if (g == NULL) + { + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -89; + goto exit; + } + result = gaiaGeomCollLength (g, &dummyResultArg); + if (result == 1 + && (dummyResultArg >= 122.84232 && dummyResultArg <= 122.84233)) + ; + else + { + fprintf (stderr, "bad result at %s:%i: %i %f\n", __FILE__, __LINE__, + result, dummyResultArg); + returnValue = -90; + goto exit; + } + gaiaFreeGeomColl (g); + + /* Tests Polygons UnionCascaded [as in aggregate ST_Union] */ + g = gaiaUnionCascaded (geom); + if (g == NULL) + { + fprintf (stderr, "bad result at %s:%i\n", __FILE__, __LINE__); + returnValue = -91; + goto exit; + } + result = gaiaGeomCollLength (g, &dummyResultArg); + if (result == 1 + && (dummyResultArg >= 122.84232 && dummyResultArg <= 122.84233)) + ; + else + { + fprintf (stderr, "bad result at %s:%i: %i %f\n", __FILE__, __LINE__, + result, dummyResultArg); + returnValue = -92; + goto exit; + } + gaiaFreeGeomColl (g); + gaiaFreeGeomColl (geom); + + /* Cleanup and exit */ + exit: + gaiaFreeGeomColl (validGeometry); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -133; + } + + spatialite_cleanup (); + return returnValue; + +#endif /* end GEOS conditional */ + return 0; +} + +int +main (int argc, char *argv[]) +{ + int ret; + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + ret = test_current_mode (); + if (ret != 0) + return ret; + ret = test_extra_mode (); + if (ret != 0) + return ret; + ret = test_legacy_mode (); + if (ret != 0) + return ret; + return 0; +} diff --git a/src/spatialite/test/check_shp_load.c b/src/spatialite/test/check_shp_load.c new file mode 100644 index 0000000..b8f111a --- /dev/null +++ b/src/spatialite/test/check_shp_load.c @@ -0,0 +1,219 @@ +/* + + check_shp_load.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards +Ahmadou Dicko + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +static int +do_test (sqlite3 * handle, const void *p_cache) +{ + int ret; + char *err_msg = NULL; + int row_count; + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + ret = load_shapefile (handle, "./shapetest1", "test1", "UTF-8", 4326, + "col1", 1, 0, 1, 0, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "load_shapefile() error: %s\n", err_msg); + sqlite3_close (handle); + return -3; + } + +#ifdef ENABLE_LWGEOM /* only if LWGEOM is supported */ + + if (p_cache == NULL) + ret = + check_geometry_column (handle, "test1", "geometry", "./report.html", + NULL, NULL, NULL); + else + ret = + check_geometry_column_r (p_cache, handle, "test1", "geometry", + "./report.html", NULL, NULL, NULL); + if (ret) + { + fprintf (stderr, "check_geometry_column() error\n"); + sqlite3_close (handle); + return -4; + } + + if (p_cache == NULL) + ret = + sanitize_geometry_column (handle, "test1", "geometry", "tmp_test1", + "./report.html", NULL, NULL, NULL, NULL, + NULL); + else + ret = + sanitize_geometry_column_r (p_cache, handle, "test1", "geometry", + "tmp_test1", "./report.html", NULL, + NULL, NULL, NULL, NULL); + if (ret) + { + fprintf (stderr, "sanitize_geometry_column() error\n"); + sqlite3_close (handle); + return -5; + } + + if (p_cache == NULL) + ret = + check_geometry_column (handle, "test1", "col1", "./report.html", + NULL, NULL, NULL); + else + ret = + check_geometry_column_r (p_cache, handle, "test1", "col1", + "./report.html", NULL, NULL, NULL); + if (!ret) + { + fprintf (stderr, "check_geometry_column() error\n"); + sqlite3_close (handle); + return -6; + } + + if (p_cache == NULL) + ret = + sanitize_geometry_column (handle, "test1", "col1", "tmp_test1", + "./report.html", NULL, NULL, NULL, NULL, + NULL); + else + ret = + sanitize_geometry_column_r (p_cache, handle, "test1", "col1", + "tmp_test1", "./report.html", NULL, + NULL, NULL, NULL, NULL); + if (!ret) + { + fprintf (stderr, "sanitize_geometry_column() error\n"); + sqlite3_close (handle); + return -7; + } + +#endif /* end LWGEOM conditionals */ + return 0; +} + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + int ret; + sqlite3 *handle; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = do_test (handle, cache); + if (ret != 0) + return ret; + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -8; + } + + spatialite_cleanup_ex (cache); + +/* testing again in legacy mode */ + spatialite_init (0); + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -9; + } + + ret = do_test (handle, NULL); + if (ret != 0) + return ret; + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -10; + } + + spatialite_cleanup (); +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_shp_load_3d.c b/src/spatialite/test/check_shp_load_3d.c new file mode 100644 index 0000000..3e321d3 --- /dev/null +++ b/src/spatialite/test/check_shp_load_3d.c @@ -0,0 +1,791 @@ +/* + + check_shp_load_3d.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +static int +do_test (sqlite3 * handle, const void *p_cache) +{ + int ret; + char *err_msg = NULL; + int row_count; + const char *sql; + char **results; + int rows; + int columns; + double tic; + gaiaVectorLayersListPtr list; + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + ret = + load_shapefile (handle, "shp/merano-3d/polygons", "polygons", "CP1252", + 25832, "geom", 0, 1, 1, 0, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "load_shapefile() error: %s\n", err_msg); + sqlite3_close (handle); + return -3; + } + + ret = update_layer_statistics (handle, "polygons", "geom"); + if (!ret) + { + fprintf (stderr, "update_layer_statistics() error %s\n", err_msg); + sqlite3_close (handle); + return -8; + } + + ret = + load_shapefile (handle, "shp/merano-3d/roads", "roads", "CP1252", 25832, + "geom", 0, 0, 1, 0, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "load_shapefile() error: %s\n", err_msg); + sqlite3_close (handle); + return -4; + } + + ret = + load_shapefile (handle, "shp/merano-3d/points", "points", "CP1252", + 25832, "geom", 0, 0, 1, 0, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "load_shapefile() error: %s\n", err_msg); + sqlite3_close (handle); + return -5; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO polygons (FEATURE_ID, DATUM, HAUSNR) VALUES (1250000, 0.1, 'alpha')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT polygons (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -14; + } + ret = + sqlite3_exec (handle, + "INSERT INTO polygons (FEATURE_ID, DATUM, HAUSNR) VALUES (1250000, 0.1, 'alpha')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT polygons (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -15; + } + ret = + sqlite3_exec (handle, + "INSERT INTO polygons (FEATURE_ID, DATUM, TEXT_I) VALUES (1250000, 0.1, 'alpha')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT polygons (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -16; + } + + ret = + sqlite3_exec (handle, + "CREATE TABLE polyg_xy (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE polyg_xy error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -17; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('polyg_xy', 'geom', 25832, 'POLYGON', 'XY')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeomety polyg_xy error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -17; + } + ret = + sqlite3_exec (handle, + "INSERT INTO polyg_xy (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXY(geom) FROM polygons WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding polyg_xy (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -18; + } + ret = + sqlite3_exec (handle, + "INSERT INTO polyg_xy (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXY(geom) FROM polygons WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding polyg_xy (2) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -19; + } + ret = + sqlite3_exec (handle, + "CREATE TABLE polyg_xym (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE polyg_xym error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -20; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('polyg_xym', 'geom', 25832, 'POLYGON', 'XYM')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometry polyg_xym error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -21; + } + ret = + sqlite3_exec (handle, + "INSERT INTO polyg_xym (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYM(geom) FROM polygons WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding polyg_xym (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -22; + } + ret = + sqlite3_exec (handle, + "INSERT INTO polyg_xym (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYM(geom) FROM polygons WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding polyg_xym (2) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -23; + } + ret = + sqlite3_exec (handle, + "CREATE TABLE polyg_xyz (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE polyg_xyz error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -24; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('polyg_xyz', 'geom', 25832, 'POLYGON', 'XYZ')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometry polyg_xyz error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -25; + } + ret = + sqlite3_exec (handle, + "INSERT INTO polyg_xyz (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZ(geom) FROM polygons WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding polyg_xyz (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -26; + } + ret = + sqlite3_exec (handle, + "INSERT INTO polyg_xyz (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZ(geom) FROM polygons WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding polyg_xyz (2) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -27; + } + + ret = + sqlite3_exec (handle, + "CREATE TABLE roads_xyz (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE roads_xyz error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -28; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('roads_xyz', 'geom', 25832, 'LINESTRING', 'XYZ')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeomety roads_xyz error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -29; + } + ret = + sqlite3_exec (handle, + "INSERT INTO roads_xyz (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZ(geom) FROM roads WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding roads_xyz (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -30; + } + ret = + sqlite3_exec (handle, + "INSERT INTO roads_xyz (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZ(geom) FROM roads WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding roads_xyz (2) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -31; + } + ret = + sqlite3_exec (handle, + "CREATE TABLE roads_xym (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE roads_xym error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -32; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('roads_xym', 'geom', 25832, 'LINESTRING', 'XYM')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometry roads_xym error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -33; + } + ret = + sqlite3_exec (handle, + "INSERT INTO roads_xym (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYM(geom) FROM roads WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding roads_xym (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -34; + } + ret = + sqlite3_exec (handle, + "INSERT INTO roads_xym (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYM(geom) FROM roads WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding roads_xym (2) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -35; + } + ret = + sqlite3_exec (handle, + "CREATE TABLE roads_xyzm (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE roads_xyzm error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -36; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('roads_xyzm', 'geom', 25832, 'LINESTRING', 'XYZM')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometry roads_xyzm error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -37; + } + ret = + sqlite3_exec (handle, + "INSERT INTO roads_xyzm (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZM(geom) FROM roads WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding roads_xyzm (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -38; + } + ret = + sqlite3_exec (handle, + "INSERT INTO roads_xyzm (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZM(geom) FROM roads WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding roads_xyzm (2) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -39; + } + + ret = + sqlite3_exec (handle, + "CREATE TABLE points_xyz (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE points_xyz error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -40; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('points_xyz', 'geom', 25832, 'POINT', 'XYZ')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeomety points_xyz error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -41; + } + ret = + sqlite3_exec (handle, + "INSERT INTO points_xyz (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZ(geom) FROM points WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding points_xyz (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -42; + } + ret = + sqlite3_exec (handle, + "INSERT INTO points_xyz (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZ(geom) FROM points WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding points_xyz (2) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -43; + } + ret = + sqlite3_exec (handle, + "CREATE TABLE points_xym (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE points_xym error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -44; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('points_xym', 'geom', 25832, 'POINT', 'XYM')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometry points_xym error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -45; + } + ret = + sqlite3_exec (handle, + "INSERT INTO points_xym (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYM(geom) FROM points WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding points_xym (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -46; + } + ret = + sqlite3_exec (handle, + "INSERT INTO points_xym (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYM(geom) FROM points WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding points_xym (2) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -47; + } + ret = + sqlite3_exec (handle, + "CREATE TABLE points_xyzm (pk_elem INTEGER PRIMARY KEY AUTOINCREMENT, FEATURE_ID INTEGER, DATUM DOUBLE, TEXT_I TEXT, BLOB_I BLOB)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE points_xyzm error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -48; + } + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('points_xyzm', 'geom', 25832, 'POINT', 'XYZM')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometry points_xyzm error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -49; + } + ret = + sqlite3_exec (handle, + "INSERT INTO points_xyzm (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZM(geom) FROM points WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding points_xyzm (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -50; + } + ret = + sqlite3_exec (handle, + "INSERT INTO points_xyzm (pk_elem, FEATURE_ID, DATUM, TEXT_I, BLOB_I, geom) SELECT NULL, FEATURE_ID, DATUM, 'alpha', zeroblob(20), CastToXYZM(geom) FROM points WHERE geom IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "feeding points_xyzm (2) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -51; + } + + elementary_geometries (handle, "points", "geom", "elem_point", "pk_elem", + "mul_id"); + elementary_geometries (handle, "roads", "geom", "elem_linestring", + "pk_elem", "mul_id"); + elementary_geometries (handle, "polygons", "geom", "elem_poly", "pk_elem", + "mul_id"); + + elementary_geometries (handle, "polyg_xy", "geom", "elem_poly_xy", + "pk_elem1", "mul_id"); + elementary_geometries (handle, "polyg_xym", "geom", "elem_poly_xym", + "pk_elem1", "mul_id"); + elementary_geometries (handle, "polyg_xyz", "geom", "elem_poly_xyz", + "pk_elem1", "mul_id"); + + elementary_geometries (handle, "roads_xyz", "geom", "elem_roads_xy", + "pk_elem1", "mul_id"); + elementary_geometries (handle, "roads_xym", "geom", "elem_roads_xym", + "pk_elem1", "mul_id"); + elementary_geometries (handle, "roads_xyzm", "geom", "elem_roads_xyz", + "pk_elem1", "mul_id"); + + elementary_geometries (handle, "points_xyz", "geom", "elem_points_xy", + "pk_elem1", "mul_id"); + elementary_geometries (handle, "points_xym", "geom", "elem_points_xym", + "pk_elem1", "mul_id"); + elementary_geometries (handle, "points_xyzm", "geom", "elem_points_xyz", + "pk_elem1", "mul_id"); + + remove_duplicated_rows (handle, "polyg_xy"); + remove_duplicated_rows (handle, "polyg_xyz"); + remove_duplicated_rows (handle, "polyg_xym"); + remove_duplicated_rows (handle, "roads_xyz"); + remove_duplicated_rows (handle, "roads_xym"); + remove_duplicated_rows (handle, "roads_xyzm"); + remove_duplicated_rows (handle, "points_xyz"); + remove_duplicated_rows (handle, "points_xym"); + remove_duplicated_rows (handle, "points_xyzm"); + + sql = "CREATE VIEW test_view AS " + "SELECT ROWID AS ROWID, pk_elem AS id, geom AS geometry FROM roads_xyz"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE test_view error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -52; + } + + sql = + "INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, " + "f_table_name, f_geometry_column, read_only) VALUES " + "('test_view', 'geometry', 'rowid', 'roads_xyz', 'geom', 1)"; + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Register SpatialView error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -53; + } + + ret = update_layer_statistics (handle, NULL, NULL); + if (!ret) + { + fprintf (stderr, "update_layer_statistics() error %s\n", err_msg); + sqlite3_close (handle); + return -54; + } + + sql = "SELECT row_count, extent_min_x, extent_max_y " + "FROM geometry_columns_statistics " + "WHERE f_table_name LIKE 'roads' " "AND f_geometry_column LIKE 'geom'"; + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -55; + } + if (rows != 1) + { + fprintf (stderr, + "Unexpected num of rows for GEOMETRY_COLUMNS_STATISTICS.\n"); + return -56; + } + if (atoi (results[columns + 0]) != 18) + { + fprintf (stderr, + "Unexpected error: GEOMETRY_COLUMNS_STATISTICS bad result row_count: %s\n", + results[columns + 0]); + return -57; + } + tic = fabs (atof (results[columns + 1]) - 666057.648017325); + if (tic >= 0.00000002) + { + fprintf (stderr, + "Unexpected error: GEOMETRY_COLUMNS_STATISTICS bad result extent_min_x: %s\n", + results[columns + 1]); + return -58; + } + tic = fabs (atof (results[columns + 2]) - 5170671.31627796); + if (tic >= 0.0000002) + { + fprintf (stderr, + "Unexpected error: GEOMETRY_COLUMNS_STATISTICS bad result extent_max_y: %s\n", + results[columns + 2]); + return -59; + } + sqlite3_free_table (results); + + ret = gaiaDropTable (handle, "polygons"); + if (!ret) + { + fprintf (stderr, "DROP polygons error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -60; + } + +/* checking gaiaGetVectorLayersList() - ALL */ + list = + gaiaGetVectorLayersList (handle, NULL, NULL, + GAIA_VECTORS_LIST_OPTIMISTIC); + gaiaFreeVectorLayersList (list); + +#ifdef ENABLE_LWGEOM /* only if LWGEOM is supported */ + + if (p_cache == NULL) + ret = check_all_geometry_columns (handle, "./report", NULL, NULL); + else + ret = + check_all_geometry_columns_r (p_cache, handle, "./report", NULL, + NULL); + if (!ret) + { + fprintf (stderr, "check_all_geometry_columns() error\n"); + sqlite3_close (handle); + return -61; + } + + if (p_cache == NULL) + ret = + sanitize_all_geometry_columns (handle, "tmp_", "./report", NULL, + NULL); + else + ret = + sanitize_all_geometry_columns_r (p_cache, handle, "tmp_", + "./report", NULL, NULL); + if (!ret) + { + fprintf (stderr, "sanitize_all_geometry_columns() error\n"); + sqlite3_close (handle); + return -62; + } + +#endif /* end LWGEOM conditionals */ + +/* checking gaiaGetVectorLayersList() - Table */ + list = + gaiaGetVectorLayersList (handle, "elem_points_xyz", NULL, + GAIA_VECTORS_LIST_OPTIMISTIC); + gaiaFreeVectorLayersList (list); + +/* checking gaiaGetVectorLayersList() - Table and Geometry */ + list = + gaiaGetVectorLayersList (handle, "elem_roads_xy", "geom", + GAIA_VECTORS_LIST_OPTIMISTIC); + gaiaFreeVectorLayersList (list); + + return 0; +} + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + int ret; + sqlite3 *handle; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = do_test (handle, cache); + if (ret != 0) + return ret; + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -61; + } + + spatialite_cleanup_ex (cache); + +/* testing again in legacy mode */ + spatialite_init (0); + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -62; + } + + ret = do_test (handle, NULL); + if (ret != 0) + return ret; + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -63; + + spatialite_cleanup (); + } +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_spatialindex.c b/src/spatialite/test/check_spatialindex.c new file mode 100644 index 0000000..1463fe9 --- /dev/null +++ b/src/spatialite/test/check_spatialindex.c @@ -0,0 +1,1856 @@ +/* + + check_spatialindex.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +int +do_test_without_rowid_true (sqlite3 * handle) +{ +/* testing WITHOUT ROWID - true */ + char *err_msg = NULL; + char **results; + int rows; + int columns; + int ret = sqlite3_exec (handle, + "CREATE TABLE without_rowid (" + "id INTEGER NOT NULL PRIMARY KEY," + "name TEXT NOT NULL) WITHOUT ROWID", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE without_rowid error: %s\n", err_msg); + sqlite3_free (err_msg); + return -313; + } + ret = + sqlite3_get_table (handle, + "SELECT AddGeometryColumn('without_rowid', 'geom', 4326, 'POINT', 'XY')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn(without_rowid) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -314; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: AddGeometryColumn(without_rowid) bad result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + return -315; + } + if (strcmp (results[1], "0") != 0) + { + fprintf (stderr, + "unexpected result AddGeometryColumn(without_rowid): %s\n", + results[1]); + sqlite3_free_table (results); + return -316; + } + sqlite3_free_table (results); + + + ret = sqlite3_exec (handle, + "ALTER TABLE without_rowid ADD COLUMN geom BLOB", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "ALTER TABLE without_rowid error: %s\n", err_msg); + sqlite3_free (err_msg); + return -317; + } + ret = + sqlite3_get_table (handle, + "SELECT RecoverGeometryColumn('without_rowid', 'geom', 4326, 'POINT', 'XY')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverGeometryColumn(without_rowid) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -318; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: RecoverGeometryColumn(without_rowid) bad result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + return -319; + } + if (strcmp (results[1], "0") != 0) + { + fprintf (stderr, + "unexpected result RecoverGeometryColumn(without_rowid): %s\n", + results[1]); + sqlite3_free_table (results); + return -320; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, + "SELECT RecoverSpatialIndex('without_rowid', 'geom', 0)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverSpatialIndex(without_rowid) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -321; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: RecoverSpatialIndex(without_rowid) bad result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + return -322; + } + if (strcmp (results[1], "-1") != 0) + { + fprintf (stderr, + "unexpected result RecoverSpatialIndex(without_rowid): %s\n", + results[1]); + sqlite3_free_table (results); + return -323; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, + "SELECT CheckSpatialIndex('without_rowid', 'geom')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CheckSpatialIndex(without_rowid) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -324; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: CheckSpatialIndex(without_rowid) bad result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + return -325; + } + if (strcmp (results[1], "-1") != 0) + { + fprintf (stderr, + "unexpected result CheckSpatialIndex(without_rowid): %s\n", + results[1]); + sqlite3_free_table (results); + return -326; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, + "SELECT CheckWithoutRowid('without_rowid')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CheckWithoutRowid(without_rowid) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -327; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: CheckWithoutRowid(without_rowid) bad result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + return -328; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "unexpected result CheckWithoutRowid(without_rowid): %s\n", + results[1]); + sqlite3_free_table (results); + return -329; + } + sqlite3_free_table (results); + return 0; +} + +int +do_test_without_rowid_false (sqlite3 * handle) +{ +/* testing WITHOUT ROWID - false */ + char *err_msg = NULL; + char **results; + int rows; + int columns; + int ret = sqlite3_exec (handle, + "CREATE TABLE not_without_rowid (" + "id INTEGER NOT NULL PRIMARY KEY," + "name TEXT NOT NULL)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE not_without_rowid error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -327; + } + ret = sqlite3_exec (handle, + "CREATE INDEX idx_NAME on NOT_WITHOUT_ROWID(NAME)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE not_without_rowid error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -328; + } + ret = + sqlite3_get_table (handle, + "SELECT AddGeometryColumn('NOT_WITHOUT_ROWID', 'geom', 4326, 'POINT', 'XY')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn(NOT_WITHOUT_ROWID) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -329; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: AddGeometryColumn(NOT_WITHOUT_ROWID) bad result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + return -330; + } + if (strcmp (results[1], "0") != 1) + { + fprintf (stderr, + "unexpected result AddGeometryColumn(NOT_WITHOUT_ROWID): %s\n", + results[1]); + sqlite3_free_table (results); + return -331; + } + sqlite3_free_table (results); + + + ret = sqlite3_exec (handle, + "ALTER TABLE NOT_WITHOUT_ROWID ADD COLUMN geom2 BLOB", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "ALTER TABLE NOT_WITHOUT_ROWID error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -332; + } + ret = + sqlite3_get_table (handle, + "SELECT RecoverGeometryColumn('NOT_WITHOUT_ROWID', 'geom2', 4326, 'POINT', 'XY')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "RecoverGeometryColumn(NOT_WITHOUT_ROWID) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -333; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: RecoverGeometryColumn(NOT_WITHOUT_ROWID) bad result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + return -319; + } + if (strcmp (results[1], "0") != 1) + { + fprintf (stderr, + "unexpected result RecoverGeometryColumn(NOT_WITHOUT_ROWID): %s\n", + results[1]); + sqlite3_free_table (results); + return -334; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, + "SELECT CheckWithoutRowid('NOT_WITHOUT_ROWID')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CheckWithoutRowid(NOT_WITHOUT_ROWID) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -335; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: CheckWithoutRowid(NOT_WITHOUT_ROWID) bad result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + return -336; + } + if (strcmp (results[1], "0") != 0) + { + fprintf (stderr, + "unexpected result CheckWithoutRowid(NOT_WITHOUT_ROWID): %s\n", + results[1]); + sqlite3_free_table (results); + return -337; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, + "SELECT CheckWithoutRowid('not_existing_table')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CheckWithoutRowid(not_existing_table) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -338; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: CheckWithoutRowid(not_existing_table) bad result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + return -339; + } + if (results[1] != NULL) + { + fprintf (stderr, + "unexpected result CheckWithoutRowid(not_existing_table): %s\n", + results[1]); + sqlite3_free_table (results); + return -340; + } + sqlite3_free_table (results); + return 0; +} + +int +do_test (sqlite3 * handle, int legacy) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + int ret; + char *err_msg = NULL; + int row_count; + char **results; + int rows; + int columns; + char sql[1024]; + + ret = load_shapefile (handle, "shp/foggia/local_councils", "Councils", + "CP1252", 23032, "geom", 1, 0, 1, 0, &row_count, + err_msg); + if (!ret) + { + fprintf (stderr, "load_shapefile() error: %s\n", err_msg); + sqlite3_close (handle); + return -3; + } + if (row_count != 61) + { + fprintf (stderr, "unexpected number of rows loaded: %i\n", row_count); + sqlite3_close (handle); + return -4; + } + + ret = + sqlite3_get_table (handle, + "SELECT lc_name FROM Councils WHERE MbrWithin(geom, BuildMbr(1040523, 4010000, 1140523, 4850000)) ORDER BY lc_name;", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -5; + } + if ((rows != 22) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select lc_name bad result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -6; + } + if (strcmp (results[1], "Ascoli Satriano") != 0) + { + fprintf (stderr, "unexpected result at 1: %s\n", results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -7; + } + if (strcmp (results[22], "Zapponeta") != 0) + { + fprintf (stderr, "unexpected result at 22: %s\n", results[22]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -8; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (handle, "SELECT CreateSpatialIndex('Councils', 'geom');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CreateSpatialIndex error: %s\n", err_msg); + sqlite3_free (err_msg); + return -9; + } + + rows = 0; + columns = 0; + ret = sqlite3_get_table (handle, "SELECT pkid FROM idx_Councils_geom;", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error in idx SELECT: %s\n", err_msg); + sqlite3_free (err_msg); + return -10; + } + if ((rows != 61) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select pkid bad idx result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -11; + } + sqlite3_free_table (results); + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT pkid FROM idx_Councils_geom WHERE xmin > 1040523 AND ymin > 4010000 AND xmax < 1140523 AND ymax < 4850000) ORDER BY lc_name;", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error in Mbr SELECT Contains: %s\n", err_msg); + sqlite3_free (err_msg); + return -12; + } + if ((rows != 22) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select lc_name bad idx result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -13; + } + if (strcmp (results[1], "Ascoli Satriano") != 0) + { + fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -14; + } + if (strcmp (results[22], "Zapponeta") != 0) + { + fprintf (stderr, "unexpected mbr result at 22: %s\n", results[22]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -15; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (handle, + "INSERT INTO Councils (lc_name, geom) VALUES ('Quairading', GeomFromText('MULTIPOLYGON(((997226.750031 4627372.000018, 997301.750031 4627332.000018, 997402.500031 4627344.000018, 997541.500031 4627326.500018,997226.750031 4627372.000018)))', 23032));", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT error: %s\n", err_msg); + sqlite3_free (err_msg); + return -16; + } + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT pkid FROM idx_Councils_geom WHERE xmin > 1040523 AND ymin > 4010000 AND xmax < 1140523 AND ymax < 4850000) ORDER BY lc_name;", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error in Mbr SELECT2: %s\n", err_msg); + sqlite3_free (err_msg); + return -17; + } + if ((rows != 22) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select lc_name bad idx result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -18; + } + if (strcmp (results[1], "Ascoli Satriano") != 0) + { + fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -19; + } + if (strcmp (results[22], "Zapponeta") != 0) + { + fprintf (stderr, "unexpected mbr result at 22: %s\n", results[22]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -20; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (handle, + "UPDATE Councils SET geom = GeomFromText('MULTIPOLYGON(((987226.750031 4627372.000018, 997301.750031 4627331.000018, 997402.500032 4627344.000018, 997541.500031 4627326.500018, 987226.750031 4627372.000018)))', 23032) WHERE lc_name = \"Quairading\";", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UPDATE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -34; + } + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT pkid FROM idx_Councils_geom WHERE xmin > 1040523 AND ymin > 4010000 AND xmax < 1140523 AND ymax < 4850000) ORDER BY lc_name;", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error in Mbr SELECT3: %s\n", err_msg); + sqlite3_free (err_msg); + return -35; + } + if ((rows != 22) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select lc_name bad idx result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -36; + } + if (strcmp (results[1], "Ascoli Satriano") != 0) + { + fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -37; + } + if (strcmp (results[22], "Zapponeta") != 0) + { + fprintf (stderr, "unexpected mbr result at 22: %s\n", results[22]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -38; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (handle, + "DELETE FROM Councils WHERE lc_name = \"Ascoli Satriano\";", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -39; + } + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT lc_name FROM Councils WHERE ROWID IN (SELECT pkid FROM idx_Councils_geom WHERE xmin > 1040523 AND ymin > 4010000 AND xmax < 1140523 AND ymax < 4850000) ORDER BY lc_name;", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error in Mbr SELECT3: %s\n", err_msg); + sqlite3_free (err_msg); + return -40; + } + if ((rows != 21) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select lc_name bad idx result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -41; + } + if (strcmp (results[1], "Cagnano Varano") != 0) + { + fprintf (stderr, "unexpected mbr result at 1: %s\n", results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -42; + } + if (strcmp (results[21], "Zapponeta") != 0) + { + fprintf (stderr, "unexpected mbr result at 21: %s\n", results[21]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -43; + } + sqlite3_free_table (results); + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT rowid, nodeno FROM idx_Councils_geom_rowid ORDER BY rowid;", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error in Mbr SELECT: %s\n", err_msg); + sqlite3_free (err_msg); + return -44; + } + if ((rows != 61) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select rowid bad idx result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -45; + } + if (strcmp (results[2], "1") != 0) + { + fprintf (stderr, "unexpected mbr result at 1: %s\n", results[2]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -46; + } + if (strcmp (results[12], "6") != 0) + { + fprintf (stderr, "unexpected mbr result at 6: %s\n", results[12]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -47; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (handle, "SELECT CheckSpatialIndex('Councils', 'geom');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CheckSpatialIndex (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + return -48; + } + + ret = + sqlite3_exec (handle, "SELECT CheckSpatialIndex();", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CheckSpatialIndex (2) error: %s\n", err_msg); + sqlite3_free (err_msg); + return -49; + } + + ret = + sqlite3_exec (handle, "SELECT RecoverSpatialIndex('Councils', 'geom');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverSpatialIndex (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + return -50; + } + + ret = + sqlite3_exec (handle, "SELECT RecoverSpatialIndex();", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverSpatialIndex (2) error: %s\n", err_msg); + sqlite3_free (err_msg); + return -51; + } + +/* +/ going to create a broken/corrupted SpatialIndex +/ +/ - we'll create a new table (with no Primary Key) +/ - then we'll delete some rows +/ - and finally we'll perform a Vacuum +/ - all this notoriously causes R*Tree corruption +*/ + ret = + sqlite3_exec (handle, + "CREATE TABLE bad_councils AS SELECT lc_name, geom FROM Councils", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE bad_councils error: %s\n", err_msg); + sqlite3_free (err_msg); + return -52; + } + + ret = + sqlite3_exec (handle, + "SELECT RecoverGeometryColumn(1, 'geom', 23032, 'MULTIPOLYGON', 'XY')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -54; + } + ret = + sqlite3_exec (handle, + "SELECT RecoverGeometryColumn('bad_councils', 1, 23032, 'MULTIPOLYGON', 'XY')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -55; + } + ret = + sqlite3_exec (handle, + "SELECT RecoverGeometryColumn('bad_councils', 'geom', 23032.5, 'MULTIPOLYGON', 'XY')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -56; + } + ret = + sqlite3_exec (handle, + "SELECT RecoverGeometryColumn('bad_councils', 'geom', 23032, 1, 'XY')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -57; + } + ret = + sqlite3_exec (handle, + "SELECT RecoverGeometryColumn('bad_councils', 'geom', 23032, 'MULTIPOLYGON', 1.5)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -58; + } + ret = + sqlite3_exec (handle, + "SELECT RecoverGeometryColumn('bad_councils', 'geom', 23032, 'DUMMY', 'XY')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -59; + } + ret = + sqlite3_exec (handle, + "SELECT RecoverGeometryColumn('bad_councils', 'geom', 23032, 'MULTIPOLYGON', 'DUMMY')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -60; + } + ret = + sqlite3_exec (handle, + "SELECT RecoverGeometryColumn('bad_councils', 'geom', 23032, 'MULTIPOLYGON', 2)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverGeometryColumn(bad_councils) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -61; + } + + ret = + sqlite3_exec (handle, + "SELECT CreateSpatialIndex('bad_councils', 'geom')", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CreateSpatialIndex(bad_councils) error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -62; + } + + ret = + sqlite3_exec (handle, + "DELETE FROM bad_councils WHERE lc_name LIKE 'C%'", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE FROM bad_councils error: %s\n", err_msg); + sqlite3_free (err_msg); + return -63; + } + + ret = sqlite3_exec (handle, "VACUUM", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VACUUM error: %s\n", err_msg); + sqlite3_free (err_msg); + return -64; + } + ret = + sqlite3_exec (handle, + "SELECT CheckSpatialIndex('bad_councils', 'geom');", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CheckSpatialIndex (3) error: %s\n", err_msg); + sqlite3_free (err_msg); + return -65; + } + + ret = + sqlite3_exec (handle, + "SELECT RecoverSpatialIndex('bad_councils', 'geom');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RecoverSpatialIndex (3) error: %s\n", err_msg); + sqlite3_free (err_msg); + return -66; + } + + ret = + sqlite3_exec (handle, + "SELECT UpdateLayerStatistics('bad_councils', 'geom');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UpdateLayerStatistics (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + return -67; + } + + ret = + sqlite3_exec (handle, "SELECT UpdateLayerStatistics();", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UpdateLayerStatistics (2) error: %s\n", err_msg); + sqlite3_free (err_msg); + return -68; + } +/* END broken SpatialIndex check/recover */ + + ret = + sqlite3_exec (handle, "SELECT Extent(geom) FROM Councils;", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Extent (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + return -69; + } + + strcpy (sql, "SELECT Count(*) FROM Councils WHERE ROWID IN ("); + strcat (sql, "SELECT ROWID FROM SpatialIndex WHERE "); + strcat (sql, "f_table_name = 'Councils' AND search_frame = "); + strcat (sql, "BuildMbr(10, 10, 20, 20));"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualSpatialIndex (1) error: %s\n", err_msg); + sqlite3_free (err_msg); + return -70; + } + + strcpy (sql, "SELECT Count(*) FROM Councils WHERE ROWID IN ("); + strcat (sql, "SELECT ROWID FROM SpatialIndex WHERE "); + strcat (sql, "f_table_name = 'Councils' AND f_geometry_column = "); + strcat (sql, "'geom' AND search_frame = BuildCircleMbr(1019000, "); + strcat (sql, "4592000, 10000));"); + ret = sqlite3_exec (handle, sql, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualSpatialIndex (2) error: %s\n", err_msg); + sqlite3_free (err_msg); + return -71; + } + + ret = + sqlite3_exec (handle, + "SELECT RebuildGeometryTriggers('Councils', 'geom');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Rebuild triggers error: %s\n", err_msg); + sqlite3_free (err_msg); + return -72; + } + + ret = + sqlite3_exec (handle, "SELECT DisableSpatialIndex('Councils', 'geom');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Disable index error: %s\n", err_msg); + sqlite3_free (err_msg); + return -73; + } + + ret = + sqlite3_exec (handle, + "SELECT RebuildGeometryTriggers('Councils', 'geom');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Disable index error: %s\n", err_msg); + sqlite3_free (err_msg); + return -74; + } + + ret = sqlite3_exec (handle, "DROP TABLE Councils;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE Councils error: %s\n", err_msg); + sqlite3_free (err_msg); + return -75; + } + + ret = + sqlite3_exec (handle, "SELECT DiscardGeometryColumn(1, 'a');", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid DiscardGeometryColumn error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -76; + } + ret = + sqlite3_exec (handle, "SELECT DiscardGeometryColumn('a', 1);", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid DiscardGeometryColumn error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -77; + } + + ret = + sqlite3_exec (handle, "SELECT CheckSpatialIndex(1, 'a');", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid CheckSpatialIndex error: %s\n", err_msg); + sqlite3_free (err_msg); + return -78; + } + ret = + sqlite3_exec (handle, "SELECT CheckSpatialIndex('a', 2);", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid CheckSpatialIndex error: %s\n", err_msg); + sqlite3_free (err_msg); + return -79; + } + ret = + sqlite3_exec (handle, "SELECT RecoverSpatialIndex(1, 'a');", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid RecoverSpatialIndex error: %s\n", err_msg); + sqlite3_free (err_msg); + return -80; + } + ret = + sqlite3_exec (handle, "SELECT RecoverSpatialIndex('a', 2);", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid RecoverSpatialIndex error: %s\n", err_msg); + sqlite3_free (err_msg); + return -81; + } + ret = + sqlite3_exec (handle, "SELECT RecoverSpatialIndex('a');", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid RecoverSpatialIndex error: %s\n", err_msg); + sqlite3_free (err_msg); + return -82; + } + ret = + sqlite3_exec (handle, "SELECT RecoverSpatialIndex(1);", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid RecoverSpatialIndex error: %s\n", err_msg); + sqlite3_free (err_msg); + return -83; + } + ret = + sqlite3_exec (handle, "SELECT RecoverSpatialIndex('a', 'b', 'c');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid RecoverSpatialIndex error: %s\n", err_msg); + sqlite3_free (err_msg); + return -84; + } + ret = + sqlite3_exec (handle, "SELECT RecoverSpatialIndex('a', 'b', 1);", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid RecoverSpatialIndex error: %s\n", err_msg); + sqlite3_free (err_msg); + return -85; + } + ret = + sqlite3_exec (handle, "SELECT CreateSpatialIndex(1, 'a');", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid CreateSpatialIndex error: %s\n", err_msg); + sqlite3_free (err_msg); + return -86; + } + ret = + sqlite3_exec (handle, "SELECT CreateSpatialIndex('a', 2);", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid CreateSpatialIndex error: %s\n", err_msg); + sqlite3_free (err_msg); + return -87; + } + ret = + sqlite3_exec (handle, "SELECT DisableSpatialIndex(1, 'a');", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid DisableSpatialIndex error: %s\n", err_msg); + sqlite3_free (err_msg); + return -88; + } + ret = + sqlite3_exec (handle, "SELECT DisableSpatialIndex('a', 2);", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid DisableSpatialIndex error: %s\n", err_msg); + sqlite3_free (err_msg); + return -89; + } + ret = + sqlite3_exec (handle, "SELECT RebuildGeometryTriggers(1, 'a');", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid RebuildGeometryTriggers error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -90; + } + ret = + sqlite3_exec (handle, "SELECT RebuildGeometryTriggers('a', 2);", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid RebuildGeometryTriggers error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -91; + } + ret = + sqlite3_exec (handle, "SELECT UpdateLayerStatistics('a', 2);", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid UpdateLayerStatistics error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -92; + } + ret = + sqlite3_exec (handle, "SELECT UpdateLayerStatistics(2, 'a');", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "invalid UpdateLayerStatistics error: %s\n", + err_msg); + sqlite3_free (err_msg); + return -93; + } + +/* final DB cleanup */ + ret = + sqlite3_exec (handle, "DROP TABLE bad_councils", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE bad_councils error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -94; + } + ret = + sqlite3_exec (handle, "DROP TABLE idx_bad_councils_geom", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE idx_bad_councils_geom error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -95; + } + ret = + sqlite3_exec (handle, "DROP TABLE idx_Councils_geom", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE idx_Councils_geom error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -96; + } + ret = + sqlite3_exec (handle, "DELETE FROM geometry_columns", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE FROM geometry_columns error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -97; + } + if (legacy) + { + /* only required for legacy style metadata */ + ret = + sqlite3_exec (handle, "DELETE FROM layer_statistics", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE FROM layer_statistics error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -98; + } + } + ret = + sqlite3_exec (handle, + "DELETE FROM spatialite_history WHERE geometry_column IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE FROM spatialite_history error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -99; + } + ret = sqlite3_exec (handle, "VACUUM", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VACUUM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -100; + } + +#endif /* end ICONV conditional */ + +/* ok, succesfull termination */ + return 0; +} + +int +do_test_rowid (sqlite3 * handle) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + int ret; + char *err_msg = NULL; + int row_count; + char **results; + int rows; + int columns; + + ret = load_shapefile (handle, "shp/foggia/local_councils", "Councils", + "CP1252", 23032, "geom", 1, 0, 1, 0, &row_count, + err_msg); + if (!ret) + { + fprintf (stderr, "load_shapefile() error: %s\n", err_msg); + sqlite3_close (handle); + return -203; + } + if (row_count != 61) + { + fprintf (stderr, "unexpected number of rows loaded: %i\n", row_count); + sqlite3_close (handle); + return -204; + } + + ret = + sqlite3_exec (handle, "SELECT CreateSpatialIndex('Councils', 'geom');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CreateSpatialIndex error: %s\n", err_msg); + sqlite3_free (err_msg); + return -205; + } + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT CheckSpatialIndex('Councils', 'geom');", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error CheckSpatialIndex(rowid-1): %s\n", err_msg); + sqlite3_free (err_msg); + return -206; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: CheckSpatialIndex(rowid-1) result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -207; + } + if (results[1] == NULL) + { + fprintf (stderr, "unexpected NULL CheckSpatialIndex(rowid-1)\n"); + sqlite3_free_table (results); + sqlite3_close (handle); + return -208; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "unexpected CheckSpatialIndex(rowid-1): %s\n", + results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -209; + } + sqlite3_free_table (results); + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT CheckSpatialIndex('Councils', 'geom');", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RecoverSpatialIndex(rowid-1): %s\n", err_msg); + sqlite3_free (err_msg); + return -210; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: RecoverSpatialIndex(rowid-1) result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -211; + } + if (results[1] == NULL) + { + fprintf (stderr, "unexpected NULL RecoverSpatialIndex(rowid-1)\n"); + sqlite3_free_table (results); + sqlite3_close (handle); + return -212; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "unexpected RecoverSpatialIndex(rowid-1): %s\n", + results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -213; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (handle, "ALTER TABLE Councils ADD COLUMN rowid", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "ALTER TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -214; + } + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT CheckSpatialIndex('Councils', 'geom');", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error CheckSpatialIndex(rowid-2): %s\n", err_msg); + sqlite3_free (err_msg); + return -215; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: CheckSpatialIndex(rowid-2) result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -216; + } + if (results[1] == NULL) + { + fprintf (stderr, "unexpected NULL CheckSpatialIndex(rowid-2)\n"); + sqlite3_free_table (results); + sqlite3_close (handle); + return -217; + } + if (strcmp (results[1], "-1") != 0) + { + fprintf (stderr, "unexpected CheckSpatialIndex(rowid-2): %s\n", + results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -218; + } + sqlite3_free_table (results); + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT CheckSpatialIndex('Councils', 'geom');", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RecoverSpatialIndex(rowid-2): %s\n", err_msg); + sqlite3_free (err_msg); + return -219; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: RecoverSpatialIndex(rowid-2) result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -220; + } + if (results[1] == NULL) + { + fprintf (stderr, "unexpected NULL RecoverSpatialIndex(rowid-2)\n"); + sqlite3_free_table (results); + sqlite3_close (handle); + return -221; + } + if (strcmp (results[1], "-1") != 0) + { + fprintf (stderr, "unexpected RecoverSpatialIndex(rowid-2): %s\n", + results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -222; + } + sqlite3_free_table (results); + + rows = 0; + columns = 0; + ret = sqlite3_get_table (handle, "SELECT CheckShadowedRowid('Councils');", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error CheckShadowedRowid(rowid-1): %s\n", err_msg); + sqlite3_free (err_msg); + return -223; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: CheckShadowedRowid(rowid-1) result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -224; + } + if (results[1] == NULL) + { + fprintf (stderr, "unexpected NULL CheckShadowedRowid(rowid-1)\n"); + sqlite3_free_table (results); + sqlite3_close (handle); + return -225; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "unexpected CheckShadowedRowid(rowid-1): %s\n", + results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -226; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (handle, "SELECT DisableSpatialIndex('Councils', 'geom');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DisableSpatialIndex(rowid) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -227; + } + + ret = + sqlite3_exec (handle, "DROP TABLE idx_councils_geom", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE(rowid) error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -228; + } + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT CreateSpatialIndex('Councils', 'geom');", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error CreateSpatialIndex(rowid-2): %s\n", err_msg); + sqlite3_free (err_msg); + return -229; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: CreateSpatialIndex(rowid-2) result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -230; + } + if (results[1] == NULL) + { + fprintf (stderr, "unexpected NULL CreateSpatialIndex(rowid-2)\n"); + sqlite3_free_table (results); + sqlite3_close (handle); + return -231; + } + if (strcmp (results[1], "-1") != 0) + { + fprintf (stderr, "unexpected CreateSpatialIndex(rowid-2): %s\n", + results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -232; + } + sqlite3_free_table (results); + + rows = 0; + columns = 0; + ret = sqlite3_get_table (handle, "SELECT CheckShadowedRowid('Councils');", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error CheckShadowedRowid(rowid-2): %s\n", err_msg); + sqlite3_free (err_msg); + return -233; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: CheckShadowedRowid(rowid-2) result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -234; + } + if (results[1] == NULL) + { + fprintf (stderr, "unexpected NULL CheckShadowedRowid(rowid-2)\n"); + sqlite3_free_table (results); + sqlite3_close (handle); + return -235; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, "unexpected CheckShadowedRowid(rowid-2): %s\n", + results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -236; + } + sqlite3_free_table (results); + + rows = 0; + columns = 0; + ret = + sqlite3_get_table (handle, + "SELECT CheckShadowedRowid('Councils_bad_name_not_existing');", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error CheckShadowedRowid(rowid-3): %s\n", err_msg); + sqlite3_free (err_msg); + return -237; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: CheckShadowedRowid(rowid-3) result: %i/%i.\n", + rows, columns); + sqlite3_free_table (results); + sqlite3_close (handle); + return -238; + } + if (results[1] != NULL) + { + fprintf (stderr, + "unexpected NOT NULL CheckShadowedRowid(rowid-3): %s\n", + results[1]); + sqlite3_free_table (results); + sqlite3_close (handle); + return -239; + } + sqlite3_free_table (results); + +#endif /* end ICONV conditional */ + +/* ok, succesfull termination */ + return 0; +} + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + +/* testing current style metadata layout >= v.4.0.0 */ + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + ret = do_test (handle, 0); + if (ret != 0) + { + fprintf (stderr, + "error while testing current style metadata layout\n"); + return ret; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -101; + } + + spatialite_cleanup_ex (cache); + +/* testing ROWID physical column */ + cache = spatialite_alloc_connection (); + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -102; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata()", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -103; + } + + ret = do_test_rowid (handle); + if (ret != 0) + { + fprintf (stderr, + "error while testing current style metadata layout (rowid column)\n"); + return ret; + } + + if (strcmp (sqlite3_libversion (), "3.8.2") >= 0) + { + /* testing WITHOUT ROWID (requires SQLIte 3.8.2 or later) */ + ret = do_test_without_rowid_true (handle); + if (ret != 0) + { + fprintf (stderr, + "error while testing current style metadata layout (WITHOUT ROWID / true)\n"); + return ret; + } + } + ret = do_test_without_rowid_false (handle); + if (ret != 0) + { + fprintf (stderr, + "error while testing current style metadata layout (WITHOUT ROWID / false)\n"); + return ret; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -104; + } + + spatialite_cleanup_ex (cache); + +/* testing legacy style metadata layout <= v.3.1.0 */ + cache = spatialite_alloc_connection (); + ret = + system + ("cp test-legacy-3.0.1.sqlite copy-spatialindex-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy legacy v.3.0.1 database\n"); + return -105; + } + ret = + sqlite3_open_v2 ("copy-spatialindex-legacy-3.0.1.sqlite", &handle, + SQLITE_OPEN_READWRITE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open legacy v.3.0.1 database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -106; + } + + spatialite_init_ex (handle, cache, 0); + + ret = do_test (handle, 1); + if (ret != 0) + { + fprintf (stderr, + "error while testing legacy style metadata layout\n"); + return ret; + } + + if (strcmp (sqlite3_libversion (), "3.8.2") >= 0) + { + /* testing WITHOUT ROWID (requires SQLIte 3.8.2 or later) */ + ret = do_test_without_rowid_true (handle); + if (ret != 0) + { + fprintf (stderr, + "error while testing legacy style metadata layout (WITHOUT ROWID / true)\n"); + return ret; + } + } + ret = do_test_without_rowid_false (handle); + if (ret != 0) + { + fprintf (stderr, + "error while testing current style metadata layout (WITHOUT ROWID / false)\n"); + return ret; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -107; + } + + spatialite_cleanup_ex (cache); + ret = unlink ("copy-spatialindex-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove legacy v.3.0.1 database\n"); + return -108; + } + +/* testing legacy style metadata layout <= v.3.1.0 (ROWID column) */ + cache = spatialite_alloc_connection (); + ret = + system + ("cp test-legacy-3.0.1.sqlite copy-spatialindex-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy legacy v.3.0.1 database\n"); + return -109; + } + ret = + sqlite3_open_v2 ("copy-spatialindex-legacy-3.0.1.sqlite", &handle, + SQLITE_OPEN_READWRITE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open legacy v.3.0.1 database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -110; + } + spatialite_init_ex (handle, cache, 0); + + ret = do_test_rowid (handle); + if (ret != 0) + { + fprintf (stderr, + "error while testing legacy style metadata layout (rowid column)\n"); + return ret; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -111; + } + + spatialite_cleanup_ex (cache); + ret = unlink ("copy-spatialindex-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove legacy v.3.0.1 database\n"); + return -112; + } + +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_sql_stmt.c b/src/spatialite/test/check_sql_stmt.c new file mode 100644 index 0000000..572d8c1 --- /dev/null +++ b/src/spatialite/test/check_sql_stmt.c @@ -0,0 +1,729 @@ +/* + + check_sql_stmt.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define _GNU_SOURCE +#include +#include +#include +#include + +#ifndef _WIN32 +#include +#include +#endif + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +#ifndef OMIT_GEOS /* including GEOS */ +#include +#endif + +#ifdef _WIN32 +#include "fnmatch4win.h" +#include "scandir4win.h" +#include "asprintf4win.h" +#include "fnmatch_impl4win.h" +#endif + +struct test_data +{ + char *test_case_name; + char *database_name; + char *sql_statement; + int expected_rows; + int expected_columns; + char **expected_results; + int *expected_precision; +}; + +struct db_conn +{ + sqlite3 *db_handle; + char *db_path; + int read_only; + const void *cache; +}; + +static void +close_connection (struct db_conn *conn) +{ + if (conn->db_path != NULL) + free (conn->db_path); + conn->db_path = NULL; + if (conn->db_handle != NULL) + sqlite3_close (conn->db_handle); + conn->db_handle = NULL; + if (conn->cache == NULL) + spatialite_cleanup (); +} + +static void +save_connection (struct db_conn *conn, const char *database_name, + sqlite3 * db_handle, int read_only, int empty_db) +{ + int len = strlen (database_name); + conn->db_handle = db_handle; + conn->read_only = read_only; + if (read_only) + { + conn->db_path = malloc (len - 2); + memcpy (conn->db_path, database_name, len - 3); + *(conn->db_path + len - 3) = '\0'; + } + else if (empty_db) + { + conn->db_path = malloc (9); + strcpy (conn->db_path, ":memory:"); + } + else + { + conn->db_path = malloc (len + 1); + strcpy (conn->db_path, database_name); + } +} + +static int +compare_path (const char *pth1, const char *pth2, int read_only) +{ + int ret = 0; + if (!read_only) + { + if (strcmp (pth1, pth2) == 0) + ret = 1; + } + else + { + if (strncmp (pth1, pth2, strlen (pth2) - 3) == 0) + ret = 1; + } + return ret; +} + +static int +load_dyn_extension (sqlite3 * db_handle) +{ + int ret; + char *err_msg = NULL; + sqlite3_enable_load_extension (db_handle, 1); + ret = + sqlite3_exec (db_handle, "SELECT load_extension('mod_spatialite')", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "load_extension() error: %s\n", err_msg); + sqlite3_free (err_msg); + return 0; + } + return 1; +} + +int +do_one_case (struct db_conn *conn, const struct test_data *data, + int load_extension) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + int i; + char **results; + int rows; + int columns; + int read_only = 0; + int empty_db = 0; + int not_memory_db = 0; + + fprintf (stderr, "Test case: %s\n", data->test_case_name); + if (strncmp + ("_RO", data->database_name + strlen (data->database_name) - 3, + strlen ("_RO")) == 0) + read_only = 1; + if (strcmp ("NEW:memory:", data->database_name) == 0) + empty_db = 1; + if (conn->db_handle != NULL) + { + if (empty_db) + ; + else if (compare_path (conn->db_path, data->database_name, read_only)) + { + if (conn->read_only == read_only) + { + db_handle = conn->db_handle; + goto skip_init; + } + } + close_connection (conn); + } + + if (conn->cache == NULL && !load_extension) + spatialite_init (0); + + /* This hack checks if the name ends with _RO */ + if (strncmp + ("_RO", data->database_name + strlen (data->database_name) - 3, + strlen ("_RO")) == 0) + { + fprintf (stderr, "opening read_only\n"); + read_only = 1; + ret = + sqlite3_open_v2 (data->database_name, &db_handle, + SQLITE_OPEN_READONLY, NULL); + } + else if (empty_db) + { + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, + NULL); + } + else + { + if (strcmp (data->database_name, ":memory:") != 0) + not_memory_db = 1; + ret = + sqlite3_open_v2 (data->database_name, &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, + NULL); + } + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open %s db: %s\n", data->database_name, + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + if (conn->cache != NULL) + spatialite_init_ex (db_handle, conn->cache, 0); + if (load_extension) + { + if (!load_dyn_extension (db_handle)) + { + sqlite3_close (db_handle); + db_handle = NULL; + return -3; + } + } + save_connection (conn, data->database_name, db_handle, read_only, empty_db); + + if (read_only || not_memory_db) + goto skip_init; + ret = + sqlite3_exec (db_handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + return -2; + } + skip_init: + + ret = + sqlite3_get_table (db_handle, data->sql_statement, &results, &rows, + &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -10; + } + if ((rows != data->expected_rows) || (columns != data->expected_columns)) + { + fprintf (stderr, "Unexpected error: bad result: %i/%i.\n", rows, + columns); + return -11; + } + for (i = 0; i < (data->expected_rows + 1) * data->expected_columns; ++i) + { + if (results[i] != NULL && data->expected_precision[i] == 0) + { + data->expected_precision[i] = strlen (results[i]); + } + if (results[i] == NULL) + { + if (strcmp ("(NULL)", data->expected_results[i]) == 0) + { + /* we expected this */ + continue; + } + else + { + fprintf (stderr, "Null value at %i.\n", i); + fprintf (stderr, "Expected value was: %s\n", + data->expected_results[i]); + return -12; + } + } + else if (strlen (results[i]) == 0) + { + fprintf (stderr, "zero length result at %i\n", i); + fprintf (stderr, "Expected value was : %s|\n", + data->expected_results[i]); + return -13; + } + else if (strncmp + (results[i], data->expected_results[i], + data->expected_precision[i]) != 0) + { + fprintf (stderr, "Unexpected value at %i: %s|\n", i, + results[i]); + fprintf (stderr, "Expected value was : %s|\n", + data->expected_results[i]); + return -14; + } + } + sqlite3_free_table (results); + + return 0; +} + +int +get_clean_line (FILE * f, char **line) +{ + size_t len = 0; + ssize_t num_read = 0; + ssize_t end = 0; + char *tmp_line = NULL; + +#if !defined(_WIN32) &&!defined(__APPLE__) +/* expecting to be on a sane minded platform [linux-like] */ + num_read = getline (&(tmp_line), &len, f); +#else +/* neither Windows nor MacOsX support getline() */ + len = 1024 * 1024; + tmp_line = malloc (len); + if (fgets (tmp_line, len, f) == NULL) + { + free (tmp_line); + num_read = -1; + } + else + num_read = strlen (tmp_line); +#endif + + if (num_read < 1) + { + fprintf (stderr, "failed to read at %li: %li\n", ftell (f), num_read); + return -1; + } + /* trim the trailing new line and any comments */ + for (end = 0; end < num_read; ++end) + { + if (*(tmp_line + end) == '\n') + break; + if (*(tmp_line + end) == '#') + break; + } + /* trim any trailing spaces */ + while (end > 0) + { + if (*(tmp_line + end - 1) != ' ') + { + break; + } + *(tmp_line + end - 1) = '\0'; + end--; + } + *line = malloc (end + 1); + memcpy (*line, tmp_line, end); + (*line)[end] = '\0'; + free (tmp_line); + return 0; +} + +void +handle_precision (char *expected_result, int *precision) +{ + int i; + int prcsn; + int result_len = strlen (expected_result); + *precision = 0; + for (i = result_len - 1; i >= 0; --i) + { + if (expected_result[i] == ':') + { + prcsn = atoi (&(expected_result[i + 1])); + if (prcsn > 0) + { + expected_result[i] = '\0'; + *precision = prcsn; + } + break; + } + } +} + +struct test_data * +read_one_case (const char *filepath) +{ + int num_results; + int i; + char *tmp; + FILE *f; + struct test_data *data; + + f = fopen (filepath, "r"); + + data = malloc (sizeof (struct test_data)); + get_clean_line (f, &(data->test_case_name)); + get_clean_line (f, &(data->database_name)); + get_clean_line (f, &(data->sql_statement)); + get_clean_line (f, &(tmp)); + data->expected_rows = atoi (tmp); + free (tmp); + get_clean_line (f, &(tmp)); + data->expected_columns = atoi (tmp); + free (tmp); + num_results = (data->expected_rows + 1) * data->expected_columns; + data->expected_results = malloc (num_results * sizeof (char *)); + data->expected_precision = malloc (num_results * sizeof (int)); + for (i = 0; i < num_results; ++i) + { + get_clean_line (f, &(data->expected_results[i])); + handle_precision (data->expected_results[i], + &(data->expected_precision[i])); + } + fclose (f); + return data; +} + +void +cleanup_test_data (struct test_data *data) +{ + int i; + int num_results = (data->expected_rows + 1) * (data->expected_columns); + + for (i = 0; i < num_results; ++i) + { + free (data->expected_results[i]); + } + free (data->expected_results); + free (data->expected_precision); + free (data->test_case_name); + free (data->database_name); + free (data->sql_statement); + free (data); +} + +int +test_case_filter (const struct dirent *entry) +{ + return (fnmatch ("*.testcase", entry->d_name, FNM_PERIOD) == 0); +} + +int +run_subdir_test (const char *subdirname, struct db_conn *conn, + int load_extension) +{ + struct dirent **namelist; + int n; + int i; + int result = 0; + + n = scandir (subdirname, &namelist, test_case_filter, alphasort); + if (n < 0) + { + perror ("scandir"); + return -1; + } + + for (i = 0; i < n; ++i) + { + struct test_data *data; + char *path; + if (asprintf (&path, "%s/%s", subdirname, namelist[i]->d_name) < 0) + { + return -1; + } + data = read_one_case (path); + free (path); + + result = do_one_case (conn, data, load_extension); + + cleanup_test_data (data); + if (result != 0) + { + return result; + } + free (namelist[i]); + } + free (namelist); + return result; +} + +int +run_all_testcases (struct db_conn *conn, int load_extension) +{ + int ret; + int result = 0; + const char *security_level; + + result = run_subdir_test ("sql_stmt_tests", conn, load_extension); + if (result != 0) + { + return result; + } + + security_level = getenv ("SPATIALITE_SECURITY"); + if (security_level == NULL) + ; + else if (strcasecmp (security_level, "relaxed") == 0) + { + result = + run_subdir_test ("sql_stmt_security_tests", conn, load_extension); + if (result != 0) + { + return result; + } + } + +#ifndef OMIT_MATHSQL /* only if MATHSQL is supported */ + result = run_subdir_test ("sql_stmt_mathsql_tests", conn, load_extension); + if (result != 0) + { + return result; + } +#endif /* end MATHSQL conditional */ + +#ifndef OMIT_PROJ /* only if PROJ is supported */ + result = run_subdir_test ("sql_stmt_proj_tests", conn, load_extension); + if (result != 0) + { + return result; + } +#endif /* end PROJ conditional */ + +#ifndef OMIT_GEOS /* only if GEOS is supported */ + if (strcmp (GEOSversion (), "3.3") < 0) + { + /* + skipping GEOS tests if some obsolete version is found + + rationale: obsolete versions may return substantially + different results, thus causing many testcases to fail + */ + fprintf (stderr, + "WARNING: skipping GEOS testcases; obsolete version found !!!\n"); + goto skip_geos; + } + ret = system ("cp test_geos.sqlite test_geos_x.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy test_geos database\n"); + return -1; + } + + result = run_subdir_test ("sql_stmt_geos_tests", conn, load_extension); + if (result != 0) + { + return result; + } + + ret = unlink ("test_geos_x.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove test_geos_x database\n"); + return -20; + } + skip_geos: +#endif /* end GEOS conditional */ + +#ifdef GEOS_ADVANCED /* only if GEOS_ADVANCED is supported */ + if (strcmp (GEOSversion (), "3.4") < 0) + { + /* + skipping GEOS tests if some obsolete version is found + + rationale: obsolete versions may return substantially + different results, thus causing many testcases to fail + */ + fprintf (stderr, + "WARNING: skipping GEOS_ADVANCED testcases; obsolete version found !!!\n"); + goto skip_geos_advanced; + } + + result = + run_subdir_test ("sql_stmt_geosadvanced_tests", conn, load_extension); + if (result != 0) + { + return result; + } + + skip_geos_advanced: +#endif /* end GEOS_ADVANCED conditional */ + +#ifdef ENABLE_LWGEOM /* only if LWGEOM is supported */ + result = run_subdir_test ("sql_stmt_lwgeom_tests", conn, load_extension); + if (result != 0) + { + return result; + } + +#endif /* end LWGEOM conditional */ + +#ifdef ENABLE_LIBXML2 /* only if LIBXML2 is supported */ + result = run_subdir_test ("sql_stmt_libxml2_tests", conn, load_extension); + if (result != 0) + { + return result; + } + + security_level = getenv ("SPATIALITE_SECURITY"); + if (security_level == NULL) + ; + else if (strcasecmp (security_level, "relaxed") == 0) + { + result = + run_subdir_test ("sql_stmt_libxml2_tests", conn, load_extension); + if (result != 0) + { + return result; + } + } + +#endif /* end LIBXML2 conditional */ + +#ifdef ENABLE_GEOPACKAGE /* only if GeoPackage support is enabled */ + result = + run_subdir_test ("sql_stmt_geopackage_tests", conn, load_extension); + if (result != 0) + { + return result; + } + +#endif /* end GEOPACKAGE conditional */ + + return result; +} + +int +run_specified_testcases (int argc, char *argv[], struct db_conn *conn, + int load_extension) +{ + int result = 0; + int i = 0; + + for (i = 1; i < argc; ++i) + { + struct test_data *data; + data = read_one_case (argv[i]); + result = do_one_case (conn, data, load_extension); + cleanup_test_data (data); + if (result != 0) + { + break; + } + } + return result; +} + +int +main (int argc, char *argv[]) +{ + int result = 0; + void *cache = spatialite_alloc_connection (); + struct db_conn conn; + conn.db_path = NULL; + conn.db_handle = NULL; + conn.cache = cache; + +/* testing in current mode */ + if (argc == 1) + { + result = run_all_testcases (&conn, 0); + } + else + { + result = run_specified_testcases (argc, argv, &conn, 0); + } + if (result != 0) + { + /* it looks like if MinGW applies some wrong assumption */ + /* some negative values are incorrectly reported to be OK */ + /* forcing -1 seems to resolve this issue */ + result = -1; + } + + close_connection (&conn); + spatialite_cleanup_ex (conn.cache); + conn.cache = NULL; + + if (result == 0) + { + /* testing again in legacy mode */ + fprintf (stderr, + "\n****************** testing again in legacy mode\n\n"); + if (argc == 1) + { + result = run_all_testcases (&conn, 0); + } + else + { + result = run_specified_testcases (argc, argv, &conn, 0); + } + close_connection (&conn); + } + + if (result == 0) + { + /* testing again in load_extension mode */ + fprintf (stderr, + "\n****************** testing again in load_extension mode\n\n"); + if (argc == 1) + { + result = run_all_testcases (&conn, 1); + } + else + { + result = run_specified_testcases (argc, argv, &conn, 1); + } + close_connection (&conn); + } + + spatialite_shutdown (); + return result; +} diff --git a/src/spatialite/test/check_styling.c b/src/spatialite/test/check_styling.c new file mode 100644 index 0000000..84df8eb --- /dev/null +++ b/src/spatialite/test/check_styling.c @@ -0,0 +1,743 @@ + +/* + + check_styling.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +static unsigned char * +load_blob (const char *path, int *blob_len) +{ +/* loading an external image */ + unsigned char *blob; + int sz = 0; + int rd; + FILE *fl = fopen (path, "rb"); + if (!fl) + { + fprintf (stderr, "cannot open \"%s\"\n", path); + return NULL; + } + if (fseek (fl, 0, SEEK_END) == 0) + sz = ftell (fl); + blob = (unsigned char *) malloc (sz); + *blob_len = sz; + rewind (fl); + rd = fread (blob, 1, sz, fl); + if (rd != sz) + { + fprintf (stderr, "read error \"%s\"\n", path); + return NULL; + } + fclose (fl); + return blob; +} + +static unsigned char * +load_xml (const char *path, int *len) +{ +/* loading an external XML */ + unsigned char *xml; + int sz = 0; + int rd; + FILE *fl = fopen (path, "rb"); + if (!fl) + { + fprintf (stderr, "cannot open \"%s\"\n", path); + return NULL; + } + if (fseek (fl, 0, SEEK_END) == 0) + sz = ftell (fl); + xml = malloc (sz + 1); + *len = sz; + rewind (fl); + rd = fread (xml, 1, sz, fl); + if (rd != sz) + { + fprintf (stderr, "read error \"%s\"\n", path); + return NULL; + } + fclose (fl); + xml[rd] = '\0'; + return xml; +} + +static char * +build_hex_blob (const unsigned char *blob, int blob_len) +{ +/* building an HEX blob */ + int i; + const unsigned char *p_in = blob; + char *hex = malloc ((blob_len * 2) + 1); + char *p_out = hex; + for (i = 0; i < blob_len; i++) + { + sprintf (p_out, "%02x", *p_in); + p_in++; + p_out += 2; + } + return hex; +} + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + char **results; + int rows; + int columns; + unsigned char *blob; + int blob_len; + char *hexBlob; + unsigned char *xml; + int len; + char *sql; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1, 'WGS84')", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Unexpected InitSpatialMetadata result: %i, (%s)\n", + ret, err_msg); + sqlite3_free (err_msg); + return -2; + } + +#ifdef ENABLE_LIBXML2 /* only if LIBXML2 is supported */ + + ret = + sqlite3_get_table (handle, "SELECT CreateStylingTables(1)", &results, + &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error CreateStylingTables: %s\n", err_msg); + sqlite3_free (err_msg); + return -3; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -4; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #0 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -5; + } + sqlite3_free_table (results); + + blob = load_blob ("empty.png", &blob_len); + if (blob == NULL) + return -6; + hexBlob = build_hex_blob (blob, blob_len); + free (blob); + if (hexBlob == NULL) + return -7; + sql = + sqlite3_mprintf ("SELECT RegisterExternalGraphic('url-A', x%Q)", + hexBlob); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RegisterExternalGraphic #1: %s\n", err_msg); + sqlite3_free (err_msg); + return -8; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -9; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #1 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -10; + } + sqlite3_free_table (results); + + sql = + sqlite3_mprintf + ("SELECT RegisterExternalGraphic('url-A', x%Q, 'title', 'abstract', 'file_name')", + hexBlob); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + free (hexBlob); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RegisterExternalGraphic #2: %s\n", err_msg); + sqlite3_free (err_msg); + return -11; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -12; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #2 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -13; + } + sqlite3_free_table (results); + + xml = load_xml ("thunderstorm_mild.svg", &len); + if (xml == NULL) + return -14; + gaiaXmlToBlob (cache, xml, len, 1, NULL, &blob, &blob_len, NULL, NULL); + free (xml); + if (blob == NULL) + { + fprintf (stderr, "this is not a well-formed XML !!!\n"); + return -15; + } + hexBlob = build_hex_blob (blob, blob_len); + free (blob); + if (hexBlob == NULL) + return -16; + sql = + sqlite3_mprintf + ("SELECT RegisterExternalGraphic('url-B', x%Q, 'title', 'abstract', 'file_name')", + hexBlob); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RegisterExternalGraphic #3: %s\n", err_msg); + sqlite3_free (err_msg); + return -17; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -18; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #3 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -19; + } + sqlite3_free_table (results); + + sql = + sqlite3_mprintf ("SELECT RegisterExternalGraphic('url-B', x%Q)", + hexBlob); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + free (hexBlob); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RegisterExternalGraphic #4: %s\n", err_msg); + sqlite3_free (err_msg); + return -20; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -21; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #4 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -22; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (handle, + "CREATE TABLE table1 (id INTEGER PRIMARY KEY AUTOINCREMENT)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error Create Table table1: %s\n", err_msg); + sqlite3_free (err_msg); + return -23; + } + ret = + sqlite3_get_table (handle, + "SELECT AddGeometryColumn('table1', 'geom', 4326, 'POINT', 'XY')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error AddGeometryColumn: %s\n", err_msg); + sqlite3_free (err_msg); + return -24; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -25; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #5 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -26; + } + sqlite3_free_table (results); + + xml = load_xml ("stazioni_se.xml", &len); + if (xml == NULL) + return -27; + gaiaXmlToBlob (cache, xml, len, 1, NULL, &blob, &blob_len, NULL, NULL); + free (xml); + if (blob == NULL) + { + fprintf (stderr, "this is not a well-formed XML !!!\n"); + return -28; + } + hexBlob = build_hex_blob (blob, blob_len); + free (blob); + if (hexBlob == NULL) + return -29; + sql = + sqlite3_mprintf + ("SELECT RegisterVectorStyledLayer('table1', 'geom', x%Q)", hexBlob); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RegisterVectorStyledLayer #6: %s\n", err_msg); + sqlite3_free (err_msg); + return -30; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -31; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #6 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -32; + } + sqlite3_free_table (results); + + sql = + sqlite3_mprintf + ("SELECT RegisterVectorStyledLayer('table1', 'geom', 0, x%Q)", hexBlob); + free (hexBlob); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RegisterVectorStyledLayer #7: %s\n", err_msg); + sqlite3_free (err_msg); + return -33; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -34; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #7 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -35; + } + sqlite3_free_table (results); + + xml = load_xml ("raster_se.xml", &len); + if (xml == NULL) + return -36; + gaiaXmlToBlob (cache, xml, len, 1, NULL, &blob, &blob_len, NULL, NULL); + free (xml); + if (blob == NULL) + { + fprintf (stderr, "this is not a well-formed XML !!!\n"); + return -37; + } + hexBlob = build_hex_blob (blob, blob_len); + free (blob); + if (hexBlob == NULL) + return -38; + sql = + sqlite3_mprintf ("SELECT RegisterRasterStyledLayer('srtm', x%Q)", + hexBlob); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RegisterRasterStyledLayer #8: %s\n", err_msg); + sqlite3_free (err_msg); + return -39; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -40; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #8 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -41; + } + sqlite3_free_table (results); + + sql = + sqlite3_mprintf ("SELECT RegisterRasterStyledLayer('srtm', 0, x%Q)", + hexBlob); + free (hexBlob); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RegisterRasterStyledLayer #9: %s\n", err_msg); + sqlite3_free (err_msg); + return -42; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -43; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #9 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -44; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, + "SELECT RegisterStyledGroup('group', 'srtm')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RegisterStyledGroup #10: %s\n", err_msg); + sqlite3_free (err_msg); + return -45; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -46; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #10 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -47; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, + "SELECT RegisterStyledGroup('group', 'table1', 'geom')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RegisterStyledGroup #11: %s\n", err_msg); + sqlite3_free (err_msg); + return -48; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -49; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #12 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -50; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, + "SELECT RegisterStyledGroup('group', 'srtm', 4)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RegisterStyledGroup #13: %s\n", err_msg); + sqlite3_free (err_msg); + return -51; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -52; + } + if (strcmp (results[1 * columns + 0], "0") != 0) + { + fprintf (stderr, "Unexpected #13 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -53; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, + "SELECT RegisterStyledGroup('group', 'table1', 'geom', 1)", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RegisterStyledGroup #14: %s\n", err_msg); + sqlite3_free (err_msg); + return -54; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -55; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #14 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -56; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, + "SELECT SetStyledGroupInfos('group', 'title', 'abstract')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error SetStyledGroupInfos #15: %s\n", err_msg); + sqlite3_free (err_msg); + return -57; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -58; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #15 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -59; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (handle, + "SELECT SetStyledGroupInfos('group-bis', 'title', 'abstract')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error SetStyledGroupInfos #16: %s\n", err_msg); + sqlite3_free (err_msg); + return 60; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -61; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #16 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -62; + } + sqlite3_free_table (results); + + xml = load_xml ("sld_sample.xml", &len); + if (xml == NULL) + return -63; + gaiaXmlToBlob (cache, xml, len, 1, NULL, &blob, &blob_len, NULL, NULL); + free (xml); + if (blob == NULL) + { + fprintf (stderr, "this is not a well-formed XML !!!\n"); + return -64; + } + hexBlob = build_hex_blob (blob, blob_len); + free (blob); + if (hexBlob == NULL) + return -65; + sql = sqlite3_mprintf ("SELECT RegisterGroupStyle('group', x%Q)", hexBlob); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RegisterGroupStyle #1: %s\n", err_msg); + sqlite3_free (err_msg); + return -66; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -67; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #1 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -68; + } + sqlite3_free_table (results); + + sql = + sqlite3_mprintf ("SELECT RegisterGroupStyle('group', 0, x%Q)", hexBlob); + free (hexBlob); + ret = sqlite3_get_table (handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error RegisterGroupStyle #2: %s\n", err_msg); + sqlite3_free (err_msg); + return -69; + } + if ((rows != 1) || (columns != 1)) + { + sqlite3_free_table (results); + fprintf (stderr, "Unexpected row / column count: %i x %i\n", rows, + columns); + return -70; + } + if (strcmp (results[1 * columns + 0], "1") != 0) + { + fprintf (stderr, "Unexpected #2 result (got %s, expected 1)", + results[1 * columns + 0]); + sqlite3_free_table (results); + return -71; + } + sqlite3_free_table (results); + + +#endif + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -57; + } + + spatialite_cleanup_ex (cache); + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_version.c b/src/spatialite/test/check_version.c new file mode 100644 index 0000000..567fdc7 --- /dev/null +++ b/src/spatialite/test/check_version.c @@ -0,0 +1,68 @@ +/* + + check_version.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +int +main (int argc, char *argv[]) +{ + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + if (strcmp (spatialite_version (), VERSION) != 0) + { + fprintf (stderr, "SpatiaLite version mismatch: %s and %s\n", + VERSION, spatialite_version ()); + return -1; + } + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_virtual_ovflw.c b/src/spatialite/test/check_virtual_ovflw.c new file mode 100644 index 0000000..1222375 --- /dev/null +++ b/src/spatialite/test/check_virtual_ovflw.c @@ -0,0 +1,452 @@ +/* + + check_virtual_ovflw.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define _GNU_SOURCE +#include +#include +#include +#include + +#include "config.h" +#include "sqlite3.h" +#include "spatialite.h" + +int +main (int argc, char *argv[]) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + char **results; + int rows; + int columns; + int suffix_len = 16 * 1024; /* 16 KB suffix */ + char *suffix; + char *table; + char *sql; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + spatialite_init_ex (db_handle, cache, 0); + + ret = + sqlite3_exec (db_handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return -2; + } + +/* setting up very long table and column names */ + suffix = malloc (suffix_len); + memset (suffix, 'z', suffix_len); + suffix[suffix_len - 1] = '\0'; + +#ifndef OMIT_FREEXL /* only if FreeXL is supported */ + table = sqlite3_mprintf ("xltest_%s", suffix); + + sql = + sqlite3_mprintf + ("create VIRTUAL TABLE %s USING VirtualXL(\"testcase1.xls\");", table); + ret = sqlite3_exec (db_handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualXL error: %s\n", err_msg); + sqlite3_free (err_msg); + return -3; + } + + sql = sqlite3_mprintf ("select col_2, col_4, col_5, col_7, rowid " + "from %s WHERE col_2 = \"Canal Creek\";", table); + ret = + sqlite3_get_table (db_handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -4; + } + if ((rows != 2) || (columns != 5)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -5; + } + if (strcmp (results[0], "col_2") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -6; + } + if (strcmp (results[5], "Canal Creek") != 0) + { + fprintf (stderr, "Unexpected error: name5() bad result: %s.\n", + results[5]); + return -7; + } + if (strncmp (results[6], "-27.86667", 9) != 0) + { + fprintf (stderr, "Unexpected error: lat1() bad result: %s.\n", + results[6]); + return -8; + } + if (strncmp (results[7], "151.51667", 9) != 0) + { + fprintf (stderr, "Unexpected error: lon2() bad result: %s.\n", + results[7]); + return -9; + } + if (strcmp (results[10], "Canal Creek") != 0) + { + fprintf (stderr, "Unexpected error: name10() bad result: %s.\n", + results[10]); + return -10; + } + sqlite3_free_table (results); + + sqlite3_free (table); +#endif /* end FreeXL conditional */ + +#ifndef OMIT_ICONV /* only if ICONV is supported */ + table = sqlite3_mprintf ("shapetest_%s", suffix); + + sql = + sqlite3_mprintf + ("create VIRTUAL TABLE %s USING VirtualShape(\"shapetest1\", UTF-8, 4326);", + table); + ret = sqlite3_exec (db_handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualShape error: %s\n", err_msg); + sqlite3_free (err_msg); + return -11; + } + sql = sqlite3_mprintf ("SELECT RegisterVirtualGeometry(%Q)", table); + ret = + sqlite3_get_table (db_handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RegisterVirtualGeometry error: %s\n", err_msg); + sqlite3_free (err_msg); + return -12; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "RegisterVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -13; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "RegisterVirtualGeometry Unexpected error: header() bad result: %s.\n", + results[1]); + return -14; + } + sqlite3_free_table (results); + + sql = + sqlite3_mprintf + ("select testcase1, testcase2, AsText(Geometry) from %s where testcase2 < 20;", + table); + ret = + sqlite3_get_table (db_handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -15; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -16; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -17; + } + if (strcmp (results[3], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[3]); + return -18; + } + if (strcmp (results[4], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[4]); + return -19; + } + if (strcmp (results[5], "POINT(3480766.311245 4495355.740524)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -20; + } + sqlite3_free_table (results); + + sql = sqlite3_mprintf ("SELECT DropVirtualGeometry(%Q)", table); + ret = + sqlite3_get_table (db_handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DropVirtualGeometry error: %s\n", err_msg); + sqlite3_free (err_msg); + return -21; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "DropVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -22; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "DropVirtualGeometry Unexpected error: header() bad result: %s.\n", + results[0]); + return -23; + } + sqlite3_free_table (results); + + sql = + sqlite3_mprintf + ("create VIRTUAL TABLE %s USING VirtualDBF(shapetest1.dbf, UTF-8);", + table); + ret = sqlite3_exec (db_handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualDBF error: %s\n", err_msg); + sqlite3_free (err_msg); + return -24; + } + + sql = + sqlite3_mprintf + ("select testcase1, testcase2 from %s where testcase2 < 20;", table); + ret = + sqlite3_get_table (db_handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -25; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -26; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -27; + } + if (strcmp (results[2], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[2]); + return -28; + } + if (strcmp (results[3], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[3]); + return -29; + } + sqlite3_free_table (results); + + sql = sqlite3_mprintf ("DROP TABLE %s;", table); + ret = sqlite3_exec (db_handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -30; + } + + sqlite3_free (table); +#endif /* end ICONV conditional */ + + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + + ret = system ("cp sql_stmt_tests/testdb1.sqlite testdb1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy testdb1.sqlite database\n"); + return -131; + } + cache = spatialite_alloc_connection (); + ret = + sqlite3_open_v2 ("testdb1.sqlite", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open testdb1.sqlite db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -31; + } + + spatialite_init_ex (db_handle, cache, 0); + + table = sqlite3_mprintf ("roads_net_%s", suffix); + + sql = + sqlite3_mprintf + ("create VIRTUAL TABLE %s USING VirtualNetwork(\"roads_net_data\");", + table); + ret = sqlite3_exec (db_handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualNetwork error: %s\n", err_msg); + sqlite3_free (err_msg); + return -32; + } + + sql = + sqlite3_mprintf + ("SELECT NodeFrom, NodeTo FROM %s WHERE NodeTo = 29 AND NodeFrom = 32;", + table); + ret = + sqlite3_get_table (db_handle, sql, &results, &rows, &columns, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -33; + } + if ((rows != 4) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -34; + } + if (strcmp (results[0], "NodeFrom") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -35; + } + if (strcmp (results[2], "32") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[2]); + return -36; + } + if (strcmp (results[3], "29") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[3]); + return -37; + } + sqlite3_free_table (results); + + sql = sqlite3_mprintf ("DROP TABLE %s;", table); + ret = sqlite3_exec (db_handle, sql, NULL, NULL, &err_msg); + sqlite3_free (sql); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -38; + } + + sqlite3_free (table); + + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + ret = unlink ("testdb1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove testdb1 database\n"); + return -39; + } + + free (suffix); + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_virtualbbox.c b/src/spatialite/test/check_virtualbbox.c new file mode 100644 index 0000000..cf9d81b --- /dev/null +++ b/src/spatialite/test/check_virtualbbox.c @@ -0,0 +1,604 @@ +/* + + check_virtualbbox.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define _GNU_SOURCE +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +int +main (int argc, char *argv[]) +{ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + spatialite_init_ex (db_handle, cache, 0); + + ret = + sqlite3_exec (db_handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return -2; + } + +/* creating the BoundingBox table */ + ret = sqlite3_exec (db_handle, "CREATE TABLE BBox_Test (pk_uid INTEGER, " + "min_x DOUBLE, min_y DOUBLE, max_x DOUBLE, max_y DOUBLE, srid INTEGER, " + "name TEXT, count INTEGER, measure DOUBLE, odd BLOB)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return -3; + } + +/* inserting few rows into the BoundingBox table */ + ret = sqlite3_exec (db_handle, "INSERT INTO BBox_Test " + "(pk_uid, min_x, min_y, max_x, max_y, srid, name, count, measure, odd) " + "VALUES (1, 1, 2, 3, 4, 4326, 'alpha', 10, 10.1, zeroblob(4))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT #1 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return -4; + } + ret = sqlite3_exec (db_handle, "INSERT INTO BBox_Test " + "(pk_uid, min_x, min_y, max_x, max_y, srid, name, count, measure, odd) " + "VALUES (2, 2, 3, 4, 5, 4326, 'beta', 20, 20.2, zeroblob(4))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT #2 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return -5; + } + ret = sqlite3_exec (db_handle, "INSERT INTO BBox_Test " + "(pk_uid, min_x, min_y, max_x, max_y, srid, name, count, measure, odd) " + "VALUES (3, 3, 4, 5, 6, 3003, 'gamma', 30, 30.3, NULL)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT #3 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return -6; + } + ret = sqlite3_exec (db_handle, "INSERT INTO BBox_Test " + "(pk_uid, min_x, min_y, max_x, max_y, srid, name, count, measure, odd) " + "VALUES (4, 1, 2, NULL, 4, 4326, 'delta', 40, NULL, NULL)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT #4 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return -7; + } + ret = sqlite3_exec (db_handle, "INSERT INTO BBox_Test " + "(pk_uid, min_x, min_y, max_x, max_y, srid, name, count, measure, odd) " + "VALUES (5, 1, 2, 3, 4, NULL, 'epsilon', NULL, NULL, NULL)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT #5 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return -8; + } + +/* creating the VirtualBBox table #1 */ + ret = sqlite3_exec (db_handle, "CREATE VIRTUAL TABLE test1 USING " + "VirtualBBox('BBox_Test', 'min_x', min_y, \"max_x\", 'max_y', " + "srid, 0, pk_uid, name, count, measure, odd)", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE VIRTUAL TABLE #1 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return -9; + } + +/* testing the VirtualBBox table #1 */ + ret = + sqlite3_get_table (db_handle, + "SELECT ROWID, pk_uid, name, count, measure, Length(odd), GeometryType(Geometry), Srid(Geometry) FROM test1", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -10; + } + if ((rows != 5) || (columns != 8)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -11; + } + if (strcasecmp (results[0], "ROWID") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -12; + } + if (strcasecmp (results[1], "pk_uid") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[1]); + return -13; + } + if (strcasecmp (results[2], "name") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[2]); + return -14; + } + if (strcasecmp (results[3], "count") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[3]); + return -15; + } + if (strcasecmp (results[4], "measure") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[4]); + return -16; + } + if (strcasecmp (results[5], "Length(odd)") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[5]); + return -17; + } + if (strcasecmp (results[6], "GeometryType(Geometry)") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[6]); + return -18; + } + if (strcasecmp (results[7], "Srid(Geometry)") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[7]); + return -19; + } + if (strcmp (results[8], "1") != 0) + { + fprintf (stderr, "Unexpected error: row-1 bad result: %s.\n", + results[8]); + return -20; + } + if (strcmp (results[9], "1") != 0) + { + fprintf (stderr, "Unexpected error: row-1 bad result: %s.\n", + results[9]); + return -21; + } + if (strcmp (results[10], "alpha") != 0) + { + fprintf (stderr, "Unexpected error: row-1 bad result: %s.\n", + results[10]); + return -22; + } + if (strcmp (results[11], "10") != 0) + { + fprintf (stderr, "Unexpected error: row-1 bad result: %s.\n", + results[11]); + return -23; + } + if (strcmp (results[12], "10.1") != 0) + { + fprintf (stderr, "Unexpected error: row-1 bad result: %s.\n", + results[12]); + return -24; + } + if (strcmp (results[13], "4") != 0) + { + fprintf (stderr, "Unexpected error: row-1 bad result: %s.\n", + results[13]); + return -25; + } + if (strcmp (results[14], "POLYGON") != 0) + { + fprintf (stderr, "Unexpected error: row-1 bad result: %s.\n", + results[14]); + return -26; + } + if (strcmp (results[15], "4326") != 0) + { + fprintf (stderr, "Unexpected error: row-1 bad result: %s.\n", + results[15]); + return -27; + } + if (strcmp (results[16], "2") != 0) + { + fprintf (stderr, "Unexpected error: row-2 bad result: %s.\n", + results[16]); + return -28; + } + if (strcmp (results[17], "2") != 0) + { + fprintf (stderr, "Unexpected error: row-2 bad result: %s.\n", + results[17]); + return -29; + } + if (strcmp (results[18], "beta") != 0) + { + fprintf (stderr, "Unexpected error: row-2 bad result: %s.\n", + results[18]); + return -30; + } + if (strcmp (results[19], "20") != 0) + { + fprintf (stderr, "Unexpected error: row-2 bad result: %s.\n", + results[19]); + return -31; + } + if (strcmp (results[20], "20.2") != 0) + { + fprintf (stderr, "Unexpected error: row-2 bad result: %s.\n", + results[20]); + return -32; + } + if (strcmp (results[21], "4") != 0) + { + fprintf (stderr, "Unexpected error: row-2 bad result: %s.\n", + results[21]); + return -33; + } + if (strcmp (results[22], "POLYGON") != 0) + { + fprintf (stderr, "Unexpected error: row-2 bad result: %s.\n", + results[22]); + return -34; + } + if (strcmp (results[23], "4326") != 0) + { + fprintf (stderr, "Unexpected error: row-2 bad result: %s.\n", + results[23]); + return -35; + } + if (strcmp (results[24], "3") != 0) + { + fprintf (stderr, "Unexpected error: row-3 bad result: %s.\n", + results[24]); + return -36; + } + if (strcmp (results[25], "3") != 0) + { + fprintf (stderr, "Unexpected error: row-3 bad result: %s.\n", + results[25]); + return -37; + } + if (strcmp (results[26], "gamma") != 0) + { + fprintf (stderr, "Unexpected error: row-3 bad result: %s.\n", + results[26]); + return -38; + } + if (strcmp (results[27], "30") != 0) + { + fprintf (stderr, "Unexpected error: row-3 bad result: %s.\n", + results[27]); + return -39; + } + if (strcmp (results[28], "30.3") != 0) + { + fprintf (stderr, "Unexpected error: row-3 bad result: %s.\n", + results[28]); + return -40; + } + if (results[29] != NULL) + { + fprintf (stderr, "Unexpected error: row-3 bad result: %s.\n", + results[29]); + return -41; + } + if (strcmp (results[30], "POLYGON") != 0) + { + fprintf (stderr, "Unexpected error: row-3 bad result: %s.\n", + results[30]); + return -42; + } + if (strcmp (results[31], "3003") != 0) + { + fprintf (stderr, "Unexpected error: row-3 bad result: %s.\n", + results[31]); + return -43; + } + if (strcmp (results[32], "4") != 0) + { + fprintf (stderr, "Unexpected error: row-4 bad result: %s.\n", + results[33]); + return -44; + } + if (strcmp (results[33], "4") != 0) + { + fprintf (stderr, "Unexpected error: row-4 bad result: %s.\n", + results[33]); + return -45; + } + if (strcmp (results[34], "delta") != 0) + { + fprintf (stderr, "Unexpected error: row-4 bad result: %s.\n", + results[34]); + return -46; + } + if (strcmp (results[35], "40") != 0) + { + fprintf (stderr, "Unexpected error: row-4 bad result: %s.\n", + results[35]); + return -47; + } + if (results[36] != NULL) + { + fprintf (stderr, "Unexpected error: row-4 bad result: %s.\n", + results[36]); + return -48; + } + if (results[37] != NULL) + { + fprintf (stderr, "Unexpected error: row-4 bad result: %s.\n", + results[37]); + return -49; + } + if (results[38] != NULL) + { + fprintf (stderr, "Unexpected error: row-4 bad result: %s.\n", + results[38]); + return -50; + } + if (results[39] != NULL) + { + fprintf (stderr, "Unexpected error: row-4 bad result: %s.\n", + results[39]); + return -51; + } + if (strcmp (results[40], "5") != 0) + { + fprintf (stderr, "Unexpected error: row-5 bad result: %s.\n", + results[40]); + return -52; + } + if (strcmp (results[41], "5") != 0) + { + fprintf (stderr, "Unexpected error: row-5 bad result: %s.\n", + results[41]); + return -53; + } + if (strcmp (results[42], "epsilon") != 0) + { + fprintf (stderr, "Unexpected error: row-5 bad result: %s.\n", + results[42]); + return -54; + } + if (results[43] != NULL) + { + fprintf (stderr, "Unexpected error: row-5 bad result: %s.\n", + results[43]); + return -55; + } + if (results[44] != NULL) + { + fprintf (stderr, "Unexpected error: row-5 bad result: %s.\n", + results[44]); + return -56; + } + if (results[45] != NULL) + { + fprintf (stderr, "Unexpected error: row-5 bad result: %s.\n", + results[45]); + return -57; + } + if (strcmp (results[46], "POLYGON") != 0) + { + fprintf (stderr, "Unexpected error: row-5 bad result: %s.\n", + results[46]); + return -58; + } + if (strcmp (results[47], "0") != 0) + { + fprintf (stderr, "Unexpected error: row-5 bad result: %s.\n", + results[47]); + return -59; + } + sqlite3_free_table (results); + +/* dropping the VirtualBBox table #1 */ + ret = sqlite3_exec (db_handle, "DROP TABLE test1", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE #1 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return -60; + } + +/* creating the VirtualBBox table #2 */ + ret = sqlite3_exec (db_handle, "CREATE VIRTUAL TABLE test2 USING " + "VirtualBBox('BBox_Test', 'min_x', min_y, \"max_x\", 'max_y', 3003, 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE VIRTUAL TABLE #2 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return -61; + } + +/* testing the VirtualBBox table #2 */ + ret = + sqlite3_get_table (db_handle, + "SELECT DISTINCT GeometryType(Geometry), Srid(Geometry) FROM test2", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -62; + } + if ((rows != 2) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -63; + } + if (strcasecmp (results[2], "POLYGON") != 0) + { + fprintf (stderr, "Unexpected error: distinct-row-1 bad result: %s.\n", + results[2]); + return -64; + } + if (strcasecmp (results[3], "3003") != 0) + { + fprintf (stderr, "Unexpected error: distinct-row-1 bad result: %s.\n", + results[3]); + return -65; + } + if (results[4] != NULL) + { + fprintf (stderr, "Unexpected error: distinct-row-2 bad result: %s.\n", + results[4]); + return -66; + } + if (results[5] != NULL) + { + fprintf (stderr, "Unexpected error: distinct-row-2 bad result: %s.\n", + results[5]); + return -67; + } + sqlite3_free_table (results); + +/* dropping the VirtualBBox table #2 */ + ret = sqlite3_exec (db_handle, "DROP TABLE test2", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE #2 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return -68; + } + +/* creating the VirtualBBox table #3 - failure */ + ret = sqlite3_exec (db_handle, "CREATE VIRTUAL TABLE test3 USING " + "VirtualBBox('BBox_Test', 'min_x', min_y, \"max_x\", 'max_y', 3003)", + NULL, NULL, &err_msg); + if (ret == SQLITE_OK) + { + fprintf (stderr, "CREATE VIRTUAL TABLE #3 unexpected result: %s\n", + err_msg); + sqlite3_close (db_handle); + return -69; + } + sqlite3_free (err_msg); + +/* creating the VirtualBBox table #4 - failure */ + ret = sqlite3_exec (db_handle, "CREATE VIRTUAL TABLE test3 USING " + "VirtualBBox('BBox_Test', 'min_x', min_y, \"max_x\", 'wrong', 3003, 0)", + NULL, NULL, &err_msg); + if (ret == SQLITE_OK) + { + fprintf (stderr, "CREATE VIRTUAL TABLE #4 unexpected result: %s\n", + err_msg); + sqlite3_close (db_handle); + return -70; + } + sqlite3_free (err_msg); + +/* creating the VirtualBBox table #46 - failure */ + ret = sqlite3_exec (db_handle, "CREATE VIRTUAL TABLE test3 USING " + "VirtualBBox('wrong', 'min_x', min_y, \"max_x\", 'max_y', 3003, 0)", + NULL, NULL, &err_msg); + if (ret == SQLITE_OK) + { + fprintf (stderr, "CREATE VIRTUAL TABLE #5 unexpected result: %s\n", + err_msg); + sqlite3_close (db_handle); + return -71; + } + sqlite3_free (err_msg); + + + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_virtualtable1.c b/src/spatialite/test/check_virtualtable1.c new file mode 100644 index 0000000..b92e282 --- /dev/null +++ b/src/spatialite/test/check_virtualtable1.c @@ -0,0 +1,495 @@ +/* + + check_virtualtable1.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards +Ahmadou Dicko + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define _GNU_SOURCE +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +#ifdef _WIN32 +#include "asprintf4win.h" +#endif + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + sqlite3 *db_handle = NULL; + char *sql_statement; + int ret; + char *err_msg = NULL; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + spatialite_init_ex (db_handle, cache, 0); + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE places USING VirtualText(\"testcase1.csv\", UTF-8, 0, POINT, DOUBLEQUOTE);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualText error: %s\n", err_msg); + sqlite3_free (err_msg); + return -2; + } + + asprintf (&sql_statement, + "select col003, col005, col006, col008 from places WHERE col003 = \"Canal Creek\";"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -10; + } + if ((rows != 2) || (columns != 4)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -11; + } + if (strcmp (results[0], "COL003") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -12; + } + if (strcmp (results[4], "Canal Creek") != 0) + { + fprintf (stderr, "Unexpected error: name4() bad result: %s.\n", + results[4]); + return -13; + } + if (strncmp (results[5], "-27.86667", 9) != 0) + { + fprintf (stderr, "Unexpected error: lat1() bad result: %s.\n", + results[5]); + return -14; + } + if (strncmp (results[6], "151.51667", 9) != 0) + { + fprintf (stderr, "Unexpected error: lon2() bad result: %s.\n", + results[6]); + return -15; + } + if (strcmp (results[8], "Canal Creek") != 0) + { + fprintf (stderr, "Unexpected error: name8() bad result: %s.\n", + results[8]); + return -16; + } + sqlite3_free_table (results); + + ret = sqlite3_exec (db_handle, "BEGIN;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "BEGIN error: %s\n", err_msg); + sqlite3_free (err_msg); + return -21; + } + + ret = + sqlite3_exec (db_handle, "DELETE FROM places WHERE col015 > 100000;", + NULL, NULL, &err_msg); + if (ret != SQLITE_READONLY) + { + fprintf (stderr, "UPDATE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -21; + } + sqlite3_free (err_msg); + + ret = sqlite3_exec (db_handle, "ROLLBACK;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "ROLLBACK error: %s\n", err_msg); + sqlite3_free (err_msg); + return -22; + } + ret = + sqlite3_get_table (db_handle, + "SELECT ROWNO, col003, col015 FROM places WHERE col015 > 100000", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -23; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -24; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT col002 FROM places WHERE col001 > 2172517 AND col001 <= 2172519", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -25; + } + if ((rows != 2) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -26; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT col002 FROM places WHERE col001 >= 2172517 AND col001 < 2172519", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -27; + } + if ((rows != 2) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -28; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT col002 FROM places WHERE col001 = 2172517", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -29; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -30; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT col001 FROM places WHERE col002 > 'Canberra' AND col002 <= 'Canbrae'", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -31; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -32; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT col001 FROM places WHERE col002 >= 'Canberra' AND col002 < 'Canbrae'", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -33; + } + if ((rows != 2) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -34; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT col001 FROM places WHERE col002 = 'Canbrae'", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -29; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -30; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT col001 FROM places WHERE ROWNO = 5", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -31; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -32; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT col001 FROM places WHERE col006 > 149.0 AND col006 <= 149.1", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -33; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -34; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT col001 FROM places WHERE col006 >= 149.1 AND col006 < 149.2", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -35; + } + if ((rows != 2) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -36; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT col001 FROM places WHERE col006 = 149.1", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -37; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -38; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT col001 FROM places WHERE col006 >= 149 AND col006 < 150", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -39; + } + if ((rows != 4) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -40; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT col001 FROM places WHERE col006 > 149 AND col006 <= 150", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -41; + } + if ((rows != 4) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -42; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT col001 FROM places WHERE col012 = 23940.0", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -43; + } + if ((rows != 2) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -44; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT col001 FROM places WHERE col012 >= 20000.0 AND col012 < 24000.0", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -45; + } + if ((rows != 2) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -46; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT col001 FROM places WHERE col012 > 20000.0 AND col012 <= 24000.0", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -45; + } + if ((rows != 2) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result2: %i/%i.\n", + rows, columns); + return -46; + } + sqlite3_free_table (results); + + ret = sqlite3_exec (db_handle, "DROP TABLE places;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -47; + } + + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_virtualtable2.c b/src/spatialite/test/check_virtualtable2.c new file mode 100644 index 0000000..6d6f312 --- /dev/null +++ b/src/spatialite/test/check_virtualtable2.c @@ -0,0 +1,1210 @@ +/* + + check_virtualtable2.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards +Ahmadou Dicko + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define _GNU_SOURCE +#include +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +#ifdef _WIN32 +#include "asprintf4win.h" +#endif + +int +do_test (sqlite3 * db_handle) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + char *sql_statement; + int ret; + char *err_msg = NULL; + char **results; + int rows; + int columns; + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE shapetest USING VirtualShape(\"shapetest1\", UTF-8, 4326);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualShape error: %s\n", err_msg); + sqlite3_free (err_msg); + return -2; + } + ret = + sqlite3_get_table (db_handle, + "SELECT RegisterVirtualGeometry('shapetest')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RegisterVirtualGeometry error: %s\n", err_msg); + sqlite3_free (err_msg); + return -3; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "RegisterVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -4; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "RegisterVirtualGeometry Unexpected error: header() bad result: %s.\n", + results[0]); + return -5; + } + sqlite3_free_table (results); + + + asprintf (&sql_statement, + "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase2 < 20;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -6; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -7; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -8; + } + if (strcmp (results[3], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[3]); + return -9; + } + if (strcmp (results[4], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[4]); + return -10; + } + if (strcmp (results[5], "POINT(3480766.311245 4495355.740524)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -11; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase2 <= 19;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -12; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -13; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -14; + } + if (strcmp (results[3], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[3]); + return -15; + } + if (strcmp (results[4], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[4]); + return -16; + } + if (strcmp (results[5], "POINT(3480766.311245 4495355.740524)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -17; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase2 = 20;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -18; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -19; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -20; + } + if (strcmp (results[3], "orde lees") != 0) + { + fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", + results[3]); + return -21; + } + if (strcmp (results[4], "20") != 0) + { + fprintf (stderr, "Unexpected error: integer2() bad result: %s.\n", + results[4]); + return -22; + } + if (strcmp (results[5], "POINT(3482470.825574 4495691.054818)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -23; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase2 > 2;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -24; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -25; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -26; + } + if (strcmp (results[3], "orde lees") != 0) + { + fprintf (stderr, "Unexpected error: orde lees2 bad result: %s.\n", + results[3]); + return -27; + } + if (strcmp (results[4], "20") != 0) + { + fprintf (stderr, "Unexpected error: integer4() bad result: %s.\n", + results[4]); + return -28; + } + if (strcmp (results[5], "POINT(3482470.825574 4495691.054818)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -29; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase2 >= 20;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -30; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -31; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -32; + } + if (strcmp (results[3], "orde lees") != 0) + { + fprintf (stderr, "Unexpected error: orde lees3 bad result: %s.\n", + results[3]); + return -33; + } + if (strcmp (results[4], "20") != 0) + { + fprintf (stderr, "Unexpected error: integer5() bad result: %s.\n", + results[4]); + return -33; + } + if (strcmp (results[5], "POINT(3482470.825574 4495691.054818)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -34; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase1 < \"p\";"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -35; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -36; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -37; + } + if (strcmp (results[3], "orde lees") != 0) + { + fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", + results[3]); + return -38; + } + if (strcmp (results[4], "20") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[4]); + return -39; + } + if (strcmp (results[5], "POINT(3482470.825574 4495691.054818)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -40; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase1 <= \"p\";"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -41; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -42; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -43; + } + if (strcmp (results[3], "orde lees") != 0) + { + fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", + results[3]); + return -44; + } + if (strcmp (results[4], "20") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[4]); + return -45; + } + if (strcmp (results[5], "POINT(3482470.825574 4495691.054818)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -46; + } + sqlite3_free_table (results); + + + ret = sqlite3_exec (db_handle, "BEGIN;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "BEGIN error: %s\n", err_msg); + sqlite3_free (err_msg); + return -47; + } + + asprintf (&sql_statement, + "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase1 > \"p\";"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -48; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -49; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -50; + } + if (strcmp (results[3], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[3]); + return -51; + } + if (strcmp (results[4], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[4]); + return -52; + } + if (strcmp (results[5], "POINT(3480766.311245 4495355.740524)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -53; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (db_handle, "DELETE FROM shapetest WHERE testcase2 = 2;", + NULL, NULL, &err_msg); + if (ret != SQLITE_READONLY) + { + fprintf (stderr, "UPDATE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -54; + } + sqlite3_free (err_msg); + + ret = sqlite3_exec (db_handle, "ROLLBACK;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "ROLLBACK error: %s\n", err_msg); + sqlite3_free (err_msg); + return -55; + } + + asprintf (&sql_statement, + "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase1 >= \"p\";"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -56; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -57; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -58; + } + if (strcmp (results[3], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[3]); + return -59; + } + if (strcmp (results[4], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[4]); + return -60; + } + if (strcmp (results[5], "POINT(3480766.311245 4495355.740524)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -61; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2, AsText(Geometry) from shapetest where testcase1 = \"windward\";"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -62; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -63; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -64; + } + if (strcmp (results[3], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[3]); + return -65; + } + if (strcmp (results[4], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[4]); + return -66; + } + if (strcmp (results[5], "POINT(3480766.311245 4495355.740524)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -67; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2, AsText(Geometry) from shapetest where PKUID = 1;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -68; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -69; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -70; + } + if (strcmp (results[3], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[3]); + return -71; + } + if (strcmp (results[4], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[4]); + return -72; + } + if (strcmp (results[5], "POINT(3480766.311245 4495355.740524)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -73; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2, AsText(Geometry) from shapetest where PKUID < 2;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -74; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -75; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -76; + } + if (strcmp (results[3], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[3]); + return -77; + } + if (strcmp (results[4], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[4]); + return -78; + } + if (strcmp (results[5], "POINT(3480766.311245 4495355.740524)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -79; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2, AsText(Geometry) from shapetest where PKUID <= 1;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -80; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -81; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -82; + } + if (strcmp (results[3], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[3]); + return -83; + } + if (strcmp (results[4], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[4]); + return -84; + } + if (strcmp (results[5], "POINT(3480766.311245 4495355.740524)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -85; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2, AsText(Geometry) from shapetest where PKUID > 1;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -86; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -87; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -88; + } + if (strcmp (results[3], "orde lees") != 0) + { + fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", + results[3]); + return -89; + } + if (strcmp (results[4], "20") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[4]); + return -90; + } + if (strcmp (results[5], "POINT(3482470.825574 4495691.054818)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -91; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2, AsText(Geometry) from shapetest where PKUID >= 2;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -92; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -93; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -94; + } + if (strcmp (results[3], "orde lees") != 0) + { + fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", + results[3]); + return -95; + } + if (strcmp (results[4], "20") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[4]); + return -96; + } + if (strcmp (results[5], "POINT(3482470.825574 4495691.054818)") != 0) + { + fprintf (stderr, "Unexpected error: geometry() bad result: %s.\n", + results[5]); + return -97; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select PKUID, testcase1, testcase2, AsText(Geometry) from shapetest where testcase1 LIKE \"wind%%\";"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -98; + } + if ((rows != 1) || (columns != 4)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -99; + } + if (strcmp (results[0], "PKUID") != 0) + { + fprintf (stderr, "Unexpected error: header uid bad result: %s.\n", + results[0]); + return -100; + } + if (strcmp (results[1], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header bad result: %s.\n", + results[1]); + return -101; + } + if (strcmp (results[4], "1") != 0) + { + fprintf (stderr, "Unexpected error: windward PK bad result: %s.\n", + results[4]); + return -102; + } + if (strcmp (results[5], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[5]); + return -103; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, "SELECT DropVirtualGeometry('shapetest')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DropVirtualGeometry error: %s\n", err_msg); + sqlite3_free (err_msg); + return -104; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "DropVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -105; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "DropVirtualGeometry Unexpected error: header() bad result: %s.\n", + results[0]); + return -106; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE shapetest2 USING VirtualShape(\"shp/merano-3d/roads\", CP1252, 25832);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualShape error: %s\n", err_msg); + sqlite3_free (err_msg); + return -107; + } + ret = + sqlite3_get_table (db_handle, + "SELECT RegisterVirtualGeometry('shapetest2')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RegisterVirtualGeometry error: %s\n", err_msg); + sqlite3_free (err_msg); + return -108; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "RegisterVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -109; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "RegisterVirtualGeometry Unexpected error: header() bad result: %s.\n", + results[0]); + return -110; + } + sqlite3_free_table (results); + ret = + sqlite3_get_table (db_handle, + "SELECT UpdateLayerStatistics('shapetest2')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "UpdateLayerStatistics error: %s\n", err_msg); + sqlite3_free (err_msg); + return -111; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "UpdateLayerStatistics Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -112; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "UpdateLayerStatistics Unexpected error: header() bad result: %s.\n", + results[0]); + return -113; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT DropVirtualGeometry('shapetest2')", &results, + &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DropVirtualGeometry error: %s\n", err_msg); + sqlite3_free (err_msg); + return -114; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "DropVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -115; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "DropVirtualGeometry Unexpected error: header() bad result: %s.\n", + results[0]); + return -116; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE shapetest3 USING VirtualShape(\"shp/merano-3d/points\", CP1252, 25832);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualShape error: %s\n", err_msg); + sqlite3_free (err_msg); + return -117; + } + ret = + sqlite3_get_table (db_handle, + "SELECT RegisterVirtualGeometry('shapetest3')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RegisterVirtualGeometry error: %s\n", err_msg); + sqlite3_free (err_msg); + return -118; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "RegisterVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -119; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "RegisterVirtualGeometry Unexpected error: header() bad result: %s.\n", + results[0]); + return -120; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT DropVirtualGeometry('shapetest3')", &results, + &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DropVirtualGeometry error: %s\n", err_msg); + sqlite3_free (err_msg); + return -121; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "DropVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -122; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "DropVirtualGeometry Unexpected error: header() bad result: %s.\n", + results[0]); + return -123; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE shapetest4 USING VirtualShape(\"shp/merano-3d/polygons\", CP1252, 25832);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualShape error: %s\n", err_msg); + sqlite3_free (err_msg); + return -124; + } + ret = + sqlite3_get_table (db_handle, + "SELECT RegisterVirtualGeometry('shapetest4')", + &results, &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "RegisterVirtualGeometry error: %s\n", err_msg); + sqlite3_free (err_msg); + return -125; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "RegisterVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -126; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "RegisterVirtualGeometry Unexpected error: header() bad result: %s.\n", + results[0]); + return -127; + } + sqlite3_free_table (results); + + ret = + sqlite3_get_table (db_handle, + "SELECT DropVirtualGeometry('shapetest4')", &results, + &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DropVirtualGeometry error: %s\n", err_msg); + sqlite3_free (err_msg); + return -128; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "DropVirtualGeometry Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -129; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "DropVirtualGeometry Unexpected error: header() bad result: %s.\n", + results[0]); + return -130; + } + sqlite3_free_table (results); + +/* final DB cleanup */ + ret = + sqlite3_exec (db_handle, + "DELETE FROM spatialite_history WHERE geometry_column IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE FROM spatialite_history error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return -131; + } + ret = sqlite3_exec (db_handle, "VACUUM", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VACUUM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return -132; + } +#endif /* end ICONV conditional */ + + return 0; +} + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + +/* testing current style metadata layout >= v.4.0.0 */ + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + spatialite_init_ex (db_handle, cache, 0); + + ret = + sqlite3_exec (db_handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (db_handle); + return -2; + } + + ret = do_test (db_handle); + if (ret != 0) + { + fprintf (stderr, + "error while testing legacy style metadata layout\n"); + return ret; + } + + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + +/* testing legacy style metadata layout <= v.3.1.0 */ + ret = system ("cp test-legacy-3.0.1.sqlite copy-virt2-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy legacy v.3.0.1 database\n"); + return -1; + } + cache = spatialite_alloc_connection (); + ret = + sqlite3_open_v2 ("copy-virt2-legacy-3.0.1.sqlite", &db_handle, + SQLITE_OPEN_READWRITE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open legacy v.3.0.1 database: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + spatialite_init_ex (db_handle, cache, 0); + + ret = do_test (db_handle); + if (ret != 0) + { + fprintf (stderr, + "error while testing legacy style metadata layout\n"); + return ret; + } + + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + ret = unlink ("copy-virt2-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove legacy v.3.0.1 database\n"); + return -20; + } + +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_virtualtable3.c b/src/spatialite/test/check_virtualtable3.c new file mode 100644 index 0000000..cd2c5d9 --- /dev/null +++ b/src/spatialite/test/check_virtualtable3.c @@ -0,0 +1,842 @@ +/* + + check_virtualtable3.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards +Ahmadou Dicko + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define _GNU_SOURCE +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +#ifdef _WIN32 +#include "asprintf4win.h" +#endif + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + sqlite3 *db_handle = NULL; + char *sql_statement; + int ret; + char *err_msg = NULL; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + spatialite_init_ex (db_handle, cache, 0); + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE dbftest USING VirtualDBF(shapetest1.dbf, UTF-8);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualDBF error: %s\n", err_msg); + sqlite3_free (err_msg); + return -2; + } + + asprintf (&sql_statement, + "select testcase1, testcase2 from dbftest where testcase2 < 20;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -3; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -4; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -5; + } + if (strcmp (results[2], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[2]); + return -6; + } + if (strcmp (results[3], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[3]); + return -7; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2 from dbftest where testcase2 <= 19;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -10; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -11; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -12; + } + if (strcmp (results[2], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[2]); + return -13; + } + if (strcmp (results[3], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[3]); + return -14; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2 from dbftest where testcase2 = 20;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -16; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -17; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -18; + } + if (strcmp (results[2], "orde lees") != 0) + { + fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", + results[2]); + return -19; + } + if (strcmp (results[3], "20") != 0) + { + fprintf (stderr, "Unexpected error: integer2() bad result: %s.\n", + results[3]); + return -20; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2 from dbftest where testcase2 > 2;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -22; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -23; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -24; + } + if (strcmp (results[2], "orde lees") != 0) + { + fprintf (stderr, "Unexpected error: orde lees2 bad result: %s.\n", + results[2]); + return -25; + } + if (strcmp (results[3], "20") != 0) + { + fprintf (stderr, "Unexpected error: integer4() bad result: %s.\n", + results[3]); + return -26; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2 from dbftest where testcase2 >= 20;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -28; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -29; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -30; + } + if (strcmp (results[2], "orde lees") != 0) + { + fprintf (stderr, "Unexpected error: orde lees3 bad result: %s.\n", + results[2]); + return -31; + } + if (strcmp (results[3], "20") != 0) + { + fprintf (stderr, "Unexpected error: integer5() bad result: %s.\n", + results[3]); + return -32; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2 from dbftest where testcase1 < \"p\";"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -34; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -35; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -36; + } + if (strcmp (results[2], "orde lees") != 0) + { + fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", + results[2]); + return -37; + } + if (strcmp (results[3], "20") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[3]); + return -38; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2 from dbftest where testcase1 <= \"p\";"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -40; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -41; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -42; + } + if (strcmp (results[2], "orde lees") != 0) + { + fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", + results[2]); + return -43; + } + if (strcmp (results[3], "20") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[3]); + return -44; + } + sqlite3_free_table (results); + + ret = sqlite3_exec (db_handle, "BEGIN;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "BEGIN error: %s\n", err_msg); + sqlite3_free (err_msg); + return -46; + } + + asprintf (&sql_statement, + "select testcase1, testcase2 from dbftest where testcase1 > \"p\";"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -48; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -49; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -50; + } + if (strcmp (results[2], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[2]); + return -51; + } + if (strcmp (results[3], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[3]); + return -52; + } + sqlite3_free_table (results); + + ret = + sqlite3_exec (db_handle, "DELETE FROM dbftest WHERE testcase2 = 2;", + NULL, NULL, &err_msg); + if (ret != SQLITE_READONLY) + { + fprintf (stderr, "UPDATE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -46; + } + sqlite3_free (err_msg); + + ret = sqlite3_exec (db_handle, "ROLLBACK;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "ROLLBACK error: %s\n", err_msg); + sqlite3_free (err_msg); + return -47; + } + + asprintf (&sql_statement, + "select testcase1, testcase2 from dbftest where testcase1 >= \"p\";"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -54; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -55; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -56; + } + if (strcmp (results[2], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[2]); + return -57; + } + if (strcmp (results[3], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[3]); + return -58; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2 from dbftest where testcase1 = \"windward\";"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -54; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -55; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -56; + } + if (strcmp (results[2], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[2]); + return -57; + } + if (strcmp (results[3], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[3]); + return -58; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2 from dbftest where PKUID = 1;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -60; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -61; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -62; + } + if (strcmp (results[2], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[2]); + return -63; + } + if (strcmp (results[3], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[3]); + return -64; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2 from dbftest where PKUID < 2;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -66; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -67; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -68; + } + if (strcmp (results[2], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[2]); + return -69; + } + if (strcmp (results[3], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[3]); + return -70; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2 from dbftest where PKUID <= 1;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -72; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -73; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -74; + } + if (strcmp (results[2], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[2]); + return -75; + } + if (strcmp (results[3], "2") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[3]); + return -76; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2 from dbftest where PKUID > 1;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -78; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -79; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -80; + } + if (strcmp (results[2], "orde lees") != 0) + { + fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", + results[2]); + return -81; + } + if (strcmp (results[3], "20") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[3]); + return -82; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select testcase1, testcase2 from dbftest where PKUID >= 2;"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -84; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -85; + } + if (strcmp (results[0], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -86; + } + if (strcmp (results[2], "orde lees") != 0) + { + fprintf (stderr, "Unexpected error: orde lees bad result: %s.\n", + results[2]); + return -87; + } + if (strcmp (results[3], "20") != 0) + { + fprintf (stderr, "Unexpected error: integer() bad result: %s.\n", + results[3]); + return -88; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select PKUID, testcase1, testcase2 from dbftest where testcase1 LIKE \"wind%%\";"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -90; + } + if ((rows != 1) || (columns != 3)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -91; + } + if (strcmp (results[0], "PKUID") != 0) + { + fprintf (stderr, "Unexpected error: header uid bad result: %s.\n", + results[0]); + return -92; + } + if (strcmp (results[1], "testcase1") != 0) + { + fprintf (stderr, "Unexpected error: header bad result: %s.\n", + results[1]); + return -93; + } + if (strcmp (results[3], "1") != 0) + { + fprintf (stderr, "Unexpected error: windward PK bad result: %s.\n", + results[3]); + return -93; + } + if (strcmp (results[4], "windward") != 0) + { + fprintf (stderr, "Unexpected error: windward bad result: %s.\n", + results[4]); + return -94; + } + sqlite3_free_table (results); + + ret = sqlite3_exec (db_handle, "DROP TABLE dbftest;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -49; + } + + /* error cases */ + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE toofewargs USING VirtualDBF(\"shapetest1.dbf\");", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "VirtualDBF unexpected result: %i\n", ret); + return -95; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE toomanyargs USING VirtualDBF(\"shapetest1.dbf\", UTF-8, 1);", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "VirtualDBF unexpected result: %i\n", ret); + return -96; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE nosuchfile USING VirtualDBF(\"not_a_file.dbf\", UTF-8);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualDBF error: %s\n", err_msg); + sqlite3_free (err_msg); + return -97; + } + ret = + sqlite3_get_table (db_handle, "SELECT * from nosuchfile;", &results, + &rows, &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -98; + } + if ((rows != 0) || (columns != 0)) + { + fprintf (stderr, + "Unexpected error: select columns no suchfile: %i/%i.\n", + rows, columns); + return -99; + } + sqlite3_free_table (results); + ret = + sqlite3_exec (db_handle, "DROP TABLE nosuchfile;", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -100; + } + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE onesidedquote USING VirtualDBF('shapetest1.dbf, UTF-8);", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "VirtualDBF unexpected result: %i\n", ret); + return -101; + } + sqlite3_free (err_msg); + + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_virtualtable4.c b/src/spatialite/test/check_virtualtable4.c new file mode 100644 index 0000000..71340d2 --- /dev/null +++ b/src/spatialite/test/check_virtualtable4.c @@ -0,0 +1,461 @@ +/* + + check_virtualtable4.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define _GNU_SOURCE +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +#ifdef _WIN32 +#include "asprintf4win.h" +#endif + +struct test_step +{ + const char *sql; + const int num_rows; +}; + +#define NUMSTEPS 36 + +struct test_step steps[NUMSTEPS] = { + {"select col_2, col_4, col_5, col_7 from xltest WHERE col_2 > \"Canary Creek\";", 9}, + {"select col_2, col_4, col_5, col_7 from xltest WHERE col_2 < \"Canary Creek\";", 7}, + {"select col_2, col_4, col_5, col_7 from xltest WHERE col_2 >= \"Canary Creek\";", 10}, + {"select col_2, col_4, col_5, col_7 from xltest WHERE col_2 <= \"Canary Creek\";", 8}, + {"select col_2, col_4, col_5, col_7 from xltest WHERE col_2 = 3;", 0}, + {"SELECT col_2, col_14 FROM xltest WHERE col_14 > 100000;", 1}, + {"SELECT col_2, col_14 FROM xltest WHERE col_14 < 100000;", 16}, + {"SELECT col_2, col_14 FROM xltest WHERE col_14 < 100000 AND col_14 > 0;", + 1}, + {"SELECT col_2, col_14 FROM xltest WHERE col_14 = 895;", 1}, + {"SELECT col_2, col_14 FROM xltest WHERE col_14 = 895.0;", 1}, + {"SELECT col_2, col_14 FROM xltest WHERE col_14 <= 895;", 16}, + {"SELECT col_2, col_14 FROM xltest WHERE col_14 >= 895;", 2}, + {"SELECT col_2, col_14 FROM xltest WHERE col_14 > 100000.0;", 1}, + {"SELECT col_2, col_14 FROM xltest WHERE col_14 < 100000.0;", 16}, + {"SELECT col_2, col_14 FROM xltest WHERE col_14 = 895.0;", 1}, + {"SELECT col_2, col_14 FROM xltest WHERE col_14 <= 895.0;", 16}, + {"SELECT col_2, col_14 FROM xltest WHERE col_14 >= 895.0;", 2}, + {"SELECT col_2, col_14 FROM xltest WHERE row_no = 4", 1}, + {"SELECT col_2, col_14 FROM xltest WHERE row_no < 4", 3}, + {"SELECT col_2, col_14 FROM xltest WHERE row_no <= 4", 4}, + {"SELECT col_2, col_14 FROM xltest WHERE row_no >= 4", 14}, + {"SELECT col_2, col_14 FROM xltest WHERE row_no > 4", 13}, + {"SELECT col_2, col_14 FROM xltest WHERE row_no = 4.00", 0}, + {"select col_2, col_4, col_5 from xltest where col_4 < -30.0;", 8}, + {"select col_2, col_4, col_5 from xltest where col_4 > -30.0;", 9}, + {"select col_2, col_4, col_5 from xltest where col_4 <= -30.0;", 8}, + {"select col_2, col_4, col_5 from xltest where col_4 >= -30.0;", 9}, + {"select col_2, col_4, col_5 from xltest where col_5 = 149.1;", 1}, + {"select col_2, col_4, col_5 from xltest where col_4 < -30;", 8}, + {"select col_2, col_4, col_5 from xltest where col_4 > -30;", 9}, + {"select col_2, col_4, col_5 from xltest where col_4 <= -30;", 8}, + {"select col_2, col_4, col_5 from xltest where col_4 >= -30;", 9}, + {"select col_2, col_4, col_5 from xltest where col_4 = -30;", 0}, + {"SELECT row_no, col_4, col_5 from xltest", 17}, + {"select rowid, col_4, col_5 from xltest where col_4 = -26.0;", 1}, + {"select rowid, col_4, col_5 from xltest where col_4 = -26;", 1}, +}; + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_FREEXL /* only if FreeXL is supported */ + sqlite3 *db_handle = NULL; + char *sql_statement; + int ret; + char *err_msg = NULL; + int i; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + spatialite_init_ex (db_handle, cache, 0); + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE xltest USING VirtualXL(\"testcase1.xls\");", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualXL error: %s\n", err_msg); + sqlite3_free (err_msg); + return -2; + } + + asprintf (&sql_statement, + "select col_2, col_4, col_5, col_7, rowid from xltest WHERE col_2 = \"Canal Creek\";"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -10; + } + if ((rows != 2) || (columns != 5)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -11; + } + if (strcmp (results[0], "col_2") != 0) + { + fprintf (stderr, "Unexpected error: header() bad result: %s.\n", + results[0]); + return -12; + } + if (strcmp (results[5], "Canal Creek") != 0) + { + fprintf (stderr, "Unexpected error: name5() bad result: %s.\n", + results[5]); + return -13; + } + if (strncmp (results[6], "-27.86667", 9) != 0) + { + fprintf (stderr, "Unexpected error: lat1() bad result: %s.\n", + results[6]); + return -14; + } + if (strncmp (results[7], "151.51667", 9) != 0) + { + fprintf (stderr, "Unexpected error: lon2() bad result: %s.\n", + results[7]); + return -15; + } + if (strcmp (results[10], "Canal Creek") != 0) + { + fprintf (stderr, "Unexpected error: name10() bad result: %s.\n", + results[10]); + return -16; + } + sqlite3_free_table (results); + + ret = sqlite3_exec (db_handle, "BEGIN;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "BEGIN error: %s\n", err_msg); + sqlite3_free (err_msg); + return -21; + } + + ret = + sqlite3_exec (db_handle, "DELETE FROM xltest WHERE col_14 > 100000;", + NULL, NULL, &err_msg); + if (ret != SQLITE_READONLY) + { + fprintf (stderr, "UPDATE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -21; + } + sqlite3_free (err_msg); + + ret = sqlite3_exec (db_handle, "ROLLBACK;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "ROLLBACK error: %s\n", err_msg); + sqlite3_free (err_msg); + return -22; + } + + for (i = 0; i < NUMSTEPS; ++i) + { + ret = + sqlite3_get_table (db_handle, steps[i].sql, &results, &rows, + &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -23; + } + if (rows != steps[i].num_rows) + { + fprintf (stderr, "Unexpected num of rows for test %i: %i.\n", i, + rows); + return -24; + } + sqlite3_free_table (results); + } + + ret = sqlite3_exec (db_handle, "DROP TABLE xltest;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -25; + } + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE nosuchworksheet USING VirtualXL(\"testcase1.xls\", 3);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualXL error: %s\n", err_msg); + sqlite3_free (err_msg); + return -26; + } + ret = + sqlite3_exec (db_handle, "DROP TABLE nosuchworksheet;", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -27; + } + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE nosuchfile USING VirtualXL(\"not_a_file.xls\", 3);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualXL error: %s\n", err_msg); + sqlite3_free (err_msg); + return -28; + } + ret = + sqlite3_exec (db_handle, "DROP TABLE nosuchfile;", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -29; + } + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE sheet2 USING VirtualXL(\"testcase1.xls\", 1, 1);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualXL error: %s\n", err_msg); + sqlite3_free (err_msg); + return -30; + } + asprintf (&sql_statement, + "select row_no, place, lat, lon, rowid from sheet2 WHERE place = \"Canal Creek\";"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -31; + } + if ((rows != 4) || (columns != 5)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -32; + } + if (strcmp (results[0], "row_no") != 0) + { + fprintf (stderr, "Unexpected error: sheet2() bad result: %s.\n", + results[0]); + return -33; + } + if (strcmp (results[6], "Canal Creek") != 0) + { + fprintf (stderr, "Unexpected error: sheet2() bad result place: %s.\n", + results[6]); + return -34; + } + if (strncmp (results[7], "-27.86667", 9) != 0) + { + fprintf (stderr, "Unexpected error: sheet2() bad result lat: %s.\n", + results[7]); + return -35; + } + if (strncmp (results[8], "151.51667", 9) != 0) + { + fprintf (stderr, "Unexpected error: sheet2() bad result lon: %s.\n", + results[8]); + return -36; + } + if (strcmp (results[11], "Canal Creek") != 0) + { + fprintf (stderr, + "Unexpected error: sheet2() bad result place2: %s.\n", + results[11]); + return -37; + } + sqlite3_free_table (results); + + asprintf (&sql_statement, + "select row_no, place, lat, lon, rowid from sheet2 WHERE row_no = 16"); + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + free (sql_statement); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -38; + } + if ((rows != 1) || (columns != 5)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -39; + } + if (strcmp (results[0], "row_no") != 0) + { + fprintf (stderr, "Unexpected error: sheet2() bad result: %s.\n", + results[0]); + return -40; + } + if (strcmp (results[6], "Canal Creek") != 0) + { + fprintf (stderr, "Unexpected error: sheet2() bad result place: %s.\n", + results[6]); + return -41; + } + if (strncmp (results[7], "-27.86667", 9) != 0) + { + fprintf (stderr, "Unexpected error: sheet2() bad result lat: %s.\n", + results[7]); + return -42; + } + if (strncmp (results[8], "151.51667", 9) != 0) + { + fprintf (stderr, "Unexpected error: sheet2() bad result lon: %s.\n", + results[8]); + return -43; + } + sqlite3_free_table (results); + + ret = sqlite3_exec (db_handle, "DROP TABLE sheet2;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -44; + } + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE noquote USING VirtualXL(testcase1.xls);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualXL error: %s\n", err_msg); + sqlite3_free (err_msg); + return -45; + } + ret = sqlite3_exec (db_handle, "DROP TABLE noquote;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -46; + } + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE noheader USING VirtualXL(\"testcase1.xls\", 0, 0);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualXL error: %s\n", err_msg); + sqlite3_free (err_msg); + return -47; + } + ret = + sqlite3_exec (db_handle, "DROP TABLE noheader;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -48; + } + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE nofile USING VirtualXL();", NULL, + NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "VirtualXL unexpected result: %i\n", ret); + return -49; + } + sqlite3_free (err_msg); + + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); +#endif /* end FreeXL conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_virtualtable5.c b/src/spatialite/test/check_virtualtable5.c new file mode 100644 index 0000000..055f5c2 --- /dev/null +++ b/src/spatialite/test/check_virtualtable5.c @@ -0,0 +1,205 @@ +/* + + check_virtualtable5.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define _GNU_SOURCE +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +struct test_step +{ + const char *sql; + const int num_rows; +}; + +struct test_step steps[] = { + {"select DATUM from dbftest WHERE DATUM = 2450514.5;", 18}, + {"select DATUM from dbftest WHERE DATUM < 2450514.5;", 0}, + {"select DATUM from dbftest WHERE DATUM > 2450514.5;", 0}, + {"select DATUM from dbftest WHERE DATUM >= 2450514.5;", 18}, + {"select DATUM from dbftest WHERE DATUM <= 2450514.5;", 18}, + {"select DATUM from dbftest WHERE DATUM = 2450514.5;", 18}, + {"select Length, HOEHE from dbftest WHERE HOEHE = 0.0;", 18}, + {"select Length, HOEHE from dbftest WHERE HOEHE = 1.0;", 0}, + {"select Length, HOEHE from dbftest WHERE HOEHE != 0.0;", 0}, + {"select Length, HOEHE from dbftest WHERE Length > 0.0;", 18}, + {"select Length, HOEHE from dbftest WHERE Length >= 0.0;", 18}, + {"select Length, HOEHE from dbftest WHERE Length <= 0.0;", 0}, + {"select Length, HOEHE from dbftest WHERE Length > 1.0;", 0}, + {"select Length, HOEHE from dbftest WHERE Length > 0.1;", 10}, + {"select Length, HOEHE from dbftest WHERE Length < 0.1;", 8}, + {"select Length, HOEHE from dbftest WHERE Length >= 0.1;", 10}, + {"select Length, HOEHE from dbftest WHERE HOEHE = 0;", 18}, + {"select Length, HOEHE from dbftest WHERE HOEHE >= 0;", 18}, + {"select Length, HOEHE from dbftest WHERE HOEHE <= 0;", 18}, + {"select Length, HOEHE from dbftest WHERE HOEHE > 0;", 0}, + {"select Length, HOEHE from dbftest WHERE HOEHE < 0;", 0}, + {"select Length, HOEHE from dbftest WHERE HOEHE = 1;", 0}, + {"select Length, HOEHE from dbftest WHERE HOEHE <= 1;", 18}, + {"select Length, HOEHE from dbftest WHERE HOEHE >= 1;", 0}, + {"select Length, HOEHE from dbftest WHERE HOEHE < 1;", 18}, + {"select Length, HOEHE from dbftest WHERE HOEHE > -1;", 18}, + {"select Length, HOEHE from dbftest WHERE HOEHE < -1;", 0}, + {"select Length, HOEHE from dbftest WHERE HOEHE <= -1;", 0}, + {NULL, 0} +}; + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + int i; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + spatialite_init_ex (db_handle, cache, 0); + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE dbftest USING VirtualDBF(\"shp/merano-3d/roads.dbf\", 'CP1252');", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualDBF error: %s\n", err_msg); + sqlite3_free (err_msg); + return -2; + } + + ret = sqlite3_exec (db_handle, "DROP TABLE dbftest;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -3; + } + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE dbftest USING VirtualDBF('shp/merano-3d/roads.dbf', \"CP1252\");", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualDBF error: %s\n", err_msg); + sqlite3_free (err_msg); + return -4; + } + + ret = sqlite3_exec (db_handle, "DROP TABLE dbftest;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -5; + } + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE dbftest USING VirtualDBF('shp/merano-3d/roads.dbf', CP1252);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualDBF error: %s\n", err_msg); + sqlite3_free (err_msg); + return -6; + } + + for (i = 0; steps[i].sql; ++i) + { + ret = + sqlite3_get_table (db_handle, steps[i].sql, &results, &rows, + &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -7; + } + if (rows != steps[i].num_rows) + { + fprintf (stderr, "Unexpected num of rows for test %i: %i.\n", i, + rows); + return -8; + } + sqlite3_free_table (results); + } + + ret = sqlite3_exec (db_handle, "DROP TABLE dbftest;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -9; + } + + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_virtualtable6.c b/src/spatialite/test/check_virtualtable6.c new file mode 100644 index 0000000..f6b107a --- /dev/null +++ b/src/spatialite/test/check_virtualtable6.c @@ -0,0 +1,272 @@ +/* + + check_virtualtable6.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define _GNU_SOURCE +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +struct test_step +{ + const char *sql; + const int num_rows; +}; + +struct test_step steps[] = { + {"select DATUM, Geometry from shapetest WHERE DATUM = 2450514.5;", 18}, + {"select DATUM from shapetest WHERE DATUM < 2450514.5;", 0}, + {"select DATUM from shapetest WHERE DATUM > 2450514.5;", 0}, + {"select DATUM from shapetest WHERE DATUM >= 2450514.5;", 18}, + {"select DATUM from shapetest WHERE DATUM <= 2450514.5;", 18}, + {"select DATUM from shapetest WHERE DATUM = 2450514.5;", 18}, + {"select Length, HOEHE from shapetest WHERE HOEHE = 0.0;", 18}, + {"select Length, HOEHE from shapetest WHERE HOEHE = 1.0;", 0}, + {"select Length, HOEHE, Geometry from shapetest WHERE HOEHE != 0.0;", 0}, + {"select Length, HOEHE from shapetest WHERE Length > 0.0;", 18}, + {"select Length, HOEHE from shapetest WHERE Length >= 0.0;", 18}, + {"select Length, HOEHE from shapetest WHERE Length <= 0.0;", 0}, + {"select Length, HOEHE from shapetest WHERE Length > 1.0;", 0}, + {"select Length, HOEHE from shapetest WHERE Length > 0.1;", 10}, + {"select Length, HOEHE from shapetest WHERE Length < 0.1;", 8}, + {"select Length, HOEHE from shapetest WHERE Length >= 0.1;", 10}, + {"select Length, HOEHE from shapetest WHERE HOEHE = 0;", 18}, + {"select Length, HOEHE from shapetest WHERE HOEHE >= 0;", 18}, + {"select Length, HOEHE from shapetest WHERE HOEHE <= 0;", 18}, + {"select Length, HOEHE from shapetest WHERE HOEHE > 0;", 0}, + {"select Length, HOEHE from shapetest WHERE HOEHE < 0;", 0}, + {"select Length, HOEHE from shapetest WHERE HOEHE = 1;", 0}, + {"select Length, HOEHE from shapetest WHERE HOEHE <= 1;", 18}, + {"select Length, HOEHE from shapetest WHERE HOEHE >= 1;", 0}, + {"select Length, HOEHE from shapetest WHERE HOEHE < 1;", 18}, + {"select Length, HOEHE from shapetest WHERE HOEHE > -1;", 18}, + {"select Length, HOEHE from shapetest WHERE HOEHE < -1;", 0}, + {"select Length, HOEHE from shapetest WHERE HOEHE <= -1;", 0}, + {"select * from shapetest LIMIT 5 OFFSET 2;", 5}, + {NULL, 0} +}; + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + sqlite3 *db_handle = NULL; + int ret; + char *err_msg = NULL; + int i; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + + spatialite_init_ex (db_handle, cache, 0); + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE shapetest USING VirtualShape('shp/merano-3d/roads', CP1252, 25832);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualShape error: %s\n", err_msg); + sqlite3_free (err_msg); + return -2; + } + + ret = + sqlite3_exec (db_handle, "DROP TABLE shapetest;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -3; + } + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE shapetest USING VirtualShape(\"shp/merano-3d/roads\", 'CP1252', -1);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualShape error: %s\n", err_msg); + sqlite3_free (err_msg); + return -4; + } + + ret = + sqlite3_exec (db_handle, "DROP TABLE shapetest;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -5; + } + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE unquoted USING VirtualShape(shapetest1, UTF8, -1);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualShape error: %s\n", err_msg); + sqlite3_free (err_msg); + return -6; + } + + ret = + sqlite3_exec (db_handle, "DROP TABLE unquoted;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -7; + } + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE shapetest USING VirtualShape('shp/merano-3d/roads', \"CP1252\", 25832);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualShape error: %s\n", err_msg); + sqlite3_free (err_msg); + return -8; + } + + for (i = 0; steps[i].sql; ++i) + { + ret = + sqlite3_get_table (db_handle, steps[i].sql, &results, &rows, + &columns, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -9; + } + if (rows != steps[i].num_rows) + { + fprintf (stderr, "Unexpected num of rows for test %i: %i.\n", i, + rows); + return -10; + } + sqlite3_free_table (results); + } + + ret = + sqlite3_exec (db_handle, "DROP TABLE shapetest;", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -11; + } + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE nosuchfile USING VirtualShape(nosuchfile, UTF8, -1);", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VirtualShape error: %s\n", err_msg); + sqlite3_free (err_msg); + return -12; + } + + ret = + sqlite3_exec (db_handle, "DROP TABLE nosuchfile;", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + return -13; + } + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE toofewargs USING VirtualShape(\"shapetest1\", UTF8);", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "VirtualShape unexpected result: %i\n", ret); + return -14; + } + sqlite3_free (err_msg); + + ret = + sqlite3_exec (db_handle, + "create VIRTUAL TABLE toomanyargs USING VirtualShape(\"shapetest1\", UTF8, 4386, 1);", + NULL, NULL, &err_msg); + if (ret != SQLITE_ERROR) + { + fprintf (stderr, "VirtualShape unexpected result: %i\n", ret); + return -15; + } + sqlite3_free (err_msg); + + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_virtualxpath.c b/src/spatialite/test/check_virtualxpath.c new file mode 100644 index 0000000..6ecc990 --- /dev/null +++ b/src/spatialite/test/check_virtualxpath.c @@ -0,0 +1,633 @@ +/* + + check_virtualxpath.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#define _GNU_SOURCE +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +static int +load_xml (void *cache, sqlite3 * db_handle, sqlite3_stmt * stmt, + const char *path) +{ +#ifdef ENABLE_LIBXML2 /* only if LIBXML2 is supported */ +/* loading an XMLDocument into the DB */ + FILE *fl; + int sz = 0; + int rd; + unsigned char *xml = NULL; + unsigned char *p_result = NULL; + int len; + int ret; + +/* loading the XMLDocument */ + fl = fopen (path, "rb"); + if (!fl) + { + fprintf (stderr, "cannot open \"%s\"\n", path); + return 0; + } + if (fseek (fl, 0, SEEK_END) == 0) + sz = ftell (fl); + xml = malloc (sz); + rewind (fl); + rd = fread (xml, 1, sz, fl); + if (rd != sz) + { + fprintf (stderr, "read error \"%s\"\n", path); + return 0; + } + fclose (fl); + +/* parsing the XMLDocument */ + gaiaXmlToBlob (cache, xml, rd, 1, NULL, &p_result, &len, NULL, NULL); + if (p_result == NULL) + { + fprintf (stderr, "\"%s\": not a well-formed XML !!!\n", path); + return 0; + } + free (xml); + +/* inserting into the DB */ + sqlite3_reset (stmt); + sqlite3_clear_bindings (stmt); + sqlite3_bind_blob (stmt, 1, p_result, len, free); + sqlite3_bind_text (stmt, 2, path, strlen (path), SQLITE_STATIC); + ret = sqlite3_step (stmt); + if (ret == SQLITE_DONE || ret == SQLITE_ROW) + return 1; + fprintf (stderr, "INSERT error: %s\n", sqlite3_errmsg (db_handle)); + return 0; +#else + return -1; /* no support */ +#endif +} + +int +main (int argc, char *argv[]) +{ +#ifdef ENABLE_LIBXML2 /* only if LIBXML2 is supported */ + sqlite3 *db_handle = NULL; + sqlite3_stmt *stmt; + char *sql_statement; + int ret; + char *err_msg = NULL; + char **results; + int rows; + int columns; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &db_handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (db_handle)); + sqlite3_close (db_handle); + db_handle = NULL; + return -1; + } + spatialite_init_ex (db_handle, cache, 0); + +/* creating the base XML table */ + sql_statement = "CREATE TABLE test (id INTEGER PRIMARY " + "KEY AUTOINCREMENT, xml BLOB, name TEXT)"; + ret = sqlite3_exec (db_handle, sql_statement, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CreateTable error: %s\n", err_msg); + sqlite3_free (err_msg); + return -2; + } + +/* loading the XMLDocuments into the DB */ + sql_statement = "INSERT INTO test (id, xml, name) VALUES (NULL, ?, ?)"; + ret = + sqlite3_prepare_v2 (db_handle, sql_statement, strlen (sql_statement), + &stmt, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "PrepareStatement: error \"%s\"\n", + sqlite3_errmsg (db_handle)); + return -3; + } + if (!load_xml (cache, db_handle, stmt, "books.xml")) + { + fprintf (stderr, "Unable to load \"books.xml\""); + return -4; + } + if (!load_xml (cache, db_handle, stmt, "opera.xml")) + { + fprintf (stderr, "Unable to load \"opera.xml\""); + return -5; + } + if (!load_xml (cache, db_handle, stmt, "movies.xml")) + { + fprintf (stderr, "Unable to load \"movies.xml\""); + return -6; + } + if (!load_xml (cache, db_handle, stmt, "books.xml")) + { + fprintf (stderr, "Unable to re-load yet again \"books.xml\""); + return -7; + } + if (!load_xml (cache, db_handle, stmt, "inspire-data-example.xml")) + { + fprintf (stderr, "Unable to load \"books-bad.xml\""); + return -8; + } + ret = sqlite3_finalize (stmt); + +/* checking for parse errors */ + sql_statement = "SELECT XB_GetLastParseError()"; + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -9; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -10; + } + sqlite3_free_table (results); + +/* validating the XMLDocuments */ + sql_statement = "UPDATE test SET xml = XB_SchemaValidate(xml, " + "XB_GetInternalSchemaURI(XB_GetPayload(xml))) " + "WHERE XB_GetInternalSchemaURI(XB_GetPayload(xml)) IS NOT NULL " + "AND name <> 'inspire-data-example.xml'"; + ret = sqlite3_exec (db_handle, sql_statement, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "SchemaValidation error: %s\n", err_msg); + sqlite3_free (err_msg); + return -11; + } + +/* checking for validation errors */ + sql_statement = "SELECT XB_GetLastValidateError()"; + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -12; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -13; + } + sqlite3_free_table (results); + +/* check #1: validity */ + sql_statement = "SELECT Count(*) FROM test WHERE XB_IsValid(xml) = 1"; + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -14; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -15; + } + if (strcmp (results[1], "5") != 0) + { + fprintf (stderr, "Unexpected error: XB_IsValid() bad result: %s.\n", + results[1]); + return -16; + } + sqlite3_free_table (results); + +/* check #2: validated */ + sql_statement = + "SELECT Count(*) FROM test WHERE XB_IsSchemaValidated(xml) = 1"; + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -17; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -18; + } + if (strcmp (results[1], "4") != 0) + { + fprintf (stderr, + "Unexpected error: XB_IsSchemaValidated() bad result: %s.\n", + results[1]); + return -19; + } + sqlite3_free_table (results); + +/* freeing the Schema cache */ + sql_statement = "SELECT XB_CacheFlush()"; + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -20; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -21; + } + if (strcmp (results[1], "1") != 0) + { + fprintf (stderr, + "Unexpected error: XB_CacheFlush() bad result: %s.\n", + results[1]); + return -22; + } + sqlite3_free_table (results); + +/* check #3: validated */ + sql_statement = + "SELECT XB_GetFileId(xml), XB_GetParentId(xml), XB_GetTitle(xml), " + "XB_GetAbstract(xml), ST_Srid(XB_GetGeometry(xml)) " + "FROM test WHERE XB_IsIsoMetadata(xml) = 1"; + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -23; + } + if ((rows != 1) || (columns != 5)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -24; + } + if (strcmp (results[5], "029097fd-2ef2-487c-a5ca-6ec7a3dbac53") != 0) + { + fprintf (stderr, "Unexpected error: XB_GetFileId() bad result: %s.\n", + results[5]); + return -25; + } + if (strcmp (results[6], "024027fd-3ef2-487c-a8ca-6ec8a3dfac57") != 0) + { + fprintf (stderr, + "Unexpected error: XB_GetParentId() bad result: %s.\n", + results[6]); + return -26; + } + if (strcmp (results[7], "Image2000 Product 1 (nl2) Multispectral") != 0) + { + fprintf (stderr, "Unexpected error: XB_GetTitle() bad result: %s.\n", + results[7]); + return -27; + } + if (strcmp + (results[8], + "IMAGE2000 product 1 individual orthorectified scenes.") != 0) + { + fprintf (stderr, + "Unexpected error: XB_GetAbstract() bad result: %s.\n", + results[8]); + return -28; + } + if (strcmp (results[9], "4326") != 0) + { + fprintf (stderr, + "Unexpected error: ST_Srid(XB_Geometry()) bad result: %s.\n", + results[9]); + return -29; + } + sqlite3_free_table (results); + +/* creating the VirtualXPath table */ + sql_statement = + "CREATE VIRTUAL TABLE test_xp USING VirtualXPath ('test', 'xml')"; + ret = sqlite3_exec (db_handle, sql_statement, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CreateTable error: %s\n", err_msg); + sqlite3_free (err_msg); + return -30; + } + +/* test XPAth expression #1 */ + sql_statement = "SELECT Count(*) FROM test_xp WHERE xpath_expr = '/*'"; + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -31; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -32; + } + if (strcmp (results[1], "5") != 0) + { + fprintf (stderr, "Unexpected error: XPath #1 bad result: %s.\n", + results[1]); + return -33; + } + sqlite3_free_table (results); + +/* test XPAth expression #2 */ + sql_statement = "SELECT DISTINCT a.value, b.name FROM test_xp AS a " + "JOIN test AS b ON (b.id = a.pkid) " + "WHERE a.xpath_expr = '//author[@lastName=\"Conrad\"]/title/text()'"; + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -34; + } + if ((rows != 3) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -35; + } + if (strcmp (results[0], "value") != 0) + { + fprintf (stderr, "Unexpected error: XPath #2 bad result: %s.\n", + results[0]); + return -36; + } + if (strcmp (results[1], "name") != 0) + { + fprintf (stderr, "Unexpected error: XPath #2 bad result: %s.\n", + results[1]); + return -37; + } + if (strcmp (results[2], "Lord Jim") != 0) + { + fprintf (stderr, "Unexpected error: XPath #2 bad result: %s.\n", + results[2]); + return -38; + } + if (strcmp (results[3], "books.xml") != 0) + { + fprintf (stderr, "Unexpected error: XPath #2 bad result: %s.\n", + results[3]); + return -39; + } + if (strcmp (results[4], "The Secret Agent") != 0) + { + fprintf (stderr, "Unexpected error: XPath #2 bad result: %s.\n", + results[4]); + return -40; + } + if (strcmp (results[6], "Heart of Darkness") != 0) + { + fprintf (stderr, "Unexpected error: XPath #2 bad result: %s.\n", + results[6]); + return -41; + } + sqlite3_free_table (results); + +/* test XPAth expression #3 */ + sql_statement = "SELECT value FROM test_xp WHERE xpath_expr = " + "'//dflt:title[text()=\"Pulp Fiction\"]/../@lastName'"; + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -42; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -43; + } + if (strcmp (results[1], "Tarantino") != 0) + { + fprintf (stderr, "Unexpected error: XPath #3 bad result: %s.\n", + results[1]); + return -44; + } + sqlite3_free_table (results); + +/* test XPAth expression #4 */ + sql_statement = + "SELECT node FROM test_xp WHERE pkid = 2 AND xpath_expr = '/*'"; + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -45; + } + if ((rows != 1) || (columns != 1)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -46; + } + if (strcmp (results[1], "op:Opera") != 0) + { + fprintf (stderr, "Unexpected error: XPath #4 bad result: %s.\n", + results[1]); + return -47; + } + sqlite3_free_table (results); + +/* test XPAth expression #5 */ + sql_statement = "SELECT ROWID, pkid, sub, parent, attribute FROM test_xp " + "WHERE pkid > 1 AND pkid < 3 AND xpath_expr = '/*'"; + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -48; + } + if ((rows != 1) || (columns != 5)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -49; + } + if (strcmp (results[5], "2") != 0) + { + fprintf (stderr, "Unexpected error: XPath #5 bad result: %s.\n", + results[5]); + return -50; + } + if (strcmp (results[6], "2") != 0) + { + fprintf (stderr, "Unexpected error: XPath #5 bad result: %s.\n", + results[6]); + return -51; + } + if (strcmp (results[7], "0") != 0) + { + fprintf (stderr, "Unexpected error: XPath #5 bad result: %s.\n", + results[7]); + return -52; + } + if (results[8] != NULL) + { + fprintf (stderr, "Unexpected error: XPath #5 bad result: %s.\n", + results[8]); + return -53; + } + if (results[9] != NULL) + { + fprintf (stderr, "Unexpected error: XPath #5 bad result: %s.\n", + results[9]); + return -54; + } + sqlite3_free_table (results); + +/* test XPAth expression #6 */ + sql_statement = "SELECT parent, attribute FROM test_xp " + "WHERE pkid >= 1 AND pkid <= 3 AND " + "xpath_expr = '//op:author[@lastName=\"Rossini\"]/@firstName'"; + ret = + sqlite3_get_table (db_handle, sql_statement, &results, &rows, &columns, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Error: %s\n", err_msg); + sqlite3_free (err_msg); + return -55; + } + if ((rows != 1) || (columns != 2)) + { + fprintf (stderr, + "Unexpected error: select columns bad result: %i/%i.\n", + rows, columns); + return -56; + } + if (strcmp (results[2], "op:Opera") != 0) + { + fprintf (stderr, "Unexpected error: XPath #6 bad result: %s.\n", + results[2]); + return -57; + } + if (strcmp (results[3], "firstName") != 0) + { + fprintf (stderr, "Unexpected error: XPath #6 bad result: %s.\n", + results[3]); + return -58; + } + sqlite3_free_table (results); + +/* dropping the VirtualXPathL table */ + sql_statement = "DROP TABLE test_xp"; + ret = sqlite3_exec (db_handle, sql_statement, NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "Drop VirtualXPath Table error: %s\n", err_msg); + sqlite3_free (err_msg); + return -59; + } + + sqlite3_close (db_handle); + spatialite_cleanup_ex (cache); + +#endif /* end LIBXML2 conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/check_wfsin.c b/src/spatialite/test/check_wfsin.c new file mode 100644 index 0000000..8ca90ed --- /dev/null +++ b/src/spatialite/test/check_wfsin.c @@ -0,0 +1,826 @@ +/* + + check_wfsin.c -- SpatiaLite Test Case + + Author: Sandro Furieri + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2013 +the Initial Developer. All Rights Reserved. + +Contributor(s): + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" +#include "spatialite/gg_wfs.h" + +int +main (int argc, char *argv[]) +{ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + int row_count; + int count; + int srid; + gaiaWFScatalogPtr catalog = NULL; + gaiaWFSitemPtr lyr; + gaiaWFSschemaPtr schema; + gaiaWFScolumnPtr column; + char *str; + const char *name; + int type; + int dims; + int nillable; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + +#ifdef ENABLE_LIBXML2 /* only if LIBXML2 is supported */ + ret = + load_from_wfs (handle, "./test.wfs", NULL, "topp:p02", 0, "test_wfs1", + "objectid", 1, &row_count, &err_msg, NULL, NULL); + if (!ret) + { + fprintf (stderr, "load_from_wfs() error for test.wfs (1): %s\n", + err_msg); + free (err_msg); + sqlite3_close (handle); + return -3; + } + if (row_count != 3) + { + fprintf (stderr, "unexpected row count for test_wfs: %i\n", + row_count); + sqlite3_close (handle); + return -4; + } + + ret = + load_from_wfs (handle, "./test.wfs", NULL, "topp:p02", 0, "test_wfs2", + NULL, 0, &row_count, &err_msg, NULL, NULL); + if (!ret) + { + fprintf (stderr, "load_from_wfs() error for test.wfs (2): %s\n", + err_msg); + free (err_msg); + sqlite3_close (handle); + return -5; + } + if (row_count != 3) + { + fprintf (stderr, "unexpected row count for test_wfs: %i\n", + row_count); + sqlite3_close (handle); + return -6; + } + + catalog = create_wfs_catalog ("./getcapabilities-1.0.0.wfs", &err_msg); + if (catalog == NULL) + { + fprintf (stderr, + "create_wfs_catalog() error for getcapabilities-1.0.0.wfs: %s\n", + err_msg); + free (err_msg); + sqlite3_close (handle); + return -7; + } + + count = get_wfs_catalog_count (catalog); + if (count != 49) + { + fprintf (stderr, + "get_wfs_catalog_count() 1.0.0 error: got %d, expected 49\n", + count); + sqlite3_close (handle); + return -8; + } + + lyr = get_wfs_catalog_item (catalog, 2); + if (lyr == NULL) + { + fprintf (stderr, "get_wfs_catalog_item() 1.0.0 error (NULL)\n"); + sqlite3_close (handle); + return -9; + } + + str = (char *) get_wfs_item_name (lyr); + if (str == NULL) + { + fprintf (stderr, "get_wfs_item_name() 1.0.0 error (NULL)\n"); + sqlite3_close (handle); + return -10; + } + if (strcmp (str, "tiger:tiger_roads") != 0) + { + fprintf (stderr, + "get_wfs_item_name() 1.0.0 error: got \"%s\", expected \"tiger:tiger_roads\"\n", + str); + sqlite3_close (handle); + return -11; + } + + str = (char *) get_wfs_item_title (lyr); + if (str == NULL) + { + fprintf (stderr, "get_wfs_item_title() 1.0.0 error (NULL)\n"); + sqlite3_close (handle); + return -12; + } + if (strcmp (str, "Manhattan (NY) roads") != 0) + { + fprintf (stderr, + "get_wfs_item_title() 1.0.0 error: got \"%s\", expected \"Manhattan (NY) roads\"\n", + str); + sqlite3_close (handle); + return -13; + } + + str = (char *) get_wfs_item_abstract (lyr); + if (str == NULL) + { + fprintf (stderr, "get_wfs_item_abstract() error (NULL)\n"); + sqlite3_close (handle); + return -14; + } + if (strcmp (str, "Highly simplified road layout of Manhattan in New York..") + != 0) + { + fprintf (stderr, + "get_wfs_item_abstract() 1.0.0 error: got \"%s\", expected \"Highly simplified road layout of Manhattan in New York..\"\n", + str); + sqlite3_close (handle); + return -15; + } + + count = get_wfs_layer_srid_count (lyr); + if (count != 1) + { + fprintf (stderr, + "get_wfs_layer_srid_count() 1.0.0 error: got %d, expected 1\n", + count); + sqlite3_close (handle); + return -16; + } + + srid = get_wfs_layer_srid (lyr, 0); + if (srid != 4326) + { + fprintf (stderr, + "get_wfs_layer_srid() 1.0.0 error: got %d, expected 4326\n", + srid); + sqlite3_close (handle); + return -17; + } + + count = get_wfs_keyword_count (lyr); + if (count != 3) + { + fprintf (stderr, + "get_wfs_keyword_count() 1.0.0 error: got %d, expected 3\n", + count); + sqlite3_close (handle); + return -18; + } + + str = (char *) get_wfs_keyword (lyr, 2); + if (strcmp (str, "roads") != 0) + { + fprintf (stderr, + "get_wfs_keyword() 1.0.0 error: got \"%s\", expected \"roads\"\n", + str); + sqlite3_close (handle); + return -19; + } + + str = (char *) get_wfs_base_request_url (catalog); + if (strcmp (str, "http://www.gaia-gis.it:8080/geoserver/wfs?") != 0) + { + fprintf (stderr, + "get_wfs_base_request_url() 1.0.0 error: got \"%s\", expected \"http://www.gaia-gis.it:8080/geoserver/wfs?\"\n", + str); + sqlite3_close (handle); + return -20; + } + + str = + (char *) get_wfs_request_url (catalog, "sf:roads", "1.0.0", 26713, -1); + if (strcmp + (str, + "http://www.gaia-gis.it:8080/geoserver/wfs?service=WFS&version=1.0.0&request=GetFeature&typeName=sf:roads&srsName=EPSG:26713") + != 0) + { + fprintf (stderr, + "get_wfs_request_url() 1.0.0 error: got \"%s\", expected \"http://www.gaia-gis.it:8080/geoserver/wfs?service=WFS&version=1.0.0&request=GetFeature&typeName=sf:roads&srsName=EPSG:26713\"\n", + str); + sqlite3_close (handle); + return -21; + } + free (str); + + str = (char *) get_wfs_describe_url (catalog, "sf:roads", "1.0.0"); + if (strcmp + (str, + "http://www.gaia-gis.it:8080/geoserver/wfs?service=WFS&version=1.0.0&request=DescribeFeatureType&typeName=sf:roads") + != 0) + { + fprintf (stderr, + "get_wfs_describe_url() 1.0.0 error: got \"%s\", expected \"http://www.gaia-gis.it:8080/geoserver/wfs?service=WFS&version=1.0.0&request=DescribeFeatureType&typeName=sf:roads\"\n", + str); + sqlite3_close (handle); + return -22; + } + free (str); + destroy_wfs_catalog (catalog); + + catalog = create_wfs_catalog ("./getcapabilities-1.1.0.wfs", &err_msg); + if (catalog == NULL) + { + fprintf (stderr, + "create_wfs_catalog() error for getcapabilities-1.1.0.wfs: %s\n", + err_msg); + free (err_msg); + sqlite3_close (handle); + return -23; + } + + count = get_wfs_catalog_count (catalog); + if (count != 49) + { + fprintf (stderr, + "get_wfs_catalog_count() 1.1.0 error: got %d, expected 49\n", + count); + sqlite3_close (handle); + return -24; + } + + lyr = get_wfs_catalog_item (catalog, 3); + if (lyr == NULL) + { + fprintf (stderr, "get_wfs_catalog_item() 1.1.0 error (NULL)\n"); + sqlite3_close (handle); + return -25; + } + + str = (char *) get_wfs_item_name (lyr); + if (str == NULL) + { + fprintf (stderr, "get_wfs_item_name() 1.1.0 error (NULL)\n"); + sqlite3_close (handle); + return -26; + } + if (strcmp (str, "sf:archsites") != 0) + { + fprintf (stderr, + "get_wfs_item_name() 1.1.0 error: got \"%s\", expected \"sf:archsites\"\n", + str); + sqlite3_close (handle); + return -27; + } + + str = (char *) get_wfs_item_title (lyr); + if (str == NULL) + { + fprintf (stderr, "get_wfs_item_title() error (NULL)\n"); + sqlite3_close (handle); + return -28; + } + if (strcmp (str, "Spearfish archeological sites") != 0) + { + fprintf (stderr, + "get_wfs_item_title() 1.1.0 error: got \"%s\", expected \"Spearfish archeological sites\"\n", + str); + sqlite3_close (handle); + return -29; + } + + str = (char *) get_wfs_item_abstract (lyr); + if (str == NULL) + { + fprintf (stderr, "get_wfs_item_abstract() 1.1.0 error (NULL)\n"); + sqlite3_close (handle); + return -30; + } + if (strcmp + (str, + "Sample data from GRASS, archeological sites location, Spearfish, South Dakota, USA") + != 0) + { + fprintf (stderr, + "get_wfs_item_abstract() 1.1.0 error: got \"%s\", expected \"Sample data from GRASS, archeological sites location, Spearfish, South Dakota, USA\"\n", + str); + sqlite3_close (handle); + return -31; + } + + count = get_wfs_layer_srid_count (lyr); + if (count != 1) + { + fprintf (stderr, + "get_wfs_layer_srid_count() 1.1.0 error: got %d, expected 1\n", + count); + sqlite3_close (handle); + return -32; + } + + srid = get_wfs_layer_srid (lyr, 0); + if (srid != 26713) + { + fprintf (stderr, + "get_wfs_layer_srid() 1.1.0 error: got %d, expected 26713\n", + srid); + sqlite3_close (handle); + return -33; + } + + srid = get_wfs_layer_srid (lyr, 10); + if (srid != -1) + { + fprintf (stderr, + "get_wfs_layer_srid() 1.1.0 error: got %d, expected -1\n", + srid); + sqlite3_close (handle); + return -34; + } + + count = get_wfs_keyword_count (lyr); + if (count != 4) + { + fprintf (stderr, + "get_wfs_keyword_count() 1.1.0 error: got %d, expected 4\n", + count); + sqlite3_close (handle); + return -35; + } + + str = (char *) get_wfs_keyword (lyr, 1); + if (strcmp (str, "spearfish") != 0) + { + fprintf (stderr, + "get_wfs_keyword() 1.1.0 error: got \"%s\", expected \"spearfish\"\n", + str); + sqlite3_close (handle); + return -36; + } + + str = (char *) get_wfs_keyword (lyr, 100); + if (str != NULL) + { + fprintf (stderr, "get_wfs_keyword() 1.1.0 error: expected NULL\n"); + sqlite3_close (handle); + return -37; + } + + str = (char *) get_wfs_base_request_url (catalog); + if (strcmp (str, "http://www.gaia-gis.it:8080/geoserver/wfs?") != 0) + { + fprintf (stderr, + "get_wfs_base_request_url() 1.1.0 error: got \"%s\", expected \"http://www.gaia-gis.it:8080/geoserver/wfs?\"\n", + str); + sqlite3_close (handle); + return -38; + } + + str = get_wfs_request_url (catalog, "sf:roads", "1.1.0", 26713, 100); + if (strcmp + (str, + "http://www.gaia-gis.it:8080/geoserver/wfs?service=WFS&version=1.1.0&request=GetFeature&typeName=sf:roads&srsName=urn:x-ogc:def:crs:EPSG:26713&maxFeatures=100") + != 0) + { + fprintf (stderr, + "get_wfs_request_url() 1.1.0 error: got \"%s\", expected \"http://www.gaia-gis.it:8080/geoserver/wfs?service=WFS&version=1.1.0&request=GetFeature&typeName=sf:roads&srsName=urn:x-ogc:def:crs:EPSG:26713&maxFeatures=100\"\n", + str); + sqlite3_close (handle); + return -39; + } + free (str); + + str = get_wfs_request_url (catalog, NULL, "1.1.0", 26713, -1); + if (str != NULL) + { + fprintf (stderr, + "get_wfs_request_url() 1.1.0 error: expected NULL\n"); + sqlite3_close (handle); + return -40; + } + free (str); + + str = get_wfs_request_url (catalog, "sf:roads", NULL, -1, 100); + if (strcmp + (str, + "http://www.gaia-gis.it:8080/geoserver/wfs?service=WFS&version=1.1.0&request=GetFeature&typeName=sf:roads&maxFeatures=100") + != 0) + { + fprintf (stderr, + "get_wfs_request_url() 1.1.0 error: got \"%s\", expected \"http://www.gaia-gis.it:8080/geoserver/wfs?service=WFS&version=1.1.0&request=GetFeature&typeName=sf:roads&maxFeatures=100\"\n", + str); + sqlite3_close (handle); + return -41; + } + free (str); + + str = get_wfs_request_url (catalog, "sf:roads", NULL, 1234, 100); + if (strcmp + (str, + "http://www.gaia-gis.it:8080/geoserver/wfs?service=WFS&version=1.1.0&request=GetFeature&typeName=sf:roads&maxFeatures=100") + != 0) + { + fprintf (stderr, + "get_wfs_request_url() 1.1.0 error: got \"%s\", expected \"http://www.gaia-gis.it:8080/geoserver/wfs?service=WFS&version=1.1.0&request=GetFeature&typeName=sf:roads&maxFeatures=100\"\n", + str); + sqlite3_close (handle); + return -42; + } + free (str); + + str = get_wfs_describe_url (catalog, "sf:roads", "1.1.0"); + if (strcmp + (str, + "http://www.gaia-gis.it:8080/geoserver/wfs?service=WFS&version=1.1.0&request=DescribeFeatureType&typeName=sf:roads") + != 0) + { + fprintf (stderr, + "get_wfs_describe_url() 1.1.0 error: got \"%s\", expected \"http://www.gaia-gis.it:8080/geoserver/wfs?service=WFS&version=1.1.0&request=DescribeFeatureType&typeName=sf:roads\"\n", + str); + sqlite3_close (handle); + return -43; + } + free (str); + + str = get_wfs_describe_url (catalog, NULL, "1.1.0"); + if (str != NULL) + { + fprintf (stderr, + "get_wfs_describe_url() 1.1.0 error: : expected NULL\n"); + sqlite3_close (handle); + return -44; + } + free (str); + + str = get_wfs_describe_url (catalog, "sf:roads", NULL); + if (strcmp + (str, + "http://www.gaia-gis.it:8080/geoserver/wfs?service=WFS&version=1.1.0&request=DescribeFeatureType&typeName=sf:roads") + != 0) + { + fprintf (stderr, + "get_wfs_describe_url() 1.1.0 error: got \"%s\", expected \"http://www.gaia-gis.it:8080/geoserver/wfs?service=WFS&version=1.1.0&request=DescribeFeatureType&typeName=sf:roads\"\n", + str); + sqlite3_close (handle); + return -45; + } + free (str); + destroy_wfs_catalog (catalog); + + lyr = get_wfs_catalog_item (NULL, 3); + if (lyr != NULL) + { + fprintf (stderr, "get_wfs_catalog_item() 1.1.0 error (NULL)\n"); + sqlite3_close (handle); + return -46; + } + + str = (char *) get_wfs_item_name (NULL); + if (str != NULL) + { + fprintf (stderr, "get_wfs_item_name() 1.1.0 error (NULL)\n"); + sqlite3_close (handle); + return -47; + } + + str = (char *) get_wfs_item_title (NULL); + if (str != NULL) + { + fprintf (stderr, "get_wfs_item_title() error (NULL)\n"); + sqlite3_close (handle); + return -48; + } + + str = (char *) get_wfs_item_abstract (NULL); + if (str != NULL) + { + fprintf (stderr, "get_wfs_item_abstract() 1.1.0 error (NULL)\n"); + sqlite3_close (handle); + return -49; + } + + count = get_wfs_layer_srid_count (NULL); + if (count != -1) + { + fprintf (stderr, + "get_wfs_layer_srid_count() 1.1.0 error: got %d, expected -1\n", + count); + sqlite3_close (handle); + return -50; + } + + srid = get_wfs_layer_srid (NULL, 0); + if (srid != -1) + { + fprintf (stderr, + "get_wfs_layer_srid() 1.1.0 error: got %d, expected -1\n", + srid); + sqlite3_close (handle); + return -51; + } + + count = get_wfs_keyword_count (NULL); + if (count != -1) + { + fprintf (stderr, + "get_wfs_keyword_count() 1.1.0 error: got %d, expected -1\n", + count); + sqlite3_close (handle); + return -52; + } + + str = (char *) get_wfs_keyword (NULL, 1); + if (str != NULL) + { + fprintf (stderr, "get_wfs_keyword() 1.1.0 error: expected NULL\n"); + sqlite3_close (handle); + return -53; + } + + str = (char *) get_wfs_keyword (NULL, 100); + if (str != NULL) + { + fprintf (stderr, "get_wfs_keyword() 1.1.0 error: expected NULL\n"); + sqlite3_close (handle); + return -54; + } + + str = (char *) get_wfs_base_request_url (NULL); + if (str != NULL) + { + fprintf (stderr, "get_wfs_base_request_url() error: expected NULL\n"); + sqlite3_close (handle); + return -55; + } + + str = (char *) get_wfs_base_describe_url (NULL); + if (str != NULL) + { + fprintf (stderr, + "get_wfs_base_describe_url() error: expected NULL\n"); + sqlite3_close (handle); + return -56; + } + + str = (char *) get_wfs_request_url (NULL, "sf:roads", "1.1.0", 26713, -1); + if (str != NULL) + { + fprintf (stderr, "get_wfs_request_url() error: expected NULL\n"); + sqlite3_close (handle); + return -57; + } + + str = (char *) get_wfs_describe_url (NULL, "sf:roads", "1.1.0"); + if (str != NULL) + { + fprintf (stderr, "get_wfs_describe_url() error: expected NULL\n"); + sqlite3_close (handle); + return -58; + } + destroy_wfs_catalog (NULL); + + schema = + create_wfs_schema ("./describefeaturetype.wfs", "sf:roads", &err_msg); + if (schema == NULL) + { + fprintf (stderr, + "create_wfs_schema() error for describefeaturetype.wfs: %s\n", + err_msg); + free (err_msg); + sqlite3_close (handle); + return -59; + } + + count = get_wfs_schema_column_count (schema); + if (count != 8) + { + fprintf (stderr, + "get_wfs_schema_column_count() error: got %d, expected 8\n", + count); + sqlite3_close (handle); + return -60; + } + + column = get_wfs_schema_column (schema, 5); + if (column == NULL) + { + fprintf (stderr, "get_wfs_schema_column() error (NULL)\n"); + sqlite3_close (handle); + return -61; + } + + if (get_wfs_schema_column_info (column, &name, &type, &nillable) == 0) + { + fprintf (stderr, "get_wfs_schema_column_info() error\n"); + sqlite3_close (handle); + return -62; + } + + if (strcmp (name, "codcom") != 0) + { + fprintf (stderr, + "get_wfs_schema_column_info() NAME error: got \"%s\", expected \"codcom\"\n", + name); + sqlite3_close (handle); + return -63; + } + + if (type != SQLITE_TEXT) + { + fprintf (stderr, + "get_wfs_schema_column_info() TYPE error: got %d, expected %d\n", + type, SQLITE_TEXT); + sqlite3_close (handle); + return -64; + } + + if (nillable == 0) + { + fprintf (stderr, + "get_wfs_schema_column_info() NILLABLE error: got %d, expected 1\n", + nillable); + sqlite3_close (handle); + return -65; + } + + if (get_wfs_schema_geometry_info + (schema, &name, &type, &srid, &dims, &nillable) == 0) + { + fprintf (stderr, "get_wfs_schema_geometry_info() error\n"); + sqlite3_close (handle); + return -66; + } + + if (strcmp (name, "geometry") != 0) + { + fprintf (stderr, + "get_wfs_schema_geometry_info() NAME error: got \"%s\", expected \"geometry\"\n", + name); + sqlite3_close (handle); + return -67; + } + + if (type != GAIA_MULTIPOLYGON) + { + fprintf (stderr, + "get_wfs_schema_geometry_info() TYPE error: got %d, expected %d\n", + type, GAIA_MULTIPOLYGON); + sqlite3_close (handle); + return -68; + } + + if (srid != -1) + { + fprintf (stderr, + "get_wfs_schema_geometry_info() TYPE error: got %d, expected -1\n", + srid); + sqlite3_close (handle); + return -69; + } + + if (dims != 2) + { + fprintf (stderr, + "get_wfs_schema_geometry_info() DIMS error: got %d, expected 2\n", + dims); + sqlite3_close (handle); + return -70; + } + + if (nillable == 0) + { + fprintf (stderr, + "get_wfs_schema_geometry_info() NILLABLE error: got %d, expected 1\n", + nillable); + sqlite3_close (handle); + return -71; + } + destroy_wfs_schema (schema); + + schema = create_wfs_schema (NULL, NULL, &err_msg); + if (schema != NULL) + { + fprintf (stderr, "create_wfs_schema() unexpected result for NULL\n"); + free (err_msg); + sqlite3_close (handle); + return -72; + } + + count = get_wfs_schema_column_count (NULL); + if (count != -1) + { + fprintf (stderr, + "get_wfs_schema_column_count() unexpected result for NULL\n"); + sqlite3_close (handle); + return -73; + } + + column = get_wfs_schema_column (NULL, 5); + if (column != NULL) + { + fprintf (stderr, + "get_wfs_schema_column() unexpected result for NULL\n"); + sqlite3_close (handle); + return -74; + } + + if (get_wfs_schema_column_info (NULL, &name, &type, &nillable) != 0) + { + fprintf (stderr, + "get_wfs_schema_column_info() unexpected result for NULL\n"); + sqlite3_close (handle); + return -75; + } + + if (get_wfs_schema_geometry_info + (NULL, &name, &type, &srid, &dims, &nillable) != 0) + { + fprintf (stderr, + "get_wfs_schema_geometry_info() unexpected result for NULL\n"); + sqlite3_close (handle); + return -76; + } + destroy_wfs_schema (NULL); + +#endif /* end LIBXML2 conditional */ + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -77; + } + + spatialite_cleanup_ex (cache); + spatialite_shutdown (); + + return 0; +} diff --git a/src/spatialite/test/check_xls_load.c b/src/spatialite/test/check_xls_load.c new file mode 100644 index 0000000..d1cad77 --- /dev/null +++ b/src/spatialite/test/check_xls_load.c @@ -0,0 +1,159 @@ +/* + + check_xls_load.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_FREEXL /* only if FreeXL is supported */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + unsigned int row_count; + int rcnt; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory db: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + ret = + load_XL (handle, "./testcase1.xls", "test1", 0, 0, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "load_XL() error: %s\n", err_msg); + sqlite3_close (handle); + return -3; + } + if (row_count != 17) + { + fprintf (stderr, "load_XL() unexpected row count: %u\n", row_count); + sqlite3_close (handle); + return -4; + } + + ret = + load_XL (handle, "./testcase1.xls", "test2", 1, 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "load_XL() error sheet 2: %s\n", err_msg); + sqlite3_close (handle); + return -5; + } + if (row_count != 19) + { + fprintf (stderr, "load_XL() unexpected row count sheet 2: %u\n", + row_count); + sqlite3_close (handle); + return -6; + } + + check_duplicated_rows (handle, "test1", &rcnt); + if (rcnt != 0) + { + fprintf (stderr, + "check_duplicated_rows() unexpected duplicate count: %d\n", + rcnt); + sqlite3_close (handle); + return -8; + } + + check_duplicated_rows (handle, "test2", &rcnt); + if (rcnt != 2) + { + fprintf (stderr, + "check_duplicated_rows() unexpected duplicate count sheet 2: %d\n", + rcnt); + sqlite3_close (handle); + return -10; + } + + remove_duplicated_rows (handle, "test1"); + + remove_duplicated_rows (handle, "test2"); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -11; + } + + spatialite_cleanup_ex (cache); +#endif /* end FreeXL conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/describefeaturetype.wfs b/src/spatialite/test/describefeaturetype.wfs new file mode 100644 index 0000000..a89cf1a --- /dev/null +++ b/src/spatialite/test/describefeaturetype.wfs @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/spatialite/test/empty.png b/src/spatialite/test/empty.png new file mode 100644 index 0000000000000000000000000000000000000000..c408fe3b1759e854194d5a909138d3ea17507eea GIT binary patch literal 166 zcmeAS@N?(olHy`uVBq!ia0vp^YCvqp!NkD87~JRc1<2tn@Q5sCVBk9n#K#zO9QWG* z1tUCN978H@y}fG4#h}Q;8rXg3|EZg0xgt(t;T8KQTlgJmm^kzCREgqS*V}7nzZIV< zF5dlUV^-^}sspe1dtClaHu>nGBGj4lN0!gT+Y=6c=E^Z;inU}-D7pZ&gTd3)&t;uc GLK6V>*f?MS literal 0 HcmV?d00001 diff --git a/src/spatialite/test/empty.tif b/src/spatialite/test/empty.tif new file mode 100644 index 0000000000000000000000000000000000000000..efead20de3e9ce863560f960aefe9c61ebacebdc GIT binary patch literal 39827 zcmeI59R3L|R%(q#LADk?!u6ZUh7b1OowS=?0~{JC$ygZk1F@1w}AGqdbHJMX^xetPDa>-mM68iE~xK%7J1BYq*ype7{hg@*cfGNV%>k*D(+Ya|*1 z{qHsBP#2<~%owQo?8%IVnh8&@NAx2}Pd-O|3rTkRIqE*-r*rxkk`jTs!{6U+L{j}b zcOt1zzKePoB{^JiRzGu7>NTGqb=NBAl}i zy6G+#oAOcNKkTLFWzE#)AdBp0;4NPA6u6^o5U1}&m9Fb)ZP-OO}+QK@>t^?2_-3hxLlsr7D>7ucbZy}&NeA! zl6r|=ncfa*`m|e%S(U*q85L>FkZqmO9$AK7<-BW?$$N6Dq~}}SZDt?HGp64k1wOU- zc!8RX04t=&a{of6J`Y9ofb{_db+QIq(unP+^O(ojm}i2zo_q{bWhciC?aA3c7p2TX z6495tA2#YFOdT_jcYuW(p}-hFlz$MeT57rE#(1 zD^B$ATd&sT%CC`Q+g}4ZUsrv@#mB)6?p~?>7NyQX9@W2AbA%hC!jd?=QF|1I{tE*= zNb34aUs+~SoKP9dm*0ZrnTR9gtj2wN?F6Y}6s*UO&V^h_iY~D?zFfudwdoX<3YEj`&@uL3u$D( zwa46Xr~*^Mu&w8OKriw)+WoFe)eaK$#MmJ{bk*+yq#209`{-*N+O7C0qX!sj-W>aZt`Fx74abX)VKjWO3bwy)k4%X-05xAhb4fppF|YrWGI`UK^INw)g! zK%Dg$vu-x_c8?j0G1_@NEH7MD&d#P9pp-ozRTTqMK_kzR?N^SVk$ z7%saSXIO8}OA#%<7B~0#juc&-;(EN1K(-cJlJZ9UyjQ0sZ<^|6f>He|578|3w+Zu~ zf8CeL(R`O^EO;?asX%)xal!j)j#i28c9L;}d5uwp{!Y@u;hiqa8pGXW6T$3p#|GoQ z!(_2!jlRMEG)3Fz`_Cx3oIpY01*Hp z07L+Y02nMVSYWWgV1dEHAr~BS!66qMa={@Ns0cts04f4d5rB#SR0JT?0+|-bv_Pf> zGA+=-f({mRu%Lql9V{3Pz-RzQ127tZ(EyAF;N$`)7dW}V$pua>u*!l}7Ob*hl?AIT zWD!6X0b~(C76D`tKo$Xny+GItguOu63xvHuniiyKL7En%X+fG6#1%qZA;c9zTp`32 zLR=x_!9pG^bK_?eOJLg^v2%0jCww8}!OEVRl(Z8y|*Lv1(I zc0+A --- June 1998 + */ + +#ifndef _FNMATCH_H + +#define _FNMATCH_H 1 + +#ifdef __cplusplus +extern "C" +{ +#endif + +#define FNM_NOMATCH 1 /* Match failed. */ +#define FNM_NOESCAPE 0x01 /* Disable backslash escaping. */ +#define FNM_PATHNAME 0x02 /* Slash must be matched by slash. */ +#define FNM_PERIOD 0x04 /* Period must be matched by period. */ +#define FNM_LEADING_DIR 0x08 /* Ignore / after Imatch. */ +#define FNM_CASEFOLD 0x10 /* Case insensitive search. */ +#define FNM_PREFIX_DIRS 0x20 /* Directory prefixes of pattern match too. */ + +/* Value returned by `fnmatch' if STRING does not match PATTERN. */ +#undef FNM_NOMATCH +#define FNM_NOMATCH 1 + +#if !defined(__STDC__) && (defined(WIN32)|| defined(TARGET_OS_MAC)) +# define __STDC__ 1 +#endif + +/* Match STRING against the filename pattern PATTERN, + returning zero if it matches, FNM_NOMATCH if not. */ +#if __STDC__ + extern int fnmatch (const char *pattern, const char *string, int flags); +#else + extern int fnmatch (); +#endif + +#if defined (__CYGWIN32__) || defined (WIN32) + /* Under Windows NT, filenames are case-insensitive, and both / and \ + are path component separators. */ + +# define FOLD_FN_CHAR(c) (WNT_filename_classes[(unsigned char) (c)]) + extern unsigned char WNT_filename_classes[]; +#endif /* defined (__CYGWIN32__) || defined (WIN32) */ + +#ifdef __cplusplus +} +#endif + +#endif /* fnmatch.h */ diff --git a/src/spatialite/test/fnmatch_impl4win.h b/src/spatialite/test/fnmatch_impl4win.h new file mode 100644 index 0000000..56bfa70 --- /dev/null +++ b/src/spatialite/test/fnmatch_impl4win.h @@ -0,0 +1,198 @@ +/* + * Copyright (c) 1989, 1993, 1994 + * The Regents of the University of California. All rights reserved. + * + * This code is derived from software contributed to Berkeley by + * Guido van Rossum. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. All advertising materials mentioning features or use of this software + * must display the following acknowledgement: + * This product includes software developed by the University of + * California, Berkeley and its contributors. + * 4. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * From FreeBSD fnmatch.c 1.11 + * $Id: fnmatch.c 273994 2009-01-20 01:37:48Z pajoye $ + */ + +#if defined(LIBC_SCCS) && !defined(lint) +static char sccsid[] = "@(#)fnmatch.c 8.2 (Berkeley) 4/16/94"; +#endif /* LIBC_SCCS and not lint */ + +/* + * Function fnmatch() as specified in POSIX 1003.2-1992, section B.6. + * Compares a filename or pathname to a pattern. + */ + +#define EOS '\0' + +static const char *rangematch (const char *, char, int); + +int +fnmatch (const char *pattern, const char *string, int flags) +{ + const char *stringstart; + char c, test; + + for (stringstart = string;;) + switch (c = *pattern++) + { + case EOS: + if ((flags & FNM_LEADING_DIR) && *string == '/') + return (0); + return (*string == EOS ? 0 : FNM_NOMATCH); + case '?': + if (*string == EOS) + return (FNM_NOMATCH); + if (*string == '/' && (flags & FNM_PATHNAME)) + return (FNM_NOMATCH); + if (*string == '.' && (flags & FNM_PERIOD) && + (string == stringstart || + ((flags & FNM_PATHNAME) && *(string - 1) == '/'))) + return (FNM_NOMATCH); + ++string; + break; + case '*': + c = *pattern; + /* Collapse multiple stars. */ + while (c == '*') + c = *++pattern; + + if (*string == '.' && (flags & FNM_PERIOD) && + (string == stringstart || + ((flags & FNM_PATHNAME) && *(string - 1) == '/'))) + return (FNM_NOMATCH); + + /* Optimize for pattern with * at end or before /. */ + if (c == EOS) + if (flags & FNM_PATHNAME) + return ((flags & FNM_LEADING_DIR) || + strchr (string, '/') == NULL ? 0 : FNM_NOMATCH); + else + return (0); + else if (c == '/' && flags & FNM_PATHNAME) + { + if ((string = strchr (string, '/')) == NULL) + return (FNM_NOMATCH); + break; + } + + /* General case, use recursion. */ + while ((test = *string) != EOS) + { + if (!fnmatch (pattern, string, flags & ~FNM_PERIOD)) + return (0); + if (test == '/' && flags & FNM_PATHNAME) + break; + ++string; + } + return (FNM_NOMATCH); + case '[': + if (*string == EOS) + return (FNM_NOMATCH); + if (*string == '/' && flags & FNM_PATHNAME) + return (FNM_NOMATCH); + if ((pattern = rangematch (pattern, *string, flags)) == NULL) + return (FNM_NOMATCH); + ++string; + break; + case '\\': + if (!(flags & FNM_NOESCAPE)) + { + if ((c = *pattern++) == EOS) + { + c = '\\'; + --pattern; + } + } + /* FALLTHROUGH */ + default: + if (c == *string) + ; + else if ((flags & FNM_CASEFOLD) && + (tolower ((unsigned char) c) == + tolower ((unsigned char) *string))) + ; + else if ((flags & FNM_PREFIX_DIRS) && *string == EOS && + (c == '/' && string != stringstart || + string == stringstart + 1 && *stringstart == '/')) + return (0); + else + return (FNM_NOMATCH); + string++; + break; + } + /* NOTREACHED */ +} + +static const char * +rangematch (const char *pattern, char test, int flags) +{ + int negate, ok; + char c, c2; + + /* + * A bracket expression starting with an unquoted circumflex + * character produces unspecified results (IEEE 1003.2-1992, + * 3.13.2). This implementation treats it like '!', for + * consistency with the regular expression syntax. + * J.T. Conklin (conklin@ngai.kaleida.com) + */ + if ((negate = (*pattern == '!' || *pattern == '^'))) + ++pattern; + + if (flags & FNM_CASEFOLD) + test = tolower ((unsigned char) test); + + for (ok = 0; (c = *pattern++) != ']';) + { + if (c == '\\' && !(flags & FNM_NOESCAPE)) + c = *pattern++; + if (c == EOS) + return (NULL); + + if (flags & FNM_CASEFOLD) + c = tolower ((unsigned char) c); + + if (*pattern == '-' && (c2 = *(pattern + 1)) != EOS && c2 != ']') + { + pattern += 2; + if (c2 == '\\' && !(flags & FNM_NOESCAPE)) + c2 = *pattern++; + if (c2 == EOS) + return (NULL); + + if (flags & FNM_CASEFOLD) + c2 = tolower ((unsigned char) c2); + + if ((unsigned char) c <= (unsigned char) test && + (unsigned char) test <= (unsigned char) c2) + ok = 1; + } + else if (c == test) + ok = 1; + } + return (ok == negate ? NULL : pattern); +} diff --git a/src/spatialite/test/getcapabilities-1.0.0.wfs b/src/spatialite/test/getcapabilities-1.0.0.wfs new file mode 100644 index 0000000..5d729c2 --- /dev/null +++ b/src/spatialite/test/getcapabilities-1.0.0.wfs @@ -0,0 +1 @@ +WFSGeoServer Web Feature ServiceThis is the reference implementation of WFS 1.0.0 and WFS 1.1.0, supports all WFS operations including Transaction.WFS, WMS, GEOSERVERhttp://www.gaia-gis.it:8080/geoserver/wfsNONENONEtiger:poly_landmarksManhattan (NY) landmarksManhattan landmarks, identifies water, lakes, parks, interesting buildilngslandmarks, DS_poly_landmarks, manhattan, poly_landmarksEPSG:4326tiger:poiManhattan (NY) points of interestPoints of interest in New York, New York (on Manhattan). One of the attributes contains the name of a file with a picture of the point of interest.poi, Manhattan, DS_poi, points_of_interestEPSG:4326tiger:tiger_roadsManhattan (NY) roadsHighly simplified road layout of Manhattan in New York..DS_tiger_roads, tiger_roads, roadsEPSG:4326sf:archsitesSpearfish archeological sitesSample data from GRASS, archeological sites location, Spearfish, South Dakota, USAarchsites, spearfish, sfArchsites, archeologyEPSG:26713sf:bugsitesSpearfish bug locationsSample data from GRASS, bug sites location, Spearfish, South Dakota, USAspearfish, sfBugsites, insects, bugsites, tiger_beetlesEPSG:26713sf:restrictedSpearfish restricted areasSample data from GRASS, restricted areas, Spearfish, South Dakota, USAspearfish, restricted, areas, sfRestrictedEPSG:26713sf:roadsSpearfish roadsSample data from GRASS, road layout, Spearfish, South Dakota, USAsfRoads, spearfish, roadsEPSG:26713sf:streamsSpearfish streamsSample data from GRASS, streams, Spearfish, South Dakota, USAspearfish, sfStreams, streamsEPSG:26713topp:tasmania_citiesTasmania citiesCities in Tasmania (actually, just the capital)cities, TasmaniaEPSG:4326topp:tasmania_roadsTasmania roadsMain Tasmania roadsRoads, TasmaniaEPSG:4326topp:tasmania_state_boundariesTasmania state boundariesTasmania state boundariesboundaries, tasmania_state_boundaries, TasmaniaEPSG:4326topp:tasmania_water_bodiesTasmania water bodiesTasmania water bodiesLakes, Bodies, Australia, Water, TasmaniaEPSG:4326topp:statesUSA PopulationThis is some census data on the states.census, united, boundaries, state, statesEPSG:4326tiger:giant_polygonWorld rectangleA simple rectangular polygon covering most of the world, it's only used for the purpose of providing a background (WMS bgcolor could be used instead)DS_giant_polygon, giant_polygonEPSG:4326topp:centri_abitati_sismacentri_abitatiEPSG:25832topp:comuni_sismacomuniEPSG:25832topp:comunicomuniEPSG:23032topp:edifici_sismaedificiEPSG:25832topp:f02f02EPSG:25832topp:f03f03EPSG:25832topp:f04f04EPSG:25832topp:f05f05EPSG:25832topp:f06f06EPSG:25832topp:f08f08EPSG:25832topp:ferrovieferrovieEPSG:23032topp:l02l02EPSG:25832topp:l03l03EPSG:25832topp:l05l05EPSG:25832topp:l06l06EPSG:25832topp:l07l07EPSG:25832topp:l09l09EPSG:25832topp:l10l10EPSG:25832topp:localita_sismalocalitaEPSG:25832topp:p02p02EPSG:25832topp:p03p03EPSG:25832topp:p05p05EPSG:25832topp:p06p06EPSG:25832topp:p07p07EPSG:25832topp:p08p08EPSG:25832topp:p09p09EPSG:25832topp:p10p10EPSG:25832topp:poi_testpoi_testEPSG:25832topp:province_sismaprovinceEPSG:25832topp:provinceprovinceEPSG:23032topp:regioniregioniEPSG:23032topp:stazionistazioniEPSG:23032topp:strade_sismastradeEPSG:25832topp:toponimi_sismatoponimiEPSG:25832topp:zona_sismicazona_sismicaEPSG:25832absabs_2abs_3abs_4acosAreaasinatanatan2betweenboundaryboundaryDimensionbufferbufferWithSegmentsceilcentroidclassifyCollection_AverageCollection_BoundsCollection_CountCollection_MaxCollection_MedianCollection_MinCollection_SumCollection_UniquecontainsconvertconvexHullcoscrossesdateFormatdateParsedifferencedimensiondisjointdistancedouble2boolendPointenvelopeEqualIntervalequalsExactequalsExactToleranceequalToexpexteriorRingfloorgeometryTypegeomFromWKTgeomLengthgetGeometryNgetXgetYgetZgreaterEqualThangreaterThanidIEEEremainderif_then_elsein10in2in3in4in5in6in7in8in9int2bboolint2ddoubleinteriorPointinteriorRingNintersectionintersectsisClosedisEmptyisLikeisNullisRingisSimpleisValidisWithinDistancelengthlessEqualThanlessThanlogmaxmax_2max_3max_4minmin_2min_3min_4notnotEqualTonumberFormatnumGeometriesnumInteriorRingnumPointsoverlapsparseBooleanparseDoubleparseIntparseLongpipointNpowPropertyExistsQuantilerandomrelaterelatePatternrintroundround_2roundDoublesinsqrtStandardDeviationstartPointstrConcatstrEndsWithstrEqualsIgnoreCasestrIndexOfstrLastIndexOfstrLengthstrMatchesstrReplacestrStartsWithstrSubstringstrSubstringStartstrToLowerCasestrToUpperCasestrTrimsymDifferencetantoDegreestoRadianstouchestoWKTunionUniqueIntervalwithin diff --git a/src/spatialite/test/getcapabilities-1.1.0.wfs b/src/spatialite/test/getcapabilities-1.1.0.wfs new file mode 100644 index 0000000..4b5276c --- /dev/null +++ b/src/spatialite/test/getcapabilities-1.1.0.wfs @@ -0,0 +1 @@ +GeoServer Web Feature ServiceThis is the reference implementation of WFS 1.0.0 and WFS 1.1.0, supports all WFS operations including Transaction.WFSWMSGEOSERVERWFS1.1.0NONENONEThe ancient geographes INCClaudius PtolomaeusChief geographerAlexandriaEgypt1.0.01.1.0text/xmltext/xml; subtype=gml/3.1.1resultshitstext/xml; subtype=gml/3.1.1GML2GML2-GZIPSHAPE-ZIPcsvgml3jsontext/xml; subtype=gml/2.1.22ALLSOMEresultshitstext/xml; subtype=gml/3.1.1GML2GML2-GZIPSHAPE-ZIPcsvgml3jsontext/xml; subtype=gml/2.1.2text/xml; subtype=gml/3.1.1GenerateNewUseExistingReplaceDuplicateALLSOMEQueryInsertUpdateDeleteLocktiger:poly_landmarksManhattan (NY) landmarksManhattan landmarks, identifies water, lakes, parks, interesting buildilngslandmarksDS_poly_landmarksmanhattanpoly_landmarksurn:x-ogc:def:crs:EPSG:4326-74.047185 40.679648-73.90782 40.882078tiger:poiManhattan (NY) points of interestPoints of interest in New York, New York (on Manhattan). One of the attributes contains the name of a file with a picture of the point of interest.poiManhattanDS_poipoints_of_interesturn:x-ogc:def:crs:EPSG:4326-74.0118315772888 40.70754683896324-74.00857344353275 40.711945649065406tiger:tiger_roadsManhattan (NY) roadsHighly simplified road layout of Manhattan in New York..DS_tiger_roadstiger_roadsroadsurn:x-ogc:def:crs:EPSG:4326-74.02722 40.684221-73.907005 40.878178sf:archsitesSpearfish archeological sitesSample data from GRASS, archeological sites location, Spearfish, South Dakota, USAarchsitesspearfishsfArchsitesarcheologyurn:x-ogc:def:crs:EPSG:26713-103.8725637911543 44.37740330855979-103.63794182141925 44.48804280772808sf:bugsitesSpearfish bug locationsSample data from GRASS, bug sites location, Spearfish, South Dakota, USAspearfishsfBugsitesinsectsbugsitestiger_beetlesurn:x-ogc:def:crs:EPSG:26713-103.86796131703647 44.373938816704396-103.63773523234195 44.43418821380063sf:restrictedSpearfish restricted areasSample data from GRASS, restricted areas, Spearfish, South Dakota, USAspearfishrestrictedareassfRestrictedurn:x-ogc:def:crs:EPSG:26713-103.85057172920756 44.39436387625042-103.74741494853805 44.48215752041131sf:roadsSpearfish roadsSample data from GRASS, road layout, Spearfish, South Dakota, USAsfRoadsspearfishroadsurn:x-ogc:def:crs:EPSG:26713-103.87741691493184 44.37087275281798-103.62231404880659 44.50015918338962sf:streamsSpearfish streamsSample data from GRASS, streams, Spearfish, South Dakota, USAspearfishsfStreamsstreamsurn:x-ogc:def:crs:EPSG:26713-103.87789019829768 44.372335260095554-103.62287788915457 44.502218486214815topp:tasmania_citiesTasmania citiesCities in Tasmania (actually, just the capital)citiesTasmaniaurn:x-ogc:def:crs:EPSG:4326145.19754 -43.423512148.27298000000002 -40.852802topp:tasmania_roadsTasmania roadsMain Tasmania roadsRoadsTasmaniaurn:x-ogc:def:crs:EPSG:4326145.19754 -43.423512148.27298000000002 -40.852802topp:tasmania_state_boundariesTasmania state boundariesTasmania state boundariesboundariestasmania_state_boundariesTasmaniaurn:x-ogc:def:crs:EPSG:4326143.83482400000003 -43.648056148.47914100000003 -39.573891topp:tasmania_water_bodiesTasmania water bodiesTasmania water bodiesLakesBodiesAustraliaWaterTasmaniaurn:x-ogc:def:crs:EPSG:4326145.97161899999998 -43.031944147.219696 -41.775558topp:statesUSA PopulationThis is some census data on the states.censusunitedboundariesstatestatesurn:x-ogc:def:crs:EPSG:4326-124.731422 24.955967-66.969849 49.371735tiger:giant_polygonWorld rectangleA simple rectangular polygon covering most of the world, it's only used for the purpose of providing a background (WMS bgcolor could be used instead)DS_giant_polygongiant_polygonurn:x-ogc:def:crs:EPSG:4326-180.0 -90.0180.0 90.0topp:centri_abitati_sismacentri_abitatiurn:x-ogc:def:crs:EPSG:2583210.721 44.61311.656 44.92topp:comuni_sismacomuniurn:x-ogc:def:crs:EPSG:2583210.645 44.55311.884 44.975topp:comunicomuniurn:x-ogc:def:crs:EPSG:230326.539 35.21719.614 47.136topp:edifici_sismaedificiurn:x-ogc:def:crs:EPSG:2583210.65 44.55511.881 44.97topp:f02f02urn:x-ogc:def:crs:EPSG:2583211.134 46.61911.214 46.691topp:f03f03urn:x-ogc:def:crs:EPSG:2583211.134 46.61911.214 46.695topp:f04f04urn:x-ogc:def:crs:EPSG:2583211.134 46.61911.214 46.695topp:f05f05urn:x-ogc:def:crs:EPSG:2583211.134 46.61911.214 46.695topp:f06f06urn:x-ogc:def:crs:EPSG:2583211.134 46.61911.214 46.694topp:f08f08urn:x-ogc:def:crs:EPSG:2583211.134 46.61911.214 46.694topp:ferrovieferrovieurn:x-ogc:def:crs:EPSG:230326.578 36.52619.547 47.048topp:l02l02urn:x-ogc:def:crs:EPSG:2583211.134 46.61911.214 46.695topp:l03l03urn:x-ogc:def:crs:EPSG:2583211.134 46.61911.204 46.691topp:l05l05urn:x-ogc:def:crs:EPSG:2583211.134 46.61911.213 46.694topp:l06l06urn:x-ogc:def:crs:EPSG:2583211.134 46.61911.214 46.694topp:l07l07urn:x-ogc:def:crs:EPSG:2583211.134 46.61911.214 46.695topp:l09l09urn:x-ogc:def:crs:EPSG:2583211.134 46.61911.213 46.692topp:l10l10urn:x-ogc:def:crs:EPSG:2583211.134 46.6211.213 46.695topp:localita_sismalocalitaurn:x-ogc:def:crs:EPSG:2583210.666 44.56611.877 44.967topp:p02p02urn:x-ogc:def:crs:EPSG:2583211.148 46.65811.157 46.681topp:p03p03urn:x-ogc:def:crs:EPSG:2583211.134 46.6211.212 46.691topp:p05p05urn:x-ogc:def:crs:EPSG:2583211.134 46.6211.203 46.69topp:p06p06urn:x-ogc:def:crs:EPSG:2583211.135 46.6211.211 46.69topp:p07p07urn:x-ogc:def:crs:EPSG:2583211.134 46.61911.214 46.695topp:p08p08urn:x-ogc:def:crs:EPSG:2583211.134 46.6211.211 46.69topp:p09p09urn:x-ogc:def:crs:EPSG:2583211.134 46.61911.213 46.691topp:p10p10urn:x-ogc:def:crs:EPSG:2583211.138 46.6211.204 46.69topp:poi_testpoi_testurn:x-ogc:def:crs:EPSG:2583211.152 46.64111.192 46.682topp:province_sismaprovinceurn:x-ogc:def:crs:EPSG:2583210.645 44.55311.884 44.975topp:provinceprovinceurn:x-ogc:def:crs:EPSG:230326.539 35.21719.614 47.136topp:regioniregioniurn:x-ogc:def:crs:EPSG:230326.539 35.21719.614 47.136topp:stazionistazioniurn:x-ogc:def:crs:EPSG:230326.632 36.53919.459 46.964topp:strade_sismastradeurn:x-ogc:def:crs:EPSG:2583210.563 44.52211.885 44.98topp:toponimi_sismatoponimiurn:x-ogc:def:crs:EPSG:2583210.675 44.56811.874 44.962topp:zona_sismicazona_sismicaurn:x-ogc:def:crs:EPSG:2583210.645 44.55311.884 44.975gml:Envelopegml:Pointgml:LineStringgml:PolygonLessThanGreaterThanLessThanEqualToGreaterThanEqualToEqualToNotEqualToLikeBetweenNullCheckabsabs_2abs_3abs_4acosAreaasinatanatan2betweenboundaryboundaryDimensionbufferbufferWithSegmentsCategorizeceilcentroidclassifyCollection_AverageCollection_BoundsCollection_CountCollection_MaxCollection_MedianCollection_MinCollection_SumCollection_UniqueConcatenatecontainsconvertconvexHullcoscrossesdateFormatdateParsedifferencedimensiondisjointdistancedouble2boolendPointenvelopeEqualIntervalequalsExactequalsExactToleranceequalToexpexteriorRingfloorgeometryTypegeomFromWKTgeomLengthgetGeometryNgetXgetYgetZgreaterEqualThangreaterThanidIEEEremainderif_then_elsein10in2in3in4in5in6in7in8in9int2bboolint2ddoubleinteriorPointinteriorRingNInterpolateintersectionintersectsisClosedisEmptyisLikeisNullisRingisSimpleisValidisWithinDistancelengthlessEqualThanlessThanlogmaxmax_2max_3max_4minmin_2min_3min_4notnotEqualTonumberFormatnumGeometriesnumInteriorRingnumPointsoverlapsparseBooleanparseDoubleparseIntparseLongpipointNpowPropertyExistsQuantilerandomRecoderelaterelatePatternrintroundround_2roundDoublesinsqrtStandardDeviationstartPointstrConcatstrEndsWithstrEqualsIgnoreCasestrIndexOfstrLastIndexOfstrLengthstrMatchesstrReplacestrStartsWithstrSubstringstrSubstringStartstrToLowerCasestrToUpperCasestrTrimsymDifferencetantoDegreestoRadianstouchestoWKTunionUniqueIntervalwithin \ No newline at end of file diff --git a/src/spatialite/test/gpkg_test.gpkg b/src/spatialite/test/gpkg_test.gpkg new file mode 100644 index 0000000000000000000000000000000000000000..427b370f2c8c5033aa016b1fa809bad01eb088ec GIT binary patch literal 384000 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 YV9$d&gNzK!M*K&V44y=)1;+LLKSrm@O8@`> literal 0 HcmV?d00001 diff --git a/src/spatialite/test/gpkg_test.sqlite b/src/spatialite/test/gpkg_test.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..f06aa5c4a85696355f6697132198921400288d46 GIT binary patch literal 444416 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 literal 0 HcmV?d00001 diff --git a/src/spatialite/test/hatch.dxf b/src/spatialite/test/hatch.dxf new file mode 100644 index 0000000..3f99fa2 --- /dev/null +++ b/src/spatialite/test/hatch.dxf @@ -0,0 +1,3116 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1018 + 9 +$ACADMAINTVER + 70 + 0 + 9 +$DWGCODEPAGE + 3 +ANSI_1252 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN +10 + 0 +20 + 0 +30 +0.0 + 9 +$EXTMAX +10 + 0 +20 + 0 +30 +0.0 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +12.0 + 20 +9.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 0 + 9 +$LTSCALE + 40 +1.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +0.2 + 9 +$TRACEWID + 40 +0.05 + 9 +$TEXTSTYLE + 7 +Standard + 9 +$CLAYER + 8 +LineeTipo6 + 9 +$CELTYPE + 6 +ByLayer + 9 +$CECOLOR + 62 + 256 + 9 +$CELTSCALE + 40 +1.0 + 9 +$DISPSILH + 70 + 0 + 9 +$DIMSCALE + 40 +1.0 + 9 +$DIMASZ + 40 +0.18 + 9 +$DIMEXO + 40 +0.0625 + 9 +$DIMDLI + 40 +0.38 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +0.18 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +0.18 + 9 +$DIMCEN + 40 +0.09 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 1 + 9 +$DIMTOH + 70 + 1 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 0 + 9 +$DIMZIN + 70 + 0 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 2 + 9 +$DIMALTF + 40 +25.4 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 0 + 9 +$DIMTVP + 40 +0.0 + 9 +$DIMTIX + 70 + 0 + 9 +$DIMSOXD + 70 + 0 + 9 +$DIMSAH + 70 + 1 + 9 +$DIMBLK1 + 1 + + 9 +$DIMBLK2 + 1 +Open30 + 9 +$DIMSTYLE + 2 +Standard + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.09 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 1 + 9 +$DIMTZIN + 70 + 0 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 4 + 9 +$DIMTDEC + 70 + 4 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 2 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 46 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +0.1 + 9 +$FILLETRAD + 40 +0.0 + 9 +$AUNITS + 70 + 0 + 9 +$AUPREC + 70 + 0 + 9 +$MENU + 1 +. + 9 +$ELEVATION + 40 +0.0 + 9 +$PELEVATION + 40 +0.0 + 9 +$THICKNESS + 40 +0.0 + 9 +$LIMCHECK + 70 + 0 + 9 +$CHAMFERA + 40 +0.0 + 9 +$CHAMFERB + 40 +0.0 + 9 +$CHAMFERC + 40 +0.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2454180.428272026 + 9 +$TDUCREATE + 40 +2454180.344938692 + 9 +$TDUPDATE + 40 +2454238.487553021 + 9 +$TDUUPDATE + 40 +2454238.404219688 + 9 +$TDINDWG + 40 +1.0601266782 + 9 +$TDUSRTIMER + 40 +1.0601209838 + 9 +$USRTIMER + 70 + 1 + 9 +$ANGBASE + 50 +0.0 + 9 +$ANGDIR + 70 + 0 + 9 +$PDMODE + 70 + 0 + 9 +$PDSIZE + 40 +0.0 + 9 +$PLINEWID + 40 +0.0 + 9 +$SPLFRAME + 70 + 0 + 9 +$SPLINETYPE + 70 + 6 + 9 +$SPLINESEGS + 70 + 8 + 9 +$HANDSEED + 5 +2AAE + 9 +$SURFTAB1 + 70 + 6 + 9 +$SURFTAB2 + 70 + 6 + 9 +$SURFTYPE + 70 + 6 + 9 +$SURFU + 70 + 6 + 9 +$SURFV + 70 + 6 + 9 +$UCSBASE + 2 + + 9 +$UCSNAME + 2 + + 9 +$UCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$UCSORTHOREF + 2 + + 9 +$UCSORTHOVIEW + 70 + 0 + 9 +$UCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSBASE + 2 + + 9 +$PUCSNAME + 2 + + 9 +$PUCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$PUCSORTHOREF + 2 + + 9 +$PUCSORTHOVIEW + 70 + 0 + 9 +$PUCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$USERI1 + 70 + 0 + 9 +$USERI2 + 70 + 0 + 9 +$USERI3 + 70 + 0 + 9 +$USERI4 + 70 + 0 + 9 +$USERI5 + 70 + 0 + 9 +$USERR1 + 40 +0.0 + 9 +$USERR2 + 40 +0.0 + 9 +$USERR3 + 40 +0.0 + 9 +$USERR4 + 40 +0.0 + 9 +$USERR5 + 40 +0.0 + 9 +$WORLDVIEW + 70 + 1 + 9 +$SHADEDGE + 70 + 3 + 9 +$SHADEDIF + 70 + 70 + 9 +$TILEMODE + 70 + 1 + 9 +$MAXACTVP + 70 + 64 + 9 +$PINSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMCHECK + 70 + 0 + 9 +$PEXTMIN + 10 +1.000000000000000E+20 + 20 +1.000000000000000E+20 + 30 +1.000000000000000E+20 + 9 +$PEXTMAX + 10 +-1.000000000000000E+20 + 20 +-1.000000000000000E+20 + 30 +-1.000000000000000E+20 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$PLIMMAX + 10 +12.0 + 20 +9.0 + 9 +$UNITMODE + 70 + 0 + 9 +$VISRETAIN + 70 + 1 + 9 +$PLINEGEN + 70 + 1 + 9 +$PSLTSCALE + 70 + 1 + 9 +$TREEDEPTH + 70 + 3020 + 9 +$CMLSTYLE + 2 + + 9 +$CMLJUST + 70 + 0 + 9 +$CMLSCALE + 40 +1.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 0 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 0 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 0 + 9 +$FINGERPRINTGUID + 2 +{9F0361C4-6C7A-4C04-A603-B640F2F7BE05} + 9 +$VERSIONGUID + 2 +{AF92E7B2-CA18-4870-BB90-BAE43C40A327} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 9 +$SORTENTS +280 + 127 + 9 +$INDEXCTL +280 + 0 + 9 +$HIDETEXT +280 + 0 + 9 +$XCLIPFRAME +290 + 0 + 9 +$HALOGAP +280 + 0 + 9 +$OBSCOLOR + 70 + 257 + 9 +$OBSLTYPE +280 + 0 + 9 +$INTERSECTIONDISPLAY +280 + 0 + 9 +$INTERSECTIONCOLOR + 70 + 257 + 9 +$DIMASSOC +280 + 1 + 9 +$PROJECTNAME + 1 + + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +IMAGE + 2 +AcDbRasterImage + 3 +ISM + 90 + 127 + 91 + 0 +280 + 0 +281 + 1 + 0 +CLASS + 1 +IMAGEDEF_REACTOR + 2 +AcDbRasterImageDefReactor + 3 +ISM + 90 + 1 + 91 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +SORTENTSTABLE + 2 +AcDbSortentsTable + 3 +ObjectDBX Classes + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +CLASS + 1 +IMAGEDEF + 2 +AcDbRasterImageDef + 3 +ISM + 90 + 0 + 91 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +RASTERVARIABLES + 2 +AcDbRasterVariables + 3 +ISM + 90 + 0 + 91 + 1 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +8 +330 +0 +100 +AcDbSymbolTable + 70 + 9 + 0 +VPORT + 5 +2AAD +330 +8 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +-84832.16874256809 + 22 +45156.74916340834 + 13 +0.0 + 23 +0.0 + 14 +1.0 + 24 +1.0 + 15 +0.0 + 25 +0.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +35.99018809093105 + 41 +1.786666666666666 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +5 +330 +0 +100 +AcDbSymbolTable + 70 + 15 + 0 +LTYPE + 5 +13 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +14 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +15 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +2A9D +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +LineeTipo29 + 70 + 0 + 3 +_ _ _ _ + 72 + 65 + 73 + 2 + 40 +5.299999999999999 + 49 +3.799999999999999 + 74 + 0 + 49 +-1.5 + 74 + 0 + 0 +LTYPE + 5 +2A9E +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +LineeTipo30 + 70 + 0 + 3 + croci + 72 + 65 + 73 + 3 + 40 +2.9 + 49 +0.95 + 74 + 2 + 75 + 0 +340 +11 + 46 +1.9 + 50 +0.0 + 44 +0.0 + 45 +-0.95 + 9 +| + 49 +0.95 + 74 + 0 + 49 +-1.0 + 74 + 0 + 0 +LTYPE + 5 +2A9F +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +LineeTipo5 + 70 + 0 + 3 + - - - - + 72 + 65 + 73 + 2 + 40 +3.599999999999999 + 49 +1.9 + 74 + 0 + 49 +-1.7 + 74 + 0 + 0 +LTYPE + 5 +2AA0 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +LineeTipo6 + 70 + 0 + 3 + . . . + 72 + 65 + 73 + 2 + 40 +1.7 + 49 +0.0 + 74 + 0 + 49 +-1.7 + 74 + 0 + 0 +LTYPE + 5 +2AA6 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +LineeTipo31 + 70 + 0 + 3 +croce punto + 72 + 65 + 73 + 5 + 40 +3.5 + 49 +0.95 + 74 + 2 + 75 + 0 +340 +11 + 46 +1.9 + 50 +0.0 + 44 +0.0 + 45 +-0.95 + 9 +| + 49 +0.95 + 74 + 0 + 49 +-0.8 + 74 + 0 + 49 +0.0 + 74 + 0 + 49 +-0.8 + 74 + 0 + 0 +LTYPE + 5 +2AA7 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +LineeTipo32 + 70 + 0 + 3 +croce punto punto + 72 + 65 + 73 + 7 + 40 +4.3 + 49 +0.95 + 74 + 2 + 75 + 0 +340 +11 + 46 +1.9 + 50 +0.0 + 44 +0.0 + 45 +-0.95 + 9 +| + 49 +0.95 + 74 + 0 + 49 +-0.8 + 74 + 0 + 49 +0.0 + 74 + 0 + 49 +-0.8 + 74 + 0 + 49 +0.0 + 74 + 0 + 49 +-0.8 + 74 + 0 + 0 +LTYPE + 5 +2AA8 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +LineeTipo33 + 70 + 0 + 3 +tratto punto punto + 72 + 65 + 73 + 6 + 40 +4.2 + 49 +1.5 + 74 + 0 + 49 +-0.75 + 74 + 0 + 49 +0.0 + 74 + 0 + 49 +-1.199999999999999 + 74 + 0 + 49 +0.0 + 74 + 0 + 49 +-0.75 + 74 + 0 + 0 +LTYPE + 5 +2AA9 +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +LineeTipo34 + 70 + 0 + 3 +tratto punto + 72 + 65 + 73 + 4 + 40 +3.0 + 49 +1.5 + 74 + 0 + 49 +-0.75 + 74 + 0 + 49 +0.0 + 74 + 0 + 49 +-0.75 + 74 + 0 + 0 +LTYPE + 5 +2AAA +330 +5 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +LineeTipo35 + 70 + 0 + 3 +tratto tratto + 72 + 65 + 73 + 2 + 40 +2.5 + 49 +1.5 + 74 + 0 + 49 +-1.0 + 74 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +2 +330 +0 +100 +AcDbSymbolTable + 70 + 18 + 0 +LAYER + 5 +10 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +2740 + 0 +LAYER + 5 +72D +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Simboli + 70 + 0 + 62 + 7 + 6 +Continuous +370 + 13 +390 +2740 + 0 +LAYER + 5 +29F1 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +CODBO + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +2740 + 0 +LAYER + 5 +29F2 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Particelle + 70 + 0 + 62 + 7 + 6 +Continuous +370 + 13 +390 +2740 + 0 +LAYER + 5 +29F3 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +RetinoFabb + 70 + 0 + 62 + 7 + 6 +Continuous +370 + 13 +390 +2740 + 0 +LAYER + 5 +29F4 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +Testi + 70 + 0 + 62 + 7 + 6 +Continuous +370 + 25 +390 +2740 + 0 +LAYER + 5 +29F5 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +LineeTipo1 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + 25 +390 +2740 + 0 +LAYER + 5 +29F6 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +LineeTipo5 + 70 + 0 + 62 + 7 + 6 +LineeTipo5 +370 + 25 +390 +2740 + 0 +LAYER + 5 +29F7 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +LineeTipo6 + 70 + 0 + 62 + 7 + 6 +LineeTipo6 +370 + 60 +390 +2740 + 0 +LAYER + 5 +29F8 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +LineeTipo11 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + 25 +390 +2740 + 0 +LAYER + 5 +29F9 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +LineeTipo12 + 70 + 1 + 62 + 7 + 6 +Continuous +370 + 13 +390 +2740 + 0 +LAYER + 5 +29FA +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +LineeTipo29 + 70 + 0 + 62 + 7 + 6 +LineeTipo29 +370 + 13 +390 +2740 + 0 +LAYER + 5 +29FB +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +LineeTipo30 + 70 + 0 + 62 + 7 + 6 +LineeTipo30 +370 + 13 +390 +2740 + 0 +LAYER + 5 +29FC +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +LineeTipo31 + 70 + 0 + 62 + 7 + 6 +LineeTipo31 +370 + 13 +390 +2740 + 0 +LAYER + 5 +29FD +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +LineeTipo32 + 70 + 0 + 62 + 7 + 6 +LineeTipo32 +370 + 13 +390 +2740 + 0 +LAYER + 5 +29FE +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +LineeTipo33 + 70 + 0 + 62 + 7 + 6 +LineeTipo33 +370 + 13 +390 +2740 + 0 +LAYER + 5 +29FF +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +LineeTipo34 + 70 + 0 + 62 + 7 + 6 +LineeTipo34 +370 + 13 +390 +2740 + 0 +LAYER + 5 +2A00 +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +LineeTipo35 + 70 + 0 + 62 + 7 + 6 +LineeTipo35 +370 + 13 +390 +2740 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +3 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +STYLE + 5 +11 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +0.2 + 3 +txt + 4 + + 0 +STYLE + 5 +2A03 +330 +3 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 + + 70 + 1 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +0.2 + 3 +ltypeshp.shx + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +6 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +7 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +9 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +APPID + 5 +12 +330 +9 +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +A +330 +0 +100 +AcDbSymbolTable + 70 + 1 +100 +AcDbDimStyleTable + 71 + 1 +340 +710 + 0 +DIMSTYLE +105 +710 +330 +A +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +Standard + 70 + 0 +173 + 1 +340 +11 +344 +775 + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +LWPOLYLINE +100 +AcDbEntity +100 +AcDbPolyline + 5 +3AB5 + 90 + 9 + 70 +128 + 8 +Particelle + 10 +1674740.281 + 20 +4851435.332 + 10 +1674756.934 + 20 +4851435.675 + 10 +1674756.895 + 20 +4851437.976 + 10 +1674767.059 + 20 +4851437.976 + 10 +1674767.255 + 20 +4851447.358 + 10 +1674767.295 + 20 +4851449.246 + 10 +1674752.688 + 20 +4851449.249 + 10 +1674740.298 + 20 +4851449.215 + 10 +1674740.281 + 20 +4851435.332 + 0 +TEXT +100 +AcDbEntity +100 +AcDbText + 5 +3AB6 + 8 +CODBO + 1 +1453 + 40 + 1.8 + 50 + 0 + 10 +1674745.402 + 20 +4851442.556 +100 +AcDbText + 0 +LWPOLYLINE +100 +AcDbEntity +100 +AcDbPolyline + 5 +4218 + 90 + 13 + 70 +128 + 8 +Particelle + 10 +1674507.564 + 20 +4851463.201 + 10 +1674505.527 + 20 +4851457.662 + 10 +1674504.389 + 20 +4851454.568 + 10 +1674503.801 + 20 +4851453.115 + 10 +1674500.606 + 20 +4851444.521 + 10 +1674498.904 + 20 +4851439.903 + 10 +1674514.521 + 20 +4851433.919 + 10 +1674516.258 + 20 +4851438.699 + 10 +1674519.209 + 20 +4851446.586 + 10 +1674518.701 + 20 +4851446.915 + 10 +1674519.874 + 20 +4851450.062 + 10 +1674522.508 + 20 +4851457.742 + 10 +1674507.564 + 20 +4851463.201 + 0 +TEXT +100 +AcDbEntity +100 +AcDbText + 5 +4219 + 8 +CODBO + 1 +643 + 40 + 1.8 + 50 + 1.89171974522293 + 10 +1674497.469 + 20 +4851449.816 +100 +AcDbText + 0 +HATCH + 5 +4B48 +330 +20 +100 +AcDbEntity +100 +AcDbHatch + 8 +RetinoFabb + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI31 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 16 + 93 + 13 + 72 + 1 + 10 +1674393.216 + 20 +4851421.768 + 11 +1674392.525 + 21 +4851422.191 + 72 + 1 + 10 +1674392.525 + 20 +4851422.191 + 11 +1674391.267 + 21 +4851422.962 + 72 + 1 + 10 +1674391.267 + 20 +4851422.962 + 11 +1674382.854 + 21 +4851428.021 + 72 + 1 + 10 +1674382.854 + 20 +4851428.021 + 11 +1674378.659 + 21 +4851430.452 + 72 + 1 + 10 +1674378.659 + 20 +4851430.452 + 11 +1674371.438 + 21 +4851423.932 + 72 + 1 + 10 +1674371.438 + 20 +4851423.932 + 11 +1674372.188 + 21 +4851423.488 + 72 + 1 + 10 +1674372.188 + 20 +4851423.488 + 11 +1674374.743 + 21 +4851420.983 + 72 + 1 + 10 +1674374.743 + 20 +4851420.983 + 11 +1674374.201 + 21 +4851420.130 + 72 + 1 + 10 +1674374.201 + 20 +4851420.130 + 11 +1674376.013 + 21 +4851418.669 + 72 + 1 + 10 +1674376.013 + 20 +4851418.669 + 11 +1674376.557 + 21 +4851419.422 + 72 + 1 + 10 +1674376.557 + 20 +4851419.422 + 11 +1674385.032 + 21 +4851413.382 + 72 + 1 + 10 +1674385.032 + 20 +4851413.382 + 11 +1674386.977 + 21 +4851411.968 + 72 + 1 + 10 +1674386.977 + 20 +4851411.968 + 11 +1674393.216 + 21 +4851421.768 + 97 + 0 + 75 + 0 + 76 + 1 + 52 + 0.0 + 41 +10.0 + 77 + 0 + 78 + 1 + 53 +45.0 + 43 +0.0 + 44 +0.0 + 45 +-0.8838834764831842 + 46 +0.8838834764831844 + 79 + 0 + 98 + 1 + 10 +0.0 + 20 +0.0 + 0 +HATCH + 5 +4B36 +330 +20 +100 +AcDbEntity +100 +AcDbHatch + 8 +RetinoFabb + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI31 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 16 + 93 + 11 + 72 + 1 + 10 +1674842.191 + 20 +4851309.751 + 11 +1674842.877 + 21 +4851309.799 + 72 + 1 + 10 +1674842.877 + 20 +4851309.799 + 11 +1674842.813 + 21 +4851316.024 + 72 + 1 + 10 +1674842.813 + 20 +4851316.024 + 11 +1674841.655 + 21 +4851316.003 + 72 + 1 + 10 +1674841.655 + 20 +4851316.003 + 11 +1674839.300 + 21 +4851315.989 + 72 + 1 + 10 +1674839.300 + 20 +4851315.989 + 11 +1674839.266 + 21 +4851317.271 + 72 + 1 + 10 +1674839.266 + 20 +4851317.271 + 11 +1674835.567 + 21 +4851317.166 + 72 + 1 + 10 +1674835.567 + 20 +4851317.166 + 11 +1674832.808 + 21 +4851317.089 + 72 + 1 + 10 +1674832.808 + 20 +4851317.089 + 11 +1674832.833 + 21 +4851315.951 + 72 + 1 + 10 +1674832.833 + 20 +4851315.951 + 11 +1674837.234 + 21 +4851315.977 + 72 + 1 + 10 +1674837.234 + 20 +4851315.977 + 11 +1674837.351 + 21 +4851309.667 + 72 + 1 + 10 +1674837.351 + 20 +4851309.667 + 11 +1674842.191 + 21 +4851309.751 + 97 + 0 + 75 + 0 + 76 + 1 + 52 + 0.0 + 41 +10.0 + 77 + 0 + 78 + 1 + 53 +60.0 + 43 +0.0 + 44 +0.0 + 45 +-0.8838834764831842 + 46 +0.8838834764831844 + 79 + 0 + 98 + 1 + 10 +0.0 + 20 +0.0 + 0 +HATCH + 5 +4B4C +330 +20 +100 +AcDbEntity +100 +AcDbHatch + 8 +RetinoFabb + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI31 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 16 + 93 + 7 + 72 + 1 + 10 +1674356.178 + 20 +4851259.350 + 11 +1674356.390 + 21 +4851260.718 + 72 + 1 + 10 +1674356.390 + 20 +4851260.718 + 11 +1674357.070 + 21 +4851264.434 + 72 + 1 + 10 +1674357.070 + 20 +4851264.434 + 11 +1674352.934 + 21 +4851265.104 + 72 + 1 + 10 +1674352.934 + 20 +4851265.104 + 11 +1674352.480 + 21 +4851261.113 + 72 + 1 + 10 +1674352.480 + 20 +4851261.113 + 11 +1674355.582 + 21 +4851260.140 + 72 + 1 + 10 +1674355.582 + 20 +4851260.140 + 11 +1674355.447 + 21 +4851259.523 + 72 + 1 + 10 +1674355.447 + 20 +4851259.523 + 11 +1674356.178 + 21 +4851259.350 + 97 + 0 + 75 + 0 + 76 + 1 + 52 + 0.0 + 41 +10.0 + 77 + 0 + 78 + 1 + 53 +90.0 + 43 +0.0 + 44 +0.0 + 45 +-0.8838834764831842 + 46 +0.8838834764831844 + 79 + 0 + 98 + 1 + 10 +0.0 + 20 +0.0 + 0 +HATCH + 5 +4A50 +330 +20 +100 +AcDbEntity +100 +AcDbHatch + 8 +RetinoFabb + 10 +0.0 + 20 +0.0 + 30 +0.0 +210 +0.0 +220 +0.0 +230 +1.0 + 2 +ANSI31 + 70 + 0 + 71 + 0 + 91 + 1 + 92 + 16 + 93 + 16 + 72 + 1 + 10 +1681503.189 + 20 +4849731.235 + 11 +1681504.533 + 21 +4849730.583 + 72 + 1 + 10 +1681504.533 + 20 +4849730.583 + 11 +1681506.156 + 21 +4849733.460 + 72 + 1 + 10 +1681506.156 + 20 +4849733.460 + 11 +1681505.451 + 21 +4849733.858 + 72 + 1 + 10 +1681505.451 + 20 +4849733.858 + 11 +1681505.240 + 21 +4849733.975 + 72 + 1 + 10 +1681505.240 + 20 +4849733.975 + 11 +1681504.057 + 21 +4849734.645 + 72 + 1 + 10 +1681504.057 + 20 +4849734.645 + 11 +1681502.647 + 21 +4849735.019 + 72 + 1 + 10 +1681502.647 + 20 +4849735.019 + 11 +1681496.495 + 21 +4849738.362 + 72 + 1 + 10 +1681496.495 + 20 +4849738.362 + 11 +1681493.365 + 21 +4849739.953 + 72 + 1 + 10 +1681493.365 + 20 +4849739.953 + 11 +1681492.162 + 21 +4849740.563 + 72 + 1 + 10 +1681492.162 + 20 +4849740.563 + 11 +1681482.681 + 21 +4849745.676 + 72 + 1 + 10 +1681482.681 + 20 +4849745.676 + 11 +1681479.145 + 21 +4849739.231 + 72 + 1 + 10 +1681479.145 + 20 +4849739.231 + 11 +1681495.567 + 21 +4849730.528 + 72 + 1 + 10 +1681495.567 + 20 +4849730.528 + 11 +1681496.742 + 21 +4849732.567 + 72 + 1 + 10 +1681496.742 + 20 +4849732.567 + 11 +1681500.438 + 21 +4849730.886 + 72 + 1 + 10 +1681500.438 + 20 +4849730.886 + 11 +1681501.343 + 21 +4849731.996 + 72 + 1 + 10 +1681501.343 + 20 +4849731.996 + 11 +1681503.189 + 21 +4849731.235 + 97 + 0 + 75 + 0 + 76 + 1 + 52 + 0.0 + 41 +10.0 + 77 + 0 + 78 + 1 + 53 +30.0 + 43 +0.0 + 44 +0.0 + 45 +-0.8838834764831842 + 46 +0.8838834764831844 + 79 + 0 + 98 + 1 + 10 +0.0 + 20 +0.0 + 0 +ENDSEC + 0 +EOF diff --git a/src/spatialite/test/inspire-data-example.xml b/src/spatialite/test/inspire-data-example.xml new file mode 100644 index 0000000..35ad4e4 --- /dev/null +++ b/src/spatialite/test/inspire-data-example.xml @@ -0,0 +1,303 @@ + + + + 029097fd-2ef2-487c-a5ca-6ec7a3dbac53 + + + eng + + + 024027fd-3ef2-487c-a8ca-6ec8a3dfac57 + + + dataset + + + + + SDI Unit, Institute for Environment & Sustainability, Joint Research + Centre + + + + + + + image2000@jrc.it + + + + + + + pointOfContact + + + + + 2005-04-18 + + + ISO19115 + + + 2003/Cor.1:2006 + + + + + + + Image2000 Product 1 (nl2) Multispectral + + + + + 2007-09-15 + + + creation + + + + + + + 2007-11-15T11:15:00 + + + revision + + + + + + + 2007-09-15 + + + publication + + + + + + + image2000_1_nl2_multi + + + http://image2000.jrc.it + + + + + + + IMAGE2000 product 1 individual orthorectified scenes. + + + + + SDI Unit, Institute for Environment and Sustainability, Joint Research + Centre + + + + + + + image2000@jrc.it + + + + + + + custodian + + + + + + + Land cover + + + + + GemetInspireTheme + + + + + 2008-06-01 + + + publication + + + + + + + + + + + no conditions apply + + + + + + + otherRestrictions + + + no limitations + + + + + + + 25.0 + + + + + + + + + 50000 + + + + + + + eng + + + imageryBaseMapsEarthCover + + + + + + + 3.93 + + + 7.57 + + + 52.10 + + + 54.10 + + + + + + + + + + + + 1977-03-10T11:45:30 + 2005-01-15T09:10:00 + + + + + + + + + + + + + + + + + + + + + + http://image2000.jrc.it/ + + + + + + + + + + + + + dataset + + + + + + + + + + + INSPIRE_D2.8.I.1 + + + + + 2011-05-15 + + + publication + + + + + + + See the referenced specification + + + true + + + + + + + + + Product 1 scenes correspond to the path/row of the Landsat orbit. All + Image2000 product 1 scenes are ortho-corrected. The ortho-correction method consisted of using a physical model + of the satellite's flight during the scene acquisition, which was then complemented with Ground Control Points + (GCP's) and a Digital Elevation Model (DEM). Map projection information is attached to the model. The resulting + product has excellent accuracy between the spectral bands, sub-pixel location accuracy throughout the image and + excellent preservation of radiometric characteristics. The geometric correction was done on a Country basis - + according to the relevant national map projection system(s). A rigorous orbital model was used. Control point + measurements were used in a weighted least squares adjustment to estimate optimal values for the orbital and + attitude parameters. The adjusted parameters were used to resample the raw scene by cubic convolution in a single + step, instead of the usual two step procedure of first producing a system-corrected scene and then resampling a + second time, thus causing unnecessary smoothing of the data. The final pixel size after resampling is 12.5m for the + panchromatic band, 25m for the multispectral bands and 60m for the thermal band. All the orthorectified scenes are + well within the requirement of Root Mean Square Error (RMSE) > 25m. + + + + + + diff --git a/src/spatialite/test/l02.dxf b/src/spatialite/test/l02.dxf new file mode 100644 index 0000000..4a9bfd9 --- /dev/null +++ b/src/spatialite/test/l02.dxf @@ -0,0 +1,324 @@ + 0 +SECTION + 2 +HEADER + 9 +$EXTMIN + 10 +663372.601 + 20 +5165208.705 + 30 +0.000 + 9 +$EXTMAX + 10 +669268.593 + 20 +5173521.041 + 30 +777.470 + 9 +$LUPREC + 70 + 7 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +LAYER + 70 + 1 + 0 +LAYER + 2 +SHP_LINE + 70 +64 + 62 +7 + 6 +CONTINUOUS + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 8 +SHP_LINE + 2 +BLK000001 + 70 + 64 + 10 +667046.728 + 20 +5171567.671 + 30 +411.940 + 0 +POLYLINE + 8 +SHP_LINE + 66 + 1 + 70 + 8 + 0 +VERTEX + 8 +SHP_LINE + 10 +667046.728 + 20 +5171567.671 + 30 +411.940 + 70 + 32 + 0 +VERTEX + 8 +SHP_LINE + 10 +667044.618 + 20 +5171569.311 + 30 +411.670 + 70 + 32 + 0 +VERTEX + 8 +SHP_LINE + 10 +667041.838 + 20 +5171570.771 + 30 +411.600 + 70 + 32 + 0 +VERTEX + 8 +SHP_LINE + 10 +667037.168 + 20 +5171573.241 + 30 +411.440 + 70 + 32 + 0 +VERTEX + 8 +SHP_LINE + 10 +667032.778 + 20 +5171575.271 + 30 +411.250 + 70 + 32 + 0 +VERTEX + 8 +SHP_LINE + 10 +667029.308 + 20 +5171577.161 + 30 +411.110 + 70 + 32 + 0 +VERTEX + 8 +SHP_LINE + 10 +667025.488 + 20 +5171578.981 + 30 +410.850 + 70 + 32 + 0 +VERTEX + 8 +SHP_LINE + 10 +667022.308 + 20 +5171580.511 + 30 +410.600 + 70 + 32 + 0 +VERTEX + 8 +SHP_LINE + 10 +667020.328 + 20 +5171581.331 + 30 +410.490 + 70 + 32 + 0 +VERTEX + 8 +SHP_LINE + 10 +667019.158 + 20 +5171582.021 + 30 +410.260 + 70 + 32 + 0 +VERTEX + 8 +SHP_LINE + 10 +667018.358 + 20 +5171583.571 + 30 +410.010 + 70 + 32 + 0 +SEQEND + 8 +SHP_LINE + 0 +ENDBLK + 0 +BLOCK + 8 +SHP_LINE + 2 +BLK000002 + 70 + 64 + 10 +666115.033 + 20 +5171352.082 + 30 +390.620 + 0 +POLYLINE + 8 +SHP_LINE + 66 + 1 + 70 + 8 + 0 +VERTEX + 8 +SHP_LINE + 10 +666115.033 + 20 +5171352.082 + 30 +390.620 + 70 + 32 + 0 +VERTEX + 8 +SHP_LINE + 10 +666119.793 + 20 +5171352.632 + 30 +388.860 + 70 + 32 + 0 +VERTEX + 8 +SHP_LINE + 10 +666122.983 + 20 +5171353.152 + 30 +386.620 + 70 + 32 + 0 +VERTEX + 8 +SHP_LINE + 10 +666124.133 + 20 +5171353.332 + 30 +386.100 + 70 + 32 + 0 +SEQEND + 8 +SHP_LINE + 0 +ENDBLK + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +INSERT + 8 +SHP_LINE + 2 +BLK000001 + 10 +667046.728 + 20 +5171567.671 + 30 +411.940 + 0 +INSERT + 8 +SHP_LINE + 2 +BLK000002 + 10 +666115.033 + 20 +5171352.082 + 30 +390.620 + 0 +ENDSEC + 0 +EOF diff --git a/src/spatialite/test/linked.dxf b/src/spatialite/test/linked.dxf new file mode 100644 index 0000000..825fcc6 --- /dev/null +++ b/src/spatialite/test/linked.dxf @@ -0,0 +1,7656 @@ + 0 +SECTION + 2 +HEADER + 9 +$ACADVER + 1 +AC1015 + 9 +$ACADMAINTVER + 70 + 20 + 9 +$DWGCODEPAGE + 3 +ANSI_1252 + 9 +$INSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$EXTMIN + 10 +672969.77 + 20 +4860404.25 + 30 +0.0 + 9 +$EXTMAX + 10 +675545.0 + 20 +4861382.92 + 30 +139.97 + 9 +$LIMMIN + 10 +0.0 + 20 +0.0 + 9 +$LIMMAX + 10 +420.0 + 20 +297.0 + 9 +$ORTHOMODE + 70 + 0 + 9 +$REGENMODE + 70 + 1 + 9 +$FILLMODE + 70 + 1 + 9 +$QTEXTMODE + 70 + 0 + 9 +$MIRRTEXT + 70 + 0 + 9 +$LTSCALE + 40 +1.0 + 9 +$ATTMODE + 70 + 1 + 9 +$TEXTSIZE + 40 +2.5 + 9 +$TRACEWID + 40 +1.0 + 9 +$TEXTSTYLE + 7 +romans + 9 +$CLAYER + 8 +0 + 9 +$CELTYPE + 6 +ByLayer + 9 +$CECOLOR + 62 + 256 + 9 +$CELTSCALE + 40 +1.0 + 9 +$DISPSILH + 70 + 0 + 9 +$DIMSCALE + 40 +1.0 + 9 +$DIMASZ + 40 +2.5 + 9 +$DIMEXO + 40 +0.625 + 9 +$DIMDLI + 40 +3.75 + 9 +$DIMRND + 40 +0.0 + 9 +$DIMDLE + 40 +0.0 + 9 +$DIMEXE + 40 +1.25 + 9 +$DIMTP + 40 +0.0 + 9 +$DIMTM + 40 +0.0 + 9 +$DIMTXT + 40 +2.5 + 9 +$DIMCEN + 40 +2.5 + 9 +$DIMTSZ + 40 +0.0 + 9 +$DIMTOL + 70 + 0 + 9 +$DIMLIM + 70 + 0 + 9 +$DIMTIH + 70 + 0 + 9 +$DIMTOH + 70 + 0 + 9 +$DIMSE1 + 70 + 0 + 9 +$DIMSE2 + 70 + 0 + 9 +$DIMTAD + 70 + 1 + 9 +$DIMZIN + 70 + 8 + 9 +$DIMBLK + 1 + + 9 +$DIMASO + 70 + 1 + 9 +$DIMSHO + 70 + 1 + 9 +$DIMPOST + 1 + + 9 +$DIMAPOST + 1 + + 9 +$DIMALT + 70 + 0 + 9 +$DIMALTD + 70 + 3 + 9 +$DIMALTF + 40 +0.03937007874016 + 9 +$DIMLFAC + 40 +1.0 + 9 +$DIMTOFL + 70 + 1 + 9 +$DIMTVP + 40 +0.0 + 9 +$DIMTIX + 70 + 0 + 9 +$DIMSOXD + 70 + 0 + 9 +$DIMSAH + 70 + 0 + 9 +$DIMBLK1 + 1 + + 9 +$DIMBLK2 + 1 + + 9 +$DIMSTYLE + 2 +ISO-25 + 9 +$DIMCLRD + 70 + 0 + 9 +$DIMCLRE + 70 + 0 + 9 +$DIMCLRT + 70 + 0 + 9 +$DIMTFAC + 40 +1.0 + 9 +$DIMGAP + 40 +0.625 + 9 +$DIMJUST + 70 + 0 + 9 +$DIMSD1 + 70 + 0 + 9 +$DIMSD2 + 70 + 0 + 9 +$DIMTOLJ + 70 + 0 + 9 +$DIMTZIN + 70 + 8 + 9 +$DIMALTZ + 70 + 0 + 9 +$DIMALTTZ + 70 + 0 + 9 +$DIMUPT + 70 + 0 + 9 +$DIMDEC + 70 + 2 + 9 +$DIMTDEC + 70 + 2 + 9 +$DIMALTU + 70 + 2 + 9 +$DIMALTTD + 70 + 3 + 9 +$DIMTXSTY + 7 +Standard + 9 +$DIMAUNIT + 70 + 0 + 9 +$DIMADEC + 70 + 0 + 9 +$DIMALTRND + 40 +0.0 + 9 +$DIMAZIN + 70 + 0 + 9 +$DIMDSEP + 70 + 44 + 9 +$DIMATFIT + 70 + 3 + 9 +$DIMFRAC + 70 + 0 + 9 +$DIMLDRBLK + 1 + + 9 +$DIMLUNIT + 70 + 2 + 9 +$DIMLWD + 70 + -2 + 9 +$DIMLWE + 70 + -2 + 9 +$DIMTMOVE + 70 + 0 + 9 +$LUNITS + 70 + 2 + 9 +$LUPREC + 70 + 4 + 9 +$SKETCHINC + 40 +1.0 + 9 +$FILLETRAD + 40 +0.0 + 9 +$AUNITS + 70 + 0 + 9 +$AUPREC + 70 + 0 + 9 +$MENU + 1 +. + 9 +$ELEVATION + 40 +0.0 + 9 +$PELEVATION + 40 +0.0 + 9 +$THICKNESS + 40 +0.0 + 9 +$LIMCHECK + 70 + 0 + 9 +$CHAMFERA + 40 +0.0 + 9 +$CHAMFERB + 40 +0.0 + 9 +$CHAMFERC + 40 +0.0 + 9 +$CHAMFERD + 40 +0.0 + 9 +$SKPOLY + 70 + 0 + 9 +$TDCREATE + 40 +2456262.062314271 + 9 +$TDUCREATE + 40 +2456261.978980938 + 9 +$TDUPDATE + 40 +2456409.797222755 + 9 +$TDUUPDATE + 40 +2456409.713889422 + 9 +$TDINDWG + 40 +0.0612841898 + 9 +$TDUSRTIMER + 40 +0.0612841898 + 9 +$USRTIMER + 70 + 1 + 9 +$ANGBASE + 50 +0.0 + 9 +$ANGDIR + 70 + 0 + 9 +$PDMODE + 70 + 2 + 9 +$PDSIZE + 40 +0.5 + 9 +$PLINEWID + 40 +0.0 + 9 +$SPLFRAME + 70 + 0 + 9 +$SPLINETYPE + 70 + 6 + 9 +$SPLINESEGS + 70 + 8 + 9 +$HANDSEED + 5 +AF7 + 9 +$SURFTAB1 + 70 + 6 + 9 +$SURFTAB2 + 70 + 6 + 9 +$SURFTYPE + 70 + 6 + 9 +$SURFU + 70 + 6 + 9 +$SURFV + 70 + 6 + 9 +$UCSBASE + 2 + + 9 +$UCSNAME + 2 + + 9 +$UCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$UCSORTHOREF + 2 + + 9 +$UCSORTHOVIEW + 70 + 0 + 9 +$UCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$UCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSBASE + 2 + + 9 +$PUCSNAME + 2 + + 9 +$PUCSORG + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSXDIR + 10 +1.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSYDIR + 10 +0.0 + 20 +1.0 + 30 +0.0 + 9 +$PUCSORTHOREF + 2 + + 9 +$PUCSORTHOVIEW + 70 + 0 + 9 +$PUCSORGTOP + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBOTTOM + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGLEFT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGRIGHT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGFRONT + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PUCSORGBACK + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$USERI1 + 70 + 0 + 9 +$USERI2 + 70 + 0 + 9 +$USERI3 + 70 + 0 + 9 +$USERI4 + 70 + 0 + 9 +$USERI5 + 70 + 0 + 9 +$USERR1 + 40 +0.0 + 9 +$USERR2 + 40 +0.0 + 9 +$USERR3 + 40 +0.0 + 9 +$USERR4 + 40 +0.0 + 9 +$USERR5 + 40 +0.0 + 9 +$WORLDVIEW + 70 + 1 + 9 +$SHADEDGE + 70 + 3 + 9 +$SHADEDIF + 70 + 70 + 9 +$TILEMODE + 70 + 1 + 9 +$MAXACTVP + 70 + 64 + 9 +$PINSBASE + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMCHECK + 70 + 0 + 9 +$PEXTMIN + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PEXTMAX + 10 +0.0 + 20 +0.0 + 30 +0.0 + 9 +$PLIMMIN + 10 +0.0 + 20 +0.0 + 9 +$PLIMMAX + 10 +12.0 + 20 +9.0 + 9 +$UNITMODE + 70 + 0 + 9 +$VISRETAIN + 70 + 1 + 9 +$PLINEGEN + 70 + 0 + 9 +$PSLTSCALE + 70 + 1 + 9 +$TREEDEPTH + 70 + 3020 + 9 +$CMLSTYLE + 2 +Standard + 9 +$CMLJUST + 70 + 0 + 9 +$CMLSCALE + 40 +20.0 + 9 +$PROXYGRAPHICS + 70 + 1 + 9 +$MEASUREMENT + 70 + 1 + 9 +$CELWEIGHT +370 + -1 + 9 +$ENDCAPS +280 + 0 + 9 +$JOINSTYLE +280 + 0 + 9 +$LWDISPLAY +290 + 0 + 9 +$INSUNITS + 70 + 4 + 9 +$HYPERLINKBASE + 1 + + 9 +$STYLESHEET + 1 + + 9 +$XEDIT +290 + 1 + 9 +$CEPSNTYPE +380 + 0 + 9 +$PSTYLEMODE +290 + 1 + 9 +$FINGERPRINTGUID + 2 +{FDEAD578-A652-11D2-9A35-0060089B3A3F} + 9 +$VERSIONGUID + 2 +{930FB465-C28D-4FEE-99FE-12C9CCA164C6} + 9 +$EXTNAMES +290 + 1 + 9 +$PSVPSCALE + 40 +0.0 + 9 +$OLESTARTUP +290 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +CLASSES + 0 +CLASS + 1 +ACDBDICTIONARYWDFLT + 2 +AcDbDictionaryWithDefault + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +ACDBPLACEHOLDER + 2 +AcDbPlaceHolder + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +LAYOUT + 2 +AcDbLayout + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +DICTIONARYVAR + 2 +AcDbDictionaryVar + 3 +ObjectDBX Classes + 90 + 0 +280 + 0 +281 + 0 + 0 +CLASS + 1 +MATERIAL + 2 +AcDbMaterial + 3 +ObjectDBX Classes + 90 + 32768 +280 + 0 +281 + 0 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +VPORT + 5 +19 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +VPORT + 5 +AEF +330 +19 +100 +AcDbSymbolTableRecord +100 +AcDbViewportTableRecord + 2 +*Active + 70 + 0 + 10 +0.0 + 20 +0.0 + 11 +1.0 + 21 +1.0 + 12 +674273.3755786976 + 22 +4860957.893425077 + 13 +0.0 + 23 +0.0 + 14 +10.0 + 24 +10.0 + 15 +10.0 + 25 +10.0 + 16 +0.0 + 26 +0.0 + 36 +1.0 + 17 +0.0 + 27 +0.0 + 37 +0.0 + 40 +1679.347345922142 + 41 +2.135029354207436 + 42 +50.0 + 43 +0.0 + 44 +0.0 + 50 +0.0 + 51 +0.0 + 71 + 0 + 72 + 1000 + 73 + 1 + 74 + 3 + 75 + 0 + 76 + 0 + 77 + 0 + 78 + 0 +281 + 0 + 65 + 1 +110 +0.0 +120 +0.0 +130 +0.0 +111 +1.0 +121 +0.0 +131 +0.0 +112 +0.0 +122 +1.0 +132 +0.0 + 79 + 0 +146 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LTYPE + 5 +14 +330 +0 +100 +AcDbSymbolTable + 70 + 1 + 0 +LTYPE + 5 +15 +330 +14 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByBlock + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +16 +330 +14 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +ByLayer + 70 + 0 + 3 + + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +LTYPE + 5 +8 +330 +14 +100 +AcDbSymbolTableRecord +100 +AcDbLinetypeTableRecord + 2 +Continuous + 70 + 0 + 3 +Solid line + 72 + 65 + 73 + 0 + 40 +0.0 + 0 +ENDTAB + 0 +TABLE + 2 +LAYER + 5 +10 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +LAYER + 5 +6B537 +102 +{ACAD_XDICTIONARY +360 +6D825 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +P020208 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +6C8 + 0 +LAYER + 5 +1AF9 +102 +{ACAD_XDICTIONARY +360 +6D7B5 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +A010101 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +6C8 + 0 +LAYER + 5 +11F2 +102 +{ACAD_XDICTIONARY +360 +6D7B1 +102 +} +330 +2 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +T080201_1004 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +F +347 +6C8 + 0 +LAYER + 5 +4 +330 +10 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +0 + 70 + 0 + 62 + 7 + 6 +Continuous +370 + -3 +390 +5 + 0 +LAYER + 5 +28 +330 +10 +100 +AcDbSymbolTableRecord +100 +AcDbLayerTableRecord + 2 +A020206_entra_esci_1 + 70 + 0 + 62 + 3 + 6 +Continuous +370 + -3 +390 +5 + 0 +ENDTAB + 0 +TABLE + 2 +STYLE + 5 +11 +330 +0 +100 +AcDbSymbolTable + 70 + 2 + 0 +STYLE + 5 +12 +330 +11 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +Standard + 70 + 0 + 40 +0.0 + 41 +1.0 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +txt + 4 + + 0 +STYLE + 5 +24 +330 +11 +100 +AcDbSymbolTableRecord +100 +AcDbTextStyleTableRecord + 2 +romans + 70 + 0 + 40 +0.0 + 41 +0.9 + 50 +0.0 + 71 + 0 + 42 +2.5 + 3 +romans.shx + 4 + + 0 +ENDTAB + 0 +TABLE + 2 +VIEW + 5 +17 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +UCS + 5 +18 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +APPID + 5 +1B +330 +0 +100 +AcDbSymbolTable + 70 + 5 + 0 +APPID + 5 +1C +330 +1B +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +ACAD + 70 + 0 + 0 +APPID + 5 +49 +330 +1B +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +SHP_NREC + 70 + 0 + 0 +APPID + 5 +4A +330 +1B +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +SHP_FLDDSC + 70 + 0 + 0 +APPID + 5 +4B +330 +1B +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +SHP_FLDVAL + 70 + 0 + 0 +APPID + 5 +AE9 +330 +1B +100 +AcDbSymbolTableRecord +100 +AcDbRegAppTableRecord + 2 +PIDXPTOWER + 70 + 0 + 0 +ENDTAB + 0 +TABLE + 2 +DIMSTYLE + 5 +1D +330 +0 +100 +AcDbSymbolTable + 70 + 1 +100 +AcDbDimStyleTable + 71 + 0 + 0 +DIMSTYLE +105 +26 +330 +1D +100 +AcDbSymbolTableRecord +100 +AcDbDimStyleTableRecord + 2 +ISO-25 + 70 + 0 + 41 +2.5 + 42 +0.625 + 43 +3.75 + 44 +1.25 + 73 + 0 + 74 + 0 + 77 + 1 + 78 + 8 +140 +2.5 +141 +2.5 +143 +0.03937007874016 +147 +0.625 +171 + 3 +172 + 1 +271 + 2 +272 + 2 +274 + 3 +278 + 44 +283 + 0 +284 + 8 +340 +12 + 0 +ENDTAB + 0 +TABLE + 2 +BLOCK_RECORD + 5 +1 +330 +0 +100 +AcDbSymbolTable + 70 + 0 + 0 +BLOCK_RECORD + 5 +2 +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Model_Space +340 +A + 0 +BLOCK_RECORD + 5 +C +330 +1 +100 +AcDbSymbolTableRecord +100 +AcDbBlockTableRecord + 2 +*Paper_Space +340 +F + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +3 +330 +2 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockBegin + 2 +*Model_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Model_Space + 1 + + 0 +ENDBLK + 5 +9 +330 +2 +100 +AcDbEntity + 8 +0 +100 +AcDbBlockEnd + 0 +BLOCK + 5 +D +330 +C +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockBegin + 2 +*Paper_Space + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +*Paper_Space + 1 + + 0 +ENDBLK + 5 +E +330 +C +100 +AcDbEntity + 67 + 1 + 8 +0 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +POLYLINE + 5 +21E +330 +2 +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDb3dPolyline + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 9 +1001 +SHP_NREC +1000 + 54|A020206 +1001 +SHP_FLDDSC +1000 +OBJECTID|N|9|0;ID_ZRIL|C|12|0;AATT_TY|C|10|0;GC_CODICE|C|8|0;LIV|N|4|0;FID_|N|9|0;Classe|C|8|0;ID_Poly_FT|C|20|0;Descrizion|C|250|0;COD_Pol_FT|C|20|0;Flag_Mod|C|1|0;FeatureID|C|20|0;Origine|C|8|0;COD_ORIG|C|8|0;Shape_Leng|F|19|11;Shape_Area|F|19|11;Rip|N +1001 +SHP_FLDVAL +1000 + 26 06 C26005 0 0020206 + 0 +VERTEX + 5 +21F +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673212.05 + 20 +4860975.28 + 30 +79.15 + 70 + 32 + 0 +VERTEX + 5 +220 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673225.76 + 20 +4860968.83 + 30 +76.76000000000001 + 70 + 32 + 0 +VERTEX + 5 +221 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673229.5999999999 + 20 +4860967.03 + 30 +76.70999999999998 + 70 + 32 + 0 +VERTEX + 5 +222 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673242.37 + 20 +4860961.03 + 30 +76.52 + 70 + 32 + 0 +VERTEX + 5 +223 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673260.74 + 20 +4860952.349999998 + 30 +76.52 + 70 + 32 + 0 +VERTEX + 5 +224 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673260.2199999999 + 20 +4860951.25 + 30 +76.45 + 70 + 32 + 0 +VERTEX + 5 +225 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673259.4500000001 + 20 +4860949.62 + 30 +76.34999999999998 + 70 + 32 + 0 +VERTEX + 5 +226 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673258.73 + 20 +4860948.12 + 30 +76.25 + 70 + 32 + 0 +VERTEX + 5 +227 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673256.91 + 20 +4860944.48 + 30 +76.25 + 70 + 32 + 0 +VERTEX + 5 +228 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673255.8100000002 + 20 +4860942.259999999 + 30 +77.84 + 70 + 32 + 0 +VERTEX + 5 +229 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673251.0300000001 + 20 +4860932.690000001 + 30 +77.79 + 70 + 32 + 0 +VERTEX + 5 +22A +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673246.61 + 20 +4860923.5 + 30 +76.93999999999999 + 70 + 32 + 0 +VERTEX + 5 +22B +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673243.9300000002 + 20 +4860917.92 + 30 +77.97 + 70 + 32 + 0 +VERTEX + 5 +22C +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673240.63 + 20 +4860910.87 + 30 +75.67 + 70 + 32 + 0 +VERTEX + 5 +22D +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673239.7 + 20 +4860911.33 + 30 +75.67 + 70 + 32 + 0 +VERTEX + 5 +22E +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673236.5600000001 + 20 +4860904.76 + 30 +75.60999999999999 + 70 + 32 + 0 +VERTEX + 5 +22F +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673234.3100000001 + 20 +4860900.85 + 30 +75.98 + 70 + 32 + 0 +VERTEX + 5 +230 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673232.49 + 20 +4860898.589999999 + 30 +76.18999999999998 + 70 + 32 + 0 +VERTEX + 5 +231 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673228.8199999999 + 20 +4860894.78 + 30 +76.2 + 70 + 32 + 0 +VERTEX + 5 +232 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673226.6 + 20 +4860892.99 + 30 +76.15999999999998 + 70 + 32 + 0 +VERTEX + 5 +233 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673223.7399999999 + 20 +4860890.92 + 30 +76.09999999999998 + 70 + 32 + 0 +VERTEX + 5 +234 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673220.74 + 20 +4860889.280000001 + 30 +76.01 + 70 + 32 + 0 +VERTEX + 5 +235 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673217.7800000001 + 20 +4860888.01 + 30 +76.09 + 70 + 32 + 0 +VERTEX + 5 +236 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673215.3499999999 + 20 +4860887.22 + 30 +76.05 + 70 + 32 + 0 +VERTEX + 5 +237 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673212.48 + 20 +4860886.46 + 30 +75.92 + 70 + 32 + 0 +VERTEX + 5 +238 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673209.2800000001 + 20 +4860885.92 + 30 +75.76999999999998 + 70 + 32 + 0 +VERTEX + 5 +239 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673206.09 + 20 +4860885.74 + 30 +75.68999999999999 + 70 + 32 + 0 +VERTEX + 5 +23A +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673203.6100000001 + 20 +4860885.78 + 30 +75.64 + 70 + 32 + 0 +VERTEX + 5 +23B +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673201.1800000001 + 20 +4860885.849999998 + 30 +76.36 + 70 + 32 + 0 +VERTEX + 5 +23C +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673201.23 + 20 +4860886.579999999 + 30 +77.14 + 70 + 32 + 0 +VERTEX + 5 +23D +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673200.03 + 20 +4860886.849999999 + 30 +77.14 + 70 + 32 + 0 +VERTEX + 5 +23E +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673198.4200000001 + 20 +4860887.51 + 30 +77.3 + 70 + 32 + 0 +VERTEX + 5 +23F +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673196.9499999999 + 20 +4860888.23 + 30 +77.43999999999998 + 70 + 32 + 0 +VERTEX + 5 +240 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673195.98 + 20 +4860889.059999998 + 30 +77.67 + 70 + 32 + 0 +VERTEX + 5 +241 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673195.17 + 20 +4860890.35 + 30 +77.09999999999998 + 70 + 32 + 0 +VERTEX + 5 +242 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673193.25 + 20 +4860891.45 + 30 +75.19 + 70 + 32 + 0 +VERTEX + 5 +243 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673192.25 + 20 +4860894.24 + 30 +75.19 + 70 + 32 + 0 +VERTEX + 5 +244 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673188.7900000001 + 20 +4860896.05 + 30 +75.19 + 70 + 32 + 0 +VERTEX + 5 +245 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673186.1800000001 + 20 +4860895.179999999 + 30 +75.16 + 70 + 32 + 0 +VERTEX + 5 +246 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673184.04 + 20 +4860896.26 + 30 +75.16 + 70 + 32 + 0 +VERTEX + 5 +247 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673183.6300000002 + 20 +4860895.469999999 + 30 +77.11 + 70 + 32 + 0 +VERTEX + 5 +248 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673181.0 + 20 +4860896.58 + 30 +77.61 + 70 + 32 + 0 +VERTEX + 5 +249 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673179.06 + 20 +4860897.62 + 30 +77.48999999999998 + 70 + 32 + 0 +VERTEX + 5 +24A +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673178.02 + 20 +4860898.5 + 30 +77.43000000000002 + 70 + 32 + 0 +VERTEX + 5 +24B +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673177.46 + 20 +4860897.92 + 30 +76.78 + 70 + 32 + 0 +VERTEX + 5 +24C +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673175.65 + 20 +4860900.21 + 30 +75.08 + 70 + 32 + 0 +VERTEX + 5 +24D +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673174.2800000001 + 20 +4860902.13 + 30 +75.06 + 70 + 32 + 0 +VERTEX + 5 +24E +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673173.1 + 20 +4860904.14 + 30 +75.06 + 70 + 32 + 0 +VERTEX + 5 +24F +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673172.1300000001 + 20 +4860905.9 + 30 +75.04999999999999 + 70 + 32 + 0 +VERTEX + 5 +250 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673171.37 + 20 +4860907.639999999 + 30 +75.04999999999999 + 70 + 32 + 0 +VERTEX + 5 +251 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673170.41 + 20 +4860910.099999999 + 30 +75.04999999999999 + 70 + 32 + 0 +VERTEX + 5 +252 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673169.7 + 20 +4860912.56 + 30 +75.04999999999999 + 70 + 32 + 0 +VERTEX + 5 +253 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673169.11 + 20 +4860915.150000001 + 30 +75.04999999999999 + 70 + 32 + 0 +VERTEX + 5 +254 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673168.78 + 20 +4860917.419999998 + 30 +75.04999999999999 + 70 + 32 + 0 +VERTEX + 5 +255 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673168.5699999999 + 20 +4860919.93 + 30 +75.04999999999999 + 70 + 32 + 0 +VERTEX + 5 +256 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673168.5500000001 + 20 +4860922.389999998 + 30 +75.04999999999999 + 70 + 32 + 0 +VERTEX + 5 +257 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673168.64 + 20 +4860924.96 + 30 +75.04000000000002 + 70 + 32 + 0 +VERTEX + 5 +258 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673168.9300000001 + 20 +4860926.919999999 + 30 +75.04000000000002 + 70 + 32 + 0 +VERTEX + 5 +259 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673169.39 + 20 +4860928.98 + 30 +75.12999999999998 + 70 + 32 + 0 +VERTEX + 5 +25A +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673169.9499999999 + 20 +4860930.639999999 + 30 +75.3 + 70 + 32 + 0 +VERTEX + 5 +25B +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673170.4300000001 + 20 +4860932.08 + 30 +75.44 + 70 + 32 + 0 +VERTEX + 5 +25C +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673171.0699999999 + 20 +4860933.95 + 30 +75.56999999999998 + 70 + 32 + 0 +VERTEX + 5 +25D +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673172.0799999999 + 20 +4860936.33 + 30 +75.70999999999997 + 70 + 32 + 0 +VERTEX + 5 +25E +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673173.39 + 20 +4860938.95 + 30 +75.86 + 70 + 32 + 0 +VERTEX + 5 +25F +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673174.9399999999 + 20 +4860942.04 + 30 +76.0 + 70 + 32 + 0 +VERTEX + 5 +260 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673173.61 + 20 +4860942.67 + 30 +76.18000000000002 + 70 + 32 + 0 +VERTEX + 5 +261 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673175.1700000001 + 20 +4860945.86 + 30 +76.97 + 70 + 32 + 0 +VERTEX + 5 +262 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673191.8900000002 + 20 +4860979.79 + 30 +76.97 + 70 + 32 + 0 +VERTEX + 5 +263 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673192.44 + 20 +4860980.969999999 + 30 +76.97 + 70 + 32 + 0 +VERTEX + 5 +264 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673193.4599999999 + 20 +4860983.12 + 30 +79.87999999999998 + 70 + 32 + 0 +VERTEX + 5 +265 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673211.59 + 20 +4860974.32 + 30 +81.34 + 70 + 32 + 0 +VERTEX + 5 +266 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673212.05 + 20 +4860975.28 + 30 +79.15 + 70 + 32 + 0 +VERTEX + 5 +267 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673215.5600000003 + 20 +4860950.639999999 + 30 +76.2 + 70 + 32 + 0 +VERTEX + 5 +268 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673222.86 + 20 +4860965.110000001 + 30 +76.65 + 70 + 32 + 0 +VERTEX + 5 +269 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673196.5600000001 + 20 +4860977.6 + 30 +76.79999999999998 + 70 + 32 + 0 +VERTEX + 5 +26A +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673189.6 + 20 +4860963.070000001 + 30 +76.29999999999999 + 70 + 32 + 0 +VERTEX + 5 +26B +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673215.5600000003 + 20 +4860950.639999999 + 30 +76.2 + 70 + 32 + 0 +VERTEX + 5 +26C +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673212.05 + 20 +4860975.28 + 30 +79.15 + 70 + 32 + 0 +VERTEX + 5 +26D +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673206.0 + 20 +4860931.69 + 30 +75.81 + 70 + 32 + 0 +VERTEX + 5 +26E +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673213.2199999999 + 20 +4860945.990000001 + 30 +76.06 + 70 + 32 + 0 +VERTEX + 5 +26F +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673187.3 + 20 +4860958.27 + 30 +76.14 + 70 + 32 + 0 +VERTEX + 5 +270 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673180.4100000001 + 20 +4860943.889999999 + 30 +76.0 + 70 + 32 + 0 +VERTEX + 5 +271 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673206.0 + 20 +4860931.69 + 30 +75.81 + 70 + 32 + 0 +VERTEX + 5 +272 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673212.05 + 20 +4860975.28 + 30 +79.15 + 70 + 32 + 0 +VERTEX + 5 +273 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673191.8199999999 + 20 +4860918.62 + 30 +75.42 + 70 + 32 + 0 +VERTEX + 5 +274 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673193.0100000001 + 20 +4860919.9 + 30 +75.44 + 70 + 32 + 0 +VERTEX + 5 +275 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673194.7600000001 + 20 +4860921.049999999 + 30 +75.47 + 70 + 32 + 0 +VERTEX + 5 +276 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673196.6400000001 + 20 +4860921.78 + 30 +75.53 + 70 + 32 + 0 +VERTEX + 5 +277 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673198.2399999999 + 20 +4860921.94 + 30 +75.59999999999998 + 70 + 32 + 0 +VERTEX + 5 +278 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673200.1600000001 + 20 +4860922.17 + 30 +75.64 + 70 + 32 + 0 +VERTEX + 5 +279 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673200.7900000001 + 20 +4860922.219999999 + 30 +75.64 + 70 + 32 + 0 +VERTEX + 5 +27A +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673202.4100000001 + 20 +4860924.78 + 30 +75.68000000000002 + 70 + 32 + 0 +VERTEX + 5 +27B +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673203.9900000001 + 20 +4860927.639999998 + 30 +75.73999999999998 + 70 + 32 + 0 +VERTEX + 5 +27C +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673178.4600000001 + 20 +4860939.799999999 + 30 +75.95 + 70 + 32 + 0 +VERTEX + 5 +27D +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673176.22 + 20 +4860935.17 + 30 +75.75 + 70 + 32 + 0 +VERTEX + 5 +27E +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673175.4999999999 + 20 +4860933.349999998 + 30 +75.64 + 70 + 32 + 0 +VERTEX + 5 +27F +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673174.6 + 20 +4860930.74 + 30 +75.48999999999998 + 70 + 32 + 0 +VERTEX + 5 +280 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673173.2 + 20 +4860927.53 + 30 +75.14 + 70 + 32 + 0 +VERTEX + 5 +281 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673191.8199999999 + 20 +4860918.62 + 30 +75.42 + 70 + 32 + 0 +VERTEX + 5 +282 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673212.05 + 20 +4860975.28 + 30 +79.15 + 70 + 32 + 0 +VERTEX + 5 +283 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673190.13 + 20 +4860900.37 + 30 +75.26 + 70 + 32 + 0 +VERTEX + 5 +284 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673190.6000000001 + 20 +4860900.66 + 30 +75.26 + 70 + 32 + 0 +VERTEX + 5 +285 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673192.68 + 20 +4860905.62 + 30 +75.34 + 70 + 32 + 0 +VERTEX + 5 +286 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673191.74 + 20 +4860906.87 + 30 +75.35 + 70 + 32 + 0 +VERTEX + 5 +287 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673190.95 + 20 +4860908.23 + 30 +75.34 + 70 + 32 + 0 +VERTEX + 5 +288 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673190.28 + 20 +4860909.799999999 + 30 +75.35 + 70 + 32 + 0 +VERTEX + 5 +289 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673189.9 + 20 +4860911.549999999 + 30 +75.35 + 70 + 32 + 0 +VERTEX + 5 +28A +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673189.8499999999 + 20 +4860913.009999999 + 30 +75.36 + 70 + 32 + 0 +VERTEX + 5 +28B +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673189.8000000001 + 20 +4860914.1 + 30 +75.37 + 70 + 32 + 0 +VERTEX + 5 +28C +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673189.6800000001 + 20 +4860914.78 + 30 +75.37 + 70 + 32 + 0 +VERTEX + 5 +28D +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673172.71 + 20 +4860923.0 + 30 +75.11 + 70 + 32 + 0 +VERTEX + 5 +28E +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673172.83 + 20 +4860920.23 + 30 +75.12 + 70 + 32 + 0 +VERTEX + 5 +28F +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673172.9699999999 + 20 +4860918.169999999 + 30 +75.12 + 70 + 32 + 0 +VERTEX + 5 +290 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673173.4900000001 + 20 +4860915.44 + 30 +75.12 + 70 + 32 + 0 +VERTEX + 5 +291 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673175.45 + 20 +4860910.23 + 30 +75.12999999999998 + 70 + 32 + 0 +VERTEX + 5 +292 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673176.7600000002 + 20 +4860906.87 + 30 +75.12 + 70 + 32 + 0 +VERTEX + 5 +293 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673178.3800000001 + 20 +4860903.94 + 30 +75.12999999999998 + 70 + 32 + 0 +VERTEX + 5 +294 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673179.85 + 20 +4860901.88 + 30 +75.14 + 70 + 32 + 0 +VERTEX + 5 +295 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673180.5699999999 + 20 +4860901.07 + 30 +75.14 + 70 + 32 + 0 +VERTEX + 5 +296 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673181.4599999999 + 20 +4860900.769999998 + 30 +75.15 + 70 + 32 + 0 +VERTEX + 5 +297 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673183.1800000001 + 20 +4860900.86 + 30 +75.18 + 70 + 32 + 0 +VERTEX + 5 +298 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673184.7900000001 + 20 +4860901.2 + 30 +75.20999999999998 + 70 + 32 + 0 +VERTEX + 5 +299 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673186.3800000002 + 20 +4860901.150000001 + 30 +75.23 + 70 + 32 + 0 +VERTEX + 5 +29A +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673188.5100000001 + 20 +4860900.92 + 30 +75.25 + 70 + 32 + 0 +VERTEX + 5 +29B +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673189.7 + 20 +4860900.4 + 30 +75.25 + 70 + 32 + 0 +VERTEX + 5 +29C +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673190.13 + 20 +4860900.37 + 30 +75.26 + 70 + 32 + 0 +VERTEX + 5 +29D +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673212.05 + 20 +4860975.28 + 30 +79.15 + 70 + 32 + 0 +VERTEX + 5 +29E +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673228.77 + 20 +4860901.23 + 30 +76.12 + 70 + 32 + 0 +VERTEX + 5 +29F +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673229.57 + 20 +4860902.15 + 30 +76.03 + 70 + 32 + 0 +VERTEX + 5 +2A0 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673230.3900000002 + 20 +4860903.099999998 + 30 +75.94 + 70 + 32 + 0 +VERTEX + 5 +2A1 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673231.63 + 20 +4860905.309999998 + 30 +75.73 + 70 + 32 + 0 +VERTEX + 5 +2A2 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673235.22 + 20 +4860912.78 + 30 +75.67 + 70 + 32 + 0 +VERTEX + 5 +2A3 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673208.5999999999 + 20 +4860925.45 + 30 +75.72 + 70 + 32 + 0 +VERTEX + 5 +2A4 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673207.34 + 20 +4860922.15 + 30 +75.67 + 70 + 32 + 0 +VERTEX + 5 +2A5 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673206.0699999999 + 20 +4860919.44 + 30 +75.60999999999999 + 70 + 32 + 0 +VERTEX + 5 +2A6 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673207.0600000001 + 20 +4860918.54 + 30 +75.59000000000001 + 70 + 32 + 0 +VERTEX + 5 +2A7 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673207.85 + 20 +4860916.94 + 30 +75.65000000000002 + 70 + 32 + 0 +VERTEX + 5 +2A8 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673208.75 + 20 +4860913.7 + 30 +75.73999999999998 + 70 + 32 + 0 +VERTEX + 5 +2A9 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673208.7599999999 + 20 +4860910.62 + 30 +75.73999999999998 + 70 + 32 + 0 +VERTEX + 5 +2AA +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673228.77 + 20 +4860901.23 + 30 +76.12 + 70 + 32 + 0 +VERTEX + 5 +2AB +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673212.05 + 20 +4860975.28 + 30 +79.15 + 70 + 32 + 0 +VERTEX + 5 +2AC +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673207.6400000001 + 20 +4860890.24 + 30 +75.70999999999997 + 70 + 32 + 0 +VERTEX + 5 +2AD +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673211.56 + 20 +4860890.719999999 + 30 +75.89 + 70 + 32 + 0 +VERTEX + 5 +2AE +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673215.54 + 20 +4860892.03 + 30 +76.03 + 70 + 32 + 0 +VERTEX + 5 +2AF +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673219.27 + 20 +4860893.35 + 30 +75.99 + 70 + 32 + 0 +VERTEX + 5 +2B0 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673222.61 + 20 +4860895.38 + 30 +76.06999999999998 + 70 + 32 + 0 +VERTEX + 5 +2B1 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673225.4799999998 + 20 +4860897.57 + 30 +76.12999999999998 + 70 + 32 + 0 +VERTEX + 5 +2B2 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673207.17 + 20 +4860906.32 + 30 +75.75 + 70 + 32 + 0 +VERTEX + 5 +2B3 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673206.4499999999 + 20 +4860905.080000001 + 30 +75.70999999999997 + 70 + 32 + 0 +VERTEX + 5 +2B4 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673204.41 + 20 +4860903.77 + 30 +75.62000000000002 + 70 + 32 + 0 +VERTEX + 5 +2B5 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673202.0699999999 + 20 +4860902.99 + 30 +75.51000000000001 + 70 + 32 + 0 +VERTEX + 5 +2B6 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673199.89 + 20 +4860902.85 + 30 +75.41 + 70 + 32 + 0 +VERTEX + 5 +2B7 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673197.6899999999 + 20 +4860903.15 + 30 +75.34 + 70 + 32 + 0 +VERTEX + 5 +2B8 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673195.2099999999 + 20 +4860898.28 + 30 +75.26 + 70 + 32 + 0 +VERTEX + 5 +2B9 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673195.9899999999 + 20 +4860897.3 + 30 +75.25 + 70 + 32 + 0 +VERTEX + 5 +2BA +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673197.5900000001 + 20 +4860895.86 + 30 +75.28 + 70 + 32 + 0 +VERTEX + 5 +2BB +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673199.1 + 20 +4860894.32 + 30 +75.34 + 70 + 32 + 0 +VERTEX + 5 +2BC +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673200.4100000001 + 20 +4860892.03 + 30 +75.39 + 70 + 32 + 0 +VERTEX + 5 +2BD +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673202.04 + 20 +4860890.9 + 30 +75.45999999999998 + 70 + 32 + 0 +VERTEX + 5 +2BE +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673204.25 + 20 +4860890.36 + 30 +75.56 + 70 + 32 + 0 +VERTEX + 5 +2BF +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673207.6400000001 + 20 +4860890.24 + 30 +75.70999999999997 + 70 + 32 + 0 +VERTEX + 5 +2C0 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673212.05 + 20 +4860975.28 + 30 +79.15 + 70 + 32 + 0 +VERTEX + 5 +2C1 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673199.25 + 20 +4860907.019999999 + 30 +75.4 + 70 + 32 + 0 +VERTEX + 5 +2C2 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673199.75 + 20 +4860907.03 + 30 +75.42 + 70 + 32 + 0 +VERTEX + 5 +2C3 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673200.25 + 20 +4860907.08 + 30 +75.44 + 70 + 32 + 0 +VERTEX + 5 +2C4 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673200.74 + 20 +4860907.17 + 30 +75.45999999999998 + 70 + 32 + 0 +VERTEX + 5 +2C5 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673201.2199999999 + 20 +4860907.309999999 + 30 +75.48999999999998 + 70 + 32 + 0 +VERTEX + 5 +2C6 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673201.6800000001 + 20 +4860907.49 + 30 +75.51000000000001 + 70 + 32 + 0 +VERTEX + 5 +2C7 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673202.1300000001 + 20 +4860907.71 + 30 +75.53 + 70 + 32 + 0 +VERTEX + 5 +2C8 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673202.5600000001 + 20 +4860907.98 + 30 +75.54999999999998 + 70 + 32 + 0 +VERTEX + 5 +2C9 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673202.96 + 20 +4860908.28 + 30 +75.56999999999998 + 70 + 32 + 0 +VERTEX + 5 +2CA +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673203.32 + 20 +4860908.62 + 30 +75.59000000000001 + 70 + 32 + 0 +VERTEX + 5 +2CB +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673203.66 + 20 +4860908.99 + 30 +75.59999999999998 + 70 + 32 + 0 +VERTEX + 5 +2CC +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673203.96 + 20 +4860909.389999998 + 30 +75.62000000000002 + 70 + 32 + 0 +VERTEX + 5 +2CD +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673204.23 + 20 +4860909.809999998 + 30 +75.62999999999998 + 70 + 32 + 0 +VERTEX + 5 +2CE +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673204.4499999999 + 20 +4860910.259999998 + 30 +75.64 + 70 + 32 + 0 +VERTEX + 5 +2CF +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673204.63 + 20 +4860910.73 + 30 +75.65000000000002 + 70 + 32 + 0 +VERTEX + 5 +2D0 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673204.7700000001 + 20 +4860911.21 + 30 +75.65999999999998 + 70 + 32 + 0 +VERTEX + 5 +2D1 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673204.86 + 20 +4860911.7 + 30 +75.67 + 70 + 32 + 0 +VERTEX + 5 +2D2 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673204.9100000001 + 20 +4860912.19 + 30 +75.67 + 70 + 32 + 0 +VERTEX + 5 +2D3 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673204.92 + 20 +4860912.48 + 30 +75.67 + 70 + 32 + 0 +VERTEX + 5 +2D4 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673204.8900000002 + 20 +4860912.980000001 + 30 +75.67 + 70 + 32 + 0 +VERTEX + 5 +2D5 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673204.8299999999 + 20 +4860913.469999998 + 30 +75.67 + 70 + 32 + 0 +VERTEX + 5 +2D6 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673204.7099999999 + 20 +4860913.96 + 30 +75.67 + 70 + 32 + 0 +VERTEX + 5 +2D7 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673204.5600000001 + 20 +4860914.43 + 30 +75.65999999999998 + 70 + 32 + 0 +VERTEX + 5 +2D8 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673204.35 + 20 +4860914.89 + 30 +75.65999999999998 + 70 + 32 + 0 +VERTEX + 5 +2D9 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673204.11 + 20 +4860915.33 + 30 +75.65000000000002 + 70 + 32 + 0 +VERTEX + 5 +2DA +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673203.84 + 20 +4860915.74 + 30 +75.64 + 70 + 32 + 0 +VERTEX + 5 +2DB +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673203.52 + 20 +4860916.129999999 + 30 +75.62000000000002 + 70 + 32 + 0 +VERTEX + 5 +2DC +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673203.17 + 20 +4860916.49 + 30 +75.60999999999999 + 70 + 32 + 0 +VERTEX + 5 +2DD +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673202.78 + 20 +4860916.8 + 30 +75.59000000000001 + 70 + 32 + 0 +VERTEX + 5 +2DE +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673202.38 + 20 +4860917.09 + 30 +75.56999999999998 + 70 + 32 + 0 +VERTEX + 5 +2DF +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673201.94 + 20 +4860917.34 + 30 +75.56 + 70 + 32 + 0 +VERTEX + 5 +2E0 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673201.49 + 20 +4860917.54 + 30 +75.56 + 70 + 32 + 0 +VERTEX + 5 +2E1 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673201.01 + 20 +4860917.709999999 + 30 +75.56 + 70 + 32 + 0 +VERTEX + 5 +2E2 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673200.53 + 20 +4860917.829999999 + 30 +75.54999999999998 + 70 + 32 + 0 +VERTEX + 5 +2E3 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673200.03 + 20 +4860917.9 + 30 +75.54999999999998 + 70 + 32 + 0 +VERTEX + 5 +2E4 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673199.5300000001 + 20 +4860917.93 + 30 +75.54000000000002 + 70 + 32 + 0 +VERTEX + 5 +2E5 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673199.0300000001 + 20 +4860917.92 + 30 +75.53 + 70 + 32 + 0 +VERTEX + 5 +2E6 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673198.5400000001 + 20 +4860917.849999998 + 30 +75.51999999999998 + 70 + 32 + 0 +VERTEX + 5 +2E7 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673198.05 + 20 +4860917.74 + 30 +75.51999999999998 + 70 + 32 + 0 +VERTEX + 5 +2E8 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673197.5699999999 + 20 +4860917.59 + 30 +75.51000000000001 + 70 + 32 + 0 +VERTEX + 5 +2E9 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673197.1099999999 + 20 +4860917.4 + 30 +75.5 + 70 + 32 + 0 +VERTEX + 5 +2EA +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673196.67 + 20 +4860917.17 + 30 +75.48999999999998 + 70 + 32 + 0 +VERTEX + 5 +2EB +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673196.25 + 20 +4860916.889999999 + 30 +75.48 + 70 + 32 + 0 +VERTEX + 5 +2EC +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673195.86 + 20 +4860916.58 + 30 +75.47 + 70 + 32 + 0 +VERTEX + 5 +2ED +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673195.5000000002 + 20 +4860916.23 + 30 +75.47 + 70 + 32 + 0 +VERTEX + 5 +2EE +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673195.17 + 20 +4860915.85 + 30 +75.45999999999998 + 70 + 32 + 0 +VERTEX + 5 +2EF +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673194.8800000002 + 20 +4860915.44 + 30 +75.45 + 70 + 32 + 0 +VERTEX + 5 +2F0 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673194.63 + 20 +4860915.01 + 30 +75.45 + 70 + 32 + 0 +VERTEX + 5 +2F1 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673194.42 + 20 +4860914.56 + 30 +75.44 + 70 + 32 + 0 +VERTEX + 5 +2F2 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673194.2500000001 + 20 +4860914.09 + 30 +75.43000000000002 + 70 + 32 + 0 +VERTEX + 5 +2F3 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673194.1299999999 + 20 +4860913.61 + 30 +75.43000000000002 + 70 + 32 + 0 +VERTEX + 5 +2F4 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673194.04 + 20 +4860913.12 + 30 +75.42 + 70 + 32 + 0 +VERTEX + 5 +2F5 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673194.01 + 20 +4860912.62 + 30 +75.42 + 70 + 32 + 0 +VERTEX + 5 +2F6 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673194.0200000001 + 20 +4860912.12 + 30 +75.42 + 70 + 32 + 0 +VERTEX + 5 +2F7 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673194.0699999999 + 20 +4860911.62 + 30 +75.41 + 70 + 32 + 0 +VERTEX + 5 +2F8 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673194.17 + 20 +4860911.129999998 + 30 +75.41 + 70 + 32 + 0 +VERTEX + 5 +2F9 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673194.3199999999 + 20 +4860910.65 + 30 +75.41 + 70 + 32 + 0 +VERTEX + 5 +2FA +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673194.51 + 20 +4860910.190000001 + 30 +75.41 + 70 + 32 + 0 +VERTEX + 5 +2FB +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673194.74 + 20 +4860909.740000001 + 30 +75.41 + 70 + 32 + 0 +VERTEX + 5 +2FC +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673195.01 + 20 +4860909.33 + 30 +75.41 + 70 + 32 + 0 +VERTEX + 5 +2FD +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673195.3100000001 + 20 +4860908.929999999 + 30 +75.4 + 70 + 32 + 0 +VERTEX + 5 +2FE +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673195.6600000001 + 20 +4860908.57 + 30 +75.4 + 70 + 32 + 0 +VERTEX + 5 +2FF +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673196.03 + 20 +4860908.24 + 30 +75.4 + 70 + 32 + 0 +VERTEX + 5 +300 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673196.4300000001 + 20 +4860907.94 + 30 +75.4 + 70 + 32 + 0 +VERTEX + 5 +301 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673196.86 + 20 +4860907.679999999 + 30 +75.4 + 70 + 32 + 0 +VERTEX + 5 +302 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673197.3100000001 + 20 +4860907.459999999 + 30 +75.4 + 70 + 32 + 0 +VERTEX + 5 +303 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673197.78 + 20 +4860907.280000001 + 30 +75.4 + 70 + 32 + 0 +VERTEX + 5 +304 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673198.2600000002 + 20 +4860907.15 + 30 +75.4 + 70 + 32 + 0 +VERTEX + 5 +305 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673198.7499999999 + 20 +4860907.07 + 30 +75.4 + 70 + 32 + 0 +VERTEX + 5 +306 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673199.25 + 20 +4860907.019999999 + 30 +75.4 + 70 + 32 + 0 +VERTEX + 5 +307 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673212.05 + 20 +4860975.28 + 30 +79.15 + 70 + 32 + 0 +VERTEX + 5 +308 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673237.2500000001 + 20 +4860916.92 + 30 +75.75 + 70 + 32 + 0 +VERTEX + 5 +309 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673244.32 + 20 +4860931.309999998 + 30 +76.01 + 70 + 32 + 0 +VERTEX + 5 +30A +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673217.83 + 20 +4860943.78 + 30 +76.04 + 70 + 32 + 0 +VERTEX + 5 +30B +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673210.6800000001 + 20 +4860929.52 + 30 +75.79 + 70 + 32 + 0 +VERTEX + 5 +30C +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673237.2500000001 + 20 +4860916.92 + 30 +75.75 + 70 + 32 + 0 +VERTEX + 5 +30D +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673212.05 + 20 +4860975.28 + 30 +79.15 + 70 + 32 + 0 +VERTEX + 5 +30E +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673246.6200000001 + 20 +4860935.910000001 + 30 +76.18999999999998 + 70 + 32 + 0 +VERTEX + 5 +30F +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673248.8899999999 + 20 +4860940.65 + 30 +77.40999999999998 + 70 + 32 + 0 +VERTEX + 5 +310 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673252.5200000002 + 20 +4860938.91 + 30 +78.04000000000002 + 70 + 32 + 0 +VERTEX + 5 +311 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673258.99 + 20 +4860952.45 + 30 +78.04000000000002 + 70 + 32 + 0 +VERTEX + 5 +312 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673255.39 + 20 +4860954.17 + 30 +77.98999999999998 + 70 + 32 + 0 +VERTEX + 5 +313 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673253.6300000001 + 20 +4860950.5 + 30 +77.43000000000002 + 70 + 32 + 0 +VERTEX + 5 +314 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673227.5900000001 + 20 +4860962.87 + 30 +76.58 + 70 + 32 + 0 +VERTEX + 5 +315 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673220.28 + 20 +4860948.57 + 30 +76.14 + 70 + 32 + 0 +VERTEX + 5 +316 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +673246.6200000001 + 20 +4860935.910000001 + 30 +76.18999999999998 + 70 + 32 + 0 +SEQEND + 5 +317 +330 +21E +100 +AcDbEntity + 8 +A020206_entra_esci_1 + 0 +POINT + 5 +6B538 +330 +1F +100 +AcDbEntity + 8 +P020208 +100 +AcDbPoint + 10 +675645.41 + 20 +4867515.0 + 30 +508.06 +1001 +SHP_TIPM +1000 +3Z NaN +1001 +SHP_NREC +1000 + 1|P020208 +1001 +SHP_FLDDSC +1000 +OBJECTID|N|9|0;ID_ZRIL|C|12|0;PALO_TY|C|10|0;PALO_IMP|C|10|0;GC_CODICE|C|8|0;PALO_SY|C|50|0;PALO_QE|F|19|11;PALO_ANG|F|19|11;PALO_F_SC|F|19|11;FID_|N|9|0;Classe|C|8|0;Descrizion|C|250|0;COD_SS_Pun|C|20|0;Flag_Mod|C|1|0;FeatureID|C|20|0;COD_ORIG|C|8|0;Rip +1001 +SHP_FLDVAL +1000 + 1 11 06 C28000_ S10 5.08280000000e+002 0.00000000000e+000 1.00000000000e+000 020208 + 0 +POINT + 5 +6B539 +330 +1F +100 +AcDbEntity + 8 +P020208 +100 +AcDbPoint + 10 +675768.8100000001 + 20 +4867500.02 + 30 +490.0599999999999 +1001 +SHP_TIPM +1000 +3Z NaN +1001 +SHP_NREC +1000 + 2|P020208 +1001 +SHP_FLDDSC +1000 +OBJECTID|N|9|0;ID_ZRIL|C|12|0;PALO_TY|C|10|0;PALO_IMP|C|10|0;GC_CODICE|C|8|0;PALO_SY|C|50|0;PALO_QE|F|19|11;PALO_ANG|F|19|11;PALO_F_SC|F|19|11;FID_|N|9|0;Classe|C|8|0;Descrizion|C|250|0;COD_SS_Pun|C|20|0;Flag_Mod|C|1|0;FeatureID|C|20|0;COD_ORIG|C|8|0;Rip +1001 +SHP_FLDVAL +1000 + 2 11 06 C28000_ S10 4.90970000000e+002 0.00000000000e+000 1.00000000000e+000 020208 + 0 +TEXT + 5 +11F3 +330 +1F +100 +AcDbEntity + 8 +T080201_1004 +100 +AcDbText + 10 +675632.98 + 20 +4867502.400000001 + 30 +0.0 + 40 +2.399999999999999 + 1 +VIA + 50 +60.0 + 7 +romans +100 +AcDbText +1001 +RT_INFO +1000 +1004| +1001 +PARAM_VEST +1000 + 1.20 60.00 + 0 +TEXT + 5 +11F4 +330 +1F +100 +AcDbEntity + 8 +T080201_1004 +100 +AcDbText + 10 +675645.0699999999 + 20 +4867525.839999999 + 30 +0.0 + 40 +2.399999999999999 + 1 +DI + 50 +75.0 + 7 +romans +100 +AcDbText +1001 +RT_INFO +1000 +1004| +1001 +PARAM_VEST +1000 + 1.20 75.00 + 0 +POLYLINE + 5 +1B0C +330 +1F +100 +AcDbEntity + 8 +A010101 +100 +AcDb3dPolyline + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 9 +1001 +SHP_NREC +1000 + 2|A010101 +1001 +SHP_FLDDSC +1000 +OBJECTID|N|9|0;ID_ZRIL|C|12|0;GC_CODICE|C|8|0;LIV|N|4|0;FID_|N|9|0;Classe|C|8|0;ID_Poly_FT|C|20|0;Descrizion|C|250|0;COD_Pol_FT|C|20|0;COD_Strada|C|20|0;COD_Ar_Str|C|20|0;Flag_Mod|C|1|0;COD_Sup_3D|C|20|0;AR_STR_CF|C|8|0;AR_STR_STA|C|8|0;FeatureID|C|20|0; +1001 +SHP_FLDVAL +1000 + 2 B11600 0 010101 + 0 +VERTEX + 5 +1B0D +330 +1B0C +100 +AcDbEntity + 8 +A010101 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +675598.03 + 20 +4867406.519999999 + 30 +506.1799999999999 + 70 + 32 + 0 +VERTEX + 5 +1B0E +330 +1B0C +100 +AcDbEntity + 8 +A010101 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +675593.8900000001 + 20 +4867407.73 + 30 +508.0899999999999 + 70 + 32 + 0 +VERTEX + 5 +1B0F +330 +1B0C +100 +AcDbEntity + 8 +A010101 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +675595.55 + 20 +4867413.67 + 30 +507.86 + 70 + 32 + 0 +VERTEX + 5 +1B10 +330 +1B0C +100 +AcDbEntity + 8 +A010101 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +675599.76 + 20 +4867412.44 + 30 +506.12 + 70 + 32 + 0 +VERTEX + 5 +1B0D +330 +1B0C +100 +AcDbEntity + 8 +A010101 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +675598.03 + 20 +4867406.519999999 + 30 +506.1799999999999 + 70 + 32 + 0 +SEQEND + 5 +1B11 +330 +1B0C +100 +AcDbEntity + 8 +A010101 + 0 +POLYLINE + 5 +1B0C +330 +1F +100 +AcDbEntity + 8 +A010101 +100 +AcDb3dPolyline + 66 + 1 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 70 + 8 +1001 +SHP_NREC +1000 + 2|A010101 +1001 +SHP_FLDDSC +1000 +OBJECTID|N|9|0;ID_ZRIL|C|12|0;GC_CODICE|C|8|0;LIV|N|4|0;FID_|N|9|0;Classe|C|8|0;ID_Poly_FT|C|20|0;Descrizion|C|250|0;COD_Pol_FT|C|20|0;COD_Strada|C|20|0;COD_Ar_Str|C|20|0;Flag_Mod|C|1|0;COD_Sup_3D|C|20|0;AR_STR_CF|C|8|0;AR_STR_STA|C|8|0;FeatureID|C|20|0; +1001 +SHP_FLDVAL +1000 + 2 B11600 0 010101 + 0 +VERTEX + 5 +1B0D +330 +1B0C +100 +AcDbEntity + 8 +A010101 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +675598.03 + 20 +4867406.519999999 + 30 +506.1799999999999 + 70 + 32 + 0 +VERTEX + 5 +1B0E +330 +1B0C +100 +AcDbEntity + 8 +A010101 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +675593.8900000001 + 20 +4867407.73 + 30 +508.0899999999999 + 70 + 32 + 0 +VERTEX + 5 +1B0F +330 +1B0C +100 +AcDbEntity + 8 +A010101 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +675595.55 + 20 +4867413.67 + 30 +507.86 + 70 + 32 + 0 +VERTEX + 5 +1B10 +330 +1B0C +100 +AcDbEntity + 8 +A010101 +100 +AcDbVertex +100 +AcDb3dPolylineVertex + 10 +675599.76 + 20 +4867412.44 + 30 +506.12 + 70 + 32 + 0 +SEQEND + 5 +1B11 +330 +1B0C +100 +AcDbEntity + 8 +A010101 + 0 +ENDSEC + 0 +SECTION + 0 +EOF \ No newline at end of file diff --git a/src/spatialite/test/movies.xml b/src/spatialite/test/movies.xml new file mode 100644 index 0000000000000000000000000000000000000000..56f33778b3a85015d60965653ea21f0b4d0ecc7f GIT binary patch literal 1770 zcmb`IQE%E%42AvLN&OF3eIIn2v5CKUAX=(rb*6%nVC?!=U zRZ&QCZ6BZGYhV8T?b@l`+03RE?A8*S+rly{EVmDKWN)lx$2@{BR@j0~co*|}^rgK6u|Q!8=38_f!@O;O;Cp5R)Qw?0^Ze4dAa~@d6BtXG zR47M>-;MVfm@%FumUZ18>uaJbJW|>6OhfWkH9erJs{9;=F`1+yPP-7jh=XYw;Q`6Isg@1KV!}d-m->q z+DV;6QY0ohwbYaroJ%@W^(~vuk@d9nSeN&JEV2f?NBownX}aWl4u@e4hx(n6W&2;~ G#2x^jQX?V& literal 0 HcmV?d00001 diff --git a/src/spatialite/test/movies.xsd b/src/spatialite/test/movies.xsd new file mode 100644 index 0000000..b64a2be --- /dev/null +++ b/src/spatialite/test/movies.xsd @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/spatialite/test/opera.xml b/src/spatialite/test/opera.xml new file mode 100644 index 0000000..217084c --- /dev/null +++ b/src/spatialite/test/opera.xml @@ -0,0 +1,25 @@ + + + + Rigoletto + Il trovatore + La traviata + Aida + Nabucco + + + Carmen + + + The Barber of Seville + William Tell + + + The Marriage of Figaro + Thus Do They All + Don Giovanni + + \ No newline at end of file diff --git a/src/spatialite/test/opera.xsd b/src/spatialite/test/opera.xsd new file mode 100644 index 0000000..ced8521 --- /dev/null +++ b/src/spatialite/test/opera.xsd @@ -0,0 +1,21 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/spatialite/test/p05.dxf b/src/spatialite/test/p05.dxf new file mode 100644 index 0000000..cb9f7e6 --- /dev/null +++ b/src/spatialite/test/p05.dxf @@ -0,0 +1,2178 @@ + 0 +SECTION + 2 +HEADER + 9 +$EXTMIN + 10 +663412.921 + 20 +5165262.643 + 30 +0.000 + 9 +$EXTMAX + 10 +668486.317 + 20 +5172964.162 + 30 +589.850 + 9 +$LUPREC + 70 + 7 + 0 +ENDSEC + 0 +SECTION + 2 +TABLES + 0 +TABLE + 2 +LAYER + 70 + 1 + 0 +LAYER + 2 +SHP_POINT + 70 +64 + 62 +7 + 6 +CONTINUOUS + 0 +ENDTAB + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +POINT + 8 +SHP_POINT + 10 +667710.008 + 20 +5169402.895 + 30 +589.850 + 0 +POINT + 8 +SHP_POINT + 10 +667687.978 + 20 +5169352.046 + 30 +583.140 + 0 +POINT + 8 +SHP_POINT + 10 +666907.922 + 20 +5168060.765 + 30 +279.470 + 0 +POINT + 8 +SHP_POINT + 10 +666953.070 + 20 +5167886.338 + 30 +277.750 + 0 +POINT + 8 +SHP_POINT + 10 +666963.279 + 20 +5167864.568 + 30 +277.550 + 0 +POINT + 8 +SHP_POINT + 10 +666902.562 + 20 +5168129.154 + 30 +280.360 + 0 +POINT + 8 +SHP_POINT + 10 +666885.472 + 20 +5168091.785 + 30 +280.020 + 0 +POINT + 8 +SHP_POINT + 10 +666814.808 + 20 +5167436.647 + 30 +279.590 + 0 +POINT + 8 +SHP_POINT + 10 +666925.492 + 20 +5168086.965 + 30 +280.320 + 0 +POINT + 8 +SHP_POINT + 10 +666849.489 + 20 +5167587.904 + 30 +276.430 + 0 +POINT + 8 +SHP_POINT + 10 +666924.442 + 20 +5168124.394 + 30 +280.360 + 0 +POINT + 8 +SHP_POINT + 10 +666921.113 + 20 +5168191.263 + 30 +281.700 + 0 +POINT + 8 +SHP_POINT + 10 +666851.349 + 20 +5167561.805 + 30 +276.970 + 0 +POINT + 8 +SHP_POINT + 10 +666814.404 + 20 +5168103.605 + 30 +279.260 + 0 +POINT + 8 +SHP_POINT + 10 +666825.179 + 20 +5167535.736 + 30 +277.590 + 0 +POINT + 8 +SHP_POINT + 10 +666808.189 + 20 +5167544.035 + 30 +277.050 + 0 +POINT + 8 +SHP_POINT + 10 +666894.342 + 20 +5168012.136 + 30 +278.340 + 0 +POINT + 8 +SHP_POINT + 10 +666914.519 + 20 +5167734.521 + 30 +275.820 + 0 +POINT + 8 +SHP_POINT + 10 +666813.393 + 20 +5167993.837 + 30 +277.920 + 0 +POINT + 8 +SHP_POINT + 10 +666805.314 + 20 +5168083.186 + 30 +279.380 + 0 +POINT + 8 +SHP_POINT + 10 +666809.044 + 20 +5168060.076 + 30 +278.940 + 0 +POINT + 8 +SHP_POINT + 10 +666812.124 + 20 +5168140.855 + 30 +279.740 + 0 +POINT + 8 +SHP_POINT + 10 +666874.072 + 20 +5168049.836 + 30 +278.640 + 0 +POINT + 8 +SHP_POINT + 10 +666842.629 + 20 +5167527.566 + 30 +277.410 + 0 +POINT + 8 +SHP_POINT + 10 +666847.179 + 20 +5167613.534 + 30 +275.890 + 0 +POINT + 8 +SHP_POINT + 10 +666880.017 + 20 +5167401.757 + 30 +281.130 + 0 +POINT + 8 +SHP_POINT + 10 +666858.643 + 20 +5168084.105 + 30 +279.740 + 0 +POINT + 8 +SHP_POINT + 10 +666893.941 + 20 +5167918.688 + 30 +277.100 + 0 +POINT + 8 +SHP_POINT + 10 +666904.593 + 20 +5168142.344 + 30 +281.220 + 0 +POINT + 8 +SHP_POINT + 10 +666856.861 + 20 +5167902.649 + 30 +277.200 + 0 +POINT + 8 +SHP_POINT + 10 +666870.811 + 20 +5167908.538 + 30 +277.500 + 0 +POINT + 8 +SHP_POINT + 10 +666933.110 + 20 +5167929.448 + 30 +278.130 + 0 +POINT + 8 +SHP_POINT + 10 +666812.124 + 20 +5168140.855 + 30 +279.760 + 0 +POINT + 8 +SHP_POINT + 10 +666852.131 + 20 +5167856.729 + 30 +277.500 + 0 +POINT + 8 +SHP_POINT + 10 +666942.910 + 20 +5167908.118 + 30 +278.130 + 0 +POINT + 8 +SHP_POINT + 10 +666835.703 + 20 +5168022.817 + 30 +278.280 + 0 +POINT + 8 +SHP_POINT + 10 +666912.201 + 20 +5167972.497 + 30 +278.360 + 0 +POINT + 8 +SHP_POINT + 10 +666822.903 + 20 +5168046.076 + 30 +278.380 + 0 +POINT + 8 +SHP_POINT + 10 +666860.253 + 20 +5168048.926 + 30 +278.620 + 0 +POINT + 8 +SHP_POINT + 10 +666935.943 + 20 +5168246.662 + 30 +283.110 + 0 +POINT + 8 +SHP_POINT + 10 +666861.251 + 20 +5167866.869 + 30 +277.700 + 0 +POINT + 8 +SHP_POINT + 10 +666855.252 + 20 +5167924.678 + 30 +277.460 + 0 +POINT + 8 +SHP_POINT + 10 +666876.451 + 20 +5167921.538 + 30 +277.480 + 0 +POINT + 8 +SHP_POINT + 10 +666885.001 + 20 +5167909.578 + 30 +277.420 + 0 +POINT + 8 +SHP_POINT + 10 +666858.211 + 20 +5167883.419 + 30 +277.200 + 0 +POINT + 8 +SHP_POINT + 10 +666877.181 + 20 +5167884.029 + 30 +277.200 + 0 +POINT + 8 +SHP_POINT + 10 +666811.683 + 20 +5168019.087 + 30 +278.180 + 0 +POINT + 8 +SHP_POINT + 10 +666846.222 + 20 +5167965.148 + 30 +277.260 + 0 +POINT + 8 +SHP_POINT + 10 +666871.322 + 20 +5167943.788 + 30 +277.520 + 0 +POINT + 8 +SHP_POINT + 10 +666927.183 + 20 +5168217.002 + 30 +282.130 + 0 +POINT + 8 +SHP_POINT + 10 +666926.129 + 20 +5167741.961 + 30 +275.820 + 0 +POINT + 8 +SHP_POINT + 10 +666886.331 + 20 +5167934.758 + 30 +277.480 + 0 +POINT + 8 +SHP_POINT + 10 +666853.662 + 20 +5167944.548 + 30 +277.520 + 0 +POINT + 8 +SHP_POINT + 10 +666810.403 + 20 +5168041.406 + 30 +278.540 + 0 +POINT + 8 +SHP_POINT + 10 +666837.753 + 20 +5168047.226 + 30 +278.360 + 0 +POINT + 8 +SHP_POINT + 10 +666903.801 + 20 +5167990.657 + 30 +278.440 + 0 +POINT + 8 +SHP_POINT + 10 +667139.889 + 20 +5168268.150 + 30 +300.230 + 0 +POINT + 8 +SHP_POINT + 10 +666939.139 + 20 +5167750.291 + 30 +275.820 + 0 +POINT + 8 +SHP_POINT + 10 +666913.683 + 20 +5168164.903 + 30 +281.400 + 0 +POINT + 8 +SHP_POINT + 10 +666907.902 + 20 +5168060.755 + 30 +279.420 + 0 +POINT + 8 +SHP_POINT + 10 +666901.601 + 20 +5167902.258 + 30 +276.980 + 0 +POINT + 8 +SHP_POINT + 10 +666809.683 + 20 +5167973.798 + 30 +277.460 + 0 +POINT + 8 +SHP_POINT + 10 +666800.183 + 20 +5167954.628 + 30 +277.540 + 0 +POINT + 8 +SHP_POINT + 10 +666896.812 + 20 +5168116.994 + 30 +280.760 + 0 +POINT + 8 +SHP_POINT + 10 +666828.383 + 20 +5168082.266 + 30 +279.420 + 0 +POINT + 8 +SHP_POINT + 10 +666828.122 + 20 +5167915.299 + 30 +276.740 + 0 +POINT + 8 +SHP_POINT + 10 +666834.001 + 20 +5167832.980 + 30 +274.500 + 0 +POINT + 8 +SHP_POINT + 10 +666825.112 + 20 +5167954.688 + 30 +277.260 + 0 +POINT + 8 +SHP_POINT + 10 +666839.321 + 20 +5167756.111 + 30 +274.000 + 0 +POINT + 8 +SHP_POINT + 10 +666831.222 + 20 +5167873.979 + 30 +276.400 + 0 +POINT + 8 +SHP_POINT + 10 +666802.625 + 20 +5168262.623 + 30 +290.370 + 0 +POINT + 8 +SHP_POINT + 10 +666923.279 + 20 +5167710.892 + 30 +276.610 + 0 +POINT + 8 +SHP_POINT + 10 +666841.240 + 20 +5167721.412 + 30 +274.450 + 0 +POINT + 8 +SHP_POINT + 10 +666944.458 + 20 +5167689.562 + 30 +277.710 + 0 +POINT + 8 +SHP_POINT + 10 +666805.545 + 20 +5168221.933 + 30 +288.970 + 0 +POINT + 8 +SHP_POINT + 10 +666894.869 + 20 +5167738.331 + 30 +275.320 + 0 +POINT + 8 +SHP_POINT + 10 +666866.360 + 20 +5167765.051 + 30 +274.960 + 0 +POINT + 8 +SHP_POINT + 10 +666808.425 + 20 +5168181.414 + 30 +295.560 + 0 +POINT + 8 +SHP_POINT + 10 +666842.680 + 20 +5167679.713 + 30 +275.390 + 0 +POINT + 8 +SHP_POINT + 10 +666836.761 + 20 +5167792.981 + 30 +274.820 + 0 +POINT + 8 +SHP_POINT + 10 +667139.422 + 20 +5168654.643 + 30 +297.790 + 0 +POINT + 8 +SHP_POINT + 10 +667147.662 + 20 +5168678.422 + 30 +300.650 + 0 +POINT + 8 +SHP_POINT + 10 +667129.572 + 20 +5168605.914 + 30 +292.750 + 0 +POINT + 8 +SHP_POINT + 10 +667133.592 + 20 +5168630.033 + 30 +295.630 + 0 +POINT + 8 +SHP_POINT + 10 +667126.571 + 20 +5168455.166 + 30 +290.170 + 0 +POINT + 8 +SHP_POINT + 10 +667002.952 + 20 +5168356.009 + 30 +287.270 + 0 +POINT + 8 +SHP_POINT + 10 +666967.223 + 20 +5168349.430 + 30 +285.740 + 0 +POINT + 8 +SHP_POINT + 10 +667019.202 + 20 +5168365.799 + 30 +286.590 + 0 +POINT + 8 +SHP_POINT + 10 +667129.182 + 20 +5168580.404 + 30 +292.520 + 0 +POINT + 8 +SHP_POINT + 10 +667129.322 + 20 +5168554.815 + 30 +291.620 + 0 +POINT + 8 +SHP_POINT + 10 +667132.652 + 20 +5168529.685 + 30 +290.730 + 0 +POINT + 8 +SHP_POINT + 10 +666641.059 + 20 +5168310.503 + 30 +285.490 + 0 +POINT + 8 +SHP_POINT + 10 +666922.384 + 20 +5168389.319 + 30 +286.320 + 0 +POINT + 8 +SHP_POINT + 10 +666946.924 + 20 +5168378.649 + 30 +286.420 + 0 +POINT + 8 +SHP_POINT + 10 +666943.693 + 20 +5168271.881 + 30 +283.520 + 0 +POINT + 8 +SHP_POINT + 10 +666896.975 + 20 +5168398.969 + 30 +286.240 + 0 +POINT + 8 +SHP_POINT + 10 +667056.111 + 20 +5168334.499 + 30 +289.530 + 0 +POINT + 8 +SHP_POINT + 10 +666993.673 + 20 +5168365.259 + 30 +286.850 + 0 +POINT + 8 +SHP_POINT + 10 +667030.402 + 20 +5168344.869 + 30 +288.410 + 0 +POINT + 8 +SHP_POINT + 10 +666959.363 + 20 +5168323.460 + 30 +284.800 + 0 +POINT + 8 +SHP_POINT + 10 +667112.640 + 20 +5168311.689 + 30 +294.310 + 0 +POINT + 8 +SHP_POINT + 10 +666822.256 + 20 +5168429.449 + 30 +287.080 + 0 +POINT + 8 +SHP_POINT + 10 +666871.975 + 20 +5168409.249 + 30 +286.500 + 0 +POINT + 8 +SHP_POINT + 10 +666768.718 + 20 +5168453.599 + 30 +287.620 + 0 +POINT + 8 +SHP_POINT + 10 +666847.116 + 20 +5168419.369 + 30 +286.700 + 0 +POINT + 8 +SHP_POINT + 10 +666742.388 + 20 +5168468.039 + 30 +287.620 + 0 +POINT + 8 +SHP_POINT + 10 +667044.382 + 20 +5168366.169 + 30 +286.670 + 0 +POINT + 8 +SHP_POINT + 10 +667096.071 + 20 +5168367.278 + 30 +287.950 + 0 +POINT + 8 +SHP_POINT + 10 +666654.678 + 20 +5168292.083 + 30 +284.570 + 0 +POINT + 8 +SHP_POINT + 10 +666967.803 + 20 +5168369.919 + 30 +286.460 + 0 +POINT + 8 +SHP_POINT + 10 +667134.110 + 20 +5168291.939 + 30 +297.270 + 0 +POINT + 8 +SHP_POINT + 10 +667112.041 + 20 +5168381.448 + 30 +288.950 + 0 +POINT + 8 +SHP_POINT + 10 +667116.071 + 20 +5168406.187 + 30 +289.570 + 0 +POINT + 8 +SHP_POINT + 10 +667123.401 + 20 +5168429.967 + 30 +289.790 + 0 +POINT + 8 +SHP_POINT + 10 +666951.543 + 20 +5168297.811 + 30 +284.240 + 0 +POINT + 8 +SHP_POINT + 10 +667133.431 + 20 +5168504.696 + 30 +290.180 + 0 +POINT + 8 +SHP_POINT + 10 +667131.951 + 20 +5168479.406 + 30 +290.040 + 0 +POINT + 8 +SHP_POINT + 10 +667087.081 + 20 +5168322.529 + 30 +291.870 + 0 +POINT + 8 +SHP_POINT + 10 +666717.909 + 20 +5168481.089 + 30 +287.620 + 0 +POINT + 8 +SHP_POINT + 10 +667070.851 + 20 +5168366.469 + 30 +287.050 + 0 +POINT + 8 +SHP_POINT + 10 +666667.588 + 20 +5168274.743 + 30 +283.690 + 0 +POINT + 8 +SHP_POINT + 10 +666792.687 + 20 +5168442.329 + 30 +287.400 + 0 +POINT + 8 +SHP_POINT + 10 +666796.656 + 20 +5168347.361 + 30 +293.050 + 0 +POINT + 8 +SHP_POINT + 10 +666794.247 + 20 +5168406.680 + 30 +294.560 + 0 +POINT + 8 +SHP_POINT + 10 +666799.916 + 20 +5168302.952 + 30 +291.870 + 0 +POINT + 8 +SHP_POINT + 10 +666795.166 + 20 +5168376.341 + 30 +293.520 + 0 +POINT + 8 +SHP_POINT + 10 +667062.872 + 20 +5169669.875 + 30 +348.990 + 0 +POINT + 8 +SHP_POINT + 10 +667227.370 + 20 +5169769.262 + 30 +377.470 + 0 +POINT + 8 +SHP_POINT + 10 +667105.197 + 20 +5169158.624 + 30 +313.540 + 0 +POINT + 8 +SHP_POINT + 10 +667023.749 + 20 +5169177.534 + 30 +308.700 + 0 +POINT + 8 +SHP_POINT + 10 +667097.098 + 20 +5169234.343 + 30 +319.710 + 0 +POINT + 8 +SHP_POINT + 10 +667103.877 + 20 +5169196.163 + 30 +317.720 + 0 +POINT + 8 +SHP_POINT + 10 +667175.021 + 20 +5169748.573 + 30 +362.210 + 0 +POINT + 8 +SHP_POINT + 10 +666808.520 + 20 +5170129.959 + 30 +377.670 + 0 +POINT + 8 +SHP_POINT + 10 +667082.839 + 20 +5169291.802 + 30 +322.480 + 0 +POINT + 8 +SHP_POINT + 10 +667106.443 + 20 +5169853.661 + 30 +361.980 + 0 +POINT + 8 +SHP_POINT + 10 +667184.764 + 20 +5168983.056 + 30 +317.680 + 0 +POINT + 8 +SHP_POINT + 10 +666992.477 + 20 +5170080.978 + 30 +381.120 + 0 +POINT + 8 +SHP_POINT + 10 +667096.772 + 20 +5169750.983 + 30 +353.030 + 0 +POINT + 8 +SHP_POINT + 10 +666892.616 + 20 +5169744.285 + 30 +349.150 + 0 +POINT + 8 +SHP_POINT + 10 +666831.349 + 20 +5170056.690 + 30 +373.250 + 0 +POINT + 8 +SHP_POINT + 10 +667216.190 + 20 +5169774.902 + 30 +378.960 + 0 +POINT + 8 +SHP_POINT + 10 +666987.247 + 20 +5170058.469 + 30 +379.090 + 0 +POINT + 8 +SHP_POINT + 10 +666818.448 + 20 +5169881.053 + 30 +358.650 + 0 +POINT + 8 +SHP_POINT + 10 +667271.399 + 20 +5169737.762 + 30 +370.850 + 0 +POINT + 8 +SHP_POINT + 10 +666880.121 + 20 +5169159.076 + 30 +305.590 + 0 +POINT + 8 +SHP_POINT + 10 +666922.695 + 20 +5169725.535 + 30 +349.700 + 0 +POINT + 8 +SHP_POINT + 10 +666808.839 + 20 +5169983.471 + 30 +366.540 + 0 +POINT + 8 +SHP_POINT + 10 +667239.131 + 20 +5169941.649 + 30 +367.040 + 0 +POINT + 8 +SHP_POINT + 10 +667198.751 + 20 +5169895.650 + 30 +364.390 + 0 +POINT + 8 +SHP_POINT + 10 +666921.295 + 20 +5169705.026 + 30 +348.250 + 0 +POINT + 8 +SHP_POINT + 10 +666924.536 + 20 +5169798.714 + 30 +354.790 + 0 +POINT + 8 +SHP_POINT + 10 +667096.172 + 20 +5169772.953 + 30 +355.870 + 0 +POINT + 8 +SHP_POINT + 10 +667111.413 + 20 +5169901.370 + 30 +366.750 + 0 +POINT + 8 +SHP_POINT + 10 +666874.666 + 20 +5169745.045 + 30 +348.690 + 0 +POINT + 8 +SHP_POINT + 10 +667137.236 + 20 +5169097.435 + 30 +312.580 + 0 +POINT + 8 +SHP_POINT + 10 +667085.768 + 20 +5169178.284 + 30 +312.250 + 0 +POINT + 8 +SHP_POINT + 10 +666815.910 + 20 +5170114.879 + 30 +377.030 + 0 +POINT + 8 +SHP_POINT + 10 +666903.431 + 20 +5169165.385 + 30 +306.000 + 0 +POINT + 8 +SHP_POINT + 10 +666857.452 + 20 +5169151.216 + 30 +304.820 + 0 +POINT + 8 +SHP_POINT + 10 +667092.888 + 20 +5169253.822 + 30 +320.750 + 0 +POINT + 8 +SHP_POINT + 10 +666813.069 + 20 +5169960.612 + 30 +364.820 + 0 +POINT + 8 +SHP_POINT + 10 +666823.830 + 20 +5170098.639 + 30 +376.080 + 0 +POINT + 8 +SHP_POINT + 10 +667072.803 + 20 +5169811.122 + 30 +358.910 + 0 +POINT + 8 +SHP_POINT + 10 +666985.192 + 20 +5169466.399 + 30 +332.820 + 0 +POINT + 8 +SHP_POINT + 10 +666857.797 + 20 +5169881.573 + 30 +359.470 + 0 +POINT + 8 +SHP_POINT + 10 +666820.909 + 20 +5170020.421 + 30 +369.580 + 0 +POINT + 8 +SHP_POINT + 10 +667181.865 + 20 +5169029.446 + 30 +313.010 + 0 +POINT + 8 +SHP_POINT + 10 +666788.601 + 20 +5170177.748 + 30 +379.810 + 0 +POINT + 8 +SHP_POINT + 10 +667247.049 + 20 +5169753.722 + 30 +373.240 + 0 +POINT + 8 +SHP_POINT + 10 +667184.572 + 20 +5168712.231 + 30 +305.290 + 0 +POINT + 8 +SHP_POINT + 10 +667089.008 + 20 +5169273.062 + 30 +322.150 + 0 +POINT + 8 +SHP_POINT + 10 +667067.948 + 20 +5169183.054 + 30 +311.310 + 0 +POINT + 8 +SHP_POINT + 10 +666929.820 + 20 +5169166.655 + 30 +306.340 + 0 +POINT + 8 +SHP_POINT + 10 +667124.116 + 20 +5169114.025 + 30 +313.360 + 0 +POINT + 8 +SHP_POINT + 10 +667075.502 + 20 +5169692.625 + 30 +350.030 + 0 +POINT + 8 +SHP_POINT + 10 +666811.701 + 20 +5170235.077 + 30 +384.970 + 0 +POINT + 8 +SHP_POINT + 10 +667045.170 + 20 +5169361.591 + 30 +326.260 + 0 +POINT + 8 +SHP_POINT + 10 +667229.080 + 20 +5169744.062 + 30 +364.750 + 0 +POINT + 8 +SHP_POINT + 10 +667092.792 + 20 +5169712.254 + 30 +350.360 + 0 +POINT + 8 +SHP_POINT + 10 +667174.575 + 20 +5169049.505 + 30 +312.220 + 0 +POINT + 8 +SHP_POINT + 10 +667078.862 + 20 +5169733.464 + 30 +351.890 + 0 +POINT + 8 +SHP_POINT + 10 +667214.750 + 20 +5169745.462 + 30 +363.280 + 0 +POINT + 8 +SHP_POINT + 10 +666916.794 + 20 +5169627.667 + 30 +342.420 + 0 +POINT + 8 +SHP_POINT + 10 +667080.731 + 20 +5169556.717 + 30 +332.960 + 0 +POINT + 8 +SHP_POINT + 10 +667110.697 + 20 +5169155.904 + 30 +315.240 + 0 +POINT + 8 +SHP_POINT + 10 +666826.319 + 20 +5170038.860 + 30 +371.410 + 0 +POINT + 8 +SHP_POINT + 10 +666793.031 + 20 +5170160.018 + 30 +379.070 + 0 +POINT + 8 +SHP_POINT + 10 +666995.587 + 20 +5170124.707 + 30 +385.680 + 0 +POINT + 8 +SHP_POINT + 10 +667058.953 + 20 +5169754.314 + 30 +354.220 + 0 +POINT + 8 +SHP_POINT + 10 +667145.902 + 20 +5169903.360 + 30 +365.750 + 0 +POINT + 8 +SHP_POINT + 10 +667052.973 + 20 +5169776.883 + 30 +360.210 + 0 +POINT + 8 +SHP_POINT + 10 +666926.236 + 20 +5169843.263 + 30 +358.620 + 0 +POINT + 8 +SHP_POINT + 10 +667024.871 + 20 +5169397.380 + 30 +328.210 + 0 +POINT + 8 +SHP_POINT + 10 +667260.409 + 20 +5169746.722 + 30 +371.970 + 0 +POINT + 8 +SHP_POINT + 10 +667100.878 + 20 +5169214.833 + 30 +318.580 + 0 +POINT + 8 +SHP_POINT + 10 +666837.088 + 20 +5169894.223 + 30 +360.380 + 0 +POINT + 8 +SHP_POINT + 10 +667164.682 + 20 +5168696.892 + 30 +303.170 + 0 +POINT + 8 +SHP_POINT + 10 +667197.174 + 20 +5168965.197 + 30 +319.640 + 0 +POINT + 8 +SHP_POINT + 10 +667265.511 + 20 +5169952.698 + 30 +370.430 + 0 +POINT + 8 +SHP_POINT + 10 +667077.582 + 20 +5169671.485 + 30 +348.270 + 0 +POINT + 8 +SHP_POINT + 10 +667100.222 + 20 +5169704.504 + 30 +350.270 + 0 +POINT + 8 +SHP_POINT + 10 +667093.292 + 20 +5169692.574 + 30 +349.330 + 0 +POINT + 8 +SHP_POINT + 10 +666990.988 + 20 +5170233.305 + 30 +396.600 + 0 +POINT + 8 +SHP_POINT + 10 +666919.340 + 20 +5170272.615 + 30 +396.840 + 0 +POINT + 8 +SHP_POINT + 10 +667034.800 + 20 +5169379.780 + 30 +327.100 + 0 +POINT + 8 +SHP_POINT + 10 +667053.540 + 20 +5169343.861 + 30 +325.310 + 0 +POINT + 8 +SHP_POINT + 10 +666801.908 + 20 +5169775.475 + 30 +349.950 + 0 +POINT + 8 +SHP_POINT + 10 +667060.013 + 20 +5169731.414 + 30 +351.670 + 0 +POINT + 8 +SHP_POINT + 10 +666818.269 + 20 +5169938.072 + 30 +363.800 + 0 +POINT + 8 +SHP_POINT + 10 +667277.939 + 20 +5169723.972 + 30 +369.780 + 0 +POINT + 8 +SHP_POINT + 10 +666831.913 + 20 +5166820.108 + 30 +276.130 + 0 +ENDSEC + 0 +EOF diff --git a/src/spatialite/test/raster_se.xml b/src/spatialite/test/raster_se.xml new file mode 100644 index 0000000..bdb85d9 --- /dev/null +++ b/src/spatialite/test/raster_se.xml @@ -0,0 +1,42 @@ + + + SLD raster - basic test + + raster - basic test + + raster - fantasy raster + a style using "dont't care" rendering + + + fantasy raster + 2000000 + +1.0 + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/spatialite/test/scandir4win.h b/src/spatialite/test/scandir4win.h new file mode 100644 index 0000000..82c70b9 --- /dev/null +++ b/src/spatialite/test/scandir4win.h @@ -0,0 +1,168 @@ +/* + * scandir() for win32 + * this tool should make life easier for people writing for both unix +and wintel + * written by Tom Torfs, 2002/10/31 + * donated to the public domain; use this code for anything you like +as long as + * it is understood there are absolutely *NO* warranties of any kind, +even implied + */ + +#ifdef _WIN32 + +#include +#include +#include + +#define MAXNAMLEN FILENAME_MAX + +/* directory entry structure */ +struct dirent +{ + char d_name[MAXNAMLEN + 1]; /* name of directory entry (0 terminated) */ + ino_t d_ino; /* file serial number -- will be 0 for win32 */ + short d_namlen; /* length of string in d_name */ + short d_reclen; /* length of this record */ +}; + +/* the scandir() function */ +int scandir (const char *dirname, + struct dirent ***namelist, + int (*select) (const struct dirent *), + int (*compar) (const void *, const void *)); + +/* compare function for scandir() for alphabetic sort (case-insensitive on Win32) */ +int alphasort (const void *d1, const void *d2); + +/* case-insensitive strcmp() */ +int istrcmp (const char *s1, const char *s2); + +#endif + +/* + * scandir() for win32 + * this tool should make life easier for people writing for both unix and wintel + * written by Tom Torfs, 2002/10/31 + * donated to the public domain; use this code for anything you like as long as + * it is understood there are absolutely *NO* warranties of any kind, even implied + */ + +int +scandir (const char *dirname, + struct dirent ***namelist, + int (*select) (const struct dirent *), + int (*compar) (const void *, const void *)) +{ + WIN32_FIND_DATA wfd; + HANDLE hf; + struct dirent **plist, **newlist; + struct dirent d; + int numentries = 0; + int allocentries = 255; + int i; + char path[FILENAME_MAX]; + + i = strlen (dirname); + + if (i > sizeof path - 5) + return -1; + + strcpy (path, dirname); + if (i > 0 && dirname[i - 1] != '\\' && dirname[i - 1] != '/') + strcat (path, "\\"); + strcat (path, "*.*"); + + hf = FindFirstFile (path, &wfd); + if (hf == INVALID_HANDLE_VALUE) + return -1; + + plist = malloc (sizeof *plist * allocentries); + if (plist == NULL) + { + FindClose (hf); + return -1; + } + + do + { + if (numentries == allocentries) + { + allocentries *= 2; + newlist = realloc (plist, sizeof *plist * allocentries); + if (newlist == NULL) + { + for (i = 0; i < numentries; i++) + free (plist[i]); + free (plist); + FindClose (hf); + return -1; + } + plist = newlist; + } + + strncpy (d.d_name, wfd.cFileName, sizeof d.d_name); + d.d_ino = 0; + d.d_namlen = strlen (wfd.cFileName); + d.d_reclen = sizeof d; + + if (select == NULL || select (&d)) + { + plist[numentries] = malloc (sizeof d); + if (plist[numentries] == NULL) + { + for (i = 0; i < numentries; i++) + free (plist[i]); + free (plist); + FindClose (hf); + return -1; + }; + memcpy (plist[numentries], &d, sizeof d); + numentries++; + } + } + while (FindNextFile (hf, &wfd)); + + FindClose (hf); + + if (numentries == 0) + { + free (plist); + *namelist = NULL; + } + else + { + newlist = realloc (plist, sizeof *plist * numentries); + if (newlist != NULL) + plist = newlist; + + if (compar != NULL) + qsort (plist, numentries, sizeof *plist, compar); + + *namelist = plist; + } + + return numentries; +} + +int +alphasort (const void *x1, const void *x2) +{ + const struct dirent **d1 = (const struct dirent **) x1; + const struct dirent **d2 = (const struct dirent **) x2; + return istrcmp ((*d1)->d_name, (*d2)->d_name); +} + +int +istrcmp (const char *s1, const char *s2) +{ + int d; + for (;;) + { + d = tolower (*s1) - tolower (*s2); + if (d != 0 || *s1 == '\0' || *s2 == '\0') + return d; + s1++; + s2++; + } +} diff --git a/src/spatialite/test/shape_3d.c b/src/spatialite/test/shape_3d.c new file mode 100644 index 0000000..efc8bf5 --- /dev/null +++ b/src/spatialite/test/shape_3d.c @@ -0,0 +1,242 @@ +/* + + shape_3d.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +void +cleanup_shapefile (const char *filename) +{ + char nam[1000]; + + if (!filename) + { + return; + } + + snprintf (nam, 1000, "%s.dbf", filename); + unlink (nam); + snprintf (nam, 1000, "%s.prj", filename); + unlink (nam); + snprintf (nam, 1000, "%s.shp", filename); + unlink (nam); + snprintf (nam, 1000, "%s.shx", filename); + unlink (nam); +} + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + int ret; + sqlite3 *handle; + char *dumpname = __FILE__ "dump"; + char *err_msg = NULL; + int row_count; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + ret = + load_shapefile (handle, "./shp/merano-3d/points", "points", "CP1252", + 25832, "col1", 0, 0, 1, 0, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, + "load_shapefile() error for shp/merano-3d/points: %s\n", + err_msg); + sqlite3_close (handle); + return -3; + } + if (row_count != 20) + { + fprintf (stderr, + "unexpected row count for shp/merano-3d/points: %i\n", + row_count); + sqlite3_close (handle); + return -4; + } + + ret = + load_shapefile (handle, "./shp/merano-3d/polygons", "polygons", + "CP1252", 25832, "col1", 0, 0, 1, 0, &row_count, + err_msg); + if (!ret) + { + fprintf (stderr, + "load_shapefile() error for shp/merano-3d/polygons: %s\n", + err_msg); + sqlite3_close (handle); + return -5; + } + if (row_count != 10) + { + fprintf (stderr, + "unexpected row count for shp/merano-3d/polygons: %i\n", + row_count); + sqlite3_close (handle); + return -6; + } + + ret = + load_shapefile (handle, "./shp/merano-3d/roads", "roads", "CP1252", + 25832, "col1", 0, 0, 1, 0, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, + "load_shapefile() error for shp/merano-3d/roads: %s\n", + err_msg); + sqlite3_close (handle); + return -7; + } + if (row_count != 18) + { + fprintf (stderr, "unexpected row count for shp/merano-3d/roads: %i\n", + row_count); + sqlite3_close (handle); + return -8; + } + + ret = + dump_shapefile (handle, "roads", "col1", dumpname, "CP1252", + "LINESTRING", 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for 3d roads: %s\n", + err_msg); + sqlite3_close (handle); + return -9; + } + cleanup_shapefile (dumpname); + if (row_count != 18) + { + fprintf (stderr, "unexpected row count for 3d roads: %i\n", + row_count); + sqlite3_close (handle); + return -10; + } + + ret = + dump_shapefile (handle, "polygons", "col1", dumpname, "CP1252", + "POLYGON", 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for 3d polygons: %s\n", + err_msg); + sqlite3_close (handle); + return -11; + } + cleanup_shapefile (dumpname); + if (row_count != 10) + { + fprintf (stderr, "unexpected row count for 3d polygons: %i\n", + row_count); + sqlite3_close (handle); + return -12; + } + + ret = + dump_shapefile (handle, "points", "col1", dumpname, "CP1252", "POINT", + 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for 3d points: %s\n", + err_msg); + sqlite3_close (handle); + return -13; + } + cleanup_shapefile (dumpname); + if (row_count != 20) + { + fprintf (stderr, "unexpected row count for 3d points: %i\n", + row_count); + sqlite3_close (handle); + return -14; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -15; + } + + spatialite_cleanup_ex (cache); +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/shape_cp1252.c b/src/spatialite/test/shape_cp1252.c new file mode 100644 index 0000000..a65efb8 --- /dev/null +++ b/src/spatialite/test/shape_cp1252.c @@ -0,0 +1,177 @@ +/* + + shape_cp1252.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + int ret; + sqlite3 *handle; + char *dbfname = __FILE__ "test.dbf"; + char *err_msg = NULL; + int row_count; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + ret = + load_shapefile (handle, "./shp/new-caledonia/points", "points", + "CP1252", 4326, "col1", 1, 0, 1, 0, &row_count, + err_msg); + if (!ret) + { + fprintf (stderr, + "load_shapefile() error for shp/new-caledonia/points: %s\n", + err_msg); + sqlite3_close (handle); + return -3; + } + if (row_count != 10) + { + fprintf (stderr, + "unexpected row count for shp/new-caledonia/points: %i\n", + row_count); + sqlite3_close (handle); + return -4; + } + + ret = + load_shapefile (handle, "./shp/new-caledonia/railways", "railways", + "CP1252", 4326, "col1", 1, 0, 1, 0, &row_count, + err_msg); + if (!ret) + { + fprintf (stderr, + "load_shapefile() error for shp/new-caledonia/railways: %s\n", + err_msg); + sqlite3_close (handle); + return -5; + } + if (row_count != 13) + { + fprintf (stderr, + "unexpected row count for shp/new-caledonia/points: %i\n", + row_count); + sqlite3_close (handle); + return -6; + } + + ret = + load_shapefile (handle, "./shp/new-caledonia/buildings", "buildings", + "CP1252", 4326, "col1", 1, 0, 1, 0, &row_count, + err_msg); + if (!ret) + { + fprintf (stderr, + "load_shapefile() error for shp/new-caledonia/buildings: %s\n", + err_msg); + sqlite3_close (handle); + return -7; + } + if (row_count != 10) + { + fprintf (stderr, + "unexpected row count for shp/new-caledonia/buildings: %i\n", + row_count); + sqlite3_close (handle); + return -8; + } + + ret = dump_dbf (handle, "points", dbfname, "CP1252", err_msg); + if (!ret) + { + fprintf (stderr, "dump_dbf() error for points: %s\n", err_msg); + sqlite3_close (handle); + return -9; + } + unlink (dbfname); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -9; + } + + spatialite_cleanup_ex (cache); +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/shape_primitives.c b/src/spatialite/test/shape_primitives.c new file mode 100644 index 0000000..4d418d2 --- /dev/null +++ b/src/spatialite/test/shape_primitives.c @@ -0,0 +1,1097 @@ +/* + + shape_primitives.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards +Ahmadou Dicko + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +void +cleanup_shapefile (const char *filename) +{ + char nam[1000]; + + if (!filename) + { + return; + } + + snprintf (nam, 1000, "%s.dbf", filename); + unlink (nam); + snprintf (nam, 1000, "%s.prj", filename); + unlink (nam); + snprintf (nam, 1000, "%s.shp", filename); + unlink (nam); + snprintf (nam, 1000, "%s.shx", filename); + unlink (nam); +} + +int +do_test (sqlite3 * handle) +{ +/* testing some DB */ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + char *dumpname = __FILE__ "dump"; + char *err_msg = NULL; + int row_count; + int ret; + gaiaVectorLayersListPtr list; + + ret = + sqlite3_exec (handle, + "CREATE TABLE Point_Test (Name TEXT, Description TEXT)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -3; + } + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('Point_Test', 'geomZ', 4326, 'POINT', 'XYZ', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn POINT XYZ error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -4; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO Point_Test (Name, Description, geomZ) VALUES ('Point 1', 'Some point', GeomFromText('POINTZ(136 -33 365)', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT POINT XYZ error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -5; + } + + ret = + dump_shapefile (handle, "Point_Test", "geomZ", dumpname, "UTF-8", + "POINT", 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for POINT XYZ: %s\n", + err_msg); + sqlite3_close (handle); + return -6; + } + cleanup_shapefile (dumpname); + + ret = + dump_shapefile (handle, "Point_Test", "geomZ", dumpname, "UTF-8", + "MULTIPOINT", 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for POINT XYZ: %s\n", + err_msg); + sqlite3_close (handle); + return -7; + } + cleanup_shapefile (dumpname); + + ret = + dump_shapefile (handle, "Point_Test", "geomZ", dumpname, "UTF-8", "", 1, + &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for POINT XYZ: %s\n", + err_msg); + sqlite3_close (handle); + return -7; /* dupe */ + } + cleanup_shapefile (dumpname); + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('Point_Test', 'geomM', 4326, 'POINT', 'XYM', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn POINT XYM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -8; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO Point_Test (Name, Description, geomM) VALUES ('Point 2', 'Some pointM', GeomFromText('POINTM(136 -33 26.7)', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT POINT XYM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -9; + } + + ret = + dump_shapefile (handle, "Point_Test", "geomM", dumpname, "UTF-8", "", 1, + &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for POINT XYM: %s\n", + err_msg); + sqlite3_close (handle); + return -10; + } + cleanup_shapefile (dumpname); + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('Point_Test', 'geomXY', 4326, 'POINT', 'XY', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn POINT XY error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -11; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO Point_Test (Name, Description, geomXY) VALUES ('Point 3', 'Some point', GeomFromText('POINT(136 -33)', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT POINT XY error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -12; + } + + ret = + dump_shapefile (handle, "Point_Test", "geomXY", dumpname, "UTF-8", "", + 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for POINT XY: %s\n", + err_msg); + sqlite3_close (handle); + return -13; + } + cleanup_shapefile (dumpname); + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('Point_Test', 'geomXYZM', 4326, 'POINT', 'XYZM', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn POINT XYZM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -14; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO Point_Test (Name, Description, geomXYZM) VALUES ('Point 4', 'Some pointXYZM', GeomFromText('POINT(136 -33 424 233.2)', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT POINT XYZM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -15; + } + + ret = + dump_shapefile (handle, "Point_Test", "geomXYZM", dumpname, "UTF-8", "", + 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for POINT XYZM: %s\n", + err_msg); + sqlite3_close (handle); + return -16; + } + cleanup_shapefile (dumpname); + + ret = sqlite3_exec (handle, "DROP TABLE Point_Test", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE Point_Test error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -20; + } + + ret = + sqlite3_exec (handle, + "CREATE TABLE MPoint_Test (Name TEXT, Description TEXT)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE MPoint_Test error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -21; + } + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('MPoint_Test', 'geom', 4326, 'MULTIPOINT', 'XY', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn MPOINT XY error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -22; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO MPoint_Test (Name, Description, geom) VALUES ('Point 1', 'Some point', GeomFromText('MULTIPOINT(136 -33, 47 2, -20, 12)', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT MPOINT XY error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -23; + } + + ret = + dump_shapefile (handle, "MPoint_Test", "geom", dumpname, "UTF-8", + "MULTIPOINT", 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for MPOINT XY: %s\n", + err_msg); + sqlite3_close (handle); + return -24; + } + cleanup_shapefile (dumpname); + + ret = + dump_shapefile (handle, "MPoint_Test", "geom", dumpname, "UTF-8", "", 1, + &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for MPOINT XY: %s\n", + err_msg); + sqlite3_close (handle); + return -25; + } + cleanup_shapefile (dumpname); + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('MPoint_Test', 'geomZ', 4326, 'MULTIPOINT', 'XYZ', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn MPOINT XYZ error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -26; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO MPoint_Test (Name, Description, geomZ) VALUES ('Point 2', 'Some pointZ', GeomFromText('MULTIPOINTZ(136 -33 1, 47 2 2, -20, 12 3)', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT MPOINT XYZ error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -27; + } + + ret = + dump_shapefile (handle, "MPoint_Test", "geomZ", dumpname, "UTF-8", "", + 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for MPOINT XYZ: %s\n", + err_msg); + sqlite3_close (handle); + return -28; + } + cleanup_shapefile (dumpname); + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('MPoint_Test', 'geomM', 4326, 'MULTIPOINT', 'XYM', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn MPOINT XYM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -29; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO MPoint_Test (Name, Description, geomM) VALUES ('Point 3', 'Some pointM', GeomFromText('MULTIPOINTM(136 -33 1, 47 2 2, -20, 12 3)', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT MPOINT XYM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -30; + } + + ret = + dump_shapefile (handle, "MPoint_Test", "geomM", dumpname, "UTF-8", "", + 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for MPOINT XYM: %s\n", + err_msg); + sqlite3_close (handle); + return -31; + } + cleanup_shapefile (dumpname); + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('MPoint_Test', 'geomMZ', 4326, 'MULTIPOINT', 'XYZM', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn MPOINT XYZM error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -32; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO MPoint_Test (Name, Description, geomMZ) VALUES ('Point 4', 'Some pointMZ', GeomFromText('MULTIPOINTMZ(136 -33 1 4.2, 47 2 2.3 1, -20, 12 3 -2)', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT MPOINT XYZM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -33; + } + + ret = + dump_shapefile (handle, "MPoint_Test", "geomMZ", dumpname, "UTF-8", "", + 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for MPOINT XYZM %s\n", + err_msg); + sqlite3_close (handle); + return -34; + } + cleanup_shapefile (dumpname); + + ret = sqlite3_exec (handle, "DROP TABLE MPoint_Test", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE MPoint_Test error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -35; + } + + ret = + sqlite3_exec (handle, + "CREATE TABLE Linestring_Test (Name TEXT, Description TEXT)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE Linestring_Test error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -36; + } + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('Linestring_Test', 'geom', 4326, 'LINESTRING', 'XY', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn LINESTRING XY error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -37; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO Linestring_Test (Name, Description, geom) VALUES ('Point 1', 'Some linestring', GeomFromText('LINESTRING(136 -33, 47 2, -20, 12)', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT LINESTRING XY error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -38; + } + + ret = + dump_shapefile (handle, "Linestring_Test", "geom", dumpname, "UTF-8", + "", 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for LINESTRING XY: %s\n", + err_msg); + sqlite3_close (handle); + return -39; + } + cleanup_shapefile (dumpname); + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('Linestring_Test', 'geomZ', 4326, 'LINESTRING', 'XYZ', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn LINESTRING XYZ error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -40; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO Linestring_Test (Name, Description, geomZ) VALUES ('Point 2', 'Some linestringZ', GeomFromText('LINESTRINGZ(136 -33 3, 47 2 3.8, -20 12 10.1)', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT LINESTRING XYZ error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -41; + } + + ret = + dump_shapefile (handle, "Linestring_Test", "geomZ", dumpname, "UTF-8", + "", 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for LINESTRING XYZ: %s\n", + err_msg); + sqlite3_close (handle); + return -42; + } + cleanup_shapefile (dumpname); + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('Linestring_Test', 'geomM', 4326, 'LINESTRING', 'XYM', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn LINESTRING XYM error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -43; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO Linestring_Test (Name, Description, geomM) VALUES ('Point 3', 'Some linestringM', GeomFromText('LINESTRINGM(136 -33 3, 47 2 3.8, -20 12 10.1)', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT LINESTRING XYM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -44; + } + + ret = + dump_shapefile (handle, "Linestring_Test", "geomM", dumpname, "UTF-8", + "", 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for LINESTRING XYM: %s\n", + err_msg); + sqlite3_close (handle); + return -45; + } + cleanup_shapefile (dumpname); + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('Linestring_Test', 'geomMZ', 4326, 'LINESTRING', 'XYZM', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn LINESTRING XYZM error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -46; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO Linestring_Test (Name, Description, geomMZ) VALUES ('Point 3', 'Some linestringZM', GeomFromText('LINESTRINGZM(136 -33 3 4.2, 47 2 3.8 1, -20 12 10.1 321)', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT LINESTRING XYZM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -47; + } + + ret = + dump_shapefile (handle, "Linestring_Test", "geomMZ", dumpname, "UTF-8", + "", 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for LINESTRING XYZM: %s\n", + err_msg); + sqlite3_close (handle); + return -48; + } + cleanup_shapefile (dumpname); + + ret = + sqlite3_exec (handle, "DROP TABLE Linestring_Test", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE Linestring_Test error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -49; + } + + ret = + sqlite3_exec (handle, + "CREATE TABLE Polygon_Test (Name TEXT, Description TEXT, thing1 INTEGER, thing2 REAL, thing3 DOUBLE, thing4 BLOB)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "CREATE TABLE Polygon_Test error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -50; + } + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('Polygon_Test', 'geom', 4326, 'POLYGON', 'XY', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn POLYGON XY error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -51; + } + /* TODO: try dumping an empty table */ + + ret = + sqlite3_exec (handle, + "INSERT INTO Polygon_Test (Name, Description, thing1, thing2, thing3, thing4, geom) VALUES ('Polygon 1', 'Some polygon', 2, 4.25, 343.343, zeroblob(40), GeomFromText('POLYGON((136 -33, 47 2, -20 -1, 136 -33),(10 -2, -20 -0.4, 40 0.1, 10 -2))', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT POLYGON XY error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -54; + } + + ret = + dump_shapefile (handle, "Polygon_Test", "geom", dumpname, "UTF-8", "", + 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for POLYGON XY: %s\n", + err_msg); + sqlite3_close (handle); + return -55; + } + cleanup_shapefile (dumpname); + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('Polygon_Test', 'geomZ', 4326, 'POLYGON', 'XYZ', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn POLYGON XYZ error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -56; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO Polygon_Test (Name, Description, thing1, thing2, thing3, thing4, geomZ) VALUES ('Polygon 2', 'Some polygonZ', 12, 14.25, 1343.343, zeroblob(140), GeomFromText('POLYGONZ((136 -33 4, 47 2 4.2, -20 -1 1, 136 -33 4),(10 -2 4, 40 0.1 1.6, -20 -0.4 1, 10 -2 4)', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT POLYGON XYZ error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -57; + } + ret = + sqlite3_exec (handle, + "INSERT INTO Polygon_Test (Name, Description, geomZ) VALUES ('Polygon 2', 'wrong direction', GeomFromText('POLYGONZ((136 -33 4, 47 2 4.2, -20 -1 1, 136 -33 4),(10 -2 4, -20 -0.4 1, 40 0.1 1.6, 10 -2 4))', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT POLYGON XYZ 2 error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -57; /* dupe */ + } + + ret = + dump_shapefile (handle, "Polygon_Test", "geomZ", dumpname, "UTF-8", "", + 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for POLYGON XYZ: %s\n", + err_msg); + sqlite3_close (handle); + return -58; + } + cleanup_shapefile (dumpname); + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('Polygon_Test', 'geomM', 4326, 'POLYGON', 'XYM', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn POLYGON XYM error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -59; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO Polygon_Test (Name, Description, geomM) VALUES ('Polygon 3', 'Some polygonM', GeomFromText('POLYGONM((136 -33 4, 47 2 4.2, -20 -1 1, 136 -33 4),(10 -2 4, -20 -0.4 1, 40 0.1 1.6, 10 -2 4))', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT POLYGON XYM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -60; + } + + ret = + dump_shapefile (handle, "Polygon_Test", "geomM", dumpname, "UTF-8", "", + 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for POLYGON XYM: %s\n", + err_msg); + sqlite3_close (handle); + return -61; + } + cleanup_shapefile (dumpname); + + ret = + sqlite3_exec (handle, + "SELECT AddGeometryColumn('Polygon_Test', 'geomZM', 4326, 'POLYGON', 'XYZM', 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "AddGeometryColumn POLYGON XYZM error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -62; + } + + ret = + sqlite3_exec (handle, + "INSERT INTO Polygon_Test (Name, Description, geomZM) VALUES ('Polygon 4', 'Some polygonZM', GeomFromText('POLYGONZM((136 -33 4 4, 47 2 4.2 4.4, -20 -1 1 1, 136 -33 4 4),(10 -2 4 1, -20 -0.4 1 1, 40 0.1 1.6 1, 10 -2 4 1))', 4326))", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "INSERT POLYGON XYZM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -63; + } + + ret = + dump_shapefile (handle, "Polygon_Test", "geomZM", dumpname, "UTF-8", "", + 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for POLYGON XYZM: %s\n", + err_msg); + sqlite3_close (handle); + return -64; + } + cleanup_shapefile (dumpname); + +/* testing VectorLayersList (several flavors) */ + list = + gaiaGetVectorLayersList (handle, NULL, NULL, + GAIA_VECTORS_LIST_OPTIMISTIC); + gaiaFreeVectorLayersList (list); + list = + gaiaGetVectorLayersList (handle, NULL, NULL, + GAIA_VECTORS_LIST_PESSIMISTIC); + gaiaFreeVectorLayersList (list); + list = + gaiaGetVectorLayersList (handle, "Polygon_Test", "geomZM", + GAIA_VECTORS_LIST_OPTIMISTIC); + gaiaFreeVectorLayersList (list); + gaiaStatisticsInvalidate (handle, NULL, NULL); + list = + gaiaGetVectorLayersList (handle, NULL, NULL, + GAIA_VECTORS_LIST_PESSIMISTIC); + gaiaFreeVectorLayersList (list); + gaiaStatisticsInvalidate (handle, "Polygon_Test", NULL); + list = + gaiaGetVectorLayersList (handle, NULL, NULL, + GAIA_VECTORS_LIST_PESSIMISTIC); + gaiaFreeVectorLayersList (list); + gaiaStatisticsInvalidate (handle, "Polygon_Test", "geomZM"); + list = + gaiaGetVectorLayersList (handle, NULL, NULL, + GAIA_VECTORS_LIST_PESSIMISTIC); + gaiaFreeVectorLayersList (list); + gaiaStatisticsInvalidate (handle, "Palygon_Tost", "ZMgeom"); + + ret = + sqlite3_exec (handle, "DROP TABLE Polygon_Test", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE Polygon_Test error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -65; + } + +/* final DB cleanup */ + ret = + sqlite3_exec (handle, "DELETE FROM geometry_columns", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE FROM geometry_columns error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -66; + } + ret = + sqlite3_exec (handle, + "DELETE FROM spatialite_history WHERE geometry_column IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE FROM spatialite_history error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -66; + } + ret = sqlite3_exec (handle, "VACUUM", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VACUUM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -66; + } +#endif /* end ICONV conditional */ + +/* ok, succesfull termination */ + return 0; +} + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ +#ifdef ENABLE_LWGEOM /* only if LWGEOM is supported */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + +/* testing current style metadata layout >= v.4.0.0 */ + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + ret = do_test (handle); + if (ret != 0) + { + fprintf (stderr, + "error while testing current style metadata layout\n"); + return ret; + } + + spatialite_cleanup_ex (cache); + sqlite3_close (handle); + +/* testing legacy style metadata layout <= v.3.1.0 */ + cache = spatialite_alloc_connection (); + ret = + system + ("cp test-legacy-3.0.1.sqlite copy-primitives-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy legacy v.3.0.1 database\n"); + return -1; + } + ret = + sqlite3_open_v2 ("copy-primitives-legacy-3.0.1.sqlite", &handle, + SQLITE_OPEN_READWRITE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open legacy v.3.0.1 database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = do_test (handle); + if (ret != 0) + { + fprintf (stderr, + "error while testing legacy style metadata layout\n"); + return ret; + } + + spatialite_cleanup_ex (cache); + sqlite3_close (handle); + ret = unlink ("copy-primitives-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove legacy v.3.0.1 database\n"); + return -1; + } + +/* testing invalid geometries [check/repair] */ + cache = spatialite_alloc_connection (); + ret = system ("cp test-invalid.sqlite copy-invalid.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy invalid-geoms database\n"); + return -1; + } + ret = + sqlite3_open_v2 ("copy-invalid.sqlite", &handle, SQLITE_OPEN_READWRITE, + NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open invalid-geoms database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = check_all_geometry_columns_r (cache, handle, "./report", NULL, NULL); + if (!ret) + { + fprintf (stderr, "check_all_geometry_columns() error\n"); + sqlite3_close (handle); + return -61; + } + + ret = + sanitize_all_geometry_columns_r (cache, handle, "tmp_", "./report", + NULL, NULL); + if (!ret) + { + fprintf (stderr, "sanitize_all_geometry_columns() error\n"); + sqlite3_close (handle); + return -62; + } + + spatialite_cleanup_ex (cache); + sqlite3_close (handle); + ret = unlink ("copy-invalid.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove invalid-geoms database\n"); + return -1; + } + +/* testing invalid geometries [check/repair] - legacy mode */ + spatialite_init (0); + ret = system ("cp test-invalid.sqlite copy-invalid.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy invalid-geoms database\n"); + return -1; + } + ret = + sqlite3_open_v2 ("copy-invalid.sqlite", &handle, SQLITE_OPEN_READWRITE, + NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open invalid-geoms database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + ret = check_all_geometry_columns (handle, "./report", NULL, NULL); + if (!ret) + { + fprintf (stderr, "check_all_geometry_columns() error\n"); + sqlite3_close (handle); + return -91; + } + + ret = + sanitize_all_geometry_columns (handle, "tmp_", "./report", NULL, NULL); + if (!ret) + { + fprintf (stderr, "sanitize_all_geometry_columns() error\n"); + sqlite3_close (handle); + return -92; + } + + spatialite_cleanup (); + sqlite3_close (handle); + ret = unlink ("copy-invalid.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove invalid-geoms database\n"); + return -1; + } + +/* testing legacy style metadata layout (v.2.3.1) */ + cache = spatialite_alloc_connection (); + ret = system ("cp test-legacy-2.3.1.sqlite copy-legacy-2.3.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy legacy v.2.3.1 database\n"); + return -1; + } + ret = + sqlite3_open_v2 ("copy-legacy-2.3.1.sqlite", &handle, + SQLITE_OPEN_READWRITE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open legacy v.2.3.1 database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = do_test (handle); + if (ret != 0) + { + fprintf (stderr, + "error while testing legacy (2.3.1) style metadata layout\n"); + return ret; + } + + spatialite_cleanup_ex (cache); + sqlite3_close (handle); + ret = unlink ("copy-legacy-2.3.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove legacy v.2.3.1 database\n"); + return -1; + } + +#endif /* end LWGEOM conditionals */ +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/shape_utf8_1.c b/src/spatialite/test/shape_utf8_1.c new file mode 100644 index 0000000..b5a7697 --- /dev/null +++ b/src/spatialite/test/shape_utf8_1.c @@ -0,0 +1,472 @@ +/* + + shape_utf8_1.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards +Ahmadou Dicko + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +void +cleanup_shapefile (const char *filename) +{ + char nam[1000]; + + if (!filename) + { + return; + } + + snprintf (nam, 1000, "%s.dbf", filename); + unlink (nam); + snprintf (nam, 1000, "%s.prj", filename); + unlink (nam); + snprintf (nam, 1000, "%s.shp", filename); + unlink (nam); + snprintf (nam, 1000, "%s.shx", filename); + unlink (nam); +} + +int +do_test (sqlite3 * handle, int legacy) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + int ret; + char *dumpname = __FILE__ "dump"; + char *err_msg = NULL; + int row_count; + + ret = + load_shapefile (handle, "./shp/gaza/barrier", "barrier", "UTF-8", 4326, + NULL, 1, 0, 1, 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "load_shapefile() error for shp/gaza/barrier: %s\n", + err_msg); + sqlite3_close (handle); + return -3; + } + if (row_count != 5) + { + fprintf (stderr, "unexpected row count for shp/gaza/barrier: %i\n", + row_count); + sqlite3_close (handle); + return -4; + } + + ret = + load_shapefile (handle, "./shp/gaza/aeroway", "aeroway", "UTF-8", 4326, + "col1", 1, 0, 0, 0, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "load_shapefile() error for shp/gaza/aeroway: %s\n", + err_msg); + sqlite3_close (handle); + return -5; + } + if (row_count != 1) + { + fprintf (stderr, "unexpected row count for shp/gaza/aeroway: %i\n", + row_count); + sqlite3_close (handle); + return -6; + } + + ret = load_shapefile (handle, "./shp/gaza/route", "route", "UTF-8", 4326, + NULL, 1, 0, 1, 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "load_shapefile() error for shp/gaza/route: %s\n", + err_msg); + sqlite3_close (handle); + return -7; + } + if (row_count != 2) + { + fprintf (stderr, "unexpected row count for shp/gaza/route: %i\n", + row_count); + sqlite3_close (handle); + return -8; + } + + if (legacy) + { + sqlite3_exec (handle, "DELETE FROM layer_statistics", NULL, NULL, + NULL); + sqlite3_exec (handle, "DELETE FROM views_layer_statistics", NULL, + NULL, NULL); + } + else + { + sqlite3_exec (handle, "DELETE FROM geometry_columns_statistics", NULL, + NULL, NULL); + sqlite3_exec (handle, "DELETE FROM views_geometry_columns_statistics", + NULL, NULL, NULL); + } + + ret = + dump_shapefile (handle, "route", "Geometry", dumpname, "UTF-8", "", 1, + &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for UTF-8_1 route: %s\n", + err_msg); + sqlite3_close (handle); + return -9; + } + cleanup_shapefile (dumpname); + if (row_count != 2) + { + fprintf (stderr, "unexpected dump row count for UTF-8_1 route: %i\n", + row_count); + sqlite3_close (handle); + return -10; + } + + ret = + dump_shapefile (handle, "route", "Geometry", dumpname, "UTF-8", + "LINESTRING", 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for UTF-8_1 route: %s\n", + err_msg); + sqlite3_close (handle); + return -13; + } + cleanup_shapefile (dumpname); + if (row_count != 2) + { + fprintf (stderr, + "unexpected dump row count for UTF-8_1 route LINESTRING: %i\n", + row_count); + sqlite3_close (handle); + return -14; + } + + ret = + sqlite3_exec (handle, + "SELECT DiscardGeometryColumn('route', 'Geometry')", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DiscardGeometry route error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -15; + } + + if (legacy) + ret = + sqlite3_exec (handle, + "INSERT INTO geometry_columns (f_table_name, f_geometry_column, type, coord_dimension, srid, spatial_index_enabled) VALUES ('beta', 'gamma', 'LINESTRING', 'XY', 4326, 0)", + NULL, NULL, &err_msg); + else + ret = + sqlite3_exec (handle, + "INSERT INTO geometry_columns (f_table_name, f_geometry_column, geometry_type, coord_dimension, srid, spatial_index_enabled) VALUES (Lower('Beta'), Lower('Gamma'), 2, 2, 4326, 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "GeometryColumns route error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -16; + } + + if (legacy) + { + sqlite3_exec (handle, "DELETE FROM layer_statistics", NULL, NULL, + NULL); + ret = + sqlite3_exec (handle, + "INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, f_table_name, f_geometry_column) VALUES ('route', 'Geometry', 'ROWID', 'beta', 'gamma')", + NULL, NULL, &err_msg); + } + else + { + sqlite3_exec (handle, "DELETE FROM geometry_columns_statistics", NULL, + NULL, NULL); + ret = + sqlite3_exec (handle, + "INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, f_table_name, f_geometry_column, read_only) VALUES (Lower('Route'), Lower('Geometry'), Lower('ROWID'), Lower('Beta'), Lower('gamma'), 1)", + NULL, NULL, &err_msg); + } + if (ret != SQLITE_OK) + { + fprintf (stderr, "ViewsGeometryColumns route error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -17; + } + + ret = + dump_shapefile (handle, "route", "Geometry", dumpname, "UTF-8", NULL, 1, + &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for UTF-8_1 route (2): %s\n", + err_msg); + sqlite3_close (handle); + return -17; + } + cleanup_shapefile (dumpname); + if (row_count != 2) + { + fprintf (stderr, + "unexpected dump row count for UTF-8_1 route LINESTRING (2): %i\n", + row_count); + sqlite3_close (handle); + return -18; + } + + if (legacy) + { + /* final DB cleanup */ + ret = + sqlite3_exec (handle, "DROP TABLE aeroway", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE aeroway error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -19; + } + ret = + sqlite3_exec (handle, "DROP TABLE barrier", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE barrier error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -20; + } + ret = sqlite3_exec (handle, "DROP TABLE route", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE route error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -21; + } + ret = + sqlite3_exec (handle, "DROP TABLE idx_route_Geometry", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE idx_route_Geometry error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -22; + } + ret = + sqlite3_exec (handle, "DROP TABLE idx_barrier_Geometry", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE idx_barrier_Geometry error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -23; + } + ret = + sqlite3_exec (handle, "DELETE FROM geometry_columns", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE FROM geometry_columns error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -24; + } + ret = + sqlite3_exec (handle, "DELETE FROM views_geometry_columns", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "DELETE FROM views_geometry_columns error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -25; + } + ret = + sqlite3_exec (handle, + "DELETE FROM spatialite_history WHERE geometry_column IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE FROM spatialite_history error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -26; + } + ret = sqlite3_exec (handle, "VACUUM", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VACUUM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -27; + } + } +#endif /* end ICONV conditional */ + +/* ok, succesfull termination */ + return 0; + +} + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + +/* testing current style metadata layout >= v.4.0.0 */ + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + ret = do_test (handle, 0); + if (ret != 0) + { + fprintf (stderr, + "error while testing current style metadata layout\n"); + return ret; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -19; + } + spatialite_cleanup_ex (cache); + +/* testing legacy style metadata layout <= v.3.1.0 */ + cache = spatialite_alloc_connection (); + ret = + system ("cp test-legacy-3.0.1.sqlite copy-utf8_1-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy legacy v.3.0.1 database\n"); + return -1; + } + ret = + sqlite3_open_v2 ("copy-utf8_1-legacy-3.0.1.sqlite", &handle, + SQLITE_OPEN_READWRITE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open legacy v.3.0.1 database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = do_test (handle, 1); + if (ret != 0) + { + fprintf (stderr, + "error while testing legacy style metadata layout\n"); + return ret; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -19; + } + spatialite_cleanup_ex (cache); + ret = unlink ("copy-utf8_1-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove legacy v.3.0.1 database\n"); + return -20; + } + +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/shape_utf8_1ex.c b/src/spatialite/test/shape_utf8_1ex.c new file mode 100644 index 0000000..0e51e96 --- /dev/null +++ b/src/spatialite/test/shape_utf8_1ex.c @@ -0,0 +1,478 @@ +/* + + shape_utf8_1.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards +Ahmadou Dicko + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +void +cleanup_shapefile (const char *filename) +{ + char nam[1000]; + + if (!filename) + { + return; + } + + snprintf (nam, 1000, "%s.dbf", filename); + unlink (nam); + snprintf (nam, 1000, "%s.prj", filename); + unlink (nam); + snprintf (nam, 1000, "%s.shp", filename); + unlink (nam); + snprintf (nam, 1000, "%s.shx", filename); + unlink (nam); +} + +int +do_test (sqlite3 * handle, int legacy) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + int ret; + char *dumpname = __FILE__ "dump"; + char *err_msg = NULL; + int row_count; + + ret = + load_shapefile_ex (handle, "./shp/gaza/barrier", "barrier", "UTF-8", + 4326, NULL, NULL, "POINT", 1, 0, 1, 1, &row_count, + err_msg); + if (!ret) + { + fprintf (stderr, + "load_shapefile_ex() error for shp/gaza/barrier: %s\n", + err_msg); + sqlite3_close (handle); + return -3; + } + if (row_count != 5) + { + fprintf (stderr, "unexpected row count for shp/gaza/barrier: %i\n", + row_count); + sqlite3_close (handle); + return -4; + } + + ret = + load_shapefile_ex (handle, "./shp/gaza/aeroway", "aeroway", "UTF-8", + 4326, "col1", NULL, "LINESTRING", 1, 0, 0, 0, + &row_count, err_msg); + if (!ret) + { + fprintf (stderr, + "load_shapefile_ex() error for shp/gaza/aeroway: %s\n", + err_msg); + sqlite3_close (handle); + return -5; + } + if (row_count != 1) + { + fprintf (stderr, "unexpected row count for shp/gaza/aeroway: %i\n", + row_count); + sqlite3_close (handle); + return -6; + } + + ret = load_shapefile_ex (handle, "./shp/gaza/route", "route", "UTF-8", 4326, + NULL, NULL, "MULTILINESTRING", 1, 0, 1, 1, + &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "load_shapefile_ex() error for shp/gaza/route: %s\n", + err_msg); + sqlite3_close (handle); + return -7; + } + if (row_count != 2) + { + fprintf (stderr, "unexpected row count for shp/gaza/route: %i\n", + row_count); + sqlite3_close (handle); + return -8; + } + + if (legacy) + { + sqlite3_exec (handle, "DELETE FROM layer_statistics", NULL, NULL, + NULL); + sqlite3_exec (handle, "DELETE FROM views_layer_statistics", NULL, + NULL, NULL); + } + else + { + sqlite3_exec (handle, "DELETE FROM geometry_columns_statistics", NULL, + NULL, NULL); + sqlite3_exec (handle, "DELETE FROM views_geometry_columns_statistics", + NULL, NULL, NULL); + } + + ret = + dump_shapefile (handle, "route", "Geometry", dumpname, "UTF-8", "", 1, + &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for UTF-8_1 route: %s\n", + err_msg); + sqlite3_close (handle); + return -9; + } + cleanup_shapefile (dumpname); + if (row_count != 2) + { + fprintf (stderr, "unexpected dump row count for UTF-8_1 route: %i\n", + row_count); + sqlite3_close (handle); + return -10; + } + + ret = + dump_shapefile (handle, "route", "Geometry", dumpname, "UTF-8", + "LINESTRING", 1, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for UTF-8_1 route: %s\n", + err_msg); + sqlite3_close (handle); + return -13; + } + cleanup_shapefile (dumpname); + if (row_count != 2) + { + fprintf (stderr, + "unexpected dump row count for UTF-8_1 route LINESTRING: %i\n", + row_count); + sqlite3_close (handle); + return -14; + } + + ret = + sqlite3_exec (handle, + "SELECT DiscardGeometryColumn('route', 'Geometry')", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DiscardGeometry route error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -15; + } + + if (legacy) + ret = + sqlite3_exec (handle, + "INSERT INTO geometry_columns (f_table_name, f_geometry_column, type, coord_dimension, srid, spatial_index_enabled) VALUES ('beta', 'gamma', 'LINESTRING', 'XY', 4326, 0)", + NULL, NULL, &err_msg); + else + ret = + sqlite3_exec (handle, + "INSERT INTO geometry_columns (f_table_name, f_geometry_column, geometry_type, coord_dimension, srid, spatial_index_enabled) VALUES (Lower('Beta'), Lower('Gamma'), 2, 2, 4326, 0)", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "GeometryColumns route error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -16; + } + + if (legacy) + { + sqlite3_exec (handle, "DELETE FROM layer_statistics", NULL, NULL, + NULL); + ret = + sqlite3_exec (handle, + "INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, f_table_name, f_geometry_column) VALUES ('route', 'Geometry', 'ROWID', 'beta', 'gamma')", + NULL, NULL, &err_msg); + } + else + { + sqlite3_exec (handle, "DELETE FROM geometry_columns_statistics", NULL, + NULL, NULL); + ret = + sqlite3_exec (handle, + "INSERT INTO views_geometry_columns (view_name, view_geometry, view_rowid, f_table_name, f_geometry_column, read_only) VALUES (Lower('Route'), Lower('Geometry'), Lower('ROWID'), Lower('Beta'), Lower('Gamma'), 1)", + NULL, NULL, &err_msg); + } + if (ret != SQLITE_OK) + { + fprintf (stderr, "ViewsGeometryColumns route error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -17; + } + + ret = + dump_shapefile (handle, "route", "Geometry", dumpname, "UTF-8", NULL, 1, + &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "dump_shapefile() error for UTF-8_1 route (2): %s\n", + err_msg); + sqlite3_close (handle); + return -17; + } + cleanup_shapefile (dumpname); + if (row_count != 2) + { + fprintf (stderr, + "unexpected dump row count for UTF-8_1 route LINESTRING (2): %i\n", + row_count); + sqlite3_close (handle); + return -18; + } + + if (legacy) + { + /* final DB cleanup */ + ret = + sqlite3_exec (handle, "DROP TABLE aeroway", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE aeroway error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -19; + } + ret = + sqlite3_exec (handle, "DROP TABLE barrier", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE barrier error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -20; + } + ret = sqlite3_exec (handle, "DROP TABLE route", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE route error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -21; + } + ret = + sqlite3_exec (handle, "DROP TABLE idx_route_Geometry", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE idx_route_Geometry error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -22; + } + ret = + sqlite3_exec (handle, "DROP TABLE idx_barrier_Geometry", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DROP TABLE idx_barrier_Geometry error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -23; + } + ret = + sqlite3_exec (handle, "DELETE FROM geometry_columns", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE FROM geometry_columns error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -24; + } + ret = + sqlite3_exec (handle, "DELETE FROM views_geometry_columns", NULL, + NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, + "DELETE FROM views_geometry_columns error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -25; + } + ret = + sqlite3_exec (handle, + "DELETE FROM spatialite_history WHERE geometry_column IS NOT NULL", + NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "DELETE FROM spatialite_history error: %s\n", + err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -26; + } + ret = sqlite3_exec (handle, "VACUUM", NULL, NULL, &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "VACUUM error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -27; + } + } +#endif /* end ICONV conditional */ + +/* ok, succesfull termination */ + return 0; + +} + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + int ret; + sqlite3 *handle; + char *err_msg = NULL; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + +/* testing current style metadata layout >= v.4.0.0 */ + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + ret = do_test (handle, 0); + if (ret != 0) + { + fprintf (stderr, + "error while testing current style metadata layout\n"); + return ret; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -19; + } + spatialite_cleanup_ex (cache); + +/* testing legacy style metadata layout <= v.3.1.0 */ + cache = spatialite_alloc_connection (); + ret = + system + ("cp test-legacy-3.0.1.sqlite copy-utf8_1ex-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot copy legacy v.3.0.1 database\n"); + return -1; + } + ret = + sqlite3_open_v2 ("copy-utf8_1ex-legacy-3.0.1.sqlite", &handle, + SQLITE_OPEN_READWRITE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open legacy v.3.0.1 database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = do_test (handle, 1); + if (ret != 0) + { + fprintf (stderr, + "error while testing legacy style metadata layout\n"); + return ret; + } + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -19; + } + spatialite_cleanup_ex (cache); + ret = unlink ("copy-utf8_1ex-legacy-3.0.1.sqlite"); + if (ret != 0) + { + fprintf (stderr, "cannot remove legacy v.3.0.1 database\n"); + return -20; + } + +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/shape_utf8_2.c b/src/spatialite/test/shape_utf8_2.c new file mode 100644 index 0000000..a6042c7 --- /dev/null +++ b/src/spatialite/test/shape_utf8_2.c @@ -0,0 +1,235 @@ +/* + + shape_utf8_2.c -- SpatiaLite Test Case + + Author: Brad Hards + + ------------------------------------------------------------------------------ + + Version: MPL 1.1/GPL 2.0/LGPL 2.1 + + The contents of this file are subject to the Mozilla Public License Version + 1.1 (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + http://www.mozilla.org/MPL/ + +Software distributed under the License is distributed on an "AS IS" basis, +WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License +for the specific language governing rights and limitations under the +License. + +The Original Code is the SpatiaLite library + +The Initial Developer of the Original Code is Alessandro Furieri + +Portions created by the Initial Developer are Copyright (C) 2011 +the Initial Developer. All Rights Reserved. + +Contributor(s): +Brad Hards +Ahmadou Dicko + +Alternatively, the contents of this file may be used under the terms of +either the GNU General Public License Version 2 or later (the "GPL"), or +the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), +in which case the provisions of the GPL or the LGPL are applicable instead +of those above. If you wish to allow use of your version of this file only +under the terms of either the GPL or the LGPL, and not to allow others to +use your version of this file under the terms of the MPL, indicate your +decision by deleting the provisions above and replace them with the notice +and other provisions required by the GPL or the LGPL. If you do not delete +the provisions above, a recipient may use your version of this file under +the terms of any one of the MPL, the GPL or the LGPL. + +*/ +#include +#include +#include +#include + +#include "config.h" + +#include "sqlite3.h" +#include "spatialite.h" + +int +main (int argc, char *argv[]) +{ +#ifndef OMIT_ICONV /* only if ICONV is supported */ + int ret; + sqlite3 *handle; + char *kmlname = __FILE__ "test.kml"; + char *geojsonname = __FILE__ "test.geojson"; + char *err_msg = NULL; + int row_count; + void *cache = spatialite_alloc_connection (); + + if (argc > 1 || argv[0] == NULL) + argc = 1; /* silencing stupid compiler warnings */ + + ret = + sqlite3_open_v2 (":memory:", &handle, + SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE, NULL); + if (ret != SQLITE_OK) + { + fprintf (stderr, "cannot open in-memory database: %s\n", + sqlite3_errmsg (handle)); + sqlite3_close (handle); + return -1; + } + + spatialite_init_ex (handle, cache, 0); + + ret = + sqlite3_exec (handle, "SELECT InitSpatialMetadata(1)", NULL, NULL, + &err_msg); + if (ret != SQLITE_OK) + { + fprintf (stderr, "InitSpatialMetadata() error: %s\n", err_msg); + sqlite3_free (err_msg); + sqlite3_close (handle); + return -2; + } + + ret = + load_shapefile (handle, "./shp/taiwan/hystoric", "hystoric", "UTF-8", + 4326, "col1", 1, 0, 1, 0, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, + "load_shapefile() error for shp/taiwan/hystoric: %s\n", + err_msg); + sqlite3_close (handle); + return -3; + } + if (row_count != 15) + { + fprintf (stderr, "unexpected row count for shp/taiwan/hystoric: %i\n", + row_count); + sqlite3_close (handle); + return -4; + } + + ret = + load_shapefile (handle, "./shp/taiwan/leisure", "leisure", "UTF-8", + 4326, "col1", 1, 0, 1, 0, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, + "load_shapefile() error for shp/taiwan/leisure: %s\n", + err_msg); + sqlite3_close (handle); + return -5; + } + if (row_count != 5) + { + fprintf (stderr, "unexpected row count for shp/taiwan/leisure: %i\n", + row_count); + sqlite3_close (handle); + return -6; + } + + ret = load_shapefile (handle, "./shp/taiwan/route", "route", "UTF-8", 4326, + "col1", 1, 0, 1, 0, &row_count, err_msg); + if (!ret) + { + fprintf (stderr, "load_shapefile() error for shp/taiwan/route: %s\n", + err_msg); + sqlite3_close (handle); + return -7; + } + if (row_count != 4) + { + fprintf (stderr, "unexpected row count for shp/taiwan/route: %i\n", + row_count); + sqlite3_close (handle); + return -8; + } + +#ifndef OMIT_PROJ /* only if PROJ is supported */ + if (is_kml_constant (handle, "route", "name")) + { + fprintf (stderr, "unexpected result for is_kml_constant (1)\n"); + return -9; + } + if (!is_kml_constant (handle, "route", "foo")) + { + fprintf (stderr, "unexpected result for is_kml_constant (2)\n"); + return -10; + } + + ret = dump_kml (handle, "route", "col1", kmlname, NULL, NULL, 10); + if (!ret) + { + fprintf (stderr, "dump_kml (1) error for shp/taiwan/route: %s\n", + err_msg); + sqlite3_close (handle); + return -11; + } + unlink (kmlname); + + ret = dump_kml (handle, "route", "col1", kmlname, "name", NULL, 10); + if (!ret) + { + fprintf (stderr, "dump_kml (2) error for shp/taiwan/route: %s\n", + err_msg); + sqlite3_close (handle); + return -12; + } + unlink (kmlname); + + ret = dump_kml (handle, "route", "col1", kmlname, "theta", NULL, 10); + if (!ret) + { + fprintf (stderr, "dump_kml (3) error for shp/taiwan/route: %s\n", + err_msg); + sqlite3_close (handle); + return -13; + } + unlink (kmlname); + + ret = dump_kml (handle, "route", "col1", kmlname, "name", "sub_type", 10); + if (!ret) + { + fprintf (stderr, "dump_kml (4) error for shp/taiwan/route: %s\n", + err_msg); + sqlite3_close (handle); + return -14; + } + unlink (kmlname); + + ret = dump_kml (handle, "route", "col1", kmlname, "theta", "beta", 10); + if (!ret) + { + fprintf (stderr, "dump_kml (5) error for shp/taiwan/route: %s\n", + err_msg); + sqlite3_close (handle); + return -15; + } + unlink (kmlname); +#endif /* end PROJ conditional */ + + ret = dump_geojson (handle, "route", "col1", geojsonname, 10, 5); + if (!ret) + { + fprintf (stderr, "dump_geojson() error for shp/taiwan/route: %s\n", + err_msg); + sqlite3_close (handle); + return -16; + } + unlink (geojsonname); + + ret = sqlite3_close (handle); + if (ret != SQLITE_OK) + { + fprintf (stderr, "sqlite3_close() error: %s\n", + sqlite3_errmsg (handle)); + return -17; + } + + spatialite_cleanup_ex (cache); +#endif /* end ICONV conditional */ + + spatialite_shutdown (); + return 0; +} diff --git a/src/spatialite/test/shapetest1.dbf b/src/spatialite/test/shapetest1.dbf new file mode 100644 index 0000000000000000000000000000000000000000..8d914b192df89d2aa630f55d7bf065682ec45208 GIT binary patch literal 199 zcmZRMXP07PU|>jOFb0xnAe@1rB(=CCIk7m^kb%J&B&&g@1SW69z~Bdx;zE<>RVdHQ cODRt*N>Lyd7%AizrKBq4q^1@Vsl~_u0DZI@0{{R3 literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shapetest1.prj b/src/spatialite/test/shapetest1.prj new file mode 100644 index 0000000..a30c00a --- /dev/null +++ b/src/spatialite/test/shapetest1.prj @@ -0,0 +1 @@ +GEOGCS["GCS_WGS_1984",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137,298.257223563]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]] \ No newline at end of file diff --git a/src/spatialite/test/shapetest1.qpj b/src/spatialite/test/shapetest1.qpj new file mode 100644 index 0000000..edb0142 --- /dev/null +++ b/src/spatialite/test/shapetest1.qpj @@ -0,0 +1 @@ +GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],TOWGS84[0,0,0,0,0,0,0],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9108"]],AUTHORITY["EPSG","4326"]] diff --git a/src/spatialite/test/shapetest1.shp b/src/spatialite/test/shapetest1.shp new file mode 100644 index 0000000000000000000000000000000000000000..6c1d7ff31ac7e35bf1eef87329d486a1ed2b4224 GIT binary patch literal 156 zcmZQzQ0HR64*Xs)GcYg$<+vVSQ;+ZSax~nR^8TM{prb+hn#|1;y&Qv-n+^x51v+Ba Vjv@*+2Af$xRZJi&Kyv8j0sx$e9JK%d literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shapetest1.shx b/src/spatialite/test/shapetest1.shx new file mode 100644 index 0000000000000000000000000000000000000000..5124cfddfa9ce482eab636faaf4ecbcca8696afa GIT binary patch literal 116 zcmZQzQ0HR64y;}o6mpK``;Izm-}XafA{Ua6O{qw(jznr=6 zXYPlI`+r*K(jGRrUj{+NVH3Nt?fOM>6~_gqzhAyxU0pBl{&{tCy)4V>MBjhWrao-# zctdM_5Y~xO)Q9c;poIGPeg9V=(qn-5n&AW3X^7e#L~-KpLO~Fnv&6)?f&e*N(HenB zj8^e2Zn|y%-Y;(ZZfu5ri~}S}PXfxh6dfx=>AED&Is{^(gCU68*R)rGNTS|Bd~eq4 z-`alh)GqF}&zm;RLiEH&8SUw1reK-rx}wK)9mrw?;=!1Y8Un9JgH?ry-V(yiV!hiKIQt3>0Fk%S(!;y{-@`yZ^=o1o&$| zjF8_x_7E?UqGLydqHB6YSD7t_ib9?aj?4p6bi@b{H;wqoL+loh?RX52w2UAILmE@M z$|yC76>G@KAbVaT5DE3F8QSNrhl0~<8lpCQzYJ_>W#x<1s>-S|Daf+cMG8_NlBid| zwas>f3)96A(zs|0?G*B;Qaoav#6*WO#e+40@CZa&^tsuz>*l226Hww#iY@~MIOViX z1*B}vVc8W00kSoxDS=3F=u5nS4?w3OR+*whmbJZSN&AvF=2>D&AkwNYJ>no6A|NvR zRMCNbL+P?KsaYYw8JolpU7EUNN=W4>5Q+Kq8&aR-7lJu0MauzBxzdvoo#kMTGJ(6q1i}S*Q|-4=lC{8@ zyy3Tb%i{3PkSBP{`w)nUEhu%fT{pu|Lo}M$C|hdMv~`}G9F)`)m31Z6y?|Jfcy43& z>(D&)NXsI;(?!cT=-_vHm8cF=5tRXTce1ENy~t}EdAUGLpHjDRL{|{U6yThqv#_YV z<$B&{X~Jg(wJ#0DX@N+7w=1lPb=!|n@($>_AKp)$R?14G zao)Rlat)=jqFYsI+y;k=;3ySp3NVsg$U4=x;Vr_W&$^bq$IL+F7D!pkinfKOFbE2< zHCdG@5b3dR1BCdsfB!jm;k==wuA!C-RSacmp^)lBMYlBCxeO410~A~yj_Im@P(=if^d3Y|NMlosyVW*p*+booEw zE+`trgU&8fb8%`yO##jXPtFPoGHHO-nIrIh3htig~6o zq%l)*{|U+kh{Wg~olC^b=_(G-v1`{Ki;HEZX=AzHGlp6h1q#a*LyR+3;HyZH7Tx!l zl{69?58-=6x}KfsAl;>$73x`1BE}=63Q)*dK_NT>k$B(t2#G90D4Vzg(0S<2@}IJS zn|4&Rq%n*hXd9?936DUeMfd%iG%wug&p`B9r=l&ZOdCrOwc(-x&F%$TB$9OaS1m%f zgva|HYJS?8$ zR(2{(XDBdY5XD7Dvrmw#IzKBMJ5D@n)HK79Wl|+bn0aq z)mTaqh(r>IU)y!;o-ms|a~tAL?qawJ!MvsjshOiupfHHZ7`eUn1(jX`k+O?Gyo){R zM0ob9eQ(D&O8lONm=BP==61#xR6r_Ua2Jm?Br-tc_EI1|H1C*kAJWR<&oo5t_LRaI z0@XDrswlmno~}~~fkHK;K%_tbh^V)prFlte#%YLw+9ah6zYEiEuBwn-=(Cw@4F{ug(8eVBv*XEV78OGn=ax-?xG6{ z49aoL!R&!&Q!cBq%WOa|5L35P2Z-5FX9gnqA#AbWqnNUwkf#urh%Fj@+N(gM==HrH zFwZ$06P!tsc(D{YFrYCg$nbFxM4<^|V=50Z>!vUy5J~snho0sTAF)M8nFPI@bBX**mAv&PZvN=OOaC>JQ`9=JqSHB8I{37A+2#0`S=15$z7J4{~#vj zvoYdDibnQN--Ss7X-r|zPOsNllL`tk5{R_3B@SIsbSE)UR6PTc`wLXmtb1Ma$%oG7 zEEv#pTm(dNmn9_cW${b@W7KqxlDHE@&xu1$S;#po1e-#%p1s~?sYD=>d9LEVNqs~TJk#@xyJ!l* zn0oQlScQrY^Fnrpk3mo_MXrQbC}tZz(SSIorRX@1qSa?RGl2^W6S!W)nhOv~9r*W+ z__{kyJy-J_MDE6sqigQvye4Ob199zxK{6Qw6wMv*qYNM*$3s(aDr{$@$l_2{R{VsT zht?Q)l9_>$hi*P}du$v0b3`gZ`85NP)PwmV%shPtMNCLVq-{mzI>ygrj3PzKE|2|Y z+zwJOE?-}_Ka4Vcop|Q?G@|6h0Yy_zKzT+X_(SJe0+BfFA)ZFuCvi?g44kCo9}h@n zy5fCYqHrB95NT`Q1{@1zHTRsN^HY6O@(9*=?n?~kKh#GYUV0O)?4PD%w$ZKR933# z^F4oSRld&BAKmn=Pd2TyJx4|}aczYSy9Z6{ zOem7suRC0>o!(*O9=n%*Yr|BxNiGnWU%dAN`Iea~pT zy(us6bL`J~1IyRB>d}H*zoP$K%Bgi>66bp^w%bBp zBF^`s`d`KcWz$!7x5~B!t|Gg8Q-0u!BOPj|yr)->mF3Crp}!<9CkHujB{}+YmR`T1 z_!z$NB`x1Jyhip{V*9f4WwI&lV%raKwn4G|Y1Ge>ZQcaq73>Oz*_~;VSC$$aW$59kM@(ybJY%@p#$v#%t(rgO8Ixh_9az zPtV+mt?U<--OJ?Hkt&ZVvrFQ$LM7v*yQp7qfi+Sn6{rkA{)oB0EQZx9mSh-d(o+@CfRAP(PjePUIhx zx5S%euL0gF2lvt+%F&(pMcGuub;xVujQD=pY|`@k50a0Pqx$4M<**LPO4bdh&_ni*bE9 zn2&$q^SO}zH)U@HZX??*)Yp>zJ$NhIk3-b&lHE6Wo$Q^&^JRMuJ30CtKP;OovMV5m zhV}Wqws&6Q0r*e)A7p!Y73=!|+tUp6zaqO#xGZ@_e3-yM*H!{po8pX{JNJN=)N4`F)A>vv2JW>TM9^KajyzMz)hOvgU! zX9^xByYci-CLcwf>|X}rnbh~jTV(qf{*=6pY@U_Pqqq!ijE}OuAE3XT?A?oZvV8UM zG}+d{y<}HQHgmQ9Y)$eStWRt{*8beqpuTCczsKivJYbXYR{huRb=g#=z6Hk*<(Xb7 zIl6_slI#`0J*dAH50w23xE}p~Ow<10COP~S-$?%tIJfK$%B~>w+sO0D-fEmjj+RiL zRSxEmM><||@8VF7-o^`L?@ju*%E1u4SGF%uzg7`upqnF6vGm>G;n+ zPTos4ZSX%jUW^)2zeM(Hk++eMR4e(uZg=D;)Iv+OFn}M=zNqsrl zZ;O9>Ha|4#pj{&BzCK)$~CWH$7Qn;x0Jo)^)EpGO!70`H2)JA|1&up zNj_W-hLN|H{nzENs62EC`Pr_T|H1Sxm%~BiZ{U~7?~`-BNPg~#xc|V@%@@TRvXCPS-sb7O*_-{*+VK!-9#_pOw88jDKDZ_u!lwFZhP~ ze6l%9{x{?CdYUg}o0-r1yK`$0FCa3|$K zay;CMdXMAjrgBt9Hq`r7@d*0wqy8DzPulreg~vv2&zM@DH&(9yWLjSJrE=Nxq|>WjcAd#L>GiY8{PKPe zpCG^azqwhb*WV=hpL+kfWc;bJ*MJLK zQ6c4P7L@MrwsL#5@(JUq-`Y{1zj3l@Dx2Zt2mLq?Uc*-Q)0}#LO}f~je4XO;hYlP{ zelq3M`u5(yp&X7(*{ip)%h;5Mb$W8y#I*j6FW%oc<;)ZFtPiMP);{hJvFR>*(^7fP zz4;4vNO{q+-gY|mg_ZjYWplQj`aeneWQTkmN2k1}VedLyQg$8YcG%Une4X_dDsTBZ z%>xTQvo_^RCA+o!CgoD!{*kSH%8hbQ+;loEzwMpUjZ$7&;%0j$>^+pg-~BIUbBA1IzVbv?{>{w!DhloxjBxF!qN$M&_3 z=P$~|^|Sf1yA?k#hgGSsCwui%PVSSXJ`YXWQ=eVAZAX1p`un78K0malP|6cN%3t6m z>dPrNuctZe{&uaD%WN&Q`7QF+%H6vu2Um?g*(v4E3XQpWigNR^a(_DYERS1E{z__j zQ?I|>N?tp){?hiZ-;y`h>l6J$UXRx|xjz1fY?AA}&+vY_lk26Y;3ExOXa~!lY5*>x%HfTGLEA^gFX+@JNQLDKMNS|lpL%j&&&3HFRsJ({YUDD z%3e0zpE5^fTNdYH`(K;;R|Dms5nd)o&GBF4o#-#j_Unn1=Vn{^ONEr@Uft}yC#kQe z-1JI0?RxgJY`+H3KV9}5UWVVmTjXFYz9joo@Lg`%hH_!N0@T!{VA9r#|^RmJ_;f8B#u%jQ9x zO~;!-BU~3hjEBj7Ys~Sh=^&eP%5B=c=Ct{($?y_uVt4?)RttOVx&TAC9wZ zU!}5?ot6D9a(IvI=F0XlIS8nKk$fuor?Qj=sW^soyEPb+Xw`zMcB5viU}~ zo8|C|9B!cBYY|W1g}AC5tdebO@=xgREBi~xhs*Xu*({Nxxw6|P2Q%qEDZ9z|nwDDr z@zmdq$B@4u+qYzMO!l9XZLU^vzv+YTkb};+wd}Q(!>47}91oRk6YAfW{aUiwDx0dZ z`vaGwzhmoo`Zf>!FUsc1I&BZ$#24{g**_uM{c^MyXKNFW7pjOe)ntFMY?@F% zoBjc^ol3rl`jO<{%HB)lr}6W0cvD*~PgmJlIqHa8%Rw9biX1+SC(3?9*=&(rP1zon zqpJA&cADOu^p}+V^5pHvOUq^kc~SD*?c@G1C$1~|S>@2-f7ZsYNBD_sFU#hX>|Mkq zI%xf$$Ia#NH~gaP{Vs>4eAUx$N8k(O8!_XBKg)hHUg3_K|4XWOHD#NO-&_uo`RONn zXQ_XO`k!R8SPoCgcD?Mr$D8qCyq)^p^dG^S_01;hO+IB@0Wv)^xrGH*5nUR z-%Jjh%i#mE9Z0<;A1Md5@CW2~<0G=Ej(?M*Dzd%$@p%4iMe_1;Scd!&+1-kJ$bMnj z45a=h*$tyUmmE%$qa4()C(lm(W%8`#%R9&O6U_TO{(P8~c(NRBkj;46?U199vi(sG zU!(pKcI3Ic#N$T;$xF$$k8B>4O%Lij$w7DO2UCyDZ1S$uuciM9#*3)$ME{@UZSl2F z#Pj1Gl~dP!i$X+Gc?3BaX@z-)t250IT z&rj&lf4v;#AulZ39JsRVT}}N%0Z&2S-b~qd(`$_!<>W5SRlN`NWUmJGhvl#`K2Kg2|03I4=|4qYM0VfG?k0Q$-$4H%`m@UB8+>_9{Qj{y zdg=YK4Hw7j<*=IUg|cf({uy~2Ian;44%9D@ZClw*C+|f4WZYX0$H{Jp?2jT3sDD!q zm&o3$U-p{O zzgqU|ljrXn_xrWT>&Uh`d3V`WAs3Og0x})1LY> zvaKrH6Xb>E@F@M~SRebzH?lr<(mz}dwvu<0{Y|(k`C96W;7?_DgY1o#!=t=khTwIw z|19+j@l&!LNqu+nUb20R{$_H}S~ho*H>JNY`2*xv$zFBY{jSeLSV0aC;^O#IImj>D zS7etJKP1~rtMq#0mA#X4cv_#=XuoW?@%dhdC(GU<>Kn_!+vGp7z3EQ=8QYU~vKcFf zkKn$t*M$0tvS~>Er?#(Qeez9mbf4@du>HM}ry)kb~;7ohdI$#_J`A$@J^WXYWiFm%9goRW@z$kK}D+7s<96K15zm&iNHCM7|pz;dt&Ko{y9M z=6IiSmqj*=XZGs&(`{33$8o&6mipG@%Nf6%j;Fn;WKi4Z} z;z@FHZQ4F1`(u@x*5s3Mb=ggq?bWhfK)zqsQ@juGWUj9;efy+r=8{*G!&&%>uIJd< za`=U8=E-gp*MAn0H|6@zBH3o9e;N5oU5^S@(%)7#8_9FY?hCwJ*U!Rzvh5|iZ)8(a z_Doa)`ahvVEYLH|VA zF@IqX+1y56N{%YZ;f=T^<7JYQ&zt+EX*|ByjC_%7TQS~Hc~l$Owvqjo&3H^UG ziN_1;QNIV@P5pA&R3;xQ2W923yX*?%2W3AO{pIMthW^ZQbQM0_IG%o#RdyfBKCiDC zD0|ma-$-_h?{2|2k^kLD>;Goi9FoIAc)1*~{V=b|E7o>fMcU z!0T&%eMr-1{g|(1le}Mc$zBbn7s^p>Ih;j5+fOq|wvDKNTVBNLAC8g(w%2yJ9P#?Q z*XZxe{9?Zc;|)`82I6tp$>B`d8!nrbjQ6(ecFMs7@_l%^Y&X(Bm;3`cTp))d@rSsp z>=sksK(9NxAs;4(^JKS>`h(Q3kj?k9*+cy~`hSzX zE7TWZ`Lb~S(HdXH`O0`XA`jQdA-Opyn`>0>j>|z#`VZ01`HtBoyAtGUWm{f0AIp9v z#+ylhHR{L7-o4bfl!IpE_mU^)Z@ga4C%;a)eHNhZ6CGw53`=h=-f172q zMRwRtll?8^ugVeU_ zy~*AvM-QkzJbHgTzG+1NLOE}c~3*~lyU9F!Z^iPzdZ^@sQ{hwv?*S&Fln49abgXE|> z*I%2$KVne6_(o-F$hD-S!7KZ5TkZ!O#E_(}50vNu3B737HP z+omk}o75MR&3MMkE4%6BIp|-2|EZ((yBPl@d!NeYgzVPJE|SA-vi(su2grYu?RVtA z$iYu?$at3f9d;x673vqsVRr7HOq2b*c(!bAmE8il&u!!%l2^d*;~H`}M)tX%@Islsjng1H_7vmbHCbT zq<@lfccxZ6zL`q>I@zB?K0~$(@C)Q0;iu?dEZc7KC~R8GZi#ZgnOtG19D1_1p8m@< z%Ms5Dg{Ne{5#!}z``A!+)#Tto+y&Q_?MPf(HcMnz6MrMy>T;Nm{Xz0P zQbReoi}7BRO*QIg%286kUG}Ol{%Ks1`mF4)Dv;kQdw1e`azJi-rSm)V-$DJy>H3dT z&v;>e?N5Vbeyg#+W%+Fjd^h6_mTe6@MKD?B87_o&`x(*EANPj)5b=w9;s zWlO(p$MHcW>YpVqFPqV_&+^zga>V+z8|47I?XpQ;-&52l^Y<6^EKhg?$2-aTx|8D_ zoAoX?xtDf`L$_gC3AVEu6X)`$9_qK@ZsChM=c z>{-@NKaTfU-f$#2^JACFK|R**7TGbr`$qO3V)|F<_%v!Phh;flZA$)dy1WN|RJj=- z`#cY5-jTz{$+yd17ug+@cjE8_{ZA+luhRKL$o9tFBD-$N?R~OM#vdRD9TEBHK zy8q^8EB=}Bzr^`;JviJ!e`VQW^8nY2cT?Y*{4n*ek$;Qdm*Z#s)1K$wB?n*Ae^EBr zalJb{s@zr8_3q$+{Gaa!q`oqc`sP56ooU}QNc&F3Y<_d&V4&|Z9SmiB$dK5{r+c1vY9ocy93J%jI9t?w`Op}wc=_rQT{p1}KXN1Sa< z-0!!RO+7hifu~?{mp#<<$Xz|zf0+95vZ=@TGs*8IZ}Pd8w>bGUIV^y0S{vs!2lexD zCVb60&F{r|T3^j&?Ny-`}i!BzcZ4vF&j3cCs6Vr_0eqoO!GI-@`A+KJ#b3l%o&H zOKpqmqb0JLC%>bp{3nmn0a zL2~TnCVx)L=Utqo_j^N@m+ym`dUE&!`Sr3pfWPAXH$pb6^?vq~@3%gv&yz`hFL1rK zH^K3lT7U1z;b(ZF?0q7;8M2*8K8bt+eiIL+zJeSMBEOFQm+{NmK6-2MJKDYmA^i(w z!+7QmIqXB;gY9uAe6MUD#)V|>etb;Z`!Jhq+RH&SL(BiS_9u%b;8Sv#{GMM)_D}qN zo_SaML;vV>^=D##`-9zYH91Ir&*=1GO)v2x*^8L}esXXWmyp9_%-_zB;(kZH8zTSPUtj*W z{+C6XUUDoyRZf1-$=yNzBjX?WFs={J;EA%A{2tPMa-Zb)m;U%b<5O?;$S(Q4vl()f ztnWs$_YdP2lx;TN4@NfE^ZKuUKOX;VPW+~9a!_AS_OZ(=2g&dKTv{0S`^oR4?Z+h; z&zHS&jCYM3+=-Vg(DGHq17yDr{r}95bK4kC!kwsZBzycGkjo(luTY;Eze#;@IeZ6O z+03B6nC#}_1M{?e3#i{MyJdJi`C97VB4>MQn#=!gUkl6OM*3IGjmOU!(mzCwlHVhG zLk=0wy-mK0`tfpbjPWMR?tAig>HnGhIl0LN^4_w!i0{OIQJ-0kvammi=4gH7#7kwH zi~Ub;@_aa_9NbL(vDtBdR1nXTZ6VwR7sH3%kNe$Z*}W2{U*F-n&xLWeqXl7@FY3n_n^#M)bsncra$#JaQx9wcDLYLWs@9# zWR?Bo_j(QaJ=9ML;`#Ag$*zkW`1oPj@cTxtrtA$QFF^h4xR4yaBb&dbYW!Jv9ey8o z!%J{}*{sIf-;4W$?RcbY4&q1fx7f+tK9Q=a~{n?Z;lj9- z>cgV4t1sI!xCG#0*$@k$s6XO2p2;+Su`^ovpG}-%^e7GE3#I0oe4=zrgmGhs2@5JNVoSYv` zl1)C`LT+*s_1DN@4t!vI+#hDgfo!tT-&c;9o=g9G?CF26J>BoQr~kcolkWH6|MPqC z|Bv634?h~G`LoQ=OLEkN`RyqCEpUC=wZ=8%pdzczR|K`Bd4Z z{T@=iuk7Ke;5^Ok8gntFc$`CDto8=CU>uPi9=Xv(90ZJP0i zl!xARe14kKw$~R_A7Zmc=YwH0@&|Q(={+o)1+qhZl5;=AJtznBnV*N`ko!xH z`fvw%d*xnozp4Y{on`uCa2D=={US$saVuSahziPXzif+;zrpp6!sK$)xeL*whr~f<$(K% zW{>PQCeQY<`kUk8nEREcu^js3Pm_0%%`iFWNj_P&1Ia&@qrrGD^&_aiAcvF5FO$#2 z89&kbTts~y*;|V1%E1!qN6T(8`A#{c-(0&q9?vZxZzxCe@l4rU$ap8^@O|9y)3`tS zAZ2^8YUAc9x9{=Qn;(*M{WMDEFZXAv=l--CEC=hU|64YDW&6?!E$`R(itL|GIqi7U zu8i~eUU=H}?@c*6t9tjP>`vkQtKxd^I4&!Phj0PB180@Z7W}{W*HgFWGpFv;$G-=d zHf^qDN4>c=Qu~j1T5j0_-KRhP|KF!K8&4`*&*yfO?62W-+EX^4;aqa?0Y30U-0#oA zt7XT1T;t?u7S+#Nrz<-Hv*#wF+O#>;`% z%8|jt@L%lr$5DSiIS#<5Ww%HUza@V_cFA!@2J$uJ-+mKM-+V^@TG@VtC*bM$c{vzI ze|7Q^T!LRA{_wJTmGreE@yYS6=zj>ALWjQR5-{SLi8-DD^c=^53 zviV*%CCFQyigV}TnQ~B!`n5P2FY{@Q_W<>iWq%m;_x_}O8~$4kI4(3b&cu0;Ja^Dl z4wKKz8ac|x`?1u|alQXH<28|klT80@+2c6Y{3J&ksXs@3avZ#0Hp|Fon|AcSC%b0&W&9A%L;XGU zf1>s6SH**IIot#DdYgu_%fWcnG@iYd`tM{fBYslLlQTJwD)Wn8?;kj?y5?ML^D*aP zGtbAioX453F33-km%1p|r@!a#vAuF~_{AmV$?w)4m%U4zXI`y+jeic`&Aul&FJ@m9 zeyiM-Q@-eHoJS6l^V~feKTMum$R)dN)IX*9i}<^(ZnNe;`jqM4D*KD5Z}wX}|7HgH z+bloVCCo~#pKv7kU2-&({{Fwl{n5+hSIgcragXDLiKRc`X_Q`m%_b~M(<($cL z5})ezvvsI1BAeUralQWGKU@duCe61Xt`_Ga0mV>_J z7udh^yW?gw+uOF(-!A)2@g}y{_tEdmt~x%!_PsoQiT!;s`m@O)*F{Zd_8&XBj=D?x zmtZAsi08;I3r>E=eUXMg^0 ze|FYK2KqC|A@?y1;~DOAxLu6Df%_P9Wq+k?8pv)g`3Ws=Fb1!X-K*4hCGU${$zk$$ zE~XvT=eaZa-XmIn%^C0V;n-n4Ttzm?-~H%!D9&A3`X?MzeSZAYf!M)y^!Joq2E1o~ zoJZ%mPxhs3zsHNocgn7X?D#t?=Ip+>-`hssS2oGtdCV*a$$h%9dsV-V@iWP8C4O&D zocl{~MV$N{$fLXC+)W@~E1NfDH<|ot^1iq;c|q#A&*{GUO5@cfABro}UsDb$;G?_Z zdV4$dt!3{vY-E?*x9zr5%afn{n;o&E9JrEfE_0u`wCtbbTGW-R8o%#*9tsJeP|FRxPc!5oc`m9Z zUQYd&+v0kYJQwh|>?il}zup?>E_p7ipKKFn!e22z^0(N0`e_P%6#dpB$Twv#`P zx8h2&*-ZU6n>798xrA}D`JDVY{3-o4@dr4kY?J3Cwr$k>%_e_db~72Th8#>I-?BmV zJU3=W%fSTl&a!(O-$Tydc{0W1@HNKIEdTp=56`TR#}9eV%)Ez_=gjVwqrUVXU#I!u z+}|vg&C}#>%Hgy4QQ5sHyFBDPhhomIjmHayQolwHlfP3nT=quOUsN{9@^1TF^OMw% z#L0LSWs^K-cOv}n^7fT&GXGiSU?9_*v?i{1FX3|dW#)I`YE7T<&E0aC*tA(mhw~(m!{c?z!aj&n>%j&o#Sr&prR2=c3a+H|^3rS8dWi zcb)#Z?DWrVr+cp3rF-t%q<=0v{d42}wEzA0x$e_@6tbapYFMQlm5B=^w0IDd+y()`(A)c|Gj}Z?EjPR6{P>(LAviHr2pQ6 zOZUA7_oR+b{{7xV`tL=g|K3Ep?^T!k8R@^bk?wmPF5UM&O#1JIr2F28 zOZUAJlkR&bCf)Z^T>9^=r2Ae=`tQBC^xum~|Gk;?->XUYy&IGMdpXo6-`jENzSrZ@ zfA1&#_kwQG@s{I0rAz<4qIBOoGU>jTWYT?aDgF1F+*2CgCf{>PzUMH5>vV) z@nV>K@5+~La$j(a989AA3)xS;x0Q|K)A8gDWS96Q*&C|KMUs{gX#ZW`M=Bii|o%P{~E8uJLG5=-j0vSZkud=CSO7SALP?zo7`6&E_>H; z-^j@>xzEb-I#0Q2&v>PAH`!F7{{`9BB2VV0K6xcAziCB2koD0SZ;+#>a3-DK*_Uu# zIeJ}obMbicujL@XSLARW^(}S&>6VdyCP$y+>o|Y?3j4B+@Mipr>?-Me*j*$)giY#R zTH5=go6fKO?6SK?=j%2Po{fuApIhhqraXCPt_Re`d3C)YXpYy)VK@5c9f^-;1BV;y zdW0QK{RG(`kE?J!V>b1><@jD;YW`grT_1_2k>4wOlj!$lI|@H1yEpJ#^uL6s;-_V^ zNDh0Fua$#NZ#M6jQpe-mzJq(nUUFZ(1J@Ii?=`RfPUGFr z^cH^~+a#aItUtu|@-be0*uOy@*!Z$HU%4A3`#5CX*$IsQv~oL+ z`o@g+HZCWJW90C9*^MUuLGxor;Ult-O`8*#*6-pKR-E7;uZS*g@@=LFZ(<3i+C&b&G0(%TV%JI ze9s^8_;wkdF9#n`Ka_kfzV4Df&oANoevcjXr2o&0v3GVO-zb|W$aBbnPyW$walO}p zys#X$BtLLLc{BVfeh6omU0po-d|V&a!1?5;BA)YWoJVDFUfFnf;kh_B`SGcT<9g50S(9vfF{D;p>>6cd73pH+c+qmn-d{w{KG79W$nQ@E{O4?n`$^m^Id_$6MyO|mJX*V}!Bcgw*@ z{5#_f#6N0!Ia|xFg*>V~uBPP+?@DsnD~-2meVGx1wYDzPifm5<$dj3AyY}53E_wb*x|1$OS^#1W4 z!J%v#;)8Nj6=%}&`z3Hu+2zBv<=`sJ`f@u4>Ggk3d7o|Alf8qupXP7TPqL|@<;!`5 zeEkplJp4#rK@PJpz0bdo^PJga)BkAfoxh}xb<(!?9p&JRY)&1C^Y~aOmD}GAYy9gN z{|L^_^fw-gbFV7-CkNHvhCHk64ZuqdD1U+aK5{S!KQ4QT_wS4AOsXAIHbOl9PPQhS=_T@;&Qg`^o%OmAxV48`i~nG*~u; z<$v=oYvVk4mHb9LlKxI|I1ewCqm|TWWc)+qRb_hy-y;VXsNeLtrgt6h2PfOyydP@H zQ6BQlvX>u!7RLR~!!OI;tvH_?-X@#9YgAv6d?v1fZO+;o3Z4rWIKuc zJvo|+ci~z1SJ_{Hb7}qArLw8T`dp3M$Zj+BU1V<;9xO-6_H7qFO#g3k7*T(XUSIbU zIj^_-le`jnMz*(Yd4Jr%_V#5tEPzMKeo;JC_R8SZB@F6?p&ONnTEFQl0)% za@D)Z3s9fLCzl+bV zjNgxT7WFU6(Gpxz_CLqh%cC~pZ&$?q;Z8hK_9NL8k}(2$ji#EA^C=daqc%I?VKZE@%rMua@ddhsdDffZiQdRH^_Dz-ZC#9FPx71$lhYvl$70S^3!uQf7|hN*&fDi zW%E7#Rq)UFq^_kzSE%ROip|dPu~TlZ$J?nd%JFn1jTeKibXI_mSN$^1X7j2iMp8IXH-C$?h2azv=T~&y%-as`o=?&X4Zb z=grG4yViW3i;>U5rSUP@-iga;`(SF)Kb-A_#hKZjU}I&kHu*bpbT{LT(Do>3M4plD zUk%)p?PF#9GC9*XJ7rgwJQv&J`|yLZcMl#V2eo8#P&SGGp`Utli?;vvLF#A8Q3J;N zRdx^I(j0#@#w~Gk{4U2EZE+Ef54y?bVcB-YQ^>pE6S7HMTKhXcspt41>OuV|jt8ES z-9gz6B+sY)se6{Z6Z>m&w@$Xtk+;*dXUdC-XUZvhlAWz1-Ap6Pu zSRG&6WPaY`c$@Lv&-e|-uc700I}*Pldt>lda*+70jru%{C!dU`$}Z!kIQM7b`m&o( z{YY}IPq@``IFI^bo8$gq4qhm`x%3y?qUk635IIW5-z|HKsjsnB<9(crCwr^N^KXlD zZ#%wEHv6d`gOB2q|F!A6J?^*Pkmvm(w*Lcma&R8+lU+ux_dNS$T<>z@{j#4Icis`_ zQ9gW54!HhgD(%$tODZ?x<={^0*U5fuoNZTJZ@3<29+!i5^ly+|a=q=G>^(+aUgvv3 z7sh)^Hcyg&B>#JT@2DL1rT%K2KL-7&Z!3Gx;+b;zB0eTZgK!0%kJ{I8e>r$VcH8A} z1o^c(pS5GiAD5#^_ygHY#h2x927YzF*4F~OPWHLpX-eyS-t16rmK;|7H~7L4y*_8? zzw=n^i0jAZNjc#9v70NKwCl~O>j~y3*)PEL=2~CJ{XsGEak43cFOc6!eU&J#53A!T za+G#|CGC2~DclJEb|S9#-jq$Q?_&F};##tG)Yq0rrQM%N8}Cs$OuJs6=H_zn5FV}T zD_(Pa+Yg#QY^MCzF2~6@cMntlq-+yk`=jQ!g>o}Pc5QI6Q_4HgKSefa_b1Zk??*Z4 zN_~gZs_#XeKE=rKWE_z~s)m5a$8? zu8$n1-G54}zwWmh)L zY3rxnCP^z z+9;K!P3NHOACS$@aoLZt@Rge<%4L)NjM}E5!X?GJiv4eM8A$z6`Rvn-e_f@x-u1_Q zWWO)|LH2s!yDP`_;S=~H**%6E=)KdY18yRFEpdH0Y=mpdLEZm4tb}VTx8-HmO!jZV zyjN`@>K{^W@{pI6y{!0V`u}-TpQDQ`&u@6U9Q`P}_hkPlc{`SOFRo7gm-u?wuA~1j z>vtLXC#>HEc$gea!;NG!9+#KxNSulMRUGQ|^q;{`%V95ERrb2d&d5;*d`Ryf*Mj;_ zct173^LfA3!xQAN7VaQ>x5%!h>bDJp9FWZNKdQhOh8>ILCIb zpvJR5;H&U4>MyF^?Z-DOk9JaDL^fN=Gss~`zDoVU67sk4JbX}}e>W9R!TsoeLpGgp z7rBB@eG55Td-5W3_z3x*Y@ZsCZ<3>0d;3*k%JK6-}!b+Z3E`wwX)gO|&k>|e|8|^@{_L{NMt=S_ZBPH^xbT2% ze#4XGAh~bfS&oj8x0SrOdVRfH@kH5{lFeb9 z+^4Ug_g{D$`E$HKE8vf0Q=ah-XYX(-j!`e@?)~O%yr5u_yX54bFe)>LtYRc$5ruR>f7Ue zR2dW|wU1lGl}8Wya4*eHna0(=#Qh-^cvjO3wb-D@b05 z`OAe5Yk7m@y8cksPZs*C$l+z~3moP3JcD1BqX^$D`}^@q-oIbUu7(_~Bj@vBR^r$7 z`7q0=FC}|R$>*{C=DvrkFS`%P_m+wGXTbtI0MBB){Bk&nd{*hW-XDoO%PzSOlZpH# z`rj)R*PDU(b~)@%|J0Ik{_nZwWVsLbh1^&uk-cZ>zn^>%b_uDz-jpdN_<$fz3=fP~o?=9P8ecd5@$@G7^Me{R+`e*Q~ z_@82NZdkvrA^8OIWwOt6RpyH9eW2V_*7SVtYnh(R&sOp$&!xNm5_FDO^1-VLgH?l*<-JlW^? z$h|7tT;$lx&UjCgXTjCw;0o*K!gZRzWO*0M;cqPe0P-L3t+Ia_=f;;9@5;6Dc#i40 z9kQ1kzr82he9X@fIVi^bFC;HZeznFAlKaFBWS89coh^F}>EA4etuf0JbjBkXuP@{G zmis(I-c~joZ@b!fFnKOH9F2e1{6-w#yB}ot5%~()TZvyKUyYm5pZNRi@%oE4kmn)a zfosZ^`*7xd*^88$oa86*UX5oi&_9*&FOt88ljo)z%i;IrhMfC+X2UglKOP}pD%)hd zFXbQy=XW2IC+DkEWj{F|twufPpKkBf@%Z+3`lrf4ar`uSa{gRZjt;cC)g?zv7aecIi`cLI>J^6I< z-S`LD?!iShp4*F?$>u1oBL}BtcOCg(_=v{yGjsiCKGV;RoosU9PE0@Tdnakvlj_T^ zu{S(!sF!d9o$ilzt@yD zzm4RG>vhh`b_e6%gp>PHxv0NHeqQ&EY<8|M?&DrkKCVA*lHD!jpU6RZ^7qKAVD3d3 z```YcCcatI4{FG!rR-P7lbOG2)E|?>#HCoDcTwL-_9|09i}hO(|0Fx+*A&<5XUfvw zO7@E5i@e??aa+B=qT3j6i|pM&-k8r5^W!4ft3!QReLnqq)KBK~+!$xj_8@FY{Zq2- zM81!_J9$yIM_jKqL-5PgFO}VE)MwQ8&yB`4WN!lQBAfT{J90EbHrwQ2F3zRxwRsHb4roNDl@9ZkvOAgjh{{?xnykBrU z%XlUa$H&Z{=_&s^{f)BE{SNaF`AVkOSjXEHlKJZ`pJjcR4`lC4>JP~NSIplH9MA73 ze_ZyCkk65$ugNcxpTPBXz7YM03+Q~pUZDRG%>5xZ4F5s?o$UWZe<7W(1ev-2)DkE6 zpWc_ftI5yH;WgZ!s;={)AUpXu*}s&fzeD|;-jD_Jz&fBCEr^ROKJyFO&Y{YAH0j+h^J ziTaYv&z;3|Ji+q1`SQ-&n4hDve;3YkOI+`2<2G_|FXL^LZGH0d)HfmjOZHol=PMqM zXCKFf?L_F%<}=JmTaq2|AZXYW4vjy-x|-AP4Ya$2;7_gfjD{oVz}&hUc-d4 zA5eco>3DwKJlsU?vxw=nkhW%w67MfSgu-ALIS z#6#q8Gxe{^ZY6$O_U2IklRjn7^cFQ4s&7s%1$_<7t`cFp9l1-^m2G4;E$ zXuSIPUD@16{bS^oys+%mzy~s`|4#hA9F)dm$ZwI|AlWN~d*U0Z?<|K|$p^~8mDzf| zJIc|ovU`aBQ{?%{`3-PWME3bxSng5sJ=C`)|AO&ulY=cd8};jOS?X8Oe>qdU{J~=U zt?bRkYh*VKzb%_da@bQ29eE=;=!$ETx0GFJIeLJ+yzKM0*IX;vR3INC2ZiXrME$ko z6n)<7f1Thv(z{IcJt@uDR!$?P&e) zkj*w+LfeC1hYu_FpX0CTZxNnN{w}U3+i7@%=FdjBH}m^EzL4b^j(^o}=wJw*EJywE zqq1l0JlBf)UgXW?u)FNq%XwXKZ`pOB{&U(tim%Z8#GR;rMK< zdvOJ=&!~m$2FT_%^6zjne7U~Q?gr|+%V9(EyR`rCSCO}q?Um$X@uhel`jSJG8Vlnt>4h`H0s;R5o2Gv zUh>QlyH+JwCc?;RyMcz)op~I`lr{nW+as5UP%HfrAoW3)>2-he!zoO;Y zPrhDun`O6(e533?!w2MWKJ`u1pPhnN%B~;I({Ji9eMk5+vZ+shGjz?y|2|3cbFF@J zhv_@G`^ok#X*u<1^FQI`^h`X5$o60lkKC_SHV5-m-_yN ztUvd>91o?x?y^tU&n~|2Q)ypI4i;js{exMBZ;c&gm;FxMSB}$n*td|) zcjP5xx03$eVE?!nb9@%PPklq>0X9Y0U(TU^f%dn-OzNLx|N9zwa~zTHX8-*XZpHpS zT|arU8$@1B4tnE5`uh=d!HebSVc85Pe~|np@^pJCF8j1T(%&bW=8wu@NPiq(*w*+j z{$8d&Apf&H@%K1xLj5-7{#xee3)$7dvt)Y-^~2=w0^CxL&ZfR9J_9c)q~lM+OwL4Lh* z$2;ELd9q2zgZuu7-uc&>_DkgW7Ccf88{qP?zfyMZ|DCiCFCf29HkI(1a!>~EKdk8$ zrTuI<{4>($(~SH#*;OasN51l}q`lvT$I0Ptd=>f6wBPclrkB=$@}1E@J(`<_W#QPweL#4 z=~vCq-T3@p65G16+rB@ssYU*Z>@UHsWSfV#?Mv$2*|dL74o@K;N?sB>IsWryZC`iE z(a*9wN)BSYVsFxa^gZq`+fB58TJ~T4I}euOZpw|PzK`tQ#W&L58`SUFlT0rdPrg(R zpC^AwHqVgXDo0O}pGMx5e9dn4*A71|M|V-b_2(qF4ald+=5pLZcD3+@a+K!ZXiTU$ z%_qoVP3mvK=imy|SC`#~8Z#=bclG2rZQoa8M0xsmr^w-z^!KLTNgCJ2jd*8i>J_}> zlzMlC?5<_{%k@rGmo9%joc6y*?_dq9(f?f8pM_h=ab8)VIrF>Qm(SKBm9&+hluk?QuOh>Wr7_9mOV}`MFiL_mZC}yIZm69mjlL zCSNw`=hILQFQdN`#{B@H1i^%KBrYild*`V)71@ew^R0f|Y zyQ8U}y*{ar{@^@yD2Knx=7)7jZg!DBFZ(UHKKVD)pMclkzx57k^Evge@J?!MZp4eI zFE2+Q;8DEuI(26`c$2)oY^KovC%jYpMe;6k@GN;oqLf*t*hm!l`~K-!O_zK854;9hbtlX~nHkUv1ap1dCIcaWEq!=w1T z2dvWPdn!J-QrkzmznUS(>GrmDMUuN4sjneN_prTusdwbNbo;+ujzjWqKiBkH;TE!Q zj$i*Q$>ZB`W7+ckbGtRhlIf=0yePXq)L%+Iki3xWhvS(VgDDz|FOcK6aS7RegkSzN znIH43?CzIm7Uu77S=pb8*M6e)b0+RBhv(sna&VdKipstrE+a?H@mCsyDQ->s*|N{a zZ_Bn9ZYf9o@u{@u_{Ds=RPz^+x0n5!xRo4#fUl9wa$Hu9*5MyNO8N^n(p+W?HIo@*&1A=5%Z$naWXA9_*)jey zV*tAB7=hU_1T$j{y381aCObx9W(-4@8RO7o$3V=Ck?1mGD4NU|izYJ$qsxrZ_@6Nx zGh;lO>==;QF(R{LNM^^F%#1;4vSUy2B*o4(djZ{ zc)H9OpC&T~sL75Ini)gXWyTnFnK4LBc8t>O7^ayqPEBSERF@ee)n&#|{m&SynK4+i zW3>Kf4A<-!uh}tRvtz{Kf5wo_jxn1ZgEl)xZDtHxlNsYSI|i=HjFD@yW9Vkb*v*W= zYqDeXX2$S!*)e{zV*qEz2+ocnoE>90GX}BAj!~Q)!#Fd>vCE8s?6PAdXU0%AnK714 zb`0js7|kv_hI4j|=j<5JnK7bGb`0t47}MD?s54_!yUZBYE;Gh;b_{Hj9V44D+W#3t zJ3Gd9W(;nZ9iuxlhPTO#@$E8WfV<2X;pS4#U){|80huwzU1kh&lO3ZxJBE2?jPw7D zfu0#7-DSs6&yKO48H3$r#%MR0G2BgNjCYqA1O7i_#An8kH<>Z!O?C|W%oz3AG3;Gt zjC)h<_vHB1ruWx;rSqHiA?|mXtn-_8AoshhmOb|inFF#JO@4~n$CGGZi~imuZz7v_ z$UDm6LhNM!G4-RU|B`$<{u(dETkvK%+D-ev@E`cZ-;(7Gj^_TZI&yR@zDEwrHJ06F)wxkKdX`Yo;N6R~0b zI?K`VEYB1@LBbHV9J$-uhl-KSjd-B106TtD7N{qwRr zK>inbdVg$tu3sPZx~`9KKVeW5->U21rX>DI_Sn6t>*+4dw{U$u&A*nTqt*UD_vdED z(EHCAdzmr#Om>XE>==HTG5%b348Y77fhIGC;D5##%#1;3vSSox$1u!{apbu5j67fVlgLkygZa3q zY?k2))UU+n;f?qd+Hb`x<|Wg2yJRy|j`!vKY5Qr@tn3dcw|&SD;_-5D)EoMHxJWj| z@Mm&(tZbd^%F3>y9G8>*7ju*O@h4K>O}3TrrLwCco9!QJ{hf^m%l3TPT`Y$+()tgQ zdc&BgZjc<*A-_+KuaVQ|YNDp({gwMxvj12PAC%oj+!^nnzdp1-B)eyDam}9}C)?`G z?^N=8WH%4LhF9f$a^G5yeVFsdhZlajk^E!jaV*;-aYxQPlUvZ&A6PKU{_f%E5*BH}doF?b`nYRb{(Zw$;cV*8VN3j(4-aJ5x57vcF`^UO$}c zQOD6=QSDz{5qt~#TSNQ3vf=yd@74a?6sP`oIX)HF(ccG?PX8|ce(?RXJ>~ck)%#(% zF74l-J>MrgQx5Mc$V=_>ALcyltvx@sRK59{`gV9X?n!^kX+K!@&&UzqCx5;iyiWeB zmdCx9bFkpc<;!y(nb&{$68c-9JW98(adNPZ_5)EtZtW%DB*Kz=RPYoDh5B-y@3 zUWDt#v&p;S56OR*<9WD=jz6L$_*wiFUWhl#z7WSRKjUlV;CJfB$-Z#zImO)bh<=Z3 zO3CJ89WO;E%65e8t5CmGwl&DNQg6wd>-a3Vft>pR>`mlbmD@XTRoy=jK7i|Se?dpu z50ir)_$}G>qW&Ox|D20mG|<+_-LLT1@;{#(q}(*n{R_bm9Ls*BY#ZqQhj1+3B%7%@ z?|bL03##SrpNMK-e%71hR`*l*8F;tsK9EgW-JcN^JO^6v3~5d7=a?tE=H#>RaM@0# zevRy(CqI|_QylqI@;=s&dyf2J@||+r3O}j)VdBR4xHZY&V_QddKgmIL{Q24>cc)SR zweI(E<#1QsKV-^M-*RJ8AO5NB%N)SFapg_wZ!2ysTee>}LpE&h?pN8rN`2#R)c

    {>ha{Tk2q`&xM>YtMX+M8x_#Pm!xIXq1Jg}c@MB$lV0?5pG2a&!?s{Bu$t zor|xLgU^`$_@9zIOrP&QS`HdAy~Vp|PyJ+^o-e;sc06Bge%zVVo2t~`CkN-?;X9Jt zaemz$`Z2Lj&j+6-2NzR+%MVE&UMiab+Y$#?;>))tw)OD)TjYPv7t6j8`E#3-+~16M z>-!hqjyv&vybE)E)^mQ@ov7U3tK4;Yc)t_SUl%Jxa>ufR`} z_mZO*@QdV=@M8Qn?YGD#J-=Lt5i47)5!bD?hM(@lEbQaE54BWi}d-2weTBqbO{c$z5L_;vaLzJ zT8`82%c{g2TZzZYel=df_jLp9i|YIAHrL^c+slPd+Ax!^m%yZMwZ(gY(I+!}l}&I%{9EKJ)ZV^M-b3~;kzXLY7s$WRJE%gQ=XXCiY%k%x_OTAMo>_&h2vc;yDZ1Tw;;vHUX=>G-16U?R0 z>(}O;!p+I|=^bMBR@%>y!yCzaW1iP{4dmz=@{?rK0Poj3&1_>lUv_DK5A)8m^!)&( z$eU2VNzYS9O=Y)Oj;rHJJa2s-u1I}=PsS(V(zGuro3iA8^Su2ZdOq9k;(7X?+oZGKHR78I~cC#ucK+KpGrKhJ(cw{oad`IgTKua3Uo!EwybXL5XeI)B=q z1m*E#a&$87zhQrKD)}zz%aZ^9{b}y?P{oX?VAHYa8r_rp?J=*7NzNU(3GXCsc5-fA z7RnXZ&%H;g;9tReq< zyf4iQy`=hddX?q4BmG}3hxg#?WqTuj0N2NhWK$bgouK)znYNd0b=g#t{TcWm?JMDR z_(a+p`YVYW$gIc}x>7V>BC*Z6Ze`W&C~vgUsQeozi)<0be_ z{1<*zb`_(fy&sJ$$k9N2l^k@(H_N6IZbN-2o0sJ9PI5C*^LI6QQ8}!O&mymh8_VuY z+(ov>;o)*{gy-JJ%JFXeCiT20!7QYHHThAKlKBZg;W_#9<#;|0W%o87O8u*}pG!U- zpYTf3UzEOAqpcjL@8OstoAf;s8|2`h_k2uF+S~L!A+2S{dq&(WIlh_sDg3IY*Ocks zF58Cq1=-ibb7XTl?PJ>4AP=S_{RP!<8`)OIuj7jNJ2_6@Q&9Fb&ChAdT_-s_iTXLR zEr(F+JsG2gt|CK7EhDc-j3(K1zp}!5}Z{W()lK$OP>aA>E z!Bu3Rz6arGIT}j)GWbdAo612K^0BhzJqPXxzLEN_ZzR(X>*3k5xeS+>p5#$Y`U~aY zeDd{jSQQ_{XHb9Qn`(awc>_7*y$EioY*K$D?<-5anUS z)W<9ENwWV$Hs#6Z<0ESC-lcvQehdF7$CIf)M(x8f_)q0FeXj3Rx!+cE zlIaE8afH|L9PnJ(d_uljj^^T!|NbUPSBHcO$PT+m7UC;`_<(l*8NbGqi6? z{VLgAM}COXY%tEf39j~i1zTlLYkdf}g0G)YHWoAmQKQx5Z~Kdj>|+YN8RPvTh| zj}5{3_yyUWFZ-9tcXPb>2Kfha^d9**IbMjLlHGFZucQ5XT$=XZQ_u0M{R!{jc=s?K zF8dOE-%gX=sp@munU z-nf?>^ulH2uq%E}zjvd~_#)YKlI=(O{cO|eKO*}Fskd^v|20Kq*NS|de!u6nl+6cn z)SCPbIY`&nGMzsN)BXF!_)+Tb)cFpdF7IZ}$Mhh#IQ@GuUgvMZ)Yox7hxTS8=acw* z(`8-{22MDPJY~tK|_KADH-sBo9BNzK$GEk=>uqC%GMi`^e!4>Q9n`^z$ewyTR1| zHZp1N((lWwvQM|SD!4xVEqykrHy7hNvghx;dv8RNQx2;!y%S`^{>8L;M*Y<$ zFCx1eX#eNaNgmvVTgw0JKQ0}Xz+y+r|V-_|HO{@H+%ajPnWN@9G*dcZ$FvjVR`!7+BdN+if@zs-|Vk9 zIraA|o+!I*xRGqu;!|b+1#aIbX&<~RyZ8z9mmdG*%jQ|~KOR@!3qK|Md+F~=Il7+w z_ufgptwsKZ?9$_r^}UkZlqbJUj!V&gQ_m##>G4NjIo{9lL|xhJOaAy z$QR%hJv4uB%B}-`8PD&YaU_K2FYSM13JS zz7o%&|0=iCGB7CkmNpf71^z&{hWuB+-{=%J#xH7 z_UFsNPWn5Yd^dT3f1~{avipnrndC>PUxo|wd4D1MV`V#AHs$b8*_}xJ)pBqu{=2>A zzY<=8PnX?`a(o(|B)js|&z6JZWdFYGOHsd+`r_2Ti;vFv{mFZ88kY0@WgeKq^0}*( z+XJkRK>la_m5}4_$bWk%ng3`F-Y(lOWV1qcpOU{t{Zc$o4pO%uXM41zWyAJpzIia2 zUc8L{$H*q#ewxZr>QiLDQuY3)c543>?dQtDYS|8wLzc(fE}M0^Joo)vdx`7|TyWp{ z@p!%LK5VPcGxb9_tuG|U1-@+Y*VJ{_Wc&yDt#WV}AHF}SkN&3qMcJqM9hv;w`&3_u?Wcom*uG3fa<*^3x^+_T z*nZ7mIj*kuww@f-mR(WVT#q;2o3xK_!mr4_CGH^y?eIOadqlRKP-%HBPKztc~j{ZKrCz=0n3i$x} zpWm}LW6sw&uI&e#sqd>iDmedR&+xAf&Ux5hkNovJ{V!DRIbY<;GQTJ3_{p|qe)2fp z8YstCbA0uj?9<<;J!LnF`VO*vL-viy`8{Hq%E8Cf-zdjx>7VHbG5%V)-;1m0^YFjX zzL)HZ@_T~q%cj3K-k`pwayL(ouBLvQ9N#Hhw*ROz_2=+?7)X92-@oSnEWx?kCn~i>Fq&(X15 zZ~0mdD{?)hy7u>Rdc9^ae-C(1ubV9!-m~mBQQw6Ais2gd5h0$p6vNN zqb20$l7At)efm724dm10cq=*Ew@=?o-c`9dsN6p*JHz$D)$~^kmt_9R%BHCtaJ|uV z#HUl=nfmIo#g_N5d%hp$YWi!bded0;t>pMF^4oAbe2?t9;k#w)XwTns`!soT>I<&d ze%d-VeulKQs#z3Z0B z?l}Ekj=7(~-6Z?>sqf40Ywm9_pYi*e&)*!&@9|mG-zZ0K(*HQwruEBYpT3v4q<-J0 z(>IsM(PG+vCWo8wbj}z2#q<{I{DQff`%jk2{u=H#`G)fkH{svpkoN++^L73tyqosj zWt+Y?c$I8!rv0TlpOe=VJJ~hDyL3J%PU}D9d{Zm>KfRBR7kO{78!21*Gv~M@_q_Mm zZIsRBw2%5Gxv7Cqd{Xt*@gO^~zvL3Ur`aHQJv^emnJyljH`OlhgY@-DL7k zzt{ulXje8p%j?+V$p#A|VL z*=(WS%Hdw}tI4?^+clHzNv!Wq)Su1gF-LY6k-v_wAnzdidgLSI_U)x( zNxdU4C&xp`OH=MFxvQM8Q zE5Y>3(EfHgdDf=j`I@n^;W;$(wQS4MUlpytD4pJ&tnVYt|1k33@kBY;gWs0Jtt`(P zIsOJ8te0H zkPKtq*+Nh1-lzvI(U^oc57Bc-@8-s|FZfrmo}Oa-LYvD9JVAD~Wb>XJT|oW``I+SF zWPcL=RkkImFQ@m5#s>!{{hO0{-{=c@lUd?iI3-fuGR5HvOgWym*W%hFxi#H8|C06 zT$b@&Y47sopep%zISlY9#(ym@yLoa{iu^K-R~?tck1>9AIzKPVQ5D*+CBG0~uJLN4 zJp3}_U8l?Yu52sO{|f5M;5p>K57hRtR5ssWqw#X%Z)JC*?0+O5K)##&Wt{f6RyGHy zFRSr+?GAjM9K^K0ihMmTFUKqKkMzG3-$K3sKP9`=bLC(j`F8TR@&9N)376CJvi@0I zS2q3d-ME)*I?4In$e)&@&UhAn0Dmg`yYLh_Xe^sXva5@W)4nG4(>1^LJo5f>R2feo zKZ*L4a!?xoExTi=KSBM62M6f$KMVhayUM|K%<}l(WOso4F!>ccU;HcdL-7ui%~eyiyD`~llE8gy!I5lQ1)Y~Kbi5Zhx}%WwzTT`aqSNx&2bPX(k72sUJ(efqb9rz9v8Y%%pv=hWtv|Z6@!8_u%z% z^b4+BC24QSO*1*7y=g1^bow1+yPWA=B8Lm`-^|Yp`hQ0bU%`!K{~|u3}im-E|G|FY~KB)_nl=D!P`Ae-*E@Ht5yK0*5jWH%7M zN}jIYQ>v>!)|crjN9ppf#jG!P{kciKdyD>Fm(47uU+ugk59W{$l+F8i6P`zX?emlR zcnSGD*{{H-U6AA<-yhRQj$`s~WwRUCx-hBthh#TM4vyjbzDbTs;);3dzZ~E1HgdrJ z$gPv(v&gr}=4@QHhUULI{aq`&OUS>J?X|elMM-^-?vHMiZ657M$>vP_ksO{z`x9y= z?H%*$u94&7kiUtPA%{+(M(ewOn1eDZR%KLcMV`*QeRIXV_QTvRqM)862vg)7whx>9*449PyGvcCHYeP5&03>&LzK4=LX_gm~#bwI`y|JH`DMbvYSAC ztp3b6JWh_E$F1;ie6Ac0!dta`wl5wfyI%Mz+zoHn_UIqQ{pILkT#N1Xe$4hBwUo{A z%54ksgM43_;|+XYZo)sx=DL5^$8}{xy}Jxgpg-(7$Z_g@`u^Hl^w*y6_eHedul+-O z33(UUrrxIgjlG!qJUODhE3W-llt=q<+TVp2;$7Nb#^>UxvQNEE`&)Y!c^lbP#K+2U zc|2MB^XOPyRSt^b8T`FC3K!$=#h?AOeYfQA%dfJV!{4)C@ag>h+l$BP?`6E7_J8W{ ztJ{rV$3J6^2i#Az|AfEaJMqo3*@f5Z@4u%%_naK0(AbIPBR&hS$Fq4q(pUHqj;~kYi{xmfZ2r{oxLZs9wj6E3cjIrUzgV_kr|miZ zUq}7ta<~SM#h>9Na`Z9nf0KhneKhgd8Z?>ma zxF_51t@wA`6hF@K@O5~v?5@H6_&!~MIUWvc;JF+RSCdUCeSgiFWPCQhOc2Qp!@4$a(dCU)Z0p5b!;tlv#*{#I& zWcx9`M2_d<9jxy;vUySVZ{ka2_X=Lb=Q$eRA^X9y`$nIC+#6pf`;Pc8Z9g`|pR+wR zkCIl2po_IRvp z^6@>geM~l|lRr+rN&7GVB%aFtu0PIW|27bB(EjqD&-)qnpCibtvwt0rM`?d-X5z!V z-*1U*o|Ek-Zf7)b50J@you~mA5BjGZXM^hK4W@!@IJ%z z`}92L!+v6V-|PIDJxqN)*`@oZ87Cyi>;5$MCrxF`{?Du|m*n$yucW_*vbhMaE~C6U?kR`t-`#2Q zKg;)1Y1QXZ|F&$Hp6iHjBd;slcCsl<{wVnzoxgVJ-@`6)+@JbeGp_V+yV7z%y?giA zWd4k!|50+-i~f4zZscdkL3cc{WYRw9iGMATIP8Ph$k8CYO^(yQ|3BlItn&SvYDvd+(7PV-<14BIS$FcDysfFqovywgd21*$>1A@nC$0 zrtgNyrZ)5YEWQq>zh7^~qiNq!j>b|ySdP=*!*9v%73vq`snoBRLw;YoU9x?Pe3l%% zk6Yk*^vCtf_!B%tx##!4WBTC^+AmWcaX!Iqkj+8b|9}tSLi+rp!}vrw=KO@ajl3A= zGv>&qJU$@13iw!Uk3l7TvK$AvBHQbkxU6ie<09mFcn{ON6t9xwx_G=CHj+(S@;h)P z**$<+AL;oZ^BU`;1Nq&uP0xR_{lsmQyOPR%JG?>Ln@P>~9jEO-QyxD|{YSFv#Pry{ zqesX;P;R@CFQk2X{+8`Mvae~#1h<7HXD z<7t06>zDIyriC0uo~X3d}Fe6RaNj^3gD zL$ZGl*O7w{@CkC5o?kq``kl-47+==Ur+yxv$09sc4wvE=W&a6&Pmb2$<1{_H2RCGX z3Uj`d{ZUi~A6EO|MC|FW0_R&dW6lq|)99b;Pp*mVucmz;*`?Rpddp!8@>;UFm;Tf3 z_kMDx>AAM#=g7W2`HmvV{@g$MZ@Zqjl z(*5IT>aV1J0zO9eTt7AG--kEIBj)E_JecKKARCr<<|5ohxm!y8VJ&a)IbJ1)U*nf$ z`vdLUQ@@YAnH+IF-_<5hueWo5O`P5zP?mb`A8=caN!GWm&h_r8I1ewzm*G{iuY)Ja z!8NkES&r+ImzJZ3`1Pap`KEqVHqFT2kfY{!JoWeB{&L&~x0GEc*_=z>6PKd>Q}{^X zWcuLk%l*K&W+NO@I#{Ei$o!o%_H z^w%D9f0w&i_T8zkE}MS%k3z}v#>4Su*^R+-@N_&1e~7!{rTA_+T!m}PCdQ{wzXu;N z$@JZCc(rT|_tVXheNjA$`ZBnu9G{5qlEXkYHRPZ=E=~Pa)R&P>Q+x{T@4yF-B=>QK z?P$MTjvgf+E1Sp3d&qVG`So%<5|@?zc)a6p-ADX7-Y)wOWV2N^i^KEkK zke|T%YJhLV*W;&g6WOHeyBRK|&&S_{`Fvf$y|D%NzdoegrS)UvDD7{(95X$0p0>yM zTH62r`)PBx*p@KnvY!j?%l*8}QFdvKyn4TszwL!3kK9zRz>_BC6}~ zDiqEAC--kl5o3ub~`^)9v z__SVjCCKlkzL;$Ll9$GlWm}H=L4A_`T_OCM9RL2jmhqq*?!_ZqQg64(?)bim!wq{rWvt87=`4o_-&i)HgZUWm*0Q-2>&-%^fd;o;=d@m$%xPWvUYNnO6b`irQ)S&l|i z|AOoX%Wj=)`;Z^=RMOr*iW|!DgR*^^{2tklmG`xh-4Z#x8~-f_fe%GzHD~MzAdgiC}|%zr~UQ#I`YnPa1EXzyUS(!wQOt2 zzVP6rKXU>3MRIUD?c0%;BOfLEqh&W2|MFb2z4`sre=FMxLo~n3WLHCuW>Viww$I7t z0qP&a17zP)w(n5iP+z+-l00ZC2fgHGw~}v{)9Lw3o=)oB zeaih%**_@TST-GGchPVy??d$WitO$uzxx?YzX|ySIb?qA8rhz&+!r5_)ccC~F4>fz z{b>Bh$YlMS?Xvv=pZ;vpKKx#`m&?&NvTKLe<2iD?T=u`?d9=?PspWf{`UhqI8uhQr zE~38mb4k5>5x*yg&(Qv)=hfd6mp?)^5E}Nr9 zCH3|+*)^1d^3>0eqoVkd(VGAL&uaZXCHq+RTjXFJdDRz_db66mmmGXXzESockvAHX z)CUX5Uy{vS*&det64`AStNGtZeK0O@{1wiZ?Q+@A8L#;nBio&FJdFAiUQ*swc2(uD zHSKH4{zhC|c3058vTQGq?OydCU4?hauCeTXk$p?r|0D+wk$)>&=Ep82?@RrwayVGF z50dwzeI406iccVKix+DBM9pPCTQ=9=cjWMN>KDlVDA_KT?e-DL_TZMu!5Z1DlihrL zi1zPNe-88Wj%+WK!>QE&Nq=L>r_=r!+P9$pr>Os3+e6$HzsUA?79Jpvs4Uwv_5Ews z?itPhNbR4(<-_HUvfYFq)&8*ToA^QYpVMXEPIfPo-=Y0&^sa0d%69tG>i*?d)Y3RgA>TdX@8u5eC~KScl_pFW&eFJ_xmJg|Bf7P zk#~}yhrwx@$vfmFrwi3oPz$&mV>gmmYiQq zwvEXD&i!7_)tmeAUfK7M?GLgWF3&9Zy`HPLt7Nl?_Eq)wWadQL-^JgbXUGT3`2%G4 zx@?_n)4xaEX@9f+-q?KFPm}Z8lFyg--A}%ZzfY}YyGCBsD(Cli&Zz!f&bi+R^$VUi zDOf+dl$$%L{}taMo5uP+nNrlZlV={tonIy2ov4876{E!QsdD-ot?X6!i1O$&wfBEfzl{FRl=BPj$17N#o$B9~ zzymaWUvPg*!SY*Na6P%8zO)>#kj+Z{eKQ63W8`xGnH#}noEBiW6U%TA#E zbFv?c2g`00^$p~xt8Bhxeb*%)&-$&3JIby+zDf>@$bPdvzxY7kWd6+**>0D8Z$95| zWOuh5enovF>OaK|Tj#tv2+%1(&7v^WN?EA=m5&1n@|M6_v zhjR1^`5oj#a7)?skZpT8xQF(GWYYw{BZswVznb=Ek#CUw39?@+$H!1lZhz~OtS`5n z`X6L-0DnyWh3wuXpCkvbl6S)sWM7N+Tj zvqyPQpL&kZOl|UK=>JODUQPcN7s1z1|Ba5HqPnu5A%_>^vG^?NN6EfCo+!H#vipGg zBTs01+$Nh}aA8f~Y?E{Evre{eyIOWXsXkavK3BG${AuzJWYb!XXHb8sY$j7*LJnV) z?M8l2JWc+J?E1;Z$zf0OR^<7#zfKMwlKmC3Z$tZ2<){_@AIGD&<4@$^4*aSdr}cy7 zviB-?9b|hS^~I_0LjI}#Ub*ga`u8ist~-C<9;SUO{=T)QzKI;&Mt|4RUla0+<@jpZ z7bU-p{9}GU){;#hem|a1{l&7aN`63pkKM_5u^g49{yBcH7AHRs7a~8Rzwg1J$MyZ) zDTmu-yN7%YuAugQvFxvvgW0lq6u(OTmh4_2-zrA~$ct!s+#|9*mE~_keKnT%PJ9gY zO=$nI`ZL%LmBYr=-yr+?)K`;NT`oJ8C%PCP(DIr9Z;*Xy*>e6MKGIv?$H}a(eYiL6 zH_Ps3*{vb3MExq+Y~c88HTgI>`i8tI-XXghvj0W)C(7Yb%@^AF}&%J~v%F)xZdzrj1?PtlR2lbqfG##n`nf7hS z%V>J>9puL_zfJI3)d%VNc}b2NDff3UJ?c#$d+Nu&NmcOy?ax3rST1N#Qd0fI=|tVUo%{e zDl+}HvM(>2D>xrgg8s_N_HeIc|7HH*{PNhZdE%0k{e4A_^V*Z-rYI2a)|EB8; zaY+8L9JZCsAly-QH_Emvu0Z=EBiUJc@jTM-cL47vA)CgsuPfVn z|IXu!a4qs`vN=-@E7Sg0UC*-Et(1eR%I!$5f1O8t3+m6u7hrO`o9k=X&690f-$ynV zs=cWrM>Xm1Z>|s4k=+8>HN+R;)_9+;FZ%X)x*T+uO?R$Gvi;`n^G?>Ud04rvLH)h> zVmV}cbxmpCRJrdV`|IdGl8vSP8~8Hnad0m6FVemec{kaWm0dkKEKdDVvMqv_==y9_ z6c3ku3E5sR2PMfXQD0hi#pP9H$oJ@ause?S^YDqdha8A8u@~yHNE}Ko{)A4HjHSL$- zzh%3S_NQt7+=sHi0MEhASe|LJ?Inj3@nkt3C%ccyUm*WkcF&L-t}dNA2)ga@?8rhqU~@C;3Zq+ zI5}qi>}_&D|E8SmnZAARacwWH>F)tKZccyoi24XqsjPvmhWZS4Xod2KV5e7$yHGXL=u+04ZgW!Dc+Aa5eui1w$-VOqbld(vM-f8NW%bn3^-b`Jfwm;F5Y zzmfXIvac$eWw?h&LhZ2#z-^cR+t%}P1?tE)bbiTG#S1;?^! zEXQkQf0XQ&kq^mF`uDT(#d7ot_1|>T@;ry1!TqSeS@w^}uCi?ImF=F6NqgIr`VDfk zt7ZQ&`Q_v<$w6iEo^n_&=WUnVc3Wp$nED>H|M9WhIBPZMHtv}7Lq~d5Uz>Bm^}hDX zgD+*%1}~EBt+Jbz^Yf3_3Y!*qZr}H((Ef7e;h3EFHT$(+Ud|i8IQse*a{lzIHe;*j zJf+hOuZ>iF-f610!{nJpHhpBXr9-kl!j7_AAO|gF`9=M|Pc%i}gZluXb3rTI5r4iC$2G(N=gwUHgUX(C7TXV0U)sHSI* zJec$!F@JgA%i#&i^XJNOML9PPO;R6Mm;I%(ttIa}UXCu4^LDmV|5s4|o^073@}858 zRX(!?zE-y9Q;+k0Zma(4(%&*UW_so&e4%pFP7cqcz8-nO^5wg_hiuMw^qyO@oN{-W z^1#RzhugJ&XI`${tcSak@LqhYj;|ibC=JcYW>=0<=lGPw?%JI?u%1@xtzbJ zO|m{sP1>)O{kd}9hve0$A0ykUIe+?ar?Up+{KWqG$DO6zcU2x#k!@pq20mMkPLpSr zAU{dY`{@CFz9-0LnQZaCiR9&!M@{kZa(ucRP#^ttf6|{lRe7*Tj?R?#&6eXDa^5uD z0KbLrki(g>X)EV1k;5K2e|p0s-!02|a^;VUyPTtGJHGua=iIo2m7b*jOWF^TgLQK7 zqMTRIKKD$3nIcE;$k8l$Ut978a$H#sKcfEY`;zwI66&9qt(Wua%F%o||7hyxQopFR z*4G?4>?udgPkf&2N9Xe1w{P88HRmbwRy_ZL>h00WuN_SL4fiJf#XaSCjvRK7XTBm^ zw%=%+Y_3B-&2Oe+9dCiE?&n?OMp%I53 z{EmDT`6@ZwESm*#v`hBWsQ-=n=j3=lep22?eb|ZmmE`wPKUho)m^UsI2t$QQqE`!I7DRA!Z)yy%+1w_Z7Pz&%ueBUJ zB)e8}_=ud>T#lcR^Bc)-5cOB!kvPCF$o}_xlKG8TfBDN~kMl-l@^*4a`1d)SNU#{qL)+JnkjW{I!*)_n@5rnQU3#`zFg_6XianzG2Q)u79_C)tno& z>;2O8X@4z~{@e|+8zI}qInSF>=db&7?$UO`FO8JjJC(=SoGg1jkA2_Vo%9#hRlRvv zj%&&JPL9r#_qCLLRqC(CXUP6^+E*YyMYbo(uC(lqmG>QLq4iT(p1DEx2OrV#&O+Jl z!;@sQL(Y4g{CnAUr2R&DW&`TK#Fg=~oOAa-?%IFXzn+mYt8*@RMrxhv&4;r6R(7x9 zA8;S)_u>a+|GVsOp#F$#u9U-Lw7j;iY|6^Mp&Xwqo58pW`9e9kfPB6De_Y)O_zmU% z|M6Qw8&N`=hA5>)Dy7J+6-jm~F|tO>CxwvQWGP9gY?Y>kEGq z-7&1Mdt_fl&W}giP<9WH-zP`C>3>2F`p9NFImfSAEQdpt+s|eD1mpcgJ`Nv{{Uqv3 zYJUo*%C0K=-wfPXHZ$peK=!lfe_D16@jU96Q2&h_dD)z*<0o7!yNhJAl=|AL&#wpk zI@bT=dVR3x-lF4|*B?`*mHdrzQ%pA4|I{+e{nyIfM{@Kfo+g_OvL8bJIpcMa19DqU z_Fs`7OFj1Aw8*9xY*KFDl-)Yn^~Njczfz8Qy|+I%SO2`cUyk3!z2#^Q{nccbyAbtU zf4EbcX5+>8Q2%U`%yyXU?v}%+$g9ioi?TI%I{BxKH6GW)zQ1g_esQjH+4q$#*ZQl$cpGJl?VGa0W`yjopuU$JT`imH zEgZq0b3 za5Y2OlrnS=5iLlhx0BO16cs${gNL z{bjW?+dHV=T1(^KO1+l@?5C06Lj5?|<*qKr{mAbme@6B%Ua9GiW&EvIWHyhHzb40v zWY@fAmd7lgIa{`zAIwBK*uZ!%$cFp3_F38g%=pjA@qWgCg}f-+Z;BkUz1#>ns6_rC z_2A4cX=EvzZ*QzI_4yQ`^H2ki)%f zpOLcNDZ81n+fMz*vd=#++l$wepQioYt-;sH(Mo)e9I(II=gC(qcdKN>{^}3Qj_LWT zoS(L;-qw@-4%yr$NBi(y)E~n4$T923_mM-^uN@)>Y#%>Pw)yrPPJdO_|3LCfWt)#z z8~3FCT6{b84e`}-bc^gNlXsE*@$}zM{hzEqC!4QWeWd9aq%8 z-a$6`=f@4@;B)FL(!Z7Z6Y1X}=jTtq5AS6E_?v#te{m5$|6im$I97Hg*M_S5i8qi%H4Uge;b#T<9B60hx5e>+4Pj{=hR;$2U}%3 z|5BY#^XF~q;^TN8=g=itZcE_Ra&)}x7t1krqvUFNegyr+Rc|_9oQ)S8%XnW^&unfd z|3;45kzcC%a50`PM<2+x0prh*eF@FK8IMQGek6WXjvvE|sUM2J!H?i0SYQ3|xw7kp z>&rfWKCG8)yDPVE%26lT?54h>>@L>!b38xh?~_gb{MPjU=4KCh{=8Xj?SD3}?;|_x zUzGFl%C&=NYR|&-0Y-E0&Mvam_T@UdQv4)#a$GY)@kSwj=*r+sE*H zs#!0`op@gIL)qR(Kd$s`qa)-tYJsIXW!cp48{h+c%M28J@?# zj6DB)gGzF6HqY-Dr~X2o*XMe{)x=-2yw^~Fs~i=`zJ)_7(HzE6%nmVFV~ejvMTIv?84@e#`1k^KE+f%2d&?k~>_`FqNN@~HOs4>@{J zwr4Ya{(jV6EJqJ3_g9b)lg;1cFEL)Ie}i_Z3MUxMpDmd}=! zOY-;Rt|r%myIB5P@OIgDlB2EoWjXjvHk)Ph0r`n~|8L)tT}?TjB>T>?d4m3Ds2@On zhVCbXjp=W|{e=dy?J4^k@sqeA{qy94o9W*qTgJ2dW!H%MQ*?hMW_(ji4zH*GUfI-< z%|zK6!bU()Y!SOj?cE91ze2C+@qim06`X9>C zDYAdV>Uxd8pLeZwzbJ04JpN0LddS9d|EWLyMRh;RK1be3cAO9FYVLRC$9py1KQnVw z?*?$cZ9e@UaepoUet|&u|Kc^&SHXNAf$hTm!Hwka$VZ_)i%&+%_N;I_(rUG5LRMg0@pPtLzj zVjuUD^Y5RyM)$AnH>$U7@OO;282^ed)cte&C-n>Ds5sw;!Too8x@;!u{=4D(G<;p% z{|{GOg^_4!8Y{QEz)^La-4dm2e@rz?-QQr}3Q zpO`ta;q#i{bMl`0yvBS@zJ$+jw&Sy#YJc7<+kUb?Oumo2l)mr8w`rEu$7kTVvQK|M zBK>@$YV$1jm*TGYO6teUF8w`>q~3imN9pfLq|0Beh34l*`UlEkQ`xS=>F;5r{b#k* z{M39XQ9Y+3!9E>IZT8>`EC0lEGXUXOU zIa*5YWRw2>RXY9@IoKlm59KiZeXunD0snyu-I9$T9+qu6IWEHY)l?=g!S~Ztkxlyh zZpnDQy6jKI4dnv?ZbyEWZ0?hT3uO0zY|`J4NXD~0$kX4`OXs%>egL34G2 zjryth9@#Pdpf~m3(mzx-yYLuXM8}`y`@#G<9FH>?uaz9k#lvK`T=pxe=lje2FLL}H z^+j}i&fFo}V>q7E?{7}lr#W4Y597-@o=?{Ir`eX&UxYay#Fp<@>qFjDHcv9%J=DJ> zTPORsV5KIL?K8=WuWh2&K^e|#dF+wfNMzOva#{;+I!kv~EGKJwSe zk4U~hIGx^hIXXqQXLEk4E}Qn8pKhT3dD(>ca?Up|(mz%X7t?>7j*n3Xs6SKoh50_a zdvyH8lkmf`pT_swO(1_y_HWD4a@l<%o6qR~k^U{zACSlYDo6X|%m1SPC)ph_B3mE! zd)Xc-n^>M%M0Shi_;~V24$H}YIQ;>6f7zUcFC)K#`n{~Lk+NfdDk$Ll1KVo$N)8vwW{a*Dsx(Z#A2Ipyc02 z?%eVzzAy1nU7rNc$YzRcUXuM1*}Z~yl24|-g05Ghskn)3-oicPV1aB$kgt&aOLF`X z-hkK3Znx~dr2kkgPrOAo<>X)odBFA2LHcXT;jw&wWF6U*lU)tjR+4=s@(ajM#5L$I zEc?3ub#N0dMty7gkCTJ;vOQgPcgmjmv-grWqP{2no#pr;+)v*92=$ZXa1fp=mmDDb z9pveF>GuC8anbD)etLlXSf1a&u9WO@SK)b%2UTx6%071id0+AY^!LX@w9ohIr<%cCcFImVSgqs&iBdwDVwrt|D?RTo^0=u<7W6a z`rA-H40j@*BfIXhKa6|e>vg?j`q4i~j{1|&BG13yce8AtRBry1cRwfF%3SZvq`#6} zZ5H(vx&B#%&yX80rv7L-%)gJB@f)upU$5!KpW|ux8`%z%qaVoo$TN3imd_oM%@F0L z(3tG?)b*$S7~D>FrDcDV?9Y_VJl1Db>c`0Od9rOH+Y9kUa>?qlFH3$2`H8Z#xQrY% zrM?{fq3lkU3p!w)9}K$5X0P_Yf_w3=a?JO4n_Y60f4?`jPWApb>PIks2~95?gD+2D*KTrb;esQ(LJNj=~9ZZDACX-{SQlev(*itL%6=n~m> zp}sElJ!I2@`T}`oTk3J#o}Bq@+y&oH|GoGDId-xeAls+$llTSMydwuM(Z5L!Uy<#8 zIhult>v;9kWmksd_bu6!m!sL#SI0}KzfyK<@TKyoFJ#a8!+lGCKHe7DlvTaij!Vno z4$S!|`VBW%K69^Z`^#>h?B>h%54=;3_tRgB>)XF^dD$P5eRZyPi#)CC^BZMTR(AcV zKM!-i#@G3;!v?aMta^JJULl7a@Q;k&9UratM{zINmzUijTu1gJW!H{;yle~TpM*!t zb_VrxsGlX9Wpcqgvj18RX5*r~Kf{LiYd-f)%EP&g$MfJZ_LJ$Kr`&#s7ve&^A6ZWS zO}xMRhShR?@azI_3zRDD)r^tX5+;($t%g> zTjcl3{yo{fPQ9o8TiGqe720Lv1dgLzDEn4B-Kn}DZ~zl&dx?T@l${n<{pSGlkHmBy&}8M@J9SCF3~ZYp4lPW26C`Z z_Rq-C0okmV-68T*JE_0eSREgycGmK@l3f+qb(DP#IlLD)mV@51yL-l4w%oc_*@!&K0>;HS%oh-+DsJ}oC%mgh@9qNn8u8AC-D(Bx< zVJ@P61pRen%lBir#^h6#hqudazHGWt|227E*_(T_`HhB=SI5ubhH~({Y(m*gqkj_h zpU7@G`7ZpK><{3*1)5&^8*Rz`S+}7_W;;OkTXBEcTzbFO=Y9B?o|$I`^q($=r_+CC zuPl#OXnMA{JgT~Eg5Fu)xCqZ3e zEwbbLT76I1^L?#mf@~(M-hLq4HyQ89tFrOj0@+*VfhYwtMGTf)ak=JyBK15!8Qdq^UutBz?Ml81-%bA$xR>lgIqpdR zu1mB2AS6GiJlvw~6I8q`%QtOfdtEO3AK1QaWOsmkh8!A==Qqpd7{)KH-H3_KPeZHHG@e<;J;tewpR*i_~wI zOTK__{VK}~o}>S3**;5t*XAsrIg$J`IUbA8`&#)^)PE$~XYd{0X8GDDsSo1J?g{cf z^4byjlmE$UZOQ6)52wGa96U~aZ`qN%NN${ajXdfx>JQ6do?o^#8$W)O{0X@vHXq7% z82NtLd;9>Hevc;~&&sn|6$J-!B1DJl@U$Q*T$NyO#)tCH* z9a$bcgiri6^V&X4?*UA`c|#8SQD16jRv+g5_2p{VJSO`*e@o7%XMX%2U$!e7uYmE* z!?MrkcfK6t^RrKmm|s_Ich=wdLFVs%+2{FOd1i0&z4E9$ulrlpUy^<^NDlJ#@xI(R z_b$00_bq#}{%ZO3C&>TizsPIz{K~yqy<>jNGxF|UtpD%j#@L+3r?-#^?*e`fvp`ZD$8YI%J>d2Q}Fa+v#fobT^f|CNpR@A3AsJSwj* z`gfME&5wtca<%;UnJDkh$6GC%{P_J#Zk*?p^t;opKgY+Nvd_nRSss<=J7k-i->G)_ z`Kh~phdQ@;Np75<&wi3U{pJ+?4t2G>zo{H^J~PAko$CC2=jECC`PS%nrbp%H+uP)s zdH+&*cYc07TE9bWsW)Bayx(k)t3AT;HbTGS9&rA5^W%mU>-`9gm`knj6d4GG^ z4Q0GHh3{wjmE{1t zSmXJ7+5U^7uj5h z%gOP1_&04YcQ#%p$7jfH06v{Oz^CF}+CQQb@FY1XNq>3S7sq3?|JkE3zcU{dqyIJS z-?lLMIr#5oy4LkNexiM{X(NZfkr$JLo#bY^3=w7vFz(pzetX*#;?oaW%yY+ zIEQ}b-<^TUeHrSPsNNlmV{E8jE}H{O_5Q*${w_?v--_qazgc#(sNX>ThHO8;Y(F~} z=i|LjKjQ^c@VoRskH3)3SiE2MkK-Dgj~~L<%JFUZ8uEtt0ep>Y-jajM$-j`@`Q-Wj zT8Vr<{bljTa&$EH-;*EyKxX9e4LQ0A&%;;KKb8KPe|WLh$EnQUZ?Y@F{C|rNt3Uo2A7s46^nWWyZ;~&RZAAXE?8lHlD~FF@C!71J z??!(oe61X`rT%R4X1JUjH=zCxUEev2SIN;8_$k>`r~h8rpNlV*`ucQbp2_{ z$@X=*^|9oWxIX>IYyIAZ_sQ-8`gh^=x?c9%@D%(N{k>(g7B}SjdJ*+|xSpRy{+=99 z$4|=PIO<=K-Eh2Ew*BxYvcHS|{p9U%5lug8f-A^DE&9vLVO8>g`8@>}qW&1XOXG(J z7G>+pZIt6*WV2p&U*f-*pS9GN)_CzE@_MqLO@6-|&csEjpG5sS#(x|;rr#HzAcx)Y z0=@r=+u^=))LeG$HVww3b&Q*8hnHtFQI>&-XGhy@FBh5j-ST^JT%b;uXU{vsSvUlDgEKaTzrWOD@h9Nq7TcP!NL*H^Y*%dVO1R^!UD ze+%!?{gr4e{hxEcrTcZZD)q0)?ljz={5aWPD*t=$`JnFqxx$R+ z<$|L0zbl(!e`eOg% zfg3gd)VpeOu$=yl8?rq55O;XzpVj-t)EA?E9{JzobMbd__%8Kt$}x6b zW%C~O7vp!RKUMzs^=J3z+4SSr$(PG!2EI@BY%g=I9I-uI89A6h{a2r9yiu|nE1P_O zx=wZjssHg)t*`v`ZiE~RCNH@*%ft5>uhyE(0o&hH`#7^>eVL)#G!X3$LP=71=^>Ww*cb4t-xSt%?!eeAt zO?K1dC_f+JI6vP-%1tTynctu=o~Yb%zI89jK0hBn!}#BFJ{};)>u_W0Kf~KsXY1Fl z$8XC2z8VO~E%cAwH;UiKeTzh+fd?^lrDFPjhW>Ez4s%9UBY;d;j0 zE&JR9R%Cg+l<}*}Chz}wd6oycr^^544RJpG{mWFpnCZWV7ve#99@A?qM{~&w%We+& z3rn-{^4DL}K`!|g_1DYso74~ZK=rTS#&Y~3^(DwBkuO@3)kpdDT3^|`N`9^ErqKV# z;;i1jK>oHIkHrPDABm5VgJJZ)<+Fb8$RChRU-GkM+mrm8MVi06$*0NTow$o^xc+nH z<+wflzr3II2kr11a(;biTHyS8sf_G%FJGAThpm|26S8l@c-P8N3w(Hirq`PKrT^pp zvTaHIX>!~&@yhPg&;4n>rq@Whoh`d&vhOX&*jy$@&B=?>kKML;*?3Vpe)2qon=J=7 z$>wg^-+<4R<9f2)`d-!_H>Q6xW_j&TvcFBa-znP=ex%*q(N)qNKFPKXG z-Euq=cgOQ_3)wA^?KN_gUk_h}IlsB{huI$TNi^JHIz z`jTwVb7a#_4zYV2^ZH@?P=6)k-y)l<>90(EeSDl8rSCWAF1+KMeaZBb-)Y#^Lb+pq zh;EVX51PLyfBh?_{-7`8m5}`~*;ka!GvxXFaJ^`IlJoj)rpqDMGkzX9*9Uf%Y?m@W z&&%;TJXm($$nH_Vf9Q;OoTRA)|n*!Ms<$l0K^5WbNSSrV*Wq+)WPk%Z&$FHwU z-jCzC8u>Ii=Kh3zT{bt9Pmx_)*?di&`#harqFcy^bG~UQ`_-~R+C+Q zJe>S`*=?7D8_6%w`O`6feiG-`R?7WnYk>djT4X;PNWqUQRR}bT^vKuP<{<3)z4<{c_{Rr8=Og>f)rjx%aM>EMcQ2#Ez zo7dY9WHVWgSJMBR9Iholi`VZBvTMle_t(@vLB16)k?ptiSJd@E_=W6S%K^6IxPIXN zob__FgZ@S2`xt+UYz{MC7un|b3(uhbc}H$gVr}mFcg7&&Ru2pBLjl0E8Al*UQhlwUPwMh z_HW7I1ajW5M9+~|VtVAJi)7;pWph~e%Wxs;i}3!sh-{C+d>&}lQ(sECd5!V0A0)f7^!KL!0{o;L zUrK)$+1JE9<)AKJO#gNG1nwW)DBB9MYffGu+uO)z$-(X9zti7N_GNWH$8^Nk$w628 z2gvqr*)5mj9He3WgV)GzuI%=4e{7*_Ph6Mv+hwvpN%pJBk0W0% zn=k0!hTp?G@cpviDf>pU*-KuP{2=*i&3{C0pTm6KZ+pw}A=TTSvMHkH1#Cw-;Q0a5 z0H3VfSD>Hg4eTz~AGw>w`YlEMK=P8Zxj~Lg;|kR0&oAWrLq+-zvi+;#qg8Kf(0@MT zUy1J~Prk4qegAF7lh?j{tsLafb2O0+&wJQinjhOw^>&f$`_un6InR&S z5AiVNX1DAfrTTsc@sKgXwEE}M1A zqjlsP7;iJ<{Yn20^1ZU(Pya^h|HiXrdsuc)$?+lb+H&-#Y>SW|q@Me|A-R8<^VeU> z{V>i?N9%bX+gdjH^FY;cd7cL`4vO-;*;d)t;(4^(SL4DO zFKmQQ!Odiw&(AHgxl4K64)>7#J+jBnC#o)=kcA4H&qUMGTt0H9zgw4**#9aMz-U~an}jt zpHQDa-}E2# zJnC2ct8D+lN9g=pkp8V;`g(k}oc--!>VH(f`+(}*w{qhh_;cBB!;Lt%X{F6RkwKM6zS)bnqxkt+3o8-Zw~pN4f2Y?9V9EzoT?z-&bviBum{{ zcCBRdu^iq+e&Hhh9YXqj%4z*8va3P;dR(2ntk3FwRXjirD&u*w3-FPPH9sfIrnVfP zMDAo;ntX+veLr+MKUaUC`TKpK=I?UZrr$4} z#zV-I3G_6v$CNzq4fbkm_BrFI3-){yDO{jePl+ z$}cD1{8i?-v~2g`;^aSX&T^N2A9}jI*muMCWOu&iHySfQ+qaw6M|gv5UXYC?Un&Pz zkXPKO>7Rs;kV~FG{jZFFJo!R7JPP+`eHnZi^}j!?`8l2X9k?+5UN-BseS$CX8?s$T zeGl@L_(IvwroOIhUMFuv{mbONWH$^yg72sPb^2T4kLa&M{dcmjfs1PX?b*~{#PS?P z-Ut`QCFFQVf31%^{|sNF+)u`@$?jfUkN&G=^9DYPd=5^(Par+s*UPpT-h}^pD9g>) za?Ksl?Thn3u%9e=HsI5PwDqLr2Fg1vX97XkdMLV%5E@T zCs%8Tx69@_TtUa1xfa*q_^ge)$hNv{IDVsZ$r~t-E8v#&pNQ|0-Es7{(edjGbx0c;ycqQXiz>ji1ITc?kho$iWmhULp ztYdi!lSeG?p}yKa56Siq*$tM>PVx!VZzumnc36&2`pr(g z{`kCqD6dEP`aMgIk7s?aT&MGU8K(b`Y)`{y$zetO&DyNqRL1?}xC*v%cs8E#NmgI- zeA)Do&4u_rIjBT^XM7U*{rDL2VY2;`C%_A7by;rJohKTQ9=GjU1=H@0#X4^nNv5hKun2mU=f%?|-dV?rQUX zcs}*D^nNw`)+}@@2iaWlx(KpYh}msyKm-a_0fyucgw*G zxUy`X#Y^X9^)dUOnJee}qj^m(IhOi|Wj{tX=TSd`{Mq+3Uiy2x$^5%1b2Iw_+(dTw z;C*v6zjw-JiEO*#ZnD9yCVBdMzv=jgW@r5-_h>opM1LFHk@|{q*n#|;ce8$*ySr>c z>i4~){C3#<7%I+6AY=uivpU?jVa-9Bt zbGm(+;H&Vha(F4OB?lMC=2*MzwN66+j`diAj9X^#j-+$Ln*Yxfnzg2!T&nwA6-v8z_O^@wu2FRY=TqnES$ICXa ze`#vg@0nk7hwO4+EC+3vpCibbAG7e)tUq9W%|r6P$LnRX&5!4$Q?h!?@o)ObVSYZT zAV-`J+^oqOKR@0JrW1Ny>?H(nDyI-nf_0a#v6oRlmqN)%I*>J zpI^x8qalp{nCu=UuPF!l`M$IqK0*H7q^v)9lK#nZ_%!(tIp+1;bd=p>>am}J+bj3) z(0`*GEWl-CyNvpOp4a?;Ouk-r>&ai2{g>pSY&VmiOaE7R&vV&$G4*byZ1VmNa!9|q znEYGDKlE(Y@4jQa_hq{U-z|G=u9V~4h5pC)Pt^L|M*j);N2d4g1kLYm@*Cw~7y0(_ zS#EyCx5;ih_1nj3e!n4qOpaK8=4|qO{eCr8htsM%Ez@l`RhSf*>qt1e}-pyke@H7$Z=d&`^!{6J92V z`SJRS92}&-5BX8NzrK_H6LCwq@u|28^{3+-<*15mYU4|AUD;hteGS<(B|khw^Lsm< zE1UfO$O!xZ{T=Zm)bm-S&F{}NRvx}UeOK8|$79K7)BnCallw(x74@sB|4EM5@ccmnm;{I@>184p&z zwi$ki`gXV{zE^ewWZ#E;v}^{E50xYCCz=j&@DzDH**%A=Q$L0APL}OV@{?r$9xg%t z0WK<=HS`}V2b;)ClgGF+`A`3~`iiw;qW?G9? zJiY_JB}d(2^ZB8xuGjZ? zE_qL0|Cit~a`Xw~ji>%gJWqB%QGZA_e~{PW`r}AGUmeW#Nl89GeTn=Oyqvr;^&iX8 z75ED|xE^nl?alQ6DElVlN9p=0x*fOXdg@N^4#VgluB!KO+AbAIbaYJ-Dj8 zb}#NO`+fLr-aj9Z-S4vf8(*&X=g~iSFz@G&%%4xe#qfT7ob0aG{Qy@A&zF7v{L2pR z7o18S=zfCD-CT}NVf<%gkKG~eKb%4T<=oGxOnqC~pF=*Fyc+pv@*4O(IlhYe59KI- zzULR}n^S)}_hW9S{%+h6FP81S)R&!{UC)|_$lt>Q$q&i#AbjnVtlka51#&zBKSj>- zNd6-^8mHVH{i>!niTY-;pMrbI(MR++3uH3TiG1J^H=Z7(a}7gb>?*SA4fhwj!WWWXK4OTpuUG}PsXEg z1?p$x^T;c|mi60<$sd=aE65AIuKZf^(sIxkHfa{sM801(_uzVOXn7vMljX24 z{bk?O@;H369QDVa$@XD<{Y;HF1W%CTk$62Gi;s9qaO=a7j`d)I#^Or6p?@fL`&Yu_EEXR*AUisPC`ZW3Ts5N9i zmVB`6#^Kp=@GRs1Aji*>mzk4|=U*nTEl01D-zbN3$?KCZ!lPxol=`W%`v`BLe?9fP zW%D)p*>kh$yPt3?yp#G!4i1oiAe%xw54>OY$KkT?W#ffqaWmQQe6blJ+cSB7_<$T# zqQ0&^&vZPWY@Xor&HVXgFWYL={~|}1;$VI@{pd>E4qqjkr*JL2Qw}btzRm*m*Z!}A zdYI3DgT{EK>U~Sud?LFLmszOw(GFiI#~tbKEC=22OLEkm`lWLA?0EWl-q-ZsN&WwQ zemr@qytpx?gY-G{Dsy`5+4b`Ub$2eh-sI<&)@Nq(GV1){dJcWy|9KAmhr`+5Gy3-) z)8~di%5ECw`_%n&xc)y`eLO}sePlb7e4=dnlYb~j_mdxx!>;&bqxIApA1|9m^p}w1 z+V~dWAWJ=YjH2? zm*KH^9)1VEhQGrT@Ig5qiO)SEo4$DjHMEFn7JM!)Sya=j zh)$TXrwVb{k$RhhN}B)PF?(1I4oGyJgtPGZ$0;nC#!j zksQyaek=J5@*+oR`%S^Mdc@&f8d;HuOQ#h+^YUy=%{k0(cXF23bs=YZaYynRnjh01KO~2@;Q_L1f^U-j)%Y~o){xD2%ztHak59pe zy63?W*wrq0WMgAK3Lvl1755}+JUb1^dHn)*S z4$Kzp`<0TwO{UX+HAM*Fu9=*vI z%25yUrLwyhucrSlobSJP;!Vm;SA4AI$LFpf$DNg%HnOGPyegZ!$v4U2J-9sUyA$rh z`fV+{=UBft;WZP$H_r?{JX|?r{H&(-buKH z936$r$g#nN$PW$H@wJWh@h4_|m;VKB)o8%iA|26U@vYU#TzI&Pa$CSsD$nTM(iMY9J#!-I*ej0N=GNY+y|8XPm0qt-8 zF`U0X48v=c+o7^y|8|d%&sH8fyoCMtL7cxH+(&;ImM0{4a?ptUMdrT&`2zB5@yBvx zsXs`5C3!_{|DXnbK{ges|3UVr;J@Us4E3GaUyGBkmQ7*&og97ti1x3oad*yHde(~7s_zL>s3dhM0%BHUz_9h>T`{CKLakxZr^$(`Myd39l z{$INX{>SggZXo@IOJw7j`x(EEY`fxn$XnpI@OAY6BFELpPdh#v&z_0<%3&4!nH-;s z>y^~>tIKAE9M>YRSSriIe0q<`QDgG2<@h#y@d=uKN8C>~w_+!|y#Fxumb}f0nx7i7 z`9!u=$s3i{`1$g^A^X#)uX|FKyAsrYE89c7&waX#`hVelaqF_G-$cGa4p!qM%Vl}6 z65k}drPz_@o-RipkbjQJ&Cw@k<3-EKo5_~(%~N;<`61clo+sW&pkD>eGWe< z$D{Bj**}J>ou>X_c&cm%HotFm)tT9NKEJP3NDg-7_qo&`ZN(#Gpa0!@TRHrcyfpR8@dnL*{63z6 zxsT@tV(#O)dUCXw`u$oTei>dU+uVIwU-|Sdq<)3!&0kvo9=qwX^Ne?wY~I6{;n~>W ze11RG_Kp`a{&Lym^FM|CVKsRlIoiN@jb*nPUq$~n_(VDUmi~k6pV)ma2h^J<<@gKw zyU1=M{k5q7oV>got|MQn<0Vel-;cYWsr6jqAFq0AN4kEZqNBTZN$gI$&M!%9Tde!) zoWw`=E>}5qxi#~)9GkezX&c^1x7VieZ5~~e9Iq$zxyInG4<^2(x((9$nY-#8csDuz z^E`fW`><)r`5_rUNY~$^H!m7iGx73~S4HXiFL%k?!zL%^pVq(BveOes$Di8u@8taU z()zkKO1yjcq*ga2PV#Vc;&950R@0L6V=}%=zZb!Ny=?!!2n(^KWu*(5K%!Ftx&k!|EkY>Z8==ftFpCC+F{E{%l&Gc-W%E$@GHsdlJ%o zdg6y(sTsM%@$`Z&PbE(0f2cgHYvOc%o=DvIlVZazNSsc8Y~qzam;PZ@^7@hV$CDC= zZ(h28LgJ)8elhXfLbvbllsFmBPgegA$0SbXH=df3EkHt=Q$t#OeH|({lqS z|FJ81y-oV|RQoOt15;iIaMh&Tlw(QOlDPC-WOWmv~hB&xUSEUf+}P zqlt;9p8H0BbbY1kBe;I~&@&S!^B;~$TyNJGEq_g}H`3)#*Waei zEnB{xI9)&K=MYhY$N#u9ak4yNy1hqryS;O@#L4*afW*o4wiipB?tgs~x85{*=+(*f zP&&PP65Db$h89blaP&(iJH zGI7@rKWi~AxqeLMCu*Mfz#Gf=%}=gJ)8%iNxLVyYE$&FJhtv7HE^*Z6g?+~+_dC-4 z@v6l3+ywo;x@3<;|uvpK$1cZ2g~;c;#gi zem`3dg2b&)8}a+Xzc0v+k5dzuoIYmo?f-Shy?g8@T>80S*Ai>CE=_)qEg9dOkvJLu_iGa; zd7Q3a^V!b5GylluH%zyuzjMGNd-q+C?LV~=R~s^-L%qc5`L15#u4P+yc;k1~H%S~! zZo9X5;$-|V{hpI@%c?!nd#|=n`^3q39rh-_f0p*A-@}sjUn&RpC9XEI%+`w%=jXFz zdRu!WPPV^EkEb6`cxvyfiIe$_o=I%)xpr^WWc+mgXC>ZLz0=m$6DRdS`nlVIJ$`GI zWPXy|r>}46^u{EPZm*Gj@6F2kukRg{IN4r4z5Yno-^GcO`7@^^PWn5{NybZ$pGy)q zZq(zE@|s?dUSB2i(`;cfKWTsZxligF6DRveFeGuhKA!k3o1b`c;-fY{*zDBANp9Xq z+_=@>gZl2y){kA3cRfp2>-m@#A#7sc*l2 z$IQg({u(DvwnvANiPPiZ=fp>CJ7VuGiIepc98BCe9J*!wj%>WBRPz2Ho&UEIr{}XW ziC6Y}YS4X&llt(C#L4UP9TgI%)2o~~`7EsIvR|}4Q=1a)2Hl-F-F}r4hxVPOq6&%VUT`ij!` zbNOd)$?^ns65HNunjX}6(anj|`74r4FI``^Cr-w@HM9K)Azs0`Wkdy z;$*yVNaDHAc4~TC;`IDDKJnVy7B}rH+i8g}9~TXJI&pHm+Bt~}f-PI#Nu2DT!IH$| zKONBYOWCbSy=q_6{fU$LiMAw8_J^kbsNemXI9)$SYyAcX6Q|p=a^iIVDw^CMNSCi> z;$(c6-cLyC_tZ_C9-n6>PM5b~;$(i@`H6jxqaV3Fak~Fsfz#jLOZUHP5m7@asB|L(-e{?qKK#L0N3r~3EwQ64^=IGuhv zz4UzcXySB#?wUB={v#77$IBge;jxL6Z9ip$5-y!a)07e|k+dRKj_Djjf%8u!~<#OpvT27G%f2bDnw+1K`mi33WSigL+9R7f%1znie3#be_rnebz+#fXOkVoXj<$&#Jc4>KRzP-M~n;8FnIoeAf8_9L+2x-fbYc5^qTF6Bm-~VGSJ?g)`Fy6Y9P;^(Yb*PD z~$<1ff z|Aars{2qIhdsT8holZY@sOL}q^?KQCV*K1&8E*yoZ{+XE(ck3H%C4k7pEf;Zdm5it zUm*Lc_$SSey9~c7oBZ?j+vT7sc^S;-`DR^m{husPbPxG#IqZ#}m;F%u2>EE-oBn5U zT|5OBrhg`$tMwZ#!mHUHJMjeB?UPLtIW&4c!~DkfErsXH{#2gdctwu#=Q{?=@kQhf zWLt;+)9G)F`F-uE1NE{WTtn_safh>Pu4pGWn6R<@p-3 zlm2(8FRVORjE|-MS6oH*hZwIqK0(h1ne%W3e32YpfGfyBO`a!We&V|1+ciHyeR7UR zb2DDW^0mVAng2U5zb78ti$^Gr`ryuTI1FEj$H}I$>|Ve}%61m@oIl)LJV1H80KZTD zB7B6F*X6!}_3=LWYqFh(e~^7XehK!^*~-l-InL`((*C`B3H_Dj@MC-WxJB)*(#fSeg5C)|B}ZC zOBi!ioBaE1tGtojE4TZTbH_)=A7KjJSS>xb6|{P_N!`Lp@ycS!f0BQ?CjWma`8Qo3 zP5)6(^`s{4`P^hZYs<*4e4)%GYs1FFJ}F1jO%FoL_1|;@kZIUlY=$n!|+phqU=Xf z&+%iM9c5!t^hn|X5hf$TO>zmfiv zPD#cKw~#l&pOO!j%@?wnDo3A_Z;|bG`b(Uu`R%~XDZa3D$R_ z9GoMYN6BlG&&5sgOVoF!ex)4uCI5u{PT6gd%^3Wp?59v)`m|(yqGhtlk=+v6hq8Sc zKPsE$vYRRgFUj^bIb1+qK>iH=8Aq}&UQEkhgsaNtMcG^-$K(zNa~aPn_Z*MDC4QXo zn#yjhY_F6}F8$5rAe2p8oI`)=X1KHRunzU@ub<;5B@hVWeuQkQX#3^dNIp=`x(6?mqkhzX z$@cCf+mnhX$D40XeMQ+`LVX=Ms3N=Za?~>QRf6M-S>TL-f&lk#mifk^D%?>%N zP5sc4NqtZkS1gq{yh64Q$#G-)KbKuo^7Bql>J97TZj!B4?!S?v*3_3Mt@<{Mmo3}2 zvKw?plG`ryAD4YM`ky&d^ShqFQ!h}q~7p)VaCeAHu_)3Xz`P#X3(IT$ zIlpa3Ib6kj2g?@w$K-e=%UezT3YND~j$Xn0W%nZfT@GH5{SUHvPPSj*XQ_W%_S2|e zj31}|DcPpi1Lo(QayLeKFoym?vblr)u6Qu{1+wFMVb7EcZ=l}DVRwA8Y&+6lN)9-m zY&r5qGk1S@=Da-Ap0zQ7x`)ULGnMJ)BSj!93I5W}KM>G+#SO_FM6TvdPE8sec&XNTk=OWUpJDx2ivQmY-a2At&ru}!My%4o*#fa)BiTF zpT9n<{o7V~ya(Se2VcwnHTrkRE|$&bb}RviY~{JComaeo}9b%+dLOQq9EiOxYEa{ge1A*$tBIWLzIVCr4Mv<~KPw z@{HzFs#Y?7@Qv)7%VxQ3R?5B``KuQs_2zc+yDm%|IoaNFk;Z!l52>BF;0^j;lFi%X z_sh{r**qw_m#Cj82aE7j@_E!pvYAf)GWAnr=c#{$yvD`JeC$x!J}kRVviV&0SI}Sf zlBC|9Pkl$(mc;|)s5Jfe%K0aezo7AgFP=`ew{IdxXDjz#X?_v)>3mIj<&N#;YBSzA z)%$kz50gz#+4Po!TgW?U|Cqj7zWtN^)lD`>=^rDzxtf3QB=cP>$J6lcf7({MG}%7U zZ1R?J{0zPW&%tA4%lK}b96qYtPLus8>SxQ*otQknMRw!K`_n&K4*F1kyBzkQzAt$f z*>sV82i#7MTjAQWyMq3TvdNZhaq4T!{vg|@2K`^KJuBk%L%j{W$14vM}N)K^=Go|evzHWJ7j-EjyL0a^^)=IJ9wlVy(*j8 zhN9h&+&ez00&d z#bwh=4*q&d`+J(~f0W&7IsQtvhsZbL3iY*qAK+}+ze#^XIeZ>pF2{3aUsVpCB>!IH zM|pUq98Qw$TsfG4ACwCopnjliM&i!0AB6kj-t^xk+a7qBoO_jQddgu-^2Tz|LUyIG zmHk1scQf*@WZytGTk(bDdt`GSJ|f$5sV}baO-ef6=YB8S znX=E9-5S|0lKoEnH2H6GIF)>NV=eD2@|jH%7uLc5Zko8@aoJRAmN=d*+kwp!yDH4L zf6K&S9oY<(bLz@=zD;u95to+333#>~y@sdbH)JyzD+C5Z@%m| z;Ze9*>m<+1kxhHqT#E};AGM`^y&N}}?PS?xliw)&^U42Wey8FWloxbjdtN~ORkA-p zeM`Jk4zYPdjxGI9b8ugUHP>MxbEJK%nD zl+NdUjc2RV|BKeoor-&C`?|wV>UjQM4u6vEoU4-kVZXq&+awM)%6^L+ts;N8t@5R^ zsogGdG?)6hay*Utm9m?RKcjvk{Xfg*0sL>---G{+{l{`t0sq)BsWAyy{m99?mpp0z#t3Lc9FRAw{l$#~8-7Wj)$Pdu}4E{~do*|pxW%nfJGZfJz z>W?Z9|5fBUyEb<^QRHGj%>H=<`F`?|vRy4_J&2$EKmD1%uiqyZj#usm%kfz1JIev% z`6jZxlf0_zZlk|6_5Ed2TsFP%DdgAw)4mn`WvOo{`5M{UY)OvU@}hW)wNI{~s>$*5!kHK1u(0>L*h_5>Lc8$~og@+ei*3;In1_ zu$-PR!6fqaI$z9G@|WafKAGcbqHO0X_hUG}o}+%0>|ekSk-v^PzvGp%dzAY3$RCmI z$K-kVbMhzTLiU$oK4DD#Am!orvTrCy`!Lt1;AiR&a((+jwvBatjqm1odr{Y4Kab;LK0e~8bcezwMUP05>b{qIixA@dm~+p9I- z=waFImJ8-lzf?AB@nq^hqrMyd3D=e5L)8DF<+)?B`9Kc-mTgDPH>}O|b+^_hD2pfI zOYrZ!9v@`9t-RiLRPM&}`ilK(IcvOfOMUbx{<-CccU(*B?{aWw*>|S@Znn?0^*+}7H}e(auf*FK z?>;#ykZoT%y`Q!X<-Bx%)RJv_e_d1d`HY9d7iC{oc|3>wP@`n~+L&f|7P+vyQu7i*3{e0F%vinYstCN2y`*X=x$+wo5?Xz-NhWZI|RFeD- z*>Jt_&BzVom6wAfx;~l1mnYlTaQ$*yo0imb z{W9mtwyJXXx1NU>a<_};Rpe$3&r8zl-yCwrcjN!Z-Q+OMo8t=1r>ShtVEJ`qe;Pif z=Qq*GvfU%QV)U=&c@O>eb@FoLv&qx_N4@3va0SYJN5=m}ws*_!FFATz_SKl*ON?*v z+xQMS{Fwe_vi*{LzwCa%8|ml$wVg%%>0Hmo;bO9BEl0-~zXbl3@x111zLWi6=Fj!T zUqYU~KVQJ}xfRskBZn{J>T)nwb|30_ub(ViC+Ci({x&&hB>4c@uswZKIT)7W(vpK)*P&wj!w%1aR{iV1z zu0Lj=95hsJT2W8GFDJ+6lQ*KCHY31Ic}`n&Za;0 z82Z!a8Mk7~d>Y9P`wDW}b|=@*b}au*a_nD}eM`n$Kz;@FPs?Fl z*>nB&7g67f{?uH*O+E5##%qW#l3jDzR*+3=+5FA*xRvaGkmGcH-whiuPh{DyKAF#hjcKdQ*~GoAmgkoP|mxE}l{JD&f$?{O97b}#jNb-cLmWb>kI zvArIowVeA6{WaRZ{x6;%^_KHbA|EH`l*Y^CfcNL79LH;0<#r>-E8D~G)A<*TS8mpDzcvQf z)%{>}m+VH$@lbq*?k~fB)c+($&1L&3_s^Bd*Xn*d{8j7YM|1zbQFhPj{ez#y`VQ6K zFQVIV-4=R(&<0!OSsQpB(v-h>rd1X2~`rpN7wq zqlq}?{o;7c`@?7gKC0u#&5+GIa-1&jaXDC~+}$Pn6}SyvEBiC$Xe;A=&ilDOi^zHiC)F!>z0faAkWko|t;_If$oiwkvq3HLDG zbgnmF$-XyEx3`g_jmpjAx_;So|8$bWm5f&jFQLAeTsU90-|PArK82UcCOy8=`}O^8dVMQ7e;zo$2mhz~LY)_U=XW4J#eiysN_-gV&vT4qERpqF*?DpvMHLe>PN7?XJEEhPO-F~?NdUwr^>zz-lFvjD$swA9Gyd6TQ-$t z|DERJ&y>v;IfwC0TiG@tFCzyn@!<=S?G<6aNjBKckZmK?+ZJ+giR|miadp|%m0cEY zL;uOtcOd^`QgS}n)^hM~*))@*_@BA^9CuXiKaykm!?m(ILwUGb_TSb@*3Z5||NF9E zNd7XOiWkamqHHGNyJhz;JQ$CnzaRA@O|CiBaBQnuaXXaepp zn^CgqC%d7tZzIPn-&K}#dyt zk8LyATgK}wM~!4VKsMQo*NOfb)E};q%s2lWyj~8gQ9oZc*o~44Dl4}+a$XgDp`4%Q zrR1h$B_4D!#FyCaY5`29={e!%-=`>pIQ(DM9e_)a<4Ae-mp z_;vc`{QP^ zq2GQNB-=0UP5%-(x4Z10l3h>o`{k@YjCZ73(jP{${aUs&@vE|%frpY$m3?jc*&gP% zs>yi4z0_}(!(7=sh6mvevSt14X|iGd_KPZ-Uwi7;%ccqA=i!FrH&B12>|4vZEy<6Z zn~WDVqJOy@UyO&5pF@2QT$cRLbCP~jQuYh*$_w$hI$@k1xm5sOR6$xJSqDLP)vRPxOClIN0VelIW6-$o7>%jR@BT7W++mu!z>D? zuN;h#T}e4gzwhzutyAuFn<3lptMoL)bcY*9VeD>FilyHejqj?(^4pCt9BEz9q- zF|p0u-(;@;RpprPXLQ9jBzd%teA@e}AC4c9gLM8=<&f*OnMghR*Nu_?d;QCmeL5d< z(}elqkn5e9srvt3&z8`C67`?R_E#ORuGqR{zF~U(>LUBkIG&%CoyR+6yBr_KT+d9_ z2g!Kx^W+~Y57YDKPC0stJWF;@;uXv<4|ibxXq^n6_)ht#`^ar*tU zJKxj#VmDQ`X?~;ZS-z`8J=a&a$!mF&Sbk?YdYt*5fz#{D?st=VJAwN7a+qF^?vowg zpKC6Zu_t?cE;u9xC8w=S0(kfIbMRVp#FN< zUy4_*OzPw6)HjgR?`t;iuSoKs0(nc>X3@Xr^(1%c_dP!+n~Kzr`Jeo8IX<2KIpn9{ zDROk|VO`J8!GGezuO-X#hVj?Q0sZb_d=hyR{1^S3mnZ$nchF|8m!HZmUH&fFmt;PB z*-QC8p!qj0LNPke2E;_$MbYNg>~rfsN*3jM}D0BQ39v?=Q#7bMe}ig zFu!+Lzk|4>9POq4>Q{CAY$tyFB|r9x_TMJ*Uid@uZTgPk_&xGNvZvm) zRDHOOe5LHu`P624hZye(%csBW&gR6+P>-gG4s6~-^+MSwSW9X`X6F{<>Bw-AoG4a^Zsvu&gbNLM&^9* za{MOs=W73(k8yjh58Lo{a{LW`0RN2F$N}$%&3^KuwH(sq1Up5|7~edo?~J2bt%Unf33j>$e{un>Ad|GtWCS`2jh&o4g_C zQ|9?-W_$IQ{W$7Z$!-E3sn;Jrhx#-0dKSKjd+~agkMr?ryju?5#nHfiH zo~LH!`=Rb{+%x2RH|c!oTJ(H8lehgiagh0YNoM}%$niMxAGm*9Lw-WJ-;6uZzZ(zz zNayRXc!2IV-CwfXxjxCG5=DPM$}E4T9GrzW$zkU2U77h5$|k_s+`pbreXbm)ejeAP zeu3s=Tj6UoUzhoNV`lkt<=h+bqgr1-2KUtViYL*35HBDfr2B8Tg8UcRe?s1ObF#ki zZt~T#JA}{QlH~rBqQ3`c=F?nuC1ulA4o=4}$H-c(LMB^u{Ft~Jn{!+zl1!Jb5`LOW%nlaYvlMnT>LYQm-)O$W`AzPeTzO{k#UXB zliWRyD{V_0W)*!tDw7xAu6#cJ`^&^Z<)Y6QX13R!9f{*EvbkiZ`Ul~rUnREhQ-79n zyBr@UPH%^*{=Dz#T?J&$Uo8fm|KVb z3v|88*?~LA!5%zOb_eh#IX))4FXg=BvO%Uh#SkUn(VG3 zzmUA0?6YxCIc$svV@v-S+=2WFImp2;%W)s--@*g&CfVOX{cm!Z`Mhgpeg3B2;a{kK z4WGmHd!y{Gl*7#Dr8E75$W77buQPV!C+n@`B^ljDQrPs>r2qVIFdZ0~vGneTtg*yDcq zFFAY|m)G+a^D=J4^O#RD&$G<;cscn2*}WuZ|AwEJ-5+?m93G|rF4_J`-b{{TC&-vQ8Q!$CJp% z%fTZ2f^1jdyU5?gJ?Q^Pb~lr6BcCOQ-;lpT{v-Kp+5bxZBtAjD7#A=4KFiGdekI$p zab3N>MgblvyG!vQIVbadqM76M8f~wMtd)sqGWhCBF}6lW)ci$V+Ma zx<+5-gOUJuMj??j$;^x%>;I5km@a=C$JbTVH|F`n)r>!h=MP=T&(QJeI^%(|=|ugVvTcpW$szM~ zkIBJhyswI&P%%#Z|$RIDabPt#VKqSJwGvYRIku=6Epm<)|TfMcjh^l5*UR z{8Dn(*Nm6_jpSYq2GhS;&b|fndf+nOZ=N}xM{zwHL0&@F4?7y)&h=yzE+EIQm9A&z z9`fhpC>`%OCU-4#y^0@Hy_+JtN9o@n+b77&>h;o2$0KDog?cXsWARSevwo&HugCq! zYstPlGofP)8qFu`qT5fGWV+-53au)a6Gt4+#gh9`QzmO9{(fpmCVP| zpUywMzZg$Hwu^Bo>fgrOnBQlZ`+f5h-k?1CU3PEELFuCJ&(FLbc-d6Nt7Ur$ULw1O zxPz7-HNuy2zjP(uFPrB0HQiqsE4v@LA8UvI^*RPC>D zCiySy&sXqVu z|0PrZ(N-N#pHN?STjH>S>P^2dtiBFr4~(WRK130nZC?!#SV`yl<#$@veFe<8cc__!QA zg|9A5#`ClAQaP9-ySl$Be-^(f$4jWc_>kuRD*5Yp1+M;^=KCgIfY;*6hc*6tvY98x z@8XibYy32SNY4F;yg-iFf3D$?q(1zC@i)lvU%2=mN$yIq|9i^*T#lEA<>dEyGRNr>yE{%UgE1J@<*Pkp+)TksvqZRYohGRJ4W9A$p5EaQ?#wLbUbA+jBh z7t4i@%H|{LXW(OU9N|m;lZ+Ro=ksvczfQhccJJW2euFM_t*?@ZC_ zWx*Z1-`gd-{=DBiQ?F-XFMJcPZ=LWW*|fsnk~hF>dA%zpyApc6b0>KJ+*bBS@YAx5 zaYOEJ-o`y-zY;IwerJJfV(O>jZoHn3p?;AZ-$GtO_eU=CdpMcxGgl7kQGb*?8@JT! zanuy^_e0Zx{wtLG9^_}p?lydc`>}LBhh_T+{Y_LKJc-B9KOf(Lm*H-5{4Q=Fhne3a z${bG(WnX|Bk$;V+$aXLND`iuNw^E<(zaz3M%l@pSzZV4;;MQ_@8TM}6k^l``{hs^c}v!#y~D7vQmSyc{pW8}J(XcgW@o+3&-D$N|qc+z+xV&iS!b zj?d!#Le?kA`Do7}uP(a_$j_1^-aoq!)t{ffzrKp))u;Y{&POwud?K%(x61x;oUQHS z)BBAovKvJ{OUIMHiPzIBbw0Q&$rtGS3NFLva{gUJeKn5veD3Eb$>BWwx*W{re*SMnU`!$Sz;by(w zrJf^4*j=?H$-}p(Um%~2cP0Wa{dndfE;~?8_4lt{F%m!im|;1%B~#S`$x^k zUr2ttY#QP-WZMpZp!G9d>AzkMZYDp@@iGGc-{Yz1r^w3~bIz@q-!ISn+mxyLx94&3 zwfeU_W{Cc+&8&~RwmPY(=IYFkm>2!8sMcP8m9ndgvW$nwu7&LGkWDlE1bKbg%#&>$ zyig72W7${5r?*MwLmZQ{P$-bQGUA6Yf_z||9WmAFi_}*!MmTZ?Rw`by? z)t7BCt-t9f|Mz%m(>bYkY%eoJHpQu*EQh7po=fC_{qH}(9MA5kY}50-LKltC z@#{Ls>GAJJ%KmJYH%qqIzA77zC$kl&`~NFBH0t*!NMzc?)DaNH*kdsvOOw{{=aoP5lRWD)}D#gzS#Vj@(u2q4}rl+gx@tsJ~vevl#zQ z>e*g?q8zb3%^caJ+j|LqS^a)CULl*-vR%XS8p!cGl`GRz>&x-)YRD1SLpNLwxc-?rvgLgD@5_dMQ|$U=yy!2@$F9H!nBO-^%TR%t+4zj!nvPrkcJo>r5 z+cz-RGrwK7yuP@F(N|9Z$#`uaa!jw_L`{~!M)yYzZkqfauv z<9@@olY@Zk*Dd51$Y#83xIeQC<*)(uA5z~Oe=FP8^qaoP^1`;Voh{oo{@p|E=^xrQ>jqqYQY|MB+%7%Jhsb4Z)%>Ae7ARFduoE%W^o+H1K@i&k&zWY^< z)A3KeN%Lj?{w&;){%UgEMfR7;wkPf>2fbzUFFCrA{y$`Q6RsC(c_IDR$?*W$O_1#% zyihiS=|7{t`dPlaK{j2fzfTT3Q$Gt|Bl}fy%>BOEFZ=f7#Rnwgn|Ano`M<|QTk@8S z-w*SC!H$vx_LrSSj{Tc*ly3ho<#hl0zh$2uk5vaI^NBeAOdZ+r{=?P9>HCZNnDfCl zkS*t%X)cH9{qR+C!2N)0Mg1{dA1t}y{>ish?s>iU?J(CLe>LN6<@$4t92Ll>Gv3Jc zr>E?=zPtW%_$vABvR^3Mk<|10<{ps^ug7);^`lhpw#dOy`VY(TO^jdZ=4AWY>#1)m zhu2X5itJmHe=f&Y;haH9e|#+-EW4}m1lhF5ugaG3%sT3uDfe4t-;nyf^w*WmAvvf? zed)nkel_Y_%i*ci_rxbQ=ze_$_20>M3f?Ze2V}pA{5JaEmHoHOXAJe*WH+38@^C15 zarN6lxC6_(N%jukfS0kn?y@bAqie~tZ_)X1K5in1m1T$R-|Mx$t;r9|_6Ga|`7p-& zQudB~6ZKEZ@%wlY^=o98kMr?j`k%wIWdF46r_1r zH|R}%pK{k(wxj89OZ~0n&8hE&FUMVFdlB{6RF!Q%<N+SIi#$hm!)4Qs z{^_!9NWM(=HOb$kzk+Pm(SM5UKf%AQ)A7Dd4!@J_Z?fG^Ugb7j&o+@a!RyF7$iX|Z zxlT5#s2?E5OYv~(pQru-**{DEkX-nT?50xx6!nYcaI);*mfb`2Z;{RYBaMWA2f2!VhBR|CW*U-=Swl&^GeN*ZSa0Bvn_)@$Y*Ocu-IjDvoCqGB_ zH{*)*w~@mNvI%5Yj{KUyvK>W^%`n-vQ|?0Y8>sJz zhcRAf*^iI|E1O*U8{yljzZBmpn_BeWgwK=h)zp_KZ$h3WyFd<0<3G7S=5H@%o$OAh ze?EB`>K`L7E1S`>uO!={a##&tM}0cqy3}7xUQ)L8W&b<(`wj6f*<6X2$*viGLXKL< zb~HKL)AN4CcTjFRD7W2Z$NMGMo4h^a^~as4zg_mcUkk_3UrMSa9e>F41^Vq|oL)aJ!bceI zex7Hf2VDH_x;BV9R*@WnW3Qx60-h zJueIHlkFb-0C~O~K0$sD&)4RW=g9FQ*)^elIp%qve~bPS)UU(ad0x1U`XzF>7e6kW zBh=rIkITNlY|Ha{{vSQhGEW7Qp`;q=N^AfFwdvHa;qPy= z$nTfkJo5DKalAkDt;v^AZ{_eK*|(8PY$b0jM_=NzW&gEoj_B`!=3DYldAdo*}tgVoFhl`@mX@f{;_}R@5_FMa<_-SKeIpGyK*p@<*nfF(G#eD zmU@maGZBv@zf*R%(BDsv`pUkC9CyRl$RX#GZ%=(2`WwlvsqD_D{&LxzB^%CX^KbpV z-qm9KFXX5?{c~hfmi~L>;4FM2^<}6pEr%z`_6t6baD?mEYCeB(2+!p630%+2U6|($ zCXnNe)Sn@TAL8SD{^2crNH!~E|GgaXdSNz`FQEQqId~e6mECOF3?`q!c-gWYPhMFL z$I0$beLlpDCjXMpkKBb{l^u2^WPgit|2>~)8OV4GW#6Cvd*tXQ*|wGK&D5Vy|824_ zMnBIp{N9eq^O}(5xgB!BV8-7h2dQVup7G5+^m9Mphstpe=F<&#VfmNJrYm`|f97s? z2hHbNW!9yF=}h-!<~4e4J@JvMxvEM$B)M!Bs^{f&&r^C#P$oclv}0pq3H?-V&`tA4+;Z8F~=o!=_i z({JX=CS9NLvgP@gy`Fk<-vqOMzOo##JZ*2(zxO6K>P?9%=F zgdA~vxxtv@&o#kUGk#e)NRQurt&;J>&WyiKj&o$YME2dur^-=J#v3cU-uOn@q}QYN za&Rl-HJ1PT{PYU)d+0AKyOGqFl5=o0r*Sgh4e9y$l$@KMpO;;lj=*{_zfAI4KJO8Q+d{$BZ(YE?XO63mwujWtDKj9p6fsVw5`-IsSnc6zjc$de$#j+Pmcaz z`CrQUeE!4NZlwA0c`)B!c6=Vrjg`~S%bAIC&T0C5jLVk``23jNCFk>bWP63KPdVx5 zsi(>X>F2RumGjcid;iGwjL(aiGn#07q@NG7a>(b`-Sx8J^DyT2f7;K%H8o$eQg*fY z{Lc?^_QkmSmC5oeneR?2C8GIsF*_ z7dhxAn^T)6^9lJpk}Dx+H=)0V?9$I0Rh0Aie405!wtPOzpC@~4=`ZZVc-0t>&wF|D zf)32@V&%E5nBNt0fL%K|U0**E+x^P3a>!qnv%BN9a?nHe-^k(hxMquF`T1-g*ImwI zf7%CR!~XQM<^O&@?kzbAHJ;ri7xMWydvZ&Sf3tE|M~?V>oa-zHw<A4~qFY#v~|<8qdhZAIO$gyYD$|0(Dnq&b2I<0DJ=R&PAyM1W>wMu>lFRBqF%G^dG&VvM*qHSuN+)0 zn{Z*07t|wna$a5hzFc@2^>K zvU@`g29htA^KK%4QO@p5K329p$QQ_2*W%T3etZ0>9Jj&yWN-1QY>#HLIa`hzlGm2= z8jxq*#^-J+j3zG4(7RzRy96n1vP|lk}-bgN-MP5?& z)A8o{dVQOQzml`^@KM=3ESoiQ`~aRW7mUG^q`sK!hLRgOyoLPx zNUx8B@dvU=Jx%s~=^rQO_n>|l{awlX%eD*dDaW0tZ$^DP@}u*T<$FuM4mZUM<=oWs zjJHV6z6`%C=Ujwum2+#*pDic%PMQ0m(sFPC`Sxd%`Q=`W=gRrD8Lzxt znAX2GH>nS)cMr(5_&NAWH>=P|rrjwj3J4>{!gN}cx%^*<>uoJajW*)Al<=0*Io^1OV^^6gvn zZ&U8qlD{Wsas6}8%TWRKH_P!ZT#9@T{in-?`|uY}C;Q7Br2b7g|1kMX^7QqgtQ`JL z{=MEC_!IPhicjVBhxZP?1m3CKmBBSMp5^t;wUe{YR&F}TCDPZ!R&wq+^beQgbMXW@ zs}lXo$musRrr-P_7xMb+*j~OGPY?t?>_XR!8~| zkar@l%=M-#c@wTj-N<{&1>Nxw+>83r^mBjbo|hf>gKn#we+&J`sUJ%JdAdHDyYQ7< zKe<14tz@6xzuqZlJwSb)T*&>kSs;hpf19`D*s=Wma?V5aAE5qG^6PYc4=4T8`A^^m z%JZMZCFES*kC<5FnP-)owX%DjdX|@;z8^Z1@zT7pT$nmXw$Cx%Fgza@)9Yop2>+%$ zJAMDPMb2MJ&g);a0zala_Z`{YD;KUM?{z}DnEh^KslS`0eDm(MAXNOxAuSPKanGr=iVd#iTe4n`xy_Hg99vYyc`#jbAOoq8~GY?Y`&KB z4pYzlXLN-6s=6P|IZA%E9301m>d!fe=QWkNpG}|F^pvwolaH74v70Lwp3d`}O>)ke z)PFA*q|bvs#%GhSl5@-9M`f4R-z*oVd2iXL&zss~o^KU>PqyyA0_Jm`oP9q2TkC7m z=V{;KCgi16U(gCOet=Cc_7*dftEKkHE_qZxr?G(2yXkna>}Sw_C;d;5PyV0&=jfkI{abSO!_>bchmL%`ob>?tmvY`1Tutw9gS)9O z&->lm@cD8yfchLcrytIhv-?m#N_M^QTse#V^Z$F^J8-$)Z?uo~{9%k7TG>pM^IG5^ z<$|X8h@9IPm(use=QO~7D39vk)0D>-%dVVUa3Ohn*_}`RAP#W8oO>Si`{e92FRAaF zceSW*EN5McZ;<19_#Qd9obg_lbFU!(p8ERar>{u1S3x#;4LPoho633V@~)K&)A@{) zE$e5nugds1yE1-C_2wML=lA`BbIA{}ywqh^Ci4rbQQu5<=@tdroTG#sjwtA%$M)`&ri2c zftK$pk}r@8%j5f)Z#mpV4$9(Rwf+2AvKcN1S>)`$g3{!5lt(3TB{{b^KB42qr~O+w zzS8BtCP!ye&+n~fpNXd{H>G6PQI3n@8gfCJpDH_SzR>w#(|nbja~k8XmJ3dNtG{P# zmEB*m`&rKY5BX=ZJ&Io?KY|~T%^{rre&_+*iM&vD{QiVFi0diO`VJ~s?c})NbDUnEw%|>ww;$tY$0mahp*zxWcxBMd{yV) zi}cTw^XHP!kfYi7VL5vm_2?CE{AJl!BcDfq1$>*FUmiD6gxe5P#r$>yl$my;fUTV*?l`d4Lt8}-ZZaJ)@+PvFh;KZ)1KIZxr&@w2jf zTh5)2*U9F2>e+rdOYsin@iP1~<1MFu80)(b^ZP~x^Y9bOW0r4Tm$OrUDi_Y7{&U%; z^9yu-1Zh3Le^i)WpF-tXv(#^#{QtPR6L6cV|BvGdLbsA6vW-!On+TD1 z5<`rQHj5^KJV4@|JCz&dS1`x`(1nO z;q0@|x##SYKLwA+xm_yT_HvTQ3BNxbEhF!(Jp7#gd*y;J$Op(-t8h)~S5sd^&cSw@ws-7v zey=L}j`~^31OI$BO)jyS@i|`<{D@ysp8ib#Tsiw!%=sqp&$l=_NWNV41%~T^{c=`e zTw3!tTrb#54~24qO`{`Em2J-jQHm zzLN1D#0~HqxkMv;K+f?#kLUX)%%_taw7}!Yuf@y$*Ji(*(~R+p>w3hrr2fCJ@A$p; zJYLV+V(QQ3^FL<0=9k-s*Ozz8aVuU=o+k&_;%BtIOjCTT9QyYo>c~0%{fJ#UKJu{P z`2F|&i-(lkMvPaLeQbv=korGN$0xfQ&Wcg zGdZUi{#5p#2Qpt${}1m^eJ>l*XL0=+rR&|P>zeRJ@&}K z>9~fLAM$>e=_uz_B!56otH@@CoYWxSCtJV&&eHZt>rr2s?bR6HCrAExdrr=3LB0rc z{Mxm0$oo(Bm>l@eyEW(d>BM~Qmu*MJdyU+`zp_rw^Y6bLmXlu8pR40F>c@EPOzW{({E_oF!f=J9@(DXhm|!Ly84MNVH}ye4wi zE971A>*W39U_SYqat^ke$@8c$tn)*-i2AZ}!BTt?=abKVeM`JVol z$amn6+)?%U`M8^$w_LW@%jP5UGIH_(`F^cW!TaP(}qm^z(i|4#%G< zq&#_z`d``JG5!Wmr$1K?{PEsjE-{IEUeCw={oxYI?F00el*8fF7m@St#`!uv^84el za!xdRS$ng6wN zHa0iNxqiM~$r<0=DVvj7pP~2^IlN!aqTh~|b#d?_cVGrx^;b}`2LiTbnf5!vAIEPb~8UssZ|$!&G)kFU$+ zJdQ_mjU4#n^?KPK-=-Tb!+iV71^)Qtv+W7XGXs=IXENV@)U*D{opQ|fNqWjD`!|VX z%l0(np+BB_E6@I0+dsKkE?|F!ZRLE9&!j%}huFVW<@9&@&y%Br>`%65@CW&6%0pjY zRL$dLF+ye)&AUqgC{Cekj5GlfQI6G2fB@F8lQj zf8>1gJ^5Pljj~-Thgu|3<%&!#&jR)$>W-ZoFGg=nsF9OB5&%x5~i*##>80$Ft3s3pn4H?_}%G-*oX|6kM3<3CwNJpJqP4 zxn+)f{gdPWUV2y#Bc6|clJoidwwW#mT<_cG<;cJO9WNI&_s{pTy@v4~mrFFjL*$g# zr)H=e``0)1<&f8-rm&pN>mjq?H8=mLCgV+!Q~&z4zicmNKG(?k)SGg0b{%p-XWx6aV^af*iI|z5RrK?=^DNp7Ba+etFkZ zUscX!JljdmVf)*ea<*UoYB}Ncq5Vw`u{nqBdo|LUPki&cBVk zpPc8%A1-J0A-_dVxPJA=dv0IyH|b}2W|c;devC;p##tp0vj`Ti641ju;lAI|1e+18PRxAC4sE{|TO zexn?`i1{tc^eO6>9CY>RljJ$F8AD!K4j(07cfi#LkCD&BnR^zTn4cXa+p*L)m!k=| z;CI&_PR2jW(R1`aE1Q|P7k(a>lI^qfuiNj&Gvmo;%E3eA9pq>j-d^D9liPhR2ibV% zK9{G>WqXetH1hdg<@LyW$U$8^^f#C1HKD$e9A)7hzq&lEg1?v3GWbh5E-KsQa&qLv zJti{y|8qImjn~W3T6~0jIlheLC$g=p`I@=pPvUuan;c?WMeA=~BmYabV{sQb9)`D) z_r%NPoE~_XoMhuR)Hj#yQI=nyocSen$oFY|OgZvVtY1mIUF#nf#*fPJUnlO-o!Ne+ zWwRH*@{8La$xpb7oNkltjy*27-{9qP^a*}TP8ZNWLQdx3s&e=&-o4w67fiyR$Yz3U z$H@g_$nTNuW4I3ekKolm>v*~!$8s=Kww>kpF7lnbTz%XZ&-ssUlfz#0ANNEGy%hW%z&CSogO#RDpID`CN*<|j4 zm#M#0PAB3WTeW_V<59AGK(-6WGxuc7^e1xAmwdJy_rPyZ-TMSZTx^7&Y}O0jV`w@kiQ~_ zQ^}jk@zdl7zjyU%<{qt?^?O$~k5m7E96mr^N)85-|G7c^BgvQGM{$J5;+5-NeVj}G zDA`OSzf?{$_vp*aXWKegAH0l5%QnV=9A)m|ccR{|UaR_v$@0#T?JMLvzjFPlKc2?O z;TzPqknKGD_!q7|m&b#tFNgl|P)-gGGXBrYU48f$UL*&{@d!CRg~wwf^3!-cw)eqG#6Lab|5iL)Ha-vKn8$;;n11i&OWk$mpGPiU48rx`4HL8#pB*{c{-E&?Teg~NjSz6@Z+)>kMDU`{h52RXV!O^KD(UWjrr_s z)ct>LI?48m1lnABa^>1-#IK#{?t6xmm?g*oa^#9 z^P3=<{$6rUfG?1P3V4$~I}n|NcgZGm&-@ep_G>xG+*3a@-Wci&k!Mq%xhH?7{-4*~ z@`KDh{xg10wwd1q$asL9WPXz%f)7c8<1@mzB+Syy+z^FY_BH_1}Mf+Q<{G zf8Od^8E2N)RC%z2`n|JUed@;>Cz}oAjpe{E|ECvSz4?mq+RN$Z)NhYno-D(|appHv zGTUd*3!2|2nC~i@rLsMZdItDChd^dFTn{!o<7En7i4||DYN|s z$l*lBD@#6&eEZ|7kID1oa5jEyw9BJ`iN?EI&hCvX%BD3w)oOjt#lH>J_#Kw2e>=WT zHm3}8dD?)ylx!};Rpq!E^)=<>Je(zmXX1MJBpl)cOPIfG=E!D*98D&_PmUiWe?U%# z<0s^_FCL9=!S~C-jhOMwwfGUnyF#`P$x#hFk^a*7c{whO7s~eU58e8h_4okZP5rO3 z{ZlqSk{7yH`{#RHTu#2CzLFd-!&T+rL+UHi|K@-EGOnpSe4761jQ1FME!hqwZzM;3 z$ve{D6%VAp9Ue*Eg8nJ=Uyfgu)2h@jk(2Uxy&ML(b-yc_%O%L2dw(Vt;$Z>saM!NpA4z4ZR z3-R@GTvoQjWm5{j$@r(@4svR6s`;iz^!G9|R!$D`_p@tdv!DDR+h-s7EpogQpTYJ_ zsehF1zXFet6Ys6szsU~ryXABb9yLVU-!K3A!Or0^<@S_&oP(3KKIS4hyaV5rKkeP@f`A6vUv-a zkfV>OKaKhozE6V06d_eVPDqe@D%l0`r zd>Qv<{MYeSa`GlVoqVBeHn!9L`;h$owp#yXxWAn9Ic_G0%jw_R#??nF$S2Cl7vv4` zO7ir2EpHY1OgZxIDBG{8UwNIYxB1jRB&XQ!Zte1T8};AGSsU>=vYCqqv~u<7V~jWY zTFs{;c_5pnXXN)e@Kokt|W)UsNWiDeFu=ovh~MnZ#n2p{ldmt zpBi|QY^vana(X`F9l1vHKZ$&?Z1(c_druBF;E&~WIsOVS!kgsyWxSJ|^Mg4qCy$U9 z(tN_v_%t~lfiGnK{cu;z`OS={KTEltA=~oQzavK{k$*17yEz|!hqvMa{0-;tGui(B zd|y{iKczmK?eCvY`pe-$`tKy4gS*Qn#?%Ls8E?4qcnrQDKZtwC;ZR&(PW#BV5{}4^ zYJI}4317_P|54nEoa;l&`5_s~c(bV=jDMDsL4Leu?(rE8B=0NRJIKe$$*tsh zvgwA8$Z;p?uWYXK$#rF-?M zACt{bd)|9+E|MxYjvH005Tz&c|ug?$Hbq>8-VE_5tBbT{6%B6pp zY^T!y*QG8uGswrw(QD)v%XS|5)+{amZSs5MWHBxx$DiTk5?61(q<@ecd`DhE4mabq zbzFV$GaezQ1-Q6ukIH6IZO!KtUXS;|XW&!hz`tL!yq2qv%9Br(lgjwTnl6udzsRr>LUQ8WvYO^QgZ_f5&Ur6Wf1w<{PyW$GE>AzjH^@mo_1mksJo4{1w3X9cs9PoPGoU6w}x`6R|%i#yqKP{V2$P+nO ziBs~gsV}6*TfBz+N*;gf$?qlKL_S-NcHwWSFQERYYS?EyJxO8ztbt?)+KW>de4{x0|xIqi!l$$|g-|6Sydkhh|L zifp`JBEO0L`MA5BEX0f#e2gDe9Kz@20} z3=fn;i-*a<OZe`xtv=-{X=qa zDxa5oo9EwBd|vKbIk^C@rN1)XET`3QDreWkd*nFto4=XQI~1?v9xq|$H>Wdy@2@Vq z->}ZOzHI&HA3Mpx9rX95-+%shoE#4#pGltiP29}#K9`OE{N_RG{pY8Hz|AN1pZ~l@ zjwjRKN)G+!y>FnN&+8hT{g&!&wsO0O{d)Zwy4&QiI4-U6t^d6K9W1XB{jbVFMe6s;@j2w@>Uz#( zezQKaz3Xzl=RYrehwOf{K9i4=(<7R{`IPzt_&Yh<`z&2g+Wo9=d)fH!2aF^?O8$hL z`p+llQeTAmO_sxAtj|2m=bh~)>d&Wss~l9L{u4Q_O};?R;rkGFEcJD%??HVdTw6|B z(qBYQ+vB}jf5Z1R><&4+m40k`W42Fx7yb1#UdZ=DY&+T9N6vhV|9;7E>L-w2s@DtY zQ;dJV96U|_tsGKs3-kKJe?O&yocQH8#{C)Z8QJpv6!Rnf-N~=f>m9@TnyI}0=|g_H zUM~fAGoLJ8Kl$&&v>?Bi`n%+06#hUqkK$i3>ubvKdhHp;?aUjL8*xeMTj4*neoAGlc07o6|RGCBH{^Tla;eQx&Q969#ihsY!6d}7zj!QYI3P)<)~KBv`o%d=-= zBS);iEiapzaf|Kz(mH^85QdIWL#` zVtf8-Y*GP;rYtV*VG@S9-A94(f(OZ-ck-frhlAl7vgntJP+5% z(*B!6|2R1%x5Y1YdEom8$niVWua?6_j92C|SD*5IJNu#X^e6Hea^%0y*ip9o8Lx;O zAH)kaAA1;Q%h6F>ocSM@%~x8#rZNt_r&#N6U$L! zyqWwue3{-aO*+s&Nsc?>4dgfCPQ3q0y_v@Qui1=u4)5Q3U#$0c<1X~il_S4DkMjO+ zclsZ?%B_#RnfgPr@!wCL*}&!TP1HBO+Bx)oQ#PH+vl_ZQ^5f-Ue>@aw^*M5Q z8_VA#2R+GOxyIEe-VZc(PH!i#5<35TeEuj~|9$LfO_UF${^_Rb_uuF4)XX^^#qzhv z!9%!lbC;X3^beDhTt6N;-$%DoKL{a(X&$Cr7N0?JMV%VEOcCpF{mq%57OZ zUe5RPT_NZA`R$W)*+1siY`47%{PFvVY=33`zsu%F-24VtA8clQrpYOf5Bt3wZlJzM z2UnkbPyLN@$o(fwJG`3u#&X^Ye2JX(3H`0*bP;)dJRd(S7d%V-Te5wMd^`C#oO`2= zm;0#yP|ouAmk2v*{{H?EU&vWq=r7mF<+>Ija!9Th2ei^-6htJ}cyY4W{MIu0Gm8K3opg<5Rl1Jot|5o6)jajo;|5 z{w37UyTv)jJFADhnEF+6)|+)*)6==YzrH%Vmvi=H z<@WF$%KhunQGJ{f|9bYDzRD+3e{z3k^CbRzfO8f$-`(YG$B|FH+d1@pGDrR1r`;ou zSG}n!hu-<*)SE$rG``P&k&VBezi+U{^Yc9>N91O~aOHmclo{z9vHfi8`<>%An9m_O zdL2LbfXl+kbMtDpUCm&(EWs<$6LGp6Mwy3Wvc5>FZA_tP=)&UBlB_n&x*U{a@m%aH;29Zm*WjKsom3?^SYi4SBigu0Hjz zHy)LfrsVuqY}x{UHpA5iyq+@EpLb6D{fA;X=tzCZnX1QjrtDu2*itXJJm&ReI9*Iiy>9_};OIbJN=#d6*UyIr6`+FZjNH;IA)tzU%4(u2*fpMa~h|hh~Qy zbA4$pe^29=;d*izJ{QmZ(B*MM*;ZTPY#NjIkZnlL{Ti~Hk&mFhHTgKX;5s}{&TmTn z2Xdb8pDqXOsDEFM+fu(#PFmvImb&@n`0*Eir1^KEf7Hjyd*PvDB=$o5q3 zulL&;m*)8W%ThmXopXMGPhanxR;9j*oP}+!oLo%(Avya}>IZMo@~~ZuxnH39 zQBJ*2``*ecnJ9)a(FL!-_+IT--nOMxudCn_XmyV?^oGoyK@QdPia4ulZo`-zC-m>@S{IE zCv)(oUC!}RJnd)ayia6PcDHl1lDzpZ&beE0KRLqYsGRka@Bhu!XYZrF&0gp5DEV&L zm=pI8&HR11`97EDV>4I|P9`t1-{rwsviU?#%aA{Iz~xbOyyKvAQWqcl!#Tc|{u_@t zr=9T0e>$6P)NlC9IqFY-`ajA?V|z^bMCzY7?(FV|npvOc@Obhu^0|-F|GN6^y||dh zx3}WUk7~TO^dI+VMl&e8P+Mc|WsEwpIB2UzwpU|M&BVZDmt}JXa3Rq<@2KPsbI9X?=@R-wBr` z=lk#Rh2(RUhyL@8@5!by`C>V}p8i+J{r9`a$;oZxL*=+1zC{lCzPM>hzyH2tdHSDV zd4Fns!b$YcmE$QmTTXKE4sE|+JnqZ(eFQ&0SlffoSDFrTFi5#QS+)Z)-#?9d`|-&A z_ctdoUKi@;%gGJYZ>QdW9`tPHcMW+LIl7eo|9?E3xD9YAV``_|JJ{4L?B<^2kJo1j z-sZXY@0V_9lBs!*dj~f=@&Efz{F{8@-%BU{WgbTt^16QgES)E^<#-L=C*@IkvI+eUL`(XlkJ#F{&Ve&8JcqDlfjsspoMO_rzD| zxJ@JKzvj5^j3?i#`CLzZfgD_myA5}F*c309O?SPI5;ehRKkDk!Eb8x* zgUWcU9G`+?+58=AeU8Y<9@#{Xx$*2)9Lvdi{GlA?)4xUzKEpf77vl}GeG}(V|FUd` zkWV8oLq380J?1wWcafuE)EAM{0r)j-AJY@xD%;NVSC+$UyqxXbiu&Gc?rkN8xa%IUEewErqkp;p+2lqP__4 z+qK8{$)+Vfgs)+|YoB!eQGIgmYZO-}?>^4u$pz$NWyAI~YvuHG>YM9*!0@QHm-$YP z58#dy+;}0jpUa7Nt%)u-f3m%&$Z-*te^3reusrTNWh>wVPiem8@j$%~7@tf3e%Y2L z?>5QR$IRbOmaQS*EeF3d|5lS-eUvi4F?a*{GCBPg7n|bh!`p;@s*7Kjhr?lKPD%Q$?H6?@i@NC z0DLX=k6?ek*(;~b$xof>`qS$fuaO*dz`1hV1!ukB>I2SyrlQ{W3;pBwN7)Xhe#MKf zJ{*N_o8=rmAe&2G((>&Io5%Y7)bwTN?9t?X0RUx%RygkeT&<$2x7N6Yc`iBv@Hebr=Ks@LpmxnjwT8VSg6z{=xWIN$wmj@S-cmG87rN|q8 z>YN^%uKjh79R4NS$#QfAzbxCsc&?mvfPVkleJ_4Wx%m-aDJS3HGUW5{QOz%U94B(x z1HXV<%Jw-qu0TGLeBX20ALC@RS~hKD`#O0oIeL=3f*jnB&yd4Aspr1maToF`%G2w} z+tc3wx1+x{ZY{^>|8E`?!z~%_k7?Q;o#g0e9Lm8qd^YtT3S+jV@}Q^@n>VB=KvFP76; z_zgLpB-?wbzZEx>?S;4sc@bPfP7h4c_-BxB$@t)?*85L9o;L0~X~wh4?J_;Sq8#c6 z%V}fW375s(M?L*xvc~^ik5}`VZ1>?$@%Q+3>Q~FjbUa25yHMXkj%whuWqTU+Z|eM! zte)hSZ(GVHS2o8v-*h4WN{%liA0^vgpH}}(viTGjmBVN7_d34?{bVzX=bx*vm7_BF z4mmOOHz42nl(ttn@-Oi(I=?0h@IP{D@d3`iBV@aZ`hoaE>Tjoh9`1%G%0V{uBjl(R zd2bxzn{a*HQckkyZzc!T$m`3tBEF2gEG{8Or{jZqeoYF?c7vRIELYoSm7M;KACv7~ z+)56%bjU+rM>v6wkqBEN!*a@#nt#OU5}cDc!aKB;}`I3UGGK{WLr+x$L4N1T&?Tr z=nnEla`x@GEP1wU+Uk1UHX?sa*Z*Nn^6h&45S1fu&g+fS$v@)t%kc?%{Jbuw-kvHrq{ddmP^Ya7bRpk6f@rYbKU+-bOTl9WN_!IM){gC?WYx|ow zACxSNAKT7@B z!CKxJ+y*~R{qKWZo<4$KlI?@IzZ~C3eGY_`$*cG{BVvN&vYYyP)<7HQgV0` zzWZ)hA9uw+40Mj@H#6nhwZHm@ z;=Xd=eU2P+zBAwTbM>YV^&{o5C*xlrC;oi++MTXGyp#GY*`Gh{vc4Mc9{R_~iFZdi z8czS2)ZdHO^l|+O>tkZskemIzUGDd%T_cAh>7Rkw-?j%H!F(#p#&55m?$CHSIhewHy2*AXt|2GS z(tqf7H-7LGeg^ybbdzJh{hG-L1-N;pTEw1Fz|!{9@cwPHW?Rx41m;`4HJw zBhSK>WwXD#t546zPs&j#>Z{4&Y2s>upI}Odi#DSS08RA z?=43^;VN?aE8g4D)yD;RmTV8m<~sZbe)mR=e~9{fJ7^`kI9MO zzBOd)^N}~WdcS^Vf42Jle6N=yKfhXXg6#|KU47)|S6Tjd{pPpRcweLiZd zocWota_IMGX>yJiGq{bbkJ($w`WrUFYi4@9@)d!I#XZhHO41 zzpJ(CmymNG)MzpJ$W|^-^6-&so%3c<|Am}9iJy_9!MH1VME|CiT3%b6BPWgV>9VO! z|En!reN+iQ(%d;bgZdwvDKCWiUSMkQ?xrq}Poe)jIXapAnI; zAxFRA&l)S=NqsvxNy+D4+-{+uQDv<5tu+X8k)*KSVa&$fuIuj$a|ai~6~8Jmh~J zjiUZkZErIH7t{Vo{p*{Hv_I_`oPTR-|Hlt-{%tLX{(A949WTK;^8FlN{`$9-j=%Uf z#>?aQJc4WM`1aTDW|kaR;ClVIY^!rU|BxOp$<^fV%E5Kyr|Iz(cfk$i=nj0RoDQUa z9QnQYGue*8>*ZuB{r|}EEPNT~gFNbQk>gKsADvH<^LW4Dan3K*aZ28Z_ZKSYe3Z7u zy*OWWr+ydtNF3;VmyDynsT@whH;~VyzM~wxPTp3wdF1uvbP+Bo$4hX3ImyR!;!6?{D2L zn{wnGa3%U1$Z>UiksQ>aK8L(69xtbjsDB(c!<(pYg-dDvX*+y5>(>Q0Wc_+!zQ-C2 z#616*A@~oLHv;p$({v_Ypz(rvviU_06U=?p%@@?aqvv1yGkFm`f7@fYwH%h_{mDK& zzt_NB3o;_3;9IZ{*7zP!CAb2&3(YLO39`l=j%ee ze|{t9>r;7uy)x(P;<&b+U(7AIB+pk}@vw&O`76fO$U!&qiC63St-J4+ZAaNoYvA&r zIc_AUS5u#RmCNm=xVD_u#G~q~-_Q5RmCo^BtnWLr*^4{N(U172dagd*il4^(J;C;o z!+i2;a`2gKf4ai;n??9*IhjZOZ1Nb-$Ino|R*s$`-z$et;HlJ)#z*S9<%Oegf7uSl zyDxWnFj%(jgwFKUYrL z;WsW(eRIaUUrt-&#&Ucu^=FZ{z`xXS{mC`>4LNLpC(7|9vVBHQtCC+KN7cxSl2;&q zsJ6y0PtJXM;)^i%{rPwNCAD0ARF}M?Y#ZWUa^SZ|!NnTil0Pj+lX2&oE)TZJ=93z# zKZ?(kgGwC#rK>B?mhF~m&gpG9#yR*wIUJ2|kb{Y`xqy5so?F$8XQtzxa_}5}yo$@? zlllAJ6LNSqf8YCsycEv5$kj(>sDDfjE08aegG%_goCNqvEkCS+`^vT&o`Y-1_Hx#z zHu;lsS`RN~{hR-<({}VPR36=m-*@QL3^osmnvNqIaApQQbl zzD4~(<>nK-L$=>izma@9`9E^H4;R&V<{w;z@lWUPyEn_xIk=x3SHus?K{fuq8`FOY zUL+@tsUODi`4G;P!(2Q^PM@QHA^9x4S~d&tX4!s7KljNF-o@SZ_(=WVtH2= zUpP;W&(q(>O({LzY<2!#J`7)jx8XL_*Vf}VZigS2!}how=Zg-wC+>w8%jRj>{w)U| z;mdUXF@^a2K`+ivSKxkfz~>k25IG*m=NG2P$wSnCD%&ae44prdxztyYbC;42=6rhy zzaR&t`FzJ5^6L0~IcmV?K~gzsPR@O&%ni6E&lhiE?h6&~!{hb*6JEgQW$Nqs%HGK5 zW8RU?D13>Y@1j?z&ru#F_!2o>ir>)qvCk{X=2P;qnqT~hYo z5wFMlc)VcC<0a+uQg#B5pG_=(F!g)z0699$cwJ;;_&nFua&Q_hE{7%YTpsUb@oYKa z^I_&bIrX0(t1kzasows?`RG#mbL8j>@{2e>T}}R;&W}+GT$l6bwbVb%^F>?yC(k$S zsDF{?qZ@Hi@>}rJJm1}pyUNj>_^--(ejI{dlLPOLcz|+yzMS@={_P80f7+A0rJRu4 zeHXag_~lKP?cMa>Dkt8j;(p|>2d+P4`Q}V0-zeGcs3<>4 z{(&4lgFDE{OzMxG@9OO|@|R>YgS?KMOea59!PO^>XIIGPDe_w7T^@|Vv&%V~#~AN& z*^bBg=P92=y_LhMc=Nd$?^!%Vwto2+$RYjq>$0vsnZo$Pu^(@}>_6XWx~o4LL48Rr z-*P2h=v%Rfi+4_Z@yi=6o5{YKe89!x7atwVh!>MJtd5se?5hZnK_d_L0-lGCE( zjhN5hoDcqH`|QR)u|8|?*Ru8J+b5{!^Okm--#(mAcAw+6pS>B6FQff)3a)&%{1VR} z)k{0ax5%cr9NvWAFQxIk2g*S=@?#}kp3-m2$U#K@SqYaX*uEm$+sVg~-+==;>?7M5 zXSx1}++HQyp5$K^cX@Cd{R8kIe7udPV-+e0m!|6YGI>!_B zo8*7bp9kcS^RaEG{$LjM+vR9BuBG)4USs?LY@b*0=W_BA^|iHq|2==+!}j*i58snN zPkjYF9wNW|wsOMqO@!yOyj!XN2)C1ijkvyS|G*dGGx)rIRXHt(yUFpjc$A#*d4IDA zPbNPghabweG>`vZ$ZKK$eXkEyZ%^U-3d}Dp#rF{=YkQez%g86o;U&0%9M@z#|K0OT$?GT&_-xbEy=sd(e>oBaW*c_@%SU&E60`izH|xBCsp}Abrm_NO@0-= zlDwrHHY2|YcOV}rC;t2CW8`=M`Bd^@^v{r^hsY<(>67H&kUxT}a6TJBeG@zw50vA6 z)bo6t^dkREx#>o}Lr(an^bf_4;`?R$wH!Z+ zPtp0xJVAW}u3yIC`#GOIjpxe2G(48;pH00< z{sU%&9Q*bAirjDCD!Lv_`p|!`Y;MO($ZutNr|9}Jz8SZaldjZXCujE{&z4ihGu7$8 zhx{Dbuzk%wu222;{93k?7(b8s%%uNe>fgl8<%s)DnE9;lALJ9Yy-bS}_rA#7-y%zn z?!aGb``d?cTlUYZvN_29T!J^s$(PjsAlrQM{c^eSJUg2bPN4mfC$e?vAOQol^Lv&nbir^rj|^{0J^ zJd4+(!|^q;8G?u7p7c+W({AJo<@iSYlbp1s{u?=HM!sGSuOdHF?-wLlw76a#{lK)cU4Had$cThsS3{IrvMq8@0W|gXE9M@ot>U{@F@B4!*+^ln1Nu zWwKd9{}CMz(L3bNbNtN5U1a+jF2?cm0{x%s_)DkYSsagJsqZI8qj5`oAN2<~-iMHn z<#@-Yr|h4f?A_!%ADZFx`{%#Wa_)_c|04D68Na5MpIk?NTuz(d2CP5#hp~g?q(1#` z$w6JbUyd%J|7`XL*B`c+_Gfq@d9IG9=pU|U_}!-DbJ<>`_wVxGCf_UvZ;(%_q3hWQ z-&fPwcE!i!i0da?=VF&*TZ{&Z_0=gUhLZ5?9B?YP&o=2OpR1QLY#B z>u5eZ@YF2l*ndBp_s?Vhee%wiDt}+~W~ChY>(!Z;X*|APZvVVo_1`l7n!3)R|GxOf zE0phKynp1JAE~cdPviZBUz4NVcu0Mhn?LD)`YO37+hd)Z`cmM ztNoL5J!D7AA=gi~gB) zmBWPm4;^3eO4%%xbG{+xcW{z5xEaUePU`*NQC44leL|EF^`AOa4#Ki!5jD)j=x#-|0O5m$uH3HnvB9B$M3y(njGFu{}^{>90)vZv3j8ay@DO zVEpgsZ^!4C-oanVk>8$Y>hn$k`_Eh=M;#fzy_}qh?;`(<<872|Cg8{A^g;X-xqm(Q zE&b$%&ljgW-pnaY+~X_d^^&bC``1%;4CeKLT}l0mEbmWp|9pNyQ=QLv{a`y`f4{l$ z_*3F3!%Ogo_)6TTwZ?0Sf02_LWP8DNE)V+P0dhXayBR5)k@PQ@Q-8f$ z`+Ck8c7wBdfclAY!1cGS*g^FJl-oCC+n4$lH!AOqe~_(zec7g? za(_OXE8D@0cT|r3_Uzlq)mzSwcC{QmM*Vp=x!hRXQV#s*zkM#Jod4{QuBzvJX?~Rb`O|d2+2xVnpI3ELJ@YYp<=|G9 zSF*dy^|8a&*s`&Tz|s+&8u?g*Qam~m#5y_W&irfTzQ-NFJ}22 zZg)1taoEc_JPjX{)03Is_&Z!4oP z{-2X0?=}BxbIzTvKK0{ul#M@s@O{Pj0OM^|9_+&v`f0wqSpKJSvYGrp_XjnT&T;ke z9R7aLMh@PV?RjOC`@e@AE$tle_ii)0l$OW+ek{L>old0x9OcOv#&0N_hsoQ>@qOf7 zWP1;8O}+p75AT;nw~>EW(k(yjjGvIr4YIvj{`c=oyGywGuo3m6WOEhuzn!JL9{x%W zs^h=qgufS?HtLU_PUvk`w`tjQS;ZW*R z*}PBwgB-6SKgj;tf?J>M*3bNoUy*HTw#T{J-=-|?EhpviOgZ%TKPsf-C91&oS)uWw zoy@1R9Dd94=E!l3H{)5<*Wq~Menn;k%k%z0PUlm9ik6@7c_VX7PUkXy#j@I;J|7}S zE9rk-_J41+N6AzA8=kBF->B#PjN};k+scz-Y@h4SbM-b0mn4taK6hw*fBc)1<Ugo0;uHKZVe~><} z64$~T<@5^18!MZu@gM4seLhZ3>e63c4(s6;wfvaeUL;38f0^~Yl=_OSZyo%Sws&#~ zt}Lg1c}>`VS1PyPX?rKk*Zg<;-mUQ??q_Dp$?;EYuXQXB+j(-Zhn)8lqy6mfKzYdD zXYI$DPx?FgeX{wD{!-*S@yE>9|Gk&@x8k+r96#wdjJHC^zgdAFQGevm*Z*C=?VRr# zb3C7;^Hp3Qca+1c@N1mk>ftrAt$_=1{wgQiX1F+hNsi8-{v@5>lhWi3IN#H6I?Hh# z^7gnP{a4a|E%~1sKWvSk!mX&UC)?}r3eDem_mKVl&df!uuOF{~=L7Hmzx__!n!B_y z4eg0rahp|V6-wGv%W5*9jY*oH_^#Rsn>mA>Zi!z87G#N8E>8(m6Xjp^p_?7R!%CD z|18^TLG&~K@FnuS%EPsCx*wkxx#flD zFkS;WDkmp>ccJMXVHIHHpR#*-lpXjm(AsJT#CH4oUnW| zTu#d~-ZET*`U1@U39IyU<6E{@*zR`ufY#sqBZoi9_T64Ck2jKcyu&&8hPg`m(HMNIZ11PO3;hFd2Yd@|O?`VgX)FgVK5 zO8yb~4%xnsEB4m@TtIyXInE=`k<)o{_>!EwD%;OxGlTlAax|IxKjd%>`B6E2KsJT@ z=y(}SeP!9+L46ZB=|tX3HrJ64l!HdHc?j1de@(Vocpa`ueWAW?`C&CVtR}~ma6LIV zkNPImpGDpYpGux1r~kaEbL$xL!}uvVD3I+q@|64$xnQFl-Y=)?FnPROPM%kud_X=A zzb)JM=$|c{g|eMV{T%A2%E?@uOa8tbj3Hl6zm@GK^84@_`Ula!RZe@6m$*~=yN8@y zE+@B;ca?+g^iP#-XX>A)z8!g<9MzRgg6qf@r&Y+8(qCRqzLf1bB6Iwj2Aq^+~(R=D2LTP=E0Nmz&PicgF4H@Nqe8LB2z_SL2KCa{XaF+)GZf@Dp-S zM-JbVO?A9pPRn64Q1dB?tI0ue*(@hNFwbrO@E`IYWLx=e*B^f?C)dbkIbI~&IrwKe zeHItVQUBxkLOB^BhyBQV;l*;)S~mZXUnbky_h^02!}a8}4E^Kf@W@=P&wBD5vMo1A z{p;kUn;dUG3U5EtaBO(V{H< zX3q05pWDy(&-?B9dc9{kbLPyMGc!lFr{i02V>!No`cvdWZ0pDcqm;XHvcI1Gqv^kn z{7CAr#s4w?SK=d-SGbJ+{VZ>P@;!1fw!g}GgUDZ#-KDZwCdd8cs89~Ddq&Q`Sh;^( z_I+hLRStVIo|9cK^2u`1Mf6XQ3%kqi8u~lp0dihv+)WP1O()rsn{#j{)mvP2A^mOW zZ%^J*?%57Ekqg>Ve}-IiK0ZY*J{MP$!*l2_E9bQ!KgjkeOJi* zrShOL`A2e5L%deDI9M%rYNXu0Du-vvZh>sDohKKarQFY!3$y$hIj;fJ8z6_LFkUY? z|5W;0$;BsO-p{rc{U?xDCod!08nXRI`-h@xS56Nbj9Aei;Hv6e>M*Uy-WV!GU z`fJF=zsatI?01m=#r_)GUF^@dk$)%We=pl_<>K!c?_)XIg5QuZO^bYw&a?iJ9)1LaZvTZ8Iuanm&UrB#m*)Nq{WjUISkCOAI;R`ykgnBBKuvKJlsM366M8P zW&5fe{6OyIg3aV_$VKnSW;I?<{cCc(3coJ<=P>>G&&ZxU|0%py^=8`PF1(L^mM61) zS@nevP`^~ppMnczw}So!3e&kK*6~q=cC!0i?s*aU4!Nj@?AMcDiI>ZEDD^Ys3RmOFvbheAm)$6wFZ=6d zH%cxTCi`A;!1%t6TpUt=BKbA4ts?hi`o4l(M7{Y>$CKezsyDl3e+Aw_-Ur9B&DO{3 zvg=6xv|QK*KOz^kmF;NU9uJc9&Ziz%Xo;^;?#`6mDA}G!9_skInD?LWDaY7#l+8YE zFSa)RhwW#Zj_*z8_vJj^-+rT+sz(e*t+p*|L1Dv>afwU*8Y&*KtxYRgT8ce}Y_i6ZI!ke<9t+JJ@p4KD37xFn2iZ8; zd?LFW@kY7uO6ph2zBewE^E={KL)9Y zE6MgIxoFq(T7M(t{8+Y^%Y{X_JNc`!w{p*UnDfC!S5RL`d3=uSj+O06NjQghn)A4Y>VXz5%oBH5bsr9coX$|WZ&uV z`oapb*{$6E^jvO!?9X!kC$eFFg7;GeV54<*2wk)*}p_yTJPVYp|YDG_uQOZca{ED`mN-;nJX>JP|;9mw10^T<||%@EoBnOxVN zjz3xsewE!La$b7fdy>1KRJxKl0IzFxtl2?`s zGS}z$c>v>`C+GLT-DIEMx17$;?d0iw$EgeCxE_86pDde~KI$ z{?BDP{&#XuY<`jpj-sDDO8+-Dt>3FWI+$E1lGwD;@oDg>><7y({ol{D{$JUTz??s@ z12E?o3NMyTbA4Yd=q%ede4lJf-b2n^w~~%OL^kRF?j`noU-k85H&uC1oBm%IZ+mjx zM>_w9OOX>Vh@CkVp&i}kCyXtav1EwV7Y8>lH-TSr_(<{c5~$7^f?X5 z{8-M{+w?g->GFBTOP~9bF5l;}O|Roi=l?dHzpG%VpDTyyb1u^Qg`Dr(A)A%>JK1LE zcW04v?S)IPJ4yQO9Xh{l(&w-wcGt*3DcQHdCCMAe?ojevk+l9O^1o%n`EdKIY-63T zjea73i}Sf#=zmF$zrdW|cAwCHgL0of*Cd@@FF9CGo+sPYvMD9ISE=8s^%1{J{)QYp zN6z`$_-WY|C=cgSKU%gk@nFU)z=LFSkL<6K^T*5XM%ks$eM#ou-z!Jyb7a!xc?)+Y z|4_DVWb?ipHlzM^IXDg9Bl{|t{YQScR0wAjd1H=lfLj zD)m3=^D24?^LwmWK>aX2@1DU8<#@JiPnP{G`hU{rt52Wfm(I^@IlPPd9EEK)-+d*Ux8&k4 z$nTf!N95h*U=w)>Ioycfy(G6h@fz9B!>`dl39rE2fLhLEs^a*vV8&P%kh)cUqSs$*|YunskjdLU9vff{#)>li*w6shU2&7@G3k{wgY81 zlf28}_HFQZ<^D|Bc9l&v**B5n(z2;T{lVn9=jr>aqMUa?cE9QU8UKw}$@VYVj+fn^ z^j|C&?#1=x=yzOM4tL>dve_ovI@JFl`;%q&o$Q*)1z+M;{+0S$@LoB86w@;rKleYV$@|UK zkn^un?yJicLfKZ8qu#iZ>@4-wWSjmEM7lq3On(#Hi@cGXt&jLj*}TShXUP6Yt#4nC z`YU8t8IP9>kEVZ;Y)a677xf1p%FT}-OMS6yC(BX#zZ}W@`UP^l1%HM=mCe6$&kx9t z;{BWc?`yihsw?+=6Q3lUPC?*55gnlxDWNyeTrsc$C- z*!-vM&(~CL*Wy~#KOzTbG2ZQR*pT{*Wt&HR4LLrE`hR=q^DF(I+I0Q?B1h%%C$cMv zdz1fBp!%|Myhk=)U!?u-KX|!p4#<8!K8VN5KK-BDbov*_?oawF%faum`=fhqeE%c) zr*iZa{g31He{a+A#>w#(>aA?PkbOhyH<2GD2dnA-satM(HvM0oWIX@29M8jxWb-(l zCr8up?Q%F#wjJ?!*;S|hcIx+Z)%3{yJF?6ApOybN-ZZ&_Q@@!c=ih-R(9d`#Uyg4h zzgqTVWY>T^b4B`ZQtpqDqtxm5o&UPzwJo!4*3VhKFL81&NO%|Hm!N(M{!_V|!FYS+ zyhreFa=`ku-^>0P@>gZ^JmU@Stm%C&+v@Zmr|s44>Xgf)uCm{*dh-;1x1;i^><@R! zJzKHAyp;ZBc%5>;63>wXK0nn`VZS{ewLG; zCI|1~ITz$|`?+kkw#zx(L4RM_{egG3&E>8X$G7XO`cK4{x5+uO_)IyklkAtsuD|Sd z$N|USCeV1%<@67bgF*CDbQ!Gap;*MIsraSfL$pt;}Ce^!JW!D}*CEMpT zKZQkjD)aX?^$*JSP4b83=rueGFTv&Ha1wq>_MK%jLa$fP?ECUyIXsK{tIpTFC&K+%l?rjxq3Sv-yrvVMYfMOR{kAsFUNbR z56IL1nMyvtTy5DL!TFR*a&U}n%92---CubcKmA{wwEqX$)TRDo*{A=@ljdLJ^nZ2I z&&%C%kp8bunwMjGR<Od9q)HtIBQz-lOsTd-Si6fgiHot_)t+{^jkwr6O0zLL#ba$KJC$)C$XHQDbb zKZ*0tWi@_$n(V4EKY8?@Cc9?11NCij57~F3e~=uc|Fe^BKf~p)uWZMV52Svg91W&^ zx*T7NXOWMhpWNR{|DDRi`=}o)+Zp(J#+!rN;KyZKU5@y@z<btWU-_ z`%csAF_!WEJyoxN_Ip7$*$h%{2B2z=~t3nJ=uJ!@qGF}N9p!IS$6y$O{{cdzVU()| zygAGBf$T=HJfBkkIQf^<$Mo-@z7gy15Aq&(AN@DUen0iIFAx`ae*~>*IJo#uYK|kMJ1$7~B7m^skgXxn+Omk5z6DDi4pR zzdHNNs`zXT$nMWD}*XqIw|J-^r5j;i0PM$|NZ{_g6s^xr?+B#U4nnd>Hkip>wA|Re1zw* zyyWI|K9Am0?vK*)xUByvIZpp~B^l5BC)@S1J(u;9{x4R#zOI*p^tm|c^viSnFq8T^ z93MPSeOsLVPgPofnH+4E%?R1;A|Fnk{%=%TkK^=zHqz-2X1p?7-*CC?D|0nbTgQ_Xw#cp}$CuxeKfv*49j*uZRt`JhI!*O?btk@D4$|ko zCd+4@lC9x-tyOYpxt{Asxx#I-KOp-j$@}X2OjKLfo4Kv}KIB$2-hR1goorsz_cOnM z>(lD!`MX z+_iN1SK#!ya*6$;a(I<&4>r&B=cUh~OmaI+xqp)Sfi0ES<@&!n<)}W_3%(+UXK}sY z2H7^IeiL~U^3wW#+w(lxoWS?pHnKfewil9LAQyKae?Z@#gBNA@w7x$FAL0G7-+_m! z-jv|_$M@u@3U1#zw|rq^d?e>v2H;cVqEPmne+jrA)3wm|fA<9WRdPI!e$FSj#j^Q` z{0;K5obUKRc1O$pGhBi58QZC^C3@v=;c~o`{;qPgk-VN99KrRwyI4O>x!(6(IT}PhpWMlAnr!CE;jMCmHS`~% zKD*xde5QYp{zqj$NY^u)Z)N);*FXQx{H?@?&|S!uVs{Q}&oKOGz^iP!IkMJ|H`yOwk z{#V(2M?LrFx(YotKYvnxy6pDKK9qfy-+6ewSt1A2n@w{3m-^k;t@T#|PE#@?^VT4zv4N_sLOL#`}xuT_T$u^k0iVlP&j`n>Wb0AKl&| z2i!lOt*`h3Jx{>$dv?t8I?Qg??`ZO`Wj~$g5qu`MctZC4-W^7=d53EK}+4D*M&s-SJOy&{MWYvOap_mMniC*$j~5UYOti9rb3G z^33i7IV5)n$OkY!4z6N6u0OEX%bx3BqTBFM+8+GfxHc}3T|+sH$S;!3O4)WJ-z1yf za_~*!ut_d;{irNoF~({}Afu%h3(8or!Og z-9ywrfbW;%N9bpNUygYGlsQp$-;-A+-$8$Q z+3do{VxDhh>*IsU?HRJ?d0EEd`g%T=XMW?ZvbjmQ>rXy``k|QR4{nv+)e+q9R-z3<>nYh=gs=S+cYzNVh*cSGzBDi5$ZPuKrOjAt*ALu?+F-Ip5A6v<|@?Dor+ z=iT{JFU`%L{e=0uRt`R;ehm4yc#a(Ikj-K_{+<3M)R!pK_y5`WKl0mUw~z6-embPz zoJIX_Qldu1~WZ)f~`*?ulZx5{Qco`9J@ zcR&5ND0g$|zgG71Wp^>=d6eb?*(@OsljdyQYE{vEuS`sZY~9P@rK z>t%Z$`C9TldOwA)k-sn7Rd^xZK>c#we;>>4Tl_V7Wyb%G{zh`Jh58Uc@Ir@zL zJ7v2I50l+)>Q9qnoxJX*PVSB|sS<6GHgug6aMS^w@! z*`31tETuntUT#GHS&Vdf0Z%v-9{}W|zmAikmyq?@=`=9gZU!^=gpZbMz zbb;)r)89?DI2eGJP|x#&-A{}+nDIJkeq2AsTO`|Tyo&vDpJ#D<<)*Xjv)6wPZo>4o z%9i!xs_XtDo2}3Gva8MX2azAc^v9AL{D^E0@qXMW$N%A7vZvl1KR}#_c4%-a&Kab|u?KXW5;g`U;mZ{!rQ8Nd0}X z8;h4P{+;xHEl2m#UqR^{kj;Jk?qGgyT5Ur?8+(+mdpMKIeJF6hcv!@3^Sf*`D_){$G6hY{gvTx>RU1W zD`eAw`o83+$&U4J%2D5edgjNr!Yp5yNB=*ppX~YitPdMd|BLd7=i!?zEKl}4`>*7< z1mlsrYuf6 z*?mF&0saL4A;+7jKStAc951?kjQ56e|Gpe@JZfIW9B;bE@yn{W56V7bdgEm~lkrAU zKaKj!hR@I7CfT(l=Xl*Um;La=>+O}Y?WsH%NPe{(_9Ex=+VcIvI>v8D z&iAdj1^pZk_$K6EFn%NQ-x>cbTvhAW@_olNW_{D|t!!E{9`%Ol`2!j+o4zkYzg4{} zC;Lvgk{tJ7`n7RCTu(Nk9G^=6)#Qz2m#t6k*N$!^Z>c=EO?K^MJCVFAGvw%f#(P#an`OV0{vTw+{pMlzePfgI zknacnEBX&ozZPf58_&uAJKlIej!N?W9xngy`^o=#|J&Z@X@C0__bYUg!?pNz{hn>J z`%}H_S9AZuQvJRfXZM5h`*h6x9Hzd0FAXnHz2o;+(~j|PRqos4snlophdw3S^T?OT zE>HHW<8_BRz27HU`*2;z5@od?4lg(&3$nuM1 ze-ZWdW!Dq$(fSMf(7#-^17*8d_9J9JjQl3@?y|X={ztXF1j&t^x$8#;%jPcGwU(oa z7W4sOg{+``G`ZvG7@7H*)A-|vR!M){Z2h)2He}Z3-&06Zemy71gwhQ%>so$vS z`H`||#qayvkLkI7z_lXZsO1Uk;+yd?xV&ul7v$E5`%AB1^r>v`kln|!Z!L!(QeR!R zo2dVr_4_vYr?Ocmo0sq!e7EeDQh%9j=ga;S>SvSh*XtWk#am@R8NV;v37Gv^c$4hs z(m$O1D%o5u+w)~Ni2N8i=tKUFt_KRb%6_bDJK>IU+=2Rra`xX*cEtI){cn^_|4HqC z{Y?7Dw94h?J=v^nnRCefq4uM5wg0Zc>$jtY#yekj<>l~leDgWEJRU)PLpizuuWYXI z$IAYfW*TpzY~MROXZH~GmF4I{>R)b}%LBGAf2Z8D9Q_02!V=VXmHh!NpS!Y&rgtp$ zZ#CBRPQWk8zP4;;%cj2UxSrFWjk(@4ZY}$>8Lv0_zj>P8)w10#hoi~Y%Wj-(o+qC~ z{k`-jj3?X@{RkNRwS{bb)j zxu0~n?QA)0NdMDv)QtLt)VGoCD)J8aD>=Ys7rAA;|76SkxW201e*w$u&XNE3JcXgM zrQeRl^xIi-$og~3r+l%LZUe~&j-ak87zBLVV4*!t- z4B7mJ^W|V4u8d1_eD&8^xqg3?Y~Poo<2b&0TDFzRZzRu-*UpiHy3|*e<9f1bE4zmH zD(ah4zevuGH(gA9YvuMB&99~3pDFv($h+ePc!V5bvr=}=$Ybg`-gSS=wuf?8L+dvj zD4XW8y;}CI5Y@mb6t?+?>THuSsm<*+LCy)oOrn<)S9{V?Zno0YQV`;YsEyf)(i zsIK<6mfWQ`(vhWC&=0NEkBp~`WoM_l*39)??XA_`;z%XHrQ2R|C#Mi*ndYx z{q}n0Ci_0d{yWO{Cr>I5*`K)O^3W>G&qmqv`nezF_(bwUas}Sc{y6O)^Ufk~Bo}7y z?>2HV+lL>({?szRH_1U8**%Q;zH1BR_*~`YGubho>&Nk0NAlZb*NgF=B)=SQkR!gY z`+ah7qjJ|>$Ae}f^+mFONH%+9`G(39Lw+*Hn+xg3z7W?}ZnNhnG?xq3k`I!z z=P8)m<)}!xTP7R!FFwX!EB8m}csTf$`rfk7&TmYXL!QszUg!AvGwT1q)VsPm-nKs| zw>@w%=6(meA77z7dtR9vOnoKozx*)S)#iTr+hkv#{aXR%d1&Ttj{kYyf_+8~vgbj( zBm0(&UsB&6qQ;EZjq^LT$a~4bZszy@od0q6_0{Kj??Qba9w6K7{A5GfWcfcAtG=)5 zT`b!Hc(WX2=kvCc-=N%-(s*tx^=HcdcFgnX;&HOQl=5OwARzVt8=wxupIv* zyKS;RL|);UT)iuijFtY5)Lafr%5I39)!S!en~nD!&ZbxK+1z;10gZ24%JF})&p+I@ z-n?9W_&4?E%l=nFd#`~21GiCc8?kxwKWHVYeU*gAP_Y?Jt z$+yaGw`|Ex)A?Fn`fWb`g#IV+`}FsHK3DIUUpob7`{KbX2@%=O8OYn=b`A)XW@qXE@qW+{8w0vu1 zd;E*?+j87e-my{k6J*bLZn+#SBtJkN$*%EBx$&Zzvgs$sQ>Y&!+lkcAlHDlsSIDoC z?KU~=jsM17sqg%9ZhEFZ9w`TP@Ekd;DVwilUtPBKUQvGy@=$is7QUW z?2nTDez|99*;Xyo`rW@u@Ao`8*dx0u@Gs=UWV3~Qh8%t@+qJS=OZ~Bna^uIZkq?oB z74)wpUqrr5_D{*a(PH&alg$v>kEj0+Ik=Yo%a`QpgDc55%0A1FT&nR#Qh$zYZwF-$p4VzP_`Fp-yigs%^Pxb8TGHrmfU9UrQ9u{zb)gvAiHxI?>RYa z%y@IFeEA)h1r0pzpEFOZ{$ zW!GGer^>dnY$j1(k^Bx^O%86C!!zXQHrbs=|5)lzrGBJr%gf<#>i6+}%kqzSe`Q`E zN5iO}DhJmx{#|$=9wqxrWq&FCePnw+^}TRa@}Be`)c(O!Z+>QfF@W(tz>IH~;cUD} zj=HJdEg-*;=@rVpEz^5V4$s3g$j_$#MmcUw|6n;fOZJz^<}^G^4o{&!B(G22gZw1& zma@bCOzKZmZtCDbwnxae4*g$h{~Oen{geO4Q)Nr;M$0kd+o5tceR~o0Co^7K+0>Oy zGdW`V{sh@);~V<3`TL#En{58J$zd&xXE(?u8*c@lN0rH!%C4g93dxUUeqO=H;Me5n zNZB)9RFeE*<+c>QTMn_m;c(k)Wpf1MT`ULxtjz5{U2FWCY?{jUYg`k5DEs5&=v`cr zd;|5><8A+)X}3 z4zDD?4R@7Y=1#JitlW2?|1mkfkoxE3pgmq9yLOoQ3(vzV$Xno5^q-AqlIO{OqHLSU zb`14RWplk8W7|Xa&FF7QJ>&aMvSB=L$r4G9T3Ooyo>4 zmfacZw?C0Lko_m*^%(yxIjo7-%W+lNy)8!-@p9@jKS*AI9Eas(J5{+YBb&SFFH8L` za$Jh~VdPnTKRGI`Jh|REcl;I}g)5RXJ##?E%l=s9=1)03T6P;ao@V-ffo%UgQT$l(DzNDlVNzO5YnPXD?1H`z6o%`WQse&Bz`C8^K+x4us}?6%5wJN2K-!B*Km zdAQxZvWbGu~i1oR6E~tiC4wET1b)Kl5vsbABP4|B15AmhUn-d|Bh$ z-g5LD)2k)>yYTOv-xwkL?Q(bx{a@p&@g_OA3Kz;|ApJvRTS;~UWnWr0{pEPya(%zK z6z`EuFFDvQyNl)UEAk6v|33XC@dnw}=X}p9>R0LfkzFIZ`#InACLVy_#Z9UIfd0~l z+yBViY}TpXKSIv*{PpC^7_UG1QrTMkg6vL}!{-?9H=S<_o~8dQ&d)tVzFv;z z(*GRi=bn)5qq3Pz|2?vQl==~PhV1*uZaQuy2M^F6$k8P7D&%*`c7@JInk(^xa?peR z33Aw0b~oczc$gfWBYPY-p})QIIFI^PvO9~s3HfRGOnj1TPr-F$f1>PbQeRWHRmm&K zVFmij%jOu_RiwWpHgd3knT|iV>3pxr{Mq5Q8|19sE|u-y>NhXSQ88YOf5j_h^9z1T z4z|i}j_kk3lVtmmY;Tv{yX2goHfzZC`kHe5GW9>|{CGTHcHhY6 zS?b>>pN*%>(KOkQki$Fa?@#?G>bv1#)VHSpS~)zI{;R2PKz)DePms+e==SL(~*cCsx^{h9Rt_o|Mk zPNM&BTuly(Wm|^&op}FKx#PRwC+a_x&6l!!MYf+)-%XC+!KYK7xfb#;- z()mPk^S&Ier+%sIy=)@ct|lLHxNR5Nt)zb2T%B)RAlsF)Sxo){`6BX1ly3yzj}}{Mg%My9?h;{|~acf&2qG9!|av50Tw#)L(_4 zkt+f6ZyuaB#b8PEJTN89TqOm8b@`OHT+dwrJ4 z0qe)!FWaW{kEXtXYzN6Ez%A*oNd3vwm&TQ3w|{AFe_~6^cDHQ)d^|V5;a2>k>^_(M z=W_HO-XQ0BypaBd^hdIfWH${zB-^|3WbEW%624K6Z2yP>jcM&6A2s&ZHhmy%6c zyl-}H`GS2*bbPv1_S%H|U}98Ev-@2{hOt#WfEUcmUF?54@SKfYa#vFRdL z=%L)!mrY0N>(Sp?&)NjSN$mR$7L)m>v{}tpP$-V>mCfttv9o(6G1O1)I*W!+{f1UdC@G{(%{#Rsk zj%=T&zlj`hU$m_!hfh*pUydHf6=eUI><>PYTfcDu-X=#=WV=N+56Etv9Ns6JIn>{S zr^x;;e779mA=_K1zeRSJ$>t{NyUXE?xCy?V{wi`XO!g&ZdoB5)hqb*7mfe2YXZKAP z%dRK&+vK<_<86|o3-MCiminh;!+q86Vc9lPZtjs?L;9~LKa2hWvOfcNmZQ_@uOr8q zk07Vt|1~4Gd=cZ@pJm7N?Pqe(lmCbfJ`c<}H%7*78 zc#pYO%q*rp%O95GY`jnovisN@$d>sx|2>qOzNx_Syf4Qrzn?F=8sw9xXZ_i$ z`Q#4C5%uN-`oE&Sne6y{bk)g!Q*Mgs=kwZbz<-m!^43by*+( zPSN~vJm%k(ZA0bec{y$=`=@2k@u8n2N7?b?jq=-_=pQK;cEzC_^kKaIvb#ifo#k*C z^`}rjj{1EMt!a1LP1pE8DB-uSK4Z|GQV) z<9Pc2l%xA(cTf&yQNM@$dD*@zTaO=<{X4SnLjOnP)#Y$A`8Shu(~q{xZmS&pE1TbB z&-Zoz7WMV`K0iw~EoDCjXXi_X%0Z~yb&>r|^fw}(j4P2p%y_%*(e@SL^>X|o^~>bE zMY4NRwkz-$Iod$~K-qmr{~5B`O5Th99rRBj|3x;>(!ZDf$K>Eh&X3+E$K_=|N)GGD z_F?)PaQ<|SY#ZZG$u0F;W#5pJO+sXJ2>hH$S%F!g*Zj|#L zklk+j@59x!{p8<4e_Pq!g>RJ|^*)kK<`3}%)%*SQJH|gp?~j6sc!(TPZ;sacv-m3V z7IHM4@kZcV$nTc(8QymQcTr`F%|` z%Vf76&zJ3oa&WKQbBkl+@BZ85L+k^KI&O^*2e$$TK2YW&{x9Qg^dxj_yyx5L%RYsf(j`uAyj4*5OIvAu^4 z$iGz{HJAN|)L$UmrLyZv{bbp6$8BWWO*RK6X@85|8?w*xDROi%^`m8T1uh{6H^_GN z-MR6CJ7qr+-%Ea>Z11Q4xWjY**~DCbd^h!TWW#uNs2toue>-v~yVJ?}J@kL~sywLN zw^Hu-z13ciBc}HZ{RzDoK)PF0x9~kc|>J7ig z?!0O=<+vsNlgK;B{!#KC&SP?ZZiG<%6^LMkJtOv&cdhi{(hGJ z9&)e{kCj8N=P+{*xASsL?zYG-yIzC+vB!qv702}@wvF~jhU-)8VD?Yh^)~G9qPLiz zkCn%ncT>;xJ*I^Ar`h#7zM5RHhWv#rlkGz43uH5w@v`eZpOgQ0edr1~ ze2MWk%JEXXj{dc>FTzE5r|dW5zv%x?HaPrQw!5g`gWr+uak}2tWz)~D7iRrNXOOc# zqh?&6`?mVS4&*WJfj7(X)%bVW43+Ik`hF5}eY@=u`Z=SRTJfwwEcl8|m*y{deTq_4dWG z@2K1yl1)4MtML8$eA#!DeRjS4(EsB#vOS0CeJmSZFB8jAcK!Jt*)?E#mG%AKaQ(eG zUk;lxp2b{$Z!VN=c76Rda-3Z+KU~hse4iX-*WbTDKiBWuH)O~5WReGkv>nmSc$+N` z{at0hhx}sMoUHR30qfg#mt*W_asHz}<877wCAc2vm$JMY&R)-Pa{iU7w+mz+%Kig6 z93-3la-8`%ov(}8o_!_Rji$dU=l8h3#I>XTZsqQ3+1`sE!1pt~cV$0?d@uPl*_PG$ z&+uXDPvv~*6WGdT9`%Fe;6>TZk&9o&<#j&SEvEk{o!_oNy)P>VOR4{z^S|6*WIvSs z`{aw{_$$VnLj8}jA0kITQ{RXB-(}k#AHZkGt}ORs9WRF!xnHY5wr6mE)_v4BmrX6r zzaNB~%VsD(h2>IlKuUVtUvyzY*_$^R{xA?GK)pgUolz z(Ty6<50HH}-U)L46!P0-Hx;w~>i(A$bcqSR?x;c%5v>-8#FmHYST{~dqC_@CmhG1u3GKT!V+<8Q@d9$@Wl&`_sG1rX2UPbA3`+nfuwVQtkrs zOXT1z`rFBIOX{=ju>)?x_`PsL`upHoa&)=uD&djjb>#RC*))K z#=BT{Ja56BM7<{;L;jI$-;&K*+3%9$*Ki%KM`JucQVw2GZsy3*V%e>h%`({@!rAi` zs_J?>yNU7pbN$^1j5k&`+5FAL-;l48{rC7gIs93+zme}DKUUWphCJ`XalK?zj^~N= zATKZ5d|Zm>kIa$XpBm4-C);0{-hMgQF8hAE-ZXn2hn>Rpr#vsjd)Z*SUv}FVzoo99 zjecRgX|iW|>^E}2^HE$!UC$dF%lwD3OP|G(JU_)f%k{q4eo9Wg`;EMe>dnzyk9>&v z`Tw8al04F-O7bX}p6PR73SYSBm(iy+YI}AQ8(uN0SKFC&OSy-xXp|oNhj)$9b6_Ty zOrHW{Oq%WNqRb^(>a)A%9E`z@D$)S zmsTF0jTz53qJ9khr;vAM{Cc>W9Mz$oep`)vG~-t!UrBu_@^y^&&#hV?tI2ocBH8|o z%XZWH+b)}Wa+3&^w$ng$bxu@3WXSlTN-j+=rIerya zA%Btj^5oCpQ9#aL*(bn!QHq$^|w>sOLn7hH|mE_f0GrP%^|Ocm&vv|_3NlFM_!^&ZaiBW=gE=5{pH~A zoAvtLL;X&?T#kRnyYa8GIqqW3?_Tn5vfGF6m+e2)e?@&Zy_$V<{q7Iy`{UoJzgG^o zkuQ*gI2%v)n{l;Ea^v|;xV>!F(?3d%*O1Speg)npM@y*heW}KKk^CMxTuA<=9LyvC z13!g3_0#grrhcAm9>O2V@q^SKBEKIu>!0h7@237bIha5`PY%bCe=YmbxYmGNza549 z;i2^3BZpVusj|NmPs3g4pDo92@p?IGNxd1En_kci*OsG3)Hj#yY2;Q8>yZbttAp!M zUk%sA$KuoFyklf@0eLCh7yolpZu>U3$nIDCfgEj?-D!hz^B=xVK3TS_$je=(<$DEh zlI=5iPge5)J`r@uhOz-YamZaVo^@@Hhb<#7AY@o@5w@tJZ^gtxN&yf3?@Y(E?E zlXAQYKPB76c)VQn0&YrPD4SAp^gMY3IeeD`$rcQ5`}_IKe0 za(pv>R1QYUW~dwu!!=|(g!(P)p9bO&WP34wn*CFE`fsBCLfl<;7N0B!E%9FM55u!@ zN#*|3!|Ppb*_}^+B|MP&Qq+tcnb9s@l)it(!Yd!BwmWIrhcIu55y11rZ@E?aX0c%c5U$ua@Y*tBF7EzXxY}q zx5@r^+02rIvg9wwZhwC6^>A;||2zI%HaleVs~mkpz7Kyu&ilu`O@5@dKeGncmg6Ou z;}5?8->p1&BJt*{yH4Ml__v-L+B`T7t#9zr~ zh#Y)~4{^M^BI}of7w}zj7*T%_`7B(K{%QC;TvImKe5LOv?mF_P<>FzC_aNV2GIx^wQ0mLc@et}a>id$vDslCp>uOI+oSiG_ z_wUq$T@qLR{US3i$%|iqWn><{JMr69<{T`Uc+gdyf_voJ>yq!2@0RHjOiJ9K*X<*( zN$hG}7^UlH^PxT?gTyTsb~R~UFl9jPACvE|&vox^?@!#KWz&OqCQhbrW+V=7=w7>H z;-uftP8{8Q{KzVapZ=_E@KoX*+mEUJTk?H9$?bEA3;WvIZzfL0%e|gyJ}YrD|Iy1y zzVEGbe;ulNznJk(Pn^uJS(dm{y`8)MP0lYQH!;@{rr5WSYT@bY&Lj7gl% z-zxHsvR|$K5l1CXrsv*B>|5{KwKzFHk}R)XNByA0S>CVQGquw5LD~4p{2n}zoc~GY zCuV*|yqGx2-IAo=Ua;oC)WjR7wzex1-}~ya5d#t@;|J>#r}Nh#ak@S}NW7!?kppL| zKi-^pbJ;B;PDz};K3fw9w|!Bomh5*Y-dD74*Aa=+^>rw5x<0mc&Q0HzPu_n=F8ckz zvc&272@>aBHEqP0#L4ULnj|iG4`~)2n7oA#IYhI_^ z^us=hXFhp-tv-p9@yvk4afP8H&P<$6|MJAq9dma5-BIiNs>JucZby8aIC*{D(8TF@ zk0nlDzw61v#Od~UOPc4kJWxyZKHZ=Bj(3gtse|Tca^ihob|3Ms96p$M%xCu=n437= zzGfw^{!G(dcPCDl=PBj2dM8d^5AA=Sy#7F=#L4=1i;_H;IQT$m_4`$c)A{}F!rc4^ zYZDLsbHIqTiIefnJBjl~)EIG3;$;5)hl!6|SNcG&#OeC_B5}`V{|zsjIGx`2iD%B= zxBun#n%>Weea~_u1|?4CH~susk-ugCiHVc-7ypsC!IYi*r(dA$=ZNIX%Z51R&|LE{@5+~!kCla@~`I+I}l>78}BpI*fSsKqSNt`U-{+fxC z_2*V6PR1WzC2=x+zdrGbu|xOA$@J2EQ{rTPYtBlX&fn*WgI7BaACfrTezqi@S$Nm} zR*BQ?Yg^)UyknKeyOr1ct#xjG{a=YYT|RLC8aX~l{!rp%dcI_GJeMy2<%!ejl}Vh| zH&2|tzDFf~epbuj@%dWb^!P7bpA!?O`;VH5TikKh@ZO2j*Zai8>GIS_oXoFpkoBLZ z`DvKAU&l(r3lpc?Z{x)2^kyVZ<|j&zKMRU39)6$fPEH)HELZdP#OeF_gv1p-t5I`w z;(j~N3o51k*KYmy`ozif?U9LhoKa@yz{JVx75$eiZ`$8V{eE9!SA5F;w_4?|dq+NW8i0=6?q#PPUggbvnNT6DQ;O-x8VUKjBY_^DF#wT|L#i z?-D2LW9NaE>i;Hj@c-z#^ROSP|9{{|MY7&y2}M&WQn*PX;-F-UTgr0VCQJ4uTV&~2 z3WX?ZqA8WN+@-Q4PRNoaDZ3b?>`{~@{9ZH9=X|bj$My4<$Mt-jGy8j)_kGT+`0@BM zu^cZQd3_u2#9(oBejXI-k&8Rm5l83yA+apKP#(1RkBWm;lP~>RG0x-9)9bs;>l}z> z`RYv6pSXiK>OWdvb1|b(KC$diFWUa7|ML}M`xgv21@(kM%E$qw}k-_{_VX_p2*zm%IIt+Tv(^i;1J-QD2<#!J6ZjAI0(- zi_?1cDDWM%yR94R!7J6=N^UH{ScX1!T;&LWP^&nVa9t9Aam zTzoy~I^t;kMv0^AA=Of2IA;? zdrU0L@0?vMuMhsCQTsEC3;tX-&TR#8#uvMeeJGChZx!*V?B8ANA(rDGM&CE1{vQxW z=UcS?(e-w&46fhk`)SYW2QCI;S)OewzHtAxi_eIo^S3qqcPh@`_F})yXPrJ4N5?lh zeits+nblC-x%-vxyNRRg?MUg;)z;*H*zYG!**`0NsJLxyHC-&nKfN3r&JxS{wC7;SxIa5zob_to;}gYFA1)Ff zeY{Y%9>~=)u^jI`mBhI+Rq&(x0djusxlt_p%Wf85c)t3mV-Jp!3-*fB23*{I?!mZ!bwDh~d(T9%Y>z!CmgBvr zvsjkrAEm3p;W@FLm?b?0wpYZ_@=unCkB`bB_d}xm3)sIqx<7K_&tntCzx`0!loHGG zn>7{7`lxDRIo`(~5SLw6PNgwF^+3FS@%)5OxB zo-K~nf0kH|U+{%k&bM0@iDiF=>%?+C9i#0ou`EB^O37vW1ThU#|r7;bPgJrnGo#pK{qE%ld_n ziKFvrx>(jftR|N0^Z0(T?2n*^I9i|kWq(V5HoAW*$1D9caddpEi=*>t32du~qwPN~ zmi_Hl6-TcxC&bd9iQ32Kqc}SM>N2={tG&bqvJVO)?fNp1I5w#Fib4#qeqFO^=T=N_Qw>lygsLw7R&pyo+pmZ z*G%GQ|Hk*n<@`B><7rn*9-VLBiX~T@#j?HWlf=?K*eQ-muIFDLDONE0{X^bQvdv|E39-DNrx%ge138}dVR3XkM~kED zzoIxgf0p3&!>cTgmUj;=z19-mh&mw z4`}ZV6wCW-w#@Q+E&X}J#nJ0|QE_zrj}%A!wH3?yn{ndk^T2rIYKmB$KXLqBw1>j`rUrakT$G7t80b^gUu(AGK5*t^WbBtZ%qN94$Y;yx&CU!?)t7zv%r( z&PQ*hI9lE$adf>#md}sbH~*h{`8;*}PjPg7Hb~wvb>p7Q@_r}n)mHJ6VSlE3V#)O{ z;%Iwr5zF!QqTg3#|L@r@?c?)PET2c4FA~f8`?tvNweop1+emSAeMZ0cM%(u?>VwC{ z(qFbuP#;9UFQ?ADmj1n1j-PHA)i2G_`~YlQie>%Mb7Fn`u437~Yz?@6eZ|rC%n(P{ z|0`m@SheQ+#IpbV*Tm8L@g?Np7;!KqchLjlF$+&;i+*p9J`ZP?&j(Tcy%lD=1 z`Q-DEBi;Mg3zpcdqvGixkiuH3p?mZ)pUau>`&CiNu|C=YobH-{G^mx!?X}V0+sOTu94+Ph zXte%gSbvjzzmxgB4 zhM$Y&e#*(w;^_5niCEWrs)ZFt=j%%3IZlaXdEs|rxgT}%LAf6gt=}fG+&^m3TO94r zAH`Xh4Q#Oxx!xg``(rK6ie-6fk2qSN0&+h@`u9Vz+%IZTN-X;)jQ-v!x?lDX9Gn%) z{kj%K#nJ0U^!HOye-*^h`4jzpmE4azSzR0*|LkJ9f3`0bxtCuY)mIhE@`F3YDeufZ z`My~CQ$@vc|Lx>8v22ejE{>KL-OrI+mk`&Qe_+lC@%K~K|MZ|ZTHXe6v_DF+KEK=_ zlI^!qz1&aC(MTL!KhfWlMfU>(==*d;KQjo~!$`>?HTo zq`x5gdpfxv+;S=IuX&xsazDD{Cb3_9*LR)8a(_8zLAl>2>tkLN2VF;<8VB2c;%I#i ziRJj|0b(_$L(8Y-exn>ef1tSI;hLvr<9?)#Y-W9MDrarH9t{%9@=iS|mi_Gy7VkR0 z;nZ8OivC`(X{jJjn>wYd-LvqOzORU*zaPvHCx2_`{(YhR$zgt_D#d@ND1QT~##hIf z?T#5MxE5qhP`cCHW(m7x?0alq|?^Whm z*uFn(Xx*L8#Qxf{{xZgQdCg&UiQ~N*u>LAtgLzK0*HvJh9}ddXh1matbQ#tcp{vuk z!?qjS=Yq`)SiX?N`$MgP{mjfyvHg`5ajtV=e3pL>HXg@s9fK|H?S>WSx6xZzp9%HG z!g?3_4?m?BaCx&>KLR#y!RlrDHRg2KpZP@Qo#Zv#|FxT@2&T&b&Z#{wKdZ+rNukKM$MVVdc}DzsjTa zP>v^S#r`-yme+*!i;=5j`QO4}Rpe>~Y#yOE!v2Ho?|0VU%lu$EsiSbsdIP0I}_^Su#zK*|w zJ#L>l4g0Lu|G;4(w$IJ+R{!wtud{Nz)oIwCXa76s6Z8+P=Xfx+5>`i$tIwJL3H!6y zK0o^Rrm(&)$8(Kg-WLvr({o`v7&e=kzXa=(bT8&bIbN#^tT=yS&;ho?k^8OKp7T3; z>C8_c_Zl$21LLiH+BAT@#>mYS=FMUC0~{p%C-Z6g?7tSqQ`sbc1@>Do|B6oPufRcT z_Rsl4Juc5y!T2b}^|8%h-H7$WIDYCGSbq+iWc&Vx{W{ExbNtB@bXPd20-MnsuTqZr zSFkP$t1WaPdOvJ)!}d0e&(MG1@AFkLj^{|m7d%Jrx@^j?sz75ypuB?N;%`Dlrx^nI^(UZGakzwujP*Cvd(xf<&Fn)$BVh+$(-?KhIuj` z?Yi-5&UiL=yqk5#!&zs%oN>p~rStsfc)S1Y?_@llGhWXf&v)H;KW99ka>ff@H=Zy# zA35I89gpaaS9HfSy5k*{J08**FPW_G|Hf0g<1M-WlJS_z8Lz3G@toEf@9B;Qy>7gy zGoJLi@utprRCm0pamKS+cf6}J9@ZT%tDNz))){ZBo$yBr3#ye|gJoI(rrJeEA#u;zzj>lHccx`t)w{^yQYiB&TcE*ca zXFRz(-rOCJuATAf?s#_PjCXg(!y9M3ymrRZyW{PxGamoC@%qkqe&vk!SMGcO&U^vJ znNPqv^9^WcJ_7B|SK!QNV4V35-1!icGhc#n=2N(Cz6EDK26w&&mF&M{{s(8i2X{UQ z?aUXUocSb_Gv9a#+k2ByYm@3^BubL zA-eM=T4z2*?aa4mocS29o3GKC&r!ScJ-YKjy7NW4^GUk%O*->YDrde*<;-WPo%t@! zPtJUp&U~5LnNQQ5Z__yQacXD2PIo@f>*o8s5A%5{&Ijtw7pk23MBVvDwKE^7J6~zC zzTW?5zSHaGLv`j$RnB~>%AIf3nUD3l`C8riT%Gw|jWZvtJ726jpR94_o4sy6T4%mm z<;-WR-1%;u`EZRpU#>Hsu65?yb?4(X&V0S@e7^2{zs8*p*qtw!^NT0*32SG*VRt@a zcfMlf%xCP*cWj;cklp!`jWeIJb>>@k=VNx~Yfj!DlKGsCJKu9xyk7*#e9#qW&KG^% zeA3Q*)5e*P+MTc3y7O5(^Ia=vK5XU8mu;N+wB7l(-TAncGherI=ks>v`*!C8*Uo(5 z%AHS~^DqBzzHw(ha^=id?#^fK&UbE{`Ox(g%%_{om+sD|Zk+kntur6HcIRt%=5sgw z(SI`EyE`AecIJz>&V2ILnQvY@^U-T(zWVFtvv=mZzivMKX_(*lfAi%#^Xa?u?Yr~w zTW7w0?at@#&iC&;55Rq1fO4KEkjyWhJa51{&m&OI^9qvBD?XoR;6CrbI?qFJpO>JV z=P4-Xc?<6I7~JPIDCc<&$^5^`^B%POJcyOJ{(U|lLc7nC;PWVw=S`^p&+{mf=T&Iu zc^1Zb-i2|Vhhg34Ww_7NaGtku-Saq{=XDt8c^=n2@56Z>h;^P9a^3Spoac=w=XoUV z^GdAqJQL+S??k!JLvfy$;yzEsecsA-&tq|(*P@;0xfthpFUENujB=hAbKUb~oafEB z&!aKU^J=bpo{jUo8{<9?$9Z0kcAlqm-Sc+b=kYkt>v5mw<38`lxX%M}o)@H?=LsqI zc|*?gh}`ED8RvOM#(Cb6cAkf1o#!Q4=XpxndES!yJSOWruSvPjb8?^e2K*hpW*Lk7W3~NeuB+saIl5> zB6=fiKc-i~YBK!|^U<)sjCns;e@VB2!_VlanbW2+^G}g$ZoipN-+|oDf=v##f1kdA zevkEM@%JKj2CPE<{m69Y>zPl1t%ZXLbOvl*r$1!FO%K*Df^9F>kAhWS z=6&ISR=ggQ`s99g&=d8F&x;GXv%jKfAJQr-oNS*x$-htP#N{1@{TJwvd29B+m3ebm zFM&-<*3W=bThTAGeLBt8t20eu)r$Q!fs^~|Thn0sICAwg^Rlq5N$01lv!3r?wkpm0 z?}|?T-cMCw{x$E~MA8en3gL~-5=puBn z|Jrc=ca@v{{e-{&vpMM1aBvIF`|m0X`&)us-^hFhtTHhlPyd^Nzwa9g`{!ZZ7q;hM z(~|XnvA#CzPr;TBj?s0PA7*`JSnr2TDfYLG`JJ%071o)VZ(;pu%(owIqJM_H_4GnG zSPk3huwKc03T&1zAHepDVATTlKcySO!2-Gl^Lel?&iq31?z!qUy|-e=VJTr ztiQ_p1znl1f=zqaeg@liu$l(zw#-Mvstw!sfqfs=4PcYhmxce=Um@7*!2UDCiuL+0 zK2N0;^Iu`zg#HP(4Pdhc4(c)A0GnE{o(G53na^bV8n7M1_L}uwVO<3_^6L0dLN!wqe`)UGoNSk5NvpV%a&li40%d1w*LaQMPa>& z?eAv&d{`BsKY;Zete*z^1z^MP*B-6=BDc4*edqsLw}68rPlH3+mV|YF_FokC^3r#( z{jGEk*r${Gg<%Spzmv}!$_3jsu%DgnKY@dr=>Ya_qQ^78wh*7!2Eg`TSao9k71%b0 z!;7r1#PPn`u)wQ-wLZuY`+W+*0O#Y^EIsR z#rCUUlg|3p%xl5=TUbBLd^ziLvHddE|BK%nf+ft)@b`z$*?v2$7t+g^&!-2&-p8=* z#{6AaRffZN=wh&*#`@b}e+qp8zdz{7u-?Y!jZI|!E%UdTPlLz51)Cvo%InO#F(1bE z?cmfQbUNJgC0MnF!=AK;Z4cPo18?mF>-@0a2DZ6j-J1EiVe#=!ZBG9U_iO~KLv&5p zY=?uYtX~Fu6`9X~QyzxxG+32^RWsP$MQhmH!TM6n3&Q#~ILJ?58yc@~keB|IzLnkx zdpYSZU`?A(;562oDR9PZs5b-P@wwQ(E9_;1ZEe`z#Jn(k=ATdT`71xH&cHS|oOY7F z5za__)?oi1W&3TgI!G^s{a@(maIh0LqhRwBJ(%7`w`TqKur3dK%jtZqU(EU&;P4CB z9(^TVKmRlOXV@;FE$n>+>#yK2py$BBbXbjt^;FpOh1J{4TQVQdybAMiu+9yKqnZCT zBwjyn6ulKT23AYyer!LUei629VcmnSOm~CLJ#a{?Tx`#Jb8c|FeA^ZEYCr6EhV=&6 zbYOp9!eKk+AJJ`L`v&Z_Vcs9MEnwA_c{A9g!9ioTuLi4U*uDbYfKG+|di1@_YqNa; z*wkd64fdX(6|6OE{uqSwqY|tR!d?Z|Z-aw!uw4U(WmvxmR;5_~5o}7(xaYs zUCjH!UP0J)VV;L>1?wDiRoG;MO+h%kh0X?#zmfIV2FBYLWTKD2{?$+L`C%^{UVzmy z*!~UMDRAl;*7t_ZF}gB5{wUku0sFtReRkM81e?sv53>E)m*e$Q`&oYgw!4|Hg)?@+ z>Kiz1C+pvbd;SQU0q~hE%w^zq^m%6MW>{B+&3gJ?ICU+Z6&}BizC0jqZ#Kf_0Nisc z^L214m#2mxRM5%!|;>Z4Ov{ja;4UA1~i$t`EbC?bS}$`;ztFvp$2% z`vwl?Gyj~P4cm`dKa2G#*twtKqQUp6v&)eLL27rrW@}HEdebjbX1P+gD(H6SjW{4io2rgQmz;CRowt z?|#^S&oMs>>xS(A6dcrN|9j{()^CBm2FzE|tT!2OSdaBHV3Xu8vA#O<60j-(n`&_C zy>taw-_82GtbYiW`Ss)N2}-g4THn|`Q(^lnoLYun52q#db71oT`}+VMe?P3I!#!#J zG92E+{@TF0AYBKxdFiTfkhlb_XkD1?Z$rJwN9SbwYklJF@v_3|1gvhRcf#RSj3rj< z;ovf?*TD8~dIj5`gzZOce+)K#neT>WewujsW;@-O-pu+Mu-ypjM`67lwk7HB*uE$n ze#`t$wqHr-V*S^!&dmHXw!aDX7r^F5IG9Uc=pC=G{Sdal!ai+Q!>R8e*URCI#7mjK z&3rB#zQz6nSdC}@li^?tJ%;tK)34B@VAU74uhAV~e>iMfF(1mj9_(?fxV_j5=fh;= zc0C+?Ouq%&MRar6=l+)Y{^Is(2Xejh#n|CtdMvCjz@|L&d^|r(!iwj+y3#XlACyI| zm%)B*x-;|S_3j?n4nS_RFds=D?Sb`~N-u`ZT)GOZ_74uu^o!zkfLbS|;8{hvZ4x7=i$Io}B9c)vXKM3pc^x>{?d&AF@dL*o$ zWZnc;^JKrmkKF!6H-Ljo{JvR=&JC*zov^+9{%SYU{JyMK zz?R>yjfKOaY)|{8*nb9czZ`65uzh{zlVQ^YHqBtK1?wMXeM{ykaL|hF_jiofH*ClJ zXV~_l_rl)Guw4fm!}d#=k7B-n?Z-2pOY{DW`hx9eA~#Fma5n2dVg2XqZwCD}^AT{c zjvmbRJ7C59%pTZ`L9RpQ6JU?`@6;&f|1j^#{&>GpKgXQ+FO^Jw6kSg`H|}5R@~~Hs zE(Qm8!RiLqC-;YUbinz+`^R<;oyz)QuvZ?o-RZ~Ke>+&!VO|Zk&oRFjPJTa7H^D(~ z*8lqgj`tAO{|#&Y-eLE{{zT+vEv(*U{Vdpi%>H`9;U}53j1A{=VSd#bQai-qOWp&r?5TOCzu7Bn^EsAhE-PB ztftwY-bQo#Oh|KogvVjM56e>*V7r+6=U?Vi;ou7MA+UcLHZ9ryBUoi&`^n7rHjj^I zkZj)~*c*ymkA}?vw(kh*UTj|oPHD;fTzcG}--+$_!>R}K4Y29Q_Fux`5ZDHAvOe}L z*n5-x^@Htn);ERqZ059|0h`IqaK0X7{oJN-fkpA_mF-X8N7sT)DOlYHhY!O#7i=rS z=5iDCr&)iBt_9nju&&4Yk6LiflUkgb=Yso z{*FBx*9R}Kzb{~~BW#AlKCPRwz61NK*$C^y_Bs#jwPSwb8LUrhdKK(9r>DYRBiOzS z2i$(!1~$q5s7$k7KSd|~(SBR>r*22C5}$1tuaDn`%UcV3w3!Oq=aHKptWR7OHa>E_ zEe-px75y&kasL_vhg?6^f%QCIx;E@5$F~@)o@0MmVe<@Z_cp-(PWH#Au*dU94TMc? z)SGH_O}ZFtlk@N2`f-1{K614U4wK{Y2J>Y52E&%e+YVuU53b*I*c%Az1+W>xd>Qiz zuvt&P&-^6)7298i{VlM%f!nj2X08v?Cs40X!1g!T{srrs*#2ME7lgx1U*Pk}{jkmo z+cK=r1)JiqUl3L)u)U8i%=RT|uCG@P)`z%#kJE?gCt&*r9M)$0%;+yjWA1VJ&FJc| zX~+83u-BFO%XA-DkAd~etbZ3)uQ7igHgD6+gLhyvf%We*f06aGVbuWk=D_w=IQWqD znRq-x*8lr7&gWzFW!V1l-&|i}`>V*q8^6Tsa~AHe6gbQbXDz_|ANKbE{W~0#gU!#d zu1tRktD3NWi|wDLyTV~3);ECtX0Un~*6m?i6gJ)1J~yoT(UFRz~Ne09ftKv*gwVgpRxS~*nS9mH+_Zcbuw)7z-kQJ-^IKy z^Ww0%4-RTGzlrrtnV+d0uYcHrc?gg9={?M!ht)LL?+RNV)*SDrsxTkU_Mg{^`>!w? zHWOi;!Tv_W!4mo-*te|T0(-0J9dNiAwp&@hm;RRd5&ARcXW0Hz`U3L>u*tj_`*%8Q zbHV04I4A(yh0O1vxqV(4*3V^L0oDQA>;GESU_EnPpZQ|c`;F=4?5_#Eoo)rIOx*wN z=q||30NCD!+{|VBKiPga>l?zs-*jbIU4l(X*t^E|DRj0a@%~cho{EpJ%15t<^K;73!5hNqip{K+gD|M1?F{NTb6!??Mtveo%y}6-;Vj^n(_LYUi5x? z5bIaL-gxG-nNNY$L|D(D`@rD`u&x8Ek6`Pup1C^rWW0PEu>BA8d#rB`tC_Gl_(WVE zOs7}D;XAON0(;5wyTWD>>+`_=R#+)|H`^bof&LG{c0Fv5GhfL354N8I`+vcvKl2N$ zf1dsqw&}3F!n`IN-mo-2e@sbO-2&U(bS_w*t&aV58|$~z1(>g|i|wCazKrz^VDlsMhH$ceVPm#0%=J%a`$u5ECF|?ML0j0gfW6La z-<$c1Y|s5|`Y>OO-1cL>2i7k$&xGS^hcUmG$NP2I+zp3s(Rt}_O}mK<6wP^{(||R^it-3vHfoPGMxq2i+9tq_tYav_h~R%KAImeje=I%l6yo``Eq!u4j7>^AG=Py&LveukXX_k1fgi zR`kQ{Z!{cMq*uXSCHgd7ne7YW^*5{n+j_9otT(W!3F{AFzaDeGznEv(egkr^8LalR zz0daNVcnVS^Wgm?c#(bxwtZn+2lfWg?U)aO)i^jD!S?gu;B|UA>&L zST>3_b?v;hrcj?4_1d@y@2iav7S~xvwj)-+r)e;>(|2e z4D50JRDOJZv@4M7RDPaZ$@-_6f6Kfl?5$xw4i3J9)dD!A^*Yuk%RdGy=Jp!wuVVkD z_<7pG=4se+`L;97dh<4%w6~wJJ=b4vVZMy(cN#WJVVe!#2kbXo-hKRjkQ~3q;cy*t z-4RaR%>I_Mp6&Gx*nG+U&eNa4wjjSR&13tg=sEQBus5IW2hdCC*We&Ies418`k0ll z+R6TQ!+JN{pJDx8SSR1_e`h_vpZkBYK0CfYhS%uau+IK9-Y@gPem=T9Y>Lu{=}z=% zn)93LBXBSXxjsO@2CI#*KaTzq){|I21vc-%W&j<)_662|%)Axse?~WgJq)X>*x&Xywm-__bCT^pfz4&Me+v$8#C*o~W!C3}bvM=* z;C#qDA51}d3G(0$dJk+1v;7s=zY{k1VtWkx)Ai{*Y~P>TpNsVix&61WKi&@uZ>Dd; z{jx9%+n411v}~}g1N-dXcH#ZCB5Xeq4jy9rC2ao)^Pgc`88#Q`nykMc_Xoo?);H(< z!=}tf!Q-2=eFm(X(Fb9#5q%@>U;4FSdm9`+4y)pHS>|1Nzw<%n(_m8qHalSde%8N( z`?aPdtV24L?aT0fFs+BuWtjf}+oay`{&Hg8kJd^1RNSu)Xgikov$=lycHBP?lH*$y zR>}F;j`>xd&x>I1FZv|x|H<>aH16;F7hv@~tS`ZOBJ+#P_ru{ix)^_7IKlevusI0Z zCH%c%2c3t%hiryT3s|jXz8nsc>-{GD-lD%`-VhEm*nT{07BJrotGTdBesALIiz>_C zqdr2eJHu)Y>)(a_Pw1Vn_bKad;qQ<0nLozgA3vbeVf8NS`Fo~65jO8If0N$H{yt>= z?XBbQFNVw4<@x(5U$1m?{@%;i51rB`uJq4I-`X~Auj{bB zHXPJqJ`PT zM>7xL;4S7~z;+^Rjxv7-wk2PP+k5XZPwx=hEP?eT*jojw?aVi_K6A&oUTuSIW7yw8 z&!hLy`{>OaB!LV zCf5JW{2HujeRt=0ef@u#mxWDcJ})5od$GIuJOIPI1ib+K8Md`yTef@LzpBUl zMc7NDC&Knw)-Qu~OIV+TeLhdaHt2!<^)~Z&VK0N;2>Ywq-w8O}37h;q>1MFs1?|;9xMwf+H;H)<<{Rj4%zuXiJ}*mU?-wsm_eO3Xg+o4H z%Qk_7!R&7^><^*egViv$Uq+9F^>45l%RCw1F`h2}5|+>Bed)EZ{}pm|1Xio*tFYZn z-`ziMZ+5W18nCyQImZ{7Be3E4Bzu(k=mBwi`xo;KaBvCMnO}}`FL5RMDsuZOtZuRR zePAYR^T75~*56Bi1nW|;o&krCFrUD@5^Uzdsv7I}!d?wnWf_R|OQZ9{wh7zcL;JAR zaM+pkgV??Y^G{&EH>?lAnzn@p#mh^qpM@>kYmWa@w0YCX=fbKl`cKA7seIbmmH8trn9B*5n=6GDw z5>}Ov+itL_00%GAN&TyA-+=wS$-Fo0zsvj+wx3O(q!+>ZeiLthxQu=Xw#(_du)mh= zeYpP*^k~@IOJ~s0vjn5(2UZ=5^C6^L!|}5Qqy0;(pP0Xf+++XdW47On+^mMp_w+At zunxB8V7&&`Ifh~TRr9XjHQ~E>ZgW+UIq_J8|GEPn}X%frEE%+q1Dfc+WR&SL&1>PGx>9Aj!`4svAdM2#@;p@u^Se=GVxl!@u|G0D z#P++{{+`is|N0kLJq@dUtbY~ukFtIN9Gs&=*j{G)Y_G@tscXz1fxX17VSNF)o&?)J zSl^57e`VgD?YX|%XU^@_?BA|s{cXt23ifw}>-!~rjQ$u_2Vp&v?e}ndCct(h9FAbV z3ikRlU&;D*|Fz#3R{NMg#r9X>pfc+@Ka);{&Er^qU7Ym;V0#aoJb%I7&3eucYYH;w ze6B%0*uM4#t_S9N8GRSqXB!je#)EY^Sl>=_zA*a-KTq8^Hm(m&(mw3}#?Mo4!}btt zcF~7fpK~16hxPVRcq>1znWq2EllkW2=gZ1dXKz<3M@nY-k37Rx{^qSzJXWX8W$;@3)AtO+E+5+Iki#kxz%yzm6I&;>uX|%W#~U)|6$nF{O-T?gJAUt>zB~wS%25s zxZXUw}W?MA$3K{<3et^4Y&?1KTRh zGnm(8`@-L&z9BsZ_MfHq(v8`^*v7ct(yH91*kKy;bFgZVwBH=(sviBsme_t>`ZOHY zVf%qUpubwob8Y>vKZbRE*5~~ZIoIDbfo-z>)8L>P`@3;lTyI*jeH+;GnQww^bNa5I zP@imXO*mP;8Vq|+vVH;_)}a4p`^RC^J-q|% zlia|T$6uYKA7lMpJF)(n%O3)Vwdvnr^$hDP??QbOdH@`@pyx4fP2aRTu21%#dE&oT zBVoh+YeM>Ywm-TD%cD(&y|Hy0tdA!s?*iVj6{(W(Mn4F(a!ZtY{UxGcJUuq%i zljCy$Hp%|E?U%T}pc2=wGaM$@`&L*d$K!_malQ8d*S9Wg?_&FbuwRJYMdxFEwgYi{ zo0onD4w$QHuqnv)-@`iTKT{aDSNE}fRoE}i`VSAH|NZaa_3j_o`-!f7D9+6W*bIP! zZ<)`5^ta|ngS`yqjbZZ<^E$BqF7xNvejMEcwy)3wVbz!I`Cjg| zWBxMxYs~yb_E&@M2%EBWH8?0jH-uAC=yc{c!-nm{b5n6VTe81{uz3>pw$T+~Wm#Vy z4i_^|r57?U1KU~5%fk8{=J&y70`p98@G89v$HNSwzkq{2^rvuYS6I#A@oP&@f^}nh zDje2k`&qDG`M>r`v3@f1BFqQC>Q=fJoRO3D-C=pYDE4PzIJklCit{nNIt97G`Rgg> z?Q#D5*N~g?ut~g{*H7YNu%C(T-@x^zXmgR*bF#bvaCnLR-$$RPEneTuA6&mw*#C|B za=f0ZV{~gcq}5)$9-C9lhtsF&Kl%FpC#;6^_5UB{yZQdY{b72*CfR?vnBU0loyhmA zB(DG)Zm&6y_d9htSstvD<&~i?GC#rh+kffquwriV@co(lOYP$O`30_j57?*GQM~_$ zN!}l}f3yEbnJ4`nz~_x1aRvGu`=5f(FE;Tru$S!5i}*a`onikoX&w)?1fQ?$VdhQY zU_Y$$z$v?#-@tq)ZSncdZlqu0=et#OUfBN{HjDZBa4}sK)?cxH7e0RmU(i!vHJ?sr zK7;Mc!Da&UQ~12=ze+EMy+N#hk$E5bRygcIFT>|++m-EyIIc~1VV)Nb+S5ny`Q2|p zZ-s+rU^5w3HJO)zy~mjE!S?}Eik{Bz2ZdSRA6D7v=FG3)yPv5Dd*}IG@G8E4n4|PE z*gr@=1&4ds{s6wec-xsj2m70uZ^!o^vzlJU??d0vU6_ACXNAKIdd~Op`>mnXPa9%; zbCIi8Vf8WH8n%<^qOcjy{?_CBU+_Bp7OY>RAA!BWY=3xNyu7e4-2pZ)vA#U>fy{Hk z)-dPyS2ddXd-y)9-)8HKg%e*aYlJhy0?F;byzMn41>!AqjS7Lr>6^Zc8nM15?6+lo3s@)D|MRd7 zSl<-(mav}ASVlKty`>w&{yMhj@`4@AJ0n-WGVe<#?>}6=mxb?NPqIILo=^|5zA*DG z-^SbPKLMN1=tlG>ux>@aLw9F;0|z6SKM&i<%rGK(GUpCO6zFzlz&z3J-oNZ6~-&!6*Q)0AEhTc7?C4!hA)nGb-~80I6GPou}ulj!NJ9}9c) z=@GD5$@)I9zmsmo`ctfbl6mrd<{nrj--rHQ8Sg(Y3%@U&h5fAb5m@D-e}u!lu(HhW zpa;OF1l^2zS^6GWKSm!}f#p}HH^D(&*nACV)TbvfZ%lW9&ork?!KOW|?u5OLbY|G^ z!uqw}#LEwRF`o^4{phjG`_tu^zd~PGj`MFAZ2pAPhBIFW+fnpT*t|)f_&RQ{lkew0 z!uDh4BjAAF=T%WS{Dk?|WpVo;aX;8wfZSYLiuI$_+i)<4?H{C*<*izR_4$zPhr(g9 zewAQ5gZY8Q=zl8xI&72s3w2>Vo%yM+;(9Zi&VW@0-46B^!Rp^HQNN7&OjxgGUX|WN z-^ltMtl#$qw&w_Q-ix+>GS82C{~Ys=VDDdg1lK1!@89gj_5{4&WB%p-;{7Fc9Q!l5 ze{D362k%#z8*%*n>b(E64K~UBuaZ1pp62p)@_c!YF3j^Uo$bGXO>)1kJJ0vFtp6R> z(Y^NQe)>#apS*vkGUN3iNbcV?f-UbanlG3q_g62&DZGDcHsbZz@cyxB#`nYI{^q-U zKTPho|KI!ja@W6rQYAX_cLMWHq0;djc{K;e>uNrn7u)0=h2IJ4M1}G%+K#PL*o=Y0v-IDv`ICP6ow!~n?Q>0!9h_u;{bBDE>z{r%&ea*_BVq4%<}+cv zoB8+5x6+wsV0mj;e;K*Ign26SPw2+5{fM3k2UF?ctbYSGEnt5z^MSC}kKO{SKCCY~ zGhUzZgXjiu*n{;WVcUlJa@c={dBOMM_9pS`ux-Ko6dbl<`-g+L-fv1*guSO(-;8-x zdJ!B{q%YDB(YL;j<=+jP+OU5c{U#jV#QI&ZmxEsSLEJugfb|V$#kM7xe+K)h%&);- z;_e@!z8LG*&`Ez+V0jKU&gHHj#r3)j{UaPE%PahGoSWk8?-|%HL63k_%F>%)&HZ8S zpB=YPyNCUM51SO${|bkhnID0J3$Nk&$vr1-@1227e|i_4dv2VouUTIn4nLHx z{|DN@C z;{5Tyrpw^`)ALzB7w512kbZ#Y^DO#vobSO5w!Z^5lbN@}^^`h>`9@r?-gxH2czsV{ zUXOXwe<|k4^6!H6N38!9uNQg_`+FNUTz^#q4i_>%#Mi4u^k7&orf-4mQhEhnUsurm zVD%lWZlgET%kg@ye_?$?`Y@dhHal7W4&EQm?4s-Q{bN1rH{kszNS4hGtyy(%-jHQAnTCdU1R zd)WVA*gHs9f>V>_z58}t?;T*?3f`Kue*pHAPX-VMB7yTU%NXH$vww=qBQCfett=fL)Mx&f^2 zfK3V<7NUO{_uuyI;2;m%XQlc2qCOgn`mAhU4-T@>e~*cCmE-|zv$4PDVLu1!OEFJj zo*y1xfcc>};{Lq+^i0?!+y4ZdmXqzzy^i{1e=LT5Zm${*+Y;<=@PDoDVfzQ!-_g-= ze?c+UFNJkc=3`)U7hMbv@1&26!v3JmCOEv8`D{2S2^$UTa?EdLUXk8AGVaelPS1rE zZEC{7BkV5~_LKLI+nICy&F!f`K`*p{uN%o>tBiM)j9fY*!)E|r~jZU!9L$_ zOal@n|0eq%`f_Z4C|wO!gJ5$9Y*XN(!F4lxE}1CWd0DG@;m#>0sE(z|Mp_sf7)O468KEg z-&olDhwango?L(PM^Egp^KAbX?EgWRg6(noXpgwwJIem%!~QY)4LD$KdcrEHZ%iLz zeJ42F#s0^@-cR&6xaTI;mx8x$rcZZ|*GF$;{T$f)p804vSi`&#^VM_}=HJkzVEq+c z0`?cuwOBs~R*%E>13Dk;d(scU>IJs1$-D*Klle1rvc6BS{SxMn(ci(QBz*+7_ptpX zI4H>cEbQfEz7|$D(sN<+?{Ivd8b|*Fs~6$$EZq+Fj?*<@b(nq<_IJ^B*?u!@s>60Q zoklOAd(ofL^XM00^%LEVc~+i3KJ$BF(~$X-u&PeCg8j0re+Bl6(Qm;)Vb;%t&27w= zGS9~RG<_5EoVZ@pm0@^&C=HwQbaUAIo$kf!YcKs0>$lL&V1G4i6dbarz_JKS+N{Z->=h*lu8+39p}O1${Sc7qPw)Uti}jZv*QO znNNqqcbTt+&1B{WnZHgeydMO^=!&o%K+lD}_OMw`x2EsJ`;UHxZqN6tI&43meu8-j z`&H;ncz+Bl(y4s^EXVdQzT*-Sl=?{mgpJ&r9Djp9-7B z%)f{Ih4e8vn8*48_&gTOWZn?=-lF@^uhYX|e;C_$hxH)lWmw;zKEvhrX8jDh8}k~l z?ZEsrx33M|3D!+mzZd&U)n`5!_G;1(aer2&4<(A%lnOC((+(C6{`XQ$Fj`T9tkA+VmrydLW(z@`vAhWQ_OKk-M> z3t>Bqeug$|pNsXc&|l&G(H}y$g1y0Pe+R4w(u=y`^W01H8?f%d_7!3E0-Xu=8_`R< z;`3Ks`eE4Cq(A6_JaJjrB>t{*oCi;!UR9x=q<`xa=YDniU07FQ|D9n|in#~dd+9ej zV)=K{#b8x{{;Wfs+uLAM1J*g|uU?3AlZEw7V3nEvt$m!U8(2RU4zCQs`+qgq{zKo- zoHi+Je}Vbq?c)BzTiE~Mwy`sEv;VEIO`*HMUOv|U)h4d@lI>dw`-$&kUWDy;J|EYc zyXY~rN8bzw+@EHRkM%3g<)y>+A^MNjSbiC{p9|~q%qPHp6?z=a^G6xFG4l?v*P4C~ z4m-l;A=vbxZ>D*^o4;Gd>l3`j{5{wk#s1pE|GVCbvp&h!w#4?1X8m)p|0?^-MJLPK z)&kq#kM(cDsy*vpgH3bh6JWmy^S5bUUurHKB-hvH%r)yjp)1hyU{#v_fbEOX{g@}m zzYW{pgk05wEzd{u7;Mh*{5;b<-adVTUJM6E=uxlD(?q~rLHV*Vp+2QmK=R()nL}w zVorOH)16sgj`jD#x&-qSIJlR-+6?DUVb&jqgM9R6I)(KM;P96J+TK7fXMgAMTfbV( z`V;iGusXuO1(-+gWlo#T^akX?I@a%n%}VB{V1Fs|6R`Iw^POxTF#iU&Q|P($8}z$y z_zFE0Hht+~u-61uzch{apM92Y538oE|Gi0^hpp*pux-!!`(Upd^No$;dcPO*$KbFh zz2dnzH{DrZ5e_=jTb_;cpabg-?bA=eemd*_YJ~cR^m4i`J%)aYegam}-*R+(uiksN zi?5y^cD|Na|6SpaRPpJRHG^lw8MoH_WQSq>eX@1A3{hS?F z_ldvHQb$GGlTm1E_iw~`&(>Fc#7Ae{`o|39=4J7P;Z<7?L~f$v6Sc31T#pbpU0LLZ zKO2^=)}n2#V6?bE6U*}LIPs_#mtUY*j~+>Cf;?m(b&^z zrK`Ps^x^!|#rD#btBb`^{=WFam<_FZi=*{hAddQPD3<>0LUFV{WyR6*z7qGJFs^%k zRppsWk(+TfP71CvGlL@i0zG|THP%+cRuMy*T=5ahp$!@%l=Y-iS@NrTdKgm zlItznU**NJzg1RvOL1|uzi$&uefP{_=}#A-k2Q$b-`*$gKkB9*j=bj1|lF_|wE&PgXr$9`$NY z)V}T2ZhzH@*Vp?59y?SV?f*s0?-R@R+ofXjPJz>BYsbs?)`@G~y7Sa(vDE7y#RWR9 zZaGw3uB^8E=mugrKf?oJf6wx<2W#Q{Iw+RqkL?ZH!{S}%H;gSPj`sg=;*?R7y4k1V z^)r8p#}D6nWu7?d?;6^7n<4~`a=wOb#7FlJy)yd=tpAJR3+pO& zt0$KA@uKeo#TyPBn_Dc$(~K3Trf2Ts@WdSyyNN_Y-k+eMH~K=Zw66 zOuAUsU$+$7v>aWpRgAY!Mav(xLXVj(mi=RzCG}!ie*FEt=ha`|$Rv)h*C-#K@y1&f zustor>zhsP(ncKRt>HJWJ{q?VpBJZ98Qo=xIJ!O}7oXI(c{6c*zKECf+~544@;ILD z#ak<`xja@Jz5aC;r)+xjauMXFdsIK54 zi(+;1`8U=-jQ!O$YCr7H^bTSLqhzsBN@-~W_vU)j>t3S8PXJ-S~J z)o&CxJyBWJ69-FkG=EPVolj5D-NdrKUPZAwf1>k)%%l4g7xJ!1KU}7CwYB4_=;(e# z)ZeFK*&nKaIAwdm=Do$y^^pthkKYUH%;H)dj$HaZ73&|}k4T+)?b6rc==JI>oIXJ; z$J_iW4pvQ0|41zT1-r%3@|TEZebr|1uDZL@-$A|qoj6)wgWO*wj`xpPw#Q#7K3Z;k z=PJkpD^Ba#j< z^dPRc8Di=0^(JDe*VDy4s~>2VT^w!C6miBMwU&HbqI9*l-pl;PMDfheBEE3{wu}A5(f+6|j@GX!Y#WNFp7^s<39+2NL3Djee(YQ^ydFgN^C~Qz(QK($ zmKO{W%lqRk!^HKD-8%P8v8?~GE@El#PZOtB$U3=+xc*1CH-BGT;LPG?PmAUJ^FI=Y zFZ63xKrH)DeI}OufARPGu|JoHr=ArDOMrWq;ef;;8>$ zipJ{`>=Up5xKOiRVyO=!7vJ5ZQyFn|Jbqz*;$9rDJ>spe)#|iB9PO`YdBK$|ojQtT zd(1X*tq-0X{UB_AVEy`gu)IxTRq?l`6U4GVy^Z2Izm#iM6E^GVoMKtNSqoqM?(TSd zy)|N4-sr*N==CVFcf+QprNy#*9l6&0104^0cs+^QckJ`s(HUadUqRG=kYz&0XT;K8 ze=pwk=C)Bv9KC)->lbYPc!xMTUR%Y||EOP!#P*~6 z+vD$Vd*Kstw7gwnRlR4^VdCiei|&uh@<%m8y*Vtdu<^5|4~S*?-tY9@!lkPnf2xu? zB{q-G?|8ph_P4nvj{3WNC(g%Aaz9_z@4|esyxyrOw?Fh7_0s>bT<;ei5l81sRIh)o z)bwt#oS)$>;vn}O9e3S1rb@Y2i>baa9 zONpc7UtPR)NvWpI#nJJ3R_tYOe4({C+J7y@vVI+3LcP~b9IemWVp)INU)*%Y-Az}D zW&MH?kta@RdO|Gw+aDvAmOY|(eFJ+`@i0_r8rvO>8v+mSzrCWI9i|SVp$*i zu~_!!s10J-AAa=vQpdp!My(S||MoMn?RCrWrQ-EVzw7?BIQ7Kvjtj-opKrxS&rGWP zuJ~w`&rU{;{yu+=Sf0-vu7ynzIbLG_N9L7b?`P&6V6&6?n{c?B`OmE1&-@~+4lvIn z=S$Ro;wrFWy-9=3KDHkK2RqpQV_0uwzLxD*GT#P=-_T0VcUhiVLO)7>MR%o_((_=G z?4Qf9UB|q%TyN6f|NJuSCHwCiSbxX*e^{TmmR#@BKKPdTP&iE1e?Fb8?+!Zoy)m!6 zzC`Vl<+XzSZR~FhZ1>QsS$~+$B(HDM-aAQGf$aslDXcT`_tZYHpOt=#zMX!LF3R6q z7sBDg^tZ6C!un0HO@0slm$}dUDS7>l_HTE39~=&1e@*56Aj(J6-@vX-7xW|Yekb+eH*_^vuce=b%@1@3SnZ-$(1+-Y^bxwMynjpo!BJSfK_92T zhr?s6FD{=SqU}4${7%?Ue*ez{dpG<)uI>WbimH7B_$H;f5>f(#bYB{zHqw3Rh9Oi0 zgsZfGY$<6jrIawJqo4D0tk2(i-gi&WnRCyaIlO-$ z4|97zK{nWrV169q>vZ&NSfuCu2JK;Ka|d?q{R-!>Ja5Jet}o2|NjrWaSf}RrQ?Pzz zDvsZT>znl=0rRx1{~FuR&&2wa+@3j^Z^ZVO`RL&F-AvytMi1xy^dWs0`@5=24}nEZ z`Z15E2J}~SQ~DK;=l1k?*y}>S#Q8vWr{}@WmvjN1KL*lUaXxatp{v5qINHbgQBS46 zrDxG4VgE<^63*9R5&b>=3oNR^GM0G?*j+*QGp|Qx{rSJr)nWM?of&pF!s4IIVZF1J z`F7abMf1C0?p}Hya`!0vpTqh%U6Ru~#rn3ecb5K@K4be~b&Pp&ERT1P{u0)4^eR{# zrgL+Bo}ib}r(scy+vjh3HeWw@Ka%41)0fzv4ck{-r6<$Z+0WMtpZ7PZ(cGVIGY_us zg5&2t`)|UL|Im+M_bFW!`=^(f_gf8xU3>r47Vf|HeyjA@-`z*-p9(v6dM9Ab`B9B= z{0KY0fADy+%To%+o4Sed#1i@z{hYSr&F1lJr~F{O$3x~xcz$|L zFNbw}Eh+CiC~DV0v@u7O+^# z`j26~j4lfMD_Q><i!m+TKrG6xL~(r)9srKRGw-+xwe~z~(u`xZW>7N3ox|(~ho;-0jKw#;{}W zC+`F639KJZ|3Jsk_Wt$7u-L$S4Xo_apoHK`F#L&fcY)t;sGrA{XLNn>swgQ zfSt!2FFv-f^NjwAe$DX?(Fyqdhg9b8mBIdFzt8g-?Aq@e9%i17^&gnOhnjkAzkjg+ z_A)UqZvMV%a?gH0rVnht{~@IL`>e?we!oO)goXY7N0tx6+|7gWR8!c=Pal9azrUj@ zmq)$*zE8Xga6Z-?T6xQD>%JGK4P9&%I z8|>NndBmL46Q5KL`?Z~)Be1gHH>xX<^ZPO4f3U~z!>GJf!rZazdoir+_n{s!x8LvD z{1L{p-+%cRcJ23Hic}4A`+X}l1J-u@o$#COm$+J3FYWfq1}nS%a>Bk{Ked>b=KAUh z+wU`pBXkw6zjv#LB4Xe(~ zx52tQ^Ncma@${F>qhZmP`DEA~$b1Uy4W<8JK88+PD;&?8OgDm^new+2PKDKOSWRdC7#93~w0Nf;roV`JCfHfY{+!I$ z(XC*22i=eL2k1wzI1Y;{=JV0ud~ulW2Rr*&{{!s*LEmBhcGh=lfce|Xd>-sESC3$4 z7xP{X!+L)=-6txvwA0%T`v*DxJB^SZv;DA3iyg3Iy^Hle>ytFb^zP7&Veyb&1S{s^ z1ngZyF7h=A`}IZEmw|pZGXvTSf7d6KMWS{uzx+QQqupzIz8*NHxK*W_vvWb zK3`x39F?2>TVW>;{R&nE>EtcK@jO2NKxBkPd5&KWcB-;|BdlsOFWeH#W1koC3+yyx z{du|x>kGCD>ve0oJM46(*TG&__NQu%@js=bV7~+Fd4HALiuohfbA0hpo3P*3i{Y@~ z^E1Ssu*300vbJHpWBZH3UL8)aBP{It;Qe)eB~CwaJ4~+v>l?#@7JFb_g1KxT)@wdr zLiK@NZZCBh7WR1-c{_yl(msD;I;=RJNateu6*)hnU|oiu1q=JUi%YOulJk?NBgVJ$ z-v)MU|3X;hV*OEAWaaqpb_)9)hj|WI+5N8!EcyHm(Fbjo9SQq3-wt~`Ux*B!hV?Gb2dW(G^ZX;eV9xcg_Q1lP4_?4t zcCL>kU9mizo_K{^C*}O7L+(E3`LF;S^@Qiol5oVo%-eIk`}7LfyG1{S)m7X78K!@o zo(%h}7aD$3f0y}R94|vRtdA3PEm+ytpP{gSmg8@Moxkbx%ums&x?_Iq>vLY%wXe6W zVe`8wct5oQR@-287xs73d3%K8`G2y$2`udE>2lbwiSAuwHZi#VAlL55=6J26F+W>4-ZJ>j`nX7Q z{>1xVV0^AW!S84Jc6#HHORgWq?^pR;9?|H_uwNeK^s~Y~x4)b7`uN=67r??kk7ytBWXvOaWBJq3vtW@07I*2)%-ud=y~@b^0IZpdld!PQ z|G5b}_VvGJ->~1c^OL4uXz`58QxSIl;qvnP(2hNx+OVGczlw%^dwqElezShl_Q&$^ zcu@UeVb?dm-))a4Rc`?5ZN40K&T;;p!>+wPOFuBI_c(v*3s`gh#X8t|!2UE}q26x4 zzOb_SV&=D5pK%cCZQh8s=ckphX0FcBc70_T9QM1Mo@xnu>=zAS|25ZlPgvXQIex!i zzsK$G3<<}3rJ@IuoJ?AOsuOjTd z;`$i`EBksf0T%Xp^)&3;*Q3Tmu|DnV(IEKE_2^#MNzVQIJnQZ2T{0E+OM84AV!wSJ z*mL;J>upQazq!7d4}11{VF&ZVT;5dQV0rEJYA4vW&+{4q+kSNrR(w4aDTjsq+Fn0J z!>%2_7wqx+MYMoLYA){)=CtZLJRDEh*W-S$PQv*e1$%J}`y{?$p?v+MsaIuqwN`N(j5kJpcCHFC#Z|9=6$dES|wANxGBO30;s-rGoy zZ?6w`!J;~+R~pk(HMu-r!#=N{#a>u8VBT$1IDbwf_FsmD^&`3(^FLr|uUDVIx(IXm zZ8)B5um3)UrM*7UsT#L z;dt^Zjz0}n!#Mrr^mzI>>`Z2T&9Ug8z-ttVSb(YMmqPzu-;uyN70j0wjVcD!7$yNA=i!}@(3 ze;UU>$@~QDU7}l~UteVXQI3C^=JT}N3-qGNSYKDzzlDCxyxNp7_g~RHVD}FF6RfY% zVk*YF39C)mGR~ z&D@7$6T$Kl`xCPMI;`Tu-al~J=i~mfPG;PO~Cg%7W;#{g!x`r&ZAet zUJUDhWUgSr{mJhMtAWUMW7c&L;mJ@aL-Xv+SrbUj#|gZ*+er!R`bdIoZ*5ZwhME`JO3 zdrM%oklxAZUq!uhk<*vVD|3Ex!m0-S0`*=!`V9NIe0mG)wnwghVcrdvb79>V)*HAy zU0A=0ZqE7{u*2;khry}>a?u5Li_kThXMuHYSR|!ie-y4C^_a_h64saKZOrZQw+QyO zA=l$!e+}!q!;$kva2*>*l)&rS4m9c$!ysER6Fu#d8-Y(b; zu1C!NAr`{2JggE{Kz(q%9OS3UWBP-b{|)=W=fx&hN8#}E+o1jk>?CHshW$^>=l?-{ z4D4FJ!~WoThCzP6OgO#R;C_a{7fOWo>%t;=$lDcSJDi_CkY76wi3 z9oC&$Uxd^92G*5Xzl8nunV*3D;Qr8H`5wZm7p#&O#QY6r{RglZ&H9G0AKdR5^!J0E z;Qr2F{#Ua;c%GTDIzsPf{udqGzZmqtWd9XdrZ0r`8QgCdwhX7 z-ai-QTUeiw`7v1Mg;mPJ;rOBm^Wv}{+z%H_?-M$>f6Z9!;`-{tyaVRf3+|5!>IWeo z9Xx-~SPIzX@u3&x52xn_&({ma`vF#SU{N_=m^;67y#0AY%T~U!z_P=l(V#PdGh)6D*^0g^moqKM_t3cJ{#XJ=kAB zugn?N>j|v?5RMGKuM+g@ck*%FR#O1@ckfTaS4u~ z<@d0^o&8l{9Xy{Zn0`^_Ghm$^7E?K1YSvGrpXCVW&mGJ9)36@Jd=>o_^U195MfZjM z;QO6s`noafwWKS-BKSUTuzVlTbzzkdc7pHI1^pMDaDG(qeY?PiVJG>dSrV43VU>{i zBKmr!a6E4|JrGs{U~wyBn7b2TIS3Zhng5j`%+*R*uYvu|uzL9(#{Y}13#&)0|2;kO zS9CjAzQg0|Q96vDksby+xp{nLguN2<&a`2@mazSsfDFD57Hp6An0JBQgmBCkut*B4 zQFMG*&iHTcErN9fauExw!t?>w*My@Evi?h~Kb@B6n|`qKK0O+idFgquUmVu4%qzfR zCoJl~>Ike`u>Ugb1UhTYk)?hWe&uo%PrBbND8Sn~WS z=E33*=8IW>99DZ_eTCyap#No_3j3#uhx4~C%KbO^{z)+Z)nGphEZT5?&d>Ax2-qpf z`lZavGd~3DYOsC)i^g;U9B*#$Jkel!8F>8lV1IE~2Hy`cxvt0hvGljF_}%!?go#fl z8kfFPz0v{Wh$)w@<~8R7t#cKvXI{_hH7wIUx3QDHf9ojYl6B7yEo^-HZamS)J3SV5 zeuO;_mg`})02T*fy^#GkVRtd>U&11Iez%#vcpuZ3bD77`c6?g!`d>~!uGg^NgT3H+ zxpVwP5xSt~MR9s();C_L? z``~-Q=h?>U7_Yz1!1^q#t!w1Q>xuP-x7--ldtQ*2?AP^58FRgu_{z*otXFk#{pere z^t-|0InC?Q*x>%AvitgVo@lNo4_CdsB=~&I`m1Ec-iZf z|2D^e{b$A*Yqp!r_v>l{mQVHN`}uFM{IMNjQ43b>`2PJD?hmv0_X=JQI=|6rv3=!Q zSk~b7yA1ook(X`8zrT)yoffbfg6$J|jn2XK--&-8&I_OH2&)NL-l$Uid+{<@6{Gv$ z{fwB&>CJ%sNw8dn_b=W{SoG%mnMCN9h4FqgdM~H<9^S9I#rgO1)qMYam;M=lAJBtg zu?mj<3YKxO*O&Eo;Mgzdhp?cUxMXsdME7dWBnvppM>R9c))4a ze-ArnnJ;Ahd05Sd?FbGAEE>7M!>Q!EHW_v zsC2l0J9YVaNpn~e zUUUNF;x??3(|M|d{W2Zit!kK`iLmz&j-3RH3w6Rg{ERO+ zf5tQn?QTY{_rQ7u{nqDwa!L)=H4rRL=~{9o|7ZO2adoVJb00?&Y*hV&EI zuSS>d9M(H!VKD*LxtVW+-FIz2^VfqhFIl^U{rVoPioo7Y=JlChVBVMc33@E-{6Q~c zzJ~qrJ`Ts13+WM`gciM6e+TwIWzOdU`<Rq4zOQPbck$`HO%>dDu%#e?`9;25nGv7=9K3JJ9@{2`7r~ z+cR7~^${#)!?GCjld$j5@AV4nz0~v=SiSfP`(MIntna(9;(fE;MS2PIlk_cEAEay8 z`(o*}u-5c-*xvw)lDJRRUrFb}vFI+M9oX^M{}DZ%`IoSo$b2p=htoUhuUP*ltb5ak zVDTBvbAf0|+x}XxnvZ(FGV>wqFGokgZX{ilc}_Y9>}8=-vOXPs4eLXvq&IW@yaOx# zj*b(b?t|QWIuP5h3F{xx1(@HYpJV;23-l4#I|r+U%+E0I1IrV1b>@dy{~r7IGe5-r zVJAHZmRn(29qzh?{jae9`RnNYu=^YP`!N3>^8&E5nE74o-_B1oe>cYQY(Mw^d2~{G z2CVkr_|jA89z5R0()pPWX8!}85Bf0QPWNE`1MGKV-U;^F&;?+(1?wO3eAJBIMmMB4 zz@j$$f1=CN<6&8fZVP*nbP_s0EPR|FWgh1HV4aozk>}I*=wYmXmu><3$zhQnR*C2* zIDf0x1F%0Hg8e73ng+|ebQjpWL1%!SOY~*Fe)#k{Sf7JMe^{QS3&ZXi`UzjJPSP7; zb(kIni$7uYF}?LCTGfwY$f9xMW!OlavE-Y`u>IvpwT&34=d41ORfxW-ze9TYNhj9Jl zA7{UUATvP1t?j59|L`hcMTVVYMBW)(c^E zpY_b0>-2K=Uu6ILuz!kqzxLty?jE`@EO)TJ2mL$qS+KW`E(QAw>1?q31AVU@#-9SK z6|nx6c`w)>%)A(^deHWJjveT~+J@s@Ye?^cY8L&d zMcD7mXZ==s0rOF?yOeojSTAFKr8&0GDtaEQ*Rj4A?A!HM4Hi3CpMmvudz@|-j;HPR zS^_&h>qo<`-M+10b%)c-LO){t>84me|1uv7%cpcbSUq8VYSuqwez!^3@871^(%0!x zu)ImPf*m`(NZ1qHpX0GU5%=Hijj_BbnEwXLjPx8>kH6jnU|ukHVVh{B)t*# zYto%yryi`5(G8eyi3qOFgPJ>s5Zo+!W{)(_$ zpUwt*%~_uqmhG88s2`5+b)n<4zX$ye?DVBqpk585=dynsEXKfk2J@TsF#alfHSDjY zhrn_x`&+`wUJsOo^%3TLPKLwl4aMhbxc2%au5LIzd7a~Lg1x)+cG!8!@zyg>$m^rt zu=_5rpNhaT1M>{5&qmjV9bS)#0j$r%oc+2eod~&G5*9b=V16snso7tR^@TZp1Lhph zZ^}F^a_!RDVgFOQ80_|S2VhJ*JX>Zc!XFEKXbJ9mxE^v=zNMeu&c{I0<5cE-VY@0j;L z=649rr7ADvps`r|X}cQ6X8O9cam@JE?cO&I zmPZff({=KyyxHshaLYaHaC z81GI$=iFH2PIu#$2{N7g#Mn&V?`v#+m*93WSbbycd{MvM)9T^$z454TH-nyI-1TCO z+k=gFyjQ}XZyZdol5y}H<>39gT2`q3ztu4Q8e{Xj2j_bt-0E*^=1=xAKKagH^*R^_ z{R51{-=Q!L*562DS#@*UOA_mEg0XoHa@!fk!E?o@2KC2ApKW9uEZ+=cv;JEi(@G=k3P9 z{B)uB8VB>!(m2>3PqO|i<6!x&8VA2)(bd>2pMS^L%x~LFuzX}}eutvomP$pdH1AzZ z{bOv_$E{(;X8!bJ_Kz@56|by#&3@0=OwUbe{(foZx85(t!Spg12fu@{%Gj(QFPE_y z|JDj)vwlRO|L5R%C~X`p&q3r~Wn=R@8E1ojGd-`i@sqgiw+173sv5_(-_y1x^D4%p z*Zfv5k+B)i3I6^X{LaRo6~pOyHI2>u)Ei@L=GSRxJj48sM-Jm)eYP8Dt!cAAEKZ>`%jt?PnQg`*{{5UC$gXP_Xev!dA+`o;@^xSO5X8W8S z$o`zh&hUC^TxsUuV@^s-%G}3`FjjC4yJd_*erjK?Z&}# z;{ylND`U=oX8)7d;agLUgXg^8Fb;kP=ONCQeqeKcn((bTpPGJo+t{4XUk1O+6C6K5 zZqCmy#~7RW@va)1*N1lT%9>oI*FUkB`AB24KZ2ji`vyRug7M2 zWYF*R82$Niynd?#@a+cX_1?^{JZzj~X!4$yjLr7&gY|EIH|g_U=K8|SzYad1E1NHS z`+tnhcq&}qLzCa>Zmx%d<-KcibG*DJTL7zf)oh57t2`d7Do zO>=!}=2vGn&e)+``;EqC`r>_K^Se?#Gn?ySv%X{oV>A6%|1&n@sWiwZ<}laS!S+aL zER)oqIL!YBt`Q5Uf(%8(uF3mjnoi4LJ z-Qe?3Q-9}zaj?DW8@sy~_x!@V-wF1gC}Xc!#@Ct5`?-5%8mk7VKXAd=_J_aoW!^6a z`=3O8hv0YHjQzlG|L$Ax`D``3Uk!g3F7VsG8~66_%DwfwbKATckNU; zynna9dnexdT|DvD@8+que^>AA-`#ubclp#?zuPC?`dz=bfA>$l^}B$oBL9BF&#y%> z{Cz0=9Xzvs#Bx{%zk?Sz1OLAD8LT$KE-gN27rtN6))QgL-vJb}V0R$<$HUHWj{h+% z#xw5*`}TJbe_;Ir=FeCk{LWplJ-f6Ir|;0_1 z4|_+Mr*gx7|14bz7B}c_aComkFuf(Py2kO&u>TzEAJWH}C+--I?;T+NF046!q7dxx zcO*p<*o|fVa9G;)vjO&|Grs`)qv*%1x7)-14zAt4|Ns65bJIf>A#w_SuUzID7~a#N zzSO2KSdODl zvwkEjPQgmS{&Ch1gWbcd9|Y^YG;?nc`#Jx5JNu`h-q{R`h3x+y>sQ0kOXxpfcQN~q z!oJNPvwu136HgAe-@R3=&k4J~!J-K4F<0$iv4-_S;8@nnZ{DgO496|w^d`XS7mmLG zj$tmA!_l7V~ScGoAS@SlIr5 zVBgN~zpS^@i#HX=>oD}IEN}$tbs0F;u8-Pq4ChC+gB`AK)eUwRalCy-3hU4}z-wns?=J2YI?D2R| zH(_PhKOM>aUEV?NPvQ9YVAt+1@up#ap2R#k>`mnK(!-j^gUAERam0t3WEVILrpRv9m?0rmkfZg`&pA7rW*uM&vjp##gY<)UndboUU4Omo%RTbu+ z!oGy{AUKMaV_=6C(_z&X7s%h z6Xvbyc5q}X&QCNfn2SNM-vqfH14lQ7)pxLN%<<;IvH`so7PLA6yVmF72)jM5!O`4a z>H_Rl#CYO19Qh&r1Qz8uy@>C_^%q%*d3M<0{w0gRZXMe9b4=larHVcmlLhiUE)(xk731rm2qaczT-+UcVM66$?UMU`)^6u;r=Qc!Vz}=Z34R$FrI7+3tD{+ z`#e7Mmo$$D-35*;!~Rd%Uzm=D@8yKm2sq*cSo{P#%=O=}n~VL=;h4Pa&paz!ep!J1 z+37sYbHFM)`%A+SnOI*N_S3?;Epu8r=q4OW(lsL|a(S<@6iV!(d$-)-9P=Wq)BHZ`>-4Y%NwxZ@#S1(-W9ojg6<5fI9PRn-QBQm z&G9tdoc(L)n#`B8zbLF1((kbTNBTO?PjhLW&zv7%@gwuuupa(ji*B&|j{Vi>sj$og zi|^@|czy9^(%WGjLyv&{5wNIF4}oo3`XJ`Vfs*#ABA)^ulBHG;K-y_(F6!MYNx^0L1aEOWqq5%y+jRgaXqbW(D&h(3$VTpduL&F64u9Iv4Z{k=&7*WN%w=D&2)Qu z4Xnz+-by+H^X07P`x$Q$^EkY}(Q{$F0d{7xele`3!E!3!4^5)KW0kK%yc<0Yb~~|u6zsKvbw@f17ENHkF6%#nb#+)~ zfkjz5IqXEzulVTb-C&Er2dOY0= zRyOYf>#@jXOV*EMeM5RE?A83QeMt{Ou8PCD66{|56Z>~w=9gjp5`Pa<*O^~{y&JIL z-`5l^XCrr5uY2~Evq6zHJq$|MAWZI#}!ZJB5hcHh__kp!w{pZYS*`9ti9@mr2Vfh-?4d{2# z?@L(ag1u7Ai!m=smxpC;x+*NP!J-!Iq^Il9saRi^{fU^@guQ3GaeYt&R#)jL_MfLe zWB+k_5G>+gIiB9dd<^VwhV=;8{eku0(bMQnurq@F2iQLd7Oz?VG4tfuUvx9(sp*ggzZC07(Zyh8_veE2I^<3+_8){rcIKC1F9R$eFn^cz33&Xy z!}=%4^}|1KKBL;J^v|r{MDOGHYw7#2zYNwXaQ={sV3i$q=fkoT z?9ZmF!QM1jxXi~f??(@($HL+(So8B7Zy@_4kjwt8|C{sQll2>6)fH9~Iscv6-yRkn znP+Ez3!3ZKt4qJ)_K>hX3(I26SHo_0dIa+{tmpnAlEI=5$BRd2r(f*C_IrZ;)q4et zI9Mh^y`0ZH0jvhV{!7$rdpvSHRemhux#FXa)NV>E^JS0jmbEoJ5y{#RxhJ`}@#0$KibW8ND4=F8u@Dj2;C0 z^Jzu&=n zJuId%pUm94Gd-1g71)^wi$e4WSZ0BBU*-v5(G%8xjR>djbfcHS@^e`Ah1F-U%m$0D z%r6ed{L^|j97~JYulek@e+^b8VE+Q| z1t`h<_u}Y7E4(_19mqs?+5F>%-h4x zDdrXEn{;N_e?&j~8tXS6m;V4PQp4_IxaIrIN5GC<-_fvJ7PU7bNk7)tbc@D?`D3P z8hi=Z8f}x){eR!~SOMuS@rYWfNHR zhILb#>(}c5>y{kvGxkgNf62TCEQZ6XHtQ!cufqD-bX8dW50(wtzn1;2VZ9j^c75{w zy8esnQ**qvT%W9$lVEoT`~5S-t4!EyyGI6XB0mRpgl3iLKuq+vfT zpAW|C1Fa&EJ11D5mi0cJ8GiHk8;5>?T<3vhJp6q~6@Z;&{CiP;Sfrz~GXDS;DPX@a z{S@=(^6yXL2iW-xxta>=zVtxW4~KPE*dNclHuKqZ1$qwaOTcn5{Q?ZrKMMhZK`s}bM%>Dv&KDrd^X;G8T&b&VB zQ^H;|TEK2wSl=5I?jQP7Slyy~F~1D^ed#z@4Q2g$SdNC}&#-I%9z2WrckCYp>jkhF zNv~i&mR`&JTlVk%uf*uroUs!SeqWSlF@eAt{@$day9yc}rzJCn4 z%fJ8Y!?4Q7`kn0O=LIqrcFM4SHtbb_C70i?MfXMSHfDVv*0+Ss_gQfK^79bU30C~P zMK)zV4)wYr?DF#-QJ?wG%p1TumeZ>Vi}iFh=DYrzd&k&cgZUNaRcU_S=2wK{Ua`Ic ztWx6hI$Z@8>ECirx)gG^FhAeR&;C-d%nExFHs5c;`l(C5pqtV6Vbz8GS785h`aE-f zeyWeNe-itT!mbCaZS3F5d^IdialE;(yiSj1|3lW7XMJjZKAj!bY54hcfq~)jxb}Vn zdoMBXmynf_NAi9Z{V^QF`*Xxt_Va!jF^A^;F!Co@@_rUI7rw{)MZ~XgG_8Jvy_WpE zd@Jki{bPGzW$&*!2fMVm3&-;Q5t)+fqc+F;fad(`g0SNKB)SwFQIqSZG_39YX|-X; z-v3jd{q}yThOk{e-2nF5alESR=lwdWI;?we{y4shhIKvUsy8eu!m<5WPs@R@s)0Q2 ztN-Sa-_VtiM~#4WO<0a(9tAtYnY*w*gn36;^o2!N*7t$c5IE)w<`dw1wEPbCt>?k6 z_5a{E%fAuUc6}V8S+6g^KG%=F!+y@6dERle#t>-HY?X^JyHH&z^6EUB2$9kFm@D6&%6&6(eBJ zuD=Pe;`lO#^>+VS0pIJ&>92uhXD;7%_S^dn55NxV-{bi525qPR0*#?L))$BE{f>(L_WUVJGUxe7w1Ral^s8=gBy;^c9AVEt zynfa^->G7_zK!AZ#aTGk-k(~4*ZX$;E`#m< zJ_ko{g4KE0-N&5o|LpfEF3B3W1=J?v<_*;;RiS(cJ=d9lYs|IlFUXE80 zj@(KYhhsD>`S%592m6a4kK0YNU&gV%De`-VnGb~(tz$X<0p=%Z&X2kU$J*_6pZ#3l z@-gflM88grzX!S}I9`7Keeg8>A*^Xp3if>Dq5&Lrh4mxozhJ$T{ipuxxTEws=);`Jdy0Dbye82c?($D z?ejStXOG7iIN~JN=V~~T^P|qvTpsZd*1xmZAqx%`!RVK|P*mn;uQEJZGB z@bBx^%>B*CMQPUa_z?MFZI6$$A@eU-{bKizJz0Ve5?MjT#xCi zuUT);e`{gE<&}%r&-t_V?eTROxwiX9K71Y#x0B-+;pY|h{7?^8cKr6Rzl!UtGaM7k z{(i9F`WEBih~HTME9`Op)d4taHS=4r-Cpu3{R{I1_)Rh4oco5yN^3$BlwzJy?B1H)g%P-s=ea)?Hy|0P6MEut&@9 z;TT%{$=voIV?V8Z*j`_XE6mxiuEBAw+X%;Ue)KNb zwexcjj$^$z3HzKsae=wrzSn3w{hP4efAkaBn}z9%2!8&_*LR%;jnZ&?Y`;&czJX(TK2T%fNIU-{U_X}gKMA(q*OU|BH{bso1FN67KBlpMHa!m( z+#Yf%Y`@oPxt;}k zoPV*J{TyHNehbfT|A)xqI6o>a@7I`%@kB8=WY$KydXhVAhpo5G66muLcen$u^!zYSI#Px5$`jX2&P zoIjWSdtliG*1UeueOZ5o^+RCyGRJ4GZ_quF`!`wN501P~PlVOKu=HThI+pnzkH0!zJPv(T}`qKH~DDHnUJI(d26R_W2 zFFwcgBDuXp66E&%jLrco?thZ^)FraN7?&N`T8i2B6oQ_slQ;4?>E&g*guT%Wn$b97<+{C$NK}t z3FbMF+xL62(0{E;!2VyH-zKoWL=T3&3-ly72`ztvo%5XDb~xrNt>HKCr?$b0+e__* zWB0TE7#wZ4Kksj~f6oy2k&Csc*Sz0VaeoxNztvsNT=0I*g|H~X`!{LboH?(LL~q#T z`!O*J7E9Sbm;KgjVf(xXrD4VCtL<={J)Sqwyxx)9;8?qVZ-8Cy--6@Y_uFa-a);|* z|H^)zKlN7l-d)VE;`GF0&OdYiIV_i=-iwFln~0xaH!-~cj!Ff~HL&3GQp7jZO*cYsjOMv7X;2h)xcRSI8x&rxNl0T|0gWIDD4N+s|(?Pjz|UJO?IU z@En-nnLAfvi-gaBO)(44*eO~ve1?sD^kbtcK}|Oyspt!d!`%PZ!}^#D>ua#6 z3#()FlSE;?yP5T~;n;=r09eeWi^I+&`dC8r4}`^3SoC1t8upvfMPR2Y>kGiT81oNd zuK+y_mPJ{A4t9$(mzW=2lKFhtE6dz2Uq!kLmfx$+`u(t|PnYKUZOZzwux`OT3ATsd zmU$n#3v&(Y&zQf0-OuU4*uJ74>z}~hAi4tf4?UD#35${RJJ{cpq6^bp|7s-nN4q`N z!j2vPGVJw7zp8}&TeswRaoqnuVm>V;_NP3|%cg?UFy92LM9d4N#{Teh9`?Vq^i5bi zM7`WZuZ8tAdNAFMZUcKY={&HXnf?G)$!X4?dOR1$V*}*QX}SaK{!Y8FUJk4J^dkCw z*8j-*Q&=DB2j*YE@_V{4b6V`;`u&OhJ$OD@$ofKD-;3!B*gmeEegkelJN<{)ALLBd zpW*&7nd3i#osrDBzlZ^JI*cc~vc3eYo6+rHRg<0wi!$v05q5JiU&%Zx^FLw#UFJTl z;?oz||IZKDJ_WG+!n!xt&tvA?AN5l@FW2`Ax*6=SUUg!Ak9jmKuF`#Bb(a2|{m1B9 zu--I9B-rPeX!^PJF94y{c~AA2bPnVpN7>K`ZfDU(milIIA5}VFWr$YhvQv!qUZ4V z|Cs$wM0kFXpVH%D&0H;jRcGcqnY$b>{kvhmLyK3i-;VV?(;#m{uZLB0I#pUspH}%` z&-Uj`7v|z8)=x+eC*u0Q{$6O+n(P1X459UR^q7pHoi+49SZ$}T!0u7{IqR>(qGG17 z-+j*fOW04s<7X`_)6h>~Cljo)XU6_h6?s^VyuA=JdO; z>dgAKT%LjS39Jt>p7jIl`k@cf)9D=Oms8o_2Uhm{d6w&E26M&b|Bn4}uwcI`f%#Vx zSicAsqv%3euzg0e|IhbB3w!>21#5dgFOn7Ob2j^bg2f#6zkn6b$D(mI)X!!8M%cCE zU4;E{%u{3!>;1uWS6KI>&%v@cUDFBcy=ZzVEPK%JMkrkL#}Fk zfc`G5UkUr2m}kw2`L%gd*s;@JO!r~`GuX3kl`HIbIXy82mUe$ik{i=+$Nu@S(}dH1 z%De$RJWp7!>a)IN-q6CneyxMu>a5S5598bYJsN&M+h1T$v%YAFFqd2CXxL>g_}kY2*|m5=rF zU?(lzoB2Pp@%o<&j@bf>|th>;e>BjW8-2WQVg}MJVfYsmFe^ouYA6<#{Y3O`(ERF{+6P=mP z!~O<5o@p^2$G?}Kd3!jr0DTVU6TcwG8wxvx==`*uzK`>hn}hwE=`5@t35#@e4%kUc zPr~`mO;2ax`R_eg?Z^33q+#9zcI@9$uH*cxXcY~M2=?FM`Q7&S=J`JZ$D54T2QMe< z>+&wrWmw=tF%=hqm)E+NGVbz}XnP9ga-8?PMe;?Cvxc>D% z<#_pNJH5@kezx_^V7CYBvoimJ;~j|z$JYbsQLy_B>+8T`ob6{ml|Gpo{j=#Iu=f)z z$}?Y1Cx^vq)?ZE;_Nzn8m&49cx(M?l^!5~}KS5W4^(k2GOOE+DOMe8b3#`ABEX>^- z%%{WtBj$Br^^AU%G_3ap&xf;NFCm>C7Rl(*Ny2)Oo=y$x_vtU+33Hhb7JCwh_KGtv z2fG!R-$;nO5%b=#(~@~&SaxJSGeKDIc4wX$mi_59@iG0OtnW>aVV(&VF?9cUVZA?x zz92CEBDyuKe}&a2ufxCnicQSZ!0LDU+^aBmce8#beSmodSRY~j_+?nHjxqlpc26_! z2Rm1o=Yb<`GfxG_SU-J%`MbmVW3X>MfPT!p5Uk_z_4&qg^e3mM(HUX2^%<5gl6hyk z3|$=7Rq3R#YQp~gPceQM=8EpaeEE|w*OQr7fZaLt^nb%#E}~1p&Jy;Yd>rPU^)}e~ zp7~1HoxuKuupUOwgylfGEv)*{xmn*IR%ibSr{@e{-UpV0=tRs%&_6#4>&1AwHmqV` zb>tzIZ#whxu$s+$=Yud;9`jDHSV+IPALiaN+J(h$>_2ud%$-flyTEz}J^5~!`v>SN zcS7q^>~916=jcYaQGc2B^KXR~*XY8qzQOwSH^bb!MSlRxEW93lcq7bJae5zezY8pU z|YZ{8ypBg`E%C--s?j=Y?e<`k$+q ze}`TVJL%~k=v1&O%lgE0HdrKN{p%~3pLq0U*m=qI*B{pZ(jDk~uqaB~^?l(o#=F4! zOY}+BFM-uTx+A@d^*Ld81M_#8ucrM=;rRN0tZxsy_WeX*ST1Lt2zHjT|Io#--{tWu zM#91#&n0Lc|LPR%#PWRj@_g9uMbXP)QP-aDU|E^o@1wpfJq&h=vcEFy+Sjvqu*l8& zJ%5M&GCMsJR+-q}820SzWinW&WBtj$u)NI0AUZSq>%!WOA0Kw|vp?<}rqB5m-C(~I z`_sT)dDj1ZHmp~YUIF`6S>GRa>d@6;&GjkXV|{b>pFe~7Z^QZ-u;%+ORTh?=Sbyy_ zrf*-*{Zs$3_?C7#UNzXEMZ&kd^d$N_aQuO=-a<6{*bw%c|9ZQ!!nZj_G4lFoBgLQ?ArYGQRF2!{T8sa``_auVXi82yveZLK4J*$ zRA*iTmJR6a?6=!z-(k$Z-9DY*H|sM2tnB;cnTNu9ua%uYSU089!9K6o#KO3+{>}7L z!G0~)4>}m;*5b|qnERKg2D|q7JhMN{MLqUE+6Om;MM>DV$9LYnVXp1+p4k)HwH{A% z{zX<;+3U^NKf`)egX4FCbtO(eIdi*xrtJ>v9lQN2!CqnZKmG&r!|knR!m1?4D+l|f zSs%9x^>+Lruqwy;>~tB{uiF{c3)?@Kw#R!7*x~fVgB@YL%l%D^h5ce2@6q-!e^WmP zb~!!O3ii4GtG!#pdd2M{p6k#NcK=undv^Udfi;gmk%+n7-{$^~@pyhvSGRkGrWK7Dv2a(jMD0J|TtUv3C<$DS{5tcUIPd$BIG zfSsU8p`Cg3p4fV-6y#;IF7koeV9_-rpV-HqiyywhM!Jd6T_9v|Q{!6T7{d=6> zEp#@!e5}vId=G86|0>w4#(X*K+v9B`bG!YRYo1TlNY>l)^ANflr{4#5`*Qq_u=s{~ z8(58|%foUK>+{0iO#1GsaQ*0?SU(VU?fb9lu>6DhyRdVJ{l`~g{rmI+SYKoPOjtZ( zz6e%{czv=C_TT08$tBpyMyKQa`SXE@6jq_vQ4>1?@SRciH`}tpO+J64{5&L^` zyehEA_aCAxbH$ui<2ZgN*7N;@8Vzgv{^2{C?-$ev*k8~7VYGdJa00g1hbjlR*J;*w zqp#Ajuy{z{WB!V+!s8Deu2(%>ImYwg2PlzT>l|-u{6f$`lkqK$bwPf`|e|+4E2V z87f8gG$2CR1=;gZnaZdv*@hxppa>{KA(V{>MOlJCEXW4SkUf4^^7+KyNqoYjj?^GT+a-vL-lx+jZ%0VK0X6#k?*1yTQ6E^NO$&zK>QAR$nlG zn1t`&DRf4TH;d!(T~F^D`ZDUxYSurczo+w{-wWSQ%nQ4_*`J>I0s3$BtKZpQkM*aS zkAf|aPJs=riebK7)~j%Tp5k~($isehh4Xu!c_kj-q2pjLeE)I@Y+dE@GvM=NZnM7} zY~N$v8Fn7hhhX)Heii3y9p-IdmsS&DEA(0VK9^S?*H?DfKay5_pL8j#Gr{UN*m;J| zfa^8=EZqS1a_`a?h4BPLq{!`d(Mo)viw)9VQXV{#Ct)6rSTpycH z=`yh0pSF4ZJd_>>oovgw+>x2V9STeAMObHTiD}xrX=rQn48)3aMow${mwwTH>~@? zW);o(R-0kP{b5ePZe#YB#r>E2emEZNHQ{)RnYUnm6}DT^`I3Y4ooP-2b98myZ}RhJ`oT^H=JR=f%JYZ%4OW-=c|Q+Zf6_T{ zf9o8j-{Jl5KDr(3ZKS)w?n?R)Y#h2E?ytS@{NEOKMloLl>ml@7*o}kDuk7zYKacx+ zrx~4@&jZ5muR^d@k>d@8?KkNouz7{ff#(ZuL5|lEPD;=GYgpal_j6V}uh2W_Qn0s% z=JO6`Hk}U7L)=NQsQ|07%xCg>$q44xm=B=e!}Ax->l3pK_QLC#)_7jyHe>xM*lEY{ zo8x(pXEQ$poA%7h;Q5gA5q%am4e3>UzEq9A2kW=#F)6|E?i8f69m4fQ1Z--;<|3{K z)hDoZjMs-lm~UZDTS@dF=6rw7jD@`^?4Jue@vL7AD?@Lm!|UZg*&n{2_S~Xw zraA0}@24Gt?crQrjo+|+6F7cf*y8(wW;g7F?$V~?B z@1C&pJooouScmW9*Z3XlQ;c~s?7qeRJST$Otwc|OEgo+s_sJml!n`hQS7d!0tg6y3 z?AD@R`2*|Q1U5}z9UlKXVHL;vnx}$#r#F2NHsR+l|7onx#~iOYY`3NR!f~`(4m+U- zp1AI?|ltHJnAczm{oO_(o+6?1bI*4%zI5r5xx!u@p^wqiLyFI~s>_viXGft`5f z^O#R&z7w|j`x$c`w&pT#h`&GU74!($e9!R)z{;gZ!PZ{ZPlR3GzZ&NHBJ%{zr-V6Fw=or|emBV}i$GZq?{$5YzyN~t%mgDt?%_`O(fc1J<=Xns+C+uKe z1GavpUx(EnbUWDQ{jK?lzJlE3dx-77&iZk%bBTE>{O|Q>wMRj{%llz92ez-V{~&W- zznT({v3+UGV_@|U$6w3*A@du|GxPfTl_x>J^*sGCtit=x4X|B`d7h_OzpC^U*beUp zx5FOqC(IdGbwIs&6Yo2zUhJ<2n?ZC8?C}0d(K@_en~U6<#_>+U`YZZ2?9SzQN0=|B zN6^b?8&<2>-yXKVr)R^~c6tTu9b~`D`V-8z!#b7ukFax*ehi!Itj~k@!_+@?b-pk5 zfc3RuosPe+Z2`Mk=?<{{0&K>z{zZB_U63w@_tTu0+259ajh+D8rC9$Rtjp2Az@|Fu z&%tgj`WEcHPv3@BYx)svhrdTI#rNxI^C{oIvsv#j?*yA?@V=fK{=T^p-|u6tCh`5g zF04;x9@al#-j{jtjKTYO)=(}l3O3`Iw}YK2^fg$`V|_EeZ|E?Or?X55E8d4R2U*{m?@OL$J`(oM)06oA>`^et6?9T|h zVg4uHNA^~+e-Nw}v%VDU(CQDokL)C}ei`kszB#OarT6mv<#TidmT$kr`Iyh;g}<-q z1iJ;9=Y#+Kz0D$wXL2#G2dkT0pWApp+B(JM{Run!nR|SHdL#3Rufq}$M?$zv%V_pKV$wP z?2e;7E^jjHmms&N(T}*l!sh|`dAu!U{vM7O>pOZX>@1_x^LXd|x%mWETpyK_pD&yB z|ND7d$ln8$=Jje}{(hho{SAL#SOzvl@p}V1ydPKqJ7rm45WiQ@%*_P;-jKPu!{0NM z<9MI*_YUFx&0=-=r=6{)5j))JWLA!F(lb@p+0m3cKf- z7r^#7wECazQ|<8ibQNITcW&Y0lLA~BhcZ1`0(HmiR2m4Qa zfchVqXKfhRSw~lb-PLp_=F92Xu>J;CM`1OGzD3WV3&#ZGt1s!6u$cgx3mm_ri#hrQ zw(8Q~z;0!F0qm8a4=^u6r@<-@{fK!c`eiI%-`$G&Ef2ew=o-v_rR&pM=}xfsEv!bu z<|}#v{WoLqvVf)+x%=f@{Z~6y1mh}r^uQA=7 z{q^X&uzrUw2%8#o8Q3ld8_m2l^BCAEMmLAOmssBf*14G1VShUMeb~MI6ZTIB*trNB zuCINH9>My$}0G8}o7OZ^?WPtlncjl6h_B zjhR=YU#82k{xR3D1bqZHMd;kD&rS3A(ivgX8oB%QN6c3|eH%8*U~_@_7T7yZpJKj^ z_4#`RpAYMMx)^L0(|PGx?9UB5W0>cG)iCC-z+NxrZ__qi7j|P<--oWl{1@1wRmr$u z{p@#GKN&WaS)UAhC7BoQjqNE)cZGH6Ut#AJ=2oAeUR!i?x-h+p&P7-LG^lsd)AeBM z!DgI~Yry(CtlnmRjxGSZC+N(ubBO)V(0iHZfbDJco3L8L`f99S#(VFR|a+`vAz=Q(JHoMP;Vu0{EuOKF6-OEULxHTcEbJ99M(Uv zza#5+(s8ia&;I9_(`xU>!SWT4HwJO{_m> z2mRskWd_3L8}?^_!|hcoKMLyYub9_?t*IRE$96$(CNpnHPoaOq^@AJkzu~Z+!Tu|4 z&_A2?-@wj1=H*~-K69^iQ165u3tOx=H(CX`n#2Bh*qKG=fUTKy30&_K57%cBY*pg& z=EH7yyeIPdC_npW!cO@48N)mc*XSk=wocN$VfFKWbLad2=I(M>jpq1M=+D_df*!@Z zJKc|N0qdUd#YW86Ho|=GflZkYFrN$P@7@h;hxZuUb>O&u%)fvWLRW!x=%Y1)daFO{ zd%tS^9DnV|KXZ?-Js2@u&h0SQX3O$Ct zT`8z{!uo0S=g3V?*q+FG-h-KNe-y)f>2LV`QxHyC1e@h`g7MSV(FS%l(dA*YgZ;y5 zV|`B0jo=)oSziV=9`h%)f_inH`Dxg@NgsjDBYF?4v+#Om7oCIN#`^s9R@k!WEwEFJ z{uWkc=nBm1!{**Q*q)|z60BOYegf=%#5@)@pD=#|);*bDj1I1?RBy0;H1mSYr?NjA`yG0FP0a5KdM0eIW&aR*Bi#koF5Q9NLpOlE@Ors0{U>sB z8=oh0f%OOI>-1*Wy3KkAb{^7$nP=kld@K3|x*Dtt&=#y-p|isF>-05zex2}s<23A5 zV}6`D?_bOb*beV+9>KaL>P-=h@7e6HNOz{&!MYzk40cA)1L<+F=>}WV=r*u&=q}8c z{kLAPgH;T3-XEH>u(zG{&%#c4|Cz?^J;eUs=+msoX@>nbWJ)h-5J&| z(Q|qJFG~LmJEdS_;rm2IGat$CneB7lU!AT5+m+~F=LgICcYn5kRV4F^^Mc&GNKb?940J!{cX<2_hOJxlMA!?D*RNpr zPv)`oG5R&w*#)a^u(gAp%KD$^y|DKK{Ro!#(y>2_a{Cs;raZTA9$ghS(^(${>v7DV zgJbylHR)k%IO{iX{rb{1xqcmJ#k?84a&9o6I(**S2X>>GSAo5Xbgwx?F4D9u$3&D0%SReZ;$m>>Rz6*{i5352mF#gy4et0rHu$oSvfbH@0 z9_FLym9RGiHsfI3jjjM&t?1{O*P=U43zm2MHCVNVb@;rnIIP}a{nM#Iz2@^pvxW}) z>(GT+e{f1r@9}!W41iT;=EY$1nAbBkz6|QkO}cji`cvsPlLNa4Xa##)>HL#|+?fcQ z%@YIL;q~5d*y+pq(#$*4hbIK}hR+jKRoD%mA8z|1$i4Ec|C}z#<&}q3B<+5V<>#T> z!0I{npB^9NRwjBYoRpsK3ww`wegAk|P_J&$vtj2Fujk9bR(OB#V?C_+Jj7iATYP?HhQRi4K2NC1`kovw8rC))#k?hbVknmPKD{2c zYQbhc>{Vsn8Fr(XSAd=3^xYvCuMqtU?Bt^d!s-QBHDI2XE(x1RTESi^+8vDfs|cHR zuxUsagH<~^J8XBO9}Nont^Tk&1v^9N$*>Ne=XHkveZDkkAhz#k*5`xmJsf}SfFQTS z=Vx7EwUza+z}^PdFX^^4wPA>lr z$Gc14qc6fH1CRG(u=5=K6YLh`_>0+JjGhkLZ?k>~tZUOfVdn$73GpWkNg5B`%NrPeaF7sjRZ%mJby|(mtI+h*| zy8~gv@tiTt2O+noG4BPdWz03KZ_(xH@b7z3^t1f_F9Eyx!|!L<;rF|F0akCZJ|pZ^ zW_>D-f2%%yjsB3%Y=X~+%7^PKQyAx8Rgdlk$8_TL*BIFDNhjg^OE1CwfJx=|nZx^o zy!`%~#k@PLCo`YJd>r#k_*8LUXS!dZl2}!N)Of#oN6jJ+IHWzUKaat*YUAPH}rpAK2^6@piygC;ByBA9kTT!B#k* z-@$GlcHXp zsLx@00GD?e{&)Q<%m|MEf9L;;|M3Ob4cE88S3$kQ@yrm|9mMTl1)HH<-rw{H=H+ld z;)cg}N7xy|{5#nCoc;?o6FA;$v#`FCn0JJoDfE8Wo67o+X9x9WF7xzr;04TQ&JC>B z)5l@!d%E2`+b!r=*4wP--|y{Cbb97JS^pty^`Yl+yn%Eq*LM_s zmg_f>j=}c23G}zz{^_u}59_JS3u1oV@pLr&@B0*OVIAJj^n;zQte?RC_Vgn5hu2S= zV6Or54a{r6=37|5#hlj%P9*cD$Zg)gsQ-IB$g6*amCBhCzArfRK(KGDc8eR;^#7Z6 zxnGF#pS?M`);6jsuL!CNd|%K%E_eSE)Vk><^Ihf+oR02Ghxt5MKm88xS*(Yn9>Qu1 z>+dsv%=+8RKe!u=uW!)5z)l+d#yzb2P4>5eozNp-`#SUaut{aV3wwXiKf&rK{XP4C zp-;n3G97gv%ijc>$*}zceFfGVSpV(=%-8qyG}u~C{{?&N*#F|gpx%V}yEOaFhyS(u z61KzfU0AQ+_(x%DA>IE`FupgAPKKS~Tz>Y)L9PcduMeA^^eouwK%ax%R_w3-1l!w~ z`2g7afO$XIeusH1^D1-)*eb{RuVA+f^WCs6%lwt6!SYlTT?=+!VSR7d^F5_vxNB&<_p=s6;=-Ov#>pzE*lYy zr)RRhGwe*K7c-yA`V+7>33hM8)&%C!>9KyJ**^t#M=YyNtpmG#=&rE! zDQu?0Hgo+m?8R}sTkP-4{vsKJ@m=Po8LWG8yv?xlF!HLQ=&8)0W3tPeBa4!c*GZ({vj*j)jeTv>wcu@|zw6znB3 zug82I^N;B1uo?q)TJ z7FNq(-J0IP`j)VJ0k)g5KV8;f`MN1x7PcGHAHYsSx-;wR!Db@t)`8uH%xkm$XIRyu z|AIXYD=S;De5)e+>%iu1*2luS6!R}(w;1zHu#=bhF6P;pABRl@tg=2EEYJCUHO{v$ z!Fo6Bz6@I~^Ahy;uqg+-OPR;O_6+86tpA+(0_MYEeGE1O>5R`|{`=7NVAUOVyVD(E zGYYoa(KDI1VE@nbhp@T@yY-l>?7{N9YRuEY?%Q-;=0)i@VXFx2wxVC8SHkM)s$f3# zkL_pLnVXG*t z`@*IG^H1TpT(H}l_0Pek4eK+pzCP?J=C$a%E3v=cWBoPQji%4RrXuT4z+O2x%WurN z{my<^H$<+t(cE5ZGwgOmZmnfL0JfLICLVSZ=}E9Nhn~a!>9D&PHsfKvgt>tg?e%B> zY~*$vJ&f+o`f&erpt(Q2R;;g$dhY|~HDOf;)={ui4t6cNH2o~Bi_>>-yqQ9<`Hjb8 z9(p5eWoP{|SUpZ>_-oAJ5NUdRQ&M`O@3Byiv{A zWpna3g7rGFT%YP3IDcC$>3p!;obHNxy9jK4;rTZk^Cz%M54$yRK6D=}3&uBp@%)fT zzl!xu`xJI7!CoA!3&JVgS)U7byRkk4>p!ORaeG%U#eB`6KY{gNIOaWiAkLp&yCvBE z(LA5Vz-lsV)u$cSzeBHs?YG#!nDxbAcN}b9qPws^2W;BFPFA`ptTMp57VGcfUfX?} z`7Kx#V16Ce*D>GvD)arYcMdk|xIa#_ehzF7!)|xj-pBriu-eJ~w^+ZGzJvX3ZDPL* zyX)w4ygpdO`V_c@Lp!jZ4(nmC_XYEouoF*LVm=sli@;VN`Z2D5oUW|r^^obrd@HY? z+B07Y|NAUs7_Z-kv%Wm+j-gA^V_|(A*Z=w~tPbFQ$E(2o-IMo2HR(RE%j3lqhI3Ry zt`6h=E9FJ8|GeZw+&^l+UTg-zUS;MZU^n`I>>saweH?Prh;D)VZKnzAdA}dmoIZ>D zedQmo{_=C;d4!Xjeu>Xhe8*l**?(W2zhpW;t6n(%U_9^8yHRh-^Lfb6?BC1hL22}< zTfzOe^Q?Rx{pBUx4D7uEo4Pjw+ZCC=mWKQFM)cXg1LtVY`jW8j%)H6=^K>`i3;$5rHW=n=mjhci`+LA%Gy2dar(8`2z%9-S3Doo>n6;H{)PUo%rn8>Q0B|e1-UbYc}Liq&%6-5 zj?N6*yI5bA{im7NX8k|(P*^=9=V$+T+(+k!RZgsrdV`+E^{qi4h3y9PP1tG-o0IHs zO^;*VhRy@K@6$86{HpZRv%&UzC1Ev~w&=a7L9Vi~{_&rI^-XU7Y}mU-2Ta| zKhFGlj<=tl%6ud1UuFMddcBABo5uPwupLjQoWc6_X8lOmbYk8LcG}a=z;+kbuRHyp ze$@qbhOz#6*c(IF;PO_`O_AF>>3sA)ditqgeESe=%E8_#=2c+pJe?c;?o)atm;VCy zM;fdP(#NnqRyleN=EsEldpzdTbYxxu^KbWq%}&@IM>oL!S2O9^uvx_ZLv#}JF|hLk z^C;Ne#(W=_x0`tj*!hKd3itnS%$sn1&(TepUuHe+TxC84xw=VDXa9YAAN&35G5`Gf z5A6EaYrbFN`sIgBWmvz)ycBG`Mf3P~D$|!Ro>iUwBRPH@x(b)yi1m@M*Pi)1%zH9l z2CI0wFqZF4ru%Sx7Sg{nPok@F{tv*0PCLZBI&yWCuEG8H2kUdO{}S^xn=yG!Y! zaE_I%KYJv|ony>@Jsj9PqI=VsuPFX)evJBwJq7}np= z#W;SL?}c4jwZ;0nVSRsWzoJz!%%@qx@ixPjfB)*Q-@8Y#KHt&jVRs{}Z0sLr7rh*| zf2H5R{&oJKr*MB?pfAAoJ=n}*o<;8O{rwZk{=9S?#@D4`GY#uw)uy*%{oS^#Z_MLi zH1n&RpEYz@&hHu4|BU(ft~37twja|64+it$W|QYd{`!rFy&SN~3R?x3^KXah4cf!s z5_J?^h2xcH|JNMPf1c&f|5ezo#rk)#KB@t|i|f~v^%b!_uK#?^U%vr#SNc!7zxZB; zBZ(DcK6czLSH^#y=hr_$9v4qvgw-h6tfI#-{{(i%GJhSm{pW@Lcn`3C`V0C5?1f$h zyOWsrfz5P|*8xtN#XQ{p1$24jdIen?wpX)13U)U$ufXxPFs}or>}38SZ2ipqGuZo$ z-U8dFSpO!r*S$u62J5@5=X|*tADmD3dHNRTD?fb+wk+5j) z#(!SzkKYQP_p}e_68yY(pljpvp$(k?I}>5EhM)K4%)XTHqubI~=yzf32K^7NADp}N zH?V#L8(wdCPw2k9{>X^G_nJGb&&t35cHr_d(W|+<@bAM}ust^aK5T5-|NF4Ne^+z+ z!~8kSkCUF`b%))|^dZ>JPS@i6=b?XrO(b1}`|AzZbfx+CaJ3uuYA}Bt_oF6;{Ryyc z!~6#CS7Vt^!Tqim{{4SG@0Z6j&x`wM^(Fgl*qTKr@qXK3y~6#ty^?ts*jvr~FM18V z7Weap?^melxc|2fvOnSP;PdC5V*N8|`2M=cd>MU@`Rp4(Zat=-y&2ev;QK4bU^^3R z#@xbq&(Qid>Yt}))Bd|M{_%VQHaX}V|DgUkSXF^lR{B%e%}oE__iN_#A zP6^tD!+KK+pCj*W_RoQJIQ~)QWthLn^U&)Yk5(_!Mfo|*Me}p1Bj_U-&$;j^=I=Au z9HMJ-c{}N>^d_3?ZzaKM8n#C*X5NR}JD0A=d=l%k!@@S3Y^*QH@iQ~$eXkBZnt2xHyEuMU zIz6}VIeH+h!sSok_JsK|)<5cl{qvOhA9Nh&a|3;vo=z9z{v8ObmazK?^Tn`kKp$XU zm5#vijkUy_}*|orpv=lbJo8Hs}Jd3 zu&%@Uov>Y%d1-v_*wyKFu+sFGup7<(y>QYy%pbA7Je`@(b>E~5!TJ@tDy#~?Y7p$a zKxf4Fn90a`1M53+*nhvl_BB{V;(N@b(!Ke;caZhVVArMp$8diDnz3P@{-W_&I(iXl~RTSNyew!|U?^)+9 z`b&QAmV(s^SpJ=`VE$ApY)Y`c8o!r|(>-8QjNS(8SLmGho^~vHFu%8pg!Rk|(+^=U zA03JBZ7&<$9@bBLVgG&!TX*PG=2z($e$St!_rdx!9eoGa5hv(1utTd7cY|D=Wd1cB z_UE}51@T^~d!F^Z@t&uBna=ze*C`k2iLf2kzw`v_ zAC5N_R$)H%X^)+;khW_#I=O4kQH2bGA_dkz*eiBx7 z=?J{{r<$-nhW?ly44cmM3fSomt0S=27k011_Hft~!FzaWGV^Az=dgbm-`o3^{+9I{ zV7(94TVZpK`7Sy;{tl}Su>K9$`VCee!sa;Z2eJMP>nE}P9L@Lo5-!8;Zshg_`V7bO zVDkjlC)r;Le@8Zln75>NvwsTg{7A2-*U`sVzk>al_;>Dk%!~5x;8U5`k+!u$Z7$&VN4BOM${}+xgYZ7z5Cu$|Ie-4j7)|*zaJA?H(m``T?Nqipkc=4V|-5;$N%lzMu zN1nC-xif*iB^pKRxjI z=*9EJb-F36F2K4bY@K4Rng0Sum4qD^j(Za}N$f8H+ljDYz4?N9KIGPLIPD*t51n3c zR0{nOy_SxF)z`398%`Pn+g0GW_OOl;Z%C=K)_+gi&UEsv63C+}B6o|zUUB&1%dpPP z{3ST)7QR31TyWa2{C>$Q9-8%|$6LjfJ2jdefjsUzI>Uv;k5T* zeFWD3;QP?p$Nts)e%vK)bNlwee&WI{ds};uC$&fJ`u5J$*;5^k*~|WyV2@6CitqD# ze*HI{uJ<}GZu4>7D2}HOBX@R7?kvC9))C+9d+pkGjHgE)@nQxE^tr)3aecA2#iHy)uO^&-x*B5m>bo?6k-2D*m@C8+d=1m-7B!lCcc+(cH5U_`<(0R-p+zN&fk9d4V#w< zR-eKuqj>Jj!^6K4XP@%@*$k{tWIdg91a{LgzW|$u-Eh9W16zN?I*s+G;iy#DNrB_I z|ExW*;_~dD;Ix*gx7X9zVY8aP#Q9kQ8~$#^%woP5x&BgYUi!3+pGPmeT45q`_ZQ^$ z7&z)z*bIl`cs=U$hxM~qzV|8fH@SXsbQ@TAW&JefpTJRzVXGaSv=vsZVD~8Od?3~X zr&c>9&M+X~FZGz8L#}JV`WkFi5jXjv!CbmhYRd%A?*~LcMv5 zJ`3B$VSR!w1iQb&DkrRdp|j9?Vehd#dzI@M&D^^!ezWzy0lsS$yjSBU@-*ho6*!6G zTYs^CKgM%UieH_WRBWgC_Ug9prHBu2F5LASaj}e(q7RC5d~mr^XL0!Kx9Z);l?sa0 z;n9(YCEs&0?e(*=KgH4hc&5wUOUuL?+E0i-E$%yh@1>FAI(0^LIEDI3jl}i0d>-M~ zJ8zx3lv(^of$_nLH_TsB#$^J&d~G6jm^cfe)0bHBz(B~^%CNq z1I8wwXPzeaTmJZG#d1E{xJK+R->;YVlsEPiOMkLIKS>3rcPTHH{=~nGZk6{!B~OeI7k3}^?kV=S$M1JeKGWy6JTLJ3TZ?7< z_G87e|Ki(-kM}roqqJDoC%L`&VzY@go5=G9+1_aXd{B3MYVV8kJi_0fy~NJBsl5}# z(jVPZ+@jCyny-uf?T-}?tRnyUQhDAX`zOAGc+bQoHHV4){*S~dGs>jvEZ&!?eu6Eo zJEeQ?Y+`>tI*P4JEov^3=P5FNVmEQr-Z3|x5g$(+7VR%Tw)Ka-E6DR0*+0?!#93Z{ ztVhW6o32lXBoFcPj(@~u5X<~U#EYG4g?f*Z=R^Mf94l@y7mUMb7(a7w)4;-wmG#D4uXaa!*;>__rE)IWZ1iHm2rTVsS+ z_E-EvaYBuwe?OAvtKw88->-f?Q0#A?|NSiEeY8QI-^zH2&xlpW9)CxR{o^6CIBoFy z8k^;Lu^cavetqoM?|t-^*xw(%bJUts;|qB{E%m9so#K;f^*Gpo5eM*Y+HCx^8wER6nmLDG_9yl&TuX$pBe#(in^dH&t4Y7r|2VytzsJaU5g&S z`t$ejOwixKzuxwjcTp_Mi#{gav$(*ZgW_VZebMg^@wmZts;@wOU@*arn|LFbVrP;Q``7ao z%Pgz*iP#^{zn}1q+^zO9oV*kDJr4bj@pg#w#cppqNi55Y_vgzWub$Z7-fd!keV!i2 z@w0__vRL+isz2ZU@)D58ZxC-N*Rw}Mv48xo7dzd@UCSi)KksY&{sQfLbUzj>KlNL& z)%*Qw_m1LtTZH_VP2x!#2F8Caj%t;$$H&N{XNeOgw5nE6EaP?X?)PMv48vz z6Wfbd9Mj@R{iKDTyVdVK8!4`;T8;KCzjL^H`qyB4Q+?Nc<;qnf_K#=3U+S-x5c|jT zP;tWab8Yq?3g$Dy&!xY6J+VJuzP%i=-LItZ`$Qb`X20&!#s2pA_e*~MhS)!!4H6GL zGOp^GgZMlSMt*gYSe6&<=i|2MtI=ZVPaG(Y>Yji9f&(~y{pHPEa|@^@Cr%pQ=vF~- zrltkI_xFd4U**w$oUbN|i%+;x0ztbg~VKL`Esp<9WiKY5VxxlF6c@>U4#qo-xKh=NUAbGd9#s2yEGV<2d#s2-nNk9TW#FhB7*#c2`CtDF-1$9EpFzkTb(R-OUz zmUw1T{KLUwf4pMM%fb<*#3rp+>-)QKe7`NuaU}o4`#Xc>b*L(i%W=Q!M6o}<|NN)L zySchm6U%%hHVEr?1k3BtNL;t`Uk~<){r%lcoR+QZ!)b7Q8}ac5#~-v5`}5mgobdbU zt~a-1{=16zbg;TPVwvycII*?mP}gQ+|9BVxUw&2Wug@^%2a|*KPmTBcyDjhfx!6Bn zjTLW*zuBt3*x$dOvpyZ_J4_Zw&41cz-8SscX<~Cf>A?W8%y-00agNgqAJh@c@)GBY zFP2T{`m)&ny!g-CVxxX;b;<#WG*5s*3&jdR3eyv)Y%7epBpk@0A~e z^^bmA?EGxC+6{N8EVf&|)^(=XpWkTl%qus$3>W+7>w4mg)e3a&ESBX*e<+smyS74q zbZfCYEz<)n{;qewh)=``sj*$li2e2NCicfKg8s-)#RDUs>w0H1k5{oj-`m7;{6q{A zr}Qn`HC`2Z#sv(x;Ck|kJVX=Sw8NYtmmM-bUGT#wnkYC=m3FD6y`|JOi z*#A6!Cid4qqgcj|7{YwkM$C`DeoGH8zn`=rSYD*ReZ_z8)upyr<|DG1c;@Y)T~7Rf z^$XofEZd*@zU1=nnca^>p4vd{b?SeA&-cOlrG9|^OQXcH{78R3W8yz+`6}`Ve>{JA zJJ(}8|M_~w!t2b63hH0`};RX{@jxSYx?Nrs%kom+6W3jFCbpp1KOS0& zmuC6#`Pck>#*l9Q{w|(+Ken`3_FrV2*oxSHub9|BpAHwx_+9de{m#HZ-}F=e0Fi)s$l(+Z;DN|6&ELqr9S?ySjM~8S?nK=PsIN6ONwRr@fqds zS8{!F@6O7gKJ{5~La~qU?Ga0TbZ)Uf-VCv9Z)8Dn?68KhBgC?O(JzZ-eeSgp`}6gx z`1s5=v9F6|zLHCb_2DWlGKgh;qoc(B_}_ku?~96lf2Yj%T8sVtTT6U#WbPKZ;lvNb zQMaFqJ+vY?J|dfoV}82Td5T!(C$*h8WkacZ4aENPI*9%8v%rZTi{0ZY_Q&PH@{@hb zco&C={r%HX96RRs&QW6j^VEsHyDV^OXK|JW51PATf4;kj^{JhA`@#`j=_+t?H?i}4 z!Pp4&NB0otEBjsNjZ3kUH?O&}Q0y-@>1d&2qf@%m0vm zM~;8r?byEvR^8~T@_CZn8${27jsN$2f4mgf{)#>WJ4;x9pWe(ohkTx8Ja->m4z~UG z9sKb=fOQ%j53BTiKW!;&^6>q&3+#WDj+XO@jBm=&3t+DX`!B<8UAnEDzocF_q!++; z41JfbM_Y3Km3k+9U#~4)7P%S#t5WnK*e${SXgS~e>lfz3Vef6`b78w0y@9UH@vgAG z0sX9ezxeCljD8cgKVg3Z*z3-G2K_1X1F$uad2#uE^S95?4PY~#ZU}qR*zbQoO1F?;RtbYps`@Uy8`97BM;tnw13VT0?^>ErQx{Z9lOT9S=n=!EZlU@tk z*I9p*^^cg-R#v{x>aag2-)D`1t$g%7EZ;83`ctq|nBEH~S*+j4Jd&Qv{?e@XU{#rJ zf#t>2Wc?-B;rqF&kzC*S+gqOX4s3_->!!l)tITh*K3x8Lay=#eDO_K*8um)CehVG0 z&j#44!}VECe@M@PReSdDr+YH5A=ihpJcsWin-#Db%KQbno|W7kMz4dNc#c;>uBRpU z#=}~}F_T%}9kyq){y40Epo_}&zu&)uj)Coi?B5JqN14AS_ajoTPSayx>m2O5#1Vgv*Gt2>PtB41^yo74(vTk`_H@l{qqd{73`&> z&%*jX*C)#_*uGnIP1s!F@>7|I+w%~%kFh@L0G9VF>*v5JoFDZw^Zm>t4hHpx^+v;r z^P@(?4(G>AhU3n2dFx^827MY%ct~G>y~lLHlwf)P&Rh>|gq>n^UD%X{RdMDO z=-U|It zSn>Burs8kd-dEYbm41Bah6u*Kh_sppOd^(mq2!U+Rd|2^!6zhA5Qdr)up40G7)!sVws5#**T^9ryX_78-e zA zd=ISm(Hs8=>b*U5*;DXV`b*f^K)bM;1gq7lPj<`tSbkiw@qka(nCz-i>j)bjH8IxNtvymsp4Yez;$|x>Jx@agvGE8rZa< zH^cUau)78JYBAr+`bzW;Sib@5E3D56%YWB9Se|~Co(J1mV7CwJGqS%aou01F{--}< z+hXVkuzCYF*I^w&U!~JN!S?<|--Fdj*j$43QRds3|IU0m^V7@+!(J*~nLb1}Vf}ts zb%UL~%tx_)C+seUtxd4mN3UW3G4`)u{YluK&-%lxpUHd|>`h_5g85Wf&w!n;m=A&N z+3asi&!J1f-aOVn>WKZB2~eYf0Bmu6+|}%#fO=(MXDn>qgFQnx zf!+QbzYF`j!MZE+_H+!a+Oa=$Gxm36|A(yq3^w)X39uK<`svKe!)5^Nz6h(f%yY26 zCakm3rC=u$T?kh9_XWqd&dB~t^xBVu`8F3|cRZ~Bg4KugS=hWyd(2;i-P5p+fUV!@ zY_NR*cJndcMZW^;t+084^&6Pq>=3ME3y%~0@zZn(>=^7mG6<9~pnVHvN{nhrt@!-D8{0G>p59^t*-2gU2=nv?YuxiBm=U}%P z^F?+rzUoAehV>_~+XVJHu)j3y+VtIz@Ok7#}_E&?=bmoOwKZSnS1oQnR>r-KGGOTyfVZMx>#r`j0XCCW6fz{WrTL{*P zu==Ml=9jtJ2k z46JQforTRi^d;tR!WNHDosa!Ie%*Ai{)hD^8wTrZho7HcVU-1+550zd9#%79{Q~Uv zgI(Ixg)N?++!tY!i=Vf99|X(OJRiC{;jmsWrFlM66Jh&VF25_Rcs^6LV8hS5YWF_o zKV05hu+GHw%?Vpixc%OHSf2-UGJS_$1zR`iaWv0|W&rGZ%-g|+=R>y+Y;%8_V$8$y zUoJS@pXzCYV12A`{7bMMo)3?~COjXlgLQcR9><*Lcin;gJpbw1H0MiSsUIxQ@O-FT z*yjFMv*@gtKOGBu;rB}}*viTM`%^v4f9Q#@4&4^^cs!XRbaw8aJ9V-B-2Y|=Y*_Dh zVg4M~=i<9Tz0F*I2WyU}#=tI@uRnm*i(KEru#+2BC+h^`xuI9W4v#1GC9G-P81}-v zG8`VyZedvQ^Pq3m#`xjq<2bDIa(&joHoyPXNLanZ_0zCbn0}4*yxuSwVUJe-)C!j8 zu->G?aYfj_2i9S}7LEz8Usl2@9IroYaeYiXI{ZAp`Csc-|7(>Ec3H2ycQ7B}@;1OJ zuW&w=!rtp#-$k(X2K_axd3|Ok!{#ma_k{nwf9T4b_Y1l?Z1Z~G)PcPi_E)5v!)_Go z+rs))*y8oQ&c!^A_0O=M_gnh!=wN&8(Hx)8!t9y!6Xa?($A26BY4c#UpI!vJ1u&mE zRx$4ar>$YW8jf1a{7*RPd*&H%yu@sTb$K{y6Z5ukg3Ej&oeZ08u)BlKjN{$xfmL^Y zJ`ON%i_criNm%~@$DM=SOR$&9`i1zsNBzw_1I`!jE#_t5lz(U&RuAYNu%_LGu>F+z zcG#rj^Np*l&qzPV^Ic}xEe7jnnAaD}@AyA?j(Hq%Cns#;VUvrV%Kkj`_pnuf{lCH9 zOZ08_7h-)Op6?4YFUj+L5m+zc`8|?Og;h~ly~OXIVzB8CTP0Y(9Cl06n_yiEb}ztQ zX}So%Z{MOD!KN(Tm*2M)VDmfdRfY9KSk++tOZYx_sxf~9{2N)&K7y6S>(%i2VrkfP;CL-ywc{bi!e#*L z7tw=R|1)e4qwlew&tKJRynpx%xmyi3qgme$)_i{JPUQW?=d51>+u`%xov<|-x&8~5 zzyAi$LrqrP?^x5=U!0y!H-x=ebWhmf^K3mAHhf;LwlH77@gJ~%F`WVTbJkK=7l+jf zSk>bF-%7eQtXI=rS)W7?WIIKc59!%4ruDg&P{9OQV8^3tPXzX>{6A*kygx?{IOBXU@RdL%;VIY|}|s;3(R;#d@x!-l#GVIKtufX0M*roMC=GWN20=BNg)*9Hb-rfLv zw6m4{tk*kXoA!SBZ-3GeI4NA8lW1=Q~pB|r=hIS&6r?6hV0oxo;mxT@OR)L)`kA_`ZeZYRMpK1YH+k%){;Z0S@O!Z-ZSP zpWZI`-}(6!w!**1r^4nojxT+aeh5cp_=gyru=W}$wyK5yq?>F0Xe|$Th|5uS+F~~Py?<^<(le0bKPZ@7u6FIF$ zfA!_87>_`H#`fJN_Wv*Tca3a*k!%67598z?KkvS{Js2!i_Z_Q*KUrYyzQhO0 z*%`9GMoxMYzghN$d0w0MBEC>@i~SneknfK?yL|t^rsVgNlRmO}Kz8hpd0#f?DQ@>U zNB18tz&FWu5PpdGVA+2xo1wBh`P_2*>?-1u@pZD<>%4N@-HJbyv+?Agc)qq@8tYT~ z{yzubN1U-h`8e92p?E$9TiINTcb6UeW53h({0QQ2u>B$Of5sDqaY=QI+3Af^z4XWH z9R6*MxeZEVG)bp1b7P9F|{3bbVMSPR&>JhK^bGd!K5Al|AT9x=IvfVtUynp5l*{zq| z*~GsjehuxH;rC>-fc!l+l(%Q5`tWpcE6VUPuk$xvTsa&GdbNKx0LhU$Zth{CE|yZ|NG5)e-D!Fdf6nj z|DO2%_zU9u$!0n6Cd6MQZslw)@$=;5Vd59b)5qiC#K)08QFb>FUxJ4c-|4sV@vs*X zKUPk96CW$PZg>@OOa59pI||qQUHu(S{-JWdKk-hotBQNd{;!+#`5S^im7SN9#rO-^ zyi9(jKeWA>_(0iBB>!kRy%(Q{Z@{<6*)aT=oLquml=Hs$P1&D{-Ied zS>C_AE%7>XaujYPrw#C-vadt?#<&LYdib9kb-ey3+n?|@a=EL>@cQn;Khger@^>bG1n~iKdKsQV{6g|q;Inb9zskqMcP0M>*|x#g%6TI^S%~w;S~LxmeED;^#M&^RxMQo4>Vx({WoldkkNJ$Kz|{ z^maUf_SfU*h+iR_cWHky@!kI^Z!b9u_rl%r6xke$zn9&SxPiWVe0|wm&Uev1#K+67 zI`J3e?C@JBdRe!3jLsr~ua(|CPF{Cgc=gU#vqeYUrS_v3B) zyF<2%@n+uNMR;d9c@6jD^Y<#|@6mZYn9uWUe59N`jbGIH#6E>D=loLm5aLsbzpC?{ zogkb0I3M0gyf^2=TZuQ4)9Z-moS%miA1~WMnD3*cKluy!K06n;;`@xad0XF~_Cne> z;rp~Neu?kr(`es~@9!>n1=kD5;{LL2P5U2pJ(9E_ehJqvN8*jTzAlZbXaaslyuIX*pcd)XX|&zAFpXn!^Foru3IXTNam_@!(=lFd5oaaFxv$qan3 zY%^@-{1(~uAU+b0kj()6fSmThZ^*6({!7j~$%gB>v_0NHf5o+LCRlygygqarg$@R<`%ZW*gZ*OnedV|FifW*}aH+%KlY+qHJHob>wUj z{@^ElKNRtCvU!F0QL-!EuT5*p`R*m+v*on3efv$9J?;%YuHT4LO7CaQx95(2Ao#Q& zTl(jM{iQoxGah6>~?ryL+#*@?`H+q zn{(-gmwqVcXETFCeaO*6gR@@EeCc>RKI7@p2M5;}c8q-{IMkQy?!Rx)cEsePlBa{8 zAAfH5zOsEPIB!2}bmibhV_W-DJnT>3Tfb}2wpxYerqsR^ZxI~guH;ht`QJ8Z`@``^ zo6`P;dX;@^2Z#MnOUL81{?+@w{f+u79nbGNZPRyh@T3pgCT|9Z`jn&34=(M`(%{Em zJhJaz!KLlJ6FhE1x6$u@T|Qn}$T)kj* zxqrJ%`F*B+Rc@cW9~|mIUVUp1O?*4%<&wDF4e{g2Vo% z9|n)Bbl%kqzSRDe9Qx~Xa&Xwb{Wm{29Pey-i2wQeQB{A=8?;?@=!Ds&?M+{L;+M06 z!}gQ+fJXP;Pqa5&$D`jTHh^GW&jx~{=P+gIuH#L9B}?4saMZ!+C8I2>;~A~@8S?0VP7 zI=(jq-&b{gS~<8Bzbkn9iVyO^AL;c@r2V%a>iwHq^5e&*I|skI`w{uG!8O;&y*bML9VYH9FD)6 z8~o=rZNB*Zy#{S7uiO8yl0SO(owH62F1;UfXn*^=<>Qe)9o%8*r(gWIO#A;-@bf

    C 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 SSP6?h_&q@9XZ_!QANW6iQuNpW literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shp/foggia/local_councils.shx b/src/spatialite/test/shp/foggia/local_councils.shx new file mode 100644 index 0000000000000000000000000000000000000000..5ee7429a390be350514a0f20db795c0f18ba4338 GIT binary patch literal 588 zcmZvYO-R&H6vco4ujk;`{2Qm7oRYzEoWyEy#Dp>&3LL^k6McdU7eRv+ZK6d^G>aB4 zW-&#?BrQb9O&|pkgNQ_n7{rCNa#1NR!YGOsn!7sKD)7PMym#+8_nv#9qm~_y6<>G2 zQ!bGmySZ`YNc#2H!qmcOHoX|MdHODyzA=O!{gzGdDE~j$4Z(`;4~QgHu}$wKIJPO& zf3Oo818|`iLJ_!j4%*{T%tOlnOuvQQRhTP6-*?zheBUHiCUO#lC+BjtgfOpx(!R{~0=S z*uT!m-(&1QYv7k~eDS1nQg?+3oQu=ahjB*dVb>B){*nA;aLUq$gfBE-u!=Lg2|eQf zRKHUbxZRqoE`Zy=s6JKPoP0(rxDVtzHIG}_1064MSL7$Piq|v)rXFvv`UIBo+B8Sc z8s4P>#4~vJRHvzg_i#kGh4*~;A8)1)4o>2I_y|YmF!nR;a~u;%Kx+)sJG8wglP$si rGUiqnG?XxT`DySwPWBF1 zwWA6$0=YkkF$<(n2CDb(+({BEk?fu5qQ5u-$k%ab*q97-$NM=lU!sBh=Zg*h_X7Da zcj}&#c*bIF@9?sZ|HxsW{In*OMSk}74!1l`d=pT1bcilJ^kJK$y~FCoGw*r=`R|%! z-oFI$)u)s+hXeUAf89H}U`Gd#ziD~Jc3z-A7w%R$*9GKvO!wJ!38<{56NTkIw+|4LJ8$OmnbzaB5$l`U1%RE_{DhE71O=Gs|y00`e!$70UJj@?qf^ zz-Tbf5y6P=3Qa&p=rqzoNhP)+ZqUnVlt<0Fb}irA**m;wPR#+?uYO>|pPxYfnH?(|p8@$lGw;m4 z59Aje>wa(x$Um|1E6+n9U+%`VWovy4c^R@~UAaI^Ww#+$7QHx}PmakE3=#^xK#Z?*vWrUoWP78a(aCUApO zfd(e#C8sKYfp21Fo&sDbEx$-1)GsL95h96?1Q~2;Y;0zX!{Fe=qQuHX1y>Z?@EHh` zGc_&5PEl7=bVo|PwV^XO?aAHnsu7Yz>esOVTUOG%WZraeu%*@2X Wz|;WlWK@HL64MehNH7m(lN10@T6o9+ literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shp/gaza/barrier.prj b/src/spatialite/test/shp/gaza/barrier.prj new file mode 100644 index 0000000..58af98c --- /dev/null +++ b/src/spatialite/test/shp/gaza/barrier.prj @@ -0,0 +1 @@ +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"]] diff --git a/src/spatialite/test/shp/gaza/barrier.shp b/src/spatialite/test/shp/gaza/barrier.shp new file mode 100644 index 0000000000000000000000000000000000000000..92e061bd7aff111faa80a1edad465391c97f36fd GIT binary patch literal 240 zcmZQzQ0HR64k}(SGcYg$l3c8xIRxm0sz)&D$M`@ literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shp/gaza/route.prj b/src/spatialite/test/shp/gaza/route.prj new file mode 100644 index 0000000..58af98c --- /dev/null +++ b/src/spatialite/test/shp/gaza/route.prj @@ -0,0 +1 @@ +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"]] diff --git a/src/spatialite/test/shp/gaza/route.shp b/src/spatialite/test/shp/gaza/route.shp new file mode 100644 index 0000000000000000000000000000000000000000..d7d72a3edfbd187c3ffa245a04b0db32959b18a4 GIT binary patch literal 11020 zcmZwN2RK*Z8#i#Fh=xs(WMz+(k&29jl!lUw?449HLRLtkvPbq_Q5l7@QYfKBA}W#@ zB9wT)PuJUZ{onulcjfB(xS!{o^E>A`&$*xb{3s~4(^34-AJ)KcR1_5WM^T(!x$Bqg ze&riHzg~S3HrC*}|JS_BRn+H{ zl$ACG(|I8NChl1$6D*%wZ+RZ>T=~c(0B;`oZDIi%8_t?Y!*aGy4GiGp1y7p~z=;-f z`f6~6uzQ;Zd|ZP!ToFE~*i@nmPe}QeNx>QS*=w|5-t`p=02fk8dhjc3%|Q&D{Kds4>^`m!K!7S+dW|}ua`8`@Zr_IyF=jkjBj$3a9UzLLnOR! zY_m8G{F8Q;G!Q+F@IogTh_F1|6$F| zcQlt^&qUig(!O%$bP^4&WfJG0(j@%v+TQy(lU4(VNdMwoMth+H(JxD2b!zc*6Y#^k znVSpX)IcZGK6s!)`g1n?O1*2K8}5lVf%eJS?wy>>G#+VyS zYszn@55Lf<&kBHDH4|Bn!f74BabCp1J-5~2bFR-+%;9Naibfgu-}OwT@(o~zsU6vs zb|4-h{e@|KFFx;iCIuN->ct`bc9^1hw<{YQC^57206s2Rl)VmKnSOLG6Q-)F3|Pc? z9MbnsOoXYYR&y=DFBDF;`opqW&X4HP{@w2#)wXbVW0)rk98*;J)*Q}Nc8w5*)t@&c zo`jtv*=H4CmOSN-Lon5bB`Rh3mn*OMZa9wei^y4cUqNp%6a0Q4%r_AJ%F&~>xM#oe z0j{MD;jkk6Sj|URdeq=bGCVRWv#tR)r+X)#05|po@D#wS69Tw0;Xv6;)4Q;@d$~2Ol6^Z=OJ8o(&F_Zyb_nV>kZ6X zwmOOu{Z+F=`N{F-k5}?8Ab$6d+~BYO;jXE;+g}lXo#rYsfcWR?hcmtKZ{{q8de~CA zV1oFk#>J;eu!g+2TRXg8=F1CXc&@-8xB)J{v~Q0#9I}*bQx9`aTgZ{|weBUI`eXRF z$0i;z*eE2w`3c-;!FFIP%*D$bb$>VRm&cTx+w7H;1&1atdcxeA5s5~2O3K!h;g5(X zE4@mN!F%4n3iXCX&mK}+3$rcGsXD-ko(+pbwo1xR-|zRahToZ3@--5FnjO@I*Hv#k z8Vx%ny|++>CA}7lj=`xrPRl94>t`CORblr_d}1Q-NAVtUX4qa?cx6Qa_h013{hc;A z-}B3BCSaYz2OFQkrRV&6oZy$O8c)jMtoA{(b#QHkW&1U_edvPFH+fty5!YXd@bNuw zraIuC%)&w`uw8Y(&2#v2-NW85c^;FyaQv~Hib~i;>*tefSZ0y_a}LZI zHMFY+zHesadlOy?&sMI5uRQNBaD}s7r@eb&!;CpYZTQK=@#Hz!NA!IOBYdW-enthK zujPrT--;Z@;|9O5ldzZe0Vv*`JfB49_=~ z9>|4z@0Na$fP<*IS~7`yf1Kij9Tx9&MZ&z!;h7uZ$@2CyF|he7M{8<0^(IqZ2rRy> zVK>QDc%%KpUEzPZOO(1PyE;6%{mCwRwEwY}k8v~1|G18g4K@>dBgqKYX(|QEz2PnN@Phd!=<0RPaNDXD~8Bcynj{vRjOlQZM39 z=H+be!39mnPriYlkER$}z!r0VLdM``XG#e^IO&D_*aBSK`2G?#oMFyU%YgC!FJBW^ zDPi3So47S^T!px~*$-z&xVYB()^@ni!r^8iJT85^!vQ}3s!p{UKJB<{;sV$0n;LG0 zXTPf%T!QHr#;8Z(oUM{8p0HLPh463q`O+O#4_N-Is2mOE2Pq}r+N-e44#x~e_|cq_ zWh$(DafX)}wp8ctcmyBdeg9%J{E24x_;c9cKzINzY~X#(xfecjL9kp7j>|F^o`64| zuAEST-}Bna{em-6$E;7n<_}(QuEzP?=oEU~99Fu|!p{hs=FOf9g3DccqbOnaO0Sb~ zFonkSKp)v&_7V10_}jqj^%z)kF?p#EzObrZhaB(yg3*Lgcp#%;Z8rS-R=MFH_{`Xi zfHGM6yK~lB%%>c~EZ2+Ria#+79Pl>kLG2uv+x;EC1YF#GK8^Gr*r>F!7xp}(myiKR z3%#Q*fbZ7s9_fZhG~?d3!KFdfx;3!LWJEdzo+tK;y%uCVP_>k~ZGqEH;{?H?8jeAt z@b`&Br>tPxBjtT_-=Mt-x6i zm!m20d={=1Tc*JI-jJ&GiW}|{u@YWJoJ-(dE6E>L4Rk*khE)~Xi&Wt3F0OZUXg@f2 z_LwJpNh@LXE_ml-|L!$FztbPV z2fL=Jt>KZXZQtr)o%bU&F0fYC;-**d_hFVn5+9VPV;O?aZ5$5Nh7Ve=7X1M;r7}7g z!e*lDQ@_I{Gpv(YaGzlB-?*4UpG_GYKyzV^7WrGz_;%WQSm~(uybQcy=$H5u+!^(H zW)Cd0d9ms=SSeu9GxO?m_|pYCBj|M~~KdT)rZ2JCUP(quLA>wok0yvVl# zV$&1Hwx=Mzbwl~LwJ>KEW7tFZb^DRNRq$xP()L#Pszv`}8n~0CyoNk4H*>h3W`_Iz zD2~5|7Xofmal%m_C!~6bb=Hh;gc+voSSH|KBZDRM@F_OMwng|x=D{aSu;+HGY7RWV zes7V~q=O6g|A>@=Z;Q@}(ZW9uevH(Cw=;e+p@x@E9`M$OpR@IKu7UT*`cT`!(Tn=@ zfAD!TZs>?!gHtFg=jPz%HNoU^`f?^F(C}ELLFYnG5&t^txOF zi@5O5RKU;ro~2a4c3D^MzJ&|3OE}tK>zh))MIDgOXSQ*_g;h3ThKJv%Fkko%8&A92 z#lsh)(;2;Rf0r~5_>=Wj5SEQ@aJ#g0HY?n0&24E5``EEdtbt`Gs*fAOH|2|NQNbd2 zPaBHE-jc5)hq0d8{50zJRyd$LPK7w|8-qL(d@7$avJ*a$b53Fz^Ix9+ft@XI?0{q~ zHR6dyNzY^lpseh)spM5A#PcF$p= zD}%fE>IZb;ZTfnWPvM}3z0v#Nf9r|szrA@RVQU^mmOR8Cey-6KgB7S{w6o!lzw`uT z;VPPMPZHs?tdFMU;R)AQy1uaRapzzoxO5{olQ~S;sT6Dh%eu}!CD*5*)5f2~wG#5K zSin>lHbuFqzy-T-gfDO1<#6%>%%{(>WyE)4TalHT>gjud%bila!NQ8+vmTt z7v&6!bHscGWh*?VXNi^}jmU%*t%BDaN)I2fIF_ zxsoy(Qe64JwJR0;ZxYX2GlKU2;%k_DUJb*>U6S4F(LSUm&EW&=o4}*KV5X$}So}6U z$sGy`Wj2k#SJb9om%uhJwtVP+y74~frGY8W-b z8LfB9vf(c)Bc}B*hpWF$AsiUOrv4C45?XuxA*?OdKN0}njg8MOh5KpVZFhn{P%aof zhtK@%;oS=78+&Ir!S6(h%Q)av+v`#7Fx^wh>l&4GgvaC)=UCKEgGX=Y|51U3hE|f_p2hjjYiZShb6B-y>tW676_JNw zqxs)<4`61N_^U_Y&I{`tGvOMK-f{!jZ${iK49*(-YH18_Nl~Zpg?Bzs)HH$5M{Q@g z3~RF&_?f}y_%}~FlJ=7QdUo)}^mn7C@Yt8s@8@9SWQDQg@bk|T^B!=}LXh}g_~Uwg zpP}0 zhUKtWf&zajJZhgkp9C+ad;AO2!ymL_g>)2KR5*7yku+ zq+A=a6?T4o*p%d|vVBW!Y;e%55BElRt@fv{i^ixmbzHP!ga3{@c&%7-8Odd@#W5;$ z!>0##G?BUdqHl}&EBH+>o#`%E#Yxfo5gcXrOJg_8n)Hc12i||?;M= z{5saK!MyZAk$UjwY_>9b*tJOED49DodDV-CjF2nFOf2fcBWa$A4e)Z%ktouihl;y8 z5WX1u)`c8TA**B9ML273vpCuRYr2wTJNWo~`D0?cRErD5`4(qP$^Q1tO*GlS!U`|< z7{d#;zMmc7!OFV4IB;8MYtcIRP|LPx>;te)4c;mNE_ zs&u$JEH>N#mh-GNDu7qr-=<0IWFtU(ACB-YDb$1OIBpA(wZq3X3~@Se)lm2b;td9; z$CY9CvuEPTv+%SBU#=pY-rB2L2fv(bs#k&a?|zkd15f|FQhgG(es@f{2gc~1H-Sq% znHL9P`lFYa?co=J{I(PDy=N6-@e?F{ITl2t! zJUf0m!73ghT)glakuUw$@F9|9!xlj*tOsF5N@iwBcp~>k^B$PF@$5!9n4Z#wMH)W) zYL%Y?JYs)npBNl{*-nDQ?Vn8q^1+;2UC+qC8%{?UZH2X*nksj~FDT~dIpM!+Q8=OP zsvSF=8&*t3)_TSBVw)J@T09o^!`ENmJ-c#7Nx3y7=lVYQD#N+1DOjdpuZ9wAXlb~8 z5PqpONv{g49^7vD9;T#ixJCLm(0*!fgxfhI?9|}xMrs02VT&(TMhD@FPh6WT;a2Hq zwOa7THZO$-@Rim2@x=0Fsy4as>%{o;Ct!8TQ}yAn`ALOkJvhTTr~eu}L_wc-3VyqT z){Mj-R+K6lz=~DUhi}3^W+`6U!;h{w)m?;-R#G3j2J7~BP3XfO!DH2=HqUcNnQ|AL zTBz_d4PLmV?YaYA{E);`0$Ud!-YpB4IP1F*ubMV_b{M{-Bd7Eb-bbyMehQ9qjP@mK z-G-nS$;PnP!J?zj;B!Vi^XBlW+m{c%gXI`{?^wYZESu_xjRf5-%;23L&OdkqU-N8x za2hrjt!M6pKRfX>9fcPRM0b()_FDHhXuyHOJ{(rsbc{&}OSV?)g2mUDE%Cr`4*;-fB3+GJw zr2a9$^CYWiTOVv_#+ls(dz=(k`wTxhJlfI$4?MgUIt~l4cB%Bh?|KU(+C$tguNPpFNK#Wmcpg1zgtNE zM6LYBa(JD2?E_L9@HNs&x(}~Xzx;g$_I_zrT>wvq({_>l&nZ&9PlYLT?cRQaEvgb< z_`!93C|<$H)K6Z7*BEzHlkNR|cLML;;#fNmKbBY;@Pq^MbqYysVe6kE&0yG9no)oO zKI(q$NB|s|bz6}UE?=L{;|3R&>=t5&Px^e9b%MRblcb2BdZFkGKj)3nA1>4|wChhGa(?k9FVx9h+Gcq%A)h4eoaap;E(>~%-c zffrsnrsO07)0n+~xeb1_hLM^NrrQ3YW(({?LA!w)cIUZ&kQuJ2srFntjr%qG*KSr= zMP15v7#_9`ui}9J<~wki&Y=sO@J>Ssu_pNM{03LDeYsx)%lO}=;er+T4Pu^>xK#FI zSvWFW{%IA=QS_iu9sZeWmEH8&&+Xq(LlxHRa2d%uWa)tM|U7jY_BO)Qj-4tg2QIJ8-&zsPc z&_nR9(3g(u;LBg#Tclv>7KbrP*!53eG#@-AQY!QZ<7bT=t*``qOE=7jc=K7QCMMWa zrE+lz{$d&Phz>p`;3O~rPc97kjo^C%DMgx0{cwHhRl0FlvEtf7J1jeO`sN2X!6H7H z_)^F3#xA(d<;n_~FNWuwz2CxSTaSx(!w&~WGh1P`aY~l=@Ci{P`Ubd>Vz9psP6_If z4TU$wr)HPK>%8a>_`o0257MT`cco=fIYK$GLg1M=ZJ5$Y&NUCFyz^^`Jg+`Ts{P1>*Pq{CCI(+~%D0Pv>H1H0 z3c`wmwa%Ad?F%(U#7~?HkJ`b^U7^;ZaEFLmyADjlW6(yP_pJ$UKkb0`l*IDV!D(ff z5MbS3!y8DxQ94wv$_?N25Wh(c|632Ybp`2Cz&B;~6bK@oO8diR7Ws> z--cirZ&5xa*y`!zrD6Cn z*B4N{f^}F!wMPHLqLxpD$h+CQbVd?Ei2t3BVO@!?@jEc{POfVt-+Ll-V_g-@vp)Of zE10h*EVmNoZq9FgMjZ6zL?cXB6K`A%Z|s#TY=$MipYgkukv6`8KMt zVf>rqtdAw{dRrCT1b4#zx*wktTP(yi*ulj);+wl*9`+kiLGYa}g{pV3x=fyRB7E~! zOH(I&d3Nn6nIFpiR`tJtHCygz)xmq}C3Op7VVUoK9kA`-j}TJ3`J2ZQGp)HtoRPOS zZ4xfcWnD#T@9%CL_%a7yy?pr_sr}Sg#O);WW!}3wF_J&;+}9Vf0rTluu{x?paF$R^ zqa;i>Boj{Z?}^p;N&)=hYVUjElsd+YWAK@jh)A+M#+PDu?O-Fj0Pidqvv%$^xL?KQ za1PuVX|W{?UPY6BkQ{%4YGFeR%&NY8gzSH?*EcE&&gwWKUkR_y__MJXe(M(INZx(3 zb{F1z3JY;Q6Cxh0$scNkQ*V6w`>tFv^oZdI{MqPwLJ{Jw=dJSC@cf@%>s>?k&n@wB zCojBt)p?Bw_?oXuEXjwKiWSU)Vc+ruMLqbex6z&pFjOTfu^Rt*vTdO`XbE;^;W>hpn*cEq^BBvS9!I zPwXa%s+{*RlR*e^8H`ULW*f{ymV!sFRbmO`zir0$=_6xXYw-PIxCaY*yq434FG?j))Wb$|0yShktKzrUmmcdQCsk=~vOa#0R;A7cAEOtD zAhp-zRpZcND4b#1@as?}STi`hBzDkM+&#Md7Yl_2E?5-N1W51eUCPsTT{2 zioZ}K^%f1gvFT9Q#c4EWBh2$Fqv;B)?06!Z3f{?m=9)jef7~T;S?pl=WycXVI>1Nel_0Oz?aqO>Ua=u*0p% z&@*r>qrW91_V@5hU_XhURzAhZ4?kwm4J7ro(rM@NU2we4zFz0XPQHtil&-ewHcZ(r?=A~({r<~2 z1@;`Xsg;7G3f}%Hgf){-wr_<`=eMt^gr5(v>uiDL3~UQYeKUOaK^i+8K}mnM85ZbC z?qr7J`nP7jfbZ@*w2oNm(tfWNSc(0<2^XBQtwW##=3Hb?B>pmu0S*Vh9-i0)?|8Yk zXAmw64Vl~syZat=nSxvO!%s56W74vle!;8VYNOY~w6{{tX;6>7SyGWf+N;ssJGTa2 zYOAy+`(OGr{FKCxI6l6|0>|A9aM%bZbLF*?_AGAOleyvaWD_mY-e4;29uIs!`j81Z Po(J-U0uu0l*N6WP<)xaq literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shp/gaza/route.shx b/src/spatialite/test/shp/gaza/route.shx new file mode 100644 index 0000000000000000000000000000000000000000..1c6578dd57bf98c42b6652d3060551f731a65a3d GIT binary patch literal 116 zcmZQzQ0HR64y;}b1IF?X{TmR8$3*bsMWb+hn{AvFc?tmEwJ? z+F13h?tayDp!MquoPg?I&huiG+T+t|zLser`ug8YpZQGa6vEOu+V$=8ZS;cI6R^gw__BTg zdII+G)2dt-{p(xs>5qK#OqQZZ%aYsqFDkwi`9i+-%unx3J-j{sEnmN=#nr_+|4W}W z(Vc6=#sSs_9ksb-`VHNj)NqO9>2fVHz5lW9Nuq>(VZ9E z>(RQxfmPiR^}X+Rdue2|re0+7*$eusrXe6C*JKk3TVvr3`)|N!fUfH4g{a!?~#y``hnW%HSuG zlplbn`ZD}p20xLcJUIc%;3txlAy?JJhu_QKCz6!SL|}Nz;3t}tAz5{EE`y(FQif#J z3FUwE+s}B39hfgONLJlY20PK*%aE+Pp$vASNg0w=HV`7di6&)8R^3nr mJJF;J$*LR5U?-ZCAz5`p8SF%oa%lYFHu!J980$vK$c-Vq3tn`?FDiZeux4JOxiU}LxjQ0}T|c&0r>jvXeKbnkqk z4p8oKmzahnM2-U{x70LRMGYwDrz}-r29e{0$+f-hHg*NdIqZA(!~`M-3SY3_Pq|8+ z5CY2aZi&v;hRAWl9%*zuK_Q2DC4kp)T%L1_gj Ktp}xTKr{egYZsFM literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shp/merano-3d/polygons.dbf b/src/spatialite/test/shp/merano-3d/polygons.dbf new file mode 100644 index 0000000000000000000000000000000000000000..64f2715f5a419b26ae723fbc37e613f33ef77415 GIT binary patch literal 4382 zcmds)!BT@T5Qf3dcyPvx-aO$8bOHs6M_SSvTc86$>nS(i{}D_U%CJpPXPm*B9DwY< zo9up@$+R=qb#ENUd7OQ?@}-T#PBbh7bD^GhXC51x@}{Cf`WW?fnb9u9sMpO(@b`oA zG3uFIK5rKQ{r(y!pw<@~R^_QVK5aIINGm?Jez|&~YYr6}_b)51YE#3gb9&^W)z`}D zN<9VxbOwfTegBP~G37BH-$FL#_gvEFt^r1Vpo=^`cJ-a}ZS{)E1dQ=H-OC0*0_OeG zrY@@S`nGiSC0~|_npbIEQ#1cIII$Ibrp|=dBJI${vDHmEc%)Hz!<=Sbg=w_GJ^X5C`(+3klq{* z^HjX1r;IvnCFM{%mD5v3owkxPzJdSdETc|aNjbiNvy3`zC1w5B!t^%=>a>-VlM6V@ csMA(be!2k4sMA(b*8e(8e`BCd+erE06QBtBKL7v# literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shp/merano-3d/polygons.prj b/src/spatialite/test/shp/merano-3d/polygons.prj new file mode 100644 index 0000000..9ff5cda --- /dev/null +++ b/src/spatialite/test/shp/merano-3d/polygons.prj @@ -0,0 +1 @@ +PROJCS["ETRS89 / UTM zone 32N",GEOGCS["ETRS89",DATUM["European_Terrestrial_Reference_System_1989",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6258"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4258"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",9],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],AUTHORITY["EPSG","25832"],AXIS["Easting",EAST],AXIS["Northing",NORTH]] diff --git a/src/spatialite/test/shp/merano-3d/polygons.shp b/src/spatialite/test/shp/merano-3d/polygons.shp new file mode 100644 index 0000000000000000000000000000000000000000..d3c7a5a24c304e3714910c1a55e45b8d762c5d1a GIT binary patch literal 7388 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 C4-0Sr literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shp/merano-3d/roads.prj b/src/spatialite/test/shp/merano-3d/roads.prj new file mode 100644 index 0000000..9ff5cda --- /dev/null +++ b/src/spatialite/test/shp/merano-3d/roads.prj @@ -0,0 +1 @@ +PROJCS["ETRS89 / UTM zone 32N",GEOGCS["ETRS89",DATUM["European_Terrestrial_Reference_System_1989",SPHEROID["GRS 1980",6378137,298.257222101,AUTHORITY["EPSG","7019"]],AUTHORITY["EPSG","6258"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.01745329251994328,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4258"]],UNIT["metre",1,AUTHORITY["EPSG","9001"]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",0],PARAMETER["central_meridian",9],PARAMETER["scale_factor",0.9996],PARAMETER["false_easting",500000],PARAMETER["false_northing",0],AUTHORITY["EPSG","25832"],AXIS["Easting",EAST],AXIS["Northing",NORTH]] diff --git a/src/spatialite/test/shp/merano-3d/roads.shp b/src/spatialite/test/shp/merano-3d/roads.shp new file mode 100644 index 0000000000000000000000000000000000000000..70573d928ced4ffa217eb4f591af5fb2aad0d5d6 GIT binary patch literal 5716 zcmaLb2{=~UzXxzrnaWgzMDZ#~=g1r>ZzZ}J5(>SNh(Zb_Q>9J{mCQq`^Or(Mp$x~6 zgA7qeBTYiaG*fBP{r>#z|Gmd^?p;sY^L$#rwfCC#TJPFiT=Rsu{xJ!w_VaRa;UCwk z*9~jptXXVh$5|Zb5^J_vsCl*0Mi#rb$MAk|sWtl_i~s#Uxxp;Dm$84l%6vN(d&%x! zv%+z&*Hx8AXW6sZx=y3)OE3jWjF+95m!hotQ4+Cp4BU)!5v!m0)b-wu+EYHs!rU@U(kQR!BWexnR z)!>Gn3jGLpV&9>gcyOsuziOn{6>i?ZVsna{s`xP`84@WSdtk#KJbeN%^(zHaVq%#* zCYC9S5W3|E{c%t_AzHouf9}JS9Z=LXV2$5b4sn#2Jm$V7*6~-UPLrCpjMZT?`{h1c zn8%n)R|sYMWmgESgx@s?-WG<7l5|Fu;Wkr=k0S8epeQXl*d)|~BlZtAU()_7<=+@q zain}%uGC-1R~uc%d`0T$A}LrZ!fUrU@{@*|%OqePlgK~`xGN@ckr@1C5uf)oxJ5W5 zR|JmVn>k9B+UT%$3VieNA5$dZ(%rtJLhvW+7vbcP)TP7xu=Jkb4^r^cWbHHL&RRFt z40wuYZ8#s5_n#Ib4Xc|BOyz;gpUYXxz=|E;yMLf>odnW0$-)CYQ7xb0fSUJ3GvS&_ z{b>Vmg3LlIdD!c!FZ&@J?*Dnm9C-Pg0FPU+ON(ZkBAo5gyS5Q7P+#Y$1kZQYD!2iQ zTbyhqGh@k&-9%#u`EW(kxUa|&T##VPVmHZ1&(}rS{L|Ufd*JUv-#=NwG@nFqQDX9# z*wom74bKq!=0w#su65(@S{)}tXBEBmn?dU zTdNShot5`>1sqh6^64_XG;yP%F}ylQMff6oKx@Z46Ie%Z+tLfLV!G1x)v(69(RF9w z*Ov@g7O>{l!QWHh1j~{JOSmQY-C6R*Yx5e(4dc%JKg{$6({?m@60Wg+V%k2jPno{> z|N6n7vXL=|`5GGDFN8a*G9GS*y|*@6sllV2N$Wk} z-w*WrFMvO)&P$Jlug)LUQi1POgbJp@)^7%m%!3^s5norDH-jmGxf!5Zi5wQh66W0AHh@-^hF|ogiY`j9T55@M3l~o!Q6WIkX z*OOkAihE_p+P!p!AGEd}I}4jFTOha|F04-SNrTU2M|rG<^ZG>n&%>%tbJrWe-qZOk zGvMT9FK21PiJxDu&4P>XzuGw;uDZq9pAFyFt?QA8b#{-wp?$|c{d5HFS%M-b#`Y|x zZOk5qCh&7{aSKqpk8kO)v_~wncd9Jl={^B7ZKL@ikBid8c1s?1s`Ezdia+aTQJ-B` zYT@;SbxzxfrNEuCAx+!hf)wKqv_I+1*I~QCLGfJ%v_GlM&$QhN&toZN#KL{gQ*2#f zfsjRpv>(MwNV8pF`6Iy=C*ZsB^WHkaNqfV!X+J97TN=I*-nx`umG&se!QY#iTN-f1<&T0)Ke$T!kEs z`w#xK${lc7Y}W`q|3T+0O)psRv`aVD?|t;rEDzW(L-IEoi_!w=CEH+TY@SHy<-5aG zKK!|qf1q%=9a-Gun+>)1FE(o$xzT9Xc1PH)=5C}Le9nHa5%pI zaT!;b8EaNjDC$3MQsr4i0~x7t;|(iOJis?@1WN3Oar}%0lcc zxi(L7mb-zg7(BqceJR;PN$~Mxn7OwEE76z>9@?g8NcnYxUJ@gyXK-1?z!LKtt^2nycmWs)6w&NX}WZ1RW_e&V; zv#3If=DAwiv+!WpJjU!IIbT6OE)aGt%4#5UrrmSc1CJ`dTl~M*7Ums87YgDsrGEdk zYsp+otf_v9SHG;sn)QoEi_!tu%5SjO1*Z3r7A;ClER!d8-FfC(#2$B8szI@$lNGkv z!p^d4e9rLZS=CzZaEnmYTn>E9A>*nqJe)>)dMOE7Si$=UY(_WvG{qNrb#=`&J`C*%-p4RP%tGXmdX1x!^V%^ftoK5#^!lX_x8CiaG5y&0h))7yK}Sy;B3!6 z8FHw7!iyBxTikOGt#9X>bogswslXfYF>vfb`(*>LR*djNs>_z5vlidrQyF>wWO3J? zXH#&F88qBwMphUpYm&Y6u%doF_r7k(}LxxZh z%si|2ithOeIA=t63FY@L5&QiHtb9b;ovgLYzV#ODhXHaEk za2MR}?CwO)d*@O(2p@?uxk--Na6WzrHcn_V{ui9Ju z>__`+T)#=-6u5S(o(r9;GKad9q~T`2|2misOPYA~&Vj#(N#3UYw@P7Urv`jfb){7% zY?NfAw+0SQS9nVMZOydpo||CZo`frOCTv$waoz^I&aO+p3=i`M$oRl}hdPt<;f{-X zq9L$D!c5Jpu=Xo+!^7|ZM=`qywsk8~iiCS_l&OYChNtBvz_#uBi8b)_`jWFLaP~mq%UYP# zyixQlye?Gt(+!wo_2Xwc{IqJ5L_O?#J#;V=zN5anmi$C&Mp!P~zgEGt0hZXVRCo=R zo@X^kzM5aER0~gfv!kjJPIs8)d>7twa8mY7I9sPmG%`_d&~*UWsoJFx5#(|Q(MKUjSE9_(~< z#-IjlzVTrB19(?M_F*IVeSU^O8$AE1PQ57{?y)ZV5j^o-z$-8n*IIgS)@yJQ%@E71 zsmvNHDAhEw18WVvH~8^1mbBZvlIfjd@@`EZwKIpk4j7htA(pwi-sORql^00$ghF@*!4`kJh;2cGyW+>(w~W9RSx zoXyW#y`Zs~ejr(FDZU9XXLYIvbN>EM?D#i;ev^GK=o>(oN5a@Q0rjr*F~=pujyah< z&>n{TwcNh(lTi=OPu&~wuyFiql}WHpP{$wV;Sz4%y}aTd5zFKamcG}hCi?+ zHVngGtxvqZ2OmFE`uQCkr)RAH7*4&f+x!~lt829Gr2JI-J1^l!Eq#;w;R+|y!an$V z@|M+a;b1}Oj&4{aZT^mr@R|OKmM+*Q_?YTuvXb zZw_~6=CNqKda6(qyatXheb7Pc6(?B2aTOeKuwospKRo%%kI{Fp^!+|J$(0J>k>s4W zPsV(G+?U3!!SCwMMt&MA^->GsnZ9BA0$m`EOP$`^mN%*V68J61oW+>4S&ikl8?<*& zzfl||CXb2LdRV7R-xrlXS87o#b1$YWiqNOYv2#Du=S&_G%Zvd%hxtCjty_ z*WWIH+k%uU-oP<4pF|YG{)YqVpTlx%%6HR#INAEbp4%|bnYxYF;CBy9^{U{59W9Eq zKYEr;x|j#sZ7OFK!`cfxgy=ixAE#P;X}@goOYc1iJI`dR(_CCPH?W%KqTeC!zs*gi G?f(sB#_qiU literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shp/merano-3d/roads.shx b/src/spatialite/test/shp/merano-3d/roads.shx new file mode 100644 index 0000000000000000000000000000000000000000..72032ee91dd197eef86a0e874ffca061b8b9063a GIT binary patch literal 244 zcmZQzQ0HR64ys--GcW)VgWKB^-jjn>99?5&V-j}+JL)v}9#W20aeVgF_Dc26U`OoQ zQACY^ycIxv4~R7w7#Klz{$OBWVgu3>fb=W~&8!EcD}c7H0;=I)U|`t>xUFkGO45!{7Syk(1=h++U2;-lhu9J76Du0PVa1;G*<-jY}Ok#x1Km;95ZBx@Qps%%`Oaci1TDJjGyvIGl~ zHRx=(ieD75;6iTsevb(SLz9ggYutjANqU65V%X4>?%qBDLS1#jh5l&b8Mt~5^_4N$ zRZx=&3R~^II!yu$O%~2K&atci-5E{TIOCjYh73QdpBp3aNSe6_n4&B>6Db!3O45vC z(kC{I#-`XgfpuDsRE@XC$_iPh-*eA-K@;HeA_j#W0d%yGXcxK~xpS(sF zHmUGP-f~tX5XL)KMoIIrcX4aby>N!5WkL&DI(riv)Y~b7Fwow zo7}peiF;f7>nNVpvTIU!N;LSD^PV8m&7!qs#5W4=`x2XsO)7{2mxjd~5L@rx`l%yB+IOwZM|pt}`?Xsc5Ex&JCLlJ4c~j zsr}*5C$xE}kw0Od%b&!hW5-P*{(MGD)OX;o^m|;18|HlDPyF(H{VL*Gy|gs)^QQ+l zYlGkV8@}F8dUVFG#NvXUFTKHsR>&ke;Oz0eaU=JldYY{+nB5!Y`+-|D8f)a7M#rVE zo(HciGl74|UMNqlyDD7-*0@t~eH)m2POD5c){&N3u%IR!+L@H#4a6BOVcR3YlF<4< zZZ4Ml(k^c=Kj?kMUODsO-+U{#Y$w<*ULhqe%L#bq4dxBriQ?`pRu>#6_Uo=*;|smI z>Pf!^c(=IeD6t^XwU^jM;4@|ic-Xqo(;Te5eAO?+?+q%wh~3V)bdo>S!|CNhaQzXF zd9;6sYT_H>AgMuDAUJR0?h~|M*pi3`0bn+ZaTWGO)UR^?m?0ev7y1*KbT_~Nv8HMF zrc2?C7;ij#8hD*|){*bQG{>=6bbUCv{emG!8+CM8jlAc|jpQddvCHlTSDgkAYDIOB zpXGj>Aqb|uYL{94bp|@yJM*F)KMAayA6u$o*;1Vr;qUY5UAj^+I5^qi<2!z_iIqqP z%zd9QZ(WwZEqN8bb=4HhyzKX(tm4}tik)PADwcjPSZ?KbY)>N?nOD49eRB?ah!*)b zl%eLm7J`mEaNO&>!+Butyz*+77?IXjGSEO8^M*JKSKa_SKd?G~m6MC*);%#~T?qZa zGJp9MPVNYCLpJ$6e)O|0hOV3+HL77H(!7Rcak^UY%C=px8CWZnukh_5=n21qZLiP+w~m?e=B-?fdA%p(JfZnH V?d;OFc8FK&t literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shp/new-caledonia/points.dbf b/src/spatialite/test/shp/new-caledonia/points.dbf new file mode 100644 index 0000000000000000000000000000000000000000..1d6da57586dc167e0855776e330b4cbc4c0c58df GIT binary patch literal 1304 zcma)*%Z}496oyl=LqbT16)W$6MWkcLx!5}>NFXGHsxXUeDmQgoizKdcLE`avlUec@ zIBD&4Ty->FBq!%M{`~(wezsUFo(DnjH_+yJJ$`&!|NQ!C%6}i9ue>R`tJi9KyWXo> zcD<;NL9iTWz4rcZL@m#$ss7fh_kWHL>My~6q0u8l^nEMJUg_pEiMT~=aKbSFn+OaJLck$`959azkrj_1E=xWxa*Ns^ z!X(8pWwY)HX9N_(`Ey z>I&T>3;^}TYFD9;ODx5`Pq-+XH*!+vaKI@u>bi2MBwFfTqR(BA-mOHl)kd&!47EnE zY-RV}KfBanY+!IHBpI8V$eL+76DTJMk6F>_p)KW=8b9Hy%PhscCtM0Qa4|Q>htpyu zcf)=SgQFb3<5OL^GUZX>w^Mu<`5&9xnn(Ib_9$velc`^vl7x ncYF9|;<+QvJd2w*GF=2nrh8{tz)Aeni*OX}FV*bre%|~Cv`)w~ literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shp/new-caledonia/points.prj b/src/spatialite/test/shp/new-caledonia/points.prj new file mode 100644 index 0000000..58af98c --- /dev/null +++ b/src/spatialite/test/shp/new-caledonia/points.prj @@ -0,0 +1 @@ +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"]] diff --git a/src/spatialite/test/shp/new-caledonia/points.shp b/src/spatialite/test/shp/new-caledonia/points.shp new file mode 100644 index 0000000000000000000000000000000000000000..592b275ecbc595e23614d086387723c470eac33e GIT binary patch literal 380 zcmZQzQ0HR64)(oZW?*0h%7vQF>D_QT#o_cm?WX^$%?|vT96ZhDLyCh(@&0*S&rJ_t z*N!3zGKLF8{CZM!_T77gSwJBsm>kU9RUxzP@vk&H02Bwh0HRN6+p63C=TaQfJXIe) z_X5kYz~prAtYG;CbRUCb{(~bQ!0us%$;ljEduHj`6o+$px|1J5g@E=cWg+ lYex|^0`friI6!GXC>;Z(v!HYZlx~C4Q=s%BD7^th0{{hZ7c>9> literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shp/new-caledonia/railways.dbf b/src/spatialite/test/shp/new-caledonia/railways.dbf new file mode 100644 index 0000000000000000000000000000000000000000..2c6c35faf93aa281c6de4bde0f3c3e1a701308d8 GIT binary patch literal 1117 zcmb`Dv2Md45QZ&f=uk!K+=)lP!3I2589F5Cls!W6B|);m!Z38q*2C}v0c(UQ+GRQxgQ@V*o!35)!$rrQNfH?B19FRJYjWr%!h#y?@-Yc)I znW%!xJg-=}JSlgC77zf2Y`{&rZj-K2{$O1@Rs^r4q^w*k(u3=erExf1b!CIXGwvPV o@9y}`;(wj%7nVrJDynolmPJAqPsoz#Se&L~iA6FNqyPTfFf2CpeU40T7-%Q_MDY(hQ48jGkgB{?RnnkJ?A~={WzR; z+MGqlGQp%ehl3x7yIyYD(DVv%Dxrs^HCee1KOrA>(484zQ4aXt_84wurxQxnsR z+{^cwv*ugjv+8(t^QCZ-?xTf4P6M2{PE)3|d{?3);}$5vu~kDm6uuUDS{vvVN@4^wqsLxn}TC$!1l@1>YX zD4LynVc#vKg{Kzd%g!k`mHP)Hk8x$|fcgA+nK~||g(rEks(yCe4chW?&yr8 z=tt4{eOcf;y1@?Bu`lb$^fOyqnVlkugI3kAh~4YUEl&cwnx6}>1>2r{^^e0~p8MVL z+wfw0V-Gr*4&*-BYwTVkbt6ql23u?6pgBm;Sd=Z?h4!D(D06K62n3l_Q@ zj+&6<^$IK66x}KoWmIh~sz|2j0uNm$a`(*rk-X-ZWH8!Nx31pvGKx0*WzHubu~!9x zP1nFZ-BPs*u=w!Qff2CctQr3+aIf)EpJ!m1=f{t`!HSh0!CJ^QX{k@&0_(OX85w~E z%8cL#VDBq3{WrjU3Vx7!n^<%yO!uBU*x;UNt`NMrp*<)9++rrXycwK&t=c*r{A9X# z#v5#Ga8RFjfL?OjqmJ5BC50M0zcl$={h> z=|F?4{REwz*uSM+QQb{&jpgTqZ-bR(Pu5L<^|FTV_9aoY>1?Wa7TjV>xw?RVHAzq8 zqn1vsIZykg6rGctZ?Oi<`?EZ757<$C?Rsl)?xeoM3UF>k_G$`Tsa5+!M;0P z28Uh^G;sxwv}+c7fVcm%>Z8H^sBfF_m3P3;e{+fZ5G=_u9PhX;!4nH|Jx@T9i0J^9P SNLv8uV?Z?uKv%v3@-+bM(HN=# literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shp/taiwan/hystoric.dbf b/src/spatialite/test/shp/taiwan/hystoric.dbf new file mode 100644 index 0000000000000000000000000000000000000000..67de6177afea26c1f4e343f20b825785661a7f71 GIT binary patch literal 940 zcma)*%Sz-x6o$K*wJ0+?SM>;~d)L;>2s*f#2WZMzn1W6ssS47&7G|Tuh$zff8eA$0 zGcXI$moeS=7A751Dd?uL7AL1p<;#E0PwGpz+g>j$prurtW?BwB z=>6CI(J1SoPO~+RN;6N}g2th41uQmOBQM~+_-n|y%>)FRJ?{UNfOdTb&Fp?@A zq(?fGgTB#L6_<~1|L-R^FYlw%;%Ni`6O<6fSli)=92$M7`Xiv&LM@Z)&dWU^Rvn0W${psc00oap(O=Hs}*WH>>o+%HTN^kZ3K4OT1_DV zof`|NZE36z0YMl=gyN+gZbo`fCO^`=8BmaFG6cyot({Cs3%ouB5sX3XX?>bocMWr=n4nQF$m|RKMd;xE>I0s%I;pk_}EkJTW7eMq~ zS#bFJCgC^-mWs5yvs%qTax5@8H}5M44RqohT9n_uPE`ZzV};3uM#KwuB*!^SZJ5!* z%?x%c8%*x&g~xMht>YXfiiUqMy9YLt9VW*Xc4WS|TAV}t%8J~E>0ozqz~mI1kMph4 zM}!AZoD(K@dey#_|A2Bo5A^+KVg&00g)i9euy7Pi@p~BbA1ucWlUp)>7c(1goP*dU z?e)w4faQ2#au>HJu)F}uZBevg(^b literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shp/taiwan/hystoric.shx b/src/spatialite/test/shp/taiwan/hystoric.shx new file mode 100644 index 0000000000000000000000000000000000000000..3cde1b8af845ee8bc20645218e06f7758dc1e6b0 GIT binary patch literal 220 zcmZQzQ0HR64)R_wGcYg$2SGe&taj&I0r`0+J6e%mJZmp zqlhvBc}!3d5DjAkZGf{`kk}w=3y85BWH2`ng8*aLBKPM&cf#CNkW#tn8<0PDdzgYe z(486fK`v}ScR$>BgijL4hxy}}ZnvHYkl#Kd<{BSRUbtSQ^cm2f&gDx&Ie`4DN4FoG z1?12EbX|%8$cKdkEL?J`cdJ?goCBk0?LP%>O9$-Q XQACY^JSHHvfYNqQ+678`0qFt&)i@5} literal 0 HcmV?d00001 diff --git a/src/spatialite/test/shp/taiwan/route.dbf b/src/spatialite/test/shp/taiwan/route.dbf new file mode 100644 index 0000000000000000000000000000000000000000..d749b0a11db58774537e1d6f98911eb0ee079eba GIT binary patch literal 302 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

    ~$uo@b$V7+i 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 literal 0 HcmV?d00001 diff --git a/src/spatialite/test/sld_sample.xml b/src/spatialite/test/sld_sample.xml new file mode 100644 index 0000000..18b4e8e --- /dev/null +++ b/src/spatialite/test/sld_sample.xml @@ -0,0 +1,21 @@ + + + trento_ShRel_draped + + Trento: Shaded Relief Orthophoto + RGB aerial orthophoto draped over LIDAR DEM with Shaded Relief + + + lidar_dem + + shaded_relief_default + + + + ortophoto + + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/Makefile.am b/src/spatialite/test/sql_stmt_geopackage_tests/Makefile.am new file mode 100644 index 0000000..8b873a9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/Makefile.am @@ -0,0 +1,74 @@ + +EXTRA_DIST = asgpb1.testcase \ + asgpb2.testcase \ + asgpb3.testcase \ + asgpb4.testcase \ + asgpb5.testcase \ + asgpb6.testcase \ + geomfromgpb10.testcase \ + geomfromgpb11.testcase \ + geomfromgpb12.testcase \ + geomfromgpb13.testcase \ + geomfromgpb14.testcase \ + geomfromgpb15.testcase \ + geomfromgpb16.testcase \ + geomfromgpb17.testcase \ + geomfromgpb18.testcase \ + geomfromgpb19.testcase \ + geomfromgpb1.testcase \ + geomfromgpb2.testcase \ + geomfromgpb3.testcase \ + geomfromgpb4.testcase \ + geomfromgpb5.testcase \ + geomfromgpb6.testcase \ + geomfromgpb7.testcase \ + geomfromgpb8.testcase \ + geomfromgpb9.testcase \ + implicitgeopackagebinary1.testcase \ + implicitgeopackagebinary2.testcase \ + makepoint1.testcase \ + makepoint2.testcase \ + makepoint3.testcase \ + makepoint4.testcase \ + makepoint5.testcase \ + makepoint6.testcase \ + makepoint7.testcase \ + makepoint8.testcase \ + makepoint9.testcase \ + makepointm10.testcase \ + makepointm11.testcase \ + makepointm1.testcase \ + makepointm2.testcase \ + makepointm3.testcase \ + makepointm4.testcase \ + makepointm5.testcase \ + makepointm6.testcase \ + makepointm7.testcase \ + makepointm8.testcase \ + makepointm9.testcase \ + makepointz10.testcase \ + makepointz11.testcase \ + makepointz1.testcase \ + makepointz2.testcase \ + makepointz3.testcase \ + makepointz4.testcase \ + makepointz5.testcase \ + makepointz6.testcase \ + makepointz7.testcase \ + makepointz8.testcase \ + makepointz9.testcase \ + makepointzm10.testcase \ + makepointzm11.testcase \ + makepointzm12.testcase \ + makepointzm13.testcase \ + makepointzm14.testcase \ + makepointzm15.testcase \ + makepointzm1.testcase \ + makepointzm2.testcase \ + makepointzm3.testcase \ + makepointzm4.testcase \ + makepointzm5.testcase \ + makepointzm6.testcase \ + makepointzm7.testcase \ + makepointzm8.testcase \ + makepointzm9.testcase diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/Makefile.in b/src/spatialite/test/sql_stmt_geopackage_tests/Makefile.in new file mode 100644 index 0000000..57550c9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/Makefile.in @@ -0,0 +1,510 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/sql_stmt_geopackage_tests +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = asgpb1.testcase \ + asgpb2.testcase \ + asgpb3.testcase \ + asgpb4.testcase \ + asgpb5.testcase \ + asgpb6.testcase \ + geomfromgpb10.testcase \ + geomfromgpb11.testcase \ + geomfromgpb12.testcase \ + geomfromgpb13.testcase \ + geomfromgpb14.testcase \ + geomfromgpb15.testcase \ + geomfromgpb16.testcase \ + geomfromgpb17.testcase \ + geomfromgpb18.testcase \ + geomfromgpb19.testcase \ + geomfromgpb1.testcase \ + geomfromgpb2.testcase \ + geomfromgpb3.testcase \ + geomfromgpb4.testcase \ + geomfromgpb5.testcase \ + geomfromgpb6.testcase \ + geomfromgpb7.testcase \ + geomfromgpb8.testcase \ + geomfromgpb9.testcase \ + implicitgeopackagebinary1.testcase \ + implicitgeopackagebinary2.testcase \ + makepoint1.testcase \ + makepoint2.testcase \ + makepoint3.testcase \ + makepoint4.testcase \ + makepoint5.testcase \ + makepoint6.testcase \ + makepoint7.testcase \ + makepoint8.testcase \ + makepoint9.testcase \ + makepointm10.testcase \ + makepointm11.testcase \ + makepointm1.testcase \ + makepointm2.testcase \ + makepointm3.testcase \ + makepointm4.testcase \ + makepointm5.testcase \ + makepointm6.testcase \ + makepointm7.testcase \ + makepointm8.testcase \ + makepointm9.testcase \ + makepointz10.testcase \ + makepointz11.testcase \ + makepointz1.testcase \ + makepointz2.testcase \ + makepointz3.testcase \ + makepointz4.testcase \ + makepointz5.testcase \ + makepointz6.testcase \ + makepointz7.testcase \ + makepointz8.testcase \ + makepointz9.testcase \ + makepointzm10.testcase \ + makepointzm11.testcase \ + makepointzm12.testcase \ + makepointzm13.testcase \ + makepointzm14.testcase \ + makepointzm15.testcase \ + makepointzm1.testcase \ + makepointzm2.testcase \ + makepointzm3.testcase \ + makepointzm4.testcase \ + makepointzm5.testcase \ + makepointzm6.testcase \ + makepointzm7.testcase \ + makepointzm8.testcase \ + makepointzm9.testcase + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/sql_stmt_geopackage_tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/sql_stmt_geopackage_tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/asgpb1.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/asgpb1.testcase new file mode 100644 index 0000000..b3711ea --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/asgpb1.testcase @@ -0,0 +1,7 @@ +togpb1 +:memory: #use in-memory database +SELECT Hex(AsGPB(GeomFromText("POINT(136 -35)"))) +1 # rows (not including the header row) +1 # columns +Hex(AsGPB(GeomFromText("POINT(136 -35)"))) +47500003000000000000000000006140000000000000614000000000008041C000000000008041C00101000000000000000000614000000000008041C0 diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/asgpb2.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/asgpb2.testcase new file mode 100644 index 0000000..15b3a79 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/asgpb2.testcase @@ -0,0 +1,8 @@ +asgpb2 +:memory: #use in-memory database +SELECT Hex(AsGPB(GeomFromText("POINT Z(136 -35 4)"))) +1 # rows (not including the header row) +1 # columns +Hex(AsGPB(GeomFromText("POINT Z(136 -35 4)"))) +47500003000000000000000000006140000000000000614000000000008041C000000000008041C001E9030000000000000000614000000000008041C00000000000001040 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/asgpb3.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/asgpb3.testcase new file mode 100644 index 0000000..b8d5c58 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/asgpb3.testcase @@ -0,0 +1,8 @@ +asgpb3 +:memory: #use in-memory database +SELECT Hex(AsGPB(GeomFromText("POINT Z(136 -35 4)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsGPB(GeomFromText("POINT Z(136 -35 4)", 4326))) +47500003E61000000000000000006140000000000000614000000000008041C000000000008041C001E9030000000000000000614000000000008041C00000000000001040 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/asgpb4.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/asgpb4.testcase new file mode 100644 index 0000000..d619842 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/asgpb4.testcase @@ -0,0 +1,9 @@ +asgpb4 +:memory: #use in-memory database +SELECT AsGPB("blah") +1 # rows (not including the header row) +1 # columns +AsGPB("blah") +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/asgpb5.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/asgpb5.testcase new file mode 100644 index 0000000..8fac4b9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/asgpb5.testcase @@ -0,0 +1,8 @@ +asgpb5 +:memory: #use in-memory database +SELECT Hex(AsGPB(GeomFromText("LINESTRING(136 -35, 134 -33, 135 -32)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsGPB(GeomFromText("LINESTRING(136 -35, 134 -33, 135 -32)", 4326))) +47500003E61000000000000000C06040000000000000614000000000008041C000000000000040C0010200000003000000000000000000614000000000008041C00000000000C0604000000000008040C00000000000E0604000000000000040C0 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/asgpb6.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/asgpb6.testcase new file mode 100644 index 0000000..641ec9b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/asgpb6.testcase @@ -0,0 +1,9 @@ +asgpb6 +:memory: #use in-memory database +SELECT AsGPB(zeroblob(100)) +1 # rows (not including the header row) +1 # columns +AsGPB(zeroblob(100)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb1.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb1.testcase new file mode 100644 index 0000000..b77cc70 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb1.testcase @@ -0,0 +1,7 @@ +geomfromgpb1 +:memory: #use in-memory database +SELECT AsText(GeomFromGPB(X'47500003000000000000000000006140000000000000614000000000008041C000000000008041C00101000000000000000000614000000000008041C0')) +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGPB(X'47500003000000000000000000006140000000000000614000000000008041C000000000008041C00101000000000000000000614000000000008041C0')) +POINT(136 -35) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb10.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb10.testcase new file mode 100644 index 0000000..3a431c6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb10.testcase @@ -0,0 +1,8 @@ +geomfromgpb10 +:memory: #use in-memory database +SELECT GeomFromGPB(4) +1 # rows (not including the header row) +1 # columns +GeomFromGPB(4) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb11.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb11.testcase new file mode 100644 index 0000000..1b8b184 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb11.testcase @@ -0,0 +1,7 @@ +geomfromgpb11 +:memory: #use in-memory database +SELECT AsText(GeomFromGPB(X'47500007000000000000000000006140000000000000614000000000008041C000000000008041C00000000000001040000000000000104001D1070000000000000000614000000000008041C00000000000001040')) +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGPB(X'47500007000000000000000000006140000000000000614000000000008041C000000000008041C00000000000001040000000000000104001D1070000000000000000614000000000008041C00000000000001040')) +POINT M(136 -35 4) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb12.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb12.testcase new file mode 100644 index 0000000..8d700c9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb12.testcase @@ -0,0 +1,7 @@ +geomfromgpb12 +:memory: #use in-memory database +SELECT AsEWKT(GeomFromGPB(X'47500007000000000000000000006140000000000000614000000000008041C000000000008041C00000000000001040000000000000104001D1070000000000000000614000000000008041C00000000000001040')) +1 # rows (not including the header row) +1 # columns +AsEWKT(GeomFromGPB(X'47500007000000000000000000006140000000000000614000000000008041C000000000008041C00000000000001040000000000000104001D1070000000000000000614000000000008041C00000000000001040')) +SRID=0;POINTM(136 -35 4) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb13.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb13.testcase new file mode 100644 index 0000000..9a622f1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb13.testcase @@ -0,0 +1,7 @@ +geomfromgpb13 +:memory: #use in-memory database +SELECT AsEWKT(GeomFromGPB(X'47500007E61000000000000000006140000000000000614000000000008041C000000000008041C00000000000001040000000000000104001D1070000000000000000614000000000008041C00000000000001040')) +1 # rows (not including the header row) +1 # columns +AsEWKT(GeomFromGPB(X'47500007E61000000000000000006140000000000000614000000000008041C000000000008041C00000000000001040000000000000104001D1070000000000000000614000000000008041C00000000000001040')) +SRID=4326;POINTM(136 -35 4) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb14.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb14.testcase new file mode 100644 index 0000000..7ba53e9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb14.testcase @@ -0,0 +1,7 @@ +geomfromgpb14 +:memory: #use in-memory database +SELECT AsEWKT(GeomFromGPB(X'47500009E61000000000000000006140000000000000614000000000008041C000000000008041C0000000000000104000000000000010400000000000002340000000000000234001B90B0000000000000000614000000000008041C000000000000010400000000000002340')) +1 # rows (not including the header row) +1 # columns +AsEWKT(GeomFromGPB(X'47500009E61000000000000000006140000000000000614000000000008041C000000000008041C0000000000000104000000000000010400000000000002340000000000000234001B90B0000000000000000614000000000008041C000000000000010400000000000002340')) +SRID=4326;POINT(136 -35 4 9.5) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb15.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb15.testcase new file mode 100644 index 0000000..eb27a13 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb15.testcase @@ -0,0 +1,7 @@ +geomfromgpb15 +:memory: #use in-memory database +SELECT ST_SRID(GeomFromGPB(X'47500009E61000000000000000006140000000000000614000000000008041C000000000008041C0000000000000104000000000000010400000000000002340000000000000234001B90B0000000000000000614000000000008041C000000000000010400000000000002340')) +1 # rows (not including the header row) +1 # columns +ST_SRID(GeomFromGPB(X'47500009E61000000000000000006140000000000000614000000000008041C000000000008041C0000000000000104000000000000010400000000000002340000000000000234001B90B0000000000000000614000000000008041C000000000000010400000000000002340')) +4326 diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb16.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb16.testcase new file mode 100644 index 0000000..b4d16fc --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb16.testcase @@ -0,0 +1,7 @@ +geomfromgpb16 +:memory: #use in-memory database +SELECT AsText(GeomFromGPB(X'47500009E61000000000000000006140000000000000614000000000008041C000000000008041C0000000000000104000000000000010400000000000002340000000000000234001B90B0000000000000000614000000000008041C000000000000010400000000000002340')) +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGPB(X'47500009E61000000000000000006140000000000000614000000000008041C000000000008041C0000000000000104000000000000010400000000000002340000000000000234001B90B0000000000000000614000000000008041C000000000000010400000000000002340')) +POINT ZM(136 -35 4 9.5) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb17.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb17.testcase new file mode 100644 index 0000000..0f7f172 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb17.testcase @@ -0,0 +1,8 @@ +geomfromgpb17 +:memory: #use in-memory database +SELECT GeomFromGPB(x'4750000EE610000001B90B0000000000000000614000000000008041C000000000000010400000000000002340') +1 # rows (not including the header row) +1 # columns +GeomFromGPB(x'4750000EE610000001B90B0000000000000000614000000000008041C000000000000010400000000000002340') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb18.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb18.testcase new file mode 100644 index 0000000..40c2d3f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb18.testcase @@ -0,0 +1,8 @@ +geomfromgpb18 +:memory: #use in-memory database +SELECT GeomFromGPB(x'47500021E610000001B90B0000000000000000614000000000008041C000000000000010400000000000002340') +1 # rows (not including the header row) +1 # columns +GeomFromGPB(x'47500021E610000001B90B0000000000000000614000000000008041C000000000000010400000000000002340') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb19.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb19.testcase new file mode 100644 index 0000000..400da18 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb19.testcase @@ -0,0 +1,7 @@ +geomfromgpb19 +:memory: #use in-memory database +SELECT AsText(GeomFromGPB(X'47500003000000000000000000006140000000000000614000000000008041C000000000008041C001')) +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGPB(X'47500003000000000000000000006140000000000000614000000000008041C000000000008041C001')) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb2.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb2.testcase new file mode 100644 index 0000000..734f674 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb2.testcase @@ -0,0 +1,8 @@ +geomfromgpb2 +:memory: #use in-memory database +SELECT GeomFromGPB(zeroblob(7)) +1 # rows (not including the header row) +1 # columns +GeomFromGPB(zeroblob(7)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb3.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb3.testcase new file mode 100644 index 0000000..ee16efb --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb3.testcase @@ -0,0 +1,8 @@ +geomfromgpb3 +:memory: #use in-memory database +SELECT GeomFromGPB(zeroblob(11)) +1 # rows (not including the header row) +1 # columns +GeomFromGPB(zeroblob(11)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb4.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb4.testcase new file mode 100644 index 0000000..496524f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb4.testcase @@ -0,0 +1,8 @@ +geomfromgpb4 +:memory: #use in-memory database +SELECT GeomFromGPB(x'4751000000000000') +1 # rows (not including the header row) +1 # columns +GeomFromGPB(x'4751000000000000') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb5.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb5.testcase new file mode 100644 index 0000000..64fde58 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb5.testcase @@ -0,0 +1,8 @@ +geomfromgpb5 +:memory: #use in-memory database +SELECT GeomFromGPB(x'4750100000000000') +1 # rows (not including the header row) +1 # columns +GeomFromGPB(x'4750100000000000') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb6.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb6.testcase new file mode 100644 index 0000000..ca388a7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb6.testcase @@ -0,0 +1,8 @@ +geomfromgpb6 +:memory: #use in-memory database +SELECT AsText(GeomFromGPB(x'47500003E61000000000000000C06040000000000000614000000000008041C000000000000040C0010200000003000000000000000000614000000000008041C00000000000C0604000000000008040C00000000000E0604000000000000040C0')) +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGPB(x'47500003E61000000000000000C06040000000000000614000000000008041C000000000000040C0010200000003000000000000000000614000000000008041C00000000000C0604000000000008040C00000000000E0604000000000000040C0')) +LINESTRING(136 -35, 134 -33, 135 -32) + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb7.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb7.testcase new file mode 100644 index 0000000..7652b2d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb7.testcase @@ -0,0 +1,8 @@ +geomfromgpb7 +:memory: #use in-memory database +SELECT AsText(GeomFromGPB(x'47500001E610000001B90B0000000000000000614000000000008041C000000000000010400000000000002340')) +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGPB(x'47500001E610000001B90B0000000000000000614000000000008041C000000000000010400000000000002340')) +POINT ZM(136 -35 4 9.5) + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb8.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb8.testcase new file mode 100644 index 0000000..0387c3c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb8.testcase @@ -0,0 +1,8 @@ +geomfromgpb7 +:memory: #use in-memory database +SELECT ST_SRID(GeomFromGPB(x'47500001E610000001B90B0000000000000000614000000000008041C000000000000010400000000000002340')) +1 # rows (not including the header row) +1 # columns +ST_SRID(GeomFromGPB(x'47500001E610000001B90B0000000000000000614000000000008041C000000000000010400000000000002340')) +4326 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb9.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb9.testcase new file mode 100644 index 0000000..9c94d52 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/geomfromgpb9.testcase @@ -0,0 +1,7 @@ +geomfromgpb9 +:memory: #use in-memory database +SELECT ST_SRID(GeomFromGPB(x'47500003E61000000000000000C06040000000000000614000000000008041C000000000000040C0010200000003000000000000000000614000000000008041C00000000000C0604000000000008040C00000000000E0604000000000000040C0')) +1 # rows (not including the header row) +1 # columns +ST_SRID(GeomFromGPB(x'47500003E61000000000000000C06040000000000000614000000000008041C000000000000040C0010200000003000000000000000000614000000000008041C00000000000C0604000000000008040C00000000000E0604000000000000040C0')) +4326 diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/implicitgeopackagebinary1.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/implicitgeopackagebinary1.testcase new file mode 100644 index 0000000..3711d27 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/implicitgeopackagebinary1.testcase @@ -0,0 +1,7 @@ +implicit geopackage binary 1 +:memory: #use in-memory database +SELECT Hex(CastToLineString(CastAutomagic(AsGPB(GeomFromText("LINESTRING(136 -35, 134 -33, 135 -32)", 4326))))) +1 # rows (not including the header row) +1 # columns +Hex(CastToLineString(CastAutomagic(AsGPB(GeomFromText("LINESTRING(136 -35, 134 -33, 135 -32)", 4326))))) +0001E61000000000000000C0604000000000008041C0000000000000614000000000000040C07C0200000003000000000000000000614000000000008041C00000000000C0604000000000008040C00000000000E0604000000000000040C0FE diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/implicitgeopackagebinary2.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/implicitgeopackagebinary2.testcase new file mode 100644 index 0000000..5af7178 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/implicitgeopackagebinary2.testcase @@ -0,0 +1,7 @@ +implicit geopackage binary 2 +:memory: #use in-memory database +SELECT Hex(CastToLineString(CastAutomagic(GeomFromText("LINESTRING(136 -35, 134 -33, 135 -32)", 4326)))) +1 # rows (not including the header row) +1 # columns +Hex(CastToLineString(CastAutomagic(GeomFromText("LINESTRING(136 -35, 134 -33, 135 -32)", 4326)))) +0001E61000000000000000C0604000000000008041C0000000000000614000000000000040C07C0200000003000000000000000000614000000000008041C00000000000C0604000000000008040C00000000000E0604000000000000040C0FE diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepoint1.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint1.testcase new file mode 100644 index 0000000..f073163 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint1.testcase @@ -0,0 +1,7 @@ +gpkgmakepoint1 +:memory: #use in-memory database +SELECT Hex(gpkgMakePoint(136, -35)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePoint(136, -35)) +47500003000000000000000000006140000000000000614000000000008041C000000000008041C00101000000000000000000614000000000008041C0 diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepoint2.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint2.testcase new file mode 100644 index 0000000..4bd79ef --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint2.testcase @@ -0,0 +1,7 @@ +gpkgmakepoint2 +:memory: #use in-memory database +SELECT Hex(gpkgMakePoint(136, -35, 4326)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePoint(136, -35, 4326)) +47500003E61000000000000000006140000000000000614000000000008041C000000000008041C00101000000000000000000614000000000008041C0 diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepoint3.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint3.testcase new file mode 100644 index 0000000..c433203 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint3.testcase @@ -0,0 +1,7 @@ +gpkgmakepoint3 +:memory: #use in-memory database +SELECT Hex(gpkgMakePoint(136.0, -35.0, 4326)); +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePoint(136.0, -35.0, 4326)) +47500003E61000000000000000006140000000000000614000000000008041C000000000008041C00101000000000000000000614000000000008041C0 diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepoint4.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint4.testcase new file mode 100644 index 0000000..c625177 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint4.testcase @@ -0,0 +1,7 @@ +gpkgmakepoint4 +:memory: #use in-memory database +SELECT Hex(gpkgMakePoint(136.0, -35.0)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePoint(136.0, -35.0)) +47500003000000000000000000006140000000000000614000000000008041C000000000008041C00101000000000000000000614000000000008041C0 diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepoint5.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint5.testcase new file mode 100644 index 0000000..b3bd9b6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint5.testcase @@ -0,0 +1,7 @@ +gpkgmakepoint5 +:memory: #use in-memory database +SELECT gpkgMakePoint("a", -35.0) +1 # rows (not including the header row) +1 # columns +gpkgMakePoint("a", -35.0) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepoint6.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint6.testcase new file mode 100644 index 0000000..cd13aa1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint6.testcase @@ -0,0 +1,7 @@ +gpkgmakepoint6 +:memory: #use in-memory database +SELECT gpkgMakePoint(136, "b") +1 # rows (not including the header row) +1 # columns +gpkgMakePoint(136, "b") +(NULL) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepoint7.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint7.testcase new file mode 100644 index 0000000..584a230 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint7.testcase @@ -0,0 +1,7 @@ +gpkgmakepoint7 +:memory: #use in-memory database +SELECT gpkgMakePoint(136, "b", 4326) +1 # rows (not including the header row) +1 # columns +gpkgMakePoint(136, "b", 4326) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepoint8.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint8.testcase new file mode 100644 index 0000000..aadb2cf --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint8.testcase @@ -0,0 +1,7 @@ +gpkgmakepoint8 +:memory: #use in-memory database +SELECT gpkgMakePoint("a", -35, 4326) +1 # rows (not including the header row) +1 # columns +gpkgMakePoint("a", -35, 4326) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepoint9.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint9.testcase new file mode 100644 index 0000000..e4f70a0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepoint9.testcase @@ -0,0 +1,7 @@ +gpkgmakepoint9 +:memory: #use in-memory database +SELECT gpkgMakePoint(136.0, -35.0, 3.5) +1 # rows (not including the header row) +1 # columns +gpkgMakePoint(136.0, -35.0, 3.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointm1.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm1.testcase new file mode 100644 index 0000000..736e8c6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm1.testcase @@ -0,0 +1,8 @@ +gpkgmakepointm1 +:memory: #use in-memory database +SELECT Hex(gpkgMakePointM(136, -35, 4)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePointM(136, -35, 4)) +47500007000000000000000000006140000000000000614000000000008041C000000000008041C00000000000001040000000000000104001D1070000000000000000614000000000008041C00000000000001040 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointm10.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm10.testcase new file mode 100644 index 0000000..3334c5d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm10.testcase @@ -0,0 +1,8 @@ +gpkgmakepointm10 +:memory: #use in-memory database +SELECT Hex(gpkgMakePointM(136.0, -35.0, 4.0, 4326)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePointM(136.0, -35.0, 4.0, 4326)) +47500007E61000000000000000006140000000000000614000000000008041C000000000008041C00000000000001040000000000000104001D1070000000000000000614000000000008041C00000000000001040 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointm11.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm11.testcase new file mode 100644 index 0000000..9435861 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm11.testcase @@ -0,0 +1,9 @@ +gpkgmakepointm10 +:memory: #use in-memory database +SELECT gpkgMakePointM(136.0, -35.0, 4.0, "srd") +1 # rows (not including the header row) +1 # columns +gpkgMakePointM(136.0, -35.0, 4.0, "srd") +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointm2.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm2.testcase new file mode 100644 index 0000000..0989608 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm2.testcase @@ -0,0 +1,8 @@ +gpkgmakepointm2 +:memory: #use in-memory database +SELECT Hex(gpkgMakePointM(136.0, -35.0, 4.0)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePointM(136.0, -35.0, 4.0)) +47500007000000000000000000006140000000000000614000000000008041C000000000008041C00000000000001040000000000000104001D1070000000000000000614000000000008041C00000000000001040 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointm3.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm3.testcase new file mode 100644 index 0000000..f77384f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm3.testcase @@ -0,0 +1,7 @@ +gpkgmakepointm3 +:memory: #use in-memory database +SELECT gpkgMakePointM("x", -35.0, 4.0) +1 # rows (not including the header row) +1 # columns +gpkgMakePointM("x", -35.0, 4.0) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointm4.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm4.testcase new file mode 100644 index 0000000..2d659f9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm4.testcase @@ -0,0 +1,8 @@ +gpkgmakepointm4 +:memory: #use in-memory database +SELECT gpkgMakePointM(136.0, "y", 4.0) +1 # rows (not including the header row) +1 # columns +gpkgMakePointM(136.0, "y", 4.0) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointm5.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm5.testcase new file mode 100644 index 0000000..6848781 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm5.testcase @@ -0,0 +1,8 @@ +gpkgmakepointm5 +:memory: #use in-memory database +SELECT gpkgMakePointM(136.0, -35, "z") +1 # rows (not including the header row) +1 # columns +gpkgMakePointM(136.0, -35, "z") +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointm6.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm6.testcase new file mode 100644 index 0000000..2244347 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm6.testcase @@ -0,0 +1,8 @@ +gpkgmakepointm6 +:memory: #use in-memory database +SELECT gpkgMakePointM(136.0, -35, "z", 4326) +1 # rows (not including the header row) +1 # columns +gpkgMakePointM(136.0, -35, "z", 4326) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointm7.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm7.testcase new file mode 100644 index 0000000..9462cac --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm7.testcase @@ -0,0 +1,8 @@ +gpkgmakepointm7 +:memory: #use in-memory database +SELECT gpkgMakePointM(136.0, "y", 4.0, 4326) +1 # rows (not including the header row) +1 # columns +gpkgMakePointM(136.0, "y", 4.0, 4326) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointm8.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm8.testcase new file mode 100644 index 0000000..ff41084 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm8.testcase @@ -0,0 +1,7 @@ +gpkgmakepointm8 +:memory: #use in-memory database +SELECT gpkgMakePointM("x", -35.0, 4.0, 4326) +1 # rows (not including the header row) +1 # columns +gpkgMakePointM("x", -35.0, 4.0, 4326) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointm9.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm9.testcase new file mode 100644 index 0000000..2dd269a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointm9.testcase @@ -0,0 +1,8 @@ +gpkgmakepointm1 +:memory: #use in-memory database +SELECT Hex(gpkgMakePointM(136, -35, 4, 4326)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePointM(136, -35, 4, 4326)) +47500007E61000000000000000006140000000000000614000000000008041C000000000008041C00000000000001040000000000000104001D1070000000000000000614000000000008041C00000000000001040 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointz1.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz1.testcase new file mode 100644 index 0000000..d3f0af4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz1.testcase @@ -0,0 +1,8 @@ +gpkgmakepointz1 +:memory: #use in-memory database +SELECT Hex(gpkgMakePointZ(136, -35, 4)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePointZ(136, -35, 4)) +47500005000000000000000000006140000000000000614000000000008041C000000000008041C00000000000001040000000000000104001E9030000000000000000614000000000008041C00000000000001040 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointz10.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz10.testcase new file mode 100644 index 0000000..8daf340 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz10.testcase @@ -0,0 +1,7 @@ +gpkgmakepointz10 +:memory: #use in-memory database +SELECT gpkgMakePointZ(135, -35, "z", 4326) +1 # rows (not including the header row) +1 # columns +gpkgMakePointZ(135, -35, "z", 4326) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointz11.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz11.testcase new file mode 100644 index 0000000..e7e1f47 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz11.testcase @@ -0,0 +1,7 @@ +gpkgmakepointz11 +:memory: #use in-memory database +SELECT gpkgMakePointZ(135, -35, 4, 4326.0) +1 # rows (not including the header row) +1 # columns +gpkgMakePointZ(135, -35, 4, 4326.0) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointz2.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz2.testcase new file mode 100644 index 0000000..9585715 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz2.testcase @@ -0,0 +1,8 @@ +gpkgmakepointz2 +:memory: #use in-memory database +SELECT Hex(gpkgMakePointZ(136, -35, 4, 4326)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePointZ(136, -35, 4, 4326)) +47500005E61000000000000000006140000000000000614000000000008041C000000000008041C00000000000001040000000000000104001E9030000000000000000614000000000008041C00000000000001040 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointz3.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz3.testcase new file mode 100644 index 0000000..c3a0d53 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz3.testcase @@ -0,0 +1,8 @@ +gpkgmakepointz3 +:memory: #use in-memory database +SELECT Hex(gpkgMakePointZ(136.0, -35.0, 4.0)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePointZ(136.0, -35.0, 4.0)) +47500005000000000000000000006140000000000000614000000000008041C000000000008041C00000000000001040000000000000104001E9030000000000000000614000000000008041C00000000000001040 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointz4.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz4.testcase new file mode 100644 index 0000000..3ede3c2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz4.testcase @@ -0,0 +1,8 @@ +gpkgmakepointz4 +:memory: #use in-memory database +SELECT Hex(gpkgMakePointZ(136.0, -35.0, 4.0, 4326)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePointZ(136.0, -35.0, 4.0, 4326)) +47500005E61000000000000000006140000000000000614000000000008041C000000000008041C00000000000001040000000000000104001E9030000000000000000614000000000008041C00000000000001040 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointz5.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz5.testcase new file mode 100644 index 0000000..a13edb7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz5.testcase @@ -0,0 +1,7 @@ +gpkgmakepointz5 +:memory: #use in-memory database +SELECT gpkgMakePointZ("x", -35, 4) +1 # rows (not including the header row) +1 # columns +gpkgMakePointZ("x", -35, 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointz6.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz6.testcase new file mode 100644 index 0000000..f6720d5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz6.testcase @@ -0,0 +1,7 @@ +gpkgmakepointz6 +:memory: #use in-memory database +SELECT gpkgMakePointZ(135, "y", 4) +1 # rows (not including the header row) +1 # columns +gpkgMakePointZ(135, "y", 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointz7.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz7.testcase new file mode 100644 index 0000000..85b78c5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz7.testcase @@ -0,0 +1,7 @@ +gpkgmakepointz7 +:memory: #use in-memory database +SELECT gpkgMakePointZ(135, -35, "z") +1 # rows (not including the header row) +1 # columns +gpkgMakePointZ(135, -35, "z") +(NULL) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointz8.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz8.testcase new file mode 100644 index 0000000..7c4aecd --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz8.testcase @@ -0,0 +1,7 @@ +gpkgmakepointz8 +:memory: #use in-memory database +SELECT gpkgMakePointZ("x", -35, 4, 4326) +1 # rows (not including the header row) +1 # columns +gpkgMakePointZ("x", -35, 4, 4326) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointz9.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz9.testcase new file mode 100644 index 0000000..b5c60f1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointz9.testcase @@ -0,0 +1,7 @@ +gpkgmakepointz9 +:memory: #use in-memory database +SELECT gpkgMakePointZ(135, "y", 4, 4326) +1 # rows (not including the header row) +1 # columns +gpkgMakePointZ(135, "y", 4, 4326) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm1.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm1.testcase new file mode 100644 index 0000000..d47b5b8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm1.testcase @@ -0,0 +1,8 @@ +gpkgmakepointzm1 +:memory: #use in-memory database +SELECT Hex(gpkgMakePointZM(136.0, -35.0, 4.0, 9.5, 4326)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePointZM(136.0, -35.0, 4.0, 9.5, 4326)) +47500009E61000000000000000006140000000000000614000000000008041C000000000008041C0000000000000104000000000000010400000000000002340000000000000234001B90B0000000000000000614000000000008041C000000000000010400000000000002340 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm10.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm10.testcase new file mode 100644 index 0000000..12a9e1e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm10.testcase @@ -0,0 +1,8 @@ +gpkgmakepointzm10 +:memory: #use in-memory database +SELECT Hex(gpkgMakePointZM(136, -35, 4, 9.5)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePointZM(136, -35, 4, 9.5)) +47500009000000000000000000006140000000000000614000000000008041C000000000008041C0000000000000104000000000000010400000000000002340000000000000234001B90B0000000000000000614000000000008041C000000000000010400000000000002340 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm11.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm11.testcase new file mode 100644 index 0000000..6c475e4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm11.testcase @@ -0,0 +1,9 @@ +gpkgmakepointzm11 +:memory: #use in-memory database +SELECT gpkgMakePointZM(136, -35, 4, "m") +1 # rows (not including the header row) +1 # columns +gpkgMakePointZM(136, -35, 4, "m") +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm12.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm12.testcase new file mode 100644 index 0000000..59e92b1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm12.testcase @@ -0,0 +1,9 @@ +gpkgmakepointzm12 +:memory: #use in-memory database +SELECT gpkgMakePointZM(136, -35, "z", 9) +1 # rows (not including the header row) +1 # columns +gpkgMakePointZM(136, -35, "z", 9) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm13.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm13.testcase new file mode 100644 index 0000000..a653405 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm13.testcase @@ -0,0 +1,9 @@ +gpkgmakepointzm13 +:memory: #use in-memory database +SELECT gpkgMakePointZM(136, "y", 4, 9) +1 # rows (not including the header row) +1 # columns +gpkgMakePointZM(136, "y", 4, 9) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm14.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm14.testcase new file mode 100644 index 0000000..0d06f2b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm14.testcase @@ -0,0 +1,9 @@ +gpkgmakepointzm14 +:memory: #use in-memory database +SELECT gpkgMakePointZM("x", -35, 4, 9) +1 # rows (not including the header row) +1 # columns +gpkgMakePointZM("x", -35, 4, 9) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm15.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm15.testcase new file mode 100644 index 0000000..eca6d37 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm15.testcase @@ -0,0 +1,8 @@ +gpkgmakepointzm15 +:memory: #use in-memory database +SELECT Hex(gpkgMakePointZM(136.0, -35.0, 4.0, 9)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePointZM(136.0, -35.0, 4.0, 9)) +47500009000000000000000000006140000000000000614000000000008041C000000000008041C0000000000000104000000000000010400000000000002240000000000000224001B90B0000000000000000614000000000008041C000000000000010400000000000002240 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm2.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm2.testcase new file mode 100644 index 0000000..ea70070 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm2.testcase @@ -0,0 +1,8 @@ +gpkgmakepointzm2 +:memory: #use in-memory database +SELECT Hex(gpkgMakePointZM(136, -35, 4, 9.5, 4326)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePointZM(136, -35, 4, 9.5, 4326)) +47500009E61000000000000000006140000000000000614000000000008041C000000000008041C0000000000000104000000000000010400000000000002340000000000000234001B90B0000000000000000614000000000008041C000000000000010400000000000002340 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm3.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm3.testcase new file mode 100644 index 0000000..07d94e8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm3.testcase @@ -0,0 +1,9 @@ +gpkgmakepointzm3 +:memory: #use in-memory database +SELECT gpkgMakePointZM(136, -35, 4, 9.5, "srid") +1 # rows (not including the header row) +1 # columns +gpkgMakePointZM(136, -35, 4, 9.5, "srid") +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm4.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm4.testcase new file mode 100644 index 0000000..1f9bdd8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm4.testcase @@ -0,0 +1,9 @@ +gpkgmakepointzm4 +:memory: #use in-memory database +SELECT gpkgMakePointZM(136, -35, 4, "m", 4326) +1 # rows (not including the header row) +1 # columns +gpkgMakePointZM(136, -35, 4, "m", 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm5.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm5.testcase new file mode 100644 index 0000000..817aa34 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm5.testcase @@ -0,0 +1,9 @@ +gpkgmakepointzm5 +:memory: #use in-memory database +SELECT gpkgMakePointZM(136, -35, "z", 9.5, 4326) +1 # rows (not including the header row) +1 # columns +gpkgMakePointZM(136, -35, "z", 9.5, 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm6.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm6.testcase new file mode 100644 index 0000000..0d33b09 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm6.testcase @@ -0,0 +1,9 @@ +gpkgmakepointzm6 +:memory: #use in-memory database +SELECT gpkgMakePointZM(136, "y", 3, 9.5, 4326) +1 # rows (not including the header row) +1 # columns +gpkgMakePointZM(136, "y", 3, 9.5, 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm7.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm7.testcase new file mode 100644 index 0000000..8040c7a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm7.testcase @@ -0,0 +1,9 @@ +gpkgmakepointzm7 +:memory: #use in-memory database +SELECT gpkgMakePointZM("x", -35, 3, 9.5, 4326) +1 # rows (not including the header row) +1 # columns +gpkgMakePointZM("x", -35, 3, 9.5, 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm8.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm8.testcase new file mode 100644 index 0000000..0eafd4a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm8.testcase @@ -0,0 +1,8 @@ +gpkgmakepointzm8 +:memory: #use in-memory database +SELECT Hex(gpkgMakePointZM(136.0, -35.0, 4.0, 9, 4326)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePointZM(136.0, -35.0, 4.0, 9, 4326)) +47500009E61000000000000000006140000000000000614000000000008041C000000000008041C0000000000000104000000000000010400000000000002240000000000000224001B90B0000000000000000614000000000008041C000000000000010400000000000002240 + diff --git a/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm9.testcase b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm9.testcase new file mode 100644 index 0000000..2c71a8c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geopackage_tests/makepointzm9.testcase @@ -0,0 +1,8 @@ +gpkgmakepointzm9 +:memory: #use in-memory database +SELECT Hex(gpkgMakePointZM(136.0, -35.0, 4.0, 9.5)) +1 # rows (not including the header row) +1 # columns +Hex(gpkgMakePointZM(136.0, -35.0, 4.0, 9.5)) +47500009000000000000000000006140000000000000614000000000008041C000000000008041C0000000000000104000000000000010400000000000002340000000000000234001B90B0000000000000000614000000000008041C000000000000010400000000000002340 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/Makefile.am b/src/spatialite/test/sql_stmt_geos_tests/Makefile.am new file mode 100644 index 0000000..ba7b130 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/Makefile.am @@ -0,0 +1,743 @@ +EXTRA_DIST = bdmpolyfromtext10.testcase \ + bdmpolyfromtext13.testcase \ + bdmpolyfromtext14.testcase \ + bdmpolyfromtext15.testcase \ + bdmpolyfromtext16.testcase \ + bdmpolyfromtext17.testcase \ + bdmpolyfromtext1.testcase \ + bdmpolyfromtext2.testcase \ + bdmpolyfromtext3.testcase \ + bdmpolyfromtext4.testcase \ + bdmpolyfromtext9.testcase \ + bdmpolyfromwkb10.testcase \ + bdmpolyfromwkb11.testcase \ + bdmpolyfromwkb12.testcase \ + bdmpolyfromwkb13.testcase \ + bdmpolyfromwkb14.testcase \ + bdmpolyfromwkb15.testcase \ + bdmpolyfromwkb16.testcase \ + bdmpolyfromwkb17.testcase \ + bdmpolyfromwkb18.testcase \ + bdmpolyfromwkb19.testcase \ + bdmpolyfromwkb1.testcase \ + bdmpolyfromwkb2.testcase \ + bdmpolyfromwkb3.testcase \ + bdmpolyfromwkb4.testcase \ + bdmpolyfromwkb5.testcase \ + bdmpolyfromwkb6.testcase \ + bdmpolyfromwkb7.testcase \ + bdmpolyfromwkb8.testcase \ + bdmpolyfromwkb9.testcase \ + bdpolyfromtext10.testcase \ + bdpolyfromtext11.testcase \ + bdpolyfromtext12.testcase \ + bdpolyfromtext13.testcase \ + bdpolyfromtext14.testcase \ + bdpolyfromtext15.testcase \ + bdpolyfromtext16.testcase \ + bdpolyfromtext1.testcase \ + bdpolyfromtext2.testcase \ + bdpolyfromtext3.testcase \ + bdpolyfromtext4.testcase \ + bdpolyfromtext5.testcase \ + bdpolyfromtext6.testcase \ + bdpolyfromtext7.testcase \ + bdpolyfromtext8.testcase \ + bdpolyfromtext9.testcase \ + bdpolyfromwkb10.testcase \ + bdpolyfromwkb11.testcase \ + bdpolyfromwkb12.testcase \ + bdpolyfromwkb13.testcase \ + bdpolyfromwkb14.testcase \ + bdpolyfromwkb15.testcase \ + bdpolyfromwkb16.testcase \ + bdpolyfromwkb17.testcase \ + bdpolyfromwkb18.testcase \ + bdpolyfromwkb19.testcase \ + bdpolyfromwkb1.testcase \ + bdpolyfromwkb2.testcase \ + bdpolyfromwkb3.testcase \ + bdpolyfromwkb4.testcase \ + bdpolyfromwkb5.testcase \ + bdpolyfromwkb6.testcase \ + bdpolyfromwkb7.testcase \ + bdpolyfromwkb8.testcase \ + bdpolyfromwkb9.testcase \ + boundary1.testcase \ + boundary2.testcase \ + boundary3.testcase \ + boundary4.testcase \ + boundary5.testcase \ + boundary6.testcase \ + boundary7.testcase \ + boundary8.testcase \ + boundary9.testcase \ + buffer10.testcase \ + buffer1.testcase \ + buffer2.testcase \ + buffer3.testcase \ + buffer4.testcase \ + buffer5.testcase \ + buffer6.testcase \ + buffer7.testcase \ + buffer8.testcase \ + buffer9.testcase \ + buildarea1.testcase \ + buildarea2.testcase \ + buildarea3.testcase \ + buildarea4.testcase \ + buildarea5.testcase \ + buildarea6.testcase \ + centroid1.testcase \ + centroid2.testcase \ + centroid3.testcase \ + centroid4.testcase \ + centroid5.testcase \ + centroid6.testcase \ + centroid7.testcase \ + centroid8.testcase \ + convexhull10.testcase \ + convexhull1.testcase \ + convexhull2.testcase \ + convexhull3.testcase \ + convexhull4.testcase \ + convexhull5.testcase \ + convexhull6.testcase \ + convexhull7.testcase \ + convexhull8.testcase \ + convexhull9.testcase \ + difference10.testcase \ + difference11.testcase \ + difference12.testcase \ + difference1.testcase \ + difference2.testcase \ + difference3.testcase \ + difference4.testcase \ + difference6.testcase \ + difference7.testcase \ + difference8.testcase \ + difference9.testcase \ + distance10.testcase \ + distance1.testcase \ + distance2.testcase \ + distance3.testcase \ + distance4.testcase \ + distance5.testcase \ + distance6.testcase \ + distance7.testcase \ + distance8.testcase \ + distance9.testcase \ + intersection10.testcase \ + intersection11.testcase \ + intersection12.testcase \ + intersection1.testcase \ + intersection2.testcase \ + intersection3.testcase \ + intersection4.testcase \ + intersection5.testcase \ + intersection6.testcase \ + intersection7.testcase \ + intersection8.testcase \ + intersection9.testcase \ + isclosed10.testcase \ + isclosed1.testcase \ + isclosed2.testcase \ + isclosed3.testcase \ + isclosed4.testcase \ + isclosed5.testcase \ + isclosed6.testcase \ + isclosed7.testcase \ + isclosed8.testcase \ + isclosed9.testcase \ + isring1.testcase \ + isring2.testcase \ + isring3.testcase \ + isring4.testcase \ + isring5.testcase \ + isring6.testcase \ + isring7.testcase \ + isring8.testcase \ + isring9.testcase \ + issimple1.testcase \ + issimple2.testcase \ + issimple3.testcase \ + issimple4.testcase \ + issimple5.testcase \ + issimple6.testcase \ + isvalid10.testcase \ + isvalid11.testcase \ + isvalid12.testcase \ + isvalid13.testcase \ + isvalid14.testcase \ + isvalid15.testcase \ + isvalid16.testcase \ + isvalid17.testcase \ + isvalid18.testcase \ + isvalid19.testcase \ + isvalid1.testcase \ + isvalid20.testcase \ + isvalid2.testcase \ + isvalid3.testcase \ + isvalid4.testcase \ + isvalid5.testcase \ + isvalid6.testcase \ + isvalid7.testcase \ + isvalid8.testcase \ + isvalid9.testcase \ + isvaliddetail1.testcase \ + isvaliddetail2.testcase \ + isvaliddetail3.testcase \ + isvaliddetail4.testcase \ + isvaliddetail5.testcase \ + isvalidreason1.testcase \ + isvalidreason2.testcase \ + isvalidreason3.testcase \ + isvalidreason4.testcase \ + isvalidreason5.testcase \ + pointonsurface1.testcase \ + pointonsurface2.testcase \ + pointonsurface3.testcase \ + pointonsurface4.testcase \ + pointonsurface5.testcase \ + pointonsurface6.testcase \ + pointonsurface7.testcase \ + polygonize10.testcase \ + polygonize11.testcase \ + polygonize12.testcase \ + polygonize13.testcase \ + polygonize14.testcase \ + polygonize1.testcase \ + polygonize2.testcase \ + polygonize3.testcase \ + polygonize4.testcase \ + polygonize5.testcase \ + polygonize6.testcase \ + polygonize7.testcase \ + polygonize8.testcase \ + polygonize9.testcase \ + ptdistancewithin10.testcase \ + ptdistancewithin11.testcase \ + ptdistancewithin12.testcase \ + ptdistancewithin13.testcase \ + ptdistancewithin14.testcase \ + ptdistancewithin15.testcase \ + ptdistancewithin16.testcase \ + ptdistancewithin17.testcase \ + ptdistancewithin18.testcase \ + ptdistancewithin1.testcase \ + ptdistancewithin2.testcase \ + ptdistancewithin3.testcase \ + ptdistancewithin4.testcase \ + ptdistancewithin5.testcase \ + ptdistancewithin6.testcase \ + ptdistancewithin7.testcase \ + ptdistancewithin8.testcase \ + ptdistancewithin9.testcase \ + ptdistwithin10.testcase \ + ptdistwithin11.testcase \ + ptdistwithin12.testcase \ + ptdistwithin13.testcase \ + ptdistwithin14.testcase \ + ptdistwithin15.testcase \ + ptdistwithin16.testcase \ + ptdistwithin1.testcase \ + ptdistwithin2.testcase \ + ptdistwithin3.testcase \ + ptdistwithin4.testcase \ + ptdistwithin5.testcase \ + ptdistwithin6.testcase \ + ptdistwithin7.testcase \ + ptdistwithin8.testcase \ + ptdistwithin9.testcase \ + relate1.testcase \ + relate2.testcase \ + relate3.testcase \ + relate4.testcase \ + relate5.testcase \ + relate6.testcase \ + relate7.testcase \ + relate8.testcase \ + relate9.testcase \ + relations1.testcase \ + relations2.testcase \ + relations3.testcase \ + relations4.testcase \ + relations5.testcase \ + relations6.testcase \ + relations7.testcase \ + relations8.testcase \ + routing6.testcase \ + simplify10.testcase \ + simplify11.testcase \ + simplify12.testcase \ + simplify13.testcase \ + simplify14.testcase \ + simplify15.testcase \ + simplify16.testcase \ + simplify1.testcase \ + simplify2.testcase \ + simplify3.testcase \ + simplify4.testcase \ + simplify5.testcase \ + simplify6.testcase \ + simplify7.testcase \ + simplify8.testcase \ + simplify9.testcase \ + st_area1.testcase \ + st_area2.testcase \ + st_area3.testcase \ + st_area4.testcase \ + st_area5.testcase \ + st_area6.testcase \ + st_area7.testcase \ + st_area8.testcase \ + st_area9.testcase \ + st_length10.testcase \ + st_length11.testcase \ + st_length12.testcase \ + st_length13.testcase \ + st_length14.testcase \ + st_length15.testcase \ + st_length16.testcase \ + st_length17.testcase \ + st_length18.testcase \ + st_length1.testcase \ + st_length2.testcase \ + st_length3.testcase \ + st_length4.testcase \ + st_length5.testcase \ + st_length6.testcase \ + st_length7.testcase \ + st_length8.testcase \ + st_length9.testcase \ + st_perimeter10.testcase \ + st_perimeter11.testcase \ + st_perimeter12.testcase \ + st_perimeter13.testcase \ + st_perimeter14.testcase \ + st_perimeter15.testcase \ + st_perimeter16.testcase \ + st_perimeter17.testcase \ + st_perimeter18.testcase \ + st_perimeter1.testcase \ + st_perimeter2.testcase \ + st_perimeter3.testcase \ + st_perimeter4.testcase \ + st_perimeter5.testcase \ + st_perimeter6.testcase \ + st_perimeter7.testcase \ + st_perimeter8.testcase \ + st_perimeter9.testcase \ + symdifference10.testcase \ + symdifference11.testcase \ + symdifference1.testcase \ + symdifference2.testcase \ + symdifference3.testcase \ + symdifference4.testcase \ + symdifference5.testcase \ + symdifference6.testcase \ + symdifference7.testcase \ + symdifference8.testcase \ + symdifference9.testcase \ + union10.testcase \ + union11.testcase \ + union12.testcase \ + union13.testcase \ + union14.testcase \ + union15.testcase \ + union16.testcase \ + union17.testcase \ + union18.testcase \ + union19.testcase \ + union1.testcase \ + union20.testcase \ + union21.testcase \ + union22.testcase \ + union23.testcase \ + union24.testcase \ + union25.testcase \ + union26.testcase \ + union27.testcase \ + union28.testcase \ + union29.testcase \ + union2.testcase \ + union3.testcase \ + union4.testcase \ + union5.testcase \ + union6.testcase \ + union7.testcase \ + union8.testcase \ + union9.testcase \ + makearc15.testcase \ + makearc19.testcase \ + makearc23.testcase \ + makecircle10.testcase \ + makecircle11.testcase \ + makecircle12.testcase \ + makecircle13.testcase \ + makecircle14.testcase \ + makecircle15.testcase \ + makecircle16.testcase \ + makecircle17.testcase \ + makecircle18.testcase \ + makeellipse13.testcase \ + makeellipse17.testcase \ + makeellipse21.testcase \ + makeellipticarc18.testcase \ + makeellipticarc22.testcase \ + makeellipticarc26.testcase \ + makecircularsector15.testcase \ + makecircularsector19.testcase \ + makecircularsector23.testcase \ + makecircularstripe15.testcase \ + makecircularstripe19.testcase \ + makecircularstripe23.testcase \ + makeellipticsector18.testcase \ + makeellipticsector22.testcase \ + makeellipticsector26.testcase \ + geoserror1.testcase \ + geoserror2.testcase \ + geoserror3.testcase \ + geoserror4.testcase \ + geoserror5.testcase \ + geoserror6.testcase \ + geoserror7.testcase \ + geoserror7.testcase \ + testgeos1.testcase \ + testgeos2.testcase \ + testgeos3.testcase \ + testgeos4.testcase \ + testgeos5.testcase \ + testgeos6.testcase \ + testgeos7.testcase \ + testgeos8.testcase \ + testgeos9.testcase \ + testgeos10.testcase \ + closestpoint10.testcase \ + closestpoint11.testcase \ + closestpoint12.testcase \ + closestpoint13.testcase \ + closestpoint14.testcase \ + closestpoint15.testcase \ + closestpoint16.testcase \ + closestpoint17.testcase \ + closestpoint18.testcase \ + closestpoint19.testcase \ + closestpoint1.testcase \ + closestpoint20.testcase \ + closestpoint21.testcase \ + closestpoint22.testcase \ + closestpoint2.testcase \ + closestpoint3.testcase \ + closestpoint4.testcase \ + closestpoint5.testcase \ + closestpoint6.testcase \ + closestpoint7.testcase \ + closestpoint8.testcase \ + closestpoint9.testcase \ + coveredby1.testcase \ + coveredby2.testcase \ + covers1.testcase \ + covers2.testcase \ + covers_covered1.testcase \ + covers_covered2.testcase \ + covers_covered3.testcase \ + covers_covered4.testcase \ + covers_covered5.testcase \ + covers_covered6.testcase \ + covers_covered7.testcase \ + createtopo10.testcase \ + createtopo11.testcase \ + createtopo12.testcase \ + createtopo13.testcase \ + createtopo14.testcase \ + createtopo15.testcase \ + createtopo16.testcase \ + createtopo17.testcase \ + createtopo18.testcase \ + createtopo1.testcase \ + createtopo2.testcase \ + createtopo3.testcase \ + createtopo4.testcase \ + createtopo5.testcase \ + createtopo6.testcase \ + createtopo7.testcase \ + createtopo8.testcase \ + createtopo9.testcase \ + distance_geogr10.testcase \ + distance_geogr11.testcase \ + distance_geogr12.testcase \ + distance_geogr1.testcase \ + distance_geogr2.testcase \ + distance_geogr3.testcase \ + distance_geogr4.testcase \ + distance_geogr5.testcase \ + distance_geogr6.testcase \ + distance_geogr7.testcase \ + distance_geogr8.testcase \ + distance_geogr9.testcase \ + hausdorffdistance1.testcase \ + hausdorffdistance2.testcase \ + hausdorffdistance3.testcase \ + hausdorffdistance4.testcase \ + hausdorffdistance5.testcase \ + hausdorffdistance6.testcase \ + hausdorffdistance7.testcase \ + hexgrid10.testcase \ + hexgrid11.testcase \ + hexgrid12.testcase \ + hexgrid13.testcase \ + hexgrid14.testcase \ + hexgrid15.testcase \ + hexgrid16.testcase \ + hexgrid17.testcase \ + hexgrid18.testcase \ + hexgrid19.testcase \ + hexgrid1.testcase \ + hexgrid20.testcase \ + hexgrid21.testcase \ + hexgrid22.testcase \ + hexgrid23.testcase \ + hexgrid2.testcase \ + hexgrid3.testcase \ + hexgrid4.testcase \ + hexgrid5.testcase \ + hexgrid6.testcase \ + hexgrid7.testcase \ + hexgrid8.testcase \ + hexgrid9.testcase \ + interpolateequidistantpoint10.testcase \ + interpolateequidistantpoint11.testcase \ + interpolateequidistantpoint12.testcase \ + interpolateequidistantpoint13.testcase \ + interpolateequidistantpoint14.testcase \ + interpolateequidistantpoint1.testcase \ + interpolateequidistantpoint2.testcase \ + interpolateequidistantpoint3.testcase \ + interpolateequidistantpoint4.testcase \ + interpolateequidistantpoint5.testcase \ + interpolateequidistantpoint6.testcase \ + interpolateequidistantpoint7.testcase \ + interpolateequidistantpoint8.testcase \ + interpolateequidistantpoint9.testcase \ + interpolatepoint10.testcase \ + interpolatepoint11.testcase \ + interpolatepoint12.testcase \ + interpolatepoint13.testcase \ + interpolatepoint14.testcase \ + interpolatepoint1.testcase \ + interpolatepoint2.testcase \ + interpolatepoint3.testcase \ + interpolatepoint4.testcase \ + interpolatepoint5.testcase \ + interpolatepoint6.testcase \ + interpolatepoint7.testcase \ + interpolatepoint8.testcase \ + interpolatepoint9.testcase \ + linemerge10.testcase \ + linemerge1.testcase \ + linemerge2.testcase \ + linemerge3.testcase \ + linemerge4.testcase \ + linemerge5.testcase \ + linemerge6.testcase \ + linemerge7.testcase \ + linemerge8.testcase \ + linemerge9.testcase \ + linesnodes10.testcase \ + linesnodes11.testcase \ + linesnodes12.testcase \ + linesnodes13.testcase \ + linesnodes14.testcase \ + linesnodes15.testcase \ + linesnodes16.testcase \ + linesnodes17.testcase \ + linesnodes18.testcase \ + linesnodes19.testcase \ + linesnodes1.testcase \ + linesnodes2.testcase \ + linesnodes3.testcase \ + linesnodes4.testcase \ + linesnodes5.testcase \ + linesnodes6.testcase \ + linesnodes7.testcase \ + linesnodes8.testcase \ + linesnodes9.testcase \ + linesubstring10.testcase \ + linesubstring11.testcase \ + linesubstring12.testcase \ + linesubstring13.testcase \ + linesubstring14.testcase \ + linesubstring15.testcase \ + linesubstring16.testcase \ + linesubstring17.testcase \ + linesubstring18.testcase \ + linesubstring19.testcase \ + linesubstring1.testcase \ + linesubstring20.testcase \ + linesubstring21.testcase \ + linesubstring22.testcase \ + linesubstring23.testcase \ + linesubstring24.testcase \ + linesubstring25.testcase \ + linesubstring26.testcase \ + linesubstring2.testcase \ + linesubstring3.testcase \ + linesubstring4.testcase \ + linesubstring5.testcase \ + linesubstring6.testcase \ + linesubstring7.testcase \ + linesubstring8.testcase \ + linesubstring9.testcase \ + locatepoint10.testcase \ + locatepoint11.testcase \ + locatepoint12.testcase \ + locatepoint1.testcase \ + locatepoint2.testcase \ + locatepoint3.testcase \ + locatepoint4.testcase \ + locatepoint5.testcase \ + locatepoint6.testcase \ + locatepoint7.testcase \ + locatepoint8.testcase \ + locatepoint9.testcase \ + offsetcurve10.testcase \ + offsetcurve11.testcase \ + offsetcurve12.testcase \ + offsetcurve13.testcase \ + offsetcurve14.testcase \ + offsetcurve1.testcase \ + offsetcurve2.testcase \ + offsetcurve3.testcase \ + offsetcurve4.testcase \ + offsetcurve5.testcase \ + offsetcurve6.testcase \ + offsetcurve7.testcase \ + offsetcurve8.testcase \ + offsetcurve9.testcase \ + ringsnodes1.testcase \ + ringsnodes2.testcase \ + ringsnodes3.testcase \ + ringsnodes4.testcase \ + ringsnodes5.testcase \ + ringsnodes6.testcase \ + sharedpaths10.testcase \ + sharedpaths11.testcase \ + sharedpaths12.testcase \ + sharedpaths13.testcase \ + sharedpaths14.testcase \ + sharedpaths15.testcase \ + sharedpaths16.testcase \ + sharedpaths17.testcase \ + sharedpaths18.testcase \ + sharedpaths19.testcase \ + sharedpaths1.testcase \ + sharedpaths20.testcase \ + sharedpaths21.testcase \ + sharedpaths22.testcase \ + sharedpaths23.testcase \ + sharedpaths24.testcase \ + sharedpaths25.testcase \ + sharedpaths26.testcase \ + sharedpaths27.testcase \ + sharedpaths28.testcase \ + sharedpaths29.testcase \ + sharedpaths2.testcase \ + sharedpaths30.testcase \ + sharedpaths31.testcase \ + sharedpaths32.testcase \ + sharedpaths3.testcase \ + sharedpaths4.testcase \ + sharedpaths5.testcase \ + sharedpaths6.testcase \ + sharedpaths7.testcase \ + sharedpaths8.testcase \ + sharedpaths9.testcase \ + shortestline1.testcase \ + shortestline2.testcase \ + shortestline3.testcase \ + shortestline4.testcase \ + shortestline5.testcase \ + shortestline6.testcase \ + shortestline7.testcase \ + singlesidedbuffer11.testcase \ + singlesidedbuffer12.testcase \ + singlesidedbuffer13.testcase \ + singlesidedbuffer14.testcase \ + singlesidedbuffer15.testcase \ + singlesidedbuffer16.testcase \ + singlesidedbuffer17.testcase \ + singlesidedbuffer1.testcase \ + singlesidedbuffer2.testcase \ + singlesidedbuffer3.testcase \ + singlesidedbuffer4.testcase \ + singlesidedbuffer5.testcase \ + singlesidedbuffer6.testcase \ + singlesidedbuffer7.testcase \ + singlesidedbuffer8.testcase \ + singlesidedbuffer9.testcase \ + snap10.testcase \ + snap1.testcase \ + snap2.testcase \ + snap3.testcase \ + snap4.testcase \ + snap5.testcase \ + snap6.testcase \ + snap7.testcase \ + snap8.testcase \ + snap9.testcase \ + squaregrid10.testcase \ + squaregrid11.testcase \ + squaregrid12.testcase \ + squaregrid13.testcase \ + squaregrid14.testcase \ + squaregrid15.testcase \ + squaregrid16.testcase \ + squaregrid17.testcase \ + squaregrid18.testcase \ + squaregrid19.testcase \ + squaregrid1.testcase \ + squaregrid20.testcase \ + squaregrid21.testcase \ + squaregrid22.testcase \ + squaregrid23.testcase \ + squaregrid2.testcase \ + squaregrid3.testcase \ + squaregrid4.testcase \ + squaregrid5.testcase \ + squaregrid6.testcase \ + squaregrid7.testcase \ + squaregrid8.testcase \ + squaregrid9.testcase \ + trianggrid10.testcase \ + trianggrid11.testcase \ + trianggrid12.testcase \ + trianggrid13.testcase \ + trianggrid14.testcase \ + trianggrid15.testcase \ + trianggrid16.testcase \ + trianggrid17.testcase \ + trianggrid18.testcase \ + trianggrid19.testcase \ + trianggrid1.testcase \ + trianggrid20.testcase \ + trianggrid21.testcase \ + trianggrid22.testcase \ + trianggrid23.testcase \ + trianggrid2.testcase \ + trianggrid3.testcase \ + trianggrid4.testcase \ + trianggrid5.testcase \ + trianggrid6.testcase \ + trianggrid7.testcase \ + trianggrid8.testcase \ + trianggrid9.testcase \ + unaryunion1.testcase \ + unaryunion2.testcase \ + unaryunion3.testcase \ + unaryunion4.testcase \ + unaryunion5.testcase \ + unaryunion6.testcase \ + unaryunion7.testcase \ + unaryunion8.testcase + diff --git a/src/spatialite/test/sql_stmt_geos_tests/Makefile.in b/src/spatialite/test/sql_stmt_geos_tests/Makefile.in new file mode 100644 index 0000000..9279b26 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/Makefile.in @@ -0,0 +1,1179 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/sql_stmt_geos_tests +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = bdmpolyfromtext10.testcase \ + bdmpolyfromtext13.testcase \ + bdmpolyfromtext14.testcase \ + bdmpolyfromtext15.testcase \ + bdmpolyfromtext16.testcase \ + bdmpolyfromtext17.testcase \ + bdmpolyfromtext1.testcase \ + bdmpolyfromtext2.testcase \ + bdmpolyfromtext3.testcase \ + bdmpolyfromtext4.testcase \ + bdmpolyfromtext9.testcase \ + bdmpolyfromwkb10.testcase \ + bdmpolyfromwkb11.testcase \ + bdmpolyfromwkb12.testcase \ + bdmpolyfromwkb13.testcase \ + bdmpolyfromwkb14.testcase \ + bdmpolyfromwkb15.testcase \ + bdmpolyfromwkb16.testcase \ + bdmpolyfromwkb17.testcase \ + bdmpolyfromwkb18.testcase \ + bdmpolyfromwkb19.testcase \ + bdmpolyfromwkb1.testcase \ + bdmpolyfromwkb2.testcase \ + bdmpolyfromwkb3.testcase \ + bdmpolyfromwkb4.testcase \ + bdmpolyfromwkb5.testcase \ + bdmpolyfromwkb6.testcase \ + bdmpolyfromwkb7.testcase \ + bdmpolyfromwkb8.testcase \ + bdmpolyfromwkb9.testcase \ + bdpolyfromtext10.testcase \ + bdpolyfromtext11.testcase \ + bdpolyfromtext12.testcase \ + bdpolyfromtext13.testcase \ + bdpolyfromtext14.testcase \ + bdpolyfromtext15.testcase \ + bdpolyfromtext16.testcase \ + bdpolyfromtext1.testcase \ + bdpolyfromtext2.testcase \ + bdpolyfromtext3.testcase \ + bdpolyfromtext4.testcase \ + bdpolyfromtext5.testcase \ + bdpolyfromtext6.testcase \ + bdpolyfromtext7.testcase \ + bdpolyfromtext8.testcase \ + bdpolyfromtext9.testcase \ + bdpolyfromwkb10.testcase \ + bdpolyfromwkb11.testcase \ + bdpolyfromwkb12.testcase \ + bdpolyfromwkb13.testcase \ + bdpolyfromwkb14.testcase \ + bdpolyfromwkb15.testcase \ + bdpolyfromwkb16.testcase \ + bdpolyfromwkb17.testcase \ + bdpolyfromwkb18.testcase \ + bdpolyfromwkb19.testcase \ + bdpolyfromwkb1.testcase \ + bdpolyfromwkb2.testcase \ + bdpolyfromwkb3.testcase \ + bdpolyfromwkb4.testcase \ + bdpolyfromwkb5.testcase \ + bdpolyfromwkb6.testcase \ + bdpolyfromwkb7.testcase \ + bdpolyfromwkb8.testcase \ + bdpolyfromwkb9.testcase \ + boundary1.testcase \ + boundary2.testcase \ + boundary3.testcase \ + boundary4.testcase \ + boundary5.testcase \ + boundary6.testcase \ + boundary7.testcase \ + boundary8.testcase \ + boundary9.testcase \ + buffer10.testcase \ + buffer1.testcase \ + buffer2.testcase \ + buffer3.testcase \ + buffer4.testcase \ + buffer5.testcase \ + buffer6.testcase \ + buffer7.testcase \ + buffer8.testcase \ + buffer9.testcase \ + buildarea1.testcase \ + buildarea2.testcase \ + buildarea3.testcase \ + buildarea4.testcase \ + buildarea5.testcase \ + buildarea6.testcase \ + centroid1.testcase \ + centroid2.testcase \ + centroid3.testcase \ + centroid4.testcase \ + centroid5.testcase \ + centroid6.testcase \ + centroid7.testcase \ + centroid8.testcase \ + convexhull10.testcase \ + convexhull1.testcase \ + convexhull2.testcase \ + convexhull3.testcase \ + convexhull4.testcase \ + convexhull5.testcase \ + convexhull6.testcase \ + convexhull7.testcase \ + convexhull8.testcase \ + convexhull9.testcase \ + difference10.testcase \ + difference11.testcase \ + difference12.testcase \ + difference1.testcase \ + difference2.testcase \ + difference3.testcase \ + difference4.testcase \ + difference6.testcase \ + difference7.testcase \ + difference8.testcase \ + difference9.testcase \ + distance10.testcase \ + distance1.testcase \ + distance2.testcase \ + distance3.testcase \ + distance4.testcase \ + distance5.testcase \ + distance6.testcase \ + distance7.testcase \ + distance8.testcase \ + distance9.testcase \ + intersection10.testcase \ + intersection11.testcase \ + intersection12.testcase \ + intersection1.testcase \ + intersection2.testcase \ + intersection3.testcase \ + intersection4.testcase \ + intersection5.testcase \ + intersection6.testcase \ + intersection7.testcase \ + intersection8.testcase \ + intersection9.testcase \ + isclosed10.testcase \ + isclosed1.testcase \ + isclosed2.testcase \ + isclosed3.testcase \ + isclosed4.testcase \ + isclosed5.testcase \ + isclosed6.testcase \ + isclosed7.testcase \ + isclosed8.testcase \ + isclosed9.testcase \ + isring1.testcase \ + isring2.testcase \ + isring3.testcase \ + isring4.testcase \ + isring5.testcase \ + isring6.testcase \ + isring7.testcase \ + isring8.testcase \ + isring9.testcase \ + issimple1.testcase \ + issimple2.testcase \ + issimple3.testcase \ + issimple4.testcase \ + issimple5.testcase \ + issimple6.testcase \ + isvalid10.testcase \ + isvalid11.testcase \ + isvalid12.testcase \ + isvalid13.testcase \ + isvalid14.testcase \ + isvalid15.testcase \ + isvalid16.testcase \ + isvalid17.testcase \ + isvalid18.testcase \ + isvalid19.testcase \ + isvalid1.testcase \ + isvalid20.testcase \ + isvalid2.testcase \ + isvalid3.testcase \ + isvalid4.testcase \ + isvalid5.testcase \ + isvalid6.testcase \ + isvalid7.testcase \ + isvalid8.testcase \ + isvalid9.testcase \ + isvaliddetail1.testcase \ + isvaliddetail2.testcase \ + isvaliddetail3.testcase \ + isvaliddetail4.testcase \ + isvaliddetail5.testcase \ + isvalidreason1.testcase \ + isvalidreason2.testcase \ + isvalidreason3.testcase \ + isvalidreason4.testcase \ + isvalidreason5.testcase \ + pointonsurface1.testcase \ + pointonsurface2.testcase \ + pointonsurface3.testcase \ + pointonsurface4.testcase \ + pointonsurface5.testcase \ + pointonsurface6.testcase \ + pointonsurface7.testcase \ + polygonize10.testcase \ + polygonize11.testcase \ + polygonize12.testcase \ + polygonize13.testcase \ + polygonize14.testcase \ + polygonize1.testcase \ + polygonize2.testcase \ + polygonize3.testcase \ + polygonize4.testcase \ + polygonize5.testcase \ + polygonize6.testcase \ + polygonize7.testcase \ + polygonize8.testcase \ + polygonize9.testcase \ + ptdistancewithin10.testcase \ + ptdistancewithin11.testcase \ + ptdistancewithin12.testcase \ + ptdistancewithin13.testcase \ + ptdistancewithin14.testcase \ + ptdistancewithin15.testcase \ + ptdistancewithin16.testcase \ + ptdistancewithin17.testcase \ + ptdistancewithin18.testcase \ + ptdistancewithin1.testcase \ + ptdistancewithin2.testcase \ + ptdistancewithin3.testcase \ + ptdistancewithin4.testcase \ + ptdistancewithin5.testcase \ + ptdistancewithin6.testcase \ + ptdistancewithin7.testcase \ + ptdistancewithin8.testcase \ + ptdistancewithin9.testcase \ + ptdistwithin10.testcase \ + ptdistwithin11.testcase \ + ptdistwithin12.testcase \ + ptdistwithin13.testcase \ + ptdistwithin14.testcase \ + ptdistwithin15.testcase \ + ptdistwithin16.testcase \ + ptdistwithin1.testcase \ + ptdistwithin2.testcase \ + ptdistwithin3.testcase \ + ptdistwithin4.testcase \ + ptdistwithin5.testcase \ + ptdistwithin6.testcase \ + ptdistwithin7.testcase \ + ptdistwithin8.testcase \ + ptdistwithin9.testcase \ + relate1.testcase \ + relate2.testcase \ + relate3.testcase \ + relate4.testcase \ + relate5.testcase \ + relate6.testcase \ + relate7.testcase \ + relate8.testcase \ + relate9.testcase \ + relations1.testcase \ + relations2.testcase \ + relations3.testcase \ + relations4.testcase \ + relations5.testcase \ + relations6.testcase \ + relations7.testcase \ + relations8.testcase \ + routing6.testcase \ + simplify10.testcase \ + simplify11.testcase \ + simplify12.testcase \ + simplify13.testcase \ + simplify14.testcase \ + simplify15.testcase \ + simplify16.testcase \ + simplify1.testcase \ + simplify2.testcase \ + simplify3.testcase \ + simplify4.testcase \ + simplify5.testcase \ + simplify6.testcase \ + simplify7.testcase \ + simplify8.testcase \ + simplify9.testcase \ + st_area1.testcase \ + st_area2.testcase \ + st_area3.testcase \ + st_area4.testcase \ + st_area5.testcase \ + st_area6.testcase \ + st_area7.testcase \ + st_area8.testcase \ + st_area9.testcase \ + st_length10.testcase \ + st_length11.testcase \ + st_length12.testcase \ + st_length13.testcase \ + st_length14.testcase \ + st_length15.testcase \ + st_length16.testcase \ + st_length17.testcase \ + st_length18.testcase \ + st_length1.testcase \ + st_length2.testcase \ + st_length3.testcase \ + st_length4.testcase \ + st_length5.testcase \ + st_length6.testcase \ + st_length7.testcase \ + st_length8.testcase \ + st_length9.testcase \ + st_perimeter10.testcase \ + st_perimeter11.testcase \ + st_perimeter12.testcase \ + st_perimeter13.testcase \ + st_perimeter14.testcase \ + st_perimeter15.testcase \ + st_perimeter16.testcase \ + st_perimeter17.testcase \ + st_perimeter18.testcase \ + st_perimeter1.testcase \ + st_perimeter2.testcase \ + st_perimeter3.testcase \ + st_perimeter4.testcase \ + st_perimeter5.testcase \ + st_perimeter6.testcase \ + st_perimeter7.testcase \ + st_perimeter8.testcase \ + st_perimeter9.testcase \ + symdifference10.testcase \ + symdifference11.testcase \ + symdifference1.testcase \ + symdifference2.testcase \ + symdifference3.testcase \ + symdifference4.testcase \ + symdifference5.testcase \ + symdifference6.testcase \ + symdifference7.testcase \ + symdifference8.testcase \ + symdifference9.testcase \ + union10.testcase \ + union11.testcase \ + union12.testcase \ + union13.testcase \ + union14.testcase \ + union15.testcase \ + union16.testcase \ + union17.testcase \ + union18.testcase \ + union19.testcase \ + union1.testcase \ + union20.testcase \ + union21.testcase \ + union22.testcase \ + union23.testcase \ + union24.testcase \ + union25.testcase \ + union26.testcase \ + union27.testcase \ + union28.testcase \ + union29.testcase \ + union2.testcase \ + union3.testcase \ + union4.testcase \ + union5.testcase \ + union6.testcase \ + union7.testcase \ + union8.testcase \ + union9.testcase \ + makearc15.testcase \ + makearc19.testcase \ + makearc23.testcase \ + makecircle10.testcase \ + makecircle11.testcase \ + makecircle12.testcase \ + makecircle13.testcase \ + makecircle14.testcase \ + makecircle15.testcase \ + makecircle16.testcase \ + makecircle17.testcase \ + makecircle18.testcase \ + makeellipse13.testcase \ + makeellipse17.testcase \ + makeellipse21.testcase \ + makeellipticarc18.testcase \ + makeellipticarc22.testcase \ + makeellipticarc26.testcase \ + makecircularsector15.testcase \ + makecircularsector19.testcase \ + makecircularsector23.testcase \ + makecircularstripe15.testcase \ + makecircularstripe19.testcase \ + makecircularstripe23.testcase \ + makeellipticsector18.testcase \ + makeellipticsector22.testcase \ + makeellipticsector26.testcase \ + geoserror1.testcase \ + geoserror2.testcase \ + geoserror3.testcase \ + geoserror4.testcase \ + geoserror5.testcase \ + geoserror6.testcase \ + geoserror7.testcase \ + geoserror7.testcase \ + testgeos1.testcase \ + testgeos2.testcase \ + testgeos3.testcase \ + testgeos4.testcase \ + testgeos5.testcase \ + testgeos6.testcase \ + testgeos7.testcase \ + testgeos8.testcase \ + testgeos9.testcase \ + testgeos10.testcase \ + closestpoint10.testcase \ + closestpoint11.testcase \ + closestpoint12.testcase \ + closestpoint13.testcase \ + closestpoint14.testcase \ + closestpoint15.testcase \ + closestpoint16.testcase \ + closestpoint17.testcase \ + closestpoint18.testcase \ + closestpoint19.testcase \ + closestpoint1.testcase \ + closestpoint20.testcase \ + closestpoint21.testcase \ + closestpoint22.testcase \ + closestpoint2.testcase \ + closestpoint3.testcase \ + closestpoint4.testcase \ + closestpoint5.testcase \ + closestpoint6.testcase \ + closestpoint7.testcase \ + closestpoint8.testcase \ + closestpoint9.testcase \ + coveredby1.testcase \ + coveredby2.testcase \ + covers1.testcase \ + covers2.testcase \ + covers_covered1.testcase \ + covers_covered2.testcase \ + covers_covered3.testcase \ + covers_covered4.testcase \ + covers_covered5.testcase \ + covers_covered6.testcase \ + covers_covered7.testcase \ + createtopo10.testcase \ + createtopo11.testcase \ + createtopo12.testcase \ + createtopo13.testcase \ + createtopo14.testcase \ + createtopo15.testcase \ + createtopo16.testcase \ + createtopo17.testcase \ + createtopo18.testcase \ + createtopo1.testcase \ + createtopo2.testcase \ + createtopo3.testcase \ + createtopo4.testcase \ + createtopo5.testcase \ + createtopo6.testcase \ + createtopo7.testcase \ + createtopo8.testcase \ + createtopo9.testcase \ + distance_geogr10.testcase \ + distance_geogr11.testcase \ + distance_geogr12.testcase \ + distance_geogr1.testcase \ + distance_geogr2.testcase \ + distance_geogr3.testcase \ + distance_geogr4.testcase \ + distance_geogr5.testcase \ + distance_geogr6.testcase \ + distance_geogr7.testcase \ + distance_geogr8.testcase \ + distance_geogr9.testcase \ + hausdorffdistance1.testcase \ + hausdorffdistance2.testcase \ + hausdorffdistance3.testcase \ + hausdorffdistance4.testcase \ + hausdorffdistance5.testcase \ + hausdorffdistance6.testcase \ + hausdorffdistance7.testcase \ + hexgrid10.testcase \ + hexgrid11.testcase \ + hexgrid12.testcase \ + hexgrid13.testcase \ + hexgrid14.testcase \ + hexgrid15.testcase \ + hexgrid16.testcase \ + hexgrid17.testcase \ + hexgrid18.testcase \ + hexgrid19.testcase \ + hexgrid1.testcase \ + hexgrid20.testcase \ + hexgrid21.testcase \ + hexgrid22.testcase \ + hexgrid23.testcase \ + hexgrid2.testcase \ + hexgrid3.testcase \ + hexgrid4.testcase \ + hexgrid5.testcase \ + hexgrid6.testcase \ + hexgrid7.testcase \ + hexgrid8.testcase \ + hexgrid9.testcase \ + interpolateequidistantpoint10.testcase \ + interpolateequidistantpoint11.testcase \ + interpolateequidistantpoint12.testcase \ + interpolateequidistantpoint13.testcase \ + interpolateequidistantpoint14.testcase \ + interpolateequidistantpoint1.testcase \ + interpolateequidistantpoint2.testcase \ + interpolateequidistantpoint3.testcase \ + interpolateequidistantpoint4.testcase \ + interpolateequidistantpoint5.testcase \ + interpolateequidistantpoint6.testcase \ + interpolateequidistantpoint7.testcase \ + interpolateequidistantpoint8.testcase \ + interpolateequidistantpoint9.testcase \ + interpolatepoint10.testcase \ + interpolatepoint11.testcase \ + interpolatepoint12.testcase \ + interpolatepoint13.testcase \ + interpolatepoint14.testcase \ + interpolatepoint1.testcase \ + interpolatepoint2.testcase \ + interpolatepoint3.testcase \ + interpolatepoint4.testcase \ + interpolatepoint5.testcase \ + interpolatepoint6.testcase \ + interpolatepoint7.testcase \ + interpolatepoint8.testcase \ + interpolatepoint9.testcase \ + linemerge10.testcase \ + linemerge1.testcase \ + linemerge2.testcase \ + linemerge3.testcase \ + linemerge4.testcase \ + linemerge5.testcase \ + linemerge6.testcase \ + linemerge7.testcase \ + linemerge8.testcase \ + linemerge9.testcase \ + linesnodes10.testcase \ + linesnodes11.testcase \ + linesnodes12.testcase \ + linesnodes13.testcase \ + linesnodes14.testcase \ + linesnodes15.testcase \ + linesnodes16.testcase \ + linesnodes17.testcase \ + linesnodes18.testcase \ + linesnodes19.testcase \ + linesnodes1.testcase \ + linesnodes2.testcase \ + linesnodes3.testcase \ + linesnodes4.testcase \ + linesnodes5.testcase \ + linesnodes6.testcase \ + linesnodes7.testcase \ + linesnodes8.testcase \ + linesnodes9.testcase \ + linesubstring10.testcase \ + linesubstring11.testcase \ + linesubstring12.testcase \ + linesubstring13.testcase \ + linesubstring14.testcase \ + linesubstring15.testcase \ + linesubstring16.testcase \ + linesubstring17.testcase \ + linesubstring18.testcase \ + linesubstring19.testcase \ + linesubstring1.testcase \ + linesubstring20.testcase \ + linesubstring21.testcase \ + linesubstring22.testcase \ + linesubstring23.testcase \ + linesubstring24.testcase \ + linesubstring25.testcase \ + linesubstring26.testcase \ + linesubstring2.testcase \ + linesubstring3.testcase \ + linesubstring4.testcase \ + linesubstring5.testcase \ + linesubstring6.testcase \ + linesubstring7.testcase \ + linesubstring8.testcase \ + linesubstring9.testcase \ + locatepoint10.testcase \ + locatepoint11.testcase \ + locatepoint12.testcase \ + locatepoint1.testcase \ + locatepoint2.testcase \ + locatepoint3.testcase \ + locatepoint4.testcase \ + locatepoint5.testcase \ + locatepoint6.testcase \ + locatepoint7.testcase \ + locatepoint8.testcase \ + locatepoint9.testcase \ + offsetcurve10.testcase \ + offsetcurve11.testcase \ + offsetcurve12.testcase \ + offsetcurve13.testcase \ + offsetcurve14.testcase \ + offsetcurve1.testcase \ + offsetcurve2.testcase \ + offsetcurve3.testcase \ + offsetcurve4.testcase \ + offsetcurve5.testcase \ + offsetcurve6.testcase \ + offsetcurve7.testcase \ + offsetcurve8.testcase \ + offsetcurve9.testcase \ + ringsnodes1.testcase \ + ringsnodes2.testcase \ + ringsnodes3.testcase \ + ringsnodes4.testcase \ + ringsnodes5.testcase \ + ringsnodes6.testcase \ + sharedpaths10.testcase \ + sharedpaths11.testcase \ + sharedpaths12.testcase \ + sharedpaths13.testcase \ + sharedpaths14.testcase \ + sharedpaths15.testcase \ + sharedpaths16.testcase \ + sharedpaths17.testcase \ + sharedpaths18.testcase \ + sharedpaths19.testcase \ + sharedpaths1.testcase \ + sharedpaths20.testcase \ + sharedpaths21.testcase \ + sharedpaths22.testcase \ + sharedpaths23.testcase \ + sharedpaths24.testcase \ + sharedpaths25.testcase \ + sharedpaths26.testcase \ + sharedpaths27.testcase \ + sharedpaths28.testcase \ + sharedpaths29.testcase \ + sharedpaths2.testcase \ + sharedpaths30.testcase \ + sharedpaths31.testcase \ + sharedpaths32.testcase \ + sharedpaths3.testcase \ + sharedpaths4.testcase \ + sharedpaths5.testcase \ + sharedpaths6.testcase \ + sharedpaths7.testcase \ + sharedpaths8.testcase \ + sharedpaths9.testcase \ + shortestline1.testcase \ + shortestline2.testcase \ + shortestline3.testcase \ + shortestline4.testcase \ + shortestline5.testcase \ + shortestline6.testcase \ + shortestline7.testcase \ + singlesidedbuffer11.testcase \ + singlesidedbuffer12.testcase \ + singlesidedbuffer13.testcase \ + singlesidedbuffer14.testcase \ + singlesidedbuffer15.testcase \ + singlesidedbuffer16.testcase \ + singlesidedbuffer17.testcase \ + singlesidedbuffer1.testcase \ + singlesidedbuffer2.testcase \ + singlesidedbuffer3.testcase \ + singlesidedbuffer4.testcase \ + singlesidedbuffer5.testcase \ + singlesidedbuffer6.testcase \ + singlesidedbuffer7.testcase \ + singlesidedbuffer8.testcase \ + singlesidedbuffer9.testcase \ + snap10.testcase \ + snap1.testcase \ + snap2.testcase \ + snap3.testcase \ + snap4.testcase \ + snap5.testcase \ + snap6.testcase \ + snap7.testcase \ + snap8.testcase \ + snap9.testcase \ + squaregrid10.testcase \ + squaregrid11.testcase \ + squaregrid12.testcase \ + squaregrid13.testcase \ + squaregrid14.testcase \ + squaregrid15.testcase \ + squaregrid16.testcase \ + squaregrid17.testcase \ + squaregrid18.testcase \ + squaregrid19.testcase \ + squaregrid1.testcase \ + squaregrid20.testcase \ + squaregrid21.testcase \ + squaregrid22.testcase \ + squaregrid23.testcase \ + squaregrid2.testcase \ + squaregrid3.testcase \ + squaregrid4.testcase \ + squaregrid5.testcase \ + squaregrid6.testcase \ + squaregrid7.testcase \ + squaregrid8.testcase \ + squaregrid9.testcase \ + trianggrid10.testcase \ + trianggrid11.testcase \ + trianggrid12.testcase \ + trianggrid13.testcase \ + trianggrid14.testcase \ + trianggrid15.testcase \ + trianggrid16.testcase \ + trianggrid17.testcase \ + trianggrid18.testcase \ + trianggrid19.testcase \ + trianggrid1.testcase \ + trianggrid20.testcase \ + trianggrid21.testcase \ + trianggrid22.testcase \ + trianggrid23.testcase \ + trianggrid2.testcase \ + trianggrid3.testcase \ + trianggrid4.testcase \ + trianggrid5.testcase \ + trianggrid6.testcase \ + trianggrid7.testcase \ + trianggrid8.testcase \ + trianggrid9.testcase \ + unaryunion1.testcase \ + unaryunion2.testcase \ + unaryunion3.testcase \ + unaryunion4.testcase \ + unaryunion5.testcase \ + unaryunion6.testcase \ + unaryunion7.testcase \ + unaryunion8.testcase + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/sql_stmt_geos_tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/sql_stmt_geos_tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext1.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext1.testcase new file mode 100644 index 0000000..88a51d8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext1.testcase @@ -0,0 +1,9 @@ +BdMPolyFromText +:memory: #use in-memory database +SELECT AsText(BdMPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')); +1 # rows (not including the header row) +1 # columns +AsText(BdMPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')) +MULTIPOLYGON(((0 0, 0 1, 1 1, 1 0, 0 0))) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext10.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext10.testcase new file mode 100644 index 0000000..2e534f2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext10.testcase @@ -0,0 +1,9 @@ +BdMPolyFromText - point, no SRID +:memory: #use in-memory database +SELECT BdMPolyFromText("Point(1 2)"); +1 # rows (not including the header row) +1 # columns +BdMPolyFromText("Point(1 2)") +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext13.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext13.testcase new file mode 100644 index 0000000..89b677d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext13.testcase @@ -0,0 +1,9 @@ +BdMPolyFromText - text SRID +:memory: #use in-memory database +SELECT BdMPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int"); +1 # rows (not including the header row) +1 # columns +BdMPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int") +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext14.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext14.testcase new file mode 100644 index 0000000..764c23c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext14.testcase @@ -0,0 +1,9 @@ +BdMPolyFromText - bad wkt, SRID +:memory: #use in-memory database +SELECT BdMPolyFromText("Point(1,2)", 4326); +1 # rows (not including the header row) +1 # columns +BdMPolyFromText("Point(1,2)", 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext15.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext15.testcase new file mode 100644 index 0000000..f3d8ea1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext15.testcase @@ -0,0 +1,8 @@ +BdMPolyFromText +:memory: #use in-memory database +SELECT AsEwkt(BdMPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')); +1 # rows (not including the header row) +1 # columns +AsEwkt(BdMPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')) +SRID=0;MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2))) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext16.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext16.testcase new file mode 100644 index 0000000..45de68e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext16.testcase @@ -0,0 +1,8 @@ +BdMPolyFromText +:memory: #use in-memory database +SELECT AsEwkt(BdMPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))', 4326)); +1 # rows (not including the header row) +1 # columns +AsEwkt(BdMPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))', 4326)) +SRID=4326;MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2))) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext17.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext17.testcase new file mode 100644 index 0000000..0028f4e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext17.testcase @@ -0,0 +1,9 @@ +BdMPolyFromText - bad wkt, no SRID +:memory: #use in-memory database +SELECT BdMPolyFromText("Point(1,2)"); +1 # rows (not including the header row) +1 # columns +BdMPolyFromText("Point(1,2)") +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext2.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext2.testcase new file mode 100644 index 0000000..5069194 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext2.testcase @@ -0,0 +1,9 @@ +BdMPolyFromText - SRID +:memory: #use in-memory database +SELECT AsEWkt(BdMPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', 4326)); +1 # rows (not including the header row) +1 # columns +AsEWkt(BdMPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', 4326)) +SRID=4326;MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0))) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext3.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext3.testcase new file mode 100644 index 0000000..87b124e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext3.testcase @@ -0,0 +1,9 @@ +BdMPolyFromText - non-text, no SRID +:memory: #use in-memory database +SELECT BdMPolyFromText(26); +1 # rows (not including the header row) +1 # columns +BdMPolyFromText(26) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext4.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext4.testcase new file mode 100644 index 0000000..0ea7630 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext4.testcase @@ -0,0 +1,9 @@ +BdMPolyFromText - non-text, SRID +:memory: #use in-memory database +SELECT BdMPolyFromText(26, 4326); +1 # rows (not including the header row) +1 # columns +BdMPolyFromText(26, 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext9.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext9.testcase new file mode 100644 index 0000000..8d3fa13 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromtext9.testcase @@ -0,0 +1,9 @@ +BdMPolyFromText - point, SRID +:memory: #use in-memory database +SELECT BdMPolyFromText("Point(1 2)", 4); +1 # rows (not including the header row) +1 # columns +BdMPolyFromText("Point(1 2)", 4) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb1.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb1.testcase new file mode 100644 index 0000000..a62fc39 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb1.testcase @@ -0,0 +1,9 @@ +BdMPolyFromWKB +:memory: #use in-memory database +SELECT AsText(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')))); +1 # rows (not including the header row) +1 # columns +AsText(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')))) +MULTIPOLYGON(((0 0, 0 1, 1 1, 1 0, 0 0))) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb10.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb10.testcase new file mode 100644 index 0000000..684dce6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb10.testcase @@ -0,0 +1,9 @@ +BdMPolyFromWKB - point, no SRID +:memory: #use in-memory database +SELECT BdMPolyFromWKB(AsBinary(GeomFromText("Point(1 2)"))); +1 # rows (not including the header row) +1 # columns +BdMPolyFromWKB(AsBinary(GeomFromText("Point(1 2)"))) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb11.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb11.testcase new file mode 100644 index 0000000..a1ee090 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb11.testcase @@ -0,0 +1,9 @@ +BdMPolyFromWKB - toxic, no SRID +:memory: #use in-memory database +SELECT BdMPolyFromWKB(AsBinary(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))); +1 # rows (not including the header row) +1 # columns +BdMPolyFromWKB(AsBinary(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb12.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb12.testcase new file mode 100644 index 0000000..a8b5c3a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb12.testcase @@ -0,0 +1,9 @@ +BdMpolyFromWKB - toxic, SRID +:memory: #use in-memory database +SELECT BdMpolyFromWKB(AsBinary(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326))); +1 # rows (not including the header row) +1 # columns +BdMpolyFromWKB(AsBinary(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326))) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb13.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb13.testcase new file mode 100644 index 0000000..0c87ee6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb13.testcase @@ -0,0 +1,9 @@ +BdMPolyFromWKB - text SRID +:memory: #use in-memory database +SELECT BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int"))); +1 # rows (not including the header row) +1 # columns +BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int"))) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb14.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb14.testcase new file mode 100644 index 0000000..f2a7f2a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb14.testcase @@ -0,0 +1,9 @@ +BdMPolyFromWKB - point, SRID +:memory: #use in-memory database +SELECT BdMPolyFromWKB(AsBinary(GeomFromText("Point(1,2)")), 4326); +1 # rows (not including the header row) +1 # columns +BdMPolyFromWKB(AsBinary(GeomFromText("Point(1,2)")), 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb15.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb15.testcase new file mode 100644 index 0000000..bb16819 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb15.testcase @@ -0,0 +1,9 @@ +BdMPolyFromWKB +:memory: #use in-memory database +SELECT AsText(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')))); +1 # rows (not including the header row) +1 # columns +AsText(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')))) +MULTIPOLYGON(((0 0, 0 10, 10 10, 10 0, 0 0), (2 2, 8 2, 8 8, 2 8, 2 2))) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb16.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb16.testcase new file mode 100644 index 0000000..b06f70d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb16.testcase @@ -0,0 +1,8 @@ +BdMPolyFromWKB +:memory: #use in-memory database +SELECT AsEwkt(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')), 4326)); +1 # rows (not including the header row) +1 # columns +AsEwkt(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')), 4326)) +SRID=4326;MULTIPOLYGON(((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2))) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb17.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb17.testcase new file mode 100644 index 0000000..ffcd56b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb17.testcase @@ -0,0 +1,8 @@ +BdMPolyFromWKB - zeroblob +:memory: #use in-memory database +SELECT BdMPolyFromWKB(zeroblob(25)); +1 # rows (not including the header row) +1 # columns +BdMPolyFromWKB(zeroblob(25)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb18.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb18.testcase new file mode 100644 index 0000000..7c7d42c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb18.testcase @@ -0,0 +1,8 @@ +BdMPolyFromWKB - zeroblob, invalid SRID +:memory: #use in-memory database +SELECT BdMPolyFromWKB(zeroblob(25), 'a'); +1 # rows (not including the header row) +1 # columns +BdMPolyFromWKB(zeroblob(25), 'a') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb19.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb19.testcase new file mode 100644 index 0000000..ae11321 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb19.testcase @@ -0,0 +1,8 @@ +BdMPolyFromWKB - zeroblob, SRID +:memory: #use in-memory database +SELECT BdMPolyFromWKB(zeroblob(25), 4326); +1 # rows (not including the header row) +1 # columns +BdMPolyFromWKB(zeroblob(25), 4326) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb2.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb2.testcase new file mode 100644 index 0000000..ff113e6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb2.testcase @@ -0,0 +1,9 @@ +BdMPolyFromWKB - SRID +:memory: #use in-memory database +SELECT AsEWkt(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')), 4326)); +1 # rows (not including the header row) +1 # columns +AsEWkt(BdMPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')), 4326)) +SRID=4326;MULTIPOLYGON(((0 0,0 1,1 1,1 0,0 0))) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb3.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb3.testcase new file mode 100644 index 0000000..ff8e73e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb3.testcase @@ -0,0 +1,9 @@ +BdMPolyFromWKB - non-text, no SRID +:memory: #use in-memory database +SELECT BdMPolyFromWKB(26); +1 # rows (not including the header row) +1 # columns +BdMPolyFromWKB(26) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb4.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb4.testcase new file mode 100644 index 0000000..9fdb41a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb4.testcase @@ -0,0 +1,9 @@ +BdMPolyFromWKB - non-text, SRID +:memory: #use in-memory database +SELECT BdMPolyFromWKB(26, 4326); +1 # rows (not including the header row) +1 # columns +BdMPolyFromWKB(26, 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb5.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb5.testcase new file mode 100644 index 0000000..6d7eb61 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb5.testcase @@ -0,0 +1,9 @@ +BdMPolyFromWKB - null, SRID +:memory: #use in-memory database +SELECT BdMPolyFromWKB(null, 4326); +1 # rows (not including the header row) +1 # columns +BdMPolyFromWKB(null, 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb6.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb6.testcase new file mode 100644 index 0000000..2a35b04 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb6.testcase @@ -0,0 +1,9 @@ +BdMPolyFromWKB - null, no SRID +:memory: #use in-memory database +SELECT BdMPolyFromWKB(null); +1 # rows (not including the header row) +1 # columns +BdMPolyFromWKB(null) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb7.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb7.testcase new file mode 100644 index 0000000..9be741d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb7.testcase @@ -0,0 +1,9 @@ +BdMPolyFromWKB - zeroblob(58), no SRID +:memory: #use in-memory database +SELECT BdMPolyFromWKB(zeroblob(58)); +1 # rows (not including the header row) +1 # columns +BdMPolyFromWKB(zeroblob(58)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb8.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb8.testcase new file mode 100644 index 0000000..0ecbb6e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb8.testcase @@ -0,0 +1,9 @@ +BdMPolyFromWKB - zeroblob(58), SRID +:memory: #use in-memory database +SELECT BdMPolyFromWKB(zeroblob(58), 4); +1 # rows (not including the header row) +1 # columns +BdMPolyFromWKB(zeroblob(58), 4) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb9.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb9.testcase new file mode 100644 index 0000000..a406363 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdmpolyfromwkb9.testcase @@ -0,0 +1,9 @@ +BdMPolyFromWKB - point, SRID +:memory: #use in-memory database +SELECT BdMPolyFromWKB("Point(1 2)", 4); +1 # rows (not including the header row) +1 # columns +BdMPolyFromWKB("Point(1 2)", 4) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext1.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext1.testcase new file mode 100644 index 0000000..a80e364 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext1.testcase @@ -0,0 +1,9 @@ +BdPolyFromText +:memory: #use in-memory database +SELECT AsText(BdPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')); +1 # rows (not including the header row) +1 # columns +AsText(BdPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')) +POLYGON((0 0, 0 1, 1 1, 1 0, 0 0)) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext10.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext10.testcase new file mode 100644 index 0000000..bb0fd47 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext10.testcase @@ -0,0 +1,9 @@ +BdPolyFromText - point, no SRID +:memory: #use in-memory database +SELECT BdPolyFromText("Point(1 2)"); +1 # rows (not including the header row) +1 # columns +BdPolyFromText("Point(1 2)") +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext11.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext11.testcase new file mode 100644 index 0000000..a339831 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext11.testcase @@ -0,0 +1,9 @@ +BdPolyFromText - toxic, no SRID +:memory: #use in-memory database +SELECT BdPolyFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"); +1 # rows (not including the header row) +1 # columns +BdPolyFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))") +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext12.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext12.testcase new file mode 100644 index 0000000..628695e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext12.testcase @@ -0,0 +1,9 @@ +BdPolyFromText - toxic, SRID +:memory: #use in-memory database +SELECT BdPolyFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326); +1 # rows (not including the header row) +1 # columns +BdPolyFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext13.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext13.testcase new file mode 100644 index 0000000..cb270f8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext13.testcase @@ -0,0 +1,9 @@ +BdPolyFromText - text SRID +:memory: #use in-memory database +SELECT BdPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int"); +1 # rows (not including the header row) +1 # columns +BdPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int") +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext14.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext14.testcase new file mode 100644 index 0000000..199d172 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext14.testcase @@ -0,0 +1,9 @@ +BdPolyFromText - point, SRID +:memory: #use in-memory database +SELECT BdPolyFromText("Point(1,2)", 4326); +1 # rows (not including the header row) +1 # columns +BdPolyFromText("Point(1,2)", 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext15.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext15.testcase new file mode 100644 index 0000000..bee36df --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext15.testcase @@ -0,0 +1,9 @@ +BdPolyFromText +:memory: #use in-memory database +SELECT AsText(BdPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')); +1 # rows (not including the header row) +1 # columns +AsText(BdPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')) +POLYGON((0 0, 0 10, 10 10, 10 0, 0 0), (2 2, 8 2, 8 8, 2 8, 2 2)) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext16.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext16.testcase new file mode 100644 index 0000000..db7c48a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext16.testcase @@ -0,0 +1,8 @@ +BdPolyFromText +:memory: #use in-memory database +SELECT AsEwkt(BdPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))', 4326)); +1 # rows (not including the header row) +1 # columns +AsEwkt(BdPolyFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))', 4326)) +SRID=4326;POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2)) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext2.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext2.testcase new file mode 100644 index 0000000..bcfe428 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext2.testcase @@ -0,0 +1,9 @@ +BdPolyFromText - SRID +:memory: #use in-memory database +SELECT AsEWkt(BdPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', 4326)); +1 # rows (not including the header row) +1 # columns +AsEWkt(BdPolyFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', 4326)) +SRID=4326;POLYGON((0 0,0 1,1 1,1 0,0 0)) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext3.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext3.testcase new file mode 100644 index 0000000..2b6242f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext3.testcase @@ -0,0 +1,9 @@ +BdPolyFromText - non-text, no SRID +:memory: #use in-memory database +SELECT BdPolyFromText(26); +1 # rows (not including the header row) +1 # columns +BdPolyFromText(26) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext4.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext4.testcase new file mode 100644 index 0000000..454bf9f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext4.testcase @@ -0,0 +1,9 @@ +BdPolyFromText - non-text, SRID +:memory: #use in-memory database +SELECT BdPolyFromText(26, 4326); +1 # rows (not including the header row) +1 # columns +BdPolyFromText(26, 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext5.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext5.testcase new file mode 100644 index 0000000..8dfd95b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext5.testcase @@ -0,0 +1,9 @@ +BdPolyFromText - null, SRID +:memory: #use in-memory database +SELECT BdPolyFromText(null, 4326); +1 # rows (not including the header row) +1 # columns +BdPolyFromText(null, 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext6.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext6.testcase new file mode 100644 index 0000000..dba5588 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext6.testcase @@ -0,0 +1,9 @@ +BdPolyFromText - null, no SRID +:memory: #use in-memory database +SELECT BdPolyFromText(null); +1 # rows (not including the header row) +1 # columns +BdPolyFromText(null) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext7.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext7.testcase new file mode 100644 index 0000000..08fe5b2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext7.testcase @@ -0,0 +1,9 @@ +BdPolyFromText - zeroblob(58), no SRID +:memory: #use in-memory database +SELECT BdPolyFromText(zeroblob(58)); +1 # rows (not including the header row) +1 # columns +BdPolyFromText(zeroblob(58)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext8.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext8.testcase new file mode 100644 index 0000000..a79c5c3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext8.testcase @@ -0,0 +1,9 @@ +BdPolyFromText - zeroblob(58), SRID +:memory: #use in-memory database +SELECT BdPolyFromText(zeroblob(58), 4); +1 # rows (not including the header row) +1 # columns +BdPolyFromText(zeroblob(58), 4) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext9.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext9.testcase new file mode 100644 index 0000000..5bdfa25 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromtext9.testcase @@ -0,0 +1,9 @@ +BdPolyFromText - point, SRID +:memory: #use in-memory database +SELECT BdPolyFromText("Point(1 2)", 4); +1 # rows (not including the header row) +1 # columns +BdPolyFromText("Point(1 2)", 4) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb1.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb1.testcase new file mode 100644 index 0000000..b3ab196 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb1.testcase @@ -0,0 +1,9 @@ +BdPolyFromWKB +:memory: #use in-memory database +SELECT AsText(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')))); +1 # rows (not including the header row) +1 # columns +AsText(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')))) +POLYGON((0 0, 0 1, 1 1, 1 0, 0 0)) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb10.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb10.testcase new file mode 100644 index 0000000..02299e2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb10.testcase @@ -0,0 +1,9 @@ +BdPolyFromWKB - point, no SRID +:memory: #use in-memory database +SELECT BdPolyFromWKB(AsBinary(GeomFromText("Point(1 2)"))); +1 # rows (not including the header row) +1 # columns +BdPolyFromWKB(AsBinary(GeomFromText("Point(1 2)"))) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb11.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb11.testcase new file mode 100644 index 0000000..d8ecf07 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb11.testcase @@ -0,0 +1,9 @@ +BdPolyFromWKB - toxic, no SRID +:memory: #use in-memory database +SELECT BdPolyFromWKB(AsBinary(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))); +1 # rows (not including the header row) +1 # columns +BdPolyFromWKB(AsBinary(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb12.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb12.testcase new file mode 100644 index 0000000..e88be46 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb12.testcase @@ -0,0 +1,9 @@ +BdPolyFromWKB - toxic, SRID +:memory: #use in-memory database +SELECT BdPolyFromWKB(AsBinary(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326))); +1 # rows (not including the header row) +1 # columns +BdPolyFromWKB(AsBinary(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326))) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb13.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb13.testcase new file mode 100644 index 0000000..2b23c18 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb13.testcase @@ -0,0 +1,9 @@ +BdPolyFromWKB - text SRID +:memory: #use in-memory database +SELECT BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int"))); +1 # rows (not including the header row) +1 # columns +BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))', "not an int"))) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb14.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb14.testcase new file mode 100644 index 0000000..5146862 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb14.testcase @@ -0,0 +1,9 @@ +BdPolyFromWKB - point, SRID +:memory: #use in-memory database +SELECT BdPolyFromWKB(AsBinary(GeomFromText("Point(1,2)")), 4326); +1 # rows (not including the header row) +1 # columns +BdPolyFromWKB(AsBinary(GeomFromText("Point(1,2)")), 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb15.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb15.testcase new file mode 100644 index 0000000..5cbd9e4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb15.testcase @@ -0,0 +1,9 @@ +BdPolyFromWKB +:memory: #use in-memory database +SELECT AsText(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')))); +1 # rows (not including the header row) +1 # columns +AsText(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')))) +POLYGON((0 0, 0 10, 10 10, 10 0, 0 0), (2 2, 8 2, 8 8, 2 8, 2 2)) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb16.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb16.testcase new file mode 100644 index 0000000..3a2de2b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb16.testcase @@ -0,0 +1,8 @@ +BdPolyFromWKB +:memory: #use in-memory database +SELECT AsEwkt(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')), 4326)); +1 # rows (not including the header row) +1 # columns +AsEwkt(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 2 8, 8 8, 8 2, 2 2))')), 4326)) +SRID=4326;POLYGON((0 0,0 10,10 10,10 0,0 0),(2 2,8 2,8 8,2 8,2 2)) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb17.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb17.testcase new file mode 100644 index 0000000..697f59a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb17.testcase @@ -0,0 +1,8 @@ +BdPolyFromWKB - zeroblob +:memory: #use in-memory database +SELECT BdPolyFromWKB(zeroblob(25)); +1 # rows (not including the header row) +1 # columns +BdPolyFromWKB(zeroblob(25)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb18.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb18.testcase new file mode 100644 index 0000000..48962dd --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb18.testcase @@ -0,0 +1,8 @@ +BdPolyFromWKB - zeroblob, invalid SRID +:memory: #use in-memory database +SELECT BdPolyFromWKB(zeroblob(25), 'a'); +1 # rows (not including the header row) +1 # columns +BdPolyFromWKB(zeroblob(25), 'a') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb19.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb19.testcase new file mode 100644 index 0000000..b700d3b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb19.testcase @@ -0,0 +1,8 @@ +BdPolyFromWKB - zeroblob, SRID +:memory: #use in-memory database +SELECT BdPolyFromWKB(zeroblob(25), 4326); +1 # rows (not including the header row) +1 # columns +BdPolyFromWKB(zeroblob(25), 4326) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb2.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb2.testcase new file mode 100644 index 0000000..5713210 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb2.testcase @@ -0,0 +1,9 @@ +BdPolyFromWKB - SRID +:memory: #use in-memory database +SELECT AsEWkt(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')), 4326)); +1 # rows (not including the header row) +1 # columns +AsEWkt(BdPolyFromWKB(AsBinary(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))')), 4326)) +SRID=4326;POLYGON((0 0,0 1,1 1,1 0,0 0)) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb3.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb3.testcase new file mode 100644 index 0000000..a6a6683 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb3.testcase @@ -0,0 +1,9 @@ +BdPolyFromWKB - non-text, no SRID +:memory: #use in-memory database +SELECT BdPolyFromWKB(26); +1 # rows (not including the header row) +1 # columns +BdPolyFromWKB(26) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb4.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb4.testcase new file mode 100644 index 0000000..b507e4b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb4.testcase @@ -0,0 +1,9 @@ +BdPolyFromWKB - non-text, SRID +:memory: #use in-memory database +SELECT BdPolyFromWKB(26, 4326); +1 # rows (not including the header row) +1 # columns +BdPolyFromWKB(26, 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb5.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb5.testcase new file mode 100644 index 0000000..d913c47 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb5.testcase @@ -0,0 +1,9 @@ +BdPolyFromWKB - null, SRID +:memory: #use in-memory database +SELECT BdPolyFromWKB(null, 4326); +1 # rows (not including the header row) +1 # columns +BdPolyFromWKB(null, 4326) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb6.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb6.testcase new file mode 100644 index 0000000..c9cde9c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb6.testcase @@ -0,0 +1,9 @@ +BdPolyFromWKB - null, no SRID +:memory: #use in-memory database +SELECT BdPolyFromWKB(null); +1 # rows (not including the header row) +1 # columns +BdPolyFromWKB(null) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb7.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb7.testcase new file mode 100644 index 0000000..1269110 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb7.testcase @@ -0,0 +1,9 @@ +BdPolyFromWKB - zeroblob(58), no SRID +:memory: #use in-memory database +SELECT BdPolyFromWKB(zeroblob(58)); +1 # rows (not including the header row) +1 # columns +BdPolyFromWKB(zeroblob(58)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb8.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb8.testcase new file mode 100644 index 0000000..b943ee0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb8.testcase @@ -0,0 +1,9 @@ +BdPolyFromWKB - zeroblob(58), SRID +:memory: #use in-memory database +SELECT BdPolyFromWKB(zeroblob(58), 4); +1 # rows (not including the header row) +1 # columns +BdPolyFromWKB(zeroblob(58), 4) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb9.testcase b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb9.testcase new file mode 100644 index 0000000..fe99f06 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/bdpolyfromwkb9.testcase @@ -0,0 +1,9 @@ +BdPolyFromWKB - point, SRID +:memory: #use in-memory database +SELECT BdPolyFromWKB("Point(1 2)", 4); +1 # rows (not including the header row) +1 # columns +BdPolyFromWKB("Point(1 2)", 4) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary1.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary1.testcase new file mode 100644 index 0000000..ab329fe --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/boundary1.testcase @@ -0,0 +1,7 @@ +Boundary - Point +:memory: #use in-memory database +SELECT AsText(Boundary(GeomFromText("POINT(1 2)"))) +1 # rows (not including the header row) +1 # columns +AsText(Boundary(GeomFromText("POINT(1 2)"))) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary2.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary2.testcase new file mode 100644 index 0000000..c20806d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/boundary2.testcase @@ -0,0 +1,7 @@ +Boundary - non-blob +:memory: #use in-memory database +SELECT Boundary("hello") +1 # rows (not including the header row) +1 # columns +Boundary("hello") +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary3.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary3.testcase new file mode 100644 index 0000000..803be32 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/boundary3.testcase @@ -0,0 +1,7 @@ +Boundary - bad blob +:memory: #use in-memory database +SELECT Boundary(zeroblob(100)) +1 # rows (not including the header row) +1 # columns +Boundary(zeroblob(100)) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary4.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary4.testcase new file mode 100644 index 0000000..6019c9d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/boundary4.testcase @@ -0,0 +1,7 @@ +Boundary - open linestring +:memory: #use in-memory database +SELECT AsText(Boundary(GeomFromText("LINESTRING(1 2, 4 -3, 0 -1)"))) +1 # rows (not including the header row) +1 # columns +AsText(Boundary(GeomFromText("LINESTRING(1 2, 4 -3, 0 -1)"))) +MULTIPOINT(1 2, 0 -1) diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary5.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary5.testcase new file mode 100644 index 0000000..a4685f6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/boundary5.testcase @@ -0,0 +1,7 @@ +Boundary - closed linestring +:memory: #use in-memory database +SELECT AsText(Boundary(GeomFromText("LINESTRING(1 2, 4 -3, 0 -1, 1 2)"))) +1 # rows (not including the header row) +1 # columns +AsText(Boundary(GeomFromText("LINESTRING(1 2, 4 -3, 0 -1, 1 2)"))) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary6.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary6.testcase new file mode 100644 index 0000000..e487807 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/boundary6.testcase @@ -0,0 +1,7 @@ +Boundary - open linestringZ +:memory: #use in-memory database +SELECT AsText(Boundary(GeomFromText("LINESTRINGZ(1 2 3, 4 -3 6, 2 -1 -4)"))) +1 # rows (not including the header row) +1 # columns +AsText(Boundary(GeomFromText("LINESTRINGZ(1 2 3, 4 -3 6, 2 -1 -4)"))) +MULTIPOINT Z(1 2 3, 2 -1 -4) diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary7.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary7.testcase new file mode 100644 index 0000000..55a1f9c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/boundary7.testcase @@ -0,0 +1,7 @@ +Boundary - open linestringZM +:memory: #use in-memory database +SELECT AsText(Boundary(GeomFromText("LINESTRINGZM(1 2 3 5, 4 -3 6 -3, 2 -1 -4 8)"))) +1 # rows (not including the header row) +1 # columns +AsText(Boundary(GeomFromText("LINESTRINGZM(1 2 3 5, 4 -3 6 -3, 2 -1 -4 8)"))) +MULTIPOINT ZM(1 2 3 0, 2 -1 -4 0) diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary8.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary8.testcase new file mode 100644 index 0000000..eb1aee1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/boundary8.testcase @@ -0,0 +1,7 @@ +Boundary - open linestringM +:memory: #use in-memory database +SELECT AsText(Boundary(GeomFromText("LINESTRINGM(1 2 3, 4 -3 6, 2 -1 -4)"))) +1 # rows (not including the header row) +1 # columns +AsText(Boundary(GeomFromText("LINESTRINGM(1 2 3, 4 -3 6, 2 -1 -4)"))) +MULTIPOINT M(1 2 0, 2 -1 0) diff --git a/src/spatialite/test/sql_stmt_geos_tests/boundary9.testcase b/src/spatialite/test/sql_stmt_geos_tests/boundary9.testcase new file mode 100644 index 0000000..db78852 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/boundary9.testcase @@ -0,0 +1,7 @@ +boundary - toxic polygon +:memory: #use in-memory database +SELECT AsText(Boundary(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) +1 # rows (not including the header row) +1 # columns +AsText(Boundary(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) +LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5, 136 -35) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer1.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer1.testcase new file mode 100644 index 0000000..5d2e95b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buffer1.testcase @@ -0,0 +1,8 @@ +buffer1 +:memory: #use in-memory database +SELECT AsText(Buffer(GeomFromText("LINESTRING(0 0, 1 0)"), 0.2)); +1 # rows (not including the header row) +1 # columns +AsText(Buffer(GeomFromText("LINESTRING(0 0, 1 0)"), 0.2)) +POLYGON((1 0.2, 1.010467 0.199726, 1.020906 0.198904, 1.031287 0.197538, 1.041582 0.19563, 1.051764 0.193185, 1.061803 0.190211, 1.071674 0.186716, 1.081347 0.182709, 1.090798 0.178201, 1.1 0.173205, 1.108928 0.167734, 1.117557 0.161803, 1.125864 0.155429, 1.133826 0.148629, 1.141421 0.141421, 1.148629 0.133826, 1.155429 0.125864, 1.161803 0.117557, 1.167734 0.108928, 1.173205 0.1, 1.178201 0.090798, 1.182709 0.081347, 1.186716 0.071674, 1.190211 0.061803, 1.193185 0.051764, 1.19563 0.041582, 1.197538 0.031287, 1.198904 0.020906, 1.199726 0.010467, 1.2 0, 1.199726 -0.010467, 1.198904 -0.020906, 1.197538 -0.031287, 1.19563 -0.041582, 1.193185 -0.051764, 1.190211 -0.061803, 1.186716 -0.071674, 1.182709 -0.081347, 1.178201 -0.090798, 1.173205 -0.1, 1.167734 -0.108928, 1.161803 -0.117557, 1.155429 -0.125864, 1.148629 -0.133826, 1.141421 -0.141421, 1.133826 -0.148629, 1.125864 -0.155429, 1.117557 -0.161803, 1.108928 -0.167734, 1.1 -0.173205, 1.090798 -0.178201, 1.081347 -0.182709, 1.071674 -0.186716, 1.061803 -0.190211, 1.051764 -0.193185, 1.041582 -0.19563, 1.031287 -0.197538, 1.020906 -0.198904, 1.010467 -0.199726, 1 -0.2, 0 -0.2, -0.010467 -0.199726, -0.020906 -0.198904, -0.031287 -0.197538, -0.041582 -0.19563, -0.051764 -0.193185, -0.061803 -0.190211, -0.071674 -0.186716, -0.081347 -0.182709, -0.090798 -0.178201, -0.1 -0.173205, -0.108928 -0.167734, -0.117557 -0.161803, -0.125864 -0.155429, -0.133826 -0.148629, -0.141421 -0.141421, -0.148629 -0.133826, -0.155429 -0.125864, -0.161803 -0.117557, -0.167734 -0.108928, -0.173205 -0.1, -0.178201 -0.090798, -0.182709 -0.081347, -0.186716 -0.071674, -0.190211 -0.061803, -0.193185 -0.051764, -0.19563 -0.041582, -0.197538 -0.031287, -0.198904 -0.020906, -0.199726 -0.010467, -0.2 0, -0.199726 0.010467, -0.198904 0.020906, -0.197538 0.031287, -0.19563 0.041582, -0.193185 0.051764, -0.190211 0.061803, -0.186716 0.071674, -0.182709 0.081347, -0.178201 0.090798, -0.173205 0.1, -0.167734 0.108928, -0.161803 0.117557, -0.155429 0.125864, -0.148629 0.133826, -0.141421 0.141421, -0.133826 0.148629, -0.125864 0.155429, -0.117557 0.161803, -0.108928 0.167734, -0.1 0.173205, -0.090798 0.178201, -0.081347 0.182709, -0.071674 0.186716, -0.061803 0.190211, -0.051764 0.193185, -0.041582 0.19563, -0.031287 0.197538, -0.020906 0.198904, -0.010467 0.199726, 0 0.2, 1 0.2)) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer10.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer10.testcase new file mode 100644 index 0000000..a8ce4df --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buffer10.testcase @@ -0,0 +1,7 @@ +buffer - linestringzm +:memory: #use in-memory database +SELECT AsText(Buffer(GeomFromText("LINESTRINGZM(1 2 1 4, 4 6 3 4)"), 1)) +1 # rows (not including the header row) +1 # columns +AsText(Buffer(GeomFromText("LINESTRINGZM(1 2 1 4, 4 6 3 4)"), 1)) +POLYGON ZM((3.2 6.6 0 0, 3.232498 6.641046 0 0, 3.2671 6.680336 0 0, 3.30371 6.717761 0 0, 3.342229 6.753218 0 0, 3.382551 6.786611 0 0, 3.424565 6.817848 0 0, 3.468156 6.846843 0 0, 3.513206 6.873517 0 0, 3.559589 6.897796 0 0, 3.60718 6.919615 0 0, 3.655847 6.938914 0 0, 3.705458 6.955638 0 0, 3.755875 6.969744 0 0, 3.806963 6.981191 0 0, 3.858579 6.989949 0 0, 3.910582 6.995994 0 0, 3.962831 6.999309 0 0, 4.015182 6.999885 0 0, 4.067491 6.99772 0 0, 4.119615 6.99282 0 0, 4.171412 6.9852 0 0, 4.222738 6.974878 0 0, 4.273454 6.961885 0 0, 4.32342 6.946255 0 0, 4.3725 6.928032 0 0, 4.420559 6.907265 0 0, 4.467465 6.884011 0 0, 4.51309 6.858335 0 0, 4.557309 6.830305 0 0, 4.6 6.8 0 0, 4.641046 6.767502 0 0, 4.680336 6.7329 0 0, 4.717761 6.69629 0 0, 4.753218 6.657771 0 0, 4.786611 6.617449 0 0, 4.817848 6.575435 0 0, 4.846843 6.531844 0 0, 4.873517 6.486794 0 0, 4.897796 6.440411 0 0, 4.919615 6.39282 0 0, 4.938914 6.344153 0 0, 4.955638 6.294542 0 0, 4.969744 6.244125 0 0, 4.981191 6.193037 0 0, 4.989949 6.141421 0 0, 4.995994 6.089418 0 0, 4.999309 6.037169 0 0, 4.999885 5.984818 0 0, 4.99772 5.932509 0 0, 4.99282 5.880385 0 0, 4.9852 5.828588 0 0, 4.974878 5.777262 0 0, 4.961885 5.726546 0 0, 4.946255 5.67658 0 0, 4.928032 5.6275 0 0, 4.907265 5.579441 0 0, 4.884011 5.532535 0 0, 4.858335 5.48691 0 0, 4.830305 5.442691 0 0, 4.8 5.4 0 0, 1.8 1.4 0 0, 1.767502 1.358954 0 0, 1.7329 1.319664 0 0, 1.69629 1.282239 0 0, 1.657771 1.246782 0 0, 1.617449 1.213389 0 0, 1.575435 1.182152 0 0, 1.531844 1.153157 0 0, 1.486794 1.126483 0 0, 1.440411 1.102204 0 0, 1.39282 1.080385 0 0, 1.344153 1.061086 0 0, 1.294542 1.044362 0 0, 1.244125 1.030256 0 0, 1.193037 1.018809 0 0, 1.141421 1.010051 0 0, 1.089418 1.004006 0 0, 1.037169 1.000691 0 0, 0.984818 1.000115 0 0, 0.932509 1.00228 0 0, 0.880385 1.00718 0 0, 0.828588 1.0148 0 0, 0.777262 1.025122 0 0, 0.726546 1.038115 0 0, 0.67658 1.053745 0 0, 0.6275 1.071968 0 0, 0.579441 1.092735 0 0, 0.532535 1.115989 0 0, 0.48691 1.141665 0 0, 0.442691 1.169695 0 0, 0.4 1.2 0 0, 0.358954 1.232498 0 0, 0.319664 1.2671 0 0, 0.282239 1.30371 0 0, 0.246782 1.342229 0 0, 0.213389 1.382551 0 0, 0.182152 1.424565 0 0, 0.153157 1.468156 0 0, 0.126483 1.513206 0 0, 0.102204 1.559589 0 0, 0.080385 1.60718 0 0, 0.061086 1.655847 0 0, 0.044362 1.705458 0 0, 0.030256 1.755875 0 0, 0.018809 1.806963 0 0, 0.010051 1.858579 0 0, 0.004006 1.910582 0 0, 0.000691 1.962831 0 0, 0.000115 2.015182 0 0, 0.00228 2.067491 0 0, 0.00718 2.119615 0 0, 0.0148 2.171412 0 0, 0.025122 2.222738 0 0, 0.038115 2.273454 0 0, 0.053745 2.32342 0 0, 0.071968 2.3725 0 0, 0.092735 2.420559 0 0, 0.115989 2.467465 0 0, 0.141665 2.51309 0 0, 0.169695 2.557309 0 0, 0.2 2.6 0 0, 3.2 6.6 0 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer2.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer2.testcase new file mode 100644 index 0000000..59680f6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buffer2.testcase @@ -0,0 +1,8 @@ +buffer2 +:memory: #use in-memory database +SELECT AsText(Buffer(GeomFromText("LINESTRING(0 0, 100 0)"), 1)); +1 # rows (not including the header row) +1 # columns +AsText(Buffer(GeomFromText("LINESTRING(0 0, 100 0)"), 1)) +POLYGON((100 1, 100.052336 0.99863, 100.104528 0.994522, 100.156434 0.987688, 100.207912 0.978148, 100.258819 0.965926, 100.309017 0.951057, 100.358368 0.93358, 100.406737 0.913545, 100.45399 0.891007, 100.5 0.866025, 100.544639 0.838671, 100.587785 0.809017, 100.62932 0.777146, 100.669131 0.743145, 100.707107 0.707107, 100.743145 0.669131, 100.777146 0.62932, 100.809017 0.587785, 100.838671 0.544639, 100.866025 0.5, 100.891007 0.45399, 100.913545 0.406737, 100.93358 0.358368, 100.951057 0.309017, 100.965926 0.258819, 100.978148 0.207912, 100.987688 0.156434, 100.994522 0.104528, 100.99863 0.052336, 101 0, 100.99863 -0.052336, 100.994522 -0.104528, 100.987688 -0.156434, 100.978148 -0.207912, 100.965926 -0.258819, 100.951057 -0.309017, 100.93358 -0.358368, 100.913545 -0.406737, 100.891007 -0.45399, 100.866025 -0.5, 100.838671 -0.544639, 100.809017 -0.587785, 100.777146 -0.62932, 100.743145 -0.669131, 100.707107 -0.707107, 100.669131 -0.743145, 100.62932 -0.777146, 100.587785 -0.809017, 100.544639 -0.838671, 100.5 -0.866025, 100.45399 -0.891007, 100.406737 -0.913545, 100.358368 -0.93358, 100.309017 -0.951057, 100.258819 -0.965926, 100.207912 -0.978148, 100.156434 -0.987688, 100.104528 -0.994522, 100.052336 -0.99863, 100 -1, 0 -1, -0.052336 -0.99863, -0.104528 -0.994522, -0.156434 -0.987688, -0.207912 -0.978148, -0.258819 -0.965926, -0.309017 -0.951057, -0.358368 -0.93358, -0.406737 -0.913545, -0.45399 -0.891007, -0.5 -0.866025, -0.544639 -0.838671, -0.587785 -0.809017, -0.62932 -0.777146, -0.669131 -0.743145, -0.707107 -0.707107, -0.743145 -0.669131, -0.777146 -0.62932, -0.809017 -0.587785, -0.838671 -0.544639, -0.866025 -0.5, -0.891007 -0.45399, -0.913545 -0.406737, -0.93358 -0.358368, -0.951057 -0.309017, -0.965926 -0.258819, -0.978148 -0.207912, -0.987688 -0.156434, -0.994522 -0.104528, -0.99863 -0.052336, -1 0, -0.99863 0.052336, -0.994522 0.104528, -0.987688 0.156434, -0.978148 0.207912, -0.965926 0.258819, -0.951057 0.309017, -0.93358 0.358368, -0.913545 0.406737, -0.891007 0.45399, -0.866025 0.5, -0.838671 0.544639, -0.809017 0.587785, -0.777146 0.62932, -0.743145 0.669131, -0.707107 0.707107, -0.669131 0.743145, -0.62932 0.777146, -0.587785 0.809017, -0.544639 0.838671, -0.5 0.866025, -0.45399 0.891007, -0.406737 0.913545, -0.358368 0.93358, -0.309017 0.951057, -0.258819 0.965926, -0.207912 0.978148, -0.156434 0.987688, -0.104528 0.994522, -0.052336 0.99863, 0 1, 100 1)) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer3.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer3.testcase new file mode 100644 index 0000000..110281f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buffer3.testcase @@ -0,0 +1,7 @@ +buffer3 +:memory: #use in-memory database +SELECT Buffer("foo", 1); +1 # rows (not including the header row) +1 # columns +Buffer("foo", 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer4.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer4.testcase new file mode 100644 index 0000000..92abc64 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buffer4.testcase @@ -0,0 +1,7 @@ +buffer4 +:memory: #use in-memory database +SELECT Buffer(GeomFromText("LINESTRING(0 0, 100 0)"), "foo"); +1 # rows (not including the header row) +1 # columns +Buffer(GeomFromText("LINESTRING(0 0, 100 0)"), "foo") +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer5.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer5.testcase new file mode 100644 index 0000000..c5029e2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buffer5.testcase @@ -0,0 +1,7 @@ +buffer5 +:memory: #use in-memory database +SELECT Buffer(zeroblob(40), 1); +1 # rows (not including the header row) +1 # columns +Buffer(zeroblob(40), 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer6.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer6.testcase new file mode 100644 index 0000000..01ab4b6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buffer6.testcase @@ -0,0 +1,7 @@ +buffer6 +:memory: #use in-memory database +SELECT Buffer(GeomFromText("LINESTRING()"), 1); +1 # rows (not including the header row) +1 # columns +Buffer(GeomFromText("LINESTRING()"), 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer7.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer7.testcase new file mode 100644 index 0000000..1522616 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buffer7.testcase @@ -0,0 +1,7 @@ +buffer7 +:memory: #use in-memory database +SELECT AsText(ST_ForceLHR(Buffer(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 1))); +1 # rows (not including the header row) +1 # columns +AsText(ST_ForceLHR(Buffer(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 1))) +POLYGON((136.529999 -34.152002, 136.529999 -34.152002, 136.574402 -34.181426, 136.617174 -34.213174, 136.658196 -34.247153, 136.69735 -34.283269, 136.734525 -34.321419, 136.769617 -34.361494, 136.802524 -34.40338, 136.833155 -34.44696, 136.861421 -34.492109, 136.887243 -34.538698, 136.910548 -34.586597, 136.931269 -34.635669, 136.949348 -34.685774, 136.964733 -34.736771, 136.977381 -34.788515, 136.987256 -34.840859, 136.994329 -34.893654, 136.998581 -34.946752, 137 -35, 137 -35.2, 136.998646 -35.252013, 136.994589 -35.303886, 136.987839 -35.355478, 136.978415 -35.406648, 136.966342 -35.457259, 136.951653 -35.507174, 136.934388 -35.556257, 136.914593 -35.604375, 136.892322 -35.651399, 136.867635 -35.697201, 136.8406 -35.741657, 136.811289 -35.784646, 136.779781 -35.826052, 136.746162 -35.865764, 136.710524 -35.903673, 136.672961 -35.939678, 136.633577 -35.97368, 136.592478 -36.005587, 136.549774 -36.035313, 136.505583 -36.062778, 136.460022 -36.087907, 136.413216 -36.110633, 136.365292 -36.130893, 136.316378 -36.148633, 136.266608 -36.163805, 136.216117 -36.176368, 136.16504 -36.186287, 136.113516 -36.193536, 136.061685 -36.198096, 136.009687 -36.199953, 135.957663 -36.199103, 135.905754 -36.195549, 135.854099 -36.189299, 135.80284 -36.180371, 135.752114 -36.168789, 135.70206 -36.154584, 135.652812 -36.137795, 135.604504 -36.118468, 135.557266 -36.096653, 135.511228 -36.072411, 135.466512 -36.045808, 135.423241 -36.016914, 135.381531 -35.985809, 135.341495 -35.952577, 134.541495 -35.252577, 134.503051 -35.21712, 134.466512 -35.179703, 134.43198 -35.140426, 134.399548 -35.099397, 134.369306 -35.056729, 134.341336 -35.012539, 134.315714 -34.966946, 134.292511 -34.920076, 134.27179 -34.872058, 134.253608 -34.823021, 134.238015 -34.773102, 134.225052 -34.722435, 134.214757 -34.67116, 134.207156 -34.619416, 134.20227 -34.567346, 134.200114 -34.515092, 134.200692 -34.462797, 134.204004 -34.410603, 134.21004 -34.358654, 134.218783 -34.307091, 134.230211 -34.256056, 134.24429 -34.205689, 134.260984 -34.156126, 134.280246 -34.107504, 134.302024 -34.059955, 134.326258 -34.01361, 134.352882 -33.968595, 134.381823 -33.925034, 134.413001 -33.883046, 134.446332 -33.842744, 134.481725 -33.804241, 134.519082 -33.76764, 134.558301 -33.733043, 134.599276 -33.700543, 134.641894 -33.670231, 134.686038 -33.642187, 134.731588 -33.61649, 134.778419 -33.593209, 134.826403 -33.572409, 134.875409 -33.554145, 134.925303 -33.538469, 134.975949 -33.525423, 135.027207 -33.515042, 135.078937 -33.507355, 135.130999 -33.502383, 135.18325 -33.50014, 135.235546 -33.500632, 135.287745 -33.503857, 135.339704 -33.509807, 135.391281 -33.518465, 135.442335 -33.529807, 135.492726 -33.543804, 135.542316 -33.560415, 135.59097 -33.579597, 135.638555 -33.601296, 135.68494 -33.625453, 135.729999 -33.652002, 136.529999 -34.152002, 136.529999 -34.152002), (135.132863 -35.497419, 135.165007 -35.499388, 135.217358 -35.499849, 135.269663 -35.497571, 135.321776 -35.492558, 135.373556 -35.484824, 135.42486 -35.474391, 135.475547 -35.461288, 135.525479 -35.445549, 135.574519 -35.427219, 135.622533 -35.406347, 135.669389 -35.382992, 135.714958 -35.357216, 135.759115 -35.32909, 135.80174 -35.298692, 135.842716 -35.266105, 135.88193 -35.231418, 135.919275 -35.194726, 135.954648 -35.15613, 135.987953 -35.115736, 136.019098 -35.073653, 136.047998 -35.029999, 136.074574 -34.984892, 136.098753 -34.938456, 136.120468 -34.890818, 136.13966 -34.842108, 136.156277 -34.792462, 136.170273 -34.742013, 136.181609 -34.690901, 136.190255 -34.639266, 136.196187 -34.587249, 136.199388 -34.534993, 136.199849 -34.482642, 136.197571 -34.430337, 136.192558 -34.378224, 136.184824 -34.326444, 136.174391 -34.27514, 136.161288 -34.224453, 136.145549 -34.174521, 136.127219 -34.125481, 136.106347 -34.077467, 136.082992 -34.030611, 136.067137 -34.002581, 136.034993 -34.000612, 135.982642 -34.000151, 135.930337 -34.002429, 135.878224 -34.007442, 135.826444 -34.015176, 135.77514 -34.025609, 135.724453 -34.038712, 135.674521 -34.054451, 135.625481 -34.072781, 135.577467 -34.093653, 135.530611 -34.117008, 135.485042 -34.142784, 135.440885 -34.17091, 135.39826 -34.201308, 135.357284 -34.233895, 135.31807 -34.268582, 135.280725 -34.305274, 135.245352 -34.34387, 135.212047 -34.384264, 135.180902 -34.426347, 135.152002 -34.470001, 135.125426 -34.515108, 135.101247 -34.561544, 135.079532 -34.609182, 135.06034 -34.657892, 135.043723 -34.707538, 135.029727 -34.757987, 135.018391 -34.809099, 135.009745 -34.860734, 135.003813 -34.912751, 135.000612 -34.965007, 135.000151 -35.017358, 135.002429 -35.069663, 135.007442 -35.121776, 135.015176 -35.173556, 135.025609 -35.22486, 135.038712 -35.275547, 135.054451 -35.325479, 135.072781 -35.374519, 135.093653 -35.422533, 135.117008 -35.469389, 135.132863 -35.497419)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer8.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer8.testcase new file mode 100644 index 0000000..a525c3c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buffer8.testcase @@ -0,0 +1,7 @@ +buffer - linestringz +:memory: #use in-memory database +SELECT AsText(Buffer(GeomFromText("LINESTRINGZ(1 2 1, 4 6 3)"), 1)) +1 # rows (not including the header row) +1 # columns +AsText(Buffer(GeomFromText("LINESTRINGZ(1 2 1, 4 6 3)"), 1)) +POLYGON Z((3.2 6.6 0, 3.232498 6.641046 0, 3.2671 6.680336 0, 3.30371 6.717761 0, 3.342229 6.753218 0, 3.382551 6.786611 0, 3.424565 6.817848 0, 3.468156 6.846843 0, 3.513206 6.873517 0, 3.559589 6.897796 0, 3.60718 6.919615 0, 3.655847 6.938914 0, 3.705458 6.955638 0, 3.755875 6.969744 0, 3.806963 6.981191 0, 3.858579 6.989949 0, 3.910582 6.995994 0, 3.962831 6.999309 0, 4.015182 6.999885 0, 4.067491 6.99772 0, 4.119615 6.99282 0, 4.171412 6.9852 0, 4.222738 6.974878 0, 4.273454 6.961885 0, 4.32342 6.946255 0, 4.3725 6.928032 0, 4.420559 6.907265 0, 4.467465 6.884011 0, 4.51309 6.858335 0, 4.557309 6.830305 0, 4.6 6.8 0, 4.641046 6.767502 0, 4.680336 6.7329 0, 4.717761 6.69629 0, 4.753218 6.657771 0, 4.786611 6.617449 0, 4.817848 6.575435 0, 4.846843 6.531844 0, 4.873517 6.486794 0, 4.897796 6.440411 0, 4.919615 6.39282 0, 4.938914 6.344153 0, 4.955638 6.294542 0, 4.969744 6.244125 0, 4.981191 6.193037 0, 4.989949 6.141421 0, 4.995994 6.089418 0, 4.999309 6.037169 0, 4.999885 5.984818 0, 4.99772 5.932509 0, 4.99282 5.880385 0, 4.9852 5.828588 0, 4.974878 5.777262 0, 4.961885 5.726546 0, 4.946255 5.67658 0, 4.928032 5.6275 0, 4.907265 5.579441 0, 4.884011 5.532535 0, 4.858335 5.48691 0, 4.830305 5.442691 0, 4.8 5.4 0, 1.8 1.4 0, 1.767502 1.358954 0, 1.7329 1.319664 0, 1.69629 1.282239 0, 1.657771 1.246782 0, 1.617449 1.213389 0, 1.575435 1.182152 0, 1.531844 1.153157 0, 1.486794 1.126483 0, 1.440411 1.102204 0, 1.39282 1.080385 0, 1.344153 1.061086 0, 1.294542 1.044362 0, 1.244125 1.030256 0, 1.193037 1.018809 0, 1.141421 1.010051 0, 1.089418 1.004006 0, 1.037169 1.000691 0, 0.984818 1.000115 0, 0.932509 1.00228 0, 0.880385 1.00718 0, 0.828588 1.0148 0, 0.777262 1.025122 0, 0.726546 1.038115 0, 0.67658 1.053745 0, 0.6275 1.071968 0, 0.579441 1.092735 0, 0.532535 1.115989 0, 0.48691 1.141665 0, 0.442691 1.169695 0, 0.4 1.2 0, 0.358954 1.232498 0, 0.319664 1.2671 0, 0.282239 1.30371 0, 0.246782 1.342229 0, 0.213389 1.382551 0, 0.182152 1.424565 0, 0.153157 1.468156 0, 0.126483 1.513206 0, 0.102204 1.559589 0, 0.080385 1.60718 0, 0.061086 1.655847 0, 0.044362 1.705458 0, 0.030256 1.755875 0, 0.018809 1.806963 0, 0.010051 1.858579 0, 0.004006 1.910582 0, 0.000691 1.962831 0, 0.000115 2.015182 0, 0.00228 2.067491 0, 0.00718 2.119615 0, 0.0148 2.171412 0, 0.025122 2.222738 0, 0.038115 2.273454 0, 0.053745 2.32342 0, 0.071968 2.3725 0, 0.092735 2.420559 0, 0.115989 2.467465 0, 0.141665 2.51309 0, 0.169695 2.557309 0, 0.2 2.6 0, 3.2 6.6 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buffer9.testcase b/src/spatialite/test/sql_stmt_geos_tests/buffer9.testcase new file mode 100644 index 0000000..d3f1eef --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buffer9.testcase @@ -0,0 +1,7 @@ +buffer - linestringm +:memory: #use in-memory database +SELECT AsText(Buffer(GeomFromText("LINESTRINGM(1 2 1, 4 6 3)"), 1)) +1 # rows (not including the header row) +1 # columns +AsText(Buffer(GeomFromText("LINESTRINGM(1 2 1, 4 6 3)"), 1)) +POLYGON M((3.2 6.6 0, 3.232498 6.641046 0, 3.2671 6.680336 0, 3.30371 6.717761 0, 3.342229 6.753218 0, 3.382551 6.786611 0, 3.424565 6.817848 0, 3.468156 6.846843 0, 3.513206 6.873517 0, 3.559589 6.897796 0, 3.60718 6.919615 0, 3.655847 6.938914 0, 3.705458 6.955638 0, 3.755875 6.969744 0, 3.806963 6.981191 0, 3.858579 6.989949 0, 3.910582 6.995994 0, 3.962831 6.999309 0, 4.015182 6.999885 0, 4.067491 6.99772 0, 4.119615 6.99282 0, 4.171412 6.9852 0, 4.222738 6.974878 0, 4.273454 6.961885 0, 4.32342 6.946255 0, 4.3725 6.928032 0, 4.420559 6.907265 0, 4.467465 6.884011 0, 4.51309 6.858335 0, 4.557309 6.830305 0, 4.6 6.8 0, 4.641046 6.767502 0, 4.680336 6.7329 0, 4.717761 6.69629 0, 4.753218 6.657771 0, 4.786611 6.617449 0, 4.817848 6.575435 0, 4.846843 6.531844 0, 4.873517 6.486794 0, 4.897796 6.440411 0, 4.919615 6.39282 0, 4.938914 6.344153 0, 4.955638 6.294542 0, 4.969744 6.244125 0, 4.981191 6.193037 0, 4.989949 6.141421 0, 4.995994 6.089418 0, 4.999309 6.037169 0, 4.999885 5.984818 0, 4.99772 5.932509 0, 4.99282 5.880385 0, 4.9852 5.828588 0, 4.974878 5.777262 0, 4.961885 5.726546 0, 4.946255 5.67658 0, 4.928032 5.6275 0, 4.907265 5.579441 0, 4.884011 5.532535 0, 4.858335 5.48691 0, 4.830305 5.442691 0, 4.8 5.4 0, 1.8 1.4 0, 1.767502 1.358954 0, 1.7329 1.319664 0, 1.69629 1.282239 0, 1.657771 1.246782 0, 1.617449 1.213389 0, 1.575435 1.182152 0, 1.531844 1.153157 0, 1.486794 1.126483 0, 1.440411 1.102204 0, 1.39282 1.080385 0, 1.344153 1.061086 0, 1.294542 1.044362 0, 1.244125 1.030256 0, 1.193037 1.018809 0, 1.141421 1.010051 0, 1.089418 1.004006 0, 1.037169 1.000691 0, 0.984818 1.000115 0, 0.932509 1.00228 0, 0.880385 1.00718 0, 0.828588 1.0148 0, 0.777262 1.025122 0, 0.726546 1.038115 0, 0.67658 1.053745 0, 0.6275 1.071968 0, 0.579441 1.092735 0, 0.532535 1.115989 0, 0.48691 1.141665 0, 0.442691 1.169695 0, 0.4 1.2 0, 0.358954 1.232498 0, 0.319664 1.2671 0, 0.282239 1.30371 0, 0.246782 1.342229 0, 0.213389 1.382551 0, 0.182152 1.424565 0, 0.153157 1.468156 0, 0.126483 1.513206 0, 0.102204 1.559589 0, 0.080385 1.60718 0, 0.061086 1.655847 0, 0.044362 1.705458 0, 0.030256 1.755875 0, 0.018809 1.806963 0, 0.010051 1.858579 0, 0.004006 1.910582 0, 0.000691 1.962831 0, 0.000115 2.015182 0, 0.00228 2.067491 0, 0.00718 2.119615 0, 0.0148 2.171412 0, 0.025122 2.222738 0, 0.038115 2.273454 0, 0.053745 2.32342 0, 0.071968 2.3725 0, 0.092735 2.420559 0, 0.115989 2.467465 0, 0.141665 2.51309 0, 0.169695 2.557309 0, 0.2 2.6 0, 3.2 6.6 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buildarea1.testcase b/src/spatialite/test/sql_stmt_geos_tests/buildarea1.testcase new file mode 100644 index 0000000..d8591c5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buildarea1.testcase @@ -0,0 +1,7 @@ +buildarea - null arg +:memory: #use in-memory database +SELECT BuildArea(NULL) +1 # rows (not including the header row) +1 # columns +BuildArea(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buildarea2.testcase b/src/spatialite/test/sql_stmt_geos_tests/buildarea2.testcase new file mode 100644 index 0000000..f20c6a6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buildarea2.testcase @@ -0,0 +1,7 @@ +buildarea - zeroblob arg +:memory: #use in-memory database +SELECT BuildArea(zeroblob(48)) +1 # rows (not including the header row) +1 # columns +BuildArea(zeroblob(48)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buildarea3.testcase b/src/spatialite/test/sql_stmt_geos_tests/buildarea3.testcase new file mode 100644 index 0000000..ad8a630 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buildarea3.testcase @@ -0,0 +1,7 @@ +buildarea - simple polygon +:memory: #use in-memory database +SELECT AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0), (10 0, 10 10), (10 10, 0 10), (0 10, 0 0))'))) +1 # rows (not including the header row) +1 # columns +AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0), (10 0, 10 10), (10 10, 0 10), (0 10, 0 0))'))) +POLYGON((10 0, 0 0, 0 10, 10 10, 10 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buildarea4.testcase b/src/spatialite/test/sql_stmt_geos_tests/buildarea4.testcase new file mode 100644 index 0000000..1fe1762 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buildarea4.testcase @@ -0,0 +1,7 @@ +buildarea - polygon-hole +:memory: #use in-memory database +SELECT AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10), (10 10, 0 10, 0 0), (5 5, 6 5, 6 6), (6 6, 5 6, 5 5))'))) +1 # rows (not including the header row) +1 # columns +AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10), (10 10, 0 10, 0 0), (5 5, 6 5, 6 6), (6 6, 5 6, 5 5))'))) +POLYGON((10 10, 10 0, 0 0, 0 10, 10 10), (5 5, 6 5, 6 6, 5 6, 5 5)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buildarea5.testcase b/src/spatialite/test/sql_stmt_geos_tests/buildarea5.testcase new file mode 100644 index 0000000..d569e5b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buildarea5.testcase @@ -0,0 +1,7 @@ +buildarea - multipolygon +:memory: #use in-memory database +SELECT AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10), (10 10, 0 10, 0 0), (15 15, 16 15, 16 16), (16 16, 15 16, 15 15))'))) +1 # rows (not including the header row) +1 # columns +AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0, 10 10), (10 10, 0 10, 0 0), (15 15, 16 15, 16 16), (16 16, 15 16, 15 15))'))) +MULTIPOLYGON(((10 10, 10 0, 0 0, 0 10, 10 10)), ((16 16, 16 15, 15 15, 15 16, 16 16))) diff --git a/src/spatialite/test/sql_stmt_geos_tests/buildarea6.testcase b/src/spatialite/test/sql_stmt_geos_tests/buildarea6.testcase new file mode 100644 index 0000000..f9e7860 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/buildarea6.testcase @@ -0,0 +1,7 @@ +buildarea - not a polygon +:memory: #use in-memory database +SELECT AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0), (10 0, 10 10), (10 10, 0 10))'))) +1 # rows (not including the header row) +1 # columns +AsText(BuildArea(GeomFromText('MULTILINESTRING((0 0, 10 0), (10 0, 10 10), (10 10, 0 10))'))) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid1.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid1.testcase new file mode 100644 index 0000000..5a5630f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/centroid1.testcase @@ -0,0 +1,8 @@ +Centroid - polygon +:memory: #use in-memory database +SELECT astext(centroid(geomFromText("POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))", 4326))); +1 # rows (not including the header row) +1 # columns +astext(centroid(geomFromText("POLYGON((0 0, 0 2, 2 2, 2 0, 0 0))", 4326))); +POINT(1 1) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid2.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid2.testcase new file mode 100644 index 0000000..1e06c95 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/centroid2.testcase @@ -0,0 +1,8 @@ +Centroid - point +:memory: #use in-memory database +SELECT astext(centroid(geomFromText("POINT(1,1)", 4326))); +1 # rows (not including the header row) +1 # columns +astext(centroid(geomFromText("POINT(1,1)", 4326))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid3.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid3.testcase new file mode 100644 index 0000000..625369b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/centroid3.testcase @@ -0,0 +1,9 @@ +Centroid - non-geometry +:memory: #use in-memory database +SELECT astext(centroid("foo")); +1 # rows (not including the header row) +1 # columns +astext(centroid("foo")) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid4.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid4.testcase new file mode 100644 index 0000000..9e06ede --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/centroid4.testcase @@ -0,0 +1,9 @@ +Centroid - toxic +:memory: #use in-memory database +SELECT astext(centroid(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))); +1 # rows (not including the header row) +1 # columns +astext(centroid(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) +POINT(135.733333 -34.9) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid5.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid5.testcase new file mode 100644 index 0000000..ed6d925 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/centroid5.testcase @@ -0,0 +1,8 @@ +Centroid - zeroblob +:memory: #use in-memory database +SELECT centroid(zeroblob(40)); +1 # rows (not including the header row) +1 # columns +centroid(zeroblob(40)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid6.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid6.testcase new file mode 100644 index 0000000..0cc4286 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/centroid6.testcase @@ -0,0 +1,8 @@ +Centroid - polygonZ (problem case - GEOS throws away the Z coordinates) +:memory: #use in-memory database +SELECT astext(centroid(geomFromText("POLYGONZ((0 0 1, 0 2 1, 2 2 1, 2 0 1, 0 0 1))"))) +1 # rows (not including the header row) +1 # columns +astext(centroid(geomFromText("POLYGONZ((0 0 1, 0 2 1, 2 2 1, 2 0 1, 0 0 1))"))) +POINT(1 1) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid7.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid7.testcase new file mode 100644 index 0000000..a4c1c68 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/centroid7.testcase @@ -0,0 +1,8 @@ +Centroid - polygonZM (problem case - GEOS throws away the Z and M coordinates) +:memory: #use in-memory database +SELECT astext(centroid(geomFromText("POLYGONZM((0 0 1 4, 0 2 1 4, 2 2 1 4, 2 0 1 4, 0 0 1 4))"))) +1 # rows (not including the header row) +1 # columns +astext(centroid(geomFromText("POLYGONZM((0 0 1 4, 0 2 1 4, 2 2 1 4, 2 0 1 4, 0 0 1 4))"))) +POINT(1 1) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/centroid8.testcase b/src/spatialite/test/sql_stmt_geos_tests/centroid8.testcase new file mode 100644 index 0000000..3a36769 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/centroid8.testcase @@ -0,0 +1,8 @@ +Centroid - polygonM (problem case - GEOS throws away the M coordinates) +:memory: #use in-memory database +SELECT astext(centroid(geomFromText("POLYGONM((0 0 1, 0 2 1, 2 2 1, 2 0 1, 0 0 1))"))) +1 # rows (not including the header row) +1 # columns +astext(centroid(geomFromText("POLYGONM((0 0 1, 0 2 1, 2 2 1, 2 0 1, 0 0 1))"))) +POINT(1 1) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint1.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint1.testcase new file mode 100644 index 0000000..9b3480f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint1.testcase @@ -0,0 +1,8 @@ +Closest Point - two points +:memory: #use in-memory database +SELECT AsText(ClosestPoint(MakePoint(1, 2), MakePoint(4, 6))); +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(MakePoint(1, 2), MakePoint(4, 6))) +POINT(1 2) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint10.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint10.testcase new file mode 100644 index 0000000..06e4ada --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint10.testcase @@ -0,0 +1,8 @@ +Closest Point - Point and line +:memory: #use in-memory database +SELECT AsText(ClosestPoint(GeomFromText("LINESTRING(0 0, 0 10)"), MakePoint(4, 6))); +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(GeomFromText("LINESTRING(0 0, 0 10)"), MakePoint(4, 6))) +POINT(0 6) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint11.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint11.testcase new file mode 100644 index 0000000..b2d4da6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint11.testcase @@ -0,0 +1,8 @@ +Closest Point - Point and lineZ +:memory: #use in-memory database +SELECT AsText(ClosestPoint(GeomFromText("LINESTRINGZ(0 0 0, 0 10 5)"), MakePoint(4, 6))); +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(GeomFromText("LINESTRINGZ(0 0 0, 0 10 5)"), MakePoint(4, 6))) +POINT Z(0 6 3) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint12.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint12.testcase new file mode 100644 index 0000000..c814ef8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint12.testcase @@ -0,0 +1,8 @@ +Closest Point - PointZ and line +:memory: #use in-memory database +SELECT AsText(ClosestPoint(GeomFromText("LINESTRING(0 0, 0 10)"), GeomFromText("POINTZ(4 6 4)"))); +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(GeomFromText("LINESTRING(0 0, 0 10)"), GeomFromText("POINTZ(4 6 4)"))) +POINT(0 6) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint13.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint13.testcase new file mode 100644 index 0000000..d4fe2fe --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint13.testcase @@ -0,0 +1,8 @@ +Closest Point - lineZ and Point +:memory: #use in-memory database +SELECT AsText(ClosestPoint(MakePoint(4, 6), GeomFromText("LINESTRINGZ(0 0 0, 0 10 5)"))); +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(MakePoint(4, 6), GeomFromText("LINESTRINGZ(0 0 0, 0 10 5)"))) +POINT(4 6) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint14.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint14.testcase new file mode 100644 index 0000000..8e401e2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint14.testcase @@ -0,0 +1,8 @@ +Closest Point - LINE AND PointZ +:memory: #use in-memory database +SELECT AsText(ClosestPoint(GeomFromText("POINTZ(4 6 4)"), GeomFromText("LINESTRING(0 0, 0 10)"))); +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(GeomFromText("POINTZ(4 6 4)"), GeomFromText("LINESTRING(0 0, 0 10)"))) +POINT Z(4 6 4) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint15.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint15.testcase new file mode 100644 index 0000000..bfefd70 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint15.testcase @@ -0,0 +1,8 @@ +Closest Point - toxic geom +:memory: #use in-memory database +SELECT AsText(ClosestPoint(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(130, -35))) +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(130, -35))) +POINT(135.2 -34.5) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint16.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint16.testcase new file mode 100644 index 0000000..36deea9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint16.testcase @@ -0,0 +1,8 @@ +Closest Point - toxic geom + line +:memory: #use in-memory database +SELECT AsText(ClosestPoint(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), GeomFromText("LINESTRING(130 -35, 0 0)"))) +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), GeomFromText("LINESTRING(130 -35, 0 0)"))) +POINT(135.2 -34.5) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint17.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint17.testcase new file mode 100644 index 0000000..7ad41f7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint17.testcase @@ -0,0 +1,8 @@ +Closest Point - polygon with interior and Point +:memory: #use in-memory database +SELECT AsText(ClosestPoint(MakePoint(4, 6), GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),( 1 1, 3 1, 3 3, 1 3, 1 1))"))) +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(MakePoint(4, 6), GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),( 1 1, 3 1, 3 3, 1 3, 1 1))"))) +POINT(4 6) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint18.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint18.testcase new file mode 100644 index 0000000..9a53b82 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint18.testcase @@ -0,0 +1,8 @@ +Closest Point - polygonZ with interior and Point +:memory: #use in-memory database +SELECT AsText(ClosestPoint(GeomFromText("POINTZ(4 6 1)"), GeomFromText("POLYGONZ((0 0 1, 10 0 2, 10 10 3, 0 10 2, 0 0 1),( 1 1 4, 3 1 5, 3 3 6, 1 3 5, 1 1 4))"))) +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(GeomFromText("POINTZ(4 6 1)"), GeomFromText("POLYGONZ((0 0 1, 10 0 2, 10 10 3, 0 10 2, 0 0 1),( 1 1 4, 3 1 5, 3 3 6, 1 3 5, 1 1 4))"))) +POINT Z(4 6 1) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint19.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint19.testcase new file mode 100644 index 0000000..f035c3b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint19.testcase @@ -0,0 +1,8 @@ +Closest Point - polygonM with interior and Point +:memory: #use in-memory database +SELECT AsText(ClosestPoint(GeomFromText("POINTM(4 6 1)"), GeomFromText("POLYGONM((0 0 1, 10 0 2, 10 10 3, 0 10 2, 0 0 1),( 1 1 4, 3 1 5, 3 3 6, 1 3 5, 1 1 4))"))) +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(GeomFromText("POINTM(4 6 1)"), GeomFromText("POLYGONM((0 0 1, 10 0 2, 10 10 3, 0 10 2, 0 0 1),( 1 1 4, 3 1 5, 3 3 6, 1 3 5, 1 1 4))"))) +POINT M(4 6 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint2.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint2.testcase new file mode 100644 index 0000000..0c023e9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint2.testcase @@ -0,0 +1,8 @@ +Closest Point - coincident points +:memory: #use in-memory database +SELECT ClosestPoint(MakePoint(1, 2), MakePoint(1, 2)); +1 # rows (not including the header row) +1 # columns +ClosestPoint(MakePoint(1, 2), MakePoint(1, 2)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint20.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint20.testcase new file mode 100644 index 0000000..3e0b485 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint20.testcase @@ -0,0 +1,8 @@ +Closest Point - polygonZM with interior and Point +:memory: #use in-memory database +SELECT AsText(ClosestPoint(GeomFromText("POINTZM(4 6 1 3)"), GeomFromText("POLYGONZM((0 0 1 3, 10 0 2 3, 10 10 3 3, 0 10 2 3, 0 0 1 3),( 1 1 4 1, 3 1 5 1, 3 3 6 1, 1 3 5 2, 1 1 4 1))"))) +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(GeomFromText("POINTZM(4 6 1 3)"), GeomFromText("POLYGONZM((0 0 1 3, 10 0 2 3, 10 10 3 3, 0 10 2 3, 0 0 1 3),( 1 1 4 1, 3 1 5 1, 3 3 6 1, 1 3 5 2, 1 1 4 1))"))) +POINT ZM(4 6 1 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint21.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint21.testcase new file mode 100644 index 0000000..94fbb19 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint21.testcase @@ -0,0 +1,8 @@ +Closest Point - Point and lineM +:memory: #use in-memory database +SELECT AsText(ClosestPoint(GeomFromText("LINESTRINGM(0 0 0, 0 10 5)"), MakePoint(4, 6))); +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(GeomFromText("LINESTRINGM(0 0 0, 0 10 5)"), MakePoint(4, 6))) +POINT M(0 6 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint22.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint22.testcase new file mode 100644 index 0000000..447560f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint22.testcase @@ -0,0 +1,8 @@ +Closest Point - Point and lineZM +:memory: #use in-memory database +SELECT AsText(ClosestPoint(GeomFromText("LINESTRINGZM(0 0 0 0, 0 10 5 2)"), MakePoint(4, 6))) +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(GeomFromText("LINESTRINGZM(0 0 0 0, 0 10 5 2)"), MakePoint(4, 6))) +POINT ZM(0 6 3 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint3.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint3.testcase new file mode 100644 index 0000000..a1d8a63 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint3.testcase @@ -0,0 +1,8 @@ +Closest Point - bad first geom +:memory: #use in-memory database +SELECT ClosestPoint(zeroblob(67), MakePoint(1, 2)); +1 # rows (not including the header row) +1 # columns +ClosestPoint(zeroblob(67), MakePoint(1, 2)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint4.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint4.testcase new file mode 100644 index 0000000..75d18dd --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint4.testcase @@ -0,0 +1,8 @@ +Closest Point - bad second blob +:memory: #use in-memory database +SELECT ClosestPoint(MakePoint(1, 2), zeroblob(25)); +1 # rows (not including the header row) +1 # columns +ClosestPoint(MakePoint(1, 2), zeroblob(25)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint5.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint5.testcase new file mode 100644 index 0000000..8c4be8a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint5.testcase @@ -0,0 +1,8 @@ +Closest Point - text first geom +:memory: #use in-memory database +SELECT ClosestPoint("world", MakePoint(1, 2)); +1 # rows (not including the header row) +1 # columns +ClosestPoint("world", MakePoint(1, 2)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint6.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint6.testcase new file mode 100644 index 0000000..d341fb6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint6.testcase @@ -0,0 +1,8 @@ +Closest Point - text second blob +:memory: #use in-memory database +SELECT ClosestPoint(MakePoint(1, 2), "hello"); +1 # rows (not including the header row) +1 # columns +ClosestPoint(MakePoint(1, 2), "hello") +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint7.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint7.testcase new file mode 100644 index 0000000..f07738a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint7.testcase @@ -0,0 +1,8 @@ +Closest Point - two pointZs +:memory: #use in-memory database +SELECT AsText(ClosestPoint(GeomFromText("POINTZ(1 2 3)"), GeomFromText("POINTZ(4 6 0)"))); +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(GeomFromText("POINTZ(1 2 3)"), GeomFromText("POINTZ(4 6 0)"))) +POINT Z(1 2 3) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint8.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint8.testcase new file mode 100644 index 0000000..dd5addd --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint8.testcase @@ -0,0 +1,8 @@ +Closest Point - two pointMs +:memory: #use in-memory database +SELECT AsText(ClosestPoint(GeomFromText("POINTM(1 2 4)"), GeomFromText("POINTM(4 6 5)"))); +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(GeomFromText("POINTM(1 2 4)"), GeomFromText("POINTM(4 6 5)"))) +POINT M(1 2 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/closestpoint9.testcase b/src/spatialite/test/sql_stmt_geos_tests/closestpoint9.testcase new file mode 100644 index 0000000..a717cb0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/closestpoint9.testcase @@ -0,0 +1,8 @@ +Closest Point - two pointZMs +:memory: #use in-memory database +SELECT AsText(ClosestPoint(GeomFromText("POINTZM(1 2 0 4)"), GeomFromText("POINTZM(4 6 1 5)"))); +1 # rows (not including the header row) +1 # columns +AsText(ClosestPoint(GeomFromText("POINTZM(1 2 0 4)"), GeomFromText("POINTZM(4 6 1 5)"))) +POINT ZM(1 2 0 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull1.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull1.testcase new file mode 100644 index 0000000..4a70677 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/convexhull1.testcase @@ -0,0 +1,7 @@ +convex hull - points +:memory: #use in-memory database +SELECT AsText(ConvexHull(GeomFromText("MULTIPOINT(0 0, 1 0, 1 1, 2 1, 2 0, 10 0, 10 10, 0 10)"))) +1 # rows (not including the header row) +1 # columns +AsText(ConvexHull(GeomFromText("MULTIPOINT(0 0, 1 0, 1 1, 2 1, 2 0, 10 0, 10 10, 0 10)"))) +POLYGON((0 0, 0 10, 10 10, 10 0, 0 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull10.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull10.testcase new file mode 100644 index 0000000..15916ca --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/convexhull10.testcase @@ -0,0 +1,7 @@ +convex hull - polygonM +:memory: #use in-memory database +SELECT AsText(ConvexHull(GeomFromText("POLYGONM((0 0 1, 1 0 2, 1 1 3, 2 1 4, 2 0 5, 10 0 6, 10 10 7, 0 10 2, 0 0 1))"))) +1 # rows (not including the header row) +1 # columns +AsText(ConvexHull(GeomFromText("POLYGONM((0 0 1, 1 0 2, 1 1 3, 2 1 4, 2 0 5, 10 0 6, 10 10 7, 0 10 2, 0 0 1))"))) +POLYGON M((0 0 0, 0 10 0, 10 10 0, 10 0 0, 0 0 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull2.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull2.testcase new file mode 100644 index 0000000..3cc3ddd --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/convexhull2.testcase @@ -0,0 +1,7 @@ +convex hull - linestring +:memory: #use in-memory database +SELECT AsText(ConvexHull(GeomFromText("LINESTRING(0 0, 1 0, 1 1, 2 1, 2 0, 10 0, 10 10, 0 10)"))) +1 # rows (not including the header row) +1 # columns +AsText(ConvexHull(GeomFromText("LINESTRING(0 0, 1 0, 1 1, 2 1, 2 0, 10 0, 10 10, 0 10)"))) +POLYGON((0 0, 0 10, 10 10, 10 0, 0 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull3.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull3.testcase new file mode 100644 index 0000000..fbc7690 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/convexhull3.testcase @@ -0,0 +1,7 @@ +convex hull - polygon +:memory: #use in-memory database +SELECT AsText(ConvexHull(GeomFromText("POLYGON((0 0, 1 0, 1 1, 2 1, 2 0, 10 0, 10 10, 0 10, 0 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(ConvexHull(GeomFromText("POLYGON((0 0, 1 0, 1 1, 2 1, 2 0, 10 0, 10 10, 0 10, 0 0))"))) +POLYGON((0 0, 0 10, 10 10, 10 0, 0 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull4.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull4.testcase new file mode 100644 index 0000000..4955ee2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/convexhull4.testcase @@ -0,0 +1,7 @@ +convex hull - polygon without chip +:memory: #use in-memory database +SELECT AsText(ConvexHull(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(ConvexHull(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"))) +POLYGON((0 0, 0 10, 10 10, 10 0, 0 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull5.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull5.testcase new file mode 100644 index 0000000..f615b0f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/convexhull5.testcase @@ -0,0 +1,7 @@ +convex hull - zeroblob +:memory: #use in-memory database +SELECT ConvexHull(zeroblob(100)) +1 # rows (not including the header row) +1 # columns +ConvexHull(zeroblob(100)) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull6.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull6.testcase new file mode 100644 index 0000000..9aeec9a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/convexhull6.testcase @@ -0,0 +1,7 @@ +convex hull - non-blob +:memory: #use in-memory database +SELECT ConvexHull(3.2) +1 # rows (not including the header row) +1 # columns +ConvexHull(3.2) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull7.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull7.testcase new file mode 100644 index 0000000..0a22d2a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/convexhull7.testcase @@ -0,0 +1,7 @@ +convex hull - toxic polygon +:memory: #use in-memory database +SELECT AsText(ConvexHull(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) +1 # rows (not including the header row) +1 # columns +AsText(ConvexHull(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) +POLYGON((136 -35.2, 135.2 -34.5, 136 -35, 136 -35.2)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull8.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull8.testcase new file mode 100644 index 0000000..59bf176 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/convexhull8.testcase @@ -0,0 +1,7 @@ +convex hull - polygonZ +:memory: #use in-memory database +SELECT AsText(ConvexHull(GeomFromText("POLYGONZ((0 0 1, 1 0 3, 1 1 5, 2 1 5, 2 0 3, 10 0 1, 10 10 2, 0 10 2, 0 0 1))"))) +1 # rows (not including the header row) +1 # columns +AsText(ConvexHull(GeomFromText("POLYGONZ((0 0 1, 1 0 3, 1 1 5, 2 1 5, 2 0 3, 10 0 1, 10 10 2, 0 10 2, 0 0 1))"))) +POLYGON Z((0 0 1, 0 10 2, 10 10 2, 10 0 1, 0 0 1)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/convexhull9.testcase b/src/spatialite/test/sql_stmt_geos_tests/convexhull9.testcase new file mode 100644 index 0000000..85c9494 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/convexhull9.testcase @@ -0,0 +1,7 @@ +convex hull - polygonZM +:memory: #use in-memory database +SELECT AsText(ConvexHull(GeomFromText("POLYGONZM((0 0 1 1, 1 0 3 2, 1 1 5 3, 2 1 5 4, 2 0 3 5, 10 0 1 6, 10 10 2 7, 0 10 2 2, 0 0 1 1))"))) +1 # rows (not including the header row) +1 # columns +AsText(ConvexHull(GeomFromText("POLYGONZM((0 0 1 1, 1 0 3 2, 1 1 5 3, 2 1 5 4, 2 0 3 5, 10 0 1 6, 10 10 2 7, 0 10 2 2, 0 0 1 1))"))) +POLYGON ZM((0 0 1 0, 0 10 2 0, 10 10 2 0, 10 0 1 0, 0 0 1 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/coveredby1.testcase b/src/spatialite/test/sql_stmt_geos_tests/coveredby1.testcase new file mode 100644 index 0000000..3cb9efd --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/coveredby1.testcase @@ -0,0 +1,7 @@ +CoveredBy - non-geom1 +:memory: #use in-memory database +SELECT CoveredBy(geom1,geom2) from (SELECT "hello" as geom1,GeomFromText("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))") as geom2) dummy; +1 # rows (not including the header row) +1 # columns +CoveredBy(geom1,geom2) +-1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/coveredby2.testcase b/src/spatialite/test/sql_stmt_geos_tests/coveredby2.testcase new file mode 100644 index 0000000..3f187e4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/coveredby2.testcase @@ -0,0 +1,7 @@ +CoveredBy - non-geom2 +:memory: #use in-memory database +SELECT CoveredBy(geom1,geom2) from (SELECT "hello" as geom2,GeomFromText("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))") as geom1) dummy; +1 # rows (not including the header row) +1 # columns +CoveredBy(geom1,geom2) +-1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/covers1.testcase b/src/spatialite/test/sql_stmt_geos_tests/covers1.testcase new file mode 100644 index 0000000..c24e65a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/covers1.testcase @@ -0,0 +1,7 @@ +Covers - non-geom1 +:memory: #use in-memory database +SELECT Covers(geom1,geom2) from (SELECT "hello" as geom1,GeomFromText("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))") as geom2) dummy; +1 # rows (not including the header row) +1 # columns +Covers(geom1,geom2) +-1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/covers2.testcase b/src/spatialite/test/sql_stmt_geos_tests/covers2.testcase new file mode 100644 index 0000000..3ef35ce --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/covers2.testcase @@ -0,0 +1,7 @@ +Covers - non-geom2 +:memory: #use in-memory database +SELECT Covers(geom1,geom2) from (SELECT "hello" as geom2,GeomFromText("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))") as geom1) dummy; +1 # rows (not including the header row) +1 # columns +Covers(geom1,geom2) +-1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/covers_covered1.testcase b/src/spatialite/test/sql_stmt_geos_tests/covers_covered1.testcase new file mode 100644 index 0000000..79f4e14 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/covers_covered1.testcase @@ -0,0 +1,17 @@ +Covers / Covered +:memory: #use in-memory database +SELECT Covers(geom1,geom2),CoveredBy(geom1,geom2),Covers(geom2,geom1),CoveredBy(geom2,geom1) from (SELECT GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom1,GeomFromText("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))") as geom2) dummy; +1 # rows (not including the header row) +4 # columns +Covers(geom1,geom2) +CoveredBy(geom1,geom2) +Covers(geom2,geom1) +CoveredBy(geom2,geom1) +0 +1 +1 +0 + + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/covers_covered2.testcase b/src/spatialite/test/sql_stmt_geos_tests/covers_covered2.testcase new file mode 100644 index 0000000..a249bb0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/covers_covered2.testcase @@ -0,0 +1,17 @@ +Covers / Covered - partial overlap +:memory: #use in-memory database +SELECT Covers(geom1,geom2),CoveredBy(geom1,geom2),Covers(geom2,geom1),CoveredBy(geom2,geom1) from (SELECT GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom1,GeomFromText("POLYGON((0.5 0.5, 2.5 0.5, 2.5 2.5, 0.5 2.5, 0.5 0.5))") as geom2) dummy; +1 # rows (not including the header row) +4 # columns +Covers(geom1,geom2) +CoveredBy(geom1,geom2) +Covers(geom2,geom1) +CoveredBy(geom2,geom1) +0 +0 +0 +0 + + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/covers_covered3.testcase b/src/spatialite/test/sql_stmt_geos_tests/covers_covered3.testcase new file mode 100644 index 0000000..86b95ee --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/covers_covered3.testcase @@ -0,0 +1,17 @@ +Covers / Covered - identical +:memory: #use in-memory database +SELECT Covers(geom1,geom2),CoveredBy(geom1,geom2),Covers(geom2,geom1),CoveredBy(geom2,geom1) from (SELECT GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom1,GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom2) dummy; +1 # rows (not including the header row) +4 # columns +Covers(geom1,geom2) +CoveredBy(geom1,geom2) +Covers(geom2,geom1) +CoveredBy(geom2,geom1) +1 +1 +1 +1 + + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/covers_covered4.testcase b/src/spatialite/test/sql_stmt_geos_tests/covers_covered4.testcase new file mode 100644 index 0000000..be43e86 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/covers_covered4.testcase @@ -0,0 +1,11 @@ +CoveredBy- zero blob first arg +:memory: #use in-memory database +SELECT CoveredBy(geom1,geom2) from (SELECT zeroblob(48) as geom1,GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom2) dummy; +1 # rows (not including the header row) +1 # columns +CoveredBy(geom1,geom2) +-1 + + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/covers_covered5.testcase b/src/spatialite/test/sql_stmt_geos_tests/covers_covered5.testcase new file mode 100644 index 0000000..27e5500 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/covers_covered5.testcase @@ -0,0 +1,11 @@ +Covers - zero blob second arg +:memory: #use in-memory database +SELECT Covers(geom2,geom1) from (SELECT zeroblob(48) as geom1,GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom2) dummy; +1 # rows (not including the header row) +1 # columns +Covers(geom2,geom1) +-1 + + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/covers_covered6.testcase b/src/spatialite/test/sql_stmt_geos_tests/covers_covered6.testcase new file mode 100644 index 0000000..86ba616 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/covers_covered6.testcase @@ -0,0 +1,11 @@ +Covers - zero blob first arg +:memory: #use in-memory database +SELECT Covers(geom1,geom2) from (SELECT zeroblob(48) as geom1,GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom2) dummy; +1 # rows (not including the header row) +1 # columns +Covers(geom1,geom2) +-1 + + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/covers_covered7.testcase b/src/spatialite/test/sql_stmt_geos_tests/covers_covered7.testcase new file mode 100644 index 0000000..5cf4e26 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/covers_covered7.testcase @@ -0,0 +1,11 @@ +CoveredBy - zero blob second arg +:memory: #use in-memory database +SELECT CoveredBy(geom2,geom1) from (SELECT zeroblob(48) as geom1,GeomFromText("POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))") as geom2) dummy; +1 # rows (not including the header row) +1 # columns +CoveredBy(geom2,geom1) +-1 + + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo1.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo1.testcase new file mode 100644 index 0000000..dc6ca17 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo1.testcase @@ -0,0 +1,7 @@ +CreateTopology - 2 arguments, 2D +NEW:memory: #use in-memory database (empty) +SELECT CreateTopologyTables(4326, "XY"); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables(4326, "XY") +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo10.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo10.testcase new file mode 100644 index 0000000..55cad2c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo10.testcase @@ -0,0 +1,7 @@ +CreateTopology - 3 arguments, integer prefix (error) +:memory: #use in-memory database +SELECT CreateTopologyTables(3, 4326, 3); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables(3, 4326, 3) +0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo11.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo11.testcase new file mode 100644 index 0000000..fffd330 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo11.testcase @@ -0,0 +1,7 @@ +CreateTopology - 3 arguments, float dim (error) +:memory: #use in-memory database +SELECT CreateTopologyTables("hello_world", 4326, 3.3); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables("hello_world", 4326, 3.3) +0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo12.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo12.testcase new file mode 100644 index 0000000..3eb09c3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo12.testcase @@ -0,0 +1,7 @@ +CreateTopology - 3 arguments, spaces in prefix +NEW:memory: #use in-memory database +SELECT CreateTopologyTables("hello world", 4326, 3); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables("hello world", 4326, 3) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo13.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo13.testcase new file mode 100644 index 0000000..dc78c9a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo13.testcase @@ -0,0 +1,7 @@ +CreateTopology - 3 arguments, quote in prefix +NEW:memory: #use in-memory database +SELECT CreateTopologyTables("hello'_world", 4326, 3); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables("hello'_world", 4326, 3) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo14.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo14.testcase new file mode 100644 index 0000000..7ded789 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo14.testcase @@ -0,0 +1,7 @@ +CreateTopology - 2 arguments, 2D int +NEW:memory: #use in-memory database +SELECT CreateTopologyTables(4326, 2); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables(4326, 2) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo15.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo15.testcase new file mode 100644 index 0000000..7ec6147 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo15.testcase @@ -0,0 +1,7 @@ +CreateTopology - 2 arguments, 3D int +NEW:memory: #use in-memory database +SELECT CreateTopologyTables(4326, 3); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables(4326, 3) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo16.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo16.testcase new file mode 100644 index 0000000..a32e31e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo16.testcase @@ -0,0 +1,7 @@ +CreateTopology - 2 arguments, 4D int (error) +:memory: #use in-memory database +SELECT CreateTopologyTables(4326, 4); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables(4326, 4) +0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo17.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo17.testcase new file mode 100644 index 0000000..c2e9c50 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo17.testcase @@ -0,0 +1,7 @@ +CreateTopology - 2 arguments, text SRID (error) +:memory: #use in-memory database +SELECT CreateTopologyTables("4326", 2); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables("4326", 2) +0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo18.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo18.testcase new file mode 100644 index 0000000..8ea52ed --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo18.testcase @@ -0,0 +1,7 @@ +CreateTopology - 2 arguments, float dims (error) +:memory: #use in-memory database +SELECT CreateTopologyTables(4326, 2.0); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables(4326, 2.0) +0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo2.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo2.testcase new file mode 100644 index 0000000..dbcf50e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo2.testcase @@ -0,0 +1,7 @@ +CreateTopology - 2 arguments, 3D +NEW:memory: #use in-memory database +SELECT CreateTopologyTables(4326, "XYZ"); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables(4326, "XYZ") +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo3.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo3.testcase new file mode 100644 index 0000000..d46f699 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo3.testcase @@ -0,0 +1,7 @@ +CreateTopology - 3 arguments, 2D +NEW:memory: #use in-memory database +SELECT CreateTopologyTables("my_prefix", 4326, "XY"); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables("my_prefix", 4326, "XY") +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo4.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo4.testcase new file mode 100644 index 0000000..9cc7604 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo4.testcase @@ -0,0 +1,7 @@ +CreateTopology - 3 arguments, 3D +NEW:memory: #use in-memory database +SELECT CreateTopologyTables("my_prefix", 4326, "XYZ"); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables("my_prefix", 4326, "XYZ") +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo5.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo5.testcase new file mode 100644 index 0000000..e128fb2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo5.testcase @@ -0,0 +1,7 @@ +CreateTopology - 3 arguments, 3D int +NEW:memory: #use in-memory database +SELECT CreateTopologyTables("my_prefix", 4326, 3); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables("my_prefix", 4326, 3) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo6.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo6.testcase new file mode 100644 index 0000000..e662c9b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo6.testcase @@ -0,0 +1,7 @@ +CreateTopology - 3 arguments, 2D int +NEW:memory: #use in-memory database +SELECT CreateTopologyTables("my_prefix", 4326, 2); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables("my_prefix", 4326, 2) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo7.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo7.testcase new file mode 100644 index 0000000..bffbf4e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo7.testcase @@ -0,0 +1,7 @@ +CreateTopology - 3 arguments, 4D (error) +:memory: #use in-memory database +SELECT CreateTopologyTables("my_prefix", 4326, 4); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables("my_prefix", 4326, 4) +0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo8.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo8.testcase new file mode 100644 index 0000000..fbb59d8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo8.testcase @@ -0,0 +1,7 @@ +CreateTopology - 3 arguments, text SRID (error) +:memory: #use in-memory database +SELECT CreateTopologyTables("my_prefix", "WGS-84", 3); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables("my_prefix", "WGS-84", 3) +0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/createtopo9.testcase b/src/spatialite/test/sql_stmt_geos_tests/createtopo9.testcase new file mode 100644 index 0000000..b01f8b2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/createtopo9.testcase @@ -0,0 +1,7 @@ +CreateTopology - 3 arguments, 0 SRID (error) +:memory: #use in-memory database +SELECT CreateTopologyTables("my_prefix", 0, 3); +1 # rows (not including the header row) +1 # columns +CreateTopologyTables("my_prefix", 0, 3) +0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference1.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference1.testcase new file mode 100644 index 0000000..4e2436a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/difference1.testcase @@ -0,0 +1,9 @@ +difference - two points +:memory: #use in-memory database +SELECT AsText(Difference(Makepoint(1,2), MakePoint(2,3))); +1 # rows (not including the header row) +1 # columns +AsText(Difference(Makepoint(1,2), MakePoint(2,3))) +POINT(1 2) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference10.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference10.testcase new file mode 100644 index 0000000..58e6239 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/difference10.testcase @@ -0,0 +1,7 @@ +difference - XYM points +:memory: #use in-memory database +SELECT AsText(Difference(GeomFromText("POINTM(1 3 4)"), GeomFromText("POINTM(2 4 9)"))) +1 # rows (not including the header row) +1 # columns +AsText(Difference(GeomFromText("POINTM(1 3 4)"), GeomFromText("POINTM(2 4 9)"))) +POINT M(1 3 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference11.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference11.testcase new file mode 100644 index 0000000..d321da1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/difference11.testcase @@ -0,0 +1,8 @@ +difference - zeroblob second point +:memory: #use in-memory database +SELECT AsText(Difference(MakePoint(2,3),zeroblob(48))) +1 # rows (not including the header row) +1 # columns +AsText(Difference(MakePoint(2,3),zeroblob(48))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference12.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference12.testcase new file mode 100644 index 0000000..63d6135 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/difference12.testcase @@ -0,0 +1,8 @@ +difference - toxic second point +:memory: #use in-memory database +SELECT ST_Difference(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) +1 # rows (not including the header row) +1 # columns +ST_Difference(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference2.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference2.testcase new file mode 100644 index 0000000..473675f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/difference2.testcase @@ -0,0 +1,7 @@ +difference - two common points +:memory: #use in-memory database +SELECT AsText(Difference(Makepoint(1,2), MakePoint(1,2))); +1 # rows (not including the header row) +1 # columns +AsText(Difference(Makepoint(1,2), MakePoint(1,2))) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference3.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference3.testcase new file mode 100644 index 0000000..0d4f3cb --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/difference3.testcase @@ -0,0 +1,8 @@ +difference - null first point +:memory: #use in-memory database +SELECT AsText(Difference(null, MakePoint(2,3))); +1 # rows (not including the header row) +1 # columns +AsText(Difference(null, MakePoint(2,3))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference4.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference4.testcase new file mode 100644 index 0000000..e94376b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/difference4.testcase @@ -0,0 +1,8 @@ +difference - null second point +:memory: #use in-memory database +SELECT AsText(Difference(MakePoint(2,3), null)); +1 # rows (not including the header row) +1 # columns +AsText(Difference(MakePoint(2,3), null)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference6.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference6.testcase new file mode 100644 index 0000000..a0975b4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/difference6.testcase @@ -0,0 +1,8 @@ +difference - zeroblob first point +:memory: #use in-memory database +SELECT AsText(Difference(zeroblob(48), MakePoint(2,3))); +1 # rows (not including the header row) +1 # columns +AsText(Difference(zeroblob(48), MakePoint(2,3))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference7.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference7.testcase new file mode 100644 index 0000000..ad15cc6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/difference7.testcase @@ -0,0 +1,8 @@ +difference - toxic first point +:memory: #use in-memory database +SELECT AsText(Difference(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))); +1 # rows (not including the header row) +1 # columns +AsText(Difference(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference8.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference8.testcase new file mode 100644 index 0000000..546d753 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/difference8.testcase @@ -0,0 +1,7 @@ +difference - XYZ points +:memory: #use in-memory database +SELECT AsText(Difference(GeomFromText("POINTZ(1 3 5)"), GeomFromText("POINTZ(2 4 6)"))) +1 # rows (not including the header row) +1 # columns +AsText(Difference(GeomFromText("POINTZ(1 3 5)"), GeomFromText("POINTZ(2 4 6)"))) +POINT Z(1 3 5) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/difference9.testcase b/src/spatialite/test/sql_stmt_geos_tests/difference9.testcase new file mode 100644 index 0000000..052217a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/difference9.testcase @@ -0,0 +1,7 @@ +difference - XYZM points +:memory: #use in-memory database +SELECT AsText(Difference(GeomFromText("POINTZM(1 3 5 4)"), GeomFromText("POINTZM(2 4 6 9)"))) +1 # rows (not including the header row) +1 # columns +AsText(Difference(GeomFromText("POINTZM(1 3 5 4)"), GeomFromText("POINTZM(2 4 6 9)"))) +POINT ZM(1 3 5 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance1.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance1.testcase new file mode 100644 index 0000000..58d5fc4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance1.testcase @@ -0,0 +1,8 @@ +Distance - two points +:memory: #use in-memory database +SELECT ST_Distance(MakePoint(1, 2), MakePoint(4, 6)) +1 # rows (not including the header row) +1 # columns +ST_Distance(MakePoint(1, 2), MakePoint(4, 6)) +5.0 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance10.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance10.testcase new file mode 100644 index 0000000..4562395 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance10.testcase @@ -0,0 +1,8 @@ +Distance - toxic first line +:memory: #use in-memory database +SELECT Distance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 0)")) +1 # rows (not including the header row) +1 # columns +Distance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 0)")) +0.0 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance2.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance2.testcase new file mode 100644 index 0000000..10bb7b0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance2.testcase @@ -0,0 +1,8 @@ +Distance - two identical points +:memory: #use in-memory database +SELECT ST_Distance(MakePoint(1, 2), MakePoint(1, 2)) +1 # rows (not including the header row) +1 # columns +ST_Distance(MakePoint(1, 2), MakePoint(1, 2)) +0.0 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance3.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance3.testcase new file mode 100644 index 0000000..df346ba --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance3.testcase @@ -0,0 +1,8 @@ +Distance - bad blob first arg +:memory: #use in-memory database +SELECT Distance(zeroblob(100), MakePoint(1, 2)) +1 # rows (not including the header row) +1 # columns +Distance(zeroblob(100), MakePoint(1, 2)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance4.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance4.testcase new file mode 100644 index 0000000..704a202 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance4.testcase @@ -0,0 +1,8 @@ +Distance - bad blob second arg +:memory: #use in-memory database +SELECT Distance(MakePoint(1, 2), zeroblob(100)) +1 # rows (not including the header row) +1 # columns +Distance(MakePoint(1, 2), zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance5.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance5.testcase new file mode 100644 index 0000000..b65dd97 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance5.testcase @@ -0,0 +1,8 @@ +Distance - non-blob first arg +:memory: #use in-memory database +SELECT Distance(3, MakePoint(1, 2)) +1 # rows (not including the header row) +1 # columns +Distance(3, MakePoint(1, 2)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance6.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance6.testcase new file mode 100644 index 0000000..9acc346 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance6.testcase @@ -0,0 +1,8 @@ +Distance - bad blob second arg +:memory: #use in-memory database +SELECT Distance(MakePoint(1, 2), "hello") +1 # rows (not including the header row) +1 # columns +Distance(MakePoint(1, 2), "hello") +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance7.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance7.testcase new file mode 100644 index 0000000..079597f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance7.testcase @@ -0,0 +1,8 @@ +Distance - parallel lines +:memory: #use in-memory database +SELECT Distance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) +1 # rows (not including the header row) +1 # columns +Distance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) +2.0 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance8.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance8.testcase new file mode 100644 index 0000000..428a43d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance8.testcase @@ -0,0 +1,8 @@ +Distance - intersecting lines +:memory: #use in-memory database +SELECT Distance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) +1 # rows (not including the header row) +1 # columns +Distance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) +0.0 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance9.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance9.testcase new file mode 100644 index 0000000..45d40a9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance9.testcase @@ -0,0 +1,8 @@ +Distance - toxic first line +:memory: #use in-memory database +SELECT Distance(GeomFromText("LINESTRING(0 0, 0 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) +1 # rows (not including the header row) +1 # columns +Distance(GeomFromText("LINESTRING(0 0, 0 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) +0.0 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance_geogr1.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr1.testcase new file mode 100644 index 0000000..68de956 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr1.testcase @@ -0,0 +1,8 @@ +Distance Long/Lat metric (great circle) - two 2D points +:memory: #use in-memory database +SELECT ST_Distance(MakePoint(11.1, 42.1), MakePoint(11.2, 42.2), 0); +1 # rows (not including the header row) +1 # columns +ST_Distance(MakePoint(11.1, 42.1), MakePoint(11.2, 42.2), 0) +13842.154368:6 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance_geogr10.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr10.testcase new file mode 100644 index 0000000..9daa21d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr10.testcase @@ -0,0 +1,8 @@ +Distance Long/Lat metric (ellipsoid) - Linestring/Polygon +:memory: #use in-memory database +SELECT ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), 1); +1 # rows (not including the header row) +1 # columns +ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), 1) +8232.9862107:6 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance_geogr11.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr11.testcase new file mode 100644 index 0000000..70e5eb3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr11.testcase @@ -0,0 +1,8 @@ +Distance Long/Lat metric (text use_ellipsoid) +:memory: #use in-memory database +SELECT ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), 'alpha') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance_geogr12.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr12.testcase new file mode 100644 index 0000000..60ace5c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr12.testcase @@ -0,0 +1,8 @@ +Distance Long/Lat metric (NULL use_ellipsoid) +:memory: #use in-memory database +SELECT ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), NULL); +1 # rows (not including the header row) +1 # columns +ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance_geogr2.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr2.testcase new file mode 100644 index 0000000..dee4826 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr2.testcase @@ -0,0 +1,8 @@ +Distance Long/Lat metric (great circle) - two 3D points +:memory: #use in-memory database +SELECT ST_Distance(MakePointZ(11.1, 42.1, 0.1), MakePointZ(11.2, 42.2, 0.2), 0); +1 # rows (not including the header row) +1 # columns +ST_Distance(MakePointZ(11.1, 42.1, 0.1), MakePointZ(11.2, 42.2, 0.2), 0) +13842.154368:6 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance_geogr3.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr3.testcase new file mode 100644 index 0000000..fc3f64f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr3.testcase @@ -0,0 +1,8 @@ +Distance Long/Lat metric (great circle) - two 2D-M points +:memory: #use in-memory database +SELECT ST_Distance(MakePointM(11.1, 42.1, 0.1), MakePointM(11.2, 42.2, 0.2), 0); +1 # rows (not including the header row) +1 # columns +ST_Distance(MakePointM(11.1, 42.1, 0.1), MakePointM(11.2, 42.2, 0.2), 0) +13842.154368:6 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance_geogr4.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr4.testcase new file mode 100644 index 0000000..40e2f2b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr4.testcase @@ -0,0 +1,8 @@ +Distance Long/Lat metric (great circle) - two 3D-M points +:memory: #use in-memory database +SELECT ST_Distance(MakePointZM(11.1, 42.1, 0.1, 1), MakePointZM(11.2, 42.2, 0.2, 2), 0); +1 # rows (not including the header row) +1 # columns +ST_Distance(MakePointZM(11.1, 42.1, 0.1, 1), MakePointZM(11.2, 42.2, 0.2, 2), 0) +13842.154368:6 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance_geogr5.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr5.testcase new file mode 100644 index 0000000..b2307c2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr5.testcase @@ -0,0 +1,8 @@ +Distance Long/Lat metric (ellipsoid) - two 2D points +:memory: #use in-memory database +SELECT ST_Distance(MakePoint(11.1, 42.1), MakePoint(11.2, 42.2), 1); +1 # rows (not including the header row) +1 # columns +ST_Distance(MakePoint(11.1, 42.1), MakePoint(11.2, 42.2), 1) +13845.545374:6 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance_geogr6.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr6.testcase new file mode 100644 index 0000000..7cf9b8b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr6.testcase @@ -0,0 +1,8 @@ +Distance Long/Lat metric (ellipsoid) - two 3D points +:memory: #use in-memory database +SELECT ST_Distance(MakePointZ(11.1, 42.1, 0.1), MakePointZ(11.2, 42.2, 0.2), 1); +1 # rows (not including the header row) +1 # columns +ST_Distance(MakePointZ(11.1, 42.1, 0.1), MakePointZ(11.2, 42.2, 0.2), 1) +13845.545374:6 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance_geogr7.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr7.testcase new file mode 100644 index 0000000..d2ced16 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr7.testcase @@ -0,0 +1,8 @@ +Distance Long/Lat metric (ellipsoid) - two 2D-M points +:memory: #use in-memory database +SELECT ST_Distance(MakePointM(11.1, 42.1, 0.1), MakePointM(11.2, 42.2, 0.2), 1); +1 # rows (not including the header row) +1 # columns +ST_Distance(MakePointM(11.1, 42.1, 0.1), MakePointM(11.2, 42.2, 0.2), 1) +13845.545374:6 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance_geogr8.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr8.testcase new file mode 100644 index 0000000..71fbab2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr8.testcase @@ -0,0 +1,8 @@ +Distance Long/Lat metric (ellipsoid) - two 3D-M points +:memory: #use in-memory database +SELECT ST_Distance(MakePointZM(11.1, 42.1, 0.1, 1), MakePointZM(11.2, 42.2, 0.2, 2), 1); +1 # rows (not including the header row) +1 # columns +ST_Distance(MakePointZM(11.1, 42.1, 0.1, 1), MakePointZM(11.2, 42.2, 0.2, 2), 1) +13845.545374:6 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/distance_geogr9.testcase b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr9.testcase new file mode 100644 index 0000000..f40384d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/distance_geogr9.testcase @@ -0,0 +1,8 @@ +Distance Long/Lat metric (great circle) - Linestring/Polygon +:memory: #use in-memory database +SELECT ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), 0); +1 # rows (not including the header row) +1 # columns +ST_Distance(GeomFromText('LINESTRING(11.1 42.1, 11.2 42.2, 11.2 43.3)'), GeomFromText('POLYGON((11.3 42.3, 11.4 42.3, 11.4 42.4, 11.3 42.4, 11.3 42.3))'), 0) +8211.259574:6 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/geoserror1.testcase b/src/spatialite/test/sql_stmt_geos_tests/geoserror1.testcase new file mode 100644 index 0000000..7859bf8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/geoserror1.testcase @@ -0,0 +1,18 @@ +GEOS_Error - valid Linestring +:memory: #use in-memory database +SELECT ST_IsValid(ST_GeomFromText('LINESTRING(1 1, 2 2)')), GEOS_GetLastWarningMsg(), GEOS_GetLastErrorMsg(), GEOS_GetLastAuxErrorMsg(), ST_AsText(GEOS_GetCriticalPointFromMsg()); +1 # rows (not including the header row) +5 # columns +ST_IsValid(ST_GeomFromText('LINESTRING(1 1, 2 2)')) +GEOS_GetLastWarningMsg() +GEOS_GetLastErrorMsg() +GEOS_GetLastAuxErrorMsg() +ST_AsText(GEOS_GetCriticalPointFromMsg()) +1 +(NULL) +(NULL) +(NULL) +(NULL) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/geoserror2.testcase b/src/spatialite/test/sql_stmt_geos_tests/geoserror2.testcase new file mode 100644 index 0000000..49c55c8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/geoserror2.testcase @@ -0,0 +1,18 @@ +GEOS_Error - valid Polygon +:memory: #use in-memory database +SELECT ST_IsValid(ST_GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')), GEOS_GetLastWarningMsg(), GEOS_GetLastErrorMsg(), GEOS_GetLastAuxErrorMsg(), ST_AsText(GEOS_GetCriticalPointFromMsg()); +1 # rows (not including the header row) +5 # columns +ST_IsValid(ST_GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) +GEOS_GetLastWarningMsg() +GEOS_GetLastErrorMsg() +GEOS_GetLastAuxErrorMsg() +ST_AsText(GEOS_GetCriticalPointFromMsg()) +1 +(NULL) +(NULL) +(NULL) +(NULL) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/geoserror3.testcase b/src/spatialite/test/sql_stmt_geos_tests/geoserror3.testcase new file mode 100644 index 0000000..949cdc3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/geoserror3.testcase @@ -0,0 +1,18 @@ +GEOS_Error - invalid Linestring (collapses to a Point) +:memory: #use in-memory database +SELECT ST_IsValid(ST_GeomFromText('LINESTRING(1 1, 1 1, 1 1)')), GEOS_GetLastWarningMsg(), GEOS_GetLastErrorMsg(), GEOS_GetLastAuxErrorMsg(), ST_AsText(GEOS_GetCriticalPointFromMsg()); +1 # rows (not including the header row) +5 # columns +ST_IsValid(ST_GeomFromText('LINESTRING(1 1, 1 1, 1 1)')) +GEOS_GetLastWarningMsg() +GEOS_GetLastErrorMsg() +GEOS_GetLastAuxErrorMsg() +ST_AsText(GEOS_GetCriticalPointFromMsg()) +0 +Too few points in geometry component at or near point 1 1 +(NULL) +(NULL) +POINT(1 1) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/geoserror4.testcase b/src/spatialite/test/sql_stmt_geos_tests/geoserror4.testcase new file mode 100644 index 0000000..95c83f3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/geoserror4.testcase @@ -0,0 +1,18 @@ +GEOS_Error - valid self-intersecting Linestring +:memory: #use in-memory database +SELECT ST_IsValid(ST_GeomFromText('LINESTRING(0 0, 2 1, 1 2, 0 1, 2 0)')), GEOS_GetLastWarningMsg(), GEOS_GetLastErrorMsg(), GEOS_GetLastAuxErrorMsg(), ST_AsText(GEOS_GetCriticalPointFromMsg()); +1 # rows (not including the header row) +5 # columns +ST_IsValid(ST_GeomFromText('LINESTRING(0 0, 2 1, 1 2, 0 1, 2 0)')) +GEOS_GetLastWarningMsg() +GEOS_GetLastErrorMsg() +GEOS_GetLastAuxErrorMsg() +ST_AsText(GEOS_GetCriticalPointFromMsg()) +1 +(NULL) +(NULL) +(NULL) +(NULL) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/geoserror5.testcase b/src/spatialite/test/sql_stmt_geos_tests/geoserror5.testcase new file mode 100644 index 0000000..bdf69b8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/geoserror5.testcase @@ -0,0 +1,18 @@ +GEOS_Error - invalid self-intersecting Polygon +:memory: #use in-memory database +SELECT ST_IsValid(ST_GeomFromText('POLYGON((0 0, 1 0, 0 1, 1 1, 0 0))')), GEOS_GetLastWarningMsg(), GEOS_GetLastErrorMsg(), GEOS_GetLastAuxErrorMsg(), ST_AsText(GEOS_GetCriticalPointFromMsg(4326)); +1 # rows (not including the header row) +5 # columns +ST_IsValid(ST_GeomFromText('POLYGON((0 0, 1 0, 0 1, 1 1, 0 0))')) +GEOS_GetLastWarningMsg() +GEOS_GetLastErrorMsg() +GEOS_GetLastAuxErrorMsg() +ST_AsText(GEOS_GetCriticalPointFromMsg(4326)) +0 +Self-intersection at or near point 0.5 0.5 +(NULL) +(NULL) +POINT(0.5 0.5) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/geoserror6.testcase b/src/spatialite/test/sql_stmt_geos_tests/geoserror6.testcase new file mode 100644 index 0000000..6be425a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/geoserror6.testcase @@ -0,0 +1,19 @@ +GEOS_Error - invalid unclosed Polygon +:memory: #use in-memory database +SELECT ST_IsValid(ST_GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1))')), GEOS_GetLastWarningMsg(), GEOS_GetLastErrorMsg(), GEOS_GetLastAuxErrorMsg(), ST_AsText(GEOS_GetCriticalPointFromMsg()); +1 # rows (not including the header row) +5 # columns +ST_IsValid(ST_GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1))')) +GEOS_GetLastWarningMsg() +GEOS_GetLastErrorMsg() +GEOS_GetLastAuxErrorMsg() +ST_AsText(GEOS_GetCriticalPointFromMsg()) +0 +(NULL) +(NULL) +gaia detected a not-closed Ring +(NULL) + + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/geoserror7.testcase b/src/spatialite/test/sql_stmt_geos_tests/geoserror7.testcase new file mode 100644 index 0000000..ec81793 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/geoserror7.testcase @@ -0,0 +1,19 @@ +GEOS_Error - invalid Polygon (collapsed to a line) +:memory: #use in-memory database +SELECT ST_IsValid(ST_GeomFromText('POLYGON((0 0, 0 0, 1 1, 0 0))')), GEOS_GetLastWarningMsg(), GEOS_GetLastErrorMsg(), GEOS_GetLastAuxErrorMsg(), ST_AsText(GEOS_GetCriticalPointFromMsg()); +1 # rows (not including the header row) +5 # columns +ST_IsValid(ST_GeomFromText('POLYGON((0 0, 0 0, 1 1, 0 0))')) +GEOS_GetLastWarningMsg() +GEOS_GetLastErrorMsg() +GEOS_GetLastAuxErrorMsg() +ST_AsText(GEOS_GetCriticalPointFromMsg()) +0 +Too few points in geometry component at or near point 0 0 +(NULL) +(NULL) +POINT(0 0) + + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance1.testcase b/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance1.testcase new file mode 100644 index 0000000..d3b1124 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance1.testcase @@ -0,0 +1,8 @@ +HausdorffDistance - parallel lines +:memory: #use in-memory database +SELECT HausdorffDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) +1 # rows (not including the header row) +1 # columns +HausdorffDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) +2.0 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance2.testcase b/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance2.testcase new file mode 100644 index 0000000..09fc1a1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance2.testcase @@ -0,0 +1,8 @@ +HausdorffDistance - bad blob first arg +:memory: #use in-memory database +SELECT HausdorffDistance(zeroblob(100), GeomFromText("LINESTRING(0 2, 10 2)")) +1 # rows (not including the header row) +1 # columns +HausdorffDistance(zeroblob(100), GeomFromText("LINESTRING(0 2, 10 2)")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance3.testcase b/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance3.testcase new file mode 100644 index 0000000..773162a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance3.testcase @@ -0,0 +1,8 @@ +HausdorffDistance - non blob first arg +:memory: #use in-memory database +SELECT HausdorffDistance(3, GeomFromText("LINESTRING(0 2, 10 2)")) +1 # rows (not including the header row) +1 # columns +HausdorffDistance(3, GeomFromText("LINESTRING(0 2, 10 2)")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance4.testcase b/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance4.testcase new file mode 100644 index 0000000..a4118a3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance4.testcase @@ -0,0 +1,8 @@ +HausdorffDistance - bad blob second arg +:memory: #use in-memory database +SELECT HausdorffDistance(GeomFromText("LINESTRING(0 0, 10 0)"), zeroblob(40)) +1 # rows (not including the header row) +1 # columns +HausdorffDistance(GeomFromText("LINESTRING(0 0, 10 0)"), zeroblob(40)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance5.testcase b/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance5.testcase new file mode 100644 index 0000000..3731e45 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance5.testcase @@ -0,0 +1,8 @@ +HausdorffDistance - non blob second arg +:memory: #use in-memory database +SELECT HausdorffDistance(GeomFromText("LINESTRING(0 0, 10 0)"), "hello") +1 # rows (not including the header row) +1 # columns +HausdorffDistance(GeomFromText("LINESTRING(0 0, 10 0)"), "hello") +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance6.testcase b/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance6.testcase new file mode 100644 index 0000000..12b4f20 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance6.testcase @@ -0,0 +1,8 @@ +HausdorffDistance - two multipoints +:memory: #use in-memory database +SELECT HausdorffDistance(GeomFromText("MULTIPOINT(0 0, 10 0)"), GeomFromText("MULTIPOINT(0 2, 10 2)")) +1 # rows (not including the header row) +1 # columns +HausdorffDistance(GeomFromText("MULTIPOINT(0 0, 10 0)"), GeomFromText("MULTIPOINT(0 2, 10 2)")) +2.0 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance7.testcase b/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance7.testcase new file mode 100644 index 0000000..57a8da2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hausdorffdistance7.testcase @@ -0,0 +1,8 @@ +HausdorffDistance - co-incident multipoints +:memory: #use in-memory database +SELECT HausdorffDistance(GeomFromText("MULTIPOINT(0 0, 10 0)"), GeomFromText("MULTIPOINT(0 0, 10 0)")) +1 # rows (not including the header row) +1 # columns +HausdorffDistance(GeomFromText("MULTIPOINT(0 0, 10 0)"), GeomFromText("MULTIPOINT(0 0, 10 0)")) +0.0 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid1.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid1.testcase new file mode 100644 index 0000000..177aaf9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid1.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - NULL geom +:memory: #use in-memory database +SELECT HexagonalGrid(NULL, 1.0); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(NULL, 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid10.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid10.testcase new file mode 100644 index 0000000..2da7a76 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid10.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Polygon geom - text edges_only +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 'alpha'); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 'alpha') +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid11.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid11.testcase new file mode 100644 index 0000000..6d85bf8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid11.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Polygon geom - double edges_only +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 4.5); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 4.5) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid12.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid12.testcase new file mode 100644 index 0000000..951db8e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid12.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Polygon geom - BLOB edges_only +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, zeroblob(4)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid13.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid13.testcase new file mode 100644 index 0000000..03ccfc9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid13.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Polygon geom - NULL origin +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, NULL); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, NULL) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid14.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid14.testcase new file mode 100644 index 0000000..f95ddd6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid14.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Polygon geom - zeroblob origin +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, zeroblob(4)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid15.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid15.testcase new file mode 100644 index 0000000..01dd250 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid15.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Polygon geom - Linestring origin +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('LINESTRING(0 0, 1 1)')); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('LINESTRING(0 0, 1 1)')) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid16.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid16.testcase new file mode 100644 index 0000000..9ad5aff --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid16.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Polygon geom - Polygon Origin +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid17.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid17.testcase new file mode 100644 index 0000000..e280184 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid17.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Polygon geom - negative size +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), -1.0); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), -1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid18.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid18.testcase new file mode 100644 index 0000000..480d9f3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid18.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Polygon geom - zero size +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 0.0); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 0.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid19.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid19.testcase new file mode 100644 index 0000000..9718588 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid19.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Polygon geom - MultiPoint Origin +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('MULTIPOINT(0 0, 1 1)')); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('MULTIPOINT(0 0, 1 1)')) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid2.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid2.testcase new file mode 100644 index 0000000..38f425a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid2.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - zeroblob geom +:memory: #use in-memory database +SELECT HexagonalGrid(zeroblob(4), 1.0); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(zeroblob(4), 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid20.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid20.testcase new file mode 100644 index 0000000..b78c96d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid20.testcase @@ -0,0 +1,7 @@ +HexagonalGrid - valid - with Origin +:memory: #use in-memory database +SELECT AsText(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 0, GeomFromText('POINT(0.1 0.1)'))); +1 # rows (not including the header row) +1 # columns +AsText(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 0, GeomFromText('POINT(0.1 0.1)'))) +MULTIPOLYGON(((0.1 0.966025, 0.6 0.1, 1.6 0.1, 2.1 0.966025, 1.6 1.832051, 0.6 1.832051, 0.1 0.966025)), ((1.6 1.832051, 2.1 0.966025, 3.1 0.966025, 3.6 1.832051, 3.1 2.698076, 2.1 2.698076, 1.6 1.832051))) diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid21.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid21.testcase new file mode 100644 index 0000000..4642174 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid21.testcase @@ -0,0 +1,10 @@ +HexagonalGrid - valid - no Origin +:memory: #use in-memory database +SELECT AsText(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0)); +1 # rows (not including the header row) +1 # columns +AsText(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0)) +MULTIPOLYGON(((0 0.866025, 0.5 0, 1.5 0, 2 0.866025, 1.5 1.732051, 0.5 1.732051, 0 0.866025)), ((1.5 1.732051, 2 0.866025, 3 0.866025, 3.5 1.732051, 3 2.598076, 2 2.598076, 1.5 1.732051))) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid22.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid22.testcase new file mode 100644 index 0000000..f887c40 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid22.testcase @@ -0,0 +1,7 @@ +HexagonalGrid - valid - with Origin, edges_only +:memory: #use in-memory database +SELECT ST_Length(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1, GeomFromText('POINT(0.1 0.1)'))); +1 # rows (not including the header row) +1 # columns +ST_Length(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1, GeomFromText('POINT(0.1 0.1)'))) +12.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid23.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid23.testcase new file mode 100644 index 0000000..4978418 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid23.testcase @@ -0,0 +1,7 @@ +HexagonalGrid - valid - no Origin, edges_only +:memory: #use in-memory database +SELECT ST_Length(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1)); +1 # rows (not including the header row) +1 # columns +ST_Length(HexagonalGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1)) +11.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid3.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid3.testcase new file mode 100644 index 0000000..9a307de --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid3.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Point geom +:memory: #use in-memory database +SELECT HexagonalGrid(MakePoint(1, 1, 4326), 1.0); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(MakePoint(1, 1, 4326), 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid4.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid4.testcase new file mode 100644 index 0000000..d29a67a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid4.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Linestring geom +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('LINESTRING(1 1, 2 2)', 4326), 1.0); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('LINESTRING(1 1, 2 2)', 4326), 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid5.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid5.testcase new file mode 100644 index 0000000..cde71cb --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid5.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Collection (Point - Polygon) geom +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid6.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid6.testcase new file mode 100644 index 0000000..efe7980 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid6.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Collection (Linestring - Polygon) geom +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 2 2), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 2 2), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid7.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid7.testcase new file mode 100644 index 0000000..6d849ce --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid7.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Polygon geom - NULL size +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), NULL); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), NULL) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid8.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid8.testcase new file mode 100644 index 0000000..273dd19 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid8.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Polygon geom - alpha size +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 'alpha'); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 'alpha') +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/hexgrid9.testcase b/src/spatialite/test/sql_stmt_geos_tests/hexgrid9.testcase new file mode 100644 index 0000000..a863d24 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/hexgrid9.testcase @@ -0,0 +1,9 @@ +HexagonalGrid - Polygon geom - NULL edges_only +:memory: #use in-memory database +SELECT HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, NULL); +1 # rows (not including the header row) +1 # columns +HexagonalGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, NULL) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint1.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint1.testcase new file mode 100644 index 0000000..5ccbd95 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint1.testcase @@ -0,0 +1,7 @@ +interpolate equidistant points - basic line +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), 0.5)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), 0.5)) +MULTIPOINT M(0.428746 0.257248 0.5, 0.857493 0.514496 1, 1.286239 0.771744 1.5, 1.714986 1.028992 2, 2.143732 1.286239 2.5, 2.572479 1.543487 3, 3.001225 1.800735 3.5, 3.429972 2.057983 4, 3.858718 2.315231 4.5, 4.287465 2.572479 5, 4.716211 2.829727 5.5, 5.144958 3.086975 6, 5.573704 3.344222 6.5, 6.00245 3.60147 7, 6.431197 3.858718 7.5, 6.859943 4.115966 8, 7.28869 4.373214 8.5, 7.717436 4.630462 9, 8.146183 4.88771 9.5, 8.574929 5.144958 10, 9.003676 5.402205 10.5, 9.432422 5.659453 11, 9.861169 5.916701 11.5) diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint10.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint10.testcase new file mode 100644 index 0000000..a11dd52 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint10.testcase @@ -0,0 +1,7 @@ +interpolate equidistant points - wrong geometry type +:memory: #use in-memory database +SELECT Line_Interpolate_Equidistant_Points(GeomFromText("POLYGON((0 0, 10 6, 10 0, 0 0))"), 0.6) +1 # rows (not including the header row) +1 # columns +Line_Interpolate_Equidistant_Points(GeomFromText("POLYGON((0 0, 10 6, 10 0, 0 0))"), 0.6) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint11.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint11.testcase new file mode 100644 index 0000000..efccde5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint11.testcase @@ -0,0 +1,7 @@ +interpolate equidistant points - wrong geometry type +:memory: #use in-memory database +SELECT Line_Interpolate_Equidistant_Points(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),POLYGON((0 0, 10 0, 10 10, 0 0)))"), 0.6) +1 # rows (not including the header row) +1 # columns +Line_Interpolate_Equidistant_Points(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),POLYGON((0 0, 10 0, 10 10, 0 0)))"), 0.6) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint12.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint12.testcase new file mode 100644 index 0000000..875a201 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint12.testcase @@ -0,0 +1,7 @@ +interpolate equidistant points - basic lineZ +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRINGZ(0 0 4, 10 6 14)"), 2.5)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRINGZ(0 0 4, 10 6 14)"), 2.5)) +MULTIPOINT ZM(2.143732 1.286239 6.143732 2.5, 4.287465 2.572479 8.287465 5, 6.431197 3.858718 10.431197 7.5, 8.574929 5.144958 12.574929 10) diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint13.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint13.testcase new file mode 100644 index 0000000..33da445 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint13.testcase @@ -0,0 +1,7 @@ +interpolate equidistant points - basic lineZM +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRINGZM(0 0 4 2, 10 6 14 12)"), 2.5)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRINGZM(0 0 4 2, 10 6 14 12)"), 2.5)) +MULTIPOINT ZM(2.143732 1.286239 6.143732 2.5, 4.287465 2.572479 8.287465 5, 6.431197 3.858718 10.431197 7.5, 8.574929 5.144958 12.574929 10) diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint14.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint14.testcase new file mode 100644 index 0000000..c0d3afc --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint14.testcase @@ -0,0 +1,7 @@ +interpolate equidistant points - basic lineM +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRINGM(0 0 4, 10 6 14)"), 2.5)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRINGM(0 0 4, 10 6 14)"), 2.5)) +MULTIPOINT M(2.143732 1.286239 2.5, 4.287465 2.572479 5, 6.431197 3.858718 7.5, 8.574929 5.144958 10) diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint2.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint2.testcase new file mode 100644 index 0000000..2d6b39a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint2.testcase @@ -0,0 +1,7 @@ +interpolate equidistant points - basic line +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), 5)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), 5)) +MULTIPOINT M(4.287465 2.572479 5, 8.574929 5.144958 10) diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint3.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint3.testcase new file mode 100644 index 0000000..446b627 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint3.testcase @@ -0,0 +1,7 @@ +interpolate equidistant points - basic line, exceding distance +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 1 1)"), 3)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 1 1)"), 3)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint4.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint4.testcase new file mode 100644 index 0000000..c3f3b55 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint4.testcase @@ -0,0 +1,7 @@ +interpolate equidistant points - basic line, zero distance +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), 0)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint5.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint5.testcase new file mode 100644 index 0000000..20b54e7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint5.testcase @@ -0,0 +1,7 @@ +interpolate equidistant points - basic line, negative distance +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), -1)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), -1)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint6.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint6.testcase new file mode 100644 index 0000000..0b19efe --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint6.testcase @@ -0,0 +1,7 @@ +interpolate equidistant points - bad blob +:memory: #use in-memory database +SELECT Line_Interpolate_Equidistant_Points(zeroblob(100), 0.5) +1 # rows (not including the header row) +1 # columns +Line_Interpolate_Equidistant_Points(zeroblob(100), 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint7.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint7.testcase new file mode 100644 index 0000000..ecbcbff --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint7.testcase @@ -0,0 +1,7 @@ +interpolate equidistant points - non-blob +:memory: #use in-memory database +SELECT Line_Interpolate_Equidistant_Points("hello", 0.5) +1 # rows (not including the header row) +1 # columns +Line_Interpolate_Equidistant_Points("hello", 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint8.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint8.testcase new file mode 100644 index 0000000..35e7063 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint8.testcase @@ -0,0 +1,7 @@ +interpolate equidistant points - non-number +:memory: #use in-memory database +SELECT Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), "hello") +1 # rows (not including the header row) +1 # columns +Line_Interpolate_Equidistant_Points(GeomFromText("LINESTRING(0 0, 10 6)"), "hello") +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint9.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint9.testcase new file mode 100644 index 0000000..5888a60 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolateequidistantpoint9.testcase @@ -0,0 +1,7 @@ +interpolate equidistant points - wrong geometry type +:memory: #use in-memory database +SELECT Line_Interpolate_Equidistant_Points(GeomFromText("POINT(10 6)"), 0.6) +1 # rows (not including the header row) +1 # columns +Line_Interpolate_Equidistant_Points(GeomFromText("POINT(10 6)"), 0.6) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint1.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint1.testcase new file mode 100644 index 0000000..601dad5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint1.testcase @@ -0,0 +1,7 @@ +interpolate point - basic line +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 0.5)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 0.5)) +POINT(5 3) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint10.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint10.testcase new file mode 100644 index 0000000..5dc03e1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint10.testcase @@ -0,0 +1,7 @@ +interpolate point - wrong geometry type +:memory: #use in-memory database +SELECT Line_Interpolate_Point(GeomFromText("POLYGON((0 0, 10 6, 10 0, 0 0))"), 0.6) +1 # rows (not including the header row) +1 # columns +Line_Interpolate_Point(GeomFromText("POLYGON((0 0, 10 6, 10 0, 0 0))"), 0.6) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint11.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint11.testcase new file mode 100644 index 0000000..fa7b66f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint11.testcase @@ -0,0 +1,7 @@ +interpolate point - wrong geometry type +:memory: #use in-memory database +SELECT Line_Interpolate_Point(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),POLYGON((0 0, 10 0, 10 10, 0 0)))"), 0.6) +1 # rows (not including the header row) +1 # columns +Line_Interpolate_Point(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),POLYGON((0 0, 10 0, 10 10, 0 0)))"), 0.6) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint12.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint12.testcase new file mode 100644 index 0000000..7fae3b2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint12.testcase @@ -0,0 +1,7 @@ +interpolate point - basic lineZ +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRINGZ(0 0 4, 10 6 14)"), 0.5)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Point(GeomFromText("LINESTRINGZ(0 0 4, 10 6 14)"), 0.5)) +POINT Z(5 3 9) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint13.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint13.testcase new file mode 100644 index 0000000..4a483ef --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint13.testcase @@ -0,0 +1,7 @@ +interpolate point - basic lineZM +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRINGZM(0 0 4 2, 10 6 14 12)"), 0.5)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Point(GeomFromText("LINESTRINGZM(0 0 4 2, 10 6 14 12)"), 0.5)) +POINT ZM(5 3 9 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint14.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint14.testcase new file mode 100644 index 0000000..409c1d6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint14.testcase @@ -0,0 +1,7 @@ +interpolate point - basic lineM +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRINGM(0 0 4, 10 6 14)"), 0.5)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Point(GeomFromText("LINESTRINGM(0 0 4, 10 6 14)"), 0.5)) +POINT M(5 3 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint2.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint2.testcase new file mode 100644 index 0000000..601dad5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint2.testcase @@ -0,0 +1,7 @@ +interpolate point - basic line +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 0.5)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 0.5)) +POINT(5 3) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint3.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint3.testcase new file mode 100644 index 0000000..f451b8b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint3.testcase @@ -0,0 +1,7 @@ +interpolate point - basic line, endpoint +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 1)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 1)) +POINT(10 6) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint4.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint4.testcase new file mode 100644 index 0000000..7ba55dc --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint4.testcase @@ -0,0 +1,7 @@ +interpolate point - basic line, out of range +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), -1)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), -1)) +POINT(0 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint5.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint5.testcase new file mode 100644 index 0000000..cefaa84 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint5.testcase @@ -0,0 +1,7 @@ +interpolate point - basic line, out of range +:memory: #use in-memory database +SELECT AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 1.6)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), 1.6)) +POINT(10 6) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint6.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint6.testcase new file mode 100644 index 0000000..4a2bcfe --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint6.testcase @@ -0,0 +1,7 @@ +interpolate point - bad blob +:memory: #use in-memory database +SELECT Line_Interpolate_Point(zeroblob(100), 0.5) +1 # rows (not including the header row) +1 # columns +Line_Interpolate_Point(zeroblob(100), 0.5) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint7.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint7.testcase new file mode 100644 index 0000000..09a53e5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint7.testcase @@ -0,0 +1,7 @@ +interpolate point - non-blob +:memory: #use in-memory database +SELECT Line_Interpolate_Point("hello", 0.5) +1 # rows (not including the header row) +1 # columns +Line_Interpolate_Point("hello", 0.5) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint8.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint8.testcase new file mode 100644 index 0000000..84b61e2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint8.testcase @@ -0,0 +1,7 @@ +interpolate point - non-number +:memory: #use in-memory database +SELECT Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), "hello") +1 # rows (not including the header row) +1 # columns +Line_Interpolate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), "hello") +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint9.testcase b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint9.testcase new file mode 100644 index 0000000..fcabedc --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/interpolatepoint9.testcase @@ -0,0 +1,7 @@ +interpolate point - wrong geometry type +:memory: #use in-memory database +SELECT Line_Interpolate_Point(GeomFromText("POINT(10 6)"), 0.6) +1 # rows (not including the header row) +1 # columns +Line_Interpolate_Point(GeomFromText("POINT(10 6)"), 0.6) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection1.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection1.testcase new file mode 100644 index 0000000..97d22dc --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/intersection1.testcase @@ -0,0 +1,8 @@ +intersection - two points +:memory: #use in-memory database +SELECT AsText(Intersection(Makepoint(1,2), MakePoint(2,3))); +1 # rows (not including the header row) +1 # columns +AsText(Intersection(Makepoint(1,2), MakePoint(2,3))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection10.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection10.testcase new file mode 100644 index 0000000..31b6428 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/intersection10.testcase @@ -0,0 +1,8 @@ +intersection - POLYGONM, POINTM +:memory: #use in-memory database +SELECT AsText(Intersection(GeomFromText("POLYGONM((0 0 1, 4 0 1, 4 4 1, 0 4 1, 0 0 1))"), GeomFromText("POINT M(0 3 1)"))) +1 # rows (not including the header row) +1 # columns +AsText(Intersection(GeomFromText("POLYGONM((0 0 1, 4 0 1, 4 4 1, 0 4 1, 0 0 1))"), GeomFromText("POINT M(0 3 1)"))) +POINT M(0 3 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection11.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection11.testcase new file mode 100644 index 0000000..73e1e03 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/intersection11.testcase @@ -0,0 +1,8 @@ +intersection - POLYGONZM, POINTZM +:memory: #use in-memory database +SELECT AsText(Intersection(GeomFromText("POLYGONZM((0 0 1 4, 4 0 1 2, 4 4 1 4, 0 4 1 2, 0 0 1 4))"), GeomFromText("POINTZM(0 3 1 4)"))) +1 # rows (not including the header row) +1 # columns +AsText(Intersection(GeomFromText("POLYGONZM((0 0 1 4, 4 0 1 2, 4 4 1 4, 0 4 1 2, 0 0 1 4))"), GeomFromText("POINTZM(0 3 1 4)"))) +POINT ZM(0 3 1 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection12.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection12.testcase new file mode 100644 index 0000000..c9df9b0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/intersection12.testcase @@ -0,0 +1,8 @@ +intersection - POLYGONZM, POINTZM, non-intersecting +:memory: #use in-memory database +SELECT AsText(Intersection(GeomFromText("POLYGONZM((0 0 1 4, 4 0 1 2, 4 4 1 4, 0 4 1 2, 0 0 1 4))"), GeomFromText("POINTZM(-1 3 1 4)"))) +1 # rows (not including the header row) +1 # columns +AsText(Intersection(GeomFromText("POLYGONZM((0 0 1 4, 4 0 1 2, 4 4 1 4, 0 4 1 2, 0 0 1 4))"), GeomFromText("POINTZM(-1 3 1 4)"))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection2.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection2.testcase new file mode 100644 index 0000000..299136f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/intersection2.testcase @@ -0,0 +1,8 @@ +intersection - two common points +:memory: #use in-memory database +SELECT AsText(Intersection(Makepoint(1,2), MakePoint(1,2))); +1 # rows (not including the header row) +1 # columns +AsText(Intersection(Makepoint(1,2), MakePoint(1,2))) +POINT(1 2) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection3.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection3.testcase new file mode 100644 index 0000000..c12c16e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/intersection3.testcase @@ -0,0 +1,8 @@ +intersection - null first point +:memory: #use in-memory database +SELECT AsText(Intersection(null, MakePoint(2,3))); +1 # rows (not including the header row) +1 # columns +AsText(Intersection(null, MakePoint(2,3))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection4.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection4.testcase new file mode 100644 index 0000000..96baf31 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/intersection4.testcase @@ -0,0 +1,8 @@ +intersection - null second point +:memory: #use in-memory database +SELECT AsText(Intersection(MakePoint(2,3), null)); +1 # rows (not including the header row) +1 # columns +AsText(Intersection(MakePoint(2,3), null)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection5.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection5.testcase new file mode 100644 index 0000000..c80f329 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/intersection5.testcase @@ -0,0 +1,8 @@ +intersection - zeroblob second point +:memory: #use in-memory database +SELECT AsText(Intersection(MakePoint(2,3), zeroblob(48))); +1 # rows (not including the header row) +1 # columns +AsText(Intersection(MakePoint(2,3), zeroblob(48))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection6.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection6.testcase new file mode 100644 index 0000000..aba1f2c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/intersection6.testcase @@ -0,0 +1,8 @@ +intersection - zeroblob first point +:memory: #use in-memory database +SELECT AsText(Intersection(zeroblob(48), MakePoint(2,3))); +1 # rows (not including the header row) +1 # columns +AsText(Intersection(zeroblob(48), MakePoint(2,3))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection7.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection7.testcase new file mode 100644 index 0000000..3db7f7c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/intersection7.testcase @@ -0,0 +1,8 @@ +intersection - toxic first point +:memory: #use in-memory database +SELECT AsText(Intersection(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))); +1 # rows (not including the header row) +1 # columns +AsText(Intersection(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection8.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection8.testcase new file mode 100644 index 0000000..c71c001 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/intersection8.testcase @@ -0,0 +1,8 @@ +intersection - toxic second point +:memory: #use in-memory database +SELECT AsText(Intersection(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))); +1 # rows (not including the header row) +1 # columns +AsText(Intersection(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/intersection9.testcase b/src/spatialite/test/sql_stmt_geos_tests/intersection9.testcase new file mode 100644 index 0000000..6d1763e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/intersection9.testcase @@ -0,0 +1,8 @@ +intersection - POLYGONZ, POINT +:memory: #use in-memory database +SELECT AsText(Intersection(GeomFromText("POLYGONZ((0 0 1, 4 0 1, 4 4 1, 0 4 1, 0 0 1))"), GeomFromText("POINT Z(0 3 1)"))) +1 # rows (not including the header row) +1 # columns +AsText(Intersection(GeomFromText("POLYGONZ((0 0 1, 4 0 1, 4 4 1, 0 4 1, 0 0 1))"), GeomFromText("POINT Z(0 3 1)"))) +POINT Z(0 3 1) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed1.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed1.testcase new file mode 100644 index 0000000..79ca1a4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isclosed1.testcase @@ -0,0 +1,7 @@ +isclosed1 +:memory: #use in-memory database +SELECT IsClosed(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35)")); +1 # rows (not including the header row) +1 # columns +IsClosed(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35)")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed10.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed10.testcase new file mode 100644 index 0000000..56d7f25 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isclosed10.testcase @@ -0,0 +1,7 @@ +isclosed - multilinestring, first not closed +:memory: #use in-memory database +SELECT IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35.4),(10 10, 0 10, 0 0, 10 10))")) +1 # rows (not including the header row) +1 # columns +IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35.4),(10 10, 0 10, 0 0, 10 10))")) +0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed2.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed2.testcase new file mode 100644 index 0000000..f9b28f5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isclosed2.testcase @@ -0,0 +1,8 @@ +isclosed2 +:memory: #use in-memory database +SELECT IsClosed(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")); +1 # rows (not including the header row) +1 # columns +IsClosed(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) +0 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed3.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed3.testcase new file mode 100644 index 0000000..9e6ebaa --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isclosed3.testcase @@ -0,0 +1,7 @@ +isclosed3 +:memory: #use in-memory database +SELECT IsClosed(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -36)")); +1 # rows (not including the header row) +1 # columns +IsClosed(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -36)")) +0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed4.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed4.testcase new file mode 100644 index 0000000..8373258 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isclosed4.testcase @@ -0,0 +1,7 @@ +isclosed4 +:memory: #use in-memory database +SELECT IsClosed(zeroblob(10)); +1 # rows (not including the header row) +1 # columns +IsClosed(zeroblob(10)) +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed5.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed5.testcase new file mode 100644 index 0000000..964755f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isclosed5.testcase @@ -0,0 +1,7 @@ +isclosed5 +:memory: #use in-memory database +SELECT IsClosed(3); +1 # rows (not including the header row) +1 # columns +IsClosed(3) +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed6.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed6.testcase new file mode 100644 index 0000000..d9729ba --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isclosed6.testcase @@ -0,0 +1,7 @@ +isclosed - multilinestring, one linestring +:memory: #use in-memory database +SELECT IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -36))")) +1 # rows (not including the header row) +1 # columns +IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -36))")) +0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed7.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed7.testcase new file mode 100644 index 0000000..ddf3f32 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isclosed7.testcase @@ -0,0 +1,7 @@ +isclosed - multilinestring +:memory: #use in-memory database +SELECT IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")) +1 # rows (not including the header row) +1 # columns +IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed8.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed8.testcase new file mode 100644 index 0000000..7017a94 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isclosed8.testcase @@ -0,0 +1,7 @@ +isclosed - multilinestring, both closed +:memory: #use in-memory database +SELECT IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35),(10 10, 0 10, 0 0, 10 10))")) +1 # rows (not including the header row) +1 # columns +IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35),(10 10, 0 10, 0 0, 10 10))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isclosed9.testcase b/src/spatialite/test/sql_stmt_geos_tests/isclosed9.testcase new file mode 100644 index 0000000..3abb6e2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isclosed9.testcase @@ -0,0 +1,7 @@ +isclosed - multilinestring, second not closed +:memory: #use in-memory database +SELECT IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35),(1 10, 0 10, 0 0, 10 10))")) +1 # rows (not including the header row) +1 # columns +IsClosed(GeomFromText("MULTILINESTRING((136 -35, 135.2 -34.5, 136 -35.2, 136 -35),(1 10, 0 10, 0 0, 10 10))")) +0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring1.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring1.testcase new file mode 100644 index 0000000..f321ac4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isring1.testcase @@ -0,0 +1,7 @@ +isring1 +:memory: #use in-memory database +SELECT IsRing(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35)")); +1 # rows (not including the header row) +1 # columns +IsRing(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35)")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring2.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring2.testcase new file mode 100644 index 0000000..b124da9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isring2.testcase @@ -0,0 +1,8 @@ +isring2 +:memory: #use in-memory database +SELECT IsRing(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")); +1 # rows (not including the header row) +1 # columns +IsRing(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) +-1 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring3.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring3.testcase new file mode 100644 index 0000000..dfc61bd --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isring3.testcase @@ -0,0 +1,7 @@ +isring3 +:memory: #use in-memory database +SELECT IsRing("hello"); +1 # rows (not including the header row) +1 # columns +IsRing("hello") +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring4.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring4.testcase new file mode 100644 index 0000000..4c87475 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isring4.testcase @@ -0,0 +1,7 @@ +isring4 +:memory: #use in-memory database +SELECT IsRing(zeroblob(10)); +1 # rows (not including the header row) +1 # columns +IsRing(zeroblob(10)) +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring5.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring5.testcase new file mode 100644 index 0000000..e589f04 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isring5.testcase @@ -0,0 +1,7 @@ +isring1 - LINESTRINGZ +:memory: #use in-memory database +SELECT IsRing(GeomFromText("LINESTRINGZ(1 1 3, 2 1 4, 2 2 5, 1 2 4, 1 1 3)")) +1 # rows (not including the header row) +1 # columns +IsRing(GeomFromText("LINESTRINGZ(1 1 3, 2 1 4, 2 2 5, 1 2 4, 1 1 3)")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring6.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring6.testcase new file mode 100644 index 0000000..34a18ba --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isring6.testcase @@ -0,0 +1,7 @@ +isring1 - LINESTRINGM +:memory: #use in-memory database +SELECT IsRing(GeomFromText("LINESTRINGM(1 1 3, 2 1 4, 2 2 5, 1 2 4, 1 1 3)")) +1 # rows (not including the header row) +1 # columns +IsRing(GeomFromText("LINESTRINGM(1 1 3, 2 1 4, 2 2 5, 1 2 4, 1 1 3)")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring7.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring7.testcase new file mode 100644 index 0000000..5cdd4ab --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isring7.testcase @@ -0,0 +1,7 @@ +isring1 - LINESTRINGZM +:memory: #use in-memory database +SELECT IsRing(GeomFromText("LINESTRINGZM(1 1 3 4, 2 1 4 9, 2 2 5 4, 1 2 4 3, 1 1 3 1)")) +1 # rows (not including the header row) +1 # columns +IsRing(GeomFromText("LINESTRINGZM(1 1 3 4, 2 1 4 9, 2 2 5 4, 1 2 4 3, 1 1 3 1)")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring8.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring8.testcase new file mode 100644 index 0000000..784ce0b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isring8.testcase @@ -0,0 +1,7 @@ +isring1 - LINESTRINGZM, non-ring +:memory: #use in-memory database +SELECT IsRing(GeomFromText("LINESTRINGZM(1 1 3 4, 2 1 4 9, 2 2 5 4, 1 2 4 3)")) +1 # rows (not including the header row) +1 # columns +IsRing(GeomFromText("LINESTRINGZM(1 1 3 4, 2 1 4 9, 2 2 5 4, 1 2 4 3)")) +0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isring9.testcase b/src/spatialite/test/sql_stmt_geos_tests/isring9.testcase new file mode 100644 index 0000000..56a0808 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isring9.testcase @@ -0,0 +1,7 @@ +isring9 - toxic ring +:memory: #use in-memory database +SELECT IsRing(GeomFromText("LINESTRING(1 1, 1 1, 1 1, 1 1, 1 1)")) +1 # rows (not including the header row) +1 # columns +IsRing(GeomFromText("LINESTRING(1 1, 1 1, 1 1, 1 1, 1 1)")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/issimple1.testcase b/src/spatialite/test/sql_stmt_geos_tests/issimple1.testcase new file mode 100644 index 0000000..a61bff3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/issimple1.testcase @@ -0,0 +1,7 @@ +issimple1 +:memory: #use in-memory database +SELECT IsSimple(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")); +1 # rows (not including the header row) +1 # columns +IsSimple(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/issimple2.testcase b/src/spatialite/test/sql_stmt_geos_tests/issimple2.testcase new file mode 100644 index 0000000..6a9dbc4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/issimple2.testcase @@ -0,0 +1,8 @@ +issimple2 +:memory: #use in-memory database +SELECT IsSimple(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")); +1 # rows (not including the header row) +1 # columns +IsSimple(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) +1 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/issimple3.testcase b/src/spatialite/test/sql_stmt_geos_tests/issimple3.testcase new file mode 100644 index 0000000..14ccb64 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/issimple3.testcase @@ -0,0 +1,7 @@ +issimple3 +:memory: #use in-memory database +SELECT IsSimple(GeomFromText("POLYGON()")); +1 # rows (not including the header row) +1 # columns +IsSimple(GeomFromText("POLYGON()")) +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/issimple4.testcase b/src/spatialite/test/sql_stmt_geos_tests/issimple4.testcase new file mode 100644 index 0000000..22a1f9f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/issimple4.testcase @@ -0,0 +1,7 @@ +issimple4 +:memory: #use in-memory database +SELECT IsSimple(zeroblob(10)); +1 # rows (not including the header row) +1 # columns +IsSimple(zeroblob(10)) +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/issimple5.testcase b/src/spatialite/test/sql_stmt_geos_tests/issimple5.testcase new file mode 100644 index 0000000..c331ee0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/issimple5.testcase @@ -0,0 +1,7 @@ +issimple5 +:memory: #use in-memory database +SELECT IsSimple("hello"); +1 # rows (not including the header row) +1 # columns +IsSimple("hello") +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/issimple6.testcase b/src/spatialite/test/sql_stmt_geos_tests/issimple6.testcase new file mode 100644 index 0000000..aa8530d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/issimple6.testcase @@ -0,0 +1,7 @@ +IsSimple - GeometryCollection, single point +:memory: #use in-memory database +SELECT IsSimple(GeomFromText("GEOMETRYCOLLECTION(POINT(1 2))")) +1 # rows (not including the header row) +1 # columns +IsSimple(GeomFromText("GEOMETRYCOLLECTION(POINT(1 2))")) +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid1.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid1.testcase new file mode 100644 index 0000000..beaf998 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid1.testcase @@ -0,0 +1,7 @@ +isvalid1 +:memory: #use in-memory database +SELECT IsValid(zeroblob(10)); +1 # rows (not including the header row) +1 # columns +IsValid(zeroblob(10)) +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid10.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid10.testcase new file mode 100644 index 0000000..c0b6b9a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid10.testcase @@ -0,0 +1,7 @@ +isvalid (MULTYPOLYGONZM with hole) +:memory: #use in-memory database +SELECT IsValid(GeomFromText("MULTIPOLYGONZM(((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 4, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 4, 11 11 100 1)), ((20 20 110 11, 21 20 111 12, 21 21 112 13, 20 21 113 14, 20 20 110 11)))")); +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("MULTIPOLYGONZM(((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 4, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 4, 11 11 100 1)), ((20 20 110 11, 21 20 111 12, 21 21 112 13, 20 21 113 14, 20 20 110 11)))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid11.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid11.testcase new file mode 100644 index 0000000..4cc136d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid11.testcase @@ -0,0 +1,7 @@ +isvalid (POLYGON Z with hole) +:memory: #use in-memory database +SELECT IsValid(GeomFromText("POLYGONZ((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100))")); +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("POLYGONZ((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid12.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid12.testcase new file mode 100644 index 0000000..20ab52c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid12.testcase @@ -0,0 +1,7 @@ +isvalid (POLYGONM with hole) +:memory: #use in-memory database +SELECT IsValid(GeomFromText("POLYGONM((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1))")); +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("POLYGONM((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid13.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid13.testcase new file mode 100644 index 0000000..35582c4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid13.testcase @@ -0,0 +1,7 @@ +isvalid (POLYGONZM with hole) +:memory: #use in-memory database +SELECT IsValid(GeomFromText("POLYGONZM((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 4, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 4, 11 11 100 1))")); +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("POLYGONZM((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 4, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 4, 11 11 100 1))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid14.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid14.testcase new file mode 100644 index 0000000..793e837 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid14.testcase @@ -0,0 +1,7 @@ +isvalid Geometry Collection of one polygon +:memory: #use in-memory database +SELECT IsValid(GeomFromText("GEOMETRYCOLLECTION(POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)))")) +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("GEOMETRYCOLLECTION(POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid15.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid15.testcase new file mode 100644 index 0000000..f1c510f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid15.testcase @@ -0,0 +1,7 @@ +isvalid Geometry Collection of two polygons +:memory: #use in-memory database +SELECT IsValid(GeomFromText("GEOMETRYCOLLECTION(POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("GEOMETRYCOLLECTION(POLYGON((0 0, 10 0, 10 10, 0 10, 0 0)),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid16.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid16.testcase new file mode 100644 index 0000000..1e78885 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid16.testcase @@ -0,0 +1,7 @@ +isvalid Geometry Collection of point and polygon +:memory: #use in-memory database +SELECT IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid17.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid17.testcase new file mode 100644 index 0000000..5f5002c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid17.testcase @@ -0,0 +1,7 @@ +isvalid Geometry Collection of point and linestring +:memory: #use in-memory database +SELECT IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(1 1, 4 1, 4 4, 1 4, 1 1))")) +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),LINESTRING(1 1, 4 1, 4 4, 1 4, 1 1))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid18.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid18.testcase new file mode 100644 index 0000000..bdca2b8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid18.testcase @@ -0,0 +1,7 @@ +isvalid Geometry Collection of two points and linestring +:memory: #use in-memory database +SELECT IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),POINT(3 4),LINESTRING(1 1, 4 1, 4 4, 1 4, 1 1))")) +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),POINT(3 4),LINESTRING(1 1, 4 1, 4 4, 1 4, 1 1))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid19.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid19.testcase new file mode 100644 index 0000000..7056b91 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid19.testcase @@ -0,0 +1,7 @@ +isvalid Geometry Collection of two points and a polygon +:memory: #use in-memory database +SELECT IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),POINT(3 4),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("GEOMETRYCOLLECTION(POINT(0 0),POINT(3 4),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid2.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid2.testcase new file mode 100644 index 0000000..27c34fe --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid2.testcase @@ -0,0 +1,7 @@ +isvalid2 +:memory: #use in-memory database +SELECT IsValid(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")); +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid20.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid20.testcase new file mode 100644 index 0000000..126f898 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid20.testcase @@ -0,0 +1,7 @@ +isvalid Geometry Collection of two lines and a polygon +:memory: #use in-memory database +SELECT IsValid(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(0 0, 4 1),LINESTRING(3 4, 4 6),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(0 0, 4 1),LINESTRING(3 4, 4 6),POLYGON((1 1, 4 1, 4 4, 1 4, 1 1)))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid3.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid3.testcase new file mode 100644 index 0000000..98249aa --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid3.testcase @@ -0,0 +1,7 @@ +isvalid3 +:memory: #use in-memory database +SELECT IsValid(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")); +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid4.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid4.testcase new file mode 100644 index 0000000..39381e1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid4.testcase @@ -0,0 +1,7 @@ +isvalid4 +:memory: #use in-memory database +SELECT IsValid(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")); +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) +0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid5.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid5.testcase new file mode 100644 index 0000000..7fec46b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid5.testcase @@ -0,0 +1,7 @@ +isvalid5 +:memory: #use in-memory database +SELECT IsValid("hello"); +1 # rows (not including the header row) +1 # columns +IsValid("hello") +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid6.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid6.testcase new file mode 100644 index 0000000..89733ad --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid6.testcase @@ -0,0 +1,7 @@ +isvalid6 +:memory: #use in-memory database +SELECT IsValid(GeomFromText("POLYGON()")); +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("POLYGON()")) +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid7.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid7.testcase new file mode 100644 index 0000000..6ee79b2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid7.testcase @@ -0,0 +1,7 @@ +isvalid (MULTYPOLYGON with hole) +:memory: #use in-memory database +SELECT IsValid(GeomFromText("MULTIPOLYGON(((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11)), ((20 20, 21 20, 21 21, 20 21, 20 20)))")); +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("MULTIPOLYGON(((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11)), ((20 20, 21 20, 21 21, 20 21, 20 20)))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid8.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid8.testcase new file mode 100644 index 0000000..ea037ab --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid8.testcase @@ -0,0 +1,7 @@ +isvalid (MULTYPOLYGON Z with hole) +:memory: #use in-memory database +SELECT IsValid(GeomFromText("MULTIPOLYGONZ(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100)), ((20 20 110, 21 20 111, 21 21 112, 20 21 113, 20 20 110)))")); +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("MULTIPOLYGONZ(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100)), ((20 20 110, 21 20 111, 21 21 112, 20 21 113, 20 20 110)))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalid9.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalid9.testcase new file mode 100644 index 0000000..8715da4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalid9.testcase @@ -0,0 +1,7 @@ +isvalid (MULTYPOLYGONM with hole) +:memory: #use in-memory database +SELECT IsValid(GeomFromText("MULTIPOLYGONM(((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1)), ((20 20 2, 21 20 3, 21 21 4, 20 21 5, 20 20 2)))")); +1 # rows (not including the header row) +1 # columns +IsValid(GeomFromText("MULTIPOLYGONM(((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1)), ((20 20 2, 21 20 3, 21 21 4, 20 21 5, 20 20 2)))")) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvaliddetail1.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvaliddetail1.testcase new file mode 100644 index 0000000..9a65f17 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvaliddetail1.testcase @@ -0,0 +1,7 @@ +isvaliddetail1 +:memory: #use in-memory database +SELECT IsValidDetail(zeroblob(10)); +1 # rows (not including the header row) +1 # columns +IsValidDetail(zeroblob(10)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvaliddetail2.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvaliddetail2.testcase new file mode 100644 index 0000000..814e046 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvaliddetail2.testcase @@ -0,0 +1,7 @@ +isvaliddetail2 +:memory: #use in-memory database +SELECT IsValidDetail(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")); +1 # rows (not including the header row) +1 # columns +IsValidDetail(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvaliddetail3.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvaliddetail3.testcase new file mode 100644 index 0000000..51220d4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvaliddetail3.testcase @@ -0,0 +1,7 @@ +isvaliddetail3 +:memory: #use in-memory database +SELECT IsValidDetail(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")); +1 # rows (not including the header row) +1 # columns +IsValidDetail(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvaliddetail4.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvaliddetail4.testcase new file mode 100644 index 0000000..9c8377a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvaliddetail4.testcase @@ -0,0 +1,7 @@ +isvaliddetail4 +:memory: #use in-memory database +SELECT IsValidDetail(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")); +1 # rows (not including the header row) +1 # columns +IsValidDetail(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvaliddetail5.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvaliddetail5.testcase new file mode 100644 index 0000000..f39c312 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvaliddetail5.testcase @@ -0,0 +1,7 @@ +isvaliddetail5 +:memory: #use in-memory database +SELECT AsText(IsValidDetail(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5, 136 -35))"))); +1 # rows (not including the header row) +1 # columns +AsText(IsValidDetail(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5, 136 -35))"))) +POINT(135.2 -34.5) diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalidreason1.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalidreason1.testcase new file mode 100644 index 0000000..f2235ca --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalidreason1.testcase @@ -0,0 +1,7 @@ +isvalidreason1 +:memory: #use in-memory database +SELECT IsValidReason(zeroblob(10)); +1 # rows (not including the header row) +1 # columns +IsValidReason(zeroblob(10)) +Invalid: NULL Geometry diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalidreason2.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalidreason2.testcase new file mode 100644 index 0000000..1050a30 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalidreason2.testcase @@ -0,0 +1,7 @@ +isvalidreason2 +:memory: #use in-memory database +SELECT IsValidReason(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")); +1 # rows (not including the header row) +1 # columns +IsValidReason(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")) +Valid Geometry diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalidreason3.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalidreason3.testcase new file mode 100644 index 0000000..ce0d158 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalidreason3.testcase @@ -0,0 +1,7 @@ +isvalidreason3 +:memory: #use in-memory database +SELECT IsValidReason(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")); +1 # rows (not including the header row) +1 # columns +IsValidReason(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35))")) +Valid Geometry diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalidreason4.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalidreason4.testcase new file mode 100644 index 0000000..f5675e1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalidreason4.testcase @@ -0,0 +1,7 @@ +isvalidreason4 +:memory: #use in-memory database +SELECT IsValidReason(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")); +1 # rows (not including the header row) +1 # columns +IsValidReason(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) +Invalid: Unclosed Rings were detected diff --git a/src/spatialite/test/sql_stmt_geos_tests/isvalidreason5.testcase b/src/spatialite/test/sql_stmt_geos_tests/isvalidreason5.testcase new file mode 100644 index 0000000..a73343b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/isvalidreason5.testcase @@ -0,0 +1,7 @@ +isvalidreason5 +:memory: #use in-memory database +SELECT IsValidReason(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5, 136 -35))")); +1 # rows (not including the header row) +1 # columns +IsValidReason(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5, 136 -35))")) +Self-intersection[135.2 -34.5] diff --git a/src/spatialite/test/sql_stmt_geos_tests/linemerge1.testcase b/src/spatialite/test/sql_stmt_geos_tests/linemerge1.testcase new file mode 100644 index 0000000..c98c289 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linemerge1.testcase @@ -0,0 +1,8 @@ +linemerge - bad blob +:memory: #use in-memory database +SELECT LineMerge(zeroblob(44)) +1 # rows (not including the header row) +1 # columns +LineMerge(zeroblob(44)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linemerge10.testcase b/src/spatialite/test/sql_stmt_geos_tests/linemerge10.testcase new file mode 100644 index 0000000..239f95c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linemerge10.testcase @@ -0,0 +1,9 @@ +linemerge - weird linestring +:memory: #use in-memory database +SELECT AsText(LineMerge(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5)"))) +1 # rows (not including the header row) +1 # columns +AsText(LineMerge(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5)"))) +LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linemerge2.testcase b/src/spatialite/test/sql_stmt_geos_tests/linemerge2.testcase new file mode 100644 index 0000000..10d4fa6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linemerge2.testcase @@ -0,0 +1,8 @@ +linemerge - non-blob +:memory: #use in-memory database +SELECT LineMerge(44) +1 # rows (not including the header row) +1 # columns +LineMerge(44) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linemerge3.testcase b/src/spatialite/test/sql_stmt_geos_tests/linemerge3.testcase new file mode 100644 index 0000000..5dfc403 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linemerge3.testcase @@ -0,0 +1,8 @@ +linemerge - single line +:memory: #use in-memory database +SELECT AsText(LineMerge(GeomFromText("LINESTRING(0 0, 2 3)"))) +1 # rows (not including the header row) +1 # columns +AsText(LineMerge(GeomFromText("LINESTRING(0 0, 2 3)"))) +LINESTRING(0 0, 2 3) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linemerge4.testcase b/src/spatialite/test/sql_stmt_geos_tests/linemerge4.testcase new file mode 100644 index 0000000..1c5e1a2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linemerge4.testcase @@ -0,0 +1,8 @@ +linemerge - single line Z +:memory: #use in-memory database +SELECT AsText(LineMerge(GeomFromText("LINESTRINGZ(0 0 1, 2 3 3)"))) +1 # rows (not including the header row) +1 # columns +AsText(LineMerge(GeomFromText("LINESTRINGZ(0 0 1, 2 3 3)"))) +LINESTRING Z(0 0 1, 2 3 3) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linemerge5.testcase b/src/spatialite/test/sql_stmt_geos_tests/linemerge5.testcase new file mode 100644 index 0000000..9d5907a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linemerge5.testcase @@ -0,0 +1,8 @@ +linemerge - POINT +:memory: #use in-memory database +SELECT AsText(LineMerge(GeomFromText("POINT(3 3)"))) +1 # rows (not including the header row) +1 # columns +AsText(LineMerge(GeomFromText("POINT(3 3)"))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linemerge6.testcase b/src/spatialite/test/sql_stmt_geos_tests/linemerge6.testcase new file mode 100644 index 0000000..b941fcf --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linemerge6.testcase @@ -0,0 +1,8 @@ +linemerge - GEOMETRY COLLECTION +:memory: #use in-memory database +SELECT AsText(LineMerge(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),LINESTRING(1 2, 3 4))"))) +1 # rows (not including the header row) +1 # columns +AsText(LineMerge(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),LINESTRING(1 2, 3 4))"))) +LINESTRING(0 1, 1 2, 3 4) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linemerge7.testcase b/src/spatialite/test/sql_stmt_geos_tests/linemerge7.testcase new file mode 100644 index 0000000..b1e8d65 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linemerge7.testcase @@ -0,0 +1,8 @@ +linemerge - GEOMETRY COLLECTION M +:memory: #use in-memory database +SELECT AsText(LineMerge(GeomFromText("GeometryCollectionM(LINESTRINGM(0 1 0, 1 2 0),LINESTRINGM(1 2 0, 3 4 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(LineMerge(GeomFromText("GeometryCollectionM(LINESTRINGM(0 1 0, 1 2 0),LINESTRINGM(1 2 0, 3 4 0))"))) +LINESTRING M(0 1 0, 1 2 0, 3 4 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linemerge8.testcase b/src/spatialite/test/sql_stmt_geos_tests/linemerge8.testcase new file mode 100644 index 0000000..324609e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linemerge8.testcase @@ -0,0 +1,8 @@ +linemerge - GEOMETRY COLLECTION ZM +:memory: #use in-memory database +SELECT AsText(LineMerge(GeomFromText("GeometryCollectionZM(LINESTRINGZM(0 1 1 0, 1 2 1 0),LINESTRINGZM(1 2 1 0, 3 4 1 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(LineMerge(GeomFromText("GeometryCollectionZM(LINESTRINGZM(0 1 1 0, 1 2 1 0),LINESTRINGZM(1 2 1 0, 3 4 1 0))"))) +LINESTRING ZM(0 1 1 0, 1 2 1 0, 3 4 1 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linemerge9.testcase b/src/spatialite/test/sql_stmt_geos_tests/linemerge9.testcase new file mode 100644 index 0000000..5c61128 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linemerge9.testcase @@ -0,0 +1,9 @@ +linemerge - toxic blob +:memory: #use in-memory database +SELECT AsText(LineMerge(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) +1 # rows (not including the header row) +1 # columns +AsText(LineMerge(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes1.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes1.testcase new file mode 100644 index 0000000..859dc9a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes1.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - line, non-node +:memory: #use in-memory database +SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("POINT(0 5)"))) +1 # rows (not including the header row) +1 # columns +AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("POINT(0 5)"))) +LINESTRING(0 0, 0 10, 10 10, 10 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes10.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes10.testcase new file mode 100644 index 0000000..bcb8d1b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes10.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - non-blob first arg +:memory: #use in-memory database +SELECT LinesCutAtNodes(6.3 ,GeomFromText("MULTIPOINT(0 10, 10 10)")) +1 # rows (not including the header row) +1 # columns +LinesCutAtNodes(6.3 ,GeomFromText("MULTIPOINT(0 10, 10 10)")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes11.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes11.testcase new file mode 100644 index 0000000..aff28c3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes11.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - non-blob second arg +:memory: #use in-memory database +SELECT LinesCutAtNodes(GeomFromText("MULTIPOINT(0 10, 10 10)"), "get") +1 # rows (not including the header row) +1 # columns +LinesCutAtNodes(GeomFromText("MULTIPOINT(0 10, 10 10)"), "get") +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes12.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes12.testcase new file mode 100644 index 0000000..60e8683 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes12.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - zeroblob second arg +:memory: #use in-memory database +SELECT LinesCutAtNodes(GeomFromText("MULTIPOINT(0 10, 10 10)"), zeroblob(100)) +1 # rows (not including the header row) +1 # columns +LinesCutAtNodes(GeomFromText("MULTIPOINT(0 10, 10 10)"), zeroblob(100)) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes13.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes13.testcase new file mode 100644 index 0000000..6c42921 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes13.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - zeroblob first arg +:memory: #use in-memory database +SELECT LinesCutAtNodes(zeroblob(100), GeomFromText("MULTIPOINT(0 10, 10 10)")) +1 # rows (not including the header row) +1 # columns +LinesCutAtNodes(zeroblob(100), GeomFromText("MULTIPOINT(0 10, 10 10)")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes14.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes14.testcase new file mode 100644 index 0000000..c33a674 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes14.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - point first arg +:memory: #use in-memory database +SELECT LinesCutAtNodes(GeomFromText("MULTIPOINT(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("MULTIPOINT(0 10, 10 10)")) +1 # rows (not including the header row) +1 # columns +LinesCutAtNodes(GeomFromText("MULTIPOINT(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("MULTIPOINT(0 10, 10 10)")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes15.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes15.testcase new file mode 100644 index 0000000..0bc7a1f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes15.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - closed linestring, lines second arg +:memory: #use in-memory database +SELECT LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("LINESTRING(0 10, 10 10)")) +1 # rows (not including the header row) +1 # columns +LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("LINESTRING(0 10, 10 10)")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes16.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes16.testcase new file mode 100644 index 0000000..9aaf39d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes16.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - closed linestring, polygon second arg +:memory: #use in-memory database +SELECT LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("POLYGON((1 1, 1 2, 2 2, 2 1, 1 1))")) +1 # rows (not including the header row) +1 # columns +LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("POLYGON((1 1, 1 2, 2 2, 2 1, 1 1))")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes17.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes17.testcase new file mode 100644 index 0000000..b4c08c5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes17.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - closed linestringZ, nodes +:memory: #use in-memory database +SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRINGZ(0 0 1, 0 10 1, 10 10 1, 10 0 1, 0 0 1)"),GeomFromText("MULTIPOINTZ(0 10 1, 10 10 1)"))) +1 # rows (not including the header row) +1 # columns +AsText(LinesCutAtNodes(GeomFromText("LINESTRINGZ(0 0 1, 0 10 1, 10 10 1, 10 0 1, 0 0 1)"),GeomFromText("MULTIPOINTZ(0 10 1, 10 10 1)"))) +MULTILINESTRING Z((10 10 1, 10 0 1, 0 0 1, 0 10 1), (0 10 1, 10 10 1)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes18.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes18.testcase new file mode 100644 index 0000000..7703af5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes18.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - closed linestringM, nodes +:memory: #use in-memory database +SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRINGM(0 0 1, 0 10 1, 10 10 1, 10 0 1, 0 0 1)"),GeomFromText("MULTIPOINTM(0 10 1, 10 10 1)"))) +1 # rows (not including the header row) +1 # columns +AsText(LinesCutAtNodes(GeomFromText("LINESTRINGM(0 0 1, 0 10 1, 10 10 1, 10 0 1, 0 0 1)"),GeomFromText("MULTIPOINTM(0 10 1, 10 10 1)"))) +MULTILINESTRING M((10 10 1, 10 0 1, 0 0 1, 0 10 1), (0 10 1, 10 10 1)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes19.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes19.testcase new file mode 100644 index 0000000..0eacbbf --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes19.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - closed linestringZM, nodes +:memory: #use in-memory database +SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRINGZM(0 0 1 4, 0 10 1 2, 10 10 1 6, 10 0 1 3, 0 0 1 4)"),GeomFromText("MULTIPOINTZM(0 10 1 2, 10 10 1 6)"))) +1 # rows (not including the header row) +1 # columns +AsText(LinesCutAtNodes(GeomFromText("LINESTRINGZM(0 0 1 4, 0 10 1 2, 10 10 1 6, 10 0 1 3, 0 0 1 4)"),GeomFromText("MULTIPOINTZM(0 10 1 2, 10 10 1 6)"))) +MULTILINESTRING ZM((10 10 1 6, 10 0 1 3, 0 0 1 4, 0 10 1 2), (0 10 1 2, 10 10 1 6)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes2.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes2.testcase new file mode 100644 index 0000000..1fbd609 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes2.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - line, node +:memory: #use in-memory database +SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("POINT(0 10)"))) +1 # rows (not including the header row) +1 # columns +AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("POINT(0 10)"))) +MULTILINESTRING((0 0, 0 10), (0 10, 10 10, 10 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes3.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes3.testcase new file mode 100644 index 0000000..45fd72d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes3.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - line, multinodes +:memory: #use in-memory database +SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 10, 0 4, 3 10)"))) +1 # rows (not including the header row) +1 # columns +AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 10, 0 4, 3 10)"))) +MULTILINESTRING((0 0, 0 10), (0 10, 10 10, 10 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes4.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes4.testcase new file mode 100644 index 0000000..7fa4cdf --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes4.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - line, multinodes +:memory: #use in-memory database +SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 10, 0 4, 3 10, 10 10)"))) +1 # rows (not including the header row) +1 # columns +AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 10, 0 4, 3 10, 10 10)"))) +MULTILINESTRING((0 0, 0 10), (0 10, 10 10), (10 10, 10 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes5.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes5.testcase new file mode 100644 index 0000000..133c00e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes5.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - line, endnodes +:memory: #use in-memory database +SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 0, 10 0)"))) +1 # rows (not including the header row) +1 # columns +AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 0, 10 0)"))) +LINESTRING(0 0, 0 10, 10 10, 10 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes6.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes6.testcase new file mode 100644 index 0000000..672c878 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes6.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - line, co-incident nodes +:memory: #use in-memory database +SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 10, 0 10)"))) +1 # rows (not including the header row) +1 # columns +AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINT(0 10, 0 10)"))) +MULTILINESTRING((0 0, 0 10), (0 10, 10 10, 10 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes7.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes7.testcase new file mode 100644 index 0000000..6b95416 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes7.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - line, wrong geometry +:memory: #use in-memory database +SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINTZ(0 10 0)"))) +1 # rows (not including the header row) +1 # columns +AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0)"),GeomFromText("MULTIPOINTZ(0 10 0)"))) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes8.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes8.testcase new file mode 100644 index 0000000..bc1ea32 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes8.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - polygon, nodes +:memory: #use in-memory database +SELECT AsText(LinesCutAtNodes(GeomFromText("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))"),GeomFromText("MULTIPOINT(0 10, 10 10)"))) +1 # rows (not including the header row) +1 # columns +AsText(LinesCutAtNodes(GeomFromText("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))"),GeomFromText("MULTIPOINT(0 10, 10 10)"))) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesnodes9.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesnodes9.testcase new file mode 100644 index 0000000..8dbb509 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesnodes9.testcase @@ -0,0 +1,7 @@ +LinesCutAtNodes - closed linestring, nodes +:memory: #use in-memory database +SELECT AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("MULTIPOINT(0 10, 10 10)"))) +1 # rows (not including the header row) +1 # columns +AsText(LinesCutAtNodes(GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"),GeomFromText("MULTIPOINT(0 10, 10 10)"))) +MULTILINESTRING((10 10, 10 0, 0 0, 0 10), (0 10, 10 10)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring1.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring1.testcase new file mode 100644 index 0000000..cd3aecb --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring1.testcase @@ -0,0 +1,8 @@ +linesubstring - basic +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRINGZ(0 0 10, 10 0 10)"), 0, 0.4)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRINGZ(0 0 10, 10 0 10)"), 0, 0.4)) +LINESTRING Z(0 0 10, 4 0 10) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring10.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring10.testcase new file mode 100644 index 0000000..089b170 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring10.testcase @@ -0,0 +1,8 @@ +linesubstring - geometry collection - line +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("GeometryCollection(LINESTRING(0 0, 1 2))"), 0.2, 0.6)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("GeometryCollection(LINESTRING(0 0, 1 2))"), 0.2, 0.6)) +LINESTRING(0.2 0.4, 0.6 1.2) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring11.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring11.testcase new file mode 100644 index 0000000..87ace1e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring11.testcase @@ -0,0 +1,8 @@ +linesubstring - bad blob +:memory: #use in-memory database +SELECT AsText(Line_Substring(zeroblob(10), 0.2, 0.6)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(zeroblob(10), 0.2, 0.6)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring12.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring12.testcase new file mode 100644 index 0000000..fc70b13 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring12.testcase @@ -0,0 +1,8 @@ +linesubstring - geometry collection - point +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("GeometryCollection(POINT(1 2))"), 0.2, 0.6)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("GeometryCollection(POINT(1 2))"), 0.2, 0.6)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring13.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring13.testcase new file mode 100644 index 0000000..2f70ce4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring13.testcase @@ -0,0 +1,8 @@ +linesubstring - geometry collection - polygon +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("GeometryCollection(POLYGON((0 0, 1 0, 1 2, 0 2, 0 0)))"), 0.2, 0.6)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("GeometryCollection(POLYGON((0 0, 1 0, 1 2, 0 2, 0 0)))"), 0.2, 0.6)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring14.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring14.testcase new file mode 100644 index 0000000..161d41d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring14.testcase @@ -0,0 +1,8 @@ +linesubstring - geometry collection - polygon and linestring +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("GeometryCollection(LINESTRING(0 0, 10 0),POLYGON((0 0, 1 0, 1 2, 0 2, 0 0)))"), 0.2, 0.6)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("GeometryCollection(LINESTRING(0 0, 10 0),POLYGON((0 0, 1 0, 1 2, 0 2, 0 0)))"), 0.2, 0.6)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring15.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring15.testcase new file mode 100644 index 0000000..bd030c5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring15.testcase @@ -0,0 +1,8 @@ +linesubstring - basic vary Z +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRINGZ(0 0 0, 10 0 5)"), 0.2, 0.7)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRINGZ(0 0 0, 10 0 5)"), 0.2, 0.7)) +LINESTRING Z(2 0 1, 7 0 3.5) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring16.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring16.testcase new file mode 100644 index 0000000..8b62cb7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring16.testcase @@ -0,0 +1,8 @@ +linesubstring - basic vary M +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRINGM(0 0 0, 10 0 5)"), 0.2, 0.7)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRINGM(0 0 0, 10 0 5)"), 0.2, 0.7)) +LINESTRING M(2 0 0, 7 0 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring17.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring17.testcase new file mode 100644 index 0000000..ff58bca --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring17.testcase @@ -0,0 +1,8 @@ +linesubstring - basic vary ZM +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 10 5, 10 0 5 0)"), 0.2, 0.7)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 10 5, 10 0 5 0)"), 0.2, 0.7)) +LINESTRING ZM(2 0 9 0, 7 0 6.5 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring18.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring18.testcase new file mode 100644 index 0000000..d2b5656 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring18.testcase @@ -0,0 +1,8 @@ +linesubstring - ignoring second segment +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0, 10 10)"), 0, 0.2)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0, 10 10)"), 0, 0.2)) +LINESTRING(0 0, 4 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring19.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring19.testcase new file mode 100644 index 0000000..abcdb9d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring19.testcase @@ -0,0 +1,8 @@ +linesubstring - using second segment +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0, 10 10)"), 0.6, 0.8)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0, 10 10)"), 0.6, 0.8)) +LINESTRING(10 2, 10 6) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring2.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring2.testcase new file mode 100644 index 0000000..14dfe09 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring2.testcase @@ -0,0 +1,8 @@ +linesubstring - basic +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 0.2, 0.6)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 0.2, 0.6)) +LINESTRING(2 0, 6 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring20.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring20.testcase new file mode 100644 index 0000000..02d0307 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring20.testcase @@ -0,0 +1,8 @@ +linesubstring - using both segments +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0, 10 10)"), 0.2, 0.8)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0, 10 10)"), 0.2, 0.8)) +LINESTRING(4 0, 10 0, 10 6) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring21.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring21.testcase new file mode 100644 index 0000000..ac758c6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring21.testcase @@ -0,0 +1,8 @@ +linesubstring - using both segments M +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRINGM(0 0 0, 10 0 0, 10 10 0)"), 0.2, 0.8)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRINGM(0 0 0, 10 0 0, 10 10 0)"), 0.2, 0.8)) +LINESTRING M(4 0 0, 10 0 0, 10 6 0) # yeah, it would have been m = 0.0 anyway. + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring22.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring22.testcase new file mode 100644 index 0000000..fa22b98 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring22.testcase @@ -0,0 +1,8 @@ +linesubstring - using both segments ZM +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 1 0, 10 0 1 0, 10 10 1 0)"), 0.2, 0.8)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 1 0, 10 0 1 0, 10 10 1 0)"), 0.2, 0.8)) +LINESTRING ZM(4 0 1 0, 10 0 1 0, 10 6 1 0) # yeah, it would have been m = 0.0 anyway. + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring23.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring23.testcase new file mode 100644 index 0000000..fb25cee --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring23.testcase @@ -0,0 +1,8 @@ +linesubstring - using no segments ZM +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 1 0, 10 0 1 0, 10 10 1 0)"), 0, 0)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 1 0, 10 0 1 0, 10 10 1 0)"), 0, 0)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring24.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring24.testcase new file mode 100644 index 0000000..3c89399 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring24.testcase @@ -0,0 +1,8 @@ +linesubstring - zero length +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 1 0, 0 0 2 2, 0 0 3 4)"), 0, 1)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRINGZM(0 0 1 0, 0 0 2 2, 0 0 3 4)"), 0, 1)) +LINESTRING ZM(0 0 1 0, 0 0 1 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring25.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring25.testcase new file mode 100644 index 0000000..6b84643 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring25.testcase @@ -0,0 +1,8 @@ +linesubstring - zero length 2d +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRING(1 1, 1 1)"), 0, 1)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRING(1 1, 1 1)"), 0, 1)) +LINESTRING(1 1, 1 1) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring26.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring26.testcase new file mode 100644 index 0000000..4941058 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring26.testcase @@ -0,0 +1,8 @@ +linesubstring - using both segments Z +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRINGZ(0 0 0, 10 0 0, 10 10 0)"), 0.2, 0.8)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRINGZ(0 0 0, 10 0 0, 10 10 0)"), 0.2, 0.8)) +LINESTRING Z(4 0 0, 10 0 0, 10 6 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring3.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring3.testcase new file mode 100644 index 0000000..fb12e0c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring3.testcase @@ -0,0 +1,8 @@ +linesubstring - int limits +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 0, 1)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 0, 1)) +LINESTRING(0 0, 10 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring4.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring4.testcase new file mode 100644 index 0000000..8b854de --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring4.testcase @@ -0,0 +1,9 @@ +linesubstring - out-of-range limits +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), -1, 2)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), -1, 2)) +LINESTRING(0 0, 10 0) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring5.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring5.testcase new file mode 100644 index 0000000..e829fbf --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring5.testcase @@ -0,0 +1,8 @@ +linesubstring - bad geom +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("POINT(0 0"), 0.2, 0.6)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("POINT(0 0"), 0.2, 0.6)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring6.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring6.testcase new file mode 100644 index 0000000..5d9a5a3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring6.testcase @@ -0,0 +1,8 @@ +linesubstring - bad arg +:memory: #use in-memory database +SELECT AsText(Line_Substring(null, 0.2, 0.6)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(null, 0.2, 0.6)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring7.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring7.testcase new file mode 100644 index 0000000..183bd42 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring7.testcase @@ -0,0 +1,9 @@ +linesubstring - out-of-range limits 2 +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 2, -0.5)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 2, -0.5)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring8.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring8.testcase new file mode 100644 index 0000000..81f7840 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring8.testcase @@ -0,0 +1,9 @@ +linesubstring - wrong type of limits 1 +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), "hello", null)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), "hello", null)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/linesubstring9.testcase b/src/spatialite/test/sql_stmt_geos_tests/linesubstring9.testcase new file mode 100644 index 0000000..d113c82 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/linesubstring9.testcase @@ -0,0 +1,9 @@ +linesubstring - wrong type of limits 2 +:memory: #use in-memory database +SELECT AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 0, null)) +1 # rows (not including the header row) +1 # columns +AsText(Line_Substring(GeomFromText("LINESTRING(0 0, 10 0)"), 0, null)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/locatepoint1.testcase b/src/spatialite/test/sql_stmt_geos_tests/locatepoint1.testcase new file mode 100644 index 0000000..f180ea9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/locatepoint1.testcase @@ -0,0 +1,7 @@ +locate point - basic line +:memory: #use in-memory database +SELECT Line_Locate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), GeomFromText("POINT(5 3)")) +1 # rows (not including the header row) +1 # columns +Line_Locate_Point(GeomFromText("LINESTRING(0 0, 10 6)"), GeomFromText("POINT(5 3)")) +0.5 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/locatepoint10.testcase b/src/spatialite/test/sql_stmt_geos_tests/locatepoint10.testcase new file mode 100644 index 0000000..60bbf82 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/locatepoint10.testcase @@ -0,0 +1,7 @@ +locate point - NULL first arg +:memory: #use in-memory database +SELECT Line_Locate_Point(NULL, GeomFromText("GeometryCollection(POINT(0 1),LINESTRING(0 0, 10 0, 10 10, 0 0))")) +1 # rows (not including the header row) +1 # columns +Line_Locate_Point(NULL, GeomFromText("GeometryCollection(POINT(0 1),LINESTRING(0 0, 10 0, 10 10, 0 0))")) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/locatepoint11.testcase b/src/spatialite/test/sql_stmt_geos_tests/locatepoint11.testcase new file mode 100644 index 0000000..73cf83c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/locatepoint11.testcase @@ -0,0 +1,7 @@ +locate point - bad blob first arg +:memory: #use in-memory database +SELECT Line_Locate_Point(zeroblob(100), GeomFromText("POINT(0 1)")) +1 # rows (not including the header row) +1 # columns +Line_Locate_Point(zeroblob(100), GeomFromText("POINT(0 1)")) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/locatepoint12.testcase b/src/spatialite/test/sql_stmt_geos_tests/locatepoint12.testcase new file mode 100644 index 0000000..7d3a246 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/locatepoint12.testcase @@ -0,0 +1,7 @@ +locate point - bad blob second arg +:memory: #use in-memory database +SELECT Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 1)"), zeroblob(47)) +1 # rows (not including the header row) +1 # columns +Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 1)"), zeroblob(47)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/locatepoint2.testcase b/src/spatialite/test/sql_stmt_geos_tests/locatepoint2.testcase new file mode 100644 index 0000000..6d8a61e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/locatepoint2.testcase @@ -0,0 +1,7 @@ +locate point - POLYGON first arg +:memory: #use in-memory database +SELECT Line_Locate_Point(GeomFromText("POLYGON((0 0, 10 10, 0 10, 0 0))"), GeomFromText("POINT(5 3)")) +1 # rows (not including the header row) +1 # columns +Line_Locate_Point(GeomFromText("POLYGON((0 0, 10 10, 0 10, 0 0))"), GeomFromText("POINT(5 3)")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/locatepoint3.testcase b/src/spatialite/test/sql_stmt_geos_tests/locatepoint3.testcase new file mode 100644 index 0000000..3014705 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/locatepoint3.testcase @@ -0,0 +1,7 @@ +locate point - POINT first arg +:memory: #use in-memory database +SELECT Line_Locate_Point(GeomFromText("POINT(0 0)"), GeomFromText("POINT(5 3)")) +1 # rows (not including the header row) +1 # columns +Line_Locate_Point(GeomFromText("POINT(0 0)"), GeomFromText("POINT(5 3)")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/locatepoint4.testcase b/src/spatialite/test/sql_stmt_geos_tests/locatepoint4.testcase new file mode 100644 index 0000000..97bb03a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/locatepoint4.testcase @@ -0,0 +1,7 @@ +locate point - GeomCollection first arg +:memory: #use in-memory database +SELECT Line_Locate_Point(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),POLYGON((0 0, 10 0, 10 10, 0 0)))"), GeomFromText("POINT(5 3)")) +1 # rows (not including the header row) +1 # columns +Line_Locate_Point(GeomFromText("GeometryCollection(LINESTRING(0 1, 1 2),POLYGON((0 0, 10 0, 10 10, 0 0)))"), GeomFromText("POINT(5 3)")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/locatepoint5.testcase b/src/spatialite/test/sql_stmt_geos_tests/locatepoint5.testcase new file mode 100644 index 0000000..8100389 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/locatepoint5.testcase @@ -0,0 +1,7 @@ +locate point - LINESTRING second arg +:memory: #use in-memory database +SELECT Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("LINESTRING(10 0, 0 10)")) +1 # rows (not including the header row) +1 # columns +Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("LINESTRING(10 0, 0 10)")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/locatepoint6.testcase b/src/spatialite/test/sql_stmt_geos_tests/locatepoint6.testcase new file mode 100644 index 0000000..2242aeb --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/locatepoint6.testcase @@ -0,0 +1,7 @@ +locate point - POLYGON second arg +:memory: #use in-memory database +SELECT Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("POLYGON((10 0, 0 10, 0 0, 10 0))")) +1 # rows (not including the header row) +1 # columns +Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("POLYGON((10 0, 0 10, 0 0, 10 0))")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/locatepoint7.testcase b/src/spatialite/test/sql_stmt_geos_tests/locatepoint7.testcase new file mode 100644 index 0000000..8243b46 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/locatepoint7.testcase @@ -0,0 +1,7 @@ +locate point - GeometryCollection second arg +:memory: #use in-memory database +SELECT Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("GeometryCollection(POINT(0 1),POLYGON((0 0, 10 0, 10 10, 0 0)))")) +1 # rows (not including the header row) +1 # columns +Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("GeometryCollection(POINT(0 1),POLYGON((0 0, 10 0, 10 10, 0 0)))")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/locatepoint8.testcase b/src/spatialite/test/sql_stmt_geos_tests/locatepoint8.testcase new file mode 100644 index 0000000..56bceba --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/locatepoint8.testcase @@ -0,0 +1,7 @@ +locate point - GeometryCollection second arg +:memory: #use in-memory database +SELECT Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("GeometryCollection(POINT(0 1),LINESTRING(0 0, 10 0, 10 10, 0 0))")) +1 # rows (not including the header row) +1 # columns +Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), GeomFromText("GeometryCollection(POINT(0 1),LINESTRING(0 0, 10 0, 10 10, 0 0))")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/locatepoint9.testcase b/src/spatialite/test/sql_stmt_geos_tests/locatepoint9.testcase new file mode 100644 index 0000000..37d59ab --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/locatepoint9.testcase @@ -0,0 +1,7 @@ +locate point - NULL second arg +:memory: #use in-memory database +SELECT Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), NULL) +1 # rows (not including the header row) +1 # columns +Line_Locate_Point(GeomFromText("LINESTRING(0 1, 1 2)"), NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/makearc15.testcase b/src/spatialite/test/sql_stmt_geos_tests/makearc15.testcase new file mode 100644 index 0000000..ca1bceb --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makearc15.testcase @@ -0,0 +1,8 @@ +makearc14 - valid +:memory: #use in-memory database +SELECT ST_Length(MakeArc(0, 0, 100, 30, 60)); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeArc(0, 0, 100, 30, 60)) +52.2934:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makearc19.testcase b/src/spatialite/test/sql_stmt_geos_tests/makearc19.testcase new file mode 100644 index 0000000..47e0bf1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makearc19.testcase @@ -0,0 +1,8 @@ +makearc19 - WGS84 srid +:memory: #use in-memory database +SELECT ST_Length(MakeArc(0, 0, 100, 30, 60, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeArc(0, 0, 100, 30, 60, 4326)) +52.2934:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makearc23.testcase b/src/spatialite/test/sql_stmt_geos_tests/makearc23.testcase new file mode 100644 index 0000000..3822603 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makearc23.testcase @@ -0,0 +1,8 @@ +makearc23 - valid step +:memory: #use in-memory database +SELECT ST_Length(MakeArc(0.0, 0.0, 100.0, 30.0, 60.0, 4326, 1.0)); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeArc(0.0, 0.0, 100.0, 30.0, 60.0, 4326, 1.0)) +52.3592:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makecircle10.testcase b/src/spatialite/test/sql_stmt_geos_tests/makecircle10.testcase new file mode 100644 index 0000000..c4ccd6a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makecircle10.testcase @@ -0,0 +1,8 @@ +makecircle10 - valid +:memory: #use in-memory database +SELECT ST_Length(MakeCircle(0, 0, 100)); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeCircle(0, 0, 100)) +627.5213:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makecircle11.testcase b/src/spatialite/test/sql_stmt_geos_tests/makecircle11.testcase new file mode 100644 index 0000000..abd4395 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makecircle11.testcase @@ -0,0 +1,8 @@ +makecircle11 - NULL srid +:memory: #use in-memory database +SELECT ST_Length(MakeCircle(0, 0, 100, NULL)); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeCircle(0, 0, 100, NULL)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makecircle12.testcase b/src/spatialite/test/sql_stmt_geos_tests/makecircle12.testcase new file mode 100644 index 0000000..35c992f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makecircle12.testcase @@ -0,0 +1,8 @@ +makecircle12 - text srid +:memory: #use in-memory database +SELECT ST_Length(MakeCircle(0, 0, 100, 'alpha')); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeCircle(0, 0, 100, 'alpha')) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makecircle13.testcase b/src/spatialite/test/sql_stmt_geos_tests/makecircle13.testcase new file mode 100644 index 0000000..5ce974b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makecircle13.testcase @@ -0,0 +1,8 @@ +makecircle13 - BLOB srid +:memory: #use in-memory database +SELECT ST_Length(MakeCircle(0, 0, 100, zeroblob(4))); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeCircle(0, 0, 100, zeroblob(4))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makecircle14.testcase b/src/spatialite/test/sql_stmt_geos_tests/makecircle14.testcase new file mode 100644 index 0000000..b279df6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makecircle14.testcase @@ -0,0 +1,8 @@ +makecircle14 - WGS84 srid +:memory: #use in-memory database +SELECT ST_Length(MakeCircle(0, 0, 100, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeCircle(0, 0, 100, 4326)) +627.5213:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makecircle15.testcase b/src/spatialite/test/sql_stmt_geos_tests/makecircle15.testcase new file mode 100644 index 0000000..3719494 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makecircle15.testcase @@ -0,0 +1,8 @@ +makecircle15 - NULL step +:memory: #use in-memory database +SELECT ST_Length(MakeCircle(0, 0, 100, 4326, NULL)); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeCircle(0, 0, 100, 4326, NULL)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makecircle16.testcase b/src/spatialite/test/sql_stmt_geos_tests/makecircle16.testcase new file mode 100644 index 0000000..ea85e6d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makecircle16.testcase @@ -0,0 +1,8 @@ +makecircle16 - text step +:memory: #use in-memory database +SELECT ST_Length(MakeCircle(0, 0, 100, 4326, 'alpha')); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeCircle(0, 0, 100, 4326, 'alpha')) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makecircle17.testcase b/src/spatialite/test/sql_stmt_geos_tests/makecircle17.testcase new file mode 100644 index 0000000..cf63755 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makecircle17.testcase @@ -0,0 +1,8 @@ +makecircle17 - BLOB step +:memory: #use in-memory database +SELECT ST_Length(MakeCircle(0, 0, 100, 4326, zeroblob(4))); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeCircle(0, 0, 100, 4326, zeroblob(4))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makecircle18.testcase b/src/spatialite/test/sql_stmt_geos_tests/makecircle18.testcase new file mode 100644 index 0000000..b63da15 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makecircle18.testcase @@ -0,0 +1,8 @@ +makecircle18 - valid step +:memory: #use in-memory database +SELECT ST_Length(MakeCircle(0.0, 0.0, 100.0, 4326, 1.0)); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeCircle(0.0, 0.0, 100.0, 4326, 1.0)) +628.3105:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makecircularsector15.testcase b/src/spatialite/test/sql_stmt_geos_tests/makecircularsector15.testcase new file mode 100644 index 0000000..2d97bee --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makecircularsector15.testcase @@ -0,0 +1,8 @@ +makecircularsector15 - valid +:memory: #use in-memory database +SELECT ST_Area(MakeCircularSector(0, 0, 100, 30, 60)); +1 # rows (not including the header row) +1 # columns +ST_Area(MakeCircularSector(0, 0, 100, 30, 60)) +2604.7226:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makecircularsector19.testcase b/src/spatialite/test/sql_stmt_geos_tests/makecircularsector19.testcase new file mode 100644 index 0000000..6c6cb53 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makecircularsector19.testcase @@ -0,0 +1,8 @@ +makecircularsector19 - WGS84 srid +:memory: #use in-memory database +SELECT ST_Area(MakeCircularSector(0, 0, 100, 30, 60, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Area(MakeCircularSector(0, 0, 100, 30, 60, 4326)) +2604.7226:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makecircularsector23.testcase b/src/spatialite/test/sql_stmt_geos_tests/makecircularsector23.testcase new file mode 100644 index 0000000..87e869e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makecircularsector23.testcase @@ -0,0 +1,8 @@ +makecircularsector23 - valid step +:memory: #use in-memory database +SELECT ST_Area(MakeCircularSector(0, 0, 100, 30, 60, 4326, 1.0)); +1 # rows (not including the header row) +1 # columns +ST_Area(MakeCircularSector(0, 0, 100, 30, 60, 4326, 1.0)) +2617.8609:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makecircularstripe15.testcase b/src/spatialite/test/sql_stmt_geos_tests/makecircularstripe15.testcase new file mode 100644 index 0000000..25de187 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makecircularstripe15.testcase @@ -0,0 +1,8 @@ +makecircularstripe15 - valid +:memory: #use in-memory database +SELECT ST_Area(MakeCircularStripe(0, 0, 100, 90, 30, 60)); +1 # rows (not including the header row) +1 # columns +ST_Area(MakeCircularStripe(0, 0, 100, 90, 30, 60)) +494.8973:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makecircularstripe19.testcase b/src/spatialite/test/sql_stmt_geos_tests/makecircularstripe19.testcase new file mode 100644 index 0000000..4715c7a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makecircularstripe19.testcase @@ -0,0 +1,8 @@ +makecircularstrpe19 - WGS84 srid +:memory: #use in-memory database +SELECT ST_Area(MakeCircularStripe(0, 0, 100, 90, 30, 60, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Area(MakeCircularStripe(0, 0, 100, 90, 30, 60, 4326)) +494.8973:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makecircularstripe23.testcase b/src/spatialite/test/sql_stmt_geos_tests/makecircularstripe23.testcase new file mode 100644 index 0000000..90ec5db --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makecircularstripe23.testcase @@ -0,0 +1,8 @@ +makecircularstripe23 - valid step +:memory: #use in-memory database +SELECT ST_Area(MakeCircularStripe(0.0, 0.0, 100.0, 90.0, 30.0, 60.0, 4326, 1.0)); +1 # rows (not including the header row) +1 # columns +ST_Area(MakeCircularStripe(0.0, 0.0, 100.0, 90.0, 30.0, 60.0, 4326, 1.0)) +497.3935:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makeellipse13.testcase b/src/spatialite/test/sql_stmt_geos_tests/makeellipse13.testcase new file mode 100644 index 0000000..089a35b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makeellipse13.testcase @@ -0,0 +1,8 @@ +makeellipse13 - valid +:memory: #use in-memory database +SELECT ST_Length(MakeEllipse(0, 0, 100, 200)); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeEllipse(0, 0, 100, 200)) +967.6155:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makeellipse17.testcase b/src/spatialite/test/sql_stmt_geos_tests/makeellipse17.testcase new file mode 100644 index 0000000..841efa9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makeellipse17.testcase @@ -0,0 +1,8 @@ +makeellipse17 - WGS84 srid +:memory: #use in-memory database +SELECT ST_Length(MakeEllipse(0, 0, 100, 200, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeEllipse(0, 0, 100, 200, 4326)) +967.6155:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makeellipse21.testcase b/src/spatialite/test/sql_stmt_geos_tests/makeellipse21.testcase new file mode 100644 index 0000000..cc03dc8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makeellipse21.testcase @@ -0,0 +1,8 @@ +makeellipse21 - valid step +:memory: #use in-memory database +SELECT ST_Length(MakeEllipse(0.0, 0.0, 100.0, 200.0, 4326, 1.0)); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeEllipse(0.0, 0.0, 100.0, 200.0, 4326, 1.0)) +968.8325:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makeellipticarc18.testcase b/src/spatialite/test/sql_stmt_geos_tests/makeellipticarc18.testcase new file mode 100644 index 0000000..ac1b60c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makeellipticarc18.testcase @@ -0,0 +1,8 @@ +makeellipticarc18 - valid +:memory: #use in-memory database +SELECT ST_Length(MakeEllipticArc(0, 0, 100, 200, 30, 60)); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeEllipticArc(0, 0, 100, 200, 30, 60)) +82.3891:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makeellipticarc22.testcase b/src/spatialite/test/sql_stmt_geos_tests/makeellipticarc22.testcase new file mode 100644 index 0000000..daa3b4b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makeellipticarc22.testcase @@ -0,0 +1,8 @@ +makeellipticarc22 - WGS84 sid +:memory: #use in-memory database +SELECT ST_Length(MakeEllipticArc(0, 0, 100, 200, 30, 60, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeEllipticArc(0, 0, 100, 200, 30, 60, 4326)) +82.3891:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makeellipticarc26.testcase b/src/spatialite/test/sql_stmt_geos_tests/makeellipticarc26.testcase new file mode 100644 index 0000000..814e3bd --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makeellipticarc26.testcase @@ -0,0 +1,8 @@ +makeellipticarc26 - valid step +:memory: #use in-memory database +SELECT ST_Length(MakeEllipticArc(0.0, 0.0, 100.0, 200.0, 30.0, 60.0, 4326, 1.0)); +1 # rows (not including the header row) +1 # columns +ST_Length(MakeEllipticArc(0.0, 0.0, 100.0, 200.0, 30.0, 60.0, 4326, 1.0)) +82.4595:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makeellipticsector18.testcase b/src/spatialite/test/sql_stmt_geos_tests/makeellipticsector18.testcase new file mode 100644 index 0000000..5ea8a8a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makeellipticsector18.testcase @@ -0,0 +1,8 @@ +makeellipticsector18 - valid +:memory: #use in-memory database +SELECT ST_Area(MakeEllipticSector(0, 0, 100, 200, 30, 60)); +1 # rows (not including the header row) +1 # columns +ST_Area(MakeEllipticSector(0, 0, 100, 200, 30, 60)) +5209.4453:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makeellipticsector22.testcase b/src/spatialite/test/sql_stmt_geos_tests/makeellipticsector22.testcase new file mode 100644 index 0000000..58e13ee --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makeellipticsector22.testcase @@ -0,0 +1,8 @@ +makeellipticsector22 - WGS84 sid +:memory: #use in-memory database +SELECT ST_Area(MakeEllipticSector(0, 0, 100, 200, 30, 60, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Area(MakeEllipticSector(0, 0, 100, 200, 30, 60, 4326)) +5209.4453:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/makeellipticsector26.testcase b/src/spatialite/test/sql_stmt_geos_tests/makeellipticsector26.testcase new file mode 100644 index 0000000..c5a9c01 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/makeellipticsector26.testcase @@ -0,0 +1,8 @@ +makeellipticsector26 - valid step +:memory: #use in-memory database +SELECT ST_Area(MakeEllipticSector(0.0, 0.0, 100.0, 200.0, 30.0, 60.0, 4326, 1.0)); +1 # rows (not including the header row) +1 # columns +ST_Area(MakeEllipticSector(0.0, 0.0, 100.0, 200.0, 30.0, 60.0, 4326, 1.0)) +5235.7219:4 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/offsetcurve1.testcase b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve1.testcase new file mode 100644 index 0000000..dcd2f63 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve1.testcase @@ -0,0 +1,9 @@ +OffsetCurve - non-int side +:memory: #use in-memory database +SELECT AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), 1, "hello")); +1 # rows (not including the header row) +1 # columns +AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), 1, "hello")) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/offsetcurve10.testcase b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve10.testcase new file mode 100644 index 0000000..6097b3c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve10.testcase @@ -0,0 +1,9 @@ +OffsetCurve - multilinestring, 1 linestring +:memory: #use in-memory database +SELECT AsText(OffsetCurve(GeomFromText('MULTILINESTRING((0 0, 0 1, 4 1, 4 0))'), 1, 0)); +1 # rows (not including the header row) +1 # columns +AsText(OffsetCurve(GeomFromText('MULTILINESTRING((0 0, 0 1, 4 1, 4 0))'), 1, 0)) +LINESTRING(3 0, 1 0) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/offsetcurve11.testcase b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve11.testcase new file mode 100644 index 0000000..06ce475 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve11.testcase @@ -0,0 +1,9 @@ +OffsetCurve - multilinestring, 2 linestring +:memory: #use in-memory database +SELECT AsText(OffsetCurve(GeomFromText('MULTILINESTRING((0 0, 0 1, 4 1, 4 0),(4 1, 3 2))'), 1, 0)) +1 # rows (not including the header row) +1 # columns +AsText(OffsetCurve(GeomFromText('MULTILINESTRING((0 0, 0 1, 4 1, 4 0),(4 1, 3 2))'), 1, 0)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/offsetcurve12.testcase b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve12.testcase new file mode 100644 index 0000000..0947e28 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve12.testcase @@ -0,0 +1,9 @@ +OffsetCurve - linestringz +:memory: #use in-memory database +SELECT AsText(OffsetCurve(GeomFromText('LINESTRINGZ(0 0 1, 0 1 2, 4 1 2, 4 0 1)'), 1, 0)) +1 # rows (not including the header row) +1 # columns +AsText(OffsetCurve(GeomFromText('LINESTRINGZ(0 0 1, 0 1 2, 4 1 2, 4 0 1)'), 1, 0)) +LINESTRING Z(3 0 0, 1 0 0) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/offsetcurve13.testcase b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve13.testcase new file mode 100644 index 0000000..cfdd6f8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve13.testcase @@ -0,0 +1,9 @@ +OffsetCurve - linestringm +:memory: #use in-memory database +SELECT AsText(OffsetCurve(GeomFromText('LINESTRINGM(0 0 1, 0 1 2, 4 1 2, 4 0 1)'), 1, 0)) +1 # rows (not including the header row) +1 # columns +AsText(OffsetCurve(GeomFromText('LINESTRINGM(0 0 1, 0 1 2, 4 1 2, 4 0 1)'), 1, 0)) +LINESTRING M(3 0 0, 1 0 0) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/offsetcurve14.testcase b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve14.testcase new file mode 100644 index 0000000..ac88cc1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve14.testcase @@ -0,0 +1,9 @@ +OffsetCurve - linestringzm +:memory: #use in-memory database +SELECT AsText(OffsetCurve(GeomFromText('LINESTRINGZM(0 0 1 4, 0 1 2 4, 4 1 2 4, 4 0 1 4)'), 1, 0)) +1 # rows (not including the header row) +1 # columns +AsText(OffsetCurve(GeomFromText('LINESTRINGZM(0 0 1 4, 0 1 2 4, 4 1 2 4, 4 0 1 4)'), 1, 0)) +LINESTRING ZM(3 0 0 0, 1 0 0 0) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/offsetcurve2.testcase b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve2.testcase new file mode 100644 index 0000000..66c7bbe --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve2.testcase @@ -0,0 +1,10 @@ +OffsetCurve - polygon +:memory: #use in-memory database +SELECT AsText(OffsetCurve(GeomFromText('POLYGON((0 0, 0 1, 4 1, 4 0, 0 0))'), 1, 0)); +1 # rows (not including the header row) +1 # columns +AsText(OffsetCurve(GeomFromText('POLYGON((0 0, 0 1, 4 1, 4 0, 0 0))'), 1, 0)) +(NULL) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/offsetcurve3.testcase b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve3.testcase new file mode 100644 index 0000000..7bac8d1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve3.testcase @@ -0,0 +1,10 @@ +OffsetCurve - null +:memory: #use in-memory database +SELECT AsText(OffsetCurve(null, 1, 0)); +1 # rows (not including the header row) +1 # columns +AsText(OffsetCurve(null, 1, 0)) +(NULL) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/offsetcurve4.testcase b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve4.testcase new file mode 100644 index 0000000..185dfbe --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve4.testcase @@ -0,0 +1,9 @@ +OffsetCurve +:memory: #use in-memory database +SELECT AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), 1, 0)); +1 # rows (not including the header row) +1 # columns +AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), 1, 0)) +LINESTRING(3 0, 1 0) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/offsetcurve5.testcase b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve5.testcase new file mode 100644 index 0000000..419bb3d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve5.testcase @@ -0,0 +1,9 @@ +OffsetCurve - non-number radius +:memory: #use in-memory database +SELECT AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), "not a number", 0)); +1 # rows (not including the header row) +1 # columns +AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), "not a number", 0)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/offsetcurve6.testcase b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve6.testcase new file mode 100644 index 0000000..2efb49e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve6.testcase @@ -0,0 +1,9 @@ +OffsetCurve - float radius +:memory: #use in-memory database +SELECT AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), 1.0, 0)); +1 # rows (not including the header row) +1 # columns +AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0)'), 1.0, 0)) +LINESTRING(3 0, 1 0) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/offsetcurve7.testcase b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve7.testcase new file mode 100644 index 0000000..cbed3b0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve7.testcase @@ -0,0 +1,10 @@ +OffsetCurve - zeroblob +:memory: #use in-memory database +SELECT AsText(OffsetCurve(zeroblob(40), 1, 0)); +1 # rows (not including the header row) +1 # columns +AsText(OffsetCurve(zeroblob(40), 1, 0)) +(NULL) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/offsetcurve8.testcase b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve8.testcase new file mode 100644 index 0000000..47db790 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve8.testcase @@ -0,0 +1,9 @@ +OffsetCurve - points +:memory: #use in-memory database +SELECT AsText(OffsetCurve(GeomFromText('MULTIPOINT(0 0, 0 1, 4 1, 4 0)'), 1, 0)); +1 # rows (not including the header row) +1 # columns +AsText(OffsetCurve(GeomFromText('MULTIPOINT(0 0, 0 1, 4 1, 4 0)'), 1, 0)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/offsetcurve9.testcase b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve9.testcase new file mode 100644 index 0000000..44255aa --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/offsetcurve9.testcase @@ -0,0 +1,9 @@ +OffsetCurve - closed linestring +:memory: #use in-memory database +SELECT AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0, 0 0)'), 1, 0)); +1 # rows (not including the header row) +1 # columns +AsText(OffsetCurve(GeomFromText('LINESTRING(0 0, 0 1, 4 1, 4 0, 0 0)'), 1, 0)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface1.testcase b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface1.testcase new file mode 100644 index 0000000..b2feb4d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface1.testcase @@ -0,0 +1,8 @@ +pointonsurface - point +:memory: #use in-memory database +SELECT astext(PointOnSurface(geomFromText("POINT(1,1)", 4326))); +1 # rows (not including the header row) +1 # columns +astext(PointOnSurface(geomFromText("POINT(1,1)", 4326))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface2.testcase b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface2.testcase new file mode 100644 index 0000000..70d33de --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface2.testcase @@ -0,0 +1,9 @@ +PointOnSurface - toxic +:memory: #use in-memory database +SELECT PointOnSurface(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")); +1 # rows (not including the header row) +1 # columns +PointOnSurface(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))")) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface3.testcase b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface3.testcase new file mode 100644 index 0000000..49308f9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface3.testcase @@ -0,0 +1,9 @@ +PointOnSurface - null blob +:memory: #use in-memory database +SELECT PointOnSurface(zeroblob(40)); +1 # rows (not including the header row) +1 # columns +PointOnSurface(zeroblob(40)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface4.testcase b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface4.testcase new file mode 100644 index 0000000..3d81242 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface4.testcase @@ -0,0 +1,9 @@ +PointOnSurface - square +:memory: #use in-memory database +SELECT Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326))); +1 # rows (not including the header row) +1 # columns +Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326))) +1 + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface5.testcase b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface5.testcase new file mode 100644 index 0000000..56739f0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface5.testcase @@ -0,0 +1,8 @@ +PointOnSurface - square, Z (problem case - throws away Z component) +:memory: #use in-memory database +SELECT Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGONZ((0 0 1, 0 1 2, 1 1 2, 0 0 1))", 4326))) +1 # rows (not including the header row) +1 # columns +Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGONZ((0 0 1, 0 1 2, 1 1 2, 0 0 1))", 4326))) +1 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface6.testcase b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface6.testcase new file mode 100644 index 0000000..84be68b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface6.testcase @@ -0,0 +1,8 @@ +PointOnSurface - square, M (problem case - throws away M component) +:memory: #use in-memory database +SELECT Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGONM((0 0 1, 0 1 2, 1 1 2, 0 0 1))", 4326))) +1 # rows (not including the header row) +1 # columns +Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGONM((0 0 1, 0 1 2, 1 1 2, 0 0 1))", 4326))) +1 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/pointonsurface7.testcase b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface7.testcase new file mode 100644 index 0000000..34d2cc4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/pointonsurface7.testcase @@ -0,0 +1,8 @@ +PointOnSurface - square, Z and M (problem case - throws away Z and M component) +:memory: #use in-memory database +SELECT Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGONZM((0 0 1 4, 0 1 2 4, 1 1 2 2, 0 0 1 4))", 4326))) +1 # rows (not including the header row) +1 # columns +Contains(geomFromText("POLYGON((0 0, 0 1, 1 1, 0 0))", 4326), PointOnSurface(geomFromText("POLYGONZM((0 0 1 4, 0 1 2 4, 1 1 2 2, 0 0 1 4))", 4326))) +1 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize1.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize1.testcase new file mode 100644 index 0000000..4d6d437 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/polygonize1.testcase @@ -0,0 +1,10 @@ +POLYGONIZE - simple polygon +:memory: #use in-memory database +SELECT AsText(Polygonize(GeomFromText("LINESTRING(0 0, 1 1, 0 2, -1 1, 0 0)"))); +1 # rows (not including the header row) +1 # columns +AsText(Polygonize(GeomFromText("LINESTRING(0 0, 1 1, 0 2, -1 1, 0 0)"))) +POLYGON((0 0, -1 1, 0 2, 1 1, 0 0)) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize10.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize10.testcase new file mode 100644 index 0000000..4de0b34 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/polygonize10.testcase @@ -0,0 +1,10 @@ +POLYGONIZE - polygonM with inner ring +:memory: #use in-memory database +SELECT AsText(Polygonize(GeomFromText("MULTILINESTRINGM((0 0 5, 10 0 6, 10 12 7, 0 12 6, 0 0 5),(1 1 0, 3 1 0, 3 3 4, 1 3 1, 1 1 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(Polygonize(GeomFromText("MULTILINESTRINGM((0 0 5, 10 0 6, 10 12 7, 0 12 6, 0 0 5),(1 1 0, 3 1 0, 3 3 4, 1 3 1, 1 1 0))"))) +POLYGON M((0 0 0, 0 12 0, 10 12 0, 10 0 0, 0 0 0), (1 1 0, 3 1 0, 3 3 0, 1 3 0, 1 1 0)) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize11.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize11.testcase new file mode 100644 index 0000000..bdc18d7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/polygonize11.testcase @@ -0,0 +1,10 @@ +POLYGONIZE - points +:memory: #use in-memory database +SELECT AsText(Polygonize(GeomFromText("MULTIPOINT(0 0, 1 1, 0 2, -1 1)"))); +1 # rows (not including the header row) +1 # columns +AsText(Polygonize(GeomFromText("MULTIPOINT(0 0, 1 1, 0 2, -1 1)"))); +(NULL) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize12.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize12.testcase new file mode 100644 index 0000000..543a61d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/polygonize12.testcase @@ -0,0 +1,10 @@ +POLYGONIZE - already Polygon +:memory: #use in-memory database +SELECT AsText(Polygonize(GeomFromText("POLYGON((0 0, 1 1, 0 2, 0 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(Polygonize(GeomFromText("POLYGON((0 0, 1 1, 0 2, 0 0))"))) +(NULL) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize13.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize13.testcase new file mode 100644 index 0000000..3033839 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/polygonize13.testcase @@ -0,0 +1,10 @@ +POLYGONIZE - polygonzm with two inner ring +:memory: #use in-memory database +SELECT AsText(Polygonize(GeomFromText("MULTILINESTRINGZM((0 0 5 4, 10 0 6 2, 10 12 7 3, 0 12 6 1, 0 0 5 4),(1 1 0 0, 3 1 0 2, 3 3 4 1, 1 3 1 2, 1 1 0 0),(4 4 0 0, 5 4 0 0, 5 5 0 0, 4 5 1 0, 4 4 0 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(Polygonize(GeomFromText("MULTILINESTRINGZM((0 0 5 4, 10 0 6 2, 10 12 7 3, 0 12 6 1, 0 0 5 4),(1 1 0 0, 3 1 0 2, 3 3 4 1, 1 3 1 2, 1 1 0 0),(4 4 0 0, 5 4 0 0, 5 5 0 0, 4 5 1 0, 4 4 0 0))"))) +POLYGON ZM((0 0 5 0, 0 12 6 0, 10 12 7 0, 10 0 6 0, 0 0 5 0), (1 1 0 0, 3 1 0 0, 3 3 4 0, 1 3 1 0, 1 1 0 0), (4 4 0 0, 5 4 0 0, 5 5 0 0, 4 5 1 0, 4 4 0 0)) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize14.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize14.testcase new file mode 100644 index 0000000..b0a59cb --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/polygonize14.testcase @@ -0,0 +1,10 @@ +POLYGONIZE - toxic geometry +:memory: #use in-memory database +SELECT AsText(Polygonize(GeomFromText("MULTILINESTRING((0 0, 1 1, 0 2, -1 1), (4 0, 4 0), (-1 1, 0 0))"))); +1 # rows (not including the header row) +1 # columns +AsText(Polygonize(GeomFromText("MULTILINESTRING((0 0, 1 1, 0 2, -1 1), (4 0, 4 0), (-1 1, 0 0))"))) +POLYGON((-1 1, 0 2, 1 1, 0 0, -1 1)) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize2.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize2.testcase new file mode 100644 index 0000000..a8196d8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/polygonize2.testcase @@ -0,0 +1,10 @@ +POLYGONIZE - not ring +:memory: #use in-memory database +SELECT AsText(Polygonize(GeomFromText("LINESTRING(0 0, 1 1, 0 2, -1 1)"))); +1 # rows (not including the header row) +1 # columns +AsText(Polygonize(GeomFromText("LINESTRING(0 0, 1 1, 0 2, -1 1)"))) +(NULL) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize3.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize3.testcase new file mode 100644 index 0000000..1349c12 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/polygonize3.testcase @@ -0,0 +1,10 @@ +POLYGONIZE - bad blob +:memory: #use in-memory database +SELECT Polygonize(zeroblob(9)); +1 # rows (not including the header row) +1 # columns +Polygonize(zeroblob(9)) +(NULL) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize4.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize4.testcase new file mode 100644 index 0000000..462703f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/polygonize4.testcase @@ -0,0 +1,10 @@ +POLYGONIZE - text +:memory: #use in-memory database +SELECT Polygonize("hello world"); +1 # rows (not including the header row) +1 # columns +Polygonize("hello world") +(NULL) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize5.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize5.testcase new file mode 100644 index 0000000..1a54385 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/polygonize5.testcase @@ -0,0 +1,10 @@ +POLYGONIZE - simple polygonz +:memory: #use in-memory database +SELECT AsText(Polygonize(GeomFromText("LINESTRINGZ(0 0 5, 1 1 6, 0 2 7, -1 1 6, 0 0 5)"))) +1 # rows (not including the header row) +1 # columns +AsText(Polygonize(GeomFromText("LINESTRINGZ(0 0 5, 1 1 6, 0 2 7, -1 1 6, 0 0 5)"))) +POLYGON Z((0 0 5, -1 1 6, 0 2 7, 1 1 6, 0 0 5)) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize6.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize6.testcase new file mode 100644 index 0000000..0efa0d1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/polygonize6.testcase @@ -0,0 +1,10 @@ +POLYGONIZE - simple polygonm +:memory: #use in-memory database +SELECT AsText(Polygonize(GeomFromText("LINESTRINGM(0 0 5, 1 1 6, 0 2 7, -1 1 6, 0 0 5)"))) +1 # rows (not including the header row) +1 # columns +AsText(Polygonize(GeomFromText("LINESTRINGM(0 0 5, 1 1 6, 0 2 7, -1 1 6, 0 0 5)"))) +POLYGON M((0 0 0, -1 1 0, 0 2 0, 1 1 0, 0 0 0)) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize7.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize7.testcase new file mode 100644 index 0000000..ee599b6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/polygonize7.testcase @@ -0,0 +1,10 @@ +POLYGONIZE - simple polygonzm +:memory: #use in-memory database +SELECT AsText(Polygonize(GeomFromText("LINESTRINGZM(0 0 5 4, 1 1 6 2, 0 2 7 3, -1 1 6 1, 0 0 5 4)"))) +1 # rows (not including the header row) +1 # columns +AsText(Polygonize(GeomFromText("LINESTRINGZM(0 0 5 4, 1 1 6 2, 0 2 7 3, -1 1 6 1, 0 0 5 4)"))) +POLYGON ZM((0 0 5 0, -1 1 6 0, 0 2 7 0, 1 1 6 0, 0 0 5 0)) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize8.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize8.testcase new file mode 100644 index 0000000..efc3463 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/polygonize8.testcase @@ -0,0 +1,10 @@ +POLYGONIZE - polygonzm with inner ring +:memory: #use in-memory database +SELECT AsText(Polygonize(GeomFromText("MULTILINESTRINGZM((0 0 5 4, 10 0 6 2, 10 12 7 3, 0 12 6 1, 0 0 5 4),(1 1 0 0, 3 1 0 2, 3 3 4 1, 1 3 1 2, 1 1 0 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(Polygonize(GeomFromText("MULTILINESTRINGZM((0 0 5 4, 10 0 6 2, 10 12 7 3, 0 12 6 1, 0 0 5 4),(1 1 0 0, 3 1 0 2, 3 3 4 1, 1 3 1 2, 1 1 0 0))"))) +POLYGON ZM((0 0 5 0, 0 12 6 0, 10 12 7 0, 10 0 6 0, 0 0 5 0), (1 1 0 0, 3 1 0 0, 3 3 4 0, 1 3 1 0, 1 1 0 0)) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/polygonize9.testcase b/src/spatialite/test/sql_stmt_geos_tests/polygonize9.testcase new file mode 100644 index 0000000..54b35d4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/polygonize9.testcase @@ -0,0 +1,10 @@ +POLYGONIZE - polygonz with inner ring +:memory: #use in-memory database +SELECT AsText(Polygonize(GeomFromText("MULTILINESTRINGZ((0 0 5, 10 0 6, 10 12 7, 0 12 6, 0 0 5),(1 1 0, 3 1 0, 3 3 4, 1 3 1, 1 1 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(Polygonize(GeomFromText("MULTILINESTRINGZ((0 0 5, 10 0 6, 10 12 7, 0 12 6, 0 0 5),(1 1 0, 3 1 0, 3 3 4, 1 3 1, 1 1 0))"))) +POLYGON Z((0 0 5, 0 12 6, 10 12 7, 10 0 6, 0 0 5), (1 1 0, 3 1 0, 3 3 4, 1 3 1, 1 1 0)) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin1.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin1.testcase new file mode 100644 index 0000000..0541f4e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin1.testcase @@ -0,0 +1,7 @@ +PtDistWithin- two points +:memory: #use in-memory database +SELECT PtDistWithin(Makepoint(1,2), MakePoint(4,4), 2) +1 # rows (not including the header row) +1 # columns +PtDistWithin(Makepoint(1,2), MakePoint(4,4), 2) +0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin10.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin10.testcase new file mode 100644 index 0000000..2c78c8f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin10.testcase @@ -0,0 +1,7 @@ +PtDistWithin - bad blob second arg +:memory: #use in-memory database +SELECT PtDistWithin(MakePoint(4,4), zeroblob(98), 2) +1 # rows (not including the header row) +1 # columns +PtDistWithin(MakePoint(4,4), zeroblob(98), 2) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin11.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin11.testcase new file mode 100644 index 0000000..0f147bf --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin11.testcase @@ -0,0 +1,7 @@ +PtDistWithin - WGS-84 first arg +:memory: #use in-memory database +SELECT PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4), 2) +1 # rows (not including the header row) +1 # columns +PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4), 2) +1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin12.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin12.testcase new file mode 100644 index 0000000..550739e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin12.testcase @@ -0,0 +1,7 @@ +PtDistWithin - WGS-84 first arg +:memory: #use in-memory database +SELECT PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4), 1) +1 # rows (not including the header row) +1 # columns +PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4), 1) +0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin13.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin13.testcase new file mode 100644 index 0000000..c5641e7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin13.testcase @@ -0,0 +1,7 @@ +PtDistWithin - WGS-84 both args +:memory: #use in-memory database +SELECT PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 2) +1 # rows (not including the header row) +1 # columns +PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 2) +0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin14.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin14.testcase new file mode 100644 index 0000000..01732f5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin14.testcase @@ -0,0 +1,7 @@ +PtDistWithin - WGS-84 both args +:memory: #use in-memory database +SELECT PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 2000000) +1 # rows (not including the header row) +1 # columns +PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 2000000) +1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin15.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin15.testcase new file mode 100644 index 0000000..e26b910 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin15.testcase @@ -0,0 +1,7 @@ +PtDistWithin - WGS-84 both args, geodesic +:memory: #use in-memory database +SELECT PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 2000000, 1) +1 # rows (not including the header row) +1 # columns +PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 2000000, 1) +1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin16.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin16.testcase new file mode 100644 index 0000000..79fbf76 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin16.testcase @@ -0,0 +1,7 @@ +PtDistWithin - WGS-84 both args, geodesic +:memory: #use in-memory database +SELECT PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 100000, 1) +1 # rows (not including the header row) +1 # columns +PtDistWithin(MakePoint(4, 2, 4326), MakePoint(4,4,4326), 100000, 1) +0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin17.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin17.testcase new file mode 100644 index 0000000..b43603b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin17.testcase @@ -0,0 +1,7 @@ +PtDistWithin - LINESTRING and POINT, first arg WGS-84 +:memory: #use in-memory database +SELECT PtDistWithin(GeomFromText("LINESTRING(4 2, 3 2)", 4326), MakePoint(4,4), 5) +1 # rows (not including the header row) +1 # columns +PtDistWithin(GeomFromText("LINESTRING(4 2, 3 2)", 4326), MakePoint(4,4), 5) +1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin18.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin18.testcase new file mode 100644 index 0000000..3e64ede --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin18.testcase @@ -0,0 +1,7 @@ +PtDistWithin - LINESTRING and POINT, WGS-84 both args, geodesic +:memory: #use in-memory database +SELECT PtDistWithin(GeomFromText("LINESTRING(4 2, 3 2)", 4326), MakePoint(4,4,4326), 5, 1) +1 # rows (not including the header row) +1 # columns +PtDistWithin(GeomFromText("LINESTRING(4 2, 3 2)", 4326), MakePoint(4,4,4326), 5, 1) +1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin2.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin2.testcase new file mode 100644 index 0000000..a52d148 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin2.testcase @@ -0,0 +1,7 @@ +PtDistWithin- two points +:memory: #use in-memory database +SELECT PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2) +1 # rows (not including the header row) +1 # columns +PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2) +1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin3.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin3.testcase new file mode 100644 index 0000000..b1fd22e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin3.testcase @@ -0,0 +1,7 @@ +PtDistWithin - bad first arg +:memory: #use in-memory database +SELECT PtDistWithin(4, MakePoint(4,4), 2) +1 # rows (not including the header row) +1 # columns +PtDistWithin(4, MakePoint(4,4), 2) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin4.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin4.testcase new file mode 100644 index 0000000..dc2e84e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin4.testcase @@ -0,0 +1,7 @@ +PtDistWithin - bad second arg +:memory: #use in-memory database +SELECT PtDistWithin(Makepoint(4,2), "helo", 2) +1 # rows (not including the header row) +1 # columns +PtDistWithin(Makepoint(4,2), "helo", 2) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin5.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin5.testcase new file mode 100644 index 0000000..fe3bae3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin5.testcase @@ -0,0 +1,7 @@ +PtDistWithin - bad third arg +:memory: #use in-memory database +SELECT PtDistWithin(Makepoint(4,2), MakePoint(4,4), "hello") +1 # rows (not including the header row) +1 # columns +PtDistWithin(Makepoint(4,2), MakePoint(4,4), "hello") +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin6.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin6.testcase new file mode 100644 index 0000000..e05bbd0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin6.testcase @@ -0,0 +1,7 @@ +PtDistWithin- two points, float distance +:memory: #use in-memory database +SELECT PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2.1) +1 # rows (not including the header row) +1 # columns +PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2.1) +1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin7.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin7.testcase new file mode 100644 index 0000000..ce1a862 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin7.testcase @@ -0,0 +1,7 @@ +PtDistWithin- two points, float distance, optional fourth arg +:memory: #use in-memory database +SELECT PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2.1, 0) +1 # rows (not including the header row) +1 # columns +PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2.1, 0) +1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin8.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin8.testcase new file mode 100644 index 0000000..3b3df4a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin8.testcase @@ -0,0 +1,7 @@ +PtDistWithin - bad blob first arg +:memory: #use in-memory database +SELECT PtDistWithin(zeroblob(98), MakePoint(4,4), 2) +1 # rows (not including the header row) +1 # columns +PtDistWithin(zeroblob(98), MakePoint(4,4), 2) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin9.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin9.testcase new file mode 100644 index 0000000..fce6a03 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistancewithin9.testcase @@ -0,0 +1,7 @@ +PtDistWithin- two points, float distance, bad fourth arg +:memory: #use in-memory database +SELECT PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2.1, "hello") +1 # rows (not including the header row) +1 # columns +PtDistWithin(Makepoint(4,2), MakePoint(4,4), 2.1, "hello") +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin1.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin1.testcase new file mode 100644 index 0000000..a5c7dbb --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin1.testcase @@ -0,0 +1,7 @@ +PtDistWithin invalid arg: NULL pt1 +:memory: +SELECT PtDistWithin(NULL, GeomFromText("POINT(5 5)", 4326), 10.0, 1); +1 # rows +1 # column +PtDistWithin(NULL, GeomFromText("POINT(5 5)", 4326), 10.0, 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin10.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin10.testcase new file mode 100644 index 0000000..343f482 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin10.testcase @@ -0,0 +1,7 @@ +PtDistWithin invalid arg: zeroblob pt2 +:memory: +SELECT PtDistWithin(GeomFromText("POINT(5 5)", 4326), zeroblob(25), 10.0, 1); +1 # rows +1 # column +PtDistWithin(GeomFromText("POINT(5 5)", 4326), zeroblob(25), 10.0, 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin11.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin11.testcase new file mode 100644 index 0000000..1830f72 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin11.testcase @@ -0,0 +1,7 @@ +PtDistWithin: WGS84 no spheroid +:memory: +SELECT PtDistWithin(GeomFromText("POINT(5 5)", 4326), GeomFromText("POINT(5.1 5.1)", 4326), 100000.0); +1 # rows +1 # column +PtDistWithin(GeomFromText("POINT(5 5)", 4326), GeomFromText("POINT(5.1 5.1)", 4326), 100000.0) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin12.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin12.testcase new file mode 100644 index 0000000..570e5b9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin12.testcase @@ -0,0 +1,7 @@ +PtDistWithin: WGS84 spheroid +:memory: +SELECT PtDistWithin(GeomFromText("POINT(5 5)", 4326), GeomFromText("POINT(5.1 5.1)", 4326), 100000.0, 1); +1 # rows +1 # column +PtDistWithin(GeomFromText("POINT(5 5)", 4326), GeomFromText("POINT(5.1 5.1)", 4326), 100000.0, 1) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin13.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin13.testcase new file mode 100644 index 0000000..8314c8d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin13.testcase @@ -0,0 +1,7 @@ +PtDistWithin: WGS84 (INT dist) +:memory: +SELECT PtDistWithin(GeomFromText("POINT(5 5)", 4326), GeomFromText("POINT(5.1 5.1)", 4326), 100000); +1 # rows +1 # column +PtDistWithin(GeomFromText("POINT(5 5)", 4326), GeomFromText("POINT(5.1 5.1)", 4326), 100000) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin14.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin14.testcase new file mode 100644 index 0000000..e878d7d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin14.testcase @@ -0,0 +1,7 @@ +PtDistWithin: Linestring / Polygon +:memory: +SELECT PtDistWithin(GeomFromText("LINESTRING(4 4, 4.1 4.1)", 4326), GeomFromText("POLYGON((5 5, 5.1 5, 5.1 5.1, 5 5.1, 5 5))", 4326), 200); +1 # rows +1 # column +PtDistWithin(GeomFromText("LINESTRING(4 4, 4.1 4.1)", 4326), GeomFromText("POLYGON((5 5, 5.1 5, 5.1 5.1, 5 5.1, 5 5))", 4326), 200) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin15.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin15.testcase new file mode 100644 index 0000000..b156a90 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin15.testcase @@ -0,0 +1,7 @@ +PtDistWithin: unknown Srid +:memory: +SELECT PtDistWithin(GeomFromText("POINT(5 5)", -1), GeomFromText("POINT(5.1 5.1)", -1), 1); +1 # rows +1 # column +PtDistWithin(GeomFromText("POINT(5 5)", -1), GeomFromText("POINT(5.1 5.1)", -1), 1) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin16.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin16.testcase new file mode 100644 index 0000000..7de302c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin16.testcase @@ -0,0 +1,7 @@ +PtDistWithin: Polygon / Linestring +:memory: +SELECT PtDistWithin(GeomFromText("POLYGON((5 5, 5.1 5, 5.1 5.1, 5 5.1, 5 5))", 4326), GeomFromText("LINESTRING(4 4, 4.1 4.1)", 4326), 200); +1 # rows +1 # column +PtDistWithin(GeomFromText("POLYGON((5 5, 5.1 5, 5.1 5.1, 5 5.1, 5 5))", 4326), GeomFromText("LINESTRING(4 4, 4.1 4.1)", 4326), 200) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin2.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin2.testcase new file mode 100644 index 0000000..8c49a2c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin2.testcase @@ -0,0 +1,7 @@ +PtDistWithin invalid arg: NULL pt2 +:memory: +SELECT PtDistWithin(GeomFromText("POINT(5 5)", 4326), NULL, 10.0, 1); +1 # rows +1 # column +PtDistWithin(GeomFromText("POINT(5 5)", 4326), NULL, 10.0, 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin3.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin3.testcase new file mode 100644 index 0000000..dd44efc --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin3.testcase @@ -0,0 +1,7 @@ +PtDistWithin invalid arg: NULL distance +:memory: +SELECT PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), NULL, 1); +1 # rows +1 # column +PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), NULL, 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin4.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin4.testcase new file mode 100644 index 0000000..a6a2140 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin4.testcase @@ -0,0 +1,7 @@ +PtDistWithin invalid arg: NULL use-sferoid +:memory: +SELECT PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), 10.0, NULL); +1 # rows +1 # column +PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), 10.0, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin5.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin5.testcase new file mode 100644 index 0000000..38f5e66 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin5.testcase @@ -0,0 +1,7 @@ +PtDistWithin invalid arg: TEXT pt1 +:memory: +SELECT PtDistWithin('a', GeomFromText("POINT(5 5)", 4326), 10.0, 1); +1 # rows +1 # column +PtDistWithin('a', GeomFromText("POINT(5 5)", 4326), 10.0, 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin6.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin6.testcase new file mode 100644 index 0000000..5a89a8e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin6.testcase @@ -0,0 +1,7 @@ +PtDistWithin invalid arg: TEXT pt2 +:memory: +SELECT PtDistWithin(GeomFromText("POINT(5 5)", 4326), 'a', 10.0, 1); +1 # rows +1 # column +PtDistWithin(GeomFromText("POINT(5 5)", 4326), 'a', 10.0, 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin7.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin7.testcase new file mode 100644 index 0000000..834a64a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin7.testcase @@ -0,0 +1,7 @@ +PtDistWithin invalid arg: TEXT distance +:memory: +SELECT PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), 'a', 1); +1 # rows +1 # column +PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), 'a', 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin8.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin8.testcase new file mode 100644 index 0000000..938c21b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin8.testcase @@ -0,0 +1,7 @@ +PtDistWithin invalid arg: TEXT use-sferoid +:memory: +SELECT PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), 10.0, 'a'); +1 # rows +1 # column +PtDistWithin(GeomFromText("POINT(5.1 5.1)", 4326), GeomFromText("POINT(5 5)", 4326), 10.0, 'a') +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin9.testcase b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin9.testcase new file mode 100644 index 0000000..9c9db5f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ptdistwithin9.testcase @@ -0,0 +1,7 @@ +PtDistWithin invalid arg: zeroblob pt1 +:memory: +SELECT PtDistWithin(zeroblob(25), GeomFromText("POINT(5 5)", 4326), 10.0, 1); +1 # rows +1 # column +PtDistWithin(zeroblob(25), GeomFromText("POINT(5 5)", 4326), 10.0, 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate1.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate1.testcase new file mode 100644 index 0000000..9e5432d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relate1.testcase @@ -0,0 +1,11 @@ +Relate - POINTs identical +:memory: #use in-memory database +SELECT Relate(geom1, geom2, "T*T***T**"), Relate(geom1, geom2, "T*F**FFF*"), Relate(geom1, geom2, "FF*FF****") FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; +1 # rows (not including the header row) +3 # columns +Relate(geom1, geom2, "T*T***T**") # overlaps +Relate(geom1, geom2, "T*F**FFF*") # equal +Relate(geom1, geom2, "FF*FF****") # disjoint +0 +1 +0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate2.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate2.testcase new file mode 100644 index 0000000..96fad2d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relate2.testcase @@ -0,0 +1,7 @@ +Relate - bad blob first arg +:memory: #use in-memory database +SELECT Relate(zeroblob(100), geom2, "T*T***T**") FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; +1 # rows (not including the header row) +1 # columns +Relate(zeroblob(100), geom2, "T*T***T**") +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate3.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate3.testcase new file mode 100644 index 0000000..071160c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relate3.testcase @@ -0,0 +1,7 @@ +Relate - non blob first arg +:memory: #use in-memory database +SELECT Relate("hello", geom2, "T*T***T**") FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; +1 # rows (not including the header row) +1 # columns +Relate("hello", geom2, "T*T***T**") +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate4.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate4.testcase new file mode 100644 index 0000000..3d65a64 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relate4.testcase @@ -0,0 +1,7 @@ +Relate - bad blob second arg +:memory: #use in-memory database +SELECT Relate(geom1, zeroblob(100), "T*T***T**") FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; +1 # rows (not including the header row) +1 # columns +Relate(geom1, zeroblob(100), "T*T***T**") +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate5.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate5.testcase new file mode 100644 index 0000000..0c599f3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relate5.testcase @@ -0,0 +1,7 @@ +Relate - non blob second arg +:memory: #use in-memory database +SELECT Relate(geom1, "foo", "T*T***T**") FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; +1 # rows (not including the header row) +1 # columns +Relate(geom1, "foo", "T*T***T**") +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate6.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate6.testcase new file mode 100644 index 0000000..a19e713 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relate6.testcase @@ -0,0 +1,7 @@ +Relate - non text third arg +:memory: #use in-memory database +SELECT Relate(geom1, geom2, 26.7) FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; +1 # rows (not including the header row) +1 # columns +Relate(geom1, geom2, 26.7) +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate7.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate7.testcase new file mode 100644 index 0000000..017e09a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relate7.testcase @@ -0,0 +1,7 @@ +Relate - bad text third arg +:memory: #use in-memory database +SELECT Relate(geom1, geom2, "") FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; +1 # rows (not including the header row) +1 # columns +Relate(geom1, geom2, "") +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate8.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate8.testcase new file mode 100644 index 0000000..dda5980 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relate8.testcase @@ -0,0 +1,7 @@ +Relate - toxic first arg +:memory: #use in-memory database +SELECT Relate(geom1, geom2, "T*T***T**") FROM (SELECT GeomFromText('LINESTRING(1 1, 1 1)') as geom1, GeomFromText("LINESTRING(1 1, 2 2)") as geom2) dummy; +1 # rows (not including the header row) +1 # columns +Relate(geom1, geom2, "T*T***T**") +0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relate9.testcase b/src/spatialite/test/sql_stmt_geos_tests/relate9.testcase new file mode 100644 index 0000000..387eedd --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relate9.testcase @@ -0,0 +1,7 @@ +Relate - toxic second arg +:memory: #use in-memory database +SELECT Relate(geom1, geom2, "T*T***T**") FROM (SELECT GeomFromText("LINESTRING(1 1, 2 2)") as geom1, GeomFromText('LINESTRING(1 1, 1 1)') as geom2) dummy; +1 # rows (not including the header row) +1 # columns +Relate(geom1, geom2, "T*T***T**") +0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations1.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations1.testcase new file mode 100644 index 0000000..5087999 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relations1.testcase @@ -0,0 +1,21 @@ +Relationship tests - POINTs identical +:memory: #use in-memory database +SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(1 2)") as geom2) dummy; +1 # rows (not including the header row) +8 # columns +Equals(geom1, geom2) +Intersects(geom1, geom2) +Disjoint(geom1, geom2) +Overlaps(geom1, geom2) +Crosses(geom1, geom2) +Touches(geom1, geom2) +Within(geom1, geom2) +Contains(geom1, geom2) +1 +1 +0 +0 +0 +0 +1 +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations2.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations2.testcase new file mode 100644 index 0000000..6438754 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relations2.testcase @@ -0,0 +1,21 @@ +Relationship tests - POINTs different +:memory: #use in-memory database +SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT GeomFromText("POINT(1 2)") as geom1, GeomFromText("POINT(3 4)") as geom2) dummy; +1 # rows (not including the header row) +8 # columns +Equals(geom1, geom2) +Intersects(geom1, geom2) +Disjoint(geom1, geom2) +Overlaps(geom1, geom2) +Crosses(geom1, geom2) +Touches(geom1, geom2) +Within(geom1, geom2) +Contains(geom1, geom2) +0 +0 +1 +0 +0 +0 +0 +0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations3.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations3.testcase new file mode 100644 index 0000000..eda1fa7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relations3.testcase @@ -0,0 +1,21 @@ +Relationship tests - bad first blob +:memory: #use in-memory database +SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT zeroblob(10) as geom1, GeomFromText("POINT(3 4)") as geom2) dummy; +1 # rows (not including the header row) +8 # columns +Equals(geom1, geom2) +Intersects(geom1, geom2) +Disjoint(geom1, geom2) +Overlaps(geom1, geom2) +Crosses(geom1, geom2) +Touches(geom1, geom2) +Within(geom1, geom2) +Contains(geom1, geom2) +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations4.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations4.testcase new file mode 100644 index 0000000..2e5310a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relations4.testcase @@ -0,0 +1,21 @@ +Relationship tests - bad second blob +:memory: #use in-memory database +SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT GeomFromText("POINT(3 4)") as geom1, zeroblob(10) as geom2) dummy; +1 # rows (not including the header row) +8 # columns +Equals(geom1, geom2) +Intersects(geom1, geom2) +Disjoint(geom1, geom2) +Overlaps(geom1, geom2) +Crosses(geom1, geom2) +Touches(geom1, geom2) +Within(geom1, geom2) +Contains(geom1, geom2) +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations5.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations5.testcase new file mode 100644 index 0000000..9830665 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relations5.testcase @@ -0,0 +1,21 @@ +Relationship tests - bad second arg +:memory: #use in-memory database +SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT GeomFromText("POINT(3 4)") as geom1, "hello" as geom2) dummy; +1 # rows (not including the header row) +8 # columns +Equals(geom1, geom2) +Intersects(geom1, geom2) +Disjoint(geom1, geom2) +Overlaps(geom1, geom2) +Crosses(geom1, geom2) +Touches(geom1, geom2) +Within(geom1, geom2) +Contains(geom1, geom2) +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations6.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations6.testcase new file mode 100644 index 0000000..a645dc6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relations6.testcase @@ -0,0 +1,21 @@ +Relationship tests - bad first arg +:memory: #use in-memory database +SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT "hello" as geom1, GeomFromText("POINT(3 4)") as geom2) dummy; +1 # rows (not including the header row) +8 # columns +Equals(geom1, geom2) +Intersects(geom1, geom2) +Disjoint(geom1, geom2) +Overlaps(geom1, geom2) +Crosses(geom1, geom2) +Touches(geom1, geom2) +Within(geom1, geom2) +Contains(geom1, geom2) +-1 +-1 +-1 +-1 +-1 +-1 +-1 +-1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations7.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations7.testcase new file mode 100644 index 0000000..714e231 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relations7.testcase @@ -0,0 +1,21 @@ +Relationship tests - toxic first arg +:memory: #use in-memory database +SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT GeomFromText('LINESTRING(1 1, 1 1)') as geom1, GeomFromText("LINESTRING(1 1, 2 2)") as geom2) dummy; +1 # rows (not including the header row) +8 # columns +Equals(geom1, geom2) +Intersects(geom1, geom2) +Disjoint(geom1, geom2) +Overlaps(geom1, geom2) +Crosses(geom1, geom2) +Touches(geom1, geom2) +Within(geom1, geom2) +Contains(geom1, geom2) +0 +1 +0 +0 +0 +0 +1 +0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/relations8.testcase b/src/spatialite/test/sql_stmt_geos_tests/relations8.testcase new file mode 100644 index 0000000..52fbb61 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/relations8.testcase @@ -0,0 +1,21 @@ +Relationship tests - toxic second arg +:memory: #use in-memory database +SELECT Equals(geom1, geom2), Intersects(geom1, geom2), Disjoint(geom1, geom2), Overlaps(geom1, geom2), Crosses(geom1, geom2), Touches(geom1, geom2), Within(geom1, geom2), Contains(geom1, geom2) FROM (SELECT GeomFromText("LINESTRING(1 1, 2 2)") as geom1, GeomFromText('LINESTRING(1 1, 1 1)') as geom2) dummy; +1 # rows (not including the header row) +8 # columns +Equals(geom1, geom2) +Intersects(geom1, geom2) +Disjoint(geom1, geom2) +Overlaps(geom1, geom2) +Crosses(geom1, geom2) +Touches(geom1, geom2) +Within(geom1, geom2) +Contains(geom1, geom2) +0 +1 +0 +0 +0 +0 +0 +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/ringsnodes1.testcase b/src/spatialite/test/sql_stmt_geos_tests/ringsnodes1.testcase new file mode 100644 index 0000000..6bf9f7e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ringsnodes1.testcase @@ -0,0 +1,7 @@ +RingsCutAtNodes +:memory: #use in-memory database +SELECT AsText(RingsCutAtNodes(GeomFromText("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(RingsCutAtNodes(GeomFromText("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0))"))) +MULTILINESTRING((0 0, 0 10, 10 10, 10 0, 0 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ringsnodes2.testcase b/src/spatialite/test/sql_stmt_geos_tests/ringsnodes2.testcase new file mode 100644 index 0000000..8b5eeb5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ringsnodes2.testcase @@ -0,0 +1,7 @@ +RingsCutAtNodes - with internal ring +:memory: #use in-memory database +SELECT AsText(RingsCutAtNodes(GeomFromText("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0),(1 1, 3 1, 3 3, 1 3, 1 1))"))) +1 # rows (not including the header row) +1 # columns +AsText(RingsCutAtNodes(GeomFromText("POLYGON((0 0, 0 10, 10 10, 10 0, 0 0),(1 1, 3 1, 3 3, 1 3, 1 1))"))) +MULTILINESTRING((0 0, 0 10, 10 10, 10 0, 0 0), (1 1, 3 1, 3 3, 1 3, 1 1)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ringsnodes3.testcase b/src/spatialite/test/sql_stmt_geos_tests/ringsnodes3.testcase new file mode 100644 index 0000000..08c43dd --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ringsnodes3.testcase @@ -0,0 +1,7 @@ +RingsCutAtNodes - non-blob +:memory: #use in-memory database +SELECT RingsCutAtNodes("hello") +1 # rows (not including the header row) +1 # columns +RingsCutAtNodes("hello") +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ringsnodes4.testcase b/src/spatialite/test/sql_stmt_geos_tests/ringsnodes4.testcase new file mode 100644 index 0000000..743e869 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ringsnodes4.testcase @@ -0,0 +1,7 @@ +RingsCutAtNodes - bad blob +:memory: #use in-memory database +SELECT RingsCutAtNodes(zeroblob(100)) +1 # rows (not including the header row) +1 # columns +RingsCutAtNodes(zeroblob(100)) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ringsnodes5.testcase b/src/spatialite/test/sql_stmt_geos_tests/ringsnodes5.testcase new file mode 100644 index 0000000..31a11a6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ringsnodes5.testcase @@ -0,0 +1,7 @@ +RingsCutAtNodes - non-polygon (point) +:memory: #use in-memory database +SELECT RingsCutAtNodes(GeomFromText("POINT(1 2)")) +1 # rows (not including the header row) +1 # columns +RingsCutAtNodes(GeomFromText("POINT(1 2)")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/ringsnodes6.testcase b/src/spatialite/test/sql_stmt_geos_tests/ringsnodes6.testcase new file mode 100644 index 0000000..a2568a3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/ringsnodes6.testcase @@ -0,0 +1,7 @@ +RingsCutAtNodes - non-polygon (linestring) +:memory: #use in-memory database +SELECT RingsCutAtNodes(GeomFromText("LINESTRING(1 3, 2 6)")) +1 # rows (not including the header row) +1 # columns +RingsCutAtNodes(GeomFromText("LINESTRING(1 3, 2 6)")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/routing6.testcase b/src/spatialite/test/sql_stmt_geos_tests/routing6.testcase new file mode 100644 index 0000000..feb7d56 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/routing6.testcase @@ -0,0 +1,10 @@ +routing: integer ids (A*, from-to) +sql_stmt_tests/testdb1.sqlite +UPDATE roads_net SET Algorithm = 'a*'; SELECT GLength(Geometry) FROM roads_net WHERE NodeTo = 29 AND NodeFrom = 32; +4 # rows (not including the header row) +1 # columns +GLength(Geometry) +0.0018:4 +(NULL) +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths1.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths1.testcase new file mode 100644 index 0000000..47367bf --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths1.testcase @@ -0,0 +1,7 @@ +shared paths - two lines +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("LINESTRING(0 0, 10 0)"),GeomFromText("LINESTRING(5 0, 15 0)"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("LINESTRING(0 0, 10 0)"),GeomFromText("LINESTRING(5 0, 15 0)"))) +MULTILINESTRING((5 0, 10 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths10.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths10.testcase new file mode 100644 index 0000000..7f5a1d2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths10.testcase @@ -0,0 +1,7 @@ +shared paths - two lineZ +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("LINESTRINGZ(0 0 1, 10 0 1)"),GeomFromText("LINESTRINGZ(5 0 1, 15 0 1)"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("LINESTRINGZ(0 0 1, 10 0 1)"),GeomFromText("LINESTRINGZ(5 0 1, 15 0 1)"))) +MULTILINESTRING Z((5 0 1, 10 0 1)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths11.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths11.testcase new file mode 100644 index 0000000..3cb23ca --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths11.testcase @@ -0,0 +1,7 @@ +shared paths - two lineZM +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("LINESTRINGZM(0 0 4 1, 10 0 4 1)"),GeomFromText("LINESTRINGZM(5 0 4 1, 15 0 4 1)"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("LINESTRINGZM(0 0 4 1, 10 0 4 1)"),GeomFromText("LINESTRINGZM(5 0 4 1, 15 0 4 1)"))) +MULTILINESTRING ZM((5 0 4 0, 10 0 4 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths12.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths12.testcase new file mode 100644 index 0000000..09f9b09 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths12.testcase @@ -0,0 +1,7 @@ +shared paths - two polygonZM +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("POLYGONZM((0 0 4 1, 10 0 4 1, 10 10 4 1, 0 10 4 1, 0 0 4 1))"),GeomFromText("POLYGONZM((5 0 4 1, 15 0 4 1, 15 10 4 1, 5 10 4 1, 5 0 4 1))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("POLYGONZM((0 0 4 1, 10 0 4 1, 10 10 4 1, 0 10 4 1, 0 0 4 1))"),GeomFromText("POLYGONZM((5 0 4 1, 15 0 4 1, 15 10 4 1, 5 10 4 1, 5 0 4 1))"))) +MULTILINESTRING ZM((5 0 4 0, 10 0 4 0), (10 10 4 0, 5 10 4 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths13.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths13.testcase new file mode 100644 index 0000000..70a2655 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths13.testcase @@ -0,0 +1,7 @@ +shared paths - two polygonZ +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("POLYGONZ((0 0 4, 10 0 4, 10 10 4, 0 10 4, 0 0 4))"),GeomFromText("POLYGONZ((5 0 4, 15 0 4, 15 10 4, 5 10 4, 5 0 4))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("POLYGONZ((0 0 4, 10 0 4, 10 10 4, 0 10 4, 0 0 4))"),GeomFromText("POLYGONZ((5 0 4, 15 0 4, 15 10 4, 5 10 4, 5 0 4))"))) +MULTILINESTRING Z((5 0 4, 10 0 4), (10 10 4, 5 10 4)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths14.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths14.testcase new file mode 100644 index 0000000..d182502 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths14.testcase @@ -0,0 +1,7 @@ +shared paths - two polygonM +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("POLYGONM((0 0 4, 10 0 4, 10 10 4, 0 10 4, 0 0 4))"),GeomFromText("POLYGONM((5 0 4, 15 0 4, 15 10 4, 5 10 4, 5 0 4))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("POLYGONM((0 0 4, 10 0 4, 10 10 4, 0 10 4, 0 0 4))"),GeomFromText("POLYGONM((5 0 4, 15 0 4, 15 10 4, 5 10 4, 5 0 4))"))) +MULTILINESTRING M((5 0 0, 10 0 0), (10 10 0, 5 10 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths15.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths15.testcase new file mode 100644 index 0000000..aee43b9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths15.testcase @@ -0,0 +1,7 @@ +shared paths - two polygon, internal ring +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 3 1, 3 3, 1 3, 1 1))"),GeomFromText("POLYGON((5 0, 15 0, 15 10, 5 10, 5 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0),(1 1, 3 1, 3 3, 1 3, 1 1))"),GeomFromText("POLYGON((5 0, 15 0, 15 10, 5 10, 5 0))"))) +MULTILINESTRING((5 0, 10 0), (10 10, 5 10)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths16.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths16.testcase new file mode 100644 index 0000000..b92f327 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths16.testcase @@ -0,0 +1,7 @@ +shared paths - two polygon +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"),GeomFromText("POLYGON((5 0, 15 0, 15 10, 5 10, 5 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"),GeomFromText("POLYGON((5 0, 15 0, 15 10, 5 10, 5 0))"))) +MULTILINESTRING((5 0, 10 0), (10 10, 5 10)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths17.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths17.testcase new file mode 100644 index 0000000..c018e48 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths17.testcase @@ -0,0 +1,7 @@ +shared paths - two polygon - different overlap +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"),GeomFromText("POLYGON((-5 0, 15 0, 15 10, -5 10, -5 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"),GeomFromText("POLYGON((-5 0, 15 0, 15 10, -5 10, -5 0))"))) +MULTILINESTRING((0 0, 10 0), (10 10, 0 10)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths18.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths18.testcase new file mode 100644 index 0000000..3ea0f74 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths18.testcase @@ -0,0 +1,7 @@ +shared paths - two polygon - different overlap +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"),GeomFromText("POLYGON((5 0, 15 0, 15 10, -5 10, -5 0, 5 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0))"),GeomFromText("POLYGON((5 0, 15 0, 15 10, -5 10, -5 0, 5 0))"))) +MULTILINESTRING((0 0, 5 0, 10 0), (10 10, 0 10)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths19.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths19.testcase new file mode 100644 index 0000000..3980fce --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths19.testcase @@ -0,0 +1,7 @@ +shared paths - two polygonZ, internal ring +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("POLYGONZ((0 0 2, 10 0 12, 10 10 12, 0 10 2, 0 0 2),(1 1 3, 3 1 5, 3 3 5, 1 3 3, 1 1 3))"),GeomFromText("POLYGONZ((5 0 7, 15 0 17, 15 10 17, 5 10 7, 5 0 7))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("POLYGONZ((0 0 2, 10 0 12, 10 10 12, 0 10 2, 0 0 2),(1 1 3, 3 1 5, 3 3 5, 1 3 3, 1 1 3))"),GeomFromText("POLYGONZ((5 0 7, 15 0 17, 15 10 17, 5 10 7, 5 0 7))"))) +MULTILINESTRING Z((5 0 7, 10 0 12), (10 10 12, 5 10 7)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths2.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths2.testcase new file mode 100644 index 0000000..c85a603 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths2.testcase @@ -0,0 +1,7 @@ +shared paths - zeroblob first arg +:memory: #use in-memory database +SELECT AsText(SharedPaths(zeroblob(100),GeomFromText("LINESTRING(5 0, 15 0)"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(zeroblob(100),GeomFromText("LINESTRING(5 0, 15 0)"))) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths20.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths20.testcase new file mode 100644 index 0000000..95189d3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths20.testcase @@ -0,0 +1,7 @@ +shared paths - two polygonZM, internal ring +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("POLYGONZM((0 0 2 4, 10 0 12 4, 10 10 12 4, 0 10 2 4, 0 0 2 4),(1 1 3 5, 3 1 5 5, 3 3 5 5, 1 3 3 5, 1 1 3 5))"),GeomFromText("POLYGONZM((5 0 7 4, 15 0 17 4, 15 10 17 4, 5 10 7 4, 5 0 7 4))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("POLYGONZM((0 0 2 4, 10 0 12 4, 10 10 12 4, 0 10 2 4, 0 0 2 4),(1 1 3 5, 3 1 5 5, 3 3 5 5, 1 3 3 5, 1 1 3 5))"),GeomFromText("POLYGONZM((5 0 7 4, 15 0 17 4, 15 10 17 4, 5 10 7 4, 5 0 7 4))"))) +MULTILINESTRING ZM((5 0 7 0, 10 0 12 0), (10 10 12 0, 5 10 7 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths21.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths21.testcase new file mode 100644 index 0000000..c499a6d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths21.testcase @@ -0,0 +1,7 @@ +shared paths - two polygonM, internal ring +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("POLYGONM((0 0 4, 10 0 4, 10 10 4, 0 10 4, 0 0 4),(1 1 5, 3 1 5, 3 3 5, 1 3 5, 1 1 5))"),GeomFromText("POLYGONM((5 0 4, 15 0 4, 15 10 4, 5 10 4, 5 0 4))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("POLYGONM((0 0 4, 10 0 4, 10 10 4, 0 10 4, 0 0 4),(1 1 5, 3 1 5, 3 3 5, 1 3 5, 1 1 5))"),GeomFromText("POLYGONM((5 0 4, 15 0 4, 15 10 4, 5 10 4, 5 0 4))"))) +MULTILINESTRING M((5 0 0, 10 0 0), (10 10 0, 5 10 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths22.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths22.testcase new file mode 100644 index 0000000..344e247 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths22.testcase @@ -0,0 +1,7 @@ +shared paths - two multilines +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRING((0 0, 10 0),(12 0, 16 0))"),GeomFromText("LINESTRING(5 0, 15 0)"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("MULTILINESTRING((0 0, 10 0),(12 0, 16 0))"),GeomFromText("LINESTRING(5 0, 15 0)"))) +MULTILINESTRING((5 0, 10 0), (12 0, 15 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths23.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths23.testcase new file mode 100644 index 0000000..2ceef0e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths23.testcase @@ -0,0 +1,7 @@ +shared paths - two multilines, reverse order +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRING((0 0, 10 0),(16 0, 12 0))"),GeomFromText("LINESTRING(5 0, 15 0)"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("MULTILINESTRING((0 0, 10 0),(16 0, 12 0))"),GeomFromText("LINESTRING(5 0, 15 0)"))) +MULTILINESTRING((5 0, 10 0), (15 0, 12 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths24.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths24.testcase new file mode 100644 index 0000000..6af5a2b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths24.testcase @@ -0,0 +1,7 @@ +shared paths - multiline +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("LINESTRING(5 0, 15 0)"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("LINESTRING(5 0, 15 0)"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0))"))) +MULTILINESTRING((5 0, 6 0, 10 0, 11 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths25.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths25.testcase new file mode 100644 index 0000000..37c7309 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths25.testcase @@ -0,0 +1,7 @@ +shared paths - multiline +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0),(5 0, 5 5))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0),(5 0, 5 5))"))) +MULTILINESTRING((5 5, 5 0, 6 0, 10 0, 11 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths26.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths26.testcase new file mode 100644 index 0000000..22895ae --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths26.testcase @@ -0,0 +1,7 @@ +shared paths - multiline, not quite matching +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0),(5 5, 5 1))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0),(5 5, 5 1))"))) +MULTILINESTRING((5 0, 6 0, 10 0, 11 0), (5 1, 5 5)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths27.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths27.testcase new file mode 100644 index 0000000..599d83c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths27.testcase @@ -0,0 +1,7 @@ +shared paths - multiline +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0),(5 5, 5 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(11 0, 5 0),(5 5, 5 0))"))) +MULTILINESTRING((5 5, 5 0, 6 0, 10 0, 11 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths28.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths28.testcase new file mode 100644 index 0000000..a6806bb --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths28.testcase @@ -0,0 +1,7 @@ +shared paths - multilineZ - prepend +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRINGZ((5 0 10, 15 0 30),(5 0 10, 5 5 10))"),GeomFromText("MULTILINESTRINGZ((0 0 0, 4 0 8, 6 0 12, 10 0 20),(11 0 22, 5 0 10),(5 0 10, 5 5 10))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("MULTILINESTRINGZ((5 0 10, 15 0 30),(5 0 10, 5 5 10))"),GeomFromText("MULTILINESTRINGZ((0 0 0, 4 0 8, 6 0 12, 10 0 20),(11 0 22, 5 0 10),(5 0 10, 5 5 10))"))) +MULTILINESTRING Z((5 5 10, 5 0 10, 6 0 12, 10 0 20, 11 0 22)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths29.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths29.testcase new file mode 100644 index 0000000..00bbd57 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths29.testcase @@ -0,0 +1,7 @@ +shared paths - multilineM - prepend +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRINGM((5 0 10, 15 0 30),(5 0 10, 5 5 10))"),GeomFromText("MULTILINESTRINGM((0 0 0, 4 0 8, 6 0 12, 10 0 20),(11 0 22, 5 0 10),(5 0 10, 5 5 10))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("MULTILINESTRINGM((5 0 10, 15 0 30),(5 0 10, 5 5 10))"),GeomFromText("MULTILINESTRINGM((0 0 0, 4 0 8, 6 0 12, 10 0 20),(11 0 22, 5 0 10),(5 0 10, 5 5 10))"))) +MULTILINESTRING M((5 5 0, 5 0 0, 6 0 0, 10 0 0, 11 0 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths3.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths3.testcase new file mode 100644 index 0000000..03624a0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths3.testcase @@ -0,0 +1,7 @@ +shared paths - zeroblob second arg +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("LINESTRING(5 0, 15 0)"),zeroblob(100))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("LINESTRING(5 0, 15 0)"),zeroblob(100))) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths30.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths30.testcase new file mode 100644 index 0000000..86b0229 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths30.testcase @@ -0,0 +1,7 @@ +shared paths - multilineZM - prepend +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRINGZM((5 0 10 0, 15 0 30 0),(5 0 10 0, 5 5 10 0))"),GeomFromText("MULTILINESTRINGZM((0 0 0 0, 4 0 8 0, 6 0 12 0, 10 0 20 0),(11 0 22 0, 5 0 10 0),(5 0 10 0, 5 5 10 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("MULTILINESTRINGZM((5 0 10 0, 15 0 30 0),(5 0 10 0, 5 5 10 0))"),GeomFromText("MULTILINESTRINGZM((0 0 0 0, 4 0 8 0, 6 0 12 0, 10 0 20 0),(11 0 22 0, 5 0 10 0),(5 0 10 0, 5 5 10 0))"))) +MULTILINESTRING ZM((5 5 10 0, 5 0 10 0, 6 0 12 0, 10 0 20 0, 11 0 22 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths31.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths31.testcase new file mode 100644 index 0000000..35bb520 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths31.testcase @@ -0,0 +1,7 @@ +shared paths - multiline, reverse +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(5 0, 11 0),(5 0, 5 5))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 15 0),(5 0, 5 5))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(5 0, 11 0),(5 0, 5 5))"))) +MULTILINESTRING((5 5, 5 0, 6 0, 10 0, 11 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths32.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths32.testcase new file mode 100644 index 0000000..cf47c9a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths32.testcase @@ -0,0 +1,7 @@ +shared paths - multiline, reverse first +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 5 5),(5 0, 15 0))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(5 0, 11 0),(5 0, 5 5))"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("MULTILINESTRING((5 0, 5 5),(5 0, 15 0))"),GeomFromText("MULTILINESTRING((0 0, 4 0, 6 0, 10 0),(5 0, 11 0),(5 0, 5 5))"))) +MULTILINESTRING((11 0, 10 0, 6 0, 5 0, 5 5)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths4.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths4.testcase new file mode 100644 index 0000000..e537c05 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths4.testcase @@ -0,0 +1,7 @@ +shared paths - non-blob second arg +:memory: #use in-memory database +SELECT SharedPaths(GeomFromText("LINESTRING(5 0, 15 0)"), 3.4) +1 # rows (not including the header row) +1 # columns +SharedPaths(GeomFromText("LINESTRING(5 0, 15 0)"), 3.4) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths5.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths5.testcase new file mode 100644 index 0000000..93d0593 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths5.testcase @@ -0,0 +1,7 @@ +shared paths - non-blob first arg +:memory: #use in-memory database +SELECT SharedPaths(1, GeomFromText("LINESTRING(5 0, 15 0)")) +1 # rows (not including the header row) +1 # columns +SharedPaths(1, GeomFromText("LINESTRING(5 0, 15 0)")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths6.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths6.testcase new file mode 100644 index 0000000..28d4697 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths6.testcase @@ -0,0 +1,7 @@ +shared paths - two lines, no intersect. +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("LINESTRING(0 0, 1 0)"),GeomFromText("LINESTRING(5 0, 15 0)"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("LINESTRING(0 0, 1 0)"),GeomFromText("LINESTRING(5 0, 15 0)"))) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths7.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths7.testcase new file mode 100644 index 0000000..a0ca486 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths7.testcase @@ -0,0 +1,7 @@ +shared paths - line and point +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("LINESTRING(0 0, 1 0)"),GeomFromText("POINT(15 0)"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("LINESTRING(0 0, 1 0)"),GeomFromText("POINT(15 0)"))) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths8.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths8.testcase new file mode 100644 index 0000000..e24b7c5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths8.testcase @@ -0,0 +1,7 @@ +shared paths - point and line +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("POINT(15 0)"),GeomFromText("LINESTRING(0 0, 1 0)"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("POINT(15 0)"),GeomFromText("LINESTRING(0 0, 1 0)"))) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/sharedpaths9.testcase b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths9.testcase new file mode 100644 index 0000000..a7e69b7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/sharedpaths9.testcase @@ -0,0 +1,7 @@ +shared paths - two lineM +:memory: #use in-memory database +SELECT AsText(SharedPaths(GeomFromText("LINESTRINGM(1 2 1, 10 2 1)"),GeomFromText("LINESTRINGM(5 2 1, 15 2 1)"))) +1 # rows (not including the header row) +1 # columns +AsText(SharedPaths(GeomFromText("LINESTRINGM(1 2 1, 10 2 1)"),GeomFromText("LINESTRINGM(5 2 1, 15 2 1)"))) +MULTILINESTRING M((5 2 0, 10 2 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/shortestline1.testcase b/src/spatialite/test/sql_stmt_geos_tests/shortestline1.testcase new file mode 100644 index 0000000..a39e245 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/shortestline1.testcase @@ -0,0 +1,8 @@ +ShortestLine - line and point +:memory: #use in-memory database +SELECT AsText(ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("POINT(0 2)"))) +1 # rows (not including the header row) +1 # columns +AsText(ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("POINT(0 2)"))) +LINESTRING(0 0, 0 2) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/shortestline2.testcase b/src/spatialite/test/sql_stmt_geos_tests/shortestline2.testcase new file mode 100644 index 0000000..c685559 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/shortestline2.testcase @@ -0,0 +1,8 @@ +ShortestLine - line and point +:memory: #use in-memory database +SELECT AsText(ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("POINT(10 2)"))) +1 # rows (not including the header row) +1 # columns +AsText(ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("POINT(10 2)"))) +LINESTRING(10 0, 10 2) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/shortestline3.testcase b/src/spatialite/test/sql_stmt_geos_tests/shortestline3.testcase new file mode 100644 index 0000000..da7b982 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/shortestline3.testcase @@ -0,0 +1,8 @@ +ShortestLine - zeroblob first arg +:memory: #use in-memory database +SELECT ShortestLine(zeroblob(100), GeomFromText("POINT(10 2)")) +1 # rows (not including the header row) +1 # columns +ShortestLine(zeroblob(100), GeomFromText("POINT(10 2)")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/shortestline4.testcase b/src/spatialite/test/sql_stmt_geos_tests/shortestline4.testcase new file mode 100644 index 0000000..21b5940 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/shortestline4.testcase @@ -0,0 +1,8 @@ +ShortestLine - non-blob first arg +:memory: #use in-memory database +SELECT ShortestLine(3, GeomFromText("POINT(10 2)")) +1 # rows (not including the header row) +1 # columns +ShortestLine(3, GeomFromText("POINT(10 2)")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/shortestline5.testcase b/src/spatialite/test/sql_stmt_geos_tests/shortestline5.testcase new file mode 100644 index 0000000..b8a1044 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/shortestline5.testcase @@ -0,0 +1,8 @@ +ShortestLine - zeroblob second arg +:memory: #use in-memory database +SELECT ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), zeroblob(487)) +1 # rows (not including the header row) +1 # columns +ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), zeroblob(487)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/shortestline6.testcase b/src/spatialite/test/sql_stmt_geos_tests/shortestline6.testcase new file mode 100644 index 0000000..9e0b31a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/shortestline6.testcase @@ -0,0 +1,8 @@ +ShortestLine - non-blob second arg +:memory: #use in-memory database +SELECT ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), 3.4) +1 # rows (not including the header row) +1 # columns +ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), 3.4) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/shortestline7.testcase b/src/spatialite/test/sql_stmt_geos_tests/shortestline7.testcase new file mode 100644 index 0000000..ec2e664 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/shortestline7.testcase @@ -0,0 +1,8 @@ +ShortestLine - coincident lines +:memory: #use in-memory database +SELECT ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(10 0, 0 0)")) +1 # rows (not including the header row) +1 # columns +ShortestLine(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(10 0, 0 0)")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify1.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify1.testcase new file mode 100644 index 0000000..cc7f8e3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify1.testcase @@ -0,0 +1,10 @@ +Simplify - linestring +:memory: #use in-memory database +SELECT AsText(Simplify(geom, 0.1)), AsText(SimplifyPreserveTopology(geom, 0.1)) FROM (SELECT GeomFromText("LINESTRING(1 2, 4 5)") as geom) dummy +1 # rows (not including the header row) +2 # columns +AsText(Simplify(geom, 0.1)) +AsText(SimplifyPreserveTopology(geom, 0.1)) +LINESTRING(1 2, 4 5) +LINESTRING(1 2, 4 5) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify10.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify10.testcase new file mode 100644 index 0000000..ad1a697 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify10.testcase @@ -0,0 +1,8 @@ +SimplifyPreserveTopology - negative second arg +:memory: #use in-memory database +SELECT SimplifyPreserveTopology(GeomFromText("LINESTRING(1 2, 3 4)"), -287.3) +1 # rows (not including the header row) +1 # columns +SimplifyPreserveTopology(GeomFromText("LINESTRING(1 2, 3 4)"), -287.3) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify11.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify11.testcase new file mode 100644 index 0000000..0d903e8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify11.testcase @@ -0,0 +1,8 @@ +SimplifyPreserveTopology - zeroblob arg +:memory: #use in-memory database +SELECT SimplifyPreserveTopology(zeroblob(1000), 0) +1 # rows (not including the header row) +1 # columns +SimplifyPreserveTopology(zeroblob(1000), 0) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify12.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify12.testcase new file mode 100644 index 0000000..0f116e8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify12.testcase @@ -0,0 +1,10 @@ +Simplify - linestringZ +:memory: #use in-memory database +SELECT AsText(Simplify(geom, 0.1)), AsText(SimplifyPreserveTopology(geom, 0.1)) FROM (SELECT GeomFromText("LINESTRINGZ(1 2 1, 4.0001 4.9999 5, 4 5 5)") as geom) dummy +1 # rows (not including the header row) +2 # columns +AsText(Simplify(geom, 0.1)) +AsText(SimplifyPreserveTopology(geom, 0.1)) +LINESTRING Z(1 2 1, 4 5 5) +LINESTRING Z(1 2 1, 4 5 5) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify13.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify13.testcase new file mode 100644 index 0000000..cda6aea --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify13.testcase @@ -0,0 +1,10 @@ +Simplify - linestringM +:memory: #use in-memory database +SELECT AsText(Simplify(geom, 0.1)), AsText(SimplifyPreserveTopology(geom, 0.1)) FROM (SELECT GeomFromText("LINESTRINGM(1 2 1, 4.0001 4.9999 5, 4 5 5)") as geom) dummy +1 # rows (not including the header row) +2 # columns +AsText(Simplify(geom, 0.1)) +AsText(SimplifyPreserveTopology(geom, 0.1)) +LINESTRING M(1 2 0, 4 5 0) +LINESTRING M(1 2 0, 4 5 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify14.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify14.testcase new file mode 100644 index 0000000..1c7e35a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify14.testcase @@ -0,0 +1,10 @@ +Simplify - linestringZM +:memory: #use in-memory database +SELECT AsText(Simplify(geom, 0.1)), AsText(SimplifyPreserveTopology(geom, 0.1)) FROM (SELECT GeomFromText("LINESTRINGZM(1 2 1 4, 4.0001 4.9999 5 6, 4 5 5 6)") as geom) dummy +1 # rows (not including the header row) +2 # columns +AsText(Simplify(geom, 0.1)) +AsText(SimplifyPreserveTopology(geom, 0.1)) +LINESTRING ZM(1 2 1 0, 4 5 5 0) +LINESTRING ZM(1 2 1 0, 4 5 5 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify15.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify15.testcase new file mode 100644 index 0000000..ac861ff --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify15.testcase @@ -0,0 +1,8 @@ +Simplify - toxic first arg +:memory: #use in-memory database +SELECT AsText(Simplify(GeomFromText('LINESTRING(1 1, 1 1)'),0.1)) +1 # rows (not including the header row) +1 # columns +AsText(Simplify(GeomFromText('LINESTRING(1 1, 1 1)'),0.1)) +LINESTRING(1 1, 1 1) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify16.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify16.testcase new file mode 100644 index 0000000..d647176 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify16.testcase @@ -0,0 +1,8 @@ +SimplifyPreserveTopology - toxic first arg +:memory: #use in-memory database +SELECT AsText(SimplifyPreserveTopology(GeomFromText('LINESTRING(1 1, 1 1)'),0.1)) +1 # rows (not including the header row) +1 # columns +AsText(SimplifyPreserveTopology(GeomFromText('LINESTRING(1 1, 1 1)'),0.1)) +LINESTRING(1 1, 1 1) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify2.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify2.testcase new file mode 100644 index 0000000..afcb759 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify2.testcase @@ -0,0 +1,10 @@ +Simplify - linestring +:memory: #use in-memory database +SELECT AsText(Simplify(geom, 0.1)), AsText(SimplifyPreserveTopology(geom, 0.1)) FROM (SELECT GeomFromText("LINESTRING(1 2, 4.0001 4.9999, 4 5)") as geom) dummy +1 # rows (not including the header row) +2 # columns +AsText(Simplify(geom, 0.1)) +AsText(SimplifyPreserveTopology(geom, 0.1)) +LINESTRING(1 2, 4 5) +LINESTRING(1 2, 4 5) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify3.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify3.testcase new file mode 100644 index 0000000..ef1eddf --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify3.testcase @@ -0,0 +1,10 @@ +Simplify - linestring +:memory: #use in-memory database +SELECT AsText(Simplify(geom, 0)), AsText(SimplifyPreserveTopology(geom, 0)) FROM (SELECT GeomFromText("LINESTRING(1 2, 4 5)") as geom) dummy +1 # rows (not including the header row) +2 # columns +AsText(Simplify(geom, 0)) +AsText(SimplifyPreserveTopology(geom, 0)) +LINESTRING(1 2, 4 5) +LINESTRING(1 2, 4 5) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify4.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify4.testcase new file mode 100644 index 0000000..60dd36e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify4.testcase @@ -0,0 +1,8 @@ +Simplify - bad arg +:memory: #use in-memory database +SELECT Simplify("hello", 0) +1 # rows (not including the header row) +1 # columns +Simplify("hello", 0) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify5.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify5.testcase new file mode 100644 index 0000000..ddd3686 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify5.testcase @@ -0,0 +1,8 @@ +Simplify - bad second arg +:memory: #use in-memory database +SELECT Simplify(GeomFromText("LINESTRING(1 2, 3 4)"), "hello") +1 # rows (not including the header row) +1 # columns +Simplify(GeomFromText("LINESTRING(1 2, 3 4)"), "hello") +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify6.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify6.testcase new file mode 100644 index 0000000..0a817a8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify6.testcase @@ -0,0 +1,8 @@ +Simplify - negative second arg +:memory: #use in-memory database +SELECT Simplify(GeomFromText("LINESTRING(1 2, 3 4)"), -287.3) +1 # rows (not including the header row) +1 # columns +Simplify(GeomFromText("LINESTRING(1 2, 3 4)"), -287.3) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify7.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify7.testcase new file mode 100644 index 0000000..d01e4f0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify7.testcase @@ -0,0 +1,8 @@ +Simplify - zeroblob arg +:memory: #use in-memory database +SELECT Simplify(zeroblob(1000), 0) +1 # rows (not including the header row) +1 # columns +Simplify(zeroblob(1000), 0) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify8.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify8.testcase new file mode 100644 index 0000000..271ee5f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify8.testcase @@ -0,0 +1,8 @@ +SimplifyPreserveTopology - bad arg +:memory: #use in-memory database +SELECT SimplifyPreserveTopology("hello", 0) +1 # rows (not including the header row) +1 # columns +SimplifyPreserveTopology("hello", 0) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/simplify9.testcase b/src/spatialite/test/sql_stmt_geos_tests/simplify9.testcase new file mode 100644 index 0000000..8d6ae5e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/simplify9.testcase @@ -0,0 +1,8 @@ +SimplifyPreserveTopology - bad second arg +:memory: #use in-memory database +SELECT SimplifyPreserveTopology(GeomFromText("LINESTRING(1 2, 3 4)"), "hello") +1 # rows (not including the header row) +1 # columns +SimplifyPreserveTopology(GeomFromText("LINESTRING(1 2, 3 4)"), "hello") +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer1.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer1.testcase new file mode 100644 index 0000000..2c710df --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer1.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - bad args (point, left side) +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer(GeomFromText("Point(1 2)", 4326), 3, 1)); +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer(GeomFromText("Point(1 2)", 4326), 3, 1)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer11.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer11.testcase new file mode 100644 index 0000000..438d13b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer11.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - closed LINESTRING, int radius, left side +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20, 1 20, 1 0, 0 0)"), 3, 1)) +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20, 1 20, 1 0, 0 0)"), 3, 1)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer12.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer12.testcase new file mode 100644 index 0000000..97418a9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer12.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - POLYGON, int radius, right side +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer(GeomFromText("POLYGON((0 0, 0 20, 1 20, 1 0, 0 0))"), 3, 0)) +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer(GeomFromText("POLYGON((0 0, 0 20, 1 20, 1 0, 0 0))"), 3, 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer13.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer13.testcase new file mode 100644 index 0000000..97418a9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer13.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - POLYGON, int radius, right side +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer(GeomFromText("POLYGON((0 0, 0 20, 1 20, 1 0, 0 0))"), 3, 0)) +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer(GeomFromText("POLYGON((0 0, 0 20, 1 20, 1 0, 0 0))"), 3, 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer14.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer14.testcase new file mode 100644 index 0000000..353b420 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer14.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - toxic blob +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 3, 0)) +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 3, 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer15.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer15.testcase new file mode 100644 index 0000000..2fdccb7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer15.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - LINESTRINGZ -X, float radius, right side +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRINGZ(0 20 1, 0 0 2)"), 3.5, 0)) +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer(GeomFromText("LINESTRINGZ(0 20 1, 0 0 2)"), 3.5, 0)) +POLYGON Z((0 20 1, 0 0 2, -3.5 0 nan, -3.5 20 nan, 0 20 1)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer16.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer16.testcase new file mode 100644 index 0000000..17907d4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer16.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - LINESTRINGM -X, float radius, right side +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRINGM(0 20 1, 0 0 2)"), 3.5, 0)); +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer(GeomFromText("LINESTRINGM(0 20 1, 0 0 2)"), 3.5, 0)) +POLYGON M((0 20 0, 0 0 0, -3.5 0 0, -3.5 20 0, 0 20 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer17.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer17.testcase new file mode 100644 index 0000000..1ffcce6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer17.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - LINESTRINGZM -X, float radius, right side +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRINGZM(0 20 1 4, 0 0 2 6)"), 3.5, 0)) +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer(GeomFromText("LINESTRINGZM(0 20 1 4, 0 0 2 6)"), 3.5, 0)) +POLYGON ZM((0 20 1 0, 0 0 2 0, -3.5 0 nan 0, -3.5 20 nan 0, 0 20 1 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer2.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer2.testcase new file mode 100644 index 0000000..a35f3b3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer2.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - LINESTRING X, int radius, left side +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3, 1)); +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3, 1)) +POLYGON((0 20, 0 0, -3 0, -3 20, 0 20)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer3.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer3.testcase new file mode 100644 index 0000000..3be0d22 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer3.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - LINESTRING X, int radius, right side +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3, 0)); +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3, 0)) +POLYGON((0 0, 0 20, 3 20, 3 0, 0 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer4.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer4.testcase new file mode 100644 index 0000000..5579388 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer4.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - LINESTRING X, float radius, right side +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3.5, 0)); +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3.5, 0)) +POLYGON((0 0, 0 20, 3.5 20, 3.5 0, 0 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer5.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer5.testcase new file mode 100644 index 0000000..0c04149 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer5.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - text arg, float radius, right side (error) +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer("hello", 3.5, 0)); +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer("hello", 3.5, 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer6.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer6.testcase new file mode 100644 index 0000000..07b4828 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer6.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - bad blob, float radius, right side (error) +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer(zeroblob(20), 3.5, 0)); +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer(zeroblob(20), 3.5, 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer7.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer7.testcase new file mode 100644 index 0000000..299a96b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer7.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - LINESTRING -X, float radius, right side +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 20, 0 0)"), 3.5, 0)); +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 20, 0 0)"), 3.5, 0)) +POLYGON((0 20, 0 0, -3.5 0, -3.5 20, 0 20)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer8.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer8.testcase new file mode 100644 index 0000000..1b57f29 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer8.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - LINESTRING X, bad radius, right side (error) +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), "foo", 0)); +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), "foo", 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer9.testcase b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer9.testcase new file mode 100644 index 0000000..397d2f6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/singlesidedbuffer9.testcase @@ -0,0 +1,7 @@ +singlesidedbuffer - LINESTRING X, int radius, bad side (error) +:memory: #use in-memory database +SELECT AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3, 3.5)); +1 # rows (not including the header row) +1 # columns +AsText(SingleSidedBuffer(GeomFromText("LINESTRING(0 0, 0 20)"), 3, 3.5)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/snap1.testcase b/src/spatialite/test/sql_stmt_geos_tests/snap1.testcase new file mode 100644 index 0000000..ebcbdd3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/snap1.testcase @@ -0,0 +1,7 @@ +Snap, LINESTRING, point +:memory: #use in-memory database +SELECT AsText(Snap(GeomFromText("POINT(1 1)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2)) +1 # rows (not including the header row) +1 # columns +AsText(Snap(GeomFromText("POINT(1 1)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2)) +POINT(0 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/snap10.testcase b/src/spatialite/test/sql_stmt_geos_tests/snap10.testcase new file mode 100644 index 0000000..58b2ce6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/snap10.testcase @@ -0,0 +1,7 @@ +Snap, LINESTRING, pointZM +:memory: #use in-memory database +SELECT AsText(Snap(GeomFromText("POINTZM(0.1 0.2 1 4)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 0.4)) +1 # rows (not including the header row) +1 # columns +AsText(Snap(GeomFromText("POINTZM(0.1 0.2 1 4)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 0.4)) +POINT ZM(0 0 0 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/snap2.testcase b/src/spatialite/test/sql_stmt_geos_tests/snap2.testcase new file mode 100644 index 0000000..6b96819 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/snap2.testcase @@ -0,0 +1,7 @@ +Snap, LINESTRING, point +:memory: #use in-memory database +SELECT AsText(Snap(GeomFromText("POINT(0.1 0.2)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 0.4)) +1 # rows (not including the header row) +1 # columns +AsText(Snap(GeomFromText("POINT(0.1 0.2)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 0.4)) +POINT(0 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/snap3.testcase b/src/spatialite/test/sql_stmt_geos_tests/snap3.testcase new file mode 100644 index 0000000..b23e70f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/snap3.testcase @@ -0,0 +1,7 @@ +Snap, LINESTRING, point, non-number 3rd arg +:memory: #use in-memory database +SELECT AsText(Snap(GeomFromText("POINT(0.1 0.2)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), "hello")) +1 # rows (not including the header row) +1 # columns +AsText(Snap(GeomFromText("POINT(0.1 0.2)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), "hello")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/snap4.testcase b/src/spatialite/test/sql_stmt_geos_tests/snap4.testcase new file mode 100644 index 0000000..9faa8f9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/snap4.testcase @@ -0,0 +1,7 @@ +Snap - non-blob second arg +:memory: #use in-memory database +SELECT Snap(GeomFromText("POINT(0.1 0.2)"), 5, 0.4) +1 # rows (not including the header row) +1 # columns +Snap(GeomFromText("POINT(0.1 0.2)"), 5, 0.4) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/snap5.testcase b/src/spatialite/test/sql_stmt_geos_tests/snap5.testcase new file mode 100644 index 0000000..a119b05 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/snap5.testcase @@ -0,0 +1,7 @@ +Snap - non blob first arg +:memory: #use in-memory database +SELECT Snap("hello", GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2) +1 # rows (not including the header row) +1 # columns +Snap("hello", GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/snap6.testcase b/src/spatialite/test/sql_stmt_geos_tests/snap6.testcase new file mode 100644 index 0000000..a4f984c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/snap6.testcase @@ -0,0 +1,7 @@ +Snap - bad blob first arg +:memory: #use in-memory database +SELECT Snap(zeroblob(50), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2) +1 # rows (not including the header row) +1 # columns +Snap(zeroblob(50), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/snap7.testcase b/src/spatialite/test/sql_stmt_geos_tests/snap7.testcase new file mode 100644 index 0000000..da823f7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/snap7.testcase @@ -0,0 +1,7 @@ +Snap - bad blob second arg +:memory: #use in-memory database +SELECT Snap(GeomFromText("POINT(0.1 0.2)"), zeroblob(87), 0.4) +1 # rows (not including the header row) +1 # columns +Snap(GeomFromText("POINT(0.1 0.2)"), zeroblob(87), 0.4) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/snap8.testcase b/src/spatialite/test/sql_stmt_geos_tests/snap8.testcase new file mode 100644 index 0000000..8d4b59f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/snap8.testcase @@ -0,0 +1,7 @@ +Snap, mismatched geom dims +:memory: #use in-memory database +SELECT AsText(Snap(GeomFromText("POINTZ(1 1 4)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2)) +1 # rows (not including the header row) +1 # columns +AsText(Snap(GeomFromText("POINTZ(1 1 4)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 2)) +POINT Z(0 0 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/snap9.testcase b/src/spatialite/test/sql_stmt_geos_tests/snap9.testcase new file mode 100644 index 0000000..5d5a9be --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/snap9.testcase @@ -0,0 +1,7 @@ +Snap, LINESTRING, pointM +:memory: #use in-memory database +SELECT AsText(Snap(GeomFromText("POINTM(0.1 0.2 4)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 0.4)) +1 # rows (not including the header row) +1 # columns +AsText(Snap(GeomFromText("POINTM(0.1 0.2 4)"), GeomFromText("LINESTRING(0 0, 0 10, 10 10, 10 0, 0 0)"), 0.4)) +POINT M(0 0 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid1.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid1.testcase new file mode 100644 index 0000000..bc1a36e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid1.testcase @@ -0,0 +1,9 @@ +SquareGrid - NULL geom +:memory: #use in-memory database +SELECT SquareGrid(NULL, 1.0); +1 # rows (not including the header row) +1 # columns +SquareGrid(NULL, 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid10.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid10.testcase new file mode 100644 index 0000000..506ca7a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid10.testcase @@ -0,0 +1,9 @@ +SquareGrid - Polygon geom - text edges_only +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 'alpha'); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 'alpha') +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid11.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid11.testcase new file mode 100644 index 0000000..cb6be6b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid11.testcase @@ -0,0 +1,9 @@ +SquareGrid - Polygon geom - double edges_only +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 1.6); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 1.6) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid12.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid12.testcase new file mode 100644 index 0000000..a302600 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid12.testcase @@ -0,0 +1,9 @@ +SquareGrid - Polygon geom - BLOB edges_only +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, zeroblob(4)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid13.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid13.testcase new file mode 100644 index 0000000..1788a4c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid13.testcase @@ -0,0 +1,9 @@ +SquareGrid - Polygon geom - NULL origin +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, NULL); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, NULL) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid14.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid14.testcase new file mode 100644 index 0000000..1bc8bdf --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid14.testcase @@ -0,0 +1,9 @@ +SquareGrid - Polygon geom - zeroblob origin +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, zeroblob(4)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid15.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid15.testcase new file mode 100644 index 0000000..38363b3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid15.testcase @@ -0,0 +1,9 @@ +SquareGrid - Polygon geom - Linestring origin +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('LINESTRING(0 0, 1 1)')); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('LINESTRING(0 0, 1 1)')) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid16.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid16.testcase new file mode 100644 index 0000000..ec22b57 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid16.testcase @@ -0,0 +1,9 @@ +SquareGrid - Polygon geom - Polygon Origin +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid17.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid17.testcase new file mode 100644 index 0000000..eec79fe --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid17.testcase @@ -0,0 +1,9 @@ +SquareGrid - Polygon geom - negative size +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), -1.0); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), -1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid18.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid18.testcase new file mode 100644 index 0000000..580c09e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid18.testcase @@ -0,0 +1,9 @@ +SquareGrid - Polygon geom - zero size +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 0.0); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 0.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid19.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid19.testcase new file mode 100644 index 0000000..ccf3530 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid19.testcase @@ -0,0 +1,9 @@ +SquareGrid - Polygon geom - MultiPoint Origin +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('MULTIPOINT(0 0, 1 1)')); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('MULTIPOINT(0 0, 1 1)')) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid2.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid2.testcase new file mode 100644 index 0000000..a0895c5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid2.testcase @@ -0,0 +1,9 @@ +SquareGrid - zeroblob geom +:memory: #use in-memory database +SELECT SquareGrid(zeroblob(4), 1.0); +1 # rows (not including the header row) +1 # columns +SquareGrid(zeroblob(4), 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid20.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid20.testcase new file mode 100644 index 0000000..1281d9b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid20.testcase @@ -0,0 +1,11 @@ +SquareGrid - valid - no Origin +:memory: #use in-memory database +SELECT AsText(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0)); +1 # rows (not including the header row) +1 # columns +AsText(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0)) +MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((1 0, 2 0, 2 1, 1 1, 1 0)), ((2 0, 3 0, 3 1, 2 1, 2 0)), ((0 1, 1 1, 1 2, 0 2, 0 1)), ((1 1, 2 1, 2 2, 1 2, 1 1)), ((2 1, 3 1, 3 2, 2 2, 2 1))) + + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid21.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid21.testcase new file mode 100644 index 0000000..e6e681e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid21.testcase @@ -0,0 +1,9 @@ +SquareGrid - valid - with Origin +:memory: #use in-memory database +SELECT AsText(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 0, GeomFromText('POINT(0.1 0.1)'))); +1 # rows (not including the header row) +1 # columns +AsText(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 0, GeomFromText('POINT(0.1 0.1)'))) +MULTIPOLYGON(((0.1 0.1, 1.1 0.1, 1.1 1.1, 0.1 1.1, 0.1 0.1)), ((1.1 0.1, 2.1 0.1, 2.1 1.1, 1.1 1.1, 1.1 0.1)), ((2.1 0.1, 3.1 0.1, 3.1 1.1, 2.1 1.1, 2.1 0.1)), ((0.1 1.1, 1.1 1.1, 1.1 2.1, 0.1 2.1, 0.1 1.1)), ((1.1 1.1, 2.1 1.1, 2.1 2.1, 1.1 2.1, 1.1 1.1)), ((2.1 1.1, 3.1 1.1, 3.1 2.1, 2.1 2.1, 2.1 1.1))) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid22.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid22.testcase new file mode 100644 index 0000000..cf61bca --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid22.testcase @@ -0,0 +1,8 @@ +SquareGrid - valid - no Origin, only_edges +:memory: #use in-memory database +SELECT ST_Length(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1)); +1 # rows (not including the header row) +1 # columns +ST_Length(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1)) +17.0 + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid23.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid23.testcase new file mode 100644 index 0000000..4a8a63a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid23.testcase @@ -0,0 +1,7 @@ +SquareGrid - valid - with Origin, only_edges +:memory: #use in-memory database +SELECT ST_Length(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1, GeomFromText('POINT(0.1 0.1)'))); +1 # rows (not including the header row) +1 # columns +ST_Length(SquareGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1, GeomFromText('POINT(0.1 0.1)'))) +17.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid3.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid3.testcase new file mode 100644 index 0000000..44bfd6e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid3.testcase @@ -0,0 +1,9 @@ +SquareGrid - Point geom +:memory: #use in-memory database +SELECT SquareGrid(MakePoint(1, 1, 4326), 1.0); +1 # rows (not including the header row) +1 # columns +SquareGrid(MakePoint(1, 1, 4326), 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid4.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid4.testcase new file mode 100644 index 0000000..d2f896f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid4.testcase @@ -0,0 +1,9 @@ +SquareGrid - Linestring geom +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('LINESTRING(1 1, 2 2)', 4326), 1.0); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('LINESTRING(1 1, 2 2)', 4326), 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid5.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid5.testcase new file mode 100644 index 0000000..bfe2726 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid5.testcase @@ -0,0 +1,9 @@ +SquareGrid - Collection (Point - Polygon) geom +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid6.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid6.testcase new file mode 100644 index 0000000..c678eef --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid6.testcase @@ -0,0 +1,9 @@ +SquareGrid - Collection (Linestring - Polygon) geom +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 2 2), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 2 2), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid7.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid7.testcase new file mode 100644 index 0000000..f08e3d1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid7.testcase @@ -0,0 +1,9 @@ +SquareGrid - Polygon geom - NULL size +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), NULL); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), NULL) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid8.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid8.testcase new file mode 100644 index 0000000..c33cbd0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid8.testcase @@ -0,0 +1,9 @@ +SquareGrid - Polygon geom - alpha size +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 'alpha'); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 'alpha') +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/squaregrid9.testcase b/src/spatialite/test/sql_stmt_geos_tests/squaregrid9.testcase new file mode 100644 index 0000000..165b30d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/squaregrid9.testcase @@ -0,0 +1,9 @@ +SquareGrid - Polygon geom - NULL edges_only +:memory: #use in-memory database +SELECT SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, NULL); +1 # rows (not including the header row) +1 # columns +SquareGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, NULL) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area1.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area1.testcase new file mode 100644 index 0000000..db47265 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_area1.testcase @@ -0,0 +1,7 @@ +ST_Area - Polygon with 1 interior +:memory: #use in-memory database +SELECT ST_Area(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1))")); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1))")) +12.0 # 16.0 for the exterior, 4.0 for the interior diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area2.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area2.testcase new file mode 100644 index 0000000..dc297ea --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_area2.testcase @@ -0,0 +1,7 @@ +ST_Area - Simple Polygon +:memory: #use in-memory database +SELECT ST_Area(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))")); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))")) +16.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area3.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area3.testcase new file mode 100644 index 0000000..194d9fd --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_area3.testcase @@ -0,0 +1,7 @@ +ST_Area - Linestring +:memory: #use in-memory database +SELECT ST_Area(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0)")); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0)")) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area4.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area4.testcase new file mode 100644 index 0000000..755bbfa --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_area4.testcase @@ -0,0 +1,7 @@ +ST_Area - Linestring not closed +:memory: #use in-memory database +SELECT ST_Area(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0)")); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0)")) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area5.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area5.testcase new file mode 100644 index 0000000..aa0737e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_area5.testcase @@ -0,0 +1,7 @@ +ST_Area - Point +:memory: #use in-memory database +SELECT ST_Area(GeomFromText("POINT(0 0)")); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText("POINT(0 0)")) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area6.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area6.testcase new file mode 100644 index 0000000..9e3c3f2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_area6.testcase @@ -0,0 +1,7 @@ +ST_Area - bad blob (error) +:memory: #use in-memory database +SELECT ST_Area(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_Area(zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area7.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area7.testcase new file mode 100644 index 0000000..b9fc315 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_area7.testcase @@ -0,0 +1,7 @@ +ST_Area - Empty linestring +:memory: #use in-memory database +SELECT ST_Area(GeomFromText("LINESTRING()")); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText("LINESTRING()")) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area8.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area8.testcase new file mode 100644 index 0000000..76c6605 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_area8.testcase @@ -0,0 +1,7 @@ +ST_Area - text (error) +:memory: #use in-memory database +SELECT ST_Area("hello"); +1 # rows (not including the header row) +1 # columns +ST_Area("hello") +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_area9.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_area9.testcase new file mode 100644 index 0000000..59cc9ad --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_area9.testcase @@ -0,0 +1,7 @@ +ST_Area - Toxic Polygon +:memory: #use in-memory database +SELECT ST_Area(GeomFromText('POLYGON((0 0, 0 0, 0 4, 4 0, 0 0))')); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText('POLYGON((0 0, 0 0, 0 4, 4 0, 0 0))')) +8.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length1.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length1.testcase new file mode 100644 index 0000000..00e2b30 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length1.testcase @@ -0,0 +1,7 @@ +ST_Length - Polygon with 1 interior +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1))")); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1))")) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length10.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length10.testcase new file mode 100644 index 0000000..970d3d8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length10.testcase @@ -0,0 +1,7 @@ +ST_Length - MultiLinestring +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("MULTILINESTRING((0 0, 0 4, 4 4, 4 0, 0 0), (10 10, 11 10, 11 11))")); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("MULTILINESTRING((0 0, 0 4, 4 4, 4 0, 0 0), (10 10, 11 10, 11 11))")) +18.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length11.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length11.testcase new file mode 100644 index 0000000..046b0e0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length11.testcase @@ -0,0 +1,7 @@ +ST_Length - GeometryCollection +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(100 100), POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)), LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0), LINESTRING(10 10, 11 10, 11 11), POINT(200 200))")); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(100 100), POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)), LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0), LINESTRING(10 10, 11 10, 11 11), POINT(200 200))")) +18.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length12.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length12.testcase new file mode 100644 index 0000000..9d68499 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length12.testcase @@ -0,0 +1,7 @@ +ST_Length - Polygon with 1 interior (Long/Lat metric - GreatCircle) +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 0); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 0) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length13.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length13.testcase new file mode 100644 index 0000000..5c7f177 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length13.testcase @@ -0,0 +1,7 @@ +ST_Length - Polygon with 1 interior (Long/Lat metric - Ellipsoid) +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 1); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 1) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length14.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length14.testcase new file mode 100644 index 0000000..7317197 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length14.testcase @@ -0,0 +1,7 @@ +ST_Length - Linestring (Long/Lat metric - GreatCircle) +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 0); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 0) +49082.124419:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length15.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length15.testcase new file mode 100644 index 0000000..f938e04 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length15.testcase @@ -0,0 +1,7 @@ +ST_Length - Linestring (Long/Lat metric - Ellipsoid) +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 1); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 1) +48935.452049:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length16.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length16.testcase new file mode 100644 index 0000000..aafc4ab --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length16.testcase @@ -0,0 +1,7 @@ +ST_Length - GeometryCollection (Long/Lat metric - GreatCircle) +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 0); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 0) +49082.124419:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length17.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length17.testcase new file mode 100644 index 0000000..af8bf2b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length17.testcase @@ -0,0 +1,7 @@ +ST_Length - GeometryCollection (Long/Lat metric - Ellipsoid) +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 1); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 1) +48935.452049:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length18.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length18.testcase new file mode 100644 index 0000000..2e185cc --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length18.testcase @@ -0,0 +1,7 @@ +ST_Length - GeometryCollection (Long/Lat metric - text use_ellipsoid) +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length2.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length2.testcase new file mode 100644 index 0000000..37c1cb7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length2.testcase @@ -0,0 +1,7 @@ +ST_Length - Simple Polygon +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))")); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))")) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length3.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length3.testcase new file mode 100644 index 0000000..44ae959 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length3.testcase @@ -0,0 +1,7 @@ +ST_Length - Linestring +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0)")); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0)")) +16.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length4.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length4.testcase new file mode 100644 index 0000000..ae27c54 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length4.testcase @@ -0,0 +1,7 @@ +ST_Length - Linestring not closed +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0)")); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0)")) +12.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length5.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length5.testcase new file mode 100644 index 0000000..8e551b7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length5.testcase @@ -0,0 +1,7 @@ +ST_Length - Point +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("POINT(0 0)")); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("POINT(0 0)")) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length6.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length6.testcase new file mode 100644 index 0000000..e72696b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length6.testcase @@ -0,0 +1,7 @@ +ST_Length - bad blob (error) +:memory: #use in-memory database +SELECT ST_Length(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_Length(zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length7.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length7.testcase new file mode 100644 index 0000000..56fa9ed --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length7.testcase @@ -0,0 +1,7 @@ +ST_Length - Empty linestring +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("LINESTRING()")); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("LINESTRING()")) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length8.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length8.testcase new file mode 100644 index 0000000..5a01e97 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length8.testcase @@ -0,0 +1,7 @@ +ST_Length - toxic linestring +:memory: #use in-memory database +SELECT ST_Length(GeomFromText('LINESTRING(1 1, 1 1)')); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText('LINESTRING(1 1, 1 1)')) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_length9.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_length9.testcase new file mode 100644 index 0000000..5bcd7ac --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_length9.testcase @@ -0,0 +1,7 @@ +ST_Length - MultiPolygon +:memory: #use in-memory database +SELECT ST_Length(GeomFromText("MULTIPOLYGON(((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10)))")); +1 # rows (not including the header row) +1 # columns +ST_Length(GeomFromText("MULTIPOLYGON(((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10)))")) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter1.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter1.testcase new file mode 100644 index 0000000..210acaa --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter1.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - Polygon with 1 interior +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1))")); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1))")) +24.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter10.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter10.testcase new file mode 100644 index 0000000..0931eb8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter10.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - MultiLinestring +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("MULTILINESTRING((0 0, 0 4, 4 4, 4 0, 0 0), (10 10, 11 10, 11 11))")); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("MULTILINESTRING((0 0, 0 4, 4 4, 4 0, 0 0), (10 10, 11 10, 11 11))")) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter11.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter11.testcase new file mode 100644 index 0000000..f07a773 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter11.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - GeometryCollection +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(100 100), POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)), LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0), LINESTRING(10 10, 11 10, 11 11), POINT(200 200))")); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(100 100), POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)), LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0), LINESTRING(10 10, 11 10, 11 11), POINT(200 200))")) +28.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter12.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter12.testcase new file mode 100644 index 0000000..74bed5e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter12.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - Polygon with 1 interior (Long/Lat metric - GreatCircle) +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 0); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 0) +102862.738784:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter13.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter13.testcase new file mode 100644 index 0000000..ba30e17 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter13.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - Polygon with 1 interior (Long/Lat metric - Ellipsoid) +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 1); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55))"), 1) +102821.231470:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter14.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter14.testcase new file mode 100644 index 0000000..80c6f75 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter14.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - Linestring (Long/Lat metric - GreatCircle) +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 0); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 0) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter15.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter15.testcase new file mode 100644 index 0000000..95a7c03 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter15.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - Linestring (Long/Lat metric - Ellipsoid) +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 1); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8)"), 1) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter16.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter16.testcase new file mode 100644 index 0000000..1d8655a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter16.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - GeometryCollection (Long/Lat metric - GreatCircle) +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 0); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 0) +102862.738784:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter17.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter17.testcase new file mode 100644 index 0000000..16dc3ec --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter17.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - GeometryCollection (Long/Lat metric - Ellipsoid) +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 1); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 1) +102821.231470:6 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter18.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter18.testcase new file mode 100644 index 0000000..d3606a6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter18.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - GeometryCollection (Long/Lat metric - text use_ellipsoid) +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("GEOMETRYCOLLECTION(POINT(0.1 0.1), LINESTRING(0.7 0.7, 0.7 0.8, 0.8 0.8, 0.8 0.7, 0.7 0.8), POLYGON((0.5 0.5, 0.5 0.6, 0.6 0.6, 0.6 0.5, 0.5 0.5),(0.55 0.55, 0.56 0.55, 0.56 0.56, 0.56 0.56, 0.055 0.55)))"), 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter2.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter2.testcase new file mode 100644 index 0000000..595cc5d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter2.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - Simple Polygon +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))")); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0))")) +16.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter3.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter3.testcase new file mode 100644 index 0000000..9ca2f4c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter3.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - Linestring +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0)")); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0, 0 0)")) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter4.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter4.testcase new file mode 100644 index 0000000..9c8cf7f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter4.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - Linestring not closed +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0)")); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("LINESTRING(0 0, 0 4, 4 4, 4 0)")) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter5.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter5.testcase new file mode 100644 index 0000000..fb1c1b8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter5.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - Point +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("POINT(0 0)")); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("POINT(0 0)")) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter6.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter6.testcase new file mode 100644 index 0000000..29b15e8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter6.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - bad blob (error) +:memory: #use in-memory database +SELECT ST_Perimeter(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter7.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter7.testcase new file mode 100644 index 0000000..49c59ec --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter7.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - Empty linestring +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("LINESTRING()")); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("LINESTRING()")) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter8.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter8.testcase new file mode 100644 index 0000000..76c5e77 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter8.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - toxic linestring +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText('LINESTRING(1 1, 1 1)')); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText('LINESTRING(1 1, 1 1)')) +0.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/st_perimeter9.testcase b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter9.testcase new file mode 100644 index 0000000..44a98df --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/st_perimeter9.testcase @@ -0,0 +1,7 @@ +ST_Perimeter - MultiPolygon +:memory: #use in-memory database +SELECT ST_Perimeter(GeomFromText("MULTIPOLYGON(((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10)))")); +1 # rows (not including the header row) +1 # columns +ST_Perimeter(GeomFromText("MULTIPOLYGON(((0 0, 0 4, 4 4, 4 0, 0 0),(1 1, 1 3, 3 3, 3 1, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10)))")) +28.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference1.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference1.testcase new file mode 100644 index 0000000..965b023 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/symdifference1.testcase @@ -0,0 +1,9 @@ +symdifference - two points +:memory: #use in-memory database +SELECT AsText(SymDifference(Makepoint(1,2), MakePoint(2,3))) +1 # rows (not including the header row) +1 # columns +AsText(SymDifference(Makepoint(1,2), MakePoint(2,3))) +MULTIPOINT(1 2, 2 3) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference10.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference10.testcase new file mode 100644 index 0000000..0f2fc1e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/symdifference10.testcase @@ -0,0 +1,8 @@ +symdifference - toxic first point +:memory: #use in-memory database +SELECT AsText(SymDifference(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))); +1 # rows (not including the header row) +1 # columns +AsText(SymDifference(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference11.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference11.testcase new file mode 100644 index 0000000..05460fe --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/symdifference11.testcase @@ -0,0 +1,8 @@ +symdifference - toxic second point +:memory: #use in-memory database +SELECT AsText(SymDifference(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) +1 # rows (not including the header row) +1 # columns +AsText(SymDifference(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference2.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference2.testcase new file mode 100644 index 0000000..a9bc4a1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/symdifference2.testcase @@ -0,0 +1,9 @@ +symdifference - two points, same +:memory: #use in-memory database +SELECT AsText(SymDifference(Makepoint(1,2), MakePoint(1,2))) +1 # rows (not including the header row) +1 # columns +AsText(SymDifference(Makepoint(1,2), MakePoint(1,2))) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference3.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference3.testcase new file mode 100644 index 0000000..eb3ce00 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/symdifference3.testcase @@ -0,0 +1,9 @@ +symdifference - zeroblob first arg +:memory: #use in-memory database +SELECT AsText(SymDifference(zeroblob(50), MakePoint(1,2))) +1 # rows (not including the header row) +1 # columns +AsText(SymDifference(zeroblob(50), MakePoint(1,2))) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference4.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference4.testcase new file mode 100644 index 0000000..4354cbd --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/symdifference4.testcase @@ -0,0 +1,9 @@ +symdifference - zeroblob second arg +:memory: #use in-memory database +SELECT AsText(SymDifference(MakePoint(1,2),zeroblob(50))) +1 # rows (not including the header row) +1 # columns +AsText(SymDifference(MakePoint(1,2),zeroblob(50))) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference5.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference5.testcase new file mode 100644 index 0000000..f5b5c1c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/symdifference5.testcase @@ -0,0 +1,9 @@ +symdifference - non-blob first point +:memory: #use in-memory database +SELECT AsText(SymDifference("hello", MakePoint(1,2))) +1 # rows (not including the header row) +1 # columns +AsText(SymDifference("hello", MakePoint(1,2))) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference6.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference6.testcase new file mode 100644 index 0000000..17cf53a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/symdifference6.testcase @@ -0,0 +1,9 @@ +symdifference - non-blob second point +:memory: #use in-memory database +SELECT AsText(SymDifference(MakePoint(1,2),"hello")) +1 # rows (not including the header row) +1 # columns +AsText(SymDifference(MakePoint(1,2),"hello")) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference7.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference7.testcase new file mode 100644 index 0000000..96a2d6d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/symdifference7.testcase @@ -0,0 +1,9 @@ +symdifference - two pointZ +:memory: #use in-memory database +SELECT AsText(SymDifference(GeomFromText("POINTZ(1 3 4)"),GeomFromText("POINTZ(4 2 6)"))) +1 # rows (not including the header row) +1 # columns +AsText(SymDifference(GeomFromText("POINTZ(1 3 4)"),GeomFromText("POINTZ(4 2 6)"))) +MULTIPOINT Z(1 3 4, 4 2 6) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference8.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference8.testcase new file mode 100644 index 0000000..24e42b9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/symdifference8.testcase @@ -0,0 +1,9 @@ +symdifference - two pointM +:memory: #use in-memory database +SELECT AsText(SymDifference(GeomFromText("POINTM(1 3 4)"),GeomFromText("POINTM(4 2 6)"))) +1 # rows (not including the header row) +1 # columns +AsText(SymDifference(GeomFromText("POINTM(1 3 4)"),GeomFromText("POINTM(4 2 6)"))) +MULTIPOINT M(1 3 0, 4 2 0) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/symdifference9.testcase b/src/spatialite/test/sql_stmt_geos_tests/symdifference9.testcase new file mode 100644 index 0000000..5ab8b92 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/symdifference9.testcase @@ -0,0 +1,9 @@ +symdifference - two pointZM +:memory: #use in-memory database +SELECT AsText(SymDifference(GeomFromText("POINTZM(1 3 6 4)"),GeomFromText("POINTZM(4 2 3 6)"))) +1 # rows (not including the header row) +1 # columns +AsText(SymDifference(GeomFromText("POINTZM(1 3 6 4)"),GeomFromText("POINTZM(4 2 3 6)"))) +MULTIPOINT ZM(1 3 6 0, 4 2 3 0) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/testgeos1.testcase b/src/spatialite/test/sql_stmt_geos_tests/testgeos1.testcase new file mode 100644 index 0000000..2487148 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/testgeos1.testcase @@ -0,0 +1,7 @@ +GEOS test - Equals +test_geos_x.sqlite +SELECT Count(*) FROM comuni AS a, comuni AS b WHERE a.ROWID = 2 AND b.ROWID <> 2 AND ST_Equals(a.geometry, b.geometry) = 1; +1 # rows (not including the header row) +1 # columns +Count(*) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/testgeos10.testcase b/src/spatialite/test/sql_stmt_geos_tests/testgeos10.testcase new file mode 100644 index 0000000..252901b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/testgeos10.testcase @@ -0,0 +1,7 @@ +GEOS test - CoveredBy +test_geos_x.sqlite +SELECT Count(*) FROM comuni AS a, comuni AS b WHERE a.ROWID = 2 AND b.ROWID <> 2 AND ST_CoveredBy(a.geometry, b.geometry) = 1; +1 # rows (not including the header row) +1 # columns +Count(*) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/testgeos2.testcase b/src/spatialite/test/sql_stmt_geos_tests/testgeos2.testcase new file mode 100644 index 0000000..dded825 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/testgeos2.testcase @@ -0,0 +1,7 @@ +GEOS test - Intersects +test_geos_x.sqlite +SELECT Count(*) FROM comuni AS a, comuni AS b WHERE a.ROWID = 2 AND b.ROWID <> 2 AND ST_Intersects(a.geometry, b.geometry) = 1; +1 # rows (not including the header row) +1 # columns +Count(*) +10 diff --git a/src/spatialite/test/sql_stmt_geos_tests/testgeos3.testcase b/src/spatialite/test/sql_stmt_geos_tests/testgeos3.testcase new file mode 100644 index 0000000..9de37fa --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/testgeos3.testcase @@ -0,0 +1,7 @@ +GEOS test - Disjoint +test_geos_x.sqlite +SELECT Count(*) FROM comuni AS a, comuni AS b WHERE a.ROWID = 2 AND b.ROWID <> 2 AND ST_Disjoint(a.geometry, b.geometry) = 1; +1 # rows (not including the header row) +1 # columns +Count(*) +2 diff --git a/src/spatialite/test/sql_stmt_geos_tests/testgeos4.testcase b/src/spatialite/test/sql_stmt_geos_tests/testgeos4.testcase new file mode 100644 index 0000000..bb1da3c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/testgeos4.testcase @@ -0,0 +1,7 @@ +GEOS test - Overlaps +test_geos_x.sqlite +SELECT Count(*) FROM comuni AS a, comuni AS b WHERE a.ROWID = 2 AND b.ROWID <> 2 AND ST_Overlaps(a.geometry, b.geometry) = 1; +1 # rows (not including the header row) +1 # columns +Count(*) +0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/testgeos5.testcase b/src/spatialite/test/sql_stmt_geos_tests/testgeos5.testcase new file mode 100644 index 0000000..1a48610 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/testgeos5.testcase @@ -0,0 +1,7 @@ +GEOS test - Crosses +test_geos_x.sqlite +SELECT Count(*) FROM comuni AS a, comuni AS b WHERE a.ROWID = 2 AND b.ROWID <> 2 AND ST_Crosses(a.geometry, b.geometry) = 1; +1 # rows (not including the header row) +1 # columns +Count(*) +0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/testgeos6.testcase b/src/spatialite/test/sql_stmt_geos_tests/testgeos6.testcase new file mode 100644 index 0000000..e91dbec --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/testgeos6.testcase @@ -0,0 +1,7 @@ +GEOS test - Touches +test_geos_x.sqlite +SELECT Count(*) FROM comuni AS a, comuni AS b WHERE a.ROWID = 2 AND b.ROWID <> 2 AND ST_Touches(a.geometry, b.geometry) = 1; +1 # rows (not including the header row) +1 # columns +Count(*) +9 diff --git a/src/spatialite/test/sql_stmt_geos_tests/testgeos7.testcase b/src/spatialite/test/sql_stmt_geos_tests/testgeos7.testcase new file mode 100644 index 0000000..ececaa0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/testgeos7.testcase @@ -0,0 +1,7 @@ +GEOS test - Within +test_geos_x.sqlite +SELECT Count(*) FROM comuni AS a, comuni AS b WHERE a.ROWID = 2 AND b.ROWID <> 2 AND ST_Within(a.geometry, b.geometry) = 1; +1 # rows (not including the header row) +1 # columns +Count(*) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/testgeos8.testcase b/src/spatialite/test/sql_stmt_geos_tests/testgeos8.testcase new file mode 100644 index 0000000..0152971 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/testgeos8.testcase @@ -0,0 +1,7 @@ +GEOS test - Contains +test_geos_x.sqlite +SELECT Count(*) FROM comuni AS a, comuni AS b WHERE a.ROWID = 2 AND b.ROWID <> 2 AND ST_Contains(a.geometry, b.geometry) = 1; +1 # rows (not including the header row) +1 # columns +Count(*) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/testgeos9.testcase b/src/spatialite/test/sql_stmt_geos_tests/testgeos9.testcase new file mode 100644 index 0000000..9a63c5b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/testgeos9.testcase @@ -0,0 +1,7 @@ +GEOS test - Covers +test_geos_x.sqlite +SELECT Count(*) FROM comuni AS a, comuni AS b WHERE a.ROWID = 2 AND b.ROWID <> 2 AND ST_Covers(a.geometry, b.geometry) = 1; +1 # rows (not including the header row) +1 # columns +Count(*) +1 diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid1.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid1.testcase new file mode 100644 index 0000000..66dd830 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid1.testcase @@ -0,0 +1,9 @@ +TriangularGrid - NULL geom +:memory: #use in-memory database +SELECT TriangularGrid(NULL, 1.0); +1 # rows (not including the header row) +1 # columns +TriangularGrid(NULL, 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid10.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid10.testcase new file mode 100644 index 0000000..f5c29b2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid10.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Polygon geom - text edges_only +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 'alpha'); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 'alpha') +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid11.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid11.testcase new file mode 100644 index 0000000..8f39a19 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid11.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Polygon geom - double edges_only +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 4.5); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 4.5) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid12.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid12.testcase new file mode 100644 index 0000000..fb05393 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid12.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Polygon geom - BLOB edges_only +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, zeroblob(4)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid13.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid13.testcase new file mode 100644 index 0000000..5f166b7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid13.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Polygon geom - NULL origin +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, NULL); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, NULL) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid14.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid14.testcase new file mode 100644 index 0000000..66fa818 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid14.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Polygon geom - zeroblob origin +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, zeroblob(4)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid15.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid15.testcase new file mode 100644 index 0000000..0c67757 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid15.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Polygon geom - Linestring origin +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('LINESTRING(0 0, 1 1)')); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('LINESTRING(0 0, 1 1)')) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid16.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid16.testcase new file mode 100644 index 0000000..5c084c5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid16.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Polygon geom - Polygon Origin +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid17.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid17.testcase new file mode 100644 index 0000000..bc5b81f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid17.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Polygon geom - negative size +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), -1.0); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), -1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid18.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid18.testcase new file mode 100644 index 0000000..bd43850 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid18.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Polygon geom - zero size +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 0.0); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 0.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid19.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid19.testcase new file mode 100644 index 0000000..5cb57af --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid19.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Polygon geom - MultiPoint Origin +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('MULTIPOINT(0 0, 1 1)')); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, 0, GeomFromText('MULTIPOINT(0 0, 1 1)')) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid2.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid2.testcase new file mode 100644 index 0000000..c9c40cb --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid2.testcase @@ -0,0 +1,9 @@ +TriangularGrid - zeroblob geom +:memory: #use in-memory database +SELECT TriangularGrid(zeroblob(4), 1.0); +1 # rows (not including the header row) +1 # columns +TriangularGrid(zeroblob(4), 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid20.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid20.testcase new file mode 100644 index 0000000..542ec00 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid20.testcase @@ -0,0 +1,10 @@ +TriangularGrid - valid - no Origin +:memory: #use in-memory database +SELECT AsText(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0)); +1 # rows (not including the header row) +1 # columns +AsText(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0)) +MULTIPOLYGON(((0 0.866025, 1 0.866025, 0.5 1.732051, 0 0.866025)), ((0.5 1.732051, 1 0.866025, 1.5 1.732051, 0.5 1.732051)), ((1 0.866025, 2 0.866025, 1.5 1.732051, 1 0.866025)), ((1.5 1.732051, 2 0.866025, 2.5 1.732051, 1.5 1.732051)), ((2 0.866025, 3 0.866025, 2.5 1.732051, 2 0.866025))) + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid21.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid21.testcase new file mode 100644 index 0000000..d691017 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid21.testcase @@ -0,0 +1,7 @@ +TriangularGrid - valid - with Origin +:memory: #use in-memory database +SELECT AsText(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 0, GeomFromText('POINT(0.1 0.1)'))); +1 # rows (not including the header row) +1 # columns +AsText(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 0, GeomFromText('POINT(0.1 0.1)'))) +MULTIPOLYGON(((-0.4 1.832051, 0.1 0.966025, 0.6 1.832051, -0.4 1.832051)), ((0.1 0.966025, 1.1 0.966025, 0.6 1.832051, 0.1 0.966025)), ((0.6 1.832051, 1.1 0.966025, 1.6 1.832051, 0.6 1.832051)), ((1.1 0.966025, 2.1 0.966025, 1.6 1.832051, 1.1 0.966025)), ((1.6 1.832051, 2.1 0.966025, 2.6 1.832051, 1.6 1.832051)), ((2.1 0.966025, 3.1 0.966025, 2.6 1.832051, 2.1 0.966025))) diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid22.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid22.testcase new file mode 100644 index 0000000..c6a1fd9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid22.testcase @@ -0,0 +1,10 @@ +TriangularGrid - valid - no Origin, edges_only +:memory: #use in-memory database +SELECT ST_Length(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1)); +1 # rows (not including the header row) +1 # columns +ST_Length(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1)) +9.0 + + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid23.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid23.testcase new file mode 100644 index 0000000..f8826bf --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid23.testcase @@ -0,0 +1,7 @@ +TriangularGrid - valid - with Origin, edges_only +:memory: #use in-memory database +SELECT ST_Length(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1, GeomFromText('POINT(0.1 0.1)'))); +1 # rows (not including the header row) +1 # columns +ST_Length(TriangularGrid(GeomFromText('POLYGON((0.2 0.2, 2.2 0.2, 2.2 1.2, 0.2 1.2, 0.2 0.2))', 4326), 1.0, 1, GeomFromText('POINT(0.1 0.1)'))) +12.0 diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid3.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid3.testcase new file mode 100644 index 0000000..d80c9a5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid3.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Point geom +:memory: #use in-memory database +SELECT TriangularGrid(MakePoint(1, 1, 4326), 1.0); +1 # rows (not including the header row) +1 # columns +TriangularGrid(MakePoint(1, 1, 4326), 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid4.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid4.testcase new file mode 100644 index 0000000..1c60362 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid4.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Linestring geom +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('LINESTRING(1 1, 2 2)', 4326), 1.0); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('LINESTRING(1 1, 2 2)', 4326), 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid5.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid5.testcase new file mode 100644 index 0000000..2626148 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid5.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Collection (Point - Polygon) geom +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid6.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid6.testcase new file mode 100644 index 0000000..22079d8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid6.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Collection (Linestring - Polygon) geom +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 2 2), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 2 2), POLYGON((3 3, 3 4, 4 4, 4 3, 3 3)))', 4326), 1.0) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid7.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid7.testcase new file mode 100644 index 0000000..860427f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid7.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Polygon geom - NULL size +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), NULL); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), NULL) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid8.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid8.testcase new file mode 100644 index 0000000..52f06e3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid8.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Polygon geom - alpha size +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 'alpha'); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 'alpha') +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/trianggrid9.testcase b/src/spatialite/test/sql_stmt_geos_tests/trianggrid9.testcase new file mode 100644 index 0000000..d8aec54 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/trianggrid9.testcase @@ -0,0 +1,9 @@ +TriangularGrid - Polygon geom - NULL edges_only +:memory: #use in-memory database +SELECT TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, NULL); +1 # rows (not including the header row) +1 # columns +TriangularGrid(GeomFromText('POLYGON((3 3, 3 4, 4 4, 4 3, 3 3))', 4326), 1.0, NULL) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/unaryunion1.testcase b/src/spatialite/test/sql_stmt_geos_tests/unaryunion1.testcase new file mode 100644 index 0000000..0d914dc --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/unaryunion1.testcase @@ -0,0 +1,7 @@ +unaryunion - point +:memory: #use in-memory database +SELECT AsText(UnaryUnion(GeomFromText("POINT(1 2)"))); +1 # rows (not including the header row) +1 # columns +AsText(UnaryUnion(GeomFromText("POINT(1 2)"))) +POINT(1 2) diff --git a/src/spatialite/test/sql_stmt_geos_tests/unaryunion2.testcase b/src/spatialite/test/sql_stmt_geos_tests/unaryunion2.testcase new file mode 100644 index 0000000..e785689 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/unaryunion2.testcase @@ -0,0 +1,7 @@ +unaryunion - points +:memory: #use in-memory database +SELECT AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTION(POINT(1 2), POINT(2 3))"))) +1 # rows (not including the header row) +1 # columns +AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTION(POINT(1 2), POINT(2 3))"))); +MULTIPOINT(1 2, 2 3) diff --git a/src/spatialite/test/sql_stmt_geos_tests/unaryunion3.testcase b/src/spatialite/test/sql_stmt_geos_tests/unaryunion3.testcase new file mode 100644 index 0000000..72e2b74 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/unaryunion3.testcase @@ -0,0 +1,7 @@ +unaryunion - points Z +:memory: #use in-memory database +SELECT AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(1 2 3), POINTZ(2 3 4))"))) +1 # rows (not including the header row) +1 # columns +AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(1 2 3), POINTZ(2 3 4))"))); +MULTIPOINT Z(1 2 3, 2 3 4) diff --git a/src/spatialite/test/sql_stmt_geos_tests/unaryunion4.testcase b/src/spatialite/test/sql_stmt_geos_tests/unaryunion4.testcase new file mode 100644 index 0000000..42631f8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/unaryunion4.testcase @@ -0,0 +1,7 @@ +unaryunion - points M +:memory: #use in-memory database +SELECT AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTIONM(POINTM(1 2 3), POINTM(2 3 4))"))) +1 # rows (not including the header row) +1 # columns +AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTIONM(POINTM(1 2 3), POINTM(2 3 4))"))); +MULTIPOINT M(1 2 0, 2 3 0) diff --git a/src/spatialite/test/sql_stmt_geos_tests/unaryunion5.testcase b/src/spatialite/test/sql_stmt_geos_tests/unaryunion5.testcase new file mode 100644 index 0000000..2e6623f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/unaryunion5.testcase @@ -0,0 +1,7 @@ +unaryunion - points ZM +:memory: #use in-memory database +SELECT AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(1 2 3 1), POINTZM(2 3 4 1))"))) +1 # rows (not including the header row) +1 # columns +AsText(UnaryUnion(GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(1 2 3 1), POINTZM(2 3 4 1))"))); +MULTIPOINT ZM(1 2 3 0, 2 3 4 0) diff --git a/src/spatialite/test/sql_stmt_geos_tests/unaryunion6.testcase b/src/spatialite/test/sql_stmt_geos_tests/unaryunion6.testcase new file mode 100644 index 0000000..c25c693 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/unaryunion6.testcase @@ -0,0 +1,7 @@ +unaryunion - non-blob +:memory: #use in-memory database +SELECT AsText(UnaryUnion(3.14)) +1 # rows (not including the header row) +1 # columns +AsText(UnaryUnion(3.14)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/unaryunion7.testcase b/src/spatialite/test/sql_stmt_geos_tests/unaryunion7.testcase new file mode 100644 index 0000000..0572565 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/unaryunion7.testcase @@ -0,0 +1,7 @@ +unaryunion - bad blob +:memory: #use in-memory database +SELECT UnaryUnion(zeroblob(40)) +1 # rows (not including the header row) +1 # columns +UnaryUnion(zeroblob(40)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geos_tests/unaryunion8.testcase b/src/spatialite/test/sql_stmt_geos_tests/unaryunion8.testcase new file mode 100644 index 0000000..51d0f4d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/unaryunion8.testcase @@ -0,0 +1,7 @@ +unaryunion - toxic blob +:memory: #use in-memory database +SELECT AsText(UnaryUnion(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) +1 # rows (not including the header row) +1 # columns +AsText(UnaryUnion(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) +POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5, 136 -35)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union1.testcase b/src/spatialite/test/sql_stmt_geos_tests/union1.testcase new file mode 100644 index 0000000..d3bf92d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union1.testcase @@ -0,0 +1,9 @@ +union - two points +:memory: #use in-memory database +SELECT AsText(GUnion(Makepoint(1,2), MakePoint(2,3))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(Makepoint(1,2), MakePoint(2,3))) +MULTIPOINT(1 2, 2 3) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union10.testcase b/src/spatialite/test/sql_stmt_geos_tests/union10.testcase new file mode 100644 index 0000000..5e00d38 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union10.testcase @@ -0,0 +1,8 @@ +union - POINTM +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("POINTM(1 3 4)"),GeomFromText("POINTM(2 5 9)"))) +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("POINTM(1 3 4)"),GeomFromText("POINTM(2 5 9)"))) +MULTIPOINT M(1 3 0, 2 5 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union11.testcase b/src/spatialite/test/sql_stmt_geos_tests/union11.testcase new file mode 100644 index 0000000..4a9fd02 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union11.testcase @@ -0,0 +1,8 @@ +union - POINTZM +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("POINTZM(1 3 4 5)"),GeomFromText("POINTZM(2 5 9 5)"))) +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("POINTZM(1 3 4 5)"),GeomFromText("POINTZM(2 5 9 5)"))) +MULTIPOINT ZM(1 3 4 0, 2 5 9 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union12.testcase b/src/spatialite/test/sql_stmt_geos_tests/union12.testcase new file mode 100644 index 0000000..157c509 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union12.testcase @@ -0,0 +1,8 @@ +union - POLYGON and POINT +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))"),GeomFromText("POINT(0 0)"))) +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("POLYGON((0 0, 2 0, 2 2, 0 2, 0 0))"),GeomFromText("POINT(0 0)"))) +POLYGON((0 0, 0 2, 2 2, 2 0, 0 0)) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union13.testcase b/src/spatialite/test/sql_stmt_geos_tests/union13.testcase new file mode 100644 index 0000000..096b114 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union13.testcase @@ -0,0 +1,8 @@ +union - MULTIPOLYGON and POINT +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("MULTIPOLYGON(((0 0, 2 0, 2 2, 0 2, 0 0)))"),GeomFromText("POINT(0 0)"))) +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("MULTIPOLYGON(((0 0, 2 0, 2 2, 0 2, 0 0)))"),GeomFromText("POINT(0 0)"))) +MULTIPOLYGON(((0 0, 0 2, 2 2, 2 0, 0 0))) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union14.testcase b/src/spatialite/test/sql_stmt_geos_tests/union14.testcase new file mode 100644 index 0000000..b88df05 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union14.testcase @@ -0,0 +1,8 @@ +union - LINESTRING and POINT +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("LINESTRING(0 0, 2 0, 2 2, 0 2)"),GeomFromText("POINT(0 0)"))) +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("LINESTRING(0 0, 2 0, 2 2, 0 2)"),GeomFromText("POINT(0 0)"))) +LINESTRING(0 0, 2 0, 2 2, 0 2) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union15.testcase b/src/spatialite/test/sql_stmt_geos_tests/union15.testcase new file mode 100644 index 0000000..49636cd --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union15.testcase @@ -0,0 +1,8 @@ +union - MULTILINESTRING and POINT +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("MULTILINESTRING((0 0, 2 0, 2 2, 0 2))"),GeomFromText("POINT(0 0)"))) +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("MULTILINESTRING((0 0, 2 0, 2 2, 0 2))"),GeomFromText("POINT(0 0)"))) +MULTILINESTRING((0 0, 2 0, 2 2, 0 2)) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union16.testcase b/src/spatialite/test/sql_stmt_geos_tests/union16.testcase new file mode 100644 index 0000000..01d30a9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union16.testcase @@ -0,0 +1,8 @@ +union - MULTIPOINTM +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("MULTIPOINTM(1 3 4)"),GeomFromText("POINTM(1 3 4)"))) +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("MULTIPOINTM(1 3 4)"),GeomFromText("POINTM(1 3 4)"))) +MULTIPOINT M(1 3 0) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union17.testcase b/src/spatialite/test/sql_stmt_geos_tests/union17.testcase new file mode 100644 index 0000000..92d5b4f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union17.testcase @@ -0,0 +1,7 @@ +union - POLYGON with hole +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("POLYGON((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11))"), GeomFromText("POLYGON((15 10, 16 10, 16 15, 10 15, 15 10))"))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("POLYGON((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11))"), GeomFromText("POLYGON((15 10, 16 10, 16 15, 10 15, 15 10))"))) +POLYGON((15 10, 10 10, 10 15, 15 15, 16 15, 16 10, 15 10), (11 11, 12 11, 12 12, 11 12, 11 11)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union18.testcase b/src/spatialite/test/sql_stmt_geos_tests/union18.testcase new file mode 100644 index 0000000..da7d581 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union18.testcase @@ -0,0 +1,7 @@ +union - POLYGON Z with hole +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("POLYGONZ((10 10 100, 15 10 100, 15 15 100, 10 15 100, 10 10 100), (11 11 102, 12 11 102, 12 12 102, 11 12 102, 11 11 102))"), GeomFromText("POLYGONZ((15 10 100, 16 10 100, 16 15 100, 10 15 100, 15 10 100))"))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("POLYGONZ((10 10 100, 15 10 100, 15 15 100, 10 15 100, 10 10 100), (11 11 102, 12 11 102, 12 12 102, 11 12 102, 11 11 102))"), GeomFromText("POLYGONZ((15 10 100, 16 10 100, 16 15 100, 10 15 100, 15 10 100))"))) +POLYGON Z((15 10 100, 10 10 100, 10 15 100, 15 15 100, 16 15 100, 16 10 100, 15 10 100), (11 11 102, 12 11 102, 12 12 102, 11 12 102, 11 11 102)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union19.testcase b/src/spatialite/test/sql_stmt_geos_tests/union19.testcase new file mode 100644 index 0000000..33ae015 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union19.testcase @@ -0,0 +1,7 @@ +union - POLYGON M with hole +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("POLYGONM((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1))"), GeomFromText("POLYGONM((15 10 2, 16 10 1, 16 15 3, 10 15 4, 15 10 2))"))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("POLYGONM((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1))"), GeomFromText("POLYGONM((15 10 2, 16 10 1, 16 15 3, 10 15 4, 15 10 2))"))) +POLYGON M((15 10 0, 10 10 0, 10 15 0, 15 15 0, 16 15 0, 16 10 0, 15 10 0), (11 11 0, 12 11 0, 12 12 0, 11 12 0, 11 11 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union2.testcase b/src/spatialite/test/sql_stmt_geos_tests/union2.testcase new file mode 100644 index 0000000..a79d59b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union2.testcase @@ -0,0 +1,7 @@ +union - two common points +:memory: #use in-memory database +SELECT AsText(GUnion(Makepoint(1,2), MakePoint(1,2))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(Makepoint(1,2), MakePoint(1,2))) +POINT(1 2) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geos_tests/union20.testcase b/src/spatialite/test/sql_stmt_geos_tests/union20.testcase new file mode 100644 index 0000000..6eb498f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union20.testcase @@ -0,0 +1,7 @@ +union - POLYGON ZM with hole +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("POLYGONZM((10 10 100 1, 15 10 100 2, 15 15 100 3, 10 15 100 4, 10 10 100 1), (11 11 102 1, 12 11 102 2, 12 12 102 3, 11 12 102 4, 11 11 102 1))"), GeomFromText("POLYGONZM((15 10 100 2, 16 10 100 1, 16 15 100 3, 10 15 100 4, 15 10 100 2))"))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("POLYGONZM((10 10 100 1, 15 10 100 2, 15 15 100 3, 10 15 100 4, 10 10 100 1), (11 11 102 1, 12 11 102 2, 12 12 102 3, 11 12 102 4, 11 11 102 1))"), GeomFromText("POLYGONZM((15 10 100 2, 16 10 100 1, 16 15 100 3, 10 15 100 4, 15 10 100 2))"))) +POLYGON ZM((15 10 100 0, 10 10 100 0, 10 15 100 0, 15 15 100 0, 16 15 100 0, 16 10 100 0, 15 10 100 0), (11 11 102 0, 12 11 102 0, 12 12 102 0, 11 12 102 0, 11 11 102 0)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union21.testcase b/src/spatialite/test/sql_stmt_geos_tests/union21.testcase new file mode 100644 index 0000000..a138df7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union21.testcase @@ -0,0 +1,8 @@ +union - GEOMETRYCOLLECTION (Polygon with hole / Linestring) +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(30 30, 31 31), POLYGON((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11)))"), GeomFromText("GEOMETRYCOLLECTION(LINESTRING(31 31, 35 0), POLYGON((15 10, 16 10, 16 15, 10 15, 15 10)))"))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(30 30, 31 31), POLYGON((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11)))"), GeomFromText("GEOMETRYCOLLECTION(LINESTRING(31 31, 35 0), POLYGON((15 10, 16 10, 16 15, 10 15, 15 10)))"))) +GEOMETRYCOLLECTION(LINESTRING(30 30, 31 31), LINESTRING(31 31, 35 0), POLYGON((15 10, 10 10, 10 15, 15 15, 16 15, 16 10, 15 10), (11 11, 12 11, 12 12, 11 12, 11 11))) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union22.testcase b/src/spatialite/test/sql_stmt_geos_tests/union22.testcase new file mode 100644 index 0000000..6addd2b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union22.testcase @@ -0,0 +1,7 @@ +union - GEOMETRYCOLLECTION Z (Polygon with hole / Linestring) +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(30 30 100, 31 31 101), POLYGONZ((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100)))"), GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(31 31 101, 35 0 100), POLYGONZ((15 10 101, 16 10 102, 16 15 102, 10 15 103, 15 10 101)))"))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(30 30 100, 31 31 101), POLYGONZ((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100)))"), GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(31 31 101, 35 0 100), POLYGONZ((15 10 101, 16 10 102, 16 15 102, 10 15 103, 15 10 101)))"))) +GEOMETRYCOLLECTION Z(LINESTRING Z(30 30 100, 31 31 101), LINESTRING Z(31 31 101, 35 0 100), POLYGON Z((15 10 101, 10 10 100, 10 15 103, 15 15 102, 16 15 102, 16 10 102, 15 10 101), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100))) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union23.testcase b/src/spatialite/test/sql_stmt_geos_tests/union23.testcase new file mode 100644 index 0000000..4f89405 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union23.testcase @@ -0,0 +1,7 @@ +union - GEOMETRYCOLLECTION M (Polygon with hole / Linestring) +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(30 30 1, 31 31 2), POLYGONM((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1)))"), GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(31 31 2, 35 0 1), POLYGONM((15 10 2, 16 10 1, 16 15 3, 10 15 4, 15 10 2)))"))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(30 30 1, 31 31 2), POLYGONM((10 10 1, 15 10 2, 15 15 3, 10 15 4, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 4, 11 11 1)))"), GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(31 31 2, 35 0 1), POLYGONM((15 10 2, 16 10 1, 16 15 3, 10 15 4, 15 10 2)))"))) +GEOMETRYCOLLECTION M(LINESTRING M(30 30 0, 31 31 0), LINESTRING M(31 31 0, 35 0 0), POLYGON M((15 10 0, 10 10 0, 10 15 0, 15 15 0, 16 15 0, 16 10 0, 15 10 0), (11 11 0, 12 11 0, 12 12 0, 11 12 0, 11 11 0))) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union24.testcase b/src/spatialite/test/sql_stmt_geos_tests/union24.testcase new file mode 100644 index 0000000..3475014 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union24.testcase @@ -0,0 +1,7 @@ +union - GEOMETRYCOLLECTION ZM (Polygon with hole / Linestring) +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(30 30 100 1, 31 31 101 2), POLYGONZM((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 4, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 4, 11 11 100 1)))"), GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(31 31 101 2, 35 0 100 1), POLYGONZM((15 10 101 2, 16 10 102 1, 16 15 102 3, 10 15 103 4, 15 10 101 2)))"))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(30 30 100 1, 31 31 101 2), POLYGONZM((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 4, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 4, 11 11 100 1)))"), GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(31 31 101 2, 35 0 100 1), POLYGONZM((15 10 101 2, 16 10 102 1, 16 15 102 3, 10 15 103 4, 15 10 101 2)))"))) +GEOMETRYCOLLECTION ZM(LINESTRING ZM(30 30 100 0, 31 31 101 0), LINESTRING ZM(31 31 101 0, 35 0 100 0), POLYGON ZM((15 10 101 0, 10 10 100 0, 10 15 103 0, 15 15 102 0, 16 15 102 0, 16 10 102 0, 15 10 101 0), (11 11 100 0, 12 11 101 0, 12 12 102 0, 11 12 103 0, 11 11 100 0))) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union25.testcase b/src/spatialite/test/sql_stmt_geos_tests/union25.testcase new file mode 100644 index 0000000..8c0646d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union25.testcase @@ -0,0 +1,7 @@ +union - MULTILINESTRING (two Lines) +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("LINESTRING(30 30, 31 31)"), GeomFromText("LINESTRING(20 20, 10 10)"))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("LINESTRING(30 30, 31 31)"), GeomFromText("LINESTRING(20 20, 10 10)"))) +MULTILINESTRING((30 30, 31 31), (20 20, 10 10)) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union26.testcase b/src/spatialite/test/sql_stmt_geos_tests/union26.testcase new file mode 100644 index 0000000..8e9e403 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union26.testcase @@ -0,0 +1,7 @@ +union - MULTIPOLYGON (two Polygons) +:memory: #use in-memory database +SELECT AsText(ST_ForceLHR(GUnion(GeomFromText("POLYGON((10 10, 15 10, 15 15, 10 15, 10 10))"), GeomFromText("POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))")))); +1 # rows (not including the header row) +1 # columns +AsText(ST_ForceLHR(GUnion(GeomFromText("POLYGON((10 10, 15 10, 15 15, 10 15, 10 10))"), GeomFromText("POLYGON((1 1, 2 1, 2 2, 1 2, 1 1))")))) +MULTIPOLYGON(((10 10, 10 15, 15 15, 15 10, 10 10)), ((1 1, 1 2, 2 2, 2 1, 1 1))) diff --git a/src/spatialite/test/sql_stmt_geos_tests/union27.testcase b/src/spatialite/test/sql_stmt_geos_tests/union27.testcase new file mode 100644 index 0000000..5d7bc57 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union27.testcase @@ -0,0 +1,9 @@ +union - POINT +:memory: #use in-memory database +SELECT AsText(GUnion(makepoint(1,2))) +1 # rows (not including the header row) +1 # columns +AsText(GUnion(makepoint(1,2))) +POINT(1 2) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union28.testcase b/src/spatialite/test/sql_stmt_geos_tests/union28.testcase new file mode 100644 index 0000000..d92b7ba --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union28.testcase @@ -0,0 +1,9 @@ +union - zeroblob +:memory: #use in-memory database +SELECT GUnion(zeroblob(100)) +1 # rows (not including the header row) +1 # columns +GUnion(zeroblob(100)) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union29.testcase b/src/spatialite/test/sql_stmt_geos_tests/union29.testcase new file mode 100644 index 0000000..6c96dc4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union29.testcase @@ -0,0 +1,9 @@ +union - non-blob +:memory: #use in-memory database +SELECT GUnion(4.78) +1 # rows (not including the header row) +1 # columns +GUnion(4.78) +(NULL) + + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union3.testcase b/src/spatialite/test/sql_stmt_geos_tests/union3.testcase new file mode 100644 index 0000000..fdff5e6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union3.testcase @@ -0,0 +1,8 @@ +union - null first point +:memory: #use in-memory database +SELECT AsText(GUnion(null, MakePoint(2,3))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(null, MakePoint(2,3))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union4.testcase b/src/spatialite/test/sql_stmt_geos_tests/union4.testcase new file mode 100644 index 0000000..e402aaf --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union4.testcase @@ -0,0 +1,8 @@ +union - null second point +:memory: #use in-memory database +SELECT AsText(GUnion(MakePoint(2,3), null)); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(MakePoint(2,3), null)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union5.testcase b/src/spatialite/test/sql_stmt_geos_tests/union5.testcase new file mode 100644 index 0000000..f48fe0c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union5.testcase @@ -0,0 +1,8 @@ +union - zeroblob second point +:memory: #use in-memory database +SELECT AsText(GUnion(MakePoint(2,3), zeroblob(48))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(MakePoint(2,3), zeroblob(48))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union6.testcase b/src/spatialite/test/sql_stmt_geos_tests/union6.testcase new file mode 100644 index 0000000..357d4e2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union6.testcase @@ -0,0 +1,8 @@ +union - zeroblob first point +:memory: #use in-memory database +SELECT AsText(GUnion(zeroblob(48), MakePoint(2,3))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(zeroblob(48), MakePoint(2,3))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union7.testcase b/src/spatialite/test/sql_stmt_geos_tests/union7.testcase new file mode 100644 index 0000000..c1d523e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union7.testcase @@ -0,0 +1,8 @@ +union - toxic first point +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), MakePoint(136,-35))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union8.testcase b/src/spatialite/test/sql_stmt_geos_tests/union8.testcase new file mode 100644 index 0000000..76378de --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union8.testcase @@ -0,0 +1,8 @@ +union - toxic second point +:memory: #use in-memory database +SELECT AsText(GUnion(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))); +1 # rows (not including the header row) +1 # columns +AsText(GUnion(MakePoint(136,-35), GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"))) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_geos_tests/union9.testcase b/src/spatialite/test/sql_stmt_geos_tests/union9.testcase new file mode 100644 index 0000000..310442c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geos_tests/union9.testcase @@ -0,0 +1,8 @@ +union - POINTZ +:memory: #use in-memory database +SELECT AsText(GUnion(GeomFromText("POINTZ(1 3 4)"),GeomFromText("POINTZ(2 5 9)"))) +1 # rows (not including the header row) +1 # columns +AsText(GUnion(GeomFromText("POINTZ(1 3 4)"),GeomFromText("POINTZ(2 5 9)"))) +MULTIPOINT Z(1 3 4, 2 5 9) + diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/Makefile.am b/src/spatialite/test/sql_stmt_geosadvanced_tests/Makefile.am new file mode 100644 index 0000000..1861ed4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/Makefile.am @@ -0,0 +1,58 @@ + +EXTRA_DIST = concave_hull10.testcase \ + concave_hull11.testcase \ + concave_hull12.testcase \ + concave_hull13.testcase \ + concave_hull14.testcase \ + concave_hull15.testcase \ + concave_hull16.testcase \ + concave_hull17.testcase \ + concave_hull18.testcase \ + concave_hull19.testcase \ + concave_hull1.testcase \ + concave_hull2.testcase \ + concave_hull3.testcase \ + concave_hull4.testcase \ + concave_hull5.testcase \ + concave_hull6.testcase \ + concave_hull7.testcase \ + concave_hull8.testcase \ + concave_hull9.testcase \ + delaunay10.testcase \ + delaunay11.testcase \ + delaunay12.testcase \ + delaunay13.testcase \ + delaunay14.testcase \ + delaunay15.testcase \ + delaunay16.testcase \ + delaunay17.testcase \ + delaunay18.testcase \ + delaunay19.testcase \ + delaunay1.testcase \ + delaunay2.testcase \ + delaunay3.testcase \ + delaunay4.testcase \ + delaunay5.testcase \ + delaunay6.testcase \ + delaunay7.testcase \ + delaunay8.testcase \ + delaunay9.testcase \ + voronoj10.testcase \ + voronoj11.testcase \ + voronoj12.testcase \ + voronoj13.testcase \ + voronoj14.testcase \ + voronoj15.testcase \ + voronoj16.testcase \ + voronoj17.testcase \ + voronoj18.testcase \ + voronoj19.testcase \ + voronoj1.testcase \ + voronoj20.testcase \ + voronoj2.testcase \ + voronoj3.testcase \ + voronoj4.testcase \ + voronoj5.testcase \ + voronoj6.testcase \ + voronoj8.testcase \ + voronoj9.testcase diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/Makefile.in b/src/spatialite/test/sql_stmt_geosadvanced_tests/Makefile.in new file mode 100644 index 0000000..a9da1ee --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/Makefile.in @@ -0,0 +1,494 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/sql_stmt_geosadvanced_tests +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = concave_hull10.testcase \ + concave_hull11.testcase \ + concave_hull12.testcase \ + concave_hull13.testcase \ + concave_hull14.testcase \ + concave_hull15.testcase \ + concave_hull16.testcase \ + concave_hull17.testcase \ + concave_hull18.testcase \ + concave_hull19.testcase \ + concave_hull1.testcase \ + concave_hull2.testcase \ + concave_hull3.testcase \ + concave_hull4.testcase \ + concave_hull5.testcase \ + concave_hull6.testcase \ + concave_hull7.testcase \ + concave_hull8.testcase \ + concave_hull9.testcase \ + delaunay10.testcase \ + delaunay11.testcase \ + delaunay12.testcase \ + delaunay13.testcase \ + delaunay14.testcase \ + delaunay15.testcase \ + delaunay16.testcase \ + delaunay17.testcase \ + delaunay18.testcase \ + delaunay19.testcase \ + delaunay1.testcase \ + delaunay2.testcase \ + delaunay3.testcase \ + delaunay4.testcase \ + delaunay5.testcase \ + delaunay6.testcase \ + delaunay7.testcase \ + delaunay8.testcase \ + delaunay9.testcase \ + voronoj10.testcase \ + voronoj11.testcase \ + voronoj12.testcase \ + voronoj13.testcase \ + voronoj14.testcase \ + voronoj15.testcase \ + voronoj16.testcase \ + voronoj17.testcase \ + voronoj18.testcase \ + voronoj19.testcase \ + voronoj1.testcase \ + voronoj20.testcase \ + voronoj2.testcase \ + voronoj3.testcase \ + voronoj4.testcase \ + voronoj5.testcase \ + voronoj6.testcase \ + voronoj8.testcase \ + voronoj9.testcase + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/sql_stmt_geosadvanced_tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/sql_stmt_geosadvanced_tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull1.testcase new file mode 100644 index 0000000..a3edde4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull1.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - Invalid BLOB input (error) +:memory: #use in-memory database +SELECT ST_ConcaveHull(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_ConcaveHull(zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull10.testcase new file mode 100644 index 0000000..0a17f50 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull10.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - double allow_holes (error) +:memory: #use in-memory database +SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 2.3); +1 # rows (not including the header row) +1 # columns +ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 2.3) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull11.testcase new file mode 100644 index 0000000..140112a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull11.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - NULL allow_holes (error) +:memory: #use in-memory database +SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, NULL); +1 # rows (not including the header row) +1 # columns +ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull12.testcase new file mode 100644 index 0000000..ab3b037 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull12.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - BLOB tolerance (error) +:memory: #use in-memory database +SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 1, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 1, zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull13.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull13.testcase new file mode 100644 index 0000000..255959e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull13.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - text tolerance (error) +:memory: #use in-memory database +SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 1, 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 1, 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull14.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull14.testcase new file mode 100644 index 0000000..bac103a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull14.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - NULL tolerance (error) +:memory: #use in-memory database +SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 1, NULL); +1 # rows (not including the header row) +1 # columns +ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 1, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull15.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull15.testcase new file mode 100644 index 0000000..9244fca --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull15.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - no_holes +:memory: #use in-memory database +SELECT ST_Area(ST_ConcaveHull(GeomFromText('MULTIPOINT(10 10, 10 12, 10 14, 10 16, 10 18, 10 20, 12 10, 12 12, 12 14, 12 16, 12 18, 12 20, 14 10, 14 12, 14 14, 14 18, 14 20, 17 10, 17 12, 17 14, 17 16, 17 18, 17 20, 16 10, 16 12, 16 14, 16 16, 16 18, 16 20, 18 10, 18 20, 20 10, 20 20)'))); +1 # rows (not including the header row) +1 # columns +ST_Area(ST_ConcaveHull(GeomFromText('MULTIPOINT(10 10, 10 12, 10 14, 10 16, 10 18, 10 20, 12 10, 12 12, 12 14, 12 16, 12 18, 12 20, 14 10, 14 12, 14 14, 14 18, 14 20, 17 10, 17 12, 17 14, 17 16, 17 18, 17 20, 16 10, 16 12, 16 14, 16 16, 16 18, 16 20, 18 10, 18 20, 20 10, 20 20)'))) +72.0 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull16.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull16.testcase new file mode 100644 index 0000000..1c53c75 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull16.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - allow_holes +:memory: #use in-memory database +SELECT ST_Area(ST_ConcaveHull(GeomFromText('MULTIPOINT(10 10, 10 12, 10 14, 10 16, 10 18, 10 20, 12 10, 12 12, 12 14, 12 16, 12 18, 12 20, 14 10, 14 12, 14 14, 14 18, 14 20, 17 10, 17 12, 17 14, 17 16, 17 18, 17 20, 16 10, 16 12, 16 14, 16 16, 16 18, 16 20, 18 10, 18 20, 20 10, 20 20)'), 3, 1)); +1 # rows (not including the header row) +1 # columns +ST_Area(ST_ConcaveHull(GeomFromText('MULTIPOINT(10 10, 10 12, 10 14, 10 16, 10 18, 10 20, 12 10, 12 12, 12 14, 12 16, 12 18, 12 20, 14 10, 14 12, 14 14, 14 18, 14 20, 17 10, 17 12, 17 14, 17 16, 17 18, 17 20, 16 10, 16 12, 16 14, 16 16, 16 18, 16 20, 18 10, 18 20, 20 10, 20 20)'), 3, 1)) +64.0 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull17.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull17.testcase new file mode 100644 index 0000000..bbd90b4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull17.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull XYZ - no_holes +:memory: #use in-memory database +SELECT ST_Equals(ST_ConcaveHull(GeomFromText('MULTIPOINTZ(10 10 100, 10 12 100, 10 14 100, 10 16 100, 10 18 100, 10 20 100, 12 10 100, 12 12 100, 12 14 100, 12 16 100, 12 18 100, 12 20 100, 14 10 100, 14 12 100, 14 14 100, 14 18 100, 14 20 100, 17 10 100, 17 12 100, 17 14 100, 17 16 100, 17 18 100, 17 20 100, 16 10 100, 16 12 100, 16 14 100, 16 16 100, 16 18 100, 16 20 100, 18 10 100, 18 20 100, 20 10 100, 20 20 100)')), GeomFromText('POLYGONZ((12 10 100, 10 10 100, 10 12 100, 10 14 100, 10 16 100, 10 18 100, 10 20 100, 12 20 100, 14 20 100, 16 20 100, 17 20 100, 18 20 100, 17 18 100, 17 16 100, 17 14 100, 17 12 100, 18 10 100, 17 10 100, 16 10 100, 14 10 100, 12 10 100))')); +1 # rows (not including the header row) +1 # columns +ST_Equals(ST_ConcaveHull(GeomFromText('MULTIPOINTZ(10 10 100, 10 12 100, 10 14 100, 10 16 100, 10 18 100, 10 20 100, 12 10 100, 12 12 100, 12 14 100, 12 16 100, 12 18 100, 12 20 100, 14 10 100, 14 12 100, 14 14 100, 14 18 100, 14 20 100, 17 10 100, 17 12 100, 17 14 100, 17 16 100, 17 18 100, 17 20 100, 16 10 100, 16 12 100, 16 14 100, 16 16 100, 16 18 100, 16 20 100, 18 10 100, 18 20 100, 20 10 100, 20 20 100)')), GeomFromText('POLYGONZ((12 10 100, 10 10 100, 10 12 100, 10 14 100, 10 16 100, 10 18 100, 10 20 100, 12 20 100, 14 20 100, 16 20 100, 17 20 100, 18 20 100, 17 18 100, 17 16 100, 17 14 100, 17 12 100, 18 10 100, 17 10 100, 16 10 100, 14 10 100, 12 10 100))')) +1 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull18.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull18.testcase new file mode 100644 index 0000000..86e9fe7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull18.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull XYM - no_holes +:memory: #use in-memory database +SELECT ST_Equals(ST_ConcaveHull(GeomFromText('MULTIPOINTM(10 10 100, 10 12 100, 10 14 100, 10 16 100, 10 18 100, 10 20 100, 12 10 100, 12 12 100, 12 14 100, 12 16 100, 12 18 100, 12 20 100, 14 10 100, 14 12 100, 14 14 100, 14 18 100, 14 20 100, 17 10 100, 17 12 100, 17 14 100, 17 16 100, 17 18 100, 17 20 100, 16 10 100, 16 12 100, 16 14 100, 16 16 100, 16 18 100, 16 20 100, 18 10 100, 18 20 100, 20 10 100, 20 20 100)')), GeomFromText('POLYGON M((12 10 0, 10 10 0, 10 12 0, 10 14 0, 10 16 0, 10 18 0, 10 20 0, 12 20 0, 14 20 0, 16 20 0, 17 20 0, 18 20 0, 17 18 0, 17 16 0, 17 14 0, 17 12 0, 18 10 0, 17 10 0, 16 10 0, 14 10 0, 12 10 0))')); +1 # rows (not including the header row) +1 # columns +ST_Equals(ST_ConcaveHull(GeomFromText('MULTIPOINTM(10 10 100, 10 12 100, 10 14 100, 10 16 100, 10 18 100, 10 20 100, 12 10 100, 12 12 100, 12 14 100, 12 16 100, 12 18 100, 12 20 100, 14 10 100, 14 12 100, 14 14 100, 14 18 100, 14 20 100, 17 10 100, 17 12 100, 17 14 100, 17 16 100, 17 18 100, 17 20 100, 16 10 100, 16 12 100, 16 14 100, 16 16 100, 16 18 100, 16 20 100, 18 10 100, 18 20 100, 20 10 100, 20 20 100)')), GeomFromText('POLYGON M((12 10 0, 10 10 0, 10 12 0, 10 14 0, 10 16 0, 10 18 0, 10 20 0, 12 20 0, 14 20 0, 16 20 0, 17 20 0, 18 20 0, 17 18 0, 17 16 0, 17 14 0, 17 12 0, 18 10 0, 17 10 0, 16 10 0, 14 10 0, 12 10 0))')) +1 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull19.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull19.testcase new file mode 100644 index 0000000..24a0aca --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull19.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull XYZM - no_holes +:memory: #use in-memory database +SELECT ST_Equals(ST_ConcaveHull(GeomFromText('MULTIPOINTZM(10 10 100 10, 10 12 100 10, 10 14 100 10, 10 16 100 10, 10 18 100 10, 10 20 100 10, 12 10 100 10, 12 12 100 10, 12 14 100 10, 12 16 100 10, 12 18 100 10, 12 20 100 10, 14 10 100 10, 14 12 100 10, 14 14 100 10, 14 18 100 10, 14 20 100 10, 17 10 100 10, 17 12 100 10, 17 14 100 10, 17 16 100 10, 17 18 100 10, 17 20 100 10, 16 10 100 10, 16 12 100 10, 16 14 100 10, 16 16 100 10, 16 18 100 10, 16 20 100 10, 18 10 100 10, 18 20 100 10, 20 10 100 10, 20 20 100 10)')), GeomfromText('POLYGON ZM((12 10 100 0, 10 10 100 0, 10 12 100 0, 10 14 100 0, 10 16 100 0, 10 18 100 0, 10 20 100 0, 12 20 100 0, 14 20 100 0, 16 20 100 0, 17 20 100 0, 18 20 100 0, 17 18 100 0, 17 16 100 0, 17 14 100 0, 17 12 100 0, 18 10 100 0, 17 10 100 0, 16 10 100 0, 14 10 100 0, 12 10 100 0))')); +1 # rows (not including the header row) +1 # columns +ST_Equals(ST_ConcaveHull(GeomFromText('MULTIPOINTZM(10 10 100 10, 10 12 100 10, 10 14 100 10, 10 16 100 10, 10 18 100 10, 10 20 100 10, 12 10 100 10, 12 12 100 10, 12 14 100 10, 12 16 100 10, 12 18 100 10, 12 20 100 10, 14 10 100 10, 14 12 100 10, 14 14 100 10, 14 18 100 10, 14 20 100 10, 17 10 100 10, 17 12 100 10, 17 14 100 10, 17 16 100 10, 17 18 100 10, 17 20 100 10, 16 10 100 10, 16 12 100 10, 16 14 100 10, 16 16 100 10, 16 18 100 10, 16 20 100 10, 18 10 100 10, 18 20 100 10, 20 10 100 10, 20 20 100 10)')), GeomfromText('POLYGON ZM((12 10 100 0, 10 10 100 0, 10 12 100 0, 10 14 100 0, 10 16 100 0, 10 18 100 0, 10 20 100 0, 12 20 100 0, 14 20 100 0, 16 20 100 0, 17 20 100 0, 18 20 100 0, 17 18 100 0, 17 16 100 0, 17 14 100 0, 17 12 100 0, 18 10 100 0, 17 10 100 0, 16 10 100 0, 14 10 100 0, 12 10 100 0))')) +1 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull2.testcase new file mode 100644 index 0000000..471cb7a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull2.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - text input (error) +:memory: #use in-memory database +SELECT ST_ConcaveHull('alpha'); +1 # rows (not including the header row) +1 # columns +ST_ConcaveHull('alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull3.testcase new file mode 100644 index 0000000..3a4757d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull3.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - integer input (error) +:memory: #use in-memory database +SELECT ST_ConcaveHull(1); +1 # rows (not including the header row) +1 # columns +ST_ConcaveHull(1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull4.testcase new file mode 100644 index 0000000..64d6a6c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull4.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - NULL input (error) +:memory: #use in-memory database +SELECT ST_ConcaveHull(NULL); +1 # rows (not including the header row) +1 # columns +ST_ConcaveHull(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull5.testcase new file mode 100644 index 0000000..c29a1a3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull5.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - BLOB factor (error) +:memory: #use in-memory database +SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull6.testcase new file mode 100644 index 0000000..c67de21 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull6.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - text factor (error) +:memory: #use in-memory database +SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull7.testcase new file mode 100644 index 0000000..c076fd3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull7.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - NULL factor (error) +:memory: #use in-memory database +SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), NULL); +1 # rows (not including the header row) +1 # columns +ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull8.testcase new file mode 100644 index 0000000..6064fc0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull8.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - BLOB allow_holes (error) +:memory: #use in-memory database +SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull9.testcase new file mode 100644 index 0000000..b77f962 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/concave_hull9.testcase @@ -0,0 +1,7 @@ +ST_ConcaveHull - text allow_holes (error) +:memory: #use in-memory database +SELECT ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_ConcaveHull(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1, 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay1.testcase new file mode 100644 index 0000000..74f29e3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay1.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation - Invalid BLOB input (error) +:memory: #use in-memory database +SELECT ST_DelaunayTriangulation(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_DelaunayTriangulation(zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay10.testcase new file mode 100644 index 0000000..039e1a8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay10.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation - text tolerancey (error) +:memory: #use in-memory database +SELECT ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay11.testcase new file mode 100644 index 0000000..806a189 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay11.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation - NULL tolerance (error) +:memory: #use in-memory database +SELECT ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, NULL); +1 # rows (not including the header row) +1 # columns +ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay12.testcase new file mode 100644 index 0000000..330aa52 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay12.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation XY - (only_edges=no) +:memory: #use in-memory database +SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0), GeomFromText('MULTIPOLYGON(((0 1, 1 1, 0 0, 0 1)), ((0 1, 2 2, 1 1, 0 1)), ((2 2, 2 1, 1 1, 2 2)), ((0 0, 1 1, 2 1, 0 0)))')); +1 # rows (not including the header row) +1 # columns +ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0), GeomFromText('MULTIPOLYGON(((0 1, 1 1, 0 0, 0 1)), ((0 1, 2 2, 1 1, 0 1)), ((2 2, 2 1, 1 1, 2 2)), ((0 0, 1 1, 2 1, 0 0)))')) +1 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay13.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay13.testcase new file mode 100644 index 0000000..72b0c5c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay13.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation XY - (only_edges=yes) +:memory: #use in-memory database +SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1), GeomFromText('MULTILINESTRING((0 1, 2 2), (0 0, 0 1), (0 0, 2 1), (2 1, 2 2), (1 1, 2 1), (1 1, 2 2), (0 1, 1 1), (0 0, 1 1))')); +1 # rows (not including the header row) +1 # columns +ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 1), GeomFromText('MULTILINESTRING((0 1, 2 2), (0 0, 0 1), (0 0, 2 1), (2 1, 2 2), (1 1, 2 1), (1 1, 2 2), (0 1, 1 1), (0 0, 1 1))')) +1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay14.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay14.testcase new file mode 100644 index 0000000..fd8702a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay14.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation XYZ - (only_edges=no) +:memory: #use in-memory database +SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZ(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 0), GeomFromText('MULTIPOLYGONZ(((0 1 13, 1 1 11, 0 0 10, 0 1 13)), ((0 1 13, 2 2 12, 1 1 11, 0 1 13)), ((2 2 12, 2 1 14, 1 1 11, 2 2 12)), ((0 0 10, 1 1 11, 2 1 14, 0 0 10)))')); +1 # rows (not including the header row) +1 # columns +ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZ(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 0), GeomFromText('MULTIPOLYGONZ(((0 1 13, 1 1 11, 0 0 10, 0 1 13)), ((0 1 13, 2 2 12, 1 1 11, 0 1 13)), ((2 2 12, 2 1 14, 1 1 11, 2 2 12)), ((0 0 10, 1 1 11, 2 1 14, 0 0 10)))')) +1 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay15.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay15.testcase new file mode 100644 index 0000000..3a0b533 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay15.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation - (only_edges=yes) +:memory: #use in-memory database +SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZ(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 1), GeomFromText('MULTILINESTRINGZ((0 1 13, 2 2 12), (0 0 10, 0 1 13), (0 0 10, 2 1 14), (2 1 14, 2 2 12), (1 1 11, 2 1 14), (1 1 11, 2 2 12), (0 1 13, 1 1 11), (0 0 10, 1 1 11))')); +1 # rows (not including the header row) +1 # columns +ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZ(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 1), GeomFromText('MULTILINESTRINGZ((0 1 13, 2 2 12), (0 0 10, 0 1 13), (0 0 10, 2 1 14), (2 1 14, 2 2 12), (1 1 11, 2 1 14), (1 1 11, 2 2 12), (0 1 13, 1 1 11), (0 0 10, 1 1 11))')) +1 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay16.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay16.testcase new file mode 100644 index 0000000..88f1205 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay16.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation XYM - (only_edges=no) +:memory: #use in-memory database +SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTM(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 0), GeomFromText('MULTIPOLYGONM(((0 1 0, 1 1 0, 0 0 0, 0 1 0)), ((0 1 0, 2 2 0, 1 1 0, 0 1 0)), ((2 2 0, 2 1 0, 1 1 0, 2 2 0)), ((0 0 0, 1 1 0, 2 1 0, 0 0 0)))')); +1 # rows (not including the header row) +1 # columns +ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTM(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 0), GeomFromText('MULTIPOLYGONM(((0 1 0, 1 1 0, 0 0 0, 0 1 0)), ((0 1 0, 2 2 0, 1 1 0, 0 1 0)), ((2 2 0, 2 1 0, 1 1 0, 2 2 0)), ((0 0 0, 1 1 0, 2 1 0, 0 0 0)))')) +1 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay17.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay17.testcase new file mode 100644 index 0000000..688774c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay17.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation XYM - (only_edges=yes) +:memory: #use in-memory database +SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTM(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 1), GeomFromText('MULTILINESTRINGM((0 1 0, 2 2 0), (0 0 0, 0 1 0), (0 0 0, 2 1 0), (2 1 0, 2 2 0), (1 1 0, 2 1 0), (1 1 0, 2 2 0), (0 1 0, 1 1 0), (0 0 0, 1 1 0)) ')); +1 # rows (not including the header row) +1 # columns +ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTM(0 0 10, 1 1 11, 2 2 12, 0 1 13, 2 1 14)'), 1), GeomFromText('MULTILINESTRINGM((0 1 0, 2 2 0), (0 0 0, 0 1 0), (0 0 0, 2 1 0), (2 1 0, 2 2 0), (1 1 0, 2 1 0), (1 1 0, 2 2 0), (0 1 0, 1 1 0), (0 0 0, 1 1 0)) ')) +1 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay18.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay18.testcase new file mode 100644 index 0000000..24be2cb --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay18.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation XYZM - (only_edges=no) +:memory: #use in-memory database +SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZM(0 0 10 1, 1 1 11 2, 2 2 12 3, 0 1 13 4, 2 1 14 5)'), 0), GeomFromText('MULTIPOLYGONZM(((0 1 13 0, 1 1 11 0, 0 0 10 0, 0 1 13 0)), ((0 1 13 0, 2 2 12 0, 1 1 11 0, 0 1 13 0)), ((2 2 12 0, 2 1 14 0, 1 1 11 0, 2 2 12 0)), ((0 0 10 0, 1 1 11 0, 2 1 14 0, 0 0 10 0))) ')); +1 # rows (not including the header row) +1 # columns +ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZM(0 0 10 1, 1 1 11 2, 2 2 12 3, 0 1 13 4, 2 1 14 5)'), 0), GeomFromText('MULTIPOLYGONZM(((0 1 13 0, 1 1 11 0, 0 0 10 0, 0 1 13 0)), ((0 1 13 0, 2 2 12 0, 1 1 11 0, 0 1 13 0)), ((2 2 12 0, 2 1 14 0, 1 1 11 0, 2 2 12 0)), ((0 0 10 0, 1 1 11 0, 2 1 14 0, 0 0 10 0))) ')) +1 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay19.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay19.testcase new file mode 100644 index 0000000..543deac --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay19.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation XYZM - (only_edges=yes) +:memory: #use in-memory database +SELECT ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZM(0 0 10 1, 1 1 11 2, 2 2 12 3, 0 1 13 4, 2 1 14 5)'), 1), GeomFromText('MULTILINESTRINGZM((0 1 13 0, 2 2 12 0), (0 0 10 0, 0 1 13 0), (0 0 10 0, 2 1 14 0), (2 1 14 0, 2 2 12 0), (1 1 11 0, 2 1 14 0), (1 1 11 0, 2 2 12 0), (0 1 13 0, 1 1 11 0), (0 0 10 0, 1 1 11 0)) ')); +1 # rows (not including the header row) +1 # columns +ST_Equals(ST_DelaunayTriangulation(GeomFromText('MULTIPOINTZM(0 0 10 1, 1 1 11 2, 2 2 12 3, 0 1 13 4, 2 1 14 5)'), 1), GeomFromText('MULTILINESTRINGZM((0 1 13 0, 2 2 12 0), (0 0 10 0, 0 1 13 0), (0 0 10 0, 2 1 14 0), (2 1 14 0, 2 2 12 0), (1 1 11 0, 2 1 14 0), (1 1 11 0, 2 2 12 0), (0 1 13 0, 1 1 11 0), (0 0 10 0, 1 1 11 0)) ')) +1 diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay2.testcase new file mode 100644 index 0000000..6bd891b --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay2.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation - text input (error) +:memory: #use in-memory database +SELECT ST_DelaunayTriangulation('alpha'); +1 # rows (not including the header row) +1 # columns +ST_DelaunayTriangulation('alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay3.testcase new file mode 100644 index 0000000..4ea2798 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay3.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation - integer input (error) +:memory: #use in-memory database +SELECT ST_DelaunayTriangulation(1); +1 # rows (not including the header row) +1 # columns +ST_DelaunayTriangulation(1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay4.testcase new file mode 100644 index 0000000..fbfbcc3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay4.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation - NULL input (error) +:memory: #use in-memory database +SELECT ST_DelaunayTriangulation(NULL); +1 # rows (not including the header row) +1 # columns +ST_DelaunayTriangulation(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay5.testcase new file mode 100644 index 0000000..2d822a4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay5.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation - NULL edges_only (error) +:memory: #use in-memory database +SELECT ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), NULL); +1 # rows (not including the header row) +1 # columns +ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay6.testcase new file mode 100644 index 0000000..95fbe1a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay6.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation - text edges_only (error) +:memory: #use in-memory database +SELECT ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay7.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay7.testcase new file mode 100644 index 0000000..bb59f3c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay7.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation - BLOB edges_only (error) +:memory: #use in-memory database +SELECT ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay8.testcase new file mode 100644 index 0000000..55b0d1d --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay8.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation - double edges_only (error) +:memory: #use in-memory database +SELECT ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0.0); +1 # rows (not including the header row) +1 # columns +ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0.0) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay9.testcase new file mode 100644 index 0000000..3d3ee18 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/delaunay9.testcase @@ -0,0 +1,7 @@ +ST_DelaunayTriangulation - BLOB tolerance (error) +:memory: #use in-memory database +SELECT ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_DelaunayTriangulation(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj1.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj1.testcase new file mode 100644 index 0000000..70a65d0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj1.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - Invalid BLOB input (error) +:memory: #use in-memory database +SELECT ST_VoronojDiagram(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_VoronojDiagram(zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj10.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj10.testcase new file mode 100644 index 0000000..a71c4c6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj10.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - text extra_frame_size (error) +:memory: #use in-memory database +SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj11.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj11.testcase new file mode 100644 index 0000000..b29da82 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj11.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - NULL extra_frame_size (error) +:memory: #use in-memory database +SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, NULL); +1 # rows (not including the header row) +1 # columns +ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj12.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj12.testcase new file mode 100644 index 0000000..b1ee203 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj12.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - BLOB tolerance (error) +:memory: #use in-memory database +SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 0.0, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 0.0, zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj13.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj13.testcase new file mode 100644 index 0000000..7b37da7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj13.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - text tolerancey (error) +:memory: #use in-memory database +SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 0.0, 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 0.0, 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj14.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj14.testcase new file mode 100644 index 0000000..35a4046 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj14.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - NULL tolerance (error) +:memory: #use in-memory database +SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 0.0, NULL); +1 # rows (not including the header row) +1 # columns +ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, 0.0, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj15.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj15.testcase new file mode 100644 index 0000000..8437a24 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj15.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - (only_edges=no) +:memory: #use in-memory database +SELECT AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINT(10 5, 15 5, 20 4, 12 3, 17 2, 16 6)'), 0))); +1 # rows (not including the header row) +1 # columns +AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINT(10 5, 15 5, 20 4, 12 3, 17 2, 16 6)'), 0))) +MULTIPOLYGON(((12.5 5.5, 14.5 2.5, 14.5 1.5, 9.5 1.5, 9.5 2.5, 12.5 5.5)), ((14.5 2.5, 12.5 5.5, 12.5 8.5, 16.9 4.1, 14.5 2.5)), ((12.5 8.5, 12.5 5.5, 9.5 2.5, 9.5 9, 12.416667 9, 12.5 8.5)), ((16.9 4.1, 12.5 8.5, 12.416667 9, 20 9, 17.642857 4.285714, 16.9 4.1)), ((14.5 2.5, 16.9 4.1, 17.642857 4.285714, 19.5 1.5, 14.5 1.5, 14.5 2.5)), ((19.5 1.5, 17.642857 4.285714, 20 9, 20.5 9, 20.5 1.5, 19.5 1.5))) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj16.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj16.testcase new file mode 100644 index 0000000..460aea3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj16.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - (only_edges=yes) +:memory: #use in-memory database +SELECT AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINT(10 5, 15 5, 20 4, 12 3, 17 2, 16 6)'), 1))); +1 # rows (not including the header row) +1 # columns +AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINT(10 5, 15 5, 20 4, 12 3, 17 2, 16 6)'), 1))) +MULTILINESTRING((12.5 5.5, 14.5 2.5), (12.5 5.5, 12.5 8.5), (12.5 5.5, 9.5 2.5), (12.5 8.5, 16.9 4.1), (12.5 8.5, 12.416667 9), (16.9 4.1, 14.5 2.5), (16.9 4.1, 17.642857 4.285714), (17.642857 4.285714, 19.5 1.5), (17.642857 4.285714, 20 9), (14.5 2.5, 14.5 1.5)) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj17.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj17.testcase new file mode 100644 index 0000000..060bb56 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj17.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - (only_edges=no) +:memory: #use in-memory database +SELECT AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINTZ(10 5 10, 15 5 11, 20 4 12, 12 3 13, 17 2 14, 16 6 15)'), 0))); +1 # rows (not including the header row) +1 # columns +AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINTZ(10 5 10, 15 5 11, 20 4 12, 12 3 13, 17 2 14, 16 6 15)'), 0))) +MULTIPOLYGON Z(((12.5 5.5 0, 14.5 2.5 0, 14.5 1.5 0, 9.5 1.5 0, 9.5 2.5 0, 12.5 5.5 0)), ((14.5 2.5 0, 12.5 5.5 0, 12.5 8.5 0, 16.9 4.1 0, 14.5 2.5 0)), ((12.5 8.5 0, 12.5 5.5 0, 9.5 2.5 0, 9.5 9 0, 12.416667 9 0, 12.5 8.5 0)), ((16.9 4.1 0, 12.5 8.5 0, 12.416667 9 0, 20 9 0, 17.642857 4.285714 0, 16.9 4.1 0)), ((14.5 2.5 0, 16.9 4.1 0, 17.642857 4.285714 0, 19.5 1.5 0, 14.5 1.5 0, 14.5 2.5 0)), ((19.5 1.5 0, 17.642857 4.285714 0, 20 9 0, 20.5 9 0, 20.5 1.5 0, 19.5 1.5 0))) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj18.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj18.testcase new file mode 100644 index 0000000..a871310 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj18.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - XYM (only_edges=no) +:memory: #use in-memory database +SELECT AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINTM(10 5 10, 15 5 11, 20 4 12, 12 3 13, 17 2 14, 16 6 15)'), 0))); +1 # rows (not including the header row) +1 # columns +AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINTM(10 5 10, 15 5 11, 20 4 12, 12 3 13, 17 2 14, 16 6 15)'), 0))) +MULTIPOLYGON M(((12.5 5.5 0, 14.5 2.5 0, 14.5 1.5 0, 9.5 1.5 0, 9.5 2.5 0, 12.5 5.5 0)), ((14.5 2.5 0, 12.5 5.5 0, 12.5 8.5 0, 16.9 4.1 0, 14.5 2.5 0)), ((12.5 8.5 0, 12.5 5.5 0, 9.5 2.5 0, 9.5 9 0, 12.416667 9 0, 12.5 8.5 0)), ((16.9 4.1 0, 12.5 8.5 0, 12.416667 9 0, 20 9 0, 17.642857 4.285714 0, 16.9 4.1 0)), ((14.5 2.5 0, 16.9 4.1 0, 17.642857 4.285714 0, 19.5 1.5 0, 14.5 1.5 0, 14.5 2.5 0)), ((19.5 1.5 0, 17.642857 4.285714 0, 20 9 0, 20.5 9 0, 20.5 1.5 0, 19.5 1.5 0))) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj19.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj19.testcase new file mode 100644 index 0000000..43362f5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj19.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - XYZM (only_edges=no) +:memory: #use in-memory database +SELECT AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINTZM(10 5 10 1, 15 5 11 2, 20 4 12 3, 12 3 13 4, 17 2 14 5, 16 6 15 6)'), 0))); +1 # rows (not including the header row) +1 # columns +AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINTZM(10 5 10 1, 15 5 11 2, 20 4 12 3, 12 3 13 4, 17 2 14 5, 16 6 15 6)'), 0))) +MULTIPOLYGON ZM(((12.5 5.5 0 0, 14.5 2.5 0 0, 14.5 1.5 0 0, 9.5 1.5 0 0, 9.5 2.5 0 0, 12.5 5.5 0 0)), ((14.5 2.5 0 0, 12.5 5.5 0 0, 12.5 8.5 0 0, 16.9 4.1 0 0, 14.5 2.5 0 0)), ((12.5 8.5 0 0, 12.5 5.5 0 0, 9.5 2.5 0 0, 9.5 9 0 0, 12.416667 9 0 0, 12.5 8.5 0 0)), ((16.9 4.1 0 0, 12.5 8.5 0 0, 12.416667 9 0 0, 20 9 0 0, 17.642857 4.285714 0 0, 16.9 4.1 0 0)), ((14.5 2.5 0 0, 16.9 4.1 0 0, 17.642857 4.285714 0 0, 19.5 1.5 0 0, 14.5 1.5 0 0, 14.5 2.5 0 0)), ((19.5 1.5 0 0, 17.642857 4.285714 0 0, 20 9 0 0, 20.5 9 0 0, 20.5 1.5 0 0, 19.5 1.5 0 0))) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj2.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj2.testcase new file mode 100644 index 0000000..5f81088 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj2.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - text input (error) +:memory: #use in-memory database +SELECT ST_VoronojDiagram('alpha'); +1 # rows (not including the header row) +1 # columns +ST_VoronojDiagram('alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj20.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj20.testcase new file mode 100644 index 0000000..9c2a068 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj20.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - (only_edges=no) +:memory: #use in-memory database +SELECT AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINT(5 10, 2 15, 4 20, 3 12, 2 17, 6 16)'), 0))); +1 # rows (not including the header row) +1 # columns +AsText(ST_ForceLHR(ST_VoronojDiagram(GeomFromText('MULTIPOINT(5 10, 2 15, 4 20, 3 12, 2 17, 6 16)'), 0))) +MULTIPOLYGON(((3.875 16, 4.346154 14.115385, 1.5 13.166667, 1.5 16, 3.875 16)), ((4.346154 14.115385, 3.875 16, 4.285714 17.642857, 6.5 18.75, 6.5 12.833333, 5.928571 12.928571, 4.346154 14.115385)), ((4.285714 17.642857, 3.875 16, 1.5 16, 1.5 19.5, 4.285714 17.642857)), ((6.5 18.75, 4.285714 17.642857, 1.5 19.5, 1.5 20.5, 6.5 20.5, 6.5 18.75)), ((4.346154 14.115385, 5.928571 12.928571, 2.5 9.5, 1.5 9.5, 1.5 13.166667, 4.346154 14.115385)), ((2.5 9.5, 5.928571 12.928571, 6.5 12.833333, 6.5 9.5, 2.5 9.5))) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj3.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj3.testcase new file mode 100644 index 0000000..29eb76c --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj3.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - integer input (error) +:memory: #use in-memory database +SELECT ST_VoronojDiagram(1); +1 # rows (not including the header row) +1 # columns +ST_VoronojDiagram(1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj4.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj4.testcase new file mode 100644 index 0000000..55cb17f --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj4.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - NULL input (error) +:memory: #use in-memory database +SELECT ST_VoronojDiagram(NULL); +1 # rows (not including the header row) +1 # columns +ST_VoronojDiagram(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj5.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj5.testcase new file mode 100644 index 0000000..3601e8e --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj5.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - NULL edges_only (error) +:memory: #use in-memory database +SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), NULL); +1 # rows (not including the header row) +1 # columns +ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj6.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj6.testcase new file mode 100644 index 0000000..edd3899 --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj6.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - text edges_only (error) +:memory: #use in-memory database +SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj8.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj8.testcase new file mode 100644 index 0000000..5485eeb --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj8.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - double edges_only (error) +:memory: #use in-memory database +SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0.0); +1 # rows (not including the header row) +1 # columns +ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0.0) +(NULL) diff --git a/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj9.testcase b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj9.testcase new file mode 100644 index 0000000..05af63a --- /dev/null +++ b/src/spatialite/test/sql_stmt_geosadvanced_tests/voronoj9.testcase @@ -0,0 +1,7 @@ +ST_VoronojDiagram - BLOB tolerance (error) +:memory: #use in-memory database +SELECT ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_VoronojDiagram(GeomFromText('MULTIPOINT(0 0, 1 1, 2 2, 0 1, 2 1)'), 0, zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/Makefile.am b/src/spatialite/test/sql_stmt_libxml2_tests/Makefile.am new file mode 100644 index 0000000..0c86ef8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/Makefile.am @@ -0,0 +1,334 @@ + +EXTRA_DIST = addfileid1.testcase \ + addfileid2.testcase \ + addfileid3.testcase \ + addfileid4.testcase \ + addfileid5.testcase \ + addfileid6.testcase \ + addfileid7.testcase \ + addparentid1.testcase \ + addparentid2.testcase \ + addparentid3.testcase \ + addparentid4.testcase \ + addparentid5.testcase \ + addparentid6.testcase \ + addparentid7.testcase \ + createisometa1.testcase \ + createisometa2.testcase \ + createisometa3.testcase \ + createisometa4.testcase \ + createisometa5.testcase \ + createisometa6.testcase \ + createstyling1.testcase \ + createstyling2.testcase \ + createstyling3.testcase \ + createstyling4.testcase \ + createstyling5.testcase \ + createstyling6.testcase \ + getIsoMetaId1.testcase \ + getIsoMetaId2.testcase \ + getIsoMetaId3.testcase \ + getIsoMetaId4.testcase \ + getIsoMetaId5.testcase \ + iscompressedxmlblob1.testcase \ + iscompressedxmlblob2.testcase \ + iscompressedxmlblob3.testcase \ + iscompressedxmlblob4.testcase \ + iscompressedxmlblob5.testcase \ + iscompressedxmlblob6.testcase \ + iscompressedxmlblob7.testcase \ + isisometadata1.testcase \ + isisometadata2.testcase \ + isisometadata3.testcase \ + isisometadata4.testcase \ + isisometadata5.testcase \ + isisometadata6.testcase \ + isisometadata7.testcase \ + isschemavalidatedxmlblob1.testcase \ + isschemavalidatedxmlblob2.testcase \ + isschemavalidatedxmlblob3.testcase \ + isschemavalidatedxmlblob4.testcase \ + isschemavalidatedxmlblob5.testcase \ + isschemavalidatedxmlblob6.testcase \ + issldserststyle1.testcase \ + issldserststyle2.testcase \ + issldserststyle3.testcase \ + issldserststyle4.testcase \ + issldserststyle5.testcase \ + issldserststyle6.testcase \ + issldserststyle7.testcase \ + issldsestyle1.testcase \ + issldsestyle2.testcase \ + issldsestyle3.testcase \ + issldsestyle4.testcase \ + issldsestyle5.testcase \ + issldsestyle6.testcase \ + issldsestyle7.testcase \ + issvg1.testcase \ + issvg2.testcase \ + issvg3.testcase \ + issvg4.testcase \ + issvg5.testcase \ + issvg6.testcase \ + issvg7.testcase \ + isvalidxmlblob1.testcase \ + isvalidxmlblob2.testcase \ + isvalidxmlblob3.testcase \ + isvalidxmlblob4.testcase \ + isvalidxmlblob5.testcase \ + isvalidxmlblob6.testcase \ + registerGraphic10.testcase \ + registerGraphic11.testcase \ + registerGraphic12.testcase \ + registerGraphic13.testcase \ + registerGraphic14.testcase \ + registerGraphic15.testcase \ + registerGraphic16.testcase \ + registerGraphic17.testcase \ + registerGraphic18.testcase \ + registerGraphic19.testcase \ + registerGraphic1.testcase \ + registerGraphic20.testcase \ + registerGraphic21.testcase \ + registerGraphic22.testcase \ + registerGraphic2.testcase \ + registerGraphic3.testcase \ + registerGraphic4.testcase \ + registerGraphic5.testcase \ + registerGraphic6.testcase \ + registerGraphic7.testcase \ + registerGraphic8.testcase \ + registerGraphic9.testcase \ + registerGroup14.testcase \ + registerGroup15.testcase \ + registerGroup16.testcase \ + registerGroup17.testcase \ + registerGroup18.testcase \ + registerGroup1.testcase \ + registerGroup25.testcase \ + registerGroup26.testcase \ + registerGroup27.testcase \ + registerGroup28.testcase \ + registerGroup29.testcase \ + registerGroup2.testcase \ + registerGroup3.testcase \ + registerGroup4.testcase \ + registerGroup5.testcase \ + registerGroup6.testcase \ + registerGroup7.testcase \ + registerGroup8.testcase \ + registerGroupStyle1.testcase \ + registerGroupStyle2.testcase \ + registerGroupStyle3.testcase \ + registerGroupStyle4.testcase \ + registerGroupStyle5.testcase \ + registerGroupStyle6.testcase \ + registerGroupStyle7.testcase \ + registerGroupStyle8.testcase \ + registerGroupStyle9.testcase \ + registerGroupStyle10.testcase \ + registerGroupStyle11.testcase \ + registerGroupStyle12.testcase \ + registerGroupStyle13.testcase \ + registerGroupStyle14.testcase \ + registerGroupStyle15.testcase \ + registerGroupStyle16.testcase \ + registerGroupStyle17.testcase \ + registerIsoMeta10.testcase \ + registerIsoMeta11.testcase \ + registerIsoMeta12.testcase \ + registerIsoMeta13.testcase \ + registerIsoMeta14.testcase \ + registerIsoMeta1.testcase \ + registerIsoMeta2.testcase \ + registerIsoMeta3.testcase \ + registerIsoMeta4.testcase \ + registerIsoMeta5.testcase \ + registerIsoMeta6.testcase \ + registerIsoMeta7.testcase \ + registerIsoMeta8.testcase \ + registerIsoMeta9.testcase \ + registerRaster10.testcase \ + registerRaster11.testcase \ + registerRaster12.testcase \ + registerRaster13.testcase \ + registerRaster14.testcase \ + registerRaster15.testcase \ + registerRaster16.testcase \ + registerRaster17.testcase \ + registerRaster1.testcase \ + registerRaster2.testcase \ + registerRaster3.testcase \ + registerRaster4.testcase \ + registerRaster5.testcase \ + registerRaster6.testcase \ + registerRaster7.testcase \ + registerRaster8.testcase \ + registerRaster9.testcase \ + registerVector10.testcase \ + registerVector11.testcase \ + registerVector12.testcase \ + registerVector13.testcase \ + registerVector14.testcase \ + registerVector15.testcase \ + registerVector16.testcase \ + registerVector17.testcase \ + registerVector18.testcase \ + registerVector19.testcase \ + registerVector1.testcase \ + registerVector20.testcase \ + registerVector21.testcase \ + registerVector22.testcase \ + registerVector2.testcase \ + registerVector3.testcase \ + registerVector4.testcase \ + registerVector5.testcase \ + registerVector6.testcase \ + registerVector7.testcase \ + registerVector8.testcase \ + registerVector9.testcase \ + setfileid1.testcase \ + setfileid2.testcase \ + setfileid3.testcase \ + setfileid4.testcase \ + setfileid5.testcase \ + setGroupInfos10.testcase \ + setGroupInfos11.testcase \ + setGroupInfos12.testcase \ + setGroupInfos13.testcase \ + setGroupInfos1.testcase \ + setGroupInfos2.testcase \ + setGroupInfos3.testcase \ + setGroupInfos4.testcase \ + setGroupInfos5.testcase \ + setGroupInfos6.testcase \ + setGroupInfos7.testcase \ + setGroupInfos8.testcase \ + setGroupInfos9.testcase \ + setparentid1.testcase \ + setparentid2.testcase \ + setparentid3.testcase \ + setparentid4.testcase \ + setparentid5.testcase \ + xmlblobgetabstract1.testcase \ + xmlblobgetabstract2.testcase \ + xmlblobgetabstract3.testcase \ + xmlblobgetabstract4.testcase \ + xmlblobgetabstract5.testcase \ + xmlblobgetabstract6.testcase \ + xmlblobgetdocumentsize1.testcase \ + xmlblobgetdocumentsize2.testcase \ + xmlblobgetdocumentsize3.testcase \ + xmlblobgetdocumentsize4.testcase \ + xmlblobgetdocumentsize5.testcase \ + xmlblobgetdocumentsize6.testcase \ + xmlblobgetencoding1.testcase \ + xmlblobgetencoding2.testcase \ + xmlblobgetencoding3.testcase \ + xmlblobgetencoding4.testcase \ + xmlblobgetencoding5.testcase \ + xmlblobgetencoding6.testcase \ + xmlblobgetencoding7.testcase \ + xmlblobgetfileid1.testcase \ + xmlblobgetfileid2.testcase \ + xmlblobgetfileid3.testcase \ + xmlblobgetfileid4.testcase \ + xmlblobgetfileid5.testcase \ + xmlblobgetfileid6.testcase \ + xmlblobgetgeometry1.testcase \ + xmlblobgetgeometry2.testcase \ + xmlblobgetgeometry3.testcase \ + xmlblobgetgeometry4.testcase \ + xmlblobgetgeometry5.testcase \ + xmlblobgetgeometry6.testcase \ + xmlblobgetinternalschemauri1.testcase \ + xmlblobgetinternalschemauri2.testcase \ + xmlblobgetinternalschemauri3.testcase \ + xmlblobgetinternalschemauri4.testcase \ + xmlblobgetinternalschemauri5.testcase \ + xmlblobgetparentid1.testcase \ + xmlblobgetparentid2.testcase \ + xmlblobgetparentid3.testcase \ + xmlblobgetparentid4.testcase \ + xmlblobgetparentid5.testcase \ + xmlblobgetparentid6.testcase \ + xmlblobgetschemauri1.testcase \ + xmlblobgetschemauri2.testcase \ + xmlblobgetschemauri3.testcase \ + xmlblobgetschemauri4.testcase \ + xmlblobgetschemauri5.testcase \ + xmlblobgetschemauri6.testcase \ + xmlblobgetname1.testcase \ + xmlblobgetname2.testcase \ + xmlblobgetname3.testcase \ + xmlblobgetname4.testcase \ + xmlblobgetname5.testcase \ + xmlblobgetname6.testcase \ + xmlblobgetname7.testcase \ + xmlblobgetname8.testcase \ + xmlblobgettitle1.testcase \ + xmlblobgettitle2.testcase \ + xmlblobgettitle3.testcase \ + xmlblobgettitle4.testcase \ + xmlblobgettitle5.testcase \ + xmlblobgettitle6.testcase \ + xmlcompress1.testcase \ + xmlcompress2.testcase \ + xmlcompress3.testcase \ + xmlcompress4.testcase \ + xmlcompress5.testcase \ + xmlcompress6.testcase \ + xmlcompress7.testcase \ + xmlcompress8.testcase \ + xmlfromblob10.testcase \ + xmlfromblob11.testcase \ + xmlfromblob12.testcase \ + xmlfromblob13.testcase \ + xmlfromblob1.testcase \ + xmlfromblob2.testcase \ + xmlfromblob3.testcase \ + xmlfromblob4.testcase \ + xmlfromblob5.testcase \ + xmlfromblob6.testcase \ + xmlfromblob7.testcase \ + xmlfromblob8.testcase \ + xmlfromblob9.testcase \ + xmltextfromblob10.testcase \ + xmltextfromblob11.testcase \ + xmltextfromblob12.testcase \ + xmltextfromblob13.testcase \ + xmltextfromblob1.testcase \ + xmltextfromblob2.testcase \ + xmltextfromblob3.testcase \ + xmltextfromblob4.testcase \ + xmltextfromblob5.testcase \ + xmltextfromblob6.testcase \ + xmltextfromblob7.testcase \ + xmltextfromblob8.testcase \ + xmltextfromblob9.testcase \ + xmltoblob10.testcase \ + xmltoblob11.testcase \ + xmltoblob12.testcase \ + xmltoblob13.testcase \ + xmltoblob14.testcase \ + xmltoblob15.testcase \ + xmltoblob16.testcase \ + xmltoblob17.testcase \ + xmltoblob18.testcase \ + xmltoblob1.testcase \ + xmltoblob2.testcase \ + xmltoblob3.testcase \ + xmltoblob4.testcase \ + xmltoblob5.testcase \ + xmltoblob6.testcase \ + xmltoblob7.testcase \ + xmltoblob8.testcase \ + xmltoblob9.testcase \ + xmluncompress1.testcase \ + xmluncompress2.testcase \ + xmluncompress3.testcase \ + xmluncompress4.testcase \ + xmluncompress5.testcase \ + xmluncompress6.testcase \ + xmluncompress7.testcase \ + xmluncompress8.testcase diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/Makefile.in b/src/spatialite/test/sql_stmt_libxml2_tests/Makefile.in new file mode 100644 index 0000000..9d39232 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/Makefile.in @@ -0,0 +1,770 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/sql_stmt_libxml2_tests +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = addfileid1.testcase \ + addfileid2.testcase \ + addfileid3.testcase \ + addfileid4.testcase \ + addfileid5.testcase \ + addfileid6.testcase \ + addfileid7.testcase \ + addparentid1.testcase \ + addparentid2.testcase \ + addparentid3.testcase \ + addparentid4.testcase \ + addparentid5.testcase \ + addparentid6.testcase \ + addparentid7.testcase \ + createisometa1.testcase \ + createisometa2.testcase \ + createisometa3.testcase \ + createisometa4.testcase \ + createisometa5.testcase \ + createisometa6.testcase \ + createstyling1.testcase \ + createstyling2.testcase \ + createstyling3.testcase \ + createstyling4.testcase \ + createstyling5.testcase \ + createstyling6.testcase \ + getIsoMetaId1.testcase \ + getIsoMetaId2.testcase \ + getIsoMetaId3.testcase \ + getIsoMetaId4.testcase \ + getIsoMetaId5.testcase \ + iscompressedxmlblob1.testcase \ + iscompressedxmlblob2.testcase \ + iscompressedxmlblob3.testcase \ + iscompressedxmlblob4.testcase \ + iscompressedxmlblob5.testcase \ + iscompressedxmlblob6.testcase \ + iscompressedxmlblob7.testcase \ + isisometadata1.testcase \ + isisometadata2.testcase \ + isisometadata3.testcase \ + isisometadata4.testcase \ + isisometadata5.testcase \ + isisometadata6.testcase \ + isisometadata7.testcase \ + isschemavalidatedxmlblob1.testcase \ + isschemavalidatedxmlblob2.testcase \ + isschemavalidatedxmlblob3.testcase \ + isschemavalidatedxmlblob4.testcase \ + isschemavalidatedxmlblob5.testcase \ + isschemavalidatedxmlblob6.testcase \ + issldserststyle1.testcase \ + issldserststyle2.testcase \ + issldserststyle3.testcase \ + issldserststyle4.testcase \ + issldserststyle5.testcase \ + issldserststyle6.testcase \ + issldserststyle7.testcase \ + issldsestyle1.testcase \ + issldsestyle2.testcase \ + issldsestyle3.testcase \ + issldsestyle4.testcase \ + issldsestyle5.testcase \ + issldsestyle6.testcase \ + issldsestyle7.testcase \ + issvg1.testcase \ + issvg2.testcase \ + issvg3.testcase \ + issvg4.testcase \ + issvg5.testcase \ + issvg6.testcase \ + issvg7.testcase \ + isvalidxmlblob1.testcase \ + isvalidxmlblob2.testcase \ + isvalidxmlblob3.testcase \ + isvalidxmlblob4.testcase \ + isvalidxmlblob5.testcase \ + isvalidxmlblob6.testcase \ + registerGraphic10.testcase \ + registerGraphic11.testcase \ + registerGraphic12.testcase \ + registerGraphic13.testcase \ + registerGraphic14.testcase \ + registerGraphic15.testcase \ + registerGraphic16.testcase \ + registerGraphic17.testcase \ + registerGraphic18.testcase \ + registerGraphic19.testcase \ + registerGraphic1.testcase \ + registerGraphic20.testcase \ + registerGraphic21.testcase \ + registerGraphic22.testcase \ + registerGraphic2.testcase \ + registerGraphic3.testcase \ + registerGraphic4.testcase \ + registerGraphic5.testcase \ + registerGraphic6.testcase \ + registerGraphic7.testcase \ + registerGraphic8.testcase \ + registerGraphic9.testcase \ + registerGroup14.testcase \ + registerGroup15.testcase \ + registerGroup16.testcase \ + registerGroup17.testcase \ + registerGroup18.testcase \ + registerGroup1.testcase \ + registerGroup25.testcase \ + registerGroup26.testcase \ + registerGroup27.testcase \ + registerGroup28.testcase \ + registerGroup29.testcase \ + registerGroup2.testcase \ + registerGroup3.testcase \ + registerGroup4.testcase \ + registerGroup5.testcase \ + registerGroup6.testcase \ + registerGroup7.testcase \ + registerGroup8.testcase \ + registerGroupStyle1.testcase \ + registerGroupStyle2.testcase \ + registerGroupStyle3.testcase \ + registerGroupStyle4.testcase \ + registerGroupStyle5.testcase \ + registerGroupStyle6.testcase \ + registerGroupStyle7.testcase \ + registerGroupStyle8.testcase \ + registerGroupStyle9.testcase \ + registerGroupStyle10.testcase \ + registerGroupStyle11.testcase \ + registerGroupStyle12.testcase \ + registerGroupStyle13.testcase \ + registerGroupStyle14.testcase \ + registerGroupStyle15.testcase \ + registerGroupStyle16.testcase \ + registerGroupStyle17.testcase \ + registerIsoMeta10.testcase \ + registerIsoMeta11.testcase \ + registerIsoMeta12.testcase \ + registerIsoMeta13.testcase \ + registerIsoMeta14.testcase \ + registerIsoMeta1.testcase \ + registerIsoMeta2.testcase \ + registerIsoMeta3.testcase \ + registerIsoMeta4.testcase \ + registerIsoMeta5.testcase \ + registerIsoMeta6.testcase \ + registerIsoMeta7.testcase \ + registerIsoMeta8.testcase \ + registerIsoMeta9.testcase \ + registerRaster10.testcase \ + registerRaster11.testcase \ + registerRaster12.testcase \ + registerRaster13.testcase \ + registerRaster14.testcase \ + registerRaster15.testcase \ + registerRaster16.testcase \ + registerRaster17.testcase \ + registerRaster1.testcase \ + registerRaster2.testcase \ + registerRaster3.testcase \ + registerRaster4.testcase \ + registerRaster5.testcase \ + registerRaster6.testcase \ + registerRaster7.testcase \ + registerRaster8.testcase \ + registerRaster9.testcase \ + registerVector10.testcase \ + registerVector11.testcase \ + registerVector12.testcase \ + registerVector13.testcase \ + registerVector14.testcase \ + registerVector15.testcase \ + registerVector16.testcase \ + registerVector17.testcase \ + registerVector18.testcase \ + registerVector19.testcase \ + registerVector1.testcase \ + registerVector20.testcase \ + registerVector21.testcase \ + registerVector22.testcase \ + registerVector2.testcase \ + registerVector3.testcase \ + registerVector4.testcase \ + registerVector5.testcase \ + registerVector6.testcase \ + registerVector7.testcase \ + registerVector8.testcase \ + registerVector9.testcase \ + setfileid1.testcase \ + setfileid2.testcase \ + setfileid3.testcase \ + setfileid4.testcase \ + setfileid5.testcase \ + setGroupInfos10.testcase \ + setGroupInfos11.testcase \ + setGroupInfos12.testcase \ + setGroupInfos13.testcase \ + setGroupInfos1.testcase \ + setGroupInfos2.testcase \ + setGroupInfos3.testcase \ + setGroupInfos4.testcase \ + setGroupInfos5.testcase \ + setGroupInfos6.testcase \ + setGroupInfos7.testcase \ + setGroupInfos8.testcase \ + setGroupInfos9.testcase \ + setparentid1.testcase \ + setparentid2.testcase \ + setparentid3.testcase \ + setparentid4.testcase \ + setparentid5.testcase \ + xmlblobgetabstract1.testcase \ + xmlblobgetabstract2.testcase \ + xmlblobgetabstract3.testcase \ + xmlblobgetabstract4.testcase \ + xmlblobgetabstract5.testcase \ + xmlblobgetabstract6.testcase \ + xmlblobgetdocumentsize1.testcase \ + xmlblobgetdocumentsize2.testcase \ + xmlblobgetdocumentsize3.testcase \ + xmlblobgetdocumentsize4.testcase \ + xmlblobgetdocumentsize5.testcase \ + xmlblobgetdocumentsize6.testcase \ + xmlblobgetencoding1.testcase \ + xmlblobgetencoding2.testcase \ + xmlblobgetencoding3.testcase \ + xmlblobgetencoding4.testcase \ + xmlblobgetencoding5.testcase \ + xmlblobgetencoding6.testcase \ + xmlblobgetencoding7.testcase \ + xmlblobgetfileid1.testcase \ + xmlblobgetfileid2.testcase \ + xmlblobgetfileid3.testcase \ + xmlblobgetfileid4.testcase \ + xmlblobgetfileid5.testcase \ + xmlblobgetfileid6.testcase \ + xmlblobgetgeometry1.testcase \ + xmlblobgetgeometry2.testcase \ + xmlblobgetgeometry3.testcase \ + xmlblobgetgeometry4.testcase \ + xmlblobgetgeometry5.testcase \ + xmlblobgetgeometry6.testcase \ + xmlblobgetinternalschemauri1.testcase \ + xmlblobgetinternalschemauri2.testcase \ + xmlblobgetinternalschemauri3.testcase \ + xmlblobgetinternalschemauri4.testcase \ + xmlblobgetinternalschemauri5.testcase \ + xmlblobgetparentid1.testcase \ + xmlblobgetparentid2.testcase \ + xmlblobgetparentid3.testcase \ + xmlblobgetparentid4.testcase \ + xmlblobgetparentid5.testcase \ + xmlblobgetparentid6.testcase \ + xmlblobgetschemauri1.testcase \ + xmlblobgetschemauri2.testcase \ + xmlblobgetschemauri3.testcase \ + xmlblobgetschemauri4.testcase \ + xmlblobgetschemauri5.testcase \ + xmlblobgetschemauri6.testcase \ + xmlblobgetname1.testcase \ + xmlblobgetname2.testcase \ + xmlblobgetname3.testcase \ + xmlblobgetname4.testcase \ + xmlblobgetname5.testcase \ + xmlblobgetname6.testcase \ + xmlblobgetname7.testcase \ + xmlblobgetname8.testcase \ + xmlblobgettitle1.testcase \ + xmlblobgettitle2.testcase \ + xmlblobgettitle3.testcase \ + xmlblobgettitle4.testcase \ + xmlblobgettitle5.testcase \ + xmlblobgettitle6.testcase \ + xmlcompress1.testcase \ + xmlcompress2.testcase \ + xmlcompress3.testcase \ + xmlcompress4.testcase \ + xmlcompress5.testcase \ + xmlcompress6.testcase \ + xmlcompress7.testcase \ + xmlcompress8.testcase \ + xmlfromblob10.testcase \ + xmlfromblob11.testcase \ + xmlfromblob12.testcase \ + xmlfromblob13.testcase \ + xmlfromblob1.testcase \ + xmlfromblob2.testcase \ + xmlfromblob3.testcase \ + xmlfromblob4.testcase \ + xmlfromblob5.testcase \ + xmlfromblob6.testcase \ + xmlfromblob7.testcase \ + xmlfromblob8.testcase \ + xmlfromblob9.testcase \ + xmltextfromblob10.testcase \ + xmltextfromblob11.testcase \ + xmltextfromblob12.testcase \ + xmltextfromblob13.testcase \ + xmltextfromblob1.testcase \ + xmltextfromblob2.testcase \ + xmltextfromblob3.testcase \ + xmltextfromblob4.testcase \ + xmltextfromblob5.testcase \ + xmltextfromblob6.testcase \ + xmltextfromblob7.testcase \ + xmltextfromblob8.testcase \ + xmltextfromblob9.testcase \ + xmltoblob10.testcase \ + xmltoblob11.testcase \ + xmltoblob12.testcase \ + xmltoblob13.testcase \ + xmltoblob14.testcase \ + xmltoblob15.testcase \ + xmltoblob16.testcase \ + xmltoblob17.testcase \ + xmltoblob18.testcase \ + xmltoblob1.testcase \ + xmltoblob2.testcase \ + xmltoblob3.testcase \ + xmltoblob4.testcase \ + xmltoblob5.testcase \ + xmltoblob6.testcase \ + xmltoblob7.testcase \ + xmltoblob8.testcase \ + xmltoblob9.testcase \ + xmluncompress1.testcase \ + xmluncompress2.testcase \ + xmluncompress3.testcase \ + xmluncompress4.testcase \ + xmluncompress5.testcase \ + xmluncompress6.testcase \ + xmluncompress7.testcase \ + xmluncompress8.testcase + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/sql_stmt_libxml2_tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/sql_stmt_libxml2_tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/addfileid1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/addfileid1.testcase new file mode 100644 index 0000000..98dc266 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/addfileid1.testcase @@ -0,0 +1,8 @@ +XB_AddFileId - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_AddFileId(NULL, 'alpha', NULL, NULL, NULL, NULL); +1 # rows (not including the header row) +1 # columns +XB_AddFileId(NULL, 'alpha', NULL, NULL, NULL, NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/addfileid2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/addfileid2.testcase new file mode 100644 index 0000000..904da06 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/addfileid2.testcase @@ -0,0 +1,8 @@ +XB_AddFileId - not ISO Metadata XmlBLOB +:memory: #use in-memory database +SELECT XB_AddFileId(XB_Create(CastToBlob('a')), 'alpha', NULL, NULL, NULL, NULL); +1 # rows (not including the header row) +1 # columns +XB_AddFileId(XB_Create(CastToBlob('a')), 'alpha', NULL, NULL, NULL, NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/addfileid3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/addfileid3.testcase new file mode 100644 index 0000000..89792da --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/addfileid3.testcase @@ -0,0 +1,8 @@ +XB_AddFileId - ISO Metadata - already defined fileIdentfier +:memory: #use in-memory database +SELECT XB_AddFileId(XB_Create(CastToBlob('a')), 'alpha', NULL, NULL, NULL, NULL); +1 # rows (not including the header row) +1 # columns +XB_AddFileId(XB_Create(CastToBlob('a')), 'alpha', NULL, NULL, NULL, NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/addfileid4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/addfileid4.testcase new file mode 100644 index 0000000..5cfd39a --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/addfileid4.testcase @@ -0,0 +1,8 @@ +XB_AddFileId - ISO Metadata - INTEGER fileId +:memory: #use in-memory database +SELECT XB_AddFileId(XB_Create(CastToBlob('a')), 1234, NULL, NULL, NULL, NULL); +1 # rows (not including the header row) +1 # columns +XB_AddFileId(XB_Create(CastToBlob('a')), 1234, NULL, NULL, NULL, NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/addfileid5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/addfileid5.testcase new file mode 100644 index 0000000..4c79edc --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/addfileid5.testcase @@ -0,0 +1,8 @@ +XB_AddFileId - valid - no namespaces +:memory: #use in-memory database +SELECT XB_GetFileId(XB_AddFileId(XB_Create(CastToBlob('a')), 'newfileid', NULL, NULL, NULL, NULL)); +1 # rows (not including the header row) +1 # columns +XB_GetFileId(XB_AddFileId(XB_Create(CastToBlob('a')), 'newfileid', NULL, NULL, NULL, NULL)) +newfileid + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/addfileid6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/addfileid6.testcase new file mode 100644 index 0000000..8656e20 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/addfileid6.testcase @@ -0,0 +1,8 @@ +XB_AddFileId - valid - gmd namespace +:memory: #use in-memory database +SELECT XB_GetFileId(XB_AddFileId(XB_Create(CastToBlob('')), 'newfileid', 'gmd', NULL, 'gco', 'http://www.isotc211.org/2005/gco')); +1 # rows (not including the header row) +1 # columns +XB_GetFileId(XB_AddFileId(XB_Create(CastToBlob('')), 'newfileid', 'gmd', NULL, 'gco', 'http://www.isotc211.org/2005/gco')):0 +newfileid + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/addfileid7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/addfileid7.testcase new file mode 100644 index 0000000..d40d0d5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/addfileid7.testcase @@ -0,0 +1,8 @@ +XB_AddFileId - valid - default namespace +:memory: #use in-memory database +SELECT XB_GetFileId(XB_AddFileId(XB_Create(CastToBlob('')), 'newfileid', NULL, 'http://www.isotc211.org/2005/gmd', 'gco', 'http://www.isotc211.org/2005/gco')); +1 # rows (not including the header row) +1 # columns +XB_GetFileId(XB_AddFileId(XB_Create(CastToBlob('')), 'newfileid', NULL, 'http://www.isotc211.org/2005/gmd', 'gco', 'http://www.isotc211.org/2005/gco')):0 +newfileid + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/addparentid1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/addparentid1.testcase new file mode 100644 index 0000000..a00e5f3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/addparentid1.testcase @@ -0,0 +1,8 @@ +XB_AddParentId - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_AddParentId(NULL, 'alpha', NULL, NULL, NULL, NULL); +1 # rows (not including the header row) +1 # columns +XB_AddParentId(NULL, 'alpha', NULL, NULL, NULL, NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/addparentid2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/addparentid2.testcase new file mode 100644 index 0000000..0088545 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/addparentid2.testcase @@ -0,0 +1,8 @@ +XB_AddParentId - not ISO Metadata XmlBLOB +:memory: #use in-memory database +SELECT XB_AddParentId(XB_Create(CastToBlob('a')), 'alpha', NULL, NULL, NULL, NULL); +1 # rows (not including the header row) +1 # columns +XB_AddParentId(XB_Create(CastToBlob('a')), 'alpha', NULL, NULL, NULL, NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/addparentid3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/addparentid3.testcase new file mode 100644 index 0000000..6ab24f9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/addparentid3.testcase @@ -0,0 +1,8 @@ +XB_AddParentId - ISO Metadata - already defined parentIdentfier +:memory: #use in-memory database +SELECT XB_AddParentId(XB_Create(CastToBlob('a')), 'alpha', NULL, NULL, NULL, NULL); +1 # rows (not including the header row) +1 # columns +XB_AddParentId(XB_Create(CastToBlob('a')), 'alpha', NULL, NULL, NULL, NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/addparentid4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/addparentid4.testcase new file mode 100644 index 0000000..00ccfe3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/addparentid4.testcase @@ -0,0 +1,8 @@ +XB_AddParentId - ISO Metadata - INTEGER fileId +:memory: #use in-memory database +SELECT XB_AddParentId(XB_Create(CastToBlob('a')), 1234, NULL, NULL, NULL, NULL); +1 # rows (not including the header row) +1 # columns +XB_AddParentId(XB_Create(CastToBlob('a')), 1234, NULL, NULL, NULL, NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/addparentid5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/addparentid5.testcase new file mode 100644 index 0000000..d16f35d --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/addparentid5.testcase @@ -0,0 +1,8 @@ +XB_AddParentId - valid - no namespaces +:memory: #use in-memory database +SELECT XB_GetParentId(XB_AddParentId(XB_Create(CastToBlob('a')), 'newparentid', NULL, NULL, NULL, NULL)); +1 # rows (not including the header row) +1 # columns +XB_GetParentId(XB_AddParentId(XB_Create(CastToBlob('a')), 'newparentid', NULL, NULL, NULL, NULL)) +newparentid + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/addparentid6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/addparentid6.testcase new file mode 100644 index 0000000..5e16591 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/addparentid6.testcase @@ -0,0 +1,8 @@ +XB_AddParentId - valid - gmd namespace +:memory: #use in-memory database +SELECT XB_GetParentId(XB_AddParentId(XB_Create(CastToBlob('')), 'newparentid', 'gmd', NULL, 'gco', 'http://www.isotc211.org/2005/gco')); +1 # rows (not including the header row) +1 # columns +XB_GetParentId(XB_AddParentId(XB_Create(CastToBlob('')), 'newparentid', 'gmd', NULL, 'gco', 'http://www.isotc211.org/2005/gco')):0 +newparentid + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/addparentid7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/addparentid7.testcase new file mode 100644 index 0000000..25cb17c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/addparentid7.testcase @@ -0,0 +1,8 @@ +XB_AddParentId - valid - default namespace +:memory: #use in-memory database +SELECT XB_GetParentId(XB_AddParentId(XB_Create(CastToBlob('')), 'newparentid', NULL, 'http://www.isotc211.org/2005/gmd', 'gco', 'http://www.isotc211.org/2005/gco')); +1 # rows (not including the header row) +1 # columns +XB_GetParentId(XB_AddParentId(XB_Create(CastToBlob('')), 'newparentid', NULL, 'http://www.isotc211.org/2005/gmd', 'gco', 'http://www.isotc211.org/2005/gco')):0 +newparentid + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/createisometa1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/createisometa1.testcase new file mode 100644 index 0000000..93f5622 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/createisometa1.testcase @@ -0,0 +1,8 @@ +CreateIsoMetadataTables - NULL +:memory: #use in-memory database +SELECT CreateIsoMetadataTables(NULL); +1 # rows (not including the header row) +1 # columns +CreateIsoMetadataTables(NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/createisometa2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/createisometa2.testcase new file mode 100644 index 0000000..7291756 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/createisometa2.testcase @@ -0,0 +1,8 @@ +CreateIsoMetadataTables - TEXT +:memory: #use in-memory database +SELECT CreateIsoMetadataTables('alpha'); +1 # rows (not including the header row) +1 # columns +CreateIsoMetadataTables('alpha') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/createisometa3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/createisometa3.testcase new file mode 100644 index 0000000..0157d6d --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/createisometa3.testcase @@ -0,0 +1,8 @@ +CreateIsoMetadataTables - DOUBLE +:memory: #use in-memory database +SELECT CreateIsoMetadataTables(1.1); +1 # rows (not including the header row) +1 # columns +CreateIsoMetadataTables(1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/createisometa4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/createisometa4.testcase new file mode 100644 index 0000000..876723d --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/createisometa4.testcase @@ -0,0 +1,8 @@ +CreateIsoMetadataTables - BLOB +:memory: #use in-memory database +SELECT CreateIsoMetadataTables(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +CreateIsoMetadataTables(zeroblob(4)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/createisometa5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/createisometa5.testcase new file mode 100644 index 0000000..023bacd --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/createisometa5.testcase @@ -0,0 +1,8 @@ +CreateIsoMetadataTables - no args +NEW:memory: #use in-memory database +SELECT CreateIsoMetadataTables(); +1 # rows (not including the header row) +1 # columns +CreateIsoMetadataTables() +1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/createisometa6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/createisometa6.testcase new file mode 100644 index 0000000..e9988cd --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/createisometa6.testcase @@ -0,0 +1,8 @@ +CreateIsoMetadataTables - relaxed +NEW:memory: #use in-memory database +SELECT CreateIsoMetadataTables(1); +1 # rows (not including the header row) +1 # columns +CreateIsoMetadataTables(1) +1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/createstyling1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/createstyling1.testcase new file mode 100644 index 0000000..5154f9b --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/createstyling1.testcase @@ -0,0 +1,8 @@ +CreateStylingTables - NULL +:memory: #use in-memory database +SELECT CreateStylingTables(NULL); +1 # rows (not including the header row) +1 # columns +CreateStylingTables(NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/createstyling2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/createstyling2.testcase new file mode 100644 index 0000000..2065956 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/createstyling2.testcase @@ -0,0 +1,8 @@ +CreateStylingTables - TEXT +:memory: #use in-memory database +SELECT CreateStylingTables('alpha'); +1 # rows (not including the header row) +1 # columns +CreateStylingTables('alpha') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/createstyling3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/createstyling3.testcase new file mode 100644 index 0000000..29dfb0b --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/createstyling3.testcase @@ -0,0 +1,8 @@ +CreateStylingTables - DOUBLE +:memory: #use in-memory database +SELECT CreateStylingTables(1.1); +1 # rows (not including the header row) +1 # columns +CreateStylingTables(1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/createstyling4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/createstyling4.testcase new file mode 100644 index 0000000..f7c33a9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/createstyling4.testcase @@ -0,0 +1,8 @@ +CreateStylingTables - BLOB +:memory: #use in-memory database +SELECT CreateStylingTables(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +CreateStylingTables(zeroblob(4)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/createstyling5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/createstyling5.testcase new file mode 100644 index 0000000..ecfc240 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/createstyling5.testcase @@ -0,0 +1,8 @@ +CreateStylingTables - no args +NEW:memory: #use in-memory database +SELECT CreateStylingTables(); +1 # rows (not including the header row) +1 # columns +CreateStylingTables() +1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/createstyling6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/createstyling6.testcase new file mode 100644 index 0000000..c5067cd --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/createstyling6.testcase @@ -0,0 +1,8 @@ +CreateStylingTables - relaxed +NEW:memory: #use in-memory database +SELECT CreateStylingTables(1); +1 # rows (not including the header row) +1 # columns +CreateStylingTables(1) +1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId1.testcase new file mode 100644 index 0000000..52cbf90 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId1.testcase @@ -0,0 +1,8 @@ +GetIsoMetadataId - NULL fileIdentifier +:memory: #use in-memory database +SELECT GetIsoMetadataId(NULL); +1 # rows (not including the header row) +1 # columns +GetIsoMetadataId(NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId2.testcase new file mode 100644 index 0000000..ff4c8a1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId2.testcase @@ -0,0 +1,8 @@ +GetIsoMetadataId - INTEGER fileIdentifier +:memory: #use in-memory database +SELECT GetIsoMetadataId(1); +1 # rows (not including the header row) +1 # columns +GetIsoMetadataId(1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId3.testcase new file mode 100644 index 0000000..b6905dc --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId3.testcase @@ -0,0 +1,8 @@ +GetIsoMetadataId - DOUBLE fileIdentifier +:memory: #use in-memory database +SELECT GetIsoMetadataId(1.1); +1 # rows (not including the header row) +1 # columns +GetIsoMetadataId(1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId4.testcase new file mode 100644 index 0000000..6644abd --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId4.testcase @@ -0,0 +1,8 @@ +GetIsoMetadataId - BLOB fileIdentifier +:memory: #use in-memory database +SELECT GetIsoMetadataId(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +GetIsoMetadataId(zeroblob(4)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId5.testcase new file mode 100644 index 0000000..ab5e8c0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/getIsoMetaId5.testcase @@ -0,0 +1,8 @@ +GetIsoMetadataId - TEXT fileIdentifier +:memory: #use in-memory database +SELECT GetIsoMetadataId('alpha'); +1 # rows (not including the header row) +1 # columns +GetIsoMetadataId('alpha') +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob1.testcase new file mode 100644 index 0000000..393ece1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob1.testcase @@ -0,0 +1,8 @@ +XB_IsCompressed - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_IsCompressed(NULL); +1 # rows (not including the header row) +1 # columns +XB_IsCompressed(NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob2.testcase new file mode 100644 index 0000000..9375025 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob2.testcase @@ -0,0 +1,8 @@ +XB_IsCompressed - INTEGER XmlBLOB +:memory: #use in-memory database +SELECT XB_IsCompressed(1); +1 # rows (not including the header row) +1 # columns +XB_IsCompressed(1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob3.testcase new file mode 100644 index 0000000..bfa0ff6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob3.testcase @@ -0,0 +1,8 @@ +XB_IsCompressed - DOUBLE XmlBLOB +:memory: #use in-memory database +SELECT XB_IsCompressed(1.1); +1 # rows (not including the header row) +1 # columns +XB_IsCompressed(1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob4.testcase new file mode 100644 index 0000000..dd9a966 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob4.testcase @@ -0,0 +1,8 @@ +XB_IsCompressed - TEXT XmlBLOB +:memory: #use in-memory database +SELECT XB_IsCompressed('alpha'); +1 # rows (not including the header row) +1 # columns +XB_IsCompressed('alpha') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob5.testcase new file mode 100644 index 0000000..6e2e507 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob5.testcase @@ -0,0 +1,8 @@ +XB_IsCompressed - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_IsCompressed(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_IsCompressed(zeroblob(100)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob6.testcase new file mode 100644 index 0000000..aa919a5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob6.testcase @@ -0,0 +1,8 @@ +XB_IsCompressed - valid XmlBLOB (compressed) +:memory: #use in-memory database +SELECT XB_IsCompressed(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD'); +1 # rows (not including the header row) +1 # columns +XB_IsCompressed(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD') +1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob7.testcase new file mode 100644 index 0000000..2a4734e --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/iscompressedxmlblob7.testcase @@ -0,0 +1,8 @@ +XB_IsCompressed - valid XmlBLOB (uncompressed) +:memory: #use in-memory database +SELECT XB_IsCompressed(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD'); +1 # rows (not including the header row) +1 # columns +XB_IsCompressed(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD') +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata1.testcase new file mode 100644 index 0000000..639b66e --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata1.testcase @@ -0,0 +1,8 @@ +XB_IsIsoMetadata - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_IsIsoMetadata(NULL); +1 # rows (not including the header row) +1 # columns +XB_IsIsoMetadata(NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata2.testcase new file mode 100644 index 0000000..ce98e57 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata2.testcase @@ -0,0 +1,8 @@ +XB_IsIsoMetadata - INTEGER XmlBLOB +:memory: #use in-memory database +SELECT XB_IsIsoMetadata(1); +1 # rows (not including the header row) +1 # columns +XB_IsIsoMetadata(1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata3.testcase new file mode 100644 index 0000000..7eb14df --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata3.testcase @@ -0,0 +1,8 @@ +XB_IsIsoMetadata - DOUBLE XmlBLOB +:memory: #use in-memory database +SELECT XB_IsIsoMetadata(1.1); +1 # rows (not including the header row) +1 # columns +XB_IsIsoMetadata(1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata4.testcase new file mode 100644 index 0000000..2cb2f4e --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata4.testcase @@ -0,0 +1,8 @@ +XB_IsIsoMetadata - TEXT XmlBLOB +:memory: #use in-memory database +SELECT XB_IsIsoMetadata('alpha'); +1 # rows (not including the header row) +1 # columns +XB_IsIsoMetadata('alpha') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata5.testcase new file mode 100644 index 0000000..f7d6466 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata5.testcase @@ -0,0 +1,8 @@ +XB_IsIsoMetadata - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_IsIsoMetadata(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_IsIsoMetadata(zeroblob(100)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata6.testcase new file mode 100644 index 0000000..188a395 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata6.testcase @@ -0,0 +1,8 @@ +XB_IsIsoMetadata - valid XmlBLOB (TRUE) +:memory: #use in-memory database +SELECT XB_IsIsoMetadata(x'0081AB0F0000000F0000000000BA0000CA0000DA0000DB0000DC0000DDCB3C4D445F4D65746164617461202F3EBC8402E3A9DD'); +1 # rows (not including the header row) +1 # columns +XB_IsIsoMetadata(x'0081AB0F0000000F0000000000BA0000CA0000DA0000DB0000DC0000DDCB3C4D445F4D65746164617461202F3EBC8402E3A9DD') +1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata7.testcase new file mode 100644 index 0000000..1da938d --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isisometadata7.testcase @@ -0,0 +1,8 @@ +XB_IsIsoMetadata - valid XmlBLOB (FALSE) +:memory: #use in-memory database +SELECT XB_IsIsoMetadata(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD'); +1 # rows (not including the header row) +1 # columns +XB_IsIsoMetadata(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD') +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob1.testcase new file mode 100644 index 0000000..1ca1029 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob1.testcase @@ -0,0 +1,8 @@ +XB_IsSchemaValidated - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSchemaValidated(NULL); +1 # rows (not including the header row) +1 # columns +XB_IsSchemaValidated(NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob2.testcase new file mode 100644 index 0000000..1a89cb0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob2.testcase @@ -0,0 +1,8 @@ +XB_IsSchemaValidated - INTEGER XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSchemaValidated(1); +1 # rows (not including the header row) +1 # columns +XB_IsSchemaValidated(1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob3.testcase new file mode 100644 index 0000000..95cd3d0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob3.testcase @@ -0,0 +1,8 @@ +XB_IsSchemaValidated - DOUBLE XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSchemaValidated(1.1); +1 # rows (not including the header row) +1 # columns +XB_IsSchemaValidated(1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob4.testcase new file mode 100644 index 0000000..afb84f2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob4.testcase @@ -0,0 +1,8 @@ +XB_IsSchemaValidated - TEXT XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSchemaValidated('alpha'); +1 # rows (not including the header row) +1 # columns +XB_IsSchemaValidated('alpha') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob5.testcase new file mode 100644 index 0000000..1801f26 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob5.testcase @@ -0,0 +1,8 @@ +XB_IsSchemaValidated - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSchemaValidated(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_IsSchemaValidated(zeroblob(100)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob6.testcase new file mode 100644 index 0000000..fd56d98 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isschemavalidatedxmlblob6.testcase @@ -0,0 +1,8 @@ +XB_IsSchemaValidated - not SchemaValidated XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSchemaValidated(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD'); +1 # rows (not including the header row) +1 # columns +XB_IsSchemaValidated(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD') +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle1.testcase new file mode 100644 index 0000000..c1ac3ef --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle1.testcase @@ -0,0 +1,8 @@ +XB_IsSldSeRasterStyle - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSldSeRasterStyle(NULL); +1 # rows (not including the header row) +1 # columns +XB_IsSldSeRasterStyle(NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle2.testcase new file mode 100644 index 0000000..294fcf5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle2.testcase @@ -0,0 +1,8 @@ +XB_IsSldSeRasterStyle - INTEGER XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSldSeRasterStyle(1); +1 # rows (not including the header row) +1 # columns +XB_IsSldSeRasterStyle(1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle3.testcase new file mode 100644 index 0000000..903bdcf --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle3.testcase @@ -0,0 +1,8 @@ +XB_IsSldSeRasterStyle - DOUBLE XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSldSeRasterStyle(1.1); +1 # rows (not including the header row) +1 # columns +XB_IsSldSeRasterStyle(1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle4.testcase new file mode 100644 index 0000000..c5a1f79 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle4.testcase @@ -0,0 +1,8 @@ +XB_IsSldSeRasterStyle - TEXT XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSldSeRasterStyle('alpha'); +1 # rows (not including the header row) +1 # columns +XB_IsSldSeRasterStyle('alpha') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle5.testcase new file mode 100644 index 0000000..a89bc5d --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle5.testcase @@ -0,0 +1,8 @@ +XB_IsSldSeRasterStyle - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSldSeRasterStyle(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_IsSldSeRasterStyle(zeroblob(100)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle6.testcase new file mode 100644 index 0000000..acf02eb --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle6.testcase @@ -0,0 +1,8 @@ +XB_IsSldSeRasterStyle - valid XmlBLOB (TRUE) +:memory: #use in-memory database +SELECT XB_IsSldSeRasterStyle(x'0013AB10000000180000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB371CE2F4B2D4A4C4F0D2EA9CC49D5B7030032D505E7BCDB7BDDBCDD'); +1 # rows (not including the header row) +1 # columns +XB_IsSldSeRasterStyle(x'0013AB10000000180000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB371CE2F4B2D4A4C4F0D2EA9CC49D5B7030032D505E7BCDB7BDDBCDD') +1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle7.testcase new file mode 100644 index 0000000..560f78d --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issldserststyle7.testcase @@ -0,0 +1,8 @@ +XB_IsSldSeRasterStyle - valid XmlBLOB (FALSE) +:memory: #use in-memory database +SELECT XB_IsSldSeRasterStyle(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD'); +1 # rows (not including the header row) +1 # columns +XB_IsSldSeRasterStyle(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD') +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle1.testcase new file mode 100644 index 0000000..6b1b73c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle1.testcase @@ -0,0 +1,8 @@ +XB_IsSldSeVectorStyle - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSldSeVectorStyle(NULL); +1 # rows (not including the header row) +1 # columns +XB_IsSldSeVectorStyle(NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle2.testcase new file mode 100644 index 0000000..ad4b1a9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle2.testcase @@ -0,0 +1,8 @@ +XB_IsSldSeVectorStyle - INTEGER XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSldSeVectorStyle(1); +1 # rows (not including the header row) +1 # columns +XB_IsSldSeVectorStyle(1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle3.testcase new file mode 100644 index 0000000..d37fefd --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle3.testcase @@ -0,0 +1,8 @@ +XB_IsSldSeVectorStyle - DOUBLE XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSldSeVectorStyle(1.1); +1 # rows (not including the header row) +1 # columns +XB_IsSldSeVectorStyle(1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle4.testcase new file mode 100644 index 0000000..ff40cd4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle4.testcase @@ -0,0 +1,8 @@ +XB_IsSldSeVectorStyle - TEXT XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSldSeVectorStyle('alpha'); +1 # rows (not including the header row) +1 # columns +XB_IsSldSeVectorStyle('alpha') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle5.testcase new file mode 100644 index 0000000..9d3ace5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle5.testcase @@ -0,0 +1,8 @@ +XB_IsSldSeVectorStyle - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSldSeVectorStyle(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_IsSldSeVectorStyle(zeroblob(100)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle6.testcase new file mode 100644 index 0000000..546d899 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle6.testcase @@ -0,0 +1,8 @@ +XB_IsSldSeVectorStyle - valid XmlBLOB (TRUE) +:memory: #use in-memory database +SELECT XB_IsSldSeVectorStyle(x'0041AB19000000190000000000BA0000CA0000DA0000DB0000DC0000DDCB3C5374796C65644C6179657244657363726970746F72202F3EBCB987BFABDD'); +1 # rows (not including the header row) +1 # columns +XB_IsSldSeVectorStyle(x'0041AB19000000190000000000BA0000CA0000DA0000DB0000DC0000DDCB3C5374796C65644C6179657244657363726970746F72202F3EBCB987BFABDD') +1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle7.testcase new file mode 100644 index 0000000..ea50ec6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issldsestyle7.testcase @@ -0,0 +1,8 @@ +XB_IsSldSeVectorStyle - valid XmlBLOB (FALSE) +:memory: #use in-memory database +SELECT XB_IsSldSeVectorStyle(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD'); +1 # rows (not including the header row) +1 # columns +XB_IsSldSeVectorStyle(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD') +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issvg1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issvg1.testcase new file mode 100644 index 0000000..b77a334 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issvg1.testcase @@ -0,0 +1,8 @@ +XB_IsSvg - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSvg(NULL); +1 # rows (not including the header row) +1 # columns +XB_IsSvg(NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issvg2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issvg2.testcase new file mode 100644 index 0000000..487a269 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issvg2.testcase @@ -0,0 +1,8 @@ +XB_IsSvg - INTEGER XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSvg(1); +1 # rows (not including the header row) +1 # columns +XB_IsSvg(1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issvg3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issvg3.testcase new file mode 100644 index 0000000..f01bf77 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issvg3.testcase @@ -0,0 +1,8 @@ +XB_IsSvg - DOUBLE XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSvg(1.1); +1 # rows (not including the header row) +1 # columns +XB_IsSvg(1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issvg4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issvg4.testcase new file mode 100644 index 0000000..7802fe4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issvg4.testcase @@ -0,0 +1,8 @@ +XB_IsSvg - TEXT XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSvg('alpha'); +1 # rows (not including the header row) +1 # columns +XB_IsSvg('alpha') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issvg5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issvg5.testcase new file mode 100644 index 0000000..ae2b536 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issvg5.testcase @@ -0,0 +1,8 @@ +XB_IsSvg - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_IsSvg(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_IsSvg(zeroblob(100)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issvg6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issvg6.testcase new file mode 100644 index 0000000..2602105 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issvg6.testcase @@ -0,0 +1,8 @@ +XB_IsSvg - valid XmlBLOB (TRUE) +:memory: #use in-memory database +SELECT XB_IsSvg(x'0021AB07000000070000000000BA0000CA0000DA0000DB0000DC0000DDCB3C737667202F3EBC120A914BDD'); +1 # rows (not including the header row) +1 # columns +XB_IsSvg(x'0021AB07000000070000000000BA0000CA0000DA0000DB0000DC0000DDCB3C737667202F3EBC120A914BDD') +1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/issvg7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/issvg7.testcase new file mode 100644 index 0000000..710493a --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/issvg7.testcase @@ -0,0 +1,8 @@ +XB_IsSvg - valid XmlBLOB (FALSE) +:memory: #use in-memory database +SELECT XB_IsSvg(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD'); +1 # rows (not including the header row) +1 # columns +XB_IsSvg(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD') +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob1.testcase new file mode 100644 index 0000000..bdbe69f --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob1.testcase @@ -0,0 +1,8 @@ +XB_IsValid - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_IsValid(NULL); +1 # rows (not including the header row) +1 # columns +XB_IsValid(NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob2.testcase new file mode 100644 index 0000000..1756ec9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob2.testcase @@ -0,0 +1,8 @@ +XB_IsValid - INTEGER XmlBLOB +:memory: #use in-memory database +SELECT XB_IsValid(1); +1 # rows (not including the header row) +1 # columns +XB_IsValid(1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob3.testcase new file mode 100644 index 0000000..6a4a052 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob3.testcase @@ -0,0 +1,8 @@ +XB_IsValid - DOUBLE XmlBLOB +:memory: #use in-memory database +SELECT XB_IsValid(1.1); +1 # rows (not including the header row) +1 # columns +XB_IsValid(1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob4.testcase new file mode 100644 index 0000000..4d3640b --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob4.testcase @@ -0,0 +1,8 @@ +XB_IsValid - TEXT XmlBLOB +:memory: #use in-memory database +SELECT XB_IsValid('alpha'); +1 # rows (not including the header row) +1 # columns +XB_IsValid('alpha') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob5.testcase new file mode 100644 index 0000000..392f782 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob5.testcase @@ -0,0 +1,8 @@ +XB_IsValid - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_IsValid(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_IsValid(zeroblob(100)) +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob6.testcase new file mode 100644 index 0000000..7606fb1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/isvalidxmlblob6.testcase @@ -0,0 +1,8 @@ +XB_IsValid - valid XmlBLOB +:memory: #use in-memory database +SELECT XB_IsValid(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD'); +1 # rows (not including the header row) +1 # columns +XB_IsValid(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD') +1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic1.testcase new file mode 100644 index 0000000..cb09677 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic1.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - NULL URL +:memory: #use in-memory database +SELECT RegisterExternalGraphic(NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic(NULL, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic10.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic10.testcase new file mode 100644 index 0000000..e0e4299 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic10.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - NULL title +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', zeroblob(4), NULL, NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', zeroblob(4), NULL, NULL, NULL); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic11.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic11.testcase new file mode 100644 index 0000000..8eb3410 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic11.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - INTEGER title +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', zeroblob(4), 1, NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', zeroblob(4), 1, NULL, NULL); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic12.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic12.testcase new file mode 100644 index 0000000..c4338c6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic12.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - DOUBLE title +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', zeroblob(4), 1.1, NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', zeroblob(4), 1.1, NULL, NULL); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic13.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic13.testcase new file mode 100644 index 0000000..f2bd186 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic13.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - BLOB title +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', zeroblob(4), zeroblob(4), NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', zeroblob(4), zeroblob(4), NULL, NULL); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic14.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic14.testcase new file mode 100644 index 0000000..1fbb3ae --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic14.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - NULL abstract +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', NULL, NULL); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic15.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic15.testcase new file mode 100644 index 0000000..d1ccf5c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic15.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - INTEGER abstract +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', 1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', 1, NULL); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic16.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic16.testcase new file mode 100644 index 0000000..f3a1ff0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic16.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - DOUBLE abstract +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', 1.1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', 1.1, NULL); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic17.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic17.testcase new file mode 100644 index 0000000..e019fd1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic17.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - BLOB abstract +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', zeroblob(4), NULL); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', zeroblob(4), NULL); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic18.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic18.testcase new file mode 100644 index 0000000..3f7d3d2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic18.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - NULL filename +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', 'beta', NULL); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', 'beta', NULL); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic19.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic19.testcase new file mode 100644 index 0000000..8daa305 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic19.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - INTEGER filename +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', 'beta', 1); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', 'beta', 1); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic2.testcase new file mode 100644 index 0000000..beea693 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic2.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - INTEGER URL +:memory: #use in-memory database +SELECT RegisterExternalGraphic(1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic(1, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic20.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic20.testcase new file mode 100644 index 0000000..5282462 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic20.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - DOUBLE filename +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', 'beta', 1.1); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', 'beta', 1.1); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic21.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic21.testcase new file mode 100644 index 0000000..256bf15 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic21.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - BLOB filename +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', 'beta', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', 'beta', zeroblob(4)); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic22.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic22.testcase new file mode 100644 index 0000000..62b0f51 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic22.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - TEXT filename +NEW:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', 'beta', 'gamma'); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', zeroblob(4), 'alpha', 'beta', 'gamma'); +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic3.testcase new file mode 100644 index 0000000..6196dc1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic3.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - DOUBLE URL +:memory: #use in-memory database +SELECT RegisterExternalGraphic(1.1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic(1.1, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic4.testcase new file mode 100644 index 0000000..613e8c2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic4.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - BLOB URL +:memory: #use in-memory database +SELECT RegisterExternalGraphic(zeroblob(4), NULL); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic(zeroblob(4), NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic5.testcase new file mode 100644 index 0000000..eb7d544 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic5.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - NULL resource +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', NULL); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', NULL); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic6.testcase new file mode 100644 index 0000000..9a16137 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic6.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - INTEGER resource +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', 1); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', 1); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic7.testcase new file mode 100644 index 0000000..8c75fe5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic7.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - DOUBLE resource +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', 1.1); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', 1.1); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic8.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic8.testcase new file mode 100644 index 0000000..54fee42 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic8.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - TEXT resource +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', 'alpha'); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', 'alpha'); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic9.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic9.testcase new file mode 100644 index 0000000..b2eb144 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGraphic9.testcase @@ -0,0 +1,8 @@ +RegisterExternalGraphic - BLOB resource +:memory: #use in-memory database +SELECT RegisterExternalGraphic('resource.png', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterExternalGraphic('resource.png', zeroblob(4)); +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup1.testcase new file mode 100644 index 0000000..a79e282 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup1.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - NULL group_name +:memory: #use in-memory database +SELECT RegisterStyledGroup(NULL, NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup(NULL, NULL, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup14.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup14.testcase new file mode 100644 index 0000000..d72a998 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup14.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - NULL paint_order +:memory: #use in-memory database +SELECT RegisterStyledGroup('alpha', 'beta', NULL); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup('alpha', 'beta', NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup15.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup15.testcase new file mode 100644 index 0000000..1cbf0b8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup15.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - DOUBLE paint_order +:memory: #use in-memory database +SELECT RegisterStyledGroup('alpha', 'beta', 1.1); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup('alpha', 'beta', 1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup16.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup16.testcase new file mode 100644 index 0000000..b564427 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup16.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - TEXT paint_order +:memory: #use in-memory database +SELECT RegisterStyledGroup('alpha', 'beta', 'gamma'); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup('alpha', 'beta', 'gamma') +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup17.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup17.testcase new file mode 100644 index 0000000..62d6b4c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup17.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - BLOB paint_order +:memory: #use in-memory database +SELECT RegisterStyledGroup('alpha', 'beta', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup('alpha', 'beta', zeroblob(4)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup18.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup18.testcase new file mode 100644 index 0000000..f7cc963 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup18.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - INTEGER paint_order +:memory: #use in-memory database +SELECT RegisterStyledGroup('alpha', 'beta', 1); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup('alpha', 'beta', 1) +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup2.testcase new file mode 100644 index 0000000..fe0eec9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup2.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - INTEGER group_name +:memory: #use in-memory database +SELECT RegisterStyledGroup(1, NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup(1, NULL, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup25.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup25.testcase new file mode 100644 index 0000000..1090cfe --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup25.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - vector NULL paint_order +:memory: #use in-memory database +SELECT RegisterStyledGroup('alpha', 'beta', 'gamma', NULL); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup('alpha', 'beta', 'gamma', NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup26.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup26.testcase new file mode 100644 index 0000000..96655a2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup26.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - vector DOUBLE paint_order +:memory: #use in-memory database +SELECT RegisterStyledGroup('alpha', 'beta', 'gamma', 1.1); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup('alpha', 'beta', 'gamma', 1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup27.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup27.testcase new file mode 100644 index 0000000..fab3afe --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup27.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - vector TEXT paint_order +:memory: #use in-memory database +SELECT RegisterStyledGroup('alpha', 'beta', 'gamma', 'gamma'); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup('alpha', 'beta', 'gamma', 'gamma') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup28.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup28.testcase new file mode 100644 index 0000000..e4e5672 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup28.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - vector BLOB paint_order +:memory: #use in-memory database +SELECT RegisterStyledGroup('alpha', 'beta', 'gamma', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup('alpha', 'beta', 'gamma', zeroblob(4)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup29.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup29.testcase new file mode 100644 index 0000000..12c60c7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup29.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - vector INTEGER paint_order +:memory: #use in-memory database +SELECT RegisterStyledGroup('alpha', 'beta', 'gamma', 1); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup('alpha', 'beta', 'gamma', 1) +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup3.testcase new file mode 100644 index 0000000..ee18545 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup3.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - DOUBLE group_name +:memory: #use in-memory database +SELECT RegisterStyledGroup(1.1, NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup(1.1, NULL, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup4.testcase new file mode 100644 index 0000000..5d5bf08 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup4.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - BLOB group_name +:memory: #use in-memory database +SELECT RegisterStyledGroup(zeroblob(4), NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup(zeroblob(4), NULL, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup5.testcase new file mode 100644 index 0000000..9598df8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup5.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - NULL coverage_name +:memory: #use in-memory database +SELECT RegisterStyledGroup('alpha', NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup('alpha', NULL, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup6.testcase new file mode 100644 index 0000000..029d51f --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup6.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - INTEGER coverage_name +:memory: #use in-memory database +SELECT RegisterStyledGroup('alpha', 1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup('alpha', 1, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup7.testcase new file mode 100644 index 0000000..1f73700 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup7.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - DOUBLE coverage_name +:memory: #use in-memory database +SELECT RegisterStyledGroup('alpha', 1.1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup('alpha', 1.1, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup8.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup8.testcase new file mode 100644 index 0000000..29618e1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroup8.testcase @@ -0,0 +1,8 @@ +RegisterStyledGroup - BLOB coverage_name +:memory: #use in-memory database +SELECT RegisterStyledGroup('alpha', zeroblob(4), NULL); +1 # rows (not including the header row) +1 # columns +RegisterStyledGroup('alpha', zeroblob(4), NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle1.testcase new file mode 100644 index 0000000..ecc9836 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle1.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - NULL group +:memory: #use in-memory database +SELECT RegisterGroupStyle(NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle(NULL, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle10.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle10.testcase new file mode 100644 index 0000000..aac9824 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle10.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - DOUBLE style_id +:memory: #use in-memory database +SELECT RegisterGroupStyle('alpha', 1.1, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle('alpha', 1.1, zeroblob(4)); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle11.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle11.testcase new file mode 100644 index 0000000..14f66ae --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle11.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - TEXT style_id +:memory: #use in-memory database +SELECT RegisterGroupStyle('alpha', 'beta', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle('alpha', 'beta', zeroblob(4)); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle12.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle12.testcase new file mode 100644 index 0000000..74dd16e --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle12.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - BLOB style_id +:memory: #use in-memory database +SELECT RegisterGroupStyle('alpha', zeroblob(4), zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle('alpha', zeroblob(4), zeroblob(4)); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle13.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle13.testcase new file mode 100644 index 0000000..8dc0358 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle13.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - INTEGER style_id +:memory: #use in-memory database +SELECT RegisterGroupStyle('alpha', 1, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle('alpha', 1, zeroblob(4)); +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle14.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle14.testcase new file mode 100644 index 0000000..8bb8616 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle14.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - NULL style +:memory: #use in-memory database +SELECT RegisterGroupStyle('alpha', 1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle('alpha', 1, NULL); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle15.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle15.testcase new file mode 100644 index 0000000..eda583e --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle15.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - INTEGER style +:memory: #use in-memory database +SELECT RegisterGroupStyle('alpha', 1, 1); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle('alpha', 1, 1); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle16.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle16.testcase new file mode 100644 index 0000000..f995d3a --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle16.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - DOUBLE style +:memory: #use in-memory database +SELECT RegisterGroupStyle('alpha', 1, 1.1); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle('alpha', 1, 1.1); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle17.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle17.testcase new file mode 100644 index 0000000..0b8ee4c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle17.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - TEXT style +:memory: #use in-memory database +SELECT RegisterGroupStyle('alpha', 1, 'beta'); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle('alpha', 1, 'beta'); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle2.testcase new file mode 100644 index 0000000..49d4f0d --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle2.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - INTEGER group +:memory: #use in-memory database +SELECT RegisterGroupStyle(1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle(1, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle3.testcase new file mode 100644 index 0000000..a1a4f2e --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle3.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - DOUBLE group +:memory: #use in-memory database +SELECT RegisterGroupStyle(1.1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle(1.1, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle4.testcase new file mode 100644 index 0000000..8b8d8e3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle4.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - BLOB group +:memory: #use in-memory database +SELECT RegisterGroupStyle(zeroblob(4), NULL); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle(zeroblob(4), NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle5.testcase new file mode 100644 index 0000000..6824435 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle5.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - NULL style +:memory: #use in-memory database +SELECT RegisterGroupStyle('alpha', NULL); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle('alpha', NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle6.testcase new file mode 100644 index 0000000..a1cb8e2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle6.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - INTEGER style +:memory: #use in-memory database +SELECT RegisterGroupStyle('alpha', 1); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle('alpha', 1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle7.testcase new file mode 100644 index 0000000..d89d2d3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle7.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - DOUBLE style +:memory: #use in-memory database +SELECT RegisterGroupStyle('alpha', 1.1); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle('alpha', 1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle8.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle8.testcase new file mode 100644 index 0000000..8c9b034 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle8.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - TEXT style +:memory: #use in-memory database +SELECT RegisterGroupStyle('alpha', 'beta'); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle('alpha', 'beta') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle9.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle9.testcase new file mode 100644 index 0000000..659021f --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerGroupStyle9.testcase @@ -0,0 +1,8 @@ +RegisterGroupStyle - NULL style_id +:memory: #use in-memory database +SELECT RegisterGroupStyle('alpha', NULL, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterGroupStyle('alpha', NULL, zeroblob(4)); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta1.testcase new file mode 100644 index 0000000..51ca8bd --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta1.testcase @@ -0,0 +1,8 @@ +RegisterIsoMetadata - NULL scope +:memory: #use in-memory database +SELECT RegisterIsoMetadata(NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterIsoMetadata(NULL, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta10.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta10.testcase new file mode 100644 index 0000000..d481c0c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta10.testcase @@ -0,0 +1,8 @@ +RegisterIsoMetadata - NULL id +:memory: #use in-memory database +SELECT RegisterIsoMetadata('series', zeroblob(4), NULL); +1 # rows (not including the header row) +1 # columns +RegisterIsoMetadata('series', zeroblob(4), NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta11.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta11.testcase new file mode 100644 index 0000000..c873264 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta11.testcase @@ -0,0 +1,8 @@ +RegisterIsoMetadata - DOUBLE id +:memory: #use in-memory database +SELECT RegisterIsoMetadata('series', zeroblob(4), 1.1); +1 # rows (not including the header row) +1 # columns +RegisterIsoMetadata('series', zeroblob(4), 1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta12.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta12.testcase new file mode 100644 index 0000000..4d07488 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta12.testcase @@ -0,0 +1,8 @@ +RegisterIsoMetadata - BLOB id +:memory: #use in-memory database +SELECT RegisterIsoMetadata('series', zeroblob(4), zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterIsoMetadata('series', zeroblob(4), zeroblob(4)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta13.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta13.testcase new file mode 100644 index 0000000..d22424b --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta13.testcase @@ -0,0 +1,8 @@ +RegisterIsoMetadata - INTEGER id +:memory: #use in-memory database +SELECT RegisterIsoMetadata('series', zeroblob(4), 1); +1 # rows (not including the header row) +1 # columns +RegisterIsoMetadata('series', zeroblob(4), 1) +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta14.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta14.testcase new file mode 100644 index 0000000..e56885a --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta14.testcase @@ -0,0 +1,8 @@ +RegisterIsoMetadata - TEXT fileIdentifier +:memory: #use in-memory database +SELECT RegisterIsoMetadata('series', zeroblob(4), 'alpha'); +1 # rows (not including the header row) +1 # columns +RegisterIsoMetadata('series', zeroblob(4), 'alpha') +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta2.testcase new file mode 100644 index 0000000..bf39c51 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta2.testcase @@ -0,0 +1,8 @@ +RegisterIsoMetadata - INTEGER scope +:memory: #use in-memory database +SELECT RegisterIsoMetadata(1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterIsoMetadata(1, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta3.testcase new file mode 100644 index 0000000..de14906 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta3.testcase @@ -0,0 +1,8 @@ +RegisterIsoMetadata - DOUBLE scope +:memory: #use in-memory database +SELECT RegisterIsoMetadata(1.1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterIsoMetadata(1.1, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta4.testcase new file mode 100644 index 0000000..0d3014a --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta4.testcase @@ -0,0 +1,8 @@ +RegisterIsoMetadata - BLOB scope +:memory: #use in-memory database +SELECT RegisterIsoMetadata(zeroblob(4), NULL); +1 # rows (not including the header row) +1 # columns +RegisterIsoMetadata(zeroblob(4), NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta5.testcase new file mode 100644 index 0000000..376c85e --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta5.testcase @@ -0,0 +1,8 @@ +RegisterIsoMetadata - NULL metadata +:memory: #use in-memory database +SELECT RegisterIsoMetadata('series', NULL); +1 # rows (not including the header row) +1 # columns +RegisterIsoMetadata('series', NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta6.testcase new file mode 100644 index 0000000..c8fd89c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta6.testcase @@ -0,0 +1,8 @@ +RegisterIsoMetadata - INTEGER metadata +:memory: #use in-memory database +SELECT RegisterIsoMetadata('series', 1); +1 # rows (not including the header row) +1 # columns +RegisterIsoMetadata('series', 1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta7.testcase new file mode 100644 index 0000000..31fadf6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta7.testcase @@ -0,0 +1,8 @@ +RegisterIsoMetadata - DOUBLE metadata +:memory: #use in-memory database +SELECT RegisterIsoMetadata('series', 1.1); +1 # rows (not including the header row) +1 # columns +RegisterIsoMetadata('series', 1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta8.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta8.testcase new file mode 100644 index 0000000..22a0175 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta8.testcase @@ -0,0 +1,8 @@ +RegisterIsoMetadata - TEXT metadata +:memory: #use in-memory database +SELECT RegisterIsoMetadata('series', 'alpha'); +1 # rows (not including the header row) +1 # columns +RegisterIsoMetadata('series', 'alpha') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta9.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta9.testcase new file mode 100644 index 0000000..7be2ca3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerIsoMeta9.testcase @@ -0,0 +1,8 @@ +RegisterIsoMetadata - BLOB metadata +:memory: #use in-memory database +SELECT RegisterIsoMetadata('series', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterIsoMetadata('series', zeroblob(4)) +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster1.testcase new file mode 100644 index 0000000..aae6d29 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster1.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - NULL coverage +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer(NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer(NULL, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster10.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster10.testcase new file mode 100644 index 0000000..1eef9c7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster10.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - DOUBLE style_id +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer('alpha', 1.1, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer('alpha', 1.1, zeroblob(4)); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster11.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster11.testcase new file mode 100644 index 0000000..dbf8a07 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster11.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - TEXT style_id +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer('alpha', 'beta', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer('alpha', 'beta', zeroblob(4)); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster12.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster12.testcase new file mode 100644 index 0000000..d3dc171 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster12.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - BLOB style_id +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer('alpha', zeroblob(4), zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer('alpha', zeroblob(4), zeroblob(4)); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster13.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster13.testcase new file mode 100644 index 0000000..6202f7d --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster13.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - INTEGER style_id +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer('alpha', 1, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer('alpha', 1, zeroblob(4)); +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster14.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster14.testcase new file mode 100644 index 0000000..b1fded5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster14.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - NULL style +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer('alpha', 1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer('alpha', 1, NULL); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster15.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster15.testcase new file mode 100644 index 0000000..9e33ed1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster15.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - INTEGER style +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer('alpha', 1, 1); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer('alpha', 1, 1); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster16.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster16.testcase new file mode 100644 index 0000000..f063bc9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster16.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - DOUBLE style +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer('alpha', 1, 1.1); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer('alpha', 1, 1.1); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster17.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster17.testcase new file mode 100644 index 0000000..c4ed6f8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster17.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - TEXT style +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer('alpha', 1, 'beta'); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer('alpha', 1, 'beta'); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster2.testcase new file mode 100644 index 0000000..c18874a --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster2.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - INTEGER coverage +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer(1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer(1, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster3.testcase new file mode 100644 index 0000000..56debc4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster3.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - DOUBLE coverage +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer(1.1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer(1.1, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster4.testcase new file mode 100644 index 0000000..a019219 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster4.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - BLOB coverage +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer(zeroblob(4), NULL); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer(zeroblob(4), NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster5.testcase new file mode 100644 index 0000000..64139f9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster5.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - NULL style +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer('alpha', NULL); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer('alpha', NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster6.testcase new file mode 100644 index 0000000..9874761 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster6.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - INTEGER style +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer('alpha', 1); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer('alpha', 1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster7.testcase new file mode 100644 index 0000000..b713af7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster7.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - DOUBLE style +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer('alpha', 1.1); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer('alpha', 1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster8.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster8.testcase new file mode 100644 index 0000000..27b2673 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster8.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - TEXT style +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer('alpha', 'beta'); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer('alpha', 'beta') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster9.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster9.testcase new file mode 100644 index 0000000..c3fb1c8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerRaster9.testcase @@ -0,0 +1,8 @@ +RegisterRasterStyledLayer - NULL style_id +:memory: #use in-memory database +SELECT RegisterRasterStyledLayer('alpha', NULL, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterRasterStyledLayer('alpha', NULL, zeroblob(4)); +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector1.testcase new file mode 100644 index 0000000..6d42c1f --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector1.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - NULL f_table_name +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer(NULL, NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer(NULL, NULL, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector10.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector10.testcase new file mode 100644 index 0000000..9f791bb --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector10.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - INTEGER style +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 'beta', 1); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 'beta', 1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector11.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector11.testcase new file mode 100644 index 0000000..ecc733a --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector11.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - DOUBLE style +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 'beta', 1.1); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 'beta', 1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector12.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector12.testcase new file mode 100644 index 0000000..808e350 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector12.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - TEXT style +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 'beta', 'gamma'); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 'beta', 'gamma') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector13.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector13.testcase new file mode 100644 index 0000000..7600f7c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector13.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - BLOB style +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 'beta', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 'beta', zeroblob(4)) +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector14.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector14.testcase new file mode 100644 index 0000000..51b9191 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector14.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - NULL style_id +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 'beta', NULL, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 'beta', NULL, zeroblob(4)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector15.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector15.testcase new file mode 100644 index 0000000..bef65bd --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector15.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - DOUBLE style_id +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 'beta', 1.1, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 'beta', 1.1, zeroblob(4)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector16.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector16.testcase new file mode 100644 index 0000000..5875987 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector16.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - TEXT style_id +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 'beta', 'gamma', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 'beta', 'gamma', zeroblob(4)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector17.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector17.testcase new file mode 100644 index 0000000..c4d3cc6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector17.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - BLOB style_id +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 'beta', zeroblob(4), zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 'beta', zeroblob(4), zeroblob(4)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector18.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector18.testcase new file mode 100644 index 0000000..03d0922 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector18.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - INTEGER style_id +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 'beta', 1, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 'beta', 1, zeroblob(4)) +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector19.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector19.testcase new file mode 100644 index 0000000..41c36b3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector19.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - NULL style +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 'beta', 1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 'beta', 1, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector2.testcase new file mode 100644 index 0000000..36d302f --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector2.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - INTEGER f_table_name +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer(1, NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer(1, NULL, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector20.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector20.testcase new file mode 100644 index 0000000..e1bfa03 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector20.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - INTEGER style +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 'beta', 1, 1); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 'beta', 1, 1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector21.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector21.testcase new file mode 100644 index 0000000..123c4c0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector21.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - DOUBLE style +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 'beta', 1, 1.1); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 'beta', 1, 1.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector22.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector22.testcase new file mode 100644 index 0000000..d594a80 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector22.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - TEXT style +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 'beta', 1, 'gamma'); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 'beta', 1, 'gamma') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector3.testcase new file mode 100644 index 0000000..b2e5eea --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector3.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - DOUBLE f_table_name +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer(1.1, NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer(1.1, NULL, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector4.testcase new file mode 100644 index 0000000..374f21a --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector4.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - BLOB f_table_name +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer(zeroblob(4), NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer(zeroblob(4), NULL, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector5.testcase new file mode 100644 index 0000000..d3bda4e --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector5.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - NULL f_geometry_column +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', NULL, NULL); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', NULL, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector6.testcase new file mode 100644 index 0000000..72dd2bf --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector6.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - INTEGER f_geometry_column +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 1, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector7.testcase new file mode 100644 index 0000000..f297485 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector7.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - DOUBLE f_geometry_column +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 1.1, NULL); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 1.1, NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector8.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector8.testcase new file mode 100644 index 0000000..e311962 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector8.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - BLOB f_geometry_column +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', zeroblob(4), NULL); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', zeroblob(4), NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/registerVector9.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector9.testcase new file mode 100644 index 0000000..d0c374b --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/registerVector9.testcase @@ -0,0 +1,8 @@ +RegisterVectorStyledLayer - NULL style +:memory: #use in-memory database +SELECT RegisterVectorStyledLayer('alpha', 'beta', NULL); +1 # rows (not including the header row) +1 # columns +RegisterVectorStyledLayer('alpha', 'beta', NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos1.testcase new file mode 100644 index 0000000..7cd1b86 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos1.testcase @@ -0,0 +1,8 @@ +SetStyledGroupInfos - NULL group_name +:memory: #use in-memory database +SELECT SetStyledGroupInfos(NULL, 'title', 'abstract'); +1 # rows (not including the header row) +1 # columns +SetStyledGroupInfos(NULL, 'title', 'abstract') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos10.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos10.testcase new file mode 100644 index 0000000..9cd1349 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos10.testcase @@ -0,0 +1,8 @@ +SetStyledGroupInfos - INTEGER abstract +:memory: #use in-memory database +SELECT SetStyledGroupInfos('group', 'title', 1); +1 # rows (not including the header row) +1 # columns +SetStyledGroupInfos('group', 'title', 1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos11.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos11.testcase new file mode 100644 index 0000000..e3a67b0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos11.testcase @@ -0,0 +1,8 @@ +SetStyledGroupInfos - DOUBLE abstract +:memory: #use in-memory database +SELECT SetStyledGroupInfos('group', 'title', 0.1); +1 # rows (not including the header row) +1 # columns +SetStyledGroupInfos('group', 'title', 0.1) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos12.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos12.testcase new file mode 100644 index 0000000..199bcfe --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos12.testcase @@ -0,0 +1,8 @@ +SetStyledGroupInfos - BLOB abstract +:memory: #use in-memory database +SELECT SetStyledGroupInfos('group', 'title', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +SetStyledGroupInfos('group', 'title', zeroblob(4)) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos13.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos13.testcase new file mode 100644 index 0000000..d8b230e --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos13.testcase @@ -0,0 +1,8 @@ +SetStyledGroupInfos - valid +:memory: #use in-memory database +SELECT SetStyledGroupInfos('group', 'title', 'abstract'); +1 # rows (not including the header row) +1 # columns +SetStyledGroupInfos('group', 'title', 'abstract') +0 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos2.testcase new file mode 100644 index 0000000..c19b792 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos2.testcase @@ -0,0 +1,8 @@ +SetStyledGroupInfos - INTEGER group_name +:memory: #use in-memory database +SELECT SetStyledGroupInfos(1, 'title', 'abstract'); +1 # rows (not including the header row) +1 # columns +SetStyledGroupInfos(1, 'title', 'abstract') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos3.testcase new file mode 100644 index 0000000..4da81e8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos3.testcase @@ -0,0 +1,8 @@ +SetStyledGroupInfos - DOUBLE group_name +:memory: #use in-memory database +SELECT SetStyledGroupInfos(1.5, 'title', 'abstract'); +1 # rows (not including the header row) +1 # columns +SetStyledGroupInfos(1.5, 'title', 'abstract') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos4.testcase new file mode 100644 index 0000000..202b76c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos4.testcase @@ -0,0 +1,8 @@ +SetStyledGroupInfos - BLOB group_name +:memory: #use in-memory database +SELECT SetStyledGroupInfos(zeroblob(4), 'title', 'abstract'); +1 # rows (not including the header row) +1 # columns +SetStyledGroupInfos(zeroblob(4), 'title', 'abstract') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos5.testcase new file mode 100644 index 0000000..896c863 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos5.testcase @@ -0,0 +1,8 @@ +SetStyledGroupInfos - NULL title +:memory: #use in-memory database +SELECT SetStyledGroupInfos('group', NULL, 'abstract'); +1 # rows (not including the header row) +1 # columns +SetStyledGroupInfos('group', NULL, 'abstract') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos6.testcase new file mode 100644 index 0000000..46cfe88 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos6.testcase @@ -0,0 +1,8 @@ +SetStyledGroupInfos - INTEGER title +:memory: #use in-memory database +SELECT SetStyledGroupInfos('group', 1, 'abstract'); +1 # rows (not including the header row) +1 # columns +SetStyledGroupInfos('group', 1, 'abstract') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos7.testcase new file mode 100644 index 0000000..e5921c3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos7.testcase @@ -0,0 +1,8 @@ +SetStyledGroupInfos - DOUBLE title +:memory: #use in-memory database +SELECT SetStyledGroupInfos('group', 1.4, 'abstract'); +1 # rows (not including the header row) +1 # columns +SetStyledGroupInfos('group', 1.4, 'abstract') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos8.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos8.testcase new file mode 100644 index 0000000..ec82e83 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos8.testcase @@ -0,0 +1,8 @@ +SetStyledGroupInfos - BLOB title +:memory: #use in-memory database +SELECT SetStyledGroupInfos('group', zeroblob(4), 'abstract'); +1 # rows (not including the header row) +1 # columns +SetStyledGroupInfos('group', zeroblob(4), 'abstract') +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos9.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos9.testcase new file mode 100644 index 0000000..bd6bf5b --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setGroupInfos9.testcase @@ -0,0 +1,8 @@ +SetStyledGroupInfos - NULL abstract +:memory: #use in-memory database +SELECT SetStyledGroupInfos('group', 'title', NULL); +1 # rows (not including the header row) +1 # columns +SetStyledGroupInfos('group', 'title', NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setfileid1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setfileid1.testcase new file mode 100644 index 0000000..b9299d0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setfileid1.testcase @@ -0,0 +1,8 @@ +XB_SetFileId - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_SetFileId(NULL, 'alpha'); +1 # rows (not including the header row) +1 # columns +XB_SetFileId(NULL, 'alpha') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setfileid2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setfileid2.testcase new file mode 100644 index 0000000..5d5501f --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setfileid2.testcase @@ -0,0 +1,8 @@ +XB_SetFileId - not ISO Metadata XmlBLOB +:memory: #use in-memory database +SELECT XB_SetFileId(XB_Create(CastToBlob('a')), 'alpha'); +1 # rows (not including the header row) +1 # columns +XB_SetFileId(XB_Create(CastToBlob('a')), 'alpha') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setfileid3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setfileid3.testcase new file mode 100644 index 0000000..fa4b91c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setfileid3.testcase @@ -0,0 +1,8 @@ +XB_SetFileId - ISO Metadata - no fileIdentfier +:memory: #use in-memory database +SELECT XB_SetFileId(XB_Create(CastToBlob('a')), 'alpha'); +1 # rows (not including the header row) +1 # columns +XB_SetFileId(XB_Create(CastToBlob('a')), 'alpha') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setfileid4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setfileid4.testcase new file mode 100644 index 0000000..a3531fa --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setfileid4.testcase @@ -0,0 +1,8 @@ +XB_SetFileId - ISO Metadata - INTEGER fileId +:memory: #use in-memory database +SELECT XB_SetFileId(XB_Create(CastToBlob('a')), 1234); +1 # rows (not including the header row) +1 # columns +XB_SetFileId(XB_Create(CastToBlob('a')), 1234) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setfileid5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setfileid5.testcase new file mode 100644 index 0000000..8fe3392 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setfileid5.testcase @@ -0,0 +1,8 @@ +XB_SetFileId - valid +:memory: #use in-memory database +SELECT XB_GetFileId(XB_SetFileId(XB_Create(CastToBlob('a')), 'newfileid')); +1 # rows (not including the header row) +1 # columns +XB_GetFileId(XB_SetFileId(XB_Create(CastToBlob('a')), 'newfileid')) +newfileid + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setparentid1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setparentid1.testcase new file mode 100644 index 0000000..a8c8415 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setparentid1.testcase @@ -0,0 +1,8 @@ +XB_SetParentId - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_SetParentId(NULL, 'alpha'); +1 # rows (not including the header row) +1 # columns +XB_SetParentId(NULL, 'alpha') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setparentid2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setparentid2.testcase new file mode 100644 index 0000000..1df82b4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setparentid2.testcase @@ -0,0 +1,8 @@ +XB_SetParentId - not ISO Metadata XmlBLOB +:memory: #use in-memory database +SELECT XB_SetParentId(XB_Create(CastToBlob('a')), 'alpha'); +1 # rows (not including the header row) +1 # columns +XB_SetParentId(XB_Create(CastToBlob('a')), 'alpha') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setparentid3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setparentid3.testcase new file mode 100644 index 0000000..938fb3a --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setparentid3.testcase @@ -0,0 +1,8 @@ +XB_SetParentId - ISO Metadata - no parentIdentfier +:memory: #use in-memory database +SELECT XB_SetParentId(XB_Create(CastToBlob('a')), 'alpha'); +1 # rows (not including the header row) +1 # columns +XB_SetParentId(XB_Create(CastToBlob('a')), 'alpha') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setparentid4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setparentid4.testcase new file mode 100644 index 0000000..f5f03db --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setparentid4.testcase @@ -0,0 +1,8 @@ +XB_SetParentId - ISO Metadata - INTEGER parentId +:memory: #use in-memory database +SELECT XB_SetParentId(XB_Create(CastToBlob('a')), 1234); +1 # rows (not including the header row) +1 # columns +XB_SetParentId(XB_Create(CastToBlob('a')), 1234) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/setparentid5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/setparentid5.testcase new file mode 100644 index 0000000..9cb3d31 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/setparentid5.testcase @@ -0,0 +1,8 @@ +XB_SetParentId - valid +:memory: #use in-memory database +SELECT XB_GetParentId(XB_SetParentId(XB_Create(CastToBlob('a')), 'newparentid')); +1 # rows (not including the header row) +1 # columns +XB_GetParentId(XB_SetParentId(XB_Create(CastToBlob('a')), 'newparentid')) +newparentid + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract1.testcase new file mode 100644 index 0000000..fcf4ace --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract1.testcase @@ -0,0 +1,8 @@ +XB_GetAbstract - NULL XmlDocument +:memory: #use in-memory database +SELECT XB_GetAbstract(NULL); +1 # rows (not including the header row) +1 # columns +XB_GetAbstract(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract2.testcase new file mode 100644 index 0000000..4665b2a --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract2.testcase @@ -0,0 +1,8 @@ +XB_GetAbstract - INTEGER XmlDocument +:memory: #use in-memory database +SELECT XB_GetAbstract(1); +1 # rows (not including the header row) +1 # columns +XB_GetAbstract(1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract3.testcase new file mode 100644 index 0000000..c394d6a --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract3.testcase @@ -0,0 +1,8 @@ +XB_GetAbstract - DOUBLE XmlDocument +:memory: #use in-memory database +SELECT XB_GetAbstract(1.1); +1 # rows (not including the header row) +1 # columns +XB_GetAbstract(1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract4.testcase new file mode 100644 index 0000000..6b9a4c0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract4.testcase @@ -0,0 +1,8 @@ +XB_GetAbstract - BLOB XmlDocument +:memory: #use in-memory database +SELECT XB_GetAbstract(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetAbstract(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract5.testcase new file mode 100644 index 0000000..a8cc41c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract5.testcase @@ -0,0 +1,8 @@ +XB_GetAbstract - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_GetAbstract(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetAbstract(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract6.testcase new file mode 100644 index 0000000..7a818be --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetabstract6.testcase @@ -0,0 +1,8 @@ +XB_GetAbstract - valid XmlBLOB, no Abstract +:memory: #use in-memory database +SELECT XB_GetAbstract(x'0003AB120000001A0000000000BACB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC0AA70332DD'); +1 # rows (not including the header row) +1 # columns +XB_GetAbstract(x'0003AB120000001A0000000000BACB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC0AA70332DD') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize1.testcase new file mode 100644 index 0000000..eac4623 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize1.testcase @@ -0,0 +1,8 @@ +XB_GetDocumentSize - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_GetDocumentSize(NULL); +1 # rows (not including the header row) +1 # columns +XB_GetDocumentSize(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize2.testcase new file mode 100644 index 0000000..0a63bad --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize2.testcase @@ -0,0 +1,8 @@ +XB_GetDocumentSize - INTEGER XmlBLOB +:memory: #use in-memory database +SELECT XB_GetDocumentSize(1); +1 # rows (not including the header row) +1 # columns +XB_GetDocumentSize(1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize3.testcase new file mode 100644 index 0000000..444718a --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize3.testcase @@ -0,0 +1,8 @@ +XB_GetDocumentSize - DOUBLE XmlBLOB +:memory: #use in-memory database +SELECT XB_GetDocumentSize(1.1); +1 # rows (not including the header row) +1 # columns +XB_GetDocumentSize(1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize4.testcase new file mode 100644 index 0000000..8a49a02 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize4.testcase @@ -0,0 +1,8 @@ +XB_GetDocumentSize - TEXT XmlBLOB +:memory: #use in-memory database +SELECT XB_GetDocumentSize('alpha'); +1 # rows (not including the header row) +1 # columns +XB_GetDocumentSize('alpha') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize5.testcase new file mode 100644 index 0000000..009e1b6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize5.testcase @@ -0,0 +1,8 @@ +XB_GetDocumentSize - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_GetDocumentSize(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetDocumentSize(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize6.testcase new file mode 100644 index 0000000..7a260a4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetdocumentsize6.testcase @@ -0,0 +1,7 @@ +XB_GetDocumentSize - valid XmlBLOB +:memory: #use in-memory database +SELECT XB_GetDocumentSize(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD'); +1 # rows (not including the header row) +1 # columns +XB_GetDocumentSize(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD') +18 diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding1.testcase new file mode 100644 index 0000000..ef34f52 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding1.testcase @@ -0,0 +1,8 @@ +XB_GetEncoding - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_GetEncoding(NULL); +1 # rows (not including the header row) +1 # columns +XB_GetEncoding(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding2.testcase new file mode 100644 index 0000000..20667f1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding2.testcase @@ -0,0 +1,8 @@ +XB_GetEncoding - INTEGER XmlBLOB +:memory: #use in-memory database +SELECT XB_GetEncoding(1); +1 # rows (not including the header row) +1 # columns +XB_GetEncoding(1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding3.testcase new file mode 100644 index 0000000..389f5f5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding3.testcase @@ -0,0 +1,8 @@ +XB_GetEncoding - DOUBLE XmlBLOB +:memory: #use in-memory database +SELECT XB_GetEncoding(1.1); +1 # rows (not including the header row) +1 # columns +XB_GetEncoding(1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding4.testcase new file mode 100644 index 0000000..021511b --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding4.testcase @@ -0,0 +1,8 @@ +XB_GetEncoding - TEXT XmlBLOB +:memory: #use in-memory database +SELECT XB_GetEncoding('alpha'); +1 # rows (not including the header row) +1 # columns +XB_GetEncoding('alpha') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding5.testcase new file mode 100644 index 0000000..09d8272 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding5.testcase @@ -0,0 +1,8 @@ +XB_GetEncoding - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_GetEncoding(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetEncoding(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding6.testcase new file mode 100644 index 0000000..656a485 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding6.testcase @@ -0,0 +1,8 @@ +XB_GetEncoding - valid XmlBLOB, no encoding +:memory: #use in-memory database +SELECT XB_GetEncoding(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD'); +1 # rows (not including the header row) +1 # columns +XB_GetEncoding(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding7.testcase new file mode 100644 index 0000000..d126748 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetencoding7.testcase @@ -0,0 +1,8 @@ +XB_GetEncoding - valid XmlBLOB, UTF-8 encoding +:memory: #use in-memory database +SELECT XB_GetEncoding(x'0003AB38000000400000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB3B1AFC8CD51284B2D2ACECCCFB35532D433505248CD4BCE4FC9CC4BB7550A0D71D3B550B2B7B349B4B349B22B49AD28B1D14FB2B3D14FB40300FCAE114DBCD7E8866DDD'); +1 # rows (not including the header row) +1 # columns +XB_GetEncoding(x'0003AB38000000400000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB3B1AFC8CD51284B2D2ACECCCFB35532D433505248CD4BCE4FC9CC4BB7550A0D71D3B550B2B7B349B4B349B22B49AD28B1D14FB2B3D14FB40300FCAE114DBCD7E8866DDD') +UTF-8 + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid1.testcase new file mode 100644 index 0000000..b571636 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid1.testcase @@ -0,0 +1,8 @@ +XB_GetFileId - NULL XmlDocument +:memory: #use in-memory database +SELECT XB_GetFileId(NULL); +1 # rows (not including the header row) +1 # columns +XB_GetFileId(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid2.testcase new file mode 100644 index 0000000..d215420 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid2.testcase @@ -0,0 +1,8 @@ +XB_GetFileId - INTEGER XmlDocument +:memory: #use in-memory database +SELECT XB_GetFileId(1); +1 # rows (not including the header row) +1 # columns +XB_GetFileId(1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid3.testcase new file mode 100644 index 0000000..f969d75 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid3.testcase @@ -0,0 +1,8 @@ +XB_GetFileId - DOUBLE XmlDocument +:memory: #use in-memory database +SELECT XB_GetFileId(1.1); +1 # rows (not including the header row) +1 # columns +XB_GetFileId(1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid4.testcase new file mode 100644 index 0000000..f2ee095 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid4.testcase @@ -0,0 +1,8 @@ +XB_GetFileId - BLOB XmlDocument +:memory: #use in-memory database +SELECT XB_GetFileId(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetFileId(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid5.testcase new file mode 100644 index 0000000..eb4701c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid5.testcase @@ -0,0 +1,8 @@ +XB_GetFileId - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_GetFileId(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetFileId(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid6.testcase new file mode 100644 index 0000000..b82d600 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetfileid6.testcase @@ -0,0 +1,8 @@ +XB_GetFileId - valid XmlBLOB, no FileIdentifier +:memory: #use in-memory database +SELECT XB_GetFileId(x'0003AB120000001A0000000000BACB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC0AA70332DD'); +1 # rows (not including the header row) +1 # columns +XB_GetFileId(x'0003AB120000001A0000000000BACB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC0AA70332DD') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry1.testcase new file mode 100644 index 0000000..bd4e69f --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry1.testcase @@ -0,0 +1,8 @@ +XB_GetGeometry - NULL XmlDocument +:memory: #use in-memory database +SELECT XB_GetGeometry(NULL); +1 # rows (not including the header row) +1 # columns +XB_GetGeometry(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry2.testcase new file mode 100644 index 0000000..d178fd8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry2.testcase @@ -0,0 +1,8 @@ +XB_GetGeometry - INTEGER XmlDocument +:memory: #use in-memory database +SELECT XB_GetGeometry(1); +1 # rows (not including the header row) +1 # columns +XB_GetGeometry(1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry3.testcase new file mode 100644 index 0000000..86c0b86 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry3.testcase @@ -0,0 +1,8 @@ +XB_GetGeometry - DOUBLE XmlDocument +:memory: #use in-memory database +SELECT XB_GetGeometry(1.1); +1 # rows (not including the header row) +1 # columns +XB_GetGeometry(1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry4.testcase new file mode 100644 index 0000000..e956c9f --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry4.testcase @@ -0,0 +1,8 @@ +XB_GetGeometry - BLOB XmlDocument +:memory: #use in-memory database +SELECT XB_GetGeometry(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetGeometry(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry5.testcase new file mode 100644 index 0000000..43ab5bc --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry5.testcase @@ -0,0 +1,8 @@ +XB_GetGeometry - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_GetGeometry(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetGeometry(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry6.testcase new file mode 100644 index 0000000..37e2ac0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetgeometry6.testcase @@ -0,0 +1,8 @@ +XB_GetGeometry - valid XmlBLOB, no Abstract +:memory: #use in-memory database +SELECT XB_GetGeometry(x'0003AB120000001A0000000000BACB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC0AA70332DD'); +1 # rows (not including the header row) +1 # columns +XB_GetGeometry(x'0003AB120000001A0000000000BACB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC0AA70332DD') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri1.testcase new file mode 100644 index 0000000..b85b184 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri1.testcase @@ -0,0 +1,8 @@ +XB_GetInternalSchemaURI - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_GetInternalSchemaURI(NULL); +1 # rows (not including the header row) +1 # columns +XB_GetInternalSchemaURI(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri2.testcase new file mode 100644 index 0000000..8f61f13 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri2.testcase @@ -0,0 +1,8 @@ +XB_GetInternalSchemaURI - INTEGER XmlBLOB +:memory: #use in-memory database +SELECT XB_GetInternalSchemaURI(1); +1 # rows (not including the header row) +1 # columns +XB_GetInternalSchemaURI(1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri3.testcase new file mode 100644 index 0000000..7a38323 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri3.testcase @@ -0,0 +1,8 @@ +XB_GetInternalSchemaURI - DOUBLE XmlBLOB +:memory: #use in-memory database +SELECT XB_GetInternalSchemaURI(1.1); +1 # rows (not including the header row) +1 # columns +XB_GetInternalSchemaURI(1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri4.testcase new file mode 100644 index 0000000..f7717c7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri4.testcase @@ -0,0 +1,8 @@ +XB_GetInternalSchemaURI - TEXT XmlBLOB +:memory: #use in-memory database +SELECT XB_GetInternalSchemaURI('alpha'); +1 # rows (not including the header row) +1 # columns +XB_GetInternalSchemaURI('alpha') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri5.testcase new file mode 100644 index 0000000..f7717c7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetinternalschemauri5.testcase @@ -0,0 +1,8 @@ +XB_GetInternalSchemaURI - TEXT XmlBLOB +:memory: #use in-memory database +SELECT XB_GetInternalSchemaURI('alpha'); +1 # rows (not including the header row) +1 # columns +XB_GetInternalSchemaURI('alpha') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname1.testcase new file mode 100644 index 0000000..f063908 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname1.testcase @@ -0,0 +1,8 @@ +XB_GetName - NULL XmlDocument +:memory: #use in-memory database +SELECT XB_GetName(NULL); +1 # rows (not including the header row) +1 # columns +XB_GetName(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname2.testcase new file mode 100644 index 0000000..77c5f23 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname2.testcase @@ -0,0 +1,8 @@ +XB_Getname - INTEGER XmlDocument +:memory: #use in-memory database +SELECT XB_GetName(1); +1 # rows (not including the header row) +1 # columns +XB_GetName(1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname3.testcase new file mode 100644 index 0000000..8320f3b --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname3.testcase @@ -0,0 +1,8 @@ +XB_GetName - DOUBLE XmlDocument +:memory: #use in-memory database +SELECT XB_GetName(1.1); +1 # rows (not including the header row) +1 # columns +XB_GetName(1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname4.testcase new file mode 100644 index 0000000..b42c96d --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname4.testcase @@ -0,0 +1,8 @@ +XB_GetName - BLOB XmlDocument +:memory: #use in-memory database +SELECT XB_GetName(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetName(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname5.testcase new file mode 100644 index 0000000..f2d6152 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname5.testcase @@ -0,0 +1,8 @@ +XB_GetName - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_GetName(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetName(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname6.testcase new file mode 100644 index 0000000..9286703 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname6.testcase @@ -0,0 +1,8 @@ +XB_GetName - valid XmlBLOB, legacy blob +:memory: #use in-memory database +SELECT XB_GetName(x'0003AB120000001A0000000000BACB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC0AA70332DD'); +1 # rows (not including the header row) +1 # columns +XB_GetName(x'0003AB120000001A0000000000BACB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC0AA70332DD') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname7.testcase new file mode 100644 index 0000000..5dd093b --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname7.testcase @@ -0,0 +1,8 @@ +XB_GetName - valid XmlBLOB, current blob (valid) +:memory: #use in-memory database +SELECT XB_GetName(x'0013AC370000002D0000000000BA0000CA0000DA0500DE616C7068610000DB0000DC0000DDCB789CB3094A2C2E492D0AAECC4DCACFC9AC4A2DB2B3F14BCC4DB54BCC29C848B4D107B36DF4311401003F711491BCD3962A3BDD'); +1 # rows (not including the header row) +1 # columns +XB_GetName(x'0013AC370000002D0000000000BA0000CA0000DA0500DE616C7068610000DB0000DC0000DDCB789CB3094A2C2E492D0AAECC4DCACFC9AC4A2DB2B3F14BCC4DB54BCC29C848B4D107B36DF4311401003F711491BCD3962A3BDD') +alpha + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname8.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname8.testcase new file mode 100644 index 0000000..7b0a9c0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetname8.testcase @@ -0,0 +1,8 @@ +XB_GetName - valid XmlBLOB, current blob (undefined) +:memory: #use in-memory database +SELECT XB_GetName(x'0013AC390000002E0000000000BA0000CA0000DA0000DE0500DB616C7068610000DC0000DDCB789CB3094A2C2E492D0AAECC4DCACFC9AC4A2DB2B309C92CC949B54BCC29C848B4D187706CF43194010071941593BC159B9679DD'); +1 # rows (not including the header row) +1 # columns +XB_GetName(x'0013AC390000002E0000000000BA0000CA0000DA0000DE0500DB616C7068610000DC0000DDCB789CB3094A2C2E492D0AAECC4DCACFC9AC4A2DB2B309C92CC949B54BCC29C848B4D187706CF43194010071941593BC159B9679DD') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid1.testcase new file mode 100644 index 0000000..c49ff8f --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid1.testcase @@ -0,0 +1,8 @@ +XB_GetParentId - NULL XmlDocument +:memory: #use in-memory database +SELECT XB_GetParentId(NULL); +1 # rows (not including the header row) +1 # columns +XB_GetParentId(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid2.testcase new file mode 100644 index 0000000..a086033 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid2.testcase @@ -0,0 +1,8 @@ +XB_GetParentId - INTEGER XmlDocument +:memory: #use in-memory database +SELECT XB_GetParentId(1); +1 # rows (not including the header row) +1 # columns +XB_GetParentId(1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid3.testcase new file mode 100644 index 0000000..aba4317 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid3.testcase @@ -0,0 +1,8 @@ +XB_GetParentId - DOUBLE XmlDocument +:memory: #use in-memory database +SELECT XB_GetParentId(1.1); +1 # rows (not including the header row) +1 # columns +XB_GetParentId(1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid4.testcase new file mode 100644 index 0000000..3c3d585 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid4.testcase @@ -0,0 +1,8 @@ +XB_GetParentId - BLOB XmlDocument +:memory: #use in-memory database +SELECT XB_GetParentId(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetParentId(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid5.testcase new file mode 100644 index 0000000..05a1286 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid5.testcase @@ -0,0 +1,8 @@ +XB_GetParentId - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_GetParentId(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetParentId(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid6.testcase new file mode 100644 index 0000000..68766b6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetparentid6.testcase @@ -0,0 +1,8 @@ +XB_GetParentId - valid XmlBLOB, no ParentIdentifier +:memory: #use in-memory database +SELECT XB_GetParentId(x'0003AB120000001A0000000000BACB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC0AA70332DD'); +1 # rows (not including the header row) +1 # columns +XB_GetParentId(x'0003AB120000001A0000000000BACB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC0AA70332DD') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri1.testcase new file mode 100644 index 0000000..c88c666 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri1.testcase @@ -0,0 +1,8 @@ +XB_GetSchemaURI - NULL XmlDocument +:memory: #use in-memory database +SELECT XB_GetSchemaURI(NULL); +1 # rows (not including the header row) +1 # columns +XB_GetSchemaURI(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri2.testcase new file mode 100644 index 0000000..97077ca --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri2.testcase @@ -0,0 +1,8 @@ +XB_GetSchemaURI - INTEGER XmlDocument +:memory: #use in-memory database +SELECT XB_GetSchemaURI(1); +1 # rows (not including the header row) +1 # columns +XB_GetSchemaURI(1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri3.testcase new file mode 100644 index 0000000..9062403 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri3.testcase @@ -0,0 +1,8 @@ +XB_GetSchemaURI - DOUBLE XmlDocument +:memory: #use in-memory database +SELECT XB_GetSchemaURI(1.1); +1 # rows (not including the header row) +1 # columns +XB_GetSchemaURI(1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri4.testcase new file mode 100644 index 0000000..2aef902 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri4.testcase @@ -0,0 +1,8 @@ +XB_GetSchemaURI - BLOB XmlDocument +:memory: #use in-memory database +SELECT XB_GetSchemaURI(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetSchemaURI(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri5.testcase new file mode 100644 index 0000000..e23bf17 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri5.testcase @@ -0,0 +1,8 @@ +XB_GetSchemaURI - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_GetSchemaURI(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetSchemaURI(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri6.testcase new file mode 100644 index 0000000..2145d67 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgetschemauri6.testcase @@ -0,0 +1,8 @@ +XB_GetSchemaURI - valid XmlBLOB, not validated +:memory: #use in-memory database +SELECT XB_GetSchemaURI(x'0003AB120000001A0000000000BACB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC0AA70332DD'); +1 # rows (not including the header row) +1 # columns +XB_GetSchemaURI(x'0003AB120000001A0000000000BACB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC0AA70332DD') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle1.testcase new file mode 100644 index 0000000..d5bcb5e --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle1.testcase @@ -0,0 +1,8 @@ +XB_GetTitle - NULL XmlDocument +:memory: #use in-memory database +SELECT XB_GetTitle(NULL); +1 # rows (not including the header row) +1 # columns +XB_GetTitle(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle2.testcase new file mode 100644 index 0000000..4967847 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle2.testcase @@ -0,0 +1,8 @@ +XB_GetTitle - INTEGER XmlDocument +:memory: #use in-memory database +SELECT XB_GetTitle(1); +1 # rows (not including the header row) +1 # columns +XB_GetTitle(1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle3.testcase new file mode 100644 index 0000000..69d70e0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle3.testcase @@ -0,0 +1,8 @@ +XB_GetTitle - DOUBLE XmlDocument +:memory: #use in-memory database +SELECT XB_GetTitle(1.1); +1 # rows (not including the header row) +1 # columns +XB_GetTitle(1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle4.testcase new file mode 100644 index 0000000..789efde --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle4.testcase @@ -0,0 +1,8 @@ +XB_GetTitle - BLOB XmlDocument +:memory: #use in-memory database +SELECT XB_GetTitle(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetTitle(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle5.testcase new file mode 100644 index 0000000..8a01790 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle5.testcase @@ -0,0 +1,8 @@ +XB_GetTitle - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_GetTitle(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetTitle(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle6.testcase new file mode 100644 index 0000000..7cd386e --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlblobgettitle6.testcase @@ -0,0 +1,8 @@ +XB_GetTitle - valid XmlBLOB, no Title +:memory: #use in-memory database +SELECT XB_GetTitle(x'0003AB120000001A0000000000BACB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC0AA70332DD'); +1 # rows (not including the header row) +1 # columns +XB_GetTitle(x'0003AB120000001A0000000000BACB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC0AA70332DD') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress1.testcase new file mode 100644 index 0000000..52c20f1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress1.testcase @@ -0,0 +1,7 @@ +XB_Compress - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_Compress(NULL); +1 # rows (not including the header row) +1 # columns +XB_Compress(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress2.testcase new file mode 100644 index 0000000..a1599aa --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress2.testcase @@ -0,0 +1,7 @@ +XB_Compress - TEXT XmlBLOB +:memory: #use in-memory database +SELECT XB_Compress('alpha'); +1 # rows (not including the header row) +1 # columns +XB_Compress('alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress3.testcase new file mode 100644 index 0000000..1f53bfc --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress3.testcase @@ -0,0 +1,7 @@ +XB_Compress - INTEGER XmlBLOB +:memory: #use in-memory database +SELECT XB_Compress(1); +1 # rows (not including the header row) +1 # columns +XB_Compress(1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress4.testcase new file mode 100644 index 0000000..dd720c2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress4.testcase @@ -0,0 +1,7 @@ +XB_Compress - DOUBLE XmlBLOB +:memory: #use in-memory database +SELECT XB_Compress(1.1); +1 # rows (not including the header row) +1 # columns +XB_Compress(1.1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress5.testcase new file mode 100644 index 0000000..e42e094 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress5.testcase @@ -0,0 +1,7 @@ +XB_Compress - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_Compress(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_Compress(zeroblob(100)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress6.testcase new file mode 100644 index 0000000..6d864ef --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress6.testcase @@ -0,0 +1,8 @@ +XB_Compress - valid XmlBLOB (already compressed) +:memory: #use in-memory database +SELECT Hex(XB_Compress(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD')); +1 # rows (not including the header row) +1 # columns +Hex(XB_Compress(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD')) +0003AC120000001A0000000000BA0000CA0000DA0000DE0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC23D8447EDD + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress7.testcase new file mode 100644 index 0000000..2a2dda6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress7.testcase @@ -0,0 +1,7 @@ +XB_Compress - valid XmlBLOB (uncompressed) +:memory: #use in-memory database +SELECT Hex(XB_Compress(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD')); +1 # rows (not including the header row) +1 # columns +Hex(XB_Compress(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD')) +0003AC120000001A0000000000BA0000CA0000DA0000DE0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC23D8447EDD diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress8.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress8.testcase new file mode 100644 index 0000000..820890b --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlcompress8.testcase @@ -0,0 +1,8 @@ +XB_Compress - valid XmlBLOB (already compressed - legacy blob) +:memory: #use in-memory database +SELECT Hex(XB_Compress(x'0003AC120000001A0000000000BA0000CA0000DA0000DE0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC23D8447EDD')); +1 # rows (not including the header row) +1 # columns +Hex(XB_Compress(x'0003AC120000001A0000000000BA0000CA0000DA0000DE0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC23D8447EDD')) +0003AC120000001A0000000000BA0000CA0000DA0000DE0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC23D8447EDD + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob1.testcase new file mode 100644 index 0000000..aa9a6c0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob1.testcase @@ -0,0 +1,8 @@ +XB_GetPayload - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_GetPayload(NULL); +1 # rows (not including the header row) +1 # columns +XB_GetPayload(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob10.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob10.testcase new file mode 100644 index 0000000..cafa1f4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob10.testcase @@ -0,0 +1,7 @@ +XB_GetPayload - valid XmlBLOB, TEXT format +:memory: #use in-memory database +SELECT XB_GetPayload(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', 'ok'); +1 # rows (not including the header row) +1 # columns +XB_GetPayload(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', 'ok') +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob11.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob11.testcase new file mode 100644 index 0000000..80d31c5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob11.testcase @@ -0,0 +1,7 @@ +XB_GetPayload - valid XmlBLOB, DOUBLE format +:memory: #use in-memory database +SELECT XB_GetPayload(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', 1.1); +1 # rows (not including the header row) +1 # columns +XB_GetPayload(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', 1.1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob12.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob12.testcase new file mode 100644 index 0000000..019f930 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob12.testcase @@ -0,0 +1,7 @@ +XB_GetPayload - valid XmlBLOB, BLOB format +:memory: #use in-memory database +SELECT XB_GetPayload(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +XB_GetPayload(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob13.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob13.testcase new file mode 100644 index 0000000..7ef6822 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob13.testcase @@ -0,0 +1,7 @@ +XB_GetPayload - valid XmlBLOB, INTEGER format +:memory: #use in-memory database +SELECT XB_GetPayload(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', -1); +1 # rows (not including the header row) +1 # columns +XB_GetPayload(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', -1) +text diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob2.testcase new file mode 100644 index 0000000..5c09865 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob2.testcase @@ -0,0 +1,8 @@ +XB_GetPayload - INTEGER XmlBLOB +:memory: #use in-memory database +SELECT XB_GetPayload(1); +1 # rows (not including the header row) +1 # columns +XB_GetPayload(1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob3.testcase new file mode 100644 index 0000000..b3b3da5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob3.testcase @@ -0,0 +1,8 @@ +XB_GetPayload - DOUBLE XmlBLOB +:memory: #use in-memory database +SELECT XB_GetPayload(1.1); +1 # rows (not including the header row) +1 # columns +XB_GetPayload(1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob4.testcase new file mode 100644 index 0000000..4d1bb5c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob4.testcase @@ -0,0 +1,8 @@ +XB_GetPayload - TEXT XmlBLOB +:memory: #use in-memory database +SELECT XB_GetPayload('alpha'); +1 # rows (not including the header row) +1 # columns +XB_GetPayload('alpha') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob5.testcase new file mode 100644 index 0000000..368a98c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob5.testcase @@ -0,0 +1,8 @@ +XB_GetPayload - invalid BLOB XmlBLOB +:memory: #use in-memory database +SELECT XB_GetPayload(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetPayload(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob6.testcase new file mode 100644 index 0000000..368a98c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob6.testcase @@ -0,0 +1,8 @@ +XB_GetPayload - invalid BLOB XmlBLOB +:memory: #use in-memory database +SELECT XB_GetPayload(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetPayload(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob7.testcase new file mode 100644 index 0000000..2dee8ff --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob7.testcase @@ -0,0 +1,8 @@ +XB_GetPayload - valid XmlBLOB (uncompressed) +:memory: #use in-memory database +SELECT XB_GetPayload(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD'); +1 # rows (not including the header row) +1 # columns +XB_GetPayload(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD') +text + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob8.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob8.testcase new file mode 100644 index 0000000..45f0a77 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob8.testcase @@ -0,0 +1,8 @@ +XB_GetPayload - valid XmlBLOB (compressed) +:memory: #use in-memory database +SELECT XB_GetPayload(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD'); +1 # rows (not including the header row) +1 # columns +XB_GetPayload(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD') +text + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob9.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob9.testcase new file mode 100644 index 0000000..988c80f --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmlfromblob9.testcase @@ -0,0 +1,7 @@ +XB_GetPayload - valid XmlBLOB, NULL format +:memory: #use in-memory database +SELECT XB_GetPayload(x'0001AB12000000120000000000BACB3C613E3C623E746578743C2F623E3C2F613EBCF63D032ADD', NULL); +1 # rows (not including the header row) +1 # columns +XB_GetPayload(x'0001AB12000000120000000000BACB3C613E3C623E746578743C2F623E3C2F613EBCF63D032ADD', NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob1.testcase new file mode 100644 index 0000000..2628995 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob1.testcase @@ -0,0 +1,8 @@ +XB_GetDocument - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_GetDocument(NULL); +1 # rows (not including the header row) +1 # columns +XB_GetDocument(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob10.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob10.testcase new file mode 100644 index 0000000..a4079a4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob10.testcase @@ -0,0 +1,7 @@ +XB_GetDocument - valid XmlBLOB, TEXT format +:memory: #use in-memory database +SELECT XB_GetDocument(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', 'ok'); +1 # rows (not including the header row) +1 # columns +XB_GetDocument(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', 'ok') +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob11.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob11.testcase new file mode 100644 index 0000000..24846bd --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob11.testcase @@ -0,0 +1,7 @@ +XB_GetDocument - valid XmlBLOB, DOUBLE format +:memory: #use in-memory database +SELECT XB_GetDocument(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', 1.1); +1 # rows (not including the header row) +1 # columns +XB_GetDocument(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', 1.1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob12.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob12.testcase new file mode 100644 index 0000000..f014df5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob12.testcase @@ -0,0 +1,7 @@ +XB_GetDocument - valid XmlBLOB, BLOB format +:memory: #use in-memory database +SELECT XB_GetDocument(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +XB_GetDocument(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob13.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob13.testcase new file mode 100644 index 0000000..aa73d05 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob13.testcase @@ -0,0 +1,7 @@ +XB_GetDocument - valid XmlBLOB, INTEGER format +:memory: #use in-memory database +SELECT XB_GetDocument(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', -1); +1 # rows (not including the header row) +1 # columns +XB_GetDocument(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', -1) +text diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob2.testcase new file mode 100644 index 0000000..5c1adb2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob2.testcase @@ -0,0 +1,8 @@ +XB_GetDocument - INTEGER XmlBLOB +:memory: #use in-memory database +SELECT XB_GetDocument(1); +1 # rows (not including the header row) +1 # columns +XB_GetDocument(1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob3.testcase new file mode 100644 index 0000000..ad11ff9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob3.testcase @@ -0,0 +1,8 @@ +XB_GetDocument - DOUBLE XmlBLOB +:memory: #use in-memory database +SELECT XB_GetDocument(1.1); +1 # rows (not including the header row) +1 # columns +XB_GetDocument(1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob4.testcase new file mode 100644 index 0000000..312ffbe --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob4.testcase @@ -0,0 +1,8 @@ +XB_GetDocument - TEXT XmlBLOB +:memory: #use in-memory database +SELECT XB_GetDocument('alpha'); +1 # rows (not including the header row) +1 # columns +XB_GetDocument('alpha') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob5.testcase new file mode 100644 index 0000000..a94d59d --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob5.testcase @@ -0,0 +1,8 @@ +XB_GetDocument - invalid BLOB XmlBLOB +:memory: #use in-memory database +SELECT XB_GetDocument(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetDocument(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob6.testcase new file mode 100644 index 0000000..a94d59d --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob6.testcase @@ -0,0 +1,8 @@ +XB_GetDocument - invalid BLOB XmlBLOB +:memory: #use in-memory database +SELECT XB_GetDocument(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_GetDocument(zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob7.testcase new file mode 100644 index 0000000..74ae090 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob7.testcase @@ -0,0 +1,8 @@ +XB_GetDocument - valid XmlBLOB (uncompressed) +:memory: #use in-memory database +SELECT XB_GetDocument(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD'); +1 # rows (not including the header row) +1 # columns +XB_GetDocument(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD') +text + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob8.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob8.testcase new file mode 100644 index 0000000..d6bc2cc --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob8.testcase @@ -0,0 +1,8 @@ +XB_GetDocument - valid XmlBLOB (compressed) +:memory: #use in-memory database +SELECT XB_GetDocument(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD'); +1 # rows (not including the header row) +1 # columns +XB_GetDocument(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD') +text + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob9.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob9.testcase new file mode 100644 index 0000000..3c2e50d --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltextfromblob9.testcase @@ -0,0 +1,7 @@ +XB_GetDocument - valid XmlBLOB, NULL format +:memory: #use in-memory database +SELECT XB_GetDocument(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', NULL); +1 # rows (not including the header row) +1 # columns +XB_GetDocument(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD', NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob1.testcase new file mode 100644 index 0000000..1b0a529 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob1.testcase @@ -0,0 +1,8 @@ +XB_Create - NULL XMLDocument +:memory: #use in-memory database +SELECT XB_Create(NULL); +1 # rows (not including the header row) +1 # columns +XB_Create(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob10.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob10.testcase new file mode 100644 index 0000000..fcafe9d --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob10.testcase @@ -0,0 +1,8 @@ +XB_Create - valid XMLDocument, DOUBLE compression +:memory: #use in-memory database +SELECT XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 1.1); +1 # rows (not including the header row) +1 # columns +XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob11.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob11.testcase new file mode 100644 index 0000000..cf92cfc --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob11.testcase @@ -0,0 +1,8 @@ +XB_Create - valid XMLDocument, compressed - legacy format +:memory: #use in-memory database +SELECT Hex(XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 1)); +1 # rows (not including the header row) +1 # columns +Hex(XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 1)) +0003AC120000001A0000000000BA0000CA0000DA0000DE0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC23D8447EDD + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob12.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob12.testcase new file mode 100644 index 0000000..5cb4991 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob12.testcase @@ -0,0 +1,8 @@ +XB_Create - valid XMLDocument, uncompressed +:memory: #use in-memory database +SELECT Hex(XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 0)); +1 # rows (not including the header row) +1 # columns +Hex(XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 0)) +0001AC12000000120000000000BA0000CA0000DA0000DE0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC2445E134DD + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob13.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob13.testcase new file mode 100644 index 0000000..cb9e354 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob13.testcase @@ -0,0 +1,8 @@ +XB_Create - valid XMLDocument, compressed, NULL SchemaURI +:memory: #use in-memory database +SELECT XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 1, NULL); +1 # rows (not including the header row) +1 # columns +XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 1, NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob14.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob14.testcase new file mode 100644 index 0000000..006a043 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob14.testcase @@ -0,0 +1,8 @@ +XB_Create - valid XMLDocument, compressed, DOUBLE SchemaURI +:memory: #use in-memory database +SELECT XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 1, 1.1); +1 # rows (not including the header row) +1 # columns +XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 1, 1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob15.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob15.testcase new file mode 100644 index 0000000..772b11c --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob15.testcase @@ -0,0 +1,8 @@ +XB_Create - valid XMLDocument, compressed, BLOB SchemaURI +:memory: #use in-memory database +SELECT XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 1, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 1, zeroblob(4)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob16.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob16.testcase new file mode 100644 index 0000000..0f12df1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob16.testcase @@ -0,0 +1,8 @@ +XB_Create - valid XMLDocument, compressed, InternalSchemaURI (fail) +:memory: #use in-memory database +SELECT XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 1, 1); +1 # rows (not including the header row) +1 # columns +XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 1, 1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob17.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob17.testcase new file mode 100644 index 0000000..a5f7b86 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob17.testcase @@ -0,0 +1,8 @@ +XB_Create - valid XMLDocument, compressed, SchemaURI (fail) +:memory: #use in-memory database +SELECT XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 1, 'alpha.xsd'); +1 # rows (not including the header row) +1 # columns +XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 1, 'alpha.xsd') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob18.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob18.testcase new file mode 100644 index 0000000..5469944 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob18.testcase @@ -0,0 +1,7 @@ +XB_Create - valid XMLDocument, UTF-8 +:memory: #use in-memory database +SELECT Hex(XB_Create(x'3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D227574662D3822203F3E3C613E746578743C2F613E')); +1 # rows (not including the header row) +1 # columns +Hex(XB_Create(x'3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D227574662D3822203F3E3C613E746578743C2F613E')) +0003AC320000003A0000000000BA0000CA0000DA0000DE0000DB0000DC0000DDCB789CB3B1AFC8CD51284B2D2ACECCCFB35532D433505248CD4BCE4FC9CC4BB7552A2D49D3B55052B0B7B349B42B49AD28B1D14FB403009EE70FE6BC1DE1AC65DD| diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob2.testcase new file mode 100644 index 0000000..b78d512 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob2.testcase @@ -0,0 +1,8 @@ +XB_Create - INTEGER XMLDocument +:memory: #use in-memory database +SELECT XB_Create(1); +1 # rows (not including the header row) +1 # columns +XB_Create(1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob3.testcase new file mode 100644 index 0000000..3ed61c2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob3.testcase @@ -0,0 +1,8 @@ +XB_Create - DOUBLE XMLDocument +:memory: #use in-memory database +SELECT XB_Create(1.1); +1 # rows (not including the header row) +1 # columns +XB_Create(1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob4.testcase new file mode 100644 index 0000000..5bdd2c1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob4.testcase @@ -0,0 +1,8 @@ +XB_Create - BLOB XMLDocument +:memory: #use in-memory database +SELECT XB_Create(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +XB_Create(zeroblob(4)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob5.testcase new file mode 100644 index 0000000..1428b23 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob5.testcase @@ -0,0 +1,8 @@ +XB_Create - valid XMLDocument +:memory: #use in-memory database +SELECT Hex(XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E')); +1 # rows (not including the header row) +1 # columns +Hex(XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E')) +0003AC120000001A0000000000BA0000CA0000DA0000DE0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC23D8447EDD + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob6.testcase new file mode 100644 index 0000000..ee1137f --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob6.testcase @@ -0,0 +1,8 @@ +XB_Create - not well-formed XMLDocument +:memory: #use in-memory database +SELECT XB_Create(x'3C613E3C623E746578743C2F613E3C2F623E'); +1 # rows (not including the header row) +1 # columns +XB_Create(x'3C613E3C623E746578743C2F613E3C2F623E') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob7.testcase new file mode 100644 index 0000000..15a9103 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob7.testcase @@ -0,0 +1,8 @@ +XB_Create - valid XMLDocument, NULL compression +:memory: #use in-memory database +SELECT XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', NULL); +1 # rows (not including the header row) +1 # columns +XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob8.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob8.testcase new file mode 100644 index 0000000..e56464b --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob8.testcase @@ -0,0 +1,8 @@ +XB_Create - valid XMLDocument, TEXT compression +:memory: #use in-memory database +SELECT XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 'yes'); +1 # rows (not including the header row) +1 # columns +XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', 'yes') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob9.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob9.testcase new file mode 100644 index 0000000..6f44d6b --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmltoblob9.testcase @@ -0,0 +1,8 @@ +XB_Create - valid XMLDocument, BLOB compression +:memory: #use in-memory database +SELECT XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +XB_Create(x'3C613E3C623E746578743C2F623E3C2F613E', zeroblob(4)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress1.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress1.testcase new file mode 100644 index 0000000..9c6b2ab --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress1.testcase @@ -0,0 +1,7 @@ +XB_Uncompress - NULL XmlBLOB +:memory: #use in-memory database +SELECT XB_Uncompress(NULL); +1 # rows (not including the header row) +1 # columns +XB_Uncompress(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress2.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress2.testcase new file mode 100644 index 0000000..4ffdb53 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress2.testcase @@ -0,0 +1,7 @@ +XB_Uncompress - TEXT XmlBLOB +:memory: #use in-memory database +SELECT XB_Uncompress('alpha'); +1 # rows (not including the header row) +1 # columns +XB_Uncompress('alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress3.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress3.testcase new file mode 100644 index 0000000..a125aab --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress3.testcase @@ -0,0 +1,7 @@ +XB_Uncompress - INTEGER XmlBLOB +:memory: #use in-memory database +SELECT XB_Uncompress(1); +1 # rows (not including the header row) +1 # columns +XB_Uncompress(1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress4.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress4.testcase new file mode 100644 index 0000000..9281d31 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress4.testcase @@ -0,0 +1,7 @@ +XB_Uncompress - DOUBLE XmlBLOB +:memory: #use in-memory database +SELECT XB_Uncompress(1.1); +1 # rows (not including the header row) +1 # columns +XB_Uncompress(1.1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress5.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress5.testcase new file mode 100644 index 0000000..f2636b6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress5.testcase @@ -0,0 +1,7 @@ +XB_Uncompress - invalid XmlBLOB +:memory: #use in-memory database +SELECT XB_Uncompress(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +XB_Uncompress(zeroblob(100)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress6.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress6.testcase new file mode 100644 index 0000000..0ea4a65 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress6.testcase @@ -0,0 +1,7 @@ +XB_Uncompress - valid XmlBLOB (compressed - legacy blob) +:memory: #use in-memory database +SELECT Hex(XB_Uncompress(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD')); +1 # rows (not including the header row) +1 # columns +Hex(XB_Uncompress(x'0003AB120000001A0000000000BA0000CA0000DA0000DB0000DC0000DDCB789CB349B4B349B22B49AD28B1D14FB2B3D14FB4030036540592BC5FDCA3F9DD')) +0001AC12000000120000000000BA0000CA0000DA0000DE0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC2445E134DD diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress7.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress7.testcase new file mode 100644 index 0000000..05a86f4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress7.testcase @@ -0,0 +1,7 @@ +XB_Uncompress - valid XmlBLOB (already uncompressed) +:memory: #use in-memory database +SELECT Hex(XB_Uncompress(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD')); +1 # rows (not including the header row) +1 # columns +Hex(XB_Uncompress(x'0001AB12000000120000000000BA0000CA0000DA0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC49A10C93DD')) +0001AC12000000120000000000BA0000CA0000DA0000DE0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC2445E134DD diff --git a/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress8.testcase b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress8.testcase new file mode 100644 index 0000000..2a4c5fe --- /dev/null +++ b/src/spatialite/test/sql_stmt_libxml2_tests/xmluncompress8.testcase @@ -0,0 +1,7 @@ +XB_Uncompress - valid XmlBLOB (compressed) +:memory: #use in-memory database +SELECT Hex(XB_Uncompress(x'0001AC12000000120000000000BA0000CA0000DA0000DE0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC2445E134DD')); +1 # rows (not including the header row) +1 # columns +Hex(XB_Uncompress(x'0001AC12000000120000000000BA0000CA0000DA0000DE0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC2445E134DD')) +0001AC12000000120000000000BA0000CA0000DA0000DE0000DB0000DC0000DDCB3C613E3C623E746578743C2F623E3C2F613EBC2445E134DD diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance1.testcase new file mode 100644 index 0000000..a39f29f --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance1.testcase @@ -0,0 +1,8 @@ +3DDistance - two 2D points +:memory: #use in-memory database +SELECT ST_3DDistance(MakePoint(1, 2), MakePoint(4, 6)) +1 # rows (not including the header row) +1 # columns +ST_3DDistance(MakePoint(1, 2), MakePoint(4, 6)) +5.0 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance10.testcase new file mode 100644 index 0000000..7c9d8d4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance10.testcase @@ -0,0 +1,8 @@ +3DDistance - two 3D linestring +:memory: #use in-memory database +SELECT ST_3DDistance(GeomFromText("LINESTRINGZ(0 0 1, 10 2 5)"), GeomFromText("LINESTRINGZ(0 2 3, 10 3 4)")); +1 # rows (not including the header row) +1 # columns +ST_3DDistance(GeomFromText("LINESTRINGZ(0 0 1, 10 2 5)"), GeomFromText("LINESTRINGZ(0 2 3, 10 3 4)")); +1.262388:6 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance2.testcase new file mode 100644 index 0000000..3f4100a --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance2.testcase @@ -0,0 +1,8 @@ +3DDistance - two 2D identical points +:memory: #use in-memory database +SELECT ST_3DDistance(MakePoint(1, 2), MakePoint(1, 2)) +1 # rows (not including the header row) +1 # columns +ST_3DDistance(MakePoint(1, 2), MakePoint(1, 2)) +0.0 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance3.testcase new file mode 100644 index 0000000..b5cabab --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance3.testcase @@ -0,0 +1,8 @@ +3DDistance - bad blob first arg +:memory: #use in-memory database +SELECT ST_3DDistance(zeroblob(100), MakePoint(1, 2)) +1 # rows (not including the header row) +1 # columns +ST_3DDistance(zeroblob(100), MakePoint(1, 2)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance4.testcase new file mode 100644 index 0000000..dff3841 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance4.testcase @@ -0,0 +1,8 @@ +3DDistance - bad blob second arg +:memory: #use in-memory database +SELECT ST_3DDistance(MakePoint(1, 2), zeroblob(100)) +1 # rows (not including the header row) +1 # columns +ST_3DDistance(MakePoint(1, 2), zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance5.testcase new file mode 100644 index 0000000..d1c4f55 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance5.testcase @@ -0,0 +1,8 @@ +3DDistance - non-blob first arg +:memory: #use in-memory database +SELECT ST_3DDistance(3, MakePoint(1, 2)) +1 # rows (not including the header row) +1 # columns +ST_3DDistance(3, MakePoint(1, 2)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance6.testcase new file mode 100644 index 0000000..d1e5bc5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance6.testcase @@ -0,0 +1,8 @@ +3DDistance - bad blob second arg +:memory: #use in-memory database +SELECT ST_3DDistance(MakePoint(1, 2), "hello") +1 # rows (not including the header row) +1 # columns +ST_3DDistance(MakePoint(1, 2), "hello") +(NULL) + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance7.testcase new file mode 100644 index 0000000..782178a --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance7.testcase @@ -0,0 +1,8 @@ +3DDistance - parallel 2D lines +:memory: #use in-memory database +SELECT ST_3DDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) +1 # rows (not including the header row) +1 # columns +ST_3DDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) +2.0 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance8.testcase new file mode 100644 index 0000000..e8cfb3e --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance8.testcase @@ -0,0 +1,8 @@ +3DDistance - intersecting 2D lines +:memory: #use in-memory database +SELECT ST_3DDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) +1 # rows (not including the header row) +1 # columns +ST_3DDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) +0.0 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance9.testcase new file mode 100644 index 0000000..f0570ed --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3ddistance9.testcase @@ -0,0 +1,8 @@ +3DDistance - two 3D points +:memory: #use in-memory database +SELECT ST_3DDistance(MakePointZ(1, 2, 3), MakePointZ(4, 6, 5)); +1 # rows (not including the header row) +1 # columns +ST_3DDistance(MakePointZ(1, 2, 3), MakePointZ(4, 6, 5)) +5.385164:6 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance1.testcase new file mode 100644 index 0000000..23a72e8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance1.testcase @@ -0,0 +1,8 @@ +3DMaxDistance - two 2D points +:memory: #use in-memory database +SELECT ST_3DMaxDistance(MakePoint(1, 2), MakePoint(4, 6)) +1 # rows (not including the header row) +1 # columns +ST_3DMaxDistance(MakePoint(1, 2), MakePoint(4, 6)) +5.0 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance10.testcase new file mode 100644 index 0000000..e8dbb43 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance10.testcase @@ -0,0 +1,8 @@ +3DMaxDistance - two 3D linestring +:memory: #use in-memory database +SELECT ST_3DMaxDistance(GeomFromText("LINESTRINGZ(0 0 1, 10 2 5)"), GeomFromText("LINESTRINGZ(0 2 3, 10 3 4)")); +1 # rows (not including the header row) +1 # columns +ST_3DMaxDistance(GeomFromText("LINESTRINGZ(0 0 1, 10 2 5)"), GeomFromText("LINESTRINGZ(0 2 3, 10 3 4)")); +10.862780:6 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance2.testcase new file mode 100644 index 0000000..7757f4c --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance2.testcase @@ -0,0 +1,8 @@ +3DMaxDistance - two 2D identical points +:memory: #use in-memory database +SELECT ST_3DMaxDistance(MakePoint(1, 2), MakePoint(1, 2)) +1 # rows (not including the header row) +1 # columns +ST_3DMaxDistance(MakePoint(1, 2), MakePoint(1, 2)) +0.0 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance3.testcase new file mode 100644 index 0000000..22d2270 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance3.testcase @@ -0,0 +1,8 @@ +MaxDistance - bad blob first arg +:memory: #use in-memory database +SELECT ST_MaxDistance(zeroblob(100), MakePoint(1, 2)) +1 # rows (not including the header row) +1 # columns +ST_MaxDistance(zeroblob(100), MakePoint(1, 2)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance4.testcase new file mode 100644 index 0000000..2da201e --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance4.testcase @@ -0,0 +1,8 @@ +3DMaxDistance - bad blob second arg +:memory: #use in-memory database +SELECT ST_3DMaxDistance(MakePoint(1, 2), zeroblob(100)) +1 # rows (not including the header row) +1 # columns +ST_3DMaxDistance(MakePoint(1, 2), zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance5.testcase new file mode 100644 index 0000000..9658b77 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance5.testcase @@ -0,0 +1,8 @@ +3DMaxDistance - non-blob first arg +:memory: #use in-memory database +SELECT ST_3DMaxDistance(3, MakePoint(1, 2)) +1 # rows (not including the header row) +1 # columns +ST_3DMaxDistance(3, MakePoint(1, 2)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance6.testcase new file mode 100644 index 0000000..ee5cb70 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance6.testcase @@ -0,0 +1,8 @@ +3DMaxDistance - bad blob second arg +:memory: #use in-memory database +SELECT ST_3DMaxDistance(MakePoint(1, 2), "hello") +1 # rows (not including the header row) +1 # columns +ST_3DMaxDistance(MakePoint(1, 2), "hello") +(NULL) + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance7.testcase new file mode 100644 index 0000000..53c1af0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance7.testcase @@ -0,0 +1,8 @@ +3DMaxDistance - parallel 2D lines +:memory: #use in-memory database +SELECT ST_3DMaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) +1 # rows (not including the header row) +1 # columns +ST_3DMaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) +10.198039:6 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance8.testcase new file mode 100644 index 0000000..404bb2a --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance8.testcase @@ -0,0 +1,8 @@ +3DMaxDistance - intersecting 2D lines +:memory: #use in-memory database +SELECT ST_3DMaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) +1 # rows (not including the header row) +1 # columns +ST_3DMaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) +11.180339:6 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance9.testcase new file mode 100644 index 0000000..82b178b --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/3dmaxdistance9.testcase @@ -0,0 +1,8 @@ +3DMaxDistance - two 3D points +:memory: #use in-memory database +SELECT ST_3DMaxDistance(MakePointZ(1, 2, 3), MakePointZ(4, 6, 5)); +1 # rows (not including the header row) +1 # columns +ST_3DMaxDistance(MakePointZ(1, 2, 3), MakePointZ(4, 6, 5)) +5.385164:6 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/Makefile.am b/src/spatialite/test/sql_stmt_lwgeom_tests/Makefile.am new file mode 100644 index 0000000..47d7a0c --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/Makefile.am @@ -0,0 +1,290 @@ + +EXTRA_DIST = 3ddistance10.testcase \ + 3ddistance1.testcase \ + 3ddistance2.testcase \ + 3ddistance3.testcase \ + 3ddistance4.testcase \ + 3ddistance5.testcase \ + 3ddistance6.testcase \ + 3ddistance7.testcase \ + 3ddistance8.testcase \ + 3ddistance9.testcase \ + 3dmaxdistance10.testcase \ + 3dmaxdistance1.testcase \ + 3dmaxdistance2.testcase \ + 3dmaxdistance3.testcase \ + 3dmaxdistance4.testcase \ + 3dmaxdistance5.testcase \ + 3dmaxdistance6.testcase \ + 3dmaxdistance7.testcase \ + 3dmaxdistance8.testcase \ + 3dmaxdistance9.testcase \ + maxdistance10.testcase \ + maxdistance1.testcase \ + maxdistance2.testcase \ + maxdistance3.testcase \ + maxdistance4.testcase \ + maxdistance5.testcase \ + maxdistance6.testcase \ + maxdistance7.testcase \ + maxdistance8.testcase \ + maxdistance9.testcase \ + st_asx3d10.testcase \ + st_asx3d11.testcase \ + st_asx3d12.testcase \ + st_asx3d13.testcase \ + st_asx3d14.testcase \ + st_asx3d15.testcase \ + st_asx3d16.testcase \ + st_asx3d17.testcase \ + st_asx3d18.testcase \ + st_asx3d19.testcase \ + st_asx3d1.testcase \ + st_asx3d20.testcase \ + st_asx3d21.testcase \ + st_asx3d22.testcase \ + st_asx3d23.testcase \ + st_asx3d24.testcase \ + st_asx3d25.testcase \ + st_asx3d26.testcase \ + st_asx3d27.testcase \ + st_asx3d28.testcase \ + st_asx3d29.testcase \ + st_asx3d2.testcase \ + st_asx3d30.testcase \ + st_asx3d3.testcase \ + st_asx3d4.testcase \ + st_asx3d5.testcase \ + st_asx3d6.testcase \ + st_asx3d7.testcase \ + st_asx3d8.testcase \ + st_asx3d9.testcase \ + st_area10.testcase \ + st_area11.testcase \ + st_area12.testcase \ + st_area13.testcase \ + st_area14.testcase \ + st_area15.testcase \ + st_area16.testcase \ + st_area17.testcase \ + st_area18.testcase \ + st_azimuth11.testcase \ + st_azimuth12.testcase \ + st_azimuth13.testcase \ + st_azimuth14.testcase \ + st_azimuth15.testcase \ + st_azimuth16.testcase \ + st_azimuth17.testcase \ + st_azimuth1.testcase \ + st_azimuth2.testcase \ + st_azimuth3.testcase \ + st_azimuth4.testcase \ + st_azimuth5.testcase \ + st_azimuth6.testcase \ + st_azimuth7.testcase \ + st_azimuth8.testcase \ + st_azimuth9.testcase \ + st_geohash10.testcase \ + st_geohash1.testcase \ + st_geohash2.testcase \ + st_geohash3.testcase \ + st_geohash4.testcase \ + st_geohash5.testcase \ + st_geohash6.testcase \ + st_geohash7.testcase \ + st_geohash8.testcase \ + st_geohash9.testcase \ + st_makevalid1.testcase \ + st_makevalid2.testcase \ + st_makevalid3.testcase \ + st_makevalid4.testcase \ + st_makevalid5.testcase \ + st_makevalid6.testcase \ + st_makevalid7.testcase \ + st_makevalid8.testcase \ + st_makevaliddiscarded1.testcase \ + st_makevaliddiscarded2.testcase \ + st_makevaliddiscarded3.testcase \ + st_makevaliddiscarded4.testcase \ + st_makevaliddiscarded5.testcase \ + st_makevaliddiscarded6.testcase \ + st_makevaliddiscarded7.testcase \ + st_makevaliddiscarded8.testcase \ + st_project1.testcase \ + st_project2.testcase \ + st_project3.testcase \ + st_project4.testcase \ + st_project5.testcase \ + st_project6.testcase \ + st_project7.testcase \ + st_project8.testcase \ + st_project9.testcase \ + st_project10.testcase \ + st_project11.testcase \ + st_project12.testcase \ + st_project13.testcase \ + st_project14.testcase \ + st_segmentize10.testcase \ + st_segmentize11.testcase \ + st_segmentize12.testcase \ + st_segmentize13.testcase \ + st_segmentize14.testcase \ + st_segmentize15.testcase \ + st_segmentize16.testcase \ + st_segmentize17.testcase \ + st_segmentize18.testcase \ + st_segmentize19.testcase \ + st_segmentize1.testcase \ + st_segmentize20.testcase \ + st_segmentize21.testcase \ + st_segmentize22.testcase \ + st_segmentize23.testcase \ + st_segmentize24.testcase \ + st_segmentize25.testcase \ + st_segmentize26.testcase \ + st_segmentize27.testcase \ + st_segmentize28.testcase \ + st_segmentize29.testcase \ + st_segmentize2.testcase \ + st_segmentize30.testcase \ + st_segmentize31.testcase \ + st_segmentize3.testcase \ + st_segmentize4.testcase \ + st_segmentize5.testcase \ + st_segmentize6.testcase \ + st_segmentize7.testcase \ + st_segmentize8.testcase \ + st_segmentize9.testcase \ + st_snaptogrid10.testcase \ + st_snaptogrid11.testcase \ + st_snaptogrid12.testcase \ + st_snaptogrid13.testcase \ + st_snaptogrid14.testcase \ + st_snaptogrid15.testcase \ + st_snaptogrid16.testcase \ + st_snaptogrid17.testcase \ + st_snaptogrid18.testcase \ + st_snaptogrid19.testcase \ + st_snaptogrid1.testcase \ + st_snaptogrid20.testcase \ + st_snaptogrid21.testcase \ + st_snaptogrid22.testcase \ + st_snaptogrid23.testcase \ + st_snaptogrid24.testcase \ + st_snaptogrid25.testcase \ + st_snaptogrid26.testcase \ + st_snaptogrid27.testcase \ + st_snaptogrid28.testcase \ + st_snaptogrid29.testcase \ + st_snaptogrid2.testcase \ + st_snaptogrid30.testcase \ + st_snaptogrid31.testcase \ + st_snaptogrid32.testcase \ + st_snaptogrid33.testcase \ + st_snaptogrid34.testcase \ + st_snaptogrid35.testcase \ + st_snaptogrid36.testcase \ + st_snaptogrid37.testcase \ + st_snaptogrid38.testcase \ + st_snaptogrid39.testcase \ + st_snaptogrid3.testcase \ + st_snaptogrid40.testcase \ + st_snaptogrid41.testcase \ + st_snaptogrid42.testcase \ + st_snaptogrid43.testcase \ + st_snaptogrid44.testcase \ + st_snaptogrid45.testcase \ + st_snaptogrid46.testcase \ + st_snaptogrid47.testcase \ + st_snaptogrid48.testcase \ + st_snaptogrid49.testcase \ + st_snaptogrid4.testcase \ + st_snaptogrid50.testcase \ + st_snaptogrid51.testcase \ + st_snaptogrid52.testcase \ + st_snaptogrid53.testcase \ + st_snaptogrid54.testcase \ + st_snaptogrid55.testcase \ + st_snaptogrid56.testcase \ + st_snaptogrid57.testcase \ + st_snaptogrid58.testcase \ + st_snaptogrid59.testcase \ + st_snaptogrid5.testcase \ + st_snaptogrid60.testcase \ + st_snaptogrid61.testcase \ + st_snaptogrid62.testcase \ + st_snaptogrid63.testcase \ + st_snaptogrid64.testcase \ + st_snaptogrid65.testcase \ + st_snaptogrid6.testcase \ + st_snaptogrid7.testcase \ + st_snaptogrid8.testcase \ + st_snaptogrid9.testcase \ + st_split10.testcase \ + st_split11.testcase \ + st_split12.testcase \ + st_split13.testcase \ + st_split14.testcase \ + st_split15.testcase \ + st_split16.testcase \ + st_split17.testcase \ + st_split18.testcase \ + st_split19.testcase \ + st_split1.testcase \ + st_split20.testcase \ + st_split21.testcase \ + st_split22.testcase \ + st_split23.testcase \ + st_split24.testcase \ + st_split25.testcase \ + st_split26.testcase \ + st_split27.testcase \ + st_split28.testcase \ + st_split29.testcase \ + st_split2.testcase \ + st_split30.testcase \ + st_split31.testcase \ + st_split32.testcase \ + st_split33.testcase \ + st_split34.testcase \ + st_split35.testcase \ + st_split36.testcase \ + st_split37.testcase \ + st_split38.testcase \ + st_split39.testcase \ + st_split3.testcase \ + st_split40.testcase \ + st_split41.testcase \ + st_split42.testcase \ + st_split43.testcase \ + st_split44.testcase \ + st_split45.testcase \ + st_split46.testcase \ + st_split47.testcase \ + st_split48.testcase \ + st_split49.testcase \ + st_split4.testcase \ + st_split5.testcase \ + st_split6.testcase \ + st_split7.testcase \ + st_split8.testcase \ + st_split9.testcase \ + st_node1.testcase \ + st_node2.testcase \ + st_node3.testcase \ + st_node4.testcase \ + st_node5.testcase \ + st_node6.testcase \ + st_node7.testcase \ + st_node8.testcase \ + st_node9.testcase \ + st_self1.testcase \ + st_self2.testcase \ + st_self3.testcase \ + st_self4.testcase \ + st_self5.testcase \ + st_self6.testcase \ + st_self7.testcase \ + st_self8.testcase \ + st_self9.testcase + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/Makefile.in b/src/spatialite/test/sql_stmt_lwgeom_tests/Makefile.in new file mode 100644 index 0000000..44330ef --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/Makefile.in @@ -0,0 +1,725 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/sql_stmt_lwgeom_tests +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = 3ddistance10.testcase \ + 3ddistance1.testcase \ + 3ddistance2.testcase \ + 3ddistance3.testcase \ + 3ddistance4.testcase \ + 3ddistance5.testcase \ + 3ddistance6.testcase \ + 3ddistance7.testcase \ + 3ddistance8.testcase \ + 3ddistance9.testcase \ + 3dmaxdistance10.testcase \ + 3dmaxdistance1.testcase \ + 3dmaxdistance2.testcase \ + 3dmaxdistance3.testcase \ + 3dmaxdistance4.testcase \ + 3dmaxdistance5.testcase \ + 3dmaxdistance6.testcase \ + 3dmaxdistance7.testcase \ + 3dmaxdistance8.testcase \ + 3dmaxdistance9.testcase \ + maxdistance10.testcase \ + maxdistance1.testcase \ + maxdistance2.testcase \ + maxdistance3.testcase \ + maxdistance4.testcase \ + maxdistance5.testcase \ + maxdistance6.testcase \ + maxdistance7.testcase \ + maxdistance8.testcase \ + maxdistance9.testcase \ + st_asx3d10.testcase \ + st_asx3d11.testcase \ + st_asx3d12.testcase \ + st_asx3d13.testcase \ + st_asx3d14.testcase \ + st_asx3d15.testcase \ + st_asx3d16.testcase \ + st_asx3d17.testcase \ + st_asx3d18.testcase \ + st_asx3d19.testcase \ + st_asx3d1.testcase \ + st_asx3d20.testcase \ + st_asx3d21.testcase \ + st_asx3d22.testcase \ + st_asx3d23.testcase \ + st_asx3d24.testcase \ + st_asx3d25.testcase \ + st_asx3d26.testcase \ + st_asx3d27.testcase \ + st_asx3d28.testcase \ + st_asx3d29.testcase \ + st_asx3d2.testcase \ + st_asx3d30.testcase \ + st_asx3d3.testcase \ + st_asx3d4.testcase \ + st_asx3d5.testcase \ + st_asx3d6.testcase \ + st_asx3d7.testcase \ + st_asx3d8.testcase \ + st_asx3d9.testcase \ + st_area10.testcase \ + st_area11.testcase \ + st_area12.testcase \ + st_area13.testcase \ + st_area14.testcase \ + st_area15.testcase \ + st_area16.testcase \ + st_area17.testcase \ + st_area18.testcase \ + st_azimuth11.testcase \ + st_azimuth12.testcase \ + st_azimuth13.testcase \ + st_azimuth14.testcase \ + st_azimuth15.testcase \ + st_azimuth16.testcase \ + st_azimuth17.testcase \ + st_azimuth1.testcase \ + st_azimuth2.testcase \ + st_azimuth3.testcase \ + st_azimuth4.testcase \ + st_azimuth5.testcase \ + st_azimuth6.testcase \ + st_azimuth7.testcase \ + st_azimuth8.testcase \ + st_azimuth9.testcase \ + st_geohash10.testcase \ + st_geohash1.testcase \ + st_geohash2.testcase \ + st_geohash3.testcase \ + st_geohash4.testcase \ + st_geohash5.testcase \ + st_geohash6.testcase \ + st_geohash7.testcase \ + st_geohash8.testcase \ + st_geohash9.testcase \ + st_makevalid1.testcase \ + st_makevalid2.testcase \ + st_makevalid3.testcase \ + st_makevalid4.testcase \ + st_makevalid5.testcase \ + st_makevalid6.testcase \ + st_makevalid7.testcase \ + st_makevalid8.testcase \ + st_makevaliddiscarded1.testcase \ + st_makevaliddiscarded2.testcase \ + st_makevaliddiscarded3.testcase \ + st_makevaliddiscarded4.testcase \ + st_makevaliddiscarded5.testcase \ + st_makevaliddiscarded6.testcase \ + st_makevaliddiscarded7.testcase \ + st_makevaliddiscarded8.testcase \ + st_project1.testcase \ + st_project2.testcase \ + st_project3.testcase \ + st_project4.testcase \ + st_project5.testcase \ + st_project6.testcase \ + st_project7.testcase \ + st_project8.testcase \ + st_project9.testcase \ + st_project10.testcase \ + st_project11.testcase \ + st_project12.testcase \ + st_project13.testcase \ + st_project14.testcase \ + st_segmentize10.testcase \ + st_segmentize11.testcase \ + st_segmentize12.testcase \ + st_segmentize13.testcase \ + st_segmentize14.testcase \ + st_segmentize15.testcase \ + st_segmentize16.testcase \ + st_segmentize17.testcase \ + st_segmentize18.testcase \ + st_segmentize19.testcase \ + st_segmentize1.testcase \ + st_segmentize20.testcase \ + st_segmentize21.testcase \ + st_segmentize22.testcase \ + st_segmentize23.testcase \ + st_segmentize24.testcase \ + st_segmentize25.testcase \ + st_segmentize26.testcase \ + st_segmentize27.testcase \ + st_segmentize28.testcase \ + st_segmentize29.testcase \ + st_segmentize2.testcase \ + st_segmentize30.testcase \ + st_segmentize31.testcase \ + st_segmentize3.testcase \ + st_segmentize4.testcase \ + st_segmentize5.testcase \ + st_segmentize6.testcase \ + st_segmentize7.testcase \ + st_segmentize8.testcase \ + st_segmentize9.testcase \ + st_snaptogrid10.testcase \ + st_snaptogrid11.testcase \ + st_snaptogrid12.testcase \ + st_snaptogrid13.testcase \ + st_snaptogrid14.testcase \ + st_snaptogrid15.testcase \ + st_snaptogrid16.testcase \ + st_snaptogrid17.testcase \ + st_snaptogrid18.testcase \ + st_snaptogrid19.testcase \ + st_snaptogrid1.testcase \ + st_snaptogrid20.testcase \ + st_snaptogrid21.testcase \ + st_snaptogrid22.testcase \ + st_snaptogrid23.testcase \ + st_snaptogrid24.testcase \ + st_snaptogrid25.testcase \ + st_snaptogrid26.testcase \ + st_snaptogrid27.testcase \ + st_snaptogrid28.testcase \ + st_snaptogrid29.testcase \ + st_snaptogrid2.testcase \ + st_snaptogrid30.testcase \ + st_snaptogrid31.testcase \ + st_snaptogrid32.testcase \ + st_snaptogrid33.testcase \ + st_snaptogrid34.testcase \ + st_snaptogrid35.testcase \ + st_snaptogrid36.testcase \ + st_snaptogrid37.testcase \ + st_snaptogrid38.testcase \ + st_snaptogrid39.testcase \ + st_snaptogrid3.testcase \ + st_snaptogrid40.testcase \ + st_snaptogrid41.testcase \ + st_snaptogrid42.testcase \ + st_snaptogrid43.testcase \ + st_snaptogrid44.testcase \ + st_snaptogrid45.testcase \ + st_snaptogrid46.testcase \ + st_snaptogrid47.testcase \ + st_snaptogrid48.testcase \ + st_snaptogrid49.testcase \ + st_snaptogrid4.testcase \ + st_snaptogrid50.testcase \ + st_snaptogrid51.testcase \ + st_snaptogrid52.testcase \ + st_snaptogrid53.testcase \ + st_snaptogrid54.testcase \ + st_snaptogrid55.testcase \ + st_snaptogrid56.testcase \ + st_snaptogrid57.testcase \ + st_snaptogrid58.testcase \ + st_snaptogrid59.testcase \ + st_snaptogrid5.testcase \ + st_snaptogrid60.testcase \ + st_snaptogrid61.testcase \ + st_snaptogrid62.testcase \ + st_snaptogrid63.testcase \ + st_snaptogrid64.testcase \ + st_snaptogrid65.testcase \ + st_snaptogrid6.testcase \ + st_snaptogrid7.testcase \ + st_snaptogrid8.testcase \ + st_snaptogrid9.testcase \ + st_split10.testcase \ + st_split11.testcase \ + st_split12.testcase \ + st_split13.testcase \ + st_split14.testcase \ + st_split15.testcase \ + st_split16.testcase \ + st_split17.testcase \ + st_split18.testcase \ + st_split19.testcase \ + st_split1.testcase \ + st_split20.testcase \ + st_split21.testcase \ + st_split22.testcase \ + st_split23.testcase \ + st_split24.testcase \ + st_split25.testcase \ + st_split26.testcase \ + st_split27.testcase \ + st_split28.testcase \ + st_split29.testcase \ + st_split2.testcase \ + st_split30.testcase \ + st_split31.testcase \ + st_split32.testcase \ + st_split33.testcase \ + st_split34.testcase \ + st_split35.testcase \ + st_split36.testcase \ + st_split37.testcase \ + st_split38.testcase \ + st_split39.testcase \ + st_split3.testcase \ + st_split40.testcase \ + st_split41.testcase \ + st_split42.testcase \ + st_split43.testcase \ + st_split44.testcase \ + st_split45.testcase \ + st_split46.testcase \ + st_split47.testcase \ + st_split48.testcase \ + st_split49.testcase \ + st_split4.testcase \ + st_split5.testcase \ + st_split6.testcase \ + st_split7.testcase \ + st_split8.testcase \ + st_split9.testcase \ + st_node1.testcase \ + st_node2.testcase \ + st_node3.testcase \ + st_node4.testcase \ + st_node5.testcase \ + st_node6.testcase \ + st_node7.testcase \ + st_node8.testcase \ + st_node9.testcase \ + st_self1.testcase \ + st_self2.testcase \ + st_self3.testcase \ + st_self4.testcase \ + st_self5.testcase \ + st_self6.testcase \ + st_self7.testcase \ + st_self8.testcase \ + st_self9.testcase + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/sql_stmt_lwgeom_tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/sql_stmt_lwgeom_tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance1.testcase new file mode 100644 index 0000000..1c8076e --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance1.testcase @@ -0,0 +1,8 @@ +MaxDistance - two 2D points +:memory: #use in-memory database +SELECT ST_MaxDistance(MakePoint(1, 2), MakePoint(4, 6)) +1 # rows (not including the header row) +1 # columns +ST_MaxDistance(MakePoint(1, 2), MakePoint(4, 6)) +5.0 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance10.testcase new file mode 100644 index 0000000..962550c --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance10.testcase @@ -0,0 +1,8 @@ +MaxDistance - two 3D linestring +:memory: #use in-memory database +SELECT ST_MaxDistance(GeomFromText("LINESTRINGZ(0 0 1, 10 2 5)"), GeomFromText("LINESTRINGZ(0 2 3, 10 3 4)")); +1 # rows (not including the header row) +1 # columns +ST_MaxDistance(GeomFromText("LINESTRINGZ(0 0 1, 10 2 5)"), GeomFromText("LINESTRINGZ(0 2 3, 10 3 4)")); +10.440306:6 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance2.testcase new file mode 100644 index 0000000..313f526 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance2.testcase @@ -0,0 +1,8 @@ +MaxDistance - two 2D identical points +:memory: #use in-memory database +SELECT ST_MaxDistance(MakePoint(1, 2), MakePoint(1, 2)) +1 # rows (not including the header row) +1 # columns +ST_MaxDistance(MakePoint(1, 2), MakePoint(1, 2)) +0.0 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance3.testcase new file mode 100644 index 0000000..22d2270 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance3.testcase @@ -0,0 +1,8 @@ +MaxDistance - bad blob first arg +:memory: #use in-memory database +SELECT ST_MaxDistance(zeroblob(100), MakePoint(1, 2)) +1 # rows (not including the header row) +1 # columns +ST_MaxDistance(zeroblob(100), MakePoint(1, 2)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance4.testcase new file mode 100644 index 0000000..5016871 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance4.testcase @@ -0,0 +1,8 @@ +MaxDistance - bad blob second arg +:memory: #use in-memory database +SELECT ST_MaxDistance(MakePoint(1, 2), zeroblob(100)) +1 # rows (not including the header row) +1 # columns +ST_MaxDistance(MakePoint(1, 2), zeroblob(100)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance5.testcase new file mode 100644 index 0000000..650d395 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance5.testcase @@ -0,0 +1,8 @@ +MaxDistance - non-blob first arg +:memory: #use in-memory database +SELECT ST_MaxDistance(3, MakePoint(1, 2)) +1 # rows (not including the header row) +1 # columns +ST_MaxDistance(3, MakePoint(1, 2)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance6.testcase new file mode 100644 index 0000000..336e561 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance6.testcase @@ -0,0 +1,8 @@ +MaxDistance - bad blob second arg +:memory: #use in-memory database +SELECT ST_MaxDistance(MakePoint(1, 2), "hello") +1 # rows (not including the header row) +1 # columns +ST_MaxDistance(MakePoint(1, 2), "hello") +(NULL) + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance7.testcase new file mode 100644 index 0000000..e8970f5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance7.testcase @@ -0,0 +1,8 @@ +MaxDistance - parallel 2D lines +:memory: #use in-memory database +SELECT ST_MaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) +1 # rows (not including the header row) +1 # columns +ST_MaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 2, 10 2)")) +10.198039:6 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance8.testcase new file mode 100644 index 0000000..26ae547 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance8.testcase @@ -0,0 +1,8 @@ +MaxDistance - intersecting 2D lines +:memory: #use in-memory database +SELECT ST_MaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) +1 # rows (not including the header row) +1 # columns +ST_MaxDistance(GeomFromText("LINESTRING(0 0, 10 0)"), GeomFromText("LINESTRING(0 0, 0 5)")) +11.180339:6 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance9.testcase new file mode 100644 index 0000000..7bbadd3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/maxdistance9.testcase @@ -0,0 +1,8 @@ +MaxDistance - two 3D points +:memory: #use in-memory database +SELECT ST_MaxDistance(MakePointZ(1, 2, 3), MakePointZ(4, 6, 5)); +1 # rows (not including the header row) +1 # columns +ST_MaxDistance(MakePointZ(1, 2, 3), MakePointZ(4, 6, 5)) +5.0 + diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_area10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area10.testcase new file mode 100644 index 0000000..c3addfd --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area10.testcase @@ -0,0 +1,7 @@ +ST_Area Geodesic - valid Polygon - Sphere/Equator +:memory: #use in-memory database +SELECT ST_Area(GeomFromText("POLYGON((-0.4 -0.4, -0.4 4, 4 4, 4 -0.4, -0.4 -0.4),(1 1, 1 3, 3 3, 3 1, 1 1))"), 0); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText("POLYGON((-0.4 -0.4, -0.4 4, 4 4, 4 -0.4, -0.4 -0.4),(1 1, 1 3, 3 3, 3 1, 1 1))"), 0) +189884187084.89:2 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_area11.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area11.testcase new file mode 100644 index 0000000..aae1de3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area11.testcase @@ -0,0 +1,7 @@ +ST_Area Geodesic - valid Polygon - Ellipsoid/Equator +:memory: #use in-memory database +SELECT ST_Area(GeomFromText("POLYGON((-0.4 -0.4, -0.4 4, 4 4, 4 -0.4, -0.4 -0.4),(1 1, 1 3, 3 3, 3 1, 1 1))"), 1); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText("POLYGON((-0.4 -0.4, -0.4 4, 4 4, 4 -0.4, -0.4 -0.4),(1 1, 1 3, 3 3, 3 1, 1 1))"), 1) +189884187084.89:2 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_area12.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area12.testcase new file mode 100644 index 0000000..560472d --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area12.testcase @@ -0,0 +1,7 @@ +ST_Area Geodesic - valid Polygon - Sphere +:memory: #use in-memory database +SELECT ST_Area(GeomFromText("POLYGON((50.4 50.4, 50.4 54, 54 54, 54 50.4, 50.4 50.4),(51 51, 51 53, 53 53, 53 51, 51 51))"), 0); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText("POLYGON((50.4 50.4, 50.4 54, 54 54, 54 50.4, 50.4 50.4),(51 51, 51 53, 53 53, 53 51, 51 51))"), 0) +67724290215.61:2 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_area13.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area13.testcase new file mode 100644 index 0000000..aa00bb5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area13.testcase @@ -0,0 +1,7 @@ +ST_Area Geodesic - valid Polygon - Ellipsoid +:memory: #use in-memory database +SELECT ST_Area(GeomFromText("POLYGON((50.4 50.4, 50.4 54, 54 54, 54 50.4, 50.4 50.4),(51 51, 51 53, 53 53, 53 51, 51 51))"), 1); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText("POLYGON((50.4 50.4, 50.4 54, 54 54, 54 50.4, 50.4 50.4),(51 51, 51 53, 53 53, 53 51, 51 51))"), 1) +67989516071.49:2 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_area14.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area14.testcase new file mode 100644 index 0000000..2ee2d23 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area14.testcase @@ -0,0 +1,7 @@ +ST_Area Geodesic - Point - Ellipsoid +:memory: #use in-memory database +SELECT ST_Area(GeomFromText("POINT(50.4 50.4)"), 1); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText("POINT(50.4 50.4)"), 1) +0.0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_area15.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area15.testcase new file mode 100644 index 0000000..6ad51d0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area15.testcase @@ -0,0 +1,7 @@ +ST_Area Geodesic - planar Polygon - Sphere +:memory: #use in-memory database +SELECT ST_Area(GeomFromText("POLYGON((50.4 50.4, 50.4 54, 54 54, 54 50.4, 50.4 50.4),(51 51, 51 53, 53 53, 53 51, 51 51))", 32632), 0); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText("POLYGON((50.4 50.4, 50.4 54, 54 54, 54 50.4, 50.4 50.4),(51 51, 51 53, 53 53, 53 51, 51 51))", 32632), 0) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_area16.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area16.testcase new file mode 100644 index 0000000..ebe32b9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area16.testcase @@ -0,0 +1,7 @@ +ST_Area Geodesic - DOUBLE use_ellipsoid +:memory: #use in-memory database +SELECT ST_Area(GeomFromText("POLYGON((-0.4 -0.4, -0.4 4, 4 4, 4 -0.4, -0.4 -0.4),(1 1, 1 3, 3 3, 3 1, 1 1))"), 0.5); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText("POLYGON((-0.4 -0.4, -0.4 4, 4 4, 4 -0.4, -0.4 -0.4),(1 1, 1 3, 3 3, 3 1, 1 1))"), 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_area17.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area17.testcase new file mode 100644 index 0000000..7840c78 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area17.testcase @@ -0,0 +1,7 @@ +ST_Area Geodesic - TEXT use_ellipsoid +:memory: #use in-memory database +SELECT ST_Area(GeomFromText("POLYGON((-0.4 -0.4, -0.4 4, 4 4, 4 -0.4, -0.4 -0.4),(1 1, 1 3, 3 3, 3 1, 1 1))"), 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText("POLYGON((-0.4 -0.4, -0.4 4, 4 4, 4 -0.4, -0.4 -0.4),(1 1, 1 3, 3 3, 3 1, 1 1))"), 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_area18.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area18.testcase new file mode 100644 index 0000000..10b2008 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_area18.testcase @@ -0,0 +1,7 @@ +ST_Area Geodesic - BLOB use_ellipsoid +:memory: #use in-memory database +SELECT ST_Area(GeomFromText("POLYGON((-0.4 -0.4, -0.4 4, 4 4, 4 -0.4, -0.4 -0.4),(1 1, 1 3, 3 3, 3 1, 1 1))"), zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_Area(GeomFromText("POLYGON((-0.4 -0.4, -0.4 4, 4 4, 4 -0.4, -0.4 -0.4),(1 1, 1 3, 3 3, 3 1, 1 1))"), zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d1.testcase new file mode 100644 index 0000000..766b0ea --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d1.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - NULL geometry +:memory: #use in-memory database +SELECT ST_AsX3D(NULL); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d10.testcase new file mode 100644 index 0000000..e69d34d --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d10.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 2D multipoint +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('MULTIPOINT(10 10, 11 10, 11 11)')); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('MULTIPOINT(10 10, 11 10, 11 11)')) +:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d11.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d11.testcase new file mode 100644 index 0000000..4816c3e --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d11.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D multipoint +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('MULTIPOINTZ(10 10 101, 11 10 102, 11 11 103)')); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('MULTIPOINTZ(10 10 101, 11 10 102, 11 11 103)')) +:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d12.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d12.testcase new file mode 100644 index 0000000..dea5f0f --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d12.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 2D multilinestring +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('MULTILINESTRING((10 10, 11 10, 11 11), (20 20, 21 20, 21 21))')); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('MULTILINESTRING((10 10, 11 10, 11 11), (20 20, 21 20, 21 21))')) +10 10 11 10 11 11 20 20 21 20 21 21 ' />:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d13.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d13.testcase new file mode 100644 index 0000000..3ca0693 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d13.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D multilinestring +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('MULTILINESTRINGZ((10 10 1, 11 10 2, 11 11 2), (20 20 4, 21 20 5, 21 21 6))')); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('MULTILINESTRINGZ((10 10 1, 11 10 2, 11 11 2), (20 20 4, 21 20 5, 21 21 6))')) +:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d14.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d14.testcase new file mode 100644 index 0000000..89da3df --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d14.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 2D multipolygon +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('MULTIPOLYGON(((10 10, 11 10, 11 11, 10 11, 10 10)), ((20 20, 21 20, 21 21, 20 21, 20 20)))')); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('MULTIPOLYGON(((10 10, 11 10, 11 11, 10 11, 10 10)), ((20 20, 21 20, 21 21, 20 21, 20 20)))')) +10 10 11 10 11 11 10 11 20 20 21 20 21 21 20 21 ' />:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d15.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d15.testcase new file mode 100644 index 0000000..a9ac86c --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d15.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D multipolygon +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('MULTIPOLYGONZ(((10 10 1, 11 10 2, 11 11 3, 10 11 4, 10 10 1)), ((20 20 5, 21 20 6, 21 21 7, 20 21 8, 20 20 5)))')); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('MULTIPOLYGONZ(((10 10 1, 11 10 2, 11 11 3, 10 11 4, 10 10 1)), ((20 20 5, 21 20 6, 21 21 7, 20 21 8, 20 20 5)))')) +:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d16.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d16.testcase new file mode 100644 index 0000000..9ed6856 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d16.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring NULL precision +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), NULL); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d17.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d17.testcase new file mode 100644 index 0000000..9989e48 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d17.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring TEXT precision +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d18.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d18.testcase new file mode 100644 index 0000000..76d4865 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d18.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring BLOB precision +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d19.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d19.testcase new file mode 100644 index 0000000..e4c6340 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d19.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring DOUBLE precision +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), 0.5); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)'), 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d2.testcase new file mode 100644 index 0000000..6eec944 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d2.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - text geometry +:memory: #use in-memory database +SELECT ST_AsX3D('alpha'); +1 # rows (not including the header row) +1 # columns +ST_AsX3D('alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d20.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d20.testcase new file mode 100644 index 0000000..a7406cd --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d20.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring, 6 digit precision +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6) +:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d21.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d21.testcase new file mode 100644 index 0000000..f60bdd7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d21.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring, 6 digit precision, NULL options +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, NULL); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d22.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d22.testcase new file mode 100644 index 0000000..df1b429 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d22.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring, 6 digit precision, text options +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d23.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d23.testcase new file mode 100644 index 0000000..9b501c2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d23.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring, 6 digit precision, blob options +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d24.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d24.testcase new file mode 100644 index 0000000..c2fd476 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d24.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring, 6 digit precision, double options +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, 0.5); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128)'), 6, 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d25.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d25.testcase new file mode 100644 index 0000000..e449650 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d25.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring, 6 digit precision, short SRS +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 0); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 0) +15.123457 14.765432 7.654321:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d26.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d26.testcase new file mode 100644 index 0000000..9195e9e --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d26.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring, 6 digit precision, long SRS +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1) +15.123457 14.765432 7.654321:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d27.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d27.testcase new file mode 100644 index 0000000..2690e48 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d27.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring, 6 digit precision, long SRS, NULL refid +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, NULL); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d28.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d28.testcase new file mode 100644 index 0000000..dad06f7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d28.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring, 6 digit precision, long SRS, int refid +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, 1); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d29.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d29.testcase new file mode 100644 index 0000000..8115707 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d29.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring, 6 digit precision, long SRS, BLOB refid +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d3.testcase new file mode 100644 index 0000000..bcfd760 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d3.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - int geometry +:memory: #use in-memory database +SELECT ST_AsX3D(1); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d30.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d30.testcase new file mode 100644 index 0000000..5635b22 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d30.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring, 6 digit precision, long SRS, refid +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, 'test_'); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('GEOMETRYCOLLECTIONZ(LINESTRINGZ(10.12345678 10.98765432 101.123, 11 10 102, 11.321 11.12 103.6453128), POINTZ(15.1234567 14.7654321 7.654321))', 4326), 6, 1, 'test_') +15.123457 14.765432 7.654321:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d4.testcase new file mode 100644 index 0000000..6d7ee98 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d4.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 2D point +:memory: #use in-memory database +SELECT ST_AsX3D(MakePoint(12, 21)); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(MakePoint(12, 21)) +12 21 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d5.testcase new file mode 100644 index 0000000..b1421f4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d5.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D point +:memory: #use in-memory database +SELECT ST_AsX3D(MakePointZ(12, 21, 101)); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(MakePointZ(12, 21, 101)) +12 21 101 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d6.testcase new file mode 100644 index 0000000..9771a0a --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d6.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 2D linestring +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('LINESTRING(10 10, 11 10, 11 11)')); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('LINESTRING(10 10, 11 10, 11 11)')) +:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d7.testcase new file mode 100644 index 0000000..225f12c --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d7.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D linestring +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)')); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('LINESTRINGZ(10 10 101, 11 10 102, 11 11 103)')) +:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d8.testcase new file mode 100644 index 0000000..a2aa04c --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d8.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 2D polygon +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('POLYGON((10 10, 11 10, 11 11, 10 11, 10 10))')); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('POLYGON((10 10, 11 10, 11 11, 10 11, 10 10))')) +10 10 11 10 11 11 10 11 ' />:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d9.testcase new file mode 100644 index 0000000..73c5485 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_asx3d9.testcase @@ -0,0 +1,7 @@ +ST_AsX3D - 3D polygon +:memory: #use in-memory database +SELECT ST_AsX3D(GeomFromText('POLYGONZ((10 10 101, 11 10 102, 11 11 103, 10 11 104, 10 10 101))')); +1 # rows (not including the header row) +1 # columns +ST_AsX3D(GeomFromText('POLYGONZ((10 10 101, 11 10 102, 11 11 103, 10 11 104, 10 10 101))')) +:0 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth1.testcase new file mode 100644 index 0000000..20bfdce --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth1.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - WGS84 points +:memory: #use in-memory database +SELECT ST_Azimuth(MakePoint(10.5, 10, 4326), MakePoint(11.5, 11, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(MakePoint(10.5, 10, 4326), MakePoint(11.5, 11, 4326)) +0.778630:6 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth11.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth11.testcase new file mode 100644 index 0000000..877bb36 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth11.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - text PointB (error) +:memory: #use in-memory database +SELECT ST_Azimuth(MakePoint(10, 10, 4326), 'beta'); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(MakePoint(10, 10, 4326), 'beta') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth12.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth12.testcase new file mode 100644 index 0000000..f68490e --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth12.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - NULL PointA (error) +:memory: #use in-memory database +SELECT ST_Azimuth(NULL, MakePoint(10, 10, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(NULL, MakePoint(10, 10, 4326)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth13.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth13.testcase new file mode 100644 index 0000000..b90c129 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth13.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - NULL PointB (error) +:memory: #use in-memory database +SELECT ST_Azimuth(MakePoint(10, 10, 4326), NULL); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(MakePoint(10, 10, 4326), NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth14.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth14.testcase new file mode 100644 index 0000000..0f7a266 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth14.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - MultiPoint (error) +:memory: #use in-memory database +SELECT ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('MULTIPOINT(0 0, 1 1)')); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('MULTIPOINT(0 0, 1 1)')) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth15.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth15.testcase new file mode 100644 index 0000000..9798862 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth15.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - Linestring (error) +:memory: #use in-memory database +SELECT ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('LINESTRING(0 0, 1 1)')); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('LINESTRING(0 0, 1 1)')) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth16.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth16.testcase new file mode 100644 index 0000000..bc7b638 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth16.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - Polygon (error) +:memory: #use in-memory database +SELECT ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth17.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth17.testcase new file mode 100644 index 0000000..f319efe --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth17.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - Collection (error) +:memory: #use in-memory database +SELECT ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 0, 1 1), POINT(2 2))')); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(MakePoint(10, 10, 4326), GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 0, 1 1), POINT(2 2))')) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth2.testcase new file mode 100644 index 0000000..38d0883 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth2.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - -1 SRID points +:memory: #use in-memory database +SELECT ST_Azimuth(MakePoint(123456, 12345678.5, -1), MakePoint(123457, 12345679.5, -1)); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(MakePoint(123456, 12345678.5, -1), MakePoint(123457, 12345679.5, -1)); +0.785398:6 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth3.testcase new file mode 100644 index 0000000..3f4cdcc --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth3.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - same Point +:memory: #use in-memory database +SELECT ST_Azimuth(MakePoint(10.5, 10.5, 4326), MakePoint(10.5, 10.5, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(MakePoint(10.5, 10.5, 4326), MakePoint(10.5, 10.5, 4326)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth4.testcase new file mode 100644 index 0000000..e87cdcc --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth4.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - bad blob PointA (error) +:memory: #use in-memory database +SELECT ST_Azimuth(zeroblob(4), MakePoint(10, 10, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(zeroblob(4), MakePoint(10, 10, 4326)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth5.testcase new file mode 100644 index 0000000..caeb51f --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth5.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - bad blob PointB (error) +:memory: #use in-memory database +SELECT ST_Azimuth(MakePoint(10, 10, 4326), zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(MakePoint(10, 10, 4326), zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth6.testcase new file mode 100644 index 0000000..6ac2de0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth6.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - integer PointA (error) +:memory: #use in-memory database +SELECT ST_Azimuth(1, MakePoint(10, 10, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(1, MakePoint(10, 10, 4326)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth7.testcase new file mode 100644 index 0000000..6aaa284 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth7.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - integer PointB (error) +:memory: #use in-memory database +SELECT ST_Azimuth(MakePoint(10, 10, 4326), 1); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(MakePoint(10, 10, 4326), 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth8.testcase new file mode 100644 index 0000000..90b589d --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth8.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - double PointA (error) +:memory: #use in-memory database +SELECT ST_Azimuth(1.1, MakePoint(10, 10, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(1.1, MakePoint(10, 10, 4326)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth9.testcase new file mode 100644 index 0000000..0ca222e --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_azimuth9.testcase @@ -0,0 +1,7 @@ +ST_Azimuth - double PointB (error) +:memory: #use in-memory database +SELECT ST_Azimuth(MakePoint(10, 10, 4326), 1.1); +1 # rows (not including the header row) +1 # columns +ST_Azimuth(MakePoint(10, 10, 4326), 1.1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash1.testcase new file mode 100644 index 0000000..5b05624 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash1.testcase @@ -0,0 +1,7 @@ +ST_GeoHash - NULL geometry +:memory: #use in-memory database +SELECT ST_GeoHash(NULL); +1 # rows (not including the header row) +1 # columns +ST_GeoHash(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash10.testcase new file mode 100644 index 0000000..1dec1a1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash10.testcase @@ -0,0 +1,7 @@ +ST_GeoHash - WGS84 Point, precision 6 +:memory: #use in-memory database +SELECT ST_GeoHash(MakePoint(10, -20, 4326), 6); +1 # rows (not including the header row) +1 # columns +ST_GeoHash(MakePoint(10, -20, 4326), 6) +khrn5x diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash2.testcase new file mode 100644 index 0000000..f67e93f --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash2.testcase @@ -0,0 +1,7 @@ +ST_GeoHash - text geometry +:memory: #use in-memory database +SELECT ST_GeoHash('alpha'); +1 # rows (not including the header row) +1 # columns +ST_GeoHash('alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash3.testcase new file mode 100644 index 0000000..8616d41 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash3.testcase @@ -0,0 +1,7 @@ +ST_GeoHash - int geometry +:memory: #use in-memory database +SELECT ST_GeoHash(1); +1 # rows (not including the header row) +1 # columns +ST_GeoHash(1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash4.testcase new file mode 100644 index 0000000..978062b --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash4.testcase @@ -0,0 +1,7 @@ +ST_GeoHash - not Long/Lat geometry +:memory: #use in-memory database +SELECT ST_GeoHash(MakePoint(123456, 654321)); +1 # rows (not including the header row) +1 # columns +ST_GeoHash(MakePoint(123456, 654321)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash5.testcase new file mode 100644 index 0000000..5d5eac6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash5.testcase @@ -0,0 +1,7 @@ +ST_GeoHash - zeroblob geometry +:memory: #use in-memory database +SELECT ST_GeoHash(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_GeoHash(zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash6.testcase new file mode 100644 index 0000000..926b7bf --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash6.testcase @@ -0,0 +1,7 @@ +ST_GeoHash - WGS84 Point +:memory: #use in-memory database +SELECT ST_GeoHash(MakePoint(10, -20, 4326)); +1 # rows (not including the header row) +1 # columns +ST_GeoHash(MakePoint(10, -20, 4326)) +khrn5x1g8cu2yhrn5x1g diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash7.testcase new file mode 100644 index 0000000..10ff251 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash7.testcase @@ -0,0 +1,7 @@ +ST_GeoHash - WGS84 Linestring +:memory: #use in-memory database +SELECT ST_GeoHash(GeomFromText('LINESTRING(10 -20, 10.0001 -19.9899, 10.0002 -19.9899)', 4326)); +1 # rows (not including the header row) +1 # columns +ST_GeoHash(GeomFromText('LINESTRING(10 -20, 10.0001 -19.9899, 10.0002 -19.9899)', 4326)) +khrn diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash8.testcase new file mode 100644 index 0000000..58976b5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash8.testcase @@ -0,0 +1,7 @@ +ST_GeoHash - WGS84 Polygon +:memory: #use in-memory database +SELECT ST_GeoHash(GeomFromText('POLYGON((7 10, 7.0001 10, 7.0001 10.0001, 7 10.0001, 7 10))', 4326)); +1 # rows (not including the header row) +1 # columns +ST_GeoHash(GeomFromText('POLYGON((7 10, 7.0001 10, 7.0001 10.0001, 7 10.0001, 7 10))', 4326)) +s1ubzk3 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash9.testcase new file mode 100644 index 0000000..fd0569c --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_geohash9.testcase @@ -0,0 +1,7 @@ +ST_GeoHash - WGS84 Point, invalid precision +:memory: #use in-memory database +SELECT ST_GeoHash(MakePoint(10, -20, 4326), 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_GeoHash(MakePoint(10, -20, 4326), 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid1.testcase new file mode 100644 index 0000000..20a2a2e --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid1.testcase @@ -0,0 +1,7 @@ +ST_MakeValid - Invalid BLOB (error) +:memory: #use in-memory database +SELECT ST_MakeValid(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_MakeValid(zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid2.testcase new file mode 100644 index 0000000..fdb7ef7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid2.testcase @@ -0,0 +1,7 @@ +ST_MakeValid - NULL BLOB (error) +:memory: #use in-memory database +SELECT ST_MakeValid(NULL); +1 # rows (not including the header row) +1 # columns +ST_MakeValid(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid3.testcase new file mode 100644 index 0000000..88b61dc --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid3.testcase @@ -0,0 +1,7 @@ +ST_MakeValid - text (error) +:memory: #use in-memory database +SELECT ST_MakeValid('alpha'); +1 # rows (not including the header row) +1 # columns +ST_MakeValid('alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid4.testcase new file mode 100644 index 0000000..e064db6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid4.testcase @@ -0,0 +1,7 @@ +ST_MakeValid - already valid MultiPolygon +:memory: #use in-memory database +SELECT ST_IsValid(ST_MakeValid(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))'))); +1 # rows (not including the header row) +1 # columns +ST_IsValid(ST_MakeValid(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))'))) +1 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid5.testcase new file mode 100644 index 0000000..05effbb --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid5.testcase @@ -0,0 +1,7 @@ +ST_MakeValid - already valid Polygon +:memory: #use in-memory database +SELECT ST_IsValid(ST_MakeValid(GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'))); +1 # rows (not including the header row) +1 # columns +ST_IsValid(ST_MakeValid(GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))'))) +1 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid6.testcase new file mode 100644 index 0000000..c06033f --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid6.testcase @@ -0,0 +1,7 @@ +ST_MakeValid - invalid MultiPolygon +:memory: #use in-memory database +SELECT ST_IsValid(ST_MakeValid(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 0 1, 1 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))'))); +1 # rows (not including the header row) +1 # columns +ST_IsValid(ST_MakeValid(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 0 1, 1 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))'))) +1 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid7.testcase new file mode 100644 index 0000000..a730185 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid7.testcase @@ -0,0 +1,7 @@ +ST_MakeValid - invalid Polygon +:memory: #use in-memory database +SELECT ST_IsValid(ST_MakeValid(GeomFromText('POLYGON((0 0, 1 0, 0 1, 1 1, 0 0))'))); +1 # rows (not including the header row) +1 # columns +ST_IsValid(ST_MakeValid(GeomFromText('POLYGON((0 0, 1 0, 0 1, 1 1, 0 0))'))) +1 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid8.testcase new file mode 100644 index 0000000..43a5def --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevalid8.testcase @@ -0,0 +1,11 @@ +ST_MakeValid - invalid MultiPolygon [discarded items] +:memory: #use in-memory database +SELECT IsValid(v.v), NumGeometries(v.v), GeometryType(v.v) FROM (SELECT MakeValid(g.g) AS v FROM (SELECT GeomFromText ('MULTIPOLYGON(((0 0, 1 0, 1 2, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 2.5, 2.5 2.5, 3 2.5, 3 3, 2 3, 2 2)))') AS g) AS g) AS v; +1 # rows (not including the header row) +3 # columns +IsValid(v.v) +NumGeometries(v.v) +GeometryType(v.v) +1 +2 +MULTIPOLYGON diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded1.testcase new file mode 100644 index 0000000..6308e6b --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded1.testcase @@ -0,0 +1,7 @@ +ST_MakeValidDiscarded - Invalid BLOB (error) +:memory: #use in-memory database +SELECT ST_MakeValidDiscarded(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_MakeValidDiscarded(zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded2.testcase new file mode 100644 index 0000000..724e155 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded2.testcase @@ -0,0 +1,7 @@ +ST_MakeValidDiscarded - NULL BLOB (error) +:memory: #use in-memory database +SELECT ST_MakeValidDiscarded(NULL); +1 # rows (not including the header row) +1 # columns +ST_MakeValidDiscarded(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded3.testcase new file mode 100644 index 0000000..9bbfde2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded3.testcase @@ -0,0 +1,7 @@ +ST_MakeValidDiscarded - text (error) +:memory: #use in-memory database +SELECT ST_MakeValidDiscarded('alpha'); +1 # rows (not including the header row) +1 # columns +ST_MakeValidDiscarded('alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded4.testcase new file mode 100644 index 0000000..1ab5ad0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded4.testcase @@ -0,0 +1,7 @@ +ST_MakeValid - already valid MultiPolygon +:memory: #use in-memory database +SELECT ST_MakeValidDiscarded(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))')); +1 # rows (not including the header row) +1 # columns +ST_MakeValidDiscarded(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))')) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded5.testcase new file mode 100644 index 0000000..e521491 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded5.testcase @@ -0,0 +1,7 @@ +ST_MakeValidDiscarded - already valid Polygon +:memory: #use in-memory database +SELECT ST_MakeValidDiscarded(GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')); +1 # rows (not including the header row) +1 # columns +ST_MakeValidDiscarded(GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded6.testcase new file mode 100644 index 0000000..c06033f --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded6.testcase @@ -0,0 +1,7 @@ +ST_MakeValid - invalid MultiPolygon +:memory: #use in-memory database +SELECT ST_IsValid(ST_MakeValid(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 0 1, 1 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))'))); +1 # rows (not including the header row) +1 # columns +ST_IsValid(ST_MakeValid(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 0 1, 1 1, 0 0)), ((2 2, 3 2, 3 3, 2 3, 2 2)))'))) +1 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded7.testcase new file mode 100644 index 0000000..a730185 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded7.testcase @@ -0,0 +1,7 @@ +ST_MakeValid - invalid Polygon +:memory: #use in-memory database +SELECT ST_IsValid(ST_MakeValid(GeomFromText('POLYGON((0 0, 1 0, 0 1, 1 1, 0 0))'))); +1 # rows (not including the header row) +1 # columns +ST_IsValid(ST_MakeValid(GeomFromText('POLYGON((0 0, 1 0, 0 1, 1 1, 0 0))'))) +1 diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded8.testcase new file mode 100644 index 0000000..c7ca050 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_makevaliddiscarded8.testcase @@ -0,0 +1,11 @@ +ST_MakeValidDiscarded - invalid MultiPolygon [discarded items] +:memory: #use in-memory database +SELECT IsValid(v.v), NumGeometries(v.v), GeometryType(v.v) FROM (SELECT MakeValidDiscarded(g.g) AS v FROM (SELECT GeomFromText ('MULTIPOLYGON(((0 0, 1 0, 1 2, 1 1, 0 1, 0 0)), ((2 2, 3 2, 3 2.5, 2.5 2.5, 3 2.5, 3 3, 2 3, 2 2)))') AS g) AS g) AS v; +1 # rows (not including the header row) +3 # columns +IsValid(v.v) +NumGeometries(v.v) +GeometryType(v.v) +1 +2 +MULTILINESTRING diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_node1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node1.testcase new file mode 100644 index 0000000..4f8afee --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node1.testcase @@ -0,0 +1,7 @@ +ST_Node - Invalid BLOB input (error) +:memory: #use in-memory database +SELECT ST_Node(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_Node(zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_node2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node2.testcase new file mode 100644 index 0000000..bc49dad --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node2.testcase @@ -0,0 +1,7 @@ +ST_Node - Invalid INT input (error) +:memory: #use in-memory database +SELECT ST_Node(1); +1 # rows (not including the header row) +1 # columns +ST_Node(1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_node3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node3.testcase new file mode 100644 index 0000000..d4942c0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node3.testcase @@ -0,0 +1,7 @@ +ST_Node - Invalid DOUBLE input (error) +:memory: #use in-memory database +SELECT ST_Node(1.1); +1 # rows (not including the header row) +1 # columns +ST_Node(1.1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_node4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node4.testcase new file mode 100644 index 0000000..970dd76 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node4.testcase @@ -0,0 +1,7 @@ +ST_Node - Invalid TEXT input (error) +:memory: #use in-memory database +SELECT ST_Node('alpha'); +1 # rows (not including the header row) +1 # columns +ST_Node('alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_node5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node5.testcase new file mode 100644 index 0000000..db599f8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node5.testcase @@ -0,0 +1,7 @@ +ST_Node - Valid 2D input +:memory: #use in-memory database +SELECT ST_AsText(ST_Node(ST_GeomFromText('LINESTRING(0 0, 10 10, 0 10, 10 0)'))); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Node(ST_GeomFromText('LINESTRING(0 0, 10 10, 0 10, 10 0)'))) +MULTILINESTRING((0 0, 5 5), (5 5, 10 10, 0 10, 5 5), (5 5, 10 0)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_node6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node6.testcase new file mode 100644 index 0000000..e785bdd --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node6.testcase @@ -0,0 +1,7 @@ +ST_Node - Valid 3D input +:memory: #use in-memory database +SELECT ST_AsText(ST_Node(ST_GeomFromText('LINESTRINGZ(0 0 0, 10 10 10, 0 10 5, 10 0 3)'))); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Node(ST_GeomFromText('LINESTRINGZ(0 0 0, 10 10 10, 0 10 5, 10 0 3)'))) +MULTILINESTRING Z((0 0 0, 5 5 4.5), (5 5 4.5, 10 10 10, 0 10 5, 5 5 4.5), (5 5 4.5, 10 0 3)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_node7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node7.testcase new file mode 100644 index 0000000..04fcd4d --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node7.testcase @@ -0,0 +1,7 @@ +ST_Node - Valid MultiLinestring 2D input +:memory: #use in-memory database +SELECT ST_AsText(ST_Node(ST_GeomFromText('MULTILINESTRING((0 0, 10 10, 0 10, 10 0),(10 8, 10 12))'))); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Node(ST_GeomFromText('MULTILINESTRING((0 0, 10 10, 0 10, 10 0),(10 8, 10 12))'))) +MULTILINESTRING((0 0, 5 5), (5 5, 10 10), (10 10, 0 10, 5 5), (5 5, 10 0), (10 8, 10 10), (10 10, 10 12)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_node8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node8.testcase new file mode 100644 index 0000000..23465d2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node8.testcase @@ -0,0 +1,7 @@ +ST_Node - Valid MultiLinestring 3D input +:memory: #use in-memory database +SELECT ST_AsText(ST_Node(ST_GeomFromText('MULTILINESTRINGZ((0 0 0, 10 10 10, 0 10 5, 10 0 3),(10 8 4, 10 12 5))'))); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Node(ST_GeomFromText('MULTILINESTRINGZ((0 0 0, 10 10 10, 0 10 5, 10 0 3),(10 8 4, 10 12 5))'))) +MULTILINESTRING Z((0 0 0, 5 5 4.5), (5 5 4.5, 10 10 10), (10 10 10, 0 10 5, 5 5 4.5), (5 5 4.5, 10 0 3), (10 8 4, 10 10 10), (10 10 10, 10 12 5)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_node9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node9.testcase new file mode 100644 index 0000000..4ba22c2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_node9.testcase @@ -0,0 +1,7 @@ +ST_Node - Invalid MultiPoint 3D input +:memory: #use in-memory database +SELECT ST_AsText(ST_Node(ST_GeomFromText('MULTIPOINTZ(0 0 0, 10 10 10, 0 10 5, 10 0 3)'))); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Node(ST_GeomFromText('MULTIPOINTZ(0 0 0, 10 10 10, 0 10 5, 10 0 3)'))) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_project1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project1.testcase new file mode 100644 index 0000000..5f54108 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project1.testcase @@ -0,0 +1,7 @@ +ST_Project - NULL start Point +:memory: #use in-memory database +SELECT ST_Project(NULL, 100000, Radians(45)); +1 # rows (not including the header row) +1 # columns +ST_Project(NULL, 100000, Radians(45)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_project10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project10.testcase new file mode 100644 index 0000000..7771d30 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project10.testcase @@ -0,0 +1,7 @@ +ST_Project - BLOB distance +:memory: #use in-memory database +SELECT ST_Project(GeomFromText('POINT(0 0)', 4326), zeroblob(4), Radians(45)); +1 # rows (not including the header row) +1 # columns +ST_Project(GeomFromText('POINT(0 0)', 4326), zeroblob(4), Radians(45)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_project11.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project11.testcase new file mode 100644 index 0000000..ef69472 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project11.testcase @@ -0,0 +1,7 @@ +ST_Project - NULL bearing +:memory: #use in-memory database +SELECT ST_Project(GeomFromText('POINT(0 0)', 4326), 100000, NULL); +1 # rows (not including the header row) +1 # columns +ST_Project(GeomFromText('POINT(0 0)', 4326), 100000, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_project12.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project12.testcase new file mode 100644 index 0000000..ab464ca --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project12.testcase @@ -0,0 +1,7 @@ +ST_Project - TEXT bearing +:memory: #use in-memory database +SELECT ST_Project(GeomFromText('POINT(0 0)', 4326), 100000, 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_Project(GeomFromText('POINT(0 0)', 4326), 100000, 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_project13.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project13.testcase new file mode 100644 index 0000000..943d435 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project13.testcase @@ -0,0 +1,7 @@ +ST_Project - BLOB bearing +:memory: #use in-memory database +SELECT ST_Project(GeomFromText('POINT(0 0)', 4326), 100000, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_Project(GeomFromText('POINT(0 0)', 4326), 100000, zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_project14.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project14.testcase new file mode 100644 index 0000000..8d0a38c --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project14.testcase @@ -0,0 +1,7 @@ +ST_Project - valid +:memory: #use in-memory database +SELECT AsText(ST_Project(GeomFromText('POINT(0 0)'), 100000, Radians(45))); +1 # rows (not including the header row) +1 # columns +AsText(ST_Project(GeomFromText('POINT(0 0)'), 100000, Radians(45))) +POINT(0.635231 0.639472) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_project2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project2.testcase new file mode 100644 index 0000000..e36c260 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project2.testcase @@ -0,0 +1,7 @@ +ST_Project - INTEGER start Point +:memory: #use in-memory database +SELECT ST_Project(1, 100000, Radians(45)); +1 # rows (not including the header row) +1 # columns +ST_Project(1, 100000, Radians(45)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_project3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project3.testcase new file mode 100644 index 0000000..e0a2742 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project3.testcase @@ -0,0 +1,7 @@ +ST_Project - DOUBLE start Point +:memory: #use in-memory database +SELECT ST_Project(1.1, 100000, Radians(45)); +1 # rows (not including the header row) +1 # columns +ST_Project(1.1, 100000, Radians(45)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_project4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project4.testcase new file mode 100644 index 0000000..e17b051 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project4.testcase @@ -0,0 +1,7 @@ +ST_Project - TEXT start Point +:memory: #use in-memory database +SELECT ST_Project('alpha', 100000, Radians(45)); +1 # rows (not including the header row) +1 # columns +ST_Project('alpha', 100000, Radians(45)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_project5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project5.testcase new file mode 100644 index 0000000..ea22322 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project5.testcase @@ -0,0 +1,7 @@ +ST_Project - invalid BLOB start Point +:memory: #use in-memory database +SELECT ST_Project(zeroblob(4), 100000, Radians(45)); +1 # rows (not including the header row) +1 # columns +ST_Project(zeroblob(4), 100000, Radians(45)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_project6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project6.testcase new file mode 100644 index 0000000..be86b1f --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project6.testcase @@ -0,0 +1,7 @@ +ST_Project - start Point (not long/lat) +:memory: #use in-memory database +SELECT ST_Project(GeomFromText('POINT(0 0)', 32632), 100000, Radians(45)); +1 # rows (not including the header row) +1 # columns +ST_Project(GeomFromText('POINT(0 0)', 32632), 100000, Radians(45)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_project7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project7.testcase new file mode 100644 index 0000000..1f69864 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project7.testcase @@ -0,0 +1,7 @@ +ST_Project - start Point (actually: Linestring) +:memory: #use in-memory database +SELECT ST_Project(GeomFromText('LINESTRING(0 0, 1 1)', 4326), 100000, Radians(45)); +1 # rows (not including the header row) +1 # columns +ST_Project(GeomFromText('LINESTRING(0 0, 1 1)', 4326), 100000, Radians(45)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_project8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project8.testcase new file mode 100644 index 0000000..233d09f --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project8.testcase @@ -0,0 +1,7 @@ +ST_Project - NULL distance +:memory: #use in-memory database +SELECT ST_Project(GeomFromText('POINT(0 0)', 4326), NULL, Radians(45)); +1 # rows (not including the header row) +1 # columns +ST_Project(GeomFromText('POINT(0 0)', 4326), NULL, Radians(45)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_project9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project9.testcase new file mode 100644 index 0000000..30d9aab --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_project9.testcase @@ -0,0 +1,7 @@ +ST_Project - TEXT distance +:memory: #use in-memory database +SELECT ST_Project(GeomFromText('POINT(0 0)', 4326), 'alpha', Radians(45)); +1 # rows (not including the header row) +1 # columns +ST_Project(GeomFromText('POINT(0 0)', 4326), 'alpha', Radians(45)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize1.testcase new file mode 100644 index 0000000..5de9c42 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize1.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Collection +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 1 2), POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 1 2), POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)) +GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 1 1.5, 1 2), POLYGON((3 3, 3.5 3, 4 3, 4.5 3, 5 3, 5.5 3, 6 3, 6 3.5, 6 4, 6 4.5, 6 5, 6 5.5, 6 6, 5.5 6, 5 6, 4.5 6, 4 6, 3.5 6, 3 6, 3 5.5, 3 5, 3 4.5, 3 4, 3 3.5, 3 3), (4 4, 4.5 4, 5 4, 5 4.5, 5 5, 5 4.5, 5 4, 4.5 4, 4 4))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize10.testcase new file mode 100644 index 0000000..88983a0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize10.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - NULL BLOB (error) +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(NULL, 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(NULL, 0.5)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize11.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize11.testcase new file mode 100644 index 0000000..b38ccca --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize11.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Collection Z +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(0 0 10), LINESTRINGZ(1 1 10, 1 2 11), POLYGONZ((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10)))'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(0 0 10), LINESTRINGZ(1 1 10, 1 2 11), POLYGONZ((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10)))'), 0.5)) +GEOMETRYCOLLECTION Z(POINT Z(0 0 10), LINESTRING Z(1 1 10, 1 1.5 10.5, 1 2 11), POLYGON Z((3 3 10, 3.5 3 10.166667, 4 3 10.333333, 4.5 3 10.5, 5 3 10.666667, 5.5 3 10.833333, 6 3 11, 6 3.5 11.166667, 6 4 11.333333, 6 4.5 11.5, 6 5 11.666667, 6 5.5 11.833333, 6 6 12, 5.5 6 12.166667, 5 6 12.333333, 4.5 6 12.5, 4 6 12.666667, 3.5 6 12.833333, 3 6 13, 3 5.5 12.5, 3 5 12, 3 4.5 11.5, 3 4 11, 3 3.5 10.5, 3 3 10), (4 4 10, 4.5 4 10.5, 5 4 11, 5 4.5 11.5, 5 5 12, 5 4.5 12.5, 5 4 13, 4.5 4 11.5, 4 4 10))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize12.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize12.testcase new file mode 100644 index 0000000..0275ee7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize12.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Collection M +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTIONM(POINTM(0 0 10), LINESTRINGM(1 1 10, 1 2 11), POLYGONM((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10)))'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTIONM(POINTM(0 0 10), LINESTRINGM(1 1 10, 1 2 11), POLYGONM((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10)))'), 0.5)) +GEOMETRYCOLLECTION M(POINT M(0 0 10), LINESTRING M(1 1 10, 1 1.5 10.5, 1 2 11), POLYGON M((3 3 10, 3.5 3 10.166667, 4 3 10.333333, 4.5 3 10.5, 5 3 10.666667, 5.5 3 10.833333, 6 3 11, 6 3.5 11.166667, 6 4 11.333333, 6 4.5 11.5, 6 5 11.666667, 6 5.5 11.833333, 6 6 12, 5.5 6 12.166667, 5 6 12.333333, 4.5 6 12.5, 4 6 12.666667, 3.5 6 12.833333, 3 6 13, 3 5.5 12.5, 3 5 12, 3 4.5 11.5, 3 4 11, 3 3.5 10.5, 3 3 10), (4 4 10, 4.5 4 10.5, 5 4 11, 5 4.5 11.5, 5 5 12, 5 4.5 12.5, 5 4 13, 4.5 4 11.5, 4 4 10))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize13.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize13.testcase new file mode 100644 index 0000000..cb0ce95 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize13.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Collection ZM +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(0 0 10 11), LINESTRINGZM(1 1 10 11, 1 2 11 13), POLYGONZM((3 3 10 11, 6 3 11 12, 6 6 12 13, 3 6 13 14, 3 3 10 11), (4 4 10 11, 5 4 11 12, 5 5 12 13, 5 4 13 14, 4 4 10 11)))'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(0 0 10 11), LINESTRINGZM(1 1 10 11, 1 2 11 13), POLYGONZM((3 3 10 11, 6 3 11 12, 6 6 12 13, 3 6 13 14, 3 3 10 11), (4 4 10 11, 5 4 11 12, 5 5 12 13, 5 4 13 14, 4 4 10 11)))'), 0.5)) +GEOMETRYCOLLECTION ZM(POINT ZM(0 0 10 11), LINESTRING ZM(1 1 10 11, 1 1.5 10.5 12, 1 2 11 13), POLYGON ZM((3 3 10 11, 3.5 3 10.166667 11.166667, 4 3 10.333333 11.333333, 4.5 3 10.5 11.5, 5 3 10.666667 11.666667, 5.5 3 10.833333 11.833333, 6 3 11 12, 6 3.5 11.166667 12.166667, 6 4 11.333333 12.333333, 6 4.5 11.5 12.5, 6 5 11.666667 12.666667, 6 5.5 11.833333 12.833333, 6 6 12 13, 5.5 6 12.166667 13.166667, 5 6 12.333333 13.333333, 4.5 6 12.5 13.5, 4 6 12.666667 13.666667, 3.5 6 12.833333 13.833333, 3 6 13 14, 3 5.5 12.5 13.5, 3 5 12 13, 3 4.5 11.5 12.5, 3 4 11 12, 3 3.5 10.5 11.5, 3 3 10 11), (4 4 10 11, 4.5 4 10.5 11.5, 5 4 11 12, 5 4.5 11.5 12.5, 5 5 12 13, 5 4.5 12.5 13.5, 5 4 13 14, 4.5 4 11.5 12.5, 4 4 10 11))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize14.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize14.testcase new file mode 100644 index 0000000..ff8068d --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize14.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Point +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('POINT(0 0)'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('POINT(0 0)'), 0.5)) +POINT(0 0) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize15.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize15.testcase new file mode 100644 index 0000000..9286243 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize15.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Point Z +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('POINTZ(0 0 10)'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('POINTZ(0 0 10)'), 0.5)) +POINT Z(0 0 10) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize16.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize16.testcase new file mode 100644 index 0000000..42430e8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize16.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Point M +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('POINTM(0 0 10)'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('POINTM(0 0 10)'), 0.5)) +POINT M(0 0 10) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize17.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize17.testcase new file mode 100644 index 0000000..6832861 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize17.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Point ZM +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('POINTZM(0 0 10 11)'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('POINTZM(0 0 10 11)'), 0.5)) +POINT ZM(0 0 10 11) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize18.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize18.testcase new file mode 100644 index 0000000..cd94868 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize18.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Linestring +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('LINESTRING(1 1, 1 2)'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('LINESTRING(1 1, 1 2)'), 0.5)) +LINESTRING(1 1, 1 1.5, 1 2) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize19.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize19.testcase new file mode 100644 index 0000000..fc3e9d5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize19.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Linestring Z +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('LINESTRINGZ(1 1 10, 1 2 11)'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('LINESTRINGZ(1 1 10, 1 2 11)'), 0.5)) +LINESTRING Z(1 1 10, 1 1.5 10.5, 1 2 11) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize2.testcase new file mode 100644 index 0000000..4123696 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize2.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - MultiPoint +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('MULTIPOINT(0 1, 2 3, 4 5)'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('MULTIPOINT(0 1, 2 3, 4 5)'), 0.5)) +MULTIPOINT(0 1, 2 3, 4 5) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize20.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize20.testcase new file mode 100644 index 0000000..5c834bc --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize20.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Linestring M +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('LINESTRINGM(1 1 10, 1 2 11)'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('LINESTRINGM(1 1 10, 1 2 11)'), 0.5)) +LINESTRING M(1 1 10, 1 1.5 10.5, 1 2 11) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize21.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize21.testcase new file mode 100644 index 0000000..cc50ab8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize21.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Linestring ZM +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('LINESTRINGZM(1 1 10 11, 1 2 11 13)'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('LINESTRINGZM(1 1 10 11, 1 2 11 13)'), 0.5)) +LINESTRING ZM(1 1 10 11, 1 1.5 10.5 12, 1 2 11 13) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize22.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize22.testcase new file mode 100644 index 0000000..b75339c --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize22.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Polygon +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4))'), 0.5)); +1 # rows (not including the header row) +1 # column +ST_AsText(ST_Segmentize(GeomFromText('POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4))'), 0.5)) +POLYGON((3 3, 3.5 3, 4 3, 4.5 3, 5 3, 5.5 3, 6 3, 6 3.5, 6 4, 6 4.5, 6 5, 6 5.5, 6 6, 5.5 6, 5 6, 4.5 6, 4 6, 3.5 6, 3 6, 3 5.5, 3 5, 3 4.5, 3 4, 3 3.5, 3 3), (4 4, 4.5 4, 5 4, 5 4.5, 5 5, 5 4.5, 5 4, 4.5 4, 4 4)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize23.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize23.testcase new file mode 100644 index 0000000..8ddc8a6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize23.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Polygon Z +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('POLYGONZ((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10))'), 0.5)); +1 # rows (not including the header row) +1 # column +ST_AsText(ST_Segmentize(GeomFromText('POLYGONZ((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10))'), 0.5)) +POLYGON Z((3 3 10, 3.5 3 10.166667, 4 3 10.333333, 4.5 3 10.5, 5 3 10.666667, 5.5 3 10.833333, 6 3 11, 6 3.5 11.166667, 6 4 11.333333, 6 4.5 11.5, 6 5 11.666667, 6 5.5 11.833333, 6 6 12, 5.5 6 12.166667, 5 6 12.333333, 4.5 6 12.5, 4 6 12.666667, 3.5 6 12.833333, 3 6 13, 3 5.5 12.5, 3 5 12, 3 4.5 11.5, 3 4 11, 3 3.5 10.5, 3 3 10), (4 4 10, 4.5 4 10.5, 5 4 11, 5 4.5 11.5, 5 5 12, 5 4.5 12.5, 5 4 13, 4.5 4 11.5, 4 4 10)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize24.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize24.testcase new file mode 100644 index 0000000..dec2828 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize24.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Polygon M +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('POLYGONM((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10))'), 0.5)); +1 # rows (not including the header row) +1 # column +ST_AsText(ST_Segmentize(GeomFromText('POLYGONM((3 3 10, 6 3 11, 6 6 12, 3 6 13, 3 3 10), (4 4 10, 5 4 11, 5 5 12, 5 4 13, 4 4 10))'), 0.5)) +POLYGON M((3 3 10, 3.5 3 10.166667, 4 3 10.333333, 4.5 3 10.5, 5 3 10.666667, 5.5 3 10.833333, 6 3 11, 6 3.5 11.166667, 6 4 11.333333, 6 4.5 11.5, 6 5 11.666667, 6 5.5 11.833333, 6 6 12, 5.5 6 12.166667, 5 6 12.333333, 4.5 6 12.5, 4 6 12.666667, 3.5 6 12.833333, 3 6 13, 3 5.5 12.5, 3 5 12, 3 4.5 11.5, 3 4 11, 3 3.5 10.5, 3 3 10), (4 4 10, 4.5 4 10.5, 5 4 11, 5 4.5 11.5, 5 5 12, 5 4.5 12.5, 5 4 13, 4.5 4 11.5, 4 4 10)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize25.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize25.testcase new file mode 100644 index 0000000..d420191 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize25.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Polygon ZM +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('POLYGONZM((3 3 10 11, 6 3 11 12, 6 6 12 13, 3 6 13 14, 3 3 10 11), (4 4 10 11, 5 4 11 12, 5 5 12 13, 5 4 13 14, 4 4 10 11))'), 0.5)); +1 # rows (not including the header row) +1 # column +ST_AsText(ST_Segmentize(GeomFromText('POLYGONZM((3 3 10 11, 6 3 11 12, 6 6 12 13, 3 6 13 14, 3 3 10 11), (4 4 10 11, 5 4 11 12, 5 5 12 13, 5 4 13 14, 4 4 10 11))'), 0.5)) +POLYGON ZM((3 3 10 11, 3.5 3 10.166667 11.166667, 4 3 10.333333 11.333333, 4.5 3 10.5 11.5, 5 3 10.666667 11.666667, 5.5 3 10.833333 11.833333, 6 3 11 12, 6 3.5 11.166667 12.166667, 6 4 11.333333 12.333333, 6 4.5 11.5 12.5, 6 5 11.666667 12.666667, 6 5.5 11.833333 12.833333, 6 6 12 13, 5.5 6 12.166667 13.166667, 5 6 12.333333 13.333333, 4.5 6 12.5 13.5, 4 6 12.666667 13.666667, 3.5 6 12.833333 13.833333, 3 6 13 14, 3 5.5 12.5 13.5, 3 5 12 13, 3 4.5 11.5 12.5, 3 4 11 12, 3 3.5 10.5 11.5, 3 3 10 11), (4 4 10 11, 4.5 4 10.5 11.5, 5 4 11 12, 5 4.5 11.5 12.5, 5 5 12 13, 5 4.5 12.5 13.5, 5 4 13 14, 4.5 4 11.5 12.5, 4 4 10 11)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize26.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize26.testcase new file mode 100644 index 0000000..abb53ba --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize26.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Collection - single Point +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0))'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0))'), 0.5)) +GEOMETRYCOLLECTION(POINT(0 0)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize27.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize27.testcase new file mode 100644 index 0000000..bc36d19 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize27.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Collection - single Linestring +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 1 2))'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 1 2))'), 0.5)) +GEOMETRYCOLLECTION(LINESTRING(1 1, 1 1.5, 1 2)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize28.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize28.testcase new file mode 100644 index 0000000..88badd4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize28.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Collection - single Polygon +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)) +GEOMETRYCOLLECTION(POLYGON((3 3, 3.5 3, 4 3, 4.5 3, 5 3, 5.5 3, 6 3, 6 3.5, 6 4, 6 4.5, 6 5, 6 5.5, 6 6, 5.5 6, 5 6, 4.5 6, 4 6, 3.5 6, 3 6, 3 5.5, 3 5, 3 4.5, 3 4, 3 3.5, 3 3), (4 4, 4.5 4, 5 4, 5 4.5, 5 5, 5 4.5, 5 4, 4.5 4, 4 4))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize29.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize29.testcase new file mode 100644 index 0000000..83c9d63 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize29.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Collection - three Points +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POINT(1 1), POINT(2 2))'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), POINT(1 1), POINT(2 2))'), 0.5)) +GEOMETRYCOLLECTION(POINT(0 0), POINT(1 1), POINT(2 2)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize3.testcase new file mode 100644 index 0000000..ffcf4fb --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize3.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Multilinestring +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('MULTILINESTRING((1 1, 1 2), (3 3, 4 3))'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('MULTILINESTRING((1 1, 1 2), (3 3, 4 3))'), 0.5)) +MULTILINESTRING((1 1, 1 1.5, 1 2), (3 3, 3.5 3, 4 3)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize30.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize30.testcase new file mode 100644 index 0000000..5ed4323 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize30.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Collection - two Linestrings +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 1 2), LINESTRING(3 3, 4 3))'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(1 1, 1 2), LINESTRING(3 3, 4 3))'), 0.5)) +GEOMETRYCOLLECTION(LINESTRING(1 1, 1 1.5, 1 2), LINESTRING(3 3, 3.5 3, 4 3)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize31.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize31.testcase new file mode 100644 index 0000000..9d5dcb4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize31.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Collection - two Polygons +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)), POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('GEOMETRYCOLLECTION(POLYGON((0 0, 1 0, 1 1, 0 1, 0 0)), POLYGON((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)) +GEOMETRYCOLLECTION(POLYGON((0 0, 0.5 0, 1 0, 1 0.5, 1 1, 0.5 1, 0 1, 0 0.5, 0 0)), POLYGON((3 3, 3.5 3, 4 3, 4.5 3, 5 3, 5.5 3, 6 3, 6 3.5, 6 4, 6 4.5, 6 5, 6 5.5, 6 6, 5.5 6, 5 6, 4.5 6, 4 6, 3.5 6, 3 6, 3 5.5, 3 5, 3 4.5, 3 4, 3 3.5, 3 3), (4 4, 4.5 4, 5 4, 5 4.5, 5 5, 5 4.5, 5 4, 4.5 4, 4 4))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize4.testcase new file mode 100644 index 0000000..11a5133 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize4.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Multipolygon +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((3 3, 6 3, 6 6, 3 6, 3 3), (4 4, 5 4, 5 5, 5 4, 4 4)))'), 0.5)) +MULTIPOLYGON(((0 0, 0.5 0, 1 0, 1 0.5, 1 1, 0.5 1, 0 1, 0 0.5, 0 0)), ((3 3, 3.5 3, 4 3, 4.5 3, 5 3, 5.5 3, 6 3, 6 3.5, 6 4, 6 4.5, 6 5, 6 5.5, 6 6, 5.5 6, 5 6, 4.5 6, 4 6, 3.5 6, 3 6, 3 5.5, 3 5, 3 4.5, 3 4, 3 3.5, 3 3), (4 4, 4.5 4, 5 4, 5 4.5, 5 5, 5 4.5, 5 4, 4.5 4, 4 4))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize5.testcase new file mode 100644 index 0000000..2b1d41e --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize5.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - Invalid BLOB (error) +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(zeroblob(4), 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(zeroblob(4), 0.5)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize6.testcase new file mode 100644 index 0000000..88983a0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize6.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - NULL BLOB (error) +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(NULL, 0.5)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(NULL, 0.5)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize7.testcase new file mode 100644 index 0000000..7df20d5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize7.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - NULL distance (error) +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('LINESTRING(1 1, 2 2)'), NULL)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('LINESTRING(1 1, 2 2)'), NULL)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize8.testcase new file mode 100644 index 0000000..1713786 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize8.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - text distance (error) +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize(GeomFromText('LINESTRING(1 1, 2 2)'), 'alpha')); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize(GeomFromText('LINESTRING(1 1, 2 2)'), 'alpha')) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize9.testcase new file mode 100644 index 0000000..9983432 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_segmentize9.testcase @@ -0,0 +1,7 @@ +ST_Segmentize - text geometry (error) +:memory: #use in-memory database +SELECT ST_AsText(ST_Segmentize('alpha', 0)); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_Segmentize('alpha', 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_self1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self1.testcase new file mode 100644 index 0000000..22facbb --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self1.testcase @@ -0,0 +1,7 @@ +ST_SelfIntersections - Invalid BLOB input (error) +:memory: #use in-memory database +SELECT ST_SelfIntersections(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_SelfIntersections(zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_self2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self2.testcase new file mode 100644 index 0000000..97a41b7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self2.testcase @@ -0,0 +1,7 @@ +ST_SelfIntersections - Invalid INT input (error) +:memory: #use in-memory database +SELECT ST_SelfIntersections(1); +1 # rows (not including the header row) +1 # columns +ST_SelfIntersections(1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_self3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self3.testcase new file mode 100644 index 0000000..1396e9f --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self3.testcase @@ -0,0 +1,7 @@ +ST_SelfIntersections - Invalid DOUBLE input (error) +:memory: #use in-memory database +SELECT ST_SelfIntersections(1.1); +1 # rows (not including the header row) +1 # columns +ST_SelfIntersections(1.1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_self4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self4.testcase new file mode 100644 index 0000000..fda1671 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self4.testcase @@ -0,0 +1,7 @@ +ST_SelfIntersections - Invalid TEXT input (error) +:memory: #use in-memory database +SELECT ST_SelfIntersections('alpha'); +1 # rows (not including the header row) +1 # columns +ST_SelfIntersections('alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_self5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self5.testcase new file mode 100644 index 0000000..e7c03d3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self5.testcase @@ -0,0 +1,7 @@ +ST_SelfIntersections - Valid 2D input +:memory: #use in-memory database +SELECT ST_AsText(ST_SelfIntersections(ST_GeomFromText('LINESTRING(0 0, 10 10, 0 10, 10 0)'))); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_SelfIntersections(ST_GeomFromText('LINESTRING(0 0, 10 10, 0 10, 10 0)'))) +MULTIPOINT(5 5) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_self6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self6.testcase new file mode 100644 index 0000000..eb1ed6a --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self6.testcase @@ -0,0 +1,7 @@ +ST_SelfIntersections - Valid 3D input +:memory: #use in-memory database +SELECT ST_AsText(ST_SelfIntersections(ST_GeomFromText('LINESTRINGZ(0 0 0, 10 10 10, 0 10 5, 10 0 3)'))); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_SelfIntersections(ST_GeomFromText('LINESTRINGZ(0 0 0, 10 10 10, 0 10 5, 10 0 3)'))) +MULTIPOINT Z(5 5 4.5) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_self7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self7.testcase new file mode 100644 index 0000000..26d448b --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self7.testcase @@ -0,0 +1,7 @@ +ST_SelfIntersections - Valid MultiLinestring 2D input +:memory: #use in-memory database +SELECT ST_AsText(ST_SelfIntersections(ST_GeomFromText('MULTILINESTRING((0 0, 10 10, 0 10, 10 0),(10 8, 10 12))'))); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_SelfIntersections(ST_GeomFromText('MULTILINESTRING((0 0, 10 10, 0 10, 10 0),(10 8, 10 12))'))) +MULTIPOINT(5 5, 10 10) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_self8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self8.testcase new file mode 100644 index 0000000..9e523a5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self8.testcase @@ -0,0 +1,7 @@ +ST_SelfIntersections - Valid MultiLinestring 3D input +:memory: #use in-memory database +SELECT ST_AsText(ST_SelfIntersections(ST_GeomFromText('MULTILINESTRINGZ((0 0 0, 10 10 10, 0 10 5, 10 0 3),(10 8 4, 10 12 5))'))); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_SelfIntersections(ST_GeomFromText('MULTILINESTRINGZ((0 0 0, 10 10 10, 0 10 5, 10 0 3),(10 8 4, 10 12 5))'))) +MULTIPOINT Z(5 5 4.5, 10 10 10) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_self9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self9.testcase new file mode 100644 index 0000000..5e5b6d6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_self9.testcase @@ -0,0 +1,7 @@ +ST_SelfIntersections - Invalid MultiPoint 3D input +:memory: #use in-memory database +SELECT ST_AsText(ST_SelfIntersections(ST_GeomFromText('MULTIPOINTZ(0 0 0, 10 10 10, 0 10 5, 10 0 3)'))); +1 # rows (not including the header row) +1 # columns +ST_AsText(ST_SelfIntersections(ST_GeomFromText('MULTIPOINTZ(0 0 0, 10 10 10, 0 10 5, 10 0 3)'))) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid1.testcase new file mode 100644 index 0000000..456e026 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid1.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - two args - NULL BLOB (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(NULL, 0.5); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(NULL, 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid10.testcase new file mode 100644 index 0000000..5ca8074 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid10.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - three args - NULL sizeY (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 0.5, NULL); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 0.5, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid11.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid11.testcase new file mode 100644 index 0000000..7b513b6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid11.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - three args - BLOB sizeY (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 0.5, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 0.5, zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid12.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid12.testcase new file mode 100644 index 0000000..3f3b36c --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid12.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - three args - text sizeY (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 0.5, 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 0.5, 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid13.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid13.testcase new file mode 100644 index 0000000..59773c6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid13.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - five args - NULL originX (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), NULL, 1, 0.5, 0.5); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), NULL, 1, 0.5, 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid14.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid14.testcase new file mode 100644 index 0000000..9ad2792 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid14.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - five args - BLOB originX (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), zeroblob(0), 1, 0.5, 0.5); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), zeroblob(0), 1, 0.5, 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid15.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid15.testcase new file mode 100644 index 0000000..24855fc --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid15.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - five args - text originX (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha', 1, 0.5, 0.5); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha', 1, 0.5, 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid16.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid16.testcase new file mode 100644 index 0000000..a3a356f --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid16.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - five args - NULL originY (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, NULL, 0.5, 0.5); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 1, NULL, 0.5, 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid17.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid17.testcase new file mode 100644 index 0000000..bb9c2bd --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid17.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - five args - BLOB originY (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, zeroblob(0), 0.5, 0.5); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 1, zeroblob(0), 0.5, 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid18.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid18.testcase new file mode 100644 index 0000000..a53e66e --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid18.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - five args - text originY (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 'alpha', 0.5, 0.5); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 'alpha', 0.5, 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid19.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid19.testcase new file mode 100644 index 0000000..30c2469 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid19.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - five args - NULL sizeX (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, NULL, 0.5); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, NULL, 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid2.testcase new file mode 100644 index 0000000..e6ac983 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid2.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - two args - invalid BLOB (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(zeroblob(4), 0.5); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(zeroblob(4), 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid20.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid20.testcase new file mode 100644 index 0000000..371ae77 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid20.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - five args - BLOB sizeX (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, zeroblob(0), 0.5); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, zeroblob(0), 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid21.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid21.testcase new file mode 100644 index 0000000..b6bbf0c --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid21.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - five args - text sizeX (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 'alpha', 0.5); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 'alpha', 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid22.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid22.testcase new file mode 100644 index 0000000..a4977a7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid22.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - five args - NULL sizeY (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 0.5, NULL); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 0.5, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid23.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid23.testcase new file mode 100644 index 0000000..7ef55f8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid23.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - five args - BLOB sizeY (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 0.5, zeroblob(0)); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 0.5, zeroblob(0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid24.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid24.testcase new file mode 100644 index 0000000..b809b39 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid24.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - five args - text sizeY (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 0.5, 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 1, 1, 0.5, 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid25.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid25.testcase new file mode 100644 index 0000000..9a2334b --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid25.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - NULL grid origin (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), NULL, 1, 2, 3, 4); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), NULL, 1, 2, 3, 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid26.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid26.testcase new file mode 100644 index 0000000..07ec5aa --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid26.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - invalid BLOB grid origin (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), zeroblob(4), 1, 2, 3, 4); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), zeroblob(4), 1, 2, 3, 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid27.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid27.testcase new file mode 100644 index 0000000..02ee289 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid27.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - text grid origin (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha', 1, 2, 3, 4); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha', 1, 2, 3, 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid28.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid28.testcase new file mode 100644 index 0000000..5a078da --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid28.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - num grid origin (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 1.1, 1, 2, 3, 4); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 1.1, 1, 2, 3, 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid29.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid29.testcase new file mode 100644 index 0000000..e308542 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid29.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - not-point grid origin (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), GeomFromText('LINESTRING(0 0, 1 1)'), 1, 2, 3, 4); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), GeomFromText('LINESTRING(0 0, 1 1)'), 1, 2, 3, 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid3.testcase new file mode 100644 index 0000000..2d4e7d8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid3.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - two args - NULL size (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), NULL); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid30.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid30.testcase new file mode 100644 index 0000000..e69cd2d --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid30.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - NULL sizeX (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), NULL, 2, 3, 4); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), NULL, 2, 3, 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid31.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid31.testcase new file mode 100644 index 0000000..e5643b1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid31.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - BLOB sizeX (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), zeroblob(4), 2, 3, 4); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), zeroblob(4), 2, 3, 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid32.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid32.testcase new file mode 100644 index 0000000..1017069 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid32.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - text sizeX (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 'alpha', 2, 3, 4); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 'alpha', 2, 3, 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid33.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid33.testcase new file mode 100644 index 0000000..d675f16 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid33.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - NULL sizeM (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 3, NULL); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 3, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid34.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid34.testcase new file mode 100644 index 0000000..b2752e4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid34.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - BLOB sizeM (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 3, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 3, zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid35.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid35.testcase new file mode 100644 index 0000000..8948d11 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid35.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - text sizeM (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 3, 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 3, 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid36.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid36.testcase new file mode 100644 index 0000000..c309eab --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid36.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - NULL sizeY (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, NULL, 3, 4); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, NULL, 3, 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid37.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid37.testcase new file mode 100644 index 0000000..7195806 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid37.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - BLOB sizeY (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, zeroblob(4), 3, 4); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, zeroblob(4), 3, 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid38.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid38.testcase new file mode 100644 index 0000000..c64b8ce --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid38.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - text sizeY (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 'alpha', 3, 4); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 'alpha', 3, 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid39.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid39.testcase new file mode 100644 index 0000000..9306bd8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid39.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - NULL sizeZ (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, NULL, 4); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, NULL, 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid4.testcase new file mode 100644 index 0000000..c217471 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid4.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - two args - text size (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid40.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid40.testcase new file mode 100644 index 0000000..01800cf --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid40.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - BLOB sizeZ (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, zeroblob(4), 4); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, zeroblob(4), 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid41.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid41.testcase new file mode 100644 index 0000000..0c372ec --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid41.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - six args - text sizeZ (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 'alpha', 4); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), MakePoint(1, 1), 1, 2, 'alpha', 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid42.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid42.testcase new file mode 100644 index 0000000..af56c08 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid42.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - Point 2D +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('POINT(1.2 2.3)'), 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('POINT(1.2 2.3)'), 0.25)) +POINT(1.25 2.25) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid43.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid43.testcase new file mode 100644 index 0000000..df3c3bd --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid43.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - Linestring 2D +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('LINESTRING(1.2 2.3, 1.21 2.31, 1.22 2.32, 2.1 3.9)'), 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('LINESTRING(1.2 2.3, 1.21 2.31, 1.22 2.32, 2.1 3.9)'), 0.25)) +LINESTRING(1.25 2.25, 2 4) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid44.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid44.testcase new file mode 100644 index 0000000..ac22544 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid44.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - Polygon 2D +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('POLYGON((0.1 0.1, 0.2 0.2, 0.2 5.1, 4.9 4.9, 5.1 5.1, 4.9 0.15, 0.1 0.1), (3.1 3.1, 3.2 3.1, 3.2 3.2, 3.2 3.1, 3.1 3.1), (1.1 1.1, 1.1 2.1, 2.1 2.1, 2.1 1.1, 1.1 1.1))'), 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('POLYGON((0.1 0.1, 0.2 0.2, 0.2 5.1, 4.9 4.9, 5.1 5.1, 4.9 0.15, 0.1 0.1), (3.1 3.1, 3.2 3.1, 3.2 3.2, 3.2 3.1, 3.1 3.1), (1.1 1.1, 1.1 2.1, 2.1 2.1, 2.1 1.1, 1.1 1.1))'), 0.25)) +POLYGON((0 0, 0.25 0.25, 0.25 5, 5 5, 5 0.25, 0 0), (3 3, 3.25 3, 3.25 3.25, 3.25 3, 3 3), (1 1, 1 2, 2 2, 2 1, 1 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid45.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid45.testcase new file mode 100644 index 0000000..7d8d57a --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid45.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - MultiPoint 2D +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOINT(1.2 2.3, 1.21 2.31, 2.2 3.3, 2.21 3.33)'), 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('MULTIPOINT(1.2 2.3, 1.21 2.31, 2.2 3.3, 2.21 3.33)'), 0.25)) +MULTIPOINT(1.25 2.25, 2.25 3.25) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid46.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid46.testcase new file mode 100644 index 0000000..6b9819a --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid46.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - MultiLinestring 2D +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRING((1.2 2.3, 1.21 2.31, 1.22 2.32, 2.1 3.9), (2.11 3.11, 2.12 3.12), (3.2 4.2, 4.2 3.2))'), 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRING((1.2 2.3, 1.21 2.31, 1.22 2.32, 2.1 3.9), (2.11 3.11, 2.12 3.12), (3.2 4.2, 4.2 3.2))'), 0.25)) +MULTILINESTRING((1.25 2.25, 2 4), (3.25 4.25, 4.25 3.25)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid47.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid47.testcase new file mode 100644 index 0000000..5fbc673 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid47.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - MultiPolygon 2D +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGON(((5.11 5.11, 5.12 5.11, 4.11 5.11, 5.11 5.12, 5.11 5.11)), ((0.1 0.1, 0.2 0.2, 0.2 5.1, 4.9 4.9, 5.1 5.1, 4.9 0.15, 0.1 0.1), (3.1 3.1, 3.2 3.1, 3.2 3.2, 3.2 3.1, 3.1 3.1), (1.1 1.1, 1.1 2.1, 2.1 2.1, 2.1 1.1, 1.1 1.1)), ((5.51 5.51, 6.51 5.51, 6.51 6.51, 5.51 6.51, 5.51 5.51)))'), 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGON(((5.11 5.11, 5.12 5.11, 4.11 5.11, 5.11 5.12, 5.11 5.11)), ((0.1 0.1, 0.2 0.2, 0.2 5.1, 4.9 4.9, 5.1 5.1, 4.9 0.15, 0.1 0.1), (3.1 3.1, 3.2 3.1, 3.2 3.2, 3.2 3.1, 3.1 3.1), (1.1 1.1, 1.1 2.1, 2.1 2.1, 2.1 1.1, 1.1 1.1)), ((5.51 5.51, 6.51 5.51, 6.51 6.51, 5.51 6.51, 5.51 5.51)))'), 0.25)) +MULTIPOLYGON(((0 0, 0.25 0.25, 0.25 5, 5 5, 5 0.25, 0 0), (3 3, 3.25 3, 3.25 3.25, 3.25 3, 3 3), (1 1, 1 2, 2 2, 2 1, 1 1)), ((5.5 5.5, 6.5 5.5, 6.5 6.5, 5.5 6.5, 5.5 5.5))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid48.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid48.testcase new file mode 100644 index 0000000..4bb5f45 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid48.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - Point ZM +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('POINTZM(1.2 2.3 10.1 20.1)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('POINTZM(1.2 2.3 10.1 20.1)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +POINT ZM(1.25 2.25 10 20) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid49.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid49.testcase new file mode 100644 index 0000000..8ac8c2c --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid49.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - Linestring ZM +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('LINESTRINGZM(1.2 2.3 10.1 20.1, 1.21 2.31 10.11 20.11, 1.22 2.32 10.12 20.12, 2.1 3.9 11.4 21.4)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('LINESTRINGZM(1.2 2.3 10.1 20.1, 1.21 2.31 10.11 20.11, 1.22 2.32 10.12 20.12, 2.1 3.9 11.4 21.4)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +LINESTRING ZM(1.25 2.25 10 20, 2 4 11.5 21.5) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid5.testcase new file mode 100644 index 0000000..c77c4d2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid5.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - two args - text geom (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid('alpha', NULL); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid('alpha', NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid50.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid50.testcase new file mode 100644 index 0000000..d5ce6a6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid50.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - Polygon ZM +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('POLYGONZM((0.1 0.1 10.1 20.1, 0.2 0.2 10.11 20.12, 0.2 5.1 10.12 20.13, 4.9 4.9 10.51 20.51, 5.1 5.1 10.49 20.49, 4.9 0.15 10.1 20.1, 0.1 0.1 10.1 20.1), (3.1 3.1 10.1 20.1, 3.2 3.1 10.11 20.11, 3.2 3.2 10.12 20.12, 3.2 3.1 10.13 20.13, 3.1 3.1 10.1 20.1), (1.1 1.1 10.1 20.1, 1.1 2.1 10.2 20.2, 2.1 2.1 10.3 20.3, 2.1 1.1 10.4 20.4, 1.1 1.1 10.1 20.1))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('POLYGONZM((0.1 0.1 10.1 20.1, 0.2 0.2 10.11 20.12, 0.2 5.1 10.12 20.13, 4.9 4.9 10.51 20.51, 5.1 5.1 10.49 20.49, 4.9 0.15 10.1 20.1, 0.1 0.1 10.1 20.1), (3.1 3.1 10.1 20.1, 3.2 3.1 10.11 20.11, 3.2 3.2 10.12 20.12, 3.2 3.1 10.13 20.13, 3.1 3.1 10.1 20.1), (1.1 1.1 10.1 20.1, 1.1 2.1 10.2 20.2, 2.1 2.1 10.3 20.3, 2.1 1.1 10.4 20.4, 1.1 1.1 10.1 20.1))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +POLYGON ZM((0 0 10 20, 0.25 0.25 10 20, 0.25 5 10 20.25, 5 5 10.5 20.5, 5 0.25 10 20, 0 0 10 20), (3 3 10 20, 3.25 3 10 20, 3.25 3.25 10 20, 3.25 3 10.25 20.25, 3 3 10 20), (1 1 10 20, 1 2 10.25 20.25, 2 2 10.25 20.25, 2 1 10.5 20.5, 1 1 10 20)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid51.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid51.testcase new file mode 100644 index 0000000..bd14ef6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid51.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - MultiPoint ZM +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOINTZM(1.2 2.3 10.1 20.1, 1.21 2.31 10.11 20.11, 2.2 3.3 21.1 31.1, 2.21 3.33 21.12 31.12)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('MULTIPOINTZM(1.2 2.3 10.1 20.1, 1.21 2.31 10.11 20.11, 2.2 3.3 21.1 31.1, 2.21 3.33 21.12 31.12)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +MULTIPOINT ZM(1.25 2.25 10 20, 2.25 3.25 21 31) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid52.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid52.testcase new file mode 100644 index 0000000..7437f9b --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid52.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - MultiLinestring ZM +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRINGZM((1.2 2.3 10.1 20.1, 1.21 2.31 10.11 20.11, 1.22 2.32 10.1 20.1, 2.1 3.9 10.11 20.11), (2.11 3.11 10 20, 2.12 3.12 10.1 20.1), (3.2 4.2 10.1 20.1, 4.2 3.2 10.4 20.4))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRINGZM((1.2 2.3 10.1 20.1, 1.21 2.31 10.11 20.11, 1.22 2.32 10.1 20.1, 2.1 3.9 10.11 20.11), (2.11 3.11 10 20, 2.12 3.12 10.1 20.1), (3.2 4.2 10.1 20.1, 4.2 3.2 10.4 20.4))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +MULTILINESTRING ZM((1.25 2.25 10 20, 2 4 10 20), (3.25 4.25 10 20, 4.25 3.25 10.5 20.5)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid53.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid53.testcase new file mode 100644 index 0000000..8a5a10e --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid53.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - MultiPolygon ZM +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGONZM(((5.11 5.11 10.1 20.1, 5.12 5.11 10.11 20.11, 5.11 5.11 10.12 20.12, 5.11 5.12 10.13 20.13, 5.11 5.11 10.1 20.1)), ((0.1 0.1 10.1 20.1, 0.2 0.2 10.11 20.11, 0.2 5.1 10.12 20.12, 4.9 4.9 10.13 20.13, 5.1 5.1 10.14 20.14, 4.9 0.15 10.15 20.15, 0.1 0.1 10.1 20.1), (3.1 3.1 10.1 20.1, 3.2 3.1 10.11 20.11, 3.2 3.2 10.11 20.11, 3.2 3.1 10.12 20.12, 3.1 3.1 10.1 20.1), (1.1 1.1 10.1 20.1, 1.1 2.1 10.11 20.11, 2.1 2.1 10.12 20.12, 2.1 1.1 10.13 20.13, 1.1 1.1 10.1 20.1)), ((5.51 5.51 10.1 20.1, 6.51 5.51 10.11 20.11, 6.51 6.51 10.12 20.12, 5.51 6.51 10.13 20.13, 5.51 5.51 10.1 20.1)))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGONZM(((5.11 5.11 10.1 20.1, 5.12 5.11 10.11 20.11, 5.11 5.11 10.12 20.12, 5.11 5.12 10.13 20.13, 5.11 5.11 10.1 20.1)), ((0.1 0.1 10.1 20.1, 0.2 0.2 10.11 20.11, 0.2 5.1 10.12 20.12, 4.9 4.9 10.13 20.13, 5.1 5.1 10.14 20.14, 4.9 0.15 10.15 20.15, 0.1 0.1 10.1 20.1), (3.1 3.1 10.1 20.1, 3.2 3.1 10.11 20.11, 3.2 3.2 10.11 20.11, 3.2 3.1 10.12 20.12, 3.1 3.1 10.1 20.1), (1.1 1.1 10.1 20.1, 1.1 2.1 10.11 20.11, 2.1 2.1 10.12 20.12, 2.1 1.1 10.13 20.13, 1.1 1.1 10.1 20.1)), ((5.51 5.51 10.1 20.1, 6.51 5.51 10.11 20.11, 6.51 6.51 10.12 20.12, 5.51 6.51 10.13 20.13, 5.51 5.51 10.1 20.1)))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +MULTIPOLYGON ZM(((0 0 10 20, 0.25 0.25 10 20, 0.25 5 10 20, 5 5 10.25 20.25, 5 0.25 10.25 20.25, 0 0 10 20), (3 3 10 20, 3.25 3 10 20, 3.25 3.25 10 20, 3.25 3 10 20, 3 3 10 20), (1 1 10 20, 1 2 10 20, 2 2 10 20, 2 1 10.25 20.25, 1 1 10 20)), ((5.5 5.5 10 20, 6.5 5.5 10 20, 6.5 6.5 10 20, 5.5 6.5 10.25 20.25, 5.5 5.5 10 20))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid54.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid54.testcase new file mode 100644 index 0000000..77f66ec --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid54.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - Point Z +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('POINTZ(1.2 2.3 10.1)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('POINTZ(1.2 2.3 10.1)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +POINT Z(1.25 2.25 10) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid55.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid55.testcase new file mode 100644 index 0000000..3092cc1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid55.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - Linestring Z +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('LINESTRINGZ(1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.12, 2.1 3.9 11.4)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('LINESTRINGZ(1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.12, 2.1 3.9 11.4)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +LINESTRING Z(1.25 2.25 10, 2 4 11.5) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid56.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid56.testcase new file mode 100644 index 0000000..cc8b8a8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid56.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - Polygon Z +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('POLYGONZ((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.51, 5.1 5.1 10.49, 4.9 0.15 10.1, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.12, 3.2 3.1 10.13, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.2, 2.1 2.1 10.3, 2.1 1.1 10.4, 1.1 1.1 10.1))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('POLYGONZ((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.51, 5.1 5.1 10.49, 4.9 0.15 10.1, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.12, 3.2 3.1 10.13, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.2, 2.1 2.1 10.3, 2.1 1.1 10.4, 1.1 1.1 10.1))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +POLYGON Z((0 0 10, 0.25 0.25 10, 0.25 5 10, 5 5 10.5, 5 0.25 10, 0 0 10), (3 3 10, 3.25 3 10, 3.25 3.25 10, 3.25 3 10.25, 3 3 10), (1 1 10, 1 2 10.25, 2 2 10.25, 2 1 10.5, 1 1 10)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid57.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid57.testcase new file mode 100644 index 0000000..0e88342 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid57.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - MultiPoint Z +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOINTZ(1.2 2.3 10.1, 1.21 2.31 10.11, 2.2 3.3 21.1, 2.21 3.33 21.12)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('MULTIPOINTZ(1.2 2.3 10.1, 1.21 2.31 10.11, 2.2 3.3 21.1, 2.21 3.33 21.12)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +MULTIPOINT Z(1.25 2.25 10, 2.25 3.25 21) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid58.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid58.testcase new file mode 100644 index 0000000..3c4e9b0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid58.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - MultiLinestring Z +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRINGZ((1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.1, 2.1 3.9 10.11), (2.11 3.11 10, 2.12 3.12 10.1), (3.2 4.2 10.1, 4.2 3.2 10.4))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRINGZ((1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.1, 2.1 3.9 10.11), (2.11 3.11 10, 2.12 3.12 10.1), (3.2 4.2 10.1, 4.2 3.2 10.4))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +MULTILINESTRING Z((1.25 2.25 10, 2 4 10), (3.25 4.25 10, 4.25 3.25 10.5)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid59.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid59.testcase new file mode 100644 index 0000000..abfad9d --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid59.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - MultiPolygon Z +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGONZ(((5.11 5.11 10.1, 5.12 5.11 10.11, 5.11 5.11 10.12, 5.11 5.12 10.13, 5.11 5.11 10.1)), ((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.13, 5.1 5.1 10.14, 4.9 0.15 10.15, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.11, 3.2 3.1 10.12, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.11, 2.1 2.1 10.12, 2.1 1.1 10.13, 1.1 1.1 10.1)), ((5.51 5.51 10.1, 6.51 5.51 10.11, 6.51 6.51 10.12, 5.51 6.51 10.13, 5.51 5.51 10.1)))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGONZ(((5.11 5.11 10.1, 5.12 5.11 10.11, 5.11 5.11 10.12, 5.11 5.12 10.13, 5.11 5.11 10.1)), ((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.13, 5.1 5.1 10.14, 4.9 0.15 10.15, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.11, 3.2 3.1 10.12, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.11, 2.1 2.1 10.12, 2.1 1.1 10.13, 1.1 1.1 10.1)), ((5.51 5.51 10.1, 6.51 5.51 10.11, 6.51 6.51 10.12, 5.51 6.51 10.13, 5.51 5.51 10.1)))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +MULTIPOLYGON Z(((0 0 10, 0.25 0.25 10, 0.25 5 10, 5 5 10.25, 5 0.25 10.25, 0 0 10), (3 3 10, 3.25 3 10, 3.25 3.25 10, 3.25 3 10, 3 3 10), (1 1 10, 1 2 10, 2 2 10, 2 1 10.25, 1 1 10)), ((5.5 5.5 10, 6.5 5.5 10, 6.5 6.5 10, 5.5 6.5 10.25, 5.5 5.5 10))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid6.testcase new file mode 100644 index 0000000..9ebe09a --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid6.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - two args - double geom (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(1.2, NULL); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(1.2, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid60.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid60.testcase new file mode 100644 index 0000000..b833565 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid60.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - Point M +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('POINTM(1.2 2.3 10.1)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('POINTM(1.2 2.3 10.1)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +POINT M(1.25 2.25 10) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid61.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid61.testcase new file mode 100644 index 0000000..57a1f9e --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid61.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - Linestring M +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('LINESTRINGM(1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.12, 2.1 3.9 11.4)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('LINESTRINGM(1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.12, 2.1 3.9 11.4)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +LINESTRING M(1.25 2.25 10, 2 4 11.5) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid62.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid62.testcase new file mode 100644 index 0000000..af1a880 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid62.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - Polygon M +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('POLYGONM((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.51, 5.1 5.1 10.49, 4.9 0.15 10.1, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.12, 3.2 3.1 10.13, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.2, 2.1 2.1 10.3, 2.1 1.1 10.4, 1.1 1.1 10.1))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('POLYGONM((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.51, 5.1 5.1 10.49, 4.9 0.15 10.1, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.12, 3.2 3.1 10.13, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.2, 2.1 2.1 10.3, 2.1 1.1 10.4, 1.1 1.1 10.1))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +POLYGON M((0 0 10, 0.25 0.25 10, 0.25 5 10, 5 5 10.5, 5 0.25 10, 0 0 10), (3 3 10, 3.25 3 10, 3.25 3.25 10, 3.25 3 10.25, 3 3 10), (1 1 10, 1 2 10.25, 2 2 10.25, 2 1 10.5, 1 1 10)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid63.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid63.testcase new file mode 100644 index 0000000..b5d1b63 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid63.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - MultiPoint M +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOINTM(1.2 2.3 10.1, 1.21 2.31 10.11, 2.2 3.3 21.1, 2.21 3.33 21.12)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('MULTIPOINTM(1.2 2.3 10.1, 1.21 2.31 10.11, 2.2 3.3 21.1, 2.21 3.33 21.12)'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +MULTIPOINT M(1.25 2.25 10, 2.25 3.25 21) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid64.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid64.testcase new file mode 100644 index 0000000..eea01f4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid64.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - MultiLinestring M +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRINGM((1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.1, 2.1 3.9 10.11), (2.11 3.11 10, 2.12 3.12 10.1), (3.2 4.2 10.1, 4.2 3.2 10.4))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('MULTILINESTRINGM((1.2 2.3 10.1, 1.21 2.31 10.11, 1.22 2.32 10.1, 2.1 3.9 10.11), (2.11 3.11 10, 2.12 3.12 10.1), (3.2 4.2 10.1, 4.2 3.2 10.4))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +MULTILINESTRING M((1.25 2.25 10, 2 4 10), (3.25 4.25 10, 4.25 3.25 10.5)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid65.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid65.testcase new file mode 100644 index 0000000..011346b --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid65.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - MultiPolygon M +:memory: #use in-memory database +SELECT AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGONM(((5.11 5.11 10.1, 5.12 5.11 10.11, 5.11 5.11 10.12, 5.11 5.12 10.13, 5.11 5.11 10.1)), ((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.13, 5.1 5.1 10.14, 4.9 0.15 10.15, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.11, 3.2 3.1 10.12, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.11, 2.1 2.1 10.12, 2.1 1.1 10.13, 1.1 1.1 10.1)), ((5.51 5.51 10.1, 6.51 5.51 10.11, 6.51 6.51 10.12, 5.51 6.51 10.13, 5.51 5.51 10.1)))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)); +1 # rows (not including the header row) +1 # columns +AsText(ST_SnapToGrid(GeomFromText('MULTIPOLYGONM(((5.11 5.11 10.1, 5.12 5.11 10.11, 5.11 5.11 10.12, 5.11 5.12 10.13, 5.11 5.11 10.1)), ((0.1 0.1 10.1, 0.2 0.2 10.11, 0.2 5.1 10.12, 4.9 4.9 10.13, 5.1 5.1 10.14, 4.9 0.15 10.15, 0.1 0.1 10.1), (3.1 3.1 10.1, 3.2 3.1 10.11, 3.2 3.2 10.11, 3.2 3.1 10.12, 3.1 3.1 10.1), (1.1 1.1 10.1, 1.1 2.1 10.11, 2.1 2.1 10.12, 2.1 1.1 10.13, 1.1 1.1 10.1)), ((5.51 5.51 10.1, 6.51 5.51 10.11, 6.51 6.51 10.12, 5.51 6.51 10.13, 5.51 5.51 10.1)))'), MakePoint(0, 0), 0.25, 0.25, 0.25, 0.25)) +MULTIPOLYGON M(((0 0 10, 0.25 0.25 10, 0.25 5 10, 5 5 10.25, 5 0.25 10.25, 0 0 10), (3 3 10, 3.25 3 10, 3.25 3.25 10, 3.25 3 10, 3 3 10), (1 1 10, 1 2 10, 2 2 10, 2 1 10.25, 1 1 10)), ((5.5 5.5 10, 6.5 5.5 10, 6.5 6.5 10, 5.5 6.5 10.25, 5.5 5.5 10))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid7.testcase new file mode 100644 index 0000000..7697b93 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid7.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - three args - NULL sizeX (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), NULL, 0.5); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), NULL, 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid8.testcase new file mode 100644 index 0000000..cdbbe6b --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid8.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - three args - BLOB sizeX (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), zeroblob(4), 0.5); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), zeroblob(4), 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid9.testcase new file mode 100644 index 0000000..c8b6ee1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_snaptogrid9.testcase @@ -0,0 +1,7 @@ +ST_SnapToGrid - three args - text sizeX (error) +:memory: #use in-memory database +SELECT ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha', 0.5); +1 # rows (not including the header row) +1 # columns +ST_SnapToGrid(MakePoint(1.25, 2.35), 'alpha', 0.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split1.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split1.testcase new file mode 100644 index 0000000..860ab30 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split1.testcase @@ -0,0 +1,7 @@ +ST_Split - Invalid BLOB input (error) +:memory: #use in-memory database +SELECT ST_Split(zeroblob(4), MakePoint(5, 0)); +1 # rows (not including the header row) +1 # columns +ST_Split(zeroblob(4), MakePoint(5, 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split10.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split10.testcase new file mode 100644 index 0000000..9cb28c4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split10.testcase @@ -0,0 +1,7 @@ +ST_Split - Polygon-Point (error) +:memory: #use in-memory database +SELECT ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), MakePoint(4, 1)); +1 # rows (not including the header row) +1 # columns +ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), MakePoint(4, 1)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split11.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split11.testcase new file mode 100644 index 0000000..a8d9c94 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split11.testcase @@ -0,0 +1,7 @@ +ST_Split - Line-Polygon (error) +:memory: #use in-memory database +SELECT ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')); +1 # rows (not including the header row) +1 # columns +ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))')) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split12.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split12.testcase new file mode 100644 index 0000000..9599012 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split12.testcase @@ -0,0 +1,7 @@ +ST_Split - Line-Collection (error) +:memory: #use in-memory database +SELECT ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2)')); +1 # rows (not including the header row) +1 # columns +ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2)')) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split13.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split13.testcase new file mode 100644 index 0000000..38ab239 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split13.testcase @@ -0,0 +1,7 @@ +ST_Split - Line-Point (split) +:memory: #use in-memory database +SELECT AsText(ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(7, 0))); +1 # rows (not including the header row) +1 # columns +AsText(ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(7, 0))) +MULTILINESTRING((0 0, 7 0), (7 0, 10 0)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split14.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split14.testcase new file mode 100644 index 0000000..98815e2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split14.testcase @@ -0,0 +1,7 @@ +ST_Split - Line-Line (split) +:memory: #use in-memory database +SELECT AsText(ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(7 0, 7 3)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(7 0, 7 3)'))) +MULTILINESTRING((0 1, 7 1), (7 1, 10 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split15.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split15.testcase new file mode 100644 index 0000000..4c43039 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split15.testcase @@ -0,0 +1,7 @@ +ST_Split - MultiLine-Point (split) +:memory: #use in-memory database +SELECT AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(7, 0))); +1 # rows (not including the header row) +1 # columns +AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(7, 0))) +MULTILINESTRING((0 2, 10 2), (0 0, 7 0), (7 0, 10 0)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split16.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split16.testcase new file mode 100644 index 0000000..1fee99b --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split16.testcase @@ -0,0 +1,7 @@ +ST_Split - MultiLine-Line (split) +:memory: #use in-memory database +SELECT AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(7 0, 7 3)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(7 0, 7 3)'))) +MULTILINESTRING((0 2, 7 2), (7 2, 10 2), (0 1, 7 1), (7 1, 10 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split17.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split17.testcase new file mode 100644 index 0000000..d778ff4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split17.testcase @@ -0,0 +1,7 @@ +ST_Split - Polygon-Line (split) +:memory: #use in-memory database +SELECT AsText(ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('LINESTRING(7 0, 7 20)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('LINESTRING(7 0, 7 20)'))) +MULTIPOLYGON(((7 1, 0 1, 0 10, 7 10, 7 1)), ((7 10, 10 10, 10 1, 7 1, 7 10))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split18.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split18.testcase new file mode 100644 index 0000000..a1b533b --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split18.testcase @@ -0,0 +1,7 @@ +ST_Split - Collection-Line (split) +:memory: #use in-memory database +SELECT AsText(ST_Split(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1)))'), GeomFromText('LINESTRING(7 0, 7 20)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_Split(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1)))'), GeomFromText('LINESTRING(7 0, 7 20)'))) +GEOMETRYCOLLECTION(LINESTRING(0 11, 7 11), LINESTRING(7 11, 10 11), POLYGON((7 1, 0 1, 0 10, 7 10, 7 1)), POLYGON((7 10, 10 10, 10 1, 7 1, 7 10))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split19.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split19.testcase new file mode 100644 index 0000000..befdd00 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split19.testcase @@ -0,0 +1,7 @@ +ST_Split - Line-Point (not split) +:memory: #use in-memory database +SELECT AsText(ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))); +1 # rows (not including the header row) +1 # columns +AsText(ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))) +LINESTRING(0 0, 10 0) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split2.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split2.testcase new file mode 100644 index 0000000..62e4458 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split2.testcase @@ -0,0 +1,7 @@ +ST_Split - NULL BLOB input (error) +:memory: #use in-memory database +SELECT ST_Split(NULL, MakePoint(5, 0)); +1 # rows (not including the header row) +1 # columns +ST_Split(NULL, MakePoint(5, 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split20.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split20.testcase new file mode 100644 index 0000000..e74db29 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split20.testcase @@ -0,0 +1,7 @@ +ST_Split - Line-Line (not split) +:memory: #use in-memory database +SELECT AsText(ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(11 0, 11 3)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(11 0, 11 3)'))) +LINESTRING(0 1, 10 1) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split21.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split21.testcase new file mode 100644 index 0000000..5b330fe --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split21.testcase @@ -0,0 +1,7 @@ +ST_Split - MultiLine-Point (not split) +:memory: #use in-memory database +SELECT AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(-1, 0))); +1 # rows (not including the header row) +1 # columns +AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(-1, 0))) +MULTILINESTRING((0 2, 10 2), (0 0, 10 0)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split22.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split22.testcase new file mode 100644 index 0000000..874f1df --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split22.testcase @@ -0,0 +1,7 @@ +ST_Split - MultiLine-Line (not split) +:memory: #use in-memory database +SELECT AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(-1 0, -1 3)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_Split(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(-1 0, -1 3)'))) +MULTILINESTRING((0 2, 10 2), (0 1, 10 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split23.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split23.testcase new file mode 100644 index 0000000..1a885f1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split23.testcase @@ -0,0 +1,7 @@ +ST_Split - Polygon-Line (not split) +:memory: #use in-memory database +SELECT AsText(ST_ForceLHR(ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('LINESTRING(12 0, 12 20)')))); +1 # rows (not including the header row) +1 # columns +AsText(ST_ForceLHR(ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('LINESTRING(12 0, 12 20)')))) +POLYGON((0 1, 0 10, 10 10, 10 1, 0 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split24.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split24.testcase new file mode 100644 index 0000000..93f066b --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split24.testcase @@ -0,0 +1,7 @@ +ST_Split - Collection-Line (not split) +:memory: #use in-memory database +SELECT AsText(ST_ForceLHR(ST_Split(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1)))'), GeomFromText('LINESTRING(-1 0, -1 20)')))); +1 # rows (not including the header row) +1 # columns +AsText(ST_ForceLHR(ST_Split(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1)))'), GeomFromText('LINESTRING(-1 0, -1 20)')))) +GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 0 10, 10 10, 10 1, 0 1))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split25.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split25.testcase new file mode 100644 index 0000000..befdd00 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split25.testcase @@ -0,0 +1,7 @@ +ST_Split - Line-Point (not split) +:memory: #use in-memory database +SELECT AsText(ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))); +1 # rows (not including the header row) +1 # columns +AsText(ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))) +LINESTRING(0 0, 10 0) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split26.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split26.testcase new file mode 100644 index 0000000..c86a9f1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split26.testcase @@ -0,0 +1,7 @@ +ST_SplitlLeft - Line-Point (split) +:memory: #use in-memory database +SELECT AsText(ST_SplitLeft(GeomFromText('LINESTRINGZM(0 0 10 100, 10 0 11 101)'), MakePointZM(7, 0, 10, 100))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitLeft(GeomFromText('LINESTRINGZM(0 0 10 100, 10 0 11 101)'), MakePointZM(7, 0, 10, 100))) +LINESTRING ZM(0 0 10 100, 7 0 10.7 100.7) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split27.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split27.testcase new file mode 100644 index 0000000..79f1465 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split27.testcase @@ -0,0 +1,7 @@ +ST_SplitLeft - Line-Line (split) +:memory: #use in-memory database +SELECT AsText(ST_SplitLeft(GeomFromText('LINESTRINGM(0 1 10, 10 1 10)'), GeomFromText('LINESTRING(7 0, 7 3)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitLeft(GeomFromText('LINESTRINGM(0 1 10, 10 1 10)'), GeomFromText('LINESTRING(7 0, 7 3)'))) +LINESTRING M(0 1 0, 7 1 0) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split28.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split28.testcase new file mode 100644 index 0000000..8152949 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split28.testcase @@ -0,0 +1,7 @@ +ST_SplitLeft - MultiLine-Point (split) +:memory: #use in-memory database +SELECT AsText(ST_SplitLeft(GeomFromText('MULTILINESTRINGZ((0 2 10, 10 2 11), (0 0 10, 10 0 11))'), MakePointZ(7, 0, 10))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitLeft(GeomFromText('MULTILINESTRINGZ((0 2 10, 10 2 11), (0 0 10, 10 0 11))'), MakePointZ(7, 0, 10))) +MULTILINESTRING Z((0 2 10, 10 2 11), (0 0 10, 7 0 10.7)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split29.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split29.testcase new file mode 100644 index 0000000..b649b08 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split29.testcase @@ -0,0 +1,7 @@ +ST_SplitLeft - MultiLine-Line (split) +:memory: #use in-memory database +SELECT AsText(ST_SplitLeft(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(7 0, 7 3)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitLeft(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(7 0, 7 3)'))) +MULTILINESTRING((0 2, 7 2), (0 1, 7 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split3.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split3.testcase new file mode 100644 index 0000000..e46f7ac --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split3.testcase @@ -0,0 +1,7 @@ +ST_Split - text input (error) +:memory: #use in-memory database +SELECT ST_Split('alpha', MakePoint(5, 0)); +1 # rows (not including the header row) +1 # columns +ST_Split('alpha', MakePoint(5, 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split30.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split30.testcase new file mode 100644 index 0000000..a0ba9ea --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split30.testcase @@ -0,0 +1,7 @@ +ST_SplitLeft - Polygon-Line (split) +:memory: #use in-memory database +SELECT AsText(ST_ForceLHR(ST_SplitLeft(GeomFromText('POLYGONZ((0 1 10, 10 1 11, 10 10 12, 0 10 13, 0 1 10), (5 5 10, 9 5 11, 9 9 12, 5 9 13, 5 5 10))'), GeomFromText('LINESTRING(7 0, 7 20)')))); +1 # rows (not including the header row) +1 # columns +AsText(ST_ForceLHR(ST_SplitLeft(GeomFromText('POLYGONZ((0 1 10, 10 1 11, 10 10 12, 0 10 13, 0 1 10), (5 5 10, 9 5 11, 9 9 12, 5 9 13, 5 5 10))'), GeomFromText('LINESTRING(7 0, 7 20)')))) +POLYGON Z((7 1 10.7, 0 1 10, 0 10 13, 7 10 12.3, 7 9 12.5, 5 9 13, 5 5 10, 7 5 10.5, 7 1 10.7)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split31.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split31.testcase new file mode 100644 index 0000000..c4207cb --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split31.testcase @@ -0,0 +1,7 @@ +ST_SplitLeft - Collection-Line (split) +:memory: #use in-memory database +SELECT AsText(ST_SplitLeft(GeomFromText('GEOMETRYCOLLECTIONM(LINESTRINGM(0 11 10, 10 11 10), POLYGONM((0 1 10, 10 1 11, 10 10 12, 0 10 13, 0 1 10), (5 5 10, 9 5 11, 9 9 12, 5 9 13, 5 5 10)))'), GeomFromText('LINESTRING(7 0, 7 20)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitLeft(GeomFromText('GEOMETRYCOLLECTIONM(LINESTRINGM(0 11 10, 10 11 10), POLYGONM((0 1 10, 10 1 11, 10 10 12, 0 10 13, 0 1 10), (5 5 10, 9 5 11, 9 9 12, 5 9 13, 5 5 10)))'), GeomFromText('LINESTRING(7 0, 7 20)'))) +GEOMETRYCOLLECTION M(LINESTRING M(0 11 0, 7 11 0), POLYGON M((7 1 0, 0 1 0, 0 10 0, 7 10 0, 7 9 0, 5 9 0, 5 5 0, 7 5 0, 7 1 0))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split32.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split32.testcase new file mode 100644 index 0000000..fe098e1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split32.testcase @@ -0,0 +1,7 @@ +ST_SplitLeft - Line-Point (not split) +:memory: #use in-memory database +SELECT AsText(ST_SplitLeft(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitLeft(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))) +LINESTRING(0 0, 10 0) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split33.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split33.testcase new file mode 100644 index 0000000..ae07635 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split33.testcase @@ -0,0 +1,7 @@ +ST_SplitLeft - Line-Line (not split) +:memory: #use in-memory database +SELECT AsText(ST_SplitLeft(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(11 0, 11 3)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitLeft(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(11 0, 11 3)'))) +LINESTRING(0 1, 10 1) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split34.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split34.testcase new file mode 100644 index 0000000..301ffa9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split34.testcase @@ -0,0 +1,7 @@ +ST_SplitLeft - MultiLine-Point (not split) +:memory: #use in-memory database +SELECT AsText(ST_SplitLeft(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(-1, 0))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitLeft(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(-1, 0))) +MULTILINESTRING((0 2, 10 2), (0 0, 10 0)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split35.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split35.testcase new file mode 100644 index 0000000..b91b0e8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split35.testcase @@ -0,0 +1,7 @@ +ST_SplitLeft - MultiLine-Line (not split) +:memory: #use in-memory database +SELECT AsText(ST_SplitLeft(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(-1 0, -1 3)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitLeft(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(-1 0, -1 3)'))) +MULTILINESTRING((0 2, 10 2), (0 1, 10 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split36.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split36.testcase new file mode 100644 index 0000000..f3f736f --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split36.testcase @@ -0,0 +1,7 @@ +ST_SplitLeft - Polygon-Line (not split) +:memory: #use in-memory database +SELECT AsText(ST_ForceLHR(ST_SplitLeft(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5))'), GeomFromText('LINESTRING(12 0, 12 20)')))); +1 # rows (not including the header row) +1 # columns +AsText(ST_ForceLHR(ST_SplitLeft(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5))'), GeomFromText('LINESTRING(12 0, 12 20)')))) +POLYGON((0 1, 0 10, 10 10, 10 1, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split37.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split37.testcase new file mode 100644 index 0000000..39b6809 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split37.testcase @@ -0,0 +1,7 @@ +ST_SplitLeft - Collection-Line (not split) +:memory: #use in-memory database +SELECT AsText(ST_ForceLHR(ST_SplitLeft(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5)))'), GeomFromText('LINESTRING(-1 0, -1 20)')))); +1 # rows (not including the header row) +1 # columns +AsText(ST_ForceLHR(ST_SplitLeft(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5)))'), GeomFromText('LINESTRING(-1 0, -1 20)')))) +GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 0 10, 10 10, 10 1, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split38.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split38.testcase new file mode 100644 index 0000000..927f068 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split38.testcase @@ -0,0 +1,7 @@ +ST_SplitlRight - Line-Point (split) +:memory: #use in-memory database +SELECT AsText(ST_SplitRight(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(7, 0))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitRight(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(7, 0))) +LINESTRING(7 0, 10 0) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split39.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split39.testcase new file mode 100644 index 0000000..0015c44 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split39.testcase @@ -0,0 +1,7 @@ +ST_SplitRight - Line-Line (split) +:memory: #use in-memory database +SELECT AsText(ST_SplitRight(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(7 0, 7 3)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitRight(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(7 0, 7 3)'))) +LINESTRING(7 1, 10 1) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split4.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split4.testcase new file mode 100644 index 0000000..148e34c --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split4.testcase @@ -0,0 +1,7 @@ +ST_Split - Invalid BLOB blade (error) +:memory: #use in-memory database +SELECT ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), zeroblob(4)); +1 # rows (not including the header row) +1 # columns +ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split40.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split40.testcase new file mode 100644 index 0000000..6119e2f --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split40.testcase @@ -0,0 +1,7 @@ +ST_SplitRight - MultiLine-Point (split) +:memory: #use in-memory database +SELECT AsText(ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(7, 0))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(7, 0))) +LINESTRING(7 0, 10 0) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split41.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split41.testcase new file mode 100644 index 0000000..61649a4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split41.testcase @@ -0,0 +1,7 @@ +ST_SplitRight - MultiLine-Line (split) +:memory: #use in-memory database +SELECT AsText(ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(7 0, 7 3)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(7 0, 7 3)'))) +MULTILINESTRING((7 2, 10 2), (7 1, 10 1)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split42.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split42.testcase new file mode 100644 index 0000000..13c4213 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split42.testcase @@ -0,0 +1,7 @@ +ST_SplitRight - Polygon-Line (split) +:memory: #use in-memory database +SELECT AsText(ST_SplitRight(GeomFromText('POLYGONZM((0 1 10 100, 10 1 11 101, 10 10 12 102, 0 10 13 103, 0 1 10 100), (5 5 10 100, 9 5 11 101, 9 9 12 102, 5 9 13 103, 5 5 10 100))'), GeomFromText('LINESTRING(7 0, 7 20)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitRight(GeomFromText('POLYGONZM((0 1 10 100, 10 1 11 101, 10 10 12 102, 0 10 13 103, 0 1 10 100), (5 5 10 100, 9 5 11 101, 9 9 12 102, 5 9 13 103, 5 5 10 100))'), GeomFromText('LINESTRING(7 0, 7 20)'))) +POLYGON ZM((7 10 12.3 0, 10 10 12 0, 10 1 11 0, 7 1 10.7 0, 7 5 10.5 0, 9 5 11 0, 9 9 12 0, 7 9 12.5 0, 7 10 12.3 0)) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split43.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split43.testcase new file mode 100644 index 0000000..00f3efd --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split43.testcase @@ -0,0 +1,7 @@ +ST_SplitRight - Collection-Line (split) +:memory: #use in-memory database +SELECT AsText(ST_SplitRight(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5)))'), GeomFromText('LINESTRING(7 0, 7 20)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitRight(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1), (5 5, 9 5, 9 9, 5 9, 5 5)))'), GeomFromText('LINESTRING(7 0, 7 20)'))) +GEOMETRYCOLLECTION(LINESTRING(7 11, 10 11), POLYGON((7 10, 10 10, 10 1, 7 1, 7 5, 9 5, 9 9, 7 9, 7 10))) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split44.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split44.testcase new file mode 100644 index 0000000..9534d34 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split44.testcase @@ -0,0 +1,7 @@ +ST_SplitRight - Line-Point (not split) +:memory: #use in-memory database +SELECT AsText(ST_SplitRight(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitRight(GeomFromText('LINESTRING(0 0, 10 0)'), MakePoint(11, 0))) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split45.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split45.testcase new file mode 100644 index 0000000..5de5167 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split45.testcase @@ -0,0 +1,7 @@ +ST_SplitRight - Line-Line (not split) +:memory: #use in-memory database +SELECT AsText(ST_SplitRight(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(11 0, 11 3)'))); +1 # rows (not including the header row) +1 # columns +AsText(ST_SplitRight(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('LINESTRING(11 0, 11 3)'))) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split46.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split46.testcase new file mode 100644 index 0000000..cbbe595 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split46.testcase @@ -0,0 +1,7 @@ +ST_SplitRigt - MultiLine-Point (not split) +:memory: #use in-memory database +SELECT ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(-1, 0)); +1 # rows (not including the header row) +1 # columns +ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 0, 10 0))'), MakePoint(-1, 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split47.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split47.testcase new file mode 100644 index 0000000..61b2427 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split47.testcase @@ -0,0 +1,7 @@ +ST_SplitRight - MultiLine-Line (not split) +:memory: #use in-memory database +SELECT ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(-1 0, -1 3)')); +1 # rows (not including the header row) +1 # columns +ST_SplitRight(GeomFromText('MULTILINESTRING((0 2, 10 2), (0 1, 10 1))'), GeomFromText('LINESTRING(-1 0, -1 3)')) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split48.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split48.testcase new file mode 100644 index 0000000..6ae0938 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split48.testcase @@ -0,0 +1,7 @@ +ST_SplitRight - Polygon-Line (not split) +:memory: #use in-memory database +SELECT AsText(ST_ForceLHR(ST_SplitRight(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('LINESTRING(12 0, 12 20)')))); +1 # rows (not including the header row) +1 # columns +AsText(ST_ForceLHR(ST_SplitRight(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('LINESTRING(12 0, 12 20)')))) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split49.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split49.testcase new file mode 100644 index 0000000..ca2fa7f --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split49.testcase @@ -0,0 +1,7 @@ +ST_SplitRight - Collection-Line (not split) +:memory: #use in-memory database +SELECT ST_ForceLHR(ST_SplitRight(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1)))'), GeomFromText('LINESTRING(-1 0, -1 20)'))); +1 # rows (not including the header row) +1 # columns +ST_ForceLHR(ST_SplitRight(GeomFromText('GEOMETRYCOLLECTION(LINESTRING(0 11, 10 11), POLYGON((0 1, 10 1, 10 10, 0 10, 0 1)))'), GeomFromText('LINESTRING(-1 0, -1 20)'))) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split5.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split5.testcase new file mode 100644 index 0000000..a10e674 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split5.testcase @@ -0,0 +1,7 @@ +ST_Split - NULL BLOB blade (error) +:memory: #use in-memory database +SELECT ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), NULL); +1 # rows (not including the header row) +1 # columns +ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split6.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split6.testcase new file mode 100644 index 0000000..15577db --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split6.testcase @@ -0,0 +1,7 @@ +ST_Split - text input blade (error) +:memory: #use in-memory database +SELECT ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), 'alpha'); +1 # rows (not including the header row) +1 # columns +ST_Split(GeomFromText('LINESTRING(0 0, 10 0)'), 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split7.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split7.testcase new file mode 100644 index 0000000..70a8d15 --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split7.testcase @@ -0,0 +1,7 @@ +ST_Split - Point-Point (error) +:memory: #use in-memory database +SELECT ST_Split(MakePoint(0, 0), MakePoint(1, 1)); +1 # rows (not including the header row) +1 # columns +ST_Split(MakePoint(0, 0), MakePoint(1, 1)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split8.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split8.testcase new file mode 100644 index 0000000..7caa8fd --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split8.testcase @@ -0,0 +1,7 @@ +ST_Split - Line-Multiline (error) +:memory: #use in-memory database +SELECT ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('MULTILINESTRING((3 0, 3 3), (5 0, 5 3))')); +1 # rows (not including the header row) +1 # columns +ST_Split(GeomFromText('LINESTRING(0 1, 10 1)'), GeomFromText('MULTILINESTRING((3 0, 3 3), (5 0, 5 3))')) +(NULL) diff --git a/src/spatialite/test/sql_stmt_lwgeom_tests/st_split9.testcase b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split9.testcase new file mode 100644 index 0000000..feeefee --- /dev/null +++ b/src/spatialite/test/sql_stmt_lwgeom_tests/st_split9.testcase @@ -0,0 +1,7 @@ +ST_Split - Polygon-Multiline (error) +:memory: #use in-memory database +SELECT ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('MULTILINESTRING((3 0, 3 3), (5 0, 5 3))')); +1 # rows (not including the header row) +1 # columns +ST_Split(GeomFromText('POLYGON((0 1, 10 1, 10 10, 0 10, 0 1))'), GeomFromText('MULTILINESTRING((3 0, 3 3), (5 0, 5 3))')) +(NULL) diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/Makefile.am b/src/spatialite/test/sql_stmt_mathsql_tests/Makefile.am new file mode 100644 index 0000000..9684306 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/Makefile.am @@ -0,0 +1,102 @@ + +EXTRA_DIST = acos10.testcase \ + acos20.testcase \ + acos2.testcase \ + acos.testcase \ + acos-text.testcase \ + asin10.testcase \ + asin1.testcase \ + asin20.testcase \ + asin2.testcase \ + asin-text.testcase \ + atan00.testcase \ + atan0.testcase \ + atan-text.testcase \ + ceilfloat2.testcase \ + ceilfloat.testcase \ + ceil-int.testcase \ + ceilnull.testcase \ + cos00.testcase \ + cos0.testcase \ + cos-text.testcase \ + cot00.testcase \ + cot0.testcase \ + cotpi2.testcase \ + cot-text.testcase \ + degrees45.testcase \ + degrees.testcase \ + degreestext.testcase \ + exp00.testcase \ + exp0.testcase \ + exp10.testcase \ + exp1.testcase \ + expneg.testcase \ + exptext.testcase \ + floor32.testcase \ + floorint.testcase \ + floornull.testcase \ + log10-0.0.testcase \ + log10-100.0.testcase \ + log10-100.testcase \ + log10-text.testcase \ + log2-0.0.testcase \ + log2-0.testcase \ + log2-4.0.testcase \ + log2-4.testcase \ + log2-text.testcase \ + logn00.testcase \ + logn0.testcase \ + logn10.testcase \ + logn1.testcase \ + logn2-01.testcase \ + logn2-02.testcase \ + logn2-2.2.testcase \ + logn2-4.2int.testcase \ + logn2-4.2.testcase \ + logn2-text2.testcase \ + logn2-text3.testcase \ + logn2-text4.testcase \ + logn2-text.testcase \ + logn-text.testcase \ + pi.testcase \ + pow00-1.testcase \ + pow00-2.testcase \ + pow00double.testcase \ + pow00.testcase \ + pow-badarg1.testcase \ + pow-badarg2.testcase \ + pow-edom.testcase \ + pow-fp.testcase \ + rad0.testcase \ + radpi.testcase \ + rad-text.testcase \ + sign00.testcase \ + sign01.testcase \ + sign0.testcase \ + sign10.testcase \ + signeg2int.testcase \ + signeg2.testcase \ + signeg.testcase \ + signtext.testcase \ + sin00.testcase \ + sin0.testcase \ + sin-pi2.testcase \ + sinpi2.testcase \ + sin-pi.testcase \ + sinpi.testcase \ + sin-text.testcase \ + sqrt00.testcase \ + sqrt0.testcase \ + sqrt-10.testcase \ + sqrt-1.testcase \ + sqrt-640.testcase \ + sqrt-64.testcase \ + sqrt-text.testcase \ + stddev.testcase \ + tan00.testcase \ + tan0.testcase \ + tanpi4.testcase \ + tan-pi.testcase \ + tanpi.testcase \ + tan-text.testcase \ + variance.testcase diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/Makefile.in b/src/spatialite/test/sql_stmt_mathsql_tests/Makefile.in new file mode 100644 index 0000000..d396428 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/Makefile.in @@ -0,0 +1,538 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/sql_stmt_mathsql_tests +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = acos10.testcase \ + acos20.testcase \ + acos2.testcase \ + acos.testcase \ + acos-text.testcase \ + asin10.testcase \ + asin1.testcase \ + asin20.testcase \ + asin2.testcase \ + asin-text.testcase \ + atan00.testcase \ + atan0.testcase \ + atan-text.testcase \ + ceilfloat2.testcase \ + ceilfloat.testcase \ + ceil-int.testcase \ + ceilnull.testcase \ + cos00.testcase \ + cos0.testcase \ + cos-text.testcase \ + cot00.testcase \ + cot0.testcase \ + cotpi2.testcase \ + cot-text.testcase \ + degrees45.testcase \ + degrees.testcase \ + degreestext.testcase \ + exp00.testcase \ + exp0.testcase \ + exp10.testcase \ + exp1.testcase \ + expneg.testcase \ + exptext.testcase \ + floor32.testcase \ + floorint.testcase \ + floornull.testcase \ + log10-0.0.testcase \ + log10-100.0.testcase \ + log10-100.testcase \ + log10-text.testcase \ + log2-0.0.testcase \ + log2-0.testcase \ + log2-4.0.testcase \ + log2-4.testcase \ + log2-text.testcase \ + logn00.testcase \ + logn0.testcase \ + logn10.testcase \ + logn1.testcase \ + logn2-01.testcase \ + logn2-02.testcase \ + logn2-2.2.testcase \ + logn2-4.2int.testcase \ + logn2-4.2.testcase \ + logn2-text2.testcase \ + logn2-text3.testcase \ + logn2-text4.testcase \ + logn2-text.testcase \ + logn-text.testcase \ + pi.testcase \ + pow00-1.testcase \ + pow00-2.testcase \ + pow00double.testcase \ + pow00.testcase \ + pow-badarg1.testcase \ + pow-badarg2.testcase \ + pow-edom.testcase \ + pow-fp.testcase \ + rad0.testcase \ + radpi.testcase \ + rad-text.testcase \ + sign00.testcase \ + sign01.testcase \ + sign0.testcase \ + sign10.testcase \ + signeg2int.testcase \ + signeg2.testcase \ + signeg.testcase \ + signtext.testcase \ + sin00.testcase \ + sin0.testcase \ + sin-pi2.testcase \ + sinpi2.testcase \ + sin-pi.testcase \ + sinpi.testcase \ + sin-text.testcase \ + sqrt00.testcase \ + sqrt0.testcase \ + sqrt-10.testcase \ + sqrt-1.testcase \ + sqrt-640.testcase \ + sqrt-64.testcase \ + sqrt-text.testcase \ + stddev.testcase \ + tan00.testcase \ + tan0.testcase \ + tanpi4.testcase \ + tan-pi.testcase \ + tanpi.testcase \ + tan-text.testcase \ + variance.testcase + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/sql_stmt_mathsql_tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/sql_stmt_mathsql_tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/acos-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/acos-text.testcase new file mode 100644 index 0000000..10c6848 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/acos-text.testcase @@ -0,0 +1,7 @@ +acos-text # check of text argument to acos() +:memory: #use in-memory database +SELECT acos("test"); +1 # rows (not including the header row) +1 # columns +acos("test") # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/acos.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/acos.testcase new file mode 100644 index 0000000..d9847ef --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/acos.testcase @@ -0,0 +1,7 @@ +acos(1) +:memory: #use in-memory database +SELECT acos(1); +1 # rows (not including the header row) +1 # columns +acos(1) # header +0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/acos10.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/acos10.testcase new file mode 100644 index 0000000..fbaf4b4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/acos10.testcase @@ -0,0 +1,7 @@ +acos(1.0) +:memory: #use in-memory database +SELECT acos(1.0); +1 # rows (not including the header row) +1 # columns +acos(1.0) # header +0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/acos2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/acos2.testcase new file mode 100644 index 0000000..a1604ad --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/acos2.testcase @@ -0,0 +1,7 @@ +acos(2) +:memory: #use in-memory database +SELECT acos(2); +1 # rows (not including the header row) +1 # columns +acos(2) # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/acos20.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/acos20.testcase new file mode 100644 index 0000000..0c61a1a --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/acos20.testcase @@ -0,0 +1,7 @@ +acos(2.0) +:memory: #use in-memory database +SELECT acos(2.0); +1 # rows (not including the header row) +1 # columns +acos(2.0) # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/asin-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/asin-text.testcase new file mode 100644 index 0000000..0cce86d --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/asin-text.testcase @@ -0,0 +1,7 @@ +asin-text # check of text argument to asin() +:memory: #use in-memory database +SELECT asin("test"); +1 # rows (not including the header row) +1 # columns +asin("test") # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/asin1.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/asin1.testcase new file mode 100644 index 0000000..bb00f60 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/asin1.testcase @@ -0,0 +1,7 @@ +asin(1) +:memory: #use in-memory database +SELECT asin(1); +1 # rows (not including the header row) +1 # columns +asin(1) # header +1.570796326794:14 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/asin10.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/asin10.testcase new file mode 100644 index 0000000..a9f752b --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/asin10.testcase @@ -0,0 +1,7 @@ +asin(1.0) +:memory: #use in-memory database +SELECT asin(1.0); +1 # rows (not including the header row) +1 # columns +asin(1.0) # header +1.570796326794:14 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/asin2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/asin2.testcase new file mode 100644 index 0000000..8ed485d --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/asin2.testcase @@ -0,0 +1,7 @@ +asin(2) +:memory: #use in-memory database +SELECT asin(2); +1 # rows (not including the header row) +1 # columns +asin(2) # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/asin20.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/asin20.testcase new file mode 100644 index 0000000..a437a45 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/asin20.testcase @@ -0,0 +1,7 @@ +asin(2.0) +:memory: #use in-memory database +SELECT asin(2.0); +1 # rows (not including the header row) +1 # columns +asin(2.0) # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/atan-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/atan-text.testcase new file mode 100644 index 0000000..f3e0a9d --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/atan-text.testcase @@ -0,0 +1,8 @@ +atan-text +:memory: # use in-memory database +SELECT atan('test'); +1 # rows (not including the header row) +1 # columns +atan('test') # header +(NULL) + diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/atan0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/atan0.testcase new file mode 100644 index 0000000..ee53585 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/atan0.testcase @@ -0,0 +1,7 @@ +atan(0) +:memory: #use in-memory database +SELECT atan(0); +1 # rows (not including the header row) +1 # columns +atan(0) # header +0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/atan00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/atan00.testcase new file mode 100644 index 0000000..82962a4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/atan00.testcase @@ -0,0 +1,7 @@ +atan(0.0) +:memory: # use in-memory database +SELECT atan(0.0); +1 # rows (not including the header row) +1 # columns +atan(0.0) # header +0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/ceil-int.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/ceil-int.testcase new file mode 100644 index 0000000..819cbf3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/ceil-int.testcase @@ -0,0 +1,7 @@ +ceil(integer) # integer input - this is just the name remember +:memory: +SELECT ceil(3); # the SQL to run +1 # rows +1 # column +ceil(3) # this is the header row +3.0 # this is really the result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat.testcase new file mode 100644 index 0000000..22d5d2d --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat.testcase @@ -0,0 +1,7 @@ +ceil-float +:memory: +SELECT ceil(3.0); # the SQL to run +1 # rows +1 # column +ceil(3.0) # this is the header row +3.0 # this is really the result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat2.testcase new file mode 100644 index 0000000..338b171 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/ceilfloat2.testcase @@ -0,0 +1,7 @@ +ceil-float2 +:memory: +SELECT ceil(3.1); # the SQL to run +1 # rows +1 # column +ceil(3.1) # this is the header row +4.0 # this is really the result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/ceilnull.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/ceilnull.testcase new file mode 100644 index 0000000..99bb1ac --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/ceilnull.testcase @@ -0,0 +1,7 @@ +ceil(null) # text input, expecting null output +:memory: +SELECT ceil("some text"); # the SQL to run +1 # rows +1 # columns +ceil("some text") # this is the header row +(NULL) # this is really the result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/cos-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/cos-text.testcase new file mode 100644 index 0000000..e105038 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/cos-text.testcase @@ -0,0 +1,7 @@ +cos-text +:memory: #use in-memory database +SELECT cos('test'); +1 # rows (not including the header row) +1 # columns +cos('test') # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/cos0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/cos0.testcase new file mode 100644 index 0000000..7831518 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/cos0.testcase @@ -0,0 +1,7 @@ +cos(0) +:memory: #use in-memory database +SELECT cos(0); +1 # rows (not including the header row) +1 # columns +cos(0) # header +1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/cos00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/cos00.testcase new file mode 100644 index 0000000..c3d2a60 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/cos00.testcase @@ -0,0 +1,7 @@ +cos(0.0) +:memory: #use in-memory database +SELECT cos(0.0); +1 # rows (not including the header row) +1 # columns +cos(0.0) # header +1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/cot-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/cot-text.testcase new file mode 100644 index 0000000..08eff3b --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/cot-text.testcase @@ -0,0 +1,7 @@ +cot(text) +:memory: #use in-memory database +SELECT cot("text"); +1 # rows (not including the header row) +1 # columns +cot("text") # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/cot0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/cot0.testcase new file mode 100644 index 0000000..540f43b --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/cot0.testcase @@ -0,0 +1,7 @@ +cot(0) +:memory: #use in-memory database +SELECT cot(0); +1 # rows (not including the header row) +1 # columns +cot(0) # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/cot00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/cot00.testcase new file mode 100644 index 0000000..cfb0659 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/cot00.testcase @@ -0,0 +1,7 @@ +cot(0.0) +:memory: #use in-memory database +SELECT cot(0.0); +1 # rows (not including the header row) +1 # columns +cot(0.0) # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/cotpi2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/cotpi2.testcase new file mode 100644 index 0000000..6e49225 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/cotpi2.testcase @@ -0,0 +1,7 @@ +cot(pi2) +:memory: #use in-memory database +SELECT (1 + cot(pi()/2)); +1 # rows (not including the header row) +1 # columns +(1 + cot(pi()/2)) # header +1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/degrees.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/degrees.testcase new file mode 100644 index 0000000..ccd59c1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/degrees.testcase @@ -0,0 +1,7 @@ +degrees(0) +:memory: #use in-memory database +SELECT degrees(0); +1 # rows (not including the header row) +1 # columns +degrees(0) # header +0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/degrees45.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/degrees45.testcase new file mode 100644 index 0000000..7b89773 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/degrees45.testcase @@ -0,0 +1,7 @@ +degrees45 +:memory: #use in-memory database +SELECT degrees(pi()/4); +1 # rows (not including the header row) +1 # columns +degrees(pi()/4) # header +45.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/degreestext.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/degreestext.testcase new file mode 100644 index 0000000..fa6cf49 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/degreestext.testcase @@ -0,0 +1,7 @@ +degrees-text +:memory: #use in-memory database +SELECT degrees("foo"); +1 # rows (not including the header row) +1 # columns +degrees("foo") # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/exp0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/exp0.testcase new file mode 100644 index 0000000..c5c7a69 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/exp0.testcase @@ -0,0 +1,8 @@ +exp(0) # test of exp() function, with argument 0 +:memory: #use in-memory database +SELECT exp(0); +1 # rows (not including the header row) +1 # columns +exp(0)# header +1.0#result + diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/exp00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/exp00.testcase new file mode 100644 index 0000000..a66071d --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/exp00.testcase @@ -0,0 +1,8 @@ +exp(0.0) # test of exp() function, with argument 0 (i.e. a float) +:memory: #use in-memory database +SELECT exp(0.0); +1 # rows (not including the header row) +1 # columns +exp(0.0)# header +1.0#result + diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/exp1.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/exp1.testcase new file mode 100644 index 0000000..aec7953 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/exp1.testcase @@ -0,0 +1,8 @@ +exp(1) # test of exp() function, with argument 1 +:memory: #use in-memory database +SELECT exp(1); +1 # rows (not including the header row) +1 # columns +exp(1)# header +2.71828182845905:8#result, with limited precision comparision + diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/exp10.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/exp10.testcase new file mode 100644 index 0000000..b5c3e05 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/exp10.testcase @@ -0,0 +1,8 @@ +exp(1.0) # test of exp() function, with argument 1.0 +:memory: #use in-memory database +SELECT exp(1.0); +1 # rows (not including the header row) +1 # columns +exp(1.0)# header +2.71828182845905:8#result, with limited precision comparision + diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/expneg.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/expneg.testcase new file mode 100644 index 0000000..6983762 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/expneg.testcase @@ -0,0 +1,7 @@ +exp-neg # test of exp() function, with negative +:memory: #use in-memory database +SELECT exp(-1.0); +1 # rows (not including the header row) +1 # columns +exp(-1.0)# header +0.36787944:8 diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/exptext.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/exptext.testcase new file mode 100644 index 0000000..64290d1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/exptext.testcase @@ -0,0 +1,8 @@ +exp-text # test of exp() function, with text argument +:memory: #use in-memory database +SELECT exp("hello world"); +1 # rows (not including the header row) +1 # columns +exp("hello world") # header +(NULL) #result + diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/floor32.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/floor32.testcase new file mode 100644 index 0000000..6c48125 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/floor32.testcase @@ -0,0 +1,7 @@ +floor(3.2) # you can use the SQL if you're not feeling imaginative. +:memory: +SELECT floor(3.2); +1 # rows +1 # columns +floor(3.2) # this is the header row +3.0 # this is really the result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/floorint.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/floorint.testcase new file mode 100644 index 0000000..b841b1a --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/floorint.testcase @@ -0,0 +1,7 @@ +floor(integer) # integer input - this is just the name remember +:memory: +SELECT floor(3); # the SQL to run +1 # rows +1 # columns +floor(3) # this is the header row +3.0 # this is really the result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/floornull.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/floornull.testcase new file mode 100644 index 0000000..0591ce7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/floornull.testcase @@ -0,0 +1,7 @@ +floor(null) # text input, expecting null output +:memory: +SELECT floor("some text"); # the SQL to run +1 # rows +1 # columns +floor("some text") # this is the header row +(NULL) # this is really the result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log10-0.0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log10-0.0.testcase new file mode 100644 index 0000000..e80eb3d --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/log10-0.0.testcase @@ -0,0 +1,7 @@ +log10(0.0) +:memory: #use in-memory database +SELECT log10(0.0); +1 # rows (not including the header row) +1 # columns +log10(0.0) # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log10-100.0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log10-100.0.testcase new file mode 100644 index 0000000..b01b50c --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/log10-100.0.testcase @@ -0,0 +1,7 @@ +log10(100.0) +:memory: #use in-memory database +SELECT log10(100.0); +1 # rows (not including the header row) +1 # columns +log10(100.0) # header +2.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log10-100.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log10-100.testcase new file mode 100644 index 0000000..703abb0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/log10-100.testcase @@ -0,0 +1,7 @@ +log10(100) +:memory: #use in-memory database +SELECT log10(100); +1 # rows (not including the header row) +1 # columns +log10(100) # header +2.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log10-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log10-text.testcase new file mode 100644 index 0000000..f437a08 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/log10-text.testcase @@ -0,0 +1,7 @@ +log10(text) +:memory: #use in-memory database +SELECT log10("text"); +1 # rows (not including the header row) +1 # columns +log10("text") # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log2-0.0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log2-0.0.testcase new file mode 100644 index 0000000..84f4d57 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/log2-0.0.testcase @@ -0,0 +1,7 @@ +log2(0.0) +:memory: #use in-memory database +SELECT log2(0.0); +1 # rows (not including the header row) +1 # columns +log2(0.0) # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log2-0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log2-0.testcase new file mode 100644 index 0000000..d063948 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/log2-0.testcase @@ -0,0 +1,7 @@ +log2(0) +:memory: #use in-memory database +SELECT log2(0); +1 # rows (not including the header row) +1 # columns +log2(0) # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log2-4.0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log2-4.0.testcase new file mode 100644 index 0000000..c4e9e1b --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/log2-4.0.testcase @@ -0,0 +1,7 @@ +log2(4.0) +:memory: #use in-memory database +SELECT log2(4.0); +1 # rows (not including the header row) +1 # columns +log2(4.0) # header +2.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log2-4.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log2-4.testcase new file mode 100644 index 0000000..e2c82b0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/log2-4.testcase @@ -0,0 +1,7 @@ +log2(4) +:memory: #use in-memory database +SELECT log2(4); +1 # rows (not including the header row) +1 # columns +log2(4) # header +2.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/log2-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/log2-text.testcase new file mode 100644 index 0000000..fb342de --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/log2-text.testcase @@ -0,0 +1,7 @@ +log2(text) +:memory: #use in-memory database +SELECT log2("text"); +1 # rows (not including the header row) +1 # columns +log2("text") # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn-text.testcase new file mode 100644 index 0000000..8d7382e --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/logn-text.testcase @@ -0,0 +1,7 @@ +logn(text) +:memory: #use in-memory database +SELECT log("text"); +1 # rows (not including the header row) +1 # columns +log("text") # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn0.testcase new file mode 100644 index 0000000..77256ae --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/logn0.testcase @@ -0,0 +1,7 @@ +log(0) +:memory: #use in-memory database +SELECT log(0); +1 # rows (not including the header row) +1 # columns +log(0) # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn00.testcase new file mode 100644 index 0000000..037fc80 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/logn00.testcase @@ -0,0 +1,7 @@ +log(0.0) +:memory: #use in-memory database +SELECT log(0.0); +1 # rows (not including the header row) +1 # columns +log(0.0) # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn1.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn1.testcase new file mode 100644 index 0000000..f01e8bd --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/logn1.testcase @@ -0,0 +1,7 @@ +logn(1) +:memory: #use in-memory database +SELECT log(1); +1 # rows (not including the header row) +1 # columns +log(1) # header +0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn10.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn10.testcase new file mode 100644 index 0000000..805e7ec --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/logn10.testcase @@ -0,0 +1,7 @@ +logn(1.0) +:memory: #use in-memory database +SELECT log(1.0); +1 # rows (not including the header row) +1 # columns +log(1.0) # header +0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-01.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-01.testcase new file mode 100644 index 0000000..944c56a --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-01.testcase @@ -0,0 +1,7 @@ +logn(-0.1, 2) +:memory: #use in-memory database +SELECT log(-0.1, 2); +1 # rows (not including the header row) +1 # columns +log(-0.1, 2) # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-02.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-02.testcase new file mode 100644 index 0000000..5906ab6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-02.testcase @@ -0,0 +1,7 @@ +logn(1.0, 1.0) +:memory: #use in-memory database +SELECT log(1.0, 1.0); +1 # rows (not including the header row) +1 # columns +log(1.0, 1.0) # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-2.2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-2.2.testcase new file mode 100644 index 0000000..55f3014 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-2.2.testcase @@ -0,0 +1,7 @@ +logn(2.0, 2.0) +:memory: #use in-memory database +SELECT log(2.0, 2.0); +1 # rows (not including the header row) +1 # columns +log(2.0, 2.0) # header +1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2.testcase new file mode 100644 index 0000000..6b81202 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2.testcase @@ -0,0 +1,7 @@ +logn(4.0, 2.0) +:memory: #use in-memory database +SELECT log(4.0, 2.0); +1 # rows (not including the header row) +1 # columns +log(4.0, 2.0) # header +2.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2int.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2int.testcase new file mode 100644 index 0000000..1c13a40 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-4.2int.testcase @@ -0,0 +1,7 @@ +logn(4, 2) +:memory: #use in-memory database +SELECT log(4, 2); +1 # rows (not including the header row) +1 # columns +log(4, 2) # header +2.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text.testcase new file mode 100644 index 0000000..27420d9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text.testcase @@ -0,0 +1,7 @@ +logn(text, double) +:memory: #use in-memory database +SELECT log("text", 0.0); +1 # rows (not including the header row) +1 # columns +log("text", 0.0) # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text2.testcase new file mode 100644 index 0000000..c9b7d21 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text2.testcase @@ -0,0 +1,7 @@ +logn(text, double) +:memory: #use in-memory database +SELECT log("text", 0); +1 # rows (not including the header row) +1 # columns +log("text", 0) # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text3.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text3.testcase new file mode 100644 index 0000000..4576048 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text3.testcase @@ -0,0 +1,7 @@ +logn(text, double) +:memory: #use in-memory database +SELECT log(1, "text"); +1 # rows (not including the header row) +1 # columns +log(1, "text") # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text4.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text4.testcase new file mode 100644 index 0000000..b4b102b --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/logn2-text4.testcase @@ -0,0 +1,7 @@ +logn(text, double) +:memory: #use in-memory database +SELECT log(1.0, "text"); +1 # rows (not including the header row) +1 # columns +log(1.0, "text") # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pi.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pi.testcase new file mode 100644 index 0000000..d641d6d --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/pi.testcase @@ -0,0 +1,7 @@ +pi +:memory: # use in-memory database +SELECT pi(); +1 # rows (not including the header row) +1 # columns +pi() # header +3.141592653589:14 # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg1.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg1.testcase new file mode 100644 index 0000000..919ff56 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg1.testcase @@ -0,0 +1,7 @@ +pow(0.0, "test") # test of pow() function with bad arguments +:memory: #use in-memory database +SELECT pow(0.0, "test"); +1 # rows (not including the header row) +1 # columns +pow(0.0, "test") # header +(NULL) # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg2.testcase new file mode 100644 index 0000000..fcfbc8d --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/pow-badarg2.testcase @@ -0,0 +1,7 @@ +pow("test", 1) # test of pow() function with bad arguments +:memory: #use in-memory database +SELECT pow("test", 1); +1 # rows (not including the header row) +1 # columns +pow("test", 1) # header +(NULL) # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow-edom.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow-edom.testcase new file mode 100644 index 0000000..0a0e3c7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/pow-edom.testcase @@ -0,0 +1,7 @@ +pow(-2.1, 3.6) # test of pow() function +:memory: #use in-memory database +SELECT pow(-2.1, 3.6); +1 # rows (not including the header row) +1 # columns +pow(-2.1, 3.6) # header +(NULL) # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow-fp.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow-fp.testcase new file mode 100644 index 0000000..0e532a3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/pow-fp.testcase @@ -0,0 +1,7 @@ +pow(0, -3.6) # test of pow() function +:memory: #use in-memory database +SELECT pow(0, -3.6); +1 # rows (not including the header row) +1 # columns +pow(0, -3.6) # header +(NULL) # result - its basically division by zero. diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow00-1.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow00-1.testcase new file mode 100644 index 0000000..24ade7c --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/pow00-1.testcase @@ -0,0 +1,7 @@ +pow(0.0, 0) # test of pow() function +:memory: #use in-memory database +SELECT pow(0.0, 0); +1 # rows (not including the header row) +1 # columns +pow(0.0, 0) # header +1.0 # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow00-2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow00-2.testcase new file mode 100644 index 0000000..b7ee8f7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/pow00-2.testcase @@ -0,0 +1,7 @@ +pow(0, 0.0) # test of pow() function +:memory: #use in-memory database +SELECT pow(0, 0.0); +1 # rows (not including the header row) +1 # columns +pow(0, 0.0) # header +1.0 # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow00.testcase new file mode 100644 index 0000000..e535008 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/pow00.testcase @@ -0,0 +1,7 @@ +pow(0, 0) # test of pow() function +:memory: #use in-memory database +SELECT pow(0, 0); +1 # rows (not including the header row) +1 # columns +pow(0, 0) # header +1.0 # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/pow00double.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/pow00double.testcase new file mode 100644 index 0000000..d7eadc6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/pow00double.testcase @@ -0,0 +1,7 @@ +pow(0.0, 0.0) # test of pow() function +:memory: #use in-memory database +SELECT pow(0.0, 0.0); +1 # rows (not including the header row) +1 # columns +pow(0.0, 0.0) # header +1.0 # result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/rad-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/rad-text.testcase new file mode 100644 index 0000000..e71b308 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/rad-text.testcase @@ -0,0 +1,7 @@ +radians(text) # test of radians() +:memory: #use in-memory database +SELECT radians("text"); +1 # rows (not including the header row) +1 # columns +radians("text") # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/rad0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/rad0.testcase new file mode 100644 index 0000000..ec08505 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/rad0.testcase @@ -0,0 +1,7 @@ +radians(0) # test of radians() +:memory: #use in-memory database +SELECT radians(0); +1 # rows (not including the header row) +1 # columns +radians(0) # header +0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/radpi.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/radpi.testcase new file mode 100644 index 0000000..ee265a4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/radpi.testcase @@ -0,0 +1,7 @@ +radians(pi()) # test of radians() +:memory: #use in-memory database +SELECT radians(180.0); +1 # rows (not including the header row) +1 # columns +radians(180.0) # header +3.1415:6 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sign0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sign0.testcase new file mode 100644 index 0000000..4603047 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sign0.testcase @@ -0,0 +1,7 @@ +sign0 +:memory: +SELECT sign(0); # the SQL to run +1 # rows +1 # column +sign(0) # this is the header row +0.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sign00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sign00.testcase new file mode 100644 index 0000000..6916676 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sign00.testcase @@ -0,0 +1,7 @@ +sign00 +:memory: +SELECT sign(0.0); # the SQL to run +1 # rows +1 # column +sign(0.0) # this is the header row +0.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sign01.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sign01.testcase new file mode 100644 index 0000000..c371cb3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sign01.testcase @@ -0,0 +1,7 @@ +sign01 +:memory: +SELECT sign(0.1); # the SQL to run +1 # rows +1 # column +sign(0.1) # this is the header row +1.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sign10.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sign10.testcase new file mode 100644 index 0000000..78a4c48 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sign10.testcase @@ -0,0 +1,7 @@ +sign10 +:memory: +SELECT sign(1.0); # the SQL to run +1 # rows +1 # column +sign(1.0) # this is the header row +1.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/signeg.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/signeg.testcase new file mode 100644 index 0000000..8f7d982 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/signeg.testcase @@ -0,0 +1,7 @@ +sign-neg +:memory: +SELECT sign(-1.0); # the SQL to run +1 # rows +1 # column +sign(-1.0) # this is the header row +-1.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/signeg2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/signeg2.testcase new file mode 100644 index 0000000..a41b35f --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/signeg2.testcase @@ -0,0 +1,7 @@ +sign-neg2 +:memory: +SELECT sign(-2.0); # the SQL to run +1 # rows +1 # column +sign(-2.0) # this is the header row +-1.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/signeg2int.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/signeg2int.testcase new file mode 100644 index 0000000..f644772 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/signeg2int.testcase @@ -0,0 +1,7 @@ +sign-neg2int +:memory: +SELECT sign(-2); # the SQL to run +1 # rows +1 # column +sign(-2) # this is the header row +-1.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/signtext.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/signtext.testcase new file mode 100644 index 0000000..0668d73 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/signtext.testcase @@ -0,0 +1,7 @@ +sign-text +:memory: +SELECT sign("text"); # the SQL to run +1 # rows +1 # column +sign("text") # this is the header row +(NULL) # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sin-pi.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sin-pi.testcase new file mode 100644 index 0000000..27784a8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sin-pi.testcase @@ -0,0 +1,7 @@ +sin(-pi) +:memory: #use in-memory database +SELECT 1 + sin(-pi()); +1 # rows (not including the header row) +1 # columns +1 + sin(-pi()) # header +1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sin-pi2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sin-pi2.testcase new file mode 100644 index 0000000..310ef51 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sin-pi2.testcase @@ -0,0 +1,7 @@ +sin(-pi/2) +:memory: #use in-memory database +SELECT sin(-pi()/2); +1 # rows (not including the header row) +1 # columns +sin(-pi()/2) # header +-1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sin-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sin-text.testcase new file mode 100644 index 0000000..12b274b --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sin-text.testcase @@ -0,0 +1,7 @@ +sin(text) +:memory: #use in-memory database +SELECT sin("text"); +1 # rows (not including the header row) +1 # columns +sin("text") # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sin0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sin0.testcase new file mode 100644 index 0000000..5fc40f4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sin0.testcase @@ -0,0 +1,7 @@ +sin(0) +:memory: #use in-memory database +SELECT sin(0); +1 # rows (not including the header row) +1 # columns +sin(0) # header +0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sin00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sin00.testcase new file mode 100644 index 0000000..1c00940 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sin00.testcase @@ -0,0 +1,7 @@ +sin(0.0) +:memory: #use in-memory database +SELECT sin(0.0); +1 # rows (not including the header row) +1 # columns +sin(0.0) # header +0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sinpi.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sinpi.testcase new file mode 100644 index 0000000..9b8f8c3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sinpi.testcase @@ -0,0 +1,7 @@ +sin(pi) +:memory: #use in-memory database +SELECT 1 + sin(pi()); +1 # rows (not including the header row) +1 # columns +1 + sin(pi()) # header +1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sinpi2.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sinpi2.testcase new file mode 100644 index 0000000..b11de6f --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sinpi2.testcase @@ -0,0 +1,7 @@ +sin(pi/2) +:memory: #use in-memory database +SELECT sin(pi()/2); +1 # rows (not including the header row) +1 # columns +sin(pi()/2) # header +1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-1.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-1.testcase new file mode 100644 index 0000000..547f894 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-1.testcase @@ -0,0 +1,7 @@ +sqrt(-1) +:memory: +SELECT sqrt(-1); # the SQL to run +1 # rows +1 # column +sqrt(-1) # this is the header row +(NULL) # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-10.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-10.testcase new file mode 100644 index 0000000..6308f3f --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-10.testcase @@ -0,0 +1,7 @@ +sqrt(-1.0) +:memory: +SELECT sqrt(-1.0); # the SQL to run +1 # rows +1 # column +sqrt(-1.0) # this is the header row +(NULL) # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-64.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-64.testcase new file mode 100644 index 0000000..9497eed --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-64.testcase @@ -0,0 +1,7 @@ +sqrt(64) +:memory: +SELECT sqrt(64); # the SQL to run +1 # rows +1 # column +sqrt(64) # this is the header row +8.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-640.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-640.testcase new file mode 100644 index 0000000..ad69f51 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-640.testcase @@ -0,0 +1,7 @@ +sqrt(64.0) +:memory: +SELECT sqrt(64.0); # the SQL to run +1 # rows +1 # column +sqrt(64.0) # this is the header row +8.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-text.testcase new file mode 100644 index 0000000..23d7beb --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt-text.testcase @@ -0,0 +1,7 @@ +sqrt(text) +:memory: +SELECT sqrt("text"); # the SQL to run +1 # rows +1 # column +sqrt("text") # this is the header row +(NULL) # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt0.testcase new file mode 100644 index 0000000..23d7beb --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt0.testcase @@ -0,0 +1,7 @@ +sqrt(text) +:memory: +SELECT sqrt("text"); # the SQL to run +1 # rows +1 # column +sqrt("text") # this is the header row +(NULL) # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/sqrt00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt00.testcase new file mode 100644 index 0000000..9f9dbc5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/sqrt00.testcase @@ -0,0 +1,7 @@ +sqrt(0) +:memory: +SELECT sqrt(0); # the SQL to run +1 # rows +1 # column +sqrt(0) # this is the header row +0.0 # this is really the result \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/stddev.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/stddev.testcase new file mode 100644 index 0000000..cbaa13b --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/stddev.testcase @@ -0,0 +1,21 @@ +stddev +sql_stmt_tests/testdb1.sqlite +SELECT stddev_pop(a), stddev_pop(b), stddev_pop(nulls), stddev_pop(blobs), stddev_samp(a), stddev_samp(b), stddev_samp(blobs), stddev_samp(nulls) from data1; +1 # rows (not including the header row) +8 # columns +stddev_pop(a) +stddev_pop(b) +stddev_pop(nulls) +stddev_pop(blobs) +stddev_samp(a) +stddev_samp(b) +stddev_samp(blobs) +stddev_samp(nulls) +10.2211654:8 +12.252709:8 +(NULL) +(NULL) +11.1967257:8 +13.422171:8 +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/tan-pi.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/tan-pi.testcase new file mode 100644 index 0000000..145335b --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/tan-pi.testcase @@ -0,0 +1,7 @@ +tan(-pi) +:memory: #use in-memory database +SELECT 1 + tan(-pi()); +1 # rows (not including the header row) +1 # columns +1 + tan(-pi()) # header +1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/tan-text.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/tan-text.testcase new file mode 100644 index 0000000..0c437d6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/tan-text.testcase @@ -0,0 +1,7 @@ +tan(text) +:memory: #use in-memory database +SELECT tan("text"); +1 # rows (not including the header row) +1 # columns +tan("text") # header +(NULL) #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/tan0.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/tan0.testcase new file mode 100644 index 0000000..917a4c2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/tan0.testcase @@ -0,0 +1,7 @@ +tan(0) +:memory: #use in-memory database +SELECT tan(0); +1 # rows (not including the header row) +1 # columns +tan(0) # header +0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/tan00.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/tan00.testcase new file mode 100644 index 0000000..ae17b9c --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/tan00.testcase @@ -0,0 +1,7 @@ +tan(0.0) +:memory: #use in-memory database +SELECT tan(0.0); +1 # rows (not including the header row) +1 # columns +tan(0.0) # header +0.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/tanpi.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/tanpi.testcase new file mode 100644 index 0000000..be34bde --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/tanpi.testcase @@ -0,0 +1,7 @@ +tan(pi) +:memory: #use in-memory database +SELECT 1 + tan(pi()); +1 # rows (not including the header row) +1 # columns +1 + tan(pi()) # header +1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/tanpi4.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/tanpi4.testcase new file mode 100644 index 0000000..11c98d2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/tanpi4.testcase @@ -0,0 +1,7 @@ +tan(pi/4) +:memory: #use in-memory database +SELECT tan(pi()/4); +1 # rows (not including the header row) +1 # columns +tan(pi()/4) # header +1.0 #result diff --git a/src/spatialite/test/sql_stmt_mathsql_tests/variance.testcase b/src/spatialite/test/sql_stmt_mathsql_tests/variance.testcase new file mode 100644 index 0000000..33f9ae2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_mathsql_tests/variance.testcase @@ -0,0 +1,21 @@ +variance +sql_stmt_tests/testdb1.sqlite +SELECT var_pop(a), var_pop(b), var_pop(nulls), var_pop(blobs), var_samp(a), var_samp(b), var_samp(blobs), var_samp(nulls) from data1; +1 # rows (not including the header row) +8 # columns +var_pop(a) +var_pop(b) +var_pop(nulls) +var_pop(blobs) +var_samp(a) +var_samp(b) +var_samp(blobs) +var_samp(nulls) +104.472222222222:10 +150.12888888888:10 +(NULL) +(NULL) +125.36666666666:10 +180.15466666666:10 +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/Makefile.am b/src/spatialite/test/sql_stmt_proj_tests/Makefile.am new file mode 100644 index 0000000..e47f83a --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/Makefile.am @@ -0,0 +1,72 @@ + +EXTRA_DIST = askml10.testcase \ + askml11.testcase \ + askml1.testcase \ + askml2.testcase \ + askml3.testcase \ + askml4.testcase \ + askml5.testcase \ + askml6.testcase \ + askml7.testcase \ + askml8.testcase \ + askml9.testcase \ + fromgml42.testcase \ + output10.testcase \ + output11.testcase \ + output12.testcase \ + output13.testcase \ + output14.testcase \ + output15.testcase \ + output16.testcase \ + output17.testcase \ + output18.testcase \ + output19.testcase \ + output1.testcase \ + output20.testcase \ + output21.testcase \ + output22.testcase \ + output23.testcase \ + output24.testcase \ + output25.testcase \ + output26.testcase \ + output27.testcase \ + output28.testcase \ + output29.testcase \ + output2.testcase \ + output30.testcase \ + output31.testcase \ + output32.testcase \ + output33.testcase \ + output34.testcase \ + output35.testcase \ + output36.testcase \ + output37.testcase \ + output38.testcase \ + output3.testcase \ + output4.testcase \ + output5.testcase \ + output6.testcase \ + output7.testcase \ + output8.testcase \ + output9.testcase \ + transform10.testcase \ + transform11.testcase \ + transform12.testcase \ + transform13.testcase \ + transform14.testcase \ + transform15.testcase \ + transform16.testcase \ + transform17.testcase \ + transform18.testcase \ + transform19.testcase \ + transform1.testcase \ + transform20.testcase \ + transform21.testcase \ + transform2.testcase \ + transform3.testcase \ + transform4.testcase \ + transform5.testcase \ + transform6.testcase \ + transform7.testcase \ + transform8.testcase \ + transform9.testcase diff --git a/src/spatialite/test/sql_stmt_proj_tests/Makefile.in b/src/spatialite/test/sql_stmt_proj_tests/Makefile.in new file mode 100644 index 0000000..aae1b09 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/Makefile.in @@ -0,0 +1,508 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/sql_stmt_proj_tests +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = askml10.testcase \ + askml11.testcase \ + askml1.testcase \ + askml2.testcase \ + askml3.testcase \ + askml4.testcase \ + askml5.testcase \ + askml6.testcase \ + askml7.testcase \ + askml8.testcase \ + askml9.testcase \ + fromgml42.testcase \ + output10.testcase \ + output11.testcase \ + output12.testcase \ + output13.testcase \ + output14.testcase \ + output15.testcase \ + output16.testcase \ + output17.testcase \ + output18.testcase \ + output19.testcase \ + output1.testcase \ + output20.testcase \ + output21.testcase \ + output22.testcase \ + output23.testcase \ + output24.testcase \ + output25.testcase \ + output26.testcase \ + output27.testcase \ + output28.testcase \ + output29.testcase \ + output2.testcase \ + output30.testcase \ + output31.testcase \ + output32.testcase \ + output33.testcase \ + output34.testcase \ + output35.testcase \ + output36.testcase \ + output37.testcase \ + output38.testcase \ + output3.testcase \ + output4.testcase \ + output5.testcase \ + output6.testcase \ + output7.testcase \ + output8.testcase \ + output9.testcase \ + transform10.testcase \ + transform11.testcase \ + transform12.testcase \ + transform13.testcase \ + transform14.testcase \ + transform15.testcase \ + transform16.testcase \ + transform17.testcase \ + transform18.testcase \ + transform19.testcase \ + transform1.testcase \ + transform20.testcase \ + transform21.testcase \ + transform2.testcase \ + transform3.testcase \ + transform4.testcase \ + transform5.testcase \ + transform6.testcase \ + transform7.testcase \ + transform8.testcase \ + transform9.testcase + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/sql_stmt_proj_tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/sql_stmt_proj_tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml1.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml1.testcase new file mode 100644 index 0000000..2197d26 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/askml1.testcase @@ -0,0 +1,7 @@ +askml - 2 arg bad precision (error) +:memory: #use in-memory database +SELECT askml(GeomFromText("Point(1 2)", 4326), "hello") +1 # rows (not including the header row) +1 # columns +askml(GeomFromText("Point(1 2)", 4326), "hello") +(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml10.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml10.testcase new file mode 100644 index 0000000..31671ba --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/askml10.testcase @@ -0,0 +1,7 @@ +askml - 4 arg int descriptions excessive precision +:memory: #use in-memory database +SELECT askml(2, 3, GeomFromText("Point(1 2)", 4326), 44) +1 # rows (not including the header row) +1 # columns +askml(2, 3, GeomFromText("Point(1 2)", 4326), 44) +231,2 diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml11.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml11.testcase new file mode 100644 index 0000000..46f8317 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/askml11.testcase @@ -0,0 +1,7 @@ +askml - 2 arg int descriptions excessive precision +:memory: #use in-memory database +SELECT askml(GeomFromText("Point(1 2)", 4326), 44) +1 # rows (not including the header row) +1 # columns +askml(GeomFromText("Point(1 2)", 4326), 44) +1,2 diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml2.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml2.testcase new file mode 100644 index 0000000..7a59fb9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/askml2.testcase @@ -0,0 +1,7 @@ +askml - 2 arg weird SRID (error) +:memory: #use in-memory database +SELECT askml(GeomFromText("Point(1 2)", 9999989), 4) +1 # rows (not including the header row) +1 # columns +askml(GeomFromText("Point(1 2)", 9999989), 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml3.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml3.testcase new file mode 100644 index 0000000..7184d3f --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/askml3.testcase @@ -0,0 +1,7 @@ +askml - 4 arg int descriptions +:memory: #use in-memory database +SELECT askml(2, 3, GeomFromText("Point(1 2)", 4326), 4) +1 # rows (not including the header row) +1 # columns +askml(2, 3, GeomFromText("Point(1 2)", 4326), 4) +231,2 diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml4.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml4.testcase new file mode 100644 index 0000000..dd5d254 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/askml4.testcase @@ -0,0 +1,8 @@ +askml - 4 arg float descriptions +:memory: #use in-memory database +SELECT askml(2.5, 3.2, GeomFromText("Point(1 2)", 4326), 4) +1 # rows (not including the header row) +1 # columns +askml(2.5, 3.2, GeomFromText("Point(1 2)", 4326), 4) +2.5000003.2000001,2 + diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml5.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml5.testcase new file mode 100644 index 0000000..fd48289 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/askml5.testcase @@ -0,0 +1,8 @@ +askml - 4 arg blob descriptions +:memory: #use in-memory database +SELECT askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 4326), 4) +1 # rows (not including the header row) +1 # columns +askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 4326), 4) +BLOBBLOB1,2 + diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml6.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml6.testcase new file mode 100644 index 0000000..6ba20e8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/askml6.testcase @@ -0,0 +1,8 @@ +askml - 4 arg blob descriptions, bad precision (error) +:memory: #use in-memory database +SELECT askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 4326), 4.2) +1 # rows (not including the header row) +1 # columns +askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 4326), 4.2) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml7.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml7.testcase new file mode 100644 index 0000000..b4b9ec9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/askml7.testcase @@ -0,0 +1,8 @@ +askml - 4 arg blob descriptions, weird SRID (error) +:memory: #use in-memory database +SELECT askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 9999989), 4) +1 # rows (not including the header row) +1 # columns +askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 9999989), 4) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml8.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml8.testcase new file mode 100644 index 0000000..b53d017 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/askml8.testcase @@ -0,0 +1,8 @@ +askml - 4 arg blob descriptions, GDA94 +:memory: #use in-memory database +SELECT askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 4283), 4) +1 # rows (not including the header row) +1 # columns +askml(zeroblob(10), zeroblob(12), GeomFromText("Point(1 2)", 4283), 4) +BLOBBLOB1,2 + diff --git a/src/spatialite/test/sql_stmt_proj_tests/askml9.testcase b/src/spatialite/test/sql_stmt_proj_tests/askml9.testcase new file mode 100644 index 0000000..811da35 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/askml9.testcase @@ -0,0 +1,8 @@ +askml - 4 arg null descriptions +:memory: #use in-memory database +SELECT askml(null, null, GeomFromText("Point(1 2)", 4326), 4) +1 # rows (not including the header row) +1 # columns +askml(null, null, GeomFromText("Point(1 2)", 4326), 4) +NULLNULL1,2 + diff --git a/src/spatialite/test/sql_stmt_proj_tests/fromgml42.testcase b/src/spatialite/test/sql_stmt_proj_tests/fromgml42.testcase new file mode 100644 index 0000000..9a746f4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/fromgml42.testcase @@ -0,0 +1,7 @@ +FromGML - multipointZ, multiple SRID, no namespace +:memory: #use in-memory database +SELECT AsText(GeomFromGml('1,2,3.22,4,3.2')) +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGml('1,2,3.22,4,3.2')):0 +MULTIPOINT Z(1 2 3.2, -4.356405 0.000738 79.631063) diff --git a/src/spatialite/test/sql_stmt_proj_tests/output1.testcase b/src/spatialite/test/sql_stmt_proj_tests/output1.testcase new file mode 100644 index 0000000..9f4abd9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output1.testcase @@ -0,0 +1,18 @@ +Output format tests - POLYGON, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT GeomFromEWkt("SRID=4326;POLYGON((0 0, 1 1, 0 2, -1 1, 0 0))") as geom) dummy; +1 # rows (not including the header row) +6 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +POLYGON((0 0, 1 1, 0 2, -1 1, 0 0)) +0,0 1,1 0,2 -1,1 0,0 +0,0 1,1 0,2 -1,1 0,0:0 +{"type":"Polygon","coordinates":[[[0,0],[1,1],[0,2],[-1,1],[0,0]]]}:0 +POLYGON((0 0,1 1,0 2,-1 1,0 0)) +SRID=4326;POLYGON((0 0,1 1,0 2,-1 1,0 0)) + diff --git a/src/spatialite/test/sql_stmt_proj_tests/output10.testcase b/src/spatialite/test/sql_stmt_proj_tests/output10.testcase new file mode 100644 index 0000000..3636307 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output10.testcase @@ -0,0 +1,19 @@ +Output format tests - POINT via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;POINT(-1 1)") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +POINT(-1 1) +-1,1 +-1,1:0 +{"type":"Point","coordinates":[-1,1]}:0 +POINT(-1 1) +SRID=4326;POINT(-1 1) +3031303130303030323045363130303030303030303030303030303030304630424630303030303030303030303046303346 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output11.testcase b/src/spatialite/test/sql_stmt_proj_tests/output11.testcase new file mode 100644 index 0000000..23c3aa1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output11.testcase @@ -0,0 +1,19 @@ +Output format tests - POINTZ via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;POINT(-1 1 2.3)") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(GeomFromWkb(AsBinary(geom))) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +POINT Z(-1 1 2.3) +-1,1,2.3 +-1,1,2.3:0 +{"type":"Point","coordinates":[-1,1,2.3]}:0 +POINT(-1 1) +SRID=4326;POINT(-1 1 2.3) +303130313030303041304536313030303030303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output12.testcase b/src/spatialite/test/sql_stmt_proj_tests/output12.testcase new file mode 100644 index 0000000..0932d5a --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output12.testcase @@ -0,0 +1,19 @@ +Output format tests - POINTM via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;POINTM(-1 1 2.3)") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(GeomFromWkb(AsBinary(geom))) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +POINT M(-1 1 2.3) +-1,1 +-1,1:0 +{"type":"Point","coordinates":[-1,1]}:0 +POINT(-1 1) +SRID=4326;POINTM(-1 1 2.3) +303130313030303036304536313030303030303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output13.testcase b/src/spatialite/test/sql_stmt_proj_tests/output13.testcase new file mode 100644 index 0000000..2930501 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output13.testcase @@ -0,0 +1,19 @@ +Output format tests - POINTZM via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;POINT(-1 1 2.3 4)") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(GeomFromWkb(AsBinary(geom))) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +POINT ZM(-1 1 2.3 4) +-1,1,2.3 +-1,1,2.3:0 +{"type":"Point","coordinates":[-1,1,2.3]}:0 +POINT(-1 1) +SRID=4326;POINT(-1 1 2.3 4) +30313031303030304530453631303030303030303030303030303030303046304246303030303030303030303030463033463636363636363636363636363032343030303030303030303030303031303430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output14.testcase b/src/spatialite/test/sql_stmt_proj_tests/output14.testcase new file mode 100644 index 0000000..1331024 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output14.testcase @@ -0,0 +1,19 @@ +Output format tests - LINESTRINGZ via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;LINESTRING(-1 1 2.3, 1 -2 4.6)") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(GeomFromWkb(AsBinary(geom))) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +LINESTRING Z(-1 1 2.3, 1 -2 4.6) +-1,1,2.3 1,-2,4.6 +-1,1,2.3 1,-2,4.6:0 +{"type":"LineString","coordinates":[[-1,1,2.3],[1,-2,4.6]]}:0 +LINESTRING(-1 1,1 -2) +SRID=4326;LINESTRING(-1 1 2.3,1 -2 4.6) +3031303230303030413045363130303030303032303030303030303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430303030303030303030303030463033463030303030303030303030303030433036363636363636363636363631323430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output15.testcase b/src/spatialite/test/sql_stmt_proj_tests/output15.testcase new file mode 100644 index 0000000..351017d --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output15.testcase @@ -0,0 +1,19 @@ +Output format tests - LINESTRINGM via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;LINESTRINGM(-1 1 2.3, 1 -2 4.6)") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(GeomFromWkb(AsBinary(geom))) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +LINESTRING M(-1 1 2.3, 1 -2 4.6) +-1,1 1,-2 +-1,1 1,-2:0 +{"type":"LineString","coordinates":[[-1,1],[1,-2]]}:0 +LINESTRING(-1 1,1 -2) +SRID=4326;LINESTRINGM(-1 1 2.3,1 -2 4.6) +3031303230303030363045363130303030303032303030303030303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430303030303030303030303030463033463030303030303030303030303030433036363636363636363636363631323430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output16.testcase b/src/spatialite/test/sql_stmt_proj_tests/output16.testcase new file mode 100644 index 0000000..7c21316 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output16.testcase @@ -0,0 +1,19 @@ +Output format tests - LINESTRINGZM via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;LINESTRING(-1 1 2.3 -1, 1 -2 4.6 -6)") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(GeomFromWkb(AsBinary(geom))) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +LINESTRING ZM(-1 1 2.3 -1, 1 -2 4.6 -6) +-1,1,2.3 1,-2,4.6 +-1,1,2.3 1,-2,4.6:0 +{"type":"LineString","coordinates":[[-1,1,2.3],[1,-2,4.6]]}:0 +LINESTRING(-1 1,1 -2) +SRID=4326;LINESTRING(-1 1 2.3 -1,1 -2 4.6 -6):0 +30313032303030304530453631303030303030323030303030303030303030303030303030304630424630303030303030303030303046303346363636363636363636363636303234303030303030303030303030304630424630303030303030303030303046303346303030303030303030303030303043303636363636363636363636363132343030303030303030303030303031384330 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output17.testcase b/src/spatialite/test/sql_stmt_proj_tests/output17.testcase new file mode 100644 index 0000000..81c5a7f --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output17.testcase @@ -0,0 +1,19 @@ +Output format tests - POLYGONZ via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;POLYGON((-10 -10 1, -10 10 2, 10 10 3, 10 -10 4, -10 -10 1),(-1 1 2.3, 1 -2 4.6, 0 -2 1.6, -1 1 2.3))") as geom) dummy +1 # rows (not including the header row) +7 # columns +AsText(GeomFromWkb(AsBinary(geom))) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +POLYGON Z((-10 -10 1, -10 10 2, 10 10 3, 10 -10 4, -10 -10 1), (-1 1 2.3, 1 -2 4.6, 0 -2 1.6, -1 1 2.3)) +-10,-10,1 -10,10,2 10,10,3 10,-10,4 -10,-10,1-1,1,2.3 1,-2,4.6 0,-2,1.6 -1,1,2.3 +-10,-10,1 -10,10,2 10,10,3 10,-10,4 -10,-10,1-1,1,2.3 1,-2,4.6 0,-2,1.6 -1,1,2.3:0 +{"type":"Polygon","coordinates":[[[-10,-10,1],[-10,10,2],[10,10,3],[10,-10,4],[-10,-10,1]],[[-1,1,2.3],[1,-2,4.6],[0,-2,1.6],[-1,1,2.3]]]}:0 +POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-1 1,1 -2,0 -2,-1 1)) +SRID=4326;POLYGON((-10 -10 1,-10 10 2,10 10 3,10 -10 4,-10 -10 1),(-1 1 2.3,1 -2 4.6,0 -2 1.6,-1 1 2.3)) +303130333030303041304536313030303030303230303030303030353030303030303030303030303030303030303234433030303030303030303030303032344330303030303030303030303030463033463030303030303030303030303234433030303030303030303030303032343430303030303030303030303030303034303030303030303030303030303234343030303030303030303030303032343430303030303030303030303030303834303030303030303030303030303234343030303030303030303030303032344330303030303030303030303030313034303030303030303030303030303234433030303030303030303030303032344330303030303030303030303030463033463034303030303030303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430303030303030303030303030463033463030303030303030303030303030433036363636363636363636363631323430303030303030303030303030303030303030303030303030303030303030433039413939393939393939393946393346303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output18.testcase b/src/spatialite/test/sql_stmt_proj_tests/output18.testcase new file mode 100644 index 0000000..24fbab6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output18.testcase @@ -0,0 +1,19 @@ +Output format tests - POLYGONM via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;POLYGONM((-10 -10 1, -10 10 2, 10 10 3, 10 -10 4, -10 -10 1),(-1 1 2.3, 1 -2 4.6, 0 -2 1.6, -1 1 2.3))") as geom) dummy +1 # rows (not including the header row) +7 # columns +AsText(GeomFromWkb(AsBinary(geom))) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +POLYGON M((-10 -10 1, -10 10 2, 10 10 3, 10 -10 4, -10 -10 1), (-1 1 2.3, 1 -2 4.6, 0 -2 1.6, -1 1 2.3)) +-10,-10 -10,10 10,10 10,-10 -10,-10-1,1 1,-2 0,-2 -1,1 +-10,-10 -10,10 10,10 10,-10 -10,-10-1,1 1,-2 0,-2 -1,1:0 +{"type":"Polygon","coordinates":[[[-10,-10],[-10,10],[10,10],[10,-10],[-10,-10]],[[-1,1],[1,-2],[0,-2],[-1,1]]]}:0 +POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-1 1,1 -2,0 -2,-1 1)):0 +SRID=4326;POLYGONM((-10 -10 1,-10 10 2,10 10 3,10 -10 4,-10 -10 1),(-1 1 2.3,1 -2 4.6,0 -2 1.6,-1 1 2.3)) +303130333030303036304536313030303030303230303030303030353030303030303030303030303030303030303234433030303030303030303030303032344330303030303030303030303030463033463030303030303030303030303234433030303030303030303030303032343430303030303030303030303030303034303030303030303030303030303234343030303030303030303030303032343430303030303030303030303030303834303030303030303030303030303234343030303030303030303030303032344330303030303030303030303030313034303030303030303030303030303234433030303030303030303030303032344330303030303030303030303030463033463034303030303030303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430303030303030303030303030463033463030303030303030303030303030433036363636363636363636363631323430303030303030303030303030303030303030303030303030303030303030433039413939393939393939393946393346303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output19.testcase b/src/spatialite/test/sql_stmt_proj_tests/output19.testcase new file mode 100644 index 0000000..4fce0f1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output19.testcase @@ -0,0 +1,19 @@ +Output format tests - POLYGONZM via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(GeomFromWkb(AsBinary(geom))), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;POLYGON((-10 -10 1 4, -10 10 2 5, 10 10 3 6.8, 10 -10 4 5, -10 -10 1 4),(-1 1 2.3 1, 1 -2 4.6 2, 0 -2 1.6 3.333, -1 1 2.3 1))") as geom) dummy +1 # rows (not including the header row) +7 # columns +AsText(GeomFromWkb(AsBinary(geom))) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +POLYGON ZM((-10 -10 1 4, -10 10 2 5, 10 10 3 6.8, 10 -10 4 5, -10 -10 1 4), (-1 1 2.3 1, 1 -2 4.6 2, 0 -2 1.6 3.333, -1 1 2.3 1)) +-10,-10,1 -10,10,2 10,10,3 10,-10,4 -10,-10,1-1,1,2.3 1,-2,4.6 0,-2,1.6 -1,1,2.3 +-10,-10,1 -10,10,2 10,10,3 10,-10,4 -10,-10,1-1,1,2.3 1,-2,4.6 0,-2,1.6 -1,1,2.3:0 +{"type":"Polygon","coordinates":[[[-10,-10,1],[-10,10,2],[10,10,3],[10,-10,4],[-10,-10,1]],[[-1,1,2.3],[1,-2,4.6],[0,-2,1.6],[-1,1,2.3]]]}:0 +POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-1 1,1 -2,0 -2,-1 1)) +SRID=4326;POLYGON((-10 -10 1 4,-10 10 2 5,10 10 3 6.8,10 -10 4 5,-10 -10 1 4),(-1 1 2.3 1,1 -2 4.6 2,0 -2 1.6 3.333,-1 1 2.3 1)) +303130333030303045304536313030303030303230303030303030353030303030303030303030303030303030303234433030303030303030303030303032344330303030303030303030303030463033463030303030303030303030303130343030303030303030303030303032344330303030303030303030303030323434303030303030303030303030303030343030303030303030303030303031343430303030303030303030303030323434303030303030303030303030303234343030303030303030303030303030383430333333333333333333333333314234303030303030303030303030303234343030303030303030303030303032344330303030303030303030303030313034303030303030303030303030303134343030303030303030303030303032344330303030303030303030303030323443303030303030303030303030304630334630303030303030303030303031303430303430303030303030303030303030303030303046304246303030303030303030303030463033463636363636363636363636363032343030303030303030303030303046303346303030303030303030303030463033463030303030303030303030303030433036363636363636363636363631323430303030303030303030303030303034303030303030303030303030303030303030303030303030303030303030304330394139393939393939393939463933463434384236434537464241393041343030303030303030303030303046304246303030303030303030303030463033463636363636363636363636363032343030303030303030303030303046303346 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output2.testcase b/src/spatialite/test/sql_stmt_proj_tests/output2.testcase new file mode 100644 index 0000000..bcdf4b1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output2.testcase @@ -0,0 +1,20 @@ +Output format tests - POLYGON, no SRID +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsKML("myname", "mydesc", geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT GeomFromText("POLYGON((0 0, 1 1, 0 2, -1 1, 0 0))") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsKML("myname", "mydesc", geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +POLYGON((0 0, 1 1, 0 2, -1 1, 0 0)) +(NULL) +(NULL) +0,0 1,1 0,2 -1,1 0,0:0 # trailing ":0" required to avoid truncation !!! +{"type":"Polygon","coordinates":[[[0,0],[1,1],[0,2],[-1,1],[0,0]]]}:0 # trailing ":0" required to avoid truncation !!! +POLYGON((0 0,1 1,0 2,-1 1,0 0)) +SRID=0;POLYGON((0 0,1 1,0 2,-1 1,0 0)) + diff --git a/src/spatialite/test/sql_stmt_proj_tests/output20.testcase b/src/spatialite/test/sql_stmt_proj_tests/output20.testcase new file mode 100644 index 0000000..f50ae3d --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output20.testcase @@ -0,0 +1,19 @@ +Output format tests - MULTIPOINTZM via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOINT(-1 1 2.3 4,1 2 4.1 1.9)") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +MULTIPOINT ZM(-1 1 2.3 4, 1 2 4.1 1.9) +-1,1,2.31,2,4.1 +-1,1,2.31,2,4.1:0 +{"type":"MultiPoint","coordinates":[[-1,1,2.3],[1,2,4.1]]}:0 +MULTIPOINT(-1 1,1 2) +SRID=4326;MULTIPOINT(-1 1 2.3 4,1 2 4.1 1.9) +303130343030303045304536313030303030303230303030303030313031303030304330303030303030303030303030463042463030303030303030303030304630334636363636363636363636363630323430303030303030303030303030313034303031303130303030433030303030303030303030303046303346303030303030303030303030303034303636363636363636363636363130343036363636363636363636363646453346 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output21.testcase b/src/spatialite/test/sql_stmt_proj_tests/output21.testcase new file mode 100644 index 0000000..9ebca85 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output21.testcase @@ -0,0 +1,19 @@ +Output format tests - MULTIPOINTZ via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOINT(-1 1 2.3,1 2 4.1)") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +MULTIPOINT Z(-1 1 2.3, 1 2 4.1) +-1,1,2.31,2,4.1 +-1,1,2.31,2,4.1:0 +{"type":"MultiPoint","coordinates":[[-1,1,2.3],[1,2,4.1]]}:0 +MULTIPOINT(-1 1,1 2) +SRID=4326;MULTIPOINT(-1 1 2.3,1 2 4.1) +30313034303030304130453631303030303030323030303030303031303130303030383030303030303030303030303046304246303030303030303030303030463033463636363636363636363636363032343030313031303030303830303030303030303030303030463033463030303030303030303030303030343036363636363636363636363631303430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output22.testcase b/src/spatialite/test/sql_stmt_proj_tests/output22.testcase new file mode 100644 index 0000000..b6d6e79 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output22.testcase @@ -0,0 +1,19 @@ +Output format tests - MULTIPOINTM via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOINTM(-1 1 2.3,1 2 4.1)") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +MULTIPOINT M(-1 1 2.3, 1 2 4.1) +-1,11,2 +-1,11,2:0 +{"type":"MultiPoint","coordinates":[[-1,1],[1,2]]}:0 +MULTIPOINT(-1 1,1 2) +SRID=4326;MULTIPOINTM(-1 1 2.3,1 2 4.1) +30313034303030303630453631303030303030323030303030303031303130303030343030303030303030303030303046304246303030303030303030303030463033463636363636363636363636363032343030313031303030303430303030303030303030303030463033463030303030303030303030303030343036363636363636363636363631303430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output23.testcase b/src/spatialite/test/sql_stmt_proj_tests/output23.testcase new file mode 100644 index 0000000..acb3810 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output23.testcase @@ -0,0 +1,19 @@ +Output format tests - MULTILINESTRING via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTILINESTRING((-1 1, 2 3, 4 1),(0 2, 2 0, 0 0, 1 1))") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +MULTILINESTRING((-1 1, 2 3, 4 1), (0 2, 2 0, 0 0, 1 1)) +-1,1 2,3 4,10,2 2,0 0,0 1,1 +-1,1 2,3 4,10,2 2,0 0,0 1,1:0 +{"type":"MultiLineString","coordinates":[[[-1,1],[2,3],[4,1]],[[0,2],[2,0],[0,0],[1,1]]]}:0 +MULTILINESTRING((-1 1,2 3,4 1),(0 2,2 0,0 0,1 1)) +SRID=4326;MULTILINESTRING((-1 1,2 3,4 1),(0 2,2 0,0 0,1 1)) +30313035303030303230453631303030303030323030303030303031303230303030303030333030303030303030303030303030303030304630424630303030303030303030303046303346303030303030303030303030303034303030303030303030303030303038343030303030303030303030303031303430303030303030303030303030463033463031303230303030303030343030303030303030303030303030303030303030303030303030303030303030303030303430303030303030303030303030303034303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030304630334630303030303030303030303046303346 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output24.testcase b/src/spatialite/test/sql_stmt_proj_tests/output24.testcase new file mode 100644 index 0000000..b15dc8e --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output24.testcase @@ -0,0 +1,19 @@ +Output format tests - MULTILINESTRINGZ via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTILINESTRING((-1 1 9, 2 3 8.4, 4 1 9.4),(0 2 1, 2 0 1, 0 0 2, 1 1 3))") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +MULTILINESTRING Z((-1 1 9, 2 3 8.4, 4 1 9.4), (0 2 1, 2 0 1, 0 0 2, 1 1 3)) +-1,1,9 2,3,8.4 4,1,9.40,2,1 2,0,1 0,0,2 1,1,3 +-1,1,9 2,3,8.4 4,1,9.40,2,1 2,0,1 0,0,2 1,1,3:0 +{"type":"MultiLineString","coordinates":[[[-1,1,9],[2,3,8.4],[4,1,9.4]],[[0,2,1],[2,0,1],[0,0,2],[1,1,3]]]}:0 +MULTILINESTRING((-1 1,2 3,4 1),(0 2,2 0,0 0,1 1)) +SRID=4326;MULTILINESTRING((-1 1 9,2 3 8.4,4 1 9.4),(0 2 1,2 0 1,0 0 2,1 1 3)) +3031303530303030413045363130303030303032303030303030303130323030303038303033303030303030303030303030303030303030463042463030303030303030303030304630334630303030303030303030303032323430303030303030303030303030303034303030303030303030303030303038343043444343434343434343434332303430303030303030303030303030313034303030303030303030303030304630334643444343434343434343434332323430303130323030303038303034303030303030303030303030303030303030303030303030303030303030303030303030343030303030303030303030303046303346303030303030303030303030303034303030303030303030303030303030303030303030303030303030303046303346303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303430303030303030303030303030463033463030303030303030303030304630334630303030303030303030303030383430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output25.testcase b/src/spatialite/test/sql_stmt_proj_tests/output25.testcase new file mode 100644 index 0000000..b59f185 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output25.testcase @@ -0,0 +1,19 @@ +Output format tests - MULTILINESTRINGM via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTILINESTRINGM((-1 1 9, 2 3 8.4, 4 1 9.4),(0 2 1, 2 0 1, 0 0 2, 1 1 3))") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +MULTILINESTRING M((-1 1 9, 2 3 8.4, 4 1 9.4), (0 2 1, 2 0 1, 0 0 2, 1 1 3)) +-1,1 2,3 4,10,2 2,0 0,0 1,1 +-1,1 2,3 4,10,2 2,0 0,0 1,1:0 +{"type":"MultiLineString","coordinates":[[[-1,1],[2,3],[4,1]],[[0,2],[2,0],[0,0],[1,1]]]}:0 +MULTILINESTRING((-1 1,2 3,4 1),(0 2,2 0,0 0,1 1)) +SRID=4326;MULTILINESTRINGM((-1 1 9,2 3 8.4,4 1 9.4),(0 2 1,2 0 1,0 0 2,1 1 3)) +3031303530303030363045363130303030303032303030303030303130323030303034303033303030303030303030303030303030303030463042463030303030303030303030304630334630303030303030303030303032323430303030303030303030303030303034303030303030303030303030303038343043444343434343434343434332303430303030303030303030303030313034303030303030303030303030304630334643444343434343434343434332323430303130323030303034303034303030303030303030303030303030303030303030303030303030303030303030303030343030303030303030303030303046303346303030303030303030303030303034303030303030303030303030303030303030303030303030303030303046303346303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303430303030303030303030303030463033463030303030303030303030304630334630303030303030303030303030383430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output26.testcase b/src/spatialite/test/sql_stmt_proj_tests/output26.testcase new file mode 100644 index 0000000..cdd5a5e --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output26.testcase @@ -0,0 +1,19 @@ +Output format tests - MULTILINESTRINGZM via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTILINESTRING((-1 1 9 1, 2 3 8.4 3, 4 1 9.4 1),(0 2 1 84, 2 0 1 26, 0 0 2 -2.1, 1 1 3 0))") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +MULTILINESTRING ZM((-1 1 9 1, 2 3 8.4 3, 4 1 9.4 1), (0 2 1 84, 2 0 1 26, 0 0 2 -2.1, 1 1 3 0)) +-1,1,9 2,3,8.4 4,1,9.40,2,1 2,0,1 0,0,2 1,1,3 +-1,1,9 2,3,8.4 4,1,9.40,2,1 2,0,1 0,0,2 1,1,3:0 +{"type":"MultiLineString","coordinates":[[[-1,1,9],[2,3,8.4],[4,1,9.4]],[[0,2,1],[2,0,1],[0,0,2],[1,1,3]]]}:0 +MULTILINESTRING((-1 1,2 3,4 1),(0 2,2 0,0 0,1 1)) +SRID=4326;MULTILINESTRING((-1 1 9 1,2 3 8.4 3,4 1 9.4 1),(0 2 1 84,2 0 1 26,0 0 2 -2.1,1 1 3 0)) +303130353030303045304536313030303030303230303030303030313032303030304330303330303030303030303030303030303030303046304246303030303030303030303030463033463030303030303030303030303232343030303030303030303030303046303346303030303030303030303030303034303030303030303030303030303038343043444343434343434343434332303430303030303030303030303030303834303030303030303030303030303130343030303030303030303030303046303346434443434343434343434343323234303030303030303030303030304630334630313032303030304330303430303030303030303030303030303030303030303030303030303030303030303030303034303030303030303030303030304630334630303030303030303030303035353430303030303030303030303030303034303030303030303030303030303030303030303030303030303030303046303346303030303030303030303030334134303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303034304344434343434343434343433030433030303030303030303030303046303346303030303030303030303030463033463030303030303030303030303038343030303030303030303030303030303030 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output27.testcase b/src/spatialite/test/sql_stmt_proj_tests/output27.testcase new file mode 100644 index 0000000..426ecd3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output27.testcase @@ -0,0 +1,19 @@ +Output format tests - MULTIPOLYGON via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOLYGON(((10 10, 0 10, 0 0, 0 10, 10 10)),((-10 -10, -10 10, 10 10, 10 -10, -10 -10),(-8 -8, -2 -8, -2 -2, -8 -2, -8 -8),(8 8, 2 8, 2 2, 8 2, 8 8)))") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +MULTIPOLYGON(((10 10, 0 10, 0 0, 0 10, 10 10)), ((-10 -10, -10 10, 10 10, 10 -10, -10 -10), (-8 -8, -2 -8, -2 -2, -8 -2, -8 -8), (8 8, 2 8, 2 2, 8 2, 8 8))) +10,10 0,10 0,0 0,10 10,10-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8 +10,10 0,10 0,0 0,10 10,10-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8:0 +{"type":"MultiPolygon","coordinates":[[[[10,10],[0,10],[0,0],[0,10],[10,10]]],[[[-10,-10],[-10,10],[10,10],[10,-10],[-10,-10]],[[-8,-8],[-2,-8],[-2,-2],[-8,-2],[-8,-8]],[[8,8],[2,8],[2,2],[8,2],[8,8]]]]}:0 +MULTIPOLYGON(((10 10,0 10,0 0,0 10,10 10)),((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) +SRID=4326;MULTIPOLYGON(((10 10,0 10,0 0,0 10,10 10)),((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) +3031303630303030323045363130303030303032303030303030303130333030303030303031303030303030303530303030303030303030303030303030303032343430303030303030303030303030323434303030303030303030303030303030303030303030303030303030303032343430303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030323434303030303030303030303030303234343030303030303030303030303032343430303130333030303030303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303234433030303030303030303030303032343430303030303030303030303030323434303030303030303030303030303234343030303030303030303030303032343430303030303030303030303030323443303030303030303030303030303234433030303030303030303030303032344330303530303030303030303030303030303030303032304330303030303030303030303030323043303030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303043303030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303043303030303030303030303030303230433030303030303030303030303032304330303530303030303030303030303030303030303032303430303030303030303030303030323034303030303030303030303030303030343030303030303030303030303032303430303030303030303030303030303034303030303030303030303030303030343030303030303030303030303032303430303030303030303030303030303034303030303030303030303030303230343030303030303030303030303032303430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output28.testcase b/src/spatialite/test/sql_stmt_proj_tests/output28.testcase new file mode 100644 index 0000000..c992348 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output28.testcase @@ -0,0 +1,19 @@ +Output format tests - MULTIPOLYGONZ via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOLYGON(((10 10 1.2, 0 10 1.3, 0 0 1.1, 0 10 1.3, 10 10 1.2)),((-10 -10 4, -10 10 5, 10 10 6, 10 -10 5, -10 -10 4),(-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1),(8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11)))") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +MULTIPOLYGON Z(((10 10 1.2, 0 10 1.3, 0 0 1.1, 0 10 1.3, 10 10 1.2)), ((-10 -10 4, -10 10 5, 10 10 6, 10 -10 5, -10 -10 4), (-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1), (8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11))) +10,10,1.2 0,10,1.3 0,0,1.1 0,10,1.3 10,10,1.2-10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11 +10,10,1.2 0,10,1.3 0,0,1.1 0,10,1.3 10,10,1.2-10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11:0 +{"type":"MultiPolygon","coordinates":[[[[10,10,1.2],[0,10,1.3],[0,0,1.1],[0,10,1.3],[10,10,1.2]]],[[[-10,-10,4],[-10,10,5],[10,10,6],[10,-10,5],[-10,-10,4]],[[-8,-8,1],[-2,-8,3],[-2,-2,5],[-8,-2,7],[-8,-8,1]],[[8,8,11],[2,8,13],[2,2,17],[8,2,13],[8,8,11]]]]}:0 +MULTIPOLYGON(((10 10,0 10,0 0,0 10,10 10)),((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) +SRID=4326;MULTIPOLYGON(((10 10 1.2,0 10 1.3,0 0 1.1,0 10 1.3,10 10 1.2)),((-10 -10 4,-10 10 5,10 10 6,10 -10 5,-10 -10 4),(-8 -8 1,-2 -8 3,-2 -2 5,-8 -2 7,-8 -8 1),(8 8 11,2 8 13,2 2 17,8 2 13,8 8 11))) +30313036303030304130453631303030303030323030303030303031303330303030383030313030303030303035303030303030303030303030303030303030323434303030303030303030303030303234343033333333333333333333333346333346303030303030303030303030303030303030303030303030303030303234343043444343434343434343434346343346303030303030303030303030303030303030303030303030303030303030303039413939393939393939393946313346303030303030303030303030303030303030303030303030303030303234343043444343434343434343434346343346303030303030303030303030323434303030303030303030303030303234343033333333333333333333333346333346303130333030303038303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030303030303030303030303032344330303030303030303030303030323434303030303030303030303030303134343030303030303030303030303032343430303030303030303030303030323434303030303030303030303030303138343030303030303030303030303032343430303030303030303030303030323443303030303030303030303030303134343030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030353030303030303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303834303030303030303030303030303030433030303030303030303030303030304330303030303030303030303030313434303030303030303030303030303230433030303030303030303030303030304330303030303030303030303030314334303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463035303030303030303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430303030303030303030303030303034303030303030303030303030303230343030303030303030303030303032413430303030303030303030303030303034303030303030303030303030303030343030303030303030303030303033313430303030303030303030303030323034303030303030303030303030303030343030303030303030303030303032413430303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output29.testcase b/src/spatialite/test/sql_stmt_proj_tests/output29.testcase new file mode 100644 index 0000000..ecf6f12 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output29.testcase @@ -0,0 +1,19 @@ +Output format tests - MULTIPOLYGONM via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOLYGONM(((10 10 1.2, 0 10 1.3, 0 0 1.1, 0 10 1.3, 10 10 1.2)),((-10 -10 4, -10 10 5, 10 10 6, 10 -10 5, -10 -10 4),(-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1),(8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11)))") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +MULTIPOLYGON M(((10 10 1.2, 0 10 1.3, 0 0 1.1, 0 10 1.3, 10 10 1.2)), ((-10 -10 4, -10 10 5, 10 10 6, 10 -10 5, -10 -10 4), (-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1), (8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11))) +10,10 0,10 0,0 0,10 10,10-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8 +10,10 0,10 0,0 0,10 10,10-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8:0 +{"type":"MultiPolygon","coordinates":[[[[10,10],[0,10],[0,0],[0,10],[10,10]]],[[[-10,-10],[-10,10],[10,10],[10,-10],[-10,-10]],[[-8,-8],[-2,-8],[-2,-2],[-8,-2],[-8,-8]],[[8,8],[2,8],[2,2],[8,2],[8,8]]]]}:0 +MULTIPOLYGON(((10 10,0 10,0 0,0 10,10 10)),((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) +SRID=4326;MULTIPOLYGONM(((10 10 1.2,0 10 1.3,0 0 1.1,0 10 1.3,10 10 1.2)),((-10 -10 4,-10 10 5,10 10 6,10 -10 5,-10 -10 4),(-8 -8 1,-2 -8 3,-2 -2 5,-8 -2 7,-8 -8 1),(8 8 11,2 8 13,2 2 17,8 2 13,8 8 11))) +30313036303030303630453631303030303030323030303030303031303330303030343030313030303030303035303030303030303030303030303030303030323434303030303030303030303030303234343033333333333333333333333346333346303030303030303030303030303030303030303030303030303030303234343043444343434343434343434346343346303030303030303030303030303030303030303030303030303030303030303039413939393939393939393946313346303030303030303030303030303030303030303030303030303030303234343043444343434343434343434346343346303030303030303030303030323434303030303030303030303030303234343033333333333333333333333346333346303130333030303034303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030303030303030303030303032344330303030303030303030303030323434303030303030303030303030303134343030303030303030303030303032343430303030303030303030303030323434303030303030303030303030303138343030303030303030303030303032343430303030303030303030303030323443303030303030303030303030303134343030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030353030303030303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303834303030303030303030303030303030433030303030303030303030303030304330303030303030303030303030313434303030303030303030303030303230433030303030303030303030303030304330303030303030303030303030314334303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463035303030303030303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430303030303030303030303030303034303030303030303030303030303230343030303030303030303030303032413430303030303030303030303030303034303030303030303030303030303030343030303030303030303030303033313430303030303030303030303030323034303030303030303030303030303030343030303030303030303030303032413430303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output3.testcase b/src/spatialite/test/sql_stmt_proj_tests/output3.testcase new file mode 100644 index 0000000..6203fbe --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output3.testcase @@ -0,0 +1,20 @@ +Output format tests - bad blob input +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsKML("myname", "mydesc", geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT zeroblob(40) as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsKML("myname", "mydesc", geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +(NULL) +(NULL) +(NULL) +(NULL) +(NULL) +(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_proj_tests/output30.testcase b/src/spatialite/test/sql_stmt_proj_tests/output30.testcase new file mode 100644 index 0000000..30bab25 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output30.testcase @@ -0,0 +1,19 @@ +Output format tests - MULTIPOLYGONZM via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOLYGON(((10 10 1.2 1, 0 10 1.3 -2, 0 0 1.1 5.8, 0 10 1.3 3, 10 10 1.2 1)),((-10 -10 4 0, -10 10 5 0, 10 10 6 1, 10 -10 5 0, -10 -10 4 0),(-8 -8 1 1, -2 -8 3 4, -2 -2 5 6, -8 -2 7 9, -8 -8 1 1),(8 8 11 0, 2 8 13 -2, 2 2 17 -4, 8 2 13 -8, 8 8 11 0)))") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +MULTIPOLYGON ZM(((10 10 1.2 1, 0 10 1.3 -2, 0 0 1.1 5.8, 0 10 1.3 3, 10 10 1.2 1)), ((-10 -10 4 0, -10 10 5 0, 10 10 6 1, 10 -10 5 0, -10 -10 4 0), (-8 -8 1 1, -2 -8 3 4, -2 -2 5 6, -8 -2 7 9, -8 -8 1 1), (8 8 11 0, 2 8 13 -2, 2 2 17 -4, 8 2 13 -8, 8 8 11 0))) +10,10,1.2 0,10,1.3 0,0,1.1 0,10,1.3 10,10,1.2-10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11 +10,10,1.2 0,10,1.3 0,0,1.1 0,10,1.3 10,10,1.2-10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11:0 +{"type":"MultiPolygon","coordinates":[[[[10,10,1.2],[0,10,1.3],[0,0,1.1],[0,10,1.3],[10,10,1.2]]],[[[-10,-10,4],[-10,10,5],[10,10,6],[10,-10,5],[-10,-10,4]],[[-8,-8,1],[-2,-8,3],[-2,-2,5],[-8,-2,7],[-8,-8,1]],[[8,8,11],[2,8,13],[2,2,17],[8,2,13],[8,8,11]]]]}:0 +MULTIPOLYGON(((10 10,0 10,0 0,0 10,10 10)),((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) +SRID=4326;MULTIPOLYGON(((10 10 1.2 1,0 10 1.3 -2,0 0 1.1 5.8,0 10 1.3 3,10 10 1.2 1)),((-10 -10 4 0,-10 10 5 0,10 10 6 1,10 -10 5 0,-10 -10 4 0),(-8 -8 1 1,-2 -8 3 4,-2 -2 5 6,-8 -2 7 9,-8 -8 1 1),(8 8 11 0,2 8 13 -2,2 2 17 -4,8 2 13 -8,8 8 11 0))) +303130363030303045304536313030303030303230303030303030313033303030304330303130303030303030353030303030303030303030303030303030303234343030303030303030303030303032343430333333333333333333333333463333463030303030303030303030304630334630303030303030303030303030303030303030303030303030303030323434304344434343434343434343434634334630303030303030303030303030304330303030303030303030303030303030303030303030303030303030303030303039413939393939393939393946313346333333333333333333333333313734303030303030303030303030303030303030303030303030303030303032343430434443434343434343434343463433463030303030303030303030303038343030303030303030303030303032343430303030303030303030303030323434303333333333333333333333334633334630303030303030303030303046303346303130333030303043303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030303030303030303030303030303030303030303030303030303030323443303030303030303030303030303234343030303030303030303030303031343430303030303030303030303030303030303030303030303030303030303234343030303030303030303030303032343430303030303030303030303030313834303030303030303030303030304630334630303030303030303030303032343430303030303030303030303030323443303030303030303030303030303134343030303030303030303030303030303030303030303030303030303030323443303030303030303030303030303234433030303030303030303030303031303430303030303030303030303030303030303035303030303030303030303030303030303030323043303030303030303030303030303230433030303030303030303030303046303346303030303030303030303030463033463030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303834303030303030303030303030303130343030303030303030303030303030304330303030303030303030303030303043303030303030303030303030303134343030303030303030303030303031383430303030303030303030303030323043303030303030303030303030303030433030303030303030303030303031433430303030303030303030303030323234303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463030303030303030303030304630334630353030303030303030303030303030303030303230343030303030303030303030303032303430303030303030303030303030323634303030303030303030303030303030303030303030303030303030303030303430303030303030303030303030323034303030303030303030303030303241343030303030303030303030303030304330303030303030303030303030303034303030303030303030303030303030343030303030303030303030303033313430303030303030303030303030313043303030303030303030303030303230343030303030303030303030303030303430303030303030303030303030324134303030303030303030303030303230433030303030303030303030303032303430303030303030303030303030323034303030303030303030303030303236343030303030303030303030303030303030 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output31.testcase b/src/spatialite/test/sql_stmt_proj_tests/output31.testcase new file mode 100644 index 0000000..a49a029 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output31.testcase @@ -0,0 +1,19 @@ +Output format tests - GEOMETRY COLLECTION OF POLYGONZM via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;GEOMETRYCOLLECTION(POLYGON((-10 -10 4 0, -10 10 5 0, 10 10 6 1, 10 -10 5 0, -10 -10 4 0),(-8 -8 1 1, -2 -8 3 4, -2 -2 5 6, -8 -2 7 9, -8 -8 1 1),(8 8 11 0, 2 8 13 -2, 2 2 17 -4, 8 2 13 -8, 8 8 11 0)))") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +GEOMETRYCOLLECTION ZM(POLYGON ZM((-10 -10 4 0, -10 10 5 0, 10 10 6 1, 10 -10 5 0, -10 -10 4 0), (-8 -8 1 1, -2 -8 3 4, -2 -2 5 6, -8 -2 7 9, -8 -8 1 1), (8 8 11 0, 2 8 13 -2, 2 2 17 -4, 8 2 13 -8, 8 8 11 0))) +-10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11 +-10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11:0 +{"type":"GeometryCollection","geometries":[{"type":"Polygon","coordinates":[[[-10,-10,4],[-10,10,5],[10,10,6],[10,-10,5],[-10,-10,4]],[[-8,-8,1],[-2,-8,3],[-2,-2,5],[-8,-2,7],[-8,-8,1]],[[8,8,11],[2,8,13],[2,2,17],[8,2,13],[8,8,11]]]}]}:0 +GEOMETRYCOLLECTION(POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) +SRID=4326;GEOMETRYCOLLECTION(POLYGON((-10 -10 4 0,-10 10 5 0,10 10 6 1,10 -10 5 0,-10 -10 4 0),(-8 -8 1 1,-2 -8 3 4,-2 -2 5 6,-8 -2 7 9,-8 -8 1 1),(8 8 11 0,2 8 13 -2,2 2 17 -4,8 2 13 -8,8 8 11 0))) +3031303730303030453045363130303030303031303030303030303130333030303043303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030303030303030303030303030303030303030303030303030303030323443303030303030303030303030303234343030303030303030303030303031343430303030303030303030303030303030303030303030303030303030303234343030303030303030303030303032343430303030303030303030303030313834303030303030303030303030304630334630303030303030303030303032343430303030303030303030303030323443303030303030303030303030303134343030303030303030303030303030303030303030303030303030303030323443303030303030303030303030303234433030303030303030303030303031303430303030303030303030303030303030303035303030303030303030303030303030303030323043303030303030303030303030303230433030303030303030303030303046303346303030303030303030303030463033463030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303834303030303030303030303030303130343030303030303030303030303030304330303030303030303030303030303043303030303030303030303030303134343030303030303030303030303031383430303030303030303030303030323043303030303030303030303030303030433030303030303030303030303031433430303030303030303030303030323234303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463030303030303030303030304630334630353030303030303030303030303030303030303230343030303030303030303030303032303430303030303030303030303030323634303030303030303030303030303030303030303030303030303030303030303430303030303030303030303030323034303030303030303030303030303241343030303030303030303030303030304330303030303030303030303030303034303030303030303030303030303030343030303030303030303030303033313430303030303030303030303030313043303030303030303030303030303230343030303030303030303030303030303430303030303030303030303030324134303030303030303030303030303230433030303030303030303030303032303430303030303030303030303030323034303030303030303030303030303236343030303030303030303030303030303030 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output32.testcase b/src/spatialite/test/sql_stmt_proj_tests/output32.testcase new file mode 100644 index 0000000..44cfaaa --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output32.testcase @@ -0,0 +1,19 @@ +Output format tests - GEOMETRY COLLECTION OF POINTZ and POLYGONZ via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;GEOMETRYCOLLECTION(POINT(1 2 3),POLYGON((-10 -10 4, -10 10 5, 10 10 6 , 10 -10 5, -10 -10 4),(-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1),(8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11)))") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +GEOMETRYCOLLECTION Z(POINT Z(1 2 3), POLYGON Z((-10 -10 4, -10 10 5, 10 10 6, 10 -10 5, -10 -10 4), (-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1), (8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11))) +1,2,3-10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11 +1,2,3-10,-10,4 -10,10,5 10,10,6 10,-10,5 -10,-10,4-8,-8,1 -2,-8,3 -2,-2,5 -8,-2,7 -8,-8,18,8,11 2,8,13 2,2,17 8,2,13 8,8,11:0 +{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1,2,3]},{"type":"Polygon","coordinates":[[[-10,-10,4],[-10,10,5],[10,10,6],[10,-10,5],[-10,-10,4]],[[-8,-8,1],[-2,-8,3],[-2,-2,5],[-8,-2,7],[-8,-8,1]],[[8,8,11],[2,8,13],[2,2,17],[8,2,13],[8,8,11]]]}]}:0 +GEOMETRYCOLLECTION(POINT(1 2),POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) +SRID=4326;GEOMETRYCOLLECTION(POINT(1 2 3),POLYGON((-10 -10 4,-10 10 5,10 10 6,10 -10 5,-10 -10 4),(-8 -8 1,-2 -8 3,-2 -2 5,-8 -2 7,-8 -8 1),(8 8 11,2 8 13,2 2 17,8 2 13,8 8 11))) +303130373030303041304536313030303030303230303030303030313031303030303830303030303030303030303030463033463030303030303030303030303030343030303030303030303030303030383430303130333030303038303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030303030303030303030303032344330303030303030303030303030323434303030303030303030303030303134343030303030303030303030303032343430303030303030303030303030323434303030303030303030303030303138343030303030303030303030303032343430303030303030303030303030323443303030303030303030303030303134343030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030353030303030303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303834303030303030303030303030303030433030303030303030303030303030304330303030303030303030303030313434303030303030303030303030303230433030303030303030303030303030304330303030303030303030303030314334303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463035303030303030303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430303030303030303030303030303034303030303030303030303030303230343030303030303030303030303032413430303030303030303030303030303034303030303030303030303030303030343030303030303030303030303033313430303030303030303030303030323034303030303030303030303030303030343030303030303030303030303032413430303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output33.testcase b/src/spatialite/test/sql_stmt_proj_tests/output33.testcase new file mode 100644 index 0000000..8cdedef --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output33.testcase @@ -0,0 +1,19 @@ +Output format tests - GEOMETRY COLLECTION OF POINTM and POLYGONM via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;GEOMETRYCOLLECTIONM(POINTM(1 2 3),POLYGONM((-10 -10 4, -10 10 5, 10 10 6 , 10 -10 5, -10 -10 4),(-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1),(8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11)))") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +GEOMETRYCOLLECTION M(POINT M(1 2 3), POLYGON M((-10 -10 4, -10 10 5, 10 10 6, 10 -10 5, -10 -10 4), (-8 -8 1, -2 -8 3, -2 -2 5, -8 -2 7, -8 -8 1), (8 8 11, 2 8 13, 2 2 17, 8 2 13, 8 8 11))) +1,2-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8:0 +1,2-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8:0 +{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1,2]},{"type":"Polygon","coordinates":[[[-10,-10],[-10,10],[10,10],[10,-10],[-10,-10]],[[-8,-8],[-2,-8],[-2,-2],[-8,-2],[-8,-8]],[[8,8],[2,8],[2,2],[8,2],[8,8]]]}]}:0 +GEOMETRYCOLLECTION(POINT(1 2),POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) +SRID=4326;GEOMETRYCOLLECTIONM(POINTM(1 2 3),POLYGONM((-10 -10 4,-10 10 5,10 10 6,10 -10 5,-10 -10 4),(-8 -8 1,-2 -8 3,-2 -2 5,-8 -2 7,-8 -8 1),(8 8 11,2 8 13,2 2 17,8 2 13,8 8 11))) +303130373030303036304536313030303030303230303030303030313031303030303430303030303030303030303030463033463030303030303030303030303030343030303030303030303030303030383430303130333030303034303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030303030303030303030303032344330303030303030303030303030323434303030303030303030303030303134343030303030303030303030303032343430303030303030303030303030323434303030303030303030303030303138343030303030303030303030303032343430303030303030303030303030323443303030303030303030303030303134343030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303130343030353030303030303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303834303030303030303030303030303030433030303030303030303030303030304330303030303030303030303030313434303030303030303030303030303230433030303030303030303030303030304330303030303030303030303030314334303030303030303030303030303230433030303030303030303030303032304330303030303030303030303030463033463035303030303030303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430303030303030303030303030303034303030303030303030303030303230343030303030303030303030303032413430303030303030303030303030303034303030303030303030303030303030343030303030303030303030303033313430303030303030303030303030323034303030303030303030303030303030343030303030303030303030303032413430303030303030303030303030323034303030303030303030303030303230343030303030303030303030303032363430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output34.testcase b/src/spatialite/test/sql_stmt_proj_tests/output34.testcase new file mode 100644 index 0000000..97316ec --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output34.testcase @@ -0,0 +1,19 @@ +Output format tests - GEOMETRY COLLECTION OF POINT and POLYGON via EWKB, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromEWkt("SRID=4326;GEOMETRYCOLLECTION(POINT(1 2),POLYGON((-10 -10, -10 10, 10 10 , 10 -10, -10 -10),(-8 -8, -2 -8, -2 -2, -8 -2, -8 -8),(8 8, 2 8, 2 2, 8 2, 8 8)))") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +GEOMETRYCOLLECTION(POINT(1 2), POLYGON((-10 -10, -10 10, 10 10, 10 -10, -10 -10), (-8 -8, -2 -8, -2 -2, -8 -2, -8 -8), (8 8, 2 8, 2 2, 8 2, 8 8))) +1,2-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8 +1,2-10,-10 -10,10 10,10 10,-10 -10,-10-8,-8 -2,-8 -2,-2 -8,-2 -8,-88,8 2,8 2,2 8,2 8,8:0 +{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1,2]},{"type":"Polygon","coordinates":[[[-10,-10],[-10,10],[10,10],[10,-10],[-10,-10]],[[-8,-8],[-2,-8],[-2,-2],[-8,-2],[-8,-8]],[[8,8],[2,8],[2,2],[8,2],[8,8]]]}]}:0 +GEOMETRYCOLLECTION(POINT(1 2),POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) +SRID=4326;GEOMETRYCOLLECTION(POINT(1 2),POLYGON((-10 -10,-10 10,10 10,10 -10,-10 -10),(-8 -8,-2 -8,-2 -2,-8 -2,-8 -8),(8 8,2 8,2 2,8 2,8 8))) +3031303730303030323045363130303030303032303030303030303130313030303030303030303030303030303030304630334630303030303030303030303030303430303130333030303030303033303030303030303530303030303030303030303030303030303032344330303030303030303030303030323443303030303030303030303030303234433030303030303030303030303032343430303030303030303030303030323434303030303030303030303030303234343030303030303030303030303032343430303030303030303030303030323443303030303030303030303030303234433030303030303030303030303032344330303530303030303030303030303030303030303032304330303030303030303030303030323043303030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303043303030303030303030303030303030433030303030303030303030303032304330303030303030303030303030303043303030303030303030303030303230433030303030303030303030303032304330303530303030303030303030303030303030303032303430303030303030303030303030323034303030303030303030303030303030343030303030303030303030303032303430303030303030303030303030303034303030303030303030303030303030343030303030303030303030303032303430303030303030303030303030303034303030303030303030303030303230343030303030303030303030303032303430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output35.testcase b/src/spatialite/test/sql_stmt_proj_tests/output35.testcase new file mode 100644 index 0000000..be2d75b --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output35.testcase @@ -0,0 +1,19 @@ +Output format tests - GEOMETRYCOLLECTION XYZM (POINT, POINT LINESTRING) +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(1 2 100 10), POINTZM(2 3 101 11), LINESTRINGZM(3 4 100 10, 4 5 101 11))", 4326) AS geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +GEOMETRYCOLLECTION ZM(POINT ZM(1 2 100 10), POINT ZM(2 3 101 11), LINESTRING ZM(3 4 100 10, 4 5 101 11)) +1,2,1002,3,1013,4,100 4,5,101 +1,2,1002,3,1013,4,100 4,5,101:0 # trailing ":0" required to avoid truncation !!! +{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1,2,100]},{"type":"Point","coordinates":[2,3,101]},{"type":"LineString","coordinates":[[3,4,100],[4,5,101]]}]}:0 # trailing ":0" required to avoid truncation !!! +GEOMETRYCOLLECTION(POINT(1 2),POINT(2 3),LINESTRING(3 4,4 5)) +SRID=4326;GEOMETRYCOLLECTION(POINT(1 2 100 10),POINT(2 3 101 11),LINESTRING(3 4 100 10,4 5 101 11)) +3031303730303030453045363130303030303033303030303030303130313030303043303030303030303030303030304630334630303030303030303030303030303430303030303030303030303030353934303030303030303030303030303234343030313031303030304330303030303030303030303030303034303030303030303030303030303038343030303030303030303030343035393430303030303030303030303030323634303031303230303030433030323030303030303030303030303030303030303038343030303030303030303030303031303430303030303030303030303030353934303030303030303030303030303234343030303030303030303030303031303430303030303030303030303030313434303030303030303030303034303539343030303030303030303030303032363430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output36.testcase b/src/spatialite/test/sql_stmt_proj_tests/output36.testcase new file mode 100644 index 0000000..b411e28 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output36.testcase @@ -0,0 +1,19 @@ +Output format tests - GEOMETRYCOLLECTION XYZ (POINT LINESTRING) +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(1 2 100), LINESTRINGZ(3 4 100, 4 5 101))", 4326) AS geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +GEOMETRYCOLLECTION Z(POINT Z(1 2 100), LINESTRING Z(3 4 100, 4 5 101)) +1,2,1003,4,100 4,5,101 +1,2,1003,4,100 4,5,101:0 # trailing ":0" required to avoid truncation !!! +{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1,2,100]},{"type":"LineString","coordinates":[[3,4,100],[4,5,101]]}]}:0 # trailing ":0" required to avoid truncation !!! +GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(3 4,4 5)) +SRID=4326;GEOMETRYCOLLECTION(POINT(1 2 100),LINESTRING(3 4 100,4 5 101)) +303130373030303041304536313030303030303230303030303030313031303030303830303030303030303030303030463033463030303030303030303030303030343030303030303030303030303035393430303130323030303038303032303030303030303030303030303030303030303834303030303030303030303030303130343030303030303030303030303035393430303030303030303030303030313034303030303030303030303030303134343030303030303030303030343035393430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output37.testcase b/src/spatialite/test/sql_stmt_proj_tests/output37.testcase new file mode 100644 index 0000000..7a9f6af --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output37.testcase @@ -0,0 +1,19 @@ +Output format tests - GEOMETRYCOLLECTION XYM (POINT LINESTRING) +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom), Hex(AsEWKB(geom)) FROM (SELECT GeomFromText("GEOMETRYCOLLECTIONM(POINTM(1 2 10), LINESTRINGM(3 4 10, 4 5 11))", 4326) AS geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +Hex(AsEWKB(geom)) +GEOMETRYCOLLECTION M(POINT M(1 2 10), LINESTRING M(3 4 10, 4 5 11)) +1,23,4 4,5 +1,23,4 4,5:0 # trailing ":0" required to avoid truncation !!! +{"type":"GeometryCollection","geometries":[{"type":"Point","coordinates":[1,2]},{"type":"LineString","coordinates":[[3,4],[4,5]]}]}:0 # trailing ":0" required to avoid truncation !!! +GEOMETRYCOLLECTION(POINT(1 2),LINESTRING(3 4,4 5)) +SRID=4326;GEOMETRYCOLLECTIONM(POINTM(1 2 10),LINESTRINGM(3 4 10,4 5 11)) +303130373030303036304536313030303030303230303030303030313031303030303430303030303030303030303030463033463030303030303030303030303030343030303030303030303030303032343430303130323030303034303032303030303030303030303030303030303030303834303030303030303030303030303130343030303030303030303030303032343430303030303030303030303030313034303030303030303030303030303134343030303030303030303030303032363430 diff --git a/src/spatialite/test/sql_stmt_proj_tests/output38.testcase b/src/spatialite/test/sql_stmt_proj_tests/output38.testcase new file mode 100644 index 0000000..5785004 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output38.testcase @@ -0,0 +1,8 @@ +Output format tests - XML masked chars +:memory: #use in-memory database +SELECT AsKML('myname', 'mydesc &"<>', GeomFromText("POLYGON((0 0, 1 1, 0 2, -1 1, 0 0))", 4326)); +1 # rows (not including the header row) +1 # columns +AsKML('myname', 'mydesc &"<>', GeomFromText("POLYGON((0 0, 1 1, 0 2, -1 1, 0 0))", 4326)) +mynamemydesc &"<>0,0 1,1 0,2 -1,1 0,0 + diff --git a/src/spatialite/test/sql_stmt_proj_tests/output4.testcase b/src/spatialite/test/sql_stmt_proj_tests/output4.testcase new file mode 100644 index 0000000..0600668 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output4.testcase @@ -0,0 +1,20 @@ +Output format tests - text input +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsKML("myname", "mydesc", geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT "hello" as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsKML("myname", "mydesc", geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +(NULL) +(NULL) +(NULL) +(NULL) +(NULL) +(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_proj_tests/output5.testcase b/src/spatialite/test/sql_stmt_proj_tests/output5.testcase new file mode 100644 index 0000000..ceabe67 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output5.testcase @@ -0,0 +1,20 @@ +Output format tests - POINT input, no SRID +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsKML("myname", "mydesc", geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT MakePoint(1,2) as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsKML("myname", "mydesc", geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +POINT(1 2) +(NULL) +(NULL) +1,2:0" required to avoid truncation !! +{"type":"Point","coordinates":[1,2]}:0" required to avoid truncation !! +POINT(1 2) +SRID=0;POINT(1 2) + diff --git a/src/spatialite/test/sql_stmt_proj_tests/output6.testcase b/src/spatialite/test/sql_stmt_proj_tests/output6.testcase new file mode 100644 index 0000000..3c0fa55 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output6.testcase @@ -0,0 +1,20 @@ +Output format tests - POINT input, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsKML("myname", "mydesc", geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT MakePoint(1, 2, 4326) as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom) +AsKML("myname", "mydesc", geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +POINT(1 2) +1,2 +mynamemydesc1,2 +1,2:0 +{"type":"Point","coordinates":[1,2]}:0 +POINT(1 2) +SRID=4326;POINT(1 2) + diff --git a/src/spatialite/test/sql_stmt_proj_tests/output7.testcase b/src/spatialite/test/sql_stmt_proj_tests/output7.testcase new file mode 100644 index 0000000..208018e --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output7.testcase @@ -0,0 +1,19 @@ +Output format tests - Linestring, NAD83 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom, 6), AsGML(2, geom, 7), AsGML(3, geom, 8), AsGeoJSON(geom, 6), AsGeoJSON(geom, 5, 4), AsWkt(geom, 5) FROM (SELECT GeomFromEwkt("SRID=3636;LINESTRING(1065407.0674 116445.5897, 2968193.5686 805860.5650)") as geom) dummy; +1 # rows (not including the header row) +7 # columns +AsText(geom) +AsKML(geom, 6) +AsGML(2, geom, 7) +AsGML(3, geom, 8) +AsGeoJSON(geom, 6) +AsGeoJSON(geom, 5, 4) +AsWkt(geom, 5) +LINESTRING(1065407.0674 116445.5897, 2968193.5686 805860.565) +-104.05,45.93 -96.430658,47.805216 +1065407.0674,116445.5897 2968193.5686,805860.565:0 +1065407.0674 116445.5897 2968193.5686 805860.565:0 +{"type":"LineString","coordinates":[[1065407.0674,116445.5897],[2968193.5686,805860.565]]}:0 +{"type":"LineString","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG:3636"}},"coordinates":[[1065407.0674,116445.5897],[2968193.5686,805860.565]]}:0 +LINESTRING(1065407.0674 116445.5897,2968193.5686 805860.565) diff --git a/src/spatialite/test/sql_stmt_proj_tests/output8.testcase b/src/spatialite/test/sql_stmt_proj_tests/output8.testcase new file mode 100644 index 0000000..8ebbd8c --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output8.testcase @@ -0,0 +1,18 @@ +Output format tests - MULTIPOINT, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT GeomFromEWkt("SRID=4326;MULTIPOINT(0 0, 1 1, 0 2, -1 1)") as geom) dummy; +1 # rows (not including the header row) +6 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +MULTIPOINT(0 0, 1 1, 0 2, -1 1) +0,01,10,2-1,1 +0,01,10,2-1,1:0 +{"type":"MultiPoint","coordinates":[[0,0],[1,1],[0,2],[-1,1]]}:0 +MULTIPOINT(0 0,1 1,0 2,-1 1) +SRID=4326;MULTIPOINT(0 0,1 1,0 2,-1 1) + diff --git a/src/spatialite/test/sql_stmt_proj_tests/output9.testcase b/src/spatialite/test/sql_stmt_proj_tests/output9.testcase new file mode 100644 index 0000000..02a0866 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/output9.testcase @@ -0,0 +1,18 @@ +Output format tests - POINT, WGS-84 +:memory: #use in-memory database +SELECT AsText(geom), AsKML(geom), AsGML(geom), AsGeoJSON(geom), AsWkt(geom), AsEWkt(geom) FROM (SELECT GeomFromEWkt("SRID=4326;POINT(-1 1)") as geom) dummy; +1 # rows (not including the header row) +6 # columns +AsText(geom) +AsKML(geom) +AsGML(geom) +AsGeoJSON(geom) +AsWkt(geom) +AsEWkt(geom) +POINT(-1 1) +-1,1 +-1,1:0 +{"type":"Point","coordinates":[-1,1]}:0 +POINT(-1 1) +SRID=4326;POINT(-1 1) + diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform1.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform1.testcase new file mode 100644 index 0000000..e786b82 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform1.testcase @@ -0,0 +1,7 @@ +transform - null args +:memory: #use in-memory database +SELECT Transform(NULL, NULL) +1 # rows (not including the header row) +1 # columns +Transform(NULL, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform10.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform10.testcase new file mode 100644 index 0000000..a62ec32 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform10.testcase @@ -0,0 +1,7 @@ +transform - Linestring M +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('LINESTRINGM(11 43 1, 12 43 2, 12 42 3)', 4326), 32632)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('LINESTRINGM(11 43 1, 12 43 2, 12 42 3)', 4326), 32632)) +LINESTRING M(663019.070082 4762755.64169 1, 744533.019451 4765182.932802 2, 748464.920716 4654130.891324 3) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform11.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform11.testcase new file mode 100644 index 0000000..b429cad --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform11.testcase @@ -0,0 +1,7 @@ +transform - Linestring ZM +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('LINESTRINGZM(11 43 100 1, 12 43 101 2, 12 42 102 3)', 4326), 32632)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('LINESTRINGZM(11 43 100 1, 12 43 101 2, 12 42 102 3)', 4326), 32632)) +LINESTRING ZM(663019.070082 4762755.64169 100 1, 744533.019451 4765182.932802 101 2, 748464.920716 4654130.891324 102 3) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform12.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform12.testcase new file mode 100644 index 0000000..dd43534 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform12.testcase @@ -0,0 +1,7 @@ +transform - Point Z +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('POINTZ(11 43 100)', 4326), 32632)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('POINTZ(11 43 100)', 4326), 32632)) +POINT Z(663019.070082 4762755.64169 100) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform13.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform13.testcase new file mode 100644 index 0000000..c36b4cd --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform13.testcase @@ -0,0 +1,7 @@ +transform - Point M +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('POINTM(11 43 1)', 4326), 32632)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('POINTM(11 43 1)', 4326), 32632)) +POINT M(663019.070082 4762755.64169 1) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform14.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform14.testcase new file mode 100644 index 0000000..cbe9133 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform14.testcase @@ -0,0 +1,7 @@ +transform - Point ZM +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('POINTZM(11 43 100 1)', 4326), 32632)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('POINTZM(11 43 100 1)', 4326), 32632)) +POINT ZM(663019.070082 4762755.64169 100 1) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform15.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform15.testcase new file mode 100644 index 0000000..e015988 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform15.testcase @@ -0,0 +1,7 @@ +transform - Point ZM +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('POINTZM(663019 4762755 100 1)', 32632), 4326)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('POINTZM(663019 4762755 100 1)', 32632), 4326)) +POINT ZM(10.999999 42.999994 100 1) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform16.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform16.testcase new file mode 100644 index 0000000..3718cce --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform16.testcase @@ -0,0 +1,7 @@ +transform - Polygon +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('POLYGON((11 43, 12 43, 12 44, 11 44, 11 43), (11.4 43.4, 11.6 43.4, 11.6 43.6, 11.4 43.6, 11.4 43.4))', 4326), 32632)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('POLYGON((11 43, 12 43, 12 44, 11 44, 11 43), (11.4 43.4, 11.6 43.4, 11.6 43.6, 11.4 43.6, 11.4 43.4))', 4326), 32632)) +POLYGON((663019.070082 4762755.64169, 744533.019451 4765182.932802, 740526.321055 4876249.126963, 660349.410579 4873817.333441, 663019.070082 4762755.64169), (694349.575562 4808033.274618, 710545.984354 4808519.151148, 709851.653212 4830731.987849, 693708.725206 4830245.931093, 694349.575562 4808033.274618)) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform17.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform17.testcase new file mode 100644 index 0000000..aa34fec --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform17.testcase @@ -0,0 +1,7 @@ +transform - Polygon Z +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('POLYGONZ((11 43 100, 12 43 101, 12 44 102, 11 44 103, 11 43 100), (11.4 43.4 100, 11.6 43.4 101, 11.6 43.6 102, 11.4 43.6 103, 11.4 43.4 100))', 4326), 32632)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('POLYGONZ((11 43 100, 12 43 101, 12 44 102, 11 44 103, 11 43 100), (11.4 43.4 100, 11.6 43.4 101, 11.6 43.6 102, 11.4 43.6 103, 11.4 43.4 100))', 4326), 32632)) +POLYGON Z((663019.070082 4762755.64169 100, 744533.019451 4765182.932802 101, 740526.321055 4876249.126963 102, 660349.410579 4873817.333441 103, 663019.070082 4762755.64169 100), (694349.575562 4808033.274618 100, 710545.984354 4808519.151148 101, 709851.653212 4830731.987849 102, 693708.725206 4830245.931093 103, 694349.575562 4808033.274618 100)) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform18.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform18.testcase new file mode 100644 index 0000000..eacf5db --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform18.testcase @@ -0,0 +1,7 @@ +transform - Polygon M +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('POLYGONM((11 43 1, 12 43 2, 12 44 3, 11 44 4, 11 43 1), (11.4 43.4 1, 11.6 43.4 2, 11.6 43.6 3, 11.4 43.6 4, 11.4 43.4 1))', 4326), 32632)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('POLYGONM((11 43 1, 12 43 2, 12 44 3, 11 44 4, 11 43 1), (11.4 43.4 1, 11.6 43.4 2, 11.6 43.6 3, 11.4 43.6 4, 11.4 43.4 1))', 4326), 32632)) +POLYGON M((663019.070082 4762755.64169 1, 744533.019451 4765182.932802 2, 740526.321055 4876249.126963 3, 660349.410579 4873817.333441 4, 663019.070082 4762755.64169 1), (694349.575562 4808033.274618 1, 710545.984354 4808519.151148 2, 709851.653212 4830731.987849 3, 693708.725206 4830245.931093 4, 694349.575562 4808033.274618 1)) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform19.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform19.testcase new file mode 100644 index 0000000..3043f49 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform19.testcase @@ -0,0 +1,7 @@ +transform - Polygon ZM +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('POLYGONZM((11 43 100 1, 12 43 101 2, 12 44 102 3, 11 44 103 4, 11 43 100 1), (11.4 43.4 100 1, 11.6 43.4 101 2, 11.6 43.6 102 3, 11.4 43.6 103 4, 11.4 43.4 100 1))', 4326), 32632)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('POLYGONZM((11 43 100 1, 12 43 101 2, 12 44 102 3, 11 44 103 4, 11 43 100 1), (11.4 43.4 100 1, 11.6 43.4 101 2, 11.6 43.6 102 3, 11.4 43.6 103 4, 11.4 43.4 100 1))', 4326), 32632)) +POLYGON ZM((663019.070082 4762755.64169 100 1, 744533.019451 4765182.932802 101 2, 740526.321055 4876249.126963 102 3, 660349.410579 4873817.333441 103 4, 663019.070082 4762755.64169 100 1), (694349.575562 4808033.274618 100 1, 710545.984354 4808519.151148 101 2, 709851.653212 4830731.987849 102 3, 693708.725206 4830245.931093 103 4, 694349.575562 4808033.274618 100 1)) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform2.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform2.testcase new file mode 100644 index 0000000..f775958 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform2.testcase @@ -0,0 +1,7 @@ +transform - zeroblob arg +:memory: #use in-memory database +SELECT Transform(zeroblob(48), NULL) +1 # rows (not including the header row) +1 # columns +Transform(zeroblob(48), NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform20.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform20.testcase new file mode 100644 index 0000000..22f8313 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform20.testcase @@ -0,0 +1,7 @@ +transform - Polygon +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('POLYGON((663000 4762000, 663100 4762000, 663100 4762100, 663000 4762100, 663000 4762000), (663010 4762010, 663020 4762010, 663020 4762020, 663010 4762020, 663010 4762010))', 32632), 4326)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('POLYGON((663000 4762000, 663100 4762000, 663100 4762100, 663000 4762100, 663000 4762000), (663010 4762010, 663020 4762010, 663020 4762020, 663010 4762020, 663010 4762010))', 32632), 4326)) +POLYGON((10.999546 42.993204, 11.000772 42.993182, 11.000801 42.994082, 10.999575 42.994104, 10.999546 42.993204), (10.999671 42.993291, 10.999794 42.993289, 10.999797 42.993379, 10.999674 42.993381, 10.999671 42.993291)) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform21.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform21.testcase new file mode 100644 index 0000000..53ada83 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform21.testcase @@ -0,0 +1,7 @@ +transform - Point +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('POINT(11 43)', 4326), 32656)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('POINT(11 43)', 4326), 32656)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform3.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform3.testcase new file mode 100644 index 0000000..ecdea8f --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform3.testcase @@ -0,0 +1,7 @@ +transform - Point +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('POINT(11 43)', 4326), 32632)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('POINT(11 43)', 4326), 32632)) +POINT(663019.070082 4762755.64169) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform4.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform4.testcase new file mode 100644 index 0000000..dba97a7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform4.testcase @@ -0,0 +1,7 @@ +transform - Point (unknown srid) +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('POINT(11 43)'), 32632)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('POINT(11 43)'), 32632)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform5.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform5.testcase new file mode 100644 index 0000000..63f907c --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform5.testcase @@ -0,0 +1,7 @@ +transform - Point (unknown destination SRID) +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('POINT(11 43)', 4326), 326320)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('POINT(11 43)', 4326), 326320)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform6.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform6.testcase new file mode 100644 index 0000000..532b051 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform6.testcase @@ -0,0 +1,7 @@ +transform - Point (NULL srid) +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('POINT(11 43)', 4326), NULL)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('POINT(11 43)', 4326), NULL)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform7.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform7.testcase new file mode 100644 index 0000000..8e79010 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform7.testcase @@ -0,0 +1,7 @@ +transform - Linestring +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('LINESTRING(11 43, 12 43, 12 42)', 4326), 32632)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('LINESTRING(11 43, 12 43, 12 42)', 4326), 32632)) +LINESTRING(663019.070082 4762755.64169, 744533.019451 4765182.932802, 748464.920716 4654130.891324) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform8.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform8.testcase new file mode 100644 index 0000000..b767437 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform8.testcase @@ -0,0 +1,7 @@ +transform - illegal Linestring +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('LINESTRING(11 43, 12 43, 12 42', 4326), 32632)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('LINESTRING(11 43, 12 43, 12 42', 4326), 32632)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_proj_tests/transform9.testcase b/src/spatialite/test/sql_stmt_proj_tests/transform9.testcase new file mode 100644 index 0000000..6a08d91 --- /dev/null +++ b/src/spatialite/test/sql_stmt_proj_tests/transform9.testcase @@ -0,0 +1,7 @@ +transform - Linestring Z +:memory: #use in-memory database +SELECT AsText(Transform(GeomFromText('LINESTRINGZ(11 43 100, 12 43 101, 12 42 102)', 4326), 32632)) +1 # rows (not including the header row) +1 # columns +AsText(Transform(GeomFromText('LINESTRINGZ(11 43 100, 12 43 101, 12 42 102)', 4326), 32632)) +LINESTRING Z(663019.070082 4762755.64169 100, 744533.019451 4765182.932802 101, 748464.920716 4654130.891324 102) diff --git a/src/spatialite/test/sql_stmt_security_tests/Makefile.am b/src/spatialite/test/sql_stmt_security_tests/Makefile.am new file mode 100644 index 0000000..e75ab94 --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/Makefile.am @@ -0,0 +1,15 @@ + +EXTRA_DIST = blobfromfile1.testcase \ + blobfromfile2.testcase \ + blobfromfile3.testcase \ + blobfromfile4.testcase \ + blobtofile1.testcase \ + blobtofile2.testcase \ + blobtofile3.testcase \ + blobtofile4.testcase \ + isXblob1.testcase \ + isXblob2.testcase \ + isXblob3.testcase \ + isXblob4.testcase \ + isXblob8.testcase \ + isXblob9.testcase diff --git a/src/spatialite/test/sql_stmt_security_tests/Makefile.in b/src/spatialite/test/sql_stmt_security_tests/Makefile.in new file mode 100644 index 0000000..4472dcf --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/Makefile.in @@ -0,0 +1,451 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/sql_stmt_security_tests +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = blobfromfile1.testcase \ + blobfromfile2.testcase \ + blobfromfile3.testcase \ + blobfromfile4.testcase \ + blobtofile1.testcase \ + blobtofile2.testcase \ + blobtofile3.testcase \ + blobtofile4.testcase \ + isXblob1.testcase \ + isXblob2.testcase \ + isXblob3.testcase \ + isXblob4.testcase \ + isXblob8.testcase \ + isXblob9.testcase + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/sql_stmt_security_tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/sql_stmt_security_tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/test/sql_stmt_security_tests/blobfromfile1.testcase b/src/spatialite/test/sql_stmt_security_tests/blobfromfile1.testcase new file mode 100644 index 0000000..7162b02 --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/blobfromfile1.testcase @@ -0,0 +1,7 @@ +blobfromfile - null input +:memory: #use in-memory database +SELECT BlobFromFile(null) +1 # rows (not including the header row) +1 # columns +BlobFromFile(null) +(NULL) diff --git a/src/spatialite/test/sql_stmt_security_tests/blobfromfile2.testcase b/src/spatialite/test/sql_stmt_security_tests/blobfromfile2.testcase new file mode 100644 index 0000000..03b39fa --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/blobfromfile2.testcase @@ -0,0 +1,7 @@ +blobfromfile - non-text +:memory: #use in-memory database +SELECT BlobFromFile(32) +1 # rows (not including the header row) +1 # columns +BlobFromFile(32) +(NULL) diff --git a/src/spatialite/test/sql_stmt_security_tests/blobfromfile3.testcase b/src/spatialite/test/sql_stmt_security_tests/blobfromfile3.testcase new file mode 100644 index 0000000..fefa3c6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/blobfromfile3.testcase @@ -0,0 +1,7 @@ +blobfromfile - missing file +:memory: #use in-memory database +SELECT BlobFromFile("no such file.whatever") +1 # rows (not including the header row) +1 # columns +BlobFromFile("no such file.whatever") +(NULL) diff --git a/src/spatialite/test/sql_stmt_security_tests/blobfromfile4.testcase b/src/spatialite/test/sql_stmt_security_tests/blobfromfile4.testcase new file mode 100644 index 0000000..f38850f --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/blobfromfile4.testcase @@ -0,0 +1,7 @@ +blobfromfile - emptyfile +:memory: #use in-memory database +SELECT BlobFromFile("emptyfile.txt") +1 # rows (not including the header row) +1 # columns +BlobFromFile("emptyfile.txt") +(NULL) diff --git a/src/spatialite/test/sql_stmt_security_tests/blobtofile1.testcase b/src/spatialite/test/sql_stmt_security_tests/blobtofile1.testcase new file mode 100644 index 0000000..5a98592 --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/blobtofile1.testcase @@ -0,0 +1,7 @@ +blobtofile - null payload +:memory: #use in-memory database +SELECT BlobToFile(null, 'abracadabra.outfile') +1 # rows (not including the header row) +1 # columns +BlobToFile(null, 'abracadabra.outfile') +0 diff --git a/src/spatialite/test/sql_stmt_security_tests/blobtofile2.testcase b/src/spatialite/test/sql_stmt_security_tests/blobtofile2.testcase new file mode 100644 index 0000000..e94156c --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/blobtofile2.testcase @@ -0,0 +1,7 @@ +blobtofile - non-Blob payload +:memory: #use in-memory database +SELECT BlobToFile('alpha', 'abracadabra.outfile') +1 # rows (not including the header row) +1 # columns +BlobToFile('alpha', 'abracadabra.outfile') +0 diff --git a/src/spatialite/test/sql_stmt_security_tests/blobtofile3.testcase b/src/spatialite/test/sql_stmt_security_tests/blobtofile3.testcase new file mode 100644 index 0000000..8b2fb32 --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/blobtofile3.testcase @@ -0,0 +1,7 @@ +blobtofile - ok +:memory: #use in-memory database +SELECT BlobToFile(zeroblob(100), 'abracadabra.outfile') +1 # rows (not including the header row) +1 # columns +BlobToFile(zeroblob(100), 'abracadabra.outfile') +1 diff --git a/src/spatialite/test/sql_stmt_security_tests/blobtofile4.testcase b/src/spatialite/test/sql_stmt_security_tests/blobtofile4.testcase new file mode 100644 index 0000000..8e56dfb --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/blobtofile4.testcase @@ -0,0 +1,7 @@ +blobtofile - non-text path +:memory: #use in-memory database +SELECT BlobToFile(zeroblob(100), 1) +1 # rows (not including the header row) +1 # columns +BlobToFile(zeroblob(100), 1) +0 diff --git a/src/spatialite/test/sql_stmt_security_tests/isXblob1.testcase b/src/spatialite/test/sql_stmt_security_tests/isXblob1.testcase new file mode 100644 index 0000000..9f77078 --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/isXblob1.testcase @@ -0,0 +1,27 @@ +isXblob - png +:memory: #use in-memory database +SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT BlobFromFile("sql_stmt_tests/k3b-icon.png") as blob) dummy +1 # rows (not including the header rows) +11 # columns +Hex(blob) +IsPngBlob(blob) +IsGifBlob(blob) +IsGeometryBlob(blob) +IsZipBlob(blob) +IsPdfBlob(blob) +IsTiffBlob(blob) +IsJpegBlob(blob) +IsExifBlob(blob) +IsExifGpsBlob(blob) +IsWebpBlob(blob) +89504E470D0A1A0A0000000D4948445200000010000000100803000000282D0F5300000231504C54450000009FA1ACA1A0AAAFB2B7A3A7ADAFB2B7919AABADA796AFB4B6B7BBBDBCC0C4BEC4C62122239FA495B9BDBFBFC3C5000000000000121212131313989CA4A2A7AD989CA5A2A7AD5E61640000000404040000000303039B9FA79EA2A99A9FA79EA3A91D1E1E1A1B1C1415162A2B2D2B2C2E212223979CA9AB9AA2B4B8BCADB2B6BCC0C3C8CBCE504C535A585C737374767673EBE6E7F0F0F19CA7B1B1B39CC6C8CBCCCFD0D2D5D7D2D5D6A8A8A8ACACACB8B8B8888889878788B2B4BEB9AFB8D8DADEC1C4C9CCCED3F4F4F5E9D9CD898A8BBDC3C98E8E8E959595E7E7E718181E1B1B2123222927252E3231393938423E3D4441404B4A49504C4B574C4C504F4F5651515559585E59585F5958605A5A5F5D5C645E5E625F60687272757B7C7F7D7C818080868686898A8A8C8F8E90908F9493939495949696969B9797989A9A9B9F9FA1A3A2A7AAAAADB4B4B5B6B6B7B8B8BCB9B9BDB9B9BEC2C7D8C3C3C5C6CEDBC7C8D0C7C8D1CBCCCCD1D8E4D2D4C5D4D4DFD4D7E3D5D6DED6C2BDD7D7DED7D8DDD9D9D9DACBD3DAD7BFDADAE2DBDBE2DBDCE3DBDECDDCD6DEDFE0E7E0E0E7E0E1E7E1CCCDE2D8DEE3E5ECE4DAC6E4E6D5E5E4EAE5E5E6E5E5EBE8E7ECE9D9DBE9E9ECEBE8EDEBEBEFEBEBF0ECECF1EDEDF1EFEEF2F1F1F4F2F2F4F2F3F3F3F3F4F3F3F5F3F3F6F4F4F6F4F4F7F5F5F6F6F6F6F6F6F8F6F7F7F7F7F7F7F7F8F7F7F9F8F8FAF9F9FAF9F9FBFBFBFBFBFBFCFBFBFDFCFBFCFCFCFCFCFCFDFDFDFEFEFEFDFEFEFEFEFEFFFEFFFFFFFFFF42B14FFC0000004A74524E53000B0B0B0D0D111111111213212526282D303F404B4B4C4D585B5E60656C6C6D6E6F71768181858F9090929498C7C7C8C8D0D0DBDBDCDCDEDFE6E6E9F1F2F6F6F7F8F8F8F9FBFDFEFEFEC6B2B0FB0000010A4944415478DA35CF855242011445D163777737767762777777773776B762072A0662A2A0E0FD3A9FCCB03E60CF6CC829993B385AA84141DD3D6E8CB3329BE8AD0D39BDE0A1A9A50DEE19FF2EDC000C8D90C991E975EEE9D5CBB738420780C7CCE2EAC4CE05FF5D267DE3F900CAEC85ADDDBDD4D898F4CE8EB6D6145D988EAE6D1F250710E3B7EF809C60C7D9DC3F09F4A3F1DEAE86C101891BEC97995E90EF6D7FFBF58D544CAE309B3BE7BF26F93FD5940D57F7D4923354E2EF0522499AB0B0BCA2AAA494AC014FDEE787A0F939BFBBA8A0BE38C30AD00A133D5C36092B5BF27289220D01E8871E1F363E6666E76451B431FE697A25D4D1D78F6C3ECA44F1AB6AC962B9D8DA1801F8033208565E8EDAAFA30000000049454E44AE426082 +1 +0 +0 +0 +0 +0 +0 +0 +0 +0 diff --git a/src/spatialite/test/sql_stmt_security_tests/isXblob2.testcase b/src/spatialite/test/sql_stmt_security_tests/isXblob2.testcase new file mode 100644 index 0000000..9f2dde2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/isXblob2.testcase @@ -0,0 +1,27 @@ +isXblob - gif +:memory: #use in-memory database +SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT BlobFromFile("sql_stmt_tests/ktorrent_sidebar.gif") as blob) dummy +1 # rows (not including the header row) +11 # columns +Hex(blob) +IsPngBlob(blob) +IsGifBlob(blob) +IsGeometryBlob(blob) +IsZipBlob(blob) +IsPdfBlob(blob) +IsTiffBlob(blob) +IsJpegBlob(blob) +IsExifBlob(blob) +IsExifGpsBlob(blob) +IsWebpBlob(blob) +4749463839610D00B80BA52E00BDBDBDCBCBCBCCCCCCCFCFCFD0D0D0D1D1D1D3D3D3D4D4D4D5D5D5D7D7D7D8D8D8D9D9D9DBDBDBDCDCDCDEDEDEDFDFDFE2E2E2E3E3E3E4E4E4E5E5E5E6E6E6E7E7E7E8E8E8E9E9E9EAEAEAEBEBEBECECECEDEDEDEEEEEEEFEFEFF0F0F0F1F1F1F2F2F2F3F3F3F4F4F4F5F5F5F6F6F6F7F7F7F8F8F8F9F9F9FAFAFAFBFBFBFCFCFCFDFDFDFEFEFEFFFFFFBDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC1BDBCC121F904010A003F002C000000000D00B80B0006FEC0952A853291449E4DA63201088946A492E91C168FC965F379956AAB50EC746B8D66A95CF318DC3D93C35E7459FC4DD3E570375B5D9FC7DF6D6B767F7B77807C78817D79827E7A838F8E8D8C8B8A898887868584909396999C9295989B9194979A9DA3A9A2A8A1A7A0A69FA59EA4AAAEB2B6ADB1B5ACB0B4ABAFB3B7BCC1B9BEC3BBC0B8BDC2BABFC4CBC5CCC6CDC7CEC8CFC9D0CAD1DEDDE0DCE2DBE4DAE6D9E8D8EAD7ECD6EED5F0D4F2D3F4D2F6DFE3E7EBEFF3F7E1E5E9DAC5AB870FE0BE81FEF205E447F09F3E81FD0A3E6498D020C4860A0F4674B810A1C48E1B335EAC38D123478D182D52FC889224C8942543AA342972E5C9912C71DEB45993E6FE4C993161BE74D93227CF9F428BEEF41994A8CE9E40871A652A756954A550933E45EAF468D3A957B77EB5AAD56BD5AC5DA962E50AB6AC5AB167D9924D1BD6ECDAB168DBD2755BF7AD5DB877E3E2959B77AEDEC38613175E4CB8F1E0C78223079E0CB8F2DFCB7E33F7DDCCB7F3DECF881943A68C993368C58E255BD6EC39746AD2AC4F8B565DBA35EAD1AB4DBBC65D5BF6EBDCB667C3D67D9B76ECDDC6890B07EE9BF7F1E2C383FFEE8D3C7AF3E4D29D2B9FFE7C3975E8CCAB8707FFDD7B77EEDBB567C77EDDBAF8F2E8D7BB277F5E7DFBF1E6D3B37F5F7F3F7DFDF3E5271F7EF1DD079F7DFC01482082FF0D78A07F021AD85F800526E8E0840B4258618312FE2AF820850C46686187177A88E1871982A861881B8AC8E18830BE28A38B34B668238B38AEA8A38A3CA6E8238A409E28A489449668248948C658638E3D0659649233DEB8E38F431EA9A4944D5609E592533A6965944C52F9E495617AB92596627EC965966382D9A59664BED9E69A699E59269C6EB2A9269A66C6A9A79D72EE79E79C7CE249679F79D6E9A7A289227AA8A185123AA8A08102FAE7A28E464AE9A58D423AA9A58C3E2A69A5987A4A6AA7A3722AEAA6A16A0A6AA69F969A6AABB1A2CA2AACA7AEFAAAA9AABA2AEBADBCD29AABAFB6EE3A2BAEBDD6AAEBAFC6027B6CB0C80A9BECB0CA12BB6CB1CC668BEDB6D7766BEDB7D5864BEDB8D3962BEDB9FED1A60BEDBACFB6EBECBBCDC6ABADB7E29AABAEBBF2720B2EB9E8B20BEFBCFBDAEB6FBEF4F27BEFBFFAD6DB2FBE002B7C30C1012F8C70C102339CB0C103378CB1C5144B0CB1C3195F5CF1C4113FACF1C81F6F4C32C81C971C72C7268BECF1C933CB1C33CC2FBBDC32CB2BAB9C32CA34DFAC73CF40DB9C33CF3FD78CF3CE3E077D74D346335DF4D2442B3D74D24223EDB4D4566B1D75D559434D35D64F4F7DF5D66097DDB5D8677F4D36D7619BEDF5D868BF9D36DC6AC7BDB6DC6CCFDD36DD6ED72D78E084036EF8DF88FBAD78DF8CF3EDF8DE90EB2D79DE94E36DF9DD98DBADF9E0872FFEF8E4976F5E78E28D475E79E69C93FEF9E9A2775E3AE8A88FEEB9FEE9A1A73E3BECADAB4E7BECAEAF5EBBECAFB36E7BF0BFF7BE7BEEB70B0FBCEFBCEB8EFBF0CC234F7CF3C917EFBCF2C63FBFFCF1D073BFBDF6D9637FBDF5D5533FBDF4D1770FFEF8E6A7FFBDF8E5A3EF7DF8E49FAF3EFCF6BF5FBFFBF4B73F3FFBF25B5FFCEEB7BFFF0D507FFE1360FEFA1740FCF10F80044CA0030DB8400822104A2A48C6106CF1040E0EE1049A60C10A8450841120810319C840004448421398D0032854210B33E8C213A6708523A4E10B39A0810C0860866DE0A10F8108C213F6F087394401084700C3231291044CEC8006348044122EF1031D50C2009E38022C6A918B5844E11693B8441074808704E022089A98463242718D3C2C8008FE5590C1327A208B7274E308D6884722BA30041FD8C0060C30C3149CE08F1FE0C0060E30C70F2292031C60A4101C390240425292563864251319C93912419396E400023CA9C4478AB291A5DC24073A304A32D6D08B09F0A30961294B11C0510185D4E41E6188CB1C1AD285BBE4C00266A88243BE118BC3F4A53137D98164E67099806C2631515082128820046B64000B4958CD4A66739B19EC26363DA0CD1176B004DE242738536002748EB39CBE6C673AE179CE7436009C2A90A72D3D70CF6D12019DD704810358E0CF1300149B030527358F10821024D49CE16468081E405088A6A00412A5A8428D50C9895634891C6DA846734843288AB405D3C4A8086CFE09019492949AD664A94B27598483B6749AF2AC6404664AC79A8E40A73CDD203043B0D3692E53044525E92FA12802091094881835E1049E4AC6A88A800254B522468F80D58FD6B19A5CCD6A1DDB09C50A88B594DD34AB57D18A4EB5FAB19B16F8E8130E6904125C40AE8EACEB5DD7790263DA55AC863C6435310058B612D6AB9F34A8093080D2422A91AE1968AC2F1F6B02136440AE56346607B26A452596C0039CB582673F20D9C99692B47825C2691B5BC8C48280B54A45816C43D082D2AA800B2810416D9FCAC214586104BBCDAA6F89005CD6F6D60A2408AE57877051E58AB091C574EE0A66B802144897BAD635EE74E758DDDAB2B605D3F5A5779F0A415E8B8E97A0E535670ACECB02F0FA93BDEE15AF724BBB82F5CE57AEF6FD6E7BD5EB5DF6EE5705FD752E78011C60DE0E38C0286DAC4B11DC5EF48A10C1C175691000003B +0 +1 +0 +0 +0 +0 +0 +0 +0 +0 diff --git a/src/spatialite/test/sql_stmt_security_tests/isXblob3.testcase b/src/spatialite/test/sql_stmt_security_tests/isXblob3.testcase new file mode 100644 index 0000000..ec8360d --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/isXblob3.testcase @@ -0,0 +1,27 @@ +isXblob - jpeg with (token) EXIF header +:memory: #use in-memory database +SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT BlobFromFile("sql_stmt_tests/ktorrent_grad1.jpg") as blob) dummy +1 # rows (not including the header row) +11 # columns +Hex(blob) +IsPngBlob(blob) +IsGifBlob(blob) +IsGeometryBlob(blob) +IsZipBlob(blob) +IsPdfBlob(blob) +IsTiffBlob(blob) +IsJpegBlob(blob) +IsExifBlob(blob) +IsExifGpsBlob(blob) +IsWebpBlob(blob) +FFD8FFE000104A46494600010101004800480000FFE100164578696600004D4D002A00000008000000000000FFFE0017437265617465642077697468205468652047494D50FFDB0043000503040404030504040405050506070C08070707070F0B0B090C110F1212110F111113161C1713141A1511111821181A1D1D1F1F1F13172224221E241C1E1F1EFFDB0043010505050706070E08080E1E1411141E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1EFFC00011080014000103012200021101031101FFC400160001010100000000000000000000000000000607FFC4001C1001000104030000000000000000000000000401031453151661FFC40017010003010000000000000000000000000003040607FFC400161101010100000000000000000000000000000313FFDA000C03010002110311003F0087EB9E8B6E62269B225729361D6CCC33E56CA8019F7FFFD9 +0 +0 +0 +0 +0 +0 +1 +1 +0 +0 diff --git a/src/spatialite/test/sql_stmt_security_tests/isXblob4.testcase b/src/spatialite/test/sql_stmt_security_tests/isXblob4.testcase new file mode 100644 index 0000000..799a999 --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/isXblob4.testcase @@ -0,0 +1,30 @@ +isXblob - jpeg with plain jfif +:memory: #use in-memory database +SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), GeomFromExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT BlobFromFile("sql_stmt_tests/sandro.jpg") as blob) dummy +1 # rows (not including the header row) +12 # columns +Hex(blob) +IsPngBlob(blob) +IsGifBlob(blob) +IsGeometryBlob(blob) +IsZipBlob(blob) +IsPdfBlob(blob) +IsTiffBlob(blob) +IsJpegBlob(blob) +IsExifBlob(blob) +IsExifGpsBlob(blob) +GeomFromExifGpsBlob(blob) +IsWebpBlob(blob) +FFD8FFE000104A46494600010101006000600000FFDB004300080606070605080707070909080A0C140D0C0B0B0C1912130F141D1A1F1E1D1A1C1C20242E2720222C231C1C2837292C30313434341F27393D38323C2E333432FFDB0043010909090C0B0C180D0D1832211C213232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232323232FFC000110801BC019103012200021101031101FFC4001F0000010501010101010100000000000000000102030405060708090A0BFFC400B5100002010303020403050504040000017D01020300041105122131410613516107227114328191A1082342B1C11552D1F02433627282090A161718191A25262728292A3435363738393A434445464748494A535455565758595A636465666768696A737475767778797A838485868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE1E2E3E4E5E6E7E8E9EAF1F2F3F4F5F6F7F8F9FAFFC4001F0100030101010101010101010000000000000102030405060708090A0BFFC400B51100020102040403040705040400010277000102031104052131061241510761711322328108144291A1B1C109233352F0156272D10A162434E125F11718191A262728292A35363738393A434445464748494A535455565758595A636465666768696A737475767778797A82838485868788898A92939495969798999AA2A3A4A5A6A7A8A9AAB2B3B4B5B6B7B8B9BAC2C3C4C5C6C7C8C9CAD2D3D4D5D6D7D8D9DAE2E3E4E5E6E7E8E9EAF2F3F4F5F6F7F8F9FAFFDA000C03010002110311003F00E7A63E58C2F5A8A3259B9144F932F1DA9DF7938EB5CAAC6EC942957049E2AC34E235155A29047804673533468E410719A99414B4218E7954C79C1DC6A4B2642DF21FAD218D4C617AD3A3B4318DCB54E8C6F6B9375B171C608C77A4DA0723AD4225DDC13C8A59AE4469CF3E9554612827CAC9E5EC32691A352455337B23B6D04D2CB72D3FCA071489118D8498FAD6737389B463A5C922B2673BD8F5AB325B2797EE05391D4C791D69F80E8413DAB921527CDA99A93E6B1CC6A0B2962AAD5425B6610E5AB6AF4086427AD5195CCE028E95DB037B9911CDE4822B52D0968779CD5596C5B7E40AD6B4B561128038C735AF425B23B666F38291C1AB3F628FCECCB8C1AB5FD9FB7122727B8A8AEB7F93C81C5429F41295F433EE2D5239405EE78AB71C6020E7B5518964925249E053A799A3F9492293D50DAE83A72CAFF275AB96F7F709185CB0AA302BB1DC7935AF05BADC4391D452BBD912DA5A0D6BD778F0CE7352D8DC0F35738358DA9412C4FB17F9D3AD1655019B3C5394535EF21B49A3B7578576B155DBDFDAA1BEB28EEE3FDC63A66B063BC6C8C9C015A11EA5E56369A8D1AB1924EF638FD663786708C738E2B4349984B12C48393D6AA6BB3ADD5FA9038EF52DB1FB2A87420E450D3E4B22E71B1AF26991C9F2103279A866B21671706A8C9AD323648271EF56ADEF85E8F99703153084D6AD93CB6DCB1A4EA889BE2989C56D45756061666703EB5CCDDD8EC569554F159B148FB8AF35BA9329C5337353D42371E5DBE37671915269B17C9BE5EA6B02390C73E4F526B516579000AC40A372ED6469F92AEE5D78C77AAE18A4E7B5448F3C7DCE28944870C463DEB2690ACB62E4A1DE2CA803DEAB477064631C9F3678C55796E6541B4138C5436F38598FA8F5A86899268BD259C6483B40AD08E18E3B518E5B233F4A84C82450A42F4A8E47920889078A9A53704D128E7B5485DEE58AF037D64DCDA48581C9ADAB8BB469C2B2F350CE30BB86306BAA2EF1D4D22AE675B40CA84F5C547223BC9B066B46D24015948EB5616D2320C9D0D5329AE873732C904A3B5753A65D34B6613B8C5635DB45E61DE79157F4E936E0A8E2B44F415AC6D2C7BBEF534C4037CBD6A58EE41501979C75A52A0FCC2B2722B7162B60F8F3077AB2BB2D158E38AABF680AC15DB0296770C07395ACD4AC4DFA0EFED28FFBB4567ED87D28A63B1388D9DB766A5F2B0327EF546B2EC2715346E1816C73513B6E84EE4241246E26985C86C0356A70121DDD73FA55581433E722926DEE4FA97212FD6A532100F207E350C93C691E10FCD5488966CB64E0D69192BD992D21F24C4B900F7ED53A06D80BF4A6D9C2A189735627202E145126E3AC41BB11EC1C143565197006066AA443073939A591F6F3CD613ABCCAC0E572E92A2AB5CCAC8410D5596EB2D83D2A5660E3AD73A5283215D320B964963DA4E4D64CC4433715A5700015952C666623278AED83B9D0B6356CE48660A09C9ADC8E2531E140AE6F4F876483731DB5ACACD1BFC84E3AD697B12D96E777B5C038C524EAB3C448DBC8E6ABDC4CD30553CE2890F976ACC302B2B59E84346529D9707681C0ED4D92DCCF282073524316EF9CF735A11C6888188EF436DC95C3616D6148D4029CFD2B46358421643B5B15424BD4CEE180CB5546A4C250C3E95A3496A8D2C90F9545C5D2A939C1AD3B6D3A39131C64565199DA5F315307D7157ECEF248F923AD65CD27A33297910DFE9FE53652B318BAE54E6BA2FB50958865ACCBC306E2C78AA50499317AD9986D67E74DB9873EE6B40D895B704F4C7AD1106918B295D83DAAFC68C63E7A5134FA1ACAE73B2D96E2715369F6F24326DE715ADF620AC189EBCD3E2B6CB0E78F5AD2DA06E36EDCB45B36F18AA16D14692E48E48AD7BA81120DEAC49F7AC891F6364F7A8BBBD90ED6216B5696E8140703DAB41A29309B570075CD4BA588DBE6DC377BD6D3881E0257018751EB577B2D48948C41763E4475E6A596E50C206DC567DD2849B23D6AB35D10369E952A3ADC1334F08E8718E9583743C8988049C9E82B5A201EDC90C738E959132CAB38CA9233D69B5729BD0E874DC4F165B3B40EF4EBC62C1906738E2ABE992930640C01D73523DC61CB374A53A6AC4C7439B9E1717592C7AD3EE66DB08526ADCD26F727670735957870DC55A7A58D63DC44BB112E69EF7CEE9956359524723B67071535B8DB8073BAA9A25B63E289EE2E7735743671794A062AA5BC7198F7A9F9875AB3148C930C74A71611376D4C0ABFBD1D689539CC472B598F261860E0F5A58EEA4924D91124F7ACE5665105F098C9819A6C7E62A7CD9AD68A357CEF5CB5588B4F4DA7CC5F96946C294D18DBE3F7A2B67EC367FDCA295919F3A284ABB73EA285621783572F210916E93AD6389CF2AA72B9A1492DCB8CEE5A7B85F2886A8A2324BF2C60E09A87CA321041AEA7C356F0484C7228CD29479824D1942C1C2867069E0AA4654AEDC7EB5DDDCE9F6CB6E7E51D2B88D5422C8C141001A8E5B33353B9044F96E29F2C809009159F1B75C1A1CBB2F3D29B684685B8567E48C54D7289B40522B151DB76326ACAC9271BB2454AB3D1A08C6EC2E202002386A626E5FBC307D6AFF962664CF4AB77360AB16E0474A27C91668EC63CF8F2B3D78AA56D1F985B03BD5BB8011B6B1E2A3B7951186315AA8E9745BD8B76D0AEEC77AB2919590861C55769D11C321C9A53702543CE0D2775B9832748402CC181F6ACFBEB96542AA6AF5B95D87CC7359F7A232FD49152DDF6057B95209A451D3BE6B612EF36F823B553822495311FDE14E8E611131C839A15EE532B4A5B793D0135AFA4E9915C1F3646C0159B727760A0247D2ACC578E96E235C8C569A0DDDAD0E8E65B1B75E194903A562DD6A51862B128FCAA8B79CC093B9B3EB55D62669390C315124C8E5B6E5FFED2644CB20E7DAB2EFAF45CB6D43863E956C94F2C86038AE7E639BBF93D6A612E834BA9BDA6C726DDA1B033D6B50799171B4FD6B12DA4F940E7356D2FDA27C392456CB52AF226BAB9742158633566D1D5D46587D33542EE54B8883E7F3AA705CEE72AA7A53B341AB3AE8AD639970C462ABDDE851C8A7691F9D621BD9E08CB2B9AA6BE2AB889CA1E68F7591CB27B1ABFD8D35B31113633E94D924B8B71F30C91505A7884C9303236DCD5DBCBA49632EA3F1C54CA2839ADF114B7BDD3EE75E9556E6D955B72F5A8E4BC68C9C1205471EA11BB61DB9A6B5D8D3D0B3672132F96091EB5A0230FC1C567DA812CDF20AD78230BC3F5349BE84912DB32A9F28601EB8A85AD2E300E188AD62040A1997E53DEAF453C0F0E3159B972EEC96D9CABA80D87419EF542482396751C6DAE9B52B78D90B2FA5721347379ADE5E7835709A975358CB42DCB6688BC0CD2E9FA38BEBAF2FA5374F7B933A24CA48ADB7DD63751CF1E013D45689A5A89BBAD027F0A9B605831FCEA93C06252003915D10D57ED1101228CD53B82AD1B00A39ACDD5F7AC8CE329276673E0962771E86AE5A148C83EB55E580A316CF14D8DD54F2DC8AB5A9B5EE8DF836AB83EB5667B958E3318C7358ABA846F10552430EF42CB2C8F907358A7A9935A9A5C51553F7D455E8216F2EFED69B631D7AD57B6D3C004B7D69D6BB221F37DEABF1B8671E95CCE72BD81DD10A591C12AB9A7432BD94DBD49535D0C4B0A44A4E39ACCD412170769E6B452E55AB1467DCBABAACB7511C31248C5737AA09048793935622B892D14EDE955A69FED321663CD369BD4D144A36C1CB1FAD6AC70078F9F4A448A30A08EBDEACA1D98E38A9926C4D36CA31D9E6E39E055E4B252DC638EB4F65DC3280D32396446C9527156B468228936A47301C51792AB21553CD559655793207CD55E49D95B04F1594E3CD2B8ED7654B942F2E064D53689E36E322B5ADC2BCA180C9A59ADB73E76D752D2C5B9AB5834FB759E125BA8ABE34C5F2F2A4EFA9349B7467D8DC29AD868BCA976AE0FA62AF97988B5CC48B4D65187E79A827D38EE2D818AE8DA40CBE591F3E6A94CA3241EB495149DC6A36336CEC8447918CD597D263BA67E30C3BD2EF6538C7152A5C98C71C735A72A2D2221A4C22DF3BF2CBC62991DA26EC6C07356D672D9269B905B766928AB87290CD6A122FDD281EB541ED8B5B971F7C1ADADCACB86EF4A60DB0384C1CF7A5288389C75C9740C08AC7B65F36F0B01CD7577763210DEF5434ED2985D0C9EF9359C29EA2B5916EDAC4F925C8ACABB53BDB03A1AED2E16386D9109038E6B16F6C53C82EB839E6A9AB3B2239AC732C6428474150AA10FB831CD59955951C01D3D2A8C32319B695EF47A976D0DB8EE11ADB6375C77EF5913D982ECE077AD04B56900299CD25D42D145F364543D04B429D95B34B3A8C702BA395521B72319207E55574844C827F33526A6C76944E7F1A3DAAD8C9EE60CECD3CCCABD3352DB6932CAF902AC5BAC71924AFCDDEB560BD10E0AA8349CE2B52AF61B636C6C9C6EC669D7377E5DC8C83F85477372D2CEADF773E956D34E33A891B26A14B9DE84DC94DE35D43B1B9514F556823DE0E57D2A54B68618BE7C0A85D034676B647A66954A4DEA3BDF42BDEEA48C87E604F4C547A67D9DCB3BEDC9AC2D464F2E723DEA6D2A744219C9AB8538D8D251B2D0E99AD637914C6A1467A8AB9259C2B18691C961D05627DBB3CC44E451F6C9193E673549A5A196ACD19A38946500CD352DA475201E2AB40E1F0ACC6AF21D831BA9B485668C5BDB768D8824D67BA6D5F97926BB982D2DEE53E7C13552EF4681918A6030E6A13B32E3516C72F6F03860D5B5630A632E696D523F99187DDEB556EA5584B18891533B3D86F5357F73ED45733FDA12FA9A2B3E590CBF359B862C87233D33562CD18BED6EB5316690E01A72DB9116F1C3A9A728F32D09E5722D943B3058D51B9DD8386E95777F99B54919AA9771321C9E86B9D51A97BB25C1A3325B97DBB48C7BD2C76CD2464FE35604119F99A9AF3345809D2BBA3A2D4AE633DA796D9FE66CAE6B7F4CBCB59E20ACC035511686E46E3CD67C96A6090ECC839A57426EE75933C16F1EE0C0E6AAC2CB2877ED585FE912A85DC58569D9C86280A91CD24D028D86BEC0EC4F18AA93B46C6A697A9383CD5616E5B712322A22A4DEA5242D8DC86970BDAB7A2113A8F33A5615BDB7D9F2E0633561EE5963F95B9AEB514D072B66A4A8D6CC190E54F7A924BD668D76707B9CD64457F205C3F407A521BB5572C01287B568A362E31B1A323C8C3218E6A3599C1C30CD555BF848C6E3F4A6C9768065723DE997A17DEF220B8D8775536B9DD9DBC7D6A9BDFC4CA42805AA9BDD10D90314981BB0EA007CB260E6A7F396442ABC5728D7FF00360D588AFBD09A561A67422E0960B9EB57E1B9C46C871D38AE6C5E062A33CD68C528F2FB9CD00CB129F3140CD374F0B6F3EE6E6A16DDD4A9C52A44DC3026AA3125D993DE5C0964EF8ACF98B08CAA9F94F5AB6F3281B5D727B544CC9B71851DEB1941AD4CEDA98D6F6A669FCB23A9AB575E1F6800655F7A96DF6A5F06CF02BA976436E0AAEE5C7358D476444A4E2CE26D1CC5742274F6AB3AD08CC6BB7AD695C450ADD799803158DA94827B95588E547A53BA71D071D5DCA7179912E5692499D949639ABC96B3B20C8FA5413D932AE76F1DEA1A57D43DD331AE0A9E8685D40E7183C569A58C663CB019354E4B2891C9E0FB5528402C9920BA2CE84D7456D76E6DD4E722B9868589181C0AE86C7E6B45E3A75AA518AD899C52D892EA4927C04C8A6AC1288F68E49AB65D7002819A05EAC71153B7352A69BB5C13387D4D1D2E595877A742AE60E335AB7C90CD3B3BE3F0A8C08D13E515527CAB4346F41D618119127DEED560A2B37CB9CD55F30120E3A55FB650CB90C302B35EF6E28F7258230A320E0D48E431081C934AD6EC5320E0D5531C88C5F18C77AA9241A1665BC6B7503730FC6922BE91F80C4E7D6B3A676B97C67914F84CB6FCB722A254D5AEC4D2DD13B993CEC86C64D5B96CA0FB296763BCF3C9ACB9EE5DDC6D1CD598A5775646C9C8A70DAC540A3F668BD28AB3E437A51556197B732AAC8B9CFA55D82E01521D4E2AB6F884BB4B023AE28B8B901B3101C534AC692D116248E6077203C552B896565C30E95AD67741A221F9CF634CBC48CA80075A72764649B7B9908588C126A786C9A51C8357E1B153B5B2055CDEB1FCA00E3BD73CA49194AD7D0A696A208F7303557EC4B71B9B774E79AB5784C876A9E3DAB2E795ADFF00D5B93EA694277DC493420CDBCA3D055BF314AEEC0F7ACAF3CCC0E7AFAD2FEF5149C9C56D08F565A4CD433DBFDE6C715526BA46E231C565C92396DB9A74730036F1EF5718F315187565F92E95A0DA383545A6656E738A9B642E99DDCD5770002324D6E958D50EF3D4F73BAA19AE004E324D4582BCE0E2A5B785E66F9467DAA9B2922012CACDF22D38C7339F989C62BA1B4D19E5C1740056849A6C76F09017E63EB52E48AE4672D145B23C18FF001A69B6791BD05755168AC2332CA98CF4A41A67CFB767068E743F6672CDA4B93D31DF34F82D4893CBC64D75CFA76C83762AAB69C194346B86CD1CE907B3673973692C278CB77A75BDCB8187C8C5744D6DF26D65E6B3EE74E27E64068B8B95A245BC32205660C076A74775B1FE539F6ACA8F10BED93E5E7A9ABC8B1AB874915891D335A42572251B16819267DF8E2A5B9B450AB2EE04E3A556FB4242B82E0F3D05496D70970CC9B80AA6AE40D8EDF2C0E2B52D98AA6D3D2991A94E3A8C52991924031C573D4A69E8C4E2A454BE4FDDB1DA473D6B374C8152E8B4A720FAD744CA254C11D6A9358A46FBB0466B250E4D81C34099E3DC020E3B552BB05A3CF4C7EB53CAA911C83546EA767C8403A566D36EECC54599D25DB2B150B93515BC325CC9B9860D5C8E04542F20C93E950DA4DB2EB6ED20138AA8D9152565A0DB89A4B63B0A023D6B4B4B94B0C30C034F9ADA39143639F7AA858C120028751DEC4AD51AAC5564C564EA4CC9C21EB5656662A49C566DD4A5C905AB0517CF72E31B156490CA154F63CD4F2288E2071DA99A7C22691BDAB4DA05D9B08AE89AD2E5E864A4FE648136F06B4576C2005E491F95361B758B7B6DEDD69801E48E953CD6417E84E2F1C0C9EC6A49AE32A03E3E6AA139022CF3C551696675C163B6886A4346D048E32240C29D713F98BE5A8AC74B870A16ADC722AA6E6355E424996EDC2C52A34C702AD5CBC6CCA6D5867BE2B026BB695F686E2A7B6B8168C19BB534ADAA2D2B6A6879777E868A3FB757DE8A9B95CCC65C6C0BC3F3E951DADC046C120D51B82D34C719A7DBC522B6D23AD28EA42379278D88C707FBBEB561DDB2A7F86A85AC1BA3E7822AD96963B6E4657349A7DC4CB4976ACB81F7AABDC5EEC1822A0B7FDEC873C1A5B86C29561C7AD60A9F33B9318A6C8DAF5A58C8E54F6AAA632E32DCD4E20E3746777B51BFE5DA7835A72EBB1725D88EDADCB4D82BC568C962E230A0706ABC44A0DF91ED514DAC3C64C790D55EF3D8145943508D6038EFDEB29E71D3356350BB32C9B9F8AC992652DEB5D34E324B52D16C5CB03C3714E5B87638DC6B3C4A49C2D741A26912DDC8AECBC6456927646905763EC6C27BB208C81FCEBB2D2B458A3452C70DEF5ABA5688B0C6A5900E2B623B4883636573CEA763A141257328411C2DB63F9A4F6153DA69524D3F9938DA17A0ADA8ACE2DC0E02B763530B69B3F2B67EB4E226CCD92C2338500D41269C106702B7D2DC8FBDD695ED948E141A56EA2E6B1CDC9684C2C0293590D13C1303B322BB0962238C62B2A7832C72A0D4DEC5C59962D96E172AA03546B6BE54BB64515AB1DB37F0260D366B5B8917E64C01DEA9484EC72FABE8AB3A99235DAF5CCB5A5C45294319E3B8AF4E8ECCCABB0E73E9505CE8411BCCD8369E0D3E66B506A2CF2CBB9658F77CA476E6A2D2F5065BA0AE786AED756D054C6CC16B85FB3FD97515ED835B52AB77631AB4D257476D6D778552B82BDEAE6E571C9EBDAB9E8E42846D3F291E95A105C212037CBEF5B4B7325B1A6C372FC840351B1900C32803D69A170BC37068705700B641ACDAB8CAF2C2A7276E47A8A8E3D3FCC6CEDE2A612491B7CAD91E86AF59B317E71CFA56328E867233E5B38A35D8F8ACEB98A2421971C56F6A2A255D8A0EFAE72E20624A93CFA563CCCCD223379BB807DAA1B857765614490889727AD3332B61BF8455246D106326CC7355C2160D91CD69B3C49065BA9150C4D1648C8E6AB9496EC54D343453E08E0D74712C4E9BB1F38ACF8AD148DEB5AB6691B47F370450E2D99F35CAD2C024538C5575B144255CF5E956EE06C63B18E2AB08DE7942E6A5C4D23A14AEADC46A4679ED59E96D2313806BA7B9D2D9234773C1E2AACEB1C0032E188A2324129186D6CCBF29C64D2ADA4F2360A9DB5D3E916505C48269CAE3D2B62F21B18E12576F029BBA5733F69AD91E6D7567244F95EB54A49645386E6BA2D52E944C4200547A561CB8B8B90AAB834A1293D0A23F347A5157BFB2DE8ABB05CB89B5183704D58FB42291C0A80C0FB37015098E40DCF4AE74E4D917B9A915D38195ABD6F722E0B213C1AC7806EE054920922F993838F5AD05CA7450C36EA30CCABDEAB5EF922220373DAB005DDC96C3EE22A691DA58B38E40A4D7612BDC48EE1E198004804D5D96781828380DEB58A66F9F6B1A90C2EE0143BAAA37364EDB9A6C437CA1B8C5625DA94909FD6AEC70DC6D2C3B555BE98888EF5C1E9546AA57463DC5CE060F35577296CE2A39DF32127A669605324800AD5099B5A1E98DA85CAA81800E7EB5EABA35847668A020181C9AC4F09E9BE4D9F9BB704E2BB0B6882F240AC6ACBA1D34A3A5CB91A2923157618323A55584027815A9011C035314549E83A28005E477AB4A836F3D0530B85028F313D79AD0C58FC2FB52140698641C62977D17158AF3C391C0AA52DA16E475AD5CE47423EB5132AD4B452958CA587675AB7188DE3DA466A492253D7AD45B769C0CE292299524B4757DC838CD5F5459622ACBB4E3AD4B16D03E6A4930A32381552D89673DA95A654A91915E5FE24B236D73E6A8EF5ECB76A92C5B8726BCF7C5967BA0638ACE32E59A364EF139BB7937DB2483A8EB56D0A91BBB562691721247B5978049C569C5B95B693F4AED4EFA9CB6B5CD9B36F308849F97D6A676F2D8A13C67AD65412295250FCC0F35712549464FE34D88B4E8AEA1F2A40A9ADE5546C0C0A8E2CAA6DFE135048460B2B104563376224AE8B97775E58E3696AE7EE44D2C8641F77393537DB064890671ED55E7D5146026467B62B06AFB1118114872BF30AA77137969B7B5692CB1CB1E4F5F7E2A19ED22788B6FE7146A8B5646499BCD5C134D96711C8857823355F3E4CC71D8D4371234F28F6A7177645EE741A7EA1BA250E01607D6B5A3B98719FBA3B8AE72D60912D7BE0D59198EDF1CE4D69715936695D5CA09032F4A6B5F2C255947CB594B704B61C6714F7963F2F6FDE27B54295F41E8F437354D7239AC9638C7CF8C573F2BCCF116C9AB165664B07704A9ED8ADD9B4FB76B3255467152ED129B5B1C8C5AADDC0C5558A0A9CDF5D5D11BE4622AC4BA7066248E29F6B6055B38E2AE3A912496A52BD2CB092413C77ACAB462D72BF5AE9754548AD082064D62E9702CB71803BD3F2426EE8DADF27A0A2AC7D968ACB9591CC3E7223B7DB815451C73BB18AB1A9DEC1E52953838AC579B3CAB1E6AA9C6E99A289A913C692E5783FCEAF3AACF1650FCDE95CF5A095E655EC7BD742B6EF0C40E4F22869A15ACCA6B2794C5644EF56522329DA8BD69D25A79E8181C11CF34A924B0018619142B0A450BDD16757F342E02D5AB29A282DBF7806E15249AA5CCDF2390474AA4EB1B0209009AB5E434EFB8B35CF9CC7C9231DEB0F532CB192CC6BA3B6B48BCA2432D61788D045B54107E94752A32B3B1CCB37CDF8D6AE8B6C66BA45C719ACA55264FC6BABF0C460DEA2F15ABD8D23AB3D474E8560B08D40E702AEA4A138A8A00AB0A81E82A46C2906B8A4FDE3BE0B42FDBCC091DAB4E3689B18E4FD6B9D490F9838ABF048E7A71FD6AE2C528E86D87555C6051E728FE1AA7E6BEC2314CDCDD4E6AB98CB94BA6507B6293CDC1AA8920CF5A93706E7AD170B16FCCC8EA0D2EF045552572300D264E0ED6E68B8B94B0D8269A63C722ABE64F5A9E370461A80155493C83C539B19E4FCB4E041E94E2A08CF7A64B6529E2C2E54900D727E27847D89CF5E3AD76D291B086F4AE23C4EC3C860A3039AC9EE6B06790DC86B7BD2CBEB5B505D89163627B62B1EF97FD218FB9A7DA4C231B4F7AEE83F74E79FC46FA38864DE3BD5817217A8F94D6525CE70AC06DA9B398D81E0F51CF5A7703A28240F08208C531B19259B8ACFD3AE03ED04F03B55FB84E772E4715135A0B72BCD0C2E8581E7D2B31E0323E5578156AE498C03B855BD205BDC4A51DF69358A8DC87EEA334C68A00CE0D55B966F2C85735D1EBBA5476E9E6023047506B023884AA71DAB3D6E4395D188B03B31269D159BC936D4FBD56675314D800D6DF8634F59EFC3C99C63D2B5859937B17346B1FDC9132FCA0537508228C1DA38AEBAF2D2381408FD2B95D619605209049ED512776445BB9CBDC154738A20864790360919A956D6495BCC6076F5AD2B19D213B24033DB8A4BB94E5627B67380AC9C0AD88648EE144298DC7B5436F61F6C24C446719A4B4B57B3BECCBC91D2A92BBD494EE6AC3A246C374A99AA77F6B6B6CB88D9777A54FA8EBC218B6469838EB5CCCB70F3167DDC934E52E9140AEF723BFD3E5BBC2A679A974FD064B16F35C7CB52E9D2CCB38671951D2B4EFF5192E13CB44EDD850A492F31B6F62BED5A2A879973FDD6A298F90E7EEE19DA62190E054304644815860679AEA9A58A4C9603BD65496A5E5668CE067349688A726CB2628618D5D480702A7374644209E08ED589E63F9DE5BE4807D6B4D140404F031533936856688A5BCF24901B27D2A0FB7BC8D8CD3AE56262486E6ABC76E9E670DEF59C65706D1604E54E48CF155637325C373C7A5687D9D4AF079C5662829767033DAB483D471B17E3F354923381589AE4EF2C801F4AE8D166588E14F35CE6B21837CC3BD34EECB49190A36F23AD759E1019BE5245721BBE6AEB7C1F9FB58AD65B1A53F88F558581451ED53E323A66AADB65D40C7402B5218B29CD72B5A9DA9E85711924718AB3146C185598E25C0C8AB0B1467A641A690390D8D4EDA76187503153793B704B7148E140ABB195C88804F414F11061C669E3611CF4A95546383C50D03643B481F4A00DDCED3563691CE38A51186E84D1626E43B72285524E31563CAC53845F2FCBD68B09B1A8B814E39DC33D2906E51C8A6BC831EF49E84EE457526D8DAB80F1348595F9AED6EE4DC0F3DAB84F123633F35657D4DE11B23CE6EC1F349F7AA8C4A1AB53CA12E1870431FCAA29143A647D2BBE3F09CD3DC9619C48A39E455DF30B6DF6AC44631B95CF35A30DC00016FA53BDC9BEA5B8AE4DA5D29CFCA4D750255BBB74F9C7CA3A5724CCB2C647F10E455DB1BA2B11049E38A7D2C1D6E69DCAAFDD65C1EC6A28ADCC6E0C6793CD06556B439FBE3A525A09656E338FA573ECCCEA3BA26BB13DD204691B155E087ECD2056E56B65ACC0803375C566C8CE84AE32B59CD58C6EED6257D36DEE50B20F9B19A7E828F6D7251CE3078A642DB10B21C1EF50DCDE155C29018F7A8836B7295DAB1D3EB1AC456F005420B918AE61ED64BA93CDB83C7500D4B676C5D84B33167EB52DEDCC61B2E4285C5529C6E28AB6887C761E62055191493E80EC85829FCE922F135940A149C9AA5A878B5DDB6C3F76B4959A128C9B24B3B9B9D326C07185EC69B79AEB4D2176DA081DAB0E6BF9EF5B209269D059967CCA719ACDBBB4996A296E4B25E4978F8C607AD6843A7CDE4072C31491DAA478D9926B562B59DA1C6D38C5689240D896AD1A42438E7A50EC76EE518155CE612CAE87DA98B787695DB85A57438F2963268AADF686F43456856860DCDD3A12AAB5556E6743C77AD59ED04EA19579A3EC8890012280E2B2725B13B19A03CAFB80FAD6BC65362AB119231562C96048BE60A6A2BD8D2393318032334F634E533F518360DCA6B31657F3319ABF79B9F02AB08B0C38A99596C4CAC5BB7959577134968565BCCF39A57888849C76ACA8E768E62C38E68845DEE36F4D0EF1A4416DB7603C75AE27C472A99004E9CE6ADC7AC481705B8E959DAA8F363F36B6EA440C2DDCD767E0C4DD705BD057143FD67E35E81E0E84A5B4929C512D8DE9EE7A2E9E381C8AD512855183CD734FAB5BDB5A1669141AE7DFC632AB9556C8278ACA316CEA7247A38B84DBC9E6A51729B7E53CD79D43E2C42A3CC3DFB56841E248266187C53706851699DAFDBC0C0269C6E430CE6B9A8AF965F995B35762B8053AD45CD390D7370B8E0D3D6EF6E39AC7330084E6AADC5F794B90C29F30721D543A820387008AB6972ADC8C62BCF64F10245D7B5363F1C47136C54E7E956B53294123D2448A48CE29E5D3036D79FC7E388FAB01F80AD2B3F175ADC4806E20FA62AB9198B3AC6C483E955245E0F3525B5CA4F1074C1434E9C284C8EF594D148C99DB927AD71BE2880F905D4735D9CCB96AE7B5D80496E466B15B9D1077D0F1BBC6DB31F5CD2472E633CD4BADC5E55D371DCD66C521DD8AEE84AF1396A46D22590E79CF7A911CB601AAE18799CD5948CB26F5ED5713365B824CB6DCD6B5B44CC9951F5AE7E094C72EEEF9ADDB2BC68B8ED4DEC3B9BFA5588B985989E8718ABD15BA40C471C1AC7B5D53C8C90719ED9A8A6D4E691C9407AD60DEA6351366FCCDE6C7807AD312D944641048354B4EBD5C137008AD09358D3A043FBCCB63A62B29DCC9292322F627B7CB6085359E268CA36E3CD5E9EECEA329C2ED8FD6A196DA3007CA3FC694636344C34E9C87EA76D1AB6658B282AD5A5BA8889C628B9B77751B7915A3F215ECCE4BECAE492734F485470D9CD6E3DA10A485E7BD55F257761C629DC398A91AB2E36AD5A57651F32D3F7AC4C002314F6B88F1F32D165226FA9ABA2CD6CF28FB4BAA80323353EA5E29B485FECF6C77638F6AE36F2E70488883ED59E209C9DDD3273D69ABEC8B51BEACEE23D4639FAE327DAAC1781622300135CDE92AE0A863CD6EBDB9700F145AC4CA36D887CE4F514527D98FB5145905988F2B464C4AB91EBD6A41242C3F7C08C0AAB6B7F1C8833CF4EB566568A588F2A2B994A5CDB1ADECCCD96E5239B0A4E0F4A11A498FCDBBDB351EF84C8720707A8AD884C3E41231D2B66FA96E7745286D55C1DC3F3AAB7D1796408D7A56BC5776E8C54A8A86E5E3954BC2B9352DE974427E46349741632AF58ACE59C91D335A97D04810BB022B2E18998B71DE9C1B7B8D8E50491497DBD21193907B5685B593C8724702A1D5D5447803A56B7222B539F8577495EA1A1DA08BC3DB80E4AD79CD943BEE1411C135EC36368174A8579E528A8ED13A68ABB3909EDA7B96DA1B8069B1E813CADFCAB56F675B095FA6DACA3E21BB95F16EA06DEF8AC94B4D0EA715BB245F0DDC2B649E2A78F4A7894E4D64C9AE6A46522491B1E9535AEA577231605CEDEB4ED2EE28B8DCDDB69A4B7214E715D0D94A5D41DD5C82EA066FBCBC8AECFC390C77606E27A54289AB6922E3E5A3C62B0AF0BABB0CF15DBDC58A2C4401F376AE17577F225209E01359BBDC70926664B6AF364AB73541B45BA66383C1AB8FAA0897E414C4D76784190852BE98AB8B904A2ADA91DBF87EF18EDCB63EB5B369A05CC3872C4629B61E35B1120134657B64575763AB69D7F16619E324FF0E79AD54A68C1A453B0BFBDB2611B0252BA0B6D44DC2E0F07D2A9EC8DCF18C7B52888472020D4CA57DC9E54693F2BF5ACEBE80342D91D41AD18A32F1D3258098C8AC648A83B3B1E29E2CB4F2E72C076AE5617C3107D6BD3FC6DA7010170066BCBA41B24603AD6F41F433AEBA96650032903AD4F0C8108C0F97BD546626119A9607DC361AE9473962E061D5D7BD68C522B468EA7E6C63158AE5973CF15A1A6481CED6E68DD033650AE0165AB9E746231B1067E95527B7D90A9539C8E94EB79BCB2A64C62B06FA112B9A56E629A3FDE802B3DACE396F7098C54F3324D8308C1F6A8D7313E4F5A4C8499AD1086D6DC97C71D2B0752D5CE0AC63BD43A8DE3BB050E71543CA675DC4E693BC89B5B52C41AD5D29C6EE2B734DD51E76D920CD61AD81316E009A92CA66B594920FA53D85A48EA9191DC1000CF5AA1AE4512425D080D4DB3959994E71CF4357EFE08E5B262402F4360B738396E9C3632473D6ADDBCDE647F33738A82EA02588C703354B7340E00E9445E853D49963792EB70048CD757696493C284A7207A553D20DB940D2804E4D74B697766B6C4719DB4F9EC3DCC75B6F2674DAB85E7352CBAB476E183AF4E0536EF528A1763D49E95837024BB98CBB4EDA1C9D8125D4D2FEDE4FEE1A2B33ECCBFDDA2A39E44DC5D3EE905B608E69F24DBC1C122B3B4EF99B67BD6FC5A7A98F737A56AEC916DEA51B4684B00EDCFBD6BC422C6E57AC86B0227053A66AD2C0F10AE6946EEE989E85D314326777E753C30C59D8879ACE8EE0C6D89055C8E51B83464D3517D589C9B35AD34886F4324CD818ACCBBD0E0B6B82B110C2AEC372C9C96238AAB7774EED88D4F3DEA95A2AE0AFD4ACF6E026D8D79359379A74922152BEF5B28B703E6DADF9536E27916221929C67760A4D3395B0B60B7F146C3AB7F5AF63B58BFD123451FC02BC9AC72DAAC5D3EF67F5AF65B44DB0464A8E9FD2AAAEC76D2393F1068C2460CC00CFA56041606DA40CAB9FC2BD13514496221B1815CADC4524521F2CE07D2B04ECCEB4935631DF4CB79E4DEC594F702ACA410409E5A29FA9A9F32370596A486105BA64D69CED96A9A4578AD1031D8BC9AEEBC2762523F308E6B06DED871C576FA045B213C55C4C6AE88BB7A0242186738E78AF3DD62106779186466BD22F08303645729A85A09413818AC5AD428B3CFA4B5865930475AD28E087EC6D6EC830C382474ABF71A41C33AEDAAA85E066478C30FA552925A1BD948E7D7C3F2BCDC6D31E73E957CE872295368591C742A6B76136DC168F04D6DDA4B0C6A36A63F0A7CFA19B82462593EB5628A278CC9181D475C574B6334572A1991B3DC55986412021C02A6AC5AD9C6242C00C54F35CCDB45DB70021DAA454AD1A953BB19C539612B8C74A47F93A9A662B7389F195BA9D36463DABC5E5B60D33807B935EE3E3260DA5C871D01AF16639B87FA9AAA1F132AAFC2527502323D38A62F038AB724259B6A8E4D4B3696F05AF9A7D6B6E6E531507B99ECFB9866B63478774BB82922B12089A4B80067AD75D6509B6851BA1AAE6B2B994DD8BD28560303040AC998912E01EA6ADEA179E4A1914FCC6A85990F3AB39E7AD63BBB99B6CDBD3A248C02DB73D79AB570226383B72476AAF2C0C63DC848E2B35BCF59482D4E4D1317AEA367B54766D8DCE69608140C375A622C9B89EBCD499937671ED4B9ACAC8D7DD7A166DE748D8A374E956D6CA1964040CE6B14C4DE76EDC6B66D6E502283F7871445BEA65285B635A3B38E350CAAA4FF002A8EEC85B73BB8152C775184F988CE2A86A574AF1158EA657212BB32A45888271DEB15ADBED5A8AC682BA7D3ADE29C32CB8CD3A5D3ADED65330602B48C6CAECBBDB42A3686F6D0AB039518CFB56749712425922C9E6B426D5AE6E0F916E3776E2A0B5B77B7B80D71839EA0D26B504C86CAD8DC4FE65C723D0D744915B184200A3FAD54B811050D1E071DAA92CD9629B88A69AD85ABD4D3FB241E94550C9FEF8A29F2B118506DB7D44291C66BA0F343FCA84D606B16CD6F7C3070D9C839AE93C3568B704194E57BD6525CCAE99ACAD6B95FED5144D86EB532DC4521E718A8BC4DA415B906D7A1A4B3D39D61065C6462B073E5DD99BB3572C9B48AE40C114C5B296DE71B7EED2A03149B51BF2AB5733B247B7B915BD3926AF61C5142EAF5623B0E334EB1BE8A4750DB6AAC5A736A321264DA474A53626D9FCBDDC8EF435D472B743A412C463F9596A85DB2796722AB448D1AE77B545216964F2E3059BE953ECECEF72229DCCBB450BAC42303064AF558E42EA8071800579A0865B6D4626923C7CF5E97A76C90A96E3815ABD51E951562DA42B37CAEB9AAB73A1A15DC09FA56E46B1F04629D2BA04CFE1C566E28D949A6714DA118E419E41A93FB3960E5579AE8E7542735937F751AC78192C0E2935D8D549C886D606320CF4CD769A745E5C2081DAB9AD22279232EDC1ED5D0DB3E3E5C90075AD228C2A6A5B9D4B21E2B2DA0DC4A915B51912C657AD665D388652306A651D49837B23365B1562700F359373A4488C5D5777B5740B751BF01B0476A9136B9EC6A394B8CDA7A9CA476AEADF3427F2AD0B7B47E8A315B86DD09CD4F1C0AA320668E52A552E5382D9940C9AB918DAC2A50BB79DB4D7007238354A36326EE5A497E5C71515C302BDAAB87DA41A599B70E4F18A5222C71FE2E971A748993CE6BC8645FDFE71DEBD6FC5481EDD80AF3C96C4CF791A4606E634E8E8CDAA6B12ADADBBC9280172C6AFEA91EDB44B7C727935B7169B16991FCD9F37191C573DAADC19261DBB7D6AD7BD2B035681976B6DE5DDA903EB5D0C9708D0E075C556B586230EE7F4A259A2887CA9F9D762C3F32D59E64DEA654C6479CAB7DDABB6DB565527B542D7B1AB92235CFD2946A2A7A2283F4A6B0CBB90DB3A269649200B10C71D6B224F32390BB118CF355FF00B5E651B54002A95CDE4B28249C544B0DAEE091B56F79BC96500A8EB4925CC3BB71183F5AADA5CF8B1313203939DD505E468FF75B9AE4A914A6921D8B8668DD81040A6BF1F3A1C9AA515B654E5A9F11789C863F2D1A6CD97177D19A56972EE3F78A49078AD48521B85C11B4FBD66DB95E08ABBBC323150722B4768A14A367A15AF3CCB29F117208ED593777D7370E626042D6879CDE7319074F5A45586497076E4D4295F60B2B5D9069B726D1B2137135A4C8F7AC1F183508B58C3E43015604DF67C00D9CD536DAB1056943C4DB1BE9493D8F96BE6E054F719970C3934C68EE658F6E702A146C3451DAFF00DEA2A7FB0CBFDF14555995CC52F104892B2BC67357F459674B5578F35CE5C82D0E58F4AD8F0F6A8B0DBB46C338EF4249C5A29EC6DCBA9FCF89796C77A8DAE5A75FDD8FCAAB3AC77731207279ABB6968D9C29AE78E1A3CD705156D45B28FCA23CCFBC6A4BF1163E56DC4D3DAC5A39B731F4A9560881CB64D74D95AC89725D0CFD3FE4663BB1CFAD2DD79724DF2BE5AB425D2E0B9C6D3B0FA834DFEC58A101F712477A9688D0AAF12CF0FC8DF30EA2B47C3B62A1CBBAE48AA73948082320D3AD3580AF8CFCA38A526AC26FB16FC4CF089A05014303E95A3A6DD80AA73D40AC6BE85F53B85911B2A8292199A371CFDDE0D28AD2E77E1A57D19DA477D85ED4F9750181CF38ED5CDA5F61339A25BEDCBF4A4D9DD1822FDD5F119C37E759F6D18BCBB0646C2039FAD645DDFEE6DABEBCD58B6129B7631B329EBF5A499A3492D0EC2D6ED47CA8460715785DAEE1F30C9AF348B5896DE628CE720FAD6ADB6B9E61C16357CFA1972DCF458AED76819ED53792B71CF1D2BCF26F108B751B4B31FEEAD59B3F1C4D9082D654038DC56872BAB19BA5AE86AEACAF6574083C1A75ADF1651C9CD433DE7F6B448C14AB01D4D663335BCBB318F7ACEFCA6C95D599D743759503357E1941ED5C95B5E1DA0135AF6D7A0601AA4CC674EC6D79AA0FB543704B29C7DEED51098491F140723BD36EE656B0D0ACE879E45207C2153C7BD4E0C6AB9279354EE1B61C8EF5160B9CF78890CB1E10F359BA568C14A5C3A80F9E09ADBBB8D64DACDD8E6B434F8E296D4A91F38E956B443E631357D126BAB8F3768F2C28C915E69AB301A9BC648C06C57B2EA9AA47A768770EE7E6DB851EF5E27A96E90B5C8CE4E4F4A745352B8E736E362486F52198275FAD5E9228E68F700B93CD7173DC4A2424B115D06937A5E1018E78AF5E8C94958F366ACC4B9B603381CD52F25D1B24715B1332C99C75ACD176D0C85641B97E954D244904922A0C0EB5116DE7048E69F3324AC6448CD440EE6E9822B1A92D0691D8E85A50BBB3241191583ACC12DBDE18FA30E98ABFE1DD65ED6EF6B1FDDF43536BE63B8BE5940C826BCE9AF7D32A1B98511B950090D814497722F5CFE35A4F7F147085118C8E2AA1F2E7380BC9A1C55EECB5143EC6F24DDB71F29AEAAC823465940E7AD73966A910208C1AD4B7B95806DDC0E7B0A26D35621B7B0DD460712EE8C7E5550432FE35B0CFE66D239AA57F7AD6ECA1A3C03DF15947B137E85495A50B8C9E2A9497B3C6F863C56CAA25CC41D3AE2B3AFAD7099C722B4B3409F4342C276914349C8C55A6B95DBB41AE7EDA7744DA4E055E42D210471EF4E49EE2B17BCCFF006A8AAD86F5A28BB1D8C5B987742703A543A432ABBAB1C735B32AC4B0383D40AC6B4B4737BB941C75E94E0BA1A43537E0DA0EF5FBD5D0E9F340B0F992B006B0E3511A2E7A77AC9BFBB9B7958C90BFCEADF61CA29A3AC9EE5667C093A5461A3EF2AFE75C8412C8CBF7883F5A9FC87671BA46C1F7ACECD333505DCEA4DE4710E25FCA8FED0338DAA73F53587F641115657DFED56243F67405090C0670686C1C2C1A807047E7D6A8C21919B3DE8176F2C803734970EE23F97BD652D46917ECEF6E2D4B387E08A920BBDEEC4E0B31C9C5645BC3249C1240357DADC5B9520F26AD2B235A2ECCD21758E2ABDE5E6C434C51BB1516A3183016F4ACDAB33D38CFDDB956DAEC49382D8C66BACB79635B6CF1C8AE0127DAC09EC6B7ACEF0B47D7802B7B2B58C5D46D8BA8D9896E4B463049CE45476D14B1B6CCB7AD5A86569266DA7A0A92CE546B96F348F4E2A792C3532C416F2160C5719EF8ADEB3D3E376024079154BCE894AAAB55F8EE4803239F5CD160E766EA5BC7145B500E9599A85B99790071518D4994633542E75B4809539C9A8942E5466D318B73E449B589E38AD9B3B95600F02B8CBCBF8E53E6838E6B4749BF5917839CD4AB9AB9268EDA1B8C0F94FF00F5EACF9F9231D6B1A0756C1CE0E2A74971C64F06998C91A9E696E07350CEC4A7D2A34942AE3A13DE846E092D95A7632910CA53CA663C6C527EB5C4C5E3B82CEFA5565638622BA7D5E71069372E3BAD7855F485AE5DB77539FD69C55E56279AD13ADF1278BE6D71F68F921FEEE7AD65ADD0680072DB7B573A2E0A8E4D4B1DF100A9F98574C22A2633A8E4497AD06415CE7356F4B6207CB5852CACD2138C73572C7526B66E06735D1467CBB984F53A5919B6E704D519E497BC7C7A91500D55E453DBE94D134B29DA58E2BA1C9321683D8EE1F7706A291B647B875A98293C67352CBA55C5C2828A0D6334DAD1149A441A7CD8739FAD684B74C4605525B19EDF968CFA74A9141046462B99C1ADCAD3702924AD9CD5CB742B8623A547BC2AF039A7472939C8A8B264B771B737059C761D2ACDAAACACA371CD549222E09C525ACC61941C74A5648967676B6E362E79E2AAEBF10B8B4215482BDEA1B5D4833AEE180055D9248EE3E4E81856334B7410D19CEE9D72D000AFC01C569CE3ED3092BCF154756B416AE181183CF152E9776A61298CB7A56B1775660D6B728450C827218719AD2F385BC38E334F74C3921304F35977DE6679E47A5269A29163ED87D28ACDDC7D28A5C84DCD57DA570FD0D32D716F29665C8ED50CE5A40D8FBBD45537BAC2ED1D4714FD0D9248E865BA8E540A005A82E6DA168490C09ACB8659188A9F05A4C39DB9A8B3B94D6822DB9119640302AEDAC4F3A74E955DC2DBA81BB39ABB6B7236809C57652C3CA68CA5A6C4AB68EBF7739A65CD94B36001CD5A8EF1A12491BA9FFDA99E8A0557D4F5D599B948CE1A3CB12F98EC063D4D45318E060D292C07A735A52DC99D4E7D2B25E768DC8DB91F4AD3D8462526D8B26BD69163C98B91EB5147AAAEA371B768423D29FF00D943506023B472C7BC60D6A587C3BD6F7ACF05BB08C0E778C7158D4925A686D4E37632370985EA6A6BA8BCFB5FBBDAA1311B4B931B8F9D4E1867BD5B0C366411F415C9257D51DD17A58E6934D677254720D483CEB4E0838AE974DB64999F70C9A7DDE991B823151CD62D462CE5E39897C062A0D5AC0500A4993DEADCBA4847195A174A63D8814F999A46921F05D148BE6396ED532EAB232ED0D8C5363D21C8E738FAD685AF877CD6C818E3D69DD87B24B76517BC729BB7F359B712195B2EC71ED5DA43E168800586E3E9573FE11BB768F1E50A96EC26A279B4685C61726B63C3F0C893312A719AD4D5741160DBD4000D49605228576804E79A77E6445ADA9B70E0ED0320D4E8CD14BEB8F5AA124E17E74E302A582569C641CD28A264CD38E4DEA4D3D5C9427B551590EC2A0F353C05CEE20135691949983E2CB9820D39D6462A5870335E2F772833B1073C9AF49F1B433EA372FE5E709D4579A5DDB4B0C8564520E68835733A89F2DCA8CF93499A423A8A4ED5D0998343B348A79A68A55EB4D12F62EDA49F3638AD783F79C2A804F1F5AC9B680BD743A7DB796A1CF6E4574C2E413C360EACACE302B44460600CD480B491866EC29AC78EB5D508D913262E767CC4861E8695AD6D6E8E0808DEA2AB34809C134F570A722938296E85B10CFA3CA9F34443AFD6A382C676932548C54D25F491FDDA6C5ACCB1B61C03587D5E170BB3456C1E58B6ECE7D6A8CBA3C8AF95CB1ADBB2BD8EEA2040C3549233104A9E9553C246DA13CCCE70C12C2E032E2B56DE2135BE3EEB0EF9A9D9525E1C65A9F0DAB44F946CA7A5727D56517B1AD396BA9CC5FACE5CA9762B9A8F4D97C89C120FF8D7417167BA7DAC0E0D674B65E54F90302B9FE16693E57B175AFA250011824542B6875062C1B03E9559ECA6940703E4156639A4B34C8CE3149CB52A14EFB8BFD89FEDD1517F6E37A515361F2C4CCB8B9C828A78AC79652B36735A0CBB989ACDBB5C4A2B4B10A57356D6F7080922A633995F7E7F2AC78812BC66B52CE3731924F15AD28733264EC3C312D97AD1B7701460D517288401D69CB36D239AF462AC8CEF735B79618A824CA026A386E033019A9E42A63CD53D808E19599B0B5E91E13F0025EC11DFEAABB53A845EF5E6F672A5A5F4533A078D64048C57B368FE23FED308226C46A00C7A579F8BA8E2B436A71B97EF6EF4EF0F43E5DA5A226070DB79AE52FF00C537B704A23ED435DB4E96B7B118E755607B9F5AE2F57F0FBD948CF02968739C8ED5E2CE72BDD9E861D42DA9C1EA01FED0663EBC9AA29787795CD74B7D67E64046391EB5CEC902C72AFCBCE7B575D19F32B0EAAB6A74361246B10C1F988AB52905723AD6645B52340A46F22B4162DD18607B734548D8AA4EE548D1EE262AED8029E51B7E232768A710501C734B1C8AAC33D2848D5A922731BC61586EC1AB56BE62C831DEA14767808C9C76AB1048410083ED43D04AEF737A1902AED2C326AE46EABC9F4AC5491B19E054DE7B607CC6A6F7225128788C19622532BDB3589A6C8B110642A42D74971207859A450CB8AE488FF4C3B09C6738AA8AB10DE96375904ADE60C00471835774CB6440DB8FCA6B0C4D24800185ADDB19018822F27BD5A443629288EC429273C55D8A7FB259C933272074AB16B63E69C9183D6A1D442888C3C302289691334EEEC7150DD25FDEC8FC7CCC462B3F5CF0EC5751332A618F435185934ED70A36423B035D8246B3DA29C673CD724A4E2D33AB953563C4351D2A7B4959194ED1596E841E7B57AFEB1A42CC8C760AF3FD574A680B10B819AE9A75948E5AB42DAA39D3D6A48C6E2291D486C1F5A9ED23324C00E95D91D4E57E66E69D688A9E6CA404519FAD4BFDAC5E5F2D5711E700D50BEBC202403E55039152D8797238661DFAE2BA69DDBB112D8E8ECA42CBC9C8238A95CE01A7585AE14BC4C590919A7DCC0D19DC075AEB6EC8C96E67C980D9A546E3AD4533104D3A26CF4A94CA1D2E31D2A94984E7DEAEB9F7E6B3EE7201A89E9A81A9A35D0572B9E6BA02D9C7BD7116371E55C29EDDEBB086457B7DE4F2456B195E24C85F2C87C8353AB9523D6ABF9C00EB406EFBAAEE27B1796542C19B069D2C304A47CAA0D54461D722964948E8C2B39422F742BB25FB2A98D9558153D8563DFD948AA5149C56825C957DC4D4D30F35432919AC658583D51B2AAD6871FF00607F4FD68AE9361FEE8A2B0FAAC85ED2272A8C0BA8CD56D4E0DB8615D04FA65AA0CA484375C564DFC32347B03647BD73CA94E1BA293445A6DAACC8377AD6CADB851B41381595636F342A1FF833C9ADC5002061C922BBA9455886EECAAD6418E7351BC088304E2ADB3B0ED8A89CF99C30AD9A0BD8AC235072AE2A4329098CE6A19ADCAF22A03BD7AD436348B3E70EC715D4784F5E82C6730CCCC164E03678CD71DD7AD1BB69E0FEB58D6829C6C5C25CACF775170504A8FF00BB23208A9D2F1CA947191EE2BCF3C1DE32FB3B2586A0FBA0230AE4F4AF459200D18922219586411E95E0D6A52A6F5D8EEA735232EE74FB79A5121F950F5FAD79E7896CA4B1BC2D18FDDB670457A549B92B9ED76CC5FD9B20C6E00D2A35395E86CEED58E174F9CB488ACDDFB9AEDACE2431005D79C5799CBE6DADE0472576B74AEEF492B25B23C848040C73D6BD071538DCC6327066B3DAC4A37D569238719C714FBC90AC2761E2A9DBDC128C3AFAD64A1637552E6C58470942AF8C91C55C5B38990945CE2B05660250C187B8AD887508635210E0B0E71DE9B57D84E7664896C4BE3A6298FD4853F38ED534371BD095EA7D6A85E86B7944D9E7EB53C9617B4B85D4C8B091BB63775F5AE7E62219074F9B9E2AEDE4A8C8E58FCE464563C9302E04A7EB54C85B9A1692ABCD920EDC62BAFD22CC7941C827BD723A647E6BE509C0AEE74E93CB87A718C552D889B7B1A2932DBA3A907A7158D74C19CB6339AD295D5A22188C1E959876997682BC9A97AB260ADA989E2AD1C1D262BD403CC8D8678ED468B26FB55049C915D46AD0097C3CE8573C1FE55C86920DBA053D3D3F1AC2BC2C6D4677BA2DDEDBEE0470735C8EB1A76F46E3D6BB794871C0AC3D4A3054822B960ECCDB7D0F1ED42D8C53E31DEB4344B5DCE1D8702AEEB56799F2077AB16A82DACC0EE6BDAC2EB13CEAF1B339FD56331DD31038CD2D949B4F1D7EB56F54C32EEC550B5C06539AE885D48C65B58EC74AD44C7180D90727F1AE863960BE4DA40DD8AE0E37654C8269D0EAB35BCA0876EB5D4A6B6662E2F7474D7FA25C14926890B44BD71DAB1A21B4F7F706BA3D1BC48242125230C3057D6B3B51B658AE9D9010AC77714AD67E452D7733E5E083546E4E50D5B98F6AA770DF2D4CC119EAE56503D6BACD32E0B44AA4F18C571CDF2C99AE8F49941500D3A2FA0A68DB9A2DC495CD428CCA08A59E59624132F207DEA549A1B840CBC377ADC91E64253E5EB5089F920919F4A93203E6ABDCA05F9F1498D0B3C984C818FA55AB1BD5C6D73594ECC53EF715145261B8A4A4368E9FCE8A8AC0F3CFA9A29F399EA2DC96490B0E5BB532175BB04E06E1D56AC5CC44AF4E958324D2595C8719C75ACDB49EA696B9AAB98E52840D87B527CE246447E319E7B52C57705C8560DB4E39A56C79B8539E29E9D0051BD47CCCA69BB8EEF5A949F9306A2240CE298C46208E8735149B4AFBD3C93EB4C23DA9302AB32AF5A85893C81C55A9222DD2AA1C86C7359BD4698190A0C8C83ED5D3E8DE3FD4B4987C80566847457ED5CC330C540C0139AC2AD252566691958F5ED3FC71A76A5B63B91F6798FBF04D694A524883C4C1D0F71DEBC2BCD646E718AD7D33C4B7BA71FDDCE4A7F718F15E6D5C1DB589D54EBD8E8FC51A72EFF3D5003D4D47A46A70344B1B3306048DB9A078B2CB5180C7748232C396C715CCDEA7D96E0CF6CE194F4C5141CA0B9648AA9696A8EE0CE6672A1F083A5430DEADB09233939EF5C8DBEBB2C60248D9FAF6AB49A9A49D5BA9AD9C5742633B1BF25C8DDF2373D6B474998CF3AAB9C81EF5CC2CE8C41DC315A5677AB1B7C87269452454A6D9DCAF951B9CB14502B135DD50074880C9C706B227D72701A109B95BBD436F135C4F991B24FAD0F508AEE3A6BA96755755391C5322B76B9B81BC633CD6BC16313A95CE0FB55882C80932B8C0359DCB26D32DBECE188AE82C5D9D1901C7154E3410A0210722AC5AE63752ADB726A5B605E28444559B355ADED59AE965CF02A66642FB4364F6AD5B18408C31037678AD69A727A9954972A1D7B1EFB09148CFCBFD2BCFE0320B865087258D7A16A2C2DF4D98F42578AE574F895E2DCCBB8939CFE35962878695F50112B4008FBF58D7EAD8208EF5AD793B5B4A06D18ACFBA2658B785C91C9C0AF3A3B9D870DAA427CC271D0D66CAF9C2E2AF6A57C93CCEAAAC36920D649396C8AF73091F76E79F887A95F506FDD609AA76AA4C9C8E2ADDEB6E8BA7350D98CB735D515EF1CACBFB711D509C1526B418E78C76AA338EB4E42432DEE9E271824735D6699A826A10FD9E46C31E15AB8C084FE75AFA5C7B2656DD8239ABA4DBD052EE5DBB8DE39D95D791D6A8CA320D7517B69F6FB40EA3F7CA3A7A8AE6A6050B291834E4ADA045DCC990624AD6D2D886AC8B804393EF5A1A6361C54D27EF0E5B1D746CAF16D7E878358B70AD67707A85ED5A2BB8C24AE7355E6FF4980A4872CA78ADE7DC843A0B95917AF38A573E6A94279ACCB690C52EC3D01EF5A2FC30751F29A39AE8A2165C82777355A173BF04E6A794104E41C1ACF12F9530FAD45ECC0D2C51507DB17D051556417357CC1247D727A62B2750B7DC086A9E29F3839C03524C8B22ED0738F5A53D50A3A1CEC2CD0BB01D29E9A8C90C993F30F4A7DCC451C37BD527526421BA1AC6ED6C568CD51AEDBB603A907BE29DFDB168064135CEDC5B98CE71C540A8C4F4A8F6D25D07CA8E99F5AB4C701B34875BB7DBF709AE7D2DD98F4A97EC6C474A3DA4FB072A35CEB909E361A60D46DE407276D63496AE8338AAEC0AF1DEA7DA496E87CA7426589FEEB8A61EB5802465EF532DD4ABFC4714FDAA61CACD475C026AB3B751512DF9E8DCFD69C2747EB8149B4C3541E66D14E4BB9138DC714A155FA114D680D4385C6A6C1E7F33918CD2C7395C7CD51FD9CF5A4284543A6D16A66DDB5D23200E79AD6B4BB44233820D7182529F74F7AD3B29DB1C1E4D672491A293675C648E49877E33F4ADAB78E310A61B935C85A19C306F2D8FD056DC573347183342E80F4256B26D23A237674410C2002460D4A2540030EA2B121BC0CE159CF357A0491E5DA8AC54F7A98C64D96D5B7353ED724AA14118AB11CEFF00280B91D2A1B6D0AEE739DE573D2BAAD2F40481559C6E3DCD6F1A2DEE73CEAA8AD0874FD3A494AB48319E40AE8A1B711A74E82A6860589460548548E4F4AD9251395C9C9985AC032C4D1E782318ACB48C5ADB796A3915AB7A7CCB82076AA1700918AF2B155799D91D9423631AED3CD42A57AD67F972A46CBB7E5ADA9532DD4563EA971E4C6C3763835CF057D0EBBE879F6B6228EFA4318C66B36340E7827352DFCFE6DD3F7E4D247D057D061E368A3CCAEEECA77A984C62996AA00A935166C0DD496C38FC2B68FC4623E438AA770C2ACCC39AA57272B8A52D0105BB03F9D6C592E58560DB311263DEB7ED932015393E9574D899D369F390007C83D07BD606B050DDB94C63BD684770D1424483031D7158973207958F6AAA9A931D0CBB81F355AB0E1C555B8FBF566CC7CE2A29FC5729EC7516CDF22F6FEB55A43E5CC5BDEA5B53F28A6DEA60835D3244752ADE20389579C8E7DAA5B790CB114CFCC071490B07568DFA76A822636D7015BA03C56696A038B49F7475AA13E77FCC2B56E474753C1E6B32E4926A665221DDEF45378F5A2A2E3B0B6975BC019AD249B74785AE7195ADA5C7419AD1827240A719BB5989A2EB849010E4038AC79F0B71B54E40ABB3390B935987972D9EF52D8D2349A1596D57039AAA2CB0DD2AF594A863DAD57D604C6477ABE55215CCE82CC63A55B16CA1718AB202A8C5073F855D905CA12DB8CF4ACABCB0201602BA3201ED50CB0864E959CE0A48699C7B4641C1A6ECAD9BCB20A4B28FAD6718F69E9DEB99C1A2EE57F2CD33054D5E45E6A536CAEA76F5A9E5BEC1733D642BDEA659E4ECD51CB6EC8DD2888956191446F7B0684E2694D059CF5AD182249541EF52FD90775AD7D9B1736A6384C9E3AD58B72D13061DAADBD88EA8706A1314B1F54CFBD672A65266F69DAE1876EFC7A74AEEB4CF1869F750C76B7D0C6D10C0CEDE6BCBAD844D2A87DC173CD76BA6F8562D46D966B4995BD549AE2AF4D257675529F31E816B61E1AB9512452C4A4F3826B5ADACF4B8F063B98BF3AF365F096A16E4928E57FD96AB96FE1F989CC9F6853F535CB1ADC9B48DDD252DD9EA96E2D1480B347F98AD289622BF248A47B5798DB786D8E31797087AFDEAD18ACB58D3C07B7BB13A8EAB9E456B0C759FBC632C2A7B33D15631B7819AA778EE91938C015CED97895DD845701E3940C618704D4936BB25CDC0B35030DC9239AE975A138E8CC3D84E2C936972493D6A19A2C9ABB1AF18EF54B59BFB6D32D1A79DC03D96BC89EB2D0EB87632751963B481A491C228AF34D7BC482E64686DFEE03827D699E21D7EE757B86C3110E4802B9C652A726BAF0D4B5BB1D47CB11B23664E4D588580C60D502C379E6A78CE08C1AF6E9E88F3A5B8CBD7DF2E3D296DD874A714F358B1A043B1F35496B72465C1C1AA531C8AB539F9AA9CC78A8982196E7F7AA2BA0B655DA0EE22B9C849F33F1ADCB4B8C300C323157498A46A4B21F24464E6B2A662091524B390F9538A8269038F7AB9058A731F9AADD983E62D5373FBC157EC465A9535A8337213802A69C6F8BF0AAEBC2D5946DC9B2BA1ED623632F2525AB457CC8BCC2318EF50DD2104E3AD32DAE4A12A4FCADD6B34FA0C987EF63233D2A85CAB2AF6AD1F2F69C8E954E751D73F5A52434CCEF9BDE8AB5B93D28A9E463B9527417306FC7CC38AAB03B44F83C76ABF0A18C119AA5347B27040ACEDADC0B1248596AA39F9AAC970630075AAA47CD431972DB35A08E42F5ACEB6EB8ABAA3156844A246CD58472C306AAA819A91060F5AD101688E29B8F6A11BDC5389CD31156484329C564DD5B146276F5ADDCF5A86689655DA475ACE51BA04CE6CA61AA589B69EB535D4062931DAA151CD64958A2CB42B32F4AAAF6786E054BE6ED1D6945D91D70687CA21F66851F15A3818ACD5B919E3BD594B918C1357192D80B45723A53367B0A12506A5041AB7A8109811CF400D58B3B9BBD39FCCB59DA3C1EC7834C2280D8ACA54949598D49A3BAD17E24490958755837A0E03A8E6BBCD3F54D3B568C3D9DCA1623EE9E08AF0D204CB8619F4AACB35EE9337996F23800E72A7A579B88C0C7747442B1F40CB34968DFE9280C47A3AD68C2209E2055B9238E2BC6349F8917210417E3CD8CF19EE05761E1FF11C32CCA239B742E72013D0D79F2C34E27429A92D0EC2EB498AEA32B26063906B0F4C8DAC755962B83BCA8F90FB574DBF741B8376C935C6EAD34906AC92924A9E2B08B7176358372D19D6ACEA096FE155CD79178A750B8D4F5290166F2D090057A4DBCC64D36E4AFDE20D713368ECEC5C8CF7AB8AF7B51C236B9C67D91DFF0086A9EA16C605C918AEE45924470C066B93F11B0F3C8EC2BB68CEF2B13517BB7399C64935246C77E2A3C839A72B00C2BD781E6CB72E400EE34F9411CE6A1824C93CD12BFCA6B4B928A739E4D5793EED3E46EB50BF295949DC63623F3F35AB07CB1EE159B0C409CD5DCEC4DB9EB4E1A0873C9C55779483448DC55566E69B9022CAB6F39AD8D3D30BBAB2ADA3DC335B16FF00200B9EB5AD3D0522E87EC7F0AB31310C2B399BE5EB53432E4806B45225A27BC8F90D8EB596D9563F5AD863BE1E7B74ACB9D08E693566345A85FCD50BD187EB55AF632AD9E9C5321728E1853EF24F341CFA54C9DD09197BA8A5D87D68AC79CBB0E49FCC3EF493AE4038AAF1FC8D56C90C83355B888542F9673D69850751526E0ADCF4A6C93C78C28E696831F6E486AB80E455280F39AB41B8AA4C44EAD8A432EDE6A2DD504AF95AA720B0F92F4AB706A68EF72464D663F5A6A9C1A853770E53A0122C801CD23120F159B6F332F19AB624E335AA62B0E9A359D318E6B16789A0739AD766E73514A1278F6B019159CA3D50D18CCE48A666AD4F68D19C8E45562A4562CAD0746DCD4BB88AAEA79A9450845B8A53BBAD5A496B39477A9D1C835A290AC682BE452D5647A943639ABBDC0941C1A9D595D0AB60A91554B6450B260E334D24F46056BDD3D95BCC8B91E9505A6A371652E55D9483D01AD98E55CFCC01AA57BA7097324630DD6B9AA51EA8D233B1E8DE14F88E0AA5AEA446CC001CF6AE875A962BBB6F3A13B97EF022BC0C33C2F8DC4106BA4D17C5171643C9918B43FDDAF32B61549DE3B9D34AAF2B3D87C2B74B730CB131CFB1AD0B9B550182815C4784B58886AEBB48DB276AF44BD40A770E8466B8AB46516AE7429A6EE721A85B6CDCD5E61AF49BEEA4FAD7AB6B122AC4E723A1AF22D6240F70F8F535D58357770AEFDC324D3148C9CD4990074A86461B4D7AFD0F349607DA4F3523BE54D5489AA72DFBBAA5B125673F3535BEED29FBD4D6A902584038C9A57399300D2C4BB62CD318F0698586BB13C522479393483AE6A78D7730A23AB132DDB21C8C55D71B306A2B74DAB9A9E400AD745AC840AF9142B957C8351C630DC7E353601EF420342DA4DE98FCEA1B98C60902A2B66DA460E3FAD5C9BE688FAD5BD50BA9963AE33529198EA26FBE454B1328E0F7ACDEC5329EDA2ADF934567CA519F243CE7DE81F77156582B74A81F1B48154F425155F1B8D47800E69C4FCF4A7150864B15585E955E3A9F3C55880B62A176A73B62A02D9349B18D6A5419348DD69E9D2A5012C6B8A90CD8E334C4CF34D78DBA81557603BCDE7AD065AACCA452648A5CC05F8E7523630C8351CB64AEBBE3E7DAAA6F3EB5621B8643D78A774F416A566B7653C8A6918AD5631DC0E4735566B465E40C8A4E361DCA60D4B19C734D68D8750C2914106A501695B9CD4A24C0AAAB4ACDC555EC05A128A52475AA1E61079353C72E451CD702D24841A9D27F7C8F4AA61C50DC8E2A930B12DC5AA4EA597EFD67342C8D91C1156966643D6A50D1CC3D5AB394131A6D1268FA84965748E0FDD35EFF00A2DFC5ADE8092464191061BF2AF9F0C07395EB5D7F81BC48FA3DF88266220938DB9EF5C389C3A9C4DA9CEC759E213E55ACB9CF4C5792EA0DBA53F5AF5AF126CD40C90D99591997762BC9B55825B6BA78E75DAE2B2C1C1C7E23A2BD44D19CEC40355A47F7AB123A95C0EB54646DCD8AF424CE22646A943E4D55071522373426038E771A7042EC053704B7D6AD46BB5735691235F8403D2A16E952B72D4C601450C647D2ADDAA16238AA89CBF15AB6C9B06EAA82B92CB29F2AFD28F37A8C530B64D2AA16AD2EC444642AFED532BEE14935BB609029918238340C97356ADE7326E8D875E955B1C7D6A5830AE2A968C4C65C2ED7CD350F39AB9771868C102A829C1C1A5D750E85AF30FA515167DA8AA24CB49C90013521E573544707AD5946F96B04EE6840C48969DBB34C93EFD203CD45F5196236AB1BBE5AAD19A99F85AB4C4472373D6A3CE294E73CD34F5A901734E52453075A7D0809E1724E2AEAA02BD2B3A238357A37E2B48F98991C90E41AA924441AD5FBC2A292307B50E3D84999456984907AD5B921C678AAEC959B4CA4093153D6AE45780100D50DB8A4342935B8DA35D923B81943F37A553920643D0F5A8239995BAD5D8AE4300AE01156ACF626D62A12453431E6B41ED1261BA26FC2AA4B6EF11C1C9A4D31A657273406C538AD467AD43605857E9CD588E504609AA19E29C09C7154A405F74DE32315015646CD4693329E6AC090498C9A603E1BADA70D560CA5712467E61CD52DA326A44057273C5125741B1BD67AD3FF0068C772F29407E4722B235FB9FB45EB48AC5D4F4268B56DF6D3425410DCEE3DA924B352983229C0E95828B6F62D3309F7119A8B1CD58B9528E573C544B116E943DEC219D294139E2A4F239A916309CF7A12B08727CB8CF5A999B0B558C84B6295DCE6B4E6113A48B91BAA59635299154A205DEAD9E5428AB4EE8432DE2DCFD3A569E00502A18A308A08EB53A8DD571D0058E3E7245598B078C1A87385C6696263BC73DEAD09974AEF4C75AA72405189ABE8015CD472C794CE2A9A1265655F96A445F9C5440E1B152A1E6945EA365C74F321183F5ACB993CB63DB9AD78496E2A9DE4203138A2A2B893286EF61452EC14545CA332480A9351A928D8AD560922F1551E10AC6B371B0EE5394E1F34D46F98D24C7E7C546A7E6ACAFA8CB8870455C48F760D6723E6B4219300735AC1888E540A0E055467DA79AD195770CD674E9934A4AC084F3076A5128355B247149CF5ACF98763423705AAE44D9158D1CB83D6AFDBCE3D6B48484D1A2A6A4C645451B86152A8ADB72485D073559E2C76AD02063A544D18349A1DCCD6515195ABF242369E2AB18F07A566D0CAE4522E41AB053DA91539A94807452306041AD059B78024C1154963DBCD3CB718AB8BB0AC4B359C720CC640359D2DBC91FDE5C0F51575646079E952EF0C30CB9068693D82E64018352C6326ADCD6B952D18CFB55239538231516E5DC65811034BB369A8A39086193C54AF260552D0052FC62985CE2A32C739A4627143606959DF4105B4B1CF1960FF00C40F4AAF717B0471958D58679C9AA0CCD4D9C16407BD65CCD3D0A424920979CD2420EEE7A51042C54961C54C133C29AADF5621CC19B8514D16CCC79AB300DBD6A772BB6AF9534233668BCA1D6AAB31AB574D9EF548F5AC9EE51244C41AD1832E326B3E35216B56D93080D694F725965178152A0E0D22E734B9CF15B122E3DE80841CD3945588941EA0534AE17258394FA54B9C8C5406650DB40A9030718CD52D40A738DB25119E6A6B84DC954E3728DB73DEA7E1606B40453AE53CC4CD410BE5463A55B203475A3D5096E66793455CD83D28ACF94B3944B865E86A47BC0633DCD53CF14D62715CDCEC761ACDB9C9A13EF53475A55EB59DEE3274EB56E235493A55984D6B164B2EE32B54E45C135763E54D579C0CD68F5424674A8435308C0AB4E38AACE39AC1A2D32339A9A194AD46DD29AA79A85A31B46C433838157A3932466B1216391CD6942C7239AE984AE4346881B8535979A48D8D48C38AD6C495DD6ABC91D5DDA09E6A19635E78A4D0265365C0A881F9AA761559FEF565D4A2C03F2FD695549A231902ACA20AB5110C58F38E2A748C63A538281DA9C055A49031D1A67B0C550D46D3F8907D6B4E2E3344AA194E7D289A4D093B1CC213BB1E95230239C53AE5024E71EB53200C83358228AE0F1F4A6F9841E94E97E56E295147A75A96C640EDCE4D3D537A734E9401D2851B6318A9B6B718A64CA05C702846543C75A55398CD30D5DC9272D9C1A6BC85462A2DE474A6312413439680412B139CD44A371A593934E8C62B3193C69C0AD3B7E702B354D5AB5918498ADA0C4D1A0CDB475A6F9A3AD473B9249AAAD237AD539D98AC5D374B1F5A960BD8D9F05B00D639624F35164AB1C1A4AADFA09A3AA681644DC873507EF623C838ACFB19E40400C6B6E2959C00D820D6C85B15C4C5FE5355A550AF9AD836D1633B71F4AA7731A8538A24BA85C2D9805AD0425A3E2B2AD865B9AD3878381D2AA2EE21B86A2A7A2819FFD9 +0 +0 +0 +0 +0 +0 +1 +0 +0 +(NULL) +0 + diff --git a/src/spatialite/test/sql_stmt_security_tests/isXblob8.testcase b/src/spatialite/test/sql_stmt_security_tests/isXblob8.testcase new file mode 100644 index 0000000..0dd5bae --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/isXblob8.testcase @@ -0,0 +1,30 @@ +isXblob - RIFF, not Webp +:memory: #use in-memory database +SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), GeomFromExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT BlobFromFile("sql_stmt_tests/seconds.wav") as blob) dummy +1 # rows (not including the header row) +12 # columns +Hex(blob) +IsPngBlob(blob) +IsGifBlob(blob) +IsGeometryBlob(blob) +IsZipBlob(blob) +IsPdfBlob(blob) +IsTiffBlob(blob) +IsJpegBlob(blob) +IsExifBlob(blob) +IsExifGpsBlob(blob) +GeomFromExifGpsBlob(blob) +IsWebpBlob(blob) +524946467C01000057415645666D74201200000007000100401F0000401F000001000800000066616374040000004A010000646174614A010000523B2832AC9EAE2E3D61432B2BB49FA43B3560493827D5A2A0F62E5E4B3D293EA79EB52D4B4B3B2B2CB09DA53435593E3728F7A19E682D5E4B3E2737A89DBB2B4E56442D2EAD9CAA2F3E59453126C09E9F40306B41392544A49ED12EEF4C41292EAB9DB52C42624C3029BA9EA837397E4C3A27649F9F5C3463473D283BA89EBD304D45422E2DAF9DAB3540523C3328D29FA24534553E392A4DA29ED5315C423E2D32AC9EB3344F5644322AB99EA83D37504139284CA1A0713250483E2A38A89EBC2E44574D2F2CB49DAA343C5E443627DF9EA247345E4B3F273FA19FDD2D4949442C2FA99DB4303F6446302ABB9DA83C35584A3D284EA09F7D314E3E3F2A36A59DBC2E4E4B442F2BB29EAB3336574B3B28E89FA24D3150503E2646A29FDA2D4851522C32AA9DB52E3E4D4E312AB79DA733335D563B27E99FA2462D584C3F2941A29ECB2C4449402D31AB +0 +0 +0 +0 +0 +0 +0 +0 +0 +(NULL) +0 + diff --git a/src/spatialite/test/sql_stmt_security_tests/isXblob9.testcase b/src/spatialite/test/sql_stmt_security_tests/isXblob9.testcase new file mode 100644 index 0000000..aed9633 --- /dev/null +++ b/src/spatialite/test/sql_stmt_security_tests/isXblob9.testcase @@ -0,0 +1,30 @@ +isXblob - Webp +:memory: #use in-memory database +SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), GeomFromExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT BlobFromFile("sql_stmt_tests/test.webp") as blob) dummy +1 # rows (not including the header row) +12 # columns +Hex(blob) +IsPngBlob(blob) +IsGifBlob(blob) +IsGeometryBlob(blob) +IsZipBlob(blob) +IsPdfBlob(blob) +IsTiffBlob(blob) +IsJpegBlob(blob) +IsExifBlob(blob) +IsExifGpsBlob(blob) +GeomFromExifGpsBlob(blob) +IsWebpBlob(blob) +52494646381300005745425056503820FC120000D03E009D012A80008000000708858588858488028219C1D32F2755672A4E67F137FFDD8CFDBE9D39FDFA9FE7536E0AFC2BF32FC1D7AD7DCFF573C95F595A85FCB3EDE7EA3FBCFEE3FC65FE03BCFF923A82FB13FD5F8ABEC36DA3FD6FFCEF505EF07FC5FF01E2DBFEE7A0DF5BBFE77B80FF32FE61FEDBD54FF37E141F75FF4BEC03FD1BFB67FD6FF3DF98DF249FF17F99FCDEF6EFF4CFFE4FF35F00FFAB3FF2FFBC7B5EFFFFF73DFB85ECB1FAC7FF87DEFCD6E1CCB7C52211F324FAD197772F07ADFF320C8A6E3C954257AA7D1D37D2E3DFE692A22442982085E1D214D44549FE4B87B9AF1AA705E5618B9A6CB936CF8D950E9D08F2262F84562F4D3A9EC827E7EEBDD7BD95ED9637C83E991EB4E61D31D8688EDC9F6DAE95789CF8178A989A30CE4B3DBBF88671461109594162D6878D75E4198E04D7225B1A17CBC83189D0AA0EBF3290BE2B020FB221914F0E75A2FE86661E2224636ECB04DA2E078107BDD1BD79A073912F2255BA4A9E3F2E5CAB360885056C7FF617FF2D128EC21630BAA994E7FF19467493FA443061439801CCE618020B0A60E239DC6DCC4E6E9D21EBAF822697B6731EDF7766E4EB449B6870CB32CD316120FFFF112CB5AB755AC0A728D7CF1C882794C50DF5BC848870054E346FB04C426A5DEE7E50F9B6CA043A4D5819BF7500DF3DD5EB43A5EDA5F766B8733DE67B21D802F45D051870127ABBB9A0FEFFFE1381F5747C039FFF921BF9E7FD5E69A3FFC9BC2FEE2C690BA401704F7EF1BF3EACDCE82334409DED4675F173A1C1C417F03FC220A554FD54F4DBD328E45139063A58698F766F82FCD2B591549E20E23BF425C47FC7A1FCAE2DFFB04ECB2C8076274C9FF456233F65E2F6ABEA766FD6F30CD8596D9DDE7F491BF36955BA853B80B7DD7D2DB7466230967B8035373285B84630EF4A084D1388367502F970A662A37561708B6B7D392C1D959FCA8DD88A5BEA53C69FC239E39CF0A500D2658B751E67D12F185EADB6664F2B58573CB7880F61F8B54E7F66BFD6DFFBE896767BFE61931A97F9442FBFEE2CBB9EE91A4D215960754CA00BD922C191AA1F949535D7E26A5BE8002ADD5CD8B1B8A7F43E3851AD08BF00B5FF7AE99D3D3474CD0388168AEE9775E50BB7D0FA08327B3D04BC2F77EFA0D157E9C5D32A155C4714A97531FFC1B55B1363E825BD814D13EF96CF72363FFEFC44357DCC6283F4D30FF3C32ADC0E7FFE733B95DA5B3D7BB9FFA67F6571D35612FFF109509DE5DA5AFBFDB95896E2B2E51FAAD29F41787A55C068A62E011F1AFC72E709D7F2FAA2FEAF7F46E64FD6514D34EE1C0A11EAC027FC578C58D02DCCABF46A6AB2B2EAB608BD1903E3D882EA978A6D80304A127A0E8BEE556567DF49447780352611F4D253C4ECE8FCC8EFDB1D6F946FFF011C9E981C8F795C91F26DA2DDFEECE906CA45832D4201B17E5E2CCAE32E75871588DE9ADBF75FB3577F9D4AD9F0135BBF8624DE5FF880A1C293C1C4B94305366B09E25FC07EBB23D4920988B08D39024334650A9D1576A8955C5D1BB5FF56F9A6B3743FD39F8F04F10835E088A68F03D11D0C11AF2939721065C8C87FFA6A5E964AC9C914684D9D4489A42558716F07CB7A781D6342CF8C42B07414A8322CEDA3C88DF2691FD146B6405116000F21294A9C1303491EB1228668ED7767F72CA5A4B5E8B9C09277ADAC135353AADF56D858D240CB91EFCB37E68E3B687DC74D8FE4D9FDF41F0B435839C87D9971EFF3ACF1D15C477D84E3E01231B174F16E4D1C84A12FE9D9E7ACD3256D28B32E751641CA25663EDA61D903A00D2141C16D9E2A9A98F2DC6776DB2F2DFC1E72B97A5142DC347B48E23AE9706311E9E987F5543AF8CF2983C2CD1BE96D2EF46FEC81105A1C92B9E6D03631E0201271437201299B73D6F8733BC6FEFB31934D8FBF6F6F900E2809F05A1643364566C6ABF94F96095E7CD5F47B69F891C0ECB906A706106010730D01A20460FD122A9CAD3471A0A2F85918883AE0E6F43FE6AE84B0E23DD80A57F50DE5BFB5DA6F0F2A650971267B7D2925EE5A16D387A2BBC441443F66DA408991A23CF13DF96615385430C544F62CF0BB4E0DA8C663E78D868D4688DC1175A01B5DEFA2720075AB17CA74084D4B9EE325F33A11AB969742857EC5461B9050F0475983F94E6B6CC27D04E01313A52A9CD8F949925B781A4484675499BADBF8B9904F31BA5CC2266820E65662688FA65E3D47DA990098933EA095642C430C8120F80ACF1BD7B0FC44F1F4CF7D4610EFAE786C658A821F4A0EF142F546455692A296B8DCC28C57C4AEC85AF4DFE680749C3065CE2EE8A716F2B1E518FB01ED4B76B5EBF225EC13877A71E614E25C4B4B72B068A68E4FCF5EEE6C879B22C4DCE83C6F33EB8B144F4A2BA134B962FDC8B42B50E3CA19BCF431A7D746CC681C5CB9C789BEB4F3373029511B2A62C038CDC1FF612A903D2A6242FC75ECDA5FBB6B830F3F09C0589A6C9E0FE162B5736B957073931DF627E0A95593DDED2F919F96C281458B75F16F71BD8721EA97D45FD9BE3D4BA97EF1E8478B25172F3D8E2F35CAE99B96DAF13D060C96C1901A6E42A18BCE7913CCAC787778C970AB41E3489E5D37EBEFDDE1AE28793D6129F01E79BFE8F71EF9E2FBA6FEF5184C6F0878FF3FCEABF97CA7D1552D623B980CF69409A0B8AD241EF855F79C2DF32B66A26730F03124C04F56AF74C3BC5C8B7050982CAF44CB23A3A12FF25305D98556D854E9578CAFFA14F30317B784429AA6FE4521F16B179AC8724A78FCBC2398676EEF4809FD47BA160BEB3008B55403374EFE07D3FBB1BFD25A2771D8B414DAE124561355D39CBB6E3A919FAD83F12C83EBFDA741D5A7F0976CA032A194FC3A2490DBE9C373E1EFC555175979283DC2F22B7FEA0E3C0139DEA1E60865B88D156907B738CE1896679C1156F348C3A71F84ED748D8CE7F61C2F01073848BA043CDF4C46B0237C9BF5F7C58A02EE25F1FDADF45E3D5D98F93E2211263E07B368A76A9B8CADC0878C48D591E14693DE1E8D4EFC192B4235CF5F54C191E39EC66C2B59A4B36B4A38961A60D7F20B6B038C50468CF6AB7105EF7C5BB5FDF855C2AB9BE89D39C1C38394701D5EEA1E62FFBC9B41B6B3FB5D9A15316F05AA31FA0791EBE7FEEBBCBF8A1196372196794CA47A9F361AACCFC998CF9273FC3ECE5B38944DD276B0C45C2C97B749B745B84752CCA1F9F8ECFE0041023F8D5455F86745F6D7F0343A7951524F4DF4CC5B9314BF0DF650D43C006A5DD6DCB75761D7603150FDADCDC100C7E84C641157B80B4688C054BAAFB0AC8F79A19728F473D4A6491D8CC940A9985B91F731F79677F30F982F615F5D1E8B710A04A3CEC757477C7903F39BA92A1815571990770813EE970AFB080F0D99D8888B59157900AF8FFC54F117B089A2D9FF99E6B1948A7A2BFA779CD7EED737C911020D2281A833D70A5EAD5A9625786570CD7D4E834F6D6EF5C16DDF88BE427EB417F098532175F7FA1E9858C5C3E75CD5EE8733DB3830116FFF0669FCDD3FC1AAABBD9D65F2FB15AE2D142CCD1452C850FC6B563880E35DA8D6CD937B263699C3B974151AAB748EAB8922B3478531B43B4A505AF8C2DE2A2F660D9A5E37AEFACFB6AFA5D981A8C70A6F04B76197261EBB0FF3328ED056EF9C24AE8754E0A3F42D23D2FF7F6E8566B6D91DEC01DF4C272479593B9A2B6519EC16FFA83CBED670867AEE5D806D75CD6BD4F9BB47E4447A2439619F2EDF1F913632617DF30203AF0251FC82455FA639983E5332E44F9B00BB66AFEC61DC21CBDA5419BCE84FD1FF55F845A9063AC622B451D8465E7E7D893C3565B5DD06E49FE6CCE94F5EDB3EF441EC8AF35FA69681799FFEE9462F3CD7EEB9BE83C411CA2EBECA8A42B8CD5627F6E25A3875A9E12784E259C1844F4B7B3A582147CCE8C32553C25B75CB727758FEF364CB0F687330601B9AC8EABB67B426C1B4348D64B1578E79C09A4C5D971E3D5C4834E4245EC778F05E5423183A9B3415A115B6FA910561C053F41A57C67A23578ED3B45B63BE6433FE51444E0FE2D764FC1655AF28918AAA87FC2F926D01CA76DE6451287ABFC5B3197ED971A0CDBC35F6D39F82F497A7C9C5EBE757E00182941DE76F22CF3BE0D835CA1D60E33B2DEF7AB1D4760DCA69AABBCD9868BD05E748C3D49DC74F2D9BC04E37F676E67BFB086EFB6C6CBF4127EC3011B70A9F483381DEC0018C1A1B3724AAFCEC8A0973BEA7FD31FA7CF50C3FA99C8A8123EF0EF92D4CDA395D1915B02693D375D576DD29AE5280B454537A5B6009AB1137D296C47715398E1038FC0E7F01B2B034FD1361717416E75157D7E5B14C0F3825170708C009B86A25B168935D3C7609F6F47F6F2035C02C78079BD45C6E28C6B71E8C0E539FE8A2C2F58E1B072B0109318E5CE0DC7EB3CAA10EEFA1C5A3711FAD493B5C7EC999D27E657369E439B4D08302B8AEE65F8D73DB79D9DEE1696232359FE7F68D196C683787E278221228D5D7253F0E7278A0947E073ED2AC4559AE65247A98736793B9FBED54D3CBBF8D215D95010FE2BA7F0C6C16F38B7CD152F04BD39BDD681EA7CA6372CF33F1C8AB544D97C03594B2F3DF9B74B889F070CCCBCF7D2CE63A096BEB28785705B74E54139DEF95B0F210C7CFB1E030AB4E39FBD0866BE0DFE4BF6BA43C6EF34D7EEFC770DC76326D0F8289323044C38E78E5D08FDFDE4DAE74B47EA2FD38C2E847340D6D2C5AD71281C8687320CDFFD7DA37F2B1BD7A26D3C6DF60DDE0AD5AFD201C237F203C473417AFF8F551B7D49575A086910D59E65011661FC2EA0F54B5919B26DAE1A1E9B7BD8B46CF984637B9C70DA2C5B6A7297FD6420F16CFEF7F839DC0E97BE8A80729FCF2CEE4E0FFA440B0D36B6828CEBF2618DE96F70340B317D524D0D701BEF4624580BD576C109F46083226AB7B163280B21778F371B32B186EF4005383538E5EFFF8B09EE648E32D79022ED5F305F0262D20A434C7D6463B520430C480800AF5D3E880F133D0781A2C61B358519DE88003B1C843ADE2F1201BA10B83D57255B8EF70663C139B27609240580D4B8168C6AC4F014D6032209928BF5FB65A293F1CACFE3491313DD683040F97452C9C48EFD6365C152A74E94156F8CBA544388FFAD737199D9269D2447821C88133DA943FD56663CE10F2574D53C85190BB7768AFF7189548FE817726C6ED00C43A383C34955CD09443A35326693524F65E94048D9D13740D39D0B27ABB3B111FB0C91779D5913B28E61FFF965999C6662A48A0E4643834F2D6CA8E5098DE1520B5EFCB7B0BD34F36388B5B23A35A7A50B893EECF3CC7396CFF51FE1CDB1C9736C40DB11B2022A65D43FED9189CF9B6D24D88EAA613949425030861FE846CEC72BD5D1329167CB2B134518959485587E18D98ABA1B10095673ED69E1458410337DCE7D02A1CE49116E3959E897033639F56711501298FB4CE63280BFB51188590BAD6654F823CD4E7416EC031DD3268125DB01C2867780427D309208971E6CF9AFED31E91F0C31A6B2EA4F9992BA582CC7D221C55436637FE3145E4CABDB051320BD52CC5805FDCAE119DB659D90EE08F35F4009C9E1B578E863F8720B824134175FC7C757EB0318E0BCFF64DB8EA99D8B7FFE59D19BA0796A3FF94312ED0D26549D6E1E3B2619EA0C4B529B19A9B1CA82740D38437ADD1D6BB0EA4C502774F539F0A34193EA9108D7860CB0800E81B94D0C966F1893D102E91BF22730D7A9B8768C7ABED66016CBC430F00163F5F3B5EBBA2F0EEA0BA8DA054DD18437BD4CA49725FE6FB06F609AC4829B158D4C03A4952A2226F378E50130DA7625021260533393929024CECC98564D0A0F5179E25A444F31B5BCFBEE042C4310816604534B42AE39B0C337A42C4C8F6595A6690FA47D698FCFA8C81A6114AB5149E29A77F57DB5AF5FE974FCA5FD676A1D18E47E983A842ABB4D3A24366993CEC14790B44481DC7B98CD8BF023EB2BC80EC58C6ED80C406C79B89F8003EBE641731864EC091464367A30405B7406713805F60038037B94D403181E2CE30EA92EB1F1405ED43DB6704BE529F94B3FA130EB13E31554788FC996D08AE2B50CDB2CE06EE60AFD6E404863069CB7229041A9A00BCA53347BAC08C2A60BDC708916ACCA8176AF5C30C80E3501A98AC99535A0324E8C9AE9BE365C64212677CF11F7897F852A8F240135F9F7622BAEC84B962285E65503BDA3BD0E5D674EE36B54C9EAC921EE7EF6A7C8E169D14D034223CD55AB82BAA1700467C42FD7954148032D919E9C00E247A26364046F09E86CB9E24B48D7EEE1949E698B0731033C79022715A5B3ACEF98DD3AB4E6E0F9F32C0BB563C31C1D9F700694623BB6881C184B1BFDBB2FDE4552DA930FD0B7A247DC121884709258EA5EF46EE15D4A5BF1F37A274432AE1CA0A54FE12B43CA9D49EC25F300CD3021DCC4BC651265F7C2FB4F61941B360A70371F4EB3CBA13480CF3C5B1B28C3E59FC8F6F0990C46F033E2643736C00DE293FB65ACFB9AD54BEAAD5B4B2EF47CEC5C8D804EA198646E61BCB3E0E3A6AE1F63834470F228740D0C12EB4860A5A962BCB74D62C66EDE2A2AC5E845EB6A23BF6726B027ECA8C599719E43C910BFBA285FD0AD1E5184623A1B47691C3105D5906DA48EA8D929EA89A4801CA3D2586CF4A84732C0750A94B1D489F9C6C3205BE384E0CCBD41D70B1D198A1AEC92B7133551E7948932A900494B61154C4A86DCCF37DE4BE3D6A6E7508AA288A3C1E627CB942CD11E8FE27A75E070686B90846A6AC7F460CECA0FD032A23DA8730B11CA3D417565FFC1C82B23F1AA0432037911B27A04468EE14BB69928074E834EF5ABAB3110EC3E7DEE90700004941525408000000756E6B6E6F776E0049434F5005000000323031300000494E414D09000000796F73656D6974650000 +0 +0 +0 +0 +0 +0 +0 +0 +0 +(NULL) +1 + diff --git a/src/spatialite/test/sql_stmt_tests/DSCN0042.JPG b/src/spatialite/test/sql_stmt_tests/DSCN0042.JPG new file mode 100644 index 0000000000000000000000000000000000000000..3bec2f7b9725faae7be63fa291966704d16830ef GIT binary patch literal 156695 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%0DWo3&6&d)E|I;}d72X3P--XJ?VI%+j6N{t&sv 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%0D=4Q%R27lDVBF9FgJ9Yc$QWKgvLjK3 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

    ceDHW3)G*KLHbf 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 z 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⪻o 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 \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/sql_stmt_tests +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = addpoint10.testcase \ + addpoint11.testcase \ + addpoint12.testcase \ + addpoint13.testcase \ + addpoint14.testcase \ + addpoint15.testcase \ + addpoint16.testcase \ + addpoint17.testcase \ + addpoint18.testcase \ + addpoint19.testcase \ + addpoint1.testcase \ + addpoint20.testcase \ + addpoint21.testcase \ + addpoint22.testcase \ + addpoint23.testcase \ + addpoint24.testcase \ + addpoint25.testcase \ + addpoint26.testcase \ + addpoint27.testcase \ + addpoint28.testcase \ + addpoint2.testcase \ + addpoint3.testcase \ + addpoint4.testcase \ + addpoint5.testcase \ + addpoint6.testcase \ + addpoint7.testcase \ + addpoint8.testcase \ + addpoint9.testcase \ + asbinary10.testcase \ + asbinary11.testcase \ + asbinary12.testcase \ + asbinary13.testcase \ + asbinary14.testcase \ + asbinary15.testcase \ + asbinary16.testcase \ + asbinary17.testcase \ + asbinary1.testcase \ + asbinary2.testcase \ + asbinary3.testcase \ + asbinary4.testcase \ + asbinary5.testcase \ + asbinary6.testcase \ + asbinary7.testcase \ + asbinary8.testcase \ + asbinary9.testcase \ + asewkb10.testcase \ + asewkb11.testcase \ + asewkb12.testcase \ + asewkb13.testcase \ + asewkb14.testcase \ + asewkb15.testcase \ + asewkb16.testcase \ + asewkb17.testcase \ + asewkb1.testcase \ + asewkb2.testcase \ + asewkb3.testcase \ + asewkb4.testcase \ + asewkb5.testcase \ + asewkb6.testcase \ + asewkb7.testcase \ + asewkb8.testcase \ + asewkb9.testcase \ + asfgf1.testcase \ + asfgf2.testcase \ + asfgf3.testcase \ + asfgf4.testcase \ + asfgf5.testcase \ + asfgf6.testcase \ + asfgf7.testcase \ + asfgf8.testcase \ + asfgf9.testcase \ + asgeojson1.testcase \ + asgeojson2.testcase \ + asgeojson3.testcase \ + asgeojson4.testcase \ + asgeojson5.testcase \ + asgeojson6.testcase \ + asgeojson7.testcase \ + asgeojson8.testcase \ + asgml10.testcase \ + asgml11.testcase \ + asgml1.testcase \ + asgml2.testcase \ + asgml3.testcase \ + asgml4.testcase \ + asgml5.testcase \ + asgml6.testcase \ + asgml7.testcase \ + asgml8.testcase \ + asgml9.testcase \ + assvg17.testcase \ + assvg18.testcase \ + assvg19.testcase \ + assvg1.testcase \ + assvg20.testcase \ + assvg21.testcase \ + assvg22.testcase \ + assvg23.testcase \ + assvg24.testcase \ + assvg25.testcase \ + assvg26.testcase \ + assvg2.testcase \ + assvg3.testcase \ + assvg4.testcase \ + assvg5.testcase \ + assvg6.testcase \ + assvg7.testcase \ + assvg8.testcase \ + assvg9.testcase \ + aswkt-text.testcase \ + badEWKT1.testcase \ + badEWKT2.testcase \ + badEWKT3.testcase \ + badEWKT4.testcase \ + badEWKT5.testcase \ + badEWKT6.testcase \ + badEWKT7.testcase \ + badEWKT8.testcase \ + badGeoJSON1.testcase \ + badGeoJSON2.testcase \ + badGeoJSON3.testcase \ + badGeoJSON4.testcase \ + badGeoJSON5.testcase \ + badGeoJSON6.testcase \ + badGeoJSON7.testcase \ + badGML1.testcase \ + badGML2.testcase \ + badGML3.testcase \ + badGML4.testcase \ + badGML5.testcase \ + badGML6.testcase \ + badGML7.testcase \ + badKML1.testcase \ + badKML2.testcase \ + badKML3.testcase \ + badKML4.testcase \ + badKML5.testcase \ + badKML6.testcase \ + badKML7.testcase \ + badwkt1.testcase \ + badwkt2.testcase \ + badwkt3.testcase \ + badwkt4.testcase \ + badwkt5.testcase \ + badwkt6.testcase \ + badwkt7.testcase \ + badwkt8.testcase \ + badwkt9.testcase \ + buildcirclembr10.testcase \ + buildcirclembr11.testcase \ + buildcirclembr12.testcase \ + buildcirclembr1.testcase \ + buildcirclembr2.testcase \ + buildcirclembr3.testcase \ + buildcirclembr4.testcase \ + buildcirclembr5.testcase \ + buildcirclembr6.testcase \ + buildcirclembr7.testcase \ + buildcirclembr8.testcase \ + buildcirclembr9.testcase \ + buildmbr10.testcase \ + buildmbr11.testcase \ + buildmbr12.testcase \ + buildmbr13.testcase \ + buildmbr14.testcase \ + buildmbr1.testcase \ + buildmbr2.testcase \ + buildmbr3.testcase \ + buildmbr4.testcase \ + buildmbr5.testcase \ + buildmbr6.testcase \ + buildmbr7.testcase \ + buildmbr8.testcase \ + buildmbr9.testcase \ + casttoblob10.testcase \ + casttoblob12.testcase \ + casttoblob13.testcase \ + casttoblob14.testcase \ + casttoblob1.testcase \ + casttoblob2.testcase \ + casttoblob3.testcase \ + casttoblob4.testcase \ + casttoblob5.testcase \ + casttoblob6.testcase \ + casttoblob7.testcase \ + casttoblob8.testcase \ + casttoblob9.testcase \ + casttodouble1.testcase \ + casttodouble2.testcase \ + casttodouble3.testcase \ + casttodouble4.testcase \ + casttodouble5.testcase \ + casttodouble6.testcase \ + casttodouble7.testcase \ + casttogeometrycollection2.testcase \ + casttogeometrycollection3.testcase \ + casttogeometrycollection4.testcase \ + casttogeometrycollection5.testcase \ + casttogeometrycollection6.testcase \ + casttogeometrycollection.testcase \ + casttoint1.testcase \ + casttoint2.testcase \ + casttoint3.testcase \ + casttoint4.testcase \ + casttoint5.testcase \ + casttoint6.testcase \ + casttoint7.testcase \ + casttolinestring1.testcase \ + casttolinestring2.testcase \ + casttolinestring3.testcase \ + casttolinestring4.testcase \ + casttolinestring5.testcase \ + casttolinestring6.testcase \ + casttolinestring7.testcase \ + casttolinestring8.testcase \ + casttomulti11.testcase \ + casttomulti1.testcase \ + casttomulti2.testcase \ + casttomulti3.testcase \ + casttomulti4.testcase \ + casttomulti5.testcase \ + casttomulti6.testcase \ + casttomulti7.testcase \ + casttomulti8.testcase \ + casttomultilinestring1.testcase \ + casttomultilinestring2.testcase \ + casttomultilinestring3.testcase \ + casttomultilinestring4.testcase \ + casttomultilinestring5.testcase \ + casttomultilinestring6.testcase \ + casttomultilinestring7.testcase \ + casttomultipoint1.testcase \ + casttomultipoint2.testcase \ + casttomultipoint3.testcase \ + casttomultipoint4.testcase \ + casttomultipoint5.testcase \ + casttomultipoint6.testcase \ + casttomultipoint7.testcase \ + casttomultipoint8.testcase \ + casttomultipoint9.testcase \ + casttomultipolygon1.testcase \ + casttomultipolygon2.testcase \ + casttomultipolygon3.testcase \ + casttomultipolygon4.testcase \ + casttomultipolygon5.testcase \ + casttopoint1.testcase \ + casttopoint2.testcase \ + casttopoint3.testcase \ + casttopoint4.testcase \ + casttopoint5.testcase \ + casttopoint6.testcase \ + casttopoint7.testcase \ + casttopoint8.testcase \ + casttopoly1.testcase \ + casttopoly2.testcase \ + casttopoly3.testcase \ + casttopoly4.testcase \ + casttopoly5.testcase \ + casttopoly6.testcase \ + casttopoly7.testcase \ + casttopoly8.testcase \ + casttosingle10.testcase \ + casttosingle12.testcase \ + casttosingle1.testcase \ + casttosingle2.testcase \ + casttosingle3.testcase \ + casttosingle4.testcase \ + casttosingle5.testcase \ + casttosingle6.testcase \ + casttosingle7.testcase \ + casttosingle8.testcase \ + casttosingle9.testcase \ + casttotext10.testcase \ + casttotext11.testcase \ + casttotext12.testcase \ + casttotext13.testcase \ + casttotext14.testcase \ + casttotext15.testcase \ + casttotext1.testcase \ + casttotext2.testcase \ + casttotext3.testcase \ + casttotext4.testcase \ + casttotext5.testcase \ + casttotext6.testcase \ + casttotext7.testcase \ + casttotext8.testcase \ + casttotext9.testcase \ + casttoxy1.testcase \ + casttoxy2.testcase \ + casttoxy3.testcase \ + casttoxym1.testcase \ + casttoxym2.testcase \ + casttoxym3.testcase \ + casttoxym4.testcase \ + casttoxym5.testcase \ + casttoxym6.testcase \ + casttoxyz1.testcase \ + casttoxyz2.testcase \ + casttoxyz3.testcase \ + casttoxyz4.testcase \ + casttoxyz5.testcase \ + casttoxyz6.testcase \ + casttoxyzm1.testcase \ + casttoxyzm2.testcase \ + casttoxyzm3.testcase \ + casttoxyzm4.testcase \ + casttoxyzm5.testcase \ + casttoxyzm6.testcase \ + checkspatialmetadata1.testcase \ + checkspatialmetadata2.testcase \ + checkspatialmetadata3.testcase \ + checkspatialmetadata4.testcase \ + checkspatialmetadata5.testcase \ + ch_m.testcase \ + cm_m.testcase \ + collect10.testcase \ + collect11.testcase \ + collect12.testcase \ + collect13.testcase \ + collect14.testcase \ + collect15.testcase \ + collect16.testcase \ + collect17.testcase \ + collect18.testcase \ + collect19.testcase \ + collect1.testcase \ + collect20.testcase \ + collect21.testcase \ + collect23.testcase \ + collect24.testcase \ + collect25.testcase \ + collect26.testcase \ + collect27.testcase \ + collect28.testcase \ + collect29.testcase \ + collect2.testcase \ + collect30.testcase \ + collect31.testcase \ + collect32.testcase \ + collect33.testcase \ + collect34.testcase \ + collect35.testcase \ + collect36.testcase \ + collect37.testcase \ + collect38.testcase \ + collect39.testcase \ + collect3.testcase \ + collect40.testcase \ + collect41.testcase \ + collect42.testcase \ + collect43.testcase \ + collect44.testcase \ + collect45.testcase \ + collect46.testcase \ + collect47.testcase \ + collect48.testcase \ + collect49.testcase \ + collect4.testcase \ + collect50.testcase \ + collect51.testcase \ + collect52.testcase \ + collect53.testcase \ + collect54.testcase \ + collect55.testcase \ + collect56.testcase \ + collect57.testcase \ + collect58.testcase \ + collect59.testcase \ + collect5.testcase \ + collect6.testcase \ + collect7.testcase \ + collect8.testcase \ + collect9.testcase \ + collectextract10.testcase \ + collectextract11.testcase \ + collectextract12.testcase \ + collectextract13.testcase \ + collectextract14.testcase \ + collectextract15.testcase \ + collectextract16.testcase \ + collectextract17.testcase \ + collectextract18.testcase \ + collectextract19.testcase \ + collectextract1.testcase \ + collectextract20.testcase \ + collectextract21.testcase \ + collectextract22.testcase \ + collectextract23.testcase \ + collectextract24.testcase \ + collectextract25.testcase \ + collectextract2.testcase \ + collectextract3.testcase \ + collectextract4.testcase \ + collectextract5.testcase \ + collectextract6.testcase \ + collectextract7.testcase \ + collectextract8.testcase \ + collectextract9.testcase \ + compressgeometry10.testcase \ + compressgeometry11.testcase \ + compressgeometry12.testcase \ + compressgeometry13.testcase \ + compressgeometry14.testcase \ + compressgeometry15.testcase \ + compressgeometry17.testcase \ + compressgeometry18.testcase \ + compressgeometry19.testcase \ + compressgeometry1.testcase \ + compressgeometry20.testcase \ + compressgeometry21.testcase \ + compressgeometry22.testcase \ + compressgeometry23.testcase \ + compressgeometry24.testcase \ + compressgeometry25.testcase \ + compressgeometry26.testcase \ + compressgeometry27.testcase \ + compressgeometry28.testcase \ + compressgeometry29.testcase \ + compressgeometry2.testcase \ + compressgeometry30.testcase \ + compressgeometry31.testcase \ + compressgeometry32.testcase \ + compressgeometry33.testcase \ + compressgeometry34.testcase \ + compressgeometry35.testcase \ + compressgeometry36.testcase \ + compressgeometry37.testcase \ + compressgeometry38.testcase \ + compressgeometry39.testcase \ + compressgeometry3.testcase \ + compressgeometry40.testcase \ + compressgeometry41.testcase \ + compressgeometry42.testcase \ + compressgeometry43.testcase \ + compressgeometry44.testcase \ + compressgeometry45.testcase \ + compressgeometry46.testcase \ + compressgeometry47.testcase \ + compressgeometry48.testcase \ + compressgeometry49.testcase \ + compressgeometry4.testcase \ + compressgeometry50.testcase \ + compressgeometry51.testcase \ + compressgeometry52.testcase \ + compressgeometry53.testcase \ + compressgeometry54.testcase \ + compressgeometry55.testcase \ + compressgeometry56.testcase \ + compressgeometry57.testcase \ + compressgeometry58.testcase \ + compressgeometry59.testcase \ + compressgeometry5.testcase \ + compressgeometry60.testcase \ + compressgeometry61.testcase \ + compressgeometry62.testcase \ + compressgeometry63.testcase \ + compressgeometry64.testcase \ + compressgeometry65.testcase \ + compressgeometry66.testcase \ + compressgeometry67.testcase \ + compressgeometry68.testcase \ + compressgeometry69.testcase \ + compressgeometry6.testcase \ + compressgeometry7.testcase \ + compressgeometry8.testcase \ + compressgeometry9.testcase \ + createrastercoverages.testcase \ + createuuid1.testcase \ + dimension1.testcase \ + dimension2.testcase \ + dimension3.testcase \ + dimension4.testcase \ + dimension5.testcase \ + dimension6.testcase \ + dimension7.testcase \ + dimension8.testcase \ + dissolve10.testcase \ + dissolve11.testcase \ + dissolve12.testcase \ + dissolve13.testcase \ + dissolve14.testcase \ + dissolve15.testcase \ + dissolve16.testcase \ + dissolve17.testcase \ + dissolve18.testcase \ + dissolve19.testcase \ + dissolve1.testcase \ + dissolve20.testcase \ + dissolve21.testcase \ + dissolve22.testcase \ + dissolve23.testcase \ + dissolve24.testcase \ + dissolve25.testcase \ + dissolve26.testcase \ + dissolve27.testcase \ + dissolve28.testcase \ + dissolve29.testcase \ + dissolve2.testcase \ + dissolve30.testcase \ + dissolve3.testcase \ + dissolve4.testcase \ + dissolve5.testcase \ + dissolve6.testcase \ + dissolve7.testcase \ + dissolve8.testcase \ + dissolve9.testcase \ + dm_m.testcase \ + DSC_1467.JPG \ + DSCN0042.JPG \ + emptyfile.txt \ + endpoint1.testcase \ + envelope1.testcase \ + envelope2.testcase \ + envelope3.testcase \ + envelope4.testcase \ + envelope5.testcase \ + envelope6.testcase \ + envelope7.testcase \ + envintersects10.testcase \ + envintersects1.testcase \ + envintersects2.testcase \ + envintersects3.testcase \ + envintersects4.testcase \ + envintersects5.testcase \ + envintersects6.testcase \ + envintersects7.testcase \ + envintersects8.testcase \ + envintersects9.testcase \ + ewkb10.testcase \ + ewkb11.testcase \ + ewkb12.testcase \ + ewkb1.testcase \ + ewkb2.testcase \ + ewkb3.testcase \ + ewkb4.testcase \ + ewkb5.testcase \ + ewkb6.testcase \ + ewkb7.testcase \ + ewkb8.testcase \ + ewkb9.testcase \ + expand1.testcase \ + expand2.testcase \ + expand3.testcase \ + expand4.testcase \ + expand5.testcase \ + expand6.testcase \ + expand7.testcase \ + extent1.testcase \ + extractmultilinestring1.testcase \ + extractmultilinestring2.testcase \ + extractmultilinestring3.testcase \ + extractmultipoint1.testcase \ + extractmultipoint2.testcase \ + extractmultipoint3.testcase \ + extractmultipolygon1.testcase \ + extractmultipolygon2.testcase \ + extractmultipolygon3.testcase \ + fath_m.testcase \ + fdo_ogr1.testcase \ + fdo_ogr2.testcase \ + fdo-wkb.sqlite_RO \ + forcenull10.testcase \ + forcenull11.testcase \ + forcenull12.testcase \ + forcenull13.testcase \ + forcenull14.testcase \ + forcenull15.testcase \ + forcenull16.testcase \ + forcenull17.testcase \ + forcenull18.testcase \ + forcenull19.testcase \ + forcenull1.testcase \ + forcenull20.testcase \ + forcenull21.testcase \ + forcenull22.testcase \ + forcenull23.testcase \ + forcenull24.testcase \ + forcenull25.testcase \ + forcenull26.testcase \ + forcenull27.testcase \ + forcenull28.testcase \ + forcenull2.testcase \ + forcenull3.testcase \ + forcenull4.testcase \ + forcenull5.testcase \ + forcenull6.testcase \ + forcenull7.testcase \ + forcenull8.testcase \ + forcenull9.testcase \ + fromewkt10.testcase \ + fromewkt11.testcase \ + fromewkt12.testcase \ + fromewkt13.testcase \ + fromewkt14.testcase \ + fromewkt15.testcase \ + fromewkt16.testcase \ + fromewkt17.testcase \ + fromewkt18.testcase \ + fromewkt19.testcase \ + fromewkt1.testcase \ + fromewkt20.testcase \ + fromewkt22.testcase \ + fromewkt23.testcase \ + fromewkt24.testcase \ + fromewkt25.testcase \ + fromewkt26.testcase \ + fromewkt27.testcase \ + fromewkt28.testcase \ + fromewkt29.testcase \ + fromewkt2.testcase \ + fromewkt30.testcase \ + fromewkt31.testcase \ + fromewkt32.testcase \ + fromewkt33.testcase \ + fromewkt34.testcase \ + fromewkt35.testcase \ + fromewkt36.testcase \ + fromewkt37.testcase \ + fromewkt38.testcase \ + fromewkt39.testcase \ + fromewkt3.testcase \ + fromewkt4.testcase \ + fromewkt5.testcase \ + fromewkt6.testcase \ + fromewkt7.testcase \ + fromewkt8.testcase \ + fromewkt9.testcase \ + fromgeojson10.testcase \ + fromgeojson11.testcase \ + fromgeojson12.testcase \ + fromgeojson13.testcase \ + fromgeojson14.testcase \ + fromgeojson15.testcase \ + fromgeojson16.testcase \ + fromgeojson17.testcase \ + fromgeojson18.testcase \ + fromgeojson19.testcase \ + fromgeojson1.testcase \ + fromgeojson20.testcase \ + fromgeojson21.testcase \ + fromgeojson22.testcase \ + fromgeojson23.testcase \ + fromgeojson24.testcase \ + fromgeojson25.testcase \ + fromgeojson26.testcase \ + fromgeojson27.testcase \ + fromgeojson28.testcase \ + fromgeojson29.testcase \ + fromgeojson2.testcase \ + fromgeojson30.testcase \ + fromgeojson31.testcase \ + fromgeojson32.testcase \ + fromgeojson3.testcase \ + fromgeojson4.testcase \ + fromgeojson5.testcase \ + fromgeojson6.testcase \ + fromgeojson7.testcase \ + fromgeojson8.testcase \ + fromgeojson9.testcase \ + fromgml10.testcase \ + fromgml11.testcase \ + fromgml12.testcase \ + fromgml13.testcase \ + fromgml14.testcase \ + fromgml15.testcase \ + fromgml16.testcase \ + fromgml17.testcase \ + fromgml18.testcase \ + fromgml19.testcase \ + fromgml1.testcase \ + fromgml20.testcase \ + fromgml21.testcase \ + fromgml22.testcase \ + fromgml23.testcase \ + fromgml24.testcase \ + fromgml25.testcase \ + fromgml26.testcase \ + fromgml27.testcase \ + fromgml28.testcase \ + fromgml29.testcase \ + fromgml2.testcase \ + fromgml30.testcase \ + fromgml31.testcase \ + fromgml32.testcase \ + fromgml33.testcase \ + fromgml34.testcase \ + fromgml35.testcase \ + fromgml36.testcase \ + fromgml37.testcase \ + fromgml38.testcase \ + fromgml39.testcase \ + fromgml3.testcase \ + fromgml40.testcase \ + fromgml41.testcase \ + fromgml43.testcase \ + fromgml44.testcase \ + fromgml45.testcase \ + fromgml46.testcase \ + fromgml47.testcase \ + fromgml48.testcase \ + fromgml49.testcase \ + fromgml4.testcase \ + fromgml50.testcase \ + fromgml51.testcase \ + fromgml52.testcase \ + fromgml53.testcase \ + fromgml54.testcase \ + fromgml55.testcase \ + fromgml56.testcase \ + fromgml57.testcase \ + fromgml58.testcase \ + fromgml59.testcase \ + fromgml5.testcase \ + fromgml60.testcase \ + fromgml61.testcase \ + fromgml6.testcase \ + fromgml7.testcase \ + fromgml8.testcase \ + fromgml9.testcase \ + fromWkb10.testcase \ + fromWkb11.testcase \ + fromWkb12.testcase \ + fromWkb13.testcase \ + fromWkb14.testcase \ + fromWkb15.testcase \ + fromWkb16.testcase \ + fromWkb17.testcase \ + fromWkb18.testcase \ + fromWkb19.testcase \ + fromWkb1.testcase \ + fromWkb20.testcase \ + fromWkb21.testcase \ + fromWkb22.testcase \ + fromWkb23.testcase \ + fromWkb24.testcase \ + fromWkb25.testcase \ + fromWkb26.testcase \ + fromWkb2.testcase \ + fromWkb3.testcase \ + fromWkb4.testcase \ + fromWkb5.testcase \ + fromWkb6.testcase \ + fromWkb7.testcase \ + fromWkb8.testcase \ + fromWkb9.testcase \ + ft_m.testcase \ + garsmbr10.testcase \ + garsmbr11.testcase \ + garsmbr12.testcase \ + garsmbr13.testcase \ + garsmbr14.testcase \ + garsmbr15.testcase \ + garsmbr16.testcase \ + garsmbr17.testcase \ + garsmbr18.testcase \ + garsmbr1.testcase \ + garsmbr20.testcase \ + garsmbr21.testcase \ + garsmbr22.testcase \ + garsmbr23.testcase \ + garsmbr24.testcase \ + garsmbr25.testcase \ + garsmbr26.testcase \ + garsmbr27.testcase \ + garsmbr28.testcase \ + garsmbr29.testcase \ + garsmbr2.testcase \ + garsmbr30.testcase \ + garsmbr31.testcase \ + garsmbr32.testcase \ + garsmbr33.testcase \ + garsmbr34.testcase \ + garsmbr35.testcase \ + garsmbr36.testcase \ + garsmbr3.testcase \ + garsmbr4.testcase \ + garsmbr5.testcase \ + garsmbr6.testcase \ + garsmbr7.testcase \ + garsmbr8.testcase \ + garsmbr9.testcase \ + geodesic-len1.testcase \ + geodesic-len2.testcase \ + geodesic-len3.testcase \ + geodesic-len4.testcase \ + geodesic-len5.testcase \ + geodesic-len6.testcase \ + geodesic-len7.testcase \ + geodesic-len8.testcase \ + geojson1.testcase \ + geojson2.testcase \ + geojson3.testcase \ + geojson4.testcase \ + geojson5.testcase \ + geojson6.testcase \ + geomcollfromtext1.testcase \ + geomcollfromtext2.testcase \ + geomconstraints10.testcase \ + geomconstraints11.testcase \ + geomconstraints12.testcase \ + geomconstraints13.testcase \ + geomconstraints14.testcase \ + geomconstraints15.testcase \ + geomconstraints16.testcase \ + geomconstraints17.testcase \ + geomconstraints18.testcase \ + geomconstraints19.testcase \ + geomconstraints1.testcase \ + geomconstraints20.testcase \ + geomconstraints21.testcase \ + geomconstraints22.testcase \ + geomconstraints23.testcase \ + geomconstraints24.testcase \ + geomconstraints25.testcase \ + geomconstraints26.testcase \ + geomconstraints27.testcase \ + geomconstraints28.testcase \ + geomconstraints2.testcase \ + geomconstraints3.testcase \ + geomconstraints4.testcase \ + geomconstraints5.testcase \ + geomconstraints6.testcase \ + geomconstraints7.testcase \ + geomconstraints8.testcase \ + geomconstraints9.testcase \ + geometryn10.testcase \ + geometryn11.testcase \ + geometryn12.testcase \ + geometryn13.testcase \ + geometryn14.testcase \ + geometryn15.testcase \ + geometryn16.testcase \ + geometryn17.testcase \ + geometryn18.testcase \ + geometryn19.testcase \ + geometryn1.testcase \ + geometryn20.testcase \ + geometryn2.testcase \ + geometryn3.testcase \ + geometryn4.testcase \ + geometryn5.testcase \ + geometryn6.testcase \ + geometryn7.testcase \ + geometryn8.testcase \ + geometryn9.testcase \ + geometryn.testcase \ + geomfromewkb1.testcase \ + geomfromewkb2.testcase \ + geomfromkml10.testcase \ + geomfromkml11.testcase \ + geomfromkml12.testcase \ + geomfromkml13.testcase \ + geomfromkml14.testcase \ + geomfromkml15.testcase \ + geomfromkml16.testcase \ + geomfromkml17.testcase \ + geomfromkml18.testcase \ + geomfromkml19.testcase \ + geomfromkml1.testcase \ + geomfromkml20.testcase \ + geomfromkml21.testcase \ + geomfromkml22.testcase \ + geomfromkml23.testcase \ + geomfromkml2.testcase \ + geomfromkml3.testcase \ + geomfromkml4.testcase \ + geomfromkml5.testcase \ + geomfromkml6.testcase \ + geomfromkml7.testcase \ + geomfromkml8.testcase \ + geomfromkml9.testcase \ + geomfromtext10.testcase \ + geomfromtext11.testcase \ + geomfromtext12.testcase \ + geomfromtext13.testcase \ + geomfromtext14.testcase \ + geomfromtext15.testcase \ + geomfromtext16.testcase \ + geomfromtext17.testcase \ + geomfromtext18.testcase \ + geomfromtext19.testcase \ + geomfromtext1.testcase \ + geomfromtext20.testcase \ + geomfromtext21.testcase \ + geomfromtext22.testcase \ + geomfromtext23.testcase \ + geomfromtext24.testcase \ + geomfromtext25.testcase \ + geomfromtext26.testcase \ + geomfromtext27.testcase \ + geomfromtext28.testcase \ + geomfromtext29.testcase \ + geomfromtext2.testcase \ + geomfromtext30.testcase \ + geomfromtext31.testcase \ + geomfromtext32.testcase \ + geomfromtext33.testcase \ + geomfromtext34.testcase \ + geomfromtext35.testcase \ + geomfromtext36.testcase \ + geomfromtext37.testcase \ + geomfromtext38.testcase \ + geomfromtext39.testcase \ + geomfromtext3.testcase \ + geomfromtext40.testcase \ + geomfromtext41.testcase \ + geomfromtext42.testcase \ + geomfromtext43.testcase \ + geomfromtext44.testcase \ + geomfromtext45.testcase \ + geomfromtext4.testcase \ + geomfromtext5.testcase \ + geomfromtext6.testcase \ + geomfromtext7.testcase \ + geomfromtext8.testcase \ + geomfromtext9.testcase \ + geomtype10.testcase \ + geomtype11.testcase \ + geomtype12.testcase \ + geomtype13.testcase \ + geomtype14.testcase \ + geomtype15.testcase \ + geomtype16.testcase \ + geomtype17.testcase \ + geomtype18.testcase \ + geomtype19.testcase \ + geomtype1.testcase \ + geomtype20.testcase \ + geomtype21.testcase \ + geomtype22.testcase \ + geomtype23.testcase \ + geomtype24.testcase \ + geomtype25.testcase \ + geomtype26.testcase \ + geomtype27.testcase \ + geomtype28.testcase \ + geomtype29.testcase \ + geomtype2.testcase \ + geomtype30.testcase \ + geomtype31.testcase \ + geomtype32.testcase \ + geomtype33.testcase \ + geomtype34.testcase \ + geomtype35.testcase \ + geomtype36.testcase \ + geomtype37.testcase \ + geomtype38.testcase \ + geomtype39.testcase \ + geomtype3.testcase \ + geomtype40.testcase \ + geomtype41.testcase \ + geomtype42.testcase \ + geomtype43.testcase \ + geomtype44.testcase \ + geomtype45.testcase \ + geomtype46.testcase \ + geomtype47.testcase \ + geomtype48.testcase \ + geomtype49.testcase \ + geomtype4.testcase \ + geomtype50.testcase \ + geomtype51.testcase \ + geomtype52.testcase \ + geomtype53.testcase \ + geomtype54.testcase \ + geomtype55.testcase \ + geomtype56.testcase \ + geomtype57.testcase \ + geomtype58.testcase \ + geomtype59.testcase \ + geomtype5.testcase \ + geomtype60.testcase \ + geomtype61.testcase \ + geomtype62.testcase \ + geomtype63.testcase \ + geomtype64.testcase \ + geomtype65.testcase \ + geomtype66.testcase \ + geomtype67.testcase \ + geomtype68.testcase \ + geomtype69.testcase \ + geomtype6.testcase \ + geomtype7.testcase \ + geomtype8.testcase \ + geomtype9.testcase \ + getmimetype1.testcase \ + getmimetype2.testcase \ + getmimetype3.testcase \ + getmimetype4.testcase \ + getmimetype5.testcase \ + gml10.testcase \ + gml11.testcase \ + gml12.testcase \ + gml13.testcase \ + gml14.testcase \ + gml15.testcase \ + gml16.testcase \ + gml1.testcase \ + gml2.testcase \ + gml3.testcase \ + gml4.testcase \ + gml5.testcase \ + gml6.testcase \ + gml7.testcase \ + gml8.testcase \ + gml9.testcase \ + greatcircle-badblob.testcase \ + greatcircle-poly2.testcase \ + greatcircle-poly3.testcase \ + greatcircle-poly4.testcase \ + greatcircle-poly5.testcase \ + greatcircle-poly6.testcase \ + greatcircle-poly7.testcase \ + greatcircle-poly.testcase \ + greatcircle.testcase \ + greatcircle-text.testcase \ + ind_ch_m.testcase \ + ind_ft_m.testcase \ + ind_yd_m.testcase \ + in_m.testcase \ + is3d1.testcase \ + is3d2.testcase \ + is3d3.testcase \ + is3d4.testcase \ + is3d5.testcase \ + is3d6.testcase \ + isempty2.testcase \ + isempty3.testcase \ + isempty4.testcase \ + isempty.testcase \ + ismeasured1.testcase \ + ismeasured2.testcase \ + ismeasured3.testcase \ + ismeasured4.testcase \ + ismeasured5.testcase \ + ismeasured6.testcase \ + ispopulatedcoverage1.testcase \ + ispopulatedcoverage2.testcase \ + isvalidnodata1.testcase \ + isvalidnodata2.testcase \ + isvalidnodata3.testcase \ + isvalidnodata4.testcase \ + isvalidpalette1.testcase \ + isvalidpalette2.testcase \ + isvalidpalette3.testcase \ + isvalidrasterstats1.testcase \ + isvalidrasterstats2.testcase \ + isvalidrasterstats3.testcase \ + isvalidrasterstats4.testcase \ + isvalidrasterstats5.testcase \ + isvalidrasterstats6.testcase \ + isvalidrasterstats7.testcase \ + isvalidrastertile1.testcase \ + isvalidrastertile2.testcase \ + isvalidrastertile3.testcase \ + isvalidrastertile4.testcase \ + isvalidrastertile5.testcase \ + isvalidrastertile6.testcase \ + isXblob5.testcase \ + isXblob6.testcase \ + isXblob7.testcase \ + k3b-icon.png \ + km_m.testcase \ + ktorrent_grad1.jpg \ + ktorrent_sidebar.gif \ + La_folla_durante_il_Palio.jpg \ + lhr1.testcase \ + lhr2.testcase \ + lhr3.testcase \ + lhr4.testcase \ + lhr5.testcase \ + lhr6.testcase \ + linefromtext1.testcase \ + linefromtext2.testcase \ + linesfromrings1.testcase \ + linesfromrings2.testcase \ + linesfromrings3.testcase \ + linesfromrings4.testcase \ + linesfromrings5.testcase \ + linesfromrings6.testcase \ + linesfromrings7.testcase \ + link_m.testcase \ + locatemeasure10.testcase \ + locatemeasure11.testcase \ + locatemeasure12.testcase \ + locatemeasure13.testcase \ + locatemeasure14.testcase \ + locatemeasure15.testcase \ + locatemeasure16.testcase \ + locatemeasure17.testcase \ + locatemeasure18.testcase \ + locatemeasure19.testcase \ + locatemeasure1.testcase \ + locatemeasure2.testcase \ + locatemeasure3.testcase \ + locatemeasure4.testcase \ + locatemeasure5.testcase \ + locatemeasure6.testcase \ + locatemeasure7.testcase \ + locatemeasure8.testcase \ + locatemeasure9.testcase \ + makeline10.testcase \ + makeline11.testcase \ + makeline12.testcase \ + makeline13.testcase \ + makeline14.testcase \ + makeline15.testcase \ + makeline16.testcase \ + makeline17.testcase \ + makeline18.testcase \ + makeline19.testcase \ + makeline20.testcase \ + makeline21.testcase \ + makeline22.testcase \ + makeline23.testcase \ + makeline24.testcase \ + makeline25.testcase \ + makeline26.testcase \ + makeline27.testcase \ + makeline28.testcase \ + makeline29.testcase \ + makeline2.testcase \ + makeline3.testcase \ + makeline30.testcase \ + makeline31.testcase \ + makeline32.testcase \ + makeline4.testcase \ + makeline5.testcase \ + makeline6.testcase \ + makeline7.testcase \ + makeline8.testcase \ + makeline9.testcase \ + makeline.testcase \ + makepoint10.testcase \ + makepoint11.testcase \ + makepoint12.testcase \ + makepoint13.testcase \ + makepoint14.testcase \ + makepoint15.testcase \ + makepoint1.testcase \ + makepoint2.testcase \ + makepoint3.testcase \ + makepoint4.testcase \ + makepoint5.testcase \ + makepoint6.testcase \ + makepoint7.testcase \ + makepoint8.testcase \ + makepoint9.testcase \ + makepointm-null1.testcase \ + makepointm-null2.testcase \ + makepointm-null3.testcase \ + makepointm-null4.testcase \ + makepointm-null5.testcase \ + makepointm-null6.testcase \ + makepointm-null7.testcase \ + makepointm-null8.testcase \ + makepoint-null1.testcase \ + makepoint-null2.testcase \ + makepoint-null3.testcase \ + makepoint-null4.testcase \ + makepoint-null5.testcase \ + makepoint-null6.testcase \ + makepoint-null7.testcase \ + makepointzm-null10.testcase \ + makepointzm-null1.testcase \ + makepointzm-null2.testcase \ + makepointzm-null3.testcase \ + makepointzm-null4.testcase \ + makepointzm-null5.testcase \ + makepointzm-null6.testcase \ + makepointzm-null7.testcase \ + makepointzm-null8.testcase \ + makepointzm-null9.testcase \ + makepointz-null1.testcase \ + makepointz-null2.testcase \ + makepointz-null3.testcase \ + makepointz-null4.testcase \ + makepointz-null5.testcase \ + makepointz-null6.testcase \ + makepointz-null7.testcase \ + makepointz-null8.testcase \ + makepointz-null9.testcase \ + makecircle1.testcase \ + makecircle2.testcase \ + makecircle3.testcase \ + makecircle4.testcase \ + makecircle5.testcase \ + makecircle6.testcase \ + makecircle7.testcase \ + makecircle8.testcase \ + makecircle9.testcase \ + makeellipse1.testcase \ + makeellipse2.testcase \ + makeellipse3.testcase \ + makeellipse4.testcase \ + makeellipse5.testcase \ + makeellipse6.testcase \ + makeellipse7.testcase \ + makeellipse8.testcase \ + makeellipse9.testcase \ + makeellipse10.testcase \ + makeellipse11.testcase \ + makeellipse12.testcase \ + makeellipse14.testcase \ + makeellipse15.testcase \ + makeellipse16.testcase \ + makeellipse18.testcase \ + makeellipse19.testcase \ + makeellipse20.testcase \ + makearc1.testcase \ + makearc2.testcase \ + makearc3.testcase \ + makearc4.testcase \ + makearc5.testcase \ + makearc6.testcase \ + makearc7.testcase \ + makearc8.testcase \ + makearc9.testcase \ + makearc10.testcase \ + makearc11.testcase \ + makearc12.testcase \ + makearc13.testcase \ + makearc14.testcase \ + makearc16.testcase \ + makearc17.testcase \ + makearc18.testcase \ + makearc20.testcase \ + makearc21.testcase \ + makearc22.testcase \ + makeellipticarc1.testcase \ + makeellipticarc2.testcase \ + makeellipticarc3.testcase \ + makeellipticarc4.testcase \ + makeellipticarc5.testcase \ + makeellipticarc6.testcase \ + makeellipticarc7.testcase \ + makeellipticarc8.testcase \ + makeellipticarc9.testcase \ + makeellipticarc10.testcase \ + makeellipticarc11.testcase \ + makeellipticarc12.testcase \ + makeellipticarc13.testcase \ + makeellipticarc14.testcase \ + makeellipticarc15.testcase \ + makeellipticarc16.testcase \ + makeellipticarc17.testcase \ + makeellipticarc19.testcase \ + makeellipticarc20.testcase \ + makeellipticarc21.testcase \ + makeellipticarc23.testcase \ + makeellipticarc24.testcase \ + makeellipticarc25.testcase \ + makecircularsector1.testcase \ + makecircularsector2.testcase \ + makecircularsector3.testcase \ + makecircularsector4.testcase \ + makecircularsector5.testcase \ + makecircularsector6.testcase \ + makecircularsector7.testcase \ + makecircularsector8.testcase \ + makecircularsector9.testcase \ + makecircularsector10.testcase \ + makecircularsector11.testcase \ + makecircularsector12.testcase \ + makecircularsector13.testcase \ + makecircularsector14.testcase \ + makecircularsector16.testcase \ + makecircularsector17.testcase \ + makecircularsector18.testcase \ + makecircularsector20.testcase \ + makecircularsector21.testcase \ + makecircularsector22.testcase \ + makecircularstripe1.testcase \ + makecircularstripe2.testcase \ + makecircularstripe3.testcase \ + makecircularstripe4.testcase \ + makecircularstripe5.testcase \ + makecircularstripe6.testcase \ + makecircularstripe7.testcase \ + makecircularstripe8.testcase \ + makecircularstripe9.testcase \ + makecircularstripe10.testcase \ + makecircularstripe11.testcase \ + makecircularstripe12.testcase \ + makecircularstripe13.testcase \ + makecircularstripe14.testcase \ + makecircularstripe16.testcase \ + makecircularstripe17.testcase \ + makecircularstripe18.testcase \ + makecircularstripe20.testcase \ + makecircularstripe21.testcase \ + makecircularstripe22.testcase \ + makecircularstripe24.testcase \ + makecircularstripe25.testcase \ + makecircularstripe26.testcase \ + makeellipticsector1.testcase \ + makeellipticsector2.testcase \ + makeellipticsector3.testcase \ + makeellipticsector4.testcase \ + makeellipticsector5.testcase \ + makeellipticsector6.testcase \ + makeellipticsector7.testcase \ + makeellipticsector8.testcase \ + makeellipticsector9.testcase \ + makeellipticsector10.testcase \ + makeellipticsector11.testcase \ + makeellipticsector12.testcase \ + makeellipticsector13.testcase \ + makeellipticsector14.testcase \ + makeellipticsector15.testcase \ + makeellipticsector16.testcase \ + makeellipticsector17.testcase \ + makeellipticsector19.testcase \ + makeellipticsector20.testcase \ + makeellipticsector21.testcase \ + makeellipticsector23.testcase \ + makeellipticsector24.testcase \ + makeellipticsector25.testcase \ + maxm1.testcase \ + maxm2.testcase \ + maxm3.testcase \ + maxm4.testcase \ + maxm5.testcase \ + maxm6.testcase \ + maxm7.testcase \ + maxz1.testcase \ + maxz2.testcase \ + maxz3.testcase \ + maxz4.testcase \ + maxz5.testcase \ + maxz6.testcase \ + maxz7.testcase \ + mbr10.testcase \ + mbr11.testcase \ + mbr12.testcase \ + mbr13.testcase \ + mbr14.testcase \ + mbr15.testcase \ + mbr16.testcase \ + mbr17.testcase \ + mbr18.testcase \ + mbr19.testcase \ + mbr1.testcase \ + mbr20.testcase \ + mbr21.testcase \ + mbr22.testcase \ + mbr23.testcase \ + mbr24.testcase \ + mbr25.testcase \ + mbr26.testcase \ + mbr27.testcase \ + mbr28.testcase \ + mbr29.testcase \ + mbr2.testcase \ + mbr30.testcase \ + mbr31.testcase \ + mbr32.testcase \ + mbr3.testcase \ + mbr4.testcase \ + mbr5.testcase \ + mbr6.testcase \ + mbr7.testcase \ + mbr8.testcase \ + mbr9.testcase \ + mbrminmax1.testcase \ + mbrminmax2.testcase \ + mbrminmax3.testcase \ + mbrminmax4.testcase \ + mbrminmax5.testcase \ + mbrminmax6.testcase \ + mbrminmax7.testcase \ + mbrminmax8.testcase \ + m_ch.testcase \ + m_cm.testcase \ + m_dm.testcase \ + m_fath.testcase \ + m_ft.testcase \ + m_ft-text.testcase \ + mi_m.testcase \ + m_ind_ch.testcase \ + m_ind_ft.testcase \ + m_ind_yd.testcase \ + minm1.testcase \ + minm2.testcase \ + minm3.testcase \ + minm4.testcase \ + minm5.testcase \ + minm6.testcase \ + m_in.testcase \ + m_in_us.testcase \ + minz1.testcase \ + minz2.testcase \ + minz3.testcase \ + minz4.testcase \ + minz5.testcase \ + minz6.testcase \ + m_km.testcase \ + mlinefromtext1.testcase \ + mlinefromtext2.testcase \ + m_ln.testcase \ + m_mi.testcase \ + m_mm.testcase \ + mm_m.testcase \ + m_nm.testcase \ + mpointfromtext1.testcase \ + mpointfromtext2.testcase \ + mpolygonfromtext1.testcase \ + mpolygonfromtext2.testcase \ + m_us_ch.testcase \ + m_us_ft.testcase \ + m_usmi.testcase \ + m_yd.testcase \ + m_yd_us.testcase \ + ndims1.testcase \ + ndims2.testcase \ + ndims3.testcase \ + ndims4.testcase \ + ndims5.testcase \ + ndims6.testcase \ + nm_m.testcase \ + normalizelonlat10.testcase \ + normalizelonlat11.testcase \ + normalizelonlat12.testcase \ + normalizelonlat13.testcase \ + normalizelonlat14.testcase \ + normalizelonlat15.testcase \ + normalizelonlat16.testcase \ + normalizelonlat17.testcase \ + normalizelonlat18.testcase \ + normalizelonlat19.testcase \ + normalizelonlat1.testcase \ + normalizelonlat20.testcase \ + normalizelonlat21.testcase \ + normalizelonlat22.testcase \ + normalizelonlat23.testcase \ + normalizelonlat24.testcase \ + normalizelonlat25.testcase \ + normalizelonlat26.testcase \ + normalizelonlat27.testcase \ + normalizelonlat2.testcase \ + normalizelonlat3.testcase \ + normalizelonlat4.testcase \ + normalizelonlat5.testcase \ + normalizelonlat6.testcase \ + normalizelonlat7.testcase \ + normalizelonlat8.testcase \ + normalizelonlat9.testcase \ + npoints1.testcase \ + npoints2.testcase \ + npoints3.testcase \ + npoints4.testcase \ + npoints5.testcase \ + npoints6.testcase \ + nrings1.testcase \ + nrings2.testcase \ + nrings3.testcase \ + nrings4.testcase \ + nrings5.testcase \ + nrings6.testcase \ + numgeometries1.testcase \ + numgeometries2.testcase \ + numgeometries3.testcase \ + numgeometries4.testcase \ + numgeometries5.testcase \ + numgeometries6.testcase \ + NumPoints2.testcase \ + NumPoints3.testcase \ + NumPoints4.testcase \ + NumPoints5.testcase \ + NumPoints6.testcase \ + NumPoints7.testcase \ + NumPoints.testcase \ + pointfromtext1.testcase \ + pointfromtext2.testcase \ + pointn10.testcase \ + pointn11.testcase \ + pointn12.testcase \ + pointn13.testcase \ + pointn14.testcase \ + pointn15.testcase \ + pointn1.testcase \ + pointn2.testcase \ + pointn3.testcase \ + pointn4.testcase \ + pointn5.testcase \ + pointn6.testcase \ + pointn7.testcase \ + pointn8.testcase \ + pointn9.testcase \ + polygonfromtext1.testcase \ + polygonfromtext2.testcase \ + reflectcoords10.testcase \ + reflectcoords11.testcase \ + reflectcoords12.testcase \ + reflectcoords13.testcase \ + reflectcoords14.testcase \ + reflectcoords15.testcase \ + reflectcoords16.testcase \ + reflectcoords17.testcase \ + reflectcoords1.testcase \ + reflectcoords2.testcase \ + reflectcoords3.testcase \ + reflectcoords4.testcase \ + reflectcoords5.testcase \ + reflectcoords6.testcase \ + reflectcoords7.testcase \ + reflectcoords8.testcase \ + reflectcoords9.testcase \ + removepoint10.testcase \ + removepoint11.testcase \ + removepoint12.testcase \ + removepoint13.testcase \ + removepoint14.testcase \ + removepoint15.testcase \ + removepoint16.testcase \ + removepoint1.testcase \ + removepoint2.testcase \ + removepoint3.testcase \ + removepoint4.testcase \ + removepoint5.testcase \ + removepoint6.testcase \ + removepoint7.testcase \ + removepoint8.testcase \ + removepoint9.testcase \ + reverse1.testcase \ + reverse2.testcase \ + reverse3.testcase \ + reverse4.testcase \ + reverse5.testcase \ + reverse6.testcase \ + ring10.testcase \ + ring11.testcase \ + ring12.testcase \ + ring13.testcase \ + ring14.testcase \ + ring15.testcase \ + ring16.testcase \ + ring17.testcase \ + ring18.testcase \ + ring19.testcase \ + ring1.testcase \ + ring20.testcase \ + ring21.testcase \ + ring22.testcase \ + ring23.testcase \ + ring24.testcase \ + ring25.testcase \ + ring26.testcase \ + ring27.testcase \ + ring28.testcase \ + ring2.testcase \ + ring3.testcase \ + ring4.testcase \ + ring5.testcase \ + ring6.testcase \ + ring7.testcase \ + ring8.testcase \ + ring9.testcase \ + rotatecoords10.testcase \ + rotatecoords11.testcase \ + rotatecoords12.testcase \ + rotatecoords13.testcase \ + rotatecoords14.testcase \ + rotatecoords1.testcase \ + rotatecoords2.testcase \ + rotatecoords3.testcase \ + rotatecoords4.testcase \ + rotatecoords5.testcase \ + rotatecoords6.testcase \ + rotatecoords7.testcase \ + rotatecoords8.testcase \ + rotatecoords9.testcase \ + routing1.testcase \ + routing2.testcase \ + routing3.testcase \ + routing4.testcase \ + routing5.testcase \ + rtreealign1.testcase \ + rtreealign2.testcase \ + rtreealign3.testcase \ + rtreealign4.testcase \ + sandro.jpg \ + sanitizeGeometry10.testcase \ + sanitizeGeometry11.testcase \ + sanitizeGeometry12.testcase \ + sanitizeGeometry13.testcase \ + sanitizeGeometry14.testcase \ + sanitizeGeometry15.testcase \ + sanitizeGeometry16.testcase \ + sanitizeGeometry1.testcase \ + sanitizeGeometry2.testcase \ + sanitizeGeometry3.testcase \ + sanitizeGeometry4.testcase \ + sanitizeGeometry5.testcase \ + sanitizeGeometry6.testcase \ + sanitizeGeometry7.testcase \ + sanitizeGeometry8.testcase \ + sanitizeGeometry9.testcase \ + scalecoords10.testcase \ + scalecoords11.testcase \ + scalecoords12.testcase \ + scalecoords13.testcase \ + scalecoords1.testcase \ + scalecoords2.testcase \ + scalecoords3.testcase \ + scalecoords4.testcase \ + scalecoords5.testcase \ + scalecoords6.testcase \ + scalecoords7.testcase \ + scalecoords8.testcase \ + scalecoords9.testcase \ + seconds.wav \ + setpoint10.testcase \ + setpoint11.testcase \ + setpoint12.testcase \ + setpoint13.testcase \ + setpoint14.testcase \ + setpoint15.testcase \ + setpoint16.testcase \ + setpoint17.testcase \ + setpoint18.testcase \ + setpoint19.testcase \ + setpoint1.testcase \ + setpoint20.testcase \ + setpoint21.testcase \ + setpoint22.testcase \ + setpoint23.testcase \ + setpoint2.testcase \ + setpoint3.testcase \ + setpoint4.testcase \ + setpoint5.testcase \ + setpoint6.testcase \ + setpoint7.testcase \ + setpoint8.testcase \ + setpoint9.testcase \ + shiftcoords10.testcase \ + shiftcoords11.testcase \ + shiftcoords12.testcase \ + shiftcoords13.testcase \ + shiftcoords14.testcase \ + shiftcoords15.testcase \ + shiftcoords1.testcase \ + shiftcoords2.testcase \ + shiftcoords3.testcase \ + shiftcoords4.testcase \ + shiftcoords5.testcase \ + shiftcoords6.testcase \ + shiftcoords7.testcase \ + shiftcoords8.testcase \ + shiftcoords9.testcase \ + shiftlongitude10.testcase \ + shiftlongitude11.testcase \ + shiftlongitude12.testcase \ + shiftlongitude13.testcase \ + shiftlongitude14.testcase \ + shiftlongitude15.testcase \ + shiftlongitude16.testcase \ + shiftlongitude17.testcase \ + shiftlongitude18.testcase \ + shiftlongitude19.testcase \ + shiftlongitude1.testcase \ + shiftlongitude20.testcase \ + shiftlongitude21.testcase \ + shiftlongitude22.testcase \ + shiftlongitude23.testcase \ + shiftlongitude24.testcase \ + shiftlongitude25.testcase \ + shiftlongitude26.testcase \ + shiftlongitude2.testcase \ + shiftlongitude3.testcase \ + shiftlongitude4.testcase \ + shiftlongitude5.testcase \ + shiftlongitude6.testcase \ + shiftlongitude7.testcase \ + shiftlongitude8.testcase \ + shiftlongitude9.testcase \ + spatialindex.testcase \ + srid10.testcase \ + srid11.testcase \ + srid1.testcase \ + srid2.testcase \ + srid3.testcase \ + srid4.testcase \ + srid5.testcase \ + srid6.testcase \ + srid7.testcase \ + srid8.testcase \ + srid9.testcase \ + SridFromAuthCRS2.testcase \ + SridFromAuthCRS3.testcase \ + SridFromAuthCRS4.testcase \ + SridFromAuthCRS5.testcase \ + SridFromAuthCRS6.testcase \ + SridFromAuthCRS.testcase \ + startpoint1.testcase \ + startpoint2.testcase \ + startpoint3.testcase \ + st_m1.testcase \ + st_m2.testcase \ + st_m3.testcase \ + st_m4.testcase \ + st_m5.testcase \ + st_m6.testcase \ + st_m8.testcase \ + st_x1.testcase \ + st_x2.testcase \ + st_x3.testcase \ + st_x4.testcase \ + st_x5.testcase \ + st_x6.testcase \ + st_x7.testcase \ + st_x8.testcase \ + st_x9.testcase \ + st_y1.testcase \ + st_y2.testcase \ + st_y3.testcase \ + st_y4.testcase \ + st_y5.testcase \ + st_y7.testcase \ + st_y8.testcase \ + st_y9.testcase \ + st_z1.testcase \ + st_z2.testcase \ + st_z3.testcase \ + st_z4.testcase \ + st_z5.testcase \ + st_z6.testcase \ + st_z7.testcase \ + st_z8.testcase \ + st_z9.testcase \ + swapcoords10.testcase \ + swapcoords11.testcase \ + swapcoords1.testcase \ + swapcoords2.testcase \ + swapcoords3.testcase \ + swapcoords4.testcase \ + swapcoords5.testcase \ + swapcoords6.testcase \ + swapcoords7.testcase \ + swapcoords8.testcase \ + swapcoords9.testcase \ + testdb1.sqlite \ + testFDO.sqlite \ + testFGF.sqlite \ + test.webp \ + togars10.testcase \ + togars11.testcase \ + togars12.testcase \ + togars13.testcase \ + togars1.testcase \ + togars2.testcase \ + togars3.testcase \ + togars4.testcase \ + togars5.testcase \ + togars6.testcase \ + togars7.testcase \ + togars8.testcase \ + togars9.testcase \ + translate10.testcase \ + translate11.testcase \ + translate12.testcase \ + translate13.testcase \ + translate14.testcase \ + translate15.testcase \ + translate16.testcase \ + translate17.testcase \ + translate18.testcase \ + translate19.testcase \ + translate1.testcase \ + translate2.testcase \ + translate3.testcase \ + translate4.testcase \ + translate5.testcase \ + translate6.testcase \ + translate7.testcase \ + translate8.testcase \ + translate9.testcase \ + trivial.sqlite_RO \ + uncompressgeom1.testcase \ + uncompressgeom2.testcase \ + uncompressgeom3.testcase \ + unsafeTriggers1.testcase \ + us_ch_m.testcase \ + us_ft_m.testcase \ + us_in_m.testcase \ + us_mi_m.testcase \ + us_yd_m.testcase \ + wkb10.testcase \ + wkb11.testcase \ + wkb12.testcase \ + wkb13.testcase \ + wkb14.testcase \ + wkb15.testcase \ + wkb16.testcase \ + wkb17.testcase \ + wkb18.testcase \ + wkb19.testcase \ + wkb1.testcase \ + wkb20.testcase \ + wkb21.testcase \ + wkb22.testcase \ + wkb23.testcase \ + wkb24.testcase \ + wkb25.testcase \ + wkb26.testcase \ + wkb27.testcase \ + wkb28.testcase \ + wkb29.testcase \ + wkb2.testcase \ + wkb30.testcase \ + wkb31.testcase \ + wkb32.testcase \ + wkb33.testcase \ + wkb34.testcase \ + wkb35.testcase \ + wkb36.testcase \ + wkb3.testcase \ + wkb4.testcase \ + wkb5.testcase \ + wkb6.testcase \ + wkb7.testcase \ + wkb8.testcase \ + wkb9.testcase \ + wkbtosql1.testcase \ + wkbtosql2.testcase \ + wkbtosql3.testcase \ + wkttosql1.testcase \ + wkttosql2.testcase \ + wkttosql3.testcase \ + yd_m.testcase \ + getlayerextent1.testcase \ + getlayerextent2.testcase \ + getlayerextent3.testcase \ + getlayerextent4.testcase \ + getlayerextent5.testcase \ + getlayerextent6.testcase \ + getlayerextent7.testcase \ + getlayerextent8.testcase \ + getlayerextent9.testcase \ + getlayerextent10.testcase \ + getlayerextent11.testcase \ + getlayerextent12.testcase \ + getlayerextent13.testcase \ + getlayerextent14.testcase \ + invalidatestats1.testcase \ + invalidatestats2.testcase \ + invalidatestats3.testcase \ + invalidatestats4.testcase \ + invalidatestats5.testcase \ + invalidatestats6.testcase \ + invalidatestats7.testcase \ + invalidatestats8.testcase \ + invalidatestats9.testcase \ + invalidatestats10.testcase \ + updatestats1.testcase \ + updatestats2.testcase \ + updatestats3.testcase \ + updatestats4.testcase \ + updatestats5.testcase \ + updatestats6.testcase \ + updatestats7.testcase \ + updatestats8.testcase \ + updatestats9.testcase \ + updatestats10.testcase \ + makepolygon1.testcase \ + makepolygon2.testcase \ + makepolygon3.testcase \ + makepolygon4.testcase \ + makepolygon5.testcase \ + makepolygon7.testcase \ + makepolygon8.testcase \ + makepolygon9.testcase \ + makepolygon10.testcase \ + makepolygon11.testcase \ + makepolygon12.testcase \ + makepolygon13.testcase \ + makepolygon14.testcase \ + makepolygon15.testcase \ + makepolygon16.testcase \ + makepolygon17.testcase \ + makepolygon18.testcase \ + makepolygon19.testcase \ + makepolygon20.testcase \ + makepolygon21.testcase \ + makepolygon22.testcase \ + makepolygon23.testcase \ + makepolygon24.testcase \ + makepolygon25.testcase \ + makepolygon26.testcase \ + todms1.testcase \ + todms2.testcase \ + todms3.testcase \ + todms4.testcase \ + todms5.testcase \ + todms6.testcase \ + todms7.testcase \ + todms8.testcase \ + todms9.testcase \ + todms10.testcase \ + todms11.testcase \ + todms12.testcase \ + todms13.testcase \ + fromdms1.testcase \ + fromdms2.testcase \ + fromdms3.testcase \ + fromdms4.testcase \ + fromdms5.testcase \ + fromdms6.testcase \ + fromdms7.testcase \ + fromdms8.testcase \ + fromdms9.testcase + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/sql_stmt_tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/sql_stmt_tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/test/sql_stmt_tests/NumPoints.testcase b/src/spatialite/test/sql_stmt_tests/NumPoints.testcase new file mode 100644 index 0000000..6fcec7f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/NumPoints.testcase @@ -0,0 +1,7 @@ +NumPoints - bad blob (error) +:memory: #use in-memory database +SELECT NumPoints(zeroblob(12)); +1 # rows (not including the header row) +1 # column +NumPoints(zeroblob(12)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/NumPoints2.testcase b/src/spatialite/test/sql_stmt_tests/NumPoints2.testcase new file mode 100644 index 0000000..c3c30df --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/NumPoints2.testcase @@ -0,0 +1,7 @@ +NumPoints - Simple line +:memory: #use in-memory database +SELECT NumPoints(GeomFromText("LINESTRING(0 0, 1 2)")); +1 # rows (not including the header row) +1 # column +NumPoints(GeomFromText("LINESTRING(0 0, 1 2)")) +2 diff --git a/src/spatialite/test/sql_stmt_tests/NumPoints3.testcase b/src/spatialite/test/sql_stmt_tests/NumPoints3.testcase new file mode 100644 index 0000000..487ab10 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/NumPoints3.testcase @@ -0,0 +1,7 @@ +NumPoints - Simple line Z +:memory: #use in-memory database +SELECT NumPoints(GeomFromText("LINESTRINGZ(0 0 0, 1 2 1)")); +1 # rows (not including the header row) +1 # column +NumPoints(GeomFromText("LINESTRINGZ(0 0 0, 1 2 1)")) +2 diff --git a/src/spatialite/test/sql_stmt_tests/NumPoints4.testcase b/src/spatialite/test/sql_stmt_tests/NumPoints4.testcase new file mode 100644 index 0000000..076b536 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/NumPoints4.testcase @@ -0,0 +1,7 @@ +NumPoints - Simple line M +:memory: #use in-memory database +SELECT NumPoints(GeomFromText("LINESTRINGM(0 0 0, 1 2 1)")); +1 # rows (not including the header row) +1 # column +NumPoints(GeomFromText("LINESTRINGM(0 0 0, 1 2 1)")) +2 diff --git a/src/spatialite/test/sql_stmt_tests/NumPoints5.testcase b/src/spatialite/test/sql_stmt_tests/NumPoints5.testcase new file mode 100644 index 0000000..955a824 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/NumPoints5.testcase @@ -0,0 +1,7 @@ +NumPoints - Simple line ZM +:memory: #use in-memory database +SELECT NumPoints(GeomFromText("LINESTRINGZM(0 0 0 1, 1 2 1 2)")); +1 # rows (not including the header row) +1 # column +NumPoints(GeomFromText("LINESTRINGZM(0 0 0 1, 1 2 1 2)")) +2 diff --git a/src/spatialite/test/sql_stmt_tests/NumPoints6.testcase b/src/spatialite/test/sql_stmt_tests/NumPoints6.testcase new file mode 100644 index 0000000..5c0b337 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/NumPoints6.testcase @@ -0,0 +1,7 @@ +NumPoints - text (error) +:memory: #use in-memory database +SELECT NumPoints("hello"); +1 # rows (not including the header row) +1 # column +NumPoints("hello") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/NumPoints7.testcase b/src/spatialite/test/sql_stmt_tests/NumPoints7.testcase new file mode 100644 index 0000000..cc2b0a3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/NumPoints7.testcase @@ -0,0 +1,7 @@ +NumPoints - Simple line Z +:memory: #use in-memory database +SELECT NumPoints(GeomFromText("POINT(0 0)")); +1 # rows (not including the header row) +1 # column +NumPoints(GeomFromText("POINT(0 0)")) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS.testcase b/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS.testcase new file mode 100644 index 0000000..9d7afc6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS.testcase @@ -0,0 +1,7 @@ +SridFromAuthCRS +:memory: #use in-memory database +SELECT SridFromAuthCRS("EPSG", 4326) +1 # rows (not including the header row) +1 # columns +SridFromAuthCRS("EPSG", 4326) +4326 diff --git a/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS2.testcase b/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS2.testcase new file mode 100644 index 0000000..bbb49e5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS2.testcase @@ -0,0 +1,7 @@ +SridFromAuthCRS - non-integer second arg +:memory: #use in-memory database +SELECT SridFromAuthCRS("EPSG", "WGS084") +1 # rows (not including the header row) +1 # columns +SridFromAuthCRS("EPSG", "WGS084") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS3.testcase b/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS3.testcase new file mode 100644 index 0000000..9632faa --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS3.testcase @@ -0,0 +1,7 @@ +SridFromAuthCRS - non-test first arg +:memory: #use in-memory database +SELECT SridFromAuthCRS(384, 4326) +1 # rows (not including the header row) +1 # columns +SridFromAuthCRS(384, 4326) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS4.testcase b/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS4.testcase new file mode 100644 index 0000000..55faca7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS4.testcase @@ -0,0 +1,7 @@ +SridFromAuthCRS - gfoss.it +:memory: #use in-memory database +SELECT SridFromAuthCRS('gfoss.it', 1) +1 # rows (not including the header row) +1 # columns +SridFromAuthCRS('gfoss.it', 1) +40000 diff --git a/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS5.testcase b/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS5.testcase new file mode 100644 index 0000000..ed9b378 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS5.testcase @@ -0,0 +1,7 @@ +SridFromAuthCRS - bad auth +:memory: #use in-memory database +SELECT SridFromAuthCRS('no such authority', 1) +1 # rows (not including the header row) +1 # columns +SridFromAuthCRS('no such authority', 1) +-1 diff --git a/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS6.testcase b/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS6.testcase new file mode 100644 index 0000000..7b6400a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/SridFromAuthCRS6.testcase @@ -0,0 +1,7 @@ +SridFromAuthCRS - no such id +:memory: #use in-memory database +SELECT SridFromAuthCRS('gfoss.it', 9999999) +1 # rows (not including the header row) +1 # columns +SridFromAuthCRS('gfoss.it', 9999999) +-1 diff --git a/src/spatialite/test/sql_stmt_tests/addpoint1.testcase b/src/spatialite/test/sql_stmt_tests/addpoint1.testcase new file mode 100644 index 0000000..03b2c61 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint1.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - NULL line +:memory: #use in-memory database +SELECT ST_AddPoint(NULL, NULL) +1 # rows (not including the header row) +1 # columns +ST_AddPoint(NULL, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint10.testcase b/src/spatialite/test/sql_stmt_tests/addpoint10.testcase new file mode 100644 index 0000000..4f33cdc --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint10.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - BLOB Point +:memory: #use in-memory database +SELECT ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), zeroblob(4)) +1 # rows (not including the header row) +1 # columns +ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint11.testcase b/src/spatialite/test/sql_stmt_tests/addpoint11.testcase new file mode 100644 index 0000000..b572190 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint11.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - NULL index +:memory: #use in-memory database +SELECT ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), NULL) +1 # rows (not including the header row) +1 # columns +ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint12.testcase b/src/spatialite/test/sql_stmt_tests/addpoint12.testcase new file mode 100644 index 0000000..57f1c62 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint12.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - DOUBLE index +:memory: #use in-memory database +SELECT ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), 1.1) +1 # rows (not including the header row) +1 # columns +ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), 1.1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint13.testcase b/src/spatialite/test/sql_stmt_tests/addpoint13.testcase new file mode 100644 index 0000000..08bb431 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint13.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - TEXT index +:memory: #use in-memory database +SELECT ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), 'alpha') +1 # rows (not including the header row) +1 # columns +ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint14.testcase b/src/spatialite/test/sql_stmt_tests/addpoint14.testcase new file mode 100644 index 0000000..194bb2f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint14.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - BLOB index +:memory: #use in-memory database +SELECT ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), zeroblob(4)) +1 # rows (not including the header row) +1 # columns +ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint15.testcase b/src/spatialite/test/sql_stmt_tests/addpoint15.testcase new file mode 100644 index 0000000..0883fcc --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint15.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - invalid index +:memory: #use in-memory database +SELECT ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), 2) +1 # rows (not including the header row) +1 # columns +ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), 2) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint16.testcase b/src/spatialite/test/sql_stmt_tests/addpoint16.testcase new file mode 100644 index 0000000..ed0a9ca --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint16.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - not a line +:memory: #use in-memory database +SELECT ST_AddPoint(GeomFromText('MULTIPOINT(0 0, 1 0)'), MakePoint(1, 1), 1) +1 # rows (not including the header row) +1 # columns +ST_AddPoint(GeomFromText('MULTIPOINT(0 0, 1 0)'), MakePoint(1, 1), 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint17.testcase b/src/spatialite/test/sql_stmt_tests/addpoint17.testcase new file mode 100644 index 0000000..aa6bcca --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint17.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - not a line +:memory: #use in-memory database +SELECT ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), 2) +1 # rows (not including the header row) +1 # columns +ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), 2) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint18.testcase b/src/spatialite/test/sql_stmt_tests/addpoint18.testcase new file mode 100644 index 0000000..277e003 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint18.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - not a point +:memory: #use in-memory database +SELECT ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), GeomFromText('POLYGON((10 10, 11 10, 11 11, 10 11, 10 10))'), 1) +1 # rows (not including the header row) +1 # columns +ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), GeomFromText('POLYGON((10 10, 11 10, 11 11, 10 11, 10 10))'), 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint19.testcase b/src/spatialite/test/sql_stmt_tests/addpoint19.testcase new file mode 100644 index 0000000..e1a4d2e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint19.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - append (no index) +:memory: #use in-memory database +SELECT AsText(AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1))) +1 # rows (not including the header row) +1 # columns +AsText(AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1))) +LINESTRING(0 0, 1 0, 1 1) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint2.testcase b/src/spatialite/test/sql_stmt_tests/addpoint2.testcase new file mode 100644 index 0000000..5801c15 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint2.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - INTEGER line +:memory: #use in-memory database +SELECT ST_AddPoint(1, NULL) +1 # rows (not including the header row) +1 # columns +ST_AddPoint(1, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint20.testcase b/src/spatialite/test/sql_stmt_tests/addpoint20.testcase new file mode 100644 index 0000000..b36d829 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint20.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - append (negative index) +:memory: #use in-memory database +SELECT AsText(AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), -1)) +1 # rows (not including the header row) +1 # columns +AsText(AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), -1)) +LINESTRING(0 0, 1 0, 1 1) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint21.testcase b/src/spatialite/test/sql_stmt_tests/addpoint21.testcase new file mode 100644 index 0000000..9de88a2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint21.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - insert into the middle +:memory: #use in-memory database +SELECT AsText(AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), 1)) +1 # rows (not including the header row) +1 # columns +AsText(AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), 1)) +LINESTRING(0 0, 1 1, 1 0) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint22.testcase b/src/spatialite/test/sql_stmt_tests/addpoint22.testcase new file mode 100644 index 0000000..c90e19d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint22.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - insert before start +:memory: #use in-memory database +SELECT AsText(AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), 0)) +1 # rows (not including the header row) +1 # columns +AsText(AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), MakePoint(1, 1), 0)) +LINESTRING(1 1, 0 0, 1 0) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint23.testcase b/src/spatialite/test/sql_stmt_tests/addpoint23.testcase new file mode 100644 index 0000000..d1e0107 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint23.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - append (no index) Z +:memory: #use in-memory database +SELECT AsText(AddPoint(GeomFromText('LINESTRINGZ(0 0 1, 1 0 2)'), MakePoint(1, 1))) +1 # rows (not including the header row) +1 # columns +AsText(AddPoint(GeomFromText('LINESTRINGZ(0 0 1, 1 0 2)'), MakePoint(1, 1))) +LINESTRING Z(0 0 1, 1 0 2, 1 1 0) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint24.testcase b/src/spatialite/test/sql_stmt_tests/addpoint24.testcase new file mode 100644 index 0000000..0d57033 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint24.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - append (no index) M +:memory: #use in-memory database +SELECT AsText(AddPoint(GeomFromText('LINESTRINGM(0 0 1, 1 0 2)'), MakePoint(1, 1))) +1 # rows (not including the header row) +1 # columns +AsText(AddPoint(GeomFromText('LINESTRINGM(0 0 1, 1 0 2)'), MakePoint(1, 1))) +LINESTRING M(0 0 1, 1 0 2, 1 1 0) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint25.testcase b/src/spatialite/test/sql_stmt_tests/addpoint25.testcase new file mode 100644 index 0000000..12a80e7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint25.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - append (no index) ZM +:memory: #use in-memory database +SELECT AsText(AddPoint(GeomFromText('LINESTRINGZM(0 0 1 3, 1 0 2 3)'), MakePoint(1, 1))) +1 # rows (not including the header row) +1 # columns +AsText(AddPoint(GeomFromText('LINESTRINGZM(0 0 1 3, 1 0 2 3)'), MakePoint(1, 1))) +LINESTRING ZM(0 0 1 3, 1 0 2 3, 1 1 0 0) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint26.testcase b/src/spatialite/test/sql_stmt_tests/addpoint26.testcase new file mode 100644 index 0000000..8b83d65 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint26.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - insert into the middle Z +:memory: #use in-memory database +SELECT AsText(AddPoint(GeomFromText('LINESTRINGZ(0 0 1, 1 0 2)'), MakePoint(1, 1), 1)) +1 # rows (not including the header row) +1 # columns +AsText(AddPoint(GeomFromText('LINESTRINGZ(0 0 1, 1 0 2)'), MakePoint(1, 1), 1)) +LINESTRING Z(0 0 1, 1 1 0, 1 0 2) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint27.testcase b/src/spatialite/test/sql_stmt_tests/addpoint27.testcase new file mode 100644 index 0000000..a71da56 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint27.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - insert into the middle M +:memory: #use in-memory database +SELECT AsText(AddPoint(GeomFromText('LINESTRINGM(0 0 1, 1 0 2)'), MakePoint(1, 1), 1)) +1 # rows (not including the header row) +1 # columns +AsText(AddPoint(GeomFromText('LINESTRINGM(0 0 1, 1 0 2)'), MakePoint(1, 1), 1)) +LINESTRING M(0 0 1, 1 1 0, 1 0 2) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint28.testcase b/src/spatialite/test/sql_stmt_tests/addpoint28.testcase new file mode 100644 index 0000000..a301e37 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint28.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - insert into the middle ZM +:memory: #use in-memory database +SELECT AsText(AddPoint(GeomFromText('LINESTRINGZM(0 0 1 3, 1 0 2 3)'), MakePoint(1, 1), 1)) +1 # rows (not including the header row) +1 # columns +AsText(AddPoint(GeomFromText('LINESTRINGZM(0 0 1 3, 1 0 2 3)'), MakePoint(1, 1), 1)) +LINESTRING ZM(0 0 1 3, 1 1 0 0, 1 0 2 3) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint3.testcase b/src/spatialite/test/sql_stmt_tests/addpoint3.testcase new file mode 100644 index 0000000..9a98a0c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint3.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - DOUBLE line +:memory: #use in-memory database +SELECT ST_AddPoint(1.1, NULL) +1 # rows (not including the header row) +1 # columns +ST_AddPoint(1.1, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint4.testcase b/src/spatialite/test/sql_stmt_tests/addpoint4.testcase new file mode 100644 index 0000000..1785255 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint4.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - TEXT line +:memory: #use in-memory database +SELECT ST_AddPoint('alpha', NULL) +1 # rows (not including the header row) +1 # columns +ST_AddPoint('alpha', NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint5.testcase b/src/spatialite/test/sql_stmt_tests/addpoint5.testcase new file mode 100644 index 0000000..b13f987 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint5.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - BLOB line +:memory: #use in-memory database +SELECT ST_AddPoint(zeroblob(4), NULL) +1 # rows (not including the header row) +1 # columns +ST_AddPoint(zeroblob(4), NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint6.testcase b/src/spatialite/test/sql_stmt_tests/addpoint6.testcase new file mode 100644 index 0000000..6694396 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint6.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - NULL Point +:memory: #use in-memory database +SELECT ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), NULL) +1 # rows (not including the header row) +1 # columns +ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint7.testcase b/src/spatialite/test/sql_stmt_tests/addpoint7.testcase new file mode 100644 index 0000000..3db6aae --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint7.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - INTEGER Point +:memory: #use in-memory database +SELECT ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), 1) +1 # rows (not including the header row) +1 # columns +ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint8.testcase b/src/spatialite/test/sql_stmt_tests/addpoint8.testcase new file mode 100644 index 0000000..0d8d3a5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint8.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - DOUBLE Point +:memory: #use in-memory database +SELECT ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), 1.5) +1 # rows (not including the header row) +1 # columns +ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), 1.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/addpoint9.testcase b/src/spatialite/test/sql_stmt_tests/addpoint9.testcase new file mode 100644 index 0000000..ce0d394 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/addpoint9.testcase @@ -0,0 +1,7 @@ +ST_AddPoint() - TEXT Point +:memory: #use in-memory database +SELECT ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), 'alpha') +1 # rows (not including the header row) +1 # columns +ST_AddPoint(GeomFromText('LINESTRING(0 0, 1 0)'), 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asbinary1.testcase b/src/spatialite/test/sql_stmt_tests/asbinary1.testcase new file mode 100644 index 0000000..cc5084d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary1.testcase @@ -0,0 +1,7 @@ +asbinary +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("Point(1 2)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("Point(1 2)", 4326))) +0101000000000000000000F03F0000000000000040 diff --git a/src/spatialite/test/sql_stmt_tests/asbinary10.testcase b/src/spatialite/test/sql_stmt_tests/asbinary10.testcase new file mode 100644 index 0000000..91d76a1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary10.testcase @@ -0,0 +1,7 @@ +asbinary - POINTZM +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("POINTZM(1 2 3 0)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("POINTZM(1 2 3 0)", 4326))) +01B90B0000000000000000F03F000000000000004000000000000008400000000000000000 diff --git a/src/spatialite/test/sql_stmt_tests/asbinary11.testcase b/src/spatialite/test/sql_stmt_tests/asbinary11.testcase new file mode 100644 index 0000000..b70cc5e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary11.testcase @@ -0,0 +1,7 @@ +asbinary - MULTILINESTRING +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTILINESTRING((0 0, 3 0,3 0, 3 3), (0 0, 0 3))", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTILINESTRING((0 0, 3 0,3 0, 3 3), (0 0, 0 3))", 4326))) +010500000002000000010200000004000000000000000000000000000000000000000000000000000840000000000000000000000000000008400000000000000000000000000000084000000000000008400102000000020000000000000000000000000000000000000000000000000000000000000000000840 diff --git a/src/spatialite/test/sql_stmt_tests/asbinary12.testcase b/src/spatialite/test/sql_stmt_tests/asbinary12.testcase new file mode 100644 index 0000000..f8cec85 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary12.testcase @@ -0,0 +1,9 @@ +asbinary - MULTILINESTRINGZ +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTILINESTRINGZ((0 0 0, 3 0 1,3 0 2, 3 3 3), (0 0 1, 0 3 2))", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTILINESTRINGZ((0 0 0, 3 0 1,3 0 2, 3 3 3), (0 0 1, 0 3 2))", 4326))) +01ED0300000200000001EA0300000400000000000000000000000000000000000000000000000000000000000000000008400000000000000000000000000000F03F00000000000008400000000000000000000000000000004000000000000008400000000000000840000000000000084001EA0300000200000000000000000000000000000000000000000000000000F03F000000000000000000000000000008400000000000000040 + + diff --git a/src/spatialite/test/sql_stmt_tests/asbinary13.testcase b/src/spatialite/test/sql_stmt_tests/asbinary13.testcase new file mode 100644 index 0000000..07cddce --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary13.testcase @@ -0,0 +1,9 @@ +asbinary - MULTILINESTRINGM +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTILINESTRINGM((0 0 0, 3 0 1,3 0 2, 3 3 3), (0 0 1, 0 3 2))", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTILINESTRINGM((0 0 0, 3 0 1,3 0 2, 3 3 3), (0 0 1, 0 3 2))", 4326))) +01D50700000200000001D20700000400000000000000000000000000000000000000000000000000000000000000000008400000000000000000000000000000F03F00000000000008400000000000000000000000000000004000000000000008400000000000000840000000000000084001D20700000200000000000000000000000000000000000000000000000000F03F000000000000000000000000000008400000000000000040 + + diff --git a/src/spatialite/test/sql_stmt_tests/asbinary14.testcase b/src/spatialite/test/sql_stmt_tests/asbinary14.testcase new file mode 100644 index 0000000..a46c480 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary14.testcase @@ -0,0 +1,9 @@ +asbinary - MULTILINESTRINGZM +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTILINESTRINGZM((0 0 0 1, 3 0 1 1,3 0 2 1, 3 3 3 1), (0 0 1 2, 0 3 2 2))", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTILINESTRINGZM((0 0 0 1, 3 0 1 1,3 0 2 1, 3 3 3 1), (0 0 1 2, 0 3 2 2))", 4326))) +01BD0B00000200000001BA0B000004000000000000000000000000000000000000000000000000000000000000000000F03F00000000000008400000000000000000000000000000F03F000000000000F03F000000000000084000000000000000000000000000000040000000000000F03F000000000000084000000000000008400000000000000840000000000000F03F01BA0B00000200000000000000000000000000000000000000000000000000F03F00000000000000400000000000000000000000000000084000000000000000400000000000000040 + + diff --git a/src/spatialite/test/sql_stmt_tests/asbinary15.testcase b/src/spatialite/test/sql_stmt_tests/asbinary15.testcase new file mode 100644 index 0000000..d6697b0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary15.testcase @@ -0,0 +1,7 @@ +asbinary - bad blob - long +:memory: #use in-memory database +SELECT AsBinary(zeroblob(50)) +1 # rows (not including the header row) +1 # columns +AsBinary(zeroblob(50)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asbinary16.testcase b/src/spatialite/test/sql_stmt_tests/asbinary16.testcase new file mode 100644 index 0000000..d338b97 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary16.testcase @@ -0,0 +1,7 @@ +asbinary - POLYGON +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("POLYGON((0 0, 3 0,3 3, 0 3,0 0), (1 1, 1 2, 2 2, 2 1, 1 1))", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("POLYGON((0 0, 3 0,3 3, 0 3,0 0), (1 1, 1 2, 2 2, 2 1, 1 1))", 4326))) +01030000000200000005000000000000000000000000000000000000000000000000000840000000000000000000000000000008400000000000000840000000000000000000000000000008400000000000000000000000000000000005000000000000000000F03F000000000000F03F000000000000F03F0000000000000040000000000000004000000000000000400000000000000040000000000000F03F000000000000F03F000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/asbinary17.testcase b/src/spatialite/test/sql_stmt_tests/asbinary17.testcase new file mode 100644 index 0000000..94b4719 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary17.testcase @@ -0,0 +1,7 @@ +asbinary - POLYGONZM +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("POLYGONZM((0 0 0 0, 3 0 0 0,3 3 0 0, 0 3 0 0,0 0 0 0), (1 1 1 1, 1 2 1 1, 2 2 1 1, 2 1 1 1, 1 1 1 1))", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("POLYGONZM((0 0 0 0, 3 0 0 0,3 3 0 0, 0 3 0 0,0 0 0 0), (1 1 1 1, 1 2 1 1, 2 2 1 1, 2 1 1 1, 1 1 1 1))", 4326))) +01BB0B000002000000050000000000000000000000000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000008400000000000000840000000000000000000000000000000000000000000000000000000000000084000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005000000000000000000F03F000000000000F03F000000000000F03F000000000000F03F000000000000F03F0000000000000040000000000000F03F000000000000F03F00000000000000400000000000000040000000000000F03F000000000000F03F0000000000000040000000000000F03F000000000000F03F000000000000F03F000000000000F03F000000000000F03F000000000000F03F000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/asbinary2.testcase b/src/spatialite/test/sql_stmt_tests/asbinary2.testcase new file mode 100644 index 0000000..1417ed9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary2.testcase @@ -0,0 +1,7 @@ +asbinary - bad blob +:memory: #use in-memory database +SELECT AsBinary(zeroblob(20)) +1 # rows (not including the header row) +1 # columns +AsBinary(zeroblob(20)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asbinary3.testcase b/src/spatialite/test/sql_stmt_tests/asbinary3.testcase new file mode 100644 index 0000000..83460c9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary3.testcase @@ -0,0 +1,7 @@ +asbinary - text +:memory: #use in-memory database +SELECT AsBinary("hello") +1 # rows (not including the header row) +1 # columns +AsBinary("hello") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asbinary4.testcase b/src/spatialite/test/sql_stmt_tests/asbinary4.testcase new file mode 100644 index 0000000..6250019 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary4.testcase @@ -0,0 +1,7 @@ +asbinary - multipoint +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MultiPoint(1 2,2 4)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MultiPoint(1 2,2 4)", 4326))) +0104000000020000000101000000000000000000F03F0000000000000040010100000000000000000000400000000000001040 diff --git a/src/spatialite/test/sql_stmt_tests/asbinary5.testcase b/src/spatialite/test/sql_stmt_tests/asbinary5.testcase new file mode 100644 index 0000000..f3fd510 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary5.testcase @@ -0,0 +1,7 @@ +asbinary - multipointz +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MultiPointZ(1 2 3,2 4 4)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MultiPointZ(1 2 3,2 4 4)", 4326))) +01EC0300000200000001E9030000000000000000F03F0000000000000040000000000000084001E9030000000000000000004000000000000010400000000000001040 diff --git a/src/spatialite/test/sql_stmt_tests/asbinary6.testcase b/src/spatialite/test/sql_stmt_tests/asbinary6.testcase new file mode 100644 index 0000000..6a5dae0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary6.testcase @@ -0,0 +1,7 @@ +asbinary - multipointm +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MultiPointM(1 2 3,2 4 4)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MultiPointM(1 2 3,2 4 4)", 4326))) +01D40700000200000001D1070000000000000000F03F0000000000000040000000000000084001D1070000000000000000004000000000000010400000000000001040 diff --git a/src/spatialite/test/sql_stmt_tests/asbinary7.testcase b/src/spatialite/test/sql_stmt_tests/asbinary7.testcase new file mode 100644 index 0000000..1aae483 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary7.testcase @@ -0,0 +1,7 @@ +asbinary - multipointzm +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MultiPointZM(1 2 3 0,2 4 4 0)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MultiPointZM(1 2 3 0,2 4 4 0)", 4326))) +01BC0B00000200000001B90B0000000000000000F03F00000000000000400000000000000840000000000000000001B90B00000000000000000040000000000000104000000000000010400000000000000000 diff --git a/src/spatialite/test/sql_stmt_tests/asbinary8.testcase b/src/spatialite/test/sql_stmt_tests/asbinary8.testcase new file mode 100644 index 0000000..63aff3a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary8.testcase @@ -0,0 +1,7 @@ +asbinary - POINTM +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("POINTM(1 2 3)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("POINTM(1 2 3)", 4326))) +01D1070000000000000000F03F00000000000000400000000000000840 diff --git a/src/spatialite/test/sql_stmt_tests/asbinary9.testcase b/src/spatialite/test/sql_stmt_tests/asbinary9.testcase new file mode 100644 index 0000000..dc0f28f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asbinary9.testcase @@ -0,0 +1,7 @@ +asbinary - POINTZ +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("POINTZ(1 2 3)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("POINTZ(1 2 3)", 4326))) +01E9030000000000000000F03F00000000000000400000000000000840 diff --git a/src/spatialite/test/sql_stmt_tests/asewkb1.testcase b/src/spatialite/test/sql_stmt_tests/asewkb1.testcase new file mode 100644 index 0000000..b2126bb --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb1.testcase @@ -0,0 +1,10 @@ +asewkb - POINT +:memory: #use in-memory database +SELECT Hex(AsEWKB(GeomFromText("POINT(1 3)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsEWKB(GeomFromText("POINT(1 3)", 4326))) +3031303130303030323045363130303030303030303030303030303030304630334630303030303030303030303030383430 + + + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb10.testcase b/src/spatialite/test/sql_stmt_tests/asewkb10.testcase new file mode 100644 index 0000000..948e242 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb10.testcase @@ -0,0 +1,9 @@ +asewkb - LINESTRINGZM +:memory: #use in-memory database +SELECT Hex(AsEWKB(GeomFromText("LINESTRINGZM(1 3 2 0,1 0 2 0)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsEWKB(GeomFromText("LINESTRINGZM(1 3 2 0,1 0 2 0)", 4326))) +30313032303030304530453631303030303030323030303030303030303030303030303030304630334630303030303030303030303030383430303030303030303030303030303034303030303030303030303030303030303030303030303030303030303046303346303030303030303030303030303030303030303030303030303030303030343030303030303030303030303030303030 + + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb11.testcase b/src/spatialite/test/sql_stmt_tests/asewkb11.testcase new file mode 100644 index 0000000..3c4b376 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb11.testcase @@ -0,0 +1,9 @@ +asewkb - MULTILINESTRING +:memory: #use in-memory database +SELECT Hex(AsEWKB(GeomFromText("MULTILINESTRING((1 3,2 0,1 0,2 0),(2 1, 3 4, 9 8, -30 -3.2))", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsEWKB(GeomFromText("MULTILINESTRING((1 3,2 0,1 0,2 0),(2 1, 3 4, 9 8, -30 -3.2))", 4326))) +303130353030303032304536313030303030303230303030303030313032303030303030303430303030303030303030303030303030303046303346303030303030303030303030303834303030303030303030303030303030343030303030303030303030303030303030303030303030303030303030463033463030303030303030303030303030303030303030303030303030303030303430303030303030303030303030303030303031303230303030303030343030303030303030303030303030303030303030343030303030303030303030303046303346303030303030303030303030303834303030303030303030303030303130343030303030303030303030303032323430303030303030303030303030323034303030303030303030303030303345433039413939393939393939393930394330 + + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb12.testcase b/src/spatialite/test/sql_stmt_tests/asewkb12.testcase new file mode 100644 index 0000000..65c779f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb12.testcase @@ -0,0 +1,9 @@ +asewkb - POLYGON +:memory: #use in-memory database +SELECT Hex(AsEWKB(GeomFromText("POLYGON((0 0,10 0,10 10,0 10,0 0),(1 1,2 2, 2 1, 1 1))", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsEWKB(GeomFromText("POLYGON((0 0,10 0,10 10,0 10,0 0),(1 1,2 2, 2 1, 1 1))", 4326))) +303130333030303032304536313030303030303230303030303030353030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030323434303030303030303030303030303030303030303030303030303030303032343430303030303030303030303030323434303030303030303030303030303030303030303030303030303030303032343430303030303030303030303030303030303030303030303030303030303030303030343030303030303030303030303030303030304630334630303030303030303030303046303346303030303030303030303030303034303030303030303030303030303030343030303030303030303030303030303430303030303030303030303030463033463030303030303030303030304630334630303030303030303030303046303346 + + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb13.testcase b/src/spatialite/test/sql_stmt_tests/asewkb13.testcase new file mode 100644 index 0000000..217ede7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb13.testcase @@ -0,0 +1,9 @@ +asewkb - POLYGONZ +:memory: #use in-memory database +SELECT Hex(AsEWKB(GeomFromText("POLYGONZ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(1 1 0,2 2 0, 2 1 0, 1 1 0))", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsEWKB(GeomFromText("POLYGONZ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(1 1 0,2 2 0, 2 1 0, 1 1 0))", 4326))) +303130333030303041304536313030303030303230303030303030353030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303234343030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303234343030303030303030303030303032343430303030303030303030303030303030303030303030303030303030303030303030303030303030303030303032343430303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303034303030303030303030303030303030303030463033463030303030303030303030304630334630303030303030303030303030303030303030303030303030303030303034303030303030303030303030303030343030303030303030303030303030303030303030303030303030303030303034303030303030303030303030304630334630303030303030303030303030303030303030303030303030303030463033463030303030303030303030304630334630303030303030303030303030303030 + + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb14.testcase b/src/spatialite/test/sql_stmt_tests/asewkb14.testcase new file mode 100644 index 0000000..c1153cc --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb14.testcase @@ -0,0 +1,9 @@ +asewkb - POLYGONM +:memory: #use in-memory database +SELECT Hex(AsEWKB(GeomFromText("POLYGONM((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(1 1 0,2 2 0, 2 1 0, 1 1 0))", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsEWKB(GeomFromText("POLYGONM((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(1 1 0,2 2 0, 2 1 0, 1 1 0))", 4326))) +303130333030303036304536313030303030303230303030303030353030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303234343030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303234343030303030303030303030303032343430303030303030303030303030303030303030303030303030303030303030303030303030303030303030303032343430303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303034303030303030303030303030303030303030463033463030303030303030303030304630334630303030303030303030303030303030303030303030303030303030303034303030303030303030303030303030343030303030303030303030303030303030303030303030303030303030303034303030303030303030303030304630334630303030303030303030303030303030303030303030303030303030463033463030303030303030303030304630334630303030303030303030303030303030 + + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb15.testcase b/src/spatialite/test/sql_stmt_tests/asewkb15.testcase new file mode 100644 index 0000000..6d03007 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb15.testcase @@ -0,0 +1,9 @@ +asewkb - MULTIPOINT, 1 point +:memory: #use in-memory database +SELECT Hex(AsEWKB(GeomFromText("MULTIPOINT(0 1)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsEWKB(GeomFromText("MULTIPOINT(0 1)", 4326))) +3031303430303030323045363130303030303031303030303030303130313030303030303030303030303030303030303030303030303030303030303030303046303346 + + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb16.testcase b/src/spatialite/test/sql_stmt_tests/asewkb16.testcase new file mode 100644 index 0000000..6c34b4e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb16.testcase @@ -0,0 +1,9 @@ +asewkb - GEOMETRYCOLLECTION, 2 points +:memory: #use in-memory database +SELECT Hex(AsEWKB(GeomFromText("GEOMETRYCOLLECTION(POINT(0 1), POINT(2 3))", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsEWKB(GeomFromText("GEOMETRYCOLLECTION(POINT(0 1), POINT(2 3))", 4326))) +3031303730303030323045363130303030303032303030303030303130313030303030303030303030303030303030303030303030303030303030303030303046303346303130313030303030303030303030303030303030303030343030303030303030303030303030383430 + + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb17.testcase b/src/spatialite/test/sql_stmt_tests/asewkb17.testcase new file mode 100644 index 0000000..054f218 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb17.testcase @@ -0,0 +1,9 @@ +asewkb - GEOMETRYCOLLECTION, polygonz and pointz +:memory: #use in-memory database +SELECT Hex(AsEWKB(GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(0 1 3), POLYGONZ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(1 1 0,2 2 0, 2 1 0, 1 1 0)))", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsEWKB(GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(0 1 3), POLYGONZ((0 0 0,10 0 0,10 10 0,0 10 0,0 0 0),(1 1 0,2 2 0, 2 1 0, 1 1 0)))", 4326))) +30313037303030304130453631303030303030323030303030303031303130303030383030303030303030303030303030303030303030303030303030303030463033463030303030303030303030303038343030313033303030303830303230303030303030353030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303234343030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303234343030303030303030303030303032343430303030303030303030303030303030303030303030303030303030303030303030303030303030303030303032343430303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303030303034303030303030303030303030303030303030463033463030303030303030303030304630334630303030303030303030303030303030303030303030303030303030303034303030303030303030303030303030343030303030303030303030303030303030303030303030303030303030303034303030303030303030303030304630334630303030303030303030303030303030303030303030303030303030463033463030303030303030303030304630334630303030303030303030303030303030 + + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb2.testcase b/src/spatialite/test/sql_stmt_tests/asewkb2.testcase new file mode 100644 index 0000000..741c686 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb2.testcase @@ -0,0 +1,8 @@ +asewkb - POINTZ +:memory: #use in-memory database +SELECT Hex(AsEWKB(GeomFromText("POINTZ(1 3 1)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsEWKB(GeomFromText("POINTZ(1 3 1)", 4326))) +303130313030303041304536313030303030303030303030303030303030463033463030303030303030303030303038343030303030303030303030303046303346 + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb3.testcase b/src/spatialite/test/sql_stmt_tests/asewkb3.testcase new file mode 100644 index 0000000..83b0ffb --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb3.testcase @@ -0,0 +1,9 @@ +asewkb - POINTM +:memory: #use in-memory database +SELECT Hex(AsEWKB(GeomFromText("POINTM(1 3 1)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsEWKB(GeomFromText("POINTM(1 3 1)", 4326))) +303130313030303036304536313030303030303030303030303030303030463033463030303030303030303030303038343030303030303030303030303046303346 + + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb4.testcase b/src/spatialite/test/sql_stmt_tests/asewkb4.testcase new file mode 100644 index 0000000..6aa88bf --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb4.testcase @@ -0,0 +1,9 @@ +asewkb - LINESTRING +:memory: #use in-memory database +SELECT Hex(AsEWKB(GeomFromText("LINESTRING(1 3,1 0)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsEWKB(GeomFromText("LINESTRING(1 3,1 0)", 4326))) +303130323030303032304536313030303030303230303030303030303030303030303030303046303346303030303030303030303030303834303030303030303030303030304630334630303030303030303030303030303030 + + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb5.testcase b/src/spatialite/test/sql_stmt_tests/asewkb5.testcase new file mode 100644 index 0000000..dfd3790 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb5.testcase @@ -0,0 +1,11 @@ +asewkb - bad blob +:memory: #use in-memory database +SELECT AsEWKB(zeroblob(40)) +1 # rows (not including the header row) +1 # columns +AsEWKB(zeroblob(40)) +(NULL) + + + + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb6.testcase b/src/spatialite/test/sql_stmt_tests/asewkb6.testcase new file mode 100644 index 0000000..fae5e0b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb6.testcase @@ -0,0 +1,9 @@ +asewkb - POINTZM +:memory: #use in-memory database +SELECT Hex(AsEWKB(GeomFromText("POINTZM(1 3 1 0)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsEWKB(GeomFromText("POINTZM(1 3 1 0)", 4326))) +30313031303030304530453631303030303030303030303030303030303046303346303030303030303030303030303834303030303030303030303030304630334630303030303030303030303030303030 + + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb7.testcase b/src/spatialite/test/sql_stmt_tests/asewkb7.testcase new file mode 100644 index 0000000..5c219d9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb7.testcase @@ -0,0 +1,10 @@ +asewkb - float +:memory: #use in-memory database +SELECT AsEWKB(3.2) +1 # rows (not including the header row) +1 # columns +AsEWKB(3.2) +(NULL) + + + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb8.testcase b/src/spatialite/test/sql_stmt_tests/asewkb8.testcase new file mode 100644 index 0000000..53693d9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb8.testcase @@ -0,0 +1,9 @@ +asewkb - LINESTRINGZ +:memory: #use in-memory database +SELECT Hex(AsEWKB(GeomFromText("LINESTRINGZ(1 3 2,1 0 2)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsEWKB(GeomFromText("LINESTRINGZ(1 3 2,1 0 2)", 4326))) +3031303230303030413045363130303030303032303030303030303030303030303030303030463033463030303030303030303030303038343030303030303030303030303030303430303030303030303030303030463033463030303030303030303030303030303030303030303030303030303030303430 + + diff --git a/src/spatialite/test/sql_stmt_tests/asewkb9.testcase b/src/spatialite/test/sql_stmt_tests/asewkb9.testcase new file mode 100644 index 0000000..cb016c8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asewkb9.testcase @@ -0,0 +1,9 @@ +asewkb - LINESTRINGM +:memory: #use in-memory database +SELECT Hex(AsEWKB(GeomFromText("LINESTRINGM(1 3 2,1 0 2)", 4326))) +1 # rows (not including the header row) +1 # columns +Hex(AsEWKB(GeomFromText("LINESTRINGM(1 3 2,1 0 2)", 4326))) +3031303230303030363045363130303030303032303030303030303030303030303030303030463033463030303030303030303030303038343030303030303030303030303030303430303030303030303030303030463033463030303030303030303030303030303030303030303030303030303030303430 + + diff --git a/src/spatialite/test/sql_stmt_tests/asfgf1.testcase b/src/spatialite/test/sql_stmt_tests/asfgf1.testcase new file mode 100644 index 0000000..ef4dce0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asfgf1.testcase @@ -0,0 +1,7 @@ +asfgf - non-blob input +:memory: #use in-memory database +SELECT AsFGF("hello", 1) +1 # rows (not including the header row) +1 # columns +AsFGF("hello", 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asfgf2.testcase b/src/spatialite/test/sql_stmt_tests/asfgf2.testcase new file mode 100644 index 0000000..109871e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asfgf2.testcase @@ -0,0 +1,7 @@ +asfgf - bad blob input +:memory: #use in-memory database +SELECT AsFGF(zeroblob(100), 1) +1 # rows (not including the header row) +1 # columns +AsFGF(zeroblob(100), 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asfgf3.testcase b/src/spatialite/test/sql_stmt_tests/asfgf3.testcase new file mode 100644 index 0000000..dd13943 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asfgf3.testcase @@ -0,0 +1,7 @@ +asfgf - non-int second arg +:memory: #use in-memory database +SELECT AsFGF(GeomFromText("POINT(1 2)"), "world") +1 # rows (not including the header row) +1 # columns +AsFGF(GeomFromText("POINT(1 2)"), "world") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asfgf4.testcase b/src/spatialite/test/sql_stmt_tests/asfgf4.testcase new file mode 100644 index 0000000..92ea54c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asfgf4.testcase @@ -0,0 +1,7 @@ +asfgf - negative second arg +:memory: #use in-memory database +SELECT AsFGF(GeomFromText("POINT(1 2)"), -1) +1 # rows (not including the header row) +1 # columns +AsFGF(GeomFromText("POINT(1 2)"), -1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asfgf5.testcase b/src/spatialite/test/sql_stmt_tests/asfgf5.testcase new file mode 100644 index 0000000..444dbbd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asfgf5.testcase @@ -0,0 +1,7 @@ +asfgf - out of range second arg +:memory: #use in-memory database +SELECT AsFGF(GeomFromText("POINT(1 2)"), 4) +1 # rows (not including the header row) +1 # columns +AsFGF(GeomFromText("POINT(1 2)"), 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asfgf6.testcase b/src/spatialite/test/sql_stmt_tests/asfgf6.testcase new file mode 100644 index 0000000..68b5fc8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asfgf6.testcase @@ -0,0 +1,7 @@ +asfgf - pointxy, 0 dim +:memory: #use in-memory database +SELECT Hex(AsFGF(GeomFromText("POINT(1 2)"), 0)) +1 # rows (not including the header row) +1 # columns +Hex(AsFGF(GeomFromText("POINT(1 2)"), 0)) +0100000000000000000000000000F03F0000000000000040 diff --git a/src/spatialite/test/sql_stmt_tests/asfgf7.testcase b/src/spatialite/test/sql_stmt_tests/asfgf7.testcase new file mode 100644 index 0000000..9efd761 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asfgf7.testcase @@ -0,0 +1,7 @@ +asfgf - pointxy, 1 dim +:memory: #use in-memory database +SELECT Hex(AsFGF(GeomFromText("POINT(1 2)"), 1)) +1 # rows (not including the header row) +1 # columns +Hex(AsFGF(GeomFromText("POINT(1 2)"), 1)) +0100000001000000000000000000F03F00000000000000400000000000000000 diff --git a/src/spatialite/test/sql_stmt_tests/asfgf8.testcase b/src/spatialite/test/sql_stmt_tests/asfgf8.testcase new file mode 100644 index 0000000..3f037b7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asfgf8.testcase @@ -0,0 +1,7 @@ +asfgf - pointxy, 2 dim +:memory: #use in-memory database +SELECT Hex(AsFGF(GeomFromText("POINT(1 2)"), 2)) +1 # rows (not including the header row) +1 # columns +Hex(AsFGF(GeomFromText("POINT(1 2)"), 2)) +0100000002000000000000000000F03F00000000000000400000000000000000 diff --git a/src/spatialite/test/sql_stmt_tests/asfgf9.testcase b/src/spatialite/test/sql_stmt_tests/asfgf9.testcase new file mode 100644 index 0000000..d2fd147 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asfgf9.testcase @@ -0,0 +1,7 @@ +asfgf - pointxy, 3 dim +:memory: #use in-memory database +SELECT Hex(AsFGF(GeomFromText("POINT(1 2)"), 3)) +1 # rows (not including the header row) +1 # columns +Hex(AsFGF(GeomFromText("POINT(1 2)"), 3)) +0100000003000000000000000000F03F000000000000004000000000000000000000000000000000 diff --git a/src/spatialite/test/sql_stmt_tests/asgeojson1.testcase b/src/spatialite/test/sql_stmt_tests/asgeojson1.testcase new file mode 100644 index 0000000..d1bb649 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgeojson1.testcase @@ -0,0 +1,7 @@ +asgeojson - bad args (broken blob, 2 arg) +:memory: #use in-memory database +SELECT asgeojson(zeroblob(20), 4); +1 # rows (not including the header row) +1 # columns +asgeojson(zeroblob(20), 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgeojson2.testcase b/src/spatialite/test/sql_stmt_tests/asgeojson2.testcase new file mode 100644 index 0000000..54ae340 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgeojson2.testcase @@ -0,0 +1,7 @@ +asgeojson - bad args (non-blob, 2 arg) +:memory: #use in-memory database +SELECT asgeojson("hello", 4); +1 # rows (not including the header row) +1 # columns +asgeojson("hello", 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgeojson3.testcase b/src/spatialite/test/sql_stmt_tests/asgeojson3.testcase new file mode 100644 index 0000000..0f6597c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgeojson3.testcase @@ -0,0 +1,7 @@ +asgeojson - bad args (2 arg, bad precision) +:memory: #use in-memory database +SELECT asgeojson(GeomFromText("Point(1 2)", 4326), 4.2); +1 # rows (not including the header row) +1 # columns +asgeojson(GeomFromText("Point(1 2)", 4326), 4.2) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgeojson4.testcase b/src/spatialite/test/sql_stmt_tests/asgeojson4.testcase new file mode 100644 index 0000000..d7381e1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgeojson4.testcase @@ -0,0 +1,7 @@ +asgeojson - bad args (3 arg, bad precision) +:memory: #use in-memory database +SELECT asgeojson(GeomFromText("Point(1 2)", 4326), 4.2, 2); +1 # rows (not including the header row) +1 # columns +asgeojson(GeomFromText("Point(1 2)", 4326), 4.2, 2) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgeojson5.testcase b/src/spatialite/test/sql_stmt_tests/asgeojson5.testcase new file mode 100644 index 0000000..3b229e2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgeojson5.testcase @@ -0,0 +1,7 @@ +asgeojson - bad args (3 arg, bad option type) +:memory: #use in-memory database +SELECT asgeojson(GeomFromText("Point(1 2)", 4326), 4, 2.2); +1 # rows (not including the header row) +1 # columns +asgeojson(GeomFromText("Point(1 2)", 4326), 4, 2.2) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgeojson6.testcase b/src/spatialite/test/sql_stmt_tests/asgeojson6.testcase new file mode 100644 index 0000000..9411a26 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgeojson6.testcase @@ -0,0 +1,7 @@ +asgeojson - bad args (3 arg, non-blob type) +:memory: #use in-memory database +SELECT asgeojson("hello", 4, 2); +1 # rows (not including the header row) +1 # columns +asgeojson("hello", 4, 2) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgeojson7.testcase b/src/spatialite/test/sql_stmt_tests/asgeojson7.testcase new file mode 100644 index 0000000..7834e23 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgeojson7.testcase @@ -0,0 +1,7 @@ +asgeojson - bad args (3 arg, out of range option) +:memory: #use in-memory database +SELECT asgeojson(GeomFromText("Point(1 2)", 4326), 4, 22); +1 # rows (not including the header row) +1 # columns +asgeojson(GeomFromText("Point(1 2)", 4326), 4, 22) +{"type":"Point","coordinates":[1,2]}:0 diff --git a/src/spatialite/test/sql_stmt_tests/asgeojson8.testcase b/src/spatialite/test/sql_stmt_tests/asgeojson8.testcase new file mode 100644 index 0000000..3f6f098 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgeojson8.testcase @@ -0,0 +1,7 @@ +asgeojson - bad args (3 arg, out of range option 0) +:memory: #use in-memory database +SELECT asgeojson(GeomFromText("Point(1 2)", 4326), 4, 0); +1 # rows (not including the header row) +1 # columns +asgeojson(GeomFromText("Point(1 2)", 4326), 4, 0) +{"type":"Point","coordinates":[1,2]}:0 diff --git a/src/spatialite/test/sql_stmt_tests/asgml1.testcase b/src/spatialite/test/sql_stmt_tests/asgml1.testcase new file mode 100644 index 0000000..c31adaa --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgml1.testcase @@ -0,0 +1,7 @@ +asgml - bad args (broken blob) +:memory: #use in-memory database +SELECT asgml(zeroblob(20)); +1 # rows (not including the header row) +1 # columns +asgml(zeroblob(20)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml10.testcase b/src/spatialite/test/sql_stmt_tests/asgml10.testcase new file mode 100644 index 0000000..9081492 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgml10.testcase @@ -0,0 +1,7 @@ +asgml - 2 arg +:memory: #use in-memory database +SELECT asgml(GeomFromText("Point(1 2)", 4326), 4); +1 # rows (not including the header row) +1 # columns +asgml(GeomFromText("Point(1 2)", 4326), 4) +1,2:0 diff --git a/src/spatialite/test/sql_stmt_tests/asgml11.testcase b/src/spatialite/test/sql_stmt_tests/asgml11.testcase new file mode 100644 index 0000000..3dee931 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgml11.testcase @@ -0,0 +1,7 @@ +asgml - 2 arg +:memory: #use in-memory database +SELECT asgml(2, "hello"); +1 # rows (not including the header row) +1 # columns +asgml(2, "hello") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml2.testcase b/src/spatialite/test/sql_stmt_tests/asgml2.testcase new file mode 100644 index 0000000..7fd77de --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgml2.testcase @@ -0,0 +1,7 @@ +asgml - bad args (broken blob, 2 arg) +:memory: #use in-memory database +SELECT asgml(2, zeroblob(20)); +1 # rows (not including the header row) +1 # columns +asgml(2, zeroblob(20)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml3.testcase b/src/spatialite/test/sql_stmt_tests/asgml3.testcase new file mode 100644 index 0000000..aae487c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgml3.testcase @@ -0,0 +1,7 @@ +asgml - bad args (broken blob, 3 arg) +:memory: #use in-memory database +SELECT asgml(2, zeroblob(20), 5); +1 # rows (not including the header row) +1 # columns +asgml(2, zeroblob(20), 5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml4.testcase b/src/spatialite/test/sql_stmt_tests/asgml4.testcase new file mode 100644 index 0000000..cffeaf9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgml4.testcase @@ -0,0 +1,7 @@ +asgml - bad args (non-blob, 3 arg) +:memory: #use in-memory database +SELECT asgml(2, "hello", 5); +1 # rows (not including the header row) +1 # columns +asgml(2, "hello", 5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml5.testcase b/src/spatialite/test/sql_stmt_tests/asgml5.testcase new file mode 100644 index 0000000..cffeaf9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgml5.testcase @@ -0,0 +1,7 @@ +asgml - bad args (non-blob, 3 arg) +:memory: #use in-memory database +SELECT asgml(2, "hello", 5); +1 # rows (not including the header row) +1 # columns +asgml(2, "hello", 5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml6.testcase b/src/spatialite/test/sql_stmt_tests/asgml6.testcase new file mode 100644 index 0000000..af45329 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgml6.testcase @@ -0,0 +1,7 @@ +asgml - bad args (non-int, 2 arg) +:memory: #use in-memory database +SELECT asgml("hello", GeomFromText("Point(1 2)")); +1 # rows (not including the header row) +1 # columns +asgml("hello", GeomFromText("Point(1 2)")) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml7.testcase b/src/spatialite/test/sql_stmt_tests/asgml7.testcase new file mode 100644 index 0000000..d433188 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgml7.testcase @@ -0,0 +1,7 @@ +asgml - bad args (non-int, 3 arg) +:memory: #use in-memory database +SELECT asgml("hello", GeomFromText("Point(1 2)"), 4); +1 # rows (not including the header row) +1 # columns +asgml("hello", GeomFromText("Point(1 2)"), 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml8.testcase b/src/spatialite/test/sql_stmt_tests/asgml8.testcase new file mode 100644 index 0000000..301dcaa --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgml8.testcase @@ -0,0 +1,7 @@ +asgml - bad args (non-int 3rd arg) +:memory: #use in-memory database +SELECT asgml(3, GeomFromText("Point(1 2)"), "four"); +1 # rows (not including the header row) +1 # columns +asgml(3, GeomFromText("Point(1 2)"), "four") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml9.testcase b/src/spatialite/test/sql_stmt_tests/asgml9.testcase new file mode 100644 index 0000000..c086797 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/asgml9.testcase @@ -0,0 +1,7 @@ +asgml - bad args (non-int 2nd arg) +:memory: #use in-memory database +SELECT asgml(GeomFromText("Point(1 2)"), "four"); +1 # rows (not including the header row) +1 # columns +asgml(GeomFromText("Point(1 2)"), "four") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/assvg1.testcase b/src/spatialite/test/sql_stmt_tests/assvg1.testcase new file mode 100644 index 0000000..b8a178a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg1.testcase @@ -0,0 +1,7 @@ +assvg - 2 arg bad precision (error) +:memory: #use in-memory database +SELECT assvg(GeomFromText("Point(1 2)", 4326), "hello") +1 # rows (not including the header row) +1 # columns +assvg(GeomFromText("Point(1 2)", 4326), "hello") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/assvg17.testcase b/src/spatialite/test/sql_stmt_tests/assvg17.testcase new file mode 100644 index 0000000..882ae38 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg17.testcase @@ -0,0 +1,7 @@ +assvg - 3 arg excessive precision +:memory: #use in-memory database +SELECT assvg(GeomFromText("Point(1.3759 2)", 4326), 0, 17) +1 # rows (not including the header row) +1 # columns +assvg(GeomFromText("Point(1.3759 2)", 4326), 0, 17) +cx="1.3759" cy="-2" diff --git a/src/spatialite/test/sql_stmt_tests/assvg18.testcase b/src/spatialite/test/sql_stmt_tests/assvg18.testcase new file mode 100644 index 0000000..bb38c26 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg18.testcase @@ -0,0 +1,9 @@ +assvg - relative/absolute Linestring XY +:memory: #use in-memory database +SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("LINESTRING(1 2, 4 3, 5 6, 8 7)", 4326) AS geom) dummy; +1 # rows (not including the header row) +2 # columns +rel +abs +M 1 -2 l 3 -1 1 -3 3 -1 +M 1 -2 L 4 -3 5 -6 8 -7 diff --git a/src/spatialite/test/sql_stmt_tests/assvg19.testcase b/src/spatialite/test/sql_stmt_tests/assvg19.testcase new file mode 100644 index 0000000..3525a55 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg19.testcase @@ -0,0 +1,9 @@ +assvg - relative/absolute Linestring XYZ +:memory: #use in-memory database +SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("LINESTRINGZ(1 2 100, 4 3 101, 5 6 102, 8 7 103)", 4326) AS geom) dummy; +1 # rows (not including the header row) +2 # columns +rel +abs +M 1 -2 l 3 -1 1 -3 3 -1 +M 1 -2 L 4 -3 5 -6 8 -7 diff --git a/src/spatialite/test/sql_stmt_tests/assvg2.testcase b/src/spatialite/test/sql_stmt_tests/assvg2.testcase new file mode 100644 index 0000000..6eaa974 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg2.testcase @@ -0,0 +1,7 @@ +assvg - 2 arg with SRID +:memory: #use in-memory database +SELECT assvg(GeomFromText("Point(1 2)", 4326), 1) +1 # rows (not including the header row) +1 # columns +assvg(GeomFromText("Point(1 2)", 4326), 1) +x="1" y="-2" diff --git a/src/spatialite/test/sql_stmt_tests/assvg20.testcase b/src/spatialite/test/sql_stmt_tests/assvg20.testcase new file mode 100644 index 0000000..dc8a91a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg20.testcase @@ -0,0 +1,9 @@ +assvg - relative/absolute Linestring XYM +:memory: #use in-memory database +SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("LINESTRINGM(1 2 10, 4 3 11, 5 6 12, 8 7 13)", 4326) AS geom) dummy; +1 # rows (not including the header row) +2 # columns +rel +abs +M 1 -2 l 3 -1 1 -3 3 -1 +M 1 -2 L 4 -3 5 -6 8 -7 diff --git a/src/spatialite/test/sql_stmt_tests/assvg21.testcase b/src/spatialite/test/sql_stmt_tests/assvg21.testcase new file mode 100644 index 0000000..5d35eb0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg21.testcase @@ -0,0 +1,9 @@ +assvg - relative/absolute Linestring XYZM +:memory: #use in-memory database +SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("LINESTRINGZM(1 2 100 10, 4 3 101 11, 5 6 102 12, 8 7 103 13)", 4326) AS geom) dummy; +1 # rows (not including the header row) +2 # columns +rel +abs +M 1 -2 l 3 -1 1 -3 3 -1 +M 1 -2 L 4 -3 5 -6 8 -7 diff --git a/src/spatialite/test/sql_stmt_tests/assvg22.testcase b/src/spatialite/test/sql_stmt_tests/assvg22.testcase new file mode 100644 index 0000000..4ab5714 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg22.testcase @@ -0,0 +1,9 @@ +assvg - relative/absolute Polygon +:memory: #use in-memory database +SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("POLYGON((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11))", 4326) AS geom) dummy; +1 # rows (not including the header row) +2 # columns +rel +abs +M 10 -10 l 5 0 0 -5 -5 0 z M 11 -11 l 1 0 0 -1 -1 0 z +M 10 -10 L 15 -10 15 -15 10 -15 z M 11 -11 L 12 -11 12 -12 11 -12 z diff --git a/src/spatialite/test/sql_stmt_tests/assvg23.testcase b/src/spatialite/test/sql_stmt_tests/assvg23.testcase new file mode 100644 index 0000000..b07d7e2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg23.testcase @@ -0,0 +1,9 @@ +assvg - relative/absolute MultiPoint +:memory: #use in-memory database +SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("MULTIPOINT(10 10, 15 10)", 4326) AS geom) dummy; +1 # rows (not including the header row) +2 # columns +rel +abs +x="10" y="-10",x="15" y="-10" +cx="10" cy="-10",cx="15" cy="-10" diff --git a/src/spatialite/test/sql_stmt_tests/assvg24.testcase b/src/spatialite/test/sql_stmt_tests/assvg24.testcase new file mode 100644 index 0000000..8688293 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg24.testcase @@ -0,0 +1,9 @@ +assvg - relative/absolute MultiLinestring +:memory: #use in-memory database +SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("MULTILINESTRING((10 10, 15 10), (10 15, 10 10))", 4326) AS geom) dummy; +1 # rows (not including the header row) +2 # columns +rel +abs +M 10 -10 l 5 0 M 10 -15 l 0 5 +M 10 -10 L 15 -10 M 10 -15 L 10 -10 diff --git a/src/spatialite/test/sql_stmt_tests/assvg25.testcase b/src/spatialite/test/sql_stmt_tests/assvg25.testcase new file mode 100644 index 0000000..dab2fda --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg25.testcase @@ -0,0 +1,9 @@ +assvg - relative/absolute MultiPolygon +:memory: #use in-memory database +SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("MULTIPOLYGON(((10 10, 15 10, 15 15, 10 15, 10 10)), ((71 11, 75 11, 75 15, 71 15, 71 11), (72 12, 73 12, 73 13, 72 13, 71 12)))", 4326) AS geom) dummy; +1 # rows (not including the header row) +2 # columns +rel +abs +M 10 -10 l 5 0 0 -5 -5 0 z M 71 -11 l 4 0 0 -4 -4 0 z M 72 -12 l 1 0 0 -1 -1 0 z +M 10 -10 L 15 -10 15 -15 10 -15 z M 71 -11 L 75 -11 75 -15 71 -15 z M 72 -12 L 73 -12 73 -13 72 -13 z diff --git a/src/spatialite/test/sql_stmt_tests/assvg26.testcase b/src/spatialite/test/sql_stmt_tests/assvg26.testcase new file mode 100644 index 0000000..e0194e7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg26.testcase @@ -0,0 +1,9 @@ +assvg - relative/absolute GeometryCollection +:memory: #use in-memory database +SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("GEOMETRYCOLLECTION(POINT(1 2), POINT(7 8), LINESTRING(3 4, 5 6), POLYGON((71 11, 75 11, 75 15, 71 15, 71 11), (72 12, 73 12, 73 13, 72 13, 71 12)))", 4326) AS geom) dummy; +1 # rows (not including the header row) +2 # columns +rel +abs +x="1" y="-2";x="7" y="-8";M 3 -4 l 2 -2 M 71 -11 l 4 0 0 -4 -4 0 z M 72 -12 l 1 0 0 -1 -1 0 z +cx="1" cy="-2";cx="7" cy="-8";M 3 -4 L 5 -6 M 71 -11 L 75 -11 75 -15 71 -15 z M 72 -12 L 73 -12 73 -13 72 -13 z diff --git a/src/spatialite/test/sql_stmt_tests/assvg3.testcase b/src/spatialite/test/sql_stmt_tests/assvg3.testcase new file mode 100644 index 0000000..f124d84 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg3.testcase @@ -0,0 +1,7 @@ +assvg - 3 arg non-relative +:memory: #use in-memory database +SELECT assvg(GeomFromText("Point(1.3759 2)", 4326), 0, 2) +1 # rows (not including the header row) +1 # columns +assvg(GeomFromText("Point(1.3759 2)", 4326), 0, 2) +cx="1.38" cy="-2" diff --git a/src/spatialite/test/sql_stmt_tests/assvg4.testcase b/src/spatialite/test/sql_stmt_tests/assvg4.testcase new file mode 100644 index 0000000..8c703b3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg4.testcase @@ -0,0 +1,7 @@ +assvg - 1 arg with SRID +:memory: #use in-memory database +SELECT assvg(GeomFromText("Point(1 2)", 4326)) +1 # rows (not including the header row) +1 # columns +assvg(GeomFromText("Point(1 2)", 4326)) +cx="1" cy="-2" diff --git a/src/spatialite/test/sql_stmt_tests/assvg5.testcase b/src/spatialite/test/sql_stmt_tests/assvg5.testcase new file mode 100644 index 0000000..e5d26c3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg5.testcase @@ -0,0 +1,7 @@ +assvg - 1 arg bad blob +:memory: #use in-memory database +SELECT assvg(zeroblob(49)) +1 # rows (not including the header row) +1 # columns +assvg(zeroblob(49)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/assvg6.testcase b/src/spatialite/test/sql_stmt_tests/assvg6.testcase new file mode 100644 index 0000000..d38735c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg6.testcase @@ -0,0 +1,7 @@ +assvg - 1 arg - integer +:memory: #use in-memory database +SELECT assvg(49) +1 # rows (not including the header row) +1 # columns +assvg(49) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/assvg7.testcase b/src/spatialite/test/sql_stmt_tests/assvg7.testcase new file mode 100644 index 0000000..bc59828 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg7.testcase @@ -0,0 +1,7 @@ +assvg - 3 arg negative precision +:memory: #use in-memory database +SELECT assvg(GeomFromText("Point(1.3759 2)", 4326), 0, -1) +1 # rows (not including the header row) +1 # columns +assvg(GeomFromText("Point(1.3759 2)", 4326), 0, -1) +cx="1" cy="-2" diff --git a/src/spatialite/test/sql_stmt_tests/assvg8.testcase b/src/spatialite/test/sql_stmt_tests/assvg8.testcase new file mode 100644 index 0000000..891c1d6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg8.testcase @@ -0,0 +1,7 @@ +assvg - 3 arg bad second arg +:memory: #use in-memory database +SELECT assvg(GeomFromText("Point(1.3759 2)", 4326), "hello", -1) +1 # rows (not including the header row) +1 # columns +assvg(GeomFromText("Point(1.3759 2)", 4326), "hello", -1) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/assvg9.testcase b/src/spatialite/test/sql_stmt_tests/assvg9.testcase new file mode 100644 index 0000000..3ea1792 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/assvg9.testcase @@ -0,0 +1,7 @@ +assvg - 3 arg bad third arg +:memory: #use in-memory database +SELECT assvg(GeomFromText("Point(1.3759 2)", 4326), 0, "hello") +1 # rows (not including the header row) +1 # columns +assvg(GeomFromText("Point(1.3759 2)", 4326), 0, "hello") +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/aswkt-text.testcase b/src/spatialite/test/sql_stmt_tests/aswkt-text.testcase new file mode 100644 index 0000000..cb46865 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/aswkt-text.testcase @@ -0,0 +1,7 @@ +aswkt-text +:memory: #use in-memory database +SELECT AsWkt("not a blob", 4); +1 # rows (not including the header row) +1 # columns +AsWkt("not a blob", 4) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT1.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT1.testcase new file mode 100644 index 0000000..ac0cd8a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/badEWKT1.testcase @@ -0,0 +1,7 @@ +bad EWKT: Point +:memory: #use in-memory database +SELECT GeomFromEWKT("SRID=4326;POINT(11.2 12.3"); +1 # rows (not including the header row) +1 # columns +GeomFromEWKT("SRID=4326;POINT(11.2 12.3") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT2.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT2.testcase new file mode 100644 index 0000000..ba91da1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/badEWKT2.testcase @@ -0,0 +1,7 @@ +bad EWKT: Linestring +:memory: #use in-memory database +SELECT GeomFromEWKT("SRID=4326;LINESTRING(11.2 12.3, 11.3 12.4, 11.4 12.5"); +1 # rows (not including the header row) +1 # columns +GeomFromEWKT("SRID=4326;LINESTRING(11.2 12.3, 11.3 12.4, 11.4 12.5") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT3.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT3.testcase new file mode 100644 index 0000000..e10618c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/badEWKT3.testcase @@ -0,0 +1,7 @@ +bad EWKT: Polygon +:memory: #use in-memory database +SELECT GeomFromEWKT("SRID=4326;POLYGON((11.2 12.3, 11.3 12.3, 11.3 12.4, 11.2 12.4, 11.2 12.3)"); +1 # rows (not including the header row) +1 # columns +GeomFromEWKT("SRID=4326;POLYGON((11.2 12.3, 11.3 12.3, 11.3 12.4, 11.2 12.4, 11.2 12.3)") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT4.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT4.testcase new file mode 100644 index 0000000..7ccad92 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/badEWKT4.testcase @@ -0,0 +1,7 @@ +bad EWKT: MultiPoint +:memory: #use in-memory database +SELECT GeomFromEWKT("SRID=4326;MULTIPOINT(11.2 12.3, 11.3 12.4"); +1 # rows (not including the header row) +1 # columns +GeomFromEWKT("SRID=4326;MULTIPOINT(11.2 12.3, 11.3 12.4") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT5.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT5.testcase new file mode 100644 index 0000000..e93a058 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/badEWKT5.testcase @@ -0,0 +1,7 @@ +bad EWKT: MultiLinestring +:memory: #use in-memory database +SELECT GeomFromEWKT("SRID=4326;MULTILINESTRING((11.2 12.3, 11.3 12.4, 11.4 12.5), (11.5 12.6, 11.6 12.7)"); +1 # rows (not including the header row) +1 # columns +GeomFromEWKT("SRID=4326;MULTILINESTRING((11.2 12.3, 11.3 12.4, 11.4 12.5), (11.5 12.6, 11.6 12.7)") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT6.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT6.testcase new file mode 100644 index 0000000..986589d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/badEWKT6.testcase @@ -0,0 +1,7 @@ +bad EWKT: MultiPolygon +:memory: #use in-memory database +SELECT GeomFromEWKT("SRID=4326;MULTIPOLYGON(((11.2 12.3, 11.3 12.3, 11.3 12.4, 11.2 12.4, 11.2 12.3)), ((10.2 11.3, 10.3 11.3, 10.3 11.4, 10.2 11.4, 10.2 11.3))"); +1 # rows (not including the header row) +1 # columns +GeomFromEWKT("SRID=4326;MULTIPOLYGON(((11.2 12.3, 11.3 12.3, 11.3 12.4, 11.2 12.4, 11.2 12.3)), ((10.2 11.3, 10.3 11.3, 10.3 11.4, 10.2 11.4, 10.2 11.3))") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT7.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT7.testcase new file mode 100644 index 0000000..70b1341 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/badEWKT7.testcase @@ -0,0 +1,7 @@ +bad EWKT: GeometryCollection +:memory: #use in-memory database +SELECT GeomFromEWKT("SRID=4326;GEOMETRYCOLLECYION(POINT(11.2 12.3), LINESTRING(11.3 12.4, 11.4 12.4)"); +1 # rows (not including the header row) +1 # columns +GeomFromEWKT("SRID=4326;GEOMETRYCOLLECYION(POINT(11.2 12.3), LINESTRING(11.3 12.4, 11.4 12.4)") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT8.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT8.testcase new file mode 100644 index 0000000..80a1cb4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/badEWKT8.testcase @@ -0,0 +1,7 @@ +bad EWKT: illegal GeometryCollection +:memory: #use in-memory database +SELECT GeomFromEWKT("SRID=4326;GEOMETRYCOLLECTION()"); +1 # rows (not including the header row) +1 # columns +GeomFromEWKT("SRID=4326;GEOMETRYCOLLECTION()") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badGML1.testcase b/src/spatialite/test/sql_stmt_tests/badGML1.testcase new file mode 100644 index 0000000..5668703 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/badGML1.testcase @@ -0,0 +1,7 @@ +bad GML: Point +:memory: #use in-memory database +SELECT GeomFromGML('1.1,2.21.1,2.21.1,2.21.1,2.21.1,2.2 3.3,4.41.1,2.2 3.3,4.40,0 4,0 4,4 0,4 0,01,1 2,1 2,2 1,2 1,10,0 4,0 4,4 0,4 0,01,1 2,1 2,2 1,2 1,11.1,2.23.3,4.41.1,2.23.3,4.40,0 4,0 4,4 0,4 0,01,1 2,1 2,2 1,2 1,15,5 6,5 6,6 5,6 5,50,0 4,0 4,4 0,4 0,01,1 2,1 2,2 1,2 1,15,5 6,5 6,6 5,6 5,510,1011,11 12,120,0 4,0 4,4 0,4 0,01,1 2,1 2,2 1,2 1,110,1011,11 12,120,0 4,0 4,4 0,4 0,01,1 2,1 2,2 1,2 1,11.1,2.21.1,2.21.1,2.2 3.3,4.41.1,2.2 3.3,4.40,0 1,0 1,1 0,1 0,00.1,0.1 0.9,0.1 0.9,0.9 0.1,0.9 0.1,0.10,0 1,0 1,1 0,1 0,00.1,0.1 0.9,0.1 0.9,0.9 0.1,0.9 0.1,0.11.1,2.23.3,4.41.1,2.23.3,4.41.1,2.2 3.3,4.45.5,6.6 7.7,8.8000000000000011.1,2.2 3.3,4.45.5,6.6 7.7,8.8000000000000010,0 1,0 1,1 0,1 0,00.1,0.1 0.9,0.1 0.9,0.9 0.1,0.9 0.1,0.15,5 6,5 6,6 5,6 5,50,0 1,0 1,1 0,1 0,00.1,0.1 0.9,0.1 0.9,0.9 0.1,0.9 0.1,0.15,5 6,5 6,6 5,6 5,51.1,1.12.2,2.2 3.3,3.30,0 1,0 1,1 0,1 0,00.1,0.1 0.9,0.1 0.9,0.9 0.1,0.9 0.1,0.11.1,1.12.2,2.2 3.3,3.30,0 1,0 1,1 0,1 0,00.1,0.1 0.9,0.1 0.9,0.9 0.1,0.9 0.1,0.17h3NfWZpb zzosk?T>-m&``A*o1Zc~xRuVgj7BC7+S#P?#%wj*3HG&cv^ zZ@VcS=#HT`h(&9}KDF&(6AdNjapFsvaqqTeRC^D>+nc$gn;DrV!T*|NPhH&m(Di@P<}h#RY0%@xaTl{Mn&(|-%D|H|u}9?%|7T{3XR zG_5MB8co`=4YTF(4iek#a24xvpkHQ!XD3+U5Pb*i@Wp4qXW%w55Qf3<6A01${uI%h z10V-3wszK1-SJ-ssD7IY_iOPPxKRwWAHh)sz!}d*9UFq#bg>j+7qXKr5;3{F7!fkE zw!Kk`^nv2milXLonL%tRmRJ^J2|-FOFG%r(B*o%Ov2t1Htnw7rJ8MzeIyNeM5g}R@ z*pf;sMKZL`PzEeS#l&JfCMBh~m`pA*C0;I%F`6Ly4cOs}&w$Usf5JczA;|tkurvR2 z=o3KS*u@v00iS`J&%hKn0+yaa*x8MX);|~@&sSx2^6WyLF341,2')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,2')):0 +SRID=4326;POINT(1 2) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml10.testcase b/src/spatialite/test/sql_stmt_tests/fromgml10.testcase new file mode 100644 index 0000000..0bd0bca --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml10.testcase @@ -0,0 +1,7 @@ +FromGML - MultiPoint v3 +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1 23 45 6')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1 23 45 6')):0 +SRID=4326;MULTIPOINT(1 2,3 4,5 6) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml11.testcase b/src/spatialite/test/sql_stmt_tests/fromgml11.testcase new file mode 100644 index 0000000..7eb8237 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml11.testcase @@ -0,0 +1,7 @@ +FromGML - MultiLinestring v2 +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,2 3,4 5,6 7,810,10 11.3,11')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,2 3,4 5,6 7,810,10 11.3,11')):0 +SRID=4326;MULTILINESTRING((1 2,3 4,5 6,7 8),(10 10,11.3 11)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml12.testcase b/src/spatialite/test/sql_stmt_tests/fromgml12.testcase new file mode 100644 index 0000000..d31159e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml12.testcase @@ -0,0 +1,7 @@ +FromGML - MultiLinestring v3 +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1 2 3 4 5 6 7 810 10 11.3 11')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1 2 3 4 5 6 7 810 10 11.3 11')):0 +SRID=4326;MULTILINESTRING((1 2,3 4,5 6,7 8),(10 10,11.3 11)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml13.testcase b/src/spatialite/test/sql_stmt_tests/fromgml13.testcase new file mode 100644 index 0000000..3ed2eaf --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml13.testcase @@ -0,0 +1,7 @@ +FromGML - MultiPolygon v2 +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01,1 2,1 2,2 1,2 1,16,6 7,6 7,7 6,7 6,6')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01,1 2,1 2,2 1,2 1,16,6 7,6 7,7 6,7 6,6')):0 +SRID=4326;MULTIPOLYGON(((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1)),((6 6,7 6,7 7,6 7,6 6))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml14.testcase b/src/spatialite/test/sql_stmt_tests/fromgml14.testcase new file mode 100644 index 0000000..747c84a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml14.testcase @@ -0,0 +1,7 @@ +FromGML - MultiPolygon v3 +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('0 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 16 6 7 6 7 7 6 7 6 6')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('0 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 16 6 7 6 7 7 6 7 6 6')):0 +SRID=4326;MULTIPOLYGON(((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1)),((6 6,7 6,7 7,6 7,6 6))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml15.testcase b/src/spatialite/test/sql_stmt_tests/fromgml15.testcase new file mode 100644 index 0000000..c4388b1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml15.testcase @@ -0,0 +1,7 @@ +FromGML - GeometryCollection v2 (no namescpaces) +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('8,89,9 10,100,0 5,0 5,5 0,5 0,01,1 2,1 2,2 1,2 1,1')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('8,89,9 10,100,0 5,0 5,5 0,5 0,01,1 2,1 2,2 1,2 1,1')):0 +SRID=4326;GEOMETRYCOLLECTION(POINT(8 8),LINESTRING(9 9,10 10),POLYGON((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml16.testcase b/src/spatialite/test/sql_stmt_tests/fromgml16.testcase new file mode 100644 index 0000000..bb48b59 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml16.testcase @@ -0,0 +1,7 @@ +FromGML - GeometryCollection v3 (no namespaces) +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('8 89 9 10 100 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 1')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('8 89 9 10 100 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 1')):0 +SRID=4326;GEOMETRYCOLLECTION(POINT(8 8),LINESTRING(9 9,10 10),POLYGON((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml17.testcase b/src/spatialite/test/sql_stmt_tests/fromgml17.testcase new file mode 100644 index 0000000..9cd9178 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml17.testcase @@ -0,0 +1,7 @@ +FromGML - GeometryCollection v2 3D +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('8,8,10.59,9,10.5 10.1,10.1,10.60,0,10 5,0,11 5,5,13 0,5,13 0,0,101,1,5 2,1,5 2,2,5 1,2,5 1,1,5')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('8,8,10.59,9,10.5 10.1,10.1,10.60,0,10 5,0,11 5,5,13 0,5,13 0,0,101,1,5 2,1,5 2,2,5 1,2,5 1,1,5')):0 +SRID=4326;GEOMETRYCOLLECTION(POINT(8 8 10.5),LINESTRING(9 9 10.5,10.1 10.1 10.6),POLYGON((0 0 10,5 0 11,5 5 13,0 5 13,0 0 10),(1 1 5,2 1 5,2 2 5,1 2 5,1 1 5))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml18.testcase b/src/spatialite/test/sql_stmt_tests/fromgml18.testcase new file mode 100644 index 0000000..3e24437 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml18.testcase @@ -0,0 +1,7 @@ +FromGML - GeometryCollection v3 3D +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('8 8 10.59 9 10.5 10.1 10.1 10.60 0 10 5 0 11 5 5 13 0 5 13 0 0 101 1 5 2 1 5 2 2 5 1 2 5 1 1 5')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('8 8 10.59 9 10.5 10.1 10.1 10.60 0 10 5 0 11 5 5 13 0 5 13 0 0 101 1 5 2 1 5 2 2 5 1 2 5 1 1 5')):0 +SRID=4326;GEOMETRYCOLLECTION(POINT(8 8 10.5),LINESTRING(9 9 10.5,10.1 10.1 10.6),POLYGON((0 0 10,5 0 11,5 5 13,0 5 13,0 0 10),(1 1 5,2 1 5,2 2 5,1 2 5,1 1 5))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml19.testcase b/src/spatialite/test/sql_stmt_tests/fromgml19.testcase new file mode 100644 index 0000000..2d274fd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml19.testcase @@ -0,0 +1,7 @@ +FromGML - MultiPoint v2 3D +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,2,103,4,11')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,2,103,4,11')):0 +SRID=4326;MULTIPOINT(1 2 10,3 4 11) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml2.testcase b/src/spatialite/test/sql_stmt_tests/fromgml2.testcase new file mode 100644 index 0000000..618e078 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml2.testcase @@ -0,0 +1,7 @@ +FromGML - non-text +:memory: #use in-memory database +SELECT GeomFromGml(zeroblob(10)) +1 # rows (not including the header row) +1 # columns +GeomFromGml(zeroblob(10)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml20.testcase b/src/spatialite/test/sql_stmt_tests/fromgml20.testcase new file mode 100644 index 0000000..c3d10ff --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml20.testcase @@ -0,0 +1,7 @@ +FromGML - MultiPoint v3 3D +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1 2 103 4 11')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1 2 103 4 11')):0 +SRID=4326;MULTIPOINT(1 2 10,3 4 11) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml21.testcase b/src/spatialite/test/sql_stmt_tests/fromgml21.testcase new file mode 100644 index 0000000..541e880 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml21.testcase @@ -0,0 +1,7 @@ +FromGML - Point v2 3D +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,2,10')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,2,10')):0 +SRID=4326;POINT(1 2 10) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml22.testcase b/src/spatialite/test/sql_stmt_tests/fromgml22.testcase new file mode 100644 index 0000000..1c40423 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml22.testcase @@ -0,0 +1,7 @@ +FromGML - Point v3 3D +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1 2 10')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1 2 10')):0 +SRID=4326;POINT(1 2 10) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml23.testcase b/src/spatialite/test/sql_stmt_tests/fromgml23.testcase new file mode 100644 index 0000000..78529d4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml23.testcase @@ -0,0 +1,7 @@ +FromGML - MultiLinestring v2 3D (no namespace) +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,2,10 3,4,11 5,6,137,8,13 9,10,13')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,2,10 3,4,11 5,6,137,8,13 9,10,13')):0 +SRID=4326;MULTILINESTRING((1 2 10,3 4 11,5 6 13),(7 8 13,9 10 13)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml24.testcase b/src/spatialite/test/sql_stmt_tests/fromgml24.testcase new file mode 100644 index 0000000..ddb3991 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml24.testcase @@ -0,0 +1,7 @@ +FromGML - MultiLinestring v3 3D (no namespace) +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1 2 10 3 4 11 5 6 137 8 13 9 10 13')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1 2 10 3 4 11 5 6 137 8 13 9 10 13')):0 +SRID=4326;MULTILINESTRING((1 2 10,3 4 11,5 6 13),(7 8 13,9 10 13)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml25.testcase b/src/spatialite/test/sql_stmt_tests/fromgml25.testcase new file mode 100644 index 0000000..b30daae --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml25.testcase @@ -0,0 +1,7 @@ +FromGML - MultiPolygon v2 3D (no namespace) +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('0,0,10 5,0,11 5,5,13 0,5,13 0,0,101,1,5 2,1,5 2,2,5 1,2,5 1,1,52,2,10 3,2,11 3,3,13 2,3,13 2,2,10')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('0,0,10 5,0,11 5,5,13 0,5,13 0,0,101,1,5 2,1,5 2,2,5 1,2,5 1,1,52,2,10 3,2,11 3,3,13 2,3,13 2,2,10')):0 +SRID=4326;MULTIPOLYGON(((0 0 10,5 0 11,5 5 13,0 5 13,0 0 10),(1 1 5,2 1 5,2 2 5,1 2 5,1 1 5)),((2 2 10,3 2 11,3 3 13,2 3 13,2 2 10))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml26.testcase b/src/spatialite/test/sql_stmt_tests/fromgml26.testcase new file mode 100644 index 0000000..0ed42f0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml26.testcase @@ -0,0 +1,7 @@ +FromGML - MultiPolygon v3 3D (no namespace) +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('0 0 10 5 0 11 5 5 13 0 5 13 0 0 101 1 5 2 1 5 2 2 5 1 2 5 1 1 52 2 10 3 2 11 3 3 13 2 3 13 2 2 10')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('0 0 10 5 0 11 5 5 13 0 5 13 0 0 101 1 5 2 1 5 2 2 5 1 2 5 1 1 52 2 10 3 2 11 3 3 13 2 3 13 2 2 10')):0 +SRID=4326;MULTIPOLYGON(((0 0 10,5 0 11,5 5 13,0 5 13,0 0 10),(1 1 5,2 1 5,2 2 5,1 2 5,1 1 5)),((2 2 10,3 2 11,3 3 13,2 3 13,2 2 10))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml27.testcase b/src/spatialite/test/sql_stmt_tests/fromgml27.testcase new file mode 100644 index 0000000..804d30c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml27.testcase @@ -0,0 +1,7 @@ +FromGML - non-WGS84 Point +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,2')) +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,2')):0 +SRID=3003;POINT(1 2) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml28.testcase b/src/spatialite/test/sql_stmt_tests/fromgml28.testcase new file mode 100644 index 0000000..2bd60b5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml28.testcase @@ -0,0 +1,7 @@ +FromGML - MULTIPOINT, single point +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,2')) +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,2')):0 +SRID=-1;MULTIPOINT(1 2) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml29.testcase b/src/spatialite/test/sql_stmt_tests/fromgml29.testcase new file mode 100644 index 0000000..e6b5faf --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml29.testcase @@ -0,0 +1,7 @@ +FromGML - GeometryCollection, single point +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,2')) +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,2')):0 +SRID=-1;GEOMETRYCOLLECTION(POINT(1 2)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml3.testcase b/src/spatialite/test/sql_stmt_tests/fromgml3.testcase new file mode 100644 index 0000000..abcfcbf --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml3.testcase @@ -0,0 +1,7 @@ +FromGML - bad text +:memory: #use in-memory database +SELECT GeomFromGml('1,21,21,2,3.2')) +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGml('1,2,3.2')):0 +MULTIPOINT Z(1 2 3.2) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml31.testcase b/src/spatialite/test/sql_stmt_tests/fromgml31.testcase new file mode 100644 index 0000000..e7abeb0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml31.testcase @@ -0,0 +1,7 @@ +FromGML - GeometryCollection, single pointZ +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,2,3.2')) +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,2,3.2')):0 +SRID=-1;GEOMETRYCOLLECTION(POINT(1 2 3.2)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml32.testcase b/src/spatialite/test/sql_stmt_tests/fromgml32.testcase new file mode 100644 index 0000000..8fa4f97 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml32.testcase @@ -0,0 +1,7 @@ +FromGML - GeometryCollection, single pointZ, no namespace +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,2,3.2')) +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,2,3.2')):0 +SRID=-1;GEOMETRYCOLLECTION(POINT(1 2 3.2)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml33.testcase b/src/spatialite/test/sql_stmt_tests/fromgml33.testcase new file mode 100644 index 0000000..f6cf3b5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml33.testcase @@ -0,0 +1,7 @@ +FromGML - multipoint, single pointZ, SRID, no namespace +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,2,3.2')) +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,2,3.2')):0 +SRID=3213;MULTIPOINT(1 2 3.2) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml34.testcase b/src/spatialite/test/sql_stmt_tests/fromgml34.testcase new file mode 100644 index 0000000..ade7b88 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml34.testcase @@ -0,0 +1,7 @@ +FromGML - poslist linestring +:memory: #use in-memory database +SELECT AsText(GeomFromGml('45.67 88.56 55.56 89.44')) +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGml('45.67 88.56 55.56 89.44')):0 +LINESTRING(45.67 88.56, 55.56 89.44) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml35.testcase b/src/spatialite/test/sql_stmt_tests/fromgml35.testcase new file mode 100644 index 0000000..d9e7688 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml35.testcase @@ -0,0 +1,8 @@ +FromGML - poslist polygon +:memory: #use in-memory database +SELECT AsText(GeomFromGml('0 0 -100 0 -100 100 0 100 0 0')) +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGml('0 0 -100 0 -100 100 0 100 0 0')):0 +POLYGON((0 0, -100 0, -100 100, 0 100, 0 0)) + diff --git a/src/spatialite/test/sql_stmt_tests/fromgml36.testcase b/src/spatialite/test/sql_stmt_tests/fromgml36.testcase new file mode 100644 index 0000000..f654c8a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml36.testcase @@ -0,0 +1,8 @@ +FromGML - poslist polygon, no namespace +:memory: #use in-memory database +SELECT AsText(GeomFromGml('0 0 -100 0 -100 100 0 100 0 0')) +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGml('0 0 -100 0 -100 100 0 100 0 0')):0 +POLYGON((0 0, -100 0, -100 100, 0 100, 0 0)) + diff --git a/src/spatialite/test/sql_stmt_tests/fromgml37.testcase b/src/spatialite/test/sql_stmt_tests/fromgml37.testcase new file mode 100644 index 0000000..054c462 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml37.testcase @@ -0,0 +1,8 @@ +FromGML - poslist polygon, bad contents +:memory: #use in-memory database +SELECT AsText(GeomFromGml('foo')) +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGml('foo')):0 +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/fromgml38.testcase b/src/spatialite/test/sql_stmt_tests/fromgml38.testcase new file mode 100644 index 0000000..09fe7bb --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml38.testcase @@ -0,0 +1,8 @@ +FromGML - polygon, missing poslist +:memory: #use in-memory database +SELECT AsText(GeomFromGml('')) +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGml('')):0 +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/fromgml39.testcase b/src/spatialite/test/sql_stmt_tests/fromgml39.testcase new file mode 100644 index 0000000..c2d180b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml39.testcase @@ -0,0 +1,7 @@ +FromGML - Polygon v2, inner ring poslist +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01 1 2 1 2 2 1 2 1 1')) +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01 1 2 1 2 2 1 2 1 1')):0 +SRID=4326;POLYGON((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/fromgml4.testcase b/src/spatialite/test/sql_stmt_tests/fromgml4.testcase new file mode 100644 index 0000000..88cfe32 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml4.testcase @@ -0,0 +1,7 @@ +FromGML - Point, no namespace +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,2')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,2')):0 +SRID=4326;POINT(1 2) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml40.testcase b/src/spatialite/test/sql_stmt_tests/fromgml40.testcase new file mode 100644 index 0000000..e7782f6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml40.testcase @@ -0,0 +1,7 @@ +FromGML - Polygon v2, poslist, broken +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,0foo')) +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,0foo')):0 +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/fromgml41.testcase b/src/spatialite/test/sql_stmt_tests/fromgml41.testcase new file mode 100644 index 0000000..cfd82af --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml41.testcase @@ -0,0 +1,7 @@ +FromGML - Polygon v2, inner ring poslist, bad closing +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01 1 2 1 2 2 1 2 1 1')) +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01 1 2 1 2 2 1 2 1 1')):0 +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/fromgml43.testcase b/src/spatialite/test/sql_stmt_tests/fromgml43.testcase new file mode 100644 index 0000000..3430f8a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml43.testcase @@ -0,0 +1,7 @@ +FromGML - multipoint, multiple SRID - bad second SRID, no namespace +:memory: #use in-memory database +SELECT AsText(GeomFromGml('1,2,3.22,4,4.2')) +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGml('1,2,3.22,4,4.2')):0 +MULTIPOINT Z(1 2 3.2, 2 4 4.2) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml44.testcase b/src/spatialite/test/sql_stmt_tests/fromgml44.testcase new file mode 100644 index 0000000..9480482 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml44.testcase @@ -0,0 +1,7 @@ +FromGML - MultiPolygon v3 3D (no namespace) +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('0 0 10 5 0 11 5 5 13 0 5 13 0 0 101 1 5 2 1 5 2 2 5 1 2 5 1 1 52 2 10 3 2 11 3 3 13 2 3 13 2 2 10')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('0 0 10 5 0 11 5 5 13 0 5 13 0 0 101 1 5 2 1 5 2 2 5 1 2 5 1 1 52 2 10 3 2 11 3 3 13 2 3 13 2 2 10')):0 +SRID=4326;MULTIPOLYGON(((0 0 10,5 0 11,5 5 13,0 5 13,0 0 10),(1 1 5,2 1 5,2 2 5,1 2 5,1 1 5)),((2 2 10,3 2 11,3 3 13,2 3 13,2 2 10))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml45.testcase b/src/spatialite/test/sql_stmt_tests/fromgml45.testcase new file mode 100644 index 0000000..dfc6b0d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml45.testcase @@ -0,0 +1,7 @@ +FromGML - MultiPolygon v3 +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('0 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 16 6 7 6 7 7 6 7 6 6')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('0 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 16 6 7 6 7 7 6 7 6 6')):0 +SRID=4326;MULTIPOLYGON(((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1)),((6 6,7 6,7 7,6 7,6 6))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml46.testcase b/src/spatialite/test/sql_stmt_tests/fromgml46.testcase new file mode 100644 index 0000000..71c95d2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml46.testcase @@ -0,0 +1,7 @@ +FromGML - MultiPolygon v2 3D (no namespace) +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('0,0,10 5,0,11 5,5,13 0,5,13 0,0,101,1,5 2,1,5 2,2,5 1,2,5 1,1,52,2,10 3,2,11 3,3,13 2,3,13 2,2,10')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('0,0,10 5,0,11 5,5,13 0,5,13 0,0,101,1,5 2,1,5 2,2,5 1,2,5 1,1,52,2,10 3,2,11 3,3,13 2,3,13 2,2,10')):0 +SRID=4326;MULTIPOLYGON(((0 0 10,5 0 11,5 5 13,0 5 13,0 0 10),(1 1 5,2 1 5,2 2 5,1 2 5,1 1 5)),((2 2 10,3 2 11,3 3 13,2 3 13,2 2 10))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml47.testcase b/src/spatialite/test/sql_stmt_tests/fromgml47.testcase new file mode 100644 index 0000000..a8f2a70 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml47.testcase @@ -0,0 +1,7 @@ +FromGML - MultiPolygon v2 +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01,1 2,1 2,2 1,2 1,16,6 7,6 7,7 6,7 6,6')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01,1 2,1 2,2 1,2 1,16,6 7,6 7,7 6,7 6,6')):0 +SRID=4326;MULTIPOLYGON(((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1)),((6 6,7 6,7 7,6 7,6 6))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml48.testcase b/src/spatialite/test/sql_stmt_tests/fromgml48.testcase new file mode 100644 index 0000000..aa97d1b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml48.testcase @@ -0,0 +1,7 @@ +FromGML - GeometryCollection v3 3D +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('8 8 10.59 9 10.5 10.1 10.1 10.60 0 10 5 0 11 5 5 13 0 5 13 0 0 101 1 5 2 1 5 2 2 5 1 2 5 1 1 5')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('8 8 10.59 9 10.5 10.1 10.1 10.60 0 10 5 0 11 5 5 13 0 5 13 0 0 101 1 5 2 1 5 2 2 5 1 2 5 1 1 5')):0 +SRID=4326;GEOMETRYCOLLECTION(POINT(8 8 10.5),LINESTRING(9 9 10.5,10.1 10.1 10.6),POLYGON((0 0 10,5 0 11,5 5 13,0 5 13,0 0 10),(1 1 5,2 1 5,2 2 5,1 2 5,1 1 5))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml49.testcase b/src/spatialite/test/sql_stmt_tests/fromgml49.testcase new file mode 100644 index 0000000..fa18fc1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml49.testcase @@ -0,0 +1,7 @@ +FromGML - GeometryCollection v3 (no namespaces) +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('8 89 9 10 100 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 1')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('8 89 9 10 100 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 1')):0 +SRID=4326;GEOMETRYCOLLECTION(POINT(8 8),LINESTRING(9 9,10 10),POLYGON((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml5.testcase b/src/spatialite/test/sql_stmt_tests/fromgml5.testcase new file mode 100644 index 0000000..d7eb01a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml5.testcase @@ -0,0 +1,7 @@ +FromGML - Linestring v2 +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,2 3,4')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,2 3,4')):0 +SRID=4326;LINESTRING(1 2,3 4) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml50.testcase b/src/spatialite/test/sql_stmt_tests/fromgml50.testcase new file mode 100644 index 0000000..f816807 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml50.testcase @@ -0,0 +1,7 @@ +FromGML - MultiPoint v2 (no namespace) +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,23,45,6')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,23,45,6')):0 +SRID=4326;MULTIPOINT(1 2,3 4,5 6) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml51.testcase b/src/spatialite/test/sql_stmt_tests/fromgml51.testcase new file mode 100644 index 0000000..2cb3ce4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml51.testcase @@ -0,0 +1,7 @@ +FromGML - multipoint, multiple SRID - bad second SRID, no namespace +:memory: #use in-memory database +SELECT AsText(GeomFromGml('1,2,3.22,4,4.2')) +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGml('1,2,3.22,4,4.2')):0 +MULTIPOINT Z(1 2 3.2, 2 4 4.2) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml52.testcase b/src/spatialite/test/sql_stmt_tests/fromgml52.testcase new file mode 100644 index 0000000..34b6e59 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml52.testcase @@ -0,0 +1,7 @@ +FromGML - MultiLinestring v2 +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,2 3,4 5,6 7,810,10 11.3,11')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,2 3,4 5,6 7,810,10 11.3,11')):0 +SRID=4326;MULTILINESTRING((1 2,3 4,5 6,7 8),(10 10,11.3 11)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml53.testcase b/src/spatialite/test/sql_stmt_tests/fromgml53.testcase new file mode 100644 index 0000000..768aed5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml53.testcase @@ -0,0 +1,7 @@ +FromGML - MultiLinestring v2 3D (no namespace) +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,2,10 3,4,11 5,6,137,8,13 9,10,13')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,2,10 3,4,11 5,6,137,8,13 9,10,13')):0 +SRID=4326;MULTILINESTRING((1 2 10,3 4 11,5 6 13),(7 8 13,9 10 13)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml54.testcase b/src/spatialite/test/sql_stmt_tests/fromgml54.testcase new file mode 100644 index 0000000..bcbd64e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml54.testcase @@ -0,0 +1,7 @@ +FromGML - MultiLinestring v3 +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1 2 3 4 5 6 7 810 10 11.3 11')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1 2 3 4 5 6 7 810 10 11.3 11')):0 +SRID=4326;MULTILINESTRING((1 2,3 4,5 6,7 8),(10 10,11.3 11)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml55.testcase b/src/spatialite/test/sql_stmt_tests/fromgml55.testcase new file mode 100644 index 0000000..ac373ec --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml55.testcase @@ -0,0 +1,7 @@ +FromGML - MultiLinestring v3 3D (no namespace) +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1 2 10 3 4 11 5 6 137 8 13 9 10 13')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1 2 10 3 4 11 5 6 137 8 13 9 10 13')):0 +SRID=4326;MULTILINESTRING((1 2 10,3 4 11,5 6 13),(7 8 13,9 10 13)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml56.testcase b/src/spatialite/test/sql_stmt_tests/fromgml56.testcase new file mode 100644 index 0000000..dc2fc52 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml56.testcase @@ -0,0 +1,7 @@ +FromGML - LineString +:memory: #use in-memory database +SELECT AsText(GeomFromGml('0 05 05 50 50 0')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGml('0 05 05 50 50 0')):0 +LINESTRING(0 0, 5 0, 5 5, 0 5, 0 0) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml57.testcase b/src/spatialite/test/sql_stmt_tests/fromgml57.testcase new file mode 100644 index 0000000..9080b6b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml57.testcase @@ -0,0 +1,7 @@ +FromGML - Polygon LinearRing outer/innerBoundary +:memory: #use in-memory database +SELECT AsText(GeomFromGml('0 05 05 50 50 01 12 12 21 21 1')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGml('0 05 05 50 50 01 12 12 21 21 1')):0 +POLYGON((0 0, 5 0, 5 5, 0 5, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml58.testcase b/src/spatialite/test/sql_stmt_tests/fromgml58.testcase new file mode 100644 index 0000000..4603880 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml58.testcase @@ -0,0 +1,7 @@ +FromGML - Curve +:memory: #use in-memory database +SELECT AsText(GeomFromGml('1 23 45 67 8')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGml('1 23 45 67 8')):0 +LINESTRING(1 2, 3 4, 5 6, 7 8) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml59.testcase b/src/spatialite/test/sql_stmt_tests/fromgml59.testcase new file mode 100644 index 0000000..7476a71 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml59.testcase @@ -0,0 +1,8 @@ +FromGML - Polygon LinearRing interior/exterior +:memory: #use in-memory database +SELECT AsText(GeomFromGml('0 05 05 50 50 01 12 12 21 21 1')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGml('0 05 05 50 50 01 12 12 21 21 1')):0 +POLYGON((0 0, 5 0, 5 5, 0 5, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)) + diff --git a/src/spatialite/test/sql_stmt_tests/fromgml6.testcase b/src/spatialite/test/sql_stmt_tests/fromgml6.testcase new file mode 100644 index 0000000..26b69c4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml6.testcase @@ -0,0 +1,7 @@ +FromGML - Linestring v3 +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1 2 3 4')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1 2 3 4')):0 +SRID=4326;LINESTRING(1 2,3 4) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml60.testcase b/src/spatialite/test/sql_stmt_tests/fromgml60.testcase new file mode 100644 index 0000000..ee1fb3e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml60.testcase @@ -0,0 +1,8 @@ +FromGML - Box-1 +:memory: #use in-memory database +SELECT AsText(GeomFromGml('1465764.67172047,4301759.08670378 1486407.98880581,4322672.57766581')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGml('1465764.67172047,4301759.08670378 1486407.98880581,4322672.57766581')):0 +POLYGON((1465764.67172 4301759.086704, 1486407.988806 4301759.086704, 1486407.988806 4322672.577666, 1465764.67172 4322672.577666, 1465764.67172 4301759.086704)) + diff --git a/src/spatialite/test/sql_stmt_tests/fromgml61.testcase b/src/spatialite/test/sql_stmt_tests/fromgml61.testcase new file mode 100644 index 0000000..651fcbb --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml61.testcase @@ -0,0 +1,8 @@ +FromGML - Box-2 +:memory: #use in-memory database +SELECT AsText(GeomFromGml('1329459.947339,4879353.546282 1442103.707005,4967559.686594')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromGml('1329459.947339,4879353.546282 1442103.707005,4967559.686594')):0 +POLYGON((1329459.947339 4879353.546282, 1442103.707005 4879353.546282, 1442103.707005 4967559.686594, 1329459.947339 4967559.686594, 1329459.947339 4879353.546282)) + diff --git a/src/spatialite/test/sql_stmt_tests/fromgml7.testcase b/src/spatialite/test/sql_stmt_tests/fromgml7.testcase new file mode 100644 index 0000000..e398b6a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml7.testcase @@ -0,0 +1,7 @@ +FromGML - Polygon v2 +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01,1 2,1 2,2 1,2 1,1')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01,1 2,1 2,2 1,2 1,1')):0 +SRID=4326;POLYGON((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml8.testcase b/src/spatialite/test/sql_stmt_tests/fromgml8.testcase new file mode 100644 index 0000000..5e0f544 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml8.testcase @@ -0,0 +1,7 @@ +FromGML - Polygon v3 +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('0 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 1')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('0 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 1')):0 +SRID=4326;POLYGON((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml9.testcase b/src/spatialite/test/sql_stmt_tests/fromgml9.testcase new file mode 100644 index 0000000..8d6e5a6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/fromgml9.testcase @@ -0,0 +1,7 @@ +FromGML - MultiPoint v2 (no namespace) +:memory: #use in-memory database +SELECT AsEwkt(GeomFromGml('1,23,45,6')); +1 # rows (not including the header row) +1 # columns +AsEwkt(GeomFromGml('1,23,45,6')):0 +SRID=4326;MULTIPOINT(1 2,3 4,5 6) diff --git a/src/spatialite/test/sql_stmt_tests/ft_m.testcase b/src/spatialite/test/sql_stmt_tests/ft_m.testcase new file mode 100644 index 0000000..7dfc497 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/ft_m.testcase @@ -0,0 +1,7 @@ +feet to metres +:memory: #use in-memory database +SELECT CvtFromFt(10); +1 # rows (not including the header row) +1 # columns +CvtFromFt(10); +3.048 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr1.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr1.testcase new file mode 100644 index 0000000..3f463ad --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr1.testcase @@ -0,0 +1,8 @@ +garsmbr - 001AB +:memory: #use in-memory database +SELECT AsText(GARSMbr("001AB")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("001AB")) +POLYGON((-180 -89.5, -179.5 -89.5, -179.5 -89, -180 -89, -180 -89.5)) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr10.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr10.testcase new file mode 100644 index 0000000..9f02054 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr10.testcase @@ -0,0 +1,8 @@ +garsmbr - 001AB2 +:memory: #use in-memory database +SELECT AsText(GARSMbr("001AB2")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("001AB2")) +POLYGON((-179.75 -89.25, -179.5 -89.25, -179.5 -89, -179.75 -89, -179.75 -89.25)) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr11.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr11.testcase new file mode 100644 index 0000000..93f25c2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr11.testcase @@ -0,0 +1,7 @@ +garsmbr - bad coords +:memory: #use in-memory database +SELECT GARSMbr("AA123") +1 # rows (not including the header row) +1 # columns +GARSMbr("AA123") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr12.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr12.testcase new file mode 100644 index 0000000..5df2a15 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr12.testcase @@ -0,0 +1,7 @@ +garsmbr - bad coords +:memory: #use in-memory database +SELECT GARSMbr("AA123A") +1 # rows (not including the header row) +1 # columns +GARSMbr("AA123A") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr13.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr13.testcase new file mode 100644 index 0000000..31d0f74 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr13.testcase @@ -0,0 +1,7 @@ +garsmbr - short text +:memory: #use in-memory database +SELECT GARSMbr("erin") +1 # rows (not including the header row) +1 # columns +GARSMbr("erin") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr14.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr14.testcase new file mode 100644 index 0000000..a34212e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr14.testcase @@ -0,0 +1,8 @@ +garsmbr - bad latitude +:memory: #use in-memory database +SELECT AsText(GARSMbr("001--")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("001--")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr15.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr15.testcase new file mode 100644 index 0000000..77f2b1f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr15.testcase @@ -0,0 +1,8 @@ +garsmbr - bad longitude +:memory: #use in-memory database +SELECT AsText(GARSMbr("-01AB")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("-01AB")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr16.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr16.testcase new file mode 100644 index 0000000..712b893 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr16.testcase @@ -0,0 +1,8 @@ +garsmbr - bad longitude +:memory: #use in-memory database +SELECT AsText(GARSMbr("001TZ")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("001TZ")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr17.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr17.testcase new file mode 100644 index 0000000..f7bf723 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr17.testcase @@ -0,0 +1,8 @@ +garsmbr - bad longitude +:memory: #use in-memory database +SELECT AsText(GARSMbr("001TZ4")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("001TZ4")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr18.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr18.testcase new file mode 100644 index 0000000..d710d71 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr18.testcase @@ -0,0 +1,7 @@ +garsmbr - out of bounds longitude +:memory: #use in-memory database +SELECT GARSMbr("721AA11") +1 # rows (not including the header row) +1 # columns +GARSMbr("721AA11") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr2.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr2.testcase new file mode 100644 index 0000000..3056b29 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr2.testcase @@ -0,0 +1,7 @@ +garsmbr - bad text +:memory: #use in-memory database +SELECT GARSMbr("buzzys country store") +1 # rows (not including the header row) +1 # columns +GARSMbr("buzzys country store") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr20.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr20.testcase new file mode 100644 index 0000000..d5958e5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr20.testcase @@ -0,0 +1,7 @@ +garsmbr - bad coords +:memory: #use in-memory database +SELECT GARSMbr("AA123A1") +1 # rows (not including the header row) +1 # columns +GARSMbr("AA123A1") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr21.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr21.testcase new file mode 100644 index 0000000..b435099 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr21.testcase @@ -0,0 +1,7 @@ +garsmbr - out of bounds lat +:memory: #use in-memory database +SELECT GARSMbr("001RA11") +1 # rows (not including the header row) +1 # columns +GARSMbr("001RA11") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr22.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr22.testcase new file mode 100644 index 0000000..3fb3c0d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr22.testcase @@ -0,0 +1,8 @@ +garsmbr - 001AB27 +:memory: #use in-memory database +SELECT AsText(GARSMbr("001AB27")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("001AB27")) +POLYGON((-179.75 -89.25, -179.666667 -89.25, -179.666667 -89.166667, -179.75 -89.166667, -179.75 -89.25)) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr23.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr23.testcase new file mode 100644 index 0000000..66fd763 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr23.testcase @@ -0,0 +1,8 @@ +garsmbr - bad longitude - 6 +:memory: #use in-memory database +SELECT AsText(GARSMbr("-01AB1")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("-01AB1")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr24.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr24.testcase new file mode 100644 index 0000000..f9a9138 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr24.testcase @@ -0,0 +1,8 @@ +garsmbr - bad longitude - 7 +:memory: #use in-memory database +SELECT AsText(GARSMbr("-01AB14")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("-01AB14")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr25.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr25.testcase new file mode 100644 index 0000000..544e4b6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr25.testcase @@ -0,0 +1,8 @@ +garsmbr - bad latitude - 6 +:memory: #use in-memory database +SELECT AsText(GARSMbr("001--1")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("001--1")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr26.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr26.testcase new file mode 100644 index 0000000..ea42e5a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr26.testcase @@ -0,0 +1,8 @@ +garsmbr - bad latitude - 7 +:memory: #use in-memory database +SELECT AsText(GARSMbr("001--14")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("001--14")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr27.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr27.testcase new file mode 100644 index 0000000..8004108 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr27.testcase @@ -0,0 +1,8 @@ +garsmbr - 361HN37 +:memory: #use in-memory database +SELECT AsText(GARSMbr("361HN37")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("361HN37")) +POLYGON((0 0, 0.083333 0, 0.083333 0.083333, 0 0.083333, 0 0)) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr28.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr28.testcase new file mode 100644 index 0000000..5d5c33d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr28.testcase @@ -0,0 +1,8 @@ +garsmbr - 361HN38 +:memory: #use in-memory database +SELECT AsText(GARSMbr("361HN38")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("361HN38")) +POLYGON((0.083333 0, 0.166667 0, 0.166667 0.083333, 0.083333 0.083333, 0.083333 0)) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr29.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr29.testcase new file mode 100644 index 0000000..e0cbfee --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr29.testcase @@ -0,0 +1,8 @@ +garsmbr - 361HN49 +:memory: #use in-memory database +SELECT AsText(GARSMbr("361HN49")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("361HN49")) +POLYGON((0.416667 0, 0.5 0, 0.5 0.083333, 0.416667 0.083333, 0.416667 0)) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr3.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr3.testcase new file mode 100644 index 0000000..10e62c3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr3.testcase @@ -0,0 +1,7 @@ +garsmbr - non text +:memory: #use in-memory database +SELECT GARSMbr(3.41) +1 # rows (not including the header row) +1 # columns +GARSMbr(3.41) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr30.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr30.testcase new file mode 100644 index 0000000..f0e6bd0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr30.testcase @@ -0,0 +1,7 @@ +garsmbr - bad segment number 0 +:memory: #use in-memory database +SELECT GARSMbr("001AA01") +1 # rows (not including the header row) +1 # columns +GARSMbr("001AA01") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr31.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr31.testcase new file mode 100644 index 0000000..a88a9ea --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr31.testcase @@ -0,0 +1,7 @@ +garsmbr - bad segment number 5 +:memory: #use in-memory database +SELECT GARSMbr("001AA51") +1 # rows (not including the header row) +1 # columns +GARSMbr("001AA51") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr32.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr32.testcase new file mode 100644 index 0000000..6bf861b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr32.testcase @@ -0,0 +1,7 @@ +garsmbr - bad keypad number +:memory: #use in-memory database +SELECT GARSMbr("001AA20") +1 # rows (not including the header row) +1 # columns +GARSMbr("001AA20") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr33.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr33.testcase new file mode 100644 index 0000000..246e5e7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr33.testcase @@ -0,0 +1,8 @@ +garsmbr - 361HN32 +:memory: #use in-memory database +SELECT AsText(GARSMbr("361HN32")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("361HN32")) +POLYGON((0.083333 0.166667, 0.166667 0.166667, 0.166667 0.25, 0.083333 0.25, 0.083333 0.166667)) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr34.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr34.testcase new file mode 100644 index 0000000..b5bd465 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr34.testcase @@ -0,0 +1,8 @@ +garsmbr - 361HN33 +:memory: #use in-memory database +SELECT AsText(GARSMbr("361HN33")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("361HN33")) +POLYGON((0.166667 0.166667, 0.25 0.166667, 0.25 0.25, 0.166667 0.25, 0.166667 0.166667)) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr35.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr35.testcase new file mode 100644 index 0000000..d498764 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr35.testcase @@ -0,0 +1,8 @@ +garsmbr - 361HN36 +:memory: #use in-memory database +SELECT AsText(GARSMbr("361HN36")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("361HN36")) +POLYGON((0.166667 0.083333, 0.25 0.083333, 0.25 0.166667, 0.166667 0.166667, 0.166667 0.083333)) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr36.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr36.testcase new file mode 100644 index 0000000..10d87a6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr36.testcase @@ -0,0 +1,8 @@ +garsmbr - 361HN35 +:memory: #use in-memory database +SELECT AsText(GARSMbr("361HN35")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("361HN35")) +POLYGON((0.083333 0.083333, 0.166667 0.083333, 0.166667 0.166667, 0.083333 0.166667, 0.083333 0.083333)) + diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr4.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr4.testcase new file mode 100644 index 0000000..91a95c5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr4.testcase @@ -0,0 +1,7 @@ +garsmbr - out of bounds lat +:memory: #use in-memory database +SELECT GARSMbr("001RA") +1 # rows (not including the header row) +1 # columns +GARSMbr("001RA") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr5.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr5.testcase new file mode 100644 index 0000000..13ef62b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr5.testcase @@ -0,0 +1,7 @@ +garsmbr - out of bounds longitude +:memory: #use in-memory database +SELECT GARSMbr("721AA") +1 # rows (not including the header row) +1 # columns +GARSMbr("721AA") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr6.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr6.testcase new file mode 100644 index 0000000..37b0d4e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr6.testcase @@ -0,0 +1,7 @@ +garsmbr - out of bounds longitude +:memory: #use in-memory database +SELECT GARSMbr("721AA1") +1 # rows (not including the header row) +1 # columns +GARSMbr("721AA1") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr7.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr7.testcase new file mode 100644 index 0000000..b0411d7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr7.testcase @@ -0,0 +1,7 @@ +garsmbr - bad segment number 0 +:memory: #use in-memory database +SELECT GARSMbr("001AA0") +1 # rows (not including the header row) +1 # columns +GARSMbr("001AA0") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr8.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr8.testcase new file mode 100644 index 0000000..40f119c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr8.testcase @@ -0,0 +1,7 @@ +garsmbr - bad segment number 5 +:memory: #use in-memory database +SELECT GARSMbr("001AA5") +1 # rows (not including the header row) +1 # columns +GARSMbr("001AA5") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr9.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr9.testcase new file mode 100644 index 0000000..2233c3b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/garsmbr9.testcase @@ -0,0 +1,8 @@ +garsmbr - 001AB3 +:memory: #use in-memory database +SELECT AsText(GARSMbr("001AB3")) +1 # rows (not including the header row) +1 # columns +AsText(GARSMbr("001AB3")) +POLYGON((-180 -89.5, -179.75 -89.5, -179.75 -89.25, -180 -89.25, -180 -89.5)) + diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len1.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len1.testcase new file mode 100644 index 0000000..a678fc4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geodesic-len1.testcase @@ -0,0 +1,7 @@ +geodesic length polygon +:memory: +SELECT GeodesicLength(GeomFromText("POLYGON((0 0, 1 0, 0 0, 0 0))", 4326)); +1 # rows +1 # column +GeodesicLength(GeomFromText("POLYGON((0 0, 1 0, 0 0, 0 0))", 4326)) +222638.98:9 diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len2.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len2.testcase new file mode 100644 index 0000000..a2fd4c0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geodesic-len2.testcase @@ -0,0 +1,7 @@ +geodesic length linestring +:memory: +SELECT GeodesicLength(GeomFromText("LINESTRING(0 0, 1 0, 0 0)", 4326)); +1 # rows +1 # column +GeodesicLength(GeomFromText("LINESTRING(0 0, 1 0, 0 0)", 4326)) +222638.98:9 diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len3.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len3.testcase new file mode 100644 index 0000000..d372915 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geodesic-len3.testcase @@ -0,0 +1,7 @@ +geodesic length linestringZ +:memory: +SELECT GeodesicLength(GeomFromText("LINESTRINGZ(0 0 4, 1 0 2, 0 0 1)", 4326)); +1 # rows +1 # column +GeodesicLength(GeomFromText("LINESTRINGZ(0 0 4, 1 0 2, 0 0 1)", 4326)) +222638.98:9 diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len4.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len4.testcase new file mode 100644 index 0000000..3eeb8c7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geodesic-len4.testcase @@ -0,0 +1,7 @@ +geodesic length linestringM +:memory: +SELECT GeodesicLength(GeomFromText("LINESTRINGM(0 0 4, 1 0 2, 0 0 1)", 4326)); +1 # rows +1 # column +GeodesicLength(GeomFromText("LINESTRINGM(0 0 4, 1 0 2, 0 0 1)", 4326)) +222638.98:9 diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len5.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len5.testcase new file mode 100644 index 0000000..098fb2b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geodesic-len5.testcase @@ -0,0 +1,7 @@ +geodesic length linestring ZM +:memory: +SELECT GeodesicLength(GeomFromText("LINESTRINGZM(0 0 4 1, 1 0 2 6, 0 0 1 34)", 4326)); +1 # rows +1 # column +GeodesicLength(GeomFromText("LINESTRINGZM(0 0 4 1, 1 0 2 6, 0 0 1 34)", 4326)) +222638.98:9 diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len6.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len6.testcase new file mode 100644 index 0000000..16bf08a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geodesic-len6.testcase @@ -0,0 +1,7 @@ +geodesic length (wrong) TEXT arg +:memory: +SELECT GeodesicLength('alpha'); +1 # rows +1 # column +GeodesicLength('alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len7.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len7.testcase new file mode 100644 index 0000000..db02040 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geodesic-len7.testcase @@ -0,0 +1,7 @@ +geodesic length (wrong) zeroblob arg +:memory: +SELECT GeodesicLength(zeroblob(23)); +1 # rows +1 # column +GeodesicLength(zeroblob(23)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len8.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len8.testcase new file mode 100644 index 0000000..ae9ea46 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geodesic-len8.testcase @@ -0,0 +1,7 @@ +geodesic length polygon with hole +:memory: +SELECT GeodesicLength(GeomFromText("POLYGON((11.5 43.5, 11.8 43.5, 11.8 43.8, 11.5 43.8, 11.5 43.5), (11.6 43.6, 11.7 43.6, 11.7 43.7, 11.6 32.7, 11.6 43.6))", 4326)); +1 # rows +1 # column +GeodesicLength(GeomFromText("POLYGON((11.5 43.5, 11.8 43.5, 11.8 43.8, 11.5 43.8, 11.5 43.5), (11.6 43.6, 11.7 43.6, 11.7 43.7, 11.6 32.7, 11.6 43.6))", 4326)) +2565198.35:10 diff --git a/src/spatialite/test/sql_stmt_tests/geojson1.testcase b/src/spatialite/test/sql_stmt_tests/geojson1.testcase new file mode 100644 index 0000000..4f150b2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geojson1.testcase @@ -0,0 +1,8 @@ +GeoJSON Point: excessive precision +:memory: #use in-memory database +SELECT AsGeoJSON(GeomFromText("POINT(1 2)", 4326), 44, 2); +1 # rows (not including the header row) +1 # columns +AsGeoJSON(GeomFromText("POINT(1 2)", 4326), 44, 2) +{"type":"Point","crs":{"type":"name","properties":{"name":"EPSG:4326"}},"coordinates":[1,2]}:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/geojson2.testcase b/src/spatialite/test/sql_stmt_tests/geojson2.testcase new file mode 100644 index 0000000..4e2b593 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geojson2.testcase @@ -0,0 +1,8 @@ +GeoJSON Polygon +:memory: #use in-memory database +SELECT AsGeoJSON(GeomFromText("POLYGON((5 5, 6 5, 6 6, 5 6, 5 5))", 4326), 2, 5); +1 # rows (not including the header row) +1 # columns +AsGeoJSON(GeomFromText("POLYGON((5 5, 6 5, 6 6, 5 6, 5 5))", 4326), 2, 5) +{"type":"Polygon","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG:4326"}},"bbox":[5,5,6,6],"coordinates":[[[5,5],[6,5],[6,6],[5,6],[5,5]]]}:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/geojson3.testcase b/src/spatialite/test/sql_stmt_tests/geojson3.testcase new file mode 100644 index 0000000..79bc9b7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geojson3.testcase @@ -0,0 +1,8 @@ +GeoJSON MultiPoint +:memory: #use in-memory database +SELECT AsGeoJSON(GeomFromText("MULTIPOINT(5 5, 6 6)", 4326), 2, 5); +1 # rows (not including the header row) +1 # columns +AsGeoJSON(GeomFromText("MULTIPOINT(5 5, 6 6)", 4326), 2, 5) +{"type":"MultiPoint","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG:4326"}},"bbox":[5,5,6,6],"coordinates":[[5,5],[6,6]]}:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/geojson4.testcase b/src/spatialite/test/sql_stmt_tests/geojson4.testcase new file mode 100644 index 0000000..93693cd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geojson4.testcase @@ -0,0 +1,8 @@ +GeoJSON MultiPolygon +:memory: #use in-memory database +SELECT AsGeoJSON(GeomFromText("MULTIPOLYGON(((5 5, 6 5, 6 6, 5 6, 5 5)), ((3 3, 4 3, 4 4, 3 4, 4 4)))", 4326), 2, 5); +1 # rows (not including the header row) +1 # columns +AsGeoJSON(GeomFromText("MULTIPOLYGON(((5 5, 6 5, 6 6, 5 6, 5 5)), ((3 3, 4 3, 4 4, 3 4, 4 4)))", 4326), 2, 5) +{"type":"MultiPolygon","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG:4326"}},"bbox":[3,3,6,6],"coordinates":[[[[5,5],[6,5],[6,6],[5,6],[5,5]]],[[[3,3],[4,3],[4,4],[3,4],[4,4]]]]}:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/geojson5.testcase b/src/spatialite/test/sql_stmt_tests/geojson5.testcase new file mode 100644 index 0000000..16c13f3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geojson5.testcase @@ -0,0 +1,8 @@ +GeoJSON GeometryCollection (Polygon+Point) +:memory: #use in-memory database +SELECT AsGeoJSON(GeomFromText("GEOMETRYCOLLECTION(POLYGON((5 5, 6 5, 6 6, 5 6, 5 5)), POINT(7 8))", 4326), 2, 5); +1 # rows (not including the header row) +1 # columns +AsGeoJSON(GeomFromText("GEOMETRYCOLLECTION(POLYGON((5 5, 6 5, 6 6, 5 6, 5 5)), POINT(7 8))", 4326), 2, 5) +{"type":"GeometryCollection","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG:4326"}},"bbox":[5,5,7,8],"geometries":[{"type":"Point","coordinates":[7,8]},{"type":"Polygon","coordinates":[[[5,5],[6,5],[6,6],[5,6],[5,5]]]}]}:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/geojson6.testcase b/src/spatialite/test/sql_stmt_tests/geojson6.testcase new file mode 100644 index 0000000..8980344 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geojson6.testcase @@ -0,0 +1,8 @@ +GeoJSON GeometryCollection (Linestring + Linestring) +:memory: #use in-memory database +SELECT AsGeoJSON(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(5 5, 6 6), LINESTRING(7 8, 8 7))", 4326), 2, 5); +1 # rows (not including the header row) +1 # columns +AsGeoJSON(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(5 5, 6 6), LINESTRING(7 8, 8 7))", 4326), 2, 5) +{"type":"GeometryCollection","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG:4326"}},"bbox":[5,5,8,8],"geometries":[{"type":"LineString","coordinates":[[5,5],[6,6]]},{"type":"LineString","coordinates":[[7,8],[8,7]]}]}:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/geomcollfromtext1.testcase b/src/spatialite/test/sql_stmt_tests/geomcollfromtext1.testcase new file mode 100644 index 0000000..6a9f61b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomcollfromtext1.testcase @@ -0,0 +1,7 @@ +geometrycollectionfromtext1 +:memory: #use in-memory database +SELECT AsWkt(GeometryCollectionFromText("GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))", 4326)) +1 # rows (not including the header row) +1 # columns +AsWkt(GeometryCollectionFromText("GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))", 4326)) +GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomcollfromtext2.testcase b/src/spatialite/test/sql_stmt_tests/geomcollfromtext2.testcase new file mode 100644 index 0000000..c4a9977 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomcollfromtext2.testcase @@ -0,0 +1,7 @@ +geometrycollectionfromtext2 +:memory: #use in-memory database +SELECT AsWkt(GeometryCollectionFromText("GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))")) +1 # rows (not including the header row) +1 # columns +AsWkt(GeometryCollectionFromText("GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))")) +GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints1.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints1.testcase new file mode 100644 index 0000000..861ad41 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints1.testcase @@ -0,0 +1,8 @@ +geometry constraints - 3 arg, null +:memory: #use in-memory database +SELECT GeometryConstraints(null, "POINT", 4326) +1 # rows (not including the header row) +1 # columns +GeometryConstraints(null, "POINT", 4326) +1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints10.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints10.testcase new file mode 100644 index 0000000..fa0da3a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints10.testcase @@ -0,0 +1,8 @@ +geometry constraints - 4 arg, zeroblob 4 +:memory: #use in-memory database +SELECT GeometryConstraints(zeroblob(4), "POINT", 4326, "XYM") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(zeroblob(4), "POINT", 4326, "XYM") +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints11.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints11.testcase new file mode 100644 index 0000000..7178220 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints11.testcase @@ -0,0 +1,8 @@ +geometry constraints - 4 arg, zeroblob 20 +:memory: #use in-memory database +SELECT GeometryConstraints(zeroblob(20), "POINT", 4326, "XYM") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(zeroblob(20), "POINT", 4326, "XYM") +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints12.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints12.testcase new file mode 100644 index 0000000..d18f466 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints12.testcase @@ -0,0 +1,8 @@ +geometry constraints - 4 arg, zeroblob 50 +:memory: #use in-memory database +SELECT GeometryConstraints(zeroblob(50), "POINT", 4326, "XYM") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(zeroblob(50), "POINT", 4326, "XYM") +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints13.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints13.testcase new file mode 100644 index 0000000..af24b9b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints13.testcase @@ -0,0 +1,8 @@ +geometry constraints - 3 arg, int arg 2 +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("POINT(1 2)", 4326), 40, 4326) +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("POINT(1 2)", 4326), 40, 4326) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints14.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints14.testcase new file mode 100644 index 0000000..193a6dc --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints14.testcase @@ -0,0 +1,8 @@ +geometry constraints - 4 arg, text arg 3 +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("POINT(1 2)", 4326), "POINT", "hello", 4326) +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("POINT(1 2)", 4326), "POINT", "hello", 4326) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints15.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints15.testcase new file mode 100644 index 0000000..f95ac07 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints15.testcase @@ -0,0 +1,8 @@ +geometry constraints - MULTILINESTRING +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("MULTILINESTRING((1 2, 4 3),(0 4, 1 9))", 4326), "MULTILINESTRING", 4326) +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("MULTILINESTRING((1 2, 4 3),(0 4, 1 9))", 4326), "MULTILINESTRING", 4326) +1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints16.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints16.testcase new file mode 100644 index 0000000..2f24ee4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints16.testcase @@ -0,0 +1,8 @@ +geometry constraints - MULTILINESTRINGZ +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("MULTILINESTRINGZ((1 2 3, 4 3 1),(0 4 4, 1 9 7))", 4326), "MULTILINESTRING", 4326, "XYZ") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("MULTILINESTRINGZ((1 2 3, 4 3 1),(0 4 4, 1 9 7))", 4326), "MULTILINESTRING", 4326, "XYZ") +1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints17.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints17.testcase new file mode 100644 index 0000000..d96dee1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints17.testcase @@ -0,0 +1,8 @@ +geometry constraints - MULTILINESTRINGZ +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("MULTILINESTRINGZ((1 2 3, 4 3 1),(0 4 4, 1 9 7))", 4326), "MULTILINESTRING", 4326, "XYM") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("MULTILINESTRINGZ((1 2 3, 4 3 1),(0 4 4, 1 9 7))", 4326), "MULTILINESTRING", 4326, "XYM") +0 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints18.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints18.testcase new file mode 100644 index 0000000..508ac48 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints18.testcase @@ -0,0 +1,8 @@ +geometry constraints - MULTILINESTRINGM +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("MULTILINESTRINGM((1 2 3, 4 3 1),(0 4 4, 1 9 7))", 4326), "MULTILINESTRING", 4326, "XYM") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("MULTILINESTRINGM((1 2 3, 4 3 1),(0 4 4, 1 9 7))", 4326), "MULTILINESTRING", 4326, "XYM") +1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints19.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints19.testcase new file mode 100644 index 0000000..3b422af --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints19.testcase @@ -0,0 +1,8 @@ +geometry constraints - MULTILINESTRINGZM +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("MULTILINESTRINGZM((1 2 3 1, 4 3 1 2),(0 4 4 3, 1 9 7 4))", 4326), "MULTILINESTRING", 4326, "XYZM") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("MULTILINESTRINGZM((1 2 3 1, 4 3 1 2),(0 4 4 3, 1 9 7 4))", 4326), "MULTILINESTRING", 4326, "XYZM") +1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints2.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints2.testcase new file mode 100644 index 0000000..46906fb --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints2.testcase @@ -0,0 +1,8 @@ +geometry constraints - 3 arg, blob +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326) +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326) +1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints20.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints20.testcase new file mode 100644 index 0000000..a3b428b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints20.testcase @@ -0,0 +1,8 @@ +geometry constraints - MULTIPOLYGONZM +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("MULTIPOLYGONZM(((0 0 0 0, 1 0 0 0, 1 1 0 0, 0 0 0 0)),((0 0 0 0, -1 0 0 0, -1 -1 0 0, 0 0 0 0)))", 4326), "MULTILINESTRING", 4326, "XYZM") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("MULTIPOLYGONZM(((0 0 0 0, 1 0 0 0, 1 1 0 0, 0 0 0 0)),((0 0 0 0, -1 0 0 0, -1 -1 0 0, 0 0 0 0)))", 4326), "MULTILINESTRING", 4326, "XYZM") +0 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints21.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints21.testcase new file mode 100644 index 0000000..ddc0876 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints21.testcase @@ -0,0 +1,8 @@ +geometry constraints - MULTIPOLYGONZM +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("MULTIPOLYGONZM(((0 0 0 0, 1 0 0 0, 1 1 0 0, 0 0 0 0)),((0 0 0 0, -1 0 0 0, -1 -1 0 0, 0 0 0 0)))", 4326), "MULTIPOLYGON", 4326, "XYZM") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("MULTIPOLYGONZM(((0 0 0 0, 1 0 0 0, 1 1 0 0, 0 0 0 0)),((0 0 0 0, -1 0 0 0, -1 -1 0 0, 0 0 0 0)))", 4326), "MULTIPOLYGON", 4326, "XYZM") +1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints22.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints22.testcase new file mode 100644 index 0000000..9b89f90 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints22.testcase @@ -0,0 +1,8 @@ +geometry constraints - MULTIPOLYGONZ +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("MULTIPOLYGONZ(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0)))", 4326), "MULTIPOLYGON", 4326, "XYZ") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("MULTIPOLYGONZ(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0)))", 4326), "MULTIPOLYGON", 4326, "XYZ") +1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints23.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints23.testcase new file mode 100644 index 0000000..c796524 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints23.testcase @@ -0,0 +1,8 @@ +geometry constraints - MULTIPOLYGONM +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("MULTIPOLYGONM(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0)))", 4326), "MULTIPOLYGON", 4326, "XYM") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("MULTIPOLYGONM(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0)))", 4326), "MULTIPOLYGON", 4326, "XYM") +1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints24.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints24.testcase new file mode 100644 index 0000000..ca2be3a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints24.testcase @@ -0,0 +1,8 @@ +geometry constraints - GEOMETRYCOLLECTION +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("GEOMETRYCOLLECTION(MULTIPOLYGONM(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XYM") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("GEOMETRYCOLLECTION(MULTIPOLYGONM(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XYM") +1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints25.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints25.testcase new file mode 100644 index 0000000..3c14df7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints25.testcase @@ -0,0 +1,8 @@ +geometry constraints - GEOMETRYCOLLECTION +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("GEOMETRYCOLLECTIONZ(MULTIPOLYGONZ(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XYZ") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("GEOMETRYCOLLECTIONZ(MULTIPOLYGONZ(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XYZ") +1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints26.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints26.testcase new file mode 100644 index 0000000..b3f262d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints26.testcase @@ -0,0 +1,8 @@ +geometry constraints - GEOMETRYCOLLECTION +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0, 1 0, 1 1, 0 0)),((0 0, -1 0, -1 -1, 0 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XY") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0, 1 0, 1 1, 0 0)),((0 0, -1 0, -1 -1, 0 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XY") +1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints27.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints27.testcase new file mode 100644 index 0000000..5b949b9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints27.testcase @@ -0,0 +1,8 @@ +geometry constraints - GEOMETRYCOLLECTION +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("GEOMETRYCOLLECTIONZM(MULTIPOLYGONZM(((0 0 4 0, 1 0 4 0, 1 1 4 0, 0 0 4 0)),((0 0 4 0, -1 0 4 0, -1 -1 4 0, 0 0 4 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XYZM") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("GEOMETRYCOLLECTIONZM(MULTIPOLYGONZM(((0 0 4 0, 1 0 4 0, 1 1 4 0, 0 0 4 0)),((0 0 4 0, -1 0 4 0, -1 -1 4 0, 0 0 4 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XYZM") +1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints28.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints28.testcase new file mode 100644 index 0000000..fdbe504 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints28.testcase @@ -0,0 +1,8 @@ +geometry constraints - GEOMETRY +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("GEOMETRYCOLLECTIONZM(MULTIPOLYGONZM(((0 0 4 0, 1 0 4 0, 1 1 4 0, 0 0 4 0)),((0 0 4 0, -1 0 4 0, -1 -1 4 0, 0 0 4 0))))", 4326), "GEOMETRY", 4326, "XYZM") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("GEOMETRYCOLLECTIONZM(MULTIPOLYGONZM(((0 0 4 0, 1 0 4 0, 1 1 4 0, 0 0 4 0)),((0 0 4 0, -1 0 4 0, -1 -1 4 0, 0 0 4 0))))", 4326), "GEOMETRY", 4326, "XYZM") +1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints3.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints3.testcase new file mode 100644 index 0000000..ffe0d38 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints3.testcase @@ -0,0 +1,8 @@ +geometry constraints - 3 arg, POINT / LINESTRING +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("Point(1 2)", 4326), "LINESTRING", 4326) +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("Point(1 2)", 4326), "LINESTRING", 4326) +0 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints4.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints4.testcase new file mode 100644 index 0000000..0a090b6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints4.testcase @@ -0,0 +1,8 @@ +geometry constraints - 3 arg, POINT / MULTIPOINT +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("Point(1 2)", 4326), "MULTIPOINT", 4326) +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("Point(1 2)", 4326), "MULTIPOINT", 4326) +0 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints5.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints5.testcase new file mode 100644 index 0000000..3b4492b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints5.testcase @@ -0,0 +1,8 @@ +geometry constraints - 3 arg, POINT bad SRID +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("Point(1 2)", 4386), "POINT", 4326) +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("Point(1 2)", 4386), "POINT", 4326) +0 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints6.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints6.testcase new file mode 100644 index 0000000..0bd8047 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints6.testcase @@ -0,0 +1,8 @@ +geometry constraints - 4 arg, POINT +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326, "XY") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326, "XY") +1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints7.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints7.testcase new file mode 100644 index 0000000..ec00e9b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints7.testcase @@ -0,0 +1,8 @@ +geometry constraints - 4 arg, POINT vs XYZ +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326, "XYZ") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326, "XYZ") +0 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints8.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints8.testcase new file mode 100644 index 0000000..d05a4f7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints8.testcase @@ -0,0 +1,8 @@ +geometry constraints - 3 arg, text +:memory: #use in-memory database +SELECT GeometryConstraints("hello", "POINT", 4326) +1 # rows (not including the header row) +1 # columns +GeometryConstraints("hello", "POINT", 4326) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints9.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints9.testcase new file mode 100644 index 0000000..33ddd6c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomconstraints9.testcase @@ -0,0 +1,8 @@ +geometry constraints - 4 arg, POINT vs XYM +:memory: #use in-memory database +SELECT GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326, "XYM") +1 # rows (not including the header row) +1 # columns +GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326, "XYM") +0 + diff --git a/src/spatialite/test/sql_stmt_tests/geometryn.testcase b/src/spatialite/test/sql_stmt_tests/geometryn.testcase new file mode 100644 index 0000000..fc9b6f7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn.testcase @@ -0,0 +1,7 @@ +Geometry N - multipoint +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 1)); +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 1)) +POINT(1 2) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn1.testcase b/src/spatialite/test/sql_stmt_tests/geometryn1.testcase new file mode 100644 index 0000000..aca6bf1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn1.testcase @@ -0,0 +1,7 @@ +Geometry N - multipoint - out of range 0 +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 0)); +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn10.testcase b/src/spatialite/test/sql_stmt_tests/geometryn10.testcase new file mode 100644 index 0000000..1e710c5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn10.testcase @@ -0,0 +1,7 @@ +Geometry N - pointZM +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("POINTZM(1 2 4 1.6)"), 1)); +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("POINTZM(1 2 4 1.6)"), 1)) +POINT ZM(1 2 4 1.6) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn11.testcase b/src/spatialite/test/sql_stmt_tests/geometryn11.testcase new file mode 100644 index 0000000..2087ba8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn11.testcase @@ -0,0 +1,7 @@ +Geometry N - multilinestringzm +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTILINESTRINGZM((1 2 4 1.6, 4 2.3 9 8.7, 1 2 3 1),(0 1 2 3, 8 1 1 4))"), 2)); +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTILINESTRINGZM((1 2 4 1.6, 4 2.3 9 8.7, 1 2 3 1),(0 1 2 3, 8 1 1 4))"), 2)) +LINESTRING ZM(0 1 2 3, 8 1 1 4) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn12.testcase b/src/spatialite/test/sql_stmt_tests/geometryn12.testcase new file mode 100644 index 0000000..1e65f80 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn12.testcase @@ -0,0 +1,7 @@ +Geometry N - multilinestringz +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTILINESTRINGZ((1 2 1.6, 4 2.3 8.7, 1 2 1),(0 1 2, 8 1 1))"), 2)) +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTILINESTRINGZ((1 2 1.6, 4 2.3 8.7, 1 2 1),(0 1 2, 8 1 1))"), 2)) +LINESTRING Z(0 1 2, 8 1 1) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn13.testcase b/src/spatialite/test/sql_stmt_tests/geometryn13.testcase new file mode 100644 index 0000000..3f914ca --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn13.testcase @@ -0,0 +1,7 @@ +Geometry N - multilinestringm +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTILINESTRINGM((1 2 1.6, 4 2.3 8.7, 1 2 1),(0 1 2, 8 1 1))"), 2)) +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTILINESTRINGM((1 2 1.6, 4 2.3 8.7, 1 2 1),(0 1 2, 8 1 1))"), 2)) +LINESTRING M(0 1 2, 8 1 1) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn14.testcase b/src/spatialite/test/sql_stmt_tests/geometryn14.testcase new file mode 100644 index 0000000..5949929 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn14.testcase @@ -0,0 +1,7 @@ +Geometry N - multilinestring +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTILINESTRING((1 1.6, 2.3 8.7, 2 1),(1 2, 1 1))"), 2)) +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTILINESTRING((1 1.6, 2.3 8.7, 2 1),(1 2, 1 1))"), 2)) +LINESTRING(1 2, 1 1) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn15.testcase b/src/spatialite/test/sql_stmt_tests/geometryn15.testcase new file mode 100644 index 0000000..63115cc --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn15.testcase @@ -0,0 +1,7 @@ +Geometry N - multipoint +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTIPOINT(1 1.6, 2.3 8.7, 2 1, 1 2, 1 1)"), 3)) +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTIPOINT(1 1.6, 2.3 8.7, 2 1, 1 2, 1 1)"), 3)) +POINT(2 1) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn16.testcase b/src/spatialite/test/sql_stmt_tests/geometryn16.testcase new file mode 100644 index 0000000..d200241 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn16.testcase @@ -0,0 +1,7 @@ +Geometry N - multipolygon +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 8 2, 8 8, 2 8, 2 2)),((0 0, -10 0, -10 -10, 0 -10, 0 0)))"), 1)) +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 8 2, 8 8, 2 8, 2 2)),((0 0, -10 0, -10 -10, 0 -10, 0 0)))"), 1)) +POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (2 2, 8 2, 8 8, 2 8, 2 2)) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn17.testcase b/src/spatialite/test/sql_stmt_tests/geometryn17.testcase new file mode 100644 index 0000000..15abc6a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn17.testcase @@ -0,0 +1,7 @@ +Geometry N - multipolygonM +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTIPOLYGONM(((0 0 1, 10 0 1, 10 10 1, 0 10 1, 0 0 1),(2 2 2, 8 2 2, 8 8 2, 2 8 2, 2 2 2)),((0 0 3, -10 0 3, -10 -10 3, 0 -10 3, 0 0 3)))"), 1)) +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTIPOLYGONM(((0 0 1, 10 0 1, 10 10 1, 0 10 1, 0 0 1),(2 2 2, 8 2 2, 8 8 2, 2 8 2, 2 2 2)),((0 0 3, -10 0 3, -10 -10 3, 0 -10 3, 0 0 3)))"), 1)) +POLYGON M((0 0 1, 10 0 1, 10 10 1, 0 10 1, 0 0 1), (2 2 2, 8 2 2, 8 8 2, 2 8 2, 2 2 2)) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn18.testcase b/src/spatialite/test/sql_stmt_tests/geometryn18.testcase new file mode 100644 index 0000000..d38c6b9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn18.testcase @@ -0,0 +1,7 @@ +Geometry N - multipolygonZ +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTIPOLYGONZ(((0 0 1, 10 0 1, 10 10 1, 0 10 1, 0 0 1),(2 2 2, 8 2 2, 8 8 2, 2 8 2, 2 2 2)),((0 0 3, -10 0 3, -10 -10 3, 0 -10 3, 0 0 3)))"), 1)) +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTIPOLYGONZ(((0 0 1, 10 0 1, 10 10 1, 0 10 1, 0 0 1),(2 2 2, 8 2 2, 8 8 2, 2 8 2, 2 2 2)),((0 0 3, -10 0 3, -10 -10 3, 0 -10 3, 0 0 3)))"), 1)) +POLYGON Z((0 0 1, 10 0 1, 10 10 1, 0 10 1, 0 0 1), (2 2 2, 8 2 2, 8 8 2, 2 8 2, 2 2 2)) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn19.testcase b/src/spatialite/test/sql_stmt_tests/geometryn19.testcase new file mode 100644 index 0000000..c46fb1c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn19.testcase @@ -0,0 +1,7 @@ +Geometry N - multipolygonZM +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTIPOLYGONZM(((0 0 1 2, 10 0 1 2, 10 10 1 2, 0 10 1 2, 0 0 1 2),(2 2 2 3, 8 2 2 3, 8 8 2 3, 2 8 2 3, 2 2 2 3)),((0 0 3 4, -10 0 3 4, -10 -10 3 4, 0 -10 3 4, 0 0 3 4)))"), 1)) +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTIPOLYGONZM(((0 0 1 2, 10 0 1 2, 10 10 1 2, 0 10 1 2, 0 0 1 2),(2 2 2 3, 8 2 2 3, 8 8 2 3, 2 8 2 3, 2 2 2 3)),((0 0 3 4, -10 0 3 4, -10 -10 3 4, 0 -10 3 4, 0 0 3 4)))"), 1)) +POLYGON ZM((0 0 1 2, 10 0 1 2, 10 10 1 2, 0 10 1 2, 0 0 1 2), (2 2 2 3, 8 2 2 3, 8 8 2 3, 2 8 2 3, 2 2 2 3)) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn2.testcase b/src/spatialite/test/sql_stmt_tests/geometryn2.testcase new file mode 100644 index 0000000..ac9dd66 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn2.testcase @@ -0,0 +1,7 @@ +Geometry N - multipoint - out of range 2 +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 2)); +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 2)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn20.testcase b/src/spatialite/test/sql_stmt_tests/geometryn20.testcase new file mode 100644 index 0000000..c2deb97 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn20.testcase @@ -0,0 +1,7 @@ +Geometry N - multipolygonZM - second poly +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTIPOLYGONZM(((0 0 1 2, 10 0 1 2, 10 10 1 2, 0 10 1 2, 0 0 1 2),(2 2 2 3, 8 2 2 3, 8 8 2 3, 2 8 2 3, 2 2 2 3)),((0 0 3 4, -10 0 3 4, -10 -10 3 4, 0 -10 3 4, 0 0 3 4)))"), 2)) +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTIPOLYGONZM(((0 0 1 2, 10 0 1 2, 10 10 1 2, 0 10 1 2, 0 0 1 2),(2 2 2 3, 8 2 2 3, 8 8 2 3, 2 8 2 3, 2 2 2 3)),((0 0 3 4, -10 0 3 4, -10 -10 3 4, 0 -10 3 4, 0 0 3 4)))"), 2)) +POLYGON ZM((0 0 3 4, -10 0 3 4, -10 -10 3 4, 0 -10 3 4, 0 0 3 4)) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn3.testcase b/src/spatialite/test/sql_stmt_tests/geometryn3.testcase new file mode 100644 index 0000000..34c41f5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn3.testcase @@ -0,0 +1,7 @@ +Geometry N - text input (error) +:memory: #use in-memory database +SELECT GeometryN("text", 2); +1 # rows (not including the header row) +1 # columns +GeometryN("text", 2) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn4.testcase b/src/spatialite/test/sql_stmt_tests/geometryn4.testcase new file mode 100644 index 0000000..42f355f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn4.testcase @@ -0,0 +1,7 @@ +Geometry N - bad blob input (error) +:memory: #use in-memory database +SELECT GeometryN(zeroblob(2), 1); +1 # rows (not including the header row) +1 # columns +GeometryN(zeroblob(2), 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn5.testcase b/src/spatialite/test/sql_stmt_tests/geometryn5.testcase new file mode 100644 index 0000000..132e633 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn5.testcase @@ -0,0 +1,8 @@ +Geometry N - toxic blob +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 1)); +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 1)) +POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5)) + diff --git a/src/spatialite/test/sql_stmt_tests/geometryn6.testcase b/src/spatialite/test/sql_stmt_tests/geometryn6.testcase new file mode 100644 index 0000000..ddf9b31 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn6.testcase @@ -0,0 +1,7 @@ +Geometry N - multipoint - float index +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 0.2)); +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 0.2)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn7.testcase b/src/spatialite/test/sql_stmt_tests/geometryn7.testcase new file mode 100644 index 0000000..a42f18b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn7.testcase @@ -0,0 +1,7 @@ +Geometry N - multipointZ +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTIPOINTZ(1 2 4)"), 1)); +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTIPOINTZ(1 2 4)"), 1)) +POINT Z(1 2 4) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn8.testcase b/src/spatialite/test/sql_stmt_tests/geometryn8.testcase new file mode 100644 index 0000000..79fa4d3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn8.testcase @@ -0,0 +1,7 @@ +Geometry N - multipointM +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTIPOINTM(1 2 4)"), 1)); +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTIPOINTM(1 2 4)"), 1)) +POINT M(1 2 4) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn9.testcase b/src/spatialite/test/sql_stmt_tests/geometryn9.testcase new file mode 100644 index 0000000..31c4ccd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geometryn9.testcase @@ -0,0 +1,7 @@ +Geometry N - multipointZM +:memory: #use in-memory database +SELECT AsText(GeometryN(GeomFromText("MULTIPOINTZM(1 2 4 1.6)"), 1)); +1 # rows (not including the header row) +1 # columns +AsText(GeometryN(GeomFromText("MULTIPOINTZM(1 2 4 1.6)"), 1)) +POINT ZM(1 2 4 1.6) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromewkb1.testcase b/src/spatialite/test/sql_stmt_tests/geomfromewkb1.testcase new file mode 100644 index 0000000..b9a6f4b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromewkb1.testcase @@ -0,0 +1,7 @@ +From EWKB - bad text +:memory: +SELECT GeomFromEwkb("Hello!") +1 # rows +1 # column +GeomFromEwkb("Hello!") +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromewkb2.testcase b/src/spatialite/test/sql_stmt_tests/geomfromewkb2.testcase new file mode 100644 index 0000000..9207232 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromewkb2.testcase @@ -0,0 +1,7 @@ +From EWKB - non text +:memory: +SELECT GeomFromEwkb(26) +1 # rows +1 # column +GeomFromEwkb(26) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml1.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml1.testcase new file mode 100644 index 0000000..18cf042 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml1.testcase @@ -0,0 +1,7 @@ +From KML - non text +:memory: +SELECT GeomFromKML(26) +1 # rows +1 # column +GeomFromKML(26) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml10.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml10.testcase new file mode 100644 index 0000000..3ccc635 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml10.testcase @@ -0,0 +1,7 @@ +From KML - Multigeometry - Point +:memory: +SELECT AsText(GeomFromKML("-122.0822035425683,37.42228990140251,0")) +1 # rows +1 # column +AsText(GeomFromKML("-122.0822035425683,37.42228990140251,0")) +MULTIPOINT Z(-122.082204 37.42229 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml11.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml11.testcase new file mode 100644 index 0000000..ef0453d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml11.testcase @@ -0,0 +1,7 @@ +From KML - Geometrycollection - POLYGON with interior, 2-D +:memory: +SELECT AsText(GeomFromKML(" -122.43193945401,37.801983684521 -122.431564131101,37.8020327731402 -122.431499536494,37.801715236748 -122.43187136387,37.8016634915437 -122.43193945401,37.801983684521 -122.431885303019,37.8019316061803 -122.431762847554,37.8019476932246 -122.431719843168,37.8017374462006 -122.431841863906,37.8017213314352 -122.431885303019,37.8019316061803 -122.431714248439,37.8019544341044 -122.431592404659,37.8019694509363 -122.431548777661,37.8017591041777 -122.431671453253,37.8017428443014 -122.431714248439,37.8019544341044 ")) +1 # rows +1 # column +AsText(GeomFromKML(" -122.43193945401,37.801983684521 -122.431564131101,37.8020327731402 -122.431499536494,37.801715236748 -122.43187136387,37.8016634915437 -122.43193945401,37.801983684521 -122.431885303019,37.8019316061803 -122.431762847554,37.8019476932246 -122.431719843168,37.8017374462006 -122.431841863906,37.8017213314352 -122.431885303019,37.8019316061803 -122.431714248439,37.8019544341044 -122.431592404659,37.8019694509363 -122.431548777661,37.8017591041777 -122.431671453253,37.8017428443014 -122.431714248439,37.8019544341044 ")) +MULTIPOLYGON(((-122.431939 37.801984, -122.431564 37.802033, -122.4315 37.801715, -122.431871 37.801663, -122.431939 37.801984), (-122.431885 37.801932, -122.431763 37.801948, -122.43172 37.801737, -122.431842 37.801721, -122.431885 37.801932), (-122.431714 37.801954, -122.431592 37.801969, -122.431549 37.801759, -122.431671 37.801743, -122.431714 37.801954))) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml12.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml12.testcase new file mode 100644 index 0000000..825e1ef --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml12.testcase @@ -0,0 +1,7 @@ +From KML - LINESTRING +:memory: +SELECT AsText(GeomFromKML(" -112.2550785337791,36.07954952145647 -112.2549277039738,36.08117083492122 -112.2552505069063,36.08260761307279 -112.2564540158376,36.08395660588506 -112.2580238976449,36.08511401044813 -112.2595218489022,36.08584355239394 -112.262073428656,36.08626019085147 -112.2633204928495,36.08621519860091 -112.2644963846444,36.08627897945274 -112.2656969554589,36.08649599090644 ")) +1 # rows +1 # column +AsText(GeomFromKML(" -112.2550785337791,36.07954952145647 -112.2549277039738,36.08117083492122 -112.2552505069063,36.08260761307279 -112.2564540158376,36.08395660588506 -112.2580238976449,36.08511401044813 -112.2595218489022,36.08584355239394 -112.262073428656,36.08626019085147 -112.2633204928495,36.08621519860091 -112.2644963846444,36.08627897945274 -112.2656969554589,36.08649599090644 ")) +LINESTRING(-112.255079 36.07955, -112.254928 36.081171, -112.255251 36.082608, -112.256454 36.083957, -112.258024 36.085114, -112.259522 36.085844, -112.262073 36.08626, -112.26332 36.086215, -112.264496 36.086279, -112.265697 36.086496) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml13.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml13.testcase new file mode 100644 index 0000000..4e54afc --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml13.testcase @@ -0,0 +1,7 @@ +From KML - Multigeometry - Point 2D +:memory: +SELECT AsText(GeomFromKML("-122.0822035425683,37.42228990140251")) +1 # rows +1 # column +AsText(GeomFromKML("-122.0822035425683,37.42228990140251")) +MULTIPOINT(-122.082204 37.42229) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml14.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml14.testcase new file mode 100644 index 0000000..954640c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml14.testcase @@ -0,0 +1,7 @@ +From KML - MultiGeometry LINESTRING +:memory: +SELECT AsText(GeomFromKML(" -112.2550785337791,36.07954952145647 -112.2549277039738,36.08117083492122 -112.2552505069063,36.08260761307279 -112.2564540158376,36.08395660588506 -112.2580238976449,36.08511401044813 -112.2595218489022,36.08584355239394 -112.262073428656,36.08626019085147 -112.2633204928495,36.08621519860091 -112.2644963846444,36.08627897945274 -112.2656969554589,36.08649599090644 ")) +1 # rows +1 # column +AsText(GeomFromKML(" -112.2550785337791,36.07954952145647 -112.2549277039738,36.08117083492122 -112.2552505069063,36.08260761307279 -112.2564540158376,36.08395660588506 -112.2580238976449,36.08511401044813 -112.2595218489022,36.08584355239394 -112.262073428656,36.08626019085147 -112.2633204928495,36.08621519860091 -112.2644963846444,36.08627897945274 -112.2656969554589,36.08649599090644 ")) +MULTILINESTRING((-112.255079 36.07955, -112.254928 36.081171, -112.255251 36.082608, -112.256454 36.083957, -112.258024 36.085114, -112.259522 36.085844, -112.262073 36.08626, -112.26332 36.086215, -112.264496 36.086279, -112.265697 36.086496)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml15.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml15.testcase new file mode 100644 index 0000000..82741bd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml15.testcase @@ -0,0 +1,7 @@ +From KML - Point 2D +:memory: +SELECT AsText(GeomFromKML("-122.0822035425683,37.42228990140251")) +1 # rows +1 # column +AsText(GeomFromKML("-122.0822035425683,37.42228990140251"))) +POINT(-122.082204 37.42229) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml16.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml16.testcase new file mode 100644 index 0000000..00d687b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml16.testcase @@ -0,0 +1,7 @@ +From KML - Multigeometry - 2 x Point 2D +:memory: +SELECT AsText(GeomFromKML("-122.0822035425683,37.42228990140251-122,37")) +1 # rows +1 # column +AsText(GeomFromKML("-122.0822035425683,37.42228990140251-122,37")) +MULTIPOINT(-122.082204 37.42229, -122 37) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml17.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml17.testcase new file mode 100644 index 0000000..2c040f8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml17.testcase @@ -0,0 +1,7 @@ +From KML - Multigeometry - 2 x Point +:memory: +SELECT AsText(GeomFromKML("-122.0822035425683,37.42228990140251,6-122,37,1.3")) +1 # rows +1 # column +AsText(GeomFromKML("-122.0822035425683,37.42228990140251,6-122,37,1.3")) +MULTIPOINT Z(-122.082204 37.42229 6, -122 37 1.3) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml18.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml18.testcase new file mode 100644 index 0000000..932e918 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml18.testcase @@ -0,0 +1,7 @@ +From KML - MultiGeometry LINESTRING x 2 +:memory: +SELECT AsText(GeomFromKML(" -112.2550785337791,36.07954952145647 -112.2549277039738,36.08117083492122 -112.2552505069063,36.08260761307279 -112.2564540158376,36.08395660588506 -112.2580238976449,36.08511401044813 -112.2595218489022,36.08584355239394 -112.262073428656,36.08626019085147 -112.2633204928495,36.08621519860091 -112.2644963846444,36.08627897945274 -112.2656969554589,36.08649599090644 1,2 3,4")) +1 # rows +1 # column +AsText(GeomFromKML(" -112.2550785337791,36.07954952145647 -112.2549277039738,36.08117083492122 -112.2552505069063,36.08260761307279 -112.2564540158376,36.08395660588506 -112.2580238976449,36.08511401044813 -112.2595218489022,36.08584355239394 -112.262073428656,36.08626019085147 -112.2633204928495,36.08621519860091 -112.2644963846444,36.08627897945274 -112.2656969554589,36.08649599090644 1,2 3,4")) +MULTILINESTRING((-112.255079 36.07955, -112.254928 36.081171, -112.255251 36.082608, -112.256454 36.083957, -112.258024 36.085114, -112.259522 36.085844, -112.262073 36.08626, -112.26332 36.086215, -112.264496 36.086279, -112.265697 36.086496), (1 2, 3 4)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml19.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml19.testcase new file mode 100644 index 0000000..44a1c2a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml19.testcase @@ -0,0 +1,7 @@ +From KML - MultiGeometry LINESTRING x 2 - 3D +:memory: +SELECT AsText(GeomFromKML(" -112.2550785337791,36.07954952145647,2357 -112.2549277039738,36.08117083492122,2357 -112.2552505069063,36.08260761307279,2357 -112.2564540158376,36.08395660588506,2357 -112.2580238976449,36.08511401044813,2357 -112.2595218489022,36.08584355239394,2357 -112.262073428656,36.08626019085147,2357 -112.2633204928495,36.08621519860091,2357 -112.2644963846444,36.08627897945274,2357 -112.2656969554589,36.08649599090644,2357 1,2,4 3,5,7")) +1 # rows +1 # column +AsText(GeomFromKML(" -112.2550785337791,36.07954952145647,2357 -112.2549277039738,36.08117083492122,2357 -112.2552505069063,36.08260761307279,2357 -112.2564540158376,36.08395660588506,2357 -112.2580238976449,36.08511401044813,2357 -112.2595218489022,36.08584355239394,2357 -112.262073428656,36.08626019085147,2357 -112.2633204928495,36.08621519860091,2357 -112.2644963846444,36.08627897945274,2357 -112.2656969554589,36.08649599090644,2357 1,2,4 3,5,7")) +MULTILINESTRING Z((-112.255079 36.07955 2357, -112.254928 36.081171 2357, -112.255251 36.082608 2357, -112.256454 36.083957 2357, -112.258024 36.085114 2357, -112.259522 36.085844 2357, -112.262073 36.08626 2357, -112.26332 36.086215 2357, -112.264496 36.086279 2357, -112.265697 36.086496 2357), (1 2 4, 3 5 7)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml2.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml2.testcase new file mode 100644 index 0000000..c1b7caf --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml2.testcase @@ -0,0 +1,7 @@ +From KML - bad text +:memory: +SELECT GeomFromKML("Hell0!") +1 # rows +1 # column +GeomFromKML("Hell0!") +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml20.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml20.testcase new file mode 100644 index 0000000..5730e45 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml20.testcase @@ -0,0 +1,7 @@ +From KML - MultiGeometry POLYGON [hole] x 2 - 2D +:memory: +SELECT AsText(GeomFromKML("10,10 15,10 15,15 10,15 10,1011,11 12,11 12,12 11,12 11,1116,16 17,16 17,17 16,17 16,16")) +1 # rows +1 # column +AsText(GeomFromKML("10,10 15,10 15,15 10,15 10,1011,11 12,11 12,12 11,12 11,1116,16 17,16 17,17 16,17 16,16")) +MULTIPOLYGON(((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11)), ((16 16, 17 16, 17 17, 16 17, 16 16))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml21.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml21.testcase new file mode 100644 index 0000000..c2fd9a9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml21.testcase @@ -0,0 +1,7 @@ +From KML - MultiGeometry POLYGON [hole] x 2 - 3D +:memory: +SELECT AsText(GeomFromKML("10,10,100 15,10,101 15,15,102 10,15,103 10,10,10011,11,100 12,11,101 12,12,102 11,12,103 11,11,10016,16,100 17,16,101 17,17,102 16,17,103 16,16,100")) +1 # rows +1 # column +AsText(GeomFromKML("10,10,100 15,10,101 15,15,102 10,15,103 10,10,10011,11,100 12,11,101 12,12,102 11,12,103 11,11,10016,16,100 17,16,101 17,17,102 16,17,103 16,16,100")) +MULTIPOLYGON Z(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100)), ((16 16 100, 17 16 101, 17 17 102, 16 17 103, 16 16 100))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml22.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml22.testcase new file mode 100644 index 0000000..60f81a2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml22.testcase @@ -0,0 +1,7 @@ +From KML - MultiGeometry [Point, Line, Polygon] - 2D +:memory: +SELECT AsText(GeomFromKML("1,12,2 3,34,4 10,4 10,10 4,10 4,45,5 6,5 6,6 5,6 5,5")) +1 # rows +1 # column +AsText(GeomFromKML("1,12,2 3,34,4 10,4 10,10 4,10 4,45,5 6,5 6,6 5,6 5,5")) +GEOMETRYCOLLECTION(POINT(1 1), LINESTRING(2 2, 3 3), POLYGON((4 4, 10 4, 10 10, 4 10, 4 4), (5 5, 6 5, 6 6, 5 6, 5 5))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml23.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml23.testcase new file mode 100644 index 0000000..7f14436 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml23.testcase @@ -0,0 +1,7 @@ +From KML - MultiGeometry [Point, Line, Polygon] - 3D +:memory: +SELECT AsText(GeomFromKML("1,1,1002,2,100 3,3,1014,4,101 10,4,102 10,10,103 4,10,104 4,4,1015,5,100 6,5,101 6,6,102 5,6,103 5,5,100")) +1 # rows +1 # column +AsText(GeomFromKML("1,1,1002,2,100 3,3,1014,4,101 10,4,102 10,10,103 4,10,104 4,4,1015,5,100 6,5,101 6,6,102 5,6,103 5,5,100")) +GEOMETRYCOLLECTION Z(POINT Z(1 1 100), LINESTRING Z(2 2 100, 3 3 101), POLYGON Z((4 4 101, 10 4 102, 10 10 103, 4 10 104, 4 4 101), (5 5 100, 6 5 101, 6 6 102, 5 6 103, 5 5 100))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml3.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml3.testcase new file mode 100644 index 0000000..e301dc6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml3.testcase @@ -0,0 +1,7 @@ +From KML - Point +:memory: +SELECT AsText(GeomFromKML("-122.0822035425683,37.42228990140251,0")) +1 # rows +1 # column +AsText(GeomFromKML("-122.0822035425683,37.42228990140251,0"))) +POINT Z(-122.082204 37.42229 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml4.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml4.testcase new file mode 100644 index 0000000..d9b95c0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml4.testcase @@ -0,0 +1,7 @@ +From KML - LINESTRING Z +:memory: +SELECT AsText(GeomFromKML(" -112.2550785337791,36.07954952145647,2357 -112.2549277039738,36.08117083492122,2357 -112.2552505069063,36.08260761307279,2357 -112.2564540158376,36.08395660588506,2357 -112.2580238976449,36.08511401044813,2357 -112.2595218489022,36.08584355239394,2357 -112.262073428656,36.08626019085147,2357 -112.2633204928495,36.08621519860091,2357 -112.2644963846444,36.08627897945274,2357 -112.2656969554589,36.08649599090644,2357 ")) +1 # rows +1 # column +AsText(GeomFromKML(" -112.2550785337791,36.07954952145647,2357 -112.2549277039738,36.08117083492122,2357 -112.2552505069063,36.08260761307279,2357 -112.2564540158376,36.08395660588506,2357 -112.2580238976449,36.08511401044813,2357 -112.2595218489022,36.08584355239394,2357 -112.262073428656,36.08626019085147,2357 -112.2633204928495,36.08621519860091,2357 -112.2644963846444,36.08627897945274,2357 -112.2656969554589,36.08649599090644,2357 ")) +LINESTRING Z(-112.255079 36.07955 2357, -112.254928 36.081171 2357, -112.255251 36.082608 2357, -112.256454 36.083957 2357, -112.258024 36.085114 2357, -112.259522 36.085844 2357, -112.262073 36.08626 2357, -112.26332 36.086215 2357, -112.264496 36.086279 2357, -112.265697 36.086496 2357) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml5.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml5.testcase new file mode 100644 index 0000000..8265ade --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml5.testcase @@ -0,0 +1,7 @@ +From KML - POLYGON Z +:memory: +SELECT AsText(GeomFromKML("-112.3372510731295,36.14888505105317,1784 -112.3356128688403,36.14781540589019,1784 -112.3368169371048,36.14658677734382,1784 -112.3384408457543,36.14762778914076,1784 -112.3372510731295,36.14888505105317,1784")) +1 # rows +1 # column +AsText(GeomFromKML("-112.3372510731295,36.14888505105317,1784 -112.3356128688403,36.14781540589019,1784 -112.3368169371048,36.14658677734382,1784 -112.3384408457543,36.14762778914076,1784 -112.3372510731295,36.14888505105317,1784")) +POLYGON Z((-112.337251 36.148885 1784, -112.335613 36.147815 1784, -112.336817 36.146587 1784, -112.338441 36.147628 1784, -112.337251 36.148885 1784)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml6.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml6.testcase new file mode 100644 index 0000000..06b843e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml6.testcase @@ -0,0 +1,7 @@ +From KML - POLYGON +:memory: +SELECT AsText(GeomFromKML("-112.3372510731295,36.14888505105317 -112.3356128688403,36.14781540589019 -112.3368169371048,36.14658677734382 -112.3384408457543,36.14762778914076 -112.3372510731295,36.14888505105317")) +1 # rows +1 # column +AsText(GeomFromKML("-112.3372510731295,36.14888505105317 -112.3356128688403,36.14781540589019 -112.3368169371048,36.14658677734382 -112.3384408457543,36.14762778914076 -112.3372510731295,36.14888505105317")) +POLYGON((-112.337251 36.148885, -112.335613 36.147815, -112.336817 36.146587, -112.338441 36.147628, -112.337251 36.148885)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml7.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml7.testcase new file mode 100644 index 0000000..533c7e9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml7.testcase @@ -0,0 +1,7 @@ +From KML - POLYGON with interior +:memory: +SELECT AsText(GeomFromKML(" -122.43193945401,37.801983684521,0 -122.431564131101,37.8020327731402,0 -122.431499536494,37.801715236748,0 -122.43187136387,37.8016634915437,0 -122.43193945401,37.801983684521,0 -122.431885303019,37.8019316061803,0 -122.431762847554,37.8019476932246,0 -122.431719843168,37.8017374462006,0 -122.431841863906,37.8017213314352,0 -122.431885303019,37.8019316061803,0 -122.431714248439,37.8019544341044,0 -122.431592404659,37.8019694509363,0 -122.431548777661,37.8017591041777,0 -122.431671453253,37.8017428443014,0 -122.431714248439,37.8019544341044,0 ")) +1 # rows +1 # column +AsText(GeomFromKML(" -122.43193945401,37.801983684521,0 -122.431564131101,37.8020327731402,0 -122.431499536494,37.801715236748,0 -122.43187136387,37.8016634915437,0 -122.43193945401,37.801983684521,0 -122.431885303019,37.8019316061803,0 -122.431762847554,37.8019476932246,0 -122.431719843168,37.8017374462006,0 -122.431841863906,37.8017213314352,0 -122.431885303019,37.8019316061803,0 -122.431714248439,37.8019544341044,0 -122.431592404659,37.8019694509363,0 -122.431548777661,37.8017591041777,0 -122.431671453253,37.8017428443014,0 -122.431714248439,37.8019544341044,0 ")) +POLYGON Z((-122.431939 37.801984 0, -122.431564 37.802033 0, -122.4315 37.801715 0, -122.431871 37.801663 0, -122.431939 37.801984 0), (-122.431885 37.801932 0, -122.431763 37.801948 0, -122.43172 37.801737 0, -122.431842 37.801721 0, -122.431885 37.801932 0), (-122.431714 37.801954 0, -122.431592 37.801969 0, -122.431549 37.801759 0, -122.431671 37.801743 0, -122.431714 37.801954 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml8.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml8.testcase new file mode 100644 index 0000000..c358695 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml8.testcase @@ -0,0 +1,7 @@ +From KML - MultiGeometry +:memory: +SELECT AsText(GeomFromKML(" -122.431885303019,37.8019316061803,0 -122.431762847554,37.8019476932246,0 -122.431719843168,37.8017374462006,0 -122.431841863906,37.8017213314352,0 -122.431885303019,37.8019316061803,0 -122.431714248439,37.8019544341044,0 -122.431592404659,37.8019694509363,0 -122.431548777661,37.8017591041777,0 -122.431671453253,37.8017428443014,0 -122.431714248439,37.8019544341044,0")) +1 # rows +1 # column +AsText(GeomFromKML(" -122.431885303019,37.8019316061803,0 -122.431762847554,37.8019476932246,0 -122.431719843168,37.8017374462006,0 -122.431841863906,37.8017213314352,0 -122.431885303019,37.8019316061803,0 -122.431714248439,37.8019544341044,0 -122.431592404659,37.8019694509363,0 -122.431548777661,37.8017591041777,0 -122.431671453253,37.8017428443014,0 -122.431714248439,37.8019544341044,0")) +MULTIPOLYGON Z(((-122.431885 37.801932 0, -122.431763 37.801948 0, -122.43172 37.801737 0, -122.431842 37.801721 0, -122.431885 37.801932 0)), ((-122.431714 37.801954 0, -122.431592 37.801969 0, -122.431549 37.801759 0, -122.431671 37.801743 0, -122.431714 37.801954 0))) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml9.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml9.testcase new file mode 100644 index 0000000..eb70924 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromkml9.testcase @@ -0,0 +1,7 @@ +From KML - Geometrycollection - POLYGON with interior +:memory: +SELECT AsText(GeomFromKML(" -122.43193945401,37.801983684521,0 -122.431564131101,37.8020327731402,0 -122.431499536494,37.801715236748,0 -122.43187136387,37.8016634915437,0 -122.43193945401,37.801983684521,0 -122.431885303019,37.8019316061803,0 -122.431762847554,37.8019476932246,0 -122.431719843168,37.8017374462006,0 -122.431841863906,37.8017213314352,0 -122.431885303019,37.8019316061803,0 -122.431714248439,37.8019544341044,0 -122.431592404659,37.8019694509363,0 -122.431548777661,37.8017591041777,0 -122.431671453253,37.8017428443014,0 -122.431714248439,37.8019544341044,0 ")) +1 # rows +1 # column +AsText(GeomFromKML(" -122.43193945401,37.801983684521,0 -122.431564131101,37.8020327731402,0 -122.431499536494,37.801715236748,0 -122.43187136387,37.8016634915437,0 -122.43193945401,37.801983684521,0 -122.431885303019,37.8019316061803,0 -122.431762847554,37.8019476932246,0 -122.431719843168,37.8017374462006,0 -122.431841863906,37.8017213314352,0 -122.431885303019,37.8019316061803,0 -122.431714248439,37.8019544341044,0 -122.431592404659,37.8019694509363,0 -122.431548777661,37.8017591041777,0 -122.431671453253,37.8017428443014,0 -122.431714248439,37.8019544341044,0 ")) +MULTIPOLYGON Z(((-122.431939 37.801984 0, -122.431564 37.802033 0, -122.4315 37.801715 0, -122.431871 37.801663 0, -122.431939 37.801984 0), (-122.431885 37.801932 0, -122.431763 37.801948 0, -122.43172 37.801737 0, -122.431842 37.801721 0, -122.431885 37.801932 0), (-122.431714 37.801954 0, -122.431592 37.801969 0, -122.431549 37.801759 0, -122.431671 37.801743 0, -122.431714 37.801954 0))) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext1.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext1.testcase new file mode 100644 index 0000000..89ac942 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext1.testcase @@ -0,0 +1,7 @@ +geomfromtext1 +:memory: #use in-memory database +SELECT AsWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900)"), 4); +1 # rows (not including the header row) +1 # columns +AsWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900)"), 4) +POINT(-71.1043 42.3151) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext10.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext10.testcase new file mode 100644 index 0000000..05b0840 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext10.testcase @@ -0,0 +1,7 @@ +geomfromtext10 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(MULTIPOINT(0 1, 2 3, 4 5))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTION(MULTIPOINT(0 1, 2 3, 4 5))')); +GEOMETRYCOLLECTION(POINT(0 1), POINT(2 3), POINT(4 5)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext11.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext11.testcase new file mode 100644 index 0000000..af71844 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext11.testcase @@ -0,0 +1,7 @@ +geomfromtext11 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(MULTIPOINT((0 1), (2 3), (4 5)))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTION(MULTIPOINT((0 1), (2 3), (4 5)))')); +GEOMETRYCOLLECTION(POINT(0 1), POINT(2 3), POINT(4 5)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext12.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext12.testcase new file mode 100644 index 0000000..e7cc020 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext12.testcase @@ -0,0 +1,7 @@ +geomfromtext12 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(MULTILINESTRING((0 1, 2 3), (4 5, 6 7)))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTION(MULTILINESTRING((0 1, 2 3), (4 5, 6 7)))')); +GEOMETRYCOLLECTION(LINESTRING(0 1, 2 3), LINESTRING(4 5, 6 7)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext13.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext13.testcase new file mode 100644 index 0000000..f0bf06e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext13.testcase @@ -0,0 +1,7 @@ +geomfromtext13 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0, 5 0, 5 5, 0 5, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10))))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0, 5 0, 5 5, 0 5, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10))))')); +GEOMETRYCOLLECTION(POLYGON((0 0, 5 0, 5 5, 0 5, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext14.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext14.testcase new file mode 100644 index 0000000..d719e69 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext14.testcase @@ -0,0 +1,7 @@ +geomfromtext14 +:memory: #use in-memory database +SELECT AsText(GeomFromText('MULTIPOINT((0 1), (2 3), (4 5))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('MULTIPOINT((0 1), (2 3), (4 5))')); +MULTIPOINT(0 1, 2 3, 4 5) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext15.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext15.testcase new file mode 100644 index 0000000..ad7e5d5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext15.testcase @@ -0,0 +1,7 @@ +geomfromtext15 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(POINT(8 8), MULTIPOLYGON(((0 0, 5 0, 5 5, 0 5, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10))), POINT(7 7), MULTILINESTRING((0 1, 2 3), (4 5, 6 7)), POINT(6 6), MULTIPOINT((0 1), (2 3), (4 5)), POINT(9 9))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTION(POINT(8 8), MULTIPOLYGON(((0 0, 5 0, 5 5, 0 5, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10))), POINT(7 7), MULTILINESTRING((0 1, 2 3), (4 5, 6 7)), POINT(6 6), MULTIPOINT((0 1), (2 3), (4 5)), POINT(9 9))')); +GEOMETRYCOLLECTION(POINT(8 8), POINT(7 7), POINT(6 6), POINT(0 1), POINT(2 3), POINT(4 5), POINT(9 9), LINESTRING(0 1, 2 3), LINESTRING(4 5, 6 7), POLYGON((0 0, 5 0, 5 5, 0 5, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext16.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext16.testcase new file mode 100644 index 0000000..6526bbb --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext16.testcase @@ -0,0 +1,7 @@ +geomfromtext16 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTIPOINTZ(0 1 9, 2 3 9, 4 5 9))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTIPOINTZ(0 1 9, 2 3 9, 4 5 9))')); +GEOMETRYCOLLECTION Z(POINT Z(0 1 9), POINT Z(2 3 9), POINT Z(4 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext17.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext17.testcase new file mode 100644 index 0000000..043d88e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext17.testcase @@ -0,0 +1,7 @@ +geomfromtext17 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTIPOINTZ((0 1 9), (2 3 9), (4 5 9)))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTIPOINTZ((0 1 9), (2 3 9), (4 5 9)))')); +GEOMETRYCOLLECTION Z(POINT Z(0 1 9), POINT Z(2 3 9), POINT Z(4 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext18.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext18.testcase new file mode 100644 index 0000000..ac76066 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext18.testcase @@ -0,0 +1,7 @@ +geomfromtext18 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTILINESTRINGZ((0 1 9, 2 3 9), (4 5 9, 6 7 9)))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTILINESTRINGZ((0 1 9, 2 3 9), (4 5 9, 6 7 9)))')); +GEOMETRYCOLLECTION Z(LINESTRING Z(0 1 9, 2 3 9), LINESTRING Z(4 5 9, 6 7 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext19.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext19.testcase new file mode 100644 index 0000000..d0c0542 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext19.testcase @@ -0,0 +1,7 @@ +geomfromtext13 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTIPOLYGONZ(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTIPOLYGONZ(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))))')); +GEOMETRYCOLLECTION Z(POLYGON Z((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), POLYGON Z((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext2.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext2.testcase new file mode 100644 index 0000000..ff998df --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext2.testcase @@ -0,0 +1,7 @@ +geomfromtext2 +:memory: #use in-memory database +SELECT GeomFromText(3.14); +1 # rows (not including the header row) +1 # columns +GeomFromText(3.14) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext20.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext20.testcase new file mode 100644 index 0000000..2aee556 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext20.testcase @@ -0,0 +1,7 @@ +geomfromtext20 +:memory: #use in-memory database +SELECT AsText(GeomFromText('MULTIPOINTZ((0 1 9), (2 3 9), (4 5 9))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('MULTIPOINTZ((0 1 9), (2 3 9), (4 5 9))')); +MULTIPOINT Z(0 1 9, 2 3 9, 4 5 9) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext21.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext21.testcase new file mode 100644 index 0000000..9c985d9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext21.testcase @@ -0,0 +1,7 @@ +geomfromtext21 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(8 8 9), MULTIPOLYGONZ(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))), POINTZ(7 7 9), MULTILINESTRINGZ((0 1 9, 2 3 9), (4 5 9, 6 7 9)), POINTZ(6 6 9), MULTIPOINTZ((0 1 9), (2 3 9), (4 5 9)), POINTZ(9 9 9))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(8 8 9), MULTIPOLYGONZ(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))), POINTZ(7 7 9), MULTILINESTRINGZ((0 1 9, 2 3 9), (4 5 9, 6 7 9)), POINTZ(6 6 9), MULTIPOINTZ((0 1 9), (2 3 9), (4 5 9)), POINTZ(9 9 9))')); +GEOMETRYCOLLECTION Z(POINT Z(8 8 9), POINT Z(7 7 9), POINT Z(6 6 9), POINT Z(0 1 9), POINT Z(2 3 9), POINT Z(4 5 9), POINT Z(9 9 9), LINESTRING Z(0 1 9, 2 3 9), LINESTRING Z(4 5 9, 6 7 9), POLYGON Z((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), POLYGON Z((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext22.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext22.testcase new file mode 100644 index 0000000..92a265a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext22.testcase @@ -0,0 +1,7 @@ +geomfromtext22 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTIPOINTM(0 1 9, 2 3 9, 4 5 9))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTIPOINTM(0 1 9, 2 3 9, 4 5 9))')); +GEOMETRYCOLLECTION M(POINT M(0 1 9), POINT M(2 3 9), POINT M(4 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext23.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext23.testcase new file mode 100644 index 0000000..5886497 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext23.testcase @@ -0,0 +1,7 @@ +geomfromtext23 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTIPOINTM((0 1 9), (2 3 9), (4 5 9)))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTIPOINTM((0 1 9), (2 3 9), (4 5 9)))')); +GEOMETRYCOLLECTION M(POINT M(0 1 9), POINT M(2 3 9), POINT M(4 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext24.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext24.testcase new file mode 100644 index 0000000..5baf315 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext24.testcase @@ -0,0 +1,7 @@ +geomfromtext24 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTILINESTRINGM((0 1 9, 2 3 9), (4 5 9, 6 7 9)))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTILINESTRINGM((0 1 9, 2 3 9), (4 5 9, 6 7 9)))')); +GEOMETRYCOLLECTION M(LINESTRING M(0 1 9, 2 3 9), LINESTRING M(4 5 9, 6 7 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext25.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext25.testcase new file mode 100644 index 0000000..8459ed3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext25.testcase @@ -0,0 +1,7 @@ +geomfromtext25 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTIPOLYGONM(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTIPOLYGONM(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))))')); +GEOMETRYCOLLECTION M(POLYGON M((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), POLYGON M((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext26.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext26.testcase new file mode 100644 index 0000000..b9d296c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext26.testcase @@ -0,0 +1,7 @@ +geomfromtext26 +:memory: #use in-memory database +SELECT AsText(GeomFromText('MULTIPOINTM((0 1 9), (2 3 9), (4 5 9))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('MULTIPOINTM((0 1 9), (2 3 9), (4 5 9))')); +MULTIPOINT M(0 1 9, 2 3 9, 4 5 9) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext27.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext27.testcase new file mode 100644 index 0000000..7e374ae --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext27.testcase @@ -0,0 +1,7 @@ +geomfromtext27 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(POINTM(8 8 9), MULTIPOLYGONM(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))), POINTM(7 7 9), MULTILINESTRINGM((0 1 9, 2 3 9), (4 5 9, 6 7 9)), POINTM(6 6 9), MULTIPOINTM((0 1 9), (2 3 9), (4 5 9)), POINTM(9 9 9))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONM(POINTM(8 8 9), MULTIPOLYGONM(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))), POINTM(7 7 9), MULTILINESTRINGM((0 1 9, 2 3 9), (4 5 9, 6 7 9)), POINTM(6 6 9), MULTIPOINTM((0 1 9), (2 3 9), (4 5 9)), POINTM(9 9 9))')); +GEOMETRYCOLLECTION M(POINT M(8 8 9), POINT M(7 7 9), POINT M(6 6 9), POINT M(0 1 9), POINT M(2 3 9), POINT M(4 5 9), POINT M(9 9 9), LINESTRING M(0 1 9, 2 3 9), LINESTRING M(4 5 9, 6 7 9), POLYGON M((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), POLYGON M((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext28.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext28.testcase new file mode 100644 index 0000000..358f633 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext28.testcase @@ -0,0 +1,7 @@ +geomfromtext28 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTIPOINTZM(0 1 9 7, 2 3 9 7, 4 5 9 7))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTIPOINTZM(0 1 9 7, 2 3 9 7, 4 5 9 7))')); +GEOMETRYCOLLECTION ZM(POINT ZM(0 1 9 7), POINT ZM(2 3 9 7), POINT ZM(4 5 9 7)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext29.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext29.testcase new file mode 100644 index 0000000..b9d7e4a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext29.testcase @@ -0,0 +1,7 @@ +geomfromtext29 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTIPOINTZM((0 1 9 7), (2 3 9 7), (4 5 9 7)))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTIPOINTZM((0 1 9 7), (2 3 9 7), (4 5 9 7)))')); +GEOMETRYCOLLECTION ZM(POINT ZM(0 1 9 7), POINT ZM(2 3 9 7), POINT ZM(4 5 9 7)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext3.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext3.testcase new file mode 100644 index 0000000..0c39740 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext3.testcase @@ -0,0 +1,7 @@ +geomfromtext3 +:memory: #use in-memory database +SELECT AsWkt(GeomFromText("LINESTRING(4 0, 4 4, 8 4)"), 4); +1 # rows (not including the header row) +1 # columns +AsWkt(GeomFromText("LINESTRING(4 0, 4 4, 8 4)"), 4) +LINESTRING(4 0,4 4,8 4) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext30.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext30.testcase new file mode 100644 index 0000000..f70d425 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext30.testcase @@ -0,0 +1,7 @@ +geomfromtext30 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTILINESTRINGZM((0 1 9 7, 2 3 9 7), (4 5 9 7, 6 7 9 7)))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTILINESTRINGZM((0 1 9 7, 2 3 9 7), (4 5 9 7, 6 7 9 7)))')); +GEOMETRYCOLLECTION ZM(LINESTRING ZM(0 1 9 7, 2 3 9 7), LINESTRING ZM(4 5 9 7, 6 7 9 7)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext31.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext31.testcase new file mode 100644 index 0000000..a654605 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext31.testcase @@ -0,0 +1,7 @@ +geomfromtext31 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTIPOLYGONZM(((0 0 9 7, 5 0 9 7, 5 5 9 7, 0 5 9 7, 0 0 9 7), (1 1 9 7, 2 1 9 7, 2 2 9 7, 1 2 9 7, 1 1 9 7)), ((10 10 9 7, 11 10 9 7, 11 11 9 7, 10 11 9 7, 10 10 9 7))))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTIPOLYGONZM(((0 0 9 7, 5 0 9 7, 5 5 9 7, 0 5 9 7, 0 0 9 7), (1 1 9 7, 2 1 9 7, 2 2 9 7, 1 2 9 7, 1 1 9 7)), ((10 10 9 7, 11 10 9 7, 11 11 9 7, 10 11 9 7, 10 10 9 7))))')); +GEOMETRYCOLLECTION ZM(POLYGON ZM((0 0 9 7, 5 0 9 7, 5 5 9 7, 0 5 9 7, 0 0 9 7), (1 1 9 7, 2 1 9 7, 2 2 9 7, 1 2 9 7, 1 1 9 7)), POLYGON ZM((10 10 9 7, 11 10 9 7, 11 11 9 7, 10 11 9 7, 10 10 9 7))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext32.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext32.testcase new file mode 100644 index 0000000..5e6bd15 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext32.testcase @@ -0,0 +1,7 @@ +geomfromtext32 +:memory: #use in-memory database +SELECT AsText(GeomFromText('MULTIPOINTZM((0 1 9 7), (2 3 9 7), (4 5 9 7))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('MULTIPOINTZM((0 1 9 7), (2 3 9 7), (4 5 9 7))')); +MULTIPOINT ZM(0 1 9 7, 2 3 9 7, 4 5 9 7) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext33.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext33.testcase new file mode 100644 index 0000000..3dde9a5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext33.testcase @@ -0,0 +1,7 @@ +geomfromtext33 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(8 8 9 7), MULTIPOLYGONZM(((0 0 9 7, 5 0 9 7, 5 5 9 7, 0 5 9 7, 0 0 9 7), (1 1 9 7, 2 1 9 7, 2 2 9 7, 1 2 9 7, 1 1 9 7)), ((10 10 9 7, 11 10 9 7, 11 11 9 7, 10 11 9 7, 10 10 9 7))), POINTZM(7 7 9 7), MULTILINESTRINGZM((0 1 9 7, 2 3 9 7), (4 5 9 7, 6 7 9 7)), POINTZM(6 6 9 7), MULTIPOINTZM((0 1 9 7), (2 3 9 7), (4 5 9 7)), POINTZM(9 9 9 7))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(8 8 9 7), MULTIPOLYGONZM(((0 0 9 7, 5 0 9 7, 5 5 9 7, 0 5 9 7, 0 0 9 7), (1 1 9 7, 2 1 9 7, 2 2 9 7, 1 2 9 7, 1 1 9 7)), ((10 10 9 7, 11 10 9 7, 11 11 9 7, 10 11 9 7, 10 10 9 7))), POINTZM(7 7 9 7), MULTILINESTRINGZM((0 1 9 7, 2 3 9 7), (4 5 9 7, 6 7 9 7)), POINTZM(6 6 9 7), MULTIPOINTZM((0 1 9 7), (2 3 9 7), (4 5 9 7)), POINTZM(9 9 9 7))')); +GEOMETRYCOLLECTION ZM(POINT ZM(8 8 9 7), POINT ZM(7 7 9 7), POINT ZM(6 6 9 7), POINT ZM(0 1 9 7), POINT ZM(2 3 9 7), POINT ZM(4 5 9 7), POINT ZM(9 9 9 7), LINESTRING ZM(0 1 9 7, 2 3 9 7), LINESTRING ZM(4 5 9 7, 6 7 9 7), POLYGON ZM((0 0 9 7, 5 0 9 7, 5 5 9 7, 0 5 9 7, 0 0 9 7), (1 1 9 7, 2 1 9 7, 2 2 9 7, 1 2 9 7, 1 1 9 7)), POLYGON ZM((10 10 9 7, 11 10 9 7, 11 11 9 7, 10 11 9 7, 10 10 9 7))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext34.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext34.testcase new file mode 100644 index 0000000..95b4216 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext34.testcase @@ -0,0 +1,7 @@ +geomfromtext34 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2))))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2))))')); +GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext35.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext35.testcase new file mode 100644 index 0000000..ee598bd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext35.testcase @@ -0,0 +1,7 @@ +geomfromtext35 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2)), GEOMETRYCOLLECTION(POINT(3 3), LINESTRING(4 4, 5 5)))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2)), GEOMETRYCOLLECTION(POINT(3 3), LINESTRING(4 4, 5 5)))')); +GEOMETRYCOLLECTION(POINT(0 0), POINT(3 3), LINESTRING(1 1, 2 2), LINESTRING(4 4, 5 5)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext36.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext36.testcase new file mode 100644 index 0000000..b92a736 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext36.testcase @@ -0,0 +1,7 @@ +geomfromtext36 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(POINT(9 9), GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2)), POINT(8 8), GEOMETRYCOLLECTION(POINT(3 3), LINESTRING(4 4, 5 5)), POINT(7 7))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTION(POINT(9 9), GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2)), POINT(8 8), GEOMETRYCOLLECTION(POINT(3 3), LINESTRING(4 4, 5 5)), POINT(7 7))')); +GEOMETRYCOLLECTION(POINT(9 9), POINT(0 0), POINT(8 8), POINT(3 3), POINT(7 7), LINESTRING(1 1, 2 2), LINESTRING(4 4, 5 5)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext37.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext37.testcase new file mode 100644 index 0000000..b140919 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext37.testcase @@ -0,0 +1,7 @@ +geomfromtext37 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(GEOMETRYCOLLECTIONZ(GEOMETRYCOLLECTIONZ(POINTZ(0 0 9), LINESTRINGZ(1 1 9, 2 2 9))))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZ(GEOMETRYCOLLECTIONZ(GEOMETRYCOLLECTIONZ(POINTZ(0 0 9), LINESTRINGZ(1 1 9, 2 2 9))))')); +GEOMETRYCOLLECTION Z(POINT Z(0 0 9), LINESTRING Z(1 1 9, 2 2 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext38.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext38.testcase new file mode 100644 index 0000000..bf51e95 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext38.testcase @@ -0,0 +1,7 @@ +geomfromtext38 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(GEOMETRYCOLLECTIONZ(POINTZ(0 0 9), LINESTRINGZ(1 1 9, 2 2 9)), GEOMETRYCOLLECTIONZ(POINTZ(3 3 9), LINESTRINGZ(4 4 9, 5 5 9)))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZ(GEOMETRYCOLLECTIONZ(POINTZ(0 0 9), LINESTRINGZ(1 1 9, 2 2 9)), GEOMETRYCOLLECTIONZ(POINTZ(3 3 9), LINESTRINGZ(4 4 9, 5 5 9)))')); +GEOMETRYCOLLECTION Z(POINT Z(0 0 9), POINT Z(3 3 9), LINESTRING Z(1 1 9, 2 2 9), LINESTRING Z(4 4 9, 5 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext39.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext39.testcase new file mode 100644 index 0000000..4fcbf20 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext39.testcase @@ -0,0 +1,7 @@ +geomfromtext39 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(9 9 9), GEOMETRYCOLLECTIONZ(POINTZ(0 0 9), LINESTRINGZ(1 1 9, 2 2 9)), POINTZ(8 8 9), GEOMETRYCOLLECTIONZ(POINTZ(3 3 9), LINESTRINGZ(4 4 9, 5 5 9)), POINTZ(7 7 9))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(9 9 9), GEOMETRYCOLLECTIONZ(POINTZ(0 0 9), LINESTRINGZ(1 1 9, 2 2 9)), POINTZ(8 8 9), GEOMETRYCOLLECTIONZ(POINTZ(3 3 9), LINESTRINGZ(4 4 9, 5 5 9)), POINTZ(7 7 9))')); +GEOMETRYCOLLECTION Z(POINT Z(9 9 9), POINT Z(0 0 9), POINT Z(8 8 9), POINT Z(3 3 9), POINT Z(7 7 9), LINESTRING Z(1 1 9, 2 2 9), LINESTRING Z(4 4 9, 5 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext4.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext4.testcase new file mode 100644 index 0000000..182ba56 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext4.testcase @@ -0,0 +1,7 @@ +geomfromtext4 +:memory: #use in-memory database +SELECT GeomFromText("POINT(0 1 2 3)"); +1 # rows (not including the header row) +1 # columns +GeomFromText("POINT(0 1 2 3)") +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext40.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext40.testcase new file mode 100644 index 0000000..e56e78c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext40.testcase @@ -0,0 +1,7 @@ +geomfromtext40 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(GEOMETRYCOLLECTIONM(GEOMETRYCOLLECTIONM(POINTM(0 0 9), LINESTRINGM(1 1 9, 2 2 9))))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONM(GEOMETRYCOLLECTIONM(GEOMETRYCOLLECTIONM(POINTM(0 0 9), LINESTRINGM(1 1 9, 2 2 9))))')); +GEOMETRYCOLLECTION M(POINT M(0 0 9), LINESTRING M(1 1 9, 2 2 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext41.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext41.testcase new file mode 100644 index 0000000..80fec94 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext41.testcase @@ -0,0 +1,7 @@ +geomfromtext41 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(GEOMETRYCOLLECTIONM(POINTM(0 0 9), LINESTRINGM(1 1 9, 2 2 9)), GEOMETRYCOLLECTIONM(POINTM(3 3 9), LINESTRINGM(4 4 9, 5 5 9)))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONM(GEOMETRYCOLLECTIONM(POINTM(0 0 9), LINESTRINGM(1 1 9, 2 2 9)), GEOMETRYCOLLECTIONM(POINTM(3 3 9), LINESTRINGM(4 4 9, 5 5 9)))')); +GEOMETRYCOLLECTION M(POINT M(0 0 9), POINT M(3 3 9), LINESTRING M(1 1 9, 2 2 9), LINESTRING M(4 4 9, 5 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext42.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext42.testcase new file mode 100644 index 0000000..5325dea --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext42.testcase @@ -0,0 +1,7 @@ +geomfromtext42 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(POINTM(9 9 9), GEOMETRYCOLLECTIONM(POINTM(0 0 9), LINESTRINGM(1 1 9, 2 2 9)), POINTM(8 8 9), GEOMETRYCOLLECTIONM(POINTM(3 3 9), LINESTRINGM(4 4 9, 5 5 9)), POINTM(7 7 9))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONM(POINTM(9 9 9), GEOMETRYCOLLECTIONM(POINTM(0 0 9), LINESTRINGM(1 1 9, 2 2 9)), POINTM(8 8 9), GEOMETRYCOLLECTIONM(POINTM(3 3 9), LINESTRINGM(4 4 9, 5 5 9)), POINTM(7 7 9))')); +GEOMETRYCOLLECTION M(POINT M(9 9 9), POINT M(0 0 9), POINT M(8 8 9), POINT M(3 3 9), POINT M(7 7 9), LINESTRING M(1 1 9, 2 2 9), LINESTRING M(4 4 9, 5 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext43.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext43.testcase new file mode 100644 index 0000000..873babe --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext43.testcase @@ -0,0 +1,7 @@ +geomfromtext43 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(GEOMETRYCOLLECTIONZM(GEOMETRYCOLLECTIONZM(POINTZM(0 0 9 7), LINESTRINGZM(1 1 9 7, 2 2 9 7))))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZM(GEOMETRYCOLLECTIONZM(GEOMETRYCOLLECTIONZM(POINTZM(0 0 9 7), LINESTRINGZM(1 1 9 7, 2 2 9 7))))')); +GEOMETRYCOLLECTION ZM(POINT ZM(0 0 9 7), LINESTRING ZM(1 1 9 7, 2 2 9 7)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext44.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext44.testcase new file mode 100644 index 0000000..791f3a4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext44.testcase @@ -0,0 +1,7 @@ +geomfromtext44 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(GEOMETRYCOLLECTIONZM(POINTZM(0 0 9 7), LINESTRINGZM(1 1 9 7, 2 2 9 7)), GEOMETRYCOLLECTIONZM(POINTZM(3 3 9 7), LINESTRINGZM(4 4 9 7, 5 5 9 7)))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZM(GEOMETRYCOLLECTIONZM(POINTZM(0 0 9 7), LINESTRINGZM(1 1 9 7, 2 2 9 7)), GEOMETRYCOLLECTIONZM(POINTZM(3 3 9 7), LINESTRINGZM(4 4 9 7, 5 5 9 7)))')); +GEOMETRYCOLLECTION ZM(POINT ZM(0 0 9 7), POINT ZM(3 3 9 7), LINESTRING ZM(1 1 9 7, 2 2 9 7), LINESTRING ZM(4 4 9 7, 5 5 9 7)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext45.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext45.testcase new file mode 100644 index 0000000..3546ca8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext45.testcase @@ -0,0 +1,7 @@ +geomfromtext45 +:memory: #use in-memory database +SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(9 9 9 7), GEOMETRYCOLLECTIONZM(POINTZM(0 0 9 7), LINESTRINGZM(1 1 9 7, 2 2 9 7)), POINTZM(8 8 9 7), GEOMETRYCOLLECTIONZM(POINTZM(3 3 9 7), LINESTRINGZM(4 4 9 7, 5 5 9 7)), POINTZM(7 7 9 7))')); +1 # rows (not including the header row) +1 # columns +AsText(GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(9 9 9 7), GEOMETRYCOLLECTIONZM(POINTZM(0 0 9 7), LINESTRINGZM(1 1 9 7, 2 2 9 7)), POINTZM(8 8 9 7), GEOMETRYCOLLECTIONZM(POINTZM(3 3 9 7), LINESTRINGZM(4 4 9 7, 5 5 9 7)), POINTZM(7 7 9 7))')); +GEOMETRYCOLLECTION ZM(POINT ZM(9 9 9 7), POINT ZM(0 0 9 7), POINT ZM(8 8 9 7), POINT ZM(3 3 9 7), POINT ZM(7 7 9 7), LINESTRING ZM(1 1 9 7, 2 2 9 7), LINESTRING ZM(4 4 9 7, 5 5 9 7)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext5.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext5.testcase new file mode 100644 index 0000000..0b3e136 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext5.testcase @@ -0,0 +1,7 @@ +geomfromtext5 +:memory: #use in-memory database +SELECT AsWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900)", 4326), 4); +1 # rows (not including the header row) +1 # columns +AsWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900)", 4326), 4) +POINT(-71.1043 42.3151) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext6.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext6.testcase new file mode 100644 index 0000000..5f347ce --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext6.testcase @@ -0,0 +1,7 @@ +geomfromtext6 +:memory: #use in-memory database +SELECT AsEWkt(GeomFromText("POINT(-72 42)", 4326)); +1 # rows (not including the header row) +1 # columns +AsEWkt(GeomFromText("POINT(-72 42)", 4326)) +SRID=4326;POINT(-72 42) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext7.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext7.testcase new file mode 100644 index 0000000..423956f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext7.testcase @@ -0,0 +1,7 @@ +geomfromtext7 +:memory: #use in-memory database +SELECT AsEWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900)", "WGS-84")); +1 # rows (not including the header row) +1 # columns +AsEWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900)", "WGS-84")) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext8.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext8.testcase new file mode 100644 index 0000000..976eef9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext8.testcase @@ -0,0 +1,7 @@ +geomfromtext8 +:memory: #use in-memory database +SELECT AsEWkt(GeomFromText(3.14, 4326)); +1 # rows (not including the header row) +1 # columns +AsEWkt(GeomFromText(3.14, 4326)) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext9.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext9.testcase new file mode 100644 index 0000000..da410f2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomfromtext9.testcase @@ -0,0 +1,7 @@ +geomfromtext9 +:memory: #use in-memory database +SELECT AsEWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900 45)", 4326)); +1 # rows (not including the header row) +1 # columns +AsEWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900 45)", 4326)) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype1.testcase b/src/spatialite/test/sql_stmt_tests/geomtype1.testcase new file mode 100644 index 0000000..747454b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype1.testcase @@ -0,0 +1,9 @@ +geometrytype1 - POINT +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("POINT(-71.1043443253471 42.315067601582900)") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +POINT +XY \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype10.testcase b/src/spatialite/test/sql_stmt_tests/geomtype10.testcase new file mode 100644 index 0000000..51569e5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype10.testcase @@ -0,0 +1,9 @@ +geometrytype - LINESTRING ZM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("LINESTRINGZM(4 0 4 1, 4 4 4 2, 8 4 2 3)") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +LINESTRING ZM +XYZM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype11.testcase b/src/spatialite/test/sql_stmt_tests/geomtype11.testcase new file mode 100644 index 0000000..1f6bb3a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype11.testcase @@ -0,0 +1,9 @@ +geometrytype - GEOMETRYCOLLECTION +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +GEOMETRYCOLLECTION +XY \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype12.testcase b/src/spatialite/test/sql_stmt_tests/geomtype12.testcase new file mode 100644 index 0000000..76be6ac --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype12.testcase @@ -0,0 +1,11 @@ +geometrytype - MULTIPOINT +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOINT (10 40, 40 30, 20 20, 30 10)") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +MULTIPOINT +XY +MULTIPOINT diff --git a/src/spatialite/test/sql_stmt_tests/geomtype13.testcase b/src/spatialite/test/sql_stmt_tests/geomtype13.testcase new file mode 100644 index 0000000..9d6e355 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype13.testcase @@ -0,0 +1,11 @@ +geometrytype - MULTIPOLYGON +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOLYGON (((30 20, 10 40, 45 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +MULTIPOLYGON +XY +MULTIPOLYGON \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype14.testcase b/src/spatialite/test/sql_stmt_tests/geomtype14.testcase new file mode 100644 index 0000000..c214893 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype14.testcase @@ -0,0 +1,9 @@ +geometrytype - MULTIPOLYGONZ +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTIPOLYGONZ(((30 20 1, 10 40 1, 45 40 1, 30 20 1)),((15 5 2, 40 10 2, 10 20 2, 5 10 2, 15 5 2)))") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +MULTIPOLYGON Z +XYZ \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype15.testcase b/src/spatialite/test/sql_stmt_tests/geomtype15.testcase new file mode 100644 index 0000000..ead0611 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype15.testcase @@ -0,0 +1,9 @@ +geometrytype - MULTIPOLYGONM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTIPOLYGONM(((30 20 1, 10 40 1, 45 40 1, 30 20 1)),((15 5 2, 40 10 2, 10 20 2, 5 10 2, 15 5 2)))") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +MULTIPOLYGON M +XYM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype16.testcase b/src/spatialite/test/sql_stmt_tests/geomtype16.testcase new file mode 100644 index 0000000..ec70367 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype16.testcase @@ -0,0 +1,9 @@ +geometrytype - MULTIPOLYGONZM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTIPOLYGONZM(((30 20 1 2, 10 40 1 2, 45 40 1 2, 30 20 1 2)),((15 5 2 3, 40 10 2 3, 10 20 2 3, 5 10 2 3, 15 5 2 3)))") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +MULTIPOLYGON ZM +XYZM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype17.testcase b/src/spatialite/test/sql_stmt_tests/geomtype17.testcase new file mode 100644 index 0000000..fc9a53a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype17.testcase @@ -0,0 +1,9 @@ +geometrytype - MULTILINESTRING +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTILINESTRING ((30 20, 10 40, 45 40, 30 20),(15 5, 40 10, 10 20, 5 10, 15 5))") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +MULTILINESTRING +XY \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype18.testcase b/src/spatialite/test/sql_stmt_tests/geomtype18.testcase new file mode 100644 index 0000000..a972d9f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype18.testcase @@ -0,0 +1,9 @@ +geometrytype - MULTILINESTRINGZ +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTILINESTRINGZ((30 20 1, 10 40 1, 45 40 1, 30 20 1),(15 5 2, 40 10 2, 10 20 2, 5 10 2, 15 5 2))") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +MULTILINESTRING Z +XYZ \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype19.testcase b/src/spatialite/test/sql_stmt_tests/geomtype19.testcase new file mode 100644 index 0000000..9229034 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype19.testcase @@ -0,0 +1,9 @@ +geometrytype - MULTILINESTRINGZM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTILINESTRINGZM((30 20 1 2, 10 40 1 2, 45 40 1 2, 30 20 1 2),(15 5 2 3, 40 10 2 3, 10 20 2 3, 5 10 2 3, 15 5 2 3))") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +MULTILINESTRING ZM +XYZM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype2.testcase b/src/spatialite/test/sql_stmt_tests/geomtype2.testcase new file mode 100644 index 0000000..c8e00a8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype2.testcase @@ -0,0 +1,9 @@ +geometrytype2 - POINTZ +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("POINTZ(-71.1043443253471 42.315067601582900 26.2)") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +POINT Z +XYZ \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype20.testcase b/src/spatialite/test/sql_stmt_tests/geomtype20.testcase new file mode 100644 index 0000000..30cc09e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype20.testcase @@ -0,0 +1,11 @@ +geometrytype - MULTILINESTRINGM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTILINESTRINGM((30 20 1, 10 40 1, 45 40 1, 30 20 1),(15 5 2, 40 10 2, 10 20 2, 5 10 2, 15 5 2))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +MULTILINESTRING M +XYM +MULTILINESTRING \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype21.testcase b/src/spatialite/test/sql_stmt_tests/geomtype21.testcase new file mode 100644 index 0000000..b0651dc --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype21.testcase @@ -0,0 +1,11 @@ +geometrytype - POLYGON +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("POLYGON ((30 20, 10 40, 45 40, 30 20),(15 5, 40 10, 10 20, 5 10, 15 5))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +POLYGON +XY +POLYGON diff --git a/src/spatialite/test/sql_stmt_tests/geomtype22.testcase b/src/spatialite/test/sql_stmt_tests/geomtype22.testcase new file mode 100644 index 0000000..e782cec --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype22.testcase @@ -0,0 +1,9 @@ +geometrytype - POLYGONZ +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("POLYGONZ((30 20 1, 10 40 1, 45 40 1, 30 20 1),(15 5 2, 40 10 2, 10 20 2, 5 10 2, 15 5 2))") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +POLYGON Z +XYZ \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype23.testcase b/src/spatialite/test/sql_stmt_tests/geomtype23.testcase new file mode 100644 index 0000000..a2ce734 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype23.testcase @@ -0,0 +1,11 @@ +geometrytype - POLYGONM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("POLYGONM((30 20 1, 10 40 1, 45 40 1, 30 20 1),(15 5 2, 40 10 2, 10 20 2, 5 10 2, 15 5 2))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +POLYGON M +XYM +POLYGON diff --git a/src/spatialite/test/sql_stmt_tests/geomtype24.testcase b/src/spatialite/test/sql_stmt_tests/geomtype24.testcase new file mode 100644 index 0000000..a142b2f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype24.testcase @@ -0,0 +1,9 @@ +geometrytype - POLYGONZM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("POLYGONZM((30 20 1 2, 10 40 1 2, 45 40 1 2, 30 20 1 2),(15 5 2 3, 40 10 2 3, 10 20 2 3, 5 10 2 3, 15 5 2 3))") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +POLYGON ZM +XYZM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype25.testcase b/src/spatialite/test/sql_stmt_tests/geomtype25.testcase new file mode 100644 index 0000000..d6f8874 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype25.testcase @@ -0,0 +1,11 @@ +geometrytype - MULTIPOINTZM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOINTZM(-71 42 26.2 3)") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +MULTIPOINT ZM +XYZM +MULTIPOINT diff --git a/src/spatialite/test/sql_stmt_tests/geomtype26.testcase b/src/spatialite/test/sql_stmt_tests/geomtype26.testcase new file mode 100644 index 0000000..b4b30d6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype26.testcase @@ -0,0 +1,9 @@ +geometrytype - MULTIPOINTZ +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTIPOINTZ(-71 42 26.2)") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +MULTIPOINT Z +XYZ \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype27.testcase b/src/spatialite/test/sql_stmt_tests/geomtype27.testcase new file mode 100644 index 0000000..90cab18 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype27.testcase @@ -0,0 +1,9 @@ +geometrytype - MULTIPOINTM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTIPOINTM(-71 42 26.2)") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +MULTIPOINT M +XYM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype28.testcase b/src/spatialite/test/sql_stmt_tests/geomtype28.testcase new file mode 100644 index 0000000..4d11150 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype28.testcase @@ -0,0 +1,9 @@ +geometrytype - MULTIPOINT +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTIPOINT(-71 42, 4 22)") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +MULTIPOINT +XY \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype29.testcase b/src/spatialite/test/sql_stmt_tests/geomtype29.testcase new file mode 100644 index 0000000..0454716 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype29.testcase @@ -0,0 +1,9 @@ +geometrytype - GEOMETRYCOLLECTIONZM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(4 6 4 1), POINTZM(3 3 29 1), LINESTRINGZM(4 6 0 0,7 10 0 0))") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +GEOMETRYCOLLECTION ZM +XYZM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype3.testcase b/src/spatialite/test/sql_stmt_tests/geomtype3.testcase new file mode 100644 index 0000000..75ba452 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype3.testcase @@ -0,0 +1,9 @@ +geometrytype3 - POINTZM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("POINTZM(-71.1043443253471 42.315067601582900 26.2 3)") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +POINT ZM +XYZM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype30.testcase b/src/spatialite/test/sql_stmt_tests/geomtype30.testcase new file mode 100644 index 0000000..8d65be3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype30.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONZ +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(4 6 4), POINTZ(3 3 29), LINESTRINGZ(4 6 0,7 10 0))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION Z +XYZ +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype31.testcase b/src/spatialite/test/sql_stmt_tests/geomtype31.testcase new file mode 100644 index 0000000..2ecab79 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype31.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(POINTM(4 6 4), POINTM(3 3 29), LINESTRINGM(4 6 0,7 0 0))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION M +XYM +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype32.testcase b/src/spatialite/test/sql_stmt_tests/geomtype32.testcase new file mode 100644 index 0000000..d71ab98 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype32.testcase @@ -0,0 +1,9 @@ +geometrytype - GEOMETRYCOLLECTIONM only linestring +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(4 6 0,7 10 0))") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +GEOMETRYCOLLECTION M +XYM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype33.testcase b/src/spatialite/test/sql_stmt_tests/geomtype33.testcase new file mode 100644 index 0000000..8cc509c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype33.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONZ only linestring +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(4 6 0, 10 0 0))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION Z +XYZ +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype34.testcase b/src/spatialite/test/sql_stmt_tests/geomtype34.testcase new file mode 100644 index 0000000..718cf36 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype34.testcase @@ -0,0 +1,9 @@ +geometrytype - GEOMETRYCOLLECTIONZM only Linestring +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(4 6 0 0,7 10 0 0))") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +GEOMETRYCOLLECTION ZM +XYZM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype35.testcase b/src/spatialite/test/sql_stmt_tests/geomtype35.testcase new file mode 100644 index 0000000..711bd82 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype35.testcase @@ -0,0 +1,9 @@ +geometrytype - GEOMETRYCOLLECTION only linestring +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTION(LINESTRING(4 6, 10 0))") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +GEOMETRYCOLLECTION +XY \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype36.testcase b/src/spatialite/test/sql_stmt_tests/geomtype36.testcase new file mode 100644 index 0000000..0897680 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype36.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONZ two linestring +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(4 6 0, 10 0 0), LINESTRINGZ(2 3 0, 5 1 0))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION Z +XYZ +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype37.testcase b/src/spatialite/test/sql_stmt_tests/geomtype37.testcase new file mode 100644 index 0000000..1c72ea8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype37.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONM two linestring +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(4 6 0, 10 0 0), LINESTRINGM(2 3 0, 5 1 0))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION M +XYM +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype38.testcase b/src/spatialite/test/sql_stmt_tests/geomtype38.testcase new file mode 100644 index 0000000..56a0ec5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype38.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONM - two points +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(POINTM(4 6 4), POINTM(3 3 29))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION M +XYM +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype39.testcase b/src/spatialite/test/sql_stmt_tests/geomtype39.testcase new file mode 100644 index 0000000..b6fb06f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype39.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONM - one point +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(POINTM(3 3 29))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION M +XYM +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype4.testcase b/src/spatialite/test/sql_stmt_tests/geomtype4.testcase new file mode 100644 index 0000000..d40a67e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype4.testcase @@ -0,0 +1,9 @@ +geometrytype4 - POINTM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("POINTM(-71.1043443253471 42.315067601582900 3)") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +POINT M +XYM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype40.testcase b/src/spatialite/test/sql_stmt_tests/geomtype40.testcase new file mode 100644 index 0000000..af18c73 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype40.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONZ - one polygon +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(POLYGONZ((4 6 0,7 10 0, 12 3 1, 4 6 0)))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION Z +XYZ +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype41.testcase b/src/spatialite/test/sql_stmt_tests/geomtype41.testcase new file mode 100644 index 0000000..4fa4796 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype41.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONZ - two polygons +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(POLYGONZ((4 6 0,7 10 0, 12 3 1, 4 6 0)),POLYGONZ((4 6 1,7 10 1, 12 3 2, 4 6 1)))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION Z +XYZ +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype42.testcase b/src/spatialite/test/sql_stmt_tests/geomtype42.testcase new file mode 100644 index 0000000..b77da32 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype42.testcase @@ -0,0 +1,11 @@ +geometrytype - MULTILINESTRINGM - one line +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTILINESTRINGM((30 20 1, 10 40 1, 45 40 1, 30 20 1))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +MULTILINESTRING M +XYM +MULTILINESTRING \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype43.testcase b/src/spatialite/test/sql_stmt_tests/geomtype43.testcase new file mode 100644 index 0000000..9aac294 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype43.testcase @@ -0,0 +1,11 @@ +geometrytype - MULTIPOLYGONZM - one polygon +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOLYGONZM(((30 20 1 2, 10 40 1 2, 45 40 1 2, 30 20 1 2)))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +MULTIPOLYGON ZM +XYZM +MULTIPOLYGON \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype44.testcase b/src/spatialite/test/sql_stmt_tests/geomtype44.testcase new file mode 100644 index 0000000..114d995 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype44.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONZ - linestring and polygon +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(4 6 0,7 10 0, 12 3 1),POLYGONZ((4 6 1,7 10 1, 12 3 2, 4 6 1)))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION Z +XYZ +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype45.testcase b/src/spatialite/test/sql_stmt_tests/geomtype45.testcase new file mode 100644 index 0000000..d8a7bb0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype45.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONZ - point and polygon +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(4 6 0),POLYGONZ((4 6 1,7 10 1, 12 3 2, 4 6 1)))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION Z +XYZ +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype46.testcase b/src/spatialite/test/sql_stmt_tests/geomtype46.testcase new file mode 100644 index 0000000..1df4fff --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype46.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONM - point and polygon +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(POINTM(4 6 0),POLYGONM((4 6 1,7 10 1, 12 3 2, 4 6 1)))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION M +XYM +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype47.testcase b/src/spatialite/test/sql_stmt_tests/geomtype47.testcase new file mode 100644 index 0000000..885b87f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype47.testcase @@ -0,0 +1,11 @@ +geometrytype - MULTIPOLYGONZ - one polygon +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOLYGONZ(((30 20 1, 10 40 1, 45 40 1, 30 20 1)))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +MULTIPOLYGON Z +XYZ +MULTIPOLYGON \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype48.testcase b/src/spatialite/test/sql_stmt_tests/geomtype48.testcase new file mode 100644 index 0000000..9151c28 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype48.testcase @@ -0,0 +1,11 @@ +geometrytype - MULTIPOLYGONM - one polygon +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOLYGONM(((30 20 1, 10 40 1, 45 40 1, 30 20 1)))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +MULTIPOLYGON M +XYM +MULTIPOLYGON \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype49.testcase b/src/spatialite/test/sql_stmt_tests/geomtype49.testcase new file mode 100644 index 0000000..a925176 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype49.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONM - one POLYGONM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(POLYGONM((30 20 1, 10 40 1, 45 40 1, 30 20 1)))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION M +XYM +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype5.testcase b/src/spatialite/test/sql_stmt_tests/geomtype5.testcase new file mode 100644 index 0000000..0197691 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype5.testcase @@ -0,0 +1,11 @@ +geometrytype5 - zeroblob +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT zeroblob(20) as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +(NULL) +(NULL) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype50.testcase b/src/spatialite/test/sql_stmt_tests/geomtype50.testcase new file mode 100644 index 0000000..4a26351 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype50.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONZM - one POLYGONZM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((30 20 1 2, 10 40 1 2, 45 40 1 2, 30 20 1 2)))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION ZM +XYZM +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype51.testcase b/src/spatialite/test/sql_stmt_tests/geomtype51.testcase new file mode 100644 index 0000000..17df0c3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype51.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTION - one POLYGON +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTION(POLYGON((30 20, 10 40, 45 40, 30 20)))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION +XY +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype52.testcase b/src/spatialite/test/sql_stmt_tests/geomtype52.testcase new file mode 100644 index 0000000..1e25f9a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype52.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONZM - two linestring +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(4 6 0 1,7 10 0 1, 12 3 1 1),LINESTRINGZM(1 2 3 4,5 4 3 4, 12 3 2 1))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION ZM +XYZM +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype53.testcase b/src/spatialite/test/sql_stmt_tests/geomtype53.testcase new file mode 100644 index 0000000..ec089f3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype53.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTION - two linestring +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTION(LINESTRING(4 6,7 10, 12 3),LINESTRING(1 2, 3 4))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION +XY +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype54.testcase b/src/spatialite/test/sql_stmt_tests/geomtype54.testcase new file mode 100644 index 0000000..7d9e12d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype54.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONM - two polygons +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(POLYGONM((4 6 0,7 10 0, 12 3 1, 4 6 0)),POLYGONM((4 6 1,7 10 1, 12 3 2, 4 6 1)))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION M +XYM +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype55.testcase b/src/spatialite/test/sql_stmt_tests/geomtype55.testcase new file mode 100644 index 0000000..6807d5e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype55.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTION ZM - two polygons +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((4 6 0 1,7 10 0 1, 12 3 1 1, 4 6 0 1)),POLYGONZM((4 6 1 2,7 10 1 2, 12 3 2 2, 4 6 1 2)))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION ZM +XYZM +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype56.testcase b/src/spatialite/test/sql_stmt_tests/geomtype56.testcase new file mode 100644 index 0000000..1b75bbd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype56.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTION - two polygons +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTION(POLYGON((4 6,7 10, 12 3, 4 6)),POLYGON((4 6,7 10, 12 3, 4 6)))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION +XY +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype57.testcase b/src/spatialite/test/sql_stmt_tests/geomtype57.testcase new file mode 100644 index 0000000..1f16fdd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype57.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONZ - two points +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(4 6 4), POINTZ(3 3 29))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION Z +XYZ +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype58.testcase b/src/spatialite/test/sql_stmt_tests/geomtype58.testcase new file mode 100644 index 0000000..5a672f8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype58.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONZM - two points +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(4 6 4 1), POINTZM(3 3 29 2))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION ZM +XYZM +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype59.testcase b/src/spatialite/test/sql_stmt_tests/geomtype59.testcase new file mode 100644 index 0000000..269cff0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype59.testcase @@ -0,0 +1,9 @@ +geometrytype - MULTIPOINT - one point +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTIPOINT(-71 42)") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +MULTIPOINT +XY \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype6.testcase b/src/spatialite/test/sql_stmt_tests/geomtype6.testcase new file mode 100644 index 0000000..d0ccb52 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype6.testcase @@ -0,0 +1,9 @@ +geometrytype6 - LINESTRING +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("LINESTRING(4 0, 4 4, 8 4)") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +LINESTRING +XY \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype60.testcase b/src/spatialite/test/sql_stmt_tests/geomtype60.testcase new file mode 100644 index 0000000..630fdec --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype60.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONZ - one point +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(3 3 29))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION Z +XYZ +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype61.testcase b/src/spatialite/test/sql_stmt_tests/geomtype61.testcase new file mode 100644 index 0000000..da09c4f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype61.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTIONZM - one point +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(3 3 29 2))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION ZM +XYZM +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype62.testcase b/src/spatialite/test/sql_stmt_tests/geomtype62.testcase new file mode 100644 index 0000000..554c1d4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype62.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTION - one point +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTION(POINT(3 2))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION +XY +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype63.testcase b/src/spatialite/test/sql_stmt_tests/geomtype63.testcase new file mode 100644 index 0000000..d885f3b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype63.testcase @@ -0,0 +1,11 @@ +geometrytype - GEOMETRYCOLLECTION - two points +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTION(POINT(3 2), POINT(1 4))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +GEOMETRYCOLLECTION +XY +GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype64.testcase b/src/spatialite/test/sql_stmt_tests/geomtype64.testcase new file mode 100644 index 0000000..06e9437 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype64.testcase @@ -0,0 +1,11 @@ +geometrytype - MULTIPOINTZ +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOINTZ (10 40 10, 40 30 15, 20 20 20, 30 10 9)") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +MULTIPOINT Z +XYZ +MULTIPOINT diff --git a/src/spatialite/test/sql_stmt_tests/geomtype65.testcase b/src/spatialite/test/sql_stmt_tests/geomtype65.testcase new file mode 100644 index 0000000..50d8f26 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype65.testcase @@ -0,0 +1,11 @@ +geometrytype - MULTIPOINTM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOINTM (10 40 10, 40 30 15, 20 20 20, 30 10 9)") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +MULTIPOINT M +XYM +MULTIPOINT diff --git a/src/spatialite/test/sql_stmt_tests/geomtype66.testcase b/src/spatialite/test/sql_stmt_tests/geomtype66.testcase new file mode 100644 index 0000000..683b5fe --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype66.testcase @@ -0,0 +1,11 @@ +geometrytype - MULTIPOINTZM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOINTZM (10 40 10 1, 40 30 15 2, 20 20 20 2, 30 10 9 1)") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +MULTIPOINT ZM +XYZM +MULTIPOINT diff --git a/src/spatialite/test/sql_stmt_tests/geomtype67.testcase b/src/spatialite/test/sql_stmt_tests/geomtype67.testcase new file mode 100644 index 0000000..40abe33 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype67.testcase @@ -0,0 +1,11 @@ +geometrytype - MULTILINESTRINGZ - one line +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTILINESTRINGZ((30 20 1, 10 40 1, 45 40 1, 30 20 1))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +MULTILINESTRING Z +XYZ +MULTILINESTRING \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype68.testcase b/src/spatialite/test/sql_stmt_tests/geomtype68.testcase new file mode 100644 index 0000000..4894a00 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype68.testcase @@ -0,0 +1,11 @@ +geometrytype - MULTILINESTRINGZM - one line +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTILINESTRINGZM((30 20 1 2, 10 40 1 2, 45 40 1 2, 30 20 1 2))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +MULTILINESTRING ZM +XYZM +MULTILINESTRING \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype69.testcase b/src/spatialite/test/sql_stmt_tests/geomtype69.testcase new file mode 100644 index 0000000..2631c0d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype69.testcase @@ -0,0 +1,11 @@ +geometrytype - MULTILINESTRING - one line +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTILINESTRING((30 20, 10 40, 45 40, 30 20))") as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +MULTILINESTRING +XY +MULTILINESTRING \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype7.testcase b/src/spatialite/test/sql_stmt_tests/geomtype7.testcase new file mode 100644 index 0000000..14e25a1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype7.testcase @@ -0,0 +1,11 @@ +geometrytype - 3 + 2 +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT 3 + 2 as geom) dummy; +1 # rows (not including the header row) +3 # columns +GeometryType(geom) +CoordDimension(geom) +GeometryAliasType(geom) +(NULL) +(NULL) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype8.testcase b/src/spatialite/test/sql_stmt_tests/geomtype8.testcase new file mode 100644 index 0000000..1024539 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype8.testcase @@ -0,0 +1,9 @@ +geometrytype - LINESTRINGZ +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("LINESTRINGZ(4 0 1, 4 4 2, 8 4 3)") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +LINESTRING Z +XYZ \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype9.testcase b/src/spatialite/test/sql_stmt_tests/geomtype9.testcase new file mode 100644 index 0000000..564ff88 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/geomtype9.testcase @@ -0,0 +1,9 @@ +geometrytype - LINESTRINGM +:memory: #use in-memory database +SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("LINESTRINGM(4 0 1, 4 4 2, 8 4 3)") as geom) dummy; +1 # rows (not including the header row) +2 # columns +GeometryType(geom) +CoordDimension(geom) +LINESTRING M +XYM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/getlayerextent1.testcase b/src/spatialite/test/sql_stmt_tests/getlayerextent1.testcase new file mode 100644 index 0000000..6807e08 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getlayerextent1.testcase @@ -0,0 +1,7 @@ +GetLayerExtent - NULL, NULL +:memory: #use in-memory database +SELECT GetLayerExtent(NULL, NULL); +1 # rows (not including the header row) +1 # columns +GetLayerExtent(NULL, NULL); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/getlayerextent10.testcase b/src/spatialite/test/sql_stmt_tests/getlayerextent10.testcase new file mode 100644 index 0000000..feed782 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getlayerextent10.testcase @@ -0,0 +1,7 @@ +GetLayerExtent - TEXT, NULL +:memory: #use in-memory database +SELECT GetLayerExtent('table', NULL); +1 # rows (not including the header row) +1 # columns +GetLayerExtent('table', NULL); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/getlayerextent11.testcase b/src/spatialite/test/sql_stmt_tests/getlayerextent11.testcase new file mode 100644 index 0000000..6135b66 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getlayerextent11.testcase @@ -0,0 +1,7 @@ +GetLayerExtent - TEXT, TEXT, TEXT +:memory: #use in-memory database +SELECT GetLayerExtent('table', 'column', 'alpha'); +1 # rows (not including the header row) +1 # columns +GetLayerExtent('table', 'column', 'alpha'); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/getlayerextent12.testcase b/src/spatialite/test/sql_stmt_tests/getlayerextent12.testcase new file mode 100644 index 0000000..7800b70 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getlayerextent12.testcase @@ -0,0 +1,7 @@ +GetLayerExtent - TEXT, TEXT, INT +:memory: #use in-memory database +SELECT GetLayerExtent('table', 'column', 1); +1 # rows (not including the header row) +1 # columns +GetLayerExtent('table', 'column', 1); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/getlayerextent13.testcase b/src/spatialite/test/sql_stmt_tests/getlayerextent13.testcase new file mode 100644 index 0000000..bddc286 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getlayerextent13.testcase @@ -0,0 +1,7 @@ +GetLayerExtent - TEXT, TEXT, DOUBLE +:memory: #use in-memory database +SELECT GetLayerExtent('table', 'column', 1.1); +1 # rows (not including the header row) +1 # columns +GetLayerExtent('table', 'column', 1.1); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/getlayerextent14.testcase b/src/spatialite/test/sql_stmt_tests/getlayerextent14.testcase new file mode 100644 index 0000000..941b9c3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getlayerextent14.testcase @@ -0,0 +1,7 @@ +GetLayerExtent - TEXT, TEXT, BLOB +:memory: #use in-memory database +SELECT GetLayerExtent('table', 'column', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +GetLayerExtent('table', 'column', zeroblob(4)); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/getlayerextent2.testcase b/src/spatialite/test/sql_stmt_tests/getlayerextent2.testcase new file mode 100644 index 0000000..feed782 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getlayerextent2.testcase @@ -0,0 +1,7 @@ +GetLayerExtent - TEXT, NULL +:memory: #use in-memory database +SELECT GetLayerExtent('table', NULL); +1 # rows (not including the header row) +1 # columns +GetLayerExtent('table', NULL); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/getlayerextent3.testcase b/src/spatialite/test/sql_stmt_tests/getlayerextent3.testcase new file mode 100644 index 0000000..2ac98d5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getlayerextent3.testcase @@ -0,0 +1,7 @@ +GetLayerExtent - TEXT, TEXT +:memory: #use in-memory database +SELECT GetLayerExtent('table', 'column'); +1 # rows (not including the header row) +1 # columns +GetLayerExtent('table', 'column'); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/getlayerextent4.testcase b/src/spatialite/test/sql_stmt_tests/getlayerextent4.testcase new file mode 100644 index 0000000..484c13d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getlayerextent4.testcase @@ -0,0 +1,7 @@ +GetLayerExtent - INT, TEXT +:memory: #use in-memory database +SELECT GetLayerExtent(1, 'column'); +1 # rows (not including the header row) +1 # columns +GetLayerExtent(1, 'column'); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/getlayerextent5.testcase b/src/spatialite/test/sql_stmt_tests/getlayerextent5.testcase new file mode 100644 index 0000000..edd2b31 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getlayerextent5.testcase @@ -0,0 +1,7 @@ +GetLayerExtent - DOUBLE, TEXT +:memory: #use in-memory database +SELECT GetLayerExtent(1.1, 'column'); +1 # rows (not including the header row) +1 # columns +GetLayerExtent(1.1, 'column'); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/getlayerextent6.testcase b/src/spatialite/test/sql_stmt_tests/getlayerextent6.testcase new file mode 100644 index 0000000..294840f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getlayerextent6.testcase @@ -0,0 +1,7 @@ +GetLayerExtent - BLOB, TEXT +:memory: #use in-memory database +SELECT GetLayerExtent(zeroblob(4), 'column'); +1 # rows (not including the header row) +1 # columns +GetLayerExtent(zeroblob(4), 'column'); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/getlayerextent7.testcase b/src/spatialite/test/sql_stmt_tests/getlayerextent7.testcase new file mode 100644 index 0000000..6f8b410 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getlayerextent7.testcase @@ -0,0 +1,7 @@ +GetLayerExtent - TEXT, INT +:memory: #use in-memory database +SELECT GetLayerExtent('table', 1); +1 # rows (not including the header row) +1 # columns +GetLayerExtent('table', 1); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/getlayerextent8.testcase b/src/spatialite/test/sql_stmt_tests/getlayerextent8.testcase new file mode 100644 index 0000000..a241f9c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getlayerextent8.testcase @@ -0,0 +1,7 @@ +GetLayerExtent - TEXT, DOUBLE +:memory: #use in-memory database +SELECT GetLayerExtent('table', 1.1); +1 # rows (not including the header row) +1 # columns +GetLayerExtent('table', 1.1); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/getlayerextent9.testcase b/src/spatialite/test/sql_stmt_tests/getlayerextent9.testcase new file mode 100644 index 0000000..01f684c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getlayerextent9.testcase @@ -0,0 +1,7 @@ +GetLayerExtent - TEXT, BLOB +:memory: #use in-memory database +SELECT GetLayerExtent('table', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +GetLayerExtent('table', zeroblob(4)); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/getmimetype1.testcase b/src/spatialite/test/sql_stmt_tests/getmimetype1.testcase new file mode 100644 index 0000000..3c41c98 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getmimetype1.testcase @@ -0,0 +1,8 @@ +GetMimeType - NULL +:memory: #use in-memory database +SELECT GetMimeType(NULL); +1 # rows (not including the header row) +1 # columns +GetMimeType(NULL) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/getmimetype2.testcase b/src/spatialite/test/sql_stmt_tests/getmimetype2.testcase new file mode 100644 index 0000000..c657cc0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getmimetype2.testcase @@ -0,0 +1,8 @@ +GetMimeType - INTEGER +:memory: #use in-memory database +SELECT GetMimeType(1); +1 # rows (not including the header row) +1 # columns +GetMimeType(1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/getmimetype3.testcase b/src/spatialite/test/sql_stmt_tests/getmimetype3.testcase new file mode 100644 index 0000000..70e37bb --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getmimetype3.testcase @@ -0,0 +1,8 @@ +GetMimeType - DOUBLE +:memory: #use in-memory database +SELECT GetMimeType(1.1); +1 # rows (not including the header row) +1 # columns +GetMimeType(1.1) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/getmimetype4.testcase b/src/spatialite/test/sql_stmt_tests/getmimetype4.testcase new file mode 100644 index 0000000..2712577 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getmimetype4.testcase @@ -0,0 +1,8 @@ +GetMimeType - TEXT +:memory: #use in-memory database +SELECT GetMimeType('alpha'); +1 # rows (not including the header row) +1 # columns +GetMimeType('alpha') +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/getmimetype5.testcase b/src/spatialite/test/sql_stmt_tests/getmimetype5.testcase new file mode 100644 index 0000000..c893bb7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/getmimetype5.testcase @@ -0,0 +1,8 @@ +GetMimeType - BLOB +:memory: #use in-memory database +SELECT GetMimeType(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +GetMimeType(zeroblob(4)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/gml1.testcase b/src/spatialite/test/sql_stmt_tests/gml1.testcase new file mode 100644 index 0000000..f94e1d8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml1.testcase @@ -0,0 +1,8 @@ +GML MultiPoint Z: excessive precision +:memory: #use in-memory database +SELECT AsGML(3, GeomFromText("MULTIPOINTZ(1 2 100, 3 4 100)", 4326), 44); +1 # rows (not including the header row) +1 # columns +AsGML(3, GeomFromText("MULTIPOINTZ(1 2 100, 3 4 100)", 4326), 44) +1 2 1003 4 100:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/gml10.testcase b/src/spatialite/test/sql_stmt_tests/gml10.testcase new file mode 100644 index 0000000..54f1d6a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml10.testcase @@ -0,0 +1,8 @@ +GML Polygon Z: no SRID +:memory: #use in-memory database +SELECT AsGML(3, GeomFromText("POLYGONZ((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100), (15 15 80, 16 15 90, 16 16 95, 15 16 90, 15 15 80))")); +1 # rows (not including the header row) +1 # columns +AsGML(3, GeomFromText("POLYGONZ((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100), (15 15 80, 16 15 90, 16 16 95, 15 16 90, 15 15 80))")) +10 10 100 20 10 101 20 20 102 10 20 103 10 10 10015 15 80 16 15 90 16 16 95 15 16 90 15 15 80:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/gml11.testcase b/src/spatialite/test/sql_stmt_tests/gml11.testcase new file mode 100644 index 0000000..a3070bd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml11.testcase @@ -0,0 +1,8 @@ +GML Polygon: no SRID +:memory: #use in-memory database +SELECT AsGML(3, GeomFromText("POLYGON((10 10, 20 10, 20 20, 10 20, 10 10), (15 15, 16 15, 16 16, 15 16, 15 15))")); +1 # rows (not including the header row) +1 # columns +AsGML(3, GeomFromText("POLYGON((10 10, 20 10, 20 20, 10 20, 10 10), (15 15, 16 15, 16 16, 15 16, 15 15))")) +10 10 20 10 20 20 10 20 10 1015 15 16 15 16 16 15 16 15 15:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/gml12.testcase b/src/spatialite/test/sql_stmt_tests/gml12.testcase new file mode 100644 index 0000000..f721b77 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml12.testcase @@ -0,0 +1,8 @@ +GML MultiPolygon Z: no SRID +:memory: #use in-memory database +SELECT AsGML(3, GeomFromText("MULTIPOLYGONZ(((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100)), ((85 85 80, 90 85 90, 90 90 95, 85 90 90, 85 85 80)))")); +1 # rows (not including the header row) +1 # columns +AsGML(3, GeomFromText("MULTIPOLYGONZ(((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100)), ((85 85 80, 90 85 90, 90 90 95, 85 90 90, 85 85 80)))")) +10 10 100 20 10 101 20 20 102 10 20 103 10 10 10085 85 80 90 85 90 90 90 95 85 90 90 85 85 80:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/gml13.testcase b/src/spatialite/test/sql_stmt_tests/gml13.testcase new file mode 100644 index 0000000..4147086 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml13.testcase @@ -0,0 +1,8 @@ +GML MultiPolygon Z +:memory: #use in-memory database +SELECT AsGML(3, GeomFromText("MULTIPOLYGONZ(((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100)), ((85 85 80, 90 85 90, 90 90 95, 85 90 90, 85 85 80)))", 4326)); +1 # rows (not including the header row) +1 # columns +AsGML(3, GeomFromText("MULTIPOLYGONZ(((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100)), ((85 85 80, 90 85 90, 90 90 95, 85 90 90, 85 85 80)))", 4326)) +10 10 100 20 10 101 20 20 102 10 20 103 10 10 10085 85 80 90 85 90 90 90 95 85 90 90 85 85 80:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/gml14.testcase b/src/spatialite/test/sql_stmt_tests/gml14.testcase new file mode 100644 index 0000000..06f5a7c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml14.testcase @@ -0,0 +1,8 @@ +GML MultiPolygon: no SRID +:memory: #use in-memory database +SELECT AsGML(3, GeomFromText("MULTIPOLYGON(((10 10, 20 10, 20 20, 10 20, 10 10)), ((85 85, 90 85, 90 90, 85 90, 85 85)))")); +1 # rows (not including the header row) +1 # columns +AsGML(3, GeomFromText("MULTIPOLYGON(((10 10, 20 10, 20 20, 10 20, 10 10)), ((85 85, 90 85, 90 90, 85 90, 85 85)))")) +10 10 20 10 20 20 10 20 10 1085 85 90 85 90 90 85 90 85 85:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/gml15.testcase b/src/spatialite/test/sql_stmt_tests/gml15.testcase new file mode 100644 index 0000000..67db9b3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml15.testcase @@ -0,0 +1,8 @@ +GMLv2 MultiPolygon: no SRID +:memory: #use in-memory database +SELECT AsGML(GeomFromText("MULTIPOLYGON(((10 10, 20 10, 20 20, 10 20, 10 10)), ((85 85, 90 85, 90 90, 85 90, 85 85)))")); +1 # rows (not including the header row) +1 # columns +AsGML(GeomFromText("MULTIPOLYGON(((10 10, 20 10, 20 20, 10 20, 10 10)), ((85 85, 90 85, 90 90, 85 90, 85 85)))")) +10,10 20,10 20,20 10,20 10,1085,85 90,85 90,90 85,90 85,85:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/gml16.testcase b/src/spatialite/test/sql_stmt_tests/gml16.testcase new file mode 100644 index 0000000..2e2847f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml16.testcase @@ -0,0 +1,8 @@ +GML GeometryCollection (Point, Polygon): no SRID +:memory: #use in-memory database +SELECT AsGML(3, GeomFromText("GEOMETRYCOLLECTION(POINT(4 8), POLYGON((10 10, 20 10, 20 20, 10 20, 10 10)))")); +1 # rows (not including the header row) +1 # columns +AsGML(3, GeomFromText("GEOMETRYCOLLECTION(POINT(4 8), POLYGON((10 10, 20 10, 20 20, 10 20, 10 10)))")) +4 810 10 20 10 20 20 10 20 10 10:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/gml2.testcase b/src/spatialite/test/sql_stmt_tests/gml2.testcase new file mode 100644 index 0000000..7061ccd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml2.testcase @@ -0,0 +1,8 @@ +GML MultiPoint Z: no Srid +:memory: #use in-memory database +SELECT AsGML(3, GeomFromText("MULTIPOINTZ(1 2 100, 3 4 101)")); +1 # rows (not including the header row) +1 # columns +AsGML(3, GeomFromText("MULTIPOINTZ(1 2 100, 3 4 101)")) +1 2 1003 4 101:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/gml3.testcase b/src/spatialite/test/sql_stmt_tests/gml3.testcase new file mode 100644 index 0000000..def1140 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml3.testcase @@ -0,0 +1,8 @@ +GML MultiPoint: excessive precision +:memory: #use in-memory database +SELECT AsGML(3, GeomFromText("MULTIPOINT(1 2, 3 4)", 4326), 44); +1 # rows (not including the header row) +1 # columns +AsGML(3, GeomFromText("MULTIPOINT(1 2, 3 4)", 4326), 44) +1 23 4:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/gml4.testcase b/src/spatialite/test/sql_stmt_tests/gml4.testcase new file mode 100644 index 0000000..4e4b176 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml4.testcase @@ -0,0 +1,8 @@ +GML Linestring Z: no SRID +:memory: #use in-memory database +SELECT AsGML(3, GeomFromText("LINESTRINGZ(1 2 100, 3 4 101)")); +1 # rows (not including the header row) +1 # columns +AsGML(3, GeomFromText("LINESTRINGZ(1 2 100, 3 4 101)")) +1 2 100 3 4 101:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/gml5.testcase b/src/spatialite/test/sql_stmt_tests/gml5.testcase new file mode 100644 index 0000000..0730a83 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml5.testcase @@ -0,0 +1,8 @@ +GMLv2 Linestring Z: no SRID +:memory: #use in-memory database +SELECT AsGML(GeomFromText("LINESTRINGZ(1 2 100, 3 4 101)")); +1 # rows (not including the header row) +1 # columns +AsGML(GeomFromText("LINESTRINGZ(1 2 100, 3 4 101)")) +1,2,100 3,4,101:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/gml6.testcase b/src/spatialite/test/sql_stmt_tests/gml6.testcase new file mode 100644 index 0000000..76fdd35 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml6.testcase @@ -0,0 +1,8 @@ +GML MultiLinestring Z +:memory: #use in-memory database +SELECT AsGML(3, GeomFromText("MULTILINESTRINGZ((1 2 100, 3 4 101), (5 5 88, 6 6 99))", 4326)); +1 # rows (not including the header row) +1 # columns +AsGML(3, GeomFromText("MULTILINESTRINGZ((1 2 100, 3 4 101), (5 5 88, 6 6 99))", 4326)) +1 2 100 3 4 1015 5 88 6 6 99:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/gml7.testcase b/src/spatialite/test/sql_stmt_tests/gml7.testcase new file mode 100644 index 0000000..a7ac89c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml7.testcase @@ -0,0 +1,8 @@ +GMLv2 MultiLinestring Z - no SRID +:memory: #use in-memory database +SELECT AsGML(GeomFromText("MULTILINESTRINGZ((1 2 100, 3 4 101), (5 5 88, 6 6 99))")); +1 # rows (not including the header row) +1 # columns +AsGML(GeomFromText("MULTILINESTRINGZ((1 2 100, 3 4 101), (5 5 88, 6 6 99))")) +1,2,100 3,4,1015,5,88 6,6,99:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/gml8.testcase b/src/spatialite/test/sql_stmt_tests/gml8.testcase new file mode 100644 index 0000000..185d2f3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml8.testcase @@ -0,0 +1,8 @@ +GML MultiLinestring - no SRID +:memory: #use in-memory database +SELECT AsGML(3, GeomFromText("MULTILINESTRING((1 2, 3 4), (5 5, 6 6))")); +1 # rows (not including the header row) +1 # columns +AsGML(3, GeomFromText("MULTILINESTRING((1 2, 3 4), (5 5, 6 6))")) +1 2 3 45 5 6 6:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/gml9.testcase b/src/spatialite/test/sql_stmt_tests/gml9.testcase new file mode 100644 index 0000000..e3ca6fd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/gml9.testcase @@ -0,0 +1,8 @@ +GML GeometryCollection Z (Point, Linestring) - no SRID +:memory: #use in-memory database +SELECT AsGML(3, GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(3 8 100), LINESTRINGZ(1 2 100, 3 4 101))")); +1 # rows (not including the header row) +1 # columns +AsGML(3, GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(3 8 100), LINESTRINGZ(1 2 100, 3 4 101))")) +3 8 1001 2 100 3 4 101:0 # trailing ":0" required to avoid truncation !!! + diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-badblob.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-badblob.testcase new file mode 100644 index 0000000..eca5f21 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/greatcircle-badblob.testcase @@ -0,0 +1,7 @@ +great circle length - bad blob +:memory: +SELECT GreatCircleLength(zeroblob(34)); +1 # rows +1 # column +GreatCircleLength(zeroblob(34)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-poly.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-poly.testcase new file mode 100644 index 0000000..6126553 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/greatcircle-poly.testcase @@ -0,0 +1,7 @@ +great circle length polygon +:memory: +SELECT GreatCircleLength(GeomFromText("POLYGON((0 0, 1 0, 0 0, 0 0))", 4326)); +1 # rows +1 # column +GreatCircleLength(GeomFromText("POLYGON((0 0, 1 0, 0 0, 0 0))", 4326)) +222390.15:9 diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-poly2.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-poly2.testcase new file mode 100644 index 0000000..3f05465 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/greatcircle-poly2.testcase @@ -0,0 +1,7 @@ +great circle length polygon +:memory: +SELECT GreatCircleLength(GeomFromText("POLYGON((0 0, 1 0, 0 0, 0 0),(0 0, 0 0, 0 0, 0 0))", 4326)); +1 # rows +1 # column +GreatCircleLength(GeomFromText("POLYGON((0 0, 1 0, 0 0, 0 0),(0 0, 0 0, 0 0, 0 0))", 4326)) +222390.15:9 diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-poly3.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-poly3.testcase new file mode 100644 index 0000000..57898cd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/greatcircle-poly3.testcase @@ -0,0 +1,7 @@ +great circle length polygonZ +:memory: +SELECT GreatCircleLength(GeomFromText("POLYGONZ((0 0 2, 1 0 3, 0 0 2, 0 0 2))", 4326)); +1 # rows +1 # column +GreatCircleLength(GeomFromText("POLYGONZ((0 0 2, 1 0 3, 0 0 2, 0 0 2))", 4326)) +222390.15:9 diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-poly4.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-poly4.testcase new file mode 100644 index 0000000..82c5264 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/greatcircle-poly4.testcase @@ -0,0 +1,7 @@ +great circle length polygonM +:memory: +SELECT GreatCircleLength(GeomFromText("POLYGONM((0 0 2, 1 0 3, 0 0 2, 0 0 2))", 4326)); +1 # rows +1 # column +GreatCircleLength(GeomFromText("POLYGONM((0 0 2, 1 0 3, 0 0 2, 0 0 2))", 4326)) +222390.15:9 diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-poly5.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-poly5.testcase new file mode 100644 index 0000000..c187a5c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/greatcircle-poly5.testcase @@ -0,0 +1,7 @@ +great circle length polygonZM +:memory: +SELECT GreatCircleLength(GeomFromText("POLYGONZM((0 0 2 3, 1 0 3 4, 0 0 2 3, 0 0 2 3))", 4326)); +1 # rows +1 # column +GreatCircleLength(GeomFromText("POLYGONZM((0 0 2 3, 1 0 3 4, 0 0 2 3, 0 0 2 3))", 4326)) +222390.15:9 diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-poly6.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-poly6.testcase new file mode 100644 index 0000000..0cdb477 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/greatcircle-poly6.testcase @@ -0,0 +1,7 @@ +great circle length linestringzm +:memory: +SELECT GreatCircleLength(GeomFromText("LINESTRINGZM(0 0 2 3, 0 1 3 4, 0 0 2 3)", 4326)); +1 # rows +1 # column +GreatCircleLength(GeomFromText("LINESTRINGZM(0 0 2 3, 0 1 3 4, 0 0 2 3)", 4326)) +222390.15:9 diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-poly7.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-poly7.testcase new file mode 100644 index 0000000..613065d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/greatcircle-poly7.testcase @@ -0,0 +1,7 @@ +great circle length polygonZM, Airy +:memory: +SELECT GreatCircleLength(GeomFromText("POLYGONZM((0 0 2 3, 1 0 3 4, 0 0 2 3, 0 0 2 3))", 4188)); +1 # rows +1 # column +GreatCircleLength(GeomFromText("POLYGONZM((0 0 2 3, 1 0 3 4, 0 0 2 3, 0 0 2 3))", 4188)) +222371.04:9 diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-text.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-text.testcase new file mode 100644 index 0000000..471f0f8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/greatcircle-text.testcase @@ -0,0 +1,7 @@ +great circle length - text +:memory: +SELECT GreatCircleLength("Hello"); +1 # rows +1 # column +GreatCircleLength("Hello") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle.testcase new file mode 100644 index 0000000..d0790c4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/greatcircle.testcase @@ -0,0 +1,7 @@ +great circle length +:memory: +SELECT GreatCircleLength(GeomFromText("LINESTRING(0 0, 1 0)", 4326)); +1 # rows +1 # column +GreatCircleLength(GeomFromText("LINESTRING(0 0, 1 0)", 4326)) +111195.07:9 diff --git a/src/spatialite/test/sql_stmt_tests/in_m.testcase b/src/spatialite/test/sql_stmt_tests/in_m.testcase new file mode 100644 index 0000000..71b225c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/in_m.testcase @@ -0,0 +1,7 @@ +inches to metres +:memory: #use in-memory database +SELECT CvtFromIn(100); +1 # rows (not including the header row) +1 # columns +CvtFromIn(100); +2.54 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/ind_ch_m.testcase b/src/spatialite/test/sql_stmt_tests/ind_ch_m.testcase new file mode 100644 index 0000000..40cdca7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/ind_ch_m.testcase @@ -0,0 +1,7 @@ +Indian chains to metres +:memory: #use in-memory database +SELECT CvtFromIndCh(100); +1 # rows (not including the header row) +1 # columns +CvtFromIndCh(100); +2011.6695:9 diff --git a/src/spatialite/test/sql_stmt_tests/ind_ft_m.testcase b/src/spatialite/test/sql_stmt_tests/ind_ft_m.testcase new file mode 100644 index 0000000..66888f5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/ind_ft_m.testcase @@ -0,0 +1,7 @@ +ind_feet to metres +:memory: #use in-memory database +SELECT CvtFromIndFt(10); +1 # rows (not including the header row) +1 # columns +CvtFromIndFt(10); +3.047984:8 diff --git a/src/spatialite/test/sql_stmt_tests/ind_yd_m.testcase b/src/spatialite/test/sql_stmt_tests/ind_yd_m.testcase new file mode 100644 index 0000000..b7bb9c0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/ind_yd_m.testcase @@ -0,0 +1,7 @@ +Indian yards to metres +:memory: #use in-memory database +SELECT CvtFromIndYd(10); +1 # rows (not including the header row) +1 # columns +CvtFromIndYd(10); +9.14395:7 diff --git a/src/spatialite/test/sql_stmt_tests/invalidatestats1.testcase b/src/spatialite/test/sql_stmt_tests/invalidatestats1.testcase new file mode 100644 index 0000000..6772193 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/invalidatestats1.testcase @@ -0,0 +1,7 @@ +InvalidateLayerStatistics - NULL, NULL +:memory: #use in-memory database +SELECT InvalidateLayerStatistics(NULL, NULL); +1 # rows (not including the header row) +1 # columns +InvalidateLayerStatistics(NULL, NULL); +0 diff --git a/src/spatialite/test/sql_stmt_tests/invalidatestats10.testcase b/src/spatialite/test/sql_stmt_tests/invalidatestats10.testcase new file mode 100644 index 0000000..49eba89 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/invalidatestats10.testcase @@ -0,0 +1,7 @@ +InvalidateLayerStatistics - TEXT, NULL +:memory: #use in-memory database +SELECT InvalidateLayerStatistics('table', NULL); +1 # rows (not including the header row) +1 # columns +InvalidateLayerStatistics('table', NULL); +0 diff --git a/src/spatialite/test/sql_stmt_tests/invalidatestats2.testcase b/src/spatialite/test/sql_stmt_tests/invalidatestats2.testcase new file mode 100644 index 0000000..49eba89 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/invalidatestats2.testcase @@ -0,0 +1,7 @@ +InvalidateLayerStatistics - TEXT, NULL +:memory: #use in-memory database +SELECT InvalidateLayerStatistics('table', NULL); +1 # rows (not including the header row) +1 # columns +InvalidateLayerStatistics('table', NULL); +0 diff --git a/src/spatialite/test/sql_stmt_tests/invalidatestats3.testcase b/src/spatialite/test/sql_stmt_tests/invalidatestats3.testcase new file mode 100644 index 0000000..2fff4ff --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/invalidatestats3.testcase @@ -0,0 +1,7 @@ +InvalidateLayerStatistics - TEXT, TEXT +:memory: #use in-memory database +SELECT InvalidateLayerStatistics('table', 'column'); +1 # rows (not including the header row) +1 # columns +InvalidateLayerStatistics('table', 'column'); +1 diff --git a/src/spatialite/test/sql_stmt_tests/invalidatestats4.testcase b/src/spatialite/test/sql_stmt_tests/invalidatestats4.testcase new file mode 100644 index 0000000..34113f3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/invalidatestats4.testcase @@ -0,0 +1,7 @@ +InvalidateLayerStatistics - INT, TEXT +:memory: #use in-memory database +SELECT InvalidateLayerStatistics(1, 'column'); +1 # rows (not including the header row) +1 # columns +InvalidateLayerStatistics(1, 'column'); +0 diff --git a/src/spatialite/test/sql_stmt_tests/invalidatestats5.testcase b/src/spatialite/test/sql_stmt_tests/invalidatestats5.testcase new file mode 100644 index 0000000..78bc014 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/invalidatestats5.testcase @@ -0,0 +1,7 @@ +InvalidateLayerStatistics - DOUBLE, TEXT +:memory: #use in-memory database +SELECT InvalidateLayerStatistics(1.1, 'column'); +1 # rows (not including the header row) +1 # columns +InvalidateLayerStatistics(1.1, 'column'); +0 diff --git a/src/spatialite/test/sql_stmt_tests/invalidatestats6.testcase b/src/spatialite/test/sql_stmt_tests/invalidatestats6.testcase new file mode 100644 index 0000000..8654ce8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/invalidatestats6.testcase @@ -0,0 +1,7 @@ +InvalidateLayerStatistics - BLOB, TEXT +:memory: #use in-memory database +SELECT InvalidateLayerStatistics(zeroblob(4), 'column'); +1 # rows (not including the header row) +1 # columns +InvalidateLayerStatistics(zeroblob(4), 'column'); +0 diff --git a/src/spatialite/test/sql_stmt_tests/invalidatestats7.testcase b/src/spatialite/test/sql_stmt_tests/invalidatestats7.testcase new file mode 100644 index 0000000..fd346ca --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/invalidatestats7.testcase @@ -0,0 +1,7 @@ +InvalidateLayerStatistics - TEXT, INT +:memory: #use in-memory database +SELECT InvalidateLayerStatistics('table', 1); +1 # rows (not including the header row) +1 # columns +InvalidateLayerStatistics('table', 1); +0 diff --git a/src/spatialite/test/sql_stmt_tests/invalidatestats8.testcase b/src/spatialite/test/sql_stmt_tests/invalidatestats8.testcase new file mode 100644 index 0000000..f938f98 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/invalidatestats8.testcase @@ -0,0 +1,7 @@ +InvalidateLayerStatistics - TEXT, DOUBLE +:memory: #use in-memory database +SELECT InvalidateLayerStatistics('table', 1.1); +1 # rows (not including the header row) +1 # columns +InvalidateLayerStatistics('table', 1.1); +0 diff --git a/src/spatialite/test/sql_stmt_tests/invalidatestats9.testcase b/src/spatialite/test/sql_stmt_tests/invalidatestats9.testcase new file mode 100644 index 0000000..39509da --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/invalidatestats9.testcase @@ -0,0 +1,7 @@ +InvalidateLayerStatistics - TEXT, BLOB +:memory: #use in-memory database +SELECT InvalidateLayerStatistics('table', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +InvalidateLayerStatistics('table', zeroblob(4)); +0 diff --git a/src/spatialite/test/sql_stmt_tests/is3d1.testcase b/src/spatialite/test/sql_stmt_tests/is3d1.testcase new file mode 100644 index 0000000..c3293d4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/is3d1.testcase @@ -0,0 +1,8 @@ +Is3D- non-blob +:memory: #use in-memory database +SELECT ST_Is3D(3) +1 # rows (not including the header row) +1 # columns +ST_Is3D(3) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/is3d2.testcase b/src/spatialite/test/sql_stmt_tests/is3d2.testcase new file mode 100644 index 0000000..7183153 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/is3d2.testcase @@ -0,0 +1,8 @@ +Is3D- bad blob +:memory: #use in-memory database +SELECT ST_Is3D(zeroblob(48)) +1 # rows (not including the header row) +1 # columns +ST_Is3D(zeroblob(48)) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/is3d3.testcase b/src/spatialite/test/sql_stmt_tests/is3d3.testcase new file mode 100644 index 0000000..639ebcd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/is3d3.testcase @@ -0,0 +1,8 @@ +Is3D- Point XY +:memory: #use in-memory database +SELECT ST_Is3D(GeomFromText('POINT(1 2)')); +1 # rows (not including the header row) +1 # columns +ST_Is3D(GeomFromText('POINT(1 2)')) +0 + diff --git a/src/spatialite/test/sql_stmt_tests/is3d4.testcase b/src/spatialite/test/sql_stmt_tests/is3d4.testcase new file mode 100644 index 0000000..153fe40 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/is3d4.testcase @@ -0,0 +1,8 @@ +Is3D- Point XYZ +:memory: #use in-memory database +SELECT ST_Is3D(GeomFromText('POINTZ(1 2 100)')); +1 # rows (not including the header row) +1 # columns +ST_Is3D(GeomFromText('POINTZ(1 2 100)')) +1 + diff --git a/src/spatialite/test/sql_stmt_tests/is3d5.testcase b/src/spatialite/test/sql_stmt_tests/is3d5.testcase new file mode 100644 index 0000000..dd47fa5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/is3d5.testcase @@ -0,0 +1,8 @@ +Is3D- Point XYM +:memory: #use in-memory database +SELECT ST_Is3D(GeomFromText('POINTM(1 2 10)')); +1 # rows (not including the header row) +1 # columns +ST_Is3D(GeomFromText('POINTM(1 2 10)')) +0 + diff --git a/src/spatialite/test/sql_stmt_tests/is3d6.testcase b/src/spatialite/test/sql_stmt_tests/is3d6.testcase new file mode 100644 index 0000000..0533810 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/is3d6.testcase @@ -0,0 +1,8 @@ +Is3D- Point XYZM +:memory: #use in-memory database +SELECT ST_Is3D(GeomFromText('POINTZM(1 2 100 10)')); +1 # rows (not including the header row) +1 # columns +ST_Is3D(GeomFromText('POINTZM(1 2 100 10)')) +1 + diff --git a/src/spatialite/test/sql_stmt_tests/isXblob5.testcase b/src/spatialite/test/sql_stmt_tests/isXblob5.testcase new file mode 100644 index 0000000..9669a1f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isXblob5.testcase @@ -0,0 +1,27 @@ +isXblob - geom +:memory: #use in-memory database +SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT GeomFromText("POINT(1 3)") as blob) dummy +1 # rows (not including the header row) +11 # columns +Hex(blob) +IsPngBlob(blob) +IsGifBlob(blob) +IsGeometryBlob(blob) +IsZipBlob(blob) +IsPdfBlob(blob) +IsTiffBlob(blob) +IsJpegBlob(blob) +IsExifBlob(blob) +IsExifGpsBlob(blob) +IsWebpBlob(blob) +000100000000000000000000F03F0000000000000840000000000000F03F00000000000008407C01000000000000000000F03F0000000000000840FE +0 +0 +1 +0 +0 +0 +0 +0 +0 +0 diff --git a/src/spatialite/test/sql_stmt_tests/isXblob6.testcase b/src/spatialite/test/sql_stmt_tests/isXblob6.testcase new file mode 100644 index 0000000..c730fd7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isXblob6.testcase @@ -0,0 +1,27 @@ +isXblob - zeroblob, 1 byte +:memory: #use in-memory database +SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT zeroblob(1) as blob) dummy +1 # rows (not including the header row) +11 # columns +Hex(blob) +IsPngBlob(blob) +IsGifBlob(blob) +IsGeometryBlob(blob) +IsZipBlob(blob) +IsPdfBlob(blob) +IsTiffBlob(blob) +IsJpegBlob(blob) +IsExifBlob(blob) +IsExifGpsBlob(blob) +IsWebpBlob(blob) +00 +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 diff --git a/src/spatialite/test/sql_stmt_tests/isXblob7.testcase b/src/spatialite/test/sql_stmt_tests/isXblob7.testcase new file mode 100644 index 0000000..b4490e0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isXblob7.testcase @@ -0,0 +1,25 @@ +isXblob - zeroblob, 0 bytes +:memory: #use in-memory database +SELECT IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT zeroblob(0) as blob) dummy +1 # rows (not including the header row) +10 # columns +IsPngBlob(blob) +IsGifBlob(blob) +IsGeometryBlob(blob) +IsZipBlob(blob) +IsPdfBlob(blob) +IsTiffBlob(blob) +IsJpegBlob(blob) +IsExifBlob(blob) +IsExifGpsBlob(blob) +IsWebpBlob(blob) +0 +0 +0 +0 +0 +0 +0 +0 +0 +0 diff --git a/src/spatialite/test/sql_stmt_tests/isempty.testcase b/src/spatialite/test/sql_stmt_tests/isempty.testcase new file mode 100644 index 0000000..f79494d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isempty.testcase @@ -0,0 +1,7 @@ +isempty +:memory: #use in-memory database +SELECT IsEmpty(GeomFromText("Point(1 2)", 4326)) +1 # rows (not including the header row) +1 # columns +IsEmpty(GeomFromText("Point(1 2)", 4326)) +0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/isempty2.testcase b/src/spatialite/test/sql_stmt_tests/isempty2.testcase new file mode 100644 index 0000000..7f2b411 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isempty2.testcase @@ -0,0 +1,7 @@ +isempty - null +:memory: #use in-memory database +SELECT IsEmpty(null) +1 # rows (not including the header row) +1 # columns +IsEmpty(null) +-1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/isempty3.testcase b/src/spatialite/test/sql_stmt_tests/isempty3.testcase new file mode 100644 index 0000000..7ac7314 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isempty3.testcase @@ -0,0 +1,7 @@ +isempty - zeroblob +:memory: #use in-memory database +SELECT IsEmpty(zeroblob(200)) +1 # rows (not including the header row) +1 # columns +IsEmpty(zeroblob(200)) +-1 diff --git a/src/spatialite/test/sql_stmt_tests/isempty4.testcase b/src/spatialite/test/sql_stmt_tests/isempty4.testcase new file mode 100644 index 0000000..21cab8d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isempty4.testcase @@ -0,0 +1,7 @@ +isempty - text +:memory: #use in-memory database +SELECT IsEmpty("hello") +1 # rows (not including the header row) +1 # columns +IsEmpty("hello") +-1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/ismeasured1.testcase b/src/spatialite/test/sql_stmt_tests/ismeasured1.testcase new file mode 100644 index 0000000..3a3eca4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/ismeasured1.testcase @@ -0,0 +1,8 @@ +IsMeasured- non-blob +:memory: #use in-memory database +SELECT ST_IsMeasured(3) +1 # rows (not including the header row) +1 # columns +ST_IsMeasured(3) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/ismeasured2.testcase b/src/spatialite/test/sql_stmt_tests/ismeasured2.testcase new file mode 100644 index 0000000..23a19bb --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/ismeasured2.testcase @@ -0,0 +1,8 @@ +IsMeasured- bad blob +:memory: #use in-memory database +SELECT ST_IsMeasured(zeroblob(48)) +1 # rows (not including the header row) +1 # columns +ST_IsMeasured(zeroblob(48)) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/ismeasured3.testcase b/src/spatialite/test/sql_stmt_tests/ismeasured3.testcase new file mode 100644 index 0000000..1ac9cc1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/ismeasured3.testcase @@ -0,0 +1,8 @@ +IsMeasured- Point XY +:memory: #use in-memory database +SELECT ST_IsMeasured(GeomFromText('POINT(1 2)')); +1 # rows (not including the header row) +1 # columns +ST_IsMeasured(GeomFromText('POINT(1 2)')) +0 + diff --git a/src/spatialite/test/sql_stmt_tests/ismeasured4.testcase b/src/spatialite/test/sql_stmt_tests/ismeasured4.testcase new file mode 100644 index 0000000..d63a45b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/ismeasured4.testcase @@ -0,0 +1,8 @@ +IsMeasured- Point XYZ +:memory: #use in-memory database +SELECT ST_IsMeasured(GeomFromText('POINTZ(1 2 100)')); +1 # rows (not including the header row) +1 # columns +ST_IsMeasured(GeomFromText('POINTZ(1 2 100)')) +0 + diff --git a/src/spatialite/test/sql_stmt_tests/ismeasured5.testcase b/src/spatialite/test/sql_stmt_tests/ismeasured5.testcase new file mode 100644 index 0000000..021e200 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/ismeasured5.testcase @@ -0,0 +1,8 @@ +IsMeasured- Point XYM +:memory: #use in-memory database +SELECT ST_IsMeasured(GeomFromText('POINTM(1 2 10)')); +1 # rows (not including the header row) +1 # columns +ST_IsMeasured(GeomFromText('POINTM(1 2 10)')) +1 + diff --git a/src/spatialite/test/sql_stmt_tests/ismeasured6.testcase b/src/spatialite/test/sql_stmt_tests/ismeasured6.testcase new file mode 100644 index 0000000..698586d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/ismeasured6.testcase @@ -0,0 +1,8 @@ +IsMeasured- Point XYZM +:memory: #use in-memory database +SELECT ST_IsMeasured(GeomFromText('POINTZM(1 2 100 10)')); +1 # rows (not including the header row) +1 # columns +ST_IsMeasured(GeomFromText('POINTZM(1 2 100 10)')) +1 + diff --git a/src/spatialite/test/sql_stmt_tests/ispopulatedcoverage1.testcase b/src/spatialite/test/sql_stmt_tests/ispopulatedcoverage1.testcase new file mode 100644 index 0000000..a3673ff --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/ispopulatedcoverage1.testcase @@ -0,0 +1,8 @@ +IsPopulatedCoverage - standard not existing coverage +NEW:memory: #use in-memory database +SELECT IsPopulatedCoverage('alpha'); +1 # rows (not including the header row) +1 # columns +IsPopulatedCoverage('alpha') +0 + diff --git a/src/spatialite/test/sql_stmt_tests/ispopulatedcoverage2.testcase b/src/spatialite/test/sql_stmt_tests/ispopulatedcoverage2.testcase new file mode 100644 index 0000000..f17a47a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/ispopulatedcoverage2.testcase @@ -0,0 +1,9 @@ +IsPopulatedCoverage - NULL coverage-name +NEW:memory: #use in-memory database +SELECT IsPopulatedCoverage(NULL); +1 # rows (not including the header row) +1 # columns +IsPopulatedCoverage(NULL) +-1 + + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidnodata1.testcase b/src/spatialite/test/sql_stmt_tests/isvalidnodata1.testcase new file mode 100644 index 0000000..496f495 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidnodata1.testcase @@ -0,0 +1,8 @@ +IsValidNoDataPixel - standard +NEW:memory: #use in-memory database +SELECT IsValidNoDataPixel(zeroblob(4), 'UINT8', 1); +1 # rows (not including the header row) +1 # columns +IsValidNoDataPixel(zeroblob(4), 'UINT8', 1) +0 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidnodata2.testcase b/src/spatialite/test/sql_stmt_tests/isvalidnodata2.testcase new file mode 100644 index 0000000..7b6cd15 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidnodata2.testcase @@ -0,0 +1,8 @@ +IsValidNoDataPixel - NULL pixel +NEW:memory: #use in-memory database +SELECT IsValidNoDataPixel(NULL, 'UINT8', 1); +1 # rows (not including the header row) +1 # columns +IsValidNoDataPixel(NULL, 'UINT8', 1) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidnodata3.testcase b/src/spatialite/test/sql_stmt_tests/isvalidnodata3.testcase new file mode 100644 index 0000000..7104133 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidnodata3.testcase @@ -0,0 +1,8 @@ +IsValidNoDataPixel - NULL sample-type +NEW:memory: #use in-memory database +SELECT IsValidNoDataPixel(zeroblob(4), NULL, 1); +1 # rows (not including the header row) +1 # columns +IsValidNoDataPixel(zeroblob(4), NULL, 1) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidnodata4.testcase b/src/spatialite/test/sql_stmt_tests/isvalidnodata4.testcase new file mode 100644 index 0000000..1686639 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidnodata4.testcase @@ -0,0 +1,8 @@ +IsValidNoDataPixel - NULL #bands +NEW:memory: #use in-memory database +SELECT IsValidNoDataPixel(zeroblob(4), 'UINT8', NULL); +1 # rows (not including the header row) +1 # columns +IsValidNoDataPixel(zeroblob(4), 'UINT8', NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidpalette1.testcase b/src/spatialite/test/sql_stmt_tests/isvalidpalette1.testcase new file mode 100644 index 0000000..0d6cfdc --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidpalette1.testcase @@ -0,0 +1,8 @@ +IsValidRasterPalette - standard +NEW:memory: #use in-memory database +SELECT IsValidRasterPalette(zeroblob(4), 'UINT8'); +1 # rows (not including the header row) +1 # columns +IsValidRasterPalette(zeroblob(4), 'UINT8') +0 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidpalette2.testcase b/src/spatialite/test/sql_stmt_tests/isvalidpalette2.testcase new file mode 100644 index 0000000..3948a0b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidpalette2.testcase @@ -0,0 +1,8 @@ +IsValidRasterPalette - NULL palette +NEW:memory: #use in-memory database +SELECT IsValidRasterPalette(NULL, 'UINT8'); +1 # rows (not including the header row) +1 # columns +IsValidRasterPalette(NULL, 'UINT8') +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidpalette3.testcase b/src/spatialite/test/sql_stmt_tests/isvalidpalette3.testcase new file mode 100644 index 0000000..b2d8bb8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidpalette3.testcase @@ -0,0 +1,8 @@ +IsValidRasterPalette - NULL sample-type +NEW:memory: #use in-memory database +SELECT IsValidRasterPalette(zeroblob(4), NULL); +1 # rows (not including the header row) +1 # columns +IsValidRasterPalette(zeroblob(4), NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidrasterstats1.testcase b/src/spatialite/test/sql_stmt_tests/isvalidrasterstats1.testcase new file mode 100644 index 0000000..e40b1b6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidrasterstats1.testcase @@ -0,0 +1,8 @@ +IsValidRasterStatistics - standard: 2 args +NEW:memory: #use in-memory database +SELECT IsValidRasterStatistics('alpha', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +IsValidRasterStatistics('alpha', zeroblob(4)) +0 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidrasterstats2.testcase b/src/spatialite/test/sql_stmt_tests/isvalidrasterstats2.testcase new file mode 100644 index 0000000..581a47b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidrasterstats2.testcase @@ -0,0 +1,8 @@ +IsValidRasterStatistics - NULL coverage-name: 2 args +NEW:memory: #use in-memory database +SELECT IsValidRasterStatistics(NULL, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +IsValidRasterStatistics(NULL, zeroblob(4)) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidrasterstats3.testcase b/src/spatialite/test/sql_stmt_tests/isvalidrasterstats3.testcase new file mode 100644 index 0000000..d23b1fb --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidrasterstats3.testcase @@ -0,0 +1,8 @@ +IsValidRasterStatistics - NULL statistics: 2 args +NEW:memory: #use in-memory database +SELECT IsValidRasterStatistics('alpha', NULL); +1 # rows (not including the header row) +1 # columns +IsValidRasterStatistics('alpha', NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidrasterstats4.testcase b/src/spatialite/test/sql_stmt_tests/isvalidrasterstats4.testcase new file mode 100644 index 0000000..d33a6a2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidrasterstats4.testcase @@ -0,0 +1,8 @@ +IsValidRasterStatistics - standard: 3 args +NEW:memory: #use in-memory database +SELECT IsValidRasterStatistics(zeroblob(4), 'UINT8', 1); +1 # rows (not including the header row) +1 # columns +IsValidRasterStatistics(zeroblob(4), 'UINT8', 1) +0 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidrasterstats5.testcase b/src/spatialite/test/sql_stmt_tests/isvalidrasterstats5.testcase new file mode 100644 index 0000000..6db71af --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidrasterstats5.testcase @@ -0,0 +1,8 @@ +IsValidRasterStatistics - NULL statistics: 3 args +NEW:memory: #use in-memory database +SELECT IsValidRasterStatistics(NULL, 'UINT8', 1); +1 # rows (not including the header row) +1 # columns +IsValidRasterStatistics(NULL, 'UINT8', 1) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidrasterstats6.testcase b/src/spatialite/test/sql_stmt_tests/isvalidrasterstats6.testcase new file mode 100644 index 0000000..8742fa6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidrasterstats6.testcase @@ -0,0 +1,8 @@ +IsValidRasterStatistics - NULL sample-type: 3 args +NEW:memory: #use in-memory database +SELECT IsValidRasterStatistics(zeroblob(4), NULL, 1); +1 # rows (not including the header row) +1 # columns +IsValidRasterStatistics(zeroblob(4), NULL, 1) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidrasterstats7.testcase b/src/spatialite/test/sql_stmt_tests/isvalidrasterstats7.testcase new file mode 100644 index 0000000..c2f9009 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidrasterstats7.testcase @@ -0,0 +1,8 @@ +IsValidRasterStatistics - NULL #bands: 3 args +NEW:memory: #use in-memory database +SELECT IsValidRasterStatistics(zeroblob(4), 'UINT8', NULL); +1 # rows (not including the header row) +1 # columns +IsValidRasterStatistics(zeroblob(4), 'UINT8', NULL) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidrastertile1.testcase b/src/spatialite/test/sql_stmt_tests/isvalidrastertile1.testcase new file mode 100644 index 0000000..9d18bfc --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidrastertile1.testcase @@ -0,0 +1,8 @@ +IsValidRasterTile - standard +NEW:memory: #use in-memory database +SELECT IsValidRasterTile('alpha', 0, zeroblob(4), zeroblob(4)); +1 # rows (not including the header row) +1 # columns +IsValidRasterTile('alpha', 0, zeroblob(4), zeroblob(4)) +0 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidrastertile2.testcase b/src/spatialite/test/sql_stmt_tests/isvalidrastertile2.testcase new file mode 100644 index 0000000..ca97aeb --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidrastertile2.testcase @@ -0,0 +1,8 @@ +IsValidRasterTile - NULL coverage-name +NEW:memory: #use in-memory database +SELECT IsValidRasterTile(NULL, 0, zeroblob(4), zeroblob(4)); +1 # rows (not including the header row) +1 # columns +IsValidRasterTile(NULL, 0, zeroblob(4), zeroblob(4)) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidrastertile3.testcase b/src/spatialite/test/sql_stmt_tests/isvalidrastertile3.testcase new file mode 100644 index 0000000..68d8bd9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidrastertile3.testcase @@ -0,0 +1,8 @@ +IsValidRasterTile - NULL pyramid-level +NEW:memory: #use in-memory database +SELECT IsValidRasterTile('alpha', NULL, zeroblob(4), zeroblob(4)); +1 # rows (not including the header row) +1 # columns +IsValidRasterTile('alpha', NULL, zeroblob(4), zeroblob(4)) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidrastertile4.testcase b/src/spatialite/test/sql_stmt_tests/isvalidrastertile4.testcase new file mode 100644 index 0000000..099c782 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidrastertile4.testcase @@ -0,0 +1,8 @@ +IsValidRasterTile - NULL odd-tile +NEW:memory: #use in-memory database +SELECT IsValidRasterTile('alpha', 0, NULL, zeroblob(4)); +1 # rows (not including the header row) +1 # columns +IsValidRasterTile('alpha', 0, NULL, zeroblob(4)) +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidrastertile5.testcase b/src/spatialite/test/sql_stmt_tests/isvalidrastertile5.testcase new file mode 100644 index 0000000..416a28e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidrastertile5.testcase @@ -0,0 +1,8 @@ +IsValidRasterTile - TEXT even-tile +NEW:memory: #use in-memory database +SELECT IsValidRasterTile('alpha', 0, zeroblob(4), 'beta'); +1 # rows (not including the header row) +1 # columns +IsValidRasterTile('alpha', 0, zeroblob(4), 'beta') +-1 + diff --git a/src/spatialite/test/sql_stmt_tests/isvalidrastertile6.testcase b/src/spatialite/test/sql_stmt_tests/isvalidrastertile6.testcase new file mode 100644 index 0000000..0ac9119 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/isvalidrastertile6.testcase @@ -0,0 +1,8 @@ +IsValidRasterTile - standard NULL even-tile +NEW:memory: #use in-memory database +SELECT IsValidRasterTile('alpha', 0, zeroblob(4), NULL); +1 # rows (not including the header row) +1 # columns +IsValidRasterTile('alpha', 0, zeroblob(4), NULL) +0 + diff --git a/src/spatialite/test/sql_stmt_tests/k3b-icon.png b/src/spatialite/test/sql_stmt_tests/k3b-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..9e733f5ad0cfcc15234ae8b9471da4a99fc0e43c GIT binary patch literal 982 zcmV;{11bE8P)n4F}dr>&TrrJ|>;USVVa000C81ONa40|Nt_pQoOpshXdso};N99v&JS926B6 zDl083EG{7;BbS`1tD2&;xV){hw!FZ@$ji=9OjBA|Tyt}Dc6M{?=I8M6@tmizv9p}U z$ji*n(9+e{($&_esHm*0thl(ih=_@YhlsMYzPYcs*xKH~#L3Lg)AaQ9>DkSRii^F& z$&QYWm6es}=jRw09vd4WBO)m$B`z{CIXO5&K0QQ1KubzVP)ti#OiWNuPgYS;RasbG zSy*3LSYTROUtL^eUS48fU}$o3b$fh&eSCp{fQE*KiHeGhkB*R#kCc;>l$Dg0mX@2B zmzbKGo1dSdqoSv(s;#uNwYIjmxVXHzxxKl$zQV`Y!^6eK&fCYx(8tKp%goHt*yPgG z#njZ_)Ys$H*51~_z1P>?*Vx_J+1c95)7sa++S=mV+v3~Y+A39>+tOC@$K#L@9y&P z@$~ZY^z!rb^Yirc^Y!!d_Vo1j^z`@j_4fAm_V)Jp_V@Sq_xJbr`1kku`1tzy`TF_! z`}_O*`}_R+`~Cd;{QUg<{QUj>{r>*`{r>*`{{H{||NsC0|3a}(`~Uy|N_0|AQveGK z3k?ks5fKp*6CougC@nBQKub$ZO;}rAU}bDGAUR_V@Vs`1$+&{{H^PvatIA009a~L_t(|+BMIGQbGX~MbTq-cQ8UHTa z01SUxvfXB?@>cq|k|6L}1kD_in%i6RXF=!YI3 zHa=!%=VVc|G5%?KCDhT^k8D25MDeR?$zr+K+86=&12PC!UXI$YqW}N^07*qoM6N<$ Ef|tWLv;Y7A literal 0 HcmV?d00001 diff --git a/src/spatialite/test/sql_stmt_tests/km_m.testcase b/src/spatialite/test/sql_stmt_tests/km_m.testcase new file mode 100644 index 0000000..5f55cb4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/km_m.testcase @@ -0,0 +1,7 @@ +kilometres to metres +:memory: #use in-memory database +SELECT CvtFromKm(6.76); +1 # rows (not including the header row) +1 # columns +CvtFromKm(6.76); +6760.0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/ktorrent_grad1.jpg b/src/spatialite/test/sql_stmt_tests/ktorrent_grad1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..762baa09fe5b5877849162676d127a32b55fd273 GIT binary patch literal 367 zcmex=O8CaQFSXh`@fdnfnD;qlx2Rjh(b8~a@2=WUF3GxdH z3X92z3yVmJ3JOXnN=V7d%FD|Oiz}%p$*IW5$;*KZVFYSrXJhB%;NX)J5fqUl8T>!M zAjrWW!obMPsKme|$jB_n`2Prl7}#$RPe4gFcA&V703!n<3p26=3nQ~gu&7ufP*$9g zfte9mj)9p4tW8W16jUgHS@{1g1|FbtCP8LF2789~*YmpblGJ7^g=?D0=A1EpnzMp& Ie*OQO0LflD=l}o! literal 0 HcmV?d00001 diff --git a/src/spatialite/test/sql_stmt_tests/ktorrent_sidebar.gif b/src/spatialite/test/sql_stmt_tests/ktorrent_sidebar.gif new file mode 100644 index 0000000000000000000000000000000000000000..f5da995e9ca9e46f4ea7001276788a0504bc0cd5 GIT binary patch literal 2077 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 literal 0 HcmV?d00001 diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry1.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry1.testcase new file mode 100644 index 0000000..2adcf84 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry1.testcase @@ -0,0 +1,9 @@ +Sanitize Geometry - Multilinestring +:memory: #use in-memory database +SELECT AsText(SanitizeGeometry(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))'))); +1 # rows (not including the header row) +1 # columns +AsText(SanitizeGeometry(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))'))) +MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0)) + + diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry10.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry10.testcase new file mode 100644 index 0000000..3576cb7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry10.testcase @@ -0,0 +1,9 @@ +Sanitize Geometry - POLYGON Z +:memory: #use in-memory database +SELECT AsEWkt(SanitizeGeometry(GeomFromText("POLYGON Z((-75 42 2, -70 39 2, -70 42 3, -70 42 4, -75 42 2))", 4326))) +1 # rows (not including the header row) +1 # columns +AsEWkt(SanitizeGeometry(GeomFromText("POLYGON Z((-75 42 2, -70 39 2, -70 42 3, -70 42 4, -75 42 2))", 4326))) +SRID=4326;POLYGON((-75 42 2,-70 39 2,-70 42 3,-70 42 4,-75 42 2)) + + diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry11.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry11.testcase new file mode 100644 index 0000000..74556f6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry11.testcase @@ -0,0 +1,9 @@ +Sanitize Geometry - POLYGON M +:memory: #use in-memory database +SELECT AsEWkt(SanitizeGeometry(GeomFromText("POLYGON M((-75 42 2, -70 39 2, -70 42 3, -70 42 4, -75 42 2))", 4326))) +1 # rows (not including the header row) +1 # columns +AsEWkt(SanitizeGeometry(GeomFromText("POLYGON M((-75 42 2, -70 39 2, -70 42 3, -70 42 4, -75 42 2))", 4326))) +SRID=4326;POLYGONM((-75 42 2,-70 39 2,-70 42 3,-75 42 2)) + + diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry12.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry12.testcase new file mode 100644 index 0000000..5fe0e9e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry12.testcase @@ -0,0 +1,10 @@ +Sanitize Geometry - POLYGON M - point combinations +:memory: #use in-memory database +SELECT AsEWkt(SanitizeGeometry(GeomFromText("POLYGON M((-70 42 2, -75 42 2, -70 39 2, -70 42 3, -70 42 3, -70 42 4, -75 42 2, -70 42 2))", 4326))) +1 # rows (not including the header row) +1 # columns +AsEWkt(SanitizeGeometry(GeomFromText("POLYGON M((-70 42 2, -75 42 2, -70 39 2, -70 42 3, -70 42 3, -70 42 4, -75 42 2, -70 42 2))", 4326))) +SRID=4326;POLYGONM((-70 42 2,-75 42 2,-70 39 2,-70 42 3,-75 42 2,-70 42 2)) + + + diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry13.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry13.testcase new file mode 100644 index 0000000..e55f99b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry13.testcase @@ -0,0 +1,9 @@ +Sanitize Geometry - POLYGON with interior +:memory: #use in-memory database +SELECT AsText(SanitizeGeometry(GeomFromText("POLYGON((-10 -10, -10 -10, 10 -10, 10 10, -10 10, -10 -10, -10 -10),(-6 -6, -6 -5, -5 -5, -5 -5, -5 -5, -5 -6, -6 -6),(6 6, 5 6, 5 6, 5 5, 6 5, 6 6))"))) +1 # rows (not including the header row) +1 # columns +AsText(SanitizeGeometry(GeomFromText("POLYGON((-10 -10, -10 -10, 10 -10, 10 10, -10 10, -10 -10, -10 -10),(-6 -6, -6 -5, -5 -5, -5 -5, -5 -5, -5 -6, -6 -6),(6 6, 5 6, 5 6, 5 5, 6 5, 6 6))"))) +POLYGON((-10 -10, 10 -10, 10 10, -10 10, -10 -10), (-6 -6, -6 -5, -5 -5, -5 -6, -6 -6), (6 6, 5 6, 5 5, 6 5, 6 6)) + + diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry14.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry14.testcase new file mode 100644 index 0000000..4ec300e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry14.testcase @@ -0,0 +1,9 @@ +Sanitize Geometry - POLYGONZ with interior +:memory: #use in-memory database +SELECT AsText(SanitizeGeometry(GeomFromText("POLYGONZ((-10 -10 1, -10 -10 1, 10 -10 2, 10 10 3, -10 10 4, -10 -10 1, -10 -10 1),(-6 -6 2, -6 -5 3, -5 -5 3, -5 -5 4, -5 -5 4, -5 -6 9, -6 -6 2),(6 6 0, 5 6 0, 5 6 0, 5 5 0, 6 5 0, 6 6 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(SanitizeGeometry(GeomFromText("POLYGONZ((-10 -10 1, -10 -10 1, 10 -10 2, 10 10 3, -10 10 4, -10 -10 1, -10 -10 1),(-6 -6 2, -6 -5 3, -5 -5 3, -5 -5 4, -5 -5 4, -5 -6 9, -6 -6 2),(6 6 0, 5 6 0, 5 6 0, 5 5 0, 6 5 0, 6 6 0))"))) +POLYGON Z((-10 -10 1, 10 -10 2, 10 10 3, -10 10 4, -10 -10 1), (-6 -6 2, -6 -5 3, -5 -5 3, -5 -5 4, -5 -6 9, -6 -6 2), (6 6 0, 5 6 0, 5 5 0, 6 5 0, 6 6 0)) + + diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry15.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry15.testcase new file mode 100644 index 0000000..20523b1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry15.testcase @@ -0,0 +1,9 @@ +Sanitize Geometry - POLYGONM with interior +:memory: #use in-memory database +SELECT AsText(SanitizeGeometry(GeomFromText("POLYGONM((-10 -10 1, -10 -10 1, 10 -10 2, 10 10 3, -10 10 4, -10 -10 1, -10 -10 1),(-6 -6 2, -6 -5 3, -5 -5 3, -5 -5 4, -5 -5 4, -5 -6 9, -6 -6 2),(6 6 0, 5 6 0, 5 6 0, 5 5 0, 6 5 0, 6 6 0))"))) +1 # rows (not including the header row) +1 # columns +AsText(SanitizeGeometry(GeomFromText("POLYGONM((-10 -10 1, -10 -10 1, 10 -10 2, 10 10 3, -10 10 4, -10 -10 1, -10 -10 1),(-6 -6 2, -6 -5 3, -5 -5 3, -5 -5 4, -5 -5 4, -5 -6 9, -6 -6 2),(6 6 0, 5 6 0, 5 6 0, 5 5 0, 6 5 0, 6 6 0))"))) +POLYGON M((-10 -10 1, 10 -10 2, 10 10 3, -10 10 4, -10 -10 1), (-6 -6 2, -6 -5 3, -5 -5 3, -5 -6 9, -6 -6 2), (6 6 0, 5 6 0, 5 5 0, 6 5 0, 6 6 0)) + + diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry16.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry16.testcase new file mode 100644 index 0000000..b566b59 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry16.testcase @@ -0,0 +1,9 @@ +Sanitize Geometry - POLYGON ZM with interior +:memory: #use in-memory database +SELECT AsText(SanitizeGeometry(GeomFromText("POLYGONZM((-10 -10 1 0, -10 -10 1 0, 10 -10 2 2, 10 10 3 2, -10 10 4 2, -10 -10 1 2, -10 -10 1 0),(-6 -6 2 1, -6 -5 3 1, -5 -5 3 1, -5 -5 4 1, -5 -5 4 1, -5 -6 9 1, -6 -6 2 1),(6 6 0 1, 5 6 0 2, 5 6 0 1, 5 5 0 2, 6 5 0 1, 6 6 0 1))"))) +1 # rows (not including the header row) +1 # columns +AsText(SanitizeGeometry(GeomFromText("POLYGONZM((-10 -10 1 0, -10 -10 1 0, 10 -10 2 2, 10 10 3 2, -10 10 4 2, -10 -10 1 2, -10 -10 1 0),(-6 -6 2 1, -6 -5 3 1, -5 -5 3 1, -5 -5 4 1, -5 -5 4 1, -5 -6 9 1, -6 -6 2 1),(6 6 0 1, 5 6 0 2, 5 6 0 1, 5 5 0 2, 6 5 0 1, 6 6 0 1))"))) +POLYGON ZM((-10 -10 1 0, 10 -10 2 2, 10 10 3 2, -10 10 4 2, -10 -10 1 0), (-6 -6 2 1, -6 -5 3 1, -5 -5 3 1, -5 -5 4 1, -5 -6 9 1, -6 -6 2 1), (6 6 0 1, 5 6 0 2, 5 5 0 2, 6 5 0 1, 6 6 0 1)) + + diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry2.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry2.testcase new file mode 100644 index 0000000..0a1aa0c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry2.testcase @@ -0,0 +1,10 @@ +Sanitize Geometry - zeroblob +:memory: #use in-memory database +SELECT SanitizeGeometry(zeroblob(100)); +1 # rows (not including the header row) +1 # columns +SanitizeGeometry(zeroblob(100)) +(NULL) + + + diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry3.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry3.testcase new file mode 100644 index 0000000..00faf77 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry3.testcase @@ -0,0 +1,10 @@ +Sanitize Geometry - non-blob +:memory: #use in-memory database +SELECT SanitizeGeometry("hell0o"); +1 # rows (not including the header row) +1 # columns +SanitizeGeometry("hell0o") +(NULL) + + + diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry4.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry4.testcase new file mode 100644 index 0000000..5713497 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry4.testcase @@ -0,0 +1,9 @@ +Sanitize Geometry - MultilinestringZ dupe points +:memory: #use in-memory database +SELECT AsText(SanitizeGeometry(GeomFromText('MULTILINESTRINGZ((0 0 0, 1 0 9, 1 1 8, 0 1 8, 1 1 8, 1 1 8, 0 0 0))'))); +1 # rows (not including the header row) +1 # columns +AsText(SanitizeGeometry(GeomFromText('MULTILINESTRINGZ((0 0 0, 1 0 9, 1 1 8, 0 1 8, 1 1 8, 1 1 8, 0 0 0))'))) +MULTILINESTRING Z((0 0 0, 1 0 9, 1 1 8, 0 1 8, 1 1 8, 0 0 0)) + + diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry5.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry5.testcase new file mode 100644 index 0000000..631a499 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry5.testcase @@ -0,0 +1,9 @@ +Sanitize Geometry - MultilinestringM dupe points +:memory: #use in-memory database +SELECT AsText(SanitizeGeometry(GeomFromText('MULTILINESTRINGM((0 0 0, 1 0 9, 1 1 8, 0 1 8, 1 1 8, 1 1 8, 0 0 0))'))); +1 # rows (not including the header row) +1 # columns +AsText(SanitizeGeometry(GeomFromText('MULTILINESTRINGM((0 0 0, 1 0 9, 1 1 8, 0 1 8, 1 1 8, 1 1 8, 0 0 0))'))) +MULTILINESTRING M((0 0 0, 1 0 9, 1 1 8, 0 1 8, 1 1 8, 0 0 0)) + + diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry6.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry6.testcase new file mode 100644 index 0000000..b0f494c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry6.testcase @@ -0,0 +1,9 @@ +Sanitize Geometry - POLYGON +:memory: #use in-memory database +SELECT AsEWkt(SanitizeGeometry(GeomFromText("POLYGON((-75 42, -70 39, -70 42, -70 42, -75 42))", 4326))) +1 # rows (not including the header row) +1 # columns +AsEWkt(SanitizeGeometry(GeomFromText("POLYGON((-75 42, -70 39, -70 42, -70 42, -75 42))", 4326))) +SRID=4326;POLYGON((-75 42,-70 39,-70 42,-75 42)) + + diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry7.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry7.testcase new file mode 100644 index 0000000..f233e3d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry7.testcase @@ -0,0 +1,9 @@ +Sanitize Geometry - POLYGON ZM +:memory: #use in-memory database +SELECT AsEWkt(SanitizeGeometry(GeomFromText("POLYGON ZM((-75 42 2 0, -70 39 2 0, -70 42 3 0, -70 42 4 0, -75 42 2 0))", 4326))) +1 # rows (not including the header row) +1 # columns +AsEWkt(SanitizeGeometry(GeomFromText("POLYGON ZM((-75 42 2 0, -70 39 2 0, -70 42 3 0, -70 42 4 0, -75 42 2 0))", 4326))) +SRID=4326;POLYGON((-75 42 2 0,-70 39 2 0,-70 42 3 0,-70 42 4 0,-75 42 2 0)) + + diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry8.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry8.testcase new file mode 100644 index 0000000..1c671f4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry8.testcase @@ -0,0 +1,9 @@ +Sanitize Geometry - MULTIPOINT ZM +:memory: #use in-memory database +SELECT AsEWkt(SanitizeGeometry(GeomFromText("MULTIPOINTZM(-75 42 2 0, -70 39 2 0, -70 42 3 0, -70 42 4 0, -75 42 2 0)", 4326))) +1 # rows (not including the header row) +1 # columns +AsEWkt(SanitizeGeometry(GeomFromText("MULTIPOINTZM(-75 42 2 0, -70 39 2 0, -70 42 3 0, -70 42 4 0, -75 42 2 0)", 4326))) +SRID=4326;MULTIPOINT(-75 42 2 0,-70 39 2 0,-70 42 3 0,-70 42 4 0,-75 42 2 0) + + diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry9.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry9.testcase new file mode 100644 index 0000000..d289fcd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry9.testcase @@ -0,0 +1,9 @@ +Sanitize Geometry - LINESTRING ZM +:memory: #use in-memory database +SELECT AsEWkt(SanitizeGeometry(GeomFromText("LINESTRING ZM(-75 42 2 0, -70 39 2 0, -70 42 3 0, -70 42 4 0, -75 42 2 0)", 4326))) +1 # rows (not including the header row) +1 # columns +AsEWkt(SanitizeGeometry(GeomFromText("LINESTRING ZM(-75 42 2 0, -70 39 2 0, -70 42 3 0, -70 42 4 0, -75 42 2 0)", 4326))) +SRID=4326;LINESTRING(-75 42 2 0,-70 39 2 0,-70 42 3 0,-70 42 4 0,-75 42 2 0) + + diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords1.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords1.testcase new file mode 100644 index 0000000..c4e3693 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/scalecoords1.testcase @@ -0,0 +1,21 @@ +scale coords - Point +:memory: #use in-memory database +SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POINT(1 2)") as geom) dummy; +1 # rows (not including the header row) +8 # columns +AsText(ScaleCoords(geom, 0)) +AsText(ScaleCoords(geom, 0.0)) +AsText(ScaleCoords(geom, 2, 3.0)) +AsText(ScaleCoords(geom, 1.0, -1)) +ScaleCoords(zeroblob(20), 10) +ScaleCoords(geom, "hello") +ScaleCoords(geom, 1, "hello") +ScaleCoords("foo", 2) +POINT(0 0) +POINT(0 0) +POINT(2 6) +POINT(1 -2) +(NULL) +(NULL) +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords10.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords10.testcase new file mode 100644 index 0000000..d5c4dbb --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/scalecoords10.testcase @@ -0,0 +1,21 @@ +scale coords - POLYGON with inner ring +:memory: #use in-memory database +SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 2, 1 3, 2 3, 2 2, 1 2))") as geom) dummy; +1 # rows (not including the header row) +8 # columns +AsText(ScaleCoords(geom, 0)) +AsText(ScaleCoords(geom, 0.0)) +AsText(ScaleCoords(geom, 2, 3.0)) +AsText(ScaleCoords(geom, 1.0, -1)) +ScaleCoords(zeroblob(20), 10) +ScaleCoords(geom, "hello") +ScaleCoords(geom, 1, "hello") +ScaleCoords("foo", 2) +POLYGON((0 0, 0 0, 0 0, 0 0, 0 0), (0 0, 0 0, 0 0, 0 0, 0 0)) +POLYGON((0 0, 0 0, 0 0, 0 0, 0 0), (0 0, 0 0, 0 0, 0 0, 0 0)) +POLYGON((0 0, 0 12, 8 12, 8 0, 0 0), (2 6, 2 9, 4 9, 4 6, 2 6)) +POLYGON((0 0, 0 -4, 4 -4, 4 0, 0 0), (1 -2, 1 -3, 2 -3, 2 -2, 1 -2)) +(NULL) +(NULL) +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords11.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords11.testcase new file mode 100644 index 0000000..6def9d2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/scalecoords11.testcase @@ -0,0 +1,21 @@ +scale coords - POLYGONZ with inner ring +:memory: #use in-memory database +SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGONZ((0 0 1, 0 4 1, 4 4 1, 4 0 1, 0 0 1),(1 2 1, 1 3 1, 2 3 1, 2 2 1, 1 2 1))") as geom) dummy; +1 # rows (not including the header row) +8 # columns +AsText(ScaleCoords(geom, 0)) +AsText(ScaleCoords(geom, 0.0)) +AsText(ScaleCoords(geom, 2, 3.0)) +AsText(ScaleCoords(geom, 1.0, -1)) +ScaleCoords(zeroblob(20), 10) +ScaleCoords(geom, "hello") +ScaleCoords(geom, 1, "hello") +ScaleCoords("foo", 2) +POLYGON Z((0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1), (0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1)) +POLYGON Z((0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1), (0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1)) +POLYGON Z((0 0 1, 0 12 1, 8 12 1, 8 0 1, 0 0 1), (2 6 1, 2 9 1, 4 9 1, 4 6 1, 2 6 1)) +POLYGON Z((0 0 1, 0 -4 1, 4 -4 1, 4 0 1, 0 0 1), (1 -2 1, 1 -3 1, 2 -3 1, 2 -2 1, 1 -2 1)) +(NULL) +(NULL) +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords12.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords12.testcase new file mode 100644 index 0000000..1d9f918 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/scalecoords12.testcase @@ -0,0 +1,21 @@ +scale coords - POLYGONM with inner ring +:memory: #use in-memory database +SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGONM((0 0 1, 0 4 1, 4 4 1, 4 0 1, 0 0 1),(1 2 1, 1 3 1, 2 3 1, 2 2 1, 1 2 1))") as geom) dummy; +1 # rows (not including the header row) +8 # columns +AsText(ScaleCoords(geom, 0)) +AsText(ScaleCoords(geom, 0.0)) +AsText(ScaleCoords(geom, 2, 3.0)) +AsText(ScaleCoords(geom, 1.0, -1)) +ScaleCoords(zeroblob(20), 10) +ScaleCoords(geom, "hello") +ScaleCoords(geom, 1, "hello") +ScaleCoords("foo", 2) +POLYGON M((0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1), (0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1)) +POLYGON M((0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1), (0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1)) +POLYGON M((0 0 1, 0 12 1, 8 12 1, 8 0 1, 0 0 1), (2 6 1, 2 9 1, 4 9 1, 4 6 1, 2 6 1)) +POLYGON M((0 0 1, 0 -4 1, 4 -4 1, 4 0 1, 0 0 1), (1 -2 1, 1 -3 1, 2 -3 1, 2 -2 1, 1 -2 1)) +(NULL) +(NULL) +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords13.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords13.testcase new file mode 100644 index 0000000..88afaf9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/scalecoords13.testcase @@ -0,0 +1,21 @@ +scale coords - POLYGONZM with inner ring +:memory: #use in-memory database +SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGONZM((0 0 1 2, 0 4 1 2, 4 4 1 2, 4 0 1 2, 0 0 1 2),(1 2 1 2, 1 3 1 2, 2 3 1 2, 2 2 1 2, 1 2 1 2))") as geom) dummy; +1 # rows (not including the header row) +8 # columns +AsText(ScaleCoords(geom, 0)) +AsText(ScaleCoords(geom, 0.0)) +AsText(ScaleCoords(geom, 2, 3.0)) +AsText(ScaleCoords(geom, 1.0, -1)) +ScaleCoords(zeroblob(20), 10) +ScaleCoords(geom, "hello") +ScaleCoords(geom, 1, "hello") +ScaleCoords("foo", 2) +POLYGON ZM((0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2), (0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2)) +POLYGON ZM((0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2), (0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2)) +POLYGON ZM((0 0 1 2, 0 12 1 2, 8 12 1 2, 8 0 1 2, 0 0 1 2), (2 6 1 2, 2 9 1 2, 4 9 1 2, 4 6 1 2, 2 6 1 2)) +POLYGON ZM((0 0 1 2, 0 -4 1 2, 4 -4 1 2, 4 0 1 2, 0 0 1 2), (1 -2 1 2, 1 -3 1 2, 2 -3 1 2, 2 -2 1 2, 1 -2 1 2)) +(NULL) +(NULL) +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords2.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords2.testcase new file mode 100644 index 0000000..0fcfc82 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/scalecoords2.testcase @@ -0,0 +1,21 @@ +scale coords - LINESTRING +:memory: #use in-memory database +SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("LINESTRING(1 2, 4 5)") as geom) dummy; +1 # rows (not including the header row) +8 # columns +AsText(ScaleCoords(geom, 0)) +AsText(ScaleCoords(geom, 0.0)) +AsText(ScaleCoords(geom, 2, 3.0)) +AsText(ScaleCoords(geom, 1.0, -1)) +ScaleCoords(zeroblob(20), 10) +ScaleCoords(geom, "hello") +ScaleCoords(geom, 1, "hello") +ScaleCoords("foo", 2) +LINESTRING(0 0, 0 0) +LINESTRING(0 0, 0 0) +LINESTRING(2 6, 8 15) +LINESTRING(1 -2, 4 -5) +(NULL) +(NULL) +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords3.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords3.testcase new file mode 100644 index 0000000..7215e0a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/scalecoords3.testcase @@ -0,0 +1,21 @@ +scale coords - LINESTRINGZ +:memory: #use in-memory database +SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("LINESTRINGZ(1 2 1, 4 5 2)") as geom) dummy; +1 # rows (not including the header row) +8 # columns +AsText(ScaleCoords(geom, 0)) +AsText(ScaleCoords(geom, 0.0)) +AsText(ScaleCoords(geom, 2, 3.0)) +AsText(ScaleCoords(geom, 1.0, -1)) +ScaleCoords(zeroblob(20), 10) +ScaleCoords(geom, "hello") +ScaleCoords(geom, 1, "hello") +ScaleCoords("foo", 2) +LINESTRING Z(0 0 1, 0 0 2) +LINESTRING Z(0 0 1, 0 0 2) +LINESTRING Z(2 6 1, 8 15 2) +LINESTRING Z(1 -2 1, 4 -5 2) +(NULL) +(NULL) +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords4.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords4.testcase new file mode 100644 index 0000000..8261024 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/scalecoords4.testcase @@ -0,0 +1,21 @@ +scale coords - LINESTRINGM +:memory: #use in-memory database +SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("LINESTRINGM(1 2 1, 4 5 2)") as geom) dummy; +1 # rows (not including the header row) +8 # columns +AsText(ScaleCoords(geom, 0)) +AsText(ScaleCoords(geom, 0.0)) +AsText(ScaleCoords(geom, 2, 3.0)) +AsText(ScaleCoords(geom, 1.0, -1)) +ScaleCoords(zeroblob(20), 10) +ScaleCoords(geom, "hello") +ScaleCoords(geom, 1, "hello") +ScaleCoords("foo", 2) +LINESTRING M(0 0 1, 0 0 2) +LINESTRING M(0 0 1, 0 0 2) +LINESTRING M(2 6 1, 8 15 2) +LINESTRING M(1 -2 1, 4 -5 2) +(NULL) +(NULL) +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords5.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords5.testcase new file mode 100644 index 0000000..7e97cd6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/scalecoords5.testcase @@ -0,0 +1,21 @@ +scale coords - LINESTRINGZM +:memory: #use in-memory database +SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("LINESTRINGZM(1 2 1 3, 4 5 2 4)") as geom) dummy; +1 # rows (not including the header row) +8 # columns +AsText(ScaleCoords(geom, 0)) +AsText(ScaleCoords(geom, 0.0)) +AsText(ScaleCoords(geom, 2, 3.0)) +AsText(ScaleCoords(geom, 1.0, -1)) +ScaleCoords(zeroblob(20), 10) +ScaleCoords(geom, "hello") +ScaleCoords(geom, 1, "hello") +ScaleCoords("foo", 2) +LINESTRING ZM(0 0 1 3, 0 0 2 4) +LINESTRING ZM(0 0 1 3, 0 0 2 4) +LINESTRING ZM(2 6 1 3, 8 15 2 4) +LINESTRING ZM(1 -2 1 3, 4 -5 2 4) +(NULL) +(NULL) +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords6.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords6.testcase new file mode 100644 index 0000000..f31ce9e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/scalecoords6.testcase @@ -0,0 +1,21 @@ +scale coords - POLYGON +:memory: #use in-memory database +SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGON((1 2, 1 3, 2 3, 2 2, 1 2))") as geom) dummy; +1 # rows (not including the header row) +8 # columns +AsText(ScaleCoords(geom, 0)) +AsText(ScaleCoords(geom, 0.0)) +AsText(ScaleCoords(geom, 2, 3.0)) +AsText(ScaleCoords(geom, 1.0, -1)) +ScaleCoords(zeroblob(20), 10) +ScaleCoords(geom, "hello") +ScaleCoords(geom, 1, "hello") +ScaleCoords("foo", 2) +POLYGON((0 0, 0 0, 0 0, 0 0, 0 0)) +POLYGON((0 0, 0 0, 0 0, 0 0, 0 0)) +POLYGON((2 6, 2 9, 4 9, 4 6, 2 6)) +POLYGON((1 -2, 1 -3, 2 -3, 2 -2, 1 -2)) +(NULL) +(NULL) +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords7.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords7.testcase new file mode 100644 index 0000000..baada04 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/scalecoords7.testcase @@ -0,0 +1,21 @@ +scale coords - POLYGONZ +:memory: #use in-memory database +SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGONZ((1 2 1, 1 3 1, 2 3 2, 2 2 2, 1 2 1))") as geom) dummy; +1 # rows (not including the header row) +8 # columns +AsText(ScaleCoords(geom, 0)) +AsText(ScaleCoords(geom, 0.0)) +AsText(ScaleCoords(geom, 2, 3.0)) +AsText(ScaleCoords(geom, 1.0, -1)) +ScaleCoords(zeroblob(20), 10) +ScaleCoords(geom, "hello") +ScaleCoords(geom, 1, "hello") +ScaleCoords("foo", 2) +POLYGON Z((0 0 1, 0 0 1, 0 0 2, 0 0 2, 0 0 1)) +POLYGON Z((0 0 1, 0 0 1, 0 0 2, 0 0 2, 0 0 1)) +POLYGON Z((2 6 1, 2 9 1, 4 9 2, 4 6 2, 2 6 1)) +POLYGON Z((1 -2 1, 1 -3 1, 2 -3 2, 2 -2 2, 1 -2 1)) +(NULL) +(NULL) +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords8.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords8.testcase new file mode 100644 index 0000000..a3e03c1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/scalecoords8.testcase @@ -0,0 +1,21 @@ +scale coords - POLYGONM +:memory: #use in-memory database +SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGONM((1 2 1, 1 3 1, 2 3 2, 2 2 2, 1 2 1))") as geom) dummy; +1 # rows (not including the header row) +8 # columns +AsText(ScaleCoords(geom, 0)) +AsText(ScaleCoords(geom, 0.0)) +AsText(ScaleCoords(geom, 2, 3.0)) +AsText(ScaleCoords(geom, 1.0, -1)) +ScaleCoords(zeroblob(20), 10) +ScaleCoords(geom, "hello") +ScaleCoords(geom, 1, "hello") +ScaleCoords("foo", 2) +POLYGON M((0 0 1, 0 0 1, 0 0 2, 0 0 2, 0 0 1)) +POLYGON M((0 0 1, 0 0 1, 0 0 2, 0 0 2, 0 0 1)) +POLYGON M((2 6 1, 2 9 1, 4 9 2, 4 6 2, 2 6 1)) +POLYGON M((1 -2 1, 1 -3 1, 2 -3 2, 2 -2 2, 1 -2 1)) +(NULL) +(NULL) +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords9.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords9.testcase new file mode 100644 index 0000000..dcc62de --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/scalecoords9.testcase @@ -0,0 +1,21 @@ +scale coords - POLYGONZM +:memory: #use in-memory database +SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGONZM((1 2 1 0 , 1 3 1 2, 2 3 2 4, 2 2 2 6, 1 2 1 0))") as geom) dummy; +1 # rows (not including the header row) +8 # columns +AsText(ScaleCoords(geom, 0)) +AsText(ScaleCoords(geom, 0.0)) +AsText(ScaleCoords(geom, 2, 3.0)) +AsText(ScaleCoords(geom, 1.0, -1)) +ScaleCoords(zeroblob(20), 10) +ScaleCoords(geom, "hello") +ScaleCoords(geom, 1, "hello") +ScaleCoords("foo", 2) +POLYGON ZM((0 0 1 0, 0 0 1 2, 0 0 2 4, 0 0 2 6, 0 0 1 0)) +POLYGON ZM((0 0 1 0, 0 0 1 2, 0 0 2 4, 0 0 2 6, 0 0 1 0)) +POLYGON ZM((2 6 1 0, 2 9 1 2, 4 9 2 4, 4 6 2 6, 2 6 1 0)) +POLYGON ZM((1 -2 1 0, 1 -3 1 2, 2 -3 2 4, 2 -2 2 6, 1 -2 1 0)) +(NULL) +(NULL) +(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/seconds.wav b/src/spatialite/test/sql_stmt_tests/seconds.wav new file mode 100644 index 0000000000000000000000000000000000000000..0c85b2ee02b3993bbf954fab07256db29b357c84 GIT binary patch literal 388 zcmW-b&uiLH0LPzD*v|b2+Dn_5bWhQ7cSa=%iVt48{%xkK6u|z4tV< zm}!5ERvD`fcJFBeFN4x+ciL^c&h7Bw10TMJZ^Nylex;1y6&YnqjbeuX&Z3I?3>O4HqI2b-jN#(ljk?pc z(!ysN>-oA_;JtqDBwgRe!bVJI$ZGj1X-tM{v2EqJ2O3q?wrg-kpWQ>pv82=oGM0^w zEelf;7qfdcoez5KtrB2E$eocH3S28CUei$~*K#%fkwv~zuj6$)Vn5*aZbM2B$pm3P eP=rrpkjXr6YTQp2*>KM@l4eBjB+Ds5W%L(}#)jqq literal 0 HcmV?d00001 diff --git a/src/spatialite/test/sql_stmt_tests/setpoint1.testcase b/src/spatialite/test/sql_stmt_tests/setpoint1.testcase new file mode 100644 index 0000000..a1c7b90 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint1.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - NULL line +:memory: #use in-memory database +SELECT ST_SetPoint(NULL, NULL, NULL) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(NULL, NULL, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint10.testcase b/src/spatialite/test/sql_stmt_tests/setpoint10.testcase new file mode 100644 index 0000000..a4797ad --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint10.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - NULL Point +:memory: #use in-memory database +SELECT ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1, NULL) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint11.testcase b/src/spatialite/test/sql_stmt_tests/setpoint11.testcase new file mode 100644 index 0000000..76bc1c5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint11.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - INTEGER Point +:memory: #use in-memory database +SELECT ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1, 1) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1, 1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint12.testcase b/src/spatialite/test/sql_stmt_tests/setpoint12.testcase new file mode 100644 index 0000000..ea80854 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint12.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - DOUBLE Point +:memory: #use in-memory database +SELECT ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1, 1.5) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1, 1.5) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint13.testcase b/src/spatialite/test/sql_stmt_tests/setpoint13.testcase new file mode 100644 index 0000000..610db13 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint13.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - TEXT Point +:memory: #use in-memory database +SELECT ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1, 'alpha') +1 # rows (not including the header row) +1 # columns +ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1, 'alpha') +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint14.testcase b/src/spatialite/test/sql_stmt_tests/setpoint14.testcase new file mode 100644 index 0000000..7a4de6e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint14.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - BLOB Point +:memory: #use in-memory database +SELECT ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1, zeroblob(4)) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1, zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint15.testcase b/src/spatialite/test/sql_stmt_tests/setpoint15.testcase new file mode 100644 index 0000000..ed5d2fd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint15.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - negative index +:memory: #use in-memory database +SELECT ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), -1, MakePoint(2, 0)) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), -1, MakePoint(2, 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint16.testcase b/src/spatialite/test/sql_stmt_tests/setpoint16.testcase new file mode 100644 index 0000000..1ffe0e5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint16.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - invalid index +:memory: #use in-memory database +SELECT ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 3, MakePoint(2, 0)) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 3, MakePoint(2, 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint17.testcase b/src/spatialite/test/sql_stmt_tests/setpoint17.testcase new file mode 100644 index 0000000..01f5580 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint17.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - not a line +:memory: #use in-memory database +SELECT ST_SetPoint(GeomFromText('POLYGON((10 10, 11 10, 11 11, 10 11, 10 10))'), 1, MakePoint(2, 0)) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(GeomFromText('POLYGON((10 10, 11 10, 11 11, 10 11, 10 10))'), 1, MakePoint(2, 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint18.testcase b/src/spatialite/test/sql_stmt_tests/setpoint18.testcase new file mode 100644 index 0000000..01f5580 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint18.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - not a line +:memory: #use in-memory database +SELECT ST_SetPoint(GeomFromText('POLYGON((10 10, 11 10, 11 11, 10 11, 10 10))'), 1, MakePoint(2, 0)) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(GeomFromText('POLYGON((10 10, 11 10, 11 11, 10 11, 10 10))'), 1, MakePoint(2, 0)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint19.testcase b/src/spatialite/test/sql_stmt_tests/setpoint19.testcase new file mode 100644 index 0000000..9c16322 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint19.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - not a point +:memory: #use in-memory database +SELECT ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1, GeomFromText('MULTILINESTRING(10 10, 11 10), (1 1, 2 2))')) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1, GeomFromText('MULTILINESTRING(10 10, 11 10), (1 1, 2 2))')) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint2.testcase b/src/spatialite/test/sql_stmt_tests/setpoint2.testcase new file mode 100644 index 0000000..7fc6e48 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint2.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - INTEGER line +:memory: #use in-memory database +SELECT ST_SetPoint(1, NULL, NULL) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(1, NULL, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint20.testcase b/src/spatialite/test/sql_stmt_tests/setpoint20.testcase new file mode 100644 index 0000000..ea2ee28 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint20.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - XY +:memory: #use in-memory database +SELECT AsText(SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1, MakePoint(2, 3))) +1 # rows (not including the header row) +1 # columns +AsText(SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1, MakePoint(2, 3))) +LINESTRING(0 0, 2 3, 1 1) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint21.testcase b/src/spatialite/test/sql_stmt_tests/setpoint21.testcase new file mode 100644 index 0000000..cca4bb9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint21.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - Z +:memory: #use in-memory database +SELECT AsText(SetPoint(GeomFromText('LINESTRINGZ(0 0 1, 1 0 2, 1 1 3)'), 1, MakePoint(2, 3))) +1 # rows (not including the header row) +1 # columns +AsText(SetPoint(GeomFromText('LINESTRINGZ(0 0 1, 1 0 2, 1 1 3)'), 1, MakePoint(2, 3))) +LINESTRING Z(0 0 1, 2 3 0, 1 1 3) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint22.testcase b/src/spatialite/test/sql_stmt_tests/setpoint22.testcase new file mode 100644 index 0000000..599e725 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint22.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - M +:memory: #use in-memory database +SELECT AsText(SetPoint(GeomFromText('LINESTRINGM(0 0 1, 1 0 2, 1 1 3)'), 1, MakePoint(2, 3))) +1 # rows (not including the header row) +1 # columns +AsText(SetPoint(GeomFromText('LINESTRINGM(0 0 1, 1 0 2, 1 1 3)'), 1, MakePoint(2, 3))) +LINESTRING M(0 0 1, 2 3 0, 1 1 3) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint23.testcase b/src/spatialite/test/sql_stmt_tests/setpoint23.testcase new file mode 100644 index 0000000..959cd7f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint23.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - ZM +:memory: #use in-memory database +SELECT AsText(SetPoint(GeomFromText('LINESTRINGZM(0 0 1 2, 1 0 2 3, 1 1 3 4)'), 1, MakePoint(2, 3))) +1 # rows (not including the header row) +1 # columns +AsText(SetPoint(GeomFromText('LINESTRINGZM(0 0 1 2, 1 0 2 3, 1 1 3 4)'), 1, MakePoint(2, 3))) +LINESTRING ZM(0 0 1 2, 2 3 0 0, 1 1 3 4) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint3.testcase b/src/spatialite/test/sql_stmt_tests/setpoint3.testcase new file mode 100644 index 0000000..6a754b5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint3.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - DOUBLE line +:memory: #use in-memory database +SELECT ST_SetPoint(1.5, NULL, NULL) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(1.5, NULL, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint4.testcase b/src/spatialite/test/sql_stmt_tests/setpoint4.testcase new file mode 100644 index 0000000..619f487 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint4.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - TEXT line +:memory: #use in-memory database +SELECT ST_SetPoint('alpha', NULL, NULL) +1 # rows (not including the header row) +1 # columns +ST_SetPoint('alpha', NULL, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint5.testcase b/src/spatialite/test/sql_stmt_tests/setpoint5.testcase new file mode 100644 index 0000000..098ab01 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint5.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - BLOB line +:memory: #use in-memory database +SELECT ST_SetPoint(zeroblob(4), NULL, NULL) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(zeroblob(4), NULL, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint6.testcase b/src/spatialite/test/sql_stmt_tests/setpoint6.testcase new file mode 100644 index 0000000..5e45910 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint6.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - NULL index +:memory: #use in-memory database +SELECT ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), NULL, NULL) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), NULL, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint7.testcase b/src/spatialite/test/sql_stmt_tests/setpoint7.testcase new file mode 100644 index 0000000..6d2b309 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint7.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - DOUBLE index +:memory: #use in-memory database +SELECT ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1.5, NULL) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 1.5, NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint8.testcase b/src/spatialite/test/sql_stmt_tests/setpoint8.testcase new file mode 100644 index 0000000..ecfa021 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint8.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - TEXT index +:memory: #use in-memory database +SELECT ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 'alpha', NULL) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), 'alpha', NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/setpoint9.testcase b/src/spatialite/test/sql_stmt_tests/setpoint9.testcase new file mode 100644 index 0000000..bce6590 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/setpoint9.testcase @@ -0,0 +1,7 @@ +ST_SetPoint() - BLOB index +:memory: #use in-memory database +SELECT ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), zeroblob(4), NULL) +1 # rows (not including the header row) +1 # columns +ST_SetPoint(GeomFromText('LINESTRING(0 0, 1 0, 1 1)'), zeroblob(4), NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords1.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords1.testcase new file mode 100644 index 0000000..31cd6d6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftcoords1.testcase @@ -0,0 +1,7 @@ +shiftcoords1 +:memory: #use in-memory database +SELECT AsText(ShiftCoords(GeomFromText("POINT(1 2)"), 1, 3)); +1 # rows (not including the header row) +1 # columns +AsText(ShiftCoords(GeomFromText("POINT(1 2)"), 1, 3)) +POINT(2 5) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords10.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords10.testcase new file mode 100644 index 0000000..3aff334 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftcoords10.testcase @@ -0,0 +1,7 @@ +shiftcoords - Linestring XYM +:memory: #use in-memory database +SELECT AsText(ShiftCoords(GeomFromText("LINESTRINGM(1 2 20, 3 4 20)"), 1.4, 3.9)); +1 # rows (not including the header row) +1 # columns +AsText(ShiftCoords(GeomFromText("LINESTRINGM(1 2 20, 3 4 20)"), 1.4, 3.9)) +LINESTRING M(2.4 5.9 20, 4.4 7.9 20) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords11.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords11.testcase new file mode 100644 index 0000000..daa6fcb --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftcoords11.testcase @@ -0,0 +1,7 @@ +shiftcoords - Linestring XYZM +:memory: #use in-memory database +SELECT AsText(ShiftCoords(GeomFromText("LINESTRINGZM(1 2 10 20, 3 4 10 20)"), 1.4, 3.9)); +1 # rows (not including the header row) +1 # columns +AsText(ShiftCoords(GeomFromText("LINESTRINGZM(1 2 10 20, 3 4 10 20)"), 1.4, 3.9)) +LINESTRING ZM(2.4 5.9 10 20, 4.4 7.9 10 20) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords12.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords12.testcase new file mode 100644 index 0000000..83df59a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftcoords12.testcase @@ -0,0 +1,7 @@ +shiftcoords - Polygon XY +:memory: #use in-memory database +SELECT AsText(ShiftCoords(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (5 5, 6 5, 6 6, 5 6, 5 5))"), 1.4, 3.9)); +1 # rows (not including the header row) +1 # columns +AsText(ShiftCoords(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (5 5, 6 5, 6 6, 5 6, 5 5))"), 1.4, 3.9)) +POLYGON((1.4 3.9, 11.4 3.9, 11.4 13.9, 1.4 13.9, 1.4 3.9), (6.4 8.9, 7.4 8.9, 7.4 9.9, 6.4 9.9, 6.4 8.9)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords13.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords13.testcase new file mode 100644 index 0000000..7a2c93f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftcoords13.testcase @@ -0,0 +1,7 @@ +shiftcoords - Polygon XYZ +:memory: #use in-memory database +SELECT AsText(ShiftCoords(GeomFromText("POLYGONZ((0 0 10, 10 0 10, 10 10 11, 0 10 11, 0 0 10), (5 5 12, 6 5 12, 6 6 13, 5 6 13, 5 5 12))"), 1.4, 3.9)); +1 # rows (not including the header row) +1 # columns +AsText(ShiftCoords(GeomFromText("POLYGONZ((0 0 10, 10 0 10, 10 10 11, 0 10 11, 0 0 10), (5 5 12, 6 5 12, 6 6 13, 5 6 13, 5 5 12))"), 1.4, 3.9)) +POLYGON Z((1.4 3.9 10, 11.4 3.9 10, 11.4 13.9 11, 1.4 13.9 11, 1.4 3.9 10), (6.4 8.9 12, 7.4 8.9 12, 7.4 9.9 13, 6.4 9.9 13, 6.4 8.9 12)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords14.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords14.testcase new file mode 100644 index 0000000..bd822e2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftcoords14.testcase @@ -0,0 +1,7 @@ +shiftcoords - Polygon XYM +:memory: #use in-memory database +SELECT AsText(ShiftCoords(GeomFromText("POLYGONM((0 0 1, 10 0 2, 10 10 3, 0 10 4, 0 0 1), (5 5 1, 6 5 2, 6 6 3, 5 6 3, 5 5 1))"), 1.4, 3.9)); +1 # rows (not including the header row) +1 # columns +AsText(ShiftCoords(GeomFromText("POLYGONM((0 0 1, 10 0 2, 10 10 3, 0 10 4, 0 0 1), (5 5 1, 6 5 2, 6 6 3, 5 6 3, 5 5 1))"), 1.4, 3.9)) +POLYGON M((1.4 3.9 1, 11.4 3.9 2, 11.4 13.9 3, 1.4 13.9 4, 1.4 3.9 1), (6.4 8.9 1, 7.4 8.9 2, 7.4 9.9 3, 6.4 9.9 3, 6.4 8.9 1)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords15.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords15.testcase new file mode 100644 index 0000000..404716c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftcoords15.testcase @@ -0,0 +1,7 @@ +shiftcoords - Polygon XYZM +:memory: #use in-memory database +SELECT AsText(ShiftCoords(GeomFromText("POLYGONZM((0 0 10 1, 10 0 10 2, 10 10 11 3, 0 10 11 4, 0 0 10 1), (5 5 12 1, 6 5 12 2, 6 6 13 3, 5 6 13 4, 5 5 12 1))"), 1.4, 3.9)); +1 # rows (not including the header row) +1 # columns +AsText(ShiftCoords(GeomFromText("POLYGONZM((0 0 10 1, 10 0 10 2, 10 10 11 3, 0 10 11 4, 0 0 10 1), (5 5 12 1, 6 5 12 2, 6 6 13 3, 5 6 13 4, 5 5 12 1))"), 1.4, 3.9)) +POLYGON ZM((1.4 3.9 10 1, 11.4 3.9 10 2, 11.4 13.9 11 3, 1.4 13.9 11 4, 1.4 3.9 10 1), (6.4 8.9 12 1, 7.4 8.9 12 2, 7.4 9.9 13 3, 6.4 9.9 13 4, 6.4 8.9 12 1)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords2.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords2.testcase new file mode 100644 index 0000000..23d4c76 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftcoords2.testcase @@ -0,0 +1,7 @@ +shiftcoords2 +:memory: #use in-memory database +SELECT AsText(ShiftCoords(GeomFromText("POINT(1 2)"), -1, -3)); +1 # rows (not including the header row) +1 # columns +AsText(ShiftCoords(GeomFromText("POINT(1 2)"), -1, -3)) +POINT(0 -1) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords3.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords3.testcase new file mode 100644 index 0000000..6e21650 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftcoords3.testcase @@ -0,0 +1,7 @@ +shiftcoords - bad blob (null) +:memory: #use in-memory database +SELECT ShiftCoords(zeroblob(4), -1, -3); +1 # rows (not including the header row) +1 # columns +ShiftCoords(zeroblob(4), -1, -3) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords4.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords4.testcase new file mode 100644 index 0000000..24dca2e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftcoords4.testcase @@ -0,0 +1,7 @@ +shiftcoords - text input (null) +:memory: #use in-memory database +SELECT ShiftCoords("shift", -1, -3); +1 # rows (not including the header row) +1 # columns +ShiftCoords("shift", -1, -3) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords5.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords5.testcase new file mode 100644 index 0000000..873491a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftcoords5.testcase @@ -0,0 +1,10 @@ +shiftcoords - text shift (error) +:memory: #use in-memory database +SELECT ShiftCoords(GeomFromText("POINT(1 2)"), 1, "three"); +1 # rows (not including the header row) +1 # columns +ShiftCoords(GeomFromText("POINT(1 2)"), 1, "three") +(NULL) + + + diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords6.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords6.testcase new file mode 100644 index 0000000..67340a8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftcoords6.testcase @@ -0,0 +1,7 @@ +shiftcoords - text shift both (error) +:memory: #use in-memory database +SELECT ShiftCoords(GeomFromText("POINT(1 2)"), "text", "three"); +1 # rows (not including the header row) +1 # columns +ShiftCoords(GeomFromText("POINT(1 2)"), "text", "three") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords7.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords7.testcase new file mode 100644 index 0000000..9076ea7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftcoords7.testcase @@ -0,0 +1,7 @@ +shiftcoords - float shift +:memory: #use in-memory database +SELECT AsText(ShiftCoords(GeomFromText("POINT(1 2)"), 1.4, 3.9)); +1 # rows (not including the header row) +1 # columns +AsText(ShiftCoords(GeomFromText("POINT(1 2)"), 1.4, 3.9)) +POINT(2.4 5.9) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords8.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords8.testcase new file mode 100644 index 0000000..f1a27ec --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftcoords8.testcase @@ -0,0 +1,7 @@ +shiftcoords - Linestring XY +:memory: #use in-memory database +SELECT AsText(ShiftCoords(GeomFromText("LINESTRING(1 2, 3 4)"), 1.4, 3.9)); +1 # rows (not including the header row) +1 # columns +AsText(ShiftCoords(GeomFromText("LINESTRING(1 2, 3 4)"), 1.4, 3.9)) +LINESTRING(2.4 5.9, 4.4 7.9) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords9.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords9.testcase new file mode 100644 index 0000000..f0467f4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftcoords9.testcase @@ -0,0 +1,7 @@ +shiftcoords - Linestring XYZ +:memory: #use in-memory database +SELECT AsText(ShiftCoords(GeomFromText("LINESTRINGZ(1 2 10, 3 4 10)"), 1.4, 3.9)); +1 # rows (not including the header row) +1 # columns +AsText(ShiftCoords(GeomFromText("LINESTRINGZ(1 2 10, 3 4 10)"), 1.4, 3.9)) +LINESTRING Z(2.4 5.9 10, 4.4 7.9 10) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude1.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude1.testcase new file mode 100644 index 0000000..f7db216 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude1.testcase @@ -0,0 +1,7 @@ +shiftlongitude - positive long +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POINT(1 2)", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POINT(1 2)", 4326))) +POINT(1 2) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude10.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude10.testcase new file mode 100644 index 0000000..365376e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude10.testcase @@ -0,0 +1,7 @@ +shiftlongitude - positive and negative longitude linestringzm +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGZM(-170 0 1 -2, -175 2 2.4 -4, -179 4 3.2 -5, 175.3 5 4.7 -9)", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGZM(-170 0 1 -2, -175 2 2.4 -4, -179 4 3.2 -5, 175.3 5 4.7 -9)", 4326))) +LINESTRING ZM(190 0 1 -2, 185 2 2.4 -4, 181 4 3.2 -5, 175.3 5 4.7 -9) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude11.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude11.testcase new file mode 100644 index 0000000..7d31db1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude11.testcase @@ -0,0 +1,7 @@ +shiftlongitude - negative longitude polygonz +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONZ((-170 0 1, -175 2 2.4, -179 4 3.2, -170 0 1))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGONZ((-170 0 1, -175 2 2.4, -179 4 3.2, -170 0 1))", 4326))) +POLYGON Z((190 0 1, 185 2 2.4, 181 4 3.2, 190 0 1)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude12.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude12.testcase new file mode 100644 index 0000000..0ddceb2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude12.testcase @@ -0,0 +1,7 @@ +shiftlongitude - positive and negative longitude polygonm +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONM((-175 0 1, -176 10 2, 175 10 3, 176 0 4, -175 0 1))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGONM((-175 0 1, -176 10 2, 175 10 3, 176 0 4, -175 0 1))", 4326))) +POLYGON M((185 0 1, 184 10 2, 175 10 3, 176 0 4, 185 0 1)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude13.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude13.testcase new file mode 100644 index 0000000..a60c557 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude13.testcase @@ -0,0 +1,7 @@ +shiftlongitude - positive and negative longitude polygon +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGON((-175 0, -176 10, 175 10, 176 0, -175 0))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGON((-175 0, -176 10, 175 10, 176 0, -175 0))", 4326))) +POLYGON((185 0, 184 10, 175 10, 176 0, 185 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude14.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude14.testcase new file mode 100644 index 0000000..1eb6d6f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude14.testcase @@ -0,0 +1,7 @@ +shiftlongitude - positive and negative longitude polygonzm +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONZM((-175 0 4 2, -176 10 5 3, 175 10 5 4, 176 0 5 1, -175 0 4 2))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGONZM((-175 0 4 2, -176 10 5 3, 175 10 5 4, 176 0 5 1, -175 0 4 2))", 4326))) +POLYGON ZM((185 0 4 2, 184 10 5 3, 175 10 5 4, 176 0 5 1, 185 0 4 2)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude15.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude15.testcase new file mode 100644 index 0000000..8914205 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude15.testcase @@ -0,0 +1,7 @@ +shiftlongitude - positive and negative longitude polygonzm, interior rings +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONZM((-175 0 4 2, -176 10 5 3, 175 10 5 4, 176 0 5 1, -175 0 4 2),(-177 1 4 2, -177 2 5 3, -178 2 6 4, -178 1 9 2, -177 1 4 2),(-179 4 0 0, 179 4 0 0, 179 5 0 0, -179 5 0 0, -179 4 0 0))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGONZM((-175 0 4 2, -176 10 5 3, 175 10 5 4, 176 0 5 1, -175 0 4 2),(-177 1 4 2, -177 2 5 3, -178 2 6 4, -178 1 9 2, -177 1 4 2),(-179 4 0 0, 179 4 0 0, 179 5 0 0, -179 5 0 0, -179 4 0 0))", 4326))) +POLYGON ZM((185 0 4 2, 184 10 5 3, 175 10 5 4, 176 0 5 1, 185 0 4 2), (183 1 4 2, 183 2 5 3, 182 2 6 4, 182 1 9 2, 183 1 4 2), (181 4 0 0, 179 4 0 0, 179 5 0 0, 181 5 0 0, 181 4 0 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude16.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude16.testcase new file mode 100644 index 0000000..6fd3e1c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude16.testcase @@ -0,0 +1,7 @@ +shiftlongitude - positive and negative longitude polygonz, interior rings +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONZ((-175 0 4, -176 10 5, 175 10 5, 176 0 5, -175 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGONZ((-175 0 4, -176 10 5, 175 10 5, 176 0 5, -175 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) +POLYGON Z((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4), (183 1 4, 183 2 5, 182 2 6, 182 1 9, 183 1 4), (181 4 0, 179 4 0, 179 5 0, 181 5 0, 181 4 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude17.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude17.testcase new file mode 100644 index 0000000..b5b0ddc --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude17.testcase @@ -0,0 +1,7 @@ +shiftlongitude - positive and negative longitude polygonm, interior rings +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONM((-175 0 4, -176 10 5, 175 10 5, 176 0 5, -175 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGONM((-175 0 4, -176 10 5, 175 10 5, 176 0 5, -175 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) +POLYGON M((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4), (183 1 4, 183 2 5, 182 2 6, 182 1 9, 183 1 4), (181 4 0, 179 4 0, 179 5 0, 181 5 0, 181 4 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude18.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude18.testcase new file mode 100644 index 0000000..1b90d28 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude18.testcase @@ -0,0 +1,7 @@ +shiftlongitude - positive and negative longitude polygon, interior rings +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGON((-175 0, -176 10, 175 10, 176 0, -175 0),(-177 1, -177 2, -178 2, -178 1, -177 1),(-179 4, 179 4, 179 5, -179 5, -179 4))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGON((-175 0, -176 10, 175 10, 176 0, -175 0),(-177 1, -177 2, -178 2, -178 1, -177 1),(-179 4, 179 4, 179 5, -179 5, -179 4))", 4326))) +POLYGON((185 0, 184 10, 175 10, 176 0, 185 0), (183 1, 183 2, 182 2, 182 1, 183 1), (181 4, 179 4, 179 5, 181 5, 181 4)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude19.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude19.testcase new file mode 100644 index 0000000..4d8ed94 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude19.testcase @@ -0,0 +1,7 @@ +shiftlongitude - negative long interior +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGON((185 0, 184 10, 175 10, 176 0, 185 0),(-177 1, -177 2, -178 2, -178 1, -177 1),(-179 4, 179 4, 179 5, -179 5, -179 4))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGON((185 0, 184 10, 175 10, 176 0, 185 0),(-177 1, -177 2, -178 2, -178 1, -177 1),(-179 4, 179 4, 179 5, -179 5, -179 4))", 4326))) +POLYGON((185 0, 184 10, 175 10, 176 0, 185 0), (183 1, 183 2, 182 2, 182 1, 183 1), (181 4, 179 4, 179 5, 181 5, 181 4)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude2.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude2.testcase new file mode 100644 index 0000000..e8a7ebd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude2.testcase @@ -0,0 +1,7 @@ +shiftlongitude - negative long +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POINT(-90 2)", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POINT(-90 2)", 4326))) +POINT(270 2) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude20.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude20.testcase new file mode 100644 index 0000000..6b54902 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude20.testcase @@ -0,0 +1,7 @@ +shiftlongitude - polygonm, negative interior rings +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONM((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGONM((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) +POLYGON M((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4), (183 1 4, 183 2 5, 182 2 6, 182 1 9, 183 1 4), (181 4 0, 179 4 0, 179 5 0, 181 5 0, 181 4 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude21.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude21.testcase new file mode 100644 index 0000000..c0a81f7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude21.testcase @@ -0,0 +1,7 @@ +shiftlongitude - polygonz, negative interior rings +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONZ((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGONZ((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) +POLYGON Z((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4), (183 1 4, 183 2 5, 182 2 6, 182 1 9, 183 1 4), (181 4 0, 179 4 0, 179 5 0, 181 5 0, 181 4 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude22.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude22.testcase new file mode 100644 index 0000000..1819136 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude22.testcase @@ -0,0 +1,7 @@ +shiftlongitude - polygonzm, negative interior rings +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONZM((185 0 4 2, 184 10 5 3, 175 10 5 4, 176 0 5 1, 185 0 4 2),(-177 1 4 2, -177 2 5 3, -178 2 6 4, -178 1 9 2, -177 1 4 2),(-179 4 0 0, 179 4 0 0, 179 5 0 0, -179 5 0 0, -179 4 0 0))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGONZM((185 0 4 2, 184 10 5 3, 175 10 5 4, 176 0 5 1, 185 0 4 2),(-177 1 4 2, -177 2 5 3, -178 2 6 4, -178 1 9 2, -177 1 4 2),(-179 4 0 0, 179 4 0 0, 179 5 0 0, -179 5 0 0, -179 4 0 0))", 4326))) +POLYGON ZM((185 0 4 2, 184 10 5 3, 175 10 5 4, 176 0 5 1, 185 0 4 2), (183 1 4 2, 183 2 5 3, 182 2 6 4, 182 1 9 2, 183 1 4 2), (181 4 0 0, 179 4 0 0, 179 5 0 0, 181 5 0 0, 181 4 0 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude23.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude23.testcase new file mode 100644 index 0000000..c3c72ba --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude23.testcase @@ -0,0 +1,7 @@ +shiftlongitude - simple polygonz, all positive +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGON Z((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGON Z((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4))", 4326))) +POLYGON Z((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude24.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude24.testcase new file mode 100644 index 0000000..0faa8da --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude24.testcase @@ -0,0 +1,7 @@ +shiftlongitude - simple polygonm, all positive +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGON M((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGON M((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4))", 4326))) +POLYGON M((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude25.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude25.testcase new file mode 100644 index 0000000..0eb8ddf --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude25.testcase @@ -0,0 +1,7 @@ +shiftlongitude - simple polygon, all positive +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGON((185 0, 184 10, 175 10, 176 0, 185 0))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGON((185 0, 184 10, 175 10, 176 0, 185 0))", 4326))) +POLYGON((185 0, 184 10, 175 10, 176 0, 185 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude26.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude26.testcase new file mode 100644 index 0000000..451484d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude26.testcase @@ -0,0 +1,7 @@ +shiftlongitude - polygon with interior, all positive +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGON((185 0, 184 10, 175 10, 176 0, 185 0),(176 2, 181 2, 181 4, 176 4, 176 2))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("POLYGON((185 0, 184 10, 175 10, 176 0, 185 0),(176 2, 181 2, 181 4, 176 4, 176 2))", 4326))) +POLYGON((185 0, 184 10, 175 10, 176 0, 185 0), (176 2, 181 2, 181 4, 176 4, 176 2)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude3.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude3.testcase new file mode 100644 index 0000000..100261c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude3.testcase @@ -0,0 +1,7 @@ +shiftlongitude - bad blob +:memory: #use in-memory database +SELECT ST_Shift_Longitude(zeroblob(100)) +1 # rows (not including the header row) +1 # columns +ST_Shift_Longitude(zeroblob(100)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude4.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude4.testcase new file mode 100644 index 0000000..83bb4b7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude4.testcase @@ -0,0 +1,7 @@ +shiftlongitude - non blob +:memory: #use in-memory database +SELECT ST_Shift_Longitude("hello") +1 # rows (not including the header row) +1 # columns +ST_Shift_Longitude("hello") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude5.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude5.testcase new file mode 100644 index 0000000..fe719f0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude5.testcase @@ -0,0 +1,7 @@ +shiftlongitude - positive longitude linestring +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("LINESTRING(0 0, 1 2, 100 4)", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("LINESTRING(0 0, 1 2, 100 4)", 4326))) +LINESTRING(0 0, 1 2, 100 4) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude6.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude6.testcase new file mode 100644 index 0000000..da9fc15 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude6.testcase @@ -0,0 +1,7 @@ +shiftlongitude - negative longitude linestring +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("LINESTRING(-170 0, -175 2, -179 4)", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("LINESTRING(-170 0, -175 2, -179 4)", 4326))) +LINESTRING(190 0, 185 2, 181 4) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude7.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude7.testcase new file mode 100644 index 0000000..fdad4f6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude7.testcase @@ -0,0 +1,7 @@ +shiftlongitude - negative longitude linestringz +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGZ(-170 0 1, -175 2 2.4, -179 4 3.2)", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGZ(-170 0 1, -175 2 2.4, -179 4 3.2)", 4326))) +LINESTRING Z(190 0 1, 185 2 2.4, 181 4 3.2) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude8.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude8.testcase new file mode 100644 index 0000000..4f2d71f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude8.testcase @@ -0,0 +1,7 @@ +shiftlongitude - positive and negative longitude linestringz +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGZ(-170 0 1, -175 2 2.4, -179 4 3.2, 175.3 5 4.7)", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGZ(-170 0 1, -175 2 2.4, -179 4 3.2, 175.3 5 4.7)", 4326))) +LINESTRING Z(190 0 1, 185 2 2.4, 181 4 3.2, 175.3 5 4.7) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude9.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude9.testcase new file mode 100644 index 0000000..471da5f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/shiftlongitude9.testcase @@ -0,0 +1,7 @@ +shiftlongitude - positive and negative longitude linestringm +:memory: #use in-memory database +SELECT AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGM(-170 0 1, -175 2 2.4, -179 4 3.2, 175.3 5 4.7)", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGM(-170 0 1, -175 2 2.4, -179 4 3.2, 175.3 5 4.7)", 4326))) +LINESTRING M(190 0 1, 185 2 2.4, 181 4 3.2, 175.3 5 4.7) diff --git a/src/spatialite/test/sql_stmt_tests/spatialindex.testcase b/src/spatialite/test/sql_stmt_tests/spatialindex.testcase new file mode 100644 index 0000000..9ff2b84 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/spatialindex.testcase @@ -0,0 +1,8 @@ +VirtualSpatialIndex +sql_stmt_tests/testdb1.sqlite +SELECT ROWID FROM SpatialIndex WHERE f_table_name = 'roads' AND f_geometry_column = 'geom' AND search_frame = BuildMBR(11.215, 42.438, 11.218, 42.439); +1 # rows (not including the header row) +1 # columns +rowid +26 + diff --git a/src/spatialite/test/sql_stmt_tests/srid1.testcase b/src/spatialite/test/sql_stmt_tests/srid1.testcase new file mode 100644 index 0000000..cd2ba6b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/srid1.testcase @@ -0,0 +1,7 @@ +SRID +:memory: #use in-memory database +SELECT SRID(GeomFromText("Point(1 2)", 4326)) +1 # rows (not including the header row) +1 # columns +SRID(GeomFromText("Point(1 2)", 4326)) +4326 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid10.testcase b/src/spatialite/test/sql_stmt_tests/srid10.testcase new file mode 100644 index 0000000..7f60287 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/srid10.testcase @@ -0,0 +1,7 @@ +SetSRID - zeroblob +:memory: #use in-memory database +SELECT SetSRID(zeroblob(100), 4326) +1 # rows (not including the header row) +1 # columns +SetSRID(zeroblob(100), 4326) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid11.testcase b/src/spatialite/test/sql_stmt_tests/srid11.testcase new file mode 100644 index 0000000..99aa9b4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/srid11.testcase @@ -0,0 +1,7 @@ +SetSRID - zeroblob +:memory: #use in-memory database +SELECT SetSRID(zeroblob(0), 4326) +1 # rows (not including the header row) +1 # columns +SetSRID(zeroblob(0), 4326) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid2.testcase b/src/spatialite/test/sql_stmt_tests/srid2.testcase new file mode 100644 index 0000000..b91a54d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/srid2.testcase @@ -0,0 +1,7 @@ +SRID +:memory: #use in-memory database +SELECT SRID(GeomFromText("Point(1 2)")) +1 # rows (not including the header row) +1 # columns +SRID(GeomFromText("Point(1 2)")) +0 diff --git a/src/spatialite/test/sql_stmt_tests/srid3.testcase b/src/spatialite/test/sql_stmt_tests/srid3.testcase new file mode 100644 index 0000000..f053bf9 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/srid3.testcase @@ -0,0 +1,7 @@ +SRID - set SRID +:memory: #use in-memory database +SELECT SRID(SetSRID(GeomFromText("Point(1 2)"), 4326)) +1 # rows (not including the header row) +1 # columns +SRID(SetSRID(GeomFromText("Point(1 2)"), 4326)) +4326 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid4.testcase b/src/spatialite/test/sql_stmt_tests/srid4.testcase new file mode 100644 index 0000000..b46c547 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/srid4.testcase @@ -0,0 +1,7 @@ +SRID - zeroblob +:memory: #use in-memory database +SELECT SRID(zeroblob(100)) +1 # rows (not including the header row) +1 # columns +SRID(zeroblob(100)) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid5.testcase b/src/spatialite/test/sql_stmt_tests/srid5.testcase new file mode 100644 index 0000000..da5db4b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/srid5.testcase @@ -0,0 +1,7 @@ +SRID - non-geometry +:memory: #use in-memory database +SELECT SRID(100) +1 # rows (not including the header row) +1 # columns +SRID(100) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid6.testcase b/src/spatialite/test/sql_stmt_tests/srid6.testcase new file mode 100644 index 0000000..fbac880 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/srid6.testcase @@ -0,0 +1,7 @@ +SetSRID - toxic +:memory: #use in-memory database +SELECT AsText(SetSRID(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 4326)) +1 # rows (not including the header row) +1 # columns +AsText(SetSRID(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 4326)) +POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5)) diff --git a/src/spatialite/test/sql_stmt_tests/srid7.testcase b/src/spatialite/test/sql_stmt_tests/srid7.testcase new file mode 100644 index 0000000..7e8e23e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/srid7.testcase @@ -0,0 +1,7 @@ +SetSRID - non-geometry +:memory: #use in-memory database +SELECT SetSRID(100, 4326) +1 # rows (not including the header row) +1 # columns +SetSRID(100, 4326) +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid8.testcase b/src/spatialite/test/sql_stmt_tests/srid8.testcase new file mode 100644 index 0000000..a612bed --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/srid8.testcase @@ -0,0 +1,7 @@ +SetSRID - invalid srid +:memory: #use in-memory database +SELECT SetSRID(GeomFromText("Point(1 2)"), "four") +1 # rows (not including the header row) +1 # columns +SetSRID(GeomFromText("Point(1 2)"), "four") +(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid9.testcase b/src/spatialite/test/sql_stmt_tests/srid9.testcase new file mode 100644 index 0000000..e0fcb21 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/srid9.testcase @@ -0,0 +1,7 @@ +SRID - toxic +:memory: #use in-memory database +SELECT SRID(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326)) +1 # rows (not including the header row) +1 # columns +SRID(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326)) +4326 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/st_m1.testcase b/src/spatialite/test/sql_stmt_tests/st_m1.testcase new file mode 100644 index 0000000..7f974ab --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_m1.testcase @@ -0,0 +1,7 @@ +ST_M1 +:memory: #use in-memory database +SELECT ST_M(MakePointZM(136, -35, 635.2, 10.2)); +1 # rows (not including the header row) +1 # columns +ST_M(MakePointZM(136, -35, 635.2, 10.2)) +10.2 diff --git a/src/spatialite/test/sql_stmt_tests/st_m2.testcase b/src/spatialite/test/sql_stmt_tests/st_m2.testcase new file mode 100644 index 0000000..fca52a3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_m2.testcase @@ -0,0 +1,8 @@ +ST_M2 +:memory: #use in-memory database +SELECT ST_M(MakePointZM(136, -35, 0.0038723129645, 635.2)); +1 # rows (not including the header row) +1 # columns +ST_M(MakePointZM(136, -35, 0.0038723129645, 635.2)) +635.2 + diff --git a/src/spatialite/test/sql_stmt_tests/st_m3.testcase b/src/spatialite/test/sql_stmt_tests/st_m3.testcase new file mode 100644 index 0000000..3d7a832 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_m3.testcase @@ -0,0 +1,7 @@ +ST_M3 +:memory: #use in-memory database +SELECT ST_M(GeomFromText("POINTM(136 -35 -8.6)")); +1 # rows (not including the header row) +1 # columns +ST_M(GeomFromText("POINTM(136 -35 -8.6)")) +-8.6 diff --git a/src/spatialite/test/sql_stmt_tests/st_m4.testcase b/src/spatialite/test/sql_stmt_tests/st_m4.testcase new file mode 100644 index 0000000..9a189a2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_m4.testcase @@ -0,0 +1,7 @@ +ST_M - text +:memory: #use in-memory database +SELECT M("hello world"); +1 # rows (not including the header row) +1 # columns +M("hello world") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/st_m5.testcase b/src/spatialite/test/sql_stmt_tests/st_m5.testcase new file mode 100644 index 0000000..3acc145 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_m5.testcase @@ -0,0 +1,8 @@ +ST_M5 +:memory: #use in-memory database +SELECT ST_M(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")); +1 # rows (not including the header row) +1 # columns +ST_M(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/st_m6.testcase b/src/spatialite/test/sql_stmt_tests/st_m6.testcase new file mode 100644 index 0000000..e8aaf50 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_m6.testcase @@ -0,0 +1,8 @@ +ST_M6 +:memory: #use in-memory database +SELECT ST_M(zeroblob(10)); +1 # rows (not including the header row) +1 # columns +ST_M(zeroblob(10)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/st_m8.testcase b/src/spatialite/test/sql_stmt_tests/st_m8.testcase new file mode 100644 index 0000000..8b093e0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_m8.testcase @@ -0,0 +1,7 @@ +ST_M8 +:memory: #use in-memory database +SELECT ST_M(MakePointZ(136, -35, 0.0038723129645)); +1 # rows (not including the header row) +1 # columns +ST_M(MakePointZ(136, -35, 0.0038723129645)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/st_x1.testcase b/src/spatialite/test/sql_stmt_tests/st_x1.testcase new file mode 100644 index 0000000..aeec204 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_x1.testcase @@ -0,0 +1,7 @@ +ST_X1 +:memory: #use in-memory database +SELECT ST_X(MakePointZ(-71.1043443253471, 42.3150676015829, 4326)); +1 # rows (not including the header row) +1 # columns +ST_X(MakePointZ(-71.1043443253471, 42.3150676015829, 4326)) +-71.1043443253471 diff --git a/src/spatialite/test/sql_stmt_tests/st_x2.testcase b/src/spatialite/test/sql_stmt_tests/st_x2.testcase new file mode 100644 index 0000000..fc41755 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_x2.testcase @@ -0,0 +1,7 @@ +ST_X2 +:memory: #use in-memory database +SELECT X(MakePoint(-71.1043443253471, 42.3150676015829, 4326)); +1 # rows (not including the header row) +1 # columns +X(MakePoint(-71.1043443253471, 42.3150676015829, 4326)) +-71.1043443253471 diff --git a/src/spatialite/test/sql_stmt_tests/st_x3.testcase b/src/spatialite/test/sql_stmt_tests/st_x3.testcase new file mode 100644 index 0000000..8f2a6e2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_x3.testcase @@ -0,0 +1,7 @@ +ST_X - text +:memory: #use in-memory database +SELECT X("hello world"); +1 # rows (not including the header row) +1 # columns +X("hello world") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/st_x4.testcase b/src/spatialite/test/sql_stmt_tests/st_x4.testcase new file mode 100644 index 0000000..19eeebf --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_x4.testcase @@ -0,0 +1,7 @@ +ST_X4 +:memory: #use in-memory database +SELECT ST_X(GeomFromText("POINTM(136 -35 -8.6)")); +1 # rows (not including the header row) +1 # columns +ST_X(GeomFromText("POINTM(136 -35 -8.6)")) +136.0 diff --git a/src/spatialite/test/sql_stmt_tests/st_x5.testcase b/src/spatialite/test/sql_stmt_tests/st_x5.testcase new file mode 100644 index 0000000..4eaa131 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_x5.testcase @@ -0,0 +1,8 @@ +ST_X5 +:memory: #use in-memory database +SELECT ST_X(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")); +1 # rows (not including the header row) +1 # columns +ST_X(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/st_x6.testcase b/src/spatialite/test/sql_stmt_tests/st_x6.testcase new file mode 100644 index 0000000..32a65b8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_x6.testcase @@ -0,0 +1,8 @@ +ST_X6 +:memory: #use in-memory database +SELECT ST_X(zeroblob(10)); +1 # rows (not including the header row) +1 # columns +ST_X(zeroblob(10)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/st_x7.testcase b/src/spatialite/test/sql_stmt_tests/st_x7.testcase new file mode 100644 index 0000000..9f04276 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_x7.testcase @@ -0,0 +1,7 @@ +ST_X7 +:memory: #use in-memory database +SELECT ST_X(MakePointZ(-71.1043443253471, 42.3150676015829, 0.0038723129645, 4326)); +1 # rows (not including the header row) +1 # columns +ST_X(MakePointZ(-71.1043443253471, 42.3150676015829, 0.0038723129645, 4326)) +-71.1043443253471 diff --git a/src/spatialite/test/sql_stmt_tests/st_x8.testcase b/src/spatialite/test/sql_stmt_tests/st_x8.testcase new file mode 100644 index 0000000..3af0ca3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_x8.testcase @@ -0,0 +1,7 @@ +ST_X8 +:memory: #use in-memory database +SELECT ST_X(MakePointM(-71.1043443253471, 42.3150676015829, 12.6389, 4326)); +1 # rows (not including the header row) +1 # columns +ST_X(MakePointM(-71.1043443253471, 42.3150676015829, 12.6389, 4326)) +-71.1043443253471 diff --git a/src/spatialite/test/sql_stmt_tests/st_x9.testcase b/src/spatialite/test/sql_stmt_tests/st_x9.testcase new file mode 100644 index 0000000..24ac2fd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_x9.testcase @@ -0,0 +1,7 @@ +ST_X9 +:memory: #use in-memory database +SELECT ST_X(MakePointZM(-71.1043443253471, 42.3150676015829, 0.0038723129645, 12.6389, 4326)); +1 # rows (not including the header row) +1 # columns +ST_X(MakePointZM(-71.1043443253471, 42.3150676015829, 0.0038723129645, 12.6389, 4326)) +-71.1043443253471 diff --git a/src/spatialite/test/sql_stmt_tests/st_y1.testcase b/src/spatialite/test/sql_stmt_tests/st_y1.testcase new file mode 100644 index 0000000..12d1e57 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_y1.testcase @@ -0,0 +1,7 @@ +ST_Y1 +:memory: #use in-memory database +SELECT ST_Y(MakePoint(-71.1043443253471, 42.3150676015829, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Y(MakePoint(-71.1043443253471, 42.3150676015829, 4326)) +42.3150676015829 diff --git a/src/spatialite/test/sql_stmt_tests/st_y2.testcase b/src/spatialite/test/sql_stmt_tests/st_y2.testcase new file mode 100644 index 0000000..8f265ff --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_y2.testcase @@ -0,0 +1,7 @@ +ST_Y2 +:memory: #use in-memory database +SELECT Y(MakePoint(-71.1043443253471, 42.3150676015829, 4326)); +1 # rows (not including the header row) +1 # columns +Y(MakePoint(-71.1043443253471, 42.3150676015829, 4326)) +42.3150676015829 diff --git a/src/spatialite/test/sql_stmt_tests/st_y3.testcase b/src/spatialite/test/sql_stmt_tests/st_y3.testcase new file mode 100644 index 0000000..6058e69 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_y3.testcase @@ -0,0 +1,7 @@ +ST_Y - text +:memory: #use in-memory database +SELECT Y("hello world"); +1 # rows (not including the header row) +1 # columns +Y("hello world") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/st_y4.testcase b/src/spatialite/test/sql_stmt_tests/st_y4.testcase new file mode 100644 index 0000000..63bb14d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_y4.testcase @@ -0,0 +1,8 @@ +ST_Y4 +:memory: #use in-memory database +SELECT ST_Y(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")); +1 # rows (not including the header row) +1 # columns +ST_Y(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/st_y5.testcase b/src/spatialite/test/sql_stmt_tests/st_y5.testcase new file mode 100644 index 0000000..eba94e7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_y5.testcase @@ -0,0 +1,8 @@ +ST_Y5 +:memory: #use in-memory database +SELECT ST_Y(zeroblob(10)); +1 # rows (not including the header row) +1 # columns +ST_Y(zeroblob(10)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/st_y7.testcase b/src/spatialite/test/sql_stmt_tests/st_y7.testcase new file mode 100644 index 0000000..439e4db --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_y7.testcase @@ -0,0 +1,7 @@ +ST_Y7 +:memory: #use in-memory database +SELECT ST_Y(MakePointZ(-71.1043443253471, 42.3150676015829, 0.0038723129645, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Y(MakePointZ(-71.1043443253471, 42.3150676015829, 0.0038723129645, 4326)) +42.3150676015829 diff --git a/src/spatialite/test/sql_stmt_tests/st_y8.testcase b/src/spatialite/test/sql_stmt_tests/st_y8.testcase new file mode 100644 index 0000000..dd5f725 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_y8.testcase @@ -0,0 +1,7 @@ +ST_Y8 +:memory: #use in-memory database +SELECT ST_Y(MakePointM(-71.1043443253471, 42.3150676015829, 12.6389, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Y(MakePointM(-71.1043443253471, 42.3150676015829, 12.6389, 4326)) +42.3150676015829 diff --git a/src/spatialite/test/sql_stmt_tests/st_y9.testcase b/src/spatialite/test/sql_stmt_tests/st_y9.testcase new file mode 100644 index 0000000..06bd8a2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_y9.testcase @@ -0,0 +1,7 @@ +ST_Y9 +:memory: #use in-memory database +SELECT ST_Y(MakePointZM(-71.1043443253471, 42.3150676015829, 0.0038723129645, 12.6389, 4326)); +1 # rows (not including the header row) +1 # columns +ST_Y(MakePointZM(-71.1043443253471, 42.3150676015829, 0.0038723129645, 12.6389, 4326)) +42.3150676015829 diff --git a/src/spatialite/test/sql_stmt_tests/st_z1.testcase b/src/spatialite/test/sql_stmt_tests/st_z1.testcase new file mode 100644 index 0000000..4636e3d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_z1.testcase @@ -0,0 +1,7 @@ +ST_Z1 +:memory: #use in-memory database +SELECT ST_Z(MakePointZ(136, -35, 0.0038723129645)); +1 # rows (not including the header row) +1 # columns +ST_Z(MakePointZ(136, -35, 0.0038723129645)) +0.0038723129645 diff --git a/src/spatialite/test/sql_stmt_tests/st_z2.testcase b/src/spatialite/test/sql_stmt_tests/st_z2.testcase new file mode 100644 index 0000000..360fb09 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_z2.testcase @@ -0,0 +1,7 @@ +ST_Z2 +:memory: #use in-memory database +SELECT Z(MakePointZ(-71.1043443253471, 42.3150676015829, 0.0038723129645, 4326)); +1 # rows (not including the header row) +1 # columns +Z(MakePointZ(-71.1043443253471, 42.3150676015829, 0.0038723129645, 4326)) +0.0038723129645 diff --git a/src/spatialite/test/sql_stmt_tests/st_z3.testcase b/src/spatialite/test/sql_stmt_tests/st_z3.testcase new file mode 100644 index 0000000..b5effa6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_z3.testcase @@ -0,0 +1,7 @@ +ST_Z - text +:memory: #use in-memory database +SELECT Z("hello world"); +1 # rows (not including the header row) +1 # columns +Z("hello world") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/st_z4.testcase b/src/spatialite/test/sql_stmt_tests/st_z4.testcase new file mode 100644 index 0000000..3f38a13 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_z4.testcase @@ -0,0 +1,7 @@ +ST_Z4 +:memory: #use in-memory database +SELECT ST_Z(GeomFromText("POINTZM(136 -35 635.2 10.2)")); +1 # rows (not including the header row) +1 # columns +ST_Z(GeomFromText("POINTZM(136 -35 635.2 10.2)")) +635.2 diff --git a/src/spatialite/test/sql_stmt_tests/st_z5.testcase b/src/spatialite/test/sql_stmt_tests/st_z5.testcase new file mode 100644 index 0000000..fdb5b85 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_z5.testcase @@ -0,0 +1,8 @@ +ST_Z5 +:memory: #use in-memory database +SELECT ST_Z(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")); +1 # rows (not including the header row) +1 # columns +ST_Z(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/st_z6.testcase b/src/spatialite/test/sql_stmt_tests/st_z6.testcase new file mode 100644 index 0000000..f56d832 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_z6.testcase @@ -0,0 +1,8 @@ +ST_Z6 +:memory: #use in-memory database +SELECT ST_Z(zeroblob(10)); +1 # rows (not including the header row) +1 # columns +ST_Z(zeroblob(10)) +(NULL) + diff --git a/src/spatialite/test/sql_stmt_tests/st_z7.testcase b/src/spatialite/test/sql_stmt_tests/st_z7.testcase new file mode 100644 index 0000000..94e8dab --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_z7.testcase @@ -0,0 +1,7 @@ +ST_Z7 +:memory: #use in-memory database +SELECT ST_Z(MakePoint(136, -35)); +1 # rows (not including the header row) +1 # columns +ST_Z(MakePoint(136, -35)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/st_z8.testcase b/src/spatialite/test/sql_stmt_tests/st_z8.testcase new file mode 100644 index 0000000..88dc3e1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_z8.testcase @@ -0,0 +1,7 @@ +ST_Z8 +:memory: #use in-memory database +SELECT ST_Z(MakePointM(136, -35, 635.2)); +1 # rows (not including the header row) +1 # columns +ST_Z(MakePointM(136, -35, 635.2)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/st_z9.testcase b/src/spatialite/test/sql_stmt_tests/st_z9.testcase new file mode 100644 index 0000000..8953ebc --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/st_z9.testcase @@ -0,0 +1,7 @@ +ST_Z2 +:memory: #use in-memory database +SELECT Z(MakePointZ(-71, 42, 17, 4326)); +1 # rows (not including the header row) +1 # columns +Z(MakePointZ(-71, 42, 17, 4326)) +17.0 diff --git a/src/spatialite/test/sql_stmt_tests/startpoint1.testcase b/src/spatialite/test/sql_stmt_tests/startpoint1.testcase new file mode 100644 index 0000000..b15eed2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/startpoint1.testcase @@ -0,0 +1,7 @@ +startpoint - regular LINESTRING +:memory: #use in-memory database +SELECT AsText(StartPoint(GeomFromText("LINESTRING(4 0, 4 4, 8 4)"))); +1 # rows (not including the header row) +1 # columns +AsText(StartPoint(GeomFromText("LINESTRING(4 0, 4 4, 8 4)"))) +POINT(4 0) diff --git a/src/spatialite/test/sql_stmt_tests/startpoint2.testcase b/src/spatialite/test/sql_stmt_tests/startpoint2.testcase new file mode 100644 index 0000000..a9a6aad --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/startpoint2.testcase @@ -0,0 +1,7 @@ +startpoint - bad blob (error) +:memory: #use in-memory database +SELECT StartPoint(zeroblob(10)); +1 # rows (not including the header row) +1 # columns +StartPoint(zeroblob(10)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/startpoint3.testcase b/src/spatialite/test/sql_stmt_tests/startpoint3.testcase new file mode 100644 index 0000000..ef172b3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/startpoint3.testcase @@ -0,0 +1,7 @@ +startpoint - text input (error) +:memory: #use in-memory database +SELECT StartPoint("hello world"); +1 # rows (not including the header row) +1 # columns +StartPoint("hello world") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords1.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords1.testcase new file mode 100644 index 0000000..717dcae --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/swapcoords1.testcase @@ -0,0 +1,7 @@ +swapcoords1 +:memory: #use in-memory database +SELECT AsText(SwapCoords(GeomFromText("POINT(1 2)"))); +1 # rows (not including the header row) +1 # columns +AsText(SwapCoords(GeomFromText("POINT(1 2)"))) +POINT(2 1) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords10.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords10.testcase new file mode 100644 index 0000000..6c6f678 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/swapcoords10.testcase @@ -0,0 +1,7 @@ +swapcoords10 +:memory: #use in-memory database +SELECT AsText(SwapCoords(GeomFromText("POLYGONM((10 10 1, 20 10 2, 20 20 3, 10 20 4, 10 10 1), (14 14 1, 16 14 2, 16 16 3, 14 16 4, 14 14 1))"))); +1 # rows (not including the header row) +1 # columns +AsText(SwapCoords(GeomFromText("POLYGONM((10 10 1, 20 10 2, 20 20 3, 10 20 4, 10 10 1), (14 14 1, 16 14 2, 16 16 3, 14 16 4, 14 14 1))"))); +POLYGON M((10 10 1, 10 20 2, 20 20 3, 20 10 4, 10 10 1), (14 14 1, 14 16 2, 16 16 3, 16 14 4, 14 14 1)) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords11.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords11.testcase new file mode 100644 index 0000000..f123962 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/swapcoords11.testcase @@ -0,0 +1,7 @@ +swapcoords11 +:memory: #use in-memory database +SELECT AsText(SwapCoords(GeomFromText("POLYGONZM((10 10 100 1, 20 10 101 2, 20 20 102 3, 10 20 103 4, 10 10 100 1), (14 14 100 1, 16 14 101 2, 16 16 102 3, 14 16 103 4, 14 14 100 1))"))); +1 # rows (not including the header row) +1 # columns +AsText(SwapCoords(GeomFromText("POLYGONZM((10 10 100 1, 20 10 101 2, 20 20 102 3, 10 20 103 4, 10 10 100 1), (14 14 100 1, 16 14 101 2, 16 16 102 3, 14 16 103 4, 14 14 100 1))"))); +POLYGON ZM((10 10 100 1, 10 20 101 2, 20 20 102 3, 20 10 103 4, 10 10 100 1), (14 14 100 1, 14 16 101 2, 16 16 102 3, 16 14 103 4, 14 14 100 1)) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords2.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords2.testcase new file mode 100644 index 0000000..8614286 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/swapcoords2.testcase @@ -0,0 +1,7 @@ +swapcoords2 +:memory: #use in-memory database +SELECT SwapCoords("hello"); +1 # rows (not including the header row) +1 # columns +SwapCoords("hello"); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords3.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords3.testcase new file mode 100644 index 0000000..b12a033 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/swapcoords3.testcase @@ -0,0 +1,7 @@ +swapcoords3 +:memory: #use in-memory database +SELECT SwapCoords(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +SwapCoords(zeroblob(4)); +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords4.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords4.testcase new file mode 100644 index 0000000..86e9a8c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/swapcoords4.testcase @@ -0,0 +1,7 @@ +swapcoords4 +:memory: #use in-memory database +SELECT AsText(SwapCoords(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -36)"))); +1 # rows (not including the header row) +1 # columns +AsText(SwapCoords(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -36)"))); +LINESTRING(-35 136, -34.5 135.2, -35.2 136, -36 136) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords5.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords5.testcase new file mode 100644 index 0000000..bbd9c7e --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/swapcoords5.testcase @@ -0,0 +1,7 @@ +swapcoords5 +:memory: #use in-memory database +SELECT AsText(SwapCoords(GeomFromText("LINESTRINGZ(136 -35 100, 135.2 -34.5 101, 136 -35.2 102, 136 -36 103)"))); +1 # rows (not including the header row) +1 # columns +AsText(SwapCoords(GeomFromText("LINESTRINGZ(136 -35 100, 135.2 -34.5 101, 136 -35.2 102, 136 -36 103)"))); +LINESTRING Z(-35 136 100, -34.5 135.2 101, -35.2 136 102, -36 136 103) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords6.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords6.testcase new file mode 100644 index 0000000..7801c70 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/swapcoords6.testcase @@ -0,0 +1,7 @@ +swapcoords6 +:memory: #use in-memory database +SELECT AsText(SwapCoords(GeomFromText("LINESTRINGM(136 -35 1, 135.2 -34.5 2, 136 -35.2 3, 136 -36 4)"))); +1 # rows (not including the header row) +1 # columns +AsText(SwapCoords(GeomFromText("LINESTRINGM(136 -35 1, 135.2 -34.5 2, 136 -35.2 3, 136 -36 4)"))); +LINESTRING M(-35 136 1, -34.5 135.2 2, -35.2 136 3, -36 136 4) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords7.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords7.testcase new file mode 100644 index 0000000..207ea35 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/swapcoords7.testcase @@ -0,0 +1,7 @@ +swapcoords7 +:memory: #use in-memory database +SELECT AsText(SwapCoords(GeomFromText("LINESTRINGZM(136 -35 100 1, 135.2 -34.5 101 2, 136 -35.2 102 3, 136 -36 103 4)"))); +1 # rows (not including the header row) +1 # columns +AsText(SwapCoords(GeomFromText("LINESTRINGZM(136 -35 100 1, 135.2 -34.5 101 2, 136 -35.2 102 3, 136 -36 103 4)"))); +LINESTRING ZM(-35 136 100 1, -34.5 135.2 101 2, -35.2 136 102 3, -36 136 103 4) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords8.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords8.testcase new file mode 100644 index 0000000..41ec4d8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/swapcoords8.testcase @@ -0,0 +1,7 @@ +swapcoords8 +:memory: #use in-memory database +SELECT AsText(SwapCoords(GeomFromText("POLYGON((10 10, 20 10, 20 20, 10 20, 10 10), (14 14, 16 14, 16 16, 14 16, 14 14))"))); +1 # rows (not including the header row) +1 # columns +AsText(SwapCoords(GeomFromText("POLYGON((10 10, 20 10, 20 20, 10 20, 10 10), (14 14, 16 14, 16 16, 14 16, 14 14))"))); +POLYGON((10 10, 10 20, 20 20, 20 10, 10 10), (14 14, 14 16, 16 16, 16 14, 14 14)) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords9.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords9.testcase new file mode 100644 index 0000000..3734d77 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/swapcoords9.testcase @@ -0,0 +1,7 @@ +swapcoords9 +:memory: #use in-memory database +SELECT AsText(SwapCoords(GeomFromText("POLYGONZ((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100), (14 14 100, 16 14 101, 16 16 102, 14 16 103, 14 14 100))"))); +1 # rows (not including the header row) +1 # columns +AsText(SwapCoords(GeomFromText("POLYGONZ((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100), (14 14 100, 16 14 101, 16 16 102, 14 16 103, 14 14 100))"))); +POLYGON Z((10 10 100, 10 20 101, 20 20 102, 20 10 103, 10 10 100), (14 14 100, 14 16 101, 16 16 102, 16 14 103, 14 14 100)) diff --git a/src/spatialite/test/sql_stmt_tests/test.webp b/src/spatialite/test/sql_stmt_tests/test.webp new file mode 100644 index 0000000000000000000000000000000000000000..1ed03ca485fad21dc67a1ff4cd5573b9c9598a66 GIT binary patch literal 4928 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 literal 0 HcmV?d00001 diff --git a/src/spatialite/test/sql_stmt_tests/testFDO.sqlite b/src/spatialite/test/sql_stmt_tests/testFDO.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..6ea73eb51aa22d1dcd29d2450466b66d7c73d587 GIT binary patch literal 129024 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 BzAOL$ literal 0 HcmV?d00001 diff --git a/src/spatialite/test/sql_stmt_tests/testFGF.sqlite b/src/spatialite/test/sql_stmt_tests/testFGF.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..5deeb691501616023d39657664e2dd8dab1f1d75 GIT binary patch literal 229376 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 I+AIbB7b921ng9R* literal 0 HcmV?d00001 diff --git a/src/spatialite/test/sql_stmt_tests/testdb1.sqlite b/src/spatialite/test/sql_stmt_tests/testdb1.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..4e1c1dad7e9a25d6ee13564deb6a1cbfd6191782 GIT binary patch literal 4213760 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≷-nU{zM(fdv*hXL>L?7QtVCI$LFhrmQ@M% zX+oi$vEN6thq|X$V<3V9g4A17>HkB7uIl1{H*g$WwYOt87zqTrt<#++Cb4Orz@S@O z$oAK=QGdegs}Sg~@DXh2BzIatf1H!oPxl9B%z7XnPpgFd?A#IxP)ui_gLOi^gyjrG zbQJ0)hCVK3YIb8Y5ZTVg8zpwk3tDW?wm(K_nHysFS0|M`UXn3!AoqB1u)Qj z4+;#-Mb^OtpIs7RH$UwY(W?`AQAQS3$@-w%ZsX zmUZf-=V9QD(7k@_&$E|*Z9fqUetYO| zfE_`vLi^B*MLkjfnsrVmO;PaG&T>;bwz)-FF15P+8x;Rns^Ymei(i~84${?bAF&|hxQx6QG-px?;&zfv{-@53Ai*OF>8 zoyK0IFSbr)Oos4YyS}hT)miGo9?mTuF{m}_UyDw#56o8yOGhQxCk%ylhQpzW@qeXi z{$Cfz!R5Lg(~T6uVmF-rBV4@{#v)42k=#iTaydrGu)) z-6HXS#|)!z%l1av=N|PErZ>_)DXCX5lmoNYM-oo9;JO{Oi?M<)vJC%Msha<{k>lWU z-;Qa4cStp60vy1+ITAS9}SBtX_QtXvbU z-1=WN|L+9H!PVq8bHErQI-qlQ7<&N696F%jNUK!`#KLqv@eP6tyr3D-*_lm=@%#Kp5RRi{ELxGpA6KK7`QUhp`QEz0^0_2>J>-=A+Sn@*r|J4Bc48I5ZlTPFJ@MC;1N@y2kAu8M;Y!EgJ{lYE6ZNhG0uaFjU!V%#`!i?}z;nl*N@FwBy!Xv_a zg%1cH6Fwz;R`{auHQ_tL_k|~gUkJYyo)Z2dt`biZ&lWEfFBRLwwPHw&h}VhF7dMJG ziv!}V;tRzQ@lJ8Scu>4YoEBdqzFd4zG{m=v?-1WDzEAv+_;K+u@$=%B#BYe-6`v4) zBK}hRz4+(mYPZ!h#*M(YI%Yf{`j;5%p+9ci1pTbh3H=FU1N1L7APTekWd`_SSHIkV zjEt*aVQhl_l|~QruQE16|7v3k^sg~)hW%zsa~2`ZpUpp?{0<0_Yzyc0vDE<2LBuX50?_+l?1O z|F98<{vF00(7)42K>sddH}rpF3`767MiTmW8!&}d|D7=k{iDWS=-*?cpntD%C-i@B z?1TP&#u)VfV2nfmej^S22aF8#A2jwu{~-e^P^|v2k%j&v#su^qHFD5@%$S7!82V2cN1*?-aX0jj8TUZ{FUGylf5x~E`hPXZ&e-ZTG zp9hZZ>L1KM6Z$9SFNXfV<}ZQ%hx3<0|K$8-(EoV;SE{jcV) zg#I`4S3&>V`KzJ-{rpYEXF2B|O4IJ$-GN*t&q8>ON$L2_;e{e%gfxzeXp{;=< znRGIs#Ci$wU@`}_0?IkxyO$_}@?Af4>8>4;oW@v z+YUxWS`YtpzV5}tf5f8v)_{Kwj0Cuw<(Noq>^;|vX2eANH@~Ml&f%_D$MQ+DG0VGav(M959zv}G(#z1{DVCk3v_6bCp_)Y>q5X~#<9!3l><}v>-QZ@g72gkwHz;^6P z;}F7a_jK2ZZmekzbqx&+Mq>~gxG6a{no6VtraLzPwf9sJR4g!qOd( zSBXiyu-Y0lT(KtO%@w^6(~zq(nIGAoJ21U<`_RVz;l14zAHc>k9#) z9W9oE?3{E&Po#8RhouNPsWp(JLred?NjFJ70g0f%j4jR4F>j)-9G#^F{ynV3;&KM^ z#j{iUM~-A+3Au^f#E9PA<6$!96yDTdnfsU{y@J8Rl+5w2JRoFM&JmNOu>|%Apd8Fg z&5Fh2!ukK7RutHm!#3CR>PJ!VoOv4CCqBBdZyksj4J6OT?BOhQ;^^9(0~n5Wt)Cj- z?-4v2hz1lW^e5~oLJ9;AfsBD_U{Vs0q6u0kLXzgsn9s9o{csve3TE=h$EMTq-Y8_j zmH+u?`Bl6_Te6skl|_sBI3wigoWcWcqAMNeh>lny8RLo$(kX6V&yFE_`+LiGOzxe> zTFF#9NEGuX0+lG*@K%VKJM!*$Sl8ID-CmHdO;yVOVRHjrkVn>HZUK+5A&(r#`?~<- z?Uer-@_#~CE3nJW^#)%4(5p`nS(16?nrG2DK4BxZoZqXZJo$YZh>Kw4f%7U-5b$%5 z<4X|)bxjXeOaEP)W--pO{Tr138?P__SK{9VeM$oUA7klKSU(T`bJ+TsK5yAfr_U<808Z1= zq^<+`{0x}}k459qd^s7-B%!!S%jg`xBomE71`F825P%uz-!V9}WpDS=LIE*1XEBC0 zKL^mwbId6`_kb`Xa}dWtAUw((<8lKyEBrZ}61PXdb<$$-gmC^Z6lTKS=&g9+tDiv0 zkea`VN`@!AlEIl~>v7KE)tZ>sd-aUn8Bm87%peQQ2A~?dMi}(_YK|~)-ntY9jEZi{ zhJe6K3}a+VESO*)se@M`LCzg@V?pO6HuLG!~10wuP538;;!eCC~td|dpM1O9Ut;;9%N48 z;vblkIjBAGFP#4ittMb!!d6VY`Y99&JLiX}YJbWS3aAy=We??Ns@VPUc!ad$q0@Yj zcg36ki}u0?<>o!)2fKlf76q%)xuM=q(mq}RHSO_z7%2(bUJ?-YVnE6TzlZUdQ+VL_ za3pgEM-q4#l{vv>322#Q8m5>yhuAX$e)hj`{%;WYf11Vr(_H*JO=ORC-)Z=FK8(b_ z#J{O~SRvC&{0rp&V*VdAqJq7?t$1rmA<*9mrF@uN`cex0ax(yaw9JEkPi)3A1sW9f z6HndaKY$DI__%h^uWwyCCc6OaYqKr@&#(BOaQ+{(e1kpct=Lrxp=7vbeiwBLp7E0m zPF3oa42_Ta)gug?_bi1$D^huvI2o|)vQgrPNKY$=W%o`oR;6M0Q)!lw^wEI4U1bpWKKJMl-#;N8<1Kb?Q zoWhL;xLK1qgYOM6hXm;V+sS~tyL+5%0QYqFY#G|VW5Yh||EHuBve&Q`2TEZ?|84VF zwRN%r`kk86qurbD_16i1=Tk`dcOd+qckw?v8L$fef2t_3Kd-jAaOn&p!R~x!pPAhI zvU|oK87EaYNk~1prz6gvRHt*bU+$@B>4uAl}|RDc!*m> zIV~^+Wk)E8yp=}2H)4yO@*(Aj1NqI!`W!5RFf%?{?f{%lx+?=xP~Vb_L7`NPwETsl zq9iBvCKV;kV|Y2{$&^lu1zKB8WZpzwx&L*g{KDUx(b8T;j%>gj#L4?hv-5;5WpDBf z^CftQ9qcz*iTAgO#gp~r|9x9gU|;6j+(o4o1o3^(^qyWz!x1lEmwh-tktLWXD97KC zMTD7>AEveU;QB3&*510=*gF~3HE8h-1&=;0z9C!8t^x8s3y}tS?Mf-_ifJ%pT2;q{!?tcvPr1-^Z2XZ zj0^5E-C$@tlX0XasCCdhC!hoHFP#6^#{IuaXA|5G7OpVY1b-HxvSoNX(a@=zKx6k! zWFLmk9$m!Z;b>~6I53@HXAYt8z*_PXItkfvJHFDkJbk7^hQE_v`BvSCEhB&@OA8R%Zm6}Me=0$5qIsYfsqOQy7^Ay+`oCf@ z0Aqs8cZlkL;rzcpQWV%bW}91IItQgf==5f)%}@J7jWprrN(C!^zc!sBro1HvXclMn z9D=|^0l7aZ3ZjvymWn50dPYxZnM@oCU^&wg6=DD_5Cse-Io3bnE9Mv;_9?qDN4e~O ztY6_AVNVJ8+5dw1f2sltjQ%hIq>#&P|P4 zDLV>I(2dcH+pvY;R15B}-R)Zf?AEF1_3{kI!F5FE{UdxxR^qb5qlJ zxoj?r7t?wZ#5JdNL`m}};*6I8uO*;ri0FEAb`Ji-c{#HKU=Y|QF9YvRg1e>Q#y`SH ze|{3CMF)<~f&tYxmCLeizP!mlFujs+p_kVwFv%X{%m^Y9AqOr06YO*WOd5}k&&=-6 zjpPrESjWJO0b4fU5(4a3i0XfV{6B*Dh!%@#Q9YK_$YyIoXAsLo%36#@Gzu_u!CZLr z>j#F`la`w<+)Kll@p&7h4L9Ur-Pqj7(8CksM`v>*n?Z_gk$0`H-T(-hta(Z|Qur6=qLkv!P#d$qbASluZ+z;|dUK z!0a8O#bIjS@&ugnuW|7J`_`n~YpJ17*DQcbZF9T;U@1n1)F+3SuMpM$!ufxljQ>?E z{(reL{$thf4^hAt;XfwvzdZ5JhWDC>|CF5!SSA0rlktB6i~nD#jQ@BQ{F5j_i|`K} zyQSaLX;DA{{qOSsn}~lq8E_fn|3Vi3uc(ZFbEOd`mB(rSlb>6J|AfT+y57{`2V%a_)k^A zKUoc|Mfisl9*O^Di2r1(;(saO{J&1d|0OK`f4wsP)79|by7*sO;(uA%|H+oc|Ah1Z zIvM|$viN^xW&CHV;6K&6_#Z3)D)s*|)c+|qd8di?zhM4fNZFu}eJNWpUb>6`adV-6 z9t-MzqcRY+C?e6ZC_uv9I>}1ngXLJ6{$OOj9@qSZY$a>vK4s?bLkBRjHDSVDgXMW8 zVq1vVrS<>wup2YS?#&3qb%9w%WKMDBMCGT($HphgO2W(`y!?O^Yah7MkW6-FzD02U zKP8a=hxtFRRTS9UaGTp#x}1oWp~6LG{m*Z5#LCn-Bo1aP6zj$uazfK08Anq=$UbKM zeI4?XlMNFe?5#@q(RmhstU99IEXIJhR{f9s$b5w;{sr<65&y4H6xiEgo0}+IK>)v} zaLMUen*9G;RRQ01iYt3YSWPk3!G$|?PWG#~nL>Bh+h9&lc#lCZ4 zL0;)lG)fDEmt6PXZ2YIFIa?S0h4cTOQxw?ScAMK(dI1p%gJ1>hqe9_T{zAd83fO4^ zM43g#T4Mr``;;;uSQ*faz8@m^ckvek-sb85v~d34Zz>Ax?X%4tC|yYaKMYnto&x^= zRR+9}3E=vx1ZMcxWC9S_OZ`8UgL<7{vENSm-^FQ5!hikxA6i60VbbnFD5R^B|MQ26 z0((bnbDK(6p)IiD^foFQUhOX${A&N5wm{6;yf@>h{%=YkKvw?;FA3Vk3Lu-I3oEg9jn;__#07TwqzC$qnpBBjfBdE8*WzDO59-%zVZXqs~AzOqD=}a0Bc>>$% zi1*Q%on9-bGM(@vN^|Ehw6~WN??Fzy?;P%$o}D_DJJIEIqodJeG?R>Kx|Y%TA$7V) zh%==A{KKaf(}+H!DylA&3S{Yt=;r#4q4R&?UsYh2n|uTE4Yc|VoI1O74KcCz7LG3r z()iY5H51#^i8Wi=&}{GPIRAf#qQGAJR=lJ1Li7hV&mW>U`t}Ie#HaQCjpd%abQ0e*MCfx!3#60%05{JuikqAI zN4SwWifj72*_1h>5vIT89rW$ov4QP~9*e`;Z&l;}1oJeNHs-!{55l-6zvq|Yn5)?V zsI&lQ8K|;HU|l@|+r(tLg^O9D)Y$c9QgHoM6$`y{|eduTiYVtC_ zA!u44A@|f-rEAgtKd~@CP3qTrLD*-7q@60UX3HAv|8JuGpH>vuYuSqHO4p&R*gSuf z-sbDQx9LD2cJ}q$Vq9ZdfhVDc2aW$Ykr!x~Wc;H4upk@?5?mqy&LBZZYtgNS2@~0* zc&q^vcTJrK@UR^tIeg>`bBt5EShYSeH>WaZaIAk|VCE2)s4>}^bBHZ)tkuD|riDQM zFTs4RIEz3=vKG|{;ntSxy|HwJEJyR*;=`ru(b7G%fJ;aIw!q~)mM$0vZ0WFN>5}W18(i)` zPMufkrcYOR+_eASQ2lb6-_v;nsdZIiU&H0TP5#*Q>Za2U*)}P!NuHks!+LEi?QJN& zmNWiA&iFUg-u5s*W7Bf&Z3irnKbcdw=C_-1nKPPierE*I@7qGwTH=TNUxyg5O#c?T z1D14`LL%4*Uz@lC9VtG7^9}^k`0JJ<82^hZ3hW|V@!rx6XbtV0KS7PJ=c=10=As*p zRzD!!<4&<-PV|G-m5M|;*#KacB*R{W3H*%1HxKHC3V z6$SPnwqj4|CFma{=J!zl;CHIuzPTuu(?3W>^zs_sF*7RwoPb0*R!Y4G60I;j0xi?B zTmZRnS4aB;gw+IW3${xq*XVb1C-bd54?xQ>hXif^3sx4{j<`Rb+Q8nAOM8D=+xu;c z!{F?D!G!!E6tUoUNc&&#MajeD8)(KGD9)5_#QFcx1x&(!vw#8ZYyVfWqrv|FA=>|O zMS)#(D{d&=gf{-RdF;{qyVY;eTzJ!I<0m3bOuZ0YYPBDqO z8nkwgE?h=0_j>}D^XC6nx{i4RaJiqHy0COJ+W$|R{XgDP{c@Hv z^j_61M$1nJ1`S;9$K;QR`oC;s>r8WeT9RkQ*r9bFMCDs#bj$UzJKE@W^FL!8^Nnsm zAOlV26t2TdB=5$fj005ECDZ5fR|?qaEFSIp!@@< z^A&66Q==Tg_+Ju|0Bbq1cu#39F;cb_w#`pdo9OpBMoNAnKb75|XV>L(1^_d(^*#vl z5n65)H)s554H6@i9P^UV1c?C>6C|U><55@{R8PayKdD5HMdRscG(vh-)>4Bk)Jw$m zEKg-3)fO>@DHn9&Kszzavf7g0ki%eJYAH1y0=%j99@LM zFZc&d!`KKz`RPCoL2nPZ+%MqiZegG952{_x^K{j&V@`v^<^H#LtP~-a8z~%JxPiXR zw^g`YKQuO*%1-z_9~4fe>@-?p&y?MJFk9eq|3g^4+;bO9Xm<-EINl8Ywb<~ce@AI{ zcd*&*0Rdy(@=b7rVL3~L?X$x*$K4FfT%@(;xL`S6)3uNNddt$m{T3^WffjlNPVp|K zL$K1JO{)JpRBkNYS7=r>AlO!A;FB(8&aE==n;3YLP4_#!>87U^jZw{f{f|zD9iU=P z;p%@k12bo|R{sl@<1|(Op95FBEfi8hq0p+(>d=j$MCk6&Q0Rfsc<5N@Wat&4#n4+q z?+JZ0^qJ6?L*EYlL|vg?tX`}3s2TMhby$5!J*+;a7S&g(uUFruzF+;g`g!%M>i5*2 zhtCdQ9=<*t4flpOhIfVchmVGz3eSgM6@D)Kj_`-VpA3H?{EhGroBF8yi=B6ddYO8D ziF#TkBn(OzNGwuf5sBAO;x$OTmJ+W;;&qgG9TKmn#OslG10~*o#BWpLw~=@wCEkd{ zbCh@vi8oQ=O-TF>C4L8qH&f!xNc=7(eiwe;v-1>872Mx z6(#-(iBD4ElSuqECH@+TPf_AiNc;^Y{sxIpQ{vM|e1;OALE^KN_$(5CONqZl;&YVv z91@?W1daCD;%UU@5SFU3e;a(!WJ z{%I;a-pLD0PEO`VXU0coXS_jBn5%cX7UhM$ph+n-@+WBkWF=qMbZXfFNkKN4IrHzB z`NWw>Euq803lZ}BTIL|dX8y}hB;`x6@};Sh{=j4`_c4wE*ZUxR$sEOVI6Mr?oWXH8 zC?7Kix#s^J+|4=6p8t0+z0dr=VEs?+sI#W~Nfv_h~ z)ABt3*1qk1n+J9bY~S0BNVXwbVReo~v^51kE+tR&zpC6y*8jTI^-&daZn%^n_CR0Z zveVe<=a0Phz`EQ-_IP$GhsMCn;oQ`yrRig!s?E8@6jUjYl@zQEEQ3S6QM$Nz##H&Z z77A*6X!aTG;y%`0N(J9i1;1k|J2`zUH#MCb*$j-5oyku@wu}Q_JpCJEOK5ot*Ueqb zcTSIHCvqbPvZLf`P+&n;w9iz`&qG#ZzQm1t$PnUY{|M9qoC=lV1Xepwp1E)fHM8I4 zg;jsvtq$w4wjp;TjQ0PeqQKtxt+=X`Bo8-Kh|OP5AMV}WhqKVgBsDBqbXX+{(J1&D z#BQlciip}Nu6vgPC0KzH*o=f_F-8E#^hj&W5jdP_tJYr@u9oJsd!^JFd>$VC`<- zsMPT-)$#Q&IIasUI35F5WAwH&Izem!vf#Mui@^3A8=slopBu>^7_p97n`W=((*MY_ z%#{Sg4Vpm0G2;JWMS;CBTk)#Wtpwzo3Tx)qQ;@&UALKNh*AvT#L77Imj6u&t5=?P0 zVn5oeLpGvi+{djV;UultYB1vIT}!aH6zunA4?monni+x6*n#}i;p_zYX?%11rmr6 z{|QBbU3e?5FWp8Uy{8acIF~~D{Z$~%SoO{p04+eaXe`e%=_$IUP2b)&{j!C>mPw{z z8nG_?3nUyP{@XSFcRP_XcKq)H{!(UFuGaV;Oartk{zq)X4Z>F9ER~|NE25AZ9ED(O7;ZEH^j)N1!cjh4!`;ItTkpjQBHrLS%g|KQ%V)I};d#`F<-p;OY|TNH=Q2B%t#?r4i71MnH_U z#d#jRo4*+2oo56v2e|zICCvW`WEdj;A5j$88@m-RF5QWiz%BDHp&JqBCk-qiA%g(9 z97(v1YN>c4rf2komdV6pdYY3uo6&Tb%jPB3##0I4@_ju!w+!ys+ue*LAORWR<}XIQ z*Q)=K8JVvTod45>^Z&*b1@?w+#Y;+kmioVms{cQ&jA1eL?|#*GP!CP{B+ch0S>5SO zItF7MQ-Pur22Ny4_5b`-|89O{a9b<%bv=`Wxo(oe%6yL~{)O}ZUZE(kx5G9!QM#Lm z3CI>WeTa&Qk9ftz;Qs7ES6gu=QV2z4Rw)twUv~X94KjhsVgFPtnWFL`V=f+!^;&g^ z2$Aex=B}mZ-+7wf!&VF^Ie`G+Hs%l>{^P)eYzdRg|F>!g9d%Hm_!rLq+o3412elP% zEcFu%?hiqU&unrHO$XizFH?*`E zMFV*Nsqvo|8sEiujGU-T|JNV?*M;-{?o<@m>)49Dr2zus;X-bH69w^~R|0W;dfxR) zD;e#VStbM z$rYb?e4a}-biQ|@Dq za{2$rlbj=}=Kt%$`G0#A1@?fq;&r9^vFzMj&}H`(bJORNRdC!+)ssu~BQIl)m#BWC)=1LI55nV>B^G?|XQUIe}*axU2-1{zvv? zzC<+sFP#5Zd;Q-aLGK>$`my!jUsge{zjF7y-=%<{~lKq*qgi+L#2&q17zmUq_M+KRFEP*ZocO)RTdwasBe~^ zqu*CUQ~d@lK_Q*~&UE@c+*M5uc$khkfv5bd_W!Cs|1Tz-|Cdn|*lXH~{iRK41MHd~ zq3HdqD(J1p2JpO3NATZn+Gi*Eku1M>Lpyvjn3l?4D*v9f9wuEn=pC7V)c$At2ny=| zm~j5zFDVM_E#KzyrF)4?87$m%dX~zRPjY0+bPVN{00ILhOpc{-2I__Bp0Xi@U08GVzn&$$zd5t-Nr}`-iGDo>we`HL~5q9Vw z`IT205rd)%=zP?-dvJJf_wMeVfxh7#7P+UpXUov`9UJ!T!}_1w6$SQMx8hx;%>=Hy z3j5}FQn>zgWw=(b0BT1q4ddB~{V6lEU#Ias`}Z|12qc>6@5HmT0hXf;&>Fx)^;1+J z-#@KK^(YN-V|)Oj1H9!1V#4`AizkHR0Q6qW3$}{hyKsdx7ZB* zFXI3m8V3*&2X0CcyL61aR{vgVnk)uV)f^D#7*`af4n|{|o2;-JvM3*S;0+C~YN} zA1Lgc$7;P#b1Q~O7bWT&zd6S;{IX#4BoM&=Y= z+h4+_%t4%h0pVWe7`OK?Q2A%Fx{v)YkpD+8k3g#lVwgii7fZ7u?&3@G347UPz!3%8 zwR89;3A|u|7ub4Q&l5<-Gr9&AHwU$LL=Js;TC{J4?zzsnKyqH~3c2PpX#5Wr|Abv` z@(sv0(CRmEN-1q4CiTw3(S?5MMt`P~No{GydQ59r|Fa9@|63IW_8_)mPiZ@P1pQ`e z;Aeeqe>guobI^O+S|sI)*qI(dG?H|!5llWHYx>wJKV^Tw=?(-xn@8*tdi&BI3DzE| zv47VRtqwP0N={zu%+gv=>iM}RdJ>Tm-Dya2cc*TfLW|0S4r+yDN6q6vvwR7=*8 zEnkz>Ptj$`Hi@!eQPwV2e`ny&Zo-jFF>rTB<@``6kcAtB=B@8Lr2Svtdy{9$H_(tb zP#iA}qy4{c0sCbBZ6yQR(vkHT(qR8zkM_T=D6ord#f_yM*qLiP(J6q!A;r8 z>Fl&m)IXN-vGHT+NQ!IY!v~H@{8)^v_i0W6Kz>idSN3#1jWkArHAb3h@_RUsQRrNg z-@}v4DLj+k!>r61JP)8^|G)az|BMUd{}ark{qLA$^E`nEZqP{=wsQQxf$o44dzP@1 z7z`GJZQ>AgB09C0rh{st>WRU*pmz`#$k7+m%k>>4?f?4Tn>mPrHl|BKQ7f03fV?za_pm+nK0|Ioq;YVrS_?=A78 z`f$aBWo3~6%XvPr6gL4V+Uu#jbeJGk(hpijXnR;ci)SH-wCpmC4;ky9YI)x7(qjD{ z24r+K-|%;{CUXkc@OSs4Vb0(h{*^O;1WbSH5MKO0E>QnNFmEBVoB<>PKCTDg`K34< zMW+XxkhDaf^aqxwKj79H44&E*w89<%dmtCU0tGyNN?Y*v(*75GQSvbP2Ac5(PQ9qK zi`xGuuUN=ZWBczb8{3u=^xFS!@maS2P0I%C|C`YMzgtmYuWu{fTG~x+cr&c_F-C9r zA2>Iho1B>)J#@lvMj#c*SXKz@AEdb-fPcW0`Nbo80_Oo5n)tJcc?xND1Z#CPcP7Bi zaRRo5n-`f=xDJ6x*&yLv=9^q)0QKkp#0BdA2MzJpBk?7ETaEcggy`X|KV=+o$5OHQEr|722R~v+DA;Xy(h0T zZODJBV3L({EkV9|jYvQylX_7$B9oC6d;m72R(!DZ09t^D7tW;?;FqdhuIB5Q_W+lR zp1QHLmt1b_>=H;V*L%s+-BO$^-A^vJ z2NLpE)60EP>~b|+Cyi~Y;Bt}TvC>4zQ#w_!ZtyfQ<{TafvB5x2zTaAu=K7a`rds}`$g9w20Xz) zd@anc#f5`#762n4r1oFt+P@Peh-jpcIgTq!8d*Sy^M7|K3hec4#oJ2{l5oWk%>Iqj zaK)Fs;fj0nv*XjWX*a(OSWI^rYbb{x0Hb-<@F0;Hh)_fwUA{BAl@VADL!5wP0iA`?<2wb8obFy*`?mLO9@sIkeQ&p5(NChqML!NjFZ2H#FGKz) z-$1M1K=Fyv2r;Pl6>8{uKh9sn9U-vdY4%ld#9&|qgkRtI%_br5hFV_ecO=v*VC+)jzD01@-zNU=Iz|F(+!~ zaBgbUnrnc5?6xXTW+KpF*1KZ*7~H2-dw{@-(lN~7fYhYPDuAEnR#uiocpAUlwqp5eiwIDqO(eUoHdK@^&KiSr~4XVvxv?8!eyqr@pV6$;BO4D>7Zp{kff2sL%mVj%n&1o zO^^iSKBWoJktP7kNDMGJB7pE0a|}-aFbB8-fJ?x?Kmg6PX35Ml6eB>^1p%S458ka3jg_|@L7&ykj;ZWWklvE7ybnn z0rt!P5lBKt{7)zf?2X=v7na5d)cXo+=6fmB|BVOrsS^{h2BSBak%`1fpb#rFp&_^x zK!jExtVk~F_LPZmt2tnU!iRXnQk%C_n=i4#h%gs}LhckGR25a90`%}B^SvAsA;nHU zy6|sx_^Tt_D3Cae_P*LU}H$J@vX(A})U z0Gulk*kmG}49GBF;_?cXp#KFD5E1_$QWV%baGUEbO(6EqJ&oPczEc7FaX$8$Gy$i5 zka79}%|U-$qJP6sJENav76!On^aBqu2Q?G_0_lc`|92`1>>aYr4VDfg=C3%76;l6E z0rLqy=9w7-u>39GKN)2@4p5&!Yl_}aNaVLS@>!N)K+QwGo0FImSSg?}p9QD?1@iyS z0npzT3MrvbXjN!+=*CbYba!Yd^gw7lbS!i-^or18=q;i5ggzSjOz6v@Z-;)Ou23&l zuT^{0jCzkctUjb3Rv%M~>MPaPt8Y`^uYO$py!uu3d+N`_XNNBjUmuQ!d&3*UyTbd! zN5fBr=fkfGKNo&S_(S1OhQAR0M)-$qAaTw+L%mEr|L>{a@b^gk110_ei7!y%3rKvC z5?@5(A1U#VNPLMBUqa%aDDh87e3=qoM&h3-@y|$ng%V#u;$JB7FGzfq5?@8)Un%jg zNPLYFUqj;Sl=wOl-=M@dkoY%B{2LPAq{KIo_;*VDI}+cb#J7<6HYL7|#CIt19VGsP z690k3cPa5*B)&(9?;-JhN_-!Q|D?o!BJl%C`~Zm`QsRe5{D=}iLgK$D@n1;%m=Zrm z;=d{J-$?v~5#n1Z}On>Rcqwqo16I#QBssABk0zScSv|l(+zi3n_6S5*Jb8BGmu4D+=tjZpFJw zlSC2s7xMGF$k(0!U1n0SA8USmrv;;tq&=aZiA0^56GSCrryt*?zpG6JlDZ?95p8rcGk_0Ox?S)ncfc?Oo{}agnT>+rahYrBF@)e;2p^4B`=+V$qp_heD zgYN&$kP&)A=*^+Gh29lg8FOftJK%1Z&cr+zFmE{`T_ML zU^9G5{hazm^(*Q()bFT2P=BKSB78>pobZKUL0lc~4&NA#gyZ2`!*_-63Evyu9^M^( z5bTLZ!bif#!cT+?;ZxyX4!<(|>hSBrZwkK^tc&-CKN$XK_!HqzhyO18rSMn7-wb~@ z{G;&CYL#xm9>4P35=hvU=aqV4Jil}YjH^m_!gxXHE*LK?^}%>i307fRd2y*9#!E`; zV7#<60OMt)dtki0v>wJQN*iE&L1_@iD@z+;ysESb#?_^JVZ6Gu8OCc$TVQ-)X$Zz^ zOIu;QuCxut?$UM`UsM`~@rKe47++G_3FD2W`(V7evHrQI;DE$xF*FFgojyfgx1 zqVy1qsnWwRrc0wRW=i{EytR~r@wO7M(8}9OV=(rX4#IdxX&lBoOOL>KSLqOpeI>{- zTX}csFpTR;lQ7;>%EP#!bOgr1(oq;UmZo6bRGNnI-qH+=n@h7WZYdpuaj0}0#;v7C zVcb?a0ps@4V=xYv9*1#9=?NHjmY#(1zS2`L?kYVE;~oS4lq>HyLNGpHs4(s`!Z3~) zXTbQ70T5XEuyH1g`;D_;%o%6Hc)$SDc;%RJE{q3_^I#k|Kv}MQ#8?I6A>#rVCyWbW zJZxM9^j2!g$oU48|$rau}zLD`1>4UI62)aV3n$jH_TgZmfp!QR8YD zPZ-z0_?YoR7#}yTh4Bfa3&tmn>tKA!=!WrW<9ZlhYQSo}E1xlLfU#h_7{-$Z5{ujvqCz!XEWnh^o@?rPGv_=jBL-1jprw`6C+!4 zGsp8&hn&eWfo9-AazGp8$ly%`oFlVDtJ|IO$$*24z-5_%Cy;@^B(1yTld1lP<{z-j zO}+v723q|Fin-DeVn=T(CYHT(}{X_COLx#upaII z9z}t@+E(0JI!bPBsIYT^hBnXtPtL8e5i;-1wKnQkqaDINjLY1YmWX?%z8x)*=W+Z` zxc(=jD6rSG75ht5D5v@tux|GU9AV&emOY|?x@MMa@;G4S2>`dBwM4JKMhW120*Qaf z#>;3rb$YxJ=eX$(wUsCGJof)nqV+$ahyuIZs=k4jZz)X^p*Q@@ozGrEjk6!_T0h*C zjzipn&iQq1&BJ1|_x26+b=?hxfRkfg!?~;}__DdICDSqxip0>RmWCfmH6#4TlqbXY z!q=|B7^O*|=<+V0CU6h7=)!}`@e?3Pl_KOF+Et3yA)Xq=SRxtYOf{vVF<>=b5Gond zVG;_Q|CUw}nKyxQsm4}>Rve`7vGK#O799kY29D0c*f*8S`u8Lx;lJEecTWaN^Bsk| z@HZbDpPAjC8_6FSv5o;2U=DK43i3Xzy7WhiDgD{GWz&|SU0dJ}w0jT=P4;v{aRvTn zAGQBOaRqj{3BG}sZz#=B)90DKXKCui`9JbSVBbV``cOp)uof1VZJ-Fi8<6m~3ZL5! z{^ai;JpP%|9}Ddg|AGjwd>G(=mc{>n`QpDnJDJ^I1^>_b&AkOH86 z1wgz3_-9Igs^UMbgwhs&%l}2*z{}T_j-w6G`z%e_KL5XcrNF@KRQ^b=k_^xqDFX2F zQUJ8A0MHtMf2Q$9 zL7bI??ON|z4SINxVj{hFZH(j$)4C!+oEd?S>3r}(rXUH<&*YDfO{e3%QRu2y{%7_0 z^2XwQ@5=@tJ)|6fU!Tj9NHBB_GrmY;z<4L4@5 zL(jsN$L!6Us4HfVj4;xlpM;m{7q0gvA!^+{z$;8F&U+9vYyvJ~4svD(TS0wRrSs$d zG059>Ob!HsdpqTqbeM+;sP3MDzTq8K=$}qf(cf+v+P-7MK8*h>Z&b+MuG`%1(qjbu ziNZCf$0+)LMpF#{{d;B)<$Zyl)Vz&>sTfF_0s(r6LRSwI18cPyti+Cz09&r$gq-zr zwc0_iB;ehnEd=PNWg#F72KRQ?7@4mh=O*8h5(fW5B}o?lJD{y&&k)IYp^nA8Wf2=ab&@BTOE z!upN$0c^z6x&<1Y2is+2_(*nU9Hy1G=MLnia+9OEk>L~5Gr7agY5Dqfzn4{#TAWVV zw{~Jase!(#(=M0z-?_upFa_{$r~K7||9?^x*q7ZlcWvnjB1>Y=%QVOng&+R z4mbb@@>7RFtfDKR4{v2tcD%YCe1IftmV1u@7a--b??HH5X+8O=@v-qq=)umYdFtZ9 zjgUX%eh~P?)zH`rxhw(peEhI#-Vbz^w@m$7@c#)#fxWZ0Ilc5G#t1f@9;JrE|FXK- zfwh1kFJ>D!uJ6LSGz~neEWQ-e;CYOHJMXU+{6jMU*hRMDy``rJ%7zMq3pnrf3q;u# zFwddmPKuc5o3pqij$h}WSp7@+#OMMaWUan5EUf{fD{WRJXjfsuj~gpIh8wiyLv2+} zZTc;s3~2SSpG`kP-cvA!y?9VBm1u*-Ld=_JuL6PgUHV6hX*#qRB7KG!V?xvzV3Gix zVL-?LX5xR)ng;e-H|YQMG?4{+3jOnksmA?3o-CN2&W;|OozBh7Om_`VbJzBQip4n7 zSk*GX;R6T+J2uN6k3&;VGjIosta9RZV7W6PyBfpzVhRY0-JFB%~!YAZF?@VA~v8X&0hNGF!DBYA-C&~EYC~hiY3xa60pCSQ5WKD4*;gaNacF%;1iF-Io$vYfYK2N zY6;(VjLLNgLa`G!q?uLr1N3+@n$*F~_ah z^W$TXh2M{>et4$X5C%FGF_@W096oI|RI8SP?# z-E0|vJ^x2APZQi~MqYx>#AnDZ6vE;SC=eA%-tlB z7%UPG+sSQ9j~aiD+4;Lw)6-Al`|A?ko(>W)C8mPw`)QOIA3 zu{ZB_%OQD>YwFwS`4tiAr-_6Ay|n*>f2Z;rK zNXmJJy+C&w{0UMupKgv1Kp#lj9l_ci%?=yBMgVwPB^#mFL;qPXHg7PPmDtPr)ZG|EXM#Sm{wM z6;H(UjGiF<0b)AWWcTmW%>?|LZ~1p13iTv}@Kag_7Kg6~i5a^rry>&Twi@a_k?4Ol z+zsphz#upI2IL!Xy@BGiaVD{PM+@5)ZlhN3nH8+wp@%2NkIv@0Hs_{BvorZAG=TF^ z_Gd270|spZqAVFll$)y8(cZPtf^X$$@vyOyTy9rkcHs(oxs??zXRF0JEN!@4mOL!< z#K}$^IhgH@kwrKXi3I%OP;Zn(_TVRCVe1Kyelf_+B)=e&{cGc~L_8YJMA91kCg4PS zE9mZim(unQR`b_rdvC}?KbhQ!`BxdSIGnAhby~#4)+J5wJq*vNP=2F~G^=N`*nPjd zr_7?vcTD9*XT}eV=k||`L3!;+c5-Y2>?HoN)1%pm+{l6KD4>(rQiRKyFLMRp9lXyu zY?64nw4sg@68z|2#xBll8!G_)|GO0h_WHKst;Sgx6&ReS-Fa4>RY73U<#fEVD(2Iv z2hu=Dp%2bb(40TZ6X8z>f=nV?qo)JuQ%G^tQgO7z=?6E*G1%tMMF1}{M>%DkUGL+n z=HWT~Zr)|S)g^vRj^-R*p!;LqxqmZT(H03{``cLn%~AZ) z|8KxVWR2m-CHntvmSeEWmjP~OWKQAA0Jd!pPXff5F9{g`0)<70|KCy+*xP8E%Nger zv9hgj#py#-tenpiE3mEx>_?7_cad&qXl%?l=UQ~|oyw9TosKYxM36~jPIF{T=ONbE z=plQ%(uQcM4Y6Y?J2`y}7L3RVOl4T%J;F~6VmX-huo-g#XZj(-ex*wYAWt&ifk)U* zfM5JiApalnzf)0Q4{R&G#8^epJ5or@_fzz)s*YZ!dTHq(CiTg<)svhgT$)Vek3$5R z4q_gZ9<`7qI&Og31zPSFXDL&p>$#vw8G? zioWkU<`Tq;32j+HZdVG4V1-1D{zJn=frrf)-CeW(N1kN9Lsb6@zQOCU2p$isL3ra z2H=}-g!umzMS;Bywz*RlY30 z-<*OV@k8vh+Cbg!yk)8TJ5Tp}c#6@) zP!!nPW}6!`E+$f7Q{mdvw6XZAiz`S0pU|J@&t;1M+Ay3W0>I^htn@SinW}ZjsG~A6tM6g z*R+&XNZb_sOW!~EBF1L;{vL*6Fv-*Zz-P=cJp5DkV~%p^f9N*?8|R4X_!rLqJFO_N zw|1MGGA<>czq4?`JT^YKlmq(wrE>n>-d`Kg7_0{96*u+O}k%%VkL8y4_hiV zO3mXPN(J9i1;51P0Cp)~el`FLZSM3x$x3B_%MlWkFPVc}_(yK#98n$r!ufxbiUND% zx8f?}GJ^5J!gcdlOL>_u#z_$ErlkQLTa?ibWzeFm4#10*2q5C={Yuye3;X6bCuk?= zo887DnYy}-C8NUme=~{#d$YFUS;pl=3iK7OpHI*r-{oE@uqF5KRCf9hN7a)CK&a}$ zRVP11d!Zp4li6d3`yf9W(*rS#Qilu>ncA~%R>D76_}6IGFH!5W*?N4f&l=)9t?%JQ zMs;&70QO5=`X3pW`4T*$y8ai=|7)lC{}n_uY%W}H#{aM2iH2j@{jTaEHu?_@j2xD~ zmSn1n!P&Qbf3IjjYYSvXur)(la?V?pVxpyDqOR$`7~v@fg*+&`S&cb?=l(MX)Q)_U zUAgr?Nmyi7F#fkqQD6^bE3PqKKoGpI&^tdsmHP{-A(&XsT|0+OV}I#LrfE}Tbwbqk zbwFA){f~vU^&Ar3!NR+>*?%nnzP-F)m32kXK_JmVPPgG?R5<^y{o?;u5*e}{tN@(< zyV6&N_|5*gOn?N`P&;z}+$Ml?6|r(V(T11+a`vx7qyJ+1-^FK)daqUg3oQRt?heYu zzi|HFfTF-&_f||9R}sAKDr}n{qB{Soig>jYC8uDAN?SWT$X~fT7#IJ- z`G4yb1@GDK>3W#)Ll86F!JwL|fhGV! zwDmmF1b7~r04@$?09&)oPa2Jznw|L~H}bJJSd112z{CX?{~etFcMXvycK+`*JZW;g zYeV+%k?DiuQ#p4NhqzIb%e+@1F-;#6OuapzP%842$3hSBy zAPmJok~0C|;WOq0o-m;7#~kIF1*p6JKdA}l{|ze&>;Y}Xn~WC{^zJFo0KBjYdWrVr z$N%dFF*OKC;$&TGlZXca9GEtrLP9%OXty@{-y+ZlQU9ORg!BKNQxw?ScAMK}TuUU% zK;g2}`>1zuEnlK+B<);IaEyVNtM!kaAe3T?0WcvzYh)b&u>yTZG zMS$qG?pdNdSd_Qc9%w%P;~8CZl@YjO0Y3BpnsEN#A1Dg!9k9)9Hm;*`lC}@GA_Cs5zy{<49)~5OoVO^&M6hC_DaHW19tcPK zBWp3rn->IN4shxJ`tyG^;rzd8MS;CZTk&k8n_zgfaHU!3*DZo!{~$q349X-VK(YcG z9}-}ZE#m^qup3aU8PK=$0C`IUSGWH=IREc@A|ZwftIhns>nlnKzZ^iPT!1x~oSPm0 zk7i&oM$_+45@Fl08lkevmpOnPngbvJdKaHDnw_WmDf=-;x%9tAnUZrvb^HtG|BWdM z>suLtFrguB`e1GP7Q6nfKz|~x zk!4KTiAO>IU+>`jzZ+Qne?vuS;g z=xv_3tGe1>ZL7gxowpvHH-;tEi1 zy323n0!rl%>u*2bl)sBF8OYWJeLbbez&VA~wYvO&T{!=*9oPSP36UQ5`adt>OOHMI zsY4Z_{BiK+%_x5g7G!gl06JFxiIHvrqz7Hqrsf9k^de>($T|K~=6UVHtY8>^$&U-{Px;y7vj-<;0>ZcNKq|1ymA zw*d5MJ*r33BxFreSfkN;*8hP@0@3~-uT>P-+i;uPXWT?2$tKAB8>L>vO%)`G-#kEj zCI3+yKu!U4Xb8Z~ON{E~*#oW1|I-EX|IPu>-xdlfp-^a5Xm#kuP$G19XejhRXgqW* zbTagc&|>HZTIRrP!7&%y5?3N|6(z1hVl^dJ zBXKn)u14Y-N?e1)3n}qJB(NFswMcZ)Pr8u6%*pGJ=%$}^BXKIntqZ-0^?B`ByOdj+=>J? zrM(S_+vz8_BhgEVUL@|I#2rZ7Nr^j=xQh~ZA<;*PJ|ym@#N9~Xs+j#qtfQZ-Ljrqd z4Ipt3{p21b)>C3V5*sM70ST*-Go+dI-eE3Xd<0P>A(ZfSAKDWt?Oot6Nc4K8yZ; zR#9MY$W~l!M9_Um%wv2fQsH?V`7@ka-?}76^KyX7f<&4n?QNFS*Z!ya)PK;DM$_VH zz5e{4m~j5@U5WyGJzMd1;}!z%&4o?#<5XPT!hv^wYUW^9e|9QAG0s`M&$F;1Iv{#4 zGy`Vh1*B^SuJ;pjF7T0po_{13kc?(v&Etr!H!2*!JcbMebZ{WR!*Yx|=LP~i%*dR= z3j{!OK38fF&-rH;9CJDUWtL_xCTMQN1oD3g=F1op#Fv(V?1XrXG}Sx-u&b#!UO1A@ zU`;C2_ExA%^Yc3ejM$H#H3LMUD3FRt$u}V1K&#(CangtqgL-da zbOAFmqSXv)KhNJIS6y~B`2W9z{{J0{0(4 z>jHSVkvWCu0>s(E9gh7^xtIAKj|)H&fH_B0o&Spo=l@rk|JMn|M+&>l`F~vm<3uQN zmhX1I^g4mwoRz)3h^J2_VIM5)o4?4nn+q9qwGZ@{xc+xcIRC#(QDEn7#RrTSYWUHG zv#ExURYCu7ewL@w)t+sEB@i`cTeO$-}||NR=q z|L#>3*q6E$qeg<<`aog*JTB9b@ZS2+!STFb6i|zhs2;inQJ=tHEaT@Er0IfRmk1Cf2*Rv z9>iAcF_I_)`ser1ctO%f2KdAYfTf)NNO>jz3a@xm1W*B#2AP3@fo4ho84qZH57OLt zfSc7A6mrFZhY6WexZ)tq9MW9;3zQKAtp8I4`nm~GQVf_Mjn@CrKH1R~ri+MWg5Iis2GWDB+Y|*^K zAqL&%vq+E!3-ZAFcrR^2z{8OYmfHmW7;da<{y#39{|}{q0@Z(tQru!>P{Z$=f1FzP znF`{7Z{Y*nb-slki)1(-fQH9K&dZ;XG-WjSo2&4p$=~TFzlZk(5bx$n<`k~Nce5*V zMicdayw?1G)7fq);%ZjJ6m?P&FY5vTw@P3T!&k(uhUHT9avK!`Q2Srz|8ra)`78Mb zTJQ#nj~ln5$DLci&VsjAGqHU=Zns!1d)z2IVgB#`q5uD=qQKtFt$2oU8+sC#m~8=W z<2>e6ZY)39WqNtus)6$40OSgiC?Ks3hAv~IoxfEapqFz6<785>VY7nFt;&EwumOYS z&I`nf6UZ8=9&&Hs-J=l?&TD6j{;6}ybv3C4F7 zZkWe*qqkSXI1y!>s)5>o9wYt#=>h;5Xvb7X8o+^>t~HbSk^Q*?(_6O>ZR{W3%UPj# zh(SEPaS8iiVc-0e#P))|7SkY9mWX5$ycvS(_!rLq-=HY4FJ&vnjb4KFLCF2d(#T-1 zFV<;UjaQqST|c2Dz_0B`Jm#1CL#3#54W9<s?96-* zMhL3g|HApd;`;wCR{!5s8RS0tKUk!r{!cbq|Ci?>Z<2O@uy%j*^?!$8AD8~fMAC6K zE+LA4;rw4H1%kbnt+>wUBcfm@^!+?a{rx_#DA<~toSZ%}aV$GI?w9WiDm`O{?!obo zM$$}$b~&c+zYa)>M*AC{_3M2UDFuR+0?pO_gzXre$~OSq49T3rH2~b4%ACP508)g3 znS)&M|0JEZ;v7+3{|n^*63koewxH_YefMPpo8IOUv+G4uf4o>Db_C=UOUMNaxi-ne zr8?c21Ha`?n zGruQ60}S>BVT*`V`ZIQjjQDkY#Lvxw)lClIL6$k0Q+W2jhijQLnrr_j1oQvdM{ExM z>hcB3Avoy^BW zu>D|ue~wxIcjjk>E3&Hr6bpuV}#Z|485 z_d*@*cmH(&;}NHE5G$t%#As(fk{kr3$r^hQi5HmNzcg!p0+s=6RQ?b92omJMg1knf zVTtWO-0a3+j5`HE7?C-O8v<~1D02oU1d!I4BV6VNT>`MK{NIFd{%>9L{~J)X56sWf z`Tq^o@J^Jwx3&kCRctBfg=&3R)YAu%&<_^+O-};yFdhTKwt@c=79C6o=l{M)QDFDm zio1w|t+cdm}*or{3A5g4pnz6jJ=#5L#afE9y;f*{4tWo2GNyVk76z%Yy-~#2W+LZ~uDc$I>ae*X{{MRz|F5$C=O(oNv*!Aro2uLp)!JU` zAB_C+#dWV;kIj4B6<2VES>Xq({4)7K%{Kq(Q%SocSi7US=09*CV@GqH{J5JpnNzqH zznf{9Gx!!i%gf9O!P)o z6(H^ZK&&?TCGrgf^9D|xY21tU|MaqN_J5%3e{CkW-(MIo z*Zx3Z(fYTt%%mILwAPuhtF5kZN20GXq z@UR+VgmYa3%7n~eJa@puoy-{=cOcESBMQv^PYUG!BmS>f6xe;X;vQoQf%LY*=7nph zMA}jT(td)-^SZ5AK(ml7>T;CPEvFim^_l~2O~atHec-x#0^OdNs?a6o( z2K##YcJA0Pw0&^Lp1s`zTZh+o_jJdSNr4IgA2r;VUlaYWhP$Eu2L`#xHz41D>kXW` z-PlUZ-#sU9_@yv4f4B0?Ux$+NHG$pouWSOFQVtyQcNLErL*#OsPM*1NJ-ysemCJdZ z=xWz7Q|;h#?;sCrW!{yS)b+^FYGy#PTx^52Hn0vaskN!YA`rLIy)RrE2f-Q#Z89f7 zDn2^gY|!;gGJ%ym6>SGtu7dRYCLJy5ru$eC0);&;DdtC_|39oKum`jiZ!)$K36?Kh zF~5^aux%A3*!XBy-^9bYsp+nPqqEtGuD+>U7G+vCmqih&_39~Wg&z_N#NS4HH4rqm zgMy(yrvEQCPiv%4!n=DZh=LVFHD(DQH;we?C&x!eC{K+Lp6X_x=k@Tl?jFKrRgTiT zdt&S{PA`P`7rCkK9*u3-4LmwFJ~O*NH`!ei3Z34d$_-eCB9?q0&brSM-`3i6UgKz?d` zY<$uq0{D>!M%cIl|04J|8Qcf|!u3D96$SPnx8jS8VIl?A7c%qPs1z9XlLA}vQ!@uW zh==(Cjj{Sr=Y#f-N0Ma&fYu0G5lY%Zgv|b7%@q0|AY{qbn5ZPZbqV(lhP#K&7({xF z1fu>412Ts>EdUGtF*enZ3x9Vv5|;o#HfFBm4mO(H?Sp^8`XAz{J1gs4IHLXaqZ*hR zIzoy%`*eN1vbQfD@~_RorvQ@^am#!njurF_!?zZJ$wU%nA7IfLcHY5_LhRE)8+G^~ zvE_9>e!89b|6%o=H2x3&$xXh2c7Fq>t~2f8G(B-@qt^ai*8ZB*s%e}97*w{fXx3h4_jQ{Vb zd^yaA_g<~K{S23TFZp9zWi?h*4Fayt_d#C>+Sr*iiNd)P?93Jg4K%T>KcO_WJK5BB z^S^+i*G*(tEXth1HM`xs%bdZn!U;<=$GD7ejIeQzuxI?sEjqX}{(?m~EtI;hcf3R~ zV7Uvmh=Y2Zf_}^hlFq@hb`CmHW{BkMp=)9K7Cga`YD#4g&i_^I|Fa8Yd56vZKfC-) z5`O6~#8jD3p4sDH@72Lbahe)-1_E?yac*`ZqHTg;b^(SY8XD-AmA?%rIIM9_Z^=P@ zmH`=k&W$m6Sd%%0XL{&vo@LIc!}LG~XTHT9d8iowPYLAz6SD(>RtNUVc?wZzy-5;& z%-d>2Y2l4-oKnxzei~>KxkLYVg`>549MWw+PA%L^T3XQ?R&f3@YRy>D5-bD z2qV`D5X|AP*L{%jzk1)CJg-G>;M5C^`!W6(S{R`Lx%(@cqgL?9H~trm=!|t>%{1%K z7I)=`i~Ef|82=kzxQJeEkI?135jp?sL}K&?;Bp^2^%7$@jsKloy)Z^Ex4ZJ?eByr| z@mYSVvds;b`xEjvw1O*^x{j` zOc^Zfnm%xpk;k|%pq87+{)vls}Vtlk-e3J5i!sK&drghq?PlOFzkRK zhz3nYIv+*aAsuXoP`0ZsM__p@mLZu_c(#X!Q<*b3wueR-m^sL0ejr;Q$s3WTWCJDV@q1W_PH#!J@7@Py% zjlbINZty}t?xV#=j0ec&h6~3RE}@rup!(&!%W74>*vtrA?jz(+MVHm9%>syO zU>z|AH=Xjp--;UnqIo}VJ3y}gy^PoYb`{rf-TZbi&&|m@lBiO-Jit!%Nz(p7u-qTl zP7o~D2~@fY=KnlMMAASZZ|46z=p&M7xsKP<*CHwI1PchM6xZvA51dZFvpR|I^*5-> zkIEhTP}1=T*70a+`VTBS&oUt6Q*#B3hc%f~c>ceKXPGk^KNp>LtJeZ>L;@Tp07(HL?E=J2fSN)9Wh+1i0+wwc zz|F#pIo-B4yKqpz(KCSN`TGO~(haTxLjV7EMS;E6t$3G_#kjz(`NLFHWqm{y&Drt9 z1<0(U*~teo08$a18w-FAEp}c2`N`iS!GL5PT}MUwkkeQIeGnN7=-^lYWxDFJ#KVrv zDLnt*!>7y{4f6j@UgtX)X~Fs*&z<`tjP?0-r^bg?oZ{ME+~LP`KRNfG3tZ7R-Qn*b z=!rV{wA@F7RWs5)PJX(<^*godZ1?ff|98I;Ny|6jd;_o`_bB!M3r81*sFgcf$;$Qf z|3!>laL7Md95WuK{y)tBW4Y18)h_4t|3xkq?S;#If;=hY|B2h!j(PqDxA?aWZu6Z= zyE|CByIuPG6E~1Cmbu=2J6Pnx-aVE9!=KCCd>Z+uTV5c9{{Qa zSaEti70mm+lJdUX)ZzT(48|U24(FyuG44tiJ14;hoZL+5q_Nqd-YBVG$|U1@+FVG~ zSy~Wy6Jhh_q+APDuGN@ZuwyDaIeiS)pU91D2L8y-H*z35N-ojk;5Fu`+N%JfKK{Qz5fS1arUGCW--`DbIRd@Sg`M-$6nZ%h^v0*4 z5&C$xi=Pz)DO@l?0Pl7Lf`92qlu7upKngyu=1Argo<#7lDsu);JXGmCX!14lHSXGjimeCJ0`))V0O)TEg_KYzv?{bZ zbYmzHx;r!!dLT3&Iu<$^dPQh4^p?_%b_CH5e3KPB!*VlO53BJltv9zbFrCH5ilASE6| z0{dc&An_3W9Y$i3elm$fo)UQ^j!@zV5?FkC6p1PN$rKW(n5L1K zp`XkkF-wVAB#u$y7!t=RaU6+9De)*0Cn#|OiN`4M7!r?D;&CLNpu`hMJV}Wsk$8#{ zPa*L%C7wp&rIdIn63}w4Tw--dz=%eA(&$P$s}j z1WdQEK#tPA2H{{BV`I^J)$0ER~5k4q|V8Jz$fh746s%Y>_x?u5gSG&CR;ZcLq2ACs<%eC*j1gWodj`<4baYYJ!<)osS!8Qq3=CHQymv zwDW&hjJv1hd?w^G4KC)XLxEHMAO2NX|Fe#hx?EXt?o_ z>c+IG96b?0k62}FYKZ@R9_|0C>wg_W`+n5y|8uC~Ezy{r_g+%o&>~I#i6>Y)p2QsK zlq7t>I0SYuk{D3tLZr>I_hlfm(*u!UytC}YSlxVk-_4rLDO}^<&9lrIKE43!Qv_!J zX9Vj1R)F-%hYrAa<_kjyLKC5>(4(QJLN5!QhTNau3>l#}gx(x_Tj*V(_k}(j`dH|b zq0ff?0WyKU7W!7``=K9)ey*zOS?VhFQuQjeOMNlq1?g&9y+d86ZdA9b_o)x4532{& zNp%LYgkGx7sSE0_sjpIBqrOpni~4r;-RcL_k3i1Qr_|4>UsS)Menb6^`UCYR>Mz1) zgwF|I2pL3Ihr7c!h9lv4_}1`U;d{dOhPQ`zhaZG|qDR6%wmezZJ5J-W&d4_@m)Zgg+hryYQF7Uk!gV{N3=6!aoaEOxOBtD}U99fxP{7BM##$ zjRcIpVUYQy-!xJ%{+2=3nt7Fxf$`PGtuU61+h8;dsLNitXpmZs*BE!e_*&ym7++`H z1>@_DJ{W)7xEsbd8vQW7$rym~cZ_>re6z70#@{tI!1xwp5XQF}8)5u?V-t*jVB8Di z+l|dI{-Lo2#&;T9Vf-Uw8;tKZw!`=yV;IIiHtvJ*1I8{GKWN+!4um z_$6Z!#(y&MFn-xM0^>g$M`8RIV+zKv8q+X-&6tJp>&7t{zhNAQ@!yO`Vf?0X0>*zg z9)s~)#^W%4+js)T?-)bg3 z2yj^WUyCbY{PE(MF#h-ASup-&@oX4>x(LZ~D}T0lE{y-Pcpi*DUj+5J@_!ds!T5{C z3t;@e#R~yR%Hl;Zh88b|QC++Q#_-~$FrKk^8H_6yFNbmE;uSESx%dJY&sw|^#=Q_*TH!4VmFMJEM5=erHi1#&%A8$ z1{g12d@+nyEWQNB7cAZgOZvC{2iSJ|Hy<0DH^^NJGEjM`13qi9nYT!A_3|dN__j86Wg+USv+;$^dq% zkRt)o(EHC*Kak5#&p^IRch3^=FI@i%K^@qG-HP2tp2&sa!kT$3ugi1f!ua%PesX$z z(tnx21XbubQxGrfd`MS_d8Z9f7GyxtH(nOF?_8?k0d%8wu1EBK~1A0QPEIajS8Zz<;Q)ZyrmVk5+=ekKgXD?Qn!766Hz+_`z;S zo`^Ub13MZ3H(Als2a;;OlhwSN`548^*ZCkC7`9|i;p%@kzcObuQ~wK=AlZ-C49wN8 zf}KT<5`MwLuU+Q*IuMvk(aa65>Zzv5?a!(Hm-B!23z0v`H_*yAP<+yuB1ZPULT;gt zPLNGiHL`s@Y`0WpZEcwU`wH6skQN5}(zc>*Orv*j=RCHbnyz%?{5b%KutaThr0fL1 zDoHxGI*_#SEYATn*&UGa|4xtpd$^6U)cNj!n-7^&xb6VkZLpd4zhM2JBP$vOM6jr; z-QcIlk`cFM9dUCDdIm>r0=@bzd|2ljdIB|^=zmptF{%H9tYN=xZp@e^y8X~IPoKsnjkA?>yWLT_%j&3%gWZkVMrC+~^k zHhXVdZMSJ-Q_R;{8;_?kdq;eIA)&OLa*UsIzcS7cY@DIS1Rnb@QbSK}b{eg^qUE&X zPBLQ1m5Gy}OvyQ7GCws#np<@DSiH(@=8=jD6yy{~j2X25*DqX8?f;odP;;tEZ^@lo z$d>JYYQ=#4|F3BOmlOr|HrwX1#xe3H1`DfCV`9-U&YL)qKMZfaYXH(EI5GxOx$Ja6 zEy_k_A=+tm{Ewx~azbpV+^9rB$IVIs(|H1ha1#T6j*Rgz8FK8{~1Mry(Qb+h>27BLhuG8~Y%?p#8DxkBH?aSUkdfIhM(^DXYwU*uXJb3-`)_w|Ybds}XEdyPj? zKCC#6-CiH{mk%@(zdtuQGnJjFZVf=gG0^%R6QHpv#HKuO-l>!a%T*o_4rAb3hY+Yc z|2GvC&i{qxKd`sOHh0K4fmZ(wr*UnE6P58^73Ugom$Q6;19=)>Fw27)YX=bAOS~^r zyt_GVsnAEZWWJ>){V$yV`&C7OeR*zkR~e5{f%42Xr*Zk6$Gie%=Z?)?kL4$GU5U&V z6ezPZVBV8o^(LUWFxbeW^J-EUbe=G%7HHH`Y()=8>sJmmQn$1s?)_YTJLQ)|#Ar;? zIr%_S>F96GISBOsmpT3)XYv1d1^g$Y9{eZ4FlZ3|;c629%Mt%<&0iDoZ>Rj$g8#26 z3hc{un|p!r1d#yipIL2M08dnq0GdYtKxuJ<@UKbu!!o#0Efr71^o*X+GMPBE#OJJ% zmC-go|MJ9t%j|zUfa#$U$fH=CH@`w zf11Vr(-rU^_uwCzqBcnX$0h!kCH@m^Yp~|||C*g)DDiLOe^Fua|I!NhPk8VTNdgVR ze?sDadE!6D1n--Oe>>$*;@^S)5R3n3D&Rlq!9Ua_GzkAmiT`DZf7cR#O~k*Q@+a}{ zz`x4kzfb}HDG&akPM|^fPf7eQPyDwk{-@a~e-i%={D)cmpR9oYvN<{tAKxR0$}6v|1uK)%M$;3%i@3a<^TPQqQJf^x4G4eD+u@p zA^mp`tuK6e1@LR$^gpd}>3?uFnf|vN^MCY~#sBKd|6AVpU&-Qst`hz^*?$d8|C9ND z-OEz{Ypu%v)9TCrTi*CTlf{3r68^o}e_G?x|1_EZw@mThviM(p`G3nB|7WrIKUE3; z-t0fEap`}W%>P@S_>Zy1#^wKMG68T|3V=+j z;(vO5`G3nC|L3syKV1p`-t<4Maru9mOaNS-_-|GGj}%FoZHH@_|6AtxKbOV-d?oyQ z)Bm)_<^O3i0dQI3Ki#VMpI%@7-!jMlc`W`HD&gOo{--rA|4)+%fXfsAt&0EY_2vI9 zbNrvr;{TT_;oqD7r!_ABPm>9N%M$<9yM8vP{#UOr|8JS&e-(@WU#^6IZ~C9sxcom& zCIBu={3lx$|En+m@9T;J`?B5Uu2{T)h=4nvdGguEX%678Y|qV3j^`)4v`jqJbxRkt z|1^KYX(zl^*CLv8339Sba(;3o+M9sIp&hHI#bB!NP%q>QJqn*`v~e@8B$9BhUo<{B zGtspMEs>;?_r~l@LFXaeJ?r{*?A*M!+x+DSd7$o|;jJ46whs-i+uJ=jIg^{3 z%+A2WW+&ir|37e4nLwyL*EYU{R+?Ko)?C$XHSZ74#q z6-Tu#C6e4Ug|^s^oz`JySPGOymI9QeK77`*d|%G-r*`)`i-0)T zg1VmG4M?vPN@{-)9-=;7ngAHH7Ar5B9FnYHK-U^%B>(4y90w=kIC69TOoW{1)V9}M zgpu=l=j6F$-z=yr9Q%{_UT|^>Jv^;(SdlIx~5bFM6@tqoN-CT`ahBt z3|ImG7jqn(F2|7@^Uo(TVDsxPz%t+sB~X9~6yv6RF)|4BX5e1xl%Yxj;|&l9u<&k@ z1hD@SPXaVHM88!eKq)^`5Mzo12d7dWVTyw=b;%Or-wFn-fd4qh!MP~Mk@NB|K+9NaRC2P&z+|KA)h8|v0-mBVTegUL>!-NX@#34{2YTC|It=ho&0iM`s zQL#~1ZPBKb{?k+qmYql|rgfFlHGoSo0NDx#tbl)wxjoMLi@+hq_k!bzM6LH*Oo)GNs*z{zXK3oPP8YtP^kOuNs|=N_$zDumFIse7_b8V4{#iuOL81JHUDBHEUuZlQlI?a zf`x@)Lu|euVK|`(j<=iA-`Ro{IILF9L^MShhRt z>URq`bwF^HVTVC;?f-fwh{LW`tbZ%O{x4g>fEDmR!Etad*>Pl5{%j%xLPv>L@vW2$ zuv_1qzC@T|818~b`Vs1r0QO#c62QI`Ra#O4l=2Zhap&Tx;do{^wm%NF{y)lba4wT$c2oW(NP2WnT{IWM%Z>XC>A^6=S2i^^$d6F7&|q}d6B|n) zHdc=P-wFn-fd9KW4$fvCv$^~^2-MN3uDP2rsNco}HEnLM4DJ%+EW?6OmmgtaV5fhC z2m0j=`VtnS)rg_^SR%GJK9oymP^2?*Pc5DOzv}qEuW}rm%lDYo^5rfYm=_@+^JX?y%P(g zH5pr_^Zht?zZp8{gx$K0Qp)=N_6#v<=DpL2sjpoh9)xcp+m6s zU<7aXiS;LP2h*9+MRPBRD&8s7T=#GIf+!Fw;E&!UA|68#_{yh9QOlSfAFQV{&%nkolWDl$(20M@jQP9e;&VvSNZk)HvScSlE0Oo=3md}`3Lw<@{jRP@IU3B z;r}F@D7-+pP-qt-!UiEKyh<1sZWoRS_X@{^2ZhfHUlX1bekS}@c+PjS@5R20eL-KR z?>gTu->~n1?@r%Q-+jLOeGmH{^*!!;+V>0JvkgON{Wm)81mP^T;!g!p?*{5>Ha#>B&f_$Vem zN{EkP;$wvPI3_+$h)-bR6NLCACO%1sPhsLyg!nWjK23!z{7vb!z{7v5 z>i3FXQ;j z3}*NKXFP$Ko%u_V1h{5=j(7my>mmW14#3jt!8PLFbN}INb`jC7C_yX6|ESHX|Do0w z|LftOfqDB&fd9)V{J+ly|4s*BY4zY5@$b3+mLvX~<^NObi~n86@$2mD?)}Yp0y8`E zYtW{|ZIj*ioP)h5?}suRen>rhxqoXSGZcqC-hM^&uNhA4&m@3M4C`6UVQUB~g@Q{4 zi9tv}jtZVY^`8#78kaSJm#Ea_xV(pd9ob!|6K-;&VjryiL*!C(>j01_`xq1ivdRS+ zm!J|sR7nz9)nsN#5|m|{S$jlog>yGg6U6}Q~{wsSegmgCI2_toTV27uaN&^ar6JLMX1?4beKDXIq%c$G=?XKwd%bl3uz?U$J-!>@T8^o%lKUj9FNuizrq|52@A;0pLp za2%YAb{si7|8gP&E;zak%YX-LNHH>K+Vkf*Wk6}RHZqAeGV5QB62RVFPXa)~`D&Nw zts((RIf|Z}kAwVwsuc`e0srsjI5=DMn7uK-4(r`htL73|dVG+U9*jhKl~emPDC=MK zLW9vuPi!24zK| z06QE;l`)q>!ZqgtWp%Yg2e7;dUg@B=<_ZG`$54vC)7#epj6_{RyZdzhqOK@$`iYtn zRKzMOfw}qrtYE+j_1mlzw{pY4RIeqo66A<|;pzb=)I4JYgTPK?0is47NK3@NHCMI=>>L=>oN$@pv;@1iEcLf5$Kcp{g9 zn~JPk1j*Nc%l??XJTD=+bq^>-&TLleoIAHB;!cZY(e zdortwAuRxNyoq52nf&xAKCJ&u>GHYs!I5lO=?sFdYyK;v;#bv43-rd1GGX7JI2gMr z5l6o(271hJA_o&&53V7OeqLj+KDZ53jIgrX{6XlaF~j>s4Qt)aRsHo&ES(4dj-fEj z06k_T>Y^HePPmTxbm`Pjn2|Lma!9j6{`!%{IGGx0YwzDSFu2j!2|%j_H{<+2+)p@k z9&g92Kd&N5Ax~!KF2<7L;~Qb#k7!6vWYTD<4AVYCECA~D%{sbBAjVp|FQ8<@jy}QH zC=wXGvG7mcG|{hjxcsEQ)G{E1)|>R0TKA{%Pnd}T@kBhE z!+<63CdL&h6VptY4EVP~{%D}<`+!P?f{y?Y*(EB7t8){h5UK=uUeo1{=+o>KgGbmGqn%WH5OtLV19{* z|K*Q=i8kgj^#8@ezZLRV3;u%~AFLWJEBeBjE%^wF2IxL;Pa2yPKD|DX8J`%A`^AVF z0>gqil}o{XvWS_;fxjQs2kw->ut4O+&{$?vgE&IBcz`lDwd8~SBGXQwzX;}k2>-Sv z_UImqXGWn!aahyZ+EI27DX0aMb}6C+BB8Jr2}`039yN{OHxC7a*xKKC#;T z23#=N57xhQ3jBV3P_>z10+b;;1Mj6S03&dq)z!CS?8_3h@^@PQIxxRb7t!-Sts9iA`U!JU zpDwlk6P{z+|3g;DUoH6mHOIkud>^wf$X|(MLv(W2oDa)}&qCClgy!t7u{{tB6!*)6 zTm6~DUOz77?iWSTzl$LnOz%Jky29Klz>WzrCVF#o0DPhAtY1ZcEJ1)THpKuo?8drK z&xar~fVc(4h_nI#>?>f~nITWfd{%?ig z|0){)pR0s7r6T@u(2w0a2*QENf2rgS?}29{!gN{v}$2UmE;d@qe}8|BoC8=Sn$d zPs(3IG=ZJ>9KbT-QIHW~d2uZPdaRLY2!QV^X9%d&9ZC>{2wqb;bXo$$w?d|6MfxzgP+X4X^|>691)!01yAIi2r7+|LcnX<9^Jc z^Y}Vu+w$v)C1B?q$uRt-3Mh9hw#z&JDq8{?2zf`}JpF&upp^>%?EiQX(n|AxQ`Y}= z#s6{tk3;8idCZ=d??z%EHhJaTC3vy_Wh@5P82Nh^(fP0A-z~_m>VA}9opjw=@q0Od z+LYGI0n{A-e|_X`eLzvz=)iJjN zWBMPqCv!vbWG033d7&&mCJll6=p_bvJ0vv_)WWJNX|N(ghqT;W7dv8F|4+Wn%b^NMn*vQ z7@sm<$`A*rXHIcIUbW(SHl=cjOv>2W2-|-Y65%6nYe>cRNUGCqS$PC4E=?o* ziMpU`uu)7bP3rALB#l@aj%8VbP01-2grCab!9X&51CNMPeA{>Il4Pqyjp!f*z?`J%*^|g- z6QDbgpnU+vcs!NLj;2S@i*6{dwwo5T;S;9Dur)cB%*8V(!}mxgzJFgbJG3tm+mwRT zu(^pGXag1~*OT6fVFhYe01iWPBou(fA*lKh_+JW(%t|_t&Ih!_o7)YQK@C9#Ye{R5 zfHg#lv@4nnnN}n1P|IEpwTl5Iq`=>3^&kZl38lYq0$r0uyozY7QXwehU&2(aD3l(f@HHX+GM@Gch!ZYXFc^09i=&?N$Z=P4u`303;Z;RRECf zqQO{q8KOat?Wr->PZj;M#Da0LDI2^B01hn|>SJO>qJ>be(M$Xq79Bdnm4&>)hc1w} z;{QrheKW%Xbo@WUad0lbWA^I&RwMy-fCT8oO2W4c(0~N!j*su(0~5JX45TUn00urY z)7Rn(0GIB0_;=3jWs3i`ApYrDeQEJ;#sAfU|Ict7oXhK&U7znq*xw1*@50#swhjAT zsa$eD)X2%|;ID4_4=o+~T|4OEf0^Sy)I|J8toXlL@c$)_gL8QvvsdJ|Avv%aa(+gz z9Qck+4h+Q86SXJ+9bzcFWEudga~}McH~bL;Q40K$&i@fB{;wANe~RPaTu#SqPksl{ z{O{0h{!iFYPgen~YVL<|qwD`Ivhq*WDKvZNp?}$Cc1lt}1~H(g{159k2Qj_r?U;$vfpv6$4>j+lnh?^(Wn%uUo)&d{Wea9LfT3h$rA zk!)u`#ESm`{~uKa*oX(v?f+vO2j^lRN6yR-BD{7?#gCqc@%jS_uhEH&6Rl#v!Yeqa zp}?ngnBWZtLiXCA2-T#hH|X?X>w5UhS;JS7z`CpjA~M+i7K&^51sEUKgaB)`JG78 z$dd==L@a5ZG$hT|!5w~`pB%zQMN0xwR2U|Cq8KQsp0F-V;B6HCM+&f;fyWCF8n(`O za--GchDrzBF{Oq=`}$d8LZQ$MJ0lOa2rEZq$(8yk67_P#(b{_0hr=Ipa1`b z&phS#elq9M6hcoO0e!F_Hf4c zEo5W=O2@wy3{(OCE2RF<4M;dx_5YqS)&wpo08t(eA|}{-2|7f$Vu_1^P!a=G_cQnQ zWODmFqhVb}!$k@HN6bMf?Q|T#;?)0xwL)F_zgArS?;D9EFzSCiZLA3vQ4-X%EGW|* zN)UL{V2h@w@hg4 zGU0f_e|`DCc5xh>4Lpuqk{?E>>znF5+J{%-KkpqJh=wDuEoXgVY$O>^8CH0-DKG3; zjVlq_afht%*fOt*0lTXYZP+7*dKKI;kx&?I@Fn(o1w8r@NmNY-AhF(SN<@|*#uudx z(KJX4CK-Oe3UDp^11yM=%S^?*cOsMCpMa9wgNaNgko> zVjS(ik2EHN#~DATNh;nl+uTqcy%TjQ=nGrNJ6MTU%UMo-2a{1BVOjZ2?xU`B8v7kg zNnKxJ`X{W)xWY316Aotj|6u#KxfrOh{{K&ogLB0kv#auZk#veozWSaaES-K~EC9A9 zvsrZR-=BmH!wdyLmI9`P=?F&xAuD(g1Pu_#Luij1g2Zs>C=oKXc?YOYS)vAa+LSad zaYJZrVC4(|8Ru30yRNr;5NGbGYvxBBKw;8}a>5wYMU3S?;uq?g68KjU0;DsS3;wNO zzzX>PH;#kzxIJdi&W|9x_fE#=o{#bVOR@&o*fr3<7F3d@LVfv_0J}FOa9@M3vOtfE ze{4*Sfbnl=Xd)9IIt1FqNHU!QHKRX~JDARlE*kzJ$4K*2iRqoFOR+f4@o&Zdx#Iss z0DYR@3+<{m@q76(KEvO}-^m~5=lIw2Z{gp`zl(oA{~-S{{xkd+_^`d;ii z-`D0_;|ur{-xa=VeH(mRd;`84e6REk`)={=_ucAyjc>|#x9@L#_xj%MEBfB+`;hNp z-=}z3}hgQyaL#yO_pjGp|&}#V&(1!AT(1!CHp^fA>L3>61I%u!VZ-(}& z{1#|C^IM_4I^PfNHTiAOUYp+mZC8E(+V%M;wB7kZXnXQIq3z9I5AB9LtR+|VP!2GKc^Us5J@BAugN9Iq0cHjKT&?e_kf%ca9Q=uK5KMmTk`7@v$ zpMO5Isd+Sl>3KAQ`{&UJ9+*cXn3+c-n4L#YJ~xk^{KPzZ^0&^TCx37rJ^9<_(UU(k zkDmPP^V^|)^*nkeubD^Bt+h**Uc8tuRBsezvAu!`W5#SQ2*x&sQ<4kpg#Xi;RVqCZQ+H`{$1fk(7wKK_UUjB zo_jZk&K5mpZ_MvQv-j4i)pIdCd;f~e-u=;mC>ReyOF4trn(qfq&uiQ}S~|I#SC&lh zMzS+V%?BA(Sr!EJAR05#*RThOCC!q0@?3eWjYhS~dKU(na-yUw=@=IaB#JAFre_xbLJ8TwJ* z0iqLOh9yCkgRGO#F}#Kf=V1 z2=Npqo+8B4n0T5HKgPt53Gs7G{G1TKz{D>I@k>nnk`TYb#IFeP3?`l-#BVV18$$dJ z6Tc(G?=kUvLi_;}e;~xOn0S^Df5gNe3Gttp_)kLo2@`)J#Q$L8e+cnsO#GP;|BH$L zCB$=>c#aT%!Ngw(@mEazl@R}jiT}gIY7P;rIYRK5;0YmMLLh_>6Fx$mfQb_baUv#8 zB*gPD@jODT!o(^#!2yrqdPA0@Dm^g(HxK!=xQwebze&;kooPmim2!WTetDjE@ z5x*l6Lc)YZ2pJPHArwp~gitY|qWNEd;@?8&%BcW8)tetb2^5O6cOAYAJ%uxVGq|fq z3+XNH3sRk^)G z4k$tJ*rZ4{Wn&1)SD9n5aUwMm2k(kC3_;4J(x_~ywe{L%2yp_|rs_?g9-zeWSpOGZ z$HD0x-VxrMNyy5*g?SXc4-W-gdH~}`vc4KtD9qh)f>xZ;IXwM5J+e1_N6li z&{4ilUm!3D<>X^H0_h7%ynuw8s9TULtRMjBf-~#`ocU!wDTEFu1@u>WEF^J_Rby`#(%m;rATkraLR zVAIJN&jR{zwZKMe3Z}`Sj8fqEVoE63N(Gkax+}#p;m!YTF#lJ(|KG!Z8RV0<0RK4} z|9^DizcHFZ9r!O%3OxL`68@Vv|5v^L|Bu|tvHo-1>`D0vgypWuj=6Q%&h(!fC;WrA zPxzzzU|+)J{+&=M1h4&7v7hMvRsmoY)P0iihc5lw0p_Ci4poVO@j3{WYx2*%N|^gM zT2s0G8ZiPM0b{rC#)%koH-@?k?gsRRx_-z|FH6oC&m9d~VtNm3G`0KXhx3>J(u>X&bb8vdcVmyJF^YXVLVH28E z?JKX*XSVlrn?;d{oFT6_uPo}g8$h*F*cgMH4R&4 z6lskbMv;bnpr2bypOs>w<;m((6rJ>u&(I z6)6T=0&Vc#jJl9Mm>oTYeyQ&Jk`z=)G#p^#8+(r!W@pIPgZ#?Pb#5toC+fm?U7G@E zv^u>2w27a#0hSd5I?piFg^Kon*(wGA@qbkQUq}Fm>wyygAAsM(KgR+7Z>RD9X9`SV zx#{?K?Sc#b;d(ay>0N=1#eWOzHijZRNC>TP{8Rh?%HjVMjz@vOEBctpxeU}z7a7V*Bp5_- zjG(M+TiBl9O4GkcZ}hEU{;#Gckc%-uru_dN{>zIu!2fG#{6ANUC8qYTl*2y>4$$$h z*wX?u6#uYR_waw??zZ0T(Z06!Hcr7LZ{!jV;%iy1b&9QKUkp_J^b5K-?g6quQ~I7)$xC;I36;GuHa*4V*Ugq4!S3IkVGJ> zPoTsBvA{)hP_-i+(pUdbxFeH@8|6n7REPv;1dyzX0H`=XX*~dAHBfu>58VkD$a^Ng z+Nb<&d&ZInCZHG#9^a8neE+`W5UicIcMWuH?H%kL*xkme`B75*+ZpsLm5chp+kis! z6(w5$2&+*2C{_K9OIZ0olxpMuxG!+%T#m==Rr4nz;6|s;o;w@c@=lEI>K*9a5J9De z1_mQRe+UY8jHFZk>-~xG2{exBRN1w=7?6WdGY7BW1K4;6&_*bR%^X3bE1*C9k0U?*1RBpR-s_3tUb>m{wt8cwv?bfNk$Vc_Le>I#wuE}BkdM8@P&?oB5 zLt(aLwXgFObx8^EZJfrq%nJNB7?8C$Qw}TD#{Y2-bLd*{+-pie3c(8|?n9!P1E4X$XY}5K{&InS zDJxNUWkVlx7Y5XuR8wk5srg%`5m)Y&!2=O!{(`VbE~l~a8jvc z2x7TVo#r171YtY7P4QRlav%&s9>w$Pav&TCD+*p7pr*kRp`_QIG*~XufUpn+TDA;O zsB2jGC;Y~^jKV)=Ll^v49slClftj9m(6X`s7ly8#C#)>el*F5UurP zv!F1g`@^!{&;dXr2!u3K_YXm-;UE|VhzYN;I)JU`9_p6~>K$xEftHPbIv|*Vf1T&3 zTRGK#!ip~VuR8wkA&!G{IUKWF=1(E3|8;Y?9I&8DQ z0-JbD2>?|pU_oWf{vq@+kQR-U0FHip_+KvgFJ&SMv`qXf^oAf7{t3rXw_@NQGa?)R zsDw;)@qd5Aad0;Mm`%^0ioh*TU3l~?tj?d>e^Xx%l(q|kX|MmLZdC41_r8q{4H4Iy z*x4Z?6aP9e?Z>3f4zQZ&1Q_U%rC!gb6#~T`p_!E9)|2prknZj%&RwGcpV3DPy2hKP z!M;CnFm_WSJ{C_6$NCcK;Y2Puq*o3?zs{bPXDRIXA|wk1m^HN)g`#(&E<65~`1qbg zCKu~Yr}m~Z<4_wB{(?s;MYq!~ylf60c|0>5+aJ%w$Ho$4F-WD3d56N7^D+r8LtI5& z#&QS(yHVFTJ%VBgY;`ubVhQeb-eg>2>HIp&xQ60 z4$j3mj+{S#8iKSs)qAuLL;AFV=zxjop1v*JY)pr=fMJox|HEXf13VN7SkpE7i@XD9 z2WOvwb~HI7v>V=bv}iZC+}EeEv-)k}+_&ZtDFz~RxIaS-sPulI5;0&n^&Nu3k^(L%KTtt-eaf!||3Bk6IFHX` z_T2e1kOaDT>XLgVumn1zJ3W!g9r8y9L*;kzB4bV{jEw@Mz6Wf^GGYP1Y@_tixy)sF0%wc z2ih25@SBS=V8#F3R-y$QqVoT7pWx8Be2&=-^Up_^?wq`94rl6I{d_COZ8kA6obE8P zw35X?$*UXh)brQ+*X^J)-em(MsnSruECvK@dv#8yLu)cR(=j+WMg8fhVPtc z>4})eBdx2Kz>xkRdD8+PyxV)jU~hkP)3*NIZD^z+14CQWSPjkjj7mr<<^RL^K6Tvy z(tnb40DAq;J2~Ob<%52&r^m|^n7VUbL~{HrsQ8)2x|z5M7H0%VV7IYXVlKaEE2#~P z?qX_6n=D z)yE4@E$Da5jL%DmA?3*n=3a;yQbMc*)O${55zK1c z2HSwjus%LE8c${Qa={FB!E`E;Qb5EBtj8uXgOdzab<+=AzueLfj7wH7Tepxcux#lc z!VZj?J`vC6aPXd5cQ8;SNcsQD&3t3 z;U9eP`n1+c_@_7eGu8sMv!Empq5k}zkzlp^|2+J=fgfH6{P)uM?{&j}*_@!H6qp_V zp@z=?wj7{F|GfFX1xo*wE&Ww_{@0m=p(0S>NX}ITNWyCO|9SW?kN*uc{x=x-DxLq! z<^)AKMRen!zOOLcQ2g6+fExYt@ZSpfr%ipe&i^`-)PsMh3t?;qD4+kAzm$X1J6xZ@ z%=PnqNCtFHcHg678$h3dF^~b#vGlEpR5I@7F(_vOVEG4XSOHL9?JWRWa{*A%8Blfs zQ2+X0w1NRD;Qu6!KgpH(SHv4Lx%rI<;aedAa1wn<2ka&=K+@ncy87%ZzHU3D8IyAd2lFsl7uCir^H-|LmKFXkWkk_gRp( zU1RF=W5Cj4Sp17jfC>LdlVfC7FhB@hXPwMbYJVO1E^82)zfR^gJ_ zMgm~xuVC?*2KQ@zK!Dzfr3(n4HwQTb06H{!mp?=2*BA=DW%I{cA>)dQOMb~x`D^h1 zbAQjFb6Fg-o9Fi;)Lt@m&RiT%)O!c|Hbi8=Yj?LI>E7QVGdYMN22d_09fqG5k|YVq8>bN{6eMZ74Or_EiO3~3qC?I1 zO+)<-+=;pny|8>Bm|ZC3F|z_-MxribB?3_BBwtQJL5qnJ%fHT!)VGv|0qI=I8c8{# zSo1$j`1bj~WdGkX!~Y14{}CI?WGDV5JN{)m{!!u(T(N_Nf2qOv2Ot|Ix;*?x`#@nY z6XMrI{3CXuAjif(VkGJ^CjM!BF9QB`E_K1b6%2S>;eQ{E|9v+6>-juv$-xxaj(^3D ze=x|q<6mwt{$Yc-hyN-!^fYt+N9;lYn~i_ONYrIa{L`lYMZmw#r7rll@_!sx_)pUK zPulRWI_H1L-f!vusvZC6W!L#%X)yj(5C2tf=xZka5xY>pX5$|*5_K69|MVq`fPbA! zUGPuU|2cm2|66GM-(thR9)V|{|5ZEwH9P*nXy=Z9wZZteh39$te+%pXh+QaPv+<7@ ziMou5f7;5o2>92z)CK=k{h#9p|D!biM{W4mBk=6_*X;NY+3^oqJKXUPsnr^4|FebX zdH8Q({3CXufX&7~VkGJ^CjRLxpNoKhol9NtPsRTqKlmS`@jqt6zaD{S$3Il)wDkY5 z9siKE!yW&j2ID{M>Ho_@|3~aX0h^6~#7NX-O#IWK|BHZsol9NtPsRTqKlmS~@jq_E zf5f@|M-DOoIxY^NMC|y7FkE;1gYUed^MAy{|FXb8ViyY7Z2TieqAp|NpAPI>1pMn< z>VkhN{{Q&Fe~QL`%EG_uEDi#YxA3n*;VxYmpwa;4@E>U`{!zjX&;Gv*?Ei>eC}1=3 zj~R)&jD>%-QlJp+AFRXwuX8CI|8)JIa`=CWItJT zq3e^Gkt7P&*CRz7Dg#RAN%RFdV$~9oO>15p<$GYr;~i4En_$x z{O8smOHkk|%s`=jRL~{X1*y!FL$-83;Rb~WIfI8F$x#bL_vxKzLM)I>FW;Gh0C7k~ zIUrZE17eP%Zc`!)XhBjM1qAOpM^BDuRqOv><2X2%^D(Owc!c*&lhL`II4p1yqi4;= zu7UowOM`m1D8TX^DSCvpeVnbF3C2s$}P zgXA_X5Zy~U;o-k)plfUIVDG^0wrcTTwf;ZLad0;8n7y?iAoT8-;*Va8(K|&z(;po` zHUC0OgkU3vp9+(858toc$5L>czo!J?M$*Ap)FnlI3_XR$0KNKH;E>t^^S|B+5C1je zKV)qNC?EgB_i=D~NBvJ=MlGyD0&Mf-m3NP00d~Z!`vX;Cdb<6v{OavMDMkH#W9dEd zF|z6yO2iE#1hPhuN<=dJ$y!{%9m5c_NER15;ihv`_;yP!kqb?61f*Ads7&#p?n7hA z)G%6sjm3HoOhDU}NyK5Fovl`%bD;o<17%u;ciIB!_Zy-AhpLYM`6I`{xl)eVlL{vx zu#Qj0@7avOdUpw2plYXo(@?^{JqL~b8JFVv37BnWJc z>Z1g~9U;@U2!BB3u!aM=Vh=rp-&|i3Fg)flYRqYPvn+iu;FJic1aEprAe}9|A<(Bn ze|Gk7?%%enAFKp7Y=Vk(u=~e&Mc@DXO^$bx-pRyV7l!p5R?yMTz<4S? z9QSwS#^PC5v!8ZB zC9Cmnuoxg~0SjUdOaHT{t4#D;yIZ6h13_O?XoHnebcTIp4{? z7yB;u1$~{q>wLR>!@dK)JAFre_xbMkJ?wkb_qgwA-!FWvP;=z86NIyb)!kTM=q5xD zCVB|bi-}%BY{0|@LiAyxj}RL%v5^qlF|nNxdoi(>5F?lvA;dmR>?1@H6G=kcf{9xQ zF^Y*%LX2Tzj1a`qFiwaRekVnU*J9$egqXy{Bq63SF-3?Ym^ea+yD@P$A?7eKM~I`C zI7)~&VB!sgcq1m>NQgIK;!T9O7Zdjq;?0I;RsaIrdIjUJJAHQKjJS+F=ws-Fy~R1u@(W9)&LS6 z8BnqWs3P^BafwrnlOy4(?SBt(9GuJHnB7u%0n+=UQ)kbGu=seR9a=W=(HEb{>UBA~ zh~l4v&>1~15Hi;phIeFcH%)X#)E_F?wX`C`-d|5{)Lk8HA#$Ux>R=s}FkWK$ufg<3 zn2{1PL_%13z{=vEG6I&1|65l0e<6+kH&w>}`m*?!U>{Ix;eWk{|KkY%61@v(3GrX` z{=a2~{}<8tzqc~}yUXJrRtv3#|85We#}oc(9e)Y&Z#e_X#{URh7t;TsspGi&q{7+Q z5I=p%>qzL{TWuL@!FL|dfggP=o=W(;qyF?>SmjI3UHW1;pcwUZ@&AS^4&DeFZ*bhI zH-P?s7LETmSH^!&dHmzT9J-6XCG`Iu5C6v#{^=}WONf8V8Q_Y4gm@d^f}LV0U{<%+g2a_zFdzpNC|j%rBQTp%)vilTZO+WnMu6=^wqtM3tkG)J z!>%k%EVS6JHH~auuI#}Zcem*wZ3>kuduP<2oygppION}(PUlc*Zfg{Sq6Ctfv9AOY zh(lgUWFFjhU2pf`rfvPZ+ZN_$S-LCxHLo_XcQI;xTht;as$!P$$*9i9_M- zW-#zp@E62$>5N~|tIF#R1gsCisM_oX@HeIPz&&b@)wg}0CD}-COmzlGFF?OcfWGkz zV`6kW9k=U5It(E-sn?*I(;qCg%Dc_=RV3uSdsX2jh##+l|zqWEuyiuMBae)^c%7NpMO3Fr+1(yFf&>>4;vUJZ@%Yp{QTcx%7d=VP!4tg zFm?ryv7q(?L_j2nBE!8)o&>2gda$ky03kYt-zjTofwAb4hI0KI z(f)4n|NIL%IK6{Bfth6Cd?W#OfCT8k65ySt1lY8`yK7q=0sti)!dgSa1%PXhJp3;y z{^^jRrsJP-{a3{Q2^@dI%7y>TZG{W4$~Bq3XB!55-UNKl#GZK4zavOh&wo--o=Fx)MMLITE2`PJ)T`t{Z1a9Q?a>rbbiggDF4W((d0A&nAZb6Z_LCe{NsG z-<8Z9@^4KKC-)}dWibq!bs%^*xj&mu4(n^5bZP`tY{SSno*s_H(TCQhNTw|#;a=Te zW3IaU)45o7e_{ytC5Ag11Jt7~#*8k;P#0rn7wrMP&Yyxy_=RL87!bn|DB~9i$dVG# zAOhJL$q8i%aULG$JDUDZb3=7WC#I#sMQC)#cg%=bh#sr_*u^jeUz$&hIjD6GD1GOu z#u0s_%`{7m+41X|$mTNfG1$0hRZEZV-0G+-EDoD zL?U%CIkXQvu#6jpBN(ZAHiO~B2waYQwLvkYsB+zb62y&5@P7>_oWosH2mYt8FIzp-a5fjM1OKd#OkZ1Aqfhu`^X&V}GLCJtn=8|RpxB@7G=d0fVGrir zE3pRo5KQ=*#%2rKT`@~Q8g>Yd0)|imkx*ERge8cxfoLd(GzVoK!ZKaZkKbuF`cWsQ z6NSqV`VUN=uA~2b)eWK=b{#~F{IC>}1DXPLtHO}j&%i$jfIuW1(n6823__u<0k(g0 z)dQ@CD-5t2)(6<$Z9LGD7SuwTtVJYMi?9b8XE0#mAHUP=fkvG`_~-dQaBzCZig*Ht zPbsWD1)x3Yn>>B?RJ3$u%rbv zNrcxF1&pJ0ft=Zes?iSO-1q?%U~l^#f`954S%N+!g2^T%yWk&ZPi5l21@fu}gQyc^ z{=b+LR&f`*u>bU{3hU5(en)a9f!XDQ)v-%B=wGv`50Y<}=M^w}1tfzhvKb3R->=RovI zCALB0K~#WG$RwhQpkiwpBsU1D@&ZH!{mr#-4t%l-wn6u|L!=Uln|)`mrA9gS>2RQ-QU>136p&1VDdBEu#vbtYTEr{aK^xBKTds zHew6ZRe%6}L;n{}8>6F~TtuOp(JrBfq zM2je5Cn$QC8-MNo8M&N-%tS62-~|Ox_WoWJI$W|QTNFD|6e)& zUso#gANRle@HvIcF}lybYxWY1?vIp3ckiu`)jXR67c4mE*N71)ht@TG3pm5Z6RApC zen<*w0ohX5f*~~kdk#e+Y)$DJVf|8I`}@8cc^-Vd~%z~K`MK_U}&=`!J=nq-0&^7kb6LKVea zGM#dt`H5PexHXf_MWeM%^Q9gE+&!Oe?1 zLDv5RoZ#aIEcRH)U(+208LbgVqcfM`+2*5VIje6V3hE=Q`pPd2;j&s+hR!=z;uZJ= z+FR!m1!mljD1f3If+anw79El#NeqhYDZtePEVhCP7Z?81Qls;g5yb3{JTuSh-|C|c= zcXjlNt>EazognzXo)dbx>lcE0`m@uc1r^DFyAIBf?A0GH%TSwA!|7BaTTRRuSxbr< zScwQHK`aS`jwr#fs@AAsmiyL9Tx5N=d<>a&oiiFvmm@|DnZi~gC0FkOd8f&XNZg6( zP(eY%o!vD~L>PjKM}~SYSkgnyc6#s>440(wZy;?E6<5QvFjf0R&y5KJ51; zg9q87@FXBJg}>x#|0nM>d+03t|8F=!;(kM8_&B7dx(Xr0rx!*KpNCbGPj20|rDvdb zLnOkCJ!dN&=4VWfvb|y@@ouEL0NKe~!D1{SN5u4X1r5vg9W!LJ)F;Y?z}Ti#fP6BQ8>>wtDEAfS7`g1=pgxOifeKp}psvF|gGc~590m#CBD!7e|58hg zreXgVxVLe_mC&@(G5yj)1hLsjbmnx7)lZjYv;JLM{E?mttOdLJAh4sRxuo>ImG}v+ zk41XeJVfrLPy5&-h?WoRsl(NDB(;L+2zO$-s}M#bbSOGQ%B_8>>_4!{PMVI;C)&4KxcbYx_TlW9e9KX7i zz~8jK%#0VVKz6an{JoWWhQP-fCCDa`EF)G-Kh)~IMb-4sj%x#kx=~_4WL$wQ2J=cZnAt=6M&Hkt9n9@xu#YR5h0zp4$7g_QNo@u$4I1_EPuAfkDagbM7omiFwJ=iYeJimL zTptU&tRKm}blupJGUtQ=#1C>5Bb0OB2K3{&IpqTo$ zy?c{TS>0{0h*$@=x@q54#ef!$K$ZkJYaBnu*Hs+DcqT@=$QA;-%zKitgr0&tXK(b9 zT%AAUohFYU?gYXAn>ZoLy{Sf&F4pCcFyLB@{yTK0`a)Tz+7{gz);3gNC{fm|O$H%g zDOH4xTOmcNk)=w%tP(qs>)EVC-ZMl3^bebou|LsWD7c!GTEakxJ2Absa19#2WOU{t zEEFCsJAQq=Tm53N+jRiz7T=B=R~jt%Kn!}q9xeTD#&Fr3zwU$O>bjBfJ59zv?gYXA zE>5_X+tolo!~W6rXdP|sAN^8UCNMYDmI(yVHGaGw0BQ|D*cB-G)UE&tcHg721hq`^ z%x|v5Ddq-Yw^#w&T?xmKZ47$10qA(+kQ@wY5Je&@?EPc1tNn<)(`^1h-2-9WMG5OK zmK|r1c@eS873;cp7lgI35YUjY)z|O%MZMUUgR%ukp^=$Z)_YCwy|Edwzt~)y9 zR@l*jJ3;XOVNQ4@_u&TOe{pUFp+!B2+04+Q$I3Dr@xVd&mYcFkrWUviuBl0AIPYAE zx8M_CT!!c~voH2kGsgXN{<1;>L=AKlws%Q(jV>eaG+R2L?tv4h8x2?@arh3b3VgZj zfOSpe_Ce~PAwNzSlqm7ZV&Q;t=@Y3RB7fE*>r3umY0QkvW28Iw0W)5KTqdX+%)C9J zpzP|!A@4MHh*-<@Fy_SQRqc_PsilRdhXz_=vIWw!D(=N zN>=*`S5M?1uhH!g_0%at{2Qg?;$(=O@G)esaB~Ed-qmse7?y^fuECv{~O2uTZ0hb-KO=Pz~QqCn~+qRJm-+U+vn@$^>Ek$7#~Ua2NM~z6EKs6$i3(x zsBSV2u`eO_^^~!EH?uW_AP*3P%EQ`SjnrtD>8iF56}5PBqnPc-#K?~Uy(r|eAgl20 zh8+N9b--IdnEpS-)&57`X|B=)wldJ%$ol_Uj{g~VZ9R+&E4acJ{EG>_D$|pGQ?~TkK$_KA@4MMgi-enpIf*NZ|^yM^3+*U zq4^tS$H>^;vj%Sfwsy<8Z}Y>r58)){V9$&|P8`E98$el?w-Kmmln2Q z?4Lc!&#uE3xW}u)zOnaTld9V1O9X%%6a$iCTJFIx7LedI4dg+MlfQw*O5LbQ0D$>b zs(te>^#F({(0`|03b5yYSO1NI-)T1fQ76d!zXRcaM?=_u`s6}C(lsxdw$(v%$i4qae0XI$XBqUZ%S>kWR34|^r36V? zmDceBic%#nK!m!Wb}yj8hb%o5o`>ZOfc-yszmHV`m~00k{=ee~|2t^>KVf0ViGQUm z{$a)1O#Fkt-l$$^{RR*JZ4r^|onIFCueZoSP47#Oe{k?ugMWcLmlMu|hB~J2DC|UNntWkGFBA1-MU#&+OHx(FA4$?3#!vtf z{ppD5u3-GB{I#a$>|!XU?f`KikOr!ZL5R8bKh~A z1)t<^<)``A^LhRO{*(M;{1g07`Dge)2`36K5H1wjg@~|0hzhR~#)aF3Bf`DHG2ubs zv%=SeCxxF0zZIVIo$PzD?_yuj*Xg^?x63!|JK($1chq;E?|$FIzDIqJ`=0jw!uKpC zaGFD$c7kx0u=;bDzduKa&tu~Agm?rKj}YQfOgu`6FJR&eg!m#RzDS5KVd6`K_%bHG zOo+!Y@fab#f{CvX;;WeWDj~j(iLVpl8<_Y8A-;);ZxZ5hOgv7AZ(-tFg!nclzD(}egjCVotaf5gN;65=PA_z5BY2^0TBh@WEOr-b-tO#Cw;eu;@+65<(5JVS`z zW8(LO_yZ>XK!|5C@hm3JdF*whvStnBx7VFTP;CWQG490lj>7fG1$bzDrVnw_>K|5A2R2TO z>`OrEpK|%#Nzkx_viy+E+)y(#peU@w3>DNs=C_%H>!SIQ51}nmE=inhcg0#=7`jTr zenU{cNE9K&Nni2uQzIL`ckH_+?AVrC_=BzXZO$Ca(V>LA1C2 zXI0f&PV0XO;={Ig4Rmeo9qb+0-L~}We=7gqim?CRNaO$Ma`-Rn|CgHU{|6_RhyP`d z|0etYk&&qy`yYS&`2TOB@&Ds;_%G}KN9F38Isbe9e|g#a|D-1S|Izwmh2eiUjsJfv zhySwvf2q0tf5@ug&Hu}O{%^Mbf91vhyn@F6Ps-uHtp6XmA)7h>d;b69VE%8i|6i** z{^u_o2j_}AX6`E7j0DCtlk4V)BjTSZfw9xrD|NIvx+`;|VLfL=$e16(j zIDjVp3m{3+0gTk&5A^nRclAdak)lYylL^Fu#ITW_Xef@76LrT^aY(9}g{ZSg6Vem4 zLPTL0C7+zSt1ya&;T#x-aXbvqL{T+%-7;(L6{sUm6uFN%1kprhPcoj04J7s^GKths zBG#YC9ZY9N(GY;G)sm7%vJWB~7b`5Aq-5Kf`~4|0@4D|2_UG*a`4+{@48P`2XUc69nNT;SAwL!nuN9 zxD@sUNJ3b+TIdn36SfQ23$GCN2>XPTkb_+UuN7v6*9mVF?i1#P_XrON4+)&kpLHLvKSKkS~Q+#K_4ubQ2ZN4?WfKTyV;k(wi!MDXX;Jd;1 zO4v_ui*LX0R^MxUQ@*=>f9t!~_jX^=_g>$JV0Xc%e2@4Z^L@kjUEdFVKk@y{_bcCj z`2Ohob91HBs(TCPaonmm7tV+FErko9eQTi&+WQJGgZ6EOOQC&x0kSZydPiX`wC^me zgEn92fOftRfVNP$9NJZ( zh4ur5_0T?0=z;cwgJXkAKJe!Ks|_64;QvW`_Teq zhFkTq!T_`%FGQjJL}4eipDIAbs8ydX+yL!o3O7Rg*}_fGey*?^+RqnW0qrA&o1uNQ z@JeXEP>4bM#li@*Un(4c_OU_++OHI{(0;Xe4z&MJL{I5!Mf7~WUi3rzjUswV-z=i1 z^mq|HrEe9{Q~GxC<9EWPVgc zPv)s2dNNNJ(UbXc5j~lIETSj#Pet@hep=iJ?LQZ*5f!&lD5T{(BMq>faQT(Edkp6x!bw z$D#dQaX+-bFQVu0hayDauX?t4E3|(s-UjV|7GDkRe--b5_P>jFLHnm;JhcCF%m?lN z9(x|N&mB7n+P@rwjXbOVdh9f4|L@otfM)L4nb7jbUI49d>_yP}j=dP#6OO$E+7pkR z3+?lcosZ*x`4c%fSMD)$u#iFX(3O)H%#k{le=yVmN_h`ClJ`rn5uuvd$xWMg`5H^3 zH!d(|GEbQ(O}MB8u`;KAHoD0 zj{mT&nupO35C3Hn|Fj(b7vJ;ehJVZCS3Uj(Ugm@^LgO9PJb~#`isv9J-#O`-v(cjU z%yars{=ZPkRz*rIkeXiPI!As3^0JBWzDy!9N(=_MX@6eCFfBwcVS$ z{~z))!x$p{U*I)PxCa{VsPYL+Z7ZIKnC^u;4)zFJ@jQJ&LE#P94-8RQF zxp+309!;k+!^u=Up35a~iDzzsx;u%n@i^G0G>8SZ>{AW3;=|_ER=_dp#8kF;F2?bp z!#LT`!3&^x_3*S#aLuMTbW)%rA(>$M>Xfi8G;Y%q~VYf)2>Q8VH5kwXhn{ z!tIJ0P*A2A{Le85={Gic)ub)tFK`|*at@U1mdj+n2o8f9i`9w}>H~<~^O1}=Yv z@OYd*Fc{IdahEs?jKL_8yy$xK84n~!6S-{6ki5ApE^&rD0&q>ko;!2?Zvp$ih&{Ln z|32<)PIxak0nRqLe`<5lkDl~}I}dl@C+*)FAHF@Fg6tej-X9vvj6%w%(#&1vhsO~24V(R+hOVRUN8$FBzE6#lBmd#P9D7dC~ z5LRB1wM?GWld_jc0Q!UGBi)kBLF_~-i4?Ag5+nDuOM&|Rf=mIh2vw777OAKYWd4^p z;r%@LO}wM>6PU^r+lbS8)#0sJHnwd|-=0e3m`sR^29*{!>Ik-z6OxRSuqU~d$(DqS zZ5kZd5NSvWZ$k?pdWh8#_RKH0!a5aqVrsB>5t0Cx>^vO75B;KTd$Nhlt??X0Qly!W z-bIqyKW9E?`o+bUtT+o)vu7sM34;G?Ibn{!wleQ~SCl@1sSU-K=`%Y~lwP)>M`g#a zAbvzuLP`*it~dE`16TmYNX9Xkh|n7hUWA*h8R(0y)paEWtWXNFM#%w1QyJ#EP*BAA zCRr1ajNfT8C*n?kT)h}Q$&2sO#p=bIQo|6l1KGp0QXQYv8CGTVW|FqfShV#Y>Q4boON5%;|WJzN9xg7}3)#m8{Qo<=n891Ot%h5R{^Ts)*=6 zF|4-3Yf%3aQBY|~|38FD(TQ*TP3BPaf+@+V=s~gMP7tuD$`k3Cas@{I|2ItW$0O(`u}Cy#)kbH;|JqO&=G2R$o9{f zPZwT{88=&s=eh_M)!Lsc>IA|66`WAyAwJSOs(%7gdx|ed9C`W9!<#YsUyk4lRfsbq zi8`@Qec0qpKt6e6331;FmQxv9PG3=6i=Ohjork;eQ(lXn^7i<|Se?(<_EGy2MlUbn z^KAvos*E~8^#7+hA;UdgJ?}4rE2qyYwj*uyvPpjCRLnW;{arm_c};h8AQ}mmH5r>) zso}0e|2vkH)a^`O!mr{TK4|d@1tlPrIV|a|jVC0E$3Dq4Kr6L(l&x|qi(tyD)#8l% z0O3>X(7;?gc{<06XfA*sDX42s6@b_|Z~mgdlq*J9{v z?2o?zx|6XwaCVG67;-Dv|8OS={-5K7zu}%+2B>am7s0;TVnyDGOUn!9h`ep8bf^%s%#iP{2aa$~(#K7$t-J!3PY(h4R( z+=;1lu>%drIg=;raaA3gvYB{djH%z3m=HRYa68x#R5NnXArr{G%n>liMw$m4op5>N ztziFya7JVP|2ZcNaX)V;xLW9DQ?D)tkq)``uERHCmZH|QgB8&qaI^9TN%kG~G{#(KRr=U)d`Tr44cn$YR3qiKZ zu1sH1ln`sJoxE~}1lC9<=m6TG(m7oB8{xQZ(S&v+j2vhX4=u`&_1~D;rHI-dlC^e8 zb)VVkFEiQAd>I%Hc3GDJen|EAB=#m#$y_p>GJH#BMM6uLMxyqGE>bxJ^5ycQjee`G%!$!Z-NC5Y_{mN^r?A z2_zAS8%dH?jkUH81xY}TfqA_%WG-|;dn;J-6x5077ZhbQ3>QH(^(aQWyfL0iCy|^k zMLG$E9L>bDSxX>yh@pTA-a#=K4#=?l*Q9{#t_N86whaY*9TLeD;y0sjNgvFP9)g~L zg#wR;gaazzdzg}!y#`uRl-aoc&5m+0K4 zb#D|SL3tf>Eop>{8O-`eCfLfa?)1_kez?-!fd zP#O59Pd2y{)2oXr8kBQjP?A^#sQQ!JpGn`+St5TMGA6A#BuXpT|8OVp{LioEge)}P zG4-lq7?}z#jvn5L88l3+{2RLl`pdcuO2W--pE5a+cm_5mNA|_KhK43G@u5TD78n7= zAN&J)Ix4%!sNXHXQaM|pQr~^x$f=v_ERqY;r|!j~ZOl+Y<`0MF4Y;uk{&|8G9!(>HP_C3gU{wz{ha9l(Z9aYb zOV$#s{^xC}|K)n-qLQ_O{ZF;*e}CbGJu9#Rz*M|=6+-$sJ9YchRnd;?2BVwHE)hy* zdh!XA%dSfdr_#ApA~u*wj-*rR@kB0@92!l;qRCt$wi&joWOJGLSSo3s=@+;-U{3d~ zVC7S>mG9i*l?eG4!@Bp!)>z8?zp1a^wxdGQ_fu#=Nrashn&h^#0?*{8EO2zs z1^=yJ|HDPy$@~xbf2O_sKUL~KQ(KBxBdKxOj>GFPKVRJ+-w(Uc#t}!WY$cYdB2XVQ zdDVCo=?9eWp#G_fDIi+GFo-Ht-aK`v*og$hB@hs_2|v)zt?7wW&fk+91Csz-LcnGx zO;M#_IHX1lNuhy(5FC73C=!+-FI$PAw%^ly*!aa5`68xdKwGeoc^2)iGQSY-OqaBv z7Sd!bBB@%0X(kL}D)T@7!V+n%+f-vb+Q1wQGBPe1F_O45|3KVL60m`7+=&RDTJr`$cfcgi&r7H$SZN z*5(l4x1jvO7({22Z*2^~4dtKNLAL&nD)Tj8m|F3FzvhHA_v_^c*;;x$%@=#fI`s6z zyD=a3L~;Gj8xydxo5_Hs4rmBK13MIC^m2~~vfa{TJp5V=e~q2v7Vda<_Q!?YS|Jut z!+V5JFLskbFl_(b___G|`}!k#LG}_iU`=5dwwsxcAHNpshkY2>(*k>`h7%~Us;vSD zm0@uSqB2lruIA$(bppx;a98p?$MgId{CWHuUgg*G+xS=TN&Z%T8ft*#`3Lw<@{jRP zK-G_D_&*6J3NH{YggPG)VS^AAUL}k}Wsf7my}~i!LE*Dd%i~GmXTooV=X@ta^^S{u zL0_luI^Qm+*Kxpir|+omKHvRNq2p2CjX*Ak)&6J3N@kBRk!AUp56 z3DJY!=^+Hke%ecj4fvf6gy_RWA0akkVk05Q8h_LO&)%DW$8lX}qTLP4q9kh}DT$_J znoUv^DGO-zzF3wm5Fo(~Ab|!+?X4!z1X@^{Y5=52ZALd}JKne0j+cZTHJrp*Cvlv` zPMpM>ygQDaN#Z0klP{mYnKv&l^Sw9Un~a~6y#Jh2b-Swi7DxaMqA0TClz6JUZXMiv zwtMbb1lZ5t>=!`tC=Up5kiR)7fD~Hl6`+s5=@Z}(1BV1S%)ns*1{fF+KoYdG0u1su zg96Ao?-2ox@;65XIL5#+0Ul!DApsa08al@21(` zID3QP2Hd?1hxhpzt!XA3dvkAq5WE-ywekP%mYEEuCf)>FdlcA&hKoVw1^++t&P@Mb z+!uJpkB&)KKNm9tl?Tu7We3!ms^qimMLbX0Sr}E0vSMK*4x6Q_Bd7zMiSYlL+|xXS zqD}*95a+RcIe6&AiQ*8dfRaBNU?>@iZ(9h?@_}-u0H_+3Wg@?{XKQD@GEQ2Y^$re$EA7%K_ zwbP6oLycJMA%{>54k!Di9FG3-xz33K0Q%WD)c}Jp-mb|n300-M;G$*5xD&#sGlBnkH6Lou2#_eF2^s%%GeWrR15&M zS>ThtMc1A-8NVaajH(O&d%^#oBqZ4Wr}}>{Txs?HkbQPg>`lLs{eSTAp=?j*!1DEv zjH4*s?i2`D%XiRL6g&{_c?XR)ejP2TJC<*Wy)lbszYyTHbvqQ#-Z}U z`2(~D8_Wj4w;UMg+2c}#aZ$3IhfymqP?##@XUy4udZv&=@bBbMzQ`?@ZABU{jimO1 z|DSq=8|VK)U*LWIpvTq!s-RaHJKsmP{(WbRDxrPZVxe5l2M-p&&`@Jh=OO+g?f$0W z6w%5zIet;Ds|2_B8E7x$o>?N;TC*)kdEtD3k*G|Z?{rvcYI$tZ6q|t7mR46=04Ihz;|FWw1^*u-A@=`2`vTAV{<#IL==C8` zd@f6**fINn5t5fZJTpF4Iz=VF;?bQ6m%@OKNC0Gf#1RTWjWXLis0uxmrH&;sT%8(j z=x`_<#}DW~O^!b2`xJ#5UqHvlqd9x&|0RbCG+W*vJ}+!O8Hvh^=Lcjpb{MNMV4IzE zOrLP&SPditpx7DKAcMG|P#C2FP!fcziAQ4Xkq`>KI0CesFVQbS+O{uf?Gkvw51S$+ zg#VHM|AALn{(s{95hAU7XJhAXV-M7kgEP+*(7kV_JOW;i>D|oEW2FoTC>BE1`B+An zoXXQjLzx(kn&8Y&gWjkVjf1`%Z&KvdxDO^rDG!Swzx4Q0rFt;rMIftJNYX)jmD_+Y z64-DJ(!!BTKw=06skXnfNZS%}gLxRW7M2zPwgk*eV*jVT;HhOKg#Uj`^*?{?b>+Qu z{Hoi|A0wiQ&E9zKW|juWI?p1wcPiLLZhVf$kLztvr$h+D07d*?2f_f|Vo)_hE3%XC za>i?oiqqtULXDgji-TrNU3lLMn^7oRgaDMzA0=l?rr*fNJZenkp`oGTFjk5eDz=DF zfBo~$)o2WFSrC-RZOMY@OtAC{IA9lD|DTay{zvFf;GwJWKb5`bA13nK-aogUg~Y?? zR$4%UI@t^Q;8c+g4)t$+N|BmzlN7%#+H~oPUrSgku(4dMXCJu@DDrXF`G-j2CT4Fi zP5>V=d9hqHIXQk&MpzWhegh z)kWlb!QqO^bEf_OU0>j!@4HLaubz1lxulO1*=>aNC}EY45A5zay1Q@r&OaGPQPn`f z2qnSUUOsoUFj+W@oc77Qm7*?V+6?Elkh|L;HK z3;Y5uS3k?00n`S_kqNOQJ9iJ85V_9rz2Bw zGF~{IW+W<)pMQepb92^cvG#<-Rs=Kp-5MmWu1_P!b>JB_j~5Eb!2GuA$fjAIBvFSF z;&Qd?|1uJ?|NkRjV9fVN%O(Cx{(SWf=kug+w#`P)UB~Q}??p-3A#Hfs1xw4M!XY^D zQJXE4ZtsXk7DzI+yhKry+ymXXgqKk}kCv2}aYa+FYS4nz1EfYspd{;)vRZceyZpWCf@r!>?Fu*-7VWh{Ts0hpd(IyxvtV2Q+%}f`$NNj= z$w97qAc+_?*u=EMn>VGfn|1)a;@4wR*$l-GJW1Rt{`4ouA zP#tg+6Ir1rUxvccx)RKWH4X}sClqm+V8iL8!q1o5?n_HvUPv#=5E9i*=Z8tA-aC7z zQT$`Lb7F!De~uT&NTObp-bXQh1PtTM<-+pRF}j-h#(k2dtv+jUN6<_rJNMv>Ak-06*oyE@K;^eSPfod0(Z#<%iO2I2jQ|MlXW-k|0std480X{&u)! z+ISvE8xeOdf&5J&eW5gU_>H007k2zO8AxJB6{i1%LlOFCD1r*X4!LN3i<*DqCS;>M zC3DFhQ}Y-g8ovk}wfY}9$6i<~LPGTao5}zG<|~`|m-5%cJv~MOW5cmIDHb!<+0&hN zW&}yBS{^A0xol?>(ee|DS}j=ws!)~LE`VBvHH1jxmqD|(RWN&Uv`{V;hb5CWlB5~| z)KW};sKuT^jiSdXwin2gkiY~#Wt-rqFkMM~EXD#8Ou4g|g#4_UOBu>ahBn9Sat>~_29^i>e>k&L_J6-G@CkqaMKJ%>pIm4L;F>BEnJU** zxwAY3|6Wob>+0r2FrH};Xn6>nj{5f&on#}?fu5|TeGNKH!}Ld%qFdVQAjqUN+O!;k?Qq761+EGZ`FUWkM16cGb4g6;YaZNy*#Jtd`CCrW0!c9QE6P zh!?i5j6|jL{1i!Acx&Z+c4`;etDP$94`^L_H5iXrW}JtxN`cmQXNX3;;HzaMg#YjG z1xEaLTtWPO5q~P$%$y?f+MYGem`?2~6rUmz2!#v(q%wH^85SF6 z7olf%70MGc!xZJ3(8s2c-H=Rbh`8~bg^>9s$qn1CUlH@t%UEh9h!-}h5kdmpnNHKZ z!s#b13{LMVjE_(Swx;dC0xp!sGipYS+JNR6N{)X*^K07*wATL@@q#avkzoG!{a0V$ z3@)$WPxZ$0&yoV#KD*WkK7V%C%vf3DlGiA1#c0;4pC`4YT7W*^h30pq;J(SBQ5;yG)Snd!r91W!jt3Pz^ZlF}ur)NTGX|nw z*tIeeaI!u}v#Ok|&tVesLo+A!dw$U4jCCfB8;vjvWmvT^Ksy@sf|Hez5dMFo zFYrtLH?A6!T$V4c6wkjXTiWZ4KC~}(<;&Bf`4J~iH{8?qruM@)`J8xQ$atv9{x?Un zkf#i9 z*RqT8tzDxo*;;!03cqg5Edvcvu=E+#3RW*TW>HDrwErW%z(@R%)nuj1=G~Qit&ON` zTX9YrW>&jVA}m-q8+@cxcDNB5`pB;M9d@W?07ZXvFIPC5!=P5iURibTfwaLW(r)4G zJ5dYJB=0C1H9#v}rRhR&c*nj|rDBsJ{*-F0xKrG)g#J z?f=XDf5%y2j7w|O2?izvm}Fp5fD!{G0ZuY-QUE#BdRl-oe^VAfy4y_&FwNgg3oygL zi~y$?I3>Vo22Km`3#Vh|DphIy(*pbw1HVM}f17WMFYv4W z0{+wdsXSPFwP96BQOvjP?q1A^3;kLN+ubwe(#b-8QuW1H$wL;T!mfTo93xTLRlA1f zaLci|4Lt4V%naVJ{zP!JFph?T(@idc#$$~srTk$yvk|Ck*}3jD2EcvQ)=rXvbXp=6 z7KfD9RQ1A%0e3X5^w(ZRv$(N1cQ4Q4oD}p~qS3{rhtxF6P}V72SyO8T4ghp3yFdrF zXtd$~f7TcHg8$iO=D&Jp1!ti0Ky3}t^M)fvLclxrDX>YS)R&^v1a{*5W_Y zgRb29r;1~I^6w1o*Sbt2Xur}CLt%h~aqi!aChHETihWeY=IS<`|Fxq>FV z^iI>57YA~)REwPpovwhJYOxjnqUe_ZkKkbK z1`@^{{l;PIyLx8M)k& zfj{(TuRw-hi9fkARJ)1I($hu@+xPD4PB{|>#A-l=4l`XXg`&2Ja6Ft&B$|5$(g2D| z_e~B{FLBfqS8f#gwqZ#$esICU6>)v$nne0&33mlHu8Wrlgan)_H}W)R=XS6m@t(ci zDSe*-R0U6_nk)qRxti3yGm|6vvTaUnjRT~WLlXN1h|jdDtP)S58B{!~pG6j2n#{mt z6dBtda7_^s%>TZ>_5}{%@=E$t%C%dFJhr_!*URMbez1kq;cp5rWoAr8sgY+Re>9v* zgyJYb6%R)>4A~eCxSaETR+%2{1l1-O`r{qWR#k(=3K#a z7^N?o5_IMHk&yohw$%H)83RcbrI8Unp9EDNg6Fa z(Wt}Kp0d2Cc}?tDRxMr=)3nlH>0(!T!KsP{XQuwo_ySdb=9R?$EB?1s_SDvqe1Z2) zywM-r-`Snix2AJR@Zkp(sqRMvE430rmcOm@oO0r|HnS)01vefeQ8`mvOEP0SG6D9n zsQ!R47m%5HS)E3&o=_wnPlq8b(cky@1Ibt-X=MDPuuUY^EV8X*HcvWUWHq7Gq@zhD zYkb=ajnWE~`JYUnhY)sp&0;wf7N<+|HxSrf@c%IqqW@p^1)lc3yy85wf-k6UuiZ*S zw0SmV6q^3<0rD%IMt=$20g<*dsFRnWK!)ZJ?6W1^j=DHrpAA>J7E^v``c?DGtC79Y8Vg{N%}*GWb31bO0Jg0yXFYuVoUkv|2Kh zHbl?$a5xc3G-prR2emAY@va=b%gXZR3hiV=t-EldI9Z%7mL^RT&4Pil)1ug{#bSv> zRLlP&VzvD51^-{1kP!a=sxR=U@2e}wo+~_bb#3i-BC7SXo9E833i-%^LtPHO7gw@* zlBQTZn&ECTsL6`nGKpxytTC_gDPznAAf~!&sd4cqCbK=mvZuE znv@;x=(%vZ7hHC6LZZ5*b{j3qHi%>ikNVjI2x`dBAj2=|te_%nj(omQIEiXKqR=DZ zSSTDzXEL!!0(E`Vl10!2FoDH#-3nOV(^xQmHA)HaY{ z*o3Aad6w26J(v%6p>vzlRMVdRMN`xVBod)Ep&hYA3SHaWj#$iL)fybk=lDHVS-tdW zR$T9nk_-QP!T%Rm{y+ag%KtfNr~j+aVrQW8Z0!!B>y5KF8|A=1ey~s+aVhcHWQas! z6rtB1LxBNTdgkF8)NFu_ZARKp8)fX#_1oD42@_~Sv|MPPP^J9xR7NlP{ zrj~)m#4cS(XzhP5`2XS!|KB!WV9LL3vGjh0{JwIq_By7kqEQI!lLt!^PP$_ImEBSc zruxv64H{#hL1Q-NZFK|?`UiS|PYH?Yb+tQ5Om0^mfKMDO9)~4F0YFLTL8;5GEfa2! zhuaq@0cIVtG2`+c+6356Ol>p2tnHc;FBhTd1^-`ykdX8LhkSwG@IQ2g@be}4Gb;nN z*OSmtbw7T7Z*jU5eCX)Defx;aV_N5gb{pY%P!TiT&+&jn&#~5+v^s5tvojBf4nm^R zSKCChy5-1Rgf|YKIyiH-M7`A`5$%M!oV+xiQnSgoFp;Q=X$hrJf}ypCF9|RB{}>7J z|NWCMaN74zmxM7^^Ci_+*Mg*ZHY2>R!1QyzH$O@>1s$tTXYAcmC}>eQVYwNyH6cbE^5aMzCrjnU;|uJ+e|C54O=B~0sO+=0y;qi`%0*B zqGe@~jpj;p#3HuoWNI2F?s#sXZ~_5A zlS74E_RQ3DVFH37Z9DLnP&4!3If7VXY2uXvwMW7cy%(A{lv?HO1-Bm>?tYT zfxj>H=EqBuD7pkmx`^~Y>r<8q=b=a_+Y+jmZXRfbvKRb+3FZIu{j)DHfy*oZQ#o6^ zoA{V|_8nn9{&X*CpwoIrcB&wBlY!eQ(T>KNZZ3LbI154X@KzRXk=kiS#)Wac;Q33k z=kMm)cCi398?it0y@m47XmQAC^1HcHP4hn%fdP@D76Oa zh=&j_(vd;lfqMyS9<)Kl^a`smS-N5}X|`hlY+T6K3l2ee@Zk`Aptgf-0aZicmwJnn zlX_upT4jzs8$ZyPUwYg+zcvxEl%oNi{)e}=<+jwK<9`?l@&6A}{qMoW(f`$7yUjr5 ziP{_3OI@6MfCa;6dUu>Gm0_fgl^oK+P0u-LR6XAy)SNk_E4401p=qhs3+_WW;=%TN zYWL6#Z|k4i#xwjYy`@PM2<$})pL2?>F+|R3Z9LSNSGt$ufvgj|bTO-)NiX>Sk`4dg zI$z+E{&jBjd}ZCoAwfIo^?OufieKyN?2e{_y)aXYBl$@!3&#`TP&l4S#M9{vg3%>@ zH62ZclFneXQ`oUI zQ(!90%^x-2B%=tA^?+_7Bq~qV?q%g(G7_nOm8Z-x|BV0v>Y*ex)n#g(-dVoem}fd^ zXb!_|3evIjFmBHYiqEvL3jclu|RMf{=eJW)n5R2Wxl3-#k#`^x(!OLlV425wrqXa>^ zx%n?Y+?Z3nAV}LHDq4FegAC8rpIJsi?0>}n|JK#`f4fAeuB(NK<~B~8yN7A+xB4FG z>5l7<1B;W>6vqJs-=UnRNC*`U$QO}7qK$sTk3t!%Pp^ywf-&!-RoT&R zq+S1JU;ZSl{t2!grZ4{?i{r5UZI3lp#TbmDHEi`imc9nf)>kr$NDvRqXT$&J^94Hn zcJjYMAUKesL{FRgjncfo-A!G2f+@Xn(UOw+grXw8kxSVWNQ()`3m!OB9m1*p{k4er z^dCQW4a>>@(ARSaM{#j|ieEev4TU2ri8n&YJmGXI5>3*+$@K3>Q^@UY&&1&2hg@pM zxqlj2J|P^vbYM#rX-|ftNc(rPwDDfG4nPEqjKn94Ff|Te?3sQBQrJ78tUw}~j%b}} z*fsIK-IS^qgQSZ*^@9Ho^l6^|Z}J5m_HVjESpMSw%u2czC*iO;J9izE_GkOD$GU=< zM>_P1=2%Zw)5ljm)1XU?lFK}jvuT*VV+VtoZlk_bJYfX=XtwC6*3D$7RV-d`(WN-T zZ(A)!a$)`K_H$D7{CD~W_c-?MZthQ040J@22$;ZWYYah`ZYO;hwlTA%nNx5G6mo-9 z%WGt2JWnb7`ig$ap+b=q%kh<(@<4~J3;%n;|A&ev!v9A7{}Fxt|6R3|p&+*~5B%Pt z?9Oc8Jxzrg#1E4%md`W^X7dTPOoy_$Y#+r~*eWn|(zBF@%}kI&VUs!q}@BAHlb@pFf=J-brQViya}A^qMmgFU;*NDX5mt?I4y zbLa(kV2a&={j~&3;|XI9f0yPEmPSmUlP#nuegOJqthq>t8o)WPDBWkV8CpN7Uhw~= zl>g87ZC~IIaJk$+)zMl;T=ygAq>|Jh9L|p;@V1CTv5`#FY151PiJ|gGDvb@hQAH}5 z48>#CauZQh0z~j_I~58+ieGyy9uB25*fOU>VZ`HN=Nw1-z6gT*P?EaYEVZMcC{5i4 z8>7dih1_h4X;)#gR5a=YLNqd}5Q(u+Jej1j7$}dC4(sdBMA(0)wA14L487t?dtu|s zNL0FNX_lx*j3dC`Kb#+i%6C{8B2mpaF2{yJp0KP44M2r~Y{`Mk4A;^rCg{D@-~Tfb z;{RLY3%tj_=5lBM<=~HKp8H93Y(Rrq>Dcx8p6p&c4!#TqlZwB08W*wf{0U(p$RM+2nc~ZZ16Sh0Q3u?XZ$cwKoz^Z!gY0 z%C_bo9xlP-Qb1PFlDqy{M^LNKMd8Aj?PNG7-y{QqWO z;GF->%i*6Z^I0gN2Z&&|^v`W(g8ifZ{B$05>@rOSzeN#g{fCWb6oK+BvhQu;ptU~4 zv==s^j6~&h?M=-0*>irL#xES686PX1qKN*u-qkWzM%Z?fthGL-=F+%{*+fA;i_d1eakvt7 z5xHJ)-@?i<`M-|4Ww(CMoOia3S3l*t+VNZK2L}NX>zUmijBt_Q%q8v1cvSCpmj|Z(_V1XG7?w&|8oD|UtzWLE7BVEGYou2fL~?c zR|WVr27XO|UuWRg1^5jHenWuYWZ*Xi_$>y0OMw5tz<&_nw;A|t0e**p-x1)m4189A z-(}!;1^65TpA+Es82CK_exHHg7vK*V_yYm{kbyrG;PVW8UVtw!@C5<>h=D&6;Ex&j zV*$R%z!wGh69)c7fIns6PX+iA178y0%M5&3fUhv{6#>4=z*hzM8UtSw;AIA07U1g) zd|iNVFz^ilzRAEh1^5;N-xA>4418OF?=bKk0lv$?cLn$!1K$(i`wVV}lTCKMl*1$^mtGsZKf+`8n`Uh(d z(rl{upFcrKwS2ID26k26CGkg0E{E^W_L!Pcx|=fxvu+laZenTo|6Vv$NfQ#X|G(K6 znDpOla{m?l-^!!4-OQ{H&-E~~ekD6JdOBY|TNoO1W!Bteexk`}Z#<`n%X+JcUHkGA z#p5V}x3lM9uTgS7o{ojmNra=Ip+)9`u_;`0TXR5~#9;vzy8ZCLzTVxvk8bTL7YdW7 zk;||Z+l^-8OlRag^+?~o!AG|a7e?@N{1P!csdyq5%|uauBNLBl17tFhC_A>AM~w>- z)thSFv{mYuy>70=^ZVs&{^ZF*Ik>ktK2Fbhlej@noQ zeqD}UNA|t#+-2!JZf>KRG1G6NGG6fiF%qKxw^IJ^v~R19^HFncFWUk|quj#F*%_RZ zIJm(rlEWc&`O(H=&_GrxYdiUBwbM1T0-LTyTLgqdrKi?IGrIYRQBd@2SyaEA97YQ| z$E+@RdZiv}%%?ewbxv2n9LRXVbI3>_d~**?<;EjM_~uu$g%PA$E^Z#_3Cko3*d(DN zX>`mXCn0jGQV0_yN8ts+1=-ElEDa%&SHJLY?h^r0I z7_u?_>Md9RL{VB!16rW`by&IR{}pheF5V(DL2fgS}0y?1Z!@ zO2at`Rdd)%^n{u|M~V=l1|TDB1k6EdW>`DIC@F`Cl@+3uh%!l8Ef_}WV!ETtod=>- z1PR!p2Y6bijPurS4)!J!T4mpuR*3+_@qQ9PT}^XLli1xkcmz8m8p}$dD>kE83NP%) z2npH$Cw+mp`jd+Jum0l#Gl2RNhlmb09W#Q@zB||jr5#V-qoqZ+lPB|`1_hR9hNwnp zR|!>qnrwuYoj=9G9`FbV5|!s_ePjykz~QO1S^5q__a}?P`C-^xVW&I5*k&U9F&R%p zkvEi3ahu5qIsv6q$y6pyJp!GKZXMJz-|{L zu_Ww>q)Uwj*76!tEEe{_{$G#~{$KA4JmFt|0iwTBzQ*=^fS6lt&%eK`P^KF5G5rp} z#r#nZDQcrTptP9nPuZOJySL45H@dQZ?*U~qBrgMP0_I6GY$8XGN*Q?>AwmmeN*6vV=W1S+XzX%;(<7!`p2 z0(JX`gW3FOzDx=K34JvNw~8u`XVvV|pg9>7^NYH;I!j=w^_I2z-vj%9G%r{7Kk9$J z^J@Li#qmE*qK`6%n{C1V^5N2n6At_TB9BGrNkxqUG~Cb17F}+hs*VyRM`)E@CX7U- zTsuOx!bY?OljN-*KAa!QmoLsC2yc8O6=|o~Tlv4H9e@nhm}MT@%IU4}05+lFqW?Xx z|BrDAIM)BZzsLR`msi{e_UA*yqw8NhmtZ&CU-kCvbFirWj7^+HqlNNBesXeZtTa+U zT_49@5@RSb>Mf2JDOMEzxsh`I|QL;=+-#lYZq*CzXCEGI; zUXF6)$db+=JRlLGP9bP5kc#8q(G1LFq$S4m0qC*F3T!|ZdHy6gVE=!NxPB9k0*>$! z{l`a85(x*HPifbw$c2{FmLQr0-%~@TSi-%6vN@nyw8o8wlx+d`>yXj&KbnlKdPGKy zkr4iW*%x?&@8!#x{b4CS!rFLh?k!A4f789UyH86(=6+pR{bXr+YFHD$Lys$h=`PGn z6Jt;1_U30!P7jw0MFa#*O%|rlS~bWrIb5rsy|7b^5E9ja+QY=DTV@ZPld{Hty{j-j z!rjyKIXZS;jf9hkX2Q80YM()-w5^l+isNOn;8!th7O+@pP@7Vn7%-V5VpfA&^@haRKCoaL(?waR{CV= z+D9uiyx;(gumf;Y?NJgM+tKsud6vsRLhfyTj0(ME!p@UBx7|`h-N)La35XE)Tq*15 zYW9trm~|BJa@*T4C)~^w5gkz{f-d~;fdDELk1+Y)f15Ax30$szWCp5%+7m>z>(M8) z$W;6HeLZ?(0wurFDDAB%G!{Zo3d)7R`gS)+F_@xFrMA=we_vtxbg4XMB~-j6NJS~A z+PAGCU<^f)G(o(nFvJTiOhuPEv|LEj3(mg?JOA>v$5}vU4d>tAHH%o63QGFyVBO*y@% zg^d6sQN6V`EPlS*=3eBP{73pjQ_)?!wd{&7NyeFW6*=`IsJ6k*{ZJY$zsYOR9Oh$= z>6qbE6a_)^lT+aBUFA}Kc!vjNE3|J^w`T^yOA<7$`eHkadS>vM{pjhm1f_S`kw zAz_OefF!*TPc2APj=b~?&FYRLa~YBzYyYJa)qRn~$58-_>Z@XV&@!(w93~chu`PE0 z%1o>WBC3-d)-C?OANc~~z8_siTy`<2R&RXiS@AvHEXk&8|3BouPNGUAMUFTlOXV2Q zWJOc&AjLEqft#92(YqZiTL)G2WZWcj(g&6~xODBeBq064Y4#N$FOxx;u42qI&yF&k^U}3(kL*=k}-6uyd+VF6XCd za`lnbPHBu11nn{S|8ZLA%KMIS)zmlc)8yMiu$QgkP5#&5=feLUu>X@Bge?01v)KRp zK6|b@6~-2I))c{4YZNeK*=tdCBgu{COK8M%q{QF7i47}P_13AbmPu6`j)kwrT##8N+sZJ%AFwc1CA|@G8 zL$=Nz$~0*49DCr9HOV9(`v2>`z_0thzN&n++?Q9Mthb4R$)Dp0z;$hVQRO{&fG*T& zNb6>{hp3@}Qxx6hsJ28Z8A2imBGHnOPzptQQ2;BMN+l=*EfkHD0g52CNFtra9W>BH zY3b(Va{K!g_0jDdp#@E3Z-BJ)D4>Q4TFzgfS5{sKR!uSzl|%Ia3xqRsYgr%!9zvHd z-ReptQ6!Fb4ARvll|WE*Ivq)*P*1Jt>{Jb-7K!dOt&inrd^!^kL)xZ8QN%7b@4r%E zRAA7bp(eeMbsrZCExmx;v~m?u5vj*L89_v{Z%Bh??ls;F`mg+?eFQ1hQoScZ5-j7 zn*qZgE1rNRmNo`bGrS+2eJ2qq>}d{2??N+)B0LO4uu}ikTS=nF@_^!HwV6DOhqny4>_TD z57dCY9b604v<@#9Qt?2jXp%!ktNry?(`sy(efS(ZNY}l(zpp!^_q90IAre6c@+gcZ zRQ(7g*|37uM4J;>QOP(CS3+=}#gW8A##9pNP4u%=xVdE?zfvue^hr@Ml-<<38S91G zfR-b?7OdBj@poBNFZlmBt3&iZ`hR@pYX6TV%D>7`{W>xSwq>Pj)w=7jO-;vkc4Y^$ z`i-hS7R~aMqHn&J>q6POVKPXwCz0fW6qkX*i2{x?hYGpunW^c*gq7NtuE3gY*d#1y zvSC-*8^DpOm4W&in&x}^=VELttjQL}Pvu7n6Tu$D_6#qSC){Lw*&bB0Z4Q`|0j;yT zbQz+V)gD--n_NF{E90lS-t@`miO-2=P#Wb}n87G=Sj zBQ?m=7}`pgOXv2*n5!NLSA|=KT!Ovz>q!V~I5wB!`M%!0F-0D26?56nrk%kuT2lng z`ie$?AUcza13vj~I8)EXg zaS!$r!Cn-e9VzL%ao7!6PQHnwUspV)ws}niW*t*8FWt-;FS0W5(iMxzz&f1tW@pp` zY3E5sqIymJH6l3I8!Pb|Zp0b9$Vh+=B;&&IiuwnU1!4irA=M)Ajob>I{%dh^SqLv! zRZ&7h?Elx3{r~#QjGHe3y45xHn`O&;|VVlN&tD8Nk&+#~?!G_Si^fLr*RTLh5!nzaI~<8Rgp zu%3bS0^G{Ltpac?_PW~yxShYbU4RV?Y!KkJ47^r=jSOrQ;0^}v5a3P*?iAp447^T& zO$=-j;Pni=UVzOEY!)EMKu~}!3~Ui#D+5~v*v7y%0q$bpE&;YPuw8(=8Ms@32m=uT zq6|a@kfVv10CD~%E zBmmcDTlatfZ{}~_EP#Z?y+wcr`I`sD{(sOHnDsw+={4%*|HjG#_1j1pZR(c>bn9*# zL~-hTFrhCIpxqmoPbekCH*yIS{AtCeU#oz;;L(q=NB`OStz=YfM%mvZOp~|b&o53F zg9*K1B~xey0U=@&9u^cnO}NK*sPU{5j5p*GHZyAJ`z_^(ZAQk$nDT=EKT1ek0~Rd# zPvE-dIsXa&xWDXw#{YtU&i_vT`~4sBf71Vp{$KY0hX1qvKlJ~J|EvCQ`M>Y~EC1j7 z|Iz<{`2UCh|MmYg5D2UZ+!VMqa7Q2*xI54uhz8PuHwU@{`vZpqM+1)qjt52qlY!~L z*}z)^ZwtIT@WH^x0zV(92R;+{t-$93UkLnJ;N`$~0zU}+P2fKVejNBe1OIp6UjqNu z_Nun)+iq#Qz3p{vTibTFh1%k6Z)|(8ZBN_5wt=>X+MZ||ZhNZjWZS8>=h`Z5?`V5( z+lSje-gdt2(`~=j_SYD3ocj0i3*)-B7R7a44Y8SP*4I+F z-dfAxdRy&&TyL*Efa`|ZTX5Z2>%#Sp+HPF$tnJ11b+!GtZmRX-`uf@-TsPMSa1GW5 zaotioitEsq=~-Og@Y3_R-uu#v zxVG2*xOUXra1GT#NNet^UyEzFejTonI`T=^MC(v6YhrcumR=LDuf;V{N1vHBsXD67 zt;y6k;QGe;MqKZ&--+v+>hMCXd7zG3G;7{m--7E~>f3OAu)ZDF&N^~b*6gasaP6um zaP6+sob0aCob0L7ob=RbPWIMmPWIJ1aou01nK@9WnK@YR!L_%(57)l>0bCE&X?_mZ zX@2_a{kRU)v$$sKM{pgiAH(%X{b5{>)gQ(6q59*vK3vb?`ba&G>!bA{Tpz0!aDBW! zg6k9YBCfgm7_Lv&CveTzOSm4dKaJ~9eG1p%`V6jx`e|HG)MNLZnb(-N~oo4u{ zd79y|d79zz`B&pQF~0`a$$6OVYfAI4!S&?)O}IWie+#bV`E|HX&EJaa%>3=Ro|;Eb zzcr`l@4)q$`PbokW}fEc>^#lMv-7*LJidVcKJx$HhksuEEIb31)AbFct?tAL;vv>n z8xDkN->EmM5v?azY>bZ7U;&ZU6m&CQq8xn} zVQUsgG0iSSOj2xh42G4Pv|aEeY8m)f=(s|tOm3}n`iy!B!D0|FwnUNe_sEU;{fqb!oh0kQwi|pG+VLZ zs^@=CWK}W}uju{%HX^yk{(oC`Fck@+JzU|WmgemCWk)<64j~a8sXl2m+-&banmTgW zDdQxB-iev^DCMk2Bjg7N$53LRBN9QapeEvMyi`#q-J&*ig_BmgTRQKX>Su{4yU?f? z{Ds_x1pEK3w*CKBI8frjedC27cpBEmG1tGJ!)B%bUcSab0jEe(AF%DRxo?P z{})&OKmQhr|J`z>>Gq5Id#g9qw-fPge({{d-fbV~>FaV=Ty`O1(*;eUL5-wnusLA8 zuLOT3R2GT=j2DJWlW-(B71r_vhYd{^ao`1aAnJB={O?_~A}ap(uD;!!sdx}GHL;*) z*C7e4PpJjqn>iV31^Isk+<%L%{~cHUKmTief#1UA>PO80{Du*-9`2dFckXfaPeld_ zXU3k&pDK=l`I{9e2G{FO>E80Z3h+!+}rM6zS{m0MV9I| znBQKnsvE~tI6-X6O1BdolIIK@f=RJY47@P>{nIA1NR=)}eBT+e6znhqUNB`Wt zyexOiDFBZ3O6Afb>;T(iYM%LS&KPV3`QHovzj(v{*X9eH^&`sYiu_cj>M>&V4JhIv zb!KDxvV9qSgOEj~_3$u?w)RbpqfE_I&gkz+YTVWu;7fGO9F>2~|WRjt16vun;xTM3H`pW9HYKa&VV(b>>PMCJml9AT)f6@!}KNty# z|J&;e)clAUzxr9~3{;NPQ)HKR^c#h#QkJTsU>gBx4kH7tBPFe98^g! zIR6-l%A@rpO>CrpPV(21mI$80GNONsXVv6h?%_X+-v1{X{=a*Cfe-obSt{*c5zkdl z)H6hfvHrO%TdSGQv!ycJ&s?=9KfXvF*F3B!QNGI=1Lw?r0|}9p+ma@|;NN2;D#d!5 zW;)StY{$~ZWF0COQ6XumQ*C?NIoIZwmuj-T;QvcD{D1dS{m*-^2tHo=A6fO)?VLkGWW%;2a~-?{Z#-C>I!^IL>5M*cz@`6!@~sv|vCtArDMw z!~b`!FYu!O+NHC`W&dPly8eLaLU@=7>jB#P>-V#Z@&WQN7808toq@-my$JE#?!kd< z+LqgQDVzxruKcpv<)@RJ{r`OZO*HSfA)ivhfZw#cJ9RP1l;rj6$RPWILNVOje>9ew z``t6;(#ZmzH3F4rs*Wmq2#jv_k#Z~sr-L*{`dUV^FON;tK{o%VMSA%>tuQG zmZPO&xdbym-9(Dr~++o!zXN@OI^|L4u7)GhHWzjarP7qqh@*E z)O2xr2Ay0`2ympFKT#YiAsl$TIGrydHrTnZx&#JQ$_xHKMndBM-t7xK;(NE1{#WDQ z@GN%{IV5IdMm%|E*JyrvG(QnE_Q2R=H*ue|iMO8&p_fc3jAZ+0B18>iBRGeLJ2_1M z3x^U^Dux`(v8Ll9-Rl$;8DFX`;!3HJi$q?pSyEnb+%Xc>t@Q_GHE%d4704dcOs_ur z*SVV1I0%sw5%;nQx}h(;a<;hN1|_`QK`erg{r*Z!b=en)w}DvXf?JW++S+t?aJ;O=;_P`ThrXnGMHM3Y>_%4**Phdx%*(gMCS&22{l&EPfazMDCQ%I?s0=mSeyJgK#!JAPmNJ54e~sU z-9v)A)#&oXQ(>+Kt=UN=(e~H_&MHO%{eQb@0`JKh-oNgnbRvMxXcT>r*4GQvPow=o zHJR!*rZjDHv$l3hz2N^tz^JMJ|HKz~-1jGXs`d8W>c)BxX__swTjtL27P4o5X@+BT zlX}~d6hF4rjhI}d`Gh0T`UpBf$BqmdQo8H^#@LEv_!e0JHe*s*0JMW2=*e1k@DUW> zl0Cf3&Yg`zrT-T|&&3SzLWm#y888Dj*Z0ukY?|GE?iya4J%;$wm+3ZG)r=I1$3uxU zl}w98LU49q50D8ZP=CeEI5WpqOGBcuxi_e-uJ@AJ+FYLtAnCG1Uhw~=l>g87ufD)z zxLj!;#Fp$MeRA&+!^yX=H$PK`TL=z%(#v{3v?)LwQ9F)D6%jV>lbW`_&tA_ad<-KQ=U4nx4k|CiO8<=KPvsAQFWfK>8)hE@6X~j=1u_ zV{o+sjr$~~Z7~$fUI9}KxFMvywmsj%Z&Z22kHliyf)14KG((C z<-p+qx3J&l?S3>BLhZPYWGWOz%xOFo3gbVqP#A?LP}mCuJ7j)mlx-Hc{TU<%#2Ts z<|l*b8ScpMm29hM3Ypk(9JFw{RWh7{w->fT9DA9j1+$E$md&`A!}wO`&F)j^tvm$* zm5#x7LszC$uygn+G!vb`UPJ7-l<{iHvO;Jw>W?=|VkBa*Kc@K`6pizO|BsQ7{XhEu zR<8E{UA+9OJXr4~n%&$#C+#YFdywLjf2ugPP=!H<;h-LA5T-eZl`NO;p4L*J7kq_j zLZWiEeo!_EHyV+Z2Qecs4^sMo9{bq&~|HT)G`2Nc)lKYV`-cM|;62|)xPlKa>D)1gWvhFdjjI zs~<4RNMP4>m^gXc?2&Uj*iJvZCqF$C+=uDBxVoL#YEc6Olu%BG;MGF~?^q~9-o02T zoyG}zDjdR@1GIVu`G9f!Fr5sAQQzZUhrG4CRxJnJ%K?>K%S(GM5o;Iz_k#Z~-SGeY zFJIsbzW?=#2iHbMR_Ma2WJ=vqcRq=xV4}NKr|G(x7lzm^jY&qTMtL~^D zBjVaVyW^bH@IH1Rk8`{cI>&Pqo`(^3OfbV)^LdL)o6rfuKveRg*-vY_OX)1!^d@ zB8N*;McVYEs3$xDsO^d9KNJEkk5J^$B>ssL8e6rHmFoYY zGv(D!^9+DqA0{ia>&Q82%l+`a9;*MDj0Tg_qrt-nDn<31@nE(zGd-#`Da-?Hhvm7z zFp7Bb8_;Jm3VI#Nl}_ZQM+-T;HD|sx$8WXjGbL!28hE6&SH0j!%n%ZA=R8EKvBgXP ze&|4cD$k9>^hSisee~zxd|K0yDfolTm0-Mq2Hxt+s$OfJaOrW#x+XEjC z)B?W|_&j>~{xI+lfqxGCwCy@{@7>lGZhN3@f7>zi>wUWIg|>IKeXMOB9eTgm_N}(R zZu@cD|I^HEm;8=&L*K=UXqNyIOwc7jH-FPDfK(UTEx;cBW{&_p4D<-Fmw~+k>|83<)sIz_0)X1_}b4VBmxRvH=_sV3fZZ6`;sK zQGllycuIgV2F3(HvG%Evb>jj|Ffbv&BmfKv>d65uogrv-S1foBAeDA+RsoaJxM3h*og&kFDy1JB9+AMwA#mudWO zu>L4nlRIWNpKIek>CuCQ;NjBD5QT)t^a=c?PB4#_I#TdC!%de+hbR;%lMcDJ`m&9# zbjLxo_o8<~eW0zHWqY}7^CW1H?PR;(u-Z5n7`NlKh1RAHlJSm{11_ zoUDokoEC%e~`0;ez7Ke>5iwMh6%j4Aa}>q;%%!)Gp$4nLQ*@q+(9)A0ZQ59v!6<#gu4gk zR{8%C`h)u4S9<)Vr@^(Q*P z@#Fd2nOqj%43;LC@mrfhq@_F$oCl;3Zwsp+P=A6X@x3UgCbs?)jZ_KDx=Z%OqKYp$ z25c;dO7j4}+jBCO9)V@bS&R3tJ?tV|J>dUG$|qJq;(w3$0>9=zvI^?>mHEm_ww@rMXm)zSYK7mt3>i)V;5MF$S@#UnC= z_Uw~JQ6Mq_^$Oatd!!@1NCd}wF@%h}8ST!26=l#DM(H225p9~f1zSfQaxS{V1HSlF zn1gyBtRJU!>6+bQbOJcOd*sZ?=^zqoP6SIQg4vnE*Vhm(ErAVqQ{#8IBki(=9`OIC@RyqB|6lh727O=mDEnU=TGeao1tP{Bvp38cZs2{V zOTqoc2?_y->r+h~5(54us^An&xx4>tV=5}c-5k9Mk^wF1EbhM+NQP#lTxiMz{=QV0 z{e3&@!?YBU+4bk7(8+LDX{a=1sp966`kP0VT`t>c5eM-M8mva6=n3vF2bu?03&UTj zifxeFw$u`FD`XNEHOh7Puaheo&JuWBY~l)h%S-;ut3 zgO6?>X30j+bVaLfi*@^6QC|M^{S zbG8M$>Rt6B5mIb+t&vSu>^ze{&h4NM7Dq;>M@utP1+Bqpx`i7@f8@-kuHMkIZhWp8 zTv3$yU9RzBD_JeueXNvAsu@ui;_`xvFTyUq&Gk`Qr_}5XMgfq~&MB1Rn?g8VWA~Ow zYgfuHk2|8+2q0ysJ>kB0(~jL(DD%x0p`5lZ)$)b121%DC@`C>_qWpip|LzOC6_;1` zr@FR2W~v_v#u)3$Pn-;PQrZt6{#*%23kjRg0-l zhnfrhdBLa0V)Qnz!JETG+in`9JWTrj7z@E(yUAoe=qp|A`SoFSE&BiS1w!judc685E0#j022v+n&`@(ECjpqlX(<#$&YIp zn@oWuO8Y2NAc_bec%BxhFl8TA(G%Uysh3%~TB-jQRQqW{&xN+U;2(^ze=t}dr)5dZ z-fXD<@x!B~!esFot0y3-T^u`~N2$?Aj0-fuLE~no=>}J8WPEA$1;EqSO8(a(>9R&% z@c%`W|IfeC7x*1qu6`ObP`$lgBI1p}pC~e=v>OL*g>u7iOuhM8M|R?S{YV z={?1#IM?K&lvXkk3d4ICOQW736$ilK0E!H{=d7y16*bZwkYb|Mn(6|W=_Nqa3ju+Q zM5U*Gk|e<9tRVqT8dI0nuM0BzQfSTO;D7aueY!bGaJo38+JvD_jz#2Bb|4iOp?*ve z97;gzQ{CuhF30&gJ7Su@Nv5J+@c%Iq694}>U*Nd!bC(a-S9jK@h%@g)W!bf?1EzY) zD4GY0|I7pzk4w1M?zP(dsQ!t*GT|ge|Hsn!x0`L*G`u1j{sz`Ry_k4aU*UK8_P-md zF3jo$Ct#GFfOpi(Vo2R=!E01uYSVsS5TP`vi~Q`-uzLi6Zfr$k=9d&qYIIF!O0gTB&r+g(;}{KHuh4} z-NnL4DcFOfS&;yGaqaK|gy99CKmY^;xcgq4Mplc%-{j<-#Q!!)y?pO~REM6+(s;rD z#~ok9{y*poe8hjy##L8=MbAKGPyIBRrQ7=Fwy{xiy0NWK;%5#Qr-#twm0d#@ zr^(-!`NoBl9k?Xp3ER%{aLz6)$+`q8tFYqy7vn#Qm_yZe~gN%waU( z3l0~8(Ln^jvqYD4PAG{4&mN`va|dzU404R< zy+_WFA)FD$C@MAP?#Z){s;H1|=jdf1KAgT-h)?O6+t46(12HrOy-bbl{XuVtSrGmLDrL&gd>G*caVg+B?u89OZmnHH>puMN0HV zW4qt#IA0BFE+pjzhhK~xe)rU$qcus*M&_in&2xx`Mkk-~aqGFiGi{%H`lO>N)b^Kt zKJfRUy^ryKjWCS}d@~6u7w+x^)V@wFnE9i#rQQ#waBS?!aW&U1VDaRcm3~B;DVl1AcQc(4nvyDVMeIg8vVNs?7Yq zzw-r#e1Er^?71TEt_J4)L}*)3VnT|!%^u()|E=jl-xy0#7fzRqcJsMmw4#`xq*MNx z)!4rzB_?8CaON=*)s6E$S_Mkqev!QaZ|yF?KQrCP0?>v4I`>^s&C@9%wq=W%((eX4iPw-M<@p!B8IbagLEZ3Pd| z1sWi>Gnrbb7Kb`}j-b>$@`ADJr}H;A>T4cb(I0&UNq`HzHrHw&A?lH75Og6vFZc;# z9Le|Me1MjR{4wI^uh^&1As37-LM9eU#uGShOC>VqW+9300GV_unaZSN>84O0`=~C9 zq7?}V7zq^WLk-*2OR*b>Bj_ibOeJIJ^O8XRL9>@1*}*J=o4-k>VqWn7F%sneZ}Z*a z3;eQw1po0>vh%N|lb1WQb6qT}-`3OJdm(k{IBhYWP}A&)sDeuD&5!5LOd$$`Mz+rT z(p95wn&V#BW-$_#2j;J#X}zs~ZZl8oxjo&9g}mR6DWzYl`P`E)mkKI8jlO6_7`t`? zz2GH`6B3od`B%{dZa8C{tM(o=iAX30*$_t?rsfDh9zsnk)l{D- zAT8@;?vVoWw2$K^`@ zR0ihP5Rq*^GM8X3eMet@w0xTPr57kA?BG}HbBe%>n;@(f*9g{0H~aY6$2|Fxv$ zx6j^bl>dGEfqeNmQ~*pcmsVX)+aDp+bm9`FGR@IQI^@0sunw(e-nfaGw|DhwndR?_ zp9}wc!CA}U$$b9rf65p5EG}0+D>ws{J@ePI20Jo$FAJA<9`3%+rSsMC!qgO6iZ~tc)d|1zKv{N_F(d$BBd4rJ7>l6{f#&|d`Bc4$Hy!U$ zw8i(;p}+08*`|GP*nkRyd2)*7$Ac$IrRjTQ=V>Ab){TYY$t1#Il8HnzhO^3My^lhf zOj@Q-x*2g7h2(_|X`GO#jLqLbOL!Z6w$eJ~T|EOCePqU>Y5~(IYE`%l(l|0k$jY}x zVk~_JYRZ>2N*tqzGuc0; z%>83D8Ur(HS(yVg)YC|{zh7s&9iJpj;aM_ks&HPDlv< zL;t_`6`}v%G=B?G**(zz_pttdzbzEcS^2Mp>fahii1g6z&cP!nw`Ys^vy}k!kn%^& z(&~4kU?eJ&^EcD_ZHMxI3$Ne%(5q)UKNH+JkUiu)so~X2MKg&|G6?}L9=|YL^GO^7 zV3QNZO^08`I+|J}xtYTotb$-SD#sM4|3f+!=GW7KQAUh1^QG;va5$7kaYU{BM%uQE z{||8>9++`LLiYdLe1UKJx4jb7{|fvK)w|}`5mDZW-og^i{=tJi-8i|>8>RNBA*2$b zsaP0xL?oOErBeu5iG~uXq=#kXh_FM4{JPsdf3Gs~5!7#l-M}pOHQ7 zmB{>Batq*$MH;n!;KW#Zp}azeY@lDOSr=fX&Q&C8aFuJaG7`f7yL^E;|E?9_ohx9- z%A4nJC9=bb=|)yrA3oX#UJ5(UrlhC6vDt8tp7DgDzN5v$^dww+&g0Rg?jf2T1<90X zr`4uG_UAn_zn%o_2Gt4ZL)|@n8KQYQujQJn$>QO$YMb{Rm}C}sSIg; zoIC(Fx6D!}c@g`6anh{z+>@t>ntomF|GVx5=G+&gHL3)uy(qw2`J1;2Fw4NK02Kx* z0#q5O3NXjOoB-z-I48i{7i%EWpn)@UsGZgn^F; z@KFXnD!|7W_?Q4c$H31C@Not{F2E-k_=EtTWZ;tme2Rfj3Gk;3{HXwc#=xHm@FfPm zB*2#$__6?BVc;tQe3gN(3h*@sz9zuS47@DB*BSV_0N-HX8v=Zjfo}@%Z3ezAz;_t< zjsV|f;JX5RkAd$A@aGKtxd7j1;QIpn1p|K}zz-PsfdD^b;D-#X-%h~#?E>7*z}*6H z8MO5~1lY;n>|~(tE&}@Q5`YKjlL7j8fWEs$|3BmleBJ-h6`-sy*`HXMn7>^%4gR?v zT7-2U+22W<27Qft!z{Qst!50Q^xFRXM7}u0!Bn>Vf=i*uyl`%S7(JXD#O80~L&2lrSrqj5VSCe;g0e@3FZd42;4LA3ZhcP9(MkM?zTr(-+&vIAMjLYLU=iGRV^A1IuFTW=Db+KnY3G^|T-N&NpP66XQ`pYs3vuki&=;c}&Z zpseq(E9;N%>h7e?w<7?330qKOAVrtE3gwBJ;pWKarK*=j>^hTP@bfbg)mP7NqzT`M z9sjc|7=CW=;6Sz&$NVymn(nT0i5Pz}hyIP^&M)hPz$NE@6d785{%0iQ{O^BK{g3~7 zrLceX`uW!p_2Deq$O`)8Kz4v#`g(?6ltNNNDHFVFidoisa0t zr$8^b?URH=H3G8b??be8McI6vWiH+FaI{jfK5{w&B#On0Lv^YBRzvg(UVu z{BM$wko|wa7kJtqxKjAv{&ynatdng0j*+=uCci(0iblb(bS53#N&j>nJBtxuhUlK0 zcmR>3lTG%&a}Y&$U3<}FHkPCBtz6&wh+UjZTeXb5Fcpf&GKn-=AR8ae76MHGd4JmC zCV+xZ^@jOPCcB^J`TkUPymSg(K`0%d6&8SPI5q9&U8nS2mH0oD9rA$wSMk68b#(r> z&dwKCDufu6E|LfLju`6bO9zWn$5Bgor~Fqh4&>Ay!eCr}>~se>#!zG__u&YLrO-i; z-eVOCOFz}uc%9PHt=2qsGT+vLgn$_Jy+(%;{zUa6fj18=7YU?;D$mUCq8U$&%;i`j z{MoM3NNJkWgA$Oz3|wH^kINIzY1a*;=3c(U+@}&b`S%LWy>0JhzO5sLju7cEioqEl zT_6#}F&k?wpL;?{?ElaD0tw$|FBgulJU_pi=w(~cs3!fD-kyEIoqMpuE9uF^qO9Tm zDVLhGwPgTB9=*l!;&i@D3S*?4KRH^Q8X85VFBBFpPR~r|_;pr-SqTkp(-X!UJCN#b z(hL9Bg=pBv)N-OBjH*5J-K4`Kvl%1J;>*4HvHa9jz8u`SAOAwg-oguE9&~gh($s+g zU4=tv?1dhzA(UcMt!=%!}!lvw1m{IGA zbU2klYZ&?HWiOwyw0tQ^stEt1|KIyA=l*|t=6i@9w}BortUx5E8;AW;78=SmOU9NvYa&F;ixdT_ICB)6%1@5WjI$Ryw+Ags zP>p!1kYmKGbZLtQ-q+J-Gl{OeD+_tr`C~xPVN7iTOPw z+9N|oL6EQZmXH_~M9scp2~oJEiGp)IWjm(quQGnpv`Ec^sI}s+P>=%S=V*BAsiZs8acL zw1pkva)5~U-c_EV6x=51;h?tT#?P84PCJ$&IwLzpolfzuVTdNeIrGIUNQbt=r^fqG zZ4;aeHQdadX)rE`rM=}ONT^iK%+)(;B{7#wgX!`2(cKW6w&2~^%T zKWV)Mz^4hVwg4EZ%IW!DT7~;2<{oE>@$Fst>HI022wa>uVF44MX&|)<#y6Kp|3_>m zexA_(j1u#||FyorM{&9OQ8Q3^cK$F6hUe#wF-d-}3tp|!JT?f6GecYr4d-}@FwHMk z(8SPLsN4=-iHB8GOPmr^m_J0*f6v%lCr|%(sba@iaA)WAXkpT2S7wpQdHz|GNVX56 zW}I*5WayO^!Zwet`O0W4l!_$ba&g&wt;pF+gisOv|Es>h9ll>x#P7|2;GlkhX`(oH zh-u>c*^d2#*#pb-{M*M+B$3V0(3ix?Z*Kvhv!!z}p6@^J>p6ro z`Z(;PLsR2TM=g?$AJ0TX;Rs6bifc8JiiHxW)EkL%eI?VlkEYV0SbHYc9>)n-q8(=d zR8|>g2rBxAl96_lV2K3ph3qWhMNMq%z(Xw>?!%;tr*nj!hLL+q!^IQD0^F5U63xIA z?$ryFL}QjU4gHJ3+{Ny8~ zI-QN<7}nWZL(ArWT}4BS@DTg|m@n{*|JcfL+7&l)Wz(m(i}Ku3;V8HD+h-<`(O(!2 zf_jT5rwWeD0#=?$90eJQGm%b4Lz!4Cnn)y4xCts(XL3*$nKVu;9T`WC7br5HnH-xe zowmgl89!w`NH0Yln{+4{%cxJp5}u}h>_Fgx#{n^&9*k!=EV25k`6I;qvF8n^{|_6E zS2w~tB`>wuYROGg+$2gO4;C}<|MRG1sQYQ9Mt=l7;7(0o@1T3n=4 za7mgUU4>DcMzcNKVrx`Ts!V?RZd#CSXb8d;*w^3P*WKe{23&;5JgE=aXbh?5o^1g% z2=1AoJfUVw;P5yqDkJjDR!5kA!;*W zP1tqo4_}NBUQ^dZJJs3f_ybyj=JJ^qU<=QeOB0@;Hq>fXg!g z;t6Esh4I}P`H4{7SQ$aCjZnd8Jd~z}bg>BBRqY+=DB^P4JHqroG^(I~hN$bz%w%zT z>VXMmupb^cw7)C+=++CPyS2S%_n{u=Zxt0A17P!NuV8h6&@7#v8aqSoIb1UKTK!cCy`8tU8Ook;5yr*w#VfslO>!-@o(_ z+~j5x_WQV-kc4ED-OcYyLdb*M%?9!y3EBIds?wuN-D+uC(sWBx?f$vuNG)|qs(+oT zQ>V^>WU>YRBVOPiEKQ96mf&Bb0GBL|6nVg`}RLb zN5S}S1^!jq#y1E4bM4R>|KQ+L9shsl^TF9P$JF)u%$11!fg?+%m!p-V-YYAzFXm$V zm4V-A{DWQU9-tq#+%o*NmcZY!`7hrR9r2I$Y_}}`?KJ=GmHE%bg16>BY&8Cfq9^!= zVE#<~w*voR$L7C$OLWFREN-?e{{fo+KxO`O$v?~RZ#4dik|+3we4&j0mf+v9`7hrR zo$(Lrqb!&SXZ%;~|JQ`}zZEq9D=PDE>--m` z?0=r{{)6}oO#inA|IY1ywfO&`03R)@|3ftYq00Q*I{#^u{m&ELe-My|@!t~sYtHR| zwfO&`h)ylbzew{hR_5Q<`A?(lf1dFELmN%m{J#~(|C)3AUoHNB(15Ds|0$mj&L%mg z*6A}6p?~RgJ6`>lD${T4`UlIbM)RL1oc|yQ7sJ0L)IYQ?YW_Y4_aCtq|34JQtvdbR zbo|RS|8iyiZC(E$@0F2%PdNXH%=-`00=0trht}no|62V2par!m{|e2&Qjvej*85Ks zjpjee6YhTyBai9-7UAEq{V(4Xss5u{|9=!^u|@U2O7pK)=HJ%)PegI|3VVMfPq_a< zcs9m=Yw#~Qw*TduqBH)h_Wx_T@qd`+KU|rATkk(etY_rk6YhTy-GcGoBK$kH|4F%~ z=#2lW{r{Sd{|L>0q%!}u-hbd`W#r!z?tc<<|7(@`zwFrlC*_)=Gybdg|7$w_qcs1~ z%KY1U|A~sx{wI0D{ZC@G;=Z{-{IHl>N^W?tc<<|7#WgRp<7iQwICLC*1!afdsSvwTAsqb#DKw#s3ebAZgL{zg0Bc3S<{#&u;a}ii=6}fll7CBBBrFy#6+%L%aD%W_7#8*kcMA6kpAb$6 zPYTZqFACokUKQT(z>cGLp2nZU_b$WRh?Wt7L=;_4geysSQ6iAtM(soh;Aa9v=)gh; z5rS9<5@7`vRuCbCg%A-$EQmyqupkjZ#)3=)1q%uha8}G-l?Y+{Oqd7}EJTP9#X^(_ z8WuDnT!n?Jh_Dh1D~YfQ3#*9GiG@xgT#bdRiEs@Tt|7v;Sh$u5w_xEGBE+!}C&ErF z>?Fbv7KVs0jD=w$B(RVm!Y(ZAA_C6O-aA5s-T0Z^M8Jsydy_=C6+d$;5%yqV4-rPO zFiM0mEQ}E$g@qIm(pX3nVJ{Z;5@8<}_7Ne2g$xnKu`o`AEEcjvn83mW5%yzYKM`L`s7E%AGc~Sa% z4*UP)TwA1GU#weVlH z|6h~vzmw*Fryc*{>iMS<|GLb7NwpdOt--(Z1i-cMU$y^Vlkh)8^FL(Ae`F5)8=e1L z=D(!cjQID}4w;&1dB8H)d+&nQs* ztv;hd@d3k<|-)e*JoBjaZI0C1;ufFrW1-!=`&YD z@c^vLK=B!U=2|E|3)UJaPUtgnC?3>jc0zGdpBaMUVSQ#8ibwRB1Qd_zGrOR8OrIHn z;*>tK8;ZyEnIsfX=rgxM@i~2F4-}u*XGWoTQlA-v;wgP51;x|)Od5*6(`WWV@qg(v z`=I!OK9hms|JG;5q4@9mOcsh+eP#lRXY`rHN;{VZ)T>!=Zs~@`%iWl``7eVpA^kWx8@lX0OKNMfnk6i-A*Y#s@&WtALpR>j((hn;-B^70ueF_*N)>pdY^piXZBqI-A)4A8ro&-!QHJhwb!# zw0iwdCH{6<|Cdyo>HpTy|IQPD*P{Qc_Wx}X{u4C+2|NC^>iMSctlZd?APIq>fx z^S@Y9Z^nO%@b8BGKT@^-UsLd(r1?+U@-J7iC~c z!T+r^|F_!mU*bpGzBiM;wbR=DmrDKZHvc8{X8gAX|IRaj*TR3*{=ZGZ{~ntEJ+}Op z_|e+(?(+45iFM{CQ!m+XHf^=ACH2>-6w|Elo+CF_4Dd_FimdrWNsUr$2+ zxzi+?P0E)35-&PC`svi)Zma*2iZlFM1OFN_fY+k`tM>nE0{+u9|7lzPOT6f8`KMBU zyUl+|#ToxC!oTwj;I;5ywf|oe@V}Slf3F??(j2`1=+xgX^IuwV#(%5u?}q&^TDAXQ z6Y#%}=6|0p|0P~@w)&q+{p~jYB^77qx|E&9J| z|Gy^SKTGqUwdKFWi_VsRD)qP9{FhXm@!ul+JI?@K3;$L7|1|;s6Ey!5w)~fP(b@Cw zA@@J2q~eVKR^i_j`(M@me@(#uewzRNw)~fP(b@7(rT%tX|Cdyp@!ul+JI?@Ki~g_L z|E~%7KS1+;z?T0KFFJevy=4C@sW{`mRrq(s{?|(We+Oy)58Coy;zno7Kb891ZT(+T zamIg(@b5eWcrE(BmHht>(fl8><-f#@&X#{F_m|uJmsFhb-y-}w&j4Nv|E=WzcbMk? zupR&MT>Ss2+@CJzgD&XpXd3%o#y{`TmDO&=qm7UO#SON|0OkN{I?AM zjxzw)!hf~?e_WRjPIfr`1}4LhBIXQ;POj}cx*@T5e5Ci}>fvN+IG*ya@NXX6;6I#B zCH%75OS+cPz$3fH#<1~#ti>hJ5hZhPC>(RgN0!Y@YQKFj*M2bQ-5!g3@k zDOyle)PSVPK_#pPR&O3$*Vo@OxNUn|*T#YFwm@4XBtlDqRPv^0!cquy3?!%R@7d4= zckRw35~%~pq1|nPkj3Ruja-Zq$tr^fduGUJKZhC~K(MW-`uRI=UCcs7}x7*52}yJG1~ zawM688dFycB~sZ;d^9$e$Rvl8ad=*`8|{aJnx=)Rci0slh5IMs;DMj9}Q1D z$iLlce`EPCF8MS5=Rk06mm>bJr1*ctivOsY|7b1zM;ZU#

  • iUt{?%F8R-e|BHPb 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 z%0D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 CS|m3B literal 0 HcmV?d00001 diff --git a/src/spatialite/test/sql_stmt_tests/uncompressgeom1.testcase b/src/spatialite/test/sql_stmt_tests/uncompressgeom1.testcase new file mode 100644 index 0000000..7cefa9d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/uncompressgeom1.testcase @@ -0,0 +1,7 @@ +uncompressgeometry +:memory: #use in-memory database +SELECT AsText(UncompressGeometry(GeomFromText("POLYGON((1 2, 3 1, 4 4, 1 2))", 4326))) +1 # rows (not including the header row) +1 # columns +AsText(UncompressGeometry(GeomFromText("POLYGON((1 2, 3 1, 4 4, 1 2))", 4326))) +POLYGON((1 2, 3 1, 4 4, 1 2)) diff --git a/src/spatialite/test/sql_stmt_tests/uncompressgeom2.testcase b/src/spatialite/test/sql_stmt_tests/uncompressgeom2.testcase new file mode 100644 index 0000000..7c565c8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/uncompressgeom2.testcase @@ -0,0 +1,7 @@ +uncompressgeometry - non blob +:memory: #use in-memory database +SELECT UncompressGeometry("foo") +1 # rows (not including the header row) +1 # columns +UncompressGeometry("foo") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/uncompressgeom3.testcase b/src/spatialite/test/sql_stmt_tests/uncompressgeom3.testcase new file mode 100644 index 0000000..43980de --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/uncompressgeom3.testcase @@ -0,0 +1,7 @@ +uncompressgeometry - bad blob +:memory: #use in-memory database +SELECT UncompressGeometry(zeroblob(99)) +1 # rows (not including the header row) +1 # columns +UncompressGeometry(zeroblob(99)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/unsafeTriggers1.testcase b/src/spatialite/test/sql_stmt_tests/unsafeTriggers1.testcase new file mode 100644 index 0000000..e545a7d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/unsafeTriggers1.testcase @@ -0,0 +1,7 @@ +CountUnsafeTriggers() +:memory: #use in-memory database +SELECT CountUnsafeTriggers() +1 # rows (not including the header row) +1 # columns +CountUnsafeTriggers() +0 diff --git a/src/spatialite/test/sql_stmt_tests/updatestats1.testcase b/src/spatialite/test/sql_stmt_tests/updatestats1.testcase new file mode 100644 index 0000000..8b4ff44 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/updatestats1.testcase @@ -0,0 +1,7 @@ +UpdateLayerStatistics - NULL, NULL +:memory: #use in-memory database +SELECT UpdateLayerStatistics(NULL, NULL); +1 # rows (not including the header row) +1 # columns +UpdateLayerStatistics(NULL, NULL); +0 diff --git a/src/spatialite/test/sql_stmt_tests/updatestats10.testcase b/src/spatialite/test/sql_stmt_tests/updatestats10.testcase new file mode 100644 index 0000000..9331cea --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/updatestats10.testcase @@ -0,0 +1,7 @@ +UpdateLayerStatistics - TEXT, NULL +:memory: #use in-memory database +SELECT UpdateLayerStatistics('table', NULL); +1 # rows (not including the header row) +1 # columns +UpdateLayerStatistics('table', NULL); +0 diff --git a/src/spatialite/test/sql_stmt_tests/updatestats2.testcase b/src/spatialite/test/sql_stmt_tests/updatestats2.testcase new file mode 100644 index 0000000..9331cea --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/updatestats2.testcase @@ -0,0 +1,7 @@ +UpdateLayerStatistics - TEXT, NULL +:memory: #use in-memory database +SELECT UpdateLayerStatistics('table', NULL); +1 # rows (not including the header row) +1 # columns +UpdateLayerStatistics('table', NULL); +0 diff --git a/src/spatialite/test/sql_stmt_tests/updatestats3.testcase b/src/spatialite/test/sql_stmt_tests/updatestats3.testcase new file mode 100644 index 0000000..46e65c8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/updatestats3.testcase @@ -0,0 +1,7 @@ +UpdateLayerStatistics - TEXT, TEXT +:memory: #use in-memory database +SELECT UpdateLayerStatistics('table', 'column'); +1 # rows (not including the header row) +1 # columns +UpdateLayerStatistics('table', 'column'); +1 diff --git a/src/spatialite/test/sql_stmt_tests/updatestats4.testcase b/src/spatialite/test/sql_stmt_tests/updatestats4.testcase new file mode 100644 index 0000000..8e87ad5 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/updatestats4.testcase @@ -0,0 +1,7 @@ +UpdateLayerStatistics - INT, TEXT +:memory: #use in-memory database +SELECT UpdateLayerStatistics(1, 'column'); +1 # rows (not including the header row) +1 # columns +UpdateLayerStatistics(1, 'column'); +0 diff --git a/src/spatialite/test/sql_stmt_tests/updatestats5.testcase b/src/spatialite/test/sql_stmt_tests/updatestats5.testcase new file mode 100644 index 0000000..bea24a1 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/updatestats5.testcase @@ -0,0 +1,7 @@ +UpdateLayerStatistics - DOUBLE, TEXT +:memory: #use in-memory database +SELECT UpdateLayerStatistics(1.1, 'column'); +1 # rows (not including the header row) +1 # columns +UpdateLayerStatistics(1.1, 'column'); +0 diff --git a/src/spatialite/test/sql_stmt_tests/updatestats6.testcase b/src/spatialite/test/sql_stmt_tests/updatestats6.testcase new file mode 100644 index 0000000..e630bae --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/updatestats6.testcase @@ -0,0 +1,7 @@ +UpdateLayerStatistics - BLOB, TEXT +:memory: #use in-memory database +SELECT UpdateLayerStatistics(zeroblob(4), 'column'); +1 # rows (not including the header row) +1 # columns +UpdateLayerStatistics(zeroblob(4), 'column'); +0 diff --git a/src/spatialite/test/sql_stmt_tests/updatestats7.testcase b/src/spatialite/test/sql_stmt_tests/updatestats7.testcase new file mode 100644 index 0000000..4d59411 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/updatestats7.testcase @@ -0,0 +1,7 @@ +UpdateLayerStatistics - TEXT, INT +:memory: #use in-memory database +SELECT UpdateLayerStatistics('table', 1); +1 # rows (not including the header row) +1 # columns +UpdateLayerStatistics('table', 1); +0 diff --git a/src/spatialite/test/sql_stmt_tests/updatestats8.testcase b/src/spatialite/test/sql_stmt_tests/updatestats8.testcase new file mode 100644 index 0000000..0525e41 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/updatestats8.testcase @@ -0,0 +1,7 @@ +UpdateLayerStatistics - TEXT, DOUBLE +:memory: #use in-memory database +SELECT UpdateLayerStatistics('table', 1.1); +1 # rows (not including the header row) +1 # columns +UpdateLayerStatistics('table', 1.1); +0 diff --git a/src/spatialite/test/sql_stmt_tests/updatestats9.testcase b/src/spatialite/test/sql_stmt_tests/updatestats9.testcase new file mode 100644 index 0000000..5d0463d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/updatestats9.testcase @@ -0,0 +1,7 @@ +UpdateLayerStatistics - TEXT, BLOB +:memory: #use in-memory database +SELECT UpdateLayerStatistics('table', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +UpdateLayerStatistics('table', zeroblob(4)); +0 diff --git a/src/spatialite/test/sql_stmt_tests/us_ch_m.testcase b/src/spatialite/test/sql_stmt_tests/us_ch_m.testcase new file mode 100644 index 0000000..23c9027 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/us_ch_m.testcase @@ -0,0 +1,7 @@ +US chains to metres +:memory: #use in-memory database +SELECT CvtFromUsCh(100); +1 # rows (not including the header row) +1 # columns +CvtFromUsCh(100); +2011.684:8 diff --git a/src/spatialite/test/sql_stmt_tests/us_ft_m.testcase b/src/spatialite/test/sql_stmt_tests/us_ft_m.testcase new file mode 100644 index 0000000..979a6ee --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/us_ft_m.testcase @@ -0,0 +1,7 @@ +US feet to metres +:memory: #use in-memory database +SELECT CvtFromUsFt(10); +1 # rows (not including the header row) +1 # columns +CvtFromUsFt(10); +3.048:5 diff --git a/src/spatialite/test/sql_stmt_tests/us_in_m.testcase b/src/spatialite/test/sql_stmt_tests/us_in_m.testcase new file mode 100644 index 0000000..a451f5b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/us_in_m.testcase @@ -0,0 +1,7 @@ +us inches to metres +:memory: #use in-memory database +SELECT CvtFromUsIn(10); +1 # rows (not including the header row) +1 # columns +CvtFromUsIn(10); +0.254:5 diff --git a/src/spatialite/test/sql_stmt_tests/us_mi_m.testcase b/src/spatialite/test/sql_stmt_tests/us_mi_m.testcase new file mode 100644 index 0000000..9b3ed74 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/us_mi_m.testcase @@ -0,0 +1,7 @@ +US miles to metres +:memory: #use in-memory database +SELECT CvtFromUsMi(1.0); +1 # rows (not including the header row) +1 # columns +CvtFromUsMi(1.0); +1609.347:8 diff --git a/src/spatialite/test/sql_stmt_tests/us_yd_m.testcase b/src/spatialite/test/sql_stmt_tests/us_yd_m.testcase new file mode 100644 index 0000000..3ccd1c6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/us_yd_m.testcase @@ -0,0 +1,7 @@ +US yards to metres +:memory: #use in-memory database +SELECT CvtFromUsYd(10); +1 # rows (not including the header row) +1 # columns +CvtFromUsYd(10); +9.144:5 diff --git a/src/spatialite/test/sql_stmt_tests/wkb1.testcase b/src/spatialite/test/sql_stmt_tests/wkb1.testcase new file mode 100644 index 0000000..8675219 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb1.testcase @@ -0,0 +1,7 @@ +Hex Wkb: MultiPoint XY (single point) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTIPOINT(1.2 3.4)", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTIPOINT(1.2 3.4)", 4326))); +0104000000010000000101000000333333333333F33F3333333333330B40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb10.testcase b/src/spatialite/test/sql_stmt_tests/wkb10.testcase new file mode 100644 index 0000000..01628d2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb10.testcase @@ -0,0 +1,7 @@ +Hex Wkb: MultiLinestring XYZ (single line) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTILINESTRINGZ((1.2 3.4 100, 5.6 7.8 101))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTILINESTRINGZ((1.2 3.4 100, 5.6 7.8 101))", 4326))); +01ED0300000100000001EA03000002000000333333333333F33F3333333333330B40000000000000594066666666666616403333333333331F400000000000405940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb11.testcase b/src/spatialite/test/sql_stmt_tests/wkb11.testcase new file mode 100644 index 0000000..1af58d6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb11.testcase @@ -0,0 +1,7 @@ +Hex Wkb: MultiLinestring XYM (single line) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTILINESTRINGM((1.2 3.4 12, 5.6 7.8 13))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTILINESTRINGM((1.2 3.4 12, 5.6 7.8 13))", 4326))); +01D50700000100000001D207000002000000333333333333F33F3333333333330B40000000000000284066666666666616403333333333331F400000000000002A40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb12.testcase b/src/spatialite/test/sql_stmt_tests/wkb12.testcase new file mode 100644 index 0000000..02f2bbc --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb12.testcase @@ -0,0 +1,7 @@ +Hex Wkb: MultiLinestring XYZM (single line) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTILINESTRINGZM((1.2 3.4 100 12, 5.6 7.8 101 13))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTILINESTRINGZM((1.2 3.4 100 12, 5.6 7.8 101 13))", 4326))); +01BD0B00000100000001BA0B000002000000333333333333F33F3333333333330B400000000000005940000000000000284066666666666616403333333333331F4000000000004059400000000000002A40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb13.testcase b/src/spatialite/test/sql_stmt_tests/wkb13.testcase new file mode 100644 index 0000000..9c03110 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb13.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XY(single line) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(1.2 3.4, 5.6 7.8))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(1.2 3.4, 5.6 7.8))", 4326))); +010700000001000000010200000002000000333333333333F33F3333333333330B4066666666666616403333333333331F40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb14.testcase b/src/spatialite/test/sql_stmt_tests/wkb14.testcase new file mode 100644 index 0000000..af12746 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb14.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYZ (single line) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(1.2 3.4 100, 5.6 7.8 101))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(1.2 3.4 100, 5.6 7.8 101))", 4326))) +01EF0300000100000001EA03000002000000333333333333F33F3333333333330B40000000000000594066666666666616403333333333331F400000000000405940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb15.testcase b/src/spatialite/test/sql_stmt_tests/wkb15.testcase new file mode 100644 index 0000000..9e35fd8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb15.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYM (single line) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(1.2 3.4 12, 5.6 7.8 13))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(1.2 3.4 12, 5.6 7.8 13))", 4326))); +01D70700000100000001D207000002000000333333333333F33F3333333333330B40000000000000284066666666666616403333333333331F400000000000002A40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb16.testcase b/src/spatialite/test/sql_stmt_tests/wkb16.testcase new file mode 100644 index 0000000..423b81b --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb16.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYZM (single line) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(1.2 3.4 100 12, 5.6 7.8 101 13))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(1.2 3.4 100 12, 5.6 7.8 101 13))", 4326))); +01BF0B00000100000001BA0B000002000000333333333333F33F3333333333330B400000000000005940000000000000284066666666666616403333333333331F4000000000004059400000000000002A40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb17.testcase b/src/spatialite/test/sql_stmt_tests/wkb17.testcase new file mode 100644 index 0000000..1c607ba --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb17.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XY (2 lines) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(1.2 3.4, 5.6 7.8), LINESTRING(5 6, 7 8))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(1.2 3.4, 5.6 7.8), LINESTRING(5 6, 7 8))", 4326))); +010700000002000000010200000002000000333333333333F33F3333333333330B4066666666666616403333333333331F40010200000002000000000000000000144000000000000018400000000000001C400000000000002040 diff --git a/src/spatialite/test/sql_stmt_tests/wkb18.testcase b/src/spatialite/test/sql_stmt_tests/wkb18.testcase new file mode 100644 index 0000000..addc9a3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb18.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYZ (2 lines) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(1.2 3.4 100, 5.6 7.8 101), LINESTRINGZ(5 6 110, 7 8 111))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(1.2 3.4 100, 5.6 7.8 101), LINESTRINGZ(5 6 110, 7 8 111))", 4326))); +01EF0300000200000001EA03000002000000333333333333F33F3333333333330B40000000000000594066666666666616403333333333331F40000000000040594001EA03000002000000000000000000144000000000000018400000000000805B400000000000001C4000000000000020400000000000C05B40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb19.testcase b/src/spatialite/test/sql_stmt_tests/wkb19.testcase new file mode 100644 index 0000000..96dc740 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb19.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYM (2 lines) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(1.2 3.4 12, 5.6 7.8 13), LINESTRINGM(5 6 11, 7 8 12))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(1.2 3.4 12, 5.6 7.8 13), LINESTRINGM(5 6 11, 7 8 12))", 4326))); +01D70700000200000001D207000002000000333333333333F33F3333333333330B40000000000000284066666666666616403333333333331F400000000000002A4001D2070000020000000000000000001440000000000000184000000000000026400000000000001C4000000000000020400000000000002840 diff --git a/src/spatialite/test/sql_stmt_tests/wkb2.testcase b/src/spatialite/test/sql_stmt_tests/wkb2.testcase new file mode 100644 index 0000000..9605195 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb2.testcase @@ -0,0 +1,7 @@ +Hex Wkb: MultiPoint XYZ (single point) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTIPOINTZ(1.2 3.4 100)", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTIPOINTZ(1.2 3.4 100)", 4326))); +01EC0300000100000001E9030000333333333333F33F3333333333330B400000000000005940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb20.testcase b/src/spatialite/test/sql_stmt_tests/wkb20.testcase new file mode 100644 index 0000000..e4093d0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb20.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYZM (2 lines) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(1.2 3.4 100 12, 5.6 7.8 101 13), LINESTRINGZM(5 6 110 11, 7 8 111 12))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(1.2 3.4 100 12, 5.6 7.8 101 13), LINESTRINGZM(5 6 110 11, 7 8 111 12))", 4326))); +01BF0B00000200000001BA0B000002000000333333333333F33F3333333333330B400000000000005940000000000000284066666666666616403333333333331F4000000000004059400000000000002A4001BA0B000002000000000000000000144000000000000018400000000000805B4000000000000026400000000000001C4000000000000020400000000000C05B400000000000002840 diff --git a/src/spatialite/test/sql_stmt_tests/wkb21.testcase b/src/spatialite/test/sql_stmt_tests/wkb21.testcase new file mode 100644 index 0000000..2f35b6c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb21.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XY (single polygon) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)))", 4326))); +010700000001000000010300000001000000050000000000000000002440000000000000244000000000000026400000000000002440000000000000264000000000000026400000000000002440000000000000264000000000000024400000000000002440 diff --git a/src/spatialite/test/sql_stmt_tests/wkb22.testcase b/src/spatialite/test/sql_stmt_tests/wkb22.testcase new file mode 100644 index 0000000..1e2a054 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb22.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYZ (single polygon) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POLYGONZ((10 10 100, 11 10 101, 11 11 102, 10 11 103, 10 10 100)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POLYGONZ((10 10 100, 11 10 101, 11 11 102, 10 11 103, 10 10 100)))", 4326))); +01EF0300000100000001EB0300000100000005000000000000000000244000000000000024400000000000005940000000000000264000000000000024400000000000405940000000000000264000000000000026400000000000805940000000000000244000000000000026400000000000C05940000000000000244000000000000024400000000000005940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb23.testcase b/src/spatialite/test/sql_stmt_tests/wkb23.testcase new file mode 100644 index 0000000..49be622 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb23.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYZM (single polygon) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)))", 4326))); +01BF0B00000100000001BB0B00000100000005000000000000000000244000000000000024400000000000005940000000000000F03F00000000000026400000000000002440000000000040594000000000000000400000000000002640000000000000264000000000008059400000000000000840000000000000244000000000000026400000000000C059400000000000000840000000000000244000000000000024400000000000005940000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb24.testcase b/src/spatialite/test/sql_stmt_tests/wkb24.testcase new file mode 100644 index 0000000..49be622 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb24.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYZM (single polygon) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)))", 4326))); +01BF0B00000100000001BB0B00000100000005000000000000000000244000000000000024400000000000005940000000000000F03F00000000000026400000000000002440000000000040594000000000000000400000000000002640000000000000264000000000008059400000000000000840000000000000244000000000000026400000000000C059400000000000000840000000000000244000000000000024400000000000005940000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb25.testcase b/src/spatialite/test/sql_stmt_tests/wkb25.testcase new file mode 100644 index 0000000..41b3029 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb25.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XY (2 polygons) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)), POLYGON((15 15, 16 15, 16 16, 15 16, 15 15)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)), POLYGON((15 15, 16 15, 16 16, 15 16, 15 15)))", 4326))); +010700000002000000010300000001000000050000000000000000002440000000000000244000000000000026400000000000002440000000000000264000000000000026400000000000002440000000000000264000000000000024400000000000002440010300000001000000050000000000000000002E400000000000002E4000000000000030400000000000002E40000000000000304000000000000030400000000000002E4000000000000030400000000000002E400000000000002E40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb26.testcase b/src/spatialite/test/sql_stmt_tests/wkb26.testcase new file mode 100644 index 0000000..1042004 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb26.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYZ (2 polygons) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POLYGONZ((10 10 100, 11 10 101, 11 11 102, 10 11 103, 10 10 100)), POLYGONZ((15 15 100, 16 15 101, 16 16 102, 15 16 103, 15 15 100)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POLYGONZ((10 10 100, 11 10 101, 11 11 102, 10 11 103, 10 10 100)), POLYGONZ((15 15 100, 16 15 101, 16 16 102, 15 16 103, 15 15 100)))", 4326))); +01EF0300000200000001EB0300000100000005000000000000000000244000000000000024400000000000005940000000000000264000000000000024400000000000405940000000000000264000000000000026400000000000805940000000000000244000000000000026400000000000C0594000000000000024400000000000002440000000000000594001EB03000001000000050000000000000000002E400000000000002E40000000000000594000000000000030400000000000002E4000000000004059400000000000003040000000000000304000000000008059400000000000002E4000000000000030400000000000C059400000000000002E400000000000002E400000000000005940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb27.testcase b/src/spatialite/test/sql_stmt_tests/wkb27.testcase new file mode 100644 index 0000000..b6fd5d0 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb27.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYM (2 polygons) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(POLYGONM((10 10 1, 11 10 2, 11 11 3, 10 11 3, 10 10 1)), POLYGONM((15 15 1, 16 15 2, 16 16 3, 15 16 3, 15 15 1)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(POLYGONM((10 10 1, 11 10 2, 11 11 3, 10 11 3, 10 10 1)), POLYGONM((15 15 1, 16 15 2, 16 16 3, 15 16 3, 15 15 1)))", 4326))); +01D70700000200000001D3070000010000000500000000000000000024400000000000002440000000000000F03F00000000000026400000000000002440000000000000004000000000000026400000000000002640000000000000084000000000000024400000000000002640000000000000084000000000000024400000000000002440000000000000F03F01D307000001000000050000000000000000002E400000000000002E40000000000000F03F00000000000030400000000000002E4000000000000000400000000000003040000000000000304000000000000008400000000000002E40000000000000304000000000000008400000000000002E400000000000002E40000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb28.testcase b/src/spatialite/test/sql_stmt_tests/wkb28.testcase new file mode 100644 index 0000000..a0cee33 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb28.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYZM (2 polygons) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)), POLYGONZM((15 15 100 1, 16 15 101 2, 16 16 102 3, 15 16 103 3, 15 15 100 1)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)), POLYGONZM((15 15 100 1, 16 15 101 2, 16 16 102 3, 15 16 103 3, 15 15 100 1)))", 4326))); +01BF0B00000200000001BB0B00000100000005000000000000000000244000000000000024400000000000005940000000000000F03F00000000000026400000000000002440000000000040594000000000000000400000000000002640000000000000264000000000008059400000000000000840000000000000244000000000000026400000000000C059400000000000000840000000000000244000000000000024400000000000005940000000000000F03F01BB0B000001000000050000000000000000002E400000000000002E400000000000005940000000000000F03F00000000000030400000000000002E400000000000405940000000000000004000000000000030400000000000003040000000000080594000000000000008400000000000002E4000000000000030400000000000C0594000000000000008400000000000002E400000000000002E400000000000005940000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb29.testcase b/src/spatialite/test/sql_stmt_tests/wkb29.testcase new file mode 100644 index 0000000..12860f2 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb29.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XY (point, polygon) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POINT(1 2), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POINT(1 2), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10)))", 4326))); +0107000000020000000101000000000000000000F03F0000000000000040010300000001000000050000000000000000002440000000000000244000000000000026400000000000002440000000000000264000000000000026400000000000002440000000000000264000000000000024400000000000002440 diff --git a/src/spatialite/test/sql_stmt_tests/wkb3.testcase b/src/spatialite/test/sql_stmt_tests/wkb3.testcase new file mode 100644 index 0000000..7e81584 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb3.testcase @@ -0,0 +1,7 @@ +Hex Wkb: MultiPoint XYM (single point) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTIPOINTM(1.2 3.4 12)", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTIPOINTM(1.2 3.4 12)", 4326))); +01D40700000100000001D1070000333333333333F33F3333333333330B400000000000002840 diff --git a/src/spatialite/test/sql_stmt_tests/wkb30.testcase b/src/spatialite/test/sql_stmt_tests/wkb30.testcase new file mode 100644 index 0000000..5fbef6d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb30.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYZ (point, polygon) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(1 2 100), POLYGONZ((10 10 100, 11 10 101, 11 11 102, 10 11 103, 10 10 100)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(1 2 100), POLYGONZ((10 10 100, 11 10 101, 11 11 102, 10 11 103, 10 10 100)))", 4326))); +01EF0300000200000001E9030000000000000000F03F0000000000000040000000000000594001EB0300000100000005000000000000000000244000000000000024400000000000005940000000000000264000000000000024400000000000405940000000000000264000000000000026400000000000805940000000000000244000000000000026400000000000C05940000000000000244000000000000024400000000000005940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb31.testcase b/src/spatialite/test/sql_stmt_tests/wkb31.testcase new file mode 100644 index 0000000..f2c540d --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb31.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYM (point, polygon) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(POINTM(1 2 11), POLYGONM((10 10 1, 11 10 2, 11 11 3, 10 11 3, 10 10 1)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(POINTM(1 2 11), POLYGONM((10 10 1, 11 10 2, 11 11 3, 10 11 3, 10 10 1)))", 4326))); +01D70700000200000001D1070000000000000000F03F0000000000000040000000000000264001D3070000010000000500000000000000000024400000000000002440000000000000F03F00000000000026400000000000002440000000000000004000000000000026400000000000002640000000000000084000000000000024400000000000002640000000000000084000000000000024400000000000002440000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb32.testcase b/src/spatialite/test/sql_stmt_tests/wkb32.testcase new file mode 100644 index 0000000..be4dfac --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb32.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYZM (point, polygon) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(1 2 100 11), POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(1 2 100 11), POLYGONZM((10 10 100 1, 11 10 101 2, 11 11 102 3, 10 11 103 3, 10 10 100 1)))", 4326))); +01BF0B00000200000001B90B0000000000000000F03F00000000000000400000000000005940000000000000264001BB0B00000100000005000000000000000000244000000000000024400000000000005940000000000000F03F00000000000026400000000000002440000000000040594000000000000000400000000000002640000000000000264000000000008059400000000000000840000000000000244000000000000026400000000000C059400000000000000840000000000000244000000000000024400000000000005940000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb33.testcase b/src/spatialite/test/sql_stmt_tests/wkb33.testcase new file mode 100644 index 0000000..cd5a947 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb33.testcase @@ -0,0 +1,7 @@ +Hex Wkb: MultiPolygon XY (single polygon with interior ring) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTIPOLYGON(((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTIPOLYGON(((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11)))", 4326))); +01060000000100000001030000000200000005000000000000000000244000000000000024400000000000002E4000000000000024400000000000002E400000000000002E4000000000000024400000000000002E4000000000000024400000000000002440050000000000000000002640000000000000264000000000000028400000000000002640000000000000284000000000000028400000000000002640000000000000284000000000000026400000000000002640 diff --git a/src/spatialite/test/sql_stmt_tests/wkb34.testcase b/src/spatialite/test/sql_stmt_tests/wkb34.testcase new file mode 100644 index 0000000..a68b874 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb34.testcase @@ -0,0 +1,7 @@ +Hex Wkb: MultiPolygon XYZ (single polygon with interior ring) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTIPOLYGONZ(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTIPOLYGONZ(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100)))", 4326))); +01EE0300000100000001EB03000002000000050000000000000000002440000000000000244000000000000059400000000000002E40000000000000244000000000004059400000000000002E400000000000002E40000000000080594000000000000024400000000000002E400000000000C0594000000000000024400000000000002440000000000000594005000000000000000000264000000000000026400000000000005940000000000000284000000000000026400000000000405940000000000000284000000000000028400000000000805940000000000000264000000000000028400000000000C05940000000000000264000000000000026400000000000005940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb35.testcase b/src/spatialite/test/sql_stmt_tests/wkb35.testcase new file mode 100644 index 0000000..afaf83f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb35.testcase @@ -0,0 +1,7 @@ +Hex Wkb: MultiPolygon XYM (single polygon with interior ring) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTIPOLYGONM(((10 10 1, 15 10 2, 15 15 3, 10 15 3, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 3, 11 11 1)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTIPOLYGONM(((10 10 1, 15 10 2, 15 15 3, 10 15 3, 10 10 1), (11 11 1, 12 11 2, 12 12 3, 11 12 3, 11 11 1)))", 4326))); +01D60700000100000001D3070000020000000500000000000000000024400000000000002440000000000000F03F0000000000002E40000000000000244000000000000000400000000000002E400000000000002E40000000000000084000000000000024400000000000002E40000000000000084000000000000024400000000000002440000000000000F03F0500000000000000000026400000000000002640000000000000F03F00000000000028400000000000002640000000000000004000000000000028400000000000002840000000000000084000000000000026400000000000002840000000000000084000000000000026400000000000002640000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb36.testcase b/src/spatialite/test/sql_stmt_tests/wkb36.testcase new file mode 100644 index 0000000..2867e27 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb36.testcase @@ -0,0 +1,7 @@ +Hex Wkb: MultiPolygon XYZM (single polygon with interior ring) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTIPOLYGONZM(((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 3, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 3, 11 11 100 1)))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTIPOLYGONZM(((10 10 100 1, 15 10 101 2, 15 15 102 3, 10 15 103 3, 10 10 100 1), (11 11 100 1, 12 11 101 2, 12 12 102 3, 11 12 103 3, 11 11 100 1)))", 4326))); +01BE0B00000100000001BB0B00000200000005000000000000000000244000000000000024400000000000005940000000000000F03F0000000000002E400000000000002440000000000040594000000000000000400000000000002E400000000000002E400000000000805940000000000000084000000000000024400000000000002E400000000000C059400000000000000840000000000000244000000000000024400000000000005940000000000000F03F05000000000000000000264000000000000026400000000000005940000000000000F03F00000000000028400000000000002640000000000040594000000000000000400000000000002840000000000000284000000000008059400000000000000840000000000000264000000000000028400000000000C059400000000000000840000000000000264000000000000026400000000000005940000000000000F03F diff --git a/src/spatialite/test/sql_stmt_tests/wkb4.testcase b/src/spatialite/test/sql_stmt_tests/wkb4.testcase new file mode 100644 index 0000000..693431a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb4.testcase @@ -0,0 +1,7 @@ +Hex Wkb: MultiPoint XYZM (single point) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTIPOINTZM(1.2 3.4 100 12)", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTIPOINTZM(1.2 3.4 100 12)", 4326))); +01BC0B00000100000001B90B0000333333333333F33F3333333333330B4000000000000059400000000000002840 diff --git a/src/spatialite/test/sql_stmt_tests/wkb5.testcase b/src/spatialite/test/sql_stmt_tests/wkb5.testcase new file mode 100644 index 0000000..2e9a0bc --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb5.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XY (2 points) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POINT(1.2 3.4), POINT(5.6 7.8))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTION(POINT(1.2 3.4), POINT(5.6 7.8))", 4326))); +0107000000020000000101000000333333333333F33F3333333333330B40010100000066666666666616403333333333331F40 diff --git a/src/spatialite/test/sql_stmt_tests/wkb6.testcase b/src/spatialite/test/sql_stmt_tests/wkb6.testcase new file mode 100644 index 0000000..bb658ca --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb6.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYZ (2 points) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(1.2 3.4 100), POINTZ(5.6 7.8 101))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(1.2 3.4 100), POINTZ(5.6 7.8 101))", 4326))); +01EF0300000200000001E9030000333333333333F33F3333333333330B40000000000000594001E903000066666666666616403333333333331F400000000000405940 diff --git a/src/spatialite/test/sql_stmt_tests/wkb7.testcase b/src/spatialite/test/sql_stmt_tests/wkb7.testcase new file mode 100644 index 0000000..220770c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb7.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryCollection XYM (2 points) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(POINTM(1.2 3.4 12), POINTM(5.6 7.8 11))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONM(POINTM(1.2 3.4 12), POINTM(5.6 7.8 11))", 4326))); +01D70700000200000001D1070000333333333333F33F3333333333330B40000000000000284001D107000066666666666616403333333333331F400000000000002640 diff --git a/src/spatialite/test/sql_stmt_tests/wkb8.testcase b/src/spatialite/test/sql_stmt_tests/wkb8.testcase new file mode 100644 index 0000000..b26ac75 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb8.testcase @@ -0,0 +1,7 @@ +Hex Wkb: GeometryColelction XYZM (2 points) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(1.2 3.4 100 12), POINTZM(5.6 7.8 101 11))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(1.2 3.4 100 12), POINTZM(5.6 7.8 101 11))", 4326))); +01BF0B00000200000001B90B0000333333333333F33F3333333333330B400000000000005940000000000000284001B90B000066666666666616403333333333331F4000000000004059400000000000002640 diff --git a/src/spatialite/test/sql_stmt_tests/wkb9.testcase b/src/spatialite/test/sql_stmt_tests/wkb9.testcase new file mode 100644 index 0000000..888c5dd --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkb9.testcase @@ -0,0 +1,7 @@ +Hex Wkb: MultiLinestring XY (single line) +:memory: #use in-memory database +SELECT Hex(AsBinary(GeomFromText("MULTILINESTRING((1.2 3.4, 5.6 7.8))", 4326))); +1 # rows (not including the header row) +1 # columns +Hex(AsBinary(GeomFromText("MULTILINESTRING((1.2 3.4, 5.6 7.8))", 4326))); +010500000001000000010200000002000000333333333333F33F3333333333330B4066666666666616403333333333331F40 diff --git a/src/spatialite/test/sql_stmt_tests/wkbtosql1.testcase b/src/spatialite/test/sql_stmt_tests/wkbtosql1.testcase new file mode 100644 index 0000000..ffced2a --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkbtosql1.testcase @@ -0,0 +1,7 @@ +ST_WKBToSQL +:memory: #use in-memory database +SELECT Hex(ST_WKBToSQL(AsBinary(GeomFromText("Point(1 2)", 4326)))) +1 # rows (not including the header row) +1 # columns +Hex(ST_WKBToSQL(AsBinary(GeomFromText("Point(1 2)", 4326)))) +000100000000000000000000F03F0000000000000040000000000000F03F00000000000000407C01000000000000000000F03F0000000000000040FE diff --git a/src/spatialite/test/sql_stmt_tests/wkbtosql2.testcase b/src/spatialite/test/sql_stmt_tests/wkbtosql2.testcase new file mode 100644 index 0000000..d309571 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkbtosql2.testcase @@ -0,0 +1,7 @@ +ST_WKBToSQL - bad blob +:memory: #use in-memory database +SELECT ST_WKBToSQL(zeroblob(50)) +1 # rows (not including the header row) +1 # columns +ST_WKBToSQL(zeroblob(50)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/wkbtosql3.testcase b/src/spatialite/test/sql_stmt_tests/wkbtosql3.testcase new file mode 100644 index 0000000..4f0517f --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkbtosql3.testcase @@ -0,0 +1,7 @@ +ST_WKBToSQL - float +:memory: #use in-memory database +SELECT ST_WKBToSQL(1.67) +1 # rows (not including the header row) +1 # columns +ST_WKBToSQL(1.67) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/wkttosql1.testcase b/src/spatialite/test/sql_stmt_tests/wkttosql1.testcase new file mode 100644 index 0000000..e909df4 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkttosql1.testcase @@ -0,0 +1,7 @@ +ST_WKTToSQL +:memory: #use in-memory database +SELECT AsEWKT(ST_WKTToSQL("Point(1 2)")) +1 # rows (not including the header row) +1 # columns +AsEWKT(ST_WKTToSQL("Point(1 2)")) +SRID=0;POINT(1 2) diff --git a/src/spatialite/test/sql_stmt_tests/wkttosql2.testcase b/src/spatialite/test/sql_stmt_tests/wkttosql2.testcase new file mode 100644 index 0000000..5f0a22c --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkttosql2.testcase @@ -0,0 +1,7 @@ +ST_WKTToSQL - blob +:memory: #use in-memory database +SELECT ST_WKTToSQL(zeroblob(50)) +1 # rows (not including the header row) +1 # columns +ST_WKTToSQL(zeroblob(50)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/wkttosql3.testcase b/src/spatialite/test/sql_stmt_tests/wkttosql3.testcase new file mode 100644 index 0000000..29f29db --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/wkttosql3.testcase @@ -0,0 +1,7 @@ +ST_WKTToSQL - bad WKT +:memory: #use in-memory database +SELECT ST_WKTToSQL("Point(1 2 3)") +1 # rows (not including the header row) +1 # columns +ST_WKTToSQL("Point(1 2 3)") +(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/yd_m.testcase b/src/spatialite/test/sql_stmt_tests/yd_m.testcase new file mode 100644 index 0000000..f09d163 --- /dev/null +++ b/src/spatialite/test/sql_stmt_tests/yd_m.testcase @@ -0,0 +1,7 @@ +yards to metres +:memory: #use in-memory database +SELECT CvtFromYd(10); +1 # rows (not including the header row) +1 # columns +CvtFromYd(10); +9.144 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/Makefile.am b/src/spatialite/test/sql_stmt_xmlsec_tests/Makefile.am new file mode 100644 index 0000000..a889471 --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/Makefile.am @@ -0,0 +1,23 @@ + +EXTRA_DIST = loadxml1.testcase \ + loadxml2.testcase \ + loadxml3.testcase \ + loadxml4.testcase \ + loadxml5.testcase \ + loadxml6.testcase \ + storexml10.testcase \ + storexml11.testcase \ + storexml12.testcase \ + storexml13.testcase \ + storexml14.testcase \ + storexml15.testcase \ + storexml16.testcase \ + storexml1.testcase \ + storexml2.testcase \ + storexml3.testcase \ + storexml4.testcase \ + storexml5.testcase \ + storexml6.testcase \ + storexml7.testcase \ + storexml8.testcase \ + storexml9.testcase diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/Makefile.in b/src/spatialite/test/sql_stmt_xmlsec_tests/Makefile.in new file mode 100644 index 0000000..a31c487 --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/Makefile.in @@ -0,0 +1,459 @@ +# Makefile.in generated by automake 1.13.4 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +build_triplet = @build@ +host_triplet = @host@ +subdir = test/sql_stmt_xmlsec_tests +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/m4/libtool.m4 \ + $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \ + $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \ + $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AR = @AR@ +AS = @AS@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CXX = @CXX@ +CXXCPP = @CXXCPP@ +CXXDEPMODE = @CXXDEPMODE@ +CXXFLAGS = @CXXFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +DLLTOOL = @DLLTOOL@ +DSYMUTIL = @DSYMUTIL@ +DUMPBIN = @DUMPBIN@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +FGREP = @FGREP@ +GEOSCONFIG = @GEOSCONFIG@ +GEOS_CFLAGS = @GEOS_CFLAGS@ +GEOS_LDFLAGS = @GEOS_LDFLAGS@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LD = @LD@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LIBTOOL = @LIBTOOL@ +LIBXML2_CFLAGS = @LIBXML2_CFLAGS@ +LIBXML2_LIBS = @LIBXML2_LIBS@ +LIPO = @LIPO@ +LN_S = @LN_S@ +LTLIBOBJS = @LTLIBOBJS@ +MAINT = @MAINT@ +MAKEINFO = @MAKEINFO@ +MANIFEST_TOOL = @MANIFEST_TOOL@ +MKDIR_P = @MKDIR_P@ +NM = @NM@ +NMEDIT = @NMEDIT@ +OBJDUMP = @OBJDUMP@ +OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +PKG_CONFIG = @PKG_CONFIG@ +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ +PKG_CONFIG_PATH = @PKG_CONFIG_PATH@ +RANLIB = @RANLIB@ +SED = @SED@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_AR = @ac_ct_AR@ +ac_ct_CC = @ac_ct_CC@ +ac_ct_CXX = @ac_ct_CXX@ +ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build = @build@ +build_alias = @build_alias@ +build_cpu = @build_cpu@ +build_os = @build_os@ +build_vendor = @build_vendor@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host = @host@ +host_alias = @host_alias@ +host_cpu = @host_cpu@ +host_os = @host_os@ +host_vendor = @host_vendor@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +EXTRA_DIST = loadxml1.testcase \ + loadxml2.testcase \ + loadxml3.testcase \ + loadxml4.testcase \ + loadxml5.testcase \ + loadxml6.testcase \ + storexml10.testcase \ + storexml11.testcase \ + storexml12.testcase \ + storexml13.testcase \ + storexml14.testcase \ + storexml15.testcase \ + storexml16.testcase \ + storexml1.testcase \ + storexml2.testcase \ + storexml3.testcase \ + storexml4.testcase \ + storexml5.testcase \ + storexml6.testcase \ + storexml7.testcase \ + storexml8.testcase \ + storexml9.testcase + +all: all-am + +.SUFFIXES: +$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign test/sql_stmt_xmlsec_tests/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign test/sql_stmt_xmlsec_tests/Makefile +.PRECIOUS: Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): + +mostlyclean-libtool: + -rm -f *.lo + +clean-libtool: + -rm -rf .libs _libs +tags TAGS: + +ctags CTAGS: + +cscope cscopelist: + + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile +installdirs: +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-generic clean-libtool mostlyclean-am + +distclean: distclean-am + -rm -f Makefile +distclean-am: clean-am distclean-generic + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-generic mostlyclean-libtool + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: + +.MAKE: install-am install-strip + +.PHONY: all all-am check check-am clean clean-generic clean-libtool \ + cscopelist-am ctags-am distclean distclean-generic \ + distclean-libtool distdir dvi dvi-am html html-am info info-am \ + install install-am install-data install-data-am install-dvi \ + install-dvi-am install-exec install-exec-am install-html \ + install-html-am install-info install-info-am install-man \ + install-pdf install-pdf-am install-ps install-ps-am \ + install-strip installcheck installcheck-am installdirs \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ + tags-am uninstall uninstall-am + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml1.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml1.testcase new file mode 100644 index 0000000..83750fd --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml1.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - NULL input +:memory: #use in-memory database +SELECT XB_LoadXML(NULL); +1 # rows (not including the header row) +1 # columns +XB_LoadXML(NULL) +(NULL) diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml2.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml2.testcase new file mode 100644 index 0000000..661ffba --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml2.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - INTEGER input +:memory: #use in-memory database +SELECT XB_LoadXML(1); +1 # rows (not including the header row) +1 # columns +XB_LoadXML(1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml3.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml3.testcase new file mode 100644 index 0000000..216eb1b --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml3.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - DOUBLE input +:memory: #use in-memory database +SELECT XB_LoadXML(1.1); +1 # rows (not including the header row) +1 # columns +XB_LoadXML(1.1) +(NULL) diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml4.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml4.testcase new file mode 100644 index 0000000..bc4aa13 --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml4.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - BLOB input +:memory: #use in-memory database +SELECT XB_LoadXML(zeroblob(4)); +1 # rows (not including the header row) +1 # columns +XB_LoadXML(zeroblob(4)) +(NULL) diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml5.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml5.testcase new file mode 100644 index 0000000..1682de7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml5.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - filepath input - invalid +:memory: #use in-memory database +SELECT XB_LoadXML('not-existing-books.xml'); +1 # rows (not including the header row) +1 # columns +XB_LoadXML('not-existing-books.xml') +(NULL) diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml6.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml6.testcase new file mode 100644 index 0000000..2e370b8 --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/loadxml6.testcase @@ -0,0 +1,8 @@ +XB_LoadXML - filepath input - valid +:memory: #use in-memory database +SELECT Hex(XB_LoadXML('books.xml')); +1 # rows (not including the header row) +1 # columns +Hex(XB_LoadXML('books.xml')) +3C3F786D6C2076657273696F6E3D22312E302220656E636F64696E673D227574662D38223F3E0A3C426F6F6B7320786D6C6E733A7873693D22687474703A2F2F7777772E77332E6F72672F323030312F584D4C536368656D612D696E7374616E636522207873693A6E6F4E616D657370616365536368656D614C6F636174696F6E3D22626F6F6B732E787364223E3C617574686F722066697273744E616D653D22436861726C657322206C6173744E616D653D224469636B656E73223E0A3C7469746C653E546865205069636B7769636B205061706572733C2F7469746C653E3C7469746C653E4F6C697665722054776973743C2F7469746C653E3C7469746C653E446176696420436F707065726669656C643C2F7469746C653E0A3C7469746C653E41204368726973746D6173204361726F6C3C2F7469746C653E3C7469746C653E486172642054696D65733C2F7469746C653E3C2F617574686F723E0A3C617574686F722066697273744E616D653D224E617468616E69656C22206C6173744E616D653D2248617774686F726E65223E3C7469746C653E54686520536361726C6574204C65747465723C2F7469746C653E3C2F617574686F723E0A3C617574686F722066697273744E616D653D2257696C6C69616D204D616B65706561636522206C6173744E616D653D22546861636B65726179223E3C7469746C653E56616E69747920466169723C2F7469746C653E0A3C7469746C653E546865204C75636B206F66204261727279204C796E646F6E3C2F7469746C653E3C2F617574686F723E3C617574686F722066697273744E616D653D224A6F7365706822206C6173744E616D653D22436F6E726164223E0A3C7469746C653E4C6F7264204A696D3C2F7469746C653E3C7469746C653E54686520536563726574204167656E743C2F7469746C653E3C7469746C653E4865617274206F66204461726B6E6573733C2F7469746C653E0A3C2F617574686F723E3C2F426F6F6B733E0A + diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml1.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml1.testcase new file mode 100644 index 0000000..5ceb4ff --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml1.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - NULL payload +:memory: #use in-memory database +SELECT XB_StoreXML(NULL, 'xml-test-out.xml'); +1 # rows (not including the header row) +1 # columns +XB_StoreXML(NULL, 'xml-test-out.xml'); +-1 diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml10.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml10.testcase new file mode 100644 index 0000000..9f6ecef --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml10.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - valid BLOB payload, BLOB indent +:memory: #use in-memory database +SELECT XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 'xml-test-out-indent.xml', zeroblob(4)); +1 # rows (not including the header row) +1 # columns +XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 'xml-test-out-indent.xml', zeroblob(4)); +-1 diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml11.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml11.testcase new file mode 100644 index 0000000..dfaa7c6 --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml11.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - valid BLOB payload, indent +:memory: #use in-memory database +SELECT XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 'xml-test-out-indent.xml', 8); +1 # rows (not including the header row) +1 # columns +XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 'xml-test-out-indent.xml', 8); +1 diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml12.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml12.testcase new file mode 100644 index 0000000..e96c07b --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml12.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - valid BLOB payload, zero-indent +:memory: #use in-memory database +SELECT XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 'xml-test-out-zero-indent.xml', 0); +1 # rows (not including the header row) +1 # columns +XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 'xml-test-out-zero-indent.xml', 0); +1 diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml13.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml13.testcase new file mode 100644 index 0000000..949fe38 --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml13.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - valid BLOB payload, NULL path +:memory: #use in-memory database +SELECT XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), NULL); +1 # rows (not including the header row) +1 # columns +XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), NULL); +-1 diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml14.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml14.testcase new file mode 100644 index 0000000..a4d0849 --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml14.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - valid BLOB payload, INTEGER path +:memory: #use in-memory database +SELECT XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 1); +1 # rows (not including the header row) +1 # columns +XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 1); +-1 diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml15.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml15.testcase new file mode 100644 index 0000000..fd52fd3 --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml15.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - valid BLOB payload, DOUBLE path +:memory: #use in-memory database +SELECT XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 1.1); +1 # rows (not including the header row) +1 # columns +XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 1.1); +-1 diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml16.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml16.testcase new file mode 100644 index 0000000..0d772f7 --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml16.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - valid BLOB payload, BLOB path +:memory: #use in-memory database +SELECT XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), zeroblob(4)); +1 # rows (not including the header row) +1 # columns +XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), zeroblob(4)); +-1 diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml2.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml2.testcase new file mode 100644 index 0000000..8a6d236 --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml2.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - TEXT payload +:memory: #use in-memory database +SELECT XB_StoreXML('alpha', 'xml-test-out.xml'); +1 # rows (not including the header row) +1 # columns +XB_StoreXML('alpha', 'xml-test-out.xml'); +-1 diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml3.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml3.testcase new file mode 100644 index 0000000..2ee4373 --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml3.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - INTEGER payload +:memory: #use in-memory database +SELECT XB_StoreXML(1, 'xml-test-out.xml'); +1 # rows (not including the header row) +1 # columns +XB_StoreXML(1, 'xml-test-out.xml'); +-1 diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml4.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml4.testcase new file mode 100644 index 0000000..f872b83 --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml4.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - DOUBLE payload +:memory: #use in-memory database +SELECT XB_StoreXML(1.2, 'xml-test-out.xml'); +1 # rows (not including the header row) +1 # columns +XB_StoreXML(1.2, 'xml-test-out.xml'); +-1 diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml5.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml5.testcase new file mode 100644 index 0000000..886f81e --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml5.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - invalid BLOB payload +:memory: #use in-memory database +SELECT XB_StoreXML(zeroblob(4), 'xml-test-out.xml'); +1 # rows (not including the header row) +1 # columns +XB_StoreXML(zeroblob(4), 'xml-test-out.xml'); +0 diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml6.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml6.testcase new file mode 100644 index 0000000..3ed60bb --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml6.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - valid BLOB payload +:memory: #use in-memory database +SELECT XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 'xml-test-out-noindent.xml'); +1 # rows (not including the header row) +1 # columns +XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 'xml-test-out-noindent.xml'); +1 diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml7.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml7.testcase new file mode 100644 index 0000000..e173805 --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml7.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - valid BLOB payload, NULL indent +:memory: #use in-memory database +SELECT XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 'xml-test-out-indent.xml', NULL); +1 # rows (not including the header row) +1 # columns +XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 'xml-test-out-indent.xml', NULL); +-1 diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml8.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml8.testcase new file mode 100644 index 0000000..17b2b0b --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml8.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - valid BLOB payload, TEXT indent +:memory: #use in-memory database +SELECT XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 'xml-test-out-indent.xml', 'alpha'); +1 # rows (not including the header row) +1 # columns +XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 'xml-test-out-indent.xml', 'alpha'); +-1 diff --git a/src/spatialite/test/sql_stmt_xmlsec_tests/storexml9.testcase b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml9.testcase new file mode 100644 index 0000000..eac187d --- /dev/null +++ b/src/spatialite/test/sql_stmt_xmlsec_tests/storexml9.testcase @@ -0,0 +1,7 @@ +XB_LoadXML - valid BLOB payload, DOUBLE indent +:memory: #use in-memory database +SELECT XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 'xml-test-out-indent.xml', 1.5); +1 # rows (not including the header row) +1 # columns +XB_StoreXML(XB_Create(XB_LoadXML('books.xml')), 'xml-test-out-indent.xml', 1.5); +-1 diff --git a/src/spatialite/test/stazioni_se.xml b/src/spatialite/test/stazioni_se.xml new file mode 100644 index 0000000..14574b6 --- /dev/null +++ b/src/spatialite/test/stazioni_se.xml @@ -0,0 +1,102 @@ + + + OSM Railway Stations - SLD test + SLD test - Point [Railway Stations] + an SLD complex variable style [depending on actual scale] + + OSM Railway Stations - SE test + + SE test - Point [Railway Stations] + a complex variable style [depending on actual scale] + + + Upper scale [simple circle, no label] + 500001 + 2500000 + + + + circle + + #8F00FF + + + 6 + + + + + Medium scale [bigger star, no label] + 500000 + + + + star + + #DC143C + + + #FFFFFF + 1 + + + 18 + + + + + Medium scale [bigger star + label] + 250000 + + + + star + + #DC143C + + + #FFFFFF + 1 + + + 18 + + + + + + Arial + 12 + normal + bold + + + + + 0.5 + 0.0 + + + 0 + 7 + + -45 + + + + 1 + + #FFFFFF + + + + #DC143C + + + + + + + diff --git a/src/spatialite/test/symbol.dxf b/src/spatialite/test/symbol.dxf new file mode 100644 index 0000000..ed6dcc7 --- /dev/null +++ b/src/spatialite/test/symbol.dxf @@ -0,0 +1,204 @@ + 0 +SECTION + 2 +BLOCKS + 0 +BLOCK + 5 +4D +330 +4A +100 +AcDbEntity + 8 +P212 +100 +AcDbBlockBegin + 2 +S04 + 70 + 0 + 10 +0.0 + 20 +0.0 + 30 +0.0 + 3 +S17 + 1 + + 0 +CIRCLE + 5 +4E +330 +4A +100 +AcDbEntity + 8 +P212 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.4993929516959806 + 0 +ARC + 5 +4F +330 +4A +100 +AcDbEntity + 8 +P212 +100 +AcDbCircle + 10 +0.0 + 20 +0.0 + 30 +0.0 + 40 +0.4702375591390111 +100 +AcDbArc + 50 +1.352297952139852 + 51 +213.1028912230649 + 0 +ARC + 5 +50 +330 +4A +100 +AcDbEntity + 8 +P212 +100 +AcDbCircle + 10 +0.1224526574460816 + 20 +1.153653889613405 + 30 +0.0 + 40 +0.1224526574460816 +100 +AcDbArc + 50 +0.0 + 51 +180.0 + 0 +LINE + 5 +51 +330 +4A +100 +AcDbEntity + 8 +P212 +100 +AcDbLine + 10 +0.0 + 20 +0.4993929516959806 + 30 +0.0 + 11 +0.0 + 21 +1.153653889613405 + 31 +0.0 + 0 +ENDBLK + 5 +52 +330 +4A +100 +AcDbEntity + 8 +P212 +100 +AcDbBlockEnd + 0 +ENDSEC + 0 +SECTION + 2 +ENTITIES + 0 +INSERT + 5 +3F +330 +2 +100 +AcDbEntity + 8 +P212 +100 +AcDbBlockReference + 2 +S04 + 10 +1606600.703410613 + 20 +4832060.545362558 + 30 +9.65 + 41 +7.0 + 42 +7.0 + 43 +7.0 + 50 +53.0 + 0 +INSERT + 5 +3F +330 +2 +100 +AcDbEntity + 8 +P212 +100 +AcDbBlockReference + 2 +S04 + 10 +1606500.703410613 + 20 +4832560.545362558 + 30 +9.65 + 41 +7.0 + 42 +7.0 + 43 +7.0 + 50 +53.0 + 0 +ENDSEC + 0 +EOF diff --git a/src/spatialite/test/test-invalid.sqlite b/src/spatialite/test/test-invalid.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..cff6271d02fb446a9ff003502470a0fd362c4e9f GIT binary patch literal 435200 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�M5cV#%qw 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 KC~*4p+W!Ybir0Yv literal 0 HcmV?d00001 diff --git a/src/spatialite/test/test-legacy-2.3.1.sqlite b/src/spatialite/test/test-legacy-2.3.1.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..5810f8ad932977e302de0a528f423e366ca53e79 GIT binary patch literal 15360 zcmeHOO>7&-72e%hiR4MfU?4Fvf?5MOc$0_2i6yGv;~yL8|ft|Vg@ zGR2+u=FOXL=Dm6Io?Lz-rAg#jV>$)R0RjO6&jx{?odCI05%`Eq!bcdLgij9L zVbH(fBX|M?0tB830>%6P+@55nxrL6>HMTaslQOSg#20Y2lE;74H3ctRDkQr-{SQlh zvxAeQX=&jSPActo*H}_DvyGE|O*M@rplZ6@R9eRJ-&;gt%#wKei?x+9zPxA)Y3tfn z8_sj5Kaegj;$*XK_B%_?iz9^C|H!HSOlBVl4G;(rIEn}a_J0&tCD18A;QxaFv40kQ z$-qzW1PBBOJf8?eSv1cX-MXpP+mP>*@2G~U_jYD5vH#QT*9>}y{)7IC{)BF!G4@J*7Q-(F^+-5rtCCYSP@<=5Tl?DNYt~RxGlN^e zW^3ceW{n11^5eK_92s)z+~6(XnkK0)#z)rK!Db{p6SH#K`Bfcm+-_~o4BiB4)R&6R z3~r7i*0>i3H6YrK3}8+Ve?GVY zEKwhpJZE#fJg5?mh*wC>W)J|5(_EWDpQHbw57A%H4yvPT=pu?CmivCs8^AsjZ{Cr$dPl)GQl<2@R4IPx^gSL89Pj48s z4+JN6r?^mbZjRl%ZcUUN@QT^nksEru-_Z>E9gR$trovoXvL(l>i)$_|nd*3;+~}mu zo$di33l|U67KMhc_nLB3?I@a|>Y4{$aRhaEvjbXL)tbt-tY~Cay^E6AjiFFd1=wgA%dQlTOWE*vY;I&2ze zHk5bziq=rI$H>i9f)R# zN2C{6o~K(v#QuZ&-*I;=f&KvkKMetL{}1f{r(qZL3J^H%2-xv|o?-K75#2xTvpHn_ z_nM(l^vV_Xy@nM8-c^-%4Nnl}-ztnm=KeeopA&+84X5se7GW5;(zm}uiN43o!IdGw z@%`zDcw_>ekb8`QI?`?sIC7YRjY z=GgncwnBEbxlQsYkf`xwX-+yjq*}1-hu&QlLTBfb;Rg#)-`?6%dabvcq}%}2hM|`qrm&rK|1b(D zWmiaD!OM@AC35Hu^FZM9DG36Qv6M<*!=>UHaIa(wLK%`q=?aF#SXqjfin-i!Dt%qV zvrVO~K&}`v?N+>kXJ;v4v$Jq6>+qN4ih&!t24(s>)X9DWjPyzK8YyGU&dw%;wQG>! z!f|IztGaQuRLpzMCTufW3`@9}%UB{3I9uM&8~#?13Yp!TCji8`@Po!ai0TkM2TWQS z4~le$A&S{TSt?b0PtGTRQPm8kXS!je6&jBt1vm{OE=X&yy+Sa0#SM&*Dr9^hri6_m zOe7IOHo{P>ve32dUt_orSnc^V!lN{+-G!5(=?fRa4`L)5B)fz}pvJHS>1l8_@{O#t zX4%gOH%^s@mJP{bciP#LI)?lE&m~0eR0aL_QEz@en?#iTy_luE& zua$d-aQp*pA@;~iz6$MbOxYel-uD3gC-neyhoJ|ku4YJ;*DrQ{0uRvd!vC!qaisM8 Np3Vah;Gd2C{{T>y7=!=- literal 0 HcmV?d00001 diff --git a/src/spatialite/test/test-legacy-3.0.1.sqlite b/src/spatialite/test/test-legacy-3.0.1.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..cf08c4e3f8443641fa111e2cfffdc7e2957895f1 GIT binary patch literal 32768 zcmeHQ-EZ606(>bUa@4r_Xj3KI+})}PX2Z0t58JX@7zt-Hjuu;TB{_-VdIT#`wi=02 zMJlnk6_{f;-LS{~1;zF}6zIdgFa+qs(1&6#+rypiLtdVH?_uG!g{rBcN~2X*O_b#NIG*ROBE$ujUgtOt!JobHf0f{% z&pCzvyz7{Li0c^rs41uo=fs5y$su#|{ z?zv}SH*gAe{r#{D^xA^RUbWE(?(A<**(eEYr100=1v1Dx=_puj)2F$9h; z0!uu{zEv=#$TZXB=QPYsoE|oOHsI+UfE!1o@+cnkH%86J!F&dkO zABv}5nMk}6OD4xsW9j5rY%HD&^mC(}1U0T}jk;#Gwvx>__2*4z!2z71R}f;4|MJr@V>8XR1LGy+S>f1^~iU>)%T|S zOe%%|Lx6%n7^gA&ry#?U7y`YI0Dk`WahEvm5+4Y>7--TY-d^QHk&zMpe%*QxB3?X* z)4*(AmWnbeO5a_O5s`_8!bYoFMwx6;o|p3|n=7L1^1=dI%4Zg({0h1uuZUr_ZEh&K zTGvofz6}H&qD}_20x{fqQ`;{mhMTR%n-iwCX_ECAEkn6?$4(x;e=!h>#N+(Vnp-+o zC&}M!5@<5IN`RQ!T}?NY14KpAaxs_5LT!t3wkU=z2KFUzNlv^yS^|moMM&YyYF&f3 z%X*W{xU01k~};Uyu68-B$`#wx2A+FNZ+hZkY*X`dGpZ{`qgO%X~C z?+o;XBBP`HJBwDGgj@!Be!^2LnF}~qlY{1%5Rb!?U?;p_rFI|55Xf#UAzt7;gPXLvEQwXXdlmhR_h^a~S32YjR%B&dLS9C0Z22w*60X+$485a4Yajn*ICIuAB%)3Zpz{ zN!!r_FxrMKJpsC*#L1N4&i8|%NIK0wxMj88-KuuaAREh|r=Ij^1f2%-0%uSy$;xmT zB3swWY&GtI-4Z6^ZWDA<%FkYx@ENQ&DuqTIzJe>QKz$)v~ zD33O{xuFMG7 zEB%(X?ArH?yVaIS(-vClGlaI#Xe@1MnO(F6G8{xmov>~njxHo)ZdK@Vo9N!~z!=%^ z9hPvzyO{7dyk-8Nv7Q!x68mTUf8QOBB`^ez1p@5-|5!9L6Oti7MS%JLsj#p_hQP5v zfIa_@MKd!Y83I%UEdL*`a=gm_O4txSpc1jf!y|Cx;VagwfJZ?WDq?NGioY z7@&I36+Cj{c&i-$ot5~k#}7s&A)V=tW9zU^PMFMARvJ1?l_N)c#PCM7T-J0-2H_wp zSg`gsbJ*tWq#FC0cRA( zRL!{i_>8B)-8n<%8#S?7-V|Yw$h7?b%>Q?I^JXO(0!JAE*8e}st;cw02z)gJaQ{Cb z{Eid;3_G?l1Q-HG1c6APFV3CzPfkmY@O>jma(NJR_!Vc8QfI1M0>x3>w*OsD_)yqA zB7!qE83H|pz^l9C{VxsjA=r!!wW*mfe>35@1kOp93O~Q`(Lb+Ah2N;J53b45rPY@| zT>P;p6@L4}zs&sY(W~3{{H5nRs|^n{->N&a7%YhEP+t@VtNU^}>?RY6)gl(^AiR z+{JX7L(h|i3Dqzd(bi4J;SVbpHch-fqF&XNO*EHVhP5J|#4TT!F{T?{SmI|78NTF+G?y&@$E9cqn4ADG>6WZMBXAd4xB3s=VQ6kgNVf$zP z|D$gCjDLo};SgZ{|HI+NN-+d_0Rg-J|B&M!3J-fho?|A%&fBN0<+SgPT3vp!dq z@9E}~xzNFHsfG!!3s#QPTX(H+v@SwjC`WW@$)$2nW9^}$re0KFpR}nWx|1wK8|7->%5Hj@$p=g%g_p|6K6E*eYcEI-FipBC)T zFJ*8vW%qH%OLa4oFD^?9ofzY80<>JnWarUMn6KGZYwnz(;roe5==}J2|84|(VXzMd z`(F&_8&AH3y^G1WtRZ0!HIfS90>r$XEkb~1_mHnI2r!H-LzrnXOazt|$%xEjR?Jul zA~i$kW>*k&5n1ujtyJWWaxS910O#Rr`P?EoZf*E35x#XD!a@7!>?_Yu87e;)#NoQ% zwn95wi^zaG>?p&~k$$XibRf%Q=j7Xnq{gl+vP9SpRJ|R1J{0**n%_?EUB~j2y$KVFSgyAn z-@BUO{q7iXI@r0`ayIkYvJCSx_F(oFLt%h`D2s+%YGfVanCw>k4?gf~4t{K72pkmz z?#u60`nmIgi}l^p_Ji!!d;v{QjNn`1Os%1>!?*d+h*qmLjTy+Ao=jLY%t5LgjRGgEF%Zt{j5>HQ0M8(1q+%j{SxqXtUWNJE|Oo@r~^jKmtl}IEf zr;;Lk$>Dk~pDC`aM&+f#d{m64V#!!^ZHR!KSbcFdTGrNq94NdG9}cu-`Vx39<<9j5r{upX$Pt2Go) zCqT`yQYWXUL8(&|ElS0@Y0*@|R`RE-${i+b1HoU}1pA0n;UyZ_zq-wUyn$oB!jaGHNs)O-)C`z!DsRbVk zt!vOtsH%{k_T(ESwWcW*wS?;i!%e5tQyzkfT7%1LF!!>muSdnn7~UupdZT4-SR|0^ izvBQ5Nw9WNx}CxL;#4O~g`$&~-K!y+%NMV&t^FVDCOBaL literal 0 HcmV?d00001 diff --git a/src/spatialite/test/test.webp b/src/spatialite/test/test.webp new file mode 100644 index 0000000000000000000000000000000000000000..1ed03ca485fad21dc67a1ff4cd5573b9c9598a66 GIT binary patch literal 4928 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 literal 0 HcmV?d00001 diff --git a/src/spatialite/test/test.wfs b/src/spatialite/test/test.wfs new file mode 100644 index 0000000..70c8852 --- /dev/null +++ b/src/spatialite/test/test.wfs @@ -0,0 +1 @@ +unknown207021072003-06-091010004000412105100.00.00.00002005-09-0120702100664642.36368551,5169415.33921845207021072003-06-091010004015912105100.00.00.00002005-09-0120702100664350.17953981,5171957.91565536207021072003-06-091010004016722105100.00.00.00002005-09-0120702100664964.44722454,5170571.24573168 \ No newline at end of file diff --git a/src/spatialite/test/testDescribeFeatureType.wfs b/src/spatialite/test/testDescribeFeatureType.wfs new file mode 100644 index 0000000..14ad944 --- /dev/null +++ b/src/spatialite/test/testDescribeFeatureType.wfs @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/spatialite/test/test_geos.sqlite b/src/spatialite/test/test_geos.sqlite new file mode 100644 index 0000000000000000000000000000000000000000..336a1ef23c62965c513ed24169542efed013e21d GIT binary patch literal 272384 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%0DuOd2cT+&nH8P$==74iOJry&cxJ*K3_~s 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 literal 0 HcmV?d00001 diff --git a/src/spatialite/test/test_helpers.h b/src/spatialite/test/test_helpers.h new file mode 100644 index 0000000..39475bc --- /dev/null +++ b/src/spatialite/test/test_helpers.h @@ -0,0 +1,80 @@ +#if __GNUC__ +#define UNUSED __attribute__ ((__unused__)) +#else +#define UNUSED +#endif + +#ifdef __WIN32 +/* + * Windows replacement for strcastr + * + * original code from: + * https://code.google.com/p/msysgit/source/browse/compat/strcasestr.c?repo=4msysgit&name=mingw-v1.5.2.4-devel + */ +static char * +strcasestr (const char *haystack, const char *needle) +{ + int nlen = strlen (needle); + int hlen = strlen (haystack) - nlen + 1; + int i; + + for (i = 0; i < hlen; i++) + { + int j; + for (j = 0; j < nlen; j++) + { + unsigned char c1 = haystack[i + j]; + unsigned char c2 = needle[j]; + if (toupper (c1) != toupper (c2)) + goto next; + } + return (char *) haystack + i; + next: + ; + } + return NULL; +} +#endif + +#ifdef __WIN32 +/* + * public domain strtok_r() by Charlie Gordon + * + * from comp.lang.c 9/14/2007 + * + * http://groups.google.com/group/comp.lang.c/msg/2ab1ecbb86646684 + * + * (Declaration that it's public domain): + * http://groups.google.com/group/comp.lang.c/msg/7c7b39328fefab9c + */ +static char * +strtok_r (char *str, const char *delim, char **nextp) +{ + char *ret; + + if (str == NULL) + { + str = *nextp; + } + + str += strspn (str, delim); + + if (*str == '\0') + { + return NULL; + } + + ret = str; + + str += strcspn (str, delim); + + if (*str) + { + *str++ = '\0'; + } + + *nextp = str; + + return ret; +} +#endif diff --git a/src/spatialite/test/test_under_valgrind.sh b/src/spatialite/test/test_under_valgrind.sh new file mode 100755 index 0000000..331b229 --- /dev/null +++ b/src/spatialite/test/test_under_valgrind.sh @@ -0,0 +1,6 @@ +#! /bin/bash +for i in *; do +if test -x $i -a -f $i -a $i != "test_under_valgrind.sh"; then + libtool --mode=execute valgrind --track-origins=yes --tool=memcheck --num-callers=20 --leak-check=full --show-reachable=yes --suppressions=geos-init.supp $i +fi; +done; diff --git a/src/spatialite/test/testcase1.csv b/src/spatialite/test/testcase1.csv new file mode 100644 index 0000000..ad474b2 --- /dev/null +++ b/src/spatialite/test/testcase1.csv @@ -0,0 +1,17 @@ +2172515 "Candelo" "Candelo" "Candelo,Kandelo,Кандело" -36.76667 149.68333 "P" "PPL" "AU" 2 10550 895 152 "Australia/Sydney" "2011-08-08" +2172516 "Canbrae" "Canbrae" -28.21667 149.1 "S" "FRM" "AU" 4 33610 0 212 "Australia/Brisbane" "2011-06-04" +2172517 "Canberra" "Canberra" "Camberra,Canberra,Gorad Kanbera,Kamberra,Kambra,Kampera,Kanapera,Kanbera,Kanbero,Kanberra,Kanberrae,Kanbérra,Kānapera,kaenbeola,kainabara,kan pei la,kanbra,kanpara,kenabera,kyanabera,kyanbera,kynbra,qnbrh,Καμπέρα,Горад Канбера,Канбера,Канберрæ,Канберра,Канбє́ра,Կանբեռա,קאנבערא,קנברה,كانبرا,کانبرا,کینبرا,कॅनबेरा,कैनबरा,ক্যানবেরা,கான்பரா,แคนเบอร์รา,ཁན་པེ་ར།,კანბერა,ካንበራ,キャンベラ,坎培拉,堪培拉,캔버라" -35.28346 149.12807 "P" "PPLC" "AU" 1 327700 609 "Australia/Sydney" "2009-08-04" +2172518 "Canberra" "Canberra" -26.78333 148.43333 "S" "FRM" "AU" 4 34860 0 386 "Australia/Brisbane" "2011-06-04" +2172519 "Canbelego" "Canbelego" -31.56667 146.31667 "P" "PPL" "AU" 2 11750 0 347 "Australia/Sydney" "2011-06-04" +2172520 "Canaway Range" "Canaway Range" -26.11667 142.86667 "T" "MTS" "AU" 4 0 175 "Australia/Brisbane" "1993-12-30" +2172521 "Mount Canaway" "Mount Canaway" -26 143.91667 "T" "MT" "AU" 4 0 305 "Australia/Brisbane" "1993-12-30" +2172522 "Canary Island South" "Canary Island South" -36.05 143.86667 "P" "PPL" "AU" 7 23940 0 124 "Australia/Melbourne" "2011-06-04" +2172523 "Canary Island" "Canary Island" -35.98333 143.85 "P" "PPL" "AU" 7 23940 0 105 "Australia/Melbourne" "2011-06-04" +2172524 "Canary Creek" "Canary Creek" -24.28333 148.61667 "H" "STM" "AU" 4 0 221 "Australia/Brisbane" "1993-12-30" +2172525 "Canara Creek" "Canara Creek" -26.36667 144.23333 "H" "STM" "AU" 4 0 269 "Australia/Brisbane" "1993-12-30" +2172526 "Canally" "Canally" -34.7 143.43333 "S" "FRM" "AU" 2 10300 0 62 "Australia/Sydney" "2011-06-04" +2172527 "Canally" "Canally" -32.61667 144.38333 "S" "FRM" "AU" 2 11700 0 93 "Australia/Sydney" "2011-06-04" +2172528 "Canal Lagoon" "Canal Lagoon" -35.21667 150.55 "H" "LGN" "AU" 2 0 -9999 "Australia/Sydney" "1993-12-30" +2172529 "Canal Creek Bore" "Canal Creek Bore" -20.63333 140.9 "H" "WLL" "AU" 4 0 252 "Australia/Brisbane" "1993-12-30" +2172530 "Canal Creek" "Canal Creek" -27.86667 151.51667 "H" "STM" "AU" 4 0 459 "Australia/Brisbane" "1993-12-30" +2172531 "Canal Creek" "Canal Creek" -25.91667 149.48333 "H" "STM" "AU" 4 0 287 "Australia/Brisbane" "1993-12-30" diff --git a/src/spatialite/test/testcase1.xls b/src/spatialite/test/testcase1.xls new file mode 100644 index 0000000000000000000000000000000000000000..2f12b1063840bc318d125e95bd3c6eed7a7e5191 GIT binary patch literal 16896 zcmeHOdvILUc|Uhw+Vx7hE6Ijng0ncq_^|@XcEE-julxWxk&I%Q8fHk#%342QEeTl$ z)PYnylF1*XO=?IcCR37(OMpB8GYxGZ)XpC!%|Hq?X+jDahfE4i+o?j^={Si|f4}d$ zXYV~L*|I%O8dI)(?!Di+=kfc__nq&Y`@7y3|Doy77oM2?6H{|sZsO+ciHu1_@;%(o zv2xCs_u`&;Z%<52*lgUsdz?Wda5TUghXE5vNhI354k?Y4L7IV-MXECQR z38@*W1!*SIETprL&PI9<(m6=8kKzGngBir%h{>C^W&qb=GYZR` z_;D6ICOR-DQZpJaPNe*FW!~*S9D(V^iqE6tpGjjDr;_IBhUYouW$ypP#LVM~12`M= zI@0xKh_PXHsj@l$+d5VWhLT4N`?1KZ@KRW7Vpx?vhjXKOOrAU==M@rxP_St7%Vb6J z%s~jOd#{}5%DE9|&pah{ek3{Vh)v%{sfj=NBo{JNNO~QZ1KUl>R7}lN6gYiP=hgI^ z^|~+*x1ndw#ZFuYOh3-;=8~F{E#4+m#?ud*T|hZtu0yH3>Bf08kPk}jGNd_)db5{t z{HnF<*KX+Onv+PGzvAc==Oh};LyYcg)?D1(eereIG2=_j=JUS#Xey{oOi9ANb9{cmmN6VW3UniDN>qt8_<&TxmR;Mce&duM8G0juG;IQMo zNXKEkHh;k}@(ahvUwDlC%#`^?yeF^Q0O?xs82FOlVGFB(onPbU`8!(4G^D)GM8@L%k)au<u_sFZ54KIeHs4HV&_pYqVScVI4fK~QgJ&CW zwM^)KOz#RNa>0D4MxLE$ORPvNO?)76dE$x$TId0Yo}Mm1>bM3yb?n+XGF+-`FJ0U_ z+CNYp#l~%MTYGzJ+cNyqp8AGMWmN1%#Va>-19w8!TYdm_YIEEc z2LeRlphfZMForqh>d^L?!&N;#WIWI9=_d5cNXwdoFbVN6kFmLg+)^+C%o~8N#K>42 zmSkPkOUn#J>abR%(>QFo{v16m06papDARn%Cu#!$P~=1OsB{y-Jf|O z^H}ED%)^I*AL^m0oUts{Rpm{ zcmuc&2HL$U6`T>~TepfI9D_eQ*@Q5+u4uiIHc;K}z6 z?i$&K+%OJwmn(gPyM_nKK|j^9h+#q9)x+iTP3X20-S%$mwhu~qd7zP|RH=*x4=VYt z($>Mj0hI2#YCQrKo2h8w{Hnp>G9GN|>cTr_e&iP~clY(I{3FR9$zK+zempV z0A-0BhgV)0xu1{wyIX&FSL+YQS1yR$f5FTJZPpLv_;;5ncm>baw^z?xgSNBg4jI9i zxi3pX4a)%JIR27XhccA+>~j;7{jSh%O1h>)K*Eojiok zN#!`)wRK_aNqHm+Ys(?{Ps*byYs-;Xtj(jt)aH?Rtj(j>)#hQbnv}<}sx8NHtI zM)N)@u1k{h&pvyPIVuFG#}@<~D#aWr4vB*r7waS--M#%iSIq5OwO@0R$Vqh_`lr|a zy0579Q^=t;RH}nSJE)X~L<@XVXpI?=I4-{V(O%N9imegy+fZ4h9Hc%pr}dj4(ON1s zgOa74Sdtih^A~|m^iE%hUX~=eq7pHCK;WCpQvHwJdg<@)*Sgf=S8r;&9@>PT1-*D^ z#TTkrTZ(Gnp>1C@@y)^p`ndQBF?(Gn(#4tv_S@2}XymR*U6}3jxDlyTC9;DB#PKts$ z*-<4O1@xdm^ci*eINV$7MXeFTILyLR)rA)K&7MG)xT8zFsteJ_1^vMz5A=NE+m{J? zLqlos!qFlj zTIkH!^OT(#2}cW%3BWdh$)K%8ZIN)a;C%7T7XvMlq6I%~uwGKMphPW_qQ&Pc-#Lqd} zQWSa0L7sBPJtfEw!ZoyB6nV-)&eg&C2EltE$;aA8wXxH+OeM&NsAWG9kQjPF(~b5Kzb>h#px+ENIM#&MT3U| z4bn1;tp;hw|G66bW?!H|Ml|4OJ8F;-4Jc8AjA$USsB_tV&0#DO|KHtL)Ed-+pZrv! z|MO$9N>&SMpAjvr|7RTZ89{$buqtGn7?g3mNTa~l1N2Iz`Vp6QZXdhUjT8wE@xdPv^Nx(b+pg&|ebFff)|^84h|zQr~)5^Z zc^g5qjt#P+#V@P%qY*Ugco5fJ-#i;=QSWHM4Zkn{b%0vbixxeX{A|X5tS^cO)r%ID zeOInnQ?E9tceJQ?w5YGzfLhc?w0QaJR*QN^i+c5>U>?+qE$j}d-qC{l1>bxt(4s-K z;HPSiUV~^siCQ#>7U#wH{ov^b)D{h*g;?h$)uO@iqz2I*nUsjn}pq!JL$CQ%0r7V^3)G=biqD>iqj12>PGsuttsack9Lwm5a+ z1IU~0vGFlo2S%)+XvmFwmmLqwRv=y+B~HW-1d|@aPt`SYq2PG;OfC~t?h$; zT${&Nh1xuBaccAUN)XLsnBn1@-@{oYhLQ`a5(DA9s>B!E3#$^t;{2+_khlO6!xO)c zBDBFK450kx=$msAf6&;vFH=;KfkEXD@%${)d|M2gGVPl|Zz0NStt|de*L$D48UKE~ zQgiCD9X`DKio+d0_-RpVG@!;J)KH1Rx&XZPKCq@xyq1O@kAf$MV;7V zNUSI=L2qWiN=s1Us3{QHDJ8-ANv#=!LSjWJ3C?@=r<4RGT0<#`D6yiHM3h)jO2S$sA+yI? zWGYHREfNwdQ&AF@SV=e*nTnFI#EMc9j5gFlDG5r{LMe$Tv7(ejlvqiMUs)R@MGHGK zl8#>~C80ATBvz8n=0d3nOROZFnW5B#^()#kBvzD~u*8Z|6P8%vch6vB7Z58-Peh58 zspttytfZ=1&!ICOPH`Gc=SYoBlL0%^j$-WBEUqfO=DG5ugC?#Qu6{RGi#EMc9GVTGf zl6Ji3^w1KPSec%du*8be5|&s|TEY@5N=rnEm5i(o&mGbc=l^8a7ZZ+u#_|75)pNKq zC?!!#4NXN&SYkz~2}`UfHDUc<=aD5=l$x-_ic%AnSW#*sN~|a~5hYemCpBS-mFcMo zOROk0VTl!`CMYomDK!x#R+O5E5-UngSXxM_2}=uQt2Ut5D>Y%~z*LlkC04S|98gNa z&H+aGkXV_Xl86#3N=ZbCl~bc6LSkhqO2QH=(^C?bSW!yC(nCr~Sb9h)i72t6lth$R zQA)zDW=cue)vTdv1I~kxlJHGPtTZ_5fKn6SPbI1~IO~8?6LuabHDQSrr6w$~qSS;X zR+O5E5-UngM2VHD=!rb6&ACmIHGD-@dV;f%el-<6VTl!`C+v=5Dtf{aD@sqCAM~g6 z1SQS`_UsZXN>5l~Wh!c7ZndQ-^69AwORP*!O;}=OdTK&ua6qgmH4!CNPA4^CiIrnf z6SNoi1|hN1gk5_`tnhyhgtSnTjC+(=X_ELKC03eb4Y2X2N!9=xf0`VxX@Vbxv`~}d z^G)(rV2PC`C;l`!Yq0JF?b!33BShcqpl=TMKEc>G3;O8TH#_K?9rVo(`ep}xvxB}_ z(A%+ZcF;FF=((>7$G*iu-{PQenKbq-lg7TqLEqw_Z*kDKIOtm(^exWVw>aoqs_3Jn zRz6B2|{XdGi!=G1&5GYGo^qBHV}8o-x{f9ygOlqGwA=roH(g9nY6M4 zZcNm;ZBgT5wLfX&qE6Mg(nT@s2w#xUp33AbcuZqlEp$emshRyv9^ace9F)md@cQoY z&K>~|R*qwPL@je^@&m@~m$SK&D`ofg&BKE`2e*vm*WR|dT*)uLv~^>tuUx5=5zviU zwSCK$Wm^2y&hS6&^wg>YJ;Tc6Cg|6PKK9^SN3PzM`|_vKX3>RDzS4%g+mQ&I&k3A+ z-y#xsh+RnBuU?D9cZYr?a>GMN?BVcH{rxlVmm(FB#$uoR1}<{XD~}>i*VaFIWaxR1 z_ha|{O=-r>&$G)($MNvTzW>7aKX=i&x!s=u{=$*35kKED*$@-?A7UY{Q$0@S?>_}o zjSo$Qi|>pA9G6Y=}db>l?!=XiZ3XfkQmpoh(Zfxn0uIY~UrPCJ*^qv3! literal 0 HcmV?d00001 diff --git a/src/spatialite/test/thunderstorm_mild.svg b/src/spatialite/test/thunderstorm_mild.svg new file mode 100644 index 0000000..70e6126 --- /dev/null +++ b/src/spatialite/test/thunderstorm_mild.svg @@ -0,0 +1,79 @@ + + + + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/src/spatialite/test/tile000.jpeg b/src/spatialite/test/tile000.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..2d5da0c8a714a93b744b549a883469331fde83c8 GIT binary patch literal 9137 zcmb7oby!qQ8~53zdzV^r>8_Q@NNn`JUn~?QbK~8L_tDAL<*&#q=ZsHp;WX?Fe+*W8Yq;GjgEntnT3Ug3dYXK z4(DWov%vrU1a$K$0X_jaAt5=O8cGfS|4!Gv0F>}=pKw6z02m6wfr75F03!f^aX^2& z`)>k+aBy#Wd84HN`||(j01)^_dHo3>#Q_0e2oB_Cm>05-7W5137vTNwO+-#NX`l`jcM(y{j z5*F$5mnm_S5}q$Ae9iwlnWj7Yq)zf(RYmEppwH4DxLb~WE)y;}xEWM0QdBX2;XTv^ zl520<3{z82{h`HRv^krU_fkiXJk33KMk>aN#%_+I$i`sIIm^_U+^oxi_PhIYbcz-s z5r4LMobH!EgT>#4sUji5Kicn+R|E7<4G#T@6|DH$;Qrsnpcx(fsr@jVhaiiHX$9S&T7Rxh6)QBMIB=bza@4}pPB@`O!y@$ZgE0_ zXUR^J7UwkFtHYXWtBOMtVP_N*jtAFUIC*rJ2l@K^Vy{c8NE?vOKl{_6z_9sseIaVf z_(5$v4u@2!wSe&WSmpgDf9&wM>Zs;>PHIYSU^2&qRI>ip^dOR_A|9ZBT`A`{Cx&8s zXG;o@3bY2w9b4!M^mb|FcQXKVV8ZmWtl9qY%GQL>0K?x&M+b!C1FS&29dUL-1a)~8 zbH!cm8!>d?M))_;0g;@xz~2U)YCK>oM$2H#`!iAXVdTixF=K|iWOm1-@%&bq!O~Q< zxJrv_rnS+UgySMUVS7RT(!+WN?zPE?j0B%XMtiXZ$rsFRYn>>+7rKj<`Z=T~^+Z%uE|v2BYcOpBM_*KT+SI9R4vjYf*yEYj5!w*EEVXt7Xq+^&!WpV|!v7 z<45b1@O2y4PMpKJdBIZc^~~3o%9)*}c(kul9Z{63O%;xmf>FA>61=pM!sIUrM;ol$ zuYnst@jw7D7=#PP`3t(gW4pl<0L6h&Qn9g$;<6*ekklMX`Zw?*yg?lZ54^60eVV{S zd6)B=l?d#|F`-7XnDTudNNQMjNyMDzns4OlTh_iOu=dfI{Lm7`ntj4Dh@{5 zP$~+R5a(agvmpOH*f5dzEkM*S2!g>$XM3NX-y6m(e}V{&))p)6Wz8ZT+PR&!s>_4i z4G48cI+=#_BQ6FOBho(WkxcA_!a&j8{`j(0z99TZ!w>v>D$obyTP)_JBx?nnXsp-< z-d%n2bFYqN>HGk8&x_c-M~PeJS&CX;*$@X>Z}(E>Glxm7H;qI?_(*8!@bixKt+&=K zg-spaaO64VHY&sthzHC&3DC3=FMTea=C7tZ(#7=X*6;+YjHevC9N;|)&n@!1b>?{u zI1lx|u^Vh7@oY}rCNOJ~AY2!9%^p=U`)1}no)$ZuV&HIj{`i{|Mj+T$MciTF1zaWh zd#)*Oc;Za`{CD4r1z(qfAaL|(c_I7V-lii-nNNz0?M~nLW8fmcVeoIRI}>8g*mAqG zK@R)D76J?F)KhX=L^U$WMO|Jy9GT5UN1Z~Z?a`1T(?xryoTAl~-Ehl~(QxqPjGdDD z(4Z|P+il|()+KhP$f*~Lj1DHtt05uVpF%d7>xf_RznY3va9gj!FXXdhd5stCkAYRz zd~z}wZigJ`@?Ks8Qu^KN_c2-x#T-2=uA7PD(u~5F(hudQd0tzv@IYLTK00hjfSNWu z-yJ>ZnK9)YOz$~6@ZnA^=v}LRuKj{doC+3S393MYof~U@CXuT=DK5Ei#$A`96D@-8 z&=rv;b(-U1!Ay!BgpJ-m2XOf?EXP#rqO8nX;0IKJ1#|cWeTpxqm#U0Z z%=<^2L;)ftOScPsRDmfzp8he!{`;?f3Kl)zbVMn_3LUOyEu$K^^(TPa;NoFuwmp8y z?FapD&v8nw0itgprDgVy8=-l(e@Wk&_G3Of4Lc3a()f_9ilHVPZbBk>86*I@paM@O z-^<@pughq+^fqg%#qGbU!f@NOlJzWtBSoWhvk1Zmr36ce2|0ACg5^Zs=Dm~K>~FMK zH;!Z2H?DNg!o}G4`eUwv5vwF&=CI0NjCKQUD;5fZ%X zPr7UN{BA{py;(Nb-+~nZ6}(%ijJw-)gLH1_|3x|&g!d25|AG2nq_c@qu_BNtTy`-f zyMKUwv%}s7{diIN@wnfTS&djuj{grs!@bu&90Kr!xlAtmfxYJfYK(pgVLQ~5ZHE#? z_@bSZO<0siqK^7gxJ)6py84DJ+?w#!uTDmf3t7r1V;{zs(pZm88NQ^v^0HBrtP7@6 zc6-mo)}wjIeJ?SsUiRC=d-;nlL96|bUzt&Tjg~qbn@nUZalE(O<(D``-&&*4n|+`) zG?dd1JG{T#!}Q==QIJDQ#+pg>B$H1bugvLw(m7R@cfDW%z3f52*Dig>A$pB856_CQ z6-~_?3N`$3NK?rq-CR9iMv5z4sJ0rp#yyTO(#xq^?h*nQ91LeR4ytnJ6^yt4u803v z2?rPa-{tVX>meI16{{#a0%b=nriA>*OyIv}I$lzoa-&F(DUP%WS5*Cq>sTeCETR)V zbC5Lk!?^+@cI6<0xV;6|5M5=s_a0)Ndx9UwAAg`nxxUFxy0!YDncd4l9*?#IZg0O{C)QLR zt>ox)C4v5?S|2CfIA#i8xc(>Son!G&1G>=e#&LGAEs=0bZgb6yiU&W3!IYwXuMK1K50Nzew)V#lH*^zv6lh9!Di}XwUSN zUQFy(vMh10T@X}zcb>6S>)!Z;9|C}Iz&DijW@7$l>Vlx6U^WOPE22aUna-|+vcu8$ zR<`}mHids1oT_QV>7(&aRzBy*kY#(EK18zdS1R(fD?|21@;Coe{agH1Go^nx5qbO2 za4M#;$@|aPY|={)^TqEfU(Y_md(aUxyK*s(r?i9LJ-yoYa|oh|Xy&(tlbVd4v)eR%$2?wUSkbMe4o($c$36cz&gq7^+_FOFKCwSM4JF zV%Q~xB%Ro$g4yxmeY#S@0#f-^EPWQ@O-kgZ#u)e`dN-3Z^OnX`YL%1v{4R7?k51~I zN==6PEy=`ML{0r4=-JZtC{_*Fa%Cp7Ds(74!4M=!t8<3H|OFi$nPvmxpY| zCZr$QSZED2$`8cdlIUx6vYga48U0a+DDl>8G|Z6qL!G%Xk>OPPlTc}K+o8rU4K14T zFsGGgav1tk%I8Vhi~c>WH8xItw9L+~vqG1JS#m}@Hq%mLKhz7dt*Tg)gV%n(Y-@DQ+&cfX+W350?fU)tiyV(?hL(&LXU4xd?4OBnL-B870T3<- z?>}S(fU=1qQ4m(U^azA^$?7-wU-XyBhr!NSH%iy-;BkS^kF2MMPYWqLZoa({!WTA!$LIg5(;jUH z`v(Ukl8&0@M{+%hZsJodE7ljfnoj7_;s3Q0$TaFI_5rz1-IR8}Vw-RCu9dutm~U`pwq2R2 z#czT#JK|?=x=LY9pny1qa4M@X*6Q<|HSW6NUTiEyv_s zyQtJLskDgLShEkeXPO;x=8?r4Y_)t5s_+Uq{^GsVPb&m$NbZ}~O1Kn%0< zVv{Kk7edSgGyNL10|K*cVbgixSCvkq7W)oscnQ>dvIb+{sfd)7C%FU#V`=n1=j}W} z=Ii1&H{m>7doAFgWk~wCai42ZJQpc~z~L0o5mgK#bHNH=%wOdB)7#zQz)2*|BAb3c z1$m`ku_rfdyW$&BbB~ODfKOkRHLHd6{+ChZJFKXLJPlN_&X_jggOsP-NqxDWqVl7p zh${srFdq^gV@=lU%}sr`! z;#qfoLn&t;ibO=xIo915>8?E7Av z8}*`gE%G7KON*}m{m_WcpMD|Pak`L50V~I`*sT@4b`2=5pQ#UKPAOh$7qC6TT6RKk zl&MS(MU{q~qTT#vPv{JDl_Y{)GmiwiThaR+vYEqt;3ci*_x1%b;HgnWA! zM4QacKqdY7{ri?+`dwJ(Ln{wy^Lh=Iivyyd@KubQ%ky@x3!}Ze@{j#){kdP?rwbihR>&KZxR`sShb_t zhtR=wQAO6M3yH0wrtattAMYu=Wi&q2Znnw2qmitGqRynnr1790?M#Tq-{JGBpBiOe z*urm+8|CkUN&gQKlZ8qMq?@&4qFBPEXNYcTr|_Kjks~GdJWl89m!XMj-j*$aEM`(FA6$Q)1klg{*HVtb`!)(+&^=46$;(?k zm1*9LrAB@_tEY@DT!%Lg1q!d#;53{i8TfX@fdYkZ_o;%OS77ing7($mq@Dw!GDW9s z#qAp&@y}@zfOA7PAbsSVE9IQ-o|Wh1uWnB>v7^DdM#u@lUt|bvk`VdK|VN*VPD@5Jk?3#0T_osgJ4cdT=9=xRfAP zC1g~lcw$HSjNNcsMF3Qo46R&yI4`HX5}`b8-DqXaZrZr+^p%uJ;~A6iar4j4*^ry9 zlNEZib^a6N|4X3&D1=Rv6^XL*j!^oS_d{}$A{h!cJ_ar=EqxY&t!b*+*AQ3_t{Y9_ zVf}dr;?i%$=C>P!D2c+$7PPpO`tT3KWH<*ij_$g`IWpF9BEnbHhvMNlv$kTwzSH{T`G$jC`gE&-9u?9;S0{n|$|^1|rp3`4pWik+-G>LL(D_x{vI3K?#(d@2Nh0DWYWU@ZX>T z@>PEcJ7iEPgB_%qMLAY2-C-y+81g`3q{aJlX4T7{8XTQM`<4j_9S2e%cugf5co>HE zoEUzt`)Mwc55$9BiN(tKa8OhVZ_)8`ba)=@k`F<2O4A>SuS*#+NMUQ_?9{mVOLN_h z80B)TJDY0ca|0MWd725u!!xC^GF@anV7_pHP!0yk^R)tnUn`#-CEt!;u8X~CfaMN~ zK=r#loX9b49|3A*({{s$ZmtG8Op9lm$OTfp442cQ&pZOkFgv`VKhVL2Xx?NDtk=kS zJWz=?ccv2U^-HXpa(IzCAeOi?0DBFE2n1!VF&E{cG5_Pl z8+Lhvko1zn8)iAldi0+d19Tg*F@AZ%G82~DdJWht)ux>u2!?ij1~sgl0{&N>{SS*8 zd{3`|1E)V>9TYrYFB2Wxer_3F+|CQwy|N7}JI}gG+v4B;6*BlEY%6s9&-i3md(UMT z;!n|e+}Ezrwf>6}ipgsrcR8%%)_bTc4_)-|AZSTrfhT!Lc#pke*mx?7{%^)m; zwM*q`9>IWW*Iw)fXd5Q6Qm7yVkza`!@D_a2@l*C_{3%>EN?;s{X8~L4&ZbqU#=1cn zVJp=pS&jQ)GZp-TvXMbZw`I}2^ri#4Wy8;eq9(S$gUDx>vE9(x1G#v1hs&6`v=ZtW ze^8TFuo7+H`4N`812S`dC~GR9l3CnK>#OhFWX_oQp@53TB@ROLtWh5cx45!*e_}}P z?#+shGhZ@+Zw;kOQmOC{2oorr1ty^mghlkJHyFOhKLjrL>3GI-6m3w?25QBh;tzUz zReSUMPW$Rfmi{~eiKHN6xiS+sNpyDjhwSQ*tK|Co&t8>14(#70egZ1TNO1o!rB*?z zIn0jog&6$$?N3aR@Iakm_Ctx2fi#c7i3oj$(^{NkVq)TT4W!2NXgGI z%RVERqUL=8X*A;_Wy!^l`i&*wQ0ssY`Kfs^_zU;4e&4>*UFUZzP2KjSsY)L^(W1J; z0<}7cx(1$jRxT;?4-dYw3z+hknfc^MF_HMT{pCA>K7&eEDJ9Z|g!rGPl25X%7}dq% z5JJWx>wrb|)$UFE>1R#V`$j`~{+c;8$b&y>7O-1C-h)qXF& zX65wxsfexETqeqkVx4-TnZ{d(YlOU3P^iu4j!%vt*!U5fKJ7}6V60gO%?y(h6ikm% zF_aKY_&5;>thLmcZ&&BGAINu^Gj49OyTK3M%Dl{(2dE4&uJ8I(ezL4r%3;h4S=*|eXFHmc@!m3dNLN2c~GTI);9W)-=cA!f?$z%qNa7%4d|AHH!x4zubtWz zudnF?KlvACNF*P4uAljMWeBINdW^KrzLr^b3u-x9=pRJ}kTXo0gq|<2ZGpe)-ln_TcM>qYB`MjJ<8WO?sx`fPKI(kt?QtZ>)4Y4C z6K<#(JoW?davr&+f{n(OwQ-~D<5A^jy)}}pcBxxeG$aN?b(_rQ^jt*O1jlnpB#Wu5i>!nC zLyEgoCzTHUuO9crd^8_e&;dT8Bzs;l?1<=33+QRWxuody%E79kT+Rta3>zs7fw2Ht zORI5Z+t}v2S}1jPiH>;G%OY2oIwMZ|eW|mS&)?7EtCR7`LmRWpGZ{4(r!!6Ye{fSN z(p{ESMaqhOS5PaAQu1jVuYUS4sL0%GU1kPYRVKw|phe|7YO~GF3(mGB=B-w%qe1#MHD7=Z+ic4DjOoHZR0)WR&18nNf39 z4375lMS&f|zVLLomLO3F&F-RL*ese&o}!qmfxfp6^)?{^oO zr&o_7#D{}zOqY6EPQHsTEr&S2T-Gyull9i~-K#$X2hOe50R&r?OTw~EV*}(hMdj73 zQ&ys180liPQ**hBEi5081n0HiqiLSzcQX5QWv^nhWRjdJQpM{D+Y9M&Y5eT2bsrWt zO^H{)`l=1=Su+m{?=dC9uAQ3lA7&|E9qq9$fJ93DPyRM5)N7cXn_F zIVxn0$(9;y5K=&!ZOl)NFXnc}xX9AG5liD1hswv(bOtgxx@7+r2oP~w)_JphhotVthMh zWaQF%;8BpjeUI($(r;|HPQK(ikh4B-4!H*2yGuTvS*ntxqLUDq5pyf6vK=q7W;$Pz#?@0SlZ}mu5j%FN8-S2`iMEmd zX8Pb*OB1^J+QI&`I=p+%?UaJeh!VU@J4`*Rv1F}qB6|(=h$@P1=Z#0%oNZCT1B(t%ItMg+7QKQL@na*8kjeckjeW#Qk_Ot(7%Cc0h1>LiM22q zd)_WCb1?55rjSm|BCU{)t!N2(@a-C~H5Hjdg}0h!+(yVVb=#qgBPDq;Y9^mI2{)_e zSu<%YFg)??F5$$_>Pm4C2X!M%Jrhw6Pzwf$_|~b`vX~YKehpOyyTN5eCmheSEXCh0 zUepCK!iXNn6r&q2LlqE-x$URBD8V{!!If}GWg+o8nK5tiL-SEVIW*MMGJdsD;G3~0 z?ehU(DpmG!n5f;Fo4jUE|H|VqLhjs5~t79th`R9>V+If$lop3 z&NziKu97}iA&7nzx5XcB^^2>cyLO8x0GgpbhK9yHQzN03v_^Mj!(-<75`tNA1bAZ` z?{US@)qC|^s^j;DrL`jI~ zUPR{`?>Xo9UFVPQk8iDY?YZ_|&t9|kv!44|_q}fCZdU+^y2>LJ01FEMurL+4{SGJs zU=R)t4hW37fWcr~JYsx2Od%s8A|Qs6k&{Eopil~G1{w-VIw~j>#tfrlWMpDuqM%{9 z&vNfR!#$>ZcY|PIUd6-3BgMxjy+;Y9y!ZcIZo2^}{@t8FSS$cG6bl5!xR|3%|a2g*2o7_+GrS;G?6L%CWu0w6+#s<8WMYGg=%j zODTFi8I7opyZ4ksL!4r0UFB(Ulgq;4m-4pl?p4%&}l42+Bs?mjtswR6Ult!mI` z0B!-)R0hRHNCV(I+R3fE$$ZFLmo!K1uNJzW5?e>c@AFR%&#h9XWg#s*8?E@m(!KQd z<>jeGfWUX3qdlJEIZDe@kyS6NS&E$(V>9f&iTe(5bwJgZD0492H zjArB9Hb1v^D1jFKu~VZo!9)`_i+si_n8es-Vb-JX{X527bv(7-DtFb00a|jfgW&5W zM#pNtng%{ykC4|XUb zXF===p+xp`=>jn5;(`F!*jPANI3NrJ?!JrKv z141k?_L^|)7^_6=ns79Vw(lu4TLqQb_muX3ejHGly%HmLHo|u{ccvphg(JrVt}C+g zuk9RN1(RybPCU4WO`!C1=%5Q4in_Yi*e@NsEv^$>tX$8RDslWX5kzypK>k`a(x`fT zo8Bc=^Vk#?(>OW*po1Rv{S=0A>~)=EHBrdi#HKwVlD&V^g2knX?TP*8K-#T#xMxpO_cvMppJ*NhFc}U7;+^&Hq3OecO9h9T8-*R` z>C9IQOEQ}N{@&rW4>in=ATEvpb-BEro!1=snNI88)WrQ)tD zE{I4YLcy10?m=UimYTp*Ds9XrdiK2+Tfts!F^h|0bK*o@j4zXz*=gar>#ZdTy2^o>g1PFlq6dhc&d; zUygUG4UB|n?7^_%>Z{YCYGjWGDfOU4I6+iTr5^s4=YzcY`o|RK*QXmaF@#<{H<~Ye z4Ezk{AB{$^eF)j;r=%Y_8i&8Pkhg$?N5hlz zJk=ltb`fh^QP~Fe)ke+OtGKpe&ts^)E3HMiu&ABAa;$Ta%Bb#AW*f`$+|QPdsuC zG%Gs69@{y@l@m%urHXn1(pi=57L`NYxy1*=oE>6EsT=*Hu#fM;+=sc^WjtUN}K9nV#LHA zg5p=HW8@iP*x#iz=B57A2rYurXd_8I`Wp3?CvEVH`)GBq3h%)JJ<9pLAp=QwbFpG_ zRMocQ5P`|Doy2|9fpzbaTAikX3pP^4>B?1F-?Y$a1Jot^W^&E?2ZE+wIdndaljS!G z!y1pXq)k64re5ZTHqDiEkS8gAIE|ipdY9Osz+GCy#=^$?H?7@KA#4zo8A1+6;K)Z*!$O~QT_s&E-J{v))6Q0FBw{^jX z=={EBc8tCSMELpwpGkmxD6t&$t&v#oczm2bDsYh!d%I_+Ozus*zW437|Mt3!BuV}U zHU0_aF{Kw`LG?dVsGL4omi-OsUObty;TL(gp!}tlkdY%cKiY}s!63b5DuaPg4ulnd zrE2&yanJ`&dihI+f@J^3_er_5{R0UnI8FnMHUi^mL18(0U0V=~(0f!6t4`v7Zz8y| z*z1++=cHz1|F3HO7GrQ%|F;q5@qZp*LeZpA{{j3kWFrTmjoith%>R(XFZ^LrFX;pv=gw>L0*fn-&gSRxx^C_dK5*c3R5w6a-;R|}v5s(8 z;5R#_ayvR3#CGVVl^BNqag9l*b#pE?sil^`Fjvdcntp7tF#l8O<;TYR=Jrh;$+w(oP^gDaAcgSZ{wC^n-XlG4_uEu{g@FB(zWIq(p7OENiO?S=}qLVf@HbsG_oC zx3|PhwM?q1VqW>N#G>{IQw?6DVU{9l& z*o|RH_qas8*%70e_G9YXCTo15)xH$b-(Jdyqk9-hC64qmId}x)rloYYMzs*n#E%qN zc((kMv3S3770N-hJFdv;AXJvACSSqq*(Ofw6;SY9EHRO|_68T}!J|POe@UIxkBJv< z2nLDRSRfG29qIph%dt2*>`)SCaJHUG0iS&>88`*)4+7EnZAC8O^K z8C>&!z2;BwZ^M|_c;_`sKOU5p6a9Oo;h)EJ4caVq;javOu1k<`u&grpG1DTFv_i&c zQ|JWgy+NnRbo|s}~n>#PoG z3U!MmLsH8E86O`AbfNPNAEQ)cce;m0$;Q3eUq~x?!*O?sfyK(BeXPdgcLq!;v$p^W zEgBBrmGHd4D=8OJC`+nr6E zFR(}NZ1{XlgI2qdgp2}(u-YUSPyZq-{Y35^n~jA&=lF1W(7K>elq6JDjsc&L9yd^U zL4u07-15)MM(f=el6SCm%>L(AtDUs9a3u7`&6jn=Wf_sl+*`LV^uG1MPP0iiay(>B zH`F%@uptYk6jbT{Oi^>Kp-#R}A-Ey(?fqvne2t3=CDr>hEa*UmuS2J7OI@R(ua7MS z{N&>kbgGJeU9>W;Rrb1vYa5*pKcbuO2jwNgdSurMT zeYb$r2)iE~c*SRvW^}G-)Mtr)S_^JADGytu&pxL$>T8bhPe1MEPIq$48X=VOLG@e& zFLtNLM3V>ynp5qlTW^L?ONK=8f7)Zsmz(;XFSMFrV-;DyOYKARDP!m~PVSXZ>v6-{ zRL-lc3aij&a|+*rCzf7WH5|}`*_tM0w4yYDUe4%~Y7{45)h8!1xtjTRj#k{E(HY@Y zK9fTXZ70YF9-G?k?Nu3YY;NAnybH>aHoN7$hp+TO&C2T3ZRyxn_ZItMWG!|A z5kvW+`!g>W`!6ct@7jaacO5{oGA`$bqy_gsM5dprhoI#~gpv*;(-~f6yp<`&tzMgW zIYJm5uLL5!c;Bcz(?S|wB4pJlu*-;Q+u~)UfquuCyq8nO`=ti&I;X&Gn%p`lJq;`A zmGY3(TKD_m1v~olbff$YDWZ|yb+_*Muo3_%$y~8H9pqlhGcR?yXAk?<5~J;~DmGJo zL3PkpGaRa>vn!7C&5UZ}Ji48h(Hy{4T+ceaBz_FH*=S9kE5CDpQJS9bhA$0n@g~BDE3y&tilbSAIi2pF&r}QP;H$0o%cMU z0~e)z#%{D#IITmFAN?xw*#?1wxy9~wvqi57D%|G2Xz}8*^cY4l^~od({jkBxZLq8T z@nr|U=RD3x`Bn2S^7`Jx)g3Ba;`{JtWksB6?e=a0?j;Y6qjZJ7_$N;^%n*w8?lwK| z$_-n*lD`Gk$V@#dHI4J413AajFERu~524>13Ochv6h-aO3HMPV{$Hn{KQ*QWk{MF! zH|!7Wur$D?s8R^^3Yxf(30+dmMo4|2u6o}^AlW!zL|&MHX-#Tjp1?Amot@`PW~PO* z%fQQiP0g46D#bc&rzwPj>b`B9{HX7n@28fDDI7^r&1ueE*xm3{9hPCHOk={}ZzwXe z1r9Ek6}tY}3F1?6cWyV11x5E#XJE##mC*d)+;kC3C|p1xlX)~os2CDa1`r# zbgCU1-Z(#t$tkicD%mO)H_UV@PgycTiW_DW8#&#ZG^mz3qAWJb`rQiKD<8Y-*ZQhq zX>ez%OJAN6r|wdI-|!2I20>kG^ALTJI^&{On$f3ww#2xDF0_IF4upBbLEqCfWyzq} zu};j1>XZXRRQ^3%0`5pO-VGLaR#=^2>f%qbx~>Nm7)RHNhIS;`^X_2MlZn}J+q;IJ7!^&$?aAUP2J$m}S& z9UBXOL62B$`;4#JTWIQqTG1-5!K>|_iy-b`K0(h%%(`I=7v5yst4_1|v1&#cFC+Ee zhN-8dtK;Zuw!{ae#X=VFdiwP3)$%dS zp34HgJ3_-~g8y(dth+rI0>?-KTMRj?`Hv`oG<^5lZ8-n_;>zBepK*|)Np#>e3lsnm zZTU8Wp_4jKnyxZ1b#4Z`MDO5FUb!3`4cANHp&!=s8-xIPc zBwiHAdQT>yH$Vf1mfL$|;qS&O-OI%#=f0gQh+p#O53JHheay6b=Zi*c_Y#=nUNU6ZT-(HfAA z7N&=DYMV^HxWQCDx^!#QEX0u&gVJA~t&k)LjOZe+5 zY&2*^Q%IO+aoQ2z4_4zQ!XYb|HWVKM(&e-UA+v$H7=81=oROXp0cTyK?uQ#|FL2zn z+;|@_7JMb3FYoaF?iuVQgH{ee7|0xok}eC+hkHm zjodoqM=F}S=m!W+f>Rmi8?%2BOEcU80s0IEV#HnVgSlr8g#lCO(oE@(fna@J1Xt&j ztF*Bg;{Z*ltjrAF;QK1h zSLh-X&kuMsEKO5^F~eyeF_j}Wdl9<|HDZ}`;`(xVeZdnuxp(5vugkkX2`)frwachH zbsXYW9mE}cL-(c)=vT(A=T>EM08)|AlHO1H4J)}oe{wlVza z;|-W!(t2;pT-8|(@AD)yMT^=;VJ+W;%x4LUsjdR!nIk^g^6~kH z0lnO?4J$v`@3RkrdxG(&0%tA~hp!LTP^dTBaO2eUm9rSx=cWnaE2CqM1v5kN$Xboc zE|IS-Y-QFlH%9ZKf_i{;U=$|HCeLHewHFomkul` zb%eJ-ZN0WSnlrF1s629=^i6S;gNlny?AtwM^Y2}{VT*ooec*c@Gi%RdUr`d7Y(?{s zD7Xk1{rSBmh7d$^(sZuC2g)q)Ae)@D7Am=dpQB8{@71qi<8EKC+ms>Hog?_w^d;+C zfQy9XPslK%stMhp=dYt9&|pR`%(45@!ASqD>4x=e_Zmu_)j}s=W1!!coKiQ|x5-?B z?<`9KW*-y%gkjh*wK)2!^RWYLiV*ufpJ>+>9^~POqPfmR6i_l7jITHYPi0#96%n21 zFD_fwA1wD<7vRyLO8O{ncGaI3{arR464*%2M)~>a-_3A-zIsE)rFH)jHsOkNB{@Z5 zs=`tSrib}_-H8&=+Nb>XUo%}dtkcBvx(J7zPI&SN+|Vw!KzL?m>lxvz6-#Y*(|4nx z#TqS5L?MSw9aQpKn;XaeYc9zxZ>&7dnpK8^b+&H`nJM?g8YF3+faTZ((F-e{ke|?J z#qs>)0uH)4huG1X9VDj`;jaXxg<;u>U@Z>q|w?O zjC#Y|Kv6R6fXWwLB8VMjqoffnG09mwSM|vM17vIi=e<4s;aDNba)dCI1`w2*iH-AB zMMM6jMT5(iSdHpTy-%}@DlGYX1v$d@!}vyJlE|A4mjVU14bi!jvU}Eg+xN9ghqXPv z+50w&8DMwR?TOWg5Gpi{<4uzrnM9XGte?fHB zU&#kC%EzeCS>_1O`7hPUyjAL?`{9D+C`;z@WCa12*UCZo;SNF>%`Y z!aOco%g33`Xxmcnt6q&EPlN-5Tr+{=Pcp0aRTaEU^ra6R&|Mf>Ra+ft?nG(MARp!r zia9_Uco5|k(O|UPk|?jr=pvj+s3i|EQ(W_xiV(IqRC%nhMF5sidD!}{H@uKaM>rQ5 z7j!E6RBL1jl=+OHdnG@6CDx0ohhBW7tAeSNkB^kO)Nn^r-=K7-E(MjU=8mFrn{J=0 zbR013^*#`(VAh)uH_4%2PutUN!J7Ht)waRUeKONU777PiH~600bLcG|Sn%#`>Fr`Z6w zk;Wm!A7g5&2jxTCtOY~3duUBftp5kA=XCo@#0x#JSsOqF%zfJ8I(-?TtQlSIZIsU( z31c@_vVn^fR=tNX@y0Cl+G}1f(Ds3x!Sn1X^-i4yMAU<;NbEJCzefy|5p5$^7u^Q0S@vr7H`ZNWCo`!lw zU%J&Et>}!Mhgbi6n@nBfmP`7LPcH(LsjP^@wuVzy?dH$WN38Dd$v^xktwt}{)aFx; z8vQon<%Ml^GHL&8=_gWTYDN`mcm~IUZj$?|yav%m=H9onDyI6&LN0h%%t1ng#O#Py z^9Au)+#A}-6SlAU-5otvlofV(iICXVZq5^$Z1b)=J~ME9GwZ`VUx9w2ZE zzw4x|==-ljPGVISIcBcqOD#EAT=5fa9L(YMsjK~g{9l#c`^hC@zfW2Fio0e({uOtu z8fE^)_9J*v<#ctfa05OQzC~WBVzLRFHA^LO^`^wr4R)t$oCd)iUHvvNnH|TXhyt8a zoKo??qKqgD%KZ0;M<_=rgIwS3%Yc3o)RM4IxjlSKJt<` ztsilZIL~cHkrcc9%<&gf*YxJ3GglSrE_@qJuNGY=`0_0LC$|0aLq1kR+!NTQ*o%zbul5Q726q&s6gDLe>MxL`sHRDm}bQNh%C1#AZ*U9?6&nEpOa#+tdIV4#PZK zsDaWgf?S=gTVU{Yk`CnWD@t~OoMDqz4(MFTK<7(sw@Zo(lkiYo23*7iI|YNkv+)W2 z6Eouy)f?!@%VA>W@)fohO|2HLNZuy8{%{oi@2<$;XfsDrfk45B7w4HV#bN#h5G;cF zwWo2?^z;n7fidzs6K`ipWO#>>LIC^F zd8X61NPMJC{JJG$CGNBw*9Y+c%He9hdkdoHF@(V)E8naKDe(mxNzzrfpkaCog05F~ zZokq*V-|l$Orn&rWSaGF0bBDA8&y=-vKgO=&o-XL^cALFE0hFsFN)W52EKsJiP42f zz`B{}%*Q^+66ocr>P{gDo7EFvKNnUy__Sz~Hm_o8f*70;S%Hi5|jYVn$%A=~JXLg-uNU1LIZU}zbw_#gDFcdaw#T8xLC|H|PAu1>tXC6YZUmEypkfd3Y;)EyzsR_~7Y%v^yc@T+b zwv9*m;<-4~>uxIX%a%c)*b~hT#INziukb5y^c@CRvZ+}fSE?kfe(Pr#G4fulDaD-x z$}B5Az*Q>$JbaAOZzdQPkUa2qXiYTWVrA?+ZQzaw(U}CQNGz9b0S~SogJt8J8euS{ zaz1rWs1UC}@(degmQfKVRL|de_zVU_7QY?+cEir<)m`Pad2aKo(a5z?btih1FBLf9 zVJ^%NpJz_#_@#9K=_<#vX|jCn&1ipU3f}i&xY5_^^1IK~<$%XC?E5_V8Uj zFrg>;;!34LU<+t%e@_h>a0IJXQNKmpK>D>b3i>YzEJv!|TgPckO@7E(J_V29VkMPb zYfJ=E@(+z(Ger*4X|DFj78o_VQc!`BSU`7K{{LUQF|WQ%8yoJk5^w4y|6y zR)0f~J1l$={sQ9H(Z6Txux^?1Fr)V8s1tN3{U$FmLt~1~u`x}O5gw<)EZttVn!bG%l#&qtB249z4wWtsR!QP4-jvifU=9p1L=?fm}%+bV#F literal 0 HcmV?d00001 diff --git a/src/spatialite/test/tile101.jpeg b/src/spatialite/test/tile101.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..247ee2411dd96622359e296d082e9068708eacc2 GIT binary patch literal 6742 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 literal 0 HcmV?d00001 diff --git a/src/spatialite/test/tile111.jpeg b/src/spatialite/test/tile111.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..92812e838942d5058d980e1b12cad2067b817c43 GIT binary patch literal 6173 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 Date: Tue, 14 Apr 2015 17:06:19 -0600 Subject: [PATCH 3/3] enabled gpkg support --- src/config/linux/ia32/config.h | 3 +++ src/config/linux/x64/config.h | 3 +++ src/config/mac/x64/config.h | 3 +++ src/config/win/ia32/config-msvc.h | 3 +++ src/config/win/x64/config-msvc.h | 3 +++ test/memory_database.test.coffee | 7 +++++++ 6 files changed, 22 insertions(+) diff --git a/src/config/linux/ia32/config.h b/src/config/linux/ia32/config.h index 938c091..dd7a716 100644 --- a/src/config/linux/ia32/config.h +++ b/src/config/linux/ia32/config.h @@ -222,3 +222,6 @@ /* make library loadable */ #define LOADABLE_EXTENSION 1 + +/* enable gpkg */ +#define ENABLE_GEOPACKAGE 1 diff --git a/src/config/linux/x64/config.h b/src/config/linux/x64/config.h index e1dfad8..5f19c54 100644 --- a/src/config/linux/x64/config.h +++ b/src/config/linux/x64/config.h @@ -223,3 +223,6 @@ /* make library loadable */ #define LOADABLE_EXTENSION 1 + +/* enable gpkg */ +#define ENABLE_GEOPACKAGE 1 diff --git a/src/config/mac/x64/config.h b/src/config/mac/x64/config.h index f28a381..dbc3d85 100644 --- a/src/config/mac/x64/config.h +++ b/src/config/mac/x64/config.h @@ -222,3 +222,6 @@ /* make library loadable */ #define LOADABLE_EXTENSION 1 + +/* enable gpkg */ +#define ENABLE_GEOPACKAGE 1 diff --git a/src/config/win/ia32/config-msvc.h b/src/config/win/ia32/config-msvc.h index 258474d..69fe3ac 100644 --- a/src/config/win/ia32/config-msvc.h +++ b/src/config/win/ia32/config-msvc.h @@ -227,3 +227,6 @@ /* make library loadable */ #define LOADABLE_EXTENSION 1 + +/* enable gpkg */ +#define ENABLE_GEOPACKAGE 1 diff --git a/src/config/win/x64/config-msvc.h b/src/config/win/x64/config-msvc.h index a289cf6..6984e0e 100644 --- a/src/config/win/x64/config-msvc.h +++ b/src/config/win/x64/config-msvc.h @@ -227,3 +227,6 @@ /* make library loadable */ #define LOADABLE_EXTENSION 1 + +/* enable gpkg */ +#define ENABLE_GEOPACKAGE 1 diff --git a/test/memory_database.test.coffee b/test/memory_database.test.coffee index cca8e13..ebf3f99 100644 --- a/test/memory_database.test.coffee +++ b/test/memory_database.test.coffee @@ -35,3 +35,10 @@ describe 'SpatiaLite', -> throw err if err row.result.should.equal 'POLYGON((0 1, 0 10, 10 10, 10 1, 5 1, 0 1))' done() + + it 'should support geopackage', (done) -> + query = "SELECT HasGeoPackage() AS result" + db.get query (err, row) -> + throw err if err + row.result.should.equal 1 + done()
  • ceDHW3)G*KLHbf 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 z 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⪻o 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,2:0 diff --git a/src/spatialite/test/sql_stmt_tests/asgml11.testcase b/src/spatialite/test/sql_stmt_tests/asgml11.testcase deleted file mode 100644 index 3dee931..0000000 --- a/src/spatialite/test/sql_stmt_tests/asgml11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -asgml - 2 arg -:memory: #use in-memory database -SELECT asgml(2, "hello"); -1 # rows (not including the header row) -1 # columns -asgml(2, "hello") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml2.testcase b/src/spatialite/test/sql_stmt_tests/asgml2.testcase deleted file mode 100644 index 7fd77de..0000000 --- a/src/spatialite/test/sql_stmt_tests/asgml2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -asgml - bad args (broken blob, 2 arg) -:memory: #use in-memory database -SELECT asgml(2, zeroblob(20)); -1 # rows (not including the header row) -1 # columns -asgml(2, zeroblob(20)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml3.testcase b/src/spatialite/test/sql_stmt_tests/asgml3.testcase deleted file mode 100644 index aae487c..0000000 --- a/src/spatialite/test/sql_stmt_tests/asgml3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -asgml - bad args (broken blob, 3 arg) -:memory: #use in-memory database -SELECT asgml(2, zeroblob(20), 5); -1 # rows (not including the header row) -1 # columns -asgml(2, zeroblob(20), 5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml4.testcase b/src/spatialite/test/sql_stmt_tests/asgml4.testcase deleted file mode 100644 index cffeaf9..0000000 --- a/src/spatialite/test/sql_stmt_tests/asgml4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -asgml - bad args (non-blob, 3 arg) -:memory: #use in-memory database -SELECT asgml(2, "hello", 5); -1 # rows (not including the header row) -1 # columns -asgml(2, "hello", 5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml5.testcase b/src/spatialite/test/sql_stmt_tests/asgml5.testcase deleted file mode 100644 index cffeaf9..0000000 --- a/src/spatialite/test/sql_stmt_tests/asgml5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -asgml - bad args (non-blob, 3 arg) -:memory: #use in-memory database -SELECT asgml(2, "hello", 5); -1 # rows (not including the header row) -1 # columns -asgml(2, "hello", 5) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml6.testcase b/src/spatialite/test/sql_stmt_tests/asgml6.testcase deleted file mode 100644 index af45329..0000000 --- a/src/spatialite/test/sql_stmt_tests/asgml6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -asgml - bad args (non-int, 2 arg) -:memory: #use in-memory database -SELECT asgml("hello", GeomFromText("Point(1 2)")); -1 # rows (not including the header row) -1 # columns -asgml("hello", GeomFromText("Point(1 2)")) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml7.testcase b/src/spatialite/test/sql_stmt_tests/asgml7.testcase deleted file mode 100644 index d433188..0000000 --- a/src/spatialite/test/sql_stmt_tests/asgml7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -asgml - bad args (non-int, 3 arg) -:memory: #use in-memory database -SELECT asgml("hello", GeomFromText("Point(1 2)"), 4); -1 # rows (not including the header row) -1 # columns -asgml("hello", GeomFromText("Point(1 2)"), 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml8.testcase b/src/spatialite/test/sql_stmt_tests/asgml8.testcase deleted file mode 100644 index 301dcaa..0000000 --- a/src/spatialite/test/sql_stmt_tests/asgml8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -asgml - bad args (non-int 3rd arg) -:memory: #use in-memory database -SELECT asgml(3, GeomFromText("Point(1 2)"), "four"); -1 # rows (not including the header row) -1 # columns -asgml(3, GeomFromText("Point(1 2)"), "four") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/asgml9.testcase b/src/spatialite/test/sql_stmt_tests/asgml9.testcase deleted file mode 100644 index c086797..0000000 --- a/src/spatialite/test/sql_stmt_tests/asgml9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -asgml - bad args (non-int 2nd arg) -:memory: #use in-memory database -SELECT asgml(GeomFromText("Point(1 2)"), "four"); -1 # rows (not including the header row) -1 # columns -asgml(GeomFromText("Point(1 2)"), "four") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/assvg1.testcase b/src/spatialite/test/sql_stmt_tests/assvg1.testcase deleted file mode 100644 index b8a178a..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -assvg - 2 arg bad precision (error) -:memory: #use in-memory database -SELECT assvg(GeomFromText("Point(1 2)", 4326), "hello") -1 # rows (not including the header row) -1 # columns -assvg(GeomFromText("Point(1 2)", 4326), "hello") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/assvg17.testcase b/src/spatialite/test/sql_stmt_tests/assvg17.testcase deleted file mode 100644 index 882ae38..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -assvg - 3 arg excessive precision -:memory: #use in-memory database -SELECT assvg(GeomFromText("Point(1.3759 2)", 4326), 0, 17) -1 # rows (not including the header row) -1 # columns -assvg(GeomFromText("Point(1.3759 2)", 4326), 0, 17) -cx="1.3759" cy="-2" diff --git a/src/spatialite/test/sql_stmt_tests/assvg18.testcase b/src/spatialite/test/sql_stmt_tests/assvg18.testcase deleted file mode 100644 index bb38c26..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg18.testcase +++ /dev/null @@ -1,9 +0,0 @@ -assvg - relative/absolute Linestring XY -:memory: #use in-memory database -SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("LINESTRING(1 2, 4 3, 5 6, 8 7)", 4326) AS geom) dummy; -1 # rows (not including the header row) -2 # columns -rel -abs -M 1 -2 l 3 -1 1 -3 3 -1 -M 1 -2 L 4 -3 5 -6 8 -7 diff --git a/src/spatialite/test/sql_stmt_tests/assvg19.testcase b/src/spatialite/test/sql_stmt_tests/assvg19.testcase deleted file mode 100644 index 3525a55..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg19.testcase +++ /dev/null @@ -1,9 +0,0 @@ -assvg - relative/absolute Linestring XYZ -:memory: #use in-memory database -SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("LINESTRINGZ(1 2 100, 4 3 101, 5 6 102, 8 7 103)", 4326) AS geom) dummy; -1 # rows (not including the header row) -2 # columns -rel -abs -M 1 -2 l 3 -1 1 -3 3 -1 -M 1 -2 L 4 -3 5 -6 8 -7 diff --git a/src/spatialite/test/sql_stmt_tests/assvg2.testcase b/src/spatialite/test/sql_stmt_tests/assvg2.testcase deleted file mode 100644 index 6eaa974..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -assvg - 2 arg with SRID -:memory: #use in-memory database -SELECT assvg(GeomFromText("Point(1 2)", 4326), 1) -1 # rows (not including the header row) -1 # columns -assvg(GeomFromText("Point(1 2)", 4326), 1) -x="1" y="-2" diff --git a/src/spatialite/test/sql_stmt_tests/assvg20.testcase b/src/spatialite/test/sql_stmt_tests/assvg20.testcase deleted file mode 100644 index dc8a91a..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg20.testcase +++ /dev/null @@ -1,9 +0,0 @@ -assvg - relative/absolute Linestring XYM -:memory: #use in-memory database -SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("LINESTRINGM(1 2 10, 4 3 11, 5 6 12, 8 7 13)", 4326) AS geom) dummy; -1 # rows (not including the header row) -2 # columns -rel -abs -M 1 -2 l 3 -1 1 -3 3 -1 -M 1 -2 L 4 -3 5 -6 8 -7 diff --git a/src/spatialite/test/sql_stmt_tests/assvg21.testcase b/src/spatialite/test/sql_stmt_tests/assvg21.testcase deleted file mode 100644 index 5d35eb0..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg21.testcase +++ /dev/null @@ -1,9 +0,0 @@ -assvg - relative/absolute Linestring XYZM -:memory: #use in-memory database -SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("LINESTRINGZM(1 2 100 10, 4 3 101 11, 5 6 102 12, 8 7 103 13)", 4326) AS geom) dummy; -1 # rows (not including the header row) -2 # columns -rel -abs -M 1 -2 l 3 -1 1 -3 3 -1 -M 1 -2 L 4 -3 5 -6 8 -7 diff --git a/src/spatialite/test/sql_stmt_tests/assvg22.testcase b/src/spatialite/test/sql_stmt_tests/assvg22.testcase deleted file mode 100644 index 4ab5714..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg22.testcase +++ /dev/null @@ -1,9 +0,0 @@ -assvg - relative/absolute Polygon -:memory: #use in-memory database -SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("POLYGON((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11))", 4326) AS geom) dummy; -1 # rows (not including the header row) -2 # columns -rel -abs -M 10 -10 l 5 0 0 -5 -5 0 z M 11 -11 l 1 0 0 -1 -1 0 z -M 10 -10 L 15 -10 15 -15 10 -15 z M 11 -11 L 12 -11 12 -12 11 -12 z diff --git a/src/spatialite/test/sql_stmt_tests/assvg23.testcase b/src/spatialite/test/sql_stmt_tests/assvg23.testcase deleted file mode 100644 index b07d7e2..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg23.testcase +++ /dev/null @@ -1,9 +0,0 @@ -assvg - relative/absolute MultiPoint -:memory: #use in-memory database -SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("MULTIPOINT(10 10, 15 10)", 4326) AS geom) dummy; -1 # rows (not including the header row) -2 # columns -rel -abs -x="10" y="-10",x="15" y="-10" -cx="10" cy="-10",cx="15" cy="-10" diff --git a/src/spatialite/test/sql_stmt_tests/assvg24.testcase b/src/spatialite/test/sql_stmt_tests/assvg24.testcase deleted file mode 100644 index 8688293..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg24.testcase +++ /dev/null @@ -1,9 +0,0 @@ -assvg - relative/absolute MultiLinestring -:memory: #use in-memory database -SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("MULTILINESTRING((10 10, 15 10), (10 15, 10 10))", 4326) AS geom) dummy; -1 # rows (not including the header row) -2 # columns -rel -abs -M 10 -10 l 5 0 M 10 -15 l 0 5 -M 10 -10 L 15 -10 M 10 -15 L 10 -10 diff --git a/src/spatialite/test/sql_stmt_tests/assvg25.testcase b/src/spatialite/test/sql_stmt_tests/assvg25.testcase deleted file mode 100644 index dab2fda..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg25.testcase +++ /dev/null @@ -1,9 +0,0 @@ -assvg - relative/absolute MultiPolygon -:memory: #use in-memory database -SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("MULTIPOLYGON(((10 10, 15 10, 15 15, 10 15, 10 10)), ((71 11, 75 11, 75 15, 71 15, 71 11), (72 12, 73 12, 73 13, 72 13, 71 12)))", 4326) AS geom) dummy; -1 # rows (not including the header row) -2 # columns -rel -abs -M 10 -10 l 5 0 0 -5 -5 0 z M 71 -11 l 4 0 0 -4 -4 0 z M 72 -12 l 1 0 0 -1 -1 0 z -M 10 -10 L 15 -10 15 -15 10 -15 z M 71 -11 L 75 -11 75 -15 71 -15 z M 72 -12 L 73 -12 73 -13 72 -13 z diff --git a/src/spatialite/test/sql_stmt_tests/assvg26.testcase b/src/spatialite/test/sql_stmt_tests/assvg26.testcase deleted file mode 100644 index e0194e7..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg26.testcase +++ /dev/null @@ -1,9 +0,0 @@ -assvg - relative/absolute GeometryCollection -:memory: #use in-memory database -SELECT assvg(geom, 1) AS rel, assvg(geom, 0) AS abs FROM (SELECT GeomFromText("GEOMETRYCOLLECTION(POINT(1 2), POINT(7 8), LINESTRING(3 4, 5 6), POLYGON((71 11, 75 11, 75 15, 71 15, 71 11), (72 12, 73 12, 73 13, 72 13, 71 12)))", 4326) AS geom) dummy; -1 # rows (not including the header row) -2 # columns -rel -abs -x="1" y="-2";x="7" y="-8";M 3 -4 l 2 -2 M 71 -11 l 4 0 0 -4 -4 0 z M 72 -12 l 1 0 0 -1 -1 0 z -cx="1" cy="-2";cx="7" cy="-8";M 3 -4 L 5 -6 M 71 -11 L 75 -11 75 -15 71 -15 z M 72 -12 L 73 -12 73 -13 72 -13 z diff --git a/src/spatialite/test/sql_stmt_tests/assvg3.testcase b/src/spatialite/test/sql_stmt_tests/assvg3.testcase deleted file mode 100644 index f124d84..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -assvg - 3 arg non-relative -:memory: #use in-memory database -SELECT assvg(GeomFromText("Point(1.3759 2)", 4326), 0, 2) -1 # rows (not including the header row) -1 # columns -assvg(GeomFromText("Point(1.3759 2)", 4326), 0, 2) -cx="1.38" cy="-2" diff --git a/src/spatialite/test/sql_stmt_tests/assvg4.testcase b/src/spatialite/test/sql_stmt_tests/assvg4.testcase deleted file mode 100644 index 8c703b3..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -assvg - 1 arg with SRID -:memory: #use in-memory database -SELECT assvg(GeomFromText("Point(1 2)", 4326)) -1 # rows (not including the header row) -1 # columns -assvg(GeomFromText("Point(1 2)", 4326)) -cx="1" cy="-2" diff --git a/src/spatialite/test/sql_stmt_tests/assvg5.testcase b/src/spatialite/test/sql_stmt_tests/assvg5.testcase deleted file mode 100644 index e5d26c3..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -assvg - 1 arg bad blob -:memory: #use in-memory database -SELECT assvg(zeroblob(49)) -1 # rows (not including the header row) -1 # columns -assvg(zeroblob(49)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/assvg6.testcase b/src/spatialite/test/sql_stmt_tests/assvg6.testcase deleted file mode 100644 index d38735c..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -assvg - 1 arg - integer -:memory: #use in-memory database -SELECT assvg(49) -1 # rows (not including the header row) -1 # columns -assvg(49) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/assvg7.testcase b/src/spatialite/test/sql_stmt_tests/assvg7.testcase deleted file mode 100644 index bc59828..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -assvg - 3 arg negative precision -:memory: #use in-memory database -SELECT assvg(GeomFromText("Point(1.3759 2)", 4326), 0, -1) -1 # rows (not including the header row) -1 # columns -assvg(GeomFromText("Point(1.3759 2)", 4326), 0, -1) -cx="1" cy="-2" diff --git a/src/spatialite/test/sql_stmt_tests/assvg8.testcase b/src/spatialite/test/sql_stmt_tests/assvg8.testcase deleted file mode 100644 index 891c1d6..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -assvg - 3 arg bad second arg -:memory: #use in-memory database -SELECT assvg(GeomFromText("Point(1.3759 2)", 4326), "hello", -1) -1 # rows (not including the header row) -1 # columns -assvg(GeomFromText("Point(1.3759 2)", 4326), "hello", -1) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/assvg9.testcase b/src/spatialite/test/sql_stmt_tests/assvg9.testcase deleted file mode 100644 index 3ea1792..0000000 --- a/src/spatialite/test/sql_stmt_tests/assvg9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -assvg - 3 arg bad third arg -:memory: #use in-memory database -SELECT assvg(GeomFromText("Point(1.3759 2)", 4326), 0, "hello") -1 # rows (not including the header row) -1 # columns -assvg(GeomFromText("Point(1.3759 2)", 4326), 0, "hello") -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/aswkt-text.testcase b/src/spatialite/test/sql_stmt_tests/aswkt-text.testcase deleted file mode 100644 index cb46865..0000000 --- a/src/spatialite/test/sql_stmt_tests/aswkt-text.testcase +++ /dev/null @@ -1,7 +0,0 @@ -aswkt-text -:memory: #use in-memory database -SELECT AsWkt("not a blob", 4); -1 # rows (not including the header row) -1 # columns -AsWkt("not a blob", 4) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT1.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT1.testcase deleted file mode 100644 index ac0cd8a..0000000 --- a/src/spatialite/test/sql_stmt_tests/badEWKT1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -bad EWKT: Point -:memory: #use in-memory database -SELECT GeomFromEWKT("SRID=4326;POINT(11.2 12.3"); -1 # rows (not including the header row) -1 # columns -GeomFromEWKT("SRID=4326;POINT(11.2 12.3") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT2.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT2.testcase deleted file mode 100644 index ba91da1..0000000 --- a/src/spatialite/test/sql_stmt_tests/badEWKT2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -bad EWKT: Linestring -:memory: #use in-memory database -SELECT GeomFromEWKT("SRID=4326;LINESTRING(11.2 12.3, 11.3 12.4, 11.4 12.5"); -1 # rows (not including the header row) -1 # columns -GeomFromEWKT("SRID=4326;LINESTRING(11.2 12.3, 11.3 12.4, 11.4 12.5") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT3.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT3.testcase deleted file mode 100644 index e10618c..0000000 --- a/src/spatialite/test/sql_stmt_tests/badEWKT3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -bad EWKT: Polygon -:memory: #use in-memory database -SELECT GeomFromEWKT("SRID=4326;POLYGON((11.2 12.3, 11.3 12.3, 11.3 12.4, 11.2 12.4, 11.2 12.3)"); -1 # rows (not including the header row) -1 # columns -GeomFromEWKT("SRID=4326;POLYGON((11.2 12.3, 11.3 12.3, 11.3 12.4, 11.2 12.4, 11.2 12.3)") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT4.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT4.testcase deleted file mode 100644 index 7ccad92..0000000 --- a/src/spatialite/test/sql_stmt_tests/badEWKT4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -bad EWKT: MultiPoint -:memory: #use in-memory database -SELECT GeomFromEWKT("SRID=4326;MULTIPOINT(11.2 12.3, 11.3 12.4"); -1 # rows (not including the header row) -1 # columns -GeomFromEWKT("SRID=4326;MULTIPOINT(11.2 12.3, 11.3 12.4") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT5.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT5.testcase deleted file mode 100644 index e93a058..0000000 --- a/src/spatialite/test/sql_stmt_tests/badEWKT5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -bad EWKT: MultiLinestring -:memory: #use in-memory database -SELECT GeomFromEWKT("SRID=4326;MULTILINESTRING((11.2 12.3, 11.3 12.4, 11.4 12.5), (11.5 12.6, 11.6 12.7)"); -1 # rows (not including the header row) -1 # columns -GeomFromEWKT("SRID=4326;MULTILINESTRING((11.2 12.3, 11.3 12.4, 11.4 12.5), (11.5 12.6, 11.6 12.7)") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT6.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT6.testcase deleted file mode 100644 index 986589d..0000000 --- a/src/spatialite/test/sql_stmt_tests/badEWKT6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -bad EWKT: MultiPolygon -:memory: #use in-memory database -SELECT GeomFromEWKT("SRID=4326;MULTIPOLYGON(((11.2 12.3, 11.3 12.3, 11.3 12.4, 11.2 12.4, 11.2 12.3)), ((10.2 11.3, 10.3 11.3, 10.3 11.4, 10.2 11.4, 10.2 11.3))"); -1 # rows (not including the header row) -1 # columns -GeomFromEWKT("SRID=4326;MULTIPOLYGON(((11.2 12.3, 11.3 12.3, 11.3 12.4, 11.2 12.4, 11.2 12.3)), ((10.2 11.3, 10.3 11.3, 10.3 11.4, 10.2 11.4, 10.2 11.3))") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT7.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT7.testcase deleted file mode 100644 index 70b1341..0000000 --- a/src/spatialite/test/sql_stmt_tests/badEWKT7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -bad EWKT: GeometryCollection -:memory: #use in-memory database -SELECT GeomFromEWKT("SRID=4326;GEOMETRYCOLLECYION(POINT(11.2 12.3), LINESTRING(11.3 12.4, 11.4 12.4)"); -1 # rows (not including the header row) -1 # columns -GeomFromEWKT("SRID=4326;GEOMETRYCOLLECYION(POINT(11.2 12.3), LINESTRING(11.3 12.4, 11.4 12.4)") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badEWKT8.testcase b/src/spatialite/test/sql_stmt_tests/badEWKT8.testcase deleted file mode 100644 index 80a1cb4..0000000 --- a/src/spatialite/test/sql_stmt_tests/badEWKT8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -bad EWKT: illegal GeometryCollection -:memory: #use in-memory database -SELECT GeomFromEWKT("SRID=4326;GEOMETRYCOLLECTION()"); -1 # rows (not including the header row) -1 # columns -GeomFromEWKT("SRID=4326;GEOMETRYCOLLECTION()") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/badGML1.testcase b/src/spatialite/test/sql_stmt_tests/badGML1.testcase deleted file mode 100644 index 5668703..0000000 --- a/src/spatialite/test/sql_stmt_tests/badGML1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -bad GML: Point -:memory: #use in-memory database -SELECT GeomFromGML('1.1,2.21.1,2.21.1,2.21.1,2.21.1,2.2 3.3,4.41.1,2.2 3.3,4.40,0 4,0 4,4 0,4 0,01,1 2,1 2,2 1,2 1,10,0 4,0 4,4 0,4 0,01,1 2,1 2,2 1,2 1,11.1,2.23.3,4.41.1,2.23.3,4.40,0 4,0 4,4 0,4 0,01,1 2,1 2,2 1,2 1,15,5 6,5 6,6 5,6 5,50,0 4,0 4,4 0,4 0,01,1 2,1 2,2 1,2 1,15,5 6,5 6,6 5,6 5,510,1011,11 12,120,0 4,0 4,4 0,4 0,01,1 2,1 2,2 1,2 1,110,1011,11 12,120,0 4,0 4,4 0,4 0,01,1 2,1 2,2 1,2 1,11.1,2.21.1,2.21.1,2.2 3.3,4.41.1,2.2 3.3,4.40,0 1,0 1,1 0,1 0,00.1,0.1 0.9,0.1 0.9,0.9 0.1,0.9 0.1,0.10,0 1,0 1,1 0,1 0,00.1,0.1 0.9,0.1 0.9,0.9 0.1,0.9 0.1,0.11.1,2.23.3,4.41.1,2.23.3,4.41.1,2.2 3.3,4.45.5,6.6 7.7,8.8000000000000011.1,2.2 3.3,4.45.5,6.6 7.7,8.8000000000000010,0 1,0 1,1 0,1 0,00.1,0.1 0.9,0.1 0.9,0.9 0.1,0.9 0.1,0.15,5 6,5 6,6 5,6 5,50,0 1,0 1,1 0,1 0,00.1,0.1 0.9,0.1 0.9,0.9 0.1,0.9 0.1,0.15,5 6,5 6,6 5,6 5,51.1,1.12.2,2.2 3.3,3.30,0 1,0 1,1 0,1 0,00.1,0.1 0.9,0.1 0.9,0.9 0.1,0.9 0.1,0.11.1,1.12.2,2.2 3.3,3.30,0 1,0 1,1 0,1 0,00.1,0.1 0.9,0.1 0.9,0.9 0.1,0.9 0.1,0.17h3NfWZpb zzosk?T>-m&``A*o1Zc~xRuVgj7BC7+S#P?#%wj*3HG&cv^ zZ@VcS=#HT`h(&9}KDF&(6AdNjapFsvaqqTeRC^D>+nc$gn;DrV!T*|NPhH&m(Di@P<}h#RY0%@xaTl{Mn&(|-%D|H|u}9?%|7T{3XR zG_5MB8co`=4YTF(4iek#a24xvpkHQ!XD3+U5Pb*i@Wp4qXW%w55Qf3<6A01${uI%h z10V-3wszK1-SJ-ssD7IY_iOPPxKRwWAHh)sz!}d*9UFq#bg>j+7qXKr5;3{F7!fkE zw!Kk`^nv2milXLonL%tRmRJ^J2|-FOFG%r(B*o%Ov2t1Htnw7rJ8MzeIyNeM5g}R@ z*pf;sMKZL`PzEeS#l&JfCMBh~m`pA*C0;I%F`6Ly4cOs}&w$Usf5JczA;|tkurvR2 z=o3KS*u@v00iS`J&%hKn0+yaa*x8MX);|~@&sSx2^6WyLF341,2')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1,2')):0 -SRID=4326;POINT(1 2) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml10.testcase b/src/spatialite/test/sql_stmt_tests/fromgml10.testcase deleted file mode 100644 index 0bd0bca..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - MultiPoint v3 -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1 23 45 6')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1 23 45 6')):0 -SRID=4326;MULTIPOINT(1 2,3 4,5 6) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml11.testcase b/src/spatialite/test/sql_stmt_tests/fromgml11.testcase deleted file mode 100644 index 7c18104..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - MultiLinestring v2 -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1,2 3,4 5,6 7,810,10 11.5,11')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1,2 3,4 5,6 7,810,10 11.5,11')):0 -SRID=4326;MULTILINESTRING((1 2,3 4,5 6,7 8),(10 10,11.5 11)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml12.testcase b/src/spatialite/test/sql_stmt_tests/fromgml12.testcase deleted file mode 100644 index 1813893..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - MultiLinestring v3 -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1 2 3 4 5 6 7 810 10 11.5 11')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1 2 3 4 5 6 7 810 10 11.5 11')):0 -SRID=4326;MULTILINESTRING((1 2,3 4,5 6,7 8),(10 10,11.5 11)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml13.testcase b/src/spatialite/test/sql_stmt_tests/fromgml13.testcase deleted file mode 100644 index 3ed2eaf..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - MultiPolygon v2 -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01,1 2,1 2,2 1,2 1,16,6 7,6 7,7 6,7 6,6')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01,1 2,1 2,2 1,2 1,16,6 7,6 7,7 6,7 6,6')):0 -SRID=4326;MULTIPOLYGON(((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1)),((6 6,7 6,7 7,6 7,6 6))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml14.testcase b/src/spatialite/test/sql_stmt_tests/fromgml14.testcase deleted file mode 100644 index 747c84a..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - MultiPolygon v3 -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('0 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 16 6 7 6 7 7 6 7 6 6')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('0 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 16 6 7 6 7 7 6 7 6 6')):0 -SRID=4326;MULTIPOLYGON(((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1)),((6 6,7 6,7 7,6 7,6 6))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml15.testcase b/src/spatialite/test/sql_stmt_tests/fromgml15.testcase deleted file mode 100644 index c4388b1..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - GeometryCollection v2 (no namescpaces) -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('8,89,9 10,100,0 5,0 5,5 0,5 0,01,1 2,1 2,2 1,2 1,1')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('8,89,9 10,100,0 5,0 5,5 0,5 0,01,1 2,1 2,2 1,2 1,1')):0 -SRID=4326;GEOMETRYCOLLECTION(POINT(8 8),LINESTRING(9 9,10 10),POLYGON((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml16.testcase b/src/spatialite/test/sql_stmt_tests/fromgml16.testcase deleted file mode 100644 index bb48b59..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - GeometryCollection v3 (no namespaces) -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('8 89 9 10 100 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 1')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('8 89 9 10 100 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 1')):0 -SRID=4326;GEOMETRYCOLLECTION(POINT(8 8),LINESTRING(9 9,10 10),POLYGON((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml17.testcase b/src/spatialite/test/sql_stmt_tests/fromgml17.testcase deleted file mode 100644 index e104c97..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - GeometryCollection v2 3D -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('8,8,10.59,9,10.5 10.1,10.1,10.60,0,10 5,0,11 5,5,12 0,5,13 0,0,101,1,5 2,1,5 2,2,5 1,2,5 1,1,5')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('8,8,10.59,9,10.5 10.1,10.1,10.60,0,10 5,0,11 5,5,12 0,5,13 0,0,101,1,5 2,1,5 2,2,5 1,2,5 1,1,5')):0 -SRID=4326;GEOMETRYCOLLECTION(POINT(8 8 10.5),LINESTRING(9 9 10.5,10.1 10.1 10.6),POLYGON((0 0 10,5 0 11,5 5 12,0 5 13,0 0 10),(1 1 5,2 1 5,2 2 5,1 2 5,1 1 5))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml18.testcase b/src/spatialite/test/sql_stmt_tests/fromgml18.testcase deleted file mode 100644 index ea2b743..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - GeometryCollection v3 3D -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('8 8 10.59 9 10.5 10.1 10.1 10.60 0 10 5 0 11 5 5 12 0 5 13 0 0 101 1 5 2 1 5 2 2 5 1 2 5 1 1 5')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('8 8 10.59 9 10.5 10.1 10.1 10.60 0 10 5 0 11 5 5 12 0 5 13 0 0 101 1 5 2 1 5 2 2 5 1 2 5 1 1 5')):0 -SRID=4326;GEOMETRYCOLLECTION(POINT(8 8 10.5),LINESTRING(9 9 10.5,10.1 10.1 10.6),POLYGON((0 0 10,5 0 11,5 5 12,0 5 13,0 0 10),(1 1 5,2 1 5,2 2 5,1 2 5,1 1 5))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml19.testcase b/src/spatialite/test/sql_stmt_tests/fromgml19.testcase deleted file mode 100644 index 2d274fd..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - MultiPoint v2 3D -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1,2,103,4,11')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1,2,103,4,11')):0 -SRID=4326;MULTIPOINT(1 2 10,3 4 11) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml2.testcase b/src/spatialite/test/sql_stmt_tests/fromgml2.testcase deleted file mode 100644 index 618e078..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - non-text -:memory: #use in-memory database -SELECT GeomFromGml(zeroblob(10)) -1 # rows (not including the header row) -1 # columns -GeomFromGml(zeroblob(10)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml20.testcase b/src/spatialite/test/sql_stmt_tests/fromgml20.testcase deleted file mode 100644 index c3d10ff..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - MultiPoint v3 3D -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1 2 103 4 11')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1 2 103 4 11')):0 -SRID=4326;MULTIPOINT(1 2 10,3 4 11) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml21.testcase b/src/spatialite/test/sql_stmt_tests/fromgml21.testcase deleted file mode 100644 index 541e880..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml21.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - Point v2 3D -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1,2,10')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1,2,10')):0 -SRID=4326;POINT(1 2 10) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml22.testcase b/src/spatialite/test/sql_stmt_tests/fromgml22.testcase deleted file mode 100644 index 1c40423..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml22.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - Point v3 3D -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1 2 10')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1 2 10')):0 -SRID=4326;POINT(1 2 10) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml23.testcase b/src/spatialite/test/sql_stmt_tests/fromgml23.testcase deleted file mode 100644 index aec804a..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml23.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - MultiLinestring v2 3D (no namespace) -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1,2,10 3,4,11 5,6,127,8,13 9,10,13')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1,2,10 3,4,11 5,6,127,8,13 9,10,13')):0 -SRID=4326;MULTILINESTRING((1 2 10,3 4 11,5 6 12),(7 8 13,9 10 13)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml24.testcase b/src/spatialite/test/sql_stmt_tests/fromgml24.testcase deleted file mode 100644 index 7dca47f..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml24.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - MultiLinestring v3 3D (no namespace) -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1 2 10 3 4 11 5 6 127 8 13 9 10 13')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1 2 10 3 4 11 5 6 127 8 13 9 10 13')):0 -SRID=4326;MULTILINESTRING((1 2 10,3 4 11,5 6 12),(7 8 13,9 10 13)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml25.testcase b/src/spatialite/test/sql_stmt_tests/fromgml25.testcase deleted file mode 100644 index 3c0bcb8..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml25.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - MultiPolygon v2 3D (no namespace) -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('0,0,10 5,0,11 5,5,12 0,5,13 0,0,101,1,5 2,1,5 2,2,5 1,2,5 1,1,52,2,10 3,2,11 3,3,12 2,3,13 2,2,10')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('0,0,10 5,0,11 5,5,12 0,5,13 0,0,101,1,5 2,1,5 2,2,5 1,2,5 1,1,52,2,10 3,2,11 3,3,12 2,3,13 2,2,10')):0 -SRID=4326;MULTIPOLYGON(((0 0 10,5 0 11,5 5 12,0 5 13,0 0 10),(1 1 5,2 1 5,2 2 5,1 2 5,1 1 5)),((2 2 10,3 2 11,3 3 12,2 3 13,2 2 10))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml26.testcase b/src/spatialite/test/sql_stmt_tests/fromgml26.testcase deleted file mode 100644 index 6b317f7..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml26.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - MultiPolygon v3 3D (no namespace) -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('0 0 10 5 0 11 5 5 12 0 5 13 0 0 101 1 5 2 1 5 2 2 5 1 2 5 1 1 52 2 10 3 2 11 3 3 12 2 3 13 2 2 10')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('0 0 10 5 0 11 5 5 12 0 5 13 0 0 101 1 5 2 1 5 2 2 5 1 2 5 1 1 52 2 10 3 2 11 3 3 12 2 3 13 2 2 10')):0 -SRID=4326;MULTIPOLYGON(((0 0 10,5 0 11,5 5 12,0 5 13,0 0 10),(1 1 5,2 1 5,2 2 5,1 2 5,1 1 5)),((2 2 10,3 2 11,3 3 12,2 3 13,2 2 10))) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml27.testcase b/src/spatialite/test/sql_stmt_tests/fromgml27.testcase deleted file mode 100644 index 804d30c..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml27.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - non-WGS84 Point -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1,2')) -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1,2')):0 -SRID=3003;POINT(1 2) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml28.testcase b/src/spatialite/test/sql_stmt_tests/fromgml28.testcase deleted file mode 100644 index 2bd60b5..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml28.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - MULTIPOINT, single point -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1,2')) -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1,2')):0 -SRID=-1;MULTIPOINT(1 2) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml29.testcase b/src/spatialite/test/sql_stmt_tests/fromgml29.testcase deleted file mode 100644 index e6b5faf..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml29.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - GeometryCollection, single point -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1,2')) -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1,2')):0 -SRID=-1;GEOMETRYCOLLECTION(POINT(1 2)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml3.testcase b/src/spatialite/test/sql_stmt_tests/fromgml3.testcase deleted file mode 100644 index abcfcbf..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - bad text -:memory: #use in-memory database -SELECT GeomFromGml('1,21,21,2,3.2')) -1 # rows (not including the header row) -1 # columns -AsText(GeomFromGml('1,2,3.2')):0 -MULTIPOINT Z(1 2 3.2) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml31.testcase b/src/spatialite/test/sql_stmt_tests/fromgml31.testcase deleted file mode 100644 index e7abeb0..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml31.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - GeometryCollection, single pointZ -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1,2,3.2')) -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1,2,3.2')):0 -SRID=-1;GEOMETRYCOLLECTION(POINT(1 2 3.2)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml32.testcase b/src/spatialite/test/sql_stmt_tests/fromgml32.testcase deleted file mode 100644 index 8fa4f97..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml32.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - GeometryCollection, single pointZ, no namespace -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1,2,3.2')) -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1,2,3.2')):0 -SRID=-1;GEOMETRYCOLLECTION(POINT(1 2 3.2)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml33.testcase b/src/spatialite/test/sql_stmt_tests/fromgml33.testcase deleted file mode 100644 index f6cf3b5..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml33.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - multipoint, single pointZ, SRID, no namespace -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1,2,3.2')) -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1,2,3.2')):0 -SRID=3213;MULTIPOINT(1 2 3.2) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml34.testcase b/src/spatialite/test/sql_stmt_tests/fromgml34.testcase deleted file mode 100644 index ade7b88..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml34.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - poslist linestring -:memory: #use in-memory database -SELECT AsText(GeomFromGml('45.67 88.56 55.56 89.44')) -1 # rows (not including the header row) -1 # columns -AsText(GeomFromGml('45.67 88.56 55.56 89.44')):0 -LINESTRING(45.67 88.56, 55.56 89.44) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml35.testcase b/src/spatialite/test/sql_stmt_tests/fromgml35.testcase deleted file mode 100644 index d9e7688..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml35.testcase +++ /dev/null @@ -1,8 +0,0 @@ -FromGML - poslist polygon -:memory: #use in-memory database -SELECT AsText(GeomFromGml('0 0 -100 0 -100 100 0 100 0 0')) -1 # rows (not including the header row) -1 # columns -AsText(GeomFromGml('0 0 -100 0 -100 100 0 100 0 0')):0 -POLYGON((0 0, -100 0, -100 100, 0 100, 0 0)) - diff --git a/src/spatialite/test/sql_stmt_tests/fromgml36.testcase b/src/spatialite/test/sql_stmt_tests/fromgml36.testcase deleted file mode 100644 index f654c8a..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml36.testcase +++ /dev/null @@ -1,8 +0,0 @@ -FromGML - poslist polygon, no namespace -:memory: #use in-memory database -SELECT AsText(GeomFromGml('0 0 -100 0 -100 100 0 100 0 0')) -1 # rows (not including the header row) -1 # columns -AsText(GeomFromGml('0 0 -100 0 -100 100 0 100 0 0')):0 -POLYGON((0 0, -100 0, -100 100, 0 100, 0 0)) - diff --git a/src/spatialite/test/sql_stmt_tests/fromgml37.testcase b/src/spatialite/test/sql_stmt_tests/fromgml37.testcase deleted file mode 100644 index 054c462..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml37.testcase +++ /dev/null @@ -1,8 +0,0 @@ -FromGML - poslist polygon, bad contents -:memory: #use in-memory database -SELECT AsText(GeomFromGml('foo')) -1 # rows (not including the header row) -1 # columns -AsText(GeomFromGml('foo')):0 -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/fromgml38.testcase b/src/spatialite/test/sql_stmt_tests/fromgml38.testcase deleted file mode 100644 index 09fe7bb..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml38.testcase +++ /dev/null @@ -1,8 +0,0 @@ -FromGML - polygon, missing poslist -:memory: #use in-memory database -SELECT AsText(GeomFromGml('')) -1 # rows (not including the header row) -1 # columns -AsText(GeomFromGml('')):0 -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/fromgml39.testcase b/src/spatialite/test/sql_stmt_tests/fromgml39.testcase deleted file mode 100644 index c2d180b..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml39.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - Polygon v2, inner ring poslist -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01 1 2 1 2 2 1 2 1 1')) -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01 1 2 1 2 2 1 2 1 1')):0 -SRID=4326;POLYGON((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/fromgml4.testcase b/src/spatialite/test/sql_stmt_tests/fromgml4.testcase deleted file mode 100644 index 88cfe32..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - Point, no namespace -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1,2')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1,2')):0 -SRID=4326;POINT(1 2) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml40.testcase b/src/spatialite/test/sql_stmt_tests/fromgml40.testcase deleted file mode 100644 index e7782f6..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml40.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - Polygon v2, poslist, broken -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,0foo')) -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,0foo')):0 -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/fromgml41.testcase b/src/spatialite/test/sql_stmt_tests/fromgml41.testcase deleted file mode 100644 index cfd82af..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml41.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - Polygon v2, inner ring poslist, bad closing -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01 1 2 1 2 2 1 2 1 1')) -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01 1 2 1 2 2 1 2 1 1')):0 -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/fromgml43.testcase b/src/spatialite/test/sql_stmt_tests/fromgml43.testcase deleted file mode 100644 index 3430f8a..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml43.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - multipoint, multiple SRID - bad second SRID, no namespace -:memory: #use in-memory database -SELECT AsText(GeomFromGml('1,2,3.22,4,4.2')) -1 # rows (not including the header row) -1 # columns -AsText(GeomFromGml('1,2,3.22,4,4.2')):0 -MULTIPOINT Z(1 2 3.2, 2 4 4.2) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml5.testcase b/src/spatialite/test/sql_stmt_tests/fromgml5.testcase deleted file mode 100644 index d7eb01a..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - Linestring v2 -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1,2 3,4')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1,2 3,4')):0 -SRID=4326;LINESTRING(1 2,3 4) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml6.testcase b/src/spatialite/test/sql_stmt_tests/fromgml6.testcase deleted file mode 100644 index 26b69c4..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - Linestring v3 -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1 2 3 4')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1 2 3 4')):0 -SRID=4326;LINESTRING(1 2,3 4) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml7.testcase b/src/spatialite/test/sql_stmt_tests/fromgml7.testcase deleted file mode 100644 index e398b6a..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - Polygon v2 -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01,1 2,1 2,2 1,2 1,1')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('0,0 5,0 5,5 0,5 0,01,1 2,1 2,2 1,2 1,1')):0 -SRID=4326;POLYGON((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml8.testcase b/src/spatialite/test/sql_stmt_tests/fromgml8.testcase deleted file mode 100644 index 5e0f544..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - Polygon v3 -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('0 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 1')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('0 0 5 0 5 5 0 5 0 01 1 2 1 2 2 1 2 1 1')):0 -SRID=4326;POLYGON((0 0,5 0,5 5,0 5,0 0),(1 1,2 1,2 2,1 2,1 1)) diff --git a/src/spatialite/test/sql_stmt_tests/fromgml9.testcase b/src/spatialite/test/sql_stmt_tests/fromgml9.testcase deleted file mode 100644 index 8d6e5a6..0000000 --- a/src/spatialite/test/sql_stmt_tests/fromgml9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -FromGML - MultiPoint v2 (no namespace) -:memory: #use in-memory database -SELECT AsEwkt(GeomFromGml('1,23,45,6')); -1 # rows (not including the header row) -1 # columns -AsEwkt(GeomFromGml('1,23,45,6')):0 -SRID=4326;MULTIPOINT(1 2,3 4,5 6) diff --git a/src/spatialite/test/sql_stmt_tests/ft_m.testcase b/src/spatialite/test/sql_stmt_tests/ft_m.testcase deleted file mode 100644 index 7dfc497..0000000 --- a/src/spatialite/test/sql_stmt_tests/ft_m.testcase +++ /dev/null @@ -1,7 +0,0 @@ -feet to metres -:memory: #use in-memory database -SELECT CvtFromFt(10); -1 # rows (not including the header row) -1 # columns -CvtFromFt(10); -3.048 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr1.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr1.testcase deleted file mode 100644 index 3f463ad..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - 001AB -:memory: #use in-memory database -SELECT AsText(GARSMbr("001AB")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("001AB")) -POLYGON((-180 -89.5, -179.5 -89.5, -179.5 -89, -180 -89, -180 -89.5)) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr10.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr10.testcase deleted file mode 100644 index 9f02054..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr10.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - 001AB2 -:memory: #use in-memory database -SELECT AsText(GARSMbr("001AB2")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("001AB2")) -POLYGON((-179.75 -89.25, -179.5 -89.25, -179.5 -89, -179.75 -89, -179.75 -89.25)) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr11.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr11.testcase deleted file mode 100644 index 93f25c2..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - bad coords -:memory: #use in-memory database -SELECT GARSMbr("AA123") -1 # rows (not including the header row) -1 # columns -GARSMbr("AA123") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr12.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr12.testcase deleted file mode 100644 index 5df2a15..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - bad coords -:memory: #use in-memory database -SELECT GARSMbr("AA123A") -1 # rows (not including the header row) -1 # columns -GARSMbr("AA123A") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr13.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr13.testcase deleted file mode 100644 index 31d0f74..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - short text -:memory: #use in-memory database -SELECT GARSMbr("erin") -1 # rows (not including the header row) -1 # columns -GARSMbr("erin") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr14.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr14.testcase deleted file mode 100644 index a34212e..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr14.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - bad latitude -:memory: #use in-memory database -SELECT AsText(GARSMbr("001--")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("001--")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr15.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr15.testcase deleted file mode 100644 index 77f2b1f..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr15.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - bad longitude -:memory: #use in-memory database -SELECT AsText(GARSMbr("-01AB")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("-01AB")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr16.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr16.testcase deleted file mode 100644 index 712b893..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr16.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - bad longitude -:memory: #use in-memory database -SELECT AsText(GARSMbr("001TZ")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("001TZ")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr17.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr17.testcase deleted file mode 100644 index f7bf723..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr17.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - bad longitude -:memory: #use in-memory database -SELECT AsText(GARSMbr("001TZ4")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("001TZ4")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr18.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr18.testcase deleted file mode 100644 index d710d71..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - out of bounds longitude -:memory: #use in-memory database -SELECT GARSMbr("721AA11") -1 # rows (not including the header row) -1 # columns -GARSMbr("721AA11") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr2.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr2.testcase deleted file mode 100644 index 3056b29..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - bad text -:memory: #use in-memory database -SELECT GARSMbr("buzzys country store") -1 # rows (not including the header row) -1 # columns -GARSMbr("buzzys country store") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr20.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr20.testcase deleted file mode 100644 index d5958e5..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - bad coords -:memory: #use in-memory database -SELECT GARSMbr("AA123A1") -1 # rows (not including the header row) -1 # columns -GARSMbr("AA123A1") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr21.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr21.testcase deleted file mode 100644 index b435099..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr21.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - out of bounds lat -:memory: #use in-memory database -SELECT GARSMbr("001RA11") -1 # rows (not including the header row) -1 # columns -GARSMbr("001RA11") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr22.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr22.testcase deleted file mode 100644 index 3fb3c0d..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr22.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - 001AB27 -:memory: #use in-memory database -SELECT AsText(GARSMbr("001AB27")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("001AB27")) -POLYGON((-179.75 -89.25, -179.666667 -89.25, -179.666667 -89.166667, -179.75 -89.166667, -179.75 -89.25)) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr23.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr23.testcase deleted file mode 100644 index 66fd763..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr23.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - bad longitude - 6 -:memory: #use in-memory database -SELECT AsText(GARSMbr("-01AB1")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("-01AB1")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr24.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr24.testcase deleted file mode 100644 index f9a9138..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr24.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - bad longitude - 7 -:memory: #use in-memory database -SELECT AsText(GARSMbr("-01AB14")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("-01AB14")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr25.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr25.testcase deleted file mode 100644 index 544e4b6..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr25.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - bad latitude - 6 -:memory: #use in-memory database -SELECT AsText(GARSMbr("001--1")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("001--1")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr26.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr26.testcase deleted file mode 100644 index ea42e5a..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr26.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - bad latitude - 7 -:memory: #use in-memory database -SELECT AsText(GARSMbr("001--14")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("001--14")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr27.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr27.testcase deleted file mode 100644 index 8004108..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr27.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - 361HN37 -:memory: #use in-memory database -SELECT AsText(GARSMbr("361HN37")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("361HN37")) -POLYGON((0 0, 0.083333 0, 0.083333 0.083333, 0 0.083333, 0 0)) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr28.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr28.testcase deleted file mode 100644 index 5d5c33d..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr28.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - 361HN38 -:memory: #use in-memory database -SELECT AsText(GARSMbr("361HN38")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("361HN38")) -POLYGON((0.083333 0, 0.166667 0, 0.166667 0.083333, 0.083333 0.083333, 0.083333 0)) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr29.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr29.testcase deleted file mode 100644 index e0cbfee..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr29.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - 361HN49 -:memory: #use in-memory database -SELECT AsText(GARSMbr("361HN49")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("361HN49")) -POLYGON((0.416667 0, 0.5 0, 0.5 0.083333, 0.416667 0.083333, 0.416667 0)) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr3.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr3.testcase deleted file mode 100644 index 10e62c3..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - non text -:memory: #use in-memory database -SELECT GARSMbr(3.41) -1 # rows (not including the header row) -1 # columns -GARSMbr(3.41) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr30.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr30.testcase deleted file mode 100644 index f0e6bd0..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr30.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - bad segment number 0 -:memory: #use in-memory database -SELECT GARSMbr("001AA01") -1 # rows (not including the header row) -1 # columns -GARSMbr("001AA01") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr31.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr31.testcase deleted file mode 100644 index a88a9ea..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr31.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - bad segment number 5 -:memory: #use in-memory database -SELECT GARSMbr("001AA51") -1 # rows (not including the header row) -1 # columns -GARSMbr("001AA51") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr32.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr32.testcase deleted file mode 100644 index 6bf861b..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr32.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - bad keypad number -:memory: #use in-memory database -SELECT GARSMbr("001AA20") -1 # rows (not including the header row) -1 # columns -GARSMbr("001AA20") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr33.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr33.testcase deleted file mode 100644 index 246e5e7..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr33.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - 361HN32 -:memory: #use in-memory database -SELECT AsText(GARSMbr("361HN32")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("361HN32")) -POLYGON((0.083333 0.166667, 0.166667 0.166667, 0.166667 0.25, 0.083333 0.25, 0.083333 0.166667)) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr34.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr34.testcase deleted file mode 100644 index b5bd465..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr34.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - 361HN33 -:memory: #use in-memory database -SELECT AsText(GARSMbr("361HN33")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("361HN33")) -POLYGON((0.166667 0.166667, 0.25 0.166667, 0.25 0.25, 0.166667 0.25, 0.166667 0.166667)) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr35.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr35.testcase deleted file mode 100644 index d498764..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr35.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - 361HN36 -:memory: #use in-memory database -SELECT AsText(GARSMbr("361HN36")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("361HN36")) -POLYGON((0.166667 0.083333, 0.25 0.083333, 0.25 0.166667, 0.166667 0.166667, 0.166667 0.083333)) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr36.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr36.testcase deleted file mode 100644 index 10d87a6..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr36.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - 361HN35 -:memory: #use in-memory database -SELECT AsText(GARSMbr("361HN35")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("361HN35")) -POLYGON((0.083333 0.083333, 0.166667 0.083333, 0.166667 0.166667, 0.083333 0.166667, 0.083333 0.083333)) - diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr4.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr4.testcase deleted file mode 100644 index 91a95c5..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - out of bounds lat -:memory: #use in-memory database -SELECT GARSMbr("001RA") -1 # rows (not including the header row) -1 # columns -GARSMbr("001RA") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr5.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr5.testcase deleted file mode 100644 index 13ef62b..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - out of bounds longitude -:memory: #use in-memory database -SELECT GARSMbr("721AA") -1 # rows (not including the header row) -1 # columns -GARSMbr("721AA") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr6.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr6.testcase deleted file mode 100644 index 37b0d4e..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - out of bounds longitude -:memory: #use in-memory database -SELECT GARSMbr("721AA1") -1 # rows (not including the header row) -1 # columns -GARSMbr("721AA1") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr7.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr7.testcase deleted file mode 100644 index b0411d7..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - bad segment number 0 -:memory: #use in-memory database -SELECT GARSMbr("001AA0") -1 # rows (not including the header row) -1 # columns -GARSMbr("001AA0") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr8.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr8.testcase deleted file mode 100644 index 40f119c..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -garsmbr - bad segment number 5 -:memory: #use in-memory database -SELECT GARSMbr("001AA5") -1 # rows (not including the header row) -1 # columns -GARSMbr("001AA5") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/garsmbr9.testcase b/src/spatialite/test/sql_stmt_tests/garsmbr9.testcase deleted file mode 100644 index 2233c3b..0000000 --- a/src/spatialite/test/sql_stmt_tests/garsmbr9.testcase +++ /dev/null @@ -1,8 +0,0 @@ -garsmbr - 001AB3 -:memory: #use in-memory database -SELECT AsText(GARSMbr("001AB3")) -1 # rows (not including the header row) -1 # columns -AsText(GARSMbr("001AB3")) -POLYGON((-180 -89.5, -179.75 -89.5, -179.75 -89.25, -180 -89.25, -180 -89.5)) - diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len1.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len1.testcase deleted file mode 100644 index a678fc4..0000000 --- a/src/spatialite/test/sql_stmt_tests/geodesic-len1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geodesic length polygon -:memory: -SELECT GeodesicLength(GeomFromText("POLYGON((0 0, 1 0, 0 0, 0 0))", 4326)); -1 # rows -1 # column -GeodesicLength(GeomFromText("POLYGON((0 0, 1 0, 0 0, 0 0))", 4326)) -222638.98:9 diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len2.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len2.testcase deleted file mode 100644 index a2fd4c0..0000000 --- a/src/spatialite/test/sql_stmt_tests/geodesic-len2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geodesic length linestring -:memory: -SELECT GeodesicLength(GeomFromText("LINESTRING(0 0, 1 0, 0 0)", 4326)); -1 # rows -1 # column -GeodesicLength(GeomFromText("LINESTRING(0 0, 1 0, 0 0)", 4326)) -222638.98:9 diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len3.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len3.testcase deleted file mode 100644 index d372915..0000000 --- a/src/spatialite/test/sql_stmt_tests/geodesic-len3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geodesic length linestringZ -:memory: -SELECT GeodesicLength(GeomFromText("LINESTRINGZ(0 0 4, 1 0 2, 0 0 1)", 4326)); -1 # rows -1 # column -GeodesicLength(GeomFromText("LINESTRINGZ(0 0 4, 1 0 2, 0 0 1)", 4326)) -222638.98:9 diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len4.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len4.testcase deleted file mode 100644 index 3eeb8c7..0000000 --- a/src/spatialite/test/sql_stmt_tests/geodesic-len4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geodesic length linestringM -:memory: -SELECT GeodesicLength(GeomFromText("LINESTRINGM(0 0 4, 1 0 2, 0 0 1)", 4326)); -1 # rows -1 # column -GeodesicLength(GeomFromText("LINESTRINGM(0 0 4, 1 0 2, 0 0 1)", 4326)) -222638.98:9 diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len5.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len5.testcase deleted file mode 100644 index 098fb2b..0000000 --- a/src/spatialite/test/sql_stmt_tests/geodesic-len5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geodesic length linestring ZM -:memory: -SELECT GeodesicLength(GeomFromText("LINESTRINGZM(0 0 4 1, 1 0 2 6, 0 0 1 34)", 4326)); -1 # rows -1 # column -GeodesicLength(GeomFromText("LINESTRINGZM(0 0 4 1, 1 0 2 6, 0 0 1 34)", 4326)) -222638.98:9 diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len6.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len6.testcase deleted file mode 100644 index 16bf08a..0000000 --- a/src/spatialite/test/sql_stmt_tests/geodesic-len6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geodesic length (wrong) TEXT arg -:memory: -SELECT GeodesicLength('alpha'); -1 # rows -1 # column -GeodesicLength('alpha') -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len7.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len7.testcase deleted file mode 100644 index db02040..0000000 --- a/src/spatialite/test/sql_stmt_tests/geodesic-len7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geodesic length (wrong) zeroblob arg -:memory: -SELECT GeodesicLength(zeroblob(23)); -1 # rows -1 # column -GeodesicLength(zeroblob(23)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/geodesic-len8.testcase b/src/spatialite/test/sql_stmt_tests/geodesic-len8.testcase deleted file mode 100644 index ae9ea46..0000000 --- a/src/spatialite/test/sql_stmt_tests/geodesic-len8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geodesic length polygon with hole -:memory: -SELECT GeodesicLength(GeomFromText("POLYGON((11.5 43.5, 11.8 43.5, 11.8 43.8, 11.5 43.8, 11.5 43.5), (11.6 43.6, 11.7 43.6, 11.7 43.7, 11.6 32.7, 11.6 43.6))", 4326)); -1 # rows -1 # column -GeodesicLength(GeomFromText("POLYGON((11.5 43.5, 11.8 43.5, 11.8 43.8, 11.5 43.8, 11.5 43.5), (11.6 43.6, 11.7 43.6, 11.7 43.7, 11.6 32.7, 11.6 43.6))", 4326)) -2565198.35:10 diff --git a/src/spatialite/test/sql_stmt_tests/geojson1.testcase b/src/spatialite/test/sql_stmt_tests/geojson1.testcase deleted file mode 100644 index 4f150b2..0000000 --- a/src/spatialite/test/sql_stmt_tests/geojson1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GeoJSON Point: excessive precision -:memory: #use in-memory database -SELECT AsGeoJSON(GeomFromText("POINT(1 2)", 4326), 44, 2); -1 # rows (not including the header row) -1 # columns -AsGeoJSON(GeomFromText("POINT(1 2)", 4326), 44, 2) -{"type":"Point","crs":{"type":"name","properties":{"name":"EPSG:4326"}},"coordinates":[1,2]}:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/geojson2.testcase b/src/spatialite/test/sql_stmt_tests/geojson2.testcase deleted file mode 100644 index 4e2b593..0000000 --- a/src/spatialite/test/sql_stmt_tests/geojson2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GeoJSON Polygon -:memory: #use in-memory database -SELECT AsGeoJSON(GeomFromText("POLYGON((5 5, 6 5, 6 6, 5 6, 5 5))", 4326), 2, 5); -1 # rows (not including the header row) -1 # columns -AsGeoJSON(GeomFromText("POLYGON((5 5, 6 5, 6 6, 5 6, 5 5))", 4326), 2, 5) -{"type":"Polygon","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG:4326"}},"bbox":[5,5,6,6],"coordinates":[[[5,5],[6,5],[6,6],[5,6],[5,5]]]}:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/geojson3.testcase b/src/spatialite/test/sql_stmt_tests/geojson3.testcase deleted file mode 100644 index 79bc9b7..0000000 --- a/src/spatialite/test/sql_stmt_tests/geojson3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GeoJSON MultiPoint -:memory: #use in-memory database -SELECT AsGeoJSON(GeomFromText("MULTIPOINT(5 5, 6 6)", 4326), 2, 5); -1 # rows (not including the header row) -1 # columns -AsGeoJSON(GeomFromText("MULTIPOINT(5 5, 6 6)", 4326), 2, 5) -{"type":"MultiPoint","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG:4326"}},"bbox":[5,5,6,6],"coordinates":[[5,5],[6,6]]}:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/geojson4.testcase b/src/spatialite/test/sql_stmt_tests/geojson4.testcase deleted file mode 100644 index 93693cd..0000000 --- a/src/spatialite/test/sql_stmt_tests/geojson4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GeoJSON MultiPolygon -:memory: #use in-memory database -SELECT AsGeoJSON(GeomFromText("MULTIPOLYGON(((5 5, 6 5, 6 6, 5 6, 5 5)), ((3 3, 4 3, 4 4, 3 4, 4 4)))", 4326), 2, 5); -1 # rows (not including the header row) -1 # columns -AsGeoJSON(GeomFromText("MULTIPOLYGON(((5 5, 6 5, 6 6, 5 6, 5 5)), ((3 3, 4 3, 4 4, 3 4, 4 4)))", 4326), 2, 5) -{"type":"MultiPolygon","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG:4326"}},"bbox":[3,3,6,6],"coordinates":[[[[5,5],[6,5],[6,6],[5,6],[5,5]]],[[[3,3],[4,3],[4,4],[3,4],[4,4]]]]}:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/geojson5.testcase b/src/spatialite/test/sql_stmt_tests/geojson5.testcase deleted file mode 100644 index 16c13f3..0000000 --- a/src/spatialite/test/sql_stmt_tests/geojson5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GeoJSON GeometryCollection (Polygon+Point) -:memory: #use in-memory database -SELECT AsGeoJSON(GeomFromText("GEOMETRYCOLLECTION(POLYGON((5 5, 6 5, 6 6, 5 6, 5 5)), POINT(7 8))", 4326), 2, 5); -1 # rows (not including the header row) -1 # columns -AsGeoJSON(GeomFromText("GEOMETRYCOLLECTION(POLYGON((5 5, 6 5, 6 6, 5 6, 5 5)), POINT(7 8))", 4326), 2, 5) -{"type":"GeometryCollection","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG:4326"}},"bbox":[5,5,7,8],"geometries":[{"type":"Point","coordinates":[7,8]},{"type":"Polygon","coordinates":[[[5,5],[6,5],[6,6],[5,6],[5,5]]]}]}:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/geojson6.testcase b/src/spatialite/test/sql_stmt_tests/geojson6.testcase deleted file mode 100644 index 8980344..0000000 --- a/src/spatialite/test/sql_stmt_tests/geojson6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GeoJSON GeometryCollection (Linestring + Linestring) -:memory: #use in-memory database -SELECT AsGeoJSON(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(5 5, 6 6), LINESTRING(7 8, 8 7))", 4326), 2, 5); -1 # rows (not including the header row) -1 # columns -AsGeoJSON(GeomFromText("GEOMETRYCOLLECTION(LINESTRING(5 5, 6 6), LINESTRING(7 8, 8 7))", 4326), 2, 5) -{"type":"GeometryCollection","crs":{"type":"name","properties":{"name":"urn:ogc:def:crs:EPSG:4326"}},"bbox":[5,5,8,8],"geometries":[{"type":"LineString","coordinates":[[5,5],[6,6]]},{"type":"LineString","coordinates":[[7,8],[8,7]]}]}:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/geomcollfromtext1.testcase b/src/spatialite/test/sql_stmt_tests/geomcollfromtext1.testcase deleted file mode 100644 index 6a9f61b..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomcollfromtext1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geometrycollectionfromtext1 -:memory: #use in-memory database -SELECT AsWkt(GeometryCollectionFromText("GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))", 4326)) -1 # rows (not including the header row) -1 # columns -AsWkt(GeometryCollectionFromText("GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))", 4326)) -GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomcollfromtext2.testcase b/src/spatialite/test/sql_stmt_tests/geomcollfromtext2.testcase deleted file mode 100644 index c4a9977..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomcollfromtext2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geometrycollectionfromtext2 -:memory: #use in-memory database -SELECT AsWkt(GeometryCollectionFromText("GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))")) -1 # rows (not including the header row) -1 # columns -AsWkt(GeometryCollectionFromText("GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))")) -GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints1.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints1.testcase deleted file mode 100644 index 861ad41..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - 3 arg, null -:memory: #use in-memory database -SELECT GeometryConstraints(null, "POINT", 4326) -1 # rows (not including the header row) -1 # columns -GeometryConstraints(null, "POINT", 4326) -1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints10.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints10.testcase deleted file mode 100644 index fa0da3a..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints10.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - 4 arg, zeroblob 4 -:memory: #use in-memory database -SELECT GeometryConstraints(zeroblob(4), "POINT", 4326, "XYM") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(zeroblob(4), "POINT", 4326, "XYM") --1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints11.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints11.testcase deleted file mode 100644 index 7178220..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints11.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - 4 arg, zeroblob 20 -:memory: #use in-memory database -SELECT GeometryConstraints(zeroblob(20), "POINT", 4326, "XYM") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(zeroblob(20), "POINT", 4326, "XYM") --1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints12.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints12.testcase deleted file mode 100644 index d18f466..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints12.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - 4 arg, zeroblob 50 -:memory: #use in-memory database -SELECT GeometryConstraints(zeroblob(50), "POINT", 4326, "XYM") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(zeroblob(50), "POINT", 4326, "XYM") --1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints13.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints13.testcase deleted file mode 100644 index af24b9b..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints13.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - 3 arg, int arg 2 -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("POINT(1 2)", 4326), 40, 4326) -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("POINT(1 2)", 4326), 40, 4326) --1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints14.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints14.testcase deleted file mode 100644 index 193a6dc..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints14.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - 4 arg, text arg 3 -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("POINT(1 2)", 4326), "POINT", "hello", 4326) -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("POINT(1 2)", 4326), "POINT", "hello", 4326) --1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints15.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints15.testcase deleted file mode 100644 index f95ac07..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints15.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - MULTILINESTRING -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("MULTILINESTRING((1 2, 4 3),(0 4, 1 9))", 4326), "MULTILINESTRING", 4326) -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("MULTILINESTRING((1 2, 4 3),(0 4, 1 9))", 4326), "MULTILINESTRING", 4326) -1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints16.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints16.testcase deleted file mode 100644 index 2f24ee4..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints16.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - MULTILINESTRINGZ -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("MULTILINESTRINGZ((1 2 3, 4 3 1),(0 4 4, 1 9 7))", 4326), "MULTILINESTRING", 4326, "XYZ") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("MULTILINESTRINGZ((1 2 3, 4 3 1),(0 4 4, 1 9 7))", 4326), "MULTILINESTRING", 4326, "XYZ") -1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints17.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints17.testcase deleted file mode 100644 index d96dee1..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints17.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - MULTILINESTRINGZ -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("MULTILINESTRINGZ((1 2 3, 4 3 1),(0 4 4, 1 9 7))", 4326), "MULTILINESTRING", 4326, "XYM") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("MULTILINESTRINGZ((1 2 3, 4 3 1),(0 4 4, 1 9 7))", 4326), "MULTILINESTRING", 4326, "XYM") -0 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints18.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints18.testcase deleted file mode 100644 index 508ac48..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints18.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - MULTILINESTRINGM -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("MULTILINESTRINGM((1 2 3, 4 3 1),(0 4 4, 1 9 7))", 4326), "MULTILINESTRING", 4326, "XYM") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("MULTILINESTRINGM((1 2 3, 4 3 1),(0 4 4, 1 9 7))", 4326), "MULTILINESTRING", 4326, "XYM") -1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints19.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints19.testcase deleted file mode 100644 index 3b422af..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints19.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - MULTILINESTRINGZM -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("MULTILINESTRINGZM((1 2 3 1, 4 3 1 2),(0 4 4 3, 1 9 7 4))", 4326), "MULTILINESTRING", 4326, "XYZM") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("MULTILINESTRINGZM((1 2 3 1, 4 3 1 2),(0 4 4 3, 1 9 7 4))", 4326), "MULTILINESTRING", 4326, "XYZM") -1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints2.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints2.testcase deleted file mode 100644 index 46906fb..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - 3 arg, blob -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326) -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326) -1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints20.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints20.testcase deleted file mode 100644 index a3b428b..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints20.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - MULTIPOLYGONZM -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("MULTIPOLYGONZM(((0 0 0 0, 1 0 0 0, 1 1 0 0, 0 0 0 0)),((0 0 0 0, -1 0 0 0, -1 -1 0 0, 0 0 0 0)))", 4326), "MULTILINESTRING", 4326, "XYZM") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("MULTIPOLYGONZM(((0 0 0 0, 1 0 0 0, 1 1 0 0, 0 0 0 0)),((0 0 0 0, -1 0 0 0, -1 -1 0 0, 0 0 0 0)))", 4326), "MULTILINESTRING", 4326, "XYZM") -0 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints21.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints21.testcase deleted file mode 100644 index ddc0876..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints21.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - MULTIPOLYGONZM -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("MULTIPOLYGONZM(((0 0 0 0, 1 0 0 0, 1 1 0 0, 0 0 0 0)),((0 0 0 0, -1 0 0 0, -1 -1 0 0, 0 0 0 0)))", 4326), "MULTIPOLYGON", 4326, "XYZM") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("MULTIPOLYGONZM(((0 0 0 0, 1 0 0 0, 1 1 0 0, 0 0 0 0)),((0 0 0 0, -1 0 0 0, -1 -1 0 0, 0 0 0 0)))", 4326), "MULTIPOLYGON", 4326, "XYZM") -1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints22.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints22.testcase deleted file mode 100644 index 9b89f90..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints22.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - MULTIPOLYGONZ -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("MULTIPOLYGONZ(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0)))", 4326), "MULTIPOLYGON", 4326, "XYZ") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("MULTIPOLYGONZ(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0)))", 4326), "MULTIPOLYGON", 4326, "XYZ") -1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints23.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints23.testcase deleted file mode 100644 index c796524..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints23.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - MULTIPOLYGONM -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("MULTIPOLYGONM(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0)))", 4326), "MULTIPOLYGON", 4326, "XYM") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("MULTIPOLYGONM(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0)))", 4326), "MULTIPOLYGON", 4326, "XYM") -1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints24.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints24.testcase deleted file mode 100644 index ca2be3a..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints24.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - GEOMETRYCOLLECTION -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("GEOMETRYCOLLECTION(MULTIPOLYGONM(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XYM") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("GEOMETRYCOLLECTION(MULTIPOLYGONM(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XYM") -1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints25.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints25.testcase deleted file mode 100644 index 3c14df7..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints25.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - GEOMETRYCOLLECTION -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("GEOMETRYCOLLECTIONZ(MULTIPOLYGONZ(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XYZ") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("GEOMETRYCOLLECTIONZ(MULTIPOLYGONZ(((0 0 0, 1 0 0, 1 1 0, 0 0 0)),((0 0 0, -1 0 0, -1 -1 0, 0 0 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XYZ") -1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints26.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints26.testcase deleted file mode 100644 index b3f262d..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints26.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - GEOMETRYCOLLECTION -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0, 1 0, 1 1, 0 0)),((0 0, -1 0, -1 -1, 0 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XY") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0, 1 0, 1 1, 0 0)),((0 0, -1 0, -1 -1, 0 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XY") -1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints27.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints27.testcase deleted file mode 100644 index 5b949b9..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints27.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - GEOMETRYCOLLECTION -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("GEOMETRYCOLLECTIONZM(MULTIPOLYGONZM(((0 0 4 0, 1 0 4 0, 1 1 4 0, 0 0 4 0)),((0 0 4 0, -1 0 4 0, -1 -1 4 0, 0 0 4 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XYZM") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("GEOMETRYCOLLECTIONZM(MULTIPOLYGONZM(((0 0 4 0, 1 0 4 0, 1 1 4 0, 0 0 4 0)),((0 0 4 0, -1 0 4 0, -1 -1 4 0, 0 0 4 0))))", 4326), "GEOMETRYCOLLECTION", 4326, "XYZM") -1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints28.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints28.testcase deleted file mode 100644 index fdbe504..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints28.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - GEOMETRY -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("GEOMETRYCOLLECTIONZM(MULTIPOLYGONZM(((0 0 4 0, 1 0 4 0, 1 1 4 0, 0 0 4 0)),((0 0 4 0, -1 0 4 0, -1 -1 4 0, 0 0 4 0))))", 4326), "GEOMETRY", 4326, "XYZM") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("GEOMETRYCOLLECTIONZM(MULTIPOLYGONZM(((0 0 4 0, 1 0 4 0, 1 1 4 0, 0 0 4 0)),((0 0 4 0, -1 0 4 0, -1 -1 4 0, 0 0 4 0))))", 4326), "GEOMETRY", 4326, "XYZM") -1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints3.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints3.testcase deleted file mode 100644 index ffe0d38..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - 3 arg, POINT / LINESTRING -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("Point(1 2)", 4326), "LINESTRING", 4326) -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("Point(1 2)", 4326), "LINESTRING", 4326) -0 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints4.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints4.testcase deleted file mode 100644 index 0a090b6..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - 3 arg, POINT / MULTIPOINT -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("Point(1 2)", 4326), "MULTIPOINT", 4326) -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("Point(1 2)", 4326), "MULTIPOINT", 4326) -0 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints5.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints5.testcase deleted file mode 100644 index 3b4492b..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - 3 arg, POINT bad SRID -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("Point(1 2)", 4386), "POINT", 4326) -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("Point(1 2)", 4386), "POINT", 4326) -0 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints6.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints6.testcase deleted file mode 100644 index 0bd8047..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - 4 arg, POINT -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326, "XY") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326, "XY") -1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints7.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints7.testcase deleted file mode 100644 index ec00e9b..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - 4 arg, POINT vs XYZ -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326, "XYZ") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326, "XYZ") -0 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints8.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints8.testcase deleted file mode 100644 index d05a4f7..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints8.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - 3 arg, text -:memory: #use in-memory database -SELECT GeometryConstraints("hello", "POINT", 4326) -1 # rows (not including the header row) -1 # columns -GeometryConstraints("hello", "POINT", 4326) --1 - diff --git a/src/spatialite/test/sql_stmt_tests/geomconstraints9.testcase b/src/spatialite/test/sql_stmt_tests/geomconstraints9.testcase deleted file mode 100644 index 33ddd6c..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomconstraints9.testcase +++ /dev/null @@ -1,8 +0,0 @@ -geometry constraints - 4 arg, POINT vs XYM -:memory: #use in-memory database -SELECT GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326, "XYM") -1 # rows (not including the header row) -1 # columns -GeometryConstraints(GeomFromText("Point(1 2)", 4326), "POINT", 4326, "XYM") -0 - diff --git a/src/spatialite/test/sql_stmt_tests/geometryn.testcase b/src/spatialite/test/sql_stmt_tests/geometryn.testcase deleted file mode 100644 index fc9b6f7..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multipoint -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 1)); -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 1)) -POINT(1 2) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn1.testcase b/src/spatialite/test/sql_stmt_tests/geometryn1.testcase deleted file mode 100644 index aca6bf1..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multipoint - out of range 0 -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 0)); -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 0)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn10.testcase b/src/spatialite/test/sql_stmt_tests/geometryn10.testcase deleted file mode 100644 index 1e710c5..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - pointZM -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("POINTZM(1 2 4 1.6)"), 1)); -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("POINTZM(1 2 4 1.6)"), 1)) -POINT ZM(1 2 4 1.6) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn11.testcase b/src/spatialite/test/sql_stmt_tests/geometryn11.testcase deleted file mode 100644 index 2087ba8..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multilinestringzm -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTILINESTRINGZM((1 2 4 1.6, 4 2.3 9 8.7, 1 2 3 1),(0 1 2 3, 8 1 1 4))"), 2)); -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTILINESTRINGZM((1 2 4 1.6, 4 2.3 9 8.7, 1 2 3 1),(0 1 2 3, 8 1 1 4))"), 2)) -LINESTRING ZM(0 1 2 3, 8 1 1 4) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn12.testcase b/src/spatialite/test/sql_stmt_tests/geometryn12.testcase deleted file mode 100644 index 1e65f80..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multilinestringz -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTILINESTRINGZ((1 2 1.6, 4 2.3 8.7, 1 2 1),(0 1 2, 8 1 1))"), 2)) -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTILINESTRINGZ((1 2 1.6, 4 2.3 8.7, 1 2 1),(0 1 2, 8 1 1))"), 2)) -LINESTRING Z(0 1 2, 8 1 1) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn13.testcase b/src/spatialite/test/sql_stmt_tests/geometryn13.testcase deleted file mode 100644 index 3f914ca..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multilinestringm -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTILINESTRINGM((1 2 1.6, 4 2.3 8.7, 1 2 1),(0 1 2, 8 1 1))"), 2)) -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTILINESTRINGM((1 2 1.6, 4 2.3 8.7, 1 2 1),(0 1 2, 8 1 1))"), 2)) -LINESTRING M(0 1 2, 8 1 1) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn14.testcase b/src/spatialite/test/sql_stmt_tests/geometryn14.testcase deleted file mode 100644 index 5949929..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multilinestring -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTILINESTRING((1 1.6, 2.3 8.7, 2 1),(1 2, 1 1))"), 2)) -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTILINESTRING((1 1.6, 2.3 8.7, 2 1),(1 2, 1 1))"), 2)) -LINESTRING(1 2, 1 1) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn15.testcase b/src/spatialite/test/sql_stmt_tests/geometryn15.testcase deleted file mode 100644 index 63115cc..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multipoint -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTIPOINT(1 1.6, 2.3 8.7, 2 1, 1 2, 1 1)"), 3)) -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTIPOINT(1 1.6, 2.3 8.7, 2 1, 1 2, 1 1)"), 3)) -POINT(2 1) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn16.testcase b/src/spatialite/test/sql_stmt_tests/geometryn16.testcase deleted file mode 100644 index d200241..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multipolygon -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 8 2, 8 8, 2 8, 2 2)),((0 0, -10 0, -10 -10, 0 -10, 0 0)))"), 1)) -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTIPOLYGON(((0 0, 10 0, 10 10, 0 10, 0 0),(2 2, 8 2, 8 8, 2 8, 2 2)),((0 0, -10 0, -10 -10, 0 -10, 0 0)))"), 1)) -POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (2 2, 8 2, 8 8, 2 8, 2 2)) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn17.testcase b/src/spatialite/test/sql_stmt_tests/geometryn17.testcase deleted file mode 100644 index 15abc6a..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multipolygonM -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTIPOLYGONM(((0 0 1, 10 0 1, 10 10 1, 0 10 1, 0 0 1),(2 2 2, 8 2 2, 8 8 2, 2 8 2, 2 2 2)),((0 0 3, -10 0 3, -10 -10 3, 0 -10 3, 0 0 3)))"), 1)) -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTIPOLYGONM(((0 0 1, 10 0 1, 10 10 1, 0 10 1, 0 0 1),(2 2 2, 8 2 2, 8 8 2, 2 8 2, 2 2 2)),((0 0 3, -10 0 3, -10 -10 3, 0 -10 3, 0 0 3)))"), 1)) -POLYGON M((0 0 1, 10 0 1, 10 10 1, 0 10 1, 0 0 1), (2 2 2, 8 2 2, 8 8 2, 2 8 2, 2 2 2)) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn18.testcase b/src/spatialite/test/sql_stmt_tests/geometryn18.testcase deleted file mode 100644 index d38c6b9..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multipolygonZ -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTIPOLYGONZ(((0 0 1, 10 0 1, 10 10 1, 0 10 1, 0 0 1),(2 2 2, 8 2 2, 8 8 2, 2 8 2, 2 2 2)),((0 0 3, -10 0 3, -10 -10 3, 0 -10 3, 0 0 3)))"), 1)) -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTIPOLYGONZ(((0 0 1, 10 0 1, 10 10 1, 0 10 1, 0 0 1),(2 2 2, 8 2 2, 8 8 2, 2 8 2, 2 2 2)),((0 0 3, -10 0 3, -10 -10 3, 0 -10 3, 0 0 3)))"), 1)) -POLYGON Z((0 0 1, 10 0 1, 10 10 1, 0 10 1, 0 0 1), (2 2 2, 8 2 2, 8 8 2, 2 8 2, 2 2 2)) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn19.testcase b/src/spatialite/test/sql_stmt_tests/geometryn19.testcase deleted file mode 100644 index c46fb1c..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multipolygonZM -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTIPOLYGONZM(((0 0 1 2, 10 0 1 2, 10 10 1 2, 0 10 1 2, 0 0 1 2),(2 2 2 3, 8 2 2 3, 8 8 2 3, 2 8 2 3, 2 2 2 3)),((0 0 3 4, -10 0 3 4, -10 -10 3 4, 0 -10 3 4, 0 0 3 4)))"), 1)) -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTIPOLYGONZM(((0 0 1 2, 10 0 1 2, 10 10 1 2, 0 10 1 2, 0 0 1 2),(2 2 2 3, 8 2 2 3, 8 8 2 3, 2 8 2 3, 2 2 2 3)),((0 0 3 4, -10 0 3 4, -10 -10 3 4, 0 -10 3 4, 0 0 3 4)))"), 1)) -POLYGON ZM((0 0 1 2, 10 0 1 2, 10 10 1 2, 0 10 1 2, 0 0 1 2), (2 2 2 3, 8 2 2 3, 8 8 2 3, 2 8 2 3, 2 2 2 3)) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn2.testcase b/src/spatialite/test/sql_stmt_tests/geometryn2.testcase deleted file mode 100644 index ac9dd66..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multipoint - out of range 2 -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 2)); -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 2)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn20.testcase b/src/spatialite/test/sql_stmt_tests/geometryn20.testcase deleted file mode 100644 index c2deb97..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multipolygonZM - second poly -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTIPOLYGONZM(((0 0 1 2, 10 0 1 2, 10 10 1 2, 0 10 1 2, 0 0 1 2),(2 2 2 3, 8 2 2 3, 8 8 2 3, 2 8 2 3, 2 2 2 3)),((0 0 3 4, -10 0 3 4, -10 -10 3 4, 0 -10 3 4, 0 0 3 4)))"), 2)) -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTIPOLYGONZM(((0 0 1 2, 10 0 1 2, 10 10 1 2, 0 10 1 2, 0 0 1 2),(2 2 2 3, 8 2 2 3, 8 8 2 3, 2 8 2 3, 2 2 2 3)),((0 0 3 4, -10 0 3 4, -10 -10 3 4, 0 -10 3 4, 0 0 3 4)))"), 2)) -POLYGON ZM((0 0 3 4, -10 0 3 4, -10 -10 3 4, 0 -10 3 4, 0 0 3 4)) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn3.testcase b/src/spatialite/test/sql_stmt_tests/geometryn3.testcase deleted file mode 100644 index 34c41f5..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - text input (error) -:memory: #use in-memory database -SELECT GeometryN("text", 2); -1 # rows (not including the header row) -1 # columns -GeometryN("text", 2) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn4.testcase b/src/spatialite/test/sql_stmt_tests/geometryn4.testcase deleted file mode 100644 index 42f355f..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - bad blob input (error) -:memory: #use in-memory database -SELECT GeometryN(zeroblob(2), 1); -1 # rows (not including the header row) -1 # columns -GeometryN(zeroblob(2), 1) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn5.testcase b/src/spatialite/test/sql_stmt_tests/geometryn5.testcase deleted file mode 100644 index 132e633..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Geometry N - toxic blob -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 1)); -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 1)) -POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5)) - diff --git a/src/spatialite/test/sql_stmt_tests/geometryn6.testcase b/src/spatialite/test/sql_stmt_tests/geometryn6.testcase deleted file mode 100644 index ddf9b31..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multipoint - float index -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 0.2)); -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTIPOINT(1 2)"), 0.2)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn7.testcase b/src/spatialite/test/sql_stmt_tests/geometryn7.testcase deleted file mode 100644 index a42f18b..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multipointZ -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTIPOINTZ(1 2 4)"), 1)); -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTIPOINTZ(1 2 4)"), 1)) -POINT Z(1 2 4) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn8.testcase b/src/spatialite/test/sql_stmt_tests/geometryn8.testcase deleted file mode 100644 index 79fa4d3..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multipointM -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTIPOINTM(1 2 4)"), 1)); -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTIPOINTM(1 2 4)"), 1)) -POINT M(1 2 4) diff --git a/src/spatialite/test/sql_stmt_tests/geometryn9.testcase b/src/spatialite/test/sql_stmt_tests/geometryn9.testcase deleted file mode 100644 index 31c4ccd..0000000 --- a/src/spatialite/test/sql_stmt_tests/geometryn9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Geometry N - multipointZM -:memory: #use in-memory database -SELECT AsText(GeometryN(GeomFromText("MULTIPOINTZM(1 2 4 1.6)"), 1)); -1 # rows (not including the header row) -1 # columns -AsText(GeometryN(GeomFromText("MULTIPOINTZM(1 2 4 1.6)"), 1)) -POINT ZM(1 2 4 1.6) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromewkb1.testcase b/src/spatialite/test/sql_stmt_tests/geomfromewkb1.testcase deleted file mode 100644 index b9a6f4b..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromewkb1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From EWKB - bad text -:memory: -SELECT GeomFromEwkb("Hello!") -1 # rows -1 # column -GeomFromEwkb("Hello!") -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromewkb2.testcase b/src/spatialite/test/sql_stmt_tests/geomfromewkb2.testcase deleted file mode 100644 index 9207232..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromewkb2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From EWKB - non text -:memory: -SELECT GeomFromEwkb(26) -1 # rows -1 # column -GeomFromEwkb(26) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml1.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml1.testcase deleted file mode 100644 index 18cf042..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - non text -:memory: -SELECT GeomFromKML(26) -1 # rows -1 # column -GeomFromKML(26) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml10.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml10.testcase deleted file mode 100644 index 3ccc635..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - Multigeometry - Point -:memory: -SELECT AsText(GeomFromKML("-122.0822035425683,37.42228990140251,0")) -1 # rows -1 # column -AsText(GeomFromKML("-122.0822035425683,37.42228990140251,0")) -MULTIPOINT Z(-122.082204 37.42229 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml11.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml11.testcase deleted file mode 100644 index ef0453d..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - Geometrycollection - POLYGON with interior, 2-D -:memory: -SELECT AsText(GeomFromKML(" -122.43193945401,37.801983684521 -122.431564131101,37.8020327731402 -122.431499536494,37.801715236748 -122.43187136387,37.8016634915437 -122.43193945401,37.801983684521 -122.431885303019,37.8019316061803 -122.431762847554,37.8019476932246 -122.431719843168,37.8017374462006 -122.431841863906,37.8017213314352 -122.431885303019,37.8019316061803 -122.431714248439,37.8019544341044 -122.431592404659,37.8019694509363 -122.431548777661,37.8017591041777 -122.431671453253,37.8017428443014 -122.431714248439,37.8019544341044 ")) -1 # rows -1 # column -AsText(GeomFromKML(" -122.43193945401,37.801983684521 -122.431564131101,37.8020327731402 -122.431499536494,37.801715236748 -122.43187136387,37.8016634915437 -122.43193945401,37.801983684521 -122.431885303019,37.8019316061803 -122.431762847554,37.8019476932246 -122.431719843168,37.8017374462006 -122.431841863906,37.8017213314352 -122.431885303019,37.8019316061803 -122.431714248439,37.8019544341044 -122.431592404659,37.8019694509363 -122.431548777661,37.8017591041777 -122.431671453253,37.8017428443014 -122.431714248439,37.8019544341044 ")) -MULTIPOLYGON(((-122.431939 37.801984, -122.431564 37.802033, -122.4315 37.801715, -122.431871 37.801663, -122.431939 37.801984), (-122.431885 37.801932, -122.431763 37.801948, -122.43172 37.801737, -122.431842 37.801721, -122.431885 37.801932), (-122.431714 37.801954, -122.431592 37.801969, -122.431549 37.801759, -122.431671 37.801743, -122.431714 37.801954))) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml12.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml12.testcase deleted file mode 100644 index 825e1ef..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - LINESTRING -:memory: -SELECT AsText(GeomFromKML(" -112.2550785337791,36.07954952145647 -112.2549277039738,36.08117083492122 -112.2552505069063,36.08260761307279 -112.2564540158376,36.08395660588506 -112.2580238976449,36.08511401044813 -112.2595218489022,36.08584355239394 -112.262073428656,36.08626019085147 -112.2633204928495,36.08621519860091 -112.2644963846444,36.08627897945274 -112.2656969554589,36.08649599090644 ")) -1 # rows -1 # column -AsText(GeomFromKML(" -112.2550785337791,36.07954952145647 -112.2549277039738,36.08117083492122 -112.2552505069063,36.08260761307279 -112.2564540158376,36.08395660588506 -112.2580238976449,36.08511401044813 -112.2595218489022,36.08584355239394 -112.262073428656,36.08626019085147 -112.2633204928495,36.08621519860091 -112.2644963846444,36.08627897945274 -112.2656969554589,36.08649599090644 ")) -LINESTRING(-112.255079 36.07955, -112.254928 36.081171, -112.255251 36.082608, -112.256454 36.083957, -112.258024 36.085114, -112.259522 36.085844, -112.262073 36.08626, -112.26332 36.086215, -112.264496 36.086279, -112.265697 36.086496) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml13.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml13.testcase deleted file mode 100644 index 4e54afc..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - Multigeometry - Point 2D -:memory: -SELECT AsText(GeomFromKML("-122.0822035425683,37.42228990140251")) -1 # rows -1 # column -AsText(GeomFromKML("-122.0822035425683,37.42228990140251")) -MULTIPOINT(-122.082204 37.42229) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml14.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml14.testcase deleted file mode 100644 index 954640c..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - MultiGeometry LINESTRING -:memory: -SELECT AsText(GeomFromKML(" -112.2550785337791,36.07954952145647 -112.2549277039738,36.08117083492122 -112.2552505069063,36.08260761307279 -112.2564540158376,36.08395660588506 -112.2580238976449,36.08511401044813 -112.2595218489022,36.08584355239394 -112.262073428656,36.08626019085147 -112.2633204928495,36.08621519860091 -112.2644963846444,36.08627897945274 -112.2656969554589,36.08649599090644 ")) -1 # rows -1 # column -AsText(GeomFromKML(" -112.2550785337791,36.07954952145647 -112.2549277039738,36.08117083492122 -112.2552505069063,36.08260761307279 -112.2564540158376,36.08395660588506 -112.2580238976449,36.08511401044813 -112.2595218489022,36.08584355239394 -112.262073428656,36.08626019085147 -112.2633204928495,36.08621519860091 -112.2644963846444,36.08627897945274 -112.2656969554589,36.08649599090644 ")) -MULTILINESTRING((-112.255079 36.07955, -112.254928 36.081171, -112.255251 36.082608, -112.256454 36.083957, -112.258024 36.085114, -112.259522 36.085844, -112.262073 36.08626, -112.26332 36.086215, -112.264496 36.086279, -112.265697 36.086496)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml15.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml15.testcase deleted file mode 100644 index 82741bd..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - Point 2D -:memory: -SELECT AsText(GeomFromKML("-122.0822035425683,37.42228990140251")) -1 # rows -1 # column -AsText(GeomFromKML("-122.0822035425683,37.42228990140251"))) -POINT(-122.082204 37.42229) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml16.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml16.testcase deleted file mode 100644 index 00d687b..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - Multigeometry - 2 x Point 2D -:memory: -SELECT AsText(GeomFromKML("-122.0822035425683,37.42228990140251-122,37")) -1 # rows -1 # column -AsText(GeomFromKML("-122.0822035425683,37.42228990140251-122,37")) -MULTIPOINT(-122.082204 37.42229, -122 37) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml17.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml17.testcase deleted file mode 100644 index 2c040f8..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - Multigeometry - 2 x Point -:memory: -SELECT AsText(GeomFromKML("-122.0822035425683,37.42228990140251,6-122,37,1.3")) -1 # rows -1 # column -AsText(GeomFromKML("-122.0822035425683,37.42228990140251,6-122,37,1.3")) -MULTIPOINT Z(-122.082204 37.42229 6, -122 37 1.3) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml18.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml18.testcase deleted file mode 100644 index 932e918..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - MultiGeometry LINESTRING x 2 -:memory: -SELECT AsText(GeomFromKML(" -112.2550785337791,36.07954952145647 -112.2549277039738,36.08117083492122 -112.2552505069063,36.08260761307279 -112.2564540158376,36.08395660588506 -112.2580238976449,36.08511401044813 -112.2595218489022,36.08584355239394 -112.262073428656,36.08626019085147 -112.2633204928495,36.08621519860091 -112.2644963846444,36.08627897945274 -112.2656969554589,36.08649599090644 1,2 3,4")) -1 # rows -1 # column -AsText(GeomFromKML(" -112.2550785337791,36.07954952145647 -112.2549277039738,36.08117083492122 -112.2552505069063,36.08260761307279 -112.2564540158376,36.08395660588506 -112.2580238976449,36.08511401044813 -112.2595218489022,36.08584355239394 -112.262073428656,36.08626019085147 -112.2633204928495,36.08621519860091 -112.2644963846444,36.08627897945274 -112.2656969554589,36.08649599090644 1,2 3,4")) -MULTILINESTRING((-112.255079 36.07955, -112.254928 36.081171, -112.255251 36.082608, -112.256454 36.083957, -112.258024 36.085114, -112.259522 36.085844, -112.262073 36.08626, -112.26332 36.086215, -112.264496 36.086279, -112.265697 36.086496), (1 2, 3 4)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml19.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml19.testcase deleted file mode 100644 index 44a1c2a..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - MultiGeometry LINESTRING x 2 - 3D -:memory: -SELECT AsText(GeomFromKML(" -112.2550785337791,36.07954952145647,2357 -112.2549277039738,36.08117083492122,2357 -112.2552505069063,36.08260761307279,2357 -112.2564540158376,36.08395660588506,2357 -112.2580238976449,36.08511401044813,2357 -112.2595218489022,36.08584355239394,2357 -112.262073428656,36.08626019085147,2357 -112.2633204928495,36.08621519860091,2357 -112.2644963846444,36.08627897945274,2357 -112.2656969554589,36.08649599090644,2357 1,2,4 3,5,7")) -1 # rows -1 # column -AsText(GeomFromKML(" -112.2550785337791,36.07954952145647,2357 -112.2549277039738,36.08117083492122,2357 -112.2552505069063,36.08260761307279,2357 -112.2564540158376,36.08395660588506,2357 -112.2580238976449,36.08511401044813,2357 -112.2595218489022,36.08584355239394,2357 -112.262073428656,36.08626019085147,2357 -112.2633204928495,36.08621519860091,2357 -112.2644963846444,36.08627897945274,2357 -112.2656969554589,36.08649599090644,2357 1,2,4 3,5,7")) -MULTILINESTRING Z((-112.255079 36.07955 2357, -112.254928 36.081171 2357, -112.255251 36.082608 2357, -112.256454 36.083957 2357, -112.258024 36.085114 2357, -112.259522 36.085844 2357, -112.262073 36.08626 2357, -112.26332 36.086215 2357, -112.264496 36.086279 2357, -112.265697 36.086496 2357), (1 2 4, 3 5 7)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml2.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml2.testcase deleted file mode 100644 index c1b7caf..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - bad text -:memory: -SELECT GeomFromKML("Hell0!") -1 # rows -1 # column -GeomFromKML("Hell0!") -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml20.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml20.testcase deleted file mode 100644 index 5730e45..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - MultiGeometry POLYGON [hole] x 2 - 2D -:memory: -SELECT AsText(GeomFromKML("10,10 15,10 15,15 10,15 10,1011,11 12,11 12,12 11,12 11,1116,16 17,16 17,17 16,17 16,16")) -1 # rows -1 # column -AsText(GeomFromKML("10,10 15,10 15,15 10,15 10,1011,11 12,11 12,12 11,12 11,1116,16 17,16 17,17 16,17 16,16")) -MULTIPOLYGON(((10 10, 15 10, 15 15, 10 15, 10 10), (11 11, 12 11, 12 12, 11 12, 11 11)), ((16 16, 17 16, 17 17, 16 17, 16 16))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml21.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml21.testcase deleted file mode 100644 index c2fd9a9..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml21.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - MultiGeometry POLYGON [hole] x 2 - 3D -:memory: -SELECT AsText(GeomFromKML("10,10,100 15,10,101 15,15,102 10,15,103 10,10,10011,11,100 12,11,101 12,12,102 11,12,103 11,11,10016,16,100 17,16,101 17,17,102 16,17,103 16,16,100")) -1 # rows -1 # column -AsText(GeomFromKML("10,10,100 15,10,101 15,15,102 10,15,103 10,10,10011,11,100 12,11,101 12,12,102 11,12,103 11,11,10016,16,100 17,16,101 17,17,102 16,17,103 16,16,100")) -MULTIPOLYGON Z(((10 10 100, 15 10 101, 15 15 102, 10 15 103, 10 10 100), (11 11 100, 12 11 101, 12 12 102, 11 12 103, 11 11 100)), ((16 16 100, 17 16 101, 17 17 102, 16 17 103, 16 16 100))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml22.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml22.testcase deleted file mode 100644 index 60f81a2..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml22.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - MultiGeometry [Point, Line, Polygon] - 2D -:memory: -SELECT AsText(GeomFromKML("1,12,2 3,34,4 10,4 10,10 4,10 4,45,5 6,5 6,6 5,6 5,5")) -1 # rows -1 # column -AsText(GeomFromKML("1,12,2 3,34,4 10,4 10,10 4,10 4,45,5 6,5 6,6 5,6 5,5")) -GEOMETRYCOLLECTION(POINT(1 1), LINESTRING(2 2, 3 3), POLYGON((4 4, 10 4, 10 10, 4 10, 4 4), (5 5, 6 5, 6 6, 5 6, 5 5))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml23.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml23.testcase deleted file mode 100644 index 7f14436..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml23.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - MultiGeometry [Point, Line, Polygon] - 3D -:memory: -SELECT AsText(GeomFromKML("1,1,1002,2,100 3,3,1014,4,101 10,4,102 10,10,103 4,10,104 4,4,1015,5,100 6,5,101 6,6,102 5,6,103 5,5,100")) -1 # rows -1 # column -AsText(GeomFromKML("1,1,1002,2,100 3,3,1014,4,101 10,4,102 10,10,103 4,10,104 4,4,1015,5,100 6,5,101 6,6,102 5,6,103 5,5,100")) -GEOMETRYCOLLECTION Z(POINT Z(1 1 100), LINESTRING Z(2 2 100, 3 3 101), POLYGON Z((4 4 101, 10 4 102, 10 10 103, 4 10 104, 4 4 101), (5 5 100, 6 5 101, 6 6 102, 5 6 103, 5 5 100))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml3.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml3.testcase deleted file mode 100644 index e301dc6..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - Point -:memory: -SELECT AsText(GeomFromKML("-122.0822035425683,37.42228990140251,0")) -1 # rows -1 # column -AsText(GeomFromKML("-122.0822035425683,37.42228990140251,0"))) -POINT Z(-122.082204 37.42229 0) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml4.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml4.testcase deleted file mode 100644 index d9b95c0..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - LINESTRING Z -:memory: -SELECT AsText(GeomFromKML(" -112.2550785337791,36.07954952145647,2357 -112.2549277039738,36.08117083492122,2357 -112.2552505069063,36.08260761307279,2357 -112.2564540158376,36.08395660588506,2357 -112.2580238976449,36.08511401044813,2357 -112.2595218489022,36.08584355239394,2357 -112.262073428656,36.08626019085147,2357 -112.2633204928495,36.08621519860091,2357 -112.2644963846444,36.08627897945274,2357 -112.2656969554589,36.08649599090644,2357 ")) -1 # rows -1 # column -AsText(GeomFromKML(" -112.2550785337791,36.07954952145647,2357 -112.2549277039738,36.08117083492122,2357 -112.2552505069063,36.08260761307279,2357 -112.2564540158376,36.08395660588506,2357 -112.2580238976449,36.08511401044813,2357 -112.2595218489022,36.08584355239394,2357 -112.262073428656,36.08626019085147,2357 -112.2633204928495,36.08621519860091,2357 -112.2644963846444,36.08627897945274,2357 -112.2656969554589,36.08649599090644,2357 ")) -LINESTRING Z(-112.255079 36.07955 2357, -112.254928 36.081171 2357, -112.255251 36.082608 2357, -112.256454 36.083957 2357, -112.258024 36.085114 2357, -112.259522 36.085844 2357, -112.262073 36.08626 2357, -112.26332 36.086215 2357, -112.264496 36.086279 2357, -112.265697 36.086496 2357) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml5.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml5.testcase deleted file mode 100644 index 8265ade..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - POLYGON Z -:memory: -SELECT AsText(GeomFromKML("-112.3372510731295,36.14888505105317,1784 -112.3356128688403,36.14781540589019,1784 -112.3368169371048,36.14658677734382,1784 -112.3384408457543,36.14762778914076,1784 -112.3372510731295,36.14888505105317,1784")) -1 # rows -1 # column -AsText(GeomFromKML("-112.3372510731295,36.14888505105317,1784 -112.3356128688403,36.14781540589019,1784 -112.3368169371048,36.14658677734382,1784 -112.3384408457543,36.14762778914076,1784 -112.3372510731295,36.14888505105317,1784")) -POLYGON Z((-112.337251 36.148885 1784, -112.335613 36.147815 1784, -112.336817 36.146587 1784, -112.338441 36.147628 1784, -112.337251 36.148885 1784)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml6.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml6.testcase deleted file mode 100644 index 06b843e..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - POLYGON -:memory: -SELECT AsText(GeomFromKML("-112.3372510731295,36.14888505105317 -112.3356128688403,36.14781540589019 -112.3368169371048,36.14658677734382 -112.3384408457543,36.14762778914076 -112.3372510731295,36.14888505105317")) -1 # rows -1 # column -AsText(GeomFromKML("-112.3372510731295,36.14888505105317 -112.3356128688403,36.14781540589019 -112.3368169371048,36.14658677734382 -112.3384408457543,36.14762778914076 -112.3372510731295,36.14888505105317")) -POLYGON((-112.337251 36.148885, -112.335613 36.147815, -112.336817 36.146587, -112.338441 36.147628, -112.337251 36.148885)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml7.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml7.testcase deleted file mode 100644 index 533c7e9..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - POLYGON with interior -:memory: -SELECT AsText(GeomFromKML(" -122.43193945401,37.801983684521,0 -122.431564131101,37.8020327731402,0 -122.431499536494,37.801715236748,0 -122.43187136387,37.8016634915437,0 -122.43193945401,37.801983684521,0 -122.431885303019,37.8019316061803,0 -122.431762847554,37.8019476932246,0 -122.431719843168,37.8017374462006,0 -122.431841863906,37.8017213314352,0 -122.431885303019,37.8019316061803,0 -122.431714248439,37.8019544341044,0 -122.431592404659,37.8019694509363,0 -122.431548777661,37.8017591041777,0 -122.431671453253,37.8017428443014,0 -122.431714248439,37.8019544341044,0 ")) -1 # rows -1 # column -AsText(GeomFromKML(" -122.43193945401,37.801983684521,0 -122.431564131101,37.8020327731402,0 -122.431499536494,37.801715236748,0 -122.43187136387,37.8016634915437,0 -122.43193945401,37.801983684521,0 -122.431885303019,37.8019316061803,0 -122.431762847554,37.8019476932246,0 -122.431719843168,37.8017374462006,0 -122.431841863906,37.8017213314352,0 -122.431885303019,37.8019316061803,0 -122.431714248439,37.8019544341044,0 -122.431592404659,37.8019694509363,0 -122.431548777661,37.8017591041777,0 -122.431671453253,37.8017428443014,0 -122.431714248439,37.8019544341044,0 ")) -POLYGON Z((-122.431939 37.801984 0, -122.431564 37.802033 0, -122.4315 37.801715 0, -122.431871 37.801663 0, -122.431939 37.801984 0), (-122.431885 37.801932 0, -122.431763 37.801948 0, -122.43172 37.801737 0, -122.431842 37.801721 0, -122.431885 37.801932 0), (-122.431714 37.801954 0, -122.431592 37.801969 0, -122.431549 37.801759 0, -122.431671 37.801743 0, -122.431714 37.801954 0)) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml8.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml8.testcase deleted file mode 100644 index c358695..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - MultiGeometry -:memory: -SELECT AsText(GeomFromKML(" -122.431885303019,37.8019316061803,0 -122.431762847554,37.8019476932246,0 -122.431719843168,37.8017374462006,0 -122.431841863906,37.8017213314352,0 -122.431885303019,37.8019316061803,0 -122.431714248439,37.8019544341044,0 -122.431592404659,37.8019694509363,0 -122.431548777661,37.8017591041777,0 -122.431671453253,37.8017428443014,0 -122.431714248439,37.8019544341044,0")) -1 # rows -1 # column -AsText(GeomFromKML(" -122.431885303019,37.8019316061803,0 -122.431762847554,37.8019476932246,0 -122.431719843168,37.8017374462006,0 -122.431841863906,37.8017213314352,0 -122.431885303019,37.8019316061803,0 -122.431714248439,37.8019544341044,0 -122.431592404659,37.8019694509363,0 -122.431548777661,37.8017591041777,0 -122.431671453253,37.8017428443014,0 -122.431714248439,37.8019544341044,0")) -MULTIPOLYGON Z(((-122.431885 37.801932 0, -122.431763 37.801948 0, -122.43172 37.801737 0, -122.431842 37.801721 0, -122.431885 37.801932 0)), ((-122.431714 37.801954 0, -122.431592 37.801969 0, -122.431549 37.801759 0, -122.431671 37.801743 0, -122.431714 37.801954 0))) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromkml9.testcase b/src/spatialite/test/sql_stmt_tests/geomfromkml9.testcase deleted file mode 100644 index eb70924..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromkml9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -From KML - Geometrycollection - POLYGON with interior -:memory: -SELECT AsText(GeomFromKML(" -122.43193945401,37.801983684521,0 -122.431564131101,37.8020327731402,0 -122.431499536494,37.801715236748,0 -122.43187136387,37.8016634915437,0 -122.43193945401,37.801983684521,0 -122.431885303019,37.8019316061803,0 -122.431762847554,37.8019476932246,0 -122.431719843168,37.8017374462006,0 -122.431841863906,37.8017213314352,0 -122.431885303019,37.8019316061803,0 -122.431714248439,37.8019544341044,0 -122.431592404659,37.8019694509363,0 -122.431548777661,37.8017591041777,0 -122.431671453253,37.8017428443014,0 -122.431714248439,37.8019544341044,0 ")) -1 # rows -1 # column -AsText(GeomFromKML(" -122.43193945401,37.801983684521,0 -122.431564131101,37.8020327731402,0 -122.431499536494,37.801715236748,0 -122.43187136387,37.8016634915437,0 -122.43193945401,37.801983684521,0 -122.431885303019,37.8019316061803,0 -122.431762847554,37.8019476932246,0 -122.431719843168,37.8017374462006,0 -122.431841863906,37.8017213314352,0 -122.431885303019,37.8019316061803,0 -122.431714248439,37.8019544341044,0 -122.431592404659,37.8019694509363,0 -122.431548777661,37.8017591041777,0 -122.431671453253,37.8017428443014,0 -122.431714248439,37.8019544341044,0 ")) -MULTIPOLYGON Z(((-122.431939 37.801984 0, -122.431564 37.802033 0, -122.4315 37.801715 0, -122.431871 37.801663 0, -122.431939 37.801984 0), (-122.431885 37.801932 0, -122.431763 37.801948 0, -122.43172 37.801737 0, -122.431842 37.801721 0, -122.431885 37.801932 0), (-122.431714 37.801954 0, -122.431592 37.801969 0, -122.431549 37.801759 0, -122.431671 37.801743 0, -122.431714 37.801954 0))) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext1.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext1.testcase deleted file mode 100644 index 89ac942..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext1 -:memory: #use in-memory database -SELECT AsWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900)"), 4); -1 # rows (not including the header row) -1 # columns -AsWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900)"), 4) -POINT(-71.1043 42.3151) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext10.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext10.testcase deleted file mode 100644 index 05b0840..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext10 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(MULTIPOINT(0 1, 2 3, 4 5))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTION(MULTIPOINT(0 1, 2 3, 4 5))')); -GEOMETRYCOLLECTION(POINT(0 1), POINT(2 3), POINT(4 5)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext11.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext11.testcase deleted file mode 100644 index af71844..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext11 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(MULTIPOINT((0 1), (2 3), (4 5)))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTION(MULTIPOINT((0 1), (2 3), (4 5)))')); -GEOMETRYCOLLECTION(POINT(0 1), POINT(2 3), POINT(4 5)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext12.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext12.testcase deleted file mode 100644 index e7cc020..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext12 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(MULTILINESTRING((0 1, 2 3), (4 5, 6 7)))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTION(MULTILINESTRING((0 1, 2 3), (4 5, 6 7)))')); -GEOMETRYCOLLECTION(LINESTRING(0 1, 2 3), LINESTRING(4 5, 6 7)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext13.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext13.testcase deleted file mode 100644 index f0bf06e..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext13 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0, 5 0, 5 5, 0 5, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10))))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTION(MULTIPOLYGON(((0 0, 5 0, 5 5, 0 5, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10))))')); -GEOMETRYCOLLECTION(POLYGON((0 0, 5 0, 5 5, 0 5, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext14.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext14.testcase deleted file mode 100644 index d719e69..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext14 -:memory: #use in-memory database -SELECT AsText(GeomFromText('MULTIPOINT((0 1), (2 3), (4 5))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('MULTIPOINT((0 1), (2 3), (4 5))')); -MULTIPOINT(0 1, 2 3, 4 5) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext15.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext15.testcase deleted file mode 100644 index ad7e5d5..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext15 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(POINT(8 8), MULTIPOLYGON(((0 0, 5 0, 5 5, 0 5, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10))), POINT(7 7), MULTILINESTRING((0 1, 2 3), (4 5, 6 7)), POINT(6 6), MULTIPOINT((0 1), (2 3), (4 5)), POINT(9 9))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTION(POINT(8 8), MULTIPOLYGON(((0 0, 5 0, 5 5, 0 5, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)), ((10 10, 11 10, 11 11, 10 11, 10 10))), POINT(7 7), MULTILINESTRING((0 1, 2 3), (4 5, 6 7)), POINT(6 6), MULTIPOINT((0 1), (2 3), (4 5)), POINT(9 9))')); -GEOMETRYCOLLECTION(POINT(8 8), POINT(7 7), POINT(6 6), POINT(0 1), POINT(2 3), POINT(4 5), POINT(9 9), LINESTRING(0 1, 2 3), LINESTRING(4 5, 6 7), POLYGON((0 0, 5 0, 5 5, 0 5, 0 0), (1 1, 2 1, 2 2, 1 2, 1 1)), POLYGON((10 10, 11 10, 11 11, 10 11, 10 10))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext16.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext16.testcase deleted file mode 100644 index 6526bbb..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext16 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTIPOINTZ(0 1 9, 2 3 9, 4 5 9))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTIPOINTZ(0 1 9, 2 3 9, 4 5 9))')); -GEOMETRYCOLLECTION Z(POINT Z(0 1 9), POINT Z(2 3 9), POINT Z(4 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext17.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext17.testcase deleted file mode 100644 index 043d88e..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext17 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTIPOINTZ((0 1 9), (2 3 9), (4 5 9)))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTIPOINTZ((0 1 9), (2 3 9), (4 5 9)))')); -GEOMETRYCOLLECTION Z(POINT Z(0 1 9), POINT Z(2 3 9), POINT Z(4 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext18.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext18.testcase deleted file mode 100644 index ac76066..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext18 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTILINESTRINGZ((0 1 9, 2 3 9), (4 5 9, 6 7 9)))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTILINESTRINGZ((0 1 9, 2 3 9), (4 5 9, 6 7 9)))')); -GEOMETRYCOLLECTION Z(LINESTRING Z(0 1 9, 2 3 9), LINESTRING Z(4 5 9, 6 7 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext19.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext19.testcase deleted file mode 100644 index d0c0542..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext13 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTIPOLYGONZ(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZ(MULTIPOLYGONZ(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))))')); -GEOMETRYCOLLECTION Z(POLYGON Z((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), POLYGON Z((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext2.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext2.testcase deleted file mode 100644 index ff998df..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext2 -:memory: #use in-memory database -SELECT GeomFromText(3.14); -1 # rows (not including the header row) -1 # columns -GeomFromText(3.14) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext20.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext20.testcase deleted file mode 100644 index 2aee556..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext20 -:memory: #use in-memory database -SELECT AsText(GeomFromText('MULTIPOINTZ((0 1 9), (2 3 9), (4 5 9))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('MULTIPOINTZ((0 1 9), (2 3 9), (4 5 9))')); -MULTIPOINT Z(0 1 9, 2 3 9, 4 5 9) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext21.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext21.testcase deleted file mode 100644 index 9c985d9..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext21.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext21 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(8 8 9), MULTIPOLYGONZ(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))), POINTZ(7 7 9), MULTILINESTRINGZ((0 1 9, 2 3 9), (4 5 9, 6 7 9)), POINTZ(6 6 9), MULTIPOINTZ((0 1 9), (2 3 9), (4 5 9)), POINTZ(9 9 9))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(8 8 9), MULTIPOLYGONZ(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))), POINTZ(7 7 9), MULTILINESTRINGZ((0 1 9, 2 3 9), (4 5 9, 6 7 9)), POINTZ(6 6 9), MULTIPOINTZ((0 1 9), (2 3 9), (4 5 9)), POINTZ(9 9 9))')); -GEOMETRYCOLLECTION Z(POINT Z(8 8 9), POINT Z(7 7 9), POINT Z(6 6 9), POINT Z(0 1 9), POINT Z(2 3 9), POINT Z(4 5 9), POINT Z(9 9 9), LINESTRING Z(0 1 9, 2 3 9), LINESTRING Z(4 5 9, 6 7 9), POLYGON Z((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), POLYGON Z((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext22.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext22.testcase deleted file mode 100644 index 92a265a..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext22.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext22 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTIPOINTM(0 1 9, 2 3 9, 4 5 9))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTIPOINTM(0 1 9, 2 3 9, 4 5 9))')); -GEOMETRYCOLLECTION M(POINT M(0 1 9), POINT M(2 3 9), POINT M(4 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext23.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext23.testcase deleted file mode 100644 index 5886497..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext23.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext23 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTIPOINTM((0 1 9), (2 3 9), (4 5 9)))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTIPOINTM((0 1 9), (2 3 9), (4 5 9)))')); -GEOMETRYCOLLECTION M(POINT M(0 1 9), POINT M(2 3 9), POINT M(4 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext24.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext24.testcase deleted file mode 100644 index 5baf315..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext24.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext24 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTILINESTRINGM((0 1 9, 2 3 9), (4 5 9, 6 7 9)))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTILINESTRINGM((0 1 9, 2 3 9), (4 5 9, 6 7 9)))')); -GEOMETRYCOLLECTION M(LINESTRING M(0 1 9, 2 3 9), LINESTRING M(4 5 9, 6 7 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext25.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext25.testcase deleted file mode 100644 index 8459ed3..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext25.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext25 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTIPOLYGONM(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONM(MULTIPOLYGONM(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))))')); -GEOMETRYCOLLECTION M(POLYGON M((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), POLYGON M((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext26.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext26.testcase deleted file mode 100644 index b9d296c..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext26.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext26 -:memory: #use in-memory database -SELECT AsText(GeomFromText('MULTIPOINTM((0 1 9), (2 3 9), (4 5 9))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('MULTIPOINTM((0 1 9), (2 3 9), (4 5 9))')); -MULTIPOINT M(0 1 9, 2 3 9, 4 5 9) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext27.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext27.testcase deleted file mode 100644 index 7e374ae..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext27.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext27 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(POINTM(8 8 9), MULTIPOLYGONM(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))), POINTM(7 7 9), MULTILINESTRINGM((0 1 9, 2 3 9), (4 5 9, 6 7 9)), POINTM(6 6 9), MULTIPOINTM((0 1 9), (2 3 9), (4 5 9)), POINTM(9 9 9))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONM(POINTM(8 8 9), MULTIPOLYGONM(((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), ((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))), POINTM(7 7 9), MULTILINESTRINGM((0 1 9, 2 3 9), (4 5 9, 6 7 9)), POINTM(6 6 9), MULTIPOINTM((0 1 9), (2 3 9), (4 5 9)), POINTM(9 9 9))')); -GEOMETRYCOLLECTION M(POINT M(8 8 9), POINT M(7 7 9), POINT M(6 6 9), POINT M(0 1 9), POINT M(2 3 9), POINT M(4 5 9), POINT M(9 9 9), LINESTRING M(0 1 9, 2 3 9), LINESTRING M(4 5 9, 6 7 9), POLYGON M((0 0 9, 5 0 9, 5 5 9, 0 5 9, 0 0 9), (1 1 9, 2 1 9, 2 2 9, 1 2 9, 1 1 9)), POLYGON M((10 10 9, 11 10 9, 11 11 9, 10 11 9, 10 10 9))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext28.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext28.testcase deleted file mode 100644 index 358f633..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext28.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext28 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTIPOINTZM(0 1 9 7, 2 3 9 7, 4 5 9 7))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTIPOINTZM(0 1 9 7, 2 3 9 7, 4 5 9 7))')); -GEOMETRYCOLLECTION ZM(POINT ZM(0 1 9 7), POINT ZM(2 3 9 7), POINT ZM(4 5 9 7)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext29.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext29.testcase deleted file mode 100644 index b9d7e4a..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext29.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext29 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTIPOINTZM((0 1 9 7), (2 3 9 7), (4 5 9 7)))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTIPOINTZM((0 1 9 7), (2 3 9 7), (4 5 9 7)))')); -GEOMETRYCOLLECTION ZM(POINT ZM(0 1 9 7), POINT ZM(2 3 9 7), POINT ZM(4 5 9 7)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext3.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext3.testcase deleted file mode 100644 index 0c39740..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext3 -:memory: #use in-memory database -SELECT AsWkt(GeomFromText("LINESTRING(4 0, 4 4, 8 4)"), 4); -1 # rows (not including the header row) -1 # columns -AsWkt(GeomFromText("LINESTRING(4 0, 4 4, 8 4)"), 4) -LINESTRING(4 0,4 4,8 4) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext30.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext30.testcase deleted file mode 100644 index f70d425..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext30.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext30 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTILINESTRINGZM((0 1 9 7, 2 3 9 7), (4 5 9 7, 6 7 9 7)))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTILINESTRINGZM((0 1 9 7, 2 3 9 7), (4 5 9 7, 6 7 9 7)))')); -GEOMETRYCOLLECTION ZM(LINESTRING ZM(0 1 9 7, 2 3 9 7), LINESTRING ZM(4 5 9 7, 6 7 9 7)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext31.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext31.testcase deleted file mode 100644 index a654605..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext31.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext31 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTIPOLYGONZM(((0 0 9 7, 5 0 9 7, 5 5 9 7, 0 5 9 7, 0 0 9 7), (1 1 9 7, 2 1 9 7, 2 2 9 7, 1 2 9 7, 1 1 9 7)), ((10 10 9 7, 11 10 9 7, 11 11 9 7, 10 11 9 7, 10 10 9 7))))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZM(MULTIPOLYGONZM(((0 0 9 7, 5 0 9 7, 5 5 9 7, 0 5 9 7, 0 0 9 7), (1 1 9 7, 2 1 9 7, 2 2 9 7, 1 2 9 7, 1 1 9 7)), ((10 10 9 7, 11 10 9 7, 11 11 9 7, 10 11 9 7, 10 10 9 7))))')); -GEOMETRYCOLLECTION ZM(POLYGON ZM((0 0 9 7, 5 0 9 7, 5 5 9 7, 0 5 9 7, 0 0 9 7), (1 1 9 7, 2 1 9 7, 2 2 9 7, 1 2 9 7, 1 1 9 7)), POLYGON ZM((10 10 9 7, 11 10 9 7, 11 11 9 7, 10 11 9 7, 10 10 9 7))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext32.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext32.testcase deleted file mode 100644 index 5e6bd15..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext32.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext32 -:memory: #use in-memory database -SELECT AsText(GeomFromText('MULTIPOINTZM((0 1 9 7), (2 3 9 7), (4 5 9 7))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('MULTIPOINTZM((0 1 9 7), (2 3 9 7), (4 5 9 7))')); -MULTIPOINT ZM(0 1 9 7, 2 3 9 7, 4 5 9 7) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext33.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext33.testcase deleted file mode 100644 index 3dde9a5..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext33.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext33 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(8 8 9 7), MULTIPOLYGONZM(((0 0 9 7, 5 0 9 7, 5 5 9 7, 0 5 9 7, 0 0 9 7), (1 1 9 7, 2 1 9 7, 2 2 9 7, 1 2 9 7, 1 1 9 7)), ((10 10 9 7, 11 10 9 7, 11 11 9 7, 10 11 9 7, 10 10 9 7))), POINTZM(7 7 9 7), MULTILINESTRINGZM((0 1 9 7, 2 3 9 7), (4 5 9 7, 6 7 9 7)), POINTZM(6 6 9 7), MULTIPOINTZM((0 1 9 7), (2 3 9 7), (4 5 9 7)), POINTZM(9 9 9 7))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(8 8 9 7), MULTIPOLYGONZM(((0 0 9 7, 5 0 9 7, 5 5 9 7, 0 5 9 7, 0 0 9 7), (1 1 9 7, 2 1 9 7, 2 2 9 7, 1 2 9 7, 1 1 9 7)), ((10 10 9 7, 11 10 9 7, 11 11 9 7, 10 11 9 7, 10 10 9 7))), POINTZM(7 7 9 7), MULTILINESTRINGZM((0 1 9 7, 2 3 9 7), (4 5 9 7, 6 7 9 7)), POINTZM(6 6 9 7), MULTIPOINTZM((0 1 9 7), (2 3 9 7), (4 5 9 7)), POINTZM(9 9 9 7))')); -GEOMETRYCOLLECTION ZM(POINT ZM(8 8 9 7), POINT ZM(7 7 9 7), POINT ZM(6 6 9 7), POINT ZM(0 1 9 7), POINT ZM(2 3 9 7), POINT ZM(4 5 9 7), POINT ZM(9 9 9 7), LINESTRING ZM(0 1 9 7, 2 3 9 7), LINESTRING ZM(4 5 9 7, 6 7 9 7), POLYGON ZM((0 0 9 7, 5 0 9 7, 5 5 9 7, 0 5 9 7, 0 0 9 7), (1 1 9 7, 2 1 9 7, 2 2 9 7, 1 2 9 7, 1 1 9 7)), POLYGON ZM((10 10 9 7, 11 10 9 7, 11 11 9 7, 10 11 9 7, 10 10 9 7))) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext34.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext34.testcase deleted file mode 100644 index 95b4216..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext34.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext34 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2))))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2))))')); -GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext35.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext35.testcase deleted file mode 100644 index ee598bd..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext35.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext35 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2)), GEOMETRYCOLLECTION(POINT(3 3), LINESTRING(4 4, 5 5)))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTION(GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2)), GEOMETRYCOLLECTION(POINT(3 3), LINESTRING(4 4, 5 5)))')); -GEOMETRYCOLLECTION(POINT(0 0), POINT(3 3), LINESTRING(1 1, 2 2), LINESTRING(4 4, 5 5)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext36.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext36.testcase deleted file mode 100644 index b92a736..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext36.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext36 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTION(POINT(9 9), GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2)), POINT(8 8), GEOMETRYCOLLECTION(POINT(3 3), LINESTRING(4 4, 5 5)), POINT(7 7))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTION(POINT(9 9), GEOMETRYCOLLECTION(POINT(0 0), LINESTRING(1 1, 2 2)), POINT(8 8), GEOMETRYCOLLECTION(POINT(3 3), LINESTRING(4 4, 5 5)), POINT(7 7))')); -GEOMETRYCOLLECTION(POINT(9 9), POINT(0 0), POINT(8 8), POINT(3 3), POINT(7 7), LINESTRING(1 1, 2 2), LINESTRING(4 4, 5 5)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext37.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext37.testcase deleted file mode 100644 index b140919..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext37.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext37 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(GEOMETRYCOLLECTIONZ(GEOMETRYCOLLECTIONZ(POINTZ(0 0 9), LINESTRINGZ(1 1 9, 2 2 9))))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZ(GEOMETRYCOLLECTIONZ(GEOMETRYCOLLECTIONZ(POINTZ(0 0 9), LINESTRINGZ(1 1 9, 2 2 9))))')); -GEOMETRYCOLLECTION Z(POINT Z(0 0 9), LINESTRING Z(1 1 9, 2 2 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext38.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext38.testcase deleted file mode 100644 index bf51e95..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext38.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext38 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(GEOMETRYCOLLECTIONZ(POINTZ(0 0 9), LINESTRINGZ(1 1 9, 2 2 9)), GEOMETRYCOLLECTIONZ(POINTZ(3 3 9), LINESTRINGZ(4 4 9, 5 5 9)))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZ(GEOMETRYCOLLECTIONZ(POINTZ(0 0 9), LINESTRINGZ(1 1 9, 2 2 9)), GEOMETRYCOLLECTIONZ(POINTZ(3 3 9), LINESTRINGZ(4 4 9, 5 5 9)))')); -GEOMETRYCOLLECTION Z(POINT Z(0 0 9), POINT Z(3 3 9), LINESTRING Z(1 1 9, 2 2 9), LINESTRING Z(4 4 9, 5 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext39.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext39.testcase deleted file mode 100644 index 4fcbf20..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext39.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext39 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(9 9 9), GEOMETRYCOLLECTIONZ(POINTZ(0 0 9), LINESTRINGZ(1 1 9, 2 2 9)), POINTZ(8 8 9), GEOMETRYCOLLECTIONZ(POINTZ(3 3 9), LINESTRINGZ(4 4 9, 5 5 9)), POINTZ(7 7 9))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZ(POINTZ(9 9 9), GEOMETRYCOLLECTIONZ(POINTZ(0 0 9), LINESTRINGZ(1 1 9, 2 2 9)), POINTZ(8 8 9), GEOMETRYCOLLECTIONZ(POINTZ(3 3 9), LINESTRINGZ(4 4 9, 5 5 9)), POINTZ(7 7 9))')); -GEOMETRYCOLLECTION Z(POINT Z(9 9 9), POINT Z(0 0 9), POINT Z(8 8 9), POINT Z(3 3 9), POINT Z(7 7 9), LINESTRING Z(1 1 9, 2 2 9), LINESTRING Z(4 4 9, 5 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext4.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext4.testcase deleted file mode 100644 index 182ba56..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext4 -:memory: #use in-memory database -SELECT GeomFromText("POINT(0 1 2 3)"); -1 # rows (not including the header row) -1 # columns -GeomFromText("POINT(0 1 2 3)") -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext40.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext40.testcase deleted file mode 100644 index e56e78c..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext40.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext40 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(GEOMETRYCOLLECTIONM(GEOMETRYCOLLECTIONM(POINTM(0 0 9), LINESTRINGM(1 1 9, 2 2 9))))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONM(GEOMETRYCOLLECTIONM(GEOMETRYCOLLECTIONM(POINTM(0 0 9), LINESTRINGM(1 1 9, 2 2 9))))')); -GEOMETRYCOLLECTION M(POINT M(0 0 9), LINESTRING M(1 1 9, 2 2 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext41.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext41.testcase deleted file mode 100644 index 80fec94..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext41.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext41 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(GEOMETRYCOLLECTIONM(POINTM(0 0 9), LINESTRINGM(1 1 9, 2 2 9)), GEOMETRYCOLLECTIONM(POINTM(3 3 9), LINESTRINGM(4 4 9, 5 5 9)))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONM(GEOMETRYCOLLECTIONM(POINTM(0 0 9), LINESTRINGM(1 1 9, 2 2 9)), GEOMETRYCOLLECTIONM(POINTM(3 3 9), LINESTRINGM(4 4 9, 5 5 9)))')); -GEOMETRYCOLLECTION M(POINT M(0 0 9), POINT M(3 3 9), LINESTRING M(1 1 9, 2 2 9), LINESTRING M(4 4 9, 5 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext42.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext42.testcase deleted file mode 100644 index 5325dea..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext42.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext42 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONM(POINTM(9 9 9), GEOMETRYCOLLECTIONM(POINTM(0 0 9), LINESTRINGM(1 1 9, 2 2 9)), POINTM(8 8 9), GEOMETRYCOLLECTIONM(POINTM(3 3 9), LINESTRINGM(4 4 9, 5 5 9)), POINTM(7 7 9))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONM(POINTM(9 9 9), GEOMETRYCOLLECTIONM(POINTM(0 0 9), LINESTRINGM(1 1 9, 2 2 9)), POINTM(8 8 9), GEOMETRYCOLLECTIONM(POINTM(3 3 9), LINESTRINGM(4 4 9, 5 5 9)), POINTM(7 7 9))')); -GEOMETRYCOLLECTION M(POINT M(9 9 9), POINT M(0 0 9), POINT M(8 8 9), POINT M(3 3 9), POINT M(7 7 9), LINESTRING M(1 1 9, 2 2 9), LINESTRING M(4 4 9, 5 5 9)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext43.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext43.testcase deleted file mode 100644 index 873babe..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext43.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext43 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(GEOMETRYCOLLECTIONZM(GEOMETRYCOLLECTIONZM(POINTZM(0 0 9 7), LINESTRINGZM(1 1 9 7, 2 2 9 7))))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZM(GEOMETRYCOLLECTIONZM(GEOMETRYCOLLECTIONZM(POINTZM(0 0 9 7), LINESTRINGZM(1 1 9 7, 2 2 9 7))))')); -GEOMETRYCOLLECTION ZM(POINT ZM(0 0 9 7), LINESTRING ZM(1 1 9 7, 2 2 9 7)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext44.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext44.testcase deleted file mode 100644 index 791f3a4..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext44.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext44 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(GEOMETRYCOLLECTIONZM(POINTZM(0 0 9 7), LINESTRINGZM(1 1 9 7, 2 2 9 7)), GEOMETRYCOLLECTIONZM(POINTZM(3 3 9 7), LINESTRINGZM(4 4 9 7, 5 5 9 7)))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZM(GEOMETRYCOLLECTIONZM(POINTZM(0 0 9 7), LINESTRINGZM(1 1 9 7, 2 2 9 7)), GEOMETRYCOLLECTIONZM(POINTZM(3 3 9 7), LINESTRINGZM(4 4 9 7, 5 5 9 7)))')); -GEOMETRYCOLLECTION ZM(POINT ZM(0 0 9 7), POINT ZM(3 3 9 7), LINESTRING ZM(1 1 9 7, 2 2 9 7), LINESTRING ZM(4 4 9 7, 5 5 9 7)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext45.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext45.testcase deleted file mode 100644 index 3546ca8..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext45.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext45 -:memory: #use in-memory database -SELECT AsText(GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(9 9 9 7), GEOMETRYCOLLECTIONZM(POINTZM(0 0 9 7), LINESTRINGZM(1 1 9 7, 2 2 9 7)), POINTZM(8 8 9 7), GEOMETRYCOLLECTIONZM(POINTZM(3 3 9 7), LINESTRINGZM(4 4 9 7, 5 5 9 7)), POINTZM(7 7 9 7))')); -1 # rows (not including the header row) -1 # columns -AsText(GeomFromText('GEOMETRYCOLLECTIONZM(POINTZM(9 9 9 7), GEOMETRYCOLLECTIONZM(POINTZM(0 0 9 7), LINESTRINGZM(1 1 9 7, 2 2 9 7)), POINTZM(8 8 9 7), GEOMETRYCOLLECTIONZM(POINTZM(3 3 9 7), LINESTRINGZM(4 4 9 7, 5 5 9 7)), POINTZM(7 7 9 7))')); -GEOMETRYCOLLECTION ZM(POINT ZM(9 9 9 7), POINT ZM(0 0 9 7), POINT ZM(8 8 9 7), POINT ZM(3 3 9 7), POINT ZM(7 7 9 7), LINESTRING ZM(1 1 9 7, 2 2 9 7), LINESTRING ZM(4 4 9 7, 5 5 9 7)) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext5.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext5.testcase deleted file mode 100644 index 0b3e136..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext5 -:memory: #use in-memory database -SELECT AsWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900)", 4326), 4); -1 # rows (not including the header row) -1 # columns -AsWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900)", 4326), 4) -POINT(-71.1043 42.3151) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext6.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext6.testcase deleted file mode 100644 index d60d816..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext6 -:memory: #use in-memory database -SELECT AsEWkt(GeomFromText("POINT(-71 42)", 4326)); -1 # rows (not including the header row) -1 # columns -AsEWkt(GeomFromText("POINT(-71 42)", 4326)) -SRID=4326;POINT(-71 42) diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext7.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext7.testcase deleted file mode 100644 index 423956f..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext7 -:memory: #use in-memory database -SELECT AsEWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900)", "WGS-84")); -1 # rows (not including the header row) -1 # columns -AsEWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900)", "WGS-84")) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext8.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext8.testcase deleted file mode 100644 index 976eef9..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext8 -:memory: #use in-memory database -SELECT AsEWkt(GeomFromText(3.14, 4326)); -1 # rows (not including the header row) -1 # columns -AsEWkt(GeomFromText(3.14, 4326)) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomfromtext9.testcase b/src/spatialite/test/sql_stmt_tests/geomfromtext9.testcase deleted file mode 100644 index da410f2..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomfromtext9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -geomfromtext9 -:memory: #use in-memory database -SELECT AsEWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900 45)", 4326)); -1 # rows (not including the header row) -1 # columns -AsEWkt(GeomFromText("POINT(-71.1043443253471 42.315067601582900 45)", 4326)) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype1.testcase b/src/spatialite/test/sql_stmt_tests/geomtype1.testcase deleted file mode 100644 index 747454b..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype1.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype1 - POINT -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("POINT(-71.1043443253471 42.315067601582900)") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -POINT -XY \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype10.testcase b/src/spatialite/test/sql_stmt_tests/geomtype10.testcase deleted file mode 100644 index 51569e5..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype10.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - LINESTRING ZM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("LINESTRINGZM(4 0 4 1, 4 4 4 2, 8 4 2 3)") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -LINESTRING ZM -XYZM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype11.testcase b/src/spatialite/test/sql_stmt_tests/geomtype11.testcase deleted file mode 100644 index 1f6bb3a..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype11.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - GEOMETRYCOLLECTION -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTION(POINT(4 6),LINESTRING(4 6,7 10))") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -GEOMETRYCOLLECTION -XY \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype12.testcase b/src/spatialite/test/sql_stmt_tests/geomtype12.testcase deleted file mode 100644 index 76be6ac..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype12.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - MULTIPOINT -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOINT (10 40, 40 30, 20 20, 30 10)") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -MULTIPOINT -XY -MULTIPOINT diff --git a/src/spatialite/test/sql_stmt_tests/geomtype13.testcase b/src/spatialite/test/sql_stmt_tests/geomtype13.testcase deleted file mode 100644 index 9d6e355..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype13.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - MULTIPOLYGON -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOLYGON (((30 20, 10 40, 45 40, 30 20)),((15 5, 40 10, 10 20, 5 10, 15 5)))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -MULTIPOLYGON -XY -MULTIPOLYGON \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype14.testcase b/src/spatialite/test/sql_stmt_tests/geomtype14.testcase deleted file mode 100644 index c214893..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype14.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - MULTIPOLYGONZ -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTIPOLYGONZ(((30 20 1, 10 40 1, 45 40 1, 30 20 1)),((15 5 2, 40 10 2, 10 20 2, 5 10 2, 15 5 2)))") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -MULTIPOLYGON Z -XYZ \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype15.testcase b/src/spatialite/test/sql_stmt_tests/geomtype15.testcase deleted file mode 100644 index ead0611..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype15.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - MULTIPOLYGONM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTIPOLYGONM(((30 20 1, 10 40 1, 45 40 1, 30 20 1)),((15 5 2, 40 10 2, 10 20 2, 5 10 2, 15 5 2)))") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -MULTIPOLYGON M -XYM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype16.testcase b/src/spatialite/test/sql_stmt_tests/geomtype16.testcase deleted file mode 100644 index ec70367..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype16.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - MULTIPOLYGONZM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTIPOLYGONZM(((30 20 1 2, 10 40 1 2, 45 40 1 2, 30 20 1 2)),((15 5 2 3, 40 10 2 3, 10 20 2 3, 5 10 2 3, 15 5 2 3)))") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -MULTIPOLYGON ZM -XYZM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype17.testcase b/src/spatialite/test/sql_stmt_tests/geomtype17.testcase deleted file mode 100644 index fc9a53a..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype17.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - MULTILINESTRING -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTILINESTRING ((30 20, 10 40, 45 40, 30 20),(15 5, 40 10, 10 20, 5 10, 15 5))") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -MULTILINESTRING -XY \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype18.testcase b/src/spatialite/test/sql_stmt_tests/geomtype18.testcase deleted file mode 100644 index a972d9f..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype18.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - MULTILINESTRINGZ -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTILINESTRINGZ((30 20 1, 10 40 1, 45 40 1, 30 20 1),(15 5 2, 40 10 2, 10 20 2, 5 10 2, 15 5 2))") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -MULTILINESTRING Z -XYZ \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype19.testcase b/src/spatialite/test/sql_stmt_tests/geomtype19.testcase deleted file mode 100644 index 9229034..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype19.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - MULTILINESTRINGZM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTILINESTRINGZM((30 20 1 2, 10 40 1 2, 45 40 1 2, 30 20 1 2),(15 5 2 3, 40 10 2 3, 10 20 2 3, 5 10 2 3, 15 5 2 3))") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -MULTILINESTRING ZM -XYZM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype2.testcase b/src/spatialite/test/sql_stmt_tests/geomtype2.testcase deleted file mode 100644 index c8e00a8..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype2.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype2 - POINTZ -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("POINTZ(-71.1043443253471 42.315067601582900 26.2)") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -POINT Z -XYZ \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype20.testcase b/src/spatialite/test/sql_stmt_tests/geomtype20.testcase deleted file mode 100644 index 30cc09e..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype20.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - MULTILINESTRINGM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTILINESTRINGM((30 20 1, 10 40 1, 45 40 1, 30 20 1),(15 5 2, 40 10 2, 10 20 2, 5 10 2, 15 5 2))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -MULTILINESTRING M -XYM -MULTILINESTRING \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype21.testcase b/src/spatialite/test/sql_stmt_tests/geomtype21.testcase deleted file mode 100644 index b0651dc..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype21.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - POLYGON -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("POLYGON ((30 20, 10 40, 45 40, 30 20),(15 5, 40 10, 10 20, 5 10, 15 5))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -POLYGON -XY -POLYGON diff --git a/src/spatialite/test/sql_stmt_tests/geomtype22.testcase b/src/spatialite/test/sql_stmt_tests/geomtype22.testcase deleted file mode 100644 index e782cec..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype22.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - POLYGONZ -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("POLYGONZ((30 20 1, 10 40 1, 45 40 1, 30 20 1),(15 5 2, 40 10 2, 10 20 2, 5 10 2, 15 5 2))") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -POLYGON Z -XYZ \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype23.testcase b/src/spatialite/test/sql_stmt_tests/geomtype23.testcase deleted file mode 100644 index a2ce734..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype23.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - POLYGONM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("POLYGONM((30 20 1, 10 40 1, 45 40 1, 30 20 1),(15 5 2, 40 10 2, 10 20 2, 5 10 2, 15 5 2))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -POLYGON M -XYM -POLYGON diff --git a/src/spatialite/test/sql_stmt_tests/geomtype24.testcase b/src/spatialite/test/sql_stmt_tests/geomtype24.testcase deleted file mode 100644 index a142b2f..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype24.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - POLYGONZM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("POLYGONZM((30 20 1 2, 10 40 1 2, 45 40 1 2, 30 20 1 2),(15 5 2 3, 40 10 2 3, 10 20 2 3, 5 10 2 3, 15 5 2 3))") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -POLYGON ZM -XYZM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype25.testcase b/src/spatialite/test/sql_stmt_tests/geomtype25.testcase deleted file mode 100644 index d6f8874..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype25.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - MULTIPOINTZM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOINTZM(-71 42 26.2 3)") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -MULTIPOINT ZM -XYZM -MULTIPOINT diff --git a/src/spatialite/test/sql_stmt_tests/geomtype26.testcase b/src/spatialite/test/sql_stmt_tests/geomtype26.testcase deleted file mode 100644 index b4b30d6..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype26.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - MULTIPOINTZ -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTIPOINTZ(-71 42 26.2)") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -MULTIPOINT Z -XYZ \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype27.testcase b/src/spatialite/test/sql_stmt_tests/geomtype27.testcase deleted file mode 100644 index 90cab18..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype27.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - MULTIPOINTM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTIPOINTM(-71 42 26.2)") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -MULTIPOINT M -XYM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype28.testcase b/src/spatialite/test/sql_stmt_tests/geomtype28.testcase deleted file mode 100644 index 4d11150..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype28.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - MULTIPOINT -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTIPOINT(-71 42, 4 22)") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -MULTIPOINT -XY \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype29.testcase b/src/spatialite/test/sql_stmt_tests/geomtype29.testcase deleted file mode 100644 index 0454716..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype29.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONZM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(4 6 4 1), POINTZM(3 3 29 1), LINESTRINGZM(4 6 0 0,7 10 0 0))") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -GEOMETRYCOLLECTION ZM -XYZM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype3.testcase b/src/spatialite/test/sql_stmt_tests/geomtype3.testcase deleted file mode 100644 index 75ba452..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype3.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype3 - POINTZM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("POINTZM(-71.1043443253471 42.315067601582900 26.2 3)") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -POINT ZM -XYZM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype30.testcase b/src/spatialite/test/sql_stmt_tests/geomtype30.testcase deleted file mode 100644 index 8d65be3..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype30.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONZ -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(4 6 4), POINTZ(3 3 29), LINESTRINGZ(4 6 0,7 10 0))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION Z -XYZ -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype31.testcase b/src/spatialite/test/sql_stmt_tests/geomtype31.testcase deleted file mode 100644 index 2ecab79..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype31.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(POINTM(4 6 4), POINTM(3 3 29), LINESTRINGM(4 6 0,7 0 0))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION M -XYM -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype32.testcase b/src/spatialite/test/sql_stmt_tests/geomtype32.testcase deleted file mode 100644 index d71ab98..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype32.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONM only linestring -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(4 6 0,7 10 0))") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -GEOMETRYCOLLECTION M -XYM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype33.testcase b/src/spatialite/test/sql_stmt_tests/geomtype33.testcase deleted file mode 100644 index 8cc509c..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype33.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONZ only linestring -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(4 6 0, 10 0 0))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION Z -XYZ -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype34.testcase b/src/spatialite/test/sql_stmt_tests/geomtype34.testcase deleted file mode 100644 index 718cf36..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype34.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONZM only Linestring -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(4 6 0 0,7 10 0 0))") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -GEOMETRYCOLLECTION ZM -XYZM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype35.testcase b/src/spatialite/test/sql_stmt_tests/geomtype35.testcase deleted file mode 100644 index 711bd82..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype35.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - GEOMETRYCOLLECTION only linestring -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTION(LINESTRING(4 6, 10 0))") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -GEOMETRYCOLLECTION -XY \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype36.testcase b/src/spatialite/test/sql_stmt_tests/geomtype36.testcase deleted file mode 100644 index 0897680..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype36.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONZ two linestring -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(4 6 0, 10 0 0), LINESTRINGZ(2 3 0, 5 1 0))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION Z -XYZ -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype37.testcase b/src/spatialite/test/sql_stmt_tests/geomtype37.testcase deleted file mode 100644 index 1c72ea8..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype37.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONM two linestring -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(LINESTRINGM(4 6 0, 10 0 0), LINESTRINGM(2 3 0, 5 1 0))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION M -XYM -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype38.testcase b/src/spatialite/test/sql_stmt_tests/geomtype38.testcase deleted file mode 100644 index 56a0ec5..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype38.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONM - two points -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(POINTM(4 6 4), POINTM(3 3 29))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION M -XYM -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype39.testcase b/src/spatialite/test/sql_stmt_tests/geomtype39.testcase deleted file mode 100644 index b6fb06f..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype39.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONM - one point -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(POINTM(3 3 29))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION M -XYM -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype4.testcase b/src/spatialite/test/sql_stmt_tests/geomtype4.testcase deleted file mode 100644 index d40a67e..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype4.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype4 - POINTM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("POINTM(-71.1043443253471 42.315067601582900 3)") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -POINT M -XYM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype40.testcase b/src/spatialite/test/sql_stmt_tests/geomtype40.testcase deleted file mode 100644 index af18c73..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype40.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONZ - one polygon -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(POLYGONZ((4 6 0,7 10 0, 12 3 1, 4 6 0)))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION Z -XYZ -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype41.testcase b/src/spatialite/test/sql_stmt_tests/geomtype41.testcase deleted file mode 100644 index 4fa4796..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype41.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONZ - two polygons -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(POLYGONZ((4 6 0,7 10 0, 12 3 1, 4 6 0)),POLYGONZ((4 6 1,7 10 1, 12 3 2, 4 6 1)))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION Z -XYZ -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype42.testcase b/src/spatialite/test/sql_stmt_tests/geomtype42.testcase deleted file mode 100644 index b77da32..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype42.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - MULTILINESTRINGM - one line -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTILINESTRINGM((30 20 1, 10 40 1, 45 40 1, 30 20 1))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -MULTILINESTRING M -XYM -MULTILINESTRING \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype43.testcase b/src/spatialite/test/sql_stmt_tests/geomtype43.testcase deleted file mode 100644 index 9aac294..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype43.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - MULTIPOLYGONZM - one polygon -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOLYGONZM(((30 20 1 2, 10 40 1 2, 45 40 1 2, 30 20 1 2)))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -MULTIPOLYGON ZM -XYZM -MULTIPOLYGON \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype44.testcase b/src/spatialite/test/sql_stmt_tests/geomtype44.testcase deleted file mode 100644 index 114d995..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype44.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONZ - linestring and polygon -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(LINESTRINGZ(4 6 0,7 10 0, 12 3 1),POLYGONZ((4 6 1,7 10 1, 12 3 2, 4 6 1)))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION Z -XYZ -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype45.testcase b/src/spatialite/test/sql_stmt_tests/geomtype45.testcase deleted file mode 100644 index d8a7bb0..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype45.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONZ - point and polygon -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(4 6 0),POLYGONZ((4 6 1,7 10 1, 12 3 2, 4 6 1)))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION Z -XYZ -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype46.testcase b/src/spatialite/test/sql_stmt_tests/geomtype46.testcase deleted file mode 100644 index 1df4fff..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype46.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONM - point and polygon -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(POINTM(4 6 0),POLYGONM((4 6 1,7 10 1, 12 3 2, 4 6 1)))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION M -XYM -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype47.testcase b/src/spatialite/test/sql_stmt_tests/geomtype47.testcase deleted file mode 100644 index 885b87f..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype47.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - MULTIPOLYGONZ - one polygon -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOLYGONZ(((30 20 1, 10 40 1, 45 40 1, 30 20 1)))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -MULTIPOLYGON Z -XYZ -MULTIPOLYGON \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype48.testcase b/src/spatialite/test/sql_stmt_tests/geomtype48.testcase deleted file mode 100644 index 9151c28..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype48.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - MULTIPOLYGONM - one polygon -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOLYGONM(((30 20 1, 10 40 1, 45 40 1, 30 20 1)))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -MULTIPOLYGON M -XYM -MULTIPOLYGON \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype49.testcase b/src/spatialite/test/sql_stmt_tests/geomtype49.testcase deleted file mode 100644 index a925176..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype49.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONM - one POLYGONM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(POLYGONM((30 20 1, 10 40 1, 45 40 1, 30 20 1)))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION M -XYM -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype5.testcase b/src/spatialite/test/sql_stmt_tests/geomtype5.testcase deleted file mode 100644 index 0197691..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype5.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype5 - zeroblob -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT zeroblob(20) as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -(NULL) -(NULL) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype50.testcase b/src/spatialite/test/sql_stmt_tests/geomtype50.testcase deleted file mode 100644 index 4a26351..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype50.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONZM - one POLYGONZM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((30 20 1 2, 10 40 1 2, 45 40 1 2, 30 20 1 2)))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION ZM -XYZM -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype51.testcase b/src/spatialite/test/sql_stmt_tests/geomtype51.testcase deleted file mode 100644 index 17df0c3..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype51.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTION - one POLYGON -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTION(POLYGON((30 20, 10 40, 45 40, 30 20)))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION -XY -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype52.testcase b/src/spatialite/test/sql_stmt_tests/geomtype52.testcase deleted file mode 100644 index 1e25f9a..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype52.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONZM - two linestring -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(LINESTRINGZM(4 6 0 1,7 10 0 1, 12 3 1 1),LINESTRINGZM(1 2 3 4,5 4 3 4, 12 3 2 1))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION ZM -XYZM -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype53.testcase b/src/spatialite/test/sql_stmt_tests/geomtype53.testcase deleted file mode 100644 index ec089f3..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype53.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTION - two linestring -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTION(LINESTRING(4 6,7 10, 12 3),LINESTRING(1 2, 3 4))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION -XY -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype54.testcase b/src/spatialite/test/sql_stmt_tests/geomtype54.testcase deleted file mode 100644 index 7d9e12d..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype54.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONM - two polygons -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONM(POLYGONM((4 6 0,7 10 0, 12 3 1, 4 6 0)),POLYGONM((4 6 1,7 10 1, 12 3 2, 4 6 1)))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION M -XYM -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype55.testcase b/src/spatialite/test/sql_stmt_tests/geomtype55.testcase deleted file mode 100644 index 6807d5e..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype55.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTION ZM - two polygons -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(POLYGONZM((4 6 0 1,7 10 0 1, 12 3 1 1, 4 6 0 1)),POLYGONZM((4 6 1 2,7 10 1 2, 12 3 2 2, 4 6 1 2)))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION ZM -XYZM -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype56.testcase b/src/spatialite/test/sql_stmt_tests/geomtype56.testcase deleted file mode 100644 index 1b75bbd..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype56.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTION - two polygons -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTION(POLYGON((4 6,7 10, 12 3, 4 6)),POLYGON((4 6,7 10, 12 3, 4 6)))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION -XY -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype57.testcase b/src/spatialite/test/sql_stmt_tests/geomtype57.testcase deleted file mode 100644 index 1f16fdd..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype57.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONZ - two points -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(4 6 4), POINTZ(3 3 29))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION Z -XYZ -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype58.testcase b/src/spatialite/test/sql_stmt_tests/geomtype58.testcase deleted file mode 100644 index 5a672f8..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype58.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONZM - two points -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(4 6 4 1), POINTZM(3 3 29 2))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION ZM -XYZM -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype59.testcase b/src/spatialite/test/sql_stmt_tests/geomtype59.testcase deleted file mode 100644 index 269cff0..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype59.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - MULTIPOINT - one point -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("MULTIPOINT(-71 42)") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -MULTIPOINT -XY \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype6.testcase b/src/spatialite/test/sql_stmt_tests/geomtype6.testcase deleted file mode 100644 index d0ccb52..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype6.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype6 - LINESTRING -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("LINESTRING(4 0, 4 4, 8 4)") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -LINESTRING -XY \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype60.testcase b/src/spatialite/test/sql_stmt_tests/geomtype60.testcase deleted file mode 100644 index 630fdec..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype60.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONZ - one point -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(3 3 29))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION Z -XYZ -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype61.testcase b/src/spatialite/test/sql_stmt_tests/geomtype61.testcase deleted file mode 100644 index da09c4f..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype61.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTIONZM - one point -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTIONZM(POINTZM(3 3 29 2))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION ZM -XYZM -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype62.testcase b/src/spatialite/test/sql_stmt_tests/geomtype62.testcase deleted file mode 100644 index 554c1d4..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype62.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTION - one point -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTION(POINT(3 2))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION -XY -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype63.testcase b/src/spatialite/test/sql_stmt_tests/geomtype63.testcase deleted file mode 100644 index d885f3b..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype63.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - GEOMETRYCOLLECTION - two points -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("GEOMETRYCOLLECTION(POINT(3 2), POINT(1 4))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -GEOMETRYCOLLECTION -XY -GEOMETRYCOLLECTION \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype64.testcase b/src/spatialite/test/sql_stmt_tests/geomtype64.testcase deleted file mode 100644 index 06e9437..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype64.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - MULTIPOINTZ -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOINTZ (10 40 10, 40 30 15, 20 20 20, 30 10 9)") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -MULTIPOINT Z -XYZ -MULTIPOINT diff --git a/src/spatialite/test/sql_stmt_tests/geomtype65.testcase b/src/spatialite/test/sql_stmt_tests/geomtype65.testcase deleted file mode 100644 index 50d8f26..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype65.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - MULTIPOINTM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOINTM (10 40 10, 40 30 15, 20 20 20, 30 10 9)") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -MULTIPOINT M -XYM -MULTIPOINT diff --git a/src/spatialite/test/sql_stmt_tests/geomtype66.testcase b/src/spatialite/test/sql_stmt_tests/geomtype66.testcase deleted file mode 100644 index 683b5fe..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype66.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - MULTIPOINTZM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTIPOINTZM (10 40 10 1, 40 30 15 2, 20 20 20 2, 30 10 9 1)") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -MULTIPOINT ZM -XYZM -MULTIPOINT diff --git a/src/spatialite/test/sql_stmt_tests/geomtype67.testcase b/src/spatialite/test/sql_stmt_tests/geomtype67.testcase deleted file mode 100644 index 40abe33..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype67.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - MULTILINESTRINGZ - one line -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTILINESTRINGZ((30 20 1, 10 40 1, 45 40 1, 30 20 1))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -MULTILINESTRING Z -XYZ -MULTILINESTRING \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype68.testcase b/src/spatialite/test/sql_stmt_tests/geomtype68.testcase deleted file mode 100644 index 4894a00..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype68.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - MULTILINESTRINGZM - one line -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTILINESTRINGZM((30 20 1 2, 10 40 1 2, 45 40 1 2, 30 20 1 2))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -MULTILINESTRING ZM -XYZM -MULTILINESTRING \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype69.testcase b/src/spatialite/test/sql_stmt_tests/geomtype69.testcase deleted file mode 100644 index 2631c0d..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype69.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - MULTILINESTRING - one line -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT GeomFromText("MULTILINESTRING((30 20, 10 40, 45 40, 30 20))") as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -MULTILINESTRING -XY -MULTILINESTRING \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype7.testcase b/src/spatialite/test/sql_stmt_tests/geomtype7.testcase deleted file mode 100644 index 14e25a1..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype7.testcase +++ /dev/null @@ -1,11 +0,0 @@ -geometrytype - 3 + 2 -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom), GeometryAliasType(geom) from (SELECT 3 + 2 as geom) dummy; -1 # rows (not including the header row) -3 # columns -GeometryType(geom) -CoordDimension(geom) -GeometryAliasType(geom) -(NULL) -(NULL) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype8.testcase b/src/spatialite/test/sql_stmt_tests/geomtype8.testcase deleted file mode 100644 index 1024539..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype8.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - LINESTRINGZ -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("LINESTRINGZ(4 0 1, 4 4 2, 8 4 3)") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -LINESTRING Z -XYZ \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/geomtype9.testcase b/src/spatialite/test/sql_stmt_tests/geomtype9.testcase deleted file mode 100644 index 564ff88..0000000 --- a/src/spatialite/test/sql_stmt_tests/geomtype9.testcase +++ /dev/null @@ -1,9 +0,0 @@ -geometrytype - LINESTRINGM -:memory: #use in-memory database -SELECT GeometryType(geom), CoordDimension(geom) from (SELECT GeomFromText("LINESTRINGM(4 0 1, 4 4 2, 8 4 3)") as geom) dummy; -1 # rows (not including the header row) -2 # columns -GeometryType(geom) -CoordDimension(geom) -LINESTRING M -XYM \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/gml1.testcase b/src/spatialite/test/sql_stmt_tests/gml1.testcase deleted file mode 100644 index f94e1d8..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GML MultiPoint Z: excessive precision -:memory: #use in-memory database -SELECT AsGML(3, GeomFromText("MULTIPOINTZ(1 2 100, 3 4 100)", 4326), 44); -1 # rows (not including the header row) -1 # columns -AsGML(3, GeomFromText("MULTIPOINTZ(1 2 100, 3 4 100)", 4326), 44) -1 2 1003 4 100:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/gml10.testcase b/src/spatialite/test/sql_stmt_tests/gml10.testcase deleted file mode 100644 index 54f1d6a..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml10.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GML Polygon Z: no SRID -:memory: #use in-memory database -SELECT AsGML(3, GeomFromText("POLYGONZ((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100), (15 15 80, 16 15 90, 16 16 95, 15 16 90, 15 15 80))")); -1 # rows (not including the header row) -1 # columns -AsGML(3, GeomFromText("POLYGONZ((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100), (15 15 80, 16 15 90, 16 16 95, 15 16 90, 15 15 80))")) -10 10 100 20 10 101 20 20 102 10 20 103 10 10 10015 15 80 16 15 90 16 16 95 15 16 90 15 15 80:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/gml11.testcase b/src/spatialite/test/sql_stmt_tests/gml11.testcase deleted file mode 100644 index a3070bd..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml11.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GML Polygon: no SRID -:memory: #use in-memory database -SELECT AsGML(3, GeomFromText("POLYGON((10 10, 20 10, 20 20, 10 20, 10 10), (15 15, 16 15, 16 16, 15 16, 15 15))")); -1 # rows (not including the header row) -1 # columns -AsGML(3, GeomFromText("POLYGON((10 10, 20 10, 20 20, 10 20, 10 10), (15 15, 16 15, 16 16, 15 16, 15 15))")) -10 10 20 10 20 20 10 20 10 1015 15 16 15 16 16 15 16 15 15:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/gml12.testcase b/src/spatialite/test/sql_stmt_tests/gml12.testcase deleted file mode 100644 index f721b77..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml12.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GML MultiPolygon Z: no SRID -:memory: #use in-memory database -SELECT AsGML(3, GeomFromText("MULTIPOLYGONZ(((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100)), ((85 85 80, 90 85 90, 90 90 95, 85 90 90, 85 85 80)))")); -1 # rows (not including the header row) -1 # columns -AsGML(3, GeomFromText("MULTIPOLYGONZ(((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100)), ((85 85 80, 90 85 90, 90 90 95, 85 90 90, 85 85 80)))")) -10 10 100 20 10 101 20 20 102 10 20 103 10 10 10085 85 80 90 85 90 90 90 95 85 90 90 85 85 80:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/gml13.testcase b/src/spatialite/test/sql_stmt_tests/gml13.testcase deleted file mode 100644 index 4147086..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml13.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GML MultiPolygon Z -:memory: #use in-memory database -SELECT AsGML(3, GeomFromText("MULTIPOLYGONZ(((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100)), ((85 85 80, 90 85 90, 90 90 95, 85 90 90, 85 85 80)))", 4326)); -1 # rows (not including the header row) -1 # columns -AsGML(3, GeomFromText("MULTIPOLYGONZ(((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100)), ((85 85 80, 90 85 90, 90 90 95, 85 90 90, 85 85 80)))", 4326)) -10 10 100 20 10 101 20 20 102 10 20 103 10 10 10085 85 80 90 85 90 90 90 95 85 90 90 85 85 80:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/gml14.testcase b/src/spatialite/test/sql_stmt_tests/gml14.testcase deleted file mode 100644 index 06f5a7c..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml14.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GML MultiPolygon: no SRID -:memory: #use in-memory database -SELECT AsGML(3, GeomFromText("MULTIPOLYGON(((10 10, 20 10, 20 20, 10 20, 10 10)), ((85 85, 90 85, 90 90, 85 90, 85 85)))")); -1 # rows (not including the header row) -1 # columns -AsGML(3, GeomFromText("MULTIPOLYGON(((10 10, 20 10, 20 20, 10 20, 10 10)), ((85 85, 90 85, 90 90, 85 90, 85 85)))")) -10 10 20 10 20 20 10 20 10 1085 85 90 85 90 90 85 90 85 85:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/gml15.testcase b/src/spatialite/test/sql_stmt_tests/gml15.testcase deleted file mode 100644 index 67db9b3..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml15.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GMLv2 MultiPolygon: no SRID -:memory: #use in-memory database -SELECT AsGML(GeomFromText("MULTIPOLYGON(((10 10, 20 10, 20 20, 10 20, 10 10)), ((85 85, 90 85, 90 90, 85 90, 85 85)))")); -1 # rows (not including the header row) -1 # columns -AsGML(GeomFromText("MULTIPOLYGON(((10 10, 20 10, 20 20, 10 20, 10 10)), ((85 85, 90 85, 90 90, 85 90, 85 85)))")) -10,10 20,10 20,20 10,20 10,1085,85 90,85 90,90 85,90 85,85:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/gml16.testcase b/src/spatialite/test/sql_stmt_tests/gml16.testcase deleted file mode 100644 index 2e2847f..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml16.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GML GeometryCollection (Point, Polygon): no SRID -:memory: #use in-memory database -SELECT AsGML(3, GeomFromText("GEOMETRYCOLLECTION(POINT(4 8), POLYGON((10 10, 20 10, 20 20, 10 20, 10 10)))")); -1 # rows (not including the header row) -1 # columns -AsGML(3, GeomFromText("GEOMETRYCOLLECTION(POINT(4 8), POLYGON((10 10, 20 10, 20 20, 10 20, 10 10)))")) -4 810 10 20 10 20 20 10 20 10 10:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/gml2.testcase b/src/spatialite/test/sql_stmt_tests/gml2.testcase deleted file mode 100644 index 7061ccd..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GML MultiPoint Z: no Srid -:memory: #use in-memory database -SELECT AsGML(3, GeomFromText("MULTIPOINTZ(1 2 100, 3 4 101)")); -1 # rows (not including the header row) -1 # columns -AsGML(3, GeomFromText("MULTIPOINTZ(1 2 100, 3 4 101)")) -1 2 1003 4 101:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/gml3.testcase b/src/spatialite/test/sql_stmt_tests/gml3.testcase deleted file mode 100644 index def1140..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GML MultiPoint: excessive precision -:memory: #use in-memory database -SELECT AsGML(3, GeomFromText("MULTIPOINT(1 2, 3 4)", 4326), 44); -1 # rows (not including the header row) -1 # columns -AsGML(3, GeomFromText("MULTIPOINT(1 2, 3 4)", 4326), 44) -1 23 4:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/gml4.testcase b/src/spatialite/test/sql_stmt_tests/gml4.testcase deleted file mode 100644 index 4e4b176..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GML Linestring Z: no SRID -:memory: #use in-memory database -SELECT AsGML(3, GeomFromText("LINESTRINGZ(1 2 100, 3 4 101)")); -1 # rows (not including the header row) -1 # columns -AsGML(3, GeomFromText("LINESTRINGZ(1 2 100, 3 4 101)")) -1 2 100 3 4 101:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/gml5.testcase b/src/spatialite/test/sql_stmt_tests/gml5.testcase deleted file mode 100644 index 0730a83..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GMLv2 Linestring Z: no SRID -:memory: #use in-memory database -SELECT AsGML(GeomFromText("LINESTRINGZ(1 2 100, 3 4 101)")); -1 # rows (not including the header row) -1 # columns -AsGML(GeomFromText("LINESTRINGZ(1 2 100, 3 4 101)")) -1,2,100 3,4,101:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/gml6.testcase b/src/spatialite/test/sql_stmt_tests/gml6.testcase deleted file mode 100644 index 76fdd35..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GML MultiLinestring Z -:memory: #use in-memory database -SELECT AsGML(3, GeomFromText("MULTILINESTRINGZ((1 2 100, 3 4 101), (5 5 88, 6 6 99))", 4326)); -1 # rows (not including the header row) -1 # columns -AsGML(3, GeomFromText("MULTILINESTRINGZ((1 2 100, 3 4 101), (5 5 88, 6 6 99))", 4326)) -1 2 100 3 4 1015 5 88 6 6 99:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/gml7.testcase b/src/spatialite/test/sql_stmt_tests/gml7.testcase deleted file mode 100644 index a7ac89c..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml7.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GMLv2 MultiLinestring Z - no SRID -:memory: #use in-memory database -SELECT AsGML(GeomFromText("MULTILINESTRINGZ((1 2 100, 3 4 101), (5 5 88, 6 6 99))")); -1 # rows (not including the header row) -1 # columns -AsGML(GeomFromText("MULTILINESTRINGZ((1 2 100, 3 4 101), (5 5 88, 6 6 99))")) -1,2,100 3,4,1015,5,88 6,6,99:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/gml8.testcase b/src/spatialite/test/sql_stmt_tests/gml8.testcase deleted file mode 100644 index 185d2f3..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml8.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GML MultiLinestring - no SRID -:memory: #use in-memory database -SELECT AsGML(3, GeomFromText("MULTILINESTRING((1 2, 3 4), (5 5, 6 6))")); -1 # rows (not including the header row) -1 # columns -AsGML(3, GeomFromText("MULTILINESTRING((1 2, 3 4), (5 5, 6 6))")) -1 2 3 45 5 6 6:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/gml9.testcase b/src/spatialite/test/sql_stmt_tests/gml9.testcase deleted file mode 100644 index e3ca6fd..0000000 --- a/src/spatialite/test/sql_stmt_tests/gml9.testcase +++ /dev/null @@ -1,8 +0,0 @@ -GML GeometryCollection Z (Point, Linestring) - no SRID -:memory: #use in-memory database -SELECT AsGML(3, GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(3 8 100), LINESTRINGZ(1 2 100, 3 4 101))")); -1 # rows (not including the header row) -1 # columns -AsGML(3, GeomFromText("GEOMETRYCOLLECTIONZ(POINTZ(3 8 100), LINESTRINGZ(1 2 100, 3 4 101))")) -3 8 1001 2 100 3 4 101:0 # trailing ":0" required to avoid truncation !!! - diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-badblob.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-badblob.testcase deleted file mode 100644 index eca5f21..0000000 --- a/src/spatialite/test/sql_stmt_tests/greatcircle-badblob.testcase +++ /dev/null @@ -1,7 +0,0 @@ -great circle length - bad blob -:memory: -SELECT GreatCircleLength(zeroblob(34)); -1 # rows -1 # column -GreatCircleLength(zeroblob(34)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-poly.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-poly.testcase deleted file mode 100644 index 6126553..0000000 --- a/src/spatialite/test/sql_stmt_tests/greatcircle-poly.testcase +++ /dev/null @@ -1,7 +0,0 @@ -great circle length polygon -:memory: -SELECT GreatCircleLength(GeomFromText("POLYGON((0 0, 1 0, 0 0, 0 0))", 4326)); -1 # rows -1 # column -GreatCircleLength(GeomFromText("POLYGON((0 0, 1 0, 0 0, 0 0))", 4326)) -222390.15:9 diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-poly2.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-poly2.testcase deleted file mode 100644 index 3f05465..0000000 --- a/src/spatialite/test/sql_stmt_tests/greatcircle-poly2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -great circle length polygon -:memory: -SELECT GreatCircleLength(GeomFromText("POLYGON((0 0, 1 0, 0 0, 0 0),(0 0, 0 0, 0 0, 0 0))", 4326)); -1 # rows -1 # column -GreatCircleLength(GeomFromText("POLYGON((0 0, 1 0, 0 0, 0 0),(0 0, 0 0, 0 0, 0 0))", 4326)) -222390.15:9 diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-poly3.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-poly3.testcase deleted file mode 100644 index 57898cd..0000000 --- a/src/spatialite/test/sql_stmt_tests/greatcircle-poly3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -great circle length polygonZ -:memory: -SELECT GreatCircleLength(GeomFromText("POLYGONZ((0 0 2, 1 0 3, 0 0 2, 0 0 2))", 4326)); -1 # rows -1 # column -GreatCircleLength(GeomFromText("POLYGONZ((0 0 2, 1 0 3, 0 0 2, 0 0 2))", 4326)) -222390.15:9 diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-poly4.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-poly4.testcase deleted file mode 100644 index 82c5264..0000000 --- a/src/spatialite/test/sql_stmt_tests/greatcircle-poly4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -great circle length polygonM -:memory: -SELECT GreatCircleLength(GeomFromText("POLYGONM((0 0 2, 1 0 3, 0 0 2, 0 0 2))", 4326)); -1 # rows -1 # column -GreatCircleLength(GeomFromText("POLYGONM((0 0 2, 1 0 3, 0 0 2, 0 0 2))", 4326)) -222390.15:9 diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-poly5.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-poly5.testcase deleted file mode 100644 index c187a5c..0000000 --- a/src/spatialite/test/sql_stmt_tests/greatcircle-poly5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -great circle length polygonZM -:memory: -SELECT GreatCircleLength(GeomFromText("POLYGONZM((0 0 2 3, 1 0 3 4, 0 0 2 3, 0 0 2 3))", 4326)); -1 # rows -1 # column -GreatCircleLength(GeomFromText("POLYGONZM((0 0 2 3, 1 0 3 4, 0 0 2 3, 0 0 2 3))", 4326)) -222390.15:9 diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-poly6.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-poly6.testcase deleted file mode 100644 index 0cdb477..0000000 --- a/src/spatialite/test/sql_stmt_tests/greatcircle-poly6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -great circle length linestringzm -:memory: -SELECT GreatCircleLength(GeomFromText("LINESTRINGZM(0 0 2 3, 0 1 3 4, 0 0 2 3)", 4326)); -1 # rows -1 # column -GreatCircleLength(GeomFromText("LINESTRINGZM(0 0 2 3, 0 1 3 4, 0 0 2 3)", 4326)) -222390.15:9 diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-poly7.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-poly7.testcase deleted file mode 100644 index 613065d..0000000 --- a/src/spatialite/test/sql_stmt_tests/greatcircle-poly7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -great circle length polygonZM, Airy -:memory: -SELECT GreatCircleLength(GeomFromText("POLYGONZM((0 0 2 3, 1 0 3 4, 0 0 2 3, 0 0 2 3))", 4188)); -1 # rows -1 # column -GreatCircleLength(GeomFromText("POLYGONZM((0 0 2 3, 1 0 3 4, 0 0 2 3, 0 0 2 3))", 4188)) -222371.04:9 diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle-text.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle-text.testcase deleted file mode 100644 index 471f0f8..0000000 --- a/src/spatialite/test/sql_stmt_tests/greatcircle-text.testcase +++ /dev/null @@ -1,7 +0,0 @@ -great circle length - text -:memory: -SELECT GreatCircleLength("Hello"); -1 # rows -1 # column -GreatCircleLength("Hello") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/greatcircle.testcase b/src/spatialite/test/sql_stmt_tests/greatcircle.testcase deleted file mode 100644 index d0790c4..0000000 --- a/src/spatialite/test/sql_stmt_tests/greatcircle.testcase +++ /dev/null @@ -1,7 +0,0 @@ -great circle length -:memory: -SELECT GreatCircleLength(GeomFromText("LINESTRING(0 0, 1 0)", 4326)); -1 # rows -1 # column -GreatCircleLength(GeomFromText("LINESTRING(0 0, 1 0)", 4326)) -111195.07:9 diff --git a/src/spatialite/test/sql_stmt_tests/in_m.testcase b/src/spatialite/test/sql_stmt_tests/in_m.testcase deleted file mode 100644 index 71b225c..0000000 --- a/src/spatialite/test/sql_stmt_tests/in_m.testcase +++ /dev/null @@ -1,7 +0,0 @@ -inches to metres -:memory: #use in-memory database -SELECT CvtFromIn(100); -1 # rows (not including the header row) -1 # columns -CvtFromIn(100); -2.54 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/ind_ch_m.testcase b/src/spatialite/test/sql_stmt_tests/ind_ch_m.testcase deleted file mode 100644 index 40cdca7..0000000 --- a/src/spatialite/test/sql_stmt_tests/ind_ch_m.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Indian chains to metres -:memory: #use in-memory database -SELECT CvtFromIndCh(100); -1 # rows (not including the header row) -1 # columns -CvtFromIndCh(100); -2011.6695:9 diff --git a/src/spatialite/test/sql_stmt_tests/ind_ft_m.testcase b/src/spatialite/test/sql_stmt_tests/ind_ft_m.testcase deleted file mode 100644 index 66888f5..0000000 --- a/src/spatialite/test/sql_stmt_tests/ind_ft_m.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ind_feet to metres -:memory: #use in-memory database -SELECT CvtFromIndFt(10); -1 # rows (not including the header row) -1 # columns -CvtFromIndFt(10); -3.047984:8 diff --git a/src/spatialite/test/sql_stmt_tests/ind_yd_m.testcase b/src/spatialite/test/sql_stmt_tests/ind_yd_m.testcase deleted file mode 100644 index b7bb9c0..0000000 --- a/src/spatialite/test/sql_stmt_tests/ind_yd_m.testcase +++ /dev/null @@ -1,7 +0,0 @@ -Indian yards to metres -:memory: #use in-memory database -SELECT CvtFromIndYd(10); -1 # rows (not including the header row) -1 # columns -CvtFromIndYd(10); -9.14395:7 diff --git a/src/spatialite/test/sql_stmt_tests/is3d1.testcase b/src/spatialite/test/sql_stmt_tests/is3d1.testcase deleted file mode 100644 index c3293d4..0000000 --- a/src/spatialite/test/sql_stmt_tests/is3d1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Is3D- non-blob -:memory: #use in-memory database -SELECT ST_Is3D(3) -1 # rows (not including the header row) -1 # columns -ST_Is3D(3) --1 - diff --git a/src/spatialite/test/sql_stmt_tests/is3d2.testcase b/src/spatialite/test/sql_stmt_tests/is3d2.testcase deleted file mode 100644 index 7183153..0000000 --- a/src/spatialite/test/sql_stmt_tests/is3d2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Is3D- bad blob -:memory: #use in-memory database -SELECT ST_Is3D(zeroblob(48)) -1 # rows (not including the header row) -1 # columns -ST_Is3D(zeroblob(48)) --1 - diff --git a/src/spatialite/test/sql_stmt_tests/is3d3.testcase b/src/spatialite/test/sql_stmt_tests/is3d3.testcase deleted file mode 100644 index 639ebcd..0000000 --- a/src/spatialite/test/sql_stmt_tests/is3d3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Is3D- Point XY -:memory: #use in-memory database -SELECT ST_Is3D(GeomFromText('POINT(1 2)')); -1 # rows (not including the header row) -1 # columns -ST_Is3D(GeomFromText('POINT(1 2)')) -0 - diff --git a/src/spatialite/test/sql_stmt_tests/is3d4.testcase b/src/spatialite/test/sql_stmt_tests/is3d4.testcase deleted file mode 100644 index 153fe40..0000000 --- a/src/spatialite/test/sql_stmt_tests/is3d4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Is3D- Point XYZ -:memory: #use in-memory database -SELECT ST_Is3D(GeomFromText('POINTZ(1 2 100)')); -1 # rows (not including the header row) -1 # columns -ST_Is3D(GeomFromText('POINTZ(1 2 100)')) -1 - diff --git a/src/spatialite/test/sql_stmt_tests/is3d5.testcase b/src/spatialite/test/sql_stmt_tests/is3d5.testcase deleted file mode 100644 index dd47fa5..0000000 --- a/src/spatialite/test/sql_stmt_tests/is3d5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Is3D- Point XYM -:memory: #use in-memory database -SELECT ST_Is3D(GeomFromText('POINTM(1 2 10)')); -1 # rows (not including the header row) -1 # columns -ST_Is3D(GeomFromText('POINTM(1 2 10)')) -0 - diff --git a/src/spatialite/test/sql_stmt_tests/is3d6.testcase b/src/spatialite/test/sql_stmt_tests/is3d6.testcase deleted file mode 100644 index 0533810..0000000 --- a/src/spatialite/test/sql_stmt_tests/is3d6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -Is3D- Point XYZM -:memory: #use in-memory database -SELECT ST_Is3D(GeomFromText('POINTZM(1 2 100 10)')); -1 # rows (not including the header row) -1 # columns -ST_Is3D(GeomFromText('POINTZM(1 2 100 10)')) -1 - diff --git a/src/spatialite/test/sql_stmt_tests/isXblob5.testcase b/src/spatialite/test/sql_stmt_tests/isXblob5.testcase deleted file mode 100644 index 9669a1f..0000000 --- a/src/spatialite/test/sql_stmt_tests/isXblob5.testcase +++ /dev/null @@ -1,27 +0,0 @@ -isXblob - geom -:memory: #use in-memory database -SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT GeomFromText("POINT(1 3)") as blob) dummy -1 # rows (not including the header row) -11 # columns -Hex(blob) -IsPngBlob(blob) -IsGifBlob(blob) -IsGeometryBlob(blob) -IsZipBlob(blob) -IsPdfBlob(blob) -IsTiffBlob(blob) -IsJpegBlob(blob) -IsExifBlob(blob) -IsExifGpsBlob(blob) -IsWebpBlob(blob) -000100000000000000000000F03F0000000000000840000000000000F03F00000000000008407C01000000000000000000F03F0000000000000840FE -0 -0 -1 -0 -0 -0 -0 -0 -0 -0 diff --git a/src/spatialite/test/sql_stmt_tests/isXblob6.testcase b/src/spatialite/test/sql_stmt_tests/isXblob6.testcase deleted file mode 100644 index c730fd7..0000000 --- a/src/spatialite/test/sql_stmt_tests/isXblob6.testcase +++ /dev/null @@ -1,27 +0,0 @@ -isXblob - zeroblob, 1 byte -:memory: #use in-memory database -SELECT Hex(blob), IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT zeroblob(1) as blob) dummy -1 # rows (not including the header row) -11 # columns -Hex(blob) -IsPngBlob(blob) -IsGifBlob(blob) -IsGeometryBlob(blob) -IsZipBlob(blob) -IsPdfBlob(blob) -IsTiffBlob(blob) -IsJpegBlob(blob) -IsExifBlob(blob) -IsExifGpsBlob(blob) -IsWebpBlob(blob) -00 -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 diff --git a/src/spatialite/test/sql_stmt_tests/isXblob7.testcase b/src/spatialite/test/sql_stmt_tests/isXblob7.testcase deleted file mode 100644 index b4490e0..0000000 --- a/src/spatialite/test/sql_stmt_tests/isXblob7.testcase +++ /dev/null @@ -1,25 +0,0 @@ -isXblob - zeroblob, 0 bytes -:memory: #use in-memory database -SELECT IsPngBlob(blob), IsGifBlob(blob), IsGeometryBlob(blob), IsZipBlob(blob), IsPdfBlob(blob), IsTiffBlob(blob), IsJpegBlob(blob), IsExifBlob(blob), IsExifGpsBlob(blob), IsWebpBlob(blob) FROM (SELECT zeroblob(0) as blob) dummy -1 # rows (not including the header row) -10 # columns -IsPngBlob(blob) -IsGifBlob(blob) -IsGeometryBlob(blob) -IsZipBlob(blob) -IsPdfBlob(blob) -IsTiffBlob(blob) -IsJpegBlob(blob) -IsExifBlob(blob) -IsExifGpsBlob(blob) -IsWebpBlob(blob) -0 -0 -0 -0 -0 -0 -0 -0 -0 -0 diff --git a/src/spatialite/test/sql_stmt_tests/isempty.testcase b/src/spatialite/test/sql_stmt_tests/isempty.testcase deleted file mode 100644 index f79494d..0000000 --- a/src/spatialite/test/sql_stmt_tests/isempty.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isempty -:memory: #use in-memory database -SELECT IsEmpty(GeomFromText("Point(1 2)", 4326)) -1 # rows (not including the header row) -1 # columns -IsEmpty(GeomFromText("Point(1 2)", 4326)) -0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/isempty2.testcase b/src/spatialite/test/sql_stmt_tests/isempty2.testcase deleted file mode 100644 index 7f2b411..0000000 --- a/src/spatialite/test/sql_stmt_tests/isempty2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isempty - null -:memory: #use in-memory database -SELECT IsEmpty(null) -1 # rows (not including the header row) -1 # columns -IsEmpty(null) --1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/isempty3.testcase b/src/spatialite/test/sql_stmt_tests/isempty3.testcase deleted file mode 100644 index 7ac7314..0000000 --- a/src/spatialite/test/sql_stmt_tests/isempty3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isempty - zeroblob -:memory: #use in-memory database -SELECT IsEmpty(zeroblob(200)) -1 # rows (not including the header row) -1 # columns -IsEmpty(zeroblob(200)) --1 diff --git a/src/spatialite/test/sql_stmt_tests/isempty4.testcase b/src/spatialite/test/sql_stmt_tests/isempty4.testcase deleted file mode 100644 index 21cab8d..0000000 --- a/src/spatialite/test/sql_stmt_tests/isempty4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -isempty - text -:memory: #use in-memory database -SELECT IsEmpty("hello") -1 # rows (not including the header row) -1 # columns -IsEmpty("hello") --1 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/ismeasured1.testcase b/src/spatialite/test/sql_stmt_tests/ismeasured1.testcase deleted file mode 100644 index 3a3eca4..0000000 --- a/src/spatialite/test/sql_stmt_tests/ismeasured1.testcase +++ /dev/null @@ -1,8 +0,0 @@ -IsMeasured- non-blob -:memory: #use in-memory database -SELECT ST_IsMeasured(3) -1 # rows (not including the header row) -1 # columns -ST_IsMeasured(3) --1 - diff --git a/src/spatialite/test/sql_stmt_tests/ismeasured2.testcase b/src/spatialite/test/sql_stmt_tests/ismeasured2.testcase deleted file mode 100644 index 23a19bb..0000000 --- a/src/spatialite/test/sql_stmt_tests/ismeasured2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -IsMeasured- bad blob -:memory: #use in-memory database -SELECT ST_IsMeasured(zeroblob(48)) -1 # rows (not including the header row) -1 # columns -ST_IsMeasured(zeroblob(48)) --1 - diff --git a/src/spatialite/test/sql_stmt_tests/ismeasured3.testcase b/src/spatialite/test/sql_stmt_tests/ismeasured3.testcase deleted file mode 100644 index 1ac9cc1..0000000 --- a/src/spatialite/test/sql_stmt_tests/ismeasured3.testcase +++ /dev/null @@ -1,8 +0,0 @@ -IsMeasured- Point XY -:memory: #use in-memory database -SELECT ST_IsMeasured(GeomFromText('POINT(1 2)')); -1 # rows (not including the header row) -1 # columns -ST_IsMeasured(GeomFromText('POINT(1 2)')) -0 - diff --git a/src/spatialite/test/sql_stmt_tests/ismeasured4.testcase b/src/spatialite/test/sql_stmt_tests/ismeasured4.testcase deleted file mode 100644 index d63a45b..0000000 --- a/src/spatialite/test/sql_stmt_tests/ismeasured4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -IsMeasured- Point XYZ -:memory: #use in-memory database -SELECT ST_IsMeasured(GeomFromText('POINTZ(1 2 100)')); -1 # rows (not including the header row) -1 # columns -ST_IsMeasured(GeomFromText('POINTZ(1 2 100)')) -0 - diff --git a/src/spatialite/test/sql_stmt_tests/ismeasured5.testcase b/src/spatialite/test/sql_stmt_tests/ismeasured5.testcase deleted file mode 100644 index 021e200..0000000 --- a/src/spatialite/test/sql_stmt_tests/ismeasured5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -IsMeasured- Point XYM -:memory: #use in-memory database -SELECT ST_IsMeasured(GeomFromText('POINTM(1 2 10)')); -1 # rows (not including the header row) -1 # columns -ST_IsMeasured(GeomFromText('POINTM(1 2 10)')) -1 - diff --git a/src/spatialite/test/sql_stmt_tests/ismeasured6.testcase b/src/spatialite/test/sql_stmt_tests/ismeasured6.testcase deleted file mode 100644 index 698586d..0000000 --- a/src/spatialite/test/sql_stmt_tests/ismeasured6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -IsMeasured- Point XYZM -:memory: #use in-memory database -SELECT ST_IsMeasured(GeomFromText('POINTZM(1 2 100 10)')); -1 # rows (not including the header row) -1 # columns -ST_IsMeasured(GeomFromText('POINTZM(1 2 100 10)')) -1 - diff --git a/src/spatialite/test/sql_stmt_tests/k3b-icon.png b/src/spatialite/test/sql_stmt_tests/k3b-icon.png deleted file mode 100644 index 9e733f5ad0cfcc15234ae8b9471da4a99fc0e43c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 982 zcmV;{11bE8P)n4F}dr>&TrrJ|>;USVVa000C81ONa40|Nt_pQoOpshXdso};N99v&JS926B6 zDl083EG{7;BbS`1tD2&;xV){hw!FZ@$ji=9OjBA|Tyt}Dc6M{?=I8M6@tmizv9p}U z$ji*n(9+e{($&_esHm*0thl(ih=_@YhlsMYzPYcs*xKH~#L3Lg)AaQ9>DkSRii^F& z$&QYWm6es}=jRw09vd4WBO)m$B`z{CIXO5&K0QQ1KubzVP)ti#OiWNuPgYS;RasbG zSy*3LSYTROUtL^eUS48fU}$o3b$fh&eSCp{fQE*KiHeGhkB*R#kCc;>l$Dg0mX@2B zmzbKGo1dSdqoSv(s;#uNwYIjmxVXHzxxKl$zQV`Y!^6eK&fCYx(8tKp%goHt*yPgG z#njZ_)Ys$H*51~_z1P>?*Vx_J+1c95)7sa++S=mV+v3~Y+A39>+tOC@$K#L@9y&P z@$~ZY^z!rb^Yirc^Y!!d_Vo1j^z`@j_4fAm_V)Jp_V@Sq_xJbr`1kku`1tzy`TF_! z`}_O*`}_R+`~Cd;{QUg<{QUj>{r>*`{r>*`{{H{||NsC0|3a}(`~Uy|N_0|AQveGK z3k?ks5fKp*6CougC@nBQKub$ZO;}rAU}bDGAUR_V@Vs`1$+&{{H^PvatIA009a~L_t(|+BMIGQbGX~MbTq-cQ8UHTa z01SUxvfXB?@>cq|k|6L}1kD_in%i6RXF=!YI3 zHa=!%=VVc|G5%?KCDhT^k8D25MDeR?$zr+K+86=&12PC!UXI$YqW}N^07*qoM6N<$ Ef|tWLv;Y7A diff --git a/src/spatialite/test/sql_stmt_tests/km_m.testcase b/src/spatialite/test/sql_stmt_tests/km_m.testcase deleted file mode 100644 index 5f55cb4..0000000 --- a/src/spatialite/test/sql_stmt_tests/km_m.testcase +++ /dev/null @@ -1,7 +0,0 @@ -kilometres to metres -:memory: #use in-memory database -SELECT CvtFromKm(6.76); -1 # rows (not including the header row) -1 # columns -CvtFromKm(6.76); -6760.0 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/ktorrent_grad1.jpg b/src/spatialite/test/sql_stmt_tests/ktorrent_grad1.jpg deleted file mode 100644 index 762baa09fe5b5877849162676d127a32b55fd273..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmex=O8CaQFSXh`@fdnfnD;qlx2Rjh(b8~a@2=WUF3GxdH z3X92z3yVmJ3JOXnN=V7d%FD|Oiz}%p$*IW5$;*KZVFYSrXJhB%;NX)J5fqUl8T>!M zAjrWW!obMPsKme|$jB_n`2Prl7}#$RPe4gFcA&V703!n<3p26=3nQ~gu&7ufP*$9g zfte9mj)9p4tW8W16jUgHS@{1g1|FbtCP8LF2789~*YmpblGJ7^g=?D0=A1EpnzMp& Ie*OQO0LflD=l}o! diff --git a/src/spatialite/test/sql_stmt_tests/ktorrent_sidebar.gif b/src/spatialite/test/sql_stmt_tests/ktorrent_sidebar.gif deleted file mode 100644 index f5da995e9ca9e46f4ea7001276788a0504bc0cd5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2077 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 diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry1.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry1.testcase deleted file mode 100644 index 2adcf84..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry1.testcase +++ /dev/null @@ -1,9 +0,0 @@ -Sanitize Geometry - Multilinestring -:memory: #use in-memory database -SELECT AsText(SanitizeGeometry(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))'))); -1 # rows (not including the header row) -1 # columns -AsText(SanitizeGeometry(GeomFromText('MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0))'))) -MULTILINESTRING((0 0, 1 0, 1 1, 0 1, 0 0)) - - diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry10.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry10.testcase deleted file mode 100644 index a1e9933..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry10.testcase +++ /dev/null @@ -1,9 +0,0 @@ -Sanitize Geometry - POLYGON Z -:memory: #use in-memory database -SELECT AsEWkt(SanitizeGeometry(GeomFromText("POLYGON Z((-71 42 2, -70 41 2, -70 42 3, -70 42 4, -71 42 2))", 4326))) -1 # rows (not including the header row) -1 # columns -AsEWkt(SanitizeGeometry(GeomFromText("POLYGON Z((-71 42 2, -70 41 2, -70 42 3, -70 42 4, -71 42 2))", 4326))) -SRID=4326;POLYGON((-71 42 2,-70 41 2,-70 42 3,-70 42 4,-71 42 2)) - - diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry11.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry11.testcase deleted file mode 100644 index e6bec32..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry11.testcase +++ /dev/null @@ -1,9 +0,0 @@ -Sanitize Geometry - POLYGON M -:memory: #use in-memory database -SELECT AsEWkt(SanitizeGeometry(GeomFromText("POLYGON M((-71 42 2, -70 41 2, -70 42 3, -70 42 4, -71 42 2))", 4326))) -1 # rows (not including the header row) -1 # columns -AsEWkt(SanitizeGeometry(GeomFromText("POLYGON M((-71 42 2, -70 41 2, -70 42 3, -70 42 4, -71 42 2))", 4326))) -SRID=4326;POLYGONM((-71 42 2,-70 41 2,-70 42 3,-71 42 2)) - - diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry12.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry12.testcase deleted file mode 100644 index 7804021..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry12.testcase +++ /dev/null @@ -1,10 +0,0 @@ -Sanitize Geometry - POLYGON M - point combinations -:memory: #use in-memory database -SELECT AsEWkt(SanitizeGeometry(GeomFromText("POLYGON M((-70 42 2, -71 42 2, -70 41 2, -70 42 3, -70 42 3, -70 42 4, -71 42 2, -70 42 2))", 4326))) -1 # rows (not including the header row) -1 # columns -AsEWkt(SanitizeGeometry(GeomFromText("POLYGON M((-70 42 2, -71 42 2, -70 41 2, -70 42 3, -70 42 3, -70 42 4, -71 42 2, -70 42 2))", 4326))) -SRID=4326;POLYGONM((-70 42 2,-71 42 2,-70 41 2,-70 42 3,-71 42 2,-70 42 2)) - - - diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry13.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry13.testcase deleted file mode 100644 index e55f99b..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry13.testcase +++ /dev/null @@ -1,9 +0,0 @@ -Sanitize Geometry - POLYGON with interior -:memory: #use in-memory database -SELECT AsText(SanitizeGeometry(GeomFromText("POLYGON((-10 -10, -10 -10, 10 -10, 10 10, -10 10, -10 -10, -10 -10),(-6 -6, -6 -5, -5 -5, -5 -5, -5 -5, -5 -6, -6 -6),(6 6, 5 6, 5 6, 5 5, 6 5, 6 6))"))) -1 # rows (not including the header row) -1 # columns -AsText(SanitizeGeometry(GeomFromText("POLYGON((-10 -10, -10 -10, 10 -10, 10 10, -10 10, -10 -10, -10 -10),(-6 -6, -6 -5, -5 -5, -5 -5, -5 -5, -5 -6, -6 -6),(6 6, 5 6, 5 6, 5 5, 6 5, 6 6))"))) -POLYGON((-10 -10, 10 -10, 10 10, -10 10, -10 -10), (-6 -6, -6 -5, -5 -5, -5 -6, -6 -6), (6 6, 5 6, 5 5, 6 5, 6 6)) - - diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry14.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry14.testcase deleted file mode 100644 index 4ec300e..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry14.testcase +++ /dev/null @@ -1,9 +0,0 @@ -Sanitize Geometry - POLYGONZ with interior -:memory: #use in-memory database -SELECT AsText(SanitizeGeometry(GeomFromText("POLYGONZ((-10 -10 1, -10 -10 1, 10 -10 2, 10 10 3, -10 10 4, -10 -10 1, -10 -10 1),(-6 -6 2, -6 -5 3, -5 -5 3, -5 -5 4, -5 -5 4, -5 -6 9, -6 -6 2),(6 6 0, 5 6 0, 5 6 0, 5 5 0, 6 5 0, 6 6 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(SanitizeGeometry(GeomFromText("POLYGONZ((-10 -10 1, -10 -10 1, 10 -10 2, 10 10 3, -10 10 4, -10 -10 1, -10 -10 1),(-6 -6 2, -6 -5 3, -5 -5 3, -5 -5 4, -5 -5 4, -5 -6 9, -6 -6 2),(6 6 0, 5 6 0, 5 6 0, 5 5 0, 6 5 0, 6 6 0))"))) -POLYGON Z((-10 -10 1, 10 -10 2, 10 10 3, -10 10 4, -10 -10 1), (-6 -6 2, -6 -5 3, -5 -5 3, -5 -5 4, -5 -6 9, -6 -6 2), (6 6 0, 5 6 0, 5 5 0, 6 5 0, 6 6 0)) - - diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry15.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry15.testcase deleted file mode 100644 index 20523b1..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry15.testcase +++ /dev/null @@ -1,9 +0,0 @@ -Sanitize Geometry - POLYGONM with interior -:memory: #use in-memory database -SELECT AsText(SanitizeGeometry(GeomFromText("POLYGONM((-10 -10 1, -10 -10 1, 10 -10 2, 10 10 3, -10 10 4, -10 -10 1, -10 -10 1),(-6 -6 2, -6 -5 3, -5 -5 3, -5 -5 4, -5 -5 4, -5 -6 9, -6 -6 2),(6 6 0, 5 6 0, 5 6 0, 5 5 0, 6 5 0, 6 6 0))"))) -1 # rows (not including the header row) -1 # columns -AsText(SanitizeGeometry(GeomFromText("POLYGONM((-10 -10 1, -10 -10 1, 10 -10 2, 10 10 3, -10 10 4, -10 -10 1, -10 -10 1),(-6 -6 2, -6 -5 3, -5 -5 3, -5 -5 4, -5 -5 4, -5 -6 9, -6 -6 2),(6 6 0, 5 6 0, 5 6 0, 5 5 0, 6 5 0, 6 6 0))"))) -POLYGON M((-10 -10 1, 10 -10 2, 10 10 3, -10 10 4, -10 -10 1), (-6 -6 2, -6 -5 3, -5 -5 3, -5 -6 9, -6 -6 2), (6 6 0, 5 6 0, 5 5 0, 6 5 0, 6 6 0)) - - diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry16.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry16.testcase deleted file mode 100644 index b566b59..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry16.testcase +++ /dev/null @@ -1,9 +0,0 @@ -Sanitize Geometry - POLYGON ZM with interior -:memory: #use in-memory database -SELECT AsText(SanitizeGeometry(GeomFromText("POLYGONZM((-10 -10 1 0, -10 -10 1 0, 10 -10 2 2, 10 10 3 2, -10 10 4 2, -10 -10 1 2, -10 -10 1 0),(-6 -6 2 1, -6 -5 3 1, -5 -5 3 1, -5 -5 4 1, -5 -5 4 1, -5 -6 9 1, -6 -6 2 1),(6 6 0 1, 5 6 0 2, 5 6 0 1, 5 5 0 2, 6 5 0 1, 6 6 0 1))"))) -1 # rows (not including the header row) -1 # columns -AsText(SanitizeGeometry(GeomFromText("POLYGONZM((-10 -10 1 0, -10 -10 1 0, 10 -10 2 2, 10 10 3 2, -10 10 4 2, -10 -10 1 2, -10 -10 1 0),(-6 -6 2 1, -6 -5 3 1, -5 -5 3 1, -5 -5 4 1, -5 -5 4 1, -5 -6 9 1, -6 -6 2 1),(6 6 0 1, 5 6 0 2, 5 6 0 1, 5 5 0 2, 6 5 0 1, 6 6 0 1))"))) -POLYGON ZM((-10 -10 1 0, 10 -10 2 2, 10 10 3 2, -10 10 4 2, -10 -10 1 0), (-6 -6 2 1, -6 -5 3 1, -5 -5 3 1, -5 -5 4 1, -5 -6 9 1, -6 -6 2 1), (6 6 0 1, 5 6 0 2, 5 5 0 2, 6 5 0 1, 6 6 0 1)) - - diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry2.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry2.testcase deleted file mode 100644 index 0a1aa0c..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry2.testcase +++ /dev/null @@ -1,10 +0,0 @@ -Sanitize Geometry - zeroblob -:memory: #use in-memory database -SELECT SanitizeGeometry(zeroblob(100)); -1 # rows (not including the header row) -1 # columns -SanitizeGeometry(zeroblob(100)) -(NULL) - - - diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry3.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry3.testcase deleted file mode 100644 index 00faf77..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry3.testcase +++ /dev/null @@ -1,10 +0,0 @@ -Sanitize Geometry - non-blob -:memory: #use in-memory database -SELECT SanitizeGeometry("hell0o"); -1 # rows (not including the header row) -1 # columns -SanitizeGeometry("hell0o") -(NULL) - - - diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry4.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry4.testcase deleted file mode 100644 index 5713497..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry4.testcase +++ /dev/null @@ -1,9 +0,0 @@ -Sanitize Geometry - MultilinestringZ dupe points -:memory: #use in-memory database -SELECT AsText(SanitizeGeometry(GeomFromText('MULTILINESTRINGZ((0 0 0, 1 0 9, 1 1 8, 0 1 8, 1 1 8, 1 1 8, 0 0 0))'))); -1 # rows (not including the header row) -1 # columns -AsText(SanitizeGeometry(GeomFromText('MULTILINESTRINGZ((0 0 0, 1 0 9, 1 1 8, 0 1 8, 1 1 8, 1 1 8, 0 0 0))'))) -MULTILINESTRING Z((0 0 0, 1 0 9, 1 1 8, 0 1 8, 1 1 8, 0 0 0)) - - diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry5.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry5.testcase deleted file mode 100644 index 631a499..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry5.testcase +++ /dev/null @@ -1,9 +0,0 @@ -Sanitize Geometry - MultilinestringM dupe points -:memory: #use in-memory database -SELECT AsText(SanitizeGeometry(GeomFromText('MULTILINESTRINGM((0 0 0, 1 0 9, 1 1 8, 0 1 8, 1 1 8, 1 1 8, 0 0 0))'))); -1 # rows (not including the header row) -1 # columns -AsText(SanitizeGeometry(GeomFromText('MULTILINESTRINGM((0 0 0, 1 0 9, 1 1 8, 0 1 8, 1 1 8, 1 1 8, 0 0 0))'))) -MULTILINESTRING M((0 0 0, 1 0 9, 1 1 8, 0 1 8, 1 1 8, 0 0 0)) - - diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry6.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry6.testcase deleted file mode 100644 index 5a0959a..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry6.testcase +++ /dev/null @@ -1,9 +0,0 @@ -Sanitize Geometry - POLYGON -:memory: #use in-memory database -SELECT AsEWkt(SanitizeGeometry(GeomFromText("POLYGON((-71 42, -70 41, -70 42, -70 42, -71 42))", 4326))) -1 # rows (not including the header row) -1 # columns -AsEWkt(SanitizeGeometry(GeomFromText("POLYGON((-71 42, -70 41, -70 42, -70 42, -71 42))", 4326))) -SRID=4326;POLYGON((-71 42,-70 41,-70 42,-71 42)) - - diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry7.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry7.testcase deleted file mode 100644 index 5ff4b08..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry7.testcase +++ /dev/null @@ -1,9 +0,0 @@ -Sanitize Geometry - POLYGON ZM -:memory: #use in-memory database -SELECT AsEWkt(SanitizeGeometry(GeomFromText("POLYGON ZM((-71 42 2 0, -70 41 2 0, -70 42 3 0, -70 42 4 0, -71 42 2 0))", 4326))) -1 # rows (not including the header row) -1 # columns -AsEWkt(SanitizeGeometry(GeomFromText("POLYGON ZM((-71 42 2 0, -70 41 2 0, -70 42 3 0, -70 42 4 0, -71 42 2 0))", 4326))) -SRID=4326;POLYGON((-71 42 2 0,-70 41 2 0,-70 42 3 0,-70 42 4 0,-71 42 2 0)) - - diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry8.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry8.testcase deleted file mode 100644 index 2f3b926..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry8.testcase +++ /dev/null @@ -1,9 +0,0 @@ -Sanitize Geometry - MULTIPOINT ZM -:memory: #use in-memory database -SELECT AsEWkt(SanitizeGeometry(GeomFromText("MULTIPOINTZM(-71 42 2 0, -70 41 2 0, -70 42 3 0, -70 42 4 0, -71 42 2 0)", 4326))) -1 # rows (not including the header row) -1 # columns -AsEWkt(SanitizeGeometry(GeomFromText("MULTIPOINTZM(-71 42 2 0, -70 41 2 0, -70 42 3 0, -70 42 4 0, -71 42 2 0)", 4326))) -SRID=4326;MULTIPOINT(-71 42 2 0,-70 41 2 0,-70 42 3 0,-70 42 4 0,-71 42 2 0) - - diff --git a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry9.testcase b/src/spatialite/test/sql_stmt_tests/sanitizeGeometry9.testcase deleted file mode 100644 index 05dfdb1..0000000 --- a/src/spatialite/test/sql_stmt_tests/sanitizeGeometry9.testcase +++ /dev/null @@ -1,9 +0,0 @@ -Sanitize Geometry - LINESTRING ZM -:memory: #use in-memory database -SELECT AsEWkt(SanitizeGeometry(GeomFromText("LINESTRING ZM(-71 42 2 0, -70 41 2 0, -70 42 3 0, -70 42 4 0, -71 42 2 0)", 4326))) -1 # rows (not including the header row) -1 # columns -AsEWkt(SanitizeGeometry(GeomFromText("LINESTRING ZM(-71 42 2 0, -70 41 2 0, -70 42 3 0, -70 42 4 0, -71 42 2 0)", 4326))) -SRID=4326;LINESTRING(-71 42 2 0,-70 41 2 0,-70 42 3 0,-70 42 4 0,-71 42 2 0) - - diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords1.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords1.testcase deleted file mode 100644 index c4e3693..0000000 --- a/src/spatialite/test/sql_stmt_tests/scalecoords1.testcase +++ /dev/null @@ -1,21 +0,0 @@ -scale coords - Point -:memory: #use in-memory database -SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POINT(1 2)") as geom) dummy; -1 # rows (not including the header row) -8 # columns -AsText(ScaleCoords(geom, 0)) -AsText(ScaleCoords(geom, 0.0)) -AsText(ScaleCoords(geom, 2, 3.0)) -AsText(ScaleCoords(geom, 1.0, -1)) -ScaleCoords(zeroblob(20), 10) -ScaleCoords(geom, "hello") -ScaleCoords(geom, 1, "hello") -ScaleCoords("foo", 2) -POINT(0 0) -POINT(0 0) -POINT(2 6) -POINT(1 -2) -(NULL) -(NULL) -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords10.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords10.testcase deleted file mode 100644 index d5c4dbb..0000000 --- a/src/spatialite/test/sql_stmt_tests/scalecoords10.testcase +++ /dev/null @@ -1,21 +0,0 @@ -scale coords - POLYGON with inner ring -:memory: #use in-memory database -SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGON((0 0, 0 4, 4 4, 4 0, 0 0),(1 2, 1 3, 2 3, 2 2, 1 2))") as geom) dummy; -1 # rows (not including the header row) -8 # columns -AsText(ScaleCoords(geom, 0)) -AsText(ScaleCoords(geom, 0.0)) -AsText(ScaleCoords(geom, 2, 3.0)) -AsText(ScaleCoords(geom, 1.0, -1)) -ScaleCoords(zeroblob(20), 10) -ScaleCoords(geom, "hello") -ScaleCoords(geom, 1, "hello") -ScaleCoords("foo", 2) -POLYGON((0 0, 0 0, 0 0, 0 0, 0 0), (0 0, 0 0, 0 0, 0 0, 0 0)) -POLYGON((0 0, 0 0, 0 0, 0 0, 0 0), (0 0, 0 0, 0 0, 0 0, 0 0)) -POLYGON((0 0, 0 12, 8 12, 8 0, 0 0), (2 6, 2 9, 4 9, 4 6, 2 6)) -POLYGON((0 0, 0 -4, 4 -4, 4 0, 0 0), (1 -2, 1 -3, 2 -3, 2 -2, 1 -2)) -(NULL) -(NULL) -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords11.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords11.testcase deleted file mode 100644 index 6def9d2..0000000 --- a/src/spatialite/test/sql_stmt_tests/scalecoords11.testcase +++ /dev/null @@ -1,21 +0,0 @@ -scale coords - POLYGONZ with inner ring -:memory: #use in-memory database -SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGONZ((0 0 1, 0 4 1, 4 4 1, 4 0 1, 0 0 1),(1 2 1, 1 3 1, 2 3 1, 2 2 1, 1 2 1))") as geom) dummy; -1 # rows (not including the header row) -8 # columns -AsText(ScaleCoords(geom, 0)) -AsText(ScaleCoords(geom, 0.0)) -AsText(ScaleCoords(geom, 2, 3.0)) -AsText(ScaleCoords(geom, 1.0, -1)) -ScaleCoords(zeroblob(20), 10) -ScaleCoords(geom, "hello") -ScaleCoords(geom, 1, "hello") -ScaleCoords("foo", 2) -POLYGON Z((0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1), (0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1)) -POLYGON Z((0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1), (0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1)) -POLYGON Z((0 0 1, 0 12 1, 8 12 1, 8 0 1, 0 0 1), (2 6 1, 2 9 1, 4 9 1, 4 6 1, 2 6 1)) -POLYGON Z((0 0 1, 0 -4 1, 4 -4 1, 4 0 1, 0 0 1), (1 -2 1, 1 -3 1, 2 -3 1, 2 -2 1, 1 -2 1)) -(NULL) -(NULL) -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords12.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords12.testcase deleted file mode 100644 index 1d9f918..0000000 --- a/src/spatialite/test/sql_stmt_tests/scalecoords12.testcase +++ /dev/null @@ -1,21 +0,0 @@ -scale coords - POLYGONM with inner ring -:memory: #use in-memory database -SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGONM((0 0 1, 0 4 1, 4 4 1, 4 0 1, 0 0 1),(1 2 1, 1 3 1, 2 3 1, 2 2 1, 1 2 1))") as geom) dummy; -1 # rows (not including the header row) -8 # columns -AsText(ScaleCoords(geom, 0)) -AsText(ScaleCoords(geom, 0.0)) -AsText(ScaleCoords(geom, 2, 3.0)) -AsText(ScaleCoords(geom, 1.0, -1)) -ScaleCoords(zeroblob(20), 10) -ScaleCoords(geom, "hello") -ScaleCoords(geom, 1, "hello") -ScaleCoords("foo", 2) -POLYGON M((0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1), (0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1)) -POLYGON M((0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1), (0 0 1, 0 0 1, 0 0 1, 0 0 1, 0 0 1)) -POLYGON M((0 0 1, 0 12 1, 8 12 1, 8 0 1, 0 0 1), (2 6 1, 2 9 1, 4 9 1, 4 6 1, 2 6 1)) -POLYGON M((0 0 1, 0 -4 1, 4 -4 1, 4 0 1, 0 0 1), (1 -2 1, 1 -3 1, 2 -3 1, 2 -2 1, 1 -2 1)) -(NULL) -(NULL) -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords13.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords13.testcase deleted file mode 100644 index 88afaf9..0000000 --- a/src/spatialite/test/sql_stmt_tests/scalecoords13.testcase +++ /dev/null @@ -1,21 +0,0 @@ -scale coords - POLYGONZM with inner ring -:memory: #use in-memory database -SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGONZM((0 0 1 2, 0 4 1 2, 4 4 1 2, 4 0 1 2, 0 0 1 2),(1 2 1 2, 1 3 1 2, 2 3 1 2, 2 2 1 2, 1 2 1 2))") as geom) dummy; -1 # rows (not including the header row) -8 # columns -AsText(ScaleCoords(geom, 0)) -AsText(ScaleCoords(geom, 0.0)) -AsText(ScaleCoords(geom, 2, 3.0)) -AsText(ScaleCoords(geom, 1.0, -1)) -ScaleCoords(zeroblob(20), 10) -ScaleCoords(geom, "hello") -ScaleCoords(geom, 1, "hello") -ScaleCoords("foo", 2) -POLYGON ZM((0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2), (0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2)) -POLYGON ZM((0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2), (0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2, 0 0 1 2)) -POLYGON ZM((0 0 1 2, 0 12 1 2, 8 12 1 2, 8 0 1 2, 0 0 1 2), (2 6 1 2, 2 9 1 2, 4 9 1 2, 4 6 1 2, 2 6 1 2)) -POLYGON ZM((0 0 1 2, 0 -4 1 2, 4 -4 1 2, 4 0 1 2, 0 0 1 2), (1 -2 1 2, 1 -3 1 2, 2 -3 1 2, 2 -2 1 2, 1 -2 1 2)) -(NULL) -(NULL) -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords2.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords2.testcase deleted file mode 100644 index 0fcfc82..0000000 --- a/src/spatialite/test/sql_stmt_tests/scalecoords2.testcase +++ /dev/null @@ -1,21 +0,0 @@ -scale coords - LINESTRING -:memory: #use in-memory database -SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("LINESTRING(1 2, 4 5)") as geom) dummy; -1 # rows (not including the header row) -8 # columns -AsText(ScaleCoords(geom, 0)) -AsText(ScaleCoords(geom, 0.0)) -AsText(ScaleCoords(geom, 2, 3.0)) -AsText(ScaleCoords(geom, 1.0, -1)) -ScaleCoords(zeroblob(20), 10) -ScaleCoords(geom, "hello") -ScaleCoords(geom, 1, "hello") -ScaleCoords("foo", 2) -LINESTRING(0 0, 0 0) -LINESTRING(0 0, 0 0) -LINESTRING(2 6, 8 15) -LINESTRING(1 -2, 4 -5) -(NULL) -(NULL) -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords3.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords3.testcase deleted file mode 100644 index 7215e0a..0000000 --- a/src/spatialite/test/sql_stmt_tests/scalecoords3.testcase +++ /dev/null @@ -1,21 +0,0 @@ -scale coords - LINESTRINGZ -:memory: #use in-memory database -SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("LINESTRINGZ(1 2 1, 4 5 2)") as geom) dummy; -1 # rows (not including the header row) -8 # columns -AsText(ScaleCoords(geom, 0)) -AsText(ScaleCoords(geom, 0.0)) -AsText(ScaleCoords(geom, 2, 3.0)) -AsText(ScaleCoords(geom, 1.0, -1)) -ScaleCoords(zeroblob(20), 10) -ScaleCoords(geom, "hello") -ScaleCoords(geom, 1, "hello") -ScaleCoords("foo", 2) -LINESTRING Z(0 0 1, 0 0 2) -LINESTRING Z(0 0 1, 0 0 2) -LINESTRING Z(2 6 1, 8 15 2) -LINESTRING Z(1 -2 1, 4 -5 2) -(NULL) -(NULL) -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords4.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords4.testcase deleted file mode 100644 index 8261024..0000000 --- a/src/spatialite/test/sql_stmt_tests/scalecoords4.testcase +++ /dev/null @@ -1,21 +0,0 @@ -scale coords - LINESTRINGM -:memory: #use in-memory database -SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("LINESTRINGM(1 2 1, 4 5 2)") as geom) dummy; -1 # rows (not including the header row) -8 # columns -AsText(ScaleCoords(geom, 0)) -AsText(ScaleCoords(geom, 0.0)) -AsText(ScaleCoords(geom, 2, 3.0)) -AsText(ScaleCoords(geom, 1.0, -1)) -ScaleCoords(zeroblob(20), 10) -ScaleCoords(geom, "hello") -ScaleCoords(geom, 1, "hello") -ScaleCoords("foo", 2) -LINESTRING M(0 0 1, 0 0 2) -LINESTRING M(0 0 1, 0 0 2) -LINESTRING M(2 6 1, 8 15 2) -LINESTRING M(1 -2 1, 4 -5 2) -(NULL) -(NULL) -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords5.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords5.testcase deleted file mode 100644 index 7e97cd6..0000000 --- a/src/spatialite/test/sql_stmt_tests/scalecoords5.testcase +++ /dev/null @@ -1,21 +0,0 @@ -scale coords - LINESTRINGZM -:memory: #use in-memory database -SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("LINESTRINGZM(1 2 1 3, 4 5 2 4)") as geom) dummy; -1 # rows (not including the header row) -8 # columns -AsText(ScaleCoords(geom, 0)) -AsText(ScaleCoords(geom, 0.0)) -AsText(ScaleCoords(geom, 2, 3.0)) -AsText(ScaleCoords(geom, 1.0, -1)) -ScaleCoords(zeroblob(20), 10) -ScaleCoords(geom, "hello") -ScaleCoords(geom, 1, "hello") -ScaleCoords("foo", 2) -LINESTRING ZM(0 0 1 3, 0 0 2 4) -LINESTRING ZM(0 0 1 3, 0 0 2 4) -LINESTRING ZM(2 6 1 3, 8 15 2 4) -LINESTRING ZM(1 -2 1 3, 4 -5 2 4) -(NULL) -(NULL) -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords6.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords6.testcase deleted file mode 100644 index f31ce9e..0000000 --- a/src/spatialite/test/sql_stmt_tests/scalecoords6.testcase +++ /dev/null @@ -1,21 +0,0 @@ -scale coords - POLYGON -:memory: #use in-memory database -SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGON((1 2, 1 3, 2 3, 2 2, 1 2))") as geom) dummy; -1 # rows (not including the header row) -8 # columns -AsText(ScaleCoords(geom, 0)) -AsText(ScaleCoords(geom, 0.0)) -AsText(ScaleCoords(geom, 2, 3.0)) -AsText(ScaleCoords(geom, 1.0, -1)) -ScaleCoords(zeroblob(20), 10) -ScaleCoords(geom, "hello") -ScaleCoords(geom, 1, "hello") -ScaleCoords("foo", 2) -POLYGON((0 0, 0 0, 0 0, 0 0, 0 0)) -POLYGON((0 0, 0 0, 0 0, 0 0, 0 0)) -POLYGON((2 6, 2 9, 4 9, 4 6, 2 6)) -POLYGON((1 -2, 1 -3, 2 -3, 2 -2, 1 -2)) -(NULL) -(NULL) -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords7.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords7.testcase deleted file mode 100644 index baada04..0000000 --- a/src/spatialite/test/sql_stmt_tests/scalecoords7.testcase +++ /dev/null @@ -1,21 +0,0 @@ -scale coords - POLYGONZ -:memory: #use in-memory database -SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGONZ((1 2 1, 1 3 1, 2 3 2, 2 2 2, 1 2 1))") as geom) dummy; -1 # rows (not including the header row) -8 # columns -AsText(ScaleCoords(geom, 0)) -AsText(ScaleCoords(geom, 0.0)) -AsText(ScaleCoords(geom, 2, 3.0)) -AsText(ScaleCoords(geom, 1.0, -1)) -ScaleCoords(zeroblob(20), 10) -ScaleCoords(geom, "hello") -ScaleCoords(geom, 1, "hello") -ScaleCoords("foo", 2) -POLYGON Z((0 0 1, 0 0 1, 0 0 2, 0 0 2, 0 0 1)) -POLYGON Z((0 0 1, 0 0 1, 0 0 2, 0 0 2, 0 0 1)) -POLYGON Z((2 6 1, 2 9 1, 4 9 2, 4 6 2, 2 6 1)) -POLYGON Z((1 -2 1, 1 -3 1, 2 -3 2, 2 -2 2, 1 -2 1)) -(NULL) -(NULL) -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords8.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords8.testcase deleted file mode 100644 index a3e03c1..0000000 --- a/src/spatialite/test/sql_stmt_tests/scalecoords8.testcase +++ /dev/null @@ -1,21 +0,0 @@ -scale coords - POLYGONM -:memory: #use in-memory database -SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGONM((1 2 1, 1 3 1, 2 3 2, 2 2 2, 1 2 1))") as geom) dummy; -1 # rows (not including the header row) -8 # columns -AsText(ScaleCoords(geom, 0)) -AsText(ScaleCoords(geom, 0.0)) -AsText(ScaleCoords(geom, 2, 3.0)) -AsText(ScaleCoords(geom, 1.0, -1)) -ScaleCoords(zeroblob(20), 10) -ScaleCoords(geom, "hello") -ScaleCoords(geom, 1, "hello") -ScaleCoords("foo", 2) -POLYGON M((0 0 1, 0 0 1, 0 0 2, 0 0 2, 0 0 1)) -POLYGON M((0 0 1, 0 0 1, 0 0 2, 0 0 2, 0 0 1)) -POLYGON M((2 6 1, 2 9 1, 4 9 2, 4 6 2, 2 6 1)) -POLYGON M((1 -2 1, 1 -3 1, 2 -3 2, 2 -2 2, 1 -2 1)) -(NULL) -(NULL) -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/scalecoords9.testcase b/src/spatialite/test/sql_stmt_tests/scalecoords9.testcase deleted file mode 100644 index dcc62de..0000000 --- a/src/spatialite/test/sql_stmt_tests/scalecoords9.testcase +++ /dev/null @@ -1,21 +0,0 @@ -scale coords - POLYGONZM -:memory: #use in-memory database -SELECT AsText(ScaleCoords(geom, 0)), AsText(ScaleCoords(geom, 0.0)), AsText(ScaleCoords(geom, 2, 3.0)), AsText(ScaleCoords(geom, 1.0, -1)), ScaleCoords(zeroblob(20), 10), ScaleCoords(geom, "hello"), ScaleCoords(geom, 1, "hello"), ScaleCoords("foo", 2) FROM (SELECT GeomFromText("POLYGONZM((1 2 1 0 , 1 3 1 2, 2 3 2 4, 2 2 2 6, 1 2 1 0))") as geom) dummy; -1 # rows (not including the header row) -8 # columns -AsText(ScaleCoords(geom, 0)) -AsText(ScaleCoords(geom, 0.0)) -AsText(ScaleCoords(geom, 2, 3.0)) -AsText(ScaleCoords(geom, 1.0, -1)) -ScaleCoords(zeroblob(20), 10) -ScaleCoords(geom, "hello") -ScaleCoords(geom, 1, "hello") -ScaleCoords("foo", 2) -POLYGON ZM((0 0 1 0, 0 0 1 2, 0 0 2 4, 0 0 2 6, 0 0 1 0)) -POLYGON ZM((0 0 1 0, 0 0 1 2, 0 0 2 4, 0 0 2 6, 0 0 1 0)) -POLYGON ZM((2 6 1 0, 2 9 1 2, 4 9 2 4, 4 6 2 6, 2 6 1 0)) -POLYGON ZM((1 -2 1 0, 1 -3 1 2, 2 -3 2 4, 2 -2 2 6, 1 -2 1 0)) -(NULL) -(NULL) -(NULL) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords1.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords1.testcase deleted file mode 100644 index 31cd6d6..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftcoords1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftcoords1 -:memory: #use in-memory database -SELECT AsText(ShiftCoords(GeomFromText("POINT(1 2)"), 1, 3)); -1 # rows (not including the header row) -1 # columns -AsText(ShiftCoords(GeomFromText("POINT(1 2)"), 1, 3)) -POINT(2 5) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords10.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords10.testcase deleted file mode 100644 index 3aff334..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftcoords10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftcoords - Linestring XYM -:memory: #use in-memory database -SELECT AsText(ShiftCoords(GeomFromText("LINESTRINGM(1 2 20, 3 4 20)"), 1.4, 3.9)); -1 # rows (not including the header row) -1 # columns -AsText(ShiftCoords(GeomFromText("LINESTRINGM(1 2 20, 3 4 20)"), 1.4, 3.9)) -LINESTRING M(2.4 5.9 20, 4.4 7.9 20) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords11.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords11.testcase deleted file mode 100644 index daa6fcb..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftcoords11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftcoords - Linestring XYZM -:memory: #use in-memory database -SELECT AsText(ShiftCoords(GeomFromText("LINESTRINGZM(1 2 10 20, 3 4 10 20)"), 1.4, 3.9)); -1 # rows (not including the header row) -1 # columns -AsText(ShiftCoords(GeomFromText("LINESTRINGZM(1 2 10 20, 3 4 10 20)"), 1.4, 3.9)) -LINESTRING ZM(2.4 5.9 10 20, 4.4 7.9 10 20) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords12.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords12.testcase deleted file mode 100644 index 83df59a..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftcoords12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftcoords - Polygon XY -:memory: #use in-memory database -SELECT AsText(ShiftCoords(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (5 5, 6 5, 6 6, 5 6, 5 5))"), 1.4, 3.9)); -1 # rows (not including the header row) -1 # columns -AsText(ShiftCoords(GeomFromText("POLYGON((0 0, 10 0, 10 10, 0 10, 0 0), (5 5, 6 5, 6 6, 5 6, 5 5))"), 1.4, 3.9)) -POLYGON((1.4 3.9, 11.4 3.9, 11.4 13.9, 1.4 13.9, 1.4 3.9), (6.4 8.9, 7.4 8.9, 7.4 9.9, 6.4 9.9, 6.4 8.9)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords13.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords13.testcase deleted file mode 100644 index 7a2c93f..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftcoords13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftcoords - Polygon XYZ -:memory: #use in-memory database -SELECT AsText(ShiftCoords(GeomFromText("POLYGONZ((0 0 10, 10 0 10, 10 10 11, 0 10 11, 0 0 10), (5 5 12, 6 5 12, 6 6 13, 5 6 13, 5 5 12))"), 1.4, 3.9)); -1 # rows (not including the header row) -1 # columns -AsText(ShiftCoords(GeomFromText("POLYGONZ((0 0 10, 10 0 10, 10 10 11, 0 10 11, 0 0 10), (5 5 12, 6 5 12, 6 6 13, 5 6 13, 5 5 12))"), 1.4, 3.9)) -POLYGON Z((1.4 3.9 10, 11.4 3.9 10, 11.4 13.9 11, 1.4 13.9 11, 1.4 3.9 10), (6.4 8.9 12, 7.4 8.9 12, 7.4 9.9 13, 6.4 9.9 13, 6.4 8.9 12)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords14.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords14.testcase deleted file mode 100644 index bd822e2..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftcoords14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftcoords - Polygon XYM -:memory: #use in-memory database -SELECT AsText(ShiftCoords(GeomFromText("POLYGONM((0 0 1, 10 0 2, 10 10 3, 0 10 4, 0 0 1), (5 5 1, 6 5 2, 6 6 3, 5 6 3, 5 5 1))"), 1.4, 3.9)); -1 # rows (not including the header row) -1 # columns -AsText(ShiftCoords(GeomFromText("POLYGONM((0 0 1, 10 0 2, 10 10 3, 0 10 4, 0 0 1), (5 5 1, 6 5 2, 6 6 3, 5 6 3, 5 5 1))"), 1.4, 3.9)) -POLYGON M((1.4 3.9 1, 11.4 3.9 2, 11.4 13.9 3, 1.4 13.9 4, 1.4 3.9 1), (6.4 8.9 1, 7.4 8.9 2, 7.4 9.9 3, 6.4 9.9 3, 6.4 8.9 1)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords15.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords15.testcase deleted file mode 100644 index 404716c..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftcoords15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftcoords - Polygon XYZM -:memory: #use in-memory database -SELECT AsText(ShiftCoords(GeomFromText("POLYGONZM((0 0 10 1, 10 0 10 2, 10 10 11 3, 0 10 11 4, 0 0 10 1), (5 5 12 1, 6 5 12 2, 6 6 13 3, 5 6 13 4, 5 5 12 1))"), 1.4, 3.9)); -1 # rows (not including the header row) -1 # columns -AsText(ShiftCoords(GeomFromText("POLYGONZM((0 0 10 1, 10 0 10 2, 10 10 11 3, 0 10 11 4, 0 0 10 1), (5 5 12 1, 6 5 12 2, 6 6 13 3, 5 6 13 4, 5 5 12 1))"), 1.4, 3.9)) -POLYGON ZM((1.4 3.9 10 1, 11.4 3.9 10 2, 11.4 13.9 11 3, 1.4 13.9 11 4, 1.4 3.9 10 1), (6.4 8.9 12 1, 7.4 8.9 12 2, 7.4 9.9 13 3, 6.4 9.9 13 4, 6.4 8.9 12 1)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords2.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords2.testcase deleted file mode 100644 index 23d4c76..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftcoords2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftcoords2 -:memory: #use in-memory database -SELECT AsText(ShiftCoords(GeomFromText("POINT(1 2)"), -1, -3)); -1 # rows (not including the header row) -1 # columns -AsText(ShiftCoords(GeomFromText("POINT(1 2)"), -1, -3)) -POINT(0 -1) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords3.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords3.testcase deleted file mode 100644 index 6e21650..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftcoords3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftcoords - bad blob (null) -:memory: #use in-memory database -SELECT ShiftCoords(zeroblob(4), -1, -3); -1 # rows (not including the header row) -1 # columns -ShiftCoords(zeroblob(4), -1, -3) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords4.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords4.testcase deleted file mode 100644 index 24dca2e..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftcoords4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftcoords - text input (null) -:memory: #use in-memory database -SELECT ShiftCoords("shift", -1, -3); -1 # rows (not including the header row) -1 # columns -ShiftCoords("shift", -1, -3) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords5.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords5.testcase deleted file mode 100644 index 873491a..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftcoords5.testcase +++ /dev/null @@ -1,10 +0,0 @@ -shiftcoords - text shift (error) -:memory: #use in-memory database -SELECT ShiftCoords(GeomFromText("POINT(1 2)"), 1, "three"); -1 # rows (not including the header row) -1 # columns -ShiftCoords(GeomFromText("POINT(1 2)"), 1, "three") -(NULL) - - - diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords6.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords6.testcase deleted file mode 100644 index 67340a8..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftcoords6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftcoords - text shift both (error) -:memory: #use in-memory database -SELECT ShiftCoords(GeomFromText("POINT(1 2)"), "text", "three"); -1 # rows (not including the header row) -1 # columns -ShiftCoords(GeomFromText("POINT(1 2)"), "text", "three") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords7.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords7.testcase deleted file mode 100644 index 9076ea7..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftcoords7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftcoords - float shift -:memory: #use in-memory database -SELECT AsText(ShiftCoords(GeomFromText("POINT(1 2)"), 1.4, 3.9)); -1 # rows (not including the header row) -1 # columns -AsText(ShiftCoords(GeomFromText("POINT(1 2)"), 1.4, 3.9)) -POINT(2.4 5.9) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords8.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords8.testcase deleted file mode 100644 index f1a27ec..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftcoords8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftcoords - Linestring XY -:memory: #use in-memory database -SELECT AsText(ShiftCoords(GeomFromText("LINESTRING(1 2, 3 4)"), 1.4, 3.9)); -1 # rows (not including the header row) -1 # columns -AsText(ShiftCoords(GeomFromText("LINESTRING(1 2, 3 4)"), 1.4, 3.9)) -LINESTRING(2.4 5.9, 4.4 7.9) diff --git a/src/spatialite/test/sql_stmt_tests/shiftcoords9.testcase b/src/spatialite/test/sql_stmt_tests/shiftcoords9.testcase deleted file mode 100644 index f0467f4..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftcoords9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftcoords - Linestring XYZ -:memory: #use in-memory database -SELECT AsText(ShiftCoords(GeomFromText("LINESTRINGZ(1 2 10, 3 4 10)"), 1.4, 3.9)); -1 # rows (not including the header row) -1 # columns -AsText(ShiftCoords(GeomFromText("LINESTRINGZ(1 2 10, 3 4 10)"), 1.4, 3.9)) -LINESTRING Z(2.4 5.9 10, 4.4 7.9 10) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude1.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude1.testcase deleted file mode 100644 index f7db216..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - positive long -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POINT(1 2)", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POINT(1 2)", 4326))) -POINT(1 2) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude10.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude10.testcase deleted file mode 100644 index 365376e..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - positive and negative longitude linestringzm -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGZM(-170 0 1 -2, -175 2 2.4 -4, -179 4 3.2 -5, 175.3 5 4.7 -9)", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGZM(-170 0 1 -2, -175 2 2.4 -4, -179 4 3.2 -5, 175.3 5 4.7 -9)", 4326))) -LINESTRING ZM(190 0 1 -2, 185 2 2.4 -4, 181 4 3.2 -5, 175.3 5 4.7 -9) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude11.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude11.testcase deleted file mode 100644 index 7d31db1..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - negative longitude polygonz -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONZ((-170 0 1, -175 2 2.4, -179 4 3.2, -170 0 1))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGONZ((-170 0 1, -175 2 2.4, -179 4 3.2, -170 0 1))", 4326))) -POLYGON Z((190 0 1, 185 2 2.4, 181 4 3.2, 190 0 1)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude12.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude12.testcase deleted file mode 100644 index 0ddceb2..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude12.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - positive and negative longitude polygonm -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONM((-175 0 1, -176 10 2, 175 10 3, 176 0 4, -175 0 1))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGONM((-175 0 1, -176 10 2, 175 10 3, 176 0 4, -175 0 1))", 4326))) -POLYGON M((185 0 1, 184 10 2, 175 10 3, 176 0 4, 185 0 1)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude13.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude13.testcase deleted file mode 100644 index a60c557..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude13.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - positive and negative longitude polygon -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGON((-175 0, -176 10, 175 10, 176 0, -175 0))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGON((-175 0, -176 10, 175 10, 176 0, -175 0))", 4326))) -POLYGON((185 0, 184 10, 175 10, 176 0, 185 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude14.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude14.testcase deleted file mode 100644 index 1eb6d6f..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude14.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - positive and negative longitude polygonzm -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONZM((-175 0 4 2, -176 10 5 3, 175 10 5 4, 176 0 5 1, -175 0 4 2))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGONZM((-175 0 4 2, -176 10 5 3, 175 10 5 4, 176 0 5 1, -175 0 4 2))", 4326))) -POLYGON ZM((185 0 4 2, 184 10 5 3, 175 10 5 4, 176 0 5 1, 185 0 4 2)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude15.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude15.testcase deleted file mode 100644 index 8914205..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude15.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - positive and negative longitude polygonzm, interior rings -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONZM((-175 0 4 2, -176 10 5 3, 175 10 5 4, 176 0 5 1, -175 0 4 2),(-177 1 4 2, -177 2 5 3, -178 2 6 4, -178 1 9 2, -177 1 4 2),(-179 4 0 0, 179 4 0 0, 179 5 0 0, -179 5 0 0, -179 4 0 0))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGONZM((-175 0 4 2, -176 10 5 3, 175 10 5 4, 176 0 5 1, -175 0 4 2),(-177 1 4 2, -177 2 5 3, -178 2 6 4, -178 1 9 2, -177 1 4 2),(-179 4 0 0, 179 4 0 0, 179 5 0 0, -179 5 0 0, -179 4 0 0))", 4326))) -POLYGON ZM((185 0 4 2, 184 10 5 3, 175 10 5 4, 176 0 5 1, 185 0 4 2), (183 1 4 2, 183 2 5 3, 182 2 6 4, 182 1 9 2, 183 1 4 2), (181 4 0 0, 179 4 0 0, 179 5 0 0, 181 5 0 0, 181 4 0 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude16.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude16.testcase deleted file mode 100644 index 6fd3e1c..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude16.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - positive and negative longitude polygonz, interior rings -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONZ((-175 0 4, -176 10 5, 175 10 5, 176 0 5, -175 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGONZ((-175 0 4, -176 10 5, 175 10 5, 176 0 5, -175 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) -POLYGON Z((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4), (183 1 4, 183 2 5, 182 2 6, 182 1 9, 183 1 4), (181 4 0, 179 4 0, 179 5 0, 181 5 0, 181 4 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude17.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude17.testcase deleted file mode 100644 index b5b0ddc..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude17.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - positive and negative longitude polygonm, interior rings -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONM((-175 0 4, -176 10 5, 175 10 5, 176 0 5, -175 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGONM((-175 0 4, -176 10 5, 175 10 5, 176 0 5, -175 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) -POLYGON M((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4), (183 1 4, 183 2 5, 182 2 6, 182 1 9, 183 1 4), (181 4 0, 179 4 0, 179 5 0, 181 5 0, 181 4 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude18.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude18.testcase deleted file mode 100644 index 1b90d28..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude18.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - positive and negative longitude polygon, interior rings -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGON((-175 0, -176 10, 175 10, 176 0, -175 0),(-177 1, -177 2, -178 2, -178 1, -177 1),(-179 4, 179 4, 179 5, -179 5, -179 4))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGON((-175 0, -176 10, 175 10, 176 0, -175 0),(-177 1, -177 2, -178 2, -178 1, -177 1),(-179 4, 179 4, 179 5, -179 5, -179 4))", 4326))) -POLYGON((185 0, 184 10, 175 10, 176 0, 185 0), (183 1, 183 2, 182 2, 182 1, 183 1), (181 4, 179 4, 179 5, 181 5, 181 4)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude19.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude19.testcase deleted file mode 100644 index 4d8ed94..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude19.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - negative long interior -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGON((185 0, 184 10, 175 10, 176 0, 185 0),(-177 1, -177 2, -178 2, -178 1, -177 1),(-179 4, 179 4, 179 5, -179 5, -179 4))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGON((185 0, 184 10, 175 10, 176 0, 185 0),(-177 1, -177 2, -178 2, -178 1, -177 1),(-179 4, 179 4, 179 5, -179 5, -179 4))", 4326))) -POLYGON((185 0, 184 10, 175 10, 176 0, 185 0), (183 1, 183 2, 182 2, 182 1, 183 1), (181 4, 179 4, 179 5, 181 5, 181 4)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude2.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude2.testcase deleted file mode 100644 index e8a7ebd..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - negative long -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POINT(-90 2)", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POINT(-90 2)", 4326))) -POINT(270 2) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude20.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude20.testcase deleted file mode 100644 index 6b54902..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude20.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - polygonm, negative interior rings -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONM((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGONM((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) -POLYGON M((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4), (183 1 4, 183 2 5, 182 2 6, 182 1 9, 183 1 4), (181 4 0, 179 4 0, 179 5 0, 181 5 0, 181 4 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude21.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude21.testcase deleted file mode 100644 index c0a81f7..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude21.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - polygonz, negative interior rings -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONZ((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGONZ((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4),(-177 1 4, -177 2 5, -178 2 6, -178 1 9, -177 1 4),(-179 4 0, 179 4 0, 179 5 0, -179 5 0, -179 4 0))", 4326))) -POLYGON Z((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4), (183 1 4, 183 2 5, 182 2 6, 182 1 9, 183 1 4), (181 4 0, 179 4 0, 179 5 0, 181 5 0, 181 4 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude22.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude22.testcase deleted file mode 100644 index 1819136..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude22.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - polygonzm, negative interior rings -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGONZM((185 0 4 2, 184 10 5 3, 175 10 5 4, 176 0 5 1, 185 0 4 2),(-177 1 4 2, -177 2 5 3, -178 2 6 4, -178 1 9 2, -177 1 4 2),(-179 4 0 0, 179 4 0 0, 179 5 0 0, -179 5 0 0, -179 4 0 0))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGONZM((185 0 4 2, 184 10 5 3, 175 10 5 4, 176 0 5 1, 185 0 4 2),(-177 1 4 2, -177 2 5 3, -178 2 6 4, -178 1 9 2, -177 1 4 2),(-179 4 0 0, 179 4 0 0, 179 5 0 0, -179 5 0 0, -179 4 0 0))", 4326))) -POLYGON ZM((185 0 4 2, 184 10 5 3, 175 10 5 4, 176 0 5 1, 185 0 4 2), (183 1 4 2, 183 2 5 3, 182 2 6 4, 182 1 9 2, 183 1 4 2), (181 4 0 0, 179 4 0 0, 179 5 0 0, 181 5 0 0, 181 4 0 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude23.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude23.testcase deleted file mode 100644 index c3c72ba..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude23.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - simple polygonz, all positive -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGON Z((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGON Z((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4))", 4326))) -POLYGON Z((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude24.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude24.testcase deleted file mode 100644 index 0faa8da..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude24.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - simple polygonm, all positive -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGON M((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGON M((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4))", 4326))) -POLYGON M((185 0 4, 184 10 5, 175 10 5, 176 0 5, 185 0 4)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude25.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude25.testcase deleted file mode 100644 index 0eb8ddf..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude25.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - simple polygon, all positive -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGON((185 0, 184 10, 175 10, 176 0, 185 0))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGON((185 0, 184 10, 175 10, 176 0, 185 0))", 4326))) -POLYGON((185 0, 184 10, 175 10, 176 0, 185 0)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude26.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude26.testcase deleted file mode 100644 index 451484d..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude26.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - polygon with interior, all positive -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("POLYGON((185 0, 184 10, 175 10, 176 0, 185 0),(176 2, 181 2, 181 4, 176 4, 176 2))", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("POLYGON((185 0, 184 10, 175 10, 176 0, 185 0),(176 2, 181 2, 181 4, 176 4, 176 2))", 4326))) -POLYGON((185 0, 184 10, 175 10, 176 0, 185 0), (176 2, 181 2, 181 4, 176 4, 176 2)) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude3.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude3.testcase deleted file mode 100644 index 100261c..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - bad blob -:memory: #use in-memory database -SELECT ST_Shift_Longitude(zeroblob(100)) -1 # rows (not including the header row) -1 # columns -ST_Shift_Longitude(zeroblob(100)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude4.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude4.testcase deleted file mode 100644 index 83bb4b7..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - non blob -:memory: #use in-memory database -SELECT ST_Shift_Longitude("hello") -1 # rows (not including the header row) -1 # columns -ST_Shift_Longitude("hello") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude5.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude5.testcase deleted file mode 100644 index fe719f0..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - positive longitude linestring -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("LINESTRING(0 0, 1 2, 100 4)", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("LINESTRING(0 0, 1 2, 100 4)", 4326))) -LINESTRING(0 0, 1 2, 100 4) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude6.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude6.testcase deleted file mode 100644 index da9fc15..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - negative longitude linestring -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("LINESTRING(-170 0, -175 2, -179 4)", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("LINESTRING(-170 0, -175 2, -179 4)", 4326))) -LINESTRING(190 0, 185 2, 181 4) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude7.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude7.testcase deleted file mode 100644 index fdad4f6..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - negative longitude linestringz -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGZ(-170 0 1, -175 2 2.4, -179 4 3.2)", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGZ(-170 0 1, -175 2 2.4, -179 4 3.2)", 4326))) -LINESTRING Z(190 0 1, 185 2 2.4, 181 4 3.2) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude8.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude8.testcase deleted file mode 100644 index 4f2d71f..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - positive and negative longitude linestringz -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGZ(-170 0 1, -175 2 2.4, -179 4 3.2, 175.3 5 4.7)", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGZ(-170 0 1, -175 2 2.4, -179 4 3.2, 175.3 5 4.7)", 4326))) -LINESTRING Z(190 0 1, 185 2 2.4, 181 4 3.2, 175.3 5 4.7) diff --git a/src/spatialite/test/sql_stmt_tests/shiftlongitude9.testcase b/src/spatialite/test/sql_stmt_tests/shiftlongitude9.testcase deleted file mode 100644 index 471da5f..0000000 --- a/src/spatialite/test/sql_stmt_tests/shiftlongitude9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -shiftlongitude - positive and negative longitude linestringm -:memory: #use in-memory database -SELECT AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGM(-170 0 1, -175 2 2.4, -179 4 3.2, 175.3 5 4.7)", 4326))) -1 # rows (not including the header row) -1 # columns -AsText(ST_Shift_Longitude(GeomFromText("LINESTRINGM(-170 0 1, -175 2 2.4, -179 4 3.2, 175.3 5 4.7)", 4326))) -LINESTRING M(190 0 1, 185 2 2.4, 181 4 3.2, 175.3 5 4.7) diff --git a/src/spatialite/test/sql_stmt_tests/spatialindex.testcase b/src/spatialite/test/sql_stmt_tests/spatialindex.testcase deleted file mode 100644 index 9ff2b84..0000000 --- a/src/spatialite/test/sql_stmt_tests/spatialindex.testcase +++ /dev/null @@ -1,8 +0,0 @@ -VirtualSpatialIndex -sql_stmt_tests/testdb1.sqlite -SELECT ROWID FROM SpatialIndex WHERE f_table_name = 'roads' AND f_geometry_column = 'geom' AND search_frame = BuildMBR(11.215, 42.438, 11.218, 42.439); -1 # rows (not including the header row) -1 # columns -rowid -26 - diff --git a/src/spatialite/test/sql_stmt_tests/srid1.testcase b/src/spatialite/test/sql_stmt_tests/srid1.testcase deleted file mode 100644 index cd2ba6b..0000000 --- a/src/spatialite/test/sql_stmt_tests/srid1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -SRID -:memory: #use in-memory database -SELECT SRID(GeomFromText("Point(1 2)", 4326)) -1 # rows (not including the header row) -1 # columns -SRID(GeomFromText("Point(1 2)", 4326)) -4326 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid10.testcase b/src/spatialite/test/sql_stmt_tests/srid10.testcase deleted file mode 100644 index 7f60287..0000000 --- a/src/spatialite/test/sql_stmt_tests/srid10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -SetSRID - zeroblob -:memory: #use in-memory database -SELECT SetSRID(zeroblob(100), 4326) -1 # rows (not including the header row) -1 # columns -SetSRID(zeroblob(100), 4326) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid11.testcase b/src/spatialite/test/sql_stmt_tests/srid11.testcase deleted file mode 100644 index 99aa9b4..0000000 --- a/src/spatialite/test/sql_stmt_tests/srid11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -SetSRID - zeroblob -:memory: #use in-memory database -SELECT SetSRID(zeroblob(0), 4326) -1 # rows (not including the header row) -1 # columns -SetSRID(zeroblob(0), 4326) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid2.testcase b/src/spatialite/test/sql_stmt_tests/srid2.testcase deleted file mode 100644 index b91a54d..0000000 --- a/src/spatialite/test/sql_stmt_tests/srid2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -SRID -:memory: #use in-memory database -SELECT SRID(GeomFromText("Point(1 2)")) -1 # rows (not including the header row) -1 # columns -SRID(GeomFromText("Point(1 2)")) -0 diff --git a/src/spatialite/test/sql_stmt_tests/srid3.testcase b/src/spatialite/test/sql_stmt_tests/srid3.testcase deleted file mode 100644 index f053bf9..0000000 --- a/src/spatialite/test/sql_stmt_tests/srid3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -SRID - set SRID -:memory: #use in-memory database -SELECT SRID(SetSRID(GeomFromText("Point(1 2)"), 4326)) -1 # rows (not including the header row) -1 # columns -SRID(SetSRID(GeomFromText("Point(1 2)"), 4326)) -4326 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid4.testcase b/src/spatialite/test/sql_stmt_tests/srid4.testcase deleted file mode 100644 index b46c547..0000000 --- a/src/spatialite/test/sql_stmt_tests/srid4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -SRID - zeroblob -:memory: #use in-memory database -SELECT SRID(zeroblob(100)) -1 # rows (not including the header row) -1 # columns -SRID(zeroblob(100)) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid5.testcase b/src/spatialite/test/sql_stmt_tests/srid5.testcase deleted file mode 100644 index da5db4b..0000000 --- a/src/spatialite/test/sql_stmt_tests/srid5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -SRID - non-geometry -:memory: #use in-memory database -SELECT SRID(100) -1 # rows (not including the header row) -1 # columns -SRID(100) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid6.testcase b/src/spatialite/test/sql_stmt_tests/srid6.testcase deleted file mode 100644 index fbac880..0000000 --- a/src/spatialite/test/sql_stmt_tests/srid6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -SetSRID - toxic -:memory: #use in-memory database -SELECT AsText(SetSRID(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 4326)) -1 # rows (not including the header row) -1 # columns -AsText(SetSRID(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))"), 4326)) -POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5)) diff --git a/src/spatialite/test/sql_stmt_tests/srid7.testcase b/src/spatialite/test/sql_stmt_tests/srid7.testcase deleted file mode 100644 index 7e8e23e..0000000 --- a/src/spatialite/test/sql_stmt_tests/srid7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -SetSRID - non-geometry -:memory: #use in-memory database -SELECT SetSRID(100, 4326) -1 # rows (not including the header row) -1 # columns -SetSRID(100, 4326) -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid8.testcase b/src/spatialite/test/sql_stmt_tests/srid8.testcase deleted file mode 100644 index a612bed..0000000 --- a/src/spatialite/test/sql_stmt_tests/srid8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -SetSRID - invalid srid -:memory: #use in-memory database -SELECT SetSRID(GeomFromText("Point(1 2)"), "four") -1 # rows (not including the header row) -1 # columns -SetSRID(GeomFromText("Point(1 2)"), "four") -(NULL) \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/srid9.testcase b/src/spatialite/test/sql_stmt_tests/srid9.testcase deleted file mode 100644 index e0fcb21..0000000 --- a/src/spatialite/test/sql_stmt_tests/srid9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -SRID - toxic -:memory: #use in-memory database -SELECT SRID(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326)) -1 # rows (not including the header row) -1 # columns -SRID(GeomFromText("POLYGON((136 -35, 135.2 -34.5, 136 -35.2, 136 -35, 135.2 -34.5))", 4326)) -4326 \ No newline at end of file diff --git a/src/spatialite/test/sql_stmt_tests/st_m1.testcase b/src/spatialite/test/sql_stmt_tests/st_m1.testcase deleted file mode 100644 index 7f974ab..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_m1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_M1 -:memory: #use in-memory database -SELECT ST_M(MakePointZM(136, -35, 635.2, 10.2)); -1 # rows (not including the header row) -1 # columns -ST_M(MakePointZM(136, -35, 635.2, 10.2)) -10.2 diff --git a/src/spatialite/test/sql_stmt_tests/st_m2.testcase b/src/spatialite/test/sql_stmt_tests/st_m2.testcase deleted file mode 100644 index fca52a3..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_m2.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ST_M2 -:memory: #use in-memory database -SELECT ST_M(MakePointZM(136, -35, 0.0038723129645, 635.2)); -1 # rows (not including the header row) -1 # columns -ST_M(MakePointZM(136, -35, 0.0038723129645, 635.2)) -635.2 - diff --git a/src/spatialite/test/sql_stmt_tests/st_m3.testcase b/src/spatialite/test/sql_stmt_tests/st_m3.testcase deleted file mode 100644 index 3d7a832..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_m3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_M3 -:memory: #use in-memory database -SELECT ST_M(GeomFromText("POINTM(136 -35 -8.6)")); -1 # rows (not including the header row) -1 # columns -ST_M(GeomFromText("POINTM(136 -35 -8.6)")) --8.6 diff --git a/src/spatialite/test/sql_stmt_tests/st_m4.testcase b/src/spatialite/test/sql_stmt_tests/st_m4.testcase deleted file mode 100644 index 9a189a2..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_m4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_M - text -:memory: #use in-memory database -SELECT M("hello world"); -1 # rows (not including the header row) -1 # columns -M("hello world") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/st_m5.testcase b/src/spatialite/test/sql_stmt_tests/st_m5.testcase deleted file mode 100644 index 3acc145..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_m5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ST_M5 -:memory: #use in-memory database -SELECT ST_M(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")); -1 # rows (not including the header row) -1 # columns -ST_M(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/st_m6.testcase b/src/spatialite/test/sql_stmt_tests/st_m6.testcase deleted file mode 100644 index e8aaf50..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_m6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ST_M6 -:memory: #use in-memory database -SELECT ST_M(zeroblob(10)); -1 # rows (not including the header row) -1 # columns -ST_M(zeroblob(10)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/st_m8.testcase b/src/spatialite/test/sql_stmt_tests/st_m8.testcase deleted file mode 100644 index 8b093e0..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_m8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_M8 -:memory: #use in-memory database -SELECT ST_M(MakePointZ(136, -35, 0.0038723129645)); -1 # rows (not including the header row) -1 # columns -ST_M(MakePointZ(136, -35, 0.0038723129645)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/st_x1.testcase b/src/spatialite/test/sql_stmt_tests/st_x1.testcase deleted file mode 100644 index aeec204..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_x1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_X1 -:memory: #use in-memory database -SELECT ST_X(MakePointZ(-71.1043443253471, 42.3150676015829, 4326)); -1 # rows (not including the header row) -1 # columns -ST_X(MakePointZ(-71.1043443253471, 42.3150676015829, 4326)) --71.1043443253471 diff --git a/src/spatialite/test/sql_stmt_tests/st_x2.testcase b/src/spatialite/test/sql_stmt_tests/st_x2.testcase deleted file mode 100644 index fc41755..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_x2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_X2 -:memory: #use in-memory database -SELECT X(MakePoint(-71.1043443253471, 42.3150676015829, 4326)); -1 # rows (not including the header row) -1 # columns -X(MakePoint(-71.1043443253471, 42.3150676015829, 4326)) --71.1043443253471 diff --git a/src/spatialite/test/sql_stmt_tests/st_x3.testcase b/src/spatialite/test/sql_stmt_tests/st_x3.testcase deleted file mode 100644 index 8f2a6e2..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_x3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_X - text -:memory: #use in-memory database -SELECT X("hello world"); -1 # rows (not including the header row) -1 # columns -X("hello world") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/st_x4.testcase b/src/spatialite/test/sql_stmt_tests/st_x4.testcase deleted file mode 100644 index 19eeebf..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_x4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_X4 -:memory: #use in-memory database -SELECT ST_X(GeomFromText("POINTM(136 -35 -8.6)")); -1 # rows (not including the header row) -1 # columns -ST_X(GeomFromText("POINTM(136 -35 -8.6)")) -136.0 diff --git a/src/spatialite/test/sql_stmt_tests/st_x5.testcase b/src/spatialite/test/sql_stmt_tests/st_x5.testcase deleted file mode 100644 index 4eaa131..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_x5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ST_X5 -:memory: #use in-memory database -SELECT ST_X(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")); -1 # rows (not including the header row) -1 # columns -ST_X(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/st_x6.testcase b/src/spatialite/test/sql_stmt_tests/st_x6.testcase deleted file mode 100644 index 32a65b8..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_x6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ST_X6 -:memory: #use in-memory database -SELECT ST_X(zeroblob(10)); -1 # rows (not including the header row) -1 # columns -ST_X(zeroblob(10)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/st_x7.testcase b/src/spatialite/test/sql_stmt_tests/st_x7.testcase deleted file mode 100644 index 9f04276..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_x7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_X7 -:memory: #use in-memory database -SELECT ST_X(MakePointZ(-71.1043443253471, 42.3150676015829, 0.0038723129645, 4326)); -1 # rows (not including the header row) -1 # columns -ST_X(MakePointZ(-71.1043443253471, 42.3150676015829, 0.0038723129645, 4326)) --71.1043443253471 diff --git a/src/spatialite/test/sql_stmt_tests/st_x8.testcase b/src/spatialite/test/sql_stmt_tests/st_x8.testcase deleted file mode 100644 index 3af0ca3..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_x8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_X8 -:memory: #use in-memory database -SELECT ST_X(MakePointM(-71.1043443253471, 42.3150676015829, 12.6389, 4326)); -1 # rows (not including the header row) -1 # columns -ST_X(MakePointM(-71.1043443253471, 42.3150676015829, 12.6389, 4326)) --71.1043443253471 diff --git a/src/spatialite/test/sql_stmt_tests/st_x9.testcase b/src/spatialite/test/sql_stmt_tests/st_x9.testcase deleted file mode 100644 index 24ac2fd..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_x9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_X9 -:memory: #use in-memory database -SELECT ST_X(MakePointZM(-71.1043443253471, 42.3150676015829, 0.0038723129645, 12.6389, 4326)); -1 # rows (not including the header row) -1 # columns -ST_X(MakePointZM(-71.1043443253471, 42.3150676015829, 0.0038723129645, 12.6389, 4326)) --71.1043443253471 diff --git a/src/spatialite/test/sql_stmt_tests/st_y1.testcase b/src/spatialite/test/sql_stmt_tests/st_y1.testcase deleted file mode 100644 index 12d1e57..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_y1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Y1 -:memory: #use in-memory database -SELECT ST_Y(MakePoint(-71.1043443253471, 42.3150676015829, 4326)); -1 # rows (not including the header row) -1 # columns -ST_Y(MakePoint(-71.1043443253471, 42.3150676015829, 4326)) -42.3150676015829 diff --git a/src/spatialite/test/sql_stmt_tests/st_y2.testcase b/src/spatialite/test/sql_stmt_tests/st_y2.testcase deleted file mode 100644 index 8f265ff..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_y2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Y2 -:memory: #use in-memory database -SELECT Y(MakePoint(-71.1043443253471, 42.3150676015829, 4326)); -1 # rows (not including the header row) -1 # columns -Y(MakePoint(-71.1043443253471, 42.3150676015829, 4326)) -42.3150676015829 diff --git a/src/spatialite/test/sql_stmt_tests/st_y3.testcase b/src/spatialite/test/sql_stmt_tests/st_y3.testcase deleted file mode 100644 index 6058e69..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_y3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Y - text -:memory: #use in-memory database -SELECT Y("hello world"); -1 # rows (not including the header row) -1 # columns -Y("hello world") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/st_y4.testcase b/src/spatialite/test/sql_stmt_tests/st_y4.testcase deleted file mode 100644 index 63bb14d..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_y4.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ST_Y4 -:memory: #use in-memory database -SELECT ST_Y(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")); -1 # rows (not including the header row) -1 # columns -ST_Y(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/st_y5.testcase b/src/spatialite/test/sql_stmt_tests/st_y5.testcase deleted file mode 100644 index eba94e7..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_y5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ST_Y5 -:memory: #use in-memory database -SELECT ST_Y(zeroblob(10)); -1 # rows (not including the header row) -1 # columns -ST_Y(zeroblob(10)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/st_y7.testcase b/src/spatialite/test/sql_stmt_tests/st_y7.testcase deleted file mode 100644 index 439e4db..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_y7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Y7 -:memory: #use in-memory database -SELECT ST_Y(MakePointZ(-71.1043443253471, 42.3150676015829, 0.0038723129645, 4326)); -1 # rows (not including the header row) -1 # columns -ST_Y(MakePointZ(-71.1043443253471, 42.3150676015829, 0.0038723129645, 4326)) -42.3150676015829 diff --git a/src/spatialite/test/sql_stmt_tests/st_y8.testcase b/src/spatialite/test/sql_stmt_tests/st_y8.testcase deleted file mode 100644 index dd5f725..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_y8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Y8 -:memory: #use in-memory database -SELECT ST_Y(MakePointM(-71.1043443253471, 42.3150676015829, 12.6389, 4326)); -1 # rows (not including the header row) -1 # columns -ST_Y(MakePointM(-71.1043443253471, 42.3150676015829, 12.6389, 4326)) -42.3150676015829 diff --git a/src/spatialite/test/sql_stmt_tests/st_y9.testcase b/src/spatialite/test/sql_stmt_tests/st_y9.testcase deleted file mode 100644 index 06bd8a2..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_y9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Y9 -:memory: #use in-memory database -SELECT ST_Y(MakePointZM(-71.1043443253471, 42.3150676015829, 0.0038723129645, 12.6389, 4326)); -1 # rows (not including the header row) -1 # columns -ST_Y(MakePointZM(-71.1043443253471, 42.3150676015829, 0.0038723129645, 12.6389, 4326)) -42.3150676015829 diff --git a/src/spatialite/test/sql_stmt_tests/st_z1.testcase b/src/spatialite/test/sql_stmt_tests/st_z1.testcase deleted file mode 100644 index 4636e3d..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_z1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Z1 -:memory: #use in-memory database -SELECT ST_Z(MakePointZ(136, -35, 0.0038723129645)); -1 # rows (not including the header row) -1 # columns -ST_Z(MakePointZ(136, -35, 0.0038723129645)) -0.0038723129645 diff --git a/src/spatialite/test/sql_stmt_tests/st_z2.testcase b/src/spatialite/test/sql_stmt_tests/st_z2.testcase deleted file mode 100644 index 360fb09..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_z2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Z2 -:memory: #use in-memory database -SELECT Z(MakePointZ(-71.1043443253471, 42.3150676015829, 0.0038723129645, 4326)); -1 # rows (not including the header row) -1 # columns -Z(MakePointZ(-71.1043443253471, 42.3150676015829, 0.0038723129645, 4326)) -0.0038723129645 diff --git a/src/spatialite/test/sql_stmt_tests/st_z3.testcase b/src/spatialite/test/sql_stmt_tests/st_z3.testcase deleted file mode 100644 index b5effa6..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_z3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Z - text -:memory: #use in-memory database -SELECT Z("hello world"); -1 # rows (not including the header row) -1 # columns -Z("hello world") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/st_z4.testcase b/src/spatialite/test/sql_stmt_tests/st_z4.testcase deleted file mode 100644 index 3f38a13..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_z4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Z4 -:memory: #use in-memory database -SELECT ST_Z(GeomFromText("POINTZM(136 -35 635.2 10.2)")); -1 # rows (not including the header row) -1 # columns -ST_Z(GeomFromText("POINTZM(136 -35 635.2 10.2)")) -635.2 diff --git a/src/spatialite/test/sql_stmt_tests/st_z5.testcase b/src/spatialite/test/sql_stmt_tests/st_z5.testcase deleted file mode 100644 index fdb5b85..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_z5.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ST_Z5 -:memory: #use in-memory database -SELECT ST_Z(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")); -1 # rows (not including the header row) -1 # columns -ST_Z(GeomFromText("LINESTRINGZ(136 -35 635.2, 135.2 -34.5 675.1)")) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/st_z6.testcase b/src/spatialite/test/sql_stmt_tests/st_z6.testcase deleted file mode 100644 index f56d832..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_z6.testcase +++ /dev/null @@ -1,8 +0,0 @@ -ST_Z6 -:memory: #use in-memory database -SELECT ST_Z(zeroblob(10)); -1 # rows (not including the header row) -1 # columns -ST_Z(zeroblob(10)) -(NULL) - diff --git a/src/spatialite/test/sql_stmt_tests/st_z7.testcase b/src/spatialite/test/sql_stmt_tests/st_z7.testcase deleted file mode 100644 index 94e8dab..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_z7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Z7 -:memory: #use in-memory database -SELECT ST_Z(MakePoint(136, -35)); -1 # rows (not including the header row) -1 # columns -ST_Z(MakePoint(136, -35)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/st_z8.testcase b/src/spatialite/test/sql_stmt_tests/st_z8.testcase deleted file mode 100644 index 88dc3e1..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_z8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Z8 -:memory: #use in-memory database -SELECT ST_Z(MakePointM(136, -35, 635.2)); -1 # rows (not including the header row) -1 # columns -ST_Z(MakePointM(136, -35, 635.2)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/st_z9.testcase b/src/spatialite/test/sql_stmt_tests/st_z9.testcase deleted file mode 100644 index 8953ebc..0000000 --- a/src/spatialite/test/sql_stmt_tests/st_z9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -ST_Z2 -:memory: #use in-memory database -SELECT Z(MakePointZ(-71, 42, 17, 4326)); -1 # rows (not including the header row) -1 # columns -Z(MakePointZ(-71, 42, 17, 4326)) -17.0 diff --git a/src/spatialite/test/sql_stmt_tests/startpoint1.testcase b/src/spatialite/test/sql_stmt_tests/startpoint1.testcase deleted file mode 100644 index b15eed2..0000000 --- a/src/spatialite/test/sql_stmt_tests/startpoint1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -startpoint - regular LINESTRING -:memory: #use in-memory database -SELECT AsText(StartPoint(GeomFromText("LINESTRING(4 0, 4 4, 8 4)"))); -1 # rows (not including the header row) -1 # columns -AsText(StartPoint(GeomFromText("LINESTRING(4 0, 4 4, 8 4)"))) -POINT(4 0) diff --git a/src/spatialite/test/sql_stmt_tests/startpoint2.testcase b/src/spatialite/test/sql_stmt_tests/startpoint2.testcase deleted file mode 100644 index a9a6aad..0000000 --- a/src/spatialite/test/sql_stmt_tests/startpoint2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -startpoint - bad blob (error) -:memory: #use in-memory database -SELECT StartPoint(zeroblob(10)); -1 # rows (not including the header row) -1 # columns -StartPoint(zeroblob(10)) -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/startpoint3.testcase b/src/spatialite/test/sql_stmt_tests/startpoint3.testcase deleted file mode 100644 index ef172b3..0000000 --- a/src/spatialite/test/sql_stmt_tests/startpoint3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -startpoint - text input (error) -:memory: #use in-memory database -SELECT StartPoint("hello world"); -1 # rows (not including the header row) -1 # columns -StartPoint("hello world") -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords1.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords1.testcase deleted file mode 100644 index 717dcae..0000000 --- a/src/spatialite/test/sql_stmt_tests/swapcoords1.testcase +++ /dev/null @@ -1,7 +0,0 @@ -swapcoords1 -:memory: #use in-memory database -SELECT AsText(SwapCoords(GeomFromText("POINT(1 2)"))); -1 # rows (not including the header row) -1 # columns -AsText(SwapCoords(GeomFromText("POINT(1 2)"))) -POINT(2 1) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords10.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords10.testcase deleted file mode 100644 index 6c6f678..0000000 --- a/src/spatialite/test/sql_stmt_tests/swapcoords10.testcase +++ /dev/null @@ -1,7 +0,0 @@ -swapcoords10 -:memory: #use in-memory database -SELECT AsText(SwapCoords(GeomFromText("POLYGONM((10 10 1, 20 10 2, 20 20 3, 10 20 4, 10 10 1), (14 14 1, 16 14 2, 16 16 3, 14 16 4, 14 14 1))"))); -1 # rows (not including the header row) -1 # columns -AsText(SwapCoords(GeomFromText("POLYGONM((10 10 1, 20 10 2, 20 20 3, 10 20 4, 10 10 1), (14 14 1, 16 14 2, 16 16 3, 14 16 4, 14 14 1))"))); -POLYGON M((10 10 1, 10 20 2, 20 20 3, 20 10 4, 10 10 1), (14 14 1, 14 16 2, 16 16 3, 16 14 4, 14 14 1)) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords11.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords11.testcase deleted file mode 100644 index f123962..0000000 --- a/src/spatialite/test/sql_stmt_tests/swapcoords11.testcase +++ /dev/null @@ -1,7 +0,0 @@ -swapcoords11 -:memory: #use in-memory database -SELECT AsText(SwapCoords(GeomFromText("POLYGONZM((10 10 100 1, 20 10 101 2, 20 20 102 3, 10 20 103 4, 10 10 100 1), (14 14 100 1, 16 14 101 2, 16 16 102 3, 14 16 103 4, 14 14 100 1))"))); -1 # rows (not including the header row) -1 # columns -AsText(SwapCoords(GeomFromText("POLYGONZM((10 10 100 1, 20 10 101 2, 20 20 102 3, 10 20 103 4, 10 10 100 1), (14 14 100 1, 16 14 101 2, 16 16 102 3, 14 16 103 4, 14 14 100 1))"))); -POLYGON ZM((10 10 100 1, 10 20 101 2, 20 20 102 3, 20 10 103 4, 10 10 100 1), (14 14 100 1, 14 16 101 2, 16 16 102 3, 16 14 103 4, 14 14 100 1)) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords2.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords2.testcase deleted file mode 100644 index 8614286..0000000 --- a/src/spatialite/test/sql_stmt_tests/swapcoords2.testcase +++ /dev/null @@ -1,7 +0,0 @@ -swapcoords2 -:memory: #use in-memory database -SELECT SwapCoords("hello"); -1 # rows (not including the header row) -1 # columns -SwapCoords("hello"); -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords3.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords3.testcase deleted file mode 100644 index b12a033..0000000 --- a/src/spatialite/test/sql_stmt_tests/swapcoords3.testcase +++ /dev/null @@ -1,7 +0,0 @@ -swapcoords3 -:memory: #use in-memory database -SELECT SwapCoords(zeroblob(4)); -1 # rows (not including the header row) -1 # columns -SwapCoords(zeroblob(4)); -(NULL) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords4.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords4.testcase deleted file mode 100644 index 86e9a8c..0000000 --- a/src/spatialite/test/sql_stmt_tests/swapcoords4.testcase +++ /dev/null @@ -1,7 +0,0 @@ -swapcoords4 -:memory: #use in-memory database -SELECT AsText(SwapCoords(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -36)"))); -1 # rows (not including the header row) -1 # columns -AsText(SwapCoords(GeomFromText("LINESTRING(136 -35, 135.2 -34.5, 136 -35.2, 136 -36)"))); -LINESTRING(-35 136, -34.5 135.2, -35.2 136, -36 136) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords5.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords5.testcase deleted file mode 100644 index bbd9c7e..0000000 --- a/src/spatialite/test/sql_stmt_tests/swapcoords5.testcase +++ /dev/null @@ -1,7 +0,0 @@ -swapcoords5 -:memory: #use in-memory database -SELECT AsText(SwapCoords(GeomFromText("LINESTRINGZ(136 -35 100, 135.2 -34.5 101, 136 -35.2 102, 136 -36 103)"))); -1 # rows (not including the header row) -1 # columns -AsText(SwapCoords(GeomFromText("LINESTRINGZ(136 -35 100, 135.2 -34.5 101, 136 -35.2 102, 136 -36 103)"))); -LINESTRING Z(-35 136 100, -34.5 135.2 101, -35.2 136 102, -36 136 103) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords6.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords6.testcase deleted file mode 100644 index 7801c70..0000000 --- a/src/spatialite/test/sql_stmt_tests/swapcoords6.testcase +++ /dev/null @@ -1,7 +0,0 @@ -swapcoords6 -:memory: #use in-memory database -SELECT AsText(SwapCoords(GeomFromText("LINESTRINGM(136 -35 1, 135.2 -34.5 2, 136 -35.2 3, 136 -36 4)"))); -1 # rows (not including the header row) -1 # columns -AsText(SwapCoords(GeomFromText("LINESTRINGM(136 -35 1, 135.2 -34.5 2, 136 -35.2 3, 136 -36 4)"))); -LINESTRING M(-35 136 1, -34.5 135.2 2, -35.2 136 3, -36 136 4) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords7.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords7.testcase deleted file mode 100644 index 207ea35..0000000 --- a/src/spatialite/test/sql_stmt_tests/swapcoords7.testcase +++ /dev/null @@ -1,7 +0,0 @@ -swapcoords7 -:memory: #use in-memory database -SELECT AsText(SwapCoords(GeomFromText("LINESTRINGZM(136 -35 100 1, 135.2 -34.5 101 2, 136 -35.2 102 3, 136 -36 103 4)"))); -1 # rows (not including the header row) -1 # columns -AsText(SwapCoords(GeomFromText("LINESTRINGZM(136 -35 100 1, 135.2 -34.5 101 2, 136 -35.2 102 3, 136 -36 103 4)"))); -LINESTRING ZM(-35 136 100 1, -34.5 135.2 101 2, -35.2 136 102 3, -36 136 103 4) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords8.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords8.testcase deleted file mode 100644 index 41ec4d8..0000000 --- a/src/spatialite/test/sql_stmt_tests/swapcoords8.testcase +++ /dev/null @@ -1,7 +0,0 @@ -swapcoords8 -:memory: #use in-memory database -SELECT AsText(SwapCoords(GeomFromText("POLYGON((10 10, 20 10, 20 20, 10 20, 10 10), (14 14, 16 14, 16 16, 14 16, 14 14))"))); -1 # rows (not including the header row) -1 # columns -AsText(SwapCoords(GeomFromText("POLYGON((10 10, 20 10, 20 20, 10 20, 10 10), (14 14, 16 14, 16 16, 14 16, 14 14))"))); -POLYGON((10 10, 10 20, 20 20, 20 10, 10 10), (14 14, 14 16, 16 16, 16 14, 14 14)) diff --git a/src/spatialite/test/sql_stmt_tests/swapcoords9.testcase b/src/spatialite/test/sql_stmt_tests/swapcoords9.testcase deleted file mode 100644 index 3734d77..0000000 --- a/src/spatialite/test/sql_stmt_tests/swapcoords9.testcase +++ /dev/null @@ -1,7 +0,0 @@ -swapcoords9 -:memory: #use in-memory database -SELECT AsText(SwapCoords(GeomFromText("POLYGONZ((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100), (14 14 100, 16 14 101, 16 16 102, 14 16 103, 14 14 100))"))); -1 # rows (not including the header row) -1 # columns -AsText(SwapCoords(GeomFromText("POLYGONZ((10 10 100, 20 10 101, 20 20 102, 10 20 103, 10 10 100), (14 14 100, 16 14 101, 16 16 102, 14 16 103, 14 14 100))"))); -POLYGON Z((10 10 100, 10 20 101, 20 20 102, 20 10 103, 10 10 100), (14 14 100, 14 16 101, 16 16 102, 16 14 103, 14 14 100)) diff --git a/src/spatialite/test/sql_stmt_tests/testFDO.sqlite b/src/spatialite/test/sql_stmt_tests/testFDO.sqlite deleted file mode 100644 index 345d3c9a388c97f1fedade1b7f64a054b419fe5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 129024 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 I+AIbB7b921ng9R* diff --git a/src/spatialite/test/sql_stmt_tests/testdb1.sqlite b/src/spatialite/test/sql_stmt_tests/testdb1.sqlite deleted file mode 100644 index 4e1c1dad7e9a25d6ee13564deb6a1cbfd6191782..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4213760 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≷-nU{zM(fdv*hXL>L?7QtVCI$LFhrmQ@M% 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